diff --git a/Podfile b/Podfile index 98831429..9b6cc7ff 100644 --- a/Podfile +++ b/Podfile @@ -52,7 +52,6 @@ target 'YuMi' do pod 'SVGAPlayer' pod 'GoogleSignIn', '6.2.4' - pod 'mob_sharesdk' pod 'mob_sharesdk/ShareSDKPlatforms/Apple' pod 'mob_sharesdk/ShareSDKPlatforms/Facebook_Lite' @@ -66,9 +65,9 @@ target 'YuMi' do pod 'ZLCollectionViewFlowLayout' pod 'WMZDropDownMenu' pod 'TABAnimated' - pod 'YuMi',:path=>'yum' end + post_install do |installer| installer.generated_projects.each do |project| project.targets.each do |target| diff --git a/YuMi.xcodeproj/project.pbxproj b/YuMi.xcodeproj/project.pbxproj index 4509cdcf..f07e3f9e 100644 --- a/YuMi.xcodeproj/project.pbxproj +++ b/YuMi.xcodeproj/project.pbxproj @@ -7,98 +7,98 @@ objects = { /* Begin PBXBuildFile section */ - 140A7F52299CC69000841594 /* YUMITabObstacle.m in Sources */ = {isa = PBXBuildFile; fileRef = 140A7F51299CC69000841594 /* YUMITabObstacle.m */; }; - 140A818D299CFF1C00841594 /* YUMIVendorCallRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 140A818C299CFF1C00841594 /* YUMIVendorCallRegardGovernancer.m */; }; + 140A7F52299CC69000841594 /* XPTabBar.m in Sources */ = {isa = PBXBuildFile; fileRef = 140A7F51299CC69000841594 /* XPTabBar.m */; }; + 140A818D299CFF1C00841594 /* XPVendorCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 140A818C299CFF1C00841594 /* XPVendorCallViewController.m */; }; 1427212529A7566100C7C423 /* ZegoAudioRoom.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1427212329A7563A00C7C423 /* ZegoAudioRoom.framework */; }; 1427212629A7566100C7C423 /* ZegoAudioRoom.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 1427212329A7563A00C7C423 /* ZegoAudioRoom.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 1427212C29A757EC00C7C423 /* SeparationsStatementAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427212A29A757EC00C7C423 /* SeparationsStatementAbstractMatrix.m */; }; - 1427212F29A7599500C7C423 /* YUMISeparationsConsiderationExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427212D29A7599500C7C423 /* YUMISeparationsConsiderationExternalizer.m */; }; - 1427213429A75A2600C7C423 /* YUMISeparationsRecentlyExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427213329A75A2600C7C423 /* YUMISeparationsRecentlyExternalizer.m */; }; - 1427218729A75F6F00C7C423 /* MyHyperTextConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427213729A75F6F00C7C423 /* MyHyperTextConnection.m */; }; - 1427218829A75F6F00C7C423 /* HyperTextErrorRespond.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427214029A75F6F00C7C423 /* HyperTextErrorRespond.m */; }; - 1427218929A75F6F00C7C423 /* HyperTextAtomicRespond.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427214129A75F6F00C7C423 /* HyperTextAtomicRespond.m */; }; - 1427218A29A75F6F00C7C423 /* HyperTextDynamicAccurateRespond.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427214329A75F6F00C7C423 /* HyperTextDynamicAccurateRespond.m */; }; - 1427218B29A75F6F00C7C423 /* HyperTextAccurateRespond.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427214429A75F6F00C7C423 /* HyperTextAccurateRespond.m */; }; - 1427218C29A75F6F00C7C423 /* HyperTextAsyncAccurateRespond.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427214529A75F6F00C7C423 /* HyperTextAsyncAccurateRespond.m */; }; - 1427218D29A75F6F00C7C423 /* HyperTextDeficitirectRespond.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427214629A75F6F00C7C423 /* HyperTextDeficitirectRespond.m */; }; - 1427218E29A75F6F00C7C423 /* HyperTextCommunication.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427214C29A75F6F00C7C423 /* HyperTextCommunication.m */; }; - 1427218F29A75F6F00C7C423 /* HyperTextConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427214D29A75F6F00C7C423 /* HyperTextConnection.m */; }; - 1427219029A75F6F00C7C423 /* TissueSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427214E29A75F6F00C7C423 /* TissueSocket.m */; }; - 1427219129A75F6F00C7C423 /* MultipartCommunicationIntelligencerField.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427215329A75F6F00C7C423 /* MultipartCommunicationIntelligencerField.m */; }; - 1427219229A75F6F00C7C423 /* MultipartFormAtomicAnatomiser.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427215429A75F6F00C7C423 /* MultipartFormAtomicAnatomiser.m */; }; - 1427219329A75F6F00C7C423 /* MultipartCommunicationIntelligencer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427215529A75F6F00C7C423 /* MultipartCommunicationIntelligencer.m */; }; - 1427219429A75F6F00C7C423 /* HyperTextAuthenticationRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427215729A75F6F00C7C423 /* HyperTextAuthenticationRequest.m */; }; + 1427212C29A757EC00C7C423 /* MonentsListInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427212A29A757EC00C7C423 /* MonentsListInfoModel.m */; }; + 1427212F29A7599500C7C423 /* XPMonentsAttentionPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427212D29A7599500C7C423 /* XPMonentsAttentionPresenter.m */; }; + 1427213429A75A2600C7C423 /* XPMonentsLatestPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427213329A75A2600C7C423 /* XPMonentsLatestPresenter.m */; }; + 1427218729A75F6F00C7C423 /* MyHTTPConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427213729A75F6F00C7C423 /* MyHTTPConnection.m */; }; + 1427218829A75F6F00C7C423 /* HTTPErrorResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427214029A75F6F00C7C423 /* HTTPErrorResponse.m */; }; + 1427218929A75F6F00C7C423 /* HTTPDataResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427214129A75F6F00C7C423 /* HTTPDataResponse.m */; }; + 1427218A29A75F6F00C7C423 /* HTTPDynamicFileResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427214329A75F6F00C7C423 /* HTTPDynamicFileResponse.m */; }; + 1427218B29A75F6F00C7C423 /* HTTPFileResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427214429A75F6F00C7C423 /* HTTPFileResponse.m */; }; + 1427218C29A75F6F00C7C423 /* HTTPAsyncFileResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427214529A75F6F00C7C423 /* HTTPAsyncFileResponse.m */; }; + 1427218D29A75F6F00C7C423 /* HTTPRedirectResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427214629A75F6F00C7C423 /* HTTPRedirectResponse.m */; }; + 1427218E29A75F6F00C7C423 /* HTTPMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427214C29A75F6F00C7C423 /* HTTPMessage.m */; }; + 1427218F29A75F6F00C7C423 /* HTTPConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427214D29A75F6F00C7C423 /* HTTPConnection.m */; }; + 1427219029A75F6F00C7C423 /* WebSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427214E29A75F6F00C7C423 /* WebSocket.m */; }; + 1427219129A75F6F00C7C423 /* MultipartMessageHeaderField.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427215329A75F6F00C7C423 /* MultipartMessageHeaderField.m */; }; + 1427219229A75F6F00C7C423 /* MultipartFormDataParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427215429A75F6F00C7C423 /* MultipartFormDataParser.m */; }; + 1427219329A75F6F00C7C423 /* MultipartMessageHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427215529A75F6F00C7C423 /* MultipartMessageHeader.m */; }; + 1427219429A75F6F00C7C423 /* HTTPAuthenticationRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427215729A75F6F00C7C423 /* HTTPAuthenticationRequest.m */; }; 1427219529A75F6F00C7C423 /* DDNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427215929A75F6F00C7C423 /* DDNumber.m */; }; 1427219629A75F6F00C7C423 /* DDData.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427215A29A75F6F00C7C423 /* DDData.m */; }; 1427219729A75F6F00C7C423 /* DDRange.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427215D29A75F6F00C7C423 /* DDRange.m */; }; - 1427219829A75F6F00C7C423 /* HyperTextServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427215F29A75F6F00C7C423 /* HyperTextServer.m */; }; - 142721A829A75F6F00C7C423 /* BWGMKJYlumbes.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427217729A75F6F00C7C423 /* BWGMKJYlumbes.m */; }; - 142721A929A75F6F00C7C423 /* BWGASLlumbes.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427217A29A75F6F00C7C423 /* BWGASLlumbes.m */; }; + 1427219829A75F6F00C7C423 /* HTTPServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427215F29A75F6F00C7C423 /* HTTPServer.m */; }; + 142721A829A75F6F00C7C423 /* DDTTYLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427217729A75F6F00C7C423 /* DDTTYLogger.m */; }; + 142721A929A75F6F00C7C423 /* DDASLLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427217A29A75F6F00C7C423 /* DDASLLogger.m */; }; 142721AA29A75F6F00C7C423 /* ContextFilterLogFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427217F29A75F6F00C7C423 /* ContextFilterLogFormatter.m */; }; - 142721AB29A75F6F00C7C423 /* DispatchMHTueueLumberInitialiser.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427218029A75F6F00C7C423 /* DispatchMHTueueLumberInitialiser.m */; }; - 142721AC29A75F6F00C7C423 /* BWGLumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427218129A75F6F00C7C423 /* BWGLumber.m */; }; - 142721AD29A75F6F00C7C423 /* BWGAbstractAtomicbaselumbes.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427218329A75F6F00C7C423 /* BWGAbstractAtomicbaselumbes.m */; }; - 142721AE29A75F6F00C7C423 /* BWGAccuratelumbes.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427218429A75F6F00C7C423 /* BWGAccuratelumbes.m */; }; - 142721AF29A75F6F00C7C423 /* SJXCSMIPFacilitater.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427218629A75F6F00C7C423 /* SJXCSMIPFacilitater.m */; }; - 142721B229A7647F00C7C423 /* YUMIBlankRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 142721B129A7647F00C7C423 /* YUMIBlankRegardGovernancer.m */; }; - 1464C5EA29A45FC300AF7C94 /* YUMIButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 1464C5E929A45FC300AF7C94 /* YUMIButton.m */; }; - 1464C5ED29A4784F00AF7C94 /* YUMIManeSimpleConsumerAbstractRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1464C5EC29A4784F00AF7C94 /* YUMIManeSimpleConsumerAbstractRegardGovernancer.m */; }; - 1464C5F029A49DDD00AF7C94 /* YUMIManeSimpleConsumerAbstractIntelligencerRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 1464C5EF29A49DDD00AF7C94 /* YUMIManeSimpleConsumerAbstractIntelligencerRegard.m */; }; - 1464C5F329A4C18000AF7C94 /* YUMIIAPReindictRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1464C5F229A4C18000AF7C94 /* YUMIIAPReindictRegardGovernancer.m */; }; - 1464C5F629A4CA8C00AF7C94 /* YUMIIAPReindictAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 1464C5F529A4CA8C00AF7C94 /* YUMIIAPReindictAssembletionRegardElement.m */; }; - 1464C5F929A4D00000AF7C94 /* YUMIIAPReindictIntelligencerRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 1464C5F829A4D00000AF7C94 /* YUMIIAPReindictIntelligencerRegard.m */; }; - 149839C4299E088000F82CBF /* YUMIMomentStatementRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 149839C3299E088000F82CBF /* YUMIMomentStatementRegardGovernancer.m */; }; - 149839C7299E0B9F00F82CBF /* YUMIMomentStatementAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 149839C6299E0B9F00F82CBF /* YUMIMomentStatementAssembletionRegardElement.m */; }; - 14A6034929A3567200D2A6A5 /* YUMISimpleManeRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 14A6034829A3567200D2A6A5 /* YUMISimpleManeRegardGovernancer.m */; }; - 14A6034C29A35EE600D2A6A5 /* YUMIManeProvisionTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 14A6034B29A35EE600D2A6A5 /* YUMIManeProvisionTabulationRegardElement.m */; }; - 14A6034F29A36D8300D2A6A5 /* YUMISimpleManeIntelligencerRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 14A6034E29A36D8300D2A6A5 /* YUMISimpleManeIntelligencerRegard.m */; }; - 14B880E1299A1799005FCA1B /* YUMISurmountRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 14B880E0299A1799005FCA1B /* YUMISurmountRegardGovernancer.m */; }; - 14B880E7299A4B62005FCA1B /* YUMISurmountMobileRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 14B880E6299A4B62005FCA1B /* YUMISurmountMobileRegardGovernancer.m */; }; + 142721AB29A75F6F00C7C423 /* DispatchQueueLogFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427218029A75F6F00C7C423 /* DispatchQueueLogFormatter.m */; }; + 142721AC29A75F6F00C7C423 /* DDLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427218129A75F6F00C7C423 /* DDLog.m */; }; + 142721AD29A75F6F00C7C423 /* DDAbstractDatabaseLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427218329A75F6F00C7C423 /* DDAbstractDatabaseLogger.m */; }; + 142721AE29A75F6F00C7C423 /* DDFileLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427218429A75F6F00C7C423 /* DDFileLogger.m */; }; + 142721AF29A75F6F00C7C423 /* SJXCSMIPHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 1427218629A75F6F00C7C423 /* SJXCSMIPHelper.m */; }; + 142721B229A7647F00C7C423 /* XPBlankViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 142721B129A7647F00C7C423 /* XPBlankViewController.m */; }; + 1464C5EA29A45FC300AF7C94 /* XPButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 1464C5E929A45FC300AF7C94 /* XPButton.m */; }; + 1464C5ED29A4784F00AF7C94 /* XPMineSimpleUserInfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1464C5EC29A4784F00AF7C94 /* XPMineSimpleUserInfoViewController.m */; }; + 1464C5F029A49DDD00AF7C94 /* XPMineSimpleUserInfoHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1464C5EF29A49DDD00AF7C94 /* XPMineSimpleUserInfoHeaderView.m */; }; + 1464C5F329A4C18000AF7C94 /* XPIAPRechargeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1464C5F229A4C18000AF7C94 /* XPIAPRechargeViewController.m */; }; + 1464C5F629A4CA8C00AF7C94 /* XPIAPRechargeCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 1464C5F529A4CA8C00AF7C94 /* XPIAPRechargeCollectionViewCell.m */; }; + 1464C5F929A4D00000AF7C94 /* XPIAPRechargeHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1464C5F829A4D00000AF7C94 /* XPIAPRechargeHeaderView.m */; }; + 149839C4299E088000F82CBF /* XPMomentListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 149839C3299E088000F82CBF /* XPMomentListViewController.m */; }; + 149839C7299E0B9F00F82CBF /* XPMomentListCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 149839C6299E0B9F00F82CBF /* XPMomentListCollectionViewCell.m */; }; + 14A6034929A3567200D2A6A5 /* XPSimpleMineViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 14A6034829A3567200D2A6A5 /* XPSimpleMineViewController.m */; }; + 14A6034C29A35EE600D2A6A5 /* XPMineItemTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 14A6034B29A35EE600D2A6A5 /* XPMineItemTableViewCell.m */; }; + 14A6034F29A36D8300D2A6A5 /* XPSimpleMineHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 14A6034E29A36D8300D2A6A5 /* XPSimpleMineHeaderView.m */; }; + 14B880E1299A1799005FCA1B /* XPLoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 14B880E0299A1799005FCA1B /* XPLoginViewController.m */; }; + 14B880E7299A4B62005FCA1B /* XPLoginPhoneViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 14B880E6299A4B62005FCA1B /* XPLoginPhoneViewController.m */; }; 14D8767C29A7445C00E1DD7F /* NSObject+AutoCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 14D8767B29A7445C00E1DD7F /* NSObject+AutoCoding.m */; }; - 14DCAD08299B36A500A7DD31 /* YUMISurmountPwordRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 14DCAD07299B36A500A7DD31 /* YUMISurmountPwordRegardGovernancer.m */; }; - 14DCAD0B299B5D3A00A7DD31 /* YUMISurmountIntrojectionRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 14DCAD0A299B5D3A00A7DD31 /* YUMISurmountIntrojectionRegard.m */; }; - 14DCAD0E299B6AD900A7DD31 /* YUMIForgetPwordRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 14DCAD0D299B6AD900A7DD31 /* YUMIForgetPwordRegardGovernancer.m */; }; - 14DCAD11299B946E00A7DD31 /* YUMISurmountBaseRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 14DCAD10299B946E00A7DD31 /* YUMISurmountBaseRegardGovernancer.m */; }; - 14EB640929A5BDDD00A4A00B /* YUMIMomentsSimpleSpecificRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 14EB640829A5BDDD00A4A00B /* YUMIMomentsSimpleSpecificRegardGovernancer.m */; }; - 14EB640D29A5C16000A4A00B /* YUMIMomentsSimpleSpecificNev.m in Sources */ = {isa = PBXBuildFile; fileRef = 14EB640C29A5C16000A4A00B /* YUMIMomentsSimpleSpecificNev.m */; }; - 180116F9279E8C4C00F2CBC0 /* PLIntratemporalUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 180116F8279E8C4C00F2CBC0 /* PLIntratemporalUtil.m */; }; + 14DCAD08299B36A500A7DD31 /* XPLoginPwdViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 14DCAD07299B36A500A7DD31 /* XPLoginPwdViewController.m */; }; + 14DCAD0B299B5D3A00A7DD31 /* XPLoginInputView.m in Sources */ = {isa = PBXBuildFile; fileRef = 14DCAD0A299B5D3A00A7DD31 /* XPLoginInputView.m */; }; + 14DCAD0E299B6AD900A7DD31 /* XPForgetPwdViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 14DCAD0D299B6AD900A7DD31 /* XPForgetPwdViewController.m */; }; + 14DCAD11299B946E00A7DD31 /* XPLoginBaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 14DCAD10299B946E00A7DD31 /* XPLoginBaseViewController.m */; }; + 14EB640929A5BDDD00A4A00B /* XPMomentsSimpleDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 14EB640829A5BDDD00A4A00B /* XPMomentsSimpleDetailViewController.m */; }; + 14EB640D29A5C16000A4A00B /* XPMomentsSimpleDetailNav.m in Sources */ = {isa = PBXBuildFile; fileRef = 14EB640C29A5C16000A4A00B /* XPMomentsSimpleDetailNav.m */; }; + 180116F9279E8C4C00F2CBC0 /* PLTimeUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 180116F8279E8C4C00F2CBC0 /* PLTimeUtil.m */; }; 180116FC279E8CCE00F2CBC0 /* NVDate.m in Sources */ = {isa = PBXBuildFile; fileRef = 180116FA279E8CCE00F2CBC0 /* NVDate.m */; }; 180806D827293794001FD836 /* NSObject+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 180806D727293794001FD836 /* NSObject+MJExtension.m */; }; 180806FB2729A354001FD836 /* ThemeColor+Room.m in Sources */ = {isa = PBXBuildFile; fileRef = 180806FA2729A354001FD836 /* ThemeColor+Room.m */; }; - 1808072D2731598F001FD836 /* YUMINetIndicateYYDesignation.m in Sources */ = {isa = PBXBuildFile; fileRef = 1808072C2731598F001FD836 /* YUMINetIndicateYYDesignation.m */; }; - 1808073027315E8E001FD836 /* NetIndicateRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 1808072F27315E8E001FD836 /* NetIndicateRegard.m */; }; - 181D7F1B2726CE2A00B7C059 /* PhaseRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 181D7F1A2726CE2A00B7C059 /* PhaseRegard.m */; }; - 181D7F212727D9DB00B7C059 /* SocialPhaseRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 181D7F202727D9DB00B7C059 /* SocialPhaseRegard.m */; }; - 18486213271EA9DA005FC5DC /* RealtimackExecutive.m in Sources */ = {isa = PBXBuildFile; fileRef = 18486212271EA9DA005FC5DC /* RealtimackExecutive.m */; }; - 18486217271EAB8C005FC5DC /* BaseRealtimackConnector.m in Sources */ = {isa = PBXBuildFile; fileRef = 18486216271EAB8C005FC5DC /* BaseRealtimackConnector.m */; }; - 18486235271EB794005FC5DC /* AgoraRealtimackConnector.m in Sources */ = {isa = PBXBuildFile; fileRef = 18486234271EB794005FC5DC /* AgoraRealtimackConnector.m */; }; - 184862CE27213FD7005FC5DC /* ZegoRealtimackConnector.m in Sources */ = {isa = PBXBuildFile; fileRef = 184862CC27213FD7005FC5DC /* ZegoRealtimackConnector.m */; }; + 1808072D2731598F001FD836 /* XPNetImageYYLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1808072C2731598F001FD836 /* XPNetImageYYLabel.m */; }; + 1808073027315E8E001FD836 /* NetImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1808072F27315E8E001FD836 /* NetImageView.m */; }; + 181D7F1B2726CE2A00B7C059 /* StageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 181D7F1A2726CE2A00B7C059 /* StageView.m */; }; + 181D7F212727D9DB00B7C059 /* SocialStageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 181D7F202727D9DB00B7C059 /* SocialStageView.m */; }; + 18486213271EA9DA005FC5DC /* RtcManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 18486212271EA9DA005FC5DC /* RtcManager.m */; }; + 18486217271EAB8C005FC5DC /* BaseRtcImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = 18486216271EAB8C005FC5DC /* BaseRtcImpl.m */; }; + 18486235271EB794005FC5DC /* AgoraRtcImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = 18486234271EB794005FC5DC /* AgoraRtcImpl.m */; }; + 184862CE27213FD7005FC5DC /* ZegoRtcImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = 184862CC27213FD7005FC5DC /* ZegoRtcImpl.m */; }; 186A531926FC592100D67B2C /* libresolv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 186A531826FC591100D67B2C /* libresolv.tbd */; }; - 186A534626FC6ED900D67B2C /* MKJPopup.m in Sources */ = {isa = PBXBuildFile; fileRef = 186A532C26FC6ED900D67B2C /* MKJPopup.m */; }; - 186A534726FC6ED900D67B2C /* MKJPrecautiousDisposition.m in Sources */ = {isa = PBXBuildFile; fileRef = 186A532E26FC6ED900D67B2C /* MKJPrecautiousDisposition.m */; }; - 186A534826FC6ED900D67B2C /* MKJPrecautiousButtonDisposition.m in Sources */ = {isa = PBXBuildFile; fileRef = 186A533326FC6ED900D67B2C /* MKJPrecautiousButtonDisposition.m */; }; - 186A534926FC6ED900D67B2C /* MKJPrecautiousCommunicationAttributedDisposition.m in Sources */ = {isa = PBXBuildFile; fileRef = 186A533426FC6ED900D67B2C /* MKJPrecautiousCommunicationAttributedDisposition.m */; }; - 186A534A26FC6ED900D67B2C /* MKJActionSheetDisposition.m in Sources */ = {isa = PBXBuildFile; fileRef = 186A533526FC6ED900D67B2C /* MKJActionSheetDisposition.m */; }; - 186A534B26FC6ED900D67B2C /* MKJPopupExecutiveServing.m in Sources */ = {isa = PBXBuildFile; fileRef = 186A533926FC6ED900D67B2C /* MKJPopupExecutiveServing.m */; }; - 186A534C26FC6ED900D67B2C /* MKJPrecautiousRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 186A533C26FC6ED900D67B2C /* MKJPrecautiousRegard.m */; }; - 186A534D26FC6ED900D67B2C /* MKJActionSheetRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 186A533F26FC6ED900D67B2C /* MKJActionSheetRegard.m */; }; - 186A534E26FC6ED900D67B2C /* MKJPopupServing.m in Sources */ = {isa = PBXBuildFile; fileRef = 186A534126FC6ED900D67B2C /* MKJPopupServing.m */; }; - 186A536926FC6F2E00D67B2C /* YUMIParaticipationRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 186A536126FC6F2E00D67B2C /* YUMIParaticipationRegard.m */; }; - 186A536B26FC6F2E00D67B2C /* YUMIParaticipationProvisionElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 186A536726FC6F2E00D67B2C /* YUMIParaticipationProvisionElement.m */; }; - 187EEEDC26E89B32002833B2 /* BaseMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 187EEEDB26E89B32002833B2 /* BaseMatrix.m */; }; - 187EEEE126E89BFB002833B2 /* AccountMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 187EEEE026E89BFB002833B2 /* AccountMatrix.m */; }; - 187EEEF026E89FE8002833B2 /* AccountAbstractStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 187EEEEE26E89FE8002833B2 /* AccountAbstractStorage.m */; }; + 186A534626FC6ED900D67B2C /* TTPopup.m in Sources */ = {isa = PBXBuildFile; fileRef = 186A532C26FC6ED900D67B2C /* TTPopup.m */; }; + 186A534726FC6ED900D67B2C /* TTAlertConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 186A532E26FC6ED900D67B2C /* TTAlertConfig.m */; }; + 186A534826FC6ED900D67B2C /* TTAlertButtonConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 186A533326FC6ED900D67B2C /* TTAlertButtonConfig.m */; }; + 186A534926FC6ED900D67B2C /* TTAlertMessageAttributedConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 186A533426FC6ED900D67B2C /* TTAlertMessageAttributedConfig.m */; }; + 186A534A26FC6ED900D67B2C /* TTActionSheetConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 186A533526FC6ED900D67B2C /* TTActionSheetConfig.m */; }; + 186A534B26FC6ED900D67B2C /* TTPopupManagerService.m in Sources */ = {isa = PBXBuildFile; fileRef = 186A533926FC6ED900D67B2C /* TTPopupManagerService.m */; }; + 186A534C26FC6ED900D67B2C /* TTAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = 186A533C26FC6ED900D67B2C /* TTAlertView.m */; }; + 186A534D26FC6ED900D67B2C /* TTActionSheetView.m in Sources */ = {isa = PBXBuildFile; fileRef = 186A533F26FC6ED900D67B2C /* TTActionSheetView.m */; }; + 186A534E26FC6ED900D67B2C /* TTPopupService.m in Sources */ = {isa = PBXBuildFile; fileRef = 186A534126FC6ED900D67B2C /* TTPopupService.m */; }; + 186A536926FC6F2E00D67B2C /* XPShareView.m in Sources */ = {isa = PBXBuildFile; fileRef = 186A536126FC6F2E00D67B2C /* XPShareView.m */; }; + 186A536B26FC6F2E00D67B2C /* XPShareItemCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 186A536726FC6F2E00D67B2C /* XPShareItemCell.m */; }; + 187EEEDC26E89B32002833B2 /* BaseModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 187EEEDB26E89B32002833B2 /* BaseModel.m */; }; + 187EEEE126E89BFB002833B2 /* AccountModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 187EEEE026E89BFB002833B2 /* AccountModel.m */; }; + 187EEEF026E89FE8002833B2 /* AccountInfoStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 187EEEEE26E89FE8002833B2 /* AccountInfoStorage.m */; }; 189DD52E26DE255300AB55B1 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 189DD52D26DE255300AB55B1 /* AppDelegate.m */; }; - 189DD53426DE255300AB55B1 /* TabbarRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 189DD53326DE255300AB55B1 /* TabbarRegardGovernancer.m */; }; + 189DD53426DE255300AB55B1 /* TabbarViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 189DD53326DE255300AB55B1 /* TabbarViewController.m */; }; 189DD53926DE255600AB55B1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 189DD53826DE255600AB55B1 /* Assets.xcassets */; }; 189DD53F26DE255600AB55B1 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 189DD53E26DE255600AB55B1 /* main.m */; }; - 189DD54B26DE338800AB55B1 /* BaseRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 189DD54A26DE338800AB55B1 /* BaseRegardGovernancer.m */; }; - 189DD55026DE37F900AB55B1 /* MvpRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 189DD54F26DE37F900AB55B1 /* MvpRegardGovernancer.m */; }; - 189DD55A26DE39D200AB55B1 /* BaseMvpExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 189DD55926DE39D200AB55B1 /* BaseMvpExternalizer.m */; }; - 189DD58F26DF97E700AB55B1 /* SurmountExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 189DD58E26DF97E700AB55B1 /* SurmountExternalizer.m */; }; + 189DD54B26DE338800AB55B1 /* BaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 189DD54A26DE338800AB55B1 /* BaseViewController.m */; }; + 189DD55026DE37F900AB55B1 /* MvpViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 189DD54F26DE37F900AB55B1 /* MvpViewController.m */; }; + 189DD55A26DE39D200AB55B1 /* BaseMvpPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 189DD55926DE39D200AB55B1 /* BaseMvpPresenter.m */; }; + 189DD58F26DF97E700AB55B1 /* LoginPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 189DD58E26DF97E700AB55B1 /* LoginPresenter.m */; }; 189DD67E26E1FD8900AB55B1 /* UIImage+Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = 189DD67D26E1FD8900AB55B1 /* UIImage+Utils.m */; }; - 189DD68426E1FDBB00AB55B1 /* XNDJTBWGLoadingTool.m in Sources */ = {isa = PBXBuildFile; fileRef = 189DD68226E1FDBB00AB55B1 /* XNDJTBWGLoadingTool.m */; }; - 189DD6FF26E20E5900AB55B1 /* HttpRequestFacilitater.m in Sources */ = {isa = PBXBuildFile; fileRef = 189DD6FE26E20E5900AB55B1 /* HttpRequestFacilitater.m */; }; + 189DD68426E1FDBB00AB55B1 /* XNDJTDDLoadingTool.m in Sources */ = {isa = PBXBuildFile; fileRef = 189DD68226E1FDBB00AB55B1 /* XNDJTDDLoadingTool.m */; }; + 189DD6FF26E20E5900AB55B1 /* HttpRequestHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 189DD6FE26E20E5900AB55B1 /* HttpRequestHelper.m */; }; 189DD73D26E21C3F00AB55B1 /* YYUtility+Device.m in Sources */ = {isa = PBXBuildFile; fileRef = 189DD73826E21C3F00AB55B1 /* YYUtility+Device.m */; }; 189DD73E26E21C3F00AB55B1 /* YYUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 189DD73926E21C3F00AB55B1 /* YYUtility.m */; }; 189DD73F26E21C3F00AB55B1 /* YYUtility+Carrier.m in Sources */ = {isa = PBXBuildFile; fileRef = 189DD73A26E21C3F00AB55B1 /* YYUtility+Carrier.m */; }; @@ -107,302 +107,263 @@ 189DD75026E21D9000AB55B1 /* GCDHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 189DD74E26E21D9000AB55B1 /* GCDHelper.m */; }; 189DD75926E6003C00AB55B1 /* Api.m in Sources */ = {isa = PBXBuildFile; fileRef = 189DD75826E6003C00AB55B1 /* Api.m */; }; 189DD76226E60DDC00AB55B1 /* Api+Login.m in Sources */ = {isa = PBXBuildFile; fileRef = 189DD76126E60DDC00AB55B1 /* Api+Login.m */; }; - 18A61BD7274F7F6900A09A54 /* NetIndicateDisposition.m in Sources */ = {isa = PBXBuildFile; fileRef = 18A61BD6274F7F6900A09A54 /* NetIndicateDisposition.m */; }; - 18A61BE8274F9CF000A09A54 /* InterlocutionStatementRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 18A61BE7274F9CF000A09A54 /* InterlocutionStatementRegardGovernancer.m */; }; - 18AAF3F0279EA59300CD7DAD /* CommunicationSatisfactionEssayClickable.m in Sources */ = {isa = PBXBuildFile; fileRef = 18AAF3EF279EA59300CD7DAD /* CommunicationSatisfactionEssayClickable.m */; }; - 18E7B1B226E8AF980064BC9B /* MainExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 18E7B1B126E8AF980064BC9B /* MainExternalizer.m */; }; + 18A61BD7274F7F6900A09A54 /* NetImageConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 18A61BD6274F7F6900A09A54 /* NetImageConfig.m */; }; + 18A61BE8274F9CF000A09A54 /* SessionListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 18A61BE7274F9CF000A09A54 /* SessionListViewController.m */; }; + 18AAF3F0279EA59300CD7DAD /* MessageContentTextClickable.m in Sources */ = {isa = PBXBuildFile; fileRef = 18AAF3EF279EA59300CD7DAD /* MessageContentTextClickable.m */; }; + 18E7B1B226E8AF980064BC9B /* MainPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 18E7B1B126E8AF980064BC9B /* MainPresenter.m */; }; 18E7B1B726E8B2D10064BC9B /* Api+Main.m in Sources */ = {isa = PBXBuildFile; fileRef = 18E7B1B626E8B2D10064BC9B /* Api+Main.m */; }; - 18E7B26926E8D5D60064BC9B /* XCCurrentVCStackExecutive.m in Sources */ = {isa = PBXBuildFile; fileRef = 18E7B26726E8D5D60064BC9B /* XCCurrentVCStackExecutive.m */; }; - 18E7B31826F097E00064BC9B /* ConsumerAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 18E7B31726F097E00064BC9B /* ConsumerAbstractMatrix.m */; }; - 18E7B31B26F0982E0064BC9B /* ConsumerExpand.m in Sources */ = {isa = PBXBuildFile; fileRef = 18E7B31A26F0982E0064BC9B /* ConsumerExpand.m */; }; - 18E7B31E26F0984C0064BC9B /* ConsumerPrototypeVo.m in Sources */ = {isa = PBXBuildFile; fileRef = 18E7B31D26F0984C0064BC9B /* ConsumerPrototypeVo.m */; }; - 18E7B32126F098650064BC9B /* ConsumerAbstractCommunicationVo.m in Sources */ = {isa = PBXBuildFile; fileRef = 18E7B32026F098650064BC9B /* ConsumerAbstractCommunicationVo.m */; }; - 18E7B33226F317A20064BC9B /* YUMITissueRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 18E7B33126F317A20064BC9B /* YUMITissueRegardGovernancer.m */; }; - 18EE3FDF2750C1F700A452BF /* InterlocutionStatementElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EE3FDE2750C1F700A452BF /* InterlocutionStatementElement.m */; }; - 18EE3FE22750C29D00A452BF /* NEMCBadgeRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EE3FE12750C29D00A452BF /* NEMCBadgeRegard.m */; }; - 18EE3FEE2750CE6D00A452BF /* NEMCCommunicationUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EE3FED2750CE6D00A452BF /* NEMCCommunicationUtils.m */; }; - 18EE3FF12750D2AD00A452BF /* NEMCIntratemporalUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EE3FF02750D2AD00A452BF /* NEMCIntratemporalUtils.m */; }; + 18E7B26926E8D5D60064BC9B /* XCCurrentVCStackManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 18E7B26726E8D5D60064BC9B /* XCCurrentVCStackManager.m */; }; + 18E7B31826F097E00064BC9B /* UserInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 18E7B31726F097E00064BC9B /* UserInfoModel.m */; }; + 18E7B31B26F0982E0064BC9B /* UserExpand.m in Sources */ = {isa = PBXBuildFile; fileRef = 18E7B31A26F0982E0064BC9B /* UserExpand.m */; }; + 18E7B31E26F0984C0064BC9B /* UserLevelVo.m in Sources */ = {isa = PBXBuildFile; fileRef = 18E7B31D26F0984C0064BC9B /* UserLevelVo.m */; }; + 18E7B32126F098650064BC9B /* UserInfoSkillVo.m in Sources */ = {isa = PBXBuildFile; fileRef = 18E7B32026F098650064BC9B /* UserInfoSkillVo.m */; }; + 18E7B33226F317A20064BC9B /* XPWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 18E7B33126F317A20064BC9B /* XPWebViewController.m */; }; + 18EE3FDF2750C1F700A452BF /* SessionListCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EE3FDE2750C1F700A452BF /* SessionListCell.m */; }; + 18EE3FE22750C29D00A452BF /* NIMBadgeView.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EE3FE12750C29D00A452BF /* NIMBadgeView.m */; }; + 18EE3FEE2750CE6D00A452BF /* NIMMessageUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EE3FED2750CE6D00A452BF /* NIMMessageUtils.m */; }; + 18EE3FF12750D2AD00A452BF /* NIMTimeUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EE3FF02750D2AD00A452BF /* NIMTimeUtils.m */; }; 18EE3FF42750FA3700A452BF /* UIView+NIM.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EE3FF32750FA3700A452BF /* UIView+NIM.m */; }; - 18EE401A2754BA9F00A452BF /* NEMCCommunicationMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EE40182754BA9F00A452BF /* NEMCCommunicationMaker.m */; }; - 18F403CB2758C66800A6C548 /* CommunicationSatisfactionEssay.m in Sources */ = {isa = PBXBuildFile; fileRef = 18F403CA2758C66800A6C548 /* CommunicationSatisfactionEssay.m */; }; - 18F403EE2758CF2F00A6C548 /* CommunicationSatisfactionIndicate.m in Sources */ = {isa = PBXBuildFile; fileRef = 18F403ED2758CF2F00A6C548 /* CommunicationSatisfactionIndicate.m */; }; - 18F4043A275E20D900A6C548 /* TRTCRealtimackConnector.m in Sources */ = {isa = PBXBuildFile; fileRef = 18F40439275E20D900A6C548 /* TRTCRealtimackConnector.m */; }; - 18F404B7276095D700A6C548 /* InterlocutionChatLimitRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 18F404B6276095D700A6C548 /* InterlocutionChatLimitRegard.m */; }; - 18F404BB2760982000A6C548 /* ChatLimitMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 18F404BA2760982000A6C548 /* ChatLimitMatrix.m */; }; + 18EE401A2754BA9F00A452BF /* NIMMessageMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EE40182754BA9F00A452BF /* NIMMessageMaker.m */; }; + 18F403CB2758C66800A6C548 /* MessageContentText.m in Sources */ = {isa = PBXBuildFile; fileRef = 18F403CA2758C66800A6C548 /* MessageContentText.m */; }; + 18F403EE2758CF2F00A6C548 /* MessageContentImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 18F403ED2758CF2F00A6C548 /* MessageContentImage.m */; }; + 18F4043A275E20D900A6C548 /* TRTCRtcImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = 18F40439275E20D900A6C548 /* TRTCRtcImpl.m */; }; + 18F404B7276095D700A6C548 /* SessionChatLimitView.m in Sources */ = {isa = PBXBuildFile; fileRef = 18F404B6276095D700A6C548 /* SessionChatLimitView.m */; }; + 18F404BB2760982000A6C548 /* ChatLimitModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 18F404BA2760982000A6C548 /* ChatLimitModel.m */; }; 18F404C3276098F100A6C548 /* Api+Message.m in Sources */ = {isa = PBXBuildFile; fileRef = 18F404C2276098F100A6C548 /* Api+Message.m */; }; - 18F404C927609A4300A6C548 /* CommunicationExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 18F404C827609A4300A6C548 /* CommunicationExternalizer.m */; }; - 237D63752A57E7B1000442C6 /* PINoblemanCenterView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D63742A57E7B1000442C6 /* PINoblemanCenterView.m */; }; - 237D64AD2A57FDAA000442C6 /* ContentTreasureFairyModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64342A57FDA9000442C6 /* ContentTreasureFairyModel.m */; }; - 237D64AE2A57FDAA000442C6 /* XPTreasureFailyPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64372A57FDA9000442C6 /* XPTreasureFailyPresenter.m */; }; - 237D64AF2A57FDAA000442C6 /* TreasureFairyLimitModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D643E2A57FDA9000442C6 /* TreasureFairyLimitModel.m */; }; - 237D64B02A57FDAA000442C6 /* TreasureFailyKeyInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D643F2A57FDA9000442C6 /* TreasureFailyKeyInfoModel.m */; }; - 237D64B12A57FDAA000442C6 /* TreasureFairySendRecordModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64412A57FDA9000442C6 /* TreasureFairySendRecordModel.m */; }; - 237D64B22A57FDAA000442C6 /* TreasureFairyRewardModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64422A57FDA9000442C6 /* TreasureFairyRewardModel.m */; }; - 237D64B32A57FDAA000442C6 /* TreasureFairyTrialsRecordModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64432A57FDA9000442C6 /* TreasureFairyTrialsRecordModel.m */; }; - 237D64B42A57FDAA000442C6 /* TreasureFairyUserInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64452A57FDA9000442C6 /* TreasureFairyUserInfoModel.m */; }; - 237D64B52A57FDAA000442C6 /* TreasureFairyInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64492A57FDA9000442C6 /* TreasureFairyInfoModel.m */; }; - 237D64B62A57FDAA000442C6 /* TreasureFairyConvertRecordModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D644A2A57FDA9000442C6 /* TreasureFairyConvertRecordModel.m */; }; - 237D64B72A57FDAA000442C6 /* TreasureFailryMessageModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D644B2A57FDA9000442C6 /* TreasureFailryMessageModel.m */; }; - 237D64B82A57FDAA000442C6 /* TreasureFairyBallInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D644C2A57FDA9000442C6 /* TreasureFairyBallInfoModel.m */; }; - 237D64B92A57FDAA000442C6 /* TreasureFairyFragmentModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64502A57FDA9000442C6 /* TreasureFairyFragmentModel.m */; }; - 237D64BA2A57FDAA000442C6 /* XPTreasureFairyViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64532A57FDA9000442C6 /* XPTreasureFairyViewController.m */; }; - 237D64BB2A57FDAA000442C6 /* XPTreasureFairyStoreResultCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64552A57FDA9000442C6 /* XPTreasureFairyStoreResultCell.m */; }; - 237D64BC2A57FDAA000442C6 /* XPTreasureFairyFriendCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64592A57FDA9000442C6 /* XPTreasureFairyFriendCell.m */; }; - 237D64BD2A57FDAA000442C6 /* XPTreasureFairyPrizePoolCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D645A2A57FDA9000442C6 /* XPTreasureFairyPrizePoolCell.m */; }; - 237D64BE2A57FDAA000442C6 /* XPTreasureFairyPrizeRecordCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D645B2A57FDA9000442C6 /* XPTreasureFairyPrizeRecordCell.m */; }; - 237D64BF2A57FDAA000442C6 /* XPTreasureFailyResultGiftCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D645F2A57FDA9000442C6 /* XPTreasureFailyResultGiftCell.m */; }; - 237D64C02A57FDAA000442C6 /* XPTreasureFairyShopingRecordCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64602A57FDA9000442C6 /* XPTreasureFairyShopingRecordCell.m */; }; - 237D64C12A57FDAA000442C6 /* XPTreasureFairySendRecordCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64622A57FDA9000442C6 /* XPTreasureFairySendRecordCell.m */; }; - 237D64C22A57FDAA000442C6 /* XPTreasureFairyShopingExchangeCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64652A57FDA9000442C6 /* XPTreasureFairyShopingExchangeCell.m */; }; - 237D64C32A57FDAA000442C6 /* XPTreasureFairyTrialsRecordCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64662A57FDA9000442C6 /* XPTreasureFairyTrialsRecordCell.m */; }; - 237D64C42A57FDAA000442C6 /* XPTreasureFairyFriendView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64692A57FDA9000442C6 /* XPTreasureFairyFriendView.m */; }; - 237D64C52A57FDAA000442C6 /* XPTreasureFairySummonView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D646A2A57FDA9000442C6 /* XPTreasureFairySummonView.m */; }; - 237D64C62A57FDAA000442C6 /* XPTreasureFairySendView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D646B2A57FDA9000442C6 /* XPTreasureFairySendView.m */; }; - 237D64C72A57FDAA000442C6 /* XPTreasureFairyTrialsContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64702A57FDA9000442C6 /* XPTreasureFairyTrialsContentView.m */; }; - 237D64C82A57FDAA000442C6 /* XPTreasureFairyStoreResultView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64752A57FDA9000442C6 /* XPTreasureFairyStoreResultView.m */; }; - 237D64C92A57FDAA000442C6 /* XPTreasureFairyPoolRecordView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64772A57FDA9000442C6 /* XPTreasureFairyPoolRecordView.m */; }; - 237D64CA2A57FDAA000442C6 /* XPTreasureFairyDrawSubView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64792A57FDA9000442C6 /* XPTreasureFairyDrawSubView.m */; }; - 237D64CB2A57FDAA000442C6 /* XPTreasureFairyMessageSendView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D647A2A57FDA9000442C6 /* XPTreasureFairyMessageSendView.m */; }; - 237D64CC2A57FDAA000442C6 /* XPTreasureFairyBallContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D647B2A57FDA9000442C6 /* XPTreasureFairyBallContentView.m */; }; - 237D64CD2A57FDAA000442C6 /* XPTreasureFairyMoreView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D647D2A57FDA9000442C6 /* XPTreasureFairyMoreView.m */; }; - 237D64CE2A57FDAA000442C6 /* XPTreasureFairyMyView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D647E2A57FDA9000442C6 /* XPTreasureFairyMyView.m */; }; - 237D64CF2A57FDAA000442C6 /* XPTreasureFairyPrizeRecordView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D647F2A57FDA9000442C6 /* XPTreasureFairyPrizeRecordView.m */; }; - 237D64D02A57FDAA000442C6 /* XPTreasureFailyPrizeGiftView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64802A57FDA9000442C6 /* XPTreasureFailyPrizeGiftView.m */; }; - 237D64D12A57FDAA000442C6 /* XPTreasureFairyStoreResultSmallView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64812A57FDA9000442C6 /* XPTreasureFairyStoreResultSmallView.m */; }; - 237D64D22A57FDAA000442C6 /* XPTreasureFairyPrizePoolView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64832A57FDA9000442C6 /* XPTreasureFairyPrizePoolView.m */; }; - 237D64D32A57FDAA000442C6 /* XPTreasureFairyWebView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64842A57FDA9000442C6 /* XPTreasureFairyWebView.m */; }; - 237D64D42A57FDAA000442C6 /* XPTreasureFairyPrizeSubView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64852A57FDA9000442C6 /* XPTreasureFairyPrizeSubView.m */; }; - 237D64D52A57FDAA000442C6 /* XPTreasureFailyResultView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64862A57FDA9000442C6 /* XPTreasureFailyResultView.m */; }; - 237D64D62A57FDAA000442C6 /* XPTreasureFairyDrawView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64872A57FDA9000442C6 /* XPTreasureFairyDrawView.m */; }; - 237D64D72A57FDAA000442C6 /* XPTreasureFairySendRecordView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64882A57FDA9000442C6 /* XPTreasureFairySendRecordView.m */; }; - 237D64D82A57FDAA000442C6 /* XPTreasureFairySummonGiftView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64892A57FDA9000442C6 /* XPTreasureFairySummonGiftView.m */; }; - 237D64D92A57FDAA000442C6 /* XPTreasureFairyShopingRecordSubView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D648D2A57FDA9000442C6 /* XPTreasureFairyShopingRecordSubView.m */; }; - 237D64DA2A57FDAA000442C6 /* XPTreasureFairyExchangeView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D648F2A57FDA9000442C6 /* XPTreasureFairyExchangeView.m */; }; - 237D64DB2A57FDAA000442C6 /* XPTreasureFairyShopingRecordView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64902A57FDA9000442C6 /* XPTreasureFairyShopingRecordView.m */; }; - 237D64DC2A57FDAA000442C6 /* XPTreasureFailrySummonBallView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64922A57FDA9000442C6 /* XPTreasureFailrySummonBallView.m */; }; - 237D64DD2A57FDAA000442C6 /* XPTreasureFairyTrialsView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64932A57FDA9000442C6 /* XPTreasureFairyTrialsView.m */; }; - 237D64DE2A57FDAA000442C6 /* XPTreasureFairyTrialsBallView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64942A57FDA9000442C6 /* XPTreasureFairyTrialsBallView.m */; }; - 237D64DF2A57FDAA000442C6 /* XPTreasureFairyShopingView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64952A57FDA9000442C6 /* XPTreasureFairyShopingView.m */; }; - 237D64E02A57FDAA000442C6 /* XPTreasureFairyTrialsRecordView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64982A57FDA9000442C6 /* XPTreasureFairyTrialsRecordView.m */; }; - 237D64E12A57FDAA000442C6 /* XPTreasureFairyBallView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D649C2A57FDA9000442C6 /* XPTreasureFairyBallView.m */; }; - 237D64E22A57FDAA000442C6 /* XPTreasureFairyStoreView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64A12A57FDA9000442C6 /* XPTreasureFairyStoreView.m */; }; - 237D64E32A57FDAA000442C6 /* Api+TreasureFairy.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64A82A57FDA9000442C6 /* Api+TreasureFairy.m */; }; - 237D64E42A57FDAA000442C6 /* XPTreasureFairyGiftView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D64AC2A57FDAA000442C6 /* XPTreasureFairyGiftView.m */; }; - 237D64EE2A58139E000442C6 /* treasure_fairy_trials_high.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = 237D64E62A58139E000442C6 /* treasure_fairy_trials_high.mp4 */; }; - 237D64EF2A58139E000442C6 /* treasure_fairy_summon_normal.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = 237D64E72A58139E000442C6 /* treasure_fairy_summon_normal.mp4 */; }; - 237D64F02A58139E000442C6 /* treasure_fairy_summon_high.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = 237D64E82A58139E000442C6 /* treasure_fairy_summon_high.mp4 */; }; - 237D64F12A58139E000442C6 /* treasure_fairy_summon_middle.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = 237D64E92A58139E000442C6 /* treasure_fairy_summon_middle.mp4 */; }; - 237D64F22A58139E000442C6 /* treasure_fairy_ten.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = 237D64EA2A58139E000442C6 /* treasure_fairy_ten.mp4 */; }; - 237D64F32A58139E000442C6 /* treasure_fairy_trials_middle.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = 237D64EB2A58139E000442C6 /* treasure_fairy_trials_middle.mp4 */; }; - 237D64F42A58139E000442C6 /* treasure_fairy_one.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = 237D64EC2A58139E000442C6 /* treasure_fairy_one.mp4 */; }; - 237D64F52A58139E000442C6 /* treasure_fairy_gift_bg.svga in Resources */ = {isa = PBXBuildFile; fileRef = 237D64ED2A58139E000442C6 /* treasure_fairy_gift_bg.svga */; }; - 23D0B01F2A5BFF2D00C9B18B /* PIBaseAnimationViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 23D0B01E2A5BFF2D00C9B18B /* PIBaseAnimationViewModel.m */; }; + 18F404C927609A4300A6C548 /* MessagePresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 18F404C827609A4300A6C548 /* MessagePresenter.m */; }; + 2331C0DC2A5E9E9000E1D940 /* PIFullScreenBannerAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C0DB2A5E9E9000E1D940 /* PIFullScreenBannerAnimation.m */; }; + 2331C1632A5EB71000E1D940 /* XPNobleCenterPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1322A5EB71000E1D940 /* XPNobleCenterPresenter.m */; }; + 2331C1642A5EB71000E1D940 /* NobleInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1362A5EB71000E1D940 /* NobleInfo.m */; }; + 2331C1652A5EB71000E1D940 /* NobleRechargeModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1392A5EB71000E1D940 /* NobleRechargeModel.m */; }; + 2331C1662A5EB71000E1D940 /* NobleCenterModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C13A2A5EB71000E1D940 /* NobleCenterModel.m */; }; + 2331C1672A5EB71000E1D940 /* NobleLevelUpModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C13C2A5EB71000E1D940 /* NobleLevelUpModel.m */; }; + 2331C1682A5EB71000E1D940 /* NobleAuthInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C13D2A5EB71000E1D940 /* NobleAuthInfo.m */; }; + 2331C1692A5EB71000E1D940 /* XPNobleSettingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1412A5EB71000E1D940 /* XPNobleSettingViewController.m */; }; + 2331C16A2A5EB71000E1D940 /* XPNobleCenterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1442A5EB71000E1D940 /* XPNobleCenterViewController.m */; }; + 2331C16B2A5EB71000E1D940 /* XPNobleCenterMyNobleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1482A5EB71000E1D940 /* XPNobleCenterMyNobleView.m */; }; + 2331C16C2A5EB71000E1D940 /* XPNobleCenterEmptyView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C14C2A5EB71000E1D940 /* XPNobleCenterEmptyView.m */; }; + 2331C16D2A5EB71000E1D940 /* XPNobleSettingNavView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1522A5EB71000E1D940 /* XPNobleSettingNavView.m */; }; + 2331C16E2A5EB71000E1D940 /* XPNobleAuthorityDescView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1532A5EB71000E1D940 /* XPNobleAuthorityDescView.m */; }; + 2331C16F2A5EB71000E1D940 /* XPNobleCenterNavView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1542A5EB71000E1D940 /* XPNobleCenterNavView.m */; }; + 2331C1702A5EB71000E1D940 /* XPNoblePrivilegeContentCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1562A5EB71000E1D940 /* XPNoblePrivilegeContentCell.m */; }; + 2331C1712A5EB71000E1D940 /* XPNobleCenterTableHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1572A5EB71000E1D940 /* XPNobleCenterTableHeadView.m */; }; + 2331C1732A5EB71000E1D940 /* XPNoblePrivilegeCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1592A5EB71000E1D940 /* XPNoblePrivilegeCell.m */; }; + 2331C1742A5EB71000E1D940 /* XPNobleCenterResidueView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C15A2A5EB71000E1D940 /* XPNobleCenterResidueView.m */; }; + 2331C1752A5EB71000E1D940 /* XPNobleUpgradeLevelView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C15B2A5EB71000E1D940 /* XPNobleUpgradeLevelView.m */; }; + 2331C1762A5EB71000E1D940 /* ThemeColor+NobleCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C15D2A5EB71000E1D940 /* ThemeColor+NobleCenter.m */; }; + 2331C1772A5EB71000E1D940 /* XPNobleCenterListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C15E2A5EB71000E1D940 /* XPNobleCenterListViewController.m */; }; + 2331C1782A5EB71000E1D940 /* Api+NobleCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1622A5EB71000E1D940 /* Api+NobleCenter.m */; }; + 2331C17B2A5EB7AB00E1D940 /* XPNobleCenterEntranceView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1792A5EB7AB00E1D940 /* XPNobleCenterEntranceView.m */; }; + 2331C17E2A5ECCF600E1D940 /* XPNobleCenterPayView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C17D2A5ECCF600E1D940 /* XPNobleCenterPayView.m */; }; + 2331C1812A5ECD3800E1D940 /* XPNobleCenterPayCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1802A5ECD3800E1D940 /* XPNobleCenterPayCell.m */; }; + 2331C1AA2A60F32D00E1D940 /* XPCandyTreePresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1842A60F32D00E1D940 /* XPCandyTreePresenter.m */; }; + 2331C1AB2A60F32D00E1D940 /* CandyTreeResultModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1892A60F32D00E1D940 /* CandyTreeResultModel.m */; }; + 2331C1AC2A60F32D00E1D940 /* CandyTreeRecordModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C18A2A60F32D00E1D940 /* CandyTreeRecordModel.m */; }; + 2331C1AD2A60F32D00E1D940 /* XPCandyTreeAnimationModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C18D2A60F32D00E1D940 /* XPCandyTreeAnimationModel.m */; }; + 2331C1AE2A60F32D00E1D940 /* CandyTreeInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1902A60F32D00E1D940 /* CandyTreeInfoModel.m */; }; + 2331C1AF2A60F32D00E1D940 /* XPCandyTreeRankView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1922A60F32D00E1D940 /* XPCandyTreeRankView.m */; }; + 2331C1B02A60F32D00E1D940 /* XPCandyTreeMoreView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1932A60F32D00E1D940 /* XPCandyTreeMoreView.m */; }; + 2331C1B12A60F32D00E1D940 /* XPCandyTreeGiftView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1962A60F32D00E1D940 /* XPCandyTreeGiftView.m */; }; + 2331C1B22A60F32D00E1D940 /* XPCandyTreeEmptyableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C19A2A60F32D00E1D940 /* XPCandyTreeEmptyableViewCell.m */; }; + 2331C1B32A60F32D00E1D940 /* XPCandyTreeMoreRuleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C19B2A60F32D00E1D940 /* XPCandyTreeMoreRuleCell.m */; }; + 2331C1B42A60F32D00E1D940 /* XPCandyTreeRankTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C19C2A60F32D00E1D940 /* XPCandyTreeRankTableViewCell.m */; }; + 2331C1B52A60F32D00E1D940 /* XPCandyTreeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1A12A60F32D00E1D940 /* XPCandyTreeViewController.m */; }; + 2331C1B62A60F32D00E1D940 /* XPCandyTreeInsufficientBalanceView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1A42A60F32D00E1D940 /* XPCandyTreeInsufficientBalanceView.m */; }; + 2331C1B72A60F32D00E1D940 /* XPCandyRankContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1A52A60F32D00E1D940 /* XPCandyRankContainerView.m */; }; + 2331C1B82A60F32D00E1D940 /* XPRoomHalfWebView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1A62A60F32D00E1D940 /* XPRoomHalfWebView.m */; }; + 2331C1B92A60F32D00E1D940 /* Api+CandyTree.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1A82A60F32D00E1D940 /* Api+CandyTree.m */; }; + 2331C1BD2A60F69E00E1D940 /* UILabel+Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1BC2A60F69E00E1D940 /* UILabel+Utils.m */; }; + 23BA165B2A5D2ACF0030C5A3 /* PIBaseAnimationViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 23BA165A2A5D2ACF0030C5A3 /* PIBaseAnimationViewModel.m */; }; 73FFADDC93E195344047A2EC /* Pods_YuMi.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CACF623970097D653132D69A /* Pods_YuMi.framework */; }; - 9B0086C627BA392B0032BD2B /* KellegPhaseRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B0086C527BA392B0032BD2B /* KellegPhaseRegard.m */; }; - 9B0086CA27BA4F570032BD2B /* KellegMiecreoscoopeRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B0086C927BA4F570032BD2B /* KellegMiecreoscoopeRegard.m */; }; - 9B044D9D282D2A6400DE4859 /* YUMIChamberKellegRateImportRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B044D9C282D2A6400DE4859 /* YUMIChamberKellegRateImportRegard.m */; }; - 9B044DA0282D32F700DE4859 /* MiecreoscoopeCallforExtMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B044D9F282D32F700DE4859 /* MiecreoscoopeCallforExtMatrix.m */; }; + 9B0086C627BA392B0032BD2B /* AnchorStageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B0086C527BA392B0032BD2B /* AnchorStageView.m */; }; + 9B0086CA27BA4F570032BD2B /* AnchorMicroView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B0086C927BA4F570032BD2B /* AnchorMicroView.m */; }; + 9B044D9D282D2A6400DE4859 /* XPRoomAnchorRankEnterView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B044D9C282D2A6400DE4859 /* XPRoomAnchorRankEnterView.m */; }; + 9B044DA0282D32F700DE4859 /* MicroInviteExtModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B044D9F282D32F700DE4859 /* MicroInviteExtModel.m */; }; 9B0997A127F19D8A00EB8F14 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 9B0997A027F19D8900EB8F14 /* README.md */; }; 9B0997A327F19DE500EB8F14 /* QGHWDShaders.metal in Sources */ = {isa = PBXBuildFile; fileRef = 9B0997A227F19DE500EB8F14 /* QGHWDShaders.metal */; }; - 9B0E1C5926E77022005D4442 /* BaseNevigationGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B0E1C5826E77022005D4442 /* BaseNevigationGovernancer.m */; }; - 9B17F71827BD150600440843 /* SVGAAnatomiserExecutive.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B17F71727BD150600440843 /* SVGAAnatomiserExecutive.m */; }; + 9B0E1C5926E77022005D4442 /* BaseNavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B0E1C5826E77022005D4442 /* BaseNavigationController.m */; }; + 9B17F71827BD150600440843 /* SVGAParserManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B17F71727BD150600440843 /* SVGAParserManager.m */; }; 9B1B7292280010E8003FACE9 /* Api+FansTeam.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1B7291280010E8003FACE9 /* Api+FansTeam.m */; }; - 9B1B729528002099003FACE9 /* YUMIManeFanaticsSquadRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1B729428002099003FACE9 /* YUMIManeFanaticsSquadRegardGovernancer.m */; }; - 9B1B729828002147003FACE9 /* YUMIManeFanaticsSquadExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1B729728002147003FACE9 /* YUMIManeFanaticsSquadExternalizer.m */; }; - 9B1B729D28002264003FACE9 /* YUMIManeKellegFanaticsSquadMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1B729C28002264003FACE9 /* YUMIManeKellegFanaticsSquadMatrix.m */; }; - 9B1B72A1280023F3003FACE9 /* YUMIManeKellegFanaticsSquadTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1B72A0280023F3003FACE9 /* YUMIManeKellegFanaticsSquadTabulationRegardElement.m */; }; - 9B1B72AC280031DB003FACE9 /* XCombatellegCombatRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1B72AB280031DB003FACE9 /* XCombatellegCombatRegardGovernancer.m */; }; - 9B1B72AF280031F8003FACE9 /* XCombatellegCombatChosenChamberRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1B72AE280031F8003FACE9 /* XCombatellegCombatChosenChamberRegard.m */; }; + 9B1B729528002099003FACE9 /* XPMineFansTeamViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1B729428002099003FACE9 /* XPMineFansTeamViewController.m */; }; + 9B1B729828002147003FACE9 /* XPMineFansTeamPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1B729728002147003FACE9 /* XPMineFansTeamPresenter.m */; }; + 9B1B729D28002264003FACE9 /* XPMineAnchorFansTeamModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1B729C28002264003FACE9 /* XPMineAnchorFansTeamModel.m */; }; + 9B1B72A1280023F3003FACE9 /* XPMineAnchorFansTeamTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1B72A0280023F3003FACE9 /* XPMineAnchorFansTeamTableViewCell.m */; }; + 9B1B72AC280031DB003FACE9 /* XPAnchorPKViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1B72AB280031DB003FACE9 /* XPAnchorPKViewController.m */; }; + 9B1B72AF280031F8003FACE9 /* XPAnchorPKSelectRoomView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1B72AE280031F8003FACE9 /* XPAnchorPKSelectRoomView.m */; }; 9B1B72B528003664003FACE9 /* Api+AnchorPk.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1B72B428003664003FACE9 /* Api+AnchorPk.m */; }; - 9B1B72B828003772003FACE9 /* XCombatellegCombatExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1B72B728003772003FACE9 /* XCombatellegCombatExternalizer.m */; }; - 9B1B72BC28003E06003FACE9 /* XCombatellegCombatTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1B72BB28003E06003FACE9 /* XCombatellegCombatTabulationRegardElement.m */; }; - 9B1B72BF2800422E003FACE9 /* XCombatellegCombatPreadominantRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1B72BE2800422E003FACE9 /* XCombatellegCombatPreadominantRegard.m */; }; - 9B1EF3D227E81C0600554295 /* YUMIManePretendUpwardsIntumesceRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1EF3D127E81C0600554295 /* YUMIManePretendUpwardsIntumesceRegardGovernancer.m */; }; - 9B1EF3D527E8294B00554295 /* YUMIManePretendDispossessAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1EF3D427E8294B00554295 /* YUMIManePretendDispossessAssembletionRegardElement.m */; }; - 9B1FC3D527E49A5D006EFFE0 /* ChatIntumesceMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1FC3D427E49A5D006EFFE0 /* ChatIntumesceMatrix.m */; }; - 9B1FC3D827E49C36006EFFE0 /* YUMIManePretendIntumesceAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1FC3D727E49C36006EFFE0 /* YUMIManePretendIntumesceAssembletionRegardElement.m */; }; - 9B208A362779B50100F9E54A /* PresentMagnificentAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B208A352779B50100F9E54A /* PresentMagnificentAbstractMatrix.m */; }; - 9B2489BC27C4C056006CFB85 /* YUMIManeVacationerDispossessTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B2489BB27C4C056006CFB85 /* YUMIManeVacationerDispossessTabulationRegardElement.m */; }; - 9B2A12DE2783FEDD00CED41B /* ConsumerVipAbstractVo.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B2A12DD2783FEDD00CED41B /* ConsumerVipAbstractVo.m */; }; - 9B2EA7C02804037700ED17BF /* KellegCombatPhaseRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B2EA7BF2804037700ED17BF /* KellegCombatPhaseRegard.m */; }; - 9B2EA7C32804052E00ED17BF /* KellegCombatMiecreoscoopeRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B2EA7C22804052E00ED17BF /* KellegCombatMiecreoscoopeRegard.m */; }; - 9B2EA7C628041EFC00ED17BF /* XCombatellegPkFasciaboardRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B2EA7C528041EFC00ED17BF /* XCombatellegPkFasciaboardRegard.m */; }; - 9B2EA7CC2804245500ED17BF /* XCombatellegCombatFasciaboardConsumerRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B2EA7CB2804245500ED17BF /* XCombatellegCombatFasciaboardConsumerRegard.m */; }; - 9B2F72D028E45A480000E4FA /* YUMIChamberMHTuickCommunicationContainRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B2F72CF28E45A480000E4FA /* YUMIChamberMHTuickCommunicationContainRegard.m */; }; - 9B2F72D328E45C5A0000E4FA /* YUMIChamberMHTuidkCommunicationElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B2F72D228E45C5A0000E4FA /* YUMIChamberMHTuidkCommunicationElement.m */; }; - 9B32A04728881845002009D2 /* YUMIChamberCoupleStatementRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B32A04628881845002009D2 /* YUMIChamberCoupleStatementRegard.m */; }; - 9B335B492925D8A00048A116 /* XCombatellegCombatChosenGenreGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B335B482925D8A00048A116 /* XCombatellegCombatChosenGenreGovernancer.m */; }; - 9B33E3CB27D85379003B0E62 /* UpwardsloadAccurate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B33E3C927D85379003B0E62 /* UpwardsloadAccurate.m */; }; - 9B3A1DF4280571000058E2DD /* XCombatellegCombatCallforRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B3A1DF3280571000058E2DD /* XCombatellegCombatCallforRegard.m */; }; - 9B3C181A292CE4FA003AF543 /* XCombatellegCombatAdaptationRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B3C1819292CE4FA003AF543 /* XCombatellegCombatAdaptationRegard.m */; }; - 9B41D36E282649230048C588 /* YUMIWeekSatelliteRateConsumerMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B41D36D282649230048C588 /* YUMIWeekSatelliteRateConsumerMatrix.m */; }; - 9B42868E28C1AE2D009034D2 /* YUMIAchieveDeficitSheatheRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B42868D28C1AE2D009034D2 /* YUMIAchieveDeficitSheatheRegard.m */; }; - 9B42869228C1AED4009034D2 /* YUMIAchieveDeficitSheatheMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B42869128C1AED4009034D2 /* YUMIAchieveDeficitSheatheMatrix.m */; }; - 9B42869528C1E00A009034D2 /* YUMIDeficitSheatheConsequentMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B42869428C1E00A009034D2 /* YUMIDeficitSheatheConsequentMatrix.m */; }; - 9B42869828C1E06B009034D2 /* YUMIDeficitSheatheMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B42869728C1E06B009034D2 /* YUMIDeficitSheatheMatrix.m */; }; - 9B42869C28C1FD3D009034D2 /* YUMIUnfoildDeficitSheatheElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B42869B28C1FD3D009034D2 /* YUMIUnfoildDeficitSheatheElement.m */; }; - 9B4C5B86292F81FA00CEA41B /* YUMIInterlocutionStatementFanaticsParatiesMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B4C5B85292F81FA00CEA41B /* YUMIInterlocutionStatementFanaticsParatiesMatrix.m */; }; - 9B4D449328F15765002572D5 /* YUMIPresentFortunatePresentPingbackRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B4D449228F15765002572D5 /* YUMIPresentFortunatePresentPingbackRegard.m */; }; - 9B4D449628F15EE7002572D5 /* YUMIPresentWeekSatellitePingbackRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B4D449528F15EE7002572D5 /* YUMIPresentWeekSatellitePingbackRegard.m */; }; - 9B4E920028E57A620033419E /* YUMIPresentIntelligenceGenreRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B4E91FF28E57A620033419E /* YUMIPresentIntelligenceGenreRegard.m */; }; - 9B6B3AAB278C2EA7005551EC /* YUMIChamberMagnificentPrototypeUpwardsRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B6B3AAA278C2EA7005551EC /* YUMIChamberMagnificentPrototypeUpwardsRegard.m */; }; - 9B6E856A281A982A0041A321 /* YUMIChamberEncourageRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E8569281A982A0041A321 /* YUMIChamberEncourageRegard.m */; }; - 9B6E856E281AABAB0041A321 /* YUMIChamberEncourageMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E856D281AABAB0041A321 /* YUMIChamberEncourageMatrix.m */; }; - 9B6E8573281AB9B20041A321 /* YUMIChamberInsideEncourageElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E8572281AB9B20041A321 /* YUMIChamberInsideEncourageElement.m */; }; - 9B6E8577281ABECC0041A321 /* YUMIChamberInsideEncourageDispossessElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E8576281ABECC0041A321 /* YUMIChamberInsideEncourageDispossessElement.m */; }; - 9B734F73288A787000CBDAA9 /* YUMIManeAccountRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B734F72288A787000CBDAA9 /* YUMIManeAccountRegard.m */; }; - 9B734F76288A92FB00CBDAA9 /* YUMIManeFuntionProvisionMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B734F75288A92FB00CBDAA9 /* YUMIManeFuntionProvisionMatrix.m */; }; - 9B7B605B27BB53060070BB72 /* XCombatellegAudienceUpwardsLoudspeakerRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B7B605A27BB53060070BB72 /* XCombatellegAudienceUpwardsLoudspeakerRegard.m */; }; - 9B7B606227BB96E40070BB72 /* YUMIChamberKellegAbstractSolitaireRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B7B606127BB96E40070BB72 /* YUMIChamberKellegAbstractSolitaireRegard.m */; }; - 9B7B606627BBA0EE0070BB72 /* XCombatellegAttentDischargeAbstract.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B7B606527BBA0EE0070BB72 /* XCombatellegAttentDischargeAbstract.m */; }; - 9B7D804A2753783D003DAC0C /* InterlocutionRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B7D80492753783D003DAC0C /* InterlocutionRegardGovernancer.m */; }; - 9B7D804D27537950003DAC0C /* CommunicationElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B7D804C27537950003DAC0C /* CommunicationElement.m */; }; + 9B1B72B828003772003FACE9 /* XPAnchorPKPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1B72B728003772003FACE9 /* XPAnchorPKPresenter.m */; }; + 9B1B72BC28003E06003FACE9 /* XPAnchorPKTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1B72BB28003E06003FACE9 /* XPAnchorPKTableViewCell.m */; }; + 9B1B72BF2800422E003FACE9 /* XPAnchorPKRuleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1B72BE2800422E003FACE9 /* XPAnchorPKRuleView.m */; }; + 9B1EF3D227E81C0600554295 /* XPMineDressUpBubbleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1EF3D127E81C0600554295 /* XPMineDressUpBubbleViewController.m */; }; + 9B1EF3D527E8294B00554295 /* XPMineDressEmptyCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1EF3D427E8294B00554295 /* XPMineDressEmptyCollectionViewCell.m */; }; + 9B1FC3D527E49A5D006EFFE0 /* ChatBubbleModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1FC3D427E49A5D006EFFE0 /* ChatBubbleModel.m */; }; + 9B1FC3D827E49C36006EFFE0 /* XPMineDressBubbleCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B1FC3D727E49C36006EFFE0 /* XPMineDressBubbleCollectionViewCell.m */; }; + 9B208A362779B50100F9E54A /* GiftNobleInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B208A352779B50100F9E54A /* GiftNobleInfoModel.m */; }; + 9B2489BC27C4C056006CFB85 /* XPMineVisitorEmptyTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B2489BB27C4C056006CFB85 /* XPMineVisitorEmptyTableViewCell.m */; }; + 9B2A12DE2783FEDD00CED41B /* UserVipInfoVo.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B2A12DD2783FEDD00CED41B /* UserVipInfoVo.m */; }; + 9B2EA7C02804037700ED17BF /* AnchorPKStageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B2EA7BF2804037700ED17BF /* AnchorPKStageView.m */; }; + 9B2EA7C32804052E00ED17BF /* AnchorPKMicroView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B2EA7C22804052E00ED17BF /* AnchorPKMicroView.m */; }; + 9B2EA7C628041EFC00ED17BF /* XPAnchorPkPanelView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B2EA7C528041EFC00ED17BF /* XPAnchorPkPanelView.m */; }; + 9B2EA7CC2804245500ED17BF /* XPAnchorPKPanelUserView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B2EA7CB2804245500ED17BF /* XPAnchorPKPanelUserView.m */; }; + 9B2F72D028E45A480000E4FA /* XPRoomQuickMessageContainView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B2F72CF28E45A480000E4FA /* XPRoomQuickMessageContainView.m */; }; + 9B2F72D328E45C5A0000E4FA /* XPRoomQuidkMessageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B2F72D228E45C5A0000E4FA /* XPRoomQuidkMessageCell.m */; }; + 9B32A04728881845002009D2 /* XPRoomTagListView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B32A04628881845002009D2 /* XPRoomTagListView.m */; }; + 9B335B492925D8A00048A116 /* XPAnchorPKSelectTypeController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B335B482925D8A00048A116 /* XPAnchorPKSelectTypeController.m */; }; + 9B33E3CB27D85379003B0E62 /* UploadFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B33E3C927D85379003B0E62 /* UploadFile.m */; }; + 9B3A1DF4280571000058E2DD /* XPAnchorPKInviteView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B3A1DF3280571000058E2DD /* XPAnchorPKInviteView.m */; }; + 9B3C181A292CE4FA003AF543 /* XPAnchorPKMatchView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B3C1819292CE4FA003AF543 /* XPAnchorPKMatchView.m */; }; + 9B41D36E282649230048C588 /* XPWeekStarRankUserModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B41D36D282649230048C588 /* XPWeekStarRankUserModel.m */; }; + 9B42868E28C1AE2D009034D2 /* XPReceiveRedPacketView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B42868D28C1AE2D009034D2 /* XPReceiveRedPacketView.m */; }; + 9B42869228C1AED4009034D2 /* XPReceiveRedPacketModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B42869128C1AED4009034D2 /* XPReceiveRedPacketModel.m */; }; + 9B42869528C1E00A009034D2 /* XPRedPacketResultModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B42869428C1E00A009034D2 /* XPRedPacketResultModel.m */; }; + 9B42869828C1E06B009034D2 /* XPRedPacketModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B42869728C1E06B009034D2 /* XPRedPacketModel.m */; }; + 9B42869C28C1FD3D009034D2 /* XPOpenRedPacketCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B42869B28C1FD3D009034D2 /* XPOpenRedPacketCell.m */; }; + 9B4C5B86292F81FA00CEA41B /* XPSessionListFansPartyModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B4C5B85292F81FA00CEA41B /* XPSessionListFansPartyModel.m */; }; + 9B4D449328F15765002572D5 /* XPGiftLuckyGiftBroadcastView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B4D449228F15765002572D5 /* XPGiftLuckyGiftBroadcastView.m */; }; + 9B4D449628F15EE7002572D5 /* XPGiftWeekStarBroadcastView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B4D449528F15EE7002572D5 /* XPGiftWeekStarBroadcastView.m */; }; + 9B4E920028E57A620033419E /* XPGiftHeadTypeView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B4E91FF28E57A620033419E /* XPGiftHeadTypeView.m */; }; + 9B6B3AAB278C2EA7005551EC /* XPRoomNobleLevelUpView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B6B3AAA278C2EA7005551EC /* XPRoomNobleLevelUpView.m */; }; + 9B6E856A281A982A0041A321 /* XPRoomRecommendView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E8569281A982A0041A321 /* XPRoomRecommendView.m */; }; + 9B6E856E281AABAB0041A321 /* XPRoomRecommendModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E856D281AABAB0041A321 /* XPRoomRecommendModel.m */; }; + 9B6E8573281AB9B20041A321 /* XPRoomInsideRecommendCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E8572281AB9B20041A321 /* XPRoomInsideRecommendCell.m */; }; + 9B6E8577281ABECC0041A321 /* XPRoomInsideRecommendEmptyCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E8576281ABECC0041A321 /* XPRoomInsideRecommendEmptyCell.m */; }; + 9B734F73288A787000CBDAA9 /* XPMineAccountView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B734F72288A787000CBDAA9 /* XPMineAccountView.m */; }; + 9B734F76288A92FB00CBDAA9 /* XPMineFuntionItemModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B734F75288A92FB00CBDAA9 /* XPMineFuntionItemModel.m */; }; + 9B7B605B27BB53060070BB72 /* XPAnchorAudienceUpMicView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B7B605A27BB53060070BB72 /* XPAnchorAudienceUpMicView.m */; }; + 9B7B606227BB96E40070BB72 /* XPRoomAnchorInfoCardView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B7B606127BB96E40070BB72 /* XPRoomAnchorInfoCardView.m */; }; + 9B7B606627BBA0EE0070BB72 /* XPAnchorAttentSendInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B7B606527BBA0EE0070BB72 /* XPAnchorAttentSendInfo.m */; }; + 9B7D804A2753783D003DAC0C /* SessionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B7D80492753783D003DAC0C /* SessionViewController.m */; }; + 9B7D804D27537950003DAC0C /* MessageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B7D804C27537950003DAC0C /* MessageCell.m */; }; 9B7D80502753AA9D003DAC0C /* UITableView+NIMScrollToBottom.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B7D804E2753AA9D003DAC0C /* UITableView+NIMScrollToBottom.m */; }; - 9B7D904D287BC5E20033A45E /* KellegChamberScrollRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B7D904C287BC5E20033A45E /* KellegChamberScrollRegard.m */; }; - 9B85B6D7279FDABA00A0A1AC /* YUMIConsumerSolitaireCommunicationSolitaireRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B85B6D6279FDABA00A0A1AC /* YUMIConsumerSolitaireCommunicationSolitaireRegard.m */; }; - 9B85B6DA279FDC5200A0A1AC /* YUMIConsumerSolitaireCommunicationAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B85B6D9279FDC5200A0A1AC /* YUMIConsumerSolitaireCommunicationAssembletionRegardElement.m */; }; - 9B85F3532806AB9A006EDF51 /* XCombatellegCombatConsequentRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B85F3522806AB9A006EDF51 /* XCombatellegCombatConsequentRegard.m */; }; - 9B85F3562806DD8A006EDF51 /* XCombatellegCombatFinishRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B85F3552806DD8A006EDF51 /* XCombatellegCombatFinishRegard.m */; }; - 9B86D87A2817DD8400494FCD /* YUMIChamberImportHideTipRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B86D8792817DD8400494FCD /* YUMIChamberImportHideTipRegard.m */; }; - 9B86D88328192DC000494FCD /* YUMIChamberRateEntranceRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B86D88228192DC000494FCD /* YUMIChamberRateEntranceRegard.m */; }; - 9B86D886281942D200494FCD /* SocialMiecreoscoopeRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B86D885281942D200494FCD /* SocialMiecreoscoopeRegard.m */; }; - 9B87B3CD2926473D00085110 /* YUMIInterlocutionStatementIntelligenceAssistantElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B87B3CC2926473D00085110 /* YUMIInterlocutionStatementIntelligenceAssistantElement.m */; }; - 9B88E20C28C5EB8300D26FBA /* CommunicationSatisfactionDeficitSheatheRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B88E20B28C5EB8300D26FBA /* CommunicationSatisfactionDeficitSheatheRegard.m */; }; - 9B88E20F28C6305400D26FBA /* YUMIChamberHuntforReflectionRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B88E20E28C6305400D26FBA /* YUMIChamberHuntforReflectionRegardGovernancer.m */; }; - 9B8DE0E1289CF02900FB6EC2 /* YUMIPresentCompoundMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B8DE0E0289CF02900FB6EC2 /* YUMIPresentCompoundMatrix.m */; }; - 9B8DE0E4289CF7AA00FB6EC2 /* YUMIChamberPresentCompoundRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B8DE0E3289CF7AA00FB6EC2 /* YUMIChamberPresentCompoundRegard.m */; }; - 9B92A33C2797E38100AD168F /* YUMIManeIntelligenceProvisionTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B92A33B2797E38100AD168F /* YUMIManeIntelligenceProvisionTabulationRegardElement.m */; }; - 9B9BBF83288FBFB3004E2E74 /* YUMIStrangeConsumerChamberPresentRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B9BBF82288FBFB3004E2E74 /* YUMIStrangeConsumerChamberPresentRegard.m */; }; - 9BA3B40B293DCDFD0071DF1C /* YUMIVersionRefurbishMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BA3B40A293DCDFD0071DF1C /* YUMIVersionRefurbishMatrix.m */; }; - 9BA3B40F293DD2F90071DF1C /* YUMIAscensionRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BA3B40E293DD2F90071DF1C /* YUMIAscensionRegard.m */; }; - 9BA812D228BF145700783EA7 /* ClientDeficitSheatheMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BA812D128BF145700783EA7 /* ClientDeficitSheatheMatrix.m */; }; - 9BA812D628BF52E100783EA7 /* YUMIChamberDischargeDeficitSheatheRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BA812D528BF52E100783EA7 /* YUMIChamberDischargeDeficitSheatheRegardGovernancer.m */; }; - 9BA812DD28BF6A7300783EA7 /* YUMIChamberDeficitSheatheExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BA812DC28BF6A7300783EA7 /* YUMIChamberDeficitSheatheExternalizer.m */; }; + 9B7D904D287BC5E20033A45E /* AnchorRoomScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B7D904C287BC5E20033A45E /* AnchorRoomScrollView.m */; }; + 9B85B6D7279FDABA00A0A1AC /* XPUserCardSkillCardView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B85B6D6279FDABA00A0A1AC /* XPUserCardSkillCardView.m */; }; + 9B85B6DA279FDC5200A0A1AC /* XPUserCardSkillCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B85B6D9279FDC5200A0A1AC /* XPUserCardSkillCollectionViewCell.m */; }; + 9B85F3532806AB9A006EDF51 /* XPAnchorPKResultView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B85F3522806AB9A006EDF51 /* XPAnchorPKResultView.m */; }; + 9B85F3562806DD8A006EDF51 /* XPAnchorPKFinishView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B85F3552806DD8A006EDF51 /* XPAnchorPKFinishView.m */; }; + 9B86D87A2817DD8400494FCD /* XPRoomEnterHideTipView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B86D8792817DD8400494FCD /* XPRoomEnterHideTipView.m */; }; + 9B86D88328192DC000494FCD /* XPRoomRankEntranceView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B86D88228192DC000494FCD /* XPRoomRankEntranceView.m */; }; + 9B86D886281942D200494FCD /* SocialMicroView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B86D885281942D200494FCD /* SocialMicroView.m */; }; + 9B87B3CD2926473D00085110 /* XPSessionListHeadFriendCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B87B3CC2926473D00085110 /* XPSessionListHeadFriendCell.m */; }; + 9B88E20C28C5EB8300D26FBA /* MessageContentRedPacketView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B88E20B28C5EB8300D26FBA /* MessageContentRedPacketView.m */; }; + 9B88E20F28C6305400D26FBA /* XPRoomSearchRecordViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B88E20E28C6305400D26FBA /* XPRoomSearchRecordViewController.m */; }; + 9B8DE0E1289CF02900FB6EC2 /* XPGiftCompoundModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B8DE0E0289CF02900FB6EC2 /* XPGiftCompoundModel.m */; }; + 9B8DE0E4289CF7AA00FB6EC2 /* XPRoomGiftCompoundView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B8DE0E3289CF7AA00FB6EC2 /* XPRoomGiftCompoundView.m */; }; + 9B92A33C2797E38100AD168F /* XPMineHeadItemTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B92A33B2797E38100AD168F /* XPMineHeadItemTableViewCell.m */; }; + 9B9BBF83288FBFB3004E2E74 /* XPNewUserRoomGiftView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B9BBF82288FBFB3004E2E74 /* XPNewUserRoomGiftView.m */; }; + 9BA3B40B293DCDFD0071DF1C /* XPVersionUpdateModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BA3B40A293DCDFD0071DF1C /* XPVersionUpdateModel.m */; }; + 9BA3B40F293DD2F90071DF1C /* XPUpgradeView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BA3B40E293DD2F90071DF1C /* XPUpgradeView.m */; }; + 9BA812D228BF145700783EA7 /* ClientRedPacketModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BA812D128BF145700783EA7 /* ClientRedPacketModel.m */; }; + 9BA812D628BF52E100783EA7 /* XPRoomSendRedPacketViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BA812D528BF52E100783EA7 /* XPRoomSendRedPacketViewController.m */; }; + 9BA812DD28BF6A7300783EA7 /* XPRoomRedPacketPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BA812DC28BF6A7300783EA7 /* XPRoomRedPacketPresenter.m */; }; 9BA812E028BF6ABB00783EA7 /* Api+RedPacket.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BA812DF28BF6ABB00783EA7 /* Api+RedPacket.m */; }; - 9BA812E428BF70A600783EA7 /* YUMIChamberDeficitSheathePwordRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BA812E328BF70A600783EA7 /* YUMIChamberDeficitSheathePwordRegard.m */; }; + 9BA812E428BF70A600783EA7 /* XPRoomRedPacketPwdView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BA812E328BF70A600783EA7 /* XPRoomRedPacketPwdView.m */; }; 9BA8A47527C60D9F000365A3 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9BA8A47427C60D9F000365A3 /* AudioToolbox.framework */; }; 9BA8A47727C60DF7000365A3 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9BA8A47627C60DF7000365A3 /* AVFoundation.framework */; }; - 9BAA5FED277A1BBE007453F3 /* YUMIPrivacyRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BAA5FEC277A1BBE007453F3 /* YUMIPrivacyRegardGovernancer.m */; }; - 9BAA5FF0277A23F4007453F3 /* YUMIPermissionsRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BAA5FEF277A23F4007453F3 /* YUMIPermissionsRegardGovernancer.m */; }; - 9BAC92EE28E6989400147DD8 /* YUMIChamberImportpriseDisportRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BAC92ED28E6989400147DD8 /* YUMIChamberImportpriseDisportRegard.m */; }; - 9BAC92F228E6A05600147DD8 /* YUMIChamberImportpriseDisportMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BAC92F128E6A05600147DD8 /* YUMIChamberImportpriseDisportMatrix.m */; }; - 9BAC92F528E6E63000147DD8 /* YUMIChamberInsideOperationElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BAC92F428E6E63000147DD8 /* YUMIChamberInsideOperationElement.m */; }; - 9BB89DC327FE7F3A00586A83 /* XCombatellegFanaticsRelationMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BB89DC227FE7F3A00586A83 /* XCombatellegFanaticsRelationMatrix.m */; }; - 9BB89DC627FEB9E100586A83 /* XCombatellegFanaticsmissionRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BB89DC527FEB9E100586A83 /* XCombatellegFanaticsmissionRegardGovernancer.m */; }; - 9BBC028E2786FA060007C24B /* MagnificentSolitaireMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BBC028D2786FA060007C24B /* MagnificentSolitaireMatrix.m */; }; - 9BBC02912786FC570007C24B /* YUMIManeMagnificentSolitaireTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BBC02902786FC570007C24B /* YUMIManeMagnificentSolitaireTabulationRegardElement.m */; }; - 9BC5C91C277C8A7B007C8719 /* YUMIReleaseWirelessRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BC5C91B277C8A7B007C8719 /* YUMIReleaseWirelessRegardGovernancer.m */; }; - 9BC5C91F277C902B007C8719 /* YUMIReleaseWirelessRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BC5C91E277C902B007C8719 /* YUMIReleaseWirelessRegard.m */; }; - 9BC8C83028090C9200C24F85 /* YUMIChamberKellegRateOriflammeRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BC8C82F28090C9200C24F85 /* YUMIChamberKellegRateOriflammeRegard.m */; }; - 9BC9DAEF27E33B3F009EE409 /* YUMIChamberPresentBrightnessAnatomiser.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BC9DAEE27E33B3F009EE409 /* YUMIChamberPresentBrightnessAnatomiser.m */; }; - 9BCB99A028F571B500466D64 /* YUMIManeAssembleParatiesChamberRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BCB999F28F571B500466D64 /* YUMIManeAssembleParatiesChamberRegardGovernancer.m */; }; - 9BCB99A628F582EC00466D64 /* YUMIManeAssembleChamberCompileElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BCB99A528F582EC00466D64 /* YUMIManeAssembleChamberCompileElement.m */; }; - 9BCD02C72796C02800F396AA /* MiecreoscoopeMagnificentWaveRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BCD02C62796C02800F396AA /* MiecreoscoopeMagnificentWaveRegard.m */; }; - 9BCE6144277D657600CC0358 /* YUMIReleaseWirelessTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BCE6143277D657600CC0358 /* YUMIReleaseWirelessTabulationRegardElement.m */; }; - 9BCFB828289BAC7D0093D863 /* YUMIManeIntelligenceFunctionProvisionProgramming.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BCFB827289BAC7D0093D863 /* YUMIManeIntelligenceFunctionProvisionProgramming.m */; }; - 9BD2ECCE288F829600F5CD9A /* YUMIManeTerminalImpressionRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD2ECCD288F829600F5CD9A /* YUMIManeTerminalImpressionRegardGovernancer.m */; }; - 9BD2ECD2288F833B00F5CD9A /* YUMIManeTerminalImpressionMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD2ECD1288F833B00F5CD9A /* YUMIManeTerminalImpressionMatrix.m */; }; - 9BD2ECD5288F838200F5CD9A /* YUMIManeTerminalImpressionExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD2ECD4288F838200F5CD9A /* YUMIManeTerminalImpressionExternalizer.m */; }; - 9BD2ECDA288F867000F5CD9A /* YUMIManeTerminalImpressionTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD2ECD9288F867000F5CD9A /* YUMIManeTerminalImpressionTabulationRegardElement.m */; }; + 9BAA5FED277A1BBE007453F3 /* XPPrivacyViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BAA5FEC277A1BBE007453F3 /* XPPrivacyViewController.m */; }; + 9BAA5FF0277A23F4007453F3 /* XPPermissionsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BAA5FEF277A23F4007453F3 /* XPPermissionsViewController.m */; }; + 9BAC92EE28E6989400147DD8 /* XPRoomActivityPlayView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BAC92ED28E6989400147DD8 /* XPRoomActivityPlayView.m */; }; + 9BAC92F228E6A05600147DD8 /* XPRoomActivityPlayModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BAC92F128E6A05600147DD8 /* XPRoomActivityPlayModel.m */; }; + 9BAC92F528E6E63000147DD8 /* XPRoomInsideOperationCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BAC92F428E6E63000147DD8 /* XPRoomInsideOperationCell.m */; }; + 9BB89DC327FE7F3A00586A83 /* XPAnchorFansRelationModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BB89DC227FE7F3A00586A83 /* XPAnchorFansRelationModel.m */; }; + 9BB89DC627FEB9E100586A83 /* XPAnchorFansTaskViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BB89DC527FEB9E100586A83 /* XPAnchorFansTaskViewController.m */; }; + 9BBC028E2786FA060007C24B /* NobleCardModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BBC028D2786FA060007C24B /* NobleCardModel.m */; }; + 9BBC02912786FC570007C24B /* XPMineNobleCardTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BBC02902786FC570007C24B /* XPMineNobleCardTableViewCell.m */; }; + 9BC5C91C277C8A7B007C8719 /* XPReleaseRadioViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BC5C91B277C8A7B007C8719 /* XPReleaseRadioViewController.m */; }; + 9BC5C91F277C902B007C8719 /* XPReleaseRadioView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BC5C91E277C902B007C8719 /* XPReleaseRadioView.m */; }; + 9BC8C83028090C9200C24F85 /* XPRoomAnchorRankBannerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BC8C82F28090C9200C24F85 /* XPRoomAnchorRankBannerView.m */; }; + 9BC9DAEF27E33B3F009EE409 /* XPRoomGiftAnimationParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BC9DAEE27E33B3F009EE409 /* XPRoomGiftAnimationParser.m */; }; + 9BCB99A028F571B500466D64 /* XPMineCollectPartyRoomViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BCB999F28F571B500466D64 /* XPMineCollectPartyRoomViewController.m */; }; + 9BCB99A628F582EC00466D64 /* XPMineCollectRoomEditCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BCB99A528F582EC00466D64 /* XPMineCollectRoomEditCell.m */; }; + 9BCD02C72796C02800F396AA /* MicroNobleWaveView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BCD02C62796C02800F396AA /* MicroNobleWaveView.m */; }; + 9BCE6144277D657600CC0358 /* XPReleaseRadioTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BCE6143277D657600CC0358 /* XPReleaseRadioTableViewCell.m */; }; + 9BCFB828289BAC7D0093D863 /* XPMineHeadFunctionItemLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BCFB827289BAC7D0093D863 /* XPMineHeadFunctionItemLayout.m */; }; + 9BD2ECCE288F829600F5CD9A /* XPMineFootPrintViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD2ECCD288F829600F5CD9A /* XPMineFootPrintViewController.m */; }; + 9BD2ECD2288F833B00F5CD9A /* XPMineFootPrintModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD2ECD1288F833B00F5CD9A /* XPMineFootPrintModel.m */; }; + 9BD2ECD5288F838200F5CD9A /* XPMineFootPrintPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD2ECD4288F838200F5CD9A /* XPMineFootPrintPresenter.m */; }; + 9BD2ECDA288F867000F5CD9A /* XPMineFootPrintTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD2ECD9288F867000F5CD9A /* XPMineFootPrintTableViewCell.m */; }; 9BD63FAB277EE885006EB744 /* Api+RoomRadio.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD63FAA277EE885006EB744 /* Api+RoomRadio.m */; }; - 9BD63FAE277EE97A006EB744 /* YUMIReleaseWirelessExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD63FAD277EE97A006EB744 /* YUMIReleaseWirelessExternalizer.m */; }; - 9BD63FB4277EF1B3006EB744 /* YUMIReleaseWirelessMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD63FB3277EF1B3006EB744 /* YUMIReleaseWirelessMatrix.m */; }; - 9BD798B129262434003E03E6 /* YUMIInterlocutionStatementIntelligenceRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD798B029262434003E03E6 /* YUMIInterlocutionStatementIntelligenceRegard.m */; }; - 9BD798B4292632FE003E03E6 /* YUMIInterlocutionStatementIntelligenceProvisionRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD798B3292632FE003E03E6 /* YUMIInterlocutionStatementIntelligenceProvisionRegard.m */; }; - 9BD798B72926362F003E03E6 /* YUMIInterlocutionStatementIntelligenceProvision.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD798B62926362F003E03E6 /* YUMIInterlocutionStatementIntelligenceProvision.m */; }; - 9BD8D4E328911E9900AE03FF /* YUMIManeAssembleChamberStatementRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD8D4E228911E9900AE03FF /* YUMIManeAssembleChamberStatementRegardGovernancer.m */; }; - 9BD8D4E628911F7700AE03FF /* YUMIManeAssembleChamberStatementExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD8D4E528911F7700AE03FF /* YUMIManeAssembleChamberStatementExternalizer.m */; }; - 9BD9A17927A0EC57004186FE /* YUMIManeVacationerExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD9A17827A0EC57004186FE /* YUMIManeVacationerExternalizer.m */; }; - 9BD9A17C27A0EE24004186FE /* YUMIManeVacationerRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD9A17B27A0EE24004186FE /* YUMIManeVacationerRegardGovernancer.m */; }; - 9BD9A18027A0EFC7004186FE /* YUMIManeVacationerTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD9A17F27A0EFC7004186FE /* YUMIManeVacationerTabulationRegardElement.m */; }; - 9BD9A18427A0F128004186FE /* YUMIManeVacationerProvisionMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD9A18327A0F128004186FE /* YUMIManeVacationerProvisionMatrix.m */; }; - 9BD9A18727A120FD004186FE /* YUMIManeVacationerUnReadMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD9A18627A120FD004186FE /* YUMIManeVacationerUnReadMatrix.m */; }; - 9BDA3E7727FD41C200517FE6 /* XCombatellegFanaticsSquadRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BDA3E7627FD41C200517FE6 /* XCombatellegFanaticsSquadRegardGovernancer.m */; }; - 9BDA3E7A27FD43EF00517FE6 /* XCombatellegFanaticsSquadEntranceRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BDA3E7927FD43EF00517FE6 /* XCombatellegFanaticsSquadEntranceRegard.m */; }; - 9BDA3E7D27FD47AB00517FE6 /* XCombatellegFanaticsSquadExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BDA3E7C27FD47AB00517FE6 /* XCombatellegFanaticsSquadExternalizer.m */; }; - 9BE01ACE28925F7D00B50299 /* YUMIManeStrangeConsumerReindictRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE01ACD28925F7D00B50299 /* YUMIManeStrangeConsumerReindictRegard.m */; }; - 9BE01AD128927AC000B50299 /* YUMIPretendUpwardsProcurementRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE01AD028927AC000B50299 /* YUMIPretendUpwardsProcurementRegardGovernancer.m */; }; - 9BE01AD428927E9C00B50299 /* YUMIPretendUpwardsProcurementStatementRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE01AD328927E9C00B50299 /* YUMIPretendUpwardsProcurementStatementRegardGovernancer.m */; }; - 9BE01ADA289296B500B50299 /* YUMIPretendUpwardsProcurementExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE01AD9289296B500B50299 /* YUMIPretendUpwardsProcurementExternalizer.m */; }; - 9BE01ADE2892A66D00B50299 /* PretendUpwardsProcurementMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE01ADD2892A66D00B50299 /* PretendUpwardsProcurementMatrix.m */; }; - 9BE01AE128937DBC00B50299 /* YUMIPretendUpwardsProcurementSolitaireRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE01AE028937DBC00B50299 /* YUMIPretendUpwardsProcurementSolitaireRegardGovernancer.m */; }; - 9BE01AE428937EDE00B50299 /* YUMIPretendUpwardsProcurementAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE01AE328937EDE00B50299 /* YUMIPretendUpwardsProcurementAssembletionRegardElement.m */; }; - 9BE01AE728938AB600B50299 /* YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE01AE628938AB600B50299 /* YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement.m */; }; - 9BE01AEA2893CB4400B50299 /* YUMIPretendHuntforRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE01AE92893CB4400B50299 /* YUMIPretendHuntforRegardGovernancer.m */; }; - 9BE01AED2893D0DF00B50299 /* YUMIPretendProcurementHuntforTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE01AEC2893D0DF00B50299 /* YUMIPretendProcurementHuntforTabulationRegardElement.m */; }; - 9BE01AF02893E31700B50299 /* StrangeConsumerReindictMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE01AEF2893E31700B50299 /* StrangeConsumerReindictMatrix.m */; }; - 9BE01AF72893E7F500B50299 /* YUMIStrangeConsumerReindictAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE01AF62893E7F500B50299 /* YUMIStrangeConsumerReindictAssembletionRegardElement.m */; }; - 9BE2FA90288010D300EF3D83 /* KellegChamberSrollTipRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE2FA8F288010D300EF3D83 /* KellegChamberSrollTipRegard.m */; }; - 9BE570BC28F65B7200D491A5 /* YUMIManeAssembleChamberElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE570BB28F65B7200D491A5 /* YUMIManeAssembleChamberElement.m */; }; - 9BE9F0F927FED12D00667200 /* XCombatellegFanaticsPrivilegeMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE9F0F827FED12D00667200 /* XCombatellegFanaticsPrivilegeMatrix.m */; }; - 9BE9F0FC27FED2E100667200 /* XCombatellegFanaticsJoinMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE9F0FB27FED2E100667200 /* XCombatellegFanaticsJoinMatrix.m */; }; - 9BE9F0FF27FED76500667200 /* XCombatellegFanaticsmissionMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE9F0FE27FED76500667200 /* XCombatellegFanaticsmissionMatrix.m */; }; - 9BE9F10227FEE5C200667200 /* XCombatellegFanaticsmissionSpecificMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE9F10127FEE5C200667200 /* XCombatellegFanaticsmissionSpecificMatrix.m */; }; - 9BE9F10527FF04CF00667200 /* XCombatellegFanaticsmissionTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE9F10427FF04CF00667200 /* XCombatellegFanaticsmissionTabulationRegardElement.m */; }; - 9BF4BEBC28D4182E009CF6C2 /* YUMIUnfoildDeficitSheatheMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BF4BEBB28D4182E009CF6C2 /* YUMIUnfoildDeficitSheatheMatrix.m */; }; - 9BF5192628801D4700B6BE92 /* YUMIThroughoutChamberCombatComputationDownRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BF5192528801D4700B6BE92 /* YUMIThroughoutChamberCombatComputationDownRegard.m */; }; - 9BFB101F2897CC4300B3985E /* XCombatellegSolitaireRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BFB101E2897CC4300B3985E /* XCombatellegSolitaireRegard.m */; }; - 9BFB10222897D68400B3985E /* YUMITabKellegSolitaireMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BFB10212897D68400B3985E /* YUMITabKellegSolitaireMatrix.m */; }; - 9BFE0D8E2898C8C300F53C24 /* XCombatellegSolitaireCommunicationAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BFE0D8D2898C8C300F53C24 /* XCombatellegSolitaireCommunicationAssembletionRegardElement.m */; }; - 9BFE0D922899042600F53C24 /* YUMImissionCompleteTipRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BFE0D912899042600F53C24 /* YUMImissionCompleteTipRegard.m */; }; - 9BFE992E288142FD009DA429 /* ChamberClassifyMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BFE992D288142FD009DA429 /* ChamberClassifyMatrix.m */; }; - E801274027E323C800BAC3F2 /* YUMIChamberCombatRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E801273F27E323C800BAC3F2 /* YUMIChamberCombatRegardGovernancer.m */; }; - E801274327E323E500BAC3F2 /* YUMIChamberCombatExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E801274227E323E500BAC3F2 /* YUMIChamberCombatExternalizer.m */; }; + 9BD63FAE277EE97A006EB744 /* XPReleaseRadioPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD63FAD277EE97A006EB744 /* XPReleaseRadioPresenter.m */; }; + 9BD63FB4277EF1B3006EB744 /* XPReleaseRadioModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD63FB3277EF1B3006EB744 /* XPReleaseRadioModel.m */; }; + 9BD798B129262434003E03E6 /* XPSessionListHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD798B029262434003E03E6 /* XPSessionListHeadView.m */; }; + 9BD798B4292632FE003E03E6 /* XPSessionListHeadItemView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD798B3292632FE003E03E6 /* XPSessionListHeadItemView.m */; }; + 9BD798B72926362F003E03E6 /* XPSessionListHeadItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD798B62926362F003E03E6 /* XPSessionListHeadItem.m */; }; + 9BD8D4E328911E9900AE03FF /* XPMineCollectRoomListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD8D4E228911E9900AE03FF /* XPMineCollectRoomListViewController.m */; }; + 9BD8D4E628911F7700AE03FF /* XPMineCollectRoomListPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD8D4E528911F7700AE03FF /* XPMineCollectRoomListPresenter.m */; }; + 9BD9A17927A0EC57004186FE /* XPMineVisitorPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD9A17827A0EC57004186FE /* XPMineVisitorPresenter.m */; }; + 9BD9A17C27A0EE24004186FE /* XPMineVisitorViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD9A17B27A0EE24004186FE /* XPMineVisitorViewController.m */; }; + 9BD9A18027A0EFC7004186FE /* XPMineVisitorTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD9A17F27A0EFC7004186FE /* XPMineVisitorTableViewCell.m */; }; + 9BD9A18427A0F128004186FE /* XPMineVisitorItemModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD9A18327A0F128004186FE /* XPMineVisitorItemModel.m */; }; + 9BD9A18727A120FD004186FE /* XPMineVisitorUnReadModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD9A18627A120FD004186FE /* XPMineVisitorUnReadModel.m */; }; + 9BDA3E7727FD41C200517FE6 /* XPAnchorFansTeamViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BDA3E7627FD41C200517FE6 /* XPAnchorFansTeamViewController.m */; }; + 9BDA3E7A27FD43EF00517FE6 /* XPAnchorFansTeamEntranceView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BDA3E7927FD43EF00517FE6 /* XPAnchorFansTeamEntranceView.m */; }; + 9BDA3E7D27FD47AB00517FE6 /* XPAnchorFansTeamPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BDA3E7C27FD47AB00517FE6 /* XPAnchorFansTeamPresenter.m */; }; + 9BE01ACE28925F7D00B50299 /* XPMineNewUserRechargeView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE01ACD28925F7D00B50299 /* XPMineNewUserRechargeView.m */; }; + 9BE01AD128927AC000B50299 /* XPDressUpShopViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE01AD028927AC000B50299 /* XPDressUpShopViewController.m */; }; + 9BE01AD428927E9C00B50299 /* XPDressUpShopListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE01AD328927E9C00B50299 /* XPDressUpShopListViewController.m */; }; + 9BE01ADA289296B500B50299 /* XPDressUpShopPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE01AD9289296B500B50299 /* XPDressUpShopPresenter.m */; }; + 9BE01ADE2892A66D00B50299 /* DressUpShopModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE01ADD2892A66D00B50299 /* DressUpShopModel.m */; }; + 9BE01AE128937DBC00B50299 /* XPDressUpShopCardViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE01AE028937DBC00B50299 /* XPDressUpShopCardViewController.m */; }; + 9BE01AE428937EDE00B50299 /* XPDressUpShopCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE01AE328937EDE00B50299 /* XPDressUpShopCollectionViewCell.m */; }; + 9BE01AE728938AB600B50299 /* XPDressUpShopCardTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE01AE628938AB600B50299 /* XPDressUpShopCardTableViewCell.m */; }; + 9BE01AEA2893CB4400B50299 /* XPDressSearchViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE01AE92893CB4400B50299 /* XPDressSearchViewController.m */; }; + 9BE01AED2893D0DF00B50299 /* XPDressShopSearchTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE01AEC2893D0DF00B50299 /* XPDressShopSearchTableViewCell.m */; }; + 9BE01AF02893E31700B50299 /* NewUserRechargeModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE01AEF2893E31700B50299 /* NewUserRechargeModel.m */; }; + 9BE01AF72893E7F500B50299 /* XPNewUserRechargeCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE01AF62893E7F500B50299 /* XPNewUserRechargeCollectionViewCell.m */; }; + 9BE2FA90288010D300EF3D83 /* AnchorRoomSrollTipView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE2FA8F288010D300EF3D83 /* AnchorRoomSrollTipView.m */; }; + 9BE570BC28F65B7200D491A5 /* XPMineCollectRoomCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE570BB28F65B7200D491A5 /* XPMineCollectRoomCell.m */; }; + 9BE9F0F927FED12D00667200 /* XPAnchorFansPrivilegeModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE9F0F827FED12D00667200 /* XPAnchorFansPrivilegeModel.m */; }; + 9BE9F0FC27FED2E100667200 /* XPAnchorFansJoinModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE9F0FB27FED2E100667200 /* XPAnchorFansJoinModel.m */; }; + 9BE9F0FF27FED76500667200 /* XPAnchorFansTaskModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE9F0FE27FED76500667200 /* XPAnchorFansTaskModel.m */; }; + 9BE9F10227FEE5C200667200 /* XPAnchorFansTaskDetailModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE9F10127FEE5C200667200 /* XPAnchorFansTaskDetailModel.m */; }; + 9BE9F10527FF04CF00667200 /* XPAnchorFansTaskTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BE9F10427FF04CF00667200 /* XPAnchorFansTaskTableViewCell.m */; }; + 9BF4BEBC28D4182E009CF6C2 /* XPOpenRedPacketModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BF4BEBB28D4182E009CF6C2 /* XPOpenRedPacketModel.m */; }; + 9BF5192628801D4700B6BE92 /* XPAcrossRoomPKCountDownView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BF5192528801D4700B6BE92 /* XPAcrossRoomPKCountDownView.m */; }; + 9BFB101F2897CC4300B3985E /* XPAnchorCardView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BFB101E2897CC4300B3985E /* XPAnchorCardView.m */; }; + 9BFB10222897D68400B3985E /* XPTabAnchorCardModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BFB10212897D68400B3985E /* XPTabAnchorCardModel.m */; }; + 9BFE0D8E2898C8C300F53C24 /* XPAnchorCardSkillCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BFE0D8D2898C8C300F53C24 /* XPAnchorCardSkillCollectionViewCell.m */; }; + 9BFE0D922899042600F53C24 /* XPTaskCompleteTipView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BFE0D912899042600F53C24 /* XPTaskCompleteTipView.m */; }; + 9BFE992E288142FD009DA429 /* RoomClassifyModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BFE992D288142FD009DA429 /* RoomClassifyModel.m */; }; + E801274027E323C800BAC3F2 /* XPRoomPKViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E801273F27E323C800BAC3F2 /* XPRoomPKViewController.m */; }; + E801274327E323E500BAC3F2 /* XPRoomPKPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E801274227E323E500BAC3F2 /* XPRoomPKPresenter.m */; }; E801274727E3241700BAC3F2 /* Api+RoomPK.m in Sources */ = {isa = PBXBuildFile; fileRef = E801274627E3241700BAC3F2 /* Api+RoomPK.m */; }; - E801274B27E327DA00BAC3F2 /* YUMIChamberCombatGenreTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E801274A27E327DA00BAC3F2 /* YUMIChamberCombatGenreTabulationRegardElement.m */; }; - E801274E27E3280000BAC3F2 /* YUMIChamberCombatVoteTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E801274D27E3280000BAC3F2 /* YUMIChamberCombatVoteTabulationRegardElement.m */; }; - E801275127E3281100BAC3F2 /* YUMIChamberCombatIntratemporalTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E801275027E3281100BAC3F2 /* YUMIChamberCombatIntratemporalTabulationRegardElement.m */; }; - E801275527E3326000BAC3F2 /* YUMIChamberCombatConsumerRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E801275427E3326000BAC3F2 /* YUMIChamberCombatConsumerRegard.m */; }; - E801275827E347FD00BAC3F2 /* ChamberCombatReflectionMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E801275727E347FD00BAC3F2 /* ChamberCombatReflectionMatrix.m */; }; - E80487652717DDD9008595F2 /* YUMIChamberParrotProvision.m in Sources */ = {isa = PBXBuildFile; fileRef = E80487642717DDD9008595F2 /* YUMIChamberParrotProvision.m */; }; + E801274B27E327DA00BAC3F2 /* XPRoomPKTypeTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E801274A27E327DA00BAC3F2 /* XPRoomPKTypeTableViewCell.m */; }; + E801274E27E3280000BAC3F2 /* XPRoomPKVoteTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E801274D27E3280000BAC3F2 /* XPRoomPKVoteTableViewCell.m */; }; + E801275127E3281100BAC3F2 /* XPRoomPKTimeTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E801275027E3281100BAC3F2 /* XPRoomPKTimeTableViewCell.m */; }; + E801275527E3326000BAC3F2 /* XPRoomPKUserView.m in Sources */ = {isa = PBXBuildFile; fileRef = E801275427E3326000BAC3F2 /* XPRoomPKUserView.m */; }; + E801275827E347FD00BAC3F2 /* RoomPKRecordModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E801275727E347FD00BAC3F2 /* RoomPKRecordModel.m */; }; + E80487652717DDD9008595F2 /* XPRoomMenuItem.m in Sources */ = {isa = PBXBuildFile; fileRef = E80487642717DDD9008595F2 /* XPRoomMenuItem.m */; }; E8098CA7282E00920090B9F0 /* Api+Monents.m in Sources */ = {isa = PBXBuildFile; fileRef = E8098CA6282E00920090B9F0 /* Api+Monents.m */; }; - E8098CAA282E03B40090B9F0 /* YUMISeparationsEncourageExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8098CA9282E03B40090B9F0 /* YUMISeparationsEncourageExternalizer.m */; }; - E8098CAE282E07C00090B9F0 /* YUMISeparationsDispossessTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8098CAD282E07C00090B9F0 /* YUMISeparationsDispossessTabulationRegardElement.m */; }; - E8098CB1282E86EF0090B9F0 /* YUMISeparationsSatisfactionRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8098CB0282E86EF0090B9F0 /* YUMISeparationsSatisfactionRegard.m */; }; - E8098CB4282E97550090B9F0 /* YUMIManeBlackStatementExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8098CB3282E97550090B9F0 /* YUMIManeBlackStatementExternalizer.m */; }; - E80A086227F2AC190027B30C /* ChamberCombatSpecificAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E80A086127F2AC190027B30C /* ChamberCombatSpecificAbstractMatrix.m */; }; - E80A086527F318620027B30C /* YUMIChamberCombatDisportingRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E80A086427F318620027B30C /* YUMIChamberCombatDisportingRegard.m */; }; - E80A63DC28B86B9700690914 /* CommunicationSatisfactionSeparationsAutoRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E80A63DB28B86B9700690914 /* CommunicationSatisfactionSeparationsAutoRegard.m */; }; - E80B0712280D0A6700A79F63 /* FanaticsAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E80B0711280D0A6700A79F63 /* FanaticsAbstractMatrix.m */; }; - E80B0734280D740600A79F63 /* CommunicationSatisfactionUnionRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E80B0733280D740600A79F63 /* CommunicationSatisfactionUnionRegard.m */; }; - E80CBDEA27D0C53F001E1EC2 /* YUMIWeakIntratemporalr.m in Sources */ = {isa = PBXBuildFile; fileRef = E80CBDE927D0C53F001E1EC2 /* YUMIWeakIntratemporalr.m */; }; - E80DE4072775665000BE5BCB /* YUMIThresholdReindictAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E80DE4062775665000BE5BCB /* YUMIThresholdReindictAssembletionRegardElement.m */; }; + E8098CAA282E03B40090B9F0 /* XPMonentsRecommendPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8098CA9282E03B40090B9F0 /* XPMonentsRecommendPresenter.m */; }; + E8098CAE282E07C00090B9F0 /* XPMonentsEmptyTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8098CAD282E07C00090B9F0 /* XPMonentsEmptyTableViewCell.m */; }; + E8098CB1282E86EF0090B9F0 /* XPMonentsContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8098CB0282E86EF0090B9F0 /* XPMonentsContentView.m */; }; + E8098CB4282E97550090B9F0 /* XPMineBlackListPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8098CB3282E97550090B9F0 /* XPMineBlackListPresenter.m */; }; + E80A086227F2AC190027B30C /* RoomPKDetailInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E80A086127F2AC190027B30C /* RoomPKDetailInfoModel.m */; }; + E80A086527F318620027B30C /* XPRoomPKPlayingView.m in Sources */ = {isa = PBXBuildFile; fileRef = E80A086427F318620027B30C /* XPRoomPKPlayingView.m */; }; + E80A63DC28B86B9700690914 /* MessageContentMonentsAutoView.m in Sources */ = {isa = PBXBuildFile; fileRef = E80A63DB28B86B9700690914 /* MessageContentMonentsAutoView.m */; }; + E80B0712280D0A6700A79F63 /* FansInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E80B0711280D0A6700A79F63 /* FansInfoModel.m */; }; + E80B0734280D740600A79F63 /* MessageContentGuildView.m in Sources */ = {isa = PBXBuildFile; fileRef = E80B0733280D740600A79F63 /* MessageContentGuildView.m */; }; + E80CBDEA27D0C53F001E1EC2 /* XPWeakTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = E80CBDE927D0C53F001E1EC2 /* XPWeakTimer.m */; }; + E80DE4072775665000BE5BCB /* XPFirstRechargeCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E80DE4062775665000BE5BCB /* XPFirstRechargeCollectionViewCell.m */; }; E80DE40A277568D300BE5BCB /* ThemeColor+FirstRecharge.m in Sources */ = {isa = PBXBuildFile; fileRef = E80DE409277568D300BE5BCB /* ThemeColor+FirstRecharge.m */; }; - E80DE40D2775ABA500BE5BCB /* YUMIThresholdReindictFlowProgramming.m in Sources */ = {isa = PBXBuildFile; fileRef = E80DE40C2775ABA500BE5BCB /* YUMIThresholdReindictFlowProgramming.m */; }; - E80DE4102775C34E00BE5BCB /* YUMIThresholdReindictSuccessRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E80DE40F2775C34E00BE5BCB /* YUMIThresholdReindictSuccessRegard.m */; }; - E80E09972A40B5DD00CD2BE7 /* YUMIConfectioneryTimberExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E09712A40B5DD00CD2BE7 /* YUMIConfectioneryTimberExternalizer.m */; }; - E80E09982A40B5DD00CD2BE7 /* ConfectioneryTimberConsequentMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E09762A40B5DD00CD2BE7 /* ConfectioneryTimberConsequentMatrix.m */; }; - E80E09992A40B5DD00CD2BE7 /* ConfectioneryTimberReflectionMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E09772A40B5DD00CD2BE7 /* ConfectioneryTimberReflectionMatrix.m */; }; - E80E099A2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberBrightnessMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E097A2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberBrightnessMatrix.m */; }; - E80E099B2A40B5DD00CD2BE7 /* ConfectioneryTimberAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E097D2A40B5DD00CD2BE7 /* ConfectioneryTimberAbstractMatrix.m */; }; - E80E099C2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberRateRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E097F2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberRateRegard.m */; }; - E80E099D2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberFurthaerRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E09802A40B5DD00CD2BE7 /* YUMIConfectioneryTimberFurthaerRegard.m */; }; - E80E099E2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberPresentRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E09832A40B5DD00CD2BE7 /* YUMIConfectioneryTimberPresentRegard.m */; }; - E80E099F2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberDispossessableRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E09872A40B5DD00CD2BE7 /* YUMIConfectioneryTimberDispossessableRegardElement.m */; }; - E80E09A02A40B5DD00CD2BE7 /* YUMIConfectioneryTimberFurthaerPreadominantElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E09882A40B5DD00CD2BE7 /* YUMIConfectioneryTimberFurthaerPreadominantElement.m */; }; - E80E09A12A40B5DD00CD2BE7 /* YUMIConfectioneryTimberRateTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E09892A40B5DD00CD2BE7 /* YUMIConfectioneryTimberRateTabulationRegardElement.m */; }; - E80E09A22A40B5DD00CD2BE7 /* YUMIConfectioneryTimberRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E098E2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberRegardGovernancer.m */; }; - E80E09A32A40B5DD00CD2BE7 /* YUMIConfectioneryTimberInsufficientBalanceRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E09912A40B5DD00CD2BE7 /* YUMIConfectioneryTimberInsufficientBalanceRegard.m */; }; - E80E09A42A40B5DD00CD2BE7 /* YUMIConfectioneryRateAccommodatedRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E09922A40B5DD00CD2BE7 /* YUMIConfectioneryRateAccommodatedRegard.m */; }; - E80E09A52A40B5DD00CD2BE7 /* YUMIChamberHalfTissueRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E09932A40B5DD00CD2BE7 /* YUMIChamberHalfTissueRegard.m */; }; - E80E09A62A40B5DD00CD2BE7 /* Api+CandyTree.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E09952A40B5DD00CD2BE7 /* Api+CandyTree.m */; }; + E80DE40D2775ABA500BE5BCB /* XPFirstRechargeFlowLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = E80DE40C2775ABA500BE5BCB /* XPFirstRechargeFlowLayout.m */; }; + E80DE4102775C34E00BE5BCB /* XPFirstRechargeSuccessView.m in Sources */ = {isa = PBXBuildFile; fileRef = E80DE40F2775C34E00BE5BCB /* XPFirstRechargeSuccessView.m */; }; E80E09A92A40B70100CD2BE7 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = E80E09AB2A40B70100CD2BE7 /* Localizable.strings */; }; - E80E09AE2A41336500CD2BE7 /* YUMITissueRegardNevRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E09AC2A41336500CD2BE7 /* YUMITissueRegardNevRegard.m */; }; + E80E09AE2A41336500CD2BE7 /* XPWebViewNavView.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E09AC2A41336500CD2BE7 /* XPWebViewNavView.m */; }; E80E09B02A41573700CD2BE7 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = E80E09AF2A41573700CD2BE7 /* GoogleService-Info.plist */; }; - E80E09B32A42071D00CD2BE7 /* YUMIChamberSatelliteKitchenOriflammeRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E09B22A42071D00CD2BE7 /* YUMIChamberSatelliteKitchenOriflammeRegard.m */; }; - E80E09B62A42078F00CD2BE7 /* YUMIChamberSatelliteKitchenMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E09B52A42078F00CD2BE7 /* YUMIChamberSatelliteKitchenMatrix.m */; }; + E80E09B32A42071D00CD2BE7 /* XPRoomStarKitchenBannerView.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E09B22A42071D00CD2BE7 /* XPRoomStarKitchenBannerView.m */; }; + E80E09B62A42078F00CD2BE7 /* XPRoomStarKitchenModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E09B52A42078F00CD2BE7 /* XPRoomStarKitchenModel.m */; }; E80E2377299A47F60013FD40 /* AESUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E2376299A47F60013FD40 /* AESUtils.m */; }; - E80E900C27E0358900434B90 /* YUMIChamberMotifPrecautiousRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E900B27E0358900434B90 /* YUMIChamberMotifPrecautiousRegard.m */; }; - E80EC80A28ACD84000D133C5 /* MHTSpiritDirectorateRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E80EC74C28ACD84000D133C5 /* MHTSpiritDirectorateRegard.m */; }; - E80EC80B28ACD84000D133C5 /* MHTIntrojectionObstacleRegardDispositionuration.m in Sources */ = {isa = PBXBuildFile; fileRef = E80EC74E28ACD84000D133C5 /* MHTIntrojectionObstacleRegardDispositionuration.m */; }; - E80EC80C28ACD84000D133C5 /* UITextView+MHTSpirit.m in Sources */ = {isa = PBXBuildFile; fileRef = E80EC74F28ACD84000D133C5 /* UITextView+MHTSpirit.m */; }; - E80EC80D28ACD84000D133C5 /* MHTIntrojectionObstacleRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E80EC75028ACD84000D133C5 /* MHTIntrojectionObstacleRegard.m */; }; - E80EC80E28ACD84000D133C5 /* MHTKeyboardBaseExecutive.m in Sources */ = {isa = PBXBuildFile; fileRef = E80EC75128ACD84000D133C5 /* MHTKeyboardBaseExecutive.m */; }; - E80EC80F28ACD84000D133C5 /* MHTSpirit.m in Sources */ = {isa = PBXBuildFile; fileRef = E80EC75228ACD84000D133C5 /* MHTSpirit.m */; }; - E80EC81028ACD84000D133C5 /* MHTExtendDirectorateRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E80EC75528ACD84000D133C5 /* MHTExtendDirectorateRegard.m */; }; - E80EC81128ACD84000D133C5 /* MHTSpiritFacilitater.m in Sources */ = {isa = PBXBuildFile; fileRef = E80EC75828ACD84000D133C5 /* MHTSpiritFacilitater.m */; }; - E80EC81228ACD84000D133C5 /* MHTSpiritAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = E80EC75D28ACD84000D133C5 /* MHTSpiritAttachment.m */; }; - E80EC81328ACD84000D133C5 /* MHTKeyboardExecutive.m in Sources */ = {isa = PBXBuildFile; fileRef = E80EC75E28ACD84000D133C5 /* MHTKeyboardExecutive.m */; }; + E80E900C27E0358900434B90 /* XPRoomTopicAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = E80E900B27E0358900434B90 /* XPRoomTopicAlertView.m */; }; + E80EC80A28ACD84000D133C5 /* QEmotionBoardView.m in Sources */ = {isa = PBXBuildFile; fileRef = E80EC74C28ACD84000D133C5 /* QEmotionBoardView.m */; }; + E80EC80B28ACD84000D133C5 /* QInputBarViewConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = E80EC74E28ACD84000D133C5 /* QInputBarViewConfiguration.m */; }; + E80EC80C28ACD84000D133C5 /* UITextView+QEmotion.m in Sources */ = {isa = PBXBuildFile; fileRef = E80EC74F28ACD84000D133C5 /* UITextView+QEmotion.m */; }; + E80EC80D28ACD84000D133C5 /* QInputBarView.m in Sources */ = {isa = PBXBuildFile; fileRef = E80EC75028ACD84000D133C5 /* QInputBarView.m */; }; + E80EC80E28ACD84000D133C5 /* QKeyboardBaseManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E80EC75128ACD84000D133C5 /* QKeyboardBaseManager.m */; }; + E80EC80F28ACD84000D133C5 /* QEmotion.m in Sources */ = {isa = PBXBuildFile; fileRef = E80EC75228ACD84000D133C5 /* QEmotion.m */; }; + E80EC81028ACD84000D133C5 /* QExtendBoardView.m in Sources */ = {isa = PBXBuildFile; fileRef = E80EC75528ACD84000D133C5 /* QExtendBoardView.m */; }; + E80EC81128ACD84000D133C5 /* QEmotionHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = E80EC75828ACD84000D133C5 /* QEmotionHelper.m */; }; + E80EC81228ACD84000D133C5 /* QEmotionAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = E80EC75D28ACD84000D133C5 /* QEmotionAttachment.m */; }; + E80EC81328ACD84000D133C5 /* QKeyboardManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E80EC75E28ACD84000D133C5 /* QKeyboardManager.m */; }; E80EC81428ACD84000D133C5 /* emoji_138@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = E80EC76228ACD84000D133C5 /* emoji_138@2x.png */; }; E80EC81528ACD84000D133C5 /* emoji_145@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = E80EC76328ACD84000D133C5 /* emoji_145@2x.png */; }; E80EC81628ACD84000D133C5 /* emoji_126@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = E80EC76428ACD84000D133C5 /* emoji_126@2x.png */; }; @@ -571,685 +532,684 @@ E80EC8B928ACD84100D133C5 /* emoji_164@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = E80EC80728ACD84000D133C5 /* emoji_164@2x.png */; }; E80EC8BA28ACD84100D133C5 /* emoji.plist in Resources */ = {isa = PBXBuildFile; fileRef = E80EC80828ACD84000D133C5 /* emoji.plist */; }; E80EC8BF28ACDB2A00D133C5 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E80EC8BE28ACDB2A00D133C5 /* Assets.xcassets */; }; - E80EC8C228ACF97A00D133C5 /* MHTESentimentIndicateRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E80EC8C128ACF97A00D133C5 /* MHTESentimentIndicateRegard.m */; }; - E81060D9298761A300B772F0 /* CommunicationBaseMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E81060D8298761A300B772F0 /* CommunicationBaseMatrix.m */; }; - E81060DC298761F100B772F0 /* CommunicationEssayMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E81060DB298761F100B772F0 /* CommunicationEssayMatrix.m */; }; - E81060DF29876D3A00B772F0 /* CommunicationIntratemporalMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E81060DE29876D3A00B772F0 /* CommunicationIntratemporalMatrix.m */; }; - E81060E229876E9100B772F0 /* CommunicationIndicateMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E81060E129876E9100B772F0 /* CommunicationIndicateMatrix.m */; }; - E81060E529876FF300B772F0 /* CommunicationVocalmusicMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E81060E429876FF300B772F0 /* CommunicationVocalmusicMatrix.m */; }; - E81060E82987720F00B772F0 /* CommunicationUnSupportMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E81060E72987720F00B772F0 /* CommunicationUnSupportMatrix.m */; }; - E81060EB2987BE8300B772F0 /* CommunicationPresentMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E81060EA2987BE8300B772F0 /* CommunicationPresentMatrix.m */; }; - E81060EE2987C35700B772F0 /* CommunicationEssayClickMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E81060ED2987C35700B772F0 /* CommunicationEssayClickMatrix.m */; }; - E81060F12987C52B00B772F0 /* CommunicationUnionMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E81060F02987C52B00B772F0 /* CommunicationUnionMatrix.m */; }; - E81060F42987C6B200B772F0 /* CommunicationUnfoildEnergeticMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E81060F32987C6B200B772F0 /* CommunicationUnfoildEnergeticMatrix.m */; }; - E81060F72987C8A700B772F0 /* CommunicationApplicationParaticipationMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E81060F62987C8A700B772F0 /* CommunicationApplicationParaticipationMatrix.m */; }; - E81060FD2987CC9100B772F0 /* CommunicationPrototypeAscensionMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E81060FC2987CC9100B772F0 /* CommunicationPrototypeAscensionMatrix.m */; }; - E81061002987CDCC00B772F0 /* CommunicationTweetMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E81060FF2987CDCC00B772F0 /* CommunicationTweetMatrix.m */; }; - E81061032987CFCE00B772F0 /* CommunicationCommunicationSolitaireMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E81061022987CFCE00B772F0 /* CommunicationCommunicationSolitaireMatrix.m */; }; - E81125C4296E57B7000D9804 /* MHTinputAppearanceRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E81125C3296E57B7000D9804 /* MHTinputAppearanceRegard.m */; }; - E81125C7296E596D000D9804 /* MHTIntrojectionAppearancetElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E81125C6296E596D000D9804 /* MHTIntrojectionAppearancetElement.m */; }; - E81125CA296E606F000D9804 /* MHTAppearanceIndicateMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E81125C9296E606F000D9804 /* MHTAppearanceIndicateMatrix.m */; }; - E811FFF72742367B00918544 /* YUMIPresentDispossessAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E811FFF62742367B00918544 /* YUMIPresentDispossessAssembletionRegardElement.m */; }; - E8133916273E532D00708B66 /* YUMIPresentProvisionAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8133915273E532D00708B66 /* YUMIPresentProvisionAssembletionRegardElement.m */; }; - E81366E326F0A1FC0076364C /* SurmountDilemmaMobileRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E81366E226F0A1FC0076364C /* SurmountDilemmaMobileRegardGovernancer.m */; }; + E80EC8C228ACF97A00D133C5 /* QEEmotionImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = E80EC8C128ACF97A00D133C5 /* QEEmotionImageView.m */; }; + E81060D9298761A300B772F0 /* MessageBaseModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E81060D8298761A300B772F0 /* MessageBaseModel.m */; }; + E81060DC298761F100B772F0 /* MessageTextModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E81060DB298761F100B772F0 /* MessageTextModel.m */; }; + E81060DF29876D3A00B772F0 /* MessageTimeModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E81060DE29876D3A00B772F0 /* MessageTimeModel.m */; }; + E81060E229876E9100B772F0 /* MessageImageModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E81060E129876E9100B772F0 /* MessageImageModel.m */; }; + E81060E529876FF300B772F0 /* MessageAudioModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E81060E429876FF300B772F0 /* MessageAudioModel.m */; }; + E81060E82987720F00B772F0 /* MessageUnSupportModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E81060E72987720F00B772F0 /* MessageUnSupportModel.m */; }; + E81060EB2987BE8300B772F0 /* MessageGiftModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E81060EA2987BE8300B772F0 /* MessageGiftModel.m */; }; + E81060EE2987C35700B772F0 /* MessageTextClickModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E81060ED2987C35700B772F0 /* MessageTextClickModel.m */; }; + E81060F12987C52B00B772F0 /* MessageGuildModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E81060F02987C52B00B772F0 /* MessageGuildModel.m */; }; + E81060F42987C6B200B772F0 /* MessageOpenLiveModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E81060F32987C6B200B772F0 /* MessageOpenLiveModel.m */; }; + E81060F72987C8A700B772F0 /* MessageApplicationShareModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E81060F62987C8A700B772F0 /* MessageApplicationShareModel.m */; }; + E81060FD2987CC9100B772F0 /* MessageLevelUpgradeModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E81060FC2987CC9100B772F0 /* MessageLevelUpgradeModel.m */; }; + E81061002987CDCC00B772F0 /* MessageTweetModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E81060FF2987CDCC00B772F0 /* MessageTweetModel.m */; }; + E81061032987CFCE00B772F0 /* MessageSkillCardModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E81061022987CFCE00B772F0 /* MessageSkillCardModel.m */; }; + E81125C4296E57B7000D9804 /* QinputPhotoView.m in Sources */ = {isa = PBXBuildFile; fileRef = E81125C3296E57B7000D9804 /* QinputPhotoView.m */; }; + E81125C7296E596D000D9804 /* QInputPhototCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E81125C6296E596D000D9804 /* QInputPhototCell.m */; }; + E81125CA296E606F000D9804 /* QPhotoImageModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E81125C9296E606F000D9804 /* QPhotoImageModel.m */; }; + E811FFF72742367B00918544 /* XPGiftEmptyCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E811FFF62742367B00918544 /* XPGiftEmptyCollectionViewCell.m */; }; + E8133916273E532D00708B66 /* XPGiftItemCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8133915273E532D00708B66 /* XPGiftItemCollectionViewCell.m */; }; + E81366E326F0A1FC0076364C /* LoginBindPhoneViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E81366E226F0A1FC0076364C /* LoginBindPhoneViewController.m */; }; E81366E726F0A49E0076364C /* NSString+Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = E81366E626F0A49E0076364C /* NSString+Utils.m */; }; - E81366F326F0B7C80076364C /* SurmountFullAbstractRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E81366F226F0B7C80076364C /* SurmountFullAbstractRegardGovernancer.m */; }; - E81366F626F0C0DF0076364C /* SurmountFullAbstractExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E81366F526F0C0DF0076364C /* SurmountFullAbstractExternalizer.m */; }; - E81366F826F0C12A0076364C /* SurmountFullAbstractCeremony.h in Sources */ = {isa = PBXBuildFile; fileRef = E81366F726F0C0F60076364C /* SurmountFullAbstractCeremony.h */; }; + E81366F326F0B7C80076364C /* LoginFullInfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E81366F226F0B7C80076364C /* LoginFullInfoViewController.m */; }; + E81366F626F0C0DF0076364C /* LoginFullInfoPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E81366F526F0C0DF0076364C /* LoginFullInfoPresenter.m */; }; + E81366F826F0C12A0076364C /* LoginFullInfoProtocol.h in Sources */ = {isa = PBXBuildFile; fileRef = E81366F726F0C0F60076364C /* LoginFullInfoProtocol.h */; }; E81366FC26F0D2980076364C /* UIButton+EnlargeTouchArea.m in Sources */ = {isa = PBXBuildFile; fileRef = E81366FA26F0D2980076364C /* UIButton+EnlargeTouchArea.m */; }; - E816C11527608A7500C84014 /* YUMIChamberMiniExecutive.m in Sources */ = {isa = PBXBuildFile; fileRef = E816C11427608A7500C84014 /* YUMIChamberMiniExecutive.m */; }; - E818DD1C2A4896EE00F163F7 /* YUMISurmountAraeRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E818DD1B2A4896EE00F163F7 /* YUMISurmountAraeRegardGovernancer.m */; }; - E818DD1F2A48974300F163F7 /* SurmountAreaMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E818DD1E2A48974300F163F7 /* SurmountAreaMatrix.m */; }; - E818DD222A48977F00F163F7 /* YUMISurmountAreaTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E818DD212A48977F00F163F7 /* YUMISurmountAreaTabulationRegardElement.m */; }; - E818E348286ECA4B005EDF68 /* YUMISeparationsAnnounceRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E818E347286ECA4B005EDF68 /* YUMISeparationsAnnounceRegardGovernancer.m */; }; - E818E34B286ECABF005EDF68 /* YUMISeparationsAnnounceExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E818E34A286ECABF005EDF68 /* YUMISeparationsAnnounceExternalizer.m */; }; - E818E34F286EDF72005EDF68 /* YUMISeparationsAnnounceAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E818E34E286EDF72005EDF68 /* YUMISeparationsAnnounceAssembletionRegardElement.m */; }; - E81A652B2834E4F600F55894 /* YUMISeparationsConsiderationRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E81A652A2834E4F600F55894 /* YUMISeparationsConsiderationRegardGovernancer.m */; }; - E81A65312834E53600F55894 /* YUMISeparationsRecentlyRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E81A65302834E53600F55894 /* YUMISeparationsRecentlyRegardGovernancer.m */; }; - E81A653F283511BE00F55894 /* YUMISeparationsCoactiveRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E81A653E283511BE00F55894 /* YUMISeparationsCoactiveRegardGovernancer.m */; }; - E81A65422835120200F55894 /* YUMISeparationsCoactiveExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E81A65412835120200F55894 /* YUMISeparationsCoactiveExternalizer.m */; }; - E81A6546283519CA00F55894 /* SeparationsMotifMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E81A6545283519CA00F55894 /* SeparationsMotifMatrix.m */; }; - E81A654928351B9500F55894 /* YUMISeparationsEncourageIntelligencerRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E81A654828351B9500F55894 /* YUMISeparationsEncourageIntelligencerRegard.m */; }; - E81A654C28351D9900F55894 /* YUMISeparationsMotifAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E81A654B28351D9900F55894 /* YUMISeparationsMotifAssembletionRegardElement.m */; }; - E81AF32527F1D5B8003B9E43 /* YUMIChamberCombatProgressRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E81AF32427F1D5B8003B9E43 /* YUMIChamberCombatProgressRegard.m */; }; - E81AF32827F1EE69003B9E43 /* YUMIChamberCombatFasciaboardConsumerRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E81AF32727F1EE69003B9E43 /* YUMIChamberCombatFasciaboardConsumerRegard.m */; }; - E81C1B1C27705F6B0020D1E4 /* YUMIScheduleLoudspeakerExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E81C1B1B27705F6B0020D1E4 /* YUMIScheduleLoudspeakerExternalizer.m */; }; - E81C1B1F27705F7A0020D1E4 /* YUMIScheduleLoudspeakerRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E81C1B1E27705F7A0020D1E4 /* YUMIScheduleLoudspeakerRegardGovernancer.m */; }; + E816C11527608A7500C84014 /* XPRoomMiniManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E816C11427608A7500C84014 /* XPRoomMiniManager.m */; }; + E818DD1C2A4896EE00F163F7 /* XPLoginAraeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E818DD1B2A4896EE00F163F7 /* XPLoginAraeViewController.m */; }; + E818DD1F2A48974300F163F7 /* LoginAreaModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E818DD1E2A48974300F163F7 /* LoginAreaModel.m */; }; + E818DD222A48977F00F163F7 /* XPLoginAreaTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E818DD212A48977F00F163F7 /* XPLoginAreaTableViewCell.m */; }; + E818E348286ECA4B005EDF68 /* XPMonentsPublishViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E818E347286ECA4B005EDF68 /* XPMonentsPublishViewController.m */; }; + E818E34B286ECABF005EDF68 /* XPMonentsPublishPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E818E34A286ECABF005EDF68 /* XPMonentsPublishPresenter.m */; }; + E818E34F286EDF72005EDF68 /* XPMonentsPublishCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E818E34E286EDF72005EDF68 /* XPMonentsPublishCollectionViewCell.m */; }; + E81A652B2834E4F600F55894 /* XPMonentsAttentionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E81A652A2834E4F600F55894 /* XPMonentsAttentionViewController.m */; }; + E81A65312834E53600F55894 /* XPMonentsLatestViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E81A65302834E53600F55894 /* XPMonentsLatestViewController.m */; }; + E81A653F283511BE00F55894 /* XPMonentsInteractiveViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E81A653E283511BE00F55894 /* XPMonentsInteractiveViewController.m */; }; + E81A65422835120200F55894 /* XPMonentsInteractivePresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E81A65412835120200F55894 /* XPMonentsInteractivePresenter.m */; }; + E81A6546283519CA00F55894 /* MonentsTopicModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E81A6545283519CA00F55894 /* MonentsTopicModel.m */; }; + E81A654928351B9500F55894 /* XPMonentsRecommendHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = E81A654828351B9500F55894 /* XPMonentsRecommendHeaderView.m */; }; + E81A654C28351D9900F55894 /* XPMonentsTopicCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E81A654B28351D9900F55894 /* XPMonentsTopicCollectionViewCell.m */; }; + E81AF32527F1D5B8003B9E43 /* XPRoomPKProgressView.m in Sources */ = {isa = PBXBuildFile; fileRef = E81AF32427F1D5B8003B9E43 /* XPRoomPKProgressView.m */; }; + E81AF32827F1EE69003B9E43 /* XPRoomPKPanelUserView.m in Sources */ = {isa = PBXBuildFile; fileRef = E81AF32727F1EE69003B9E43 /* XPRoomPKPanelUserView.m */; }; + E81C1B1C27705F6B0020D1E4 /* XPArrangeMicPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E81C1B1B27705F6B0020D1E4 /* XPArrangeMicPresenter.m */; }; + E81C1B1F27705F7A0020D1E4 /* XPArrangeMicViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E81C1B1E27705F7A0020D1E4 /* XPArrangeMicViewController.m */; }; E81C1B2227705F950020D1E4 /* Api+ArrangeMic.m in Sources */ = {isa = PBXBuildFile; fileRef = E81C1B2127705F950020D1E4 /* Api+ArrangeMic.m */; }; - E81C1B262770663B0020D1E4 /* YUMIScheduleLoudspeakerTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E81C1B252770663B0020D1E4 /* YUMIScheduleLoudspeakerTabulationRegardElement.m */; }; - E81C1B29277069DD0020D1E4 /* YUMIScheduleLoudspeakerDispossessTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E81C1B28277069DD0020D1E4 /* YUMIScheduleLoudspeakerDispossessTabulationRegardElement.m */; }; - E81C1B2C27706E5C0020D1E4 /* ScheduleLoudspeakerMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E81C1B2B27706E5C0020D1E4 /* ScheduleLoudspeakerMatrix.m */; }; - E81C1B2F277071670020D1E4 /* YUMIScheduleLoudspeakerAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E81C1B2E277071670020D1E4 /* YUMIScheduleLoudspeakerAbstractMatrix.m */; }; + E81C1B262770663B0020D1E4 /* XPArrangeMicTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E81C1B252770663B0020D1E4 /* XPArrangeMicTableViewCell.m */; }; + E81C1B29277069DD0020D1E4 /* XPArrangeMicEmptyTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E81C1B28277069DD0020D1E4 /* XPArrangeMicEmptyTableViewCell.m */; }; + E81C1B2C27706E5C0020D1E4 /* ArrangeMicModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E81C1B2B27706E5C0020D1E4 /* ArrangeMicModel.m */; }; + E81C1B2F277071670020D1E4 /* XPArrangeMicInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E81C1B2E277071670020D1E4 /* XPArrangeMicInfoModel.m */; }; E81C278C26EAFAF60031E639 /* Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = E81C278926EAFAF60031E639 /* Base64.m */; }; E81C278D26EAFAF60031E639 /* DESEncrypt.m in Sources */ = {isa = PBXBuildFile; fileRef = E81C278B26EAFAF60031E639 /* DESEncrypt.m */; }; - E81C279626EB39CC0031E639 /* SurmountForgetCiphercodeExternalize.m in Sources */ = {isa = PBXBuildFile; fileRef = E81C279526EB39CC0031E639 /* SurmountForgetCiphercodeExternalize.m */; }; - E81C279826EB3AC40031E639 /* SurmountForgetCiphercodeCeremony.h in Sources */ = {isa = PBXBuildFile; fileRef = E81C279726EB39E10031E639 /* SurmountForgetCiphercodeCeremony.h */; }; + E81C279626EB39CC0031E639 /* LoginForgetPasswordPresent.m in Sources */ = {isa = PBXBuildFile; fileRef = E81C279526EB39CC0031E639 /* LoginForgetPasswordPresent.m */; }; + E81C279826EB3AC40031E639 /* LoginForgetPasswordProtocol.h in Sources */ = {isa = PBXBuildFile; fileRef = E81C279726EB39E10031E639 /* LoginForgetPasswordProtocol.h */; }; E81C279D26EEEC620031E639 /* YUMIConstant.m in Sources */ = {isa = PBXBuildFile; fileRef = E81C279C26EEEC620031E639 /* YUMIConstant.m */; }; E81C27A026EEF83D0031E639 /* YUMIHtmlUrl.m in Sources */ = {isa = PBXBuildFile; fileRef = E81C279F26EEF83D0031E639 /* YUMIHtmlUrl.m */; }; E81C27A226EF23490031E639 /* YUMINNNN.h in Sources */ = {isa = PBXBuildFile; fileRef = E81C27A126EF23370031E639 /* YUMINNNN.h */; }; - E81C27AB26EF2D920031E639 /* ThirdConsumerAbstract.m in Sources */ = {isa = PBXBuildFile; fileRef = E81C27AA26EF2D920031E639 /* ThirdConsumerAbstract.m */; }; + E81C27AB26EF2D920031E639 /* ThirdUserInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = E81C27AA26EF2D920031E639 /* ThirdUserInfo.m */; }; E81C27AE26EF39AB0031E639 /* AppDelegate+ThirdConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = E81C27AD26EF39AB0031E639 /* AppDelegate+ThirdConfig.m */; }; - E81D58822720082A003063FE /* MiecreoscoopeWaveRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E81D58812720082A003063FE /* MiecreoscoopeWaveRegard.m */; }; - E81DCCCD282B63B40039E5C5 /* YUMISeparationsRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E81DCCCC282B63B40039E5C5 /* YUMISeparationsRegardGovernancer.m */; }; - E81DCCD0282B63FD0039E5C5 /* YUMISeparationsEncourageRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E81DCCCF282B63FD0039E5C5 /* YUMISeparationsEncourageRegardGovernancer.m */; }; - E81E09C9290F71BF00A1F410 /* YUMIAdvertiseRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E81E09C8290F71BF00A1F410 /* YUMIAdvertiseRegard.m */; }; - E81E09CC290F732600A1F410 /* YUMIAdIndicateTool.m in Sources */ = {isa = PBXBuildFile; fileRef = E81E09CB290F732600A1F410 /* YUMIAdIndicateTool.m */; }; - E81E09CF290F750800A1F410 /* AdvertiseMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E81E09CE290F750800A1F410 /* AdvertiseMatrix.m */; }; - E821077B2987D4AB00DE7040 /* CommunicationDiscoveryStrangeBewelcometoMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E821077A2987D4AB00DE7040 /* CommunicationDiscoveryStrangeBewelcometoMatrix.m */; }; - E821077E2987D67100DE7040 /* CommunicationVenturePrecautiousMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E821077D2987D67100DE7040 /* CommunicationVenturePrecautiousMatrix.m */; }; - E82107812987D7F300DE7040 /* CommunicationSeparationsMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E82107802987D7F300DE7040 /* CommunicationSeparationsMatrix.m */; }; - E82107842987E35300DE7040 /* CommunicationSeparationsAutoMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E82107832987E35300DE7040 /* CommunicationSeparationsAutoMatrix.m */; }; - E82107872987E49100DE7040 /* CommunicationDeficitSheatheMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E82107862987E49100DE7040 /* CommunicationDeficitSheatheMatrix.m */; }; - E82109AD26F1C8A000FC3319 /* ComputationDownFacilitater.m in Sources */ = {isa = PBXBuildFile; fileRef = E82109AC26F1C8A000FC3319 /* ComputationDownFacilitater.m */; }; - E82109B026F1D83500FC3319 /* SurmountDilemmaMobileExternalize.m in Sources */ = {isa = PBXBuildFile; fileRef = E82109AF26F1D83500FC3319 /* SurmountDilemmaMobileExternalize.m */; }; - E82325E6274CCAFA003A3332 /* YUMIParaticipationAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E82325E5274CCAFA003A3332 /* YUMIParaticipationAbstractMatrix.m */; }; - E82325E9274CE56A003A3332 /* YUMIParaticipationProvision.m in Sources */ = {isa = PBXBuildFile; fileRef = E82325E8274CE56A003A3332 /* YUMIParaticipationProvision.m */; }; - E82325F2274E2DE6003A3332 /* YUMIConsumerSolitaireRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E82325F1274E2DE6003A3332 /* YUMIConsumerSolitaireRegardGovernancer.m */; }; - E82325F5274E2E09003A3332 /* YUMIConsumerSolitaireExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E82325F4274E2E09003A3332 /* YUMIConsumerSolitaireExternalizer.m */; }; + E81D58822720082A003063FE /* MicroWaveView.m in Sources */ = {isa = PBXBuildFile; fileRef = E81D58812720082A003063FE /* MicroWaveView.m */; }; + E81DCCCD282B63B40039E5C5 /* XPMonentsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E81DCCCC282B63B40039E5C5 /* XPMonentsViewController.m */; }; + E81DCCD0282B63FD0039E5C5 /* XPMonentsRecommendViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E81DCCCF282B63FD0039E5C5 /* XPMonentsRecommendViewController.m */; }; + E81E09C9290F71BF00A1F410 /* XPAdvertiseView.m in Sources */ = {isa = PBXBuildFile; fileRef = E81E09C8290F71BF00A1F410 /* XPAdvertiseView.m */; }; + E81E09CC290F732600A1F410 /* XPAdImageTool.m in Sources */ = {isa = PBXBuildFile; fileRef = E81E09CB290F732600A1F410 /* XPAdImageTool.m */; }; + E81E09CF290F750800A1F410 /* AdvertiseModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E81E09CE290F750800A1F410 /* AdvertiseModel.m */; }; + E821077B2987D4AB00DE7040 /* MessageFindNewGreetModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E821077A2987D4AB00DE7040 /* MessageFindNewGreetModel.m */; }; + E821077E2987D67100DE7040 /* MessageRiskAlertModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E821077D2987D67100DE7040 /* MessageRiskAlertModel.m */; }; + E82107812987D7F300DE7040 /* MessageMonentsModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E82107802987D7F300DE7040 /* MessageMonentsModel.m */; }; + E82107842987E35300DE7040 /* MessageMonentsAutoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E82107832987E35300DE7040 /* MessageMonentsAutoModel.m */; }; + E82107872987E49100DE7040 /* MessageRedPacketModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E82107862987E49100DE7040 /* MessageRedPacketModel.m */; }; + E82109AD26F1C8A000FC3319 /* CountDownHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = E82109AC26F1C8A000FC3319 /* CountDownHelper.m */; }; + E82109B026F1D83500FC3319 /* LoginBindPhonePresent.m in Sources */ = {isa = PBXBuildFile; fileRef = E82109AF26F1D83500FC3319 /* LoginBindPhonePresent.m */; }; + E82325E6274CCAFA003A3332 /* XPShareInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E82325E5274CCAFA003A3332 /* XPShareInfoModel.m */; }; + E82325E9274CE56A003A3332 /* XPShareItem.m in Sources */ = {isa = PBXBuildFile; fileRef = E82325E8274CE56A003A3332 /* XPShareItem.m */; }; + E82325F2274E2DE6003A3332 /* XPUserCardViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E82325F1274E2DE6003A3332 /* XPUserCardViewController.m */; }; + E82325F5274E2E09003A3332 /* XPUserCardPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E82325F4274E2E09003A3332 /* XPUserCardPresenter.m */; }; E82325F9274E2E42003A3332 /* Api+UserCard.m in Sources */ = {isa = PBXBuildFile; fileRef = E82325F8274E2E42003A3332 /* Api+UserCard.m */; }; - E82325FC274E4735003A3332 /* YUMIConsumerSolitaireProvisionMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E82325FB274E4735003A3332 /* YUMIConsumerSolitaireProvisionMatrix.m */; }; - E8232600274E48EA003A3332 /* YUMIConsumerSolitaireProvisionAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E82325FF274E48EA003A3332 /* YUMIConsumerSolitaireProvisionAssembletionRegardElement.m */; }; + E82325FC274E4735003A3332 /* XPUserCardItemModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E82325FB274E4735003A3332 /* XPUserCardItemModel.m */; }; + E8232600274E48EA003A3332 /* XPUserCardItemCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E82325FF274E48EA003A3332 /* XPUserCardItemCollectionViewCell.m */; }; E8232603274E4AA0003A3332 /* ThemeColor+UserCard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8232602274E4AA0003A3332 /* ThemeColor+UserCard.m */; }; - E823E38E290BE8BD00EADD86 /* DesirePresentAbstractRefurbishMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E823E38D290BE8BD00EADD86 /* DesirePresentAbstractRefurbishMatrix.m */; }; - E824543526F57D6E00BE8163 /* YUMISurmountValidationDilemmaMobileRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E824543426F57D6E00BE8163 /* YUMISurmountValidationDilemmaMobileRegardGovernancer.m */; }; - E824543826F5820A00BE8163 /* YUMISurmountValidationDilemmaMobileExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E824543726F5820A00BE8163 /* YUMISurmountValidationDilemmaMobileExternalizer.m */; }; - E824543A26F5880E00BE8163 /* FBCSurmountVerifBindPhoneCeremony.h in Sources */ = {isa = PBXBuildFile; fileRef = E824543926F5822800BE8163 /* FBCSurmountVerifBindPhoneCeremony.h */; }; - E824543D26F58C3A00BE8163 /* YUMISurmountDilemmaSuccessRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E824543C26F58C3A00BE8163 /* YUMISurmountDilemmaSuccessRegard.m */; }; - E824544026F58F9400BE8163 /* YUMIManeIntersectPwordRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E824543F26F58F9400BE8163 /* YUMIManeIntersectPwordRegardGovernancer.m */; }; - E824544326F58FCE00BE8163 /* YUMIManeIntersectPwordIntrojectionRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E824544226F58FCE00BE8163 /* YUMIManeIntersectPwordIntrojectionRegard.m */; }; - E824544626F5934700BE8163 /* YUMIManeIntersectPwordExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E824544526F5934600BE8163 /* YUMIManeIntersectPwordExternalizer.m */; }; - E824544826F5945300BE8163 /* FBCManePayPwordCeremony.h in Sources */ = {isa = PBXBuildFile; fileRef = E824544726F5940600BE8163 /* FBCManePayPwordCeremony.h */; }; - E824544B26F5BBB800BE8163 /* YUMIManeModifIntersectPwordRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E824544A26F5BBB800BE8163 /* YUMIManeModifIntersectPwordRegardGovernancer.m */; }; - E824544E26F5BC1A00BE8163 /* YUMIManeModifIntersectPwordRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E824544D26F5BC1A00BE8163 /* YUMIManeModifIntersectPwordRegard.m */; }; - E824545126F5CE6E00BE8163 /* YUMIManeModifIntersectPwordExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E824545026F5CE6E00BE8163 /* YUMIManeModifIntersectPwordExternalizer.m */; }; - E824545326F5CEAD00BE8163 /* FBCManeModifPayCeremony.h in Sources */ = {isa = PBXBuildFile; fileRef = E824545226F5CE9C00BE8163 /* FBCManeModifPayCeremony.h */; }; - E824545626F5E51900BE8163 /* YUMIManeValidationIdentityRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E824545526F5E51900BE8163 /* YUMIManeValidationIdentityRegardGovernancer.m */; }; - E824545926F5E65900BE8163 /* YUMIManeValidationIdentityRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E824545826F5E65900BE8163 /* YUMIManeValidationIdentityRegard.m */; }; - E824545C26F5EEBA00BE8163 /* YUMIManeValidationIdentityExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E824545B26F5EEBA00BE8163 /* YUMIManeValidationIdentityExternalizer.m */; }; - E824545E26F5EF2200BE8163 /* FBCManeVerifIdentityCeremony.h in Sources */ = {isa = PBXBuildFile; fileRef = E824545D26F5EEFD00BE8163 /* FBCManeVerifIdentityCeremony.h */; }; - E824546126F5F4E400BE8163 /* YUMIManeReassociationIntersectPwordRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E824546026F5F4E400BE8163 /* YUMIManeReassociationIntersectPwordRegardGovernancer.m */; }; - E824546426F5FF1C00BE8163 /* YUMIManeReassociationIntersectCiphercodeExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E824546326F5FF1C00BE8163 /* YUMIManeReassociationIntersectCiphercodeExternalizer.m */; }; - E824546626F5FF6000BE8163 /* FBCManeResetPayCiphercodeCeremony.h in Sources */ = {isa = PBXBuildFile; fileRef = E824546526F5FF5100BE8163 /* FBCManeResetPayCiphercodeCeremony.h */; }; - E8252FEE27687DF1002B3164 /* ImportpriseAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8252FED27687DF1002B3164 /* ImportpriseAbstractMatrix.m */; }; - E82D5C70276AE60000858D6D /* IntelligencewearMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E82D5C6F276AE60000858D6D /* IntelligencewearMatrix.m */; }; - E82D5C73276AE94800858D6D /* CarMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E82D5C72276AE94800858D6D /* CarMatrix.m */; }; - E82D5C76276AEB5100858D6D /* NameplateMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E82D5C75276AEB5100858D6D /* NameplateMatrix.m */; }; - E82D5C7A276B25D100858D6D /* SpriteSheetIndicateExecutive.m in Sources */ = {isa = PBXBuildFile; fileRef = E82D5C79276B25D100858D6D /* SpriteSheetIndicateExecutive.m */; }; + E823E38E290BE8BD00EADD86 /* WishGiftInfoUpdateModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E823E38D290BE8BD00EADD86 /* WishGiftInfoUpdateModel.m */; }; + E824543526F57D6E00BE8163 /* XPLoginVerifBindPhoneViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E824543426F57D6E00BE8163 /* XPLoginVerifBindPhoneViewController.m */; }; + E824543826F5820A00BE8163 /* XPLoginVerifBindPhonePresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E824543726F5820A00BE8163 /* XPLoginVerifBindPhonePresenter.m */; }; + E824543A26F5880E00BE8163 /* XPLoginVerifBindPhoneProtocol.h in Sources */ = {isa = PBXBuildFile; fileRef = E824543926F5822800BE8163 /* XPLoginVerifBindPhoneProtocol.h */; }; + E824543D26F58C3A00BE8163 /* XPLoginBindSuccessView.m in Sources */ = {isa = PBXBuildFile; fileRef = E824543C26F58C3A00BE8163 /* XPLoginBindSuccessView.m */; }; + E824544026F58F9400BE8163 /* XPMinePayPwdViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E824543F26F58F9400BE8163 /* XPMinePayPwdViewController.m */; }; + E824544326F58FCE00BE8163 /* XPMinePayPwdInputView.m in Sources */ = {isa = PBXBuildFile; fileRef = E824544226F58FCE00BE8163 /* XPMinePayPwdInputView.m */; }; + E824544626F5934700BE8163 /* XPMinePayPwdPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E824544526F5934600BE8163 /* XPMinePayPwdPresenter.m */; }; + E824544826F5945300BE8163 /* XPMinePayPwdProtocol.h in Sources */ = {isa = PBXBuildFile; fileRef = E824544726F5940600BE8163 /* XPMinePayPwdProtocol.h */; }; + E824544B26F5BBB800BE8163 /* XPMineModifPayPwdViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E824544A26F5BBB800BE8163 /* XPMineModifPayPwdViewController.m */; }; + E824544E26F5BC1A00BE8163 /* XPMineModifPayPwdView.m in Sources */ = {isa = PBXBuildFile; fileRef = E824544D26F5BC1A00BE8163 /* XPMineModifPayPwdView.m */; }; + E824545126F5CE6E00BE8163 /* XPMineModifPayPwdPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E824545026F5CE6E00BE8163 /* XPMineModifPayPwdPresenter.m */; }; + E824545326F5CEAD00BE8163 /* XPMineModifPayProtocol.h in Sources */ = {isa = PBXBuildFile; fileRef = E824545226F5CE9C00BE8163 /* XPMineModifPayProtocol.h */; }; + E824545626F5E51900BE8163 /* XPMineVerifIdentityViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E824545526F5E51900BE8163 /* XPMineVerifIdentityViewController.m */; }; + E824545926F5E65900BE8163 /* XPMineVerifIdentityView.m in Sources */ = {isa = PBXBuildFile; fileRef = E824545826F5E65900BE8163 /* XPMineVerifIdentityView.m */; }; + E824545C26F5EEBA00BE8163 /* XPMineVerifIdentityPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E824545B26F5EEBA00BE8163 /* XPMineVerifIdentityPresenter.m */; }; + E824545E26F5EF2200BE8163 /* XPMineVerifIdentityProtocol.h in Sources */ = {isa = PBXBuildFile; fileRef = E824545D26F5EEFD00BE8163 /* XPMineVerifIdentityProtocol.h */; }; + E824546126F5F4E400BE8163 /* XPMineResetPayPwdViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E824546026F5F4E400BE8163 /* XPMineResetPayPwdViewController.m */; }; + E824546426F5FF1C00BE8163 /* XPMineResetPayPasswordPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E824546326F5FF1C00BE8163 /* XPMineResetPayPasswordPresenter.m */; }; + E824546626F5FF6000BE8163 /* XPMineResetPayPasswordProtocol.h in Sources */ = {isa = PBXBuildFile; fileRef = E824546526F5FF5100BE8163 /* XPMineResetPayPasswordProtocol.h */; }; + E8252FEE27687DF1002B3164 /* ActivityInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8252FED27687DF1002B3164 /* ActivityInfoModel.m */; }; + E82D5C70276AE60000858D6D /* HeadwearModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E82D5C6F276AE60000858D6D /* HeadwearModel.m */; }; + E82D5C73276AE94800858D6D /* CarModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E82D5C72276AE94800858D6D /* CarModel.m */; }; + E82D5C76276AEB5100858D6D /* NameplateModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E82D5C75276AEB5100858D6D /* NameplateModel.m */; }; + E82D5C7A276B25D100858D6D /* SpriteSheetImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E82D5C79276B25D100858D6D /* SpriteSheetImageManager.m */; }; E82D5C7D276B343300858D6D /* YYAnimatedImageView+ImageShow.m in Sources */ = {isa = PBXBuildFile; fileRef = E82D5C7C276B343300858D6D /* YYAnimatedImageView+ImageShow.m */; }; - E82E75062828E76400C25EF7 /* YUMICoreAtomicExecutive.m in Sources */ = {isa = PBXBuildFile; fileRef = E82E75052828E76400C25EF7 /* YUMICoreAtomicExecutive.m */; }; - E82EE0F8272FDDFA00D15DC1 /* ConsumerPrivacyRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E82EE0F7272FDDFA00D15DC1 /* ConsumerPrivacyRegard.m */; }; - E833ED0D274FAD1C00A2463B /* XCombatickConsumerMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E833ED0C274FAD1C00A2463B /* XCombatickConsumerMatrix.m */; }; - E83645682A40A2DC00E0DBE4 /* YUMICommunicationSolitaireDisporterExecutive.m in Sources */ = {isa = PBXBuildFile; fileRef = E83645672A40A2DC00E0DBE4 /* YUMICommunicationSolitaireDisporterExecutive.m */; }; - E836456B2A40A33300E0DBE4 /* ManeCommunicationSolitaireStatementAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E83645692A40A33300E0DBE4 /* ManeCommunicationSolitaireStatementAbstractMatrix.m */; }; + E82E75062828E76400C25EF7 /* XPCoreDataManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E82E75052828E76400C25EF7 /* XPCoreDataManager.m */; }; + E82EE0F8272FDDFA00D15DC1 /* UserPrivacyView.m in Sources */ = {isa = PBXBuildFile; fileRef = E82EE0F7272FDDFA00D15DC1 /* UserPrivacyView.m */; }; + E833ED0D274FAD1C00A2463B /* XPKickUserModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E833ED0C274FAD1C00A2463B /* XPKickUserModel.m */; }; + E83645682A40A2DC00E0DBE4 /* XPSkillCardPlayerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E83645672A40A2DC00E0DBE4 /* XPSkillCardPlayerManager.m */; }; + E836456B2A40A33300E0DBE4 /* MineSkillCardListInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E83645692A40A33300E0DBE4 /* MineSkillCardListInfoModel.m */; }; E83645A82A40AF5400E0DBE4 /* NSBundle+Localizable.m in Sources */ = {isa = PBXBuildFile; fileRef = E83645A72A40AF5400E0DBE4 /* NSBundle+Localizable.m */; }; - E8383697298A598D00112E1C /* CommunicationTipsMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8383696298A598D00112E1C /* CommunicationTipsMatrix.m */; }; - E838369A298A59C100112E1C /* CommunicationTipsRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8383699298A59C100112E1C /* CommunicationTipsRegard.m */; }; - E838D9A0275E1BF60079E0B5 /* YUMIChamberBrightnessRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E838D99F275E1BF60079E0B5 /* YUMIChamberBrightnessRegard.m */; }; - E83953222769F33B00CF2F24 /* YUMIChamberFunctionAccommodatedRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E83953212769F33B00CF2F24 /* YUMIChamberFunctionAccommodatedRegard.m */; }; - E839532A276A002800CF2F24 /* YUMIManePretendUpwardsRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8395329276A002800CF2F24 /* YUMIManePretendUpwardsRegardGovernancer.m */; }; - E839532D276A030F00CF2F24 /* YUMIManePretendUpwardsStatementRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E839532C276A030F00CF2F24 /* YUMIManePretendUpwardsStatementRegardGovernancer.m */; }; + E8383697298A598D00112E1C /* MessageTipsModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8383696298A598D00112E1C /* MessageTipsModel.m */; }; + E838369A298A59C100112E1C /* MessageTipsView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8383699298A59C100112E1C /* MessageTipsView.m */; }; + E838D9A0275E1BF60079E0B5 /* XPRoomAnimationView.m in Sources */ = {isa = PBXBuildFile; fileRef = E838D99F275E1BF60079E0B5 /* XPRoomAnimationView.m */; }; + E83953222769F33B00CF2F24 /* XPRoomFunctionContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = E83953212769F33B00CF2F24 /* XPRoomFunctionContainerView.m */; }; + E839532A276A002800CF2F24 /* XPMineDressUpViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8395329276A002800CF2F24 /* XPMineDressUpViewController.m */; }; + E839532D276A030F00CF2F24 /* XPMineDressUpListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E839532C276A030F00CF2F24 /* XPMineDressUpListViewController.m */; }; E8395331276A03AE00CF2F24 /* Api+DressUp.m in Sources */ = {isa = PBXBuildFile; fileRef = E8395330276A03AE00CF2F24 /* Api+DressUp.m */; }; - E8395334276A03C300CF2F24 /* YUMIManePretendUpwardsExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8395333276A03C300CF2F24 /* YUMIManePretendUpwardsExternalizer.m */; }; - E8395339276A0CC100CF2F24 /* YUMIManeIntelligencewearTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8395338276A0CC100CF2F24 /* YUMIManeIntelligencewearTabulationRegardElement.m */; }; - E839533C276A0CCD00CF2F24 /* YUMIManeCarTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E839533B276A0CCD00CF2F24 /* YUMIManeCarTabulationRegardElement.m */; }; - E839533F276A0CDB00CF2F24 /* YUMIManeNameplateTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E839533E276A0CDB00CF2F24 /* YUMIManeNameplateTabulationRegardElement.m */; }; - E839806B290288660084BFC8 /* YUMICommunicationAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E839806A290288660084BFC8 /* YUMICommunicationAbstractMatrix.m */; }; - E83ABEF6280E9AD800322EE4 /* CommunicationSatisfactionUnSupportRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E83ABEF5280E9AD800322EE4 /* CommunicationSatisfactionUnSupportRegard.m */; }; - E83ABEF9280EAF3F00322EE4 /* CommunicationSatisfactionUnfoildEnergeticRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E83ABEF8280EAF3F00322EE4 /* CommunicationSatisfactionUnfoildEnergeticRegard.m */; }; - E83ABEFD280EB5E200322EE4 /* SatisfactionUnfoildEnergeticAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E83ABEFC280EB5E200322EE4 /* SatisfactionUnfoildEnergeticAbstractMatrix.m */; }; - E83ABF00280EC45700322EE4 /* CommunicationSatisfactionApplicationParaticipationRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E83ABEFF280EC45700322EE4 /* CommunicationSatisfactionApplicationParaticipationRegard.m */; }; - E83ABF03280EC90C00322EE4 /* SatisfactionApplicationParaticipationMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E83ABF02280EC90C00322EE4 /* SatisfactionApplicationParaticipationMatrix.m */; }; - E83ABF06280EDE2B00322EE4 /* CommunicationSatisfactionPrototypeAscensionRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E83ABF05280EDE2B00322EE4 /* CommunicationSatisfactionPrototypeAscensionRegard.m */; }; - E83DB47A27462C4500D8CBD1 /* YUMIPresentBigCaptureMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E83DB47927462C4500D8CBD1 /* YUMIPresentBigCaptureMatrix.m */; }; - E83DB47D2746372300D8CBD1 /* YUMIChamberPresentOriflammeRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E83DB47C2746372300D8CBD1 /* YUMIChamberPresentOriflammeRegard.m */; }; - E83DB481274649FB00D8CBD1 /* YUMIPresentOriflammeConsumerAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E83DB480274649FB00D8CBD1 /* YUMIPresentOriflammeConsumerAbstractMatrix.m */; }; - E83DB4842746661800D8CBD1 /* YUMIChamberPresentPingbackRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E83DB4832746661800D8CBD1 /* YUMIChamberPresentPingbackRegard.m */; }; - E83DB487274670DA00D8CBD1 /* YUMIChamberPresentBroadCastMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E83DB486274670DA00D8CBD1 /* YUMIChamberPresentBroadCastMatrix.m */; }; - E8412F9627795E34006E1101 /* YUMIChamberCallforFanaticsRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8412F9527795E34006E1101 /* YUMIChamberCallforFanaticsRegard.m */; }; - E8412F9927799249006E1101 /* CallforFanaticsMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8412F9827799249006E1101 /* CallforFanaticsMatrix.m */; }; - E8412FA22779BE8F006E1101 /* YUMIChamberInstanllingRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8412FA12779BE8F006E1101 /* YUMIChamberInstanllingRegardGovernancer.m */; }; - E8412FA62779BED1006E1101 /* YUMIChamberInstanllingTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8412FA52779BED1006E1101 /* YUMIChamberInstanllingTabulationRegardElement.m */; }; - E8412FA92779C2ED006E1101 /* YUMIChamberInstanllingProvisionMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8412FA82779C2ED006E1101 /* YUMIChamberInstanllingProvisionMatrix.m */; }; - E8412FB02779CB4D006E1101 /* YUMIChamberInstanllingExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8412FAF2779CB4D006E1101 /* YUMIChamberInstanllingExternalizer.m */; }; + E8395334276A03C300CF2F24 /* XPMineDressUpPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8395333276A03C300CF2F24 /* XPMineDressUpPresenter.m */; }; + E8395339276A0CC100CF2F24 /* XPMineHeadwearTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8395338276A0CC100CF2F24 /* XPMineHeadwearTableViewCell.m */; }; + E839533C276A0CCD00CF2F24 /* XPMineCarTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E839533B276A0CCD00CF2F24 /* XPMineCarTableViewCell.m */; }; + E839533F276A0CDB00CF2F24 /* XPMineNameplateTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E839533E276A0CDB00CF2F24 /* XPMineNameplateTableViewCell.m */; }; + E839806B290288660084BFC8 /* XPMessageInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E839806A290288660084BFC8 /* XPMessageInfoModel.m */; }; + E83ABEF6280E9AD800322EE4 /* MessageContentUnSupportView.m in Sources */ = {isa = PBXBuildFile; fileRef = E83ABEF5280E9AD800322EE4 /* MessageContentUnSupportView.m */; }; + E83ABEF9280EAF3F00322EE4 /* MessageContentOpenLiveView.m in Sources */ = {isa = PBXBuildFile; fileRef = E83ABEF8280EAF3F00322EE4 /* MessageContentOpenLiveView.m */; }; + E83ABEFD280EB5E200322EE4 /* ContentOpenLiveInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E83ABEFC280EB5E200322EE4 /* ContentOpenLiveInfoModel.m */; }; + E83ABF00280EC45700322EE4 /* MessageContentApplicationShareView.m in Sources */ = {isa = PBXBuildFile; fileRef = E83ABEFF280EC45700322EE4 /* MessageContentApplicationShareView.m */; }; + E83ABF03280EC90C00322EE4 /* ContentApplicationShareModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E83ABF02280EC90C00322EE4 /* ContentApplicationShareModel.m */; }; + E83ABF06280EDE2B00322EE4 /* MessageContentLevelUpgradeView.m in Sources */ = {isa = PBXBuildFile; fileRef = E83ABF05280EDE2B00322EE4 /* MessageContentLevelUpgradeView.m */; }; + E83DB47A27462C4500D8CBD1 /* XPGiftBigPrizeModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E83DB47927462C4500D8CBD1 /* XPGiftBigPrizeModel.m */; }; + E83DB47D2746372300D8CBD1 /* XPRoomGiftBannerView.m in Sources */ = {isa = PBXBuildFile; fileRef = E83DB47C2746372300D8CBD1 /* XPRoomGiftBannerView.m */; }; + E83DB481274649FB00D8CBD1 /* XPGiftBannerUserInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E83DB480274649FB00D8CBD1 /* XPGiftBannerUserInfoModel.m */; }; + E83DB4842746661800D8CBD1 /* XPRoomGiftBroadcastView.m in Sources */ = {isa = PBXBuildFile; fileRef = E83DB4832746661800D8CBD1 /* XPRoomGiftBroadcastView.m */; }; + E8412F9627795E34006E1101 /* XPRoomInviteFansView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8412F9527795E34006E1101 /* XPRoomInviteFansView.m */; }; + E8412F9927799249006E1101 /* InviteFansModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8412F9827799249006E1101 /* InviteFansModel.m */; }; + E8412FA22779BE8F006E1101 /* XPRoomSettingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8412FA12779BE8F006E1101 /* XPRoomSettingViewController.m */; }; + E8412FA62779BED1006E1101 /* XPRoomSettingTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8412FA52779BED1006E1101 /* XPRoomSettingTableViewCell.m */; }; + E8412FA92779C2ED006E1101 /* XPRoomSettingItemModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8412FA82779C2ED006E1101 /* XPRoomSettingItemModel.m */; }; + E8412FB02779CB4D006E1101 /* XPRoomSettingPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8412FAF2779CB4D006E1101 /* XPRoomSettingPresenter.m */; }; E8412FB32779E285006E1101 /* Api+RoomSetting.m in Sources */ = {isa = PBXBuildFile; fileRef = E8412FB22779E285006E1101 /* Api+RoomSetting.m */; }; - E84150BB27747BAF00A7F548 /* YUMIThresholdReindictExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E84150BA27747BAF00A7F548 /* YUMIThresholdReindictExternalizer.m */; }; + E84150BB27747BAF00A7F548 /* XPFirstRechargePresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E84150BA27747BAF00A7F548 /* XPFirstRechargePresenter.m */; }; E84150BF27747BD300A7F548 /* Api+FirstRecharge.m in Sources */ = {isa = PBXBuildFile; fileRef = E84150BE27747BD300A7F548 /* Api+FirstRecharge.m */; }; - E84150C227747BF700A7F548 /* ThresholdReindictMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E84150C127747BF700A7F548 /* ThresholdReindictMatrix.m */; }; - E84150C527747E0900A7F548 /* ThresholdReindictRewardMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E84150C427747E0900A7F548 /* ThresholdReindictRewardMatrix.m */; }; - E841ED61280FB0BD00904808 /* SatisfactionPrototypeAscensionMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E841ED60280FB0BD00904808 /* SatisfactionPrototypeAscensionMatrix.m */; }; - E84843AF27F59E7E0050D365 /* YUMIChamberCombatConsequentRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E84843AE27F59E7E0050D365 /* YUMIChamberCombatConsequentRegard.m */; }; - E84843B227F5A0740050D365 /* YUMIRomCombatConsequentChampionDesignation.m in Sources */ = {isa = PBXBuildFile; fileRef = E84843B127F5A0740050D365 /* YUMIRomCombatConsequentChampionDesignation.m */; }; - E84A2E892A527DF800D6AF8A /* YUMIRevenueReflectionVC.m in Sources */ = {isa = PBXBuildFile; fileRef = E84A2E812A527DF800D6AF8A /* YUMIRevenueReflectionVC.m */; }; - E84A2E8A2A527DF800D6AF8A /* YUMIExchangeDiamondsVC.m in Sources */ = {isa = PBXBuildFile; fileRef = E84A2E822A527DF800D6AF8A /* YUMIExchangeDiamondsVC.m */; }; - E84A2E8B2A527DF800D6AF8A /* YUMIRevenueReflectionGoldSpecificsVC.m in Sources */ = {isa = PBXBuildFile; fileRef = E84A2E842A527DF800D6AF8A /* YUMIRevenueReflectionGoldSpecificsVC.m */; }; - E84A2E932A527EC800D6AF8A /* YUMIRevenueReflectionExternalize.m in Sources */ = {isa = PBXBuildFile; fileRef = E84A2E912A527EC700D6AF8A /* YUMIRevenueReflectionExternalize.m */; }; - E84A2E962A5280F900D6AF8A /* YUMIExchangeDiamondsRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E84A2E942A5280F900D6AF8A /* YUMIExchangeDiamondsRegard.m */; }; - E84A2E992A52817E00D6AF8A /* YUMIRevenueReflectionRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E84A2E982A52817E00D6AF8A /* YUMIRevenueReflectionRegard.m */; }; - E84A2E9C2A52823900D6AF8A /* YUMIEssayField.m in Sources */ = {isa = PBXBuildFile; fileRef = E84A2E9B2A52823900D6AF8A /* YUMIEssayField.m */; }; - E84A2E9F2A5287D200D6AF8A /* YUMIRevenueReflectionGoldSpecificsRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E84A2E9D2A5287D200D6AF8A /* YUMIRevenueReflectionGoldSpecificsRegard.m */; }; - E84A2EA22A52883000D6AF8A /* YUMIRevenueReflectionGoldSpecificsIntratemporalRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E84A2EA02A52883000D6AF8A /* YUMIRevenueReflectionGoldSpecificsIntratemporalRegard.m */; }; - E84A2EA52A5288CB00D6AF8A /* YUMIGoldSpecificsChooseChamberRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E84A2EA42A5288CB00D6AF8A /* YUMIGoldSpecificsChooseChamberRegard.m */; }; - E84A2EA82A5288FD00D6AF8A /* YUMIGoldSpecificsChooseChamberElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E84A2EA72A5288FD00D6AF8A /* YUMIGoldSpecificsChooseChamberElement.m */; }; - E84A2EAB2A528A4100D6AF8A /* YUMIRevenueReflectionGoldSpecificsPickRegardRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E84A2EA92A528A4100D6AF8A /* YUMIRevenueReflectionGoldSpecificsPickRegardRegard.m */; }; + E84150C227747BF700A7F548 /* FirstRechargeModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E84150C127747BF700A7F548 /* FirstRechargeModel.m */; }; + E84150C527747E0900A7F548 /* FirstRechargeRewardModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E84150C427747E0900A7F548 /* FirstRechargeRewardModel.m */; }; + E841ED61280FB0BD00904808 /* ContentLevelUpgradeModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E841ED60280FB0BD00904808 /* ContentLevelUpgradeModel.m */; }; + E84843AF27F59E7E0050D365 /* XPRoomPKResultView.m in Sources */ = {isa = PBXBuildFile; fileRef = E84843AE27F59E7E0050D365 /* XPRoomPKResultView.m */; }; + E84843B227F5A0740050D365 /* XPRomPKResultTitleLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = E84843B127F5A0740050D365 /* XPRomPKResultTitleLabel.m */; }; + E84A2E892A527DF800D6AF8A /* XPIncomeRecordVC.m in Sources */ = {isa = PBXBuildFile; fileRef = E84A2E812A527DF800D6AF8A /* XPIncomeRecordVC.m */; }; + E84A2E8A2A527DF800D6AF8A /* XPExchangeDiamondsVC.m in Sources */ = {isa = PBXBuildFile; fileRef = E84A2E822A527DF800D6AF8A /* XPExchangeDiamondsVC.m */; }; + E84A2E8B2A527DF800D6AF8A /* XPIncomeRecordGoldDetailsVC.m in Sources */ = {isa = PBXBuildFile; fileRef = E84A2E842A527DF800D6AF8A /* XPIncomeRecordGoldDetailsVC.m */; }; + E84A2E932A527EC800D6AF8A /* XPIncomeRecordPresent.m in Sources */ = {isa = PBXBuildFile; fileRef = E84A2E912A527EC700D6AF8A /* XPIncomeRecordPresent.m */; }; + E84A2E962A5280F900D6AF8A /* XPExchangeDiamondsView.m in Sources */ = {isa = PBXBuildFile; fileRef = E84A2E942A5280F900D6AF8A /* XPExchangeDiamondsView.m */; }; + E84A2E992A52817E00D6AF8A /* XPIncomeRecordView.m in Sources */ = {isa = PBXBuildFile; fileRef = E84A2E982A52817E00D6AF8A /* XPIncomeRecordView.m */; }; + E84A2E9C2A52823900D6AF8A /* XPTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = E84A2E9B2A52823900D6AF8A /* XPTextField.m */; }; + E84A2E9F2A5287D200D6AF8A /* XPIncomeRecordGoldDetailsView.m in Sources */ = {isa = PBXBuildFile; fileRef = E84A2E9D2A5287D200D6AF8A /* XPIncomeRecordGoldDetailsView.m */; }; + E84A2EA22A52883000D6AF8A /* XPIncomeRecordGoldDetailsTimeView.m in Sources */ = {isa = PBXBuildFile; fileRef = E84A2EA02A52883000D6AF8A /* XPIncomeRecordGoldDetailsTimeView.m */; }; + E84A2EA52A5288CB00D6AF8A /* XPGoldDetailsChooseRoomView.m in Sources */ = {isa = PBXBuildFile; fileRef = E84A2EA42A5288CB00D6AF8A /* XPGoldDetailsChooseRoomView.m */; }; + E84A2EA82A5288FD00D6AF8A /* XPGoldDetailsChooseRoomCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E84A2EA72A5288FD00D6AF8A /* XPGoldDetailsChooseRoomCell.m */; }; + E84A2EAB2A528A4100D6AF8A /* XPIncomeRecordGoldDetailsPickViewView.m in Sources */ = {isa = PBXBuildFile; fileRef = E84A2EA92A528A4100D6AF8A /* XPIncomeRecordGoldDetailsPickViewView.m */; }; E84A2EAD2A52F20900D6AF8A /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E84A2EAC2A52F20900D6AF8A /* Launch Screen.storyboard */; }; E84A2EAF2A52F27000D6AF8A /* 1242.png in Resources */ = {isa = PBXBuildFile; fileRef = E84A2EAE2A52F27000D6AF8A /* 1242.png */; }; - E84B0E3F2727EDF6008818C6 /* YUMIChamberCommunicationTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E84B0E3E2727EDF6008818C6 /* YUMIChamberCommunicationTabulationRegardElement.m */; }; - E84B0E422727EE0A008818C6 /* YUMIChamberCommunicationIntelligencerRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E84B0E412727EE0A008818C6 /* YUMIChamberCommunicationIntelligencerRegard.m */; }; - E84B0E462727EF9D008818C6 /* YUMIChamberCommunicationAnatomiser.m in Sources */ = {isa = PBXBuildFile; fileRef = E84B0E452727EF9D008818C6 /* YUMIChamberCommunicationAnatomiser.m */; }; - E84BF7CA277AF79D00EF8877 /* YUMIChamberInstanllingCoupleElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E84BF7C9277AF79D00EF8877 /* YUMIChamberInstanllingCoupleElement.m */; }; - E84BF7D1277BFCDD00EF8877 /* ChamberCoupleMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E84BF7D0277BFCDD00EF8877 /* ChamberCoupleMatrix.m */; }; - E84BF7D4277C383700EF8877 /* YUMIChamberInstanllingIntrojectionRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E84BF7D3277C383700EF8877 /* YUMIChamberInstanllingIntrojectionRegard.m */; }; - E84BF7D7277C6E2100EF8877 /* YUMIChamberRoleRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E84BF7D6277C6E2100EF8877 /* YUMIChamberRoleRegardGovernancer.m */; }; - E84BF7DA277C72AC00EF8877 /* YUMIChamberRoleTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E84BF7D9277C72AC00EF8877 /* YUMIChamberRoleTabulationRegardElement.m */; }; - E84BF7DD277C765400EF8877 /* YUMIChamberRoleDispossessTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E84BF7DC277C765400EF8877 /* YUMIChamberRoleDispossessTabulationRegardElement.m */; }; - E84BF7E0277C869A00EF8877 /* YUMIChamberOnLineRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E84BF7DF277C869A00EF8877 /* YUMIChamberOnLineRegardGovernancer.m */; }; - E84CBCE128436D3C00D43221 /* YUMIManeContactRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E84CBCE028436D3C00D43221 /* YUMIManeContactRegardGovernancer.m */; }; - E84CBCE4284372D800D43221 /* YUMIChamberHalfCommunicationRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E84CBCE3284372D800D43221 /* YUMIChamberHalfCommunicationRegard.m */; }; - E84CBCE72843807500D43221 /* YUMIManeAssistantExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E84CBCE62843807400D43221 /* YUMIManeAssistantExternalizer.m */; }; - E852D73B286317F0001465ED /* YUMISeparationsSpecificRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E852D73A286317F0001465ED /* YUMISeparationsSpecificRegardGovernancer.m */; }; - E852D73E28631C18001465ED /* YUMISeparationsJudgementTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E852D73D28631C18001465ED /* YUMISeparationsJudgementTabulationRegardElement.m */; }; - E852D7412863249F001465ED /* YUMISeparationsReplicationTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E852D7402863249F001465ED /* YUMISeparationsReplicationTabulationRegardElement.m */; }; - E852D74428633A08001465ED /* SeparationsJudgementMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E852D74328633A08001465ED /* SeparationsJudgementMatrix.m */; }; - E852D74728633E92001465ED /* SeparationsJudgementReplicationMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E852D74628633E92001465ED /* SeparationsJudgementReplicationMatrix.m */; }; - E85410352864155A005CFD9F /* YUMISeparationSpecificExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85410342864155A005CFD9F /* YUMISeparationSpecificExternalizer.m */; }; - E854103928646A00005CFD9F /* YUMISeparationsReplicationFurthaerTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E854103828646A00005CFD9F /* YUMISeparationsReplicationFurthaerTabulationRegardElement.m */; }; + E84B0E3F2727EDF6008818C6 /* XPRoomMessageTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E84B0E3E2727EDF6008818C6 /* XPRoomMessageTableViewCell.m */; }; + E84B0E422727EE0A008818C6 /* XPRoomMessageHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = E84B0E412727EE0A008818C6 /* XPRoomMessageHeaderView.m */; }; + E84B0E462727EF9D008818C6 /* XPRoomMessageParser.m in Sources */ = {isa = PBXBuildFile; fileRef = E84B0E452727EF9D008818C6 /* XPRoomMessageParser.m */; }; + E84BF7CA277AF79D00EF8877 /* XPRoomSettingTagCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E84BF7C9277AF79D00EF8877 /* XPRoomSettingTagCell.m */; }; + E84BF7D1277BFCDD00EF8877 /* RoomTagModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E84BF7D0277BFCDD00EF8877 /* RoomTagModel.m */; }; + E84BF7D4277C383700EF8877 /* XPRoomSettingInputView.m in Sources */ = {isa = PBXBuildFile; fileRef = E84BF7D3277C383700EF8877 /* XPRoomSettingInputView.m */; }; + E84BF7D7277C6E2100EF8877 /* XPRoomRoleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E84BF7D6277C6E2100EF8877 /* XPRoomRoleViewController.m */; }; + E84BF7DA277C72AC00EF8877 /* XPRoomRoleTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E84BF7D9277C72AC00EF8877 /* XPRoomRoleTableViewCell.m */; }; + E84BF7DD277C765400EF8877 /* XPRoomRoleEmptyTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E84BF7DC277C765400EF8877 /* XPRoomRoleEmptyTableViewCell.m */; }; + E84BF7E0277C869A00EF8877 /* XPRoomOnLineViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E84BF7DF277C869A00EF8877 /* XPRoomOnLineViewController.m */; }; + E84CBCE128436D3C00D43221 /* XPMineContactViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E84CBCE028436D3C00D43221 /* XPMineContactViewController.m */; }; + E84CBCE4284372D800D43221 /* XPRoomHalfMessageView.m in Sources */ = {isa = PBXBuildFile; fileRef = E84CBCE3284372D800D43221 /* XPRoomHalfMessageView.m */; }; + E84CBCE72843807500D43221 /* XPMineFriendPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E84CBCE62843807400D43221 /* XPMineFriendPresenter.m */; }; + E852D73B286317F0001465ED /* XPMonentsDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E852D73A286317F0001465ED /* XPMonentsDetailViewController.m */; }; + E852D73E28631C18001465ED /* XPMonentsCommentTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E852D73D28631C18001465ED /* XPMonentsCommentTableViewCell.m */; }; + E852D7412863249F001465ED /* XPMonentsReplyTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E852D7402863249F001465ED /* XPMonentsReplyTableViewCell.m */; }; + E852D74428633A08001465ED /* MonentsCommentModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E852D74328633A08001465ED /* MonentsCommentModel.m */; }; + E852D74728633E92001465ED /* MonentsCommentReplyModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E852D74628633E92001465ED /* MonentsCommentReplyModel.m */; }; + E85410352864155A005CFD9F /* XPMonentDetailPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E85410342864155A005CFD9F /* XPMonentDetailPresenter.m */; }; + E854103928646A00005CFD9F /* XPMonentsReplyMoreTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E854103828646A00005CFD9F /* XPMonentsReplyMoreTableViewCell.m */; }; E855515B280559FE005F293F /* NSDate+DateUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = E855515A280559FE005F293F /* NSDate+DateUtils.m */; }; - E85E3FA728B7A6F000268DC8 /* CommunicationSatisfactionSeparationsRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E3FA628B7A6F000268DC8 /* CommunicationSatisfactionSeparationsRegard.m */; }; - E85E7B012A4EB0D200B6D00A /* YUMISensationalManagementSetExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A402A4EB0D200B6D00A /* YUMISensationalManagementSetExternalizer.m */; }; - E85E7B022A4EB0D200B6D00A /* YUMISensationalManagementExecutiveChamberExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A412A4EB0D200B6D00A /* YUMISensationalManagementExecutiveChamberExternalizer.m */; }; - E85E7B032A4EB0D200B6D00A /* YUMIUnionRevenueExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A452A4EB0D200B6D00A /* YUMIUnionRevenueExternalizer.m */; }; - E85E7B042A4EB0D200B6D00A /* YUMIUnionRevenueSpecificExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A462A4EB0D200B6D00A /* YUMIUnionRevenueSpecificExternalizer.m */; }; - E85E7B052A4EB0D200B6D00A /* YUMICollectiveExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A492A4EB0D200B6D00A /* YUMICollectiveExternalizer.m */; }; - E85E7B062A4EB0D200B6D00A /* YUMIUnionHuntforExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A4A2A4EB0D200B6D00A /* YUMIUnionHuntforExternalizer.m */; }; - E85E7B072A4EB0D200B6D00A /* YUMIUnionExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A4B2A4EB0D200B6D00A /* YUMIUnionExternalizer.m */; }; - E85E7B082A4EB0D200B6D00A /* YUMIManeExecutiveSetExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A4D2A4EB0D200B6D00A /* YUMIManeExecutiveSetExternalizer.m */; }; - E85E7B092A4EB0D200B6D00A /* YUMIUnionRemoveComponentExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A4E2A4EB0D200B6D00A /* YUMIUnionRemoveComponentExternalizer.m */; }; - E85E7B0A2A4EB0D200B6D00A /* YUMIUnionExecutivePerExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A502A4EB0D200B6D00A /* YUMIUnionExecutivePerExternalizer.m */; }; - E85E7B0B2A4EB0D200B6D00A /* YUMIUnionSetNameExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A512A4EB0D200B6D00A /* YUMIUnionSetNameExternalizer.m */; }; - E85E7B0C2A4EB0D200B6D00A /* YUMIUnionMangerStatementExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A532A4EB0D200B6D00A /* YUMIUnionMangerStatementExternalizer.m */; }; - E85E7B0D2A4EB0D200B6D00A /* UnionSensationalManagementAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A702A4EB0D200B6D00A /* UnionSensationalManagementAbstractMatrix.m */; }; - E85E7B0E2A4EB0D200B6D00A /* UnionHuntforSensationalManagementMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A712A4EB0D200B6D00A /* UnionHuntforSensationalManagementMatrix.m */; }; - E85E7B0F2A4EB0D200B6D00A /* UnionChamberAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A722A4EB0D200B6D00A /* UnionChamberAbstractMatrix.m */; }; - E85E7B102A4EB0D200B6D00A /* UnionRevenueSpecificMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A772A4EB0D200B6D00A /* UnionRevenueSpecificMatrix.m */; }; - E85E7B112A4EB0D200B6D00A /* UnionFeatureRevenueReflectionMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A782A4EB0D200B6D00A /* UnionFeatureRevenueReflectionMatrix.m */; }; - E85E7B122A4EB0D200B6D00A /* UnionRevenueReflectionMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A792A4EB0D200B6D00A /* UnionRevenueReflectionMatrix.m */; }; - E85E7B132A4EB0D200B6D00A /* UnionHuntforConsumerAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A7C2A4EB0D200B6D00A /* UnionHuntforConsumerAbstractMatrix.m */; }; - E85E7B142A4EB0D200B6D00A /* UnionAuthMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A7E2A4EB0D200B6D00A /* UnionAuthMatrix.m */; }; - E85E7B152A4EB0D200B6D00A /* CollectiveAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A7F2A4EB0D200B6D00A /* CollectiveAbstractMatrix.m */; }; - E85E7B162A4EB0D200B6D00A /* UnionAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A802A4EB0D200B6D00A /* UnionAbstractMatrix.m */; }; - E85E7B172A4EB0D200B6D00A /* CollectiveComponentSpecificAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A812A4EB0D200B6D00A /* CollectiveComponentSpecificAbstractMatrix.m */; }; - E85E7B182A4EB0D200B6D00A /* CollectiveSpecificAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A822A4EB0D200B6D00A /* CollectiveSpecificAbstractMatrix.m */; }; - E85E7B192A4EB0D200B6D00A /* UnionCommunicationMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A832A4EB0D200B6D00A /* UnionCommunicationMatrix.m */; }; - E85E7B1A2A4EB0D200B6D00A /* YUMIManeGoldRevenueReflectionVC.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A882A4EB0D200B6D00A /* YUMIManeGoldRevenueReflectionVC.m */; }; - E85E7B1B2A4EB0D200B6D00A /* YUMIManeMainRevenueStatsticsRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A8A2A4EB0D200B6D00A /* YUMIManeMainRevenueStatsticsRegardGovernancer.m */; }; - E85E7B1C2A4EB0D200B6D00A /* YUMIManeHallKellegRevenueStatsticsRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A8B2A4EB0D200B6D00A /* YUMIManeHallKellegRevenueStatsticsRegardGovernancer.m */; }; - E85E7B1D2A4EB0D200B6D00A /* YUMIManeCollectiveRevenueStatsticsRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A8C2A4EB0D200B6D00A /* YUMIManeCollectiveRevenueStatsticsRegardGovernancer.m */; }; - E85E7B1E2A4EB0D200B6D00A /* YUMIManeKellegRevenueStatsticsRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A912A4EB0D200B6D00A /* YUMIManeKellegRevenueStatsticsRegardGovernancer.m */; }; - E85E7B1F2A4EB0D300B6D00A /* YUMIManeUnionRevenueStatsticsRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A932A4EB0D200B6D00A /* YUMIManeUnionRevenueStatsticsRegardGovernancer.m */; }; - E85E7B202A4EB0D300B6D00A /* YUMIManeUnionRevenueSpecificRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A942A4EB0D200B6D00A /* YUMIManeUnionRevenueSpecificRegardGovernancer.m */; }; - E85E7B212A4EB0D300B6D00A /* YUMIStrangeManeUnionRevenueReflectionRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A952A4EB0D200B6D00A /* YUMIStrangeManeUnionRevenueReflectionRegardGovernancer.m */; }; - E85E7B222A4EB0D300B6D00A /* YUMIManeUnionRevenueReflectionRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A982A4EB0D200B6D00A /* YUMIManeUnionRevenueReflectionRegardGovernancer.m */; }; - E85E7B232A4EB0D300B6D00A /* YUMIManeCollectiveRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A9A2A4EB0D200B6D00A /* YUMIManeCollectiveRegardGovernancer.m */; }; - E85E7B242A4EB0D300B6D00A /* YUMIManeUnionSensationalManagementSetRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A9E2A4EB0D200B6D00A /* YUMIManeUnionSensationalManagementSetRegardGovernancer.m */; }; - E85E7B252A4EB0D300B6D00A /* YUMIManeUnionChooseExecutiveRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A9F2A4EB0D200B6D00A /* YUMIManeUnionChooseExecutiveRegardGovernancer.m */; }; - E85E7B262A4EB0D300B6D00A /* YUMIManeUnionRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AA02A4EB0D200B6D00A /* YUMIManeUnionRegardGovernancer.m */; }; - E85E7B272A4EB0D300B6D00A /* YUMIUnionSensationalManagementParrotRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AA42A4EB0D200B6D00A /* YUMIUnionSensationalManagementParrotRegard.m */; }; - E85E7B282A4EB0D300B6D00A /* YUMICollectiveParrotRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AA62A4EB0D200B6D00A /* YUMICollectiveParrotRegard.m */; }; - E85E7B292A4EB0D300B6D00A /* YUMIUnionIntratemporalPickRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AA72A4EB0D200B6D00A /* YUMIUnionIntratemporalPickRegard.m */; }; - E85E7B2A2A4EB0D300B6D00A /* YUMIUnionIntratemporalMonthPickerRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AAC2A4EB0D200B6D00A /* YUMIUnionIntratemporalMonthPickerRegard.m */; }; - E85E7B2B2A4EB0D300B6D00A /* YUMIStrangeUnionIntratemporalPickRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AAE2A4EB0D200B6D00A /* YUMIStrangeUnionIntratemporalPickRegard.m */; }; - E85E7B2C2A4EB0D300B6D00A /* YUMICollectiveDivisionRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AB12A4EB0D200B6D00A /* YUMICollectiveDivisionRegard.m */; }; - E85E7B2D2A4EB0D300B6D00A /* YUMIUnionIntelligencerRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AB22A4EB0D200B6D00A /* YUMIUnionIntelligencerRegard.m */; }; - E85E7B2E2A4EB0D300B6D00A /* YUMIUnionHuntforNevRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AB72A4EB0D200B6D00A /* YUMIUnionHuntforNevRegard.m */; }; - E85E7B2F2A4EB0D300B6D00A /* YUMIGoldRevenueDivisionRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AB82A4EB0D200B6D00A /* YUMIGoldRevenueDivisionRegard.m */; }; - E85E7B302A4EB0D300B6D00A /* YUMIUnionRevenueIntelligencerRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AB92A4EB0D200B6D00A /* YUMIUnionRevenueIntelligencerRegard.m */; }; - E85E7B312A4EB0D300B6D00A /* YUMIStrangeUnionRevenueIntelligencerRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7ABB2A4EB0D200B6D00A /* YUMIStrangeUnionRevenueIntelligencerRegard.m */; }; - E85E7B322A4EB0D300B6D00A /* YUMIUnionKellegRevenueDivisionRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7ABC2A4EB0D200B6D00A /* YUMIUnionKellegRevenueDivisionRegard.m */; }; - E85E7B332A4EB0D300B6D00A /* YUMIUnionRevenueDivisionRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7ABD2A4EB0D200B6D00A /* YUMIUnionRevenueDivisionRegard.m */; }; - E85E7B342A4EB0D300B6D00A /* YUMIManeMainUnionStatementVC.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7ABE2A4EB0D200B6D00A /* YUMIManeMainUnionStatementVC.m */; }; - E85E7B352A4EB0D300B6D00A /* YUMICollectiveComponentTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AC02A4EB0D200B6D00A /* YUMICollectiveComponentTabulationRegardElement.m */; }; - E85E7B362A4EB0D300B6D00A /* YUMICollectiveChamberAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AC12A4EB0D200B6D00A /* YUMICollectiveChamberAssembletionRegardElement.m */; }; - E85E7B372A4EB0D300B6D00A /* YUMIManeUnionStatementElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AC32A4EB0D200B6D00A /* YUMIManeUnionStatementElement.m */; }; - E85E7B382A4EB0D300B6D00A /* YUMIManeUnionHuntforComponentTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AC52A4EB0D200B6D00A /* YUMIManeUnionHuntforComponentTabulationRegardElement.m */; }; - E85E7B392A4EB0D300B6D00A /* YUMIUnionChooseExecutiveChamberTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7ACA2A4EB0D200B6D00A /* YUMIUnionChooseExecutiveChamberTabulationRegardElement.m */; }; - E85E7B3A2A4EB0D300B6D00A /* YUMIUnionSensationalManagementSetTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7ACB2A4EB0D200B6D00A /* YUMIUnionSensationalManagementSetTabulationRegardElement.m */; }; - E85E7B3B2A4EB0D300B6D00A /* YUMIUnionHuntforSensationalManagementTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7ACC2A4EB0D200B6D00A /* YUMIUnionHuntforSensationalManagementTabulationRegardElement.m */; }; - E85E7B3C2A4EB0D300B6D00A /* YUMIUnionSensationalManagementChamberAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7ACD2A4EB0D200B6D00A /* YUMIUnionSensationalManagementChamberAssembletionRegardElement.m */; }; - E85E7B3D2A4EB0D300B6D00A /* YUMIUnionRevenueSpecificAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AD22A4EB0D200B6D00A /* YUMIUnionRevenueSpecificAssembletionRegardElement.m */; }; - E85E7B3E2A4EB0D300B6D00A /* YUMIUnionRevenueReflectionTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AD32A4EB0D200B6D00A /* YUMIUnionRevenueReflectionTabulationRegardElement.m */; }; - E85E7B3F2A4EB0D300B6D00A /* YUMIUnionSingleChamberRevenueTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AD52A4EB0D200B6D00A /* YUMIUnionSingleChamberRevenueTabulationRegardElement.m */; }; - E85E7B402A4EB0D300B6D00A /* YUMIUnionFeatureRevenueTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AD72A4EB0D200B6D00A /* YUMIUnionFeatureRevenueTabulationRegardElement.m */; }; - E85E7B412A4EB0D300B6D00A /* YUMIManeUnionDispossessTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7ADC2A4EB0D200B6D00A /* YUMIManeUnionDispossessTabulationRegardElement.m */; }; - E85E7B422A4EB0D300B6D00A /* YUMIManePromptWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AE02A4EB0D200B6D00A /* YUMIManePromptWindow.m */; }; - E85E7B432A4EB0D300B6D00A /* YUMIManeExchangeAuthorityIntelligenceRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AE22A4EB0D200B6D00A /* YUMIManeExchangeAuthorityIntelligenceRegard.m */; }; - E85E7B442A4EB0D300B6D00A /* YUMIManeExchangeAuthorityElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AE32A4EB0D200B6D00A /* YUMIManeExchangeAuthorityElement.m */; }; - E85E7B452A4EB0D300B6D00A /* YUMIManeExchangeAuthorityFooderRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AE62A4EB0D200B6D00A /* YUMIManeExchangeAuthorityFooderRegard.m */; }; - E85E7B462A4EB0D300B6D00A /* YUMIUnionDispossessAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AE72A4EB0D200B6D00A /* YUMIUnionDispossessAssembletionRegardElement.m */; }; - E85E7B472A4EB0D300B6D00A /* YUMIManeUnionExecutivePerTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AE92A4EB0D200B6D00A /* YUMIManeUnionExecutivePerTabulationRegardElement.m */; }; - E85E7B492A4EB0D300B6D00A /* YUMIManeUnionHuntforRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AED2A4EB0D200B6D00A /* YUMIManeUnionHuntforRegardGovernancer.m */; }; - E85E7B4A2A4EB0D300B6D00A /* YUMIManeMangerStatementRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AF12A4EB0D200B6D00A /* YUMIManeMangerStatementRegardGovernancer.m */; }; - E85E7B4B2A4EB0D300B6D00A /* YUMIManeUnionExecutiveSetRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AF32A4EB0D200B6D00A /* YUMIManeUnionExecutiveSetRegardGovernancer.m */; }; - E85E7B4C2A4EB0D300B6D00A /* YUMIManeUnionExecutivePerRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AF42A4EB0D200B6D00A /* YUMIManeUnionExecutivePerRegardGovernancer.m */; }; - E85E7B4D2A4EB0D300B6D00A /* YUMIManeUnionRemoveComponentRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AF62A4EB0D200B6D00A /* YUMIManeUnionRemoveComponentRegardGovernancer.m */; }; - E85E7B4E2A4EB0D300B6D00A /* YUMIManeUnionSetNameRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AF82A4EB0D200B6D00A /* YUMIManeUnionSetNameRegardGovernancer.m */; }; - E85E7B4F2A4EB0D300B6D00A /* YUMIManeExchangeAuthorityVC.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AFA2A4EB0D200B6D00A /* YUMIManeExchangeAuthorityVC.m */; }; - E85E7B502A4EB0D300B6D00A /* YUMIManeUnionStatementVC.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AFD2A4EB0D200B6D00A /* YUMIManeUnionStatementVC.m */; }; + E85E3FA728B7A6F000268DC8 /* MessageContentMonentsView.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E3FA628B7A6F000268DC8 /* MessageContentMonentsView.m */; }; + E85E7B012A4EB0D200B6D00A /* XPSuperAdminSetPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A402A4EB0D200B6D00A /* XPSuperAdminSetPresenter.m */; }; + E85E7B022A4EB0D200B6D00A /* XPSuperAdminManagerRoomPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A412A4EB0D200B6D00A /* XPSuperAdminManagerRoomPresenter.m */; }; + E85E7B032A4EB0D200B6D00A /* XPGuildIncomePresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A452A4EB0D200B6D00A /* XPGuildIncomePresenter.m */; }; + E85E7B042A4EB0D200B6D00A /* XPGuildIncomeDetailPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A462A4EB0D200B6D00A /* XPGuildIncomeDetailPresenter.m */; }; + E85E7B052A4EB0D200B6D00A /* XPClanPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A492A4EB0D200B6D00A /* XPClanPresenter.m */; }; + E85E7B062A4EB0D200B6D00A /* XPGuildSearchPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A4A2A4EB0D200B6D00A /* XPGuildSearchPresenter.m */; }; + E85E7B072A4EB0D200B6D00A /* XPGuildPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A4B2A4EB0D200B6D00A /* XPGuildPresenter.m */; }; + E85E7B082A4EB0D200B6D00A /* XPMineManagerSetPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A4D2A4EB0D200B6D00A /* XPMineManagerSetPresenter.m */; }; + E85E7B092A4EB0D200B6D00A /* XPGuildRemoveMemberPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A4E2A4EB0D200B6D00A /* XPGuildRemoveMemberPresenter.m */; }; + E85E7B0A2A4EB0D200B6D00A /* XPGuildManagerPerPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A502A4EB0D200B6D00A /* XPGuildManagerPerPresenter.m */; }; + E85E7B0B2A4EB0D200B6D00A /* XPGuildSetNamePresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A512A4EB0D200B6D00A /* XPGuildSetNamePresenter.m */; }; + E85E7B0C2A4EB0D200B6D00A /* XPGuildMangerListPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A532A4EB0D200B6D00A /* XPGuildMangerListPresenter.m */; }; + E85E7B0D2A4EB0D200B6D00A /* GuildSuperAdminInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A702A4EB0D200B6D00A /* GuildSuperAdminInfoModel.m */; }; + E85E7B0E2A4EB0D200B6D00A /* GuildSearchSuperAdminModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A712A4EB0D200B6D00A /* GuildSearchSuperAdminModel.m */; }; + E85E7B0F2A4EB0D200B6D00A /* GuildRoomInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A722A4EB0D200B6D00A /* GuildRoomInfoModel.m */; }; + E85E7B102A4EB0D200B6D00A /* GuildIncomeDetailModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A772A4EB0D200B6D00A /* GuildIncomeDetailModel.m */; }; + E85E7B112A4EB0D200B6D00A /* GuildPersonIncomeRecordModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A782A4EB0D200B6D00A /* GuildPersonIncomeRecordModel.m */; }; + E85E7B122A4EB0D200B6D00A /* GuildIncomeRecordModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A792A4EB0D200B6D00A /* GuildIncomeRecordModel.m */; }; + E85E7B132A4EB0D200B6D00A /* GuildSearchUserInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A7C2A4EB0D200B6D00A /* GuildSearchUserInfoModel.m */; }; + E85E7B142A4EB0D200B6D00A /* GuildAuthModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A7E2A4EB0D200B6D00A /* GuildAuthModel.m */; }; + E85E7B152A4EB0D200B6D00A /* ClanInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A7F2A4EB0D200B6D00A /* ClanInfoModel.m */; }; + E85E7B162A4EB0D200B6D00A /* GuildInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A802A4EB0D200B6D00A /* GuildInfoModel.m */; }; + E85E7B172A4EB0D200B6D00A /* ClanMemberDetailInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A812A4EB0D200B6D00A /* ClanMemberDetailInfoModel.m */; }; + E85E7B182A4EB0D200B6D00A /* ClanDetailInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A822A4EB0D200B6D00A /* ClanDetailInfoModel.m */; }; + E85E7B192A4EB0D200B6D00A /* GuildMessageModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A832A4EB0D200B6D00A /* GuildMessageModel.m */; }; + E85E7B1A2A4EB0D200B6D00A /* XPMineGoldIncomeRecordVC.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A882A4EB0D200B6D00A /* XPMineGoldIncomeRecordVC.m */; }; + E85E7B1B2A4EB0D200B6D00A /* XPMineMainIncomeStatisViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A8A2A4EB0D200B6D00A /* XPMineMainIncomeStatisViewController.m */; }; + E85E7B1C2A4EB0D200B6D00A /* XPMineHallAnchorIncomeStatisViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A8B2A4EB0D200B6D00A /* XPMineHallAnchorIncomeStatisViewController.m */; }; + E85E7B1D2A4EB0D200B6D00A /* XPMineClanIncomeStatisViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A8C2A4EB0D200B6D00A /* XPMineClanIncomeStatisViewController.m */; }; + E85E7B1E2A4EB0D200B6D00A /* XPMineAnchorIncomeStatisViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A912A4EB0D200B6D00A /* XPMineAnchorIncomeStatisViewController.m */; }; + E85E7B1F2A4EB0D300B6D00A /* XPMineGuildIncomeStatisViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A932A4EB0D200B6D00A /* XPMineGuildIncomeStatisViewController.m */; }; + E85E7B202A4EB0D300B6D00A /* XPMineGuildIncomeDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A942A4EB0D200B6D00A /* XPMineGuildIncomeDetailViewController.m */; }; + E85E7B212A4EB0D300B6D00A /* XPNewMineGuildIncomeRecordViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A952A4EB0D200B6D00A /* XPNewMineGuildIncomeRecordViewController.m */; }; + E85E7B222A4EB0D300B6D00A /* XPMineGuildIncomeRecordViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A982A4EB0D200B6D00A /* XPMineGuildIncomeRecordViewController.m */; }; + E85E7B232A4EB0D300B6D00A /* XPMineClanViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A9A2A4EB0D200B6D00A /* XPMineClanViewController.m */; }; + E85E7B242A4EB0D300B6D00A /* XPMineGuildSuperAdminSetViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A9E2A4EB0D200B6D00A /* XPMineGuildSuperAdminSetViewController.m */; }; + E85E7B252A4EB0D300B6D00A /* XPMineGuildChooseManagerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7A9F2A4EB0D200B6D00A /* XPMineGuildChooseManagerViewController.m */; }; + E85E7B262A4EB0D300B6D00A /* XPMineGuildViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AA02A4EB0D200B6D00A /* XPMineGuildViewController.m */; }; + E85E7B272A4EB0D300B6D00A /* XPGuildSuperAdminMenuView.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AA42A4EB0D200B6D00A /* XPGuildSuperAdminMenuView.m */; }; + E85E7B282A4EB0D300B6D00A /* XPClanMenuView.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AA62A4EB0D200B6D00A /* XPClanMenuView.m */; }; + E85E7B292A4EB0D300B6D00A /* XPGuildTimePickView.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AA72A4EB0D200B6D00A /* XPGuildTimePickView.m */; }; + E85E7B2A2A4EB0D300B6D00A /* XPGuildTimeMonthPickerView.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AAC2A4EB0D200B6D00A /* XPGuildTimeMonthPickerView.m */; }; + E85E7B2B2A4EB0D300B6D00A /* XPNewGuildTimePickView.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AAE2A4EB0D200B6D00A /* XPNewGuildTimePickView.m */; }; + E85E7B2C2A4EB0D300B6D00A /* XPClanSectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AB12A4EB0D200B6D00A /* XPClanSectionView.m */; }; + E85E7B2D2A4EB0D300B6D00A /* XPGuildHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AB22A4EB0D200B6D00A /* XPGuildHeaderView.m */; }; + E85E7B2E2A4EB0D300B6D00A /* XPGuildSearchNavView.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AB72A4EB0D200B6D00A /* XPGuildSearchNavView.m */; }; + E85E7B2F2A4EB0D300B6D00A /* XPGoldIncomeSectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AB82A4EB0D200B6D00A /* XPGoldIncomeSectionView.m */; }; + E85E7B302A4EB0D300B6D00A /* XPGuildIncomeHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AB92A4EB0D200B6D00A /* XPGuildIncomeHeaderView.m */; }; + E85E7B312A4EB0D300B6D00A /* XPNewGuildIncomeHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7ABB2A4EB0D200B6D00A /* XPNewGuildIncomeHeaderView.m */; }; + E85E7B322A4EB0D300B6D00A /* XPGuildAnchorIncomeSectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7ABC2A4EB0D200B6D00A /* XPGuildAnchorIncomeSectionView.m */; }; + E85E7B332A4EB0D300B6D00A /* XPGuildIncomeSectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7ABD2A4EB0D200B6D00A /* XPGuildIncomeSectionView.m */; }; + E85E7B342A4EB0D300B6D00A /* XPMineMainGuildListVC.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7ABE2A4EB0D200B6D00A /* XPMineMainGuildListVC.m */; }; + E85E7B352A4EB0D300B6D00A /* XPClanMemberTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AC02A4EB0D200B6D00A /* XPClanMemberTableViewCell.m */; }; + E85E7B362A4EB0D300B6D00A /* XPClanRoomCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AC12A4EB0D200B6D00A /* XPClanRoomCollectionViewCell.m */; }; + E85E7B372A4EB0D300B6D00A /* XPMineGuildListCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AC32A4EB0D200B6D00A /* XPMineGuildListCell.m */; }; + E85E7B382A4EB0D300B6D00A /* XPMineGuildSearchMemberTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AC52A4EB0D200B6D00A /* XPMineGuildSearchMemberTableViewCell.m */; }; + E85E7B392A4EB0D300B6D00A /* XPGuildChooseManagerRoomTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7ACA2A4EB0D200B6D00A /* XPGuildChooseManagerRoomTableViewCell.m */; }; + E85E7B3A2A4EB0D300B6D00A /* XPGuildSuperAdminSetTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7ACB2A4EB0D200B6D00A /* XPGuildSuperAdminSetTableViewCell.m */; }; + E85E7B3B2A4EB0D300B6D00A /* XPGuildSearchSuperAdminTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7ACC2A4EB0D200B6D00A /* XPGuildSearchSuperAdminTableViewCell.m */; }; + E85E7B3C2A4EB0D300B6D00A /* XPGuildSuperAdminRoomCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7ACD2A4EB0D200B6D00A /* XPGuildSuperAdminRoomCollectionViewCell.m */; }; + E85E7B3D2A4EB0D300B6D00A /* XPGuildIncomeDetailCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AD22A4EB0D200B6D00A /* XPGuildIncomeDetailCollectionViewCell.m */; }; + E85E7B3E2A4EB0D300B6D00A /* XPGuildIncomeRecordTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AD32A4EB0D200B6D00A /* XPGuildIncomeRecordTableViewCell.m */; }; + E85E7B3F2A4EB0D300B6D00A /* XPGuildSingleRoomIncomeTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AD52A4EB0D200B6D00A /* XPGuildSingleRoomIncomeTableViewCell.m */; }; + E85E7B402A4EB0D300B6D00A /* XPGuildPersonIncomeTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AD72A4EB0D200B6D00A /* XPGuildPersonIncomeTableViewCell.m */; }; + E85E7B412A4EB0D300B6D00A /* XPMineGuildEmptyTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7ADC2A4EB0D200B6D00A /* XPMineGuildEmptyTableViewCell.m */; }; + E85E7B422A4EB0D300B6D00A /* XPMinePromptWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AE02A4EB0D200B6D00A /* XPMinePromptWindow.m */; }; + E85E7B432A4EB0D300B6D00A /* XPMineExchangeAuthorityHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AE22A4EB0D200B6D00A /* XPMineExchangeAuthorityHeadView.m */; }; + E85E7B442A4EB0D300B6D00A /* XPMineExchangeAuthorityCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AE32A4EB0D200B6D00A /* XPMineExchangeAuthorityCell.m */; }; + E85E7B452A4EB0D300B6D00A /* XPMineExchangeAuthorityFooderView.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AE62A4EB0D200B6D00A /* XPMineExchangeAuthorityFooderView.m */; }; + E85E7B462A4EB0D300B6D00A /* XPGuildEmptyCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AE72A4EB0D200B6D00A /* XPGuildEmptyCollectionViewCell.m */; }; + E85E7B472A4EB0D300B6D00A /* XPMineGuildManagerPerTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AE92A4EB0D200B6D00A /* XPMineGuildManagerPerTableViewCell.m */; }; + E85E7B492A4EB0D300B6D00A /* XPMineGuildSearchViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AED2A4EB0D200B6D00A /* XPMineGuildSearchViewController.m */; }; + E85E7B4A2A4EB0D300B6D00A /* XPMineMangerListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AF12A4EB0D200B6D00A /* XPMineMangerListViewController.m */; }; + E85E7B4B2A4EB0D300B6D00A /* XPMineGuildManagerSetViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AF32A4EB0D200B6D00A /* XPMineGuildManagerSetViewController.m */; }; + E85E7B4C2A4EB0D300B6D00A /* XPMineGuildManagerPerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AF42A4EB0D200B6D00A /* XPMineGuildManagerPerViewController.m */; }; + E85E7B4D2A4EB0D300B6D00A /* XPMineGuildRemoveMemberViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AF62A4EB0D200B6D00A /* XPMineGuildRemoveMemberViewController.m */; }; + E85E7B4E2A4EB0D300B6D00A /* XPMineGuildSetNameViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AF82A4EB0D200B6D00A /* XPMineGuildSetNameViewController.m */; }; + E85E7B4F2A4EB0D300B6D00A /* XPMineExchangeAuthorityVC.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AFA2A4EB0D200B6D00A /* XPMineExchangeAuthorityVC.m */; }; + E85E7B502A4EB0D300B6D00A /* XPMineGuildListVC.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AFD2A4EB0D200B6D00A /* XPMineGuildListVC.m */; }; E85E7B512A4EB0D300B6D00A /* Api+Guild.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7AFF2A4EB0D200B6D00A /* Api+Guild.m */; }; - E85E7B542A4EB4AD00B6D00A /* YUMIManeUnionStatementMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B532A4EB4AD00B6D00A /* YUMIManeUnionStatementMatrix.m */; }; - E85E7B632A4EC35A00B6D00A /* YUMIWithdrawAccountMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B5D2A4EC35A00B6D00A /* YUMIWithdrawAccountMatrix.m */; }; - E85E7B642A4EC35A00B6D00A /* YUMIRevenueReflectionMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B5E2A4EC35A00B6D00A /* YUMIRevenueReflectionMatrix.m */; }; - E85E7B652A4EC35A00B6D00A /* YUMIExchangeDiamondsMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B5F2A4EC35A00B6D00A /* YUMIExchangeDiamondsMatrix.m */; }; - E85E7B662A4EC35A00B6D00A /* YUMIRevenueReflectionGoldSpecificsMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B602A4EC35A00B6D00A /* YUMIRevenueReflectionGoldSpecificsMatrix.m */; }; - E85E7B672A4EC35A00B6D00A /* YUMIDilemmaExtractAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B612A4EC35A00B6D00A /* YUMIDilemmaExtractAbstractMatrix.m */; }; - E85E7B6B2A4EC39400B6D00A /* YUMIManeExchangeAuthorityMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B692A4EC39400B6D00A /* YUMIManeExchangeAuthorityMatrix.m */; }; - E85E7B6E2A4EC4AE00B6D00A /* YUMIManeUnionExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B6C2A4EC4AE00B6D00A /* YUMIManeUnionExternalizer.m */; }; - E85E7B9F2A4EC99300B6D00A /* YUMIManeGiveDiamondExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B752A4EC99200B6D00A /* YUMIManeGiveDiamondExternalizer.m */; }; - E85E7BA02A4EC99300B6D00A /* YUMIManeGiveDiamondSpecificsMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B7A2A4EC99200B6D00A /* YUMIManeGiveDiamondSpecificsMatrix.m */; }; - E85E7BA12A4EC99300B6D00A /* YUMIManeGiveDiamondMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B7B2A4EC99200B6D00A /* YUMIManeGiveDiamondMatrix.m */; }; - E85E7BA22A4EC99300B6D00A /* YUMIManeGiveDiamondHuntforMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B7F2A4EC99200B6D00A /* YUMIManeGiveDiamondHuntforMatrix.m */; }; - E85E7BA32A4EC99300B6D00A /* YUMIManeGiveDiamondSpecificsVC.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B832A4EC99200B6D00A /* YUMIManeGiveDiamondSpecificsVC.m */; }; - E85E7BA42A4EC99300B6D00A /* YUMIManeGiveDiamondElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B862A4EC99200B6D00A /* YUMIManeGiveDiamondElement.m */; }; - E85E7BA52A4EC99300B6D00A /* YUMIManeChooseGiveDiamondRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B872A4EC99200B6D00A /* YUMIManeChooseGiveDiamondRegard.m */; }; - E85E7BA62A4EC99300B6D00A /* YUMIManeGiveDiamondHuntforRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B892A4EC99200B6D00A /* YUMIManeGiveDiamondHuntforRegard.m */; }; - E85E7BA72A4EC99300B6D00A /* YUMIManeGiveDiamondCiphercodeRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B8A2A4EC99200B6D00A /* YUMIManeGiveDiamondCiphercodeRegard.m */; }; - E85E7BA82A4EC99300B6D00A /* YUMIManeChooseGivePresentRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B922A4EC99200B6D00A /* YUMIManeChooseGivePresentRegardElement.m */; }; - E85E7BA92A4EC99300B6D00A /* YUMIManeConfirmGiveDiamondRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B952A4EC99200B6D00A /* YUMIManeConfirmGiveDiamondRegard.m */; }; - E85E7BAA2A4EC99300B6D00A /* YUMIManeGiveDiamondPwordRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B962A4EC99200B6D00A /* YUMIManeGiveDiamondPwordRegard.m */; }; - E85E7BAB2A4EC99300B6D00A /* YUMIManeChooseGivePresentRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B972A4EC99200B6D00A /* YUMIManeChooseGivePresentRegard.m */; }; - E85E7BAC2A4EC99300B6D00A /* YUMIManeGiveDiamondSpecificsRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B982A4EC99200B6D00A /* YUMIManeGiveDiamondSpecificsRegard.m */; }; - E85E7BAD2A4EC99300B6D00A /* YUMIManeGiveDiamondSpecificsElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B992A4EC99200B6D00A /* YUMIManeGiveDiamondSpecificsElement.m */; }; - E85E7BAE2A4EC99300B6D00A /* YUMIManeGiveDiamondVC.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B9A2A4EC99200B6D00A /* YUMIManeGiveDiamondVC.m */; }; - E85E7BAF2A4EC99300B6D00A /* YUMIManeChooseGiveDiamondVC.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B9B2A4EC99200B6D00A /* YUMIManeChooseGiveDiamondVC.m */; }; + E85E7B542A4EB4AD00B6D00A /* XPMineGuildListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B532A4EB4AD00B6D00A /* XPMineGuildListModel.m */; }; + E85E7B632A4EC35A00B6D00A /* XPWithdrawAccountModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B5D2A4EC35A00B6D00A /* XPWithdrawAccountModel.m */; }; + E85E7B642A4EC35A00B6D00A /* XPIncomeRecordModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B5E2A4EC35A00B6D00A /* XPIncomeRecordModel.m */; }; + E85E7B652A4EC35A00B6D00A /* XPExchangeDiamondsModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B5F2A4EC35A00B6D00A /* XPExchangeDiamondsModel.m */; }; + E85E7B662A4EC35A00B6D00A /* XPIncomeRecordGoldDetailsModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B602A4EC35A00B6D00A /* XPIncomeRecordGoldDetailsModel.m */; }; + E85E7B672A4EC35A00B6D00A /* XPBindExtractInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B612A4EC35A00B6D00A /* XPBindExtractInfoModel.m */; }; + E85E7B6B2A4EC39400B6D00A /* XPMineExchangeAuthorityModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B692A4EC39400B6D00A /* XPMineExchangeAuthorityModel.m */; }; + E85E7B6E2A4EC4AE00B6D00A /* XPMineGuildPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B6C2A4EC4AE00B6D00A /* XPMineGuildPresenter.m */; }; + E85E7B9F2A4EC99300B6D00A /* XPMineGiveDiamondPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B752A4EC99200B6D00A /* XPMineGiveDiamondPresenter.m */; }; + E85E7BA02A4EC99300B6D00A /* XPMineGiveDiamondDetailsModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B7A2A4EC99200B6D00A /* XPMineGiveDiamondDetailsModel.m */; }; + E85E7BA12A4EC99300B6D00A /* XPMineGiveDiamondModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B7B2A4EC99200B6D00A /* XPMineGiveDiamondModel.m */; }; + E85E7BA22A4EC99300B6D00A /* XPMineGiveDiamondSearchModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B7F2A4EC99200B6D00A /* XPMineGiveDiamondSearchModel.m */; }; + E85E7BA32A4EC99300B6D00A /* XPMineGiveDiamondDetailsVC.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B832A4EC99200B6D00A /* XPMineGiveDiamondDetailsVC.m */; }; + E85E7BA42A4EC99300B6D00A /* XPMineGiveDiamondCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B862A4EC99200B6D00A /* XPMineGiveDiamondCell.m */; }; + E85E7BA52A4EC99300B6D00A /* XPMineChooseGiveDiamondView.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B872A4EC99200B6D00A /* XPMineChooseGiveDiamondView.m */; }; + E85E7BA62A4EC99300B6D00A /* XPMineGiveDiamondSearchView.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B892A4EC99200B6D00A /* XPMineGiveDiamondSearchView.m */; }; + E85E7BA72A4EC99300B6D00A /* XPMineGiveDiamondPasswordView.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B8A2A4EC99200B6D00A /* XPMineGiveDiamondPasswordView.m */; }; + E85E7BA82A4EC99300B6D00A /* XPMineChooseGiveGiftViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B922A4EC99200B6D00A /* XPMineChooseGiveGiftViewCell.m */; }; + E85E7BA92A4EC99300B6D00A /* XPMineConfirmGiveDiamondView.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B952A4EC99200B6D00A /* XPMineConfirmGiveDiamondView.m */; }; + E85E7BAA2A4EC99300B6D00A /* XPMineGiveDiamondPwdView.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B962A4EC99200B6D00A /* XPMineGiveDiamondPwdView.m */; }; + E85E7BAB2A4EC99300B6D00A /* XPMineChooseGiveGiftView.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B972A4EC99200B6D00A /* XPMineChooseGiveGiftView.m */; }; + E85E7BAC2A4EC99300B6D00A /* XPMineGiveDiamondDetailsView.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B982A4EC99200B6D00A /* XPMineGiveDiamondDetailsView.m */; }; + E85E7BAD2A4EC99300B6D00A /* XPMineGiveDiamondDetailsCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B992A4EC99200B6D00A /* XPMineGiveDiamondDetailsCell.m */; }; + E85E7BAE2A4EC99300B6D00A /* XPMineGiveDiamondVC.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B9A2A4EC99200B6D00A /* XPMineGiveDiamondVC.m */; }; + E85E7BAF2A4EC99300B6D00A /* XPMineChooseGiveDiamondVC.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B9B2A4EC99200B6D00A /* XPMineChooseGiveDiamondVC.m */; }; E85E7BB02A4EC99300B6D00A /* Api+GiveDiamond.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7B9E2A4EC99200B6D00A /* Api+GiveDiamond.m */; }; - E85E7BB32A4ED45300B6D00A /* YUMIPageControl.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7BB22A4ED45300B6D00A /* YUMIPageControl.m */; }; - E85E7BB62A4ED59900B6D00A /* YUMIRevenueReflectionGoldSpecificsElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7BB52A4ED59900B6D00A /* YUMIRevenueReflectionGoldSpecificsElement.m */; }; - E85E7BB92A4ED89F00B6D00A /* YUMIRevenueReflectionGoldSpecificsIntelligenceRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7BB82A4ED89F00B6D00A /* YUMIRevenueReflectionGoldSpecificsIntelligenceRegard.m */; }; - E85E7BBC2A4EE70B00B6D00A /* YUMIManeTheUnionElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7BBB2A4EE70B00B6D00A /* YUMIManeTheUnionElement.m */; }; - E85E7BBF2A4EE7AC00B6D00A /* YUMIManeFeaturealConcentrateElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7BBE2A4EE7AC00B6D00A /* YUMIManeFeaturealConcentrateElement.m */; }; - E85E7BC22A4EE82300B6D00A /* YUMIManeStatementElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7BC12A4EE82300B6D00A /* YUMIManeStatementElement.m */; }; - E86507E5281A7D4D006951B0 /* CommunicationSatisfactionTweetRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E86507E4281A7D4D006951B0 /* CommunicationSatisfactionTweetRegard.m */; }; - E86507E8281A8212006951B0 /* SatisfactionTweetMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E86507E7281A8212006951B0 /* SatisfactionTweetMatrix.m */; }; - E86507EB281A88A9006951B0 /* CommunicationSatisfactionCommunicationSolitaireRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E86507EA281A88A9006951B0 /* CommunicationSatisfactionCommunicationSolitaireRegard.m */; }; + E85E7BB32A4ED45300B6D00A /* XPPageControl.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7BB22A4ED45300B6D00A /* XPPageControl.m */; }; + E85E7BB62A4ED59900B6D00A /* XPIncomeRecordGoldDetailsCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7BB52A4ED59900B6D00A /* XPIncomeRecordGoldDetailsCell.m */; }; + E85E7BB92A4ED89F00B6D00A /* XPIncomeRecordGoldDetailsHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7BB82A4ED89F00B6D00A /* XPIncomeRecordGoldDetailsHeadView.m */; }; + E85E7BBC2A4EE70B00B6D00A /* XPMineTheGuildCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7BBB2A4EE70B00B6D00A /* XPMineTheGuildCell.m */; }; + E85E7BBF2A4EE7AC00B6D00A /* XPMinePersonalCenterCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7BBE2A4EE7AC00B6D00A /* XPMinePersonalCenterCell.m */; }; + E85E7BC22A4EE82300B6D00A /* XPMineListCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E85E7BC12A4EE82300B6D00A /* XPMineListCell.m */; }; + E86507E5281A7D4D006951B0 /* MessageContentTweetView.m in Sources */ = {isa = PBXBuildFile; fileRef = E86507E4281A7D4D006951B0 /* MessageContentTweetView.m */; }; + E86507E8281A8212006951B0 /* ContentTweetModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E86507E7281A8212006951B0 /* ContentTweetModel.m */; }; + E86507EB281A88A9006951B0 /* MessageContentSkillCardView.m in Sources */ = {isa = PBXBuildFile; fileRef = E86507EA281A88A9006951B0 /* MessageContentSkillCardView.m */; }; E86596432701611A00846EBD /* UIImage+ImageEffects.m in Sources */ = {isa = PBXBuildFile; fileRef = E86596412701611A00846EBD /* UIImage+ImageEffects.m */; }; - E86596512701A1C000846EBD /* StatsticsticsServing.m in Sources */ = {isa = PBXBuildFile; fileRef = E86596502701A1C000846EBD /* StatsticsticsServing.m */; }; - E86596542701A55500846EBD /* StatsticsticsServingFacilitater.m in Sources */ = {isa = PBXBuildFile; fileRef = E86596532701A55500846EBD /* StatsticsticsServingFacilitater.m */; }; - E8659909273E800D00EE349D /* YUMIPresentAssembletionRegardFlowProgramming.m in Sources */ = {isa = PBXBuildFile; fileRef = E8659908273E800D00EE349D /* YUMIPresentAssembletionRegardFlowProgramming.m */; }; - E8664ED027E42238000171BA /* YUMIChamberCombatIntratemporalPickerRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8664ECF27E42238000171BA /* YUMIChamberCombatIntratemporalPickerRegard.m */; }; - E8664ED327E4258A000171BA /* ChamberCombatIntratemporalProvisionMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8664ED227E4258A000171BA /* ChamberCombatIntratemporalProvisionMatrix.m */; }; - E8664ED627E434D5000171BA /* YUMIChamberCombatReflectionRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8664ED527E434D5000171BA /* YUMIChamberCombatReflectionRegardGovernancer.m */; }; - E8664ED927E4355C000171BA /* YUMIChamberCombatReflectionTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8664ED827E4355C000171BA /* YUMIChamberCombatReflectionTabulationRegardElement.m */; }; - E8664EDC27E43632000171BA /* YUMIChamberCombatDispossessTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8664EDB27E43632000171BA /* YUMIChamberCombatDispossessTabulationRegardElement.m */; }; - E8664EDF27E45EC7000171BA /* YUMIChamberCombatReflectionExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8664EDE27E45EC7000171BA /* YUMIChamberCombatReflectionExternalizer.m */; }; - E8664EE327E47711000171BA /* YUMIChamberCombatReflectionNickRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8664EE227E47711000171BA /* YUMIChamberCombatReflectionNickRegard.m */; }; - E8664EE627E482EF000171BA /* ChamberCombatSquadMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8664EE527E482EF000171BA /* ChamberCombatSquadMatrix.m */; }; - E866B6E52759F96F009B002A /* YUMIMiniChamberRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E866B6E42759F96F009B002A /* YUMIMiniChamberRegard.m */; }; - E8680718271967B00024F48F /* MiecreoscoopeRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8680717271967B00024F48F /* MiecreoscoopeRegard.m */; }; - E86A16BF2856D4D5004228B8 /* YUMIInterlocutionDiscoveryStrangeBewelcometoStatementRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E86A16BE2856D4D5004228B8 /* YUMIInterlocutionDiscoveryStrangeBewelcometoStatementRegard.m */; }; - E86A16C22856D635004228B8 /* YUMIInterlocutionDiscoveryStrangeBewelcometoTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E86A16C12856D635004228B8 /* YUMIInterlocutionDiscoveryStrangeBewelcometoTabulationRegardElement.m */; }; - E86A16C52856DBEC004228B8 /* DiscoveryStrangeBewelcometoStatementMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E86A16C42856DBEC004228B8 /* DiscoveryStrangeBewelcometoStatementMatrix.m */; }; - E86A16CE28574844004228B8 /* YUMIChamberLicneseHourRateRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E86A16CD28574844004228B8 /* YUMIChamberLicneseHourRateRegard.m */; }; - E86E79CD28A4E045006DAF48 /* CommunicationSatisfactionVenturePrecautiousRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E86E79CC28A4E045006DAF48 /* CommunicationSatisfactionVenturePrecautiousRegard.m */; }; - E86E79D028A4E0B2006DAF48 /* SatisfactionRistPrecautiousMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E86E79CF28A4E0B2006DAF48 /* SatisfactionRistPrecautiousMatrix.m */; }; - E86E79D328A4E94E006DAF48 /* InterlocutionVentureRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E86E79D228A4E94E006DAF48 /* InterlocutionVentureRegard.m */; }; - E86E79D628A4EA0C006DAF48 /* InterlocutionVentureCache.m in Sources */ = {isa = PBXBuildFile; fileRef = E86E79D528A4EA0C006DAF48 /* InterlocutionVentureCache.m */; }; - E86F6185284F4E4800E8EC9A /* ChamberHalfHourRateMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E86F6184284F4E4800E8EC9A /* ChamberHalfHourRateMatrix.m */; }; - E872309326E8D31500B90D4F /* SurmountValidationCodeRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E872309226E8D31500B90D4F /* SurmountValidationCodeRegard.m */; }; + E86596512701A1C000846EBD /* StatisticsService.m in Sources */ = {isa = PBXBuildFile; fileRef = E86596502701A1C000846EBD /* StatisticsService.m */; }; + E86596542701A55500846EBD /* StatisticsServiceHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = E86596532701A55500846EBD /* StatisticsServiceHelper.m */; }; + E8659909273E800D00EE349D /* XPGiftCollectionViewFlowLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = E8659908273E800D00EE349D /* XPGiftCollectionViewFlowLayout.m */; }; + E8664ED027E42238000171BA /* XPRoomPKTimePickerView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8664ECF27E42238000171BA /* XPRoomPKTimePickerView.m */; }; + E8664ED327E4258A000171BA /* RoomPKTimeItemModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8664ED227E4258A000171BA /* RoomPKTimeItemModel.m */; }; + E8664ED627E434D5000171BA /* XPRoomPKRecordViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8664ED527E434D5000171BA /* XPRoomPKRecordViewController.m */; }; + E8664ED927E4355C000171BA /* XPRoomPKRecordTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8664ED827E4355C000171BA /* XPRoomPKRecordTableViewCell.m */; }; + E8664EDC27E43632000171BA /* XPRoomPKEmptyTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8664EDB27E43632000171BA /* XPRoomPKEmptyTableViewCell.m */; }; + E8664EDF27E45EC7000171BA /* XPRoomPKRecordPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8664EDE27E45EC7000171BA /* XPRoomPKRecordPresenter.m */; }; + E8664EE327E47711000171BA /* XPRoomPKRecordNickView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8664EE227E47711000171BA /* XPRoomPKRecordNickView.m */; }; + E8664EE627E482EF000171BA /* RoomPKTeamModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8664EE527E482EF000171BA /* RoomPKTeamModel.m */; }; + E866B6E52759F96F009B002A /* XPMiniRoomView.m in Sources */ = {isa = PBXBuildFile; fileRef = E866B6E42759F96F009B002A /* XPMiniRoomView.m */; }; + E8680718271967B00024F48F /* MicroView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8680717271967B00024F48F /* MicroView.m */; }; + E86A16BF2856D4D5004228B8 /* XPSessionFindNewGreetListView.m in Sources */ = {isa = PBXBuildFile; fileRef = E86A16BE2856D4D5004228B8 /* XPSessionFindNewGreetListView.m */; }; + E86A16C22856D635004228B8 /* XPSessionFindNewGreetTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E86A16C12856D635004228B8 /* XPSessionFindNewGreetTableViewCell.m */; }; + E86A16C52856DBEC004228B8 /* FindNewGreetListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E86A16C42856DBEC004228B8 /* FindNewGreetListModel.m */; }; + E86A16CE28574844004228B8 /* XPRoomLicneseHourRankView.m in Sources */ = {isa = PBXBuildFile; fileRef = E86A16CD28574844004228B8 /* XPRoomLicneseHourRankView.m */; }; + E86E79CD28A4E045006DAF48 /* MessageContentRiskAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = E86E79CC28A4E045006DAF48 /* MessageContentRiskAlertView.m */; }; + E86E79D028A4E0B2006DAF48 /* ContentRistAlertModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E86E79CF28A4E0B2006DAF48 /* ContentRistAlertModel.m */; }; + E86E79D328A4E94E006DAF48 /* SessionRiskView.m in Sources */ = {isa = PBXBuildFile; fileRef = E86E79D228A4E94E006DAF48 /* SessionRiskView.m */; }; + E86E79D628A4EA0C006DAF48 /* SessionRiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = E86E79D528A4EA0C006DAF48 /* SessionRiskCache.m */; }; + E86F6185284F4E4800E8EC9A /* RoomHalfHourRankModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E86F6184284F4E4800E8EC9A /* RoomHalfHourRankModel.m */; }; + E872309326E8D31500B90D4F /* LoginVerifCodeView.m in Sources */ = {isa = PBXBuildFile; fileRef = E872309226E8D31500B90D4F /* LoginVerifCodeView.m */; }; E8729EEC2A3B34D30076D80A /* index.html in Resources */ = {isa = PBXBuildFile; fileRef = E8729EE72A3B34D20076D80A /* index.html */; }; E8729EED2A3B34D30076D80A /* upload.html in Resources */ = {isa = PBXBuildFile; fileRef = E8729EE82A3B34D20076D80A /* upload.html */; }; E8729EEE2A3B34D30076D80A /* css in Resources */ = {isa = PBXBuildFile; fileRef = E8729EE92A3B34D30076D80A /* css */; }; E8729EEF2A3B34D30076D80A /* images in Resources */ = {isa = PBXBuildFile; fileRef = E8729EEA2A3B34D30076D80A /* images */; }; E8729EF02A3B34D30076D80A /* js in Resources */ = {isa = PBXBuildFile; fileRef = E8729EEB2A3B34D30076D80A /* js */; }; - E873EB02280922720071030D /* YUMIManeConsumerAbstractDispossessAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E873EB01280922720071030D /* YUMIManeConsumerAbstractDispossessAssembletionRegardElement.m */; }; - E873EB05280943ED0071030D /* YUMIManeConsumerAbstractPresentRamparatExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E873EB04280943ED0071030D /* YUMIManeConsumerAbstractPresentRamparatExternalizer.m */; }; - E873EB09280960990071030D /* YUMIManeConsumerAbstractReputationSolitaireRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E873EB08280960990071030D /* YUMIManeConsumerAbstractReputationSolitaireRegard.m */; }; - E873EB0C2809850D0071030D /* CommunicationSatisfactionCustomRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E873EB0B2809850D0071030D /* CommunicationSatisfactionCustomRegard.m */; }; - E873EB0F28098D500071030D /* CommunicationSatisfactionPresentRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E873EB0E28098D500071030D /* CommunicationSatisfactionPresentRegard.m */; }; - E874B88827215D39003954B9 /* MiecreoscoopeStateMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E874B88727215D39003954B9 /* MiecreoscoopeStateMatrix.m */; }; - E874B88B27215EAF003954B9 /* MiecreoscoopeMHTueueMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E874B88A27215EAF003954B9 /* MiecreoscoopeMHTueueMatrix.m */; }; + E873EB02280922720071030D /* XPMineUserInfoEmptyCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E873EB01280922720071030D /* XPMineUserInfoEmptyCollectionViewCell.m */; }; + E873EB05280943ED0071030D /* XPMineUserInfoGiftWallPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E873EB04280943ED0071030D /* XPMineUserInfoGiftWallPresenter.m */; }; + E873EB09280960990071030D /* XPMineUserInfoVoiceCardView.m in Sources */ = {isa = PBXBuildFile; fileRef = E873EB08280960990071030D /* XPMineUserInfoVoiceCardView.m */; }; + E873EB0C2809850D0071030D /* MessageContentCustomView.m in Sources */ = {isa = PBXBuildFile; fileRef = E873EB0B2809850D0071030D /* MessageContentCustomView.m */; }; + E873EB0F28098D500071030D /* MessageContentGiftView.m in Sources */ = {isa = PBXBuildFile; fileRef = E873EB0E28098D500071030D /* MessageContentGiftView.m */; }; + E874B88827215D39003954B9 /* MicroStateModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E874B88727215D39003954B9 /* MicroStateModel.m */; }; + E874B88B27215EAF003954B9 /* MicroQueueModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E874B88A27215EAF003954B9 /* MicroQueueModel.m */; }; E8751E5928A62A390056EF44 /* Api+Sailing.m in Sources */ = {isa = PBXBuildFile; fileRef = E8751E5828A62A390056EF44 /* Api+Sailing.m */; }; - E8751E5C28A62A530056EF44 /* YUMIMarchingRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8751E5B28A62A530056EF44 /* YUMIMarchingRegardGovernancer.m */; }; - E8751E5F28A62A970056EF44 /* YUMIMarchingExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8751E5E28A62A970056EF44 /* YUMIMarchingExternalizer.m */; }; - E8751E6328A646400056EF44 /* YUMIMarchingRateRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8751E6228A646400056EF44 /* YUMIMarchingRateRegard.m */; }; - E8751E6628A6465A0056EF44 /* YUMIMarchingRateMetroRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8751E6528A6465A0056EF44 /* YUMIMarchingRateMetroRegard.m */; }; - E8751E6B28A64C6E0056EF44 /* YUMIMarchingRateTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8751E6A28A64C6E0056EF44 /* YUMIMarchingRateTabulationRegardElement.m */; }; - E8751E6E28A64F990056EF44 /* YUMIMarchingDispossessTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8751E6D28A64F990056EF44 /* YUMIMarchingDispossessTabulationRegardElement.m */; }; - E8751E7128A6541B0056EF44 /* ChamberMarchingRateMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8751E7028A6541B0056EF44 /* ChamberMarchingRateMatrix.m */; }; - E8751E7428A665BC0056EF44 /* ChamberMarchingAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8751E7328A665BC0056EF44 /* ChamberMarchingAbstractMatrix.m */; }; - E875A1B829755EE200AB1BBD /* InterlocutionConsumerAbstractTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E875A1B729755EE200AB1BBD /* InterlocutionConsumerAbstractTabulationRegardElement.m */; }; - E875FA8727D619820086ED04 /* ClientAtomicMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E875FA8627D619820086ED04 /* ClientAtomicMatrix.m */; }; - E8778AE12988B4C300CF139B /* CommunicationRevokeMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8778AE02988B4C300CF139B /* CommunicationRevokeMatrix.m */; }; - E8778AE42988B57B00CF139B /* CommunicationSatisfactionRevokeRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8778AE32988B57B00CF139B /* CommunicationSatisfactionRevokeRegard.m */; }; - E8778AE72988C1E000CF139B /* YUMIInterlocutionHalloImportRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8778AE62988C1E000CF139B /* YUMIInterlocutionHalloImportRegard.m */; }; - E8778AF02988EF0600CF139B /* YUMIInterlocutionSpeakHalloRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8778AEF2988EF0600CF139B /* YUMIInterlocutionSpeakHalloRegardGovernancer.m */; }; - E8778AF52988EF2B00CF139B /* YUMIInterlocutionSpeakHalloTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8778AF42988EF2B00CF139B /* YUMIInterlocutionSpeakHalloTabulationRegardElement.m */; }; - E8778AF82988F4E200CF139B /* YUMIInterlocutionSpeakHalloIntelligencerRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8778AF72988F4E200CF139B /* YUMIInterlocutionSpeakHalloIntelligencerRegard.m */; }; - E8778AFB2989034200CF139B /* YUMIInterlocutionSpeakHalloDispossessTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8778AFA2989034200CF139B /* YUMIInterlocutionSpeakHalloDispossessTabulationRegardElement.m */; }; - E877A7EB2783E24700EFACED /* EngagementPhaseRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E877A7EA2783E24700EFACED /* EngagementPhaseRegard.m */; }; - E877A7EE278428FB00EFACED /* MiecreoscoopeEngagementProgressRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E877A7ED278428FB00EFACED /* MiecreoscoopeEngagementProgressRegard.m */; }; - E877A7F127842B2F00EFACED /* YUMIChamberEngagementTissuePrecautiousRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E877A7F027842B2F00EFACED /* YUMIChamberEngagementTissuePrecautiousRegard.m */; }; - E877A7F427842EF800EFACED /* YUMIChamberEngagementVipUpwardsLoudspeakerRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E877A7F327842EF800EFACED /* YUMIChamberEngagementVipUpwardsLoudspeakerRegard.m */; }; + E8751E5C28A62A530056EF44 /* XPSailingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8751E5B28A62A530056EF44 /* XPSailingViewController.m */; }; + E8751E5F28A62A970056EF44 /* XPSailingPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8751E5E28A62A970056EF44 /* XPSailingPresenter.m */; }; + E8751E6328A646400056EF44 /* XPSailingRankView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8751E6228A646400056EF44 /* XPSailingRankView.m */; }; + E8751E6628A6465A0056EF44 /* XPSailingRankSubView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8751E6528A6465A0056EF44 /* XPSailingRankSubView.m */; }; + E8751E6B28A64C6E0056EF44 /* XPSailingRankTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8751E6A28A64C6E0056EF44 /* XPSailingRankTableViewCell.m */; }; + E8751E6E28A64F990056EF44 /* XPSailingEmptyTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8751E6D28A64F990056EF44 /* XPSailingEmptyTableViewCell.m */; }; + E8751E7128A6541B0056EF44 /* RoomSailingRankModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8751E7028A6541B0056EF44 /* RoomSailingRankModel.m */; }; + E8751E7428A665BC0056EF44 /* RoomSailingInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8751E7328A665BC0056EF44 /* RoomSailingInfoModel.m */; }; + E875A1B829755EE200AB1BBD /* SessionUserInfoTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E875A1B729755EE200AB1BBD /* SessionUserInfoTableViewCell.m */; }; + E875FA8727D619820086ED04 /* ClientDataModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E875FA8627D619820086ED04 /* ClientDataModel.m */; }; + E8778AE12988B4C300CF139B /* MessageRevokeModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8778AE02988B4C300CF139B /* MessageRevokeModel.m */; }; + E8778AE42988B57B00CF139B /* MessageContentRevokeView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8778AE32988B57B00CF139B /* MessageContentRevokeView.m */; }; + E8778AE72988C1E000CF139B /* XPSessionHelloEnterView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8778AE62988C1E000CF139B /* XPSessionHelloEnterView.m */; }; + E8778AF02988EF0600CF139B /* XPSessionSayHelloViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8778AEF2988EF0600CF139B /* XPSessionSayHelloViewController.m */; }; + E8778AF52988EF2B00CF139B /* XPSessionSayHelloTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8778AF42988EF2B00CF139B /* XPSessionSayHelloTableViewCell.m */; }; + E8778AF82988F4E200CF139B /* XPSessionSayHelloHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8778AF72988F4E200CF139B /* XPSessionSayHelloHeaderView.m */; }; + E8778AFB2989034200CF139B /* XPSessionSayHelloEmptyTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8778AFA2989034200CF139B /* XPSessionSayHelloEmptyTableViewCell.m */; }; + E877A7EB2783E24700EFACED /* DatingStageView.m in Sources */ = {isa = PBXBuildFile; fileRef = E877A7EA2783E24700EFACED /* DatingStageView.m */; }; + E877A7EE278428FB00EFACED /* MicroDatingProgressView.m in Sources */ = {isa = PBXBuildFile; fileRef = E877A7ED278428FB00EFACED /* MicroDatingProgressView.m */; }; + E877A7F127842B2F00EFACED /* XPRoomDatingWebAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = E877A7F027842B2F00EFACED /* XPRoomDatingWebAlertView.m */; }; + E877A7F427842EF800EFACED /* XPRoomDatingVipUpMicView.m in Sources */ = {isa = PBXBuildFile; fileRef = E877A7F327842EF800EFACED /* XPRoomDatingVipUpMicView.m */; }; E87888F42738C30E00BF1D57 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E87888F32738C30E00BF1D57 /* StoreKit.framework */; }; - E8788934273A53D700BF1D57 /* YUMIDischargePresentRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8788933273A53D700BF1D57 /* YUMIDischargePresentRegard.m */; }; + E8788934273A53D700BF1D57 /* XPSendGiftView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8788933273A53D700BF1D57 /* XPSendGiftView.m */; }; E878893C273A54C300BF1D57 /* Api+Gift.m in Sources */ = {isa = PBXBuildFile; fileRef = E878893B273A54C300BF1D57 /* Api+Gift.m */; }; - E878893F273A54F500BF1D57 /* YUMIPresentExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E878893E273A54F500BF1D57 /* YUMIPresentExternalizer.m */; }; - E8788942273A55AD00BF1D57 /* YUMIExternalizeConsumersRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8788941273A55AD00BF1D57 /* YUMIExternalizeConsumersRegard.m */; }; - E8788945273A55C200BF1D57 /* YUMIPresentAbstractRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8788944273A55C200BF1D57 /* YUMIPresentAbstractRegard.m */; }; - E8788948273A55D000BF1D57 /* YUMIPresentObstacleRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8788947273A55D000BF1D57 /* YUMIPresentObstacleRegard.m */; }; - E878894C273A607C00BF1D57 /* YUMIExternalizeConsumerAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E878894B273A607C00BF1D57 /* YUMIExternalizeConsumerAssembletionRegardElement.m */; }; + E878893F273A54F500BF1D57 /* XPGiftPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E878893E273A54F500BF1D57 /* XPGiftPresenter.m */; }; + E8788942273A55AD00BF1D57 /* XPGiftUsersView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8788941273A55AD00BF1D57 /* XPGiftUsersView.m */; }; + E8788945273A55C200BF1D57 /* XPGiftInfoView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8788944273A55C200BF1D57 /* XPGiftInfoView.m */; }; + E8788948273A55D000BF1D57 /* XPGiftBarView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8788947273A55D000BF1D57 /* XPGiftBarView.m */; }; + E878894C273A607C00BF1D57 /* XPGiftUserCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E878894B273A607C00BF1D57 /* XPGiftUserCollectionViewCell.m */; }; E8788950273A699900BF1D57 /* ThemeColor+SendGift.m in Sources */ = {isa = PBXBuildFile; fileRef = E878894F273A699900BF1D57 /* ThemeColor+SendGift.m */; }; - E878B8582835F0D300E22DCF /* SeparationsCoactiveMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E878B8572835F0D300E22DCF /* SeparationsCoactiveMatrix.m */; }; - E878B85B2835F3BF00E22DCF /* YUMISeparationsCoactiveTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E878B85A2835F3BF00E22DCF /* YUMISeparationsCoactiveTabulationRegardElement.m */; }; - E878B85E283640A500E22DCF /* SeparationsUnReadMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E878B85D283640A500E22DCF /* SeparationsUnReadMatrix.m */; }; - E87A24F1272935920086A794 /* YUMICommunicationRemoteExtMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E87A24F0272935920086A794 /* YUMICommunicationRemoteExtMatrix.m */; }; - E87A27032758BC81002DDC7A /* YUMIChamberHuntforAccommodatedRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E87A27022758BC81002DDC7A /* YUMIChamberHuntforAccommodatedRegardGovernancer.m */; }; - E87AE7F9277AABE50037823A /* YUMIChamberCoupleStatementRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E87AE7F8277AABE50037823A /* YUMIChamberCoupleStatementRegardGovernancer.m */; }; - E87AE7FC277AAC450037823A /* YUMIChamberCoupleExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E87AE7FB277AAC450037823A /* YUMIChamberCoupleExternalizer.m */; }; - E87AE8C1284E184300CAFBB3 /* ChamberStrangeConsumerBewelcometoMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E87AE8C0284E184300CAFBB3 /* ChamberStrangeConsumerBewelcometoMatrix.m */; }; - E87AE8C5284E1A8400CAFBB3 /* YUMIChamberStrangeConsumerBewelcometoRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E87AE8C4284E1A8400CAFBB3 /* YUMIChamberStrangeConsumerBewelcometoRegard.m */; }; - E87C0A9D27D9986700CB2241 /* YUMIChamberAcceptAssembletionFlowProgramming.m in Sources */ = {isa = PBXBuildFile; fileRef = E87C0A9C27D9986700CB2241 /* YUMIChamberAcceptAssembletionFlowProgramming.m */; }; - E87C0AA027D9DE6400CB2241 /* ChamberAcceptDischargeAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E87C0A9F27D9DE6400CB2241 /* ChamberAcceptDischargeAbstractMatrix.m */; }; - E87C54BE2823CC5B0051AA11 /* YUMIManeReassociationSurmountPwordExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E87C54BD2823CC5B0051AA11 /* YUMIManeReassociationSurmountPwordExternalizer.m */; }; - E87C54C22823CD6F0051AA11 /* YUMIManeReassociationSurmountPwordRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E87C54C12823CD6F0051AA11 /* YUMIManeReassociationSurmountPwordRegardGovernancer.m */; }; - E87DF4B02A429B32009C1185 /* YUMIThresholdReindictRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4AE2A429B32009C1185 /* YUMIThresholdReindictRegard.m */; }; - E87DF4B32A429C6E009C1185 /* ThresholdChargeChamberWindowMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4B22A429C6E009C1185 /* ThresholdChargeChamberWindowMatrix.m */; }; - E87DF4B72A42C2FD009C1185 /* YUMIThresholdReindictAssembletionRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4B52A42C2FD009C1185 /* YUMIThresholdReindictAssembletionRegard.m */; }; - E87DF4BF2A42C8C1009C1185 /* ResidenceCoupleMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4BE2A42C8C1009C1185 /* ResidenceCoupleMatrix.m */; }; - E87DF4C22A42C900009C1185 /* YUMINoteRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4C12A42C900009C1185 /* YUMINoteRegard.m */; }; - E87DF4CC2A42C960009C1185 /* ResidenceOriflammeAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4CB2A42C960009C1185 /* ResidenceOriflammeAbstractMatrix.m */; }; - E87DF4D42A42C9B1009C1185 /* ResidenceEncourageChamberMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4D32A42C9B1009C1185 /* ResidenceEncourageChamberMatrix.m */; }; - E87DF4D72A42C9C3009C1185 /* ResidenceDisportChamberMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4D52A42C9C3009C1185 /* ResidenceDisportChamberMatrix.m */; }; - E87DF4DA2A42C9D9009C1185 /* ResidenceAssembleChamberMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4D82A42C9D8009C1185 /* ResidenceAssembleChamberMatrix.m */; }; - E87DF4DD2A42CA12009C1185 /* ResidenceHuntforConsequentMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4DB2A42CA12009C1185 /* ResidenceHuntforConsequentMatrix.m */; }; - E87DF4E02A42CA92009C1185 /* YUMIResidenceSloganRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4DE2A42CA92009C1185 /* YUMIResidenceSloganRegardGovernancer.m */; }; - E87DF4E42A42CAD2009C1185 /* YUMIResidenceHuntforNevRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4E22A42CAD2009C1185 /* YUMIResidenceHuntforNevRegard.m */; }; - E87DF4E72A42CB00009C1185 /* YUMIResidenceExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4E52A42CAFF009C1185 /* YUMIResidenceExternalizer.m */; }; - E87DF4EC2A42CB60009C1185 /* YUMIHuntforStatementTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4EA2A42CB60009C1185 /* YUMIHuntforStatementTabulationRegardElement.m */; }; - E87DF4EF2A42CB90009C1185 /* YUMIResidenceAssembleChamberTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4EE2A42CB90009C1185 /* YUMIResidenceAssembleChamberTabulationRegardElement.m */; }; - E87DF4F22A42CBEC009C1185 /* YUMIResidenceConsumerRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4F02A42CBEC009C1185 /* YUMIResidenceConsumerRegard.m */; }; - E87DF4F52A42CC49009C1185 /* ResidenceParrotAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4F42A42CC49009C1185 /* ResidenceParrotAbstractMatrix.m */; }; - E87DF4F82A42CCAB009C1185 /* YUMIResidenceHuntforRelateRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4F62A42CCAB009C1185 /* YUMIResidenceHuntforRelateRegard.m */; }; - E87DF4FB2A42CCDE009C1185 /* YUMIResidenceDeficitommendAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4FA2A42CCDE009C1185 /* YUMIResidenceDeficitommendAssembletionRegardElement.m */; }; - E87DF4FE2A42CD7E009C1185 /* YUMIChamberHuntforEncourageIntelligenceRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4FC2A42CD7D009C1185 /* YUMIChamberHuntforEncourageIntelligenceRegard.m */; }; - E87DF5022A42CDF1009C1185 /* YUMIResidenceConsiderationAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF5012A42CDF1009C1185 /* YUMIResidenceConsiderationAssembletionRegardElement.m */; }; - E87DF5052A42CE21009C1185 /* YUMIResidenceHuntforReflectionElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF5042A42CE21009C1185 /* YUMIResidenceHuntforReflectionElement.m */; }; - E87DF5082A42CE79009C1185 /* YUMIInChamberReflectionExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF5072A42CE79009C1185 /* YUMIInChamberReflectionExternalizer.m */; }; - E87DF50B2A42CEC9009C1185 /* ResidenceEveryOneHuntforMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF50A2A42CEC9009C1185 /* ResidenceEveryOneHuntforMatrix.m */; }; - E87DF50E2A42CF15009C1185 /* ResidenceEnergeticChamberMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF50D2A42CF15009C1185 /* ResidenceEnergeticChamberMatrix.m */; }; - E87E545429AA05EA00EBE52B /* YUMITerminalImpressionNevRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E545329AA05EA00EBE52B /* YUMITerminalImpressionNevRegard.m */; }; - E87E62592A3F560B002F68C9 /* YUMIResidenceParatiesRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E62562A3F560A002F68C9 /* YUMIResidenceParatiesRegardGovernancer.m */; }; - E87E625A2A3F560B002F68C9 /* YUMIResidenceEncourageRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E62582A3F560A002F68C9 /* YUMIResidenceEncourageRegardGovernancer.m */; }; - E87E625D2A3F5622002F68C9 /* YUMIStrangeResidenceRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E625C2A3F5622002F68C9 /* YUMIStrangeResidenceRegardGovernancer.m */; }; - E87E62622A3F568A002F68C9 /* YUMIStrangeResidenceNevRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E62602A3F5689002F68C9 /* YUMIStrangeResidenceNevRegard.m */; }; - E87E62682A3F571D002F68C9 /* YUMIResidenceAccommodatedExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E62662A3F571C002F68C9 /* YUMIResidenceAccommodatedExternalizer.m */; }; - E87E62742A3F5907002F68C9 /* YUMIResidenceOriflammeTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E626A2A3F5906002F68C9 /* YUMIResidenceOriflammeTabulationRegardElement.m */; }; - E87E62752A3F5907002F68C9 /* YUMIStrangeResidenceDisportDispossessTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E626D2A3F5906002F68C9 /* YUMIStrangeResidenceDisportDispossessTabulationRegardElement.m */; }; - E87E62762A3F5907002F68C9 /* YUMIStrangeResidenceDisportTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E626F2A3F5906002F68C9 /* YUMIStrangeResidenceDisportTabulationRegardElement.m */; }; - E87E62772A3F5907002F68C9 /* YUMIStrangeResidenceEncourageTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E62702A3F5907002F68C9 /* YUMIStrangeResidenceEncourageTabulationRegardElement.m */; }; - E87E62782A3F5907002F68C9 /* YUMIStrangeResidenceParatiesTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E62712A3F5907002F68C9 /* YUMIStrangeResidenceParatiesTabulationRegardElement.m */; }; - E87E627B2A3F5A0D002F68C9 /* YUMIStrangeResidenceEncourageExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E627A2A3F5A0D002F68C9 /* YUMIStrangeResidenceEncourageExternalizer.m */; }; - E87E627F2A3F5D28002F68C9 /* YUMIStrangeResidenceDisportProvisionAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E627E2A3F5D28002F68C9 /* YUMIStrangeResidenceDisportProvisionAssembletionRegardElement.m */; }; + E878B8582835F0D300E22DCF /* MonentsInteractiveModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E878B8572835F0D300E22DCF /* MonentsInteractiveModel.m */; }; + E878B85B2835F3BF00E22DCF /* XPMonentsInteractiveTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E878B85A2835F3BF00E22DCF /* XPMonentsInteractiveTableViewCell.m */; }; + E878B85E283640A500E22DCF /* MonentsUnReadModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E878B85D283640A500E22DCF /* MonentsUnReadModel.m */; }; + E87A24F1272935920086A794 /* XPMessageRemoteExtModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E87A24F0272935920086A794 /* XPMessageRemoteExtModel.m */; }; + E87A27032758BC81002DDC7A /* XPRoomSearchContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E87A27022758BC81002DDC7A /* XPRoomSearchContainerViewController.m */; }; + E87AE7F9277AABE50037823A /* XPRoomTagListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E87AE7F8277AABE50037823A /* XPRoomTagListViewController.m */; }; + E87AE7FC277AAC450037823A /* XPRoomTagPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E87AE7FB277AAC450037823A /* XPRoomTagPresenter.m */; }; + E87AE8C1284E184300CAFBB3 /* RoomNewUserGreetModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E87AE8C0284E184300CAFBB3 /* RoomNewUserGreetModel.m */; }; + E87AE8C5284E1A8400CAFBB3 /* XPRoomNewUserGreetView.m in Sources */ = {isa = PBXBuildFile; fileRef = E87AE8C4284E1A8400CAFBB3 /* XPRoomNewUserGreetView.m */; }; + E87C0A9D27D9986700CB2241 /* XPRoomFaceCollectionFlowLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = E87C0A9C27D9986700CB2241 /* XPRoomFaceCollectionFlowLayout.m */; }; + E87C0AA027D9DE6400CB2241 /* RoomFaceSendInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E87C0A9F27D9DE6400CB2241 /* RoomFaceSendInfoModel.m */; }; + E87C54BE2823CC5B0051AA11 /* XPMineResetLoginPwdPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E87C54BD2823CC5B0051AA11 /* XPMineResetLoginPwdPresenter.m */; }; + E87C54C22823CD6F0051AA11 /* XPMineResetLoginPwdViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E87C54C12823CD6F0051AA11 /* XPMineResetLoginPwdViewController.m */; }; + E87DF4B02A429B32009C1185 /* XPFirstRechargeView.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4AE2A429B32009C1185 /* XPFirstRechargeView.m */; }; + E87DF4B32A429C6E009C1185 /* FirstChargeRoomWindowModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4B22A429C6E009C1185 /* FirstChargeRoomWindowModel.m */; }; + E87DF4B72A42C2FD009C1185 /* XPFirstRechargeCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4B52A42C2FD009C1185 /* XPFirstRechargeCollectionView.m */; }; + E87DF4BF2A42C8C1009C1185 /* HomeTagModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4BE2A42C8C1009C1185 /* HomeTagModel.m */; }; + E87DF4C22A42C900009C1185 /* XPNoteView.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4C12A42C900009C1185 /* XPNoteView.m */; }; + E87DF4CC2A42C960009C1185 /* HomeBannerInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4CB2A42C960009C1185 /* HomeBannerInfoModel.m */; }; + E87DF4D42A42C9B1009C1185 /* HomeRecommendRoomModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4D32A42C9B1009C1185 /* HomeRecommendRoomModel.m */; }; + E87DF4D72A42C9C3009C1185 /* HomePlayRoomModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4D52A42C9C3009C1185 /* HomePlayRoomModel.m */; }; + E87DF4DA2A42C9D9009C1185 /* HomeCollectRoomModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4D82A42C9D8009C1185 /* HomeCollectRoomModel.m */; }; + E87DF4DD2A42CA12009C1185 /* HomeSearchResultModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4DB2A42CA12009C1185 /* HomeSearchResultModel.m */; }; + E87DF4E02A42CA92009C1185 /* XPHomeSloganViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4DE2A42CA92009C1185 /* XPHomeSloganViewController.m */; }; + E87DF4E42A42CAD2009C1185 /* XPHomeSearchNavView.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4E22A42CAD2009C1185 /* XPHomeSearchNavView.m */; }; + E87DF4E72A42CB00009C1185 /* XPHomePresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4E52A42CAFF009C1185 /* XPHomePresenter.m */; }; + E87DF4EC2A42CB60009C1185 /* XPSearchListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4EA2A42CB60009C1185 /* XPSearchListTableViewCell.m */; }; + E87DF4EF2A42CB90009C1185 /* XPHomeCollectRoomTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4EE2A42CB90009C1185 /* XPHomeCollectRoomTableViewCell.m */; }; + E87DF4F22A42CBEC009C1185 /* XPHomeUserView.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4F02A42CBEC009C1185 /* XPHomeUserView.m */; }; + E87DF4F52A42CC49009C1185 /* HomeMenuInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4F42A42CC49009C1185 /* HomeMenuInfoModel.m */; }; + E87DF4F82A42CCAB009C1185 /* XPHomeSearchRelateView.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4F62A42CCAB009C1185 /* XPHomeSearchRelateView.m */; }; + E87DF4FB2A42CCDE009C1185 /* XPHomeRedommendCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4FA2A42CCDE009C1185 /* XPHomeRedommendCollectionViewCell.m */; }; + E87DF4FE2A42CD7E009C1185 /* XPRoomSearchRecommendHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF4FC2A42CD7D009C1185 /* XPRoomSearchRecommendHeadView.m */; }; + E87DF5022A42CDF1009C1185 /* XPHomeAttentionCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF5012A42CDF1009C1185 /* XPHomeAttentionCollectionViewCell.m */; }; + E87DF5052A42CE21009C1185 /* XPHomeSearchRecordCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF5042A42CE21009C1185 /* XPHomeSearchRecordCell.m */; }; + E87DF5082A42CE79009C1185 /* XPInRoomRecordPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF5072A42CE79009C1185 /* XPInRoomRecordPresenter.m */; }; + E87DF50B2A42CEC9009C1185 /* HomeEveryOneSearchModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF50A2A42CEC9009C1185 /* HomeEveryOneSearchModel.m */; }; + E87DF50E2A42CF15009C1185 /* HomeLiveRoomModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E87DF50D2A42CF15009C1185 /* HomeLiveRoomModel.m */; }; + E87E545429AA05EA00EBE52B /* XPFootPrintNavView.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E545329AA05EA00EBE52B /* XPFootPrintNavView.m */; }; + E87E62592A3F560B002F68C9 /* XPHomePartyViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E62562A3F560A002F68C9 /* XPHomePartyViewController.m */; }; + E87E625A2A3F560B002F68C9 /* XPHomeRecommendViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E62582A3F560A002F68C9 /* XPHomeRecommendViewController.m */; }; + E87E625D2A3F5622002F68C9 /* XPNewHomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E625C2A3F5622002F68C9 /* XPNewHomeViewController.m */; }; + E87E62622A3F568A002F68C9 /* XPNewHomeNavView.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E62602A3F5689002F68C9 /* XPNewHomeNavView.m */; }; + E87E62682A3F571D002F68C9 /* XPHomeContainerPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E62662A3F571C002F68C9 /* XPHomeContainerPresenter.m */; }; + E87E62742A3F5907002F68C9 /* XPHomeBannerTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E626A2A3F5906002F68C9 /* XPHomeBannerTableViewCell.m */; }; + E87E62752A3F5907002F68C9 /* XPNewHomePlayEmptyTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E626D2A3F5906002F68C9 /* XPNewHomePlayEmptyTableViewCell.m */; }; + E87E62762A3F5907002F68C9 /* XPNewHomePlayTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E626F2A3F5906002F68C9 /* XPNewHomePlayTableViewCell.m */; }; + E87E62772A3F5907002F68C9 /* XPNewHomeRecommendTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E62702A3F5907002F68C9 /* XPNewHomeRecommendTableViewCell.m */; }; + E87E62782A3F5907002F68C9 /* XPNewHomePartyTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E62712A3F5907002F68C9 /* XPNewHomePartyTableViewCell.m */; }; + E87E627B2A3F5A0D002F68C9 /* XPNewHomeRecommendPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E627A2A3F5A0D002F68C9 /* XPNewHomeRecommendPresenter.m */; }; + E87E627F2A3F5D28002F68C9 /* XPNewHomePlayItemCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E627E2A3F5D28002F68C9 /* XPNewHomePlayItemCollectionViewCell.m */; }; E87E63F729AA1A5600EBE52B /* YuMi.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = E87E63F529AA1A5600EBE52B /* YuMi.xcdatamodeld */; }; - E87E914E2796678D00A7B3F2 /* YUMIManePretendDispossessTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E914D2796678D00A7B3F2 /* YUMIManePretendDispossessTabulationRegardElement.m */; }; - E87E91522796A15500A7B3F2 /* MiecreoscoopeExtMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E91512796A15500A7B3F2 /* MiecreoscoopeExtMatrix.m */; }; - E87E91552796B6DE00A7B3F2 /* YUMIChamberCallforConsumerRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E91542796B6DE00A7B3F2 /* YUMIChamberCallforConsumerRegardGovernancer.m */; }; - E880B39E278BD49E00A83B0D /* YUMIThroughoutChamberCombatRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E880B39D278BD49E00A83B0D /* YUMIThroughoutChamberCombatRegardGovernancer.m */; }; - E880B3A1278BD60C00A83B0D /* YUMIThroughoutChamberCombatChosenChamberRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E880B3A0278BD60C00A83B0D /* YUMIThroughoutChamberCombatChosenChamberRegard.m */; }; - E880B3A6278BD69900A83B0D /* YUMIThroughoutChamberCombatTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E880B3A5278BD69900A83B0D /* YUMIThroughoutChamberCombatTabulationRegardElement.m */; }; - E880B3A9278BD82300A83B0D /* ThroughoutChamberCombatAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E880B3A8278BD82300A83B0D /* ThroughoutChamberCombatAbstractMatrix.m */; }; - E880B3AC278BD98600A83B0D /* YUMIThroughoutChamberCombatDispossessTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E880B3AB278BD98600A83B0D /* YUMIThroughoutChamberCombatDispossessTabulationRegardElement.m */; }; + E87E914E2796678D00A7B3F2 /* XPMineDressEmptyTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E914D2796678D00A7B3F2 /* XPMineDressEmptyTableViewCell.m */; }; + E87E91522796A15500A7B3F2 /* MicroExtModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E91512796A15500A7B3F2 /* MicroExtModel.m */; }; + E87E91552796B6DE00A7B3F2 /* XPRoomInviteUserViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E87E91542796B6DE00A7B3F2 /* XPRoomInviteUserViewController.m */; }; + E880B39E278BD49E00A83B0D /* XPAcrossRoomPKViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E880B39D278BD49E00A83B0D /* XPAcrossRoomPKViewController.m */; }; + E880B3A1278BD60C00A83B0D /* XPAcrossRoomPKSelectRoomView.m in Sources */ = {isa = PBXBuildFile; fileRef = E880B3A0278BD60C00A83B0D /* XPAcrossRoomPKSelectRoomView.m */; }; + E880B3A6278BD69900A83B0D /* XPAcrossRoomPKTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E880B3A5278BD69900A83B0D /* XPAcrossRoomPKTableViewCell.m */; }; + E880B3A9278BD82300A83B0D /* AcrossRoomPKInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E880B3A8278BD82300A83B0D /* AcrossRoomPKInfoModel.m */; }; + E880B3AC278BD98600A83B0D /* XPAcrossRoomPKEmptyTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E880B3AB278BD98600A83B0D /* XPAcrossRoomPKEmptyTableViewCell.m */; }; E880B3AF278BE1D800A83B0D /* Api+AcrossRoomPK.m in Sources */ = {isa = PBXBuildFile; fileRef = E880B3AE278BE1D800A83B0D /* Api+AcrossRoomPK.m */; }; - E880B3B2278C1D1800A83B0D /* YUMIThroughoutChamberCombatPreadominantRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E880B3B1278C1D1800A83B0D /* YUMIThroughoutChamberCombatPreadominantRegard.m */; }; - E880B3B5278C1FE400A83B0D /* YUMIThroughoutChamberCombatExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E880B3B4278C1FE400A83B0D /* YUMIThroughoutChamberCombatExternalizer.m */; }; - E884C36C2743951B00E1EBED /* PresentAchieveAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E884C36B2743951B00E1EBED /* PresentAchieveAbstractMatrix.m */; }; - E884C36F2743AAC800E1EBED /* AttachmentMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E884C36E2743AAC800E1EBED /* AttachmentMatrix.m */; }; + E880B3B2278C1D1800A83B0D /* XPAcrossRoomPKRuleView.m in Sources */ = {isa = PBXBuildFile; fileRef = E880B3B1278C1D1800A83B0D /* XPAcrossRoomPKRuleView.m */; }; + E880B3B5278C1FE400A83B0D /* XPAcrossRoomPKPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E880B3B4278C1FE400A83B0D /* XPAcrossRoomPKPresenter.m */; }; + E884C36C2743951B00E1EBED /* GiftReceiveInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E884C36B2743951B00E1EBED /* GiftReceiveInfoModel.m */; }; + E884C36F2743AAC800E1EBED /* AttachmentModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E884C36E2743AAC800E1EBED /* AttachmentModel.m */; }; E884C3722743AEDE00E1EBED /* CustomAttachmentDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = E884C3712743AEDE00E1EBED /* CustomAttachmentDecoder.m */; }; - E885D533297798E1004DC088 /* InterlocutionInstanllingTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E885D532297798E1004DC088 /* InterlocutionInstanllingTabulationRegardElement.m */; }; - E885D5362977CE28004DC088 /* InterlocutionInstanllingMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E885D5352977CE28004DC088 /* InterlocutionInstanllingMatrix.m */; }; - E885D5392977D10E004DC088 /* InterlocutionInstanllingConsumerRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E885D5382977D10E004DC088 /* InterlocutionInstanllingConsumerRegard.m */; }; - E885D53C2977FBFD004DC088 /* CommunicationIntratemporalRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E885D53B2977FBFD004DC088 /* CommunicationIntratemporalRegard.m */; }; - E88749B6282B8FC600C3C7DB /* SeparationsAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E88749B5282B8FC600C3C7DB /* SeparationsAbstractMatrix.m */; }; - E88863C6278EAFC3004BCFAB /* YUMIThroughoutChamberCombatConsequentRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E88863C5278EAFC3004BCFAB /* YUMIThroughoutChamberCombatConsequentRegard.m */; }; - E88863C9278EBA43004BCFAB /* YUMIThroughoutChamberCombatForceEndConsequentRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E88863C8278EBA43004BCFAB /* YUMIThroughoutChamberCombatForceEndConsequentRegard.m */; }; - E88863CC278EC336004BCFAB /* ThroughoutChamberCombatCaptureMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E88863CB278EC336004BCFAB /* ThroughoutChamberCombatCaptureMatrix.m */; }; - E88863CF278EC393004BCFAB /* YUMIThroughoutChamberCombatCaptureRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E88863CE278EC393004BCFAB /* YUMIThroughoutChamberCombatCaptureRegard.m */; }; - E88863D3278ED4C0004BCFAB /* Intratemporalstamp.m in Sources */ = {isa = PBXBuildFile; fileRef = E88863D2278ED4C0004BCFAB /* Intratemporalstamp.m */; }; - E8899C7F27853B6A007944BE /* EngagementMiecreoscoopeRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8899C7E27853B6A007944BE /* EngagementMiecreoscoopeRegard.m */; }; - E8899C822785A694007944BE /* EngagementAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8899C812785A694007944BE /* EngagementAbstractMatrix.m */; }; - E8899C852785CC69007944BE /* YUMIChamberEngagementBrightnessRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8899C842785CC69007944BE /* YUMIChamberEngagementBrightnessRegard.m */; }; - E88B5CC126FB407B00DA9178 /* YUMIManeConsumerAbstractRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E88B5CC026FB407B00DA9178 /* YUMIManeConsumerAbstractRegardGovernancer.m */; }; - E88B5CC526FB42B000DA9178 /* YUMIManeConsumerAbstractIntelligencerRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E88B5CC426FB42B000DA9178 /* YUMIManeConsumerAbstractIntelligencerRegard.m */; }; - E88C72912828EA4E0047FB2B /* Manual+CoreDataProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = E88C728F2828EA4E0047FB2B /* Manual+CoreDataProperties.m */; }; - E88C72922828EA4E0047FB2B /* Manual+CoreDataClass.m in Sources */ = {isa = PBXBuildFile; fileRef = E88C72902828EA4E0047FB2B /* Manual+CoreDataClass.m */; }; - E88C72952828F1AD0047FB2B /* YUMIChamberManualBibliothecaRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E88C72942828F1AD0047FB2B /* YUMIChamberManualBibliothecaRegardGovernancer.m */; }; - E88C72992828F3620047FB2B /* YUMIChamberManualBibliothecaTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E88C72982828F3620047FB2B /* YUMIChamberManualBibliothecaTabulationRegardElement.m */; }; - E88C729C2828F37D0047FB2B /* YUMIChamberManualBibliothecaDispossessTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E88C729B2828F37D0047FB2B /* YUMIChamberManualBibliothecaDispossessTabulationRegardElement.m */; }; - E88C72A02828FCD40047FB2B /* YUMIManualBibliothecaDisportRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E88C729F2828FCD40047FB2B /* YUMIManualBibliothecaDisportRegard.m */; }; - E88C72A3282917590047FB2B /* YUMIChamberManualReputationInstanllingRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E88C72A2282917590047FB2B /* YUMIChamberManualReputationInstanllingRegard.m */; }; - E88C72A6282921D60047FB2B /* YUMIChamberBackManualDisporterRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E88C72A5282921D60047FB2B /* YUMIChamberBackManualDisporterRegard.m */; }; - E88E4A80297673DC00019A50 /* InterlocutionNevEnergeticRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E88E4A7F297673DC00019A50 /* InterlocutionNevEnergeticRegard.m */; }; - E8901CF628B38D89001E9A92 /* YUMIGraffitiPresentRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8901CF528B38D89001E9A92 /* YUMIGraffitiPresentRegard.m */; }; - E890BC04273CF0500007C46B /* YUMIPresentComputationMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E890BC03273CF0500007C46B /* YUMIPresentComputationMatrix.m */; }; - E890BC07273CF1800007C46B /* YUMIPresentComputationAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E890BC06273CF1800007C46B /* YUMIPresentComputationAssembletionRegardElement.m */; }; - E890BC0D273D09A50007C46B /* YUMIPresentComputationRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E890BC0C273D09A50007C46B /* YUMIPresentComputationRegard.m */; }; - E890BC10273D23F00007C46B /* PresentAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E890BC0F273D23F00007C46B /* PresentAbstractMatrix.m */; }; - E8950180282CAC49007E459A /* YUMISeparationsConsumerAbstractRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E895017F282CAC49007E459A /* YUMISeparationsConsumerAbstractRegard.m */; }; - E8950183282CAC6A007E459A /* YUMISeparationsAppearanceRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8950182282CAC6A007E459A /* YUMISeparationsAppearanceRegard.m */; }; - E8950186282CAC80007E459A /* YUMISeparationsTooObstacleRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8950185282CAC80007E459A /* YUMISeparationsTooObstacleRegard.m */; }; - E8950189282CFFB1007E459A /* YUMISeparationsProgrammingDisposition.m in Sources */ = {isa = PBXBuildFile; fileRef = E8950188282CFFB1007E459A /* YUMISeparationsProgrammingDisposition.m */; }; - E895018C282D0701007E459A /* YUMISepartionMotifRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E895018B282D0701007E459A /* YUMISepartionMotifRegard.m */; }; + E885D533297798E1004DC088 /* SessionSettingTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E885D532297798E1004DC088 /* SessionSettingTableViewCell.m */; }; + E885D5362977CE28004DC088 /* SessionSettingModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E885D5352977CE28004DC088 /* SessionSettingModel.m */; }; + E885D5392977D10E004DC088 /* SessionSettingUserView.m in Sources */ = {isa = PBXBuildFile; fileRef = E885D5382977D10E004DC088 /* SessionSettingUserView.m */; }; + E885D53C2977FBFD004DC088 /* MessageTimeView.m in Sources */ = {isa = PBXBuildFile; fileRef = E885D53B2977FBFD004DC088 /* MessageTimeView.m */; }; + E88749B6282B8FC600C3C7DB /* MonentsInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E88749B5282B8FC600C3C7DB /* MonentsInfoModel.m */; }; + E88863C6278EAFC3004BCFAB /* XPAcrossRoomPKResultView.m in Sources */ = {isa = PBXBuildFile; fileRef = E88863C5278EAFC3004BCFAB /* XPAcrossRoomPKResultView.m */; }; + E88863C9278EBA43004BCFAB /* XPAcrossRoomPKForceEndResultView.m in Sources */ = {isa = PBXBuildFile; fileRef = E88863C8278EBA43004BCFAB /* XPAcrossRoomPKForceEndResultView.m */; }; + E88863CC278EC336004BCFAB /* AcrossRoomPKPrizeModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E88863CB278EC336004BCFAB /* AcrossRoomPKPrizeModel.m */; }; + E88863CF278EC393004BCFAB /* XPAcrossRoomPKPrizeView.m in Sources */ = {isa = PBXBuildFile; fileRef = E88863CE278EC393004BCFAB /* XPAcrossRoomPKPrizeView.m */; }; + E88863D3278ED4C0004BCFAB /* Timestamp.m in Sources */ = {isa = PBXBuildFile; fileRef = E88863D2278ED4C0004BCFAB /* Timestamp.m */; }; + E8899C7F27853B6A007944BE /* DatingMicroView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8899C7E27853B6A007944BE /* DatingMicroView.m */; }; + E8899C822785A694007944BE /* DatingInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8899C812785A694007944BE /* DatingInfoModel.m */; }; + E8899C852785CC69007944BE /* XPRoomDatingAnimationView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8899C842785CC69007944BE /* XPRoomDatingAnimationView.m */; }; + E88B5CC126FB407B00DA9178 /* XPMineUserInfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E88B5CC026FB407B00DA9178 /* XPMineUserInfoViewController.m */; }; + E88B5CC526FB42B000DA9178 /* XPMineUserInfoHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = E88B5CC426FB42B000DA9178 /* XPMineUserInfoHeaderView.m */; }; + E88C72912828EA4E0047FB2B /* Music+CoreDataProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = E88C728F2828EA4E0047FB2B /* Music+CoreDataProperties.m */; }; + E88C72922828EA4E0047FB2B /* Music+CoreDataClass.m in Sources */ = {isa = PBXBuildFile; fileRef = E88C72902828EA4E0047FB2B /* Music+CoreDataClass.m */; }; + E88C72952828F1AD0047FB2B /* XPRoomMusicLibraryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E88C72942828F1AD0047FB2B /* XPRoomMusicLibraryViewController.m */; }; + E88C72992828F3620047FB2B /* XPRoomMusicLibraryTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E88C72982828F3620047FB2B /* XPRoomMusicLibraryTableViewCell.m */; }; + E88C729C2828F37D0047FB2B /* XPRoomMusicLibraryEmptyTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E88C729B2828F37D0047FB2B /* XPRoomMusicLibraryEmptyTableViewCell.m */; }; + E88C72A02828FCD40047FB2B /* XPMusicLibraryPlayView.m in Sources */ = {isa = PBXBuildFile; fileRef = E88C729F2828FCD40047FB2B /* XPMusicLibraryPlayView.m */; }; + E88C72A3282917590047FB2B /* XPRoomMusicVoiceSettingView.m in Sources */ = {isa = PBXBuildFile; fileRef = E88C72A2282917590047FB2B /* XPRoomMusicVoiceSettingView.m */; }; + E88C72A6282921D60047FB2B /* XPRoomBackMusicPlayerView.m in Sources */ = {isa = PBXBuildFile; fileRef = E88C72A5282921D60047FB2B /* XPRoomBackMusicPlayerView.m */; }; + E88E4A80297673DC00019A50 /* SessionNavLiveView.m in Sources */ = {isa = PBXBuildFile; fileRef = E88E4A7F297673DC00019A50 /* SessionNavLiveView.m */; }; + E8901CF628B38D89001E9A92 /* XPGraffitiGiftView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8901CF528B38D89001E9A92 /* XPGraffitiGiftView.m */; }; + E890BC04273CF0500007C46B /* XPGiftCountModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E890BC03273CF0500007C46B /* XPGiftCountModel.m */; }; + E890BC07273CF1800007C46B /* XPGiftCountCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E890BC06273CF1800007C46B /* XPGiftCountCollectionViewCell.m */; }; + E890BC0D273D09A50007C46B /* XPGiftCountView.m in Sources */ = {isa = PBXBuildFile; fileRef = E890BC0C273D09A50007C46B /* XPGiftCountView.m */; }; + E890BC10273D23F00007C46B /* GiftInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E890BC0F273D23F00007C46B /* GiftInfoModel.m */; }; + E8950180282CAC49007E459A /* XPMonentsUserInfoView.m in Sources */ = {isa = PBXBuildFile; fileRef = E895017F282CAC49007E459A /* XPMonentsUserInfoView.m */; }; + E8950183282CAC6A007E459A /* XPMonentsPhotoView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8950182282CAC6A007E459A /* XPMonentsPhotoView.m */; }; + E8950186282CAC80007E459A /* XPMonentsTooBarView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8950185282CAC80007E459A /* XPMonentsTooBarView.m */; }; + E8950189282CFFB1007E459A /* XPMonentsLayoutConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = E8950188282CFFB1007E459A /* XPMonentsLayoutConfig.m */; }; + E895018C282D0701007E459A /* XPMoentsTopicView.m in Sources */ = {isa = PBXBuildFile; fileRef = E895018B282D0701007E459A /* XPMoentsTopicView.m */; }; E896A9942A49F8A20010FE65 /* login_vapbg.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = E896A9932A49F8A20010FE65 /* login_vapbg.mp4 */; }; - E896EF942771AAC100AD2CC1 /* YUMIManeFanaticsExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E896EF932771AAC100AD2CC1 /* YUMIManeFanaticsExternalizer.m */; }; - E896EF972771AAE400AD2CC1 /* YUMIManeConsiderationExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E896EF962771AAE400AD2CC1 /* YUMIManeConsiderationExternalizer.m */; }; - E896EF9C2771AE6B00AD2CC1 /* YUMIManeFanaticsRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E896EF9B2771AE6B00AD2CC1 /* YUMIManeFanaticsRegardGovernancer.m */; }; - E896EF9F2771AE7B00AD2CC1 /* YUMIManeConsiderationRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E896EF9E2771AE7B00AD2CC1 /* YUMIManeConsiderationRegardGovernancer.m */; }; - E896EFA22771AE9400AD2CC1 /* YUMIManeAssistantRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E896EFA12771AE9400AD2CC1 /* YUMIManeAssistantRegardGovernancer.m */; }; - E896EFA62771AEDD00AD2CC1 /* YUMIManeFanaticsTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E896EFA52771AEDD00AD2CC1 /* YUMIManeFanaticsTabulationRegardElement.m */; }; - E896EFA92771AEEC00AD2CC1 /* YUMIManeConsiderationTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E896EFA82771AEEC00AD2CC1 /* YUMIManeConsiderationTabulationRegardElement.m */; }; - E896EFAC2771AEFE00AD2CC1 /* YUMIManeAssistantTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E896EFAB2771AEFE00AD2CC1 /* YUMIManeAssistantTabulationRegardElement.m */; }; - E896EFAF2771AF0F00AD2CC1 /* YUMIManeAssistantDispossessTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E896EFAE2771AF0F00AD2CC1 /* YUMIManeAssistantDispossessTabulationRegardElement.m */; }; - E896EFB22771C93B00AD2CC1 /* YUMIManeAssistantNumberRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E896EFB12771C93B00AD2CC1 /* YUMIManeAssistantNumberRegard.m */; }; - E897ABFC28AF2E71003B3587 /* YUMIMarchingPresentRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E897ABFB28AF2E71003B3587 /* YUMIMarchingPresentRegard.m */; }; - E897ABFF28AF39B4003B3587 /* YUMIMarchingBrightnessRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E897ABFE28AF39B4003B3587 /* YUMIMarchingBrightnessRegard.m */; }; - E8998D7A2859784200C68558 /* YUMISVGADisporter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8998D792859784200C68558 /* YUMISVGADisporter.m */; }; - E8998D8028597B0300C68558 /* YUMIChamberFortunateBigCaptureRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8998D7F28597B0300C68558 /* YUMIChamberFortunateBigCaptureRegard.m */; }; - E8998D852859B4FA00C68558 /* YUMIManeConsumerAbstractPresentRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8998D842859B4FA00C68558 /* YUMIManeConsumerAbstractPresentRegard.m */; }; - E8998D8B2859CB6A00C68558 /* YUMIManeConsumerAbstractPresentRamparatMetroRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8998D8A2859CB6A00C68558 /* YUMIManeConsumerAbstractPresentRamparatMetroRegardGovernancer.m */; }; + E896EF942771AAC100AD2CC1 /* XPMineFansPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E896EF932771AAC100AD2CC1 /* XPMineFansPresenter.m */; }; + E896EF972771AAE400AD2CC1 /* XPMineAttentionPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E896EF962771AAE400AD2CC1 /* XPMineAttentionPresenter.m */; }; + E896EF9C2771AE6B00AD2CC1 /* XPMineFansViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E896EF9B2771AE6B00AD2CC1 /* XPMineFansViewController.m */; }; + E896EF9F2771AE7B00AD2CC1 /* XPMineAttentionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E896EF9E2771AE7B00AD2CC1 /* XPMineAttentionViewController.m */; }; + E896EFA22771AE9400AD2CC1 /* XPMineFriendViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E896EFA12771AE9400AD2CC1 /* XPMineFriendViewController.m */; }; + E896EFA62771AEDD00AD2CC1 /* XPMineFansTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E896EFA52771AEDD00AD2CC1 /* XPMineFansTableViewCell.m */; }; + E896EFA92771AEEC00AD2CC1 /* XPMineAttentionTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E896EFA82771AEEC00AD2CC1 /* XPMineAttentionTableViewCell.m */; }; + E896EFAC2771AEFE00AD2CC1 /* XPMineFriendTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E896EFAB2771AEFE00AD2CC1 /* XPMineFriendTableViewCell.m */; }; + E896EFAF2771AF0F00AD2CC1 /* XPMineFriendEmptyTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E896EFAE2771AF0F00AD2CC1 /* XPMineFriendEmptyTableViewCell.m */; }; + E896EFB22771C93B00AD2CC1 /* XPMineFriendNumberView.m in Sources */ = {isa = PBXBuildFile; fileRef = E896EFB12771C93B00AD2CC1 /* XPMineFriendNumberView.m */; }; + E897ABFC28AF2E71003B3587 /* XPSailingGiftView.m in Sources */ = {isa = PBXBuildFile; fileRef = E897ABFB28AF2E71003B3587 /* XPSailingGiftView.m */; }; + E897ABFF28AF39B4003B3587 /* XPSailingAnimationView.m in Sources */ = {isa = PBXBuildFile; fileRef = E897ABFE28AF39B4003B3587 /* XPSailingAnimationView.m */; }; + E8998D7A2859784200C68558 /* XPSVGAPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8998D792859784200C68558 /* XPSVGAPlayer.m */; }; + E8998D8028597B0300C68558 /* XPRoomLuckyBigPrizeView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8998D7F28597B0300C68558 /* XPRoomLuckyBigPrizeView.m */; }; + E8998D852859B4FA00C68558 /* XPMineUserInfoGiftView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8998D842859B4FA00C68558 /* XPMineUserInfoGiftView.m */; }; + E8998D8B2859CB6A00C68558 /* XPMineUserInfoGiftWallSubViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8998D8A2859CB6A00C68558 /* XPMineUserInfoGiftWallSubViewController.m */; }; E8998D962859DD6F00C68558 /* UIView+Corner.m in Sources */ = {isa = PBXBuildFile; fileRef = E8998D952859DD6F00C68558 /* UIView+Corner.m */; }; - E899C68927508F4E00E189E5 /* YUMIConsumerSolitaireAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E899C68827508F4E00E189E5 /* YUMIConsumerSolitaireAbstractMatrix.m */; }; - E899C68C275093B800E189E5 /* YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E899C68B275093B800E189E5 /* YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix.m */; }; - E89BD7D4277D471100E31B19 /* YUMIChamberOnlineTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E89BD7D3277D471100E31B19 /* YUMIChamberOnlineTabulationRegardElement.m */; }; + E899C68927508F4E00E189E5 /* XPUserCardInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E899C68827508F4E00E189E5 /* XPUserCardInfoModel.m */; }; + E899C68C275093B800E189E5 /* XPUserCardMicroItemModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E899C68B275093B800E189E5 /* XPUserCardMicroItemModel.m */; }; + E89BD7D4277D471100E31B19 /* XPRoomOnlineTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E89BD7D3277D471100E31B19 /* XPRoomOnlineTableViewCell.m */; }; E89D60BA271D643A001F8895 /* Api+Room.m in Sources */ = {isa = PBXBuildFile; fileRef = E89D60B9271D643A001F8895 /* Api+Room.m */; }; - E89D60BD271D647A001F8895 /* YUMIChamberExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E89D60BC271D647A001F8895 /* YUMIChamberExternalizer.m */; }; - E89D60C1271D64B9001F8895 /* ChamberAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E89D60C0271D64B9001F8895 /* ChamberAbstractMatrix.m */; }; - E89DA66427005932008483C1 /* YUMIIAPFacilitater.m in Sources */ = {isa = PBXBuildFile; fileRef = E89DA66327005932008483C1 /* YUMIIAPFacilitater.m */; }; - E89DA66727006443008483C1 /* ReindictStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = E89DA66627006443008483C1 /* ReindictStorage.m */; }; - E89DA67227008D59008483C1 /* RamparatetAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E89DA67127008D59008483C1 /* RamparatetAbstractMatrix.m */; }; - E89DA67527009ACD008483C1 /* YUMIManeReindictNevRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E89DA67427009ACD008483C1 /* YUMIManeReindictNevRegard.m */; }; - E89DCF5428FFEC67001647EC /* YUMIDesirePresentHistoryTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E89DCF5328FFEC67001647EC /* YUMIDesirePresentHistoryTabulationRegardElement.m */; }; - E89DCF5728FFF076001647EC /* YUMIDesirePresentDispossessTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E89DCF5628FFF076001647EC /* YUMIDesirePresentDispossessTabulationRegardElement.m */; }; - E89DCF5A28FFF1AD001647EC /* YUMIDesirePresentDivisionRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E89DCF5928FFF1AD001647EC /* YUMIDesirePresentDivisionRegard.m */; }; - E89DCF5D2900E5EE001647EC /* DesirePresentHistoryMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E89DCF5C2900E5EE001647EC /* DesirePresentHistoryMatrix.m */; }; - E89DCF602900F4FB001647EC /* YUMIDesirePresentImportRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E89DCF5F2900F4FB001647EC /* YUMIDesirePresentImportRegard.m */; }; - E8A03DFF27635F960098D9EA /* YUMIChamberConfectioneryPresentRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A03DFE27635F960098D9EA /* YUMIChamberConfectioneryPresentRegard.m */; }; - E8A1F794290642500099C952 /* YUMIChamberFurthaerDisportRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A1F793290642500099C952 /* YUMIChamberFurthaerDisportRegardGovernancer.m */; }; - E8A1F7972906426B0099C952 /* YUMIChamberFurthaerDisportExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A1F7962906426B0099C952 /* YUMIChamberFurthaerDisportExternalizer.m */; }; - E8A1F79C290644DC0099C952 /* YUMIChamberFurthaerDisportAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A1F79B290644DC0099C952 /* YUMIChamberFurthaerDisportAssembletionRegardElement.m */; }; - E8A30BE328534A28003B4873 /* YUMIInterlocutionDiscoveryStrangeRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A30BE228534A28003B4873 /* YUMIInterlocutionDiscoveryStrangeRegardGovernancer.m */; }; - E8A30BE828534A63003B4873 /* YUMIInterlocutionDiscoveryStrangeTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A30BE728534A63003B4873 /* YUMIInterlocutionDiscoveryStrangeTabulationRegardElement.m */; }; - E8A30BEB28534A96003B4873 /* YUMIInterlocutionDiscoveryStrangeFiltrateRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A30BEA28534A96003B4873 /* YUMIInterlocutionDiscoveryStrangeFiltrateRegard.m */; }; - E8A30BEE28534AB1003B4873 /* YUMIInterlocutionDiscoveryStrangeExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A30BED28534AB1003B4873 /* YUMIInterlocutionDiscoveryStrangeExternalizer.m */; }; + E89D60BD271D647A001F8895 /* XPRoomPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E89D60BC271D647A001F8895 /* XPRoomPresenter.m */; }; + E89D60C1271D64B9001F8895 /* RoomInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E89D60C0271D64B9001F8895 /* RoomInfoModel.m */; }; + E89DA66427005932008483C1 /* XPIAPHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = E89DA66327005932008483C1 /* XPIAPHelper.m */; }; + E89DA66727006443008483C1 /* RechargeStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = E89DA66627006443008483C1 /* RechargeStorage.m */; }; + E89DA67227008D59008483C1 /* WalletInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E89DA67127008D59008483C1 /* WalletInfoModel.m */; }; + E89DA67527009ACD008483C1 /* XPMineRechargeNavView.m in Sources */ = {isa = PBXBuildFile; fileRef = E89DA67427009ACD008483C1 /* XPMineRechargeNavView.m */; }; + E89DCF5428FFEC67001647EC /* XPWishGiftHistoryTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E89DCF5328FFEC67001647EC /* XPWishGiftHistoryTableViewCell.m */; }; + E89DCF5728FFF076001647EC /* XPWishGiftEmptyTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E89DCF5628FFF076001647EC /* XPWishGiftEmptyTableViewCell.m */; }; + E89DCF5A28FFF1AD001647EC /* XPWishGiftSectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = E89DCF5928FFF1AD001647EC /* XPWishGiftSectionView.m */; }; + E89DCF5D2900E5EE001647EC /* WishGiftHistoryModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E89DCF5C2900E5EE001647EC /* WishGiftHistoryModel.m */; }; + E89DCF602900F4FB001647EC /* XPWishGiftEnterView.m in Sources */ = {isa = PBXBuildFile; fileRef = E89DCF5F2900F4FB001647EC /* XPWishGiftEnterView.m */; }; + E8A03DFF27635F960098D9EA /* XPRoomCandyGiftView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A03DFE27635F960098D9EA /* XPRoomCandyGiftView.m */; }; + E8A1F794290642500099C952 /* XPRoomMorePlayViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A1F793290642500099C952 /* XPRoomMorePlayViewController.m */; }; + E8A1F7972906426B0099C952 /* XPRoomMorePlayPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A1F7962906426B0099C952 /* XPRoomMorePlayPresenter.m */; }; + E8A1F79C290644DC0099C952 /* XPRoomMorePlayCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A1F79B290644DC0099C952 /* XPRoomMorePlayCollectionViewCell.m */; }; + E8A30BE328534A28003B4873 /* XPSessionFindNewViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A30BE228534A28003B4873 /* XPSessionFindNewViewController.m */; }; + E8A30BE828534A63003B4873 /* XPSessionFindNewTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A30BE728534A63003B4873 /* XPSessionFindNewTableViewCell.m */; }; + E8A30BEB28534A96003B4873 /* XPSessionFindNewFiltrateView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A30BEA28534A96003B4873 /* XPSessionFindNewFiltrateView.m */; }; + E8A30BEE28534AB1003B4873 /* XPSessionFindNewPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A30BED28534AB1003B4873 /* XPSessionFindNewPresenter.m */; }; E8A30BF328534B17003B4873 /* Api+FindNew.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A30BF228534B17003B4873 /* Api+FindNew.m */; }; - E8A30BF628534B35003B4873 /* DiscoveryStrangeConsumerAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A30BF528534B35003B4873 /* DiscoveryStrangeConsumerAbstractMatrix.m */; }; - E8A30BF928534E48003B4873 /* YUMIInterlocutionDiscoveryStrangeDispossessTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A30BF828534E48003B4873 /* YUMIInterlocutionDiscoveryStrangeDispossessTabulationRegardElement.m */; }; - E8A3538528FD67320014A784 /* PresentFortunatePingbackMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A3538428FD67320014A784 /* PresentFortunatePingbackMatrix.m */; }; + E8A30BF628534B35003B4873 /* FindNewUserInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A30BF528534B35003B4873 /* FindNewUserInfoModel.m */; }; + E8A30BF928534E48003B4873 /* XPSessionFindNewEmptyTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A30BF828534E48003B4873 /* XPSessionFindNewEmptyTableViewCell.m */; }; + E8A3538528FD67320014A784 /* GiftLuckyBroadcastModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A3538428FD67320014A784 /* GiftLuckyBroadcastModel.m */; }; E8A3538E28FE5CED0014A784 /* Api+WishGift.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A3538D28FE5CED0014A784 /* Api+WishGift.m */; }; - E8A3539128FE5F0F0014A784 /* DesirePresentAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A3539028FE5F0F0014A784 /* DesirePresentAbstractMatrix.m */; }; - E8A3539428FE605F0014A784 /* DesireExternalizeConsumerMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A3539328FE605F0014A784 /* DesireExternalizeConsumerMatrix.m */; }; - E8A3539728FE7C250014A784 /* YUMIDesirePresentExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A3539628FE7C250014A784 /* YUMIDesirePresentExternalizer.m */; }; - E8A3539B28FE840A0014A784 /* YUMIDesirePresentRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A3539A28FE840A0014A784 /* YUMIDesirePresentRegardGovernancer.m */; }; - E8A353A028FE84670014A784 /* YUMIDesirePresentAbstractRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A3539F28FE84670014A784 /* YUMIDesirePresentAbstractRegard.m */; }; - E8A353A328FE90F60014A784 /* YUMIDesirePresentCreateRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A353A228FE90F60014A784 /* YUMIDesirePresentCreateRegardGovernancer.m */; }; - E8A3540128FEAC5E0014A784 /* YUMIDesirePresentTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A3540028FEAC5E0014A784 /* YUMIDesirePresentTabulationRegardElement.m */; }; - E8A3540428FEB7100014A784 /* YUMIDesirePresentHistoryRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A3540328FEB7100014A784 /* YUMIDesirePresentHistoryRegardGovernancer.m */; }; - E8A3540728FEBD460014A784 /* YUMIDesirePresentCreateProvisionRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A3540628FEBD460014A784 /* YUMIDesirePresentCreateProvisionRegardGovernancer.m */; }; - E8A3540A28FEC0510014A784 /* YUMIDesirePresentStatementRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A3540928FEC0510014A784 /* YUMIDesirePresentStatementRegard.m */; }; - E8A73F8728586A6F00FD9CBC /* YUMIPresentWeekSatelliteAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A73F8628586A6F00FD9CBC /* YUMIPresentWeekSatelliteAssembletionRegardElement.m */; }; - E8A88D2727E8193400CA8837 /* YUMIChamberCombatChosenConsumerRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A88D2627E8193400CA8837 /* YUMIChamberCombatChosenConsumerRegard.m */; }; - E8A88D2A27E81C8600CA8837 /* YUMIChamberCombatConsumerAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A88D2927E81C8600CA8837 /* YUMIChamberCombatConsumerAssembletionRegardElement.m */; }; - E8A88D2D27E81E8700CA8837 /* ChamberCombatChooseConsumerMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A88D2C27E81E8700CA8837 /* ChamberCombatChooseConsumerMatrix.m */; }; - E8A88D3027E85EEA00CA8837 /* ChamberCombatAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A88D2F27E85EEA00CA8837 /* ChamberCombatAbstractMatrix.m */; }; - E8AA6EEF27DF1E6B009B4C2B /* YUMIChamberMotifRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AA6EEE27DF1E6B009B4C2B /* YUMIChamberMotifRegardGovernancer.m */; }; - E8AA6EF227DF1E97009B4C2B /* YUMIChamberMotifExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AA6EF127DF1E97009B4C2B /* YUMIChamberMotifExternalizer.m */; }; - E8AB630D28ADD8C60023B0D2 /* YUMISeparationMotifAccommodatedRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AB630C28ADD8C60023B0D2 /* YUMISeparationMotifAccommodatedRegardGovernancer.m */; }; - E8AB631028ADD92D0023B0D2 /* YUMISeparationsMotifRecommondRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AB630F28ADD92D0023B0D2 /* YUMISeparationsMotifRecommondRegardGovernancer.m */; }; - E8AB631328ADDCF20023B0D2 /* YUMISeparationsMotifIntelligencerRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AB631228ADDCF20023B0D2 /* YUMISeparationsMotifIntelligencerRegard.m */; }; - E8AB631628ADE2D20023B0D2 /* YUMISeparationsMotifRecentlyRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AB631528ADE2D20023B0D2 /* YUMISeparationsMotifRecentlyRegardGovernancer.m */; }; - E8AB631928ADE2F40023B0D2 /* YUMISeparationsMotifEncourageExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AB631828ADE2F40023B0D2 /* YUMISeparationsMotifEncourageExternalizer.m */; }; - E8AB631C28ADE30E0023B0D2 /* YUMISeparationsMotifRecentlyExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AB631B28ADE30E0023B0D2 /* YUMISeparationsMotifRecentlyExternalizer.m */; }; - E8AB632428AE10310023B0D2 /* YUMISepartionMotifStatementRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AB632328AE10310023B0D2 /* YUMISepartionMotifStatementRegardGovernancer.m */; }; - E8AB632728AE13210023B0D2 /* YUMISeparationsMotifStatementExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AB632628AE13210023B0D2 /* YUMISeparationsMotifStatementExternalizer.m */; }; - E8AB632C28AE19600023B0D2 /* YUMISeparationsManeRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AB632B28AE19600023B0D2 /* YUMISeparationsManeRegardGovernancer.m */; }; - E8AB632F28AE19DE0023B0D2 /* YUMISeparationManeExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AB632E28AE19DE0023B0D2 /* YUMISeparationManeExternalizer.m */; }; - E8AB633328AE51470023B0D2 /* YUMIMarchingCaptureRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AB633228AE51470023B0D2 /* YUMIMarchingCaptureRegard.m */; }; - E8AB633628AE54A40023B0D2 /* YUMIMarchingCaptureAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AB633528AE54A40023B0D2 /* YUMIMarchingCaptureAssembletionRegardElement.m */; }; - E8AC721026F43955007D6E91 /* UIIndicateConstant.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC720F26F43955007D6E91 /* UIIndicateConstant.m */; }; - E8AC721326F46ADD007D6E91 /* YUMIManeInstanllingRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC721226F46ADD007D6E91 /* YUMIManeInstanllingRegardGovernancer.m */; }; - E8AC721626F46B06007D6E91 /* YUMIManeInstanllingTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC721526F46B06007D6E91 /* YUMIManeInstanllingTabulationRegardElement.m */; }; - E8AC721926F46E0B007D6E91 /* YUMIManeInstanllingProvisionMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC721826F46E0B007D6E91 /* YUMIManeInstanllingProvisionMatrix.m */; }; - E8AC721C26F4720B007D6E91 /* YUMIManeInstanllingExternalize.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC721B26F4720B007D6E91 /* YUMIManeInstanllingExternalize.m */; }; - E8AC721E26F472BF007D6E91 /* FBCManeInstanllingCeremony.h in Sources */ = {isa = PBXBuildFile; fileRef = E8AC721D26F4723D007D6E91 /* FBCManeInstanllingCeremony.h */; }; - E8AC722126F47E23007D6E91 /* YUMIManeAboutUsRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC722026F47E23007D6E91 /* YUMIManeAboutUsRegardGovernancer.m */; }; - E8AC722426F47E5E007D6E91 /* YUMIManeFeedbackRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC722326F47E5E007D6E91 /* YUMIManeFeedbackRegardGovernancer.m */; }; - E8AC722726F482A4007D6E91 /* YUMIManeFeedbackExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC722626F482A4007D6E91 /* YUMIManeFeedbackExternalizer.m */; }; - E8AC722926F488DA007D6E91 /* FBCManeFeedbackCeremony.h in Sources */ = {isa = PBXBuildFile; fileRef = E8AC722826F48889007D6E91 /* FBCManeFeedbackCeremony.h */; }; - E8AC722C26F49580007D6E91 /* YUMIManeNotificaRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC722B26F49580007D6E91 /* YUMIManeNotificaRegardGovernancer.m */; }; - E8AC722F26F49610007D6E91 /* YUMIManeNotificationProvisionMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC722E26F49610007D6E91 /* YUMIManeNotificationProvisionMatrix.m */; }; - E8AC723226F49710007D6E91 /* YUMIManeNotificationTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC723126F49710007D6E91 /* YUMIManeNotificationTabulationRegardElement.m */; }; - E8AC723526F49939007D6E91 /* YUMIManeNotificaExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC723426F49939007D6E91 /* YUMIManeNotificaExternalizer.m */; }; - E8AC723726F49982007D6E91 /* FBCManeNotificaCeremony.h in Sources */ = {isa = PBXBuildFile; fileRef = E8AC723626F49957007D6E91 /* FBCManeNotificaCeremony.h */; }; - E8AC723A26F49AAE007D6E91 /* YUMIManeNotifyStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC723926F49AAE007D6E91 /* YUMIManeNotifyStatus.m */; }; - E8AC723D26F4B6AA007D6E91 /* YUMISurmountDilemmaMobileConsequentRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC723C26F4B6AA007D6E91 /* YUMISurmountDilemmaMobileConsequentRegardGovernancer.m */; }; - E8AE427327153A3500BEEBB2 /* YUMIChamberImportpriseAccommodatedRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AE427227153A3500BEEBB2 /* YUMIChamberImportpriseAccommodatedRegard.m */; }; - E8AEAED6271412EC0017FCE0 /* YUMIChamberRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AEAED5271412EC0017FCE0 /* YUMIChamberRegardGovernancer.m */; }; - E8AEAEED27141AE20017FCE0 /* YUMIChamberBackAccommodatedRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AEAEEC27141AE20017FCE0 /* YUMIChamberBackAccommodatedRegard.m */; }; - E8AEAEF027141C430017FCE0 /* YUMIChamberParrotAccommodatedRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AEAEEF27141C430017FCE0 /* YUMIChamberParrotAccommodatedRegard.m */; }; - E8AEAEF327141C7C0017FCE0 /* YUMIChamberCommunicationAccommodatedRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AEAEF227141C7C0017FCE0 /* YUMIChamberCommunicationAccommodatedRegard.m */; }; - E8AEAEF927141CA30017FCE0 /* ChamberIntelligencerRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AEAEF827141CA30017FCE0 /* ChamberIntelligencerRegard.m */; }; - E8AFF7E3298CA1E500FBDE32 /* InterlocutionSpeakHalloComputationMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AFF7E2298CA1E500FBDE32 /* InterlocutionSpeakHalloComputationMatrix.m */; }; - E8B3E8092848B871009746AB /* CallforConsumerAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B3E8082848B871009746AB /* CallforConsumerAbstractMatrix.m */; }; - E8B3E80C2848BA40009746AB /* StrangeConsumerBewelcometoMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B3E80B2848BA40009746AB /* StrangeConsumerBewelcometoMatrix.m */; }; - E8B825C226EA00DF009E8E9F /* SurmountValidationCodeExternalize.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B825C126EA00DF009E8E9F /* SurmountValidationCodeExternalize.m */; }; - E8B825C726EA0D9A009E8E9F /* SurmountVerifCodeCeremony.h in Sources */ = {isa = PBXBuildFile; fileRef = E8B825C626EA0995009E8E9F /* SurmountVerifCodeCeremony.h */; }; - E8B825CA26EA1231009E8E9F /* SurmountValidationCodeRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B825C826EA1231009E8E9F /* SurmountValidationCodeRegardGovernancer.m */; }; + E8A3539128FE5F0F0014A784 /* WishGiftInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A3539028FE5F0F0014A784 /* WishGiftInfoModel.m */; }; + E8A3539428FE605F0014A784 /* WishGiftUserModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A3539328FE605F0014A784 /* WishGiftUserModel.m */; }; + E8A3539728FE7C250014A784 /* XPWishGiftPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A3539628FE7C250014A784 /* XPWishGiftPresenter.m */; }; + E8A3539B28FE840A0014A784 /* XPWishGiftViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A3539A28FE840A0014A784 /* XPWishGiftViewController.m */; }; + E8A353A028FE84670014A784 /* XPWishGiftInfoView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A3539F28FE84670014A784 /* XPWishGiftInfoView.m */; }; + E8A353A328FE90F60014A784 /* XPWishGiftCreateViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A353A228FE90F60014A784 /* XPWishGiftCreateViewController.m */; }; + E8A3540128FEAC5E0014A784 /* XPWishGiftTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A3540028FEAC5E0014A784 /* XPWishGiftTableViewCell.m */; }; + E8A3540428FEB7100014A784 /* XPWishGiftHistoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A3540328FEB7100014A784 /* XPWishGiftHistoryViewController.m */; }; + E8A3540728FEBD460014A784 /* XPWishGiftCreateItemViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A3540628FEBD460014A784 /* XPWishGiftCreateItemViewController.m */; }; + E8A3540A28FEC0510014A784 /* XPWishGiftListView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A3540928FEC0510014A784 /* XPWishGiftListView.m */; }; + E8A73F8728586A6F00FD9CBC /* XPGiftWeekStarCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A73F8628586A6F00FD9CBC /* XPGiftWeekStarCollectionViewCell.m */; }; + E8A88D2727E8193400CA8837 /* XPRoomPKSelectUserView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A88D2627E8193400CA8837 /* XPRoomPKSelectUserView.m */; }; + E8A88D2A27E81C8600CA8837 /* XPRoomPKUserCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A88D2927E81C8600CA8837 /* XPRoomPKUserCollectionViewCell.m */; }; + E8A88D2D27E81E8700CA8837 /* RoomPKChooseUserModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A88D2C27E81E8700CA8837 /* RoomPKChooseUserModel.m */; }; + E8A88D3027E85EEA00CA8837 /* RoomPKInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8A88D2F27E85EEA00CA8837 /* RoomPKInfoModel.m */; }; + E8AA6EEF27DF1E6B009B4C2B /* XPRoomTopicViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AA6EEE27DF1E6B009B4C2B /* XPRoomTopicViewController.m */; }; + E8AA6EF227DF1E97009B4C2B /* XPRoomTopicPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AA6EF127DF1E97009B4C2B /* XPRoomTopicPresenter.m */; }; + E8AB630D28ADD8C60023B0D2 /* XPMonentTopicContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AB630C28ADD8C60023B0D2 /* XPMonentTopicContainerViewController.m */; }; + E8AB631028ADD92D0023B0D2 /* XPMonentsTopicRecommondViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AB630F28ADD92D0023B0D2 /* XPMonentsTopicRecommondViewController.m */; }; + E8AB631328ADDCF20023B0D2 /* XPMonentsTopicHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AB631228ADDCF20023B0D2 /* XPMonentsTopicHeaderView.m */; }; + E8AB631628ADE2D20023B0D2 /* XPMonentsTopicLatestViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AB631528ADE2D20023B0D2 /* XPMonentsTopicLatestViewController.m */; }; + E8AB631928ADE2F40023B0D2 /* XPMonentsTopicRecommendPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AB631828ADE2F40023B0D2 /* XPMonentsTopicRecommendPresenter.m */; }; + E8AB631C28ADE30E0023B0D2 /* XPMonentsTopicLatestPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AB631B28ADE30E0023B0D2 /* XPMonentsTopicLatestPresenter.m */; }; + E8AB632428AE10310023B0D2 /* XPMoentsTopicListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AB632328AE10310023B0D2 /* XPMoentsTopicListViewController.m */; }; + E8AB632728AE13210023B0D2 /* XPMonentsTopicListPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AB632628AE13210023B0D2 /* XPMonentsTopicListPresenter.m */; }; + E8AB632C28AE19600023B0D2 /* XPMonentsMineViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AB632B28AE19600023B0D2 /* XPMonentsMineViewController.m */; }; + E8AB632F28AE19DE0023B0D2 /* XPMonentMinePresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AB632E28AE19DE0023B0D2 /* XPMonentMinePresenter.m */; }; + E8AB633328AE51470023B0D2 /* XPSailingPrizeView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AB633228AE51470023B0D2 /* XPSailingPrizeView.m */; }; + E8AB633628AE54A40023B0D2 /* XPSailingPrizeCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AB633528AE54A40023B0D2 /* XPSailingPrizeCollectionViewCell.m */; }; + E8AC721026F43955007D6E91 /* UIImageConstant.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC720F26F43955007D6E91 /* UIImageConstant.m */; }; + E8AC721326F46ADD007D6E91 /* XPMineSettingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC721226F46ADD007D6E91 /* XPMineSettingViewController.m */; }; + E8AC721626F46B06007D6E91 /* XPMineSettingTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC721526F46B06007D6E91 /* XPMineSettingTableViewCell.m */; }; + E8AC721926F46E0B007D6E91 /* XPMineSettingItemModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC721826F46E0B007D6E91 /* XPMineSettingItemModel.m */; }; + E8AC721C26F4720B007D6E91 /* XPMineSettingPresent.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC721B26F4720B007D6E91 /* XPMineSettingPresent.m */; }; + E8AC721E26F472BF007D6E91 /* XPMineSettingProtocol.h in Sources */ = {isa = PBXBuildFile; fileRef = E8AC721D26F4723D007D6E91 /* XPMineSettingProtocol.h */; }; + E8AC722126F47E23007D6E91 /* XPMineAboutUsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC722026F47E23007D6E91 /* XPMineAboutUsViewController.m */; }; + E8AC722426F47E5E007D6E91 /* XPMineFeedbackViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC722326F47E5E007D6E91 /* XPMineFeedbackViewController.m */; }; + E8AC722726F482A4007D6E91 /* XPMineFeedbackPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC722626F482A4007D6E91 /* XPMineFeedbackPresenter.m */; }; + E8AC722926F488DA007D6E91 /* XPMineFeedbackProtocol.h in Sources */ = {isa = PBXBuildFile; fileRef = E8AC722826F48889007D6E91 /* XPMineFeedbackProtocol.h */; }; + E8AC722C26F49580007D6E91 /* XPMineNotificaViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC722B26F49580007D6E91 /* XPMineNotificaViewController.m */; }; + E8AC722F26F49610007D6E91 /* XPMineNotificationItemModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC722E26F49610007D6E91 /* XPMineNotificationItemModel.m */; }; + E8AC723226F49710007D6E91 /* XPMineNotificationTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC723126F49710007D6E91 /* XPMineNotificationTableViewCell.m */; }; + E8AC723526F49939007D6E91 /* XPMineNotificaPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC723426F49939007D6E91 /* XPMineNotificaPresenter.m */; }; + E8AC723726F49982007D6E91 /* XPMineNotificaProtocol.h in Sources */ = {isa = PBXBuildFile; fileRef = E8AC723626F49957007D6E91 /* XPMineNotificaProtocol.h */; }; + E8AC723A26F49AAE007D6E91 /* XPMineNotifyStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC723926F49AAE007D6E91 /* XPMineNotifyStatus.m */; }; + E8AC723D26F4B6AA007D6E91 /* XPLoginBindPhoneResultViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AC723C26F4B6AA007D6E91 /* XPLoginBindPhoneResultViewController.m */; }; + E8AE427327153A3500BEEBB2 /* XPRoomActivityContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AE427227153A3500BEEBB2 /* XPRoomActivityContainerView.m */; }; + E8AEAED6271412EC0017FCE0 /* XPRoomViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AEAED5271412EC0017FCE0 /* XPRoomViewController.m */; }; + E8AEAEED27141AE20017FCE0 /* XPRoomBackContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AEAEEC27141AE20017FCE0 /* XPRoomBackContainerView.m */; }; + E8AEAEF027141C430017FCE0 /* XPRoomMenuContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AEAEEF27141C430017FCE0 /* XPRoomMenuContainerView.m */; }; + E8AEAEF327141C7C0017FCE0 /* XPRoomMessageContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AEAEF227141C7C0017FCE0 /* XPRoomMessageContainerView.m */; }; + E8AEAEF927141CA30017FCE0 /* RoomHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AEAEF827141CA30017FCE0 /* RoomHeaderView.m */; }; + E8AFF7E3298CA1E500FBDE32 /* SessionSayHelloCountModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8AFF7E2298CA1E500FBDE32 /* SessionSayHelloCountModel.m */; }; + E8B3E8092848B871009746AB /* InviteUserInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B3E8082848B871009746AB /* InviteUserInfoModel.m */; }; + E8B3E80C2848BA40009746AB /* NewUserGreetModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B3E80B2848BA40009746AB /* NewUserGreetModel.m */; }; + E8B825C226EA00DF009E8E9F /* LoginVerifCodePresent.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B825C126EA00DF009E8E9F /* LoginVerifCodePresent.m */; }; + E8B825C726EA0D9A009E8E9F /* LoginVerifCodeProtocol.h in Sources */ = {isa = PBXBuildFile; fileRef = E8B825C626EA0995009E8E9F /* LoginVerifCodeProtocol.h */; }; + E8B825CA26EA1231009E8E9F /* LoginVerifCodeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B825C826EA1231009E8E9F /* LoginVerifCodeViewController.m */; }; E8B825CD26EA18C8009E8E9F /* DJDKMIMOMColor.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B825CC26EA18C8009E8E9F /* DJDKMIMOMColor.m */; }; - E8B846BC26FD7C1200A777FE /* UpwardsloadIndicate.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B846BB26FD7C1200A777FE /* UpwardsloadIndicate.m */; }; - E8B846BF26FD827900A777FE /* YUMIManeConsumerAbstractAlbumRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B846BE26FD827900A777FE /* YUMIManeConsumerAbstractAlbumRegardGovernancer.m */; }; - E8B846C226FD82DC00A777FE /* YUMIManeConsumerAbstractAlbumAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B846C126FD82DC00A777FE /* YUMIManeConsumerAbstractAlbumAssembletionRegardElement.m */; }; - E8B846C526FDB41A00A777FE /* YUMIManeConsumerAbstractlbumExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B846C426FDB41A00A777FE /* YUMIManeConsumerAbstractlbumExternalizer.m */; }; - E8B846C726FDB45000A777FE /* FBCManeConsumerAbstractAlbumCeremony.h in Sources */ = {isa = PBXBuildFile; fileRef = E8B846C626FDB44100A777FE /* FBCManeConsumerAbstractAlbumCeremony.h */; }; - E8B846CB26FDD7CD00A777FE /* YUMIManeReindictRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B846CA26FDD7CD00A777FE /* YUMIManeReindictRegardGovernancer.m */; }; - E8B846CF26FDD96100A777FE /* YUMIManeRechageIntelligenceRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B846CE26FDD96100A777FE /* YUMIManeRechageIntelligenceRegard.m */; }; - E8B846D326FDDBE600A777FE /* YUMIManeReindictTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B846D226FDDBE600A777FE /* YUMIManeReindictTabulationRegardElement.m */; }; - E8B846D626FDE01B00A777FE /* YUMIManeReindictExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B846D526FDE01B00A777FE /* YUMIManeReindictExternalizer.m */; }; - E8B846D826FDE17300A777FE /* FBCManeReindictCeremony.h in Sources */ = {isa = PBXBuildFile; fileRef = E8B846D726FDE16300A777FE /* FBCManeReindictCeremony.h */; }; - E8B846DC26FDE24300A777FE /* ReindictStatementMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B846DB26FDE24300A777FE /* ReindictStatementMatrix.m */; }; - E8B9842D28AB77F10022D026 /* YUMISeparationsAnnounceMotifRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B9842C28AB77F10022D026 /* YUMISeparationsAnnounceMotifRegard.m */; }; - E8B9843028AB90200022D026 /* YUMISepartionMotifStatementRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B9842F28AB90200022D026 /* YUMISepartionMotifStatementRegard.m */; }; - E8B9843328ABA2FF0022D026 /* SeparationsPicResAbstract.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B9843228ABA2FF0022D026 /* SeparationsPicResAbstract.m */; }; - E8B9843628ABA8B40022D026 /* YUMISeparationAnnounceSuccessRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B9843528ABA8B40022D026 /* YUMISeparationAnnounceSuccessRegard.m */; }; - E8BD0F8828A9E9E400DE050D /* ChamberMarchingCaptureMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8BD0F8728A9E9E400DE050D /* ChamberMarchingCaptureMatrix.m */; }; - E8BD0F8B28A9EB0A00DE050D /* ChamberMarchingCaptureStatementMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8BD0F8A28A9EB0A00DE050D /* ChamberMarchingCaptureStatementMatrix.m */; }; - E8C1CD6627D88EF800376F83 /* YUMIChamberAcceptRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8C1CD6527D88EF800376F83 /* YUMIChamberAcceptRegardGovernancer.m */; }; - E8C1CD6A27D8937800376F83 /* YUMIChamberAcceptAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8C1CD6927D8937800376F83 /* YUMIChamberAcceptAssembletionRegardElement.m */; }; - E8C1CD6D27D8938C00376F83 /* YUMIChamberAcceptChampionAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8C1CD6C27D8938C00376F83 /* YUMIChamberAcceptChampionAssembletionRegardElement.m */; }; - E8C1CD7027D894B800376F83 /* ChamberAcceptChampionProvisionMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8C1CD6F27D894B800376F83 /* ChamberAcceptChampionProvisionMatrix.m */; }; - E8C1CD7327D8A16500376F83 /* YUMIChamberAcceptTool.m in Sources */ = {isa = PBXBuildFile; fileRef = E8C1CD7227D8A16500376F83 /* YUMIChamberAcceptTool.m */; }; - E8C1CD7627D8AE3D00376F83 /* YUMIChamberAcceptExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8C1CD7527D8AE3D00376F83 /* YUMIChamberAcceptExternalizer.m */; }; - E8C1CD7A27D8B29E00376F83 /* ChamberAcceptAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8C1CD7927D8B29E00376F83 /* ChamberAcceptAbstractMatrix.m */; }; - E8C21501274B76F60079E6BF /* YUMIChamberBrightnessHitRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8C21500274B76F60079E6BF /* YUMIChamberBrightnessHitRegard.m */; }; + E8B846BC26FD7C1200A777FE /* UploadImage.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B846BB26FD7C1200A777FE /* UploadImage.m */; }; + E8B846BF26FD827900A777FE /* XPMineUserInfoAlbumViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B846BE26FD827900A777FE /* XPMineUserInfoAlbumViewController.m */; }; + E8B846C226FD82DC00A777FE /* XPMineUserInfoAlbumCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B846C126FD82DC00A777FE /* XPMineUserInfoAlbumCollectionViewCell.m */; }; + E8B846C526FDB41A00A777FE /* XPMineUserInfolbumPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B846C426FDB41A00A777FE /* XPMineUserInfolbumPresenter.m */; }; + E8B846C726FDB45000A777FE /* XPMineUserInfoAlbumProtocol.h in Sources */ = {isa = PBXBuildFile; fileRef = E8B846C626FDB44100A777FE /* XPMineUserInfoAlbumProtocol.h */; }; + E8B846CB26FDD7CD00A777FE /* XPMineRechargeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B846CA26FDD7CD00A777FE /* XPMineRechargeViewController.m */; }; + E8B846CF26FDD96100A777FE /* XPMineRechageHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B846CE26FDD96100A777FE /* XPMineRechageHeadView.m */; }; + E8B846D326FDDBE600A777FE /* XPMineRechargeTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B846D226FDDBE600A777FE /* XPMineRechargeTableViewCell.m */; }; + E8B846D626FDE01B00A777FE /* XPMineRechargePresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B846D526FDE01B00A777FE /* XPMineRechargePresenter.m */; }; + E8B846D826FDE17300A777FE /* XPMineRechargeProtocol.h in Sources */ = {isa = PBXBuildFile; fileRef = E8B846D726FDE16300A777FE /* XPMineRechargeProtocol.h */; }; + E8B846DC26FDE24300A777FE /* RechargeListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B846DB26FDE24300A777FE /* RechargeListModel.m */; }; + E8B9842D28AB77F10022D026 /* XPMonentsPublishTopicView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B9842C28AB77F10022D026 /* XPMonentsPublishTopicView.m */; }; + E8B9843028AB90200022D026 /* XPMoentsTopicListView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B9842F28AB90200022D026 /* XPMoentsTopicListView.m */; }; + E8B9843328ABA2FF0022D026 /* MonentsPicResInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B9843228ABA2FF0022D026 /* MonentsPicResInfo.m */; }; + E8B9843628ABA8B40022D026 /* XPMonentPublishSuccessView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B9843528ABA8B40022D026 /* XPMonentPublishSuccessView.m */; }; + E8BD0F8828A9E9E400DE050D /* RoomSailingPrizeModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8BD0F8728A9E9E400DE050D /* RoomSailingPrizeModel.m */; }; + E8BD0F8B28A9EB0A00DE050D /* RoomSailingPrizeListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8BD0F8A28A9EB0A00DE050D /* RoomSailingPrizeListModel.m */; }; + E8C1CD6627D88EF800376F83 /* XPRoomFaceViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8C1CD6527D88EF800376F83 /* XPRoomFaceViewController.m */; }; + E8C1CD6A27D8937800376F83 /* XPRoomFaceCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8C1CD6927D8937800376F83 /* XPRoomFaceCollectionViewCell.m */; }; + E8C1CD6D27D8938C00376F83 /* XPRoomFaceTitleCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8C1CD6C27D8938C00376F83 /* XPRoomFaceTitleCollectionViewCell.m */; }; + E8C1CD7027D894B800376F83 /* RoomFaceTitleItemModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8C1CD6F27D894B800376F83 /* RoomFaceTitleItemModel.m */; }; + E8C1CD7327D8A16500376F83 /* XPRoomFaceTool.m in Sources */ = {isa = PBXBuildFile; fileRef = E8C1CD7227D8A16500376F83 /* XPRoomFaceTool.m */; }; + E8C1CD7627D8AE3D00376F83 /* XPRoomFacePresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8C1CD7527D8AE3D00376F83 /* XPRoomFacePresenter.m */; }; + E8C1CD7A27D8B29E00376F83 /* RoomFaceInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8C1CD7927D8B29E00376F83 /* RoomFaceInfoModel.m */; }; + E8C21501274B76F60079E6BF /* XPRoomAnimationHitView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8C21500274B76F60079E6BF /* XPRoomAnimationHitView.m */; }; E8C6FFCC27548120004DC9F0 /* Api+Home.m in Sources */ = {isa = PBXBuildFile; fileRef = E8C6FFC827548120004DC9F0 /* Api+Home.m */; }; - E8C6FFE02754EEF9004DC9F0 /* YUMIResidenceHuntforRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8C6FFDF2754EEF9004DC9F0 /* YUMIResidenceHuntforRegardGovernancer.m */; }; - E8C6FFE62754FE53004DC9F0 /* YUMIResidenceHuntforExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8C6FFE52754FE53004DC9F0 /* YUMIResidenceHuntforExternalizer.m */; }; - E8CEA03D26EA3DE500644B44 /* SurmountCiphercodeExternalize.m in Sources */ = {isa = PBXBuildFile; fileRef = E8CEA03C26EA3DE500644B44 /* SurmountCiphercodeExternalize.m */; }; - E8D34D4728080295009C4835 /* YUMIManeConsumerAtomicRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D4628080295009C4835 /* YUMIManeConsumerAtomicRegardGovernancer.m */; }; - E8D34D4D28080351009C4835 /* YUMIManeAtomicCollectiveTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D4C28080351009C4835 /* YUMIManeAtomicCollectiveTabulationRegardElement.m */; }; - E8D34D5028080362009C4835 /* YUMIManeAtomicPresentTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D4F28080362009C4835 /* YUMIManeAtomicPresentTabulationRegardElement.m */; }; - E8D34D5628080393009C4835 /* YUMIManeAtomicPresentAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D5528080393009C4835 /* YUMIManeAtomicPresentAssembletionRegardElement.m */; }; - E8D34D5A28082357009C4835 /* ConsumerPresentRamparatAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D5928082357009C4835 /* ConsumerPresentRamparatAbstractMatrix.m */; }; - E8D34D6028082BA5009C4835 /* YUMIManeConsumerAtomicExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D5F28082BA5009C4835 /* YUMIManeConsumerAtomicExternalizer.m */; }; - E8D34D6428084E40009C4835 /* YUMIManeConsumerAbstractPresentRamparatRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D6328084E40009C4835 /* YUMIManeConsumerAbstractPresentRamparatRegardGovernancer.m */; }; - E8D34D6728084E88009C4835 /* YUMIManeConsumerAbstractPresentRamparatAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D6628084E88009C4835 /* YUMIManeConsumerAbstractPresentRamparatAssembletionRegardElement.m */; }; - E8D4824A278D1F73003C1D08 /* YUMIThroughoutChamberCombatCallforRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D48249278D1F73003C1D08 /* YUMIThroughoutChamberCombatCallforRegard.m */; }; - E8D4824D278D2CE4003C1D08 /* YUMIThroughoutChamberCombatCallforConsequentRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D4824C278D2CE4003C1D08 /* YUMIThroughoutChamberCombatCallforConsequentRegard.m */; }; - E8D48250278D68BA003C1D08 /* YUMIAcrpssChamberCombatFasciaboardRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D4824F278D68BA003C1D08 /* YUMIAcrpssChamberCombatFasciaboardRegard.m */; }; - E8D48253278D8228003C1D08 /* ThroughoutChamberCombatFasciaboardMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D48252278D8228003C1D08 /* ThroughoutChamberCombatFasciaboardMatrix.m */; }; - E8D48256278D83AE003C1D08 /* YUMIThroughoutChamberCombatFasciaboardConsumerRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D48255278D83AE003C1D08 /* YUMIThroughoutChamberCombatFasciaboardConsumerRegard.m */; }; - E8D4DE442940462C00EC788D /* YUMIPresentTwelveSatellitePingbackRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D4DE432940462C00EC788D /* YUMIPresentTwelveSatellitePingbackRegard.m */; }; - E8D4DE472940473500EC788D /* PresentTwelveSatelliteThresholdMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D4DE462940473500EC788D /* PresentTwelveSatelliteThresholdMatrix.m */; }; - E8D55C9D28113218006935A5 /* CommunicationParrotMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D55C9C28113218006935A5 /* CommunicationParrotMatrix.m */; }; - E8D55CA0281186D6006935A5 /* InterlocutionVocalmusicReflectionRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D55C9F281186D6006935A5 /* InterlocutionVocalmusicReflectionRegard.m */; }; - E8D7D74B282BA1EC0007D7BD /* YUMISeparationsTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D7D74A282BA1EC0007D7BD /* YUMISeparationsTabulationRegardElement.m */; }; - E8DAC5AC2858305A00012CFD /* YUMIChamberCommunicationIntumesceRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8DAC5AB2858305A00012CFD /* YUMIChamberCommunicationIntumesceRegard.m */; }; - E8DACCFB2766EDC60052092C /* MiecreoscoopePresentStressRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8DACCFA2766EDC60052092C /* MiecreoscoopePresentStressRegard.m */; }; - E8DACCFE27673F870052092C /* PresentStressAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8DACCFD27673F870052092C /* PresentStressAbstractMatrix.m */; }; - E8DBB6FD27B63CE000AA285D /* TraitCompetitionMiecreoscoopeRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8DBB6FC27B63CE000AA285D /* TraitCompetitionMiecreoscoopeRegard.m */; }; - E8DD25DA295583920043C7D5 /* XCombatellegRandomCombatPreadominantRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8DD25D9295583920043C7D5 /* XCombatellegRandomCombatPreadominantRegard.m */; }; - E8DEC99527648FA50078CB70 /* ClientDisposition.m in Sources */ = {isa = PBXBuildFile; fileRef = E8DEC99427648FA50078CB70 /* ClientDisposition.m */; }; - E8DEC99E2764A5B60078CB70 /* YUMIChamberFurthaerParrotRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8DEC99D2764A5B60078CB70 /* YUMIChamberFurthaerParrotRegardGovernancer.m */; }; - E8DEC9A12764A5D20078CB70 /* YUMIChamberFurthaerProvisionMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8DEC9A02764A5D20078CB70 /* YUMIChamberFurthaerProvisionMatrix.m */; }; - E8DEC9A42764A6600078CB70 /* YUMIFurthaerParrotExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8DEC9A32764A6600078CB70 /* YUMIFurthaerParrotExternalizer.m */; }; + E8C6FFE02754EEF9004DC9F0 /* XPHomeSearchViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8C6FFDF2754EEF9004DC9F0 /* XPHomeSearchViewController.m */; }; + E8C6FFE62754FE53004DC9F0 /* XPHomeSearchPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8C6FFE52754FE53004DC9F0 /* XPHomeSearchPresenter.m */; }; + E8CEA03D26EA3DE500644B44 /* LoginPasswordPresent.m in Sources */ = {isa = PBXBuildFile; fileRef = E8CEA03C26EA3DE500644B44 /* LoginPasswordPresent.m */; }; + E8D34D4728080295009C4835 /* XPMineUserDataViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D4628080295009C4835 /* XPMineUserDataViewController.m */; }; + E8D34D4D28080351009C4835 /* XPMineDataClanTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D4C28080351009C4835 /* XPMineDataClanTableViewCell.m */; }; + E8D34D5028080362009C4835 /* XPMineDataGiftTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D4F28080362009C4835 /* XPMineDataGiftTableViewCell.m */; }; + E8D34D5628080393009C4835 /* XPMineDataGiftCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D5528080393009C4835 /* XPMineDataGiftCollectionViewCell.m */; }; + E8D34D5A28082357009C4835 /* UserGiftWallInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D5928082357009C4835 /* UserGiftWallInfoModel.m */; }; + E8D34D6028082BA5009C4835 /* XPMineUserDataPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D5F28082BA5009C4835 /* XPMineUserDataPresenter.m */; }; + E8D34D6428084E40009C4835 /* XPMineUserInfoGiftWallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D6328084E40009C4835 /* XPMineUserInfoGiftWallViewController.m */; }; + E8D34D6728084E88009C4835 /* XPMineUserInfoGiftWallCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D6628084E88009C4835 /* XPMineUserInfoGiftWallCollectionViewCell.m */; }; + E8D4824A278D1F73003C1D08 /* XPAcrossRoomPKInviteView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D48249278D1F73003C1D08 /* XPAcrossRoomPKInviteView.m */; }; + E8D4824D278D2CE4003C1D08 /* XPAcrossRoomPKInviteResultView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D4824C278D2CE4003C1D08 /* XPAcrossRoomPKInviteResultView.m */; }; + E8D48250278D68BA003C1D08 /* XPAcrpssRoomPKPanelView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D4824F278D68BA003C1D08 /* XPAcrpssRoomPKPanelView.m */; }; + E8D48253278D8228003C1D08 /* AcrossRoomPKPanelModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D48252278D8228003C1D08 /* AcrossRoomPKPanelModel.m */; }; + E8D48256278D83AE003C1D08 /* XPAcrossRoomPKPanelUserView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D48255278D83AE003C1D08 /* XPAcrossRoomPKPanelUserView.m */; }; + E8D4DE442940462C00EC788D /* XPGiftTwelveStarBroadcastView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D4DE432940462C00EC788D /* XPGiftTwelveStarBroadcastView.m */; }; + E8D4DE472940473500EC788D /* GiftTwelveStarFirstModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D4DE462940473500EC788D /* GiftTwelveStarFirstModel.m */; }; + E8D55C9D28113218006935A5 /* MessageMenuModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D55C9C28113218006935A5 /* MessageMenuModel.m */; }; + E8D55CA0281186D6006935A5 /* SessionAudioRecordView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D55C9F281186D6006935A5 /* SessionAudioRecordView.m */; }; + E8D7D74B282BA1EC0007D7BD /* XPMonentsTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D7D74A282BA1EC0007D7BD /* XPMonentsTableViewCell.m */; }; + E8DAC5AC2858305A00012CFD /* XPRoomMessageBubbleView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8DAC5AB2858305A00012CFD /* XPRoomMessageBubbleView.m */; }; + E8DACCFB2766EDC60052092C /* MicroGiftValueView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8DACCFA2766EDC60052092C /* MicroGiftValueView.m */; }; + E8DACCFE27673F870052092C /* GiftValueInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8DACCFD27673F870052092C /* GiftValueInfoModel.m */; }; + E8DBB6FD27B63CE000AA285D /* LittleGameMicroView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8DBB6FC27B63CE000AA285D /* LittleGameMicroView.m */; }; + E8DD25DA295583920043C7D5 /* XPAnchorRandomPKRuleView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8DD25D9295583920043C7D5 /* XPAnchorRandomPKRuleView.m */; }; + E8DEC99527648FA50078CB70 /* ClientConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = E8DEC99427648FA50078CB70 /* ClientConfig.m */; }; + E8DEC99E2764A5B60078CB70 /* XPRoomMoreMenuViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8DEC99D2764A5B60078CB70 /* XPRoomMoreMenuViewController.m */; }; + E8DEC9A12764A5D20078CB70 /* XPRoomMoreItemModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8DEC9A02764A5D20078CB70 /* XPRoomMoreItemModel.m */; }; + E8DEC9A42764A6600078CB70 /* XPMoreMenuPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8DEC9A32764A6600078CB70 /* XPMoreMenuPresenter.m */; }; E8DEC9A82764A68B0078CB70 /* Api+MoreMenu.m in Sources */ = {isa = PBXBuildFile; fileRef = E8DEC9A72764A68B0078CB70 /* Api+MoreMenu.m */; }; - E8DEC9AC2764A6CD0078CB70 /* YUMIChamberFurthaerParrotAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8DEC9AB2764A6CD0078CB70 /* YUMIChamberFurthaerParrotAssembletionRegardElement.m */; }; - E8E0DAE0285C20E500566A2F /* CommunicationSatisfactionDiscoveryStrangeBewelcometoRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E0DADF285C20E500566A2F /* CommunicationSatisfactionDiscoveryStrangeBewelcometoRegard.m */; }; - E8E0DAE6285C280E00566A2F /* YUMIInterlocutionDiscoveryStrangePrecautiousRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E0DAE5285C280E00566A2F /* YUMIInterlocutionDiscoveryStrangePrecautiousRegard.m */; }; - E8E0DAE9285C2E8C00566A2F /* DiscoveryStrangeBewelcometoCommunicationMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E0DAE8285C2E8C00566A2F /* DiscoveryStrangeBewelcometoCommunicationMatrix.m */; }; - E8E20BDB281645300033B688 /* InterlocutionAbstractRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E20BDA281645300033B688 /* InterlocutionAbstractRegardGovernancer.m */; }; - E8E20BDE28164D3A0033B688 /* InterlocutionNevRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E20BDD28164D3A0033B688 /* InterlocutionNevRegard.m */; }; - E8E20BE2281695800033B688 /* YUMIManeSurmountCiphercodeRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E20BE1281695800033B688 /* YUMIManeSurmountCiphercodeRegardGovernancer.m */; }; - E8E20BE828169BDC0033B688 /* YUMIManeSurmountCiphercodeExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E20BE728169BDC0033B688 /* YUMIManeSurmountCiphercodeExternalizer.m */; }; - E8E20BEC2816A5B90033B688 /* YUMIManeBlackStatementRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E20BEB2816A5B90033B688 /* YUMIManeBlackStatementRegardGovernancer.m */; }; - E8E20BEF2816A5FC0033B688 /* YUMIManeBlackStatementTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E20BEE2816A5FC0033B688 /* YUMIManeBlackStatementTabulationRegardElement.m */; }; - E8E21A9B28B4BD92008F7C9D /* YUMIChamberGraffitiPresentBrightnessRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E21A9A28B4BD92008F7C9D /* YUMIChamberGraffitiPresentBrightnessRegard.m */; }; - E8E21A9E28B4DFE8008F7C9D /* YUMIMarchingBuyFuelRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E21A9D28B4DFE8008F7C9D /* YUMIMarchingBuyFuelRegard.m */; }; - E8E70D7726F2F15100F03460 /* YUMIManeRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E70D7626F2F15100F03460 /* YUMIManeRegardGovernancer.m */; }; - E8E70D7A26F2F16600F03460 /* YUMIManeExternalize.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E70D7926F2F16600F03460 /* YUMIManeExternalize.m */; }; + E8DEC9AC2764A6CD0078CB70 /* XPRoomMoreMenuCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8DEC9AB2764A6CD0078CB70 /* XPRoomMoreMenuCollectionViewCell.m */; }; + E8E0DAE0285C20E500566A2F /* MessageContentFindNewGreetView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E0DADF285C20E500566A2F /* MessageContentFindNewGreetView.m */; }; + E8E0DAE6285C280E00566A2F /* XPSessionFindNewAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E0DAE5285C280E00566A2F /* XPSessionFindNewAlertView.m */; }; + E8E0DAE9285C2E8C00566A2F /* FindNewGreetMessageModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E0DAE8285C2E8C00566A2F /* FindNewGreetMessageModel.m */; }; + E8E20BDB281645300033B688 /* SessionInfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E20BDA281645300033B688 /* SessionInfoViewController.m */; }; + E8E20BDE28164D3A0033B688 /* SessionNavView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E20BDD28164D3A0033B688 /* SessionNavView.m */; }; + E8E20BE2281695800033B688 /* XPMineLoginPasswordViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E20BE1281695800033B688 /* XPMineLoginPasswordViewController.m */; }; + E8E20BE828169BDC0033B688 /* XPMineLoginPasswordPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E20BE728169BDC0033B688 /* XPMineLoginPasswordPresenter.m */; }; + E8E20BEC2816A5B90033B688 /* XPMineBlackListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E20BEB2816A5B90033B688 /* XPMineBlackListViewController.m */; }; + E8E20BEF2816A5FC0033B688 /* XPMineBlackListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E20BEE2816A5FC0033B688 /* XPMineBlackListTableViewCell.m */; }; + E8E21A9B28B4BD92008F7C9D /* XPRoomGraffitiGiftAnimationView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E21A9A28B4BD92008F7C9D /* XPRoomGraffitiGiftAnimationView.m */; }; + E8E21A9E28B4DFE8008F7C9D /* XPSailingBuyFuelView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E21A9D28B4DFE8008F7C9D /* XPSailingBuyFuelView.m */; }; + E8E70D7726F2F15100F03460 /* XPMineViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E70D7626F2F15100F03460 /* XPMineViewController.m */; }; + E8E70D7A26F2F16600F03460 /* XPMinePresent.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E70D7926F2F16600F03460 /* XPMinePresent.m */; }; E8E70D7E26F2F19D00F03460 /* Api+Mine.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E70D7D26F2F19D00F03460 /* Api+Mine.m */; }; - E8E70D8326F2F51A00F03460 /* YUMIManeIntelligenceRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E70D8226F2F51A00F03460 /* YUMIManeIntelligenceRegard.m */; }; - E8E70D8C26F2F5A500F03460 /* YUMIManeIntelligenceProvisionAssembletionRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E70D8B26F2F5A500F03460 /* YUMIManeIntelligenceProvisionAssembletionRegardElement.m */; }; - E8E70D9226F2F60C00F03460 /* YUMIManeProvisionMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E70D9126F2F60C00F03460 /* YUMIManeProvisionMatrix.m */; }; - E8E7DAE82744F5EF00C631CC /* YUMIPresentStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E7DAE72744F5EF00C631CC /* YUMIPresentStorage.m */; }; - E8E7DAEB2745158500C631CC /* YUMIExternalizeConsumerAbstractMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E7DAEA2745158500C631CC /* YUMIExternalizeConsumerAbstractMatrix.m */; }; - E8E859E928264F4500EE4857 /* YUMIChamberTransferManualRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E859E828264F4500EE4857 /* YUMIChamberTransferManualRegardGovernancer.m */; }; - E8EE827D272B9A2300A17217 /* YUMIChamberDischargeEssayRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EE827C272B9A2300A17217 /* YUMIChamberDischargeEssayRegard.m */; }; - E8EEB8F226FC2050007C6EBA /* SDAppearanceBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB8EC26FC2050007C6EBA /* SDAppearanceBrowser.m */; }; - E8EEB8F326FC2050007C6EBA /* SDWaitingRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB8ED26FC2050007C6EBA /* SDWaitingRegard.m */; }; - E8EEB8F426FC2050007C6EBA /* SDBrowserIndicateRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB8EE26FC2050007C6EBA /* SDBrowserIndicateRegard.m */; }; - E8EEB8F726FC2673007C6EBA /* ConsumerAppearance.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB8F626FC2673007C6EBA /* ConsumerAppearance.m */; }; - E8EEB8FB26FC2874007C6EBA /* YUMIManeConsumerAbstractTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB8FA26FC2874007C6EBA /* YUMIManeConsumerAbstractTabulationRegardElement.m */; }; - E8EEB8FE26FC2DF8007C6EBA /* YUMIManeConsumerAbstractCustomNevRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB8FD26FC2DF8007C6EBA /* YUMIManeConsumerAbstractCustomNevRegard.m */; }; - E8EEB90126FC31B6007C6EBA /* YUMIManeConsumerAbstractExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB90026FC31B6007C6EBA /* YUMIManeConsumerAbstractExternalizer.m */; }; - E8EEB90326FC31DC007C6EBA /* FBCManeConsumerAbstractCeremony.h in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB90226FC31CE007C6EBA /* FBCManeConsumerAbstractCeremony.h */; }; - E8EEB90626FC5772007C6EBA /* YUMIManeConsumerAbstractCompileRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB90526FC5772007C6EBA /* YUMIManeConsumerAbstractCompileRegardGovernancer.m */; }; - E8EEB90926FC579A007C6EBA /* YUMIManeConsumerAbstractCompileTabulationRegardElement.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB90826FC579A007C6EBA /* YUMIManeConsumerAbstractCompileTabulationRegardElement.m */; }; - E8EEB90C26FC5EBC007C6EBA /* YUMIManeConsumerAbstractCompileMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB90B26FC5EBC007C6EBA /* YUMIManeConsumerAbstractCompileMatrix.m */; }; - E8EEB90F26FC6AB8007C6EBA /* YUMIManeConsumerAbstractCompileExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB90E26FC6AB8007C6EBA /* YUMIManeConsumerAbstractCompileExternalizer.m */; }; - E8EEB91126FC6AE2007C6EBA /* FBCManeConsumerAbstractEditCeremony.h in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB91026FC6AD3007C6EBA /* FBCManeConsumerAbstractEditCeremony.h */; }; - E8EEB91426FC7786007C6EBA /* YUMIManeConsumerAbstractNickRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB91326FC7786007C6EBA /* YUMIManeConsumerAbstractNickRegardGovernancer.m */; }; - E8EEB91726FC7B35007C6EBA /* YUMIManeConsumerAbstractDesRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB91626FC7B35007C6EBA /* YUMIManeConsumerAbstractDesRegardGovernancer.m */; }; - E8EEB91D26FC9D58007C6EBA /* YUMIManeConsumerAbstractDateRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB91C26FC9D58007C6EBA /* YUMIManeConsumerAbstractDateRegard.m */; }; - E8F1558D28124D5200EE8C06 /* CommunicationConentVocalmusicRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = E8F1558C28124D5200EE8C06 /* CommunicationConentVocalmusicRegard.m */; }; - E8F1559028125E2D00EE8C06 /* CommunicationVocalmusicConcentrate.m in Sources */ = {isa = PBXBuildFile; fileRef = E8F1558F28125E2D00EE8C06 /* CommunicationVocalmusicConcentrate.m */; }; - E8F1559328129EBA00EE8C06 /* SatisfactionSecretaryMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8F1559228129EBA00EE8C06 /* SatisfactionSecretaryMatrix.m */; }; + E8E70D8326F2F51A00F03460 /* XPMineHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E70D8226F2F51A00F03460 /* XPMineHeadView.m */; }; + E8E70D8C26F2F5A500F03460 /* XPMineHeadItemCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E70D8B26F2F5A500F03460 /* XPMineHeadItemCollectionViewCell.m */; }; + E8E70D9226F2F60C00F03460 /* XPMineItemModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E70D9126F2F60C00F03460 /* XPMineItemModel.m */; }; + E8E7DAE82744F5EF00C631CC /* XPGiftStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E7DAE72744F5EF00C631CC /* XPGiftStorage.m */; }; + E8E7DAEB2745158500C631CC /* XPGiftUserInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E7DAEA2745158500C631CC /* XPGiftUserInfoModel.m */; }; + E8E859E928264F4500EE4857 /* XPRoomTransferMusicViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8E859E828264F4500EE4857 /* XPRoomTransferMusicViewController.m */; }; + E8EE827D272B9A2300A17217 /* XPRoomSendTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EE827C272B9A2300A17217 /* XPRoomSendTextView.m */; }; + E8EEB8F226FC2050007C6EBA /* SDPhotoBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB8EC26FC2050007C6EBA /* SDPhotoBrowser.m */; }; + E8EEB8F326FC2050007C6EBA /* SDWaitingView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB8ED26FC2050007C6EBA /* SDWaitingView.m */; }; + E8EEB8F426FC2050007C6EBA /* SDBrowserImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB8EE26FC2050007C6EBA /* SDBrowserImageView.m */; }; + E8EEB8F726FC2673007C6EBA /* UserPhoto.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB8F626FC2673007C6EBA /* UserPhoto.m */; }; + E8EEB8FB26FC2874007C6EBA /* XPMineUserInfoTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB8FA26FC2874007C6EBA /* XPMineUserInfoTableViewCell.m */; }; + E8EEB8FE26FC2DF8007C6EBA /* XPMineUserInfoCustomNavView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB8FD26FC2DF8007C6EBA /* XPMineUserInfoCustomNavView.m */; }; + E8EEB90126FC31B6007C6EBA /* XPMineUserInfoPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB90026FC31B6007C6EBA /* XPMineUserInfoPresenter.m */; }; + E8EEB90326FC31DC007C6EBA /* XPMineUserInfoProtocol.h in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB90226FC31CE007C6EBA /* XPMineUserInfoProtocol.h */; }; + E8EEB90626FC5772007C6EBA /* XPMineUserInfoEditViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB90526FC5772007C6EBA /* XPMineUserInfoEditViewController.m */; }; + E8EEB90926FC579A007C6EBA /* XPMineUserInfoEditTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB90826FC579A007C6EBA /* XPMineUserInfoEditTableViewCell.m */; }; + E8EEB90C26FC5EBC007C6EBA /* XPMineUserInfoEditModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB90B26FC5EBC007C6EBA /* XPMineUserInfoEditModel.m */; }; + E8EEB90F26FC6AB8007C6EBA /* XPMineUserInfoEditPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB90E26FC6AB8007C6EBA /* XPMineUserInfoEditPresenter.m */; }; + E8EEB91126FC6AE2007C6EBA /* XPMineUserInfoEditProtocol.h in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB91026FC6AD3007C6EBA /* XPMineUserInfoEditProtocol.h */; }; + E8EEB91426FC7786007C6EBA /* XPMineUserInfoNickViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB91326FC7786007C6EBA /* XPMineUserInfoNickViewController.m */; }; + E8EEB91726FC7B35007C6EBA /* XPMineUserInfoDesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB91626FC7B35007C6EBA /* XPMineUserInfoDesViewController.m */; }; + E8EEB91D26FC9D58007C6EBA /* XPMineUserInfoDateView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB91C26FC9D58007C6EBA /* XPMineUserInfoDateView.m */; }; + E8F1558D28124D5200EE8C06 /* MessageConentAudioView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8F1558C28124D5200EE8C06 /* MessageConentAudioView.m */; }; + E8F1559028125E2D00EE8C06 /* MessageAudioCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8F1558F28125E2D00EE8C06 /* MessageAudioCenter.m */; }; + E8F1559328129EBA00EE8C06 /* ContentSecretaryModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8F1559228129EBA00EE8C06 /* ContentSecretaryModel.m */; }; E8F6135C291E26BD00E12650 /* NSMutableDictionary+Saft.m in Sources */ = {isa = PBXBuildFile; fileRef = E8F6135B291E26BD00E12650 /* NSMutableDictionary+Saft.m */; }; E8F6135F291E274E00E12650 /* NSArray+Safe.m in Sources */ = {isa = PBXBuildFile; fileRef = E8F6135E291E274E00E12650 /* NSArray+Safe.m */; }; - E8F63CB1298B553500B338BA /* InterlocutionSpeakHalloPrototypeMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8F63CB0298B553500B338BA /* InterlocutionSpeakHalloPrototypeMatrix.m */; }; + E8F63CB1298B553500B338BA /* SessionSayHelloLevelModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8F63CB0298B553500B338BA /* SessionSayHelloLevelModel.m */; }; E8F63CB4298B563D00B338BA /* Api+SayHello.m in Sources */ = {isa = PBXBuildFile; fileRef = E8F63CB3298B563D00B338BA /* Api+SayHello.m */; }; - E8F63CB7298B566D00B338BA /* YUMIInterlocutionSpeakHalloExternalizer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8F63CB6298B566D00B338BA /* YUMIInterlocutionSpeakHalloExternalizer.m */; }; - E8F63CBB298B648300B338BA /* InterlocutionSpeakHalloStatementMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8F63CBA298B648300B338BA /* InterlocutionSpeakHalloStatementMatrix.m */; }; - E8F65C1F286998C9009BB5B9 /* YUMIManeParaticipationRegardGovernancer.m in Sources */ = {isa = PBXBuildFile; fileRef = E8F65C1E286998C9009BB5B9 /* YUMIManeParaticipationRegardGovernancer.m */; }; - E8F65C222869A36F009BB5B9 /* SatisfactionParaticipationSeparationsMatrix.m in Sources */ = {isa = PBXBuildFile; fileRef = E8F65C212869A36F009BB5B9 /* SatisfactionParaticipationSeparationsMatrix.m */; }; - E8FE3C2C2994D0E80006C6C7 /* YUMISwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = E8FE3C2B2994D0E80006C6C7 /* YUMISwitch.m */; }; - F1D8556F2931FC86008C418F /* YUMIChamberYearImportpriseRegard.m in Sources */ = {isa = PBXBuildFile; fileRef = F1D8556E2931FC86008C418F /* YUMIChamberYearImportpriseRegard.m */; }; + E8F63CB7298B566D00B338BA /* XPSessionSayHelloPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8F63CB6298B566D00B338BA /* XPSessionSayHelloPresenter.m */; }; + E8F63CBB298B648300B338BA /* SessionSayHelloListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8F63CBA298B648300B338BA /* SessionSayHelloListModel.m */; }; + E8F65C1F286998C9009BB5B9 /* XPMineShareViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8F65C1E286998C9009BB5B9 /* XPMineShareViewController.m */; }; + E8F65C222869A36F009BB5B9 /* ContentShareMonentsModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8F65C212869A36F009BB5B9 /* ContentShareMonentsModel.m */; }; + E8FE3C2C2994D0E80006C6C7 /* XPSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = E8FE3C2B2994D0E80006C6C7 /* XPSwitch.m */; }; + F1D8556F2931FC86008C418F /* XPRoomYearActivityView.m in Sources */ = {isa = PBXBuildFile; fileRef = F1D8556E2931FC86008C418F /* XPRoomYearActivityView.m */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -1267,202 +1227,202 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 140A7F50299CC69000841594 /* YUMITabObstacle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMITabObstacle.h; sourceTree = ""; }; - 140A7F51299CC69000841594 /* YUMITabObstacle.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMITabObstacle.m; sourceTree = ""; }; - 140A818B299CFF1C00841594 /* YUMIVendorCallRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIVendorCallRegardGovernancer.h; sourceTree = ""; }; - 140A818C299CFF1C00841594 /* YUMIVendorCallRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIVendorCallRegardGovernancer.m; sourceTree = ""; }; + 140A7F50299CC69000841594 /* XPTabBar.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPTabBar.h; sourceTree = ""; }; + 140A7F51299CC69000841594 /* XPTabBar.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPTabBar.m; sourceTree = ""; }; + 140A818B299CFF1C00841594 /* XPVendorCallViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPVendorCallViewController.h; sourceTree = ""; }; + 140A818C299CFF1C00841594 /* XPVendorCallViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPVendorCallViewController.m; sourceTree = ""; }; 1427212329A7563A00C7C423 /* ZegoAudioRoom.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = ZegoAudioRoom.framework; sourceTree = ""; }; - 1427212A29A757EC00C7C423 /* SeparationsStatementAbstractMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SeparationsStatementAbstractMatrix.m; sourceTree = ""; }; - 1427212B29A757EC00C7C423 /* SeparationsStatementAbstractMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SeparationsStatementAbstractMatrix.h; sourceTree = ""; }; - 1427212D29A7599500C7C423 /* YUMISeparationsConsiderationExternalizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsConsiderationExternalizer.m; sourceTree = ""; }; - 1427212E29A7599500C7C423 /* YUMISeparationsConsiderationExternalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsConsiderationExternalizer.h; sourceTree = ""; }; - 1427213029A759D200C7C423 /* FBCSeparationsConsiderationCeremony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBCSeparationsConsiderationCeremony.h; sourceTree = ""; }; - 1427213129A75A1700C7C423 /* FBCSeparationsLatestCeremony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBCSeparationsLatestCeremony.h; sourceTree = ""; }; - 1427213229A75A2600C7C423 /* YUMISeparationsRecentlyExternalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsRecentlyExternalizer.h; sourceTree = ""; }; - 1427213329A75A2600C7C423 /* YUMISeparationsRecentlyExternalizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsRecentlyExternalizer.m; sourceTree = ""; }; - 1427213729A75F6F00C7C423 /* MyHyperTextConnection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyHyperTextConnection.m; sourceTree = ""; }; - 1427213929A75F6F00C7C423 /* HyperTextConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HyperTextConnection.h; sourceTree = ""; }; + 1427212A29A757EC00C7C423 /* MonentsListInfoModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MonentsListInfoModel.m; sourceTree = ""; }; + 1427212B29A757EC00C7C423 /* MonentsListInfoModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MonentsListInfoModel.h; sourceTree = ""; }; + 1427212D29A7599500C7C423 /* XPMonentsAttentionPresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMonentsAttentionPresenter.m; sourceTree = ""; }; + 1427212E29A7599500C7C423 /* XPMonentsAttentionPresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMonentsAttentionPresenter.h; sourceTree = ""; }; + 1427213029A759D200C7C423 /* XPMonentsAttentionProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMonentsAttentionProtocol.h; sourceTree = ""; }; + 1427213129A75A1700C7C423 /* XPMonentsLatestProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMonentsLatestProtocol.h; sourceTree = ""; }; + 1427213229A75A2600C7C423 /* XPMonentsLatestPresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMonentsLatestPresenter.h; sourceTree = ""; }; + 1427213329A75A2600C7C423 /* XPMonentsLatestPresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMonentsLatestPresenter.m; sourceTree = ""; }; + 1427213729A75F6F00C7C423 /* MyHTTPConnection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyHTTPConnection.m; sourceTree = ""; }; + 1427213929A75F6F00C7C423 /* HTTPConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPConnection.h; sourceTree = ""; }; 1427213A29A75F6F00C7C423 /* HTTPLogging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPLogging.h; sourceTree = ""; }; - 1427213B29A75F6F00C7C423 /* HyperTextCommunication.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HyperTextCommunication.h; sourceTree = ""; }; - 1427213C29A75F6F00C7C423 /* TissueSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TissueSocket.h; sourceTree = ""; }; - 1427213D29A75F6F00C7C423 /* HyperTextAuthenticationRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HyperTextAuthenticationRequest.h; sourceTree = ""; }; - 1427213F29A75F6F00C7C423 /* HyperTextAsyncAccurateRespond.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HyperTextAsyncAccurateRespond.h; sourceTree = ""; }; - 1427214029A75F6F00C7C423 /* HyperTextErrorRespond.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HyperTextErrorRespond.m; sourceTree = ""; }; - 1427214129A75F6F00C7C423 /* HyperTextAtomicRespond.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HyperTextAtomicRespond.m; sourceTree = ""; }; - 1427214229A75F6F00C7C423 /* HyperTextDeficitirectRespond.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HyperTextDeficitirectRespond.h; sourceTree = ""; }; - 1427214329A75F6F00C7C423 /* HyperTextDynamicAccurateRespond.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HyperTextDynamicAccurateRespond.m; sourceTree = ""; }; - 1427214429A75F6F00C7C423 /* HyperTextAccurateRespond.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HyperTextAccurateRespond.m; sourceTree = ""; }; - 1427214529A75F6F00C7C423 /* HyperTextAsyncAccurateRespond.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HyperTextAsyncAccurateRespond.m; sourceTree = ""; }; - 1427214629A75F6F00C7C423 /* HyperTextDeficitirectRespond.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HyperTextDeficitirectRespond.m; sourceTree = ""; }; - 1427214729A75F6F00C7C423 /* HyperTextAtomicRespond.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HyperTextAtomicRespond.h; sourceTree = ""; }; - 1427214829A75F6F00C7C423 /* HyperTextErrorRespond.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HyperTextErrorRespond.h; sourceTree = ""; }; - 1427214929A75F6F00C7C423 /* HyperTextAccurateRespond.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HyperTextAccurateRespond.h; sourceTree = ""; }; - 1427214A29A75F6F00C7C423 /* HyperTextDynamicAccurateRespond.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HyperTextDynamicAccurateRespond.h; sourceTree = ""; }; - 1427214B29A75F6F00C7C423 /* HyperTextServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HyperTextServer.h; sourceTree = ""; }; - 1427214C29A75F6F00C7C423 /* HyperTextCommunication.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HyperTextCommunication.m; sourceTree = ""; }; - 1427214D29A75F6F00C7C423 /* HyperTextConnection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HyperTextConnection.m; sourceTree = ""; }; - 1427214E29A75F6F00C7C423 /* TissueSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TissueSocket.m; sourceTree = ""; }; + 1427213B29A75F6F00C7C423 /* HTTPMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPMessage.h; sourceTree = ""; }; + 1427213C29A75F6F00C7C423 /* WebSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebSocket.h; sourceTree = ""; }; + 1427213D29A75F6F00C7C423 /* HTTPAuthenticationRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPAuthenticationRequest.h; sourceTree = ""; }; + 1427213F29A75F6F00C7C423 /* HTTPAsyncFileResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPAsyncFileResponse.h; sourceTree = ""; }; + 1427214029A75F6F00C7C423 /* HTTPErrorResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTTPErrorResponse.m; sourceTree = ""; }; + 1427214129A75F6F00C7C423 /* HTTPDataResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTTPDataResponse.m; sourceTree = ""; }; + 1427214229A75F6F00C7C423 /* HTTPRedirectResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPRedirectResponse.h; sourceTree = ""; }; + 1427214329A75F6F00C7C423 /* HTTPDynamicFileResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTTPDynamicFileResponse.m; sourceTree = ""; }; + 1427214429A75F6F00C7C423 /* HTTPFileResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTTPFileResponse.m; sourceTree = ""; }; + 1427214529A75F6F00C7C423 /* HTTPAsyncFileResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTTPAsyncFileResponse.m; sourceTree = ""; }; + 1427214629A75F6F00C7C423 /* HTTPRedirectResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTTPRedirectResponse.m; sourceTree = ""; }; + 1427214729A75F6F00C7C423 /* HTTPDataResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPDataResponse.h; sourceTree = ""; }; + 1427214829A75F6F00C7C423 /* HTTPErrorResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPErrorResponse.h; sourceTree = ""; }; + 1427214929A75F6F00C7C423 /* HTTPFileResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPFileResponse.h; sourceTree = ""; }; + 1427214A29A75F6F00C7C423 /* HTTPDynamicFileResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPDynamicFileResponse.h; sourceTree = ""; }; + 1427214B29A75F6F00C7C423 /* HTTPServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPServer.h; sourceTree = ""; }; + 1427214C29A75F6F00C7C423 /* HTTPMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTTPMessage.m; sourceTree = ""; }; + 1427214D29A75F6F00C7C423 /* HTTPConnection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTTPConnection.m; sourceTree = ""; }; + 1427214E29A75F6F00C7C423 /* WebSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebSocket.m; sourceTree = ""; }; 1427214F29A75F6F00C7C423 /* HTTPResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPResponse.h; sourceTree = ""; }; - 1427215129A75F6F00C7C423 /* MultipartFormAtomicAnatomiser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MultipartFormAtomicAnatomiser.h; sourceTree = ""; }; - 1427215229A75F6F00C7C423 /* MultipartCommunicationIntelligencer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MultipartCommunicationIntelligencer.h; sourceTree = ""; }; - 1427215329A75F6F00C7C423 /* MultipartCommunicationIntelligencerField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MultipartCommunicationIntelligencerField.m; sourceTree = ""; }; - 1427215429A75F6F00C7C423 /* MultipartFormAtomicAnatomiser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MultipartFormAtomicAnatomiser.m; sourceTree = ""; }; - 1427215529A75F6F00C7C423 /* MultipartCommunicationIntelligencer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MultipartCommunicationIntelligencer.m; sourceTree = ""; }; - 1427215629A75F6F00C7C423 /* MultipartCommunicationIntelligencerField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MultipartCommunicationIntelligencerField.h; sourceTree = ""; }; - 1427215729A75F6F00C7C423 /* HyperTextAuthenticationRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HyperTextAuthenticationRequest.m; sourceTree = ""; }; + 1427215129A75F6F00C7C423 /* MultipartFormDataParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MultipartFormDataParser.h; sourceTree = ""; }; + 1427215229A75F6F00C7C423 /* MultipartMessageHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MultipartMessageHeader.h; sourceTree = ""; }; + 1427215329A75F6F00C7C423 /* MultipartMessageHeaderField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MultipartMessageHeaderField.m; sourceTree = ""; }; + 1427215429A75F6F00C7C423 /* MultipartFormDataParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MultipartFormDataParser.m; sourceTree = ""; }; + 1427215529A75F6F00C7C423 /* MultipartMessageHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MultipartMessageHeader.m; sourceTree = ""; }; + 1427215629A75F6F00C7C423 /* MultipartMessageHeaderField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MultipartMessageHeaderField.h; sourceTree = ""; }; + 1427215729A75F6F00C7C423 /* HTTPAuthenticationRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTTPAuthenticationRequest.m; sourceTree = ""; }; 1427215929A75F6F00C7C423 /* DDNumber.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DDNumber.m; sourceTree = ""; }; 1427215A29A75F6F00C7C423 /* DDData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DDData.m; sourceTree = ""; }; 1427215B29A75F6F00C7C423 /* DDRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDRange.h; sourceTree = ""; }; 1427215C29A75F6F00C7C423 /* DDNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDNumber.h; sourceTree = ""; }; 1427215D29A75F6F00C7C423 /* DDRange.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DDRange.m; sourceTree = ""; }; 1427215E29A75F6F00C7C423 /* DDData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDData.h; sourceTree = ""; }; - 1427215F29A75F6F00C7C423 /* HyperTextServer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HyperTextServer.m; sourceTree = ""; }; - 1427217329A75F6F00C7C423 /* SJXCSMIPFacilitater.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SJXCSMIPFacilitater.h; sourceTree = ""; }; - 1427217429A75F6F00C7C423 /* MyHyperTextConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyHyperTextConnection.h; sourceTree = ""; }; - 1427217729A75F6F00C7C423 /* BWGMKJYlumbes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BWGMKJYlumbes.m; sourceTree = ""; }; - 1427217829A75F6F00C7C423 /* BWGLumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BWGLumber.h; sourceTree = ""; }; - 1427217929A75F6F00C7C423 /* BWGAbstractAtomicbaselumbes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BWGAbstractAtomicbaselumbes.h; sourceTree = ""; }; - 1427217A29A75F6F00C7C423 /* BWGASLlumbes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BWGASLlumbes.m; sourceTree = ""; }; - 1427217B29A75F6F00C7C423 /* BWGAccuratelumbes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BWGAccuratelumbes.h; sourceTree = ""; }; + 1427215F29A75F6F00C7C423 /* HTTPServer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HTTPServer.m; sourceTree = ""; }; + 1427217329A75F6F00C7C423 /* SJXCSMIPHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SJXCSMIPHelper.h; sourceTree = ""; }; + 1427217429A75F6F00C7C423 /* MyHTTPConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyHTTPConnection.h; sourceTree = ""; }; + 1427217729A75F6F00C7C423 /* DDTTYLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DDTTYLogger.m; sourceTree = ""; }; + 1427217829A75F6F00C7C423 /* DDLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDLog.h; sourceTree = ""; }; + 1427217929A75F6F00C7C423 /* DDAbstractDatabaseLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDAbstractDatabaseLogger.h; sourceTree = ""; }; + 1427217A29A75F6F00C7C423 /* DDASLLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DDASLLogger.m; sourceTree = ""; }; + 1427217B29A75F6F00C7C423 /* DDFileLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDFileLogger.h; sourceTree = ""; }; 1427217D29A75F6F00C7C423 /* ContextFilterLogFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContextFilterLogFormatter.h; sourceTree = ""; }; - 1427217E29A75F6F00C7C423 /* DispatchMHTueueLumberInitialiser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DispatchMHTueueLumberInitialiser.h; sourceTree = ""; }; + 1427217E29A75F6F00C7C423 /* DispatchQueueLogFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DispatchQueueLogFormatter.h; sourceTree = ""; }; 1427217F29A75F6F00C7C423 /* ContextFilterLogFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContextFilterLogFormatter.m; sourceTree = ""; }; - 1427218029A75F6F00C7C423 /* DispatchMHTueueLumberInitialiser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DispatchMHTueueLumberInitialiser.m; sourceTree = ""; }; - 1427218129A75F6F00C7C423 /* BWGLumber.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BWGLumber.m; sourceTree = ""; }; - 1427218229A75F6F00C7C423 /* BWGMKJYlumbes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BWGMKJYlumbes.h; sourceTree = ""; }; - 1427218329A75F6F00C7C423 /* BWGAbstractAtomicbaselumbes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BWGAbstractAtomicbaselumbes.m; sourceTree = ""; }; - 1427218429A75F6F00C7C423 /* BWGAccuratelumbes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BWGAccuratelumbes.m; sourceTree = ""; }; - 1427218529A75F6F00C7C423 /* BWGASLlumbes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BWGASLlumbes.h; sourceTree = ""; }; - 1427218629A75F6F00C7C423 /* SJXCSMIPFacilitater.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SJXCSMIPFacilitater.m; sourceTree = ""; }; - 142721B029A7647F00C7C423 /* YUMIBlankRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIBlankRegardGovernancer.h; sourceTree = ""; }; - 142721B129A7647F00C7C423 /* YUMIBlankRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIBlankRegardGovernancer.m; sourceTree = ""; }; - 1464C5E829A45FC300AF7C94 /* YUMIButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIButton.h; sourceTree = ""; }; - 1464C5E929A45FC300AF7C94 /* YUMIButton.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIButton.m; sourceTree = ""; }; - 1464C5EB29A4784F00AF7C94 /* YUMIManeSimpleConsumerAbstractRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeSimpleConsumerAbstractRegardGovernancer.h; sourceTree = ""; }; - 1464C5EC29A4784F00AF7C94 /* YUMIManeSimpleConsumerAbstractRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeSimpleConsumerAbstractRegardGovernancer.m; sourceTree = ""; }; - 1464C5EE29A49DDD00AF7C94 /* YUMIManeSimpleConsumerAbstractIntelligencerRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeSimpleConsumerAbstractIntelligencerRegard.h; sourceTree = ""; }; - 1464C5EF29A49DDD00AF7C94 /* YUMIManeSimpleConsumerAbstractIntelligencerRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeSimpleConsumerAbstractIntelligencerRegard.m; sourceTree = ""; }; - 1464C5F129A4C18000AF7C94 /* YUMIIAPReindictRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIIAPReindictRegardGovernancer.h; sourceTree = ""; }; - 1464C5F229A4C18000AF7C94 /* YUMIIAPReindictRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIIAPReindictRegardGovernancer.m; sourceTree = ""; }; - 1464C5F429A4CA8C00AF7C94 /* YUMIIAPReindictAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIIAPReindictAssembletionRegardElement.h; sourceTree = ""; }; - 1464C5F529A4CA8C00AF7C94 /* YUMIIAPReindictAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIIAPReindictAssembletionRegardElement.m; sourceTree = ""; }; - 1464C5F729A4D00000AF7C94 /* YUMIIAPReindictIntelligencerRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIIAPReindictIntelligencerRegard.h; sourceTree = ""; }; - 1464C5F829A4D00000AF7C94 /* YUMIIAPReindictIntelligencerRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIIAPReindictIntelligencerRegard.m; sourceTree = ""; }; - 149839C2299E088000F82CBF /* YUMIMomentStatementRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIMomentStatementRegardGovernancer.h; sourceTree = ""; }; - 149839C3299E088000F82CBF /* YUMIMomentStatementRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIMomentStatementRegardGovernancer.m; sourceTree = ""; }; - 149839C5299E0B9F00F82CBF /* YUMIMomentStatementAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIMomentStatementAssembletionRegardElement.h; sourceTree = ""; }; - 149839C6299E0B9F00F82CBF /* YUMIMomentStatementAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIMomentStatementAssembletionRegardElement.m; sourceTree = ""; }; - 14A6034729A3567200D2A6A5 /* YUMISimpleManeRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISimpleManeRegardGovernancer.h; sourceTree = ""; }; - 14A6034829A3567200D2A6A5 /* YUMISimpleManeRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISimpleManeRegardGovernancer.m; sourceTree = ""; }; - 14A6034A29A35EE600D2A6A5 /* YUMIManeProvisionTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeProvisionTabulationRegardElement.h; sourceTree = ""; }; - 14A6034B29A35EE600D2A6A5 /* YUMIManeProvisionTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeProvisionTabulationRegardElement.m; sourceTree = ""; }; - 14A6034D29A36D8300D2A6A5 /* YUMISimpleManeIntelligencerRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISimpleManeIntelligencerRegard.h; sourceTree = ""; }; - 14A6034E29A36D8300D2A6A5 /* YUMISimpleManeIntelligencerRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISimpleManeIntelligencerRegard.m; sourceTree = ""; }; - 14B880DF299A1799005FCA1B /* YUMISurmountRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISurmountRegardGovernancer.h; sourceTree = ""; }; - 14B880E0299A1799005FCA1B /* YUMISurmountRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISurmountRegardGovernancer.m; sourceTree = ""; }; - 14B880E5299A4B62005FCA1B /* YUMISurmountMobileRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISurmountMobileRegardGovernancer.h; sourceTree = ""; }; - 14B880E6299A4B62005FCA1B /* YUMISurmountMobileRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISurmountMobileRegardGovernancer.m; sourceTree = ""; }; + 1427218029A75F6F00C7C423 /* DispatchQueueLogFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DispatchQueueLogFormatter.m; sourceTree = ""; }; + 1427218129A75F6F00C7C423 /* DDLog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DDLog.m; sourceTree = ""; }; + 1427218229A75F6F00C7C423 /* DDTTYLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDTTYLogger.h; sourceTree = ""; }; + 1427218329A75F6F00C7C423 /* DDAbstractDatabaseLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DDAbstractDatabaseLogger.m; sourceTree = ""; }; + 1427218429A75F6F00C7C423 /* DDFileLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DDFileLogger.m; sourceTree = ""; }; + 1427218529A75F6F00C7C423 /* DDASLLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDASLLogger.h; sourceTree = ""; }; + 1427218629A75F6F00C7C423 /* SJXCSMIPHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SJXCSMIPHelper.m; sourceTree = ""; }; + 142721B029A7647F00C7C423 /* XPBlankViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPBlankViewController.h; sourceTree = ""; }; + 142721B129A7647F00C7C423 /* XPBlankViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPBlankViewController.m; sourceTree = ""; }; + 1464C5E829A45FC300AF7C94 /* XPButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPButton.h; sourceTree = ""; }; + 1464C5E929A45FC300AF7C94 /* XPButton.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPButton.m; sourceTree = ""; }; + 1464C5EB29A4784F00AF7C94 /* XPMineSimpleUserInfoViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineSimpleUserInfoViewController.h; sourceTree = ""; }; + 1464C5EC29A4784F00AF7C94 /* XPMineSimpleUserInfoViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineSimpleUserInfoViewController.m; sourceTree = ""; }; + 1464C5EE29A49DDD00AF7C94 /* XPMineSimpleUserInfoHeaderView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineSimpleUserInfoHeaderView.h; sourceTree = ""; }; + 1464C5EF29A49DDD00AF7C94 /* XPMineSimpleUserInfoHeaderView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineSimpleUserInfoHeaderView.m; sourceTree = ""; }; + 1464C5F129A4C18000AF7C94 /* XPIAPRechargeViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPIAPRechargeViewController.h; sourceTree = ""; }; + 1464C5F229A4C18000AF7C94 /* XPIAPRechargeViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPIAPRechargeViewController.m; sourceTree = ""; }; + 1464C5F429A4CA8C00AF7C94 /* XPIAPRechargeCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPIAPRechargeCollectionViewCell.h; sourceTree = ""; }; + 1464C5F529A4CA8C00AF7C94 /* XPIAPRechargeCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPIAPRechargeCollectionViewCell.m; sourceTree = ""; }; + 1464C5F729A4D00000AF7C94 /* XPIAPRechargeHeaderView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPIAPRechargeHeaderView.h; sourceTree = ""; }; + 1464C5F829A4D00000AF7C94 /* XPIAPRechargeHeaderView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPIAPRechargeHeaderView.m; sourceTree = ""; }; + 149839C2299E088000F82CBF /* XPMomentListViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMomentListViewController.h; sourceTree = ""; }; + 149839C3299E088000F82CBF /* XPMomentListViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMomentListViewController.m; sourceTree = ""; }; + 149839C5299E0B9F00F82CBF /* XPMomentListCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMomentListCollectionViewCell.h; sourceTree = ""; }; + 149839C6299E0B9F00F82CBF /* XPMomentListCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMomentListCollectionViewCell.m; sourceTree = ""; }; + 14A6034729A3567200D2A6A5 /* XPSimpleMineViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSimpleMineViewController.h; sourceTree = ""; }; + 14A6034829A3567200D2A6A5 /* XPSimpleMineViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSimpleMineViewController.m; sourceTree = ""; }; + 14A6034A29A35EE600D2A6A5 /* XPMineItemTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineItemTableViewCell.h; sourceTree = ""; }; + 14A6034B29A35EE600D2A6A5 /* XPMineItemTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineItemTableViewCell.m; sourceTree = ""; }; + 14A6034D29A36D8300D2A6A5 /* XPSimpleMineHeaderView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSimpleMineHeaderView.h; sourceTree = ""; }; + 14A6034E29A36D8300D2A6A5 /* XPSimpleMineHeaderView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSimpleMineHeaderView.m; sourceTree = ""; }; + 14B880DF299A1799005FCA1B /* XPLoginViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPLoginViewController.h; sourceTree = ""; }; + 14B880E0299A1799005FCA1B /* XPLoginViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPLoginViewController.m; sourceTree = ""; }; + 14B880E5299A4B62005FCA1B /* XPLoginPhoneViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPLoginPhoneViewController.h; sourceTree = ""; }; + 14B880E6299A4B62005FCA1B /* XPLoginPhoneViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPLoginPhoneViewController.m; sourceTree = ""; }; 14D8767A29A7445C00E1DD7F /* NSObject+AutoCoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+AutoCoding.h"; sourceTree = ""; }; 14D8767B29A7445C00E1DD7F /* NSObject+AutoCoding.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+AutoCoding.m"; sourceTree = ""; }; - 14DCAD06299B36A500A7DD31 /* YUMISurmountPwordRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISurmountPwordRegardGovernancer.h; sourceTree = ""; }; - 14DCAD07299B36A500A7DD31 /* YUMISurmountPwordRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISurmountPwordRegardGovernancer.m; sourceTree = ""; }; - 14DCAD09299B5D3A00A7DD31 /* YUMISurmountIntrojectionRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISurmountIntrojectionRegard.h; sourceTree = ""; }; - 14DCAD0A299B5D3A00A7DD31 /* YUMISurmountIntrojectionRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISurmountIntrojectionRegard.m; sourceTree = ""; }; - 14DCAD0C299B6AD900A7DD31 /* YUMIForgetPwordRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIForgetPwordRegardGovernancer.h; sourceTree = ""; }; - 14DCAD0D299B6AD900A7DD31 /* YUMIForgetPwordRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIForgetPwordRegardGovernancer.m; sourceTree = ""; }; - 14DCAD0F299B946E00A7DD31 /* YUMISurmountBaseRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISurmountBaseRegardGovernancer.h; sourceTree = ""; }; - 14DCAD10299B946E00A7DD31 /* YUMISurmountBaseRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISurmountBaseRegardGovernancer.m; sourceTree = ""; }; - 14EB640729A5BDDD00A4A00B /* YUMIMomentsSimpleSpecificRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIMomentsSimpleSpecificRegardGovernancer.h; sourceTree = ""; }; - 14EB640829A5BDDD00A4A00B /* YUMIMomentsSimpleSpecificRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIMomentsSimpleSpecificRegardGovernancer.m; sourceTree = ""; }; - 14EB640A29A5BEE800A4A00B /* FBCSeparationsDetailRegardGovernancerRepresendtation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCSeparationsDetailRegardGovernancerRepresendtation.h; sourceTree = ""; }; - 14EB640B29A5C16000A4A00B /* YUMIMomentsSimpleSpecificNev.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIMomentsSimpleSpecificNev.h; sourceTree = ""; }; - 14EB640C29A5C16000A4A00B /* YUMIMomentsSimpleSpecificNev.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIMomentsSimpleSpecificNev.m; sourceTree = ""; }; - 180116F7279E8C4C00F2CBC0 /* PLIntratemporalUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLIntratemporalUtil.h; sourceTree = ""; }; - 180116F8279E8C4C00F2CBC0 /* PLIntratemporalUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PLIntratemporalUtil.m; sourceTree = ""; }; + 14DCAD06299B36A500A7DD31 /* XPLoginPwdViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPLoginPwdViewController.h; sourceTree = ""; }; + 14DCAD07299B36A500A7DD31 /* XPLoginPwdViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPLoginPwdViewController.m; sourceTree = ""; }; + 14DCAD09299B5D3A00A7DD31 /* XPLoginInputView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPLoginInputView.h; sourceTree = ""; }; + 14DCAD0A299B5D3A00A7DD31 /* XPLoginInputView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPLoginInputView.m; sourceTree = ""; }; + 14DCAD0C299B6AD900A7DD31 /* XPForgetPwdViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPForgetPwdViewController.h; sourceTree = ""; }; + 14DCAD0D299B6AD900A7DD31 /* XPForgetPwdViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPForgetPwdViewController.m; sourceTree = ""; }; + 14DCAD0F299B946E00A7DD31 /* XPLoginBaseViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPLoginBaseViewController.h; sourceTree = ""; }; + 14DCAD10299B946E00A7DD31 /* XPLoginBaseViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPLoginBaseViewController.m; sourceTree = ""; }; + 14EB640729A5BDDD00A4A00B /* XPMomentsSimpleDetailViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMomentsSimpleDetailViewController.h; sourceTree = ""; }; + 14EB640829A5BDDD00A4A00B /* XPMomentsSimpleDetailViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMomentsSimpleDetailViewController.m; sourceTree = ""; }; + 14EB640A29A5BEE800A4A00B /* XPMonentsDetailViewControllerDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsDetailViewControllerDelegate.h; sourceTree = ""; }; + 14EB640B29A5C16000A4A00B /* XPMomentsSimpleDetailNav.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMomentsSimpleDetailNav.h; sourceTree = ""; }; + 14EB640C29A5C16000A4A00B /* XPMomentsSimpleDetailNav.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMomentsSimpleDetailNav.m; sourceTree = ""; }; + 180116F7279E8C4C00F2CBC0 /* PLTimeUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLTimeUtil.h; sourceTree = ""; }; + 180116F8279E8C4C00F2CBC0 /* PLTimeUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PLTimeUtil.m; sourceTree = ""; }; 180116FA279E8CCE00F2CBC0 /* NVDate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NVDate.m; sourceTree = ""; }; 180116FB279E8CCE00F2CBC0 /* NVDate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NVDate.h; sourceTree = ""; }; 180806D627293794001FD836 /* NSObject+MJExtension.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSObject+MJExtension.h"; sourceTree = ""; }; 180806D727293794001FD836 /* NSObject+MJExtension.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSObject+MJExtension.m"; sourceTree = ""; }; - 180806DA27297269001FD836 /* MicroRegardCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MicroRegardCeremony.h; sourceTree = ""; }; - 180806F827298F9B001FD836 /* ChamberGuestRepresendtation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChamberGuestRepresendtation.h; sourceTree = ""; }; + 180806DA27297269001FD836 /* MicroViewProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MicroViewProtocol.h; sourceTree = ""; }; + 180806F827298F9B001FD836 /* RoomGuestDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomGuestDelegate.h; sourceTree = ""; }; 180806F92729A354001FD836 /* ThemeColor+Room.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ThemeColor+Room.h"; sourceTree = ""; }; 180806FA2729A354001FD836 /* ThemeColor+Room.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "ThemeColor+Room.m"; sourceTree = ""; }; - 1808072B2731598F001FD836 /* YUMINetIndicateYYDesignation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMINetIndicateYYDesignation.h; sourceTree = ""; }; - 1808072C2731598F001FD836 /* YUMINetIndicateYYDesignation.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMINetIndicateYYDesignation.m; sourceTree = ""; }; - 1808072E27315E8E001FD836 /* NetIndicateRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NetIndicateRegard.h; sourceTree = ""; }; - 1808072F27315E8E001FD836 /* NetIndicateRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NetIndicateRegard.m; sourceTree = ""; }; - 181D7F192726CE2A00B7C059 /* PhaseRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PhaseRegard.h; sourceTree = ""; }; - 181D7F1A2726CE2A00B7C059 /* PhaseRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PhaseRegard.m; sourceTree = ""; }; - 181D7F1F2727D9DB00B7C059 /* SocialPhaseRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SocialPhaseRegard.h; sourceTree = ""; }; - 181D7F202727D9DB00B7C059 /* SocialPhaseRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SocialPhaseRegard.m; sourceTree = ""; }; - 181D7F222727DB1E00B7C059 /* ChamberHostRepresendtation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChamberHostRepresendtation.h; sourceTree = ""; }; - 1845C6412790320E00016EAC /* ChamberAnimationCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChamberAnimationCeremony.h; sourceTree = ""; }; - 18486211271EA9DA005FC5DC /* RealtimackExecutive.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RealtimackExecutive.h; sourceTree = ""; }; - 18486212271EA9DA005FC5DC /* RealtimackExecutive.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RealtimackExecutive.m; sourceTree = ""; }; - 18486214271EAA03005FC5DC /* RtcRepresendtation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RtcRepresendtation.h; sourceTree = ""; }; - 18486215271EAB8C005FC5DC /* BaseRealtimackConnector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BaseRealtimackConnector.h; sourceTree = ""; }; - 18486216271EAB8C005FC5DC /* BaseRealtimackConnector.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BaseRealtimackConnector.m; sourceTree = ""; }; - 18486233271EB794005FC5DC /* AgoraRealtimackConnector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AgoraRealtimackConnector.h; sourceTree = ""; }; - 18486234271EB794005FC5DC /* AgoraRealtimackConnector.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AgoraRealtimackConnector.m; sourceTree = ""; }; - 184862CC27213FD7005FC5DC /* ZegoRealtimackConnector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ZegoRealtimackConnector.m; sourceTree = ""; }; - 184862CD27213FD7005FC5DC /* ZegoRealtimackConnector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZegoRealtimackConnector.h; sourceTree = ""; }; + 1808072B2731598F001FD836 /* XPNetImageYYLabel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPNetImageYYLabel.h; sourceTree = ""; }; + 1808072C2731598F001FD836 /* XPNetImageYYLabel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPNetImageYYLabel.m; sourceTree = ""; }; + 1808072E27315E8E001FD836 /* NetImageView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NetImageView.h; sourceTree = ""; }; + 1808072F27315E8E001FD836 /* NetImageView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NetImageView.m; sourceTree = ""; }; + 181D7F192726CE2A00B7C059 /* StageView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StageView.h; sourceTree = ""; }; + 181D7F1A2726CE2A00B7C059 /* StageView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StageView.m; sourceTree = ""; }; + 181D7F1F2727D9DB00B7C059 /* SocialStageView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SocialStageView.h; sourceTree = ""; }; + 181D7F202727D9DB00B7C059 /* SocialStageView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SocialStageView.m; sourceTree = ""; }; + 181D7F222727DB1E00B7C059 /* RoomHostDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomHostDelegate.h; sourceTree = ""; }; + 1845C6412790320E00016EAC /* RoomAnimationProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomAnimationProtocol.h; sourceTree = ""; }; + 18486211271EA9DA005FC5DC /* RtcManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RtcManager.h; sourceTree = ""; }; + 18486212271EA9DA005FC5DC /* RtcManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RtcManager.m; sourceTree = ""; }; + 18486214271EAA03005FC5DC /* RtcDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RtcDelegate.h; sourceTree = ""; }; + 18486215271EAB8C005FC5DC /* BaseRtcImpl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BaseRtcImpl.h; sourceTree = ""; }; + 18486216271EAB8C005FC5DC /* BaseRtcImpl.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BaseRtcImpl.m; sourceTree = ""; }; + 18486233271EB794005FC5DC /* AgoraRtcImpl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AgoraRtcImpl.h; sourceTree = ""; }; + 18486234271EB794005FC5DC /* AgoraRtcImpl.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AgoraRtcImpl.m; sourceTree = ""; }; + 184862CC27213FD7005FC5DC /* ZegoRtcImpl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ZegoRtcImpl.m; sourceTree = ""; }; + 184862CD27213FD7005FC5DC /* ZegoRtcImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZegoRtcImpl.h; sourceTree = ""; }; 186A531826FC591100D67B2C /* libresolv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libresolv.tbd; path = usr/lib/libresolv.tbd; sourceTree = SDKROOT; }; - 186A532C26FC6ED900D67B2C /* MKJPopup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MKJPopup.m; sourceTree = ""; }; - 186A532E26FC6ED900D67B2C /* MKJPrecautiousDisposition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MKJPrecautiousDisposition.m; sourceTree = ""; }; - 186A532F26FC6ED900D67B2C /* MKJPrecautiousCommunicationAttributedDisposition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MKJPrecautiousCommunicationAttributedDisposition.h; sourceTree = ""; }; - 186A533026FC6ED900D67B2C /* MKJPrecautiousButtonDisposition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MKJPrecautiousButtonDisposition.h; sourceTree = ""; }; - 186A533126FC6ED900D67B2C /* MKJActionSheetDisposition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MKJActionSheetDisposition.h; sourceTree = ""; }; - 186A533226FC6ED900D67B2C /* MKJPrecautiousDisposition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MKJPrecautiousDisposition.h; sourceTree = ""; }; - 186A533326FC6ED900D67B2C /* MKJPrecautiousButtonDisposition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MKJPrecautiousButtonDisposition.m; sourceTree = ""; }; - 186A533426FC6ED900D67B2C /* MKJPrecautiousCommunicationAttributedDisposition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MKJPrecautiousCommunicationAttributedDisposition.m; sourceTree = ""; }; - 186A533526FC6ED900D67B2C /* MKJActionSheetDisposition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MKJActionSheetDisposition.m; sourceTree = ""; }; - 186A533726FC6ED900D67B2C /* TTPopupExecutiveServiceCeremony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTPopupExecutiveServiceCeremony.h; sourceTree = ""; }; - 186A533826FC6ED900D67B2C /* MKJPopupExecutiveServing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MKJPopupExecutiveServing.h; sourceTree = ""; }; - 186A533926FC6ED900D67B2C /* MKJPopupExecutiveServing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MKJPopupExecutiveServing.m; sourceTree = ""; }; - 186A533A26FC6ED900D67B2C /* MKJPopup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MKJPopup.h; sourceTree = ""; }; - 186A533C26FC6ED900D67B2C /* MKJPrecautiousRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MKJPrecautiousRegard.m; sourceTree = ""; }; - 186A533D26FC6ED900D67B2C /* MKJActionSheetRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MKJActionSheetRegard.h; sourceTree = ""; }; - 186A533E26FC6ED900D67B2C /* MKJPrecautiousRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MKJPrecautiousRegard.h; sourceTree = ""; }; - 186A533F26FC6ED900D67B2C /* MKJActionSheetRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MKJActionSheetRegard.m; sourceTree = ""; }; - 186A534126FC6ED900D67B2C /* MKJPopupServing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MKJPopupServing.m; sourceTree = ""; }; - 186A534226FC6ED900D67B2C /* TTPopupServiceCeremony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTPopupServiceCeremony.h; sourceTree = ""; }; - 186A534326FC6ED900D67B2C /* MKJPopupServing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MKJPopupServing.h; sourceTree = ""; }; + 186A532C26FC6ED900D67B2C /* TTPopup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTPopup.m; sourceTree = ""; }; + 186A532E26FC6ED900D67B2C /* TTAlertConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTAlertConfig.m; sourceTree = ""; }; + 186A532F26FC6ED900D67B2C /* TTAlertMessageAttributedConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTAlertMessageAttributedConfig.h; sourceTree = ""; }; + 186A533026FC6ED900D67B2C /* TTAlertButtonConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTAlertButtonConfig.h; sourceTree = ""; }; + 186A533126FC6ED900D67B2C /* TTActionSheetConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTActionSheetConfig.h; sourceTree = ""; }; + 186A533226FC6ED900D67B2C /* TTAlertConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTAlertConfig.h; sourceTree = ""; }; + 186A533326FC6ED900D67B2C /* TTAlertButtonConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTAlertButtonConfig.m; sourceTree = ""; }; + 186A533426FC6ED900D67B2C /* TTAlertMessageAttributedConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTAlertMessageAttributedConfig.m; sourceTree = ""; }; + 186A533526FC6ED900D67B2C /* TTActionSheetConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTActionSheetConfig.m; sourceTree = ""; }; + 186A533726FC6ED900D67B2C /* TTPopupManagerServiceProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTPopupManagerServiceProtocol.h; sourceTree = ""; }; + 186A533826FC6ED900D67B2C /* TTPopupManagerService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTPopupManagerService.h; sourceTree = ""; }; + 186A533926FC6ED900D67B2C /* TTPopupManagerService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTPopupManagerService.m; sourceTree = ""; }; + 186A533A26FC6ED900D67B2C /* TTPopup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTPopup.h; sourceTree = ""; }; + 186A533C26FC6ED900D67B2C /* TTAlertView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTAlertView.m; sourceTree = ""; }; + 186A533D26FC6ED900D67B2C /* TTActionSheetView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTActionSheetView.h; sourceTree = ""; }; + 186A533E26FC6ED900D67B2C /* TTAlertView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTAlertView.h; sourceTree = ""; }; + 186A533F26FC6ED900D67B2C /* TTActionSheetView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTActionSheetView.m; sourceTree = ""; }; + 186A534126FC6ED900D67B2C /* TTPopupService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TTPopupService.m; sourceTree = ""; }; + 186A534226FC6ED900D67B2C /* TTPopupServiceProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTPopupServiceProtocol.h; sourceTree = ""; }; + 186A534326FC6ED900D67B2C /* TTPopupService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTPopupService.h; sourceTree = ""; }; 186A534526FC6ED900D67B2C /* TTPopupConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TTPopupConstants.h; sourceTree = ""; }; - 186A536126FC6F2E00D67B2C /* YUMIParaticipationRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIParaticipationRegard.m; sourceTree = ""; }; - 186A536226FC6F2E00D67B2C /* YUMIParaticipationRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIParaticipationRegard.h; sourceTree = ""; }; - 186A536726FC6F2E00D67B2C /* YUMIParaticipationProvisionElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIParaticipationProvisionElement.m; sourceTree = ""; }; - 186A536826FC6F2E00D67B2C /* YUMIParaticipationProvisionElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIParaticipationProvisionElement.h; sourceTree = ""; }; - 186F8B472733F2AE007A17BC /* MicroQueueCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MicroQueueCeremony.h; sourceTree = ""; }; - 187EEEDA26E89B32002833B2 /* BaseMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BaseMatrix.h; sourceTree = ""; }; - 187EEEDB26E89B32002833B2 /* BaseMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BaseMatrix.m; sourceTree = ""; }; - 187EEEDF26E89BFB002833B2 /* AccountMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AccountMatrix.h; sourceTree = ""; }; - 187EEEE026E89BFB002833B2 /* AccountMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AccountMatrix.m; sourceTree = ""; }; - 187EEEEE26E89FE8002833B2 /* AccountAbstractStorage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AccountAbstractStorage.m; sourceTree = ""; }; - 187EEEEF26E89FE8002833B2 /* AccountAbstractStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccountAbstractStorage.h; sourceTree = ""; }; + 186A536126FC6F2E00D67B2C /* XPShareView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPShareView.m; sourceTree = ""; }; + 186A536226FC6F2E00D67B2C /* XPShareView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPShareView.h; sourceTree = ""; }; + 186A536726FC6F2E00D67B2C /* XPShareItemCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPShareItemCell.m; sourceTree = ""; }; + 186A536826FC6F2E00D67B2C /* XPShareItemCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPShareItemCell.h; sourceTree = ""; }; + 186F8B472733F2AE007A17BC /* MicroQueueProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MicroQueueProtocol.h; sourceTree = ""; }; + 187EEEDA26E89B32002833B2 /* BaseModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BaseModel.h; sourceTree = ""; }; + 187EEEDB26E89B32002833B2 /* BaseModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BaseModel.m; sourceTree = ""; }; + 187EEEDF26E89BFB002833B2 /* AccountModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AccountModel.h; sourceTree = ""; }; + 187EEEE026E89BFB002833B2 /* AccountModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AccountModel.m; sourceTree = ""; }; + 187EEEEE26E89FE8002833B2 /* AccountInfoStorage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AccountInfoStorage.m; sourceTree = ""; }; + 187EEEEF26E89FE8002833B2 /* AccountInfoStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccountInfoStorage.h; sourceTree = ""; }; 189DD52926DE255300AB55B1 /* YuMi.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = YuMi.app; sourceTree = BUILT_PRODUCTS_DIR; }; 189DD52C26DE255300AB55B1 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 189DD52D26DE255300AB55B1 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - 189DD53226DE255300AB55B1 /* TabbarRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TabbarRegardGovernancer.h; sourceTree = ""; }; - 189DD53326DE255300AB55B1 /* TabbarRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TabbarRegardGovernancer.m; sourceTree = ""; }; + 189DD53226DE255300AB55B1 /* TabbarViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TabbarViewController.h; sourceTree = ""; }; + 189DD53326DE255300AB55B1 /* TabbarViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TabbarViewController.m; sourceTree = ""; }; 189DD53826DE255600AB55B1 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 189DD53D26DE255600AB55B1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 189DD53E26DE255600AB55B1 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 189DD54926DE338800AB55B1 /* BaseRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BaseRegardGovernancer.h; sourceTree = ""; }; - 189DD54A26DE338800AB55B1 /* BaseRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BaseRegardGovernancer.m; sourceTree = ""; }; - 189DD54E26DE37F900AB55B1 /* MvpRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MvpRegardGovernancer.h; sourceTree = ""; }; - 189DD54F26DE37F900AB55B1 /* MvpRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MvpRegardGovernancer.m; sourceTree = ""; }; - 189DD55826DE39D200AB55B1 /* BaseMvpExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BaseMvpExternalizer.h; sourceTree = ""; }; - 189DD55926DE39D200AB55B1 /* BaseMvpExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BaseMvpExternalizer.m; sourceTree = ""; }; - 189DD55E26DE3BBE00AB55B1 /* BaseMvpCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BaseMvpCeremony.h; sourceTree = ""; }; - 189DD58D26DF97E700AB55B1 /* SurmountExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SurmountExternalizer.h; sourceTree = ""; }; - 189DD58E26DF97E700AB55B1 /* SurmountExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SurmountExternalizer.m; sourceTree = ""; }; - 189DD59426DF986300AB55B1 /* SurmountCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SurmountCeremony.h; sourceTree = ""; }; + 189DD54926DE338800AB55B1 /* BaseViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BaseViewController.h; sourceTree = ""; }; + 189DD54A26DE338800AB55B1 /* BaseViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BaseViewController.m; sourceTree = ""; }; + 189DD54E26DE37F900AB55B1 /* MvpViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MvpViewController.h; sourceTree = ""; }; + 189DD54F26DE37F900AB55B1 /* MvpViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MvpViewController.m; sourceTree = ""; }; + 189DD55826DE39D200AB55B1 /* BaseMvpPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BaseMvpPresenter.h; sourceTree = ""; }; + 189DD55926DE39D200AB55B1 /* BaseMvpPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BaseMvpPresenter.m; sourceTree = ""; }; + 189DD55E26DE3BBE00AB55B1 /* BaseMvpProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BaseMvpProtocol.h; sourceTree = ""; }; + 189DD58D26DF97E700AB55B1 /* LoginPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginPresenter.h; sourceTree = ""; }; + 189DD58E26DF97E700AB55B1 /* LoginPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LoginPresenter.m; sourceTree = ""; }; + 189DD59426DF986300AB55B1 /* LoginProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginProtocol.h; sourceTree = ""; }; 189DD67C26E1FD8900AB55B1 /* UIImage+Utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+Utils.h"; sourceTree = ""; }; 189DD67D26E1FD8900AB55B1 /* UIImage+Utils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+Utils.m"; sourceTree = ""; }; - 189DD68226E1FDBB00AB55B1 /* XNDJTBWGLoadingTool.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XNDJTBWGLoadingTool.m; sourceTree = ""; }; - 189DD68326E1FDBB00AB55B1 /* XNDJTBWGLoadingTool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XNDJTBWGLoadingTool.h; sourceTree = ""; }; - 189DD6FD26E20E5900AB55B1 /* HttpRequestFacilitater.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HttpRequestFacilitater.h; sourceTree = ""; }; - 189DD6FE26E20E5900AB55B1 /* HttpRequestFacilitater.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HttpRequestFacilitater.m; sourceTree = ""; }; + 189DD68226E1FDBB00AB55B1 /* XNDJTDDLoadingTool.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XNDJTDDLoadingTool.m; sourceTree = ""; }; + 189DD68326E1FDBB00AB55B1 /* XNDJTDDLoadingTool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XNDJTDDLoadingTool.h; sourceTree = ""; }; + 189DD6FD26E20E5900AB55B1 /* HttpRequestHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HttpRequestHelper.h; sourceTree = ""; }; + 189DD6FE26E20E5900AB55B1 /* HttpRequestHelper.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HttpRequestHelper.m; sourceTree = ""; }; 189DD73726E21C3F00AB55B1 /* CarrierIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CarrierIdentifier.h; sourceTree = ""; }; 189DD73826E21C3F00AB55B1 /* YYUtility+Device.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "YYUtility+Device.m"; sourceTree = ""; }; 189DD73926E21C3F00AB55B1 /* YYUtility.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYUtility.m; sourceTree = ""; }; @@ -1477,606 +1437,534 @@ 189DD75826E6003C00AB55B1 /* Api.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Api.m; sourceTree = ""; }; 189DD76026E60DDC00AB55B1 /* Api+Login.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+Login.h"; sourceTree = ""; }; 189DD76126E60DDC00AB55B1 /* Api+Login.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+Login.m"; sourceTree = ""; }; - 18A61BD5274F7F6900A09A54 /* NetIndicateDisposition.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NetIndicateDisposition.h; sourceTree = ""; }; - 18A61BD6274F7F6900A09A54 /* NetIndicateDisposition.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NetIndicateDisposition.m; sourceTree = ""; }; - 18A61BE6274F9CF000A09A54 /* InterlocutionStatementRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InterlocutionStatementRegardGovernancer.h; sourceTree = ""; }; - 18A61BE7274F9CF000A09A54 /* InterlocutionStatementRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InterlocutionStatementRegardGovernancer.m; sourceTree = ""; }; - 18AAF3EE279EA59300CD7DAD /* CommunicationSatisfactionEssayClickable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationSatisfactionEssayClickable.h; sourceTree = ""; }; - 18AAF3EF279EA59300CD7DAD /* CommunicationSatisfactionEssayClickable.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationSatisfactionEssayClickable.m; sourceTree = ""; }; - 18E7B1AE26E8AD760064BC9B /* MainCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MainCeremony.h; sourceTree = ""; }; - 18E7B1B026E8AF980064BC9B /* MainExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MainExternalizer.h; sourceTree = ""; }; - 18E7B1B126E8AF980064BC9B /* MainExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MainExternalizer.m; sourceTree = ""; }; + 18A61BD5274F7F6900A09A54 /* NetImageConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NetImageConfig.h; sourceTree = ""; }; + 18A61BD6274F7F6900A09A54 /* NetImageConfig.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NetImageConfig.m; sourceTree = ""; }; + 18A61BE6274F9CF000A09A54 /* SessionListViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SessionListViewController.h; sourceTree = ""; }; + 18A61BE7274F9CF000A09A54 /* SessionListViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SessionListViewController.m; sourceTree = ""; }; + 18AAF3EE279EA59300CD7DAD /* MessageContentTextClickable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageContentTextClickable.h; sourceTree = ""; }; + 18AAF3EF279EA59300CD7DAD /* MessageContentTextClickable.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageContentTextClickable.m; sourceTree = ""; }; + 18E7B1AE26E8AD760064BC9B /* MainProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MainProtocol.h; sourceTree = ""; }; + 18E7B1B026E8AF980064BC9B /* MainPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MainPresenter.h; sourceTree = ""; }; + 18E7B1B126E8AF980064BC9B /* MainPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MainPresenter.m; sourceTree = ""; }; 18E7B1B526E8B2D10064BC9B /* Api+Main.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+Main.h"; sourceTree = ""; }; 18E7B1B626E8B2D10064BC9B /* Api+Main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+Main.m"; sourceTree = ""; }; - 18E7B26726E8D5D60064BC9B /* XCCurrentVCStackExecutive.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XCCurrentVCStackExecutive.m; sourceTree = ""; }; - 18E7B26826E8D5D60064BC9B /* XCCurrentVCStackExecutive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XCCurrentVCStackExecutive.h; sourceTree = ""; }; - 18E7B31626F097E00064BC9B /* ConsumerAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ConsumerAbstractMatrix.h; sourceTree = ""; }; - 18E7B31726F097E00064BC9B /* ConsumerAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ConsumerAbstractMatrix.m; sourceTree = ""; }; - 18E7B31926F0982E0064BC9B /* ConsumerExpand.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ConsumerExpand.h; sourceTree = ""; }; - 18E7B31A26F0982E0064BC9B /* ConsumerExpand.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ConsumerExpand.m; sourceTree = ""; }; - 18E7B31C26F0984C0064BC9B /* ConsumerPrototypeVo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ConsumerPrototypeVo.h; sourceTree = ""; }; - 18E7B31D26F0984C0064BC9B /* ConsumerPrototypeVo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ConsumerPrototypeVo.m; sourceTree = ""; }; - 18E7B31F26F098650064BC9B /* ConsumerAbstractCommunicationVo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ConsumerAbstractCommunicationVo.h; sourceTree = ""; }; - 18E7B32026F098650064BC9B /* ConsumerAbstractCommunicationVo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ConsumerAbstractCommunicationVo.m; sourceTree = ""; }; - 18E7B33026F317A20064BC9B /* YUMITissueRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMITissueRegardGovernancer.h; sourceTree = ""; }; - 18E7B33126F317A20064BC9B /* YUMITissueRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMITissueRegardGovernancer.m; sourceTree = ""; }; - 18EE3FDD2750C1F700A452BF /* InterlocutionStatementElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InterlocutionStatementElement.h; sourceTree = ""; }; - 18EE3FDE2750C1F700A452BF /* InterlocutionStatementElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InterlocutionStatementElement.m; sourceTree = ""; }; - 18EE3FE02750C29D00A452BF /* NEMCBadgeRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NEMCBadgeRegard.h; sourceTree = ""; }; - 18EE3FE12750C29D00A452BF /* NEMCBadgeRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NEMCBadgeRegard.m; sourceTree = ""; }; - 18EE3FEC2750CE6D00A452BF /* NEMCCommunicationUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NEMCCommunicationUtils.h; sourceTree = ""; }; - 18EE3FED2750CE6D00A452BF /* NEMCCommunicationUtils.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NEMCCommunicationUtils.m; sourceTree = ""; }; - 18EE3FEF2750D2AD00A452BF /* NEMCIntratemporalUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NEMCIntratemporalUtils.h; sourceTree = ""; }; - 18EE3FF02750D2AD00A452BF /* NEMCIntratemporalUtils.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NEMCIntratemporalUtils.m; sourceTree = ""; }; + 18E7B26726E8D5D60064BC9B /* XCCurrentVCStackManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XCCurrentVCStackManager.m; sourceTree = ""; }; + 18E7B26826E8D5D60064BC9B /* XCCurrentVCStackManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XCCurrentVCStackManager.h; sourceTree = ""; }; + 18E7B31626F097E00064BC9B /* UserInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UserInfoModel.h; sourceTree = ""; }; + 18E7B31726F097E00064BC9B /* UserInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UserInfoModel.m; sourceTree = ""; }; + 18E7B31926F0982E0064BC9B /* UserExpand.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UserExpand.h; sourceTree = ""; }; + 18E7B31A26F0982E0064BC9B /* UserExpand.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UserExpand.m; sourceTree = ""; }; + 18E7B31C26F0984C0064BC9B /* UserLevelVo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UserLevelVo.h; sourceTree = ""; }; + 18E7B31D26F0984C0064BC9B /* UserLevelVo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UserLevelVo.m; sourceTree = ""; }; + 18E7B31F26F098650064BC9B /* UserInfoSkillVo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UserInfoSkillVo.h; sourceTree = ""; }; + 18E7B32026F098650064BC9B /* UserInfoSkillVo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UserInfoSkillVo.m; sourceTree = ""; }; + 18E7B33026F317A20064BC9B /* XPWebViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPWebViewController.h; sourceTree = ""; }; + 18E7B33126F317A20064BC9B /* XPWebViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPWebViewController.m; sourceTree = ""; }; + 18EE3FDD2750C1F700A452BF /* SessionListCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SessionListCell.h; sourceTree = ""; }; + 18EE3FDE2750C1F700A452BF /* SessionListCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SessionListCell.m; sourceTree = ""; }; + 18EE3FE02750C29D00A452BF /* NIMBadgeView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NIMBadgeView.h; sourceTree = ""; }; + 18EE3FE12750C29D00A452BF /* NIMBadgeView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NIMBadgeView.m; sourceTree = ""; }; + 18EE3FEC2750CE6D00A452BF /* NIMMessageUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NIMMessageUtils.h; sourceTree = ""; }; + 18EE3FED2750CE6D00A452BF /* NIMMessageUtils.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NIMMessageUtils.m; sourceTree = ""; }; + 18EE3FEF2750D2AD00A452BF /* NIMTimeUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NIMTimeUtils.h; sourceTree = ""; }; + 18EE3FF02750D2AD00A452BF /* NIMTimeUtils.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NIMTimeUtils.m; sourceTree = ""; }; 18EE3FF22750FA3700A452BF /* UIView+NIM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+NIM.h"; sourceTree = ""; }; 18EE3FF32750FA3700A452BF /* UIView+NIM.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+NIM.m"; sourceTree = ""; }; - 18EE40182754BA9F00A452BF /* NEMCCommunicationMaker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NEMCCommunicationMaker.m; sourceTree = ""; }; - 18EE40192754BA9F00A452BF /* NEMCCommunicationMaker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NEMCCommunicationMaker.h; sourceTree = ""; }; - 18F403A32758B5F900A6C548 /* CommunicationContentCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationContentCeremony.h; sourceTree = ""; }; - 18F403C92758C66800A6C548 /* CommunicationSatisfactionEssay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationSatisfactionEssay.h; sourceTree = ""; }; - 18F403CA2758C66800A6C548 /* CommunicationSatisfactionEssay.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationSatisfactionEssay.m; sourceTree = ""; }; - 18F403EC2758CF2F00A6C548 /* CommunicationSatisfactionIndicate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationSatisfactionIndicate.h; sourceTree = ""; }; - 18F403ED2758CF2F00A6C548 /* CommunicationSatisfactionIndicate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationSatisfactionIndicate.m; sourceTree = ""; }; - 18F40438275E20D900A6C548 /* TRTCRealtimackConnector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TRTCRealtimackConnector.h; sourceTree = ""; }; - 18F40439275E20D900A6C548 /* TRTCRealtimackConnector.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TRTCRealtimackConnector.m; sourceTree = ""; }; - 18F404B5276095D700A6C548 /* InterlocutionChatLimitRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InterlocutionChatLimitRegard.h; sourceTree = ""; }; - 18F404B6276095D700A6C548 /* InterlocutionChatLimitRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InterlocutionChatLimitRegard.m; sourceTree = ""; }; - 18F404B92760982000A6C548 /* ChatLimitMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChatLimitMatrix.h; sourceTree = ""; }; - 18F404BA2760982000A6C548 /* ChatLimitMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ChatLimitMatrix.m; sourceTree = ""; }; + 18EE40182754BA9F00A452BF /* NIMMessageMaker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NIMMessageMaker.m; sourceTree = ""; }; + 18EE40192754BA9F00A452BF /* NIMMessageMaker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NIMMessageMaker.h; sourceTree = ""; }; + 18F403A32758B5F900A6C548 /* MessageContentProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageContentProtocol.h; sourceTree = ""; }; + 18F403C92758C66800A6C548 /* MessageContentText.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageContentText.h; sourceTree = ""; }; + 18F403CA2758C66800A6C548 /* MessageContentText.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageContentText.m; sourceTree = ""; }; + 18F403EC2758CF2F00A6C548 /* MessageContentImage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageContentImage.h; sourceTree = ""; }; + 18F403ED2758CF2F00A6C548 /* MessageContentImage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageContentImage.m; sourceTree = ""; }; + 18F40438275E20D900A6C548 /* TRTCRtcImpl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TRTCRtcImpl.h; sourceTree = ""; }; + 18F40439275E20D900A6C548 /* TRTCRtcImpl.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TRTCRtcImpl.m; sourceTree = ""; }; + 18F404B5276095D700A6C548 /* SessionChatLimitView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SessionChatLimitView.h; sourceTree = ""; }; + 18F404B6276095D700A6C548 /* SessionChatLimitView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SessionChatLimitView.m; sourceTree = ""; }; + 18F404B92760982000A6C548 /* ChatLimitModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChatLimitModel.h; sourceTree = ""; }; + 18F404BA2760982000A6C548 /* ChatLimitModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ChatLimitModel.m; sourceTree = ""; }; 18F404C1276098F100A6C548 /* Api+Message.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+Message.h"; sourceTree = ""; }; 18F404C2276098F100A6C548 /* Api+Message.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+Message.m"; sourceTree = ""; }; - 18F404C6276099DF00A6C548 /* CommunicationCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationCeremony.h; sourceTree = ""; }; - 18F404C727609A4300A6C548 /* CommunicationExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationExternalizer.h; sourceTree = ""; }; - 18F404C827609A4300A6C548 /* CommunicationExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationExternalizer.m; sourceTree = ""; }; - 237D63732A57E7B1000442C6 /* PINoblemanCenterView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PINoblemanCenterView.h; sourceTree = ""; }; - 237D63742A57E7B1000442C6 /* PINoblemanCenterView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PINoblemanCenterView.m; sourceTree = ""; }; - 237D64342A57FDA9000442C6 /* ContentTreasureFairyModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContentTreasureFairyModel.m; sourceTree = ""; }; - 237D64372A57FDA9000442C6 /* XPTreasureFailyPresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFailyPresenter.m; sourceTree = ""; }; - 237D64382A57FDA9000442C6 /* XPTreasureFailyPresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFailyPresenter.h; sourceTree = ""; }; - 237D643A2A57FDA9000442C6 /* XPTreasureFailyProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFailyProtocol.h; sourceTree = ""; }; - 237D643C2A57FDA9000442C6 /* TreasureFairyConvertRecordModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreasureFairyConvertRecordModel.h; sourceTree = ""; }; - 237D643D2A57FDA9000442C6 /* TreasureFairyInfoModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreasureFairyInfoModel.h; sourceTree = ""; }; - 237D643E2A57FDA9000442C6 /* TreasureFairyLimitModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TreasureFairyLimitModel.m; sourceTree = ""; }; - 237D643F2A57FDA9000442C6 /* TreasureFailyKeyInfoModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TreasureFailyKeyInfoModel.m; sourceTree = ""; }; - 237D64402A57FDA9000442C6 /* TreasureFailryMessageModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreasureFailryMessageModel.h; sourceTree = ""; }; - 237D64412A57FDA9000442C6 /* TreasureFairySendRecordModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TreasureFairySendRecordModel.m; sourceTree = ""; }; - 237D64422A57FDA9000442C6 /* TreasureFairyRewardModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TreasureFairyRewardModel.m; sourceTree = ""; }; - 237D64432A57FDA9000442C6 /* TreasureFairyTrialsRecordModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TreasureFairyTrialsRecordModel.m; sourceTree = ""; }; - 237D64442A57FDA9000442C6 /* TreasureFairyBallInfoModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreasureFairyBallInfoModel.h; sourceTree = ""; }; - 237D64452A57FDA9000442C6 /* TreasureFairyUserInfoModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TreasureFairyUserInfoModel.m; sourceTree = ""; }; - 237D64462A57FDA9000442C6 /* TreasureFairyFragmentModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreasureFairyFragmentModel.h; sourceTree = ""; }; - 237D64472A57FDA9000442C6 /* TreasureFailyKeyInfoModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreasureFailyKeyInfoModel.h; sourceTree = ""; }; - 237D64482A57FDA9000442C6 /* TreasureFairyLimitModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreasureFairyLimitModel.h; sourceTree = ""; }; - 237D64492A57FDA9000442C6 /* TreasureFairyInfoModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TreasureFairyInfoModel.m; sourceTree = ""; }; - 237D644A2A57FDA9000442C6 /* TreasureFairyConvertRecordModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TreasureFairyConvertRecordModel.m; sourceTree = ""; }; - 237D644B2A57FDA9000442C6 /* TreasureFailryMessageModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TreasureFailryMessageModel.m; sourceTree = ""; }; - 237D644C2A57FDA9000442C6 /* TreasureFairyBallInfoModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TreasureFairyBallInfoModel.m; sourceTree = ""; }; - 237D644D2A57FDA9000442C6 /* TreasureFairyTrialsRecordModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreasureFairyTrialsRecordModel.h; sourceTree = ""; }; - 237D644E2A57FDA9000442C6 /* TreasureFairyRewardModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreasureFairyRewardModel.h; sourceTree = ""; }; - 237D644F2A57FDA9000442C6 /* TreasureFairySendRecordModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreasureFairySendRecordModel.h; sourceTree = ""; }; - 237D64502A57FDA9000442C6 /* TreasureFairyFragmentModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TreasureFairyFragmentModel.m; sourceTree = ""; }; - 237D64512A57FDA9000442C6 /* TreasureFairyUserInfoModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreasureFairyUserInfoModel.h; sourceTree = ""; }; - 237D64532A57FDA9000442C6 /* XPTreasureFairyViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyViewController.m; sourceTree = ""; }; - 237D64552A57FDA9000442C6 /* XPTreasureFairyStoreResultCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyStoreResultCell.m; sourceTree = ""; }; - 237D64562A57FDA9000442C6 /* XPTreasureFairyShopingRecordCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyShopingRecordCell.h; sourceTree = ""; }; - 237D64572A57FDA9000442C6 /* XPTreasureFailyResultGiftCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFailyResultGiftCell.h; sourceTree = ""; }; - 237D64582A57FDA9000442C6 /* XPTreasureFairySendRecordCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairySendRecordCell.h; sourceTree = ""; }; - 237D64592A57FDA9000442C6 /* XPTreasureFairyFriendCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyFriendCell.m; sourceTree = ""; }; - 237D645A2A57FDA9000442C6 /* XPTreasureFairyPrizePoolCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyPrizePoolCell.m; sourceTree = ""; }; - 237D645B2A57FDA9000442C6 /* XPTreasureFairyPrizeRecordCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyPrizeRecordCell.m; sourceTree = ""; }; - 237D645C2A57FDA9000442C6 /* XPTreasureFairyTrialsRecordCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyTrialsRecordCell.h; sourceTree = ""; }; - 237D645D2A57FDA9000442C6 /* XPTreasureFairyShopingExchangeCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyShopingExchangeCell.h; sourceTree = ""; }; - 237D645E2A57FDA9000442C6 /* XPTreasureFairyStoreResultCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyStoreResultCell.h; sourceTree = ""; }; - 237D645F2A57FDA9000442C6 /* XPTreasureFailyResultGiftCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFailyResultGiftCell.m; sourceTree = ""; }; - 237D64602A57FDA9000442C6 /* XPTreasureFairyShopingRecordCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyShopingRecordCell.m; sourceTree = ""; }; - 237D64612A57FDA9000442C6 /* XPTreasureFairyFriendCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyFriendCell.h; sourceTree = ""; }; - 237D64622A57FDA9000442C6 /* XPTreasureFairySendRecordCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairySendRecordCell.m; sourceTree = ""; }; - 237D64632A57FDA9000442C6 /* XPTreasureFairyPrizeRecordCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyPrizeRecordCell.h; sourceTree = ""; }; - 237D64642A57FDA9000442C6 /* XPTreasureFairyPrizePoolCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyPrizePoolCell.h; sourceTree = ""; }; - 237D64652A57FDA9000442C6 /* XPTreasureFairyShopingExchangeCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyShopingExchangeCell.m; sourceTree = ""; }; - 237D64662A57FDA9000442C6 /* XPTreasureFairyTrialsRecordCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyTrialsRecordCell.m; sourceTree = ""; }; - 237D64682A57FDA9000442C6 /* XPTreasureFairyShopingRecordSubView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyShopingRecordSubView.h; sourceTree = ""; }; - 237D64692A57FDA9000442C6 /* XPTreasureFairyFriendView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyFriendView.m; sourceTree = ""; }; - 237D646A2A57FDA9000442C6 /* XPTreasureFairySummonView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairySummonView.m; sourceTree = ""; }; - 237D646B2A57FDA9000442C6 /* XPTreasureFairySendView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairySendView.m; sourceTree = ""; }; - 237D646C2A57FDA9000442C6 /* XPTreasureFairySendRecordView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairySendRecordView.h; sourceTree = ""; }; - 237D646D2A57FDA9000442C6 /* XPTreasureFairySummonGiftView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairySummonGiftView.h; sourceTree = ""; }; - 237D646E2A57FDA9000442C6 /* XPTreasureFairyDrawView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyDrawView.h; sourceTree = ""; }; - 237D646F2A57FDA9000442C6 /* XPTreasureFairyShopingView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyShopingView.h; sourceTree = ""; }; - 237D64702A57FDA9000442C6 /* XPTreasureFairyTrialsContentView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyTrialsContentView.m; sourceTree = ""; }; - 237D64712A57FDA9000442C6 /* XPTreasureFairyTrialsBallView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyTrialsBallView.h; sourceTree = ""; }; - 237D64722A57FDA9000442C6 /* XPTreasureFairyTrialsView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyTrialsView.h; sourceTree = ""; }; - 237D64732A57FDA9000442C6 /* XPTreasureFailrySummonBallView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFailrySummonBallView.h; sourceTree = ""; }; - 237D64742A57FDA9000442C6 /* XPTreasureFairyShopingRecordView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyShopingRecordView.h; sourceTree = ""; }; - 237D64752A57FDA9000442C6 /* XPTreasureFairyStoreResultView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyStoreResultView.m; sourceTree = ""; }; - 237D64762A57FDA9000442C6 /* XPTreasureFairyExchangeView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyExchangeView.h; sourceTree = ""; }; - 237D64772A57FDA9000442C6 /* XPTreasureFairyPoolRecordView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyPoolRecordView.m; sourceTree = ""; }; - 237D64782A57FDA9000442C6 /* XPTreasureFairyBallView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyBallView.h; sourceTree = ""; }; - 237D64792A57FDA9000442C6 /* XPTreasureFairyDrawSubView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyDrawSubView.m; sourceTree = ""; }; - 237D647A2A57FDA9000442C6 /* XPTreasureFairyMessageSendView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyMessageSendView.m; sourceTree = ""; }; - 237D647B2A57FDA9000442C6 /* XPTreasureFairyBallContentView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyBallContentView.m; sourceTree = ""; }; - 237D647C2A57FDA9000442C6 /* XPTreasureFairyTrialsRecordView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyTrialsRecordView.h; sourceTree = ""; }; - 237D647D2A57FDA9000442C6 /* XPTreasureFairyMoreView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyMoreView.m; sourceTree = ""; }; - 237D647E2A57FDA9000442C6 /* XPTreasureFairyMyView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyMyView.m; sourceTree = ""; }; - 237D647F2A57FDA9000442C6 /* XPTreasureFairyPrizeRecordView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyPrizeRecordView.m; sourceTree = ""; }; - 237D64802A57FDA9000442C6 /* XPTreasureFailyPrizeGiftView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFailyPrizeGiftView.m; sourceTree = ""; }; - 237D64812A57FDA9000442C6 /* XPTreasureFairyStoreResultSmallView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyStoreResultSmallView.m; sourceTree = ""; }; - 237D64822A57FDA9000442C6 /* XPTreasureFairyStoreView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyStoreView.h; sourceTree = ""; }; - 237D64832A57FDA9000442C6 /* XPTreasureFairyPrizePoolView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyPrizePoolView.m; sourceTree = ""; }; - 237D64842A57FDA9000442C6 /* XPTreasureFairyWebView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyWebView.m; sourceTree = ""; }; - 237D64852A57FDA9000442C6 /* XPTreasureFairyPrizeSubView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyPrizeSubView.m; sourceTree = ""; }; - 237D64862A57FDA9000442C6 /* XPTreasureFailyResultView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFailyResultView.m; sourceTree = ""; }; - 237D64872A57FDA9000442C6 /* XPTreasureFairyDrawView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyDrawView.m; sourceTree = ""; }; - 237D64882A57FDA9000442C6 /* XPTreasureFairySendRecordView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairySendRecordView.m; sourceTree = ""; }; - 237D64892A57FDA9000442C6 /* XPTreasureFairySummonGiftView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairySummonGiftView.m; sourceTree = ""; }; - 237D648A2A57FDA9000442C6 /* XPTreasureFairySendView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairySendView.h; sourceTree = ""; }; - 237D648B2A57FDA9000442C6 /* XPTreasureFairySummonView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairySummonView.h; sourceTree = ""; }; - 237D648C2A57FDA9000442C6 /* XPTreasureFairyFriendView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyFriendView.h; sourceTree = ""; }; - 237D648D2A57FDA9000442C6 /* XPTreasureFairyShopingRecordSubView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyShopingRecordSubView.m; sourceTree = ""; }; - 237D648E2A57FDA9000442C6 /* XPTreasureFairyPoolRecordView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyPoolRecordView.h; sourceTree = ""; }; - 237D648F2A57FDA9000442C6 /* XPTreasureFairyExchangeView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyExchangeView.m; sourceTree = ""; }; - 237D64902A57FDA9000442C6 /* XPTreasureFairyShopingRecordView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyShopingRecordView.m; sourceTree = ""; }; - 237D64912A57FDA9000442C6 /* XPTreasureFairyStoreResultView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyStoreResultView.h; sourceTree = ""; }; - 237D64922A57FDA9000442C6 /* XPTreasureFailrySummonBallView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFailrySummonBallView.m; sourceTree = ""; }; - 237D64932A57FDA9000442C6 /* XPTreasureFairyTrialsView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyTrialsView.m; sourceTree = ""; }; - 237D64942A57FDA9000442C6 /* XPTreasureFairyTrialsBallView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyTrialsBallView.m; sourceTree = ""; }; - 237D64952A57FDA9000442C6 /* XPTreasureFairyShopingView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyShopingView.m; sourceTree = ""; }; - 237D64962A57FDA9000442C6 /* XPTreasureFairyTrialsContentView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyTrialsContentView.h; sourceTree = ""; }; - 237D64972A57FDA9000442C6 /* XPTreasureFairyMoreView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyMoreView.h; sourceTree = ""; }; - 237D64982A57FDA9000442C6 /* XPTreasureFairyTrialsRecordView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyTrialsRecordView.m; sourceTree = ""; }; - 237D64992A57FDA9000442C6 /* XPTreasureFairyBallContentView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyBallContentView.h; sourceTree = ""; }; - 237D649A2A57FDA9000442C6 /* XPTreasureFairyMessageSendView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyMessageSendView.h; sourceTree = ""; }; - 237D649B2A57FDA9000442C6 /* XPTreasureFairyDrawSubView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyDrawSubView.h; sourceTree = ""; }; - 237D649C2A57FDA9000442C6 /* XPTreasureFairyBallView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyBallView.m; sourceTree = ""; }; - 237D649D2A57FDA9000442C6 /* XPTreasureFairyPrizeSubView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyPrizeSubView.h; sourceTree = ""; }; - 237D649E2A57FDA9000442C6 /* XPTreasureFailyResultView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFailyResultView.h; sourceTree = ""; }; - 237D649F2A57FDA9000442C6 /* XPTreasureFairyWebView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyWebView.h; sourceTree = ""; }; - 237D64A02A57FDA9000442C6 /* XPTreasureFairyPrizePoolView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyPrizePoolView.h; sourceTree = ""; }; - 237D64A12A57FDA9000442C6 /* XPTreasureFairyStoreView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyStoreView.m; sourceTree = ""; }; - 237D64A22A57FDA9000442C6 /* XPTreasureFairyStoreResultSmallView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyStoreResultSmallView.h; sourceTree = ""; }; - 237D64A32A57FDA9000442C6 /* XPTreasureFailyPrizeGiftView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFailyPrizeGiftView.h; sourceTree = ""; }; - 237D64A42A57FDA9000442C6 /* XPTreasureFairyPrizeRecordView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyPrizeRecordView.h; sourceTree = ""; }; - 237D64A52A57FDA9000442C6 /* XPTreasureFairyMyView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyMyView.h; sourceTree = ""; }; - 237D64A62A57FDA9000442C6 /* XPTreasureFairyViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyViewController.h; sourceTree = ""; }; - 237D64A82A57FDA9000442C6 /* Api+TreasureFairy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Api+TreasureFairy.m"; sourceTree = ""; }; - 237D64A92A57FDA9000442C6 /* Api+TreasureFairy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Api+TreasureFairy.h"; sourceTree = ""; }; - 237D64AA2A57FDAA000442C6 /* XPTreasureFairyGiftView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFairyGiftView.h; sourceTree = ""; }; - 237D64AB2A57FDAA000442C6 /* ContentTreasureFairyModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContentTreasureFairyModel.h; sourceTree = ""; }; - 237D64AC2A57FDAA000442C6 /* XPTreasureFairyGiftView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFairyGiftView.m; sourceTree = ""; }; - 237D64E62A58139E000442C6 /* treasure_fairy_trials_high.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = treasure_fairy_trials_high.mp4; sourceTree = ""; }; - 237D64E72A58139E000442C6 /* treasure_fairy_summon_normal.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = treasure_fairy_summon_normal.mp4; sourceTree = ""; }; - 237D64E82A58139E000442C6 /* treasure_fairy_summon_high.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = treasure_fairy_summon_high.mp4; sourceTree = ""; }; - 237D64E92A58139E000442C6 /* treasure_fairy_summon_middle.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = treasure_fairy_summon_middle.mp4; sourceTree = ""; }; - 237D64EA2A58139E000442C6 /* treasure_fairy_ten.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = treasure_fairy_ten.mp4; sourceTree = ""; }; - 237D64EB2A58139E000442C6 /* treasure_fairy_trials_middle.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = treasure_fairy_trials_middle.mp4; sourceTree = ""; }; - 237D64EC2A58139E000442C6 /* treasure_fairy_one.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = treasure_fairy_one.mp4; sourceTree = ""; }; - 237D64ED2A58139E000442C6 /* treasure_fairy_gift_bg.svga */ = {isa = PBXFileReference; lastKnownFileType = file; path = treasure_fairy_gift_bg.svga; sourceTree = ""; }; - 23D0B01D2A5BFF2D00C9B18B /* PIBaseAnimationViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PIBaseAnimationViewModel.h; sourceTree = ""; }; - 23D0B01E2A5BFF2D00C9B18B /* PIBaseAnimationViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PIBaseAnimationViewModel.m; sourceTree = ""; }; + 18F404C6276099DF00A6C548 /* MessageProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageProtocol.h; sourceTree = ""; }; + 18F404C727609A4300A6C548 /* MessagePresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessagePresenter.h; sourceTree = ""; }; + 18F404C827609A4300A6C548 /* MessagePresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessagePresenter.m; sourceTree = ""; }; + 2331C0DA2A5E9E9000E1D940 /* PIFullScreenBannerAnimation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PIFullScreenBannerAnimation.h; sourceTree = ""; }; + 2331C0DB2A5E9E9000E1D940 /* PIFullScreenBannerAnimation.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PIFullScreenBannerAnimation.m; sourceTree = ""; }; + 2331C1312A5EB71000E1D940 /* XPNobleCenterPresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNobleCenterPresenter.h; sourceTree = ""; }; + 2331C1322A5EB71000E1D940 /* XPNobleCenterPresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNobleCenterPresenter.m; sourceTree = ""; }; + 2331C1342A5EB71000E1D940 /* XPNobleCenterProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNobleCenterProtocol.h; sourceTree = ""; }; + 2331C1362A5EB71000E1D940 /* NobleInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NobleInfo.m; sourceTree = ""; }; + 2331C1372A5EB71000E1D940 /* NobleLevelUpModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NobleLevelUpModel.h; sourceTree = ""; }; + 2331C1382A5EB71000E1D940 /* NobleAuthInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NobleAuthInfo.h; sourceTree = ""; }; + 2331C1392A5EB71000E1D940 /* NobleRechargeModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NobleRechargeModel.m; sourceTree = ""; }; + 2331C13A2A5EB71000E1D940 /* NobleCenterModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NobleCenterModel.m; sourceTree = ""; }; + 2331C13B2A5EB71000E1D940 /* NobleInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NobleInfo.h; sourceTree = ""; }; + 2331C13C2A5EB71000E1D940 /* NobleLevelUpModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NobleLevelUpModel.m; sourceTree = ""; }; + 2331C13D2A5EB71000E1D940 /* NobleAuthInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NobleAuthInfo.m; sourceTree = ""; }; + 2331C13E2A5EB71000E1D940 /* NobleCenterModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NobleCenterModel.h; sourceTree = ""; }; + 2331C13F2A5EB71000E1D940 /* NobleRechargeModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NobleRechargeModel.h; sourceTree = ""; }; + 2331C1412A5EB71000E1D940 /* XPNobleSettingViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNobleSettingViewController.m; sourceTree = ""; }; + 2331C1422A5EB71000E1D940 /* ThemeColor+NobleCenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ThemeColor+NobleCenter.h"; sourceTree = ""; }; + 2331C1432A5EB71000E1D940 /* XPNobleCenterListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNobleCenterListViewController.h; sourceTree = ""; }; + 2331C1442A5EB71000E1D940 /* XPNobleCenterViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNobleCenterViewController.m; sourceTree = ""; }; + 2331C1462A5EB71000E1D940 /* XPNobleAuthorityDescView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNobleAuthorityDescView.h; sourceTree = ""; }; + 2331C1472A5EB71000E1D940 /* XPNobleSettingNavView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNobleSettingNavView.h; sourceTree = ""; }; + 2331C1482A5EB71000E1D940 /* XPNobleCenterMyNobleView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNobleCenterMyNobleView.m; sourceTree = ""; }; + 2331C14A2A5EB71000E1D940 /* XPNobleCenterTableHeadView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNobleCenterTableHeadView.h; sourceTree = ""; }; + 2331C14B2A5EB71000E1D940 /* XPNoblePrivilegeContentCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNoblePrivilegeContentCell.h; sourceTree = ""; }; + 2331C14C2A5EB71000E1D940 /* XPNobleCenterEmptyView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNobleCenterEmptyView.m; sourceTree = ""; }; + 2331C14D2A5EB71000E1D940 /* XPNobleCenterNavView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNobleCenterNavView.h; sourceTree = ""; }; + 2331C14E2A5EB71000E1D940 /* XPNobleUpgradeLevelView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNobleUpgradeLevelView.h; sourceTree = ""; }; + 2331C14F2A5EB71000E1D940 /* XPNobleCenterResidueView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNobleCenterResidueView.h; sourceTree = ""; }; + 2331C1502A5EB71000E1D940 /* XPNoblePrivilegeCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNoblePrivilegeCell.h; sourceTree = ""; }; + 2331C1512A5EB71000E1D940 /* XPNobleCenterMyNobleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNobleCenterMyNobleView.h; sourceTree = ""; }; + 2331C1522A5EB71000E1D940 /* XPNobleSettingNavView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNobleSettingNavView.m; sourceTree = ""; }; + 2331C1532A5EB71000E1D940 /* XPNobleAuthorityDescView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNobleAuthorityDescView.m; sourceTree = ""; }; + 2331C1542A5EB71000E1D940 /* XPNobleCenterNavView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNobleCenterNavView.m; sourceTree = ""; }; + 2331C1552A5EB71000E1D940 /* XPNobleCenterEmptyView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNobleCenterEmptyView.h; sourceTree = ""; }; + 2331C1562A5EB71000E1D940 /* XPNoblePrivilegeContentCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNoblePrivilegeContentCell.m; sourceTree = ""; }; + 2331C1572A5EB71000E1D940 /* XPNobleCenterTableHeadView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNobleCenterTableHeadView.m; sourceTree = ""; }; + 2331C1592A5EB71000E1D940 /* XPNoblePrivilegeCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNoblePrivilegeCell.m; sourceTree = ""; }; + 2331C15A2A5EB71000E1D940 /* XPNobleCenterResidueView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNobleCenterResidueView.m; sourceTree = ""; }; + 2331C15B2A5EB71000E1D940 /* XPNobleUpgradeLevelView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNobleUpgradeLevelView.m; sourceTree = ""; }; + 2331C15C2A5EB71000E1D940 /* XPNobleSettingViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNobleSettingViewController.h; sourceTree = ""; }; + 2331C15D2A5EB71000E1D940 /* ThemeColor+NobleCenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "ThemeColor+NobleCenter.m"; sourceTree = ""; }; + 2331C15E2A5EB71000E1D940 /* XPNobleCenterListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNobleCenterListViewController.m; sourceTree = ""; }; + 2331C15F2A5EB71000E1D940 /* XPNobleCenterViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNobleCenterViewController.h; sourceTree = ""; }; + 2331C1612A5EB71000E1D940 /* Api+NobleCenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Api+NobleCenter.h"; sourceTree = ""; }; + 2331C1622A5EB71000E1D940 /* Api+NobleCenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Api+NobleCenter.m"; sourceTree = ""; }; + 2331C1792A5EB7AB00E1D940 /* XPNobleCenterEntranceView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNobleCenterEntranceView.m; sourceTree = ""; }; + 2331C17A2A5EB7AB00E1D940 /* XPNobleCenterEntranceView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNobleCenterEntranceView.h; sourceTree = ""; }; + 2331C17C2A5ECCF600E1D940 /* XPNobleCenterPayView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPNobleCenterPayView.h; sourceTree = ""; }; + 2331C17D2A5ECCF600E1D940 /* XPNobleCenterPayView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPNobleCenterPayView.m; sourceTree = ""; }; + 2331C17F2A5ECD3800E1D940 /* XPNobleCenterPayCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPNobleCenterPayCell.h; sourceTree = ""; }; + 2331C1802A5ECD3800E1D940 /* XPNobleCenterPayCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPNobleCenterPayCell.m; sourceTree = ""; }; + 2331C1842A60F32D00E1D940 /* XPCandyTreePresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPCandyTreePresenter.m; sourceTree = ""; }; + 2331C1852A60F32D00E1D940 /* XPCandyTreePresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPCandyTreePresenter.h; sourceTree = ""; }; + 2331C1872A60F32D00E1D940 /* XPCandyTreeProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPCandyTreeProtocol.h; sourceTree = ""; }; + 2331C1892A60F32D00E1D940 /* CandyTreeResultModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CandyTreeResultModel.m; sourceTree = ""; }; + 2331C18A2A60F32D00E1D940 /* CandyTreeRecordModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CandyTreeRecordModel.m; sourceTree = ""; }; + 2331C18B2A60F32D00E1D940 /* XPCandyTreeAnimationModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPCandyTreeAnimationModel.h; sourceTree = ""; }; + 2331C18C2A60F32D00E1D940 /* CandyTreeInfoModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CandyTreeInfoModel.h; sourceTree = ""; }; + 2331C18D2A60F32D00E1D940 /* XPCandyTreeAnimationModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPCandyTreeAnimationModel.m; sourceTree = ""; }; + 2331C18E2A60F32D00E1D940 /* CandyTreeRecordModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CandyTreeRecordModel.h; sourceTree = ""; }; + 2331C18F2A60F32D00E1D940 /* CandyTreeResultModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CandyTreeResultModel.h; sourceTree = ""; }; + 2331C1902A60F32D00E1D940 /* CandyTreeInfoModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CandyTreeInfoModel.m; sourceTree = ""; }; + 2331C1922A60F32D00E1D940 /* XPCandyTreeRankView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPCandyTreeRankView.m; sourceTree = ""; }; + 2331C1932A60F32D00E1D940 /* XPCandyTreeMoreView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPCandyTreeMoreView.m; sourceTree = ""; }; + 2331C1942A60F32D00E1D940 /* XPCandyTreeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPCandyTreeViewController.h; sourceTree = ""; }; + 2331C1952A60F32D00E1D940 /* XPCandyTreeInsufficientBalanceView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPCandyTreeInsufficientBalanceView.h; sourceTree = ""; }; + 2331C1962A60F32D00E1D940 /* XPCandyTreeGiftView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPCandyTreeGiftView.m; sourceTree = ""; }; + 2331C1972A60F32D00E1D940 /* XPRoomHalfWebView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPRoomHalfWebView.h; sourceTree = ""; }; + 2331C1982A60F32D00E1D940 /* XPCandyRankContainerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPCandyRankContainerView.h; sourceTree = ""; }; + 2331C19A2A60F32D00E1D940 /* XPCandyTreeEmptyableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPCandyTreeEmptyableViewCell.m; sourceTree = ""; }; + 2331C19B2A60F32D00E1D940 /* XPCandyTreeMoreRuleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPCandyTreeMoreRuleCell.m; sourceTree = ""; }; + 2331C19C2A60F32D00E1D940 /* XPCandyTreeRankTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPCandyTreeRankTableViewCell.m; sourceTree = ""; }; + 2331C19D2A60F32D00E1D940 /* XPCandyTreeMoreRuleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPCandyTreeMoreRuleCell.h; sourceTree = ""; }; + 2331C19E2A60F32D00E1D940 /* XPCandyTreeEmptyableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPCandyTreeEmptyableViewCell.h; sourceTree = ""; }; + 2331C19F2A60F32D00E1D940 /* XPCandyTreeRankTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPCandyTreeRankTableViewCell.h; sourceTree = ""; }; + 2331C1A02A60F32D00E1D940 /* XPCandyTreeRankView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPCandyTreeRankView.h; sourceTree = ""; }; + 2331C1A12A60F32D00E1D940 /* XPCandyTreeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPCandyTreeViewController.m; sourceTree = ""; }; + 2331C1A22A60F32D00E1D940 /* XPCandyTreeMoreView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPCandyTreeMoreView.h; sourceTree = ""; }; + 2331C1A32A60F32D00E1D940 /* XPCandyTreeGiftView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPCandyTreeGiftView.h; sourceTree = ""; }; + 2331C1A42A60F32D00E1D940 /* XPCandyTreeInsufficientBalanceView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPCandyTreeInsufficientBalanceView.m; sourceTree = ""; }; + 2331C1A52A60F32D00E1D940 /* XPCandyRankContainerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPCandyRankContainerView.m; sourceTree = ""; }; + 2331C1A62A60F32D00E1D940 /* XPRoomHalfWebView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPRoomHalfWebView.m; sourceTree = ""; }; + 2331C1A82A60F32D00E1D940 /* Api+CandyTree.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Api+CandyTree.m"; sourceTree = ""; }; + 2331C1A92A60F32D00E1D940 /* Api+CandyTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Api+CandyTree.h"; sourceTree = ""; }; + 2331C1BB2A60F69E00E1D940 /* UILabel+Utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UILabel+Utils.h"; sourceTree = ""; }; + 2331C1BC2A60F69E00E1D940 /* UILabel+Utils.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UILabel+Utils.m"; sourceTree = ""; }; + 23BA16592A5D2ACF0030C5A3 /* PIBaseAnimationViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PIBaseAnimationViewModel.h; sourceTree = ""; }; + 23BA165A2A5D2ACF0030C5A3 /* PIBaseAnimationViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PIBaseAnimationViewModel.m; sourceTree = ""; }; 7DB00EC07F1D0ADFF900B38D /* Pods-YuMi.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-YuMi.debug.xcconfig"; path = "Target Support Files/Pods-YuMi/Pods-YuMi.debug.xcconfig"; sourceTree = ""; }; - 9B0086C427BA392B0032BD2B /* KellegPhaseRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KellegPhaseRegard.h; sourceTree = ""; }; - 9B0086C527BA392B0032BD2B /* KellegPhaseRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KellegPhaseRegard.m; sourceTree = ""; }; - 9B0086C827BA4F570032BD2B /* KellegMiecreoscoopeRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KellegMiecreoscoopeRegard.h; sourceTree = ""; }; - 9B0086C927BA4F570032BD2B /* KellegMiecreoscoopeRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KellegMiecreoscoopeRegard.m; sourceTree = ""; }; - 9B044D9B282D2A6400DE4859 /* YUMIChamberKellegRateImportRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberKellegRateImportRegard.h; sourceTree = ""; }; - 9B044D9C282D2A6400DE4859 /* YUMIChamberKellegRateImportRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberKellegRateImportRegard.m; sourceTree = ""; }; - 9B044D9E282D32F700DE4859 /* MiecreoscoopeCallforExtMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MiecreoscoopeCallforExtMatrix.h; sourceTree = ""; }; - 9B044D9F282D32F700DE4859 /* MiecreoscoopeCallforExtMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MiecreoscoopeCallforExtMatrix.m; sourceTree = ""; }; + 9B0086C427BA392B0032BD2B /* AnchorStageView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AnchorStageView.h; sourceTree = ""; }; + 9B0086C527BA392B0032BD2B /* AnchorStageView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AnchorStageView.m; sourceTree = ""; }; + 9B0086C827BA4F570032BD2B /* AnchorMicroView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AnchorMicroView.h; sourceTree = ""; }; + 9B0086C927BA4F570032BD2B /* AnchorMicroView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AnchorMicroView.m; sourceTree = ""; }; + 9B044D9B282D2A6400DE4859 /* XPRoomAnchorRankEnterView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomAnchorRankEnterView.h; sourceTree = ""; }; + 9B044D9C282D2A6400DE4859 /* XPRoomAnchorRankEnterView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomAnchorRankEnterView.m; sourceTree = ""; }; + 9B044D9E282D32F700DE4859 /* MicroInviteExtModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MicroInviteExtModel.h; sourceTree = ""; }; + 9B044D9F282D32F700DE4859 /* MicroInviteExtModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MicroInviteExtModel.m; sourceTree = ""; }; 9B0997A027F19D8900EB8F14 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; 9B0997A227F19DE500EB8F14 /* QGHWDShaders.metal */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.metal; name = QGHWDShaders.metal; path = Pods/QGVAPlayer/iOS/QGVAPlayer/QGVAPlayer/Shaders/QGHWDShaders.metal; sourceTree = SOURCE_ROOT; }; - 9B0E1C5726E77022005D4442 /* BaseNevigationGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BaseNevigationGovernancer.h; sourceTree = ""; }; - 9B0E1C5826E77022005D4442 /* BaseNevigationGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BaseNevigationGovernancer.m; sourceTree = ""; }; - 9B17F71627BD150600440843 /* SVGAAnatomiserExecutive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAAnatomiserExecutive.h; sourceTree = ""; }; - 9B17F71727BD150600440843 /* SVGAAnatomiserExecutive.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SVGAAnatomiserExecutive.m; sourceTree = ""; }; + 9B0E1C5726E77022005D4442 /* BaseNavigationController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BaseNavigationController.h; sourceTree = ""; }; + 9B0E1C5826E77022005D4442 /* BaseNavigationController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BaseNavigationController.m; sourceTree = ""; }; + 9B17F71627BD150600440843 /* SVGAParserManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAParserManager.h; sourceTree = ""; }; + 9B17F71727BD150600440843 /* SVGAParserManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SVGAParserManager.m; sourceTree = ""; }; 9B1B7290280010E8003FACE9 /* Api+FansTeam.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+FansTeam.h"; sourceTree = ""; }; 9B1B7291280010E8003FACE9 /* Api+FansTeam.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+FansTeam.m"; sourceTree = ""; }; - 9B1B729328002099003FACE9 /* YUMIManeFanaticsSquadRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeFanaticsSquadRegardGovernancer.h; sourceTree = ""; }; - 9B1B729428002099003FACE9 /* YUMIManeFanaticsSquadRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeFanaticsSquadRegardGovernancer.m; sourceTree = ""; }; - 9B1B729628002147003FACE9 /* YUMIManeFanaticsSquadExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeFanaticsSquadExternalizer.h; sourceTree = ""; }; - 9B1B729728002147003FACE9 /* YUMIManeFanaticsSquadExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeFanaticsSquadExternalizer.m; sourceTree = ""; }; - 9B1B7299280021E7003FACE9 /* FBCManeKellegFanaticsTeamCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCManeKellegFanaticsTeamCeremony.h; sourceTree = ""; }; - 9B1B729B28002264003FACE9 /* YUMIManeKellegFanaticsSquadMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeKellegFanaticsSquadMatrix.h; sourceTree = ""; }; - 9B1B729C28002264003FACE9 /* YUMIManeKellegFanaticsSquadMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeKellegFanaticsSquadMatrix.m; sourceTree = ""; }; - 9B1B729F280023F3003FACE9 /* YUMIManeKellegFanaticsSquadTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeKellegFanaticsSquadTabulationRegardElement.h; sourceTree = ""; }; - 9B1B72A0280023F3003FACE9 /* YUMIManeKellegFanaticsSquadTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeKellegFanaticsSquadTabulationRegardElement.m; sourceTree = ""; }; - 9B1B72AA280031DB003FACE9 /* XCombatellegCombatRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegCombatRegardGovernancer.h; sourceTree = ""; }; - 9B1B72AB280031DB003FACE9 /* XCombatellegCombatRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatellegCombatRegardGovernancer.m; sourceTree = ""; }; - 9B1B72AD280031F8003FACE9 /* XCombatellegCombatChosenChamberRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegCombatChosenChamberRegard.h; sourceTree = ""; }; - 9B1B72AE280031F8003FACE9 /* XCombatellegCombatChosenChamberRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatellegCombatChosenChamberRegard.m; sourceTree = ""; }; + 9B1B729328002099003FACE9 /* XPMineFansTeamViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineFansTeamViewController.h; sourceTree = ""; }; + 9B1B729428002099003FACE9 /* XPMineFansTeamViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineFansTeamViewController.m; sourceTree = ""; }; + 9B1B729628002147003FACE9 /* XPMineFansTeamPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineFansTeamPresenter.h; sourceTree = ""; }; + 9B1B729728002147003FACE9 /* XPMineFansTeamPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineFansTeamPresenter.m; sourceTree = ""; }; + 9B1B7299280021E7003FACE9 /* XPMineAnchorFansTeamProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineAnchorFansTeamProtocol.h; sourceTree = ""; }; + 9B1B729B28002264003FACE9 /* XPMineAnchorFansTeamModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineAnchorFansTeamModel.h; sourceTree = ""; }; + 9B1B729C28002264003FACE9 /* XPMineAnchorFansTeamModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineAnchorFansTeamModel.m; sourceTree = ""; }; + 9B1B729F280023F3003FACE9 /* XPMineAnchorFansTeamTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineAnchorFansTeamTableViewCell.h; sourceTree = ""; }; + 9B1B72A0280023F3003FACE9 /* XPMineAnchorFansTeamTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineAnchorFansTeamTableViewCell.m; sourceTree = ""; }; + 9B1B72AA280031DB003FACE9 /* XPAnchorPKViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorPKViewController.h; sourceTree = ""; }; + 9B1B72AB280031DB003FACE9 /* XPAnchorPKViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorPKViewController.m; sourceTree = ""; }; + 9B1B72AD280031F8003FACE9 /* XPAnchorPKSelectRoomView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorPKSelectRoomView.h; sourceTree = ""; }; + 9B1B72AE280031F8003FACE9 /* XPAnchorPKSelectRoomView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorPKSelectRoomView.m; sourceTree = ""; }; 9B1B72B328003664003FACE9 /* Api+AnchorPk.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+AnchorPk.h"; sourceTree = ""; }; 9B1B72B428003664003FACE9 /* Api+AnchorPk.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+AnchorPk.m"; sourceTree = ""; }; - 9B1B72B628003772003FACE9 /* XCombatellegCombatExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegCombatExternalizer.h; sourceTree = ""; }; - 9B1B72B728003772003FACE9 /* XCombatellegCombatExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatellegCombatExternalizer.m; sourceTree = ""; }; - 9B1B72B9280037C5003FACE9 /* XCombatellegCombatCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegCombatCeremony.h; sourceTree = ""; }; - 9B1B72BA28003E06003FACE9 /* XCombatellegCombatTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegCombatTabulationRegardElement.h; sourceTree = ""; }; - 9B1B72BB28003E06003FACE9 /* XCombatellegCombatTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatellegCombatTabulationRegardElement.m; sourceTree = ""; }; - 9B1B72BD2800422E003FACE9 /* XCombatellegCombatPreadominantRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegCombatPreadominantRegard.h; sourceTree = ""; }; - 9B1B72BE2800422E003FACE9 /* XCombatellegCombatPreadominantRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatellegCombatPreadominantRegard.m; sourceTree = ""; }; - 9B1EF3D027E81C0600554295 /* YUMIManePretendUpwardsIntumesceRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManePretendUpwardsIntumesceRegardGovernancer.h; sourceTree = ""; }; - 9B1EF3D127E81C0600554295 /* YUMIManePretendUpwardsIntumesceRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManePretendUpwardsIntumesceRegardGovernancer.m; sourceTree = ""; }; - 9B1EF3D327E8294B00554295 /* YUMIManePretendDispossessAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManePretendDispossessAssembletionRegardElement.h; sourceTree = ""; }; - 9B1EF3D427E8294B00554295 /* YUMIManePretendDispossessAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManePretendDispossessAssembletionRegardElement.m; sourceTree = ""; }; - 9B1FC3D327E49A5D006EFFE0 /* ChatIntumesceMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChatIntumesceMatrix.h; sourceTree = ""; }; - 9B1FC3D427E49A5D006EFFE0 /* ChatIntumesceMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ChatIntumesceMatrix.m; sourceTree = ""; }; - 9B1FC3D627E49C36006EFFE0 /* YUMIManePretendIntumesceAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManePretendIntumesceAssembletionRegardElement.h; sourceTree = ""; }; - 9B1FC3D727E49C36006EFFE0 /* YUMIManePretendIntumesceAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManePretendIntumesceAssembletionRegardElement.m; sourceTree = ""; }; - 9B208A342779B50100F9E54A /* PresentMagnificentAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PresentMagnificentAbstractMatrix.h; sourceTree = ""; }; - 9B208A352779B50100F9E54A /* PresentMagnificentAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PresentMagnificentAbstractMatrix.m; sourceTree = ""; }; - 9B2489BA27C4C056006CFB85 /* YUMIManeVacationerDispossessTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeVacationerDispossessTabulationRegardElement.h; sourceTree = ""; }; - 9B2489BB27C4C056006CFB85 /* YUMIManeVacationerDispossessTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeVacationerDispossessTabulationRegardElement.m; sourceTree = ""; }; - 9B2A12DC2783FEDD00CED41B /* ConsumerVipAbstractVo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ConsumerVipAbstractVo.h; sourceTree = ""; }; - 9B2A12DD2783FEDD00CED41B /* ConsumerVipAbstractVo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ConsumerVipAbstractVo.m; sourceTree = ""; }; - 9B2EA7BE2804037700ED17BF /* KellegCombatPhaseRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KellegCombatPhaseRegard.h; sourceTree = ""; }; - 9B2EA7BF2804037700ED17BF /* KellegCombatPhaseRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KellegCombatPhaseRegard.m; sourceTree = ""; }; - 9B2EA7C12804052E00ED17BF /* KellegCombatMiecreoscoopeRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KellegCombatMiecreoscoopeRegard.h; sourceTree = ""; }; - 9B2EA7C22804052E00ED17BF /* KellegCombatMiecreoscoopeRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KellegCombatMiecreoscoopeRegard.m; sourceTree = ""; }; - 9B2EA7C428041EFC00ED17BF /* XCombatellegPkFasciaboardRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegPkFasciaboardRegard.h; sourceTree = ""; }; - 9B2EA7C528041EFC00ED17BF /* XCombatellegPkFasciaboardRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatellegPkFasciaboardRegard.m; sourceTree = ""; }; - 9B2EA7CA2804245500ED17BF /* XCombatellegCombatFasciaboardConsumerRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegCombatFasciaboardConsumerRegard.h; sourceTree = ""; }; - 9B2EA7CB2804245500ED17BF /* XCombatellegCombatFasciaboardConsumerRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatellegCombatFasciaboardConsumerRegard.m; sourceTree = ""; }; - 9B2F72CE28E45A480000E4FA /* YUMIChamberMHTuickCommunicationContainRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberMHTuickCommunicationContainRegard.h; sourceTree = ""; }; - 9B2F72CF28E45A480000E4FA /* YUMIChamberMHTuickCommunicationContainRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberMHTuickCommunicationContainRegard.m; sourceTree = ""; }; - 9B2F72D128E45C5A0000E4FA /* YUMIChamberMHTuidkCommunicationElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberMHTuidkCommunicationElement.h; sourceTree = ""; }; - 9B2F72D228E45C5A0000E4FA /* YUMIChamberMHTuidkCommunicationElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberMHTuidkCommunicationElement.m; sourceTree = ""; }; - 9B32A04528881845002009D2 /* YUMIChamberCoupleStatementRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCoupleStatementRegard.h; sourceTree = ""; }; - 9B32A04628881845002009D2 /* YUMIChamberCoupleStatementRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCoupleStatementRegard.m; sourceTree = ""; }; - 9B335B472925D8A00048A116 /* XCombatellegCombatChosenGenreGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegCombatChosenGenreGovernancer.h; sourceTree = ""; }; - 9B335B482925D8A00048A116 /* XCombatellegCombatChosenGenreGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatellegCombatChosenGenreGovernancer.m; sourceTree = ""; }; - 9B33E3C927D85379003B0E62 /* UpwardsloadAccurate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UpwardsloadAccurate.m; sourceTree = ""; }; - 9B33E3CA27D85379003B0E62 /* UpwardsloadAccurate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UpwardsloadAccurate.h; sourceTree = ""; }; - 9B3A1DF2280571000058E2DD /* XCombatellegCombatCallforRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegCombatCallforRegard.h; sourceTree = ""; }; - 9B3A1DF3280571000058E2DD /* XCombatellegCombatCallforRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatellegCombatCallforRegard.m; sourceTree = ""; }; - 9B3C1818292CE4FA003AF543 /* XCombatellegCombatAdaptationRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegCombatAdaptationRegard.h; sourceTree = ""; }; - 9B3C1819292CE4FA003AF543 /* XCombatellegCombatAdaptationRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatellegCombatAdaptationRegard.m; sourceTree = ""; }; - 9B41D36C282649230048C588 /* YUMIWeekSatelliteRateConsumerMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIWeekSatelliteRateConsumerMatrix.h; sourceTree = ""; }; - 9B41D36D282649230048C588 /* YUMIWeekSatelliteRateConsumerMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIWeekSatelliteRateConsumerMatrix.m; sourceTree = ""; }; - 9B42868C28C1AE2D009034D2 /* YUMIAchieveDeficitSheatheRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIAchieveDeficitSheatheRegard.h; sourceTree = ""; }; - 9B42868D28C1AE2D009034D2 /* YUMIAchieveDeficitSheatheRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIAchieveDeficitSheatheRegard.m; sourceTree = ""; }; - 9B42869028C1AED4009034D2 /* YUMIAchieveDeficitSheatheMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIAchieveDeficitSheatheMatrix.h; sourceTree = ""; }; - 9B42869128C1AED4009034D2 /* YUMIAchieveDeficitSheatheMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIAchieveDeficitSheatheMatrix.m; sourceTree = ""; }; - 9B42869328C1E00A009034D2 /* YUMIDeficitSheatheConsequentMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIDeficitSheatheConsequentMatrix.h; sourceTree = ""; }; - 9B42869428C1E00A009034D2 /* YUMIDeficitSheatheConsequentMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIDeficitSheatheConsequentMatrix.m; sourceTree = ""; }; - 9B42869628C1E06B009034D2 /* YUMIDeficitSheatheMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIDeficitSheatheMatrix.h; sourceTree = ""; }; - 9B42869728C1E06B009034D2 /* YUMIDeficitSheatheMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIDeficitSheatheMatrix.m; sourceTree = ""; }; - 9B42869A28C1FD3D009034D2 /* YUMIUnfoildDeficitSheatheElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIUnfoildDeficitSheatheElement.h; sourceTree = ""; }; - 9B42869B28C1FD3D009034D2 /* YUMIUnfoildDeficitSheatheElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIUnfoildDeficitSheatheElement.m; sourceTree = ""; }; - 9B4C5B84292F81FA00CEA41B /* YUMIInterlocutionStatementFanaticsParatiesMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIInterlocutionStatementFanaticsParatiesMatrix.h; sourceTree = ""; }; - 9B4C5B85292F81FA00CEA41B /* YUMIInterlocutionStatementFanaticsParatiesMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIInterlocutionStatementFanaticsParatiesMatrix.m; sourceTree = ""; }; - 9B4D449128F15765002572D5 /* YUMIPresentFortunatePresentPingbackRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPresentFortunatePresentPingbackRegard.h; sourceTree = ""; }; - 9B4D449228F15765002572D5 /* YUMIPresentFortunatePresentPingbackRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPresentFortunatePresentPingbackRegard.m; sourceTree = ""; }; - 9B4D449428F15EE7002572D5 /* YUMIPresentWeekSatellitePingbackRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPresentWeekSatellitePingbackRegard.h; sourceTree = ""; }; - 9B4D449528F15EE7002572D5 /* YUMIPresentWeekSatellitePingbackRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPresentWeekSatellitePingbackRegard.m; sourceTree = ""; }; - 9B4E91FE28E57A620033419E /* YUMIPresentIntelligenceGenreRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPresentIntelligenceGenreRegard.h; sourceTree = ""; }; - 9B4E91FF28E57A620033419E /* YUMIPresentIntelligenceGenreRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPresentIntelligenceGenreRegard.m; sourceTree = ""; }; - 9B6B3AA9278C2EA7005551EC /* YUMIChamberMagnificentPrototypeUpwardsRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberMagnificentPrototypeUpwardsRegard.h; sourceTree = ""; }; - 9B6B3AAA278C2EA7005551EC /* YUMIChamberMagnificentPrototypeUpwardsRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberMagnificentPrototypeUpwardsRegard.m; sourceTree = ""; }; - 9B6E8568281A982A0041A321 /* YUMIChamberEncourageRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberEncourageRegard.h; sourceTree = ""; }; - 9B6E8569281A982A0041A321 /* YUMIChamberEncourageRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberEncourageRegard.m; sourceTree = ""; }; - 9B6E856C281AABAB0041A321 /* YUMIChamberEncourageMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberEncourageMatrix.h; sourceTree = ""; }; - 9B6E856D281AABAB0041A321 /* YUMIChamberEncourageMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberEncourageMatrix.m; sourceTree = ""; }; - 9B6E8571281AB9B20041A321 /* YUMIChamberInsideEncourageElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberInsideEncourageElement.h; sourceTree = ""; }; - 9B6E8572281AB9B20041A321 /* YUMIChamberInsideEncourageElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberInsideEncourageElement.m; sourceTree = ""; }; - 9B6E8575281ABECC0041A321 /* YUMIChamberInsideEncourageDispossessElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberInsideEncourageDispossessElement.h; sourceTree = ""; }; - 9B6E8576281ABECC0041A321 /* YUMIChamberInsideEncourageDispossessElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberInsideEncourageDispossessElement.m; sourceTree = ""; }; - 9B734F71288A787000CBDAA9 /* YUMIManeAccountRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeAccountRegard.h; sourceTree = ""; }; - 9B734F72288A787000CBDAA9 /* YUMIManeAccountRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeAccountRegard.m; sourceTree = ""; }; - 9B734F74288A92FB00CBDAA9 /* YUMIManeFuntionProvisionMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeFuntionProvisionMatrix.h; sourceTree = ""; }; - 9B734F75288A92FB00CBDAA9 /* YUMIManeFuntionProvisionMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeFuntionProvisionMatrix.m; sourceTree = ""; }; - 9B7B605927BB53060070BB72 /* XCombatellegAudienceUpwardsLoudspeakerRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XCombatellegAudienceUpwardsLoudspeakerRegard.h; sourceTree = ""; }; - 9B7B605A27BB53060070BB72 /* XCombatellegAudienceUpwardsLoudspeakerRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XCombatellegAudienceUpwardsLoudspeakerRegard.m; sourceTree = ""; }; - 9B7B606027BB96E40070BB72 /* YUMIChamberKellegAbstractSolitaireRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIChamberKellegAbstractSolitaireRegard.h; sourceTree = ""; }; - 9B7B606127BB96E40070BB72 /* YUMIChamberKellegAbstractSolitaireRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberKellegAbstractSolitaireRegard.m; sourceTree = ""; }; - 9B7B606427BBA0EE0070BB72 /* XCombatellegAttentDischargeAbstract.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegAttentDischargeAbstract.h; sourceTree = ""; }; - 9B7B606527BBA0EE0070BB72 /* XCombatellegAttentDischargeAbstract.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatellegAttentDischargeAbstract.m; sourceTree = ""; }; - 9B7D80482753783D003DAC0C /* InterlocutionRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InterlocutionRegardGovernancer.h; sourceTree = ""; }; - 9B7D80492753783D003DAC0C /* InterlocutionRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InterlocutionRegardGovernancer.m; sourceTree = ""; }; - 9B7D804B27537950003DAC0C /* CommunicationElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationElement.h; sourceTree = ""; }; - 9B7D804C27537950003DAC0C /* CommunicationElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationElement.m; sourceTree = ""; }; + 9B1B72B628003772003FACE9 /* XPAnchorPKPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorPKPresenter.h; sourceTree = ""; }; + 9B1B72B728003772003FACE9 /* XPAnchorPKPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorPKPresenter.m; sourceTree = ""; }; + 9B1B72B9280037C5003FACE9 /* XPAnchorPKProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorPKProtocol.h; sourceTree = ""; }; + 9B1B72BA28003E06003FACE9 /* XPAnchorPKTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorPKTableViewCell.h; sourceTree = ""; }; + 9B1B72BB28003E06003FACE9 /* XPAnchorPKTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorPKTableViewCell.m; sourceTree = ""; }; + 9B1B72BD2800422E003FACE9 /* XPAnchorPKRuleView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorPKRuleView.h; sourceTree = ""; }; + 9B1B72BE2800422E003FACE9 /* XPAnchorPKRuleView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorPKRuleView.m; sourceTree = ""; }; + 9B1EF3D027E81C0600554295 /* XPMineDressUpBubbleViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineDressUpBubbleViewController.h; sourceTree = ""; }; + 9B1EF3D127E81C0600554295 /* XPMineDressUpBubbleViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineDressUpBubbleViewController.m; sourceTree = ""; }; + 9B1EF3D327E8294B00554295 /* XPMineDressEmptyCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineDressEmptyCollectionViewCell.h; sourceTree = ""; }; + 9B1EF3D427E8294B00554295 /* XPMineDressEmptyCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineDressEmptyCollectionViewCell.m; sourceTree = ""; }; + 9B1FC3D327E49A5D006EFFE0 /* ChatBubbleModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChatBubbleModel.h; sourceTree = ""; }; + 9B1FC3D427E49A5D006EFFE0 /* ChatBubbleModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ChatBubbleModel.m; sourceTree = ""; }; + 9B1FC3D627E49C36006EFFE0 /* XPMineDressBubbleCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineDressBubbleCollectionViewCell.h; sourceTree = ""; }; + 9B1FC3D727E49C36006EFFE0 /* XPMineDressBubbleCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineDressBubbleCollectionViewCell.m; sourceTree = ""; }; + 9B208A342779B50100F9E54A /* GiftNobleInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GiftNobleInfoModel.h; sourceTree = ""; }; + 9B208A352779B50100F9E54A /* GiftNobleInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GiftNobleInfoModel.m; sourceTree = ""; }; + 9B2489BA27C4C056006CFB85 /* XPMineVisitorEmptyTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineVisitorEmptyTableViewCell.h; sourceTree = ""; }; + 9B2489BB27C4C056006CFB85 /* XPMineVisitorEmptyTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineVisitorEmptyTableViewCell.m; sourceTree = ""; }; + 9B2A12DC2783FEDD00CED41B /* UserVipInfoVo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UserVipInfoVo.h; sourceTree = ""; }; + 9B2A12DD2783FEDD00CED41B /* UserVipInfoVo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UserVipInfoVo.m; sourceTree = ""; }; + 9B2EA7BE2804037700ED17BF /* AnchorPKStageView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AnchorPKStageView.h; sourceTree = ""; }; + 9B2EA7BF2804037700ED17BF /* AnchorPKStageView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AnchorPKStageView.m; sourceTree = ""; }; + 9B2EA7C12804052E00ED17BF /* AnchorPKMicroView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AnchorPKMicroView.h; sourceTree = ""; }; + 9B2EA7C22804052E00ED17BF /* AnchorPKMicroView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AnchorPKMicroView.m; sourceTree = ""; }; + 9B2EA7C428041EFC00ED17BF /* XPAnchorPkPanelView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorPkPanelView.h; sourceTree = ""; }; + 9B2EA7C528041EFC00ED17BF /* XPAnchorPkPanelView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorPkPanelView.m; sourceTree = ""; }; + 9B2EA7CA2804245500ED17BF /* XPAnchorPKPanelUserView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorPKPanelUserView.h; sourceTree = ""; }; + 9B2EA7CB2804245500ED17BF /* XPAnchorPKPanelUserView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorPKPanelUserView.m; sourceTree = ""; }; + 9B2F72CE28E45A480000E4FA /* XPRoomQuickMessageContainView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomQuickMessageContainView.h; sourceTree = ""; }; + 9B2F72CF28E45A480000E4FA /* XPRoomQuickMessageContainView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomQuickMessageContainView.m; sourceTree = ""; }; + 9B2F72D128E45C5A0000E4FA /* XPRoomQuidkMessageCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomQuidkMessageCell.h; sourceTree = ""; }; + 9B2F72D228E45C5A0000E4FA /* XPRoomQuidkMessageCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomQuidkMessageCell.m; sourceTree = ""; }; + 9B32A04528881845002009D2 /* XPRoomTagListView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomTagListView.h; sourceTree = ""; }; + 9B32A04628881845002009D2 /* XPRoomTagListView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomTagListView.m; sourceTree = ""; }; + 9B335B472925D8A00048A116 /* XPAnchorPKSelectTypeController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorPKSelectTypeController.h; sourceTree = ""; }; + 9B335B482925D8A00048A116 /* XPAnchorPKSelectTypeController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorPKSelectTypeController.m; sourceTree = ""; }; + 9B33E3C927D85379003B0E62 /* UploadFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UploadFile.m; sourceTree = ""; }; + 9B33E3CA27D85379003B0E62 /* UploadFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UploadFile.h; sourceTree = ""; }; + 9B3A1DF2280571000058E2DD /* XPAnchorPKInviteView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorPKInviteView.h; sourceTree = ""; }; + 9B3A1DF3280571000058E2DD /* XPAnchorPKInviteView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorPKInviteView.m; sourceTree = ""; }; + 9B3C1818292CE4FA003AF543 /* XPAnchorPKMatchView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorPKMatchView.h; sourceTree = ""; }; + 9B3C1819292CE4FA003AF543 /* XPAnchorPKMatchView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorPKMatchView.m; sourceTree = ""; }; + 9B41D36C282649230048C588 /* XPWeekStarRankUserModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPWeekStarRankUserModel.h; sourceTree = ""; }; + 9B41D36D282649230048C588 /* XPWeekStarRankUserModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPWeekStarRankUserModel.m; sourceTree = ""; }; + 9B42868C28C1AE2D009034D2 /* XPReceiveRedPacketView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPReceiveRedPacketView.h; sourceTree = ""; }; + 9B42868D28C1AE2D009034D2 /* XPReceiveRedPacketView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPReceiveRedPacketView.m; sourceTree = ""; }; + 9B42869028C1AED4009034D2 /* XPReceiveRedPacketModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPReceiveRedPacketModel.h; sourceTree = ""; }; + 9B42869128C1AED4009034D2 /* XPReceiveRedPacketModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPReceiveRedPacketModel.m; sourceTree = ""; }; + 9B42869328C1E00A009034D2 /* XPRedPacketResultModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRedPacketResultModel.h; sourceTree = ""; }; + 9B42869428C1E00A009034D2 /* XPRedPacketResultModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRedPacketResultModel.m; sourceTree = ""; }; + 9B42869628C1E06B009034D2 /* XPRedPacketModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRedPacketModel.h; sourceTree = ""; }; + 9B42869728C1E06B009034D2 /* XPRedPacketModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRedPacketModel.m; sourceTree = ""; }; + 9B42869A28C1FD3D009034D2 /* XPOpenRedPacketCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPOpenRedPacketCell.h; sourceTree = ""; }; + 9B42869B28C1FD3D009034D2 /* XPOpenRedPacketCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPOpenRedPacketCell.m; sourceTree = ""; }; + 9B4C5B84292F81FA00CEA41B /* XPSessionListFansPartyModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSessionListFansPartyModel.h; sourceTree = ""; }; + 9B4C5B85292F81FA00CEA41B /* XPSessionListFansPartyModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSessionListFansPartyModel.m; sourceTree = ""; }; + 9B4D449128F15765002572D5 /* XPGiftLuckyGiftBroadcastView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftLuckyGiftBroadcastView.h; sourceTree = ""; }; + 9B4D449228F15765002572D5 /* XPGiftLuckyGiftBroadcastView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftLuckyGiftBroadcastView.m; sourceTree = ""; }; + 9B4D449428F15EE7002572D5 /* XPGiftWeekStarBroadcastView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftWeekStarBroadcastView.h; sourceTree = ""; }; + 9B4D449528F15EE7002572D5 /* XPGiftWeekStarBroadcastView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftWeekStarBroadcastView.m; sourceTree = ""; }; + 9B4E91FE28E57A620033419E /* XPGiftHeadTypeView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftHeadTypeView.h; sourceTree = ""; }; + 9B4E91FF28E57A620033419E /* XPGiftHeadTypeView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftHeadTypeView.m; sourceTree = ""; }; + 9B6B3AA9278C2EA7005551EC /* XPRoomNobleLevelUpView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomNobleLevelUpView.h; sourceTree = ""; }; + 9B6B3AAA278C2EA7005551EC /* XPRoomNobleLevelUpView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomNobleLevelUpView.m; sourceTree = ""; }; + 9B6E8568281A982A0041A321 /* XPRoomRecommendView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomRecommendView.h; sourceTree = ""; }; + 9B6E8569281A982A0041A321 /* XPRoomRecommendView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomRecommendView.m; sourceTree = ""; }; + 9B6E856C281AABAB0041A321 /* XPRoomRecommendModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomRecommendModel.h; sourceTree = ""; }; + 9B6E856D281AABAB0041A321 /* XPRoomRecommendModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomRecommendModel.m; sourceTree = ""; }; + 9B6E8571281AB9B20041A321 /* XPRoomInsideRecommendCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomInsideRecommendCell.h; sourceTree = ""; }; + 9B6E8572281AB9B20041A321 /* XPRoomInsideRecommendCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomInsideRecommendCell.m; sourceTree = ""; }; + 9B6E8575281ABECC0041A321 /* XPRoomInsideRecommendEmptyCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomInsideRecommendEmptyCell.h; sourceTree = ""; }; + 9B6E8576281ABECC0041A321 /* XPRoomInsideRecommendEmptyCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomInsideRecommendEmptyCell.m; sourceTree = ""; }; + 9B734F71288A787000CBDAA9 /* XPMineAccountView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineAccountView.h; sourceTree = ""; }; + 9B734F72288A787000CBDAA9 /* XPMineAccountView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineAccountView.m; sourceTree = ""; }; + 9B734F74288A92FB00CBDAA9 /* XPMineFuntionItemModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineFuntionItemModel.h; sourceTree = ""; }; + 9B734F75288A92FB00CBDAA9 /* XPMineFuntionItemModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineFuntionItemModel.m; sourceTree = ""; }; + 9B7B605927BB53060070BB72 /* XPAnchorAudienceUpMicView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPAnchorAudienceUpMicView.h; sourceTree = ""; }; + 9B7B605A27BB53060070BB72 /* XPAnchorAudienceUpMicView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPAnchorAudienceUpMicView.m; sourceTree = ""; }; + 9B7B606027BB96E40070BB72 /* XPRoomAnchorInfoCardView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPRoomAnchorInfoCardView.h; sourceTree = ""; }; + 9B7B606127BB96E40070BB72 /* XPRoomAnchorInfoCardView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPRoomAnchorInfoCardView.m; sourceTree = ""; }; + 9B7B606427BBA0EE0070BB72 /* XPAnchorAttentSendInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorAttentSendInfo.h; sourceTree = ""; }; + 9B7B606527BBA0EE0070BB72 /* XPAnchorAttentSendInfo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorAttentSendInfo.m; sourceTree = ""; }; + 9B7D80482753783D003DAC0C /* SessionViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SessionViewController.h; sourceTree = ""; }; + 9B7D80492753783D003DAC0C /* SessionViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SessionViewController.m; sourceTree = ""; }; + 9B7D804B27537950003DAC0C /* MessageCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageCell.h; sourceTree = ""; }; + 9B7D804C27537950003DAC0C /* MessageCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageCell.m; sourceTree = ""; }; 9B7D804E2753AA9D003DAC0C /* UITableView+NIMScrollToBottom.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UITableView+NIMScrollToBottom.m"; sourceTree = ""; }; 9B7D804F2753AA9D003DAC0C /* UITableView+NIMScrollToBottom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UITableView+NIMScrollToBottom.h"; sourceTree = ""; }; - 9B7D904B287BC5E20033A45E /* KellegChamberScrollRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KellegChamberScrollRegard.h; sourceTree = ""; }; - 9B7D904C287BC5E20033A45E /* KellegChamberScrollRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KellegChamberScrollRegard.m; sourceTree = ""; }; - 9B85B6D5279FDABA00A0A1AC /* YUMIConsumerSolitaireCommunicationSolitaireRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIConsumerSolitaireCommunicationSolitaireRegard.h; sourceTree = ""; }; - 9B85B6D6279FDABA00A0A1AC /* YUMIConsumerSolitaireCommunicationSolitaireRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIConsumerSolitaireCommunicationSolitaireRegard.m; sourceTree = ""; }; - 9B85B6D8279FDC5200A0A1AC /* YUMIConsumerSolitaireCommunicationAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIConsumerSolitaireCommunicationAssembletionRegardElement.h; sourceTree = ""; }; - 9B85B6D9279FDC5200A0A1AC /* YUMIConsumerSolitaireCommunicationAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIConsumerSolitaireCommunicationAssembletionRegardElement.m; sourceTree = ""; }; - 9B85F3512806AB9A006EDF51 /* XCombatellegCombatConsequentRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegCombatConsequentRegard.h; sourceTree = ""; }; - 9B85F3522806AB9A006EDF51 /* XCombatellegCombatConsequentRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatellegCombatConsequentRegard.m; sourceTree = ""; }; - 9B85F3542806DD8A006EDF51 /* XCombatellegCombatFinishRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegCombatFinishRegard.h; sourceTree = ""; }; - 9B85F3552806DD8A006EDF51 /* XCombatellegCombatFinishRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatellegCombatFinishRegard.m; sourceTree = ""; }; - 9B86D8782817DD8400494FCD /* YUMIChamberImportHideTipRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberImportHideTipRegard.h; sourceTree = ""; }; - 9B86D8792817DD8400494FCD /* YUMIChamberImportHideTipRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberImportHideTipRegard.m; sourceTree = ""; }; - 9B86D88128192DC000494FCD /* YUMIChamberRateEntranceRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberRateEntranceRegard.h; sourceTree = ""; }; - 9B86D88228192DC000494FCD /* YUMIChamberRateEntranceRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberRateEntranceRegard.m; sourceTree = ""; }; - 9B86D884281942D200494FCD /* SocialMiecreoscoopeRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SocialMiecreoscoopeRegard.h; sourceTree = ""; }; - 9B86D885281942D200494FCD /* SocialMiecreoscoopeRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SocialMiecreoscoopeRegard.m; sourceTree = ""; }; - 9B87B3CB2926473D00085110 /* YUMIInterlocutionStatementIntelligenceAssistantElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIInterlocutionStatementIntelligenceAssistantElement.h; sourceTree = ""; }; - 9B87B3CC2926473D00085110 /* YUMIInterlocutionStatementIntelligenceAssistantElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIInterlocutionStatementIntelligenceAssistantElement.m; sourceTree = ""; }; - 9B88E20A28C5EB8300D26FBA /* CommunicationSatisfactionDeficitSheatheRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationSatisfactionDeficitSheatheRegard.h; sourceTree = ""; }; - 9B88E20B28C5EB8300D26FBA /* CommunicationSatisfactionDeficitSheatheRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationSatisfactionDeficitSheatheRegard.m; sourceTree = ""; }; - 9B88E20D28C6305400D26FBA /* YUMIChamberHuntforReflectionRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberHuntforReflectionRegardGovernancer.h; sourceTree = ""; }; - 9B88E20E28C6305400D26FBA /* YUMIChamberHuntforReflectionRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberHuntforReflectionRegardGovernancer.m; sourceTree = ""; }; - 9B8DE0DF289CF02900FB6EC2 /* YUMIPresentCompoundMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPresentCompoundMatrix.h; sourceTree = ""; }; - 9B8DE0E0289CF02900FB6EC2 /* YUMIPresentCompoundMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPresentCompoundMatrix.m; sourceTree = ""; }; - 9B8DE0E2289CF7AA00FB6EC2 /* YUMIChamberPresentCompoundRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberPresentCompoundRegard.h; sourceTree = ""; }; - 9B8DE0E3289CF7AA00FB6EC2 /* YUMIChamberPresentCompoundRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberPresentCompoundRegard.m; sourceTree = ""; }; - 9B92A33A2797E38100AD168F /* YUMIManeIntelligenceProvisionTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeIntelligenceProvisionTabulationRegardElement.h; sourceTree = ""; }; - 9B92A33B2797E38100AD168F /* YUMIManeIntelligenceProvisionTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeIntelligenceProvisionTabulationRegardElement.m; sourceTree = ""; }; - 9B9BBF81288FBFB3004E2E74 /* YUMIStrangeConsumerChamberPresentRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIStrangeConsumerChamberPresentRegard.h; sourceTree = ""; }; - 9B9BBF82288FBFB3004E2E74 /* YUMIStrangeConsumerChamberPresentRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIStrangeConsumerChamberPresentRegard.m; sourceTree = ""; }; - 9B9DD948281BC17600DBA903 /* YUMIConfectioneryTimberFurthaerPreadominantElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIConfectioneryTimberFurthaerPreadominantElement.h; sourceTree = ""; }; - 9B9DD949281BC17600DBA903 /* YUMIConfectioneryTimberFurthaerPreadominantElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIConfectioneryTimberFurthaerPreadominantElement.m; sourceTree = ""; }; - 9BA3B409293DCDFD0071DF1C /* YUMIVersionRefurbishMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIVersionRefurbishMatrix.h; sourceTree = ""; }; - 9BA3B40A293DCDFD0071DF1C /* YUMIVersionRefurbishMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIVersionRefurbishMatrix.m; sourceTree = ""; }; - 9BA3B40D293DD2F90071DF1C /* YUMIAscensionRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIAscensionRegard.h; sourceTree = ""; }; - 9BA3B40E293DD2F90071DF1C /* YUMIAscensionRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIAscensionRegard.m; sourceTree = ""; }; - 9BA812D028BF145700783EA7 /* ClientDeficitSheatheMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ClientDeficitSheatheMatrix.h; sourceTree = ""; }; - 9BA812D128BF145700783EA7 /* ClientDeficitSheatheMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ClientDeficitSheatheMatrix.m; sourceTree = ""; }; - 9BA812D428BF52E100783EA7 /* YUMIChamberDischargeDeficitSheatheRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberDischargeDeficitSheatheRegardGovernancer.h; sourceTree = ""; }; - 9BA812D528BF52E100783EA7 /* YUMIChamberDischargeDeficitSheatheRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberDischargeDeficitSheatheRegardGovernancer.m; sourceTree = ""; }; - 9BA812DB28BF6A7300783EA7 /* YUMIChamberDeficitSheatheExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberDeficitSheatheExternalizer.h; sourceTree = ""; }; - 9BA812DC28BF6A7300783EA7 /* YUMIChamberDeficitSheatheExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberDeficitSheatheExternalizer.m; sourceTree = ""; }; + 9B7D904B287BC5E20033A45E /* AnchorRoomScrollView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AnchorRoomScrollView.h; sourceTree = ""; }; + 9B7D904C287BC5E20033A45E /* AnchorRoomScrollView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AnchorRoomScrollView.m; sourceTree = ""; }; + 9B85B6D5279FDABA00A0A1AC /* XPUserCardSkillCardView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPUserCardSkillCardView.h; sourceTree = ""; }; + 9B85B6D6279FDABA00A0A1AC /* XPUserCardSkillCardView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPUserCardSkillCardView.m; sourceTree = ""; }; + 9B85B6D8279FDC5200A0A1AC /* XPUserCardSkillCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPUserCardSkillCollectionViewCell.h; sourceTree = ""; }; + 9B85B6D9279FDC5200A0A1AC /* XPUserCardSkillCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPUserCardSkillCollectionViewCell.m; sourceTree = ""; }; + 9B85F3512806AB9A006EDF51 /* XPAnchorPKResultView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorPKResultView.h; sourceTree = ""; }; + 9B85F3522806AB9A006EDF51 /* XPAnchorPKResultView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorPKResultView.m; sourceTree = ""; }; + 9B85F3542806DD8A006EDF51 /* XPAnchorPKFinishView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorPKFinishView.h; sourceTree = ""; }; + 9B85F3552806DD8A006EDF51 /* XPAnchorPKFinishView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorPKFinishView.m; sourceTree = ""; }; + 9B86D8782817DD8400494FCD /* XPRoomEnterHideTipView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomEnterHideTipView.h; sourceTree = ""; }; + 9B86D8792817DD8400494FCD /* XPRoomEnterHideTipView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomEnterHideTipView.m; sourceTree = ""; }; + 9B86D88128192DC000494FCD /* XPRoomRankEntranceView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomRankEntranceView.h; sourceTree = ""; }; + 9B86D88228192DC000494FCD /* XPRoomRankEntranceView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomRankEntranceView.m; sourceTree = ""; }; + 9B86D884281942D200494FCD /* SocialMicroView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SocialMicroView.h; sourceTree = ""; }; + 9B86D885281942D200494FCD /* SocialMicroView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SocialMicroView.m; sourceTree = ""; }; + 9B87B3CB2926473D00085110 /* XPSessionListHeadFriendCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSessionListHeadFriendCell.h; sourceTree = ""; }; + 9B87B3CC2926473D00085110 /* XPSessionListHeadFriendCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSessionListHeadFriendCell.m; sourceTree = ""; }; + 9B88E20A28C5EB8300D26FBA /* MessageContentRedPacketView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageContentRedPacketView.h; sourceTree = ""; }; + 9B88E20B28C5EB8300D26FBA /* MessageContentRedPacketView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageContentRedPacketView.m; sourceTree = ""; }; + 9B88E20D28C6305400D26FBA /* XPRoomSearchRecordViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomSearchRecordViewController.h; sourceTree = ""; }; + 9B88E20E28C6305400D26FBA /* XPRoomSearchRecordViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomSearchRecordViewController.m; sourceTree = ""; }; + 9B8DE0DF289CF02900FB6EC2 /* XPGiftCompoundModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftCompoundModel.h; sourceTree = ""; }; + 9B8DE0E0289CF02900FB6EC2 /* XPGiftCompoundModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftCompoundModel.m; sourceTree = ""; }; + 9B8DE0E2289CF7AA00FB6EC2 /* XPRoomGiftCompoundView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomGiftCompoundView.h; sourceTree = ""; }; + 9B8DE0E3289CF7AA00FB6EC2 /* XPRoomGiftCompoundView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomGiftCompoundView.m; sourceTree = ""; }; + 9B92A33A2797E38100AD168F /* XPMineHeadItemTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineHeadItemTableViewCell.h; sourceTree = ""; }; + 9B92A33B2797E38100AD168F /* XPMineHeadItemTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineHeadItemTableViewCell.m; sourceTree = ""; }; + 9B9BBF81288FBFB3004E2E74 /* XPNewUserRoomGiftView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPNewUserRoomGiftView.h; sourceTree = ""; }; + 9B9BBF82288FBFB3004E2E74 /* XPNewUserRoomGiftView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPNewUserRoomGiftView.m; sourceTree = ""; }; + 9BA3B409293DCDFD0071DF1C /* XPVersionUpdateModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPVersionUpdateModel.h; sourceTree = ""; }; + 9BA3B40A293DCDFD0071DF1C /* XPVersionUpdateModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPVersionUpdateModel.m; sourceTree = ""; }; + 9BA3B40D293DD2F90071DF1C /* XPUpgradeView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPUpgradeView.h; sourceTree = ""; }; + 9BA3B40E293DD2F90071DF1C /* XPUpgradeView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPUpgradeView.m; sourceTree = ""; }; + 9BA812D028BF145700783EA7 /* ClientRedPacketModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ClientRedPacketModel.h; sourceTree = ""; }; + 9BA812D128BF145700783EA7 /* ClientRedPacketModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ClientRedPacketModel.m; sourceTree = ""; }; + 9BA812D428BF52E100783EA7 /* XPRoomSendRedPacketViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomSendRedPacketViewController.h; sourceTree = ""; }; + 9BA812D528BF52E100783EA7 /* XPRoomSendRedPacketViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomSendRedPacketViewController.m; sourceTree = ""; }; + 9BA812DB28BF6A7300783EA7 /* XPRoomRedPacketPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomRedPacketPresenter.h; sourceTree = ""; }; + 9BA812DC28BF6A7300783EA7 /* XPRoomRedPacketPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomRedPacketPresenter.m; sourceTree = ""; }; 9BA812DE28BF6ABB00783EA7 /* Api+RedPacket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+RedPacket.h"; sourceTree = ""; }; 9BA812DF28BF6ABB00783EA7 /* Api+RedPacket.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+RedPacket.m"; sourceTree = ""; }; - 9BA812E128BF6AFB00783EA7 /* FBCChamberRedPacketCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCChamberRedPacketCeremony.h; sourceTree = ""; }; - 9BA812E228BF70A600783EA7 /* YUMIChamberDeficitSheathePwordRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberDeficitSheathePwordRegard.h; sourceTree = ""; }; - 9BA812E328BF70A600783EA7 /* YUMIChamberDeficitSheathePwordRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberDeficitSheathePwordRegard.m; sourceTree = ""; }; + 9BA812E128BF6AFB00783EA7 /* XPRoomRedPacketProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomRedPacketProtocol.h; sourceTree = ""; }; + 9BA812E228BF70A600783EA7 /* XPRoomRedPacketPwdView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomRedPacketPwdView.h; sourceTree = ""; }; + 9BA812E328BF70A600783EA7 /* XPRoomRedPacketPwdView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomRedPacketPwdView.m; sourceTree = ""; }; 9BA8A47427C60D9F000365A3 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; 9BA8A47627C60DF7000365A3 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; - 9BAA5FEB277A1BBE007453F3 /* YUMIPrivacyRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPrivacyRegardGovernancer.h; sourceTree = ""; }; - 9BAA5FEC277A1BBE007453F3 /* YUMIPrivacyRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPrivacyRegardGovernancer.m; sourceTree = ""; }; - 9BAA5FEE277A23F4007453F3 /* YUMIPermissionsRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPermissionsRegardGovernancer.h; sourceTree = ""; }; - 9BAA5FEF277A23F4007453F3 /* YUMIPermissionsRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPermissionsRegardGovernancer.m; sourceTree = ""; }; - 9BAC92EC28E6989400147DD8 /* YUMIChamberImportpriseDisportRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberImportpriseDisportRegard.h; sourceTree = ""; }; - 9BAC92ED28E6989400147DD8 /* YUMIChamberImportpriseDisportRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberImportpriseDisportRegard.m; sourceTree = ""; }; - 9BAC92F028E6A05600147DD8 /* YUMIChamberImportpriseDisportMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberImportpriseDisportMatrix.h; sourceTree = ""; }; - 9BAC92F128E6A05600147DD8 /* YUMIChamberImportpriseDisportMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberImportpriseDisportMatrix.m; sourceTree = ""; }; - 9BAC92F328E6E63000147DD8 /* YUMIChamberInsideOperationElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberInsideOperationElement.h; sourceTree = ""; }; - 9BAC92F428E6E63000147DD8 /* YUMIChamberInsideOperationElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberInsideOperationElement.m; sourceTree = ""; }; - 9BAD41AD28C6ECBA005E47B3 /* FBCInChamberRecordCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCInChamberRecordCeremony.h; sourceTree = ""; }; - 9BB865B4272076140029CDE0 /* RtcImplRepresendtation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RtcImplRepresendtation.h; sourceTree = ""; }; - 9BB89DC127FE7F3A00586A83 /* XCombatellegFanaticsRelationMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegFanaticsRelationMatrix.h; sourceTree = ""; }; - 9BB89DC227FE7F3A00586A83 /* XCombatellegFanaticsRelationMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatellegFanaticsRelationMatrix.m; sourceTree = ""; }; - 9BB89DC427FEB9E100586A83 /* XCombatellegFanaticsmissionRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegFanaticsmissionRegardGovernancer.h; sourceTree = ""; }; - 9BB89DC527FEB9E100586A83 /* XCombatellegFanaticsmissionRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatellegFanaticsmissionRegardGovernancer.m; sourceTree = ""; }; - 9BBC028C2786FA060007C24B /* MagnificentSolitaireMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MagnificentSolitaireMatrix.h; sourceTree = ""; }; - 9BBC028D2786FA060007C24B /* MagnificentSolitaireMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MagnificentSolitaireMatrix.m; sourceTree = ""; }; - 9BBC028F2786FC570007C24B /* YUMIManeMagnificentSolitaireTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeMagnificentSolitaireTabulationRegardElement.h; sourceTree = ""; }; - 9BBC02902786FC570007C24B /* YUMIManeMagnificentSolitaireTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeMagnificentSolitaireTabulationRegardElement.m; sourceTree = ""; }; - 9BC5C91A277C8A7B007C8719 /* YUMIReleaseWirelessRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIReleaseWirelessRegardGovernancer.h; sourceTree = ""; }; - 9BC5C91B277C8A7B007C8719 /* YUMIReleaseWirelessRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIReleaseWirelessRegardGovernancer.m; sourceTree = ""; }; - 9BC5C91D277C902B007C8719 /* YUMIReleaseWirelessRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIReleaseWirelessRegard.h; sourceTree = ""; }; - 9BC5C91E277C902B007C8719 /* YUMIReleaseWirelessRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIReleaseWirelessRegard.m; sourceTree = ""; }; - 9BC8C82E28090C9200C24F85 /* YUMIChamberKellegRateOriflammeRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberKellegRateOriflammeRegard.h; sourceTree = ""; }; - 9BC8C82F28090C9200C24F85 /* YUMIChamberKellegRateOriflammeRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberKellegRateOriflammeRegard.m; sourceTree = ""; }; - 9BC9DAED27E33B3F009EE409 /* YUMIChamberPresentBrightnessAnatomiser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberPresentBrightnessAnatomiser.h; sourceTree = ""; }; - 9BC9DAEE27E33B3F009EE409 /* YUMIChamberPresentBrightnessAnatomiser.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberPresentBrightnessAnatomiser.m; sourceTree = ""; }; - 9BCB999E28F571B500466D64 /* YUMIManeAssembleParatiesChamberRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeAssembleParatiesChamberRegardGovernancer.h; sourceTree = ""; }; - 9BCB999F28F571B500466D64 /* YUMIManeAssembleParatiesChamberRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeAssembleParatiesChamberRegardGovernancer.m; sourceTree = ""; }; - 9BCB99A428F582EC00466D64 /* YUMIManeAssembleChamberCompileElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeAssembleChamberCompileElement.h; sourceTree = ""; }; - 9BCB99A528F582EC00466D64 /* YUMIManeAssembleChamberCompileElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeAssembleChamberCompileElement.m; sourceTree = ""; }; - 9BCD02C52796C02800F396AA /* MiecreoscoopeMagnificentWaveRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MiecreoscoopeMagnificentWaveRegard.h; sourceTree = ""; }; - 9BCD02C62796C02800F396AA /* MiecreoscoopeMagnificentWaveRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MiecreoscoopeMagnificentWaveRegard.m; sourceTree = ""; }; - 9BCE6142277D657600CC0358 /* YUMIReleaseWirelessTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIReleaseWirelessTabulationRegardElement.h; sourceTree = ""; }; - 9BCE6143277D657600CC0358 /* YUMIReleaseWirelessTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIReleaseWirelessTabulationRegardElement.m; sourceTree = ""; }; - 9BCFB826289BAC7D0093D863 /* YUMIManeIntelligenceFunctionProvisionProgramming.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeIntelligenceFunctionProvisionProgramming.h; sourceTree = ""; }; - 9BCFB827289BAC7D0093D863 /* YUMIManeIntelligenceFunctionProvisionProgramming.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeIntelligenceFunctionProvisionProgramming.m; sourceTree = ""; }; - 9BD2ECCC288F829600F5CD9A /* YUMIManeTerminalImpressionRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeTerminalImpressionRegardGovernancer.h; sourceTree = ""; }; - 9BD2ECCD288F829600F5CD9A /* YUMIManeTerminalImpressionRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeTerminalImpressionRegardGovernancer.m; sourceTree = ""; }; - 9BD2ECD0288F833B00F5CD9A /* YUMIManeTerminalImpressionMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeTerminalImpressionMatrix.h; sourceTree = ""; }; - 9BD2ECD1288F833B00F5CD9A /* YUMIManeTerminalImpressionMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeTerminalImpressionMatrix.m; sourceTree = ""; }; - 9BD2ECD3288F838200F5CD9A /* YUMIManeTerminalImpressionExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeTerminalImpressionExternalizer.h; sourceTree = ""; }; - 9BD2ECD4288F838200F5CD9A /* YUMIManeTerminalImpressionExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeTerminalImpressionExternalizer.m; sourceTree = ""; }; - 9BD2ECD6288F849300F5CD9A /* FBCManeFootPrintCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCManeFootPrintCeremony.h; sourceTree = ""; }; - 9BD2ECD8288F867000F5CD9A /* YUMIManeTerminalImpressionTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeTerminalImpressionTabulationRegardElement.h; sourceTree = ""; }; - 9BD2ECD9288F867000F5CD9A /* YUMIManeTerminalImpressionTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeTerminalImpressionTabulationRegardElement.m; sourceTree = ""; }; + 9BAA5FEB277A1BBE007453F3 /* XPPrivacyViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPPrivacyViewController.h; sourceTree = ""; }; + 9BAA5FEC277A1BBE007453F3 /* XPPrivacyViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPPrivacyViewController.m; sourceTree = ""; }; + 9BAA5FEE277A23F4007453F3 /* XPPermissionsViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPPermissionsViewController.h; sourceTree = ""; }; + 9BAA5FEF277A23F4007453F3 /* XPPermissionsViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPPermissionsViewController.m; sourceTree = ""; }; + 9BAC92EC28E6989400147DD8 /* XPRoomActivityPlayView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomActivityPlayView.h; sourceTree = ""; }; + 9BAC92ED28E6989400147DD8 /* XPRoomActivityPlayView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomActivityPlayView.m; sourceTree = ""; }; + 9BAC92F028E6A05600147DD8 /* XPRoomActivityPlayModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomActivityPlayModel.h; sourceTree = ""; }; + 9BAC92F128E6A05600147DD8 /* XPRoomActivityPlayModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomActivityPlayModel.m; sourceTree = ""; }; + 9BAC92F328E6E63000147DD8 /* XPRoomInsideOperationCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomInsideOperationCell.h; sourceTree = ""; }; + 9BAC92F428E6E63000147DD8 /* XPRoomInsideOperationCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomInsideOperationCell.m; sourceTree = ""; }; + 9BAD41AD28C6ECBA005E47B3 /* XPInRoomRecordProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPInRoomRecordProtocol.h; sourceTree = ""; }; + 9BB865B4272076140029CDE0 /* RtcImplDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RtcImplDelegate.h; sourceTree = ""; }; + 9BB89DC127FE7F3A00586A83 /* XPAnchorFansRelationModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorFansRelationModel.h; sourceTree = ""; }; + 9BB89DC227FE7F3A00586A83 /* XPAnchorFansRelationModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorFansRelationModel.m; sourceTree = ""; }; + 9BB89DC427FEB9E100586A83 /* XPAnchorFansTaskViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorFansTaskViewController.h; sourceTree = ""; }; + 9BB89DC527FEB9E100586A83 /* XPAnchorFansTaskViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorFansTaskViewController.m; sourceTree = ""; }; + 9BBC028C2786FA060007C24B /* NobleCardModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NobleCardModel.h; sourceTree = ""; }; + 9BBC028D2786FA060007C24B /* NobleCardModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NobleCardModel.m; sourceTree = ""; }; + 9BBC028F2786FC570007C24B /* XPMineNobleCardTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineNobleCardTableViewCell.h; sourceTree = ""; }; + 9BBC02902786FC570007C24B /* XPMineNobleCardTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineNobleCardTableViewCell.m; sourceTree = ""; }; + 9BC5C91A277C8A7B007C8719 /* XPReleaseRadioViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPReleaseRadioViewController.h; sourceTree = ""; }; + 9BC5C91B277C8A7B007C8719 /* XPReleaseRadioViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPReleaseRadioViewController.m; sourceTree = ""; }; + 9BC5C91D277C902B007C8719 /* XPReleaseRadioView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPReleaseRadioView.h; sourceTree = ""; }; + 9BC5C91E277C902B007C8719 /* XPReleaseRadioView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPReleaseRadioView.m; sourceTree = ""; }; + 9BC8C82E28090C9200C24F85 /* XPRoomAnchorRankBannerView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomAnchorRankBannerView.h; sourceTree = ""; }; + 9BC8C82F28090C9200C24F85 /* XPRoomAnchorRankBannerView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomAnchorRankBannerView.m; sourceTree = ""; }; + 9BC9DAED27E33B3F009EE409 /* XPRoomGiftAnimationParser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomGiftAnimationParser.h; sourceTree = ""; }; + 9BC9DAEE27E33B3F009EE409 /* XPRoomGiftAnimationParser.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomGiftAnimationParser.m; sourceTree = ""; }; + 9BCB999E28F571B500466D64 /* XPMineCollectPartyRoomViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineCollectPartyRoomViewController.h; sourceTree = ""; }; + 9BCB999F28F571B500466D64 /* XPMineCollectPartyRoomViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineCollectPartyRoomViewController.m; sourceTree = ""; }; + 9BCB99A428F582EC00466D64 /* XPMineCollectRoomEditCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineCollectRoomEditCell.h; sourceTree = ""; }; + 9BCB99A528F582EC00466D64 /* XPMineCollectRoomEditCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineCollectRoomEditCell.m; sourceTree = ""; }; + 9BCD02C52796C02800F396AA /* MicroNobleWaveView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MicroNobleWaveView.h; sourceTree = ""; }; + 9BCD02C62796C02800F396AA /* MicroNobleWaveView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MicroNobleWaveView.m; sourceTree = ""; }; + 9BCE6142277D657600CC0358 /* XPReleaseRadioTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPReleaseRadioTableViewCell.h; sourceTree = ""; }; + 9BCE6143277D657600CC0358 /* XPReleaseRadioTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPReleaseRadioTableViewCell.m; sourceTree = ""; }; + 9BCFB826289BAC7D0093D863 /* XPMineHeadFunctionItemLayout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineHeadFunctionItemLayout.h; sourceTree = ""; }; + 9BCFB827289BAC7D0093D863 /* XPMineHeadFunctionItemLayout.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineHeadFunctionItemLayout.m; sourceTree = ""; }; + 9BD2ECCC288F829600F5CD9A /* XPMineFootPrintViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineFootPrintViewController.h; sourceTree = ""; }; + 9BD2ECCD288F829600F5CD9A /* XPMineFootPrintViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineFootPrintViewController.m; sourceTree = ""; }; + 9BD2ECD0288F833B00F5CD9A /* XPMineFootPrintModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineFootPrintModel.h; sourceTree = ""; }; + 9BD2ECD1288F833B00F5CD9A /* XPMineFootPrintModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineFootPrintModel.m; sourceTree = ""; }; + 9BD2ECD3288F838200F5CD9A /* XPMineFootPrintPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineFootPrintPresenter.h; sourceTree = ""; }; + 9BD2ECD4288F838200F5CD9A /* XPMineFootPrintPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineFootPrintPresenter.m; sourceTree = ""; }; + 9BD2ECD6288F849300F5CD9A /* XPMineFootPrintProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineFootPrintProtocol.h; sourceTree = ""; }; + 9BD2ECD8288F867000F5CD9A /* XPMineFootPrintTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineFootPrintTableViewCell.h; sourceTree = ""; }; + 9BD2ECD9288F867000F5CD9A /* XPMineFootPrintTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineFootPrintTableViewCell.m; sourceTree = ""; }; 9BD63FA9277EE885006EB744 /* Api+RoomRadio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+RoomRadio.h"; sourceTree = ""; }; 9BD63FAA277EE885006EB744 /* Api+RoomRadio.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+RoomRadio.m"; sourceTree = ""; }; - 9BD63FAC277EE97A006EB744 /* YUMIReleaseWirelessExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIReleaseWirelessExternalizer.h; sourceTree = ""; }; - 9BD63FAD277EE97A006EB744 /* YUMIReleaseWirelessExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIReleaseWirelessExternalizer.m; sourceTree = ""; }; - 9BD63FB1277EF14A006EB744 /* FBCReleaseRadioCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCReleaseRadioCeremony.h; sourceTree = ""; }; - 9BD63FB2277EF1B3006EB744 /* YUMIReleaseWirelessMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIReleaseWirelessMatrix.h; sourceTree = ""; }; - 9BD63FB3277EF1B3006EB744 /* YUMIReleaseWirelessMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIReleaseWirelessMatrix.m; sourceTree = ""; }; - 9BD798AF29262434003E03E6 /* YUMIInterlocutionStatementIntelligenceRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIInterlocutionStatementIntelligenceRegard.h; sourceTree = ""; }; - 9BD798B029262434003E03E6 /* YUMIInterlocutionStatementIntelligenceRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIInterlocutionStatementIntelligenceRegard.m; sourceTree = ""; }; - 9BD798B2292632FE003E03E6 /* YUMIInterlocutionStatementIntelligenceProvisionRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIInterlocutionStatementIntelligenceProvisionRegard.h; sourceTree = ""; }; - 9BD798B3292632FE003E03E6 /* YUMIInterlocutionStatementIntelligenceProvisionRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIInterlocutionStatementIntelligenceProvisionRegard.m; sourceTree = ""; }; - 9BD798B52926362F003E03E6 /* YUMIInterlocutionStatementIntelligenceProvision.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIInterlocutionStatementIntelligenceProvision.h; sourceTree = ""; }; - 9BD798B62926362F003E03E6 /* YUMIInterlocutionStatementIntelligenceProvision.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIInterlocutionStatementIntelligenceProvision.m; sourceTree = ""; }; - 9BD8D4E128911E9900AE03FF /* YUMIManeAssembleChamberStatementRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeAssembleChamberStatementRegardGovernancer.h; sourceTree = ""; }; - 9BD8D4E228911E9900AE03FF /* YUMIManeAssembleChamberStatementRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeAssembleChamberStatementRegardGovernancer.m; sourceTree = ""; }; - 9BD8D4E428911F7700AE03FF /* YUMIManeAssembleChamberStatementExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeAssembleChamberStatementExternalizer.h; sourceTree = ""; }; - 9BD8D4E528911F7700AE03FF /* YUMIManeAssembleChamberStatementExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeAssembleChamberStatementExternalizer.m; sourceTree = ""; }; - 9BD8D4E728911FBD00AE03FF /* FBCManeCollectChamberStatementCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCManeCollectChamberStatementCeremony.h; sourceTree = ""; }; - 9BD9A17627A0E953004186FE /* FBCManeVisitorCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCManeVisitorCeremony.h; sourceTree = ""; }; - 9BD9A17727A0EC57004186FE /* YUMIManeVacationerExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeVacationerExternalizer.h; sourceTree = ""; }; - 9BD9A17827A0EC57004186FE /* YUMIManeVacationerExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeVacationerExternalizer.m; sourceTree = ""; }; - 9BD9A17A27A0EE24004186FE /* YUMIManeVacationerRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeVacationerRegardGovernancer.h; sourceTree = ""; }; - 9BD9A17B27A0EE24004186FE /* YUMIManeVacationerRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeVacationerRegardGovernancer.m; sourceTree = ""; }; - 9BD9A17E27A0EFC7004186FE /* YUMIManeVacationerTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeVacationerTabulationRegardElement.h; sourceTree = ""; }; - 9BD9A17F27A0EFC7004186FE /* YUMIManeVacationerTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeVacationerTabulationRegardElement.m; sourceTree = ""; }; - 9BD9A18227A0F128004186FE /* YUMIManeVacationerProvisionMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeVacationerProvisionMatrix.h; sourceTree = ""; }; - 9BD9A18327A0F128004186FE /* YUMIManeVacationerProvisionMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeVacationerProvisionMatrix.m; sourceTree = ""; }; - 9BD9A18527A120FD004186FE /* YUMIManeVacationerUnReadMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeVacationerUnReadMatrix.h; sourceTree = ""; }; - 9BD9A18627A120FD004186FE /* YUMIManeVacationerUnReadMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeVacationerUnReadMatrix.m; sourceTree = ""; }; - 9BDA3E7527FD41C200517FE6 /* XCombatellegFanaticsSquadRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegFanaticsSquadRegardGovernancer.h; sourceTree = ""; }; - 9BDA3E7627FD41C200517FE6 /* XCombatellegFanaticsSquadRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatellegFanaticsSquadRegardGovernancer.m; sourceTree = ""; }; - 9BDA3E7827FD43EF00517FE6 /* XCombatellegFanaticsSquadEntranceRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegFanaticsSquadEntranceRegard.h; sourceTree = ""; }; - 9BDA3E7927FD43EF00517FE6 /* XCombatellegFanaticsSquadEntranceRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatellegFanaticsSquadEntranceRegard.m; sourceTree = ""; }; - 9BDA3E7B27FD47AB00517FE6 /* XCombatellegFanaticsSquadExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegFanaticsSquadExternalizer.h; sourceTree = ""; }; - 9BDA3E7C27FD47AB00517FE6 /* XCombatellegFanaticsSquadExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatellegFanaticsSquadExternalizer.m; sourceTree = ""; }; - 9BDA3E7F27FD480D00517FE6 /* XCombatellegFanaticsTeamCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegFanaticsTeamCeremony.h; sourceTree = ""; }; - 9BE01ACC28925F7D00B50299 /* YUMIManeStrangeConsumerReindictRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeStrangeConsumerReindictRegard.h; sourceTree = ""; }; - 9BE01ACD28925F7D00B50299 /* YUMIManeStrangeConsumerReindictRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeStrangeConsumerReindictRegard.m; sourceTree = ""; }; - 9BE01ACF28927AC000B50299 /* YUMIPretendUpwardsProcurementRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPretendUpwardsProcurementRegardGovernancer.h; sourceTree = ""; }; - 9BE01AD028927AC000B50299 /* YUMIPretendUpwardsProcurementRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPretendUpwardsProcurementRegardGovernancer.m; sourceTree = ""; }; - 9BE01AD228927E9C00B50299 /* YUMIPretendUpwardsProcurementStatementRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPretendUpwardsProcurementStatementRegardGovernancer.h; sourceTree = ""; }; - 9BE01AD328927E9C00B50299 /* YUMIPretendUpwardsProcurementStatementRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPretendUpwardsProcurementStatementRegardGovernancer.m; sourceTree = ""; }; - 9BE01AD8289296B500B50299 /* YUMIPretendUpwardsProcurementExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPretendUpwardsProcurementExternalizer.h; sourceTree = ""; }; - 9BE01AD9289296B500B50299 /* YUMIPretendUpwardsProcurementExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPretendUpwardsProcurementExternalizer.m; sourceTree = ""; }; - 9BE01ADB2892975000B50299 /* FBCPretendedProcurementCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCPretendedProcurementCeremony.h; sourceTree = ""; }; - 9BE01ADC2892A66D00B50299 /* PretendUpwardsProcurementMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PretendUpwardsProcurementMatrix.h; sourceTree = ""; }; - 9BE01ADD2892A66D00B50299 /* PretendUpwardsProcurementMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PretendUpwardsProcurementMatrix.m; sourceTree = ""; }; - 9BE01ADF28937DBC00B50299 /* YUMIPretendUpwardsProcurementSolitaireRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPretendUpwardsProcurementSolitaireRegardGovernancer.h; sourceTree = ""; }; - 9BE01AE028937DBC00B50299 /* YUMIPretendUpwardsProcurementSolitaireRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPretendUpwardsProcurementSolitaireRegardGovernancer.m; sourceTree = ""; }; - 9BE01AE228937EDE00B50299 /* YUMIPretendUpwardsProcurementAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPretendUpwardsProcurementAssembletionRegardElement.h; sourceTree = ""; }; - 9BE01AE328937EDE00B50299 /* YUMIPretendUpwardsProcurementAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPretendUpwardsProcurementAssembletionRegardElement.m; sourceTree = ""; }; - 9BE01AE528938AB600B50299 /* YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement.h; sourceTree = ""; }; - 9BE01AE628938AB600B50299 /* YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement.m; sourceTree = ""; }; - 9BE01AE82893CB4400B50299 /* YUMIPretendHuntforRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPretendHuntforRegardGovernancer.h; sourceTree = ""; }; - 9BE01AE92893CB4400B50299 /* YUMIPretendHuntforRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPretendHuntforRegardGovernancer.m; sourceTree = ""; }; - 9BE01AEB2893D0DF00B50299 /* YUMIPretendProcurementHuntforTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPretendProcurementHuntforTabulationRegardElement.h; sourceTree = ""; }; - 9BE01AEC2893D0DF00B50299 /* YUMIPretendProcurementHuntforTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPretendProcurementHuntforTabulationRegardElement.m; sourceTree = ""; }; - 9BE01AEE2893E31700B50299 /* StrangeConsumerReindictMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StrangeConsumerReindictMatrix.h; sourceTree = ""; }; - 9BE01AEF2893E31700B50299 /* StrangeConsumerReindictMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StrangeConsumerReindictMatrix.m; sourceTree = ""; }; - 9BE01AF52893E7F500B50299 /* YUMIStrangeConsumerReindictAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIStrangeConsumerReindictAssembletionRegardElement.h; sourceTree = ""; }; - 9BE01AF62893E7F500B50299 /* YUMIStrangeConsumerReindictAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIStrangeConsumerReindictAssembletionRegardElement.m; sourceTree = ""; }; - 9BE2FA8E288010D300EF3D83 /* KellegChamberSrollTipRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KellegChamberSrollTipRegard.h; sourceTree = ""; }; - 9BE2FA8F288010D300EF3D83 /* KellegChamberSrollTipRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KellegChamberSrollTipRegard.m; sourceTree = ""; }; - 9BE570BA28F65B7200D491A5 /* YUMIManeAssembleChamberElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeAssembleChamberElement.h; sourceTree = ""; }; - 9BE570BB28F65B7200D491A5 /* YUMIManeAssembleChamberElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeAssembleChamberElement.m; sourceTree = ""; }; - 9BE9F0F727FED12D00667200 /* XCombatellegFanaticsPrivilegeMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegFanaticsPrivilegeMatrix.h; sourceTree = ""; }; - 9BE9F0F827FED12D00667200 /* XCombatellegFanaticsPrivilegeMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatellegFanaticsPrivilegeMatrix.m; sourceTree = ""; }; - 9BE9F0FA27FED2E100667200 /* XCombatellegFanaticsJoinMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegFanaticsJoinMatrix.h; sourceTree = ""; }; - 9BE9F0FB27FED2E100667200 /* XCombatellegFanaticsJoinMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatellegFanaticsJoinMatrix.m; sourceTree = ""; }; - 9BE9F0FD27FED76500667200 /* XCombatellegFanaticsmissionMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegFanaticsmissionMatrix.h; sourceTree = ""; }; - 9BE9F0FE27FED76500667200 /* XCombatellegFanaticsmissionMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatellegFanaticsmissionMatrix.m; sourceTree = ""; }; - 9BE9F10027FEE5C200667200 /* XCombatellegFanaticsmissionSpecificMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegFanaticsmissionSpecificMatrix.h; sourceTree = ""; }; - 9BE9F10127FEE5C200667200 /* XCombatellegFanaticsmissionSpecificMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatellegFanaticsmissionSpecificMatrix.m; sourceTree = ""; }; - 9BE9F10327FF04CF00667200 /* XCombatellegFanaticsmissionTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegFanaticsmissionTabulationRegardElement.h; sourceTree = ""; }; - 9BE9F10427FF04CF00667200 /* XCombatellegFanaticsmissionTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatellegFanaticsmissionTabulationRegardElement.m; sourceTree = ""; }; - 9BF4BEBA28D4182E009CF6C2 /* YUMIUnfoildDeficitSheatheMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIUnfoildDeficitSheatheMatrix.h; sourceTree = ""; }; - 9BF4BEBB28D4182E009CF6C2 /* YUMIUnfoildDeficitSheatheMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIUnfoildDeficitSheatheMatrix.m; sourceTree = ""; }; - 9BF5192428801D4700B6BE92 /* YUMIThroughoutChamberCombatComputationDownRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIThroughoutChamberCombatComputationDownRegard.h; sourceTree = ""; }; - 9BF5192528801D4700B6BE92 /* YUMIThroughoutChamberCombatComputationDownRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIThroughoutChamberCombatComputationDownRegard.m; sourceTree = ""; }; - 9BFB101D2897CC4300B3985E /* XCombatellegSolitaireRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegSolitaireRegard.h; sourceTree = ""; }; - 9BFB101E2897CC4300B3985E /* XCombatellegSolitaireRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatellegSolitaireRegard.m; sourceTree = ""; }; - 9BFB10202897D68400B3985E /* YUMITabKellegSolitaireMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMITabKellegSolitaireMatrix.h; sourceTree = ""; }; - 9BFB10212897D68400B3985E /* YUMITabKellegSolitaireMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMITabKellegSolitaireMatrix.m; sourceTree = ""; }; - 9BFE0D8C2898C8C300F53C24 /* XCombatellegSolitaireCommunicationAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegSolitaireCommunicationAssembletionRegardElement.h; sourceTree = ""; }; - 9BFE0D8D2898C8C300F53C24 /* XCombatellegSolitaireCommunicationAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatellegSolitaireCommunicationAssembletionRegardElement.m; sourceTree = ""; }; - 9BFE0D902899042600F53C24 /* YUMImissionCompleteTipRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMImissionCompleteTipRegard.h; sourceTree = ""; }; - 9BFE0D912899042600F53C24 /* YUMImissionCompleteTipRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMImissionCompleteTipRegard.m; sourceTree = ""; }; - 9BFE992C288142FD009DA429 /* ChamberClassifyMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChamberClassifyMatrix.h; sourceTree = ""; }; - 9BFE992D288142FD009DA429 /* ChamberClassifyMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ChamberClassifyMatrix.m; sourceTree = ""; }; + 9BD63FAC277EE97A006EB744 /* XPReleaseRadioPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPReleaseRadioPresenter.h; sourceTree = ""; }; + 9BD63FAD277EE97A006EB744 /* XPReleaseRadioPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPReleaseRadioPresenter.m; sourceTree = ""; }; + 9BD63FB1277EF14A006EB744 /* XPReleaseRadioProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPReleaseRadioProtocol.h; sourceTree = ""; }; + 9BD63FB2277EF1B3006EB744 /* XPReleaseRadioModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPReleaseRadioModel.h; sourceTree = ""; }; + 9BD63FB3277EF1B3006EB744 /* XPReleaseRadioModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPReleaseRadioModel.m; sourceTree = ""; }; + 9BD798AF29262434003E03E6 /* XPSessionListHeadView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSessionListHeadView.h; sourceTree = ""; }; + 9BD798B029262434003E03E6 /* XPSessionListHeadView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSessionListHeadView.m; sourceTree = ""; }; + 9BD798B2292632FE003E03E6 /* XPSessionListHeadItemView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSessionListHeadItemView.h; sourceTree = ""; }; + 9BD798B3292632FE003E03E6 /* XPSessionListHeadItemView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSessionListHeadItemView.m; sourceTree = ""; }; + 9BD798B52926362F003E03E6 /* XPSessionListHeadItem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSessionListHeadItem.h; sourceTree = ""; }; + 9BD798B62926362F003E03E6 /* XPSessionListHeadItem.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSessionListHeadItem.m; sourceTree = ""; }; + 9BD8D4E128911E9900AE03FF /* XPMineCollectRoomListViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineCollectRoomListViewController.h; sourceTree = ""; }; + 9BD8D4E228911E9900AE03FF /* XPMineCollectRoomListViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineCollectRoomListViewController.m; sourceTree = ""; }; + 9BD8D4E428911F7700AE03FF /* XPMineCollectRoomListPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineCollectRoomListPresenter.h; sourceTree = ""; }; + 9BD8D4E528911F7700AE03FF /* XPMineCollectRoomListPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineCollectRoomListPresenter.m; sourceTree = ""; }; + 9BD8D4E728911FBD00AE03FF /* XPMineCollectRoomListProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineCollectRoomListProtocol.h; sourceTree = ""; }; + 9BD9A17627A0E953004186FE /* XPMineVisitorProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineVisitorProtocol.h; sourceTree = ""; }; + 9BD9A17727A0EC57004186FE /* XPMineVisitorPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineVisitorPresenter.h; sourceTree = ""; }; + 9BD9A17827A0EC57004186FE /* XPMineVisitorPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineVisitorPresenter.m; sourceTree = ""; }; + 9BD9A17A27A0EE24004186FE /* XPMineVisitorViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineVisitorViewController.h; sourceTree = ""; }; + 9BD9A17B27A0EE24004186FE /* XPMineVisitorViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineVisitorViewController.m; sourceTree = ""; }; + 9BD9A17E27A0EFC7004186FE /* XPMineVisitorTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineVisitorTableViewCell.h; sourceTree = ""; }; + 9BD9A17F27A0EFC7004186FE /* XPMineVisitorTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineVisitorTableViewCell.m; sourceTree = ""; }; + 9BD9A18227A0F128004186FE /* XPMineVisitorItemModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineVisitorItemModel.h; sourceTree = ""; }; + 9BD9A18327A0F128004186FE /* XPMineVisitorItemModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineVisitorItemModel.m; sourceTree = ""; }; + 9BD9A18527A120FD004186FE /* XPMineVisitorUnReadModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineVisitorUnReadModel.h; sourceTree = ""; }; + 9BD9A18627A120FD004186FE /* XPMineVisitorUnReadModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineVisitorUnReadModel.m; sourceTree = ""; }; + 9BDA3E7527FD41C200517FE6 /* XPAnchorFansTeamViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorFansTeamViewController.h; sourceTree = ""; }; + 9BDA3E7627FD41C200517FE6 /* XPAnchorFansTeamViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorFansTeamViewController.m; sourceTree = ""; }; + 9BDA3E7827FD43EF00517FE6 /* XPAnchorFansTeamEntranceView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorFansTeamEntranceView.h; sourceTree = ""; }; + 9BDA3E7927FD43EF00517FE6 /* XPAnchorFansTeamEntranceView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorFansTeamEntranceView.m; sourceTree = ""; }; + 9BDA3E7B27FD47AB00517FE6 /* XPAnchorFansTeamPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorFansTeamPresenter.h; sourceTree = ""; }; + 9BDA3E7C27FD47AB00517FE6 /* XPAnchorFansTeamPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorFansTeamPresenter.m; sourceTree = ""; }; + 9BDA3E7F27FD480D00517FE6 /* XPAnchorFansTeamProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorFansTeamProtocol.h; sourceTree = ""; }; + 9BE01ACC28925F7D00B50299 /* XPMineNewUserRechargeView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineNewUserRechargeView.h; sourceTree = ""; }; + 9BE01ACD28925F7D00B50299 /* XPMineNewUserRechargeView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineNewUserRechargeView.m; sourceTree = ""; }; + 9BE01ACF28927AC000B50299 /* XPDressUpShopViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPDressUpShopViewController.h; sourceTree = ""; }; + 9BE01AD028927AC000B50299 /* XPDressUpShopViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPDressUpShopViewController.m; sourceTree = ""; }; + 9BE01AD228927E9C00B50299 /* XPDressUpShopListViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPDressUpShopListViewController.h; sourceTree = ""; }; + 9BE01AD328927E9C00B50299 /* XPDressUpShopListViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPDressUpShopListViewController.m; sourceTree = ""; }; + 9BE01AD8289296B500B50299 /* XPDressUpShopPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPDressUpShopPresenter.h; sourceTree = ""; }; + 9BE01AD9289296B500B50299 /* XPDressUpShopPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPDressUpShopPresenter.m; sourceTree = ""; }; + 9BE01ADB2892975000B50299 /* XPDressUpShopProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPDressUpShopProtocol.h; sourceTree = ""; }; + 9BE01ADC2892A66D00B50299 /* DressUpShopModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DressUpShopModel.h; sourceTree = ""; }; + 9BE01ADD2892A66D00B50299 /* DressUpShopModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DressUpShopModel.m; sourceTree = ""; }; + 9BE01ADF28937DBC00B50299 /* XPDressUpShopCardViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPDressUpShopCardViewController.h; sourceTree = ""; }; + 9BE01AE028937DBC00B50299 /* XPDressUpShopCardViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPDressUpShopCardViewController.m; sourceTree = ""; }; + 9BE01AE228937EDE00B50299 /* XPDressUpShopCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPDressUpShopCollectionViewCell.h; sourceTree = ""; }; + 9BE01AE328937EDE00B50299 /* XPDressUpShopCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPDressUpShopCollectionViewCell.m; sourceTree = ""; }; + 9BE01AE528938AB600B50299 /* XPDressUpShopCardTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPDressUpShopCardTableViewCell.h; sourceTree = ""; }; + 9BE01AE628938AB600B50299 /* XPDressUpShopCardTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPDressUpShopCardTableViewCell.m; sourceTree = ""; }; + 9BE01AE82893CB4400B50299 /* XPDressSearchViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPDressSearchViewController.h; sourceTree = ""; }; + 9BE01AE92893CB4400B50299 /* XPDressSearchViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPDressSearchViewController.m; sourceTree = ""; }; + 9BE01AEB2893D0DF00B50299 /* XPDressShopSearchTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPDressShopSearchTableViewCell.h; sourceTree = ""; }; + 9BE01AEC2893D0DF00B50299 /* XPDressShopSearchTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPDressShopSearchTableViewCell.m; sourceTree = ""; }; + 9BE01AEE2893E31700B50299 /* NewUserRechargeModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NewUserRechargeModel.h; sourceTree = ""; }; + 9BE01AEF2893E31700B50299 /* NewUserRechargeModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NewUserRechargeModel.m; sourceTree = ""; }; + 9BE01AF52893E7F500B50299 /* XPNewUserRechargeCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPNewUserRechargeCollectionViewCell.h; sourceTree = ""; }; + 9BE01AF62893E7F500B50299 /* XPNewUserRechargeCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPNewUserRechargeCollectionViewCell.m; sourceTree = ""; }; + 9BE2FA8E288010D300EF3D83 /* AnchorRoomSrollTipView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AnchorRoomSrollTipView.h; sourceTree = ""; }; + 9BE2FA8F288010D300EF3D83 /* AnchorRoomSrollTipView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AnchorRoomSrollTipView.m; sourceTree = ""; }; + 9BE570BA28F65B7200D491A5 /* XPMineCollectRoomCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineCollectRoomCell.h; sourceTree = ""; }; + 9BE570BB28F65B7200D491A5 /* XPMineCollectRoomCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineCollectRoomCell.m; sourceTree = ""; }; + 9BE9F0F727FED12D00667200 /* XPAnchorFansPrivilegeModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorFansPrivilegeModel.h; sourceTree = ""; }; + 9BE9F0F827FED12D00667200 /* XPAnchorFansPrivilegeModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorFansPrivilegeModel.m; sourceTree = ""; }; + 9BE9F0FA27FED2E100667200 /* XPAnchorFansJoinModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorFansJoinModel.h; sourceTree = ""; }; + 9BE9F0FB27FED2E100667200 /* XPAnchorFansJoinModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorFansJoinModel.m; sourceTree = ""; }; + 9BE9F0FD27FED76500667200 /* XPAnchorFansTaskModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorFansTaskModel.h; sourceTree = ""; }; + 9BE9F0FE27FED76500667200 /* XPAnchorFansTaskModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorFansTaskModel.m; sourceTree = ""; }; + 9BE9F10027FEE5C200667200 /* XPAnchorFansTaskDetailModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorFansTaskDetailModel.h; sourceTree = ""; }; + 9BE9F10127FEE5C200667200 /* XPAnchorFansTaskDetailModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorFansTaskDetailModel.m; sourceTree = ""; }; + 9BE9F10327FF04CF00667200 /* XPAnchorFansTaskTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorFansTaskTableViewCell.h; sourceTree = ""; }; + 9BE9F10427FF04CF00667200 /* XPAnchorFansTaskTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorFansTaskTableViewCell.m; sourceTree = ""; }; + 9BF4BEBA28D4182E009CF6C2 /* XPOpenRedPacketModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPOpenRedPacketModel.h; sourceTree = ""; }; + 9BF4BEBB28D4182E009CF6C2 /* XPOpenRedPacketModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPOpenRedPacketModel.m; sourceTree = ""; }; + 9BF5192428801D4700B6BE92 /* XPAcrossRoomPKCountDownView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAcrossRoomPKCountDownView.h; sourceTree = ""; }; + 9BF5192528801D4700B6BE92 /* XPAcrossRoomPKCountDownView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAcrossRoomPKCountDownView.m; sourceTree = ""; }; + 9BFB101D2897CC4300B3985E /* XPAnchorCardView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorCardView.h; sourceTree = ""; }; + 9BFB101E2897CC4300B3985E /* XPAnchorCardView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorCardView.m; sourceTree = ""; }; + 9BFB10202897D68400B3985E /* XPTabAnchorCardModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPTabAnchorCardModel.h; sourceTree = ""; }; + 9BFB10212897D68400B3985E /* XPTabAnchorCardModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPTabAnchorCardModel.m; sourceTree = ""; }; + 9BFE0D8C2898C8C300F53C24 /* XPAnchorCardSkillCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorCardSkillCollectionViewCell.h; sourceTree = ""; }; + 9BFE0D8D2898C8C300F53C24 /* XPAnchorCardSkillCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorCardSkillCollectionViewCell.m; sourceTree = ""; }; + 9BFE0D902899042600F53C24 /* XPTaskCompleteTipView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPTaskCompleteTipView.h; sourceTree = ""; }; + 9BFE0D912899042600F53C24 /* XPTaskCompleteTipView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPTaskCompleteTipView.m; sourceTree = ""; }; + 9BFE992C288142FD009DA429 /* RoomClassifyModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomClassifyModel.h; sourceTree = ""; }; + 9BFE992D288142FD009DA429 /* RoomClassifyModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomClassifyModel.m; sourceTree = ""; }; B66633E061B1B34177CD011C /* Pods-YuMi.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-YuMi.release.xcconfig"; path = "Target Support Files/Pods-YuMi/Pods-YuMi.release.xcconfig"; sourceTree = ""; }; CACF623970097D653132D69A /* Pods_YuMi.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_YuMi.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E801273E27E323C800BAC3F2 /* YUMIChamberCombatRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCombatRegardGovernancer.h; sourceTree = ""; }; - E801273F27E323C800BAC3F2 /* YUMIChamberCombatRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCombatRegardGovernancer.m; sourceTree = ""; }; - E801274127E323E500BAC3F2 /* YUMIChamberCombatExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCombatExternalizer.h; sourceTree = ""; }; - E801274227E323E500BAC3F2 /* YUMIChamberCombatExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCombatExternalizer.m; sourceTree = ""; }; - E801274427E3240000BAC3F2 /* FBCChamberCombatCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCChamberCombatCeremony.h; sourceTree = ""; }; + E801273E27E323C800BAC3F2 /* XPRoomPKViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKViewController.h; sourceTree = ""; }; + E801273F27E323C800BAC3F2 /* XPRoomPKViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKViewController.m; sourceTree = ""; }; + E801274127E323E500BAC3F2 /* XPRoomPKPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKPresenter.h; sourceTree = ""; }; + E801274227E323E500BAC3F2 /* XPRoomPKPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKPresenter.m; sourceTree = ""; }; + E801274427E3240000BAC3F2 /* XPRoomPKProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKProtocol.h; sourceTree = ""; }; E801274527E3241700BAC3F2 /* Api+RoomPK.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+RoomPK.h"; sourceTree = ""; }; E801274627E3241700BAC3F2 /* Api+RoomPK.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+RoomPK.m"; sourceTree = ""; }; - E801274927E327DA00BAC3F2 /* YUMIChamberCombatGenreTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCombatGenreTabulationRegardElement.h; sourceTree = ""; }; - E801274A27E327DA00BAC3F2 /* YUMIChamberCombatGenreTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCombatGenreTabulationRegardElement.m; sourceTree = ""; }; - E801274C27E3280000BAC3F2 /* YUMIChamberCombatVoteTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCombatVoteTabulationRegardElement.h; sourceTree = ""; }; - E801274D27E3280000BAC3F2 /* YUMIChamberCombatVoteTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCombatVoteTabulationRegardElement.m; sourceTree = ""; }; - E801274F27E3281100BAC3F2 /* YUMIChamberCombatIntratemporalTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCombatIntratemporalTabulationRegardElement.h; sourceTree = ""; }; - E801275027E3281100BAC3F2 /* YUMIChamberCombatIntratemporalTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCombatIntratemporalTabulationRegardElement.m; sourceTree = ""; }; - E801275327E3326000BAC3F2 /* YUMIChamberCombatConsumerRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCombatConsumerRegard.h; sourceTree = ""; }; - E801275427E3326000BAC3F2 /* YUMIChamberCombatConsumerRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCombatConsumerRegard.m; sourceTree = ""; }; - E801275627E347FD00BAC3F2 /* ChamberCombatReflectionMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChamberCombatReflectionMatrix.h; sourceTree = ""; }; - E801275727E347FD00BAC3F2 /* ChamberCombatReflectionMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ChamberCombatReflectionMatrix.m; sourceTree = ""; }; - E80487632717DDD9008595F2 /* YUMIChamberParrotProvision.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberParrotProvision.h; sourceTree = ""; }; - E80487642717DDD9008595F2 /* YUMIChamberParrotProvision.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberParrotProvision.m; sourceTree = ""; }; + E801274927E327DA00BAC3F2 /* XPRoomPKTypeTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKTypeTableViewCell.h; sourceTree = ""; }; + E801274A27E327DA00BAC3F2 /* XPRoomPKTypeTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKTypeTableViewCell.m; sourceTree = ""; }; + E801274C27E3280000BAC3F2 /* XPRoomPKVoteTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKVoteTableViewCell.h; sourceTree = ""; }; + E801274D27E3280000BAC3F2 /* XPRoomPKVoteTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKVoteTableViewCell.m; sourceTree = ""; }; + E801274F27E3281100BAC3F2 /* XPRoomPKTimeTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKTimeTableViewCell.h; sourceTree = ""; }; + E801275027E3281100BAC3F2 /* XPRoomPKTimeTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKTimeTableViewCell.m; sourceTree = ""; }; + E801275327E3326000BAC3F2 /* XPRoomPKUserView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKUserView.h; sourceTree = ""; }; + E801275427E3326000BAC3F2 /* XPRoomPKUserView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKUserView.m; sourceTree = ""; }; + E801275627E347FD00BAC3F2 /* RoomPKRecordModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomPKRecordModel.h; sourceTree = ""; }; + E801275727E347FD00BAC3F2 /* RoomPKRecordModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomPKRecordModel.m; sourceTree = ""; }; + E80487632717DDD9008595F2 /* XPRoomMenuItem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMenuItem.h; sourceTree = ""; }; + E80487642717DDD9008595F2 /* XPRoomMenuItem.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomMenuItem.m; sourceTree = ""; }; E8098CA5282E00920090B9F0 /* Api+Monents.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+Monents.h"; sourceTree = ""; }; E8098CA6282E00920090B9F0 /* Api+Monents.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+Monents.m"; sourceTree = ""; }; - E8098CA8282E03B40090B9F0 /* YUMISeparationsEncourageExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsEncourageExternalizer.h; sourceTree = ""; }; - E8098CA9282E03B40090B9F0 /* YUMISeparationsEncourageExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsEncourageExternalizer.m; sourceTree = ""; }; - E8098CAB282E04870090B9F0 /* FBCSeparationsEncourageCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCSeparationsEncourageCeremony.h; sourceTree = ""; }; - E8098CAC282E07C00090B9F0 /* YUMISeparationsDispossessTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsDispossessTabulationRegardElement.h; sourceTree = ""; }; - E8098CAD282E07C00090B9F0 /* YUMISeparationsDispossessTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsDispossessTabulationRegardElement.m; sourceTree = ""; }; - E8098CAF282E86EF0090B9F0 /* YUMISeparationsSatisfactionRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsSatisfactionRegard.h; sourceTree = ""; }; - E8098CB0282E86EF0090B9F0 /* YUMISeparationsSatisfactionRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsSatisfactionRegard.m; sourceTree = ""; }; - E8098CB2282E97550090B9F0 /* YUMIManeBlackStatementExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeBlackStatementExternalizer.h; sourceTree = ""; }; - E8098CB3282E97550090B9F0 /* YUMIManeBlackStatementExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeBlackStatementExternalizer.m; sourceTree = ""; }; - E8098CB6282E97AC0090B9F0 /* FBCManeBlackStatementCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCManeBlackStatementCeremony.h; sourceTree = ""; }; - E80A086027F2AC190027B30C /* ChamberCombatSpecificAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChamberCombatSpecificAbstractMatrix.h; sourceTree = ""; }; - E80A086127F2AC190027B30C /* ChamberCombatSpecificAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ChamberCombatSpecificAbstractMatrix.m; sourceTree = ""; }; - E80A086327F318620027B30C /* YUMIChamberCombatDisportingRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCombatDisportingRegard.h; sourceTree = ""; }; - E80A086427F318620027B30C /* YUMIChamberCombatDisportingRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCombatDisportingRegard.m; sourceTree = ""; }; - E80A63DA28B86B9700690914 /* CommunicationSatisfactionSeparationsAutoRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationSatisfactionSeparationsAutoRegard.h; sourceTree = ""; }; - E80A63DB28B86B9700690914 /* CommunicationSatisfactionSeparationsAutoRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationSatisfactionSeparationsAutoRegard.m; sourceTree = ""; }; - E80B0710280D0A6700A79F63 /* FanaticsAbstractMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FanaticsAbstractMatrix.h; sourceTree = ""; }; - E80B0711280D0A6700A79F63 /* FanaticsAbstractMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FanaticsAbstractMatrix.m; sourceTree = ""; }; - E80B0732280D740600A79F63 /* CommunicationSatisfactionUnionRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationSatisfactionUnionRegard.h; sourceTree = ""; }; - E80B0733280D740600A79F63 /* CommunicationSatisfactionUnionRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationSatisfactionUnionRegard.m; sourceTree = ""; }; - E80CBDE827D0C53F001E1EC2 /* YUMIWeakIntratemporalr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIWeakIntratemporalr.h; sourceTree = ""; }; - E80CBDE927D0C53F001E1EC2 /* YUMIWeakIntratemporalr.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIWeakIntratemporalr.m; sourceTree = ""; }; - E80DE4052775665000BE5BCB /* YUMIThresholdReindictAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIThresholdReindictAssembletionRegardElement.h; sourceTree = ""; }; - E80DE4062775665000BE5BCB /* YUMIThresholdReindictAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIThresholdReindictAssembletionRegardElement.m; sourceTree = ""; }; + E8098CA8282E03B40090B9F0 /* XPMonentsRecommendPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsRecommendPresenter.h; sourceTree = ""; }; + E8098CA9282E03B40090B9F0 /* XPMonentsRecommendPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsRecommendPresenter.m; sourceTree = ""; }; + E8098CAB282E04870090B9F0 /* XPMonentsRecommendProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsRecommendProtocol.h; sourceTree = ""; }; + E8098CAC282E07C00090B9F0 /* XPMonentsEmptyTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsEmptyTableViewCell.h; sourceTree = ""; }; + E8098CAD282E07C00090B9F0 /* XPMonentsEmptyTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsEmptyTableViewCell.m; sourceTree = ""; }; + E8098CAF282E86EF0090B9F0 /* XPMonentsContentView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsContentView.h; sourceTree = ""; }; + E8098CB0282E86EF0090B9F0 /* XPMonentsContentView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsContentView.m; sourceTree = ""; }; + E8098CB2282E97550090B9F0 /* XPMineBlackListPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineBlackListPresenter.h; sourceTree = ""; }; + E8098CB3282E97550090B9F0 /* XPMineBlackListPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineBlackListPresenter.m; sourceTree = ""; }; + E8098CB6282E97AC0090B9F0 /* XPMineBlackListProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineBlackListProtocol.h; sourceTree = ""; }; + E80A086027F2AC190027B30C /* RoomPKDetailInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomPKDetailInfoModel.h; sourceTree = ""; }; + E80A086127F2AC190027B30C /* RoomPKDetailInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomPKDetailInfoModel.m; sourceTree = ""; }; + E80A086327F318620027B30C /* XPRoomPKPlayingView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKPlayingView.h; sourceTree = ""; }; + E80A086427F318620027B30C /* XPRoomPKPlayingView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKPlayingView.m; sourceTree = ""; }; + E80A63DA28B86B9700690914 /* MessageContentMonentsAutoView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageContentMonentsAutoView.h; sourceTree = ""; }; + E80A63DB28B86B9700690914 /* MessageContentMonentsAutoView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageContentMonentsAutoView.m; sourceTree = ""; }; + E80B0710280D0A6700A79F63 /* FansInfoModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FansInfoModel.h; sourceTree = ""; }; + E80B0711280D0A6700A79F63 /* FansInfoModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FansInfoModel.m; sourceTree = ""; }; + E80B0732280D740600A79F63 /* MessageContentGuildView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageContentGuildView.h; sourceTree = ""; }; + E80B0733280D740600A79F63 /* MessageContentGuildView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageContentGuildView.m; sourceTree = ""; }; + E80CBDE827D0C53F001E1EC2 /* XPWeakTimer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPWeakTimer.h; sourceTree = ""; }; + E80CBDE927D0C53F001E1EC2 /* XPWeakTimer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPWeakTimer.m; sourceTree = ""; }; + E80DE4052775665000BE5BCB /* XPFirstRechargeCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPFirstRechargeCollectionViewCell.h; sourceTree = ""; }; + E80DE4062775665000BE5BCB /* XPFirstRechargeCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPFirstRechargeCollectionViewCell.m; sourceTree = ""; }; E80DE408277568D300BE5BCB /* ThemeColor+FirstRecharge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ThemeColor+FirstRecharge.h"; sourceTree = ""; }; E80DE409277568D300BE5BCB /* ThemeColor+FirstRecharge.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "ThemeColor+FirstRecharge.m"; sourceTree = ""; }; - E80DE40B2775ABA500BE5BCB /* YUMIThresholdReindictFlowProgramming.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIThresholdReindictFlowProgramming.h; sourceTree = ""; }; - E80DE40C2775ABA500BE5BCB /* YUMIThresholdReindictFlowProgramming.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIThresholdReindictFlowProgramming.m; sourceTree = ""; }; - E80DE40E2775C34E00BE5BCB /* YUMIThresholdReindictSuccessRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIThresholdReindictSuccessRegard.h; sourceTree = ""; }; - E80DE40F2775C34E00BE5BCB /* YUMIThresholdReindictSuccessRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIThresholdReindictSuccessRegard.m; sourceTree = ""; }; - E80E09712A40B5DD00CD2BE7 /* YUMIConfectioneryTimberExternalizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIConfectioneryTimberExternalizer.m; sourceTree = ""; }; - E80E09722A40B5DD00CD2BE7 /* YUMIConfectioneryTimberExternalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIConfectioneryTimberExternalizer.h; sourceTree = ""; }; - E80E09742A40B5DD00CD2BE7 /* FBCCandyTreeCeremony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBCCandyTreeCeremony.h; sourceTree = ""; }; - E80E09762A40B5DD00CD2BE7 /* ConfectioneryTimberConsequentMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConfectioneryTimberConsequentMatrix.m; sourceTree = ""; }; - E80E09772A40B5DD00CD2BE7 /* ConfectioneryTimberReflectionMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConfectioneryTimberReflectionMatrix.m; sourceTree = ""; }; - E80E09782A40B5DD00CD2BE7 /* YUMIConfectioneryTimberBrightnessMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIConfectioneryTimberBrightnessMatrix.h; sourceTree = ""; }; - E80E09792A40B5DD00CD2BE7 /* ConfectioneryTimberAbstractMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConfectioneryTimberAbstractMatrix.h; sourceTree = ""; }; - E80E097A2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberBrightnessMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIConfectioneryTimberBrightnessMatrix.m; sourceTree = ""; }; - E80E097B2A40B5DD00CD2BE7 /* ConfectioneryTimberReflectionMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConfectioneryTimberReflectionMatrix.h; sourceTree = ""; }; - E80E097C2A40B5DD00CD2BE7 /* ConfectioneryTimberConsequentMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConfectioneryTimberConsequentMatrix.h; sourceTree = ""; }; - E80E097D2A40B5DD00CD2BE7 /* ConfectioneryTimberAbstractMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConfectioneryTimberAbstractMatrix.m; sourceTree = ""; }; - E80E097F2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberRateRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIConfectioneryTimberRateRegard.m; sourceTree = ""; }; - E80E09802A40B5DD00CD2BE7 /* YUMIConfectioneryTimberFurthaerRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIConfectioneryTimberFurthaerRegard.m; sourceTree = ""; }; - E80E09812A40B5DD00CD2BE7 /* YUMIConfectioneryTimberRegardGovernancer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIConfectioneryTimberRegardGovernancer.h; sourceTree = ""; }; - E80E09822A40B5DD00CD2BE7 /* YUMIConfectioneryTimberInsufficientBalanceRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIConfectioneryTimberInsufficientBalanceRegard.h; sourceTree = ""; }; - E80E09832A40B5DD00CD2BE7 /* YUMIConfectioneryTimberPresentRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIConfectioneryTimberPresentRegard.m; sourceTree = ""; }; - E80E09842A40B5DD00CD2BE7 /* YUMIChamberHalfTissueRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIChamberHalfTissueRegard.h; sourceTree = ""; }; - E80E09852A40B5DD00CD2BE7 /* YUMIConfectioneryRateAccommodatedRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIConfectioneryRateAccommodatedRegard.h; sourceTree = ""; }; - E80E09872A40B5DD00CD2BE7 /* YUMIConfectioneryTimberDispossessableRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIConfectioneryTimberDispossessableRegardElement.m; sourceTree = ""; }; - E80E09882A40B5DD00CD2BE7 /* YUMIConfectioneryTimberFurthaerPreadominantElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIConfectioneryTimberFurthaerPreadominantElement.m; sourceTree = ""; }; - E80E09892A40B5DD00CD2BE7 /* YUMIConfectioneryTimberRateTabulationRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIConfectioneryTimberRateTabulationRegardElement.m; sourceTree = ""; }; - E80E098A2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberFurthaerPreadominantElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIConfectioneryTimberFurthaerPreadominantElement.h; sourceTree = ""; }; - E80E098B2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberDispossessableRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIConfectioneryTimberDispossessableRegardElement.h; sourceTree = ""; }; - E80E098C2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberRateTabulationRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIConfectioneryTimberRateTabulationRegardElement.h; sourceTree = ""; }; - E80E098D2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberRateRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIConfectioneryTimberRateRegard.h; sourceTree = ""; }; - E80E098E2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberRegardGovernancer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIConfectioneryTimberRegardGovernancer.m; sourceTree = ""; }; - E80E098F2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberFurthaerRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIConfectioneryTimberFurthaerRegard.h; sourceTree = ""; }; - E80E09902A40B5DD00CD2BE7 /* YUMIConfectioneryTimberPresentRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIConfectioneryTimberPresentRegard.h; sourceTree = ""; }; - E80E09912A40B5DD00CD2BE7 /* YUMIConfectioneryTimberInsufficientBalanceRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIConfectioneryTimberInsufficientBalanceRegard.m; sourceTree = ""; }; - E80E09922A40B5DD00CD2BE7 /* YUMIConfectioneryRateAccommodatedRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIConfectioneryRateAccommodatedRegard.m; sourceTree = ""; }; - E80E09932A40B5DD00CD2BE7 /* YUMIChamberHalfTissueRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberHalfTissueRegard.m; sourceTree = ""; }; - E80E09952A40B5DD00CD2BE7 /* Api+CandyTree.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Api+CandyTree.m"; sourceTree = ""; }; - E80E09962A40B5DD00CD2BE7 /* Api+CandyTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Api+CandyTree.h"; sourceTree = ""; }; + E80DE40B2775ABA500BE5BCB /* XPFirstRechargeFlowLayout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPFirstRechargeFlowLayout.h; sourceTree = ""; }; + E80DE40C2775ABA500BE5BCB /* XPFirstRechargeFlowLayout.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPFirstRechargeFlowLayout.m; sourceTree = ""; }; + E80DE40E2775C34E00BE5BCB /* XPFirstRechargeSuccessView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPFirstRechargeSuccessView.h; sourceTree = ""; }; + E80DE40F2775C34E00BE5BCB /* XPFirstRechargeSuccessView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPFirstRechargeSuccessView.m; sourceTree = ""; }; E80E09AA2A40B70100CD2BE7 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Localizable.strings"; sourceTree = ""; }; - E80E09AC2A41336500CD2BE7 /* YUMITissueRegardNevRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMITissueRegardNevRegard.m; sourceTree = ""; }; - E80E09AD2A41336500CD2BE7 /* YUMITissueRegardNevRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMITissueRegardNevRegard.h; sourceTree = ""; }; + E80E09AC2A41336500CD2BE7 /* XPWebViewNavView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPWebViewNavView.m; sourceTree = ""; }; + E80E09AD2A41336500CD2BE7 /* XPWebViewNavView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPWebViewNavView.h; sourceTree = ""; }; E80E09AF2A41573700CD2BE7 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; - E80E09B12A42071C00CD2BE7 /* YUMIChamberSatelliteKitchenOriflammeRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIChamberSatelliteKitchenOriflammeRegard.h; sourceTree = ""; }; - E80E09B22A42071D00CD2BE7 /* YUMIChamberSatelliteKitchenOriflammeRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberSatelliteKitchenOriflammeRegard.m; sourceTree = ""; }; - E80E09B42A42078F00CD2BE7 /* YUMIChamberSatelliteKitchenMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberSatelliteKitchenMatrix.h; sourceTree = ""; }; - E80E09B52A42078F00CD2BE7 /* YUMIChamberSatelliteKitchenMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberSatelliteKitchenMatrix.m; sourceTree = ""; }; + E80E09B12A42071C00CD2BE7 /* XPRoomStarKitchenBannerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPRoomStarKitchenBannerView.h; sourceTree = ""; }; + E80E09B22A42071D00CD2BE7 /* XPRoomStarKitchenBannerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPRoomStarKitchenBannerView.m; sourceTree = ""; }; + E80E09B42A42078F00CD2BE7 /* XPRoomStarKitchenModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomStarKitchenModel.h; sourceTree = ""; }; + E80E09B52A42078F00CD2BE7 /* XPRoomStarKitchenModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomStarKitchenModel.m; sourceTree = ""; }; E80E2375299A47F60013FD40 /* AESUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AESUtils.h; sourceTree = ""; }; E80E2376299A47F60013FD40 /* AESUtils.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AESUtils.m; sourceTree = ""; }; - E80E900A27E0358900434B90 /* YUMIChamberMotifPrecautiousRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberMotifPrecautiousRegard.h; sourceTree = ""; }; - E80E900B27E0358900434B90 /* YUMIChamberMotifPrecautiousRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberMotifPrecautiousRegard.m; sourceTree = ""; }; - E80EC74C28ACD84000D133C5 /* MHTSpiritDirectorateRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MHTSpiritDirectorateRegard.m; sourceTree = ""; }; - E80EC74D28ACD84000D133C5 /* MHTSpiritFacilitater.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MHTSpiritFacilitater.h; sourceTree = ""; }; - E80EC74E28ACD84000D133C5 /* MHTIntrojectionObstacleRegardDispositionuration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MHTIntrojectionObstacleRegardDispositionuration.m; sourceTree = ""; }; - E80EC74F28ACD84000D133C5 /* UITextView+MHTSpirit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UITextView+MHTSpirit.m"; sourceTree = ""; }; - E80EC75028ACD84000D133C5 /* MHTIntrojectionObstacleRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MHTIntrojectionObstacleRegard.m; sourceTree = ""; }; - E80EC75128ACD84000D133C5 /* MHTKeyboardBaseExecutive.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MHTKeyboardBaseExecutive.m; sourceTree = ""; }; - E80EC75228ACD84000D133C5 /* MHTSpirit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MHTSpirit.m; sourceTree = ""; }; - E80EC75328ACD84000D133C5 /* MHTKeyboardExecutive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MHTKeyboardExecutive.h; sourceTree = ""; }; - E80EC75428ACD84000D133C5 /* MHTSpiritAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MHTSpiritAttachment.h; sourceTree = ""; }; - E80EC75528ACD84000D133C5 /* MHTExtendDirectorateRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MHTExtendDirectorateRegard.m; sourceTree = ""; }; - E80EC75628ACD84000D133C5 /* UITextView+MHTSpirit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UITextView+MHTSpirit.h"; sourceTree = ""; }; - E80EC75728ACD84000D133C5 /* MHTIntrojectionObstacleRegardDispositionuration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MHTIntrojectionObstacleRegardDispositionuration.h; sourceTree = ""; }; - E80EC75828ACD84000D133C5 /* MHTSpiritFacilitater.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MHTSpiritFacilitater.m; sourceTree = ""; }; - E80EC75928ACD84000D133C5 /* MHTSpiritDirectorateRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MHTSpiritDirectorateRegard.h; sourceTree = ""; }; - E80EC75A28ACD84000D133C5 /* MHTKeyboardBaseExecutive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MHTKeyboardBaseExecutive.h; sourceTree = ""; }; - E80EC75B28ACD84000D133C5 /* MHTIntrojectionObstacleRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MHTIntrojectionObstacleRegard.h; sourceTree = ""; }; - E80EC75C28ACD84000D133C5 /* MHTExtendDirectorateRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MHTExtendDirectorateRegard.h; sourceTree = ""; }; - E80EC75D28ACD84000D133C5 /* MHTSpiritAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MHTSpiritAttachment.m; sourceTree = ""; }; - E80EC75E28ACD84000D133C5 /* MHTKeyboardExecutive.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MHTKeyboardExecutive.m; sourceTree = ""; }; - E80EC75F28ACD84000D133C5 /* MHTSpirit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MHTSpirit.h; sourceTree = ""; }; + E80E900A27E0358900434B90 /* XPRoomTopicAlertView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomTopicAlertView.h; sourceTree = ""; }; + E80E900B27E0358900434B90 /* XPRoomTopicAlertView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomTopicAlertView.m; sourceTree = ""; }; + E80EC74C28ACD84000D133C5 /* QEmotionBoardView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QEmotionBoardView.m; sourceTree = ""; }; + E80EC74D28ACD84000D133C5 /* QEmotionHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QEmotionHelper.h; sourceTree = ""; }; + E80EC74E28ACD84000D133C5 /* QInputBarViewConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QInputBarViewConfiguration.m; sourceTree = ""; }; + E80EC74F28ACD84000D133C5 /* UITextView+QEmotion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UITextView+QEmotion.m"; sourceTree = ""; }; + E80EC75028ACD84000D133C5 /* QInputBarView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QInputBarView.m; sourceTree = ""; }; + E80EC75128ACD84000D133C5 /* QKeyboardBaseManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QKeyboardBaseManager.m; sourceTree = ""; }; + E80EC75228ACD84000D133C5 /* QEmotion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QEmotion.m; sourceTree = ""; }; + E80EC75328ACD84000D133C5 /* QKeyboardManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QKeyboardManager.h; sourceTree = ""; }; + E80EC75428ACD84000D133C5 /* QEmotionAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QEmotionAttachment.h; sourceTree = ""; }; + E80EC75528ACD84000D133C5 /* QExtendBoardView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QExtendBoardView.m; sourceTree = ""; }; + E80EC75628ACD84000D133C5 /* UITextView+QEmotion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UITextView+QEmotion.h"; sourceTree = ""; }; + E80EC75728ACD84000D133C5 /* QInputBarViewConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QInputBarViewConfiguration.h; sourceTree = ""; }; + E80EC75828ACD84000D133C5 /* QEmotionHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QEmotionHelper.m; sourceTree = ""; }; + E80EC75928ACD84000D133C5 /* QEmotionBoardView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QEmotionBoardView.h; sourceTree = ""; }; + E80EC75A28ACD84000D133C5 /* QKeyboardBaseManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QKeyboardBaseManager.h; sourceTree = ""; }; + E80EC75B28ACD84000D133C5 /* QInputBarView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QInputBarView.h; sourceTree = ""; }; + E80EC75C28ACD84000D133C5 /* QExtendBoardView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QExtendBoardView.h; sourceTree = ""; }; + E80EC75D28ACD84000D133C5 /* QEmotionAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QEmotionAttachment.m; sourceTree = ""; }; + E80EC75E28ACD84000D133C5 /* QKeyboardManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QKeyboardManager.m; sourceTree = ""; }; + E80EC75F28ACD84000D133C5 /* QEmotion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QEmotion.h; sourceTree = ""; }; E80EC76228ACD84000D133C5 /* emoji_138@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "emoji_138@2x.png"; sourceTree = ""; }; E80EC76328ACD84000D133C5 /* emoji_145@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "emoji_145@2x.png"; sourceTree = ""; }; E80EC76428ACD84000D133C5 /* emoji_126@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "emoji_126@2x.png"; sourceTree = ""; }; @@ -2245,674 +2133,672 @@ E80EC80728ACD84000D133C5 /* emoji_164@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "emoji_164@2x.png"; sourceTree = ""; }; E80EC80828ACD84000D133C5 /* emoji.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = emoji.plist; sourceTree = ""; }; E80EC8BE28ACDB2A00D133C5 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - E80EC8C028ACF97A00D133C5 /* MHTESentimentIndicateRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MHTESentimentIndicateRegard.h; sourceTree = ""; }; - E80EC8C128ACF97A00D133C5 /* MHTESentimentIndicateRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MHTESentimentIndicateRegard.m; sourceTree = ""; }; - E81060D7298761A300B772F0 /* CommunicationBaseMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationBaseMatrix.h; sourceTree = ""; }; - E81060D8298761A300B772F0 /* CommunicationBaseMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationBaseMatrix.m; sourceTree = ""; }; - E81060DA298761F100B772F0 /* CommunicationEssayMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationEssayMatrix.h; sourceTree = ""; }; - E81060DB298761F100B772F0 /* CommunicationEssayMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationEssayMatrix.m; sourceTree = ""; }; - E81060DD29876D3A00B772F0 /* CommunicationIntratemporalMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationIntratemporalMatrix.h; sourceTree = ""; }; - E81060DE29876D3A00B772F0 /* CommunicationIntratemporalMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationIntratemporalMatrix.m; sourceTree = ""; }; - E81060E029876E9100B772F0 /* CommunicationIndicateMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationIndicateMatrix.h; sourceTree = ""; }; - E81060E129876E9100B772F0 /* CommunicationIndicateMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationIndicateMatrix.m; sourceTree = ""; }; - E81060E329876FF300B772F0 /* CommunicationVocalmusicMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationVocalmusicMatrix.h; sourceTree = ""; }; - E81060E429876FF300B772F0 /* CommunicationVocalmusicMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationVocalmusicMatrix.m; sourceTree = ""; }; - E81060E62987720F00B772F0 /* CommunicationUnSupportMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationUnSupportMatrix.h; sourceTree = ""; }; - E81060E72987720F00B772F0 /* CommunicationUnSupportMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationUnSupportMatrix.m; sourceTree = ""; }; - E81060E92987BE8300B772F0 /* CommunicationPresentMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationPresentMatrix.h; sourceTree = ""; }; - E81060EA2987BE8300B772F0 /* CommunicationPresentMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationPresentMatrix.m; sourceTree = ""; }; - E81060EC2987C35700B772F0 /* CommunicationEssayClickMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationEssayClickMatrix.h; sourceTree = ""; }; - E81060ED2987C35700B772F0 /* CommunicationEssayClickMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationEssayClickMatrix.m; sourceTree = ""; }; - E81060EF2987C52B00B772F0 /* CommunicationUnionMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationUnionMatrix.h; sourceTree = ""; }; - E81060F02987C52B00B772F0 /* CommunicationUnionMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationUnionMatrix.m; sourceTree = ""; }; - E81060F22987C6B200B772F0 /* CommunicationUnfoildEnergeticMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationUnfoildEnergeticMatrix.h; sourceTree = ""; }; - E81060F32987C6B200B772F0 /* CommunicationUnfoildEnergeticMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationUnfoildEnergeticMatrix.m; sourceTree = ""; }; - E81060F52987C8A700B772F0 /* CommunicationApplicationParaticipationMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationApplicationParaticipationMatrix.h; sourceTree = ""; }; - E81060F62987C8A700B772F0 /* CommunicationApplicationParaticipationMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationApplicationParaticipationMatrix.m; sourceTree = ""; }; - E81060FB2987CC9100B772F0 /* CommunicationPrototypeAscensionMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationPrototypeAscensionMatrix.h; sourceTree = ""; }; - E81060FC2987CC9100B772F0 /* CommunicationPrototypeAscensionMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationPrototypeAscensionMatrix.m; sourceTree = ""; }; - E81060FE2987CDCC00B772F0 /* CommunicationTweetMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationTweetMatrix.h; sourceTree = ""; }; - E81060FF2987CDCC00B772F0 /* CommunicationTweetMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationTweetMatrix.m; sourceTree = ""; }; - E81061012987CFCE00B772F0 /* CommunicationCommunicationSolitaireMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationCommunicationSolitaireMatrix.h; sourceTree = ""; }; - E81061022987CFCE00B772F0 /* CommunicationCommunicationSolitaireMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationCommunicationSolitaireMatrix.m; sourceTree = ""; }; - E81125C2296E57B7000D9804 /* MHTinputAppearanceRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MHTinputAppearanceRegard.h; sourceTree = ""; }; - E81125C3296E57B7000D9804 /* MHTinputAppearanceRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MHTinputAppearanceRegard.m; sourceTree = ""; }; - E81125C5296E596D000D9804 /* MHTIntrojectionAppearancetElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MHTIntrojectionAppearancetElement.h; sourceTree = ""; }; - E81125C6296E596D000D9804 /* MHTIntrojectionAppearancetElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MHTIntrojectionAppearancetElement.m; sourceTree = ""; }; - E81125C8296E606F000D9804 /* MHTAppearanceIndicateMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MHTAppearanceIndicateMatrix.h; sourceTree = ""; }; - E81125C9296E606F000D9804 /* MHTAppearanceIndicateMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MHTAppearanceIndicateMatrix.m; sourceTree = ""; }; - E811FFF52742367B00918544 /* YUMIPresentDispossessAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPresentDispossessAssembletionRegardElement.h; sourceTree = ""; }; - E811FFF62742367B00918544 /* YUMIPresentDispossessAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPresentDispossessAssembletionRegardElement.m; sourceTree = ""; }; - E8133914273E532D00708B66 /* YUMIPresentProvisionAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPresentProvisionAssembletionRegardElement.h; sourceTree = ""; }; - E8133915273E532D00708B66 /* YUMIPresentProvisionAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPresentProvisionAssembletionRegardElement.m; sourceTree = ""; }; - E81366E126F0A1FC0076364C /* SurmountDilemmaMobileRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SurmountDilemmaMobileRegardGovernancer.h; sourceTree = ""; }; - E81366E226F0A1FC0076364C /* SurmountDilemmaMobileRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SurmountDilemmaMobileRegardGovernancer.m; sourceTree = ""; }; + E80EC8C028ACF97A00D133C5 /* QEEmotionImageView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = QEEmotionImageView.h; sourceTree = ""; }; + E80EC8C128ACF97A00D133C5 /* QEEmotionImageView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = QEEmotionImageView.m; sourceTree = ""; }; + E81060D7298761A300B772F0 /* MessageBaseModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageBaseModel.h; sourceTree = ""; }; + E81060D8298761A300B772F0 /* MessageBaseModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageBaseModel.m; sourceTree = ""; }; + E81060DA298761F100B772F0 /* MessageTextModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageTextModel.h; sourceTree = ""; }; + E81060DB298761F100B772F0 /* MessageTextModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageTextModel.m; sourceTree = ""; }; + E81060DD29876D3A00B772F0 /* MessageTimeModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageTimeModel.h; sourceTree = ""; }; + E81060DE29876D3A00B772F0 /* MessageTimeModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageTimeModel.m; sourceTree = ""; }; + E81060E029876E9100B772F0 /* MessageImageModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageImageModel.h; sourceTree = ""; }; + E81060E129876E9100B772F0 /* MessageImageModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageImageModel.m; sourceTree = ""; }; + E81060E329876FF300B772F0 /* MessageAudioModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageAudioModel.h; sourceTree = ""; }; + E81060E429876FF300B772F0 /* MessageAudioModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageAudioModel.m; sourceTree = ""; }; + E81060E62987720F00B772F0 /* MessageUnSupportModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageUnSupportModel.h; sourceTree = ""; }; + E81060E72987720F00B772F0 /* MessageUnSupportModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageUnSupportModel.m; sourceTree = ""; }; + E81060E92987BE8300B772F0 /* MessageGiftModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageGiftModel.h; sourceTree = ""; }; + E81060EA2987BE8300B772F0 /* MessageGiftModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageGiftModel.m; sourceTree = ""; }; + E81060EC2987C35700B772F0 /* MessageTextClickModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageTextClickModel.h; sourceTree = ""; }; + E81060ED2987C35700B772F0 /* MessageTextClickModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageTextClickModel.m; sourceTree = ""; }; + E81060EF2987C52B00B772F0 /* MessageGuildModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageGuildModel.h; sourceTree = ""; }; + E81060F02987C52B00B772F0 /* MessageGuildModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageGuildModel.m; sourceTree = ""; }; + E81060F22987C6B200B772F0 /* MessageOpenLiveModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageOpenLiveModel.h; sourceTree = ""; }; + E81060F32987C6B200B772F0 /* MessageOpenLiveModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageOpenLiveModel.m; sourceTree = ""; }; + E81060F52987C8A700B772F0 /* MessageApplicationShareModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageApplicationShareModel.h; sourceTree = ""; }; + E81060F62987C8A700B772F0 /* MessageApplicationShareModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageApplicationShareModel.m; sourceTree = ""; }; + E81060FB2987CC9100B772F0 /* MessageLevelUpgradeModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageLevelUpgradeModel.h; sourceTree = ""; }; + E81060FC2987CC9100B772F0 /* MessageLevelUpgradeModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageLevelUpgradeModel.m; sourceTree = ""; }; + E81060FE2987CDCC00B772F0 /* MessageTweetModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageTweetModel.h; sourceTree = ""; }; + E81060FF2987CDCC00B772F0 /* MessageTweetModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageTweetModel.m; sourceTree = ""; }; + E81061012987CFCE00B772F0 /* MessageSkillCardModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageSkillCardModel.h; sourceTree = ""; }; + E81061022987CFCE00B772F0 /* MessageSkillCardModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageSkillCardModel.m; sourceTree = ""; }; + E81125C2296E57B7000D9804 /* QinputPhotoView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = QinputPhotoView.h; sourceTree = ""; }; + E81125C3296E57B7000D9804 /* QinputPhotoView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = QinputPhotoView.m; sourceTree = ""; }; + E81125C5296E596D000D9804 /* QInputPhototCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = QInputPhototCell.h; sourceTree = ""; }; + E81125C6296E596D000D9804 /* QInputPhototCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = QInputPhototCell.m; sourceTree = ""; }; + E81125C8296E606F000D9804 /* QPhotoImageModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = QPhotoImageModel.h; sourceTree = ""; }; + E81125C9296E606F000D9804 /* QPhotoImageModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = QPhotoImageModel.m; sourceTree = ""; }; + E811FFF52742367B00918544 /* XPGiftEmptyCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftEmptyCollectionViewCell.h; sourceTree = ""; }; + E811FFF62742367B00918544 /* XPGiftEmptyCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftEmptyCollectionViewCell.m; sourceTree = ""; }; + E8133914273E532D00708B66 /* XPGiftItemCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftItemCollectionViewCell.h; sourceTree = ""; }; + E8133915273E532D00708B66 /* XPGiftItemCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftItemCollectionViewCell.m; sourceTree = ""; }; + E81366E126F0A1FC0076364C /* LoginBindPhoneViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginBindPhoneViewController.h; sourceTree = ""; }; + E81366E226F0A1FC0076364C /* LoginBindPhoneViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LoginBindPhoneViewController.m; sourceTree = ""; }; E81366E526F0A49E0076364C /* NSString+Utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSString+Utils.h"; sourceTree = ""; }; E81366E626F0A49E0076364C /* NSString+Utils.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSString+Utils.m"; sourceTree = ""; }; - E81366F126F0B7C80076364C /* SurmountFullAbstractRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SurmountFullAbstractRegardGovernancer.h; sourceTree = ""; }; - E81366F226F0B7C80076364C /* SurmountFullAbstractRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SurmountFullAbstractRegardGovernancer.m; sourceTree = ""; }; - E81366F426F0C0DF0076364C /* SurmountFullAbstractExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SurmountFullAbstractExternalizer.h; sourceTree = ""; }; - E81366F526F0C0DF0076364C /* SurmountFullAbstractExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SurmountFullAbstractExternalizer.m; sourceTree = ""; }; - E81366F726F0C0F60076364C /* SurmountFullAbstractCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SurmountFullAbstractCeremony.h; sourceTree = ""; }; + E81366F126F0B7C80076364C /* LoginFullInfoViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginFullInfoViewController.h; sourceTree = ""; }; + E81366F226F0B7C80076364C /* LoginFullInfoViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LoginFullInfoViewController.m; sourceTree = ""; }; + E81366F426F0C0DF0076364C /* LoginFullInfoPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginFullInfoPresenter.h; sourceTree = ""; }; + E81366F526F0C0DF0076364C /* LoginFullInfoPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LoginFullInfoPresenter.m; sourceTree = ""; }; + E81366F726F0C0F60076364C /* LoginFullInfoProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginFullInfoProtocol.h; sourceTree = ""; }; E81366FA26F0D2980076364C /* UIButton+EnlargeTouchArea.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIButton+EnlargeTouchArea.m"; sourceTree = ""; }; E81366FB26F0D2980076364C /* UIButton+EnlargeTouchArea.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIButton+EnlargeTouchArea.h"; sourceTree = ""; }; - E816C11327608A7500C84014 /* YUMIChamberMiniExecutive.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberMiniExecutive.h; sourceTree = ""; }; - E816C11427608A7500C84014 /* YUMIChamberMiniExecutive.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberMiniExecutive.m; sourceTree = ""; }; - E818DD1A2A4896EE00F163F7 /* YUMISurmountAraeRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISurmountAraeRegardGovernancer.h; sourceTree = ""; }; - E818DD1B2A4896EE00F163F7 /* YUMISurmountAraeRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISurmountAraeRegardGovernancer.m; sourceTree = ""; }; - E818DD1D2A48974300F163F7 /* SurmountAreaMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SurmountAreaMatrix.h; sourceTree = ""; }; - E818DD1E2A48974300F163F7 /* SurmountAreaMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SurmountAreaMatrix.m; sourceTree = ""; }; - E818DD202A48977F00F163F7 /* YUMISurmountAreaTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISurmountAreaTabulationRegardElement.h; sourceTree = ""; }; - E818DD212A48977F00F163F7 /* YUMISurmountAreaTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISurmountAreaTabulationRegardElement.m; sourceTree = ""; }; - E818E346286ECA4B005EDF68 /* YUMISeparationsAnnounceRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsAnnounceRegardGovernancer.h; sourceTree = ""; }; - E818E347286ECA4B005EDF68 /* YUMISeparationsAnnounceRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsAnnounceRegardGovernancer.m; sourceTree = ""; }; - E818E349286ECABF005EDF68 /* YUMISeparationsAnnounceExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsAnnounceExternalizer.h; sourceTree = ""; }; - E818E34A286ECABF005EDF68 /* YUMISeparationsAnnounceExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsAnnounceExternalizer.m; sourceTree = ""; }; - E818E34C286ECAD8005EDF68 /* FBCSeparationsPublishCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCSeparationsPublishCeremony.h; sourceTree = ""; }; - E818E34D286EDF72005EDF68 /* YUMISeparationsAnnounceAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsAnnounceAssembletionRegardElement.h; sourceTree = ""; }; - E818E34E286EDF72005EDF68 /* YUMISeparationsAnnounceAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsAnnounceAssembletionRegardElement.m; sourceTree = ""; }; - E81A65292834E4F600F55894 /* YUMISeparationsConsiderationRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsConsiderationRegardGovernancer.h; sourceTree = ""; }; - E81A652A2834E4F600F55894 /* YUMISeparationsConsiderationRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsConsiderationRegardGovernancer.m; sourceTree = ""; }; - E81A652F2834E53600F55894 /* YUMISeparationsRecentlyRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsRecentlyRegardGovernancer.h; sourceTree = ""; }; - E81A65302834E53600F55894 /* YUMISeparationsRecentlyRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsRecentlyRegardGovernancer.m; sourceTree = ""; }; - E81A653D283511BE00F55894 /* YUMISeparationsCoactiveRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsCoactiveRegardGovernancer.h; sourceTree = ""; }; - E81A653E283511BE00F55894 /* YUMISeparationsCoactiveRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsCoactiveRegardGovernancer.m; sourceTree = ""; }; - E81A65402835120200F55894 /* YUMISeparationsCoactiveExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsCoactiveExternalizer.h; sourceTree = ""; }; - E81A65412835120200F55894 /* YUMISeparationsCoactiveExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsCoactiveExternalizer.m; sourceTree = ""; }; - E81A65432835121000F55894 /* FBCSeparationsInteractiveCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCSeparationsInteractiveCeremony.h; sourceTree = ""; }; - E81A6544283519CA00F55894 /* SeparationsMotifMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SeparationsMotifMatrix.h; sourceTree = ""; }; - E81A6545283519CA00F55894 /* SeparationsMotifMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SeparationsMotifMatrix.m; sourceTree = ""; }; - E81A654728351B9500F55894 /* YUMISeparationsEncourageIntelligencerRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsEncourageIntelligencerRegard.h; sourceTree = ""; }; - E81A654828351B9500F55894 /* YUMISeparationsEncourageIntelligencerRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsEncourageIntelligencerRegard.m; sourceTree = ""; }; - E81A654A28351D9900F55894 /* YUMISeparationsMotifAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsMotifAssembletionRegardElement.h; sourceTree = ""; }; - E81A654B28351D9900F55894 /* YUMISeparationsMotifAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsMotifAssembletionRegardElement.m; sourceTree = ""; }; - E81AF32327F1D5B8003B9E43 /* YUMIChamberCombatProgressRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCombatProgressRegard.h; sourceTree = ""; }; - E81AF32427F1D5B8003B9E43 /* YUMIChamberCombatProgressRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCombatProgressRegard.m; sourceTree = ""; }; - E81AF32627F1EE69003B9E43 /* YUMIChamberCombatFasciaboardConsumerRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCombatFasciaboardConsumerRegard.h; sourceTree = ""; }; - E81AF32727F1EE69003B9E43 /* YUMIChamberCombatFasciaboardConsumerRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCombatFasciaboardConsumerRegard.m; sourceTree = ""; }; - E81C1B1927705F4B0020D1E4 /* FBCArrangeMicCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCArrangeMicCeremony.h; sourceTree = ""; }; - E81C1B1A27705F6B0020D1E4 /* YUMIScheduleLoudspeakerExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIScheduleLoudspeakerExternalizer.h; sourceTree = ""; }; - E81C1B1B27705F6B0020D1E4 /* YUMIScheduleLoudspeakerExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIScheduleLoudspeakerExternalizer.m; sourceTree = ""; }; - E81C1B1D27705F7A0020D1E4 /* YUMIScheduleLoudspeakerRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIScheduleLoudspeakerRegardGovernancer.h; sourceTree = ""; }; - E81C1B1E27705F7A0020D1E4 /* YUMIScheduleLoudspeakerRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIScheduleLoudspeakerRegardGovernancer.m; sourceTree = ""; }; + E816C11327608A7500C84014 /* XPRoomMiniManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMiniManager.h; sourceTree = ""; }; + E816C11427608A7500C84014 /* XPRoomMiniManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomMiniManager.m; sourceTree = ""; }; + E818DD1A2A4896EE00F163F7 /* XPLoginAraeViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPLoginAraeViewController.h; sourceTree = ""; }; + E818DD1B2A4896EE00F163F7 /* XPLoginAraeViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPLoginAraeViewController.m; sourceTree = ""; }; + E818DD1D2A48974300F163F7 /* LoginAreaModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginAreaModel.h; sourceTree = ""; }; + E818DD1E2A48974300F163F7 /* LoginAreaModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LoginAreaModel.m; sourceTree = ""; }; + E818DD202A48977F00F163F7 /* XPLoginAreaTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPLoginAreaTableViewCell.h; sourceTree = ""; }; + E818DD212A48977F00F163F7 /* XPLoginAreaTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPLoginAreaTableViewCell.m; sourceTree = ""; }; + E818E346286ECA4B005EDF68 /* XPMonentsPublishViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsPublishViewController.h; sourceTree = ""; }; + E818E347286ECA4B005EDF68 /* XPMonentsPublishViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsPublishViewController.m; sourceTree = ""; }; + E818E349286ECABF005EDF68 /* XPMonentsPublishPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsPublishPresenter.h; sourceTree = ""; }; + E818E34A286ECABF005EDF68 /* XPMonentsPublishPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsPublishPresenter.m; sourceTree = ""; }; + E818E34C286ECAD8005EDF68 /* XPMonentsPublishProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsPublishProtocol.h; sourceTree = ""; }; + E818E34D286EDF72005EDF68 /* XPMonentsPublishCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsPublishCollectionViewCell.h; sourceTree = ""; }; + E818E34E286EDF72005EDF68 /* XPMonentsPublishCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsPublishCollectionViewCell.m; sourceTree = ""; }; + E81A65292834E4F600F55894 /* XPMonentsAttentionViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsAttentionViewController.h; sourceTree = ""; }; + E81A652A2834E4F600F55894 /* XPMonentsAttentionViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsAttentionViewController.m; sourceTree = ""; }; + E81A652F2834E53600F55894 /* XPMonentsLatestViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsLatestViewController.h; sourceTree = ""; }; + E81A65302834E53600F55894 /* XPMonentsLatestViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsLatestViewController.m; sourceTree = ""; }; + E81A653D283511BE00F55894 /* XPMonentsInteractiveViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsInteractiveViewController.h; sourceTree = ""; }; + E81A653E283511BE00F55894 /* XPMonentsInteractiveViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsInteractiveViewController.m; sourceTree = ""; }; + E81A65402835120200F55894 /* XPMonentsInteractivePresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsInteractivePresenter.h; sourceTree = ""; }; + E81A65412835120200F55894 /* XPMonentsInteractivePresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsInteractivePresenter.m; sourceTree = ""; }; + E81A65432835121000F55894 /* XPMonentsInteractiveProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsInteractiveProtocol.h; sourceTree = ""; }; + E81A6544283519CA00F55894 /* MonentsTopicModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MonentsTopicModel.h; sourceTree = ""; }; + E81A6545283519CA00F55894 /* MonentsTopicModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MonentsTopicModel.m; sourceTree = ""; }; + E81A654728351B9500F55894 /* XPMonentsRecommendHeaderView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsRecommendHeaderView.h; sourceTree = ""; }; + E81A654828351B9500F55894 /* XPMonentsRecommendHeaderView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsRecommendHeaderView.m; sourceTree = ""; }; + E81A654A28351D9900F55894 /* XPMonentsTopicCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsTopicCollectionViewCell.h; sourceTree = ""; }; + E81A654B28351D9900F55894 /* XPMonentsTopicCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsTopicCollectionViewCell.m; sourceTree = ""; }; + E81AF32327F1D5B8003B9E43 /* XPRoomPKProgressView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKProgressView.h; sourceTree = ""; }; + E81AF32427F1D5B8003B9E43 /* XPRoomPKProgressView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKProgressView.m; sourceTree = ""; }; + E81AF32627F1EE69003B9E43 /* XPRoomPKPanelUserView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKPanelUserView.h; sourceTree = ""; }; + E81AF32727F1EE69003B9E43 /* XPRoomPKPanelUserView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKPanelUserView.m; sourceTree = ""; }; + E81C1B1927705F4B0020D1E4 /* XPArrangeMicProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPArrangeMicProtocol.h; sourceTree = ""; }; + E81C1B1A27705F6B0020D1E4 /* XPArrangeMicPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPArrangeMicPresenter.h; sourceTree = ""; }; + E81C1B1B27705F6B0020D1E4 /* XPArrangeMicPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPArrangeMicPresenter.m; sourceTree = ""; }; + E81C1B1D27705F7A0020D1E4 /* XPArrangeMicViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPArrangeMicViewController.h; sourceTree = ""; }; + E81C1B1E27705F7A0020D1E4 /* XPArrangeMicViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPArrangeMicViewController.m; sourceTree = ""; }; E81C1B2027705F950020D1E4 /* Api+ArrangeMic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+ArrangeMic.h"; sourceTree = ""; }; E81C1B2127705F950020D1E4 /* Api+ArrangeMic.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+ArrangeMic.m"; sourceTree = ""; }; - E81C1B242770663B0020D1E4 /* YUMIScheduleLoudspeakerTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIScheduleLoudspeakerTabulationRegardElement.h; sourceTree = ""; }; - E81C1B252770663B0020D1E4 /* YUMIScheduleLoudspeakerTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIScheduleLoudspeakerTabulationRegardElement.m; sourceTree = ""; }; - E81C1B27277069DD0020D1E4 /* YUMIScheduleLoudspeakerDispossessTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIScheduleLoudspeakerDispossessTabulationRegardElement.h; sourceTree = ""; }; - E81C1B28277069DD0020D1E4 /* YUMIScheduleLoudspeakerDispossessTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIScheduleLoudspeakerDispossessTabulationRegardElement.m; sourceTree = ""; }; - E81C1B2A27706E5C0020D1E4 /* ScheduleLoudspeakerMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ScheduleLoudspeakerMatrix.h; sourceTree = ""; }; - E81C1B2B27706E5C0020D1E4 /* ScheduleLoudspeakerMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ScheduleLoudspeakerMatrix.m; sourceTree = ""; }; - E81C1B2D277071670020D1E4 /* YUMIScheduleLoudspeakerAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIScheduleLoudspeakerAbstractMatrix.h; sourceTree = ""; }; - E81C1B2E277071670020D1E4 /* YUMIScheduleLoudspeakerAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIScheduleLoudspeakerAbstractMatrix.m; sourceTree = ""; }; + E81C1B242770663B0020D1E4 /* XPArrangeMicTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPArrangeMicTableViewCell.h; sourceTree = ""; }; + E81C1B252770663B0020D1E4 /* XPArrangeMicTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPArrangeMicTableViewCell.m; sourceTree = ""; }; + E81C1B27277069DD0020D1E4 /* XPArrangeMicEmptyTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPArrangeMicEmptyTableViewCell.h; sourceTree = ""; }; + E81C1B28277069DD0020D1E4 /* XPArrangeMicEmptyTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPArrangeMicEmptyTableViewCell.m; sourceTree = ""; }; + E81C1B2A27706E5C0020D1E4 /* ArrangeMicModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ArrangeMicModel.h; sourceTree = ""; }; + E81C1B2B27706E5C0020D1E4 /* ArrangeMicModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ArrangeMicModel.m; sourceTree = ""; }; + E81C1B2D277071670020D1E4 /* XPArrangeMicInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPArrangeMicInfoModel.h; sourceTree = ""; }; + E81C1B2E277071670020D1E4 /* XPArrangeMicInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPArrangeMicInfoModel.m; sourceTree = ""; }; E81C278826EAFAF60031E639 /* DESEncrypt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DESEncrypt.h; sourceTree = ""; }; E81C278926EAFAF60031E639 /* Base64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Base64.m; sourceTree = ""; }; E81C278A26EAFAF60031E639 /* Base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Base64.h; sourceTree = ""; }; E81C278B26EAFAF60031E639 /* DESEncrypt.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DESEncrypt.m; sourceTree = ""; }; - E81C279426EB39CC0031E639 /* SurmountForgetCiphercodeExternalize.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SurmountForgetCiphercodeExternalize.h; sourceTree = ""; }; - E81C279526EB39CC0031E639 /* SurmountForgetCiphercodeExternalize.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SurmountForgetCiphercodeExternalize.m; sourceTree = ""; }; - E81C279726EB39E10031E639 /* SurmountForgetCiphercodeCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SurmountForgetCiphercodeCeremony.h; sourceTree = ""; }; + E81C279426EB39CC0031E639 /* LoginForgetPasswordPresent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginForgetPasswordPresent.h; sourceTree = ""; }; + E81C279526EB39CC0031E639 /* LoginForgetPasswordPresent.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LoginForgetPasswordPresent.m; sourceTree = ""; }; + E81C279726EB39E10031E639 /* LoginForgetPasswordProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginForgetPasswordProtocol.h; sourceTree = ""; }; E81C279A26EB65560031E639 /* YUMIMacroUitls.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIMacroUitls.h; sourceTree = ""; }; E81C279B26EEEC620031E639 /* YUMIConstant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIConstant.h; sourceTree = ""; }; E81C279C26EEEC620031E639 /* YUMIConstant.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIConstant.m; sourceTree = ""; }; E81C279E26EEF83D0031E639 /* YUMIHtmlUrl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIHtmlUrl.h; sourceTree = ""; }; E81C279F26EEF83D0031E639 /* YUMIHtmlUrl.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIHtmlUrl.m; sourceTree = ""; }; E81C27A126EF23370031E639 /* YUMINNNN.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMINNNN.h; sourceTree = ""; }; - E81C27A926EF2D920031E639 /* ThirdConsumerAbstract.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ThirdConsumerAbstract.h; sourceTree = ""; }; - E81C27AA26EF2D920031E639 /* ThirdConsumerAbstract.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ThirdConsumerAbstract.m; sourceTree = ""; }; + E81C27A926EF2D920031E639 /* ThirdUserInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ThirdUserInfo.h; sourceTree = ""; }; + E81C27AA26EF2D920031E639 /* ThirdUserInfo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ThirdUserInfo.m; sourceTree = ""; }; E81C27AC26EF39AB0031E639 /* AppDelegate+ThirdConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "AppDelegate+ThirdConfig.h"; sourceTree = ""; }; E81C27AD26EF39AB0031E639 /* AppDelegate+ThirdConfig.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "AppDelegate+ThirdConfig.m"; sourceTree = ""; }; E81D587B271FBC3B003063FE /* RtcInterface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RtcInterface.h; sourceTree = ""; }; - E81D58802720082A003063FE /* MiecreoscoopeWaveRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MiecreoscoopeWaveRegard.h; sourceTree = ""; }; - E81D58812720082A003063FE /* MiecreoscoopeWaveRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MiecreoscoopeWaveRegard.m; sourceTree = ""; }; - E81DCCCB282B63B40039E5C5 /* YUMISeparationsRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsRegardGovernancer.h; sourceTree = ""; }; - E81DCCCC282B63B40039E5C5 /* YUMISeparationsRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsRegardGovernancer.m; sourceTree = ""; }; - E81DCCCE282B63FD0039E5C5 /* YUMISeparationsEncourageRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsEncourageRegardGovernancer.h; sourceTree = ""; }; - E81DCCCF282B63FD0039E5C5 /* YUMISeparationsEncourageRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsEncourageRegardGovernancer.m; sourceTree = ""; }; - E81E09C7290F71BF00A1F410 /* YUMIAdvertiseRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIAdvertiseRegard.h; sourceTree = ""; }; - E81E09C8290F71BF00A1F410 /* YUMIAdvertiseRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIAdvertiseRegard.m; sourceTree = ""; }; - E81E09CA290F732500A1F410 /* YUMIAdIndicateTool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIAdIndicateTool.h; sourceTree = ""; }; - E81E09CB290F732600A1F410 /* YUMIAdIndicateTool.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIAdIndicateTool.m; sourceTree = ""; }; - E81E09CD290F750800A1F410 /* AdvertiseMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AdvertiseMatrix.h; sourceTree = ""; }; - E81E09CE290F750800A1F410 /* AdvertiseMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AdvertiseMatrix.m; sourceTree = ""; }; - E82107792987D4AB00DE7040 /* CommunicationDiscoveryStrangeBewelcometoMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationDiscoveryStrangeBewelcometoMatrix.h; sourceTree = ""; }; - E821077A2987D4AB00DE7040 /* CommunicationDiscoveryStrangeBewelcometoMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationDiscoveryStrangeBewelcometoMatrix.m; sourceTree = ""; }; - E821077C2987D67100DE7040 /* CommunicationVenturePrecautiousMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationVenturePrecautiousMatrix.h; sourceTree = ""; }; - E821077D2987D67100DE7040 /* CommunicationVenturePrecautiousMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationVenturePrecautiousMatrix.m; sourceTree = ""; }; - E821077F2987D7F300DE7040 /* CommunicationSeparationsMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationSeparationsMatrix.h; sourceTree = ""; }; - E82107802987D7F300DE7040 /* CommunicationSeparationsMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationSeparationsMatrix.m; sourceTree = ""; }; - E82107822987E35300DE7040 /* CommunicationSeparationsAutoMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationSeparationsAutoMatrix.h; sourceTree = ""; }; - E82107832987E35300DE7040 /* CommunicationSeparationsAutoMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationSeparationsAutoMatrix.m; sourceTree = ""; }; - E82107852987E49100DE7040 /* CommunicationDeficitSheatheMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationDeficitSheatheMatrix.h; sourceTree = ""; }; - E82107862987E49100DE7040 /* CommunicationDeficitSheatheMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationDeficitSheatheMatrix.m; sourceTree = ""; }; - E82109AB26F1C8A000FC3319 /* ComputationDownFacilitater.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ComputationDownFacilitater.h; sourceTree = ""; }; - E82109AC26F1C8A000FC3319 /* ComputationDownFacilitater.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ComputationDownFacilitater.m; sourceTree = ""; }; - E82109AE26F1D83500FC3319 /* SurmountDilemmaMobileExternalize.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SurmountDilemmaMobileExternalize.h; sourceTree = ""; }; - E82109AF26F1D83500FC3319 /* SurmountDilemmaMobileExternalize.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SurmountDilemmaMobileExternalize.m; sourceTree = ""; }; - E82325E4274CCAFA003A3332 /* YUMIParaticipationAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIParaticipationAbstractMatrix.h; sourceTree = ""; }; - E82325E5274CCAFA003A3332 /* YUMIParaticipationAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIParaticipationAbstractMatrix.m; sourceTree = ""; }; - E82325E7274CE56A003A3332 /* YUMIParaticipationProvision.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIParaticipationProvision.h; sourceTree = ""; }; - E82325E8274CE56A003A3332 /* YUMIParaticipationProvision.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIParaticipationProvision.m; sourceTree = ""; }; - E82325F0274E2DE6003A3332 /* YUMIConsumerSolitaireRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIConsumerSolitaireRegardGovernancer.h; sourceTree = ""; }; - E82325F1274E2DE6003A3332 /* YUMIConsumerSolitaireRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIConsumerSolitaireRegardGovernancer.m; sourceTree = ""; }; - E82325F3274E2E09003A3332 /* YUMIConsumerSolitaireExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIConsumerSolitaireExternalizer.h; sourceTree = ""; }; - E82325F4274E2E09003A3332 /* YUMIConsumerSolitaireExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIConsumerSolitaireExternalizer.m; sourceTree = ""; }; - E82325F6274E2E27003A3332 /* FBCConsumerSolitaireCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCConsumerSolitaireCeremony.h; sourceTree = ""; }; + E81D58802720082A003063FE /* MicroWaveView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MicroWaveView.h; sourceTree = ""; }; + E81D58812720082A003063FE /* MicroWaveView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MicroWaveView.m; sourceTree = ""; }; + E81DCCCB282B63B40039E5C5 /* XPMonentsViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsViewController.h; sourceTree = ""; }; + E81DCCCC282B63B40039E5C5 /* XPMonentsViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsViewController.m; sourceTree = ""; }; + E81DCCCE282B63FD0039E5C5 /* XPMonentsRecommendViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsRecommendViewController.h; sourceTree = ""; }; + E81DCCCF282B63FD0039E5C5 /* XPMonentsRecommendViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsRecommendViewController.m; sourceTree = ""; }; + E81E09C7290F71BF00A1F410 /* XPAdvertiseView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAdvertiseView.h; sourceTree = ""; }; + E81E09C8290F71BF00A1F410 /* XPAdvertiseView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAdvertiseView.m; sourceTree = ""; }; + E81E09CA290F732500A1F410 /* XPAdImageTool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAdImageTool.h; sourceTree = ""; }; + E81E09CB290F732600A1F410 /* XPAdImageTool.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAdImageTool.m; sourceTree = ""; }; + E81E09CD290F750800A1F410 /* AdvertiseModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AdvertiseModel.h; sourceTree = ""; }; + E81E09CE290F750800A1F410 /* AdvertiseModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AdvertiseModel.m; sourceTree = ""; }; + E82107792987D4AB00DE7040 /* MessageFindNewGreetModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageFindNewGreetModel.h; sourceTree = ""; }; + E821077A2987D4AB00DE7040 /* MessageFindNewGreetModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageFindNewGreetModel.m; sourceTree = ""; }; + E821077C2987D67100DE7040 /* MessageRiskAlertModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageRiskAlertModel.h; sourceTree = ""; }; + E821077D2987D67100DE7040 /* MessageRiskAlertModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageRiskAlertModel.m; sourceTree = ""; }; + E821077F2987D7F300DE7040 /* MessageMonentsModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageMonentsModel.h; sourceTree = ""; }; + E82107802987D7F300DE7040 /* MessageMonentsModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageMonentsModel.m; sourceTree = ""; }; + E82107822987E35300DE7040 /* MessageMonentsAutoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageMonentsAutoModel.h; sourceTree = ""; }; + E82107832987E35300DE7040 /* MessageMonentsAutoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageMonentsAutoModel.m; sourceTree = ""; }; + E82107852987E49100DE7040 /* MessageRedPacketModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageRedPacketModel.h; sourceTree = ""; }; + E82107862987E49100DE7040 /* MessageRedPacketModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageRedPacketModel.m; sourceTree = ""; }; + E82109AB26F1C8A000FC3319 /* CountDownHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CountDownHelper.h; sourceTree = ""; }; + E82109AC26F1C8A000FC3319 /* CountDownHelper.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CountDownHelper.m; sourceTree = ""; }; + E82109AE26F1D83500FC3319 /* LoginBindPhonePresent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginBindPhonePresent.h; sourceTree = ""; }; + E82109AF26F1D83500FC3319 /* LoginBindPhonePresent.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LoginBindPhonePresent.m; sourceTree = ""; }; + E82325E4274CCAFA003A3332 /* XPShareInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPShareInfoModel.h; sourceTree = ""; }; + E82325E5274CCAFA003A3332 /* XPShareInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPShareInfoModel.m; sourceTree = ""; }; + E82325E7274CE56A003A3332 /* XPShareItem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPShareItem.h; sourceTree = ""; }; + E82325E8274CE56A003A3332 /* XPShareItem.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPShareItem.m; sourceTree = ""; }; + E82325F0274E2DE6003A3332 /* XPUserCardViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPUserCardViewController.h; sourceTree = ""; }; + E82325F1274E2DE6003A3332 /* XPUserCardViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPUserCardViewController.m; sourceTree = ""; }; + E82325F3274E2E09003A3332 /* XPUserCardPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPUserCardPresenter.h; sourceTree = ""; }; + E82325F4274E2E09003A3332 /* XPUserCardPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPUserCardPresenter.m; sourceTree = ""; }; + E82325F6274E2E27003A3332 /* XPUserCardProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPUserCardProtocol.h; sourceTree = ""; }; E82325F7274E2E42003A3332 /* Api+UserCard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+UserCard.h"; sourceTree = ""; }; E82325F8274E2E42003A3332 /* Api+UserCard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+UserCard.m"; sourceTree = ""; }; - E82325FA274E4735003A3332 /* YUMIConsumerSolitaireProvisionMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIConsumerSolitaireProvisionMatrix.h; sourceTree = ""; }; - E82325FB274E4735003A3332 /* YUMIConsumerSolitaireProvisionMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIConsumerSolitaireProvisionMatrix.m; sourceTree = ""; }; - E82325FE274E48EA003A3332 /* YUMIConsumerSolitaireProvisionAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIConsumerSolitaireProvisionAssembletionRegardElement.h; sourceTree = ""; }; - E82325FF274E48EA003A3332 /* YUMIConsumerSolitaireProvisionAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIConsumerSolitaireProvisionAssembletionRegardElement.m; sourceTree = ""; }; + E82325FA274E4735003A3332 /* XPUserCardItemModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPUserCardItemModel.h; sourceTree = ""; }; + E82325FB274E4735003A3332 /* XPUserCardItemModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPUserCardItemModel.m; sourceTree = ""; }; + E82325FE274E48EA003A3332 /* XPUserCardItemCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPUserCardItemCollectionViewCell.h; sourceTree = ""; }; + E82325FF274E48EA003A3332 /* XPUserCardItemCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPUserCardItemCollectionViewCell.m; sourceTree = ""; }; E8232601274E4AA0003A3332 /* ThemeColor+UserCard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ThemeColor+UserCard.h"; sourceTree = ""; }; E8232602274E4AA0003A3332 /* ThemeColor+UserCard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "ThemeColor+UserCard.m"; sourceTree = ""; }; - E823E38C290BE8BD00EADD86 /* DesirePresentAbstractRefurbishMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DesirePresentAbstractRefurbishMatrix.h; sourceTree = ""; }; - E823E38D290BE8BD00EADD86 /* DesirePresentAbstractRefurbishMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DesirePresentAbstractRefurbishMatrix.m; sourceTree = ""; }; - E824543326F57D6E00BE8163 /* YUMISurmountValidationDilemmaMobileRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISurmountValidationDilemmaMobileRegardGovernancer.h; sourceTree = ""; }; - E824543426F57D6E00BE8163 /* YUMISurmountValidationDilemmaMobileRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISurmountValidationDilemmaMobileRegardGovernancer.m; sourceTree = ""; }; - E824543626F5820A00BE8163 /* YUMISurmountValidationDilemmaMobileExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISurmountValidationDilemmaMobileExternalizer.h; sourceTree = ""; }; - E824543726F5820A00BE8163 /* YUMISurmountValidationDilemmaMobileExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISurmountValidationDilemmaMobileExternalizer.m; sourceTree = ""; }; - E824543926F5822800BE8163 /* FBCSurmountVerifBindPhoneCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCSurmountVerifBindPhoneCeremony.h; sourceTree = ""; }; - E824543B26F58C3A00BE8163 /* YUMISurmountDilemmaSuccessRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISurmountDilemmaSuccessRegard.h; sourceTree = ""; }; - E824543C26F58C3A00BE8163 /* YUMISurmountDilemmaSuccessRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISurmountDilemmaSuccessRegard.m; sourceTree = ""; }; - E824543E26F58F9400BE8163 /* YUMIManeIntersectPwordRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeIntersectPwordRegardGovernancer.h; sourceTree = ""; }; - E824543F26F58F9400BE8163 /* YUMIManeIntersectPwordRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeIntersectPwordRegardGovernancer.m; sourceTree = ""; }; - E824544126F58FCE00BE8163 /* YUMIManeIntersectPwordIntrojectionRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeIntersectPwordIntrojectionRegard.h; sourceTree = ""; }; - E824544226F58FCE00BE8163 /* YUMIManeIntersectPwordIntrojectionRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeIntersectPwordIntrojectionRegard.m; sourceTree = ""; }; - E824544426F5934600BE8163 /* YUMIManeIntersectPwordExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeIntersectPwordExternalizer.h; sourceTree = ""; }; - E824544526F5934600BE8163 /* YUMIManeIntersectPwordExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeIntersectPwordExternalizer.m; sourceTree = ""; }; - E824544726F5940600BE8163 /* FBCManePayPwordCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCManePayPwordCeremony.h; sourceTree = ""; }; - E824544926F5BBB800BE8163 /* YUMIManeModifIntersectPwordRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeModifIntersectPwordRegardGovernancer.h; sourceTree = ""; }; - E824544A26F5BBB800BE8163 /* YUMIManeModifIntersectPwordRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeModifIntersectPwordRegardGovernancer.m; sourceTree = ""; }; - E824544C26F5BC1A00BE8163 /* YUMIManeModifIntersectPwordRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeModifIntersectPwordRegard.h; sourceTree = ""; }; - E824544D26F5BC1A00BE8163 /* YUMIManeModifIntersectPwordRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeModifIntersectPwordRegard.m; sourceTree = ""; }; - E824544F26F5CE6E00BE8163 /* YUMIManeModifIntersectPwordExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeModifIntersectPwordExternalizer.h; sourceTree = ""; }; - E824545026F5CE6E00BE8163 /* YUMIManeModifIntersectPwordExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeModifIntersectPwordExternalizer.m; sourceTree = ""; }; - E824545226F5CE9C00BE8163 /* FBCManeModifPayCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCManeModifPayCeremony.h; sourceTree = ""; }; - E824545426F5E51900BE8163 /* YUMIManeValidationIdentityRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeValidationIdentityRegardGovernancer.h; sourceTree = ""; }; - E824545526F5E51900BE8163 /* YUMIManeValidationIdentityRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeValidationIdentityRegardGovernancer.m; sourceTree = ""; }; - E824545726F5E65900BE8163 /* YUMIManeValidationIdentityRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeValidationIdentityRegard.h; sourceTree = ""; }; - E824545826F5E65900BE8163 /* YUMIManeValidationIdentityRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeValidationIdentityRegard.m; sourceTree = ""; }; - E824545A26F5EEBA00BE8163 /* YUMIManeValidationIdentityExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeValidationIdentityExternalizer.h; sourceTree = ""; }; - E824545B26F5EEBA00BE8163 /* YUMIManeValidationIdentityExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeValidationIdentityExternalizer.m; sourceTree = ""; }; - E824545D26F5EEFD00BE8163 /* FBCManeVerifIdentityCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCManeVerifIdentityCeremony.h; sourceTree = ""; }; - E824545F26F5F4E400BE8163 /* YUMIManeReassociationIntersectPwordRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeReassociationIntersectPwordRegardGovernancer.h; sourceTree = ""; }; - E824546026F5F4E400BE8163 /* YUMIManeReassociationIntersectPwordRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeReassociationIntersectPwordRegardGovernancer.m; sourceTree = ""; }; - E824546226F5FF1C00BE8163 /* YUMIManeReassociationIntersectCiphercodeExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeReassociationIntersectCiphercodeExternalizer.h; sourceTree = ""; }; - E824546326F5FF1C00BE8163 /* YUMIManeReassociationIntersectCiphercodeExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeReassociationIntersectCiphercodeExternalizer.m; sourceTree = ""; }; - E824546526F5FF5100BE8163 /* FBCManeResetPayCiphercodeCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCManeResetPayCiphercodeCeremony.h; sourceTree = ""; }; - E8252FEC27687DF1002B3164 /* ImportpriseAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ImportpriseAbstractMatrix.h; sourceTree = ""; }; - E8252FED27687DF1002B3164 /* ImportpriseAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ImportpriseAbstractMatrix.m; sourceTree = ""; }; - E82D5C6B276ADCE700858D6D /* YUMIManePretendDispossessTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManePretendDispossessTabulationRegardElement.h; sourceTree = ""; }; - E82D5C6C276ADCE700858D6D /* YUMIManePretendDispossessTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManePretendDispossessTabulationRegardElement.m; sourceTree = ""; }; - E82D5C6E276AE60000858D6D /* IntelligencewearMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IntelligencewearMatrix.h; sourceTree = ""; }; - E82D5C6F276AE60000858D6D /* IntelligencewearMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = IntelligencewearMatrix.m; sourceTree = ""; }; - E82D5C71276AE94800858D6D /* CarMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CarMatrix.h; sourceTree = ""; }; - E82D5C72276AE94800858D6D /* CarMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CarMatrix.m; sourceTree = ""; }; - E82D5C74276AEB5100858D6D /* NameplateMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NameplateMatrix.h; sourceTree = ""; }; - E82D5C75276AEB5100858D6D /* NameplateMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NameplateMatrix.m; sourceTree = ""; }; - E82D5C78276B25D100858D6D /* SpriteSheetIndicateExecutive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpriteSheetIndicateExecutive.h; sourceTree = ""; }; - E82D5C79276B25D100858D6D /* SpriteSheetIndicateExecutive.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SpriteSheetIndicateExecutive.m; sourceTree = ""; }; + E823E38C290BE8BD00EADD86 /* WishGiftInfoUpdateModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WishGiftInfoUpdateModel.h; sourceTree = ""; }; + E823E38D290BE8BD00EADD86 /* WishGiftInfoUpdateModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WishGiftInfoUpdateModel.m; sourceTree = ""; }; + E824543326F57D6E00BE8163 /* XPLoginVerifBindPhoneViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPLoginVerifBindPhoneViewController.h; sourceTree = ""; }; + E824543426F57D6E00BE8163 /* XPLoginVerifBindPhoneViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPLoginVerifBindPhoneViewController.m; sourceTree = ""; }; + E824543626F5820A00BE8163 /* XPLoginVerifBindPhonePresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPLoginVerifBindPhonePresenter.h; sourceTree = ""; }; + E824543726F5820A00BE8163 /* XPLoginVerifBindPhonePresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPLoginVerifBindPhonePresenter.m; sourceTree = ""; }; + E824543926F5822800BE8163 /* XPLoginVerifBindPhoneProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPLoginVerifBindPhoneProtocol.h; sourceTree = ""; }; + E824543B26F58C3A00BE8163 /* XPLoginBindSuccessView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPLoginBindSuccessView.h; sourceTree = ""; }; + E824543C26F58C3A00BE8163 /* XPLoginBindSuccessView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPLoginBindSuccessView.m; sourceTree = ""; }; + E824543E26F58F9400BE8163 /* XPMinePayPwdViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMinePayPwdViewController.h; sourceTree = ""; }; + E824543F26F58F9400BE8163 /* XPMinePayPwdViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMinePayPwdViewController.m; sourceTree = ""; }; + E824544126F58FCE00BE8163 /* XPMinePayPwdInputView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMinePayPwdInputView.h; sourceTree = ""; }; + E824544226F58FCE00BE8163 /* XPMinePayPwdInputView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMinePayPwdInputView.m; sourceTree = ""; }; + E824544426F5934600BE8163 /* XPMinePayPwdPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMinePayPwdPresenter.h; sourceTree = ""; }; + E824544526F5934600BE8163 /* XPMinePayPwdPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMinePayPwdPresenter.m; sourceTree = ""; }; + E824544726F5940600BE8163 /* XPMinePayPwdProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMinePayPwdProtocol.h; sourceTree = ""; }; + E824544926F5BBB800BE8163 /* XPMineModifPayPwdViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineModifPayPwdViewController.h; sourceTree = ""; }; + E824544A26F5BBB800BE8163 /* XPMineModifPayPwdViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineModifPayPwdViewController.m; sourceTree = ""; }; + E824544C26F5BC1A00BE8163 /* XPMineModifPayPwdView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineModifPayPwdView.h; sourceTree = ""; }; + E824544D26F5BC1A00BE8163 /* XPMineModifPayPwdView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineModifPayPwdView.m; sourceTree = ""; }; + E824544F26F5CE6E00BE8163 /* XPMineModifPayPwdPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineModifPayPwdPresenter.h; sourceTree = ""; }; + E824545026F5CE6E00BE8163 /* XPMineModifPayPwdPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineModifPayPwdPresenter.m; sourceTree = ""; }; + E824545226F5CE9C00BE8163 /* XPMineModifPayProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineModifPayProtocol.h; sourceTree = ""; }; + E824545426F5E51900BE8163 /* XPMineVerifIdentityViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineVerifIdentityViewController.h; sourceTree = ""; }; + E824545526F5E51900BE8163 /* XPMineVerifIdentityViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineVerifIdentityViewController.m; sourceTree = ""; }; + E824545726F5E65900BE8163 /* XPMineVerifIdentityView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineVerifIdentityView.h; sourceTree = ""; }; + E824545826F5E65900BE8163 /* XPMineVerifIdentityView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineVerifIdentityView.m; sourceTree = ""; }; + E824545A26F5EEBA00BE8163 /* XPMineVerifIdentityPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineVerifIdentityPresenter.h; sourceTree = ""; }; + E824545B26F5EEBA00BE8163 /* XPMineVerifIdentityPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineVerifIdentityPresenter.m; sourceTree = ""; }; + E824545D26F5EEFD00BE8163 /* XPMineVerifIdentityProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineVerifIdentityProtocol.h; sourceTree = ""; }; + E824545F26F5F4E400BE8163 /* XPMineResetPayPwdViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineResetPayPwdViewController.h; sourceTree = ""; }; + E824546026F5F4E400BE8163 /* XPMineResetPayPwdViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineResetPayPwdViewController.m; sourceTree = ""; }; + E824546226F5FF1C00BE8163 /* XPMineResetPayPasswordPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineResetPayPasswordPresenter.h; sourceTree = ""; }; + E824546326F5FF1C00BE8163 /* XPMineResetPayPasswordPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineResetPayPasswordPresenter.m; sourceTree = ""; }; + E824546526F5FF5100BE8163 /* XPMineResetPayPasswordProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineResetPayPasswordProtocol.h; sourceTree = ""; }; + E8252FEC27687DF1002B3164 /* ActivityInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ActivityInfoModel.h; sourceTree = ""; }; + E8252FED27687DF1002B3164 /* ActivityInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ActivityInfoModel.m; sourceTree = ""; }; + E82D5C6B276ADCE700858D6D /* XPMineDressEmptyTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineDressEmptyTableViewCell.h; sourceTree = ""; }; + E82D5C6C276ADCE700858D6D /* XPMineDressEmptyTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineDressEmptyTableViewCell.m; sourceTree = ""; }; + E82D5C6E276AE60000858D6D /* HeadwearModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HeadwearModel.h; sourceTree = ""; }; + E82D5C6F276AE60000858D6D /* HeadwearModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HeadwearModel.m; sourceTree = ""; }; + E82D5C71276AE94800858D6D /* CarModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CarModel.h; sourceTree = ""; }; + E82D5C72276AE94800858D6D /* CarModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CarModel.m; sourceTree = ""; }; + E82D5C74276AEB5100858D6D /* NameplateModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NameplateModel.h; sourceTree = ""; }; + E82D5C75276AEB5100858D6D /* NameplateModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NameplateModel.m; sourceTree = ""; }; + E82D5C78276B25D100858D6D /* SpriteSheetImageManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpriteSheetImageManager.h; sourceTree = ""; }; + E82D5C79276B25D100858D6D /* SpriteSheetImageManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SpriteSheetImageManager.m; sourceTree = ""; }; E82D5C7B276B343300858D6D /* YYAnimatedImageView+ImageShow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "YYAnimatedImageView+ImageShow.h"; sourceTree = ""; }; E82D5C7C276B343300858D6D /* YYAnimatedImageView+ImageShow.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "YYAnimatedImageView+ImageShow.m"; sourceTree = ""; }; - E82E75042828E76400C25EF7 /* YUMICoreAtomicExecutive.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMICoreAtomicExecutive.h; sourceTree = ""; }; - E82E75052828E76400C25EF7 /* YUMICoreAtomicExecutive.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMICoreAtomicExecutive.m; sourceTree = ""; }; - E82EE0F6272FDDFA00D15DC1 /* ConsumerPrivacyRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ConsumerPrivacyRegard.h; sourceTree = ""; }; - E82EE0F7272FDDFA00D15DC1 /* ConsumerPrivacyRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ConsumerPrivacyRegard.m; sourceTree = ""; }; - E833ED0B274FAD1C00A2463B /* XCombatickConsumerMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatickConsumerMatrix.h; sourceTree = ""; }; - E833ED0C274FAD1C00A2463B /* XCombatickConsumerMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatickConsumerMatrix.m; sourceTree = ""; }; - E83645662A40A2DC00E0DBE4 /* YUMICommunicationSolitaireDisporterExecutive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMICommunicationSolitaireDisporterExecutive.h; sourceTree = ""; }; - E83645672A40A2DC00E0DBE4 /* YUMICommunicationSolitaireDisporterExecutive.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMICommunicationSolitaireDisporterExecutive.m; sourceTree = ""; }; - E83645692A40A33300E0DBE4 /* ManeCommunicationSolitaireStatementAbstractMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ManeCommunicationSolitaireStatementAbstractMatrix.m; sourceTree = ""; }; - E836456A2A40A33300E0DBE4 /* ManeCommunicationSolitaireStatementAbstractMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ManeCommunicationSolitaireStatementAbstractMatrix.h; sourceTree = ""; }; + E82E75042828E76400C25EF7 /* XPCoreDataManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPCoreDataManager.h; sourceTree = ""; }; + E82E75052828E76400C25EF7 /* XPCoreDataManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPCoreDataManager.m; sourceTree = ""; }; + E82EE0F6272FDDFA00D15DC1 /* UserPrivacyView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UserPrivacyView.h; sourceTree = ""; }; + E82EE0F7272FDDFA00D15DC1 /* UserPrivacyView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UserPrivacyView.m; sourceTree = ""; }; + E833ED0B274FAD1C00A2463B /* XPKickUserModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPKickUserModel.h; sourceTree = ""; }; + E833ED0C274FAD1C00A2463B /* XPKickUserModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPKickUserModel.m; sourceTree = ""; }; + E83645662A40A2DC00E0DBE4 /* XPSkillCardPlayerManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPSkillCardPlayerManager.h; sourceTree = ""; }; + E83645672A40A2DC00E0DBE4 /* XPSkillCardPlayerManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPSkillCardPlayerManager.m; sourceTree = ""; }; + E83645692A40A33300E0DBE4 /* MineSkillCardListInfoModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MineSkillCardListInfoModel.m; sourceTree = ""; }; + E836456A2A40A33300E0DBE4 /* MineSkillCardListInfoModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MineSkillCardListInfoModel.h; sourceTree = ""; }; E83645A62A40AF5400E0DBE4 /* NSBundle+Localizable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSBundle+Localizable.h"; sourceTree = ""; }; E83645A72A40AF5400E0DBE4 /* NSBundle+Localizable.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSBundle+Localizable.m"; sourceTree = ""; }; - E8383695298A598D00112E1C /* CommunicationTipsMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationTipsMatrix.h; sourceTree = ""; }; - E8383696298A598D00112E1C /* CommunicationTipsMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationTipsMatrix.m; sourceTree = ""; }; - E8383698298A59C100112E1C /* CommunicationTipsRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationTipsRegard.h; sourceTree = ""; }; - E8383699298A59C100112E1C /* CommunicationTipsRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationTipsRegard.m; sourceTree = ""; }; - E838D99E275E1BF60079E0B5 /* YUMIChamberBrightnessRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberBrightnessRegard.h; sourceTree = ""; }; - E838D99F275E1BF60079E0B5 /* YUMIChamberBrightnessRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberBrightnessRegard.m; sourceTree = ""; }; - E83953202769F33B00CF2F24 /* YUMIChamberFunctionAccommodatedRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberFunctionAccommodatedRegard.h; sourceTree = ""; }; - E83953212769F33B00CF2F24 /* YUMIChamberFunctionAccommodatedRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberFunctionAccommodatedRegard.m; sourceTree = ""; }; - E8395328276A002800CF2F24 /* YUMIManePretendUpwardsRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManePretendUpwardsRegardGovernancer.h; sourceTree = ""; }; - E8395329276A002800CF2F24 /* YUMIManePretendUpwardsRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManePretendUpwardsRegardGovernancer.m; sourceTree = ""; }; - E839532B276A030F00CF2F24 /* YUMIManePretendUpwardsStatementRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManePretendUpwardsStatementRegardGovernancer.h; sourceTree = ""; }; - E839532C276A030F00CF2F24 /* YUMIManePretendUpwardsStatementRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManePretendUpwardsStatementRegardGovernancer.m; sourceTree = ""; }; + E8383695298A598D00112E1C /* MessageTipsModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageTipsModel.h; sourceTree = ""; }; + E8383696298A598D00112E1C /* MessageTipsModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageTipsModel.m; sourceTree = ""; }; + E8383698298A59C100112E1C /* MessageTipsView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageTipsView.h; sourceTree = ""; }; + E8383699298A59C100112E1C /* MessageTipsView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageTipsView.m; sourceTree = ""; }; + E838D99E275E1BF60079E0B5 /* XPRoomAnimationView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomAnimationView.h; sourceTree = ""; }; + E838D99F275E1BF60079E0B5 /* XPRoomAnimationView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomAnimationView.m; sourceTree = ""; }; + E83953202769F33B00CF2F24 /* XPRoomFunctionContainerView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomFunctionContainerView.h; sourceTree = ""; }; + E83953212769F33B00CF2F24 /* XPRoomFunctionContainerView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomFunctionContainerView.m; sourceTree = ""; }; + E8395328276A002800CF2F24 /* XPMineDressUpViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineDressUpViewController.h; sourceTree = ""; }; + E8395329276A002800CF2F24 /* XPMineDressUpViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineDressUpViewController.m; sourceTree = ""; }; + E839532B276A030F00CF2F24 /* XPMineDressUpListViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineDressUpListViewController.h; sourceTree = ""; }; + E839532C276A030F00CF2F24 /* XPMineDressUpListViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineDressUpListViewController.m; sourceTree = ""; }; E839532F276A03AE00CF2F24 /* Api+DressUp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+DressUp.h"; sourceTree = ""; }; E8395330276A03AE00CF2F24 /* Api+DressUp.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+DressUp.m"; sourceTree = ""; }; - E8395332276A03C300CF2F24 /* YUMIManePretendUpwardsExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManePretendUpwardsExternalizer.h; sourceTree = ""; }; - E8395333276A03C300CF2F24 /* YUMIManePretendUpwardsExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManePretendUpwardsExternalizer.m; sourceTree = ""; }; - E8395335276A03E200CF2F24 /* FBCManePretendedCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCManePretendedCeremony.h; sourceTree = ""; }; - E8395337276A0CC100CF2F24 /* YUMIManeIntelligencewearTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeIntelligencewearTabulationRegardElement.h; sourceTree = ""; }; - E8395338276A0CC100CF2F24 /* YUMIManeIntelligencewearTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeIntelligencewearTabulationRegardElement.m; sourceTree = ""; }; - E839533A276A0CCD00CF2F24 /* YUMIManeCarTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeCarTabulationRegardElement.h; sourceTree = ""; }; - E839533B276A0CCD00CF2F24 /* YUMIManeCarTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeCarTabulationRegardElement.m; sourceTree = ""; }; - E839533D276A0CDB00CF2F24 /* YUMIManeNameplateTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeNameplateTabulationRegardElement.h; sourceTree = ""; }; - E839533E276A0CDB00CF2F24 /* YUMIManeNameplateTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeNameplateTabulationRegardElement.m; sourceTree = ""; }; - E8398069290288660084BFC8 /* YUMICommunicationAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMICommunicationAbstractMatrix.h; sourceTree = ""; }; - E839806A290288660084BFC8 /* YUMICommunicationAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMICommunicationAbstractMatrix.m; sourceTree = ""; }; - E83ABEF4280E9AD800322EE4 /* CommunicationSatisfactionUnSupportRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationSatisfactionUnSupportRegard.h; sourceTree = ""; }; - E83ABEF5280E9AD800322EE4 /* CommunicationSatisfactionUnSupportRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationSatisfactionUnSupportRegard.m; sourceTree = ""; }; - E83ABEF7280EAF3F00322EE4 /* CommunicationSatisfactionUnfoildEnergeticRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationSatisfactionUnfoildEnergeticRegard.h; sourceTree = ""; }; - E83ABEF8280EAF3F00322EE4 /* CommunicationSatisfactionUnfoildEnergeticRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationSatisfactionUnfoildEnergeticRegard.m; sourceTree = ""; }; - E83ABEFB280EB5E200322EE4 /* SatisfactionUnfoildEnergeticAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SatisfactionUnfoildEnergeticAbstractMatrix.h; sourceTree = ""; }; - E83ABEFC280EB5E200322EE4 /* SatisfactionUnfoildEnergeticAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SatisfactionUnfoildEnergeticAbstractMatrix.m; sourceTree = ""; }; - E83ABEFE280EC45700322EE4 /* CommunicationSatisfactionApplicationParaticipationRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationSatisfactionApplicationParaticipationRegard.h; sourceTree = ""; }; - E83ABEFF280EC45700322EE4 /* CommunicationSatisfactionApplicationParaticipationRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationSatisfactionApplicationParaticipationRegard.m; sourceTree = ""; }; - E83ABF01280EC90C00322EE4 /* SatisfactionApplicationParaticipationMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SatisfactionApplicationParaticipationMatrix.h; sourceTree = ""; }; - E83ABF02280EC90C00322EE4 /* SatisfactionApplicationParaticipationMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SatisfactionApplicationParaticipationMatrix.m; sourceTree = ""; }; - E83ABF04280EDE2B00322EE4 /* CommunicationSatisfactionPrototypeAscensionRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationSatisfactionPrototypeAscensionRegard.h; sourceTree = ""; }; - E83ABF05280EDE2B00322EE4 /* CommunicationSatisfactionPrototypeAscensionRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationSatisfactionPrototypeAscensionRegard.m; sourceTree = ""; }; - E83DB47827462C4500D8CBD1 /* YUMIPresentBigCaptureMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPresentBigCaptureMatrix.h; sourceTree = ""; }; - E83DB47927462C4500D8CBD1 /* YUMIPresentBigCaptureMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPresentBigCaptureMatrix.m; sourceTree = ""; }; - E83DB47B2746372300D8CBD1 /* YUMIChamberPresentOriflammeRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberPresentOriflammeRegard.h; sourceTree = ""; }; - E83DB47C2746372300D8CBD1 /* YUMIChamberPresentOriflammeRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberPresentOriflammeRegard.m; sourceTree = ""; }; - E83DB47F274649FB00D8CBD1 /* YUMIPresentOriflammeConsumerAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPresentOriflammeConsumerAbstractMatrix.h; sourceTree = ""; }; - E83DB480274649FB00D8CBD1 /* YUMIPresentOriflammeConsumerAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPresentOriflammeConsumerAbstractMatrix.m; sourceTree = ""; }; - E83DB4822746661800D8CBD1 /* YUMIChamberPresentPingbackRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberPresentPingbackRegard.h; sourceTree = ""; }; - E83DB4832746661800D8CBD1 /* YUMIChamberPresentPingbackRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberPresentPingbackRegard.m; sourceTree = ""; }; - E83DB485274670DA00D8CBD1 /* YUMIChamberPresentBroadCastMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberPresentBroadCastMatrix.h; sourceTree = ""; }; - E83DB486274670DA00D8CBD1 /* YUMIChamberPresentBroadCastMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberPresentBroadCastMatrix.m; sourceTree = ""; }; - E8412F9427795E34006E1101 /* YUMIChamberCallforFanaticsRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCallforFanaticsRegard.h; sourceTree = ""; }; - E8412F9527795E34006E1101 /* YUMIChamberCallforFanaticsRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCallforFanaticsRegard.m; sourceTree = ""; }; - E8412F9727799249006E1101 /* CallforFanaticsMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CallforFanaticsMatrix.h; sourceTree = ""; }; - E8412F9827799249006E1101 /* CallforFanaticsMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CallforFanaticsMatrix.m; sourceTree = ""; }; - E8412FA02779BE8F006E1101 /* YUMIChamberInstanllingRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberInstanllingRegardGovernancer.h; sourceTree = ""; }; - E8412FA12779BE8F006E1101 /* YUMIChamberInstanllingRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberInstanllingRegardGovernancer.m; sourceTree = ""; }; - E8412FA42779BED1006E1101 /* YUMIChamberInstanllingTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberInstanllingTabulationRegardElement.h; sourceTree = ""; }; - E8412FA52779BED1006E1101 /* YUMIChamberInstanllingTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberInstanllingTabulationRegardElement.m; sourceTree = ""; }; - E8412FA72779C2ED006E1101 /* YUMIChamberInstanllingProvisionMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberInstanllingProvisionMatrix.h; sourceTree = ""; }; - E8412FA82779C2ED006E1101 /* YUMIChamberInstanllingProvisionMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberInstanllingProvisionMatrix.m; sourceTree = ""; }; - E8412FAD2779CB2D006E1101 /* FBCChamberInstanllingCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCChamberInstanllingCeremony.h; sourceTree = ""; }; - E8412FAE2779CB4D006E1101 /* YUMIChamberInstanllingExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberInstanllingExternalizer.h; sourceTree = ""; }; - E8412FAF2779CB4D006E1101 /* YUMIChamberInstanllingExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberInstanllingExternalizer.m; sourceTree = ""; }; + E8395332276A03C300CF2F24 /* XPMineDressUpPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineDressUpPresenter.h; sourceTree = ""; }; + E8395333276A03C300CF2F24 /* XPMineDressUpPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineDressUpPresenter.m; sourceTree = ""; }; + E8395335276A03E200CF2F24 /* XPMineDressUpProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineDressUpProtocol.h; sourceTree = ""; }; + E8395337276A0CC100CF2F24 /* XPMineHeadwearTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineHeadwearTableViewCell.h; sourceTree = ""; }; + E8395338276A0CC100CF2F24 /* XPMineHeadwearTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineHeadwearTableViewCell.m; sourceTree = ""; }; + E839533A276A0CCD00CF2F24 /* XPMineCarTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineCarTableViewCell.h; sourceTree = ""; }; + E839533B276A0CCD00CF2F24 /* XPMineCarTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineCarTableViewCell.m; sourceTree = ""; }; + E839533D276A0CDB00CF2F24 /* XPMineNameplateTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineNameplateTableViewCell.h; sourceTree = ""; }; + E839533E276A0CDB00CF2F24 /* XPMineNameplateTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineNameplateTableViewCell.m; sourceTree = ""; }; + E8398069290288660084BFC8 /* XPMessageInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMessageInfoModel.h; sourceTree = ""; }; + E839806A290288660084BFC8 /* XPMessageInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMessageInfoModel.m; sourceTree = ""; }; + E83ABEF4280E9AD800322EE4 /* MessageContentUnSupportView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageContentUnSupportView.h; sourceTree = ""; }; + E83ABEF5280E9AD800322EE4 /* MessageContentUnSupportView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageContentUnSupportView.m; sourceTree = ""; }; + E83ABEF7280EAF3F00322EE4 /* MessageContentOpenLiveView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageContentOpenLiveView.h; sourceTree = ""; }; + E83ABEF8280EAF3F00322EE4 /* MessageContentOpenLiveView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageContentOpenLiveView.m; sourceTree = ""; }; + E83ABEFB280EB5E200322EE4 /* ContentOpenLiveInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ContentOpenLiveInfoModel.h; sourceTree = ""; }; + E83ABEFC280EB5E200322EE4 /* ContentOpenLiveInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ContentOpenLiveInfoModel.m; sourceTree = ""; }; + E83ABEFE280EC45700322EE4 /* MessageContentApplicationShareView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageContentApplicationShareView.h; sourceTree = ""; }; + E83ABEFF280EC45700322EE4 /* MessageContentApplicationShareView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageContentApplicationShareView.m; sourceTree = ""; }; + E83ABF01280EC90C00322EE4 /* ContentApplicationShareModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ContentApplicationShareModel.h; sourceTree = ""; }; + E83ABF02280EC90C00322EE4 /* ContentApplicationShareModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ContentApplicationShareModel.m; sourceTree = ""; }; + E83ABF04280EDE2B00322EE4 /* MessageContentLevelUpgradeView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageContentLevelUpgradeView.h; sourceTree = ""; }; + E83ABF05280EDE2B00322EE4 /* MessageContentLevelUpgradeView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageContentLevelUpgradeView.m; sourceTree = ""; }; + E83DB47827462C4500D8CBD1 /* XPGiftBigPrizeModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftBigPrizeModel.h; sourceTree = ""; }; + E83DB47927462C4500D8CBD1 /* XPGiftBigPrizeModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftBigPrizeModel.m; sourceTree = ""; }; + E83DB47B2746372300D8CBD1 /* XPRoomGiftBannerView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomGiftBannerView.h; sourceTree = ""; }; + E83DB47C2746372300D8CBD1 /* XPRoomGiftBannerView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomGiftBannerView.m; sourceTree = ""; }; + E83DB47F274649FB00D8CBD1 /* XPGiftBannerUserInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftBannerUserInfoModel.h; sourceTree = ""; }; + E83DB480274649FB00D8CBD1 /* XPGiftBannerUserInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftBannerUserInfoModel.m; sourceTree = ""; }; + E83DB4822746661800D8CBD1 /* XPRoomGiftBroadcastView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomGiftBroadcastView.h; sourceTree = ""; }; + E83DB4832746661800D8CBD1 /* XPRoomGiftBroadcastView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomGiftBroadcastView.m; sourceTree = ""; }; + E8412F9427795E34006E1101 /* XPRoomInviteFansView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomInviteFansView.h; sourceTree = ""; }; + E8412F9527795E34006E1101 /* XPRoomInviteFansView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomInviteFansView.m; sourceTree = ""; }; + E8412F9727799249006E1101 /* InviteFansModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InviteFansModel.h; sourceTree = ""; }; + E8412F9827799249006E1101 /* InviteFansModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InviteFansModel.m; sourceTree = ""; }; + E8412FA02779BE8F006E1101 /* XPRoomSettingViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomSettingViewController.h; sourceTree = ""; }; + E8412FA12779BE8F006E1101 /* XPRoomSettingViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomSettingViewController.m; sourceTree = ""; }; + E8412FA42779BED1006E1101 /* XPRoomSettingTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomSettingTableViewCell.h; sourceTree = ""; }; + E8412FA52779BED1006E1101 /* XPRoomSettingTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomSettingTableViewCell.m; sourceTree = ""; }; + E8412FA72779C2ED006E1101 /* XPRoomSettingItemModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomSettingItemModel.h; sourceTree = ""; }; + E8412FA82779C2ED006E1101 /* XPRoomSettingItemModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomSettingItemModel.m; sourceTree = ""; }; + E8412FAD2779CB2D006E1101 /* XPRoomSettingProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomSettingProtocol.h; sourceTree = ""; }; + E8412FAE2779CB4D006E1101 /* XPRoomSettingPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomSettingPresenter.h; sourceTree = ""; }; + E8412FAF2779CB4D006E1101 /* XPRoomSettingPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomSettingPresenter.m; sourceTree = ""; }; E8412FB12779E285006E1101 /* Api+RoomSetting.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+RoomSetting.h"; sourceTree = ""; }; E8412FB22779E285006E1101 /* Api+RoomSetting.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+RoomSetting.m"; sourceTree = ""; }; - E84150B927747BAF00A7F548 /* YUMIThresholdReindictExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIThresholdReindictExternalizer.h; sourceTree = ""; }; - E84150BA27747BAF00A7F548 /* YUMIThresholdReindictExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIThresholdReindictExternalizer.m; sourceTree = ""; }; - E84150BC27747BBD00A7F548 /* FBCFirstReindictCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCFirstReindictCeremony.h; sourceTree = ""; }; + E84150B927747BAF00A7F548 /* XPFirstRechargePresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPFirstRechargePresenter.h; sourceTree = ""; }; + E84150BA27747BAF00A7F548 /* XPFirstRechargePresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPFirstRechargePresenter.m; sourceTree = ""; }; + E84150BC27747BBD00A7F548 /* XPFirstRechargeProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPFirstRechargeProtocol.h; sourceTree = ""; }; E84150BD27747BD300A7F548 /* Api+FirstRecharge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+FirstRecharge.h"; sourceTree = ""; }; E84150BE27747BD300A7F548 /* Api+FirstRecharge.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+FirstRecharge.m"; sourceTree = ""; }; - E84150C027747BF700A7F548 /* ThresholdReindictMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ThresholdReindictMatrix.h; sourceTree = ""; }; - E84150C127747BF700A7F548 /* ThresholdReindictMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ThresholdReindictMatrix.m; sourceTree = ""; }; - E84150C327747E0900A7F548 /* ThresholdReindictRewardMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ThresholdReindictRewardMatrix.h; sourceTree = ""; }; - E84150C427747E0900A7F548 /* ThresholdReindictRewardMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ThresholdReindictRewardMatrix.m; sourceTree = ""; }; - E841ED5F280FB0BD00904808 /* SatisfactionPrototypeAscensionMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SatisfactionPrototypeAscensionMatrix.h; sourceTree = ""; }; - E841ED60280FB0BD00904808 /* SatisfactionPrototypeAscensionMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SatisfactionPrototypeAscensionMatrix.m; sourceTree = ""; }; - E84843AD27F59E7E0050D365 /* YUMIChamberCombatConsequentRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCombatConsequentRegard.h; sourceTree = ""; }; - E84843AE27F59E7E0050D365 /* YUMIChamberCombatConsequentRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCombatConsequentRegard.m; sourceTree = ""; }; - E84843B027F5A0740050D365 /* YUMIRomCombatConsequentChampionDesignation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIRomCombatConsequentChampionDesignation.h; sourceTree = ""; }; - E84843B127F5A0740050D365 /* YUMIRomCombatConsequentChampionDesignation.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIRomCombatConsequentChampionDesignation.m; sourceTree = ""; }; - E84A2E802A527DF800D6AF8A /* YUMIRevenueReflectionGoldSpecificsVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIRevenueReflectionGoldSpecificsVC.h; sourceTree = ""; }; - E84A2E812A527DF800D6AF8A /* YUMIRevenueReflectionVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIRevenueReflectionVC.m; sourceTree = ""; }; - E84A2E822A527DF800D6AF8A /* YUMIExchangeDiamondsVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIExchangeDiamondsVC.m; sourceTree = ""; }; - E84A2E842A527DF800D6AF8A /* YUMIRevenueReflectionGoldSpecificsVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIRevenueReflectionGoldSpecificsVC.m; sourceTree = ""; }; - E84A2E862A527DF800D6AF8A /* YUMIRevenueReflectionVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIRevenueReflectionVC.h; sourceTree = ""; }; - E84A2E882A527DF800D6AF8A /* YUMIExchangeDiamondsVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIExchangeDiamondsVC.h; sourceTree = ""; }; - E84A2E902A527EBF00D6AF8A /* FBCIncomeRecordCeremony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBCIncomeRecordCeremony.h; sourceTree = ""; }; - E84A2E912A527EC700D6AF8A /* YUMIRevenueReflectionExternalize.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIRevenueReflectionExternalize.m; sourceTree = ""; }; - E84A2E922A527EC700D6AF8A /* YUMIRevenueReflectionExternalize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIRevenueReflectionExternalize.h; sourceTree = ""; }; - E84A2E942A5280F900D6AF8A /* YUMIExchangeDiamondsRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIExchangeDiamondsRegard.m; sourceTree = ""; }; - E84A2E952A5280F900D6AF8A /* YUMIExchangeDiamondsRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIExchangeDiamondsRegard.h; sourceTree = ""; }; - E84A2E972A52817E00D6AF8A /* YUMIRevenueReflectionRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIRevenueReflectionRegard.h; sourceTree = ""; }; - E84A2E982A52817E00D6AF8A /* YUMIRevenueReflectionRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIRevenueReflectionRegard.m; sourceTree = ""; }; - E84A2E9A2A52823900D6AF8A /* YUMIEssayField.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIEssayField.h; sourceTree = ""; }; - E84A2E9B2A52823900D6AF8A /* YUMIEssayField.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIEssayField.m; sourceTree = ""; }; - E84A2E9D2A5287D200D6AF8A /* YUMIRevenueReflectionGoldSpecificsRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIRevenueReflectionGoldSpecificsRegard.m; sourceTree = ""; }; - E84A2E9E2A5287D200D6AF8A /* YUMIRevenueReflectionGoldSpecificsRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIRevenueReflectionGoldSpecificsRegard.h; sourceTree = ""; }; - E84A2EA02A52883000D6AF8A /* YUMIRevenueReflectionGoldSpecificsIntratemporalRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIRevenueReflectionGoldSpecificsIntratemporalRegard.m; sourceTree = ""; }; - E84A2EA12A52883000D6AF8A /* YUMIRevenueReflectionGoldSpecificsIntratemporalRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIRevenueReflectionGoldSpecificsIntratemporalRegard.h; sourceTree = ""; }; - E84A2EA32A5288CB00D6AF8A /* YUMIGoldSpecificsChooseChamberRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIGoldSpecificsChooseChamberRegard.h; sourceTree = ""; }; - E84A2EA42A5288CB00D6AF8A /* YUMIGoldSpecificsChooseChamberRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIGoldSpecificsChooseChamberRegard.m; sourceTree = ""; }; - E84A2EA62A5288FD00D6AF8A /* YUMIGoldSpecificsChooseChamberElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIGoldSpecificsChooseChamberElement.h; sourceTree = ""; }; - E84A2EA72A5288FD00D6AF8A /* YUMIGoldSpecificsChooseChamberElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIGoldSpecificsChooseChamberElement.m; sourceTree = ""; }; - E84A2EA92A528A4100D6AF8A /* YUMIRevenueReflectionGoldSpecificsPickRegardRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIRevenueReflectionGoldSpecificsPickRegardRegard.m; sourceTree = ""; }; - E84A2EAA2A528A4100D6AF8A /* YUMIRevenueReflectionGoldSpecificsPickRegardRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIRevenueReflectionGoldSpecificsPickRegardRegard.h; sourceTree = ""; }; + E84150C027747BF700A7F548 /* FirstRechargeModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FirstRechargeModel.h; sourceTree = ""; }; + E84150C127747BF700A7F548 /* FirstRechargeModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FirstRechargeModel.m; sourceTree = ""; }; + E84150C327747E0900A7F548 /* FirstRechargeRewardModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FirstRechargeRewardModel.h; sourceTree = ""; }; + E84150C427747E0900A7F548 /* FirstRechargeRewardModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FirstRechargeRewardModel.m; sourceTree = ""; }; + E841ED5F280FB0BD00904808 /* ContentLevelUpgradeModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ContentLevelUpgradeModel.h; sourceTree = ""; }; + E841ED60280FB0BD00904808 /* ContentLevelUpgradeModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ContentLevelUpgradeModel.m; sourceTree = ""; }; + E84843AD27F59E7E0050D365 /* XPRoomPKResultView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKResultView.h; sourceTree = ""; }; + E84843AE27F59E7E0050D365 /* XPRoomPKResultView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKResultView.m; sourceTree = ""; }; + E84843B027F5A0740050D365 /* XPRomPKResultTitleLabel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRomPKResultTitleLabel.h; sourceTree = ""; }; + E84843B127F5A0740050D365 /* XPRomPKResultTitleLabel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRomPKResultTitleLabel.m; sourceTree = ""; }; + E84A2E802A527DF800D6AF8A /* XPIncomeRecordGoldDetailsVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPIncomeRecordGoldDetailsVC.h; sourceTree = ""; }; + E84A2E812A527DF800D6AF8A /* XPIncomeRecordVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPIncomeRecordVC.m; sourceTree = ""; }; + E84A2E822A527DF800D6AF8A /* XPExchangeDiamondsVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPExchangeDiamondsVC.m; sourceTree = ""; }; + E84A2E842A527DF800D6AF8A /* XPIncomeRecordGoldDetailsVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPIncomeRecordGoldDetailsVC.m; sourceTree = ""; }; + E84A2E862A527DF800D6AF8A /* XPIncomeRecordVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPIncomeRecordVC.h; sourceTree = ""; }; + E84A2E882A527DF800D6AF8A /* XPExchangeDiamondsVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPExchangeDiamondsVC.h; sourceTree = ""; }; + E84A2E902A527EBF00D6AF8A /* XPIncomeRecordProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPIncomeRecordProtocol.h; sourceTree = ""; }; + E84A2E912A527EC700D6AF8A /* XPIncomeRecordPresent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPIncomeRecordPresent.m; sourceTree = ""; }; + E84A2E922A527EC700D6AF8A /* XPIncomeRecordPresent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPIncomeRecordPresent.h; sourceTree = ""; }; + E84A2E942A5280F900D6AF8A /* XPExchangeDiamondsView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPExchangeDiamondsView.m; sourceTree = ""; }; + E84A2E952A5280F900D6AF8A /* XPExchangeDiamondsView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPExchangeDiamondsView.h; sourceTree = ""; }; + E84A2E972A52817E00D6AF8A /* XPIncomeRecordView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPIncomeRecordView.h; sourceTree = ""; }; + E84A2E982A52817E00D6AF8A /* XPIncomeRecordView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPIncomeRecordView.m; sourceTree = ""; }; + E84A2E9A2A52823900D6AF8A /* XPTextField.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPTextField.h; sourceTree = ""; }; + E84A2E9B2A52823900D6AF8A /* XPTextField.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPTextField.m; sourceTree = ""; }; + E84A2E9D2A5287D200D6AF8A /* XPIncomeRecordGoldDetailsView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPIncomeRecordGoldDetailsView.m; sourceTree = ""; }; + E84A2E9E2A5287D200D6AF8A /* XPIncomeRecordGoldDetailsView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPIncomeRecordGoldDetailsView.h; sourceTree = ""; }; + E84A2EA02A52883000D6AF8A /* XPIncomeRecordGoldDetailsTimeView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPIncomeRecordGoldDetailsTimeView.m; sourceTree = ""; }; + E84A2EA12A52883000D6AF8A /* XPIncomeRecordGoldDetailsTimeView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPIncomeRecordGoldDetailsTimeView.h; sourceTree = ""; }; + E84A2EA32A5288CB00D6AF8A /* XPGoldDetailsChooseRoomView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGoldDetailsChooseRoomView.h; sourceTree = ""; }; + E84A2EA42A5288CB00D6AF8A /* XPGoldDetailsChooseRoomView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGoldDetailsChooseRoomView.m; sourceTree = ""; }; + E84A2EA62A5288FD00D6AF8A /* XPGoldDetailsChooseRoomCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGoldDetailsChooseRoomCell.h; sourceTree = ""; }; + E84A2EA72A5288FD00D6AF8A /* XPGoldDetailsChooseRoomCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGoldDetailsChooseRoomCell.m; sourceTree = ""; }; + E84A2EA92A528A4100D6AF8A /* XPIncomeRecordGoldDetailsPickViewView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPIncomeRecordGoldDetailsPickViewView.m; sourceTree = ""; }; + E84A2EAA2A528A4100D6AF8A /* XPIncomeRecordGoldDetailsPickViewView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPIncomeRecordGoldDetailsPickViewView.h; sourceTree = ""; }; E84A2EAC2A52F20900D6AF8A /* Launch Screen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = "Launch Screen.storyboard"; sourceTree = ""; }; E84A2EAE2A52F27000D6AF8A /* 1242.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 1242.png; sourceTree = ""; }; - E84B0E3D2727EDF6008818C6 /* YUMIChamberCommunicationTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCommunicationTabulationRegardElement.h; sourceTree = ""; }; - E84B0E3E2727EDF6008818C6 /* YUMIChamberCommunicationTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCommunicationTabulationRegardElement.m; sourceTree = ""; }; - E84B0E402727EE0A008818C6 /* YUMIChamberCommunicationIntelligencerRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCommunicationIntelligencerRegard.h; sourceTree = ""; }; - E84B0E412727EE0A008818C6 /* YUMIChamberCommunicationIntelligencerRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCommunicationIntelligencerRegard.m; sourceTree = ""; }; - E84B0E442727EF9D008818C6 /* YUMIChamberCommunicationAnatomiser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCommunicationAnatomiser.h; sourceTree = ""; }; - E84B0E452727EF9D008818C6 /* YUMIChamberCommunicationAnatomiser.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCommunicationAnatomiser.m; sourceTree = ""; }; + E84B0E3D2727EDF6008818C6 /* XPRoomMessageTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMessageTableViewCell.h; sourceTree = ""; }; + E84B0E3E2727EDF6008818C6 /* XPRoomMessageTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomMessageTableViewCell.m; sourceTree = ""; }; + E84B0E402727EE0A008818C6 /* XPRoomMessageHeaderView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMessageHeaderView.h; sourceTree = ""; }; + E84B0E412727EE0A008818C6 /* XPRoomMessageHeaderView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomMessageHeaderView.m; sourceTree = ""; }; + E84B0E442727EF9D008818C6 /* XPRoomMessageParser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMessageParser.h; sourceTree = ""; }; + E84B0E452727EF9D008818C6 /* XPRoomMessageParser.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomMessageParser.m; sourceTree = ""; }; E84B0E4927280289008818C6 /* XPRoomMessageConstant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMessageConstant.h; sourceTree = ""; }; - E84BF7C8277AF79D00EF8877 /* YUMIChamberInstanllingCoupleElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberInstanllingCoupleElement.h; sourceTree = ""; }; - E84BF7C9277AF79D00EF8877 /* YUMIChamberInstanllingCoupleElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberInstanllingCoupleElement.m; sourceTree = ""; }; - E84BF7CF277BFCDD00EF8877 /* ChamberCoupleMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChamberCoupleMatrix.h; sourceTree = ""; }; - E84BF7D0277BFCDD00EF8877 /* ChamberCoupleMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ChamberCoupleMatrix.m; sourceTree = ""; }; - E84BF7D2277C383700EF8877 /* YUMIChamberInstanllingIntrojectionRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberInstanllingIntrojectionRegard.h; sourceTree = ""; }; - E84BF7D3277C383700EF8877 /* YUMIChamberInstanllingIntrojectionRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberInstanllingIntrojectionRegard.m; sourceTree = ""; }; - E84BF7D5277C6E2100EF8877 /* YUMIChamberRoleRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberRoleRegardGovernancer.h; sourceTree = ""; }; - E84BF7D6277C6E2100EF8877 /* YUMIChamberRoleRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberRoleRegardGovernancer.m; sourceTree = ""; }; - E84BF7D8277C72AC00EF8877 /* YUMIChamberRoleTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberRoleTabulationRegardElement.h; sourceTree = ""; }; - E84BF7D9277C72AC00EF8877 /* YUMIChamberRoleTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberRoleTabulationRegardElement.m; sourceTree = ""; }; - E84BF7DB277C765400EF8877 /* YUMIChamberRoleDispossessTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberRoleDispossessTabulationRegardElement.h; sourceTree = ""; }; - E84BF7DC277C765400EF8877 /* YUMIChamberRoleDispossessTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberRoleDispossessTabulationRegardElement.m; sourceTree = ""; }; - E84BF7DE277C869A00EF8877 /* YUMIChamberOnLineRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberOnLineRegardGovernancer.h; sourceTree = ""; }; - E84BF7DF277C869A00EF8877 /* YUMIChamberOnLineRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberOnLineRegardGovernancer.m; sourceTree = ""; }; - E84CBCDF28436D3C00D43221 /* YUMIManeContactRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeContactRegardGovernancer.h; sourceTree = ""; }; - E84CBCE028436D3C00D43221 /* YUMIManeContactRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeContactRegardGovernancer.m; sourceTree = ""; }; - E84CBCE2284372D800D43221 /* YUMIChamberHalfCommunicationRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberHalfCommunicationRegard.h; sourceTree = ""; }; - E84CBCE3284372D800D43221 /* YUMIChamberHalfCommunicationRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberHalfCommunicationRegard.m; sourceTree = ""; }; - E84CBCE52843807400D43221 /* YUMIManeAssistantExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeAssistantExternalizer.h; sourceTree = ""; }; - E84CBCE62843807400D43221 /* YUMIManeAssistantExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeAssistantExternalizer.m; sourceTree = ""; }; - E84CBCE8284380B300D43221 /* FBCManeFriendCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCManeFriendCeremony.h; sourceTree = ""; }; - E852D739286317F0001465ED /* YUMISeparationsSpecificRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsSpecificRegardGovernancer.h; sourceTree = ""; }; - E852D73A286317F0001465ED /* YUMISeparationsSpecificRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsSpecificRegardGovernancer.m; sourceTree = ""; }; - E852D73C28631C18001465ED /* YUMISeparationsJudgementTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsJudgementTabulationRegardElement.h; sourceTree = ""; }; - E852D73D28631C18001465ED /* YUMISeparationsJudgementTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsJudgementTabulationRegardElement.m; sourceTree = ""; }; - E852D73F2863249F001465ED /* YUMISeparationsReplicationTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsReplicationTabulationRegardElement.h; sourceTree = ""; }; - E852D7402863249F001465ED /* YUMISeparationsReplicationTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsReplicationTabulationRegardElement.m; sourceTree = ""; }; - E852D74228633A08001465ED /* SeparationsJudgementMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SeparationsJudgementMatrix.h; sourceTree = ""; }; - E852D74328633A08001465ED /* SeparationsJudgementMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SeparationsJudgementMatrix.m; sourceTree = ""; }; - E852D74528633E92001465ED /* SeparationsJudgementReplicationMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SeparationsJudgementReplicationMatrix.h; sourceTree = ""; }; - E852D74628633E92001465ED /* SeparationsJudgementReplicationMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SeparationsJudgementReplicationMatrix.m; sourceTree = ""; }; - E85410332864155A005CFD9F /* YUMISeparationSpecificExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationSpecificExternalizer.h; sourceTree = ""; }; - E85410342864155A005CFD9F /* YUMISeparationSpecificExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationSpecificExternalizer.m; sourceTree = ""; }; - E8541036286443D8005CFD9F /* FBCSeparationsDetailCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCSeparationsDetailCeremony.h; sourceTree = ""; }; - E854103728646A00005CFD9F /* YUMISeparationsReplicationFurthaerTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsReplicationFurthaerTabulationRegardElement.h; sourceTree = ""; }; - E854103828646A00005CFD9F /* YUMISeparationsReplicationFurthaerTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsReplicationFurthaerTabulationRegardElement.m; sourceTree = ""; }; + E84BF7C8277AF79D00EF8877 /* XPRoomSettingTagCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomSettingTagCell.h; sourceTree = ""; }; + E84BF7C9277AF79D00EF8877 /* XPRoomSettingTagCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomSettingTagCell.m; sourceTree = ""; }; + E84BF7CF277BFCDD00EF8877 /* RoomTagModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomTagModel.h; sourceTree = ""; }; + E84BF7D0277BFCDD00EF8877 /* RoomTagModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomTagModel.m; sourceTree = ""; }; + E84BF7D2277C383700EF8877 /* XPRoomSettingInputView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomSettingInputView.h; sourceTree = ""; }; + E84BF7D3277C383700EF8877 /* XPRoomSettingInputView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomSettingInputView.m; sourceTree = ""; }; + E84BF7D5277C6E2100EF8877 /* XPRoomRoleViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomRoleViewController.h; sourceTree = ""; }; + E84BF7D6277C6E2100EF8877 /* XPRoomRoleViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomRoleViewController.m; sourceTree = ""; }; + E84BF7D8277C72AC00EF8877 /* XPRoomRoleTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomRoleTableViewCell.h; sourceTree = ""; }; + E84BF7D9277C72AC00EF8877 /* XPRoomRoleTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomRoleTableViewCell.m; sourceTree = ""; }; + E84BF7DB277C765400EF8877 /* XPRoomRoleEmptyTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomRoleEmptyTableViewCell.h; sourceTree = ""; }; + E84BF7DC277C765400EF8877 /* XPRoomRoleEmptyTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomRoleEmptyTableViewCell.m; sourceTree = ""; }; + E84BF7DE277C869A00EF8877 /* XPRoomOnLineViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomOnLineViewController.h; sourceTree = ""; }; + E84BF7DF277C869A00EF8877 /* XPRoomOnLineViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomOnLineViewController.m; sourceTree = ""; }; + E84CBCDF28436D3C00D43221 /* XPMineContactViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineContactViewController.h; sourceTree = ""; }; + E84CBCE028436D3C00D43221 /* XPMineContactViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineContactViewController.m; sourceTree = ""; }; + E84CBCE2284372D800D43221 /* XPRoomHalfMessageView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomHalfMessageView.h; sourceTree = ""; }; + E84CBCE3284372D800D43221 /* XPRoomHalfMessageView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomHalfMessageView.m; sourceTree = ""; }; + E84CBCE52843807400D43221 /* XPMineFriendPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineFriendPresenter.h; sourceTree = ""; }; + E84CBCE62843807400D43221 /* XPMineFriendPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineFriendPresenter.m; sourceTree = ""; }; + E84CBCE8284380B300D43221 /* XPMineFriendProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineFriendProtocol.h; sourceTree = ""; }; + E852D739286317F0001465ED /* XPMonentsDetailViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsDetailViewController.h; sourceTree = ""; }; + E852D73A286317F0001465ED /* XPMonentsDetailViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsDetailViewController.m; sourceTree = ""; }; + E852D73C28631C18001465ED /* XPMonentsCommentTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsCommentTableViewCell.h; sourceTree = ""; }; + E852D73D28631C18001465ED /* XPMonentsCommentTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsCommentTableViewCell.m; sourceTree = ""; }; + E852D73F2863249F001465ED /* XPMonentsReplyTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsReplyTableViewCell.h; sourceTree = ""; }; + E852D7402863249F001465ED /* XPMonentsReplyTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsReplyTableViewCell.m; sourceTree = ""; }; + E852D74228633A08001465ED /* MonentsCommentModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MonentsCommentModel.h; sourceTree = ""; }; + E852D74328633A08001465ED /* MonentsCommentModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MonentsCommentModel.m; sourceTree = ""; }; + E852D74528633E92001465ED /* MonentsCommentReplyModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MonentsCommentReplyModel.h; sourceTree = ""; }; + E852D74628633E92001465ED /* MonentsCommentReplyModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MonentsCommentReplyModel.m; sourceTree = ""; }; + E85410332864155A005CFD9F /* XPMonentDetailPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentDetailPresenter.h; sourceTree = ""; }; + E85410342864155A005CFD9F /* XPMonentDetailPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentDetailPresenter.m; sourceTree = ""; }; + E8541036286443D8005CFD9F /* XPMonentsDetailProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsDetailProtocol.h; sourceTree = ""; }; + E854103728646A00005CFD9F /* XPMonentsReplyMoreTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsReplyMoreTableViewCell.h; sourceTree = ""; }; + E854103828646A00005CFD9F /* XPMonentsReplyMoreTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsReplyMoreTableViewCell.m; sourceTree = ""; }; E8555159280559FE005F293F /* NSDate+DateUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSDate+DateUtils.h"; sourceTree = ""; }; E855515A280559FE005F293F /* NSDate+DateUtils.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSDate+DateUtils.m"; sourceTree = ""; }; - E85E3FA528B7A6F000268DC8 /* CommunicationSatisfactionSeparationsRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationSatisfactionSeparationsRegard.h; sourceTree = ""; }; - E85E3FA628B7A6F000268DC8 /* CommunicationSatisfactionSeparationsRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationSatisfactionSeparationsRegard.m; sourceTree = ""; }; - E85E7A3D2A4EB0D200B6D00A /* YUMIUnionHuntforExternalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIUnionHuntforExternalizer.h; sourceTree = ""; }; - E85E7A3E2A4EB0D200B6D00A /* YUMIUnionExternalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIUnionExternalizer.h; sourceTree = ""; }; - E85E7A402A4EB0D200B6D00A /* YUMISensationalManagementSetExternalizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMISensationalManagementSetExternalizer.m; sourceTree = ""; }; - E85E7A412A4EB0D200B6D00A /* YUMISensationalManagementExecutiveChamberExternalizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMISensationalManagementExecutiveChamberExternalizer.m; sourceTree = ""; }; - E85E7A422A4EB0D200B6D00A /* YUMISensationalManagementSetExternalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMISensationalManagementSetExternalizer.h; sourceTree = ""; }; - E85E7A432A4EB0D200B6D00A /* YUMISensationalManagementExecutiveChamberExternalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMISensationalManagementExecutiveChamberExternalizer.h; sourceTree = ""; }; - E85E7A452A4EB0D200B6D00A /* YUMIUnionRevenueExternalizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIUnionRevenueExternalizer.m; sourceTree = ""; }; - E85E7A462A4EB0D200B6D00A /* YUMIUnionRevenueSpecificExternalizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIUnionRevenueSpecificExternalizer.m; sourceTree = ""; }; - E85E7A472A4EB0D200B6D00A /* YUMIUnionRevenueExternalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIUnionRevenueExternalizer.h; sourceTree = ""; }; - E85E7A482A4EB0D200B6D00A /* YUMIUnionRevenueSpecificExternalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIUnionRevenueSpecificExternalizer.h; sourceTree = ""; }; - E85E7A492A4EB0D200B6D00A /* YUMICollectiveExternalizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMICollectiveExternalizer.m; sourceTree = ""; }; - E85E7A4A2A4EB0D200B6D00A /* YUMIUnionHuntforExternalizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIUnionHuntforExternalizer.m; sourceTree = ""; }; - E85E7A4B2A4EB0D200B6D00A /* YUMIUnionExternalizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIUnionExternalizer.m; sourceTree = ""; }; - E85E7A4D2A4EB0D200B6D00A /* YUMIManeExecutiveSetExternalizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeExecutiveSetExternalizer.m; sourceTree = ""; }; - E85E7A4E2A4EB0D200B6D00A /* YUMIUnionRemoveComponentExternalizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIUnionRemoveComponentExternalizer.m; sourceTree = ""; }; - E85E7A4F2A4EB0D200B6D00A /* YUMIUnionMangerStatementExternalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIUnionMangerStatementExternalizer.h; sourceTree = ""; }; - E85E7A502A4EB0D200B6D00A /* YUMIUnionExecutivePerExternalizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIUnionExecutivePerExternalizer.m; sourceTree = ""; }; - E85E7A512A4EB0D200B6D00A /* YUMIUnionSetNameExternalizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIUnionSetNameExternalizer.m; sourceTree = ""; }; - E85E7A522A4EB0D200B6D00A /* YUMIManeExecutiveSetExternalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeExecutiveSetExternalizer.h; sourceTree = ""; }; - E85E7A532A4EB0D200B6D00A /* YUMIUnionMangerStatementExternalizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIUnionMangerStatementExternalizer.m; sourceTree = ""; }; - E85E7A542A4EB0D200B6D00A /* YUMIUnionRemoveComponentExternalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIUnionRemoveComponentExternalizer.h; sourceTree = ""; }; - E85E7A552A4EB0D200B6D00A /* YUMIUnionSetNameExternalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIUnionSetNameExternalizer.h; sourceTree = ""; }; - E85E7A562A4EB0D200B6D00A /* YUMIUnionExecutivePerExternalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIUnionExecutivePerExternalizer.h; sourceTree = ""; }; - E85E7A572A4EB0D200B6D00A /* YUMICollectiveExternalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMICollectiveExternalizer.h; sourceTree = ""; }; - E85E7A592A4EB0D200B6D00A /* FBCCollectiveCeremony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBCCollectiveCeremony.h; sourceTree = ""; }; - E85E7A5B2A4EB0D200B6D00A /* FBCSensationalManagementSetCeremony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBCSensationalManagementSetCeremony.h; sourceTree = ""; }; - E85E7A5C2A4EB0D200B6D00A /* FBCSensationalManagementExecutiveChamberCeremony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBCSensationalManagementExecutiveChamberCeremony.h; sourceTree = ""; }; - E85E7A5E2A4EB0D200B6D00A /* FBCUnionIncomeCeremony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBCUnionIncomeCeremony.h; sourceTree = ""; }; - E85E7A5F2A4EB0D200B6D00A /* FBCUnionIncomeDetailCeremony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBCUnionIncomeDetailCeremony.h; sourceTree = ""; }; - E85E7A602A4EB0D200B6D00A /* FBCUnionHuntforCeremony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBCUnionHuntforCeremony.h; sourceTree = ""; }; - E85E7A612A4EB0D200B6D00A /* FBCUnionCeremony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBCUnionCeremony.h; sourceTree = ""; }; - E85E7A632A4EB0D200B6D00A /* FBCUnionSetExecutiveCeremony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBCUnionSetExecutiveCeremony.h; sourceTree = ""; }; - E85E7A642A4EB0D200B6D00A /* FBCUnionExecutivePerCeremony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBCUnionExecutivePerCeremony.h; sourceTree = ""; }; - E85E7A652A4EB0D200B6D00A /* FBCUnionRemoveMemberCeremony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBCUnionRemoveMemberCeremony.h; sourceTree = ""; }; - E85E7A662A4EB0D200B6D00A /* FBCUnionSetNameCeremony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBCUnionSetNameCeremony.h; sourceTree = ""; }; - E85E7A672A4EB0D200B6D00A /* FBCUnionExecutiveStatementCeremony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBCUnionExecutiveStatementCeremony.h; sourceTree = ""; }; - E85E7A692A4EB0D200B6D00A /* UnionAuthMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnionAuthMatrix.h; sourceTree = ""; }; - E85E7A6A2A4EB0D200B6D00A /* CollectiveAbstractMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CollectiveAbstractMatrix.h; sourceTree = ""; }; - E85E7A6B2A4EB0D200B6D00A /* CollectiveSpecificAbstractMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CollectiveSpecificAbstractMatrix.h; sourceTree = ""; }; - E85E7A6C2A4EB0D200B6D00A /* CollectiveComponentSpecificAbstractMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CollectiveComponentSpecificAbstractMatrix.h; sourceTree = ""; }; - E85E7A6D2A4EB0D200B6D00A /* UnionAbstractMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnionAbstractMatrix.h; sourceTree = ""; }; - E85E7A6F2A4EB0D200B6D00A /* UnionChamberAbstractMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnionChamberAbstractMatrix.h; sourceTree = ""; }; - E85E7A702A4EB0D200B6D00A /* UnionSensationalManagementAbstractMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UnionSensationalManagementAbstractMatrix.m; sourceTree = ""; }; - E85E7A712A4EB0D200B6D00A /* UnionHuntforSensationalManagementMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UnionHuntforSensationalManagementMatrix.m; sourceTree = ""; }; - E85E7A722A4EB0D200B6D00A /* UnionChamberAbstractMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UnionChamberAbstractMatrix.m; sourceTree = ""; }; - E85E7A732A4EB0D200B6D00A /* UnionSensationalManagementAbstractMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnionSensationalManagementAbstractMatrix.h; sourceTree = ""; }; - E85E7A742A4EB0D200B6D00A /* UnionHuntforSensationalManagementMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnionHuntforSensationalManagementMatrix.h; sourceTree = ""; }; - E85E7A762A4EB0D200B6D00A /* UnionRevenueReflectionMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnionRevenueReflectionMatrix.h; sourceTree = ""; }; - E85E7A772A4EB0D200B6D00A /* UnionRevenueSpecificMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UnionRevenueSpecificMatrix.m; sourceTree = ""; }; - E85E7A782A4EB0D200B6D00A /* UnionFeatureRevenueReflectionMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UnionFeatureRevenueReflectionMatrix.m; sourceTree = ""; }; - E85E7A792A4EB0D200B6D00A /* UnionRevenueReflectionMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UnionRevenueReflectionMatrix.m; sourceTree = ""; }; - E85E7A7A2A4EB0D200B6D00A /* UnionRevenueSpecificMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnionRevenueSpecificMatrix.h; sourceTree = ""; }; - E85E7A7B2A4EB0D200B6D00A /* UnionFeatureRevenueReflectionMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnionFeatureRevenueReflectionMatrix.h; sourceTree = ""; }; - E85E7A7C2A4EB0D200B6D00A /* UnionHuntforConsumerAbstractMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UnionHuntforConsumerAbstractMatrix.m; sourceTree = ""; }; - E85E7A7D2A4EB0D200B6D00A /* UnionCommunicationMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnionCommunicationMatrix.h; sourceTree = ""; }; - E85E7A7E2A4EB0D200B6D00A /* UnionAuthMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UnionAuthMatrix.m; sourceTree = ""; }; - E85E7A7F2A4EB0D200B6D00A /* CollectiveAbstractMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CollectiveAbstractMatrix.m; sourceTree = ""; }; - E85E7A802A4EB0D200B6D00A /* UnionAbstractMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UnionAbstractMatrix.m; sourceTree = ""; }; - E85E7A812A4EB0D200B6D00A /* CollectiveComponentSpecificAbstractMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CollectiveComponentSpecificAbstractMatrix.m; sourceTree = ""; }; - E85E7A822A4EB0D200B6D00A /* CollectiveSpecificAbstractMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CollectiveSpecificAbstractMatrix.m; sourceTree = ""; }; - E85E7A832A4EB0D200B6D00A /* UnionCommunicationMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UnionCommunicationMatrix.m; sourceTree = ""; }; - E85E7A842A4EB0D200B6D00A /* UnionHuntforConsumerAbstractMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnionHuntforConsumerAbstractMatrix.h; sourceTree = ""; }; - E85E7A872A4EB0D200B6D00A /* YUMIManeUnionRevenueStatsticsRegardGovernancer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeUnionRevenueStatsticsRegardGovernancer.h; sourceTree = ""; }; - E85E7A882A4EB0D200B6D00A /* YUMIManeGoldRevenueReflectionVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeGoldRevenueReflectionVC.m; sourceTree = ""; }; - E85E7A892A4EB0D200B6D00A /* YUMIManeKellegRevenueStatsticsRegardGovernancer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeKellegRevenueStatsticsRegardGovernancer.h; sourceTree = ""; }; - E85E7A8A2A4EB0D200B6D00A /* YUMIManeMainRevenueStatsticsRegardGovernancer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeMainRevenueStatsticsRegardGovernancer.m; sourceTree = ""; }; - E85E7A8B2A4EB0D200B6D00A /* YUMIManeHallKellegRevenueStatsticsRegardGovernancer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeHallKellegRevenueStatsticsRegardGovernancer.m; sourceTree = ""; }; - E85E7A8C2A4EB0D200B6D00A /* YUMIManeCollectiveRevenueStatsticsRegardGovernancer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeCollectiveRevenueStatsticsRegardGovernancer.m; sourceTree = ""; }; - E85E7A8D2A4EB0D200B6D00A /* YUMIStrangeManeUnionRevenueReflectionRegardGovernancer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIStrangeManeUnionRevenueReflectionRegardGovernancer.h; sourceTree = ""; }; - E85E7A8E2A4EB0D200B6D00A /* YUMIManeUnionRevenueSpecificRegardGovernancer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeUnionRevenueSpecificRegardGovernancer.h; sourceTree = ""; }; - E85E7A8F2A4EB0D200B6D00A /* YUMIManeUnionRevenueReflectionRegardGovernancer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeUnionRevenueReflectionRegardGovernancer.h; sourceTree = ""; }; - E85E7A902A4EB0D200B6D00A /* YUMIManeMainRevenueStatsticsRegardGovernancer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeMainRevenueStatsticsRegardGovernancer.h; sourceTree = ""; }; - E85E7A912A4EB0D200B6D00A /* YUMIManeKellegRevenueStatsticsRegardGovernancer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeKellegRevenueStatsticsRegardGovernancer.m; sourceTree = ""; }; - E85E7A922A4EB0D200B6D00A /* YUMIManeGoldRevenueReflectionVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeGoldRevenueReflectionVC.h; sourceTree = ""; }; - E85E7A932A4EB0D200B6D00A /* YUMIManeUnionRevenueStatsticsRegardGovernancer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeUnionRevenueStatsticsRegardGovernancer.m; sourceTree = ""; }; - E85E7A942A4EB0D200B6D00A /* YUMIManeUnionRevenueSpecificRegardGovernancer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeUnionRevenueSpecificRegardGovernancer.m; sourceTree = ""; }; - E85E7A952A4EB0D200B6D00A /* YUMIStrangeManeUnionRevenueReflectionRegardGovernancer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIStrangeManeUnionRevenueReflectionRegardGovernancer.m; sourceTree = ""; }; - E85E7A962A4EB0D200B6D00A /* YUMIManeCollectiveRevenueStatsticsRegardGovernancer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeCollectiveRevenueStatsticsRegardGovernancer.h; sourceTree = ""; }; - E85E7A972A4EB0D200B6D00A /* YUMIManeHallKellegRevenueStatsticsRegardGovernancer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeHallKellegRevenueStatsticsRegardGovernancer.h; sourceTree = ""; }; - E85E7A982A4EB0D200B6D00A /* YUMIManeUnionRevenueReflectionRegardGovernancer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeUnionRevenueReflectionRegardGovernancer.m; sourceTree = ""; }; - E85E7A992A4EB0D200B6D00A /* YUMIManeUnionHuntforRegardGovernancer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeUnionHuntforRegardGovernancer.h; sourceTree = ""; }; - E85E7A9A2A4EB0D200B6D00A /* YUMIManeCollectiveRegardGovernancer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeCollectiveRegardGovernancer.m; sourceTree = ""; }; - E85E7A9C2A4EB0D200B6D00A /* YUMIManeUnionSensationalManagementSetRegardGovernancer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeUnionSensationalManagementSetRegardGovernancer.h; sourceTree = ""; }; - E85E7A9D2A4EB0D200B6D00A /* YUMIManeUnionChooseExecutiveRegardGovernancer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeUnionChooseExecutiveRegardGovernancer.h; sourceTree = ""; }; - E85E7A9E2A4EB0D200B6D00A /* YUMIManeUnionSensationalManagementSetRegardGovernancer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeUnionSensationalManagementSetRegardGovernancer.m; sourceTree = ""; }; - E85E7A9F2A4EB0D200B6D00A /* YUMIManeUnionChooseExecutiveRegardGovernancer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeUnionChooseExecutiveRegardGovernancer.m; sourceTree = ""; }; - E85E7AA02A4EB0D200B6D00A /* YUMIManeUnionRegardGovernancer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeUnionRegardGovernancer.m; sourceTree = ""; }; - E85E7AA12A4EB0D200B6D00A /* YUMIManeUnionStatementVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeUnionStatementVC.h; sourceTree = ""; }; - E85E7AA22A4EB0D200B6D00A /* YUMIManeExchangeAuthorityVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeExchangeAuthorityVC.h; sourceTree = ""; }; - E85E7AA42A4EB0D200B6D00A /* YUMIUnionSensationalManagementParrotRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIUnionSensationalManagementParrotRegard.m; sourceTree = ""; }; - E85E7AA52A4EB0D200B6D00A /* YUMIUnionIntelligencerRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIUnionIntelligencerRegard.h; sourceTree = ""; }; - E85E7AA62A4EB0D200B6D00A /* YUMICollectiveParrotRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMICollectiveParrotRegard.m; sourceTree = ""; }; - E85E7AA72A4EB0D200B6D00A /* YUMIUnionIntratemporalPickRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIUnionIntratemporalPickRegard.m; sourceTree = ""; }; - E85E7AA82A4EB0D200B6D00A /* YUMICollectiveDivisionRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMICollectiveDivisionRegard.h; sourceTree = ""; }; - E85E7AA92A4EB0D200B6D00A /* YUMIUnionRevenueIntelligencerRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIUnionRevenueIntelligencerRegard.h; sourceTree = ""; }; - E85E7AAA2A4EB0D200B6D00A /* YUMIGoldRevenueDivisionRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIGoldRevenueDivisionRegard.h; sourceTree = ""; }; - E85E7AAB2A4EB0D200B6D00A /* YUMIUnionHuntforNevRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIUnionHuntforNevRegard.h; sourceTree = ""; }; - E85E7AAC2A4EB0D200B6D00A /* YUMIUnionIntratemporalMonthPickerRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIUnionIntratemporalMonthPickerRegard.m; sourceTree = ""; }; - E85E7AAD2A4EB0D200B6D00A /* YUMIStrangeUnionRevenueIntelligencerRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIStrangeUnionRevenueIntelligencerRegard.h; sourceTree = ""; }; - E85E7AAE2A4EB0D200B6D00A /* YUMIStrangeUnionIntratemporalPickRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIStrangeUnionIntratemporalPickRegard.m; sourceTree = ""; }; - E85E7AAF2A4EB0D200B6D00A /* YUMIUnionRevenueDivisionRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIUnionRevenueDivisionRegard.h; sourceTree = ""; }; - E85E7AB02A4EB0D200B6D00A /* YUMIUnionKellegRevenueDivisionRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIUnionKellegRevenueDivisionRegard.h; sourceTree = ""; }; - E85E7AB12A4EB0D200B6D00A /* YUMICollectiveDivisionRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMICollectiveDivisionRegard.m; sourceTree = ""; }; - E85E7AB22A4EB0D200B6D00A /* YUMIUnionIntelligencerRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIUnionIntelligencerRegard.m; sourceTree = ""; }; - E85E7AB32A4EB0D200B6D00A /* YUMICollectiveParrotRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMICollectiveParrotRegard.h; sourceTree = ""; }; - E85E7AB42A4EB0D200B6D00A /* YUMIUnionIntratemporalPickRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIUnionIntratemporalPickRegard.h; sourceTree = ""; }; - E85E7AB52A4EB0D200B6D00A /* YUMIUnionSensationalManagementParrotRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIUnionSensationalManagementParrotRegard.h; sourceTree = ""; }; - E85E7AB62A4EB0D200B6D00A /* YUMIUnionIntratemporalMonthPickerRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIUnionIntratemporalMonthPickerRegard.h; sourceTree = ""; }; - E85E7AB72A4EB0D200B6D00A /* YUMIUnionHuntforNevRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIUnionHuntforNevRegard.m; sourceTree = ""; }; - E85E7AB82A4EB0D200B6D00A /* YUMIGoldRevenueDivisionRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIGoldRevenueDivisionRegard.m; sourceTree = ""; }; - E85E7AB92A4EB0D200B6D00A /* YUMIUnionRevenueIntelligencerRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIUnionRevenueIntelligencerRegard.m; sourceTree = ""; }; - E85E7ABA2A4EB0D200B6D00A /* YUMIStrangeUnionIntratemporalPickRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIStrangeUnionIntratemporalPickRegard.h; sourceTree = ""; }; - E85E7ABB2A4EB0D200B6D00A /* YUMIStrangeUnionRevenueIntelligencerRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIStrangeUnionRevenueIntelligencerRegard.m; sourceTree = ""; }; - E85E7ABC2A4EB0D200B6D00A /* YUMIUnionKellegRevenueDivisionRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIUnionKellegRevenueDivisionRegard.m; sourceTree = ""; }; - E85E7ABD2A4EB0D200B6D00A /* YUMIUnionRevenueDivisionRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIUnionRevenueDivisionRegard.m; sourceTree = ""; }; - E85E7ABE2A4EB0D200B6D00A /* YUMIManeMainUnionStatementVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeMainUnionStatementVC.m; sourceTree = ""; }; - E85E7AC02A4EB0D200B6D00A /* YUMICollectiveComponentTabulationRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMICollectiveComponentTabulationRegardElement.m; sourceTree = ""; }; - E85E7AC12A4EB0D200B6D00A /* YUMICollectiveChamberAssembletionRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMICollectiveChamberAssembletionRegardElement.m; sourceTree = ""; }; - E85E7AC32A4EB0D200B6D00A /* YUMIManeUnionStatementElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeUnionStatementElement.m; sourceTree = ""; }; - E85E7AC42A4EB0D200B6D00A /* YUMIManeUnionStatementElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeUnionStatementElement.h; sourceTree = ""; }; - E85E7AC52A4EB0D200B6D00A /* YUMIManeUnionHuntforComponentTabulationRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeUnionHuntforComponentTabulationRegardElement.m; sourceTree = ""; }; - E85E7AC62A4EB0D200B6D00A /* YUMIManeUnionDispossessTabulationRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeUnionDispossessTabulationRegardElement.h; sourceTree = ""; }; - E85E7AC72A4EB0D200B6D00A /* YUMIUnionDispossessAssembletionRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIUnionDispossessAssembletionRegardElement.h; sourceTree = ""; }; - E85E7AC92A4EB0D200B6D00A /* YUMIUnionSensationalManagementChamberAssembletionRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIUnionSensationalManagementChamberAssembletionRegardElement.h; sourceTree = ""; }; - E85E7ACA2A4EB0D200B6D00A /* YUMIUnionChooseExecutiveChamberTabulationRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIUnionChooseExecutiveChamberTabulationRegardElement.m; sourceTree = ""; }; - E85E7ACB2A4EB0D200B6D00A /* YUMIUnionSensationalManagementSetTabulationRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIUnionSensationalManagementSetTabulationRegardElement.m; sourceTree = ""; }; - E85E7ACC2A4EB0D200B6D00A /* YUMIUnionHuntforSensationalManagementTabulationRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIUnionHuntforSensationalManagementTabulationRegardElement.m; sourceTree = ""; }; - E85E7ACD2A4EB0D200B6D00A /* YUMIUnionSensationalManagementChamberAssembletionRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIUnionSensationalManagementChamberAssembletionRegardElement.m; sourceTree = ""; }; - E85E7ACE2A4EB0D200B6D00A /* YUMIUnionChooseExecutiveChamberTabulationRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIUnionChooseExecutiveChamberTabulationRegardElement.h; sourceTree = ""; }; - E85E7ACF2A4EB0D200B6D00A /* YUMIUnionHuntforSensationalManagementTabulationRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIUnionHuntforSensationalManagementTabulationRegardElement.h; sourceTree = ""; }; - E85E7AD02A4EB0D200B6D00A /* YUMIUnionSensationalManagementSetTabulationRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIUnionSensationalManagementSetTabulationRegardElement.h; sourceTree = ""; }; - E85E7AD22A4EB0D200B6D00A /* YUMIUnionRevenueSpecificAssembletionRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIUnionRevenueSpecificAssembletionRegardElement.m; sourceTree = ""; }; - E85E7AD32A4EB0D200B6D00A /* YUMIUnionRevenueReflectionTabulationRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIUnionRevenueReflectionTabulationRegardElement.m; sourceTree = ""; }; - E85E7AD42A4EB0D200B6D00A /* YUMIUnionFeatureRevenueTabulationRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIUnionFeatureRevenueTabulationRegardElement.h; sourceTree = ""; }; - E85E7AD52A4EB0D200B6D00A /* YUMIUnionSingleChamberRevenueTabulationRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIUnionSingleChamberRevenueTabulationRegardElement.m; sourceTree = ""; }; - E85E7AD62A4EB0D200B6D00A /* YUMIUnionRevenueSpecificAssembletionRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIUnionRevenueSpecificAssembletionRegardElement.h; sourceTree = ""; }; - E85E7AD72A4EB0D200B6D00A /* YUMIUnionFeatureRevenueTabulationRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIUnionFeatureRevenueTabulationRegardElement.m; sourceTree = ""; }; - E85E7AD82A4EB0D200B6D00A /* YUMIUnionRevenueReflectionTabulationRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIUnionRevenueReflectionTabulationRegardElement.h; sourceTree = ""; }; - E85E7AD92A4EB0D200B6D00A /* YUMIUnionSingleChamberRevenueTabulationRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIUnionSingleChamberRevenueTabulationRegardElement.h; sourceTree = ""; }; - E85E7ADA2A4EB0D200B6D00A /* YUMICollectiveChamberAssembletionRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMICollectiveChamberAssembletionRegardElement.h; sourceTree = ""; }; - E85E7ADB2A4EB0D200B6D00A /* YUMICollectiveComponentTabulationRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMICollectiveComponentTabulationRegardElement.h; sourceTree = ""; }; - E85E7ADC2A4EB0D200B6D00A /* YUMIManeUnionDispossessTabulationRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeUnionDispossessTabulationRegardElement.m; sourceTree = ""; }; - E85E7ADD2A4EB0D200B6D00A /* YUMIManeUnionHuntforComponentTabulationRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeUnionHuntforComponentTabulationRegardElement.h; sourceTree = ""; }; - E85E7ADF2A4EB0D200B6D00A /* YUMIManeExchangeAuthorityElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeExchangeAuthorityElement.h; sourceTree = ""; }; - E85E7AE02A4EB0D200B6D00A /* YUMIManePromptWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManePromptWindow.m; sourceTree = ""; }; - E85E7AE12A4EB0D200B6D00A /* YUMIManeExchangeAuthorityFooderRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeExchangeAuthorityFooderRegard.h; sourceTree = ""; }; - E85E7AE22A4EB0D200B6D00A /* YUMIManeExchangeAuthorityIntelligenceRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeExchangeAuthorityIntelligenceRegard.m; sourceTree = ""; }; - E85E7AE32A4EB0D200B6D00A /* YUMIManeExchangeAuthorityElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeExchangeAuthorityElement.m; sourceTree = ""; }; - E85E7AE42A4EB0D200B6D00A /* YUMIManePromptWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManePromptWindow.h; sourceTree = ""; }; - E85E7AE52A4EB0D200B6D00A /* YUMIManeExchangeAuthorityIntelligenceRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeExchangeAuthorityIntelligenceRegard.h; sourceTree = ""; }; - E85E7AE62A4EB0D200B6D00A /* YUMIManeExchangeAuthorityFooderRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeExchangeAuthorityFooderRegard.m; sourceTree = ""; }; - E85E7AE72A4EB0D200B6D00A /* YUMIUnionDispossessAssembletionRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIUnionDispossessAssembletionRegardElement.m; sourceTree = ""; }; - E85E7AE92A4EB0D200B6D00A /* YUMIManeUnionExecutivePerTabulationRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeUnionExecutivePerTabulationRegardElement.m; sourceTree = ""; }; - E85E7AEB2A4EB0D200B6D00A /* YUMIManeUnionExecutivePerTabulationRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeUnionExecutivePerTabulationRegardElement.h; sourceTree = ""; }; - E85E7AED2A4EB0D200B6D00A /* YUMIManeUnionHuntforRegardGovernancer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeUnionHuntforRegardGovernancer.m; sourceTree = ""; }; - E85E7AEE2A4EB0D200B6D00A /* YUMIManeCollectiveRegardGovernancer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeCollectiveRegardGovernancer.h; sourceTree = ""; }; - E85E7AF02A4EB0D200B6D00A /* YUMIManeUnionSetNameRegardGovernancer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeUnionSetNameRegardGovernancer.h; sourceTree = ""; }; - E85E7AF12A4EB0D200B6D00A /* YUMIManeMangerStatementRegardGovernancer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeMangerStatementRegardGovernancer.m; sourceTree = ""; }; - E85E7AF22A4EB0D200B6D00A /* YUMIManeUnionRemoveComponentRegardGovernancer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeUnionRemoveComponentRegardGovernancer.h; sourceTree = ""; }; - E85E7AF32A4EB0D200B6D00A /* YUMIManeUnionExecutiveSetRegardGovernancer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeUnionExecutiveSetRegardGovernancer.m; sourceTree = ""; }; - E85E7AF42A4EB0D200B6D00A /* YUMIManeUnionExecutivePerRegardGovernancer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeUnionExecutivePerRegardGovernancer.m; sourceTree = ""; }; - E85E7AF52A4EB0D200B6D00A /* YUMIManeUnionExecutiveSetRegardGovernancer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeUnionExecutiveSetRegardGovernancer.h; sourceTree = ""; }; - E85E7AF62A4EB0D200B6D00A /* YUMIManeUnionRemoveComponentRegardGovernancer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeUnionRemoveComponentRegardGovernancer.m; sourceTree = ""; }; - E85E7AF72A4EB0D200B6D00A /* YUMIManeMangerStatementRegardGovernancer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeMangerStatementRegardGovernancer.h; sourceTree = ""; }; - E85E7AF82A4EB0D200B6D00A /* YUMIManeUnionSetNameRegardGovernancer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeUnionSetNameRegardGovernancer.m; sourceTree = ""; }; - E85E7AF92A4EB0D200B6D00A /* YUMIManeUnionExecutivePerRegardGovernancer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeUnionExecutivePerRegardGovernancer.h; sourceTree = ""; }; - E85E7AFA2A4EB0D200B6D00A /* YUMIManeExchangeAuthorityVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeExchangeAuthorityVC.m; sourceTree = ""; }; - E85E7AFB2A4EB0D200B6D00A /* YUMIManeMainUnionStatementVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeMainUnionStatementVC.h; sourceTree = ""; }; - E85E7AFC2A4EB0D200B6D00A /* YUMIManeUnionRegardGovernancer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeUnionRegardGovernancer.h; sourceTree = ""; }; - E85E7AFD2A4EB0D200B6D00A /* YUMIManeUnionStatementVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeUnionStatementVC.m; sourceTree = ""; }; + E85E3FA528B7A6F000268DC8 /* MessageContentMonentsView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageContentMonentsView.h; sourceTree = ""; }; + E85E3FA628B7A6F000268DC8 /* MessageContentMonentsView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageContentMonentsView.m; sourceTree = ""; }; + E85E7A3D2A4EB0D200B6D00A /* XPGuildSearchPresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildSearchPresenter.h; sourceTree = ""; }; + E85E7A3E2A4EB0D200B6D00A /* XPGuildPresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildPresenter.h; sourceTree = ""; }; + E85E7A402A4EB0D200B6D00A /* XPSuperAdminSetPresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPSuperAdminSetPresenter.m; sourceTree = ""; }; + E85E7A412A4EB0D200B6D00A /* XPSuperAdminManagerRoomPresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPSuperAdminManagerRoomPresenter.m; sourceTree = ""; }; + E85E7A422A4EB0D200B6D00A /* XPSuperAdminSetPresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPSuperAdminSetPresenter.h; sourceTree = ""; }; + E85E7A432A4EB0D200B6D00A /* XPSuperAdminManagerRoomPresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPSuperAdminManagerRoomPresenter.h; sourceTree = ""; }; + E85E7A452A4EB0D200B6D00A /* XPGuildIncomePresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGuildIncomePresenter.m; sourceTree = ""; }; + E85E7A462A4EB0D200B6D00A /* XPGuildIncomeDetailPresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGuildIncomeDetailPresenter.m; sourceTree = ""; }; + E85E7A472A4EB0D200B6D00A /* XPGuildIncomePresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildIncomePresenter.h; sourceTree = ""; }; + E85E7A482A4EB0D200B6D00A /* XPGuildIncomeDetailPresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildIncomeDetailPresenter.h; sourceTree = ""; }; + E85E7A492A4EB0D200B6D00A /* XPClanPresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPClanPresenter.m; sourceTree = ""; }; + E85E7A4A2A4EB0D200B6D00A /* XPGuildSearchPresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGuildSearchPresenter.m; sourceTree = ""; }; + E85E7A4B2A4EB0D200B6D00A /* XPGuildPresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGuildPresenter.m; sourceTree = ""; }; + E85E7A4D2A4EB0D200B6D00A /* XPMineManagerSetPresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineManagerSetPresenter.m; sourceTree = ""; }; + E85E7A4E2A4EB0D200B6D00A /* XPGuildRemoveMemberPresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGuildRemoveMemberPresenter.m; sourceTree = ""; }; + E85E7A4F2A4EB0D200B6D00A /* XPGuildMangerListPresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildMangerListPresenter.h; sourceTree = ""; }; + E85E7A502A4EB0D200B6D00A /* XPGuildManagerPerPresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGuildManagerPerPresenter.m; sourceTree = ""; }; + E85E7A512A4EB0D200B6D00A /* XPGuildSetNamePresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGuildSetNamePresenter.m; sourceTree = ""; }; + E85E7A522A4EB0D200B6D00A /* XPMineManagerSetPresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineManagerSetPresenter.h; sourceTree = ""; }; + E85E7A532A4EB0D200B6D00A /* XPGuildMangerListPresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGuildMangerListPresenter.m; sourceTree = ""; }; + E85E7A542A4EB0D200B6D00A /* XPGuildRemoveMemberPresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildRemoveMemberPresenter.h; sourceTree = ""; }; + E85E7A552A4EB0D200B6D00A /* XPGuildSetNamePresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildSetNamePresenter.h; sourceTree = ""; }; + E85E7A562A4EB0D200B6D00A /* XPGuildManagerPerPresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildManagerPerPresenter.h; sourceTree = ""; }; + E85E7A572A4EB0D200B6D00A /* XPClanPresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPClanPresenter.h; sourceTree = ""; }; + E85E7A592A4EB0D200B6D00A /* XPClanProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPClanProtocol.h; sourceTree = ""; }; + E85E7A5B2A4EB0D200B6D00A /* XPSuperAdminSetProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPSuperAdminSetProtocol.h; sourceTree = ""; }; + E85E7A5C2A4EB0D200B6D00A /* XPSuperAdminManagerRoomProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPSuperAdminManagerRoomProtocol.h; sourceTree = ""; }; + E85E7A5E2A4EB0D200B6D00A /* XPGuildIncomeProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildIncomeProtocol.h; sourceTree = ""; }; + E85E7A5F2A4EB0D200B6D00A /* XPGuildIncomeDetailProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildIncomeDetailProtocol.h; sourceTree = ""; }; + E85E7A602A4EB0D200B6D00A /* XPGuildSearchProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildSearchProtocol.h; sourceTree = ""; }; + E85E7A612A4EB0D200B6D00A /* XPGuildProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildProtocol.h; sourceTree = ""; }; + E85E7A632A4EB0D200B6D00A /* XPGuildSetManagerProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildSetManagerProtocol.h; sourceTree = ""; }; + E85E7A642A4EB0D200B6D00A /* XPGuildManagerPerProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildManagerPerProtocol.h; sourceTree = ""; }; + E85E7A652A4EB0D200B6D00A /* XPGuildRemoveMemberProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildRemoveMemberProtocol.h; sourceTree = ""; }; + E85E7A662A4EB0D200B6D00A /* XPGuildSetNameProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildSetNameProtocol.h; sourceTree = ""; }; + E85E7A672A4EB0D200B6D00A /* XPGuildManagerListProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildManagerListProtocol.h; sourceTree = ""; }; + E85E7A692A4EB0D200B6D00A /* GuildAuthModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GuildAuthModel.h; sourceTree = ""; }; + E85E7A6A2A4EB0D200B6D00A /* ClanInfoModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ClanInfoModel.h; sourceTree = ""; }; + E85E7A6B2A4EB0D200B6D00A /* ClanDetailInfoModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ClanDetailInfoModel.h; sourceTree = ""; }; + E85E7A6C2A4EB0D200B6D00A /* ClanMemberDetailInfoModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ClanMemberDetailInfoModel.h; sourceTree = ""; }; + E85E7A6D2A4EB0D200B6D00A /* GuildInfoModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GuildInfoModel.h; sourceTree = ""; }; + E85E7A6F2A4EB0D200B6D00A /* GuildRoomInfoModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GuildRoomInfoModel.h; sourceTree = ""; }; + E85E7A702A4EB0D200B6D00A /* GuildSuperAdminInfoModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GuildSuperAdminInfoModel.m; sourceTree = ""; }; + E85E7A712A4EB0D200B6D00A /* GuildSearchSuperAdminModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GuildSearchSuperAdminModel.m; sourceTree = ""; }; + E85E7A722A4EB0D200B6D00A /* GuildRoomInfoModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GuildRoomInfoModel.m; sourceTree = ""; }; + E85E7A732A4EB0D200B6D00A /* GuildSuperAdminInfoModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GuildSuperAdminInfoModel.h; sourceTree = ""; }; + E85E7A742A4EB0D200B6D00A /* GuildSearchSuperAdminModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GuildSearchSuperAdminModel.h; sourceTree = ""; }; + E85E7A762A4EB0D200B6D00A /* GuildIncomeRecordModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GuildIncomeRecordModel.h; sourceTree = ""; }; + E85E7A772A4EB0D200B6D00A /* GuildIncomeDetailModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GuildIncomeDetailModel.m; sourceTree = ""; }; + E85E7A782A4EB0D200B6D00A /* GuildPersonIncomeRecordModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GuildPersonIncomeRecordModel.m; sourceTree = ""; }; + E85E7A792A4EB0D200B6D00A /* GuildIncomeRecordModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GuildIncomeRecordModel.m; sourceTree = ""; }; + E85E7A7A2A4EB0D200B6D00A /* GuildIncomeDetailModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GuildIncomeDetailModel.h; sourceTree = ""; }; + E85E7A7B2A4EB0D200B6D00A /* GuildPersonIncomeRecordModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GuildPersonIncomeRecordModel.h; sourceTree = ""; }; + E85E7A7C2A4EB0D200B6D00A /* GuildSearchUserInfoModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GuildSearchUserInfoModel.m; sourceTree = ""; }; + E85E7A7D2A4EB0D200B6D00A /* GuildMessageModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GuildMessageModel.h; sourceTree = ""; }; + E85E7A7E2A4EB0D200B6D00A /* GuildAuthModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GuildAuthModel.m; sourceTree = ""; }; + E85E7A7F2A4EB0D200B6D00A /* ClanInfoModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ClanInfoModel.m; sourceTree = ""; }; + E85E7A802A4EB0D200B6D00A /* GuildInfoModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GuildInfoModel.m; sourceTree = ""; }; + E85E7A812A4EB0D200B6D00A /* ClanMemberDetailInfoModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ClanMemberDetailInfoModel.m; sourceTree = ""; }; + E85E7A822A4EB0D200B6D00A /* ClanDetailInfoModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ClanDetailInfoModel.m; sourceTree = ""; }; + E85E7A832A4EB0D200B6D00A /* GuildMessageModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GuildMessageModel.m; sourceTree = ""; }; + E85E7A842A4EB0D200B6D00A /* GuildSearchUserInfoModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GuildSearchUserInfoModel.h; sourceTree = ""; }; + E85E7A872A4EB0D200B6D00A /* XPMineGuildIncomeStatisViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGuildIncomeStatisViewController.h; sourceTree = ""; }; + E85E7A882A4EB0D200B6D00A /* XPMineGoldIncomeRecordVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGoldIncomeRecordVC.m; sourceTree = ""; }; + E85E7A892A4EB0D200B6D00A /* XPMineAnchorIncomeStatisViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineAnchorIncomeStatisViewController.h; sourceTree = ""; }; + E85E7A8A2A4EB0D200B6D00A /* XPMineMainIncomeStatisViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineMainIncomeStatisViewController.m; sourceTree = ""; }; + E85E7A8B2A4EB0D200B6D00A /* XPMineHallAnchorIncomeStatisViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineHallAnchorIncomeStatisViewController.m; sourceTree = ""; }; + E85E7A8C2A4EB0D200B6D00A /* XPMineClanIncomeStatisViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineClanIncomeStatisViewController.m; sourceTree = ""; }; + E85E7A8D2A4EB0D200B6D00A /* XPNewMineGuildIncomeRecordViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNewMineGuildIncomeRecordViewController.h; sourceTree = ""; }; + E85E7A8E2A4EB0D200B6D00A /* XPMineGuildIncomeDetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGuildIncomeDetailViewController.h; sourceTree = ""; }; + E85E7A8F2A4EB0D200B6D00A /* XPMineGuildIncomeRecordViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGuildIncomeRecordViewController.h; sourceTree = ""; }; + E85E7A902A4EB0D200B6D00A /* XPMineMainIncomeStatisViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineMainIncomeStatisViewController.h; sourceTree = ""; }; + E85E7A912A4EB0D200B6D00A /* XPMineAnchorIncomeStatisViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineAnchorIncomeStatisViewController.m; sourceTree = ""; }; + E85E7A922A4EB0D200B6D00A /* XPMineGoldIncomeRecordVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGoldIncomeRecordVC.h; sourceTree = ""; }; + E85E7A932A4EB0D200B6D00A /* XPMineGuildIncomeStatisViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGuildIncomeStatisViewController.m; sourceTree = ""; }; + E85E7A942A4EB0D200B6D00A /* XPMineGuildIncomeDetailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGuildIncomeDetailViewController.m; sourceTree = ""; }; + E85E7A952A4EB0D200B6D00A /* XPNewMineGuildIncomeRecordViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNewMineGuildIncomeRecordViewController.m; sourceTree = ""; }; + E85E7A962A4EB0D200B6D00A /* XPMineClanIncomeStatisViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineClanIncomeStatisViewController.h; sourceTree = ""; }; + E85E7A972A4EB0D200B6D00A /* XPMineHallAnchorIncomeStatisViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineHallAnchorIncomeStatisViewController.h; sourceTree = ""; }; + E85E7A982A4EB0D200B6D00A /* XPMineGuildIncomeRecordViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGuildIncomeRecordViewController.m; sourceTree = ""; }; + E85E7A992A4EB0D200B6D00A /* XPMineGuildSearchViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGuildSearchViewController.h; sourceTree = ""; }; + E85E7A9A2A4EB0D200B6D00A /* XPMineClanViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineClanViewController.m; sourceTree = ""; }; + E85E7A9C2A4EB0D200B6D00A /* XPMineGuildSuperAdminSetViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGuildSuperAdminSetViewController.h; sourceTree = ""; }; + E85E7A9D2A4EB0D200B6D00A /* XPMineGuildChooseManagerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGuildChooseManagerViewController.h; sourceTree = ""; }; + E85E7A9E2A4EB0D200B6D00A /* XPMineGuildSuperAdminSetViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGuildSuperAdminSetViewController.m; sourceTree = ""; }; + E85E7A9F2A4EB0D200B6D00A /* XPMineGuildChooseManagerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGuildChooseManagerViewController.m; sourceTree = ""; }; + E85E7AA02A4EB0D200B6D00A /* XPMineGuildViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGuildViewController.m; sourceTree = ""; }; + E85E7AA12A4EB0D200B6D00A /* XPMineGuildListVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGuildListVC.h; sourceTree = ""; }; + E85E7AA22A4EB0D200B6D00A /* XPMineExchangeAuthorityVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineExchangeAuthorityVC.h; sourceTree = ""; }; + E85E7AA42A4EB0D200B6D00A /* XPGuildSuperAdminMenuView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGuildSuperAdminMenuView.m; sourceTree = ""; }; + E85E7AA52A4EB0D200B6D00A /* XPGuildHeaderView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildHeaderView.h; sourceTree = ""; }; + E85E7AA62A4EB0D200B6D00A /* XPClanMenuView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPClanMenuView.m; sourceTree = ""; }; + E85E7AA72A4EB0D200B6D00A /* XPGuildTimePickView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGuildTimePickView.m; sourceTree = ""; }; + E85E7AA82A4EB0D200B6D00A /* XPClanSectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPClanSectionView.h; sourceTree = ""; }; + E85E7AA92A4EB0D200B6D00A /* XPGuildIncomeHeaderView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildIncomeHeaderView.h; sourceTree = ""; }; + E85E7AAA2A4EB0D200B6D00A /* XPGoldIncomeSectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGoldIncomeSectionView.h; sourceTree = ""; }; + E85E7AAB2A4EB0D200B6D00A /* XPGuildSearchNavView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildSearchNavView.h; sourceTree = ""; }; + E85E7AAC2A4EB0D200B6D00A /* XPGuildTimeMonthPickerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGuildTimeMonthPickerView.m; sourceTree = ""; }; + E85E7AAD2A4EB0D200B6D00A /* XPNewGuildIncomeHeaderView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNewGuildIncomeHeaderView.h; sourceTree = ""; }; + E85E7AAE2A4EB0D200B6D00A /* XPNewGuildTimePickView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNewGuildTimePickView.m; sourceTree = ""; }; + E85E7AAF2A4EB0D200B6D00A /* XPGuildIncomeSectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildIncomeSectionView.h; sourceTree = ""; }; + E85E7AB02A4EB0D200B6D00A /* XPGuildAnchorIncomeSectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildAnchorIncomeSectionView.h; sourceTree = ""; }; + E85E7AB12A4EB0D200B6D00A /* XPClanSectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPClanSectionView.m; sourceTree = ""; }; + E85E7AB22A4EB0D200B6D00A /* XPGuildHeaderView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGuildHeaderView.m; sourceTree = ""; }; + E85E7AB32A4EB0D200B6D00A /* XPClanMenuView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPClanMenuView.h; sourceTree = ""; }; + E85E7AB42A4EB0D200B6D00A /* XPGuildTimePickView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildTimePickView.h; sourceTree = ""; }; + E85E7AB52A4EB0D200B6D00A /* XPGuildSuperAdminMenuView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildSuperAdminMenuView.h; sourceTree = ""; }; + E85E7AB62A4EB0D200B6D00A /* XPGuildTimeMonthPickerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildTimeMonthPickerView.h; sourceTree = ""; }; + E85E7AB72A4EB0D200B6D00A /* XPGuildSearchNavView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGuildSearchNavView.m; sourceTree = ""; }; + E85E7AB82A4EB0D200B6D00A /* XPGoldIncomeSectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGoldIncomeSectionView.m; sourceTree = ""; }; + E85E7AB92A4EB0D200B6D00A /* XPGuildIncomeHeaderView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGuildIncomeHeaderView.m; sourceTree = ""; }; + E85E7ABA2A4EB0D200B6D00A /* XPNewGuildTimePickView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNewGuildTimePickView.h; sourceTree = ""; }; + E85E7ABB2A4EB0D200B6D00A /* XPNewGuildIncomeHeaderView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNewGuildIncomeHeaderView.m; sourceTree = ""; }; + E85E7ABC2A4EB0D200B6D00A /* XPGuildAnchorIncomeSectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGuildAnchorIncomeSectionView.m; sourceTree = ""; }; + E85E7ABD2A4EB0D200B6D00A /* XPGuildIncomeSectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGuildIncomeSectionView.m; sourceTree = ""; }; + E85E7ABE2A4EB0D200B6D00A /* XPMineMainGuildListVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineMainGuildListVC.m; sourceTree = ""; }; + E85E7AC02A4EB0D200B6D00A /* XPClanMemberTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPClanMemberTableViewCell.m; sourceTree = ""; }; + E85E7AC12A4EB0D200B6D00A /* XPClanRoomCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPClanRoomCollectionViewCell.m; sourceTree = ""; }; + E85E7AC32A4EB0D200B6D00A /* XPMineGuildListCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGuildListCell.m; sourceTree = ""; }; + E85E7AC42A4EB0D200B6D00A /* XPMineGuildListCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGuildListCell.h; sourceTree = ""; }; + E85E7AC52A4EB0D200B6D00A /* XPMineGuildSearchMemberTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGuildSearchMemberTableViewCell.m; sourceTree = ""; }; + E85E7AC62A4EB0D200B6D00A /* XPMineGuildEmptyTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGuildEmptyTableViewCell.h; sourceTree = ""; }; + E85E7AC72A4EB0D200B6D00A /* XPGuildEmptyCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildEmptyCollectionViewCell.h; sourceTree = ""; }; + E85E7AC92A4EB0D200B6D00A /* XPGuildSuperAdminRoomCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildSuperAdminRoomCollectionViewCell.h; sourceTree = ""; }; + E85E7ACA2A4EB0D200B6D00A /* XPGuildChooseManagerRoomTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGuildChooseManagerRoomTableViewCell.m; sourceTree = ""; }; + E85E7ACB2A4EB0D200B6D00A /* XPGuildSuperAdminSetTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGuildSuperAdminSetTableViewCell.m; sourceTree = ""; }; + E85E7ACC2A4EB0D200B6D00A /* XPGuildSearchSuperAdminTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGuildSearchSuperAdminTableViewCell.m; sourceTree = ""; }; + E85E7ACD2A4EB0D200B6D00A /* XPGuildSuperAdminRoomCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGuildSuperAdminRoomCollectionViewCell.m; sourceTree = ""; }; + E85E7ACE2A4EB0D200B6D00A /* XPGuildChooseManagerRoomTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildChooseManagerRoomTableViewCell.h; sourceTree = ""; }; + E85E7ACF2A4EB0D200B6D00A /* XPGuildSearchSuperAdminTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildSearchSuperAdminTableViewCell.h; sourceTree = ""; }; + E85E7AD02A4EB0D200B6D00A /* XPGuildSuperAdminSetTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildSuperAdminSetTableViewCell.h; sourceTree = ""; }; + E85E7AD22A4EB0D200B6D00A /* XPGuildIncomeDetailCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGuildIncomeDetailCollectionViewCell.m; sourceTree = ""; }; + E85E7AD32A4EB0D200B6D00A /* XPGuildIncomeRecordTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGuildIncomeRecordTableViewCell.m; sourceTree = ""; }; + E85E7AD42A4EB0D200B6D00A /* XPGuildPersonIncomeTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildPersonIncomeTableViewCell.h; sourceTree = ""; }; + E85E7AD52A4EB0D200B6D00A /* XPGuildSingleRoomIncomeTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGuildSingleRoomIncomeTableViewCell.m; sourceTree = ""; }; + E85E7AD62A4EB0D200B6D00A /* XPGuildIncomeDetailCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildIncomeDetailCollectionViewCell.h; sourceTree = ""; }; + E85E7AD72A4EB0D200B6D00A /* XPGuildPersonIncomeTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGuildPersonIncomeTableViewCell.m; sourceTree = ""; }; + E85E7AD82A4EB0D200B6D00A /* XPGuildIncomeRecordTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildIncomeRecordTableViewCell.h; sourceTree = ""; }; + E85E7AD92A4EB0D200B6D00A /* XPGuildSingleRoomIncomeTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPGuildSingleRoomIncomeTableViewCell.h; sourceTree = ""; }; + E85E7ADA2A4EB0D200B6D00A /* XPClanRoomCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPClanRoomCollectionViewCell.h; sourceTree = ""; }; + E85E7ADB2A4EB0D200B6D00A /* XPClanMemberTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPClanMemberTableViewCell.h; sourceTree = ""; }; + E85E7ADC2A4EB0D200B6D00A /* XPMineGuildEmptyTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGuildEmptyTableViewCell.m; sourceTree = ""; }; + E85E7ADD2A4EB0D200B6D00A /* XPMineGuildSearchMemberTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGuildSearchMemberTableViewCell.h; sourceTree = ""; }; + E85E7ADF2A4EB0D200B6D00A /* XPMineExchangeAuthorityCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineExchangeAuthorityCell.h; sourceTree = ""; }; + E85E7AE02A4EB0D200B6D00A /* XPMinePromptWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMinePromptWindow.m; sourceTree = ""; }; + E85E7AE12A4EB0D200B6D00A /* XPMineExchangeAuthorityFooderView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineExchangeAuthorityFooderView.h; sourceTree = ""; }; + E85E7AE22A4EB0D200B6D00A /* XPMineExchangeAuthorityHeadView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineExchangeAuthorityHeadView.m; sourceTree = ""; }; + E85E7AE32A4EB0D200B6D00A /* XPMineExchangeAuthorityCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineExchangeAuthorityCell.m; sourceTree = ""; }; + E85E7AE42A4EB0D200B6D00A /* XPMinePromptWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMinePromptWindow.h; sourceTree = ""; }; + E85E7AE52A4EB0D200B6D00A /* XPMineExchangeAuthorityHeadView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineExchangeAuthorityHeadView.h; sourceTree = ""; }; + E85E7AE62A4EB0D200B6D00A /* XPMineExchangeAuthorityFooderView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineExchangeAuthorityFooderView.m; sourceTree = ""; }; + E85E7AE72A4EB0D200B6D00A /* XPGuildEmptyCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPGuildEmptyCollectionViewCell.m; sourceTree = ""; }; + E85E7AE92A4EB0D200B6D00A /* XPMineGuildManagerPerTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGuildManagerPerTableViewCell.m; sourceTree = ""; }; + E85E7AEB2A4EB0D200B6D00A /* XPMineGuildManagerPerTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGuildManagerPerTableViewCell.h; sourceTree = ""; }; + E85E7AED2A4EB0D200B6D00A /* XPMineGuildSearchViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGuildSearchViewController.m; sourceTree = ""; }; + E85E7AEE2A4EB0D200B6D00A /* XPMineClanViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineClanViewController.h; sourceTree = ""; }; + E85E7AF02A4EB0D200B6D00A /* XPMineGuildSetNameViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGuildSetNameViewController.h; sourceTree = ""; }; + E85E7AF12A4EB0D200B6D00A /* XPMineMangerListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineMangerListViewController.m; sourceTree = ""; }; + E85E7AF22A4EB0D200B6D00A /* XPMineGuildRemoveMemberViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGuildRemoveMemberViewController.h; sourceTree = ""; }; + E85E7AF32A4EB0D200B6D00A /* XPMineGuildManagerSetViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGuildManagerSetViewController.m; sourceTree = ""; }; + E85E7AF42A4EB0D200B6D00A /* XPMineGuildManagerPerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGuildManagerPerViewController.m; sourceTree = ""; }; + E85E7AF52A4EB0D200B6D00A /* XPMineGuildManagerSetViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGuildManagerSetViewController.h; sourceTree = ""; }; + E85E7AF62A4EB0D200B6D00A /* XPMineGuildRemoveMemberViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGuildRemoveMemberViewController.m; sourceTree = ""; }; + E85E7AF72A4EB0D200B6D00A /* XPMineMangerListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineMangerListViewController.h; sourceTree = ""; }; + E85E7AF82A4EB0D200B6D00A /* XPMineGuildSetNameViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGuildSetNameViewController.m; sourceTree = ""; }; + E85E7AF92A4EB0D200B6D00A /* XPMineGuildManagerPerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGuildManagerPerViewController.h; sourceTree = ""; }; + E85E7AFA2A4EB0D200B6D00A /* XPMineExchangeAuthorityVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineExchangeAuthorityVC.m; sourceTree = ""; }; + E85E7AFB2A4EB0D200B6D00A /* XPMineMainGuildListVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineMainGuildListVC.h; sourceTree = ""; }; + E85E7AFC2A4EB0D200B6D00A /* XPMineGuildViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGuildViewController.h; sourceTree = ""; }; + E85E7AFD2A4EB0D200B6D00A /* XPMineGuildListVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGuildListVC.m; sourceTree = ""; }; E85E7AFF2A4EB0D200B6D00A /* Api+Guild.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Api+Guild.m"; sourceTree = ""; }; E85E7B002A4EB0D200B6D00A /* Api+Guild.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Api+Guild.h"; sourceTree = ""; }; - E85E7B522A4EB4AD00B6D00A /* YUMIManeUnionStatementMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeUnionStatementMatrix.h; sourceTree = ""; }; - E85E7B532A4EB4AD00B6D00A /* YUMIManeUnionStatementMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeUnionStatementMatrix.m; sourceTree = ""; }; - E85E7B592A4EC35A00B6D00A /* YUMIRevenueReflectionGoldSpecificsMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIRevenueReflectionGoldSpecificsMatrix.h; sourceTree = ""; }; - E85E7B5A2A4EC35A00B6D00A /* YUMIExchangeDiamondsMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIExchangeDiamondsMatrix.h; sourceTree = ""; }; - E85E7B5B2A4EC35A00B6D00A /* YUMIRevenueReflectionMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIRevenueReflectionMatrix.h; sourceTree = ""; }; - E85E7B5C2A4EC35A00B6D00A /* YUMIDilemmaExtractAbstractMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIDilemmaExtractAbstractMatrix.h; sourceTree = ""; }; - E85E7B5D2A4EC35A00B6D00A /* YUMIWithdrawAccountMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIWithdrawAccountMatrix.m; sourceTree = ""; }; - E85E7B5E2A4EC35A00B6D00A /* YUMIRevenueReflectionMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIRevenueReflectionMatrix.m; sourceTree = ""; }; - E85E7B5F2A4EC35A00B6D00A /* YUMIExchangeDiamondsMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIExchangeDiamondsMatrix.m; sourceTree = ""; }; - E85E7B602A4EC35A00B6D00A /* YUMIRevenueReflectionGoldSpecificsMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIRevenueReflectionGoldSpecificsMatrix.m; sourceTree = ""; }; - E85E7B612A4EC35A00B6D00A /* YUMIDilemmaExtractAbstractMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIDilemmaExtractAbstractMatrix.m; sourceTree = ""; }; - E85E7B622A4EC35A00B6D00A /* YUMIWithdrawAccountMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIWithdrawAccountMatrix.h; sourceTree = ""; }; - E85E7B692A4EC39400B6D00A /* YUMIManeExchangeAuthorityMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeExchangeAuthorityMatrix.m; sourceTree = ""; }; - E85E7B6A2A4EC39400B6D00A /* YUMIManeExchangeAuthorityMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeExchangeAuthorityMatrix.h; sourceTree = ""; }; - E85E7B6C2A4EC4AE00B6D00A /* YUMIManeUnionExternalizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeUnionExternalizer.m; sourceTree = ""; }; - E85E7B6D2A4EC4AE00B6D00A /* YUMIManeUnionExternalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeUnionExternalizer.h; sourceTree = ""; }; - E85E7B6F2A4EC4B700B6D00A /* FBCManeUnionCeremony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBCManeUnionCeremony.h; sourceTree = ""; }; - E85E7B702A4EC93C00B6D00A /* YUMIManeGiveDiamondHuntforRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeGiveDiamondHuntforRegard.h; sourceTree = ""; }; - E85E7B712A4EC93C00B6D00A /* YUMIManeGiveDiamondHuntforRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeGiveDiamondHuntforRegard.m; sourceTree = ""; }; - E85E7B752A4EC99200B6D00A /* YUMIManeGiveDiamondExternalizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeGiveDiamondExternalizer.m; sourceTree = ""; }; - E85E7B762A4EC99200B6D00A /* YUMIManeGiveDiamondExternalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeGiveDiamondExternalizer.h; sourceTree = ""; }; - E85E7B782A4EC99200B6D00A /* FBCManeGiveDiamondCeremony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBCManeGiveDiamondCeremony.h; sourceTree = ""; }; - E85E7B7A2A4EC99200B6D00A /* YUMIManeGiveDiamondSpecificsMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeGiveDiamondSpecificsMatrix.m; sourceTree = ""; }; - E85E7B7B2A4EC99200B6D00A /* YUMIManeGiveDiamondMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeGiveDiamondMatrix.m; sourceTree = ""; }; - E85E7B7C2A4EC99200B6D00A /* YUMIManeGiveDiamondHuntforMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeGiveDiamondHuntforMatrix.h; sourceTree = ""; }; - E85E7B7D2A4EC99200B6D00A /* YUMIManeGiveDiamondSpecificsMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeGiveDiamondSpecificsMatrix.h; sourceTree = ""; }; - E85E7B7E2A4EC99200B6D00A /* YUMIManeGiveDiamondMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeGiveDiamondMatrix.h; sourceTree = ""; }; - E85E7B7F2A4EC99200B6D00A /* YUMIManeGiveDiamondHuntforMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeGiveDiamondHuntforMatrix.m; sourceTree = ""; }; - E85E7B812A4EC99200B6D00A /* YUMIManeGiveDiamondVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeGiveDiamondVC.h; sourceTree = ""; }; - E85E7B822A4EC99200B6D00A /* YUMIManeChooseGiveDiamondVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeChooseGiveDiamondVC.h; sourceTree = ""; }; - E85E7B832A4EC99200B6D00A /* YUMIManeGiveDiamondSpecificsVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeGiveDiamondSpecificsVC.m; sourceTree = ""; }; - E85E7B842A4EC99200B6D00A /* YUMIManeGiveDiamondSpecificsVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeGiveDiamondSpecificsVC.h; sourceTree = ""; }; - E85E7B862A4EC99200B6D00A /* YUMIManeGiveDiamondElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeGiveDiamondElement.m; sourceTree = ""; }; - E85E7B872A4EC99200B6D00A /* YUMIManeChooseGiveDiamondRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeChooseGiveDiamondRegard.m; sourceTree = ""; }; - E85E7B882A4EC99200B6D00A /* YUMIManeConfirmGiveDiamondRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeConfirmGiveDiamondRegard.h; sourceTree = ""; }; - E85E7B892A4EC99200B6D00A /* YUMIManeGiveDiamondHuntforRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeGiveDiamondHuntforRegard.m; sourceTree = ""; }; - E85E7B8A2A4EC99200B6D00A /* YUMIManeGiveDiamondCiphercodeRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeGiveDiamondCiphercodeRegard.m; sourceTree = ""; }; - E85E7B8B2A4EC99200B6D00A /* YUMIManeChooseGivePresentRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeChooseGivePresentRegardElement.h; sourceTree = ""; }; - E85E7B8C2A4EC99200B6D00A /* YUMIManeGiveDiamondSpecificsRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeGiveDiamondSpecificsRegard.h; sourceTree = ""; }; - E85E7B8D2A4EC99200B6D00A /* YUMIManeChooseGivePresentRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeChooseGivePresentRegard.h; sourceTree = ""; }; - E85E7B8E2A4EC99200B6D00A /* YUMIManeGiveDiamondPwordRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeGiveDiamondPwordRegard.h; sourceTree = ""; }; - E85E7B8F2A4EC99200B6D00A /* YUMIManeGiveDiamondSpecificsElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeGiveDiamondSpecificsElement.h; sourceTree = ""; }; - E85E7B902A4EC99200B6D00A /* YUMIManeChooseGiveDiamondRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeChooseGiveDiamondRegard.h; sourceTree = ""; }; - E85E7B912A4EC99200B6D00A /* YUMIManeGiveDiamondElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeGiveDiamondElement.h; sourceTree = ""; }; - E85E7B922A4EC99200B6D00A /* YUMIManeChooseGivePresentRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeChooseGivePresentRegardElement.m; sourceTree = ""; }; - E85E7B932A4EC99200B6D00A /* YUMIManeGiveDiamondCiphercodeRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeGiveDiamondCiphercodeRegard.h; sourceTree = ""; }; - E85E7B942A4EC99200B6D00A /* YUMIManeGiveDiamondHuntforRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManeGiveDiamondHuntforRegard.h; sourceTree = ""; }; - E85E7B952A4EC99200B6D00A /* YUMIManeConfirmGiveDiamondRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConfirmGiveDiamondRegard.m; sourceTree = ""; }; - E85E7B962A4EC99200B6D00A /* YUMIManeGiveDiamondPwordRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeGiveDiamondPwordRegard.m; sourceTree = ""; }; - E85E7B972A4EC99200B6D00A /* YUMIManeChooseGivePresentRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeChooseGivePresentRegard.m; sourceTree = ""; }; - E85E7B982A4EC99200B6D00A /* YUMIManeGiveDiamondSpecificsRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeGiveDiamondSpecificsRegard.m; sourceTree = ""; }; - E85E7B992A4EC99200B6D00A /* YUMIManeGiveDiamondSpecificsElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeGiveDiamondSpecificsElement.m; sourceTree = ""; }; - E85E7B9A2A4EC99200B6D00A /* YUMIManeGiveDiamondVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeGiveDiamondVC.m; sourceTree = ""; }; - E85E7B9B2A4EC99200B6D00A /* YUMIManeChooseGiveDiamondVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManeChooseGiveDiamondVC.m; sourceTree = ""; }; + E85E7B522A4EB4AD00B6D00A /* XPMineGuildListModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineGuildListModel.h; sourceTree = ""; }; + E85E7B532A4EB4AD00B6D00A /* XPMineGuildListModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineGuildListModel.m; sourceTree = ""; }; + E85E7B592A4EC35A00B6D00A /* XPIncomeRecordGoldDetailsModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPIncomeRecordGoldDetailsModel.h; sourceTree = ""; }; + E85E7B5A2A4EC35A00B6D00A /* XPExchangeDiamondsModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPExchangeDiamondsModel.h; sourceTree = ""; }; + E85E7B5B2A4EC35A00B6D00A /* XPIncomeRecordModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPIncomeRecordModel.h; sourceTree = ""; }; + E85E7B5C2A4EC35A00B6D00A /* XPBindExtractInfoModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPBindExtractInfoModel.h; sourceTree = ""; }; + E85E7B5D2A4EC35A00B6D00A /* XPWithdrawAccountModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPWithdrawAccountModel.m; sourceTree = ""; }; + E85E7B5E2A4EC35A00B6D00A /* XPIncomeRecordModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPIncomeRecordModel.m; sourceTree = ""; }; + E85E7B5F2A4EC35A00B6D00A /* XPExchangeDiamondsModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPExchangeDiamondsModel.m; sourceTree = ""; }; + E85E7B602A4EC35A00B6D00A /* XPIncomeRecordGoldDetailsModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPIncomeRecordGoldDetailsModel.m; sourceTree = ""; }; + E85E7B612A4EC35A00B6D00A /* XPBindExtractInfoModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPBindExtractInfoModel.m; sourceTree = ""; }; + E85E7B622A4EC35A00B6D00A /* XPWithdrawAccountModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPWithdrawAccountModel.h; sourceTree = ""; }; + E85E7B692A4EC39400B6D00A /* XPMineExchangeAuthorityModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineExchangeAuthorityModel.m; sourceTree = ""; }; + E85E7B6A2A4EC39400B6D00A /* XPMineExchangeAuthorityModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineExchangeAuthorityModel.h; sourceTree = ""; }; + E85E7B6C2A4EC4AE00B6D00A /* XPMineGuildPresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGuildPresenter.m; sourceTree = ""; }; + E85E7B6D2A4EC4AE00B6D00A /* XPMineGuildPresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGuildPresenter.h; sourceTree = ""; }; + E85E7B6F2A4EC4B700B6D00A /* XPMineGuildProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGuildProtocol.h; sourceTree = ""; }; + E85E7B702A4EC93C00B6D00A /* XPMineGiveDiamondSearchView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineGiveDiamondSearchView.h; sourceTree = ""; }; + E85E7B712A4EC93C00B6D00A /* XPMineGiveDiamondSearchView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineGiveDiamondSearchView.m; sourceTree = ""; }; + E85E7B752A4EC99200B6D00A /* XPMineGiveDiamondPresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGiveDiamondPresenter.m; sourceTree = ""; }; + E85E7B762A4EC99200B6D00A /* XPMineGiveDiamondPresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGiveDiamondPresenter.h; sourceTree = ""; }; + E85E7B782A4EC99200B6D00A /* XPMineGiveDiamondProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGiveDiamondProtocol.h; sourceTree = ""; }; + E85E7B7A2A4EC99200B6D00A /* XPMineGiveDiamondDetailsModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGiveDiamondDetailsModel.m; sourceTree = ""; }; + E85E7B7B2A4EC99200B6D00A /* XPMineGiveDiamondModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGiveDiamondModel.m; sourceTree = ""; }; + E85E7B7C2A4EC99200B6D00A /* XPMineGiveDiamondSearchModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGiveDiamondSearchModel.h; sourceTree = ""; }; + E85E7B7D2A4EC99200B6D00A /* XPMineGiveDiamondDetailsModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGiveDiamondDetailsModel.h; sourceTree = ""; }; + E85E7B7E2A4EC99200B6D00A /* XPMineGiveDiamondModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGiveDiamondModel.h; sourceTree = ""; }; + E85E7B7F2A4EC99200B6D00A /* XPMineGiveDiamondSearchModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGiveDiamondSearchModel.m; sourceTree = ""; }; + E85E7B812A4EC99200B6D00A /* XPMineGiveDiamondVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGiveDiamondVC.h; sourceTree = ""; }; + E85E7B822A4EC99200B6D00A /* XPMineChooseGiveDiamondVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineChooseGiveDiamondVC.h; sourceTree = ""; }; + E85E7B832A4EC99200B6D00A /* XPMineGiveDiamondDetailsVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGiveDiamondDetailsVC.m; sourceTree = ""; }; + E85E7B842A4EC99200B6D00A /* XPMineGiveDiamondDetailsVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGiveDiamondDetailsVC.h; sourceTree = ""; }; + E85E7B862A4EC99200B6D00A /* XPMineGiveDiamondCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGiveDiamondCell.m; sourceTree = ""; }; + E85E7B872A4EC99200B6D00A /* XPMineChooseGiveDiamondView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineChooseGiveDiamondView.m; sourceTree = ""; }; + E85E7B882A4EC99200B6D00A /* XPMineConfirmGiveDiamondView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineConfirmGiveDiamondView.h; sourceTree = ""; }; + E85E7B892A4EC99200B6D00A /* XPMineGiveDiamondSearchView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGiveDiamondSearchView.m; sourceTree = ""; }; + E85E7B8A2A4EC99200B6D00A /* XPMineGiveDiamondPasswordView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGiveDiamondPasswordView.m; sourceTree = ""; }; + E85E7B8B2A4EC99200B6D00A /* XPMineChooseGiveGiftViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineChooseGiveGiftViewCell.h; sourceTree = ""; }; + E85E7B8C2A4EC99200B6D00A /* XPMineGiveDiamondDetailsView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGiveDiamondDetailsView.h; sourceTree = ""; }; + E85E7B8D2A4EC99200B6D00A /* XPMineChooseGiveGiftView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineChooseGiveGiftView.h; sourceTree = ""; }; + E85E7B8E2A4EC99200B6D00A /* XPMineGiveDiamondPwdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGiveDiamondPwdView.h; sourceTree = ""; }; + E85E7B8F2A4EC99200B6D00A /* XPMineGiveDiamondDetailsCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGiveDiamondDetailsCell.h; sourceTree = ""; }; + E85E7B902A4EC99200B6D00A /* XPMineChooseGiveDiamondView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineChooseGiveDiamondView.h; sourceTree = ""; }; + E85E7B912A4EC99200B6D00A /* XPMineGiveDiamondCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGiveDiamondCell.h; sourceTree = ""; }; + E85E7B922A4EC99200B6D00A /* XPMineChooseGiveGiftViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineChooseGiveGiftViewCell.m; sourceTree = ""; }; + E85E7B932A4EC99200B6D00A /* XPMineGiveDiamondPasswordView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGiveDiamondPasswordView.h; sourceTree = ""; }; + E85E7B942A4EC99200B6D00A /* XPMineGiveDiamondSearchView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineGiveDiamondSearchView.h; sourceTree = ""; }; + E85E7B952A4EC99200B6D00A /* XPMineConfirmGiveDiamondView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineConfirmGiveDiamondView.m; sourceTree = ""; }; + E85E7B962A4EC99200B6D00A /* XPMineGiveDiamondPwdView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGiveDiamondPwdView.m; sourceTree = ""; }; + E85E7B972A4EC99200B6D00A /* XPMineChooseGiveGiftView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineChooseGiveGiftView.m; sourceTree = ""; }; + E85E7B982A4EC99200B6D00A /* XPMineGiveDiamondDetailsView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGiveDiamondDetailsView.m; sourceTree = ""; }; + E85E7B992A4EC99200B6D00A /* XPMineGiveDiamondDetailsCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGiveDiamondDetailsCell.m; sourceTree = ""; }; + E85E7B9A2A4EC99200B6D00A /* XPMineGiveDiamondVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineGiveDiamondVC.m; sourceTree = ""; }; + E85E7B9B2A4EC99200B6D00A /* XPMineChooseGiveDiamondVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineChooseGiveDiamondVC.m; sourceTree = ""; }; E85E7B9D2A4EC99200B6D00A /* Api+GiveDiamond.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Api+GiveDiamond.h"; sourceTree = ""; }; E85E7B9E2A4EC99200B6D00A /* Api+GiveDiamond.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Api+GiveDiamond.m"; sourceTree = ""; }; - E85E7BB12A4ED45300B6D00A /* YUMIPageControl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPageControl.h; sourceTree = ""; }; - E85E7BB22A4ED45300B6D00A /* YUMIPageControl.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPageControl.m; sourceTree = ""; }; - E85E7BB42A4ED59900B6D00A /* YUMIRevenueReflectionGoldSpecificsElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIRevenueReflectionGoldSpecificsElement.h; sourceTree = ""; }; - E85E7BB52A4ED59900B6D00A /* YUMIRevenueReflectionGoldSpecificsElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIRevenueReflectionGoldSpecificsElement.m; sourceTree = ""; }; - E85E7BB72A4ED89E00B6D00A /* YUMIRevenueReflectionGoldSpecificsIntelligenceRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIRevenueReflectionGoldSpecificsIntelligenceRegard.h; sourceTree = ""; }; - E85E7BB82A4ED89F00B6D00A /* YUMIRevenueReflectionGoldSpecificsIntelligenceRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIRevenueReflectionGoldSpecificsIntelligenceRegard.m; sourceTree = ""; }; - E85E7BBA2A4EE70B00B6D00A /* YUMIManeTheUnionElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeTheUnionElement.h; sourceTree = ""; }; - E85E7BBB2A4EE70B00B6D00A /* YUMIManeTheUnionElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeTheUnionElement.m; sourceTree = ""; }; - E85E7BBD2A4EE7AC00B6D00A /* YUMIManeFeaturealConcentrateElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeFeaturealConcentrateElement.h; sourceTree = ""; }; - E85E7BBE2A4EE7AC00B6D00A /* YUMIManeFeaturealConcentrateElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeFeaturealConcentrateElement.m; sourceTree = ""; }; - E85E7BC02A4EE82300B6D00A /* YUMIManeStatementElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeStatementElement.h; sourceTree = ""; }; - E85E7BC12A4EE82300B6D00A /* YUMIManeStatementElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeStatementElement.m; sourceTree = ""; }; - E86507E3281A7D4D006951B0 /* CommunicationSatisfactionTweetRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationSatisfactionTweetRegard.h; sourceTree = ""; }; - E86507E4281A7D4D006951B0 /* CommunicationSatisfactionTweetRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationSatisfactionTweetRegard.m; sourceTree = ""; }; - E86507E6281A8212006951B0 /* SatisfactionTweetMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SatisfactionTweetMatrix.h; sourceTree = ""; }; - E86507E7281A8212006951B0 /* SatisfactionTweetMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SatisfactionTweetMatrix.m; sourceTree = ""; }; - E86507E9281A88A9006951B0 /* CommunicationSatisfactionCommunicationSolitaireRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationSatisfactionCommunicationSolitaireRegard.h; sourceTree = ""; }; - E86507EA281A88A9006951B0 /* CommunicationSatisfactionCommunicationSolitaireRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationSatisfactionCommunicationSolitaireRegard.m; sourceTree = ""; }; + E85E7BB12A4ED45300B6D00A /* XPPageControl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPPageControl.h; sourceTree = ""; }; + E85E7BB22A4ED45300B6D00A /* XPPageControl.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPPageControl.m; sourceTree = ""; }; + E85E7BB42A4ED59900B6D00A /* XPIncomeRecordGoldDetailsCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPIncomeRecordGoldDetailsCell.h; sourceTree = ""; }; + E85E7BB52A4ED59900B6D00A /* XPIncomeRecordGoldDetailsCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPIncomeRecordGoldDetailsCell.m; sourceTree = ""; }; + E85E7BB72A4ED89E00B6D00A /* XPIncomeRecordGoldDetailsHeadView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPIncomeRecordGoldDetailsHeadView.h; sourceTree = ""; }; + E85E7BB82A4ED89F00B6D00A /* XPIncomeRecordGoldDetailsHeadView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPIncomeRecordGoldDetailsHeadView.m; sourceTree = ""; }; + E85E7BBA2A4EE70B00B6D00A /* XPMineTheGuildCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineTheGuildCell.h; sourceTree = ""; }; + E85E7BBB2A4EE70B00B6D00A /* XPMineTheGuildCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineTheGuildCell.m; sourceTree = ""; }; + E85E7BBD2A4EE7AC00B6D00A /* XPMinePersonalCenterCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMinePersonalCenterCell.h; sourceTree = ""; }; + E85E7BBE2A4EE7AC00B6D00A /* XPMinePersonalCenterCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMinePersonalCenterCell.m; sourceTree = ""; }; + E85E7BC02A4EE82300B6D00A /* XPMineListCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineListCell.h; sourceTree = ""; }; + E85E7BC12A4EE82300B6D00A /* XPMineListCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineListCell.m; sourceTree = ""; }; + E86507E3281A7D4D006951B0 /* MessageContentTweetView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageContentTweetView.h; sourceTree = ""; }; + E86507E4281A7D4D006951B0 /* MessageContentTweetView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageContentTweetView.m; sourceTree = ""; }; + E86507E6281A8212006951B0 /* ContentTweetModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ContentTweetModel.h; sourceTree = ""; }; + E86507E7281A8212006951B0 /* ContentTweetModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ContentTweetModel.m; sourceTree = ""; }; + E86507E9281A88A9006951B0 /* MessageContentSkillCardView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageContentSkillCardView.h; sourceTree = ""; }; + E86507EA281A88A9006951B0 /* MessageContentSkillCardView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageContentSkillCardView.m; sourceTree = ""; }; E86596412701611A00846EBD /* UIImage+ImageEffects.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+ImageEffects.m"; sourceTree = ""; }; E86596422701611A00846EBD /* UIImage+ImageEffects.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+ImageEffects.h"; sourceTree = ""; }; - E865964F2701A1C000846EBD /* StatsticsticsServing.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StatsticsticsServing.h; sourceTree = ""; }; - E86596502701A1C000846EBD /* StatsticsticsServing.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StatsticsticsServing.m; sourceTree = ""; }; - E86596522701A55500846EBD /* StatsticsticsServingFacilitater.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StatsticsticsServingFacilitater.h; sourceTree = ""; }; - E86596532701A55500846EBD /* StatsticsticsServingFacilitater.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StatsticsticsServingFacilitater.m; sourceTree = ""; }; - E8659907273E800D00EE349D /* YUMIPresentAssembletionRegardFlowProgramming.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPresentAssembletionRegardFlowProgramming.h; sourceTree = ""; }; - E8659908273E800D00EE349D /* YUMIPresentAssembletionRegardFlowProgramming.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPresentAssembletionRegardFlowProgramming.m; sourceTree = ""; }; - E8664ECE27E42238000171BA /* YUMIChamberCombatIntratemporalPickerRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCombatIntratemporalPickerRegard.h; sourceTree = ""; }; - E8664ECF27E42238000171BA /* YUMIChamberCombatIntratemporalPickerRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCombatIntratemporalPickerRegard.m; sourceTree = ""; }; - E8664ED127E4258A000171BA /* ChamberCombatIntratemporalProvisionMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChamberCombatIntratemporalProvisionMatrix.h; sourceTree = ""; }; - E8664ED227E4258A000171BA /* ChamberCombatIntratemporalProvisionMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ChamberCombatIntratemporalProvisionMatrix.m; sourceTree = ""; }; - E8664ED427E434D5000171BA /* YUMIChamberCombatReflectionRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCombatReflectionRegardGovernancer.h; sourceTree = ""; }; - E8664ED527E434D5000171BA /* YUMIChamberCombatReflectionRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCombatReflectionRegardGovernancer.m; sourceTree = ""; }; - E8664ED727E4355C000171BA /* YUMIChamberCombatReflectionTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCombatReflectionTabulationRegardElement.h; sourceTree = ""; }; - E8664ED827E4355C000171BA /* YUMIChamberCombatReflectionTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCombatReflectionTabulationRegardElement.m; sourceTree = ""; }; - E8664EDA27E43632000171BA /* YUMIChamberCombatDispossessTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCombatDispossessTabulationRegardElement.h; sourceTree = ""; }; - E8664EDB27E43632000171BA /* YUMIChamberCombatDispossessTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCombatDispossessTabulationRegardElement.m; sourceTree = ""; }; - E8664EDD27E45EC7000171BA /* YUMIChamberCombatReflectionExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCombatReflectionExternalizer.h; sourceTree = ""; }; - E8664EDE27E45EC7000171BA /* YUMIChamberCombatReflectionExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCombatReflectionExternalizer.m; sourceTree = ""; }; - E8664EE027E45EE6000171BA /* FBCChamberCombatRecordCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCChamberCombatRecordCeremony.h; sourceTree = ""; }; - E8664EE127E47711000171BA /* YUMIChamberCombatReflectionNickRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCombatReflectionNickRegard.h; sourceTree = ""; }; - E8664EE227E47711000171BA /* YUMIChamberCombatReflectionNickRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCombatReflectionNickRegard.m; sourceTree = ""; }; - E8664EE427E482EF000171BA /* ChamberCombatSquadMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChamberCombatSquadMatrix.h; sourceTree = ""; }; - E8664EE527E482EF000171BA /* ChamberCombatSquadMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ChamberCombatSquadMatrix.m; sourceTree = ""; }; - E866B6E32759F96F009B002A /* YUMIMiniChamberRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIMiniChamberRegard.h; sourceTree = ""; }; - E866B6E42759F96F009B002A /* YUMIMiniChamberRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIMiniChamberRegard.m; sourceTree = ""; }; - E8680716271967B00024F48F /* MiecreoscoopeRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MiecreoscoopeRegard.h; sourceTree = ""; }; - E8680717271967B00024F48F /* MiecreoscoopeRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MiecreoscoopeRegard.m; sourceTree = ""; }; - E86A16BD2856D4D5004228B8 /* YUMIInterlocutionDiscoveryStrangeBewelcometoStatementRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIInterlocutionDiscoveryStrangeBewelcometoStatementRegard.h; sourceTree = ""; }; - E86A16BE2856D4D5004228B8 /* YUMIInterlocutionDiscoveryStrangeBewelcometoStatementRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIInterlocutionDiscoveryStrangeBewelcometoStatementRegard.m; sourceTree = ""; }; - E86A16C02856D635004228B8 /* YUMIInterlocutionDiscoveryStrangeBewelcometoTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIInterlocutionDiscoveryStrangeBewelcometoTabulationRegardElement.h; sourceTree = ""; }; - E86A16C12856D635004228B8 /* YUMIInterlocutionDiscoveryStrangeBewelcometoTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIInterlocutionDiscoveryStrangeBewelcometoTabulationRegardElement.m; sourceTree = ""; }; - E86A16C32856DBEC004228B8 /* DiscoveryStrangeBewelcometoStatementMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DiscoveryStrangeBewelcometoStatementMatrix.h; sourceTree = ""; }; - E86A16C42856DBEC004228B8 /* DiscoveryStrangeBewelcometoStatementMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DiscoveryStrangeBewelcometoStatementMatrix.m; sourceTree = ""; }; - E86A16CC28574844004228B8 /* YUMIChamberLicneseHourRateRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberLicneseHourRateRegard.h; sourceTree = ""; }; - E86A16CD28574844004228B8 /* YUMIChamberLicneseHourRateRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberLicneseHourRateRegard.m; sourceTree = ""; }; - E86E79CB28A4E045006DAF48 /* CommunicationSatisfactionVenturePrecautiousRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationSatisfactionVenturePrecautiousRegard.h; sourceTree = ""; }; - E86E79CC28A4E045006DAF48 /* CommunicationSatisfactionVenturePrecautiousRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationSatisfactionVenturePrecautiousRegard.m; sourceTree = ""; }; - E86E79CE28A4E0B2006DAF48 /* SatisfactionRistPrecautiousMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SatisfactionRistPrecautiousMatrix.h; sourceTree = ""; }; - E86E79CF28A4E0B2006DAF48 /* SatisfactionRistPrecautiousMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SatisfactionRistPrecautiousMatrix.m; sourceTree = ""; }; - E86E79D128A4E94E006DAF48 /* InterlocutionVentureRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InterlocutionVentureRegard.h; sourceTree = ""; }; - E86E79D228A4E94E006DAF48 /* InterlocutionVentureRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InterlocutionVentureRegard.m; sourceTree = ""; }; - E86E79D428A4EA0C006DAF48 /* InterlocutionVentureCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InterlocutionVentureCache.h; sourceTree = ""; }; - E86E79D528A4EA0C006DAF48 /* InterlocutionVentureCache.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InterlocutionVentureCache.m; sourceTree = ""; }; - E86F6183284F4E4800E8EC9A /* ChamberHalfHourRateMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChamberHalfHourRateMatrix.h; sourceTree = ""; }; - E86F6184284F4E4800E8EC9A /* ChamberHalfHourRateMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ChamberHalfHourRateMatrix.m; sourceTree = ""; }; - E872309126E8D31500B90D4F /* SurmountValidationCodeRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SurmountValidationCodeRegard.h; sourceTree = ""; }; - E872309226E8D31500B90D4F /* SurmountValidationCodeRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SurmountValidationCodeRegard.m; sourceTree = ""; }; + E865964F2701A1C000846EBD /* StatisticsService.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StatisticsService.h; sourceTree = ""; }; + E86596502701A1C000846EBD /* StatisticsService.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StatisticsService.m; sourceTree = ""; }; + E86596522701A55500846EBD /* StatisticsServiceHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StatisticsServiceHelper.h; sourceTree = ""; }; + E86596532701A55500846EBD /* StatisticsServiceHelper.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StatisticsServiceHelper.m; sourceTree = ""; }; + E8659907273E800D00EE349D /* XPGiftCollectionViewFlowLayout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftCollectionViewFlowLayout.h; sourceTree = ""; }; + E8659908273E800D00EE349D /* XPGiftCollectionViewFlowLayout.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftCollectionViewFlowLayout.m; sourceTree = ""; }; + E8664ECE27E42238000171BA /* XPRoomPKTimePickerView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKTimePickerView.h; sourceTree = ""; }; + E8664ECF27E42238000171BA /* XPRoomPKTimePickerView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKTimePickerView.m; sourceTree = ""; }; + E8664ED127E4258A000171BA /* RoomPKTimeItemModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomPKTimeItemModel.h; sourceTree = ""; }; + E8664ED227E4258A000171BA /* RoomPKTimeItemModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomPKTimeItemModel.m; sourceTree = ""; }; + E8664ED427E434D5000171BA /* XPRoomPKRecordViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKRecordViewController.h; sourceTree = ""; }; + E8664ED527E434D5000171BA /* XPRoomPKRecordViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKRecordViewController.m; sourceTree = ""; }; + E8664ED727E4355C000171BA /* XPRoomPKRecordTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKRecordTableViewCell.h; sourceTree = ""; }; + E8664ED827E4355C000171BA /* XPRoomPKRecordTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKRecordTableViewCell.m; sourceTree = ""; }; + E8664EDA27E43632000171BA /* XPRoomPKEmptyTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKEmptyTableViewCell.h; sourceTree = ""; }; + E8664EDB27E43632000171BA /* XPRoomPKEmptyTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKEmptyTableViewCell.m; sourceTree = ""; }; + E8664EDD27E45EC7000171BA /* XPRoomPKRecordPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKRecordPresenter.h; sourceTree = ""; }; + E8664EDE27E45EC7000171BA /* XPRoomPKRecordPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKRecordPresenter.m; sourceTree = ""; }; + E8664EE027E45EE6000171BA /* XPRoomPKRecordProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKRecordProtocol.h; sourceTree = ""; }; + E8664EE127E47711000171BA /* XPRoomPKRecordNickView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKRecordNickView.h; sourceTree = ""; }; + E8664EE227E47711000171BA /* XPRoomPKRecordNickView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKRecordNickView.m; sourceTree = ""; }; + E8664EE427E482EF000171BA /* RoomPKTeamModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomPKTeamModel.h; sourceTree = ""; }; + E8664EE527E482EF000171BA /* RoomPKTeamModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomPKTeamModel.m; sourceTree = ""; }; + E866B6E32759F96F009B002A /* XPMiniRoomView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMiniRoomView.h; sourceTree = ""; }; + E866B6E42759F96F009B002A /* XPMiniRoomView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMiniRoomView.m; sourceTree = ""; }; + E8680716271967B00024F48F /* MicroView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MicroView.h; sourceTree = ""; }; + E8680717271967B00024F48F /* MicroView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MicroView.m; sourceTree = ""; }; + E86A16BD2856D4D5004228B8 /* XPSessionFindNewGreetListView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSessionFindNewGreetListView.h; sourceTree = ""; }; + E86A16BE2856D4D5004228B8 /* XPSessionFindNewGreetListView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSessionFindNewGreetListView.m; sourceTree = ""; }; + E86A16C02856D635004228B8 /* XPSessionFindNewGreetTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSessionFindNewGreetTableViewCell.h; sourceTree = ""; }; + E86A16C12856D635004228B8 /* XPSessionFindNewGreetTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSessionFindNewGreetTableViewCell.m; sourceTree = ""; }; + E86A16C32856DBEC004228B8 /* FindNewGreetListModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FindNewGreetListModel.h; sourceTree = ""; }; + E86A16C42856DBEC004228B8 /* FindNewGreetListModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FindNewGreetListModel.m; sourceTree = ""; }; + E86A16CC28574844004228B8 /* XPRoomLicneseHourRankView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomLicneseHourRankView.h; sourceTree = ""; }; + E86A16CD28574844004228B8 /* XPRoomLicneseHourRankView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomLicneseHourRankView.m; sourceTree = ""; }; + E86E79CB28A4E045006DAF48 /* MessageContentRiskAlertView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageContentRiskAlertView.h; sourceTree = ""; }; + E86E79CC28A4E045006DAF48 /* MessageContentRiskAlertView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageContentRiskAlertView.m; sourceTree = ""; }; + E86E79CE28A4E0B2006DAF48 /* ContentRistAlertModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ContentRistAlertModel.h; sourceTree = ""; }; + E86E79CF28A4E0B2006DAF48 /* ContentRistAlertModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ContentRistAlertModel.m; sourceTree = ""; }; + E86E79D128A4E94E006DAF48 /* SessionRiskView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SessionRiskView.h; sourceTree = ""; }; + E86E79D228A4E94E006DAF48 /* SessionRiskView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SessionRiskView.m; sourceTree = ""; }; + E86E79D428A4EA0C006DAF48 /* SessionRiskCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SessionRiskCache.h; sourceTree = ""; }; + E86E79D528A4EA0C006DAF48 /* SessionRiskCache.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SessionRiskCache.m; sourceTree = ""; }; + E86F6183284F4E4800E8EC9A /* RoomHalfHourRankModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomHalfHourRankModel.h; sourceTree = ""; }; + E86F6184284F4E4800E8EC9A /* RoomHalfHourRankModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomHalfHourRankModel.m; sourceTree = ""; }; + E872309126E8D31500B90D4F /* LoginVerifCodeView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginVerifCodeView.h; sourceTree = ""; }; + E872309226E8D31500B90D4F /* LoginVerifCodeView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LoginVerifCodeView.m; sourceTree = ""; }; E8729EB92A3B10C10076D80A /* YuMiRelease.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = YuMiRelease.entitlements; sourceTree = ""; }; E8729EBA2A3B10C10076D80A /* YuMi.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = YuMi.entitlements; sourceTree = ""; }; E8729EE72A3B34D20076D80A /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = index.html; sourceTree = ""; }; @@ -2920,771 +2806,728 @@ E8729EE92A3B34D30076D80A /* css */ = {isa = PBXFileReference; lastKnownFileType = folder; path = css; sourceTree = ""; }; E8729EEA2A3B34D30076D80A /* images */ = {isa = PBXFileReference; lastKnownFileType = folder; path = images; sourceTree = ""; }; E8729EEB2A3B34D30076D80A /* js */ = {isa = PBXFileReference; lastKnownFileType = folder; path = js; sourceTree = ""; }; - E873EB00280922720071030D /* YUMIManeConsumerAbstractDispossessAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsumerAbstractDispossessAssembletionRegardElement.h; sourceTree = ""; }; - E873EB01280922720071030D /* YUMIManeConsumerAbstractDispossessAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsumerAbstractDispossessAssembletionRegardElement.m; sourceTree = ""; }; - E873EB03280943ED0071030D /* YUMIManeConsumerAbstractPresentRamparatExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsumerAbstractPresentRamparatExternalizer.h; sourceTree = ""; }; - E873EB04280943ED0071030D /* YUMIManeConsumerAbstractPresentRamparatExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsumerAbstractPresentRamparatExternalizer.m; sourceTree = ""; }; - E873EB06280944020071030D /* FBCManeConsumerAbstractPresentWallCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCManeConsumerAbstractPresentWallCeremony.h; sourceTree = ""; }; - E873EB07280960990071030D /* YUMIManeConsumerAbstractReputationSolitaireRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsumerAbstractReputationSolitaireRegard.h; sourceTree = ""; }; - E873EB08280960990071030D /* YUMIManeConsumerAbstractReputationSolitaireRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsumerAbstractReputationSolitaireRegard.m; sourceTree = ""; }; - E873EB0A2809850D0071030D /* CommunicationSatisfactionCustomRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationSatisfactionCustomRegard.h; sourceTree = ""; }; - E873EB0B2809850D0071030D /* CommunicationSatisfactionCustomRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationSatisfactionCustomRegard.m; sourceTree = ""; }; - E873EB0D28098D500071030D /* CommunicationSatisfactionPresentRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationSatisfactionPresentRegard.h; sourceTree = ""; }; - E873EB0E28098D500071030D /* CommunicationSatisfactionPresentRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationSatisfactionPresentRegard.m; sourceTree = ""; }; - E874B88627215D39003954B9 /* MiecreoscoopeStateMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MiecreoscoopeStateMatrix.h; sourceTree = ""; }; - E874B88727215D39003954B9 /* MiecreoscoopeStateMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MiecreoscoopeStateMatrix.m; sourceTree = ""; }; - E874B88927215EAF003954B9 /* MiecreoscoopeMHTueueMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MiecreoscoopeMHTueueMatrix.h; sourceTree = ""; }; - E874B88A27215EAF003954B9 /* MiecreoscoopeMHTueueMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MiecreoscoopeMHTueueMatrix.m; sourceTree = ""; }; + E873EB00280922720071030D /* XPMineUserInfoEmptyCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoEmptyCollectionViewCell.h; sourceTree = ""; }; + E873EB01280922720071030D /* XPMineUserInfoEmptyCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoEmptyCollectionViewCell.m; sourceTree = ""; }; + E873EB03280943ED0071030D /* XPMineUserInfoGiftWallPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoGiftWallPresenter.h; sourceTree = ""; }; + E873EB04280943ED0071030D /* XPMineUserInfoGiftWallPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoGiftWallPresenter.m; sourceTree = ""; }; + E873EB06280944020071030D /* XPMineUserInfoGiftWallProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoGiftWallProtocol.h; sourceTree = ""; }; + E873EB07280960990071030D /* XPMineUserInfoVoiceCardView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoVoiceCardView.h; sourceTree = ""; }; + E873EB08280960990071030D /* XPMineUserInfoVoiceCardView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoVoiceCardView.m; sourceTree = ""; }; + E873EB0A2809850D0071030D /* MessageContentCustomView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageContentCustomView.h; sourceTree = ""; }; + E873EB0B2809850D0071030D /* MessageContentCustomView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageContentCustomView.m; sourceTree = ""; }; + E873EB0D28098D500071030D /* MessageContentGiftView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageContentGiftView.h; sourceTree = ""; }; + E873EB0E28098D500071030D /* MessageContentGiftView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageContentGiftView.m; sourceTree = ""; }; + E874B88627215D39003954B9 /* MicroStateModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MicroStateModel.h; sourceTree = ""; }; + E874B88727215D39003954B9 /* MicroStateModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MicroStateModel.m; sourceTree = ""; }; + E874B88927215EAF003954B9 /* MicroQueueModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MicroQueueModel.h; sourceTree = ""; }; + E874B88A27215EAF003954B9 /* MicroQueueModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MicroQueueModel.m; sourceTree = ""; }; E8751E5728A62A390056EF44 /* Api+Sailing.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+Sailing.h"; sourceTree = ""; }; E8751E5828A62A390056EF44 /* Api+Sailing.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+Sailing.m"; sourceTree = ""; }; - E8751E5A28A62A530056EF44 /* YUMIMarchingRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIMarchingRegardGovernancer.h; sourceTree = ""; }; - E8751E5B28A62A530056EF44 /* YUMIMarchingRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIMarchingRegardGovernancer.m; sourceTree = ""; }; - E8751E5D28A62A970056EF44 /* YUMIMarchingExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIMarchingExternalizer.h; sourceTree = ""; }; - E8751E5E28A62A970056EF44 /* YUMIMarchingExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIMarchingExternalizer.m; sourceTree = ""; }; - E8751E6028A62AA60056EF44 /* FBCSailingCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCSailingCeremony.h; sourceTree = ""; }; - E8751E6128A646400056EF44 /* YUMIMarchingRateRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIMarchingRateRegard.h; sourceTree = ""; }; - E8751E6228A646400056EF44 /* YUMIMarchingRateRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIMarchingRateRegard.m; sourceTree = ""; }; - E8751E6428A6465A0056EF44 /* YUMIMarchingRateMetroRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIMarchingRateMetroRegard.h; sourceTree = ""; }; - E8751E6528A6465A0056EF44 /* YUMIMarchingRateMetroRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIMarchingRateMetroRegard.m; sourceTree = ""; }; - E8751E6928A64C6E0056EF44 /* YUMIMarchingRateTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIMarchingRateTabulationRegardElement.h; sourceTree = ""; }; - E8751E6A28A64C6E0056EF44 /* YUMIMarchingRateTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIMarchingRateTabulationRegardElement.m; sourceTree = ""; }; - E8751E6C28A64F990056EF44 /* YUMIMarchingDispossessTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIMarchingDispossessTabulationRegardElement.h; sourceTree = ""; }; - E8751E6D28A64F990056EF44 /* YUMIMarchingDispossessTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIMarchingDispossessTabulationRegardElement.m; sourceTree = ""; }; - E8751E6F28A6541B0056EF44 /* ChamberMarchingRateMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChamberMarchingRateMatrix.h; sourceTree = ""; }; - E8751E7028A6541B0056EF44 /* ChamberMarchingRateMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ChamberMarchingRateMatrix.m; sourceTree = ""; }; - E8751E7228A665BC0056EF44 /* ChamberMarchingAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChamberMarchingAbstractMatrix.h; sourceTree = ""; }; - E8751E7328A665BC0056EF44 /* ChamberMarchingAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ChamberMarchingAbstractMatrix.m; sourceTree = ""; }; - E875A1B629755EE200AB1BBD /* InterlocutionConsumerAbstractTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InterlocutionConsumerAbstractTabulationRegardElement.h; sourceTree = ""; }; - E875A1B729755EE200AB1BBD /* InterlocutionConsumerAbstractTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InterlocutionConsumerAbstractTabulationRegardElement.m; sourceTree = ""; }; - E875FA8527D619820086ED04 /* ClientAtomicMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ClientAtomicMatrix.h; sourceTree = ""; }; - E875FA8627D619820086ED04 /* ClientAtomicMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ClientAtomicMatrix.m; sourceTree = ""; }; - E8778ADF2988B4C300CF139B /* CommunicationRevokeMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationRevokeMatrix.h; sourceTree = ""; }; - E8778AE02988B4C300CF139B /* CommunicationRevokeMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationRevokeMatrix.m; sourceTree = ""; }; - E8778AE22988B57B00CF139B /* CommunicationSatisfactionRevokeRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationSatisfactionRevokeRegard.h; sourceTree = ""; }; - E8778AE32988B57B00CF139B /* CommunicationSatisfactionRevokeRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationSatisfactionRevokeRegard.m; sourceTree = ""; }; - E8778AE52988C1E000CF139B /* YUMIInterlocutionHalloImportRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIInterlocutionHalloImportRegard.h; sourceTree = ""; }; - E8778AE62988C1E000CF139B /* YUMIInterlocutionHalloImportRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIInterlocutionHalloImportRegard.m; sourceTree = ""; }; - E8778AEE2988EF0600CF139B /* YUMIInterlocutionSpeakHalloRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIInterlocutionSpeakHalloRegardGovernancer.h; sourceTree = ""; }; - E8778AEF2988EF0600CF139B /* YUMIInterlocutionSpeakHalloRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIInterlocutionSpeakHalloRegardGovernancer.m; sourceTree = ""; }; - E8778AF32988EF2B00CF139B /* YUMIInterlocutionSpeakHalloTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIInterlocutionSpeakHalloTabulationRegardElement.h; sourceTree = ""; }; - E8778AF42988EF2B00CF139B /* YUMIInterlocutionSpeakHalloTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIInterlocutionSpeakHalloTabulationRegardElement.m; sourceTree = ""; }; - E8778AF62988F4E200CF139B /* YUMIInterlocutionSpeakHalloIntelligencerRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIInterlocutionSpeakHalloIntelligencerRegard.h; sourceTree = ""; }; - E8778AF72988F4E200CF139B /* YUMIInterlocutionSpeakHalloIntelligencerRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIInterlocutionSpeakHalloIntelligencerRegard.m; sourceTree = ""; }; - E8778AF92989034200CF139B /* YUMIInterlocutionSpeakHalloDispossessTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIInterlocutionSpeakHalloDispossessTabulationRegardElement.h; sourceTree = ""; }; - E8778AFA2989034200CF139B /* YUMIInterlocutionSpeakHalloDispossessTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIInterlocutionSpeakHalloDispossessTabulationRegardElement.m; sourceTree = ""; }; - E877A7E92783E24700EFACED /* EngagementPhaseRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EngagementPhaseRegard.h; sourceTree = ""; }; - E877A7EA2783E24700EFACED /* EngagementPhaseRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EngagementPhaseRegard.m; sourceTree = ""; }; - E877A7EC278428FB00EFACED /* MiecreoscoopeEngagementProgressRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MiecreoscoopeEngagementProgressRegard.h; sourceTree = ""; }; - E877A7ED278428FB00EFACED /* MiecreoscoopeEngagementProgressRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MiecreoscoopeEngagementProgressRegard.m; sourceTree = ""; }; - E877A7EF27842B2F00EFACED /* YUMIChamberEngagementTissuePrecautiousRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberEngagementTissuePrecautiousRegard.h; sourceTree = ""; }; - E877A7F027842B2F00EFACED /* YUMIChamberEngagementTissuePrecautiousRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberEngagementTissuePrecautiousRegard.m; sourceTree = ""; }; - E877A7F227842EF800EFACED /* YUMIChamberEngagementVipUpwardsLoudspeakerRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberEngagementVipUpwardsLoudspeakerRegard.h; sourceTree = ""; }; - E877A7F327842EF800EFACED /* YUMIChamberEngagementVipUpwardsLoudspeakerRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberEngagementVipUpwardsLoudspeakerRegard.m; sourceTree = ""; }; + E8751E5A28A62A530056EF44 /* XPSailingViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSailingViewController.h; sourceTree = ""; }; + E8751E5B28A62A530056EF44 /* XPSailingViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSailingViewController.m; sourceTree = ""; }; + E8751E5D28A62A970056EF44 /* XPSailingPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSailingPresenter.h; sourceTree = ""; }; + E8751E5E28A62A970056EF44 /* XPSailingPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSailingPresenter.m; sourceTree = ""; }; + E8751E6028A62AA60056EF44 /* XPSailingProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSailingProtocol.h; sourceTree = ""; }; + E8751E6128A646400056EF44 /* XPSailingRankView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSailingRankView.h; sourceTree = ""; }; + E8751E6228A646400056EF44 /* XPSailingRankView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSailingRankView.m; sourceTree = ""; }; + E8751E6428A6465A0056EF44 /* XPSailingRankSubView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSailingRankSubView.h; sourceTree = ""; }; + E8751E6528A6465A0056EF44 /* XPSailingRankSubView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSailingRankSubView.m; sourceTree = ""; }; + E8751E6928A64C6E0056EF44 /* XPSailingRankTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSailingRankTableViewCell.h; sourceTree = ""; }; + E8751E6A28A64C6E0056EF44 /* XPSailingRankTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSailingRankTableViewCell.m; sourceTree = ""; }; + E8751E6C28A64F990056EF44 /* XPSailingEmptyTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSailingEmptyTableViewCell.h; sourceTree = ""; }; + E8751E6D28A64F990056EF44 /* XPSailingEmptyTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSailingEmptyTableViewCell.m; sourceTree = ""; }; + E8751E6F28A6541B0056EF44 /* RoomSailingRankModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomSailingRankModel.h; sourceTree = ""; }; + E8751E7028A6541B0056EF44 /* RoomSailingRankModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomSailingRankModel.m; sourceTree = ""; }; + E8751E7228A665BC0056EF44 /* RoomSailingInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomSailingInfoModel.h; sourceTree = ""; }; + E8751E7328A665BC0056EF44 /* RoomSailingInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomSailingInfoModel.m; sourceTree = ""; }; + E875A1B629755EE200AB1BBD /* SessionUserInfoTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SessionUserInfoTableViewCell.h; sourceTree = ""; }; + E875A1B729755EE200AB1BBD /* SessionUserInfoTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SessionUserInfoTableViewCell.m; sourceTree = ""; }; + E875FA8527D619820086ED04 /* ClientDataModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ClientDataModel.h; sourceTree = ""; }; + E875FA8627D619820086ED04 /* ClientDataModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ClientDataModel.m; sourceTree = ""; }; + E8778ADF2988B4C300CF139B /* MessageRevokeModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageRevokeModel.h; sourceTree = ""; }; + E8778AE02988B4C300CF139B /* MessageRevokeModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageRevokeModel.m; sourceTree = ""; }; + E8778AE22988B57B00CF139B /* MessageContentRevokeView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageContentRevokeView.h; sourceTree = ""; }; + E8778AE32988B57B00CF139B /* MessageContentRevokeView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageContentRevokeView.m; sourceTree = ""; }; + E8778AE52988C1E000CF139B /* XPSessionHelloEnterView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSessionHelloEnterView.h; sourceTree = ""; }; + E8778AE62988C1E000CF139B /* XPSessionHelloEnterView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSessionHelloEnterView.m; sourceTree = ""; }; + E8778AEE2988EF0600CF139B /* XPSessionSayHelloViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSessionSayHelloViewController.h; sourceTree = ""; }; + E8778AEF2988EF0600CF139B /* XPSessionSayHelloViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSessionSayHelloViewController.m; sourceTree = ""; }; + E8778AF32988EF2B00CF139B /* XPSessionSayHelloTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSessionSayHelloTableViewCell.h; sourceTree = ""; }; + E8778AF42988EF2B00CF139B /* XPSessionSayHelloTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSessionSayHelloTableViewCell.m; sourceTree = ""; }; + E8778AF62988F4E200CF139B /* XPSessionSayHelloHeaderView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSessionSayHelloHeaderView.h; sourceTree = ""; }; + E8778AF72988F4E200CF139B /* XPSessionSayHelloHeaderView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSessionSayHelloHeaderView.m; sourceTree = ""; }; + E8778AF92989034200CF139B /* XPSessionSayHelloEmptyTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSessionSayHelloEmptyTableViewCell.h; sourceTree = ""; }; + E8778AFA2989034200CF139B /* XPSessionSayHelloEmptyTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSessionSayHelloEmptyTableViewCell.m; sourceTree = ""; }; + E877A7E92783E24700EFACED /* DatingStageView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DatingStageView.h; sourceTree = ""; }; + E877A7EA2783E24700EFACED /* DatingStageView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DatingStageView.m; sourceTree = ""; }; + E877A7EC278428FB00EFACED /* MicroDatingProgressView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MicroDatingProgressView.h; sourceTree = ""; }; + E877A7ED278428FB00EFACED /* MicroDatingProgressView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MicroDatingProgressView.m; sourceTree = ""; }; + E877A7EF27842B2F00EFACED /* XPRoomDatingWebAlertView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomDatingWebAlertView.h; sourceTree = ""; }; + E877A7F027842B2F00EFACED /* XPRoomDatingWebAlertView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomDatingWebAlertView.m; sourceTree = ""; }; + E877A7F227842EF800EFACED /* XPRoomDatingVipUpMicView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomDatingVipUpMicView.h; sourceTree = ""; }; + E877A7F327842EF800EFACED /* XPRoomDatingVipUpMicView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomDatingVipUpMicView.m; sourceTree = ""; }; E87888F32738C30E00BF1D57 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; }; - E8788932273A53D700BF1D57 /* YUMIDischargePresentRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIDischargePresentRegard.h; sourceTree = ""; }; - E8788933273A53D700BF1D57 /* YUMIDischargePresentRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIDischargePresentRegard.m; sourceTree = ""; }; + E8788932273A53D700BF1D57 /* XPSendGiftView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSendGiftView.h; sourceTree = ""; }; + E8788933273A53D700BF1D57 /* XPSendGiftView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSendGiftView.m; sourceTree = ""; }; E878893A273A54C300BF1D57 /* Api+Gift.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+Gift.h"; sourceTree = ""; }; E878893B273A54C300BF1D57 /* Api+Gift.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+Gift.m"; sourceTree = ""; }; - E878893D273A54F500BF1D57 /* YUMIPresentExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPresentExternalizer.h; sourceTree = ""; }; - E878893E273A54F500BF1D57 /* YUMIPresentExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPresentExternalizer.m; sourceTree = ""; }; - E8788940273A55AD00BF1D57 /* YUMIExternalizeConsumersRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIExternalizeConsumersRegard.h; sourceTree = ""; }; - E8788941273A55AD00BF1D57 /* YUMIExternalizeConsumersRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIExternalizeConsumersRegard.m; sourceTree = ""; }; - E8788943273A55C200BF1D57 /* YUMIPresentAbstractRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPresentAbstractRegard.h; sourceTree = ""; }; - E8788944273A55C200BF1D57 /* YUMIPresentAbstractRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPresentAbstractRegard.m; sourceTree = ""; }; - E8788946273A55D000BF1D57 /* YUMIPresentObstacleRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPresentObstacleRegard.h; sourceTree = ""; }; - E8788947273A55D000BF1D57 /* YUMIPresentObstacleRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPresentObstacleRegard.m; sourceTree = ""; }; - E878894A273A607C00BF1D57 /* YUMIExternalizeConsumerAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIExternalizeConsumerAssembletionRegardElement.h; sourceTree = ""; }; - E878894B273A607C00BF1D57 /* YUMIExternalizeConsumerAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIExternalizeConsumerAssembletionRegardElement.m; sourceTree = ""; }; - E878894D273A672200BF1D57 /* FBCPresentCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCPresentCeremony.h; sourceTree = ""; }; + E878893D273A54F500BF1D57 /* XPGiftPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftPresenter.h; sourceTree = ""; }; + E878893E273A54F500BF1D57 /* XPGiftPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftPresenter.m; sourceTree = ""; }; + E8788940273A55AD00BF1D57 /* XPGiftUsersView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftUsersView.h; sourceTree = ""; }; + E8788941273A55AD00BF1D57 /* XPGiftUsersView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftUsersView.m; sourceTree = ""; }; + E8788943273A55C200BF1D57 /* XPGiftInfoView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftInfoView.h; sourceTree = ""; }; + E8788944273A55C200BF1D57 /* XPGiftInfoView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftInfoView.m; sourceTree = ""; }; + E8788946273A55D000BF1D57 /* XPGiftBarView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftBarView.h; sourceTree = ""; }; + E8788947273A55D000BF1D57 /* XPGiftBarView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftBarView.m; sourceTree = ""; }; + E878894A273A607C00BF1D57 /* XPGiftUserCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftUserCollectionViewCell.h; sourceTree = ""; }; + E878894B273A607C00BF1D57 /* XPGiftUserCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftUserCollectionViewCell.m; sourceTree = ""; }; + E878894D273A672200BF1D57 /* XPGiftProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftProtocol.h; sourceTree = ""; }; E878894E273A699900BF1D57 /* ThemeColor+SendGift.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ThemeColor+SendGift.h"; sourceTree = ""; }; E878894F273A699900BF1D57 /* ThemeColor+SendGift.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "ThemeColor+SendGift.m"; sourceTree = ""; }; - E878B8562835F0D300E22DCF /* SeparationsCoactiveMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SeparationsCoactiveMatrix.h; sourceTree = ""; }; - E878B8572835F0D300E22DCF /* SeparationsCoactiveMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SeparationsCoactiveMatrix.m; sourceTree = ""; }; - E878B8592835F3BF00E22DCF /* YUMISeparationsCoactiveTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsCoactiveTabulationRegardElement.h; sourceTree = ""; }; - E878B85A2835F3BF00E22DCF /* YUMISeparationsCoactiveTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsCoactiveTabulationRegardElement.m; sourceTree = ""; }; - E878B85C283640A500E22DCF /* SeparationsUnReadMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SeparationsUnReadMatrix.h; sourceTree = ""; }; - E878B85D283640A500E22DCF /* SeparationsUnReadMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SeparationsUnReadMatrix.m; sourceTree = ""; }; - E87A24EF272935920086A794 /* YUMICommunicationRemoteExtMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMICommunicationRemoteExtMatrix.h; sourceTree = ""; }; - E87A24F0272935920086A794 /* YUMICommunicationRemoteExtMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMICommunicationRemoteExtMatrix.m; sourceTree = ""; }; - E87A27012758BC81002DDC7A /* YUMIChamberHuntforAccommodatedRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberHuntforAccommodatedRegardGovernancer.h; sourceTree = ""; }; - E87A27022758BC81002DDC7A /* YUMIChamberHuntforAccommodatedRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberHuntforAccommodatedRegardGovernancer.m; sourceTree = ""; }; - E87AE7F7277AABE50037823A /* YUMIChamberCoupleStatementRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCoupleStatementRegardGovernancer.h; sourceTree = ""; }; - E87AE7F8277AABE50037823A /* YUMIChamberCoupleStatementRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCoupleStatementRegardGovernancer.m; sourceTree = ""; }; - E87AE7FA277AAC450037823A /* YUMIChamberCoupleExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCoupleExternalizer.h; sourceTree = ""; }; - E87AE7FB277AAC450037823A /* YUMIChamberCoupleExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCoupleExternalizer.m; sourceTree = ""; }; - E87AE7FD277AAC5A0037823A /* FBCChamberTagCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCChamberTagCeremony.h; sourceTree = ""; }; - E87AE8BF284E184300CAFBB3 /* ChamberStrangeConsumerBewelcometoMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChamberStrangeConsumerBewelcometoMatrix.h; sourceTree = ""; }; - E87AE8C0284E184300CAFBB3 /* ChamberStrangeConsumerBewelcometoMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ChamberStrangeConsumerBewelcometoMatrix.m; sourceTree = ""; }; - E87AE8C3284E1A8400CAFBB3 /* YUMIChamberStrangeConsumerBewelcometoRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberStrangeConsumerBewelcometoRegard.h; sourceTree = ""; }; - E87AE8C4284E1A8400CAFBB3 /* YUMIChamberStrangeConsumerBewelcometoRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberStrangeConsumerBewelcometoRegard.m; sourceTree = ""; }; - E87C0A9B27D9986700CB2241 /* YUMIChamberAcceptAssembletionFlowProgramming.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberAcceptAssembletionFlowProgramming.h; sourceTree = ""; }; - E87C0A9C27D9986700CB2241 /* YUMIChamberAcceptAssembletionFlowProgramming.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberAcceptAssembletionFlowProgramming.m; sourceTree = ""; }; - E87C0A9E27D9DE6400CB2241 /* ChamberAcceptDischargeAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChamberAcceptDischargeAbstractMatrix.h; sourceTree = ""; }; - E87C0A9F27D9DE6400CB2241 /* ChamberAcceptDischargeAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ChamberAcceptDischargeAbstractMatrix.m; sourceTree = ""; }; - E87C54BC2823CC5B0051AA11 /* YUMIManeReassociationSurmountPwordExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeReassociationSurmountPwordExternalizer.h; sourceTree = ""; }; - E87C54BD2823CC5B0051AA11 /* YUMIManeReassociationSurmountPwordExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeReassociationSurmountPwordExternalizer.m; sourceTree = ""; }; - E87C54BF2823CC940051AA11 /* FBCManeResetSurmountPwordCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCManeResetSurmountPwordCeremony.h; sourceTree = ""; }; - E87C54C02823CD6F0051AA11 /* YUMIManeReassociationSurmountPwordRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeReassociationSurmountPwordRegardGovernancer.h; sourceTree = ""; }; - E87C54C12823CD6F0051AA11 /* YUMIManeReassociationSurmountPwordRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeReassociationSurmountPwordRegardGovernancer.m; sourceTree = ""; }; - E87DF4AE2A429B32009C1185 /* YUMIThresholdReindictRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIThresholdReindictRegard.m; sourceTree = ""; }; - E87DF4AF2A429B32009C1185 /* YUMIThresholdReindictRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIThresholdReindictRegard.h; sourceTree = ""; }; - E87DF4B12A429C6E009C1185 /* ThresholdChargeChamberWindowMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ThresholdChargeChamberWindowMatrix.h; sourceTree = ""; }; - E87DF4B22A429C6E009C1185 /* ThresholdChargeChamberWindowMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ThresholdChargeChamberWindowMatrix.m; sourceTree = ""; }; - E87DF4B52A42C2FD009C1185 /* YUMIThresholdReindictAssembletionRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIThresholdReindictAssembletionRegard.m; sourceTree = ""; }; - E87DF4B62A42C2FD009C1185 /* YUMIThresholdReindictAssembletionRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIThresholdReindictAssembletionRegard.h; sourceTree = ""; }; - E87DF4BD2A42C8C1009C1185 /* ResidenceCoupleMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResidenceCoupleMatrix.h; sourceTree = ""; }; - E87DF4BE2A42C8C1009C1185 /* ResidenceCoupleMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ResidenceCoupleMatrix.m; sourceTree = ""; }; - E87DF4C02A42C900009C1185 /* YUMINoteRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMINoteRegard.h; sourceTree = ""; }; - E87DF4C12A42C900009C1185 /* YUMINoteRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMINoteRegard.m; sourceTree = ""; }; - E87DF4CA2A42C960009C1185 /* ResidenceOriflammeAbstractMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResidenceOriflammeAbstractMatrix.h; sourceTree = ""; }; - E87DF4CB2A42C960009C1185 /* ResidenceOriflammeAbstractMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ResidenceOriflammeAbstractMatrix.m; sourceTree = ""; }; - E87DF4D22A42C9B1009C1185 /* ResidenceEncourageChamberMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResidenceEncourageChamberMatrix.h; sourceTree = ""; }; - E87DF4D32A42C9B1009C1185 /* ResidenceEncourageChamberMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ResidenceEncourageChamberMatrix.m; sourceTree = ""; }; - E87DF4D52A42C9C3009C1185 /* ResidenceDisportChamberMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ResidenceDisportChamberMatrix.m; sourceTree = ""; }; - E87DF4D62A42C9C3009C1185 /* ResidenceDisportChamberMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResidenceDisportChamberMatrix.h; sourceTree = ""; }; - E87DF4D82A42C9D8009C1185 /* ResidenceAssembleChamberMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ResidenceAssembleChamberMatrix.m; sourceTree = ""; }; - E87DF4D92A42C9D9009C1185 /* ResidenceAssembleChamberMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResidenceAssembleChamberMatrix.h; sourceTree = ""; }; - E87DF4DB2A42CA12009C1185 /* ResidenceHuntforConsequentMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ResidenceHuntforConsequentMatrix.m; sourceTree = ""; }; - E87DF4DC2A42CA12009C1185 /* ResidenceHuntforConsequentMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResidenceHuntforConsequentMatrix.h; sourceTree = ""; }; - E87DF4DE2A42CA92009C1185 /* YUMIResidenceSloganRegardGovernancer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIResidenceSloganRegardGovernancer.m; sourceTree = ""; }; - E87DF4DF2A42CA92009C1185 /* YUMIResidenceSloganRegardGovernancer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIResidenceSloganRegardGovernancer.h; sourceTree = ""; }; - E87DF4E22A42CAD2009C1185 /* YUMIResidenceHuntforNevRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIResidenceHuntforNevRegard.m; sourceTree = ""; }; - E87DF4E32A42CAD2009C1185 /* YUMIResidenceHuntforNevRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIResidenceHuntforNevRegard.h; sourceTree = ""; }; - E87DF4E52A42CAFF009C1185 /* YUMIResidenceExternalizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIResidenceExternalizer.m; sourceTree = ""; }; - E87DF4E62A42CB00009C1185 /* YUMIResidenceExternalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIResidenceExternalizer.h; sourceTree = ""; }; - E87DF4E82A42CB24009C1185 /* FBCResidenceCeremony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBCResidenceCeremony.h; sourceTree = ""; }; - E87DF4EA2A42CB60009C1185 /* YUMIHuntforStatementTabulationRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIHuntforStatementTabulationRegardElement.m; sourceTree = ""; }; - E87DF4EB2A42CB60009C1185 /* YUMIHuntforStatementTabulationRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIHuntforStatementTabulationRegardElement.h; sourceTree = ""; }; - E87DF4ED2A42CB90009C1185 /* YUMIResidenceAssembleChamberTabulationRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIResidenceAssembleChamberTabulationRegardElement.h; sourceTree = ""; }; - E87DF4EE2A42CB90009C1185 /* YUMIResidenceAssembleChamberTabulationRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIResidenceAssembleChamberTabulationRegardElement.m; sourceTree = ""; }; - E87DF4F02A42CBEC009C1185 /* YUMIResidenceConsumerRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIResidenceConsumerRegard.m; sourceTree = ""; }; - E87DF4F12A42CBEC009C1185 /* YUMIResidenceConsumerRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIResidenceConsumerRegard.h; sourceTree = ""; }; - E87DF4F32A42CC49009C1185 /* ResidenceParrotAbstractMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResidenceParrotAbstractMatrix.h; sourceTree = ""; }; - E87DF4F42A42CC49009C1185 /* ResidenceParrotAbstractMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ResidenceParrotAbstractMatrix.m; sourceTree = ""; }; - E87DF4F62A42CCAB009C1185 /* YUMIResidenceHuntforRelateRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIResidenceHuntforRelateRegard.m; sourceTree = ""; }; - E87DF4F72A42CCAB009C1185 /* YUMIResidenceHuntforRelateRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIResidenceHuntforRelateRegard.h; sourceTree = ""; }; - E87DF4F92A42CCDD009C1185 /* YUMIResidenceDeficitommendAssembletionRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIResidenceDeficitommendAssembletionRegardElement.h; sourceTree = ""; }; - E87DF4FA2A42CCDE009C1185 /* YUMIResidenceDeficitommendAssembletionRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIResidenceDeficitommendAssembletionRegardElement.m; sourceTree = ""; }; - E87DF4FC2A42CD7D009C1185 /* YUMIChamberHuntforEncourageIntelligenceRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberHuntforEncourageIntelligenceRegard.m; sourceTree = ""; }; - E87DF4FD2A42CD7E009C1185 /* YUMIChamberHuntforEncourageIntelligenceRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIChamberHuntforEncourageIntelligenceRegard.h; sourceTree = ""; }; - E87DF4FF2A42CDB4009C1185 /* FBCResidenceEncourageCeremony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBCResidenceEncourageCeremony.h; sourceTree = ""; }; - E87DF5002A42CDF1009C1185 /* YUMIResidenceConsiderationAssembletionRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIResidenceConsiderationAssembletionRegardElement.h; sourceTree = ""; }; - E87DF5012A42CDF1009C1185 /* YUMIResidenceConsiderationAssembletionRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIResidenceConsiderationAssembletionRegardElement.m; sourceTree = ""; }; - E87DF5032A42CE21009C1185 /* YUMIResidenceHuntforReflectionElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIResidenceHuntforReflectionElement.h; sourceTree = ""; }; - E87DF5042A42CE21009C1185 /* YUMIResidenceHuntforReflectionElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIResidenceHuntforReflectionElement.m; sourceTree = ""; }; - E87DF5062A42CE79009C1185 /* YUMIInChamberReflectionExternalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIInChamberReflectionExternalizer.h; sourceTree = ""; }; - E87DF5072A42CE79009C1185 /* YUMIInChamberReflectionExternalizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIInChamberReflectionExternalizer.m; sourceTree = ""; }; - E87DF5092A42CEC9009C1185 /* ResidenceEveryOneHuntforMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResidenceEveryOneHuntforMatrix.h; sourceTree = ""; }; - E87DF50A2A42CEC9009C1185 /* ResidenceEveryOneHuntforMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ResidenceEveryOneHuntforMatrix.m; sourceTree = ""; }; - E87DF50C2A42CF15009C1185 /* ResidenceEnergeticChamberMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResidenceEnergeticChamberMatrix.h; sourceTree = ""; }; - E87DF50D2A42CF15009C1185 /* ResidenceEnergeticChamberMatrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ResidenceEnergeticChamberMatrix.m; sourceTree = ""; }; - E87E545229AA05EA00EBE52B /* YUMITerminalImpressionNevRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMITerminalImpressionNevRegard.h; sourceTree = ""; }; - E87E545329AA05EA00EBE52B /* YUMITerminalImpressionNevRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMITerminalImpressionNevRegard.m; sourceTree = ""; }; - E87E62552A3F560A002F68C9 /* YUMIResidenceParatiesRegardGovernancer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIResidenceParatiesRegardGovernancer.h; sourceTree = ""; }; - E87E62562A3F560A002F68C9 /* YUMIResidenceParatiesRegardGovernancer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIResidenceParatiesRegardGovernancer.m; sourceTree = ""; }; - E87E62572A3F560A002F68C9 /* YUMIResidenceEncourageRegardGovernancer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIResidenceEncourageRegardGovernancer.h; sourceTree = ""; }; - E87E62582A3F560A002F68C9 /* YUMIResidenceEncourageRegardGovernancer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIResidenceEncourageRegardGovernancer.m; sourceTree = ""; }; - E87E625B2A3F5622002F68C9 /* YUMIStrangeResidenceRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIStrangeResidenceRegardGovernancer.h; sourceTree = ""; }; - E87E625C2A3F5622002F68C9 /* YUMIStrangeResidenceRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIStrangeResidenceRegardGovernancer.m; sourceTree = ""; }; - E87E62602A3F5689002F68C9 /* YUMIStrangeResidenceNevRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIStrangeResidenceNevRegard.m; sourceTree = ""; }; - E87E62612A3F5689002F68C9 /* YUMIStrangeResidenceNevRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIStrangeResidenceNevRegard.h; sourceTree = ""; }; - E87E62662A3F571C002F68C9 /* YUMIResidenceAccommodatedExternalizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIResidenceAccommodatedExternalizer.m; sourceTree = ""; }; - E87E62672A3F571D002F68C9 /* YUMIResidenceAccommodatedExternalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIResidenceAccommodatedExternalizer.h; sourceTree = ""; }; - E87E62692A3F5756002F68C9 /* FBCResidenceContainerCeremony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBCResidenceContainerCeremony.h; sourceTree = ""; }; - E87E626A2A3F5906002F68C9 /* YUMIResidenceOriflammeTabulationRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIResidenceOriflammeTabulationRegardElement.m; sourceTree = ""; }; - E87E626B2A3F5906002F68C9 /* YUMIStrangeResidenceDisportDispossessTabulationRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIStrangeResidenceDisportDispossessTabulationRegardElement.h; sourceTree = ""; }; - E87E626C2A3F5906002F68C9 /* YUMIStrangeResidenceDisportTabulationRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIStrangeResidenceDisportTabulationRegardElement.h; sourceTree = ""; }; - E87E626D2A3F5906002F68C9 /* YUMIStrangeResidenceDisportDispossessTabulationRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIStrangeResidenceDisportDispossessTabulationRegardElement.m; sourceTree = ""; }; - E87E626E2A3F5906002F68C9 /* YUMIStrangeResidenceParatiesTabulationRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIStrangeResidenceParatiesTabulationRegardElement.h; sourceTree = ""; }; - E87E626F2A3F5906002F68C9 /* YUMIStrangeResidenceDisportTabulationRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIStrangeResidenceDisportTabulationRegardElement.m; sourceTree = ""; }; - E87E62702A3F5907002F68C9 /* YUMIStrangeResidenceEncourageTabulationRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIStrangeResidenceEncourageTabulationRegardElement.m; sourceTree = ""; }; - E87E62712A3F5907002F68C9 /* YUMIStrangeResidenceParatiesTabulationRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIStrangeResidenceParatiesTabulationRegardElement.m; sourceTree = ""; }; - E87E62722A3F5907002F68C9 /* YUMIResidenceOriflammeTabulationRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIResidenceOriflammeTabulationRegardElement.h; sourceTree = ""; }; - E87E62732A3F5907002F68C9 /* YUMIStrangeResidenceEncourageTabulationRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIStrangeResidenceEncourageTabulationRegardElement.h; sourceTree = ""; }; - E87E62792A3F5A0D002F68C9 /* YUMIStrangeResidenceEncourageExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIStrangeResidenceEncourageExternalizer.h; sourceTree = ""; }; - E87E627A2A3F5A0D002F68C9 /* YUMIStrangeResidenceEncourageExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIStrangeResidenceEncourageExternalizer.m; sourceTree = ""; }; - E87E627C2A3F5A63002F68C9 /* FBCStrangeResidenceEncourageCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCStrangeResidenceEncourageCeremony.h; sourceTree = ""; }; - E87E627D2A3F5D28002F68C9 /* YUMIStrangeResidenceDisportProvisionAssembletionRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIStrangeResidenceDisportProvisionAssembletionRegardElement.h; sourceTree = ""; }; - E87E627E2A3F5D28002F68C9 /* YUMIStrangeResidenceDisportProvisionAssembletionRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIStrangeResidenceDisportProvisionAssembletionRegardElement.m; sourceTree = ""; }; + E878B8562835F0D300E22DCF /* MonentsInteractiveModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MonentsInteractiveModel.h; sourceTree = ""; }; + E878B8572835F0D300E22DCF /* MonentsInteractiveModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MonentsInteractiveModel.m; sourceTree = ""; }; + E878B8592835F3BF00E22DCF /* XPMonentsInteractiveTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsInteractiveTableViewCell.h; sourceTree = ""; }; + E878B85A2835F3BF00E22DCF /* XPMonentsInteractiveTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsInteractiveTableViewCell.m; sourceTree = ""; }; + E878B85C283640A500E22DCF /* MonentsUnReadModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MonentsUnReadModel.h; sourceTree = ""; }; + E878B85D283640A500E22DCF /* MonentsUnReadModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MonentsUnReadModel.m; sourceTree = ""; }; + E87A24EF272935920086A794 /* XPMessageRemoteExtModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMessageRemoteExtModel.h; sourceTree = ""; }; + E87A24F0272935920086A794 /* XPMessageRemoteExtModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMessageRemoteExtModel.m; sourceTree = ""; }; + E87A27012758BC81002DDC7A /* XPRoomSearchContainerViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomSearchContainerViewController.h; sourceTree = ""; }; + E87A27022758BC81002DDC7A /* XPRoomSearchContainerViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomSearchContainerViewController.m; sourceTree = ""; }; + E87AE7F7277AABE50037823A /* XPRoomTagListViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomTagListViewController.h; sourceTree = ""; }; + E87AE7F8277AABE50037823A /* XPRoomTagListViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomTagListViewController.m; sourceTree = ""; }; + E87AE7FA277AAC450037823A /* XPRoomTagPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomTagPresenter.h; sourceTree = ""; }; + E87AE7FB277AAC450037823A /* XPRoomTagPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomTagPresenter.m; sourceTree = ""; }; + E87AE7FD277AAC5A0037823A /* XPRoomTagProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomTagProtocol.h; sourceTree = ""; }; + E87AE8BF284E184300CAFBB3 /* RoomNewUserGreetModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomNewUserGreetModel.h; sourceTree = ""; }; + E87AE8C0284E184300CAFBB3 /* RoomNewUserGreetModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomNewUserGreetModel.m; sourceTree = ""; }; + E87AE8C3284E1A8400CAFBB3 /* XPRoomNewUserGreetView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomNewUserGreetView.h; sourceTree = ""; }; + E87AE8C4284E1A8400CAFBB3 /* XPRoomNewUserGreetView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomNewUserGreetView.m; sourceTree = ""; }; + E87C0A9B27D9986700CB2241 /* XPRoomFaceCollectionFlowLayout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomFaceCollectionFlowLayout.h; sourceTree = ""; }; + E87C0A9C27D9986700CB2241 /* XPRoomFaceCollectionFlowLayout.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomFaceCollectionFlowLayout.m; sourceTree = ""; }; + E87C0A9E27D9DE6400CB2241 /* RoomFaceSendInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomFaceSendInfoModel.h; sourceTree = ""; }; + E87C0A9F27D9DE6400CB2241 /* RoomFaceSendInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomFaceSendInfoModel.m; sourceTree = ""; }; + E87C54BC2823CC5B0051AA11 /* XPMineResetLoginPwdPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineResetLoginPwdPresenter.h; sourceTree = ""; }; + E87C54BD2823CC5B0051AA11 /* XPMineResetLoginPwdPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineResetLoginPwdPresenter.m; sourceTree = ""; }; + E87C54BF2823CC940051AA11 /* XPMineResetLoginPwdProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineResetLoginPwdProtocol.h; sourceTree = ""; }; + E87C54C02823CD6F0051AA11 /* XPMineResetLoginPwdViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineResetLoginPwdViewController.h; sourceTree = ""; }; + E87C54C12823CD6F0051AA11 /* XPMineResetLoginPwdViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineResetLoginPwdViewController.m; sourceTree = ""; }; + E87DF4AE2A429B32009C1185 /* XPFirstRechargeView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPFirstRechargeView.m; sourceTree = ""; }; + E87DF4AF2A429B32009C1185 /* XPFirstRechargeView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPFirstRechargeView.h; sourceTree = ""; }; + E87DF4B12A429C6E009C1185 /* FirstChargeRoomWindowModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FirstChargeRoomWindowModel.h; sourceTree = ""; }; + E87DF4B22A429C6E009C1185 /* FirstChargeRoomWindowModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FirstChargeRoomWindowModel.m; sourceTree = ""; }; + E87DF4B52A42C2FD009C1185 /* XPFirstRechargeCollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPFirstRechargeCollectionView.m; sourceTree = ""; }; + E87DF4B62A42C2FD009C1185 /* XPFirstRechargeCollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPFirstRechargeCollectionView.h; sourceTree = ""; }; + E87DF4BD2A42C8C1009C1185 /* HomeTagModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeTagModel.h; sourceTree = ""; }; + E87DF4BE2A42C8C1009C1185 /* HomeTagModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeTagModel.m; sourceTree = ""; }; + E87DF4C02A42C900009C1185 /* XPNoteView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNoteView.h; sourceTree = ""; }; + E87DF4C12A42C900009C1185 /* XPNoteView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNoteView.m; sourceTree = ""; }; + E87DF4CA2A42C960009C1185 /* HomeBannerInfoModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeBannerInfoModel.h; sourceTree = ""; }; + E87DF4CB2A42C960009C1185 /* HomeBannerInfoModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeBannerInfoModel.m; sourceTree = ""; }; + E87DF4D22A42C9B1009C1185 /* HomeRecommendRoomModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeRecommendRoomModel.h; sourceTree = ""; }; + E87DF4D32A42C9B1009C1185 /* HomeRecommendRoomModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeRecommendRoomModel.m; sourceTree = ""; }; + E87DF4D52A42C9C3009C1185 /* HomePlayRoomModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomePlayRoomModel.m; sourceTree = ""; }; + E87DF4D62A42C9C3009C1185 /* HomePlayRoomModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomePlayRoomModel.h; sourceTree = ""; }; + E87DF4D82A42C9D8009C1185 /* HomeCollectRoomModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeCollectRoomModel.m; sourceTree = ""; }; + E87DF4D92A42C9D9009C1185 /* HomeCollectRoomModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeCollectRoomModel.h; sourceTree = ""; }; + E87DF4DB2A42CA12009C1185 /* HomeSearchResultModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeSearchResultModel.m; sourceTree = ""; }; + E87DF4DC2A42CA12009C1185 /* HomeSearchResultModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeSearchResultModel.h; sourceTree = ""; }; + E87DF4DE2A42CA92009C1185 /* XPHomeSloganViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPHomeSloganViewController.m; sourceTree = ""; }; + E87DF4DF2A42CA92009C1185 /* XPHomeSloganViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPHomeSloganViewController.h; sourceTree = ""; }; + E87DF4E22A42CAD2009C1185 /* XPHomeSearchNavView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPHomeSearchNavView.m; sourceTree = ""; }; + E87DF4E32A42CAD2009C1185 /* XPHomeSearchNavView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPHomeSearchNavView.h; sourceTree = ""; }; + E87DF4E52A42CAFF009C1185 /* XPHomePresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPHomePresenter.m; sourceTree = ""; }; + E87DF4E62A42CB00009C1185 /* XPHomePresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPHomePresenter.h; sourceTree = ""; }; + E87DF4E82A42CB24009C1185 /* XPHomeProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPHomeProtocol.h; sourceTree = ""; }; + E87DF4EA2A42CB60009C1185 /* XPSearchListTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPSearchListTableViewCell.m; sourceTree = ""; }; + E87DF4EB2A42CB60009C1185 /* XPSearchListTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPSearchListTableViewCell.h; sourceTree = ""; }; + E87DF4ED2A42CB90009C1185 /* XPHomeCollectRoomTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPHomeCollectRoomTableViewCell.h; sourceTree = ""; }; + E87DF4EE2A42CB90009C1185 /* XPHomeCollectRoomTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPHomeCollectRoomTableViewCell.m; sourceTree = ""; }; + E87DF4F02A42CBEC009C1185 /* XPHomeUserView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPHomeUserView.m; sourceTree = ""; }; + E87DF4F12A42CBEC009C1185 /* XPHomeUserView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPHomeUserView.h; sourceTree = ""; }; + E87DF4F32A42CC49009C1185 /* HomeMenuInfoModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeMenuInfoModel.h; sourceTree = ""; }; + E87DF4F42A42CC49009C1185 /* HomeMenuInfoModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeMenuInfoModel.m; sourceTree = ""; }; + E87DF4F62A42CCAB009C1185 /* XPHomeSearchRelateView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPHomeSearchRelateView.m; sourceTree = ""; }; + E87DF4F72A42CCAB009C1185 /* XPHomeSearchRelateView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPHomeSearchRelateView.h; sourceTree = ""; }; + E87DF4F92A42CCDD009C1185 /* XPHomeRedommendCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPHomeRedommendCollectionViewCell.h; sourceTree = ""; }; + E87DF4FA2A42CCDE009C1185 /* XPHomeRedommendCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPHomeRedommendCollectionViewCell.m; sourceTree = ""; }; + E87DF4FC2A42CD7D009C1185 /* XPRoomSearchRecommendHeadView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPRoomSearchRecommendHeadView.m; sourceTree = ""; }; + E87DF4FD2A42CD7E009C1185 /* XPRoomSearchRecommendHeadView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPRoomSearchRecommendHeadView.h; sourceTree = ""; }; + E87DF4FF2A42CDB4009C1185 /* XPHomeRecommendProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPHomeRecommendProtocol.h; sourceTree = ""; }; + E87DF5002A42CDF1009C1185 /* XPHomeAttentionCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPHomeAttentionCollectionViewCell.h; sourceTree = ""; }; + E87DF5012A42CDF1009C1185 /* XPHomeAttentionCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPHomeAttentionCollectionViewCell.m; sourceTree = ""; }; + E87DF5032A42CE21009C1185 /* XPHomeSearchRecordCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPHomeSearchRecordCell.h; sourceTree = ""; }; + E87DF5042A42CE21009C1185 /* XPHomeSearchRecordCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPHomeSearchRecordCell.m; sourceTree = ""; }; + E87DF5062A42CE79009C1185 /* XPInRoomRecordPresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPInRoomRecordPresenter.h; sourceTree = ""; }; + E87DF5072A42CE79009C1185 /* XPInRoomRecordPresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPInRoomRecordPresenter.m; sourceTree = ""; }; + E87DF5092A42CEC9009C1185 /* HomeEveryOneSearchModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeEveryOneSearchModel.h; sourceTree = ""; }; + E87DF50A2A42CEC9009C1185 /* HomeEveryOneSearchModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeEveryOneSearchModel.m; sourceTree = ""; }; + E87DF50C2A42CF15009C1185 /* HomeLiveRoomModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeLiveRoomModel.h; sourceTree = ""; }; + E87DF50D2A42CF15009C1185 /* HomeLiveRoomModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeLiveRoomModel.m; sourceTree = ""; }; + E87E545229AA05EA00EBE52B /* XPFootPrintNavView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPFootPrintNavView.h; sourceTree = ""; }; + E87E545329AA05EA00EBE52B /* XPFootPrintNavView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPFootPrintNavView.m; sourceTree = ""; }; + E87E62552A3F560A002F68C9 /* XPHomePartyViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPHomePartyViewController.h; sourceTree = ""; }; + E87E62562A3F560A002F68C9 /* XPHomePartyViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPHomePartyViewController.m; sourceTree = ""; }; + E87E62572A3F560A002F68C9 /* XPHomeRecommendViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPHomeRecommendViewController.h; sourceTree = ""; }; + E87E62582A3F560A002F68C9 /* XPHomeRecommendViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPHomeRecommendViewController.m; sourceTree = ""; }; + E87E625B2A3F5622002F68C9 /* XPNewHomeViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPNewHomeViewController.h; sourceTree = ""; }; + E87E625C2A3F5622002F68C9 /* XPNewHomeViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPNewHomeViewController.m; sourceTree = ""; }; + E87E62602A3F5689002F68C9 /* XPNewHomeNavView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNewHomeNavView.m; sourceTree = ""; }; + E87E62612A3F5689002F68C9 /* XPNewHomeNavView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNewHomeNavView.h; sourceTree = ""; }; + E87E62662A3F571C002F68C9 /* XPHomeContainerPresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPHomeContainerPresenter.m; sourceTree = ""; }; + E87E62672A3F571D002F68C9 /* XPHomeContainerPresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPHomeContainerPresenter.h; sourceTree = ""; }; + E87E62692A3F5756002F68C9 /* XPHomeContainerProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPHomeContainerProtocol.h; sourceTree = ""; }; + E87E626A2A3F5906002F68C9 /* XPHomeBannerTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPHomeBannerTableViewCell.m; sourceTree = ""; }; + E87E626B2A3F5906002F68C9 /* XPNewHomePlayEmptyTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNewHomePlayEmptyTableViewCell.h; sourceTree = ""; }; + E87E626C2A3F5906002F68C9 /* XPNewHomePlayTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNewHomePlayTableViewCell.h; sourceTree = ""; }; + E87E626D2A3F5906002F68C9 /* XPNewHomePlayEmptyTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNewHomePlayEmptyTableViewCell.m; sourceTree = ""; }; + E87E626E2A3F5906002F68C9 /* XPNewHomePartyTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNewHomePartyTableViewCell.h; sourceTree = ""; }; + E87E626F2A3F5906002F68C9 /* XPNewHomePlayTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNewHomePlayTableViewCell.m; sourceTree = ""; }; + E87E62702A3F5907002F68C9 /* XPNewHomeRecommendTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNewHomeRecommendTableViewCell.m; sourceTree = ""; }; + E87E62712A3F5907002F68C9 /* XPNewHomePartyTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNewHomePartyTableViewCell.m; sourceTree = ""; }; + E87E62722A3F5907002F68C9 /* XPHomeBannerTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPHomeBannerTableViewCell.h; sourceTree = ""; }; + E87E62732A3F5907002F68C9 /* XPNewHomeRecommendTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNewHomeRecommendTableViewCell.h; sourceTree = ""; }; + E87E62792A3F5A0D002F68C9 /* XPNewHomeRecommendPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPNewHomeRecommendPresenter.h; sourceTree = ""; }; + E87E627A2A3F5A0D002F68C9 /* XPNewHomeRecommendPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPNewHomeRecommendPresenter.m; sourceTree = ""; }; + E87E627C2A3F5A63002F68C9 /* XPNewHomeRecommendProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPNewHomeRecommendProtocol.h; sourceTree = ""; }; + E87E627D2A3F5D28002F68C9 /* XPNewHomePlayItemCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNewHomePlayItemCollectionViewCell.h; sourceTree = ""; }; + E87E627E2A3F5D28002F68C9 /* XPNewHomePlayItemCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNewHomePlayItemCollectionViewCell.m; sourceTree = ""; }; E87E63F629AA1A5600EBE52B /* xplan-ios.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "xplan-ios.xcdatamodel"; sourceTree = ""; }; - E87E914C2796678D00A7B3F2 /* YUMIManePretendDispossessTabulationRegardElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YUMIManePretendDispossessTabulationRegardElement.h; sourceTree = ""; }; - E87E914D2796678D00A7B3F2 /* YUMIManePretendDispossessTabulationRegardElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YUMIManePretendDispossessTabulationRegardElement.m; sourceTree = ""; }; - E87E91502796A15500A7B3F2 /* MiecreoscoopeExtMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MiecreoscoopeExtMatrix.h; sourceTree = ""; }; - E87E91512796A15500A7B3F2 /* MiecreoscoopeExtMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MiecreoscoopeExtMatrix.m; sourceTree = ""; }; - E87E91532796B6DE00A7B3F2 /* YUMIChamberCallforConsumerRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCallforConsumerRegardGovernancer.h; sourceTree = ""; }; - E87E91542796B6DE00A7B3F2 /* YUMIChamberCallforConsumerRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCallforConsumerRegardGovernancer.m; sourceTree = ""; }; - E880B39C278BD49E00A83B0D /* YUMIThroughoutChamberCombatRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIThroughoutChamberCombatRegardGovernancer.h; sourceTree = ""; }; - E880B39D278BD49E00A83B0D /* YUMIThroughoutChamberCombatRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIThroughoutChamberCombatRegardGovernancer.m; sourceTree = ""; }; - E880B39F278BD60C00A83B0D /* YUMIThroughoutChamberCombatChosenChamberRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIThroughoutChamberCombatChosenChamberRegard.h; sourceTree = ""; }; - E880B3A0278BD60C00A83B0D /* YUMIThroughoutChamberCombatChosenChamberRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIThroughoutChamberCombatChosenChamberRegard.m; sourceTree = ""; }; - E880B3A4278BD69900A83B0D /* YUMIThroughoutChamberCombatTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIThroughoutChamberCombatTabulationRegardElement.h; sourceTree = ""; }; - E880B3A5278BD69900A83B0D /* YUMIThroughoutChamberCombatTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIThroughoutChamberCombatTabulationRegardElement.m; sourceTree = ""; }; - E880B3A7278BD82300A83B0D /* ThroughoutChamberCombatAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ThroughoutChamberCombatAbstractMatrix.h; sourceTree = ""; }; - E880B3A8278BD82300A83B0D /* ThroughoutChamberCombatAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ThroughoutChamberCombatAbstractMatrix.m; sourceTree = ""; }; - E880B3AA278BD98600A83B0D /* YUMIThroughoutChamberCombatDispossessTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIThroughoutChamberCombatDispossessTabulationRegardElement.h; sourceTree = ""; }; - E880B3AB278BD98600A83B0D /* YUMIThroughoutChamberCombatDispossessTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIThroughoutChamberCombatDispossessTabulationRegardElement.m; sourceTree = ""; }; + E87E914C2796678D00A7B3F2 /* XPMineDressEmptyTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPMineDressEmptyTableViewCell.h; sourceTree = ""; }; + E87E914D2796678D00A7B3F2 /* XPMineDressEmptyTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPMineDressEmptyTableViewCell.m; sourceTree = ""; }; + E87E91502796A15500A7B3F2 /* MicroExtModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MicroExtModel.h; sourceTree = ""; }; + E87E91512796A15500A7B3F2 /* MicroExtModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MicroExtModel.m; sourceTree = ""; }; + E87E91532796B6DE00A7B3F2 /* XPRoomInviteUserViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomInviteUserViewController.h; sourceTree = ""; }; + E87E91542796B6DE00A7B3F2 /* XPRoomInviteUserViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomInviteUserViewController.m; sourceTree = ""; }; + E880B39C278BD49E00A83B0D /* XPAcrossRoomPKViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAcrossRoomPKViewController.h; sourceTree = ""; }; + E880B39D278BD49E00A83B0D /* XPAcrossRoomPKViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAcrossRoomPKViewController.m; sourceTree = ""; }; + E880B39F278BD60C00A83B0D /* XPAcrossRoomPKSelectRoomView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAcrossRoomPKSelectRoomView.h; sourceTree = ""; }; + E880B3A0278BD60C00A83B0D /* XPAcrossRoomPKSelectRoomView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAcrossRoomPKSelectRoomView.m; sourceTree = ""; }; + E880B3A4278BD69900A83B0D /* XPAcrossRoomPKTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAcrossRoomPKTableViewCell.h; sourceTree = ""; }; + E880B3A5278BD69900A83B0D /* XPAcrossRoomPKTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAcrossRoomPKTableViewCell.m; sourceTree = ""; }; + E880B3A7278BD82300A83B0D /* AcrossRoomPKInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AcrossRoomPKInfoModel.h; sourceTree = ""; }; + E880B3A8278BD82300A83B0D /* AcrossRoomPKInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AcrossRoomPKInfoModel.m; sourceTree = ""; }; + E880B3AA278BD98600A83B0D /* XPAcrossRoomPKEmptyTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAcrossRoomPKEmptyTableViewCell.h; sourceTree = ""; }; + E880B3AB278BD98600A83B0D /* XPAcrossRoomPKEmptyTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAcrossRoomPKEmptyTableViewCell.m; sourceTree = ""; }; E880B3AD278BE1D800A83B0D /* Api+AcrossRoomPK.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+AcrossRoomPK.h"; sourceTree = ""; }; E880B3AE278BE1D800A83B0D /* Api+AcrossRoomPK.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+AcrossRoomPK.m"; sourceTree = ""; }; - E880B3B0278C1D1800A83B0D /* YUMIThroughoutChamberCombatPreadominantRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIThroughoutChamberCombatPreadominantRegard.h; sourceTree = ""; }; - E880B3B1278C1D1800A83B0D /* YUMIThroughoutChamberCombatPreadominantRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIThroughoutChamberCombatPreadominantRegard.m; sourceTree = ""; }; - E880B3B3278C1FE400A83B0D /* YUMIThroughoutChamberCombatExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIThroughoutChamberCombatExternalizer.h; sourceTree = ""; }; - E880B3B4278C1FE400A83B0D /* YUMIThroughoutChamberCombatExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIThroughoutChamberCombatExternalizer.m; sourceTree = ""; }; - E880B3B6278C1FFB00A83B0D /* FBCAcrossChamberCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCAcrossChamberCeremony.h; sourceTree = ""; }; - E884C36A2743951B00E1EBED /* PresentAchieveAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PresentAchieveAbstractMatrix.h; sourceTree = ""; }; - E884C36B2743951B00E1EBED /* PresentAchieveAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PresentAchieveAbstractMatrix.m; sourceTree = ""; }; - E884C36D2743AAC800E1EBED /* AttachmentMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AttachmentMatrix.h; sourceTree = ""; }; - E884C36E2743AAC800E1EBED /* AttachmentMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AttachmentMatrix.m; sourceTree = ""; }; + E880B3B0278C1D1800A83B0D /* XPAcrossRoomPKRuleView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAcrossRoomPKRuleView.h; sourceTree = ""; }; + E880B3B1278C1D1800A83B0D /* XPAcrossRoomPKRuleView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAcrossRoomPKRuleView.m; sourceTree = ""; }; + E880B3B3278C1FE400A83B0D /* XPAcrossRoomPKPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAcrossRoomPKPresenter.h; sourceTree = ""; }; + E880B3B4278C1FE400A83B0D /* XPAcrossRoomPKPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAcrossRoomPKPresenter.m; sourceTree = ""; }; + E880B3B6278C1FFB00A83B0D /* XPAcrossRoomProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAcrossRoomProtocol.h; sourceTree = ""; }; + E884C36A2743951B00E1EBED /* GiftReceiveInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GiftReceiveInfoModel.h; sourceTree = ""; }; + E884C36B2743951B00E1EBED /* GiftReceiveInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GiftReceiveInfoModel.m; sourceTree = ""; }; + E884C36D2743AAC800E1EBED /* AttachmentModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AttachmentModel.h; sourceTree = ""; }; + E884C36E2743AAC800E1EBED /* AttachmentModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AttachmentModel.m; sourceTree = ""; }; E884C3702743AEDE00E1EBED /* CustomAttachmentDecoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CustomAttachmentDecoder.h; sourceTree = ""; }; E884C3712743AEDE00E1EBED /* CustomAttachmentDecoder.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CustomAttachmentDecoder.m; sourceTree = ""; }; - E885D531297798E1004DC088 /* InterlocutionInstanllingTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InterlocutionInstanllingTabulationRegardElement.h; sourceTree = ""; }; - E885D532297798E1004DC088 /* InterlocutionInstanllingTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InterlocutionInstanllingTabulationRegardElement.m; sourceTree = ""; }; - E885D5342977CE28004DC088 /* InterlocutionInstanllingMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InterlocutionInstanllingMatrix.h; sourceTree = ""; }; - E885D5352977CE28004DC088 /* InterlocutionInstanllingMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InterlocutionInstanllingMatrix.m; sourceTree = ""; }; - E885D5372977D10E004DC088 /* InterlocutionInstanllingConsumerRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InterlocutionInstanllingConsumerRegard.h; sourceTree = ""; }; - E885D5382977D10E004DC088 /* InterlocutionInstanllingConsumerRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InterlocutionInstanllingConsumerRegard.m; sourceTree = ""; }; - E885D53A2977FBFD004DC088 /* CommunicationIntratemporalRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationIntratemporalRegard.h; sourceTree = ""; }; - E885D53B2977FBFD004DC088 /* CommunicationIntratemporalRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationIntratemporalRegard.m; sourceTree = ""; }; - E88749B4282B8FC600C3C7DB /* SeparationsAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SeparationsAbstractMatrix.h; sourceTree = ""; }; - E88749B5282B8FC600C3C7DB /* SeparationsAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SeparationsAbstractMatrix.m; sourceTree = ""; }; - E88863C4278EAFC3004BCFAB /* YUMIThroughoutChamberCombatConsequentRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIThroughoutChamberCombatConsequentRegard.h; sourceTree = ""; }; - E88863C5278EAFC3004BCFAB /* YUMIThroughoutChamberCombatConsequentRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIThroughoutChamberCombatConsequentRegard.m; sourceTree = ""; }; - E88863C7278EBA43004BCFAB /* YUMIThroughoutChamberCombatForceEndConsequentRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIThroughoutChamberCombatForceEndConsequentRegard.h; sourceTree = ""; }; - E88863C8278EBA43004BCFAB /* YUMIThroughoutChamberCombatForceEndConsequentRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIThroughoutChamberCombatForceEndConsequentRegard.m; sourceTree = ""; }; - E88863CA278EC336004BCFAB /* ThroughoutChamberCombatCaptureMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ThroughoutChamberCombatCaptureMatrix.h; sourceTree = ""; }; - E88863CB278EC336004BCFAB /* ThroughoutChamberCombatCaptureMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ThroughoutChamberCombatCaptureMatrix.m; sourceTree = ""; }; - E88863CD278EC393004BCFAB /* YUMIThroughoutChamberCombatCaptureRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIThroughoutChamberCombatCaptureRegard.h; sourceTree = ""; }; - E88863CE278EC393004BCFAB /* YUMIThroughoutChamberCombatCaptureRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIThroughoutChamberCombatCaptureRegard.m; sourceTree = ""; }; - E88863D1278ED4C0004BCFAB /* Intratemporalstamp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Intratemporalstamp.h; sourceTree = ""; }; - E88863D2278ED4C0004BCFAB /* Intratemporalstamp.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Intratemporalstamp.m; sourceTree = ""; }; - E8899C7D27853B6A007944BE /* EngagementMiecreoscoopeRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EngagementMiecreoscoopeRegard.h; sourceTree = ""; }; - E8899C7E27853B6A007944BE /* EngagementMiecreoscoopeRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EngagementMiecreoscoopeRegard.m; sourceTree = ""; }; - E8899C802785A694007944BE /* EngagementAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EngagementAbstractMatrix.h; sourceTree = ""; }; - E8899C812785A694007944BE /* EngagementAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EngagementAbstractMatrix.m; sourceTree = ""; }; - E8899C832785CC69007944BE /* YUMIChamberEngagementBrightnessRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberEngagementBrightnessRegard.h; sourceTree = ""; }; - E8899C842785CC69007944BE /* YUMIChamberEngagementBrightnessRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberEngagementBrightnessRegard.m; sourceTree = ""; }; - E88B5CBF26FB407B00DA9178 /* YUMIManeConsumerAbstractRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsumerAbstractRegardGovernancer.h; sourceTree = ""; }; - E88B5CC026FB407B00DA9178 /* YUMIManeConsumerAbstractRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsumerAbstractRegardGovernancer.m; sourceTree = ""; }; - E88B5CC326FB42B000DA9178 /* YUMIManeConsumerAbstractIntelligencerRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsumerAbstractIntelligencerRegard.h; sourceTree = ""; }; - E88B5CC426FB42B000DA9178 /* YUMIManeConsumerAbstractIntelligencerRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsumerAbstractIntelligencerRegard.m; sourceTree = ""; }; - E88C728D2828EA4E0047FB2B /* Manual+CoreDataProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Manual+CoreDataProperties.h"; sourceTree = ""; }; - E88C728E2828EA4E0047FB2B /* Manual+CoreDataClass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Manual+CoreDataClass.h"; sourceTree = ""; }; - E88C728F2828EA4E0047FB2B /* Manual+CoreDataProperties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Manual+CoreDataProperties.m"; sourceTree = ""; }; - E88C72902828EA4E0047FB2B /* Manual+CoreDataClass.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Manual+CoreDataClass.m"; sourceTree = ""; }; - E88C72932828F1AD0047FB2B /* YUMIChamberManualBibliothecaRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberManualBibliothecaRegardGovernancer.h; sourceTree = ""; }; - E88C72942828F1AD0047FB2B /* YUMIChamberManualBibliothecaRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberManualBibliothecaRegardGovernancer.m; sourceTree = ""; }; - E88C72972828F3620047FB2B /* YUMIChamberManualBibliothecaTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberManualBibliothecaTabulationRegardElement.h; sourceTree = ""; }; - E88C72982828F3620047FB2B /* YUMIChamberManualBibliothecaTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberManualBibliothecaTabulationRegardElement.m; sourceTree = ""; }; - E88C729A2828F37D0047FB2B /* YUMIChamberManualBibliothecaDispossessTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberManualBibliothecaDispossessTabulationRegardElement.h; sourceTree = ""; }; - E88C729B2828F37D0047FB2B /* YUMIChamberManualBibliothecaDispossessTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberManualBibliothecaDispossessTabulationRegardElement.m; sourceTree = ""; }; - E88C729E2828FCD40047FB2B /* YUMIManualBibliothecaDisportRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManualBibliothecaDisportRegard.h; sourceTree = ""; }; - E88C729F2828FCD40047FB2B /* YUMIManualBibliothecaDisportRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManualBibliothecaDisportRegard.m; sourceTree = ""; }; - E88C72A1282917590047FB2B /* YUMIChamberManualReputationInstanllingRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberManualReputationInstanllingRegard.h; sourceTree = ""; }; - E88C72A2282917590047FB2B /* YUMIChamberManualReputationInstanllingRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberManualReputationInstanllingRegard.m; sourceTree = ""; }; - E88C72A4282921D60047FB2B /* YUMIChamberBackManualDisporterRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberBackManualDisporterRegard.h; sourceTree = ""; }; - E88C72A5282921D60047FB2B /* YUMIChamberBackManualDisporterRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberBackManualDisporterRegard.m; sourceTree = ""; }; - E88E4A7E297673DC00019A50 /* InterlocutionNevEnergeticRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InterlocutionNevEnergeticRegard.h; sourceTree = ""; }; - E88E4A7F297673DC00019A50 /* InterlocutionNevEnergeticRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InterlocutionNevEnergeticRegard.m; sourceTree = ""; }; - E8901CF428B38D89001E9A92 /* YUMIGraffitiPresentRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIGraffitiPresentRegard.h; sourceTree = ""; }; - E8901CF528B38D89001E9A92 /* YUMIGraffitiPresentRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIGraffitiPresentRegard.m; sourceTree = ""; }; - E890BC02273CF0500007C46B /* YUMIPresentComputationMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPresentComputationMatrix.h; sourceTree = ""; }; - E890BC03273CF0500007C46B /* YUMIPresentComputationMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPresentComputationMatrix.m; sourceTree = ""; }; - E890BC05273CF1800007C46B /* YUMIPresentComputationAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPresentComputationAssembletionRegardElement.h; sourceTree = ""; }; - E890BC06273CF1800007C46B /* YUMIPresentComputationAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPresentComputationAssembletionRegardElement.m; sourceTree = ""; }; - E890BC0B273D09A50007C46B /* YUMIPresentComputationRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPresentComputationRegard.h; sourceTree = ""; }; - E890BC0C273D09A50007C46B /* YUMIPresentComputationRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPresentComputationRegard.m; sourceTree = ""; }; - E890BC0E273D23F00007C46B /* PresentAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PresentAbstractMatrix.h; sourceTree = ""; }; - E890BC0F273D23F00007C46B /* PresentAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PresentAbstractMatrix.m; sourceTree = ""; }; - E895017E282CAC49007E459A /* YUMISeparationsConsumerAbstractRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsConsumerAbstractRegard.h; sourceTree = ""; }; - E895017F282CAC49007E459A /* YUMISeparationsConsumerAbstractRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsConsumerAbstractRegard.m; sourceTree = ""; }; - E8950181282CAC6A007E459A /* YUMISeparationsAppearanceRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsAppearanceRegard.h; sourceTree = ""; }; - E8950182282CAC6A007E459A /* YUMISeparationsAppearanceRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsAppearanceRegard.m; sourceTree = ""; }; - E8950184282CAC80007E459A /* YUMISeparationsTooObstacleRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsTooObstacleRegard.h; sourceTree = ""; }; - E8950185282CAC80007E459A /* YUMISeparationsTooObstacleRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsTooObstacleRegard.m; sourceTree = ""; }; - E8950187282CFFB1007E459A /* YUMISeparationsProgrammingDisposition.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsProgrammingDisposition.h; sourceTree = ""; }; - E8950188282CFFB1007E459A /* YUMISeparationsProgrammingDisposition.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsProgrammingDisposition.m; sourceTree = ""; }; - E895018A282D0701007E459A /* YUMISepartionMotifRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISepartionMotifRegard.h; sourceTree = ""; }; - E895018B282D0701007E459A /* YUMISepartionMotifRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISepartionMotifRegard.m; sourceTree = ""; }; + E885D531297798E1004DC088 /* SessionSettingTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SessionSettingTableViewCell.h; sourceTree = ""; }; + E885D532297798E1004DC088 /* SessionSettingTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SessionSettingTableViewCell.m; sourceTree = ""; }; + E885D5342977CE28004DC088 /* SessionSettingModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SessionSettingModel.h; sourceTree = ""; }; + E885D5352977CE28004DC088 /* SessionSettingModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SessionSettingModel.m; sourceTree = ""; }; + E885D5372977D10E004DC088 /* SessionSettingUserView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SessionSettingUserView.h; sourceTree = ""; }; + E885D5382977D10E004DC088 /* SessionSettingUserView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SessionSettingUserView.m; sourceTree = ""; }; + E885D53A2977FBFD004DC088 /* MessageTimeView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageTimeView.h; sourceTree = ""; }; + E885D53B2977FBFD004DC088 /* MessageTimeView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageTimeView.m; sourceTree = ""; }; + E88749B4282B8FC600C3C7DB /* MonentsInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MonentsInfoModel.h; sourceTree = ""; }; + E88749B5282B8FC600C3C7DB /* MonentsInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MonentsInfoModel.m; sourceTree = ""; }; + E88863C4278EAFC3004BCFAB /* XPAcrossRoomPKResultView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAcrossRoomPKResultView.h; sourceTree = ""; }; + E88863C5278EAFC3004BCFAB /* XPAcrossRoomPKResultView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAcrossRoomPKResultView.m; sourceTree = ""; }; + E88863C7278EBA43004BCFAB /* XPAcrossRoomPKForceEndResultView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAcrossRoomPKForceEndResultView.h; sourceTree = ""; }; + E88863C8278EBA43004BCFAB /* XPAcrossRoomPKForceEndResultView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAcrossRoomPKForceEndResultView.m; sourceTree = ""; }; + E88863CA278EC336004BCFAB /* AcrossRoomPKPrizeModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AcrossRoomPKPrizeModel.h; sourceTree = ""; }; + E88863CB278EC336004BCFAB /* AcrossRoomPKPrizeModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AcrossRoomPKPrizeModel.m; sourceTree = ""; }; + E88863CD278EC393004BCFAB /* XPAcrossRoomPKPrizeView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAcrossRoomPKPrizeView.h; sourceTree = ""; }; + E88863CE278EC393004BCFAB /* XPAcrossRoomPKPrizeView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAcrossRoomPKPrizeView.m; sourceTree = ""; }; + E88863D1278ED4C0004BCFAB /* Timestamp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Timestamp.h; sourceTree = ""; }; + E88863D2278ED4C0004BCFAB /* Timestamp.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Timestamp.m; sourceTree = ""; }; + E8899C7D27853B6A007944BE /* DatingMicroView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DatingMicroView.h; sourceTree = ""; }; + E8899C7E27853B6A007944BE /* DatingMicroView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DatingMicroView.m; sourceTree = ""; }; + E8899C802785A694007944BE /* DatingInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DatingInfoModel.h; sourceTree = ""; }; + E8899C812785A694007944BE /* DatingInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DatingInfoModel.m; sourceTree = ""; }; + E8899C832785CC69007944BE /* XPRoomDatingAnimationView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomDatingAnimationView.h; sourceTree = ""; }; + E8899C842785CC69007944BE /* XPRoomDatingAnimationView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomDatingAnimationView.m; sourceTree = ""; }; + E88B5CBF26FB407B00DA9178 /* XPMineUserInfoViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoViewController.h; sourceTree = ""; }; + E88B5CC026FB407B00DA9178 /* XPMineUserInfoViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoViewController.m; sourceTree = ""; }; + E88B5CC326FB42B000DA9178 /* XPMineUserInfoHeaderView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoHeaderView.h; sourceTree = ""; }; + E88B5CC426FB42B000DA9178 /* XPMineUserInfoHeaderView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoHeaderView.m; sourceTree = ""; }; + E88C728D2828EA4E0047FB2B /* Music+CoreDataProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Music+CoreDataProperties.h"; sourceTree = ""; }; + E88C728E2828EA4E0047FB2B /* Music+CoreDataClass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Music+CoreDataClass.h"; sourceTree = ""; }; + E88C728F2828EA4E0047FB2B /* Music+CoreDataProperties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Music+CoreDataProperties.m"; sourceTree = ""; }; + E88C72902828EA4E0047FB2B /* Music+CoreDataClass.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Music+CoreDataClass.m"; sourceTree = ""; }; + E88C72932828F1AD0047FB2B /* XPRoomMusicLibraryViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMusicLibraryViewController.h; sourceTree = ""; }; + E88C72942828F1AD0047FB2B /* XPRoomMusicLibraryViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomMusicLibraryViewController.m; sourceTree = ""; }; + E88C72972828F3620047FB2B /* XPRoomMusicLibraryTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMusicLibraryTableViewCell.h; sourceTree = ""; }; + E88C72982828F3620047FB2B /* XPRoomMusicLibraryTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomMusicLibraryTableViewCell.m; sourceTree = ""; }; + E88C729A2828F37D0047FB2B /* XPRoomMusicLibraryEmptyTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMusicLibraryEmptyTableViewCell.h; sourceTree = ""; }; + E88C729B2828F37D0047FB2B /* XPRoomMusicLibraryEmptyTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomMusicLibraryEmptyTableViewCell.m; sourceTree = ""; }; + E88C729E2828FCD40047FB2B /* XPMusicLibraryPlayView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMusicLibraryPlayView.h; sourceTree = ""; }; + E88C729F2828FCD40047FB2B /* XPMusicLibraryPlayView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMusicLibraryPlayView.m; sourceTree = ""; }; + E88C72A1282917590047FB2B /* XPRoomMusicVoiceSettingView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMusicVoiceSettingView.h; sourceTree = ""; }; + E88C72A2282917590047FB2B /* XPRoomMusicVoiceSettingView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomMusicVoiceSettingView.m; sourceTree = ""; }; + E88C72A4282921D60047FB2B /* XPRoomBackMusicPlayerView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomBackMusicPlayerView.h; sourceTree = ""; }; + E88C72A5282921D60047FB2B /* XPRoomBackMusicPlayerView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomBackMusicPlayerView.m; sourceTree = ""; }; + E88E4A7E297673DC00019A50 /* SessionNavLiveView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SessionNavLiveView.h; sourceTree = ""; }; + E88E4A7F297673DC00019A50 /* SessionNavLiveView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SessionNavLiveView.m; sourceTree = ""; }; + E8901CF428B38D89001E9A92 /* XPGraffitiGiftView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGraffitiGiftView.h; sourceTree = ""; }; + E8901CF528B38D89001E9A92 /* XPGraffitiGiftView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGraffitiGiftView.m; sourceTree = ""; }; + E890BC02273CF0500007C46B /* XPGiftCountModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftCountModel.h; sourceTree = ""; }; + E890BC03273CF0500007C46B /* XPGiftCountModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftCountModel.m; sourceTree = ""; }; + E890BC05273CF1800007C46B /* XPGiftCountCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftCountCollectionViewCell.h; sourceTree = ""; }; + E890BC06273CF1800007C46B /* XPGiftCountCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftCountCollectionViewCell.m; sourceTree = ""; }; + E890BC0B273D09A50007C46B /* XPGiftCountView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftCountView.h; sourceTree = ""; }; + E890BC0C273D09A50007C46B /* XPGiftCountView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftCountView.m; sourceTree = ""; }; + E890BC0E273D23F00007C46B /* GiftInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GiftInfoModel.h; sourceTree = ""; }; + E890BC0F273D23F00007C46B /* GiftInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GiftInfoModel.m; sourceTree = ""; }; + E895017E282CAC49007E459A /* XPMonentsUserInfoView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsUserInfoView.h; sourceTree = ""; }; + E895017F282CAC49007E459A /* XPMonentsUserInfoView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsUserInfoView.m; sourceTree = ""; }; + E8950181282CAC6A007E459A /* XPMonentsPhotoView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsPhotoView.h; sourceTree = ""; }; + E8950182282CAC6A007E459A /* XPMonentsPhotoView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsPhotoView.m; sourceTree = ""; }; + E8950184282CAC80007E459A /* XPMonentsTooBarView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsTooBarView.h; sourceTree = ""; }; + E8950185282CAC80007E459A /* XPMonentsTooBarView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsTooBarView.m; sourceTree = ""; }; + E8950187282CFFB1007E459A /* XPMonentsLayoutConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsLayoutConfig.h; sourceTree = ""; }; + E8950188282CFFB1007E459A /* XPMonentsLayoutConfig.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsLayoutConfig.m; sourceTree = ""; }; + E895018A282D0701007E459A /* XPMoentsTopicView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMoentsTopicView.h; sourceTree = ""; }; + E895018B282D0701007E459A /* XPMoentsTopicView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMoentsTopicView.m; sourceTree = ""; }; E896A9932A49F8A20010FE65 /* login_vapbg.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = login_vapbg.mp4; sourceTree = ""; }; - E896EF922771AAC100AD2CC1 /* YUMIManeFanaticsExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeFanaticsExternalizer.h; sourceTree = ""; }; - E896EF932771AAC100AD2CC1 /* YUMIManeFanaticsExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeFanaticsExternalizer.m; sourceTree = ""; }; - E896EF952771AAE400AD2CC1 /* YUMIManeConsiderationExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsiderationExternalizer.h; sourceTree = ""; }; - E896EF962771AAE400AD2CC1 /* YUMIManeConsiderationExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsiderationExternalizer.m; sourceTree = ""; }; - E896EF982771AB0000AD2CC1 /* FBCManeFanaticsCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCManeFanaticsCeremony.h; sourceTree = ""; }; - E896EF992771AB1800AD2CC1 /* FBCManeConsiderationCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCManeConsiderationCeremony.h; sourceTree = ""; }; - E896EF9A2771AE6B00AD2CC1 /* YUMIManeFanaticsRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeFanaticsRegardGovernancer.h; sourceTree = ""; }; - E896EF9B2771AE6B00AD2CC1 /* YUMIManeFanaticsRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeFanaticsRegardGovernancer.m; sourceTree = ""; }; - E896EF9D2771AE7B00AD2CC1 /* YUMIManeConsiderationRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsiderationRegardGovernancer.h; sourceTree = ""; }; - E896EF9E2771AE7B00AD2CC1 /* YUMIManeConsiderationRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsiderationRegardGovernancer.m; sourceTree = ""; }; - E896EFA02771AE9400AD2CC1 /* YUMIManeAssistantRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeAssistantRegardGovernancer.h; sourceTree = ""; }; - E896EFA12771AE9400AD2CC1 /* YUMIManeAssistantRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeAssistantRegardGovernancer.m; sourceTree = ""; }; - E896EFA42771AEDD00AD2CC1 /* YUMIManeFanaticsTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeFanaticsTabulationRegardElement.h; sourceTree = ""; }; - E896EFA52771AEDD00AD2CC1 /* YUMIManeFanaticsTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeFanaticsTabulationRegardElement.m; sourceTree = ""; }; - E896EFA72771AEEC00AD2CC1 /* YUMIManeConsiderationTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsiderationTabulationRegardElement.h; sourceTree = ""; }; - E896EFA82771AEEC00AD2CC1 /* YUMIManeConsiderationTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsiderationTabulationRegardElement.m; sourceTree = ""; }; - E896EFAA2771AEFE00AD2CC1 /* YUMIManeAssistantTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeAssistantTabulationRegardElement.h; sourceTree = ""; }; - E896EFAB2771AEFE00AD2CC1 /* YUMIManeAssistantTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeAssistantTabulationRegardElement.m; sourceTree = ""; }; - E896EFAD2771AF0F00AD2CC1 /* YUMIManeAssistantDispossessTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeAssistantDispossessTabulationRegardElement.h; sourceTree = ""; }; - E896EFAE2771AF0F00AD2CC1 /* YUMIManeAssistantDispossessTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeAssistantDispossessTabulationRegardElement.m; sourceTree = ""; }; - E896EFB02771C93B00AD2CC1 /* YUMIManeAssistantNumberRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeAssistantNumberRegard.h; sourceTree = ""; }; - E896EFB12771C93B00AD2CC1 /* YUMIManeAssistantNumberRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeAssistantNumberRegard.m; sourceTree = ""; }; - E897ABFA28AF2E71003B3587 /* YUMIMarchingPresentRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIMarchingPresentRegard.h; sourceTree = ""; }; - E897ABFB28AF2E71003B3587 /* YUMIMarchingPresentRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIMarchingPresentRegard.m; sourceTree = ""; }; - E897ABFD28AF39B4003B3587 /* YUMIMarchingBrightnessRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIMarchingBrightnessRegard.h; sourceTree = ""; }; - E897ABFE28AF39B4003B3587 /* YUMIMarchingBrightnessRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIMarchingBrightnessRegard.m; sourceTree = ""; }; - E8998D782859784200C68558 /* YUMISVGADisporter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISVGADisporter.h; sourceTree = ""; }; - E8998D792859784200C68558 /* YUMISVGADisporter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISVGADisporter.m; sourceTree = ""; }; - E8998D7E28597B0300C68558 /* YUMIChamberFortunateBigCaptureRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberFortunateBigCaptureRegard.h; sourceTree = ""; }; - E8998D7F28597B0300C68558 /* YUMIChamberFortunateBigCaptureRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberFortunateBigCaptureRegard.m; sourceTree = ""; }; - E8998D832859B4FA00C68558 /* YUMIManeConsumerAbstractPresentRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsumerAbstractPresentRegard.h; sourceTree = ""; }; - E8998D842859B4FA00C68558 /* YUMIManeConsumerAbstractPresentRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsumerAbstractPresentRegard.m; sourceTree = ""; }; - E8998D892859CB6A00C68558 /* YUMIManeConsumerAbstractPresentRamparatMetroRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsumerAbstractPresentRamparatMetroRegardGovernancer.h; sourceTree = ""; }; - E8998D8A2859CB6A00C68558 /* YUMIManeConsumerAbstractPresentRamparatMetroRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsumerAbstractPresentRamparatMetroRegardGovernancer.m; sourceTree = ""; }; + E896EF922771AAC100AD2CC1 /* XPMineFansPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineFansPresenter.h; sourceTree = ""; }; + E896EF932771AAC100AD2CC1 /* XPMineFansPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineFansPresenter.m; sourceTree = ""; }; + E896EF952771AAE400AD2CC1 /* XPMineAttentionPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineAttentionPresenter.h; sourceTree = ""; }; + E896EF962771AAE400AD2CC1 /* XPMineAttentionPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineAttentionPresenter.m; sourceTree = ""; }; + E896EF982771AB0000AD2CC1 /* XPMineFansProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineFansProtocol.h; sourceTree = ""; }; + E896EF992771AB1800AD2CC1 /* XPMineAttentionProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineAttentionProtocol.h; sourceTree = ""; }; + E896EF9A2771AE6B00AD2CC1 /* XPMineFansViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineFansViewController.h; sourceTree = ""; }; + E896EF9B2771AE6B00AD2CC1 /* XPMineFansViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineFansViewController.m; sourceTree = ""; }; + E896EF9D2771AE7B00AD2CC1 /* XPMineAttentionViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineAttentionViewController.h; sourceTree = ""; }; + E896EF9E2771AE7B00AD2CC1 /* XPMineAttentionViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineAttentionViewController.m; sourceTree = ""; }; + E896EFA02771AE9400AD2CC1 /* XPMineFriendViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineFriendViewController.h; sourceTree = ""; }; + E896EFA12771AE9400AD2CC1 /* XPMineFriendViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineFriendViewController.m; sourceTree = ""; }; + E896EFA42771AEDD00AD2CC1 /* XPMineFansTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineFansTableViewCell.h; sourceTree = ""; }; + E896EFA52771AEDD00AD2CC1 /* XPMineFansTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineFansTableViewCell.m; sourceTree = ""; }; + E896EFA72771AEEC00AD2CC1 /* XPMineAttentionTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineAttentionTableViewCell.h; sourceTree = ""; }; + E896EFA82771AEEC00AD2CC1 /* XPMineAttentionTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineAttentionTableViewCell.m; sourceTree = ""; }; + E896EFAA2771AEFE00AD2CC1 /* XPMineFriendTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineFriendTableViewCell.h; sourceTree = ""; }; + E896EFAB2771AEFE00AD2CC1 /* XPMineFriendTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineFriendTableViewCell.m; sourceTree = ""; }; + E896EFAD2771AF0F00AD2CC1 /* XPMineFriendEmptyTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineFriendEmptyTableViewCell.h; sourceTree = ""; }; + E896EFAE2771AF0F00AD2CC1 /* XPMineFriendEmptyTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineFriendEmptyTableViewCell.m; sourceTree = ""; }; + E896EFB02771C93B00AD2CC1 /* XPMineFriendNumberView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineFriendNumberView.h; sourceTree = ""; }; + E896EFB12771C93B00AD2CC1 /* XPMineFriendNumberView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineFriendNumberView.m; sourceTree = ""; }; + E897ABFA28AF2E71003B3587 /* XPSailingGiftView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSailingGiftView.h; sourceTree = ""; }; + E897ABFB28AF2E71003B3587 /* XPSailingGiftView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSailingGiftView.m; sourceTree = ""; }; + E897ABFD28AF39B4003B3587 /* XPSailingAnimationView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSailingAnimationView.h; sourceTree = ""; }; + E897ABFE28AF39B4003B3587 /* XPSailingAnimationView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSailingAnimationView.m; sourceTree = ""; }; + E8998D782859784200C68558 /* XPSVGAPlayer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSVGAPlayer.h; sourceTree = ""; }; + E8998D792859784200C68558 /* XPSVGAPlayer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSVGAPlayer.m; sourceTree = ""; }; + E8998D7E28597B0300C68558 /* XPRoomLuckyBigPrizeView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomLuckyBigPrizeView.h; sourceTree = ""; }; + E8998D7F28597B0300C68558 /* XPRoomLuckyBigPrizeView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomLuckyBigPrizeView.m; sourceTree = ""; }; + E8998D832859B4FA00C68558 /* XPMineUserInfoGiftView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoGiftView.h; sourceTree = ""; }; + E8998D842859B4FA00C68558 /* XPMineUserInfoGiftView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoGiftView.m; sourceTree = ""; }; + E8998D892859CB6A00C68558 /* XPMineUserInfoGiftWallSubViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoGiftWallSubViewController.h; sourceTree = ""; }; + E8998D8A2859CB6A00C68558 /* XPMineUserInfoGiftWallSubViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoGiftWallSubViewController.m; sourceTree = ""; }; E8998D942859DD6F00C68558 /* UIView+Corner.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UIView+Corner.h"; sourceTree = ""; }; E8998D952859DD6F00C68558 /* UIView+Corner.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIView+Corner.m"; sourceTree = ""; }; - E899C68727508F4E00E189E5 /* YUMIConsumerSolitaireAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIConsumerSolitaireAbstractMatrix.h; sourceTree = ""; }; - E899C68827508F4E00E189E5 /* YUMIConsumerSolitaireAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIConsumerSolitaireAbstractMatrix.m; sourceTree = ""; }; - E899C68A275093B700E189E5 /* YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix.h; sourceTree = ""; }; - E899C68B275093B800E189E5 /* YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix.m; sourceTree = ""; }; - E89BD7D2277D471100E31B19 /* YUMIChamberOnlineTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberOnlineTabulationRegardElement.h; sourceTree = ""; }; - E89BD7D3277D471100E31B19 /* YUMIChamberOnlineTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberOnlineTabulationRegardElement.m; sourceTree = ""; }; + E899C68727508F4E00E189E5 /* XPUserCardInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPUserCardInfoModel.h; sourceTree = ""; }; + E899C68827508F4E00E189E5 /* XPUserCardInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPUserCardInfoModel.m; sourceTree = ""; }; + E899C68A275093B700E189E5 /* XPUserCardMicroItemModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPUserCardMicroItemModel.h; sourceTree = ""; }; + E899C68B275093B800E189E5 /* XPUserCardMicroItemModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPUserCardMicroItemModel.m; sourceTree = ""; }; + E89BD7D2277D471100E31B19 /* XPRoomOnlineTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomOnlineTableViewCell.h; sourceTree = ""; }; + E89BD7D3277D471100E31B19 /* XPRoomOnlineTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomOnlineTableViewCell.m; sourceTree = ""; }; E89D60B8271D643A001F8895 /* Api+Room.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+Room.h"; sourceTree = ""; }; E89D60B9271D643A001F8895 /* Api+Room.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+Room.m"; sourceTree = ""; }; - E89D60BB271D647A001F8895 /* YUMIChamberExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberExternalizer.h; sourceTree = ""; }; - E89D60BC271D647A001F8895 /* YUMIChamberExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberExternalizer.m; sourceTree = ""; }; - E89D60BE271D648D001F8895 /* FBCChamberCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCChamberCeremony.h; sourceTree = ""; }; - E89D60BF271D64B9001F8895 /* ChamberAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChamberAbstractMatrix.h; sourceTree = ""; }; - E89D60C0271D64B9001F8895 /* ChamberAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ChamberAbstractMatrix.m; sourceTree = ""; }; - E89DA66227005931008483C1 /* YUMIIAPFacilitater.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIIAPFacilitater.h; sourceTree = ""; }; - E89DA66327005932008483C1 /* YUMIIAPFacilitater.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIIAPFacilitater.m; sourceTree = ""; }; - E89DA66527006443008483C1 /* ReindictStorage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ReindictStorage.h; sourceTree = ""; }; - E89DA66627006443008483C1 /* ReindictStorage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ReindictStorage.m; sourceTree = ""; }; - E89DA67027008D59008483C1 /* RamparatetAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RamparatetAbstractMatrix.h; sourceTree = ""; }; - E89DA67127008D59008483C1 /* RamparatetAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RamparatetAbstractMatrix.m; sourceTree = ""; }; - E89DA67327009ACD008483C1 /* YUMIManeReindictNevRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeReindictNevRegard.h; sourceTree = ""; }; - E89DA67427009ACD008483C1 /* YUMIManeReindictNevRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeReindictNevRegard.m; sourceTree = ""; }; - E89DCF5228FFEC67001647EC /* YUMIDesirePresentHistoryTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIDesirePresentHistoryTabulationRegardElement.h; sourceTree = ""; }; - E89DCF5328FFEC67001647EC /* YUMIDesirePresentHistoryTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIDesirePresentHistoryTabulationRegardElement.m; sourceTree = ""; }; - E89DCF5528FFF076001647EC /* YUMIDesirePresentDispossessTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIDesirePresentDispossessTabulationRegardElement.h; sourceTree = ""; }; - E89DCF5628FFF076001647EC /* YUMIDesirePresentDispossessTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIDesirePresentDispossessTabulationRegardElement.m; sourceTree = ""; }; - E89DCF5828FFF1AD001647EC /* YUMIDesirePresentDivisionRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIDesirePresentDivisionRegard.h; sourceTree = ""; }; - E89DCF5928FFF1AD001647EC /* YUMIDesirePresentDivisionRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIDesirePresentDivisionRegard.m; sourceTree = ""; }; - E89DCF5B2900E5EE001647EC /* DesirePresentHistoryMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DesirePresentHistoryMatrix.h; sourceTree = ""; }; - E89DCF5C2900E5EE001647EC /* DesirePresentHistoryMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DesirePresentHistoryMatrix.m; sourceTree = ""; }; - E89DCF5E2900F4FB001647EC /* YUMIDesirePresentImportRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIDesirePresentImportRegard.h; sourceTree = ""; }; - E89DCF5F2900F4FB001647EC /* YUMIDesirePresentImportRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIDesirePresentImportRegard.m; sourceTree = ""; }; - E8A03DE02762FA000098D9EA /* YUMIConfectioneryTimberFurthaerRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIConfectioneryTimberFurthaerRegard.h; sourceTree = ""; }; - E8A03DE12762FA000098D9EA /* YUMIConfectioneryTimberFurthaerRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIConfectioneryTimberFurthaerRegard.m; sourceTree = ""; }; - E8A03DE7276301CC0098D9EA /* YUMIConfectioneryRateAccommodatedRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIConfectioneryRateAccommodatedRegard.h; sourceTree = ""; }; - E8A03DE8276301CC0098D9EA /* YUMIConfectioneryRateAccommodatedRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIConfectioneryRateAccommodatedRegard.m; sourceTree = ""; }; - E8A03DEA276301EF0098D9EA /* YUMIConfectioneryTimberRateRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIConfectioneryTimberRateRegard.h; sourceTree = ""; }; - E8A03DEB276301EF0098D9EA /* YUMIConfectioneryTimberRateRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIConfectioneryTimberRateRegard.m; sourceTree = ""; }; - E8A03DEE276303D40098D9EA /* YUMIConfectioneryTimberRateTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIConfectioneryTimberRateTabulationRegardElement.h; sourceTree = ""; }; - E8A03DEF276303D40098D9EA /* YUMIConfectioneryTimberRateTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIConfectioneryTimberRateTabulationRegardElement.m; sourceTree = ""; }; - E8A03DF1276328FC0098D9EA /* ConfectioneryTimberReflectionMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ConfectioneryTimberReflectionMatrix.h; sourceTree = ""; }; - E8A03DF2276328FC0098D9EA /* ConfectioneryTimberReflectionMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ConfectioneryTimberReflectionMatrix.m; sourceTree = ""; }; - E8A03DF42763367F0098D9EA /* YUMIConfectioneryTimberDispossessableRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIConfectioneryTimberDispossessableRegardElement.h; sourceTree = ""; }; - E8A03DF52763367F0098D9EA /* YUMIConfectioneryTimberDispossessableRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIConfectioneryTimberDispossessableRegardElement.m; sourceTree = ""; }; - E8A03DF727634A590098D9EA /* ConfectioneryTimberConsequentMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ConfectioneryTimberConsequentMatrix.h; sourceTree = ""; }; - E8A03DF827634A590098D9EA /* ConfectioneryTimberConsequentMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ConfectioneryTimberConsequentMatrix.m; sourceTree = ""; }; - E8A03DFA276350A60098D9EA /* YUMIConfectioneryTimberPresentRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIConfectioneryTimberPresentRegard.h; sourceTree = ""; }; - E8A03DFB276350A60098D9EA /* YUMIConfectioneryTimberPresentRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIConfectioneryTimberPresentRegard.m; sourceTree = ""; }; - E8A03DFD27635F960098D9EA /* YUMIChamberConfectioneryPresentRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberConfectioneryPresentRegard.h; sourceTree = ""; }; - E8A03DFE27635F960098D9EA /* YUMIChamberConfectioneryPresentRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberConfectioneryPresentRegard.m; sourceTree = ""; }; - E8A1E44C2761F98600B294CA /* YUMIConfectioneryTimberRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIConfectioneryTimberRegardGovernancer.h; sourceTree = ""; }; - E8A1E44D2761F98600B294CA /* YUMIConfectioneryTimberRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIConfectioneryTimberRegardGovernancer.m; sourceTree = ""; }; - E8A1E44F2762082A00B294CA /* Api+CandyTree.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+CandyTree.h"; sourceTree = ""; }; - E8A1E4502762082A00B294CA /* Api+CandyTree.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+CandyTree.m"; sourceTree = ""; }; - E8A1E452276208E500B294CA /* ConfectioneryTimberAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ConfectioneryTimberAbstractMatrix.h; sourceTree = ""; }; - E8A1E453276208E500B294CA /* ConfectioneryTimberAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ConfectioneryTimberAbstractMatrix.m; sourceTree = ""; }; - E8A1E4552762092700B294CA /* YUMIConfectioneryTimberExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIConfectioneryTimberExternalizer.h; sourceTree = ""; }; - E8A1E4562762092700B294CA /* YUMIConfectioneryTimberExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIConfectioneryTimberExternalizer.m; sourceTree = ""; }; - E8A1E4582762095100B294CA /* FBCCandyTreeCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCCandyTreeCeremony.h; sourceTree = ""; }; - E8A1E45927620F4900B294CA /* YUMIChamberHalfTissueRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberHalfTissueRegard.h; sourceTree = ""; }; - E8A1E45A27620F4900B294CA /* YUMIChamberHalfTissueRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberHalfTissueRegard.m; sourceTree = ""; }; - E8A1F792290642500099C952 /* YUMIChamberFurthaerDisportRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberFurthaerDisportRegardGovernancer.h; sourceTree = ""; }; - E8A1F793290642500099C952 /* YUMIChamberFurthaerDisportRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberFurthaerDisportRegardGovernancer.m; sourceTree = ""; }; - E8A1F7952906426B0099C952 /* YUMIChamberFurthaerDisportExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberFurthaerDisportExternalizer.h; sourceTree = ""; }; - E8A1F7962906426B0099C952 /* YUMIChamberFurthaerDisportExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberFurthaerDisportExternalizer.m; sourceTree = ""; }; - E8A1F7982906427D0099C952 /* FBCChamberFurthaerPlayCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCChamberFurthaerPlayCeremony.h; sourceTree = ""; }; - E8A1F79A290644DC0099C952 /* YUMIChamberFurthaerDisportAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberFurthaerDisportAssembletionRegardElement.h; sourceTree = ""; }; - E8A1F79B290644DC0099C952 /* YUMIChamberFurthaerDisportAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberFurthaerDisportAssembletionRegardElement.m; sourceTree = ""; }; - E8A30BE128534A28003B4873 /* YUMIInterlocutionDiscoveryStrangeRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIInterlocutionDiscoveryStrangeRegardGovernancer.h; sourceTree = ""; }; - E8A30BE228534A28003B4873 /* YUMIInterlocutionDiscoveryStrangeRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIInterlocutionDiscoveryStrangeRegardGovernancer.m; sourceTree = ""; }; - E8A30BE628534A63003B4873 /* YUMIInterlocutionDiscoveryStrangeTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIInterlocutionDiscoveryStrangeTabulationRegardElement.h; sourceTree = ""; }; - E8A30BE728534A63003B4873 /* YUMIInterlocutionDiscoveryStrangeTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIInterlocutionDiscoveryStrangeTabulationRegardElement.m; sourceTree = ""; }; - E8A30BE928534A96003B4873 /* YUMIInterlocutionDiscoveryStrangeFiltrateRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIInterlocutionDiscoveryStrangeFiltrateRegard.h; sourceTree = ""; }; - E8A30BEA28534A96003B4873 /* YUMIInterlocutionDiscoveryStrangeFiltrateRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIInterlocutionDiscoveryStrangeFiltrateRegard.m; sourceTree = ""; }; - E8A30BEC28534AB1003B4873 /* YUMIInterlocutionDiscoveryStrangeExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIInterlocutionDiscoveryStrangeExternalizer.h; sourceTree = ""; }; - E8A30BED28534AB1003B4873 /* YUMIInterlocutionDiscoveryStrangeExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIInterlocutionDiscoveryStrangeExternalizer.m; sourceTree = ""; }; - E8A30BF028534B03003B4873 /* FBCInterlocutionDiscoveryStrangeCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCInterlocutionDiscoveryStrangeCeremony.h; sourceTree = ""; }; + E89D60BB271D647A001F8895 /* XPRoomPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPresenter.h; sourceTree = ""; }; + E89D60BC271D647A001F8895 /* XPRoomPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPresenter.m; sourceTree = ""; }; + E89D60BE271D648D001F8895 /* XPRoomProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomProtocol.h; sourceTree = ""; }; + E89D60BF271D64B9001F8895 /* RoomInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomInfoModel.h; sourceTree = ""; }; + E89D60C0271D64B9001F8895 /* RoomInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomInfoModel.m; sourceTree = ""; }; + E89DA66227005931008483C1 /* XPIAPHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPIAPHelper.h; sourceTree = ""; }; + E89DA66327005932008483C1 /* XPIAPHelper.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPIAPHelper.m; sourceTree = ""; }; + E89DA66527006443008483C1 /* RechargeStorage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RechargeStorage.h; sourceTree = ""; }; + E89DA66627006443008483C1 /* RechargeStorage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RechargeStorage.m; sourceTree = ""; }; + E89DA67027008D59008483C1 /* WalletInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WalletInfoModel.h; sourceTree = ""; }; + E89DA67127008D59008483C1 /* WalletInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WalletInfoModel.m; sourceTree = ""; }; + E89DA67327009ACD008483C1 /* XPMineRechargeNavView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineRechargeNavView.h; sourceTree = ""; }; + E89DA67427009ACD008483C1 /* XPMineRechargeNavView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineRechargeNavView.m; sourceTree = ""; }; + E89DCF5228FFEC67001647EC /* XPWishGiftHistoryTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPWishGiftHistoryTableViewCell.h; sourceTree = ""; }; + E89DCF5328FFEC67001647EC /* XPWishGiftHistoryTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPWishGiftHistoryTableViewCell.m; sourceTree = ""; }; + E89DCF5528FFF076001647EC /* XPWishGiftEmptyTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPWishGiftEmptyTableViewCell.h; sourceTree = ""; }; + E89DCF5628FFF076001647EC /* XPWishGiftEmptyTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPWishGiftEmptyTableViewCell.m; sourceTree = ""; }; + E89DCF5828FFF1AD001647EC /* XPWishGiftSectionView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPWishGiftSectionView.h; sourceTree = ""; }; + E89DCF5928FFF1AD001647EC /* XPWishGiftSectionView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPWishGiftSectionView.m; sourceTree = ""; }; + E89DCF5B2900E5EE001647EC /* WishGiftHistoryModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WishGiftHistoryModel.h; sourceTree = ""; }; + E89DCF5C2900E5EE001647EC /* WishGiftHistoryModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WishGiftHistoryModel.m; sourceTree = ""; }; + E89DCF5E2900F4FB001647EC /* XPWishGiftEnterView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPWishGiftEnterView.h; sourceTree = ""; }; + E89DCF5F2900F4FB001647EC /* XPWishGiftEnterView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPWishGiftEnterView.m; sourceTree = ""; }; + E8A03DFD27635F960098D9EA /* XPRoomCandyGiftView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomCandyGiftView.h; sourceTree = ""; }; + E8A03DFE27635F960098D9EA /* XPRoomCandyGiftView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomCandyGiftView.m; sourceTree = ""; }; + E8A1F792290642500099C952 /* XPRoomMorePlayViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMorePlayViewController.h; sourceTree = ""; }; + E8A1F793290642500099C952 /* XPRoomMorePlayViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomMorePlayViewController.m; sourceTree = ""; }; + E8A1F7952906426B0099C952 /* XPRoomMorePlayPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMorePlayPresenter.h; sourceTree = ""; }; + E8A1F7962906426B0099C952 /* XPRoomMorePlayPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomMorePlayPresenter.m; sourceTree = ""; }; + E8A1F7982906427D0099C952 /* XPRoomMorePlayProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMorePlayProtocol.h; sourceTree = ""; }; + E8A1F79A290644DC0099C952 /* XPRoomMorePlayCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMorePlayCollectionViewCell.h; sourceTree = ""; }; + E8A1F79B290644DC0099C952 /* XPRoomMorePlayCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomMorePlayCollectionViewCell.m; sourceTree = ""; }; + E8A30BE128534A28003B4873 /* XPSessionFindNewViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSessionFindNewViewController.h; sourceTree = ""; }; + E8A30BE228534A28003B4873 /* XPSessionFindNewViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSessionFindNewViewController.m; sourceTree = ""; }; + E8A30BE628534A63003B4873 /* XPSessionFindNewTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSessionFindNewTableViewCell.h; sourceTree = ""; }; + E8A30BE728534A63003B4873 /* XPSessionFindNewTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSessionFindNewTableViewCell.m; sourceTree = ""; }; + E8A30BE928534A96003B4873 /* XPSessionFindNewFiltrateView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSessionFindNewFiltrateView.h; sourceTree = ""; }; + E8A30BEA28534A96003B4873 /* XPSessionFindNewFiltrateView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSessionFindNewFiltrateView.m; sourceTree = ""; }; + E8A30BEC28534AB1003B4873 /* XPSessionFindNewPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSessionFindNewPresenter.h; sourceTree = ""; }; + E8A30BED28534AB1003B4873 /* XPSessionFindNewPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSessionFindNewPresenter.m; sourceTree = ""; }; + E8A30BF028534B03003B4873 /* XPSessionFindNewProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSessionFindNewProtocol.h; sourceTree = ""; }; E8A30BF128534B17003B4873 /* Api+FindNew.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+FindNew.h"; sourceTree = ""; }; E8A30BF228534B17003B4873 /* Api+FindNew.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+FindNew.m"; sourceTree = ""; }; - E8A30BF428534B35003B4873 /* DiscoveryStrangeConsumerAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DiscoveryStrangeConsumerAbstractMatrix.h; sourceTree = ""; }; - E8A30BF528534B35003B4873 /* DiscoveryStrangeConsumerAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DiscoveryStrangeConsumerAbstractMatrix.m; sourceTree = ""; }; - E8A30BF728534E48003B4873 /* YUMIInterlocutionDiscoveryStrangeDispossessTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIInterlocutionDiscoveryStrangeDispossessTabulationRegardElement.h; sourceTree = ""; }; - E8A30BF828534E48003B4873 /* YUMIInterlocutionDiscoveryStrangeDispossessTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIInterlocutionDiscoveryStrangeDispossessTabulationRegardElement.m; sourceTree = ""; }; - E8A3538328FD67320014A784 /* PresentFortunatePingbackMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PresentFortunatePingbackMatrix.h; sourceTree = ""; }; - E8A3538428FD67320014A784 /* PresentFortunatePingbackMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PresentFortunatePingbackMatrix.m; sourceTree = ""; }; + E8A30BF428534B35003B4873 /* FindNewUserInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FindNewUserInfoModel.h; sourceTree = ""; }; + E8A30BF528534B35003B4873 /* FindNewUserInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FindNewUserInfoModel.m; sourceTree = ""; }; + E8A30BF728534E48003B4873 /* XPSessionFindNewEmptyTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSessionFindNewEmptyTableViewCell.h; sourceTree = ""; }; + E8A30BF828534E48003B4873 /* XPSessionFindNewEmptyTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSessionFindNewEmptyTableViewCell.m; sourceTree = ""; }; + E8A3538328FD67320014A784 /* GiftLuckyBroadcastModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GiftLuckyBroadcastModel.h; sourceTree = ""; }; + E8A3538428FD67320014A784 /* GiftLuckyBroadcastModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GiftLuckyBroadcastModel.m; sourceTree = ""; }; E8A3538C28FE5CED0014A784 /* Api+WishGift.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+WishGift.h"; sourceTree = ""; }; E8A3538D28FE5CED0014A784 /* Api+WishGift.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+WishGift.m"; sourceTree = ""; }; - E8A3538F28FE5F0F0014A784 /* DesirePresentAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DesirePresentAbstractMatrix.h; sourceTree = ""; }; - E8A3539028FE5F0F0014A784 /* DesirePresentAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DesirePresentAbstractMatrix.m; sourceTree = ""; }; - E8A3539228FE605F0014A784 /* DesireExternalizeConsumerMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DesireExternalizeConsumerMatrix.h; sourceTree = ""; }; - E8A3539328FE605F0014A784 /* DesireExternalizeConsumerMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DesireExternalizeConsumerMatrix.m; sourceTree = ""; }; - E8A3539528FE7C250014A784 /* YUMIDesirePresentExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIDesirePresentExternalizer.h; sourceTree = ""; }; - E8A3539628FE7C250014A784 /* YUMIDesirePresentExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIDesirePresentExternalizer.m; sourceTree = ""; }; - E8A3539828FE7C4F0014A784 /* FBCDesirePresentCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCDesirePresentCeremony.h; sourceTree = ""; }; - E8A3539928FE840A0014A784 /* YUMIDesirePresentRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIDesirePresentRegardGovernancer.h; sourceTree = ""; }; - E8A3539A28FE840A0014A784 /* YUMIDesirePresentRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIDesirePresentRegardGovernancer.m; sourceTree = ""; }; - E8A3539E28FE84670014A784 /* YUMIDesirePresentAbstractRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIDesirePresentAbstractRegard.h; sourceTree = ""; }; - E8A3539F28FE84670014A784 /* YUMIDesirePresentAbstractRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIDesirePresentAbstractRegard.m; sourceTree = ""; }; - E8A353A128FE90F60014A784 /* YUMIDesirePresentCreateRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIDesirePresentCreateRegardGovernancer.h; sourceTree = ""; }; - E8A353A228FE90F60014A784 /* YUMIDesirePresentCreateRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIDesirePresentCreateRegardGovernancer.m; sourceTree = ""; }; - E8A353FF28FEAC5E0014A784 /* YUMIDesirePresentTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIDesirePresentTabulationRegardElement.h; sourceTree = ""; }; - E8A3540028FEAC5E0014A784 /* YUMIDesirePresentTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIDesirePresentTabulationRegardElement.m; sourceTree = ""; }; - E8A3540228FEB7100014A784 /* YUMIDesirePresentHistoryRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIDesirePresentHistoryRegardGovernancer.h; sourceTree = ""; }; - E8A3540328FEB7100014A784 /* YUMIDesirePresentHistoryRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIDesirePresentHistoryRegardGovernancer.m; sourceTree = ""; }; - E8A3540528FEBD460014A784 /* YUMIDesirePresentCreateProvisionRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIDesirePresentCreateProvisionRegardGovernancer.h; sourceTree = ""; }; - E8A3540628FEBD460014A784 /* YUMIDesirePresentCreateProvisionRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIDesirePresentCreateProvisionRegardGovernancer.m; sourceTree = ""; }; - E8A3540828FEC0510014A784 /* YUMIDesirePresentStatementRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIDesirePresentStatementRegard.h; sourceTree = ""; }; - E8A3540928FEC0510014A784 /* YUMIDesirePresentStatementRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIDesirePresentStatementRegard.m; sourceTree = ""; }; + E8A3538F28FE5F0F0014A784 /* WishGiftInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WishGiftInfoModel.h; sourceTree = ""; }; + E8A3539028FE5F0F0014A784 /* WishGiftInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WishGiftInfoModel.m; sourceTree = ""; }; + E8A3539228FE605F0014A784 /* WishGiftUserModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WishGiftUserModel.h; sourceTree = ""; }; + E8A3539328FE605F0014A784 /* WishGiftUserModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WishGiftUserModel.m; sourceTree = ""; }; + E8A3539528FE7C250014A784 /* XPWishGiftPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPWishGiftPresenter.h; sourceTree = ""; }; + E8A3539628FE7C250014A784 /* XPWishGiftPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPWishGiftPresenter.m; sourceTree = ""; }; + E8A3539828FE7C4F0014A784 /* XPWishGiftProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPWishGiftProtocol.h; sourceTree = ""; }; + E8A3539928FE840A0014A784 /* XPWishGiftViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPWishGiftViewController.h; sourceTree = ""; }; + E8A3539A28FE840A0014A784 /* XPWishGiftViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPWishGiftViewController.m; sourceTree = ""; }; + E8A3539E28FE84670014A784 /* XPWishGiftInfoView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPWishGiftInfoView.h; sourceTree = ""; }; + E8A3539F28FE84670014A784 /* XPWishGiftInfoView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPWishGiftInfoView.m; sourceTree = ""; }; + E8A353A128FE90F60014A784 /* XPWishGiftCreateViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPWishGiftCreateViewController.h; sourceTree = ""; }; + E8A353A228FE90F60014A784 /* XPWishGiftCreateViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPWishGiftCreateViewController.m; sourceTree = ""; }; + E8A353FF28FEAC5E0014A784 /* XPWishGiftTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPWishGiftTableViewCell.h; sourceTree = ""; }; + E8A3540028FEAC5E0014A784 /* XPWishGiftTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPWishGiftTableViewCell.m; sourceTree = ""; }; + E8A3540228FEB7100014A784 /* XPWishGiftHistoryViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPWishGiftHistoryViewController.h; sourceTree = ""; }; + E8A3540328FEB7100014A784 /* XPWishGiftHistoryViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPWishGiftHistoryViewController.m; sourceTree = ""; }; + E8A3540528FEBD460014A784 /* XPWishGiftCreateItemViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPWishGiftCreateItemViewController.h; sourceTree = ""; }; + E8A3540628FEBD460014A784 /* XPWishGiftCreateItemViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPWishGiftCreateItemViewController.m; sourceTree = ""; }; + E8A3540828FEC0510014A784 /* XPWishGiftListView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPWishGiftListView.h; sourceTree = ""; }; + E8A3540928FEC0510014A784 /* XPWishGiftListView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPWishGiftListView.m; sourceTree = ""; }; E8A72BBA2A3AFB2F00B2EC07 /* PrefixHeader.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PrefixHeader.pch; sourceTree = ""; }; - E8A73F8528586A6F00FD9CBC /* YUMIPresentWeekSatelliteAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPresentWeekSatelliteAssembletionRegardElement.h; sourceTree = ""; }; - E8A73F8628586A6F00FD9CBC /* YUMIPresentWeekSatelliteAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPresentWeekSatelliteAssembletionRegardElement.m; sourceTree = ""; }; - E8A88D2527E8193400CA8837 /* YUMIChamberCombatChosenConsumerRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCombatChosenConsumerRegard.h; sourceTree = ""; }; - E8A88D2627E8193400CA8837 /* YUMIChamberCombatChosenConsumerRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCombatChosenConsumerRegard.m; sourceTree = ""; }; - E8A88D2827E81C8600CA8837 /* YUMIChamberCombatConsumerAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCombatConsumerAssembletionRegardElement.h; sourceTree = ""; }; - E8A88D2927E81C8600CA8837 /* YUMIChamberCombatConsumerAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCombatConsumerAssembletionRegardElement.m; sourceTree = ""; }; - E8A88D2B27E81E8700CA8837 /* ChamberCombatChooseConsumerMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChamberCombatChooseConsumerMatrix.h; sourceTree = ""; }; - E8A88D2C27E81E8700CA8837 /* ChamberCombatChooseConsumerMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ChamberCombatChooseConsumerMatrix.m; sourceTree = ""; }; - E8A88D2E27E85EEA00CA8837 /* ChamberCombatAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChamberCombatAbstractMatrix.h; sourceTree = ""; }; - E8A88D2F27E85EEA00CA8837 /* ChamberCombatAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ChamberCombatAbstractMatrix.m; sourceTree = ""; }; - E8AA6EED27DF1E6B009B4C2B /* YUMIChamberMotifRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberMotifRegardGovernancer.h; sourceTree = ""; }; - E8AA6EEE27DF1E6B009B4C2B /* YUMIChamberMotifRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberMotifRegardGovernancer.m; sourceTree = ""; }; - E8AA6EF027DF1E97009B4C2B /* YUMIChamberMotifExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberMotifExternalizer.h; sourceTree = ""; }; - E8AA6EF127DF1E97009B4C2B /* YUMIChamberMotifExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberMotifExternalizer.m; sourceTree = ""; }; - E8AA6EF327DF1EB6009B4C2B /* FBCChamberMotifCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCChamberMotifCeremony.h; sourceTree = ""; }; - E8AB630B28ADD8C60023B0D2 /* YUMISeparationMotifAccommodatedRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationMotifAccommodatedRegardGovernancer.h; sourceTree = ""; }; - E8AB630C28ADD8C60023B0D2 /* YUMISeparationMotifAccommodatedRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationMotifAccommodatedRegardGovernancer.m; sourceTree = ""; }; - E8AB630E28ADD92D0023B0D2 /* YUMISeparationsMotifRecommondRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsMotifRecommondRegardGovernancer.h; sourceTree = ""; }; - E8AB630F28ADD92D0023B0D2 /* YUMISeparationsMotifRecommondRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsMotifRecommondRegardGovernancer.m; sourceTree = ""; }; - E8AB631128ADDCF20023B0D2 /* YUMISeparationsMotifIntelligencerRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsMotifIntelligencerRegard.h; sourceTree = ""; }; - E8AB631228ADDCF20023B0D2 /* YUMISeparationsMotifIntelligencerRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsMotifIntelligencerRegard.m; sourceTree = ""; }; - E8AB631428ADE2D20023B0D2 /* YUMISeparationsMotifRecentlyRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsMotifRecentlyRegardGovernancer.h; sourceTree = ""; }; - E8AB631528ADE2D20023B0D2 /* YUMISeparationsMotifRecentlyRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsMotifRecentlyRegardGovernancer.m; sourceTree = ""; }; - E8AB631728ADE2F40023B0D2 /* YUMISeparationsMotifEncourageExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsMotifEncourageExternalizer.h; sourceTree = ""; }; - E8AB631828ADE2F40023B0D2 /* YUMISeparationsMotifEncourageExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsMotifEncourageExternalizer.m; sourceTree = ""; }; - E8AB631A28ADE30E0023B0D2 /* YUMISeparationsMotifRecentlyExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsMotifRecentlyExternalizer.h; sourceTree = ""; }; - E8AB631B28ADE30E0023B0D2 /* YUMISeparationsMotifRecentlyExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsMotifRecentlyExternalizer.m; sourceTree = ""; }; - E8AB632028ADE5720023B0D2 /* FBCSeparationsMotifEncourageCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCSeparationsMotifEncourageCeremony.h; sourceTree = ""; }; - E8AB632128ADE5880023B0D2 /* FBCSeparationsMotifLatestCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCSeparationsMotifLatestCeremony.h; sourceTree = ""; }; - E8AB632228AE10310023B0D2 /* YUMISepartionMotifStatementRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISepartionMotifStatementRegardGovernancer.h; sourceTree = ""; }; - E8AB632328AE10310023B0D2 /* YUMISepartionMotifStatementRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISepartionMotifStatementRegardGovernancer.m; sourceTree = ""; }; - E8AB632528AE13210023B0D2 /* YUMISeparationsMotifStatementExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsMotifStatementExternalizer.h; sourceTree = ""; }; - E8AB632628AE13210023B0D2 /* YUMISeparationsMotifStatementExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsMotifStatementExternalizer.m; sourceTree = ""; }; - E8AB632928AE15070023B0D2 /* FBCSeparationsMotifStatementCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCSeparationsMotifStatementCeremony.h; sourceTree = ""; }; - E8AB632A28AE19600023B0D2 /* YUMISeparationsManeRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsManeRegardGovernancer.h; sourceTree = ""; }; - E8AB632B28AE19600023B0D2 /* YUMISeparationsManeRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsManeRegardGovernancer.m; sourceTree = ""; }; - E8AB632D28AE19DE0023B0D2 /* YUMISeparationManeExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationManeExternalizer.h; sourceTree = ""; }; - E8AB632E28AE19DE0023B0D2 /* YUMISeparationManeExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationManeExternalizer.m; sourceTree = ""; }; - E8AB633028AE19FA0023B0D2 /* FBCSeparationsManeCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCSeparationsManeCeremony.h; sourceTree = ""; }; - E8AB633128AE51470023B0D2 /* YUMIMarchingCaptureRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIMarchingCaptureRegard.h; sourceTree = ""; }; - E8AB633228AE51470023B0D2 /* YUMIMarchingCaptureRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIMarchingCaptureRegard.m; sourceTree = ""; }; - E8AB633428AE54A40023B0D2 /* YUMIMarchingCaptureAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIMarchingCaptureAssembletionRegardElement.h; sourceTree = ""; }; - E8AB633528AE54A40023B0D2 /* YUMIMarchingCaptureAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIMarchingCaptureAssembletionRegardElement.m; sourceTree = ""; }; - E8AC720E26F43955007D6E91 /* UIIndicateConstant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIIndicateConstant.h; sourceTree = ""; }; - E8AC720F26F43955007D6E91 /* UIIndicateConstant.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UIIndicateConstant.m; sourceTree = ""; }; - E8AC721126F46ADD007D6E91 /* YUMIManeInstanllingRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeInstanllingRegardGovernancer.h; sourceTree = ""; }; - E8AC721226F46ADD007D6E91 /* YUMIManeInstanllingRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeInstanllingRegardGovernancer.m; sourceTree = ""; }; - E8AC721426F46B06007D6E91 /* YUMIManeInstanllingTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeInstanllingTabulationRegardElement.h; sourceTree = ""; }; - E8AC721526F46B06007D6E91 /* YUMIManeInstanllingTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeInstanllingTabulationRegardElement.m; sourceTree = ""; }; - E8AC721726F46E0B007D6E91 /* YUMIManeInstanllingProvisionMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeInstanllingProvisionMatrix.h; sourceTree = ""; }; - E8AC721826F46E0B007D6E91 /* YUMIManeInstanllingProvisionMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeInstanllingProvisionMatrix.m; sourceTree = ""; }; - E8AC721A26F4720B007D6E91 /* YUMIManeInstanllingExternalize.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeInstanllingExternalize.h; sourceTree = ""; }; - E8AC721B26F4720B007D6E91 /* YUMIManeInstanllingExternalize.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeInstanllingExternalize.m; sourceTree = ""; }; - E8AC721D26F4723D007D6E91 /* FBCManeInstanllingCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCManeInstanllingCeremony.h; sourceTree = ""; }; - E8AC721F26F47E23007D6E91 /* YUMIManeAboutUsRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeAboutUsRegardGovernancer.h; sourceTree = ""; }; - E8AC722026F47E23007D6E91 /* YUMIManeAboutUsRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeAboutUsRegardGovernancer.m; sourceTree = ""; }; - E8AC722226F47E5E007D6E91 /* YUMIManeFeedbackRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeFeedbackRegardGovernancer.h; sourceTree = ""; }; - E8AC722326F47E5E007D6E91 /* YUMIManeFeedbackRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeFeedbackRegardGovernancer.m; sourceTree = ""; }; - E8AC722526F482A4007D6E91 /* YUMIManeFeedbackExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeFeedbackExternalizer.h; sourceTree = ""; }; - E8AC722626F482A4007D6E91 /* YUMIManeFeedbackExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeFeedbackExternalizer.m; sourceTree = ""; }; - E8AC722826F48889007D6E91 /* FBCManeFeedbackCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCManeFeedbackCeremony.h; sourceTree = ""; }; - E8AC722A26F49580007D6E91 /* YUMIManeNotificaRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeNotificaRegardGovernancer.h; sourceTree = ""; }; - E8AC722B26F49580007D6E91 /* YUMIManeNotificaRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeNotificaRegardGovernancer.m; sourceTree = ""; }; - E8AC722D26F49610007D6E91 /* YUMIManeNotificationProvisionMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeNotificationProvisionMatrix.h; sourceTree = ""; }; - E8AC722E26F49610007D6E91 /* YUMIManeNotificationProvisionMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeNotificationProvisionMatrix.m; sourceTree = ""; }; - E8AC723026F49710007D6E91 /* YUMIManeNotificationTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeNotificationTabulationRegardElement.h; sourceTree = ""; }; - E8AC723126F49710007D6E91 /* YUMIManeNotificationTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeNotificationTabulationRegardElement.m; sourceTree = ""; }; - E8AC723326F49939007D6E91 /* YUMIManeNotificaExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeNotificaExternalizer.h; sourceTree = ""; }; - E8AC723426F49939007D6E91 /* YUMIManeNotificaExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeNotificaExternalizer.m; sourceTree = ""; }; - E8AC723626F49957007D6E91 /* FBCManeNotificaCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCManeNotificaCeremony.h; sourceTree = ""; }; - E8AC723826F49AAE007D6E91 /* YUMIManeNotifyStatus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeNotifyStatus.h; sourceTree = ""; }; - E8AC723926F49AAE007D6E91 /* YUMIManeNotifyStatus.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeNotifyStatus.m; sourceTree = ""; }; - E8AC723B26F4B6AA007D6E91 /* YUMISurmountDilemmaMobileConsequentRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISurmountDilemmaMobileConsequentRegardGovernancer.h; sourceTree = ""; }; - E8AC723C26F4B6AA007D6E91 /* YUMISurmountDilemmaMobileConsequentRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISurmountDilemmaMobileConsequentRegardGovernancer.m; sourceTree = ""; }; - E8AE427127153A3500BEEBB2 /* YUMIChamberImportpriseAccommodatedRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberImportpriseAccommodatedRegard.h; sourceTree = ""; }; - E8AE427227153A3500BEEBB2 /* YUMIChamberImportpriseAccommodatedRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberImportpriseAccommodatedRegard.m; sourceTree = ""; }; - E8AEAED4271412EC0017FCE0 /* YUMIChamberRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberRegardGovernancer.h; sourceTree = ""; }; - E8AEAED5271412EC0017FCE0 /* YUMIChamberRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberRegardGovernancer.m; sourceTree = ""; }; - E8AEAEEB27141AE20017FCE0 /* YUMIChamberBackAccommodatedRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberBackAccommodatedRegard.h; sourceTree = ""; }; - E8AEAEEC27141AE20017FCE0 /* YUMIChamberBackAccommodatedRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberBackAccommodatedRegard.m; sourceTree = ""; }; - E8AEAEEE27141C430017FCE0 /* YUMIChamberParrotAccommodatedRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberParrotAccommodatedRegard.h; sourceTree = ""; }; - E8AEAEEF27141C430017FCE0 /* YUMIChamberParrotAccommodatedRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberParrotAccommodatedRegard.m; sourceTree = ""; }; - E8AEAEF127141C7C0017FCE0 /* YUMIChamberCommunicationAccommodatedRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCommunicationAccommodatedRegard.h; sourceTree = ""; }; - E8AEAEF227141C7C0017FCE0 /* YUMIChamberCommunicationAccommodatedRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCommunicationAccommodatedRegard.m; sourceTree = ""; }; - E8AEAEF727141CA30017FCE0 /* ChamberIntelligencerRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChamberIntelligencerRegard.h; sourceTree = ""; }; - E8AEAEF827141CA30017FCE0 /* ChamberIntelligencerRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ChamberIntelligencerRegard.m; sourceTree = ""; }; - E8AFF7E1298CA1E500FBDE32 /* InterlocutionSpeakHalloComputationMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InterlocutionSpeakHalloComputationMatrix.h; sourceTree = ""; }; - E8AFF7E2298CA1E500FBDE32 /* InterlocutionSpeakHalloComputationMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InterlocutionSpeakHalloComputationMatrix.m; sourceTree = ""; }; - E8AFF7E4298CBB3200FBDE32 /* XPCandyTreeRecordView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPCandyTreeRecordView.h; sourceTree = ""; }; - E8AFF7E5298CBB3200FBDE32 /* XPCandyTreeRecordView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPCandyTreeRecordView.m; sourceTree = ""; }; - E8AFF7E7298CBCCE00FBDE32 /* XPCandyTreeRecordTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPCandyTreeRecordTableViewCell.h; sourceTree = ""; }; - E8AFF7E8298CBCCE00FBDE32 /* XPCandyTreeRecordTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPCandyTreeRecordTableViewCell.m; sourceTree = ""; }; - E8AFF7EA298CE2B700FBDE32 /* CandyTreeGiftModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CandyTreeGiftModel.h; sourceTree = ""; }; - E8AFF7EB298CE2B700FBDE32 /* CandyTreeGiftModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CandyTreeGiftModel.m; sourceTree = ""; }; - E8AFF7ED298CF0DD00FBDE32 /* XPCandyTreeRuleView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPCandyTreeRuleView.h; sourceTree = ""; }; - E8AFF7EE298CF0DD00FBDE32 /* XPCandyTreeRuleView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPCandyTreeRuleView.m; sourceTree = ""; }; - E8AFF7F0298CF29400FBDE32 /* XPCandyTreeRuleTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPCandyTreeRuleTableViewCell.h; sourceTree = ""; }; - E8AFF7F1298CF29400FBDE32 /* XPCandyTreeRuleTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPCandyTreeRuleTableViewCell.m; sourceTree = ""; }; - E8AFF7F4298CF52500FBDE32 /* XPCandyTreeRuleHeaderView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPCandyTreeRuleHeaderView.h; sourceTree = ""; }; - E8AFF7F5298CF52500FBDE32 /* XPCandyTreeRuleHeaderView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPCandyTreeRuleHeaderView.m; sourceTree = ""; }; - E8B3E8072848B871009746AB /* CallforConsumerAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CallforConsumerAbstractMatrix.h; sourceTree = ""; }; - E8B3E8082848B871009746AB /* CallforConsumerAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CallforConsumerAbstractMatrix.m; sourceTree = ""; }; - E8B3E80A2848BA40009746AB /* StrangeConsumerBewelcometoMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StrangeConsumerBewelcometoMatrix.h; sourceTree = ""; }; - E8B3E80B2848BA40009746AB /* StrangeConsumerBewelcometoMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StrangeConsumerBewelcometoMatrix.m; sourceTree = ""; }; - E8B825C026EA00DF009E8E9F /* SurmountValidationCodeExternalize.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SurmountValidationCodeExternalize.h; sourceTree = ""; }; - E8B825C126EA00DF009E8E9F /* SurmountValidationCodeExternalize.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SurmountValidationCodeExternalize.m; sourceTree = ""; }; - E8B825C626EA0995009E8E9F /* SurmountVerifCodeCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SurmountVerifCodeCeremony.h; sourceTree = ""; }; - E8B825C826EA1231009E8E9F /* SurmountValidationCodeRegardGovernancer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SurmountValidationCodeRegardGovernancer.m; sourceTree = ""; }; - E8B825C926EA1231009E8E9F /* SurmountValidationCodeRegardGovernancer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SurmountValidationCodeRegardGovernancer.h; sourceTree = ""; }; + E8A73F8528586A6F00FD9CBC /* XPGiftWeekStarCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftWeekStarCollectionViewCell.h; sourceTree = ""; }; + E8A73F8628586A6F00FD9CBC /* XPGiftWeekStarCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftWeekStarCollectionViewCell.m; sourceTree = ""; }; + E8A88D2527E8193400CA8837 /* XPRoomPKSelectUserView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKSelectUserView.h; sourceTree = ""; }; + E8A88D2627E8193400CA8837 /* XPRoomPKSelectUserView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKSelectUserView.m; sourceTree = ""; }; + E8A88D2827E81C8600CA8837 /* XPRoomPKUserCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKUserCollectionViewCell.h; sourceTree = ""; }; + E8A88D2927E81C8600CA8837 /* XPRoomPKUserCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKUserCollectionViewCell.m; sourceTree = ""; }; + E8A88D2B27E81E8700CA8837 /* RoomPKChooseUserModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomPKChooseUserModel.h; sourceTree = ""; }; + E8A88D2C27E81E8700CA8837 /* RoomPKChooseUserModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomPKChooseUserModel.m; sourceTree = ""; }; + E8A88D2E27E85EEA00CA8837 /* RoomPKInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomPKInfoModel.h; sourceTree = ""; }; + E8A88D2F27E85EEA00CA8837 /* RoomPKInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomPKInfoModel.m; sourceTree = ""; }; + E8AA6EED27DF1E6B009B4C2B /* XPRoomTopicViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomTopicViewController.h; sourceTree = ""; }; + E8AA6EEE27DF1E6B009B4C2B /* XPRoomTopicViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomTopicViewController.m; sourceTree = ""; }; + E8AA6EF027DF1E97009B4C2B /* XPRoomTopicPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomTopicPresenter.h; sourceTree = ""; }; + E8AA6EF127DF1E97009B4C2B /* XPRoomTopicPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomTopicPresenter.m; sourceTree = ""; }; + E8AA6EF327DF1EB6009B4C2B /* XPRoomTopicProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomTopicProtocol.h; sourceTree = ""; }; + E8AB630B28ADD8C60023B0D2 /* XPMonentTopicContainerViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentTopicContainerViewController.h; sourceTree = ""; }; + E8AB630C28ADD8C60023B0D2 /* XPMonentTopicContainerViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentTopicContainerViewController.m; sourceTree = ""; }; + E8AB630E28ADD92D0023B0D2 /* XPMonentsTopicRecommondViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsTopicRecommondViewController.h; sourceTree = ""; }; + E8AB630F28ADD92D0023B0D2 /* XPMonentsTopicRecommondViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsTopicRecommondViewController.m; sourceTree = ""; }; + E8AB631128ADDCF20023B0D2 /* XPMonentsTopicHeaderView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsTopicHeaderView.h; sourceTree = ""; }; + E8AB631228ADDCF20023B0D2 /* XPMonentsTopicHeaderView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsTopicHeaderView.m; sourceTree = ""; }; + E8AB631428ADE2D20023B0D2 /* XPMonentsTopicLatestViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsTopicLatestViewController.h; sourceTree = ""; }; + E8AB631528ADE2D20023B0D2 /* XPMonentsTopicLatestViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsTopicLatestViewController.m; sourceTree = ""; }; + E8AB631728ADE2F40023B0D2 /* XPMonentsTopicRecommendPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsTopicRecommendPresenter.h; sourceTree = ""; }; + E8AB631828ADE2F40023B0D2 /* XPMonentsTopicRecommendPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsTopicRecommendPresenter.m; sourceTree = ""; }; + E8AB631A28ADE30E0023B0D2 /* XPMonentsTopicLatestPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsTopicLatestPresenter.h; sourceTree = ""; }; + E8AB631B28ADE30E0023B0D2 /* XPMonentsTopicLatestPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsTopicLatestPresenter.m; sourceTree = ""; }; + E8AB632028ADE5720023B0D2 /* XPMonentsTopicRecommendProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsTopicRecommendProtocol.h; sourceTree = ""; }; + E8AB632128ADE5880023B0D2 /* XPMonentsTopicLatestProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsTopicLatestProtocol.h; sourceTree = ""; }; + E8AB632228AE10310023B0D2 /* XPMoentsTopicListViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMoentsTopicListViewController.h; sourceTree = ""; }; + E8AB632328AE10310023B0D2 /* XPMoentsTopicListViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMoentsTopicListViewController.m; sourceTree = ""; }; + E8AB632528AE13210023B0D2 /* XPMonentsTopicListPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsTopicListPresenter.h; sourceTree = ""; }; + E8AB632628AE13210023B0D2 /* XPMonentsTopicListPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsTopicListPresenter.m; sourceTree = ""; }; + E8AB632928AE15070023B0D2 /* XPMonentsTopicListProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsTopicListProtocol.h; sourceTree = ""; }; + E8AB632A28AE19600023B0D2 /* XPMonentsMineViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsMineViewController.h; sourceTree = ""; }; + E8AB632B28AE19600023B0D2 /* XPMonentsMineViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsMineViewController.m; sourceTree = ""; }; + E8AB632D28AE19DE0023B0D2 /* XPMonentMinePresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentMinePresenter.h; sourceTree = ""; }; + E8AB632E28AE19DE0023B0D2 /* XPMonentMinePresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentMinePresenter.m; sourceTree = ""; }; + E8AB633028AE19FA0023B0D2 /* XPMonentsMineProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsMineProtocol.h; sourceTree = ""; }; + E8AB633128AE51470023B0D2 /* XPSailingPrizeView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSailingPrizeView.h; sourceTree = ""; }; + E8AB633228AE51470023B0D2 /* XPSailingPrizeView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSailingPrizeView.m; sourceTree = ""; }; + E8AB633428AE54A40023B0D2 /* XPSailingPrizeCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSailingPrizeCollectionViewCell.h; sourceTree = ""; }; + E8AB633528AE54A40023B0D2 /* XPSailingPrizeCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSailingPrizeCollectionViewCell.m; sourceTree = ""; }; + E8AC720E26F43955007D6E91 /* UIImageConstant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIImageConstant.h; sourceTree = ""; }; + E8AC720F26F43955007D6E91 /* UIImageConstant.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UIImageConstant.m; sourceTree = ""; }; + E8AC721126F46ADD007D6E91 /* XPMineSettingViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineSettingViewController.h; sourceTree = ""; }; + E8AC721226F46ADD007D6E91 /* XPMineSettingViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineSettingViewController.m; sourceTree = ""; }; + E8AC721426F46B06007D6E91 /* XPMineSettingTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineSettingTableViewCell.h; sourceTree = ""; }; + E8AC721526F46B06007D6E91 /* XPMineSettingTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineSettingTableViewCell.m; sourceTree = ""; }; + E8AC721726F46E0B007D6E91 /* XPMineSettingItemModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineSettingItemModel.h; sourceTree = ""; }; + E8AC721826F46E0B007D6E91 /* XPMineSettingItemModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineSettingItemModel.m; sourceTree = ""; }; + E8AC721A26F4720B007D6E91 /* XPMineSettingPresent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineSettingPresent.h; sourceTree = ""; }; + E8AC721B26F4720B007D6E91 /* XPMineSettingPresent.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineSettingPresent.m; sourceTree = ""; }; + E8AC721D26F4723D007D6E91 /* XPMineSettingProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineSettingProtocol.h; sourceTree = ""; }; + E8AC721F26F47E23007D6E91 /* XPMineAboutUsViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineAboutUsViewController.h; sourceTree = ""; }; + E8AC722026F47E23007D6E91 /* XPMineAboutUsViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineAboutUsViewController.m; sourceTree = ""; }; + E8AC722226F47E5E007D6E91 /* XPMineFeedbackViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineFeedbackViewController.h; sourceTree = ""; }; + E8AC722326F47E5E007D6E91 /* XPMineFeedbackViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineFeedbackViewController.m; sourceTree = ""; }; + E8AC722526F482A4007D6E91 /* XPMineFeedbackPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineFeedbackPresenter.h; sourceTree = ""; }; + E8AC722626F482A4007D6E91 /* XPMineFeedbackPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineFeedbackPresenter.m; sourceTree = ""; }; + E8AC722826F48889007D6E91 /* XPMineFeedbackProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineFeedbackProtocol.h; sourceTree = ""; }; + E8AC722A26F49580007D6E91 /* XPMineNotificaViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineNotificaViewController.h; sourceTree = ""; }; + E8AC722B26F49580007D6E91 /* XPMineNotificaViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineNotificaViewController.m; sourceTree = ""; }; + E8AC722D26F49610007D6E91 /* XPMineNotificationItemModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineNotificationItemModel.h; sourceTree = ""; }; + E8AC722E26F49610007D6E91 /* XPMineNotificationItemModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineNotificationItemModel.m; sourceTree = ""; }; + E8AC723026F49710007D6E91 /* XPMineNotificationTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineNotificationTableViewCell.h; sourceTree = ""; }; + E8AC723126F49710007D6E91 /* XPMineNotificationTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineNotificationTableViewCell.m; sourceTree = ""; }; + E8AC723326F49939007D6E91 /* XPMineNotificaPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineNotificaPresenter.h; sourceTree = ""; }; + E8AC723426F49939007D6E91 /* XPMineNotificaPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineNotificaPresenter.m; sourceTree = ""; }; + E8AC723626F49957007D6E91 /* XPMineNotificaProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineNotificaProtocol.h; sourceTree = ""; }; + E8AC723826F49AAE007D6E91 /* XPMineNotifyStatus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineNotifyStatus.h; sourceTree = ""; }; + E8AC723926F49AAE007D6E91 /* XPMineNotifyStatus.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineNotifyStatus.m; sourceTree = ""; }; + E8AC723B26F4B6AA007D6E91 /* XPLoginBindPhoneResultViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPLoginBindPhoneResultViewController.h; sourceTree = ""; }; + E8AC723C26F4B6AA007D6E91 /* XPLoginBindPhoneResultViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPLoginBindPhoneResultViewController.m; sourceTree = ""; }; + E8AE427127153A3500BEEBB2 /* XPRoomActivityContainerView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomActivityContainerView.h; sourceTree = ""; }; + E8AE427227153A3500BEEBB2 /* XPRoomActivityContainerView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomActivityContainerView.m; sourceTree = ""; }; + E8AEAED4271412EC0017FCE0 /* XPRoomViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomViewController.h; sourceTree = ""; }; + E8AEAED5271412EC0017FCE0 /* XPRoomViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomViewController.m; sourceTree = ""; }; + E8AEAEEB27141AE20017FCE0 /* XPRoomBackContainerView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomBackContainerView.h; sourceTree = ""; }; + E8AEAEEC27141AE20017FCE0 /* XPRoomBackContainerView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomBackContainerView.m; sourceTree = ""; }; + E8AEAEEE27141C430017FCE0 /* XPRoomMenuContainerView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMenuContainerView.h; sourceTree = ""; }; + E8AEAEEF27141C430017FCE0 /* XPRoomMenuContainerView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomMenuContainerView.m; sourceTree = ""; }; + E8AEAEF127141C7C0017FCE0 /* XPRoomMessageContainerView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMessageContainerView.h; sourceTree = ""; }; + E8AEAEF227141C7C0017FCE0 /* XPRoomMessageContainerView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomMessageContainerView.m; sourceTree = ""; }; + E8AEAEF727141CA30017FCE0 /* RoomHeaderView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomHeaderView.h; sourceTree = ""; }; + E8AEAEF827141CA30017FCE0 /* RoomHeaderView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomHeaderView.m; sourceTree = ""; }; + E8AFF7E1298CA1E500FBDE32 /* SessionSayHelloCountModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SessionSayHelloCountModel.h; sourceTree = ""; }; + E8AFF7E2298CA1E500FBDE32 /* SessionSayHelloCountModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SessionSayHelloCountModel.m; sourceTree = ""; }; + E8B3E8072848B871009746AB /* InviteUserInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InviteUserInfoModel.h; sourceTree = ""; }; + E8B3E8082848B871009746AB /* InviteUserInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InviteUserInfoModel.m; sourceTree = ""; }; + E8B3E80A2848BA40009746AB /* NewUserGreetModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NewUserGreetModel.h; sourceTree = ""; }; + E8B3E80B2848BA40009746AB /* NewUserGreetModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NewUserGreetModel.m; sourceTree = ""; }; + E8B825C026EA00DF009E8E9F /* LoginVerifCodePresent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginVerifCodePresent.h; sourceTree = ""; }; + E8B825C126EA00DF009E8E9F /* LoginVerifCodePresent.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LoginVerifCodePresent.m; sourceTree = ""; }; + E8B825C626EA0995009E8E9F /* LoginVerifCodeProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginVerifCodeProtocol.h; sourceTree = ""; }; + E8B825C826EA1231009E8E9F /* LoginVerifCodeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LoginVerifCodeViewController.m; sourceTree = ""; }; + E8B825C926EA1231009E8E9F /* LoginVerifCodeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoginVerifCodeViewController.h; sourceTree = ""; }; E8B825CB26EA18C8009E8E9F /* DJDKMIMOMColor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DJDKMIMOMColor.h; sourceTree = ""; }; E8B825CC26EA18C8009E8E9F /* DJDKMIMOMColor.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DJDKMIMOMColor.m; sourceTree = ""; }; - E8B846BA26FD7C1200A777FE /* UpwardsloadIndicate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UpwardsloadIndicate.h; sourceTree = ""; }; - E8B846BB26FD7C1200A777FE /* UpwardsloadIndicate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UpwardsloadIndicate.m; sourceTree = ""; }; - E8B846BD26FD827900A777FE /* YUMIManeConsumerAbstractAlbumRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsumerAbstractAlbumRegardGovernancer.h; sourceTree = ""; }; - E8B846BE26FD827900A777FE /* YUMIManeConsumerAbstractAlbumRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsumerAbstractAlbumRegardGovernancer.m; sourceTree = ""; }; - E8B846C026FD82DC00A777FE /* YUMIManeConsumerAbstractAlbumAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsumerAbstractAlbumAssembletionRegardElement.h; sourceTree = ""; }; - E8B846C126FD82DC00A777FE /* YUMIManeConsumerAbstractAlbumAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsumerAbstractAlbumAssembletionRegardElement.m; sourceTree = ""; }; - E8B846C326FDB41A00A777FE /* YUMIManeConsumerAbstractlbumExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsumerAbstractlbumExternalizer.h; sourceTree = ""; }; - E8B846C426FDB41A00A777FE /* YUMIManeConsumerAbstractlbumExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsumerAbstractlbumExternalizer.m; sourceTree = ""; }; - E8B846C626FDB44100A777FE /* FBCManeConsumerAbstractAlbumCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCManeConsumerAbstractAlbumCeremony.h; sourceTree = ""; }; - E8B846C926FDD7CD00A777FE /* YUMIManeReindictRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeReindictRegardGovernancer.h; sourceTree = ""; }; - E8B846CA26FDD7CD00A777FE /* YUMIManeReindictRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeReindictRegardGovernancer.m; sourceTree = ""; }; - E8B846CD26FDD96100A777FE /* YUMIManeRechageIntelligenceRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeRechageIntelligenceRegard.h; sourceTree = ""; }; - E8B846CE26FDD96100A777FE /* YUMIManeRechageIntelligenceRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeRechageIntelligenceRegard.m; sourceTree = ""; }; - E8B846D126FDDBE600A777FE /* YUMIManeReindictTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeReindictTabulationRegardElement.h; sourceTree = ""; }; - E8B846D226FDDBE600A777FE /* YUMIManeReindictTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeReindictTabulationRegardElement.m; sourceTree = ""; }; - E8B846D426FDE01B00A777FE /* YUMIManeReindictExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeReindictExternalizer.h; sourceTree = ""; }; - E8B846D526FDE01B00A777FE /* YUMIManeReindictExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeReindictExternalizer.m; sourceTree = ""; }; - E8B846D726FDE16300A777FE /* FBCManeReindictCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCManeReindictCeremony.h; sourceTree = ""; }; - E8B846DA26FDE24300A777FE /* ReindictStatementMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ReindictStatementMatrix.h; sourceTree = ""; }; - E8B846DB26FDE24300A777FE /* ReindictStatementMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ReindictStatementMatrix.m; sourceTree = ""; }; - E8B9842B28AB77F10022D026 /* YUMISeparationsAnnounceMotifRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsAnnounceMotifRegard.h; sourceTree = ""; }; - E8B9842C28AB77F10022D026 /* YUMISeparationsAnnounceMotifRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsAnnounceMotifRegard.m; sourceTree = ""; }; - E8B9842E28AB90200022D026 /* YUMISepartionMotifStatementRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISepartionMotifStatementRegard.h; sourceTree = ""; }; - E8B9842F28AB90200022D026 /* YUMISepartionMotifStatementRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISepartionMotifStatementRegard.m; sourceTree = ""; }; - E8B9843128ABA2FF0022D026 /* SeparationsPicResAbstract.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SeparationsPicResAbstract.h; sourceTree = ""; }; - E8B9843228ABA2FF0022D026 /* SeparationsPicResAbstract.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SeparationsPicResAbstract.m; sourceTree = ""; }; - E8B9843428ABA8B40022D026 /* YUMISeparationAnnounceSuccessRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationAnnounceSuccessRegard.h; sourceTree = ""; }; - E8B9843528ABA8B40022D026 /* YUMISeparationAnnounceSuccessRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationAnnounceSuccessRegard.m; sourceTree = ""; }; - E8BD0F8628A9E9E400DE050D /* ChamberMarchingCaptureMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChamberMarchingCaptureMatrix.h; sourceTree = ""; }; - E8BD0F8728A9E9E400DE050D /* ChamberMarchingCaptureMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ChamberMarchingCaptureMatrix.m; sourceTree = ""; }; - E8BD0F8928A9EB0A00DE050D /* ChamberMarchingCaptureStatementMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChamberMarchingCaptureStatementMatrix.h; sourceTree = ""; }; - E8BD0F8A28A9EB0A00DE050D /* ChamberMarchingCaptureStatementMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ChamberMarchingCaptureStatementMatrix.m; sourceTree = ""; }; - E8C1CD6427D88EF800376F83 /* YUMIChamberAcceptRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberAcceptRegardGovernancer.h; sourceTree = ""; }; - E8C1CD6527D88EF800376F83 /* YUMIChamberAcceptRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberAcceptRegardGovernancer.m; sourceTree = ""; }; - E8C1CD6827D8937800376F83 /* YUMIChamberAcceptAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberAcceptAssembletionRegardElement.h; sourceTree = ""; }; - E8C1CD6927D8937800376F83 /* YUMIChamberAcceptAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberAcceptAssembletionRegardElement.m; sourceTree = ""; }; - E8C1CD6B27D8938C00376F83 /* YUMIChamberAcceptChampionAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberAcceptChampionAssembletionRegardElement.h; sourceTree = ""; }; - E8C1CD6C27D8938C00376F83 /* YUMIChamberAcceptChampionAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberAcceptChampionAssembletionRegardElement.m; sourceTree = ""; }; - E8C1CD6E27D894B800376F83 /* ChamberAcceptChampionProvisionMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChamberAcceptChampionProvisionMatrix.h; sourceTree = ""; }; - E8C1CD6F27D894B800376F83 /* ChamberAcceptChampionProvisionMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ChamberAcceptChampionProvisionMatrix.m; sourceTree = ""; }; - E8C1CD7127D8A16500376F83 /* YUMIChamberAcceptTool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberAcceptTool.h; sourceTree = ""; }; - E8C1CD7227D8A16500376F83 /* YUMIChamberAcceptTool.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberAcceptTool.m; sourceTree = ""; }; - E8C1CD7427D8AE3D00376F83 /* YUMIChamberAcceptExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberAcceptExternalizer.h; sourceTree = ""; }; - E8C1CD7527D8AE3D00376F83 /* YUMIChamberAcceptExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberAcceptExternalizer.m; sourceTree = ""; }; - E8C1CD7727D8AE5600376F83 /* FBCChamberFaceCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCChamberFaceCeremony.h; sourceTree = ""; }; - E8C1CD7827D8B29E00376F83 /* ChamberAcceptAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChamberAcceptAbstractMatrix.h; sourceTree = ""; }; - E8C1CD7927D8B29E00376F83 /* ChamberAcceptAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ChamberAcceptAbstractMatrix.m; sourceTree = ""; }; - E8C214FF274B76F60079E6BF /* YUMIChamberBrightnessHitRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberBrightnessHitRegard.h; sourceTree = ""; }; - E8C21500274B76F60079E6BF /* YUMIChamberBrightnessHitRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberBrightnessHitRegard.m; sourceTree = ""; }; + E8B846BA26FD7C1200A777FE /* UploadImage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UploadImage.h; sourceTree = ""; }; + E8B846BB26FD7C1200A777FE /* UploadImage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UploadImage.m; sourceTree = ""; }; + E8B846BD26FD827900A777FE /* XPMineUserInfoAlbumViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoAlbumViewController.h; sourceTree = ""; }; + E8B846BE26FD827900A777FE /* XPMineUserInfoAlbumViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoAlbumViewController.m; sourceTree = ""; }; + E8B846C026FD82DC00A777FE /* XPMineUserInfoAlbumCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoAlbumCollectionViewCell.h; sourceTree = ""; }; + E8B846C126FD82DC00A777FE /* XPMineUserInfoAlbumCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoAlbumCollectionViewCell.m; sourceTree = ""; }; + E8B846C326FDB41A00A777FE /* XPMineUserInfolbumPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfolbumPresenter.h; sourceTree = ""; }; + E8B846C426FDB41A00A777FE /* XPMineUserInfolbumPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfolbumPresenter.m; sourceTree = ""; }; + E8B846C626FDB44100A777FE /* XPMineUserInfoAlbumProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoAlbumProtocol.h; sourceTree = ""; }; + E8B846C926FDD7CD00A777FE /* XPMineRechargeViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineRechargeViewController.h; sourceTree = ""; }; + E8B846CA26FDD7CD00A777FE /* XPMineRechargeViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineRechargeViewController.m; sourceTree = ""; }; + E8B846CD26FDD96100A777FE /* XPMineRechageHeadView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineRechageHeadView.h; sourceTree = ""; }; + E8B846CE26FDD96100A777FE /* XPMineRechageHeadView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineRechageHeadView.m; sourceTree = ""; }; + E8B846D126FDDBE600A777FE /* XPMineRechargeTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineRechargeTableViewCell.h; sourceTree = ""; }; + E8B846D226FDDBE600A777FE /* XPMineRechargeTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineRechargeTableViewCell.m; sourceTree = ""; }; + E8B846D426FDE01B00A777FE /* XPMineRechargePresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineRechargePresenter.h; sourceTree = ""; }; + E8B846D526FDE01B00A777FE /* XPMineRechargePresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineRechargePresenter.m; sourceTree = ""; }; + E8B846D726FDE16300A777FE /* XPMineRechargeProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineRechargeProtocol.h; sourceTree = ""; }; + E8B846DA26FDE24300A777FE /* RechargeListModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RechargeListModel.h; sourceTree = ""; }; + E8B846DB26FDE24300A777FE /* RechargeListModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RechargeListModel.m; sourceTree = ""; }; + E8B9842B28AB77F10022D026 /* XPMonentsPublishTopicView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsPublishTopicView.h; sourceTree = ""; }; + E8B9842C28AB77F10022D026 /* XPMonentsPublishTopicView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsPublishTopicView.m; sourceTree = ""; }; + E8B9842E28AB90200022D026 /* XPMoentsTopicListView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMoentsTopicListView.h; sourceTree = ""; }; + E8B9842F28AB90200022D026 /* XPMoentsTopicListView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMoentsTopicListView.m; sourceTree = ""; }; + E8B9843128ABA2FF0022D026 /* MonentsPicResInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MonentsPicResInfo.h; sourceTree = ""; }; + E8B9843228ABA2FF0022D026 /* MonentsPicResInfo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MonentsPicResInfo.m; sourceTree = ""; }; + E8B9843428ABA8B40022D026 /* XPMonentPublishSuccessView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentPublishSuccessView.h; sourceTree = ""; }; + E8B9843528ABA8B40022D026 /* XPMonentPublishSuccessView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentPublishSuccessView.m; sourceTree = ""; }; + E8BD0F8628A9E9E400DE050D /* RoomSailingPrizeModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomSailingPrizeModel.h; sourceTree = ""; }; + E8BD0F8728A9E9E400DE050D /* RoomSailingPrizeModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomSailingPrizeModel.m; sourceTree = ""; }; + E8BD0F8928A9EB0A00DE050D /* RoomSailingPrizeListModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomSailingPrizeListModel.h; sourceTree = ""; }; + E8BD0F8A28A9EB0A00DE050D /* RoomSailingPrizeListModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomSailingPrizeListModel.m; sourceTree = ""; }; + E8C1CD6427D88EF800376F83 /* XPRoomFaceViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomFaceViewController.h; sourceTree = ""; }; + E8C1CD6527D88EF800376F83 /* XPRoomFaceViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomFaceViewController.m; sourceTree = ""; }; + E8C1CD6827D8937800376F83 /* XPRoomFaceCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomFaceCollectionViewCell.h; sourceTree = ""; }; + E8C1CD6927D8937800376F83 /* XPRoomFaceCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomFaceCollectionViewCell.m; sourceTree = ""; }; + E8C1CD6B27D8938C00376F83 /* XPRoomFaceTitleCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomFaceTitleCollectionViewCell.h; sourceTree = ""; }; + E8C1CD6C27D8938C00376F83 /* XPRoomFaceTitleCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomFaceTitleCollectionViewCell.m; sourceTree = ""; }; + E8C1CD6E27D894B800376F83 /* RoomFaceTitleItemModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomFaceTitleItemModel.h; sourceTree = ""; }; + E8C1CD6F27D894B800376F83 /* RoomFaceTitleItemModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomFaceTitleItemModel.m; sourceTree = ""; }; + E8C1CD7127D8A16500376F83 /* XPRoomFaceTool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomFaceTool.h; sourceTree = ""; }; + E8C1CD7227D8A16500376F83 /* XPRoomFaceTool.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomFaceTool.m; sourceTree = ""; }; + E8C1CD7427D8AE3D00376F83 /* XPRoomFacePresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomFacePresenter.h; sourceTree = ""; }; + E8C1CD7527D8AE3D00376F83 /* XPRoomFacePresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomFacePresenter.m; sourceTree = ""; }; + E8C1CD7727D8AE5600376F83 /* XPRoomFaceProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomFaceProtocol.h; sourceTree = ""; }; + E8C1CD7827D8B29E00376F83 /* RoomFaceInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomFaceInfoModel.h; sourceTree = ""; }; + E8C1CD7927D8B29E00376F83 /* RoomFaceInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomFaceInfoModel.m; sourceTree = ""; }; + E8C214FF274B76F60079E6BF /* XPRoomAnimationHitView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomAnimationHitView.h; sourceTree = ""; }; + E8C21500274B76F60079E6BF /* XPRoomAnimationHitView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomAnimationHitView.m; sourceTree = ""; }; E8C6FFC827548120004DC9F0 /* Api+Home.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Api+Home.m"; sourceTree = ""; }; E8C6FFC927548120004DC9F0 /* Api+Home.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Api+Home.h"; sourceTree = ""; }; - E8C6FFDE2754EEF9004DC9F0 /* YUMIResidenceHuntforRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIResidenceHuntforRegardGovernancer.h; sourceTree = ""; }; - E8C6FFDF2754EEF9004DC9F0 /* YUMIResidenceHuntforRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIResidenceHuntforRegardGovernancer.m; sourceTree = ""; }; - E8C6FFE42754FE53004DC9F0 /* YUMIResidenceHuntforExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIResidenceHuntforExternalizer.h; sourceTree = ""; }; - E8C6FFE52754FE53004DC9F0 /* YUMIResidenceHuntforExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIResidenceHuntforExternalizer.m; sourceTree = ""; }; - E8C6FFE72754FE66004DC9F0 /* FBCResidenceHuntforCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCResidenceHuntforCeremony.h; sourceTree = ""; }; - E8CEA03B26EA3DE500644B44 /* SurmountCiphercodeExternalize.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SurmountCiphercodeExternalize.h; sourceTree = ""; }; - E8CEA03C26EA3DE500644B44 /* SurmountCiphercodeExternalize.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SurmountCiphercodeExternalize.m; sourceTree = ""; }; - E8CEA03E26EA3E0200644B44 /* SurmountCiphercodeCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SurmountCiphercodeCeremony.h; sourceTree = ""; }; - E8D34D4528080295009C4835 /* YUMIManeConsumerAtomicRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsumerAtomicRegardGovernancer.h; sourceTree = ""; }; - E8D34D4628080295009C4835 /* YUMIManeConsumerAtomicRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsumerAtomicRegardGovernancer.m; sourceTree = ""; }; - E8D34D4B28080351009C4835 /* YUMIManeAtomicCollectiveTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeAtomicCollectiveTabulationRegardElement.h; sourceTree = ""; }; - E8D34D4C28080351009C4835 /* YUMIManeAtomicCollectiveTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeAtomicCollectiveTabulationRegardElement.m; sourceTree = ""; }; - E8D34D4E28080362009C4835 /* YUMIManeAtomicPresentTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeAtomicPresentTabulationRegardElement.h; sourceTree = ""; }; - E8D34D4F28080362009C4835 /* YUMIManeAtomicPresentTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeAtomicPresentTabulationRegardElement.m; sourceTree = ""; }; - E8D34D5428080393009C4835 /* YUMIManeAtomicPresentAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeAtomicPresentAssembletionRegardElement.h; sourceTree = ""; }; - E8D34D5528080393009C4835 /* YUMIManeAtomicPresentAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeAtomicPresentAssembletionRegardElement.m; sourceTree = ""; }; - E8D34D5828082357009C4835 /* ConsumerPresentRamparatAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ConsumerPresentRamparatAbstractMatrix.h; sourceTree = ""; }; - E8D34D5928082357009C4835 /* ConsumerPresentRamparatAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ConsumerPresentRamparatAbstractMatrix.m; sourceTree = ""; }; - E8D34D5E28082BA5009C4835 /* YUMIManeConsumerAtomicExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsumerAtomicExternalizer.h; sourceTree = ""; }; - E8D34D5F28082BA5009C4835 /* YUMIManeConsumerAtomicExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsumerAtomicExternalizer.m; sourceTree = ""; }; - E8D34D6128082BD4009C4835 /* FBCManeConsumerAtomicCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCManeConsumerAtomicCeremony.h; sourceTree = ""; }; - E8D34D6228084E40009C4835 /* YUMIManeConsumerAbstractPresentRamparatRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsumerAbstractPresentRamparatRegardGovernancer.h; sourceTree = ""; }; - E8D34D6328084E40009C4835 /* YUMIManeConsumerAbstractPresentRamparatRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsumerAbstractPresentRamparatRegardGovernancer.m; sourceTree = ""; }; - E8D34D6528084E88009C4835 /* YUMIManeConsumerAbstractPresentRamparatAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsumerAbstractPresentRamparatAssembletionRegardElement.h; sourceTree = ""; }; - E8D34D6628084E88009C4835 /* YUMIManeConsumerAbstractPresentRamparatAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsumerAbstractPresentRamparatAssembletionRegardElement.m; sourceTree = ""; }; - E8D48248278D1F72003C1D08 /* YUMIThroughoutChamberCombatCallforRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIThroughoutChamberCombatCallforRegard.h; sourceTree = ""; }; - E8D48249278D1F73003C1D08 /* YUMIThroughoutChamberCombatCallforRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIThroughoutChamberCombatCallforRegard.m; sourceTree = ""; }; - E8D4824B278D2CE4003C1D08 /* YUMIThroughoutChamberCombatCallforConsequentRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIThroughoutChamberCombatCallforConsequentRegard.h; sourceTree = ""; }; - E8D4824C278D2CE4003C1D08 /* YUMIThroughoutChamberCombatCallforConsequentRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIThroughoutChamberCombatCallforConsequentRegard.m; sourceTree = ""; }; - E8D4824E278D68BA003C1D08 /* YUMIAcrpssChamberCombatFasciaboardRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIAcrpssChamberCombatFasciaboardRegard.h; sourceTree = ""; }; - E8D4824F278D68BA003C1D08 /* YUMIAcrpssChamberCombatFasciaboardRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIAcrpssChamberCombatFasciaboardRegard.m; sourceTree = ""; }; - E8D48251278D8228003C1D08 /* ThroughoutChamberCombatFasciaboardMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ThroughoutChamberCombatFasciaboardMatrix.h; sourceTree = ""; }; - E8D48252278D8228003C1D08 /* ThroughoutChamberCombatFasciaboardMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ThroughoutChamberCombatFasciaboardMatrix.m; sourceTree = ""; }; - E8D48254278D83AE003C1D08 /* YUMIThroughoutChamberCombatFasciaboardConsumerRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIThroughoutChamberCombatFasciaboardConsumerRegard.h; sourceTree = ""; }; - E8D48255278D83AE003C1D08 /* YUMIThroughoutChamberCombatFasciaboardConsumerRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIThroughoutChamberCombatFasciaboardConsumerRegard.m; sourceTree = ""; }; - E8D4DE422940462C00EC788D /* YUMIPresentTwelveSatellitePingbackRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPresentTwelveSatellitePingbackRegard.h; sourceTree = ""; }; - E8D4DE432940462C00EC788D /* YUMIPresentTwelveSatellitePingbackRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPresentTwelveSatellitePingbackRegard.m; sourceTree = ""; }; - E8D4DE452940473500EC788D /* PresentTwelveSatelliteThresholdMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PresentTwelveSatelliteThresholdMatrix.h; sourceTree = ""; }; - E8D4DE462940473500EC788D /* PresentTwelveSatelliteThresholdMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PresentTwelveSatelliteThresholdMatrix.m; sourceTree = ""; }; - E8D55C9B28113218006935A5 /* CommunicationParrotMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationParrotMatrix.h; sourceTree = ""; }; - E8D55C9C28113218006935A5 /* CommunicationParrotMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationParrotMatrix.m; sourceTree = ""; }; - E8D55C9E281186D6006935A5 /* InterlocutionVocalmusicReflectionRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InterlocutionVocalmusicReflectionRegard.h; sourceTree = ""; }; - E8D55C9F281186D6006935A5 /* InterlocutionVocalmusicReflectionRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InterlocutionVocalmusicReflectionRegard.m; sourceTree = ""; }; - E8D7D749282BA1EC0007D7BD /* YUMISeparationsTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISeparationsTabulationRegardElement.h; sourceTree = ""; }; - E8D7D74A282BA1EC0007D7BD /* YUMISeparationsTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISeparationsTabulationRegardElement.m; sourceTree = ""; }; - E8DAC5AA2858305A00012CFD /* YUMIChamberCommunicationIntumesceRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberCommunicationIntumesceRegard.h; sourceTree = ""; }; - E8DAC5AB2858305A00012CFD /* YUMIChamberCommunicationIntumesceRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberCommunicationIntumesceRegard.m; sourceTree = ""; }; - E8DACCF92766EDC60052092C /* MiecreoscoopePresentStressRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MiecreoscoopePresentStressRegard.h; sourceTree = ""; }; - E8DACCFA2766EDC60052092C /* MiecreoscoopePresentStressRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MiecreoscoopePresentStressRegard.m; sourceTree = ""; }; - E8DACCFC27673F870052092C /* PresentStressAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PresentStressAbstractMatrix.h; sourceTree = ""; }; - E8DACCFD27673F870052092C /* PresentStressAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PresentStressAbstractMatrix.m; sourceTree = ""; }; - E8DBB6FB27B63CE000AA285D /* TraitCompetitionMiecreoscoopeRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TraitCompetitionMiecreoscoopeRegard.h; sourceTree = ""; }; - E8DBB6FC27B63CE000AA285D /* TraitCompetitionMiecreoscoopeRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TraitCompetitionMiecreoscoopeRegard.m; sourceTree = ""; }; - E8DD25D8295583920043C7D5 /* XCombatellegRandomCombatPreadominantRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XCombatellegRandomCombatPreadominantRegard.h; sourceTree = ""; }; - E8DD25D9295583920043C7D5 /* XCombatellegRandomCombatPreadominantRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XCombatellegRandomCombatPreadominantRegard.m; sourceTree = ""; }; - E8DEC990276441AA0078CB70 /* YUMIConfectioneryTimberBrightnessMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIConfectioneryTimberBrightnessMatrix.h; sourceTree = ""; }; - E8DEC991276441AA0078CB70 /* YUMIConfectioneryTimberBrightnessMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIConfectioneryTimberBrightnessMatrix.m; sourceTree = ""; }; - E8DEC99327648FA50078CB70 /* ClientDisposition.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ClientDisposition.h; sourceTree = ""; }; - E8DEC99427648FA50078CB70 /* ClientDisposition.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ClientDisposition.m; sourceTree = ""; }; - E8DEC99C2764A5B60078CB70 /* YUMIChamberFurthaerParrotRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberFurthaerParrotRegardGovernancer.h; sourceTree = ""; }; - E8DEC99D2764A5B60078CB70 /* YUMIChamberFurthaerParrotRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberFurthaerParrotRegardGovernancer.m; sourceTree = ""; }; - E8DEC99F2764A5D20078CB70 /* YUMIChamberFurthaerProvisionMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberFurthaerProvisionMatrix.h; sourceTree = ""; }; - E8DEC9A02764A5D20078CB70 /* YUMIChamberFurthaerProvisionMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberFurthaerProvisionMatrix.m; sourceTree = ""; }; - E8DEC9A22764A6600078CB70 /* YUMIFurthaerParrotExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIFurthaerParrotExternalizer.h; sourceTree = ""; }; - E8DEC9A32764A6600078CB70 /* YUMIFurthaerParrotExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIFurthaerParrotExternalizer.m; sourceTree = ""; }; - E8DEC9A52764A6760078CB70 /* FBCFurthaerMenuCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCFurthaerMenuCeremony.h; sourceTree = ""; }; + E8C6FFDE2754EEF9004DC9F0 /* XPHomeSearchViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPHomeSearchViewController.h; sourceTree = ""; }; + E8C6FFDF2754EEF9004DC9F0 /* XPHomeSearchViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPHomeSearchViewController.m; sourceTree = ""; }; + E8C6FFE42754FE53004DC9F0 /* XPHomeSearchPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPHomeSearchPresenter.h; sourceTree = ""; }; + E8C6FFE52754FE53004DC9F0 /* XPHomeSearchPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPHomeSearchPresenter.m; sourceTree = ""; }; + E8C6FFE72754FE66004DC9F0 /* XPHomeSearchProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPHomeSearchProtocol.h; sourceTree = ""; }; + E8CEA03B26EA3DE500644B44 /* LoginPasswordPresent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginPasswordPresent.h; sourceTree = ""; }; + E8CEA03C26EA3DE500644B44 /* LoginPasswordPresent.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LoginPasswordPresent.m; sourceTree = ""; }; + E8CEA03E26EA3E0200644B44 /* LoginPasswordProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginPasswordProtocol.h; sourceTree = ""; }; + E8D34D4528080295009C4835 /* XPMineUserDataViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserDataViewController.h; sourceTree = ""; }; + E8D34D4628080295009C4835 /* XPMineUserDataViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserDataViewController.m; sourceTree = ""; }; + E8D34D4B28080351009C4835 /* XPMineDataClanTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineDataClanTableViewCell.h; sourceTree = ""; }; + E8D34D4C28080351009C4835 /* XPMineDataClanTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineDataClanTableViewCell.m; sourceTree = ""; }; + E8D34D4E28080362009C4835 /* XPMineDataGiftTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineDataGiftTableViewCell.h; sourceTree = ""; }; + E8D34D4F28080362009C4835 /* XPMineDataGiftTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineDataGiftTableViewCell.m; sourceTree = ""; }; + E8D34D5428080393009C4835 /* XPMineDataGiftCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineDataGiftCollectionViewCell.h; sourceTree = ""; }; + E8D34D5528080393009C4835 /* XPMineDataGiftCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineDataGiftCollectionViewCell.m; sourceTree = ""; }; + E8D34D5828082357009C4835 /* UserGiftWallInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UserGiftWallInfoModel.h; sourceTree = ""; }; + E8D34D5928082357009C4835 /* UserGiftWallInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UserGiftWallInfoModel.m; sourceTree = ""; }; + E8D34D5E28082BA5009C4835 /* XPMineUserDataPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserDataPresenter.h; sourceTree = ""; }; + E8D34D5F28082BA5009C4835 /* XPMineUserDataPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserDataPresenter.m; sourceTree = ""; }; + E8D34D6128082BD4009C4835 /* XPMineUserDataProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserDataProtocol.h; sourceTree = ""; }; + E8D34D6228084E40009C4835 /* XPMineUserInfoGiftWallViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoGiftWallViewController.h; sourceTree = ""; }; + E8D34D6328084E40009C4835 /* XPMineUserInfoGiftWallViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoGiftWallViewController.m; sourceTree = ""; }; + E8D34D6528084E88009C4835 /* XPMineUserInfoGiftWallCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoGiftWallCollectionViewCell.h; sourceTree = ""; }; + E8D34D6628084E88009C4835 /* XPMineUserInfoGiftWallCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoGiftWallCollectionViewCell.m; sourceTree = ""; }; + E8D48248278D1F72003C1D08 /* XPAcrossRoomPKInviteView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAcrossRoomPKInviteView.h; sourceTree = ""; }; + E8D48249278D1F73003C1D08 /* XPAcrossRoomPKInviteView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAcrossRoomPKInviteView.m; sourceTree = ""; }; + E8D4824B278D2CE4003C1D08 /* XPAcrossRoomPKInviteResultView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAcrossRoomPKInviteResultView.h; sourceTree = ""; }; + E8D4824C278D2CE4003C1D08 /* XPAcrossRoomPKInviteResultView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAcrossRoomPKInviteResultView.m; sourceTree = ""; }; + E8D4824E278D68BA003C1D08 /* XPAcrpssRoomPKPanelView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAcrpssRoomPKPanelView.h; sourceTree = ""; }; + E8D4824F278D68BA003C1D08 /* XPAcrpssRoomPKPanelView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAcrpssRoomPKPanelView.m; sourceTree = ""; }; + E8D48251278D8228003C1D08 /* AcrossRoomPKPanelModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AcrossRoomPKPanelModel.h; sourceTree = ""; }; + E8D48252278D8228003C1D08 /* AcrossRoomPKPanelModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AcrossRoomPKPanelModel.m; sourceTree = ""; }; + E8D48254278D83AE003C1D08 /* XPAcrossRoomPKPanelUserView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAcrossRoomPKPanelUserView.h; sourceTree = ""; }; + E8D48255278D83AE003C1D08 /* XPAcrossRoomPKPanelUserView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAcrossRoomPKPanelUserView.m; sourceTree = ""; }; + E8D4DE422940462C00EC788D /* XPGiftTwelveStarBroadcastView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftTwelveStarBroadcastView.h; sourceTree = ""; }; + E8D4DE432940462C00EC788D /* XPGiftTwelveStarBroadcastView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftTwelveStarBroadcastView.m; sourceTree = ""; }; + E8D4DE452940473500EC788D /* GiftTwelveStarFirstModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GiftTwelveStarFirstModel.h; sourceTree = ""; }; + E8D4DE462940473500EC788D /* GiftTwelveStarFirstModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GiftTwelveStarFirstModel.m; sourceTree = ""; }; + E8D55C9B28113218006935A5 /* MessageMenuModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageMenuModel.h; sourceTree = ""; }; + E8D55C9C28113218006935A5 /* MessageMenuModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageMenuModel.m; sourceTree = ""; }; + E8D55C9E281186D6006935A5 /* SessionAudioRecordView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SessionAudioRecordView.h; sourceTree = ""; }; + E8D55C9F281186D6006935A5 /* SessionAudioRecordView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SessionAudioRecordView.m; sourceTree = ""; }; + E8D7D749282BA1EC0007D7BD /* XPMonentsTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsTableViewCell.h; sourceTree = ""; }; + E8D7D74A282BA1EC0007D7BD /* XPMonentsTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsTableViewCell.m; sourceTree = ""; }; + E8DAC5AA2858305A00012CFD /* XPRoomMessageBubbleView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMessageBubbleView.h; sourceTree = ""; }; + E8DAC5AB2858305A00012CFD /* XPRoomMessageBubbleView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomMessageBubbleView.m; sourceTree = ""; }; + E8DACCF92766EDC60052092C /* MicroGiftValueView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MicroGiftValueView.h; sourceTree = ""; }; + E8DACCFA2766EDC60052092C /* MicroGiftValueView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MicroGiftValueView.m; sourceTree = ""; }; + E8DACCFC27673F870052092C /* GiftValueInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GiftValueInfoModel.h; sourceTree = ""; }; + E8DACCFD27673F870052092C /* GiftValueInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GiftValueInfoModel.m; sourceTree = ""; }; + E8DBB6FB27B63CE000AA285D /* LittleGameMicroView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LittleGameMicroView.h; sourceTree = ""; }; + E8DBB6FC27B63CE000AA285D /* LittleGameMicroView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LittleGameMicroView.m; sourceTree = ""; }; + E8DD25D8295583920043C7D5 /* XPAnchorRandomPKRuleView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorRandomPKRuleView.h; sourceTree = ""; }; + E8DD25D9295583920043C7D5 /* XPAnchorRandomPKRuleView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorRandomPKRuleView.m; sourceTree = ""; }; + E8DEC99327648FA50078CB70 /* ClientConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ClientConfig.h; sourceTree = ""; }; + E8DEC99427648FA50078CB70 /* ClientConfig.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ClientConfig.m; sourceTree = ""; }; + E8DEC99C2764A5B60078CB70 /* XPRoomMoreMenuViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMoreMenuViewController.h; sourceTree = ""; }; + E8DEC99D2764A5B60078CB70 /* XPRoomMoreMenuViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomMoreMenuViewController.m; sourceTree = ""; }; + E8DEC99F2764A5D20078CB70 /* XPRoomMoreItemModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMoreItemModel.h; sourceTree = ""; }; + E8DEC9A02764A5D20078CB70 /* XPRoomMoreItemModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomMoreItemModel.m; sourceTree = ""; }; + E8DEC9A22764A6600078CB70 /* XPMoreMenuPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMoreMenuPresenter.h; sourceTree = ""; }; + E8DEC9A32764A6600078CB70 /* XPMoreMenuPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMoreMenuPresenter.m; sourceTree = ""; }; + E8DEC9A52764A6760078CB70 /* XPMoreMenuProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMoreMenuProtocol.h; sourceTree = ""; }; E8DEC9A62764A68B0078CB70 /* Api+MoreMenu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+MoreMenu.h"; sourceTree = ""; }; E8DEC9A72764A68B0078CB70 /* Api+MoreMenu.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+MoreMenu.m"; sourceTree = ""; }; - E8DEC9AA2764A6CD0078CB70 /* YUMIChamberFurthaerParrotAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberFurthaerParrotAssembletionRegardElement.h; sourceTree = ""; }; - E8DEC9AB2764A6CD0078CB70 /* YUMIChamberFurthaerParrotAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberFurthaerParrotAssembletionRegardElement.m; sourceTree = ""; }; - E8E0DADE285C20E500566A2F /* CommunicationSatisfactionDiscoveryStrangeBewelcometoRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationSatisfactionDiscoveryStrangeBewelcometoRegard.h; sourceTree = ""; }; - E8E0DADF285C20E500566A2F /* CommunicationSatisfactionDiscoveryStrangeBewelcometoRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationSatisfactionDiscoveryStrangeBewelcometoRegard.m; sourceTree = ""; }; - E8E0DAE4285C280E00566A2F /* YUMIInterlocutionDiscoveryStrangePrecautiousRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIInterlocutionDiscoveryStrangePrecautiousRegard.h; sourceTree = ""; }; - E8E0DAE5285C280E00566A2F /* YUMIInterlocutionDiscoveryStrangePrecautiousRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIInterlocutionDiscoveryStrangePrecautiousRegard.m; sourceTree = ""; }; - E8E0DAE7285C2E8C00566A2F /* DiscoveryStrangeBewelcometoCommunicationMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DiscoveryStrangeBewelcometoCommunicationMatrix.h; sourceTree = ""; }; - E8E0DAE8285C2E8C00566A2F /* DiscoveryStrangeBewelcometoCommunicationMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DiscoveryStrangeBewelcometoCommunicationMatrix.m; sourceTree = ""; }; - E8E20BD9281645300033B688 /* InterlocutionAbstractRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InterlocutionAbstractRegardGovernancer.h; sourceTree = ""; }; - E8E20BDA281645300033B688 /* InterlocutionAbstractRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InterlocutionAbstractRegardGovernancer.m; sourceTree = ""; }; - E8E20BDC28164D3A0033B688 /* InterlocutionNevRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InterlocutionNevRegard.h; sourceTree = ""; }; - E8E20BDD28164D3A0033B688 /* InterlocutionNevRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InterlocutionNevRegard.m; sourceTree = ""; }; - E8E20BE0281695800033B688 /* YUMIManeSurmountCiphercodeRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeSurmountCiphercodeRegardGovernancer.h; sourceTree = ""; }; - E8E20BE1281695800033B688 /* YUMIManeSurmountCiphercodeRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeSurmountCiphercodeRegardGovernancer.m; sourceTree = ""; }; - E8E20BE628169BDC0033B688 /* YUMIManeSurmountCiphercodeExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeSurmountCiphercodeExternalizer.h; sourceTree = ""; }; - E8E20BE728169BDC0033B688 /* YUMIManeSurmountCiphercodeExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeSurmountCiphercodeExternalizer.m; sourceTree = ""; }; - E8E20BE928169E410033B688 /* FBCManeSurmountCiphercodeCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCManeSurmountCiphercodeCeremony.h; sourceTree = ""; }; - E8E20BEA2816A5B90033B688 /* YUMIManeBlackStatementRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeBlackStatementRegardGovernancer.h; sourceTree = ""; }; - E8E20BEB2816A5B90033B688 /* YUMIManeBlackStatementRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeBlackStatementRegardGovernancer.m; sourceTree = ""; }; - E8E20BED2816A5FC0033B688 /* YUMIManeBlackStatementTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeBlackStatementTabulationRegardElement.h; sourceTree = ""; }; - E8E20BEE2816A5FC0033B688 /* YUMIManeBlackStatementTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeBlackStatementTabulationRegardElement.m; sourceTree = ""; }; - E8E21A9928B4BD92008F7C9D /* YUMIChamberGraffitiPresentBrightnessRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberGraffitiPresentBrightnessRegard.h; sourceTree = ""; }; - E8E21A9A28B4BD92008F7C9D /* YUMIChamberGraffitiPresentBrightnessRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberGraffitiPresentBrightnessRegard.m; sourceTree = ""; }; - E8E21A9C28B4DFE8008F7C9D /* YUMIMarchingBuyFuelRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIMarchingBuyFuelRegard.h; sourceTree = ""; }; - E8E21A9D28B4DFE8008F7C9D /* YUMIMarchingBuyFuelRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIMarchingBuyFuelRegard.m; sourceTree = ""; }; - E8E70D7526F2F15100F03460 /* YUMIManeRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeRegardGovernancer.h; sourceTree = ""; }; - E8E70D7626F2F15100F03460 /* YUMIManeRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeRegardGovernancer.m; sourceTree = ""; }; - E8E70D7826F2F16600F03460 /* YUMIManeExternalize.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeExternalize.h; sourceTree = ""; }; - E8E70D7926F2F16600F03460 /* YUMIManeExternalize.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeExternalize.m; sourceTree = ""; }; - E8E70D7B26F2F18900F03460 /* FBCManeCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCManeCeremony.h; sourceTree = ""; }; + E8DEC9AA2764A6CD0078CB70 /* XPRoomMoreMenuCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMoreMenuCollectionViewCell.h; sourceTree = ""; }; + E8DEC9AB2764A6CD0078CB70 /* XPRoomMoreMenuCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomMoreMenuCollectionViewCell.m; sourceTree = ""; }; + E8E0DADE285C20E500566A2F /* MessageContentFindNewGreetView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageContentFindNewGreetView.h; sourceTree = ""; }; + E8E0DADF285C20E500566A2F /* MessageContentFindNewGreetView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageContentFindNewGreetView.m; sourceTree = ""; }; + E8E0DAE4285C280E00566A2F /* XPSessionFindNewAlertView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSessionFindNewAlertView.h; sourceTree = ""; }; + E8E0DAE5285C280E00566A2F /* XPSessionFindNewAlertView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSessionFindNewAlertView.m; sourceTree = ""; }; + E8E0DAE7285C2E8C00566A2F /* FindNewGreetMessageModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FindNewGreetMessageModel.h; sourceTree = ""; }; + E8E0DAE8285C2E8C00566A2F /* FindNewGreetMessageModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FindNewGreetMessageModel.m; sourceTree = ""; }; + E8E20BD9281645300033B688 /* SessionInfoViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SessionInfoViewController.h; sourceTree = ""; }; + E8E20BDA281645300033B688 /* SessionInfoViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SessionInfoViewController.m; sourceTree = ""; }; + E8E20BDC28164D3A0033B688 /* SessionNavView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SessionNavView.h; sourceTree = ""; }; + E8E20BDD28164D3A0033B688 /* SessionNavView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SessionNavView.m; sourceTree = ""; }; + E8E20BE0281695800033B688 /* XPMineLoginPasswordViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineLoginPasswordViewController.h; sourceTree = ""; }; + E8E20BE1281695800033B688 /* XPMineLoginPasswordViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineLoginPasswordViewController.m; sourceTree = ""; }; + E8E20BE628169BDC0033B688 /* XPMineLoginPasswordPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineLoginPasswordPresenter.h; sourceTree = ""; }; + E8E20BE728169BDC0033B688 /* XPMineLoginPasswordPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineLoginPasswordPresenter.m; sourceTree = ""; }; + E8E20BE928169E410033B688 /* XPMineLoginPasswordProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineLoginPasswordProtocol.h; sourceTree = ""; }; + E8E20BEA2816A5B90033B688 /* XPMineBlackListViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineBlackListViewController.h; sourceTree = ""; }; + E8E20BEB2816A5B90033B688 /* XPMineBlackListViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineBlackListViewController.m; sourceTree = ""; }; + E8E20BED2816A5FC0033B688 /* XPMineBlackListTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineBlackListTableViewCell.h; sourceTree = ""; }; + E8E20BEE2816A5FC0033B688 /* XPMineBlackListTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineBlackListTableViewCell.m; sourceTree = ""; }; + E8E21A9928B4BD92008F7C9D /* XPRoomGraffitiGiftAnimationView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomGraffitiGiftAnimationView.h; sourceTree = ""; }; + E8E21A9A28B4BD92008F7C9D /* XPRoomGraffitiGiftAnimationView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomGraffitiGiftAnimationView.m; sourceTree = ""; }; + E8E21A9C28B4DFE8008F7C9D /* XPSailingBuyFuelView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSailingBuyFuelView.h; sourceTree = ""; }; + E8E21A9D28B4DFE8008F7C9D /* XPSailingBuyFuelView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSailingBuyFuelView.m; sourceTree = ""; }; + E8E70D7526F2F15100F03460 /* XPMineViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineViewController.h; sourceTree = ""; }; + E8E70D7626F2F15100F03460 /* XPMineViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineViewController.m; sourceTree = ""; }; + E8E70D7826F2F16600F03460 /* XPMinePresent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMinePresent.h; sourceTree = ""; }; + E8E70D7926F2F16600F03460 /* XPMinePresent.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMinePresent.m; sourceTree = ""; }; + E8E70D7B26F2F18900F03460 /* XPMineProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineProtocol.h; sourceTree = ""; }; E8E70D7C26F2F19D00F03460 /* Api+Mine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+Mine.h"; sourceTree = ""; }; E8E70D7D26F2F19D00F03460 /* Api+Mine.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+Mine.m"; sourceTree = ""; }; - E8E70D8126F2F51A00F03460 /* YUMIManeIntelligenceRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeIntelligenceRegard.h; sourceTree = ""; }; - E8E70D8226F2F51A00F03460 /* YUMIManeIntelligenceRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeIntelligenceRegard.m; sourceTree = ""; }; - E8E70D8A26F2F5A500F03460 /* YUMIManeIntelligenceProvisionAssembletionRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeIntelligenceProvisionAssembletionRegardElement.h; sourceTree = ""; }; - E8E70D8B26F2F5A500F03460 /* YUMIManeIntelligenceProvisionAssembletionRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeIntelligenceProvisionAssembletionRegardElement.m; sourceTree = ""; }; - E8E70D9026F2F60C00F03460 /* YUMIManeProvisionMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeProvisionMatrix.h; sourceTree = ""; }; - E8E70D9126F2F60C00F03460 /* YUMIManeProvisionMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeProvisionMatrix.m; sourceTree = ""; }; - E8E7DAE62744F5EF00C631CC /* YUMIPresentStorage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIPresentStorage.h; sourceTree = ""; }; - E8E7DAE72744F5EF00C631CC /* YUMIPresentStorage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIPresentStorage.m; sourceTree = ""; }; - E8E7DAE92745158500C631CC /* YUMIExternalizeConsumerAbstractMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIExternalizeConsumerAbstractMatrix.h; sourceTree = ""; }; - E8E7DAEA2745158500C631CC /* YUMIExternalizeConsumerAbstractMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIExternalizeConsumerAbstractMatrix.m; sourceTree = ""; }; - E8E859E728264F4500EE4857 /* YUMIChamberTransferManualRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberTransferManualRegardGovernancer.h; sourceTree = ""; }; - E8E859E828264F4500EE4857 /* YUMIChamberTransferManualRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberTransferManualRegardGovernancer.m; sourceTree = ""; }; - E8EE827B272B9A2300A17217 /* YUMIChamberDischargeEssayRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberDischargeEssayRegard.h; sourceTree = ""; }; - E8EE827C272B9A2300A17217 /* YUMIChamberDischargeEssayRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberDischargeEssayRegard.m; sourceTree = ""; }; + E8E70D8126F2F51A00F03460 /* XPMineHeadView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineHeadView.h; sourceTree = ""; }; + E8E70D8226F2F51A00F03460 /* XPMineHeadView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineHeadView.m; sourceTree = ""; }; + E8E70D8A26F2F5A500F03460 /* XPMineHeadItemCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineHeadItemCollectionViewCell.h; sourceTree = ""; }; + E8E70D8B26F2F5A500F03460 /* XPMineHeadItemCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineHeadItemCollectionViewCell.m; sourceTree = ""; }; + E8E70D9026F2F60C00F03460 /* XPMineItemModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineItemModel.h; sourceTree = ""; }; + E8E70D9126F2F60C00F03460 /* XPMineItemModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineItemModel.m; sourceTree = ""; }; + E8E7DAE62744F5EF00C631CC /* XPGiftStorage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftStorage.h; sourceTree = ""; }; + E8E7DAE72744F5EF00C631CC /* XPGiftStorage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftStorage.m; sourceTree = ""; }; + E8E7DAE92745158500C631CC /* XPGiftUserInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftUserInfoModel.h; sourceTree = ""; }; + E8E7DAEA2745158500C631CC /* XPGiftUserInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftUserInfoModel.m; sourceTree = ""; }; + E8E859E728264F4500EE4857 /* XPRoomTransferMusicViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomTransferMusicViewController.h; sourceTree = ""; }; + E8E859E828264F4500EE4857 /* XPRoomTransferMusicViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomTransferMusicViewController.m; sourceTree = ""; }; + E8EE827B272B9A2300A17217 /* XPRoomSendTextView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomSendTextView.h; sourceTree = ""; }; + E8EE827C272B9A2300A17217 /* XPRoomSendTextView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomSendTextView.m; sourceTree = ""; }; E8EEB8EB26FC2050007C6EBA /* SDPhotoBrowserConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDPhotoBrowserConfig.h; sourceTree = ""; }; - E8EEB8EC26FC2050007C6EBA /* SDAppearanceBrowser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDAppearanceBrowser.m; sourceTree = ""; }; - E8EEB8ED26FC2050007C6EBA /* SDWaitingRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDWaitingRegard.m; sourceTree = ""; }; - E8EEB8EE26FC2050007C6EBA /* SDBrowserIndicateRegard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDBrowserIndicateRegard.m; sourceTree = ""; }; - E8EEB8EF26FC2050007C6EBA /* SDWaitingRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDWaitingRegard.h; sourceTree = ""; }; - E8EEB8F026FC2050007C6EBA /* SDAppearanceBrowser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDAppearanceBrowser.h; sourceTree = ""; }; - E8EEB8F126FC2050007C6EBA /* SDBrowserIndicateRegard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDBrowserIndicateRegard.h; sourceTree = ""; }; - E8EEB8F526FC2673007C6EBA /* ConsumerAppearance.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ConsumerAppearance.h; sourceTree = ""; }; - E8EEB8F626FC2673007C6EBA /* ConsumerAppearance.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ConsumerAppearance.m; sourceTree = ""; }; - E8EEB8F926FC2874007C6EBA /* YUMIManeConsumerAbstractTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsumerAbstractTabulationRegardElement.h; sourceTree = ""; }; - E8EEB8FA26FC2874007C6EBA /* YUMIManeConsumerAbstractTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsumerAbstractTabulationRegardElement.m; sourceTree = ""; }; - E8EEB8FC26FC2DF8007C6EBA /* YUMIManeConsumerAbstractCustomNevRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsumerAbstractCustomNevRegard.h; sourceTree = ""; }; - E8EEB8FD26FC2DF8007C6EBA /* YUMIManeConsumerAbstractCustomNevRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsumerAbstractCustomNevRegard.m; sourceTree = ""; }; - E8EEB8FF26FC31B6007C6EBA /* YUMIManeConsumerAbstractExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsumerAbstractExternalizer.h; sourceTree = ""; }; - E8EEB90026FC31B6007C6EBA /* YUMIManeConsumerAbstractExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsumerAbstractExternalizer.m; sourceTree = ""; }; - E8EEB90226FC31CE007C6EBA /* FBCManeConsumerAbstractCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCManeConsumerAbstractCeremony.h; sourceTree = ""; }; - E8EEB90426FC5772007C6EBA /* YUMIManeConsumerAbstractCompileRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsumerAbstractCompileRegardGovernancer.h; sourceTree = ""; }; - E8EEB90526FC5772007C6EBA /* YUMIManeConsumerAbstractCompileRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsumerAbstractCompileRegardGovernancer.m; sourceTree = ""; }; - E8EEB90726FC579A007C6EBA /* YUMIManeConsumerAbstractCompileTabulationRegardElement.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsumerAbstractCompileTabulationRegardElement.h; sourceTree = ""; }; - E8EEB90826FC579A007C6EBA /* YUMIManeConsumerAbstractCompileTabulationRegardElement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsumerAbstractCompileTabulationRegardElement.m; sourceTree = ""; }; - E8EEB90A26FC5EBC007C6EBA /* YUMIManeConsumerAbstractCompileMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsumerAbstractCompileMatrix.h; sourceTree = ""; }; - E8EEB90B26FC5EBC007C6EBA /* YUMIManeConsumerAbstractCompileMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsumerAbstractCompileMatrix.m; sourceTree = ""; }; - E8EEB90D26FC6AB8007C6EBA /* YUMIManeConsumerAbstractCompileExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsumerAbstractCompileExternalizer.h; sourceTree = ""; }; - E8EEB90E26FC6AB8007C6EBA /* YUMIManeConsumerAbstractCompileExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsumerAbstractCompileExternalizer.m; sourceTree = ""; }; - E8EEB91026FC6AD3007C6EBA /* FBCManeConsumerAbstractEditCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCManeConsumerAbstractEditCeremony.h; sourceTree = ""; }; - E8EEB91226FC7786007C6EBA /* YUMIManeConsumerAbstractNickRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsumerAbstractNickRegardGovernancer.h; sourceTree = ""; }; - E8EEB91326FC7786007C6EBA /* YUMIManeConsumerAbstractNickRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsumerAbstractNickRegardGovernancer.m; sourceTree = ""; }; - E8EEB91526FC7B35007C6EBA /* YUMIManeConsumerAbstractDesRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsumerAbstractDesRegardGovernancer.h; sourceTree = ""; }; - E8EEB91626FC7B35007C6EBA /* YUMIManeConsumerAbstractDesRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsumerAbstractDesRegardGovernancer.m; sourceTree = ""; }; - E8EEB91B26FC9D58007C6EBA /* YUMIManeConsumerAbstractDateRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeConsumerAbstractDateRegard.h; sourceTree = ""; }; - E8EEB91C26FC9D58007C6EBA /* YUMIManeConsumerAbstractDateRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeConsumerAbstractDateRegard.m; sourceTree = ""; }; - E8F1558B28124D5200EE8C06 /* CommunicationConentVocalmusicRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationConentVocalmusicRegard.h; sourceTree = ""; }; - E8F1558C28124D5200EE8C06 /* CommunicationConentVocalmusicRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationConentVocalmusicRegard.m; sourceTree = ""; }; - E8F1558E28125E2D00EE8C06 /* CommunicationVocalmusicConcentrate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommunicationVocalmusicConcentrate.h; sourceTree = ""; }; - E8F1558F28125E2D00EE8C06 /* CommunicationVocalmusicConcentrate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommunicationVocalmusicConcentrate.m; sourceTree = ""; }; - E8F1559128129EBA00EE8C06 /* SatisfactionSecretaryMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SatisfactionSecretaryMatrix.h; sourceTree = ""; }; - E8F1559228129EBA00EE8C06 /* SatisfactionSecretaryMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SatisfactionSecretaryMatrix.m; sourceTree = ""; }; + E8EEB8EC26FC2050007C6EBA /* SDPhotoBrowser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDPhotoBrowser.m; sourceTree = ""; }; + E8EEB8ED26FC2050007C6EBA /* SDWaitingView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDWaitingView.m; sourceTree = ""; }; + E8EEB8EE26FC2050007C6EBA /* SDBrowserImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDBrowserImageView.m; sourceTree = ""; }; + E8EEB8EF26FC2050007C6EBA /* SDWaitingView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDWaitingView.h; sourceTree = ""; }; + E8EEB8F026FC2050007C6EBA /* SDPhotoBrowser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDPhotoBrowser.h; sourceTree = ""; }; + E8EEB8F126FC2050007C6EBA /* SDBrowserImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDBrowserImageView.h; sourceTree = ""; }; + E8EEB8F526FC2673007C6EBA /* UserPhoto.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UserPhoto.h; sourceTree = ""; }; + E8EEB8F626FC2673007C6EBA /* UserPhoto.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UserPhoto.m; sourceTree = ""; }; + E8EEB8F926FC2874007C6EBA /* XPMineUserInfoTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoTableViewCell.h; sourceTree = ""; }; + E8EEB8FA26FC2874007C6EBA /* XPMineUserInfoTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoTableViewCell.m; sourceTree = ""; }; + E8EEB8FC26FC2DF8007C6EBA /* XPMineUserInfoCustomNavView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoCustomNavView.h; sourceTree = ""; }; + E8EEB8FD26FC2DF8007C6EBA /* XPMineUserInfoCustomNavView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoCustomNavView.m; sourceTree = ""; }; + E8EEB8FF26FC31B6007C6EBA /* XPMineUserInfoPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoPresenter.h; sourceTree = ""; }; + E8EEB90026FC31B6007C6EBA /* XPMineUserInfoPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoPresenter.m; sourceTree = ""; }; + E8EEB90226FC31CE007C6EBA /* XPMineUserInfoProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoProtocol.h; sourceTree = ""; }; + E8EEB90426FC5772007C6EBA /* XPMineUserInfoEditViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoEditViewController.h; sourceTree = ""; }; + E8EEB90526FC5772007C6EBA /* XPMineUserInfoEditViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoEditViewController.m; sourceTree = ""; }; + E8EEB90726FC579A007C6EBA /* XPMineUserInfoEditTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoEditTableViewCell.h; sourceTree = ""; }; + E8EEB90826FC579A007C6EBA /* XPMineUserInfoEditTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoEditTableViewCell.m; sourceTree = ""; }; + E8EEB90A26FC5EBC007C6EBA /* XPMineUserInfoEditModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoEditModel.h; sourceTree = ""; }; + E8EEB90B26FC5EBC007C6EBA /* XPMineUserInfoEditModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoEditModel.m; sourceTree = ""; }; + E8EEB90D26FC6AB8007C6EBA /* XPMineUserInfoEditPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoEditPresenter.h; sourceTree = ""; }; + E8EEB90E26FC6AB8007C6EBA /* XPMineUserInfoEditPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoEditPresenter.m; sourceTree = ""; }; + E8EEB91026FC6AD3007C6EBA /* XPMineUserInfoEditProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoEditProtocol.h; sourceTree = ""; }; + E8EEB91226FC7786007C6EBA /* XPMineUserInfoNickViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoNickViewController.h; sourceTree = ""; }; + E8EEB91326FC7786007C6EBA /* XPMineUserInfoNickViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoNickViewController.m; sourceTree = ""; }; + E8EEB91526FC7B35007C6EBA /* XPMineUserInfoDesViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoDesViewController.h; sourceTree = ""; }; + E8EEB91626FC7B35007C6EBA /* XPMineUserInfoDesViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoDesViewController.m; sourceTree = ""; }; + E8EEB91B26FC9D58007C6EBA /* XPMineUserInfoDateView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoDateView.h; sourceTree = ""; }; + E8EEB91C26FC9D58007C6EBA /* XPMineUserInfoDateView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoDateView.m; sourceTree = ""; }; + E8F1558B28124D5200EE8C06 /* MessageConentAudioView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageConentAudioView.h; sourceTree = ""; }; + E8F1558C28124D5200EE8C06 /* MessageConentAudioView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageConentAudioView.m; sourceTree = ""; }; + E8F1558E28125E2D00EE8C06 /* MessageAudioCenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageAudioCenter.h; sourceTree = ""; }; + E8F1558F28125E2D00EE8C06 /* MessageAudioCenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageAudioCenter.m; sourceTree = ""; }; + E8F1559128129EBA00EE8C06 /* ContentSecretaryModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ContentSecretaryModel.h; sourceTree = ""; }; + E8F1559228129EBA00EE8C06 /* ContentSecretaryModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ContentSecretaryModel.m; sourceTree = ""; }; E8F6135A291E26BD00E12650 /* NSMutableDictionary+Saft.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSMutableDictionary+Saft.h"; sourceTree = ""; }; E8F6135B291E26BD00E12650 /* NSMutableDictionary+Saft.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSMutableDictionary+Saft.m"; sourceTree = ""; }; E8F6135D291E274E00E12650 /* NSArray+Safe.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSArray+Safe.h"; sourceTree = ""; }; E8F6135E291E274E00E12650 /* NSArray+Safe.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSArray+Safe.m"; sourceTree = ""; }; - E8F63CAF298B553500B338BA /* InterlocutionSpeakHalloPrototypeMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InterlocutionSpeakHalloPrototypeMatrix.h; sourceTree = ""; }; - E8F63CB0298B553500B338BA /* InterlocutionSpeakHalloPrototypeMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InterlocutionSpeakHalloPrototypeMatrix.m; sourceTree = ""; }; + E8F63CAF298B553500B338BA /* SessionSayHelloLevelModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SessionSayHelloLevelModel.h; sourceTree = ""; }; + E8F63CB0298B553500B338BA /* SessionSayHelloLevelModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SessionSayHelloLevelModel.m; sourceTree = ""; }; E8F63CB2298B563D00B338BA /* Api+SayHello.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+SayHello.h"; sourceTree = ""; }; E8F63CB3298B563D00B338BA /* Api+SayHello.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+SayHello.m"; sourceTree = ""; }; - E8F63CB5298B566D00B338BA /* YUMIInterlocutionSpeakHalloExternalizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIInterlocutionSpeakHalloExternalizer.h; sourceTree = ""; }; - E8F63CB6298B566D00B338BA /* YUMIInterlocutionSpeakHalloExternalizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIInterlocutionSpeakHalloExternalizer.m; sourceTree = ""; }; - E8F63CB8298B5F3D00B338BA /* FBCInterlocutionSayHelloCeremony.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FBCInterlocutionSayHelloCeremony.h; sourceTree = ""; }; - E8F63CB9298B648300B338BA /* InterlocutionSpeakHalloStatementMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InterlocutionSpeakHalloStatementMatrix.h; sourceTree = ""; }; - E8F63CBA298B648300B338BA /* InterlocutionSpeakHalloStatementMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InterlocutionSpeakHalloStatementMatrix.m; sourceTree = ""; }; - E8F63CBC298BC90700B338BA /* CandyTreeMoreItemModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CandyTreeMoreItemModel.h; sourceTree = ""; }; - E8F63CBD298BC90700B338BA /* CandyTreeMoreItemModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CandyTreeMoreItemModel.m; sourceTree = ""; }; - E8F65C1D286998C9009BB5B9 /* YUMIManeParaticipationRegardGovernancer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIManeParaticipationRegardGovernancer.h; sourceTree = ""; }; - E8F65C1E286998C9009BB5B9 /* YUMIManeParaticipationRegardGovernancer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIManeParaticipationRegardGovernancer.m; sourceTree = ""; }; - E8F65C202869A36F009BB5B9 /* SatisfactionParaticipationSeparationsMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SatisfactionParaticipationSeparationsMatrix.h; sourceTree = ""; }; - E8F65C212869A36F009BB5B9 /* SatisfactionParaticipationSeparationsMatrix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SatisfactionParaticipationSeparationsMatrix.m; sourceTree = ""; }; - E8FE3C2A2994D0E80006C6C7 /* YUMISwitch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMISwitch.h; sourceTree = ""; }; - E8FE3C2B2994D0E80006C6C7 /* YUMISwitch.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMISwitch.m; sourceTree = ""; }; - F1D8556D2931FC86008C418F /* YUMIChamberYearImportpriseRegard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUMIChamberYearImportpriseRegard.h; sourceTree = ""; }; - F1D8556E2931FC86008C418F /* YUMIChamberYearImportpriseRegard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUMIChamberYearImportpriseRegard.m; sourceTree = ""; }; + E8F63CB5298B566D00B338BA /* XPSessionSayHelloPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSessionSayHelloPresenter.h; sourceTree = ""; }; + E8F63CB6298B566D00B338BA /* XPSessionSayHelloPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSessionSayHelloPresenter.m; sourceTree = ""; }; + E8F63CB8298B5F3D00B338BA /* XPSessionSayHelloProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSessionSayHelloProtocol.h; sourceTree = ""; }; + E8F63CB9298B648300B338BA /* SessionSayHelloListModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SessionSayHelloListModel.h; sourceTree = ""; }; + E8F63CBA298B648300B338BA /* SessionSayHelloListModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SessionSayHelloListModel.m; sourceTree = ""; }; + E8F65C1D286998C9009BB5B9 /* XPMineShareViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineShareViewController.h; sourceTree = ""; }; + E8F65C1E286998C9009BB5B9 /* XPMineShareViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineShareViewController.m; sourceTree = ""; }; + E8F65C202869A36F009BB5B9 /* ContentShareMonentsModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ContentShareMonentsModel.h; sourceTree = ""; }; + E8F65C212869A36F009BB5B9 /* ContentShareMonentsModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ContentShareMonentsModel.m; sourceTree = ""; }; + E8FE3C2A2994D0E80006C6C7 /* XPSwitch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSwitch.h; sourceTree = ""; }; + E8FE3C2B2994D0E80006C6C7 /* XPSwitch.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSwitch.m; sourceTree = ""; }; + F1D8556D2931FC86008C418F /* XPRoomYearActivityView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomYearActivityView.h; sourceTree = ""; }; + F1D8556E2931FC86008C418F /* XPRoomYearActivityView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomYearActivityView.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -3707,10 +3550,10 @@ 1427213529A75C7D00C7C423 /* Base */ = { isa = PBXGroup; children = ( - 189DD54926DE338800AB55B1 /* BaseRegardGovernancer.h */, - 189DD54A26DE338800AB55B1 /* BaseRegardGovernancer.m */, - 9B0E1C5726E77022005D4442 /* BaseNevigationGovernancer.h */, - 9B0E1C5826E77022005D4442 /* BaseNevigationGovernancer.m */, + 189DD54926DE338800AB55B1 /* BaseViewController.h */, + 189DD54A26DE338800AB55B1 /* BaseViewController.m */, + 9B0E1C5726E77022005D4442 /* BaseNavigationController.h */, + 9B0E1C5826E77022005D4442 /* BaseNavigationController.m */, ); path = Base; sourceTree = ""; @@ -3719,10 +3562,10 @@ isa = PBXGroup; children = ( 1427213829A75F6F00C7C423 /* Core */, - 1427217429A75F6F00C7C423 /* MyHyperTextConnection.h */, - 1427213729A75F6F00C7C423 /* MyHyperTextConnection.m */, - 1427217329A75F6F00C7C423 /* SJXCSMIPFacilitater.h */, - 1427218629A75F6F00C7C423 /* SJXCSMIPFacilitater.m */, + 1427217429A75F6F00C7C423 /* MyHTTPConnection.h */, + 1427213729A75F6F00C7C423 /* MyHTTPConnection.m */, + 1427217329A75F6F00C7C423 /* SJXCSMIPHelper.h */, + 1427218629A75F6F00C7C423 /* SJXCSMIPHelper.m */, 1427217529A75F6F00C7C423 /* Vendor */, 1427216029A75F6F00C7C423 /* Web */, ); @@ -3732,21 +3575,21 @@ 1427213829A75F6F00C7C423 /* Core */ = { isa = PBXGroup; children = ( - 1427213929A75F6F00C7C423 /* HyperTextConnection.h */, + 1427213929A75F6F00C7C423 /* HTTPConnection.h */, 1427213A29A75F6F00C7C423 /* HTTPLogging.h */, - 1427213B29A75F6F00C7C423 /* HyperTextCommunication.h */, - 1427213C29A75F6F00C7C423 /* TissueSocket.h */, - 1427213D29A75F6F00C7C423 /* HyperTextAuthenticationRequest.h */, + 1427213B29A75F6F00C7C423 /* HTTPMessage.h */, + 1427213C29A75F6F00C7C423 /* WebSocket.h */, + 1427213D29A75F6F00C7C423 /* HTTPAuthenticationRequest.h */, 1427213E29A75F6F00C7C423 /* Responses */, - 1427214B29A75F6F00C7C423 /* HyperTextServer.h */, - 1427214C29A75F6F00C7C423 /* HyperTextCommunication.m */, - 1427214D29A75F6F00C7C423 /* HyperTextConnection.m */, - 1427214E29A75F6F00C7C423 /* TissueSocket.m */, + 1427214B29A75F6F00C7C423 /* HTTPServer.h */, + 1427214C29A75F6F00C7C423 /* HTTPMessage.m */, + 1427214D29A75F6F00C7C423 /* HTTPConnection.m */, + 1427214E29A75F6F00C7C423 /* WebSocket.m */, 1427214F29A75F6F00C7C423 /* HTTPResponse.h */, 1427215029A75F6F00C7C423 /* Mime */, - 1427215729A75F6F00C7C423 /* HyperTextAuthenticationRequest.m */, + 1427215729A75F6F00C7C423 /* HTTPAuthenticationRequest.m */, 1427215829A75F6F00C7C423 /* Categories */, - 1427215F29A75F6F00C7C423 /* HyperTextServer.m */, + 1427215F29A75F6F00C7C423 /* HTTPServer.m */, ); path = Core; sourceTree = ""; @@ -3754,18 +3597,18 @@ 1427213E29A75F6F00C7C423 /* Responses */ = { isa = PBXGroup; children = ( - 1427213F29A75F6F00C7C423 /* HyperTextAsyncAccurateRespond.h */, - 1427214029A75F6F00C7C423 /* HyperTextErrorRespond.m */, - 1427214129A75F6F00C7C423 /* HyperTextAtomicRespond.m */, - 1427214229A75F6F00C7C423 /* HyperTextDeficitirectRespond.h */, - 1427214329A75F6F00C7C423 /* HyperTextDynamicAccurateRespond.m */, - 1427214429A75F6F00C7C423 /* HyperTextAccurateRespond.m */, - 1427214529A75F6F00C7C423 /* HyperTextAsyncAccurateRespond.m */, - 1427214629A75F6F00C7C423 /* HyperTextDeficitirectRespond.m */, - 1427214729A75F6F00C7C423 /* HyperTextAtomicRespond.h */, - 1427214829A75F6F00C7C423 /* HyperTextErrorRespond.h */, - 1427214929A75F6F00C7C423 /* HyperTextAccurateRespond.h */, - 1427214A29A75F6F00C7C423 /* HyperTextDynamicAccurateRespond.h */, + 1427213F29A75F6F00C7C423 /* HTTPAsyncFileResponse.h */, + 1427214029A75F6F00C7C423 /* HTTPErrorResponse.m */, + 1427214129A75F6F00C7C423 /* HTTPDataResponse.m */, + 1427214229A75F6F00C7C423 /* HTTPRedirectResponse.h */, + 1427214329A75F6F00C7C423 /* HTTPDynamicFileResponse.m */, + 1427214429A75F6F00C7C423 /* HTTPFileResponse.m */, + 1427214529A75F6F00C7C423 /* HTTPAsyncFileResponse.m */, + 1427214629A75F6F00C7C423 /* HTTPRedirectResponse.m */, + 1427214729A75F6F00C7C423 /* HTTPDataResponse.h */, + 1427214829A75F6F00C7C423 /* HTTPErrorResponse.h */, + 1427214929A75F6F00C7C423 /* HTTPFileResponse.h */, + 1427214A29A75F6F00C7C423 /* HTTPDynamicFileResponse.h */, ); path = Responses; sourceTree = ""; @@ -3773,12 +3616,12 @@ 1427215029A75F6F00C7C423 /* Mime */ = { isa = PBXGroup; children = ( - 1427215129A75F6F00C7C423 /* MultipartFormAtomicAnatomiser.h */, - 1427215229A75F6F00C7C423 /* MultipartCommunicationIntelligencer.h */, - 1427215329A75F6F00C7C423 /* MultipartCommunicationIntelligencerField.m */, - 1427215429A75F6F00C7C423 /* MultipartFormAtomicAnatomiser.m */, - 1427215529A75F6F00C7C423 /* MultipartCommunicationIntelligencer.m */, - 1427215629A75F6F00C7C423 /* MultipartCommunicationIntelligencerField.h */, + 1427215129A75F6F00C7C423 /* MultipartFormDataParser.h */, + 1427215229A75F6F00C7C423 /* MultipartMessageHeader.h */, + 1427215329A75F6F00C7C423 /* MultipartMessageHeaderField.m */, + 1427215429A75F6F00C7C423 /* MultipartFormDataParser.m */, + 1427215529A75F6F00C7C423 /* MultipartMessageHeader.m */, + 1427215629A75F6F00C7C423 /* MultipartMessageHeaderField.h */, ); path = Mime; sourceTree = ""; @@ -3819,17 +3662,17 @@ 1427217629A75F6F00C7C423 /* CocoaLumberjack */ = { isa = PBXGroup; children = ( - 1427217729A75F6F00C7C423 /* BWGMKJYlumbes.m */, - 1427217829A75F6F00C7C423 /* BWGLumber.h */, - 1427217929A75F6F00C7C423 /* BWGAbstractAtomicbaselumbes.h */, - 1427217A29A75F6F00C7C423 /* BWGASLlumbes.m */, - 1427217B29A75F6F00C7C423 /* BWGAccuratelumbes.h */, + 1427217729A75F6F00C7C423 /* DDTTYLogger.m */, + 1427217829A75F6F00C7C423 /* DDLog.h */, + 1427217929A75F6F00C7C423 /* DDAbstractDatabaseLogger.h */, + 1427217A29A75F6F00C7C423 /* DDASLLogger.m */, + 1427217B29A75F6F00C7C423 /* DDFileLogger.h */, 1427217C29A75F6F00C7C423 /* Extensions */, - 1427218129A75F6F00C7C423 /* BWGLumber.m */, - 1427218229A75F6F00C7C423 /* BWGMKJYlumbes.h */, - 1427218329A75F6F00C7C423 /* BWGAbstractAtomicbaselumbes.m */, - 1427218429A75F6F00C7C423 /* BWGAccuratelumbes.m */, - 1427218529A75F6F00C7C423 /* BWGASLlumbes.h */, + 1427218129A75F6F00C7C423 /* DDLog.m */, + 1427218229A75F6F00C7C423 /* DDTTYLogger.h */, + 1427218329A75F6F00C7C423 /* DDAbstractDatabaseLogger.m */, + 1427218429A75F6F00C7C423 /* DDFileLogger.m */, + 1427218529A75F6F00C7C423 /* DDASLLogger.h */, ); path = CocoaLumberjack; sourceTree = ""; @@ -3838,9 +3681,9 @@ isa = PBXGroup; children = ( 1427217D29A75F6F00C7C423 /* ContextFilterLogFormatter.h */, - 1427217E29A75F6F00C7C423 /* DispatchMHTueueLumberInitialiser.h */, + 1427217E29A75F6F00C7C423 /* DispatchQueueLogFormatter.h */, 1427217F29A75F6F00C7C423 /* ContextFilterLogFormatter.m */, - 1427218029A75F6F00C7C423 /* DispatchMHTueueLumberInitialiser.m */, + 1427218029A75F6F00C7C423 /* DispatchQueueLogFormatter.m */, ); path = Extensions; sourceTree = ""; @@ -3848,10 +3691,10 @@ 14D8767E29A750A300E1DD7F /* YMWeb */ = { isa = PBXGroup; children = ( - E80E09AD2A41336500CD2BE7 /* YUMITissueRegardNevRegard.h */, - E80E09AC2A41336500CD2BE7 /* YUMITissueRegardNevRegard.m */, - 18E7B33026F317A20064BC9B /* YUMITissueRegardGovernancer.h */, - 18E7B33126F317A20064BC9B /* YUMITissueRegardGovernancer.m */, + E80E09AD2A41336500CD2BE7 /* XPWebViewNavView.h */, + E80E09AC2A41336500CD2BE7 /* XPWebViewNavView.m */, + 18E7B33026F317A20064BC9B /* XPWebViewController.h */, + 18E7B33126F317A20064BC9B /* XPWebViewController.m */, ); path = YMWeb; sourceTree = ""; @@ -3859,12 +3702,12 @@ 14D8768029A751A100E1DD7F /* Config */ = { isa = PBXGroup; children = ( - E8DEC99327648FA50078CB70 /* ClientDisposition.h */, - E8DEC99427648FA50078CB70 /* ClientDisposition.m */, - E875FA8527D619820086ED04 /* ClientAtomicMatrix.h */, - E875FA8627D619820086ED04 /* ClientAtomicMatrix.m */, - 9BA812D028BF145700783EA7 /* ClientDeficitSheatheMatrix.h */, - 9BA812D128BF145700783EA7 /* ClientDeficitSheatheMatrix.m */, + E8DEC99327648FA50078CB70 /* ClientConfig.h */, + E8DEC99427648FA50078CB70 /* ClientConfig.m */, + E875FA8527D619820086ED04 /* ClientDataModel.h */, + E875FA8627D619820086ED04 /* ClientDataModel.m */, + 9BA812D028BF145700783EA7 /* ClientRedPacketModel.h */, + 9BA812D128BF145700783EA7 /* ClientRedPacketModel.m */, ); path = Config; sourceTree = ""; @@ -3880,8 +3723,8 @@ 14D8768429A752B500E1DD7F /* Network */ = { isa = PBXGroup; children = ( - 189DD6FD26E20E5900AB55B1 /* HttpRequestFacilitater.h */, - 189DD6FE26E20E5900AB55B1 /* HttpRequestFacilitater.m */, + 189DD6FD26E20E5900AB55B1 /* HttpRequestHelper.h */, + 189DD6FE26E20E5900AB55B1 /* HttpRequestHelper.m */, ); path = Network; sourceTree = ""; @@ -3890,22 +3733,22 @@ isa = PBXGroup; children = ( E896A9932A49F8A20010FE65 /* login_vapbg.mp4 */, - 14DCAD0F299B946E00A7DD31 /* YUMISurmountBaseRegardGovernancer.h */, - 14DCAD10299B946E00A7DD31 /* YUMISurmountBaseRegardGovernancer.m */, - 14B880DF299A1799005FCA1B /* YUMISurmountRegardGovernancer.h */, - 14B880E0299A1799005FCA1B /* YUMISurmountRegardGovernancer.m */, - 14B880E5299A4B62005FCA1B /* YUMISurmountMobileRegardGovernancer.h */, - 14B880E6299A4B62005FCA1B /* YUMISurmountMobileRegardGovernancer.m */, - 14DCAD06299B36A500A7DD31 /* YUMISurmountPwordRegardGovernancer.h */, - 14DCAD07299B36A500A7DD31 /* YUMISurmountPwordRegardGovernancer.m */, - 14DCAD0C299B6AD900A7DD31 /* YUMIForgetPwordRegardGovernancer.h */, - 14DCAD0D299B6AD900A7DD31 /* YUMIForgetPwordRegardGovernancer.m */, - 14DCAD09299B5D3A00A7DD31 /* YUMISurmountIntrojectionRegard.h */, - 14DCAD0A299B5D3A00A7DD31 /* YUMISurmountIntrojectionRegard.m */, - E818DD1A2A4896EE00F163F7 /* YUMISurmountAraeRegardGovernancer.h */, - E818DD1B2A4896EE00F163F7 /* YUMISurmountAraeRegardGovernancer.m */, - E818DD202A48977F00F163F7 /* YUMISurmountAreaTabulationRegardElement.h */, - E818DD212A48977F00F163F7 /* YUMISurmountAreaTabulationRegardElement.m */, + 14DCAD0F299B946E00A7DD31 /* XPLoginBaseViewController.h */, + 14DCAD10299B946E00A7DD31 /* XPLoginBaseViewController.m */, + 14B880DF299A1799005FCA1B /* XPLoginViewController.h */, + 14B880E0299A1799005FCA1B /* XPLoginViewController.m */, + 14B880E5299A4B62005FCA1B /* XPLoginPhoneViewController.h */, + 14B880E6299A4B62005FCA1B /* XPLoginPhoneViewController.m */, + 14DCAD06299B36A500A7DD31 /* XPLoginPwdViewController.h */, + 14DCAD07299B36A500A7DD31 /* XPLoginPwdViewController.m */, + 14DCAD0C299B6AD900A7DD31 /* XPForgetPwdViewController.h */, + 14DCAD0D299B6AD900A7DD31 /* XPForgetPwdViewController.m */, + 14DCAD09299B5D3A00A7DD31 /* XPLoginInputView.h */, + 14DCAD0A299B5D3A00A7DD31 /* XPLoginInputView.m */, + E818DD1A2A4896EE00F163F7 /* XPLoginAraeViewController.h */, + E818DD1B2A4896EE00F163F7 /* XPLoginAraeViewController.m */, + E818DD202A48977F00F163F7 /* XPLoginAreaTableViewCell.h */, + E818DD212A48977F00F163F7 /* XPLoginAreaTableViewCell.m */, ); path = NewLogin; sourceTree = ""; @@ -3915,8 +3758,8 @@ children = ( 180116FB279E8CCE00F2CBC0 /* NVDate.h */, 180116FA279E8CCE00F2CBC0 /* NVDate.m */, - 180116F7279E8C4C00F2CBC0 /* PLIntratemporalUtil.h */, - 180116F8279E8C4C00F2CBC0 /* PLIntratemporalUtil.m */, + 180116F7279E8C4C00F2CBC0 /* PLTimeUtil.h */, + 180116F8279E8C4C00F2CBC0 /* PLTimeUtil.m */, E8555159280559FE005F293F /* NSDate+DateUtils.h */, E855515A280559FE005F293F /* NSDate+DateUtils.m */, ); @@ -3926,9 +3769,9 @@ 18486210271EA9A5005FC5DC /* YMRTC */ = { isa = PBXGroup; children = ( - 18486211271EA9DA005FC5DC /* RealtimackExecutive.h */, - 18486212271EA9DA005FC5DC /* RealtimackExecutive.m */, - 18486214271EAA03005FC5DC /* RtcRepresendtation.h */, + 18486211271EA9DA005FC5DC /* RtcManager.h */, + 18486212271EA9DA005FC5DC /* RtcManager.m */, + 18486214271EAA03005FC5DC /* RtcDelegate.h */, 1848623627200FDE005FC5DC /* RtcImpl */, 184862C927213FC7005FC5DC /* Library */, ); @@ -3938,16 +3781,16 @@ 1848623627200FDE005FC5DC /* RtcImpl */ = { isa = PBXGroup; children = ( - 18486215271EAB8C005FC5DC /* BaseRealtimackConnector.h */, - 18486216271EAB8C005FC5DC /* BaseRealtimackConnector.m */, - 18486233271EB794005FC5DC /* AgoraRealtimackConnector.h */, - 18486234271EB794005FC5DC /* AgoraRealtimackConnector.m */, - 184862CD27213FD7005FC5DC /* ZegoRealtimackConnector.h */, - 184862CC27213FD7005FC5DC /* ZegoRealtimackConnector.m */, - 18F40438275E20D900A6C548 /* TRTCRealtimackConnector.h */, - 18F40439275E20D900A6C548 /* TRTCRealtimackConnector.m */, + 18486215271EAB8C005FC5DC /* BaseRtcImpl.h */, + 18486216271EAB8C005FC5DC /* BaseRtcImpl.m */, + 18486233271EB794005FC5DC /* AgoraRtcImpl.h */, + 18486234271EB794005FC5DC /* AgoraRtcImpl.m */, + 184862CD27213FD7005FC5DC /* ZegoRtcImpl.h */, + 184862CC27213FD7005FC5DC /* ZegoRtcImpl.m */, + 18F40438275E20D900A6C548 /* TRTCRtcImpl.h */, + 18F40439275E20D900A6C548 /* TRTCRtcImpl.m */, E81D587B271FBC3B003063FE /* RtcInterface.h */, - 9BB865B4272076140029CDE0 /* RtcImplRepresendtation.h */, + 9BB865B4272076140029CDE0 /* RtcImplDelegate.h */, ); path = RtcImpl; sourceTree = ""; @@ -3960,31 +3803,31 @@ path = Library; sourceTree = ""; }; - 186A532B26FC6ED900D67B2C /* MKJPopup */ = { + 186A532B26FC6ED900D67B2C /* TTPopup */ = { isa = PBXGroup; children = ( - 186A533A26FC6ED900D67B2C /* MKJPopup.h */, - 186A532C26FC6ED900D67B2C /* MKJPopup.m */, + 186A533A26FC6ED900D67B2C /* TTPopup.h */, + 186A532C26FC6ED900D67B2C /* TTPopup.m */, 186A532D26FC6ED900D67B2C /* Config */, 186A533626FC6ED900D67B2C /* Manager */, 186A533B26FC6ED900D67B2C /* View */, 186A534026FC6ED900D67B2C /* Service */, 186A534426FC6ED900D67B2C /* Header */, ); - path = MKJPopup; + path = TTPopup; sourceTree = ""; }; 186A532D26FC6ED900D67B2C /* Config */ = { isa = PBXGroup; children = ( - 186A533226FC6ED900D67B2C /* MKJPrecautiousDisposition.h */, - 186A532E26FC6ED900D67B2C /* MKJPrecautiousDisposition.m */, - 186A533126FC6ED900D67B2C /* MKJActionSheetDisposition.h */, - 186A533526FC6ED900D67B2C /* MKJActionSheetDisposition.m */, - 186A533026FC6ED900D67B2C /* MKJPrecautiousButtonDisposition.h */, - 186A533326FC6ED900D67B2C /* MKJPrecautiousButtonDisposition.m */, - 186A532F26FC6ED900D67B2C /* MKJPrecautiousCommunicationAttributedDisposition.h */, - 186A533426FC6ED900D67B2C /* MKJPrecautiousCommunicationAttributedDisposition.m */, + 186A533226FC6ED900D67B2C /* TTAlertConfig.h */, + 186A532E26FC6ED900D67B2C /* TTAlertConfig.m */, + 186A533126FC6ED900D67B2C /* TTActionSheetConfig.h */, + 186A533526FC6ED900D67B2C /* TTActionSheetConfig.m */, + 186A533026FC6ED900D67B2C /* TTAlertButtonConfig.h */, + 186A533326FC6ED900D67B2C /* TTAlertButtonConfig.m */, + 186A532F26FC6ED900D67B2C /* TTAlertMessageAttributedConfig.h */, + 186A533426FC6ED900D67B2C /* TTAlertMessageAttributedConfig.m */, ); path = Config; sourceTree = ""; @@ -3992,9 +3835,9 @@ 186A533626FC6ED900D67B2C /* Manager */ = { isa = PBXGroup; children = ( - 186A533726FC6ED900D67B2C /* TTPopupExecutiveServiceCeremony.h */, - 186A533826FC6ED900D67B2C /* MKJPopupExecutiveServing.h */, - 186A533926FC6ED900D67B2C /* MKJPopupExecutiveServing.m */, + 186A533726FC6ED900D67B2C /* TTPopupManagerServiceProtocol.h */, + 186A533826FC6ED900D67B2C /* TTPopupManagerService.h */, + 186A533926FC6ED900D67B2C /* TTPopupManagerService.m */, ); path = Manager; sourceTree = ""; @@ -4002,10 +3845,10 @@ 186A533B26FC6ED900D67B2C /* View */ = { isa = PBXGroup; children = ( - 186A533E26FC6ED900D67B2C /* MKJPrecautiousRegard.h */, - 186A533C26FC6ED900D67B2C /* MKJPrecautiousRegard.m */, - 186A533D26FC6ED900D67B2C /* MKJActionSheetRegard.h */, - 186A533F26FC6ED900D67B2C /* MKJActionSheetRegard.m */, + 186A533E26FC6ED900D67B2C /* TTAlertView.h */, + 186A533C26FC6ED900D67B2C /* TTAlertView.m */, + 186A533D26FC6ED900D67B2C /* TTActionSheetView.h */, + 186A533F26FC6ED900D67B2C /* TTActionSheetView.m */, ); path = View; sourceTree = ""; @@ -4013,9 +3856,9 @@ 186A534026FC6ED900D67B2C /* Service */ = { isa = PBXGroup; children = ( - 186A534326FC6ED900D67B2C /* MKJPopupServing.h */, - 186A534126FC6ED900D67B2C /* MKJPopupServing.m */, - 186A534226FC6ED900D67B2C /* TTPopupServiceCeremony.h */, + 186A534326FC6ED900D67B2C /* TTPopupService.h */, + 186A534126FC6ED900D67B2C /* TTPopupService.m */, + 186A534226FC6ED900D67B2C /* TTPopupServiceProtocol.h */, ); path = Service; sourceTree = ""; @@ -4031,8 +3874,8 @@ 186A536026FC6F2E00D67B2C /* ShareView */ = { isa = PBXGroup; children = ( - 186A536226FC6F2E00D67B2C /* YUMIParaticipationRegard.h */, - 186A536126FC6F2E00D67B2C /* YUMIParaticipationRegard.m */, + 186A536226FC6F2E00D67B2C /* XPShareView.h */, + 186A536126FC6F2E00D67B2C /* XPShareView.m */, 186A536326FC6F2E00D67B2C /* Model */, 186A536626FC6F2E00D67B2C /* View */, ); @@ -4042,10 +3885,10 @@ 186A536326FC6F2E00D67B2C /* Model */ = { isa = PBXGroup; children = ( - E82325E4274CCAFA003A3332 /* YUMIParaticipationAbstractMatrix.h */, - E82325E5274CCAFA003A3332 /* YUMIParaticipationAbstractMatrix.m */, - E82325E7274CE56A003A3332 /* YUMIParaticipationProvision.h */, - E82325E8274CE56A003A3332 /* YUMIParaticipationProvision.m */, + E82325E4274CCAFA003A3332 /* XPShareInfoModel.h */, + E82325E5274CCAFA003A3332 /* XPShareInfoModel.m */, + E82325E7274CE56A003A3332 /* XPShareItem.h */, + E82325E8274CE56A003A3332 /* XPShareItem.m */, ); path = Model; sourceTree = ""; @@ -4053,8 +3896,8 @@ 186A536626FC6F2E00D67B2C /* View */ = { isa = PBXGroup; children = ( - 186A536826FC6F2E00D67B2C /* YUMIParaticipationProvisionElement.h */, - 186A536726FC6F2E00D67B2C /* YUMIParaticipationProvisionElement.m */, + 186A536826FC6F2E00D67B2C /* XPShareItemCell.h */, + 186A536726FC6F2E00D67B2C /* XPShareItemCell.m */, ); path = View; sourceTree = ""; @@ -4093,7 +3936,6 @@ E80E09AF2A41573700CD2BE7 /* GoogleService-Info.plist */, E8729EBA2A3B10C10076D80A /* YuMi.entitlements */, E8729EB92A3B10C10076D80A /* YuMiRelease.entitlements */, - 237D642D2A57F8EE000442C6 /* PICustomClass */, 189DD56C26DF5B5400AB55B1 /* CustomUI */, 189DD5A726DFA09700AB55B1 /* Tools */, 14D8768429A752B500E1DD7F /* Network */, @@ -4127,8 +3969,8 @@ 189DD55326DE382E00AB55B1 /* View */ = { isa = PBXGroup; children = ( - 189DD54E26DE37F900AB55B1 /* MvpRegardGovernancer.h */, - 189DD54F26DE37F900AB55B1 /* MvpRegardGovernancer.m */, + 189DD54E26DE37F900AB55B1 /* MvpViewController.h */, + 189DD54F26DE37F900AB55B1 /* MvpViewController.m */, ); path = View; sourceTree = ""; @@ -4136,8 +3978,8 @@ 189DD55726DE398A00AB55B1 /* Presenter */ = { isa = PBXGroup; children = ( - 189DD55826DE39D200AB55B1 /* BaseMvpExternalizer.h */, - 189DD55926DE39D200AB55B1 /* BaseMvpExternalizer.m */, + 189DD55826DE39D200AB55B1 /* BaseMvpPresenter.h */, + 189DD55926DE39D200AB55B1 /* BaseMvpPresenter.m */, ); path = Presenter; sourceTree = ""; @@ -4145,7 +3987,7 @@ 189DD55D26DE3BA300AB55B1 /* Protocol */ = { isa = PBXGroup; children = ( - 189DD55E26DE3BBE00AB55B1 /* BaseMvpCeremony.h */, + 189DD55E26DE3BBE00AB55B1 /* BaseMvpProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -4155,24 +3997,24 @@ children = ( 14D8767A29A7445C00E1DD7F /* NSObject+AutoCoding.h */, 14D8767B29A7445C00E1DD7F /* NSObject+AutoCoding.m */, - 187EEEDA26E89B32002833B2 /* BaseMatrix.h */, - 187EEEDB26E89B32002833B2 /* BaseMatrix.m */, - 187EEEDF26E89BFB002833B2 /* AccountMatrix.h */, - 187EEEE026E89BFB002833B2 /* AccountMatrix.m */, - 187EEEEF26E89FE8002833B2 /* AccountAbstractStorage.h */, - 187EEEEE26E89FE8002833B2 /* AccountAbstractStorage.m */, - 18E7B31626F097E00064BC9B /* ConsumerAbstractMatrix.h */, - 18E7B31726F097E00064BC9B /* ConsumerAbstractMatrix.m */, - 18E7B31926F0982E0064BC9B /* ConsumerExpand.h */, - 18E7B31A26F0982E0064BC9B /* ConsumerExpand.m */, - 18E7B31C26F0984C0064BC9B /* ConsumerPrototypeVo.h */, - 18E7B31D26F0984C0064BC9B /* ConsumerPrototypeVo.m */, - 18E7B31F26F098650064BC9B /* ConsumerAbstractCommunicationVo.h */, - 18E7B32026F098650064BC9B /* ConsumerAbstractCommunicationVo.m */, - E8EEB8F526FC2673007C6EBA /* ConsumerAppearance.h */, - E8EEB8F626FC2673007C6EBA /* ConsumerAppearance.m */, - 9B2A12DC2783FEDD00CED41B /* ConsumerVipAbstractVo.h */, - 9B2A12DD2783FEDD00CED41B /* ConsumerVipAbstractVo.m */, + 187EEEDA26E89B32002833B2 /* BaseModel.h */, + 187EEEDB26E89B32002833B2 /* BaseModel.m */, + 187EEEDF26E89BFB002833B2 /* AccountModel.h */, + 187EEEE026E89BFB002833B2 /* AccountModel.m */, + 187EEEEF26E89FE8002833B2 /* AccountInfoStorage.h */, + 187EEEEE26E89FE8002833B2 /* AccountInfoStorage.m */, + 18E7B31626F097E00064BC9B /* UserInfoModel.h */, + 18E7B31726F097E00064BC9B /* UserInfoModel.m */, + 18E7B31926F0982E0064BC9B /* UserExpand.h */, + 18E7B31A26F0982E0064BC9B /* UserExpand.m */, + 18E7B31C26F0984C0064BC9B /* UserLevelVo.h */, + 18E7B31D26F0984C0064BC9B /* UserLevelVo.m */, + 18E7B31F26F098650064BC9B /* UserInfoSkillVo.h */, + 18E7B32026F098650064BC9B /* UserInfoSkillVo.m */, + E8EEB8F526FC2673007C6EBA /* UserPhoto.h */, + E8EEB8F626FC2673007C6EBA /* UserPhoto.m */, + 9B2A12DC2783FEDD00CED41B /* UserVipInfoVo.h */, + 9B2A12DD2783FEDD00CED41B /* UserVipInfoVo.m */, ); path = Model; sourceTree = ""; @@ -4227,12 +4069,12 @@ E8AC720A26F435AF007D6E91 /* UIImageView */, E81366F926F0D27A0076364C /* UIButton */, E82109B126F2050D00FC3319 /* UIImage */, - 186A532B26FC6ED900D67B2C /* MKJPopup */, + 186A532B26FC6ED900D67B2C /* TTPopup */, 186A536026FC6F2E00D67B2C /* ShareView */, - 18E7B26826E8D5D60064BC9B /* XCCurrentVCStackExecutive.h */, - 18E7B26726E8D5D60064BC9B /* XCCurrentVCStackExecutive.m */, - 189DD68326E1FDBB00AB55B1 /* XNDJTBWGLoadingTool.h */, - 189DD68226E1FDBB00AB55B1 /* XNDJTBWGLoadingTool.m */, + 18E7B26826E8D5D60064BC9B /* XCCurrentVCStackManager.h */, + 18E7B26726E8D5D60064BC9B /* XCCurrentVCStackManager.m */, + 189DD68326E1FDBB00AB55B1 /* XNDJTDDLoadingTool.h */, + 189DD68226E1FDBB00AB55B1 /* XNDJTDDLoadingTool.m */, E8B825CB26EA18C8009E8E9F /* DJDKMIMOMColor.h */, E8B825CC26EA18C8009E8E9F /* DJDKMIMOMColor.m */, ); @@ -4244,16 +4086,16 @@ children = ( 14DCAD12299B9B0B00A7DD31 /* NewLogin */, E872308A26E89D5100B90D4F /* CustomView */, - E8B825C926EA1231009E8E9F /* SurmountValidationCodeRegardGovernancer.h */, - E8B825C826EA1231009E8E9F /* SurmountValidationCodeRegardGovernancer.m */, - E81366E126F0A1FC0076364C /* SurmountDilemmaMobileRegardGovernancer.h */, - E81366E226F0A1FC0076364C /* SurmountDilemmaMobileRegardGovernancer.m */, - E8AC723B26F4B6AA007D6E91 /* YUMISurmountDilemmaMobileConsequentRegardGovernancer.h */, - E8AC723C26F4B6AA007D6E91 /* YUMISurmountDilemmaMobileConsequentRegardGovernancer.m */, - E81366F126F0B7C80076364C /* SurmountFullAbstractRegardGovernancer.h */, - E81366F226F0B7C80076364C /* SurmountFullAbstractRegardGovernancer.m */, - E824543326F57D6E00BE8163 /* YUMISurmountValidationDilemmaMobileRegardGovernancer.h */, - E824543426F57D6E00BE8163 /* YUMISurmountValidationDilemmaMobileRegardGovernancer.m */, + E8B825C926EA1231009E8E9F /* LoginVerifCodeViewController.h */, + E8B825C826EA1231009E8E9F /* LoginVerifCodeViewController.m */, + E81366E126F0A1FC0076364C /* LoginBindPhoneViewController.h */, + E81366E226F0A1FC0076364C /* LoginBindPhoneViewController.m */, + E8AC723B26F4B6AA007D6E91 /* XPLoginBindPhoneResultViewController.h */, + E8AC723C26F4B6AA007D6E91 /* XPLoginBindPhoneResultViewController.m */, + E81366F126F0B7C80076364C /* LoginFullInfoViewController.h */, + E81366F226F0B7C80076364C /* LoginFullInfoViewController.m */, + E824543326F57D6E00BE8163 /* XPLoginVerifBindPhoneViewController.h */, + E824543426F57D6E00BE8163 /* XPLoginVerifBindPhoneViewController.m */, ); path = View; sourceTree = ""; @@ -4261,20 +4103,20 @@ 189DD58B26DF978F00AB55B1 /* Presenter */ = { isa = PBXGroup; children = ( - 189DD58D26DF97E700AB55B1 /* SurmountExternalizer.h */, - 189DD58E26DF97E700AB55B1 /* SurmountExternalizer.m */, - E8B825C026EA00DF009E8E9F /* SurmountValidationCodeExternalize.h */, - E8B825C126EA00DF009E8E9F /* SurmountValidationCodeExternalize.m */, - E8CEA03B26EA3DE500644B44 /* SurmountCiphercodeExternalize.h */, - E8CEA03C26EA3DE500644B44 /* SurmountCiphercodeExternalize.m */, - E81C279426EB39CC0031E639 /* SurmountForgetCiphercodeExternalize.h */, - E81C279526EB39CC0031E639 /* SurmountForgetCiphercodeExternalize.m */, - E81366F426F0C0DF0076364C /* SurmountFullAbstractExternalizer.h */, - E81366F526F0C0DF0076364C /* SurmountFullAbstractExternalizer.m */, - E82109AE26F1D83500FC3319 /* SurmountDilemmaMobileExternalize.h */, - E82109AF26F1D83500FC3319 /* SurmountDilemmaMobileExternalize.m */, - E824543626F5820A00BE8163 /* YUMISurmountValidationDilemmaMobileExternalizer.h */, - E824543726F5820A00BE8163 /* YUMISurmountValidationDilemmaMobileExternalizer.m */, + 189DD58D26DF97E700AB55B1 /* LoginPresenter.h */, + 189DD58E26DF97E700AB55B1 /* LoginPresenter.m */, + E8B825C026EA00DF009E8E9F /* LoginVerifCodePresent.h */, + E8B825C126EA00DF009E8E9F /* LoginVerifCodePresent.m */, + E8CEA03B26EA3DE500644B44 /* LoginPasswordPresent.h */, + E8CEA03C26EA3DE500644B44 /* LoginPasswordPresent.m */, + E81C279426EB39CC0031E639 /* LoginForgetPasswordPresent.h */, + E81C279526EB39CC0031E639 /* LoginForgetPasswordPresent.m */, + E81366F426F0C0DF0076364C /* LoginFullInfoPresenter.h */, + E81366F526F0C0DF0076364C /* LoginFullInfoPresenter.m */, + E82109AE26F1D83500FC3319 /* LoginBindPhonePresent.h */, + E82109AF26F1D83500FC3319 /* LoginBindPhonePresent.m */, + E824543626F5820A00BE8163 /* XPLoginVerifBindPhonePresenter.h */, + E824543726F5820A00BE8163 /* XPLoginVerifBindPhonePresenter.m */, ); path = Presenter; sourceTree = ""; @@ -4282,12 +4124,12 @@ 189DD59126DF97F600AB55B1 /* Protocol */ = { isa = PBXGroup; children = ( - 189DD59426DF986300AB55B1 /* SurmountCeremony.h */, - E8B825C626EA0995009E8E9F /* SurmountVerifCodeCeremony.h */, - E8CEA03E26EA3E0200644B44 /* SurmountCiphercodeCeremony.h */, - E81C279726EB39E10031E639 /* SurmountForgetCiphercodeCeremony.h */, - E81366F726F0C0F60076364C /* SurmountFullAbstractCeremony.h */, - E824543926F5822800BE8163 /* FBCSurmountVerifBindPhoneCeremony.h */, + 189DD59426DF986300AB55B1 /* LoginProtocol.h */, + E8B825C626EA0995009E8E9F /* LoginVerifCodeProtocol.h */, + E8CEA03E26EA3E0200644B44 /* LoginPasswordProtocol.h */, + E81C279726EB39E10031E639 /* LoginForgetPasswordProtocol.h */, + E81366F726F0C0F60076364C /* LoginFullInfoProtocol.h */, + E824543926F5822800BE8163 /* XPLoginVerifBindPhoneProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -4303,13 +4145,14 @@ 9B33E3C827D85379003B0E62 /* File */, E80CBDE727D0C528001E1EC2 /* Timer */, 180116F6279E8C3100F2CBC0 /* Date */, - 9B17F71527BD14FF00440843 /* SVGAAnatomiserExecutive */, - E88863D0278ED4A0004BCFAB /* Intratemporalstamp */, + 9B17F71527BD14FF00440843 /* SVGAParserManager */, + E88863D0278ED4A0004BCFAB /* Timestamp */, E82D5C77276B25B000858D6D /* SpriteSheetManager */, - E865964E2701A1A900846EBD /* StatsticsticsServing */, + E865964E2701A1A900846EBD /* StatisticsService */, E89DA6612700590A008483C1 /* IAPHelper */, - E8B846B926FD7BE600A777FE /* UpwardsloadIndicate */, - E8EEB8EA26FC2050007C6EBA /* SDAppearanceBrowser */, + E8B846B926FD7BE600A777FE /* UploadImage */, + E8EEB8EA26FC2050007C6EBA /* SDPhotoBrowser */, + 2331C1BA2A60F67F00E1D940 /* UILabel */, E81366E426F0A4820076364C /* NSString */, E82109AA26F1C86E00FC3319 /* CountDown */, E81C278726EAFABF0031E639 /* Security */, @@ -4390,10 +4233,10 @@ 18EE3FF52754AFD900A452BF /* SessionList */ = { isa = PBXGroup; children = ( - 18A61BE6274F9CF000A09A54 /* InterlocutionStatementRegardGovernancer.h */, - 18A61BE7274F9CF000A09A54 /* InterlocutionStatementRegardGovernancer.m */, - 18EE3FDD2750C1F700A452BF /* InterlocutionStatementElement.h */, - 18EE3FDE2750C1F700A452BF /* InterlocutionStatementElement.m */, + 18A61BE6274F9CF000A09A54 /* SessionListViewController.h */, + 18A61BE7274F9CF000A09A54 /* SessionListViewController.m */, + 18EE3FDD2750C1F700A452BF /* SessionListCell.h */, + 18EE3FDE2750C1F700A452BF /* SessionListCell.m */, ); path = SessionList; sourceTree = ""; @@ -4401,8 +4244,8 @@ 18EE3FF72754B01D00A452BF /* NIMViews */ = { isa = PBXGroup; children = ( - 18EE3FE02750C29D00A452BF /* NEMCBadgeRegard.h */, - 18EE3FE12750C29D00A452BF /* NEMCBadgeRegard.m */, + 18EE3FE02750C29D00A452BF /* NIMBadgeView.h */, + 18EE3FE12750C29D00A452BF /* NIMBadgeView.m */, 9B7D804F2753AA9D003DAC0C /* UITableView+NIMScrollToBottom.h */, 9B7D804E2753AA9D003DAC0C /* UITableView+NIMScrollToBottom.m */, 18EE3FF22750FA3700A452BF /* UIView+NIM.h */, @@ -4415,49 +4258,49 @@ isa = PBXGroup; children = ( E81060D62987613E00B772F0 /* SesssionModel */, - 18F403A32758B5F900A6C548 /* CommunicationContentCeremony.h */, - E885D53A2977FBFD004DC088 /* CommunicationIntratemporalRegard.h */, - E885D53B2977FBFD004DC088 /* CommunicationIntratemporalRegard.m */, - E8383698298A59C100112E1C /* CommunicationTipsRegard.h */, - E8383699298A59C100112E1C /* CommunicationTipsRegard.m */, - 18F403C92758C66800A6C548 /* CommunicationSatisfactionEssay.h */, - 18F403CA2758C66800A6C548 /* CommunicationSatisfactionEssay.m */, - E8F1558B28124D5200EE8C06 /* CommunicationConentVocalmusicRegard.h */, - E8F1558C28124D5200EE8C06 /* CommunicationConentVocalmusicRegard.m */, - 18F403EC2758CF2F00A6C548 /* CommunicationSatisfactionIndicate.h */, - 18F403ED2758CF2F00A6C548 /* CommunicationSatisfactionIndicate.m */, - E873EB0A2809850D0071030D /* CommunicationSatisfactionCustomRegard.h */, - E873EB0B2809850D0071030D /* CommunicationSatisfactionCustomRegard.m */, - E873EB0D28098D500071030D /* CommunicationSatisfactionPresentRegard.h */, - E873EB0E28098D500071030D /* CommunicationSatisfactionPresentRegard.m */, - 18AAF3EE279EA59300CD7DAD /* CommunicationSatisfactionEssayClickable.h */, - 18AAF3EF279EA59300CD7DAD /* CommunicationSatisfactionEssayClickable.m */, - E80B0732280D740600A79F63 /* CommunicationSatisfactionUnionRegard.h */, - E80B0733280D740600A79F63 /* CommunicationSatisfactionUnionRegard.m */, - E83ABEF4280E9AD800322EE4 /* CommunicationSatisfactionUnSupportRegard.h */, - E83ABEF5280E9AD800322EE4 /* CommunicationSatisfactionUnSupportRegard.m */, - E83ABEF7280EAF3F00322EE4 /* CommunicationSatisfactionUnfoildEnergeticRegard.h */, - E83ABEF8280EAF3F00322EE4 /* CommunicationSatisfactionUnfoildEnergeticRegard.m */, - E83ABEFE280EC45700322EE4 /* CommunicationSatisfactionApplicationParaticipationRegard.h */, - E83ABEFF280EC45700322EE4 /* CommunicationSatisfactionApplicationParaticipationRegard.m */, - E83ABF04280EDE2B00322EE4 /* CommunicationSatisfactionPrototypeAscensionRegard.h */, - E83ABF05280EDE2B00322EE4 /* CommunicationSatisfactionPrototypeAscensionRegard.m */, - E86507E3281A7D4D006951B0 /* CommunicationSatisfactionTweetRegard.h */, - E86507E4281A7D4D006951B0 /* CommunicationSatisfactionTweetRegard.m */, - E86507E9281A88A9006951B0 /* CommunicationSatisfactionCommunicationSolitaireRegard.h */, - E86507EA281A88A9006951B0 /* CommunicationSatisfactionCommunicationSolitaireRegard.m */, - E8E0DADE285C20E500566A2F /* CommunicationSatisfactionDiscoveryStrangeBewelcometoRegard.h */, - E8E0DADF285C20E500566A2F /* CommunicationSatisfactionDiscoveryStrangeBewelcometoRegard.m */, - E86E79CB28A4E045006DAF48 /* CommunicationSatisfactionVenturePrecautiousRegard.h */, - E86E79CC28A4E045006DAF48 /* CommunicationSatisfactionVenturePrecautiousRegard.m */, - E85E3FA528B7A6F000268DC8 /* CommunicationSatisfactionSeparationsRegard.h */, - E85E3FA628B7A6F000268DC8 /* CommunicationSatisfactionSeparationsRegard.m */, - E80A63DA28B86B9700690914 /* CommunicationSatisfactionSeparationsAutoRegard.h */, - E80A63DB28B86B9700690914 /* CommunicationSatisfactionSeparationsAutoRegard.m */, - 9B88E20A28C5EB8300D26FBA /* CommunicationSatisfactionDeficitSheatheRegard.h */, - 9B88E20B28C5EB8300D26FBA /* CommunicationSatisfactionDeficitSheatheRegard.m */, - E8778AE22988B57B00CF139B /* CommunicationSatisfactionRevokeRegard.h */, - E8778AE32988B57B00CF139B /* CommunicationSatisfactionRevokeRegard.m */, + 18F403A32758B5F900A6C548 /* MessageContentProtocol.h */, + E885D53A2977FBFD004DC088 /* MessageTimeView.h */, + E885D53B2977FBFD004DC088 /* MessageTimeView.m */, + E8383698298A59C100112E1C /* MessageTipsView.h */, + E8383699298A59C100112E1C /* MessageTipsView.m */, + 18F403C92758C66800A6C548 /* MessageContentText.h */, + 18F403CA2758C66800A6C548 /* MessageContentText.m */, + E8F1558B28124D5200EE8C06 /* MessageConentAudioView.h */, + E8F1558C28124D5200EE8C06 /* MessageConentAudioView.m */, + 18F403EC2758CF2F00A6C548 /* MessageContentImage.h */, + 18F403ED2758CF2F00A6C548 /* MessageContentImage.m */, + E873EB0A2809850D0071030D /* MessageContentCustomView.h */, + E873EB0B2809850D0071030D /* MessageContentCustomView.m */, + E873EB0D28098D500071030D /* MessageContentGiftView.h */, + E873EB0E28098D500071030D /* MessageContentGiftView.m */, + 18AAF3EE279EA59300CD7DAD /* MessageContentTextClickable.h */, + 18AAF3EF279EA59300CD7DAD /* MessageContentTextClickable.m */, + E80B0732280D740600A79F63 /* MessageContentGuildView.h */, + E80B0733280D740600A79F63 /* MessageContentGuildView.m */, + E83ABEF4280E9AD800322EE4 /* MessageContentUnSupportView.h */, + E83ABEF5280E9AD800322EE4 /* MessageContentUnSupportView.m */, + E83ABEF7280EAF3F00322EE4 /* MessageContentOpenLiveView.h */, + E83ABEF8280EAF3F00322EE4 /* MessageContentOpenLiveView.m */, + E83ABEFE280EC45700322EE4 /* MessageContentApplicationShareView.h */, + E83ABEFF280EC45700322EE4 /* MessageContentApplicationShareView.m */, + E83ABF04280EDE2B00322EE4 /* MessageContentLevelUpgradeView.h */, + E83ABF05280EDE2B00322EE4 /* MessageContentLevelUpgradeView.m */, + E86507E3281A7D4D006951B0 /* MessageContentTweetView.h */, + E86507E4281A7D4D006951B0 /* MessageContentTweetView.m */, + E86507E9281A88A9006951B0 /* MessageContentSkillCardView.h */, + E86507EA281A88A9006951B0 /* MessageContentSkillCardView.m */, + E8E0DADE285C20E500566A2F /* MessageContentFindNewGreetView.h */, + E8E0DADF285C20E500566A2F /* MessageContentFindNewGreetView.m */, + E86E79CB28A4E045006DAF48 /* MessageContentRiskAlertView.h */, + E86E79CC28A4E045006DAF48 /* MessageContentRiskAlertView.m */, + E85E3FA528B7A6F000268DC8 /* MessageContentMonentsView.h */, + E85E3FA628B7A6F000268DC8 /* MessageContentMonentsView.m */, + E80A63DA28B86B9700690914 /* MessageContentMonentsAutoView.h */, + E80A63DB28B86B9700690914 /* MessageContentMonentsAutoView.m */, + 9B88E20A28C5EB8300D26FBA /* MessageContentRedPacketView.h */, + 9B88E20B28C5EB8300D26FBA /* MessageContentRedPacketView.m */, + E8778AE22988B57B00CF139B /* MessageContentRevokeView.h */, + E8778AE32988B57B00CF139B /* MessageContentRevokeView.m */, ); path = Content; sourceTree = ""; @@ -4466,14 +4309,14 @@ isa = PBXGroup; children = ( E899C68D2750DA3C00E189E5 /* CustomMessage */, - E884C36D2743AAC800E1EBED /* AttachmentMatrix.h */, - E884C36E2743AAC800E1EBED /* AttachmentMatrix.m */, + E884C36D2743AAC800E1EBED /* AttachmentModel.h */, + E884C36E2743AAC800E1EBED /* AttachmentModel.m */, E8D55C9A281131F1006935A5 /* SessionToolBar */, E83ABEFA280EB5A000322EE4 /* SessionContent */, - 18F404B92760982000A6C548 /* ChatLimitMatrix.h */, - 18F404BA2760982000A6C548 /* ChatLimitMatrix.m */, - E885D5342977CE28004DC088 /* InterlocutionInstanllingMatrix.h */, - E885D5352977CE28004DC088 /* InterlocutionInstanllingMatrix.m */, + 18F404B92760982000A6C548 /* ChatLimitModel.h */, + 18F404BA2760982000A6C548 /* ChatLimitModel.m */, + E885D5342977CE28004DC088 /* SessionSettingModel.h */, + E885D5352977CE28004DC088 /* SessionSettingModel.m */, ); path = Model; sourceTree = ""; @@ -4487,14 +4330,14 @@ 18EE3FF72754B01D00A452BF /* NIMViews */, 18EE3FF52754AFD900A452BF /* SessionList */, 9B7D804727537819003DAC0C /* Session */, - 18EE3FEC2750CE6D00A452BF /* NEMCCommunicationUtils.h */, - 18EE3FED2750CE6D00A452BF /* NEMCCommunicationUtils.m */, - 18EE3FEF2750D2AD00A452BF /* NEMCIntratemporalUtils.h */, - 18EE3FF02750D2AD00A452BF /* NEMCIntratemporalUtils.m */, - 18EE40192754BA9F00A452BF /* NEMCCommunicationMaker.h */, - 18EE40182754BA9F00A452BF /* NEMCCommunicationMaker.m */, - E8F1558E28125E2D00EE8C06 /* CommunicationVocalmusicConcentrate.h */, - E8F1558F28125E2D00EE8C06 /* CommunicationVocalmusicConcentrate.m */, + 18EE3FEC2750CE6D00A452BF /* NIMMessageUtils.h */, + 18EE3FED2750CE6D00A452BF /* NIMMessageUtils.m */, + 18EE3FEF2750D2AD00A452BF /* NIMTimeUtils.h */, + 18EE3FF02750D2AD00A452BF /* NIMTimeUtils.m */, + 18EE40192754BA9F00A452BF /* NIMMessageMaker.h */, + 18EE40182754BA9F00A452BF /* NIMMessageMaker.m */, + E8F1558E28125E2D00EE8C06 /* MessageAudioCenter.h */, + E8F1558F28125E2D00EE8C06 /* MessageAudioCenter.m */, ); path = View; sourceTree = ""; @@ -4511,8 +4354,8 @@ 18F404C4276099B300A6C548 /* Presenter */ = { isa = PBXGroup; children = ( - 18F404C727609A4300A6C548 /* CommunicationExternalizer.h */, - 18F404C827609A4300A6C548 /* CommunicationExternalizer.m */, + 18F404C727609A4300A6C548 /* MessagePresenter.h */, + 18F404C827609A4300A6C548 /* MessagePresenter.m */, ); path = Presenter; sourceTree = ""; @@ -4520,218 +4363,219 @@ 18F404C5276099C800A6C548 /* Protocol */ = { isa = PBXGroup; children = ( - 18F404C6276099DF00A6C548 /* CommunicationCeremony.h */, + 18F404C6276099DF00A6C548 /* MessageProtocol.h */, ); path = Protocol; sourceTree = ""; }; - 237D642D2A57F8EE000442C6 /* PICustomClass */ = { + 2331C12F2A5EB71000E1D940 /* Noble */ = { isa = PBXGroup; children = ( - 237D64E52A58139E000442C6 /* fairy */, - 237D64AB2A57FDAA000442C6 /* ContentTreasureFairyModel.h */, - 237D64342A57FDA9000442C6 /* ContentTreasureFairyModel.m */, - 237D64352A57FDA9000442C6 /* TreasureFairy */, - 237D64AA2A57FDAA000442C6 /* XPTreasureFairyGiftView.h */, - 237D64AC2A57FDAA000442C6 /* XPTreasureFairyGiftView.m */, + 2331C1302A5EB71000E1D940 /* Presenter */, + 2331C1332A5EB71000E1D940 /* Protocol */, + 2331C1352A5EB71000E1D940 /* Model */, + 2331C1402A5EB71000E1D940 /* View */, + 2331C1602A5EB71000E1D940 /* Api */, ); - path = PICustomClass; + path = Noble; sourceTree = ""; }; - 237D64352A57FDA9000442C6 /* TreasureFairy */ = { + 2331C1302A5EB71000E1D940 /* Presenter */ = { isa = PBXGroup; children = ( - 237D64362A57FDA9000442C6 /* Presenter */, - 237D64392A57FDA9000442C6 /* Protocol */, - 237D643B2A57FDA9000442C6 /* Model */, - 237D64522A57FDA9000442C6 /* View */, - 237D64A72A57FDA9000442C6 /* Api */, - ); - path = TreasureFairy; - sourceTree = ""; - }; - 237D64362A57FDA9000442C6 /* Presenter */ = { - isa = PBXGroup; - children = ( - 237D64382A57FDA9000442C6 /* XPTreasureFailyPresenter.h */, - 237D64372A57FDA9000442C6 /* XPTreasureFailyPresenter.m */, + 2331C1312A5EB71000E1D940 /* XPNobleCenterPresenter.h */, + 2331C1322A5EB71000E1D940 /* XPNobleCenterPresenter.m */, ); path = Presenter; sourceTree = ""; }; - 237D64392A57FDA9000442C6 /* Protocol */ = { + 2331C1332A5EB71000E1D940 /* Protocol */ = { isa = PBXGroup; children = ( - 237D643A2A57FDA9000442C6 /* XPTreasureFailyProtocol.h */, + 2331C1342A5EB71000E1D940 /* XPNobleCenterProtocol.h */, ); path = Protocol; sourceTree = ""; }; - 237D643B2A57FDA9000442C6 /* Model */ = { + 2331C1352A5EB71000E1D940 /* Model */ = { isa = PBXGroup; children = ( - 237D64402A57FDA9000442C6 /* TreasureFailryMessageModel.h */, - 237D644B2A57FDA9000442C6 /* TreasureFailryMessageModel.m */, - 237D64472A57FDA9000442C6 /* TreasureFailyKeyInfoModel.h */, - 237D643F2A57FDA9000442C6 /* TreasureFailyKeyInfoModel.m */, - 237D64442A57FDA9000442C6 /* TreasureFairyBallInfoModel.h */, - 237D644C2A57FDA9000442C6 /* TreasureFairyBallInfoModel.m */, - 237D643C2A57FDA9000442C6 /* TreasureFairyConvertRecordModel.h */, - 237D644A2A57FDA9000442C6 /* TreasureFairyConvertRecordModel.m */, - 237D64462A57FDA9000442C6 /* TreasureFairyFragmentModel.h */, - 237D64502A57FDA9000442C6 /* TreasureFairyFragmentModel.m */, - 237D643D2A57FDA9000442C6 /* TreasureFairyInfoModel.h */, - 237D64492A57FDA9000442C6 /* TreasureFairyInfoModel.m */, - 237D64482A57FDA9000442C6 /* TreasureFairyLimitModel.h */, - 237D643E2A57FDA9000442C6 /* TreasureFairyLimitModel.m */, - 237D644E2A57FDA9000442C6 /* TreasureFairyRewardModel.h */, - 237D64422A57FDA9000442C6 /* TreasureFairyRewardModel.m */, - 237D644F2A57FDA9000442C6 /* TreasureFairySendRecordModel.h */, - 237D64412A57FDA9000442C6 /* TreasureFairySendRecordModel.m */, - 237D644D2A57FDA9000442C6 /* TreasureFairyTrialsRecordModel.h */, - 237D64432A57FDA9000442C6 /* TreasureFairyTrialsRecordModel.m */, - 237D64512A57FDA9000442C6 /* TreasureFairyUserInfoModel.h */, - 237D64452A57FDA9000442C6 /* TreasureFairyUserInfoModel.m */, + 2331C1382A5EB71000E1D940 /* NobleAuthInfo.h */, + 2331C13D2A5EB71000E1D940 /* NobleAuthInfo.m */, + 2331C13E2A5EB71000E1D940 /* NobleCenterModel.h */, + 2331C13A2A5EB71000E1D940 /* NobleCenterModel.m */, + 2331C13B2A5EB71000E1D940 /* NobleInfo.h */, + 2331C1362A5EB71000E1D940 /* NobleInfo.m */, + 2331C1372A5EB71000E1D940 /* NobleLevelUpModel.h */, + 2331C13C2A5EB71000E1D940 /* NobleLevelUpModel.m */, + 2331C13F2A5EB71000E1D940 /* NobleRechargeModel.h */, + 2331C1392A5EB71000E1D940 /* NobleRechargeModel.m */, ); path = Model; sourceTree = ""; }; - 237D64522A57FDA9000442C6 /* View */ = { + 2331C1402A5EB71000E1D940 /* View */ = { isa = PBXGroup; children = ( - 237D64542A57FDA9000442C6 /* Cell */, - 237D64672A57FDA9000442C6 /* View */, - 237D64A62A57FDA9000442C6 /* XPTreasureFairyViewController.h */, - 237D64532A57FDA9000442C6 /* XPTreasureFairyViewController.m */, + 2331C1452A5EB71000E1D940 /* SubViews */, + 2331C1422A5EB71000E1D940 /* ThemeColor+NobleCenter.h */, + 2331C15D2A5EB71000E1D940 /* ThemeColor+NobleCenter.m */, + 2331C1432A5EB71000E1D940 /* XPNobleCenterListViewController.h */, + 2331C15E2A5EB71000E1D940 /* XPNobleCenterListViewController.m */, + 2331C15F2A5EB71000E1D940 /* XPNobleCenterViewController.h */, + 2331C1442A5EB71000E1D940 /* XPNobleCenterViewController.m */, + 2331C15C2A5EB71000E1D940 /* XPNobleSettingViewController.h */, + 2331C1412A5EB71000E1D940 /* XPNobleSettingViewController.m */, ); path = View; sourceTree = ""; }; - 237D64542A57FDA9000442C6 /* Cell */ = { + 2331C1452A5EB71000E1D940 /* SubViews */ = { isa = PBXGroup; children = ( - 237D64552A57FDA9000442C6 /* XPTreasureFairyStoreResultCell.m */, - 237D64562A57FDA9000442C6 /* XPTreasureFairyShopingRecordCell.h */, - 237D64572A57FDA9000442C6 /* XPTreasureFailyResultGiftCell.h */, - 237D64582A57FDA9000442C6 /* XPTreasureFairySendRecordCell.h */, - 237D64592A57FDA9000442C6 /* XPTreasureFairyFriendCell.m */, - 237D645A2A57FDA9000442C6 /* XPTreasureFairyPrizePoolCell.m */, - 237D645B2A57FDA9000442C6 /* XPTreasureFairyPrizeRecordCell.m */, - 237D645C2A57FDA9000442C6 /* XPTreasureFairyTrialsRecordCell.h */, - 237D645D2A57FDA9000442C6 /* XPTreasureFairyShopingExchangeCell.h */, - 237D645E2A57FDA9000442C6 /* XPTreasureFairyStoreResultCell.h */, - 237D645F2A57FDA9000442C6 /* XPTreasureFailyResultGiftCell.m */, - 237D64602A57FDA9000442C6 /* XPTreasureFairyShopingRecordCell.m */, - 237D64612A57FDA9000442C6 /* XPTreasureFairyFriendCell.h */, - 237D64622A57FDA9000442C6 /* XPTreasureFairySendRecordCell.m */, - 237D64632A57FDA9000442C6 /* XPTreasureFairyPrizeRecordCell.h */, - 237D64642A57FDA9000442C6 /* XPTreasureFairyPrizePoolCell.h */, - 237D64652A57FDA9000442C6 /* XPTreasureFairyShopingExchangeCell.m */, - 237D64662A57FDA9000442C6 /* XPTreasureFairyTrialsRecordCell.m */, + 2331C17A2A5EB7AB00E1D940 /* XPNobleCenterEntranceView.h */, + 2331C1792A5EB7AB00E1D940 /* XPNobleCenterEntranceView.m */, + 2331C1462A5EB71000E1D940 /* XPNobleAuthorityDescView.h */, + 2331C1532A5EB71000E1D940 /* XPNobleAuthorityDescView.m */, + 2331C1552A5EB71000E1D940 /* XPNobleCenterEmptyView.h */, + 2331C14C2A5EB71000E1D940 /* XPNobleCenterEmptyView.m */, + 2331C1512A5EB71000E1D940 /* XPNobleCenterMyNobleView.h */, + 2331C1482A5EB71000E1D940 /* XPNobleCenterMyNobleView.m */, + 2331C14D2A5EB71000E1D940 /* XPNobleCenterNavView.h */, + 2331C1542A5EB71000E1D940 /* XPNobleCenterNavView.m */, + 2331C14F2A5EB71000E1D940 /* XPNobleCenterResidueView.h */, + 2331C15A2A5EB71000E1D940 /* XPNobleCenterResidueView.m */, + 2331C14A2A5EB71000E1D940 /* XPNobleCenterTableHeadView.h */, + 2331C1572A5EB71000E1D940 /* XPNobleCenterTableHeadView.m */, + 2331C1502A5EB71000E1D940 /* XPNoblePrivilegeCell.h */, + 2331C1592A5EB71000E1D940 /* XPNoblePrivilegeCell.m */, + 2331C14B2A5EB71000E1D940 /* XPNoblePrivilegeContentCell.h */, + 2331C1562A5EB71000E1D940 /* XPNoblePrivilegeContentCell.m */, + 2331C1472A5EB71000E1D940 /* XPNobleSettingNavView.h */, + 2331C1522A5EB71000E1D940 /* XPNobleSettingNavView.m */, + 2331C14E2A5EB71000E1D940 /* XPNobleUpgradeLevelView.h */, + 2331C15B2A5EB71000E1D940 /* XPNobleUpgradeLevelView.m */, + 2331C17C2A5ECCF600E1D940 /* XPNobleCenterPayView.h */, + 2331C17D2A5ECCF600E1D940 /* XPNobleCenterPayView.m */, + 2331C17F2A5ECD3800E1D940 /* XPNobleCenterPayCell.h */, + 2331C1802A5ECD3800E1D940 /* XPNobleCenterPayCell.m */, ); - path = Cell; + path = SubViews; sourceTree = ""; }; - 237D64672A57FDA9000442C6 /* View */ = { + 2331C1602A5EB71000E1D940 /* Api */ = { isa = PBXGroup; children = ( - 237D64732A57FDA9000442C6 /* XPTreasureFailrySummonBallView.h */, - 237D64922A57FDA9000442C6 /* XPTreasureFailrySummonBallView.m */, - 237D64A32A57FDA9000442C6 /* XPTreasureFailyPrizeGiftView.h */, - 237D64802A57FDA9000442C6 /* XPTreasureFailyPrizeGiftView.m */, - 237D649E2A57FDA9000442C6 /* XPTreasureFailyResultView.h */, - 237D64862A57FDA9000442C6 /* XPTreasureFailyResultView.m */, - 237D64992A57FDA9000442C6 /* XPTreasureFairyBallContentView.h */, - 237D647B2A57FDA9000442C6 /* XPTreasureFairyBallContentView.m */, - 237D64782A57FDA9000442C6 /* XPTreasureFairyBallView.h */, - 237D649C2A57FDA9000442C6 /* XPTreasureFairyBallView.m */, - 237D649B2A57FDA9000442C6 /* XPTreasureFairyDrawSubView.h */, - 237D64792A57FDA9000442C6 /* XPTreasureFairyDrawSubView.m */, - 237D646E2A57FDA9000442C6 /* XPTreasureFairyDrawView.h */, - 237D64872A57FDA9000442C6 /* XPTreasureFairyDrawView.m */, - 237D64762A57FDA9000442C6 /* XPTreasureFairyExchangeView.h */, - 237D648F2A57FDA9000442C6 /* XPTreasureFairyExchangeView.m */, - 237D648C2A57FDA9000442C6 /* XPTreasureFairyFriendView.h */, - 237D64692A57FDA9000442C6 /* XPTreasureFairyFriendView.m */, - 237D649A2A57FDA9000442C6 /* XPTreasureFairyMessageSendView.h */, - 237D647A2A57FDA9000442C6 /* XPTreasureFairyMessageSendView.m */, - 237D64972A57FDA9000442C6 /* XPTreasureFairyMoreView.h */, - 237D647D2A57FDA9000442C6 /* XPTreasureFairyMoreView.m */, - 237D64A52A57FDA9000442C6 /* XPTreasureFairyMyView.h */, - 237D647E2A57FDA9000442C6 /* XPTreasureFairyMyView.m */, - 237D648E2A57FDA9000442C6 /* XPTreasureFairyPoolRecordView.h */, - 237D64772A57FDA9000442C6 /* XPTreasureFairyPoolRecordView.m */, - 237D64A02A57FDA9000442C6 /* XPTreasureFairyPrizePoolView.h */, - 237D64832A57FDA9000442C6 /* XPTreasureFairyPrizePoolView.m */, - 237D64A42A57FDA9000442C6 /* XPTreasureFairyPrizeRecordView.h */, - 237D647F2A57FDA9000442C6 /* XPTreasureFairyPrizeRecordView.m */, - 237D649D2A57FDA9000442C6 /* XPTreasureFairyPrizeSubView.h */, - 237D64852A57FDA9000442C6 /* XPTreasureFairyPrizeSubView.m */, - 237D646C2A57FDA9000442C6 /* XPTreasureFairySendRecordView.h */, - 237D64882A57FDA9000442C6 /* XPTreasureFairySendRecordView.m */, - 237D648A2A57FDA9000442C6 /* XPTreasureFairySendView.h */, - 237D646B2A57FDA9000442C6 /* XPTreasureFairySendView.m */, - 237D64682A57FDA9000442C6 /* XPTreasureFairyShopingRecordSubView.h */, - 237D648D2A57FDA9000442C6 /* XPTreasureFairyShopingRecordSubView.m */, - 237D64742A57FDA9000442C6 /* XPTreasureFairyShopingRecordView.h */, - 237D64902A57FDA9000442C6 /* XPTreasureFairyShopingRecordView.m */, - 237D646F2A57FDA9000442C6 /* XPTreasureFairyShopingView.h */, - 237D64952A57FDA9000442C6 /* XPTreasureFairyShopingView.m */, - 237D64A22A57FDA9000442C6 /* XPTreasureFairyStoreResultSmallView.h */, - 237D64812A57FDA9000442C6 /* XPTreasureFairyStoreResultSmallView.m */, - 237D64912A57FDA9000442C6 /* XPTreasureFairyStoreResultView.h */, - 237D64752A57FDA9000442C6 /* XPTreasureFairyStoreResultView.m */, - 237D64822A57FDA9000442C6 /* XPTreasureFairyStoreView.h */, - 237D64A12A57FDA9000442C6 /* XPTreasureFairyStoreView.m */, - 237D646D2A57FDA9000442C6 /* XPTreasureFairySummonGiftView.h */, - 237D64892A57FDA9000442C6 /* XPTreasureFairySummonGiftView.m */, - 237D648B2A57FDA9000442C6 /* XPTreasureFairySummonView.h */, - 237D646A2A57FDA9000442C6 /* XPTreasureFairySummonView.m */, - 237D64712A57FDA9000442C6 /* XPTreasureFairyTrialsBallView.h */, - 237D64942A57FDA9000442C6 /* XPTreasureFairyTrialsBallView.m */, - 237D64962A57FDA9000442C6 /* XPTreasureFairyTrialsContentView.h */, - 237D64702A57FDA9000442C6 /* XPTreasureFairyTrialsContentView.m */, - 237D647C2A57FDA9000442C6 /* XPTreasureFairyTrialsRecordView.h */, - 237D64982A57FDA9000442C6 /* XPTreasureFairyTrialsRecordView.m */, - 237D64722A57FDA9000442C6 /* XPTreasureFairyTrialsView.h */, - 237D64932A57FDA9000442C6 /* XPTreasureFairyTrialsView.m */, - 237D649F2A57FDA9000442C6 /* XPTreasureFairyWebView.h */, - 237D64842A57FDA9000442C6 /* XPTreasureFairyWebView.m */, - ); - path = View; - sourceTree = ""; - }; - 237D64A72A57FDA9000442C6 /* Api */ = { - isa = PBXGroup; - children = ( - 237D64A92A57FDA9000442C6 /* Api+TreasureFairy.h */, - 237D64A82A57FDA9000442C6 /* Api+TreasureFairy.m */, + 2331C1612A5EB71000E1D940 /* Api+NobleCenter.h */, + 2331C1622A5EB71000E1D940 /* Api+NobleCenter.m */, ); path = Api; sourceTree = ""; }; - 237D64E52A58139E000442C6 /* fairy */ = { + 2331C1822A60F32D00E1D940 /* CandyTree */ = { isa = PBXGroup; children = ( - 237D64E62A58139E000442C6 /* treasure_fairy_trials_high.mp4 */, - 237D64E72A58139E000442C6 /* treasure_fairy_summon_normal.mp4 */, - 237D64E82A58139E000442C6 /* treasure_fairy_summon_high.mp4 */, - 237D64E92A58139E000442C6 /* treasure_fairy_summon_middle.mp4 */, - 237D64EA2A58139E000442C6 /* treasure_fairy_ten.mp4 */, - 237D64EB2A58139E000442C6 /* treasure_fairy_trials_middle.mp4 */, - 237D64EC2A58139E000442C6 /* treasure_fairy_one.mp4 */, - 237D64ED2A58139E000442C6 /* treasure_fairy_gift_bg.svga */, + 2331C1832A60F32D00E1D940 /* Presenter */, + 2331C1862A60F32D00E1D940 /* Protocol */, + 2331C1882A60F32D00E1D940 /* Model */, + 2331C1912A60F32D00E1D940 /* View */, + 2331C1A72A60F32D00E1D940 /* Api */, ); - path = fairy; + path = CandyTree; + sourceTree = ""; + }; + 2331C1832A60F32D00E1D940 /* Presenter */ = { + isa = PBXGroup; + children = ( + 2331C1842A60F32D00E1D940 /* XPCandyTreePresenter.m */, + 2331C1852A60F32D00E1D940 /* XPCandyTreePresenter.h */, + ); + path = Presenter; + sourceTree = ""; + }; + 2331C1862A60F32D00E1D940 /* Protocol */ = { + isa = PBXGroup; + children = ( + 2331C1872A60F32D00E1D940 /* XPCandyTreeProtocol.h */, + ); + path = Protocol; + sourceTree = ""; + }; + 2331C1882A60F32D00E1D940 /* Model */ = { + isa = PBXGroup; + children = ( + 2331C1892A60F32D00E1D940 /* CandyTreeResultModel.m */, + 2331C18A2A60F32D00E1D940 /* CandyTreeRecordModel.m */, + 2331C18B2A60F32D00E1D940 /* XPCandyTreeAnimationModel.h */, + 2331C18C2A60F32D00E1D940 /* CandyTreeInfoModel.h */, + 2331C18D2A60F32D00E1D940 /* XPCandyTreeAnimationModel.m */, + 2331C18E2A60F32D00E1D940 /* CandyTreeRecordModel.h */, + 2331C18F2A60F32D00E1D940 /* CandyTreeResultModel.h */, + 2331C1902A60F32D00E1D940 /* CandyTreeInfoModel.m */, + ); + path = Model; + sourceTree = ""; + }; + 2331C1912A60F32D00E1D940 /* View */ = { + isa = PBXGroup; + children = ( + 2331C1922A60F32D00E1D940 /* XPCandyTreeRankView.m */, + 2331C1932A60F32D00E1D940 /* XPCandyTreeMoreView.m */, + 2331C1942A60F32D00E1D940 /* XPCandyTreeViewController.h */, + 2331C1952A60F32D00E1D940 /* XPCandyTreeInsufficientBalanceView.h */, + 2331C1962A60F32D00E1D940 /* XPCandyTreeGiftView.m */, + 2331C1972A60F32D00E1D940 /* XPRoomHalfWebView.h */, + 2331C1982A60F32D00E1D940 /* XPCandyRankContainerView.h */, + 2331C1992A60F32D00E1D940 /* Cell */, + 2331C1A02A60F32D00E1D940 /* XPCandyTreeRankView.h */, + 2331C1A12A60F32D00E1D940 /* XPCandyTreeViewController.m */, + 2331C1A22A60F32D00E1D940 /* XPCandyTreeMoreView.h */, + 2331C1A32A60F32D00E1D940 /* XPCandyTreeGiftView.h */, + 2331C1A42A60F32D00E1D940 /* XPCandyTreeInsufficientBalanceView.m */, + 2331C1A52A60F32D00E1D940 /* XPCandyRankContainerView.m */, + 2331C1A62A60F32D00E1D940 /* XPRoomHalfWebView.m */, + ); + path = View; + sourceTree = ""; + }; + 2331C1992A60F32D00E1D940 /* Cell */ = { + isa = PBXGroup; + children = ( + 2331C19A2A60F32D00E1D940 /* XPCandyTreeEmptyableViewCell.m */, + 2331C19B2A60F32D00E1D940 /* XPCandyTreeMoreRuleCell.m */, + 2331C19C2A60F32D00E1D940 /* XPCandyTreeRankTableViewCell.m */, + 2331C19D2A60F32D00E1D940 /* XPCandyTreeMoreRuleCell.h */, + 2331C19E2A60F32D00E1D940 /* XPCandyTreeEmptyableViewCell.h */, + 2331C19F2A60F32D00E1D940 /* XPCandyTreeRankTableViewCell.h */, + ); + path = Cell; + sourceTree = ""; + }; + 2331C1A72A60F32D00E1D940 /* Api */ = { + isa = PBXGroup; + children = ( + 2331C1A82A60F32D00E1D940 /* Api+CandyTree.m */, + 2331C1A92A60F32D00E1D940 /* Api+CandyTree.h */, + ); + path = Api; + sourceTree = ""; + }; + 2331C1BA2A60F67F00E1D940 /* UILabel */ = { + isa = PBXGroup; + children = ( + 2331C1BB2A60F69E00E1D940 /* UILabel+Utils.h */, + 2331C1BC2A60F69E00E1D940 /* UILabel+Utils.m */, + ); + path = UILabel; sourceTree = ""; }; 9B0086C727BA4F4A0032BD2B /* Anchor */ = { isa = PBXGroup; children = ( - 9B0086C827BA4F570032BD2B /* KellegMiecreoscoopeRegard.h */, - 9B0086C927BA4F570032BD2B /* KellegMiecreoscoopeRegard.m */, - 9B2EA7C12804052E00ED17BF /* KellegCombatMiecreoscoopeRegard.h */, - 9B2EA7C22804052E00ED17BF /* KellegCombatMiecreoscoopeRegard.m */, + 9B0086C827BA4F570032BD2B /* AnchorMicroView.h */, + 9B0086C927BA4F570032BD2B /* AnchorMicroView.m */, + 9B2EA7C12804052E00ED17BF /* AnchorPKMicroView.h */, + 9B2EA7C22804052E00ED17BF /* AnchorPKMicroView.m */, ); path = Anchor; sourceTree = ""; @@ -4745,20 +4589,20 @@ path = QGVAPlayer; sourceTree = ""; }; - 9B17F71527BD14FF00440843 /* SVGAAnatomiserExecutive */ = { + 9B17F71527BD14FF00440843 /* SVGAParserManager */ = { isa = PBXGroup; children = ( - 9B17F71627BD150600440843 /* SVGAAnatomiserExecutive.h */, - 9B17F71727BD150600440843 /* SVGAAnatomiserExecutive.m */, + 9B17F71627BD150600440843 /* SVGAParserManager.h */, + 9B17F71727BD150600440843 /* SVGAParserManager.m */, ); - path = SVGAAnatomiserExecutive; + path = SVGAParserManager; sourceTree = ""; }; 9B1B729A28002249003FACE9 /* AnchorFansTeam */ = { isa = PBXGroup; children = ( - 9B1B729B28002264003FACE9 /* YUMIManeKellegFanaticsSquadMatrix.h */, - 9B1B729C28002264003FACE9 /* YUMIManeKellegFanaticsSquadMatrix.m */, + 9B1B729B28002264003FACE9 /* XPMineAnchorFansTeamModel.h */, + 9B1B729C28002264003FACE9 /* XPMineAnchorFansTeamModel.m */, ); path = AnchorFansTeam; sourceTree = ""; @@ -4766,8 +4610,8 @@ 9B1B729E280023D5003FACE9 /* AnchorFansTeam */ = { isa = PBXGroup; children = ( - 9B1B729F280023F3003FACE9 /* YUMIManeKellegFanaticsSquadTabulationRegardElement.h */, - 9B1B72A0280023F3003FACE9 /* YUMIManeKellegFanaticsSquadTabulationRegardElement.m */, + 9B1B729F280023F3003FACE9 /* XPMineAnchorFansTeamTableViewCell.h */, + 9B1B72A0280023F3003FACE9 /* XPMineAnchorFansTeamTableViewCell.m */, ); path = AnchorFansTeam; sourceTree = ""; @@ -4797,12 +4641,12 @@ children = ( 9B1B72A728003196003FACE9 /* Cell */, 9B1B72A62800318A003FACE9 /* SubViews */, - 9B1B72AA280031DB003FACE9 /* XCombatellegCombatRegardGovernancer.h */, - 9B1B72AB280031DB003FACE9 /* XCombatellegCombatRegardGovernancer.m */, - 9B1B72AD280031F8003FACE9 /* XCombatellegCombatChosenChamberRegard.h */, - 9B1B72AE280031F8003FACE9 /* XCombatellegCombatChosenChamberRegard.m */, - 9B335B472925D8A00048A116 /* XCombatellegCombatChosenGenreGovernancer.h */, - 9B335B482925D8A00048A116 /* XCombatellegCombatChosenGenreGovernancer.m */, + 9B1B72AA280031DB003FACE9 /* XPAnchorPKViewController.h */, + 9B1B72AB280031DB003FACE9 /* XPAnchorPKViewController.m */, + 9B1B72AD280031F8003FACE9 /* XPAnchorPKSelectRoomView.h */, + 9B1B72AE280031F8003FACE9 /* XPAnchorPKSelectRoomView.m */, + 9B335B472925D8A00048A116 /* XPAnchorPKSelectTypeController.h */, + 9B335B482925D8A00048A116 /* XPAnchorPKSelectTypeController.m */, ); path = View; sourceTree = ""; @@ -4810,20 +4654,20 @@ 9B1B72A62800318A003FACE9 /* SubViews */ = { isa = PBXGroup; children = ( - 9B1B72BD2800422E003FACE9 /* XCombatellegCombatPreadominantRegard.h */, - 9B1B72BE2800422E003FACE9 /* XCombatellegCombatPreadominantRegard.m */, - E8DD25D8295583920043C7D5 /* XCombatellegRandomCombatPreadominantRegard.h */, - E8DD25D9295583920043C7D5 /* XCombatellegRandomCombatPreadominantRegard.m */, - 9B2EA7C428041EFC00ED17BF /* XCombatellegPkFasciaboardRegard.h */, - 9B2EA7C528041EFC00ED17BF /* XCombatellegPkFasciaboardRegard.m */, - 9B2EA7CA2804245500ED17BF /* XCombatellegCombatFasciaboardConsumerRegard.h */, - 9B2EA7CB2804245500ED17BF /* XCombatellegCombatFasciaboardConsumerRegard.m */, - 9B3A1DF2280571000058E2DD /* XCombatellegCombatCallforRegard.h */, - 9B3A1DF3280571000058E2DD /* XCombatellegCombatCallforRegard.m */, - 9B85F3512806AB9A006EDF51 /* XCombatellegCombatConsequentRegard.h */, - 9B85F3522806AB9A006EDF51 /* XCombatellegCombatConsequentRegard.m */, - 9B85F3542806DD8A006EDF51 /* XCombatellegCombatFinishRegard.h */, - 9B85F3552806DD8A006EDF51 /* XCombatellegCombatFinishRegard.m */, + 9B1B72BD2800422E003FACE9 /* XPAnchorPKRuleView.h */, + 9B1B72BE2800422E003FACE9 /* XPAnchorPKRuleView.m */, + E8DD25D8295583920043C7D5 /* XPAnchorRandomPKRuleView.h */, + E8DD25D9295583920043C7D5 /* XPAnchorRandomPKRuleView.m */, + 9B2EA7C428041EFC00ED17BF /* XPAnchorPkPanelView.h */, + 9B2EA7C528041EFC00ED17BF /* XPAnchorPkPanelView.m */, + 9B2EA7CA2804245500ED17BF /* XPAnchorPKPanelUserView.h */, + 9B2EA7CB2804245500ED17BF /* XPAnchorPKPanelUserView.m */, + 9B3A1DF2280571000058E2DD /* XPAnchorPKInviteView.h */, + 9B3A1DF3280571000058E2DD /* XPAnchorPKInviteView.m */, + 9B85F3512806AB9A006EDF51 /* XPAnchorPKResultView.h */, + 9B85F3522806AB9A006EDF51 /* XPAnchorPKResultView.m */, + 9B85F3542806DD8A006EDF51 /* XPAnchorPKFinishView.h */, + 9B85F3552806DD8A006EDF51 /* XPAnchorPKFinishView.m */, ); path = SubViews; sourceTree = ""; @@ -4831,8 +4675,8 @@ 9B1B72A728003196003FACE9 /* Cell */ = { isa = PBXGroup; children = ( - 9B1B72BA28003E06003FACE9 /* XCombatellegCombatTabulationRegardElement.h */, - 9B1B72BB28003E06003FACE9 /* XCombatellegCombatTabulationRegardElement.m */, + 9B1B72BA28003E06003FACE9 /* XPAnchorPKTableViewCell.h */, + 9B1B72BB28003E06003FACE9 /* XPAnchorPKTableViewCell.m */, ); path = Cell; sourceTree = ""; @@ -4840,8 +4684,8 @@ 9B1B72A82800319B003FACE9 /* Presenter */ = { isa = PBXGroup; children = ( - 9B1B72B628003772003FACE9 /* XCombatellegCombatExternalizer.h */, - 9B1B72B728003772003FACE9 /* XCombatellegCombatExternalizer.m */, + 9B1B72B628003772003FACE9 /* XPAnchorPKPresenter.h */, + 9B1B72B728003772003FACE9 /* XPAnchorPKPresenter.m */, ); path = Presenter; sourceTree = ""; @@ -4849,7 +4693,7 @@ 9B1B72A9280031A2003FACE9 /* Protocol */ = { isa = PBXGroup; children = ( - 9B1B72B9280037C5003FACE9 /* XCombatellegCombatCeremony.h */, + 9B1B72B9280037C5003FACE9 /* XPAnchorPKProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -4868,10 +4712,10 @@ 9B2F72CD28E45A1C0000E4FA /* QuickMessageView */ = { isa = PBXGroup; children = ( - 9B2F72CE28E45A480000E4FA /* YUMIChamberMHTuickCommunicationContainRegard.h */, - 9B2F72CF28E45A480000E4FA /* YUMIChamberMHTuickCommunicationContainRegard.m */, - 9B2F72D128E45C5A0000E4FA /* YUMIChamberMHTuidkCommunicationElement.h */, - 9B2F72D228E45C5A0000E4FA /* YUMIChamberMHTuidkCommunicationElement.m */, + 9B2F72CE28E45A480000E4FA /* XPRoomQuickMessageContainView.h */, + 9B2F72CF28E45A480000E4FA /* XPRoomQuickMessageContainView.m */, + 9B2F72D128E45C5A0000E4FA /* XPRoomQuidkMessageCell.h */, + 9B2F72D228E45C5A0000E4FA /* XPRoomQuidkMessageCell.m */, ); path = QuickMessageView; sourceTree = ""; @@ -4879,8 +4723,8 @@ 9B33E3C827D85379003B0E62 /* File */ = { isa = PBXGroup; children = ( - 9B33E3C927D85379003B0E62 /* UpwardsloadAccurate.m */, - 9B33E3CA27D85379003B0E62 /* UpwardsloadAccurate.h */, + 9B33E3C927D85379003B0E62 /* UploadFile.m */, + 9B33E3CA27D85379003B0E62 /* UploadFile.h */, ); path = File; sourceTree = ""; @@ -4888,14 +4732,14 @@ 9B42868F28C1AEBE009034D2 /* Model */ = { isa = PBXGroup; children = ( - 9B42869028C1AED4009034D2 /* YUMIAchieveDeficitSheatheMatrix.h */, - 9B42869128C1AED4009034D2 /* YUMIAchieveDeficitSheatheMatrix.m */, - 9B42869328C1E00A009034D2 /* YUMIDeficitSheatheConsequentMatrix.h */, - 9B42869428C1E00A009034D2 /* YUMIDeficitSheatheConsequentMatrix.m */, - 9B42869628C1E06B009034D2 /* YUMIDeficitSheatheMatrix.h */, - 9B42869728C1E06B009034D2 /* YUMIDeficitSheatheMatrix.m */, - 9BF4BEBA28D4182E009CF6C2 /* YUMIUnfoildDeficitSheatheMatrix.h */, - 9BF4BEBB28D4182E009CF6C2 /* YUMIUnfoildDeficitSheatheMatrix.m */, + 9B42869028C1AED4009034D2 /* XPReceiveRedPacketModel.h */, + 9B42869128C1AED4009034D2 /* XPReceiveRedPacketModel.m */, + 9B42869328C1E00A009034D2 /* XPRedPacketResultModel.h */, + 9B42869428C1E00A009034D2 /* XPRedPacketResultModel.m */, + 9B42869628C1E06B009034D2 /* XPRedPacketModel.h */, + 9B42869728C1E06B009034D2 /* XPRedPacketModel.m */, + 9BF4BEBA28D4182E009CF6C2 /* XPOpenRedPacketModel.h */, + 9BF4BEBB28D4182E009CF6C2 /* XPOpenRedPacketModel.m */, ); path = Model; sourceTree = ""; @@ -4903,8 +4747,8 @@ 9B42869928C1FD22009034D2 /* Cell */ = { isa = PBXGroup; children = ( - 9B42869A28C1FD3D009034D2 /* YUMIUnfoildDeficitSheatheElement.h */, - 9B42869B28C1FD3D009034D2 /* YUMIUnfoildDeficitSheatheElement.m */, + 9B42869A28C1FD3D009034D2 /* XPOpenRedPacketCell.h */, + 9B42869B28C1FD3D009034D2 /* XPOpenRedPacketCell.m */, ); path = Cell; sourceTree = ""; @@ -4912,8 +4756,8 @@ 9B4C5B83292F81D000CEA41B /* Model */ = { isa = PBXGroup; children = ( - 9B4C5B84292F81FA00CEA41B /* YUMIInterlocutionStatementFanaticsParatiesMatrix.h */, - 9B4C5B85292F81FA00CEA41B /* YUMIInterlocutionStatementFanaticsParatiesMatrix.m */, + 9B4C5B84292F81FA00CEA41B /* XPSessionListFansPartyModel.h */, + 9B4C5B85292F81FA00CEA41B /* XPSessionListFansPartyModel.m */, ); path = Model; sourceTree = ""; @@ -4921,8 +4765,8 @@ 9B6E856B281AAB8B0041A321 /* Model */ = { isa = PBXGroup; children = ( - 9B6E856C281AABAB0041A321 /* YUMIChamberEncourageMatrix.h */, - 9B6E856D281AABAB0041A321 /* YUMIChamberEncourageMatrix.m */, + 9B6E856C281AABAB0041A321 /* XPRoomRecommendModel.h */, + 9B6E856D281AABAB0041A321 /* XPRoomRecommendModel.m */, ); path = Model; sourceTree = ""; @@ -4931,8 +4775,8 @@ isa = PBXGroup; children = ( 9B6E8574281ABEB20041A321 /* SubViews */, - 9B6E8568281A982A0041A321 /* YUMIChamberEncourageRegard.h */, - 9B6E8569281A982A0041A321 /* YUMIChamberEncourageRegard.m */, + 9B6E8568281A982A0041A321 /* XPRoomRecommendView.h */, + 9B6E8569281A982A0041A321 /* XPRoomRecommendView.m */, 9B6E856B281AAB8B0041A321 /* Model */, ); path = RoomRecommend; @@ -4941,12 +4785,12 @@ 9B6E8574281ABEB20041A321 /* SubViews */ = { isa = PBXGroup; children = ( - 9B6E8571281AB9B20041A321 /* YUMIChamberInsideEncourageElement.h */, - 9B6E8572281AB9B20041A321 /* YUMIChamberInsideEncourageElement.m */, - 9B6E8575281ABECC0041A321 /* YUMIChamberInsideEncourageDispossessElement.h */, - 9B6E8576281ABECC0041A321 /* YUMIChamberInsideEncourageDispossessElement.m */, - 9BAC92F328E6E63000147DD8 /* YUMIChamberInsideOperationElement.h */, - 9BAC92F428E6E63000147DD8 /* YUMIChamberInsideOperationElement.m */, + 9B6E8571281AB9B20041A321 /* XPRoomInsideRecommendCell.h */, + 9B6E8572281AB9B20041A321 /* XPRoomInsideRecommendCell.m */, + 9B6E8575281ABECC0041A321 /* XPRoomInsideRecommendEmptyCell.h */, + 9B6E8576281ABECC0041A321 /* XPRoomInsideRecommendEmptyCell.m */, + 9BAC92F328E6E63000147DD8 /* XPRoomInsideOperationCell.h */, + 9BAC92F428E6E63000147DD8 /* XPRoomInsideOperationCell.m */, ); path = SubViews; sourceTree = ""; @@ -4956,10 +4800,10 @@ children = ( 9BDA3E7227FD40DC00517FE6 /* FansTeam */, 9B7B606327BBA0D40070BB72 /* Model */, - 9B7B606027BB96E40070BB72 /* YUMIChamberKellegAbstractSolitaireRegard.h */, - 9B7B606127BB96E40070BB72 /* YUMIChamberKellegAbstractSolitaireRegard.m */, - 9B7B605927BB53060070BB72 /* XCombatellegAudienceUpwardsLoudspeakerRegard.h */, - 9B7B605A27BB53060070BB72 /* XCombatellegAudienceUpwardsLoudspeakerRegard.m */, + 9B7B606027BB96E40070BB72 /* XPRoomAnchorInfoCardView.h */, + 9B7B606127BB96E40070BB72 /* XPRoomAnchorInfoCardView.m */, + 9B7B605927BB53060070BB72 /* XPAnchorAudienceUpMicView.h */, + 9B7B605A27BB53060070BB72 /* XPAnchorAudienceUpMicView.m */, ); path = AnchorView; sourceTree = ""; @@ -4967,8 +4811,8 @@ 9B7B606327BBA0D40070BB72 /* Model */ = { isa = PBXGroup; children = ( - 9B7B606427BBA0EE0070BB72 /* XCombatellegAttentDischargeAbstract.h */, - 9B7B606527BBA0EE0070BB72 /* XCombatellegAttentDischargeAbstract.m */, + 9B7B606427BBA0EE0070BB72 /* XPAnchorAttentSendInfo.h */, + 9B7B606527BBA0EE0070BB72 /* XPAnchorAttentSendInfo.m */, ); path = Model; sourceTree = ""; @@ -4977,12 +4821,12 @@ isa = PBXGroup; children = ( E88E4A7D297673C600019A50 /* View */, - 9B7D80482753783D003DAC0C /* InterlocutionRegardGovernancer.h */, - 9B7D80492753783D003DAC0C /* InterlocutionRegardGovernancer.m */, - E8E20BD9281645300033B688 /* InterlocutionAbstractRegardGovernancer.h */, - E8E20BDA281645300033B688 /* InterlocutionAbstractRegardGovernancer.m */, - E86E79D428A4EA0C006DAF48 /* InterlocutionVentureCache.h */, - E86E79D528A4EA0C006DAF48 /* InterlocutionVentureCache.m */, + 9B7D80482753783D003DAC0C /* SessionViewController.h */, + 9B7D80492753783D003DAC0C /* SessionViewController.m */, + E8E20BD9281645300033B688 /* SessionInfoViewController.h */, + E8E20BDA281645300033B688 /* SessionInfoViewController.m */, + E86E79D428A4EA0C006DAF48 /* SessionRiskCache.h */, + E86E79D528A4EA0C006DAF48 /* SessionRiskCache.m */, 18F403A72758B67900A6C548 /* Content */, E86B911B281034F10007DEE7 /* Cell */, ); @@ -4992,10 +4836,10 @@ 9B7D904A287BC4FC0033A45E /* AnchorCycleView */ = { isa = PBXGroup; children = ( - 9B7D904B287BC5E20033A45E /* KellegChamberScrollRegard.h */, - 9B7D904C287BC5E20033A45E /* KellegChamberScrollRegard.m */, - 9BE2FA8E288010D300EF3D83 /* KellegChamberSrollTipRegard.h */, - 9BE2FA8F288010D300EF3D83 /* KellegChamberSrollTipRegard.m */, + 9B7D904B287BC5E20033A45E /* AnchorRoomScrollView.h */, + 9B7D904C287BC5E20033A45E /* AnchorRoomScrollView.m */, + 9BE2FA8E288010D300EF3D83 /* AnchorRoomSrollTipView.h */, + 9BE2FA8F288010D300EF3D83 /* AnchorRoomSrollTipView.m */, ); path = AnchorCycleView; sourceTree = ""; @@ -5003,10 +4847,10 @@ 9B85B6D4279FDAA900A0A1AC /* SubViews */ = { isa = PBXGroup; children = ( - 9B85B6D5279FDABA00A0A1AC /* YUMIConsumerSolitaireCommunicationSolitaireRegard.h */, - 9B85B6D6279FDABA00A0A1AC /* YUMIConsumerSolitaireCommunicationSolitaireRegard.m */, - 9B85B6D8279FDC5200A0A1AC /* YUMIConsumerSolitaireCommunicationAssembletionRegardElement.h */, - 9B85B6D9279FDC5200A0A1AC /* YUMIConsumerSolitaireCommunicationAssembletionRegardElement.m */, + 9B85B6D5279FDABA00A0A1AC /* XPUserCardSkillCardView.h */, + 9B85B6D6279FDABA00A0A1AC /* XPUserCardSkillCardView.m */, + 9B85B6D8279FDC5200A0A1AC /* XPUserCardSkillCollectionViewCell.h */, + 9B85B6D9279FDC5200A0A1AC /* XPUserCardSkillCollectionViewCell.m */, ); path = SubViews; sourceTree = ""; @@ -5014,8 +4858,8 @@ 9B9BBF80288FBF93004E2E74 /* NewUserGift */ = { isa = PBXGroup; children = ( - 9B9BBF81288FBFB3004E2E74 /* YUMIStrangeConsumerChamberPresentRegard.h */, - 9B9BBF82288FBFB3004E2E74 /* YUMIStrangeConsumerChamberPresentRegard.m */, + 9B9BBF81288FBFB3004E2E74 /* XPNewUserRoomGiftView.h */, + 9B9BBF82288FBFB3004E2E74 /* XPNewUserRoomGiftView.m */, ); path = NewUserGift; sourceTree = ""; @@ -5032,8 +4876,8 @@ 9BA3B40C293DD2E00071DF1C /* VersionUpdate */ = { isa = PBXGroup; children = ( - 9BA3B40D293DD2F90071DF1C /* YUMIAscensionRegard.h */, - 9BA3B40E293DD2F90071DF1C /* YUMIAscensionRegard.m */, + 9BA3B40D293DD2F90071DF1C /* XPUpgradeView.h */, + 9BA3B40E293DD2F90071DF1C /* XPUpgradeView.m */, ); path = VersionUpdate; sourceTree = ""; @@ -5046,12 +4890,12 @@ 9BA812D928BF53DD00783EA7 /* Api */, 9BA812D828BF539300783EA7 /* Protocol */, 9BA812D728BF538E00783EA7 /* Presenter */, - 9BA812D428BF52E100783EA7 /* YUMIChamberDischargeDeficitSheatheRegardGovernancer.h */, - 9BA812D528BF52E100783EA7 /* YUMIChamberDischargeDeficitSheatheRegardGovernancer.m */, - 9BA812E228BF70A600783EA7 /* YUMIChamberDeficitSheathePwordRegard.h */, - 9BA812E328BF70A600783EA7 /* YUMIChamberDeficitSheathePwordRegard.m */, - 9B42868C28C1AE2D009034D2 /* YUMIAchieveDeficitSheatheRegard.h */, - 9B42868D28C1AE2D009034D2 /* YUMIAchieveDeficitSheatheRegard.m */, + 9BA812D428BF52E100783EA7 /* XPRoomSendRedPacketViewController.h */, + 9BA812D528BF52E100783EA7 /* XPRoomSendRedPacketViewController.m */, + 9BA812E228BF70A600783EA7 /* XPRoomRedPacketPwdView.h */, + 9BA812E328BF70A600783EA7 /* XPRoomRedPacketPwdView.m */, + 9B42868C28C1AE2D009034D2 /* XPReceiveRedPacketView.h */, + 9B42868D28C1AE2D009034D2 /* XPReceiveRedPacketView.m */, ); path = SendRedPacket; sourceTree = ""; @@ -5059,8 +4903,8 @@ 9BA812D728BF538E00783EA7 /* Presenter */ = { isa = PBXGroup; children = ( - 9BA812DB28BF6A7300783EA7 /* YUMIChamberDeficitSheatheExternalizer.h */, - 9BA812DC28BF6A7300783EA7 /* YUMIChamberDeficitSheatheExternalizer.m */, + 9BA812DB28BF6A7300783EA7 /* XPRoomRedPacketPresenter.h */, + 9BA812DC28BF6A7300783EA7 /* XPRoomRedPacketPresenter.m */, ); path = Presenter; sourceTree = ""; @@ -5068,7 +4912,7 @@ 9BA812D828BF539300783EA7 /* Protocol */ = { isa = PBXGroup; children = ( - 9BA812E128BF6AFB00783EA7 /* FBCChamberRedPacketCeremony.h */, + 9BA812E128BF6AFB00783EA7 /* XPRoomRedPacketProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -5097,8 +4941,8 @@ 9BC5C916277C8A17007C8719 /* Model */ = { isa = PBXGroup; children = ( - 9BD63FB2277EF1B3006EB744 /* YUMIReleaseWirelessMatrix.h */, - 9BD63FB3277EF1B3006EB744 /* YUMIReleaseWirelessMatrix.m */, + 9BD63FB2277EF1B3006EB744 /* XPReleaseRadioModel.h */, + 9BD63FB3277EF1B3006EB744 /* XPReleaseRadioModel.m */, ); path = Model; sourceTree = ""; @@ -5116,10 +4960,10 @@ isa = PBXGroup; children = ( 9BD63FAF277EEAC2006EB744 /* Cell */, - 9BC5C91A277C8A7B007C8719 /* YUMIReleaseWirelessRegardGovernancer.h */, - 9BC5C91B277C8A7B007C8719 /* YUMIReleaseWirelessRegardGovernancer.m */, - 9BC5C91D277C902B007C8719 /* YUMIReleaseWirelessRegard.h */, - 9BC5C91E277C902B007C8719 /* YUMIReleaseWirelessRegard.m */, + 9BC5C91A277C8A7B007C8719 /* XPReleaseRadioViewController.h */, + 9BC5C91B277C8A7B007C8719 /* XPReleaseRadioViewController.m */, + 9BC5C91D277C902B007C8719 /* XPReleaseRadioView.h */, + 9BC5C91E277C902B007C8719 /* XPReleaseRadioView.m */, ); path = View; sourceTree = ""; @@ -5127,8 +4971,8 @@ 9BC5C919277C8A4D007C8719 /* Presenter */ = { isa = PBXGroup; children = ( - 9BD63FAC277EE97A006EB744 /* YUMIReleaseWirelessExternalizer.h */, - 9BD63FAD277EE97A006EB744 /* YUMIReleaseWirelessExternalizer.m */, + 9BD63FAC277EE97A006EB744 /* XPReleaseRadioPresenter.h */, + 9BD63FAD277EE97A006EB744 /* XPReleaseRadioPresenter.m */, ); path = Presenter; sourceTree = ""; @@ -5137,8 +4981,8 @@ isa = PBXGroup; children = ( 9BE570B928F65B6000D491A5 /* Cell */, - 9BCB999E28F571B500466D64 /* YUMIManeAssembleParatiesChamberRegardGovernancer.h */, - 9BCB999F28F571B500466D64 /* YUMIManeAssembleParatiesChamberRegardGovernancer.m */, + 9BCB999E28F571B500466D64 /* XPMineCollectPartyRoomViewController.h */, + 9BCB999F28F571B500466D64 /* XPMineCollectPartyRoomViewController.m */, ); path = CollectRoom; sourceTree = ""; @@ -5146,8 +4990,8 @@ 9BD2ECCF288F832300F5CD9A /* FootPrint */ = { isa = PBXGroup; children = ( - 9BD2ECD0288F833B00F5CD9A /* YUMIManeTerminalImpressionMatrix.h */, - 9BD2ECD1288F833B00F5CD9A /* YUMIManeTerminalImpressionMatrix.m */, + 9BD2ECD0288F833B00F5CD9A /* XPMineFootPrintModel.h */, + 9BD2ECD1288F833B00F5CD9A /* XPMineFootPrintModel.m */, ); path = FootPrint; sourceTree = ""; @@ -5155,8 +4999,8 @@ 9BD2ECD7288F865900F5CD9A /* FootPrint */ = { isa = PBXGroup; children = ( - 9BD2ECD8288F867000F5CD9A /* YUMIManeTerminalImpressionTabulationRegardElement.h */, - 9BD2ECD9288F867000F5CD9A /* YUMIManeTerminalImpressionTabulationRegardElement.m */, + 9BD2ECD8288F867000F5CD9A /* XPMineFootPrintTableViewCell.h */, + 9BD2ECD9288F867000F5CD9A /* XPMineFootPrintTableViewCell.m */, ); path = FootPrint; sourceTree = ""; @@ -5164,8 +5008,8 @@ 9BD63FAF277EEAC2006EB744 /* Cell */ = { isa = PBXGroup; children = ( - 9BCE6142277D657600CC0358 /* YUMIReleaseWirelessTabulationRegardElement.h */, - 9BCE6143277D657600CC0358 /* YUMIReleaseWirelessTabulationRegardElement.m */, + 9BCE6142277D657600CC0358 /* XPReleaseRadioTableViewCell.h */, + 9BCE6143277D657600CC0358 /* XPReleaseRadioTableViewCell.m */, ); path = Cell; sourceTree = ""; @@ -5173,7 +5017,7 @@ 9BD63FB0277EF132006EB744 /* Protocol */ = { isa = PBXGroup; children = ( - 9BD63FB1277EF14A006EB744 /* FBCReleaseRadioCeremony.h */, + 9BD63FB1277EF14A006EB744 /* XPReleaseRadioProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -5182,16 +5026,16 @@ isa = PBXGroup; children = ( 9B4C5B83292F81D000CEA41B /* Model */, - 9BD798AF29262434003E03E6 /* YUMIInterlocutionStatementIntelligenceRegard.h */, - 9BD798B029262434003E03E6 /* YUMIInterlocutionStatementIntelligenceRegard.m */, - 9BD798B2292632FE003E03E6 /* YUMIInterlocutionStatementIntelligenceProvisionRegard.h */, - 9BD798B3292632FE003E03E6 /* YUMIInterlocutionStatementIntelligenceProvisionRegard.m */, - 9BD798B52926362F003E03E6 /* YUMIInterlocutionStatementIntelligenceProvision.h */, - 9BD798B62926362F003E03E6 /* YUMIInterlocutionStatementIntelligenceProvision.m */, - 9B87B3CB2926473D00085110 /* YUMIInterlocutionStatementIntelligenceAssistantElement.h */, - 9B87B3CC2926473D00085110 /* YUMIInterlocutionStatementIntelligenceAssistantElement.m */, - E8778AE52988C1E000CF139B /* YUMIInterlocutionHalloImportRegard.h */, - E8778AE62988C1E000CF139B /* YUMIInterlocutionHalloImportRegard.m */, + 9BD798AF29262434003E03E6 /* XPSessionListHeadView.h */, + 9BD798B029262434003E03E6 /* XPSessionListHeadView.m */, + 9BD798B2292632FE003E03E6 /* XPSessionListHeadItemView.h */, + 9BD798B3292632FE003E03E6 /* XPSessionListHeadItemView.m */, + 9BD798B52926362F003E03E6 /* XPSessionListHeadItem.h */, + 9BD798B62926362F003E03E6 /* XPSessionListHeadItem.m */, + 9B87B3CB2926473D00085110 /* XPSessionListHeadFriendCell.h */, + 9B87B3CC2926473D00085110 /* XPSessionListHeadFriendCell.m */, + E8778AE52988C1E000CF139B /* XPSessionHelloEnterView.h */, + E8778AE62988C1E000CF139B /* XPSessionHelloEnterView.m */, ); path = SessionListHeadView; sourceTree = ""; @@ -5199,10 +5043,10 @@ 9BD9A17D27A0EFB1004186FE /* Visitor */ = { isa = PBXGroup; children = ( - 9BD9A17E27A0EFC7004186FE /* YUMIManeVacationerTabulationRegardElement.h */, - 9BD9A17F27A0EFC7004186FE /* YUMIManeVacationerTabulationRegardElement.m */, - 9B2489BA27C4C056006CFB85 /* YUMIManeVacationerDispossessTabulationRegardElement.h */, - 9B2489BB27C4C056006CFB85 /* YUMIManeVacationerDispossessTabulationRegardElement.m */, + 9BD9A17E27A0EFC7004186FE /* XPMineVisitorTableViewCell.h */, + 9BD9A17F27A0EFC7004186FE /* XPMineVisitorTableViewCell.m */, + 9B2489BA27C4C056006CFB85 /* XPMineVisitorEmptyTableViewCell.h */, + 9B2489BB27C4C056006CFB85 /* XPMineVisitorEmptyTableViewCell.m */, ); path = Visitor; sourceTree = ""; @@ -5210,10 +5054,10 @@ 9BD9A18127A0F110004186FE /* Visitor */ = { isa = PBXGroup; children = ( - 9BD9A18227A0F128004186FE /* YUMIManeVacationerProvisionMatrix.h */, - 9BD9A18327A0F128004186FE /* YUMIManeVacationerProvisionMatrix.m */, - 9BD9A18527A120FD004186FE /* YUMIManeVacationerUnReadMatrix.h */, - 9BD9A18627A120FD004186FE /* YUMIManeVacationerUnReadMatrix.m */, + 9BD9A18227A0F128004186FE /* XPMineVisitorItemModel.h */, + 9BD9A18327A0F128004186FE /* XPMineVisitorItemModel.m */, + 9BD9A18527A120FD004186FE /* XPMineVisitorUnReadModel.h */, + 9BD9A18627A120FD004186FE /* XPMineVisitorUnReadModel.m */, ); path = Visitor; sourceTree = ""; @@ -5230,14 +5074,14 @@ 9BDA3E7027FD401700517FE6 /* View */ = { isa = PBXGroup; children = ( - 9BDA3E7527FD41C200517FE6 /* XCombatellegFanaticsSquadRegardGovernancer.h */, - 9BDA3E7627FD41C200517FE6 /* XCombatellegFanaticsSquadRegardGovernancer.m */, - 9BDA3E7827FD43EF00517FE6 /* XCombatellegFanaticsSquadEntranceRegard.h */, - 9BDA3E7927FD43EF00517FE6 /* XCombatellegFanaticsSquadEntranceRegard.m */, - 9BB89DC427FEB9E100586A83 /* XCombatellegFanaticsmissionRegardGovernancer.h */, - 9BB89DC527FEB9E100586A83 /* XCombatellegFanaticsmissionRegardGovernancer.m */, - 9BE9F10327FF04CF00667200 /* XCombatellegFanaticsmissionTabulationRegardElement.h */, - 9BE9F10427FF04CF00667200 /* XCombatellegFanaticsmissionTabulationRegardElement.m */, + 9BDA3E7527FD41C200517FE6 /* XPAnchorFansTeamViewController.h */, + 9BDA3E7627FD41C200517FE6 /* XPAnchorFansTeamViewController.m */, + 9BDA3E7827FD43EF00517FE6 /* XPAnchorFansTeamEntranceView.h */, + 9BDA3E7927FD43EF00517FE6 /* XPAnchorFansTeamEntranceView.m */, + 9BB89DC427FEB9E100586A83 /* XPAnchorFansTaskViewController.h */, + 9BB89DC527FEB9E100586A83 /* XPAnchorFansTaskViewController.m */, + 9BE9F10327FF04CF00667200 /* XPAnchorFansTaskTableViewCell.h */, + 9BE9F10427FF04CF00667200 /* XPAnchorFansTaskTableViewCell.m */, ); path = View; sourceTree = ""; @@ -5245,8 +5089,8 @@ 9BDA3E7127FD401C00517FE6 /* Presenter */ = { isa = PBXGroup; children = ( - 9BDA3E7B27FD47AB00517FE6 /* XCombatellegFanaticsSquadExternalizer.h */, - 9BDA3E7C27FD47AB00517FE6 /* XCombatellegFanaticsSquadExternalizer.m */, + 9BDA3E7B27FD47AB00517FE6 /* XPAnchorFansTeamPresenter.h */, + 9BDA3E7C27FD47AB00517FE6 /* XPAnchorFansTeamPresenter.m */, ); path = Presenter; sourceTree = ""; @@ -5266,16 +5110,16 @@ 9BDA3E7327FD417900517FE6 /* Model */ = { isa = PBXGroup; children = ( - 9BB89DC127FE7F3A00586A83 /* XCombatellegFanaticsRelationMatrix.h */, - 9BB89DC227FE7F3A00586A83 /* XCombatellegFanaticsRelationMatrix.m */, - 9BE9F0F727FED12D00667200 /* XCombatellegFanaticsPrivilegeMatrix.h */, - 9BE9F0F827FED12D00667200 /* XCombatellegFanaticsPrivilegeMatrix.m */, - 9BE9F0FA27FED2E100667200 /* XCombatellegFanaticsJoinMatrix.h */, - 9BE9F0FB27FED2E100667200 /* XCombatellegFanaticsJoinMatrix.m */, - 9BE9F0FD27FED76500667200 /* XCombatellegFanaticsmissionMatrix.h */, - 9BE9F0FE27FED76500667200 /* XCombatellegFanaticsmissionMatrix.m */, - 9BE9F10027FEE5C200667200 /* XCombatellegFanaticsmissionSpecificMatrix.h */, - 9BE9F10127FEE5C200667200 /* XCombatellegFanaticsmissionSpecificMatrix.m */, + 9BB89DC127FE7F3A00586A83 /* XPAnchorFansRelationModel.h */, + 9BB89DC227FE7F3A00586A83 /* XPAnchorFansRelationModel.m */, + 9BE9F0F727FED12D00667200 /* XPAnchorFansPrivilegeModel.h */, + 9BE9F0F827FED12D00667200 /* XPAnchorFansPrivilegeModel.m */, + 9BE9F0FA27FED2E100667200 /* XPAnchorFansJoinModel.h */, + 9BE9F0FB27FED2E100667200 /* XPAnchorFansJoinModel.m */, + 9BE9F0FD27FED76500667200 /* XPAnchorFansTaskModel.h */, + 9BE9F0FE27FED76500667200 /* XPAnchorFansTaskModel.m */, + 9BE9F10027FEE5C200667200 /* XPAnchorFansTaskDetailModel.h */, + 9BE9F10127FEE5C200667200 /* XPAnchorFansTaskDetailModel.m */, ); path = Model; sourceTree = ""; @@ -5283,7 +5127,7 @@ 9BDA3E7E27FD47FB00517FE6 /* Protocol */ = { isa = PBXGroup; children = ( - 9BDA3E7F27FD480D00517FE6 /* XCombatellegFanaticsTeamCeremony.h */, + 9BDA3E7F27FD480D00517FE6 /* XPAnchorFansTeamProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -5291,10 +5135,10 @@ 9BE01AF42893E7E000B50299 /* Cell */ = { isa = PBXGroup; children = ( - 9BE01AF52893E7F500B50299 /* YUMIStrangeConsumerReindictAssembletionRegardElement.h */, - 9BE01AF62893E7F500B50299 /* YUMIStrangeConsumerReindictAssembletionRegardElement.m */, - 9BFE0D8C2898C8C300F53C24 /* XCombatellegSolitaireCommunicationAssembletionRegardElement.h */, - 9BFE0D8D2898C8C300F53C24 /* XCombatellegSolitaireCommunicationAssembletionRegardElement.m */, + 9BE01AF52893E7F500B50299 /* XPNewUserRechargeCollectionViewCell.h */, + 9BE01AF62893E7F500B50299 /* XPNewUserRechargeCollectionViewCell.m */, + 9BFE0D8C2898C8C300F53C24 /* XPAnchorCardSkillCollectionViewCell.h */, + 9BFE0D8D2898C8C300F53C24 /* XPAnchorCardSkillCollectionViewCell.m */, ); path = Cell; sourceTree = ""; @@ -5302,10 +5146,10 @@ 9BE570B928F65B6000D491A5 /* Cell */ = { isa = PBXGroup; children = ( - 9BE570BA28F65B7200D491A5 /* YUMIManeAssembleChamberElement.h */, - 9BE570BB28F65B7200D491A5 /* YUMIManeAssembleChamberElement.m */, - 9BCB99A428F582EC00466D64 /* YUMIManeAssembleChamberCompileElement.h */, - 9BCB99A528F582EC00466D64 /* YUMIManeAssembleChamberCompileElement.m */, + 9BE570BA28F65B7200D491A5 /* XPMineCollectRoomCell.h */, + 9BE570BB28F65B7200D491A5 /* XPMineCollectRoomCell.m */, + 9BCB99A428F582EC00466D64 /* XPMineCollectRoomEditCell.h */, + 9BCB99A528F582EC00466D64 /* XPMineCollectRoomEditCell.m */, ); path = Cell; sourceTree = ""; @@ -5313,8 +5157,8 @@ 9BFB101C2897CC3300B3985E /* AnchorCard */ = { isa = PBXGroup; children = ( - 9BFB101D2897CC4300B3985E /* XCombatellegSolitaireRegard.h */, - 9BFB101E2897CC4300B3985E /* XCombatellegSolitaireRegard.m */, + 9BFB101D2897CC4300B3985E /* XPAnchorCardView.h */, + 9BFB101E2897CC4300B3985E /* XPAnchorCardView.m */, ); path = AnchorCard; sourceTree = ""; @@ -5322,8 +5166,8 @@ 9BFE0D8F289903F600F53C24 /* TaskTip */ = { isa = PBXGroup; children = ( - 9BFE0D902899042600F53C24 /* YUMImissionCompleteTipRegard.h */, - 9BFE0D912899042600F53C24 /* YUMImissionCompleteTipRegard.m */, + 9BFE0D902899042600F53C24 /* XPTaskCompleteTipView.h */, + 9BFE0D912899042600F53C24 /* XPTaskCompleteTipView.m */, ); path = TaskTip; sourceTree = ""; @@ -5362,8 +5206,8 @@ E801273927E322E900BAC3F2 /* Protocol */ = { isa = PBXGroup; children = ( - E801274427E3240000BAC3F2 /* FBCChamberCombatCeremony.h */, - E8664EE027E45EE6000171BA /* FBCChamberCombatRecordCeremony.h */, + E801274427E3240000BAC3F2 /* XPRoomPKProtocol.h */, + E8664EE027E45EE6000171BA /* XPRoomPKRecordProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -5371,10 +5215,10 @@ E801273A27E322F500BAC3F2 /* Presenter */ = { isa = PBXGroup; children = ( - E801274127E323E500BAC3F2 /* YUMIChamberCombatExternalizer.h */, - E801274227E323E500BAC3F2 /* YUMIChamberCombatExternalizer.m */, - E8664EDD27E45EC7000171BA /* YUMIChamberCombatReflectionExternalizer.h */, - E8664EDE27E45EC7000171BA /* YUMIChamberCombatReflectionExternalizer.m */, + E801274127E323E500BAC3F2 /* XPRoomPKPresenter.h */, + E801274227E323E500BAC3F2 /* XPRoomPKPresenter.m */, + E8664EDD27E45EC7000171BA /* XPRoomPKRecordPresenter.h */, + E8664EDE27E45EC7000171BA /* XPRoomPKRecordPresenter.m */, ); path = Presenter; sourceTree = ""; @@ -5384,16 +5228,16 @@ children = ( E801275227E3321C00BAC3F2 /* SubViews */, E801274827E3278E00BAC3F2 /* Cell */, - E801273E27E323C800BAC3F2 /* YUMIChamberCombatRegardGovernancer.h */, - E801273F27E323C800BAC3F2 /* YUMIChamberCombatRegardGovernancer.m */, - E8664ED427E434D5000171BA /* YUMIChamberCombatReflectionRegardGovernancer.h */, - E8664ED527E434D5000171BA /* YUMIChamberCombatReflectionRegardGovernancer.m */, - E81AF32327F1D5B8003B9E43 /* YUMIChamberCombatProgressRegard.h */, - E81AF32427F1D5B8003B9E43 /* YUMIChamberCombatProgressRegard.m */, - E80A086327F318620027B30C /* YUMIChamberCombatDisportingRegard.h */, - E80A086427F318620027B30C /* YUMIChamberCombatDisportingRegard.m */, - E84843AD27F59E7E0050D365 /* YUMIChamberCombatConsequentRegard.h */, - E84843AE27F59E7E0050D365 /* YUMIChamberCombatConsequentRegard.m */, + E801273E27E323C800BAC3F2 /* XPRoomPKViewController.h */, + E801273F27E323C800BAC3F2 /* XPRoomPKViewController.m */, + E8664ED427E434D5000171BA /* XPRoomPKRecordViewController.h */, + E8664ED527E434D5000171BA /* XPRoomPKRecordViewController.m */, + E81AF32327F1D5B8003B9E43 /* XPRoomPKProgressView.h */, + E81AF32427F1D5B8003B9E43 /* XPRoomPKProgressView.m */, + E80A086327F318620027B30C /* XPRoomPKPlayingView.h */, + E80A086427F318620027B30C /* XPRoomPKPlayingView.m */, + E84843AD27F59E7E0050D365 /* XPRoomPKResultView.h */, + E84843AE27F59E7E0050D365 /* XPRoomPKResultView.m */, ); path = View; sourceTree = ""; @@ -5410,18 +5254,18 @@ E801273D27E3230F00BAC3F2 /* Model */ = { isa = PBXGroup; children = ( - E801275627E347FD00BAC3F2 /* ChamberCombatReflectionMatrix.h */, - E801275727E347FD00BAC3F2 /* ChamberCombatReflectionMatrix.m */, - E8664EE427E482EF000171BA /* ChamberCombatSquadMatrix.h */, - E8664EE527E482EF000171BA /* ChamberCombatSquadMatrix.m */, - E8664ED127E4258A000171BA /* ChamberCombatIntratemporalProvisionMatrix.h */, - E8664ED227E4258A000171BA /* ChamberCombatIntratemporalProvisionMatrix.m */, - E8A88D2B27E81E8700CA8837 /* ChamberCombatChooseConsumerMatrix.h */, - E8A88D2C27E81E8700CA8837 /* ChamberCombatChooseConsumerMatrix.m */, - E8A88D2E27E85EEA00CA8837 /* ChamberCombatAbstractMatrix.h */, - E8A88D2F27E85EEA00CA8837 /* ChamberCombatAbstractMatrix.m */, - E80A086027F2AC190027B30C /* ChamberCombatSpecificAbstractMatrix.h */, - E80A086127F2AC190027B30C /* ChamberCombatSpecificAbstractMatrix.m */, + E801275627E347FD00BAC3F2 /* RoomPKRecordModel.h */, + E801275727E347FD00BAC3F2 /* RoomPKRecordModel.m */, + E8664EE427E482EF000171BA /* RoomPKTeamModel.h */, + E8664EE527E482EF000171BA /* RoomPKTeamModel.m */, + E8664ED127E4258A000171BA /* RoomPKTimeItemModel.h */, + E8664ED227E4258A000171BA /* RoomPKTimeItemModel.m */, + E8A88D2B27E81E8700CA8837 /* RoomPKChooseUserModel.h */, + E8A88D2C27E81E8700CA8837 /* RoomPKChooseUserModel.m */, + E8A88D2E27E85EEA00CA8837 /* RoomPKInfoModel.h */, + E8A88D2F27E85EEA00CA8837 /* RoomPKInfoModel.m */, + E80A086027F2AC190027B30C /* RoomPKDetailInfoModel.h */, + E80A086127F2AC190027B30C /* RoomPKDetailInfoModel.m */, ); path = Model; sourceTree = ""; @@ -5429,18 +5273,18 @@ E801274827E3278E00BAC3F2 /* Cell */ = { isa = PBXGroup; children = ( - E801274927E327DA00BAC3F2 /* YUMIChamberCombatGenreTabulationRegardElement.h */, - E801274A27E327DA00BAC3F2 /* YUMIChamberCombatGenreTabulationRegardElement.m */, - E801274C27E3280000BAC3F2 /* YUMIChamberCombatVoteTabulationRegardElement.h */, - E801274D27E3280000BAC3F2 /* YUMIChamberCombatVoteTabulationRegardElement.m */, - E801274F27E3281100BAC3F2 /* YUMIChamberCombatIntratemporalTabulationRegardElement.h */, - E801275027E3281100BAC3F2 /* YUMIChamberCombatIntratemporalTabulationRegardElement.m */, - E8664ED727E4355C000171BA /* YUMIChamberCombatReflectionTabulationRegardElement.h */, - E8664ED827E4355C000171BA /* YUMIChamberCombatReflectionTabulationRegardElement.m */, - E8664EDA27E43632000171BA /* YUMIChamberCombatDispossessTabulationRegardElement.h */, - E8664EDB27E43632000171BA /* YUMIChamberCombatDispossessTabulationRegardElement.m */, - E8A88D2827E81C8600CA8837 /* YUMIChamberCombatConsumerAssembletionRegardElement.h */, - E8A88D2927E81C8600CA8837 /* YUMIChamberCombatConsumerAssembletionRegardElement.m */, + E801274927E327DA00BAC3F2 /* XPRoomPKTypeTableViewCell.h */, + E801274A27E327DA00BAC3F2 /* XPRoomPKTypeTableViewCell.m */, + E801274C27E3280000BAC3F2 /* XPRoomPKVoteTableViewCell.h */, + E801274D27E3280000BAC3F2 /* XPRoomPKVoteTableViewCell.m */, + E801274F27E3281100BAC3F2 /* XPRoomPKTimeTableViewCell.h */, + E801275027E3281100BAC3F2 /* XPRoomPKTimeTableViewCell.m */, + E8664ED727E4355C000171BA /* XPRoomPKRecordTableViewCell.h */, + E8664ED827E4355C000171BA /* XPRoomPKRecordTableViewCell.m */, + E8664EDA27E43632000171BA /* XPRoomPKEmptyTableViewCell.h */, + E8664EDB27E43632000171BA /* XPRoomPKEmptyTableViewCell.m */, + E8A88D2827E81C8600CA8837 /* XPRoomPKUserCollectionViewCell.h */, + E8A88D2927E81C8600CA8837 /* XPRoomPKUserCollectionViewCell.m */, ); path = Cell; sourceTree = ""; @@ -5448,18 +5292,18 @@ E801275227E3321C00BAC3F2 /* SubViews */ = { isa = PBXGroup; children = ( - E801275327E3326000BAC3F2 /* YUMIChamberCombatConsumerRegard.h */, - E801275427E3326000BAC3F2 /* YUMIChamberCombatConsumerRegard.m */, - E8664ECE27E42238000171BA /* YUMIChamberCombatIntratemporalPickerRegard.h */, - E8664ECF27E42238000171BA /* YUMIChamberCombatIntratemporalPickerRegard.m */, - E8664EE127E47711000171BA /* YUMIChamberCombatReflectionNickRegard.h */, - E8664EE227E47711000171BA /* YUMIChamberCombatReflectionNickRegard.m */, - E8A88D2527E8193400CA8837 /* YUMIChamberCombatChosenConsumerRegard.h */, - E8A88D2627E8193400CA8837 /* YUMIChamberCombatChosenConsumerRegard.m */, - E81AF32627F1EE69003B9E43 /* YUMIChamberCombatFasciaboardConsumerRegard.h */, - E81AF32727F1EE69003B9E43 /* YUMIChamberCombatFasciaboardConsumerRegard.m */, - E84843B027F5A0740050D365 /* YUMIRomCombatConsequentChampionDesignation.h */, - E84843B127F5A0740050D365 /* YUMIRomCombatConsequentChampionDesignation.m */, + E801275327E3326000BAC3F2 /* XPRoomPKUserView.h */, + E801275427E3326000BAC3F2 /* XPRoomPKUserView.m */, + E8664ECE27E42238000171BA /* XPRoomPKTimePickerView.h */, + E8664ECF27E42238000171BA /* XPRoomPKTimePickerView.m */, + E8664EE127E47711000171BA /* XPRoomPKRecordNickView.h */, + E8664EE227E47711000171BA /* XPRoomPKRecordNickView.m */, + E8A88D2527E8193400CA8837 /* XPRoomPKSelectUserView.h */, + E8A88D2627E8193400CA8837 /* XPRoomPKSelectUserView.m */, + E81AF32627F1EE69003B9E43 /* XPRoomPKPanelUserView.h */, + E81AF32727F1EE69003B9E43 /* XPRoomPKPanelUserView.m */, + E84843B027F5A0740050D365 /* XPRomPKResultTitleLabel.h */, + E84843B127F5A0740050D365 /* XPRomPKResultTitleLabel.m */, ); path = SubViews; sourceTree = ""; @@ -5467,14 +5311,14 @@ E804875F2717DD70008595F2 /* Model */ = { isa = PBXGroup; children = ( - E89D60BF271D64B9001F8895 /* ChamberAbstractMatrix.h */, - E89D60C0271D64B9001F8895 /* ChamberAbstractMatrix.m */, - E8252FEC27687DF1002B3164 /* ImportpriseAbstractMatrix.h */, - E8252FED27687DF1002B3164 /* ImportpriseAbstractMatrix.m */, - E8899C802785A694007944BE /* EngagementAbstractMatrix.h */, - E8899C812785A694007944BE /* EngagementAbstractMatrix.m */, - E87AE8BF284E184300CAFBB3 /* ChamberStrangeConsumerBewelcometoMatrix.h */, - E87AE8C0284E184300CAFBB3 /* ChamberStrangeConsumerBewelcometoMatrix.m */, + E89D60BF271D64B9001F8895 /* RoomInfoModel.h */, + E89D60C0271D64B9001F8895 /* RoomInfoModel.m */, + E8252FEC27687DF1002B3164 /* ActivityInfoModel.h */, + E8252FED27687DF1002B3164 /* ActivityInfoModel.m */, + E8899C802785A694007944BE /* DatingInfoModel.h */, + E8899C812785A694007944BE /* DatingInfoModel.m */, + E87AE8BF284E184300CAFBB3 /* RoomNewUserGreetModel.h */, + E87AE8C0284E184300CAFBB3 /* RoomNewUserGreetModel.m */, ); path = Model; sourceTree = ""; @@ -5491,8 +5335,8 @@ E80487612717DD92008595F2 /* Presenter */ = { isa = PBXGroup; children = ( - E89D60BB271D647A001F8895 /* YUMIChamberExternalizer.h */, - E89D60BC271D647A001F8895 /* YUMIChamberExternalizer.m */, + E89D60BB271D647A001F8895 /* XPRoomPresenter.h */, + E89D60BC271D647A001F8895 /* XPRoomPresenter.m */, ); path = Presenter; sourceTree = ""; @@ -5500,7 +5344,7 @@ E80487622717DDAE008595F2 /* Protocol */ = { isa = PBXGroup; children = ( - E89D60BE271D648D001F8895 /* FBCChamberCeremony.h */, + E89D60BE271D648D001F8895 /* XPRoomProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -5508,8 +5352,8 @@ E80B070F280D0A6700A79F63 /* Friend */ = { isa = PBXGroup; children = ( - E80B0710280D0A6700A79F63 /* FanaticsAbstractMatrix.h */, - E80B0711280D0A6700A79F63 /* FanaticsAbstractMatrix.m */, + E80B0710280D0A6700A79F63 /* FansInfoModel.h */, + E80B0711280D0A6700A79F63 /* FansInfoModel.m */, ); path = Friend; sourceTree = ""; @@ -5517,8 +5361,8 @@ E80CBDE727D0C528001E1EC2 /* Timer */ = { isa = PBXGroup; children = ( - E80CBDE827D0C53F001E1EC2 /* YUMIWeakIntratemporalr.h */, - E80CBDE927D0C53F001E1EC2 /* YUMIWeakIntratemporalr.m */, + E80CBDE827D0C53F001E1EC2 /* XPWeakTimer.h */, + E80CBDE927D0C53F001E1EC2 /* XPWeakTimer.m */, ); path = Timer; sourceTree = ""; @@ -5526,102 +5370,14 @@ E80DE4042775663500BE5BCB /* Cell */ = { isa = PBXGroup; children = ( - E80DE4052775665000BE5BCB /* YUMIThresholdReindictAssembletionRegardElement.h */, - E80DE4062775665000BE5BCB /* YUMIThresholdReindictAssembletionRegardElement.m */, - E80DE40B2775ABA500BE5BCB /* YUMIThresholdReindictFlowProgramming.h */, - E80DE40C2775ABA500BE5BCB /* YUMIThresholdReindictFlowProgramming.m */, + E80DE4052775665000BE5BCB /* XPFirstRechargeCollectionViewCell.h */, + E80DE4062775665000BE5BCB /* XPFirstRechargeCollectionViewCell.m */, + E80DE40B2775ABA500BE5BCB /* XPFirstRechargeFlowLayout.h */, + E80DE40C2775ABA500BE5BCB /* XPFirstRechargeFlowLayout.m */, ); path = Cell; sourceTree = ""; }; - E80E096F2A40B5DD00CD2BE7 /* CandyTree */ = { - isa = PBXGroup; - children = ( - E80E09702A40B5DD00CD2BE7 /* Presenter */, - E80E09732A40B5DD00CD2BE7 /* Protocol */, - E80E09752A40B5DD00CD2BE7 /* Model */, - E80E097E2A40B5DD00CD2BE7 /* View */, - E80E09942A40B5DD00CD2BE7 /* Api */, - ); - path = CandyTree; - sourceTree = ""; - }; - E80E09702A40B5DD00CD2BE7 /* Presenter */ = { - isa = PBXGroup; - children = ( - E80E09712A40B5DD00CD2BE7 /* YUMIConfectioneryTimberExternalizer.m */, - E80E09722A40B5DD00CD2BE7 /* YUMIConfectioneryTimberExternalizer.h */, - ); - path = Presenter; - sourceTree = ""; - }; - E80E09732A40B5DD00CD2BE7 /* Protocol */ = { - isa = PBXGroup; - children = ( - E80E09742A40B5DD00CD2BE7 /* FBCCandyTreeCeremony.h */, - ); - path = Protocol; - sourceTree = ""; - }; - E80E09752A40B5DD00CD2BE7 /* Model */ = { - isa = PBXGroup; - children = ( - E80E09762A40B5DD00CD2BE7 /* ConfectioneryTimberConsequentMatrix.m */, - E80E09772A40B5DD00CD2BE7 /* ConfectioneryTimberReflectionMatrix.m */, - E80E09782A40B5DD00CD2BE7 /* YUMIConfectioneryTimberBrightnessMatrix.h */, - E80E09792A40B5DD00CD2BE7 /* ConfectioneryTimberAbstractMatrix.h */, - E80E097A2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberBrightnessMatrix.m */, - E80E097B2A40B5DD00CD2BE7 /* ConfectioneryTimberReflectionMatrix.h */, - E80E097C2A40B5DD00CD2BE7 /* ConfectioneryTimberConsequentMatrix.h */, - E80E097D2A40B5DD00CD2BE7 /* ConfectioneryTimberAbstractMatrix.m */, - ); - path = Model; - sourceTree = ""; - }; - E80E097E2A40B5DD00CD2BE7 /* View */ = { - isa = PBXGroup; - children = ( - E80E09862A40B5DD00CD2BE7 /* Cell */, - E80E09852A40B5DD00CD2BE7 /* YUMIConfectioneryRateAccommodatedRegard.h */, - E80E09922A40B5DD00CD2BE7 /* YUMIConfectioneryRateAccommodatedRegard.m */, - E80E09902A40B5DD00CD2BE7 /* YUMIConfectioneryTimberPresentRegard.h */, - E80E09832A40B5DD00CD2BE7 /* YUMIConfectioneryTimberPresentRegard.m */, - E80E09822A40B5DD00CD2BE7 /* YUMIConfectioneryTimberInsufficientBalanceRegard.h */, - E80E09912A40B5DD00CD2BE7 /* YUMIConfectioneryTimberInsufficientBalanceRegard.m */, - E80E098F2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberFurthaerRegard.h */, - E80E09802A40B5DD00CD2BE7 /* YUMIConfectioneryTimberFurthaerRegard.m */, - E80E098D2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberRateRegard.h */, - E80E097F2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberRateRegard.m */, - E80E09812A40B5DD00CD2BE7 /* YUMIConfectioneryTimberRegardGovernancer.h */, - E80E098E2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberRegardGovernancer.m */, - E80E09842A40B5DD00CD2BE7 /* YUMIChamberHalfTissueRegard.h */, - E80E09932A40B5DD00CD2BE7 /* YUMIChamberHalfTissueRegard.m */, - ); - path = View; - sourceTree = ""; - }; - E80E09862A40B5DD00CD2BE7 /* Cell */ = { - isa = PBXGroup; - children = ( - E80E09872A40B5DD00CD2BE7 /* YUMIConfectioneryTimberDispossessableRegardElement.m */, - E80E09882A40B5DD00CD2BE7 /* YUMIConfectioneryTimberFurthaerPreadominantElement.m */, - E80E09892A40B5DD00CD2BE7 /* YUMIConfectioneryTimberRateTabulationRegardElement.m */, - E80E098A2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberFurthaerPreadominantElement.h */, - E80E098B2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberDispossessableRegardElement.h */, - E80E098C2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberRateTabulationRegardElement.h */, - ); - path = Cell; - sourceTree = ""; - }; - E80E09942A40B5DD00CD2BE7 /* Api */ = { - isa = PBXGroup; - children = ( - E80E09952A40B5DD00CD2BE7 /* Api+CandyTree.m */, - E80E09962A40B5DD00CD2BE7 /* Api+CandyTree.h */, - ); - path = Api; - sourceTree = ""; - }; E80EC74A28ACD84000D133C5 /* InputView */ = { isa = PBXGroup; children = ( @@ -5636,34 +5392,34 @@ E80EC74B28ACD84000D133C5 /* InputView */ = { isa = PBXGroup; children = ( - E80EC75F28ACD84000D133C5 /* MHTSpirit.h */, - E80EC75228ACD84000D133C5 /* MHTSpirit.m */, - E80EC75428ACD84000D133C5 /* MHTSpiritAttachment.h */, - E80EC75D28ACD84000D133C5 /* MHTSpiritAttachment.m */, - E80EC75928ACD84000D133C5 /* MHTSpiritDirectorateRegard.h */, - E80EC74C28ACD84000D133C5 /* MHTSpiritDirectorateRegard.m */, - E80EC74D28ACD84000D133C5 /* MHTSpiritFacilitater.h */, - E80EC75828ACD84000D133C5 /* MHTSpiritFacilitater.m */, - E80EC75C28ACD84000D133C5 /* MHTExtendDirectorateRegard.h */, - E80EC75528ACD84000D133C5 /* MHTExtendDirectorateRegard.m */, - E80EC75B28ACD84000D133C5 /* MHTIntrojectionObstacleRegard.h */, - E80EC75028ACD84000D133C5 /* MHTIntrojectionObstacleRegard.m */, - E80EC75728ACD84000D133C5 /* MHTIntrojectionObstacleRegardDispositionuration.h */, - E80EC74E28ACD84000D133C5 /* MHTIntrojectionObstacleRegardDispositionuration.m */, - E80EC75A28ACD84000D133C5 /* MHTKeyboardBaseExecutive.h */, - E80EC75128ACD84000D133C5 /* MHTKeyboardBaseExecutive.m */, - E80EC75328ACD84000D133C5 /* MHTKeyboardExecutive.h */, - E80EC75E28ACD84000D133C5 /* MHTKeyboardExecutive.m */, - E81125C2296E57B7000D9804 /* MHTinputAppearanceRegard.h */, - E81125C3296E57B7000D9804 /* MHTinputAppearanceRegard.m */, - E81125C8296E606F000D9804 /* MHTAppearanceIndicateMatrix.h */, - E81125C9296E606F000D9804 /* MHTAppearanceIndicateMatrix.m */, - E80EC75628ACD84000D133C5 /* UITextView+MHTSpirit.h */, - E80EC74F28ACD84000D133C5 /* UITextView+MHTSpirit.m */, - E80EC8C028ACF97A00D133C5 /* MHTESentimentIndicateRegard.h */, - E80EC8C128ACF97A00D133C5 /* MHTESentimentIndicateRegard.m */, - E81125C5296E596D000D9804 /* MHTIntrojectionAppearancetElement.h */, - E81125C6296E596D000D9804 /* MHTIntrojectionAppearancetElement.m */, + E80EC75F28ACD84000D133C5 /* QEmotion.h */, + E80EC75228ACD84000D133C5 /* QEmotion.m */, + E80EC75428ACD84000D133C5 /* QEmotionAttachment.h */, + E80EC75D28ACD84000D133C5 /* QEmotionAttachment.m */, + E80EC75928ACD84000D133C5 /* QEmotionBoardView.h */, + E80EC74C28ACD84000D133C5 /* QEmotionBoardView.m */, + E80EC74D28ACD84000D133C5 /* QEmotionHelper.h */, + E80EC75828ACD84000D133C5 /* QEmotionHelper.m */, + E80EC75C28ACD84000D133C5 /* QExtendBoardView.h */, + E80EC75528ACD84000D133C5 /* QExtendBoardView.m */, + E80EC75B28ACD84000D133C5 /* QInputBarView.h */, + E80EC75028ACD84000D133C5 /* QInputBarView.m */, + E80EC75728ACD84000D133C5 /* QInputBarViewConfiguration.h */, + E80EC74E28ACD84000D133C5 /* QInputBarViewConfiguration.m */, + E80EC75A28ACD84000D133C5 /* QKeyboardBaseManager.h */, + E80EC75128ACD84000D133C5 /* QKeyboardBaseManager.m */, + E80EC75328ACD84000D133C5 /* QKeyboardManager.h */, + E80EC75E28ACD84000D133C5 /* QKeyboardManager.m */, + E81125C2296E57B7000D9804 /* QinputPhotoView.h */, + E81125C3296E57B7000D9804 /* QinputPhotoView.m */, + E81125C8296E606F000D9804 /* QPhotoImageModel.h */, + E81125C9296E606F000D9804 /* QPhotoImageModel.m */, + E80EC75628ACD84000D133C5 /* UITextView+QEmotion.h */, + E80EC74F28ACD84000D133C5 /* UITextView+QEmotion.m */, + E80EC8C028ACF97A00D133C5 /* QEEmotionImageView.h */, + E80EC8C128ACF97A00D133C5 /* QEEmotionImageView.m */, + E81125C5296E596D000D9804 /* QInputPhototCell.h */, + E81125C6296E596D000D9804 /* QInputPhototCell.m */, ); path = InputView; sourceTree = ""; @@ -5844,48 +5600,48 @@ E81060D62987613E00B772F0 /* SesssionModel */ = { isa = PBXGroup; children = ( - E81060D7298761A300B772F0 /* CommunicationBaseMatrix.h */, - E81060D8298761A300B772F0 /* CommunicationBaseMatrix.m */, - E81060DA298761F100B772F0 /* CommunicationEssayMatrix.h */, - E81060DB298761F100B772F0 /* CommunicationEssayMatrix.m */, - E81060DD29876D3A00B772F0 /* CommunicationIntratemporalMatrix.h */, - E81060DE29876D3A00B772F0 /* CommunicationIntratemporalMatrix.m */, - E8383695298A598D00112E1C /* CommunicationTipsMatrix.h */, - E8383696298A598D00112E1C /* CommunicationTipsMatrix.m */, - E81060E029876E9100B772F0 /* CommunicationIndicateMatrix.h */, - E81060E129876E9100B772F0 /* CommunicationIndicateMatrix.m */, - E81060E329876FF300B772F0 /* CommunicationVocalmusicMatrix.h */, - E81060E429876FF300B772F0 /* CommunicationVocalmusicMatrix.m */, - E81060E62987720F00B772F0 /* CommunicationUnSupportMatrix.h */, - E81060E72987720F00B772F0 /* CommunicationUnSupportMatrix.m */, - E81060E92987BE8300B772F0 /* CommunicationPresentMatrix.h */, - E81060EA2987BE8300B772F0 /* CommunicationPresentMatrix.m */, - E81060EC2987C35700B772F0 /* CommunicationEssayClickMatrix.h */, - E81060ED2987C35700B772F0 /* CommunicationEssayClickMatrix.m */, - E81060EF2987C52B00B772F0 /* CommunicationUnionMatrix.h */, - E81060F02987C52B00B772F0 /* CommunicationUnionMatrix.m */, - E81060F22987C6B200B772F0 /* CommunicationUnfoildEnergeticMatrix.h */, - E81060F32987C6B200B772F0 /* CommunicationUnfoildEnergeticMatrix.m */, - E81060F52987C8A700B772F0 /* CommunicationApplicationParaticipationMatrix.h */, - E81060F62987C8A700B772F0 /* CommunicationApplicationParaticipationMatrix.m */, - E81060FB2987CC9100B772F0 /* CommunicationPrototypeAscensionMatrix.h */, - E81060FC2987CC9100B772F0 /* CommunicationPrototypeAscensionMatrix.m */, - E81060FE2987CDCC00B772F0 /* CommunicationTweetMatrix.h */, - E81060FF2987CDCC00B772F0 /* CommunicationTweetMatrix.m */, - E81061012987CFCE00B772F0 /* CommunicationCommunicationSolitaireMatrix.h */, - E81061022987CFCE00B772F0 /* CommunicationCommunicationSolitaireMatrix.m */, - E82107792987D4AB00DE7040 /* CommunicationDiscoveryStrangeBewelcometoMatrix.h */, - E821077A2987D4AB00DE7040 /* CommunicationDiscoveryStrangeBewelcometoMatrix.m */, - E821077C2987D67100DE7040 /* CommunicationVenturePrecautiousMatrix.h */, - E821077D2987D67100DE7040 /* CommunicationVenturePrecautiousMatrix.m */, - E821077F2987D7F300DE7040 /* CommunicationSeparationsMatrix.h */, - E82107802987D7F300DE7040 /* CommunicationSeparationsMatrix.m */, - E82107822987E35300DE7040 /* CommunicationSeparationsAutoMatrix.h */, - E82107832987E35300DE7040 /* CommunicationSeparationsAutoMatrix.m */, - E82107852987E49100DE7040 /* CommunicationDeficitSheatheMatrix.h */, - E82107862987E49100DE7040 /* CommunicationDeficitSheatheMatrix.m */, - E8778ADF2988B4C300CF139B /* CommunicationRevokeMatrix.h */, - E8778AE02988B4C300CF139B /* CommunicationRevokeMatrix.m */, + E81060D7298761A300B772F0 /* MessageBaseModel.h */, + E81060D8298761A300B772F0 /* MessageBaseModel.m */, + E81060DA298761F100B772F0 /* MessageTextModel.h */, + E81060DB298761F100B772F0 /* MessageTextModel.m */, + E81060DD29876D3A00B772F0 /* MessageTimeModel.h */, + E81060DE29876D3A00B772F0 /* MessageTimeModel.m */, + E8383695298A598D00112E1C /* MessageTipsModel.h */, + E8383696298A598D00112E1C /* MessageTipsModel.m */, + E81060E029876E9100B772F0 /* MessageImageModel.h */, + E81060E129876E9100B772F0 /* MessageImageModel.m */, + E81060E329876FF300B772F0 /* MessageAudioModel.h */, + E81060E429876FF300B772F0 /* MessageAudioModel.m */, + E81060E62987720F00B772F0 /* MessageUnSupportModel.h */, + E81060E72987720F00B772F0 /* MessageUnSupportModel.m */, + E81060E92987BE8300B772F0 /* MessageGiftModel.h */, + E81060EA2987BE8300B772F0 /* MessageGiftModel.m */, + E81060EC2987C35700B772F0 /* MessageTextClickModel.h */, + E81060ED2987C35700B772F0 /* MessageTextClickModel.m */, + E81060EF2987C52B00B772F0 /* MessageGuildModel.h */, + E81060F02987C52B00B772F0 /* MessageGuildModel.m */, + E81060F22987C6B200B772F0 /* MessageOpenLiveModel.h */, + E81060F32987C6B200B772F0 /* MessageOpenLiveModel.m */, + E81060F52987C8A700B772F0 /* MessageApplicationShareModel.h */, + E81060F62987C8A700B772F0 /* MessageApplicationShareModel.m */, + E81060FB2987CC9100B772F0 /* MessageLevelUpgradeModel.h */, + E81060FC2987CC9100B772F0 /* MessageLevelUpgradeModel.m */, + E81060FE2987CDCC00B772F0 /* MessageTweetModel.h */, + E81060FF2987CDCC00B772F0 /* MessageTweetModel.m */, + E81061012987CFCE00B772F0 /* MessageSkillCardModel.h */, + E81061022987CFCE00B772F0 /* MessageSkillCardModel.m */, + E82107792987D4AB00DE7040 /* MessageFindNewGreetModel.h */, + E821077A2987D4AB00DE7040 /* MessageFindNewGreetModel.m */, + E821077C2987D67100DE7040 /* MessageRiskAlertModel.h */, + E821077D2987D67100DE7040 /* MessageRiskAlertModel.m */, + E821077F2987D7F300DE7040 /* MessageMonentsModel.h */, + E82107802987D7F300DE7040 /* MessageMonentsModel.m */, + E82107822987E35300DE7040 /* MessageMonentsAutoModel.h */, + E82107832987E35300DE7040 /* MessageMonentsAutoModel.m */, + E82107852987E49100DE7040 /* MessageRedPacketModel.h */, + E82107862987E49100DE7040 /* MessageRedPacketModel.m */, + E8778ADF2988B4C300CF139B /* MessageRevokeModel.h */, + E8778AE02988B4C300CF139B /* MessageRevokeModel.m */, ); path = SesssionModel; sourceTree = ""; @@ -5923,7 +5679,7 @@ E81C1B1427705F0A0020D1E4 /* Protocol */ = { isa = PBXGroup; children = ( - E81C1B1927705F4B0020D1E4 /* FBCArrangeMicCeremony.h */, + E81C1B1927705F4B0020D1E4 /* XPArrangeMicProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -5931,8 +5687,8 @@ E81C1B1527705F130020D1E4 /* Presenter */ = { isa = PBXGroup; children = ( - E81C1B1A27705F6B0020D1E4 /* YUMIScheduleLoudspeakerExternalizer.h */, - E81C1B1B27705F6B0020D1E4 /* YUMIScheduleLoudspeakerExternalizer.m */, + E81C1B1A27705F6B0020D1E4 /* XPArrangeMicPresenter.h */, + E81C1B1B27705F6B0020D1E4 /* XPArrangeMicPresenter.m */, ); path = Presenter; sourceTree = ""; @@ -5941,8 +5697,8 @@ isa = PBXGroup; children = ( E81C1B23277065F70020D1E4 /* Cell */, - E81C1B1D27705F7A0020D1E4 /* YUMIScheduleLoudspeakerRegardGovernancer.h */, - E81C1B1E27705F7A0020D1E4 /* YUMIScheduleLoudspeakerRegardGovernancer.m */, + E81C1B1D27705F7A0020D1E4 /* XPArrangeMicViewController.h */, + E81C1B1E27705F7A0020D1E4 /* XPArrangeMicViewController.m */, ); path = View; sourceTree = ""; @@ -5959,10 +5715,10 @@ E81C1B1827705F2B0020D1E4 /* Model */ = { isa = PBXGroup; children = ( - E81C1B2A27706E5C0020D1E4 /* ScheduleLoudspeakerMatrix.h */, - E81C1B2B27706E5C0020D1E4 /* ScheduleLoudspeakerMatrix.m */, - E81C1B2D277071670020D1E4 /* YUMIScheduleLoudspeakerAbstractMatrix.h */, - E81C1B2E277071670020D1E4 /* YUMIScheduleLoudspeakerAbstractMatrix.m */, + E81C1B2A27706E5C0020D1E4 /* ArrangeMicModel.h */, + E81C1B2B27706E5C0020D1E4 /* ArrangeMicModel.m */, + E81C1B2D277071670020D1E4 /* XPArrangeMicInfoModel.h */, + E81C1B2E277071670020D1E4 /* XPArrangeMicInfoModel.m */, ); path = Model; sourceTree = ""; @@ -5970,10 +5726,10 @@ E81C1B23277065F70020D1E4 /* Cell */ = { isa = PBXGroup; children = ( - E81C1B242770663B0020D1E4 /* YUMIScheduleLoudspeakerTabulationRegardElement.h */, - E81C1B252770663B0020D1E4 /* YUMIScheduleLoudspeakerTabulationRegardElement.m */, - E81C1B27277069DD0020D1E4 /* YUMIScheduleLoudspeakerDispossessTabulationRegardElement.h */, - E81C1B28277069DD0020D1E4 /* YUMIScheduleLoudspeakerDispossessTabulationRegardElement.m */, + E81C1B242770663B0020D1E4 /* XPArrangeMicTableViewCell.h */, + E81C1B252770663B0020D1E4 /* XPArrangeMicTableViewCell.m */, + E81C1B27277069DD0020D1E4 /* XPArrangeMicEmptyTableViewCell.h */, + E81C1B28277069DD0020D1E4 /* XPArrangeMicEmptyTableViewCell.m */, ); path = Cell; sourceTree = ""; @@ -6030,17 +5786,17 @@ E81DCCC6282B63630039E5C5 /* Protocol */ = { isa = PBXGroup; children = ( - 1427213129A75A1700C7C423 /* FBCSeparationsLatestCeremony.h */, - 1427213029A759D200C7C423 /* FBCSeparationsConsiderationCeremony.h */, - E8098CAB282E04870090B9F0 /* FBCSeparationsEncourageCeremony.h */, - E81A65432835121000F55894 /* FBCSeparationsInteractiveCeremony.h */, - E8541036286443D8005CFD9F /* FBCSeparationsDetailCeremony.h */, - E818E34C286ECAD8005EDF68 /* FBCSeparationsPublishCeremony.h */, - E8AB632028ADE5720023B0D2 /* FBCSeparationsMotifEncourageCeremony.h */, - E8AB632128ADE5880023B0D2 /* FBCSeparationsMotifLatestCeremony.h */, - E8AB632928AE15070023B0D2 /* FBCSeparationsMotifStatementCeremony.h */, - E8AB633028AE19FA0023B0D2 /* FBCSeparationsManeCeremony.h */, - 14EB640A29A5BEE800A4A00B /* FBCSeparationsDetailRegardGovernancerRepresendtation.h */, + 1427213129A75A1700C7C423 /* XPMonentsLatestProtocol.h */, + 1427213029A759D200C7C423 /* XPMonentsAttentionProtocol.h */, + E8098CAB282E04870090B9F0 /* XPMonentsRecommendProtocol.h */, + E81A65432835121000F55894 /* XPMonentsInteractiveProtocol.h */, + E8541036286443D8005CFD9F /* XPMonentsDetailProtocol.h */, + E818E34C286ECAD8005EDF68 /* XPMonentsPublishProtocol.h */, + E8AB632028ADE5720023B0D2 /* XPMonentsTopicRecommendProtocol.h */, + E8AB632128ADE5880023B0D2 /* XPMonentsTopicLatestProtocol.h */, + E8AB632928AE15070023B0D2 /* XPMonentsTopicListProtocol.h */, + E8AB633028AE19FA0023B0D2 /* XPMonentsMineProtocol.h */, + 14EB640A29A5BEE800A4A00B /* XPMonentsDetailViewControllerDelegate.h */, ); path = Protocol; sourceTree = ""; @@ -6048,28 +5804,28 @@ E81DCCC7282B636D0039E5C5 /* Presenter */ = { isa = PBXGroup; children = ( - 1427213229A75A2600C7C423 /* YUMISeparationsRecentlyExternalizer.h */, - 1427213329A75A2600C7C423 /* YUMISeparationsRecentlyExternalizer.m */, - 1427212E29A7599500C7C423 /* YUMISeparationsConsiderationExternalizer.h */, - 1427212D29A7599500C7C423 /* YUMISeparationsConsiderationExternalizer.m */, - E8950187282CFFB1007E459A /* YUMISeparationsProgrammingDisposition.h */, - E8950188282CFFB1007E459A /* YUMISeparationsProgrammingDisposition.m */, - E8098CA8282E03B40090B9F0 /* YUMISeparationsEncourageExternalizer.h */, - E8098CA9282E03B40090B9F0 /* YUMISeparationsEncourageExternalizer.m */, - E81A65402835120200F55894 /* YUMISeparationsCoactiveExternalizer.h */, - E81A65412835120200F55894 /* YUMISeparationsCoactiveExternalizer.m */, - E85410332864155A005CFD9F /* YUMISeparationSpecificExternalizer.h */, - E85410342864155A005CFD9F /* YUMISeparationSpecificExternalizer.m */, - E818E349286ECABF005EDF68 /* YUMISeparationsAnnounceExternalizer.h */, - E818E34A286ECABF005EDF68 /* YUMISeparationsAnnounceExternalizer.m */, - E8AB631728ADE2F40023B0D2 /* YUMISeparationsMotifEncourageExternalizer.h */, - E8AB631828ADE2F40023B0D2 /* YUMISeparationsMotifEncourageExternalizer.m */, - E8AB631A28ADE30E0023B0D2 /* YUMISeparationsMotifRecentlyExternalizer.h */, - E8AB631B28ADE30E0023B0D2 /* YUMISeparationsMotifRecentlyExternalizer.m */, - E8AB632528AE13210023B0D2 /* YUMISeparationsMotifStatementExternalizer.h */, - E8AB632628AE13210023B0D2 /* YUMISeparationsMotifStatementExternalizer.m */, - E8AB632D28AE19DE0023B0D2 /* YUMISeparationManeExternalizer.h */, - E8AB632E28AE19DE0023B0D2 /* YUMISeparationManeExternalizer.m */, + 1427213229A75A2600C7C423 /* XPMonentsLatestPresenter.h */, + 1427213329A75A2600C7C423 /* XPMonentsLatestPresenter.m */, + 1427212E29A7599500C7C423 /* XPMonentsAttentionPresenter.h */, + 1427212D29A7599500C7C423 /* XPMonentsAttentionPresenter.m */, + E8950187282CFFB1007E459A /* XPMonentsLayoutConfig.h */, + E8950188282CFFB1007E459A /* XPMonentsLayoutConfig.m */, + E8098CA8282E03B40090B9F0 /* XPMonentsRecommendPresenter.h */, + E8098CA9282E03B40090B9F0 /* XPMonentsRecommendPresenter.m */, + E81A65402835120200F55894 /* XPMonentsInteractivePresenter.h */, + E81A65412835120200F55894 /* XPMonentsInteractivePresenter.m */, + E85410332864155A005CFD9F /* XPMonentDetailPresenter.h */, + E85410342864155A005CFD9F /* XPMonentDetailPresenter.m */, + E818E349286ECABF005EDF68 /* XPMonentsPublishPresenter.h */, + E818E34A286ECABF005EDF68 /* XPMonentsPublishPresenter.m */, + E8AB631728ADE2F40023B0D2 /* XPMonentsTopicRecommendPresenter.h */, + E8AB631828ADE2F40023B0D2 /* XPMonentsTopicRecommendPresenter.m */, + E8AB631A28ADE30E0023B0D2 /* XPMonentsTopicLatestPresenter.h */, + E8AB631B28ADE30E0023B0D2 /* XPMonentsTopicLatestPresenter.m */, + E8AB632528AE13210023B0D2 /* XPMonentsTopicListPresenter.h */, + E8AB632628AE13210023B0D2 /* XPMonentsTopicListPresenter.m */, + E8AB632D28AE19DE0023B0D2 /* XPMonentMinePresenter.h */, + E8AB632E28AE19DE0023B0D2 /* XPMonentMinePresenter.m */, ); path = Presenter; sourceTree = ""; @@ -6079,36 +5835,36 @@ children = ( E8D7D748282BA1C90007D7BD /* SubViews */, E8D7D747282BA1C20007D7BD /* Cell */, - E81DCCCB282B63B40039E5C5 /* YUMISeparationsRegardGovernancer.h */, - E81DCCCC282B63B40039E5C5 /* YUMISeparationsRegardGovernancer.m */, - E81DCCCE282B63FD0039E5C5 /* YUMISeparationsEncourageRegardGovernancer.h */, - E81DCCCF282B63FD0039E5C5 /* YUMISeparationsEncourageRegardGovernancer.m */, - E81A65292834E4F600F55894 /* YUMISeparationsConsiderationRegardGovernancer.h */, - E81A652A2834E4F600F55894 /* YUMISeparationsConsiderationRegardGovernancer.m */, - E81A652F2834E53600F55894 /* YUMISeparationsRecentlyRegardGovernancer.h */, - E81A65302834E53600F55894 /* YUMISeparationsRecentlyRegardGovernancer.m */, - E81A653D283511BE00F55894 /* YUMISeparationsCoactiveRegardGovernancer.h */, - E81A653E283511BE00F55894 /* YUMISeparationsCoactiveRegardGovernancer.m */, - E852D739286317F0001465ED /* YUMISeparationsSpecificRegardGovernancer.h */, - E852D73A286317F0001465ED /* YUMISeparationsSpecificRegardGovernancer.m */, - E818E346286ECA4B005EDF68 /* YUMISeparationsAnnounceRegardGovernancer.h */, - E818E347286ECA4B005EDF68 /* YUMISeparationsAnnounceRegardGovernancer.m */, - E8AB630B28ADD8C60023B0D2 /* YUMISeparationMotifAccommodatedRegardGovernancer.h */, - E8AB630C28ADD8C60023B0D2 /* YUMISeparationMotifAccommodatedRegardGovernancer.m */, - E8AB630E28ADD92D0023B0D2 /* YUMISeparationsMotifRecommondRegardGovernancer.h */, - E8AB630F28ADD92D0023B0D2 /* YUMISeparationsMotifRecommondRegardGovernancer.m */, - E8AB631428ADE2D20023B0D2 /* YUMISeparationsMotifRecentlyRegardGovernancer.h */, - E8AB631528ADE2D20023B0D2 /* YUMISeparationsMotifRecentlyRegardGovernancer.m */, - E8AB632228AE10310023B0D2 /* YUMISepartionMotifStatementRegardGovernancer.h */, - E8AB632328AE10310023B0D2 /* YUMISepartionMotifStatementRegardGovernancer.m */, - E8AB632A28AE19600023B0D2 /* YUMISeparationsManeRegardGovernancer.h */, - E8AB632B28AE19600023B0D2 /* YUMISeparationsManeRegardGovernancer.m */, - 149839C2299E088000F82CBF /* YUMIMomentStatementRegardGovernancer.h */, - 149839C3299E088000F82CBF /* YUMIMomentStatementRegardGovernancer.m */, - 14EB640729A5BDDD00A4A00B /* YUMIMomentsSimpleSpecificRegardGovernancer.h */, - 14EB640829A5BDDD00A4A00B /* YUMIMomentsSimpleSpecificRegardGovernancer.m */, - 14EB640B29A5C16000A4A00B /* YUMIMomentsSimpleSpecificNev.h */, - 14EB640C29A5C16000A4A00B /* YUMIMomentsSimpleSpecificNev.m */, + E81DCCCB282B63B40039E5C5 /* XPMonentsViewController.h */, + E81DCCCC282B63B40039E5C5 /* XPMonentsViewController.m */, + E81DCCCE282B63FD0039E5C5 /* XPMonentsRecommendViewController.h */, + E81DCCCF282B63FD0039E5C5 /* XPMonentsRecommendViewController.m */, + E81A65292834E4F600F55894 /* XPMonentsAttentionViewController.h */, + E81A652A2834E4F600F55894 /* XPMonentsAttentionViewController.m */, + E81A652F2834E53600F55894 /* XPMonentsLatestViewController.h */, + E81A65302834E53600F55894 /* XPMonentsLatestViewController.m */, + E81A653D283511BE00F55894 /* XPMonentsInteractiveViewController.h */, + E81A653E283511BE00F55894 /* XPMonentsInteractiveViewController.m */, + E852D739286317F0001465ED /* XPMonentsDetailViewController.h */, + E852D73A286317F0001465ED /* XPMonentsDetailViewController.m */, + E818E346286ECA4B005EDF68 /* XPMonentsPublishViewController.h */, + E818E347286ECA4B005EDF68 /* XPMonentsPublishViewController.m */, + E8AB630B28ADD8C60023B0D2 /* XPMonentTopicContainerViewController.h */, + E8AB630C28ADD8C60023B0D2 /* XPMonentTopicContainerViewController.m */, + E8AB630E28ADD92D0023B0D2 /* XPMonentsTopicRecommondViewController.h */, + E8AB630F28ADD92D0023B0D2 /* XPMonentsTopicRecommondViewController.m */, + E8AB631428ADE2D20023B0D2 /* XPMonentsTopicLatestViewController.h */, + E8AB631528ADE2D20023B0D2 /* XPMonentsTopicLatestViewController.m */, + E8AB632228AE10310023B0D2 /* XPMoentsTopicListViewController.h */, + E8AB632328AE10310023B0D2 /* XPMoentsTopicListViewController.m */, + E8AB632A28AE19600023B0D2 /* XPMonentsMineViewController.h */, + E8AB632B28AE19600023B0D2 /* XPMonentsMineViewController.m */, + 149839C2299E088000F82CBF /* XPMomentListViewController.h */, + 149839C3299E088000F82CBF /* XPMomentListViewController.m */, + 14EB640729A5BDDD00A4A00B /* XPMomentsSimpleDetailViewController.h */, + 14EB640829A5BDDD00A4A00B /* XPMomentsSimpleDetailViewController.m */, + 14EB640B29A5C16000A4A00B /* XPMomentsSimpleDetailNav.h */, + 14EB640C29A5C16000A4A00B /* XPMomentsSimpleDetailNav.m */, ); path = View; sourceTree = ""; @@ -6125,22 +5881,22 @@ E81DCCCA282B638B0039E5C5 /* Model */ = { isa = PBXGroup; children = ( - 1427212B29A757EC00C7C423 /* SeparationsStatementAbstractMatrix.h */, - 1427212A29A757EC00C7C423 /* SeparationsStatementAbstractMatrix.m */, - E88749B4282B8FC600C3C7DB /* SeparationsAbstractMatrix.h */, - E88749B5282B8FC600C3C7DB /* SeparationsAbstractMatrix.m */, - E81A6544283519CA00F55894 /* SeparationsMotifMatrix.h */, - E81A6545283519CA00F55894 /* SeparationsMotifMatrix.m */, - E878B8562835F0D300E22DCF /* SeparationsCoactiveMatrix.h */, - E878B8572835F0D300E22DCF /* SeparationsCoactiveMatrix.m */, - E878B85C283640A500E22DCF /* SeparationsUnReadMatrix.h */, - E878B85D283640A500E22DCF /* SeparationsUnReadMatrix.m */, - E852D74228633A08001465ED /* SeparationsJudgementMatrix.h */, - E852D74328633A08001465ED /* SeparationsJudgementMatrix.m */, - E852D74528633E92001465ED /* SeparationsJudgementReplicationMatrix.h */, - E852D74628633E92001465ED /* SeparationsJudgementReplicationMatrix.m */, - E8B9843128ABA2FF0022D026 /* SeparationsPicResAbstract.h */, - E8B9843228ABA2FF0022D026 /* SeparationsPicResAbstract.m */, + 1427212B29A757EC00C7C423 /* MonentsListInfoModel.h */, + 1427212A29A757EC00C7C423 /* MonentsListInfoModel.m */, + E88749B4282B8FC600C3C7DB /* MonentsInfoModel.h */, + E88749B5282B8FC600C3C7DB /* MonentsInfoModel.m */, + E81A6544283519CA00F55894 /* MonentsTopicModel.h */, + E81A6545283519CA00F55894 /* MonentsTopicModel.m */, + E878B8562835F0D300E22DCF /* MonentsInteractiveModel.h */, + E878B8572835F0D300E22DCF /* MonentsInteractiveModel.m */, + E878B85C283640A500E22DCF /* MonentsUnReadModel.h */, + E878B85D283640A500E22DCF /* MonentsUnReadModel.m */, + E852D74228633A08001465ED /* MonentsCommentModel.h */, + E852D74328633A08001465ED /* MonentsCommentModel.m */, + E852D74528633E92001465ED /* MonentsCommentReplyModel.h */, + E852D74628633E92001465ED /* MonentsCommentReplyModel.m */, + E8B9843128ABA2FF0022D026 /* MonentsPicResInfo.h */, + E8B9843228ABA2FF0022D026 /* MonentsPicResInfo.m */, ); path = Model; sourceTree = ""; @@ -6148,12 +5904,12 @@ E81E09C6290F719C00A1F410 /* Adbvertise */ = { isa = PBXGroup; children = ( - E81E09C7290F71BF00A1F410 /* YUMIAdvertiseRegard.h */, - E81E09C8290F71BF00A1F410 /* YUMIAdvertiseRegard.m */, - E81E09CA290F732500A1F410 /* YUMIAdIndicateTool.h */, - E81E09CB290F732600A1F410 /* YUMIAdIndicateTool.m */, - E81E09CD290F750800A1F410 /* AdvertiseMatrix.h */, - E81E09CE290F750800A1F410 /* AdvertiseMatrix.m */, + E81E09C7290F71BF00A1F410 /* XPAdvertiseView.h */, + E81E09C8290F71BF00A1F410 /* XPAdvertiseView.m */, + E81E09CA290F732500A1F410 /* XPAdImageTool.h */, + E81E09CB290F732600A1F410 /* XPAdImageTool.m */, + E81E09CD290F750800A1F410 /* AdvertiseModel.h */, + E81E09CE290F750800A1F410 /* AdvertiseModel.m */, ); path = Adbvertise; sourceTree = ""; @@ -6161,8 +5917,8 @@ E82109AA26F1C86E00FC3319 /* CountDown */ = { isa = PBXGroup; children = ( - E82109AB26F1C8A000FC3319 /* ComputationDownFacilitater.h */, - E82109AC26F1C8A000FC3319 /* ComputationDownFacilitater.m */, + E82109AB26F1C8A000FC3319 /* CountDownHelper.h */, + E82109AC26F1C8A000FC3319 /* CountDownHelper.m */, ); path = CountDown; sourceTree = ""; @@ -6193,12 +5949,12 @@ E82325EB274E2D6C003A3332 /* Model */ = { isa = PBXGroup; children = ( - E82325FA274E4735003A3332 /* YUMIConsumerSolitaireProvisionMatrix.h */, - E82325FB274E4735003A3332 /* YUMIConsumerSolitaireProvisionMatrix.m */, - E899C68A275093B700E189E5 /* YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix.h */, - E899C68B275093B800E189E5 /* YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix.m */, - E899C68727508F4E00E189E5 /* YUMIConsumerSolitaireAbstractMatrix.h */, - E899C68827508F4E00E189E5 /* YUMIConsumerSolitaireAbstractMatrix.m */, + E82325FA274E4735003A3332 /* XPUserCardItemModel.h */, + E82325FB274E4735003A3332 /* XPUserCardItemModel.m */, + E899C68A275093B700E189E5 /* XPUserCardMicroItemModel.h */, + E899C68B275093B800E189E5 /* XPUserCardMicroItemModel.m */, + E899C68727508F4E00E189E5 /* XPUserCardInfoModel.h */, + E899C68827508F4E00E189E5 /* XPUserCardInfoModel.m */, ); path = Model; sourceTree = ""; @@ -6217,8 +5973,8 @@ children = ( 9B85B6D4279FDAA900A0A1AC /* SubViews */, E82325FD274E48D0003A3332 /* Cell */, - E82325F0274E2DE6003A3332 /* YUMIConsumerSolitaireRegardGovernancer.h */, - E82325F1274E2DE6003A3332 /* YUMIConsumerSolitaireRegardGovernancer.m */, + E82325F0274E2DE6003A3332 /* XPUserCardViewController.h */, + E82325F1274E2DE6003A3332 /* XPUserCardViewController.m */, ); path = View; sourceTree = ""; @@ -6226,8 +5982,8 @@ E82325EE274E2D97003A3332 /* Presenter */ = { isa = PBXGroup; children = ( - E82325F3274E2E09003A3332 /* YUMIConsumerSolitaireExternalizer.h */, - E82325F4274E2E09003A3332 /* YUMIConsumerSolitaireExternalizer.m */, + E82325F3274E2E09003A3332 /* XPUserCardPresenter.h */, + E82325F4274E2E09003A3332 /* XPUserCardPresenter.m */, ); path = Presenter; sourceTree = ""; @@ -6235,7 +5991,7 @@ E82325EF274E2DA0003A3332 /* Protocol */ = { isa = PBXGroup; children = ( - E82325F6274E2E27003A3332 /* FBCConsumerSolitaireCeremony.h */, + E82325F6274E2E27003A3332 /* XPUserCardProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -6243,8 +5999,8 @@ E82325FD274E48D0003A3332 /* Cell */ = { isa = PBXGroup; children = ( - E82325FE274E48EA003A3332 /* YUMIConsumerSolitaireProvisionAssembletionRegardElement.h */, - E82325FF274E48EA003A3332 /* YUMIConsumerSolitaireProvisionAssembletionRegardElement.m */, + E82325FE274E48EA003A3332 /* XPUserCardItemCollectionViewCell.h */, + E82325FF274E48EA003A3332 /* XPUserCardItemCollectionViewCell.m */, ); path = Cell; sourceTree = ""; @@ -6252,8 +6008,8 @@ E82D5C77276B25B000858D6D /* SpriteSheetManager */ = { isa = PBXGroup; children = ( - E82D5C78276B25D100858D6D /* SpriteSheetIndicateExecutive.h */, - E82D5C79276B25D100858D6D /* SpriteSheetIndicateExecutive.m */, + E82D5C78276B25D100858D6D /* SpriteSheetImageManager.h */, + E82D5C79276B25D100858D6D /* SpriteSheetImageManager.m */, E82D5C7B276B343300858D6D /* YYAnimatedImageView+ImageShow.h */, E82D5C7C276B343300858D6D /* YYAnimatedImageView+ImageShow.m */, ); @@ -6263,10 +6019,10 @@ E82E74F92828B1FC00C25EF7 /* Model */ = { isa = PBXGroup; children = ( - E88C728D2828EA4E0047FB2B /* Manual+CoreDataProperties.h */, - E88C728E2828EA4E0047FB2B /* Manual+CoreDataClass.h */, - E88C728F2828EA4E0047FB2B /* Manual+CoreDataProperties.m */, - E88C72902828EA4E0047FB2B /* Manual+CoreDataClass.m */, + E88C728D2828EA4E0047FB2B /* Music+CoreDataProperties.h */, + E88C728E2828EA4E0047FB2B /* Music+CoreDataClass.h */, + E88C728F2828EA4E0047FB2B /* Music+CoreDataProperties.m */, + E88C72902828EA4E0047FB2B /* Music+CoreDataClass.m */, ); path = Model; sourceTree = ""; @@ -6275,8 +6031,8 @@ isa = PBXGroup; children = ( E87E63F529AA1A5600EBE52B /* YuMi.xcdatamodeld */, - E82E75042828E76400C25EF7 /* YUMICoreAtomicExecutive.h */, - E82E75052828E76400C25EF7 /* YUMICoreAtomicExecutive.m */, + E82E75042828E76400C25EF7 /* XPCoreDataManager.h */, + E82E75052828E76400C25EF7 /* XPCoreDataManager.m */, ); path = Presenter; sourceTree = ""; @@ -6284,8 +6040,8 @@ E83645652A40A2CA00E0DBE4 /* CardManager */ = { isa = PBXGroup; children = ( - E83645662A40A2DC00E0DBE4 /* YUMICommunicationSolitaireDisporterExecutive.h */, - E83645672A40A2DC00E0DBE4 /* YUMICommunicationSolitaireDisporterExecutive.m */, + E83645662A40A2DC00E0DBE4 /* XPSkillCardPlayerManager.h */, + E83645672A40A2DC00E0DBE4 /* XPSkillCardPlayerManager.m */, ); path = CardManager; sourceTree = ""; @@ -6303,38 +6059,38 @@ isa = PBXGroup; children = ( E83DB47E274649B200D8CBD1 /* Model */, - E8C214FF274B76F60079E6BF /* YUMIChamberBrightnessHitRegard.h */, - E8C21500274B76F60079E6BF /* YUMIChamberBrightnessHitRegard.m */, - 9B8DE0E2289CF7AA00FB6EC2 /* YUMIChamberPresentCompoundRegard.h */, - 9B8DE0E3289CF7AA00FB6EC2 /* YUMIChamberPresentCompoundRegard.m */, - E83DB47B2746372300D8CBD1 /* YUMIChamberPresentOriflammeRegard.h */, - E83DB47C2746372300D8CBD1 /* YUMIChamberPresentOriflammeRegard.m */, - E83DB4822746661800D8CBD1 /* YUMIChamberPresentPingbackRegard.h */, - E83DB4832746661800D8CBD1 /* YUMIChamberPresentPingbackRegard.m */, - E8A03DFD27635F960098D9EA /* YUMIChamberConfectioneryPresentRegard.h */, - E8A03DFE27635F960098D9EA /* YUMIChamberConfectioneryPresentRegard.m */, - E8899C832785CC69007944BE /* YUMIChamberEngagementBrightnessRegard.h */, - E8899C842785CC69007944BE /* YUMIChamberEngagementBrightnessRegard.m */, - 9B6B3AA9278C2EA7005551EC /* YUMIChamberMagnificentPrototypeUpwardsRegard.h */, - 9B6B3AAA278C2EA7005551EC /* YUMIChamberMagnificentPrototypeUpwardsRegard.m */, - 9BC8C82E28090C9200C24F85 /* YUMIChamberKellegRateOriflammeRegard.h */, - 9BC8C82F28090C9200C24F85 /* YUMIChamberKellegRateOriflammeRegard.m */, - E86A16CC28574844004228B8 /* YUMIChamberLicneseHourRateRegard.h */, - E86A16CD28574844004228B8 /* YUMIChamberLicneseHourRateRegard.m */, - 9B86D8782817DD8400494FCD /* YUMIChamberImportHideTipRegard.h */, - 9B86D8792817DD8400494FCD /* YUMIChamberImportHideTipRegard.m */, - E8998D7E28597B0300C68558 /* YUMIChamberFortunateBigCaptureRegard.h */, - E8998D7F28597B0300C68558 /* YUMIChamberFortunateBigCaptureRegard.m */, - E838D99E275E1BF60079E0B5 /* YUMIChamberBrightnessRegard.h */, - E838D99F275E1BF60079E0B5 /* YUMIChamberBrightnessRegard.m */, - E8E21A9928B4BD92008F7C9D /* YUMIChamberGraffitiPresentBrightnessRegard.h */, - E8E21A9A28B4BD92008F7C9D /* YUMIChamberGraffitiPresentBrightnessRegard.m */, - 9BC9DAED27E33B3F009EE409 /* YUMIChamberPresentBrightnessAnatomiser.h */, - 9BC9DAEE27E33B3F009EE409 /* YUMIChamberPresentBrightnessAnatomiser.m */, - F1D8556D2931FC86008C418F /* YUMIChamberYearImportpriseRegard.h */, - F1D8556E2931FC86008C418F /* YUMIChamberYearImportpriseRegard.m */, - E80E09B12A42071C00CD2BE7 /* YUMIChamberSatelliteKitchenOriflammeRegard.h */, - E80E09B22A42071D00CD2BE7 /* YUMIChamberSatelliteKitchenOriflammeRegard.m */, + E8C214FF274B76F60079E6BF /* XPRoomAnimationHitView.h */, + E8C21500274B76F60079E6BF /* XPRoomAnimationHitView.m */, + 9B8DE0E2289CF7AA00FB6EC2 /* XPRoomGiftCompoundView.h */, + 9B8DE0E3289CF7AA00FB6EC2 /* XPRoomGiftCompoundView.m */, + E83DB47B2746372300D8CBD1 /* XPRoomGiftBannerView.h */, + E83DB47C2746372300D8CBD1 /* XPRoomGiftBannerView.m */, + E83DB4822746661800D8CBD1 /* XPRoomGiftBroadcastView.h */, + E83DB4832746661800D8CBD1 /* XPRoomGiftBroadcastView.m */, + E8A03DFD27635F960098D9EA /* XPRoomCandyGiftView.h */, + E8A03DFE27635F960098D9EA /* XPRoomCandyGiftView.m */, + E8899C832785CC69007944BE /* XPRoomDatingAnimationView.h */, + E8899C842785CC69007944BE /* XPRoomDatingAnimationView.m */, + 9B6B3AA9278C2EA7005551EC /* XPRoomNobleLevelUpView.h */, + 9B6B3AAA278C2EA7005551EC /* XPRoomNobleLevelUpView.m */, + 9BC8C82E28090C9200C24F85 /* XPRoomAnchorRankBannerView.h */, + 9BC8C82F28090C9200C24F85 /* XPRoomAnchorRankBannerView.m */, + E86A16CC28574844004228B8 /* XPRoomLicneseHourRankView.h */, + E86A16CD28574844004228B8 /* XPRoomLicneseHourRankView.m */, + 9B86D8782817DD8400494FCD /* XPRoomEnterHideTipView.h */, + 9B86D8792817DD8400494FCD /* XPRoomEnterHideTipView.m */, + E8998D7E28597B0300C68558 /* XPRoomLuckyBigPrizeView.h */, + E8998D7F28597B0300C68558 /* XPRoomLuckyBigPrizeView.m */, + E838D99E275E1BF60079E0B5 /* XPRoomAnimationView.h */, + E838D99F275E1BF60079E0B5 /* XPRoomAnimationView.m */, + E8E21A9928B4BD92008F7C9D /* XPRoomGraffitiGiftAnimationView.h */, + E8E21A9A28B4BD92008F7C9D /* XPRoomGraffitiGiftAnimationView.m */, + 9BC9DAED27E33B3F009EE409 /* XPRoomGiftAnimationParser.h */, + 9BC9DAEE27E33B3F009EE409 /* XPRoomGiftAnimationParser.m */, + F1D8556D2931FC86008C418F /* XPRoomYearActivityView.h */, + F1D8556E2931FC86008C418F /* XPRoomYearActivityView.m */, + E80E09B12A42071C00CD2BE7 /* XPRoomStarKitchenBannerView.h */, + E80E09B22A42071D00CD2BE7 /* XPRoomStarKitchenBannerView.m */, ); path = AnimationView; sourceTree = ""; @@ -6355,20 +6111,20 @@ isa = PBXGroup; children = ( E8395336276A0C9400CF2F24 /* Cell */, - E8395328276A002800CF2F24 /* YUMIManePretendUpwardsRegardGovernancer.h */, - E8395329276A002800CF2F24 /* YUMIManePretendUpwardsRegardGovernancer.m */, - E839532B276A030F00CF2F24 /* YUMIManePretendUpwardsStatementRegardGovernancer.h */, - E839532C276A030F00CF2F24 /* YUMIManePretendUpwardsStatementRegardGovernancer.m */, - 9B1EF3D027E81C0600554295 /* YUMIManePretendUpwardsIntumesceRegardGovernancer.h */, - 9B1EF3D127E81C0600554295 /* YUMIManePretendUpwardsIntumesceRegardGovernancer.m */, - 9BE01ACF28927AC000B50299 /* YUMIPretendUpwardsProcurementRegardGovernancer.h */, - 9BE01AD028927AC000B50299 /* YUMIPretendUpwardsProcurementRegardGovernancer.m */, - 9BE01AD228927E9C00B50299 /* YUMIPretendUpwardsProcurementStatementRegardGovernancer.h */, - 9BE01AD328927E9C00B50299 /* YUMIPretendUpwardsProcurementStatementRegardGovernancer.m */, - 9BE01ADF28937DBC00B50299 /* YUMIPretendUpwardsProcurementSolitaireRegardGovernancer.h */, - 9BE01AE028937DBC00B50299 /* YUMIPretendUpwardsProcurementSolitaireRegardGovernancer.m */, - 9BE01AE82893CB4400B50299 /* YUMIPretendHuntforRegardGovernancer.h */, - 9BE01AE92893CB4400B50299 /* YUMIPretendHuntforRegardGovernancer.m */, + E8395328276A002800CF2F24 /* XPMineDressUpViewController.h */, + E8395329276A002800CF2F24 /* XPMineDressUpViewController.m */, + E839532B276A030F00CF2F24 /* XPMineDressUpListViewController.h */, + E839532C276A030F00CF2F24 /* XPMineDressUpListViewController.m */, + 9B1EF3D027E81C0600554295 /* XPMineDressUpBubbleViewController.h */, + 9B1EF3D127E81C0600554295 /* XPMineDressUpBubbleViewController.m */, + 9BE01ACF28927AC000B50299 /* XPDressUpShopViewController.h */, + 9BE01AD028927AC000B50299 /* XPDressUpShopViewController.m */, + 9BE01AD228927E9C00B50299 /* XPDressUpShopListViewController.h */, + 9BE01AD328927E9C00B50299 /* XPDressUpShopListViewController.m */, + 9BE01ADF28937DBC00B50299 /* XPDressUpShopCardViewController.h */, + 9BE01AE028937DBC00B50299 /* XPDressUpShopCardViewController.m */, + 9BE01AE82893CB4400B50299 /* XPDressSearchViewController.h */, + 9BE01AE92893CB4400B50299 /* XPDressSearchViewController.m */, ); path = View; sourceTree = ""; @@ -6376,8 +6132,8 @@ E83953252769FFD900CF2F24 /* Protocol */ = { isa = PBXGroup; children = ( - E8395335276A03E200CF2F24 /* FBCManePretendedCeremony.h */, - 9BE01ADB2892975000B50299 /* FBCPretendedProcurementCeremony.h */, + E8395335276A03E200CF2F24 /* XPMineDressUpProtocol.h */, + 9BE01ADB2892975000B50299 /* XPDressUpShopProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -6385,10 +6141,10 @@ E83953262769FFE200CF2F24 /* Presenter */ = { isa = PBXGroup; children = ( - E8395332276A03C300CF2F24 /* YUMIManePretendUpwardsExternalizer.h */, - E8395333276A03C300CF2F24 /* YUMIManePretendUpwardsExternalizer.m */, - 9BE01AD8289296B500B50299 /* YUMIPretendUpwardsProcurementExternalizer.h */, - 9BE01AD9289296B500B50299 /* YUMIPretendUpwardsProcurementExternalizer.m */, + E8395332276A03C300CF2F24 /* XPMineDressUpPresenter.h */, + E8395333276A03C300CF2F24 /* XPMineDressUpPresenter.m */, + 9BE01AD8289296B500B50299 /* XPDressUpShopPresenter.h */, + 9BE01AD9289296B500B50299 /* XPDressUpShopPresenter.m */, ); path = Presenter; sourceTree = ""; @@ -6396,18 +6152,18 @@ E83953272769FFF100CF2F24 /* Model */ = { isa = PBXGroup; children = ( - E82D5C6E276AE60000858D6D /* IntelligencewearMatrix.h */, - E82D5C6F276AE60000858D6D /* IntelligencewearMatrix.m */, - E82D5C71276AE94800858D6D /* CarMatrix.h */, - E82D5C72276AE94800858D6D /* CarMatrix.m */, - E82D5C74276AEB5100858D6D /* NameplateMatrix.h */, - E82D5C75276AEB5100858D6D /* NameplateMatrix.m */, - 9BBC028C2786FA060007C24B /* MagnificentSolitaireMatrix.h */, - 9BBC028D2786FA060007C24B /* MagnificentSolitaireMatrix.m */, - 9B1FC3D327E49A5D006EFFE0 /* ChatIntumesceMatrix.h */, - 9B1FC3D427E49A5D006EFFE0 /* ChatIntumesceMatrix.m */, - 9BE01ADC2892A66D00B50299 /* PretendUpwardsProcurementMatrix.h */, - 9BE01ADD2892A66D00B50299 /* PretendUpwardsProcurementMatrix.m */, + E82D5C6E276AE60000858D6D /* HeadwearModel.h */, + E82D5C6F276AE60000858D6D /* HeadwearModel.m */, + E82D5C71276AE94800858D6D /* CarModel.h */, + E82D5C72276AE94800858D6D /* CarModel.m */, + E82D5C74276AEB5100858D6D /* NameplateModel.h */, + E82D5C75276AEB5100858D6D /* NameplateModel.m */, + 9BBC028C2786FA060007C24B /* NobleCardModel.h */, + 9BBC028D2786FA060007C24B /* NobleCardModel.m */, + 9B1FC3D327E49A5D006EFFE0 /* ChatBubbleModel.h */, + 9B1FC3D427E49A5D006EFFE0 /* ChatBubbleModel.m */, + 9BE01ADC2892A66D00B50299 /* DressUpShopModel.h */, + 9BE01ADD2892A66D00B50299 /* DressUpShopModel.m */, ); path = Model; sourceTree = ""; @@ -6424,28 +6180,28 @@ E8395336276A0C9400CF2F24 /* Cell */ = { isa = PBXGroup; children = ( - E87E914C2796678D00A7B3F2 /* YUMIManePretendDispossessTabulationRegardElement.h */, - E87E914D2796678D00A7B3F2 /* YUMIManePretendDispossessTabulationRegardElement.m */, - E8395337276A0CC100CF2F24 /* YUMIManeIntelligencewearTabulationRegardElement.h */, - E8395338276A0CC100CF2F24 /* YUMIManeIntelligencewearTabulationRegardElement.m */, - E839533A276A0CCD00CF2F24 /* YUMIManeCarTabulationRegardElement.h */, - E839533B276A0CCD00CF2F24 /* YUMIManeCarTabulationRegardElement.m */, - E839533D276A0CDB00CF2F24 /* YUMIManeNameplateTabulationRegardElement.h */, - E839533E276A0CDB00CF2F24 /* YUMIManeNameplateTabulationRegardElement.m */, - E82D5C6B276ADCE700858D6D /* YUMIManePretendDispossessTabulationRegardElement.h */, - E82D5C6C276ADCE700858D6D /* YUMIManePretendDispossessTabulationRegardElement.m */, - 9BBC028F2786FC570007C24B /* YUMIManeMagnificentSolitaireTabulationRegardElement.h */, - 9BBC02902786FC570007C24B /* YUMIManeMagnificentSolitaireTabulationRegardElement.m */, - 9B1FC3D627E49C36006EFFE0 /* YUMIManePretendIntumesceAssembletionRegardElement.h */, - 9B1FC3D727E49C36006EFFE0 /* YUMIManePretendIntumesceAssembletionRegardElement.m */, - 9B1EF3D327E8294B00554295 /* YUMIManePretendDispossessAssembletionRegardElement.h */, - 9B1EF3D427E8294B00554295 /* YUMIManePretendDispossessAssembletionRegardElement.m */, - 9BE01AE228937EDE00B50299 /* YUMIPretendUpwardsProcurementAssembletionRegardElement.h */, - 9BE01AE328937EDE00B50299 /* YUMIPretendUpwardsProcurementAssembletionRegardElement.m */, - 9BE01AE528938AB600B50299 /* YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement.h */, - 9BE01AE628938AB600B50299 /* YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement.m */, - 9BE01AEB2893D0DF00B50299 /* YUMIPretendProcurementHuntforTabulationRegardElement.h */, - 9BE01AEC2893D0DF00B50299 /* YUMIPretendProcurementHuntforTabulationRegardElement.m */, + E87E914C2796678D00A7B3F2 /* XPMineDressEmptyTableViewCell.h */, + E87E914D2796678D00A7B3F2 /* XPMineDressEmptyTableViewCell.m */, + E8395337276A0CC100CF2F24 /* XPMineHeadwearTableViewCell.h */, + E8395338276A0CC100CF2F24 /* XPMineHeadwearTableViewCell.m */, + E839533A276A0CCD00CF2F24 /* XPMineCarTableViewCell.h */, + E839533B276A0CCD00CF2F24 /* XPMineCarTableViewCell.m */, + E839533D276A0CDB00CF2F24 /* XPMineNameplateTableViewCell.h */, + E839533E276A0CDB00CF2F24 /* XPMineNameplateTableViewCell.m */, + E82D5C6B276ADCE700858D6D /* XPMineDressEmptyTableViewCell.h */, + E82D5C6C276ADCE700858D6D /* XPMineDressEmptyTableViewCell.m */, + 9BBC028F2786FC570007C24B /* XPMineNobleCardTableViewCell.h */, + 9BBC02902786FC570007C24B /* XPMineNobleCardTableViewCell.m */, + 9B1FC3D627E49C36006EFFE0 /* XPMineDressBubbleCollectionViewCell.h */, + 9B1FC3D727E49C36006EFFE0 /* XPMineDressBubbleCollectionViewCell.m */, + 9B1EF3D327E8294B00554295 /* XPMineDressEmptyCollectionViewCell.h */, + 9B1EF3D427E8294B00554295 /* XPMineDressEmptyCollectionViewCell.m */, + 9BE01AE228937EDE00B50299 /* XPDressUpShopCollectionViewCell.h */, + 9BE01AE328937EDE00B50299 /* XPDressUpShopCollectionViewCell.m */, + 9BE01AE528938AB600B50299 /* XPDressUpShopCardTableViewCell.h */, + 9BE01AE628938AB600B50299 /* XPDressUpShopCardTableViewCell.m */, + 9BE01AEB2893D0DF00B50299 /* XPDressShopSearchTableViewCell.h */, + 9BE01AEC2893D0DF00B50299 /* XPDressShopSearchTableViewCell.m */, ); path = Cell; sourceTree = ""; @@ -6453,20 +6209,20 @@ E83ABEFA280EB5A000322EE4 /* SessionContent */ = { isa = PBXGroup; children = ( - E83ABEFB280EB5E200322EE4 /* SatisfactionUnfoildEnergeticAbstractMatrix.h */, - E83ABEFC280EB5E200322EE4 /* SatisfactionUnfoildEnergeticAbstractMatrix.m */, - E83ABF01280EC90C00322EE4 /* SatisfactionApplicationParaticipationMatrix.h */, - E83ABF02280EC90C00322EE4 /* SatisfactionApplicationParaticipationMatrix.m */, - E841ED5F280FB0BD00904808 /* SatisfactionPrototypeAscensionMatrix.h */, - E841ED60280FB0BD00904808 /* SatisfactionPrototypeAscensionMatrix.m */, - E8F1559128129EBA00EE8C06 /* SatisfactionSecretaryMatrix.h */, - E8F1559228129EBA00EE8C06 /* SatisfactionSecretaryMatrix.m */, - E86507E6281A8212006951B0 /* SatisfactionTweetMatrix.h */, - E86507E7281A8212006951B0 /* SatisfactionTweetMatrix.m */, - E86E79CE28A4E0B2006DAF48 /* SatisfactionRistPrecautiousMatrix.h */, - E86E79CF28A4E0B2006DAF48 /* SatisfactionRistPrecautiousMatrix.m */, - E8F65C202869A36F009BB5B9 /* SatisfactionParaticipationSeparationsMatrix.h */, - E8F65C212869A36F009BB5B9 /* SatisfactionParaticipationSeparationsMatrix.m */, + E83ABEFB280EB5E200322EE4 /* ContentOpenLiveInfoModel.h */, + E83ABEFC280EB5E200322EE4 /* ContentOpenLiveInfoModel.m */, + E83ABF01280EC90C00322EE4 /* ContentApplicationShareModel.h */, + E83ABF02280EC90C00322EE4 /* ContentApplicationShareModel.m */, + E841ED5F280FB0BD00904808 /* ContentLevelUpgradeModel.h */, + E841ED60280FB0BD00904808 /* ContentLevelUpgradeModel.m */, + E8F1559128129EBA00EE8C06 /* ContentSecretaryModel.h */, + E8F1559228129EBA00EE8C06 /* ContentSecretaryModel.m */, + E86507E6281A8212006951B0 /* ContentTweetModel.h */, + E86507E7281A8212006951B0 /* ContentTweetModel.m */, + E86E79CE28A4E0B2006DAF48 /* ContentRistAlertModel.h */, + E86E79CF28A4E0B2006DAF48 /* ContentRistAlertModel.m */, + E8F65C202869A36F009BB5B9 /* ContentShareMonentsModel.h */, + E8F65C212869A36F009BB5B9 /* ContentShareMonentsModel.m */, ); path = SessionContent; sourceTree = ""; @@ -6474,20 +6230,18 @@ E83DB47E274649B200D8CBD1 /* Model */ = { isa = PBXGroup; children = ( - E83DB47827462C4500D8CBD1 /* YUMIPresentBigCaptureMatrix.h */, - E83DB47927462C4500D8CBD1 /* YUMIPresentBigCaptureMatrix.m */, - 23D0B01D2A5BFF2D00C9B18B /* PIBaseAnimationViewModel.h */, - 23D0B01E2A5BFF2D00C9B18B /* PIBaseAnimationViewModel.m */, - E83DB47F274649FB00D8CBD1 /* YUMIPresentOriflammeConsumerAbstractMatrix.h */, - E83DB480274649FB00D8CBD1 /* YUMIPresentOriflammeConsumerAbstractMatrix.m */, - E83DB485274670DA00D8CBD1 /* YUMIChamberPresentBroadCastMatrix.h */, - E83DB486274670DA00D8CBD1 /* YUMIChamberPresentBroadCastMatrix.m */, - E86F6183284F4E4800E8EC9A /* ChamberHalfHourRateMatrix.h */, - E86F6184284F4E4800E8EC9A /* ChamberHalfHourRateMatrix.m */, - 9B8DE0DF289CF02900FB6EC2 /* YUMIPresentCompoundMatrix.h */, - 9B8DE0E0289CF02900FB6EC2 /* YUMIPresentCompoundMatrix.m */, - E80E09B42A42078F00CD2BE7 /* YUMIChamberSatelliteKitchenMatrix.h */, - E80E09B52A42078F00CD2BE7 /* YUMIChamberSatelliteKitchenMatrix.m */, + E83DB47827462C4500D8CBD1 /* XPGiftBigPrizeModel.h */, + E83DB47927462C4500D8CBD1 /* XPGiftBigPrizeModel.m */, + E83DB47F274649FB00D8CBD1 /* XPGiftBannerUserInfoModel.h */, + E83DB480274649FB00D8CBD1 /* XPGiftBannerUserInfoModel.m */, + E86F6183284F4E4800E8EC9A /* RoomHalfHourRankModel.h */, + E86F6184284F4E4800E8EC9A /* RoomHalfHourRankModel.m */, + 9B8DE0DF289CF02900FB6EC2 /* XPGiftCompoundModel.h */, + 9B8DE0E0289CF02900FB6EC2 /* XPGiftCompoundModel.m */, + E80E09B42A42078F00CD2BE7 /* XPRoomStarKitchenModel.h */, + E80E09B52A42078F00CD2BE7 /* XPRoomStarKitchenModel.m */, + 23BA16592A5D2ACF0030C5A3 /* PIBaseAnimationViewModel.h */, + 23BA165A2A5D2ACF0030C5A3 /* PIBaseAnimationViewModel.m */, ); path = Model; sourceTree = ""; @@ -6507,9 +6261,9 @@ E8412F9B2779BAD5006E1101 /* Protocol */ = { isa = PBXGroup; children = ( - E8412FAD2779CB2D006E1101 /* FBCChamberInstanllingCeremony.h */, - E87AE7FD277AAC5A0037823A /* FBCChamberTagCeremony.h */, - E8AA6EF327DF1EB6009B4C2B /* FBCChamberMotifCeremony.h */, + E8412FAD2779CB2D006E1101 /* XPRoomSettingProtocol.h */, + E87AE7FD277AAC5A0037823A /* XPRoomTagProtocol.h */, + E8AA6EF327DF1EB6009B4C2B /* XPRoomTopicProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -6517,12 +6271,12 @@ E8412F9C2779BAE6006E1101 /* Presenter */ = { isa = PBXGroup; children = ( - E8412FAE2779CB4D006E1101 /* YUMIChamberInstanllingExternalizer.h */, - E8412FAF2779CB4D006E1101 /* YUMIChamberInstanllingExternalizer.m */, - E87AE7FA277AAC450037823A /* YUMIChamberCoupleExternalizer.h */, - E87AE7FB277AAC450037823A /* YUMIChamberCoupleExternalizer.m */, - E8AA6EF027DF1E97009B4C2B /* YUMIChamberMotifExternalizer.h */, - E8AA6EF127DF1E97009B4C2B /* YUMIChamberMotifExternalizer.m */, + E8412FAE2779CB4D006E1101 /* XPRoomSettingPresenter.h */, + E8412FAF2779CB4D006E1101 /* XPRoomSettingPresenter.m */, + E87AE7FA277AAC450037823A /* XPRoomTagPresenter.h */, + E87AE7FB277AAC450037823A /* XPRoomTagPresenter.m */, + E8AA6EF027DF1E97009B4C2B /* XPRoomTopicPresenter.h */, + E8AA6EF127DF1E97009B4C2B /* XPRoomTopicPresenter.m */, ); path = Presenter; sourceTree = ""; @@ -6531,24 +6285,24 @@ isa = PBXGroup; children = ( E8412FA32779BE9B006E1101 /* Cell */, - E8412FA02779BE8F006E1101 /* YUMIChamberInstanllingRegardGovernancer.h */, - E8412FA12779BE8F006E1101 /* YUMIChamberInstanllingRegardGovernancer.m */, - E87AE7F7277AABE50037823A /* YUMIChamberCoupleStatementRegardGovernancer.h */, - E87AE7F8277AABE50037823A /* YUMIChamberCoupleStatementRegardGovernancer.m */, - E84BF7D2277C383700EF8877 /* YUMIChamberInstanllingIntrojectionRegard.h */, - E84BF7D3277C383700EF8877 /* YUMIChamberInstanllingIntrojectionRegard.m */, - E84BF7D5277C6E2100EF8877 /* YUMIChamberRoleRegardGovernancer.h */, - E84BF7D6277C6E2100EF8877 /* YUMIChamberRoleRegardGovernancer.m */, - E84BF7DE277C869A00EF8877 /* YUMIChamberOnLineRegardGovernancer.h */, - E84BF7DF277C869A00EF8877 /* YUMIChamberOnLineRegardGovernancer.m */, - E87E91532796B6DE00A7B3F2 /* YUMIChamberCallforConsumerRegardGovernancer.h */, - E87E91542796B6DE00A7B3F2 /* YUMIChamberCallforConsumerRegardGovernancer.m */, - E8AA6EED27DF1E6B009B4C2B /* YUMIChamberMotifRegardGovernancer.h */, - E8AA6EEE27DF1E6B009B4C2B /* YUMIChamberMotifRegardGovernancer.m */, - E80E900A27E0358900434B90 /* YUMIChamberMotifPrecautiousRegard.h */, - E80E900B27E0358900434B90 /* YUMIChamberMotifPrecautiousRegard.m */, - 9B32A04528881845002009D2 /* YUMIChamberCoupleStatementRegard.h */, - 9B32A04628881845002009D2 /* YUMIChamberCoupleStatementRegard.m */, + E8412FA02779BE8F006E1101 /* XPRoomSettingViewController.h */, + E8412FA12779BE8F006E1101 /* XPRoomSettingViewController.m */, + E87AE7F7277AABE50037823A /* XPRoomTagListViewController.h */, + E87AE7F8277AABE50037823A /* XPRoomTagListViewController.m */, + E84BF7D2277C383700EF8877 /* XPRoomSettingInputView.h */, + E84BF7D3277C383700EF8877 /* XPRoomSettingInputView.m */, + E84BF7D5277C6E2100EF8877 /* XPRoomRoleViewController.h */, + E84BF7D6277C6E2100EF8877 /* XPRoomRoleViewController.m */, + E84BF7DE277C869A00EF8877 /* XPRoomOnLineViewController.h */, + E84BF7DF277C869A00EF8877 /* XPRoomOnLineViewController.m */, + E87E91532796B6DE00A7B3F2 /* XPRoomInviteUserViewController.h */, + E87E91542796B6DE00A7B3F2 /* XPRoomInviteUserViewController.m */, + E8AA6EED27DF1E6B009B4C2B /* XPRoomTopicViewController.h */, + E8AA6EEE27DF1E6B009B4C2B /* XPRoomTopicViewController.m */, + E80E900A27E0358900434B90 /* XPRoomTopicAlertView.h */, + E80E900B27E0358900434B90 /* XPRoomTopicAlertView.m */, + 9B32A04528881845002009D2 /* XPRoomTagListView.h */, + 9B32A04628881845002009D2 /* XPRoomTagListView.m */, ); path = View; sourceTree = ""; @@ -6565,12 +6319,12 @@ E8412F9F2779BB03006E1101 /* Model */ = { isa = PBXGroup; children = ( - E8412FA72779C2ED006E1101 /* YUMIChamberInstanllingProvisionMatrix.h */, - E8412FA82779C2ED006E1101 /* YUMIChamberInstanllingProvisionMatrix.m */, - E84BF7CF277BFCDD00EF8877 /* ChamberCoupleMatrix.h */, - E84BF7D0277BFCDD00EF8877 /* ChamberCoupleMatrix.m */, - 9BFE992C288142FD009DA429 /* ChamberClassifyMatrix.h */, - 9BFE992D288142FD009DA429 /* ChamberClassifyMatrix.m */, + E8412FA72779C2ED006E1101 /* XPRoomSettingItemModel.h */, + E8412FA82779C2ED006E1101 /* XPRoomSettingItemModel.m */, + E84BF7CF277BFCDD00EF8877 /* RoomTagModel.h */, + E84BF7D0277BFCDD00EF8877 /* RoomTagModel.m */, + 9BFE992C288142FD009DA429 /* RoomClassifyModel.h */, + 9BFE992D288142FD009DA429 /* RoomClassifyModel.m */, ); path = Model; sourceTree = ""; @@ -6578,16 +6332,16 @@ E8412FA32779BE9B006E1101 /* Cell */ = { isa = PBXGroup; children = ( - E8412FA42779BED1006E1101 /* YUMIChamberInstanllingTabulationRegardElement.h */, - E8412FA52779BED1006E1101 /* YUMIChamberInstanllingTabulationRegardElement.m */, - E84BF7C8277AF79D00EF8877 /* YUMIChamberInstanllingCoupleElement.h */, - E84BF7C9277AF79D00EF8877 /* YUMIChamberInstanllingCoupleElement.m */, - E84BF7D8277C72AC00EF8877 /* YUMIChamberRoleTabulationRegardElement.h */, - E84BF7D9277C72AC00EF8877 /* YUMIChamberRoleTabulationRegardElement.m */, - E84BF7DB277C765400EF8877 /* YUMIChamberRoleDispossessTabulationRegardElement.h */, - E84BF7DC277C765400EF8877 /* YUMIChamberRoleDispossessTabulationRegardElement.m */, - E89BD7D2277D471100E31B19 /* YUMIChamberOnlineTabulationRegardElement.h */, - E89BD7D3277D471100E31B19 /* YUMIChamberOnlineTabulationRegardElement.m */, + E8412FA42779BED1006E1101 /* XPRoomSettingTableViewCell.h */, + E8412FA52779BED1006E1101 /* XPRoomSettingTableViewCell.m */, + E84BF7C8277AF79D00EF8877 /* XPRoomSettingTagCell.h */, + E84BF7C9277AF79D00EF8877 /* XPRoomSettingTagCell.m */, + E84BF7D8277C72AC00EF8877 /* XPRoomRoleTableViewCell.h */, + E84BF7D9277C72AC00EF8877 /* XPRoomRoleTableViewCell.m */, + E84BF7DB277C765400EF8877 /* XPRoomRoleEmptyTableViewCell.h */, + E84BF7DC277C765400EF8877 /* XPRoomRoleEmptyTableViewCell.m */, + E89BD7D2277D471100E31B19 /* XPRoomOnlineTableViewCell.h */, + E89BD7D3277D471100E31B19 /* XPRoomOnlineTableViewCell.m */, ); path = Cell; sourceTree = ""; @@ -6609,7 +6363,7 @@ E84150B127747A8D00A7F548 /* Protocol */ = { isa = PBXGroup; children = ( - E84150BC27747BBD00A7F548 /* FBCFirstReindictCeremony.h */, + E84150BC27747BBD00A7F548 /* XPFirstRechargeProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -6617,8 +6371,8 @@ E84150B227747A9500A7F548 /* Presenter */ = { isa = PBXGroup; children = ( - E84150B927747BAF00A7F548 /* YUMIThresholdReindictExternalizer.h */, - E84150BA27747BAF00A7F548 /* YUMIThresholdReindictExternalizer.m */, + E84150B927747BAF00A7F548 /* XPFirstRechargePresenter.h */, + E84150BA27747BAF00A7F548 /* XPFirstRechargePresenter.m */, ); path = Presenter; sourceTree = ""; @@ -6626,13 +6380,13 @@ E84150B327747A9E00A7F548 /* View */ = { isa = PBXGroup; children = ( - E87DF4B62A42C2FD009C1185 /* YUMIThresholdReindictAssembletionRegard.h */, - E87DF4B52A42C2FD009C1185 /* YUMIThresholdReindictAssembletionRegard.m */, - E87DF4AF2A429B32009C1185 /* YUMIThresholdReindictRegard.h */, - E87DF4AE2A429B32009C1185 /* YUMIThresholdReindictRegard.m */, + E87DF4B62A42C2FD009C1185 /* XPFirstRechargeCollectionView.h */, + E87DF4B52A42C2FD009C1185 /* XPFirstRechargeCollectionView.m */, + E87DF4AF2A429B32009C1185 /* XPFirstRechargeView.h */, + E87DF4AE2A429B32009C1185 /* XPFirstRechargeView.m */, E80DE4042775663500BE5BCB /* Cell */, - E80DE40E2775C34E00BE5BCB /* YUMIThresholdReindictSuccessRegard.h */, - E80DE40F2775C34E00BE5BCB /* YUMIThresholdReindictSuccessRegard.m */, + E80DE40E2775C34E00BE5BCB /* XPFirstRechargeSuccessView.h */, + E80DE40F2775C34E00BE5BCB /* XPFirstRechargeSuccessView.m */, ); path = View; sourceTree = ""; @@ -6649,12 +6403,12 @@ E84150B527747AAD00A7F548 /* Model */ = { isa = PBXGroup; children = ( - E84150C027747BF700A7F548 /* ThresholdReindictMatrix.h */, - E84150C127747BF700A7F548 /* ThresholdReindictMatrix.m */, - E84150C327747E0900A7F548 /* ThresholdReindictRewardMatrix.h */, - E84150C427747E0900A7F548 /* ThresholdReindictRewardMatrix.m */, - E87DF4B12A429C6E009C1185 /* ThresholdChargeChamberWindowMatrix.h */, - E87DF4B22A429C6E009C1185 /* ThresholdChargeChamberWindowMatrix.m */, + E84150C027747BF700A7F548 /* FirstRechargeModel.h */, + E84150C127747BF700A7F548 /* FirstRechargeModel.m */, + E84150C327747E0900A7F548 /* FirstRechargeRewardModel.h */, + E84150C427747E0900A7F548 /* FirstRechargeRewardModel.m */, + E87DF4B12A429C6E009C1185 /* FirstChargeRoomWindowModel.h */, + E87DF4B22A429C6E009C1185 /* FirstChargeRoomWindowModel.m */, ); path = Model; sourceTree = ""; @@ -6662,30 +6416,30 @@ E84A2E7E2A527DF800D6AF8A /* IncomeRecord */ = { isa = PBXGroup; children = ( - E84A2EAA2A528A4100D6AF8A /* YUMIRevenueReflectionGoldSpecificsPickRegardRegard.h */, - E84A2EA92A528A4100D6AF8A /* YUMIRevenueReflectionGoldSpecificsPickRegardRegard.m */, - E84A2EA62A5288FD00D6AF8A /* YUMIGoldSpecificsChooseChamberElement.h */, - E84A2EA72A5288FD00D6AF8A /* YUMIGoldSpecificsChooseChamberElement.m */, - E84A2EA32A5288CB00D6AF8A /* YUMIGoldSpecificsChooseChamberRegard.h */, - E84A2EA42A5288CB00D6AF8A /* YUMIGoldSpecificsChooseChamberRegard.m */, - E84A2EA12A52883000D6AF8A /* YUMIRevenueReflectionGoldSpecificsIntratemporalRegard.h */, - E84A2EA02A52883000D6AF8A /* YUMIRevenueReflectionGoldSpecificsIntratemporalRegard.m */, - E84A2E9E2A5287D200D6AF8A /* YUMIRevenueReflectionGoldSpecificsRegard.h */, - E84A2E9D2A5287D200D6AF8A /* YUMIRevenueReflectionGoldSpecificsRegard.m */, - E84A2E972A52817E00D6AF8A /* YUMIRevenueReflectionRegard.h */, - E84A2E982A52817E00D6AF8A /* YUMIRevenueReflectionRegard.m */, - E84A2E952A5280F900D6AF8A /* YUMIExchangeDiamondsRegard.h */, - E84A2E942A5280F900D6AF8A /* YUMIExchangeDiamondsRegard.m */, + E84A2EAA2A528A4100D6AF8A /* XPIncomeRecordGoldDetailsPickViewView.h */, + E84A2EA92A528A4100D6AF8A /* XPIncomeRecordGoldDetailsPickViewView.m */, + E84A2EA62A5288FD00D6AF8A /* XPGoldDetailsChooseRoomCell.h */, + E84A2EA72A5288FD00D6AF8A /* XPGoldDetailsChooseRoomCell.m */, + E84A2EA32A5288CB00D6AF8A /* XPGoldDetailsChooseRoomView.h */, + E84A2EA42A5288CB00D6AF8A /* XPGoldDetailsChooseRoomView.m */, + E84A2EA12A52883000D6AF8A /* XPIncomeRecordGoldDetailsTimeView.h */, + E84A2EA02A52883000D6AF8A /* XPIncomeRecordGoldDetailsTimeView.m */, + E84A2E9E2A5287D200D6AF8A /* XPIncomeRecordGoldDetailsView.h */, + E84A2E9D2A5287D200D6AF8A /* XPIncomeRecordGoldDetailsView.m */, + E84A2E972A52817E00D6AF8A /* XPIncomeRecordView.h */, + E84A2E982A52817E00D6AF8A /* XPIncomeRecordView.m */, + E84A2E952A5280F900D6AF8A /* XPExchangeDiamondsView.h */, + E84A2E942A5280F900D6AF8A /* XPExchangeDiamondsView.m */, E84A2E8F2A527E6B00D6AF8A /* Protocol */, E84A2E8E2A527E6100D6AF8A /* Presenter */, - E84A2E882A527DF800D6AF8A /* YUMIExchangeDiamondsVC.h */, - E84A2E822A527DF800D6AF8A /* YUMIExchangeDiamondsVC.m */, - E84A2E802A527DF800D6AF8A /* YUMIRevenueReflectionGoldSpecificsVC.h */, - E84A2E842A527DF800D6AF8A /* YUMIRevenueReflectionGoldSpecificsVC.m */, - E84A2E862A527DF800D6AF8A /* YUMIRevenueReflectionVC.h */, - E84A2E812A527DF800D6AF8A /* YUMIRevenueReflectionVC.m */, - E84A2E9A2A52823900D6AF8A /* YUMIEssayField.h */, - E84A2E9B2A52823900D6AF8A /* YUMIEssayField.m */, + E84A2E882A527DF800D6AF8A /* XPExchangeDiamondsVC.h */, + E84A2E822A527DF800D6AF8A /* XPExchangeDiamondsVC.m */, + E84A2E802A527DF800D6AF8A /* XPIncomeRecordGoldDetailsVC.h */, + E84A2E842A527DF800D6AF8A /* XPIncomeRecordGoldDetailsVC.m */, + E84A2E862A527DF800D6AF8A /* XPIncomeRecordVC.h */, + E84A2E812A527DF800D6AF8A /* XPIncomeRecordVC.m */, + E84A2E9A2A52823900D6AF8A /* XPTextField.h */, + E84A2E9B2A52823900D6AF8A /* XPTextField.m */, ); path = IncomeRecord; sourceTree = ""; @@ -6693,8 +6447,8 @@ E84A2E8E2A527E6100D6AF8A /* Presenter */ = { isa = PBXGroup; children = ( - E84A2E922A527EC700D6AF8A /* YUMIRevenueReflectionExternalize.h */, - E84A2E912A527EC700D6AF8A /* YUMIRevenueReflectionExternalize.m */, + E84A2E922A527EC700D6AF8A /* XPIncomeRecordPresent.h */, + E84A2E912A527EC700D6AF8A /* XPIncomeRecordPresent.m */, ); path = Presenter; sourceTree = ""; @@ -6702,7 +6456,7 @@ E84A2E8F2A527E6B00D6AF8A /* Protocol */ = { isa = PBXGroup; children = ( - E84A2E902A527EBF00D6AF8A /* FBCIncomeRecordCeremony.h */, + E84A2E902A527EBF00D6AF8A /* XPIncomeRecordProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -6710,12 +6464,12 @@ E84B0E3C2727EDD4008818C6 /* View */ = { isa = PBXGroup; children = ( - 1808072B2731598F001FD836 /* YUMINetIndicateYYDesignation.h */, - 1808072C2731598F001FD836 /* YUMINetIndicateYYDesignation.m */, - E84B0E3D2727EDF6008818C6 /* YUMIChamberCommunicationTabulationRegardElement.h */, - E84B0E3E2727EDF6008818C6 /* YUMIChamberCommunicationTabulationRegardElement.m */, - E84B0E402727EE0A008818C6 /* YUMIChamberCommunicationIntelligencerRegard.h */, - E84B0E412727EE0A008818C6 /* YUMIChamberCommunicationIntelligencerRegard.m */, + 1808072B2731598F001FD836 /* XPNetImageYYLabel.h */, + 1808072C2731598F001FD836 /* XPNetImageYYLabel.m */, + E84B0E3D2727EDF6008818C6 /* XPRoomMessageTableViewCell.h */, + E84B0E3E2727EDF6008818C6 /* XPRoomMessageTableViewCell.m */, + E84B0E402727EE0A008818C6 /* XPRoomMessageHeaderView.h */, + E84B0E412727EE0A008818C6 /* XPRoomMessageHeaderView.m */, ); path = View; sourceTree = ""; @@ -6723,10 +6477,10 @@ E84B0E432727EF2C008818C6 /* Model */ = { isa = PBXGroup; children = ( - E87A24EF272935920086A794 /* YUMICommunicationRemoteExtMatrix.h */, - E87A24F0272935920086A794 /* YUMICommunicationRemoteExtMatrix.m */, - E8398069290288660084BFC8 /* YUMICommunicationAbstractMatrix.h */, - E839806A290288660084BFC8 /* YUMICommunicationAbstractMatrix.m */, + E87A24EF272935920086A794 /* XPMessageRemoteExtModel.h */, + E87A24F0272935920086A794 /* XPMessageRemoteExtModel.m */, + E8398069290288660084BFC8 /* XPMessageInfoModel.h */, + E839806A290288660084BFC8 /* XPMessageInfoModel.m */, ); path = Model; sourceTree = ""; @@ -6735,8 +6489,8 @@ isa = PBXGroup; children = ( E84B0E4927280289008818C6 /* XPRoomMessageConstant.h */, - E84B0E442727EF9D008818C6 /* YUMIChamberCommunicationAnatomiser.h */, - E84B0E452727EF9D008818C6 /* YUMIChamberCommunicationAnatomiser.m */, + E84B0E442727EF9D008818C6 /* XPRoomMessageParser.h */, + E84B0E452727EF9D008818C6 /* XPRoomMessageParser.m */, ); path = Tool; sourceTree = ""; @@ -6756,17 +6510,17 @@ E85E7A3C2A4EB0D200B6D00A /* Presenter */ = { isa = PBXGroup; children = ( - E85E7B6D2A4EC4AE00B6D00A /* YUMIManeUnionExternalizer.h */, - E85E7B6C2A4EC4AE00B6D00A /* YUMIManeUnionExternalizer.m */, + E85E7B6D2A4EC4AE00B6D00A /* XPMineGuildPresenter.h */, + E85E7B6C2A4EC4AE00B6D00A /* XPMineGuildPresenter.m */, E85E7A442A4EB0D200B6D00A /* Income */, E85E7A4C2A4EB0D200B6D00A /* Setting */, E85E7A3F2A4EB0D200B6D00A /* SuperAdmin */, - E85E7A572A4EB0D200B6D00A /* YUMICollectiveExternalizer.h */, - E85E7A492A4EB0D200B6D00A /* YUMICollectiveExternalizer.m */, - E85E7A3E2A4EB0D200B6D00A /* YUMIUnionExternalizer.h */, - E85E7A4B2A4EB0D200B6D00A /* YUMIUnionExternalizer.m */, - E85E7A3D2A4EB0D200B6D00A /* YUMIUnionHuntforExternalizer.h */, - E85E7A4A2A4EB0D200B6D00A /* YUMIUnionHuntforExternalizer.m */, + E85E7A572A4EB0D200B6D00A /* XPClanPresenter.h */, + E85E7A492A4EB0D200B6D00A /* XPClanPresenter.m */, + E85E7A3E2A4EB0D200B6D00A /* XPGuildPresenter.h */, + E85E7A4B2A4EB0D200B6D00A /* XPGuildPresenter.m */, + E85E7A3D2A4EB0D200B6D00A /* XPGuildSearchPresenter.h */, + E85E7A4A2A4EB0D200B6D00A /* XPGuildSearchPresenter.m */, ); path = Presenter; sourceTree = ""; @@ -6774,10 +6528,10 @@ E85E7A3F2A4EB0D200B6D00A /* SuperAdmin */ = { isa = PBXGroup; children = ( - E85E7A402A4EB0D200B6D00A /* YUMISensationalManagementSetExternalizer.m */, - E85E7A412A4EB0D200B6D00A /* YUMISensationalManagementExecutiveChamberExternalizer.m */, - E85E7A422A4EB0D200B6D00A /* YUMISensationalManagementSetExternalizer.h */, - E85E7A432A4EB0D200B6D00A /* YUMISensationalManagementExecutiveChamberExternalizer.h */, + E85E7A402A4EB0D200B6D00A /* XPSuperAdminSetPresenter.m */, + E85E7A412A4EB0D200B6D00A /* XPSuperAdminManagerRoomPresenter.m */, + E85E7A422A4EB0D200B6D00A /* XPSuperAdminSetPresenter.h */, + E85E7A432A4EB0D200B6D00A /* XPSuperAdminManagerRoomPresenter.h */, ); path = SuperAdmin; sourceTree = ""; @@ -6785,10 +6539,10 @@ E85E7A442A4EB0D200B6D00A /* Income */ = { isa = PBXGroup; children = ( - E85E7A482A4EB0D200B6D00A /* YUMIUnionRevenueSpecificExternalizer.h */, - E85E7A462A4EB0D200B6D00A /* YUMIUnionRevenueSpecificExternalizer.m */, - E85E7A472A4EB0D200B6D00A /* YUMIUnionRevenueExternalizer.h */, - E85E7A452A4EB0D200B6D00A /* YUMIUnionRevenueExternalizer.m */, + E85E7A482A4EB0D200B6D00A /* XPGuildIncomeDetailPresenter.h */, + E85E7A462A4EB0D200B6D00A /* XPGuildIncomeDetailPresenter.m */, + E85E7A472A4EB0D200B6D00A /* XPGuildIncomePresenter.h */, + E85E7A452A4EB0D200B6D00A /* XPGuildIncomePresenter.m */, ); path = Income; sourceTree = ""; @@ -6796,16 +6550,16 @@ E85E7A4C2A4EB0D200B6D00A /* Setting */ = { isa = PBXGroup; children = ( - E85E7A562A4EB0D200B6D00A /* YUMIUnionExecutivePerExternalizer.h */, - E85E7A502A4EB0D200B6D00A /* YUMIUnionExecutivePerExternalizer.m */, - E85E7A4F2A4EB0D200B6D00A /* YUMIUnionMangerStatementExternalizer.h */, - E85E7A532A4EB0D200B6D00A /* YUMIUnionMangerStatementExternalizer.m */, - E85E7A542A4EB0D200B6D00A /* YUMIUnionRemoveComponentExternalizer.h */, - E85E7A4E2A4EB0D200B6D00A /* YUMIUnionRemoveComponentExternalizer.m */, - E85E7A552A4EB0D200B6D00A /* YUMIUnionSetNameExternalizer.h */, - E85E7A512A4EB0D200B6D00A /* YUMIUnionSetNameExternalizer.m */, - E85E7A522A4EB0D200B6D00A /* YUMIManeExecutiveSetExternalizer.h */, - E85E7A4D2A4EB0D200B6D00A /* YUMIManeExecutiveSetExternalizer.m */, + E85E7A562A4EB0D200B6D00A /* XPGuildManagerPerPresenter.h */, + E85E7A502A4EB0D200B6D00A /* XPGuildManagerPerPresenter.m */, + E85E7A4F2A4EB0D200B6D00A /* XPGuildMangerListPresenter.h */, + E85E7A532A4EB0D200B6D00A /* XPGuildMangerListPresenter.m */, + E85E7A542A4EB0D200B6D00A /* XPGuildRemoveMemberPresenter.h */, + E85E7A4E2A4EB0D200B6D00A /* XPGuildRemoveMemberPresenter.m */, + E85E7A552A4EB0D200B6D00A /* XPGuildSetNamePresenter.h */, + E85E7A512A4EB0D200B6D00A /* XPGuildSetNamePresenter.m */, + E85E7A522A4EB0D200B6D00A /* XPMineManagerSetPresenter.h */, + E85E7A4D2A4EB0D200B6D00A /* XPMineManagerSetPresenter.m */, ); path = Setting; sourceTree = ""; @@ -6813,13 +6567,13 @@ E85E7A582A4EB0D200B6D00A /* Protocol */ = { isa = PBXGroup; children = ( - E85E7B6F2A4EC4B700B6D00A /* FBCManeUnionCeremony.h */, + E85E7B6F2A4EC4B700B6D00A /* XPMineGuildProtocol.h */, E85E7A5D2A4EB0D200B6D00A /* Income */, E85E7A622A4EB0D200B6D00A /* Setting */, E85E7A5A2A4EB0D200B6D00A /* SuperAdmin */, - E85E7A592A4EB0D200B6D00A /* FBCCollectiveCeremony.h */, - E85E7A612A4EB0D200B6D00A /* FBCUnionCeremony.h */, - E85E7A602A4EB0D200B6D00A /* FBCUnionHuntforCeremony.h */, + E85E7A592A4EB0D200B6D00A /* XPClanProtocol.h */, + E85E7A612A4EB0D200B6D00A /* XPGuildProtocol.h */, + E85E7A602A4EB0D200B6D00A /* XPGuildSearchProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -6827,8 +6581,8 @@ E85E7A5A2A4EB0D200B6D00A /* SuperAdmin */ = { isa = PBXGroup; children = ( - E85E7A5B2A4EB0D200B6D00A /* FBCSensationalManagementSetCeremony.h */, - E85E7A5C2A4EB0D200B6D00A /* FBCSensationalManagementExecutiveChamberCeremony.h */, + E85E7A5B2A4EB0D200B6D00A /* XPSuperAdminSetProtocol.h */, + E85E7A5C2A4EB0D200B6D00A /* XPSuperAdminManagerRoomProtocol.h */, ); path = SuperAdmin; sourceTree = ""; @@ -6836,8 +6590,8 @@ E85E7A5D2A4EB0D200B6D00A /* Income */ = { isa = PBXGroup; children = ( - E85E7A5E2A4EB0D200B6D00A /* FBCUnionIncomeCeremony.h */, - E85E7A5F2A4EB0D200B6D00A /* FBCUnionIncomeDetailCeremony.h */, + E85E7A5E2A4EB0D200B6D00A /* XPGuildIncomeProtocol.h */, + E85E7A5F2A4EB0D200B6D00A /* XPGuildIncomeDetailProtocol.h */, ); path = Income; sourceTree = ""; @@ -6845,11 +6599,11 @@ E85E7A622A4EB0D200B6D00A /* Setting */ = { isa = PBXGroup; children = ( - E85E7A632A4EB0D200B6D00A /* FBCUnionSetExecutiveCeremony.h */, - E85E7A642A4EB0D200B6D00A /* FBCUnionExecutivePerCeremony.h */, - E85E7A652A4EB0D200B6D00A /* FBCUnionRemoveMemberCeremony.h */, - E85E7A662A4EB0D200B6D00A /* FBCUnionSetNameCeremony.h */, - E85E7A672A4EB0D200B6D00A /* FBCUnionExecutiveStatementCeremony.h */, + E85E7A632A4EB0D200B6D00A /* XPGuildSetManagerProtocol.h */, + E85E7A642A4EB0D200B6D00A /* XPGuildManagerPerProtocol.h */, + E85E7A652A4EB0D200B6D00A /* XPGuildRemoveMemberProtocol.h */, + E85E7A662A4EB0D200B6D00A /* XPGuildSetNameProtocol.h */, + E85E7A672A4EB0D200B6D00A /* XPGuildManagerListProtocol.h */, ); path = Setting; sourceTree = ""; @@ -6857,24 +6611,24 @@ E85E7A682A4EB0D200B6D00A /* Model */ = { isa = PBXGroup; children = ( - E85E7A6B2A4EB0D200B6D00A /* CollectiveSpecificAbstractMatrix.h */, - E85E7A822A4EB0D200B6D00A /* CollectiveSpecificAbstractMatrix.m */, - E85E7A6A2A4EB0D200B6D00A /* CollectiveAbstractMatrix.h */, - E85E7A7F2A4EB0D200B6D00A /* CollectiveAbstractMatrix.m */, - E85E7A6C2A4EB0D200B6D00A /* CollectiveComponentSpecificAbstractMatrix.h */, - E85E7A812A4EB0D200B6D00A /* CollectiveComponentSpecificAbstractMatrix.m */, - E85E7A692A4EB0D200B6D00A /* UnionAuthMatrix.h */, - E85E7A7E2A4EB0D200B6D00A /* UnionAuthMatrix.m */, - E85E7A6D2A4EB0D200B6D00A /* UnionAbstractMatrix.h */, - E85E7A802A4EB0D200B6D00A /* UnionAbstractMatrix.m */, - E85E7A7D2A4EB0D200B6D00A /* UnionCommunicationMatrix.h */, - E85E7A832A4EB0D200B6D00A /* UnionCommunicationMatrix.m */, - E85E7A842A4EB0D200B6D00A /* UnionHuntforConsumerAbstractMatrix.h */, - E85E7A7C2A4EB0D200B6D00A /* UnionHuntforConsumerAbstractMatrix.m */, + E85E7A6B2A4EB0D200B6D00A /* ClanDetailInfoModel.h */, + E85E7A822A4EB0D200B6D00A /* ClanDetailInfoModel.m */, + E85E7A6A2A4EB0D200B6D00A /* ClanInfoModel.h */, + E85E7A7F2A4EB0D200B6D00A /* ClanInfoModel.m */, + E85E7A6C2A4EB0D200B6D00A /* ClanMemberDetailInfoModel.h */, + E85E7A812A4EB0D200B6D00A /* ClanMemberDetailInfoModel.m */, + E85E7A692A4EB0D200B6D00A /* GuildAuthModel.h */, + E85E7A7E2A4EB0D200B6D00A /* GuildAuthModel.m */, + E85E7A6D2A4EB0D200B6D00A /* GuildInfoModel.h */, + E85E7A802A4EB0D200B6D00A /* GuildInfoModel.m */, + E85E7A7D2A4EB0D200B6D00A /* GuildMessageModel.h */, + E85E7A832A4EB0D200B6D00A /* GuildMessageModel.m */, + E85E7A842A4EB0D200B6D00A /* GuildSearchUserInfoModel.h */, + E85E7A7C2A4EB0D200B6D00A /* GuildSearchUserInfoModel.m */, E85E7A752A4EB0D200B6D00A /* Income */, E85E7A6E2A4EB0D200B6D00A /* SuperAdmin */, - E85E7B522A4EB4AD00B6D00A /* YUMIManeUnionStatementMatrix.h */, - E85E7B532A4EB4AD00B6D00A /* YUMIManeUnionStatementMatrix.m */, + E85E7B522A4EB4AD00B6D00A /* XPMineGuildListModel.h */, + E85E7B532A4EB4AD00B6D00A /* XPMineGuildListModel.m */, ); path = Model; sourceTree = ""; @@ -6882,12 +6636,12 @@ E85E7A6E2A4EB0D200B6D00A /* SuperAdmin */ = { isa = PBXGroup; children = ( - E85E7A6F2A4EB0D200B6D00A /* UnionChamberAbstractMatrix.h */, - E85E7A722A4EB0D200B6D00A /* UnionChamberAbstractMatrix.m */, - E85E7A742A4EB0D200B6D00A /* UnionHuntforSensationalManagementMatrix.h */, - E85E7A712A4EB0D200B6D00A /* UnionHuntforSensationalManagementMatrix.m */, - E85E7A732A4EB0D200B6D00A /* UnionSensationalManagementAbstractMatrix.h */, - E85E7A702A4EB0D200B6D00A /* UnionSensationalManagementAbstractMatrix.m */, + E85E7A6F2A4EB0D200B6D00A /* GuildRoomInfoModel.h */, + E85E7A722A4EB0D200B6D00A /* GuildRoomInfoModel.m */, + E85E7A742A4EB0D200B6D00A /* GuildSearchSuperAdminModel.h */, + E85E7A712A4EB0D200B6D00A /* GuildSearchSuperAdminModel.m */, + E85E7A732A4EB0D200B6D00A /* GuildSuperAdminInfoModel.h */, + E85E7A702A4EB0D200B6D00A /* GuildSuperAdminInfoModel.m */, ); path = SuperAdmin; sourceTree = ""; @@ -6895,12 +6649,12 @@ E85E7A752A4EB0D200B6D00A /* Income */ = { isa = PBXGroup; children = ( - E85E7A7A2A4EB0D200B6D00A /* UnionRevenueSpecificMatrix.h */, - E85E7A772A4EB0D200B6D00A /* UnionRevenueSpecificMatrix.m */, - E85E7A762A4EB0D200B6D00A /* UnionRevenueReflectionMatrix.h */, - E85E7A792A4EB0D200B6D00A /* UnionRevenueReflectionMatrix.m */, - E85E7A7B2A4EB0D200B6D00A /* UnionFeatureRevenueReflectionMatrix.h */, - E85E7A782A4EB0D200B6D00A /* UnionFeatureRevenueReflectionMatrix.m */, + E85E7A7A2A4EB0D200B6D00A /* GuildIncomeDetailModel.h */, + E85E7A772A4EB0D200B6D00A /* GuildIncomeDetailModel.m */, + E85E7A762A4EB0D200B6D00A /* GuildIncomeRecordModel.h */, + E85E7A792A4EB0D200B6D00A /* GuildIncomeRecordModel.m */, + E85E7A7B2A4EB0D200B6D00A /* GuildPersonIncomeRecordModel.h */, + E85E7A782A4EB0D200B6D00A /* GuildPersonIncomeRecordModel.m */, ); path = Income; sourceTree = ""; @@ -6913,18 +6667,18 @@ E85E7AEF2A4EB0D200B6D00A /* Setting */, E85E7AA32A4EB0D200B6D00A /* SubViews */, E85E7A9B2A4EB0D200B6D00A /* SuperAdmin */, - E85E7AEE2A4EB0D200B6D00A /* YUMIManeCollectiveRegardGovernancer.h */, - E85E7A9A2A4EB0D200B6D00A /* YUMIManeCollectiveRegardGovernancer.m */, - E85E7AA22A4EB0D200B6D00A /* YUMIManeExchangeAuthorityVC.h */, - E85E7AFA2A4EB0D200B6D00A /* YUMIManeExchangeAuthorityVC.m */, - E85E7AA12A4EB0D200B6D00A /* YUMIManeUnionStatementVC.h */, - E85E7AFD2A4EB0D200B6D00A /* YUMIManeUnionStatementVC.m */, - E85E7A992A4EB0D200B6D00A /* YUMIManeUnionHuntforRegardGovernancer.h */, - E85E7AED2A4EB0D200B6D00A /* YUMIManeUnionHuntforRegardGovernancer.m */, - E85E7AFC2A4EB0D200B6D00A /* YUMIManeUnionRegardGovernancer.h */, - E85E7AA02A4EB0D200B6D00A /* YUMIManeUnionRegardGovernancer.m */, - E85E7AFB2A4EB0D200B6D00A /* YUMIManeMainUnionStatementVC.h */, - E85E7ABE2A4EB0D200B6D00A /* YUMIManeMainUnionStatementVC.m */, + E85E7AEE2A4EB0D200B6D00A /* XPMineClanViewController.h */, + E85E7A9A2A4EB0D200B6D00A /* XPMineClanViewController.m */, + E85E7AA22A4EB0D200B6D00A /* XPMineExchangeAuthorityVC.h */, + E85E7AFA2A4EB0D200B6D00A /* XPMineExchangeAuthorityVC.m */, + E85E7AA12A4EB0D200B6D00A /* XPMineGuildListVC.h */, + E85E7AFD2A4EB0D200B6D00A /* XPMineGuildListVC.m */, + E85E7A992A4EB0D200B6D00A /* XPMineGuildSearchViewController.h */, + E85E7AED2A4EB0D200B6D00A /* XPMineGuildSearchViewController.m */, + E85E7AFC2A4EB0D200B6D00A /* XPMineGuildViewController.h */, + E85E7AA02A4EB0D200B6D00A /* XPMineGuildViewController.m */, + E85E7AFB2A4EB0D200B6D00A /* XPMineMainGuildListVC.h */, + E85E7ABE2A4EB0D200B6D00A /* XPMineMainGuildListVC.m */, ); path = View; sourceTree = ""; @@ -6932,24 +6686,24 @@ E85E7A862A4EB0D200B6D00A /* IncomeStatis */ = { isa = PBXGroup; children = ( - E85E7A892A4EB0D200B6D00A /* YUMIManeKellegRevenueStatsticsRegardGovernancer.h */, - E85E7A912A4EB0D200B6D00A /* YUMIManeKellegRevenueStatsticsRegardGovernancer.m */, - E85E7A962A4EB0D200B6D00A /* YUMIManeCollectiveRevenueStatsticsRegardGovernancer.h */, - E85E7A8C2A4EB0D200B6D00A /* YUMIManeCollectiveRevenueStatsticsRegardGovernancer.m */, - E85E7A922A4EB0D200B6D00A /* YUMIManeGoldRevenueReflectionVC.h */, - E85E7A882A4EB0D200B6D00A /* YUMIManeGoldRevenueReflectionVC.m */, - E85E7A8E2A4EB0D200B6D00A /* YUMIManeUnionRevenueSpecificRegardGovernancer.h */, - E85E7A942A4EB0D200B6D00A /* YUMIManeUnionRevenueSpecificRegardGovernancer.m */, - E85E7A8F2A4EB0D200B6D00A /* YUMIManeUnionRevenueReflectionRegardGovernancer.h */, - E85E7A982A4EB0D200B6D00A /* YUMIManeUnionRevenueReflectionRegardGovernancer.m */, - E85E7A872A4EB0D200B6D00A /* YUMIManeUnionRevenueStatsticsRegardGovernancer.h */, - E85E7A932A4EB0D200B6D00A /* YUMIManeUnionRevenueStatsticsRegardGovernancer.m */, - E85E7A972A4EB0D200B6D00A /* YUMIManeHallKellegRevenueStatsticsRegardGovernancer.h */, - E85E7A8B2A4EB0D200B6D00A /* YUMIManeHallKellegRevenueStatsticsRegardGovernancer.m */, - E85E7A902A4EB0D200B6D00A /* YUMIManeMainRevenueStatsticsRegardGovernancer.h */, - E85E7A8A2A4EB0D200B6D00A /* YUMIManeMainRevenueStatsticsRegardGovernancer.m */, - E85E7A8D2A4EB0D200B6D00A /* YUMIStrangeManeUnionRevenueReflectionRegardGovernancer.h */, - E85E7A952A4EB0D200B6D00A /* YUMIStrangeManeUnionRevenueReflectionRegardGovernancer.m */, + E85E7A892A4EB0D200B6D00A /* XPMineAnchorIncomeStatisViewController.h */, + E85E7A912A4EB0D200B6D00A /* XPMineAnchorIncomeStatisViewController.m */, + E85E7A962A4EB0D200B6D00A /* XPMineClanIncomeStatisViewController.h */, + E85E7A8C2A4EB0D200B6D00A /* XPMineClanIncomeStatisViewController.m */, + E85E7A922A4EB0D200B6D00A /* XPMineGoldIncomeRecordVC.h */, + E85E7A882A4EB0D200B6D00A /* XPMineGoldIncomeRecordVC.m */, + E85E7A8E2A4EB0D200B6D00A /* XPMineGuildIncomeDetailViewController.h */, + E85E7A942A4EB0D200B6D00A /* XPMineGuildIncomeDetailViewController.m */, + E85E7A8F2A4EB0D200B6D00A /* XPMineGuildIncomeRecordViewController.h */, + E85E7A982A4EB0D200B6D00A /* XPMineGuildIncomeRecordViewController.m */, + E85E7A872A4EB0D200B6D00A /* XPMineGuildIncomeStatisViewController.h */, + E85E7A932A4EB0D200B6D00A /* XPMineGuildIncomeStatisViewController.m */, + E85E7A972A4EB0D200B6D00A /* XPMineHallAnchorIncomeStatisViewController.h */, + E85E7A8B2A4EB0D200B6D00A /* XPMineHallAnchorIncomeStatisViewController.m */, + E85E7A902A4EB0D200B6D00A /* XPMineMainIncomeStatisViewController.h */, + E85E7A8A2A4EB0D200B6D00A /* XPMineMainIncomeStatisViewController.m */, + E85E7A8D2A4EB0D200B6D00A /* XPNewMineGuildIncomeRecordViewController.h */, + E85E7A952A4EB0D200B6D00A /* XPNewMineGuildIncomeRecordViewController.m */, ); path = IncomeStatis; sourceTree = ""; @@ -6957,10 +6711,10 @@ E85E7A9B2A4EB0D200B6D00A /* SuperAdmin */ = { isa = PBXGroup; children = ( - E85E7A9D2A4EB0D200B6D00A /* YUMIManeUnionChooseExecutiveRegardGovernancer.h */, - E85E7A9F2A4EB0D200B6D00A /* YUMIManeUnionChooseExecutiveRegardGovernancer.m */, - E85E7A9C2A4EB0D200B6D00A /* YUMIManeUnionSensationalManagementSetRegardGovernancer.h */, - E85E7A9E2A4EB0D200B6D00A /* YUMIManeUnionSensationalManagementSetRegardGovernancer.m */, + E85E7A9D2A4EB0D200B6D00A /* XPMineGuildChooseManagerViewController.h */, + E85E7A9F2A4EB0D200B6D00A /* XPMineGuildChooseManagerViewController.m */, + E85E7A9C2A4EB0D200B6D00A /* XPMineGuildSuperAdminSetViewController.h */, + E85E7A9E2A4EB0D200B6D00A /* XPMineGuildSuperAdminSetViewController.m */, ); path = SuperAdmin; sourceTree = ""; @@ -6968,34 +6722,34 @@ E85E7AA32A4EB0D200B6D00A /* SubViews */ = { isa = PBXGroup; children = ( - E85E7AB32A4EB0D200B6D00A /* YUMICollectiveParrotRegard.h */, - E85E7AA62A4EB0D200B6D00A /* YUMICollectiveParrotRegard.m */, - E85E7AA82A4EB0D200B6D00A /* YUMICollectiveDivisionRegard.h */, - E85E7AB12A4EB0D200B6D00A /* YUMICollectiveDivisionRegard.m */, - E85E7AAA2A4EB0D200B6D00A /* YUMIGoldRevenueDivisionRegard.h */, - E85E7AB82A4EB0D200B6D00A /* YUMIGoldRevenueDivisionRegard.m */, - E85E7AB02A4EB0D200B6D00A /* YUMIUnionKellegRevenueDivisionRegard.h */, - E85E7ABC2A4EB0D200B6D00A /* YUMIUnionKellegRevenueDivisionRegard.m */, - E85E7AA52A4EB0D200B6D00A /* YUMIUnionIntelligencerRegard.h */, - E85E7AB22A4EB0D200B6D00A /* YUMIUnionIntelligencerRegard.m */, - E85E7AA92A4EB0D200B6D00A /* YUMIUnionRevenueIntelligencerRegard.h */, - E85E7AB92A4EB0D200B6D00A /* YUMIUnionRevenueIntelligencerRegard.m */, - E85E7AAF2A4EB0D200B6D00A /* YUMIUnionRevenueDivisionRegard.h */, - E85E7ABD2A4EB0D200B6D00A /* YUMIUnionRevenueDivisionRegard.m */, - E85E7AAB2A4EB0D200B6D00A /* YUMIUnionHuntforNevRegard.h */, - E85E7AB72A4EB0D200B6D00A /* YUMIUnionHuntforNevRegard.m */, - E85E7AB52A4EB0D200B6D00A /* YUMIUnionSensationalManagementParrotRegard.h */, - E85E7AA42A4EB0D200B6D00A /* YUMIUnionSensationalManagementParrotRegard.m */, - E85E7AB62A4EB0D200B6D00A /* YUMIUnionIntratemporalMonthPickerRegard.h */, - E85E7AAC2A4EB0D200B6D00A /* YUMIUnionIntratemporalMonthPickerRegard.m */, - E85E7AB42A4EB0D200B6D00A /* YUMIUnionIntratemporalPickRegard.h */, - E85E7AA72A4EB0D200B6D00A /* YUMIUnionIntratemporalPickRegard.m */, - E85E7AAD2A4EB0D200B6D00A /* YUMIStrangeUnionRevenueIntelligencerRegard.h */, - E85E7ABB2A4EB0D200B6D00A /* YUMIStrangeUnionRevenueIntelligencerRegard.m */, - E85E7ABA2A4EB0D200B6D00A /* YUMIStrangeUnionIntratemporalPickRegard.h */, - E85E7AAE2A4EB0D200B6D00A /* YUMIStrangeUnionIntratemporalPickRegard.m */, - E85E7B702A4EC93C00B6D00A /* YUMIManeGiveDiamondHuntforRegard.h */, - E85E7B712A4EC93C00B6D00A /* YUMIManeGiveDiamondHuntforRegard.m */, + E85E7AB32A4EB0D200B6D00A /* XPClanMenuView.h */, + E85E7AA62A4EB0D200B6D00A /* XPClanMenuView.m */, + E85E7AA82A4EB0D200B6D00A /* XPClanSectionView.h */, + E85E7AB12A4EB0D200B6D00A /* XPClanSectionView.m */, + E85E7AAA2A4EB0D200B6D00A /* XPGoldIncomeSectionView.h */, + E85E7AB82A4EB0D200B6D00A /* XPGoldIncomeSectionView.m */, + E85E7AB02A4EB0D200B6D00A /* XPGuildAnchorIncomeSectionView.h */, + E85E7ABC2A4EB0D200B6D00A /* XPGuildAnchorIncomeSectionView.m */, + E85E7AA52A4EB0D200B6D00A /* XPGuildHeaderView.h */, + E85E7AB22A4EB0D200B6D00A /* XPGuildHeaderView.m */, + E85E7AA92A4EB0D200B6D00A /* XPGuildIncomeHeaderView.h */, + E85E7AB92A4EB0D200B6D00A /* XPGuildIncomeHeaderView.m */, + E85E7AAF2A4EB0D200B6D00A /* XPGuildIncomeSectionView.h */, + E85E7ABD2A4EB0D200B6D00A /* XPGuildIncomeSectionView.m */, + E85E7AAB2A4EB0D200B6D00A /* XPGuildSearchNavView.h */, + E85E7AB72A4EB0D200B6D00A /* XPGuildSearchNavView.m */, + E85E7AB52A4EB0D200B6D00A /* XPGuildSuperAdminMenuView.h */, + E85E7AA42A4EB0D200B6D00A /* XPGuildSuperAdminMenuView.m */, + E85E7AB62A4EB0D200B6D00A /* XPGuildTimeMonthPickerView.h */, + E85E7AAC2A4EB0D200B6D00A /* XPGuildTimeMonthPickerView.m */, + E85E7AB42A4EB0D200B6D00A /* XPGuildTimePickView.h */, + E85E7AA72A4EB0D200B6D00A /* XPGuildTimePickView.m */, + E85E7AAD2A4EB0D200B6D00A /* XPNewGuildIncomeHeaderView.h */, + E85E7ABB2A4EB0D200B6D00A /* XPNewGuildIncomeHeaderView.m */, + E85E7ABA2A4EB0D200B6D00A /* XPNewGuildTimePickView.h */, + E85E7AAE2A4EB0D200B6D00A /* XPNewGuildTimePickView.m */, + E85E7B702A4EC93C00B6D00A /* XPMineGiveDiamondSearchView.h */, + E85E7B712A4EC93C00B6D00A /* XPMineGiveDiamondSearchView.m */, ); path = SubViews; sourceTree = ""; @@ -7008,16 +6762,16 @@ E85E7AD12A4EB0D200B6D00A /* Income */, E85E7AE82A4EB0D200B6D00A /* Setting */, E85E7AC82A4EB0D200B6D00A /* SuperAdmin */, - E85E7ADB2A4EB0D200B6D00A /* YUMICollectiveComponentTabulationRegardElement.h */, - E85E7AC02A4EB0D200B6D00A /* YUMICollectiveComponentTabulationRegardElement.m */, - E85E7ADA2A4EB0D200B6D00A /* YUMICollectiveChamberAssembletionRegardElement.h */, - E85E7AC12A4EB0D200B6D00A /* YUMICollectiveChamberAssembletionRegardElement.m */, - E85E7AC72A4EB0D200B6D00A /* YUMIUnionDispossessAssembletionRegardElement.h */, - E85E7AE72A4EB0D200B6D00A /* YUMIUnionDispossessAssembletionRegardElement.m */, - E85E7AC62A4EB0D200B6D00A /* YUMIManeUnionDispossessTabulationRegardElement.h */, - E85E7ADC2A4EB0D200B6D00A /* YUMIManeUnionDispossessTabulationRegardElement.m */, - E85E7ADD2A4EB0D200B6D00A /* YUMIManeUnionHuntforComponentTabulationRegardElement.h */, - E85E7AC52A4EB0D200B6D00A /* YUMIManeUnionHuntforComponentTabulationRegardElement.m */, + E85E7ADB2A4EB0D200B6D00A /* XPClanMemberTableViewCell.h */, + E85E7AC02A4EB0D200B6D00A /* XPClanMemberTableViewCell.m */, + E85E7ADA2A4EB0D200B6D00A /* XPClanRoomCollectionViewCell.h */, + E85E7AC12A4EB0D200B6D00A /* XPClanRoomCollectionViewCell.m */, + E85E7AC72A4EB0D200B6D00A /* XPGuildEmptyCollectionViewCell.h */, + E85E7AE72A4EB0D200B6D00A /* XPGuildEmptyCollectionViewCell.m */, + E85E7AC62A4EB0D200B6D00A /* XPMineGuildEmptyTableViewCell.h */, + E85E7ADC2A4EB0D200B6D00A /* XPMineGuildEmptyTableViewCell.m */, + E85E7ADD2A4EB0D200B6D00A /* XPMineGuildSearchMemberTableViewCell.h */, + E85E7AC52A4EB0D200B6D00A /* XPMineGuildSearchMemberTableViewCell.m */, ); path = Cell; sourceTree = ""; @@ -7025,8 +6779,8 @@ E85E7AC22A4EB0D200B6D00A /* GuildList */ = { isa = PBXGroup; children = ( - E85E7AC42A4EB0D200B6D00A /* YUMIManeUnionStatementElement.h */, - E85E7AC32A4EB0D200B6D00A /* YUMIManeUnionStatementElement.m */, + E85E7AC42A4EB0D200B6D00A /* XPMineGuildListCell.h */, + E85E7AC32A4EB0D200B6D00A /* XPMineGuildListCell.m */, ); path = GuildList; sourceTree = ""; @@ -7034,14 +6788,14 @@ E85E7AC82A4EB0D200B6D00A /* SuperAdmin */ = { isa = PBXGroup; children = ( - E85E7AC92A4EB0D200B6D00A /* YUMIUnionSensationalManagementChamberAssembletionRegardElement.h */, - E85E7ACA2A4EB0D200B6D00A /* YUMIUnionChooseExecutiveChamberTabulationRegardElement.m */, - E85E7ACB2A4EB0D200B6D00A /* YUMIUnionSensationalManagementSetTabulationRegardElement.m */, - E85E7ACC2A4EB0D200B6D00A /* YUMIUnionHuntforSensationalManagementTabulationRegardElement.m */, - E85E7ACD2A4EB0D200B6D00A /* YUMIUnionSensationalManagementChamberAssembletionRegardElement.m */, - E85E7ACE2A4EB0D200B6D00A /* YUMIUnionChooseExecutiveChamberTabulationRegardElement.h */, - E85E7ACF2A4EB0D200B6D00A /* YUMIUnionHuntforSensationalManagementTabulationRegardElement.h */, - E85E7AD02A4EB0D200B6D00A /* YUMIUnionSensationalManagementSetTabulationRegardElement.h */, + E85E7AC92A4EB0D200B6D00A /* XPGuildSuperAdminRoomCollectionViewCell.h */, + E85E7ACA2A4EB0D200B6D00A /* XPGuildChooseManagerRoomTableViewCell.m */, + E85E7ACB2A4EB0D200B6D00A /* XPGuildSuperAdminSetTableViewCell.m */, + E85E7ACC2A4EB0D200B6D00A /* XPGuildSearchSuperAdminTableViewCell.m */, + E85E7ACD2A4EB0D200B6D00A /* XPGuildSuperAdminRoomCollectionViewCell.m */, + E85E7ACE2A4EB0D200B6D00A /* XPGuildChooseManagerRoomTableViewCell.h */, + E85E7ACF2A4EB0D200B6D00A /* XPGuildSearchSuperAdminTableViewCell.h */, + E85E7AD02A4EB0D200B6D00A /* XPGuildSuperAdminSetTableViewCell.h */, ); path = SuperAdmin; sourceTree = ""; @@ -7049,14 +6803,14 @@ E85E7AD12A4EB0D200B6D00A /* Income */ = { isa = PBXGroup; children = ( - E85E7AD22A4EB0D200B6D00A /* YUMIUnionRevenueSpecificAssembletionRegardElement.m */, - E85E7AD32A4EB0D200B6D00A /* YUMIUnionRevenueReflectionTabulationRegardElement.m */, - E85E7AD42A4EB0D200B6D00A /* YUMIUnionFeatureRevenueTabulationRegardElement.h */, - E85E7AD52A4EB0D200B6D00A /* YUMIUnionSingleChamberRevenueTabulationRegardElement.m */, - E85E7AD62A4EB0D200B6D00A /* YUMIUnionRevenueSpecificAssembletionRegardElement.h */, - E85E7AD72A4EB0D200B6D00A /* YUMIUnionFeatureRevenueTabulationRegardElement.m */, - E85E7AD82A4EB0D200B6D00A /* YUMIUnionRevenueReflectionTabulationRegardElement.h */, - E85E7AD92A4EB0D200B6D00A /* YUMIUnionSingleChamberRevenueTabulationRegardElement.h */, + E85E7AD22A4EB0D200B6D00A /* XPGuildIncomeDetailCollectionViewCell.m */, + E85E7AD32A4EB0D200B6D00A /* XPGuildIncomeRecordTableViewCell.m */, + E85E7AD42A4EB0D200B6D00A /* XPGuildPersonIncomeTableViewCell.h */, + E85E7AD52A4EB0D200B6D00A /* XPGuildSingleRoomIncomeTableViewCell.m */, + E85E7AD62A4EB0D200B6D00A /* XPGuildIncomeDetailCollectionViewCell.h */, + E85E7AD72A4EB0D200B6D00A /* XPGuildPersonIncomeTableViewCell.m */, + E85E7AD82A4EB0D200B6D00A /* XPGuildIncomeRecordTableViewCell.h */, + E85E7AD92A4EB0D200B6D00A /* XPGuildSingleRoomIncomeTableViewCell.h */, ); path = Income; sourceTree = ""; @@ -7064,14 +6818,14 @@ E85E7ADE2A4EB0D200B6D00A /* ExchangeAuthority */ = { isa = PBXGroup; children = ( - E85E7ADF2A4EB0D200B6D00A /* YUMIManeExchangeAuthorityElement.h */, - E85E7AE32A4EB0D200B6D00A /* YUMIManeExchangeAuthorityElement.m */, - E85E7AE12A4EB0D200B6D00A /* YUMIManeExchangeAuthorityFooderRegard.h */, - E85E7AE62A4EB0D200B6D00A /* YUMIManeExchangeAuthorityFooderRegard.m */, - E85E7AE52A4EB0D200B6D00A /* YUMIManeExchangeAuthorityIntelligenceRegard.h */, - E85E7AE22A4EB0D200B6D00A /* YUMIManeExchangeAuthorityIntelligenceRegard.m */, - E85E7AE42A4EB0D200B6D00A /* YUMIManePromptWindow.h */, - E85E7AE02A4EB0D200B6D00A /* YUMIManePromptWindow.m */, + E85E7ADF2A4EB0D200B6D00A /* XPMineExchangeAuthorityCell.h */, + E85E7AE32A4EB0D200B6D00A /* XPMineExchangeAuthorityCell.m */, + E85E7AE12A4EB0D200B6D00A /* XPMineExchangeAuthorityFooderView.h */, + E85E7AE62A4EB0D200B6D00A /* XPMineExchangeAuthorityFooderView.m */, + E85E7AE52A4EB0D200B6D00A /* XPMineExchangeAuthorityHeadView.h */, + E85E7AE22A4EB0D200B6D00A /* XPMineExchangeAuthorityHeadView.m */, + E85E7AE42A4EB0D200B6D00A /* XPMinePromptWindow.h */, + E85E7AE02A4EB0D200B6D00A /* XPMinePromptWindow.m */, ); path = ExchangeAuthority; sourceTree = ""; @@ -7079,8 +6833,8 @@ E85E7AE82A4EB0D200B6D00A /* Setting */ = { isa = PBXGroup; children = ( - E85E7AE92A4EB0D200B6D00A /* YUMIManeUnionExecutivePerTabulationRegardElement.m */, - E85E7AEB2A4EB0D200B6D00A /* YUMIManeUnionExecutivePerTabulationRegardElement.h */, + E85E7AE92A4EB0D200B6D00A /* XPMineGuildManagerPerTableViewCell.m */, + E85E7AEB2A4EB0D200B6D00A /* XPMineGuildManagerPerTableViewCell.h */, ); path = Setting; sourceTree = ""; @@ -7088,16 +6842,16 @@ E85E7AEF2A4EB0D200B6D00A /* Setting */ = { isa = PBXGroup; children = ( - E85E7AF92A4EB0D200B6D00A /* YUMIManeUnionExecutivePerRegardGovernancer.h */, - E85E7AF42A4EB0D200B6D00A /* YUMIManeUnionExecutivePerRegardGovernancer.m */, - E85E7AF52A4EB0D200B6D00A /* YUMIManeUnionExecutiveSetRegardGovernancer.h */, - E85E7AF32A4EB0D200B6D00A /* YUMIManeUnionExecutiveSetRegardGovernancer.m */, - E85E7AF22A4EB0D200B6D00A /* YUMIManeUnionRemoveComponentRegardGovernancer.h */, - E85E7AF62A4EB0D200B6D00A /* YUMIManeUnionRemoveComponentRegardGovernancer.m */, - E85E7AF02A4EB0D200B6D00A /* YUMIManeUnionSetNameRegardGovernancer.h */, - E85E7AF82A4EB0D200B6D00A /* YUMIManeUnionSetNameRegardGovernancer.m */, - E85E7AF72A4EB0D200B6D00A /* YUMIManeMangerStatementRegardGovernancer.h */, - E85E7AF12A4EB0D200B6D00A /* YUMIManeMangerStatementRegardGovernancer.m */, + E85E7AF92A4EB0D200B6D00A /* XPMineGuildManagerPerViewController.h */, + E85E7AF42A4EB0D200B6D00A /* XPMineGuildManagerPerViewController.m */, + E85E7AF52A4EB0D200B6D00A /* XPMineGuildManagerSetViewController.h */, + E85E7AF32A4EB0D200B6D00A /* XPMineGuildManagerSetViewController.m */, + E85E7AF22A4EB0D200B6D00A /* XPMineGuildRemoveMemberViewController.h */, + E85E7AF62A4EB0D200B6D00A /* XPMineGuildRemoveMemberViewController.m */, + E85E7AF02A4EB0D200B6D00A /* XPMineGuildSetNameViewController.h */, + E85E7AF82A4EB0D200B6D00A /* XPMineGuildSetNameViewController.m */, + E85E7AF72A4EB0D200B6D00A /* XPMineMangerListViewController.h */, + E85E7AF12A4EB0D200B6D00A /* XPMineMangerListViewController.m */, ); path = Setting; sourceTree = ""; @@ -7114,16 +6868,16 @@ E85E7B582A4EC35A00B6D00A /* RecordIncome */ = { isa = PBXGroup; children = ( - E85E7B592A4EC35A00B6D00A /* YUMIRevenueReflectionGoldSpecificsMatrix.h */, - E85E7B5A2A4EC35A00B6D00A /* YUMIExchangeDiamondsMatrix.h */, - E85E7B5B2A4EC35A00B6D00A /* YUMIRevenueReflectionMatrix.h */, - E85E7B5C2A4EC35A00B6D00A /* YUMIDilemmaExtractAbstractMatrix.h */, - E85E7B5D2A4EC35A00B6D00A /* YUMIWithdrawAccountMatrix.m */, - E85E7B5E2A4EC35A00B6D00A /* YUMIRevenueReflectionMatrix.m */, - E85E7B5F2A4EC35A00B6D00A /* YUMIExchangeDiamondsMatrix.m */, - E85E7B602A4EC35A00B6D00A /* YUMIRevenueReflectionGoldSpecificsMatrix.m */, - E85E7B612A4EC35A00B6D00A /* YUMIDilemmaExtractAbstractMatrix.m */, - E85E7B622A4EC35A00B6D00A /* YUMIWithdrawAccountMatrix.h */, + E85E7B592A4EC35A00B6D00A /* XPIncomeRecordGoldDetailsModel.h */, + E85E7B5A2A4EC35A00B6D00A /* XPExchangeDiamondsModel.h */, + E85E7B5B2A4EC35A00B6D00A /* XPIncomeRecordModel.h */, + E85E7B5C2A4EC35A00B6D00A /* XPBindExtractInfoModel.h */, + E85E7B5D2A4EC35A00B6D00A /* XPWithdrawAccountModel.m */, + E85E7B5E2A4EC35A00B6D00A /* XPIncomeRecordModel.m */, + E85E7B5F2A4EC35A00B6D00A /* XPExchangeDiamondsModel.m */, + E85E7B602A4EC35A00B6D00A /* XPIncomeRecordGoldDetailsModel.m */, + E85E7B612A4EC35A00B6D00A /* XPBindExtractInfoModel.m */, + E85E7B622A4EC35A00B6D00A /* XPWithdrawAccountModel.h */, ); path = RecordIncome; sourceTree = ""; @@ -7131,8 +6885,8 @@ E85E7B682A4EC39400B6D00A /* ExchangeAuthority */ = { isa = PBXGroup; children = ( - E85E7B692A4EC39400B6D00A /* YUMIManeExchangeAuthorityMatrix.m */, - E85E7B6A2A4EC39400B6D00A /* YUMIManeExchangeAuthorityMatrix.h */, + E85E7B692A4EC39400B6D00A /* XPMineExchangeAuthorityModel.m */, + E85E7B6A2A4EC39400B6D00A /* XPMineExchangeAuthorityModel.h */, ); path = ExchangeAuthority; sourceTree = ""; @@ -7152,8 +6906,8 @@ E85E7B742A4EC99200B6D00A /* Presenter */ = { isa = PBXGroup; children = ( - E85E7B752A4EC99200B6D00A /* YUMIManeGiveDiamondExternalizer.m */, - E85E7B762A4EC99200B6D00A /* YUMIManeGiveDiamondExternalizer.h */, + E85E7B752A4EC99200B6D00A /* XPMineGiveDiamondPresenter.m */, + E85E7B762A4EC99200B6D00A /* XPMineGiveDiamondPresenter.h */, ); path = Presenter; sourceTree = ""; @@ -7161,7 +6915,7 @@ E85E7B772A4EC99200B6D00A /* Protocol */ = { isa = PBXGroup; children = ( - E85E7B782A4EC99200B6D00A /* FBCManeGiveDiamondCeremony.h */, + E85E7B782A4EC99200B6D00A /* XPMineGiveDiamondProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -7169,12 +6923,12 @@ E85E7B792A4EC99200B6D00A /* Model */ = { isa = PBXGroup; children = ( - E85E7B7D2A4EC99200B6D00A /* YUMIManeGiveDiamondSpecificsMatrix.h */, - E85E7B7A2A4EC99200B6D00A /* YUMIManeGiveDiamondSpecificsMatrix.m */, - E85E7B7E2A4EC99200B6D00A /* YUMIManeGiveDiamondMatrix.h */, - E85E7B7B2A4EC99200B6D00A /* YUMIManeGiveDiamondMatrix.m */, - E85E7B7C2A4EC99200B6D00A /* YUMIManeGiveDiamondHuntforMatrix.h */, - E85E7B7F2A4EC99200B6D00A /* YUMIManeGiveDiamondHuntforMatrix.m */, + E85E7B7D2A4EC99200B6D00A /* XPMineGiveDiamondDetailsModel.h */, + E85E7B7A2A4EC99200B6D00A /* XPMineGiveDiamondDetailsModel.m */, + E85E7B7E2A4EC99200B6D00A /* XPMineGiveDiamondModel.h */, + E85E7B7B2A4EC99200B6D00A /* XPMineGiveDiamondModel.m */, + E85E7B7C2A4EC99200B6D00A /* XPMineGiveDiamondSearchModel.h */, + E85E7B7F2A4EC99200B6D00A /* XPMineGiveDiamondSearchModel.m */, ); path = Model; sourceTree = ""; @@ -7182,15 +6936,15 @@ E85E7B802A4EC99200B6D00A /* View */ = { isa = PBXGroup; children = ( - E85E7BB72A4ED89E00B6D00A /* YUMIRevenueReflectionGoldSpecificsIntelligenceRegard.h */, - E85E7BB82A4ED89F00B6D00A /* YUMIRevenueReflectionGoldSpecificsIntelligenceRegard.m */, + E85E7BB72A4ED89E00B6D00A /* XPIncomeRecordGoldDetailsHeadView.h */, + E85E7BB82A4ED89F00B6D00A /* XPIncomeRecordGoldDetailsHeadView.m */, E85E7B852A4EC99200B6D00A /* Cell */, - E85E7B822A4EC99200B6D00A /* YUMIManeChooseGiveDiamondVC.h */, - E85E7B9B2A4EC99200B6D00A /* YUMIManeChooseGiveDiamondVC.m */, - E85E7B842A4EC99200B6D00A /* YUMIManeGiveDiamondSpecificsVC.h */, - E85E7B832A4EC99200B6D00A /* YUMIManeGiveDiamondSpecificsVC.m */, - E85E7B812A4EC99200B6D00A /* YUMIManeGiveDiamondVC.h */, - E85E7B9A2A4EC99200B6D00A /* YUMIManeGiveDiamondVC.m */, + E85E7B822A4EC99200B6D00A /* XPMineChooseGiveDiamondVC.h */, + E85E7B9B2A4EC99200B6D00A /* XPMineChooseGiveDiamondVC.m */, + E85E7B842A4EC99200B6D00A /* XPMineGiveDiamondDetailsVC.h */, + E85E7B832A4EC99200B6D00A /* XPMineGiveDiamondDetailsVC.m */, + E85E7B812A4EC99200B6D00A /* XPMineGiveDiamondVC.h */, + E85E7B9A2A4EC99200B6D00A /* XPMineGiveDiamondVC.m */, ); path = View; sourceTree = ""; @@ -7198,30 +6952,30 @@ E85E7B852A4EC99200B6D00A /* Cell */ = { isa = PBXGroup; children = ( - E85E7B902A4EC99200B6D00A /* YUMIManeChooseGiveDiamondRegard.h */, - E85E7B872A4EC99200B6D00A /* YUMIManeChooseGiveDiamondRegard.m */, - E85E7B8D2A4EC99200B6D00A /* YUMIManeChooseGivePresentRegard.h */, - E85E7B972A4EC99200B6D00A /* YUMIManeChooseGivePresentRegard.m */, - E85E7B8B2A4EC99200B6D00A /* YUMIManeChooseGivePresentRegardElement.h */, - E85E7B922A4EC99200B6D00A /* YUMIManeChooseGivePresentRegardElement.m */, - E85E7B882A4EC99200B6D00A /* YUMIManeConfirmGiveDiamondRegard.h */, - E85E7B952A4EC99200B6D00A /* YUMIManeConfirmGiveDiamondRegard.m */, - E85E7B912A4EC99200B6D00A /* YUMIManeGiveDiamondElement.h */, - E85E7B862A4EC99200B6D00A /* YUMIManeGiveDiamondElement.m */, - E85E7B8F2A4EC99200B6D00A /* YUMIManeGiveDiamondSpecificsElement.h */, - E85E7B992A4EC99200B6D00A /* YUMIManeGiveDiamondSpecificsElement.m */, - E85E7B8C2A4EC99200B6D00A /* YUMIManeGiveDiamondSpecificsRegard.h */, - E85E7B982A4EC99200B6D00A /* YUMIManeGiveDiamondSpecificsRegard.m */, - E85E7B932A4EC99200B6D00A /* YUMIManeGiveDiamondCiphercodeRegard.h */, - E85E7B8A2A4EC99200B6D00A /* YUMIManeGiveDiamondCiphercodeRegard.m */, - E85E7B8E2A4EC99200B6D00A /* YUMIManeGiveDiamondPwordRegard.h */, - E85E7B962A4EC99200B6D00A /* YUMIManeGiveDiamondPwordRegard.m */, - E85E7B942A4EC99200B6D00A /* YUMIManeGiveDiamondHuntforRegard.h */, - E85E7B892A4EC99200B6D00A /* YUMIManeGiveDiamondHuntforRegard.m */, - E85E7BB12A4ED45300B6D00A /* YUMIPageControl.h */, - E85E7BB22A4ED45300B6D00A /* YUMIPageControl.m */, - E85E7BB42A4ED59900B6D00A /* YUMIRevenueReflectionGoldSpecificsElement.h */, - E85E7BB52A4ED59900B6D00A /* YUMIRevenueReflectionGoldSpecificsElement.m */, + E85E7B902A4EC99200B6D00A /* XPMineChooseGiveDiamondView.h */, + E85E7B872A4EC99200B6D00A /* XPMineChooseGiveDiamondView.m */, + E85E7B8D2A4EC99200B6D00A /* XPMineChooseGiveGiftView.h */, + E85E7B972A4EC99200B6D00A /* XPMineChooseGiveGiftView.m */, + E85E7B8B2A4EC99200B6D00A /* XPMineChooseGiveGiftViewCell.h */, + E85E7B922A4EC99200B6D00A /* XPMineChooseGiveGiftViewCell.m */, + E85E7B882A4EC99200B6D00A /* XPMineConfirmGiveDiamondView.h */, + E85E7B952A4EC99200B6D00A /* XPMineConfirmGiveDiamondView.m */, + E85E7B912A4EC99200B6D00A /* XPMineGiveDiamondCell.h */, + E85E7B862A4EC99200B6D00A /* XPMineGiveDiamondCell.m */, + E85E7B8F2A4EC99200B6D00A /* XPMineGiveDiamondDetailsCell.h */, + E85E7B992A4EC99200B6D00A /* XPMineGiveDiamondDetailsCell.m */, + E85E7B8C2A4EC99200B6D00A /* XPMineGiveDiamondDetailsView.h */, + E85E7B982A4EC99200B6D00A /* XPMineGiveDiamondDetailsView.m */, + E85E7B932A4EC99200B6D00A /* XPMineGiveDiamondPasswordView.h */, + E85E7B8A2A4EC99200B6D00A /* XPMineGiveDiamondPasswordView.m */, + E85E7B8E2A4EC99200B6D00A /* XPMineGiveDiamondPwdView.h */, + E85E7B962A4EC99200B6D00A /* XPMineGiveDiamondPwdView.m */, + E85E7B942A4EC99200B6D00A /* XPMineGiveDiamondSearchView.h */, + E85E7B892A4EC99200B6D00A /* XPMineGiveDiamondSearchView.m */, + E85E7BB12A4ED45300B6D00A /* XPPageControl.h */, + E85E7BB22A4ED45300B6D00A /* XPPageControl.m */, + E85E7BB42A4ED59900B6D00A /* XPIncomeRecordGoldDetailsCell.h */, + E85E7BB52A4ED59900B6D00A /* XPIncomeRecordGoldDetailsCell.m */, ); path = Cell; sourceTree = ""; @@ -7244,47 +6998,47 @@ path = VagueImageView; sourceTree = ""; }; - E865964E2701A1A900846EBD /* StatsticsticsServing */ = { + E865964E2701A1A900846EBD /* StatisticsService */ = { isa = PBXGroup; children = ( - E865964F2701A1C000846EBD /* StatsticsticsServing.h */, - E86596502701A1C000846EBD /* StatsticsticsServing.m */, - E86596522701A55500846EBD /* StatsticsticsServingFacilitater.h */, - E86596532701A55500846EBD /* StatsticsticsServingFacilitater.m */, + E865964F2701A1C000846EBD /* StatisticsService.h */, + E86596502701A1C000846EBD /* StatisticsService.m */, + E86596522701A55500846EBD /* StatisticsServiceHelper.h */, + E86596532701A55500846EBD /* StatisticsServiceHelper.m */, ); - path = StatsticsticsServing; + path = StatisticsService; sourceTree = ""; }; - E8680707271959090024F48F /* MiecreoscoopeRegard */ = { + E8680707271959090024F48F /* MicroView */ = { isa = PBXGroup; children = ( 9B0086C727BA4F4A0032BD2B /* Anchor */, E8DBB6FA27B63CC300AA285D /* LittleGame */, E8899C7C27853B46007944BE /* Dating */, - 180806DA27297269001FD836 /* MicroRegardCeremony.h */, - E8680716271967B00024F48F /* MiecreoscoopeRegard.h */, - E8680717271967B00024F48F /* MiecreoscoopeRegard.m */, - 9B86D884281942D200494FCD /* SocialMiecreoscoopeRegard.h */, - 9B86D885281942D200494FCD /* SocialMiecreoscoopeRegard.m */, - E81D58802720082A003063FE /* MiecreoscoopeWaveRegard.h */, - E81D58812720082A003063FE /* MiecreoscoopeWaveRegard.m */, - 9BCD02C52796C02800F396AA /* MiecreoscoopeMagnificentWaveRegard.h */, - 9BCD02C62796C02800F396AA /* MiecreoscoopeMagnificentWaveRegard.m */, - E8DACCF92766EDC60052092C /* MiecreoscoopePresentStressRegard.h */, - E8DACCFA2766EDC60052092C /* MiecreoscoopePresentStressRegard.m */, + 180806DA27297269001FD836 /* MicroViewProtocol.h */, + E8680716271967B00024F48F /* MicroView.h */, + E8680717271967B00024F48F /* MicroView.m */, + 9B86D884281942D200494FCD /* SocialMicroView.h */, + 9B86D885281942D200494FCD /* SocialMicroView.m */, + E81D58802720082A003063FE /* MicroWaveView.h */, + E81D58812720082A003063FE /* MicroWaveView.m */, + 9BCD02C52796C02800F396AA /* MicroNobleWaveView.h */, + 9BCD02C62796C02800F396AA /* MicroNobleWaveView.m */, + E8DACCF92766EDC60052092C /* MicroGiftValueView.h */, + E8DACCFA2766EDC60052092C /* MicroGiftValueView.m */, ); - path = MiecreoscoopeRegard; + path = MicroView; sourceTree = ""; }; E86B911B281034F10007DEE7 /* Cell */ = { isa = PBXGroup; children = ( - 9B7D804B27537950003DAC0C /* CommunicationElement.h */, - 9B7D804C27537950003DAC0C /* CommunicationElement.m */, - E875A1B629755EE200AB1BBD /* InterlocutionConsumerAbstractTabulationRegardElement.h */, - E875A1B729755EE200AB1BBD /* InterlocutionConsumerAbstractTabulationRegardElement.m */, - E885D531297798E1004DC088 /* InterlocutionInstanllingTabulationRegardElement.h */, - E885D532297798E1004DC088 /* InterlocutionInstanllingTabulationRegardElement.m */, + 9B7D804B27537950003DAC0C /* MessageCell.h */, + 9B7D804C27537950003DAC0C /* MessageCell.m */, + E875A1B629755EE200AB1BBD /* SessionUserInfoTableViewCell.h */, + E875A1B729755EE200AB1BBD /* SessionUserInfoTableViewCell.m */, + E885D531297798E1004DC088 /* SessionSettingTableViewCell.h */, + E885D532297798E1004DC088 /* SessionSettingTableViewCell.m */, ); path = Cell; sourceTree = ""; @@ -7292,12 +7046,12 @@ E872308A26E89D5100B90D4F /* CustomView */ = { isa = PBXGroup; children = ( - E872309126E8D31500B90D4F /* SurmountValidationCodeRegard.h */, - E872309226E8D31500B90D4F /* SurmountValidationCodeRegard.m */, - E824543B26F58C3A00BE8163 /* YUMISurmountDilemmaSuccessRegard.h */, - E824543C26F58C3A00BE8163 /* YUMISurmountDilemmaSuccessRegard.m */, - E82EE0F6272FDDFA00D15DC1 /* ConsumerPrivacyRegard.h */, - E82EE0F7272FDDFA00D15DC1 /* ConsumerPrivacyRegard.m */, + E872309126E8D31500B90D4F /* LoginVerifCodeView.h */, + E872309226E8D31500B90D4F /* LoginVerifCodeView.m */, + E824543B26F58C3A00BE8163 /* XPLoginBindSuccessView.h */, + E824543C26F58C3A00BE8163 /* XPLoginBindSuccessView.m */, + E82EE0F6272FDDFA00D15DC1 /* UserPrivacyView.h */, + E82EE0F7272FDDFA00D15DC1 /* UserPrivacyView.m */, ); path = CustomView; sourceTree = ""; @@ -7305,14 +7059,14 @@ E874B88527215CFF003954B9 /* Model */ = { isa = PBXGroup; children = ( - E874B88627215D39003954B9 /* MiecreoscoopeStateMatrix.h */, - E874B88727215D39003954B9 /* MiecreoscoopeStateMatrix.m */, - E874B88927215EAF003954B9 /* MiecreoscoopeMHTueueMatrix.h */, - E874B88A27215EAF003954B9 /* MiecreoscoopeMHTueueMatrix.m */, - E87E91502796A15500A7B3F2 /* MiecreoscoopeExtMatrix.h */, - E87E91512796A15500A7B3F2 /* MiecreoscoopeExtMatrix.m */, - 9B044D9E282D32F700DE4859 /* MiecreoscoopeCallforExtMatrix.h */, - 9B044D9F282D32F700DE4859 /* MiecreoscoopeCallforExtMatrix.m */, + E874B88627215D39003954B9 /* MicroStateModel.h */, + E874B88727215D39003954B9 /* MicroStateModel.m */, + E874B88927215EAF003954B9 /* MicroQueueModel.h */, + E874B88A27215EAF003954B9 /* MicroQueueModel.m */, + E87E91502796A15500A7B3F2 /* MicroExtModel.h */, + E87E91512796A15500A7B3F2 /* MicroExtModel.m */, + 9B044D9E282D32F700DE4859 /* MicroInviteExtModel.h */, + 9B044D9F282D32F700DE4859 /* MicroInviteExtModel.m */, ); path = Model; sourceTree = ""; @@ -7331,7 +7085,7 @@ E8751E5228A62A010056EF44 /* Protocol */ = { isa = PBXGroup; children = ( - E8751E6028A62AA60056EF44 /* FBCSailingCeremony.h */, + E8751E6028A62AA60056EF44 /* XPSailingProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -7339,8 +7093,8 @@ E8751E5328A62A0E0056EF44 /* Presenter */ = { isa = PBXGroup; children = ( - E8751E5D28A62A970056EF44 /* YUMIMarchingExternalizer.h */, - E8751E5E28A62A970056EF44 /* YUMIMarchingExternalizer.m */, + E8751E5D28A62A970056EF44 /* XPSailingPresenter.h */, + E8751E5E28A62A970056EF44 /* XPSailingPresenter.m */, E8751E5228A62A010056EF44 /* Protocol */, ); path = Presenter; @@ -7351,20 +7105,20 @@ children = ( E8751E6828A64C550056EF44 /* Cell */, E8751E6728A64C480056EF44 /* SubViews */, - E8751E5A28A62A530056EF44 /* YUMIMarchingRegardGovernancer.h */, - E8751E5B28A62A530056EF44 /* YUMIMarchingRegardGovernancer.m */, - E8751E6128A646400056EF44 /* YUMIMarchingRateRegard.h */, - E8751E6228A646400056EF44 /* YUMIMarchingRateRegard.m */, - E8751E6428A6465A0056EF44 /* YUMIMarchingRateMetroRegard.h */, - E8751E6528A6465A0056EF44 /* YUMIMarchingRateMetroRegard.m */, - E8AB633128AE51470023B0D2 /* YUMIMarchingCaptureRegard.h */, - E8AB633228AE51470023B0D2 /* YUMIMarchingCaptureRegard.m */, - E897ABFA28AF2E71003B3587 /* YUMIMarchingPresentRegard.h */, - E897ABFB28AF2E71003B3587 /* YUMIMarchingPresentRegard.m */, - E8E21A9C28B4DFE8008F7C9D /* YUMIMarchingBuyFuelRegard.h */, - E8E21A9D28B4DFE8008F7C9D /* YUMIMarchingBuyFuelRegard.m */, - E897ABFD28AF39B4003B3587 /* YUMIMarchingBrightnessRegard.h */, - E897ABFE28AF39B4003B3587 /* YUMIMarchingBrightnessRegard.m */, + E8751E5A28A62A530056EF44 /* XPSailingViewController.h */, + E8751E5B28A62A530056EF44 /* XPSailingViewController.m */, + E8751E6128A646400056EF44 /* XPSailingRankView.h */, + E8751E6228A646400056EF44 /* XPSailingRankView.m */, + E8751E6428A6465A0056EF44 /* XPSailingRankSubView.h */, + E8751E6528A6465A0056EF44 /* XPSailingRankSubView.m */, + E8AB633128AE51470023B0D2 /* XPSailingPrizeView.h */, + E8AB633228AE51470023B0D2 /* XPSailingPrizeView.m */, + E897ABFA28AF2E71003B3587 /* XPSailingGiftView.h */, + E897ABFB28AF2E71003B3587 /* XPSailingGiftView.m */, + E8E21A9C28B4DFE8008F7C9D /* XPSailingBuyFuelView.h */, + E8E21A9D28B4DFE8008F7C9D /* XPSailingBuyFuelView.m */, + E897ABFD28AF39B4003B3587 /* XPSailingAnimationView.h */, + E897ABFE28AF39B4003B3587 /* XPSailingAnimationView.m */, ); path = View; sourceTree = ""; @@ -7381,14 +7135,14 @@ E8751E5628A62A250056EF44 /* Model */ = { isa = PBXGroup; children = ( - E8751E6F28A6541B0056EF44 /* ChamberMarchingRateMatrix.h */, - E8751E7028A6541B0056EF44 /* ChamberMarchingRateMatrix.m */, - E8751E7228A665BC0056EF44 /* ChamberMarchingAbstractMatrix.h */, - E8751E7328A665BC0056EF44 /* ChamberMarchingAbstractMatrix.m */, - E8BD0F8928A9EB0A00DE050D /* ChamberMarchingCaptureStatementMatrix.h */, - E8BD0F8A28A9EB0A00DE050D /* ChamberMarchingCaptureStatementMatrix.m */, - E8BD0F8628A9E9E400DE050D /* ChamberMarchingCaptureMatrix.h */, - E8BD0F8728A9E9E400DE050D /* ChamberMarchingCaptureMatrix.m */, + E8751E6F28A6541B0056EF44 /* RoomSailingRankModel.h */, + E8751E7028A6541B0056EF44 /* RoomSailingRankModel.m */, + E8751E7228A665BC0056EF44 /* RoomSailingInfoModel.h */, + E8751E7328A665BC0056EF44 /* RoomSailingInfoModel.m */, + E8BD0F8928A9EB0A00DE050D /* RoomSailingPrizeListModel.h */, + E8BD0F8A28A9EB0A00DE050D /* RoomSailingPrizeListModel.m */, + E8BD0F8628A9E9E400DE050D /* RoomSailingPrizeModel.h */, + E8BD0F8728A9E9E400DE050D /* RoomSailingPrizeModel.m */, ); path = Model; sourceTree = ""; @@ -7403,12 +7157,12 @@ E8751E6828A64C550056EF44 /* Cell */ = { isa = PBXGroup; children = ( - E8751E6928A64C6E0056EF44 /* YUMIMarchingRateTabulationRegardElement.h */, - E8751E6A28A64C6E0056EF44 /* YUMIMarchingRateTabulationRegardElement.m */, - E8751E6C28A64F990056EF44 /* YUMIMarchingDispossessTabulationRegardElement.h */, - E8751E6D28A64F990056EF44 /* YUMIMarchingDispossessTabulationRegardElement.m */, - E8AB633428AE54A40023B0D2 /* YUMIMarchingCaptureAssembletionRegardElement.h */, - E8AB633528AE54A40023B0D2 /* YUMIMarchingCaptureAssembletionRegardElement.m */, + E8751E6928A64C6E0056EF44 /* XPSailingRankTableViewCell.h */, + E8751E6A28A64C6E0056EF44 /* XPSailingRankTableViewCell.m */, + E8751E6C28A64F990056EF44 /* XPSailingEmptyTableViewCell.h */, + E8751E6D28A64F990056EF44 /* XPSailingEmptyTableViewCell.m */, + E8AB633428AE54A40023B0D2 /* XPSailingPrizeCollectionViewCell.h */, + E8AB633528AE54A40023B0D2 /* XPSailingPrizeCollectionViewCell.m */, ); path = Cell; sourceTree = ""; @@ -7428,7 +7182,7 @@ E8778AE92988EEBF00CF139B /* Protocol */ = { isa = PBXGroup; children = ( - E8F63CB8298B5F3D00B338BA /* FBCInterlocutionSayHelloCeremony.h */, + E8F63CB8298B5F3D00B338BA /* XPSessionSayHelloProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -7436,8 +7190,8 @@ E8778AEA2988EED400CF139B /* Presenter */ = { isa = PBXGroup; children = ( - E8F63CB5298B566D00B338BA /* YUMIInterlocutionSpeakHalloExternalizer.h */, - E8F63CB6298B566D00B338BA /* YUMIInterlocutionSpeakHalloExternalizer.m */, + E8F63CB5298B566D00B338BA /* XPSessionSayHelloPresenter.h */, + E8F63CB6298B566D00B338BA /* XPSessionSayHelloPresenter.m */, ); path = Presenter; sourceTree = ""; @@ -7447,8 +7201,8 @@ children = ( E8778AF22988EF1300CF139B /* CustomView */, E8778AF12988EF0A00CF139B /* Cell */, - E8778AEE2988EF0600CF139B /* YUMIInterlocutionSpeakHalloRegardGovernancer.h */, - E8778AEF2988EF0600CF139B /* YUMIInterlocutionSpeakHalloRegardGovernancer.m */, + E8778AEE2988EF0600CF139B /* XPSessionSayHelloViewController.h */, + E8778AEF2988EF0600CF139B /* XPSessionSayHelloViewController.m */, ); path = View; sourceTree = ""; @@ -7465,12 +7219,12 @@ E8778AED2988EEED00CF139B /* Model */ = { isa = PBXGroup; children = ( - E8F63CAF298B553500B338BA /* InterlocutionSpeakHalloPrototypeMatrix.h */, - E8F63CB0298B553500B338BA /* InterlocutionSpeakHalloPrototypeMatrix.m */, - E8F63CB9298B648300B338BA /* InterlocutionSpeakHalloStatementMatrix.h */, - E8F63CBA298B648300B338BA /* InterlocutionSpeakHalloStatementMatrix.m */, - E8AFF7E1298CA1E500FBDE32 /* InterlocutionSpeakHalloComputationMatrix.h */, - E8AFF7E2298CA1E500FBDE32 /* InterlocutionSpeakHalloComputationMatrix.m */, + E8F63CAF298B553500B338BA /* SessionSayHelloLevelModel.h */, + E8F63CB0298B553500B338BA /* SessionSayHelloLevelModel.m */, + E8F63CB9298B648300B338BA /* SessionSayHelloListModel.h */, + E8F63CBA298B648300B338BA /* SessionSayHelloListModel.m */, + E8AFF7E1298CA1E500FBDE32 /* SessionSayHelloCountModel.h */, + E8AFF7E2298CA1E500FBDE32 /* SessionSayHelloCountModel.m */, ); path = Model; sourceTree = ""; @@ -7478,10 +7232,10 @@ E8778AF12988EF0A00CF139B /* Cell */ = { isa = PBXGroup; children = ( - E8778AF32988EF2B00CF139B /* YUMIInterlocutionSpeakHalloTabulationRegardElement.h */, - E8778AF42988EF2B00CF139B /* YUMIInterlocutionSpeakHalloTabulationRegardElement.m */, - E8778AF92989034200CF139B /* YUMIInterlocutionSpeakHalloDispossessTabulationRegardElement.h */, - E8778AFA2989034200CF139B /* YUMIInterlocutionSpeakHalloDispossessTabulationRegardElement.m */, + E8778AF32988EF2B00CF139B /* XPSessionSayHelloTableViewCell.h */, + E8778AF42988EF2B00CF139B /* XPSessionSayHelloTableViewCell.m */, + E8778AF92989034200CF139B /* XPSessionSayHelloEmptyTableViewCell.h */, + E8778AFA2989034200CF139B /* XPSessionSayHelloEmptyTableViewCell.m */, ); path = Cell; sourceTree = ""; @@ -7489,8 +7243,8 @@ E8778AF22988EF1300CF139B /* CustomView */ = { isa = PBXGroup; children = ( - E8778AF62988F4E200CF139B /* YUMIInterlocutionSpeakHalloIntelligencerRegard.h */, - E8778AF72988F4E200CF139B /* YUMIInterlocutionSpeakHalloIntelligencerRegard.m */, + E8778AF62988F4E200CF139B /* XPSessionSayHelloHeaderView.h */, + E8778AF72988F4E200CF139B /* XPSessionSayHelloHeaderView.m */, ); path = CustomView; sourceTree = ""; @@ -7512,24 +7266,24 @@ E8788935273A540400BF1D57 /* Model */ = { isa = PBXGroup; children = ( - E890BC02273CF0500007C46B /* YUMIPresentComputationMatrix.h */, - E890BC03273CF0500007C46B /* YUMIPresentComputationMatrix.m */, - E890BC0E273D23F00007C46B /* PresentAbstractMatrix.h */, - E890BC0F273D23F00007C46B /* PresentAbstractMatrix.m */, - E884C36A2743951B00E1EBED /* PresentAchieveAbstractMatrix.h */, - E884C36B2743951B00E1EBED /* PresentAchieveAbstractMatrix.m */, - E8E7DAE92745158500C631CC /* YUMIExternalizeConsumerAbstractMatrix.h */, - E8E7DAEA2745158500C631CC /* YUMIExternalizeConsumerAbstractMatrix.m */, - E8DACCFC27673F870052092C /* PresentStressAbstractMatrix.h */, - E8DACCFD27673F870052092C /* PresentStressAbstractMatrix.m */, - 9B208A342779B50100F9E54A /* PresentMagnificentAbstractMatrix.h */, - 9B208A352779B50100F9E54A /* PresentMagnificentAbstractMatrix.m */, - 9B41D36C282649230048C588 /* YUMIWeekSatelliteRateConsumerMatrix.h */, - 9B41D36D282649230048C588 /* YUMIWeekSatelliteRateConsumerMatrix.m */, - E8A3538328FD67320014A784 /* PresentFortunatePingbackMatrix.h */, - E8A3538428FD67320014A784 /* PresentFortunatePingbackMatrix.m */, - E8D4DE452940473500EC788D /* PresentTwelveSatelliteThresholdMatrix.h */, - E8D4DE462940473500EC788D /* PresentTwelveSatelliteThresholdMatrix.m */, + E890BC02273CF0500007C46B /* XPGiftCountModel.h */, + E890BC03273CF0500007C46B /* XPGiftCountModel.m */, + E890BC0E273D23F00007C46B /* GiftInfoModel.h */, + E890BC0F273D23F00007C46B /* GiftInfoModel.m */, + E884C36A2743951B00E1EBED /* GiftReceiveInfoModel.h */, + E884C36B2743951B00E1EBED /* GiftReceiveInfoModel.m */, + E8E7DAE92745158500C631CC /* XPGiftUserInfoModel.h */, + E8E7DAEA2745158500C631CC /* XPGiftUserInfoModel.m */, + E8DACCFC27673F870052092C /* GiftValueInfoModel.h */, + E8DACCFD27673F870052092C /* GiftValueInfoModel.m */, + 9B208A342779B50100F9E54A /* GiftNobleInfoModel.h */, + 9B208A352779B50100F9E54A /* GiftNobleInfoModel.m */, + 9B41D36C282649230048C588 /* XPWeekStarRankUserModel.h */, + 9B41D36D282649230048C588 /* XPWeekStarRankUserModel.m */, + E8A3538328FD67320014A784 /* GiftLuckyBroadcastModel.h */, + E8A3538428FD67320014A784 /* GiftLuckyBroadcastModel.m */, + E8D4DE452940473500EC788D /* GiftTwelveStarFirstModel.h */, + E8D4DE462940473500EC788D /* GiftTwelveStarFirstModel.m */, ); path = Model; sourceTree = ""; @@ -7547,26 +7301,26 @@ isa = PBXGroup; children = ( E8788949273A594C00BF1D57 /* Cell */, - E8788932273A53D700BF1D57 /* YUMIDischargePresentRegard.h */, - E8788933273A53D700BF1D57 /* YUMIDischargePresentRegard.m */, - 9B4E91FE28E57A620033419E /* YUMIPresentIntelligenceGenreRegard.h */, - 9B4E91FF28E57A620033419E /* YUMIPresentIntelligenceGenreRegard.m */, - E8788940273A55AD00BF1D57 /* YUMIExternalizeConsumersRegard.h */, - E8788941273A55AD00BF1D57 /* YUMIExternalizeConsumersRegard.m */, - E8788943273A55C200BF1D57 /* YUMIPresentAbstractRegard.h */, - E8788944273A55C200BF1D57 /* YUMIPresentAbstractRegard.m */, - E8788946273A55D000BF1D57 /* YUMIPresentObstacleRegard.h */, - E8788947273A55D000BF1D57 /* YUMIPresentObstacleRegard.m */, - E890BC0B273D09A50007C46B /* YUMIPresentComputationRegard.h */, - E890BC0C273D09A50007C46B /* YUMIPresentComputationRegard.m */, - E8901CF428B38D89001E9A92 /* YUMIGraffitiPresentRegard.h */, - E8901CF528B38D89001E9A92 /* YUMIGraffitiPresentRegard.m */, - 9B4D449128F15765002572D5 /* YUMIPresentFortunatePresentPingbackRegard.h */, - 9B4D449228F15765002572D5 /* YUMIPresentFortunatePresentPingbackRegard.m */, - 9B4D449428F15EE7002572D5 /* YUMIPresentWeekSatellitePingbackRegard.h */, - 9B4D449528F15EE7002572D5 /* YUMIPresentWeekSatellitePingbackRegard.m */, - E8D4DE422940462C00EC788D /* YUMIPresentTwelveSatellitePingbackRegard.h */, - E8D4DE432940462C00EC788D /* YUMIPresentTwelveSatellitePingbackRegard.m */, + E8788932273A53D700BF1D57 /* XPSendGiftView.h */, + E8788933273A53D700BF1D57 /* XPSendGiftView.m */, + 9B4E91FE28E57A620033419E /* XPGiftHeadTypeView.h */, + 9B4E91FF28E57A620033419E /* XPGiftHeadTypeView.m */, + E8788940273A55AD00BF1D57 /* XPGiftUsersView.h */, + E8788941273A55AD00BF1D57 /* XPGiftUsersView.m */, + E8788943273A55C200BF1D57 /* XPGiftInfoView.h */, + E8788944273A55C200BF1D57 /* XPGiftInfoView.m */, + E8788946273A55D000BF1D57 /* XPGiftBarView.h */, + E8788947273A55D000BF1D57 /* XPGiftBarView.m */, + E890BC0B273D09A50007C46B /* XPGiftCountView.h */, + E890BC0C273D09A50007C46B /* XPGiftCountView.m */, + E8901CF428B38D89001E9A92 /* XPGraffitiGiftView.h */, + E8901CF528B38D89001E9A92 /* XPGraffitiGiftView.m */, + 9B4D449128F15765002572D5 /* XPGiftLuckyGiftBroadcastView.h */, + 9B4D449228F15765002572D5 /* XPGiftLuckyGiftBroadcastView.m */, + 9B4D449428F15EE7002572D5 /* XPGiftWeekStarBroadcastView.h */, + 9B4D449528F15EE7002572D5 /* XPGiftWeekStarBroadcastView.m */, + E8D4DE422940462C00EC788D /* XPGiftTwelveStarBroadcastView.h */, + E8D4DE432940462C00EC788D /* XPGiftTwelveStarBroadcastView.m */, ); path = View; sourceTree = ""; @@ -7574,10 +7328,10 @@ E8788938273A542E00BF1D57 /* Presenter */ = { isa = PBXGroup; children = ( - E878893D273A54F500BF1D57 /* YUMIPresentExternalizer.h */, - E878893E273A54F500BF1D57 /* YUMIPresentExternalizer.m */, - E8E7DAE62744F5EF00C631CC /* YUMIPresentStorage.h */, - E8E7DAE72744F5EF00C631CC /* YUMIPresentStorage.m */, + E878893D273A54F500BF1D57 /* XPGiftPresenter.h */, + E878893E273A54F500BF1D57 /* XPGiftPresenter.m */, + E8E7DAE62744F5EF00C631CC /* XPGiftStorage.h */, + E8E7DAE72744F5EF00C631CC /* XPGiftStorage.m */, ); path = Presenter; sourceTree = ""; @@ -7585,7 +7339,7 @@ E8788939273A544000BF1D57 /* Protocol */ = { isa = PBXGroup; children = ( - E878894D273A672200BF1D57 /* FBCPresentCeremony.h */, + E878894D273A672200BF1D57 /* XPGiftProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -7593,18 +7347,18 @@ E8788949273A594C00BF1D57 /* Cell */ = { isa = PBXGroup; children = ( - E878894A273A607C00BF1D57 /* YUMIExternalizeConsumerAssembletionRegardElement.h */, - E878894B273A607C00BF1D57 /* YUMIExternalizeConsumerAssembletionRegardElement.m */, - E890BC05273CF1800007C46B /* YUMIPresentComputationAssembletionRegardElement.h */, - E890BC06273CF1800007C46B /* YUMIPresentComputationAssembletionRegardElement.m */, - E8133914273E532D00708B66 /* YUMIPresentProvisionAssembletionRegardElement.h */, - E8133915273E532D00708B66 /* YUMIPresentProvisionAssembletionRegardElement.m */, - E8A73F8528586A6F00FD9CBC /* YUMIPresentWeekSatelliteAssembletionRegardElement.h */, - E8A73F8628586A6F00FD9CBC /* YUMIPresentWeekSatelliteAssembletionRegardElement.m */, - E811FFF52742367B00918544 /* YUMIPresentDispossessAssembletionRegardElement.h */, - E811FFF62742367B00918544 /* YUMIPresentDispossessAssembletionRegardElement.m */, - E8659907273E800D00EE349D /* YUMIPresentAssembletionRegardFlowProgramming.h */, - E8659908273E800D00EE349D /* YUMIPresentAssembletionRegardFlowProgramming.m */, + E878894A273A607C00BF1D57 /* XPGiftUserCollectionViewCell.h */, + E878894B273A607C00BF1D57 /* XPGiftUserCollectionViewCell.m */, + E890BC05273CF1800007C46B /* XPGiftCountCollectionViewCell.h */, + E890BC06273CF1800007C46B /* XPGiftCountCollectionViewCell.m */, + E8133914273E532D00708B66 /* XPGiftItemCollectionViewCell.h */, + E8133915273E532D00708B66 /* XPGiftItemCollectionViewCell.m */, + E8A73F8528586A6F00FD9CBC /* XPGiftWeekStarCollectionViewCell.h */, + E8A73F8628586A6F00FD9CBC /* XPGiftWeekStarCollectionViewCell.m */, + E811FFF52742367B00918544 /* XPGiftEmptyCollectionViewCell.h */, + E811FFF62742367B00918544 /* XPGiftEmptyCollectionViewCell.m */, + E8659907273E800D00EE349D /* XPGiftCollectionViewFlowLayout.h */, + E8659908273E800D00EE349D /* XPGiftCollectionViewFlowLayout.m */, ); path = Cell; sourceTree = ""; @@ -7612,8 +7366,8 @@ E87AE8C2284E1A6B00CAFBB3 /* NewUserGreet */ = { isa = PBXGroup; children = ( - E87AE8C3284E1A8400CAFBB3 /* YUMIChamberStrangeConsumerBewelcometoRegard.h */, - E87AE8C4284E1A8400CAFBB3 /* YUMIChamberStrangeConsumerBewelcometoRegard.m */, + E87AE8C3284E1A8400CAFBB3 /* XPRoomNewUserGreetView.h */, + E87AE8C4284E1A8400CAFBB3 /* XPRoomNewUserGreetView.m */, ); path = NewUserGreet; sourceTree = ""; @@ -7634,12 +7388,12 @@ children = ( E87DF4E92A42CB51009C1185 /* Cell */, E87DF4E12A42CAC1009C1185 /* SubView */, - E8C6FFDE2754EEF9004DC9F0 /* YUMIResidenceHuntforRegardGovernancer.h */, - E8C6FFDF2754EEF9004DC9F0 /* YUMIResidenceHuntforRegardGovernancer.m */, - E87A27012758BC81002DDC7A /* YUMIChamberHuntforAccommodatedRegardGovernancer.h */, - E87A27022758BC81002DDC7A /* YUMIChamberHuntforAccommodatedRegardGovernancer.m */, - 9B88E20D28C6305400D26FBA /* YUMIChamberHuntforReflectionRegardGovernancer.h */, - 9B88E20E28C6305400D26FBA /* YUMIChamberHuntforReflectionRegardGovernancer.m */, + E8C6FFDE2754EEF9004DC9F0 /* XPHomeSearchViewController.h */, + E8C6FFDF2754EEF9004DC9F0 /* XPHomeSearchViewController.m */, + E87A27012758BC81002DDC7A /* XPRoomSearchContainerViewController.h */, + E87A27022758BC81002DDC7A /* XPRoomSearchContainerViewController.m */, + 9B88E20D28C6305400D26FBA /* XPRoomSearchRecordViewController.h */, + 9B88E20E28C6305400D26FBA /* XPRoomSearchRecordViewController.m */, ); path = View; sourceTree = ""; @@ -7647,12 +7401,12 @@ E87DF4BA2A42C7F9009C1185 /* Model */ = { isa = PBXGroup; children = ( - E87DF50C2A42CF15009C1185 /* ResidenceEnergeticChamberMatrix.h */, - E87DF50D2A42CF15009C1185 /* ResidenceEnergeticChamberMatrix.m */, - E87DF5092A42CEC9009C1185 /* ResidenceEveryOneHuntforMatrix.h */, - E87DF50A2A42CEC9009C1185 /* ResidenceEveryOneHuntforMatrix.m */, - E87DF4DC2A42CA12009C1185 /* ResidenceHuntforConsequentMatrix.h */, - E87DF4DB2A42CA12009C1185 /* ResidenceHuntforConsequentMatrix.m */, + E87DF50C2A42CF15009C1185 /* HomeLiveRoomModel.h */, + E87DF50D2A42CF15009C1185 /* HomeLiveRoomModel.m */, + E87DF5092A42CEC9009C1185 /* HomeEveryOneSearchModel.h */, + E87DF50A2A42CEC9009C1185 /* HomeEveryOneSearchModel.m */, + E87DF4DC2A42CA12009C1185 /* HomeSearchResultModel.h */, + E87DF4DB2A42CA12009C1185 /* HomeSearchResultModel.m */, ); path = Model; sourceTree = ""; @@ -7660,10 +7414,10 @@ E87DF4BB2A42C81A009C1185 /* Presenter */ = { isa = PBXGroup; children = ( - E87DF5062A42CE79009C1185 /* YUMIInChamberReflectionExternalizer.h */, - E87DF5072A42CE79009C1185 /* YUMIInChamberReflectionExternalizer.m */, - E8C6FFE42754FE53004DC9F0 /* YUMIResidenceHuntforExternalizer.h */, - E8C6FFE52754FE53004DC9F0 /* YUMIResidenceHuntforExternalizer.m */, + E87DF5062A42CE79009C1185 /* XPInRoomRecordPresenter.h */, + E87DF5072A42CE79009C1185 /* XPInRoomRecordPresenter.m */, + E8C6FFE42754FE53004DC9F0 /* XPHomeSearchPresenter.h */, + E8C6FFE52754FE53004DC9F0 /* XPHomeSearchPresenter.m */, ); path = Presenter; sourceTree = ""; @@ -7671,8 +7425,8 @@ E87DF4BC2A42C82F009C1185 /* Protocol */ = { isa = PBXGroup; children = ( - E8C6FFE72754FE66004DC9F0 /* FBCResidenceHuntforCeremony.h */, - 9BAD41AD28C6ECBA005E47B3 /* FBCInChamberRecordCeremony.h */, + E8C6FFE72754FE66004DC9F0 /* XPHomeSearchProtocol.h */, + 9BAD41AD28C6ECBA005E47B3 /* XPInRoomRecordProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -7680,12 +7434,12 @@ E87DF4E12A42CAC1009C1185 /* SubView */ = { isa = PBXGroup; children = ( - E87DF4FD2A42CD7E009C1185 /* YUMIChamberHuntforEncourageIntelligenceRegard.h */, - E87DF4FC2A42CD7D009C1185 /* YUMIChamberHuntforEncourageIntelligenceRegard.m */, - E87DF4F72A42CCAB009C1185 /* YUMIResidenceHuntforRelateRegard.h */, - E87DF4F62A42CCAB009C1185 /* YUMIResidenceHuntforRelateRegard.m */, - E87DF4E32A42CAD2009C1185 /* YUMIResidenceHuntforNevRegard.h */, - E87DF4E22A42CAD2009C1185 /* YUMIResidenceHuntforNevRegard.m */, + E87DF4FD2A42CD7E009C1185 /* XPRoomSearchRecommendHeadView.h */, + E87DF4FC2A42CD7D009C1185 /* XPRoomSearchRecommendHeadView.m */, + E87DF4F72A42CCAB009C1185 /* XPHomeSearchRelateView.h */, + E87DF4F62A42CCAB009C1185 /* XPHomeSearchRelateView.m */, + E87DF4E32A42CAD2009C1185 /* XPHomeSearchNavView.h */, + E87DF4E22A42CAD2009C1185 /* XPHomeSearchNavView.m */, ); path = SubView; sourceTree = ""; @@ -7693,16 +7447,16 @@ E87DF4E92A42CB51009C1185 /* Cell */ = { isa = PBXGroup; children = ( - E87DF5032A42CE21009C1185 /* YUMIResidenceHuntforReflectionElement.h */, - E87DF5042A42CE21009C1185 /* YUMIResidenceHuntforReflectionElement.m */, - E87DF5002A42CDF1009C1185 /* YUMIResidenceConsiderationAssembletionRegardElement.h */, - E87DF5012A42CDF1009C1185 /* YUMIResidenceConsiderationAssembletionRegardElement.m */, - E87DF4F92A42CCDD009C1185 /* YUMIResidenceDeficitommendAssembletionRegardElement.h */, - E87DF4FA2A42CCDE009C1185 /* YUMIResidenceDeficitommendAssembletionRegardElement.m */, - E87DF4ED2A42CB90009C1185 /* YUMIResidenceAssembleChamberTabulationRegardElement.h */, - E87DF4EE2A42CB90009C1185 /* YUMIResidenceAssembleChamberTabulationRegardElement.m */, - E87DF4EB2A42CB60009C1185 /* YUMIHuntforStatementTabulationRegardElement.h */, - E87DF4EA2A42CB60009C1185 /* YUMIHuntforStatementTabulationRegardElement.m */, + E87DF5032A42CE21009C1185 /* XPHomeSearchRecordCell.h */, + E87DF5042A42CE21009C1185 /* XPHomeSearchRecordCell.m */, + E87DF5002A42CDF1009C1185 /* XPHomeAttentionCollectionViewCell.h */, + E87DF5012A42CDF1009C1185 /* XPHomeAttentionCollectionViewCell.m */, + E87DF4F92A42CCDD009C1185 /* XPHomeRedommendCollectionViewCell.h */, + E87DF4FA2A42CCDE009C1185 /* XPHomeRedommendCollectionViewCell.m */, + E87DF4ED2A42CB90009C1185 /* XPHomeCollectRoomTableViewCell.h */, + E87DF4EE2A42CB90009C1185 /* XPHomeCollectRoomTableViewCell.m */, + E87DF4EB2A42CB60009C1185 /* XPSearchListTableViewCell.h */, + E87DF4EA2A42CB60009C1185 /* XPSearchListTableViewCell.m */, ); path = Cell; sourceTree = ""; @@ -7722,10 +7476,10 @@ E87E62502A3F559D002F68C9 /* Protocol */ = { isa = PBXGroup; children = ( - E87DF4FF2A42CDB4009C1185 /* FBCResidenceEncourageCeremony.h */, - E87DF4E82A42CB24009C1185 /* FBCResidenceCeremony.h */, - E87E62692A3F5756002F68C9 /* FBCResidenceContainerCeremony.h */, - E87E627C2A3F5A63002F68C9 /* FBCStrangeResidenceEncourageCeremony.h */, + E87DF4FF2A42CDB4009C1185 /* XPHomeRecommendProtocol.h */, + E87DF4E82A42CB24009C1185 /* XPHomeProtocol.h */, + E87E62692A3F5756002F68C9 /* XPHomeContainerProtocol.h */, + E87E627C2A3F5A63002F68C9 /* XPNewHomeRecommendProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -7733,12 +7487,12 @@ E87E62512A3F55AB002F68C9 /* Presenter */ = { isa = PBXGroup; children = ( - E87DF4E62A42CB00009C1185 /* YUMIResidenceExternalizer.h */, - E87DF4E52A42CAFF009C1185 /* YUMIResidenceExternalizer.m */, - E87E62672A3F571D002F68C9 /* YUMIResidenceAccommodatedExternalizer.h */, - E87E62662A3F571C002F68C9 /* YUMIResidenceAccommodatedExternalizer.m */, - E87E62792A3F5A0D002F68C9 /* YUMIStrangeResidenceEncourageExternalizer.h */, - E87E627A2A3F5A0D002F68C9 /* YUMIStrangeResidenceEncourageExternalizer.m */, + E87DF4E62A42CB00009C1185 /* XPHomePresenter.h */, + E87DF4E52A42CAFF009C1185 /* XPHomePresenter.m */, + E87E62672A3F571D002F68C9 /* XPHomeContainerPresenter.h */, + E87E62662A3F571C002F68C9 /* XPHomeContainerPresenter.m */, + E87E62792A3F5A0D002F68C9 /* XPNewHomeRecommendPresenter.h */, + E87E627A2A3F5A0D002F68C9 /* XPNewHomeRecommendPresenter.m */, ); path = Presenter; sourceTree = ""; @@ -7746,17 +7500,17 @@ E87E62522A3F55B2002F68C9 /* View */ = { isa = PBXGroup; children = ( - E87DF4DF2A42CA92009C1185 /* YUMIResidenceSloganRegardGovernancer.h */, - E87DF4DE2A42CA92009C1185 /* YUMIResidenceSloganRegardGovernancer.m */, + E87DF4DF2A42CA92009C1185 /* XPHomeSloganViewController.h */, + E87DF4DE2A42CA92009C1185 /* XPHomeSloganViewController.m */, E87DF4B82A42C7BB009C1185 /* Search */, E87E625F2A3F5669002F68C9 /* Cell */, E87E625E2A3F565D002F68C9 /* CustomView */, - E87E62552A3F560A002F68C9 /* YUMIResidenceParatiesRegardGovernancer.h */, - E87E62562A3F560A002F68C9 /* YUMIResidenceParatiesRegardGovernancer.m */, - E87E62572A3F560A002F68C9 /* YUMIResidenceEncourageRegardGovernancer.h */, - E87E62582A3F560A002F68C9 /* YUMIResidenceEncourageRegardGovernancer.m */, - E87E625B2A3F5622002F68C9 /* YUMIStrangeResidenceRegardGovernancer.h */, - E87E625C2A3F5622002F68C9 /* YUMIStrangeResidenceRegardGovernancer.m */, + E87E62552A3F560A002F68C9 /* XPHomePartyViewController.h */, + E87E62562A3F560A002F68C9 /* XPHomePartyViewController.m */, + E87E62572A3F560A002F68C9 /* XPHomeRecommendViewController.h */, + E87E62582A3F560A002F68C9 /* XPHomeRecommendViewController.m */, + E87E625B2A3F5622002F68C9 /* XPNewHomeViewController.h */, + E87E625C2A3F5622002F68C9 /* XPNewHomeViewController.m */, ); path = View; sourceTree = ""; @@ -7773,18 +7527,18 @@ E87E62542A3F55BE002F68C9 /* Model */ = { isa = PBXGroup; children = ( - E87DF4F32A42CC49009C1185 /* ResidenceParrotAbstractMatrix.h */, - E87DF4F42A42CC49009C1185 /* ResidenceParrotAbstractMatrix.m */, - E87DF4D92A42C9D9009C1185 /* ResidenceAssembleChamberMatrix.h */, - E87DF4D82A42C9D8009C1185 /* ResidenceAssembleChamberMatrix.m */, - E87DF4D62A42C9C3009C1185 /* ResidenceDisportChamberMatrix.h */, - E87DF4D52A42C9C3009C1185 /* ResidenceDisportChamberMatrix.m */, - E87DF4D22A42C9B1009C1185 /* ResidenceEncourageChamberMatrix.h */, - E87DF4D32A42C9B1009C1185 /* ResidenceEncourageChamberMatrix.m */, - E87DF4CA2A42C960009C1185 /* ResidenceOriflammeAbstractMatrix.h */, - E87DF4CB2A42C960009C1185 /* ResidenceOriflammeAbstractMatrix.m */, - E87DF4BD2A42C8C1009C1185 /* ResidenceCoupleMatrix.h */, - E87DF4BE2A42C8C1009C1185 /* ResidenceCoupleMatrix.m */, + E87DF4F32A42CC49009C1185 /* HomeMenuInfoModel.h */, + E87DF4F42A42CC49009C1185 /* HomeMenuInfoModel.m */, + E87DF4D92A42C9D9009C1185 /* HomeCollectRoomModel.h */, + E87DF4D82A42C9D8009C1185 /* HomeCollectRoomModel.m */, + E87DF4D62A42C9C3009C1185 /* HomePlayRoomModel.h */, + E87DF4D52A42C9C3009C1185 /* HomePlayRoomModel.m */, + E87DF4D22A42C9B1009C1185 /* HomeRecommendRoomModel.h */, + E87DF4D32A42C9B1009C1185 /* HomeRecommendRoomModel.m */, + E87DF4CA2A42C960009C1185 /* HomeBannerInfoModel.h */, + E87DF4CB2A42C960009C1185 /* HomeBannerInfoModel.m */, + E87DF4BD2A42C8C1009C1185 /* HomeTagModel.h */, + E87DF4BE2A42C8C1009C1185 /* HomeTagModel.m */, ); path = Model; sourceTree = ""; @@ -7792,12 +7546,12 @@ E87E625E2A3F565D002F68C9 /* CustomView */ = { isa = PBXGroup; children = ( - E87DF4F12A42CBEC009C1185 /* YUMIResidenceConsumerRegard.h */, - E87DF4F02A42CBEC009C1185 /* YUMIResidenceConsumerRegard.m */, - E87DF4C02A42C900009C1185 /* YUMINoteRegard.h */, - E87DF4C12A42C900009C1185 /* YUMINoteRegard.m */, - E87E62612A3F5689002F68C9 /* YUMIStrangeResidenceNevRegard.h */, - E87E62602A3F5689002F68C9 /* YUMIStrangeResidenceNevRegard.m */, + E87DF4F12A42CBEC009C1185 /* XPHomeUserView.h */, + E87DF4F02A42CBEC009C1185 /* XPHomeUserView.m */, + E87DF4C02A42C900009C1185 /* XPNoteView.h */, + E87DF4C12A42C900009C1185 /* XPNoteView.m */, + E87E62612A3F5689002F68C9 /* XPNewHomeNavView.h */, + E87E62602A3F5689002F68C9 /* XPNewHomeNavView.m */, ); path = CustomView; sourceTree = ""; @@ -7805,18 +7559,18 @@ E87E625F2A3F5669002F68C9 /* Cell */ = { isa = PBXGroup; children = ( - E87E627D2A3F5D28002F68C9 /* YUMIStrangeResidenceDisportProvisionAssembletionRegardElement.h */, - E87E627E2A3F5D28002F68C9 /* YUMIStrangeResidenceDisportProvisionAssembletionRegardElement.m */, - E87E62722A3F5907002F68C9 /* YUMIResidenceOriflammeTabulationRegardElement.h */, - E87E626A2A3F5906002F68C9 /* YUMIResidenceOriflammeTabulationRegardElement.m */, - E87E626E2A3F5906002F68C9 /* YUMIStrangeResidenceParatiesTabulationRegardElement.h */, - E87E62712A3F5907002F68C9 /* YUMIStrangeResidenceParatiesTabulationRegardElement.m */, - E87E626B2A3F5906002F68C9 /* YUMIStrangeResidenceDisportDispossessTabulationRegardElement.h */, - E87E626D2A3F5906002F68C9 /* YUMIStrangeResidenceDisportDispossessTabulationRegardElement.m */, - E87E626C2A3F5906002F68C9 /* YUMIStrangeResidenceDisportTabulationRegardElement.h */, - E87E626F2A3F5906002F68C9 /* YUMIStrangeResidenceDisportTabulationRegardElement.m */, - E87E62732A3F5907002F68C9 /* YUMIStrangeResidenceEncourageTabulationRegardElement.h */, - E87E62702A3F5907002F68C9 /* YUMIStrangeResidenceEncourageTabulationRegardElement.m */, + E87E627D2A3F5D28002F68C9 /* XPNewHomePlayItemCollectionViewCell.h */, + E87E627E2A3F5D28002F68C9 /* XPNewHomePlayItemCollectionViewCell.m */, + E87E62722A3F5907002F68C9 /* XPHomeBannerTableViewCell.h */, + E87E626A2A3F5906002F68C9 /* XPHomeBannerTableViewCell.m */, + E87E626E2A3F5906002F68C9 /* XPNewHomePartyTableViewCell.h */, + E87E62712A3F5907002F68C9 /* XPNewHomePartyTableViewCell.m */, + E87E626B2A3F5906002F68C9 /* XPNewHomePlayEmptyTableViewCell.h */, + E87E626D2A3F5906002F68C9 /* XPNewHomePlayEmptyTableViewCell.m */, + E87E626C2A3F5906002F68C9 /* XPNewHomePlayTableViewCell.h */, + E87E626F2A3F5906002F68C9 /* XPNewHomePlayTableViewCell.m */, + E87E62732A3F5907002F68C9 /* XPNewHomeRecommendTableViewCell.h */, + E87E62702A3F5907002F68C9 /* XPNewHomeRecommendTableViewCell.m */, ); path = Cell; sourceTree = ""; @@ -7836,7 +7590,7 @@ E880B397278BD43600A83B0D /* Protocol */ = { isa = PBXGroup; children = ( - E880B3B6278C1FFB00A83B0D /* FBCAcrossChamberCeremony.h */, + E880B3B6278C1FFB00A83B0D /* XPAcrossRoomProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -7844,8 +7598,8 @@ E880B398278BD43D00A83B0D /* Presenter */ = { isa = PBXGroup; children = ( - E880B3B3278C1FE400A83B0D /* YUMIThroughoutChamberCombatExternalizer.h */, - E880B3B4278C1FE400A83B0D /* YUMIThroughoutChamberCombatExternalizer.m */, + E880B3B3278C1FE400A83B0D /* XPAcrossRoomPKPresenter.h */, + E880B3B4278C1FE400A83B0D /* XPAcrossRoomPKPresenter.m */, ); path = Presenter; sourceTree = ""; @@ -7855,10 +7609,10 @@ children = ( E880B3A3278BD66400A83B0D /* SubViews */, E880B3A2278BD65E00A83B0D /* Cell */, - E880B39C278BD49E00A83B0D /* YUMIThroughoutChamberCombatRegardGovernancer.h */, - E880B39D278BD49E00A83B0D /* YUMIThroughoutChamberCombatRegardGovernancer.m */, - E880B39F278BD60C00A83B0D /* YUMIThroughoutChamberCombatChosenChamberRegard.h */, - E880B3A0278BD60C00A83B0D /* YUMIThroughoutChamberCombatChosenChamberRegard.m */, + E880B39C278BD49E00A83B0D /* XPAcrossRoomPKViewController.h */, + E880B39D278BD49E00A83B0D /* XPAcrossRoomPKViewController.m */, + E880B39F278BD60C00A83B0D /* XPAcrossRoomPKSelectRoomView.h */, + E880B3A0278BD60C00A83B0D /* XPAcrossRoomPKSelectRoomView.m */, ); path = View; sourceTree = ""; @@ -7875,12 +7629,12 @@ E880B39B278BD45A00A83B0D /* Model */ = { isa = PBXGroup; children = ( - E880B3A7278BD82300A83B0D /* ThroughoutChamberCombatAbstractMatrix.h */, - E880B3A8278BD82300A83B0D /* ThroughoutChamberCombatAbstractMatrix.m */, - E8D48251278D8228003C1D08 /* ThroughoutChamberCombatFasciaboardMatrix.h */, - E8D48252278D8228003C1D08 /* ThroughoutChamberCombatFasciaboardMatrix.m */, - E88863CA278EC336004BCFAB /* ThroughoutChamberCombatCaptureMatrix.h */, - E88863CB278EC336004BCFAB /* ThroughoutChamberCombatCaptureMatrix.m */, + E880B3A7278BD82300A83B0D /* AcrossRoomPKInfoModel.h */, + E880B3A8278BD82300A83B0D /* AcrossRoomPKInfoModel.m */, + E8D48251278D8228003C1D08 /* AcrossRoomPKPanelModel.h */, + E8D48252278D8228003C1D08 /* AcrossRoomPKPanelModel.m */, + E88863CA278EC336004BCFAB /* AcrossRoomPKPrizeModel.h */, + E88863CB278EC336004BCFAB /* AcrossRoomPKPrizeModel.m */, ); path = Model; sourceTree = ""; @@ -7888,10 +7642,10 @@ E880B3A2278BD65E00A83B0D /* Cell */ = { isa = PBXGroup; children = ( - E880B3A4278BD69900A83B0D /* YUMIThroughoutChamberCombatTabulationRegardElement.h */, - E880B3A5278BD69900A83B0D /* YUMIThroughoutChamberCombatTabulationRegardElement.m */, - E880B3AA278BD98600A83B0D /* YUMIThroughoutChamberCombatDispossessTabulationRegardElement.h */, - E880B3AB278BD98600A83B0D /* YUMIThroughoutChamberCombatDispossessTabulationRegardElement.m */, + E880B3A4278BD69900A83B0D /* XPAcrossRoomPKTableViewCell.h */, + E880B3A5278BD69900A83B0D /* XPAcrossRoomPKTableViewCell.m */, + E880B3AA278BD98600A83B0D /* XPAcrossRoomPKEmptyTableViewCell.h */, + E880B3AB278BD98600A83B0D /* XPAcrossRoomPKEmptyTableViewCell.m */, ); path = Cell; sourceTree = ""; @@ -7899,26 +7653,26 @@ E880B3A3278BD66400A83B0D /* SubViews */ = { isa = PBXGroup; children = ( - E880B3B0278C1D1800A83B0D /* YUMIThroughoutChamberCombatPreadominantRegard.h */, - E880B3B1278C1D1800A83B0D /* YUMIThroughoutChamberCombatPreadominantRegard.m */, - E8D48248278D1F72003C1D08 /* YUMIThroughoutChamberCombatCallforRegard.h */, - E8D48249278D1F73003C1D08 /* YUMIThroughoutChamberCombatCallforRegard.m */, - E8D4824B278D2CE4003C1D08 /* YUMIThroughoutChamberCombatCallforConsequentRegard.h */, - E8D4824C278D2CE4003C1D08 /* YUMIThroughoutChamberCombatCallforConsequentRegard.m */, - E8D4824E278D68BA003C1D08 /* YUMIAcrpssChamberCombatFasciaboardRegard.h */, - E8D4824F278D68BA003C1D08 /* YUMIAcrpssChamberCombatFasciaboardRegard.m */, - E8D48254278D83AE003C1D08 /* YUMIThroughoutChamberCombatFasciaboardConsumerRegard.h */, - E8D48255278D83AE003C1D08 /* YUMIThroughoutChamberCombatFasciaboardConsumerRegard.m */, - E88863C4278EAFC3004BCFAB /* YUMIThroughoutChamberCombatConsequentRegard.h */, - E88863C5278EAFC3004BCFAB /* YUMIThroughoutChamberCombatConsequentRegard.m */, - E88863C7278EBA43004BCFAB /* YUMIThroughoutChamberCombatForceEndConsequentRegard.h */, - E88863C8278EBA43004BCFAB /* YUMIThroughoutChamberCombatForceEndConsequentRegard.m */, - E88863CD278EC393004BCFAB /* YUMIThroughoutChamberCombatCaptureRegard.h */, - E88863CE278EC393004BCFAB /* YUMIThroughoutChamberCombatCaptureRegard.m */, - 9BF5192428801D4700B6BE92 /* YUMIThroughoutChamberCombatComputationDownRegard.h */, - 9BF5192528801D4700B6BE92 /* YUMIThroughoutChamberCombatComputationDownRegard.m */, - 9B3C1818292CE4FA003AF543 /* XCombatellegCombatAdaptationRegard.h */, - 9B3C1819292CE4FA003AF543 /* XCombatellegCombatAdaptationRegard.m */, + E880B3B0278C1D1800A83B0D /* XPAcrossRoomPKRuleView.h */, + E880B3B1278C1D1800A83B0D /* XPAcrossRoomPKRuleView.m */, + E8D48248278D1F72003C1D08 /* XPAcrossRoomPKInviteView.h */, + E8D48249278D1F73003C1D08 /* XPAcrossRoomPKInviteView.m */, + E8D4824B278D2CE4003C1D08 /* XPAcrossRoomPKInviteResultView.h */, + E8D4824C278D2CE4003C1D08 /* XPAcrossRoomPKInviteResultView.m */, + E8D4824E278D68BA003C1D08 /* XPAcrpssRoomPKPanelView.h */, + E8D4824F278D68BA003C1D08 /* XPAcrpssRoomPKPanelView.m */, + E8D48254278D83AE003C1D08 /* XPAcrossRoomPKPanelUserView.h */, + E8D48255278D83AE003C1D08 /* XPAcrossRoomPKPanelUserView.m */, + E88863C4278EAFC3004BCFAB /* XPAcrossRoomPKResultView.h */, + E88863C5278EAFC3004BCFAB /* XPAcrossRoomPKResultView.m */, + E88863C7278EBA43004BCFAB /* XPAcrossRoomPKForceEndResultView.h */, + E88863C8278EBA43004BCFAB /* XPAcrossRoomPKForceEndResultView.m */, + E88863CD278EC393004BCFAB /* XPAcrossRoomPKPrizeView.h */, + E88863CE278EC393004BCFAB /* XPAcrossRoomPKPrizeView.m */, + 9BF5192428801D4700B6BE92 /* XPAcrossRoomPKCountDownView.h */, + 9BF5192528801D4700B6BE92 /* XPAcrossRoomPKCountDownView.m */, + 9B3C1818292CE4FA003AF543 /* XPAnchorPKMatchView.h */, + 9B3C1819292CE4FA003AF543 /* XPAnchorPKMatchView.m */, ); path = SubViews; sourceTree = ""; @@ -7932,22 +7686,22 @@ path = Tool; sourceTree = ""; }; - E88863D0278ED4A0004BCFAB /* Intratemporalstamp */ = { + E88863D0278ED4A0004BCFAB /* Timestamp */ = { isa = PBXGroup; children = ( - E88863D1278ED4C0004BCFAB /* Intratemporalstamp.h */, - E88863D2278ED4C0004BCFAB /* Intratemporalstamp.m */, + E88863D1278ED4C0004BCFAB /* Timestamp.h */, + E88863D2278ED4C0004BCFAB /* Timestamp.m */, ); - path = Intratemporalstamp; + path = Timestamp; sourceTree = ""; }; E8899C7C27853B46007944BE /* Dating */ = { isa = PBXGroup; children = ( - E877A7EC278428FB00EFACED /* MiecreoscoopeEngagementProgressRegard.h */, - E877A7ED278428FB00EFACED /* MiecreoscoopeEngagementProgressRegard.m */, - E8899C7D27853B6A007944BE /* EngagementMiecreoscoopeRegard.h */, - E8899C7E27853B6A007944BE /* EngagementMiecreoscoopeRegard.m */, + E877A7EC278428FB00EFACED /* MicroDatingProgressView.h */, + E877A7ED278428FB00EFACED /* MicroDatingProgressView.m */, + E8899C7D27853B6A007944BE /* DatingMicroView.h */, + E8899C7E27853B6A007944BE /* DatingMicroView.m */, ); path = Dating; sourceTree = ""; @@ -7955,26 +7709,26 @@ E88B5CBE26FB404800DA9178 /* MineInfo */ = { isa = PBXGroup; children = ( - E88B5CBF26FB407B00DA9178 /* YUMIManeConsumerAbstractRegardGovernancer.h */, - E88B5CC026FB407B00DA9178 /* YUMIManeConsumerAbstractRegardGovernancer.m */, - E8D34D4528080295009C4835 /* YUMIManeConsumerAtomicRegardGovernancer.h */, - E8D34D4628080295009C4835 /* YUMIManeConsumerAtomicRegardGovernancer.m */, - E8EEB90426FC5772007C6EBA /* YUMIManeConsumerAbstractCompileRegardGovernancer.h */, - E8EEB90526FC5772007C6EBA /* YUMIManeConsumerAbstractCompileRegardGovernancer.m */, - E8EEB91226FC7786007C6EBA /* YUMIManeConsumerAbstractNickRegardGovernancer.h */, - E8EEB91326FC7786007C6EBA /* YUMIManeConsumerAbstractNickRegardGovernancer.m */, - E8EEB91526FC7B35007C6EBA /* YUMIManeConsumerAbstractDesRegardGovernancer.h */, - E8EEB91626FC7B35007C6EBA /* YUMIManeConsumerAbstractDesRegardGovernancer.m */, - E8B846BD26FD827900A777FE /* YUMIManeConsumerAbstractAlbumRegardGovernancer.h */, - E8B846BE26FD827900A777FE /* YUMIManeConsumerAbstractAlbumRegardGovernancer.m */, - E8D34D6228084E40009C4835 /* YUMIManeConsumerAbstractPresentRamparatRegardGovernancer.h */, - E8D34D6328084E40009C4835 /* YUMIManeConsumerAbstractPresentRamparatRegardGovernancer.m */, - E8998D892859CB6A00C68558 /* YUMIManeConsumerAbstractPresentRamparatMetroRegardGovernancer.h */, - E8998D8A2859CB6A00C68558 /* YUMIManeConsumerAbstractPresentRamparatMetroRegardGovernancer.m */, - 1464C5EB29A4784F00AF7C94 /* YUMIManeSimpleConsumerAbstractRegardGovernancer.h */, - 1464C5EC29A4784F00AF7C94 /* YUMIManeSimpleConsumerAbstractRegardGovernancer.m */, - 1464C5EE29A49DDD00AF7C94 /* YUMIManeSimpleConsumerAbstractIntelligencerRegard.h */, - 1464C5EF29A49DDD00AF7C94 /* YUMIManeSimpleConsumerAbstractIntelligencerRegard.m */, + E88B5CBF26FB407B00DA9178 /* XPMineUserInfoViewController.h */, + E88B5CC026FB407B00DA9178 /* XPMineUserInfoViewController.m */, + E8D34D4528080295009C4835 /* XPMineUserDataViewController.h */, + E8D34D4628080295009C4835 /* XPMineUserDataViewController.m */, + E8EEB90426FC5772007C6EBA /* XPMineUserInfoEditViewController.h */, + E8EEB90526FC5772007C6EBA /* XPMineUserInfoEditViewController.m */, + E8EEB91226FC7786007C6EBA /* XPMineUserInfoNickViewController.h */, + E8EEB91326FC7786007C6EBA /* XPMineUserInfoNickViewController.m */, + E8EEB91526FC7B35007C6EBA /* XPMineUserInfoDesViewController.h */, + E8EEB91626FC7B35007C6EBA /* XPMineUserInfoDesViewController.m */, + E8B846BD26FD827900A777FE /* XPMineUserInfoAlbumViewController.h */, + E8B846BE26FD827900A777FE /* XPMineUserInfoAlbumViewController.m */, + E8D34D6228084E40009C4835 /* XPMineUserInfoGiftWallViewController.h */, + E8D34D6328084E40009C4835 /* XPMineUserInfoGiftWallViewController.m */, + E8998D892859CB6A00C68558 /* XPMineUserInfoGiftWallSubViewController.h */, + E8998D8A2859CB6A00C68558 /* XPMineUserInfoGiftWallSubViewController.m */, + 1464C5EB29A4784F00AF7C94 /* XPMineSimpleUserInfoViewController.h */, + 1464C5EC29A4784F00AF7C94 /* XPMineSimpleUserInfoViewController.m */, + 1464C5EE29A49DDD00AF7C94 /* XPMineSimpleUserInfoHeaderView.h */, + 1464C5EF29A49DDD00AF7C94 /* XPMineSimpleUserInfoHeaderView.m */, ); path = MineInfo; sourceTree = ""; @@ -7982,16 +7736,16 @@ E88B5CC226FB429C00DA9178 /* MineInfo */ = { isa = PBXGroup; children = ( - E8EEB8FC26FC2DF8007C6EBA /* YUMIManeConsumerAbstractCustomNevRegard.h */, - E8EEB8FD26FC2DF8007C6EBA /* YUMIManeConsumerAbstractCustomNevRegard.m */, - E88B5CC326FB42B000DA9178 /* YUMIManeConsumerAbstractIntelligencerRegard.h */, - E88B5CC426FB42B000DA9178 /* YUMIManeConsumerAbstractIntelligencerRegard.m */, - E8EEB91B26FC9D58007C6EBA /* YUMIManeConsumerAbstractDateRegard.h */, - E8EEB91C26FC9D58007C6EBA /* YUMIManeConsumerAbstractDateRegard.m */, - E873EB07280960990071030D /* YUMIManeConsumerAbstractReputationSolitaireRegard.h */, - E873EB08280960990071030D /* YUMIManeConsumerAbstractReputationSolitaireRegard.m */, - E8998D832859B4FA00C68558 /* YUMIManeConsumerAbstractPresentRegard.h */, - E8998D842859B4FA00C68558 /* YUMIManeConsumerAbstractPresentRegard.m */, + E8EEB8FC26FC2DF8007C6EBA /* XPMineUserInfoCustomNavView.h */, + E8EEB8FD26FC2DF8007C6EBA /* XPMineUserInfoCustomNavView.m */, + E88B5CC326FB42B000DA9178 /* XPMineUserInfoHeaderView.h */, + E88B5CC426FB42B000DA9178 /* XPMineUserInfoHeaderView.m */, + E8EEB91B26FC9D58007C6EBA /* XPMineUserInfoDateView.h */, + E8EEB91C26FC9D58007C6EBA /* XPMineUserInfoDateView.m */, + E873EB07280960990071030D /* XPMineUserInfoVoiceCardView.h */, + E873EB08280960990071030D /* XPMineUserInfoVoiceCardView.m */, + E8998D832859B4FA00C68558 /* XPMineUserInfoGiftView.h */, + E8998D842859B4FA00C68558 /* XPMineUserInfoGiftView.m */, ); path = MineInfo; sourceTree = ""; @@ -7999,10 +7753,10 @@ E88C72962828F3410047FB2B /* Cell */ = { isa = PBXGroup; children = ( - E88C72972828F3620047FB2B /* YUMIChamberManualBibliothecaTabulationRegardElement.h */, - E88C72982828F3620047FB2B /* YUMIChamberManualBibliothecaTabulationRegardElement.m */, - E88C729A2828F37D0047FB2B /* YUMIChamberManualBibliothecaDispossessTabulationRegardElement.h */, - E88C729B2828F37D0047FB2B /* YUMIChamberManualBibliothecaDispossessTabulationRegardElement.m */, + E88C72972828F3620047FB2B /* XPRoomMusicLibraryTableViewCell.h */, + E88C72982828F3620047FB2B /* XPRoomMusicLibraryTableViewCell.m */, + E88C729A2828F37D0047FB2B /* XPRoomMusicLibraryEmptyTableViewCell.h */, + E88C729B2828F37D0047FB2B /* XPRoomMusicLibraryEmptyTableViewCell.m */, ); path = Cell; sourceTree = ""; @@ -8010,12 +7764,12 @@ E88C729D2828FCB10047FB2B /* SubViews */ = { isa = PBXGroup; children = ( - E88C729E2828FCD40047FB2B /* YUMIManualBibliothecaDisportRegard.h */, - E88C729F2828FCD40047FB2B /* YUMIManualBibliothecaDisportRegard.m */, - E88C72A1282917590047FB2B /* YUMIChamberManualReputationInstanllingRegard.h */, - E88C72A2282917590047FB2B /* YUMIChamberManualReputationInstanllingRegard.m */, - E88C72A4282921D60047FB2B /* YUMIChamberBackManualDisporterRegard.h */, - E88C72A5282921D60047FB2B /* YUMIChamberBackManualDisporterRegard.m */, + E88C729E2828FCD40047FB2B /* XPMusicLibraryPlayView.h */, + E88C729F2828FCD40047FB2B /* XPMusicLibraryPlayView.m */, + E88C72A1282917590047FB2B /* XPRoomMusicVoiceSettingView.h */, + E88C72A2282917590047FB2B /* XPRoomMusicVoiceSettingView.m */, + E88C72A4282921D60047FB2B /* XPRoomBackMusicPlayerView.h */, + E88C72A5282921D60047FB2B /* XPRoomBackMusicPlayerView.m */, ); path = SubViews; sourceTree = ""; @@ -8023,18 +7777,18 @@ E88E4A7D297673C600019A50 /* View */ = { isa = PBXGroup; children = ( - 18F404B5276095D700A6C548 /* InterlocutionChatLimitRegard.h */, - 18F404B6276095D700A6C548 /* InterlocutionChatLimitRegard.m */, - E86E79D128A4E94E006DAF48 /* InterlocutionVentureRegard.h */, - E86E79D228A4E94E006DAF48 /* InterlocutionVentureRegard.m */, - E8D55C9E281186D6006935A5 /* InterlocutionVocalmusicReflectionRegard.h */, - E8D55C9F281186D6006935A5 /* InterlocutionVocalmusicReflectionRegard.m */, - E8E20BDC28164D3A0033B688 /* InterlocutionNevRegard.h */, - E8E20BDD28164D3A0033B688 /* InterlocutionNevRegard.m */, - E88E4A7E297673DC00019A50 /* InterlocutionNevEnergeticRegard.h */, - E88E4A7F297673DC00019A50 /* InterlocutionNevEnergeticRegard.m */, - E885D5372977D10E004DC088 /* InterlocutionInstanllingConsumerRegard.h */, - E885D5382977D10E004DC088 /* InterlocutionInstanllingConsumerRegard.m */, + 18F404B5276095D700A6C548 /* SessionChatLimitView.h */, + 18F404B6276095D700A6C548 /* SessionChatLimitView.m */, + E86E79D128A4E94E006DAF48 /* SessionRiskView.h */, + E86E79D228A4E94E006DAF48 /* SessionRiskView.m */, + E8D55C9E281186D6006935A5 /* SessionAudioRecordView.h */, + E8D55C9F281186D6006935A5 /* SessionAudioRecordView.m */, + E8E20BDC28164D3A0033B688 /* SessionNavView.h */, + E8E20BDD28164D3A0033B688 /* SessionNavView.m */, + E88E4A7E297673DC00019A50 /* SessionNavLiveView.h */, + E88E4A7F297673DC00019A50 /* SessionNavLiveView.m */, + E885D5372977D10E004DC088 /* SessionSettingUserView.h */, + E885D5382977D10E004DC088 /* SessionSettingUserView.m */, ); path = View; sourceTree = ""; @@ -8042,20 +7796,20 @@ E896EF912771AA6C00AD2CC1 /* Friend */ = { isa = PBXGroup; children = ( - E896EF9A2771AE6B00AD2CC1 /* YUMIManeFanaticsRegardGovernancer.h */, - E896EF9B2771AE6B00AD2CC1 /* YUMIManeFanaticsRegardGovernancer.m */, - E896EF9D2771AE7B00AD2CC1 /* YUMIManeConsiderationRegardGovernancer.h */, - E896EF9E2771AE7B00AD2CC1 /* YUMIManeConsiderationRegardGovernancer.m */, - E896EFA02771AE9400AD2CC1 /* YUMIManeAssistantRegardGovernancer.h */, - E896EFA12771AE9400AD2CC1 /* YUMIManeAssistantRegardGovernancer.m */, - E84CBCDF28436D3C00D43221 /* YUMIManeContactRegardGovernancer.h */, - E84CBCE028436D3C00D43221 /* YUMIManeContactRegardGovernancer.m */, - E8F65C1D286998C9009BB5B9 /* YUMIManeParaticipationRegardGovernancer.h */, - E8F65C1E286998C9009BB5B9 /* YUMIManeParaticipationRegardGovernancer.m */, - E84CBCE2284372D800D43221 /* YUMIChamberHalfCommunicationRegard.h */, - E84CBCE3284372D800D43221 /* YUMIChamberHalfCommunicationRegard.m */, - E8DAC5AA2858305A00012CFD /* YUMIChamberCommunicationIntumesceRegard.h */, - E8DAC5AB2858305A00012CFD /* YUMIChamberCommunicationIntumesceRegard.m */, + E896EF9A2771AE6B00AD2CC1 /* XPMineFansViewController.h */, + E896EF9B2771AE6B00AD2CC1 /* XPMineFansViewController.m */, + E896EF9D2771AE7B00AD2CC1 /* XPMineAttentionViewController.h */, + E896EF9E2771AE7B00AD2CC1 /* XPMineAttentionViewController.m */, + E896EFA02771AE9400AD2CC1 /* XPMineFriendViewController.h */, + E896EFA12771AE9400AD2CC1 /* XPMineFriendViewController.m */, + E84CBCDF28436D3C00D43221 /* XPMineContactViewController.h */, + E84CBCE028436D3C00D43221 /* XPMineContactViewController.m */, + E8F65C1D286998C9009BB5B9 /* XPMineShareViewController.h */, + E8F65C1E286998C9009BB5B9 /* XPMineShareViewController.m */, + E84CBCE2284372D800D43221 /* XPRoomHalfMessageView.h */, + E84CBCE3284372D800D43221 /* XPRoomHalfMessageView.m */, + E8DAC5AA2858305A00012CFD /* XPRoomMessageBubbleView.h */, + E8DAC5AB2858305A00012CFD /* XPRoomMessageBubbleView.m */, ); path = Friend; sourceTree = ""; @@ -8063,14 +7817,14 @@ E896EFA32771AEC500AD2CC1 /* Friend */ = { isa = PBXGroup; children = ( - E896EFA42771AEDD00AD2CC1 /* YUMIManeFanaticsTabulationRegardElement.h */, - E896EFA52771AEDD00AD2CC1 /* YUMIManeFanaticsTabulationRegardElement.m */, - E896EFA72771AEEC00AD2CC1 /* YUMIManeConsiderationTabulationRegardElement.h */, - E896EFA82771AEEC00AD2CC1 /* YUMIManeConsiderationTabulationRegardElement.m */, - E896EFAA2771AEFE00AD2CC1 /* YUMIManeAssistantTabulationRegardElement.h */, - E896EFAB2771AEFE00AD2CC1 /* YUMIManeAssistantTabulationRegardElement.m */, - E896EFAD2771AF0F00AD2CC1 /* YUMIManeAssistantDispossessTabulationRegardElement.h */, - E896EFAE2771AF0F00AD2CC1 /* YUMIManeAssistantDispossessTabulationRegardElement.m */, + E896EFA42771AEDD00AD2CC1 /* XPMineFansTableViewCell.h */, + E896EFA52771AEDD00AD2CC1 /* XPMineFansTableViewCell.m */, + E896EFA72771AEEC00AD2CC1 /* XPMineAttentionTableViewCell.h */, + E896EFA82771AEEC00AD2CC1 /* XPMineAttentionTableViewCell.m */, + E896EFAA2771AEFE00AD2CC1 /* XPMineFriendTableViewCell.h */, + E896EFAB2771AEFE00AD2CC1 /* XPMineFriendTableViewCell.m */, + E896EFAD2771AF0F00AD2CC1 /* XPMineFriendEmptyTableViewCell.h */, + E896EFAE2771AF0F00AD2CC1 /* XPMineFriendEmptyTableViewCell.m */, ); path = Friend; sourceTree = ""; @@ -8078,8 +7832,8 @@ E8998D772859782C00C68558 /* SVGA */ = { isa = PBXGroup; children = ( - E8998D782859784200C68558 /* YUMISVGADisporter.h */, - E8998D792859784200C68558 /* YUMISVGADisporter.m */, + E8998D782859784200C68558 /* XPSVGAPlayer.h */, + E8998D792859784200C68558 /* XPSVGAPlayer.m */, ); path = SVGA; sourceTree = ""; @@ -8096,8 +7850,8 @@ E899C68D2750DA3C00E189E5 /* CustomMessage */ = { isa = PBXGroup; children = ( - E833ED0B274FAD1C00A2463B /* XCombatickConsumerMatrix.h */, - E833ED0C274FAD1C00A2463B /* XCombatickConsumerMatrix.m */, + E833ED0B274FAD1C00A2463B /* XPKickUserModel.h */, + E833ED0C274FAD1C00A2463B /* XPKickUserModel.m */, ); path = CustomMessage; sourceTree = ""; @@ -8105,8 +7859,8 @@ E89D60B7271D6417001F8895 /* Model */ = { isa = PBXGroup; children = ( - E80487632717DDD9008595F2 /* YUMIChamberParrotProvision.h */, - E80487642717DDD9008595F2 /* YUMIChamberParrotProvision.m */, + E80487632717DDD9008595F2 /* XPRoomMenuItem.h */, + E80487642717DDD9008595F2 /* XPRoomMenuItem.m */, ); path = Model; sourceTree = ""; @@ -8114,99 +7868,14 @@ E89DA6612700590A008483C1 /* IAPHelper */ = { isa = PBXGroup; children = ( - E89DA66227005931008483C1 /* YUMIIAPFacilitater.h */, - E89DA66327005932008483C1 /* YUMIIAPFacilitater.m */, - E89DA66527006443008483C1 /* ReindictStorage.h */, - E89DA66627006443008483C1 /* ReindictStorage.m */, + E89DA66227005931008483C1 /* XPIAPHelper.h */, + E89DA66327005932008483C1 /* XPIAPHelper.m */, + E89DA66527006443008483C1 /* RechargeStorage.h */, + E89DA66627006443008483C1 /* RechargeStorage.m */, ); path = IAPHelper; sourceTree = ""; }; - E8A03DED276303BA0098D9EA /* Cell */ = { - isa = PBXGroup; - children = ( - E8A03DEE276303D40098D9EA /* YUMIConfectioneryTimberRateTabulationRegardElement.h */, - E8A03DEF276303D40098D9EA /* YUMIConfectioneryTimberRateTabulationRegardElement.m */, - E8A03DF42763367F0098D9EA /* YUMIConfectioneryTimberDispossessableRegardElement.h */, - E8A03DF52763367F0098D9EA /* YUMIConfectioneryTimberDispossessableRegardElement.m */, - 9B9DD948281BC17600DBA903 /* YUMIConfectioneryTimberFurthaerPreadominantElement.h */, - 9B9DD949281BC17600DBA903 /* YUMIConfectioneryTimberFurthaerPreadominantElement.m */, - E8AFF7E7298CBCCE00FBDE32 /* XPCandyTreeRecordTableViewCell.h */, - E8AFF7E8298CBCCE00FBDE32 /* XPCandyTreeRecordTableViewCell.m */, - E8AFF7F0298CF29400FBDE32 /* XPCandyTreeRuleTableViewCell.h */, - E8AFF7F1298CF29400FBDE32 /* XPCandyTreeRuleTableViewCell.m */, - ); - path = Cell; - sourceTree = ""; - }; - E8A1E4462761F8EA00B294CA /* CandyTree */ = { - isa = PBXGroup; - children = ( - E8A1E44B2761F93600B294CA /* Model */, - E8A1E44A2761F92800B294CA /* Api */, - E8A1E4492761F92100B294CA /* View */, - E8A1E4482761F91200B294CA /* Presenter */, - E8A1E4472761F90700B294CA /* Protocol */, - ); - path = CandyTree; - sourceTree = ""; - }; - E8A1E4472761F90700B294CA /* Protocol */ = { - isa = PBXGroup; - children = ( - E8A1E4582762095100B294CA /* FBCCandyTreeCeremony.h */, - ); - path = Protocol; - sourceTree = ""; - }; - E8A1E4482761F91200B294CA /* Presenter */ = { - isa = PBXGroup; - children = ( - E8A1E4552762092700B294CA /* YUMIConfectioneryTimberExternalizer.h */, - E8A1E4562762092700B294CA /* YUMIConfectioneryTimberExternalizer.m */, - ); - path = Presenter; - sourceTree = ""; - }; - E8A1E4492761F92100B294CA /* View */ = { - isa = PBXGroup; - children = ( - E8AFF7F3298CF4FD00FBDE32 /* SubViews */, - E8A03DED276303BA0098D9EA /* Cell */, - E8A1E44C2761F98600B294CA /* YUMIConfectioneryTimberRegardGovernancer.h */, - E8A1E44D2761F98600B294CA /* YUMIConfectioneryTimberRegardGovernancer.m */, - ); - path = View; - sourceTree = ""; - }; - E8A1E44A2761F92800B294CA /* Api */ = { - isa = PBXGroup; - children = ( - E8A1E44F2762082A00B294CA /* Api+CandyTree.h */, - E8A1E4502762082A00B294CA /* Api+CandyTree.m */, - ); - path = Api; - sourceTree = ""; - }; - E8A1E44B2761F93600B294CA /* Model */ = { - isa = PBXGroup; - children = ( - E8A1E452276208E500B294CA /* ConfectioneryTimberAbstractMatrix.h */, - E8A1E453276208E500B294CA /* ConfectioneryTimberAbstractMatrix.m */, - E8A03DF1276328FC0098D9EA /* ConfectioneryTimberReflectionMatrix.h */, - E8A03DF2276328FC0098D9EA /* ConfectioneryTimberReflectionMatrix.m */, - E8A03DF727634A590098D9EA /* ConfectioneryTimberConsequentMatrix.h */, - E8A03DF827634A590098D9EA /* ConfectioneryTimberConsequentMatrix.m */, - E8DEC990276441AA0078CB70 /* YUMIConfectioneryTimberBrightnessMatrix.h */, - E8DEC991276441AA0078CB70 /* YUMIConfectioneryTimberBrightnessMatrix.m */, - E8F63CBC298BC90700B338BA /* CandyTreeMoreItemModel.h */, - E8F63CBD298BC90700B338BA /* CandyTreeMoreItemModel.m */, - E8AFF7EA298CE2B700FBDE32 /* CandyTreeGiftModel.h */, - E8AFF7EB298CE2B700FBDE32 /* CandyTreeGiftModel.m */, - ); - path = Model; - sourceTree = ""; - }; E8A1E45C276220B100B294CA /* Resources */ = { isa = PBXGroup; children = ( @@ -8229,7 +7898,7 @@ E8A1F78E290641E50099C952 /* Protocol */ = { isa = PBXGroup; children = ( - E8A1F7982906427D0099C952 /* FBCChamberFurthaerPlayCeremony.h */, + E8A1F7982906427D0099C952 /* XPRoomMorePlayProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -8237,8 +7906,8 @@ E8A1F78F290641EB0099C952 /* Presenter */ = { isa = PBXGroup; children = ( - E8A1F7952906426B0099C952 /* YUMIChamberFurthaerDisportExternalizer.h */, - E8A1F7962906426B0099C952 /* YUMIChamberFurthaerDisportExternalizer.m */, + E8A1F7952906426B0099C952 /* XPRoomMorePlayPresenter.h */, + E8A1F7962906426B0099C952 /* XPRoomMorePlayPresenter.m */, ); path = Presenter; sourceTree = ""; @@ -8247,8 +7916,8 @@ isa = PBXGroup; children = ( E8A1F799290644C20099C952 /* Cell */, - E8A1F792290642500099C952 /* YUMIChamberFurthaerDisportRegardGovernancer.h */, - E8A1F793290642500099C952 /* YUMIChamberFurthaerDisportRegardGovernancer.m */, + E8A1F792290642500099C952 /* XPRoomMorePlayViewController.h */, + E8A1F793290642500099C952 /* XPRoomMorePlayViewController.m */, ); path = View; sourceTree = ""; @@ -8256,8 +7925,8 @@ E8A1F791290642040099C952 /* Model */ = { isa = PBXGroup; children = ( - 9BAC92F028E6A05600147DD8 /* YUMIChamberImportpriseDisportMatrix.h */, - 9BAC92F128E6A05600147DD8 /* YUMIChamberImportpriseDisportMatrix.m */, + 9BAC92F028E6A05600147DD8 /* XPRoomActivityPlayModel.h */, + 9BAC92F128E6A05600147DD8 /* XPRoomActivityPlayModel.m */, ); path = Model; sourceTree = ""; @@ -8265,8 +7934,8 @@ E8A1F799290644C20099C952 /* Cell */ = { isa = PBXGroup; children = ( - E8A1F79A290644DC0099C952 /* YUMIChamberFurthaerDisportAssembletionRegardElement.h */, - E8A1F79B290644DC0099C952 /* YUMIChamberFurthaerDisportAssembletionRegardElement.m */, + E8A1F79A290644DC0099C952 /* XPRoomMorePlayCollectionViewCell.h */, + E8A1F79B290644DC0099C952 /* XPRoomMorePlayCollectionViewCell.m */, ); path = Cell; sourceTree = ""; @@ -8286,7 +7955,7 @@ E8A30BDC28534673003B4873 /* Protocol */ = { isa = PBXGroup; children = ( - E8A30BF028534B03003B4873 /* FBCInterlocutionDiscoveryStrangeCeremony.h */, + E8A30BF028534B03003B4873 /* XPSessionFindNewProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -8294,8 +7963,8 @@ E8A30BDD2853467B003B4873 /* Presenter */ = { isa = PBXGroup; children = ( - E8A30BEC28534AB1003B4873 /* YUMIInterlocutionDiscoveryStrangeExternalizer.h */, - E8A30BED28534AB1003B4873 /* YUMIInterlocutionDiscoveryStrangeExternalizer.m */, + E8A30BEC28534AB1003B4873 /* XPSessionFindNewPresenter.h */, + E8A30BED28534AB1003B4873 /* XPSessionFindNewPresenter.m */, ); path = Presenter; sourceTree = ""; @@ -8305,8 +7974,8 @@ children = ( E8A30BE528534A3A003B4873 /* Cell */, E8A30BE428534A2D003B4873 /* View */, - E8A30BE128534A28003B4873 /* YUMIInterlocutionDiscoveryStrangeRegardGovernancer.h */, - E8A30BE228534A28003B4873 /* YUMIInterlocutionDiscoveryStrangeRegardGovernancer.m */, + E8A30BE128534A28003B4873 /* XPSessionFindNewViewController.h */, + E8A30BE228534A28003B4873 /* XPSessionFindNewViewController.m */, ); path = View; sourceTree = ""; @@ -8323,12 +7992,12 @@ E8A30BE02853469C003B4873 /* Model */ = { isa = PBXGroup; children = ( - E8A30BF428534B35003B4873 /* DiscoveryStrangeConsumerAbstractMatrix.h */, - E8A30BF528534B35003B4873 /* DiscoveryStrangeConsumerAbstractMatrix.m */, - E86A16C32856DBEC004228B8 /* DiscoveryStrangeBewelcometoStatementMatrix.h */, - E86A16C42856DBEC004228B8 /* DiscoveryStrangeBewelcometoStatementMatrix.m */, - E8E0DAE7285C2E8C00566A2F /* DiscoveryStrangeBewelcometoCommunicationMatrix.h */, - E8E0DAE8285C2E8C00566A2F /* DiscoveryStrangeBewelcometoCommunicationMatrix.m */, + E8A30BF428534B35003B4873 /* FindNewUserInfoModel.h */, + E8A30BF528534B35003B4873 /* FindNewUserInfoModel.m */, + E86A16C32856DBEC004228B8 /* FindNewGreetListModel.h */, + E86A16C42856DBEC004228B8 /* FindNewGreetListModel.m */, + E8E0DAE7285C2E8C00566A2F /* FindNewGreetMessageModel.h */, + E8E0DAE8285C2E8C00566A2F /* FindNewGreetMessageModel.m */, ); path = Model; sourceTree = ""; @@ -8336,12 +8005,12 @@ E8A30BE428534A2D003B4873 /* View */ = { isa = PBXGroup; children = ( - E8A30BE928534A96003B4873 /* YUMIInterlocutionDiscoveryStrangeFiltrateRegard.h */, - E8A30BEA28534A96003B4873 /* YUMIInterlocutionDiscoveryStrangeFiltrateRegard.m */, - E86A16BD2856D4D5004228B8 /* YUMIInterlocutionDiscoveryStrangeBewelcometoStatementRegard.h */, - E86A16BE2856D4D5004228B8 /* YUMIInterlocutionDiscoveryStrangeBewelcometoStatementRegard.m */, - E8E0DAE4285C280E00566A2F /* YUMIInterlocutionDiscoveryStrangePrecautiousRegard.h */, - E8E0DAE5285C280E00566A2F /* YUMIInterlocutionDiscoveryStrangePrecautiousRegard.m */, + E8A30BE928534A96003B4873 /* XPSessionFindNewFiltrateView.h */, + E8A30BEA28534A96003B4873 /* XPSessionFindNewFiltrateView.m */, + E86A16BD2856D4D5004228B8 /* XPSessionFindNewGreetListView.h */, + E86A16BE2856D4D5004228B8 /* XPSessionFindNewGreetListView.m */, + E8E0DAE4285C280E00566A2F /* XPSessionFindNewAlertView.h */, + E8E0DAE5285C280E00566A2F /* XPSessionFindNewAlertView.m */, ); path = View; sourceTree = ""; @@ -8349,12 +8018,12 @@ E8A30BE528534A3A003B4873 /* Cell */ = { isa = PBXGroup; children = ( - E8A30BE628534A63003B4873 /* YUMIInterlocutionDiscoveryStrangeTabulationRegardElement.h */, - E8A30BE728534A63003B4873 /* YUMIInterlocutionDiscoveryStrangeTabulationRegardElement.m */, - E8A30BF728534E48003B4873 /* YUMIInterlocutionDiscoveryStrangeDispossessTabulationRegardElement.h */, - E8A30BF828534E48003B4873 /* YUMIInterlocutionDiscoveryStrangeDispossessTabulationRegardElement.m */, - E86A16C02856D635004228B8 /* YUMIInterlocutionDiscoveryStrangeBewelcometoTabulationRegardElement.h */, - E86A16C12856D635004228B8 /* YUMIInterlocutionDiscoveryStrangeBewelcometoTabulationRegardElement.m */, + E8A30BE628534A63003B4873 /* XPSessionFindNewTableViewCell.h */, + E8A30BE728534A63003B4873 /* XPSessionFindNewTableViewCell.m */, + E8A30BF728534E48003B4873 /* XPSessionFindNewEmptyTableViewCell.h */, + E8A30BF828534E48003B4873 /* XPSessionFindNewEmptyTableViewCell.m */, + E86A16C02856D635004228B8 /* XPSessionFindNewGreetTableViewCell.h */, + E86A16C12856D635004228B8 /* XPSessionFindNewGreetTableViewCell.m */, ); path = Cell; sourceTree = ""; @@ -8374,14 +8043,14 @@ E8A3538728FE5C9B0014A784 /* Model */ = { isa = PBXGroup; children = ( - E8A3538F28FE5F0F0014A784 /* DesirePresentAbstractMatrix.h */, - E8A3539028FE5F0F0014A784 /* DesirePresentAbstractMatrix.m */, - E8A3539228FE605F0014A784 /* DesireExternalizeConsumerMatrix.h */, - E8A3539328FE605F0014A784 /* DesireExternalizeConsumerMatrix.m */, - E89DCF5B2900E5EE001647EC /* DesirePresentHistoryMatrix.h */, - E89DCF5C2900E5EE001647EC /* DesirePresentHistoryMatrix.m */, - E823E38C290BE8BD00EADD86 /* DesirePresentAbstractRefurbishMatrix.h */, - E823E38D290BE8BD00EADD86 /* DesirePresentAbstractRefurbishMatrix.m */, + E8A3538F28FE5F0F0014A784 /* WishGiftInfoModel.h */, + E8A3539028FE5F0F0014A784 /* WishGiftInfoModel.m */, + E8A3539228FE605F0014A784 /* WishGiftUserModel.h */, + E8A3539328FE605F0014A784 /* WishGiftUserModel.m */, + E89DCF5B2900E5EE001647EC /* WishGiftHistoryModel.h */, + E89DCF5C2900E5EE001647EC /* WishGiftHistoryModel.m */, + E823E38C290BE8BD00EADD86 /* WishGiftInfoUpdateModel.h */, + E823E38D290BE8BD00EADD86 /* WishGiftInfoUpdateModel.m */, ); path = Model; sourceTree = ""; @@ -8389,7 +8058,7 @@ E8A3538828FE5CA70014A784 /* Protocol */ = { isa = PBXGroup; children = ( - E8A3539828FE7C4F0014A784 /* FBCDesirePresentCeremony.h */, + E8A3539828FE7C4F0014A784 /* XPWishGiftProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -8397,8 +8066,8 @@ E8A3538928FE5CB00014A784 /* Presenter */ = { isa = PBXGroup; children = ( - E8A3539528FE7C250014A784 /* YUMIDesirePresentExternalizer.h */, - E8A3539628FE7C250014A784 /* YUMIDesirePresentExternalizer.m */, + E8A3539528FE7C250014A784 /* XPWishGiftPresenter.h */, + E8A3539628FE7C250014A784 /* XPWishGiftPresenter.m */, ); path = Presenter; sourceTree = ""; @@ -8408,14 +8077,14 @@ children = ( E8A3539D28FE84470014A784 /* Cell */, E8A3539C28FE84400014A784 /* View */, - E8A3539928FE840A0014A784 /* YUMIDesirePresentRegardGovernancer.h */, - E8A3539A28FE840A0014A784 /* YUMIDesirePresentRegardGovernancer.m */, - E8A353A128FE90F60014A784 /* YUMIDesirePresentCreateRegardGovernancer.h */, - E8A353A228FE90F60014A784 /* YUMIDesirePresentCreateRegardGovernancer.m */, - E8A3540228FEB7100014A784 /* YUMIDesirePresentHistoryRegardGovernancer.h */, - E8A3540328FEB7100014A784 /* YUMIDesirePresentHistoryRegardGovernancer.m */, - E8A3540528FEBD460014A784 /* YUMIDesirePresentCreateProvisionRegardGovernancer.h */, - E8A3540628FEBD460014A784 /* YUMIDesirePresentCreateProvisionRegardGovernancer.m */, + E8A3539928FE840A0014A784 /* XPWishGiftViewController.h */, + E8A3539A28FE840A0014A784 /* XPWishGiftViewController.m */, + E8A353A128FE90F60014A784 /* XPWishGiftCreateViewController.h */, + E8A353A228FE90F60014A784 /* XPWishGiftCreateViewController.m */, + E8A3540228FEB7100014A784 /* XPWishGiftHistoryViewController.h */, + E8A3540328FEB7100014A784 /* XPWishGiftHistoryViewController.m */, + E8A3540528FEBD460014A784 /* XPWishGiftCreateItemViewController.h */, + E8A3540628FEBD460014A784 /* XPWishGiftCreateItemViewController.m */, ); path = View; sourceTree = ""; @@ -8432,14 +8101,14 @@ E8A3539C28FE84400014A784 /* View */ = { isa = PBXGroup; children = ( - E8A3539E28FE84670014A784 /* YUMIDesirePresentAbstractRegard.h */, - E8A3539F28FE84670014A784 /* YUMIDesirePresentAbstractRegard.m */, - E8A3540828FEC0510014A784 /* YUMIDesirePresentStatementRegard.h */, - E8A3540928FEC0510014A784 /* YUMIDesirePresentStatementRegard.m */, - E89DCF5828FFF1AD001647EC /* YUMIDesirePresentDivisionRegard.h */, - E89DCF5928FFF1AD001647EC /* YUMIDesirePresentDivisionRegard.m */, - E89DCF5E2900F4FB001647EC /* YUMIDesirePresentImportRegard.h */, - E89DCF5F2900F4FB001647EC /* YUMIDesirePresentImportRegard.m */, + E8A3539E28FE84670014A784 /* XPWishGiftInfoView.h */, + E8A3539F28FE84670014A784 /* XPWishGiftInfoView.m */, + E8A3540828FEC0510014A784 /* XPWishGiftListView.h */, + E8A3540928FEC0510014A784 /* XPWishGiftListView.m */, + E89DCF5828FFF1AD001647EC /* XPWishGiftSectionView.h */, + E89DCF5928FFF1AD001647EC /* XPWishGiftSectionView.m */, + E89DCF5E2900F4FB001647EC /* XPWishGiftEnterView.h */, + E89DCF5F2900F4FB001647EC /* XPWishGiftEnterView.m */, ); path = View; sourceTree = ""; @@ -8447,12 +8116,12 @@ E8A3539D28FE84470014A784 /* Cell */ = { isa = PBXGroup; children = ( - E8A353FF28FEAC5E0014A784 /* YUMIDesirePresentTabulationRegardElement.h */, - E8A3540028FEAC5E0014A784 /* YUMIDesirePresentTabulationRegardElement.m */, - E89DCF5228FFEC67001647EC /* YUMIDesirePresentHistoryTabulationRegardElement.h */, - E89DCF5328FFEC67001647EC /* YUMIDesirePresentHistoryTabulationRegardElement.m */, - E89DCF5528FFF076001647EC /* YUMIDesirePresentDispossessTabulationRegardElement.h */, - E89DCF5628FFF076001647EC /* YUMIDesirePresentDispossessTabulationRegardElement.m */, + E8A353FF28FEAC5E0014A784 /* XPWishGiftTableViewCell.h */, + E8A3540028FEAC5E0014A784 /* XPWishGiftTableViewCell.m */, + E89DCF5228FFEC67001647EC /* XPWishGiftHistoryTableViewCell.h */, + E89DCF5328FFEC67001647EC /* XPWishGiftHistoryTableViewCell.m */, + E89DCF5528FFF076001647EC /* XPWishGiftEmptyTableViewCell.h */, + E89DCF5628FFF076001647EC /* XPWishGiftEmptyTableViewCell.m */, ); path = Cell; sourceTree = ""; @@ -8460,12 +8129,12 @@ E8AC720A26F435AF007D6E91 /* UIImageView */ = { isa = PBXGroup; children = ( - E8AC720E26F43955007D6E91 /* UIIndicateConstant.h */, - E8AC720F26F43955007D6E91 /* UIIndicateConstant.m */, - 1808072E27315E8E001FD836 /* NetIndicateRegard.h */, - 1808072F27315E8E001FD836 /* NetIndicateRegard.m */, - 18A61BD5274F7F6900A09A54 /* NetIndicateDisposition.h */, - 18A61BD6274F7F6900A09A54 /* NetIndicateDisposition.m */, + E8AC720E26F43955007D6E91 /* UIImageConstant.h */, + E8AC720F26F43955007D6E91 /* UIImageConstant.m */, + 1808072E27315E8E001FD836 /* NetImageView.h */, + 1808072F27315E8E001FD836 /* NetImageView.m */, + 18A61BD5274F7F6900A09A54 /* NetImageConfig.h */, + 18A61BD6274F7F6900A09A54 /* NetImageConfig.m */, ); path = UIImageView; sourceTree = ""; @@ -8485,50 +8154,49 @@ E8AEAED8271413530017FCE0 /* View */ = { isa = PBXGroup; children = ( - E80E096F2A40B5DD00CD2BE7 /* CandyTree */, - 9B208A372779C1EF00F9E54A /* FaceView */, - E8788931273A53B000BF1D57 /* SendGiftView */, - E8A1F78D290641D80099C952 /* MorePlay */, - E8A3538628FE5C5B0014A784 /* WishGift */, - 9B2F72CD28E45A1C0000E4FA /* QuickMessageView */, - 9BA812D328BF52A500783EA7 /* SendRedPacket */, - E8751E5128A629EB0056EF44 /* Sailing */, - 9BFE0D8F289903F600F53C24 /* TaskTip */, - 9B9BBF80288FBF93004E2E74 /* NewUserGift */, - 9B7D904A287BC4FC0033A45E /* AnchorCycleView */, - E87AE8C2284E1A6B00CAFBB3 /* NewUserGreet */, - E8E859E628264F0000EE4857 /* BackMusic */, - 9B6E8570281AAD260041A321 /* RoomRecommend */, - 9B1B72A228002F76003FACE9 /* AnchorPK */, - E801273827E322D700BAC3F2 /* RoomPK */, - 9B7B605827BB52FD0070BB72 /* AnchorView */, E880B396278BD3D800A83B0D /* AcrossRoomPK */, - E8412F9A2779BAC2006E1101 /* Setting */, - E84150B027747A7400A7F548 /* FirstRecharge */, - E81C1B1327705EF00020D1E4 /* ArrangeMic */, - 9BC5C915277C809E007C8719 /* ReleaseRadio */, - E8A1E4462761F8EA00B294CA /* CandyTree */, - E8DEC9962764A51F0078CB70 /* MoreView */, - E838D99D275E1B6C0079E0B5 /* AnimationView */, - E82325EA274E2D52003A3332 /* UserCard */, - E8AEAEE827141ACC0017FCE0 /* ChamberIntelligencerRegard */, - E8AEAEEA27141ACC0017FCE0 /* PhaseRegard */, - E8AEAEE627141ACC0017FCE0 /* MessageContainerView */, E8AEAEE527141ACC0017FCE0 /* ActivityContainerView */, + 9B7D904A287BC4FC0033A45E /* AnchorCycleView */, + 9B1B72A228002F76003FACE9 /* AnchorPK */, + 9B7B605827BB52FD0070BB72 /* AnchorView */, + E838D99D275E1B6C0079E0B5 /* AnimationView */, + E81C1B1327705EF00020D1E4 /* ArrangeMic */, + E8E859E628264F0000EE4857 /* BackMusic */, E8AEAEE727141ACC0017FCE0 /* BaseUIContainerView */, + 2331C1822A60F32D00E1D940 /* CandyTree */, + 9B208A372779C1EF00F9E54A /* FaceView */, + E84150B027747A7400A7F548 /* FirstRecharge */, E8AEAEE927141ACC0017FCE0 /* MenuContainerView */, - E8AEAED4271412EC0017FCE0 /* YUMIChamberRegardGovernancer.h */, - E8AEAED5271412EC0017FCE0 /* YUMIChamberRegardGovernancer.m */, - E816C11327608A7500C84014 /* YUMIChamberMiniExecutive.h */, - E816C11427608A7500C84014 /* YUMIChamberMiniExecutive.m */, - 181D7F222727DB1E00B7C059 /* ChamberHostRepresendtation.h */, - 180806F827298F9B001FD836 /* ChamberGuestRepresendtation.h */, - 186F8B472733F2AE007A17BC /* MicroQueueCeremony.h */, - 1845C6412790320E00016EAC /* ChamberAnimationCeremony.h */, + E8AEAEE627141ACC0017FCE0 /* MessageContainerView */, + 186F8B472733F2AE007A17BC /* MicroQueueProtocol.h */, + E8A1F78D290641D80099C952 /* MorePlay */, + E8DEC9962764A51F0078CB70 /* MoreView */, + 9B9BBF80288FBF93004E2E74 /* NewUserGift */, + E87AE8C2284E1A6B00CAFBB3 /* NewUserGreet */, + 9B2F72CD28E45A1C0000E4FA /* QuickMessageView */, + 9BC5C915277C809E007C8719 /* ReleaseRadio */, + 1845C6412790320E00016EAC /* RoomAnimationProtocol.h */, + 180806F827298F9B001FD836 /* RoomGuestDelegate.h */, + E8AEAEE827141ACC0017FCE0 /* RoomHeaderView */, + 181D7F222727DB1E00B7C059 /* RoomHostDelegate.h */, + E801273827E322D700BAC3F2 /* RoomPK */, + 9B6E8570281AAD260041A321 /* RoomRecommend */, + E8751E5128A629EB0056EF44 /* Sailing */, + E8788931273A53B000BF1D57 /* SendGiftView */, + 9BA812D328BF52A500783EA7 /* SendRedPacket */, + E8412F9A2779BAC2006E1101 /* Setting */, + E8AEAEEA27141ACC0017FCE0 /* StageView */, + 9BFE0D8F289903F600F53C24 /* TaskTip */, 180806F92729A354001FD836 /* ThemeColor+Room.h */, 180806FA2729A354001FD836 /* ThemeColor+Room.m */, - E866B6E32759F96F009B002A /* YUMIMiniChamberRegard.h */, - E866B6E42759F96F009B002A /* YUMIMiniChamberRegard.m */, + E82325EA274E2D52003A3332 /* UserCard */, + E8A3538628FE5C5B0014A784 /* WishGift */, + E866B6E32759F96F009B002A /* XPMiniRoomView.h */, + E866B6E42759F96F009B002A /* XPMiniRoomView.m */, + E816C11327608A7500C84014 /* XPRoomMiniManager.h */, + E816C11427608A7500C84014 /* XPRoomMiniManager.m */, + E8AEAED4271412EC0017FCE0 /* XPRoomViewController.h */, + E8AEAED5271412EC0017FCE0 /* XPRoomViewController.m */, ); path = View; sourceTree = ""; @@ -8536,10 +8204,10 @@ E8AEAEE527141ACC0017FCE0 /* ActivityContainerView */ = { isa = PBXGroup; children = ( - E8AE427127153A3500BEEBB2 /* YUMIChamberImportpriseAccommodatedRegard.h */, - E8AE427227153A3500BEEBB2 /* YUMIChamberImportpriseAccommodatedRegard.m */, - 9BAC92EC28E6989400147DD8 /* YUMIChamberImportpriseDisportRegard.h */, - 9BAC92ED28E6989400147DD8 /* YUMIChamberImportpriseDisportRegard.m */, + E8AE427127153A3500BEEBB2 /* XPRoomActivityContainerView.h */, + E8AE427227153A3500BEEBB2 /* XPRoomActivityContainerView.m */, + 9BAC92EC28E6989400147DD8 /* XPRoomActivityPlayView.h */, + 9BAC92ED28E6989400147DD8 /* XPRoomActivityPlayView.m */, ); path = ActivityContainerView; sourceTree = ""; @@ -8550,8 +8218,8 @@ E84B0E47272801F6008818C6 /* Tool */, E84B0E432727EF2C008818C6 /* Model */, E84B0E3C2727EDD4008818C6 /* View */, - E8AEAEF127141C7C0017FCE0 /* YUMIChamberCommunicationAccommodatedRegard.h */, - E8AEAEF227141C7C0017FCE0 /* YUMIChamberCommunicationAccommodatedRegard.m */, + E8AEAEF127141C7C0017FCE0 /* XPRoomMessageContainerView.h */, + E8AEAEF227141C7C0017FCE0 /* XPRoomMessageContainerView.m */, ); path = MessageContainerView; sourceTree = ""; @@ -8559,89 +8227,66 @@ E8AEAEE727141ACC0017FCE0 /* BaseUIContainerView */ = { isa = PBXGroup; children = ( - E8AEAEEB27141AE20017FCE0 /* YUMIChamberBackAccommodatedRegard.h */, - E8AEAEEC27141AE20017FCE0 /* YUMIChamberBackAccommodatedRegard.m */, - E83953202769F33B00CF2F24 /* YUMIChamberFunctionAccommodatedRegard.h */, - E83953212769F33B00CF2F24 /* YUMIChamberFunctionAccommodatedRegard.m */, - E877A7EF27842B2F00EFACED /* YUMIChamberEngagementTissuePrecautiousRegard.h */, - E877A7F027842B2F00EFACED /* YUMIChamberEngagementTissuePrecautiousRegard.m */, - E877A7F227842EF800EFACED /* YUMIChamberEngagementVipUpwardsLoudspeakerRegard.h */, - E877A7F327842EF800EFACED /* YUMIChamberEngagementVipUpwardsLoudspeakerRegard.m */, - 9B86D88128192DC000494FCD /* YUMIChamberRateEntranceRegard.h */, - 9B86D88228192DC000494FCD /* YUMIChamberRateEntranceRegard.m */, - 9B044D9B282D2A6400DE4859 /* YUMIChamberKellegRateImportRegard.h */, - 9B044D9C282D2A6400DE4859 /* YUMIChamberKellegRateImportRegard.m */, + E8AEAEEB27141AE20017FCE0 /* XPRoomBackContainerView.h */, + E8AEAEEC27141AE20017FCE0 /* XPRoomBackContainerView.m */, + E83953202769F33B00CF2F24 /* XPRoomFunctionContainerView.h */, + E83953212769F33B00CF2F24 /* XPRoomFunctionContainerView.m */, + E877A7EF27842B2F00EFACED /* XPRoomDatingWebAlertView.h */, + E877A7F027842B2F00EFACED /* XPRoomDatingWebAlertView.m */, + E877A7F227842EF800EFACED /* XPRoomDatingVipUpMicView.h */, + E877A7F327842EF800EFACED /* XPRoomDatingVipUpMicView.m */, + 9B86D88128192DC000494FCD /* XPRoomRankEntranceView.h */, + 9B86D88228192DC000494FCD /* XPRoomRankEntranceView.m */, + 9B044D9B282D2A6400DE4859 /* XPRoomAnchorRankEnterView.h */, + 9B044D9C282D2A6400DE4859 /* XPRoomAnchorRankEnterView.m */, ); path = BaseUIContainerView; sourceTree = ""; }; - E8AEAEE827141ACC0017FCE0 /* ChamberIntelligencerRegard */ = { + E8AEAEE827141ACC0017FCE0 /* RoomHeaderView */ = { isa = PBXGroup; children = ( - E8AEAEF727141CA30017FCE0 /* ChamberIntelligencerRegard.h */, - E8AEAEF827141CA30017FCE0 /* ChamberIntelligencerRegard.m */, + E8AEAEF727141CA30017FCE0 /* RoomHeaderView.h */, + E8AEAEF827141CA30017FCE0 /* RoomHeaderView.m */, ); - path = ChamberIntelligencerRegard; + path = RoomHeaderView; sourceTree = ""; }; E8AEAEE927141ACC0017FCE0 /* MenuContainerView */ = { isa = PBXGroup; children = ( E89D60B7271D6417001F8895 /* Model */, - E8EE827B272B9A2300A17217 /* YUMIChamberDischargeEssayRegard.h */, - E8EE827C272B9A2300A17217 /* YUMIChamberDischargeEssayRegard.m */, - E8AEAEEE27141C430017FCE0 /* YUMIChamberParrotAccommodatedRegard.h */, - E8AEAEEF27141C430017FCE0 /* YUMIChamberParrotAccommodatedRegard.m */, + E8EE827B272B9A2300A17217 /* XPRoomSendTextView.h */, + E8EE827C272B9A2300A17217 /* XPRoomSendTextView.m */, + E8AEAEEE27141C430017FCE0 /* XPRoomMenuContainerView.h */, + E8AEAEEF27141C430017FCE0 /* XPRoomMenuContainerView.m */, ); path = MenuContainerView; sourceTree = ""; }; - E8AEAEEA27141ACC0017FCE0 /* PhaseRegard */ = { + E8AEAEEA27141ACC0017FCE0 /* StageView */ = { isa = PBXGroup; children = ( E874B88527215CFF003954B9 /* Model */, - E8680707271959090024F48F /* MiecreoscoopeRegard */, - 181D7F192726CE2A00B7C059 /* PhaseRegard.h */, - 181D7F1A2726CE2A00B7C059 /* PhaseRegard.m */, - 181D7F1F2727D9DB00B7C059 /* SocialPhaseRegard.h */, - 181D7F202727D9DB00B7C059 /* SocialPhaseRegard.m */, - E877A7E92783E24700EFACED /* EngagementPhaseRegard.h */, - E877A7EA2783E24700EFACED /* EngagementPhaseRegard.m */, - 9B0086C427BA392B0032BD2B /* KellegPhaseRegard.h */, - 9B0086C527BA392B0032BD2B /* KellegPhaseRegard.m */, - 9B2EA7BE2804037700ED17BF /* KellegCombatPhaseRegard.h */, - 9B2EA7BF2804037700ED17BF /* KellegCombatPhaseRegard.m */, + E8680707271959090024F48F /* MicroView */, + 181D7F192726CE2A00B7C059 /* StageView.h */, + 181D7F1A2726CE2A00B7C059 /* StageView.m */, + 181D7F1F2727D9DB00B7C059 /* SocialStageView.h */, + 181D7F202727D9DB00B7C059 /* SocialStageView.m */, + E877A7E92783E24700EFACED /* DatingStageView.h */, + E877A7EA2783E24700EFACED /* DatingStageView.m */, + 9B0086C427BA392B0032BD2B /* AnchorStageView.h */, + 9B0086C527BA392B0032BD2B /* AnchorStageView.m */, + 9B2EA7BE2804037700ED17BF /* AnchorPKStageView.h */, + 9B2EA7BF2804037700ED17BF /* AnchorPKStageView.m */, ); - path = PhaseRegard; - sourceTree = ""; - }; - E8AFF7F3298CF4FD00FBDE32 /* SubViews */ = { - isa = PBXGroup; - children = ( - E8A03DE02762FA000098D9EA /* YUMIConfectioneryTimberFurthaerRegard.h */, - E8A03DE12762FA000098D9EA /* YUMIConfectioneryTimberFurthaerRegard.m */, - E8A1E45927620F4900B294CA /* YUMIChamberHalfTissueRegard.h */, - E8A1E45A27620F4900B294CA /* YUMIChamberHalfTissueRegard.m */, - E8A03DE7276301CC0098D9EA /* YUMIConfectioneryRateAccommodatedRegard.h */, - E8A03DE8276301CC0098D9EA /* YUMIConfectioneryRateAccommodatedRegard.m */, - E8A03DEA276301EF0098D9EA /* YUMIConfectioneryTimberRateRegard.h */, - E8A03DEB276301EF0098D9EA /* YUMIConfectioneryTimberRateRegard.m */, - E8A03DFA276350A60098D9EA /* YUMIConfectioneryTimberPresentRegard.h */, - E8A03DFB276350A60098D9EA /* YUMIConfectioneryTimberPresentRegard.m */, - E8AFF7E4298CBB3200FBDE32 /* XPCandyTreeRecordView.h */, - E8AFF7E5298CBB3200FBDE32 /* XPCandyTreeRecordView.m */, - E8AFF7ED298CF0DD00FBDE32 /* XPCandyTreeRuleView.h */, - E8AFF7EE298CF0DD00FBDE32 /* XPCandyTreeRuleView.m */, - E8AFF7F4298CF52500FBDE32 /* XPCandyTreeRuleHeaderView.h */, - E8AFF7F5298CF52500FBDE32 /* XPCandyTreeRuleHeaderView.m */, - ); - path = SubViews; + path = StageView; sourceTree = ""; }; E8B3E8022848B828009746AB /* Protocol */ = { isa = PBXGroup; children = ( - 18E7B1AE26E8AD760064BC9B /* MainCeremony.h */, + 18E7B1AE26E8AD760064BC9B /* MainProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -8649,8 +8294,8 @@ E8B3E8032848B838009746AB /* Presenter */ = { isa = PBXGroup; children = ( - 18E7B1B026E8AF980064BC9B /* MainExternalizer.h */, - 18E7B1B126E8AF980064BC9B /* MainExternalizer.m */, + 18E7B1B026E8AF980064BC9B /* MainPresenter.h */, + 18E7B1B126E8AF980064BC9B /* MainPresenter.m */, ); path = Presenter; sourceTree = ""; @@ -8661,12 +8306,14 @@ 9BA3B40C293DD2E00071DF1C /* VersionUpdate */, 9BFB101C2897CC3300B3985E /* AnchorCard */, 9BE01AF42893E7E000B50299 /* Cell */, - 189DD53226DE255300AB55B1 /* TabbarRegardGovernancer.h */, - 189DD53326DE255300AB55B1 /* TabbarRegardGovernancer.m */, - 142721B029A7647F00C7C423 /* YUMIBlankRegardGovernancer.h */, - 142721B129A7647F00C7C423 /* YUMIBlankRegardGovernancer.m */, - 140A7F50299CC69000841594 /* YUMITabObstacle.h */, - 140A7F51299CC69000841594 /* YUMITabObstacle.m */, + 189DD53226DE255300AB55B1 /* TabbarViewController.h */, + 189DD53326DE255300AB55B1 /* TabbarViewController.m */, + 2331C0DA2A5E9E9000E1D940 /* PIFullScreenBannerAnimation.h */, + 2331C0DB2A5E9E9000E1D940 /* PIFullScreenBannerAnimation.m */, + 142721B029A7647F00C7C423 /* XPBlankViewController.h */, + 142721B129A7647F00C7C423 /* XPBlankViewController.m */, + 140A7F50299CC69000841594 /* XPTabBar.h */, + 140A7F51299CC69000841594 /* XPTabBar.m */, ); path = View; sourceTree = ""; @@ -8683,18 +8330,18 @@ E8B3E8062848B84F009746AB /* Model */ = { isa = PBXGroup; children = ( - E836456A2A40A33300E0DBE4 /* ManeCommunicationSolitaireStatementAbstractMatrix.h */, - E83645692A40A33300E0DBE4 /* ManeCommunicationSolitaireStatementAbstractMatrix.m */, - E8B3E8072848B871009746AB /* CallforConsumerAbstractMatrix.h */, - E8B3E8082848B871009746AB /* CallforConsumerAbstractMatrix.m */, - E8B3E80A2848BA40009746AB /* StrangeConsumerBewelcometoMatrix.h */, - E8B3E80B2848BA40009746AB /* StrangeConsumerBewelcometoMatrix.m */, - 9BE01AEE2893E31700B50299 /* StrangeConsumerReindictMatrix.h */, - 9BE01AEF2893E31700B50299 /* StrangeConsumerReindictMatrix.m */, - 9BFB10202897D68400B3985E /* YUMITabKellegSolitaireMatrix.h */, - 9BFB10212897D68400B3985E /* YUMITabKellegSolitaireMatrix.m */, - 9BA3B409293DCDFD0071DF1C /* YUMIVersionRefurbishMatrix.h */, - 9BA3B40A293DCDFD0071DF1C /* YUMIVersionRefurbishMatrix.m */, + E836456A2A40A33300E0DBE4 /* MineSkillCardListInfoModel.h */, + E83645692A40A33300E0DBE4 /* MineSkillCardListInfoModel.m */, + E8B3E8072848B871009746AB /* InviteUserInfoModel.h */, + E8B3E8082848B871009746AB /* InviteUserInfoModel.m */, + E8B3E80A2848BA40009746AB /* NewUserGreetModel.h */, + E8B3E80B2848BA40009746AB /* NewUserGreetModel.m */, + 9BE01AEE2893E31700B50299 /* NewUserRechargeModel.h */, + 9BE01AEF2893E31700B50299 /* NewUserRechargeModel.m */, + 9BFB10202897D68400B3985E /* XPTabAnchorCardModel.h */, + 9BFB10212897D68400B3985E /* XPTabAnchorCardModel.m */, + 9BA3B409293DCDFD0071DF1C /* XPVersionUpdateModel.h */, + 9BA3B40A293DCDFD0071DF1C /* XPVersionUpdateModel.m */, ); path = Model; sourceTree = ""; @@ -8702,34 +8349,34 @@ E8B825BC26E9E520009E8E9F /* Model */ = { isa = PBXGroup; children = ( - E81C27A926EF2D920031E639 /* ThirdConsumerAbstract.h */, - E81C27AA26EF2D920031E639 /* ThirdConsumerAbstract.m */, - E818DD1D2A48974300F163F7 /* SurmountAreaMatrix.h */, - E818DD1E2A48974300F163F7 /* SurmountAreaMatrix.m */, + E81C27A926EF2D920031E639 /* ThirdUserInfo.h */, + E81C27AA26EF2D920031E639 /* ThirdUserInfo.m */, + E818DD1D2A48974300F163F7 /* LoginAreaModel.h */, + E818DD1E2A48974300F163F7 /* LoginAreaModel.m */, ); path = Model; sourceTree = ""; }; - E8B846B926FD7BE600A777FE /* UpwardsloadIndicate */ = { + E8B846B926FD7BE600A777FE /* UploadImage */ = { isa = PBXGroup; children = ( - E8B846BA26FD7C1200A777FE /* UpwardsloadIndicate.h */, - E8B846BB26FD7C1200A777FE /* UpwardsloadIndicate.m */, + E8B846BA26FD7C1200A777FE /* UploadImage.h */, + E8B846BB26FD7C1200A777FE /* UploadImage.m */, ); - path = UpwardsloadIndicate; + path = UploadImage; sourceTree = ""; }; E8B846C826FDD79700A777FE /* Recharge */ = { isa = PBXGroup; children = ( - E8B846C926FDD7CD00A777FE /* YUMIManeReindictRegardGovernancer.h */, - E8B846CA26FDD7CD00A777FE /* YUMIManeReindictRegardGovernancer.m */, - 1464C5F129A4C18000AF7C94 /* YUMIIAPReindictRegardGovernancer.h */, - 1464C5F229A4C18000AF7C94 /* YUMIIAPReindictRegardGovernancer.m */, - 1464C5F429A4CA8C00AF7C94 /* YUMIIAPReindictAssembletionRegardElement.h */, - 1464C5F529A4CA8C00AF7C94 /* YUMIIAPReindictAssembletionRegardElement.m */, - 1464C5F729A4D00000AF7C94 /* YUMIIAPReindictIntelligencerRegard.h */, - 1464C5F829A4D00000AF7C94 /* YUMIIAPReindictIntelligencerRegard.m */, + E8B846C926FDD7CD00A777FE /* XPMineRechargeViewController.h */, + E8B846CA26FDD7CD00A777FE /* XPMineRechargeViewController.m */, + 1464C5F129A4C18000AF7C94 /* XPIAPRechargeViewController.h */, + 1464C5F229A4C18000AF7C94 /* XPIAPRechargeViewController.m */, + 1464C5F429A4CA8C00AF7C94 /* XPIAPRechargeCollectionViewCell.h */, + 1464C5F529A4CA8C00AF7C94 /* XPIAPRechargeCollectionViewCell.m */, + 1464C5F729A4D00000AF7C94 /* XPIAPRechargeHeaderView.h */, + 1464C5F829A4D00000AF7C94 /* XPIAPRechargeHeaderView.m */, ); path = Recharge; sourceTree = ""; @@ -8737,10 +8384,10 @@ E8B846CC26FDD93D00A777FE /* Recharge */ = { isa = PBXGroup; children = ( - E8B846CD26FDD96100A777FE /* YUMIManeRechageIntelligenceRegard.h */, - E8B846CE26FDD96100A777FE /* YUMIManeRechageIntelligenceRegard.m */, - E89DA67327009ACD008483C1 /* YUMIManeReindictNevRegard.h */, - E89DA67427009ACD008483C1 /* YUMIManeReindictNevRegard.m */, + E8B846CD26FDD96100A777FE /* XPMineRechageHeadView.h */, + E8B846CE26FDD96100A777FE /* XPMineRechageHeadView.m */, + E89DA67327009ACD008483C1 /* XPMineRechargeNavView.h */, + E89DA67427009ACD008483C1 /* XPMineRechargeNavView.m */, ); path = Recharge; sourceTree = ""; @@ -8748,8 +8395,8 @@ E8B846D026FDDBCD00A777FE /* Recharge */ = { isa = PBXGroup; children = ( - E8B846D126FDDBE600A777FE /* YUMIManeReindictTabulationRegardElement.h */, - E8B846D226FDDBE600A777FE /* YUMIManeReindictTabulationRegardElement.m */, + E8B846D126FDDBE600A777FE /* XPMineRechargeTableViewCell.h */, + E8B846D226FDDBE600A777FE /* XPMineRechargeTableViewCell.m */, ); path = Recharge; sourceTree = ""; @@ -8757,10 +8404,10 @@ E8B846D926FDE21900A777FE /* Recharge */ = { isa = PBXGroup; children = ( - E8B846DA26FDE24300A777FE /* ReindictStatementMatrix.h */, - E8B846DB26FDE24300A777FE /* ReindictStatementMatrix.m */, - E89DA67027008D59008483C1 /* RamparatetAbstractMatrix.h */, - E89DA67127008D59008483C1 /* RamparatetAbstractMatrix.m */, + E8B846DA26FDE24300A777FE /* RechargeListModel.h */, + E8B846DB26FDE24300A777FE /* RechargeListModel.m */, + E89DA67027008D59008483C1 /* WalletInfoModel.h */, + E89DA67127008D59008483C1 /* WalletInfoModel.m */, ); path = Recharge; sourceTree = ""; @@ -8768,12 +8415,12 @@ E8C1CD5F27D88E4900376F83 /* Model */ = { isa = PBXGroup; children = ( - E8C1CD6E27D894B800376F83 /* ChamberAcceptChampionProvisionMatrix.h */, - E8C1CD6F27D894B800376F83 /* ChamberAcceptChampionProvisionMatrix.m */, - E8C1CD7827D8B29E00376F83 /* ChamberAcceptAbstractMatrix.h */, - E8C1CD7927D8B29E00376F83 /* ChamberAcceptAbstractMatrix.m */, - E87C0A9E27D9DE6400CB2241 /* ChamberAcceptDischargeAbstractMatrix.h */, - E87C0A9F27D9DE6400CB2241 /* ChamberAcceptDischargeAbstractMatrix.m */, + E8C1CD6E27D894B800376F83 /* RoomFaceTitleItemModel.h */, + E8C1CD6F27D894B800376F83 /* RoomFaceTitleItemModel.m */, + E8C1CD7827D8B29E00376F83 /* RoomFaceInfoModel.h */, + E8C1CD7927D8B29E00376F83 /* RoomFaceInfoModel.m */, + E87C0A9E27D9DE6400CB2241 /* RoomFaceSendInfoModel.h */, + E87C0A9F27D9DE6400CB2241 /* RoomFaceSendInfoModel.m */, ); path = Model; sourceTree = ""; @@ -8782,8 +8429,8 @@ isa = PBXGroup; children = ( E8C1CD6727D8933A00376F83 /* Cell */, - E8C1CD6427D88EF800376F83 /* YUMIChamberAcceptRegardGovernancer.h */, - E8C1CD6527D88EF800376F83 /* YUMIChamberAcceptRegardGovernancer.m */, + E8C1CD6427D88EF800376F83 /* XPRoomFaceViewController.h */, + E8C1CD6527D88EF800376F83 /* XPRoomFaceViewController.m */, ); path = View; sourceTree = ""; @@ -8791,10 +8438,10 @@ E8C1CD6227D88E7900376F83 /* Presenter */ = { isa = PBXGroup; children = ( - E8C1CD7127D8A16500376F83 /* YUMIChamberAcceptTool.h */, - E8C1CD7227D8A16500376F83 /* YUMIChamberAcceptTool.m */, - E8C1CD7427D8AE3D00376F83 /* YUMIChamberAcceptExternalizer.h */, - E8C1CD7527D8AE3D00376F83 /* YUMIChamberAcceptExternalizer.m */, + E8C1CD7127D8A16500376F83 /* XPRoomFaceTool.h */, + E8C1CD7227D8A16500376F83 /* XPRoomFaceTool.m */, + E8C1CD7427D8AE3D00376F83 /* XPRoomFacePresenter.h */, + E8C1CD7527D8AE3D00376F83 /* XPRoomFacePresenter.m */, ); path = Presenter; sourceTree = ""; @@ -8802,7 +8449,7 @@ E8C1CD6327D88EA300376F83 /* Protocol */ = { isa = PBXGroup; children = ( - E8C1CD7727D8AE5600376F83 /* FBCChamberFaceCeremony.h */, + E8C1CD7727D8AE5600376F83 /* XPRoomFaceProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -8810,12 +8457,12 @@ E8C1CD6727D8933A00376F83 /* Cell */ = { isa = PBXGroup; children = ( - E8C1CD6827D8937800376F83 /* YUMIChamberAcceptAssembletionRegardElement.h */, - E8C1CD6927D8937800376F83 /* YUMIChamberAcceptAssembletionRegardElement.m */, - E8C1CD6B27D8938C00376F83 /* YUMIChamberAcceptChampionAssembletionRegardElement.h */, - E8C1CD6C27D8938C00376F83 /* YUMIChamberAcceptChampionAssembletionRegardElement.m */, - E87C0A9B27D9986700CB2241 /* YUMIChamberAcceptAssembletionFlowProgramming.h */, - E87C0A9C27D9986700CB2241 /* YUMIChamberAcceptAssembletionFlowProgramming.m */, + E8C1CD6827D8937800376F83 /* XPRoomFaceCollectionViewCell.h */, + E8C1CD6927D8937800376F83 /* XPRoomFaceCollectionViewCell.m */, + E8C1CD6B27D8938C00376F83 /* XPRoomFaceTitleCollectionViewCell.h */, + E8C1CD6C27D8938C00376F83 /* XPRoomFaceTitleCollectionViewCell.m */, + E87C0A9B27D9986700CB2241 /* XPRoomFaceCollectionFlowLayout.h */, + E87C0A9C27D9986700CB2241 /* XPRoomFaceCollectionFlowLayout.m */, ); path = Cell; sourceTree = ""; @@ -8823,8 +8470,8 @@ E8D34D57280821F3009C4835 /* UserInfo */ = { isa = PBXGroup; children = ( - E8D34D5828082357009C4835 /* ConsumerPresentRamparatAbstractMatrix.h */, - E8D34D5928082357009C4835 /* ConsumerPresentRamparatAbstractMatrix.m */, + E8D34D5828082357009C4835 /* UserGiftWallInfoModel.h */, + E8D34D5928082357009C4835 /* UserGiftWallInfoModel.m */, ); path = UserInfo; sourceTree = ""; @@ -8832,8 +8479,8 @@ E8D55C9A281131F1006935A5 /* SessionToolBar */ = { isa = PBXGroup; children = ( - E8D55C9B28113218006935A5 /* CommunicationParrotMatrix.h */, - E8D55C9C28113218006935A5 /* CommunicationParrotMatrix.m */, + E8D55C9B28113218006935A5 /* MessageMenuModel.h */, + E8D55C9C28113218006935A5 /* MessageMenuModel.m */, ); path = SessionToolBar; sourceTree = ""; @@ -8841,24 +8488,24 @@ E8D7D747282BA1C20007D7BD /* Cell */ = { isa = PBXGroup; children = ( - E8D7D749282BA1EC0007D7BD /* YUMISeparationsTabulationRegardElement.h */, - E8D7D74A282BA1EC0007D7BD /* YUMISeparationsTabulationRegardElement.m */, - E8098CAC282E07C00090B9F0 /* YUMISeparationsDispossessTabulationRegardElement.h */, - E8098CAD282E07C00090B9F0 /* YUMISeparationsDispossessTabulationRegardElement.m */, - E81A654A28351D9900F55894 /* YUMISeparationsMotifAssembletionRegardElement.h */, - E81A654B28351D9900F55894 /* YUMISeparationsMotifAssembletionRegardElement.m */, - E878B8592835F3BF00E22DCF /* YUMISeparationsCoactiveTabulationRegardElement.h */, - E878B85A2835F3BF00E22DCF /* YUMISeparationsCoactiveTabulationRegardElement.m */, - E852D73C28631C18001465ED /* YUMISeparationsJudgementTabulationRegardElement.h */, - E852D73D28631C18001465ED /* YUMISeparationsJudgementTabulationRegardElement.m */, - E852D73F2863249F001465ED /* YUMISeparationsReplicationTabulationRegardElement.h */, - E852D7402863249F001465ED /* YUMISeparationsReplicationTabulationRegardElement.m */, - E854103728646A00005CFD9F /* YUMISeparationsReplicationFurthaerTabulationRegardElement.h */, - E854103828646A00005CFD9F /* YUMISeparationsReplicationFurthaerTabulationRegardElement.m */, - E818E34D286EDF72005EDF68 /* YUMISeparationsAnnounceAssembletionRegardElement.h */, - E818E34E286EDF72005EDF68 /* YUMISeparationsAnnounceAssembletionRegardElement.m */, - 149839C5299E0B9F00F82CBF /* YUMIMomentStatementAssembletionRegardElement.h */, - 149839C6299E0B9F00F82CBF /* YUMIMomentStatementAssembletionRegardElement.m */, + E8D7D749282BA1EC0007D7BD /* XPMonentsTableViewCell.h */, + E8D7D74A282BA1EC0007D7BD /* XPMonentsTableViewCell.m */, + E8098CAC282E07C00090B9F0 /* XPMonentsEmptyTableViewCell.h */, + E8098CAD282E07C00090B9F0 /* XPMonentsEmptyTableViewCell.m */, + E81A654A28351D9900F55894 /* XPMonentsTopicCollectionViewCell.h */, + E81A654B28351D9900F55894 /* XPMonentsTopicCollectionViewCell.m */, + E878B8592835F3BF00E22DCF /* XPMonentsInteractiveTableViewCell.h */, + E878B85A2835F3BF00E22DCF /* XPMonentsInteractiveTableViewCell.m */, + E852D73C28631C18001465ED /* XPMonentsCommentTableViewCell.h */, + E852D73D28631C18001465ED /* XPMonentsCommentTableViewCell.m */, + E852D73F2863249F001465ED /* XPMonentsReplyTableViewCell.h */, + E852D7402863249F001465ED /* XPMonentsReplyTableViewCell.m */, + E854103728646A00005CFD9F /* XPMonentsReplyMoreTableViewCell.h */, + E854103828646A00005CFD9F /* XPMonentsReplyMoreTableViewCell.m */, + E818E34D286EDF72005EDF68 /* XPMonentsPublishCollectionViewCell.h */, + E818E34E286EDF72005EDF68 /* XPMonentsPublishCollectionViewCell.m */, + 149839C5299E0B9F00F82CBF /* XPMomentListCollectionViewCell.h */, + 149839C6299E0B9F00F82CBF /* XPMomentListCollectionViewCell.m */, ); path = Cell; sourceTree = ""; @@ -8866,26 +8513,26 @@ E8D7D748282BA1C90007D7BD /* SubViews */ = { isa = PBXGroup; children = ( - E895017E282CAC49007E459A /* YUMISeparationsConsumerAbstractRegard.h */, - E895017F282CAC49007E459A /* YUMISeparationsConsumerAbstractRegard.m */, - E8950181282CAC6A007E459A /* YUMISeparationsAppearanceRegard.h */, - E8950182282CAC6A007E459A /* YUMISeparationsAppearanceRegard.m */, - E8950184282CAC80007E459A /* YUMISeparationsTooObstacleRegard.h */, - E8950185282CAC80007E459A /* YUMISeparationsTooObstacleRegard.m */, - E8098CAF282E86EF0090B9F0 /* YUMISeparationsSatisfactionRegard.h */, - E8098CB0282E86EF0090B9F0 /* YUMISeparationsSatisfactionRegard.m */, - E895018A282D0701007E459A /* YUMISepartionMotifRegard.h */, - E895018B282D0701007E459A /* YUMISepartionMotifRegard.m */, - E81A654728351B9500F55894 /* YUMISeparationsEncourageIntelligencerRegard.h */, - E81A654828351B9500F55894 /* YUMISeparationsEncourageIntelligencerRegard.m */, - E8B9842B28AB77F10022D026 /* YUMISeparationsAnnounceMotifRegard.h */, - E8B9842C28AB77F10022D026 /* YUMISeparationsAnnounceMotifRegard.m */, - E8B9842E28AB90200022D026 /* YUMISepartionMotifStatementRegard.h */, - E8B9842F28AB90200022D026 /* YUMISepartionMotifStatementRegard.m */, - E8B9843428ABA8B40022D026 /* YUMISeparationAnnounceSuccessRegard.h */, - E8B9843528ABA8B40022D026 /* YUMISeparationAnnounceSuccessRegard.m */, - E8AB631128ADDCF20023B0D2 /* YUMISeparationsMotifIntelligencerRegard.h */, - E8AB631228ADDCF20023B0D2 /* YUMISeparationsMotifIntelligencerRegard.m */, + E895017E282CAC49007E459A /* XPMonentsUserInfoView.h */, + E895017F282CAC49007E459A /* XPMonentsUserInfoView.m */, + E8950181282CAC6A007E459A /* XPMonentsPhotoView.h */, + E8950182282CAC6A007E459A /* XPMonentsPhotoView.m */, + E8950184282CAC80007E459A /* XPMonentsTooBarView.h */, + E8950185282CAC80007E459A /* XPMonentsTooBarView.m */, + E8098CAF282E86EF0090B9F0 /* XPMonentsContentView.h */, + E8098CB0282E86EF0090B9F0 /* XPMonentsContentView.m */, + E895018A282D0701007E459A /* XPMoentsTopicView.h */, + E895018B282D0701007E459A /* XPMoentsTopicView.m */, + E81A654728351B9500F55894 /* XPMonentsRecommendHeaderView.h */, + E81A654828351B9500F55894 /* XPMonentsRecommendHeaderView.m */, + E8B9842B28AB77F10022D026 /* XPMonentsPublishTopicView.h */, + E8B9842C28AB77F10022D026 /* XPMonentsPublishTopicView.m */, + E8B9842E28AB90200022D026 /* XPMoentsTopicListView.h */, + E8B9842F28AB90200022D026 /* XPMoentsTopicListView.m */, + E8B9843428ABA8B40022D026 /* XPMonentPublishSuccessView.h */, + E8B9843528ABA8B40022D026 /* XPMonentPublishSuccessView.m */, + E8AB631128ADDCF20023B0D2 /* XPMonentsTopicHeaderView.h */, + E8AB631228ADDCF20023B0D2 /* XPMonentsTopicHeaderView.m */, ); path = SubViews; sourceTree = ""; @@ -8893,8 +8540,8 @@ E8DBB6FA27B63CC300AA285D /* LittleGame */ = { isa = PBXGroup; children = ( - E8DBB6FB27B63CE000AA285D /* TraitCompetitionMiecreoscoopeRegard.h */, - E8DBB6FC27B63CE000AA285D /* TraitCompetitionMiecreoscoopeRegard.m */, + E8DBB6FB27B63CE000AA285D /* LittleGameMicroView.h */, + E8DBB6FC27B63CE000AA285D /* LittleGameMicroView.m */, ); path = LittleGame; sourceTree = ""; @@ -8914,7 +8561,7 @@ E8DEC9972764A5340078CB70 /* Protocol */ = { isa = PBXGroup; children = ( - E8DEC9A52764A6760078CB70 /* FBCFurthaerMenuCeremony.h */, + E8DEC9A52764A6760078CB70 /* XPMoreMenuProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -8922,8 +8569,8 @@ E8DEC9982764A5400078CB70 /* Presenter */ = { isa = PBXGroup; children = ( - E8DEC9A22764A6600078CB70 /* YUMIFurthaerParrotExternalizer.h */, - E8DEC9A32764A6600078CB70 /* YUMIFurthaerParrotExternalizer.m */, + E8DEC9A22764A6600078CB70 /* XPMoreMenuPresenter.h */, + E8DEC9A32764A6600078CB70 /* XPMoreMenuPresenter.m */, ); path = Presenter; sourceTree = ""; @@ -8932,10 +8579,10 @@ isa = PBXGroup; children = ( E8DEC9A92764A6AF0078CB70 /* Cell */, - E8DEC99C2764A5B60078CB70 /* YUMIChamberFurthaerParrotRegardGovernancer.h */, - E8DEC99D2764A5B60078CB70 /* YUMIChamberFurthaerParrotRegardGovernancer.m */, - E8412F9427795E34006E1101 /* YUMIChamberCallforFanaticsRegard.h */, - E8412F9527795E34006E1101 /* YUMIChamberCallforFanaticsRegard.m */, + E8DEC99C2764A5B60078CB70 /* XPRoomMoreMenuViewController.h */, + E8DEC99D2764A5B60078CB70 /* XPRoomMoreMenuViewController.m */, + E8412F9427795E34006E1101 /* XPRoomInviteFansView.h */, + E8412F9527795E34006E1101 /* XPRoomInviteFansView.m */, ); path = View; sourceTree = ""; @@ -8952,10 +8599,10 @@ E8DEC99B2764A5620078CB70 /* Model */ = { isa = PBXGroup; children = ( - E8DEC99F2764A5D20078CB70 /* YUMIChamberFurthaerProvisionMatrix.h */, - E8DEC9A02764A5D20078CB70 /* YUMIChamberFurthaerProvisionMatrix.m */, - E8412F9727799249006E1101 /* CallforFanaticsMatrix.h */, - E8412F9827799249006E1101 /* CallforFanaticsMatrix.m */, + E8DEC99F2764A5D20078CB70 /* XPRoomMoreItemModel.h */, + E8DEC9A02764A5D20078CB70 /* XPRoomMoreItemModel.m */, + E8412F9727799249006E1101 /* InviteFansModel.h */, + E8412F9827799249006E1101 /* InviteFansModel.m */, ); path = Model; sourceTree = ""; @@ -8963,8 +8610,8 @@ E8DEC9A92764A6AF0078CB70 /* Cell */ = { isa = PBXGroup; children = ( - E8DEC9AA2764A6CD0078CB70 /* YUMIChamberFurthaerParrotAssembletionRegardElement.h */, - E8DEC9AB2764A6CD0078CB70 /* YUMIChamberFurthaerParrotAssembletionRegardElement.m */, + E8DEC9AA2764A6CD0078CB70 /* XPRoomMoreMenuCollectionViewCell.h */, + E8DEC9AB2764A6CD0078CB70 /* XPRoomMoreMenuCollectionViewCell.m */, ); path = Cell; sourceTree = ""; @@ -8972,30 +8619,30 @@ E8E20BDF281695430033B688 /* Setting */ = { isa = PBXGroup; children = ( - E8AC721126F46ADD007D6E91 /* YUMIManeInstanllingRegardGovernancer.h */, - E8AC721226F46ADD007D6E91 /* YUMIManeInstanllingRegardGovernancer.m */, - E8AC721F26F47E23007D6E91 /* YUMIManeAboutUsRegardGovernancer.h */, - E8AC722026F47E23007D6E91 /* YUMIManeAboutUsRegardGovernancer.m */, - E8AC722226F47E5E007D6E91 /* YUMIManeFeedbackRegardGovernancer.h */, - E8AC722326F47E5E007D6E91 /* YUMIManeFeedbackRegardGovernancer.m */, - E8AC722A26F49580007D6E91 /* YUMIManeNotificaRegardGovernancer.h */, - E8AC722B26F49580007D6E91 /* YUMIManeNotificaRegardGovernancer.m */, - E824543E26F58F9400BE8163 /* YUMIManeIntersectPwordRegardGovernancer.h */, - E824543F26F58F9400BE8163 /* YUMIManeIntersectPwordRegardGovernancer.m */, - E824544926F5BBB800BE8163 /* YUMIManeModifIntersectPwordRegardGovernancer.h */, - E824544A26F5BBB800BE8163 /* YUMIManeModifIntersectPwordRegardGovernancer.m */, - E824545426F5E51900BE8163 /* YUMIManeValidationIdentityRegardGovernancer.h */, - E824545526F5E51900BE8163 /* YUMIManeValidationIdentityRegardGovernancer.m */, - E824545F26F5F4E400BE8163 /* YUMIManeReassociationIntersectPwordRegardGovernancer.h */, - E824546026F5F4E400BE8163 /* YUMIManeReassociationIntersectPwordRegardGovernancer.m */, - E8E20BE0281695800033B688 /* YUMIManeSurmountCiphercodeRegardGovernancer.h */, - E8E20BE1281695800033B688 /* YUMIManeSurmountCiphercodeRegardGovernancer.m */, - E87C54C02823CD6F0051AA11 /* YUMIManeReassociationSurmountPwordRegardGovernancer.h */, - E87C54C12823CD6F0051AA11 /* YUMIManeReassociationSurmountPwordRegardGovernancer.m */, - E8E20BEA2816A5B90033B688 /* YUMIManeBlackStatementRegardGovernancer.h */, - E8E20BEB2816A5B90033B688 /* YUMIManeBlackStatementRegardGovernancer.m */, - 140A818B299CFF1C00841594 /* YUMIVendorCallRegardGovernancer.h */, - 140A818C299CFF1C00841594 /* YUMIVendorCallRegardGovernancer.m */, + E8AC721126F46ADD007D6E91 /* XPMineSettingViewController.h */, + E8AC721226F46ADD007D6E91 /* XPMineSettingViewController.m */, + E8AC721F26F47E23007D6E91 /* XPMineAboutUsViewController.h */, + E8AC722026F47E23007D6E91 /* XPMineAboutUsViewController.m */, + E8AC722226F47E5E007D6E91 /* XPMineFeedbackViewController.h */, + E8AC722326F47E5E007D6E91 /* XPMineFeedbackViewController.m */, + E8AC722A26F49580007D6E91 /* XPMineNotificaViewController.h */, + E8AC722B26F49580007D6E91 /* XPMineNotificaViewController.m */, + E824543E26F58F9400BE8163 /* XPMinePayPwdViewController.h */, + E824543F26F58F9400BE8163 /* XPMinePayPwdViewController.m */, + E824544926F5BBB800BE8163 /* XPMineModifPayPwdViewController.h */, + E824544A26F5BBB800BE8163 /* XPMineModifPayPwdViewController.m */, + E824545426F5E51900BE8163 /* XPMineVerifIdentityViewController.h */, + E824545526F5E51900BE8163 /* XPMineVerifIdentityViewController.m */, + E824545F26F5F4E400BE8163 /* XPMineResetPayPwdViewController.h */, + E824546026F5F4E400BE8163 /* XPMineResetPayPwdViewController.m */, + E8E20BE0281695800033B688 /* XPMineLoginPasswordViewController.h */, + E8E20BE1281695800033B688 /* XPMineLoginPasswordViewController.m */, + E87C54C02823CD6F0051AA11 /* XPMineResetLoginPwdViewController.h */, + E87C54C12823CD6F0051AA11 /* XPMineResetLoginPwdViewController.m */, + E8E20BEA2816A5B90033B688 /* XPMineBlackListViewController.h */, + E8E20BEB2816A5B90033B688 /* XPMineBlackListViewController.m */, + 140A818B299CFF1C00841594 /* XPVendorCallViewController.h */, + 140A818C299CFF1C00841594 /* XPVendorCallViewController.m */, ); path = Setting; sourceTree = ""; @@ -9032,18 +8679,18 @@ E8D34D57280821F3009C4835 /* UserInfo */, 9BD9A18127A0F110004186FE /* Visitor */, E8B846D926FDE21900A777FE /* Recharge */, - E8E70D9026F2F60C00F03460 /* YUMIManeProvisionMatrix.h */, - E8E70D9126F2F60C00F03460 /* YUMIManeProvisionMatrix.m */, - E8AC721726F46E0B007D6E91 /* YUMIManeInstanllingProvisionMatrix.h */, - E8AC721826F46E0B007D6E91 /* YUMIManeInstanllingProvisionMatrix.m */, - E8AC722D26F49610007D6E91 /* YUMIManeNotificationProvisionMatrix.h */, - E8AC722E26F49610007D6E91 /* YUMIManeNotificationProvisionMatrix.m */, - E8AC723826F49AAE007D6E91 /* YUMIManeNotifyStatus.h */, - E8AC723926F49AAE007D6E91 /* YUMIManeNotifyStatus.m */, - E8EEB90A26FC5EBC007C6EBA /* YUMIManeConsumerAbstractCompileMatrix.h */, - E8EEB90B26FC5EBC007C6EBA /* YUMIManeConsumerAbstractCompileMatrix.m */, - 9B734F74288A92FB00CBDAA9 /* YUMIManeFuntionProvisionMatrix.h */, - 9B734F75288A92FB00CBDAA9 /* YUMIManeFuntionProvisionMatrix.m */, + E8E70D9026F2F60C00F03460 /* XPMineItemModel.h */, + E8E70D9126F2F60C00F03460 /* XPMineItemModel.m */, + E8AC721726F46E0B007D6E91 /* XPMineSettingItemModel.h */, + E8AC721826F46E0B007D6E91 /* XPMineSettingItemModel.m */, + E8AC722D26F49610007D6E91 /* XPMineNotificationItemModel.h */, + E8AC722E26F49610007D6E91 /* XPMineNotificationItemModel.m */, + E8AC723826F49AAE007D6E91 /* XPMineNotifyStatus.h */, + E8AC723926F49AAE007D6E91 /* XPMineNotifyStatus.m */, + E8EEB90A26FC5EBC007C6EBA /* XPMineUserInfoEditModel.h */, + E8EEB90B26FC5EBC007C6EBA /* XPMineUserInfoEditModel.m */, + 9B734F74288A92FB00CBDAA9 /* XPMineFuntionItemModel.h */, + 9B734F75288A92FB00CBDAA9 /* XPMineFuntionItemModel.m */, ); path = Model; sourceTree = ""; @@ -9051,6 +8698,7 @@ E8E70D7126F2EB4900F03460 /* View */ = { isa = PBXGroup; children = ( + 2331C12F2A5EB71000E1D940 /* Noble */, E84A2E7E2A527DF800D6AF8A /* IncomeRecord */, E85E7B732A4EC99200B6D00A /* GiveDiamond */, E85E7A3B2A4EB0D200B6D00A /* Guild */, @@ -9060,30 +8708,30 @@ E83953232769FF2400CF2F24 /* DressUp */, E8E70D8026F2F3C500F03460 /* Cell */, E8E70D7F26F2F39000F03460 /* SubViews */, - E8E70D7526F2F15100F03460 /* YUMIManeRegardGovernancer.h */, - E8E70D7626F2F15100F03460 /* YUMIManeRegardGovernancer.m */, - 9BD8D4E128911E9900AE03FF /* YUMIManeAssembleChamberStatementRegardGovernancer.h */, - 9BD8D4E228911E9900AE03FF /* YUMIManeAssembleChamberStatementRegardGovernancer.m */, - 9BD9A17A27A0EE24004186FE /* YUMIManeVacationerRegardGovernancer.h */, - 9BD9A17B27A0EE24004186FE /* YUMIManeVacationerRegardGovernancer.m */, - 9BD2ECCC288F829600F5CD9A /* YUMIManeTerminalImpressionRegardGovernancer.h */, - 9BD2ECCD288F829600F5CD9A /* YUMIManeTerminalImpressionRegardGovernancer.m */, - 9B1B729328002099003FACE9 /* YUMIManeFanaticsSquadRegardGovernancer.h */, - 9B1B729428002099003FACE9 /* YUMIManeFanaticsSquadRegardGovernancer.m */, - 14A6034729A3567200D2A6A5 /* YUMISimpleManeRegardGovernancer.h */, - 14A6034829A3567200D2A6A5 /* YUMISimpleManeRegardGovernancer.m */, - 14A6034A29A35EE600D2A6A5 /* YUMIManeProvisionTabulationRegardElement.h */, - 14A6034B29A35EE600D2A6A5 /* YUMIManeProvisionTabulationRegardElement.m */, - 14A6034D29A36D8300D2A6A5 /* YUMISimpleManeIntelligencerRegard.h */, - 14A6034E29A36D8300D2A6A5 /* YUMISimpleManeIntelligencerRegard.m */, - 1464C5E829A45FC300AF7C94 /* YUMIButton.h */, - 1464C5E929A45FC300AF7C94 /* YUMIButton.m */, + E8E70D7526F2F15100F03460 /* XPMineViewController.h */, + E8E70D7626F2F15100F03460 /* XPMineViewController.m */, + 9BD8D4E128911E9900AE03FF /* XPMineCollectRoomListViewController.h */, + 9BD8D4E228911E9900AE03FF /* XPMineCollectRoomListViewController.m */, + 9BD9A17A27A0EE24004186FE /* XPMineVisitorViewController.h */, + 9BD9A17B27A0EE24004186FE /* XPMineVisitorViewController.m */, + 9BD2ECCC288F829600F5CD9A /* XPMineFootPrintViewController.h */, + 9BD2ECCD288F829600F5CD9A /* XPMineFootPrintViewController.m */, + 9B1B729328002099003FACE9 /* XPMineFansTeamViewController.h */, + 9B1B729428002099003FACE9 /* XPMineFansTeamViewController.m */, + 14A6034729A3567200D2A6A5 /* XPSimpleMineViewController.h */, + 14A6034829A3567200D2A6A5 /* XPSimpleMineViewController.m */, + 14A6034A29A35EE600D2A6A5 /* XPMineItemTableViewCell.h */, + 14A6034B29A35EE600D2A6A5 /* XPMineItemTableViewCell.m */, + 14A6034D29A36D8300D2A6A5 /* XPSimpleMineHeaderView.h */, + 14A6034E29A36D8300D2A6A5 /* XPSimpleMineHeaderView.m */, + 1464C5E829A45FC300AF7C94 /* XPButton.h */, + 1464C5E929A45FC300AF7C94 /* XPButton.m */, E8B846C826FDD79700A777FE /* Recharge */, E88B5CBE26FB404800DA9178 /* MineInfo */, - 9BAA5FEB277A1BBE007453F3 /* YUMIPrivacyRegardGovernancer.h */, - 9BAA5FEC277A1BBE007453F3 /* YUMIPrivacyRegardGovernancer.m */, - 9BAA5FEE277A23F4007453F3 /* YUMIPermissionsRegardGovernancer.h */, - 9BAA5FEF277A23F4007453F3 /* YUMIPermissionsRegardGovernancer.m */, + 9BAA5FEB277A1BBE007453F3 /* XPPrivacyViewController.h */, + 9BAA5FEC277A1BBE007453F3 /* XPPrivacyViewController.m */, + 9BAA5FEE277A23F4007453F3 /* XPPermissionsViewController.h */, + 9BAA5FEF277A23F4007453F3 /* XPPermissionsViewController.m */, ); path = View; sourceTree = ""; @@ -9091,54 +8739,54 @@ E8E70D7226F2EB5100F03460 /* Presenter */ = { isa = PBXGroup; children = ( - E8E70D7826F2F16600F03460 /* YUMIManeExternalize.h */, - E8E70D7926F2F16600F03460 /* YUMIManeExternalize.m */, - E8AC721A26F4720B007D6E91 /* YUMIManeInstanllingExternalize.h */, - E8AC721B26F4720B007D6E91 /* YUMIManeInstanllingExternalize.m */, - E8098CB2282E97550090B9F0 /* YUMIManeBlackStatementExternalizer.h */, - E8098CB3282E97550090B9F0 /* YUMIManeBlackStatementExternalizer.m */, - E8AC722526F482A4007D6E91 /* YUMIManeFeedbackExternalizer.h */, - E8AC722626F482A4007D6E91 /* YUMIManeFeedbackExternalizer.m */, - E8AC723326F49939007D6E91 /* YUMIManeNotificaExternalizer.h */, - E8AC723426F49939007D6E91 /* YUMIManeNotificaExternalizer.m */, - E824544426F5934600BE8163 /* YUMIManeIntersectPwordExternalizer.h */, - E824544526F5934600BE8163 /* YUMIManeIntersectPwordExternalizer.m */, - E824544F26F5CE6E00BE8163 /* YUMIManeModifIntersectPwordExternalizer.h */, - E824545026F5CE6E00BE8163 /* YUMIManeModifIntersectPwordExternalizer.m */, - E824545A26F5EEBA00BE8163 /* YUMIManeValidationIdentityExternalizer.h */, - E824545B26F5EEBA00BE8163 /* YUMIManeValidationIdentityExternalizer.m */, - E824546226F5FF1C00BE8163 /* YUMIManeReassociationIntersectCiphercodeExternalizer.h */, - E824546326F5FF1C00BE8163 /* YUMIManeReassociationIntersectCiphercodeExternalizer.m */, - E8E20BE628169BDC0033B688 /* YUMIManeSurmountCiphercodeExternalizer.h */, - E8E20BE728169BDC0033B688 /* YUMIManeSurmountCiphercodeExternalizer.m */, - E87C54BC2823CC5B0051AA11 /* YUMIManeReassociationSurmountPwordExternalizer.h */, - E87C54BD2823CC5B0051AA11 /* YUMIManeReassociationSurmountPwordExternalizer.m */, - E8EEB8FF26FC31B6007C6EBA /* YUMIManeConsumerAbstractExternalizer.h */, - E8EEB90026FC31B6007C6EBA /* YUMIManeConsumerAbstractExternalizer.m */, - E8D34D5E28082BA5009C4835 /* YUMIManeConsumerAtomicExternalizer.h */, - E8D34D5F28082BA5009C4835 /* YUMIManeConsumerAtomicExternalizer.m */, - E873EB03280943ED0071030D /* YUMIManeConsumerAbstractPresentRamparatExternalizer.h */, - E873EB04280943ED0071030D /* YUMIManeConsumerAbstractPresentRamparatExternalizer.m */, - E8EEB90D26FC6AB8007C6EBA /* YUMIManeConsumerAbstractCompileExternalizer.h */, - E8EEB90E26FC6AB8007C6EBA /* YUMIManeConsumerAbstractCompileExternalizer.m */, - E8B846C326FDB41A00A777FE /* YUMIManeConsumerAbstractlbumExternalizer.h */, - E8B846C426FDB41A00A777FE /* YUMIManeConsumerAbstractlbumExternalizer.m */, - E8B846D426FDE01B00A777FE /* YUMIManeReindictExternalizer.h */, - E8B846D526FDE01B00A777FE /* YUMIManeReindictExternalizer.m */, - E896EF922771AAC100AD2CC1 /* YUMIManeFanaticsExternalizer.h */, - E896EF932771AAC100AD2CC1 /* YUMIManeFanaticsExternalizer.m */, - E896EF952771AAE400AD2CC1 /* YUMIManeConsiderationExternalizer.h */, - E896EF962771AAE400AD2CC1 /* YUMIManeConsiderationExternalizer.m */, - E84CBCE52843807400D43221 /* YUMIManeAssistantExternalizer.h */, - E84CBCE62843807400D43221 /* YUMIManeAssistantExternalizer.m */, - 9BD9A17727A0EC57004186FE /* YUMIManeVacationerExternalizer.h */, - 9BD9A17827A0EC57004186FE /* YUMIManeVacationerExternalizer.m */, - 9B1B729628002147003FACE9 /* YUMIManeFanaticsSquadExternalizer.h */, - 9B1B729728002147003FACE9 /* YUMIManeFanaticsSquadExternalizer.m */, - 9BD2ECD3288F838200F5CD9A /* YUMIManeTerminalImpressionExternalizer.h */, - 9BD2ECD4288F838200F5CD9A /* YUMIManeTerminalImpressionExternalizer.m */, - 9BD8D4E428911F7700AE03FF /* YUMIManeAssembleChamberStatementExternalizer.h */, - 9BD8D4E528911F7700AE03FF /* YUMIManeAssembleChamberStatementExternalizer.m */, + E8E70D7826F2F16600F03460 /* XPMinePresent.h */, + E8E70D7926F2F16600F03460 /* XPMinePresent.m */, + E8AC721A26F4720B007D6E91 /* XPMineSettingPresent.h */, + E8AC721B26F4720B007D6E91 /* XPMineSettingPresent.m */, + E8098CB2282E97550090B9F0 /* XPMineBlackListPresenter.h */, + E8098CB3282E97550090B9F0 /* XPMineBlackListPresenter.m */, + E8AC722526F482A4007D6E91 /* XPMineFeedbackPresenter.h */, + E8AC722626F482A4007D6E91 /* XPMineFeedbackPresenter.m */, + E8AC723326F49939007D6E91 /* XPMineNotificaPresenter.h */, + E8AC723426F49939007D6E91 /* XPMineNotificaPresenter.m */, + E824544426F5934600BE8163 /* XPMinePayPwdPresenter.h */, + E824544526F5934600BE8163 /* XPMinePayPwdPresenter.m */, + E824544F26F5CE6E00BE8163 /* XPMineModifPayPwdPresenter.h */, + E824545026F5CE6E00BE8163 /* XPMineModifPayPwdPresenter.m */, + E824545A26F5EEBA00BE8163 /* XPMineVerifIdentityPresenter.h */, + E824545B26F5EEBA00BE8163 /* XPMineVerifIdentityPresenter.m */, + E824546226F5FF1C00BE8163 /* XPMineResetPayPasswordPresenter.h */, + E824546326F5FF1C00BE8163 /* XPMineResetPayPasswordPresenter.m */, + E8E20BE628169BDC0033B688 /* XPMineLoginPasswordPresenter.h */, + E8E20BE728169BDC0033B688 /* XPMineLoginPasswordPresenter.m */, + E87C54BC2823CC5B0051AA11 /* XPMineResetLoginPwdPresenter.h */, + E87C54BD2823CC5B0051AA11 /* XPMineResetLoginPwdPresenter.m */, + E8EEB8FF26FC31B6007C6EBA /* XPMineUserInfoPresenter.h */, + E8EEB90026FC31B6007C6EBA /* XPMineUserInfoPresenter.m */, + E8D34D5E28082BA5009C4835 /* XPMineUserDataPresenter.h */, + E8D34D5F28082BA5009C4835 /* XPMineUserDataPresenter.m */, + E873EB03280943ED0071030D /* XPMineUserInfoGiftWallPresenter.h */, + E873EB04280943ED0071030D /* XPMineUserInfoGiftWallPresenter.m */, + E8EEB90D26FC6AB8007C6EBA /* XPMineUserInfoEditPresenter.h */, + E8EEB90E26FC6AB8007C6EBA /* XPMineUserInfoEditPresenter.m */, + E8B846C326FDB41A00A777FE /* XPMineUserInfolbumPresenter.h */, + E8B846C426FDB41A00A777FE /* XPMineUserInfolbumPresenter.m */, + E8B846D426FDE01B00A777FE /* XPMineRechargePresenter.h */, + E8B846D526FDE01B00A777FE /* XPMineRechargePresenter.m */, + E896EF922771AAC100AD2CC1 /* XPMineFansPresenter.h */, + E896EF932771AAC100AD2CC1 /* XPMineFansPresenter.m */, + E896EF952771AAE400AD2CC1 /* XPMineAttentionPresenter.h */, + E896EF962771AAE400AD2CC1 /* XPMineAttentionPresenter.m */, + E84CBCE52843807400D43221 /* XPMineFriendPresenter.h */, + E84CBCE62843807400D43221 /* XPMineFriendPresenter.m */, + 9BD9A17727A0EC57004186FE /* XPMineVisitorPresenter.h */, + 9BD9A17827A0EC57004186FE /* XPMineVisitorPresenter.m */, + 9B1B729628002147003FACE9 /* XPMineFansTeamPresenter.h */, + 9B1B729728002147003FACE9 /* XPMineFansTeamPresenter.m */, + 9BD2ECD3288F838200F5CD9A /* XPMineFootPrintPresenter.h */, + 9BD2ECD4288F838200F5CD9A /* XPMineFootPrintPresenter.m */, + 9BD8D4E428911F7700AE03FF /* XPMineCollectRoomListPresenter.h */, + 9BD8D4E528911F7700AE03FF /* XPMineCollectRoomListPresenter.m */, ); path = Presenter; sourceTree = ""; @@ -9146,30 +8794,30 @@ E8E70D7426F2EB6B00F03460 /* Protocol */ = { isa = PBXGroup; children = ( - E8E70D7B26F2F18900F03460 /* FBCManeCeremony.h */, - E8AC721D26F4723D007D6E91 /* FBCManeInstanllingCeremony.h */, - E8098CB6282E97AC0090B9F0 /* FBCManeBlackStatementCeremony.h */, - E8AC722826F48889007D6E91 /* FBCManeFeedbackCeremony.h */, - E8AC723626F49957007D6E91 /* FBCManeNotificaCeremony.h */, - E824544726F5940600BE8163 /* FBCManePayPwordCeremony.h */, - E824545226F5CE9C00BE8163 /* FBCManeModifPayCeremony.h */, - E824545D26F5EEFD00BE8163 /* FBCManeVerifIdentityCeremony.h */, - E824546526F5FF5100BE8163 /* FBCManeResetPayCiphercodeCeremony.h */, - E8E20BE928169E410033B688 /* FBCManeSurmountCiphercodeCeremony.h */, - E87C54BF2823CC940051AA11 /* FBCManeResetSurmountPwordCeremony.h */, - E8EEB90226FC31CE007C6EBA /* FBCManeConsumerAbstractCeremony.h */, - E8D34D6128082BD4009C4835 /* FBCManeConsumerAtomicCeremony.h */, - E873EB06280944020071030D /* FBCManeConsumerAbstractPresentWallCeremony.h */, - E8EEB91026FC6AD3007C6EBA /* FBCManeConsumerAbstractEditCeremony.h */, - E8B846C626FDB44100A777FE /* FBCManeConsumerAbstractAlbumCeremony.h */, - E8B846D726FDE16300A777FE /* FBCManeReindictCeremony.h */, - E896EF982771AB0000AD2CC1 /* FBCManeFanaticsCeremony.h */, - E896EF992771AB1800AD2CC1 /* FBCManeConsiderationCeremony.h */, - E84CBCE8284380B300D43221 /* FBCManeFriendCeremony.h */, - 9BD9A17627A0E953004186FE /* FBCManeVisitorCeremony.h */, - 9B1B7299280021E7003FACE9 /* FBCManeKellegFanaticsTeamCeremony.h */, - 9BD2ECD6288F849300F5CD9A /* FBCManeFootPrintCeremony.h */, - 9BD8D4E728911FBD00AE03FF /* FBCManeCollectChamberStatementCeremony.h */, + E8E70D7B26F2F18900F03460 /* XPMineProtocol.h */, + E8AC721D26F4723D007D6E91 /* XPMineSettingProtocol.h */, + E8098CB6282E97AC0090B9F0 /* XPMineBlackListProtocol.h */, + E8AC722826F48889007D6E91 /* XPMineFeedbackProtocol.h */, + E8AC723626F49957007D6E91 /* XPMineNotificaProtocol.h */, + E824544726F5940600BE8163 /* XPMinePayPwdProtocol.h */, + E824545226F5CE9C00BE8163 /* XPMineModifPayProtocol.h */, + E824545D26F5EEFD00BE8163 /* XPMineVerifIdentityProtocol.h */, + E824546526F5FF5100BE8163 /* XPMineResetPayPasswordProtocol.h */, + E8E20BE928169E410033B688 /* XPMineLoginPasswordProtocol.h */, + E87C54BF2823CC940051AA11 /* XPMineResetLoginPwdProtocol.h */, + E8EEB90226FC31CE007C6EBA /* XPMineUserInfoProtocol.h */, + E8D34D6128082BD4009C4835 /* XPMineUserDataProtocol.h */, + E873EB06280944020071030D /* XPMineUserInfoGiftWallProtocol.h */, + E8EEB91026FC6AD3007C6EBA /* XPMineUserInfoEditProtocol.h */, + E8B846C626FDB44100A777FE /* XPMineUserInfoAlbumProtocol.h */, + E8B846D726FDE16300A777FE /* XPMineRechargeProtocol.h */, + E896EF982771AB0000AD2CC1 /* XPMineFansProtocol.h */, + E896EF992771AB1800AD2CC1 /* XPMineAttentionProtocol.h */, + E84CBCE8284380B300D43221 /* XPMineFriendProtocol.h */, + 9BD9A17627A0E953004186FE /* XPMineVisitorProtocol.h */, + 9B1B7299280021E7003FACE9 /* XPMineAnchorFansTeamProtocol.h */, + 9BD2ECD6288F849300F5CD9A /* XPMineFootPrintProtocol.h */, + 9BD8D4E728911FBD00AE03FF /* XPMineCollectRoomListProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -9177,26 +8825,24 @@ E8E70D7F26F2F39000F03460 /* SubViews */ = { isa = PBXGroup; children = ( - E87E545229AA05EA00EBE52B /* YUMITerminalImpressionNevRegard.h */, - E87E545329AA05EA00EBE52B /* YUMITerminalImpressionNevRegard.m */, + E87E545229AA05EA00EBE52B /* XPFootPrintNavView.h */, + E87E545329AA05EA00EBE52B /* XPFootPrintNavView.m */, E8B846CC26FDD93D00A777FE /* Recharge */, E88B5CC226FB429C00DA9178 /* MineInfo */, - E8E70D8126F2F51A00F03460 /* YUMIManeIntelligenceRegard.h */, - E8E70D8226F2F51A00F03460 /* YUMIManeIntelligenceRegard.m */, - E896EFB02771C93B00AD2CC1 /* YUMIManeAssistantNumberRegard.h */, - E896EFB12771C93B00AD2CC1 /* YUMIManeAssistantNumberRegard.m */, - 9B734F71288A787000CBDAA9 /* YUMIManeAccountRegard.h */, - 9B734F72288A787000CBDAA9 /* YUMIManeAccountRegard.m */, - 237D63732A57E7B1000442C6 /* PINoblemanCenterView.h */, - 237D63742A57E7B1000442C6 /* PINoblemanCenterView.m */, - E824544126F58FCE00BE8163 /* YUMIManeIntersectPwordIntrojectionRegard.h */, - E824544226F58FCE00BE8163 /* YUMIManeIntersectPwordIntrojectionRegard.m */, - E824544C26F5BC1A00BE8163 /* YUMIManeModifIntersectPwordRegard.h */, - E824544D26F5BC1A00BE8163 /* YUMIManeModifIntersectPwordRegard.m */, - E824545726F5E65900BE8163 /* YUMIManeValidationIdentityRegard.h */, - E824545826F5E65900BE8163 /* YUMIManeValidationIdentityRegard.m */, - 9BE01ACC28925F7D00B50299 /* YUMIManeStrangeConsumerReindictRegard.h */, - 9BE01ACD28925F7D00B50299 /* YUMIManeStrangeConsumerReindictRegard.m */, + E8E70D8126F2F51A00F03460 /* XPMineHeadView.h */, + E8E70D8226F2F51A00F03460 /* XPMineHeadView.m */, + E896EFB02771C93B00AD2CC1 /* XPMineFriendNumberView.h */, + E896EFB12771C93B00AD2CC1 /* XPMineFriendNumberView.m */, + 9B734F71288A787000CBDAA9 /* XPMineAccountView.h */, + 9B734F72288A787000CBDAA9 /* XPMineAccountView.m */, + E824544126F58FCE00BE8163 /* XPMinePayPwdInputView.h */, + E824544226F58FCE00BE8163 /* XPMinePayPwdInputView.m */, + E824544C26F5BC1A00BE8163 /* XPMineModifPayPwdView.h */, + E824544D26F5BC1A00BE8163 /* XPMineModifPayPwdView.m */, + E824545726F5E65900BE8163 /* XPMineVerifIdentityView.h */, + E824545826F5E65900BE8163 /* XPMineVerifIdentityView.m */, + 9BE01ACC28925F7D00B50299 /* XPMineNewUserRechargeView.h */, + 9BE01ACD28925F7D00B50299 /* XPMineNewUserRechargeView.m */, ); path = SubViews; sourceTree = ""; @@ -9210,24 +8856,24 @@ 9BD9A17D27A0EFB1004186FE /* Visitor */, E8B846D026FDDBCD00A777FE /* Recharge */, E8EEB8F826FC285B007C6EBA /* MineInfo */, - E8E70D8A26F2F5A500F03460 /* YUMIManeIntelligenceProvisionAssembletionRegardElement.h */, - E8E70D8B26F2F5A500F03460 /* YUMIManeIntelligenceProvisionAssembletionRegardElement.m */, - E8AC721426F46B06007D6E91 /* YUMIManeInstanllingTabulationRegardElement.h */, - E8AC721526F46B06007D6E91 /* YUMIManeInstanllingTabulationRegardElement.m */, - E8AC723026F49710007D6E91 /* YUMIManeNotificationTabulationRegardElement.h */, - E8AC723126F49710007D6E91 /* YUMIManeNotificationTabulationRegardElement.m */, - 9B92A33A2797E38100AD168F /* YUMIManeIntelligenceProvisionTabulationRegardElement.h */, - 9B92A33B2797E38100AD168F /* YUMIManeIntelligenceProvisionTabulationRegardElement.m */, - 9BCFB826289BAC7D0093D863 /* YUMIManeIntelligenceFunctionProvisionProgramming.h */, - 9BCFB827289BAC7D0093D863 /* YUMIManeIntelligenceFunctionProvisionProgramming.m */, - E8E20BED2816A5FC0033B688 /* YUMIManeBlackStatementTabulationRegardElement.h */, - E8E20BEE2816A5FC0033B688 /* YUMIManeBlackStatementTabulationRegardElement.m */, - E85E7BBA2A4EE70B00B6D00A /* YUMIManeTheUnionElement.h */, - E85E7BBB2A4EE70B00B6D00A /* YUMIManeTheUnionElement.m */, - E85E7BBD2A4EE7AC00B6D00A /* YUMIManeFeaturealConcentrateElement.h */, - E85E7BBE2A4EE7AC00B6D00A /* YUMIManeFeaturealConcentrateElement.m */, - E85E7BC02A4EE82300B6D00A /* YUMIManeStatementElement.h */, - E85E7BC12A4EE82300B6D00A /* YUMIManeStatementElement.m */, + E8E70D8A26F2F5A500F03460 /* XPMineHeadItemCollectionViewCell.h */, + E8E70D8B26F2F5A500F03460 /* XPMineHeadItemCollectionViewCell.m */, + E8AC721426F46B06007D6E91 /* XPMineSettingTableViewCell.h */, + E8AC721526F46B06007D6E91 /* XPMineSettingTableViewCell.m */, + E8AC723026F49710007D6E91 /* XPMineNotificationTableViewCell.h */, + E8AC723126F49710007D6E91 /* XPMineNotificationTableViewCell.m */, + 9B92A33A2797E38100AD168F /* XPMineHeadItemTableViewCell.h */, + 9B92A33B2797E38100AD168F /* XPMineHeadItemTableViewCell.m */, + 9BCFB826289BAC7D0093D863 /* XPMineHeadFunctionItemLayout.h */, + 9BCFB827289BAC7D0093D863 /* XPMineHeadFunctionItemLayout.m */, + E8E20BED2816A5FC0033B688 /* XPMineBlackListTableViewCell.h */, + E8E20BEE2816A5FC0033B688 /* XPMineBlackListTableViewCell.m */, + E85E7BBA2A4EE70B00B6D00A /* XPMineTheGuildCell.h */, + E85E7BBB2A4EE70B00B6D00A /* XPMineTheGuildCell.m */, + E85E7BBD2A4EE7AC00B6D00A /* XPMinePersonalCenterCell.h */, + E85E7BBE2A4EE7AC00B6D00A /* XPMinePersonalCenterCell.m */, + E85E7BC02A4EE82300B6D00A /* XPMineListCell.h */, + E85E7BC12A4EE82300B6D00A /* XPMineListCell.m */, ); path = Cell; sourceTree = ""; @@ -9247,47 +8893,47 @@ children = ( E88C729D2828FCB10047FB2B /* SubViews */, E88C72962828F3410047FB2B /* Cell */, - E8E859E728264F4500EE4857 /* YUMIChamberTransferManualRegardGovernancer.h */, - E8E859E828264F4500EE4857 /* YUMIChamberTransferManualRegardGovernancer.m */, - E88C72932828F1AD0047FB2B /* YUMIChamberManualBibliothecaRegardGovernancer.h */, - E88C72942828F1AD0047FB2B /* YUMIChamberManualBibliothecaRegardGovernancer.m */, + E8E859E728264F4500EE4857 /* XPRoomTransferMusicViewController.h */, + E8E859E828264F4500EE4857 /* XPRoomTransferMusicViewController.m */, + E88C72932828F1AD0047FB2B /* XPRoomMusicLibraryViewController.h */, + E88C72942828F1AD0047FB2B /* XPRoomMusicLibraryViewController.m */, ); path = View; sourceTree = ""; }; - E8EEB8EA26FC2050007C6EBA /* SDAppearanceBrowser */ = { + E8EEB8EA26FC2050007C6EBA /* SDPhotoBrowser */ = { isa = PBXGroup; children = ( E8EEB8EB26FC2050007C6EBA /* SDPhotoBrowserConfig.h */, - E8EEB8EC26FC2050007C6EBA /* SDAppearanceBrowser.m */, - E8EEB8ED26FC2050007C6EBA /* SDWaitingRegard.m */, - E8EEB8EE26FC2050007C6EBA /* SDBrowserIndicateRegard.m */, - E8EEB8EF26FC2050007C6EBA /* SDWaitingRegard.h */, - E8EEB8F026FC2050007C6EBA /* SDAppearanceBrowser.h */, - E8EEB8F126FC2050007C6EBA /* SDBrowserIndicateRegard.h */, + E8EEB8EC26FC2050007C6EBA /* SDPhotoBrowser.m */, + E8EEB8ED26FC2050007C6EBA /* SDWaitingView.m */, + E8EEB8EE26FC2050007C6EBA /* SDBrowserImageView.m */, + E8EEB8EF26FC2050007C6EBA /* SDWaitingView.h */, + E8EEB8F026FC2050007C6EBA /* SDPhotoBrowser.h */, + E8EEB8F126FC2050007C6EBA /* SDBrowserImageView.h */, ); - path = SDAppearanceBrowser; + path = SDPhotoBrowser; sourceTree = ""; }; E8EEB8F826FC285B007C6EBA /* MineInfo */ = { isa = PBXGroup; children = ( - E8EEB8F926FC2874007C6EBA /* YUMIManeConsumerAbstractTabulationRegardElement.h */, - E8EEB8FA26FC2874007C6EBA /* YUMIManeConsumerAbstractTabulationRegardElement.m */, - E8EEB90726FC579A007C6EBA /* YUMIManeConsumerAbstractCompileTabulationRegardElement.h */, - E8EEB90826FC579A007C6EBA /* YUMIManeConsumerAbstractCompileTabulationRegardElement.m */, - E8B846C026FD82DC00A777FE /* YUMIManeConsumerAbstractAlbumAssembletionRegardElement.h */, - E8B846C126FD82DC00A777FE /* YUMIManeConsumerAbstractAlbumAssembletionRegardElement.m */, - E8D34D4B28080351009C4835 /* YUMIManeAtomicCollectiveTabulationRegardElement.h */, - E8D34D4C28080351009C4835 /* YUMIManeAtomicCollectiveTabulationRegardElement.m */, - E8D34D4E28080362009C4835 /* YUMIManeAtomicPresentTabulationRegardElement.h */, - E8D34D4F28080362009C4835 /* YUMIManeAtomicPresentTabulationRegardElement.m */, - E8D34D5428080393009C4835 /* YUMIManeAtomicPresentAssembletionRegardElement.h */, - E8D34D5528080393009C4835 /* YUMIManeAtomicPresentAssembletionRegardElement.m */, - E8D34D6528084E88009C4835 /* YUMIManeConsumerAbstractPresentRamparatAssembletionRegardElement.h */, - E8D34D6628084E88009C4835 /* YUMIManeConsumerAbstractPresentRamparatAssembletionRegardElement.m */, - E873EB00280922720071030D /* YUMIManeConsumerAbstractDispossessAssembletionRegardElement.h */, - E873EB01280922720071030D /* YUMIManeConsumerAbstractDispossessAssembletionRegardElement.m */, + E8EEB8F926FC2874007C6EBA /* XPMineUserInfoTableViewCell.h */, + E8EEB8FA26FC2874007C6EBA /* XPMineUserInfoTableViewCell.m */, + E8EEB90726FC579A007C6EBA /* XPMineUserInfoEditTableViewCell.h */, + E8EEB90826FC579A007C6EBA /* XPMineUserInfoEditTableViewCell.m */, + E8B846C026FD82DC00A777FE /* XPMineUserInfoAlbumCollectionViewCell.h */, + E8B846C126FD82DC00A777FE /* XPMineUserInfoAlbumCollectionViewCell.m */, + E8D34D4B28080351009C4835 /* XPMineDataClanTableViewCell.h */, + E8D34D4C28080351009C4835 /* XPMineDataClanTableViewCell.m */, + E8D34D4E28080362009C4835 /* XPMineDataGiftTableViewCell.h */, + E8D34D4F28080362009C4835 /* XPMineDataGiftTableViewCell.m */, + E8D34D5428080393009C4835 /* XPMineDataGiftCollectionViewCell.h */, + E8D34D5528080393009C4835 /* XPMineDataGiftCollectionViewCell.m */, + E8D34D6528084E88009C4835 /* XPMineUserInfoGiftWallCollectionViewCell.h */, + E8D34D6628084E88009C4835 /* XPMineUserInfoGiftWallCollectionViewCell.m */, + E873EB00280922720071030D /* XPMineUserInfoEmptyCollectionViewCell.h */, + E873EB01280922720071030D /* XPMineUserInfoEmptyCollectionViewCell.m */, ); path = MineInfo; sourceTree = ""; @@ -9306,8 +8952,8 @@ E8FE3C292994D0CC0006C6C7 /* SwitchView */ = { isa = PBXGroup; children = ( - E8FE3C2A2994D0E80006C6C7 /* YUMISwitch.h */, - E8FE3C2B2994D0E80006C6C7 /* YUMISwitch.m */, + E8FE3C2A2994D0E80006C6C7 /* XPSwitch.h */, + E8FE3C2B2994D0E80006C6C7 /* XPSwitch.m */, ); path = SwitchView; sourceTree = ""; @@ -9377,7 +9023,6 @@ E80EC84628ACD84000D133C5 /* emoji_98@2x.png in Resources */, E80EC84728ACD84000D133C5 /* emoji_104@2x.png in Resources */, E80EC83328ACD84000D133C5 /* emoji_136@2x.png in Resources */, - 237D64F02A58139E000442C6 /* treasure_fairy_summon_high.mp4 in Resources */, E80EC82628ACD84000D133C5 /* emoji_10@2x.png in Resources */, E80EC82C28ACD84000D133C5 /* emoji_59@2x.png in Resources */, E80EC81A28ACD84000D133C5 /* emoji_161@2x.png in Resources */, @@ -9397,7 +9042,6 @@ E80EC8B128ACD84100D133C5 /* emoji_123@2x.png in Resources */, E80EC89B28ACD84000D133C5 /* emoji_33@2x.png in Resources */, E80EC85C28ACD84000D133C5 /* emoji_77@2x.png in Resources */, - 237D64F12A58139E000442C6 /* treasure_fairy_summon_middle.mp4 in Resources */, E80EC85528ACD84000D133C5 /* emoji_118@2x.png in Resources */, E80EC8B728ACD84100D133C5 /* emoji_119@2x.png in Resources */, E80EC86228ACD84000D133C5 /* emoji_22@2x.png in Resources */, @@ -9405,7 +9049,6 @@ E80EC81528ACD84000D133C5 /* emoji_145@2x.png in Resources */, E80EC85428ACD84000D133C5 /* emoji_165@2x.png in Resources */, E80EC88728ACD84000D133C5 /* emoji_29@2x.png in Resources */, - 237D64EE2A58139E000442C6 /* treasure_fairy_trials_high.mp4 in Resources */, E80EC83728ACD84000D133C5 /* emoji_112@2x.png in Resources */, E80EC88C28ACD84000D133C5 /* emoji_46@2x.png in Resources */, E80EC86028ACD84000D133C5 /* emoji_30@2x.png in Resources */, @@ -9447,9 +9090,7 @@ E80EC81728ACD84000D133C5 /* emoji_134@2x.png in Resources */, E8729EF02A3B34D30076D80A /* js in Resources */, E80EC88328ACD84000D133C5 /* emoji_70@2x.png in Resources */, - 237D64EF2A58139E000442C6 /* treasure_fairy_summon_normal.mp4 in Resources */, E80EC89528ACD84000D133C5 /* emoji_99@2x.png in Resources */, - 237D64F52A58139E000442C6 /* treasure_fairy_gift_bg.svga in Resources */, E84A2EAF2A52F27000D6AF8A /* 1242.png in Resources */, E80EC89128ACD84000D133C5 /* emoji_133@2x.png in Resources */, E80EC87F28ACD84000D133C5 /* emoji_137@2x.png in Resources */, @@ -9472,7 +9113,6 @@ E80EC86928ACD84000D133C5 /* emoji_44@2x.png in Resources */, E80EC83528ACD84000D133C5 /* emoji_124@2x.png in Resources */, E80EC8A928ACD84100D133C5 /* emoji_68@2x.png in Resources */, - 237D64F32A58139E000442C6 /* treasure_fairy_trials_middle.mp4 in Resources */, E80EC89D28ACD84000D133C5 /* emoji_78@2x.png in Resources */, E80EC8AC28ACD84100D133C5 /* emoji_19@2x.png in Resources */, E80EC84428ACD84000D133C5 /* emoji_51@2x.png in Resources */, @@ -9530,7 +9170,6 @@ E80EC87528ACD84000D133C5 /* emoji_144@2x.png in Resources */, E80EC81628ACD84000D133C5 /* emoji_126@2x.png in Resources */, E80EC8A328ACD84100D133C5 /* emoji_52@2x.png in Resources */, - 237D64F22A58139E000442C6 /* treasure_fairy_ten.mp4 in Resources */, E80EC84E28ACD84000D133C5 /* emoji_132@2x.png in Resources */, E8729EED2A3B34D30076D80A /* upload.html in Resources */, E80EC82928ACD84000D133C5 /* emoji_28@2x.png in Resources */, @@ -9557,7 +9196,6 @@ E80EC86E28ACD84000D133C5 /* emoji_48@2x.png in Resources */, E80EC86A28ACD84000D133C5 /* emoji_27@2x.png in Resources */, E80EC88228ACD84000D133C5 /* emoji_13@2x.png in Resources */, - 237D64F42A58139E000442C6 /* treasure_fairy_one.mp4 in Resources */, E80EC82228ACD84000D133C5 /* emoji_34@2x.png in Resources */, E80EC87628ACD84000D133C5 /* emoji_139@2x.png in Resources */, E80EC86328ACD84000D133C5 /* emoji_41@2x.png in Resources */, @@ -9630,1055 +9268,1023 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9BE01ADA289296B500B50299 /* YUMIPretendUpwardsProcurementExternalizer.m in Sources */, - E8751E6628A6465A0056EF44 /* YUMIMarchingRateMetroRegard.m in Sources */, - 9B2EA7C32804052E00ED17BF /* KellegCombatMiecreoscoopeRegard.m in Sources */, - E8F65C1F286998C9009BB5B9 /* YUMIManeParaticipationRegardGovernancer.m in Sources */, - E85E7BAB2A4EC99300B6D00A /* YUMIManeChooseGivePresentRegard.m in Sources */, - E85E7B3D2A4EB0D300B6D00A /* YUMIUnionRevenueSpecificAssembletionRegardElement.m in Sources */, - 181D7F1B2726CE2A00B7C059 /* PhaseRegard.m in Sources */, - 18EE3FF12750D2AD00A452BF /* NEMCIntratemporalUtils.m in Sources */, - E84BF7DA277C72AC00EF8877 /* YUMIChamberRoleTabulationRegardElement.m in Sources */, - E839532D276A030F00CF2F24 /* YUMIManePretendUpwardsStatementRegardGovernancer.m in Sources */, - E821077B2987D4AB00DE7040 /* CommunicationDiscoveryStrangeBewelcometoMatrix.m in Sources */, - E85E7BA32A4EC99300B6D00A /* YUMIManeGiveDiamondSpecificsVC.m in Sources */, - E8B846D826FDE17300A777FE /* FBCManeReindictCeremony.h in Sources */, - E88C72A6282921D60047FB2B /* YUMIChamberBackManualDisporterRegard.m in Sources */, - 237D64BF2A57FDAA000442C6 /* XPTreasureFailyResultGiftCell.m in Sources */, - E84CBCE72843807500D43221 /* YUMIManeAssistantExternalizer.m in Sources */, - 142721A829A75F6F00C7C423 /* BWGMKJYlumbes.m in Sources */, + 9BE01ADA289296B500B50299 /* XPDressUpShopPresenter.m in Sources */, + E8751E6628A6465A0056EF44 /* XPSailingRankSubView.m in Sources */, + 9B2EA7C32804052E00ED17BF /* AnchorPKMicroView.m in Sources */, + E8F65C1F286998C9009BB5B9 /* XPMineShareViewController.m in Sources */, + E85E7BAB2A4EC99300B6D00A /* XPMineChooseGiveGiftView.m in Sources */, + E85E7B3D2A4EB0D300B6D00A /* XPGuildIncomeDetailCollectionViewCell.m in Sources */, + 181D7F1B2726CE2A00B7C059 /* StageView.m in Sources */, + 18EE3FF12750D2AD00A452BF /* NIMTimeUtils.m in Sources */, + E84BF7DA277C72AC00EF8877 /* XPRoomRoleTableViewCell.m in Sources */, + E839532D276A030F00CF2F24 /* XPMineDressUpListViewController.m in Sources */, + E821077B2987D4AB00DE7040 /* MessageFindNewGreetModel.m in Sources */, + E85E7BA32A4EC99300B6D00A /* XPMineGiveDiamondDetailsVC.m in Sources */, + E8B846D826FDE17300A777FE /* XPMineRechargeProtocol.h in Sources */, + E88C72A6282921D60047FB2B /* XPRoomBackMusicPlayerView.m in Sources */, + E84CBCE72843807500D43221 /* XPMineFriendPresenter.m in Sources */, + 142721A829A75F6F00C7C423 /* DDTTYLogger.m in Sources */, E82D5C7D276B343300858D6D /* YYAnimatedImageView+ImageShow.m in Sources */, - E80E09B32A42071D00CD2BE7 /* YUMIChamberSatelliteKitchenOriflammeRegard.m in Sources */, - E8B846C726FDB45000A777FE /* FBCManeConsumerAbstractAlbumCeremony.h in Sources */, - 9B1EF3D527E8294B00554295 /* YUMIManePretendDispossessAssembletionRegardElement.m in Sources */, - E890BC07273CF1800007C46B /* YUMIPresentComputationAssembletionRegardElement.m in Sources */, - E88C72A02828FCD40047FB2B /* YUMIManualBibliothecaDisportRegard.m in Sources */, - E823E38E290BE8BD00EADD86 /* DesirePresentAbstractRefurbishMatrix.m in Sources */, - E80EC80A28ACD84000D133C5 /* MHTSpiritDirectorateRegard.m in Sources */, + E80E09B32A42071D00CD2BE7 /* XPRoomStarKitchenBannerView.m in Sources */, + E8B846C726FDB45000A777FE /* XPMineUserInfoAlbumProtocol.h in Sources */, + 9B1EF3D527E8294B00554295 /* XPMineDressEmptyCollectionViewCell.m in Sources */, + E890BC07273CF1800007C46B /* XPGiftCountCollectionViewCell.m in Sources */, + E88C72A02828FCD40047FB2B /* XPMusicLibraryPlayView.m in Sources */, + E823E38E290BE8BD00EADD86 /* WishGiftInfoUpdateModel.m in Sources */, + E80EC80A28ACD84000D133C5 /* QEmotionBoardView.m in Sources */, E8998D962859DD6F00C68558 /* UIView+Corner.m in Sources */, - E8EEB91126FC6AE2007C6EBA /* FBCManeConsumerAbstractEditCeremony.h in Sources */, - E87E625D2A3F5622002F68C9 /* YUMIStrangeResidenceRegardGovernancer.m in Sources */, - E85E7B202A4EB0D300B6D00A /* YUMIManeUnionRevenueSpecificRegardGovernancer.m in Sources */, - E84A2EA82A5288FD00D6AF8A /* YUMIGoldSpecificsChooseChamberElement.m in Sources */, - E8A353A328FE90F60014A784 /* YUMIDesirePresentCreateRegardGovernancer.m in Sources */, + E8EEB91126FC6AE2007C6EBA /* XPMineUserInfoEditProtocol.h in Sources */, + E87E625D2A3F5622002F68C9 /* XPNewHomeViewController.m in Sources */, + E85E7B202A4EB0D300B6D00A /* XPMineGuildIncomeDetailViewController.m in Sources */, + E84A2EA82A5288FD00D6AF8A /* XPGoldDetailsChooseRoomCell.m in Sources */, + E8A353A328FE90F60014A784 /* XPWishGiftCreateViewController.m in Sources */, + 2331C1AF2A60F32D00E1D940 /* XPCandyTreeRankView.m in Sources */, 180116FC279E8CCE00F2CBC0 /* NVDate.m in Sources */, - E801275827E347FD00BAC3F2 /* ChamberCombatReflectionMatrix.m in Sources */, - E8E0DAE0285C20E500566A2F /* CommunicationSatisfactionDiscoveryStrangeBewelcometoRegard.m in Sources */, - E8A3540128FEAC5E0014A784 /* YUMIDesirePresentTabulationRegardElement.m in Sources */, - E8EEB90326FC31DC007C6EBA /* FBCManeConsumerAbstractCeremony.h in Sources */, + E801275827E347FD00BAC3F2 /* RoomPKRecordModel.m in Sources */, + E8E0DAE0285C20E500566A2F /* MessageContentFindNewGreetView.m in Sources */, + E8A3540128FEAC5E0014A784 /* XPWishGiftTableViewCell.m in Sources */, + E8EEB90326FC31DC007C6EBA /* XPMineUserInfoProtocol.h in Sources */, E8232603274E4AA0003A3332 /* ThemeColor+UserCard.m in Sources */, - E87A24F1272935920086A794 /* YUMICommunicationRemoteExtMatrix.m in Sources */, - E8D34D5028080362009C4835 /* YUMIManeAtomicPresentTabulationRegardElement.m in Sources */, - E87C54BE2823CC5B0051AA11 /* YUMIManeReassociationSurmountPwordExternalizer.m in Sources */, - E85E7B322A4EB0D300B6D00A /* YUMIUnionKellegRevenueDivisionRegard.m in Sources */, - 142721AC29A75F6F00C7C423 /* BWGLumber.m in Sources */, - 237D64D22A57FDAA000442C6 /* XPTreasureFairyPrizePoolView.m in Sources */, - E83953222769F33B00CF2F24 /* YUMIChamberFunctionAccommodatedRegard.m in Sources */, - E87C0AA027D9DE6400CB2241 /* ChamberAcceptDischargeAbstractMatrix.m in Sources */, - 237D64D42A57FDAA000442C6 /* XPTreasureFairyPrizeSubView.m in Sources */, - 1464C5F629A4CA8C00AF7C94 /* YUMIIAPReindictAssembletionRegardElement.m in Sources */, - E8751E6328A646400056EF44 /* YUMIMarchingRateRegard.m in Sources */, - 9BD9A18027A0EFC7004186FE /* YUMIManeVacationerTabulationRegardElement.m in Sources */, - E85E7B112A4EB0D200B6D00A /* UnionFeatureRevenueReflectionMatrix.m in Sources */, - 9BD2ECD2288F833B00F5CD9A /* YUMIManeTerminalImpressionMatrix.m in Sources */, - E824546626F5FF6000BE8163 /* FBCManeResetPayCiphercodeCeremony.h in Sources */, - E89DA66427005932008483C1 /* YUMIIAPFacilitater.m in Sources */, - E824545E26F5EF2200BE8163 /* FBCManeVerifIdentityCeremony.h in Sources */, - E824545326F5CEAD00BE8163 /* FBCManeModifPayCeremony.h in Sources */, - E84BF7D7277C6E2100EF8877 /* YUMIChamberRoleRegardGovernancer.m in Sources */, - E85E7B242A4EB0D300B6D00A /* YUMIManeUnionSensationalManagementSetRegardGovernancer.m in Sources */, - 237D64E12A57FDAA000442C6 /* XPTreasureFairyBallView.m in Sources */, - E87DF4C22A42C900009C1185 /* YUMINoteRegard.m in Sources */, - E8AB631328ADDCF20023B0D2 /* YUMISeparationsMotifIntelligencerRegard.m in Sources */, - 9B86D886281942D200494FCD /* SocialMiecreoscoopeRegard.m in Sources */, - E8664ED027E42238000171BA /* YUMIChamberCombatIntratemporalPickerRegard.m in Sources */, - E85E7B2B2A4EB0D300B6D00A /* YUMIStrangeUnionIntratemporalPickRegard.m in Sources */, - E824544826F5945300BE8163 /* FBCManePayPwordCeremony.h in Sources */, - E8AB633628AE54A40023B0D2 /* YUMIMarchingCaptureAssembletionRegardElement.m in Sources */, - E85E7B4E2A4EB0D300B6D00A /* YUMIManeUnionSetNameRegardGovernancer.m in Sources */, - E824543A26F5880E00BE8163 /* FBCSurmountVerifBindPhoneCeremony.h in Sources */, - E821077E2987D67100DE7040 /* CommunicationVenturePrecautiousMatrix.m in Sources */, - E818DD222A48977F00F163F7 /* YUMISurmountAreaTabulationRegardElement.m in Sources */, - E81060F72987C8A700B772F0 /* CommunicationApplicationParaticipationMatrix.m in Sources */, - E8E20BE2281695800033B688 /* YUMIManeSurmountCiphercodeRegardGovernancer.m in Sources */, - E84A2EA22A52883000D6AF8A /* YUMIRevenueReflectionGoldSpecificsIntratemporalRegard.m in Sources */, - E86E79D628A4EA0C006DAF48 /* InterlocutionVentureCache.m in Sources */, - E824543826F5820A00BE8163 /* YUMISurmountValidationDilemmaMobileExternalizer.m in Sources */, - E8B846BF26FD827900A777FE /* YUMIManeConsumerAbstractAlbumRegardGovernancer.m in Sources */, - E84CBCE128436D3C00D43221 /* YUMIManeContactRegardGovernancer.m in Sources */, - E8D48253278D8228003C1D08 /* ThroughoutChamberCombatFasciaboardMatrix.m in Sources */, - E824545C26F5EEBA00BE8163 /* YUMIManeValidationIdentityExternalizer.m in Sources */, - 9B9BBF83288FBFB3004E2E74 /* YUMIStrangeConsumerChamberPresentRegard.m in Sources */, - E838369A298A59C100112E1C /* CommunicationTipsRegard.m in Sources */, - E8899C852785CC69007944BE /* YUMIChamberEngagementBrightnessRegard.m in Sources */, - E85E7B1B2A4EB0D200B6D00A /* YUMIManeMainRevenueStatsticsRegardGovernancer.m in Sources */, - E84BF7D4277C383700EF8877 /* YUMIChamberInstanllingIntrojectionRegard.m in Sources */, - E8AC723726F49982007D6E91 /* FBCManeNotificaCeremony.h in Sources */, - E896EFAC2771AEFE00AD2CC1 /* YUMIManeAssistantTabulationRegardElement.m in Sources */, - E8664ED327E4258A000171BA /* ChamberCombatIntratemporalProvisionMatrix.m in Sources */, - E8412FA22779BE8F006E1101 /* YUMIChamberInstanllingRegardGovernancer.m in Sources */, - E89D60BD271D647A001F8895 /* YUMIChamberExternalizer.m in Sources */, - E8751E5C28A62A530056EF44 /* YUMIMarchingRegardGovernancer.m in Sources */, - 9B7D904D287BC5E20033A45E /* KellegChamberScrollRegard.m in Sources */, - E80DE4072775665000BE5BCB /* YUMIThresholdReindictAssembletionRegardElement.m in Sources */, - E8899C822785A694007944BE /* EngagementAbstractMatrix.m in Sources */, - 9BB89DC327FE7F3A00586A83 /* XCombatellegFanaticsRelationMatrix.m in Sources */, - E8AC723226F49710007D6E91 /* YUMIManeNotificationTabulationRegardElement.m in Sources */, - E87E62592A3F560B002F68C9 /* YUMIResidenceParatiesRegardGovernancer.m in Sources */, - E8AC722926F488DA007D6E91 /* FBCManeFeedbackCeremony.h in Sources */, - E8A3539128FE5F0F0014A784 /* DesirePresentAbstractMatrix.m in Sources */, - E85E7B3C2A4EB0D300B6D00A /* YUMIUnionSensationalManagementChamberAssembletionRegardElement.m in Sources */, - E85E7B2A2A4EB0D300B6D00A /* YUMIUnionIntratemporalMonthPickerRegard.m in Sources */, - E87E62782A3F5907002F68C9 /* YUMIStrangeResidenceParatiesTabulationRegardElement.m in Sources */, - E8A3539B28FE840A0014A784 /* YUMIDesirePresentRegardGovernancer.m in Sources */, - E8950183282CAC6A007E459A /* YUMISeparationsAppearanceRegard.m in Sources */, - E8AC721E26F472BF007D6E91 /* FBCManeInstanllingCeremony.h in Sources */, + E87A24F1272935920086A794 /* XPMessageRemoteExtModel.m in Sources */, + E8D34D5028080362009C4835 /* XPMineDataGiftTableViewCell.m in Sources */, + E87C54BE2823CC5B0051AA11 /* XPMineResetLoginPwdPresenter.m in Sources */, + E85E7B322A4EB0D300B6D00A /* XPGuildAnchorIncomeSectionView.m in Sources */, + 142721AC29A75F6F00C7C423 /* DDLog.m in Sources */, + E83953222769F33B00CF2F24 /* XPRoomFunctionContainerView.m in Sources */, + E87C0AA027D9DE6400CB2241 /* RoomFaceSendInfoModel.m in Sources */, + 1464C5F629A4CA8C00AF7C94 /* XPIAPRechargeCollectionViewCell.m in Sources */, + E8751E6328A646400056EF44 /* XPSailingRankView.m in Sources */, + 9BD9A18027A0EFC7004186FE /* XPMineVisitorTableViewCell.m in Sources */, + E85E7B112A4EB0D200B6D00A /* GuildPersonIncomeRecordModel.m in Sources */, + 9BD2ECD2288F833B00F5CD9A /* XPMineFootPrintModel.m in Sources */, + E824546626F5FF6000BE8163 /* XPMineResetPayPasswordProtocol.h in Sources */, + E89DA66427005932008483C1 /* XPIAPHelper.m in Sources */, + E824545E26F5EF2200BE8163 /* XPMineVerifIdentityProtocol.h in Sources */, + E824545326F5CEAD00BE8163 /* XPMineModifPayProtocol.h in Sources */, + E84BF7D7277C6E2100EF8877 /* XPRoomRoleViewController.m in Sources */, + E85E7B242A4EB0D300B6D00A /* XPMineGuildSuperAdminSetViewController.m in Sources */, + E87DF4C22A42C900009C1185 /* XPNoteView.m in Sources */, + E8AB631328ADDCF20023B0D2 /* XPMonentsTopicHeaderView.m in Sources */, + 9B86D886281942D200494FCD /* SocialMicroView.m in Sources */, + E8664ED027E42238000171BA /* XPRoomPKTimePickerView.m in Sources */, + E85E7B2B2A4EB0D300B6D00A /* XPNewGuildTimePickView.m in Sources */, + E824544826F5945300BE8163 /* XPMinePayPwdProtocol.h in Sources */, + E8AB633628AE54A40023B0D2 /* XPSailingPrizeCollectionViewCell.m in Sources */, + E85E7B4E2A4EB0D300B6D00A /* XPMineGuildSetNameViewController.m in Sources */, + 2331C1642A5EB71000E1D940 /* NobleInfo.m in Sources */, + E824543A26F5880E00BE8163 /* XPLoginVerifBindPhoneProtocol.h in Sources */, + E821077E2987D67100DE7040 /* MessageRiskAlertModel.m in Sources */, + E818DD222A48977F00F163F7 /* XPLoginAreaTableViewCell.m in Sources */, + E81060F72987C8A700B772F0 /* MessageApplicationShareModel.m in Sources */, + E8E20BE2281695800033B688 /* XPMineLoginPasswordViewController.m in Sources */, + E84A2EA22A52883000D6AF8A /* XPIncomeRecordGoldDetailsTimeView.m in Sources */, + E86E79D628A4EA0C006DAF48 /* SessionRiskCache.m in Sources */, + E824543826F5820A00BE8163 /* XPLoginVerifBindPhonePresenter.m in Sources */, + E8B846BF26FD827900A777FE /* XPMineUserInfoAlbumViewController.m in Sources */, + E84CBCE128436D3C00D43221 /* XPMineContactViewController.m in Sources */, + E8D48253278D8228003C1D08 /* AcrossRoomPKPanelModel.m in Sources */, + E824545C26F5EEBA00BE8163 /* XPMineVerifIdentityPresenter.m in Sources */, + 9B9BBF83288FBFB3004E2E74 /* XPNewUserRoomGiftView.m in Sources */, + E838369A298A59C100112E1C /* MessageTipsView.m in Sources */, + E8899C852785CC69007944BE /* XPRoomDatingAnimationView.m in Sources */, + 2331C16F2A5EB71000E1D940 /* XPNobleCenterNavView.m in Sources */, + E85E7B1B2A4EB0D200B6D00A /* XPMineMainIncomeStatisViewController.m in Sources */, + E84BF7D4277C383700EF8877 /* XPRoomSettingInputView.m in Sources */, + E8AC723726F49982007D6E91 /* XPMineNotificaProtocol.h in Sources */, + E896EFAC2771AEFE00AD2CC1 /* XPMineFriendTableViewCell.m in Sources */, + E8664ED327E4258A000171BA /* RoomPKTimeItemModel.m in Sources */, + E8412FA22779BE8F006E1101 /* XPRoomSettingViewController.m in Sources */, + E89D60BD271D647A001F8895 /* XPRoomPresenter.m in Sources */, + E8751E5C28A62A530056EF44 /* XPSailingViewController.m in Sources */, + 9B7D904D287BC5E20033A45E /* AnchorRoomScrollView.m in Sources */, + E80DE4072775665000BE5BCB /* XPFirstRechargeCollectionViewCell.m in Sources */, + E8899C822785A694007944BE /* DatingInfoModel.m in Sources */, + 9BB89DC327FE7F3A00586A83 /* XPAnchorFansRelationModel.m in Sources */, + E8AC723226F49710007D6E91 /* XPMineNotificationTableViewCell.m in Sources */, + E87E62592A3F560B002F68C9 /* XPHomePartyViewController.m in Sources */, + E8AC722926F488DA007D6E91 /* XPMineFeedbackProtocol.h in Sources */, + E8A3539128FE5F0F0014A784 /* WishGiftInfoModel.m in Sources */, + E85E7B3C2A4EB0D300B6D00A /* XPGuildSuperAdminRoomCollectionViewCell.m in Sources */, + E85E7B2A2A4EB0D300B6D00A /* XPGuildTimeMonthPickerView.m in Sources */, + E87E62782A3F5907002F68C9 /* XPNewHomePartyTableViewCell.m in Sources */, + E8A3539B28FE840A0014A784 /* XPWishGiftViewController.m in Sources */, + E8950183282CAC6A007E459A /* XPMonentsPhotoView.m in Sources */, + E8AC721E26F472BF007D6E91 /* XPMineSettingProtocol.h in Sources */, E8F63CB4298B563D00B338BA /* Api+SayHello.m in Sources */, - E81E09C9290F71BF00A1F410 /* YUMIAdvertiseRegard.m in Sources */, - 9BC5C91F277C902B007C8719 /* YUMIReleaseWirelessRegard.m in Sources */, - E84843AF27F59E7E0050D365 /* YUMIChamberCombatConsequentRegard.m in Sources */, - E83DB47A27462C4500D8CBD1 /* YUMIPresentBigCaptureMatrix.m in Sources */, - E86A16C52856DBEC004228B8 /* DiscoveryStrangeBewelcometoStatementMatrix.m in Sources */, - E81366F826F0C12A0076364C /* SurmountFullAbstractCeremony.h in Sources */, - 9BBC028E2786FA060007C24B /* MagnificentSolitaireMatrix.m in Sources */, - 9BCB99A628F582EC00466D64 /* YUMIManeAssembleChamberCompileElement.m in Sources */, + E81E09C9290F71BF00A1F410 /* XPAdvertiseView.m in Sources */, + 9BC5C91F277C902B007C8719 /* XPReleaseRadioView.m in Sources */, + E84843AF27F59E7E0050D365 /* XPRoomPKResultView.m in Sources */, + E83DB47A27462C4500D8CBD1 /* XPGiftBigPrizeModel.m in Sources */, + E86A16C52856DBEC004228B8 /* FindNewGreetListModel.m in Sources */, + 2331C1632A5EB71000E1D940 /* XPNobleCenterPresenter.m in Sources */, + E81366F826F0C12A0076364C /* LoginFullInfoProtocol.h in Sources */, + 9BBC028E2786FA060007C24B /* NobleCardModel.m in Sources */, + 9BCB99A628F582EC00466D64 /* XPMineCollectRoomEditCell.m in Sources */, E8E70D7E26F2F19D00F03460 /* Api+Mine.m in Sources */, - 142721AE29A75F6F00C7C423 /* BWGAccuratelumbes.m in Sources */, - E85E7B3B2A4EB0D300B6D00A /* YUMIUnionHuntforSensationalManagementTabulationRegardElement.m in Sources */, - E8751E6E28A64F990056EF44 /* YUMIMarchingDispossessTabulationRegardElement.m in Sources */, - E87E625A2A3F560B002F68C9 /* YUMIResidenceEncourageRegardGovernancer.m in Sources */, - E8950189282CFFB1007E459A /* YUMISeparationsProgrammingDisposition.m in Sources */, - E81061032987CFCE00B772F0 /* CommunicationCommunicationSolitaireMatrix.m in Sources */, - 9BD9A18727A120FD004186FE /* YUMIManeVacationerUnReadMatrix.m in Sources */, - E85E7BAD2A4EC99300B6D00A /* YUMIManeGiveDiamondSpecificsElement.m in Sources */, - E824543D26F58C3A00BE8163 /* YUMISurmountDilemmaSuccessRegard.m in Sources */, - E85E7B282A4EB0D300B6D00A /* YUMICollectiveParrotRegard.m in Sources */, - 9BE01AF72893E7F500B50299 /* YUMIStrangeConsumerReindictAssembletionRegardElement.m in Sources */, - E81125C7296E596D000D9804 /* MHTIntrojectionAppearancetElement.m in Sources */, - E8EEB8F726FC2673007C6EBA /* ConsumerAppearance.m in Sources */, - E81061002987CDCC00B772F0 /* CommunicationTweetMatrix.m in Sources */, - E87DF4CC2A42C960009C1185 /* ResidenceOriflammeAbstractMatrix.m in Sources */, - E8664EDF27E45EC7000171BA /* YUMIChamberCombatReflectionExternalizer.m in Sources */, + 142721AE29A75F6F00C7C423 /* DDFileLogger.m in Sources */, + E85E7B3B2A4EB0D300B6D00A /* XPGuildSearchSuperAdminTableViewCell.m in Sources */, + E8751E6E28A64F990056EF44 /* XPSailingEmptyTableViewCell.m in Sources */, + E87E625A2A3F560B002F68C9 /* XPHomeRecommendViewController.m in Sources */, + E8950189282CFFB1007E459A /* XPMonentsLayoutConfig.m in Sources */, + E81061032987CFCE00B772F0 /* MessageSkillCardModel.m in Sources */, + 9BD9A18727A120FD004186FE /* XPMineVisitorUnReadModel.m in Sources */, + E85E7BAD2A4EC99300B6D00A /* XPMineGiveDiamondDetailsCell.m in Sources */, + E824543D26F58C3A00BE8163 /* XPLoginBindSuccessView.m in Sources */, + E85E7B282A4EB0D300B6D00A /* XPClanMenuView.m in Sources */, + 9BE01AF72893E7F500B50299 /* XPNewUserRechargeCollectionViewCell.m in Sources */, + E81125C7296E596D000D9804 /* QInputPhototCell.m in Sources */, + E8EEB8F726FC2673007C6EBA /* UserPhoto.m in Sources */, + E81061002987CDCC00B772F0 /* MessageTweetModel.m in Sources */, + E87DF4CC2A42C960009C1185 /* HomeBannerInfoModel.m in Sources */, + E8664EDF27E45EC7000171BA /* XPRoomPKRecordPresenter.m in Sources */, E81C27A226EF23490031E639 /* YUMINNNN.h in Sources */, - E80E900C27E0358900434B90 /* YUMIChamberMotifPrecautiousRegard.m in Sources */, - 9BDA3E7A27FD43EF00517FE6 /* XCombatellegFanaticsSquadEntranceRegard.m in Sources */, - E81C279826EB3AC40031E639 /* SurmountForgetCiphercodeCeremony.h in Sources */, - 9BAC92F228E6A05600147DD8 /* YUMIChamberImportpriseDisportMatrix.m in Sources */, - 9BD8D4E328911E9900AE03FF /* YUMIManeAssembleChamberStatementRegardGovernancer.m in Sources */, - E80E09A22A40B5DD00CD2BE7 /* YUMIConfectioneryTimberRegardGovernancer.m in Sources */, - 9B2EA7C628041EFC00ED17BF /* XCombatellegPkFasciaboardRegard.m in Sources */, - E84150BB27747BAF00A7F548 /* YUMIThresholdReindictExternalizer.m in Sources */, - E8A88D2D27E81E8700CA8837 /* ChamberCombatChooseConsumerMatrix.m in Sources */, + E80E900C27E0358900434B90 /* XPRoomTopicAlertView.m in Sources */, + 9BDA3E7A27FD43EF00517FE6 /* XPAnchorFansTeamEntranceView.m in Sources */, + E81C279826EB3AC40031E639 /* LoginForgetPasswordProtocol.h in Sources */, + 9BAC92F228E6A05600147DD8 /* XPRoomActivityPlayModel.m in Sources */, + 9BD8D4E328911E9900AE03FF /* XPMineCollectRoomListViewController.m in Sources */, + 2331C1732A5EB71000E1D940 /* XPNoblePrivilegeCell.m in Sources */, + 9B2EA7C628041EFC00ED17BF /* XPAnchorPkPanelView.m in Sources */, + E84150BB27747BAF00A7F548 /* XPFirstRechargePresenter.m in Sources */, + E8A88D2D27E81E8700CA8837 /* RoomPKChooseUserModel.m in Sources */, E82325F9274E2E42003A3332 /* Api+UserCard.m in Sources */, - E8AB632F28AE19DE0023B0D2 /* YUMISeparationManeExternalizer.m in Sources */, - E85E7B042A4EB0D200B6D00A /* YUMIUnionRevenueSpecificExternalizer.m in Sources */, - 9BD9A17C27A0EE24004186FE /* YUMIManeVacationerRegardGovernancer.m in Sources */, - E82109B026F1D83500FC3319 /* SurmountDilemmaMobileExternalize.m in Sources */, - 237D64BC2A57FDAA000442C6 /* XPTreasureFairyFriendCell.m in Sources */, - E81C1B1F27705F7A0020D1E4 /* YUMIScheduleLoudspeakerRegardGovernancer.m in Sources */, - E8B825C726EA0D9A009E8E9F /* SurmountVerifCodeCeremony.h in Sources */, - 14A6034C29A35EE600D2A6A5 /* YUMIManeProvisionTabulationRegardElement.m in Sources */, - 9BAC92F528E6E63000147DD8 /* YUMIChamberInsideOperationElement.m in Sources */, - 9BE570BC28F65B7200D491A5 /* YUMIManeAssembleChamberElement.m in Sources */, - E86A16C22856D635004228B8 /* YUMIInterlocutionDiscoveryStrangeBewelcometoTabulationRegardElement.m in Sources */, - E824544E26F5BC1A00BE8163 /* YUMIManeModifIntersectPwordRegard.m in Sources */, - E86E79CD28A4E045006DAF48 /* CommunicationSatisfactionVenturePrecautiousRegard.m in Sources */, + E8AB632F28AE19DE0023B0D2 /* XPMonentMinePresenter.m in Sources */, + E85E7B042A4EB0D200B6D00A /* XPGuildIncomeDetailPresenter.m in Sources */, + 9BD9A17C27A0EE24004186FE /* XPMineVisitorViewController.m in Sources */, + E82109B026F1D83500FC3319 /* LoginBindPhonePresent.m in Sources */, + E81C1B1F27705F7A0020D1E4 /* XPArrangeMicViewController.m in Sources */, + E8B825C726EA0D9A009E8E9F /* LoginVerifCodeProtocol.h in Sources */, + 2331C1B32A60F32D00E1D940 /* XPCandyTreeMoreRuleCell.m in Sources */, + 14A6034C29A35EE600D2A6A5 /* XPMineItemTableViewCell.m in Sources */, + 9BAC92F528E6E63000147DD8 /* XPRoomInsideOperationCell.m in Sources */, + 9BE570BC28F65B7200D491A5 /* XPMineCollectRoomCell.m in Sources */, + E86A16C22856D635004228B8 /* XPSessionFindNewGreetTableViewCell.m in Sources */, + E824544E26F5BC1A00BE8163 /* XPMineModifPayPwdView.m in Sources */, + E86E79CD28A4E045006DAF48 /* MessageContentRiskAlertView.m in Sources */, E855515B280559FE005F293F /* NSDate+DateUtils.m in Sources */, - E8664EE327E47711000171BA /* YUMIChamberCombatReflectionNickRegard.m in Sources */, - E8C1CD7327D8A16500376F83 /* YUMIChamberAcceptTool.m in Sources */, - E81DCCCD282B63B40039E5C5 /* YUMISeparationsRegardGovernancer.m in Sources */, - E86507EB281A88A9006951B0 /* CommunicationSatisfactionCommunicationSolitaireRegard.m in Sources */, - E8B825CA26EA1231009E8E9F /* SurmountValidationCodeRegardGovernancer.m in Sources */, + E8664EE327E47711000171BA /* XPRoomPKRecordNickView.m in Sources */, + E8C1CD7327D8A16500376F83 /* XPRoomFaceTool.m in Sources */, + E81DCCCD282B63B40039E5C5 /* XPMonentsViewController.m in Sources */, + E86507EB281A88A9006951B0 /* MessageContentSkillCardView.m in Sources */, + E8B825CA26EA1231009E8E9F /* LoginVerifCodeViewController.m in Sources */, 189DD76226E60DDC00AB55B1 /* Api+Login.m in Sources */, - E8412FA62779BED1006E1101 /* YUMIChamberInstanllingTabulationRegardElement.m in Sources */, + E8412FA62779BED1006E1101 /* XPRoomSettingTableViewCell.m in Sources */, 9B7D80502753AA9D003DAC0C /* UITableView+NIMScrollToBottom.m in Sources */, - E8AFF7E3298CA1E500FBDE32 /* InterlocutionSpeakHalloComputationMatrix.m in Sources */, - E8998D7A2859784200C68558 /* YUMISVGADisporter.m in Sources */, - 9BD9A18427A0F128004186FE /* YUMIManeVacationerProvisionMatrix.m in Sources */, - E852D73E28631C18001465ED /* YUMISeparationsJudgementTabulationRegardElement.m in Sources */, - E85E7BA22A4EC99300B6D00A /* YUMIManeGiveDiamondHuntforMatrix.m in Sources */, - 1427219829A75F6F00C7C423 /* HyperTextServer.m in Sources */, - E80B0712280D0A6700A79F63 /* FanaticsAbstractMatrix.m in Sources */, - E87E62682A3F571D002F68C9 /* YUMIResidenceAccommodatedExternalizer.m in Sources */, - E8EEB8F326FC2050007C6EBA /* SDWaitingRegard.m in Sources */, - E85E7B2F2A4EB0D300B6D00A /* YUMIGoldRevenueDivisionRegard.m in Sources */, - E8DEC9A12764A5D20078CB70 /* YUMIChamberFurthaerProvisionMatrix.m in Sources */, - E80EC81028ACD84000D133C5 /* MHTExtendDirectorateRegard.m in Sources */, - 237D64B82A57FDAA000442C6 /* TreasureFairyBallInfoModel.m in Sources */, - 237D64B42A57FDAA000442C6 /* TreasureFairyUserInfoModel.m in Sources */, - 9B87B3CD2926473D00085110 /* YUMIInterlocutionStatementIntelligenceAssistantElement.m in Sources */, - E85E7B492A4EB0D300B6D00A /* YUMIManeUnionHuntforRegardGovernancer.m in Sources */, - E80E09A02A40B5DD00CD2BE7 /* YUMIConfectioneryTimberFurthaerPreadominantElement.m in Sources */, - 9B86D88328192DC000494FCD /* YUMIChamberRateEntranceRegard.m in Sources */, - E85E7B012A4EB0D200B6D00A /* YUMISensationalManagementSetExternalizer.m in Sources */, - 18F404B7276095D700A6C548 /* InterlocutionChatLimitRegard.m in Sources */, - E8788942273A55AD00BF1D57 /* YUMIExternalizeConsumersRegard.m in Sources */, - 9BD9A17927A0EC57004186FE /* YUMIManeVacationerExternalizer.m in Sources */, - E8BD0F8828A9E9E400DE050D /* ChamberMarchingCaptureMatrix.m in Sources */, - E8A1F79C290644DC0099C952 /* YUMIChamberFurthaerDisportAssembletionRegardElement.m in Sources */, - E8659909273E800D00EE349D /* YUMIPresentAssembletionRegardFlowProgramming.m in Sources */, - E85E7B262A4EB0D300B6D00A /* YUMIManeUnionRegardGovernancer.m in Sources */, - E85E7B672A4EC35A00B6D00A /* YUMIDilemmaExtractAbstractMatrix.m in Sources */, - E8B846CB26FDD7CD00A777FE /* YUMIManeReindictRegardGovernancer.m in Sources */, - E86596512701A1C000846EBD /* StatsticsticsServing.m in Sources */, - 237D64CD2A57FDAA000442C6 /* XPTreasureFairyMoreView.m in Sources */, - E824544026F58F9400BE8163 /* YUMIManeIntersectPwordRegardGovernancer.m in Sources */, - 9BE01AED2893D0DF00B50299 /* YUMIPretendProcurementHuntforTabulationRegardElement.m in Sources */, - E81060F12987C52B00B772F0 /* CommunicationUnionMatrix.m in Sources */, - E87E62772A3F5907002F68C9 /* YUMIStrangeResidenceEncourageTabulationRegardElement.m in Sources */, - 9BA812D228BF145700783EA7 /* ClientDeficitSheatheMatrix.m in Sources */, - E80E09A32A40B5DD00CD2BE7 /* YUMIConfectioneryTimberInsufficientBalanceRegard.m in Sources */, - 1427219229A75F6F00C7C423 /* MultipartFormAtomicAnatomiser.m in Sources */, - E890BC04273CF0500007C46B /* YUMIPresentComputationMatrix.m in Sources */, - E899C68C275093B800E189E5 /* YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix.m in Sources */, - 9B6E8573281AB9B20041A321 /* YUMIChamberInsideEncourageElement.m in Sources */, - E8A3538528FD67320014A784 /* PresentFortunatePingbackMatrix.m in Sources */, - 9B4C5B86292F81FA00CEA41B /* YUMIInterlocutionStatementFanaticsParatiesMatrix.m in Sources */, - E82325F5274E2E09003A3332 /* YUMIConsumerSolitaireExternalizer.m in Sources */, - 237D64B12A57FDAA000442C6 /* TreasureFairySendRecordModel.m in Sources */, - E80EC80B28ACD84000D133C5 /* MHTIntrojectionObstacleRegardDispositionuration.m in Sources */, - E880B39E278BD49E00A83B0D /* YUMIThroughoutChamberCombatRegardGovernancer.m in Sources */, - E8AC723D26F4B6AA007D6E91 /* YUMISurmountDilemmaMobileConsequentRegardGovernancer.m in Sources */, - E8AB632728AE13210023B0D2 /* YUMISeparationsMotifStatementExternalizer.m in Sources */, - 1427218729A75F6F00C7C423 /* MyHyperTextConnection.m in Sources */, - E8D55C9D28113218006935A5 /* CommunicationParrotMatrix.m in Sources */, - E87DF4EF2A42CB90009C1185 /* YUMIResidenceAssembleChamberTabulationRegardElement.m in Sources */, + E8AFF7E3298CA1E500FBDE32 /* SessionSayHelloCountModel.m in Sources */, + E8998D7A2859784200C68558 /* XPSVGAPlayer.m in Sources */, + 9BD9A18427A0F128004186FE /* XPMineVisitorItemModel.m in Sources */, + E852D73E28631C18001465ED /* XPMonentsCommentTableViewCell.m in Sources */, + E85E7BA22A4EC99300B6D00A /* XPMineGiveDiamondSearchModel.m in Sources */, + 1427219829A75F6F00C7C423 /* HTTPServer.m in Sources */, + E80B0712280D0A6700A79F63 /* FansInfoModel.m in Sources */, + E87E62682A3F571D002F68C9 /* XPHomeContainerPresenter.m in Sources */, + E8EEB8F326FC2050007C6EBA /* SDWaitingView.m in Sources */, + E85E7B2F2A4EB0D300B6D00A /* XPGoldIncomeSectionView.m in Sources */, + E8DEC9A12764A5D20078CB70 /* XPRoomMoreItemModel.m in Sources */, + E80EC81028ACD84000D133C5 /* QExtendBoardView.m in Sources */, + 9B87B3CD2926473D00085110 /* XPSessionListHeadFriendCell.m in Sources */, + E85E7B492A4EB0D300B6D00A /* XPMineGuildSearchViewController.m in Sources */, + 9B86D88328192DC000494FCD /* XPRoomRankEntranceView.m in Sources */, + E85E7B012A4EB0D200B6D00A /* XPSuperAdminSetPresenter.m in Sources */, + 18F404B7276095D700A6C548 /* SessionChatLimitView.m in Sources */, + E8788942273A55AD00BF1D57 /* XPGiftUsersView.m in Sources */, + 9BD9A17927A0EC57004186FE /* XPMineVisitorPresenter.m in Sources */, + E8BD0F8828A9E9E400DE050D /* RoomSailingPrizeModel.m in Sources */, + E8A1F79C290644DC0099C952 /* XPRoomMorePlayCollectionViewCell.m in Sources */, + E8659909273E800D00EE349D /* XPGiftCollectionViewFlowLayout.m in Sources */, + E85E7B262A4EB0D300B6D00A /* XPMineGuildViewController.m in Sources */, + E85E7B672A4EC35A00B6D00A /* XPBindExtractInfoModel.m in Sources */, + E8B846CB26FDD7CD00A777FE /* XPMineRechargeViewController.m in Sources */, + E86596512701A1C000846EBD /* StatisticsService.m in Sources */, + E824544026F58F9400BE8163 /* XPMinePayPwdViewController.m in Sources */, + 9BE01AED2893D0DF00B50299 /* XPDressShopSearchTableViewCell.m in Sources */, + E81060F12987C52B00B772F0 /* MessageGuildModel.m in Sources */, + E87E62772A3F5907002F68C9 /* XPNewHomeRecommendTableViewCell.m in Sources */, + 9BA812D228BF145700783EA7 /* ClientRedPacketModel.m in Sources */, + 1427219229A75F6F00C7C423 /* MultipartFormDataParser.m in Sources */, + E890BC04273CF0500007C46B /* XPGiftCountModel.m in Sources */, + E899C68C275093B800E189E5 /* XPUserCardMicroItemModel.m in Sources */, + 2331C1B52A60F32D00E1D940 /* XPCandyTreeViewController.m in Sources */, + 9B6E8573281AB9B20041A321 /* XPRoomInsideRecommendCell.m in Sources */, + E8A3538528FD67320014A784 /* GiftLuckyBroadcastModel.m in Sources */, + 9B4C5B86292F81FA00CEA41B /* XPSessionListFansPartyModel.m in Sources */, + E82325F5274E2E09003A3332 /* XPUserCardPresenter.m in Sources */, + E80EC80B28ACD84000D133C5 /* QInputBarViewConfiguration.m in Sources */, + 2331C1772A5EB71000E1D940 /* XPNobleCenterListViewController.m in Sources */, + E880B39E278BD49E00A83B0D /* XPAcrossRoomPKViewController.m in Sources */, + 2331C1AA2A60F32D00E1D940 /* XPCandyTreePresenter.m in Sources */, + E8AC723D26F4B6AA007D6E91 /* XPLoginBindPhoneResultViewController.m in Sources */, + E8AB632728AE13210023B0D2 /* XPMonentsTopicListPresenter.m in Sources */, + 1427218729A75F6F00C7C423 /* MyHTTPConnection.m in Sources */, + E8D55C9D28113218006935A5 /* MessageMenuModel.m in Sources */, + E87DF4EF2A42CB90009C1185 /* XPHomeCollectRoomTableViewCell.m in Sources */, 189DD73E26E21C3F00AB55B1 /* YYUtility.m in Sources */, - 14A6034F29A36D8300D2A6A5 /* YUMISimpleManeIntelligencerRegard.m in Sources */, - E81C1B2F277071670020D1E4 /* YUMIScheduleLoudspeakerAbstractMatrix.m in Sources */, - 9B0086CA27BA4F570032BD2B /* KellegMiecreoscoopeRegard.m in Sources */, - E83ABF00280EC45700322EE4 /* CommunicationSatisfactionApplicationParaticipationRegard.m in Sources */, - F1D8556F2931FC86008C418F /* YUMIChamberYearImportpriseRegard.m in Sources */, - 237D64E32A57FDAA000442C6 /* Api+TreasureFairy.m in Sources */, - E8B9843628ABA8B40022D026 /* YUMISeparationAnnounceSuccessRegard.m in Sources */, - E87DF4E02A42CA92009C1185 /* YUMIResidenceSloganRegardGovernancer.m in Sources */, - E81C279626EB39CC0031E639 /* SurmountForgetCiphercodeExternalize.m in Sources */, + 14A6034F29A36D8300D2A6A5 /* XPSimpleMineHeaderView.m in Sources */, + E81C1B2F277071670020D1E4 /* XPArrangeMicInfoModel.m in Sources */, + 9B0086CA27BA4F570032BD2B /* AnchorMicroView.m in Sources */, + E83ABF00280EC45700322EE4 /* MessageContentApplicationShareView.m in Sources */, + F1D8556F2931FC86008C418F /* XPRoomYearActivityView.m in Sources */, + E8B9843628ABA8B40022D026 /* XPMonentPublishSuccessView.m in Sources */, + E87DF4E02A42CA92009C1185 /* XPHomeSloganViewController.m in Sources */, + E81C279626EB39CC0031E639 /* LoginForgetPasswordPresent.m in Sources */, 18EE3FF42750FA3700A452BF /* UIView+NIM.m in Sources */, - 9BD63FB4277EF1B3006EB744 /* YUMIReleaseWirelessMatrix.m in Sources */, - E80EC8C228ACF97A00D133C5 /* MHTESentimentIndicateRegard.m in Sources */, - E8A03DFF27635F960098D9EA /* YUMIChamberConfectioneryPresentRegard.m in Sources */, + 9BD63FB4277EF1B3006EB744 /* XPReleaseRadioModel.m in Sources */, + E80EC8C228ACF97A00D133C5 /* QEEmotionImageView.m in Sources */, + E8A03DFF27635F960098D9EA /* XPRoomCandyGiftView.m in Sources */, E8A3538E28FE5CED0014A784 /* Api+WishGift.m in Sources */, - 180116F9279E8C4C00F2CBC0 /* PLIntratemporalUtil.m in Sources */, - E87E545429AA05EA00EBE52B /* YUMITerminalImpressionNevRegard.m in Sources */, - E8252FEE27687DF1002B3164 /* ImportpriseAbstractMatrix.m in Sources */, - E84BF7D1277BFCDD00EF8877 /* ChamberCoupleMatrix.m in Sources */, - 237D64AF2A57FDAA000442C6 /* TreasureFairyLimitModel.m in Sources */, - E8AC723526F49939007D6E91 /* YUMIManeNotificaExternalizer.m in Sources */, - 1427218E29A75F6F00C7C423 /* HyperTextCommunication.m in Sources */, + 180116F9279E8C4C00F2CBC0 /* PLTimeUtil.m in Sources */, + E87E545429AA05EA00EBE52B /* XPFootPrintNavView.m in Sources */, + E8252FEE27687DF1002B3164 /* ActivityInfoModel.m in Sources */, + E84BF7D1277BFCDD00EF8877 /* RoomTagModel.m in Sources */, + E8AC723526F49939007D6E91 /* XPMineNotificaPresenter.m in Sources */, + 1427218E29A75F6F00C7C423 /* HTTPMessage.m in Sources */, E80DE40A277568D300BE5BCB /* ThemeColor+FirstRecharge.m in Sources */, - 9B42869828C1E06B009034D2 /* YUMIDeficitSheatheMatrix.m in Sources */, - 18EE3FE22750C29D00A452BF /* NEMCBadgeRegard.m in Sources */, - E82EE0F8272FDDFA00D15DC1 /* ConsumerPrivacyRegard.m in Sources */, - 237D64B32A57FDAA000442C6 /* TreasureFairyTrialsRecordModel.m in Sources */, - 9BA812E428BF70A600783EA7 /* YUMIChamberDeficitSheathePwordRegard.m in Sources */, - E8998D8B2859CB6A00C68558 /* YUMIManeConsumerAbstractPresentRamparatMetroRegardGovernancer.m in Sources */, - E8DEC9A42764A6600078CB70 /* YUMIFurthaerParrotExternalizer.m in Sources */, - 189DD53426DE255300AB55B1 /* TabbarRegardGovernancer.m in Sources */, - 9BA3B40B293DCDFD0071DF1C /* YUMIVersionRefurbishMatrix.m in Sources */, - 18EE401A2754BA9F00A452BF /* NEMCCommunicationMaker.m in Sources */, - E8EEB91D26FC9D58007C6EBA /* YUMIManeConsumerAbstractDateRegard.m in Sources */, - E80E09972A40B5DD00CD2BE7 /* YUMIConfectioneryTimberExternalizer.m in Sources */, - E82325E9274CE56A003A3332 /* YUMIParaticipationProvision.m in Sources */, - E85E7B192A4EB0D200B6D00A /* UnionCommunicationMatrix.m in Sources */, - 1427219429A75F6F00C7C423 /* HyperTextAuthenticationRequest.m in Sources */, - E890BC0D273D09A50007C46B /* YUMIPresentComputationRegard.m in Sources */, - E880B3B2278C1D1800A83B0D /* YUMIThroughoutChamberCombatPreadominantRegard.m in Sources */, - E8A3539428FE605F0014A784 /* DesireExternalizeConsumerMatrix.m in Sources */, - E81C1B262770663B0020D1E4 /* YUMIScheduleLoudspeakerTabulationRegardElement.m in Sources */, - E81A652B2834E4F600F55894 /* YUMISeparationsConsiderationRegardGovernancer.m in Sources */, - E8E20BEC2816A5B90033B688 /* YUMIManeBlackStatementRegardGovernancer.m in Sources */, - E8AC722F26F49610007D6E91 /* YUMIManeNotificationProvisionMatrix.m in Sources */, - E85410352864155A005CFD9F /* YUMISeparationSpecificExternalizer.m in Sources */, - 9B1B72BC28003E06003FACE9 /* XCombatellegCombatTabulationRegardElement.m in Sources */, - E8E70D7A26F2F16600F03460 /* YUMIManeExternalize.m in Sources */, - E85E7B632A4EC35A00B6D00A /* YUMIWithdrawAccountMatrix.m in Sources */, - E87DF4D42A42C9B1009C1185 /* ResidenceEncourageChamberMatrix.m in Sources */, - 9B42869C28C1FD3D009034D2 /* YUMIUnfoildDeficitSheatheElement.m in Sources */, - 9BFE992E288142FD009DA429 /* ChamberClassifyMatrix.m in Sources */, - E80E09992A40B5DD00CD2BE7 /* ConfectioneryTimberReflectionMatrix.m in Sources */, - 142721AB29A75F6F00C7C423 /* DispatchMHTueueLumberInitialiser.m in Sources */, - E8A88D3027E85EEA00CA8837 /* ChamberCombatAbstractMatrix.m in Sources */, - E85E7B022A4EB0D200B6D00A /* YUMISensationalManagementExecutiveChamberExternalizer.m in Sources */, - E8AB633328AE51470023B0D2 /* YUMIMarchingCaptureRegard.m in Sources */, - 9B2F72D328E45C5A0000E4FA /* YUMIChamberMHTuidkCommunicationElement.m in Sources */, - 237D64B22A57FDAA000442C6 /* TreasureFairyRewardModel.m in Sources */, - E85E7B402A4EB0D300B6D00A /* YUMIUnionFeatureRevenueTabulationRegardElement.m in Sources */, + 9B42869828C1E06B009034D2 /* XPRedPacketModel.m in Sources */, + 18EE3FE22750C29D00A452BF /* NIMBadgeView.m in Sources */, + E82EE0F8272FDDFA00D15DC1 /* UserPrivacyView.m in Sources */, + 2331C1672A5EB71000E1D940 /* NobleLevelUpModel.m in Sources */, + 9BA812E428BF70A600783EA7 /* XPRoomRedPacketPwdView.m in Sources */, + 2331C1662A5EB71000E1D940 /* NobleCenterModel.m in Sources */, + E8998D8B2859CB6A00C68558 /* XPMineUserInfoGiftWallSubViewController.m in Sources */, + E8DEC9A42764A6600078CB70 /* XPMoreMenuPresenter.m in Sources */, + 189DD53426DE255300AB55B1 /* TabbarViewController.m in Sources */, + 9BA3B40B293DCDFD0071DF1C /* XPVersionUpdateModel.m in Sources */, + 18EE401A2754BA9F00A452BF /* NIMMessageMaker.m in Sources */, + E8EEB91D26FC9D58007C6EBA /* XPMineUserInfoDateView.m in Sources */, + E82325E9274CE56A003A3332 /* XPShareItem.m in Sources */, + E85E7B192A4EB0D200B6D00A /* GuildMessageModel.m in Sources */, + 1427219429A75F6F00C7C423 /* HTTPAuthenticationRequest.m in Sources */, + E890BC0D273D09A50007C46B /* XPGiftCountView.m in Sources */, + E880B3B2278C1D1800A83B0D /* XPAcrossRoomPKRuleView.m in Sources */, + E8A3539428FE605F0014A784 /* WishGiftUserModel.m in Sources */, + E81C1B262770663B0020D1E4 /* XPArrangeMicTableViewCell.m in Sources */, + E81A652B2834E4F600F55894 /* XPMonentsAttentionViewController.m in Sources */, + E8E20BEC2816A5B90033B688 /* XPMineBlackListViewController.m in Sources */, + E8AC722F26F49610007D6E91 /* XPMineNotificationItemModel.m in Sources */, + E85410352864155A005CFD9F /* XPMonentDetailPresenter.m in Sources */, + 2331C1B12A60F32D00E1D940 /* XPCandyTreeGiftView.m in Sources */, + 9B1B72BC28003E06003FACE9 /* XPAnchorPKTableViewCell.m in Sources */, + E8E70D7A26F2F16600F03460 /* XPMinePresent.m in Sources */, + E85E7B632A4EC35A00B6D00A /* XPWithdrawAccountModel.m in Sources */, + E87DF4D42A42C9B1009C1185 /* HomeRecommendRoomModel.m in Sources */, + 9B42869C28C1FD3D009034D2 /* XPOpenRedPacketCell.m in Sources */, + 9BFE992E288142FD009DA429 /* RoomClassifyModel.m in Sources */, + 142721AB29A75F6F00C7C423 /* DispatchQueueLogFormatter.m in Sources */, + 2331C1B72A60F32D00E1D940 /* XPCandyRankContainerView.m in Sources */, + E8A88D3027E85EEA00CA8837 /* RoomPKInfoModel.m in Sources */, + E85E7B022A4EB0D200B6D00A /* XPSuperAdminManagerRoomPresenter.m in Sources */, + E8AB633328AE51470023B0D2 /* XPSailingPrizeView.m in Sources */, + 9B2F72D328E45C5A0000E4FA /* XPRoomQuidkMessageCell.m in Sources */, + E85E7B402A4EB0D300B6D00A /* XPGuildPersonIncomeTableViewCell.m in Sources */, E87E63F729AA1A5600EBE52B /* YuMi.xcdatamodeld in Sources */, - 9BE01ACE28925F7D00B50299 /* YUMIManeStrangeConsumerReindictRegard.m in Sources */, - 237D64DE2A57FDAA000442C6 /* XPTreasureFairyTrialsBallView.m in Sources */, - E83ABF03280EC90C00322EE4 /* SatisfactionApplicationParaticipationMatrix.m in Sources */, + 9BE01ACE28925F7D00B50299 /* XPMineNewUserRechargeView.m in Sources */, + E83ABF03280EC90C00322EE4 /* ContentApplicationShareModel.m in Sources */, 9BA812E028BF6ABB00783EA7 /* Api+RedPacket.m in Sources */, - 9BA3B40F293DD2F90071DF1C /* YUMIAscensionRegard.m in Sources */, - E81A654928351B9500F55894 /* YUMISeparationsEncourageIntelligencerRegard.m in Sources */, - E84B0E3F2727EDF6008818C6 /* YUMIChamberCommunicationTabulationRegardElement.m in Sources */, - E82325FC274E4735003A3332 /* YUMIConsumerSolitaireProvisionMatrix.m in Sources */, - E8C1CD6627D88EF800376F83 /* YUMIChamberAcceptRegardGovernancer.m in Sources */, - E80DE4102775C34E00BE5BCB /* YUMIThresholdReindictSuccessRegard.m in Sources */, + 9BA3B40F293DD2F90071DF1C /* XPUpgradeView.m in Sources */, + E81A654928351B9500F55894 /* XPMonentsRecommendHeaderView.m in Sources */, + E84B0E3F2727EDF6008818C6 /* XPRoomMessageTableViewCell.m in Sources */, + E82325FC274E4735003A3332 /* XPUserCardItemModel.m in Sources */, + E8C1CD6627D88EF800376F83 /* XPRoomFaceViewController.m in Sources */, + E80DE4102775C34E00BE5BCB /* XPFirstRechargeSuccessView.m in Sources */, E8412FB32779E285006E1101 /* Api+RoomSetting.m in Sources */, - 9B2F72D028E45A480000E4FA /* YUMIChamberMHTuickCommunicationContainRegard.m in Sources */, - E81060E82987720F00B772F0 /* CommunicationUnSupportMatrix.m in Sources */, - E8D34D6028082BA5009C4835 /* YUMIManeConsumerAtomicExternalizer.m in Sources */, - E84CBCE4284372D800D43221 /* YUMIChamberHalfCommunicationRegard.m in Sources */, - 140A818D299CFF1C00841594 /* YUMIVendorCallRegardGovernancer.m in Sources */, - E8EEB8F226FC2050007C6EBA /* SDAppearanceBrowser.m in Sources */, - E81C27AB26EF2D920031E639 /* ThirdConsumerAbstract.m in Sources */, + 9B2F72D028E45A480000E4FA /* XPRoomQuickMessageContainView.m in Sources */, + E81060E82987720F00B772F0 /* MessageUnSupportModel.m in Sources */, + E8D34D6028082BA5009C4835 /* XPMineUserDataPresenter.m in Sources */, + E84CBCE4284372D800D43221 /* XPRoomHalfMessageView.m in Sources */, + 140A818D299CFF1C00841594 /* XPVendorCallViewController.m in Sources */, + E8EEB8F226FC2050007C6EBA /* SDPhotoBrowser.m in Sources */, + E81C27AB26EF2D920031E639 /* ThirdUserInfo.m in Sources */, E8788950273A699900BF1D57 /* ThemeColor+SendGift.m in Sources */, E81C279D26EEEC620031E639 /* YUMIConstant.m in Sources */, - 9B734F73288A787000CBDAA9 /* YUMIManeAccountRegard.m in Sources */, - 14B880E1299A1799005FCA1B /* YUMISurmountRegardGovernancer.m in Sources */, - E8AA6EF227DF1E97009B4C2B /* YUMIChamberMotifExternalizer.m in Sources */, - 9BF4BEBC28D4182E009CF6C2 /* YUMIUnfoildDeficitSheatheMatrix.m in Sources */, - E89DCF5D2900E5EE001647EC /* DesirePresentHistoryMatrix.m in Sources */, - E873EB0C2809850D0071030D /* CommunicationSatisfactionCustomRegard.m in Sources */, - E884C36F2743AAC800E1EBED /* AttachmentMatrix.m in Sources */, - E8AC721926F46E0B007D6E91 /* YUMIManeInstanllingProvisionMatrix.m in Sources */, - 9BE01AF02893E31700B50299 /* StrangeConsumerReindictMatrix.m in Sources */, - E82325E6274CCAFA003A3332 /* YUMIParaticipationAbstractMatrix.m in Sources */, - 9B32A04728881845002009D2 /* YUMIChamberCoupleStatementRegard.m in Sources */, - E85E7B1D2A4EB0D200B6D00A /* YUMIManeCollectiveRevenueStatsticsRegardGovernancer.m in Sources */, - 189DD55A26DE39D200AB55B1 /* BaseMvpExternalizer.m in Sources */, - 1427219029A75F6F00C7C423 /* TissueSocket.m in Sources */, - E83ABEF9280EAF3F00322EE4 /* CommunicationSatisfactionUnfoildEnergeticRegard.m in Sources */, - E83ABF06280EDE2B00322EE4 /* CommunicationSatisfactionPrototypeAscensionRegard.m in Sources */, - E85E7B0E2A4EB0D200B6D00A /* UnionHuntforSensationalManagementMatrix.m in Sources */, + 9B734F73288A787000CBDAA9 /* XPMineAccountView.m in Sources */, + 14B880E1299A1799005FCA1B /* XPLoginViewController.m in Sources */, + E8AA6EF227DF1E97009B4C2B /* XPRoomTopicPresenter.m in Sources */, + 9BF4BEBC28D4182E009CF6C2 /* XPOpenRedPacketModel.m in Sources */, + E89DCF5D2900E5EE001647EC /* WishGiftHistoryModel.m in Sources */, + E873EB0C2809850D0071030D /* MessageContentCustomView.m in Sources */, + E884C36F2743AAC800E1EBED /* AttachmentModel.m in Sources */, + E8AC721926F46E0B007D6E91 /* XPMineSettingItemModel.m in Sources */, + 9BE01AF02893E31700B50299 /* NewUserRechargeModel.m in Sources */, + E82325E6274CCAFA003A3332 /* XPShareInfoModel.m in Sources */, + 9B32A04728881845002009D2 /* XPRoomTagListView.m in Sources */, + E85E7B1D2A4EB0D200B6D00A /* XPMineClanIncomeStatisViewController.m in Sources */, + 189DD55A26DE39D200AB55B1 /* BaseMvpPresenter.m in Sources */, + 1427219029A75F6F00C7C423 /* WebSocket.m in Sources */, + E83ABEF9280EAF3F00322EE4 /* MessageContentOpenLiveView.m in Sources */, + E83ABF06280EDE2B00322EE4 /* MessageContentLevelUpgradeView.m in Sources */, + E85E7B0E2A4EB0D200B6D00A /* GuildSearchSuperAdminModel.m in Sources */, 180806D827293794001FD836 /* NSObject+MJExtension.m in Sources */, - E85E7B4C2A4EB0D300B6D00A /* YUMIManeUnionExecutivePerRegardGovernancer.m in Sources */, - E87DF4BF2A42C8C1009C1185 /* ResidenceCoupleMatrix.m in Sources */, - E88863D3278ED4C0004BCFAB /* Intratemporalstamp.m in Sources */, - 237D64D12A57FDAA000442C6 /* XPTreasureFairyStoreResultSmallView.m in Sources */, - 237D64B72A57FDAA000442C6 /* TreasureFailryMessageModel.m in Sources */, - E8A3540A28FEC0510014A784 /* YUMIDesirePresentStatementRegard.m in Sources */, - E88863CF278EC393004BCFAB /* YUMIThroughoutChamberCombatCaptureRegard.m in Sources */, - E87DF5082A42CE79009C1185 /* YUMIInChamberReflectionExternalizer.m in Sources */, - 189DD6FF26E20E5900AB55B1 /* HttpRequestFacilitater.m in Sources */, - E85E7B062A4EB0D200B6D00A /* YUMIUnionHuntforExternalizer.m in Sources */, - E8788945273A55C200BF1D57 /* YUMIPresentAbstractRegard.m in Sources */, - 9BF5192628801D4700B6BE92 /* YUMIThroughoutChamberCombatComputationDownRegard.m in Sources */, - E87DF4F52A42CC49009C1185 /* ResidenceParrotAbstractMatrix.m in Sources */, + E85E7B4C2A4EB0D300B6D00A /* XPMineGuildManagerPerViewController.m in Sources */, + E87DF4BF2A42C8C1009C1185 /* HomeTagModel.m in Sources */, + E88863D3278ED4C0004BCFAB /* Timestamp.m in Sources */, + E8A3540A28FEC0510014A784 /* XPWishGiftListView.m in Sources */, + E88863CF278EC393004BCFAB /* XPAcrossRoomPKPrizeView.m in Sources */, + E87DF5082A42CE79009C1185 /* XPInRoomRecordPresenter.m in Sources */, + 189DD6FF26E20E5900AB55B1 /* HttpRequestHelper.m in Sources */, + E85E7B062A4EB0D200B6D00A /* XPGuildSearchPresenter.m in Sources */, + E8788945273A55C200BF1D57 /* XPGiftInfoView.m in Sources */, + 9BF5192628801D4700B6BE92 /* XPAcrossRoomPKCountDownView.m in Sources */, + E87DF4F52A42CC49009C1185 /* HomeMenuInfoModel.m in Sources */, 9BD63FAB277EE885006EB744 /* Api+RoomRadio.m in Sources */, - 237D64D02A57FDAA000442C6 /* XPTreasureFailyPrizeGiftView.m in Sources */, E8A30BF328534B17003B4873 /* Api+FindNew.m in Sources */, - E852D7412863249F001465ED /* YUMISeparationsReplicationTabulationRegardElement.m in Sources */, - E8AEAED6271412EC0017FCE0 /* YUMIChamberRegardGovernancer.m in Sources */, - E80A086527F318620027B30C /* YUMIChamberCombatDisportingRegard.m in Sources */, - E8E70D9226F2F60C00F03460 /* YUMIManeProvisionMatrix.m in Sources */, - E818DD1F2A48974300F163F7 /* SurmountAreaMatrix.m in Sources */, - 1427218A29A75F6F00C7C423 /* HyperTextDynamicAccurateRespond.m in Sources */, - E8DACCFE27673F870052092C /* PresentStressAbstractMatrix.m in Sources */, - E8412F9927799249006E1101 /* CallforFanaticsMatrix.m in Sources */, - E88C72912828EA4E0047FB2B /* Manual+CoreDataProperties.m in Sources */, - E84BF7CA277AF79D00EF8877 /* YUMIChamberInstanllingCoupleElement.m in Sources */, - 9BE9F0F927FED12D00667200 /* XCombatellegFanaticsPrivilegeMatrix.m in Sources */, - E87DF5022A42CDF1009C1185 /* YUMIResidenceConsiderationAssembletionRegardElement.m in Sources */, - E8AB631628ADE2D20023B0D2 /* YUMISeparationsMotifRecentlyRegardGovernancer.m in Sources */, - E8B846CF26FDD96100A777FE /* YUMIManeRechageIntelligenceRegard.m in Sources */, - E852D74728633E92001465ED /* SeparationsJudgementReplicationMatrix.m in Sources */, - 186A534926FC6ED900D67B2C /* MKJPrecautiousCommunicationAttributedDisposition.m in Sources */, - E8B3E80C2848BA40009746AB /* StrangeConsumerBewelcometoMatrix.m in Sources */, - E85E7B4D2A4EB0D300B6D00A /* YUMIManeUnionRemoveComponentRegardGovernancer.m in Sources */, - 9BCB99A028F571B500466D64 /* YUMIManeAssembleParatiesChamberRegardGovernancer.m in Sources */, + E852D7412863249F001465ED /* XPMonentsReplyTableViewCell.m in Sources */, + 2331C16D2A5EB71000E1D940 /* XPNobleSettingNavView.m in Sources */, + E8AEAED6271412EC0017FCE0 /* XPRoomViewController.m in Sources */, + E80A086527F318620027B30C /* XPRoomPKPlayingView.m in Sources */, + E8E70D9226F2F60C00F03460 /* XPMineItemModel.m in Sources */, + E818DD1F2A48974300F163F7 /* LoginAreaModel.m in Sources */, + 1427218A29A75F6F00C7C423 /* HTTPDynamicFileResponse.m in Sources */, + E8DACCFE27673F870052092C /* GiftValueInfoModel.m in Sources */, + E8412F9927799249006E1101 /* InviteFansModel.m in Sources */, + E88C72912828EA4E0047FB2B /* Music+CoreDataProperties.m in Sources */, + E84BF7CA277AF79D00EF8877 /* XPRoomSettingTagCell.m in Sources */, + 9BE9F0F927FED12D00667200 /* XPAnchorFansPrivilegeModel.m in Sources */, + E87DF5022A42CDF1009C1185 /* XPHomeAttentionCollectionViewCell.m in Sources */, + E8AB631628ADE2D20023B0D2 /* XPMonentsTopicLatestViewController.m in Sources */, + E8B846CF26FDD96100A777FE /* XPMineRechageHeadView.m in Sources */, + E852D74728633E92001465ED /* MonentsCommentReplyModel.m in Sources */, + 186A534926FC6ED900D67B2C /* TTAlertMessageAttributedConfig.m in Sources */, + E8B3E80C2848BA40009746AB /* NewUserGreetModel.m in Sources */, + E85E7B4D2A4EB0D300B6D00A /* XPMineGuildRemoveMemberViewController.m in Sources */, + 9BCB99A028F571B500466D64 /* XPMineCollectPartyRoomViewController.m in Sources */, E81C27AE26EF39AB0031E639 /* AppDelegate+ThirdConfig.m in Sources */, - E8AB631028ADD92D0023B0D2 /* YUMISeparationsMotifRecommondRegardGovernancer.m in Sources */, - E877A7F127842B2F00EFACED /* YUMIChamberEngagementTissuePrecautiousRegard.m in Sources */, - E8E70D8326F2F51A00F03460 /* YUMIManeIntelligenceRegard.m in Sources */, - E80EC81128ACD84000D133C5 /* MHTSpiritFacilitater.m in Sources */, - E8EEB90C26FC5EBC007C6EBA /* YUMIManeConsumerAbstractCompileMatrix.m in Sources */, - 18E7B31826F097E00064BC9B /* ConsumerAbstractMatrix.m in Sources */, - E87DF4F22A42CBEC009C1185 /* YUMIResidenceConsumerRegard.m in Sources */, - E83ABEF6280E9AD800322EE4 /* CommunicationSatisfactionUnSupportRegard.m in Sources */, - E8AC721326F46ADD007D6E91 /* YUMIManeInstanllingRegardGovernancer.m in Sources */, - 18E7B32126F098650064BC9B /* ConsumerAbstractCommunicationVo.m in Sources */, - E8AC722726F482A4007D6E91 /* YUMIManeFeedbackExternalizer.m in Sources */, - E85E7B422A4EB0D300B6D00A /* YUMIManePromptWindow.m in Sources */, - 14EB640929A5BDDD00A4A00B /* YUMIMomentsSimpleSpecificRegardGovernancer.m in Sources */, - 18AAF3F0279EA59300CD7DAD /* CommunicationSatisfactionEssayClickable.m in Sources */, + E8AB631028ADD92D0023B0D2 /* XPMonentsTopicRecommondViewController.m in Sources */, + E877A7F127842B2F00EFACED /* XPRoomDatingWebAlertView.m in Sources */, + E8E70D8326F2F51A00F03460 /* XPMineHeadView.m in Sources */, + E80EC81128ACD84000D133C5 /* QEmotionHelper.m in Sources */, + E8EEB90C26FC5EBC007C6EBA /* XPMineUserInfoEditModel.m in Sources */, + 18E7B31826F097E00064BC9B /* UserInfoModel.m in Sources */, + E87DF4F22A42CBEC009C1185 /* XPHomeUserView.m in Sources */, + E83ABEF6280E9AD800322EE4 /* MessageContentUnSupportView.m in Sources */, + E8AC721326F46ADD007D6E91 /* XPMineSettingViewController.m in Sources */, + 18E7B32126F098650064BC9B /* UserInfoSkillVo.m in Sources */, + E8AC722726F482A4007D6E91 /* XPMineFeedbackPresenter.m in Sources */, + E85E7B422A4EB0D300B6D00A /* XPMinePromptWindow.m in Sources */, + 14EB640929A5BDDD00A4A00B /* XPMomentsSimpleDetailViewController.m in Sources */, + 18AAF3F0279EA59300CD7DAD /* MessageContentTextClickable.m in Sources */, E8C6FFCC27548120004DC9F0 /* Api+Home.m in Sources */, - E8778AF52988EF2B00CF139B /* YUMIInterlocutionSpeakHalloTabulationRegardElement.m in Sources */, - 186A534E26FC6ED900D67B2C /* MKJPopupServing.m in Sources */, - 237D64C62A57FDAA000442C6 /* XPTreasureFairySendView.m in Sources */, - E85E7B3A2A4EB0D300B6D00A /* YUMIUnionSensationalManagementSetTabulationRegardElement.m in Sources */, - E8778AE72988C1E000CF139B /* YUMIInterlocutionHalloImportRegard.m in Sources */, - 18A61BD7274F7F6900A09A54 /* NetIndicateDisposition.m in Sources */, - E8C21501274B76F60079E6BF /* YUMIChamberBrightnessHitRegard.m in Sources */, - E84A2E9F2A5287D200D6AF8A /* YUMIRevenueReflectionGoldSpecificsRegard.m in Sources */, - E873EB0F28098D500071030D /* CommunicationSatisfactionPresentRegard.m in Sources */, - E8D34D4D28080351009C4835 /* YUMIManeAtomicCollectiveTabulationRegardElement.m in Sources */, - E85E7B292A4EB0D300B6D00A /* YUMIUnionIntratemporalPickRegard.m in Sources */, - E85E7BBF2A4EE7AC00B6D00A /* YUMIManeFeaturealConcentrateElement.m in Sources */, - E8AC722426F47E5E007D6E91 /* YUMIManeFeedbackRegardGovernancer.m in Sources */, - 237D64C12A57FDAA000442C6 /* XPTreasureFairySendRecordCell.m in Sources */, - E8664ED627E434D5000171BA /* YUMIChamberCombatReflectionRegardGovernancer.m in Sources */, - 237D64B92A57FDAA000442C6 /* TreasureFairyFragmentModel.m in Sources */, - E87E914E2796678D00A7B3F2 /* YUMIManePretendDispossessTabulationRegardElement.m in Sources */, - 9B7D804D27537950003DAC0C /* CommunicationElement.m in Sources */, - 9B044D9D282D2A6400DE4859 /* YUMIChamberKellegRateImportRegard.m in Sources */, - E8950180282CAC49007E459A /* YUMISeparationsConsumerAbstractRegard.m in Sources */, - 18F404C927609A4300A6C548 /* CommunicationExternalizer.m in Sources */, - 9BC9DAEF27E33B3F009EE409 /* YUMIChamberPresentBrightnessAnatomiser.m in Sources */, - E89DCF602900F4FB001647EC /* YUMIDesirePresentImportRegard.m in Sources */, - E81366E326F0A1FC0076364C /* SurmountDilemmaMobileRegardGovernancer.m in Sources */, - 1464C5F329A4C18000AF7C94 /* YUMIIAPReindictRegardGovernancer.m in Sources */, - E85E7B662A4EC35A00B6D00A /* YUMIRevenueReflectionGoldSpecificsMatrix.m in Sources */, - 9B2EA7CC2804245500ED17BF /* XCombatellegCombatFasciaboardConsumerRegard.m in Sources */, - E80E09A12A40B5DD00CD2BE7 /* YUMIConfectioneryTimberRateTabulationRegardElement.m in Sources */, - 9B85B6DA279FDC5200A0A1AC /* YUMIConsumerSolitaireCommunicationAssembletionRegardElement.m in Sources */, - E85E7B0D2A4EB0D200B6D00A /* UnionSensationalManagementAbstractMatrix.m in Sources */, - 189DD68426E1FDBB00AB55B1 /* XNDJTBWGLoadingTool.m in Sources */, - 9B1B72AF280031F8003FACE9 /* XCombatellegCombatChosenChamberRegard.m in Sources */, - E818DD1C2A4896EE00F163F7 /* YUMISurmountAraeRegardGovernancer.m in Sources */, - E8D4824A278D1F73003C1D08 /* YUMIThroughoutChamberCombatCallforRegard.m in Sources */, - E85E7B432A4EB0D300B6D00A /* YUMIManeExchangeAuthorityIntelligenceRegard.m in Sources */, + E8778AF52988EF2B00CF139B /* XPSessionSayHelloTableViewCell.m in Sources */, + 186A534E26FC6ED900D67B2C /* TTPopupService.m in Sources */, + E85E7B3A2A4EB0D300B6D00A /* XPGuildSuperAdminSetTableViewCell.m in Sources */, + E8778AE72988C1E000CF139B /* XPSessionHelloEnterView.m in Sources */, + 18A61BD7274F7F6900A09A54 /* NetImageConfig.m in Sources */, + E8C21501274B76F60079E6BF /* XPRoomAnimationHitView.m in Sources */, + E84A2E9F2A5287D200D6AF8A /* XPIncomeRecordGoldDetailsView.m in Sources */, + E873EB0F28098D500071030D /* MessageContentGiftView.m in Sources */, + 2331C1702A5EB71000E1D940 /* XPNoblePrivilegeContentCell.m in Sources */, + E8D34D4D28080351009C4835 /* XPMineDataClanTableViewCell.m in Sources */, + E85E7B292A4EB0D300B6D00A /* XPGuildTimePickView.m in Sources */, + E85E7BBF2A4EE7AC00B6D00A /* XPMinePersonalCenterCell.m in Sources */, + E8AC722426F47E5E007D6E91 /* XPMineFeedbackViewController.m in Sources */, + E8664ED627E434D5000171BA /* XPRoomPKRecordViewController.m in Sources */, + E87E914E2796678D00A7B3F2 /* XPMineDressEmptyTableViewCell.m in Sources */, + 9B7D804D27537950003DAC0C /* MessageCell.m in Sources */, + 9B044D9D282D2A6400DE4859 /* XPRoomAnchorRankEnterView.m in Sources */, + E8950180282CAC49007E459A /* XPMonentsUserInfoView.m in Sources */, + 18F404C927609A4300A6C548 /* MessagePresenter.m in Sources */, + 9BC9DAEF27E33B3F009EE409 /* XPRoomGiftAnimationParser.m in Sources */, + E89DCF602900F4FB001647EC /* XPWishGiftEnterView.m in Sources */, + E81366E326F0A1FC0076364C /* LoginBindPhoneViewController.m in Sources */, + 1464C5F329A4C18000AF7C94 /* XPIAPRechargeViewController.m in Sources */, + E85E7B662A4EC35A00B6D00A /* XPIncomeRecordGoldDetailsModel.m in Sources */, + 9B2EA7CC2804245500ED17BF /* XPAnchorPKPanelUserView.m in Sources */, + 2331C1B42A60F32D00E1D940 /* XPCandyTreeRankTableViewCell.m in Sources */, + 9B85B6DA279FDC5200A0A1AC /* XPUserCardSkillCollectionViewCell.m in Sources */, + E85E7B0D2A4EB0D200B6D00A /* GuildSuperAdminInfoModel.m in Sources */, + 189DD68426E1FDBB00AB55B1 /* XNDJTDDLoadingTool.m in Sources */, + 9B1B72AF280031F8003FACE9 /* XPAnchorPKSelectRoomView.m in Sources */, + E818DD1C2A4896EE00F163F7 /* XPLoginAraeViewController.m in Sources */, + E8D4824A278D1F73003C1D08 /* XPAcrossRoomPKInviteView.m in Sources */, + E85E7B432A4EB0D300B6D00A /* XPMineExchangeAuthorityHeadView.m in Sources */, 189DD73F26E21C3F00AB55B1 /* YYUtility+Carrier.m in Sources */, - E87AE7F9277AABE50037823A /* YUMIChamberCoupleStatementRegardGovernancer.m in Sources */, - 18E7B26926E8D5D60064BC9B /* XCCurrentVCStackExecutive.m in Sources */, - E85E7B472A4EB0D300B6D00A /* YUMIManeUnionExecutivePerTabulationRegardElement.m in Sources */, - E824544326F58FCE00BE8163 /* YUMIManeIntersectPwordIntrojectionRegard.m in Sources */, - 9B1B72A1280023F3003FACE9 /* YUMIManeKellegFanaticsSquadTabulationRegardElement.m in Sources */, - 1808073027315E8E001FD836 /* NetIndicateRegard.m in Sources */, - E880B3AC278BD98600A83B0D /* YUMIThroughoutChamberCombatDispossessTabulationRegardElement.m in Sources */, - 18486235271EB794005FC5DC /* AgoraRealtimackConnector.m in Sources */, - E8C1CD7A27D8B29E00376F83 /* ChamberAcceptAbstractMatrix.m in Sources */, - E81C1B1C27705F6B0020D1E4 /* YUMIScheduleLoudspeakerExternalizer.m in Sources */, - 184862CE27213FD7005FC5DC /* ZegoRealtimackConnector.m in Sources */, - E85E7BB32A4ED45300B6D00A /* YUMIPageControl.m in Sources */, - E85E7B3E2A4EB0D300B6D00A /* YUMIUnionRevenueReflectionTabulationRegardElement.m in Sources */, - E8A88D2727E8193400CA8837 /* YUMIChamberCombatChosenConsumerRegard.m in Sources */, - 9B0E1C5926E77022005D4442 /* BaseNevigationGovernancer.m in Sources */, - E8664ED927E4355C000171BA /* YUMIChamberCombatReflectionTabulationRegardElement.m in Sources */, - 237D64C72A57FDAA000442C6 /* XPTreasureFairyTrialsContentView.m in Sources */, - E8A1F794290642500099C952 /* YUMIChamberFurthaerDisportRegardGovernancer.m in Sources */, - 142721B229A7647F00C7C423 /* YUMIBlankRegardGovernancer.m in Sources */, - E85E7B6B2A4EC39400B6D00A /* YUMIManeExchangeAuthorityMatrix.m in Sources */, - E836456B2A40A33300E0DBE4 /* ManeCommunicationSolitaireStatementAbstractMatrix.m in Sources */, - E85E7B1C2A4EB0D200B6D00A /* YUMIManeHallKellegRevenueStatsticsRegardGovernancer.m in Sources */, - E81060FD2987CC9100B772F0 /* CommunicationPrototypeAscensionMatrix.m in Sources */, - E84BF7DD277C765400EF8877 /* YUMIChamberRoleDispossessTabulationRegardElement.m in Sources */, + E87AE7F9277AABE50037823A /* XPRoomTagListViewController.m in Sources */, + 18E7B26926E8D5D60064BC9B /* XCCurrentVCStackManager.m in Sources */, + E85E7B472A4EB0D300B6D00A /* XPMineGuildManagerPerTableViewCell.m in Sources */, + E824544326F58FCE00BE8163 /* XPMinePayPwdInputView.m in Sources */, + 9B1B72A1280023F3003FACE9 /* XPMineAnchorFansTeamTableViewCell.m in Sources */, + 1808073027315E8E001FD836 /* NetImageView.m in Sources */, + E880B3AC278BD98600A83B0D /* XPAcrossRoomPKEmptyTableViewCell.m in Sources */, + 18486235271EB794005FC5DC /* AgoraRtcImpl.m in Sources */, + E8C1CD7A27D8B29E00376F83 /* RoomFaceInfoModel.m in Sources */, + E81C1B1C27705F6B0020D1E4 /* XPArrangeMicPresenter.m in Sources */, + 184862CE27213FD7005FC5DC /* ZegoRtcImpl.m in Sources */, + E85E7BB32A4ED45300B6D00A /* XPPageControl.m in Sources */, + E85E7B3E2A4EB0D300B6D00A /* XPGuildIncomeRecordTableViewCell.m in Sources */, + E8A88D2727E8193400CA8837 /* XPRoomPKSelectUserView.m in Sources */, + 9B0E1C5926E77022005D4442 /* BaseNavigationController.m in Sources */, + E8664ED927E4355C000171BA /* XPRoomPKRecordTableViewCell.m in Sources */, + E8A1F794290642500099C952 /* XPRoomMorePlayViewController.m in Sources */, + 142721B229A7647F00C7C423 /* XPBlankViewController.m in Sources */, + E85E7B6B2A4EC39400B6D00A /* XPMineExchangeAuthorityModel.m in Sources */, + E836456B2A40A33300E0DBE4 /* MineSkillCardListInfoModel.m in Sources */, + E85E7B1C2A4EB0D200B6D00A /* XPMineHallAnchorIncomeStatisViewController.m in Sources */, + E81060FD2987CC9100B772F0 /* MessageLevelUpgradeModel.m in Sources */, + E84BF7DD277C765400EF8877 /* XPRoomRoleEmptyTableViewCell.m in Sources */, E8F6135C291E26BD00E12650 /* NSMutableDictionary+Saft.m in Sources */, - 9BAC92EE28E6989400147DD8 /* YUMIChamberImportpriseDisportRegard.m in Sources */, - 1427213429A75A2600C7C423 /* YUMISeparationsRecentlyExternalizer.m in Sources */, - E83ABEFD280EB5E200322EE4 /* SatisfactionUnfoildEnergeticAbstractMatrix.m in Sources */, - E85E7BAF2A4EC99300B6D00A /* YUMIManeChooseGiveDiamondVC.m in Sources */, - E8EEB8F426FC2050007C6EBA /* SDBrowserIndicateRegard.m in Sources */, - E88863CC278EC336004BCFAB /* ThroughoutChamberCombatCaptureMatrix.m in Sources */, - 237D64D62A57FDAA000442C6 /* XPTreasureFairyDrawView.m in Sources */, - 14B880E7299A4B62005FCA1B /* YUMISurmountMobileRegardGovernancer.m in Sources */, - E824544626F5934700BE8163 /* YUMIManeIntersectPwordExternalizer.m in Sources */, - 189DD54B26DE338800AB55B1 /* BaseRegardGovernancer.m in Sources */, - 149839C4299E088000F82CBF /* YUMIMomentStatementRegardGovernancer.m in Sources */, - E8B846C226FD82DC00A777FE /* YUMIManeConsumerAbstractAlbumAssembletionRegardElement.m in Sources */, - E816C11527608A7500C84014 /* YUMIChamberMiniExecutive.m in Sources */, - E81060EB2987BE8300B772F0 /* CommunicationPresentMatrix.m in Sources */, - E8EEB91726FC7B35007C6EBA /* YUMIManeConsumerAbstractDesRegardGovernancer.m in Sources */, - 9B1B72AC280031DB003FACE9 /* XCombatellegCombatRegardGovernancer.m in Sources */, + 9BAC92EE28E6989400147DD8 /* XPRoomActivityPlayView.m in Sources */, + 1427213429A75A2600C7C423 /* XPMonentsLatestPresenter.m in Sources */, + E83ABEFD280EB5E200322EE4 /* ContentOpenLiveInfoModel.m in Sources */, + E85E7BAF2A4EC99300B6D00A /* XPMineChooseGiveDiamondVC.m in Sources */, + E8EEB8F426FC2050007C6EBA /* SDBrowserImageView.m in Sources */, + E88863CC278EC336004BCFAB /* AcrossRoomPKPrizeModel.m in Sources */, + 14B880E7299A4B62005FCA1B /* XPLoginPhoneViewController.m in Sources */, + E824544626F5934700BE8163 /* XPMinePayPwdPresenter.m in Sources */, + 189DD54B26DE338800AB55B1 /* BaseViewController.m in Sources */, + 149839C4299E088000F82CBF /* XPMomentListViewController.m in Sources */, + E8B846C226FD82DC00A777FE /* XPMineUserInfoAlbumCollectionViewCell.m in Sources */, + 2331C1AD2A60F32D00E1D940 /* XPCandyTreeAnimationModel.m in Sources */, + E816C11527608A7500C84014 /* XPRoomMiniManager.m in Sources */, + E81060EB2987BE8300B772F0 /* MessageGiftModel.m in Sources */, + E8EEB91726FC7B35007C6EBA /* XPMineUserInfoDesViewController.m in Sources */, + 9B1B72AC280031DB003FACE9 /* XPAnchorPKViewController.m in Sources */, 180806FB2729A354001FD836 /* ThemeColor+Room.m in Sources */, - 9BC8C83028090C9200C24F85 /* YUMIChamberKellegRateOriflammeRegard.m in Sources */, - E81A653F283511BE00F55894 /* YUMISeparationsCoactiveRegardGovernancer.m in Sources */, - 1464C5EA29A45FC300AF7C94 /* YUMIButton.m in Sources */, + 9BC8C83028090C9200C24F85 /* XPRoomAnchorRankBannerView.m in Sources */, + E81A653F283511BE00F55894 /* XPMonentsInteractiveViewController.m in Sources */, + 1464C5EA29A45FC300AF7C94 /* XPButton.m in Sources */, + 2331C17E2A5ECCF600E1D940 /* XPNobleCenterPayView.m in Sources */, E8395331276A03AE00CF2F24 /* Api+DressUp.m in Sources */, - E8B3E8092848B871009746AB /* CallforConsumerAbstractMatrix.m in Sources */, - E85E7B352A4EB0D300B6D00A /* YUMICollectiveComponentTabulationRegardElement.m in Sources */, - E8DEC99E2764A5B60078CB70 /* YUMIChamberFurthaerParrotRegardGovernancer.m in Sources */, - E82325F2274E2DE6003A3332 /* YUMIConsumerSolitaireRegardGovernancer.m in Sources */, + E8B3E8092848B871009746AB /* InviteUserInfoModel.m in Sources */, + E85E7B352A4EB0D300B6D00A /* XPClanMemberTableViewCell.m in Sources */, + E8DEC99E2764A5B60078CB70 /* XPRoomMoreMenuViewController.m in Sources */, + E82325F2274E2DE6003A3332 /* XPUserCardViewController.m in Sources */, E85E7B512A4EB0D300B6D00A /* Api+Guild.m in Sources */, - E83645682A40A2DC00E0DBE4 /* YUMICommunicationSolitaireDisporterExecutive.m in Sources */, - E8A1F7972906426B0099C952 /* YUMIChamberFurthaerDisportExternalizer.m in Sources */, - E8F65C222869A36F009BB5B9 /* SatisfactionParaticipationSeparationsMatrix.m in Sources */, - 9B6E856E281AABAB0041A321 /* YUMIChamberEncourageMatrix.m in Sources */, - E84A2E992A52817E00D6AF8A /* YUMIRevenueReflectionRegard.m in Sources */, - 142721AD29A75F6F00C7C423 /* BWGAbstractAtomicbaselumbes.m in Sources */, - E801274B27E327DA00BAC3F2 /* YUMIChamberCombatGenreTabulationRegardElement.m in Sources */, - E8412FB02779CB4D006E1101 /* YUMIChamberInstanllingExternalizer.m in Sources */, - E87DF4B02A429B32009C1185 /* YUMIThresholdReindictRegard.m in Sources */, + E83645682A40A2DC00E0DBE4 /* XPSkillCardPlayerManager.m in Sources */, + E8A1F7972906426B0099C952 /* XPRoomMorePlayPresenter.m in Sources */, + E8F65C222869A36F009BB5B9 /* ContentShareMonentsModel.m in Sources */, + 9B6E856E281AABAB0041A321 /* XPRoomRecommendModel.m in Sources */, + E84A2E992A52817E00D6AF8A /* XPIncomeRecordView.m in Sources */, + 142721AD29A75F6F00C7C423 /* DDAbstractDatabaseLogger.m in Sources */, + E801274B27E327DA00BAC3F2 /* XPRoomPKTypeTableViewCell.m in Sources */, + 2331C1B02A60F32D00E1D940 /* XPCandyTreeMoreView.m in Sources */, + E8412FB02779CB4D006E1101 /* XPRoomSettingPresenter.m in Sources */, + E87DF4B02A429B32009C1185 /* XPFirstRechargeView.m in Sources */, E878893C273A54C300BF1D57 /* Api+Gift.m in Sources */, - E80E099A2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberBrightnessMatrix.m in Sources */, - E897ABFC28AF2E71003B3587 /* YUMIMarchingPresentRegard.m in Sources */, - E8998D8028597B0300C68558 /* YUMIChamberFortunateBigCaptureRegard.m in Sources */, - E88E4A80297673DC00019A50 /* InterlocutionNevEnergeticRegard.m in Sources */, - 237D64CF2A57FDAA000442C6 /* XPTreasureFairyPrizeRecordView.m in Sources */, - E81060DC298761F100B772F0 /* CommunicationEssayMatrix.m in Sources */, + E897ABFC28AF2E71003B3587 /* XPSailingGiftView.m in Sources */, + E8998D8028597B0300C68558 /* XPRoomLuckyBigPrizeView.m in Sources */, + E88E4A80297673DC00019A50 /* SessionNavLiveView.m in Sources */, + E81060DC298761F100B772F0 /* MessageTextModel.m in Sources */, E8DEC9A82764A68B0078CB70 /* Api+MoreMenu.m in Sources */, - 9B86D87A2817DD8400494FCD /* YUMIChamberImportHideTipRegard.m in Sources */, - E8AC721026F43955007D6E91 /* UIIndicateConstant.m in Sources */, - E85E7B122A4EB0D200B6D00A /* UnionRevenueReflectionMatrix.m in Sources */, + 9B86D87A2817DD8400494FCD /* XPRoomEnterHideTipView.m in Sources */, + E8AC721026F43955007D6E91 /* UIImageConstant.m in Sources */, + E85E7B122A4EB0D200B6D00A /* GuildIncomeRecordModel.m in Sources */, E81C27A026EEF83D0031E639 /* YUMIHtmlUrl.m in Sources */, - E8F1558D28124D5200EE8C06 /* CommunicationConentVocalmusicRegard.m in Sources */, - E8E20BDB281645300033B688 /* InterlocutionAbstractRegardGovernancer.m in Sources */, - E8AB631C28ADE30E0023B0D2 /* YUMISeparationsMotifRecentlyExternalizer.m in Sources */, - E80A63DC28B86B9700690914 /* CommunicationSatisfactionSeparationsAutoRegard.m in Sources */, - E8098CB4282E97550090B9F0 /* YUMIManeBlackStatementExternalizer.m in Sources */, - E87DF4DD2A42CA12009C1185 /* ResidenceHuntforConsequentMatrix.m in Sources */, - 1464C5F029A49DDD00AF7C94 /* YUMIManeSimpleConsumerAbstractIntelligencerRegard.m in Sources */, - E85E7B2C2A4EB0D300B6D00A /* YUMICollectiveDivisionRegard.m in Sources */, - E801274E27E3280000BAC3F2 /* YUMIChamberCombatVoteTabulationRegardElement.m in Sources */, - 237D64AD2A57FDAA000442C6 /* ContentTreasureFairyModel.m in Sources */, + E8F1558D28124D5200EE8C06 /* MessageConentAudioView.m in Sources */, + E8E20BDB281645300033B688 /* SessionInfoViewController.m in Sources */, + 2331C1B92A60F32D00E1D940 /* Api+CandyTree.m in Sources */, + E8AB631C28ADE30E0023B0D2 /* XPMonentsTopicLatestPresenter.m in Sources */, + E80A63DC28B86B9700690914 /* MessageContentMonentsAutoView.m in Sources */, + E8098CB4282E97550090B9F0 /* XPMineBlackListPresenter.m in Sources */, + E87DF4DD2A42CA12009C1185 /* HomeSearchResultModel.m in Sources */, + 1464C5F029A49DDD00AF7C94 /* XPMineSimpleUserInfoHeaderView.m in Sources */, + E85E7B2C2A4EB0D300B6D00A /* XPClanSectionView.m in Sources */, + E801274E27E3280000BAC3F2 /* XPRoomPKVoteTableViewCell.m in Sources */, 18E7B1B726E8B2D10064BC9B /* Api+Main.m in Sources */, - 237D64CE2A57FDAA000442C6 /* XPTreasureFairyMyView.m in Sources */, - E87DF4D72A42C9C3009C1185 /* ResidenceDisportChamberMatrix.m in Sources */, - 237D64D92A57FDAA000442C6 /* XPTreasureFairyShopingRecordSubView.m in Sources */, - E8B846D326FDDBE600A777FE /* YUMIManeReindictTabulationRegardElement.m in Sources */, - E8D48256278D83AE003C1D08 /* YUMIThroughoutChamberCombatFasciaboardConsumerRegard.m in Sources */, - E85E7B372A4EB0D300B6D00A /* YUMIManeUnionStatementElement.m in Sources */, - E85E7B502A4EB0D300B6D00A /* YUMIManeUnionStatementVC.m in Sources */, - E824546126F5F4E400BE8163 /* YUMIManeReassociationIntersectPwordRegardGovernancer.m in Sources */, - 14DCAD11299B946E00A7DD31 /* YUMISurmountBaseRegardGovernancer.m in Sources */, - E81D58822720082A003063FE /* MiecreoscoopeWaveRegard.m in Sources */, - 237D64BE2A57FDAA000442C6 /* XPTreasureFairyPrizeRecordCell.m in Sources */, - 237D64DA2A57FDAA000442C6 /* XPTreasureFairyExchangeView.m in Sources */, - E8A73F8728586A6F00FD9CBC /* YUMIPresentWeekSatelliteAssembletionRegardElement.m in Sources */, - 237D64E42A57FDAA000442C6 /* XPTreasureFairyGiftView.m in Sources */, - E80E09B62A42078F00CD2BE7 /* YUMIChamberSatelliteKitchenMatrix.m in Sources */, - E8B825C226EA00DF009E8E9F /* SurmountValidationCodeExternalize.m in Sources */, - E878B85B2835F3BF00E22DCF /* YUMISeparationsCoactiveTabulationRegardElement.m in Sources */, - 9BCFB828289BAC7D0093D863 /* YUMIManeIntelligenceFunctionProvisionProgramming.m in Sources */, - E8D34D6428084E40009C4835 /* YUMIManeConsumerAbstractPresentRamparatRegardGovernancer.m in Sources */, - E899C68927508F4E00E189E5 /* YUMIConsumerSolitaireAbstractMatrix.m in Sources */, - 9B6B3AAB278C2EA7005551EC /* YUMIChamberMagnificentPrototypeUpwardsRegard.m in Sources */, - E85E7B302A4EB0D300B6D00A /* YUMIUnionRevenueIntelligencerRegard.m in Sources */, - E85E7B222A4EB0D300B6D00A /* YUMIManeUnionRevenueReflectionRegardGovernancer.m in Sources */, - 9BD2ECD5288F838200F5CD9A /* YUMIManeTerminalImpressionExternalizer.m in Sources */, - 9B1B72BF2800422E003FACE9 /* XCombatellegCombatPreadominantRegard.m in Sources */, + E87DF4D72A42C9C3009C1185 /* HomePlayRoomModel.m in Sources */, + E8B846D326FDDBE600A777FE /* XPMineRechargeTableViewCell.m in Sources */, + E8D48256278D83AE003C1D08 /* XPAcrossRoomPKPanelUserView.m in Sources */, + E85E7B372A4EB0D300B6D00A /* XPMineGuildListCell.m in Sources */, + E85E7B502A4EB0D300B6D00A /* XPMineGuildListVC.m in Sources */, + E824546126F5F4E400BE8163 /* XPMineResetPayPwdViewController.m in Sources */, + 14DCAD11299B946E00A7DD31 /* XPLoginBaseViewController.m in Sources */, + E81D58822720082A003063FE /* MicroWaveView.m in Sources */, + E8A73F8728586A6F00FD9CBC /* XPGiftWeekStarCollectionViewCell.m in Sources */, + E80E09B62A42078F00CD2BE7 /* XPRoomStarKitchenModel.m in Sources */, + 2331C16B2A5EB71000E1D940 /* XPNobleCenterMyNobleView.m in Sources */, + E8B825C226EA00DF009E8E9F /* LoginVerifCodePresent.m in Sources */, + E878B85B2835F3BF00E22DCF /* XPMonentsInteractiveTableViewCell.m in Sources */, + 9BCFB828289BAC7D0093D863 /* XPMineHeadFunctionItemLayout.m in Sources */, + E8D34D6428084E40009C4835 /* XPMineUserInfoGiftWallViewController.m in Sources */, + E899C68927508F4E00E189E5 /* XPUserCardInfoModel.m in Sources */, + 9B6B3AAB278C2EA7005551EC /* XPRoomNobleLevelUpView.m in Sources */, + E85E7B302A4EB0D300B6D00A /* XPGuildIncomeHeaderView.m in Sources */, + E85E7B222A4EB0D300B6D00A /* XPMineGuildIncomeRecordViewController.m in Sources */, + 9BD2ECD5288F838200F5CD9A /* XPMineFootPrintPresenter.m in Sources */, + 9B1B72BF2800422E003FACE9 /* XPAnchorPKRuleView.m in Sources */, 1427219729A75F6F00C7C423 /* DDRange.m in Sources */, - E85E7B6E2A4EC4AE00B6D00A /* YUMIManeUnionExternalizer.m in Sources */, - E81125CA296E606F000D9804 /* MHTAppearanceIndicateMatrix.m in Sources */, - 9B42869528C1E00A009034D2 /* YUMIDeficitSheatheConsequentMatrix.m in Sources */, - 9BE01AE428937EDE00B50299 /* YUMIPretendUpwardsProcurementAssembletionRegardElement.m in Sources */, - 1427219129A75F6F00C7C423 /* MultipartCommunicationIntelligencerField.m in Sources */, - 186A534B26FC6ED900D67B2C /* MKJPopupExecutiveServing.m in Sources */, - E8BD0F8B28A9EB0A00DE050D /* ChamberMarchingCaptureStatementMatrix.m in Sources */, - 9BA812DD28BF6A7300783EA7 /* YUMIChamberDeficitSheatheExternalizer.m in Sources */, - E85E7B642A4EC35A00B6D00A /* YUMIRevenueReflectionMatrix.m in Sources */, - E85E7B082A4EB0D200B6D00A /* YUMIManeExecutiveSetExternalizer.m in Sources */, - 18E7B1B226E8AF980064BC9B /* MainExternalizer.m in Sources */, - E81366F626F0C0DF0076364C /* SurmountFullAbstractExternalizer.m in Sources */, - E8A30BEE28534AB1003B4873 /* YUMIInterlocutionDiscoveryStrangeExternalizer.m in Sources */, - 9BDA3E7727FD41C200517FE6 /* XCombatellegFanaticsSquadRegardGovernancer.m in Sources */, - 18A61BE8274F9CF000A09A54 /* InterlocutionStatementRegardGovernancer.m in Sources */, - E8C1CD6A27D8937800376F83 /* YUMIChamberAcceptAssembletionRegardElement.m in Sources */, - 9B2EA7C02804037700ED17BF /* KellegCombatPhaseRegard.m in Sources */, - E811FFF72742367B00918544 /* YUMIPresentDispossessAssembletionRegardElement.m in Sources */, + E85E7B6E2A4EC4AE00B6D00A /* XPMineGuildPresenter.m in Sources */, + E81125CA296E606F000D9804 /* QPhotoImageModel.m in Sources */, + 9B42869528C1E00A009034D2 /* XPRedPacketResultModel.m in Sources */, + 2331C16E2A5EB71000E1D940 /* XPNobleAuthorityDescView.m in Sources */, + 9BE01AE428937EDE00B50299 /* XPDressUpShopCollectionViewCell.m in Sources */, + 1427219129A75F6F00C7C423 /* MultipartMessageHeaderField.m in Sources */, + 186A534B26FC6ED900D67B2C /* TTPopupManagerService.m in Sources */, + E8BD0F8B28A9EB0A00DE050D /* RoomSailingPrizeListModel.m in Sources */, + 9BA812DD28BF6A7300783EA7 /* XPRoomRedPacketPresenter.m in Sources */, + E85E7B642A4EC35A00B6D00A /* XPIncomeRecordModel.m in Sources */, + E85E7B082A4EB0D200B6D00A /* XPMineManagerSetPresenter.m in Sources */, + 18E7B1B226E8AF980064BC9B /* MainPresenter.m in Sources */, + E81366F626F0C0DF0076364C /* LoginFullInfoPresenter.m in Sources */, + E8A30BEE28534AB1003B4873 /* XPSessionFindNewPresenter.m in Sources */, + 9BDA3E7727FD41C200517FE6 /* XPAnchorFansTeamViewController.m in Sources */, + 18A61BE8274F9CF000A09A54 /* SessionListViewController.m in Sources */, + E8C1CD6A27D8937800376F83 /* XPRoomFaceCollectionViewCell.m in Sources */, + 9B2EA7C02804037700ED17BF /* AnchorPKStageView.m in Sources */, + E811FFF72742367B00918544 /* XPGiftEmptyCollectionViewCell.m in Sources */, 189DD67E26E1FD8900AB55B1 /* UIImage+Utils.m in Sources */, - E824545626F5E51900BE8163 /* YUMIManeValidationIdentityRegardGovernancer.m in Sources */, - E82D5C73276AE94800858D6D /* CarMatrix.m in Sources */, - E85E7B0B2A4EB0D200B6D00A /* YUMIUnionSetNameExternalizer.m in Sources */, + E824545626F5E51900BE8163 /* XPMineVerifIdentityViewController.m in Sources */, + E82D5C73276AE94800858D6D /* CarModel.m in Sources */, + E85E7B0B2A4EB0D200B6D00A /* XPGuildSetNamePresenter.m in Sources */, 142721AA29A75F6F00C7C423 /* ContextFilterLogFormatter.m in Sources */, - E87E62762A3F5907002F68C9 /* YUMIStrangeResidenceDisportTabulationRegardElement.m in Sources */, - 186A534726FC6ED900D67B2C /* MKJPrecautiousDisposition.m in Sources */, - 18F403EE2758CF2F00A6C548 /* CommunicationSatisfactionIndicate.m in Sources */, - 18E7B31E26F0984C0064BC9B /* ConsumerPrototypeVo.m in Sources */, - 1427218C29A75F6F00C7C423 /* HyperTextAsyncAccurateRespond.m in Sources */, - E8DD25DA295583920043C7D5 /* XCombatellegRandomCombatPreadominantRegard.m in Sources */, - E8664EDC27E43632000171BA /* YUMIChamberCombatDispossessTabulationRegardElement.m in Sources */, - E8778AE42988B57B00CF139B /* CommunicationSatisfactionRevokeRegard.m in Sources */, - E880B3A9278BD82300A83B0D /* ThroughoutChamberCombatAbstractMatrix.m in Sources */, - 9B88E20F28C6305400D26FBA /* YUMIChamberHuntforReflectionRegardGovernancer.m in Sources */, - E84A2E892A527DF800D6AF8A /* YUMIRevenueReflectionVC.m in Sources */, - E82D5C7A276B25D100858D6D /* SpriteSheetIndicateExecutive.m in Sources */, + E87E62762A3F5907002F68C9 /* XPNewHomePlayTableViewCell.m in Sources */, + 186A534726FC6ED900D67B2C /* TTAlertConfig.m in Sources */, + 18F403EE2758CF2F00A6C548 /* MessageContentImage.m in Sources */, + 18E7B31E26F0984C0064BC9B /* UserLevelVo.m in Sources */, + 2331C1762A5EB71000E1D940 /* ThemeColor+NobleCenter.m in Sources */, + 1427218C29A75F6F00C7C423 /* HTTPAsyncFileResponse.m in Sources */, + E8DD25DA295583920043C7D5 /* XPAnchorRandomPKRuleView.m in Sources */, + E8664EDC27E43632000171BA /* XPRoomPKEmptyTableViewCell.m in Sources */, + E8778AE42988B57B00CF139B /* MessageContentRevokeView.m in Sources */, + E880B3A9278BD82300A83B0D /* AcrossRoomPKInfoModel.m in Sources */, + 9B88E20F28C6305400D26FBA /* XPRoomSearchRecordViewController.m in Sources */, + E84A2E892A527DF800D6AF8A /* XPIncomeRecordVC.m in Sources */, + E82D5C7A276B25D100858D6D /* SpriteSheetImageManager.m in Sources */, E85E7BB02A4EC99300B6D00A /* Api+GiveDiamond.m in Sources */, - E874B88B27215EAF003954B9 /* MiecreoscoopeMHTueueMatrix.m in Sources */, - 9B1B72B828003772003FACE9 /* XCombatellegCombatExternalizer.m in Sources */, - 142721A929A75F6F00C7C423 /* BWGASLlumbes.m in Sources */, - E8EE827D272B9A2300A17217 /* YUMIChamberDischargeEssayRegard.m in Sources */, - E8AB631928ADE2F40023B0D2 /* YUMISeparationsMotifEncourageExternalizer.m in Sources */, - 9BD63FAE277EE97A006EB744 /* YUMIReleaseWirelessExternalizer.m in Sources */, - 9B1FC3D827E49C36006EFFE0 /* YUMIManePretendIntumesceAssembletionRegardElement.m in Sources */, - 9BE01AEA2893CB4400B50299 /* YUMIPretendHuntforRegardGovernancer.m in Sources */, - E8751E6B28A64C6E0056EF44 /* YUMIMarchingRateTabulationRegardElement.m in Sources */, - E80E099E2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberPresentRegard.m in Sources */, + E874B88B27215EAF003954B9 /* MicroQueueModel.m in Sources */, + 9B1B72B828003772003FACE9 /* XPAnchorPKPresenter.m in Sources */, + 142721A929A75F6F00C7C423 /* DDASLLogger.m in Sources */, + E8EE827D272B9A2300A17217 /* XPRoomSendTextView.m in Sources */, + E8AB631928ADE2F40023B0D2 /* XPMonentsTopicRecommendPresenter.m in Sources */, + 9BD63FAE277EE97A006EB744 /* XPReleaseRadioPresenter.m in Sources */, + 9B1FC3D827E49C36006EFFE0 /* XPMineDressBubbleCollectionViewCell.m in Sources */, + 9BE01AEA2893CB4400B50299 /* XPDressSearchViewController.m in Sources */, + E8751E6B28A64C6E0056EF44 /* XPSailingRankTableViewCell.m in Sources */, 9B1B72B528003664003FACE9 /* Api+AnchorPk.m in Sources */, - 237D64C02A57FDAA000442C6 /* XPTreasureFairyShopingRecordCell.m in Sources */, - E8EEB90626FC5772007C6EBA /* YUMIManeConsumerAbstractCompileRegardGovernancer.m in Sources */, - E8B846D626FDE01B00A777FE /* YUMIManeReindictExternalizer.m in Sources */, - E8A30BF628534B35003B4873 /* DiscoveryStrangeConsumerAbstractMatrix.m in Sources */, - 237D64C52A57FDAA000442C6 /* XPTreasureFairySummonView.m in Sources */, - E801274027E323C800BAC3F2 /* YUMIChamberCombatRegardGovernancer.m in Sources */, - E8EEB91426FC7786007C6EBA /* YUMIManeConsumerAbstractNickRegardGovernancer.m in Sources */, - 18E7B31B26F0982E0064BC9B /* ConsumerExpand.m in Sources */, - 9BDA3E7D27FD47AB00517FE6 /* XCombatellegFanaticsSquadExternalizer.m in Sources */, - E8C6FFE62754FE53004DC9F0 /* YUMIResidenceHuntforExternalizer.m in Sources */, - 9B2A12DE2783FEDD00CED41B /* ConsumerVipAbstractVo.m in Sources */, - E824543526F57D6E00BE8163 /* YUMISurmountValidationDilemmaMobileRegardGovernancer.m in Sources */, - E8680718271967B00024F48F /* MiecreoscoopeRegard.m in Sources */, - E896EF942771AAC100AD2CC1 /* YUMIManeFanaticsExternalizer.m in Sources */, + E8EEB90626FC5772007C6EBA /* XPMineUserInfoEditViewController.m in Sources */, + E8B846D626FDE01B00A777FE /* XPMineRechargePresenter.m in Sources */, + E8A30BF628534B35003B4873 /* FindNewUserInfoModel.m in Sources */, + E801274027E323C800BAC3F2 /* XPRoomPKViewController.m in Sources */, + E8EEB91426FC7786007C6EBA /* XPMineUserInfoNickViewController.m in Sources */, + 18E7B31B26F0982E0064BC9B /* UserExpand.m in Sources */, + 9BDA3E7D27FD47AB00517FE6 /* XPAnchorFansTeamPresenter.m in Sources */, + E8C6FFE62754FE53004DC9F0 /* XPHomeSearchPresenter.m in Sources */, + 9B2A12DE2783FEDD00CED41B /* UserVipInfoVo.m in Sources */, + E824543526F57D6E00BE8163 /* XPLoginVerifBindPhoneViewController.m in Sources */, + E8680718271967B00024F48F /* MicroView.m in Sources */, + E896EF942771AAC100AD2CC1 /* XPMineFansPresenter.m in Sources */, E8B825CD26EA18C8009E8E9F /* DJDKMIMOMColor.m in Sources */, - E8751E5F28A62A970056EF44 /* YUMIMarchingExternalizer.m in Sources */, - 237D64B52A57FDAA000442C6 /* TreasureFairyInfoModel.m in Sources */, - E84A2E962A5280F900D6AF8A /* YUMIExchangeDiamondsRegard.m in Sources */, - E8DAC5AC2858305A00012CFD /* YUMIChamberCommunicationIntumesceRegard.m in Sources */, - 1427218929A75F6F00C7C423 /* HyperTextAtomicRespond.m in Sources */, - E8B9843028AB90200022D026 /* YUMISepartionMotifStatementRegard.m in Sources */, - E8E20BDE28164D3A0033B688 /* InterlocutionNevRegard.m in Sources */, - 9B734F76288A92FB00CBDAA9 /* YUMIManeFuntionProvisionMatrix.m in Sources */, - E82D5C70276AE60000858D6D /* IntelligencewearMatrix.m in Sources */, - E81125C4296E57B7000D9804 /* MHTinputAppearanceRegard.m in Sources */, - E880B3A1278BD60C00A83B0D /* YUMIThroughoutChamberCombatChosenChamberRegard.m in Sources */, - 9B3C181A292CE4FA003AF543 /* XCombatellegCombatAdaptationRegard.m in Sources */, - 237D64D82A57FDAA000442C6 /* XPTreasureFairySummonGiftView.m in Sources */, - E80EC80D28ACD84000D133C5 /* MHTIntrojectionObstacleRegard.m in Sources */, - E8D48250278D68BA003C1D08 /* YUMIAcrpssChamberCombatFasciaboardRegard.m in Sources */, + E8751E5F28A62A970056EF44 /* XPSailingPresenter.m in Sources */, + E84A2E962A5280F900D6AF8A /* XPExchangeDiamondsView.m in Sources */, + E8DAC5AC2858305A00012CFD /* XPRoomMessageBubbleView.m in Sources */, + 1427218929A75F6F00C7C423 /* HTTPDataResponse.m in Sources */, + E8B9843028AB90200022D026 /* XPMoentsTopicListView.m in Sources */, + E8E20BDE28164D3A0033B688 /* SessionNavView.m in Sources */, + 9B734F76288A92FB00CBDAA9 /* XPMineFuntionItemModel.m in Sources */, + E82D5C70276AE60000858D6D /* HeadwearModel.m in Sources */, + E81125C4296E57B7000D9804 /* QinputPhotoView.m in Sources */, + E880B3A1278BD60C00A83B0D /* XPAcrossRoomPKSelectRoomView.m in Sources */, + 9B3C181A292CE4FA003AF543 /* XPAnchorPKMatchView.m in Sources */, + E80EC80D28ACD84000D133C5 /* QInputBarView.m in Sources */, + E8D48250278D68BA003C1D08 /* XPAcrpssRoomPKPanelView.m in Sources */, 18F404C3276098F100A6C548 /* Api+Message.m in Sources */, - 9B85B6D7279FDABA00A0A1AC /* YUMIConsumerSolitaireCommunicationSolitaireRegard.m in Sources */, - 9B33E3CB27D85379003B0E62 /* UpwardsloadAccurate.m in Sources */, - E8AEAEF327141C7C0017FCE0 /* YUMIChamberCommunicationAccommodatedRegard.m in Sources */, - 9B1B729D28002264003FACE9 /* YUMIManeKellegFanaticsSquadMatrix.m in Sources */, - E8C6FFE02754EEF9004DC9F0 /* YUMIResidenceHuntforRegardGovernancer.m in Sources */, - E87E627F2A3F5D28002F68C9 /* YUMIStrangeResidenceDisportProvisionAssembletionRegardElement.m in Sources */, - E8AE427327153A3500BEEBB2 /* YUMIChamberImportpriseAccommodatedRegard.m in Sources */, - E89DCF5428FFEC67001647EC /* YUMIDesirePresentHistoryTabulationRegardElement.m in Sources */, - E85E7B072A4EB0D200B6D00A /* YUMIUnionExternalizer.m in Sources */, - 9BB89DC627FEB9E100586A83 /* XCombatellegFanaticsmissionRegardGovernancer.m in Sources */, + 9B85B6D7279FDABA00A0A1AC /* XPUserCardSkillCardView.m in Sources */, + 9B33E3CB27D85379003B0E62 /* UploadFile.m in Sources */, + E8AEAEF327141C7C0017FCE0 /* XPRoomMessageContainerView.m in Sources */, + 9B1B729D28002264003FACE9 /* XPMineAnchorFansTeamModel.m in Sources */, + E8C6FFE02754EEF9004DC9F0 /* XPHomeSearchViewController.m in Sources */, + E87E627F2A3F5D28002F68C9 /* XPNewHomePlayItemCollectionViewCell.m in Sources */, + E8AE427327153A3500BEEBB2 /* XPRoomActivityContainerView.m in Sources */, + E89DCF5428FFEC67001647EC /* XPWishGiftHistoryTableViewCell.m in Sources */, + 2331C1B22A60F32D00E1D940 /* XPCandyTreeEmptyableViewCell.m in Sources */, + E85E7B072A4EB0D200B6D00A /* XPGuildPresenter.m in Sources */, + 2331C17B2A5EB7AB00E1D940 /* XPNobleCenterEntranceView.m in Sources */, + 9BB89DC627FEB9E100586A83 /* XPAnchorFansTaskViewController.m in Sources */, E86596432701611A00846EBD /* UIImage+ImageEffects.m in Sources */, - E8E20BEF2816A5FC0033B688 /* YUMIManeBlackStatementTabulationRegardElement.m in Sources */, - 18486217271EAB8C005FC5DC /* BaseRealtimackConnector.m in Sources */, - E80EC81228ACD84000D133C5 /* MHTSpiritAttachment.m in Sources */, - E8DACCFB2766EDC60052092C /* MiecreoscoopePresentStressRegard.m in Sources */, - E85E7BAE2A4EC99300B6D00A /* YUMIManeGiveDiamondVC.m in Sources */, - E8CEA03D26EA3DE500644B44 /* SurmountCiphercodeExternalize.m in Sources */, - E885D533297798E1004DC088 /* InterlocutionInstanllingTabulationRegardElement.m in Sources */, - E85E7BA82A4EC99300B6D00A /* YUMIManeChooseGivePresentRegardElement.m in Sources */, - E8E70D7726F2F15100F03460 /* YUMIManeRegardGovernancer.m in Sources */, - 9B1FC3D527E49A5D006EFFE0 /* ChatIntumesceMatrix.m in Sources */, - E896EFA62771AEDD00AD2CC1 /* YUMIManeFanaticsTabulationRegardElement.m in Sources */, - E8E7DAEB2745158500C631CC /* YUMIExternalizeConsumerAbstractMatrix.m in Sources */, - E83DB487274670DA00D8CBD1 /* YUMIChamberPresentBroadCastMatrix.m in Sources */, - E88863C6278EAFC3004BCFAB /* YUMIThroughoutChamberCombatConsequentRegard.m in Sources */, - E8AC722C26F49580007D6E91 /* YUMIManeNotificaRegardGovernancer.m in Sources */, - 9B335B492925D8A00048A116 /* XCombatellegCombatChosenGenreGovernancer.m in Sources */, - E8098CAE282E07C00090B9F0 /* YUMISeparationsDispossessTabulationRegardElement.m in Sources */, - E85E7B4F2A4EB0D300B6D00A /* YUMIManeExchangeAuthorityVC.m in Sources */, - E84A2E932A527EC800D6AF8A /* YUMIRevenueReflectionExternalize.m in Sources */, - E85E7B172A4EB0D200B6D00A /* CollectiveComponentSpecificAbstractMatrix.m in Sources */, - 9B044DA0282D32F700DE4859 /* MiecreoscoopeCallforExtMatrix.m in Sources */, - E8D7D74B282BA1EC0007D7BD /* YUMISeparationsTabulationRegardElement.m in Sources */, - E8D34D5A28082357009C4835 /* ConsumerPresentRamparatAbstractMatrix.m in Sources */, - E82107842987E35300DE7040 /* CommunicationSeparationsAutoMatrix.m in Sources */, + E8E20BEF2816A5FC0033B688 /* XPMineBlackListTableViewCell.m in Sources */, + 23BA165B2A5D2ACF0030C5A3 /* PIBaseAnimationViewModel.m in Sources */, + 18486217271EAB8C005FC5DC /* BaseRtcImpl.m in Sources */, + E80EC81228ACD84000D133C5 /* QEmotionAttachment.m in Sources */, + E8DACCFB2766EDC60052092C /* MicroGiftValueView.m in Sources */, + E85E7BAE2A4EC99300B6D00A /* XPMineGiveDiamondVC.m in Sources */, + E8CEA03D26EA3DE500644B44 /* LoginPasswordPresent.m in Sources */, + 2331C1752A5EB71000E1D940 /* XPNobleUpgradeLevelView.m in Sources */, + E885D533297798E1004DC088 /* SessionSettingTableViewCell.m in Sources */, + E85E7BA82A4EC99300B6D00A /* XPMineChooseGiveGiftViewCell.m in Sources */, + E8E70D7726F2F15100F03460 /* XPMineViewController.m in Sources */, + 9B1FC3D527E49A5D006EFFE0 /* ChatBubbleModel.m in Sources */, + E896EFA62771AEDD00AD2CC1 /* XPMineFansTableViewCell.m in Sources */, + E8E7DAEB2745158500C631CC /* XPGiftUserInfoModel.m in Sources */, + E88863C6278EAFC3004BCFAB /* XPAcrossRoomPKResultView.m in Sources */, + E8AC722C26F49580007D6E91 /* XPMineNotificaViewController.m in Sources */, + 9B335B492925D8A00048A116 /* XPAnchorPKSelectTypeController.m in Sources */, + E8098CAE282E07C00090B9F0 /* XPMonentsEmptyTableViewCell.m in Sources */, + E85E7B4F2A4EB0D300B6D00A /* XPMineExchangeAuthorityVC.m in Sources */, + E84A2E932A527EC800D6AF8A /* XPIncomeRecordPresent.m in Sources */, + E85E7B172A4EB0D200B6D00A /* ClanMemberDetailInfoModel.m in Sources */, + 9B044DA0282D32F700DE4859 /* MicroInviteExtModel.m in Sources */, + E8D7D74B282BA1EC0007D7BD /* XPMonentsTableViewCell.m in Sources */, + E8D34D5A28082357009C4835 /* UserGiftWallInfoModel.m in Sources */, + E82107842987E35300DE7040 /* MessageMonentsAutoModel.m in Sources */, 189DD52E26DE255300AB55B1 /* AppDelegate.m in Sources */, - E83DB4842746661800D8CBD1 /* YUMIChamberPresentPingbackRegard.m in Sources */, - E8778AF82988F4E200CF139B /* YUMIInterlocutionSpeakHalloIntelligencerRegard.m in Sources */, - E84150C527747E0900A7F548 /* ThresholdReindictRewardMatrix.m in Sources */, - E8B9843328ABA2FF0022D026 /* SeparationsPicResAbstract.m in Sources */, - 9BE9F10227FEE5C200667200 /* XCombatellegFanaticsmissionSpecificMatrix.m in Sources */, - E8E0DAE6285C280E00566A2F /* YUMIInterlocutionDiscoveryStrangePrecautiousRegard.m in Sources */, - E85E7B1A2A4EB0D200B6D00A /* YUMIManeGoldRevenueReflectionVC.m in Sources */, - E86596542701A55500846EBD /* StatsticsticsServingFacilitater.m in Sources */, - E8E21A9B28B4BD92008F7C9D /* YUMIChamberGraffitiPresentBrightnessRegard.m in Sources */, - 237D64E22A57FDAA000442C6 /* XPTreasureFairyStoreView.m in Sources */, - E85E7B102A4EB0D200B6D00A /* UnionRevenueSpecificMatrix.m in Sources */, - E85E7B132A4EB0D200B6D00A /* UnionHuntforConsumerAbstractMatrix.m in Sources */, - E8E70D8C26F2F5A500F03460 /* YUMIManeIntelligenceProvisionAssembletionRegardElement.m in Sources */, - 9B17F71827BD150600440843 /* SVGAAnatomiserExecutive.m in Sources */, - E87DF5052A42CE21009C1185 /* YUMIResidenceHuntforReflectionElement.m in Sources */, + E83DB4842746661800D8CBD1 /* XPRoomGiftBroadcastView.m in Sources */, + E8778AF82988F4E200CF139B /* XPSessionSayHelloHeaderView.m in Sources */, + E84150C527747E0900A7F548 /* FirstRechargeRewardModel.m in Sources */, + E8B9843328ABA2FF0022D026 /* MonentsPicResInfo.m in Sources */, + 9BE9F10227FEE5C200667200 /* XPAnchorFansTaskDetailModel.m in Sources */, + E8E0DAE6285C280E00566A2F /* XPSessionFindNewAlertView.m in Sources */, + E85E7B1A2A4EB0D200B6D00A /* XPMineGoldIncomeRecordVC.m in Sources */, + E86596542701A55500846EBD /* StatisticsServiceHelper.m in Sources */, + E8E21A9B28B4BD92008F7C9D /* XPRoomGraffitiGiftAnimationView.m in Sources */, + E85E7B102A4EB0D200B6D00A /* GuildIncomeDetailModel.m in Sources */, + E85E7B132A4EB0D200B6D00A /* GuildSearchUserInfoModel.m in Sources */, + E8E70D8C26F2F5A500F03460 /* XPMineHeadItemCollectionViewCell.m in Sources */, + 9B17F71827BD150600440843 /* SVGAParserManager.m in Sources */, + E87DF5052A42CE21009C1185 /* XPHomeSearchRecordCell.m in Sources */, E8751E5928A62A390056EF44 /* Api+Sailing.m in Sources */, - 237D64D32A57FDAA000442C6 /* XPTreasureFairyWebView.m in Sources */, - E897ABFF28AF39B4003B3587 /* YUMIMarchingBrightnessRegard.m in Sources */, - E885D5362977CE28004DC088 /* InterlocutionInstanllingMatrix.m in Sources */, - E80DE40D2775ABA500BE5BCB /* YUMIThresholdReindictFlowProgramming.m in Sources */, - 9BE01AE128937DBC00B50299 /* YUMIPretendUpwardsProcurementSolitaireRegardGovernancer.m in Sources */, - 237D64BB2A57FDAA000442C6 /* XPTreasureFairyStoreResultCell.m in Sources */, - E896EFA22771AE9400AD2CC1 /* YUMIManeAssistantRegardGovernancer.m in Sources */, - 1427218D29A75F6F00C7C423 /* HyperTextDeficitirectRespond.m in Sources */, - E875A1B829755EE200AB1BBD /* InterlocutionConsumerAbstractTabulationRegardElement.m in Sources */, - E8E70D8C26F2F5A500F03460 /* YUMIManeIntelligenceProvisionAssembletionRegardElement.m in Sources */, - 9BE9F0FC27FED2E100667200 /* XCombatellegFanaticsJoinMatrix.m in Sources */, - E87DF50B2A42CEC9009C1185 /* ResidenceEveryOneHuntforMatrix.m in Sources */, - 186A534A26FC6ED900D67B2C /* MKJActionSheetDisposition.m in Sources */, - 9B6E856A281A982A0041A321 /* YUMIChamberEncourageRegard.m in Sources */, - E8DBB6FD27B63CE000AA285D /* TraitCompetitionMiecreoscoopeRegard.m in Sources */, - E85E7B4A2A4EB0D300B6D00A /* YUMIManeMangerStatementRegardGovernancer.m in Sources */, + E897ABFF28AF39B4003B3587 /* XPSailingAnimationView.m in Sources */, + E885D5362977CE28004DC088 /* SessionSettingModel.m in Sources */, + E80DE40D2775ABA500BE5BCB /* XPFirstRechargeFlowLayout.m in Sources */, + 9BE01AE128937DBC00B50299 /* XPDressUpShopCardViewController.m in Sources */, + E896EFA22771AE9400AD2CC1 /* XPMineFriendViewController.m in Sources */, + 1427218D29A75F6F00C7C423 /* HTTPRedirectResponse.m in Sources */, + E875A1B829755EE200AB1BBD /* SessionUserInfoTableViewCell.m in Sources */, + E8E70D8C26F2F5A500F03460 /* XPMineHeadItemCollectionViewCell.m in Sources */, + 9BE9F0FC27FED2E100667200 /* XPAnchorFansJoinModel.m in Sources */, + E87DF50B2A42CEC9009C1185 /* HomeEveryOneSearchModel.m in Sources */, + 186A534A26FC6ED900D67B2C /* TTActionSheetConfig.m in Sources */, + 9B6E856A281A982A0041A321 /* XPRoomRecommendView.m in Sources */, + E8DBB6FD27B63CE000AA285D /* LittleGameMicroView.m in Sources */, + E85E7B4A2A4EB0D300B6D00A /* XPMineMangerListViewController.m in Sources */, E81C278D26EAFAF60031E639 /* DESEncrypt.m in Sources */, - E85E7BB92A4ED89F00B6D00A /* YUMIRevenueReflectionGoldSpecificsIntelligenceRegard.m in Sources */, - E84A2EAB2A528A4100D6AF8A /* YUMIRevenueReflectionGoldSpecificsPickRegardRegard.m in Sources */, - E82107812987D7F300DE7040 /* CommunicationSeparationsMatrix.m in Sources */, + E85E7BB92A4ED89F00B6D00A /* XPIncomeRecordGoldDetailsHeadView.m in Sources */, + E84A2EAB2A528A4100D6AF8A /* XPIncomeRecordGoldDetailsPickViewView.m in Sources */, + E82107812987D7F300DE7040 /* MessageMonentsModel.m in Sources */, E81366E726F0A49E0076364C /* NSString+Utils.m in Sources */, - E8EEB90126FC31B6007C6EBA /* YUMIManeConsumerAbstractExternalizer.m in Sources */, - E81A65312834E53600F55894 /* YUMISeparationsRecentlyRegardGovernancer.m in Sources */, - 18F404BB2760982000A6C548 /* ChatLimitMatrix.m in Sources */, - E8A30BE828534A63003B4873 /* YUMIInterlocutionDiscoveryStrangeTabulationRegardElement.m in Sources */, - 9BE9F10527FF04CF00667200 /* XCombatellegFanaticsmissionTabulationRegardElement.m in Sources */, - 9B92A33C2797E38100AD168F /* YUMIManeIntelligenceProvisionTabulationRegardElement.m in Sources */, - 237D64DC2A57FDAA000442C6 /* XPTreasureFailrySummonBallView.m in Sources */, - E854103928646A00005CFD9F /* YUMISeparationsReplicationFurthaerTabulationRegardElement.m in Sources */, - 9B8DE0E1289CF02900FB6EC2 /* YUMIPresentCompoundMatrix.m in Sources */, - E85E7B092A4EB0D200B6D00A /* YUMIUnionRemoveComponentExternalizer.m in Sources */, - E8950186282CAC80007E459A /* YUMISeparationsTooObstacleRegard.m in Sources */, - E86507E5281A7D4D006951B0 /* CommunicationSatisfactionTweetRegard.m in Sources */, - E824544B26F5BBB800BE8163 /* YUMIManeModifIntersectPwordRegardGovernancer.m in Sources */, + E8EEB90126FC31B6007C6EBA /* XPMineUserInfoPresenter.m in Sources */, + E81A65312834E53600F55894 /* XPMonentsLatestViewController.m in Sources */, + 18F404BB2760982000A6C548 /* ChatLimitModel.m in Sources */, + E8A30BE828534A63003B4873 /* XPSessionFindNewTableViewCell.m in Sources */, + 9BE9F10527FF04CF00667200 /* XPAnchorFansTaskTableViewCell.m in Sources */, + 9B92A33C2797E38100AD168F /* XPMineHeadItemTableViewCell.m in Sources */, + E854103928646A00005CFD9F /* XPMonentsReplyMoreTableViewCell.m in Sources */, + 9B8DE0E1289CF02900FB6EC2 /* XPGiftCompoundModel.m in Sources */, + E85E7B092A4EB0D200B6D00A /* XPGuildRemoveMemberPresenter.m in Sources */, + E8950186282CAC80007E459A /* XPMonentsTooBarView.m in Sources */, + E86507E5281A7D4D006951B0 /* MessageContentTweetView.m in Sources */, + E824544B26F5BBB800BE8163 /* XPMineModifPayPwdViewController.m in Sources */, E81C1B2227705F950020D1E4 /* Api+ArrangeMic.m in Sources */, - 9BD798B4292632FE003E03E6 /* YUMIInterlocutionStatementIntelligenceProvisionRegard.m in Sources */, - 237D64D52A57FDAA000442C6 /* XPTreasureFailyResultView.m in Sources */, - E8E20BE828169BDC0033B688 /* YUMIManeSurmountCiphercodeExternalizer.m in Sources */, - E85E7B3F2A4EB0D300B6D00A /* YUMIUnionSingleChamberRevenueTabulationRegardElement.m in Sources */, - 9B4D449628F15EE7002572D5 /* YUMIPresentWeekSatellitePingbackRegard.m in Sources */, - E84150C227747BF700A7F548 /* ThresholdReindictMatrix.m in Sources */, - 9B1EF3D227E81C0600554295 /* YUMIManePretendUpwardsIntumesceRegardGovernancer.m in Sources */, - 1427218B29A75F6F00C7C423 /* HyperTextAccurateRespond.m in Sources */, - E839533C276A0CCD00CF2F24 /* YUMIManeCarTabulationRegardElement.m in Sources */, - E8751E7128A6541B0056EF44 /* ChamberMarchingRateMatrix.m in Sources */, - E85E7B452A4EB0D300B6D00A /* YUMIManeExchangeAuthorityFooderRegard.m in Sources */, - E8EEB8FE26FC2DF8007C6EBA /* YUMIManeConsumerAbstractCustomNevRegard.m in Sources */, - E85E7B2E2A4EB0D300B6D00A /* YUMIUnionHuntforNevRegard.m in Sources */, - E87E62752A3F5907002F68C9 /* YUMIStrangeResidenceDisportDispossessTabulationRegardElement.m in Sources */, - E839532A276A002800CF2F24 /* YUMIManePretendUpwardsRegardGovernancer.m in Sources */, - E896EF972771AAE400AD2CC1 /* YUMIManeConsiderationExternalizer.m in Sources */, - E86F6185284F4E4800E8EC9A /* ChamberHalfHourRateMatrix.m in Sources */, - 9B208A362779B50100F9E54A /* PresentMagnificentAbstractMatrix.m in Sources */, - E80A086227F2AC190027B30C /* ChamberCombatSpecificAbstractMatrix.m in Sources */, - E824545126F5CE6E00BE8163 /* YUMIManeModifIntersectPwordExternalizer.m in Sources */, - 1464C5ED29A4784F00AF7C94 /* YUMIManeSimpleConsumerAbstractRegardGovernancer.m in Sources */, - E8098CB1282E86EF0090B9F0 /* YUMISeparationsSatisfactionRegard.m in Sources */, - E85E3FA728B7A6F000268DC8 /* CommunicationSatisfactionSeparationsRegard.m in Sources */, + 9BD798B4292632FE003E03E6 /* XPSessionListHeadItemView.m in Sources */, + E8E20BE828169BDC0033B688 /* XPMineLoginPasswordPresenter.m in Sources */, + E85E7B3F2A4EB0D300B6D00A /* XPGuildSingleRoomIncomeTableViewCell.m in Sources */, + 9B4D449628F15EE7002572D5 /* XPGiftWeekStarBroadcastView.m in Sources */, + E84150C227747BF700A7F548 /* FirstRechargeModel.m in Sources */, + 9B1EF3D227E81C0600554295 /* XPMineDressUpBubbleViewController.m in Sources */, + 2331C1AB2A60F32D00E1D940 /* CandyTreeResultModel.m in Sources */, + 1427218B29A75F6F00C7C423 /* HTTPFileResponse.m in Sources */, + E839533C276A0CCD00CF2F24 /* XPMineCarTableViewCell.m in Sources */, + 2331C1B62A60F32D00E1D940 /* XPCandyTreeInsufficientBalanceView.m in Sources */, + E8751E7128A6541B0056EF44 /* RoomSailingRankModel.m in Sources */, + E85E7B452A4EB0D300B6D00A /* XPMineExchangeAuthorityFooderView.m in Sources */, + E8EEB8FE26FC2DF8007C6EBA /* XPMineUserInfoCustomNavView.m in Sources */, + E85E7B2E2A4EB0D300B6D00A /* XPGuildSearchNavView.m in Sources */, + E87E62752A3F5907002F68C9 /* XPNewHomePlayEmptyTableViewCell.m in Sources */, + E839532A276A002800CF2F24 /* XPMineDressUpViewController.m in Sources */, + 2331C1682A5EB71000E1D940 /* NobleAuthInfo.m in Sources */, + E896EF972771AAE400AD2CC1 /* XPMineAttentionPresenter.m in Sources */, + E86F6185284F4E4800E8EC9A /* RoomHalfHourRankModel.m in Sources */, + 9B208A362779B50100F9E54A /* GiftNobleInfoModel.m in Sources */, + E80A086227F2AC190027B30C /* RoomPKDetailInfoModel.m in Sources */, + E824545126F5CE6E00BE8163 /* XPMineModifPayPwdPresenter.m in Sources */, + 1464C5ED29A4784F00AF7C94 /* XPMineSimpleUserInfoViewController.m in Sources */, + E8098CB1282E86EF0090B9F0 /* XPMonentsContentView.m in Sources */, + E85E3FA728B7A6F000268DC8 /* MessageContentMonentsView.m in Sources */, E880B3AF278BE1D800A83B0D /* Api+AcrossRoomPK.m in Sources */, - E8B9842D28AB77F10022D026 /* YUMISeparationsAnnounceMotifRegard.m in Sources */, - E88C72992828F3620047FB2B /* YUMIChamberManualBibliothecaTabulationRegardElement.m in Sources */, - 9BD798B129262434003E03E6 /* YUMIInterlocutionStatementIntelligenceRegard.m in Sources */, - E8D34D4728080295009C4835 /* YUMIManeConsumerAtomicRegardGovernancer.m in Sources */, - E80E09A52A40B5DD00CD2BE7 /* YUMIChamberHalfTissueRegard.m in Sources */, - E801275127E3281100BAC3F2 /* YUMIChamberCombatIntratemporalTabulationRegardElement.m in Sources */, - E8EEB90F26FC6AB8007C6EBA /* YUMIManeConsumerAbstractCompileExternalizer.m in Sources */, - E873EB09280960990071030D /* YUMIManeConsumerAbstractReputationSolitaireRegard.m in Sources */, - E85E7B162A4EB0D200B6D00A /* UnionAbstractMatrix.m in Sources */, - E885D53C2977FBFD004DC088 /* CommunicationIntratemporalRegard.m in Sources */, - E8AC723A26F49AAE007D6E91 /* YUMIManeNotifyStatus.m in Sources */, - E87DF50E2A42CF15009C1185 /* ResidenceEnergeticChamberMatrix.m in Sources */, + E8B9842D28AB77F10022D026 /* XPMonentsPublishTopicView.m in Sources */, + E88C72992828F3620047FB2B /* XPRoomMusicLibraryTableViewCell.m in Sources */, + 9BD798B129262434003E03E6 /* XPSessionListHeadView.m in Sources */, + E8D34D4728080295009C4835 /* XPMineUserDataViewController.m in Sources */, + E801275127E3281100BAC3F2 /* XPRoomPKTimeTableViewCell.m in Sources */, + E8EEB90F26FC6AB8007C6EBA /* XPMineUserInfoEditPresenter.m in Sources */, + E873EB09280960990071030D /* XPMineUserInfoVoiceCardView.m in Sources */, + E85E7B162A4EB0D200B6D00A /* GuildInfoModel.m in Sources */, + E885D53C2977FBFD004DC088 /* MessageTimeView.m in Sources */, + E8AC723A26F49AAE007D6E91 /* XPMineNotifyStatus.m in Sources */, + E87DF50E2A42CF15009C1185 /* HomeLiveRoomModel.m in Sources */, E8F6135F291E274E00E12650 /* NSArray+Safe.m in Sources */, - E87E62622A3F568A002F68C9 /* YUMIStrangeResidenceNevRegard.m in Sources */, - 18E7B33226F317A20064BC9B /* YUMITissueRegardGovernancer.m in Sources */, - E8AEAEF927141CA30017FCE0 /* ChamberIntelligencerRegard.m in Sources */, - E8AB632428AE10310023B0D2 /* YUMISepartionMotifStatementRegardGovernancer.m in Sources */, - E8098CAA282E03B40090B9F0 /* YUMISeparationsEncourageExternalizer.m in Sources */, - E8F63CBB298B648300B338BA /* InterlocutionSpeakHalloStatementMatrix.m in Sources */, - 9B1B729828002147003FACE9 /* YUMIManeFanaticsSquadExternalizer.m in Sources */, - E85E7B1E2A4EB0D200B6D00A /* YUMIManeKellegRevenueStatsticsRegardGovernancer.m in Sources */, - E87DF4DA2A42C9D9009C1185 /* ResidenceAssembleChamberMatrix.m in Sources */, - E86507E8281A8212006951B0 /* SatisfactionTweetMatrix.m in Sources */, - E8D55CA0281186D6006935A5 /* InterlocutionVocalmusicReflectionRegard.m in Sources */, - E8A88D2A27E81C8600CA8837 /* YUMIChamberCombatConsumerAssembletionRegardElement.m in Sources */, - 9B7B606627BBA0EE0070BB72 /* XCombatellegAttentDischargeAbstract.m in Sources */, - E81C1B29277069DD0020D1E4 /* YUMIScheduleLoudspeakerDispossessTabulationRegardElement.m in Sources */, - E8AC721C26F4720B007D6E91 /* YUMIManeInstanllingExternalize.m in Sources */, - E81060EE2987C35700B772F0 /* CommunicationEssayClickMatrix.m in Sources */, - E87AE8C5284E1A8400CAFBB3 /* YUMIChamberStrangeConsumerBewelcometoRegard.m in Sources */, - E8A3540728FEBD460014A784 /* YUMIDesirePresentCreateProvisionRegardGovernancer.m in Sources */, - E87E627B2A3F5A0D002F68C9 /* YUMIStrangeResidenceEncourageExternalizer.m in Sources */, - 14DCAD08299B36A500A7DD31 /* YUMISurmountPwordRegardGovernancer.m in Sources */, - E81060F42987C6B200B772F0 /* CommunicationUnfoildEnergeticMatrix.m in Sources */, - E8AEAEF027141C430017FCE0 /* YUMIChamberParrotAccommodatedRegard.m in Sources */, - 9B85F3532806AB9A006EDF51 /* XCombatellegCombatConsequentRegard.m in Sources */, - E81AF32527F1D5B8003B9E43 /* YUMIChamberCombatProgressRegard.m in Sources */, - E8DEC99527648FA50078CB70 /* ClientDisposition.m in Sources */, - 9B6E8577281ABECC0041A321 /* YUMIChamberInsideEncourageDispossessElement.m in Sources */, - E85E7BC22A4EE82300B6D00A /* YUMIManeStatementElement.m in Sources */, - E880B3A6278BD69900A83B0D /* YUMIThroughoutChamberCombatTabulationRegardElement.m in Sources */, - E8EEB90926FC579A007C6EBA /* YUMIManeConsumerAbstractCompileTabulationRegardElement.m in Sources */, - E8F1559028125E2D00EE8C06 /* CommunicationVocalmusicConcentrate.m in Sources */, - E8901CF628B38D89001E9A92 /* YUMIGraffitiPresentRegard.m in Sources */, - E89DA67527009ACD008483C1 /* YUMIManeReindictNevRegard.m in Sources */, - E81A6546283519CA00F55894 /* SeparationsMotifMatrix.m in Sources */, - E86E79D028A4E0B2006DAF48 /* SatisfactionRistPrecautiousMatrix.m in Sources */, - 237D64DB2A57FDAA000442C6 /* XPTreasureFairyShopingRecordView.m in Sources */, - 9BFE0D922899042600F53C24 /* YUMImissionCompleteTipRegard.m in Sources */, - 9BE01AE728938AB600B50299 /* YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement.m in Sources */, - E82E75062828E76400C25EF7 /* YUMICoreAtomicExecutive.m in Sources */, - 9B8DE0E4289CF7AA00FB6EC2 /* YUMIChamberPresentCompoundRegard.m in Sources */, - 1808072D2731598F001FD836 /* YUMINetIndicateYYDesignation.m in Sources */, - E818E348286ECA4B005EDF68 /* YUMISeparationsAnnounceRegardGovernancer.m in Sources */, - 9B88E20C28C5EB8300D26FBA /* CommunicationSatisfactionDeficitSheatheRegard.m in Sources */, - E896EFAF2771AF0F00AD2CC1 /* YUMIManeAssistantDispossessTabulationRegardElement.m in Sources */, - E8E859E928264F4500EE4857 /* YUMIChamberTransferManualRegardGovernancer.m in Sources */, - 18486213271EA9DA005FC5DC /* RealtimackExecutive.m in Sources */, - E8D34D5628080393009C4835 /* YUMIManeAtomicPresentAssembletionRegardElement.m in Sources */, - E84A2E9C2A52823900D6AF8A /* YUMIEssayField.m in Sources */, - 237D64DD2A57FDAA000442C6 /* XPTreasureFairyTrialsView.m in Sources */, - 186A536926FC6F2E00D67B2C /* YUMIParaticipationRegard.m in Sources */, - E8AB632C28AE19600023B0D2 /* YUMISeparationsManeRegardGovernancer.m in Sources */, - E87AE8C1284E184300CAFBB3 /* ChamberStrangeConsumerBewelcometoMatrix.m in Sources */, - 9BC5C91C277C8A7B007C8719 /* YUMIReleaseWirelessRegardGovernancer.m in Sources */, - 186A534C26FC6ED900D67B2C /* MKJPrecautiousRegard.m in Sources */, - E8A3540428FEB7100014A784 /* YUMIDesirePresentHistoryRegardGovernancer.m in Sources */, - E85E7B332A4EB0D300B6D00A /* YUMIUnionRevenueDivisionRegard.m in Sources */, - E85E7B0F2A4EB0D200B6D00A /* UnionChamberAbstractMatrix.m in Sources */, - E801275527E3326000BAC3F2 /* YUMIChamberCombatConsumerRegard.m in Sources */, - E8FE3C2C2994D0E80006C6C7 /* YUMISwitch.m in Sources */, - E8D4824D278D2CE4003C1D08 /* YUMIThroughoutChamberCombatCallforConsequentRegard.m in Sources */, - E81E09CC290F732600A1F410 /* YUMIAdIndicateTool.m in Sources */, - 9BD8D4E628911F7700AE03FF /* YUMIManeAssembleChamberStatementExternalizer.m in Sources */, - E866B6E52759F96F009B002A /* YUMIMiniChamberRegard.m in Sources */, - E818E34B286ECABF005EDF68 /* YUMISeparationsAnnounceExternalizer.m in Sources */, - E85E7B462A4EB0D300B6D00A /* YUMIUnionDispossessAssembletionRegardElement.m in Sources */, - 9B7B605B27BB53060070BB72 /* XCombatellegAudienceUpwardsLoudspeakerRegard.m in Sources */, - 14DCAD0E299B6AD900A7DD31 /* YUMIForgetPwordRegardGovernancer.m in Sources */, - 9BE9F0FF27FED76500667200 /* XCombatellegFanaticsmissionMatrix.m in Sources */, - E85E7BAA2A4EC99300B6D00A /* YUMIManeGiveDiamondPwordRegard.m in Sources */, - E88C72922828EA4E0047FB2B /* Manual+CoreDataClass.m in Sources */, - 237D64BA2A57FDAA000442C6 /* XPTreasureFairyViewController.m in Sources */, - E84A2EA52A5288CB00D6AF8A /* YUMIGoldSpecificsChooseChamberRegard.m in Sources */, - E8E7DAE82744F5EF00C631CC /* YUMIPresentStorage.m in Sources */, - E8AA6EEF27DF1E6B009B4C2B /* YUMIChamberMotifRegardGovernancer.m in Sources */, + E87E62622A3F568A002F68C9 /* XPNewHomeNavView.m in Sources */, + 18E7B33226F317A20064BC9B /* XPWebViewController.m in Sources */, + E8AEAEF927141CA30017FCE0 /* RoomHeaderView.m in Sources */, + E8AB632428AE10310023B0D2 /* XPMoentsTopicListViewController.m in Sources */, + E8098CAA282E03B40090B9F0 /* XPMonentsRecommendPresenter.m in Sources */, + E8F63CBB298B648300B338BA /* SessionSayHelloListModel.m in Sources */, + 9B1B729828002147003FACE9 /* XPMineFansTeamPresenter.m in Sources */, + E85E7B1E2A4EB0D200B6D00A /* XPMineAnchorIncomeStatisViewController.m in Sources */, + E87DF4DA2A42C9D9009C1185 /* HomeCollectRoomModel.m in Sources */, + E86507E8281A8212006951B0 /* ContentTweetModel.m in Sources */, + E8D55CA0281186D6006935A5 /* SessionAudioRecordView.m in Sources */, + E8A88D2A27E81C8600CA8837 /* XPRoomPKUserCollectionViewCell.m in Sources */, + 9B7B606627BBA0EE0070BB72 /* XPAnchorAttentSendInfo.m in Sources */, + E81C1B29277069DD0020D1E4 /* XPArrangeMicEmptyTableViewCell.m in Sources */, + E8AC721C26F4720B007D6E91 /* XPMineSettingPresent.m in Sources */, + E81060EE2987C35700B772F0 /* MessageTextClickModel.m in Sources */, + E87AE8C5284E1A8400CAFBB3 /* XPRoomNewUserGreetView.m in Sources */, + E8A3540728FEBD460014A784 /* XPWishGiftCreateItemViewController.m in Sources */, + E87E627B2A3F5A0D002F68C9 /* XPNewHomeRecommendPresenter.m in Sources */, + 14DCAD08299B36A500A7DD31 /* XPLoginPwdViewController.m in Sources */, + E81060F42987C6B200B772F0 /* MessageOpenLiveModel.m in Sources */, + E8AEAEF027141C430017FCE0 /* XPRoomMenuContainerView.m in Sources */, + 9B85F3532806AB9A006EDF51 /* XPAnchorPKResultView.m in Sources */, + E81AF32527F1D5B8003B9E43 /* XPRoomPKProgressView.m in Sources */, + E8DEC99527648FA50078CB70 /* ClientConfig.m in Sources */, + 9B6E8577281ABECC0041A321 /* XPRoomInsideRecommendEmptyCell.m in Sources */, + E85E7BC22A4EE82300B6D00A /* XPMineListCell.m in Sources */, + E880B3A6278BD69900A83B0D /* XPAcrossRoomPKTableViewCell.m in Sources */, + E8EEB90926FC579A007C6EBA /* XPMineUserInfoEditTableViewCell.m in Sources */, + E8F1559028125E2D00EE8C06 /* MessageAudioCenter.m in Sources */, + E8901CF628B38D89001E9A92 /* XPGraffitiGiftView.m in Sources */, + E89DA67527009ACD008483C1 /* XPMineRechargeNavView.m in Sources */, + E81A6546283519CA00F55894 /* MonentsTopicModel.m in Sources */, + E86E79D028A4E0B2006DAF48 /* ContentRistAlertModel.m in Sources */, + 9BFE0D922899042600F53C24 /* XPTaskCompleteTipView.m in Sources */, + 9BE01AE728938AB600B50299 /* XPDressUpShopCardTableViewCell.m in Sources */, + E82E75062828E76400C25EF7 /* XPCoreDataManager.m in Sources */, + 9B8DE0E4289CF7AA00FB6EC2 /* XPRoomGiftCompoundView.m in Sources */, + 1808072D2731598F001FD836 /* XPNetImageYYLabel.m in Sources */, + E818E348286ECA4B005EDF68 /* XPMonentsPublishViewController.m in Sources */, + 9B88E20C28C5EB8300D26FBA /* MessageContentRedPacketView.m in Sources */, + E896EFAF2771AF0F00AD2CC1 /* XPMineFriendEmptyTableViewCell.m in Sources */, + E8E859E928264F4500EE4857 /* XPRoomTransferMusicViewController.m in Sources */, + 18486213271EA9DA005FC5DC /* RtcManager.m in Sources */, + E8D34D5628080393009C4835 /* XPMineDataGiftCollectionViewCell.m in Sources */, + E84A2E9C2A52823900D6AF8A /* XPTextField.m in Sources */, + 186A536926FC6F2E00D67B2C /* XPShareView.m in Sources */, + E8AB632C28AE19600023B0D2 /* XPMonentsMineViewController.m in Sources */, + E87AE8C1284E184300CAFBB3 /* RoomNewUserGreetModel.m in Sources */, + 9BC5C91C277C8A7B007C8719 /* XPReleaseRadioViewController.m in Sources */, + 186A534C26FC6ED900D67B2C /* TTAlertView.m in Sources */, + E8A3540428FEB7100014A784 /* XPWishGiftHistoryViewController.m in Sources */, + E85E7B332A4EB0D300B6D00A /* XPGuildIncomeSectionView.m in Sources */, + E85E7B0F2A4EB0D200B6D00A /* GuildRoomInfoModel.m in Sources */, + E801275527E3326000BAC3F2 /* XPRoomPKUserView.m in Sources */, + E8FE3C2C2994D0E80006C6C7 /* XPSwitch.m in Sources */, + E8D4824D278D2CE4003C1D08 /* XPAcrossRoomPKInviteResultView.m in Sources */, + E81E09CC290F732600A1F410 /* XPAdImageTool.m in Sources */, + 9BD8D4E628911F7700AE03FF /* XPMineCollectRoomListPresenter.m in Sources */, + E866B6E52759F96F009B002A /* XPMiniRoomView.m in Sources */, + 2331C1AE2A60F32D00E1D940 /* CandyTreeInfoModel.m in Sources */, + E818E34B286ECABF005EDF68 /* XPMonentsPublishPresenter.m in Sources */, + E85E7B462A4EB0D300B6D00A /* XPGuildEmptyCollectionViewCell.m in Sources */, + 9B7B605B27BB53060070BB72 /* XPAnchorAudienceUpMicView.m in Sources */, + 14DCAD0E299B6AD900A7DD31 /* XPForgetPwdViewController.m in Sources */, + 9BE9F0FF27FED76500667200 /* XPAnchorFansTaskModel.m in Sources */, + E85E7BAA2A4EC99300B6D00A /* XPMineGiveDiamondPwdView.m in Sources */, + E88C72922828EA4E0047FB2B /* Music+CoreDataClass.m in Sources */, + E84A2EA52A5288CB00D6AF8A /* XPGoldDetailsChooseRoomView.m in Sources */, + E8E7DAE82744F5EF00C631CC /* XPGiftStorage.m in Sources */, + E8AA6EEF27DF1E6B009B4C2B /* XPRoomTopicViewController.m in Sources */, 1427219629A75F6F00C7C423 /* DDData.m in Sources */, - E87AE7FC277AAC450037823A /* YUMIChamberCoupleExternalizer.m in Sources */, - E85E7B652A4EC35A00B6D00A /* YUMIExchangeDiamondsMatrix.m in Sources */, - E878894C273A607C00BF1D57 /* YUMIExternalizeConsumerAssembletionRegardElement.m in Sources */, - 181D7F212727D9DB00B7C059 /* SocialPhaseRegard.m in Sources */, - E8AB630D28ADD8C60023B0D2 /* YUMISeparationMotifAccommodatedRegardGovernancer.m in Sources */, - E8D4DE472940473500EC788D /* PresentTwelveSatelliteThresholdMatrix.m in Sources */, - 237D64C22A57FDAA000442C6 /* XPTreasureFairyShopingExchangeCell.m in Sources */, - E87DF4FB2A42CCDE009C1185 /* YUMIResidenceDeficitommendAssembletionRegardElement.m in Sources */, - 187EEEF026E89FE8002833B2 /* AccountAbstractStorage.m in Sources */, - 9BFE0D8E2898C8C300F53C24 /* XCombatellegSolitaireCommunicationAssembletionRegardElement.m in Sources */, - E87DF4B72A42C2FD009C1185 /* YUMIThresholdReindictAssembletionRegard.m in Sources */, - E85E7B382A4EB0D300B6D00A /* YUMIManeUnionHuntforComponentTabulationRegardElement.m in Sources */, - E8998D852859B4FA00C68558 /* YUMIManeConsumerAbstractPresentRegard.m in Sources */, - 186A536B26FC6F2E00D67B2C /* YUMIParaticipationProvisionElement.m in Sources */, - 9B42869228C1AED4009034D2 /* YUMIAchieveDeficitSheatheMatrix.m in Sources */, - E8B846C526FDB41A00A777FE /* YUMIManeConsumerAbstractlbumExternalizer.m in Sources */, - 9BFB101F2897CC4300B3985E /* XCombatellegSolitaireRegard.m in Sources */, - 1427218F29A75F6F00C7C423 /* HyperTextConnection.m in Sources */, - E83DB47D2746372300D8CBD1 /* YUMIChamberPresentOriflammeRegard.m in Sources */, - 9BAA5FED277A1BBE007453F3 /* YUMIPrivacyRegardGovernancer.m in Sources */, - E873EB02280922720071030D /* YUMIManeConsumerAbstractDispossessAssembletionRegardElement.m in Sources */, - E872309326E8D31500B90D4F /* SurmountValidationCodeRegard.m in Sources */, - E82107872987E49100DE7040 /* CommunicationDeficitSheatheMatrix.m in Sources */, - E80E099B2A40B5DD00CD2BE7 /* ConfectioneryTimberAbstractMatrix.m in Sources */, - E87E91552796B6DE00A7B3F2 /* YUMIChamberCallforConsumerRegardGovernancer.m in Sources */, - E880B3B5278C1FE400A83B0D /* YUMIThroughoutChamberCombatExternalizer.m in Sources */, - 186A534626FC6ED900D67B2C /* MKJPopup.m in Sources */, - 9B4D449328F15765002572D5 /* YUMIPresentFortunatePresentPingbackRegard.m in Sources */, + E87AE7FC277AAC450037823A /* XPRoomTagPresenter.m in Sources */, + E85E7B652A4EC35A00B6D00A /* XPExchangeDiamondsModel.m in Sources */, + E878894C273A607C00BF1D57 /* XPGiftUserCollectionViewCell.m in Sources */, + 2331C1712A5EB71000E1D940 /* XPNobleCenterTableHeadView.m in Sources */, + 181D7F212727D9DB00B7C059 /* SocialStageView.m in Sources */, + E8AB630D28ADD8C60023B0D2 /* XPMonentTopicContainerViewController.m in Sources */, + E8D4DE472940473500EC788D /* GiftTwelveStarFirstModel.m in Sources */, + E87DF4FB2A42CCDE009C1185 /* XPHomeRedommendCollectionViewCell.m in Sources */, + 187EEEF026E89FE8002833B2 /* AccountInfoStorage.m in Sources */, + 2331C1B82A60F32D00E1D940 /* XPRoomHalfWebView.m in Sources */, + 9BFE0D8E2898C8C300F53C24 /* XPAnchorCardSkillCollectionViewCell.m in Sources */, + E87DF4B72A42C2FD009C1185 /* XPFirstRechargeCollectionView.m in Sources */, + E85E7B382A4EB0D300B6D00A /* XPMineGuildSearchMemberTableViewCell.m in Sources */, + E8998D852859B4FA00C68558 /* XPMineUserInfoGiftView.m in Sources */, + 186A536B26FC6F2E00D67B2C /* XPShareItemCell.m in Sources */, + 9B42869228C1AED4009034D2 /* XPReceiveRedPacketModel.m in Sources */, + E8B846C526FDB41A00A777FE /* XPMineUserInfolbumPresenter.m in Sources */, + 9BFB101F2897CC4300B3985E /* XPAnchorCardView.m in Sources */, + 1427218F29A75F6F00C7C423 /* HTTPConnection.m in Sources */, + E83DB47D2746372300D8CBD1 /* XPRoomGiftBannerView.m in Sources */, + 9BAA5FED277A1BBE007453F3 /* XPPrivacyViewController.m in Sources */, + E873EB02280922720071030D /* XPMineUserInfoEmptyCollectionViewCell.m in Sources */, + E872309326E8D31500B90D4F /* LoginVerifCodeView.m in Sources */, + E82107872987E49100DE7040 /* MessageRedPacketModel.m in Sources */, + E87E91552796B6DE00A7B3F2 /* XPRoomInviteUserViewController.m in Sources */, + E880B3B5278C1FE400A83B0D /* XPAcrossRoomPKPresenter.m in Sources */, + 186A534626FC6ED900D67B2C /* TTPopup.m in Sources */, + 9B4D449328F15765002572D5 /* XPGiftLuckyGiftBroadcastView.m in Sources */, E81C278C26EAFAF60031E639 /* Base64.m in Sources */, - E8C1CD7027D894B800376F83 /* ChamberAcceptChampionProvisionMatrix.m in Sources */, - E85E7B4B2A4EB0D300B6D00A /* YUMIManeUnionExecutiveSetRegardGovernancer.m in Sources */, + E8C1CD7027D894B800376F83 /* RoomFaceTitleItemModel.m in Sources */, + E85E7B4B2A4EB0D300B6D00A /* XPMineGuildManagerSetViewController.m in Sources */, 189DD73D26E21C3F00AB55B1 /* YYUtility+Device.m in Sources */, - 187EEEDC26E89B32002833B2 /* BaseMatrix.m in Sources */, - E878B85E283640A500E22DCF /* SeparationsUnReadMatrix.m in Sources */, + 187EEEDC26E89B32002833B2 /* BaseModel.m in Sources */, + E878B85E283640A500E22DCF /* MonentsUnReadModel.m in Sources */, E81366FC26F0D2980076364C /* UIButton+EnlargeTouchArea.m in Sources */, - E85E7BA42A4EC99300B6D00A /* YUMIManeGiveDiamondElement.m in Sources */, - E824546426F5FF1C00BE8163 /* YUMIManeReassociationIntersectCiphercodeExternalizer.m in Sources */, - E818E34F286EDF72005EDF68 /* YUMISeparationsAnnounceAssembletionRegardElement.m in Sources */, - E877A7EE278428FB00EFACED /* MiecreoscoopeEngagementProgressRegard.m in Sources */, - E80E09A62A40B5DD00CD2BE7 /* Api+CandyTree.m in Sources */, - E80E099D2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberFurthaerRegard.m in Sources */, - E8E0DAE9285C2E8C00566A2F /* DiscoveryStrangeBewelcometoCommunicationMatrix.m in Sources */, - E84A2E8A2A527DF800D6AF8A /* YUMIExchangeDiamondsVC.m in Sources */, - E87A27032758BC81002DDC7A /* YUMIChamberHuntforAccommodatedRegardGovernancer.m in Sources */, - E84A2E8B2A527DF800D6AF8A /* YUMIRevenueReflectionGoldSpecificsVC.m in Sources */, + E85E7BA42A4EC99300B6D00A /* XPMineGiveDiamondCell.m in Sources */, + E824546426F5FF1C00BE8163 /* XPMineResetPayPasswordPresenter.m in Sources */, + E818E34F286EDF72005EDF68 /* XPMonentsPublishCollectionViewCell.m in Sources */, + E877A7EE278428FB00EFACED /* MicroDatingProgressView.m in Sources */, + E8E0DAE9285C2E8C00566A2F /* FindNewGreetMessageModel.m in Sources */, + E84A2E8A2A527DF800D6AF8A /* XPExchangeDiamondsVC.m in Sources */, + E87A27032758BC81002DDC7A /* XPRoomSearchContainerViewController.m in Sources */, + E84A2E8B2A527DF800D6AF8A /* XPIncomeRecordGoldDetailsVC.m in Sources */, E884C3722743AEDE00E1EBED /* CustomAttachmentDecoder.m in Sources */, - 18EE3FEE2750CE6D00A452BF /* NEMCCommunicationUtils.m in Sources */, + 18EE3FEE2750CE6D00A452BF /* NIMMessageUtils.m in Sources */, 1427219529A75F6F00C7C423 /* DDNumber.m in Sources */, - E8DEC9AC2764A6CD0078CB70 /* YUMIChamberFurthaerParrotAssembletionRegardElement.m in Sources */, - E81DCCD0282B63FD0039E5C5 /* YUMISeparationsEncourageRegardGovernancer.m in Sources */, - 9B7D804A2753783D003DAC0C /* InterlocutionRegardGovernancer.m in Sources */, - 237D64D72A57FDAA000442C6 /* XPTreasureFairySendRecordView.m in Sources */, - E85E7BA92A4EC99300B6D00A /* YUMIManeConfirmGiveDiamondRegard.m in Sources */, - E85E7BA72A4EC99300B6D00A /* YUMIManeGiveDiamondCiphercodeRegard.m in Sources */, + E8DEC9AC2764A6CD0078CB70 /* XPRoomMoreMenuCollectionViewCell.m in Sources */, + E81DCCD0282B63FD0039E5C5 /* XPMonentsRecommendViewController.m in Sources */, + 9B7D804A2753783D003DAC0C /* SessionViewController.m in Sources */, + E85E7BA92A4EC99300B6D00A /* XPMineConfirmGiveDiamondView.m in Sources */, + E85E7BA72A4EC99300B6D00A /* XPMineGiveDiamondPasswordView.m in Sources */, + 2331C1742A5EB71000E1D940 /* XPNobleCenterResidueView.m in Sources */, E80E2377299A47F60013FD40 /* AESUtils.m in Sources */, - E81060E229876E9100B772F0 /* CommunicationIndicateMatrix.m in Sources */, - E839533F276A0CDB00CF2F24 /* YUMIManeNameplateTabulationRegardElement.m in Sources */, - E80E09AE2A41336500CD2BE7 /* YUMITissueRegardNevRegard.m in Sources */, - 237D64CC2A57FDAA000442C6 /* XPTreasureFairyBallContentView.m in Sources */, - E8B846BC26FD7C1200A777FE /* UpwardsloadIndicate.m in Sources */, - E85E7B2D2A4EB0D300B6D00A /* YUMIUnionIntelligencerRegard.m in Sources */, - E85E7B542A4EB4AD00B6D00A /* YUMIManeUnionStatementMatrix.m in Sources */, - 237D64B02A57FDAA000442C6 /* TreasureFailyKeyInfoModel.m in Sources */, - 9BCE6144277D657600CC0358 /* YUMIReleaseWirelessTabulationRegardElement.m in Sources */, - 186A534D26FC6ED900D67B2C /* MKJActionSheetRegard.m in Sources */, - E81060E529876FF300B772F0 /* CommunicationVocalmusicMatrix.m in Sources */, - 237D63752A57E7B1000442C6 /* PINoblemanCenterView.m in Sources */, - E83DB481274649FB00D8CBD1 /* YUMIPresentOriflammeConsumerAbstractMatrix.m in Sources */, - 9B3A1DF4280571000058E2DD /* XCombatellegCombatCallforRegard.m in Sources */, - 9B2489BC27C4C056006CFB85 /* YUMIManeVacationerDispossessTabulationRegardElement.m in Sources */, - 1427212F29A7599500C7C423 /* YUMISeparationsConsiderationExternalizer.m in Sources */, - E878893F273A54F500BF1D57 /* YUMIPresentExternalizer.m in Sources */, - 1464C5F929A4D00000AF7C94 /* YUMIIAPReindictIntelligencerRegard.m in Sources */, + E81060E229876E9100B772F0 /* MessageImageModel.m in Sources */, + E839533F276A0CDB00CF2F24 /* XPMineNameplateTableViewCell.m in Sources */, + E80E09AE2A41336500CD2BE7 /* XPWebViewNavView.m in Sources */, + E8B846BC26FD7C1200A777FE /* UploadImage.m in Sources */, + E85E7B2D2A4EB0D300B6D00A /* XPGuildHeaderView.m in Sources */, + E85E7B542A4EB4AD00B6D00A /* XPMineGuildListModel.m in Sources */, + 9BCE6144277D657600CC0358 /* XPReleaseRadioTableViewCell.m in Sources */, + 186A534D26FC6ED900D67B2C /* TTActionSheetView.m in Sources */, + E81060E529876FF300B772F0 /* MessageAudioModel.m in Sources */, + E83DB481274649FB00D8CBD1 /* XPGiftBannerUserInfoModel.m in Sources */, + 9B3A1DF4280571000058E2DD /* XPAnchorPKInviteView.m in Sources */, + 2331C1BD2A60F69E00E1D940 /* UILabel+Utils.m in Sources */, + 9B2489BC27C4C056006CFB85 /* XPMineVisitorEmptyTableViewCell.m in Sources */, + 1427212F29A7599500C7C423 /* XPMonentsAttentionPresenter.m in Sources */, + E878893F273A54F500BF1D57 /* XPGiftPresenter.m in Sources */, + 1464C5F929A4D00000AF7C94 /* XPIAPRechargeHeaderView.m in Sources */, E83645A82A40AF5400E0DBE4 /* NSBundle+Localizable.m in Sources */, - E8778AFB2989034200CF139B /* YUMIInterlocutionSpeakHalloDispossessTabulationRegardElement.m in Sources */, - E8AEAEED27141AE20017FCE0 /* YUMIChamberBackAccommodatedRegard.m in Sources */, - E88B5CC126FB407B00DA9178 /* YUMIManeConsumerAbstractRegardGovernancer.m in Sources */, - E81E09CF290F750800A1F410 /* AdvertiseMatrix.m in Sources */, - E852D74428633A08001465ED /* SeparationsJudgementMatrix.m in Sources */, - E8C1CD6D27D8938C00376F83 /* YUMIChamberAcceptChampionAssembletionRegardElement.m in Sources */, - E8C1CD7627D8AE3D00376F83 /* YUMIChamberAcceptExternalizer.m in Sources */, - E85E7B362A4EB0D300B6D00A /* YUMICollectiveChamberAssembletionRegardElement.m in Sources */, - 18F4043A275E20D900A6C548 /* TRTCRealtimackConnector.m in Sources */, - E8899C7F27853B6A007944BE /* EngagementMiecreoscoopeRegard.m in Sources */, - E87DF4EC2A42CB60009C1185 /* YUMIHuntforStatementTabulationRegardElement.m in Sources */, - E85E7B052A4EB0D200B6D00A /* YUMICollectiveExternalizer.m in Sources */, - E85E7BA52A4EC99300B6D00A /* YUMIManeChooseGiveDiamondRegard.m in Sources */, - E8F63CB1298B553500B338BA /* InterlocutionSpeakHalloPrototypeMatrix.m in Sources */, - 9BE01AD428927E9C00B50299 /* YUMIPretendUpwardsProcurementStatementRegardGovernancer.m in Sources */, - 9B41D36E282649230048C588 /* YUMIWeekSatelliteRateConsumerMatrix.m in Sources */, - E824545926F5E65900BE8163 /* YUMIManeValidationIdentityRegard.m in Sources */, - E841ED61280FB0BD00904808 /* SatisfactionPrototypeAscensionMatrix.m in Sources */, + E8778AFB2989034200CF139B /* XPSessionSayHelloEmptyTableViewCell.m in Sources */, + E8AEAEED27141AE20017FCE0 /* XPRoomBackContainerView.m in Sources */, + E88B5CC126FB407B00DA9178 /* XPMineUserInfoViewController.m in Sources */, + 2331C1AC2A60F32D00E1D940 /* CandyTreeRecordModel.m in Sources */, + E81E09CF290F750800A1F410 /* AdvertiseModel.m in Sources */, + E852D74428633A08001465ED /* MonentsCommentModel.m in Sources */, + E8C1CD6D27D8938C00376F83 /* XPRoomFaceTitleCollectionViewCell.m in Sources */, + E8C1CD7627D8AE3D00376F83 /* XPRoomFacePresenter.m in Sources */, + E85E7B362A4EB0D300B6D00A /* XPClanRoomCollectionViewCell.m in Sources */, + 18F4043A275E20D900A6C548 /* TRTCRtcImpl.m in Sources */, + E8899C7F27853B6A007944BE /* DatingMicroView.m in Sources */, + E87DF4EC2A42CB60009C1185 /* XPSearchListTableViewCell.m in Sources */, + E85E7B052A4EB0D200B6D00A /* XPClanPresenter.m in Sources */, + E85E7BA52A4EC99300B6D00A /* XPMineChooseGiveDiamondView.m in Sources */, + E8F63CB1298B553500B338BA /* SessionSayHelloLevelModel.m in Sources */, + 9BE01AD428927E9C00B50299 /* XPDressUpShopListViewController.m in Sources */, + 9B41D36E282649230048C588 /* XPWeekStarRankUserModel.m in Sources */, + E824545926F5E65900BE8163 /* XPMineVerifIdentityView.m in Sources */, + E841ED61280FB0BD00904808 /* ContentLevelUpgradeModel.m in Sources */, 189DD74026E21C3F00AB55B1 /* YYUtility+App.m in Sources */, - E86A16CE28574844004228B8 /* YUMIChamberLicneseHourRateRegard.m in Sources */, - 23D0B01F2A5BFF2D00C9B18B /* PIBaseAnimationViewModel.m in Sources */, - E85E7B182A4EB0D200B6D00A /* CollectiveSpecificAbstractMatrix.m in Sources */, - E85E7B272A4EB0D300B6D00A /* YUMIUnionSensationalManagementParrotRegard.m in Sources */, + E86A16CE28574844004228B8 /* XPRoomLicneseHourRankView.m in Sources */, + E85E7B182A4EB0D200B6D00A /* ClanDetailInfoModel.m in Sources */, + E85E7B272A4EB0D300B6D00A /* XPGuildSuperAdminMenuView.m in Sources */, 189DD74526E21CCC00AB55B1 /* YYReachability.m in Sources */, - E82109AD26F1C8A000FC3319 /* ComputationDownFacilitater.m in Sources */, - E878B8582835F0D300E22DCF /* SeparationsCoactiveMatrix.m in Sources */, - E87DF4E42A42CAD2009C1185 /* YUMIResidenceHuntforNevRegard.m in Sources */, - 9BD2ECCE288F829600F5CD9A /* YUMIManeTerminalImpressionRegardGovernancer.m in Sources */, - 9B4E920028E57A620033419E /* YUMIPresentIntelligenceGenreRegard.m in Sources */, - E86A16BF2856D4D5004228B8 /* YUMIInterlocutionDiscoveryStrangeBewelcometoStatementRegard.m in Sources */, - E85E7B312A4EB0D300B6D00A /* YUMIStrangeUnionRevenueIntelligencerRegard.m in Sources */, + 2331C16A2A5EB71000E1D940 /* XPNobleCenterViewController.m in Sources */, + E82109AD26F1C8A000FC3319 /* CountDownHelper.m in Sources */, + E878B8582835F0D300E22DCF /* MonentsInteractiveModel.m in Sources */, + E87DF4E42A42CAD2009C1185 /* XPHomeSearchNavView.m in Sources */, + 9BD2ECCE288F829600F5CD9A /* XPMineFootPrintViewController.m in Sources */, + 9B4E920028E57A620033419E /* XPGiftHeadTypeView.m in Sources */, + E86A16BF2856D4D5004228B8 /* XPSessionFindNewGreetListView.m in Sources */, + E85E7B312A4EB0D300B6D00A /* XPNewGuildIncomeHeaderView.m in Sources */, 9B0997A327F19DE500EB8F14 /* QGHWDShaders.metal in Sources */, - E8778AF02988EF0600CF139B /* YUMIInterlocutionSpeakHalloRegardGovernancer.m in Sources */, - 187EEEE126E89BFB002833B2 /* AccountMatrix.m in Sources */, - E87C54C22823CD6F0051AA11 /* YUMIManeReassociationSurmountPwordRegardGovernancer.m in Sources */, + E8778AF02988EF0600CF139B /* XPSessionSayHelloViewController.m in Sources */, + 187EEEE126E89BFB002833B2 /* AccountModel.m in Sources */, + E87C54C22823CD6F0051AA11 /* XPMineResetLoginPwdViewController.m in Sources */, E8098CA7282E00920090B9F0 /* Api+Monents.m in Sources */, - E896EFA92771AEEC00AD2CC1 /* YUMIManeConsiderationTabulationRegardElement.m in Sources */, - E8F1559328129EBA00EE8C06 /* SatisfactionSecretaryMatrix.m in Sources */, - E85E7B342A4EB0D300B6D00A /* YUMIManeMainUnionStatementVC.m in Sources */, - 9BBC02912786FC570007C24B /* YUMIManeMagnificentSolitaireTabulationRegardElement.m in Sources */, - E8751E7428A665BC0056EF44 /* ChamberMarchingAbstractMatrix.m in Sources */, - E80EC81328ACD84000D133C5 /* MHTKeyboardExecutive.m in Sources */, - E87DF4B32A429C6E009C1185 /* ThresholdChargeChamberWindowMatrix.m in Sources */, - 237D64CB2A57FDAA000442C6 /* XPTreasureFairyMessageSendView.m in Sources */, - E8AC722126F47E23007D6E91 /* YUMIManeAboutUsRegardGovernancer.m in Sources */, - E8E21A9E28B4DFE8008F7C9D /* YUMIMarchingBuyFuelRegard.m in Sources */, - 18F403CB2758C66800A6C548 /* CommunicationSatisfactionEssay.m in Sources */, - E87DF4E72A42CB00009C1185 /* YUMIResidenceExternalizer.m in Sources */, - E8232600274E48EA003A3332 /* YUMIConsumerSolitaireProvisionAssembletionRegardElement.m in Sources */, - E88B5CC526FB42B000DA9178 /* YUMIManeConsumerAbstractIntelligencerRegard.m in Sources */, - E8EEB8FB26FC2874007C6EBA /* YUMIManeConsumerAbstractTabulationRegardElement.m in Sources */, - E8AC721626F46B06007D6E91 /* YUMIManeInstanllingTabulationRegardElement.m in Sources */, - 18EE3FDF2750C1F700A452BF /* InterlocutionStatementElement.m in Sources */, - 237D64CA2A57FDAA000442C6 /* XPTreasureFairyDrawSubView.m in Sources */, - 9BD798B72926362F003E03E6 /* YUMIInterlocutionStatementIntelligenceProvision.m in Sources */, - E80487652717DDD9008595F2 /* YUMIChamberParrotProvision.m in Sources */, - E895018C282D0701007E459A /* YUMISepartionMotifRegard.m in Sources */, - E8A353A028FE84670014A784 /* YUMIDesirePresentAbstractRegard.m in Sources */, - E89BD7D4277D471100E31B19 /* YUMIChamberOnlineTabulationRegardElement.m in Sources */, - 1427219329A75F6F00C7C423 /* MultipartCommunicationIntelligencer.m in Sources */, - 237D64E02A57FDAA000442C6 /* XPTreasureFairyTrialsRecordView.m in Sources */, - E8412F9627795E34006E1101 /* YUMIChamberCallforFanaticsRegard.m in Sources */, - E801274327E323E500BAC3F2 /* YUMIChamberCombatExternalizer.m in Sources */, + E896EFA92771AEEC00AD2CC1 /* XPMineAttentionTableViewCell.m in Sources */, + E8F1559328129EBA00EE8C06 /* ContentSecretaryModel.m in Sources */, + E85E7B342A4EB0D300B6D00A /* XPMineMainGuildListVC.m in Sources */, + 9BBC02912786FC570007C24B /* XPMineNobleCardTableViewCell.m in Sources */, + E8751E7428A665BC0056EF44 /* RoomSailingInfoModel.m in Sources */, + E80EC81328ACD84000D133C5 /* QKeyboardManager.m in Sources */, + E87DF4B32A429C6E009C1185 /* FirstChargeRoomWindowModel.m in Sources */, + E8AC722126F47E23007D6E91 /* XPMineAboutUsViewController.m in Sources */, + E8E21A9E28B4DFE8008F7C9D /* XPSailingBuyFuelView.m in Sources */, + 18F403CB2758C66800A6C548 /* MessageContentText.m in Sources */, + E87DF4E72A42CB00009C1185 /* XPHomePresenter.m in Sources */, + 2331C0DC2A5E9E9000E1D940 /* PIFullScreenBannerAnimation.m in Sources */, + E8232600274E48EA003A3332 /* XPUserCardItemCollectionViewCell.m in Sources */, + E88B5CC526FB42B000DA9178 /* XPMineUserInfoHeaderView.m in Sources */, + E8EEB8FB26FC2874007C6EBA /* XPMineUserInfoTableViewCell.m in Sources */, + E8AC721626F46B06007D6E91 /* XPMineSettingTableViewCell.m in Sources */, + 18EE3FDF2750C1F700A452BF /* SessionListCell.m in Sources */, + 9BD798B72926362F003E03E6 /* XPSessionListHeadItem.m in Sources */, + E80487652717DDD9008595F2 /* XPRoomMenuItem.m in Sources */, + E895018C282D0701007E459A /* XPMoentsTopicView.m in Sources */, + E8A353A028FE84670014A784 /* XPWishGiftInfoView.m in Sources */, + E89BD7D4277D471100E31B19 /* XPRoomOnlineTableViewCell.m in Sources */, + 1427219329A75F6F00C7C423 /* MultipartMessageHeader.m in Sources */, + E8412F9627795E34006E1101 /* XPRoomInviteFansView.m in Sources */, + E801274327E323E500BAC3F2 /* XPRoomPKPresenter.m in Sources */, 189DD75026E21D9000AB55B1 /* GCDHelper.m in Sources */, - E82D5C76276AEB5100858D6D /* NameplateMatrix.m in Sources */, - 142721AF29A75F6F00C7C423 /* SJXCSMIPFacilitater.m in Sources */, - E87E62742A3F5907002F68C9 /* YUMIResidenceOriflammeTabulationRegardElement.m in Sources */, - E88C72A3282917590047FB2B /* YUMIChamberManualReputationInstanllingRegard.m in Sources */, - E81AF32827F1EE69003B9E43 /* YUMIChamberCombatFasciaboardConsumerRegard.m in Sources */, + E82D5C76276AEB5100858D6D /* NameplateModel.m in Sources */, + 142721AF29A75F6F00C7C423 /* SJXCSMIPHelper.m in Sources */, + E87E62742A3F5907002F68C9 /* XPHomeBannerTableViewCell.m in Sources */, + E88C72A3282917590047FB2B /* XPRoomMusicVoiceSettingView.m in Sources */, + E81AF32827F1EE69003B9E43 /* XPRoomPKPanelUserView.m in Sources */, E84150BF27747BD300A7F548 /* Api+FirstRecharge.m in Sources */, - E84B0E422727EE0A008818C6 /* YUMIChamberCommunicationIntelligencerRegard.m in Sources */, - E80E099F2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberDispossessableRegardElement.m in Sources */, - E852D73B286317F0001465ED /* YUMISeparationsSpecificRegardGovernancer.m in Sources */, - E85E7B392A4EB0D300B6D00A /* YUMIUnionChooseExecutiveChamberTabulationRegardElement.m in Sources */, - 237D64B62A57FDAA000442C6 /* TreasureFairyConvertRecordModel.m in Sources */, - E81060D9298761A300B772F0 /* CommunicationBaseMatrix.m in Sources */, - E890BC10273D23F00007C46B /* PresentAbstractMatrix.m in Sources */, - E8A30BEB28534A96003B4873 /* YUMIInterlocutionDiscoveryStrangeFiltrateRegard.m in Sources */, - E84BF7E0277C869A00EF8877 /* YUMIChamberOnLineRegardGovernancer.m in Sources */, - 186A534826FC6ED900D67B2C /* MKJPrecautiousButtonDisposition.m in Sources */, - E88749B6282B8FC600C3C7DB /* SeparationsAbstractMatrix.m in Sources */, + E84B0E422727EE0A008818C6 /* XPRoomMessageHeaderView.m in Sources */, + 2331C1812A5ECD3800E1D940 /* XPNobleCenterPayCell.m in Sources */, + E852D73B286317F0001465ED /* XPMonentsDetailViewController.m in Sources */, + 2331C1692A5EB71000E1D940 /* XPNobleSettingViewController.m in Sources */, + E85E7B392A4EB0D300B6D00A /* XPGuildChooseManagerRoomTableViewCell.m in Sources */, + E81060D9298761A300B772F0 /* MessageBaseModel.m in Sources */, + E890BC10273D23F00007C46B /* GiftInfoModel.m in Sources */, + E8A30BEB28534A96003B4873 /* XPSessionFindNewFiltrateView.m in Sources */, + E84BF7E0277C869A00EF8877 /* XPRoomOnLineViewController.m in Sources */, + 186A534826FC6ED900D67B2C /* TTAlertButtonConfig.m in Sources */, + E88749B6282B8FC600C3C7DB /* MonentsInfoModel.m in Sources */, E89D60BA271D643A001F8895 /* Api+Room.m in Sources */, - E84843B227F5A0740050D365 /* YUMIRomCombatConsequentChampionDesignation.m in Sources */, - E80EC80F28ACD84000D133C5 /* MHTSpirit.m in Sources */, - 237D64DF2A57FDAA000442C6 /* XPTreasureFairyShopingView.m in Sources */, - E877A7EB2783E24700EFACED /* EngagementPhaseRegard.m in Sources */, - 9BD2ECDA288F867000F5CD9A /* YUMIManeTerminalImpressionTabulationRegardElement.m in Sources */, - E8395339276A0CC100CF2F24 /* YUMIManeIntelligencewearTabulationRegardElement.m in Sources */, - E875FA8727D619820086ED04 /* ClientAtomicMatrix.m in Sources */, - 9BFB10222897D68400B3985E /* YUMITabKellegSolitaireMatrix.m in Sources */, - E8B846DC26FDE24300A777FE /* ReindictStatementMatrix.m in Sources */, + E84843B227F5A0740050D365 /* XPRomPKResultTitleLabel.m in Sources */, + E80EC80F28ACD84000D133C5 /* QEmotion.m in Sources */, + E877A7EB2783E24700EFACED /* DatingStageView.m in Sources */, + 9BD2ECDA288F867000F5CD9A /* XPMineFootPrintTableViewCell.m in Sources */, + E8395339276A0CC100CF2F24 /* XPMineHeadwearTableViewCell.m in Sources */, + E875FA8727D619820086ED04 /* ClientDataModel.m in Sources */, + 9BFB10222897D68400B3985E /* XPTabAnchorCardModel.m in Sources */, + E8B846DC26FDE24300A777FE /* RechargeListModel.m in Sources */, 9B1B7292280010E8003FACE9 /* Api+FansTeam.m in Sources */, - 237D64C42A57FDAA000442C6 /* XPTreasureFairyFriendView.m in Sources */, - E8A3539728FE7C250014A784 /* YUMIDesirePresentExternalizer.m in Sources */, - E85E7B142A4EB0D200B6D00A /* UnionAuthMatrix.m in Sources */, - 9BE01ADE2892A66D00B50299 /* PretendUpwardsProcurementMatrix.m in Sources */, - E884C36C2743951B00E1EBED /* PresentAchieveAbstractMatrix.m in Sources */, - E85E7BB62A4ED59900B6D00A /* YUMIRevenueReflectionGoldSpecificsElement.m in Sources */, - 9B7B606227BB96E40070BB72 /* YUMIChamberKellegAbstractSolitaireRegard.m in Sources */, - 237D64BD2A57FDAA000442C6 /* XPTreasureFairyPrizePoolCell.m in Sources */, - E87DF4FE2A42CD7E009C1185 /* YUMIChamberHuntforEncourageIntelligenceRegard.m in Sources */, - E85E7B442A4EB0D300B6D00A /* YUMIManeExchangeAuthorityElement.m in Sources */, - E80B0734280D740600A79F63 /* CommunicationSatisfactionUnionRegard.m in Sources */, - E8395334276A03C300CF2F24 /* YUMIManePretendUpwardsExternalizer.m in Sources */, - E85E7B212A4EB0D300B6D00A /* YUMIStrangeManeUnionRevenueReflectionRegardGovernancer.m in Sources */, + E8A3539728FE7C250014A784 /* XPWishGiftPresenter.m in Sources */, + E85E7B142A4EB0D200B6D00A /* GuildAuthModel.m in Sources */, + 9BE01ADE2892A66D00B50299 /* DressUpShopModel.m in Sources */, + E884C36C2743951B00E1EBED /* GiftReceiveInfoModel.m in Sources */, + E85E7BB62A4ED59900B6D00A /* XPIncomeRecordGoldDetailsCell.m in Sources */, + 9B7B606227BB96E40070BB72 /* XPRoomAnchorInfoCardView.m in Sources */, + E87DF4FE2A42CD7E009C1185 /* XPRoomSearchRecommendHeadView.m in Sources */, + E85E7B442A4EB0D300B6D00A /* XPMineExchangeAuthorityCell.m in Sources */, + E80B0734280D740600A79F63 /* MessageContentGuildView.m in Sources */, + E8395334276A03C300CF2F24 /* XPMineDressUpPresenter.m in Sources */, + E85E7B212A4EB0D300B6D00A /* XPNewMineGuildIncomeRecordViewController.m in Sources */, 189DD75926E6003C00AB55B1 /* Api.m in Sources */, - 237D64C92A57FDAA000442C6 /* XPTreasureFairyPoolRecordView.m in Sources */, - E87C0A9D27D9986700CB2241 /* YUMIChamberAcceptAssembletionFlowProgramming.m in Sources */, - 1427212C29A757EC00C7C423 /* SeparationsStatementAbstractMatrix.m in Sources */, - 9BA812D628BF52E100783EA7 /* YUMIChamberDischargeDeficitSheatheRegardGovernancer.m in Sources */, - E86E79D328A4E94E006DAF48 /* InterlocutionVentureRegard.m in Sources */, - E85E7B1F2A4EB0D300B6D00A /* YUMIManeUnionRevenueStatsticsRegardGovernancer.m in Sources */, - E85E7B412A4EB0D300B6D00A /* YUMIManeUnionDispossessTabulationRegardElement.m in Sources */, - E8133916273E532D00708B66 /* YUMIPresentProvisionAssembletionRegardElement.m in Sources */, - E833ED0D274FAD1C00A2463B /* XCombatickConsumerMatrix.m in Sources */, - 9B42868E28C1AE2D009034D2 /* YUMIAchieveDeficitSheatheRegard.m in Sources */, - E8788934273A53D700BF1D57 /* YUMIDischargePresentRegard.m in Sources */, - E896EF9C2771AE6B00AD2CC1 /* YUMIManeFanaticsRegardGovernancer.m in Sources */, - E80E099C2A40B5DD00CD2BE7 /* YUMIConfectioneryTimberRateRegard.m in Sources */, - E84B0E462727EF9D008818C6 /* YUMIChamberCommunicationAnatomiser.m in Sources */, - E838D9A0275E1BF60079E0B5 /* YUMIChamberBrightnessRegard.m in Sources */, - 9B0086C627BA392B0032BD2B /* KellegPhaseRegard.m in Sources */, - 9BCD02C72796C02800F396AA /* MiecreoscoopeMagnificentWaveRegard.m in Sources */, - E874B88827215D39003954B9 /* MiecreoscoopeStateMatrix.m in Sources */, - E877A7F427842EF800EFACED /* YUMIChamberEngagementVipUpwardsLoudspeakerRegard.m in Sources */, - E896EF9F2771AE7B00AD2CC1 /* YUMIManeConsiderationRegardGovernancer.m in Sources */, - E89D60C1271D64B9001F8895 /* ChamberAbstractMatrix.m in Sources */, - E89DA66727006443008483C1 /* ReindictStorage.m in Sources */, + 2331C1652A5EB71000E1D940 /* NobleRechargeModel.m in Sources */, + E87C0A9D27D9986700CB2241 /* XPRoomFaceCollectionFlowLayout.m in Sources */, + 1427212C29A757EC00C7C423 /* MonentsListInfoModel.m in Sources */, + 9BA812D628BF52E100783EA7 /* XPRoomSendRedPacketViewController.m in Sources */, + E86E79D328A4E94E006DAF48 /* SessionRiskView.m in Sources */, + E85E7B1F2A4EB0D300B6D00A /* XPMineGuildIncomeStatisViewController.m in Sources */, + E85E7B412A4EB0D300B6D00A /* XPMineGuildEmptyTableViewCell.m in Sources */, + E8133916273E532D00708B66 /* XPGiftItemCollectionViewCell.m in Sources */, + 2331C1782A5EB71000E1D940 /* Api+NobleCenter.m in Sources */, + E833ED0D274FAD1C00A2463B /* XPKickUserModel.m in Sources */, + 9B42868E28C1AE2D009034D2 /* XPReceiveRedPacketView.m in Sources */, + E8788934273A53D700BF1D57 /* XPSendGiftView.m in Sources */, + E896EF9C2771AE6B00AD2CC1 /* XPMineFansViewController.m in Sources */, + E84B0E462727EF9D008818C6 /* XPRoomMessageParser.m in Sources */, + E838D9A0275E1BF60079E0B5 /* XPRoomAnimationView.m in Sources */, + 9B0086C627BA392B0032BD2B /* AnchorStageView.m in Sources */, + 9BCD02C72796C02800F396AA /* MicroNobleWaveView.m in Sources */, + E874B88827215D39003954B9 /* MicroStateModel.m in Sources */, + E877A7F427842EF800EFACED /* XPRoomDatingVipUpMicView.m in Sources */, + E896EF9F2771AE7B00AD2CC1 /* XPMineAttentionViewController.m in Sources */, + E89D60C1271D64B9001F8895 /* RoomInfoModel.m in Sources */, + E89DA66727006443008483C1 /* RechargeStorage.m in Sources */, 189DD53F26DE255600AB55B1 /* main.m in Sources */, - E85E7BBC2A4EE70B00B6D00A /* YUMIManeTheUnionElement.m in Sources */, - E885D5392977D10E004DC088 /* InterlocutionInstanllingConsumerRegard.m in Sources */, - 9BE01AD128927AC000B50299 /* YUMIPretendUpwardsProcurementRegardGovernancer.m in Sources */, - E8D34D6728084E88009C4835 /* YUMIManeConsumerAbstractPresentRamparatAssembletionRegardElement.m in Sources */, - E80E09982A40B5DD00CD2BE7 /* ConfectioneryTimberConsequentMatrix.m in Sources */, - E8A30BE328534A28003B4873 /* YUMIInterlocutionDiscoveryStrangeRegardGovernancer.m in Sources */, - 140A7F52299CC69000841594 /* YUMITabObstacle.m in Sources */, - E80E09A42A40B5DD00CD2BE7 /* YUMIConfectioneryRateAccommodatedRegard.m in Sources */, - E85E7B0C2A4EB0D200B6D00A /* YUMIUnionMangerStatementExternalizer.m in Sources */, - 14DCAD0B299B5D3A00A7DD31 /* YUMISurmountIntrojectionRegard.m in Sources */, - 237D64C82A57FDAA000442C6 /* XPTreasureFairyStoreResultView.m in Sources */, - E839806B290288660084BFC8 /* YUMICommunicationAbstractMatrix.m in Sources */, - E81C1B2C27706E5C0020D1E4 /* ScheduleLoudspeakerMatrix.m in Sources */, - 9B1B729528002099003FACE9 /* YUMIManeFanaticsSquadRegardGovernancer.m in Sources */, - 9BE2FA90288010D300EF3D83 /* KellegChamberSrollTipRegard.m in Sources */, - E85E7B252A4EB0D300B6D00A /* YUMIManeUnionChooseExecutiveRegardGovernancer.m in Sources */, - 237D64AE2A57FDAA000442C6 /* XPTreasureFailyPresenter.m in Sources */, - E87E91522796A15500A7B3F2 /* MiecreoscoopeExtMatrix.m in Sources */, - E8788948273A55D000BF1D57 /* YUMIPresentObstacleRegard.m in Sources */, - E89DCF5728FFF076001647EC /* YUMIDesirePresentDispossessTabulationRegardElement.m in Sources */, - 14A6034929A3567200D2A6A5 /* YUMISimpleManeRegardGovernancer.m in Sources */, - E8D4DE442940462C00EC788D /* YUMIPresentTwelveSatellitePingbackRegard.m in Sources */, - E81060DF29876D3A00B772F0 /* CommunicationIntratemporalMatrix.m in Sources */, - E81A65422835120200F55894 /* YUMISeparationsCoactiveExternalizer.m in Sources */, - E80EC80C28ACD84000D133C5 /* UITextView+MHTSpirit.m in Sources */, - E8664EE627E482EF000171BA /* ChamberCombatSquadMatrix.m in Sources */, - 9BAA5FF0277A23F4007453F3 /* YUMIPermissionsRegardGovernancer.m in Sources */, - E85E7BA02A4EC99300B6D00A /* YUMIManeGiveDiamondSpecificsMatrix.m in Sources */, - E89DCF5A28FFF1AD001647EC /* YUMIDesirePresentDivisionRegard.m in Sources */, - E81A654C28351D9900F55894 /* YUMISeparationsMotifAssembletionRegardElement.m in Sources */, - 237D64C32A57FDAA000442C6 /* XPTreasureFairyTrialsRecordCell.m in Sources */, - E85E7B9F2A4EC99300B6D00A /* YUMIManeGiveDiamondExternalizer.m in Sources */, + E85E7BBC2A4EE70B00B6D00A /* XPMineTheGuildCell.m in Sources */, + E885D5392977D10E004DC088 /* SessionSettingUserView.m in Sources */, + 2331C16C2A5EB71000E1D940 /* XPNobleCenterEmptyView.m in Sources */, + 9BE01AD128927AC000B50299 /* XPDressUpShopViewController.m in Sources */, + E8D34D6728084E88009C4835 /* XPMineUserInfoGiftWallCollectionViewCell.m in Sources */, + E8A30BE328534A28003B4873 /* XPSessionFindNewViewController.m in Sources */, + 140A7F52299CC69000841594 /* XPTabBar.m in Sources */, + E85E7B0C2A4EB0D200B6D00A /* XPGuildMangerListPresenter.m in Sources */, + 14DCAD0B299B5D3A00A7DD31 /* XPLoginInputView.m in Sources */, + E839806B290288660084BFC8 /* XPMessageInfoModel.m in Sources */, + E81C1B2C27706E5C0020D1E4 /* ArrangeMicModel.m in Sources */, + 9B1B729528002099003FACE9 /* XPMineFansTeamViewController.m in Sources */, + 9BE2FA90288010D300EF3D83 /* AnchorRoomSrollTipView.m in Sources */, + E85E7B252A4EB0D300B6D00A /* XPMineGuildChooseManagerViewController.m in Sources */, + E87E91522796A15500A7B3F2 /* MicroExtModel.m in Sources */, + E8788948273A55D000BF1D57 /* XPGiftBarView.m in Sources */, + E89DCF5728FFF076001647EC /* XPWishGiftEmptyTableViewCell.m in Sources */, + 14A6034929A3567200D2A6A5 /* XPSimpleMineViewController.m in Sources */, + E8D4DE442940462C00EC788D /* XPGiftTwelveStarBroadcastView.m in Sources */, + E81060DF29876D3A00B772F0 /* MessageTimeModel.m in Sources */, + E81A65422835120200F55894 /* XPMonentsInteractivePresenter.m in Sources */, + E80EC80C28ACD84000D133C5 /* UITextView+QEmotion.m in Sources */, + E8664EE627E482EF000171BA /* RoomPKTeamModel.m in Sources */, + 9BAA5FF0277A23F4007453F3 /* XPPermissionsViewController.m in Sources */, + E85E7BA02A4EC99300B6D00A /* XPMineGiveDiamondDetailsModel.m in Sources */, + E89DCF5A28FFF1AD001647EC /* XPWishGiftSectionView.m in Sources */, + E81A654C28351D9900F55894 /* XPMonentsTopicCollectionViewCell.m in Sources */, + E85E7B9F2A4EC99300B6D00A /* XPMineGiveDiamondPresenter.m in Sources */, 14D8767C29A7445C00E1DD7F /* NSObject+AutoCoding.m in Sources */, - E8412FA92779C2ED006E1101 /* YUMIChamberInstanllingProvisionMatrix.m in Sources */, - 189DD58F26DF97E700AB55B1 /* SurmountExternalizer.m in Sources */, - E88863C9278EBA43004BCFAB /* YUMIThroughoutChamberCombatForceEndConsequentRegard.m in Sources */, - E8F63CB7298B566D00B338BA /* YUMIInterlocutionSpeakHalloExternalizer.m in Sources */, - E88C72952828F1AD0047FB2B /* YUMIChamberManualBibliothecaRegardGovernancer.m in Sources */, - E85E7BA62A4EC99300B6D00A /* YUMIManeGiveDiamondHuntforRegard.m in Sources */, - 1427218829A75F6F00C7C423 /* HyperTextErrorRespond.m in Sources */, - E85E7B032A4EB0D200B6D00A /* YUMIUnionRevenueExternalizer.m in Sources */, - E8A30BF928534E48003B4873 /* YUMIInterlocutionDiscoveryStrangeDispossessTabulationRegardElement.m in Sources */, - E896EFB22771C93B00AD2CC1 /* YUMIManeAssistantNumberRegard.m in Sources */, - 14EB640D29A5C16000A4A00B /* YUMIMomentsSimpleSpecificNev.m in Sources */, - E80EC80E28ACD84000D133C5 /* MHTKeyboardBaseExecutive.m in Sources */, - 149839C7299E0B9F00F82CBF /* YUMIMomentStatementAssembletionRegardElement.m in Sources */, - E88C729C2828F37D0047FB2B /* YUMIChamberManualBibliothecaDispossessTabulationRegardElement.m in Sources */, - E85E7B0A2A4EB0D200B6D00A /* YUMIUnionExecutivePerExternalizer.m in Sources */, - 9B85F3562806DD8A006EDF51 /* XCombatellegCombatFinishRegard.m in Sources */, - E85E7BA12A4EC99300B6D00A /* YUMIManeGiveDiamondMatrix.m in Sources */, - E85E7B232A4EB0D300B6D00A /* YUMIManeCollectiveRegardGovernancer.m in Sources */, - E89DA67227008D59008483C1 /* RamparatetAbstractMatrix.m in Sources */, - E8778AE12988B4C300CF139B /* CommunicationRevokeMatrix.m in Sources */, - E873EB05280943ED0071030D /* YUMIManeConsumerAbstractPresentRamparatExternalizer.m in Sources */, - E8383697298A598D00112E1C /* CommunicationTipsMatrix.m in Sources */, + E8412FA92779C2ED006E1101 /* XPRoomSettingItemModel.m in Sources */, + 189DD58F26DF97E700AB55B1 /* LoginPresenter.m in Sources */, + E88863C9278EBA43004BCFAB /* XPAcrossRoomPKForceEndResultView.m in Sources */, + E8F63CB7298B566D00B338BA /* XPSessionSayHelloPresenter.m in Sources */, + E88C72952828F1AD0047FB2B /* XPRoomMusicLibraryViewController.m in Sources */, + E85E7BA62A4EC99300B6D00A /* XPMineGiveDiamondSearchView.m in Sources */, + 1427218829A75F6F00C7C423 /* HTTPErrorResponse.m in Sources */, + E85E7B032A4EB0D200B6D00A /* XPGuildIncomePresenter.m in Sources */, + E8A30BF928534E48003B4873 /* XPSessionFindNewEmptyTableViewCell.m in Sources */, + E896EFB22771C93B00AD2CC1 /* XPMineFriendNumberView.m in Sources */, + 14EB640D29A5C16000A4A00B /* XPMomentsSimpleDetailNav.m in Sources */, + E80EC80E28ACD84000D133C5 /* QKeyboardBaseManager.m in Sources */, + 149839C7299E0B9F00F82CBF /* XPMomentListCollectionViewCell.m in Sources */, + E88C729C2828F37D0047FB2B /* XPRoomMusicLibraryEmptyTableViewCell.m in Sources */, + E85E7B0A2A4EB0D200B6D00A /* XPGuildManagerPerPresenter.m in Sources */, + 9B85F3562806DD8A006EDF51 /* XPAnchorPKFinishView.m in Sources */, + E85E7BA12A4EC99300B6D00A /* XPMineGiveDiamondModel.m in Sources */, + E85E7B232A4EB0D300B6D00A /* XPMineClanViewController.m in Sources */, + E89DA67227008D59008483C1 /* WalletInfoModel.m in Sources */, + E8778AE12988B4C300CF139B /* MessageRevokeModel.m in Sources */, + E873EB05280943ED0071030D /* XPMineUserInfoGiftWallPresenter.m in Sources */, + E8383697298A598D00112E1C /* MessageTipsModel.m in Sources */, E801274727E3241700BAC3F2 /* Api+RoomPK.m in Sources */, - E87DF4F82A42CCAB009C1185 /* YUMIResidenceHuntforRelateRegard.m in Sources */, - E80CBDEA27D0C53F001E1EC2 /* YUMIWeakIntratemporalr.m in Sources */, - E85E7BAC2A4EC99300B6D00A /* YUMIManeGiveDiamondSpecificsRegard.m in Sources */, - E85E7B152A4EB0D200B6D00A /* CollectiveAbstractMatrix.m in Sources */, - 189DD55026DE37F900AB55B1 /* MvpRegardGovernancer.m in Sources */, - E81366F326F0B7C80076364C /* SurmountFullAbstractRegardGovernancer.m in Sources */, + E87DF4F82A42CCAB009C1185 /* XPHomeSearchRelateView.m in Sources */, + E80CBDEA27D0C53F001E1EC2 /* XPWeakTimer.m in Sources */, + E85E7BAC2A4EC99300B6D00A /* XPMineGiveDiamondDetailsView.m in Sources */, + E85E7B152A4EB0D200B6D00A /* ClanInfoModel.m in Sources */, + 189DD55026DE37F900AB55B1 /* MvpViewController.m in Sources */, + E81366F326F0B7C80076364C /* LoginFullInfoViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/YuMi/Appdelegate/AppDelegate+ThirdConfig.h b/YuMi/Appdelegate/AppDelegate+ThirdConfig.h index 3d8d76f1..555fbbd8 100644 --- a/YuMi/Appdelegate/AppDelegate+ThirdConfig.h +++ b/YuMi/Appdelegate/AppDelegate+ThirdConfig.h @@ -10,9 +10,12 @@ NS_ASSUME_NONNULL_BEGIN @interface AppDelegate (ThirdConfig) -- (void)initTertiusDisposition; - -- (void)setupLaunchADRegard; +/// 初始化一些第三方配置 +- (void)initThirdConfig; +/** + 设置广告页 + */ +- (void)setupLaunchADView; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Appdelegate/AppDelegate+ThirdConfig.m b/YuMi/Appdelegate/AppDelegate+ThirdConfig.m index 64e9be10..0d579bde 100644 --- a/YuMi/Appdelegate/AppDelegate+ThirdConfig.m +++ b/YuMi/Appdelegate/AppDelegate+ThirdConfig.m @@ -6,20 +6,22 @@ // #import "AppDelegate+ThirdConfig.h" +///Third #import #import #import +///Tool #import "YUMIConstant.h" #import "CustomAttachmentDecoder.h" -#import "MHTSpiritFacilitater.h" -#import "YUMIAdvertiseRegard.h" -#import "YUMIAdIndicateTool.h" +#import "QEmotionHelper.h" +#import "XPAdvertiseView.h" +#import "XPAdImageTool.h" #import "YUMIMacroUitls.h" -#import "AdvertiseMatrix.h" -#import "YUMITissueRegardGovernancer.h" -#import "YUMIChamberRegardGovernancer.h" -#import "XCCurrentVCStackExecutive.h" -#import "ClientDisposition.h" +#import "AdvertiseModel.h" +#import "XPWebViewController.h" +#import "XPRoomViewController.h" +#import "XCCurrentVCStackManager.h" +#import "ClientConfig.h" UIKIT_EXTERN NSString * kYouMiNumberCountKey; UIKIT_EXTERN NSString * adImageName; @@ -27,22 +29,23 @@ UIKIT_EXTERN NSString * adImageName; @implementation AppDelegate (ThirdConfig) -- (void)initTertiusDisposition { - [self prohibitipositionPartowardsiciptowardsionSDK]; - [self prohibitipositionNEMCSDK]; - [self initEmojiTowardsoloudspeaker]; +/// 初始化一些第三方配置 +- (void)initThirdConfig { + [self configShareSDK]; + [self configNIMSDK]; + [self initEmojiData]; } -- (void)prohibitipositionNEMCSDK { - - NSString *appKey = KeyWithType(KeyGenre_NetEase); +- (void)configNIMSDK { + //推荐在程序启动的时候初始化 NIMSDK + NSString *appKey = KeyWithType(KeyType_NetEase); NIMSDKOption *option = [NIMSDKOption optionWithAppKey:appKey]; [[NIMSDK sharedSDK] registerWithOption:option]; - + // NIM SDK初始化 [NIMCustomObject registerCustomDecoder:[[CustomAttachmentDecoder alloc] init]]; [NIMSDKConfig sharedConfig].shouldConsiderRevokedMessageUnreadCount = YES; - + ///置顶会话同步 [[NIMSDKConfig sharedConfig] setShouldSyncStickTopSessionInfos:YES]; #ifdef DEBUG [NIMSDKConfig sharedConfig].enabledHttpsForInfo = NO; @@ -51,16 +54,16 @@ UIKIT_EXTERN NSString * adImageName; } -- (void)prohibitipositionPartowardsiciptowardsionSDK { +- (void)configShareSDK { [ShareSDK registPlatforms:^(SSDKRegister *platformsRegister) { - - [platformsRegister setupFacebookWithAppkey:@"1266232494209868" appSecret:@"c9b170b383f8be9cdf118823b8632821" displayName:YMLocalizedString(@"App_Delegate__Third_Config_0")]; + ///faceBook + [platformsRegister setupFacebookWithAppkey:@"1266232494209868" appSecret:@"c9b170b383f8be9cdf118823b8632821" displayName:YMLocalizedString(@"AppDelegate_ThirdConfig0")]; [platformsRegister setupLineAuthType:SSDKAuthorizeTypeBoth]; }]; } #pragma mark - 表情 -- (void)initEmojiTowardsoloudspeaker { +- (void)initEmojiData { NSArray * dicArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"emoji" ofType:@"plist"]]; NSDictionary * dic = [dicArray firstObject]; NSArray * emojiArray = dic[@"data"]; @@ -68,25 +71,27 @@ UIKIT_EXTERN NSString * adImageName; for (int i = 0; i < emojiArray.count; i++) { NSDictionary * dic = [emojiArray objectAtIndex:i]; UIImage * image = [UIImage imageNamed:dic[@"file"]]; - MHTSpirit * info = [[MHTSpirit alloc] init]; + QEmotion * info = [[QEmotion alloc] init]; info.identifier = dic[@"id"]; info.image = image; info.displayName = dic[@"tag"]; [array addObject:info]; } - - MHTSpiritFacilitater *faceManager = [MHTSpiritFacilitater partowardsiciptowardsiondSenintrtowardsemporalntFacilittowardseer]; - faceManager.senintratemporalntGarment = array; + //在这里强烈建议先预加载一下表情 + QEmotionHelper *faceManager = [QEmotionHelper sharedEmotionHelper]; + faceManager.emotionArray = array; } #pragma mark - 广告 - -- (void)setupLaunchADRegard { +/** + 设置广告页 + */ +- (void)setupLaunchADView { NSUserDefaults * kUserDefaults = NSUserDefaults.standardUserDefaults; - - NSString *filePath = [YUMIAdIndicateTool.partowardsiciptowardsionIndictowardseUtensil acquireAccurtowardseRouteAboutIndictowardseConstitute:[kUserDefaults valueForKey:adImageName]]; - BOOL isExist = [YUMIAdIndicateTool.partowardsiciptowardsionIndictowardseUtensil isAccurtowardseExistAboutAccurtowardseRoute:filePath]; + // 判断沙盒中是否存在广告图片,如果存在,直接显示 + NSString *filePath = [XPAdImageTool.shareImageTool getFilePathWithImageName:[kUserDefaults valueForKey:adImageName]]; + BOOL isExist = [XPAdImageTool.shareImageTool isFileExistWithFilePath:filePath]; NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; if ([userDefault integerForKey:@"adShow"]) { @@ -95,20 +100,20 @@ UIKIT_EXTERN NSString * adImageName; [userDefault setInteger:1 forKey:@"adShow"]; } - if (isExist) { + if (isExist) {// 图片存在 if ([userDefault integerForKey:@"adShow"] > 4) { @kWeakify(self); NSString *imageName = [kUserDefaults valueForKey:adImageName]; - AdvertiseMatrix *info = [YUMIAdIndicateTool.partowardsiciptowardsionIndictowardseUtensil acquireDirectoryAbstractByvirtueofConcealInMainAbout:imageName]; - YUMIAdvertiseRegard *advertiseView = [[YUMIAdvertiseRegard alloc] initWithFrame:self.window.bounds]; + AdvertiseModel *info = [XPAdImageTool.shareImageTool getAdInfoFromCacheInMainWith:imageName]; + XPAdvertiseView *advertiseView = [[XPAdvertiseView alloc] initWithFrame:self.window.bounds]; advertiseView.filePath = filePath; - advertiseView.disappearHandler = ^(BOOL shouldJump) { + advertiseView.dismissHandler = ^(BOOL shouldJump) { @kStrongify(self) if (!shouldJump || info == nil) { return; } - [self performSelectorOnMainThread:@selector(advertiseJumpShankAboutAbstract:) withObject:info waitUntilDone:NO]; + [self performSelectorOnMainThread:@selector(advertiseJumpHandleWithInfo:) withObject:info waitUntilDone:NO]; }; [advertiseView show]; } @@ -116,32 +121,33 @@ UIKIT_EXTERN NSString * adImageName; } -- (void)advertiseJumpShankAboutAbstract:(AdvertiseMatrix *)info { - if (![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { +/// 闪屏广告跳转处理 +- (void)advertiseJumpHandleWithInfo:(AdvertiseModel *)info { + if (![ClientConfig shareConfig].canOpen) { return; } if (UIApplication.sharedApplication.keyWindow != self.window) { - + //当前窗口不是主控制器所在窗口时,拦截跳转(目前可能情况时,闪屏后出现新人引导 return; } switch (info.type) { - case SplashAbstractSkipGenreRoom: { - if (![[YUMIAdIndicateTool partowardsiciptowardsionIndictowardseUtensil] isImSurmount]) { - return; + case SplashInfoSkipTypeRoom: { + if (![[XPAdImageTool shareImageTool] isImLogin]) { + return; // 必须登录后才可以跳转 } - + // 跳转房间 if (info.link.length > 0) { - [YUMIChamberRegardGovernancer unfoildChamber:info.link viewController:[XCCurrentVCStackExecutive shareManager].getCurrentVC]; + [XPRoomViewController openRoom:info.link viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; } } break; - case SplashAbstractSkipGenreWeb: { - + case SplashInfoSkipTypeWeb: { + // 跳转 H5 if (info.link.length > 0) { - YUMITissueRegardGovernancer *webView = [[YUMITissueRegardGovernancer alloc]init]; + XPWebViewController *webView = [[XPWebViewController alloc]init]; webView.url = info.link; - [[[XCCurrentVCStackExecutive shareManager]universalBreeadcrumbGovernancer] pushViewController:webView animated:YES]; + [[[XCCurrentVCStackManager shareManager]currentNavigationController] pushViewController:webView animated:YES]; } } break; diff --git a/YuMi/Appdelegate/AppDelegate.h b/YuMi/Appdelegate/AppDelegate.h index 1965e01c..efa80bfa 100644 --- a/YuMi/Appdelegate/AppDelegate.h +++ b/YuMi/Appdelegate/AppDelegate.h @@ -14,7 +14,7 @@ @property(nonatomic,strong,readonly)NSManagedObjectModel *managedObjectModel; @property(nonatomic,strong,readonly)NSPersistentStoreCoordinator *persistentStoreCoordinator; -- (void)preserveConessay; -- (NSURL *)aplictowardsionlictowardsionDocumentsDirectoryvisory; +- (void)saveContext; +- (NSURL *)applicationDocumentsDirectory; @end diff --git a/YuMi/Appdelegate/AppDelegate.m b/YuMi/Appdelegate/AppDelegate.m index 7137e017..50985662 100644 --- a/YuMi/Appdelegate/AppDelegate.m +++ b/YuMi/Appdelegate/AppDelegate.m @@ -6,8 +6,8 @@ // #import "AppDelegate.h" -#import "TabbarRegardGovernancer.h" -#import "BaseNevigationGovernancer.h" +#import "TabbarViewController.h" +#import "BaseNavigationController.h" #import "AppDelegate+ThirdConfig.h" #import #import @@ -18,18 +18,18 @@ @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - TabbarRegardGovernancer *vc = [[TabbarRegardGovernancer alloc] init]; - BaseNevigationGovernancer *bnc = [[BaseNevigationGovernancer alloc] initWithRootViewController:vc]; + TabbarViewController *vc = [[TabbarViewController alloc] init]; + BaseNavigationController *bnc = [[BaseNavigationController alloc] initWithRootViewController:vc]; self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; self.window.rootViewController = bnc; [self.window makeKeyAndVisible]; - - [self setupLaunchADRegard]; - - [self initTertiusDisposition]; - + ///设置广告页 + [self setupLaunchADView]; + ///初始化一些 sdk配置 + [self initThirdConfig]; + // 只有同意过了隐私协议 才初始化 if ([[NSUserDefaults standardUserDefaults] objectForKey:@"kYouMinumbernnagna"]) { - + ///初始化友盟 [UMConfigure initWithAppkey:@"6434c6dfd64e686139618269" channel:@"yumi_appstore"]; } return YES; @@ -42,7 +42,7 @@ } - (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { - + // 上传devicetoken至云信服务器。 [[NIMSDK sharedSDK] updateApnsToken:deviceToken]; } @@ -52,12 +52,12 @@ @synthesize managedObjectModel = _managedObjectModel; @synthesize persistentStoreCoordinator = _persistentStoreCoordinator; --(NSURL *)aplictowardsionlictowardsionDocumentsDirectoryvisory{ +-(NSURL *)applicationDocumentsDirectory{ return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; } - (NSManagedObjectModel *)managedObjectModel { - + // The managed object model for the application. It is a fatal error for the application not to be able to find and load its model. if (_managedObjectModel != nil) { return _managedObjectModel; } @@ -67,26 +67,26 @@ } - (NSPersistentStoreCoordinator *)persistentStoreCoordinator { - + // The persistent store coordinator for the application. This implementation creates and returns a coordinator, having added the store for the application to it. if (_persistentStoreCoordinator != nil) { return _persistentStoreCoordinator; } - + // Create the coordinator and store _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; - NSURL *storeURL = [[self aplictowardsionlictowardsionDocumentsDirectoryvisory] URLByAppendingPathComponent:@"_1_______.sqlite"]; + NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"_1_______.sqlite"]; NSError *error = nil; NSString *failureReason = @"There was an error creating or loading the application's saved data."; if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) { - + // Report any error we got. NSMutableDictionary *dict = [NSMutableDictionary dictionary]; dict[NSLocalizedDescriptionKey] = @"Failed to initialize the application's saved data"; dict[NSLocalizedFailureReasonErrorKey] = failureReason; dict[NSUnderlyingErrorKey] = error; error = [NSError errorWithDomain:@"YOUR_ERROR_DOMAIN" code:9999 userInfo:dict]; - - + // Replace this with code to handle the error appropriately. + // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. NSLog(@"Unresolved error %@, %@", error, [error userInfo]); abort(); } @@ -96,7 +96,7 @@ - (NSManagedObjectContext *)managedObjectContext { - + // Returns the managed object context for the application (which is already bound to the persistent store coordinator for the application.) if (_managedObjectContext != nil) { return _managedObjectContext; } @@ -112,13 +112,13 @@ #pragma mark - Core Data Saving support -- (void)preserveConessay { +- (void)saveContext { NSManagedObjectContext *managedObjectContext = self.managedObjectContext; if (managedObjectContext != nil) { NSError *error = nil; if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) { - - + // Replace this implementation with code to handle the error appropriately. + // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. NSLog(@"Unresolved error %@, %@", error, [error userInfo]); abort(); } diff --git a/YuMi/Assets.xcassets/AccentColor.colorset/Contents.json b/YuMi/Assets.xcassets/AccentColor.colorset/Contents.json index 35307a7f..eb878970 100644 --- a/YuMi/Assets.xcassets/AccentColor.colorset/Contents.json +++ b/YuMi/Assets.xcassets/AccentColor.colorset/Contents.json @@ -1,7 +1,11 @@ -{"colors": [{"idiom": "universal"}], "info": {"author": "xcode", "version": 1}} - - - - - - +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/AppIcon.appiconset/1024.png b/YuMi/Assets.xcassets/AppIcon.appiconset/1024.png index 7a7f00fb..898f33ae 100644 Binary files a/YuMi/Assets.xcassets/AppIcon.appiconset/1024.png and b/YuMi/Assets.xcassets/AppIcon.appiconset/1024.png differ diff --git a/YuMi/Assets.xcassets/AppIcon.appiconset/Contents.json b/YuMi/Assets.xcassets/AppIcon.appiconset/Contents.json index afe098f9..cff1680b 100644 --- a/YuMi/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/YuMi/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,7 +1,14 @@ -{"images": [{"filename": "1024.png", "idiom": "universal", "platform": "ios", "size": "1024x1024"}], "info": {"author": "xcode", "version": 1}} - - - - - - +{ + "images" : [ + { + "filename" : "1024.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Contents.json b/YuMi/Assets.xcassets/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/Contents.json +++ b/YuMi/Assets.xcassets/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/Contents.json b/YuMi/Assets.xcassets/Login/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/Login/Contents.json +++ b/YuMi/Assets.xcassets/Login/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_agree.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_agree.imageset/Contents.json new file mode 100644 index 00000000..5595a45a --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_agree.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_agree@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "login_agree@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_agree.imageset/login_agree@2x.png b/YuMi/Assets.xcassets/Login/login_agree.imageset/login_agree@2x.png new file mode 100644 index 00000000..e3bce8ce Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_agree.imageset/login_agree@2x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_agree.imageset/login_agree@3x.png b/YuMi/Assets.xcassets/Login/login_agree.imageset/login_agree@3x.png new file mode 100644 index 00000000..e22eb89c Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_agree.imageset/login_agree@3x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_area_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_area_arrow.imageset/Contents.json new file mode 100644 index 00000000..2130df9f --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_area_arrow.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_area_arrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "login_area_arrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_area_arrow.imageset/login_area_arrow@2x.png b/YuMi/Assets.xcassets/Login/login_area_arrow.imageset/login_area_arrow@2x.png new file mode 100644 index 00000000..a96c5f03 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_area_arrow.imageset/login_area_arrow@2x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_area_arrow.imageset/login_area_arrow@3x.png b/YuMi/Assets.xcassets/Login/login_area_arrow.imageset/login_area_arrow@3x.png new file mode 100644 index 00000000..73e3b9c4 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_area_arrow.imageset/login_area_arrow@3x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_auth_bubble.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_auth_bubble.imageset/Contents.json new file mode 100644 index 00000000..25035935 --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_auth_bubble.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_auth_bubble@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "login_auth_bubble@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_auth_bubble.imageset/login_auth_bubble@2x.png b/YuMi/Assets.xcassets/Login/login_auth_bubble.imageset/login_auth_bubble@2x.png new file mode 100644 index 00000000..8ca49438 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_auth_bubble.imageset/login_auth_bubble@2x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_auth_bubble.imageset/login_auth_bubble@3x.png b/YuMi/Assets.xcassets/Login/login_auth_bubble.imageset/login_auth_bubble@3x.png new file mode 100644 index 00000000..a4ff25f1 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_auth_bubble.imageset/login_auth_bubble@3x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_bind_phone_bg.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_bind_phone_bg.imageset/Contents.json new file mode 100644 index 00000000..68cb9f1a --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_bind_phone_bg.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_bind_phone_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_bind_phone_bg.imageset/login_bind_phone_bg@2x.png b/YuMi/Assets.xcassets/Login/login_bind_phone_bg.imageset/login_bind_phone_bg@2x.png new file mode 100644 index 00000000..632541c4 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_bind_phone_bg.imageset/login_bind_phone_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_bind_phone_success.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_bind_phone_success.imageset/Contents.json new file mode 100644 index 00000000..08a20baf --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_bind_phone_success.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_bind_phone_success@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "login_bind_phone_success@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_bind_phone_success.imageset/login_bind_phone_success@2x.png b/YuMi/Assets.xcassets/Login/login_bind_phone_success.imageset/login_bind_phone_success@2x.png new file mode 100644 index 00000000..ba8b4374 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_bind_phone_success.imageset/login_bind_phone_success@2x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_bind_phone_success.imageset/login_bind_phone_success@3x.png b/YuMi/Assets.xcassets/Login/login_bind_phone_success.imageset/login_bind_phone_success@3x.png new file mode 100644 index 00000000..fee81d5f Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_bind_phone_success.imageset/login_bind_phone_success@3x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_button.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_button.imageset/Contents.json new file mode 100644 index 00000000..34cab090 --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_button.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "login_button@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "login_button@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/YuMi/Assets.xcassets/Login/login_button.imageset/login_button@2x.png b/YuMi/Assets.xcassets/Login/login_button.imageset/login_button@2x.png new file mode 100644 index 00000000..886ad950 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_button.imageset/login_button@2x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_button.imageset/login_button@3x.png b/YuMi/Assets.xcassets/Login/login_button.imageset/login_button@3x.png new file mode 100644 index 00000000..00fb3e50 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_button.imageset/login_button@3x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_button_sel.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_button_sel.imageset/Contents.json new file mode 100644 index 00000000..eb3d25d7 --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_button_sel.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "login_button_sel@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "login_button_sel@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/YuMi/Assets.xcassets/Login/login_button_sel.imageset/login_button_sel@2x.png b/YuMi/Assets.xcassets/Login/login_button_sel.imageset/login_button_sel@2x.png new file mode 100644 index 00000000..bd176f0d Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_button_sel.imageset/login_button_sel@2x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_button_sel.imageset/login_button_sel@3x.png b/YuMi/Assets.xcassets/Login/login_button_sel.imageset/login_button_sel@3x.png new file mode 100644 index 00000000..9fa41929 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_button_sel.imageset/login_button_sel@3x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_china_mobile.imageset/ChinaMobile_icon@2x.png b/YuMi/Assets.xcassets/Login/login_china_mobile.imageset/ChinaMobile_icon@2x.png new file mode 100644 index 00000000..1bedf871 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_china_mobile.imageset/ChinaMobile_icon@2x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_china_mobile.imageset/ChinaMobile_icon@3x.png b/YuMi/Assets.xcassets/Login/login_china_mobile.imageset/ChinaMobile_icon@3x.png new file mode 100644 index 00000000..be2466e6 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_china_mobile.imageset/ChinaMobile_icon@3x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_china_mobile.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_china_mobile.imageset/Contents.json new file mode 100644 index 00000000..9887a543 --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_china_mobile.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "ChinaMobile_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "ChinaMobile_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_ct_mobile.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_ct_mobile.imageset/Contents.json new file mode 100644 index 00000000..81068c12 --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_ct_mobile.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "ctmobile_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "ctmobile_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_ct_mobile.imageset/ctmobile_icon@2x.png b/YuMi/Assets.xcassets/Login/login_ct_mobile.imageset/ctmobile_icon@2x.png new file mode 100644 index 00000000..ff8d8ee5 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_ct_mobile.imageset/ctmobile_icon@2x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_ct_mobile.imageset/ctmobile_icon@3x.png b/YuMi/Assets.xcassets/Login/login_ct_mobile.imageset/ctmobile_icon@3x.png new file mode 100644 index 00000000..de9eef63 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_ct_mobile.imageset/ctmobile_icon@3x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_disagree.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_disagree.imageset/Contents.json new file mode 100644 index 00000000..93a456d5 --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_disagree.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_disagree@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "login_disagree@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_disagree.imageset/login_disagree@2x.png b/YuMi/Assets.xcassets/Login/login_disagree.imageset/login_disagree@2x.png new file mode 100644 index 00000000..3d78329d Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_disagree.imageset/login_disagree@2x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_disagree.imageset/login_disagree@3x.png b/YuMi/Assets.xcassets/Login/login_disagree.imageset/login_disagree@3x.png new file mode 100644 index 00000000..7cd40360 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_disagree.imageset/login_disagree@3x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_facebook.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_facebook.imageset/Contents.json new file mode 100644 index 00000000..e7992905 --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_facebook.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_facebook@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "login_facebook@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_facebook.imageset/login_facebook@2x.png b/YuMi/Assets.xcassets/Login/login_facebook.imageset/login_facebook@2x.png new file mode 100644 index 00000000..701f2367 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_facebook.imageset/login_facebook@2x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_facebook.imageset/login_facebook@3x.png b/YuMi/Assets.xcassets/Login/login_facebook.imageset/login_facebook@3x.png new file mode 100644 index 00000000..c884dbe1 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_facebook.imageset/login_facebook@3x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_full_info_female_normal.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_full_info_female_normal.imageset/Contents.json new file mode 100644 index 00000000..ecdfa303 --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_full_info_female_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_full_info_female_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "login_full_info_female_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_full_info_female_normal.imageset/login_full_info_female_normal@2x.png b/YuMi/Assets.xcassets/Login/login_full_info_female_normal.imageset/login_full_info_female_normal@2x.png new file mode 100644 index 00000000..4af250b9 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_full_info_female_normal.imageset/login_full_info_female_normal@2x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_full_info_female_normal.imageset/login_full_info_female_normal@3x.png b/YuMi/Assets.xcassets/Login/login_full_info_female_normal.imageset/login_full_info_female_normal@3x.png new file mode 100644 index 00000000..9a343e1d Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_full_info_female_normal.imageset/login_full_info_female_normal@3x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_full_info_female_select.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_full_info_female_select.imageset/Contents.json new file mode 100644 index 00000000..05c68a8d --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_full_info_female_select.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_full_info_female_select@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "login_full_info_female_select@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_full_info_female_select.imageset/login_full_info_female_select@2x.png b/YuMi/Assets.xcassets/Login/login_full_info_female_select.imageset/login_full_info_female_select@2x.png new file mode 100644 index 00000000..6f871a5a Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_full_info_female_select.imageset/login_full_info_female_select@2x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_full_info_female_select.imageset/login_full_info_female_select@3x.png b/YuMi/Assets.xcassets/Login/login_full_info_female_select.imageset/login_full_info_female_select@3x.png new file mode 100644 index 00000000..1d3632c2 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_full_info_female_select.imageset/login_full_info_female_select@3x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_full_info_male_normal.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_full_info_male_normal.imageset/Contents.json new file mode 100644 index 00000000..d43d194f --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_full_info_male_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_full_info_male_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "login_full_info_male_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_full_info_male_normal.imageset/login_full_info_male_normal@2x.png b/YuMi/Assets.xcassets/Login/login_full_info_male_normal.imageset/login_full_info_male_normal@2x.png new file mode 100644 index 00000000..4ca24df0 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_full_info_male_normal.imageset/login_full_info_male_normal@2x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_full_info_male_normal.imageset/login_full_info_male_normal@3x.png b/YuMi/Assets.xcassets/Login/login_full_info_male_normal.imageset/login_full_info_male_normal@3x.png new file mode 100644 index 00000000..b4ce6ae1 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_full_info_male_normal.imageset/login_full_info_male_normal@3x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_full_info_male_select.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_full_info_male_select.imageset/Contents.json new file mode 100644 index 00000000..d7e2ed47 --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_full_info_male_select.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_full_info_male_select@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "login_full_info_male_select@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_full_info_male_select.imageset/login_full_info_male_select@2x.png b/YuMi/Assets.xcassets/Login/login_full_info_male_select.imageset/login_full_info_male_select@2x.png new file mode 100644 index 00000000..bcfe37f8 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_full_info_male_select.imageset/login_full_info_male_select@2x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_full_info_male_select.imageset/login_full_info_male_select@3x.png b/YuMi/Assets.xcassets/Login/login_full_info_male_select.imageset/login_full_info_male_select@3x.png new file mode 100644 index 00000000..90079796 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_full_info_male_select.imageset/login_full_info_male_select@3x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_full_info_refresh.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_full_info_refresh.imageset/Contents.json new file mode 100644 index 00000000..1d37eb76 --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_full_info_refresh.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_full_info_refresh@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "login_full_info_refresh@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_full_info_refresh.imageset/login_full_info_refresh@2x.png b/YuMi/Assets.xcassets/Login/login_full_info_refresh.imageset/login_full_info_refresh@2x.png new file mode 100644 index 00000000..1ee15dcd Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_full_info_refresh.imageset/login_full_info_refresh@2x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_full_info_refresh.imageset/login_full_info_refresh@3x.png b/YuMi/Assets.xcassets/Login/login_full_info_refresh.imageset/login_full_info_refresh@3x.png new file mode 100644 index 00000000..c70708bd Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_full_info_refresh.imageset/login_full_info_refresh@3x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_gmail.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_gmail.imageset/Contents.json new file mode 100644 index 00000000..40af4f62 --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_gmail.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_gmail@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "login_gmail@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_gmail.imageset/login_gmail@2x.png b/YuMi/Assets.xcassets/Login/login_gmail.imageset/login_gmail@2x.png new file mode 100644 index 00000000..02b4c755 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_gmail.imageset/login_gmail@2x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_gmail.imageset/login_gmail@3x.png b/YuMi/Assets.xcassets/Login/login_gmail.imageset/login_gmail@3x.png new file mode 100644 index 00000000..ab65588c Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_gmail.imageset/login_gmail@3x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_line.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_line.imageset/Contents.json new file mode 100644 index 00000000..346120e9 --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_line.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_line@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "login_line@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_line.imageset/login_line@2x.png b/YuMi/Assets.xcassets/Login/login_line.imageset/login_line@2x.png new file mode 100644 index 00000000..a8892374 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_line.imageset/login_line@2x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_line.imageset/login_line@3x.png b/YuMi/Assets.xcassets/Login/login_line.imageset/login_line@3x.png new file mode 100644 index 00000000..6323ede6 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_line.imageset/login_line@3x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_next.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_next.imageset/Contents.json new file mode 100644 index 00000000..fafebf67 --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_next.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_next@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "login_next@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_next.imageset/login_next@2x.png b/YuMi/Assets.xcassets/Login/login_next.imageset/login_next@2x.png new file mode 100644 index 00000000..dfd7e03b Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_next.imageset/login_next@2x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_next.imageset/login_next@3x.png b/YuMi/Assets.xcassets/Login/login_next.imageset/login_next@3x.png new file mode 100644 index 00000000..316f036a Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_next.imageset/login_next@3x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_next_disable.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_next_disable.imageset/Contents.json new file mode 100644 index 00000000..db9d5f87 --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_next_disable.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_next_disable@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "login_next_disable@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_next_disable.imageset/login_next_disable@2x.png b/YuMi/Assets.xcassets/Login/login_next_disable.imageset/login_next_disable@2x.png new file mode 100644 index 00000000..9f2e356f Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_next_disable.imageset/login_next_disable@2x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_next_disable.imageset/login_next_disable@3x.png b/YuMi/Assets.xcassets/Login/login_next_disable.imageset/login_next_disable@3x.png new file mode 100644 index 00000000..66954cdf Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_next_disable.imageset/login_next_disable@3x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_phone_type.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_phone_type.imageset/Contents.json new file mode 100644 index 00000000..c3254aeb --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_phone_type.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_phone_type@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "login_phone_type@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_phone_type.imageset/login_phone_type@2x.png b/YuMi/Assets.xcassets/Login/login_phone_type.imageset/login_phone_type@2x.png new file mode 100644 index 00000000..346ddc3b Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_phone_type.imageset/login_phone_type@2x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_phone_type.imageset/login_phone_type@3x.png b/YuMi/Assets.xcassets/Login/login_phone_type.imageset/login_phone_type@3x.png new file mode 100644 index 00000000..8ccb3d42 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_phone_type.imageset/login_phone_type@3x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_phone_white.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_phone_white.imageset/Contents.json new file mode 100644 index 00000000..d2c6c6ec --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_phone_white.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_phone_white@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "login_phone_white@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_phone_white.imageset/login_phone_white@2x.png b/YuMi/Assets.xcassets/Login/login_phone_white.imageset/login_phone_white@2x.png new file mode 100644 index 00000000..245cdb89 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_phone_white.imageset/login_phone_white@2x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_phone_white.imageset/login_phone_white@3x.png b/YuMi/Assets.xcassets/Login/login_phone_white.imageset/login_phone_white@3x.png new file mode 100644 index 00000000..83ca74b3 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_phone_white.imageset/login_phone_white@3x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_quick_next.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_quick_next.imageset/Contents.json new file mode 100644 index 00000000..1c59d261 --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_quick_next.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_quick_next@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "login_quick_next@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_quick_next.imageset/login_quick_next@2x.png b/YuMi/Assets.xcassets/Login/login_quick_next.imageset/login_quick_next@2x.png new file mode 100644 index 00000000..c512d405 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_quick_next.imageset/login_quick_next@2x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_quick_next.imageset/login_quick_next@3x.png b/YuMi/Assets.xcassets/Login/login_quick_next.imageset/login_quick_next@3x.png new file mode 100644 index 00000000..6625ee00 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_quick_next.imageset/login_quick_next@3x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_unicom_mobile.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_unicom_mobile.imageset/Contents.json new file mode 100644 index 00000000..7aeb2387 --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_unicom_mobile.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "unicomMobile_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "unicomMobile_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_unicom_mobile.imageset/unicomMobile_icon@2x.png b/YuMi/Assets.xcassets/Login/login_unicom_mobile.imageset/unicomMobile_icon@2x.png new file mode 100644 index 00000000..df028038 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_unicom_mobile.imageset/unicomMobile_icon@2x.png differ diff --git a/YuMi/Assets.xcassets/Login/login_unicom_mobile.imageset/unicomMobile_icon@3x.png b/YuMi/Assets.xcassets/Login/login_unicom_mobile.imageset/unicomMobile_icon@3x.png new file mode 100644 index 00000000..bc163724 Binary files /dev/null and b/YuMi/Assets.xcassets/Login/login_unicom_mobile.imageset/unicomMobile_icon@3x.png differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_agree.imageset/Contents.json b/YuMi/Assets.xcassets/Login/yumi_login_agree.imageset/Contents.json deleted file mode 100644 index bbd28a85..00000000 --- a/YuMi/Assets.xcassets/Login/yumi_login_agree.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_login_agree@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_login_agree@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Login/yumi_login_agree.imageset/yumi_login_agree@2x.png b/YuMi/Assets.xcassets/Login/yumi_login_agree.imageset/yumi_login_agree@2x.png deleted file mode 100644 index fc7b7144..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_agree.imageset/yumi_login_agree@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_agree.imageset/yumi_login_agree@3x.png b/YuMi/Assets.xcassets/Login/yumi_login_agree.imageset/yumi_login_agree@3x.png deleted file mode 100644 index 72db7a68..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_agree.imageset/yumi_login_agree@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_area_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/Login/yumi_login_area_arrow.imageset/Contents.json deleted file mode 100644 index 3c8f0195..00000000 --- a/YuMi/Assets.xcassets/Login/yumi_login_area_arrow.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_login_area_arrow@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_login_area_arrow@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Login/yumi_login_area_arrow.imageset/yumi_login_area_arrow@2x.png b/YuMi/Assets.xcassets/Login/yumi_login_area_arrow.imageset/yumi_login_area_arrow@2x.png deleted file mode 100644 index 36f3931e..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_area_arrow.imageset/yumi_login_area_arrow@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_area_arrow.imageset/yumi_login_area_arrow@3x.png b/YuMi/Assets.xcassets/Login/yumi_login_area_arrow.imageset/yumi_login_area_arrow@3x.png deleted file mode 100644 index 17a74e2b..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_area_arrow.imageset/yumi_login_area_arrow@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_auth_bubble.imageset/Contents.json b/YuMi/Assets.xcassets/Login/yumi_login_auth_bubble.imageset/Contents.json deleted file mode 100644 index c249575f..00000000 --- a/YuMi/Assets.xcassets/Login/yumi_login_auth_bubble.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_login_auth_bubble@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_login_auth_bubble@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Login/yumi_login_auth_bubble.imageset/yumi_login_auth_bubble@2x.png b/YuMi/Assets.xcassets/Login/yumi_login_auth_bubble.imageset/yumi_login_auth_bubble@2x.png deleted file mode 100644 index c663537f..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_auth_bubble.imageset/yumi_login_auth_bubble@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_auth_bubble.imageset/yumi_login_auth_bubble@3x.png b/YuMi/Assets.xcassets/Login/yumi_login_auth_bubble.imageset/yumi_login_auth_bubble@3x.png deleted file mode 100644 index 75c52cdd..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_auth_bubble.imageset/yumi_login_auth_bubble@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_bind_phone_background.imageset/Contents.json b/YuMi/Assets.xcassets/Login/yumi_login_bind_phone_background.imageset/Contents.json deleted file mode 100644 index dfd8669f..00000000 --- a/YuMi/Assets.xcassets/Login/yumi_login_bind_phone_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_login_bind_phone_background@2x.png", "idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Login/yumi_login_bind_phone_background.imageset/yumi_login_bind_phone_background@2x.png b/YuMi/Assets.xcassets/Login/yumi_login_bind_phone_background.imageset/yumi_login_bind_phone_background@2x.png deleted file mode 100644 index f7b61d82..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_bind_phone_background.imageset/yumi_login_bind_phone_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_bind_phone_success.imageset/Contents.json b/YuMi/Assets.xcassets/Login/yumi_login_bind_phone_success.imageset/Contents.json deleted file mode 100644 index 907d5602..00000000 --- a/YuMi/Assets.xcassets/Login/yumi_login_bind_phone_success.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_login_bind_phone_success@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_login_bind_phone_success@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Login/yumi_login_bind_phone_success.imageset/yumi_login_bind_phone_success@2x.png b/YuMi/Assets.xcassets/Login/yumi_login_bind_phone_success.imageset/yumi_login_bind_phone_success@2x.png deleted file mode 100644 index 9abb8015..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_bind_phone_success.imageset/yumi_login_bind_phone_success@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_bind_phone_success.imageset/yumi_login_bind_phone_success@3x.png b/YuMi/Assets.xcassets/Login/yumi_login_bind_phone_success.imageset/yumi_login_bind_phone_success@3x.png deleted file mode 100644 index 66c93723..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_bind_phone_success.imageset/yumi_login_bind_phone_success@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_button.imageset/Contents.json b/YuMi/Assets.xcassets/Login/yumi_login_button.imageset/Contents.json deleted file mode 100644 index e7c25a70..00000000 --- a/YuMi/Assets.xcassets/Login/yumi_login_button.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"idiom": "universal", "filename": "yumi_login_button@2x.png", "scale": "2x"}, {"idiom": "universal", "filename": "yumi_login_button@3x.png", "scale": "3x"}], "info": {"version": 1, "author": "xcode"}} - - - - - - diff --git a/YuMi/Assets.xcassets/Login/yumi_login_button.imageset/yumi_login_button@2x.png b/YuMi/Assets.xcassets/Login/yumi_login_button.imageset/yumi_login_button@2x.png deleted file mode 100644 index f8613919..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_button.imageset/yumi_login_button@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_button.imageset/yumi_login_button@3x.png b/YuMi/Assets.xcassets/Login/yumi_login_button.imageset/yumi_login_button@3x.png deleted file mode 100644 index d26dc1af..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_button.imageset/yumi_login_button@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_button_sel.imageset/Contents.json b/YuMi/Assets.xcassets/Login/yumi_login_button_sel.imageset/Contents.json deleted file mode 100644 index 59bac875..00000000 --- a/YuMi/Assets.xcassets/Login/yumi_login_button_sel.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"idiom": "universal", "filename": "yumi_login_button_sel@2x.png", "scale": "2x"}, {"idiom": "universal", "filename": "yumi_login_button_sel@3x.png", "scale": "3x"}], "info": {"version": 1, "author": "xcode"}} - - - - - - diff --git a/YuMi/Assets.xcassets/Login/yumi_login_button_sel.imageset/yumi_login_button_sel@2x.png b/YuMi/Assets.xcassets/Login/yumi_login_button_sel.imageset/yumi_login_button_sel@2x.png deleted file mode 100644 index d91a1a02..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_button_sel.imageset/yumi_login_button_sel@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_button_sel.imageset/yumi_login_button_sel@3x.png b/YuMi/Assets.xcassets/Login/yumi_login_button_sel.imageset/yumi_login_button_sel@3x.png deleted file mode 100644 index 9615c98d..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_button_sel.imageset/yumi_login_button_sel@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_china_mobile.imageset/Contents.json b/YuMi/Assets.xcassets/Login/yumi_login_china_mobile.imageset/Contents.json deleted file mode 100644 index 69feb151..00000000 --- a/YuMi/Assets.xcassets/Login/yumi_login_china_mobile.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_login_china_mobile@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_login_china_mobile@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Login/yumi_login_china_mobile.imageset/yumi_login_china_mobile@2x.png b/YuMi/Assets.xcassets/Login/yumi_login_china_mobile.imageset/yumi_login_china_mobile@2x.png deleted file mode 100644 index 1b371cf9..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_china_mobile.imageset/yumi_login_china_mobile@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_china_mobile.imageset/yumi_login_china_mobile@3x.png b/YuMi/Assets.xcassets/Login/yumi_login_china_mobile.imageset/yumi_login_china_mobile@3x.png deleted file mode 100644 index 1dddfda0..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_china_mobile.imageset/yumi_login_china_mobile@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_ct_mobile.imageset/Contents.json b/YuMi/Assets.xcassets/Login/yumi_login_ct_mobile.imageset/Contents.json deleted file mode 100644 index 7cfcb0e3..00000000 --- a/YuMi/Assets.xcassets/Login/yumi_login_ct_mobile.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_login_ct_mobile@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_login_ct_mobile@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Login/yumi_login_ct_mobile.imageset/yumi_login_ct_mobile@2x.png b/YuMi/Assets.xcassets/Login/yumi_login_ct_mobile.imageset/yumi_login_ct_mobile@2x.png deleted file mode 100644 index e6287ac7..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_ct_mobile.imageset/yumi_login_ct_mobile@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_ct_mobile.imageset/yumi_login_ct_mobile@3x.png b/YuMi/Assets.xcassets/Login/yumi_login_ct_mobile.imageset/yumi_login_ct_mobile@3x.png deleted file mode 100644 index 277abd0b..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_ct_mobile.imageset/yumi_login_ct_mobile@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_disagree.imageset/Contents.json b/YuMi/Assets.xcassets/Login/yumi_login_disagree.imageset/Contents.json deleted file mode 100644 index 560ff02f..00000000 --- a/YuMi/Assets.xcassets/Login/yumi_login_disagree.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_login_disagree@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_login_disagree@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Login/yumi_login_disagree.imageset/yumi_login_disagree@2x.png b/YuMi/Assets.xcassets/Login/yumi_login_disagree.imageset/yumi_login_disagree@2x.png deleted file mode 100644 index 356c685c..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_disagree.imageset/yumi_login_disagree@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_disagree.imageset/yumi_login_disagree@3x.png b/YuMi/Assets.xcassets/Login/yumi_login_disagree.imageset/yumi_login_disagree@3x.png deleted file mode 100644 index 5c6da9e5..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_disagree.imageset/yumi_login_disagree@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_facebook.imageset/Contents.json b/YuMi/Assets.xcassets/Login/yumi_login_facebook.imageset/Contents.json deleted file mode 100644 index 39d47c59..00000000 --- a/YuMi/Assets.xcassets/Login/yumi_login_facebook.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_login_facebook@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_login_facebook@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Login/yumi_login_facebook.imageset/yumi_login_facebook@2x.png b/YuMi/Assets.xcassets/Login/yumi_login_facebook.imageset/yumi_login_facebook@2x.png deleted file mode 100644 index 9ad5693e..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_facebook.imageset/yumi_login_facebook@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_facebook.imageset/yumi_login_facebook@3x.png b/YuMi/Assets.xcassets/Login/yumi_login_facebook.imageset/yumi_login_facebook@3x.png deleted file mode 100644 index 11a1748a..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_facebook.imageset/yumi_login_facebook@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_female_normal.imageset/Contents.json b/YuMi/Assets.xcassets/Login/yumi_login_full_gen_female_normal.imageset/Contents.json deleted file mode 100644 index 59eaef1b..00000000 --- a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_female_normal.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_login_full_gen_female_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_login_full_gen_female_normal@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_female_normal.imageset/yumi_login_full_gen_female_normal@2x.png b/YuMi/Assets.xcassets/Login/yumi_login_full_gen_female_normal.imageset/yumi_login_full_gen_female_normal@2x.png deleted file mode 100644 index 50af3df2..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_female_normal.imageset/yumi_login_full_gen_female_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_female_normal.imageset/yumi_login_full_gen_female_normal@3x.png b/YuMi/Assets.xcassets/Login/yumi_login_full_gen_female_normal.imageset/yumi_login_full_gen_female_normal@3x.png deleted file mode 100644 index 3c9ebc4e..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_female_normal.imageset/yumi_login_full_gen_female_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_female_select.imageset/Contents.json b/YuMi/Assets.xcassets/Login/yumi_login_full_gen_female_select.imageset/Contents.json deleted file mode 100644 index 8b95422a..00000000 --- a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_female_select.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_login_full_gen_female_select@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_login_full_gen_female_select@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_female_select.imageset/yumi_login_full_gen_female_select@2x.png b/YuMi/Assets.xcassets/Login/yumi_login_full_gen_female_select.imageset/yumi_login_full_gen_female_select@2x.png deleted file mode 100644 index 1cfe2342..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_female_select.imageset/yumi_login_full_gen_female_select@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_female_select.imageset/yumi_login_full_gen_female_select@3x.png b/YuMi/Assets.xcassets/Login/yumi_login_full_gen_female_select.imageset/yumi_login_full_gen_female_select@3x.png deleted file mode 100644 index 9b476596..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_female_select.imageset/yumi_login_full_gen_female_select@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_male_normal.imageset/Contents.json b/YuMi/Assets.xcassets/Login/yumi_login_full_gen_male_normal.imageset/Contents.json deleted file mode 100644 index 622dc09a..00000000 --- a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_male_normal.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_login_full_gen_male_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_login_full_gen_male_normal@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_male_normal.imageset/yumi_login_full_gen_male_normal@2x.png b/YuMi/Assets.xcassets/Login/yumi_login_full_gen_male_normal.imageset/yumi_login_full_gen_male_normal@2x.png deleted file mode 100644 index 148c9c08..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_male_normal.imageset/yumi_login_full_gen_male_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_male_normal.imageset/yumi_login_full_gen_male_normal@3x.png b/YuMi/Assets.xcassets/Login/yumi_login_full_gen_male_normal.imageset/yumi_login_full_gen_male_normal@3x.png deleted file mode 100644 index 3660d254..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_male_normal.imageset/yumi_login_full_gen_male_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_male_select.imageset/Contents.json b/YuMi/Assets.xcassets/Login/yumi_login_full_gen_male_select.imageset/Contents.json deleted file mode 100644 index eef051d5..00000000 --- a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_male_select.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_login_full_gen_male_select@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_login_full_gen_male_select@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_male_select.imageset/yumi_login_full_gen_male_select@2x.png b/YuMi/Assets.xcassets/Login/yumi_login_full_gen_male_select.imageset/yumi_login_full_gen_male_select@2x.png deleted file mode 100644 index fd1b1819..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_male_select.imageset/yumi_login_full_gen_male_select@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_male_select.imageset/yumi_login_full_gen_male_select@3x.png b/YuMi/Assets.xcassets/Login/yumi_login_full_gen_male_select.imageset/yumi_login_full_gen_male_select@3x.png deleted file mode 100644 index a9637954..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_male_select.imageset/yumi_login_full_gen_male_select@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_refresh.imageset/Contents.json b/YuMi/Assets.xcassets/Login/yumi_login_full_gen_refresh.imageset/Contents.json deleted file mode 100644 index 0ee96a75..00000000 --- a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_refresh.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_login_full_gen_refresh@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_login_full_gen_refresh@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_refresh.imageset/yumi_login_full_gen_refresh@2x.png b/YuMi/Assets.xcassets/Login/yumi_login_full_gen_refresh.imageset/yumi_login_full_gen_refresh@2x.png deleted file mode 100644 index 8a470232..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_refresh.imageset/yumi_login_full_gen_refresh@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_refresh.imageset/yumi_login_full_gen_refresh@3x.png b/YuMi/Assets.xcassets/Login/yumi_login_full_gen_refresh.imageset/yumi_login_full_gen_refresh@3x.png deleted file mode 100644 index b026f683..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_full_gen_refresh.imageset/yumi_login_full_gen_refresh@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_gmail.imageset/Contents.json b/YuMi/Assets.xcassets/Login/yumi_login_gmail.imageset/Contents.json deleted file mode 100644 index 98ff3584..00000000 --- a/YuMi/Assets.xcassets/Login/yumi_login_gmail.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_login_gmail@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_login_gmail@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Login/yumi_login_gmail.imageset/yumi_login_gmail@2x.png b/YuMi/Assets.xcassets/Login/yumi_login_gmail.imageset/yumi_login_gmail@2x.png deleted file mode 100644 index a4768a12..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_gmail.imageset/yumi_login_gmail@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_gmail.imageset/yumi_login_gmail@3x.png b/YuMi/Assets.xcassets/Login/yumi_login_gmail.imageset/yumi_login_gmail@3x.png deleted file mode 100644 index fac31962..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_gmail.imageset/yumi_login_gmail@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_line.imageset/Contents.json b/YuMi/Assets.xcassets/Login/yumi_login_line.imageset/Contents.json deleted file mode 100644 index 48b9fa06..00000000 --- a/YuMi/Assets.xcassets/Login/yumi_login_line.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_login_line@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_login_line@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Login/yumi_login_line.imageset/yumi_login_line@2x.png b/YuMi/Assets.xcassets/Login/yumi_login_line.imageset/yumi_login_line@2x.png deleted file mode 100644 index 3a2d6e93..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_line.imageset/yumi_login_line@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_line.imageset/yumi_login_line@3x.png b/YuMi/Assets.xcassets/Login/yumi_login_line.imageset/yumi_login_line@3x.png deleted file mode 100644 index 5bcfb779..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_line.imageset/yumi_login_line@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_next.imageset/Contents.json b/YuMi/Assets.xcassets/Login/yumi_login_next.imageset/Contents.json deleted file mode 100644 index 83cc7f29..00000000 --- a/YuMi/Assets.xcassets/Login/yumi_login_next.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_login_next@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_login_next@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Login/yumi_login_next.imageset/yumi_login_next@2x.png b/YuMi/Assets.xcassets/Login/yumi_login_next.imageset/yumi_login_next@2x.png deleted file mode 100644 index 7971fdb1..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_next.imageset/yumi_login_next@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_next.imageset/yumi_login_next@3x.png b/YuMi/Assets.xcassets/Login/yumi_login_next.imageset/yumi_login_next@3x.png deleted file mode 100644 index b5c4228d..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_next.imageset/yumi_login_next@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_next_disable.imageset/Contents.json b/YuMi/Assets.xcassets/Login/yumi_login_next_disable.imageset/Contents.json deleted file mode 100644 index 4364e0a7..00000000 --- a/YuMi/Assets.xcassets/Login/yumi_login_next_disable.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_login_next_disable@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_login_next_disable@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Login/yumi_login_next_disable.imageset/yumi_login_next_disable@2x.png b/YuMi/Assets.xcassets/Login/yumi_login_next_disable.imageset/yumi_login_next_disable@2x.png deleted file mode 100644 index ed4444fb..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_next_disable.imageset/yumi_login_next_disable@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_next_disable.imageset/yumi_login_next_disable@3x.png b/YuMi/Assets.xcassets/Login/yumi_login_next_disable.imageset/yumi_login_next_disable@3x.png deleted file mode 100644 index f18e402d..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_next_disable.imageset/yumi_login_next_disable@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_phone_type.imageset/Contents.json b/YuMi/Assets.xcassets/Login/yumi_login_phone_type.imageset/Contents.json deleted file mode 100644 index 4cb8dba2..00000000 --- a/YuMi/Assets.xcassets/Login/yumi_login_phone_type.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_login_phone_type@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_login_phone_type@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Login/yumi_login_phone_type.imageset/yumi_login_phone_type@2x.png b/YuMi/Assets.xcassets/Login/yumi_login_phone_type.imageset/yumi_login_phone_type@2x.png deleted file mode 100644 index c21ce1e6..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_phone_type.imageset/yumi_login_phone_type@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_phone_type.imageset/yumi_login_phone_type@3x.png b/YuMi/Assets.xcassets/Login/yumi_login_phone_type.imageset/yumi_login_phone_type@3x.png deleted file mode 100644 index ebe0d567..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_phone_type.imageset/yumi_login_phone_type@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_phone_white.imageset/Contents.json b/YuMi/Assets.xcassets/Login/yumi_login_phone_white.imageset/Contents.json deleted file mode 100644 index 34eec66a..00000000 --- a/YuMi/Assets.xcassets/Login/yumi_login_phone_white.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_login_phone_white@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_login_phone_white@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Login/yumi_login_phone_white.imageset/yumi_login_phone_white@2x.png b/YuMi/Assets.xcassets/Login/yumi_login_phone_white.imageset/yumi_login_phone_white@2x.png deleted file mode 100644 index b621779a..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_phone_white.imageset/yumi_login_phone_white@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_phone_white.imageset/yumi_login_phone_white@3x.png b/YuMi/Assets.xcassets/Login/yumi_login_phone_white.imageset/yumi_login_phone_white@3x.png deleted file mode 100644 index 127d17e7..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_phone_white.imageset/yumi_login_phone_white@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_quick_next.imageset/Contents.json b/YuMi/Assets.xcassets/Login/yumi_login_quick_next.imageset/Contents.json deleted file mode 100644 index 6792cc98..00000000 --- a/YuMi/Assets.xcassets/Login/yumi_login_quick_next.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_login_quick_next@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_login_quick_next@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Login/yumi_login_quick_next.imageset/yumi_login_quick_next@2x.png b/YuMi/Assets.xcassets/Login/yumi_login_quick_next.imageset/yumi_login_quick_next@2x.png deleted file mode 100644 index d4112f80..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_quick_next.imageset/yumi_login_quick_next@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_quick_next.imageset/yumi_login_quick_next@3x.png b/YuMi/Assets.xcassets/Login/yumi_login_quick_next.imageset/yumi_login_quick_next@3x.png deleted file mode 100644 index ef3b4cbd..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_quick_next.imageset/yumi_login_quick_next@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_unicom_mobile.imageset/Contents.json b/YuMi/Assets.xcassets/Login/yumi_login_unicom_mobile.imageset/Contents.json deleted file mode 100644 index 451a9692..00000000 --- a/YuMi/Assets.xcassets/Login/yumi_login_unicom_mobile.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_login_unicom_mobile@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_login_unicom_mobile@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Login/yumi_login_unicom_mobile.imageset/yumi_login_unicom_mobile@2x.png b/YuMi/Assets.xcassets/Login/yumi_login_unicom_mobile.imageset/yumi_login_unicom_mobile@2x.png deleted file mode 100644 index 4010ed7d..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_unicom_mobile.imageset/yumi_login_unicom_mobile@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Login/yumi_login_unicom_mobile.imageset/yumi_login_unicom_mobile@3x.png b/YuMi/Assets.xcassets/Login/yumi_login_unicom_mobile.imageset/yumi_login_unicom_mobile@3x.png deleted file mode 100644 index 7f68e2be..00000000 Binary files a/YuMi/Assets.xcassets/Login/yumi_login_unicom_mobile.imageset/yumi_login_unicom_mobile@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/Contents.json b/YuMi/Assets.xcassets/Monents/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/Monents/Contents.json +++ b/YuMi/Assets.xcassets/Monents/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Monents/moment_camera.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/moment_camera.imageset/Contents.json new file mode 100644 index 00000000..6e835c8b --- /dev/null +++ b/YuMi/Assets.xcassets/Monents/moment_camera.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "moment_camera@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "moment_camera@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Monents/moment_camera.imageset/moment_camera@2x.png b/YuMi/Assets.xcassets/Monents/moment_camera.imageset/moment_camera@2x.png new file mode 100644 index 00000000..7ce01dce Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/moment_camera.imageset/moment_camera@2x.png differ diff --git a/YuMi/Assets.xcassets/Monents/moment_camera.imageset/moment_camera@3x.png b/YuMi/Assets.xcassets/Monents/moment_camera.imageset/moment_camera@3x.png new file mode 100644 index 00000000..c1a919f8 Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/moment_camera.imageset/moment_camera@3x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_common_landLordFlag.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/monents_common_landLordFlag.imageset/Contents.json new file mode 100644 index 00000000..d0222773 --- /dev/null +++ b/YuMi/Assets.xcassets/Monents/monents_common_landLordFlag.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "monents_common_landLordFlag@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "monents_common_landLordFlag@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Monents/monents_common_landLordFlag.imageset/monents_common_landLordFlag@2x.png b/YuMi/Assets.xcassets/Monents/monents_common_landLordFlag.imageset/monents_common_landLordFlag@2x.png new file mode 100644 index 00000000..6d91510b Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_common_landLordFlag.imageset/monents_common_landLordFlag@2x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_common_landLordFlag.imageset/monents_common_landLordFlag@3x.png b/YuMi/Assets.xcassets/Monents/monents_common_landLordFlag.imageset/monents_common_landLordFlag@3x.png new file mode 100644 index 00000000..1721be55 Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_common_landLordFlag.imageset/monents_common_landLordFlag@3x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_info_comment_count.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/monents_info_comment_count.imageset/Contents.json new file mode 100644 index 00000000..59a2a960 --- /dev/null +++ b/YuMi/Assets.xcassets/Monents/monents_info_comment_count.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "monents_info_comment_count@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "monents_info_comment_count@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Monents/monents_info_comment_count.imageset/monents_info_comment_count@2x.png b/YuMi/Assets.xcassets/Monents/monents_info_comment_count.imageset/monents_info_comment_count@2x.png new file mode 100644 index 00000000..4df3f588 Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_info_comment_count.imageset/monents_info_comment_count@2x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_info_comment_count.imageset/monents_info_comment_count@3x.png b/YuMi/Assets.xcassets/Monents/monents_info_comment_count.imageset/monents_info_comment_count@3x.png new file mode 100644 index 00000000..2d0d4a67 Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_info_comment_count.imageset/monents_info_comment_count@3x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_info_like_count_normal.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/monents_info_like_count_normal.imageset/Contents.json new file mode 100644 index 00000000..b7effae3 --- /dev/null +++ b/YuMi/Assets.xcassets/Monents/monents_info_like_count_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "monents_info_like_count_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "monents_info_like_count_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Monents/monents_info_like_count_normal.imageset/monents_info_like_count_normal@2x.png b/YuMi/Assets.xcassets/Monents/monents_info_like_count_normal.imageset/monents_info_like_count_normal@2x.png new file mode 100644 index 00000000..a527c057 Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_info_like_count_normal.imageset/monents_info_like_count_normal@2x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_info_like_count_normal.imageset/monents_info_like_count_normal@3x.png b/YuMi/Assets.xcassets/Monents/monents_info_like_count_normal.imageset/monents_info_like_count_normal@3x.png new file mode 100644 index 00000000..0123f196 Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_info_like_count_normal.imageset/monents_info_like_count_normal@3x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_info_like_count_select.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/monents_info_like_count_select.imageset/Contents.json new file mode 100644 index 00000000..1c0d2a64 --- /dev/null +++ b/YuMi/Assets.xcassets/Monents/monents_info_like_count_select.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "monents_info_like_count_select@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "monents_info_like_count_select@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Monents/monents_info_like_count_select.imageset/monents_info_like_count_select@2x.png b/YuMi/Assets.xcassets/Monents/monents_info_like_count_select.imageset/monents_info_like_count_select@2x.png new file mode 100644 index 00000000..42c0e9bb Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_info_like_count_select.imageset/monents_info_like_count_select@2x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_info_like_count_select.imageset/monents_info_like_count_select@3x.png b/YuMi/Assets.xcassets/Monents/monents_info_like_count_select.imageset/monents_info_like_count_select@3x.png new file mode 100644 index 00000000..346ee035 Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_info_like_count_select.imageset/monents_info_like_count_select@3x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_info_like_report.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/monents_info_like_report.imageset/Contents.json new file mode 100644 index 00000000..5c3a6047 --- /dev/null +++ b/YuMi/Assets.xcassets/Monents/monents_info_like_report.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "monents_info_like_report@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "monents_info_like_report@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Monents/monents_info_like_report.imageset/monents_info_like_report@2x.png b/YuMi/Assets.xcassets/Monents/monents_info_like_report.imageset/monents_info_like_report@2x.png new file mode 100644 index 00000000..034cc313 Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_info_like_report.imageset/monents_info_like_report@2x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_info_like_report.imageset/monents_info_like_report@3x.png b/YuMi/Assets.xcassets/Monents/monents_info_like_report.imageset/monents_info_like_report@3x.png new file mode 100644 index 00000000..8f1caf96 Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_info_like_report.imageset/monents_info_like_report@3x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_info_like_share.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/monents_info_like_share.imageset/Contents.json new file mode 100644 index 00000000..027a0a6a --- /dev/null +++ b/YuMi/Assets.xcassets/Monents/monents_info_like_share.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "monents_info_like_share@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "monents_info_like_share@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Monents/monents_info_like_share.imageset/monents_info_like_share@2x.png b/YuMi/Assets.xcassets/Monents/monents_info_like_share.imageset/monents_info_like_share@2x.png new file mode 100644 index 00000000..26e38fce Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_info_like_share.imageset/monents_info_like_share@2x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_info_like_share.imageset/monents_info_like_share@3x.png b/YuMi/Assets.xcassets/Monents/monents_info_like_share.imageset/monents_info_like_share@3x.png new file mode 100644 index 00000000..daa6872d Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_info_like_share.imageset/monents_info_like_share@3x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_info_top.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/monents_info_top.imageset/Contents.json new file mode 100644 index 00000000..317cc315 --- /dev/null +++ b/YuMi/Assets.xcassets/Monents/monents_info_top.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "monents_info_top@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "monents_info_top@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Monents/monents_info_top.imageset/monents_info_top@2x.png b/YuMi/Assets.xcassets/Monents/monents_info_top.imageset/monents_info_top@2x.png new file mode 100644 index 00000000..816cd22a Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_info_top.imageset/monents_info_top@2x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_info_top.imageset/monents_info_top@3x.png b/YuMi/Assets.xcassets/Monents/monents_info_top.imageset/monents_info_top@3x.png new file mode 100644 index 00000000..88d813a4 Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_info_top.imageset/monents_info_top@3x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_info_topic_icon.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/monents_info_topic_icon.imageset/Contents.json new file mode 100644 index 00000000..7fd758f7 --- /dev/null +++ b/YuMi/Assets.xcassets/Monents/monents_info_topic_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "monents_info_topic_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "monents_info_topic_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Monents/monents_info_topic_icon.imageset/monents_info_topic_icon@2x.png b/YuMi/Assets.xcassets/Monents/monents_info_topic_icon.imageset/monents_info_topic_icon@2x.png new file mode 100644 index 00000000..688dd76f Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_info_topic_icon.imageset/monents_info_topic_icon@2x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_info_topic_icon.imageset/monents_info_topic_icon@3x.png b/YuMi/Assets.xcassets/Monents/monents_info_topic_icon.imageset/monents_info_topic_icon@3x.png new file mode 100644 index 00000000..3013f4c2 Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_info_topic_icon.imageset/monents_info_topic_icon@3x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_interactive_delete_message.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/monents_interactive_delete_message.imageset/Contents.json new file mode 100644 index 00000000..d2bfc256 --- /dev/null +++ b/YuMi/Assets.xcassets/Monents/monents_interactive_delete_message.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "monents_interactive_delete_message@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "monents_interactive_delete_message@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Monents/monents_interactive_delete_message.imageset/monents_interactive_delete_message@2x.png b/YuMi/Assets.xcassets/Monents/monents_interactive_delete_message.imageset/monents_interactive_delete_message@2x.png new file mode 100644 index 00000000..6dbc4069 Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_interactive_delete_message.imageset/monents_interactive_delete_message@2x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_interactive_delete_message.imageset/monents_interactive_delete_message@3x.png b/YuMi/Assets.xcassets/Monents/monents_interactive_delete_message.imageset/monents_interactive_delete_message@3x.png new file mode 100644 index 00000000..22d046bf Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_interactive_delete_message.imageset/monents_interactive_delete_message@3x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_nav_interavtive_message.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/monents_nav_interavtive_message.imageset/Contents.json new file mode 100644 index 00000000..51def40b --- /dev/null +++ b/YuMi/Assets.xcassets/Monents/monents_nav_interavtive_message.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "monents_nav_interavtive_message@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "monents_nav_interavtive_message@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Monents/monents_nav_interavtive_message.imageset/monents_nav_interavtive_message@2x.png b/YuMi/Assets.xcassets/Monents/monents_nav_interavtive_message.imageset/monents_nav_interavtive_message@2x.png new file mode 100644 index 00000000..c35b7521 Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_nav_interavtive_message.imageset/monents_nav_interavtive_message@2x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_nav_interavtive_message.imageset/monents_nav_interavtive_message@3x.png b/YuMi/Assets.xcassets/Monents/monents_nav_interavtive_message.imageset/monents_nav_interavtive_message@3x.png new file mode 100644 index 00000000..61dfc062 Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_nav_interavtive_message.imageset/monents_nav_interavtive_message@3x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_publish.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/monents_publish.imageset/Contents.json new file mode 100644 index 00000000..5d8076e0 --- /dev/null +++ b/YuMi/Assets.xcassets/Monents/monents_publish.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "monents_publish@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "monents_publish@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Monents/monents_publish.imageset/monents_publish@2x.png b/YuMi/Assets.xcassets/Monents/monents_publish.imageset/monents_publish@2x.png new file mode 100644 index 00000000..a4496b51 Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_publish.imageset/monents_publish@2x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_publish.imageset/monents_publish@3x.png b/YuMi/Assets.xcassets/Monents/monents_publish.imageset/monents_publish@3x.png new file mode 100644 index 00000000..000f93db Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_publish.imageset/monents_publish@3x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_publish_album_delete.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/monents_publish_album_delete.imageset/Contents.json new file mode 100644 index 00000000..8bee35df --- /dev/null +++ b/YuMi/Assets.xcassets/Monents/monents_publish_album_delete.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "monents_publish_album_delete@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "monents_publish_album_delete@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Monents/monents_publish_album_delete.imageset/monents_publish_album_delete@2x.png b/YuMi/Assets.xcassets/Monents/monents_publish_album_delete.imageset/monents_publish_album_delete@2x.png new file mode 100644 index 00000000..934db9e4 Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_publish_album_delete.imageset/monents_publish_album_delete@2x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_publish_album_delete.imageset/monents_publish_album_delete@3x.png b/YuMi/Assets.xcassets/Monents/monents_publish_album_delete.imageset/monents_publish_album_delete@3x.png new file mode 100644 index 00000000..f577953a Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_publish_album_delete.imageset/monents_publish_album_delete@3x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_publish_delete.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/monents_publish_delete.imageset/Contents.json new file mode 100644 index 00000000..879f91ed --- /dev/null +++ b/YuMi/Assets.xcassets/Monents/monents_publish_delete.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "monents_publish_delete@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "monents_publish_delete@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Monents/monents_publish_delete.imageset/monents_publish_delete@2x.png b/YuMi/Assets.xcassets/Monents/monents_publish_delete.imageset/monents_publish_delete@2x.png new file mode 100644 index 00000000..e0f76790 Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_publish_delete.imageset/monents_publish_delete@2x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_publish_delete.imageset/monents_publish_delete@3x.png b/YuMi/Assets.xcassets/Monents/monents_publish_delete.imageset/monents_publish_delete@3x.png new file mode 100644 index 00000000..f260d498 Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_publish_delete.imageset/monents_publish_delete@3x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_publish_success_icon.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/monents_publish_success_icon.imageset/Contents.json new file mode 100644 index 00000000..31289eea --- /dev/null +++ b/YuMi/Assets.xcassets/Monents/monents_publish_success_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "monents_publish_success_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "monents_publish_success_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Monents/monents_publish_success_icon.imageset/monents_publish_success_icon@2x.png b/YuMi/Assets.xcassets/Monents/monents_publish_success_icon.imageset/monents_publish_success_icon@2x.png new file mode 100644 index 00000000..ec4ddb06 Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_publish_success_icon.imageset/monents_publish_success_icon@2x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_publish_success_icon.imageset/monents_publish_success_icon@3x.png b/YuMi/Assets.xcassets/Monents/monents_publish_success_icon.imageset/monents_publish_success_icon@3x.png new file mode 100644 index 00000000..05baacf9 Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_publish_success_icon.imageset/monents_publish_success_icon@3x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_topic_camera.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/monents_topic_camera.imageset/Contents.json new file mode 100644 index 00000000..8e6f8ea0 --- /dev/null +++ b/YuMi/Assets.xcassets/Monents/monents_topic_camera.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "monents_topic_camera@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "monents_topic_camera@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Monents/monents_topic_camera.imageset/monents_topic_camera@2x.png b/YuMi/Assets.xcassets/Monents/monents_topic_camera.imageset/monents_topic_camera@2x.png new file mode 100644 index 00000000..38314013 Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_topic_camera.imageset/monents_topic_camera@2x.png differ diff --git a/YuMi/Assets.xcassets/Monents/monents_topic_camera.imageset/monents_topic_camera@3x.png b/YuMi/Assets.xcassets/Monents/monents_topic_camera.imageset/monents_topic_camera@3x.png new file mode 100644 index 00000000..98de734e Binary files /dev/null and b/YuMi/Assets.xcassets/Monents/monents_topic_camera.imageset/monents_topic_camera@3x.png differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_moment_camera.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/yumi_moment_camera.imageset/Contents.json deleted file mode 100644 index a88a36cd..00000000 --- a/YuMi/Assets.xcassets/Monents/yumi_moment_camera.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_moment_camera@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_moment_camera@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Monents/yumi_moment_camera.imageset/yumi_moment_camera@2x.png b/YuMi/Assets.xcassets/Monents/yumi_moment_camera.imageset/yumi_moment_camera@2x.png deleted file mode 100644 index a4de235f..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_moment_camera.imageset/yumi_moment_camera@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_moment_camera.imageset/yumi_moment_camera@3x.png b/YuMi/Assets.xcassets/Monents/yumi_moment_camera.imageset/yumi_moment_camera@3x.png deleted file mode 100644 index 103773b7..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_moment_camera.imageset/yumi_moment_camera@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_comment_count.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/yumi_monents_gen_comment_count.imageset/Contents.json deleted file mode 100644 index 48e64bfb..00000000 --- a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_comment_count.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_monents_gen_comment_count@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_monents_gen_comment_count@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_comment_count.imageset/yumi_monents_gen_comment_count@2x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_gen_comment_count.imageset/yumi_monents_gen_comment_count@2x.png deleted file mode 100644 index 2c13e409..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_comment_count.imageset/yumi_monents_gen_comment_count@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_comment_count.imageset/yumi_monents_gen_comment_count@3x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_gen_comment_count.imageset/yumi_monents_gen_comment_count@3x.png deleted file mode 100644 index 418873ce..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_comment_count.imageset/yumi_monents_gen_comment_count@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_count_normal.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_count_normal.imageset/Contents.json deleted file mode 100644 index fe4be338..00000000 --- a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_count_normal.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_monents_gen_like_count_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_monents_gen_like_count_normal@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_count_normal.imageset/yumi_monents_gen_like_count_normal@2x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_count_normal.imageset/yumi_monents_gen_like_count_normal@2x.png deleted file mode 100644 index 26922663..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_count_normal.imageset/yumi_monents_gen_like_count_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_count_normal.imageset/yumi_monents_gen_like_count_normal@3x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_count_normal.imageset/yumi_monents_gen_like_count_normal@3x.png deleted file mode 100644 index 166c7f76..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_count_normal.imageset/yumi_monents_gen_like_count_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_count_select.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_count_select.imageset/Contents.json deleted file mode 100644 index 7a063227..00000000 --- a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_count_select.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_monents_gen_like_count_select@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_monents_gen_like_count_select@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_count_select.imageset/yumi_monents_gen_like_count_select@2x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_count_select.imageset/yumi_monents_gen_like_count_select@2x.png deleted file mode 100644 index 7ff908d3..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_count_select.imageset/yumi_monents_gen_like_count_select@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_count_select.imageset/yumi_monents_gen_like_count_select@3x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_count_select.imageset/yumi_monents_gen_like_count_select@3x.png deleted file mode 100644 index 25d5e103..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_count_select.imageset/yumi_monents_gen_like_count_select@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_report.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_report.imageset/Contents.json deleted file mode 100644 index de5e52df..00000000 --- a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_report.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_monents_gen_like_report@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_monents_gen_like_report@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_report.imageset/yumi_monents_gen_like_report@2x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_report.imageset/yumi_monents_gen_like_report@2x.png deleted file mode 100644 index eedd6542..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_report.imageset/yumi_monents_gen_like_report@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_report.imageset/yumi_monents_gen_like_report@3x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_report.imageset/yumi_monents_gen_like_report@3x.png deleted file mode 100644 index 13d53fa7..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_report.imageset/yumi_monents_gen_like_report@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_share.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_share.imageset/Contents.json deleted file mode 100644 index 7a8bad94..00000000 --- a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_share.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_monents_gen_like_share@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_monents_gen_like_share@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_share.imageset/yumi_monents_gen_like_share@2x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_share.imageset/yumi_monents_gen_like_share@2x.png deleted file mode 100644 index aabc5f93..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_share.imageset/yumi_monents_gen_like_share@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_share.imageset/yumi_monents_gen_like_share@3x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_share.imageset/yumi_monents_gen_like_share@3x.png deleted file mode 100644 index fc557c07..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_like_share.imageset/yumi_monents_gen_like_share@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_top.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/yumi_monents_gen_top.imageset/Contents.json deleted file mode 100644 index dc79b56b..00000000 --- a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_top.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_monents_gen_top@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_monents_gen_top@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_top.imageset/yumi_monents_gen_top@2x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_gen_top.imageset/yumi_monents_gen_top@2x.png deleted file mode 100644 index 671f72b1..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_top.imageset/yumi_monents_gen_top@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_top.imageset/yumi_monents_gen_top@3x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_gen_top.imageset/yumi_monents_gen_top@3x.png deleted file mode 100644 index 3bf9f37d..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_top.imageset/yumi_monents_gen_top@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_topimage_pic.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/yumi_monents_gen_topimage_pic.imageset/Contents.json deleted file mode 100644 index 407a9e31..00000000 --- a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_topimage_pic.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_monents_gen_topimage_pic@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_monents_gen_topimage_pic@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_topimage_pic.imageset/yumi_monents_gen_topimage_pic@2x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_gen_topimage_pic.imageset/yumi_monents_gen_topimage_pic@2x.png deleted file mode 100644 index c29578bf..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_topimage_pic.imageset/yumi_monents_gen_topimage_pic@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_topimage_pic.imageset/yumi_monents_gen_topimage_pic@3x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_gen_topimage_pic.imageset/yumi_monents_gen_topimage_pic@3x.png deleted file mode 100644 index cd0b14b6..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_gen_topimage_pic.imageset/yumi_monents_gen_topimage_pic@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_interactive_delete_message.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/yumi_monents_interactive_delete_message.imageset/Contents.json deleted file mode 100644 index da514b24..00000000 --- a/YuMi/Assets.xcassets/Monents/yumi_monents_interactive_delete_message.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_monents_interactive_delete_message@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_monents_interactive_delete_message@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_interactive_delete_message.imageset/yumi_monents_interactive_delete_message@2x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_interactive_delete_message.imageset/yumi_monents_interactive_delete_message@2x.png deleted file mode 100644 index 5001dae1..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_interactive_delete_message.imageset/yumi_monents_interactive_delete_message@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_interactive_delete_message.imageset/yumi_monents_interactive_delete_message@3x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_interactive_delete_message.imageset/yumi_monents_interactive_delete_message@3x.png deleted file mode 100644 index d9195e9a..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_interactive_delete_message.imageset/yumi_monents_interactive_delete_message@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_publish.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/yumi_monents_publish.imageset/Contents.json deleted file mode 100644 index 9df253ec..00000000 --- a/YuMi/Assets.xcassets/Monents/yumi_monents_publish.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_monents_publish@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_monents_publish@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_publish.imageset/yumi_monents_publish@2x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_publish.imageset/yumi_monents_publish@2x.png deleted file mode 100644 index 62ad223b..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_publish.imageset/yumi_monents_publish@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_publish.imageset/yumi_monents_publish@3x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_publish.imageset/yumi_monents_publish@3x.png deleted file mode 100644 index 255a044c..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_publish.imageset/yumi_monents_publish@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_publish_album_delete.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/yumi_monents_publish_album_delete.imageset/Contents.json deleted file mode 100644 index 4ce19a68..00000000 --- a/YuMi/Assets.xcassets/Monents/yumi_monents_publish_album_delete.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_monents_publish_album_delete@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_monents_publish_album_delete@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_publish_album_delete.imageset/yumi_monents_publish_album_delete@2x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_publish_album_delete.imageset/yumi_monents_publish_album_delete@2x.png deleted file mode 100644 index 57669b83..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_publish_album_delete.imageset/yumi_monents_publish_album_delete@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_publish_album_delete.imageset/yumi_monents_publish_album_delete@3x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_publish_album_delete.imageset/yumi_monents_publish_album_delete@3x.png deleted file mode 100644 index 54c20b85..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_publish_album_delete.imageset/yumi_monents_publish_album_delete@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_publish_delete.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/yumi_monents_publish_delete.imageset/Contents.json deleted file mode 100644 index 484c73b4..00000000 --- a/YuMi/Assets.xcassets/Monents/yumi_monents_publish_delete.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_monents_publish_delete@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_monents_publish_delete@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_publish_delete.imageset/yumi_monents_publish_delete@2x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_publish_delete.imageset/yumi_monents_publish_delete@2x.png deleted file mode 100644 index 2242e27c..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_publish_delete.imageset/yumi_monents_publish_delete@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_publish_delete.imageset/yumi_monents_publish_delete@3x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_publish_delete.imageset/yumi_monents_publish_delete@3x.png deleted file mode 100644 index 5258cd81..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_publish_delete.imageset/yumi_monents_publish_delete@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_publish_success_pic.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/yumi_monents_publish_success_pic.imageset/Contents.json deleted file mode 100644 index c81d28ee..00000000 --- a/YuMi/Assets.xcassets/Monents/yumi_monents_publish_success_pic.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_monents_publish_success_pic@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_monents_publish_success_pic@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_publish_success_pic.imageset/yumi_monents_publish_success_pic@2x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_publish_success_pic.imageset/yumi_monents_publish_success_pic@2x.png deleted file mode 100644 index 5111a7c4..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_publish_success_pic.imageset/yumi_monents_publish_success_pic@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_publish_success_pic.imageset/yumi_monents_publish_success_pic@3x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_publish_success_pic.imageset/yumi_monents_publish_success_pic@3x.png deleted file mode 100644 index abfa6053..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_publish_success_pic.imageset/yumi_monents_publish_success_pic@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_same_landLordFlag.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/yumi_monents_same_landLordFlag.imageset/Contents.json deleted file mode 100644 index 50003d25..00000000 --- a/YuMi/Assets.xcassets/Monents/yumi_monents_same_landLordFlag.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_monents_same_landLordFlag@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_monents_same_landLordFlag@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_same_landLordFlag.imageset/yumi_monents_same_landLordFlag@2x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_same_landLordFlag.imageset/yumi_monents_same_landLordFlag@2x.png deleted file mode 100644 index 0d99dc8d..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_same_landLordFlag.imageset/yumi_monents_same_landLordFlag@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_same_landLordFlag.imageset/yumi_monents_same_landLordFlag@3x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_same_landLordFlag.imageset/yumi_monents_same_landLordFlag@3x.png deleted file mode 100644 index 495d6f16..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_same_landLordFlag.imageset/yumi_monents_same_landLordFlag@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_title_interavtive_message.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/yumi_monents_title_interavtive_message.imageset/Contents.json deleted file mode 100644 index 524ef95a..00000000 --- a/YuMi/Assets.xcassets/Monents/yumi_monents_title_interavtive_message.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_monents_title_interavtive_message@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_monents_title_interavtive_message@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_title_interavtive_message.imageset/yumi_monents_title_interavtive_message@2x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_title_interavtive_message.imageset/yumi_monents_title_interavtive_message@2x.png deleted file mode 100644 index ba209c7d..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_title_interavtive_message.imageset/yumi_monents_title_interavtive_message@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_title_interavtive_message.imageset/yumi_monents_title_interavtive_message@3x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_title_interavtive_message.imageset/yumi_monents_title_interavtive_message@3x.png deleted file mode 100644 index f073fef0..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_title_interavtive_message.imageset/yumi_monents_title_interavtive_message@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_topimage_camera.imageset/Contents.json b/YuMi/Assets.xcassets/Monents/yumi_monents_topimage_camera.imageset/Contents.json deleted file mode 100644 index 560810f9..00000000 --- a/YuMi/Assets.xcassets/Monents/yumi_monents_topimage_camera.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_monents_topimage_camera@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_monents_topimage_camera@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_topimage_camera.imageset/yumi_monents_topimage_camera@2x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_topimage_camera.imageset/yumi_monents_topimage_camera@2x.png deleted file mode 100644 index 36dc130b..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_topimage_camera.imageset/yumi_monents_topimage_camera@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/Monents/yumi_monents_topimage_camera.imageset/yumi_monents_topimage_camera@3x.png b/YuMi/Assets.xcassets/Monents/yumi_monents_topimage_camera.imageset/yumi_monents_topimage_camera@3x.png deleted file mode 100644 index 115b717c..00000000 Binary files a/YuMi/Assets.xcassets/Monents/yumi_monents_topimage_camera.imageset/yumi_monents_topimage_camera@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/Contents.json b/YuMi/Assets.xcassets/chat/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/chat/Contents.json +++ b/YuMi/Assets.xcassets/chat/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/SayHello/Contents.json b/YuMi/Assets.xcassets/chat/SayHello/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/chat/SayHello/Contents.json +++ b/YuMi/Assets.xcassets/chat/SayHello/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/SayHello/session_list_hello_enter.imageset/Contents.json b/YuMi/Assets.xcassets/chat/SayHello/session_list_hello_enter.imageset/Contents.json new file mode 100644 index 00000000..c3471424 --- /dev/null +++ b/YuMi/Assets.xcassets/chat/SayHello/session_list_hello_enter.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "session_list_hello_enter@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "session_list_hello_enter@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/SayHello/session_list_hello_enter.imageset/session_list_hello_enter@2x.png b/YuMi/Assets.xcassets/chat/SayHello/session_list_hello_enter.imageset/session_list_hello_enter@2x.png new file mode 100644 index 00000000..bc14b9a8 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/SayHello/session_list_hello_enter.imageset/session_list_hello_enter@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/SayHello/session_list_hello_enter.imageset/session_list_hello_enter@3x.png b/YuMi/Assets.xcassets/chat/SayHello/session_list_hello_enter.imageset/session_list_hello_enter@3x.png new file mode 100644 index 00000000..60c2aa40 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/SayHello/session_list_hello_enter.imageset/session_list_hello_enter@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/SayHello/session_say_hello_content_bg.imageset/Contents.json b/YuMi/Assets.xcassets/chat/SayHello/session_say_hello_content_bg.imageset/Contents.json new file mode 100644 index 00000000..789030a3 --- /dev/null +++ b/YuMi/Assets.xcassets/chat/SayHello/session_say_hello_content_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "session_say_hello_content_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "session_say_hello_content_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/SayHello/session_say_hello_content_bg.imageset/session_say_hello_content_bg@2x.png b/YuMi/Assets.xcassets/chat/SayHello/session_say_hello_content_bg.imageset/session_say_hello_content_bg@2x.png new file mode 100644 index 00000000..a9b5995e Binary files /dev/null and b/YuMi/Assets.xcassets/chat/SayHello/session_say_hello_content_bg.imageset/session_say_hello_content_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/SayHello/session_say_hello_content_bg.imageset/session_say_hello_content_bg@3x.png b/YuMi/Assets.xcassets/chat/SayHello/session_say_hello_content_bg.imageset/session_say_hello_content_bg@3x.png new file mode 100644 index 00000000..84f9641a Binary files /dev/null and b/YuMi/Assets.xcassets/chat/SayHello/session_say_hello_content_bg.imageset/session_say_hello_content_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/SayHello/session_say_hello_list_bg.imageset/Contents.json b/YuMi/Assets.xcassets/chat/SayHello/session_say_hello_list_bg.imageset/Contents.json new file mode 100644 index 00000000..bb96ba54 --- /dev/null +++ b/YuMi/Assets.xcassets/chat/SayHello/session_say_hello_list_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "session_say_hello_list_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "session_say_hello_list_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/SayHello/session_say_hello_list_bg.imageset/session_say_hello_list_bg@2x.png b/YuMi/Assets.xcassets/chat/SayHello/session_say_hello_list_bg.imageset/session_say_hello_list_bg@2x.png new file mode 100644 index 00000000..cb04d156 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/SayHello/session_say_hello_list_bg.imageset/session_say_hello_list_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/SayHello/session_say_hello_list_bg.imageset/session_say_hello_list_bg@3x.png b/YuMi/Assets.xcassets/chat/SayHello/session_say_hello_list_bg.imageset/session_say_hello_list_bg@3x.png new file mode 100644 index 00000000..8ca73f4f Binary files /dev/null and b/YuMi/Assets.xcassets/chat/SayHello/session_say_hello_list_bg.imageset/session_say_hello_list_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/SayHello/yumi_term_list_hello_enter.imageset/Contents.json b/YuMi/Assets.xcassets/chat/SayHello/yumi_term_list_hello_enter.imageset/Contents.json deleted file mode 100644 index 910392d9..00000000 --- a/YuMi/Assets.xcassets/chat/SayHello/yumi_term_list_hello_enter.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_term_list_hello_enter@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_term_list_hello_enter@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/SayHello/yumi_term_list_hello_enter.imageset/yumi_term_list_hello_enter@2x.png b/YuMi/Assets.xcassets/chat/SayHello/yumi_term_list_hello_enter.imageset/yumi_term_list_hello_enter@2x.png deleted file mode 100644 index 6b43980d..00000000 Binary files a/YuMi/Assets.xcassets/chat/SayHello/yumi_term_list_hello_enter.imageset/yumi_term_list_hello_enter@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/SayHello/yumi_term_list_hello_enter.imageset/yumi_term_list_hello_enter@3x.png b/YuMi/Assets.xcassets/chat/SayHello/yumi_term_list_hello_enter.imageset/yumi_term_list_hello_enter@3x.png deleted file mode 100644 index 3d5204d8..00000000 Binary files a/YuMi/Assets.xcassets/chat/SayHello/yumi_term_list_hello_enter.imageset/yumi_term_list_hello_enter@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/SayHello/yumi_term_say_hello_list_background.imageset/Contents.json b/YuMi/Assets.xcassets/chat/SayHello/yumi_term_say_hello_list_background.imageset/Contents.json deleted file mode 100644 index 80754d0a..00000000 --- a/YuMi/Assets.xcassets/chat/SayHello/yumi_term_say_hello_list_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_term_say_hello_list_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_term_say_hello_list_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/SayHello/yumi_term_say_hello_list_background.imageset/yumi_term_say_hello_list_background@2x.png b/YuMi/Assets.xcassets/chat/SayHello/yumi_term_say_hello_list_background.imageset/yumi_term_say_hello_list_background@2x.png deleted file mode 100644 index 27765729..00000000 Binary files a/YuMi/Assets.xcassets/chat/SayHello/yumi_term_say_hello_list_background.imageset/yumi_term_say_hello_list_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/SayHello/yumi_term_say_hello_list_background.imageset/yumi_term_say_hello_list_background@3x.png b/YuMi/Assets.xcassets/chat/SayHello/yumi_term_say_hello_list_background.imageset/yumi_term_say_hello_list_background@3x.png deleted file mode 100644 index bbc3f9c4..00000000 Binary files a/YuMi/Assets.xcassets/chat/SayHello/yumi_term_say_hello_list_background.imageset/yumi_term_say_hello_list_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/SayHello/yumi_term_say_hello_matter_background.imageset/Contents.json b/YuMi/Assets.xcassets/chat/SayHello/yumi_term_say_hello_matter_background.imageset/Contents.json deleted file mode 100644 index fafeb551..00000000 --- a/YuMi/Assets.xcassets/chat/SayHello/yumi_term_say_hello_matter_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_term_say_hello_matter_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_term_say_hello_matter_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/SayHello/yumi_term_say_hello_matter_background.imageset/yumi_term_say_hello_matter_background@2x.png b/YuMi/Assets.xcassets/chat/SayHello/yumi_term_say_hello_matter_background.imageset/yumi_term_say_hello_matter_background@2x.png deleted file mode 100644 index ae5567d4..00000000 Binary files a/YuMi/Assets.xcassets/chat/SayHello/yumi_term_say_hello_matter_background.imageset/yumi_term_say_hello_matter_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/SayHello/yumi_term_say_hello_matter_background.imageset/yumi_term_say_hello_matter_background@3x.png b/YuMi/Assets.xcassets/chat/SayHello/yumi_term_say_hello_matter_background.imageset/yumi_term_say_hello_matter_background@3x.png deleted file mode 100644 index c2f91761..00000000 Binary files a/YuMi/Assets.xcassets/chat/SayHello/yumi_term_say_hello_matter_background.imageset/yumi_term_say_hello_matter_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/SessionListHead/Contents.json b/YuMi/Assets.xcassets/chat/SessionListHead/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/chat/SessionListHead/Contents.json +++ b/YuMi/Assets.xcassets/chat/SessionListHead/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_activity.imageset/Contents.json b/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_activity.imageset/Contents.json new file mode 100644 index 00000000..a6a4fbd2 --- /dev/null +++ b/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_activity.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "session_list_head_activity@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "session_list_head_activity@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_activity.imageset/session_list_head_activity@2x.png b/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_activity.imageset/session_list_head_activity@2x.png new file mode 100644 index 00000000..94c6ee84 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_activity.imageset/session_list_head_activity@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_activity.imageset/session_list_head_activity@3x.png b/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_activity.imageset/session_list_head_activity@3x.png new file mode 100644 index 00000000..ea897951 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_activity.imageset/session_list_head_activity@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_mengxin.imageset/Contents.json b/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_mengxin.imageset/Contents.json new file mode 100644 index 00000000..a60ee414 --- /dev/null +++ b/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_mengxin.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "session_list_head_mengxin@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "session_list_head_mengxin@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_mengxin.imageset/session_list_head_mengxin@2x.png b/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_mengxin.imageset/session_list_head_mengxin@2x.png new file mode 100644 index 00000000..733f925b Binary files /dev/null and b/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_mengxin.imageset/session_list_head_mengxin@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_mengxin.imageset/session_list_head_mengxin@3x.png b/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_mengxin.imageset/session_list_head_mengxin@3x.png new file mode 100644 index 00000000..5eedede6 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_mengxin.imageset/session_list_head_mengxin@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_office.imageset/Contents.json b/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_office.imageset/Contents.json new file mode 100644 index 00000000..996cd41d --- /dev/null +++ b/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_office.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "session_list_head_office@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "session_list_head_office@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_office.imageset/session_list_head_office@2x.png b/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_office.imageset/session_list_head_office@2x.png new file mode 100644 index 00000000..730124aa Binary files /dev/null and b/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_office.imageset/session_list_head_office@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_office.imageset/session_list_head_office@3x.png b/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_office.imageset/session_list_head_office@3x.png new file mode 100644 index 00000000..358123bd Binary files /dev/null and b/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_office.imageset/session_list_head_office@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_subscribe.imageset/Contents.json b/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_subscribe.imageset/Contents.json new file mode 100644 index 00000000..3e8a2cb8 --- /dev/null +++ b/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_subscribe.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "session_list_head_subscribe@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "session_list_head_subscribe@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_subscribe.imageset/session_list_head_subscribe@2x.png b/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_subscribe.imageset/session_list_head_subscribe@2x.png new file mode 100644 index 00000000..72e391c7 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_subscribe.imageset/session_list_head_subscribe@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_subscribe.imageset/session_list_head_subscribe@3x.png b/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_subscribe.imageset/session_list_head_subscribe@3x.png new file mode 100644 index 00000000..1070398f Binary files /dev/null and b/YuMi/Assets.xcassets/chat/SessionListHead/session_list_head_subscribe.imageset/session_list_head_subscribe@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_activity.imageset/Contents.json b/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_activity.imageset/Contents.json deleted file mode 100644 index 963a1e9b..00000000 --- a/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_activity.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_term_list_head_activity@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_term_list_head_activity@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_activity.imageset/yumi_term_list_head_activity@2x.png b/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_activity.imageset/yumi_term_list_head_activity@2x.png deleted file mode 100644 index 503e3fca..00000000 Binary files a/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_activity.imageset/yumi_term_list_head_activity@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_activity.imageset/yumi_term_list_head_activity@3x.png b/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_activity.imageset/yumi_term_list_head_activity@3x.png deleted file mode 100644 index 9ce40f95..00000000 Binary files a/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_activity.imageset/yumi_term_list_head_activity@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_mengxin.imageset/Contents.json b/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_mengxin.imageset/Contents.json deleted file mode 100644 index ed1d5b0b..00000000 --- a/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_mengxin.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_term_list_head_mengxin@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_term_list_head_mengxin@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_mengxin.imageset/yumi_term_list_head_mengxin@2x.png b/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_mengxin.imageset/yumi_term_list_head_mengxin@2x.png deleted file mode 100644 index 7f5a93a4..00000000 Binary files a/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_mengxin.imageset/yumi_term_list_head_mengxin@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_mengxin.imageset/yumi_term_list_head_mengxin@3x.png b/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_mengxin.imageset/yumi_term_list_head_mengxin@3x.png deleted file mode 100644 index 6586d9e5..00000000 Binary files a/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_mengxin.imageset/yumi_term_list_head_mengxin@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_office.imageset/Contents.json b/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_office.imageset/Contents.json deleted file mode 100644 index c43f436a..00000000 --- a/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_office.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_term_list_head_office@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_term_list_head_office@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_office.imageset/yumi_term_list_head_office@2x.png b/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_office.imageset/yumi_term_list_head_office@2x.png deleted file mode 100644 index a7e1698b..00000000 Binary files a/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_office.imageset/yumi_term_list_head_office@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_office.imageset/yumi_term_list_head_office@3x.png b/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_office.imageset/yumi_term_list_head_office@3x.png deleted file mode 100644 index 5293fc0e..00000000 Binary files a/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_office.imageset/yumi_term_list_head_office@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_subscribe.imageset/Contents.json b/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_subscribe.imageset/Contents.json deleted file mode 100644 index 6b5579ac..00000000 --- a/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_subscribe.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_term_list_head_subscribe@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_term_list_head_subscribe@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_subscribe.imageset/yumi_term_list_head_subscribe@2x.png b/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_subscribe.imageset/yumi_term_list_head_subscribe@2x.png deleted file mode 100644 index b572dd98..00000000 Binary files a/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_subscribe.imageset/yumi_term_list_head_subscribe@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_subscribe.imageset/yumi_term_list_head_subscribe@3x.png b/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_subscribe.imageset/yumi_term_list_head_subscribe@3x.png deleted file mode 100644 index 39fdc59f..00000000 Binary files a/YuMi/Assets.xcassets/chat/SessionListHead/yumi_term_list_head_subscribe.imageset/yumi_term_list_head_subscribe@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/message_content_audio_playing_first.imageset/Contents.json b/YuMi/Assets.xcassets/chat/message_content_audio_playing_first.imageset/Contents.json new file mode 100644 index 00000000..a93d4b8e --- /dev/null +++ b/YuMi/Assets.xcassets/chat/message_content_audio_playing_first.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_content_audio_playing_first@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_content_audio_playing_first@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/message_content_audio_playing_first.imageset/message_content_audio_playing_first@2x.png b/YuMi/Assets.xcassets/chat/message_content_audio_playing_first.imageset/message_content_audio_playing_first@2x.png new file mode 100644 index 00000000..ec4fff32 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_content_audio_playing_first.imageset/message_content_audio_playing_first@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_content_audio_playing_first.imageset/message_content_audio_playing_first@3x.png b/YuMi/Assets.xcassets/chat/message_content_audio_playing_first.imageset/message_content_audio_playing_first@3x.png new file mode 100644 index 00000000..8e9a468f Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_content_audio_playing_first.imageset/message_content_audio_playing_first@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_content_audio_playing_second.imageset/Contents.json b/YuMi/Assets.xcassets/chat/message_content_audio_playing_second.imageset/Contents.json new file mode 100644 index 00000000..85d2372c --- /dev/null +++ b/YuMi/Assets.xcassets/chat/message_content_audio_playing_second.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_content_audio_playing_second@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_content_audio_playing_second@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/message_content_audio_playing_second.imageset/message_content_audio_playing_second@2x.png b/YuMi/Assets.xcassets/chat/message_content_audio_playing_second.imageset/message_content_audio_playing_second@2x.png new file mode 100644 index 00000000..87686773 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_content_audio_playing_second.imageset/message_content_audio_playing_second@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_content_audio_playing_second.imageset/message_content_audio_playing_second@3x.png b/YuMi/Assets.xcassets/chat/message_content_audio_playing_second.imageset/message_content_audio_playing_second@3x.png new file mode 100644 index 00000000..f2a4fd19 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_content_audio_playing_second.imageset/message_content_audio_playing_second@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_content_audio_playing_third.imageset/Contents.json b/YuMi/Assets.xcassets/chat/message_content_audio_playing_third.imageset/Contents.json new file mode 100644 index 00000000..6b012716 --- /dev/null +++ b/YuMi/Assets.xcassets/chat/message_content_audio_playing_third.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_content_audio_playing_third@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_content_audio_playing_third@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/message_content_audio_playing_third.imageset/message_content_audio_playing_third@2x.png b/YuMi/Assets.xcassets/chat/message_content_audio_playing_third.imageset/message_content_audio_playing_third@2x.png new file mode 100644 index 00000000..5d9d85fc Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_content_audio_playing_third.imageset/message_content_audio_playing_third@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_content_audio_playing_third.imageset/message_content_audio_playing_third@3x.png b/YuMi/Assets.xcassets/chat/message_content_audio_playing_third.imageset/message_content_audio_playing_third@3x.png new file mode 100644 index 00000000..f1a0db52 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_content_audio_playing_third.imageset/message_content_audio_playing_third@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_content_upgrade_charm.imageset/Contents.json b/YuMi/Assets.xcassets/chat/message_content_upgrade_charm.imageset/Contents.json new file mode 100644 index 00000000..7306c502 --- /dev/null +++ b/YuMi/Assets.xcassets/chat/message_content_upgrade_charm.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_content_upgrade_charm@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_content_upgrade_charm@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/message_content_upgrade_charm.imageset/message_content_upgrade_charm@2x.png b/YuMi/Assets.xcassets/chat/message_content_upgrade_charm.imageset/message_content_upgrade_charm@2x.png new file mode 100644 index 00000000..1f20a022 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_content_upgrade_charm.imageset/message_content_upgrade_charm@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_content_upgrade_charm.imageset/message_content_upgrade_charm@3x.png b/YuMi/Assets.xcassets/chat/message_content_upgrade_charm.imageset/message_content_upgrade_charm@3x.png new file mode 100644 index 00000000..f281ebf3 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_content_upgrade_charm.imageset/message_content_upgrade_charm@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_content_upgrade_expre.imageset/Contents.json b/YuMi/Assets.xcassets/chat/message_content_upgrade_expre.imageset/Contents.json new file mode 100644 index 00000000..baecfffe --- /dev/null +++ b/YuMi/Assets.xcassets/chat/message_content_upgrade_expre.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_content_upgrade_expre@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_content_upgrade_expre@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/message_content_upgrade_expre.imageset/message_content_upgrade_expre@2x.png b/YuMi/Assets.xcassets/chat/message_content_upgrade_expre.imageset/message_content_upgrade_expre@2x.png new file mode 100644 index 00000000..e456a2a5 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_content_upgrade_expre.imageset/message_content_upgrade_expre@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_content_upgrade_expre.imageset/message_content_upgrade_expre@3x.png b/YuMi/Assets.xcassets/chat/message_content_upgrade_expre.imageset/message_content_upgrade_expre@3x.png new file mode 100644 index 00000000..f00ef345 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_content_upgrade_expre.imageset/message_content_upgrade_expre@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_session_download_fail.imageset/Contents.json b/YuMi/Assets.xcassets/chat/message_session_download_fail.imageset/Contents.json new file mode 100644 index 00000000..5323689e --- /dev/null +++ b/YuMi/Assets.xcassets/chat/message_session_download_fail.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_session_download_fail@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_session_download_fail@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/message_session_download_fail.imageset/message_session_download_fail@2x.png b/YuMi/Assets.xcassets/chat/message_session_download_fail.imageset/message_session_download_fail@2x.png new file mode 100644 index 00000000..6e0d6cf4 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_session_download_fail.imageset/message_session_download_fail@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_session_download_fail.imageset/message_session_download_fail@3x.png b/YuMi/Assets.xcassets/chat/message_session_download_fail.imageset/message_session_download_fail@3x.png new file mode 100644 index 00000000..00ff77be Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_session_download_fail.imageset/message_session_download_fail@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_session_find_new_filtrate.imageset/Contents.json b/YuMi/Assets.xcassets/chat/message_session_find_new_filtrate.imageset/Contents.json new file mode 100644 index 00000000..b01c2cbe --- /dev/null +++ b/YuMi/Assets.xcassets/chat/message_session_find_new_filtrate.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_session_find_new_filtrate@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_session_find_new_filtrate@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/message_session_find_new_filtrate.imageset/message_session_find_new_filtrate@2x.png b/YuMi/Assets.xcassets/chat/message_session_find_new_filtrate.imageset/message_session_find_new_filtrate@2x.png new file mode 100644 index 00000000..250a3a13 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_session_find_new_filtrate.imageset/message_session_find_new_filtrate@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_session_find_new_filtrate.imageset/message_session_find_new_filtrate@3x.png b/YuMi/Assets.xcassets/chat/message_session_find_new_filtrate.imageset/message_session_find_new_filtrate@3x.png new file mode 100644 index 00000000..2300a50e Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_session_find_new_filtrate.imageset/message_session_find_new_filtrate@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_session_menu_camera.imageset/Contents.json b/YuMi/Assets.xcassets/chat/message_session_menu_camera.imageset/Contents.json new file mode 100644 index 00000000..42b77a8a --- /dev/null +++ b/YuMi/Assets.xcassets/chat/message_session_menu_camera.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_session_menu_camera@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_session_menu_camera@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/message_session_menu_camera.imageset/message_session_menu_camera@2x.png b/YuMi/Assets.xcassets/chat/message_session_menu_camera.imageset/message_session_menu_camera@2x.png new file mode 100644 index 00000000..f8ef8524 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_session_menu_camera.imageset/message_session_menu_camera@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_session_menu_camera.imageset/message_session_menu_camera@3x.png b/YuMi/Assets.xcassets/chat/message_session_menu_camera.imageset/message_session_menu_camera@3x.png new file mode 100644 index 00000000..44efe4d1 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_session_menu_camera.imageset/message_session_menu_camera@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_session_menu_gift.imageset/Contents.json b/YuMi/Assets.xcassets/chat/message_session_menu_gift.imageset/Contents.json new file mode 100644 index 00000000..21f0b965 --- /dev/null +++ b/YuMi/Assets.xcassets/chat/message_session_menu_gift.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_session_menu_gift@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_session_menu_gift@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/message_session_menu_gift.imageset/message_session_menu_gift@2x.png b/YuMi/Assets.xcassets/chat/message_session_menu_gift.imageset/message_session_menu_gift@2x.png new file mode 100644 index 00000000..7533aaca Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_session_menu_gift.imageset/message_session_menu_gift@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_session_menu_gift.imageset/message_session_menu_gift@3x.png b/YuMi/Assets.xcassets/chat/message_session_menu_gift.imageset/message_session_menu_gift@3x.png new file mode 100644 index 00000000..2fa4f8c5 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_session_menu_gift.imageset/message_session_menu_gift@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_session_menu_photo.imageset/Contents.json b/YuMi/Assets.xcassets/chat/message_session_menu_photo.imageset/Contents.json new file mode 100644 index 00000000..a1be4eb7 --- /dev/null +++ b/YuMi/Assets.xcassets/chat/message_session_menu_photo.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_session_menu_photo@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_session_menu_photo@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/message_session_menu_photo.imageset/message_session_menu_photo@2x.png b/YuMi/Assets.xcassets/chat/message_session_menu_photo.imageset/message_session_menu_photo@2x.png new file mode 100644 index 00000000..ad3ea8c6 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_session_menu_photo.imageset/message_session_menu_photo@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_session_menu_photo.imageset/message_session_menu_photo@3x.png b/YuMi/Assets.xcassets/chat/message_session_menu_photo.imageset/message_session_menu_photo@3x.png new file mode 100644 index 00000000..0ccc1f8d Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_session_menu_photo.imageset/message_session_menu_photo@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_session_nav_report.imageset/Contents.json b/YuMi/Assets.xcassets/chat/message_session_nav_report.imageset/Contents.json new file mode 100644 index 00000000..59cd74b0 --- /dev/null +++ b/YuMi/Assets.xcassets/chat/message_session_nav_report.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_session_nav_report@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_session_nav_report@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/message_session_nav_report.imageset/message_session_nav_report@2x.png b/YuMi/Assets.xcassets/chat/message_session_nav_report.imageset/message_session_nav_report@2x.png new file mode 100644 index 00000000..edc3b0ff Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_session_nav_report.imageset/message_session_nav_report@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_session_nav_report.imageset/message_session_nav_report@3x.png b/YuMi/Assets.xcassets/chat/message_session_nav_report.imageset/message_session_nav_report@3x.png new file mode 100644 index 00000000..13c4bbfe Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_session_nav_report.imageset/message_session_nav_report@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_tool_audio_record_cancel.imageset/Contents.json b/YuMi/Assets.xcassets/chat/message_tool_audio_record_cancel.imageset/Contents.json new file mode 100644 index 00000000..1411ebd9 --- /dev/null +++ b/YuMi/Assets.xcassets/chat/message_tool_audio_record_cancel.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_tool_audio_record_cancel@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_tool_audio_record_cancel@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/message_tool_audio_record_cancel.imageset/message_tool_audio_record_cancel@2x.png b/YuMi/Assets.xcassets/chat/message_tool_audio_record_cancel.imageset/message_tool_audio_record_cancel@2x.png new file mode 100644 index 00000000..2c3cc12f Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_tool_audio_record_cancel.imageset/message_tool_audio_record_cancel@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_tool_audio_record_cancel.imageset/message_tool_audio_record_cancel@3x.png b/YuMi/Assets.xcassets/chat/message_tool_audio_record_cancel.imageset/message_tool_audio_record_cancel@3x.png new file mode 100644 index 00000000..66e3656d Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_tool_audio_record_cancel.imageset/message_tool_audio_record_cancel@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_tool_audio_record_first.imageset/Contents.json b/YuMi/Assets.xcassets/chat/message_tool_audio_record_first.imageset/Contents.json new file mode 100644 index 00000000..9d755c44 --- /dev/null +++ b/YuMi/Assets.xcassets/chat/message_tool_audio_record_first.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_tool_audio_record_first@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_tool_audio_record_first@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/message_tool_audio_record_first.imageset/message_tool_audio_record_first@2x.png b/YuMi/Assets.xcassets/chat/message_tool_audio_record_first.imageset/message_tool_audio_record_first@2x.png new file mode 100644 index 00000000..0d7d0fab Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_tool_audio_record_first.imageset/message_tool_audio_record_first@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_tool_audio_record_first.imageset/message_tool_audio_record_first@3x.png b/YuMi/Assets.xcassets/chat/message_tool_audio_record_first.imageset/message_tool_audio_record_first@3x.png new file mode 100644 index 00000000..748ac525 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_tool_audio_record_first.imageset/message_tool_audio_record_first@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_tool_audio_record_second.imageset/Contents.json b/YuMi/Assets.xcassets/chat/message_tool_audio_record_second.imageset/Contents.json new file mode 100644 index 00000000..3dfe5921 --- /dev/null +++ b/YuMi/Assets.xcassets/chat/message_tool_audio_record_second.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_tool_audio_record_second@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_tool_audio_record_second@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/message_tool_audio_record_second.imageset/message_tool_audio_record_second@2x.png b/YuMi/Assets.xcassets/chat/message_tool_audio_record_second.imageset/message_tool_audio_record_second@2x.png new file mode 100644 index 00000000..a0030e76 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_tool_audio_record_second.imageset/message_tool_audio_record_second@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_tool_audio_record_second.imageset/message_tool_audio_record_second@3x.png b/YuMi/Assets.xcassets/chat/message_tool_audio_record_second.imageset/message_tool_audio_record_second@3x.png new file mode 100644 index 00000000..2a9a0b5c Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_tool_audio_record_second.imageset/message_tool_audio_record_second@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_tool_audio_record_third.imageset/Contents.json b/YuMi/Assets.xcassets/chat/message_tool_audio_record_third.imageset/Contents.json new file mode 100644 index 00000000..1b047132 --- /dev/null +++ b/YuMi/Assets.xcassets/chat/message_tool_audio_record_third.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_tool_audio_record_third@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_tool_audio_record_third@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/message_tool_audio_record_third.imageset/message_tool_audio_record_third@2x.png b/YuMi/Assets.xcassets/chat/message_tool_audio_record_third.imageset/message_tool_audio_record_third@2x.png new file mode 100644 index 00000000..0193645b Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_tool_audio_record_third.imageset/message_tool_audio_record_third@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/message_tool_audio_record_third.imageset/message_tool_audio_record_third@3x.png b/YuMi/Assets.xcassets/chat/message_tool_audio_record_third.imageset/message_tool_audio_record_third@3x.png new file mode 100644 index 00000000..c94e48a8 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/message_tool_audio_record_third.imageset/message_tool_audio_record_third@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/sessionList_clear.imageset/Contents.json b/YuMi/Assets.xcassets/chat/sessionList_clear.imageset/Contents.json new file mode 100644 index 00000000..81182a21 --- /dev/null +++ b/YuMi/Assets.xcassets/chat/sessionList_clear.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "sessionList_clear@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "sessionList_clear@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/sessionList_clear.imageset/sessionList_clear@2x.png b/YuMi/Assets.xcassets/chat/sessionList_clear.imageset/sessionList_clear@2x.png new file mode 100644 index 00000000..5d310608 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/sessionList_clear.imageset/sessionList_clear@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/sessionList_clear.imageset/sessionList_clear@3x.png b/YuMi/Assets.xcassets/chat/sessionList_clear.imageset/sessionList_clear@3x.png new file mode 100644 index 00000000..cf8076e7 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/sessionList_clear.imageset/sessionList_clear@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/session_find_new_refresh.imageset/Contents.json b/YuMi/Assets.xcassets/chat/session_find_new_refresh.imageset/Contents.json new file mode 100644 index 00000000..8244c98a --- /dev/null +++ b/YuMi/Assets.xcassets/chat/session_find_new_refresh.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "session_find_new_refresh@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "session_find_new_refresh@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/session_find_new_refresh.imageset/session_find_new_refresh@2x.png b/YuMi/Assets.xcassets/chat/session_find_new_refresh.imageset/session_find_new_refresh@2x.png new file mode 100644 index 00000000..394317de Binary files /dev/null and b/YuMi/Assets.xcassets/chat/session_find_new_refresh.imageset/session_find_new_refresh@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/session_find_new_refresh.imageset/session_find_new_refresh@3x.png b/YuMi/Assets.xcassets/chat/session_find_new_refresh.imageset/session_find_new_refresh@3x.png new file mode 100644 index 00000000..24f1e26c Binary files /dev/null and b/YuMi/Assets.xcassets/chat/session_find_new_refresh.imageset/session_find_new_refresh@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/session_input_tool_choose_normal.imageset/Contents.json b/YuMi/Assets.xcassets/chat/session_input_tool_choose_normal.imageset/Contents.json new file mode 100644 index 00000000..7829b8e1 --- /dev/null +++ b/YuMi/Assets.xcassets/chat/session_input_tool_choose_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "session_input_tool_choose_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "session_input_tool_choose_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/session_input_tool_choose_normal.imageset/session_input_tool_choose_normal@2x.png b/YuMi/Assets.xcassets/chat/session_input_tool_choose_normal.imageset/session_input_tool_choose_normal@2x.png new file mode 100644 index 00000000..5b724679 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/session_input_tool_choose_normal.imageset/session_input_tool_choose_normal@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/session_input_tool_choose_normal.imageset/session_input_tool_choose_normal@3x.png b/YuMi/Assets.xcassets/chat/session_input_tool_choose_normal.imageset/session_input_tool_choose_normal@3x.png new file mode 100644 index 00000000..ab46afdc Binary files /dev/null and b/YuMi/Assets.xcassets/chat/session_input_tool_choose_normal.imageset/session_input_tool_choose_normal@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/session_input_tool_choose_select.imageset/Contents.json b/YuMi/Assets.xcassets/chat/session_input_tool_choose_select.imageset/Contents.json new file mode 100644 index 00000000..6f5ad05b --- /dev/null +++ b/YuMi/Assets.xcassets/chat/session_input_tool_choose_select.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "session_input_tool_choose_select@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "session_input_tool_choose_select@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/session_input_tool_choose_select.imageset/session_input_tool_choose_select@2x.png b/YuMi/Assets.xcassets/chat/session_input_tool_choose_select.imageset/session_input_tool_choose_select@2x.png new file mode 100644 index 00000000..053ebea8 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/session_input_tool_choose_select.imageset/session_input_tool_choose_select@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/session_input_tool_choose_select.imageset/session_input_tool_choose_select@3x.png b/YuMi/Assets.xcassets/chat/session_input_tool_choose_select.imageset/session_input_tool_choose_select@3x.png new file mode 100644 index 00000000..ee3935a3 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/session_input_tool_choose_select.imageset/session_input_tool_choose_select@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/session_list_bg.imageset/Contents.json b/YuMi/Assets.xcassets/chat/session_list_bg.imageset/Contents.json new file mode 100644 index 00000000..e78546c2 --- /dev/null +++ b/YuMi/Assets.xcassets/chat/session_list_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "session_list_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "session_list_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/session_list_bg.imageset/session_list_bg@2x.png b/YuMi/Assets.xcassets/chat/session_list_bg.imageset/session_list_bg@2x.png new file mode 100644 index 00000000..592014ec Binary files /dev/null and b/YuMi/Assets.xcassets/chat/session_list_bg.imageset/session_list_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/session_list_bg.imageset/session_list_bg@3x.png b/YuMi/Assets.xcassets/chat/session_list_bg.imageset/session_list_bg@3x.png new file mode 100644 index 00000000..a12e8c05 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/session_list_bg.imageset/session_list_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/session_nav_live.imageset/Contents.json b/YuMi/Assets.xcassets/chat/session_nav_live.imageset/Contents.json new file mode 100644 index 00000000..92173151 --- /dev/null +++ b/YuMi/Assets.xcassets/chat/session_nav_live.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "session_nav_live@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "session_nav_live@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/session_nav_live.imageset/session_nav_live@2x.png b/YuMi/Assets.xcassets/chat/session_nav_live.imageset/session_nav_live@2x.png new file mode 100644 index 00000000..be2de434 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/session_nav_live.imageset/session_nav_live@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/session_nav_live.imageset/session_nav_live@3x.png b/YuMi/Assets.xcassets/chat/session_nav_live.imageset/session_nav_live@3x.png new file mode 100644 index 00000000..7e6252a0 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/session_nav_live.imageset/session_nav_live@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/session_user_sex_female.imageset/Contents.json b/YuMi/Assets.xcassets/chat/session_user_sex_female.imageset/Contents.json new file mode 100644 index 00000000..3597efaa --- /dev/null +++ b/YuMi/Assets.xcassets/chat/session_user_sex_female.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "session_user_sex_female@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "session_user_sex_female@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/session_user_sex_female.imageset/session_user_sex_female@2x.png b/YuMi/Assets.xcassets/chat/session_user_sex_female.imageset/session_user_sex_female@2x.png new file mode 100644 index 00000000..0ce80efa Binary files /dev/null and b/YuMi/Assets.xcassets/chat/session_user_sex_female.imageset/session_user_sex_female@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/session_user_sex_female.imageset/session_user_sex_female@3x.png b/YuMi/Assets.xcassets/chat/session_user_sex_female.imageset/session_user_sex_female@3x.png new file mode 100644 index 00000000..badbf487 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/session_user_sex_female.imageset/session_user_sex_female@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/session_user_sex_male.imageset/Contents.json b/YuMi/Assets.xcassets/chat/session_user_sex_male.imageset/Contents.json new file mode 100644 index 00000000..487fdb07 --- /dev/null +++ b/YuMi/Assets.xcassets/chat/session_user_sex_male.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "session_user_sex_male@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "session_user_sex_male@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/session_user_sex_male.imageset/session_user_sex_male@2x.png b/YuMi/Assets.xcassets/chat/session_user_sex_male.imageset/session_user_sex_male@2x.png new file mode 100644 index 00000000..86ab9751 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/session_user_sex_male.imageset/session_user_sex_male@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/session_user_sex_male.imageset/session_user_sex_male@3x.png b/YuMi/Assets.xcassets/chat/session_user_sex_male.imageset/session_user_sex_male@3x.png new file mode 100644 index 00000000..f94bcea3 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/session_user_sex_male.imageset/session_user_sex_male@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/session_warn_close.imageset/Contents.json b/YuMi/Assets.xcassets/chat/session_warn_close.imageset/Contents.json new file mode 100644 index 00000000..8e6901e6 --- /dev/null +++ b/YuMi/Assets.xcassets/chat/session_warn_close.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "session_warn_close@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "session_warn_close@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/chat/session_warn_close.imageset/session_warn_close@2x.png b/YuMi/Assets.xcassets/chat/session_warn_close.imageset/session_warn_close@2x.png new file mode 100644 index 00000000..20629396 Binary files /dev/null and b/YuMi/Assets.xcassets/chat/session_warn_close.imageset/session_warn_close@2x.png differ diff --git a/YuMi/Assets.xcassets/chat/session_warn_close.imageset/session_warn_close@3x.png b/YuMi/Assets.xcassets/chat/session_warn_close.imageset/session_warn_close@3x.png new file mode 100644 index 00000000..cae8384d Binary files /dev/null and b/YuMi/Assets.xcassets/chat/session_warn_close.imageset/session_warn_close@3x.png differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_cancel.imageset/Contents.json b/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_cancel.imageset/Contents.json deleted file mode 100644 index b37f9f14..00000000 --- a/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_cancel.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_msg_kit_audio_record_cancel@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_msg_kit_audio_record_cancel@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_cancel.imageset/yumi_msg_kit_audio_record_cancel@2x.png b/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_cancel.imageset/yumi_msg_kit_audio_record_cancel@2x.png deleted file mode 100644 index 32a65ef3..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_cancel.imageset/yumi_msg_kit_audio_record_cancel@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_cancel.imageset/yumi_msg_kit_audio_record_cancel@3x.png b/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_cancel.imageset/yumi_msg_kit_audio_record_cancel@3x.png deleted file mode 100644 index bc115994..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_cancel.imageset/yumi_msg_kit_audio_record_cancel@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_first.imageset/Contents.json b/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_first.imageset/Contents.json deleted file mode 100644 index f42e90bc..00000000 --- a/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_first.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_msg_kit_audio_record_first@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_msg_kit_audio_record_first@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_first.imageset/yumi_msg_kit_audio_record_first@2x.png b/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_first.imageset/yumi_msg_kit_audio_record_first@2x.png deleted file mode 100644 index 8add4cf2..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_first.imageset/yumi_msg_kit_audio_record_first@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_first.imageset/yumi_msg_kit_audio_record_first@3x.png b/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_first.imageset/yumi_msg_kit_audio_record_first@3x.png deleted file mode 100644 index 0af1597f..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_first.imageset/yumi_msg_kit_audio_record_first@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_second.imageset/Contents.json b/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_second.imageset/Contents.json deleted file mode 100644 index ef09cd9b..00000000 --- a/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_second.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_msg_kit_audio_record_second@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_msg_kit_audio_record_second@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_second.imageset/yumi_msg_kit_audio_record_second@2x.png b/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_second.imageset/yumi_msg_kit_audio_record_second@2x.png deleted file mode 100644 index 55adf439..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_second.imageset/yumi_msg_kit_audio_record_second@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_second.imageset/yumi_msg_kit_audio_record_second@3x.png b/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_second.imageset/yumi_msg_kit_audio_record_second@3x.png deleted file mode 100644 index b1cebf5b..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_second.imageset/yumi_msg_kit_audio_record_second@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_third.imageset/Contents.json b/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_third.imageset/Contents.json deleted file mode 100644 index dd225051..00000000 --- a/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_third.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_msg_kit_audio_record_third@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_msg_kit_audio_record_third@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_third.imageset/yumi_msg_kit_audio_record_third@2x.png b/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_third.imageset/yumi_msg_kit_audio_record_third@2x.png deleted file mode 100644 index 831ef526..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_third.imageset/yumi_msg_kit_audio_record_third@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_third.imageset/yumi_msg_kit_audio_record_third@3x.png b/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_third.imageset/yumi_msg_kit_audio_record_third@3x.png deleted file mode 100644 index 3be5f5da..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_kit_audio_record_third.imageset/yumi_msg_kit_audio_record_third@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_first.imageset/Contents.json b/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_first.imageset/Contents.json deleted file mode 100644 index 44a7e28a..00000000 --- a/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_first.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_msg_matter_audio_playing_first@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_msg_matter_audio_playing_first@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_first.imageset/yumi_msg_matter_audio_playing_first@2x.png b/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_first.imageset/yumi_msg_matter_audio_playing_first@2x.png deleted file mode 100644 index 8a88e191..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_first.imageset/yumi_msg_matter_audio_playing_first@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_first.imageset/yumi_msg_matter_audio_playing_first@3x.png b/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_first.imageset/yumi_msg_matter_audio_playing_first@3x.png deleted file mode 100644 index ecbd8356..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_first.imageset/yumi_msg_matter_audio_playing_first@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_second.imageset/Contents.json b/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_second.imageset/Contents.json deleted file mode 100644 index beabb043..00000000 --- a/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_second.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_msg_matter_audio_playing_second@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_msg_matter_audio_playing_second@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_second.imageset/yumi_msg_matter_audio_playing_second@2x.png b/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_second.imageset/yumi_msg_matter_audio_playing_second@2x.png deleted file mode 100644 index a98e16ee..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_second.imageset/yumi_msg_matter_audio_playing_second@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_second.imageset/yumi_msg_matter_audio_playing_second@3x.png b/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_second.imageset/yumi_msg_matter_audio_playing_second@3x.png deleted file mode 100644 index 2b7254c6..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_second.imageset/yumi_msg_matter_audio_playing_second@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_third.imageset/Contents.json b/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_third.imageset/Contents.json deleted file mode 100644 index feaaea94..00000000 --- a/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_third.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_msg_matter_audio_playing_third@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_msg_matter_audio_playing_third@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_third.imageset/yumi_msg_matter_audio_playing_third@2x.png b/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_third.imageset/yumi_msg_matter_audio_playing_third@2x.png deleted file mode 100644 index 83758cb2..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_third.imageset/yumi_msg_matter_audio_playing_third@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_third.imageset/yumi_msg_matter_audio_playing_third@3x.png b/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_third.imageset/yumi_msg_matter_audio_playing_third@3x.png deleted file mode 100644 index cf730d3a..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_matter_audio_playing_third.imageset/yumi_msg_matter_audio_playing_third@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_matter_upgrade_charm.imageset/Contents.json b/YuMi/Assets.xcassets/chat/yumi_msg_matter_upgrade_charm.imageset/Contents.json deleted file mode 100644 index afa31381..00000000 --- a/YuMi/Assets.xcassets/chat/yumi_msg_matter_upgrade_charm.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_msg_matter_upgrade_charm@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_msg_matter_upgrade_charm@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_matter_upgrade_charm.imageset/yumi_msg_matter_upgrade_charm@2x.png b/YuMi/Assets.xcassets/chat/yumi_msg_matter_upgrade_charm.imageset/yumi_msg_matter_upgrade_charm@2x.png deleted file mode 100644 index 76c7d258..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_matter_upgrade_charm.imageset/yumi_msg_matter_upgrade_charm@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_matter_upgrade_charm.imageset/yumi_msg_matter_upgrade_charm@3x.png b/YuMi/Assets.xcassets/chat/yumi_msg_matter_upgrade_charm.imageset/yumi_msg_matter_upgrade_charm@3x.png deleted file mode 100644 index a3cf6010..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_matter_upgrade_charm.imageset/yumi_msg_matter_upgrade_charm@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_matter_upgrade_expre.imageset/Contents.json b/YuMi/Assets.xcassets/chat/yumi_msg_matter_upgrade_expre.imageset/Contents.json deleted file mode 100644 index 11fe424b..00000000 --- a/YuMi/Assets.xcassets/chat/yumi_msg_matter_upgrade_expre.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_msg_matter_upgrade_expre@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_msg_matter_upgrade_expre@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_matter_upgrade_expre.imageset/yumi_msg_matter_upgrade_expre@2x.png b/YuMi/Assets.xcassets/chat/yumi_msg_matter_upgrade_expre.imageset/yumi_msg_matter_upgrade_expre@2x.png deleted file mode 100644 index 0017a377..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_matter_upgrade_expre.imageset/yumi_msg_matter_upgrade_expre@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_matter_upgrade_expre.imageset/yumi_msg_matter_upgrade_expre@3x.png b/YuMi/Assets.xcassets/chat/yumi_msg_matter_upgrade_expre.imageset/yumi_msg_matter_upgrade_expre@3x.png deleted file mode 100644 index 3836b279..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_matter_upgrade_expre.imageset/yumi_msg_matter_upgrade_expre@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_term_download_fail.imageset/Contents.json b/YuMi/Assets.xcassets/chat/yumi_msg_term_download_fail.imageset/Contents.json deleted file mode 100644 index ce45c965..00000000 --- a/YuMi/Assets.xcassets/chat/yumi_msg_term_download_fail.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_msg_term_download_fail@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_msg_term_download_fail@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_term_download_fail.imageset/yumi_msg_term_download_fail@2x.png b/YuMi/Assets.xcassets/chat/yumi_msg_term_download_fail.imageset/yumi_msg_term_download_fail@2x.png deleted file mode 100644 index a34f19b5..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_term_download_fail.imageset/yumi_msg_term_download_fail@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_term_download_fail.imageset/yumi_msg_term_download_fail@3x.png b/YuMi/Assets.xcassets/chat/yumi_msg_term_download_fail.imageset/yumi_msg_term_download_fail@3x.png deleted file mode 100644 index e3773bfe..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_term_download_fail.imageset/yumi_msg_term_download_fail@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_term_find_new_filtrate.imageset/Contents.json b/YuMi/Assets.xcassets/chat/yumi_msg_term_find_new_filtrate.imageset/Contents.json deleted file mode 100644 index e602a3c4..00000000 --- a/YuMi/Assets.xcassets/chat/yumi_msg_term_find_new_filtrate.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_msg_term_find_new_filtrate@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_msg_term_find_new_filtrate@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_term_find_new_filtrate.imageset/yumi_msg_term_find_new_filtrate@2x.png b/YuMi/Assets.xcassets/chat/yumi_msg_term_find_new_filtrate.imageset/yumi_msg_term_find_new_filtrate@2x.png deleted file mode 100644 index 2f422706..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_term_find_new_filtrate.imageset/yumi_msg_term_find_new_filtrate@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_term_find_new_filtrate.imageset/yumi_msg_term_find_new_filtrate@3x.png b/YuMi/Assets.xcassets/chat/yumi_msg_term_find_new_filtrate.imageset/yumi_msg_term_find_new_filtrate@3x.png deleted file mode 100644 index 23c88e16..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_term_find_new_filtrate.imageset/yumi_msg_term_find_new_filtrate@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_camera.imageset/Contents.json b/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_camera.imageset/Contents.json deleted file mode 100644 index 3e1e1a8c..00000000 --- a/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_camera.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_msg_term_menu_camera@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_msg_term_menu_camera@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_camera.imageset/yumi_msg_term_menu_camera@2x.png b/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_camera.imageset/yumi_msg_term_menu_camera@2x.png deleted file mode 100644 index bd9f8efe..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_camera.imageset/yumi_msg_term_menu_camera@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_camera.imageset/yumi_msg_term_menu_camera@3x.png b/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_camera.imageset/yumi_msg_term_menu_camera@3x.png deleted file mode 100644 index 562c5588..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_camera.imageset/yumi_msg_term_menu_camera@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_gift.imageset/Contents.json b/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_gift.imageset/Contents.json deleted file mode 100644 index 3d2e927b..00000000 --- a/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_gift.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_msg_term_menu_gift@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_msg_term_menu_gift@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_gift.imageset/yumi_msg_term_menu_gift@2x.png b/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_gift.imageset/yumi_msg_term_menu_gift@2x.png deleted file mode 100644 index 71b79e53..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_gift.imageset/yumi_msg_term_menu_gift@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_gift.imageset/yumi_msg_term_menu_gift@3x.png b/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_gift.imageset/yumi_msg_term_menu_gift@3x.png deleted file mode 100644 index f6bc7d55..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_gift.imageset/yumi_msg_term_menu_gift@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_photo.imageset/Contents.json b/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_photo.imageset/Contents.json deleted file mode 100644 index 4448fbfd..00000000 --- a/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_photo.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_msg_term_menu_photo@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_msg_term_menu_photo@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_photo.imageset/yumi_msg_term_menu_photo@2x.png b/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_photo.imageset/yumi_msg_term_menu_photo@2x.png deleted file mode 100644 index 6bd1fb38..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_photo.imageset/yumi_msg_term_menu_photo@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_photo.imageset/yumi_msg_term_menu_photo@3x.png b/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_photo.imageset/yumi_msg_term_menu_photo@3x.png deleted file mode 100644 index e14af288..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_term_menu_photo.imageset/yumi_msg_term_menu_photo@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_term_title_report.imageset/Contents.json b/YuMi/Assets.xcassets/chat/yumi_msg_term_title_report.imageset/Contents.json deleted file mode 100644 index 5f62abd8..00000000 --- a/YuMi/Assets.xcassets/chat/yumi_msg_term_title_report.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_msg_term_title_report@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_msg_term_title_report@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_term_title_report.imageset/yumi_msg_term_title_report@2x.png b/YuMi/Assets.xcassets/chat/yumi_msg_term_title_report.imageset/yumi_msg_term_title_report@2x.png deleted file mode 100644 index 673af4ad..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_term_title_report.imageset/yumi_msg_term_title_report@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_msg_term_title_report.imageset/yumi_msg_term_title_report@3x.png b/YuMi/Assets.xcassets/chat/yumi_msg_term_title_report.imageset/yumi_msg_term_title_report@3x.png deleted file mode 100644 index 93d92d1a..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_msg_term_title_report.imageset/yumi_msg_term_title_report@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_sessionList_clear.imageset/Contents.json b/YuMi/Assets.xcassets/chat/yumi_sessionList_clear.imageset/Contents.json deleted file mode 100644 index 1da425b3..00000000 --- a/YuMi/Assets.xcassets/chat/yumi_sessionList_clear.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_sessionList_clear@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_sessionList_clear@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/yumi_sessionList_clear.imageset/yumi_sessionList_clear@2x.png b/YuMi/Assets.xcassets/chat/yumi_sessionList_clear.imageset/yumi_sessionList_clear@2x.png deleted file mode 100644 index 8d830079..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_sessionList_clear.imageset/yumi_sessionList_clear@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_sessionList_clear.imageset/yumi_sessionList_clear@3x.png b/YuMi/Assets.xcassets/chat/yumi_sessionList_clear.imageset/yumi_sessionList_clear@3x.png deleted file mode 100644 index fc610337..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_sessionList_clear.imageset/yumi_sessionList_clear@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_term_find_new_refresh.imageset/Contents.json b/YuMi/Assets.xcassets/chat/yumi_term_find_new_refresh.imageset/Contents.json deleted file mode 100644 index cc243b04..00000000 --- a/YuMi/Assets.xcassets/chat/yumi_term_find_new_refresh.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_term_find_new_refresh@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_term_find_new_refresh@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/yumi_term_find_new_refresh.imageset/yumi_term_find_new_refresh@2x.png b/YuMi/Assets.xcassets/chat/yumi_term_find_new_refresh.imageset/yumi_term_find_new_refresh@2x.png deleted file mode 100644 index 77eba4cf..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_term_find_new_refresh.imageset/yumi_term_find_new_refresh@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_term_find_new_refresh.imageset/yumi_term_find_new_refresh@3x.png b/YuMi/Assets.xcassets/chat/yumi_term_find_new_refresh.imageset/yumi_term_find_new_refresh@3x.png deleted file mode 100644 index d94cabfa..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_term_find_new_refresh.imageset/yumi_term_find_new_refresh@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_term_input_kit_choose_normal.imageset/Contents.json b/YuMi/Assets.xcassets/chat/yumi_term_input_kit_choose_normal.imageset/Contents.json deleted file mode 100644 index c63521ca..00000000 --- a/YuMi/Assets.xcassets/chat/yumi_term_input_kit_choose_normal.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_term_input_kit_choose_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_term_input_kit_choose_normal@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/yumi_term_input_kit_choose_normal.imageset/yumi_term_input_kit_choose_normal@2x.png b/YuMi/Assets.xcassets/chat/yumi_term_input_kit_choose_normal.imageset/yumi_term_input_kit_choose_normal@2x.png deleted file mode 100644 index 0d780261..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_term_input_kit_choose_normal.imageset/yumi_term_input_kit_choose_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_term_input_kit_choose_normal.imageset/yumi_term_input_kit_choose_normal@3x.png b/YuMi/Assets.xcassets/chat/yumi_term_input_kit_choose_normal.imageset/yumi_term_input_kit_choose_normal@3x.png deleted file mode 100644 index 6ab53597..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_term_input_kit_choose_normal.imageset/yumi_term_input_kit_choose_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_term_input_kit_choose_select.imageset/Contents.json b/YuMi/Assets.xcassets/chat/yumi_term_input_kit_choose_select.imageset/Contents.json deleted file mode 100644 index 88391471..00000000 --- a/YuMi/Assets.xcassets/chat/yumi_term_input_kit_choose_select.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_term_input_kit_choose_select@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_term_input_kit_choose_select@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/yumi_term_input_kit_choose_select.imageset/yumi_term_input_kit_choose_select@2x.png b/YuMi/Assets.xcassets/chat/yumi_term_input_kit_choose_select.imageset/yumi_term_input_kit_choose_select@2x.png deleted file mode 100644 index c75fce2c..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_term_input_kit_choose_select.imageset/yumi_term_input_kit_choose_select@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_term_input_kit_choose_select.imageset/yumi_term_input_kit_choose_select@3x.png b/YuMi/Assets.xcassets/chat/yumi_term_input_kit_choose_select.imageset/yumi_term_input_kit_choose_select@3x.png deleted file mode 100644 index 9f7fb0fd..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_term_input_kit_choose_select.imageset/yumi_term_input_kit_choose_select@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_term_list_background.imageset/Contents.json b/YuMi/Assets.xcassets/chat/yumi_term_list_background.imageset/Contents.json deleted file mode 100644 index 3aafb722..00000000 --- a/YuMi/Assets.xcassets/chat/yumi_term_list_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_term_list_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_term_list_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/yumi_term_list_background.imageset/yumi_term_list_background@2x.png b/YuMi/Assets.xcassets/chat/yumi_term_list_background.imageset/yumi_term_list_background@2x.png deleted file mode 100644 index 87c33fc4..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_term_list_background.imageset/yumi_term_list_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_term_list_background.imageset/yumi_term_list_background@3x.png b/YuMi/Assets.xcassets/chat/yumi_term_list_background.imageset/yumi_term_list_background@3x.png deleted file mode 100644 index 5c0f1444..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_term_list_background.imageset/yumi_term_list_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_term_title_live.imageset/Contents.json b/YuMi/Assets.xcassets/chat/yumi_term_title_live.imageset/Contents.json deleted file mode 100644 index 34fd6cef..00000000 --- a/YuMi/Assets.xcassets/chat/yumi_term_title_live.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_term_title_live@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_term_title_live@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/yumi_term_title_live.imageset/yumi_term_title_live@2x.png b/YuMi/Assets.xcassets/chat/yumi_term_title_live.imageset/yumi_term_title_live@2x.png deleted file mode 100644 index 2733ba5e..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_term_title_live.imageset/yumi_term_title_live@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_term_title_live.imageset/yumi_term_title_live@3x.png b/YuMi/Assets.xcassets/chat/yumi_term_title_live.imageset/yumi_term_title_live@3x.png deleted file mode 100644 index 6e3c1b5c..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_term_title_live.imageset/yumi_term_title_live@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_term_user_sex_female.imageset/Contents.json b/YuMi/Assets.xcassets/chat/yumi_term_user_sex_female.imageset/Contents.json deleted file mode 100644 index bc36302d..00000000 --- a/YuMi/Assets.xcassets/chat/yumi_term_user_sex_female.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_term_user_sex_female@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_term_user_sex_female@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/yumi_term_user_sex_female.imageset/yumi_term_user_sex_female@2x.png b/YuMi/Assets.xcassets/chat/yumi_term_user_sex_female.imageset/yumi_term_user_sex_female@2x.png deleted file mode 100644 index d7215335..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_term_user_sex_female.imageset/yumi_term_user_sex_female@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_term_user_sex_female.imageset/yumi_term_user_sex_female@3x.png b/YuMi/Assets.xcassets/chat/yumi_term_user_sex_female.imageset/yumi_term_user_sex_female@3x.png deleted file mode 100644 index c9295579..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_term_user_sex_female.imageset/yumi_term_user_sex_female@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_term_user_sex_male.imageset/Contents.json b/YuMi/Assets.xcassets/chat/yumi_term_user_sex_male.imageset/Contents.json deleted file mode 100644 index 8312d25e..00000000 --- a/YuMi/Assets.xcassets/chat/yumi_term_user_sex_male.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_term_user_sex_male@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_term_user_sex_male@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/yumi_term_user_sex_male.imageset/yumi_term_user_sex_male@2x.png b/YuMi/Assets.xcassets/chat/yumi_term_user_sex_male.imageset/yumi_term_user_sex_male@2x.png deleted file mode 100644 index a921b0ed..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_term_user_sex_male.imageset/yumi_term_user_sex_male@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_term_user_sex_male.imageset/yumi_term_user_sex_male@3x.png b/YuMi/Assets.xcassets/chat/yumi_term_user_sex_male.imageset/yumi_term_user_sex_male@3x.png deleted file mode 100644 index 0c487da6..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_term_user_sex_male.imageset/yumi_term_user_sex_male@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_term_warn_close.imageset/Contents.json b/YuMi/Assets.xcassets/chat/yumi_term_warn_close.imageset/Contents.json deleted file mode 100644 index e74d030d..00000000 --- a/YuMi/Assets.xcassets/chat/yumi_term_warn_close.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_term_warn_close@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_term_warn_close@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/chat/yumi_term_warn_close.imageset/yumi_term_warn_close@2x.png b/YuMi/Assets.xcassets/chat/yumi_term_warn_close.imageset/yumi_term_warn_close@2x.png deleted file mode 100644 index 8095371f..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_term_warn_close.imageset/yumi_term_warn_close@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/chat/yumi_term_warn_close.imageset/yumi_term_warn_close@3x.png b/YuMi/Assets.xcassets/chat/yumi_term_warn_close.imageset/yumi_term_warn_close@3x.png deleted file mode 100644 index 80c52a52..00000000 Binary files a/YuMi/Assets.xcassets/chat/yumi_term_warn_close.imageset/yumi_term_warn_close@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/jm/AnchorGrade/Contents.json +++ b/YuMi/Assets.xcassets/jm/AnchorGrade/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_a.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_a.imageset/Contents.json new file mode 100644 index 00000000..d83426c8 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_a.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_anchor_level_a@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_anchor_level_a@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_a.imageset/mine_anchor_level_a@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_a.imageset/mine_anchor_level_a@2x.png new file mode 100644 index 00000000..73de846b Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_a.imageset/mine_anchor_level_a@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_a.imageset/mine_anchor_level_a@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_a.imageset/mine_anchor_level_a@3x.png new file mode 100644 index 00000000..2cefba5e Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_a.imageset/mine_anchor_level_a@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_b.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_b.imageset/Contents.json new file mode 100644 index 00000000..7341a2ed --- /dev/null +++ b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_b.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_anchor_level_b@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_anchor_level_b@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_b.imageset/mine_anchor_level_b@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_b.imageset/mine_anchor_level_b@2x.png new file mode 100644 index 00000000..a0f9b0cb Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_b.imageset/mine_anchor_level_b@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_b.imageset/mine_anchor_level_b@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_b.imageset/mine_anchor_level_b@3x.png new file mode 100644 index 00000000..045d2c48 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_b.imageset/mine_anchor_level_b@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_bg.imageset/Contents.json new file mode 100644 index 00000000..b538492a --- /dev/null +++ b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_anchor_level_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_anchor_level_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_bg.imageset/mine_anchor_level_bg@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_bg.imageset/mine_anchor_level_bg@2x.png new file mode 100644 index 00000000..87f210a1 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_bg.imageset/mine_anchor_level_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_bg.imageset/mine_anchor_level_bg@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_bg.imageset/mine_anchor_level_bg@3x.png new file mode 100644 index 00000000..bab9c6c4 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_bg.imageset/mine_anchor_level_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_c.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_c.imageset/Contents.json new file mode 100644 index 00000000..d92cd364 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_c.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_anchor_level_c@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_anchor_level_c@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_c.imageset/mine_anchor_level_c@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_c.imageset/mine_anchor_level_c@2x.png new file mode 100644 index 00000000..49413df2 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_c.imageset/mine_anchor_level_c@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_c.imageset/mine_anchor_level_c@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_c.imageset/mine_anchor_level_c@3x.png new file mode 100644 index 00000000..b3fdf535 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_c.imageset/mine_anchor_level_c@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_d.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_d.imageset/Contents.json new file mode 100644 index 00000000..55ed82e4 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_d.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_anchor_level_d@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_anchor_level_d@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_d.imageset/mine_anchor_level_d@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_d.imageset/mine_anchor_level_d@2x.png new file mode 100644 index 00000000..093204f1 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_d.imageset/mine_anchor_level_d@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_d.imageset/mine_anchor_level_d@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_d.imageset/mine_anchor_level_d@3x.png new file mode 100644 index 00000000..ef05f18d Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_d.imageset/mine_anchor_level_d@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_a.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_a.imageset/Contents.json new file mode 100644 index 00000000..0d95ad7a --- /dev/null +++ b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_a.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_anchor_level_enter_a@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_anchor_level_enter_a@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_a.imageset/mine_anchor_level_enter_a@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_a.imageset/mine_anchor_level_enter_a@2x.png new file mode 100644 index 00000000..5c41c2df Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_a.imageset/mine_anchor_level_enter_a@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_a.imageset/mine_anchor_level_enter_a@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_a.imageset/mine_anchor_level_enter_a@3x.png new file mode 100644 index 00000000..af92bc49 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_a.imageset/mine_anchor_level_enter_a@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_b.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_b.imageset/Contents.json new file mode 100644 index 00000000..434cacad --- /dev/null +++ b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_b.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_anchor_level_enter_b@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_anchor_level_enter_b@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_b.imageset/mine_anchor_level_enter_b@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_b.imageset/mine_anchor_level_enter_b@2x.png new file mode 100644 index 00000000..4e1e5650 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_b.imageset/mine_anchor_level_enter_b@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_b.imageset/mine_anchor_level_enter_b@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_b.imageset/mine_anchor_level_enter_b@3x.png new file mode 100644 index 00000000..92dcc40a Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_b.imageset/mine_anchor_level_enter_b@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_c.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_c.imageset/Contents.json new file mode 100644 index 00000000..ac41444e --- /dev/null +++ b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_c.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_anchor_level_enter_c@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_anchor_level_enter_c@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_c.imageset/mine_anchor_level_enter_c@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_c.imageset/mine_anchor_level_enter_c@2x.png new file mode 100644 index 00000000..413ef6f2 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_c.imageset/mine_anchor_level_enter_c@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_c.imageset/mine_anchor_level_enter_c@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_c.imageset/mine_anchor_level_enter_c@3x.png new file mode 100644 index 00000000..94ffc63b Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_c.imageset/mine_anchor_level_enter_c@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_d.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_d.imageset/Contents.json new file mode 100644 index 00000000..bcdda334 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_d.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_anchor_level_enter_d@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_anchor_level_enter_d@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_d.imageset/mine_anchor_level_enter_d@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_d.imageset/mine_anchor_level_enter_d@2x.png new file mode 100644 index 00000000..f9245f9e Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_d.imageset/mine_anchor_level_enter_d@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_d.imageset/mine_anchor_level_enter_d@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_d.imageset/mine_anchor_level_enter_d@3x.png new file mode 100644 index 00000000..893e3096 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_d.imageset/mine_anchor_level_enter_d@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_s.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_s.imageset/Contents.json new file mode 100644 index 00000000..7265d38a --- /dev/null +++ b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_s.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_anchor_level_enter_s@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_anchor_level_enter_s@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_s.imageset/mine_anchor_level_enter_s@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_s.imageset/mine_anchor_level_enter_s@2x.png new file mode 100644 index 00000000..19353a0a Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_s.imageset/mine_anchor_level_enter_s@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_s.imageset/mine_anchor_level_enter_s@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_s.imageset/mine_anchor_level_enter_s@3x.png new file mode 100644 index 00000000..5a3a607e Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_enter_s.imageset/mine_anchor_level_enter_s@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_s.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_s.imageset/Contents.json new file mode 100644 index 00000000..ddb4f8cc --- /dev/null +++ b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_s.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_anchor_level_s@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_anchor_level_s@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_s.imageset/mine_anchor_level_s@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_s.imageset/mine_anchor_level_s@2x.png new file mode 100644 index 00000000..9bd79316 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_s.imageset/mine_anchor_level_s@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_s.imageset/mine_anchor_level_s@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_s.imageset/mine_anchor_level_s@3x.png new file mode 100644 index 00000000..f0cce255 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_s.imageset/mine_anchor_level_s@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_title.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_title.imageset/Contents.json new file mode 100644 index 00000000..1e76c13d --- /dev/null +++ b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_title.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_anchor_level_title@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_anchor_level_title@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_title.imageset/mine_anchor_level_title@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_title.imageset/mine_anchor_level_title@2x.png new file mode 100644 index 00000000..dbd44039 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_title.imageset/mine_anchor_level_title@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_title.imageset/mine_anchor_level_title@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_title.imageset/mine_anchor_level_title@3x.png new file mode 100644 index 00000000..7514d87c Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_title.imageset/mine_anchor_level_title@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_title_finish.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_title_finish.imageset/Contents.json new file mode 100644 index 00000000..9cd5451f --- /dev/null +++ b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_title_finish.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_anchor_level_title_finish@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_anchor_level_title_finish@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_title_finish.imageset/mine_anchor_level_title_finish@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_title_finish.imageset/mine_anchor_level_title_finish@2x.png new file mode 100644 index 00000000..a5063324 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_title_finish.imageset/mine_anchor_level_title_finish@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_title_finish.imageset/mine_anchor_level_title_finish@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_title_finish.imageset/mine_anchor_level_title_finish@3x.png new file mode 100644 index 00000000..65974731 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_title_finish.imageset/mine_anchor_level_title_finish@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_update.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_update.imageset/Contents.json new file mode 100644 index 00000000..f61e71c7 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_update.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_anchor_level_update@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_anchor_level_update@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_update.imageset/mine_anchor_level_update@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_update.imageset/mine_anchor_level_update@2x.png new file mode 100644 index 00000000..c05909a4 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_update.imageset/mine_anchor_level_update@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_update.imageset/mine_anchor_level_update@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_update.imageset/mine_anchor_level_update@3x.png new file mode 100644 index 00000000..3f7fc684 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/AnchorGrade/mine_anchor_level_update.imageset/mine_anchor_level_update@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_a.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_a.imageset/Contents.json deleted file mode 100644 index 2ef0bb4d..00000000 --- a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_a.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_anchor_level_a@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_anchor_level_a@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_a.imageset/yumi_center_anchor_level_a@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_a.imageset/yumi_center_anchor_level_a@2x.png deleted file mode 100644 index 9e217189..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_a.imageset/yumi_center_anchor_level_a@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_a.imageset/yumi_center_anchor_level_a@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_a.imageset/yumi_center_anchor_level_a@3x.png deleted file mode 100644 index 48909aaf..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_a.imageset/yumi_center_anchor_level_a@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_b.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_b.imageset/Contents.json deleted file mode 100644 index e94e6ab5..00000000 --- a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_b.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_anchor_level_b@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_anchor_level_b@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_b.imageset/yumi_center_anchor_level_b@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_b.imageset/yumi_center_anchor_level_b@2x.png deleted file mode 100644 index ffd766c1..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_b.imageset/yumi_center_anchor_level_b@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_b.imageset/yumi_center_anchor_level_b@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_b.imageset/yumi_center_anchor_level_b@3x.png deleted file mode 100644 index 7b37ea17..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_b.imageset/yumi_center_anchor_level_b@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_background.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_background.imageset/Contents.json deleted file mode 100644 index 3afa0fb5..00000000 --- a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_anchor_level_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_anchor_level_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_background.imageset/yumi_center_anchor_level_background@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_background.imageset/yumi_center_anchor_level_background@2x.png deleted file mode 100644 index 9463a5a5..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_background.imageset/yumi_center_anchor_level_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_background.imageset/yumi_center_anchor_level_background@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_background.imageset/yumi_center_anchor_level_background@3x.png deleted file mode 100644 index e1806779..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_background.imageset/yumi_center_anchor_level_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_c.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_c.imageset/Contents.json deleted file mode 100644 index 61625ae0..00000000 --- a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_c.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_anchor_level_c@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_anchor_level_c@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_c.imageset/yumi_center_anchor_level_c@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_c.imageset/yumi_center_anchor_level_c@2x.png deleted file mode 100644 index eba9630f..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_c.imageset/yumi_center_anchor_level_c@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_c.imageset/yumi_center_anchor_level_c@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_c.imageset/yumi_center_anchor_level_c@3x.png deleted file mode 100644 index dc51f531..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_c.imageset/yumi_center_anchor_level_c@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_d.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_d.imageset/Contents.json deleted file mode 100644 index f7f5e7db..00000000 --- a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_d.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_anchor_level_d@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_anchor_level_d@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_d.imageset/yumi_center_anchor_level_d@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_d.imageset/yumi_center_anchor_level_d@2x.png deleted file mode 100644 index 0b263d62..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_d.imageset/yumi_center_anchor_level_d@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_d.imageset/yumi_center_anchor_level_d@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_d.imageset/yumi_center_anchor_level_d@3x.png deleted file mode 100644 index fef9e357..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_d.imageset/yumi_center_anchor_level_d@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_a.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_a.imageset/Contents.json deleted file mode 100644 index 8d091d42..00000000 --- a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_a.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_anchor_level_enter_a@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_anchor_level_enter_a@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_a.imageset/yumi_center_anchor_level_enter_a@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_a.imageset/yumi_center_anchor_level_enter_a@2x.png deleted file mode 100644 index ff8454c8..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_a.imageset/yumi_center_anchor_level_enter_a@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_a.imageset/yumi_center_anchor_level_enter_a@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_a.imageset/yumi_center_anchor_level_enter_a@3x.png deleted file mode 100644 index cf97c976..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_a.imageset/yumi_center_anchor_level_enter_a@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_b.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_b.imageset/Contents.json deleted file mode 100644 index 8886423e..00000000 --- a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_b.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_anchor_level_enter_b@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_anchor_level_enter_b@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_b.imageset/yumi_center_anchor_level_enter_b@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_b.imageset/yumi_center_anchor_level_enter_b@2x.png deleted file mode 100644 index 52af9160..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_b.imageset/yumi_center_anchor_level_enter_b@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_b.imageset/yumi_center_anchor_level_enter_b@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_b.imageset/yumi_center_anchor_level_enter_b@3x.png deleted file mode 100644 index 639ad57d..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_b.imageset/yumi_center_anchor_level_enter_b@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_c.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_c.imageset/Contents.json deleted file mode 100644 index 88a4cf1d..00000000 --- a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_c.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_anchor_level_enter_c@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_anchor_level_enter_c@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_c.imageset/yumi_center_anchor_level_enter_c@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_c.imageset/yumi_center_anchor_level_enter_c@2x.png deleted file mode 100644 index 4e66ea6d..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_c.imageset/yumi_center_anchor_level_enter_c@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_c.imageset/yumi_center_anchor_level_enter_c@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_c.imageset/yumi_center_anchor_level_enter_c@3x.png deleted file mode 100644 index 17ebd45d..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_c.imageset/yumi_center_anchor_level_enter_c@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_d.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_d.imageset/Contents.json deleted file mode 100644 index afb503a0..00000000 --- a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_d.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_anchor_level_enter_d@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_anchor_level_enter_d@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_d.imageset/yumi_center_anchor_level_enter_d@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_d.imageset/yumi_center_anchor_level_enter_d@2x.png deleted file mode 100644 index d3558629..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_d.imageset/yumi_center_anchor_level_enter_d@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_d.imageset/yumi_center_anchor_level_enter_d@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_d.imageset/yumi_center_anchor_level_enter_d@3x.png deleted file mode 100644 index 22c1a000..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_d.imageset/yumi_center_anchor_level_enter_d@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_s.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_s.imageset/Contents.json deleted file mode 100644 index 0abee12a..00000000 --- a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_s.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_anchor_level_enter_s@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_anchor_level_enter_s@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_s.imageset/yumi_center_anchor_level_enter_s@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_s.imageset/yumi_center_anchor_level_enter_s@2x.png deleted file mode 100644 index 1aa0eec8..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_s.imageset/yumi_center_anchor_level_enter_s@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_s.imageset/yumi_center_anchor_level_enter_s@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_s.imageset/yumi_center_anchor_level_enter_s@3x.png deleted file mode 100644 index d8e7cf75..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_enter_s.imageset/yumi_center_anchor_level_enter_s@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_s.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_s.imageset/Contents.json deleted file mode 100644 index 1ded7955..00000000 --- a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_s.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_anchor_level_s@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_anchor_level_s@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_s.imageset/yumi_center_anchor_level_s@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_s.imageset/yumi_center_anchor_level_s@2x.png deleted file mode 100644 index c9d06c4b..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_s.imageset/yumi_center_anchor_level_s@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_s.imageset/yumi_center_anchor_level_s@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_s.imageset/yumi_center_anchor_level_s@3x.png deleted file mode 100644 index e9cb674b..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_s.imageset/yumi_center_anchor_level_s@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_title.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_title.imageset/Contents.json deleted file mode 100644 index 926b1451..00000000 --- a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_title.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_anchor_level_title@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_anchor_level_title@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_title.imageset/yumi_center_anchor_level_title@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_title.imageset/yumi_center_anchor_level_title@2x.png deleted file mode 100644 index ef8f573f..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_title.imageset/yumi_center_anchor_level_title@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_title.imageset/yumi_center_anchor_level_title@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_title.imageset/yumi_center_anchor_level_title@3x.png deleted file mode 100644 index 5de0665e..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_title.imageset/yumi_center_anchor_level_title@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_title_finish.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_title_finish.imageset/Contents.json deleted file mode 100644 index b60c44d1..00000000 --- a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_title_finish.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_anchor_level_title_finish@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_anchor_level_title_finish@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_title_finish.imageset/yumi_center_anchor_level_title_finish@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_title_finish.imageset/yumi_center_anchor_level_title_finish@2x.png deleted file mode 100644 index c0cd8711..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_title_finish.imageset/yumi_center_anchor_level_title_finish@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_title_finish.imageset/yumi_center_anchor_level_title_finish@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_title_finish.imageset/yumi_center_anchor_level_title_finish@3x.png deleted file mode 100644 index 48dc9d33..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_title_finish.imageset/yumi_center_anchor_level_title_finish@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_update.imageset/Contents.json b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_update.imageset/Contents.json deleted file mode 100644 index a3462b69..00000000 --- a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_update.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_anchor_level_update@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_anchor_level_update@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_update.imageset/yumi_center_anchor_level_update@2x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_update.imageset/yumi_center_anchor_level_update@2x.png deleted file mode 100644 index 7f369e58..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_update.imageset/yumi_center_anchor_level_update@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_update.imageset/yumi_center_anchor_level_update@3x.png b/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_update.imageset/yumi_center_anchor_level_update@3x.png deleted file mode 100644 index e9ad4c4c..00000000 Binary files a/YuMi/Assets.xcassets/jm/AnchorGrade/yumi_center_anchor_level_update.imageset/yumi_center_anchor_level_update@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/DressUp/Contents.json b/YuMi/Assets.xcassets/jm/DressUp/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/jm/DressUp/Contents.json +++ b/YuMi/Assets.xcassets/jm/DressUp/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_exclusive.imageset/Contents.json b/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_exclusive.imageset/Contents.json new file mode 100644 index 00000000..d82ae82e --- /dev/null +++ b/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_exclusive.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_dressUp_exclusive@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_dressUp_exclusive@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_exclusive.imageset/mine_dressUp_exclusive@2x.png b/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_exclusive.imageset/mine_dressUp_exclusive@2x.png new file mode 100644 index 00000000..9bf6decb Binary files /dev/null and b/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_exclusive.imageset/mine_dressUp_exclusive@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_exclusive.imageset/mine_dressUp_exclusive@3x.png b/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_exclusive.imageset/mine_dressUp_exclusive@3x.png new file mode 100644 index 00000000..474c6130 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_exclusive.imageset/mine_dressUp_exclusive@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_limit.imageset/Contents.json b/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_limit.imageset/Contents.json new file mode 100644 index 00000000..634583d6 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_limit.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_dressUp_limit@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_dressUp_limit@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_limit.imageset/mine_dressUp_limit@2x.png b/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_limit.imageset/mine_dressUp_limit@2x.png new file mode 100644 index 00000000..f42e7833 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_limit.imageset/mine_dressUp_limit@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_limit.imageset/mine_dressUp_limit@3x.png b/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_limit.imageset/mine_dressUp_limit@3x.png new file mode 100644 index 00000000..794c0d01 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_limit.imageset/mine_dressUp_limit@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_new.imageset/Contents.json b/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_new.imageset/Contents.json new file mode 100644 index 00000000..cbe423c0 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_new.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_dressUp_new@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_dressUp_new@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_new.imageset/mine_dressUp_new@2x.png b/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_new.imageset/mine_dressUp_new@2x.png new file mode 100644 index 00000000..8f0ddd3f Binary files /dev/null and b/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_new.imageset/mine_dressUp_new@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_new.imageset/mine_dressUp_new@3x.png b/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_new.imageset/mine_dressUp_new@3x.png new file mode 100644 index 00000000..412343c5 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/DressUp/mine_dressUp_new.imageset/mine_dressUp_new@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/DressUp/mine_dressup_give.imageset/Contents.json b/YuMi/Assets.xcassets/jm/DressUp/mine_dressup_give.imageset/Contents.json new file mode 100644 index 00000000..d33867cc --- /dev/null +++ b/YuMi/Assets.xcassets/jm/DressUp/mine_dressup_give.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_dressup_give@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_dressup_give@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/DressUp/mine_dressup_give.imageset/mine_dressup_give@2x.png b/YuMi/Assets.xcassets/jm/DressUp/mine_dressup_give.imageset/mine_dressup_give@2x.png new file mode 100644 index 00000000..e718ccca Binary files /dev/null and b/YuMi/Assets.xcassets/jm/DressUp/mine_dressup_give.imageset/mine_dressup_give@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/DressUp/mine_dressup_give.imageset/mine_dressup_give@3x.png b/YuMi/Assets.xcassets/jm/DressUp/mine_dressup_give.imageset/mine_dressup_give@3x.png new file mode 100644 index 00000000..0641e5ef Binary files /dev/null and b/YuMi/Assets.xcassets/jm/DressUp/mine_dressup_give.imageset/mine_dressup_give@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/DressUp/mine_dressup_noble_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/DressUp/mine_dressup_noble_bg.imageset/Contents.json new file mode 100644 index 00000000..9f4f95fd --- /dev/null +++ b/YuMi/Assets.xcassets/jm/DressUp/mine_dressup_noble_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_dressup_noble_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_dressup_noble_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/DressUp/mine_dressup_noble_bg.imageset/mine_dressup_noble_bg@2x.png b/YuMi/Assets.xcassets/jm/DressUp/mine_dressup_noble_bg.imageset/mine_dressup_noble_bg@2x.png new file mode 100644 index 00000000..e6fcefc9 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/DressUp/mine_dressup_noble_bg.imageset/mine_dressup_noble_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/DressUp/mine_dressup_noble_bg.imageset/mine_dressup_noble_bg@3x.png b/YuMi/Assets.xcassets/jm/DressUp/mine_dressup_noble_bg.imageset/mine_dressup_noble_bg@3x.png new file mode 100644 index 00000000..aaa4ec03 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/DressUp/mine_dressup_noble_bg.imageset/mine_dressup_noble_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_exclusive.imageset/Contents.json b/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_exclusive.imageset/Contents.json deleted file mode 100644 index 1724dfff..00000000 --- a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_exclusive.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_dressUp_exclusive@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_dressUp_exclusive@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_exclusive.imageset/yumi_center_dressUp_exclusive@2x.png b/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_exclusive.imageset/yumi_center_dressUp_exclusive@2x.png deleted file mode 100644 index 660ace81..00000000 Binary files a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_exclusive.imageset/yumi_center_dressUp_exclusive@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_exclusive.imageset/yumi_center_dressUp_exclusive@3x.png b/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_exclusive.imageset/yumi_center_dressUp_exclusive@3x.png deleted file mode 100644 index da9c0b6d..00000000 Binary files a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_exclusive.imageset/yumi_center_dressUp_exclusive@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_limit.imageset/Contents.json b/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_limit.imageset/Contents.json deleted file mode 100644 index 43efa1d6..00000000 --- a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_limit.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_dressUp_limit@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_dressUp_limit@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_limit.imageset/yumi_center_dressUp_limit@2x.png b/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_limit.imageset/yumi_center_dressUp_limit@2x.png deleted file mode 100644 index dcf45c3c..00000000 Binary files a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_limit.imageset/yumi_center_dressUp_limit@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_limit.imageset/yumi_center_dressUp_limit@3x.png b/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_limit.imageset/yumi_center_dressUp_limit@3x.png deleted file mode 100644 index 8873b5d8..00000000 Binary files a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_limit.imageset/yumi_center_dressUp_limit@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_new.imageset/Contents.json b/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_new.imageset/Contents.json deleted file mode 100644 index f6f19796..00000000 --- a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_new.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_dressUp_new@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_dressUp_new@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_new.imageset/yumi_center_dressUp_new@2x.png b/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_new.imageset/yumi_center_dressUp_new@2x.png deleted file mode 100644 index 90f6e439..00000000 Binary files a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_new.imageset/yumi_center_dressUp_new@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_new.imageset/yumi_center_dressUp_new@3x.png b/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_new.imageset/yumi_center_dressUp_new@3x.png deleted file mode 100644 index 95033e5b..00000000 Binary files a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressUp_new.imageset/yumi_center_dressUp_new@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressup_give.imageset/Contents.json b/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressup_give.imageset/Contents.json deleted file mode 100644 index b661a8b8..00000000 --- a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressup_give.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_dressup_give@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_dressup_give@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressup_give.imageset/yumi_center_dressup_give@2x.png b/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressup_give.imageset/yumi_center_dressup_give@2x.png deleted file mode 100644 index 5068c609..00000000 Binary files a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressup_give.imageset/yumi_center_dressup_give@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressup_give.imageset/yumi_center_dressup_give@3x.png b/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressup_give.imageset/yumi_center_dressup_give@3x.png deleted file mode 100644 index 41fb8446..00000000 Binary files a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressup_give.imageset/yumi_center_dressup_give@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressup_grand_background.imageset/Contents.json b/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressup_grand_background.imageset/Contents.json deleted file mode 100644 index a4a7fd45..00000000 --- a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressup_grand_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_dressup_grand_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_dressup_grand_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressup_grand_background.imageset/yumi_center_dressup_grand_background@2x.png b/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressup_grand_background.imageset/yumi_center_dressup_grand_background@2x.png deleted file mode 100644 index 913ff1be..00000000 Binary files a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressup_grand_background.imageset/yumi_center_dressup_grand_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressup_grand_background.imageset/yumi_center_dressup_grand_background@3x.png b/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressup_grand_background.imageset/yumi_center_dressup_grand_background@3x.png deleted file mode 100644 index 3ace177c..00000000 Binary files a/YuMi/Assets.xcassets/jm/DressUp/yumi_center_dressup_grand_background.imageset/yumi_center_dressup_grand_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treaseure_fairy_normal_gift_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treaseure_fairy_normal_gift_bg.imageset/Contents.json deleted file mode 100644 index 2d58a696..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treaseure_fairy_normal_gift_bg.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treaseure_fairy_normal_gift_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treaseure_fairy_normal_gift_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treaseure_fairy_normal_gift_bg@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treaseure_fairy_normal_gift_bg@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treaseure_fairy_normal_gift_bg@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treaseure_fairy_normal_gift_bg@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treaseure_fairy_normal_gift_bg.imageset/room_treaseure_fairy_normal_gift_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treaseure_fairy_normal_gift_bg.imageset/room_treaseure_fairy_normal_gift_bg@2x.png deleted file mode 100644 index 67ef1bfb..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treaseure_fairy_normal_gift_bg.imageset/room_treaseure_fairy_normal_gift_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treaseure_fairy_normal_gift_bg.imageset/room_treaseure_fairy_normal_gift_bg@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treaseure_fairy_normal_gift_bg.imageset/room_treaseure_fairy_normal_gift_bg@3x 1.png deleted file mode 100644 index 4dfd33f8..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treaseure_fairy_normal_gift_bg.imageset/room_treaseure_fairy_normal_gift_bg@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treaseure_fairy_normal_gift_bg.imageset/room_treaseure_fairy_normal_gift_bg@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treaseure_fairy_normal_gift_bg.imageset/room_treaseure_fairy_normal_gift_bg@3x 2.png deleted file mode 100644 index a45f6be3..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treaseure_fairy_normal_gift_bg.imageset/room_treaseure_fairy_normal_gift_bg@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treaseure_fairy_normal_gift_bg.imageset/room_treaseure_fairy_normal_gift_bg@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treaseure_fairy_normal_gift_bg.imageset/room_treaseure_fairy_normal_gift_bg@3x 3.png deleted file mode 100644 index 3f680148..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treaseure_fairy_normal_gift_bg.imageset/room_treaseure_fairy_normal_gift_bg@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treaseure_fairy_normal_gift_bg.imageset/room_treaseure_fairy_normal_gift_bg@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treaseure_fairy_normal_gift_bg.imageset/room_treaseure_fairy_normal_gift_bg@3x 4.png deleted file mode 100644 index bb28993a..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treaseure_fairy_normal_gift_bg.imageset/room_treaseure_fairy_normal_gift_bg@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treaseure_fairy_normal_gift_bg.imageset/room_treaseure_fairy_normal_gift_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treaseure_fairy_normal_gift_bg.imageset/room_treaseure_fairy_normal_gift_bg@3x.png deleted file mode 100644 index 210e3c8a..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treaseure_fairy_normal_gift_bg.imageset/room_treaseure_fairy_normal_gift_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_faily_result_gift_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_faily_result_gift_bg.imageset/Contents.json deleted file mode 100644 index b4c97d4e..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_faily_result_gift_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_faily_result_gift_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_faily_result_gift_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_faily_result_gift_bg.imageset/room_treasure_faily_result_gift_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_faily_result_gift_bg.imageset/room_treasure_faily_result_gift_bg@2x.png deleted file mode 100644 index 8ae94012..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_faily_result_gift_bg.imageset/room_treasure_faily_result_gift_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_faily_result_gift_bg.imageset/room_treasure_faily_result_gift_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_faily_result_gift_bg.imageset/room_treasure_faily_result_gift_bg@3x.png deleted file mode 100644 index 10fdeb02..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_faily_result_gift_bg.imageset/room_treasure_faily_result_gift_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_back.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_back.imageset/Contents.json deleted file mode 100644 index 8e8ada34..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_back.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_back@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_back@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_back.imageset/room_treasure_fairy_back@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_back.imageset/room_treasure_fairy_back@2x.png deleted file mode 100644 index a84a01f4..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_back.imageset/room_treasure_fairy_back@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_back.imageset/room_treasure_fairy_back@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_back.imageset/room_treasure_fairy_back@3x.png deleted file mode 100644 index 78d85cd4..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_back.imageset/room_treasure_fairy_back@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_ask.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_ask.imageset/Contents.json deleted file mode 100644 index 20cbe8df..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_ask.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_ball_ask@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ball_ask@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ball_ask@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ball_ask@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ball_ask@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ball_ask@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_ask.imageset/room_treasure_fairy_ball_ask@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_ask.imageset/room_treasure_fairy_ball_ask@2x.png deleted file mode 100644 index 81e3e40e..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_ask.imageset/room_treasure_fairy_ball_ask@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_ask.imageset/room_treasure_fairy_ball_ask@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_ask.imageset/room_treasure_fairy_ball_ask@3x 1.png deleted file mode 100644 index 53af3006..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_ask.imageset/room_treasure_fairy_ball_ask@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_ask.imageset/room_treasure_fairy_ball_ask@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_ask.imageset/room_treasure_fairy_ball_ask@3x 2.png deleted file mode 100644 index 54187556..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_ask.imageset/room_treasure_fairy_ball_ask@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_ask.imageset/room_treasure_fairy_ball_ask@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_ask.imageset/room_treasure_fairy_ball_ask@3x 3.png deleted file mode 100644 index 7acb2856..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_ask.imageset/room_treasure_fairy_ball_ask@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_ask.imageset/room_treasure_fairy_ball_ask@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_ask.imageset/room_treasure_fairy_ball_ask@3x 4.png deleted file mode 100644 index 5cfd99e2..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_ask.imageset/room_treasure_fairy_ball_ask@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_ask.imageset/room_treasure_fairy_ball_ask@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_ask.imageset/room_treasure_fairy_ball_ask@3x.png deleted file mode 100644 index 2b2b476e..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_ask.imageset/room_treasure_fairy_ball_ask@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_not_get.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_not_get.imageset/Contents.json deleted file mode 100644 index 67ef2b27..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_not_get.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_ball_not_get@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ball_not_get@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ball_not_get@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ball_not_get@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ball_not_get@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ball_not_get@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_not_get.imageset/room_treasure_fairy_ball_not_get@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_not_get.imageset/room_treasure_fairy_ball_not_get@2x.png deleted file mode 100644 index e10d5ec4..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_not_get.imageset/room_treasure_fairy_ball_not_get@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_not_get.imageset/room_treasure_fairy_ball_not_get@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_not_get.imageset/room_treasure_fairy_ball_not_get@3x 1.png deleted file mode 100644 index c28f6863..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_not_get.imageset/room_treasure_fairy_ball_not_get@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_not_get.imageset/room_treasure_fairy_ball_not_get@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_not_get.imageset/room_treasure_fairy_ball_not_get@3x 2.png deleted file mode 100644 index 329e5d45..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_not_get.imageset/room_treasure_fairy_ball_not_get@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_not_get.imageset/room_treasure_fairy_ball_not_get@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_not_get.imageset/room_treasure_fairy_ball_not_get@3x 3.png deleted file mode 100644 index 56b9deaa..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_not_get.imageset/room_treasure_fairy_ball_not_get@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_not_get.imageset/room_treasure_fairy_ball_not_get@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_not_get.imageset/room_treasure_fairy_ball_not_get@3x 4.png deleted file mode 100644 index 64cf4787..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_not_get.imageset/room_treasure_fairy_ball_not_get@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_not_get.imageset/room_treasure_fairy_ball_not_get@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_not_get.imageset/room_treasure_fairy_ball_not_get@3x.png deleted file mode 100644 index 6d7c2a12..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_not_get.imageset/room_treasure_fairy_ball_not_get@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_send.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_send.imageset/Contents.json deleted file mode 100644 index 6f2f8f2a..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_send.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_ball_send@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ball_send@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ball_send@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ball_send@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ball_send@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ball_send@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_send.imageset/room_treasure_fairy_ball_send@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_send.imageset/room_treasure_fairy_ball_send@2x.png deleted file mode 100644 index b766f8ca..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_send.imageset/room_treasure_fairy_ball_send@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_send.imageset/room_treasure_fairy_ball_send@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_send.imageset/room_treasure_fairy_ball_send@3x 1.png deleted file mode 100644 index c6740bff..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_send.imageset/room_treasure_fairy_ball_send@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_send.imageset/room_treasure_fairy_ball_send@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_send.imageset/room_treasure_fairy_ball_send@3x 2.png deleted file mode 100644 index c69093fe..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_send.imageset/room_treasure_fairy_ball_send@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_send.imageset/room_treasure_fairy_ball_send@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_send.imageset/room_treasure_fairy_ball_send@3x 3.png deleted file mode 100644 index 05d98318..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_send.imageset/room_treasure_fairy_ball_send@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_send.imageset/room_treasure_fairy_ball_send@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_send.imageset/room_treasure_fairy_ball_send@3x 4.png deleted file mode 100644 index 0b356a5e..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_send.imageset/room_treasure_fairy_ball_send@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_send.imageset/room_treasure_fairy_ball_send@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_send.imageset/room_treasure_fairy_ball_send@3x.png deleted file mode 100644 index 37745391..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ball_send.imageset/room_treasure_fairy_ball_send@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_bg.imageset/Contents.json deleted file mode 100644 index 2fa25d96..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_bg.imageset/room_treasure_fairy_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_bg.imageset/room_treasure_fairy_bg@2x.png deleted file mode 100644 index 93d8ba03..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_bg.imageset/room_treasure_fairy_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_bg.imageset/room_treasure_fairy_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_bg.imageset/room_treasure_fairy_bg@3x.png deleted file mode 100644 index 18ed7772..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_bg.imageset/room_treasure_fairy_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_bg.imageset/Contents.json deleted file mode 100644 index 83d347bb..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_draw_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_draw_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_bg.imageset/room_treasure_fairy_draw_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_bg.imageset/room_treasure_fairy_draw_bg@2x.png deleted file mode 100644 index 4561a100..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_bg.imageset/room_treasure_fairy_draw_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_bg.imageset/room_treasure_fairy_draw_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_bg.imageset/room_treasure_fairy_draw_bg@3x.png deleted file mode 100644 index 1d4a094b..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_bg.imageset/room_treasure_fairy_draw_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_cover.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_cover.imageset/Contents.json deleted file mode 100644 index 93479331..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_cover.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_draw_cover@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_draw_cover@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_cover.imageset/room_treasure_fairy_draw_cover@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_cover.imageset/room_treasure_fairy_draw_cover@2x.png deleted file mode 100644 index db9a1b07..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_cover.imageset/room_treasure_fairy_draw_cover@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_cover.imageset/room_treasure_fairy_draw_cover@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_cover.imageset/room_treasure_fairy_draw_cover@3x.png deleted file mode 100644 index 5f92118f..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_cover.imageset/room_treasure_fairy_draw_cover@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond.imageset/Contents.json deleted file mode 100644 index 9304e2d0..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_draw_diamond@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_draw_diamond@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond.imageset/room_treasure_fairy_draw_diamond@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond.imageset/room_treasure_fairy_draw_diamond@2x.png deleted file mode 100644 index aa3c48d8..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond.imageset/room_treasure_fairy_draw_diamond@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond.imageset/room_treasure_fairy_draw_diamond@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond.imageset/room_treasure_fairy_draw_diamond@3x.png deleted file mode 100644 index e504d0de..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond.imageset/room_treasure_fairy_draw_diamond@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond_bg.imageset/Contents.json deleted file mode 100644 index 4d300fa4..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_draw_diamond_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_draw_diamond_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond_bg.imageset/room_treasure_fairy_draw_diamond_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond_bg.imageset/room_treasure_fairy_draw_diamond_bg@2x.png deleted file mode 100644 index 01050339..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond_bg.imageset/room_treasure_fairy_draw_diamond_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond_bg.imageset/room_treasure_fairy_draw_diamond_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond_bg.imageset/room_treasure_fairy_draw_diamond_bg@3x.png deleted file mode 100644 index 5f2f5c68..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond_bg.imageset/room_treasure_fairy_draw_diamond_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond_cover.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond_cover.imageset/Contents.json deleted file mode 100644 index bf098d33..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond_cover.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_draw_diamond_cover@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_draw_diamond_cover@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond_cover.imageset/room_treasure_fairy_draw_diamond_cover@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond_cover.imageset/room_treasure_fairy_draw_diamond_cover@2x.png deleted file mode 100644 index 6326dff5..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond_cover.imageset/room_treasure_fairy_draw_diamond_cover@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond_cover.imageset/room_treasure_fairy_draw_diamond_cover@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond_cover.imageset/room_treasure_fairy_draw_diamond_cover@3x.png deleted file mode 100644 index 90a87e34..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_diamond_cover.imageset/room_treasure_fairy_draw_diamond_cover@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_lucky_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_lucky_bg.imageset/Contents.json deleted file mode 100644 index 24fca230..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_lucky_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_draw_lucky_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_draw_lucky_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_lucky_bg.imageset/room_treasure_fairy_draw_lucky_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_lucky_bg.imageset/room_treasure_fairy_draw_lucky_bg@2x.png deleted file mode 100644 index 16aefece..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_lucky_bg.imageset/room_treasure_fairy_draw_lucky_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_lucky_bg.imageset/room_treasure_fairy_draw_lucky_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_lucky_bg.imageset/room_treasure_fairy_draw_lucky_bg@3x.png deleted file mode 100644 index 02f46897..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_draw_lucky_bg.imageset/room_treasure_fairy_draw_lucky_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_enter.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_enter.imageset/Contents.json deleted file mode 100644 index b26f31d1..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_enter.imageset/Contents.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_enter.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_enter 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_enter 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_enter 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_enter 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_enter.imageset/room_treasure_fairy_enter 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_enter.imageset/room_treasure_fairy_enter 1.png deleted file mode 100644 index 0dc07c3b..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_enter.imageset/room_treasure_fairy_enter 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_enter.imageset/room_treasure_fairy_enter 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_enter.imageset/room_treasure_fairy_enter 2.png deleted file mode 100644 index 33140853..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_enter.imageset/room_treasure_fairy_enter 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_enter.imageset/room_treasure_fairy_enter 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_enter.imageset/room_treasure_fairy_enter 3.png deleted file mode 100644 index 0845af60..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_enter.imageset/room_treasure_fairy_enter 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_enter.imageset/room_treasure_fairy_enter 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_enter.imageset/room_treasure_fairy_enter 4.png deleted file mode 100644 index e6be96da..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_enter.imageset/room_treasure_fairy_enter 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_enter.imageset/room_treasure_fairy_enter.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_enter.imageset/room_treasure_fairy_enter.png deleted file mode 100644 index cb0dd81a..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_enter.imageset/room_treasure_fairy_enter.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_hundred_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_hundred_bg.imageset/Contents.json deleted file mode 100644 index f04bd923..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_hundred_bg.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_hundred_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_hundred_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_hundred_bg@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_hundred_bg@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_hundred_bg@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_hundred_bg@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_hundred_bg.imageset/room_treasure_fairy_hundred_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_hundred_bg.imageset/room_treasure_fairy_hundred_bg@2x.png deleted file mode 100644 index 1f89674f..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_hundred_bg.imageset/room_treasure_fairy_hundred_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_hundred_bg.imageset/room_treasure_fairy_hundred_bg@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_hundred_bg.imageset/room_treasure_fairy_hundred_bg@3x 1.png deleted file mode 100644 index c4b78d36..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_hundred_bg.imageset/room_treasure_fairy_hundred_bg@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_hundred_bg.imageset/room_treasure_fairy_hundred_bg@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_hundred_bg.imageset/room_treasure_fairy_hundred_bg@3x 2.png deleted file mode 100644 index 130716f7..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_hundred_bg.imageset/room_treasure_fairy_hundred_bg@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_hundred_bg.imageset/room_treasure_fairy_hundred_bg@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_hundred_bg.imageset/room_treasure_fairy_hundred_bg@3x 3.png deleted file mode 100644 index adac798e..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_hundred_bg.imageset/room_treasure_fairy_hundred_bg@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_hundred_bg.imageset/room_treasure_fairy_hundred_bg@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_hundred_bg.imageset/room_treasure_fairy_hundred_bg@3x 4.png deleted file mode 100644 index 947bf248..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_hundred_bg.imageset/room_treasure_fairy_hundred_bg@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_hundred_bg.imageset/room_treasure_fairy_hundred_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_hundred_bg.imageset/room_treasure_fairy_hundred_bg@3x.png deleted file mode 100644 index 99697b48..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_hundred_bg.imageset/room_treasure_fairy_hundred_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_bg.imageset/Contents.json deleted file mode 100644 index 2258e2e3..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_bg.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_more_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_more_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_more_bg@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_more_bg@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_more_bg@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_more_bg@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_bg.imageset/room_treasure_fairy_more_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_bg.imageset/room_treasure_fairy_more_bg@2x.png deleted file mode 100644 index 8867f8bd..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_bg.imageset/room_treasure_fairy_more_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_bg.imageset/room_treasure_fairy_more_bg@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_bg.imageset/room_treasure_fairy_more_bg@3x 1.png deleted file mode 100644 index 0e8b658c..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_bg.imageset/room_treasure_fairy_more_bg@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_bg.imageset/room_treasure_fairy_more_bg@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_bg.imageset/room_treasure_fairy_more_bg@3x 2.png deleted file mode 100644 index 213a1bce..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_bg.imageset/room_treasure_fairy_more_bg@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_bg.imageset/room_treasure_fairy_more_bg@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_bg.imageset/room_treasure_fairy_more_bg@3x 3.png deleted file mode 100644 index e16226aa..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_bg.imageset/room_treasure_fairy_more_bg@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_bg.imageset/room_treasure_fairy_more_bg@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_bg.imageset/room_treasure_fairy_more_bg@3x 4.png deleted file mode 100644 index 3c12aa59..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_bg.imageset/room_treasure_fairy_more_bg@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_bg.imageset/room_treasure_fairy_more_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_bg.imageset/room_treasure_fairy_more_bg@3x.png deleted file mode 100644 index 3e50280f..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_bg.imageset/room_treasure_fairy_more_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_title_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_title_bg.imageset/Contents.json deleted file mode 100644 index 66545ff5..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_title_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_more_title_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_more_title_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_title_bg.imageset/room_treasure_fairy_more_title_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_title_bg.imageset/room_treasure_fairy_more_title_bg@2x.png deleted file mode 100644 index 2dd1efe3..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_title_bg.imageset/room_treasure_fairy_more_title_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_title_bg.imageset/room_treasure_fairy_more_title_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_title_bg.imageset/room_treasure_fairy_more_title_bg@3x.png deleted file mode 100644 index 5993b41e..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_more_title_bg.imageset/room_treasure_fairy_more_title_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_bg.imageset/Contents.json deleted file mode 100644 index 9efd5efb..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_bg.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_my_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_bg@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_bg@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_bg@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_bg@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_bg.imageset/room_treasure_fairy_my_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_bg.imageset/room_treasure_fairy_my_bg@2x.png deleted file mode 100644 index e26ff3bc..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_bg.imageset/room_treasure_fairy_my_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_bg.imageset/room_treasure_fairy_my_bg@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_bg.imageset/room_treasure_fairy_my_bg@3x 1.png deleted file mode 100644 index 13305d93..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_bg.imageset/room_treasure_fairy_my_bg@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_bg.imageset/room_treasure_fairy_my_bg@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_bg.imageset/room_treasure_fairy_my_bg@3x 2.png deleted file mode 100644 index 7e6a036f..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_bg.imageset/room_treasure_fairy_my_bg@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_bg.imageset/room_treasure_fairy_my_bg@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_bg.imageset/room_treasure_fairy_my_bg@3x 3.png deleted file mode 100644 index 40c4bf7e..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_bg.imageset/room_treasure_fairy_my_bg@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_bg.imageset/room_treasure_fairy_my_bg@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_bg.imageset/room_treasure_fairy_my_bg@3x 4.png deleted file mode 100644 index d0fa1fa4..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_bg.imageset/room_treasure_fairy_my_bg@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_bg.imageset/room_treasure_fairy_my_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_bg.imageset/room_treasure_fairy_my_bg@3x.png deleted file mode 100644 index 32a8a23d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_bg.imageset/room_treasure_fairy_my_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_friend_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_friend_bg.imageset/Contents.json deleted file mode 100644 index 257ed8de..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_friend_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_my_friend_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_friend_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_friend_bg.imageset/room_treasure_fairy_my_friend_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_friend_bg.imageset/room_treasure_fairy_my_friend_bg@2x.png deleted file mode 100644 index 4d8721e8..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_friend_bg.imageset/room_treasure_fairy_my_friend_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_friend_bg.imageset/room_treasure_fairy_my_friend_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_friend_bg.imageset/room_treasure_fairy_my_friend_bg@3x.png deleted file mode 100644 index 9b02a52e..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_friend_bg.imageset/room_treasure_fairy_my_friend_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_ball_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_ball_bg.imageset/Contents.json deleted file mode 100644 index 74a39c4c..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_ball_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_my_high_ball_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_high_ball_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_ball_bg.imageset/room_treasure_fairy_my_high_ball_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_ball_bg.imageset/room_treasure_fairy_my_high_ball_bg@2x.png deleted file mode 100644 index 7c2652b4..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_ball_bg.imageset/room_treasure_fairy_my_high_ball_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_ball_bg.imageset/room_treasure_fairy_my_high_ball_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_ball_bg.imageset/room_treasure_fairy_my_high_ball_bg@3x.png deleted file mode 100644 index 569c44af..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_ball_bg.imageset/room_treasure_fairy_my_high_ball_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_ball_cover.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_ball_cover.imageset/Contents.json deleted file mode 100644 index 2580f7f8..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_ball_cover.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_my_high_ball_cover@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_high_ball_cover@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_ball_cover.imageset/room_treasure_fairy_my_high_ball_cover@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_ball_cover.imageset/room_treasure_fairy_my_high_ball_cover@2x.png deleted file mode 100644 index 4c71dec2..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_ball_cover.imageset/room_treasure_fairy_my_high_ball_cover@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_ball_cover.imageset/room_treasure_fairy_my_high_ball_cover@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_ball_cover.imageset/room_treasure_fairy_my_high_ball_cover@3x.png deleted file mode 100644 index af730377..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_ball_cover.imageset/room_treasure_fairy_my_high_ball_cover@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_normal.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_normal.imageset/Contents.json deleted file mode 100644 index 3bdbafe0..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_normal.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_my_high_title_normal@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_high_title_normal@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_high_title_normal@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_high_title_normal@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_high_title_normal@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_high_title_normal@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_normal.imageset/room_treasure_fairy_my_high_title_normal@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_normal.imageset/room_treasure_fairy_my_high_title_normal@2x.png deleted file mode 100644 index 1b694360..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_normal.imageset/room_treasure_fairy_my_high_title_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_normal.imageset/room_treasure_fairy_my_high_title_normal@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_normal.imageset/room_treasure_fairy_my_high_title_normal@3x 1.png deleted file mode 100644 index 0b84bb98..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_normal.imageset/room_treasure_fairy_my_high_title_normal@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_normal.imageset/room_treasure_fairy_my_high_title_normal@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_normal.imageset/room_treasure_fairy_my_high_title_normal@3x 2.png deleted file mode 100644 index adac00d9..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_normal.imageset/room_treasure_fairy_my_high_title_normal@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_normal.imageset/room_treasure_fairy_my_high_title_normal@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_normal.imageset/room_treasure_fairy_my_high_title_normal@3x 3.png deleted file mode 100644 index 87024776..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_normal.imageset/room_treasure_fairy_my_high_title_normal@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_normal.imageset/room_treasure_fairy_my_high_title_normal@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_normal.imageset/room_treasure_fairy_my_high_title_normal@3x 4.png deleted file mode 100644 index 5a537b96..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_normal.imageset/room_treasure_fairy_my_high_title_normal@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_normal.imageset/room_treasure_fairy_my_high_title_normal@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_normal.imageset/room_treasure_fairy_my_high_title_normal@3x.png deleted file mode 100644 index 7d973a87..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_normal.imageset/room_treasure_fairy_my_high_title_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_select.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_select.imageset/Contents.json deleted file mode 100644 index c1d065f7..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_select.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_my_high_title_select@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_high_title_select@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_high_title_select@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_high_title_select@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_high_title_select@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_high_title_select@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_select.imageset/room_treasure_fairy_my_high_title_select@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_select.imageset/room_treasure_fairy_my_high_title_select@2x.png deleted file mode 100644 index 0e55f03c..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_select.imageset/room_treasure_fairy_my_high_title_select@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_select.imageset/room_treasure_fairy_my_high_title_select@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_select.imageset/room_treasure_fairy_my_high_title_select@3x 1.png deleted file mode 100644 index f8eedf52..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_select.imageset/room_treasure_fairy_my_high_title_select@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_select.imageset/room_treasure_fairy_my_high_title_select@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_select.imageset/room_treasure_fairy_my_high_title_select@3x 2.png deleted file mode 100644 index b949449f..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_select.imageset/room_treasure_fairy_my_high_title_select@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_select.imageset/room_treasure_fairy_my_high_title_select@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_select.imageset/room_treasure_fairy_my_high_title_select@3x 3.png deleted file mode 100644 index 1a18b92c..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_select.imageset/room_treasure_fairy_my_high_title_select@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_select.imageset/room_treasure_fairy_my_high_title_select@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_select.imageset/room_treasure_fairy_my_high_title_select@3x 4.png deleted file mode 100644 index c0bf4ac4..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_select.imageset/room_treasure_fairy_my_high_title_select@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_select.imageset/room_treasure_fairy_my_high_title_select@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_select.imageset/room_treasure_fairy_my_high_title_select@3x.png deleted file mode 100644 index a038a6f8..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_high_title_select.imageset/room_treasure_fairy_my_high_title_select@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_ball_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_ball_bg.imageset/Contents.json deleted file mode 100644 index c9f65f0c..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_ball_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_my_low_ball_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_low_ball_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_ball_bg.imageset/room_treasure_fairy_my_low_ball_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_ball_bg.imageset/room_treasure_fairy_my_low_ball_bg@2x.png deleted file mode 100644 index df8123b1..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_ball_bg.imageset/room_treasure_fairy_my_low_ball_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_ball_bg.imageset/room_treasure_fairy_my_low_ball_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_ball_bg.imageset/room_treasure_fairy_my_low_ball_bg@3x.png deleted file mode 100644 index c4ee4154..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_ball_bg.imageset/room_treasure_fairy_my_low_ball_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_ball_cover.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_ball_cover.imageset/Contents.json deleted file mode 100644 index 40b1dda4..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_ball_cover.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_my_low_ball_cover@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_low_ball_cover@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_ball_cover.imageset/room_treasure_fairy_my_low_ball_cover@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_ball_cover.imageset/room_treasure_fairy_my_low_ball_cover@2x.png deleted file mode 100644 index 60300a22..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_ball_cover.imageset/room_treasure_fairy_my_low_ball_cover@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_ball_cover.imageset/room_treasure_fairy_my_low_ball_cover@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_ball_cover.imageset/room_treasure_fairy_my_low_ball_cover@3x.png deleted file mode 100644 index b8309ade..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_ball_cover.imageset/room_treasure_fairy_my_low_ball_cover@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_normal.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_normal.imageset/Contents.json deleted file mode 100644 index 1989e116..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_normal.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_my_low_title_normal@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_low_title_normal@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_low_title_normal@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_low_title_normal@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_low_title_normal@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_low_title_normal@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_normal.imageset/room_treasure_fairy_my_low_title_normal@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_normal.imageset/room_treasure_fairy_my_low_title_normal@2x.png deleted file mode 100644 index 7ac51fff..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_normal.imageset/room_treasure_fairy_my_low_title_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_normal.imageset/room_treasure_fairy_my_low_title_normal@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_normal.imageset/room_treasure_fairy_my_low_title_normal@3x 1.png deleted file mode 100644 index f3131c60..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_normal.imageset/room_treasure_fairy_my_low_title_normal@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_normal.imageset/room_treasure_fairy_my_low_title_normal@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_normal.imageset/room_treasure_fairy_my_low_title_normal@3x 2.png deleted file mode 100644 index 392011a6..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_normal.imageset/room_treasure_fairy_my_low_title_normal@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_normal.imageset/room_treasure_fairy_my_low_title_normal@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_normal.imageset/room_treasure_fairy_my_low_title_normal@3x 3.png deleted file mode 100644 index b91b793f..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_normal.imageset/room_treasure_fairy_my_low_title_normal@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_normal.imageset/room_treasure_fairy_my_low_title_normal@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_normal.imageset/room_treasure_fairy_my_low_title_normal@3x 4.png deleted file mode 100644 index 2ae8e9a9..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_normal.imageset/room_treasure_fairy_my_low_title_normal@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_normal.imageset/room_treasure_fairy_my_low_title_normal@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_normal.imageset/room_treasure_fairy_my_low_title_normal@3x.png deleted file mode 100644 index d8ecffea..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_normal.imageset/room_treasure_fairy_my_low_title_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_select.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_select.imageset/Contents.json deleted file mode 100644 index 1e2a6484..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_select.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_my_low_title_select@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_low_title_select@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_low_title_select@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_low_title_select@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_low_title_select@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_low_title_select@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_select.imageset/room_treasure_fairy_my_low_title_select@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_select.imageset/room_treasure_fairy_my_low_title_select@2x.png deleted file mode 100644 index 81219259..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_select.imageset/room_treasure_fairy_my_low_title_select@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_select.imageset/room_treasure_fairy_my_low_title_select@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_select.imageset/room_treasure_fairy_my_low_title_select@3x 1.png deleted file mode 100644 index f28f8aa5..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_select.imageset/room_treasure_fairy_my_low_title_select@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_select.imageset/room_treasure_fairy_my_low_title_select@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_select.imageset/room_treasure_fairy_my_low_title_select@3x 2.png deleted file mode 100644 index 5ee2f9f4..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_select.imageset/room_treasure_fairy_my_low_title_select@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_select.imageset/room_treasure_fairy_my_low_title_select@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_select.imageset/room_treasure_fairy_my_low_title_select@3x 3.png deleted file mode 100644 index 88ac4b6d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_select.imageset/room_treasure_fairy_my_low_title_select@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_select.imageset/room_treasure_fairy_my_low_title_select@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_select.imageset/room_treasure_fairy_my_low_title_select@3x 4.png deleted file mode 100644 index 7d8c6c1e..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_select.imageset/room_treasure_fairy_my_low_title_select@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_select.imageset/room_treasure_fairy_my_low_title_select@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_select.imageset/room_treasure_fairy_my_low_title_select@3x.png deleted file mode 100644 index acd328a5..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_low_title_select.imageset/room_treasure_fairy_my_low_title_select@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_ball_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_ball_bg.imageset/Contents.json deleted file mode 100644 index 07cab14b..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_ball_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_my_middle_ball_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_middle_ball_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_ball_bg.imageset/room_treasure_fairy_my_middle_ball_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_ball_bg.imageset/room_treasure_fairy_my_middle_ball_bg@2x.png deleted file mode 100644 index 7455fca6..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_ball_bg.imageset/room_treasure_fairy_my_middle_ball_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_ball_bg.imageset/room_treasure_fairy_my_middle_ball_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_ball_bg.imageset/room_treasure_fairy_my_middle_ball_bg@3x.png deleted file mode 100644 index 40894827..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_ball_bg.imageset/room_treasure_fairy_my_middle_ball_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_ball_cover.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_ball_cover.imageset/Contents.json deleted file mode 100644 index edabc3db..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_ball_cover.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_my_middle_ball_cover@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_middle_ball_cover@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_ball_cover.imageset/room_treasure_fairy_my_middle_ball_cover@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_ball_cover.imageset/room_treasure_fairy_my_middle_ball_cover@2x.png deleted file mode 100644 index a11748b0..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_ball_cover.imageset/room_treasure_fairy_my_middle_ball_cover@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_ball_cover.imageset/room_treasure_fairy_my_middle_ball_cover@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_ball_cover.imageset/room_treasure_fairy_my_middle_ball_cover@3x.png deleted file mode 100644 index 3a86ad5c..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_ball_cover.imageset/room_treasure_fairy_my_middle_ball_cover@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_normal.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_normal.imageset/Contents.json deleted file mode 100644 index 1db069c4..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_normal.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_my_middle_title_normal@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_middle_title_normal@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_middle_title_normal@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_middle_title_normal@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_middle_title_normal@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_middle_title_normal@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_normal.imageset/room_treasure_fairy_my_middle_title_normal@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_normal.imageset/room_treasure_fairy_my_middle_title_normal@2x.png deleted file mode 100644 index e0be3211..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_normal.imageset/room_treasure_fairy_my_middle_title_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_normal.imageset/room_treasure_fairy_my_middle_title_normal@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_normal.imageset/room_treasure_fairy_my_middle_title_normal@3x 1.png deleted file mode 100644 index c8bedefe..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_normal.imageset/room_treasure_fairy_my_middle_title_normal@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_normal.imageset/room_treasure_fairy_my_middle_title_normal@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_normal.imageset/room_treasure_fairy_my_middle_title_normal@3x 2.png deleted file mode 100644 index 238f2442..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_normal.imageset/room_treasure_fairy_my_middle_title_normal@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_normal.imageset/room_treasure_fairy_my_middle_title_normal@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_normal.imageset/room_treasure_fairy_my_middle_title_normal@3x 3.png deleted file mode 100644 index e32c30dc..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_normal.imageset/room_treasure_fairy_my_middle_title_normal@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_normal.imageset/room_treasure_fairy_my_middle_title_normal@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_normal.imageset/room_treasure_fairy_my_middle_title_normal@3x 4.png deleted file mode 100644 index bc487282..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_normal.imageset/room_treasure_fairy_my_middle_title_normal@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_normal.imageset/room_treasure_fairy_my_middle_title_normal@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_normal.imageset/room_treasure_fairy_my_middle_title_normal@3x.png deleted file mode 100644 index cd7aa490..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_normal.imageset/room_treasure_fairy_my_middle_title_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_select.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_select.imageset/Contents.json deleted file mode 100644 index 2a07e54a..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_select.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_my_middle_title_select@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_middle_title_select@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_middle_title_select@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_middle_title_select@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_middle_title_select@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_middle_title_select@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_select.imageset/room_treasure_fairy_my_middle_title_select@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_select.imageset/room_treasure_fairy_my_middle_title_select@2x.png deleted file mode 100644 index 56d6ee7f..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_select.imageset/room_treasure_fairy_my_middle_title_select@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_select.imageset/room_treasure_fairy_my_middle_title_select@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_select.imageset/room_treasure_fairy_my_middle_title_select@3x 1.png deleted file mode 100644 index f0d0e4c1..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_select.imageset/room_treasure_fairy_my_middle_title_select@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_select.imageset/room_treasure_fairy_my_middle_title_select@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_select.imageset/room_treasure_fairy_my_middle_title_select@3x 2.png deleted file mode 100644 index 949bb11f..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_select.imageset/room_treasure_fairy_my_middle_title_select@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_select.imageset/room_treasure_fairy_my_middle_title_select@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_select.imageset/room_treasure_fairy_my_middle_title_select@3x 3.png deleted file mode 100644 index 1b9a1f2c..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_select.imageset/room_treasure_fairy_my_middle_title_select@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_select.imageset/room_treasure_fairy_my_middle_title_select@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_select.imageset/room_treasure_fairy_my_middle_title_select@3x 4.png deleted file mode 100644 index bab1d432..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_select.imageset/room_treasure_fairy_my_middle_title_select@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_select.imageset/room_treasure_fairy_my_middle_title_select@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_select.imageset/room_treasure_fairy_my_middle_title_select@3x.png deleted file mode 100644 index 0d871f60..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_middle_title_select.imageset/room_treasure_fairy_my_middle_title_select@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_record_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_record_bg.imageset/Contents.json deleted file mode 100644 index 409a7f5b..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_record_bg.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_my_record_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_record_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_record_bg@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_record_bg@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_record_bg@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_record_bg@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_record_bg.imageset/room_treasure_fairy_my_record_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_record_bg.imageset/room_treasure_fairy_my_record_bg@2x.png deleted file mode 100644 index b44af673..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_record_bg.imageset/room_treasure_fairy_my_record_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_record_bg.imageset/room_treasure_fairy_my_record_bg@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_record_bg.imageset/room_treasure_fairy_my_record_bg@3x 1.png deleted file mode 100644 index 7653819d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_record_bg.imageset/room_treasure_fairy_my_record_bg@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_record_bg.imageset/room_treasure_fairy_my_record_bg@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_record_bg.imageset/room_treasure_fairy_my_record_bg@3x 2.png deleted file mode 100644 index 73b520e1..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_record_bg.imageset/room_treasure_fairy_my_record_bg@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_record_bg.imageset/room_treasure_fairy_my_record_bg@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_record_bg.imageset/room_treasure_fairy_my_record_bg@3x 3.png deleted file mode 100644 index 34699059..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_record_bg.imageset/room_treasure_fairy_my_record_bg@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_record_bg.imageset/room_treasure_fairy_my_record_bg@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_record_bg.imageset/room_treasure_fairy_my_record_bg@3x 4.png deleted file mode 100644 index 9eb4f305..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_record_bg.imageset/room_treasure_fairy_my_record_bg@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_record_bg.imageset/room_treasure_fairy_my_record_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_record_bg.imageset/room_treasure_fairy_my_record_bg@3x.png deleted file mode 100644 index 10834010..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_record_bg.imageset/room_treasure_fairy_my_record_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_segment_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_segment_bg.imageset/Contents.json deleted file mode 100644 index 026e1217..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_segment_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_my_segment_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_segment_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_segment_bg.imageset/room_treasure_fairy_my_segment_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_segment_bg.imageset/room_treasure_fairy_my_segment_bg@2x.png deleted file mode 100644 index 53badb30..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_segment_bg.imageset/room_treasure_fairy_my_segment_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_segment_bg.imageset/room_treasure_fairy_my_segment_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_segment_bg.imageset/room_treasure_fairy_my_segment_bg@3x.png deleted file mode 100644 index af142066..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_segment_bg.imageset/room_treasure_fairy_my_segment_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_send_record_back.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_send_record_back.imageset/Contents.json deleted file mode 100644 index 1595773b..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_send_record_back.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_my_send_record_back@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_send_record_back@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_send_record_back.imageset/room_treasure_fairy_my_send_record_back@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_send_record_back.imageset/room_treasure_fairy_my_send_record_back@2x.png deleted file mode 100644 index 1fd87fad..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_send_record_back.imageset/room_treasure_fairy_my_send_record_back@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_send_record_back.imageset/room_treasure_fairy_my_send_record_back@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_send_record_back.imageset/room_treasure_fairy_my_send_record_back@3x.png deleted file mode 100644 index e86c58b4..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_send_record_back.imageset/room_treasure_fairy_my_send_record_back@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_send_record_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_send_record_bg.imageset/Contents.json deleted file mode 100644 index cab5f602..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_send_record_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_my_send_record_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_send_record_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_send_record_bg.imageset/room_treasure_fairy_my_send_record_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_send_record_bg.imageset/room_treasure_fairy_my_send_record_bg@2x.png deleted file mode 100644 index e0df494d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_send_record_bg.imageset/room_treasure_fairy_my_send_record_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_send_record_bg.imageset/room_treasure_fairy_my_send_record_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_send_record_bg.imageset/room_treasure_fairy_my_send_record_bg@3x.png deleted file mode 100644 index 53ed469e..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_send_record_bg.imageset/room_treasure_fairy_my_send_record_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_tips_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_tips_bg.imageset/Contents.json deleted file mode 100644 index 8d022ca5..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_tips_bg.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treaseure_fairy_large_gift_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treaseure_fairy_large_gift_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_tips_bg@3x 2.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_tips_bg@3x.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_tips_bg@3x 1.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_tips_bg@3x 3.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_tips_bg.imageset/room_treaseure_fairy_large_gift_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_tips_bg.imageset/room_treaseure_fairy_large_gift_bg@2x.png deleted file mode 100644 index 53610bf2..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_tips_bg.imageset/room_treaseure_fairy_large_gift_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_tips_bg.imageset/room_treaseure_fairy_large_gift_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_tips_bg.imageset/room_treaseure_fairy_large_gift_bg@3x.png deleted file mode 100644 index d3923871..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_tips_bg.imageset/room_treaseure_fairy_large_gift_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_tips_bg.imageset/room_treasure_fairy_my_tips_bg@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_tips_bg.imageset/room_treasure_fairy_my_tips_bg@3x 1.png deleted file mode 100644 index 3c1e1c60..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_tips_bg.imageset/room_treasure_fairy_my_tips_bg@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_tips_bg.imageset/room_treasure_fairy_my_tips_bg@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_tips_bg.imageset/room_treasure_fairy_my_tips_bg@3x 2.png deleted file mode 100644 index 601e964e..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_tips_bg.imageset/room_treasure_fairy_my_tips_bg@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_tips_bg.imageset/room_treasure_fairy_my_tips_bg@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_tips_bg.imageset/room_treasure_fairy_my_tips_bg@3x 3.png deleted file mode 100644 index 1e237e32..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_tips_bg.imageset/room_treasure_fairy_my_tips_bg@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_tips_bg.imageset/room_treasure_fairy_my_tips_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_tips_bg.imageset/room_treasure_fairy_my_tips_bg@3x.png deleted file mode 100644 index 3c20ba8f..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_tips_bg.imageset/room_treasure_fairy_my_tips_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_title.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_title.imageset/Contents.json deleted file mode 100644 index e4cdfd56..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_title.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_my_title@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_title@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_title@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_title@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_title@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_my_title@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_title.imageset/room_treasure_fairy_my_title@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_title.imageset/room_treasure_fairy_my_title@2x.png deleted file mode 100644 index ff35ef89..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_title.imageset/room_treasure_fairy_my_title@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_title.imageset/room_treasure_fairy_my_title@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_title.imageset/room_treasure_fairy_my_title@3x 1.png deleted file mode 100644 index 3068d80f..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_title.imageset/room_treasure_fairy_my_title@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_title.imageset/room_treasure_fairy_my_title@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_title.imageset/room_treasure_fairy_my_title@3x 2.png deleted file mode 100644 index 93fe0d41..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_title.imageset/room_treasure_fairy_my_title@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_title.imageset/room_treasure_fairy_my_title@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_title.imageset/room_treasure_fairy_my_title@3x 3.png deleted file mode 100644 index a6a7d524..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_title.imageset/room_treasure_fairy_my_title@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_title.imageset/room_treasure_fairy_my_title@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_title.imageset/room_treasure_fairy_my_title@3x 4.png deleted file mode 100644 index 116ff080..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_title.imageset/room_treasure_fairy_my_title@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_title.imageset/room_treasure_fairy_my_title@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_title.imageset/room_treasure_fairy_my_title@3x.png deleted file mode 100644 index ab304608..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_my_title.imageset/room_treasure_fairy_my_title@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_one_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_one_bg.imageset/Contents.json deleted file mode 100644 index f8160b21..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_one_bg.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_one_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_one_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_one_bg@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_one_bg@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_one_bg@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_one_bg@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_one_bg.imageset/room_treasure_fairy_one_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_one_bg.imageset/room_treasure_fairy_one_bg@2x.png deleted file mode 100644 index 87218aa4..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_one_bg.imageset/room_treasure_fairy_one_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_one_bg.imageset/room_treasure_fairy_one_bg@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_one_bg.imageset/room_treasure_fairy_one_bg@3x 1.png deleted file mode 100644 index e15563a4..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_one_bg.imageset/room_treasure_fairy_one_bg@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_one_bg.imageset/room_treasure_fairy_one_bg@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_one_bg.imageset/room_treasure_fairy_one_bg@3x 2.png deleted file mode 100644 index 4fc31010..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_one_bg.imageset/room_treasure_fairy_one_bg@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_one_bg.imageset/room_treasure_fairy_one_bg@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_one_bg.imageset/room_treasure_fairy_one_bg@3x 3.png deleted file mode 100644 index ea3e6091..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_one_bg.imageset/room_treasure_fairy_one_bg@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_one_bg.imageset/room_treasure_fairy_one_bg@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_one_bg.imageset/room_treasure_fairy_one_bg@3x 4.png deleted file mode 100644 index 78609a12..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_one_bg.imageset/room_treasure_fairy_one_bg@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_one_bg.imageset/room_treasure_fairy_one_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_one_bg.imageset/room_treasure_fairy_one_bg@3x.png deleted file mode 100644 index d014bb7d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_one_bg.imageset/room_treasure_fairy_one_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_bg.imageset/Contents.json deleted file mode 100644 index 0498173c..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_pool_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_pool_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_bg.imageset/room_treasure_fairy_pool_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_bg.imageset/room_treasure_fairy_pool_bg@2x.png deleted file mode 100644 index 147795f1..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_bg.imageset/room_treasure_fairy_pool_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_bg.imageset/room_treasure_fairy_pool_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_bg.imageset/room_treasure_fairy_pool_bg@3x.png deleted file mode 100644 index 8fb3e3cb..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_bg.imageset/room_treasure_fairy_pool_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_normal.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_normal.imageset/Contents.json deleted file mode 100644 index dc489b18..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_normal.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_pool_normal@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_pool_normal@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_pool_normal@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_pool_normal@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_pool_normal@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_pool_normal@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_normal.imageset/room_treasure_fairy_pool_normal@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_normal.imageset/room_treasure_fairy_pool_normal@2x.png deleted file mode 100644 index 39452fdd..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_normal.imageset/room_treasure_fairy_pool_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_normal.imageset/room_treasure_fairy_pool_normal@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_normal.imageset/room_treasure_fairy_pool_normal@3x 1.png deleted file mode 100644 index 7f21f583..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_normal.imageset/room_treasure_fairy_pool_normal@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_normal.imageset/room_treasure_fairy_pool_normal@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_normal.imageset/room_treasure_fairy_pool_normal@3x 2.png deleted file mode 100644 index 19ae006d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_normal.imageset/room_treasure_fairy_pool_normal@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_normal.imageset/room_treasure_fairy_pool_normal@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_normal.imageset/room_treasure_fairy_pool_normal@3x 3.png deleted file mode 100644 index 200d624b..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_normal.imageset/room_treasure_fairy_pool_normal@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_normal.imageset/room_treasure_fairy_pool_normal@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_normal.imageset/room_treasure_fairy_pool_normal@3x 4.png deleted file mode 100644 index ebc26536..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_normal.imageset/room_treasure_fairy_pool_normal@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_normal.imageset/room_treasure_fairy_pool_normal@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_normal.imageset/room_treasure_fairy_pool_normal@3x.png deleted file mode 100644 index b6e84104..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_normal.imageset/room_treasure_fairy_pool_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_select.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_select.imageset/Contents.json deleted file mode 100644 index 379eb1f4..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_select.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_pool_select@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_pool_select@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_pool_select@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_pool_select@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_pool_select@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_pool_select@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_select.imageset/room_treasure_fairy_pool_select@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_select.imageset/room_treasure_fairy_pool_select@2x.png deleted file mode 100644 index d8ee9877..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_select.imageset/room_treasure_fairy_pool_select@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_select.imageset/room_treasure_fairy_pool_select@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_select.imageset/room_treasure_fairy_pool_select@3x 1.png deleted file mode 100644 index a5e34021..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_select.imageset/room_treasure_fairy_pool_select@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_select.imageset/room_treasure_fairy_pool_select@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_select.imageset/room_treasure_fairy_pool_select@3x 2.png deleted file mode 100644 index d241a4ba..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_select.imageset/room_treasure_fairy_pool_select@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_select.imageset/room_treasure_fairy_pool_select@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_select.imageset/room_treasure_fairy_pool_select@3x 3.png deleted file mode 100644 index 0c10facb..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_select.imageset/room_treasure_fairy_pool_select@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_select.imageset/room_treasure_fairy_pool_select@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_select.imageset/room_treasure_fairy_pool_select@3x 4.png deleted file mode 100644 index 88a2be51..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_select.imageset/room_treasure_fairy_pool_select@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_select.imageset/room_treasure_fairy_pool_select@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_select.imageset/room_treasure_fairy_pool_select@3x.png deleted file mode 100644 index 537a294a..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_pool_select.imageset/room_treasure_fairy_pool_select@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_prize_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_prize_bg.imageset/Contents.json deleted file mode 100644 index 84a0e17d..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_prize_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_prize_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_prize_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_prize_bg.imageset/room_treasure_fairy_prize_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_prize_bg.imageset/room_treasure_fairy_prize_bg@2x.png deleted file mode 100644 index 7a6351ac..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_prize_bg.imageset/room_treasure_fairy_prize_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_prize_bg.imageset/room_treasure_fairy_prize_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_prize_bg.imageset/room_treasure_fairy_prize_bg@3x.png deleted file mode 100644 index 9b3ec2c4..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_prize_bg.imageset/room_treasure_fairy_prize_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_prize_pool_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_prize_pool_bg.imageset/Contents.json deleted file mode 100644 index 17ce6a59..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_prize_pool_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_prize_pool_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_prize_pool_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_prize_pool_bg.imageset/room_treasure_fairy_prize_pool_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_prize_pool_bg.imageset/room_treasure_fairy_prize_pool_bg@2x.png deleted file mode 100644 index ebc0585d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_prize_pool_bg.imageset/room_treasure_fairy_prize_pool_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_prize_pool_bg.imageset/room_treasure_fairy_prize_pool_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_prize_pool_bg.imageset/room_treasure_fairy_prize_pool_bg@3x.png deleted file mode 100644 index ba073769..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_prize_pool_bg.imageset/room_treasure_fairy_prize_pool_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_normal.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_normal.imageset/Contents.json deleted file mode 100644 index 4305fda2..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_normal.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_record_normal@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_record_normal@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_record_normal@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_record_normal@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_record_normal@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_record_normal@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_normal.imageset/room_treasure_fairy_record_normal@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_normal.imageset/room_treasure_fairy_record_normal@2x.png deleted file mode 100644 index 80fb3eb9..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_normal.imageset/room_treasure_fairy_record_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_normal.imageset/room_treasure_fairy_record_normal@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_normal.imageset/room_treasure_fairy_record_normal@3x 1.png deleted file mode 100644 index 7fd14034..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_normal.imageset/room_treasure_fairy_record_normal@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_normal.imageset/room_treasure_fairy_record_normal@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_normal.imageset/room_treasure_fairy_record_normal@3x 2.png deleted file mode 100644 index 838bb00a..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_normal.imageset/room_treasure_fairy_record_normal@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_normal.imageset/room_treasure_fairy_record_normal@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_normal.imageset/room_treasure_fairy_record_normal@3x 3.png deleted file mode 100644 index 0fe2122f..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_normal.imageset/room_treasure_fairy_record_normal@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_normal.imageset/room_treasure_fairy_record_normal@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_normal.imageset/room_treasure_fairy_record_normal@3x 4.png deleted file mode 100644 index 42734309..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_normal.imageset/room_treasure_fairy_record_normal@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_normal.imageset/room_treasure_fairy_record_normal@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_normal.imageset/room_treasure_fairy_record_normal@3x.png deleted file mode 100644 index 06bdf032..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_normal.imageset/room_treasure_fairy_record_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_select.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_select.imageset/Contents.json deleted file mode 100644 index 0c63e0f1..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_select.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_record_select@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_record_select@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_record_select@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_record_select@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_record_select@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_record_select@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_select.imageset/room_treasure_fairy_record_select@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_select.imageset/room_treasure_fairy_record_select@2x.png deleted file mode 100644 index 8dcfaf15..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_select.imageset/room_treasure_fairy_record_select@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_select.imageset/room_treasure_fairy_record_select@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_select.imageset/room_treasure_fairy_record_select@3x 1.png deleted file mode 100644 index 22a41216..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_select.imageset/room_treasure_fairy_record_select@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_select.imageset/room_treasure_fairy_record_select@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_select.imageset/room_treasure_fairy_record_select@3x 2.png deleted file mode 100644 index 6e080824..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_select.imageset/room_treasure_fairy_record_select@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_select.imageset/room_treasure_fairy_record_select@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_select.imageset/room_treasure_fairy_record_select@3x 3.png deleted file mode 100644 index 996ebe15..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_select.imageset/room_treasure_fairy_record_select@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_select.imageset/room_treasure_fairy_record_select@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_select.imageset/room_treasure_fairy_record_select@3x 4.png deleted file mode 100644 index 69216350..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_select.imageset/room_treasure_fairy_record_select@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_select.imageset/room_treasure_fairy_record_select@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_select.imageset/room_treasure_fairy_record_select@3x.png deleted file mode 100644 index 02d6dc7c..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_record_select.imageset/room_treasure_fairy_record_select@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_bg.imageset/Contents.json deleted file mode 100644 index e4008c0f..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_bg.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_result_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_result_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_result_bg@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_result_bg@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_result_bg@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_result_bg@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_bg.imageset/room_treasure_fairy_result_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_bg.imageset/room_treasure_fairy_result_bg@2x.png deleted file mode 100644 index ebf757e5..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_bg.imageset/room_treasure_fairy_result_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_bg.imageset/room_treasure_fairy_result_bg@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_bg.imageset/room_treasure_fairy_result_bg@3x 1.png deleted file mode 100644 index f9d3d54c..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_bg.imageset/room_treasure_fairy_result_bg@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_bg.imageset/room_treasure_fairy_result_bg@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_bg.imageset/room_treasure_fairy_result_bg@3x 2.png deleted file mode 100644 index 32e972ee..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_bg.imageset/room_treasure_fairy_result_bg@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_bg.imageset/room_treasure_fairy_result_bg@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_bg.imageset/room_treasure_fairy_result_bg@3x 3.png deleted file mode 100644 index 727b4063..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_bg.imageset/room_treasure_fairy_result_bg@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_bg.imageset/room_treasure_fairy_result_bg@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_bg.imageset/room_treasure_fairy_result_bg@3x 4.png deleted file mode 100644 index 4b01eec2..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_bg.imageset/room_treasure_fairy_result_bg@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_bg.imageset/room_treasure_fairy_result_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_bg.imageset/room_treasure_fairy_result_bg@3x.png deleted file mode 100644 index efa2bd1d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_bg.imageset/room_treasure_fairy_result_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_coung_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_coung_bg.imageset/Contents.json deleted file mode 100644 index 3caa9e55..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_coung_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_result_coung_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_result_coung_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_coung_bg.imageset/room_treasure_fairy_result_coung_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_coung_bg.imageset/room_treasure_fairy_result_coung_bg@2x.png deleted file mode 100644 index 80e70e69..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_coung_bg.imageset/room_treasure_fairy_result_coung_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_coung_bg.imageset/room_treasure_fairy_result_coung_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_coung_bg.imageset/room_treasure_fairy_result_coung_bg@3x.png deleted file mode 100644 index e3294fe8..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_result_coung_bg.imageset/room_treasure_fairy_result_coung_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shop_exchange_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shop_exchange_bg.imageset/Contents.json deleted file mode 100644 index 126c5383..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shop_exchange_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_shop_exchange_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shop_exchange_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shop_exchange_bg.imageset/room_treasure_fairy_shop_exchange_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shop_exchange_bg.imageset/room_treasure_fairy_shop_exchange_bg@2x.png deleted file mode 100644 index 80f202cb..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shop_exchange_bg.imageset/room_treasure_fairy_shop_exchange_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shop_exchange_bg.imageset/room_treasure_fairy_shop_exchange_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shop_exchange_bg.imageset/room_treasure_fairy_shop_exchange_bg@3x.png deleted file mode 100644 index 26174ea9..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shop_exchange_bg.imageset/room_treasure_fairy_shop_exchange_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shop_fragment.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shop_fragment.imageset/Contents.json deleted file mode 100644 index f4174e9e..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shop_fragment.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_shop_fragment@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shop_fragment@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shop_fragment.imageset/room_treasure_fairy_shop_fragment@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shop_fragment.imageset/room_treasure_fairy_shop_fragment@2x.png deleted file mode 100644 index 10ae8871..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shop_fragment.imageset/room_treasure_fairy_shop_fragment@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shop_fragment.imageset/room_treasure_fairy_shop_fragment@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shop_fragment.imageset/room_treasure_fairy_shop_fragment@3x.png deleted file mode 100644 index d16659db..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shop_fragment.imageset/room_treasure_fairy_shop_fragment@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_ball_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_ball_bg.imageset/Contents.json deleted file mode 100644 index 71083a29..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_ball_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_shoping_ball_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_ball_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_ball_bg.imageset/room_treasure_fairy_shoping_ball_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_ball_bg.imageset/room_treasure_fairy_shoping_ball_bg@2x.png deleted file mode 100644 index 45dc83bc..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_ball_bg.imageset/room_treasure_fairy_shoping_ball_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_ball_bg.imageset/room_treasure_fairy_shoping_ball_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_ball_bg.imageset/room_treasure_fairy_shoping_ball_bg@3x.png deleted file mode 100644 index 82629630..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_ball_bg.imageset/room_treasure_fairy_shoping_ball_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_normal.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_normal.imageset/Contents.json deleted file mode 100644 index 82b74b2b..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_normal.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_shoping_exchange_record_title_normal@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_exchange_record_title_normal@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_exchange_record_title_normal@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_exchange_record_title_normal@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_exchange_record_title_normal@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_exchange_record_title_normal@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_normal.imageset/room_treasure_fairy_shoping_exchange_record_title_normal@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_normal.imageset/room_treasure_fairy_shoping_exchange_record_title_normal@2x.png deleted file mode 100644 index 7d445275..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_normal.imageset/room_treasure_fairy_shoping_exchange_record_title_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_normal.imageset/room_treasure_fairy_shoping_exchange_record_title_normal@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_normal.imageset/room_treasure_fairy_shoping_exchange_record_title_normal@3x 1.png deleted file mode 100644 index e038b4b3..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_normal.imageset/room_treasure_fairy_shoping_exchange_record_title_normal@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_normal.imageset/room_treasure_fairy_shoping_exchange_record_title_normal@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_normal.imageset/room_treasure_fairy_shoping_exchange_record_title_normal@3x 2.png deleted file mode 100644 index c683884c..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_normal.imageset/room_treasure_fairy_shoping_exchange_record_title_normal@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_normal.imageset/room_treasure_fairy_shoping_exchange_record_title_normal@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_normal.imageset/room_treasure_fairy_shoping_exchange_record_title_normal@3x 3.png deleted file mode 100644 index 9eef291e..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_normal.imageset/room_treasure_fairy_shoping_exchange_record_title_normal@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_normal.imageset/room_treasure_fairy_shoping_exchange_record_title_normal@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_normal.imageset/room_treasure_fairy_shoping_exchange_record_title_normal@3x 4.png deleted file mode 100644 index 25078fd3..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_normal.imageset/room_treasure_fairy_shoping_exchange_record_title_normal@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_normal.imageset/room_treasure_fairy_shoping_exchange_record_title_normal@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_normal.imageset/room_treasure_fairy_shoping_exchange_record_title_normal@3x.png deleted file mode 100644 index 26c518c9..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_normal.imageset/room_treasure_fairy_shoping_exchange_record_title_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_select.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_select.imageset/Contents.json deleted file mode 100644 index 36c36eac..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_select.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_shoping_exchange_record_title_select@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_exchange_record_title_select@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_exchange_record_title_select@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_exchange_record_title_select@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_exchange_record_title_select@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_exchange_record_title_select@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_select.imageset/room_treasure_fairy_shoping_exchange_record_title_select@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_select.imageset/room_treasure_fairy_shoping_exchange_record_title_select@2x.png deleted file mode 100644 index b0afaade..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_select.imageset/room_treasure_fairy_shoping_exchange_record_title_select@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_select.imageset/room_treasure_fairy_shoping_exchange_record_title_select@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_select.imageset/room_treasure_fairy_shoping_exchange_record_title_select@3x 1.png deleted file mode 100644 index 967d078a..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_select.imageset/room_treasure_fairy_shoping_exchange_record_title_select@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_select.imageset/room_treasure_fairy_shoping_exchange_record_title_select@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_select.imageset/room_treasure_fairy_shoping_exchange_record_title_select@3x 2.png deleted file mode 100644 index 5f3920a7..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_select.imageset/room_treasure_fairy_shoping_exchange_record_title_select@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_select.imageset/room_treasure_fairy_shoping_exchange_record_title_select@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_select.imageset/room_treasure_fairy_shoping_exchange_record_title_select@3x 3.png deleted file mode 100644 index 95d271dd..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_select.imageset/room_treasure_fairy_shoping_exchange_record_title_select@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_select.imageset/room_treasure_fairy_shoping_exchange_record_title_select@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_select.imageset/room_treasure_fairy_shoping_exchange_record_title_select@3x 4.png deleted file mode 100644 index 14bfbbbd..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_select.imageset/room_treasure_fairy_shoping_exchange_record_title_select@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_select.imageset/room_treasure_fairy_shoping_exchange_record_title_select@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_select.imageset/room_treasure_fairy_shoping_exchange_record_title_select@3x.png deleted file mode 100644 index 8d1ae409..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_record_title_select.imageset/room_treasure_fairy_shoping_exchange_record_title_select@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_normal.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_normal.imageset/Contents.json deleted file mode 100644 index 11e128f5..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_normal.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_shoping_exchange_title_normal@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_exchange_title_normal@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_exchange_title_normal@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_exchange_title_normal@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_exchange_title_normal@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_exchange_title_normal@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_normal.imageset/room_treasure_fairy_shoping_exchange_title_normal@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_normal.imageset/room_treasure_fairy_shoping_exchange_title_normal@2x.png deleted file mode 100644 index eb1e51c2..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_normal.imageset/room_treasure_fairy_shoping_exchange_title_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_normal.imageset/room_treasure_fairy_shoping_exchange_title_normal@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_normal.imageset/room_treasure_fairy_shoping_exchange_title_normal@3x 1.png deleted file mode 100644 index aa3aa607..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_normal.imageset/room_treasure_fairy_shoping_exchange_title_normal@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_normal.imageset/room_treasure_fairy_shoping_exchange_title_normal@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_normal.imageset/room_treasure_fairy_shoping_exchange_title_normal@3x 2.png deleted file mode 100644 index e47b9d5e..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_normal.imageset/room_treasure_fairy_shoping_exchange_title_normal@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_normal.imageset/room_treasure_fairy_shoping_exchange_title_normal@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_normal.imageset/room_treasure_fairy_shoping_exchange_title_normal@3x 3.png deleted file mode 100644 index 7961da99..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_normal.imageset/room_treasure_fairy_shoping_exchange_title_normal@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_normal.imageset/room_treasure_fairy_shoping_exchange_title_normal@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_normal.imageset/room_treasure_fairy_shoping_exchange_title_normal@3x 4.png deleted file mode 100644 index b9b4ddaf..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_normal.imageset/room_treasure_fairy_shoping_exchange_title_normal@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_normal.imageset/room_treasure_fairy_shoping_exchange_title_normal@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_normal.imageset/room_treasure_fairy_shoping_exchange_title_normal@3x.png deleted file mode 100644 index e8beb44a..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_normal.imageset/room_treasure_fairy_shoping_exchange_title_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_select.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_select.imageset/Contents.json deleted file mode 100644 index 2127c8df..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_select.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_shoping_exchange_title_select@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_exchange_title_select@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_exchange_title_select@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_exchange_title_select@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_exchange_title_select@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_exchange_title_select@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_select.imageset/room_treasure_fairy_shoping_exchange_title_select@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_select.imageset/room_treasure_fairy_shoping_exchange_title_select@2x.png deleted file mode 100644 index 0af6911c..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_select.imageset/room_treasure_fairy_shoping_exchange_title_select@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_select.imageset/room_treasure_fairy_shoping_exchange_title_select@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_select.imageset/room_treasure_fairy_shoping_exchange_title_select@3x 1.png deleted file mode 100644 index 5c640eea..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_select.imageset/room_treasure_fairy_shoping_exchange_title_select@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_select.imageset/room_treasure_fairy_shoping_exchange_title_select@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_select.imageset/room_treasure_fairy_shoping_exchange_title_select@3x 2.png deleted file mode 100644 index 3c59f4cf..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_select.imageset/room_treasure_fairy_shoping_exchange_title_select@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_select.imageset/room_treasure_fairy_shoping_exchange_title_select@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_select.imageset/room_treasure_fairy_shoping_exchange_title_select@3x 3.png deleted file mode 100644 index f4b9f7d0..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_select.imageset/room_treasure_fairy_shoping_exchange_title_select@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_select.imageset/room_treasure_fairy_shoping_exchange_title_select@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_select.imageset/room_treasure_fairy_shoping_exchange_title_select@3x 4.png deleted file mode 100644 index 656f5372..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_select.imageset/room_treasure_fairy_shoping_exchange_title_select@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_select.imageset/room_treasure_fairy_shoping_exchange_title_select@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_select.imageset/room_treasure_fairy_shoping_exchange_title_select@3x.png deleted file mode 100644 index c5e2acf6..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_exchange_title_select.imageset/room_treasure_fairy_shoping_exchange_title_select@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_gift_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_gift_bg.imageset/Contents.json deleted file mode 100644 index f390a3a9..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_gift_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_shoping_gift_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_gift_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_gift_bg.imageset/room_treasure_fairy_shoping_gift_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_gift_bg.imageset/room_treasure_fairy_shoping_gift_bg@2x.png deleted file mode 100644 index b1fb1ff6..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_gift_bg.imageset/room_treasure_fairy_shoping_gift_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_gift_bg.imageset/room_treasure_fairy_shoping_gift_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_gift_bg.imageset/room_treasure_fairy_shoping_gift_bg@3x.png deleted file mode 100644 index 5a0a54fe..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_gift_bg.imageset/room_treasure_fairy_shoping_gift_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_gift_sep_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_gift_sep_bg.imageset/Contents.json deleted file mode 100644 index 8cd50eda..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_gift_sep_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_shoping_gift_sep_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_gift_sep_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_gift_sep_bg.imageset/room_treasure_fairy_shoping_gift_sep_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_gift_sep_bg.imageset/room_treasure_fairy_shoping_gift_sep_bg@2x.png deleted file mode 100644 index 92f95909..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_gift_sep_bg.imageset/room_treasure_fairy_shoping_gift_sep_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_gift_sep_bg.imageset/room_treasure_fairy_shoping_gift_sep_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_gift_sep_bg.imageset/room_treasure_fairy_shoping_gift_sep_bg@3x.png deleted file mode 100644 index 273aa3a8..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_gift_sep_bg.imageset/room_treasure_fairy_shoping_gift_sep_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_left.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_left.imageset/Contents.json deleted file mode 100644 index cae572e0..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_left.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_shoping_left@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_left@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_left.imageset/room_treasure_fairy_shoping_left@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_left.imageset/room_treasure_fairy_shoping_left@2x.png deleted file mode 100644 index 97345a72..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_left.imageset/room_treasure_fairy_shoping_left@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_left.imageset/room_treasure_fairy_shoping_left@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_left.imageset/room_treasure_fairy_shoping_left@3x.png deleted file mode 100644 index 8aef9b4b..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_left.imageset/room_treasure_fairy_shoping_left@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_normal.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_normal.imageset/Contents.json deleted file mode 100644 index 977b4899..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_normal.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_shoping_summon_record_title_normal@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summon_record_title_normal@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summon_record_title_normal@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summon_record_title_normal@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summon_record_title_normal@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summon_record_title_normal@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_normal.imageset/room_treasure_fairy_shoping_summon_record_title_normal@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_normal.imageset/room_treasure_fairy_shoping_summon_record_title_normal@2x.png deleted file mode 100644 index 9569a79c..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_normal.imageset/room_treasure_fairy_shoping_summon_record_title_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_normal.imageset/room_treasure_fairy_shoping_summon_record_title_normal@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_normal.imageset/room_treasure_fairy_shoping_summon_record_title_normal@3x 1.png deleted file mode 100644 index 1eb3c05f..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_normal.imageset/room_treasure_fairy_shoping_summon_record_title_normal@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_normal.imageset/room_treasure_fairy_shoping_summon_record_title_normal@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_normal.imageset/room_treasure_fairy_shoping_summon_record_title_normal@3x 2.png deleted file mode 100644 index 27b93088..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_normal.imageset/room_treasure_fairy_shoping_summon_record_title_normal@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_normal.imageset/room_treasure_fairy_shoping_summon_record_title_normal@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_normal.imageset/room_treasure_fairy_shoping_summon_record_title_normal@3x 3.png deleted file mode 100644 index 71518706..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_normal.imageset/room_treasure_fairy_shoping_summon_record_title_normal@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_normal.imageset/room_treasure_fairy_shoping_summon_record_title_normal@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_normal.imageset/room_treasure_fairy_shoping_summon_record_title_normal@3x 4.png deleted file mode 100644 index 2aa9ea50..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_normal.imageset/room_treasure_fairy_shoping_summon_record_title_normal@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_normal.imageset/room_treasure_fairy_shoping_summon_record_title_normal@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_normal.imageset/room_treasure_fairy_shoping_summon_record_title_normal@3x.png deleted file mode 100644 index c36ef93f..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_normal.imageset/room_treasure_fairy_shoping_summon_record_title_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_select.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_select.imageset/Contents.json deleted file mode 100644 index 5c2e153f..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_select.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_shoping_summon_record_title_select@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summon_record_title_select@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summon_record_title_select@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summon_record_title_select@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summon_record_title_select@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summon_record_title_select@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_select.imageset/room_treasure_fairy_shoping_summon_record_title_select@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_select.imageset/room_treasure_fairy_shoping_summon_record_title_select@2x.png deleted file mode 100644 index b8778d95..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_select.imageset/room_treasure_fairy_shoping_summon_record_title_select@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_select.imageset/room_treasure_fairy_shoping_summon_record_title_select@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_select.imageset/room_treasure_fairy_shoping_summon_record_title_select@3x 1.png deleted file mode 100644 index 52193992..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_select.imageset/room_treasure_fairy_shoping_summon_record_title_select@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_select.imageset/room_treasure_fairy_shoping_summon_record_title_select@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_select.imageset/room_treasure_fairy_shoping_summon_record_title_select@3x 2.png deleted file mode 100644 index 25dc04b2..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_select.imageset/room_treasure_fairy_shoping_summon_record_title_select@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_select.imageset/room_treasure_fairy_shoping_summon_record_title_select@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_select.imageset/room_treasure_fairy_shoping_summon_record_title_select@3x 3.png deleted file mode 100644 index dcac346c..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_select.imageset/room_treasure_fairy_shoping_summon_record_title_select@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_select.imageset/room_treasure_fairy_shoping_summon_record_title_select@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_select.imageset/room_treasure_fairy_shoping_summon_record_title_select@3x 4.png deleted file mode 100644 index 47db81fb..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_select.imageset/room_treasure_fairy_shoping_summon_record_title_select@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_select.imageset/room_treasure_fairy_shoping_summon_record_title_select@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_select.imageset/room_treasure_fairy_shoping_summon_record_title_select@3x.png deleted file mode 100644 index cd0f853b..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_record_title_select.imageset/room_treasure_fairy_shoping_summon_record_title_select@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_normal.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_normal.imageset/Contents.json deleted file mode 100644 index 88a8c869..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_normal.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_shoping_summon_title_normal@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summon_title_normal@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summon_title_normal@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summon_title_normal@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summon_title_normal@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summon_title_normal@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_normal.imageset/room_treasure_fairy_shoping_summon_title_normal@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_normal.imageset/room_treasure_fairy_shoping_summon_title_normal@2x.png deleted file mode 100644 index 6f3b6462..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_normal.imageset/room_treasure_fairy_shoping_summon_title_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_normal.imageset/room_treasure_fairy_shoping_summon_title_normal@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_normal.imageset/room_treasure_fairy_shoping_summon_title_normal@3x 1.png deleted file mode 100644 index 4c57879b..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_normal.imageset/room_treasure_fairy_shoping_summon_title_normal@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_normal.imageset/room_treasure_fairy_shoping_summon_title_normal@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_normal.imageset/room_treasure_fairy_shoping_summon_title_normal@3x 2.png deleted file mode 100644 index 88845adf..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_normal.imageset/room_treasure_fairy_shoping_summon_title_normal@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_normal.imageset/room_treasure_fairy_shoping_summon_title_normal@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_normal.imageset/room_treasure_fairy_shoping_summon_title_normal@3x 3.png deleted file mode 100644 index fb39a4af..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_normal.imageset/room_treasure_fairy_shoping_summon_title_normal@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_normal.imageset/room_treasure_fairy_shoping_summon_title_normal@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_normal.imageset/room_treasure_fairy_shoping_summon_title_normal@3x 4.png deleted file mode 100644 index 78f0c99d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_normal.imageset/room_treasure_fairy_shoping_summon_title_normal@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_normal.imageset/room_treasure_fairy_shoping_summon_title_normal@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_normal.imageset/room_treasure_fairy_shoping_summon_title_normal@3x.png deleted file mode 100644 index 0e78263d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_normal.imageset/room_treasure_fairy_shoping_summon_title_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_select.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_select.imageset/Contents.json deleted file mode 100644 index 5ff78d1a..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_select.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_shoping_summon_title_select@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summon_title_select@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summon_title_select@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summon_title_select@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summon_title_select@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summon_title_select@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_select.imageset/room_treasure_fairy_shoping_summon_title_select@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_select.imageset/room_treasure_fairy_shoping_summon_title_select@2x.png deleted file mode 100644 index 7f3de4e2..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_select.imageset/room_treasure_fairy_shoping_summon_title_select@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_select.imageset/room_treasure_fairy_shoping_summon_title_select@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_select.imageset/room_treasure_fairy_shoping_summon_title_select@3x 1.png deleted file mode 100644 index e9634342..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_select.imageset/room_treasure_fairy_shoping_summon_title_select@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_select.imageset/room_treasure_fairy_shoping_summon_title_select@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_select.imageset/room_treasure_fairy_shoping_summon_title_select@3x 2.png deleted file mode 100644 index 65419a7c..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_select.imageset/room_treasure_fairy_shoping_summon_title_select@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_select.imageset/room_treasure_fairy_shoping_summon_title_select@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_select.imageset/room_treasure_fairy_shoping_summon_title_select@3x 3.png deleted file mode 100644 index 469db078..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_select.imageset/room_treasure_fairy_shoping_summon_title_select@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_select.imageset/room_treasure_fairy_shoping_summon_title_select@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_select.imageset/room_treasure_fairy_shoping_summon_title_select@3x 4.png deleted file mode 100644 index 08d4567c..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_select.imageset/room_treasure_fairy_shoping_summon_title_select@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_select.imageset/room_treasure_fairy_shoping_summon_title_select@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_select.imageset/room_treasure_fairy_shoping_summon_title_select@3x.png deleted file mode 100644 index 51a431cb..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summon_title_select.imageset/room_treasure_fairy_shoping_summon_title_select@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond.imageset/Contents.json deleted file mode 100644 index 946ade95..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond.imageset/room_treasure_fairy_shoping_summond@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond.imageset/room_treasure_fairy_shoping_summond@2x.png deleted file mode 100644 index 73f6aa47..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond.imageset/room_treasure_fairy_shoping_summond@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond.imageset/room_treasure_fairy_shoping_summond@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond.imageset/room_treasure_fairy_shoping_summond@3x.png deleted file mode 100644 index 1cb4d36c..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond.imageset/room_treasure_fairy_shoping_summond@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_disable.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_disable.imageset/Contents.json deleted file mode 100644 index bf939c2a..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_disable.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_disable@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_disable@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_disable@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_disable@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_disable@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_disable@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_disable.imageset/room_treasure_fairy_shoping_summond_disable@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_disable.imageset/room_treasure_fairy_shoping_summond_disable@2x.png deleted file mode 100644 index 4065d6bf..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_disable.imageset/room_treasure_fairy_shoping_summond_disable@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_disable.imageset/room_treasure_fairy_shoping_summond_disable@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_disable.imageset/room_treasure_fairy_shoping_summond_disable@3x 1.png deleted file mode 100644 index 6b6d2a51..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_disable.imageset/room_treasure_fairy_shoping_summond_disable@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_disable.imageset/room_treasure_fairy_shoping_summond_disable@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_disable.imageset/room_treasure_fairy_shoping_summond_disable@3x 2.png deleted file mode 100644 index 1a357e44..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_disable.imageset/room_treasure_fairy_shoping_summond_disable@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_disable.imageset/room_treasure_fairy_shoping_summond_disable@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_disable.imageset/room_treasure_fairy_shoping_summond_disable@3x 3.png deleted file mode 100644 index 0dccef13..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_disable.imageset/room_treasure_fairy_shoping_summond_disable@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_disable.imageset/room_treasure_fairy_shoping_summond_disable@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_disable.imageset/room_treasure_fairy_shoping_summond_disable@3x 4.png deleted file mode 100644 index 4cdcbb6d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_disable.imageset/room_treasure_fairy_shoping_summond_disable@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_disable.imageset/room_treasure_fairy_shoping_summond_disable@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_disable.imageset/room_treasure_fairy_shoping_summond_disable@3x.png deleted file mode 100644 index d2e3a732..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_disable.imageset/room_treasure_fairy_shoping_summond_disable@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_high_title.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_high_title.imageset/Contents.json deleted file mode 100644 index aa61c1a1..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_high_title.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_high_title@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_high_title@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_high_title@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_high_title@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_high_title@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_high_title@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_high_title.imageset/room_treasure_fairy_shoping_summond_high_title@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_high_title.imageset/room_treasure_fairy_shoping_summond_high_title@2x.png deleted file mode 100644 index 86857108..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_high_title.imageset/room_treasure_fairy_shoping_summond_high_title@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_high_title.imageset/room_treasure_fairy_shoping_summond_high_title@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_high_title.imageset/room_treasure_fairy_shoping_summond_high_title@3x 1.png deleted file mode 100644 index 75ef70f0..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_high_title.imageset/room_treasure_fairy_shoping_summond_high_title@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_high_title.imageset/room_treasure_fairy_shoping_summond_high_title@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_high_title.imageset/room_treasure_fairy_shoping_summond_high_title@3x 2.png deleted file mode 100644 index 74ee0516..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_high_title.imageset/room_treasure_fairy_shoping_summond_high_title@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_high_title.imageset/room_treasure_fairy_shoping_summond_high_title@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_high_title.imageset/room_treasure_fairy_shoping_summond_high_title@3x 3.png deleted file mode 100644 index 552aa797..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_high_title.imageset/room_treasure_fairy_shoping_summond_high_title@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_high_title.imageset/room_treasure_fairy_shoping_summond_high_title@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_high_title.imageset/room_treasure_fairy_shoping_summond_high_title@3x 4.png deleted file mode 100644 index 157cdabe..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_high_title.imageset/room_treasure_fairy_shoping_summond_high_title@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_high_title.imageset/room_treasure_fairy_shoping_summond_high_title@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_high_title.imageset/room_treasure_fairy_shoping_summond_high_title@3x.png deleted file mode 100644 index 4e6223f0..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_high_title.imageset/room_treasure_fairy_shoping_summond_high_title@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_low_title.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_low_title.imageset/Contents.json deleted file mode 100644 index b7c4376c..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_low_title.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_low_title@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_low_title@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_low_title@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_low_title@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_low_title@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_low_title@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_low_title.imageset/room_treasure_fairy_shoping_summond_low_title@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_low_title.imageset/room_treasure_fairy_shoping_summond_low_title@2x.png deleted file mode 100644 index ed941dbf..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_low_title.imageset/room_treasure_fairy_shoping_summond_low_title@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_low_title.imageset/room_treasure_fairy_shoping_summond_low_title@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_low_title.imageset/room_treasure_fairy_shoping_summond_low_title@3x 1.png deleted file mode 100644 index 46048577..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_low_title.imageset/room_treasure_fairy_shoping_summond_low_title@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_low_title.imageset/room_treasure_fairy_shoping_summond_low_title@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_low_title.imageset/room_treasure_fairy_shoping_summond_low_title@3x 2.png deleted file mode 100644 index 08c54d47..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_low_title.imageset/room_treasure_fairy_shoping_summond_low_title@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_low_title.imageset/room_treasure_fairy_shoping_summond_low_title@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_low_title.imageset/room_treasure_fairy_shoping_summond_low_title@3x 3.png deleted file mode 100644 index 258eacb3..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_low_title.imageset/room_treasure_fairy_shoping_summond_low_title@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_low_title.imageset/room_treasure_fairy_shoping_summond_low_title@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_low_title.imageset/room_treasure_fairy_shoping_summond_low_title@3x 4.png deleted file mode 100644 index 5855444c..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_low_title.imageset/room_treasure_fairy_shoping_summond_low_title@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_low_title.imageset/room_treasure_fairy_shoping_summond_low_title@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_low_title.imageset/room_treasure_fairy_shoping_summond_low_title@3x.png deleted file mode 100644 index 774e35d7..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_low_title.imageset/room_treasure_fairy_shoping_summond_low_title@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_middle_title.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_middle_title.imageset/Contents.json deleted file mode 100644 index cc10d310..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_middle_title.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_middle_title@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_middle_title@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_middle_title@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_middle_title@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_middle_title@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_middle_title@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_middle_title.imageset/room_treasure_fairy_shoping_summond_middle_title@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_middle_title.imageset/room_treasure_fairy_shoping_summond_middle_title@2x.png deleted file mode 100644 index fa675ad9..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_middle_title.imageset/room_treasure_fairy_shoping_summond_middle_title@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_middle_title.imageset/room_treasure_fairy_shoping_summond_middle_title@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_middle_title.imageset/room_treasure_fairy_shoping_summond_middle_title@3x 1.png deleted file mode 100644 index e2a8e945..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_middle_title.imageset/room_treasure_fairy_shoping_summond_middle_title@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_middle_title.imageset/room_treasure_fairy_shoping_summond_middle_title@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_middle_title.imageset/room_treasure_fairy_shoping_summond_middle_title@3x 2.png deleted file mode 100644 index 8d42dd03..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_middle_title.imageset/room_treasure_fairy_shoping_summond_middle_title@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_middle_title.imageset/room_treasure_fairy_shoping_summond_middle_title@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_middle_title.imageset/room_treasure_fairy_shoping_summond_middle_title@3x 3.png deleted file mode 100644 index 0506b575..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_middle_title.imageset/room_treasure_fairy_shoping_summond_middle_title@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_middle_title.imageset/room_treasure_fairy_shoping_summond_middle_title@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_middle_title.imageset/room_treasure_fairy_shoping_summond_middle_title@3x 4.png deleted file mode 100644 index 8141def7..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_middle_title.imageset/room_treasure_fairy_shoping_summond_middle_title@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_middle_title.imageset/room_treasure_fairy_shoping_summond_middle_title@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_middle_title.imageset/room_treasure_fairy_shoping_summond_middle_title@3x.png deleted file mode 100644 index 7bea47e4..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_middle_title.imageset/room_treasure_fairy_shoping_summond_middle_title@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_normal.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_normal.imageset/Contents.json deleted file mode 100644 index 2c7e5e8e..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_normal.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_normal@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_normal@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_normal@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_normal@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_normal@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_shoping_summond_normal@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_normal.imageset/room_treasure_fairy_shoping_summond_normal@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_normal.imageset/room_treasure_fairy_shoping_summond_normal@2x.png deleted file mode 100644 index 61e305a8..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_normal.imageset/room_treasure_fairy_shoping_summond_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_normal.imageset/room_treasure_fairy_shoping_summond_normal@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_normal.imageset/room_treasure_fairy_shoping_summond_normal@3x 1.png deleted file mode 100644 index 9ceb579e..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_normal.imageset/room_treasure_fairy_shoping_summond_normal@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_normal.imageset/room_treasure_fairy_shoping_summond_normal@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_normal.imageset/room_treasure_fairy_shoping_summond_normal@3x 2.png deleted file mode 100644 index a6d0c25a..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_normal.imageset/room_treasure_fairy_shoping_summond_normal@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_normal.imageset/room_treasure_fairy_shoping_summond_normal@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_normal.imageset/room_treasure_fairy_shoping_summond_normal@3x 3.png deleted file mode 100644 index f901befc..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_normal.imageset/room_treasure_fairy_shoping_summond_normal@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_normal.imageset/room_treasure_fairy_shoping_summond_normal@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_normal.imageset/room_treasure_fairy_shoping_summond_normal@3x 4.png deleted file mode 100644 index 869881cc..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_normal.imageset/room_treasure_fairy_shoping_summond_normal@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_normal.imageset/room_treasure_fairy_shoping_summond_normal@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_normal.imageset/room_treasure_fairy_shoping_summond_normal@3x.png deleted file mode 100644 index 848b6bd4..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_shoping_summond_normal.imageset/room_treasure_fairy_shoping_summond_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_exper_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_exper_bg.imageset/Contents.json deleted file mode 100644 index a2ef2d5f..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_exper_bg.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_store_exper_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_exper_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_exper_bg@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_exper_bg@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_exper_bg@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_exper_bg@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_exper_bg.imageset/room_treasure_fairy_store_exper_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_exper_bg.imageset/room_treasure_fairy_store_exper_bg@2x.png deleted file mode 100644 index c9225ce3..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_exper_bg.imageset/room_treasure_fairy_store_exper_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_exper_bg.imageset/room_treasure_fairy_store_exper_bg@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_exper_bg.imageset/room_treasure_fairy_store_exper_bg@3x 1.png deleted file mode 100644 index 1e7a0a6e..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_exper_bg.imageset/room_treasure_fairy_store_exper_bg@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_exper_bg.imageset/room_treasure_fairy_store_exper_bg@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_exper_bg.imageset/room_treasure_fairy_store_exper_bg@3x 2.png deleted file mode 100644 index ad0bc677..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_exper_bg.imageset/room_treasure_fairy_store_exper_bg@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_exper_bg.imageset/room_treasure_fairy_store_exper_bg@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_exper_bg.imageset/room_treasure_fairy_store_exper_bg@3x 3.png deleted file mode 100644 index 3d03b8d4..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_exper_bg.imageset/room_treasure_fairy_store_exper_bg@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_exper_bg.imageset/room_treasure_fairy_store_exper_bg@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_exper_bg.imageset/room_treasure_fairy_store_exper_bg@3x 4.png deleted file mode 100644 index 5a49f4b2..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_exper_bg.imageset/room_treasure_fairy_store_exper_bg@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_exper_bg.imageset/room_treasure_fairy_store_exper_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_exper_bg.imageset/room_treasure_fairy_store_exper_bg@3x.png deleted file mode 100644 index 985f31be..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_exper_bg.imageset/room_treasure_fairy_store_exper_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_cover.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_cover.imageset/Contents.json deleted file mode 100644 index 24a14882..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_cover.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_store_forest_cover@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_forest_cover@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_cover.imageset/room_treasure_fairy_store_forest_cover@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_cover.imageset/room_treasure_fairy_store_forest_cover@2x.png deleted file mode 100644 index a05b2d6f..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_cover.imageset/room_treasure_fairy_store_forest_cover@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_cover.imageset/room_treasure_fairy_store_forest_cover@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_cover.imageset/room_treasure_fairy_store_forest_cover@3x.png deleted file mode 100644 index 42a86042..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_cover.imageset/room_treasure_fairy_store_forest_cover@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_normal.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_normal.imageset/Contents.json deleted file mode 100644 index 05985935..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_normal.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_store_forest_normal@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_forest_normal@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_forest_normal@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_forest_normal@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_forest_normal@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_forest_normal@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_normal.imageset/room_treasure_fairy_store_forest_normal@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_normal.imageset/room_treasure_fairy_store_forest_normal@2x.png deleted file mode 100644 index 795d7c8c..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_normal.imageset/room_treasure_fairy_store_forest_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_normal.imageset/room_treasure_fairy_store_forest_normal@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_normal.imageset/room_treasure_fairy_store_forest_normal@3x 1.png deleted file mode 100644 index 3ddb6754..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_normal.imageset/room_treasure_fairy_store_forest_normal@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_normal.imageset/room_treasure_fairy_store_forest_normal@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_normal.imageset/room_treasure_fairy_store_forest_normal@3x 2.png deleted file mode 100644 index a8025f8c..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_normal.imageset/room_treasure_fairy_store_forest_normal@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_normal.imageset/room_treasure_fairy_store_forest_normal@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_normal.imageset/room_treasure_fairy_store_forest_normal@3x 3.png deleted file mode 100644 index 7049c8d5..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_normal.imageset/room_treasure_fairy_store_forest_normal@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_normal.imageset/room_treasure_fairy_store_forest_normal@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_normal.imageset/room_treasure_fairy_store_forest_normal@3x 4.png deleted file mode 100644 index d9e83450..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_normal.imageset/room_treasure_fairy_store_forest_normal@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_normal.imageset/room_treasure_fairy_store_forest_normal@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_normal.imageset/room_treasure_fairy_store_forest_normal@3x.png deleted file mode 100644 index 38bf1658..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_forest_normal.imageset/room_treasure_fairy_store_forest_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball.imageset/Contents.json deleted file mode 100644 index 74eee21e..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_store_high_ball@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_high_ball@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_high_ball@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_high_ball@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_high_ball@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_high_ball@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball.imageset/room_treasure_fairy_store_high_ball@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball.imageset/room_treasure_fairy_store_high_ball@2x.png deleted file mode 100644 index 852ab1cf..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball.imageset/room_treasure_fairy_store_high_ball@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball.imageset/room_treasure_fairy_store_high_ball@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball.imageset/room_treasure_fairy_store_high_ball@3x 1.png deleted file mode 100644 index e6cca7cd..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball.imageset/room_treasure_fairy_store_high_ball@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball.imageset/room_treasure_fairy_store_high_ball@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball.imageset/room_treasure_fairy_store_high_ball@3x 2.png deleted file mode 100644 index a1ee8287..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball.imageset/room_treasure_fairy_store_high_ball@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball.imageset/room_treasure_fairy_store_high_ball@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball.imageset/room_treasure_fairy_store_high_ball@3x 3.png deleted file mode 100644 index 2cb8e059..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball.imageset/room_treasure_fairy_store_high_ball@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball.imageset/room_treasure_fairy_store_high_ball@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball.imageset/room_treasure_fairy_store_high_ball@3x 4.png deleted file mode 100644 index 7889f15d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball.imageset/room_treasure_fairy_store_high_ball@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball.imageset/room_treasure_fairy_store_high_ball@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball.imageset/room_treasure_fairy_store_high_ball@3x.png deleted file mode 100644 index 7b287424..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball.imageset/room_treasure_fairy_store_high_ball@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball_logo.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball_logo.imageset/Contents.json deleted file mode 100644 index 5a3408c4..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball_logo.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_store_high_ball_logo@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_high_ball_logo@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball_logo.imageset/room_treasure_fairy_store_high_ball_logo@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball_logo.imageset/room_treasure_fairy_store_high_ball_logo@2x.png deleted file mode 100644 index ef1f2bf6..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball_logo.imageset/room_treasure_fairy_store_high_ball_logo@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball_logo.imageset/room_treasure_fairy_store_high_ball_logo@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball_logo.imageset/room_treasure_fairy_store_high_ball_logo@3x.png deleted file mode 100644 index f8355da9..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_high_ball_logo.imageset/room_treasure_fairy_store_high_ball_logo@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_left.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_left.imageset/Contents.json deleted file mode 100644 index ad4b17b1..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_left.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_store_left@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_left@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_left.imageset/room_treasure_fairy_store_left@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_left.imageset/room_treasure_fairy_store_left@2x.png deleted file mode 100644 index a13e522f..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_left.imageset/room_treasure_fairy_store_left@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_left.imageset/room_treasure_fairy_store_left@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_left.imageset/room_treasure_fairy_store_left@3x.png deleted file mode 100644 index 6e5b3c6a..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_left.imageset/room_treasure_fairy_store_left@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball.imageset/Contents.json deleted file mode 100644 index 439c6f27..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_store_middle_ball@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_middle_ball@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_middle_ball@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_middle_ball@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_middle_ball@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_middle_ball@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball.imageset/room_treasure_fairy_store_middle_ball@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball.imageset/room_treasure_fairy_store_middle_ball@2x.png deleted file mode 100644 index c901eb8f..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball.imageset/room_treasure_fairy_store_middle_ball@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball.imageset/room_treasure_fairy_store_middle_ball@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball.imageset/room_treasure_fairy_store_middle_ball@3x 1.png deleted file mode 100644 index c88be27f..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball.imageset/room_treasure_fairy_store_middle_ball@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball.imageset/room_treasure_fairy_store_middle_ball@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball.imageset/room_treasure_fairy_store_middle_ball@3x 2.png deleted file mode 100644 index 8aa9b657..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball.imageset/room_treasure_fairy_store_middle_ball@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball.imageset/room_treasure_fairy_store_middle_ball@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball.imageset/room_treasure_fairy_store_middle_ball@3x 3.png deleted file mode 100644 index b0a199b2..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball.imageset/room_treasure_fairy_store_middle_ball@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball.imageset/room_treasure_fairy_store_middle_ball@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball.imageset/room_treasure_fairy_store_middle_ball@3x 4.png deleted file mode 100644 index cd31be80..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball.imageset/room_treasure_fairy_store_middle_ball@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball.imageset/room_treasure_fairy_store_middle_ball@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball.imageset/room_treasure_fairy_store_middle_ball@3x.png deleted file mode 100644 index 074a5695..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball.imageset/room_treasure_fairy_store_middle_ball@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball_logo.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball_logo.imageset/Contents.json deleted file mode 100644 index 50076ab6..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball_logo.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_store_middle_ball_logo@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_middle_ball_logo@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball_logo.imageset/room_treasure_fairy_store_middle_ball_logo@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball_logo.imageset/room_treasure_fairy_store_middle_ball_logo@2x.png deleted file mode 100644 index dd7d3305..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball_logo.imageset/room_treasure_fairy_store_middle_ball_logo@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball_logo.imageset/room_treasure_fairy_store_middle_ball_logo@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball_logo.imageset/room_treasure_fairy_store_middle_ball_logo@3x.png deleted file mode 100644 index 19847ff9..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_middle_ball_logo.imageset/room_treasure_fairy_store_middle_ball_logo@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_normal_ball_logo.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_normal_ball_logo.imageset/Contents.json deleted file mode 100644 index dbcb9a74..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_normal_ball_logo.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_store_normal_ball_logo@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_normal_ball_logo@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_normal_ball_logo.imageset/room_treasure_fairy_store_normal_ball_logo@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_normal_ball_logo.imageset/room_treasure_fairy_store_normal_ball_logo@2x.png deleted file mode 100644 index c9e286b2..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_normal_ball_logo.imageset/room_treasure_fairy_store_normal_ball_logo@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_normal_ball_logo.imageset/room_treasure_fairy_store_normal_ball_logo@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_normal_ball_logo.imageset/room_treasure_fairy_store_normal_ball_logo@3x.png deleted file mode 100644 index 798958c2..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_normal_ball_logo.imageset/room_treasure_fairy_store_normal_ball_logo@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_one_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_one_bg.imageset/Contents.json deleted file mode 100644 index ac7fc01c..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_one_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_store_one_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_one_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_one_bg.imageset/room_treasure_fairy_store_one_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_one_bg.imageset/room_treasure_fairy_store_one_bg@2x.png deleted file mode 100644 index 9d01bc84..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_one_bg.imageset/room_treasure_fairy_store_one_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_one_bg.imageset/room_treasure_fairy_store_one_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_one_bg.imageset/room_treasure_fairy_store_one_bg@3x.png deleted file mode 100644 index f9a4b36e..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_one_bg.imageset/room_treasure_fairy_store_one_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_record_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_record_bg.imageset/Contents.json deleted file mode 100644 index db1862d9..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_record_bg.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_store_record_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_record_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_record_bg@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_record_bg@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_record_bg@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_record_bg@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_record_bg.imageset/room_treasure_fairy_store_record_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_record_bg.imageset/room_treasure_fairy_store_record_bg@2x.png deleted file mode 100644 index f158c300..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_record_bg.imageset/room_treasure_fairy_store_record_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_record_bg.imageset/room_treasure_fairy_store_record_bg@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_record_bg.imageset/room_treasure_fairy_store_record_bg@3x 1.png deleted file mode 100644 index d7fbf989..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_record_bg.imageset/room_treasure_fairy_store_record_bg@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_record_bg.imageset/room_treasure_fairy_store_record_bg@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_record_bg.imageset/room_treasure_fairy_store_record_bg@3x 2.png deleted file mode 100644 index 422928b5..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_record_bg.imageset/room_treasure_fairy_store_record_bg@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_record_bg.imageset/room_treasure_fairy_store_record_bg@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_record_bg.imageset/room_treasure_fairy_store_record_bg@3x 3.png deleted file mode 100644 index 0dceb181..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_record_bg.imageset/room_treasure_fairy_store_record_bg@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_record_bg.imageset/room_treasure_fairy_store_record_bg@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_record_bg.imageset/room_treasure_fairy_store_record_bg@3x 4.png deleted file mode 100644 index 961e8810..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_record_bg.imageset/room_treasure_fairy_store_record_bg@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_record_bg.imageset/room_treasure_fairy_store_record_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_record_bg.imageset/room_treasure_fairy_store_record_bg@3x.png deleted file mode 100644 index 75aad223..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_record_bg.imageset/room_treasure_fairy_store_record_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_bg.imageset/Contents.json deleted file mode 100644 index 8d895a13..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_store_result_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_result_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_bg.imageset/room_treasure_fairy_store_result_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_bg.imageset/room_treasure_fairy_store_result_bg@2x.png deleted file mode 100644 index 156f3af6..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_bg.imageset/room_treasure_fairy_store_result_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_bg.imageset/room_treasure_fairy_store_result_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_bg.imageset/room_treasure_fairy_store_result_bg@3x.png deleted file mode 100644 index 022cee49..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_bg.imageset/room_treasure_fairy_store_result_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_close_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_close_bg.imageset/Contents.json deleted file mode 100644 index 20842669..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_close_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_store_result_close_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_result_close_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_close_bg.imageset/room_treasure_fairy_store_result_close_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_close_bg.imageset/room_treasure_fairy_store_result_close_bg@2x.png deleted file mode 100644 index aab565ae..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_close_bg.imageset/room_treasure_fairy_store_result_close_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_close_bg.imageset/room_treasure_fairy_store_result_close_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_close_bg.imageset/room_treasure_fairy_store_result_close_bg@3x.png deleted file mode 100644 index 0493580a..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_close_bg.imageset/room_treasure_fairy_store_result_close_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_small_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_small_bg.imageset/Contents.json deleted file mode 100644 index 1674f408..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_small_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_store_result_small_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_result_small_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_small_bg.imageset/room_treasure_fairy_store_result_small_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_small_bg.imageset/room_treasure_fairy_store_result_small_bg@2x.png deleted file mode 100644 index a177eabc..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_small_bg.imageset/room_treasure_fairy_store_result_small_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_small_bg.imageset/room_treasure_fairy_store_result_small_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_small_bg.imageset/room_treasure_fairy_store_result_small_bg@3x.png deleted file mode 100644 index a0323d62..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_result_small_bg.imageset/room_treasure_fairy_store_result_small_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_shoping_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_shoping_bg.imageset/Contents.json deleted file mode 100644 index 6ebfebdf..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_shoping_bg.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_store_shoping_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_shoping_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_shoping_bg@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_shoping_bg@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_shoping_bg@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_shoping_bg@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_shoping_bg.imageset/room_treasure_fairy_store_shoping_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_shoping_bg.imageset/room_treasure_fairy_store_shoping_bg@2x.png deleted file mode 100644 index e963c955..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_shoping_bg.imageset/room_treasure_fairy_store_shoping_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_shoping_bg.imageset/room_treasure_fairy_store_shoping_bg@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_shoping_bg.imageset/room_treasure_fairy_store_shoping_bg@3x 1.png deleted file mode 100644 index 5a2820b4..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_shoping_bg.imageset/room_treasure_fairy_store_shoping_bg@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_shoping_bg.imageset/room_treasure_fairy_store_shoping_bg@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_shoping_bg.imageset/room_treasure_fairy_store_shoping_bg@3x 2.png deleted file mode 100644 index f675a9bc..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_shoping_bg.imageset/room_treasure_fairy_store_shoping_bg@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_shoping_bg.imageset/room_treasure_fairy_store_shoping_bg@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_shoping_bg.imageset/room_treasure_fairy_store_shoping_bg@3x 3.png deleted file mode 100644 index afa71e95..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_shoping_bg.imageset/room_treasure_fairy_store_shoping_bg@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_shoping_bg.imageset/room_treasure_fairy_store_shoping_bg@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_shoping_bg.imageset/room_treasure_fairy_store_shoping_bg@3x 4.png deleted file mode 100644 index 72713aaf..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_shoping_bg.imageset/room_treasure_fairy_store_shoping_bg@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_shoping_bg.imageset/room_treasure_fairy_store_shoping_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_shoping_bg.imageset/room_treasure_fairy_store_shoping_bg@3x.png deleted file mode 100644 index 94e72e33..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_shoping_bg.imageset/room_treasure_fairy_store_shoping_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_ten_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_ten_bg.imageset/Contents.json deleted file mode 100644 index 699e2595..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_ten_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_store_ten_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_store_ten_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_ten_bg.imageset/room_treasure_fairy_store_ten_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_ten_bg.imageset/room_treasure_fairy_store_ten_bg@2x.png deleted file mode 100644 index 9401fa51..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_ten_bg.imageset/room_treasure_fairy_store_ten_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_ten_bg.imageset/room_treasure_fairy_store_ten_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_ten_bg.imageset/room_treasure_fairy_store_ten_bg@3x.png deleted file mode 100644 index 3c5fc02e..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_store_ten_bg.imageset/room_treasure_fairy_store_ten_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_sure_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_sure_bg.imageset/Contents.json deleted file mode 100644 index cba2f362..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_sure_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_sure_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_sure_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_sure_bg.imageset/room_treasure_fairy_sure_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_sure_bg.imageset/room_treasure_fairy_sure_bg@2x.png deleted file mode 100644 index eb0dd5a5..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_sure_bg.imageset/room_treasure_fairy_sure_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_sure_bg.imageset/room_treasure_fairy_sure_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_sure_bg.imageset/room_treasure_fairy_sure_bg@3x.png deleted file mode 100644 index a1147c9a..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_sure_bg.imageset/room_treasure_fairy_sure_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ten_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ten_bg.imageset/Contents.json deleted file mode 100644 index bde38e2b..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ten_bg.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_ten_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ten_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ten_bg@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ten_bg@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ten_bg@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ten_bg@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ten_bg.imageset/room_treasure_fairy_ten_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ten_bg.imageset/room_treasure_fairy_ten_bg@2x.png deleted file mode 100644 index fe974304..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ten_bg.imageset/room_treasure_fairy_ten_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ten_bg.imageset/room_treasure_fairy_ten_bg@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ten_bg.imageset/room_treasure_fairy_ten_bg@3x 1.png deleted file mode 100644 index fed2af1a..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ten_bg.imageset/room_treasure_fairy_ten_bg@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ten_bg.imageset/room_treasure_fairy_ten_bg@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ten_bg.imageset/room_treasure_fairy_ten_bg@3x 2.png deleted file mode 100644 index a3ddc84a..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ten_bg.imageset/room_treasure_fairy_ten_bg@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ten_bg.imageset/room_treasure_fairy_ten_bg@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ten_bg.imageset/room_treasure_fairy_ten_bg@3x 3.png deleted file mode 100644 index 369480cb..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ten_bg.imageset/room_treasure_fairy_ten_bg@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ten_bg.imageset/room_treasure_fairy_ten_bg@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ten_bg.imageset/room_treasure_fairy_ten_bg@3x 4.png deleted file mode 100644 index dd06a02c..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ten_bg.imageset/room_treasure_fairy_ten_bg@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ten_bg.imageset/room_treasure_fairy_ten_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ten_bg.imageset/room_treasure_fairy_ten_bg@3x.png deleted file mode 100644 index 9fe1df02..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ten_bg.imageset/room_treasure_fairy_ten_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket.imageset/Contents.json deleted file mode 100644 index b302bcce..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_ticket@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ticket@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ticket@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ticket@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ticket@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ticket@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket.imageset/room_treasure_fairy_ticket@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket.imageset/room_treasure_fairy_ticket@2x.png deleted file mode 100644 index 1dc28032..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket.imageset/room_treasure_fairy_ticket@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket.imageset/room_treasure_fairy_ticket@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket.imageset/room_treasure_fairy_ticket@3x 1.png deleted file mode 100644 index 849957f5..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket.imageset/room_treasure_fairy_ticket@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket.imageset/room_treasure_fairy_ticket@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket.imageset/room_treasure_fairy_ticket@3x 2.png deleted file mode 100644 index ae7a04cc..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket.imageset/room_treasure_fairy_ticket@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket.imageset/room_treasure_fairy_ticket@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket.imageset/room_treasure_fairy_ticket@3x 3.png deleted file mode 100644 index e1f8e9f2..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket.imageset/room_treasure_fairy_ticket@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket.imageset/room_treasure_fairy_ticket@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket.imageset/room_treasure_fairy_ticket@3x 4.png deleted file mode 100644 index 7d0297b7..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket.imageset/room_treasure_fairy_ticket@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket.imageset/room_treasure_fairy_ticket@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket.imageset/room_treasure_fairy_ticket@3x.png deleted file mode 100644 index 41c0d4ad..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket.imageset/room_treasure_fairy_ticket@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket_add_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket_add_bg.imageset/Contents.json deleted file mode 100644 index b3695e2c..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket_add_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_ticket_add_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ticket_add_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket_add_bg.imageset/room_treasure_fairy_ticket_add_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket_add_bg.imageset/room_treasure_fairy_ticket_add_bg@2x.png deleted file mode 100644 index b5056120..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket_add_bg.imageset/room_treasure_fairy_ticket_add_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket_add_bg.imageset/room_treasure_fairy_ticket_add_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket_add_bg.imageset/room_treasure_fairy_ticket_add_bg@3x.png deleted file mode 100644 index dcf159f5..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket_add_bg.imageset/room_treasure_fairy_ticket_add_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket_bg.imageset/Contents.json deleted file mode 100644 index e30bc4d6..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_ticket_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_ticket_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket_bg.imageset/room_treasure_fairy_ticket_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket_bg.imageset/room_treasure_fairy_ticket_bg@2x.png deleted file mode 100644 index c2288b27..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket_bg.imageset/room_treasure_fairy_ticket_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket_bg.imageset/room_treasure_fairy_ticket_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket_bg.imageset/room_treasure_fairy_ticket_bg@3x.png deleted file mode 100644 index dc22a17e..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_ticket_bg.imageset/room_treasure_fairy_ticket_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_treasure_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_treasure_bg.imageset/Contents.json deleted file mode 100644 index c19299d3..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_treasure_bg.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_treasure_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_treasure_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_treasure_bg@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_treasure_bg@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_treasure_bg@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_treasure_bg@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_treasure_bg.imageset/room_treasure_fairy_treasure_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_treasure_bg.imageset/room_treasure_fairy_treasure_bg@2x.png deleted file mode 100644 index 615539ee..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_treasure_bg.imageset/room_treasure_fairy_treasure_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_treasure_bg.imageset/room_treasure_fairy_treasure_bg@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_treasure_bg.imageset/room_treasure_fairy_treasure_bg@3x 1.png deleted file mode 100644 index 33151b44..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_treasure_bg.imageset/room_treasure_fairy_treasure_bg@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_treasure_bg.imageset/room_treasure_fairy_treasure_bg@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_treasure_bg.imageset/room_treasure_fairy_treasure_bg@3x 2.png deleted file mode 100644 index 7e7c912f..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_treasure_bg.imageset/room_treasure_fairy_treasure_bg@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_treasure_bg.imageset/room_treasure_fairy_treasure_bg@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_treasure_bg.imageset/room_treasure_fairy_treasure_bg@3x 3.png deleted file mode 100644 index 9a174cd8..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_treasure_bg.imageset/room_treasure_fairy_treasure_bg@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_treasure_bg.imageset/room_treasure_fairy_treasure_bg@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_treasure_bg.imageset/room_treasure_fairy_treasure_bg@3x 4.png deleted file mode 100644 index 1cac4049..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_treasure_bg.imageset/room_treasure_fairy_treasure_bg@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_treasure_bg.imageset/room_treasure_fairy_treasure_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_treasure_bg.imageset/room_treasure_fairy_treasure_bg@3x.png deleted file mode 100644 index 1a773a68..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_treasure_bg.imageset/room_treasure_fairy_treasure_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_ball_back.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_ball_back.imageset/Contents.json deleted file mode 100644 index 5a9b0e36..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_ball_back.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_trials_ball_back@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_ball_back@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_ball_back.imageset/room_treasure_fairy_trials_ball_back@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_ball_back.imageset/room_treasure_fairy_trials_ball_back@2x.png deleted file mode 100644 index b928e8b3..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_ball_back.imageset/room_treasure_fairy_trials_ball_back@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_ball_back.imageset/room_treasure_fairy_trials_ball_back@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_ball_back.imageset/room_treasure_fairy_trials_ball_back@3x.png deleted file mode 100644 index 8378dcfd..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_ball_back.imageset/room_treasure_fairy_trials_ball_back@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_ball_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_ball_bg.imageset/Contents.json deleted file mode 100644 index 2eec8f4c..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_ball_bg.imageset/Contents.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_trials_high_ball_bg.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_ball_bg.imageset/room_treasure_fairy_trials_high_ball_bg.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_ball_bg.imageset/room_treasure_fairy_trials_high_ball_bg.png deleted file mode 100644 index 562230b2..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_ball_bg.imageset/room_treasure_fairy_trials_high_ball_bg.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_bg.imageset/Contents.json deleted file mode 100644 index c9a9116e..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_trials_high_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_high_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_bg.imageset/room_treasure_fairy_trials_high_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_bg.imageset/room_treasure_fairy_trials_high_bg@2x.png deleted file mode 100644 index bd8c51ee..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_bg.imageset/room_treasure_fairy_trials_high_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_bg.imageset/room_treasure_fairy_trials_high_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_bg.imageset/room_treasure_fairy_trials_high_bg@3x.png deleted file mode 100644 index d1dd6516..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_bg.imageset/room_treasure_fairy_trials_high_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_normal.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_normal.imageset/Contents.json deleted file mode 100644 index 9afe40c3..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_normal.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_trials_high_title_normal@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_high_title_normal@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_high_title_normal@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_high_title_normal@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_high_title_normal@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_high_title_normal@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_normal.imageset/room_treasure_fairy_trials_high_title_normal@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_normal.imageset/room_treasure_fairy_trials_high_title_normal@2x.png deleted file mode 100644 index d3abba73..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_normal.imageset/room_treasure_fairy_trials_high_title_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_normal.imageset/room_treasure_fairy_trials_high_title_normal@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_normal.imageset/room_treasure_fairy_trials_high_title_normal@3x 1.png deleted file mode 100644 index 7d971cac..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_normal.imageset/room_treasure_fairy_trials_high_title_normal@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_normal.imageset/room_treasure_fairy_trials_high_title_normal@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_normal.imageset/room_treasure_fairy_trials_high_title_normal@3x 2.png deleted file mode 100644 index 5a144633..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_normal.imageset/room_treasure_fairy_trials_high_title_normal@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_normal.imageset/room_treasure_fairy_trials_high_title_normal@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_normal.imageset/room_treasure_fairy_trials_high_title_normal@3x 3.png deleted file mode 100644 index e4420fcb..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_normal.imageset/room_treasure_fairy_trials_high_title_normal@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_normal.imageset/room_treasure_fairy_trials_high_title_normal@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_normal.imageset/room_treasure_fairy_trials_high_title_normal@3x 4.png deleted file mode 100644 index 83dbf14e..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_normal.imageset/room_treasure_fairy_trials_high_title_normal@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_normal.imageset/room_treasure_fairy_trials_high_title_normal@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_normal.imageset/room_treasure_fairy_trials_high_title_normal@3x.png deleted file mode 100644 index 48163885..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_normal.imageset/room_treasure_fairy_trials_high_title_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_select.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_select.imageset/Contents.json deleted file mode 100644 index 20480b86..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_select.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_trials_high_title_select@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_high_title_select@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_high_title_select@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_high_title_select@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_high_title_select@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_high_title_select@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_select.imageset/room_treasure_fairy_trials_high_title_select@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_select.imageset/room_treasure_fairy_trials_high_title_select@2x.png deleted file mode 100644 index d598049c..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_select.imageset/room_treasure_fairy_trials_high_title_select@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_select.imageset/room_treasure_fairy_trials_high_title_select@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_select.imageset/room_treasure_fairy_trials_high_title_select@3x 1.png deleted file mode 100644 index b03a05f1..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_select.imageset/room_treasure_fairy_trials_high_title_select@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_select.imageset/room_treasure_fairy_trials_high_title_select@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_select.imageset/room_treasure_fairy_trials_high_title_select@3x 2.png deleted file mode 100644 index 26a63da1..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_select.imageset/room_treasure_fairy_trials_high_title_select@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_select.imageset/room_treasure_fairy_trials_high_title_select@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_select.imageset/room_treasure_fairy_trials_high_title_select@3x 3.png deleted file mode 100644 index 916a2326..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_select.imageset/room_treasure_fairy_trials_high_title_select@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_select.imageset/room_treasure_fairy_trials_high_title_select@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_select.imageset/room_treasure_fairy_trials_high_title_select@3x 4.png deleted file mode 100644 index bf8ce9f9..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_select.imageset/room_treasure_fairy_trials_high_title_select@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_select.imageset/room_treasure_fairy_trials_high_title_select@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_select.imageset/room_treasure_fairy_trials_high_title_select@3x.png deleted file mode 100644 index a137a063..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_high_title_select.imageset/room_treasure_fairy_trials_high_title_select@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_ball_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_ball_bg.imageset/Contents.json deleted file mode 100644 index 932a6a51..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_ball_bg.imageset/Contents.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_trials_middle_ball_bg.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_ball_bg.imageset/room_treasure_fairy_trials_middle_ball_bg.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_ball_bg.imageset/room_treasure_fairy_trials_middle_ball_bg.png deleted file mode 100644 index 8ac6d86f..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_ball_bg.imageset/room_treasure_fairy_trials_middle_ball_bg.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_bg.imageset/Contents.json deleted file mode 100644 index 4c46d6a2..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_trials_middle_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_middle_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_bg.imageset/room_treasure_fairy_trials_middle_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_bg.imageset/room_treasure_fairy_trials_middle_bg@2x.png deleted file mode 100644 index e263e7fb..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_bg.imageset/room_treasure_fairy_trials_middle_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_bg.imageset/room_treasure_fairy_trials_middle_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_bg.imageset/room_treasure_fairy_trials_middle_bg@3x.png deleted file mode 100644 index 7e0e1a1a..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_bg.imageset/room_treasure_fairy_trials_middle_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_normal.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_normal.imageset/Contents.json deleted file mode 100644 index 88e8aae5..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_normal.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_trials_middle_title_normal@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_middle_title_normal@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_middle_title_normal@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_middle_title_normal@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_middle_title_normal@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_middle_title_normal@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_normal.imageset/room_treasure_fairy_trials_middle_title_normal@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_normal.imageset/room_treasure_fairy_trials_middle_title_normal@2x.png deleted file mode 100644 index 73fd99e9..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_normal.imageset/room_treasure_fairy_trials_middle_title_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_normal.imageset/room_treasure_fairy_trials_middle_title_normal@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_normal.imageset/room_treasure_fairy_trials_middle_title_normal@3x 1.png deleted file mode 100644 index d7295699..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_normal.imageset/room_treasure_fairy_trials_middle_title_normal@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_normal.imageset/room_treasure_fairy_trials_middle_title_normal@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_normal.imageset/room_treasure_fairy_trials_middle_title_normal@3x 2.png deleted file mode 100644 index d1c08f29..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_normal.imageset/room_treasure_fairy_trials_middle_title_normal@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_normal.imageset/room_treasure_fairy_trials_middle_title_normal@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_normal.imageset/room_treasure_fairy_trials_middle_title_normal@3x 3.png deleted file mode 100644 index 52fcce2d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_normal.imageset/room_treasure_fairy_trials_middle_title_normal@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_normal.imageset/room_treasure_fairy_trials_middle_title_normal@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_normal.imageset/room_treasure_fairy_trials_middle_title_normal@3x 4.png deleted file mode 100644 index ddc85ecf..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_normal.imageset/room_treasure_fairy_trials_middle_title_normal@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_normal.imageset/room_treasure_fairy_trials_middle_title_normal@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_normal.imageset/room_treasure_fairy_trials_middle_title_normal@3x.png deleted file mode 100644 index b46d9d25..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_normal.imageset/room_treasure_fairy_trials_middle_title_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_select.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_select.imageset/Contents.json deleted file mode 100644 index 07ae5e79..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_select.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_trials_middle_title_select@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_middle_title_select@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_middle_title_select@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_middle_title_select@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_middle_title_select@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_middle_title_select@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_select.imageset/room_treasure_fairy_trials_middle_title_select@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_select.imageset/room_treasure_fairy_trials_middle_title_select@2x.png deleted file mode 100644 index 4dfe47f2..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_select.imageset/room_treasure_fairy_trials_middle_title_select@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_select.imageset/room_treasure_fairy_trials_middle_title_select@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_select.imageset/room_treasure_fairy_trials_middle_title_select@3x 1.png deleted file mode 100644 index 4a02b3e7..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_select.imageset/room_treasure_fairy_trials_middle_title_select@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_select.imageset/room_treasure_fairy_trials_middle_title_select@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_select.imageset/room_treasure_fairy_trials_middle_title_select@3x 2.png deleted file mode 100644 index 89cd4c51..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_select.imageset/room_treasure_fairy_trials_middle_title_select@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_select.imageset/room_treasure_fairy_trials_middle_title_select@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_select.imageset/room_treasure_fairy_trials_middle_title_select@3x 3.png deleted file mode 100644 index c87554ac..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_select.imageset/room_treasure_fairy_trials_middle_title_select@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_select.imageset/room_treasure_fairy_trials_middle_title_select@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_select.imageset/room_treasure_fairy_trials_middle_title_select@3x 4.png deleted file mode 100644 index 598cb813..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_select.imageset/room_treasure_fairy_trials_middle_title_select@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_select.imageset/room_treasure_fairy_trials_middle_title_select@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_select.imageset/room_treasure_fairy_trials_middle_title_select@3x.png deleted file mode 100644 index 2b20a5fb..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_middle_title_select.imageset/room_treasure_fairy_trials_middle_title_select@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_my_ball_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_my_ball_bg.imageset/Contents.json deleted file mode 100644 index a1c3fe8f..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_my_ball_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_trials_my_ball_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_my_ball_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_my_ball_bg.imageset/room_treasure_fairy_trials_my_ball_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_my_ball_bg.imageset/room_treasure_fairy_trials_my_ball_bg@2x.png deleted file mode 100644 index 9a054a1d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_my_ball_bg.imageset/room_treasure_fairy_trials_my_ball_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_my_ball_bg.imageset/room_treasure_fairy_trials_my_ball_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_my_ball_bg.imageset/room_treasure_fairy_trials_my_ball_bg@3x.png deleted file mode 100644 index 6d423d6d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_my_ball_bg.imageset/room_treasure_fairy_trials_my_ball_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_my_ball_cover_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_my_ball_cover_bg.imageset/Contents.json deleted file mode 100644 index c73c06fc..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_my_ball_cover_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_trials_my_ball_cover_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_my_ball_cover_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_my_ball_cover_bg.imageset/room_treasure_fairy_trials_my_ball_cover_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_my_ball_cover_bg.imageset/room_treasure_fairy_trials_my_ball_cover_bg@2x.png deleted file mode 100644 index 4fedf46d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_my_ball_cover_bg.imageset/room_treasure_fairy_trials_my_ball_cover_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_my_ball_cover_bg.imageset/room_treasure_fairy_trials_my_ball_cover_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_my_ball_cover_bg.imageset/room_treasure_fairy_trials_my_ball_cover_bg@3x.png deleted file mode 100644 index 35082a13..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_my_ball_cover_bg.imageset/room_treasure_fairy_trials_my_ball_cover_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_record_back.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_record_back.imageset/Contents.json deleted file mode 100644 index 260355fb..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_record_back.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_trials_record_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_record_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_record_back.imageset/room_treasure_fairy_trials_record_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_record_back.imageset/room_treasure_fairy_trials_record_bg@2x.png deleted file mode 100644 index 96e24eed..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_record_back.imageset/room_treasure_fairy_trials_record_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_record_back.imageset/room_treasure_fairy_trials_record_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_record_back.imageset/room_treasure_fairy_trials_record_bg@3x.png deleted file mode 100644 index 5eef335b..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_record_back.imageset/room_treasure_fairy_trials_record_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_record_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_record_bg.imageset/Contents.json deleted file mode 100644 index 260355fb..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_record_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_trials_record_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_record_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_record_bg.imageset/room_treasure_fairy_trials_record_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_record_bg.imageset/room_treasure_fairy_trials_record_bg@2x.png deleted file mode 100644 index fa6c02cd..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_record_bg.imageset/room_treasure_fairy_trials_record_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_record_bg.imageset/room_treasure_fairy_trials_record_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_record_bg.imageset/room_treasure_fairy_trials_record_bg@3x.png deleted file mode 100644 index 372e4a06..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_record_bg.imageset/room_treasure_fairy_trials_record_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_record_new_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_record_new_bg.imageset/Contents.json deleted file mode 100644 index 6b8a5d1d..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_record_new_bg.imageset/Contents.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "filename" : "room_treasure_fairy_trials_record_new_bg.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_record_new_bg.imageset/room_treasure_fairy_trials_record_new_bg.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_record_new_bg.imageset/room_treasure_fairy_trials_record_new_bg.png deleted file mode 100644 index 579040dc..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_record_new_bg.imageset/room_treasure_fairy_trials_record_new_bg.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_refresh_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_refresh_bg.imageset/Contents.json deleted file mode 100644 index f2c9ea62..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_refresh_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_trials_refresh_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_refresh_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_refresh_bg.imageset/room_treasure_fairy_trials_refresh_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_refresh_bg.imageset/room_treasure_fairy_trials_refresh_bg@2x.png deleted file mode 100644 index f472d953..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_refresh_bg.imageset/room_treasure_fairy_trials_refresh_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_refresh_bg.imageset/room_treasure_fairy_trials_refresh_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_refresh_bg.imageset/room_treasure_fairy_trials_refresh_bg@3x.png deleted file mode 100644 index 35988b27..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_refresh_bg.imageset/room_treasure_fairy_trials_refresh_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_sure_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_sure_bg.imageset/Contents.json deleted file mode 100644 index be687db5..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_sure_bg.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_trials_sure_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_sure_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_sure_bg@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_sure_bg@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_sure_bg@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_sure_bg@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_sure_bg.imageset/room_treasure_fairy_trials_sure_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_sure_bg.imageset/room_treasure_fairy_trials_sure_bg@2x.png deleted file mode 100644 index f3ff6e98..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_sure_bg.imageset/room_treasure_fairy_trials_sure_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_sure_bg.imageset/room_treasure_fairy_trials_sure_bg@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_sure_bg.imageset/room_treasure_fairy_trials_sure_bg@3x 1.png deleted file mode 100644 index de4d229f..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_sure_bg.imageset/room_treasure_fairy_trials_sure_bg@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_sure_bg.imageset/room_treasure_fairy_trials_sure_bg@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_sure_bg.imageset/room_treasure_fairy_trials_sure_bg@3x 2.png deleted file mode 100644 index 61da024a..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_sure_bg.imageset/room_treasure_fairy_trials_sure_bg@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_sure_bg.imageset/room_treasure_fairy_trials_sure_bg@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_sure_bg.imageset/room_treasure_fairy_trials_sure_bg@3x 3.png deleted file mode 100644 index c496cfc4..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_sure_bg.imageset/room_treasure_fairy_trials_sure_bg@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_sure_bg.imageset/room_treasure_fairy_trials_sure_bg@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_sure_bg.imageset/room_treasure_fairy_trials_sure_bg@3x 4.png deleted file mode 100644 index cccda9e1..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_sure_bg.imageset/room_treasure_fairy_trials_sure_bg@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_sure_bg.imageset/room_treasure_fairy_trials_sure_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_sure_bg.imageset/room_treasure_fairy_trials_sure_bg@3x.png deleted file mode 100644 index e47ad04c..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_sure_bg.imageset/room_treasure_fairy_trials_sure_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_title.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_title.imageset/Contents.json deleted file mode 100644 index af6de0b8..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_title.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_trials_title@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_title@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_title@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_title@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_title@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_trials_title@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_title.imageset/room_treasure_fairy_trials_title@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_title.imageset/room_treasure_fairy_trials_title@2x.png deleted file mode 100644 index 6cabedc5..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_title.imageset/room_treasure_fairy_trials_title@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_title.imageset/room_treasure_fairy_trials_title@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_title.imageset/room_treasure_fairy_trials_title@3x 1.png deleted file mode 100644 index 7dde3d29..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_title.imageset/room_treasure_fairy_trials_title@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_title.imageset/room_treasure_fairy_trials_title@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_title.imageset/room_treasure_fairy_trials_title@3x 2.png deleted file mode 100644 index eb59fd27..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_title.imageset/room_treasure_fairy_trials_title@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_title.imageset/room_treasure_fairy_trials_title@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_title.imageset/room_treasure_fairy_trials_title@3x 3.png deleted file mode 100644 index de63cb61..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_title.imageset/room_treasure_fairy_trials_title@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_title.imageset/room_treasure_fairy_trials_title@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_title.imageset/room_treasure_fairy_trials_title@3x 4.png deleted file mode 100644 index 2e475985..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_title.imageset/room_treasure_fairy_trials_title@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_title.imageset/room_treasure_fairy_trials_title@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_title.imageset/room_treasure_fairy_trials_title@3x.png deleted file mode 100644 index 3154fb30..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_trials_title.imageset/room_treasure_fairy_trials_title@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_userinfo_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_userinfo_bg.imageset/Contents.json deleted file mode 100644 index 8b133d35..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_userinfo_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_userinfo_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_userinfo_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_userinfo_bg.imageset/room_treasure_fairy_userinfo_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_userinfo_bg.imageset/room_treasure_fairy_userinfo_bg@2x.png deleted file mode 100644 index 63ec44c8..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_userinfo_bg.imageset/room_treasure_fairy_userinfo_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_userinfo_bg.imageset/room_treasure_fairy_userinfo_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_userinfo_bg.imageset/room_treasure_fairy_userinfo_bg@3x.png deleted file mode 100644 index 8291a550..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_userinfo_bg.imageset/room_treasure_fairy_userinfo_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_web_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_web_bg.imageset/Contents.json deleted file mode 100644 index 5d3512b1..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_web_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_fairy_web_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_fairy_web_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_web_bg.imageset/room_treasure_fairy_web_bg@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_web_bg.imageset/room_treasure_fairy_web_bg@2x.png deleted file mode 100644 index c72d300b..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_web_bg.imageset/room_treasure_fairy_web_bg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_web_bg.imageset/room_treasure_fairy_web_bg@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_web_bg.imageset/room_treasure_fairy_web_bg@3x.png deleted file mode 100644 index 43dc080a..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_fairy_web_bg.imageset/room_treasure_fairy_web_bg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_my_friend_title.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_my_friend_title.imageset/Contents.json deleted file mode 100644 index 09357e5f..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_my_friend_title.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_my_friend_title@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_my_friend_title@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_my_friend_title@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_my_friend_title@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_my_friend_title@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_my_friend_title@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_my_friend_title.imageset/room_treasure_my_friend_title@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_my_friend_title.imageset/room_treasure_my_friend_title@2x.png deleted file mode 100644 index 9ca4b292..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_my_friend_title.imageset/room_treasure_my_friend_title@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_my_friend_title.imageset/room_treasure_my_friend_title@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_my_friend_title.imageset/room_treasure_my_friend_title@3x 1.png deleted file mode 100644 index 34faa02b..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_my_friend_title.imageset/room_treasure_my_friend_title@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_my_friend_title.imageset/room_treasure_my_friend_title@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_my_friend_title.imageset/room_treasure_my_friend_title@3x 2.png deleted file mode 100644 index 2a19d768..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_my_friend_title.imageset/room_treasure_my_friend_title@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_my_friend_title.imageset/room_treasure_my_friend_title@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_my_friend_title.imageset/room_treasure_my_friend_title@3x 3.png deleted file mode 100644 index 4c9fa213..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_my_friend_title.imageset/room_treasure_my_friend_title@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_my_friend_title.imageset/room_treasure_my_friend_title@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_my_friend_title.imageset/room_treasure_my_friend_title@3x 4.png deleted file mode 100644 index ab2adc4d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_my_friend_title.imageset/room_treasure_my_friend_title@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_my_friend_title.imageset/room_treasure_my_friend_title@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_my_friend_title.imageset/room_treasure_my_friend_title@3x.png deleted file mode 100644 index 89c7e5c5..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_my_friend_title.imageset/room_treasure_my_friend_title@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_page_title.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_page_title.imageset/Contents.json deleted file mode 100644 index 9ce527b4..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_page_title.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_page_title@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_page_title@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_page_title@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_page_title@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_page_title@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_page_title@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_page_title.imageset/room_treasure_page_title@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_page_title.imageset/room_treasure_page_title@2x.png deleted file mode 100644 index 64338a07..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_page_title.imageset/room_treasure_page_title@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_page_title.imageset/room_treasure_page_title@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_page_title.imageset/room_treasure_page_title@3x 1.png deleted file mode 100644 index 02cd360c..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_page_title.imageset/room_treasure_page_title@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_page_title.imageset/room_treasure_page_title@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_page_title.imageset/room_treasure_page_title@3x 2.png deleted file mode 100644 index 1dc646bb..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_page_title.imageset/room_treasure_page_title@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_page_title.imageset/room_treasure_page_title@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_page_title.imageset/room_treasure_page_title@3x 3.png deleted file mode 100644 index cb123eaf..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_page_title.imageset/room_treasure_page_title@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_page_title.imageset/room_treasure_page_title@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_page_title.imageset/room_treasure_page_title@3x 4.png deleted file mode 100644 index f79247f6..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_page_title.imageset/room_treasure_page_title@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_page_title.imageset/room_treasure_page_title@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_page_title.imageset/room_treasure_page_title@3x.png deleted file mode 100644 index efec61a8..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_page_title.imageset/room_treasure_page_title@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_shoping_title.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_shoping_title.imageset/Contents.json deleted file mode 100644 index 26ceff11..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_shoping_title.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_shoping_title@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_shoping_title@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_shoping_title@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_shoping_title@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_shoping_title@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_shoping_title@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_shoping_title.imageset/room_treasure_shoping_title@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_shoping_title.imageset/room_treasure_shoping_title@2x.png deleted file mode 100644 index be29df20..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_shoping_title.imageset/room_treasure_shoping_title@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_shoping_title.imageset/room_treasure_shoping_title@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_shoping_title.imageset/room_treasure_shoping_title@3x 1.png deleted file mode 100644 index a3b2a278..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_shoping_title.imageset/room_treasure_shoping_title@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_shoping_title.imageset/room_treasure_shoping_title@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_shoping_title.imageset/room_treasure_shoping_title@3x 2.png deleted file mode 100644 index b62be0f1..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_shoping_title.imageset/room_treasure_shoping_title@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_shoping_title.imageset/room_treasure_shoping_title@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_shoping_title.imageset/room_treasure_shoping_title@3x 3.png deleted file mode 100644 index 8be8eb55..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_shoping_title.imageset/room_treasure_shoping_title@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_shoping_title.imageset/room_treasure_shoping_title@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_shoping_title.imageset/room_treasure_shoping_title@3x 4.png deleted file mode 100644 index 30d06a6a..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_shoping_title.imageset/room_treasure_shoping_title@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_shoping_title.imageset/room_treasure_shoping_title@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_shoping_title.imageset/room_treasure_shoping_title@3x.png deleted file mode 100644 index a8f5e87a..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_shoping_title.imageset/room_treasure_shoping_title@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_store_title.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_store_title.imageset/Contents.json deleted file mode 100644 index f06bfbcd..00000000 --- a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_store_title.imageset/Contents.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_treasure_store_title@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_treasure_store_title@3x.png", - "idiom" : "universal", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "ar", - "scale" : "2x" - }, - { - "filename" : "room_treasure_store_title@3x 3.png", - "idiom" : "universal", - "locale" : "ar", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "en", - "scale" : "2x" - }, - { - "filename" : "room_treasure_store_title@3x 1.png", - "idiom" : "universal", - "locale" : "en", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "id", - "scale" : "2x" - }, - { - "filename" : "room_treasure_store_title@3x 2.png", - "idiom" : "universal", - "locale" : "id", - "scale" : "3x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "1x" - }, - { - "idiom" : "universal", - "locale" : "tr", - "scale" : "2x" - }, - { - "filename" : "room_treasure_store_title@3x 4.png", - "idiom" : "universal", - "locale" : "tr", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "localizable" : true - } -} diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_store_title.imageset/room_treasure_store_title@2x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_store_title.imageset/room_treasure_store_title@2x.png deleted file mode 100644 index 9131ba01..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_store_title.imageset/room_treasure_store_title@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_store_title.imageset/room_treasure_store_title@3x 1.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_store_title.imageset/room_treasure_store_title@3x 1.png deleted file mode 100644 index d11c4a41..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_store_title.imageset/room_treasure_store_title@3x 1.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_store_title.imageset/room_treasure_store_title@3x 2.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_store_title.imageset/room_treasure_store_title@3x 2.png deleted file mode 100644 index d0df56cf..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_store_title.imageset/room_treasure_store_title@3x 2.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_store_title.imageset/room_treasure_store_title@3x 3.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_store_title.imageset/room_treasure_store_title@3x 3.png deleted file mode 100644 index 80a1c9ca..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_store_title.imageset/room_treasure_store_title@3x 3.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_store_title.imageset/room_treasure_store_title@3x 4.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_store_title.imageset/room_treasure_store_title@3x 4.png deleted file mode 100644 index 73fca6c8..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_store_title.imageset/room_treasure_store_title@3x 4.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_store_title.imageset/room_treasure_store_title@3x.png b/YuMi/Assets.xcassets/jm/Fairy/room_treasure_store_title.imageset/room_treasure_store_title@3x.png deleted file mode 100644 index 7590405d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Fairy/room_treasure_store_title.imageset/room_treasure_store_title@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/Contents.json b/YuMi/Assets.xcassets/jm/Guild/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/jm/Guild/Contents.json +++ b/YuMi/Assets.xcassets/jm/Guild/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_clan_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_clan_arrow.imageset/Contents.json new file mode 100644 index 00000000..194e0bbc --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_clan_arrow.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_clan_arrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_clan_arrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_clan_arrow.imageset/mine_clan_arrow@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_clan_arrow.imageset/mine_clan_arrow@2x.png new file mode 100644 index 00000000..350f066f Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_clan_arrow.imageset/mine_clan_arrow@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_clan_arrow.imageset/mine_clan_arrow@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_clan_arrow.imageset/mine_clan_arrow@3x.png new file mode 100644 index 00000000..6774c499 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_clan_arrow.imageset/mine_clan_arrow@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_give_diamone_icon.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_give_diamone_icon.imageset/Contents.json new file mode 100644 index 00000000..8f178178 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_give_diamone_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_give_diamone_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_give_diamone_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_give_diamone_icon.imageset/mine_give_diamone_icon@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_give_diamone_icon.imageset/mine_give_diamone_icon@2x.png new file mode 100644 index 00000000..24d6c7e6 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_give_diamone_icon.imageset/mine_give_diamone_icon@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_give_diamone_icon.imageset/mine_give_diamone_icon@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_give_diamone_icon.imageset/mine_give_diamone_icon@3x.png new file mode 100644 index 00000000..39509a86 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_give_diamone_icon.imageset/mine_give_diamone_icon@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_add.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_guild_add.imageset/Contents.json new file mode 100644 index 00000000..a8bd295a --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_guild_add.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_guild_add@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_guild_add@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_add.imageset/mine_guild_add@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_add.imageset/mine_guild_add@2x.png new file mode 100644 index 00000000..9f564ec8 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_add.imageset/mine_guild_add@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_add.imageset/mine_guild_add@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_add.imageset/mine_guild_add@3x.png new file mode 100644 index 00000000..a9954b8f Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_add.imageset/mine_guild_add@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_add_room.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_guild_add_room.imageset/Contents.json new file mode 100644 index 00000000..ed926a67 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_guild_add_room.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_guild_add_room@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_guild_add_room@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_add_room.imageset/mine_guild_add_room@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_add_room.imageset/mine_guild_add_room@2x.png new file mode 100644 index 00000000..84e60094 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_add_room.imageset/mine_guild_add_room@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_add_room.imageset/mine_guild_add_room@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_add_room.imageset/mine_guild_add_room@3x.png new file mode 100644 index 00000000..c1c77f56 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_add_room.imageset/mine_guild_add_room@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_anchor_income_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_anchor_income_bg.imageset/Contents.json new file mode 100644 index 00000000..b3351f63 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_anchor_income_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_guild_clan_header_anchor_income_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_guild_clan_header_anchor_income_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_anchor_income_bg.imageset/mine_guild_clan_header_anchor_income_bg@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_anchor_income_bg.imageset/mine_guild_clan_header_anchor_income_bg@2x.png new file mode 100644 index 00000000..fac3545e Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_anchor_income_bg.imageset/mine_guild_clan_header_anchor_income_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_anchor_income_bg.imageset/mine_guild_clan_header_anchor_income_bg@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_anchor_income_bg.imageset/mine_guild_clan_header_anchor_income_bg@3x.png new file mode 100644 index 00000000..c75e1656 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_anchor_income_bg.imageset/mine_guild_clan_header_anchor_income_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_bg.imageset/Contents.json new file mode 100644 index 00000000..2f3f48f3 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_guild_clan_header_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_guild_clan_header_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_bg.imageset/mine_guild_clan_header_bg@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_bg.imageset/mine_guild_clan_header_bg@2x.png new file mode 100644 index 00000000..96636176 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_bg.imageset/mine_guild_clan_header_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_bg.imageset/mine_guild_clan_header_bg@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_bg.imageset/mine_guild_clan_header_bg@3x.png new file mode 100644 index 00000000..7704dea0 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_bg.imageset/mine_guild_clan_header_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_income_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_income_bg.imageset/Contents.json new file mode 100644 index 00000000..72cbdce2 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_income_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_guild_clan_header_income_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_guild_clan_header_income_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_income_bg.imageset/mine_guild_clan_header_income_bg@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_income_bg.imageset/mine_guild_clan_header_income_bg@2x.png new file mode 100644 index 00000000..466f0027 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_income_bg.imageset/mine_guild_clan_header_income_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_income_bg.imageset/mine_guild_clan_header_income_bg@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_income_bg.imageset/mine_guild_clan_header_income_bg@3x.png new file mode 100644 index 00000000..cf610952 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_income_bg.imageset/mine_guild_clan_header_income_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_income_bg_two.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_income_bg_two.imageset/Contents.json new file mode 100644 index 00000000..18bf0b28 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_income_bg_two.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_guild_clan_header_income_bg_two@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_guild_clan_header_income_bg_two@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_income_bg_two.imageset/mine_guild_clan_header_income_bg_two@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_income_bg_two.imageset/mine_guild_clan_header_income_bg_two@2x.png new file mode 100644 index 00000000..48a660e6 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_income_bg_two.imageset/mine_guild_clan_header_income_bg_two@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_income_bg_two.imageset/mine_guild_clan_header_income_bg_two@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_income_bg_two.imageset/mine_guild_clan_header_income_bg_two@3x.png new file mode 100644 index 00000000..56957a22 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_income_bg_two.imageset/mine_guild_clan_header_income_bg_two@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_superadmin_set_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_superadmin_set_bg.imageset/Contents.json new file mode 100644 index 00000000..06aad502 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_superadmin_set_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_guild_clan_header_superadmin_set_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_guild_clan_header_superadmin_set_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_superadmin_set_bg.imageset/mine_guild_clan_header_superadmin_set_bg@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_superadmin_set_bg.imageset/mine_guild_clan_header_superadmin_set_bg@2x.png new file mode 100644 index 00000000..34ef4904 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_superadmin_set_bg.imageset/mine_guild_clan_header_superadmin_set_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_superadmin_set_bg.imageset/mine_guild_clan_header_superadmin_set_bg@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_superadmin_set_bg.imageset/mine_guild_clan_header_superadmin_set_bg@3x.png new file mode 100644 index 00000000..4631a312 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_superadmin_set_bg.imageset/mine_guild_clan_header_superadmin_set_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_superadmin_set_bg_two.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_superadmin_set_bg_two.imageset/Contents.json new file mode 100644 index 00000000..3b38616e --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_superadmin_set_bg_two.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_guild_clan_header_superadmin_set_bg_two@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_guild_clan_header_superadmin_set_bg_two@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_superadmin_set_bg_two.imageset/mine_guild_clan_header_superadmin_set_bg_two@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_superadmin_set_bg_two.imageset/mine_guild_clan_header_superadmin_set_bg_two@2x.png new file mode 100644 index 00000000..0f34a58e Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_superadmin_set_bg_two.imageset/mine_guild_clan_header_superadmin_set_bg_two@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_superadmin_set_bg_two.imageset/mine_guild_clan_header_superadmin_set_bg_two@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_superadmin_set_bg_two.imageset/mine_guild_clan_header_superadmin_set_bg_two@3x.png new file mode 100644 index 00000000..a4e92771 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_clan_header_superadmin_set_bg_two.imageset/mine_guild_clan_header_superadmin_set_bg_two@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_edit.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_edit.imageset/Contents.json new file mode 100644 index 00000000..e1b35eec --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_edit.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_guild_guild_edit@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_guild_guild_edit@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_edit.imageset/mine_guild_guild_edit@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_edit.imageset/mine_guild_guild_edit@2x.png new file mode 100644 index 00000000..c1378ae2 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_edit.imageset/mine_guild_guild_edit@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_edit.imageset/mine_guild_guild_edit@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_edit.imageset/mine_guild_guild_edit@3x.png new file mode 100644 index 00000000..faf887d2 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_edit.imageset/mine_guild_guild_edit@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_header_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_header_bg.imageset/Contents.json new file mode 100644 index 00000000..d462a977 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_header_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_guild_guild_header_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_guild_guild_header_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_header_bg.imageset/mine_guild_guild_header_bg@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_header_bg.imageset/mine_guild_guild_header_bg@2x.png new file mode 100644 index 00000000..21a46d5c Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_header_bg.imageset/mine_guild_guild_header_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_header_bg.imageset/mine_guild_guild_header_bg@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_header_bg.imageset/mine_guild_guild_header_bg@3x.png new file mode 100644 index 00000000..d759ba60 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_header_bg.imageset/mine_guild_guild_header_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_normal.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_normal.imageset/Contents.json new file mode 100644 index 00000000..ae804804 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_guild_guild_manager_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_guild_guild_manager_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_normal.imageset/mine_guild_guild_manager_normal@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_normal.imageset/mine_guild_guild_manager_normal@2x.png new file mode 100644 index 00000000..ca04b47d Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_normal.imageset/mine_guild_guild_manager_normal@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_normal.imageset/mine_guild_guild_manager_normal@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_normal.imageset/mine_guild_guild_manager_normal@3x.png new file mode 100644 index 00000000..f596a323 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_normal.imageset/mine_guild_guild_manager_normal@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_select.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_select.imageset/Contents.json new file mode 100644 index 00000000..eeadf48c --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_select.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_guild_guild_manager_select@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_guild_guild_manager_select@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_select.imageset/mine_guild_guild_manager_select@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_select.imageset/mine_guild_guild_manager_select@2x.png new file mode 100644 index 00000000..5d89c0e8 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_select.imageset/mine_guild_guild_manager_select@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_select.imageset/mine_guild_guild_manager_select@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_select.imageset/mine_guild_guild_manager_select@3x.png new file mode 100644 index 00000000..9b52ebe3 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_select.imageset/mine_guild_guild_manager_select@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_set.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_set.imageset/Contents.json new file mode 100644 index 00000000..8b6588a9 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_set.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_guild_guild_manager_set@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_guild_guild_manager_set@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_set.imageset/mine_guild_guild_manager_set@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_set.imageset/mine_guild_guild_manager_set@2x.png new file mode 100644 index 00000000..476ad381 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_set.imageset/mine_guild_guild_manager_set@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_set.imageset/mine_guild_guild_manager_set@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_set.imageset/mine_guild_guild_manager_set@3x.png new file mode 100644 index 00000000..fadd6e4d Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_manager_set.imageset/mine_guild_guild_manager_set@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_remove_member.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_remove_member.imageset/Contents.json new file mode 100644 index 00000000..e17ed6dd --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_remove_member.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_guild_guild_remove_member@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_guild_guild_remove_member@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_remove_member.imageset/mine_guild_guild_remove_member@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_remove_member.imageset/mine_guild_guild_remove_member@2x.png new file mode 100644 index 00000000..ce031110 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_remove_member.imageset/mine_guild_guild_remove_member@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_remove_member.imageset/mine_guild_guild_remove_member@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_remove_member.imageset/mine_guild_guild_remove_member@3x.png new file mode 100644 index 00000000..b3a7d3e8 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_remove_member.imageset/mine_guild_guild_remove_member@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_section_manager.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_section_manager.imageset/Contents.json new file mode 100644 index 00000000..0bc87a80 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_section_manager.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_guild_guild_section_manager@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_guild_guild_section_manager@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_section_manager.imageset/mine_guild_guild_section_manager@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_section_manager.imageset/mine_guild_guild_section_manager@2x.png new file mode 100644 index 00000000..9e32e485 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_section_manager.imageset/mine_guild_guild_section_manager@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_section_manager.imageset/mine_guild_guild_section_manager@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_section_manager.imageset/mine_guild_guild_section_manager@3x.png new file mode 100644 index 00000000..20393fb4 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_guild_section_manager.imageset/mine_guild_guild_section_manager@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_datePicker_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_datePicker_bg.imageset/Contents.json new file mode 100644 index 00000000..548f7bc4 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_datePicker_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_guild_income_datePicker_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_guild_income_datePicker_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_datePicker_bg.imageset/mine_guild_income_datePicker_bg@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_datePicker_bg.imageset/mine_guild_income_datePicker_bg@2x.png new file mode 100644 index 00000000..787cc15c Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_datePicker_bg.imageset/mine_guild_income_datePicker_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_datePicker_bg.imageset/mine_guild_income_datePicker_bg@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_datePicker_bg.imageset/mine_guild_income_datePicker_bg@3x.png new file mode 100644 index 00000000..43940937 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_datePicker_bg.imageset/mine_guild_income_datePicker_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_header_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_header_bg.imageset/Contents.json new file mode 100644 index 00000000..9ca5eed5 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_header_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_guild_income_header_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_guild_income_header_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_header_bg.imageset/mine_guild_income_header_bg@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_header_bg.imageset/mine_guild_income_header_bg@2x.png new file mode 100644 index 00000000..67fd85da Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_header_bg.imageset/mine_guild_income_header_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_header_bg.imageset/mine_guild_income_header_bg@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_header_bg.imageset/mine_guild_income_header_bg@3x.png new file mode 100644 index 00000000..65d21fd9 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_header_bg.imageset/mine_guild_income_header_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_record_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_record_arrow.imageset/Contents.json new file mode 100644 index 00000000..8bc3aceb --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_record_arrow.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_guild_income_record_arrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_guild_income_record_arrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_record_arrow.imageset/mine_guild_income_record_arrow@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_record_arrow.imageset/mine_guild_income_record_arrow@2x.png new file mode 100644 index 00000000..456c12c3 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_record_arrow.imageset/mine_guild_income_record_arrow@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_record_arrow.imageset/mine_guild_income_record_arrow@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_record_arrow.imageset/mine_guild_income_record_arrow@3x.png new file mode 100644 index 00000000..00acd2af Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_income_record_arrow.imageset/mine_guild_income_record_arrow@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_one.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_one.imageset/Contents.json new file mode 100644 index 00000000..4aec19b7 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_one.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_guild_list_one@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_guild_list_one@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_one.imageset/mine_guild_list_one@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_one.imageset/mine_guild_list_one@2x.png new file mode 100644 index 00000000..94671e9b Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_one.imageset/mine_guild_list_one@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_one.imageset/mine_guild_list_one@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_one.imageset/mine_guild_list_one@3x.png new file mode 100644 index 00000000..a9225450 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_one.imageset/mine_guild_list_one@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_three.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_three.imageset/Contents.json new file mode 100644 index 00000000..d2bcc8eb --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_three.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_guild_list_three@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_guild_list_three@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_three.imageset/mine_guild_list_three@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_three.imageset/mine_guild_list_three@2x.png new file mode 100644 index 00000000..bc13e100 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_three.imageset/mine_guild_list_three@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_three.imageset/mine_guild_list_three@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_three.imageset/mine_guild_list_three@3x.png new file mode 100644 index 00000000..60d940ec Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_three.imageset/mine_guild_list_three@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_two.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_two.imageset/Contents.json new file mode 100644 index 00000000..6f395e57 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_two.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_guild_list_two@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_guild_list_two@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_two.imageset/mine_guild_list_two@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_two.imageset/mine_guild_list_two@2x.png new file mode 100644 index 00000000..ea0b77e1 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_two.imageset/mine_guild_list_two@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_two.imageset/mine_guild_list_two@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_two.imageset/mine_guild_list_two@3x.png new file mode 100644 index 00000000..3b9b357d Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_list_two.imageset/mine_guild_list_two@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_manager_edit_name_logo.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_guild_manager_edit_name_logo.imageset/Contents.json new file mode 100644 index 00000000..91cb3d58 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_guild_manager_edit_name_logo.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_guild_manager_edit_name_logo@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_guild_manager_edit_name_logo@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_manager_edit_name_logo.imageset/mine_guild_manager_edit_name_logo@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_manager_edit_name_logo.imageset/mine_guild_manager_edit_name_logo@2x.png new file mode 100644 index 00000000..82588313 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_manager_edit_name_logo.imageset/mine_guild_manager_edit_name_logo@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_manager_edit_name_logo.imageset/mine_guild_manager_edit_name_logo@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_manager_edit_name_logo.imageset/mine_guild_manager_edit_name_logo@3x.png new file mode 100644 index 00000000..c51632e9 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_manager_edit_name_logo.imageset/mine_guild_manager_edit_name_logo@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_my_icon.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_guild_my_icon.imageset/Contents.json new file mode 100644 index 00000000..d9776c8c --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_guild_my_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_guild_my_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_guild_my_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_my_icon.imageset/mine_guild_my_icon@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_my_icon.imageset/mine_guild_my_icon@2x.png new file mode 100644 index 00000000..4dc58558 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_my_icon.imageset/mine_guild_my_icon@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_my_icon.imageset/mine_guild_my_icon@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_my_icon.imageset/mine_guild_my_icon@3x.png new file mode 100644 index 00000000..585b2a1c Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_my_icon.imageset/mine_guild_my_icon@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_right_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_guild_right_arrow.imageset/Contents.json new file mode 100644 index 00000000..f56846af --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_guild_right_arrow.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_guild_right_arrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_guild_right_arrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_right_arrow.imageset/mine_guild_right_arrow@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_right_arrow.imageset/mine_guild_right_arrow@2x.png new file mode 100644 index 00000000..ffd0d76c Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_right_arrow.imageset/mine_guild_right_arrow@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_right_arrow.imageset/mine_guild_right_arrow@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_right_arrow.imageset/mine_guild_right_arrow@3x.png new file mode 100644 index 00000000..ab66bd21 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_right_arrow.imageset/mine_guild_right_arrow@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_super_admin_more.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_guild_super_admin_more.imageset/Contents.json new file mode 100644 index 00000000..f74b5535 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_guild_super_admin_more.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_guild_super_admin_more@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_guild_super_admin_more@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_super_admin_more.imageset/mine_guild_super_admin_more@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_super_admin_more.imageset/mine_guild_super_admin_more@2x.png new file mode 100644 index 00000000..85585c37 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_super_admin_more.imageset/mine_guild_super_admin_more@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_super_admin_more.imageset/mine_guild_super_admin_more@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_super_admin_more.imageset/mine_guild_super_admin_more@3x.png new file mode 100644 index 00000000..51afe3b0 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_super_admin_more.imageset/mine_guild_super_admin_more@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_warning.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_guild_warning.imageset/Contents.json new file mode 100644 index 00000000..c023486a --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_guild_warning.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_guild_warning@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_guild_warning@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_warning.imageset/mine_guild_warning@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_warning.imageset/mine_guild_warning@2x.png new file mode 100644 index 00000000..78c0db1d Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_warning.imageset/mine_guild_warning@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_guild_warning.imageset/mine_guild_warning@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_guild_warning.imageset/mine_guild_warning@3x.png new file mode 100644 index 00000000..b6fda564 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_guild_warning.imageset/mine_guild_warning@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_info_tag_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_info_tag_arrow.imageset/Contents.json new file mode 100644 index 00000000..2fd0ed6e --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_info_tag_arrow.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_info_tag_arrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_info_tag_arrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_info_tag_arrow.imageset/mine_info_tag_arrow@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_info_tag_arrow.imageset/mine_info_tag_arrow@2x.png new file mode 100644 index 00000000..842dfd05 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_info_tag_arrow.imageset/mine_info_tag_arrow@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_info_tag_arrow.imageset/mine_info_tag_arrow@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_info_tag_arrow.imageset/mine_info_tag_arrow@3x.png new file mode 100644 index 00000000..2f493e75 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_info_tag_arrow.imageset/mine_info_tag_arrow@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_info_tag_empty.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_info_tag_empty.imageset/Contents.json new file mode 100644 index 00000000..aaf269c9 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_info_tag_empty.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_info_tag_empty@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_info_tag_empty@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_info_tag_empty.imageset/mine_info_tag_empty@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_info_tag_empty.imageset/mine_info_tag_empty@2x.png new file mode 100644 index 00000000..f5ea08a2 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_info_tag_empty.imageset/mine_info_tag_empty@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_info_tag_empty.imageset/mine_info_tag_empty@3x.png b/YuMi/Assets.xcassets/jm/Guild/mine_info_tag_empty.imageset/mine_info_tag_empty@3x.png new file mode 100644 index 00000000..e2b67954 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Guild/mine_info_tag_empty.imageset/mine_info_tag_empty@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_clan_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_clan_arrow.imageset/Contents.json deleted file mode 100644 index 5b25b49e..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_clan_arrow.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_clan_arrow@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_clan_arrow@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_clan_arrow.imageset/yumi_center_clan_arrow@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_clan_arrow.imageset/yumi_center_clan_arrow@2x.png deleted file mode 100644 index 3a7ed8b5..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_clan_arrow.imageset/yumi_center_clan_arrow@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_clan_arrow.imageset/yumi_center_clan_arrow@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_clan_arrow.imageset/yumi_center_clan_arrow@3x.png deleted file mode 100644 index 7fe5d08b..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_clan_arrow.imageset/yumi_center_clan_arrow@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_gen_labelarrow.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_gen_labelarrow.imageset/Contents.json deleted file mode 100644 index db95e21d..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_gen_labelarrow.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_gen_labelarrow@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_gen_labelarrow@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_gen_labelarrow.imageset/yumi_center_gen_labelarrow@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_gen_labelarrow.imageset/yumi_center_gen_labelarrow@2x.png deleted file mode 100644 index e40ab799..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_gen_labelarrow.imageset/yumi_center_gen_labelarrow@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_gen_labelarrow.imageset/yumi_center_gen_labelarrow@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_gen_labelarrow.imageset/yumi_center_gen_labelarrow@3x.png deleted file mode 100644 index aaf98edf..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_gen_labelarrow.imageset/yumi_center_gen_labelarrow@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_gen_labelempty.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_gen_labelempty.imageset/Contents.json deleted file mode 100644 index 681b7a02..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_gen_labelempty.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_gen_labelempty@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_gen_labelempty@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_gen_labelempty.imageset/yumi_center_gen_labelempty@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_gen_labelempty.imageset/yumi_center_gen_labelempty@2x.png deleted file mode 100644 index 18cbd371..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_gen_labelempty.imageset/yumi_center_gen_labelempty@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_gen_labelempty.imageset/yumi_center_gen_labelempty@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_gen_labelempty.imageset/yumi_center_gen_labelempty@3x.png deleted file mode 100644 index 0f1cafcf..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_gen_labelempty.imageset/yumi_center_gen_labelempty@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_give_diamone_pic.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_give_diamone_pic.imageset/Contents.json deleted file mode 100644 index 96da1794..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_give_diamone_pic.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_give_diamone_pic@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_give_diamone_pic@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_give_diamone_pic.imageset/yumi_center_give_diamone_pic@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_give_diamone_pic.imageset/yumi_center_give_diamone_pic@2x.png deleted file mode 100644 index 1a1be84b..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_give_diamone_pic.imageset/yumi_center_give_diamone_pic@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_give_diamone_pic.imageset/yumi_center_give_diamone_pic@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_give_diamone_pic.imageset/yumi_center_give_diamone_pic@3x.png deleted file mode 100644 index 6bdffa8b..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_give_diamone_pic.imageset/yumi_center_give_diamone_pic@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_add.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_add.imageset/Contents.json deleted file mode 100644 index 2574b2a1..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_add.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_guild_add@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_guild_add@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_add.imageset/yumi_center_guild_add@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_add.imageset/yumi_center_guild_add@2x.png deleted file mode 100644 index 39b4ff16..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_add.imageset/yumi_center_guild_add@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_add.imageset/yumi_center_guild_add@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_add.imageset/yumi_center_guild_add@3x.png deleted file mode 100644 index 92817629..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_add.imageset/yumi_center_guild_add@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_add_room.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_add_room.imageset/Contents.json deleted file mode 100644 index 6faf6b57..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_add_room.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_guild_add_room@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_guild_add_room@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_add_room.imageset/yumi_center_guild_add_room@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_add_room.imageset/yumi_center_guild_add_room@2x.png deleted file mode 100644 index dbe0db2a..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_add_room.imageset/yumi_center_guild_add_room@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_add_room.imageset/yumi_center_guild_add_room@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_add_room.imageset/yumi_center_guild_add_room@3x.png deleted file mode 100644 index 020655fe..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_add_room.imageset/yumi_center_guild_add_room@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_anchor_income_background.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_anchor_income_background.imageset/Contents.json deleted file mode 100644 index 2fb30746..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_anchor_income_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_guild_clan_header_anchor_income_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_guild_clan_header_anchor_income_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_anchor_income_background.imageset/yumi_center_guild_clan_header_anchor_income_background@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_anchor_income_background.imageset/yumi_center_guild_clan_header_anchor_income_background@2x.png deleted file mode 100644 index 86fef5e7..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_anchor_income_background.imageset/yumi_center_guild_clan_header_anchor_income_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_anchor_income_background.imageset/yumi_center_guild_clan_header_anchor_income_background@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_anchor_income_background.imageset/yumi_center_guild_clan_header_anchor_income_background@3x.png deleted file mode 100644 index 2e5c0133..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_anchor_income_background.imageset/yumi_center_guild_clan_header_anchor_income_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_background.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_background.imageset/Contents.json deleted file mode 100644 index 04e4180b..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_guild_clan_header_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_guild_clan_header_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_background.imageset/yumi_center_guild_clan_header_background@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_background.imageset/yumi_center_guild_clan_header_background@2x.png deleted file mode 100644 index d3fb7f40..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_background.imageset/yumi_center_guild_clan_header_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_background.imageset/yumi_center_guild_clan_header_background@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_background.imageset/yumi_center_guild_clan_header_background@3x.png deleted file mode 100644 index b1b743bf..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_background.imageset/yumi_center_guild_clan_header_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_income_background.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_income_background.imageset/Contents.json deleted file mode 100644 index 6c6a8064..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_income_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_guild_clan_header_income_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_guild_clan_header_income_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_income_background.imageset/yumi_center_guild_clan_header_income_background@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_income_background.imageset/yumi_center_guild_clan_header_income_background@2x.png deleted file mode 100644 index c4f7b926..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_income_background.imageset/yumi_center_guild_clan_header_income_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_income_background.imageset/yumi_center_guild_clan_header_income_background@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_income_background.imageset/yumi_center_guild_clan_header_income_background@3x.png deleted file mode 100644 index b32eb6d3..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_income_background.imageset/yumi_center_guild_clan_header_income_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_income_background_two.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_income_background_two.imageset/Contents.json deleted file mode 100644 index 7fdea1c3..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_income_background_two.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_guild_clan_header_income_background_two@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_guild_clan_header_income_background_two@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_income_background_two.imageset/yumi_center_guild_clan_header_income_background_two@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_income_background_two.imageset/yumi_center_guild_clan_header_income_background_two@2x.png deleted file mode 100644 index b1754869..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_income_background_two.imageset/yumi_center_guild_clan_header_income_background_two@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_income_background_two.imageset/yumi_center_guild_clan_header_income_background_two@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_income_background_two.imageset/yumi_center_guild_clan_header_income_background_two@3x.png deleted file mode 100644 index 6d86d437..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_income_background_two.imageset/yumi_center_guild_clan_header_income_background_two@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_superadmin_set_background.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_superadmin_set_background.imageset/Contents.json deleted file mode 100644 index 36eb3334..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_superadmin_set_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_guild_clan_header_superadmin_set_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_guild_clan_header_superadmin_set_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_superadmin_set_background.imageset/yumi_center_guild_clan_header_superadmin_set_background@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_superadmin_set_background.imageset/yumi_center_guild_clan_header_superadmin_set_background@2x.png deleted file mode 100644 index dd31e5a6..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_superadmin_set_background.imageset/yumi_center_guild_clan_header_superadmin_set_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_superadmin_set_background.imageset/yumi_center_guild_clan_header_superadmin_set_background@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_superadmin_set_background.imageset/yumi_center_guild_clan_header_superadmin_set_background@3x.png deleted file mode 100644 index a5560e47..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_superadmin_set_background.imageset/yumi_center_guild_clan_header_superadmin_set_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_superadmin_set_background_two.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_superadmin_set_background_two.imageset/Contents.json deleted file mode 100644 index 1c5e1fbf..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_superadmin_set_background_two.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_guild_clan_header_superadmin_set_background_two@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_guild_clan_header_superadmin_set_background_two@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_superadmin_set_background_two.imageset/yumi_center_guild_clan_header_superadmin_set_background_two@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_superadmin_set_background_two.imageset/yumi_center_guild_clan_header_superadmin_set_background_two@2x.png deleted file mode 100644 index b9429be5..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_superadmin_set_background_two.imageset/yumi_center_guild_clan_header_superadmin_set_background_two@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_superadmin_set_background_two.imageset/yumi_center_guild_clan_header_superadmin_set_background_two@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_superadmin_set_background_two.imageset/yumi_center_guild_clan_header_superadmin_set_background_two@3x.png deleted file mode 100644 index 82dc35ea..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_clan_header_superadmin_set_background_two.imageset/yumi_center_guild_clan_header_superadmin_set_background_two@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_edit.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_edit.imageset/Contents.json deleted file mode 100644 index 4e6b2f3b..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_edit.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_guild_guild_edit@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_guild_guild_edit@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_edit.imageset/yumi_center_guild_guild_edit@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_edit.imageset/yumi_center_guild_guild_edit@2x.png deleted file mode 100644 index 61e0c854..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_edit.imageset/yumi_center_guild_guild_edit@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_edit.imageset/yumi_center_guild_guild_edit@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_edit.imageset/yumi_center_guild_guild_edit@3x.png deleted file mode 100644 index d977fb53..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_edit.imageset/yumi_center_guild_guild_edit@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_header_background.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_header_background.imageset/Contents.json deleted file mode 100644 index 43b374dd..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_header_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_guild_guild_header_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_guild_guild_header_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_header_background.imageset/yumi_center_guild_guild_header_background@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_header_background.imageset/yumi_center_guild_guild_header_background@2x.png deleted file mode 100644 index 3afd1605..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_header_background.imageset/yumi_center_guild_guild_header_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_header_background.imageset/yumi_center_guild_guild_header_background@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_header_background.imageset/yumi_center_guild_guild_header_background@3x.png deleted file mode 100644 index fe571c57..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_header_background.imageset/yumi_center_guild_guild_header_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_normal.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_normal.imageset/Contents.json deleted file mode 100644 index 91228b4a..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_normal.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_guild_guild_manager_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_guild_guild_manager_normal@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_normal.imageset/yumi_center_guild_guild_manager_normal@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_normal.imageset/yumi_center_guild_guild_manager_normal@2x.png deleted file mode 100644 index ce17274a..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_normal.imageset/yumi_center_guild_guild_manager_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_normal.imageset/yumi_center_guild_guild_manager_normal@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_normal.imageset/yumi_center_guild_guild_manager_normal@3x.png deleted file mode 100644 index 0c19cb7a..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_normal.imageset/yumi_center_guild_guild_manager_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_select.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_select.imageset/Contents.json deleted file mode 100644 index b3efcc14..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_select.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_guild_guild_manager_select@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_guild_guild_manager_select@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_select.imageset/yumi_center_guild_guild_manager_select@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_select.imageset/yumi_center_guild_guild_manager_select@2x.png deleted file mode 100644 index 7d57a88d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_select.imageset/yumi_center_guild_guild_manager_select@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_select.imageset/yumi_center_guild_guild_manager_select@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_select.imageset/yumi_center_guild_guild_manager_select@3x.png deleted file mode 100644 index 99241df7..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_select.imageset/yumi_center_guild_guild_manager_select@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_set.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_set.imageset/Contents.json deleted file mode 100644 index 547fe234..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_set.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_guild_guild_manager_set@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_guild_guild_manager_set@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_set.imageset/yumi_center_guild_guild_manager_set@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_set.imageset/yumi_center_guild_guild_manager_set@2x.png deleted file mode 100644 index def2016e..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_set.imageset/yumi_center_guild_guild_manager_set@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_set.imageset/yumi_center_guild_guild_manager_set@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_set.imageset/yumi_center_guild_guild_manager_set@3x.png deleted file mode 100644 index b996dd3d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_manager_set.imageset/yumi_center_guild_guild_manager_set@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_remove_member.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_remove_member.imageset/Contents.json deleted file mode 100644 index 951c7187..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_remove_member.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_guild_guild_remove_member@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_guild_guild_remove_member@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_remove_member.imageset/yumi_center_guild_guild_remove_member@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_remove_member.imageset/yumi_center_guild_guild_remove_member@2x.png deleted file mode 100644 index 46255fa1..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_remove_member.imageset/yumi_center_guild_guild_remove_member@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_remove_member.imageset/yumi_center_guild_guild_remove_member@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_remove_member.imageset/yumi_center_guild_guild_remove_member@3x.png deleted file mode 100644 index 8418f20c..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_remove_member.imageset/yumi_center_guild_guild_remove_member@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_section_manager.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_section_manager.imageset/Contents.json deleted file mode 100644 index 9614d0e6..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_section_manager.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_guild_guild_section_manager@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_guild_guild_section_manager@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_section_manager.imageset/yumi_center_guild_guild_section_manager@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_section_manager.imageset/yumi_center_guild_guild_section_manager@2x.png deleted file mode 100644 index cc06fabc..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_section_manager.imageset/yumi_center_guild_guild_section_manager@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_section_manager.imageset/yumi_center_guild_guild_section_manager@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_section_manager.imageset/yumi_center_guild_guild_section_manager@3x.png deleted file mode 100644 index 2a2a39da..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_guild_section_manager.imageset/yumi_center_guild_guild_section_manager@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_datePicker_background.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_datePicker_background.imageset/Contents.json deleted file mode 100644 index 3e443ffe..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_datePicker_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_guild_income_datePicker_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_guild_income_datePicker_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_datePicker_background.imageset/yumi_center_guild_income_datePicker_background@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_datePicker_background.imageset/yumi_center_guild_income_datePicker_background@2x.png deleted file mode 100644 index bf698eb8..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_datePicker_background.imageset/yumi_center_guild_income_datePicker_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_datePicker_background.imageset/yumi_center_guild_income_datePicker_background@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_datePicker_background.imageset/yumi_center_guild_income_datePicker_background@3x.png deleted file mode 100644 index 23c57e6d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_datePicker_background.imageset/yumi_center_guild_income_datePicker_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_header_background.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_header_background.imageset/Contents.json deleted file mode 100644 index 1395b03e..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_header_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_guild_income_header_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_guild_income_header_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_header_background.imageset/yumi_center_guild_income_header_background@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_header_background.imageset/yumi_center_guild_income_header_background@2x.png deleted file mode 100644 index d10cea73..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_header_background.imageset/yumi_center_guild_income_header_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_header_background.imageset/yumi_center_guild_income_header_background@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_header_background.imageset/yumi_center_guild_income_header_background@3x.png deleted file mode 100644 index 74649544..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_header_background.imageset/yumi_center_guild_income_header_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_record_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_record_arrow.imageset/Contents.json deleted file mode 100644 index fd64215a..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_record_arrow.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_guild_income_record_arrow@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_guild_income_record_arrow@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_record_arrow.imageset/yumi_center_guild_income_record_arrow@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_record_arrow.imageset/yumi_center_guild_income_record_arrow@2x.png deleted file mode 100644 index 927f4001..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_record_arrow.imageset/yumi_center_guild_income_record_arrow@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_record_arrow.imageset/yumi_center_guild_income_record_arrow@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_record_arrow.imageset/yumi_center_guild_income_record_arrow@3x.png deleted file mode 100644 index 4bca6c6f..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_income_record_arrow.imageset/yumi_center_guild_income_record_arrow@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_one.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_one.imageset/Contents.json deleted file mode 100644 index 38e6621b..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_one.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_guild_list_one@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_guild_list_one@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_one.imageset/yumi_center_guild_list_one@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_one.imageset/yumi_center_guild_list_one@2x.png deleted file mode 100644 index dbe7b595..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_one.imageset/yumi_center_guild_list_one@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_one.imageset/yumi_center_guild_list_one@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_one.imageset/yumi_center_guild_list_one@3x.png deleted file mode 100644 index 08764299..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_one.imageset/yumi_center_guild_list_one@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_three.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_three.imageset/Contents.json deleted file mode 100644 index 3f4a4032..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_three.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_guild_list_three@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_guild_list_three@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_three.imageset/yumi_center_guild_list_three@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_three.imageset/yumi_center_guild_list_three@2x.png deleted file mode 100644 index a72b6087..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_three.imageset/yumi_center_guild_list_three@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_three.imageset/yumi_center_guild_list_three@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_three.imageset/yumi_center_guild_list_three@3x.png deleted file mode 100644 index 62063c9f..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_three.imageset/yumi_center_guild_list_three@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_two.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_two.imageset/Contents.json deleted file mode 100644 index e6b76bb0..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_two.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_guild_list_two@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_guild_list_two@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_two.imageset/yumi_center_guild_list_two@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_two.imageset/yumi_center_guild_list_two@2x.png deleted file mode 100644 index 19ed6139..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_two.imageset/yumi_center_guild_list_two@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_two.imageset/yumi_center_guild_list_two@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_two.imageset/yumi_center_guild_list_two@3x.png deleted file mode 100644 index 0985cc3d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_list_two.imageset/yumi_center_guild_list_two@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_manager_edit_name_logo.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_manager_edit_name_logo.imageset/Contents.json deleted file mode 100644 index d8593eaa..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_manager_edit_name_logo.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_guild_manager_edit_name_logo@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_guild_manager_edit_name_logo@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_manager_edit_name_logo.imageset/yumi_center_guild_manager_edit_name_logo@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_manager_edit_name_logo.imageset/yumi_center_guild_manager_edit_name_logo@2x.png deleted file mode 100644 index 7d42aafd..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_manager_edit_name_logo.imageset/yumi_center_guild_manager_edit_name_logo@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_manager_edit_name_logo.imageset/yumi_center_guild_manager_edit_name_logo@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_manager_edit_name_logo.imageset/yumi_center_guild_manager_edit_name_logo@3x.png deleted file mode 100644 index b9569f89..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_manager_edit_name_logo.imageset/yumi_center_guild_manager_edit_name_logo@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_my_pic.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_my_pic.imageset/Contents.json deleted file mode 100644 index 767ef06b..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_my_pic.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_guild_my_pic@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_guild_my_pic@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_my_pic.imageset/yumi_center_guild_my_pic@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_my_pic.imageset/yumi_center_guild_my_pic@2x.png deleted file mode 100644 index a53b32a4..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_my_pic.imageset/yumi_center_guild_my_pic@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_my_pic.imageset/yumi_center_guild_my_pic@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_my_pic.imageset/yumi_center_guild_my_pic@3x.png deleted file mode 100644 index fed6ecdf..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_my_pic.imageset/yumi_center_guild_my_pic@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_right_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_right_arrow.imageset/Contents.json deleted file mode 100644 index 77c467bc..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_right_arrow.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_guild_right_arrow@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_guild_right_arrow@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_right_arrow.imageset/yumi_center_guild_right_arrow@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_right_arrow.imageset/yumi_center_guild_right_arrow@2x.png deleted file mode 100644 index bf7a0913..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_right_arrow.imageset/yumi_center_guild_right_arrow@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_right_arrow.imageset/yumi_center_guild_right_arrow@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_right_arrow.imageset/yumi_center_guild_right_arrow@3x.png deleted file mode 100644 index 4c1c465d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_right_arrow.imageset/yumi_center_guild_right_arrow@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_super_admin_more.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_super_admin_more.imageset/Contents.json deleted file mode 100644 index dc88be52..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_super_admin_more.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_guild_super_admin_more@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_guild_super_admin_more@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_super_admin_more.imageset/yumi_center_guild_super_admin_more@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_super_admin_more.imageset/yumi_center_guild_super_admin_more@2x.png deleted file mode 100644 index 48c0a00c..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_super_admin_more.imageset/yumi_center_guild_super_admin_more@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_super_admin_more.imageset/yumi_center_guild_super_admin_more@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_super_admin_more.imageset/yumi_center_guild_super_admin_more@3x.png deleted file mode 100644 index f079f421..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_super_admin_more.imageset/yumi_center_guild_super_admin_more@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_warning.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_warning.imageset/Contents.json deleted file mode 100644 index 4f667e36..00000000 --- a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_warning.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_guild_warning@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_guild_warning@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_warning.imageset/yumi_center_guild_warning@2x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_warning.imageset/yumi_center_guild_warning@2x.png deleted file mode 100644 index dbaf964f..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_warning.imageset/yumi_center_guild_warning@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_warning.imageset/yumi_center_guild_warning@3x.png b/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_warning.imageset/yumi_center_guild_warning@3x.png deleted file mode 100644 index 1f929df8..00000000 Binary files a/YuMi/Assets.xcassets/jm/Guild/yumi_center_guild_warning.imageset/yumi_center_guild_warning@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/jm/IncomeRecord/Contents.json +++ b/YuMi/Assets.xcassets/jm/IncomeRecord/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_diamonds_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_diamonds_arrow.imageset/Contents.json new file mode 100644 index 00000000..c8c7d883 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_diamonds_arrow.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "exchange_diamonds_arrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "exchange_diamonds_arrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_diamonds_arrow.imageset/exchange_diamonds_arrow@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_diamonds_arrow.imageset/exchange_diamonds_arrow@2x.png new file mode 100644 index 00000000..b7ac3dc4 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_diamonds_arrow.imageset/exchange_diamonds_arrow@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_diamonds_arrow.imageset/exchange_diamonds_arrow@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_diamonds_arrow.imageset/exchange_diamonds_arrow@3x.png new file mode 100644 index 00000000..b1a013b0 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_diamonds_arrow.imageset/exchange_diamonds_arrow@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_diamonds_icon.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_diamonds_icon.imageset/Contents.json new file mode 100644 index 00000000..319510c8 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_diamonds_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "exchange_diamonds_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "exchange_diamonds_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_diamonds_icon.imageset/exchange_diamonds_icon@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_diamonds_icon.imageset/exchange_diamonds_icon@2x.png new file mode 100644 index 00000000..a7d34806 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_diamonds_icon.imageset/exchange_diamonds_icon@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_diamonds_icon.imageset/exchange_diamonds_icon@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_diamonds_icon.imageset/exchange_diamonds_icon@3x.png new file mode 100644 index 00000000..3666d1c2 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_diamonds_icon.imageset/exchange_diamonds_icon@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_down.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_down.imageset/Contents.json new file mode 100644 index 00000000..77c0e378 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_down.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "exchange_down@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "exchange_down@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_down.imageset/exchange_down@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_down.imageset/exchange_down@2x.png new file mode 100644 index 00000000..92f589a1 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_down.imageset/exchange_down@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_down.imageset/exchange_down@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_down.imageset/exchange_down@3x.png new file mode 100644 index 00000000..8ec7e95f Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_down.imageset/exchange_down@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_down_grey.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_down_grey.imageset/Contents.json new file mode 100644 index 00000000..e12a2c5f --- /dev/null +++ b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_down_grey.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "exchange_down_grey@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "exchange_down_grey@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_down_grey.imageset/exchange_down_grey@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_down_grey.imageset/exchange_down_grey@2x.png new file mode 100644 index 00000000..b335073d Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_down_grey.imageset/exchange_down_grey@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_down_grey.imageset/exchange_down_grey@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_down_grey.imageset/exchange_down_grey@3x.png new file mode 100644 index 00000000..25ca2097 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_down_grey.imageset/exchange_down_grey@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_gold_icon.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_gold_icon.imageset/Contents.json new file mode 100644 index 00000000..c72a09c6 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_gold_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "exchange_gold_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "exchange_gold_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_gold_icon.imageset/exchange_gold_icon@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_gold_icon.imageset/exchange_gold_icon@2x.png new file mode 100644 index 00000000..44ff8221 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_gold_icon.imageset/exchange_gold_icon@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_gold_icon.imageset/exchange_gold_icon@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_gold_icon.imageset/exchange_gold_icon@3x.png new file mode 100644 index 00000000..270985be Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_gold_icon.imageset/exchange_gold_icon@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_up.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_up.imageset/Contents.json new file mode 100644 index 00000000..39513689 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_up.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "exchange_up@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "exchange_up@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_up.imageset/exchange_up@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_up.imageset/exchange_up@2x.png new file mode 100644 index 00000000..86214b43 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_up.imageset/exchange_up@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_up.imageset/exchange_up@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_up.imageset/exchange_up@3x.png new file mode 100644 index 00000000..cda6f115 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_up.imageset/exchange_up@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_up_grey.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_up_grey.imageset/Contents.json new file mode 100644 index 00000000..2b0dbe9f --- /dev/null +++ b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_up_grey.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "exchange_up_grey@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "exchange_up_grey@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_up_grey.imageset/exchange_up_grey@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_up_grey.imageset/exchange_up_grey@2x.png new file mode 100644 index 00000000..841244fa Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_up_grey.imageset/exchange_up_grey@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_up_grey.imageset/exchange_up_grey@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_up_grey.imageset/exchange_up_grey@3x.png new file mode 100644 index 00000000..bb6149e2 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/exchange_up_grey.imageset/exchange_up_grey@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_add.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_add.imageset/Contents.json new file mode 100644 index 00000000..16ea5fea --- /dev/null +++ b/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_add.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gold_details_add@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gold_details_add@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_add.imageset/gold_details_add@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_add.imageset/gold_details_add@2x.png new file mode 100644 index 00000000..889eee56 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_add.imageset/gold_details_add@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_add.imageset/gold_details_add@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_add.imageset/gold_details_add@3x.png new file mode 100644 index 00000000..120752c6 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_add.imageset/gold_details_add@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_arrow_up.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_arrow_up.imageset/Contents.json new file mode 100644 index 00000000..2cfbb69b --- /dev/null +++ b/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_arrow_up.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gold_details_arrow_up@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gold_details_arrow_up@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_arrow_up.imageset/gold_details_arrow_up@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_arrow_up.imageset/gold_details_arrow_up@2x.png new file mode 100644 index 00000000..7c0189f0 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_arrow_up.imageset/gold_details_arrow_up@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_arrow_up.imageset/gold_details_arrow_up@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_arrow_up.imageset/gold_details_arrow_up@3x.png new file mode 100644 index 00000000..920c4224 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_arrow_up.imageset/gold_details_arrow_up@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_head_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_head_bg.imageset/Contents.json new file mode 100644 index 00000000..ec45b439 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_head_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gold_details_head_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gold_details_head_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_head_bg.imageset/gold_details_head_bg@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_head_bg.imageset/gold_details_head_bg@2x.png new file mode 100644 index 00000000..49ccc6aa Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_head_bg.imageset/gold_details_head_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_head_bg.imageset/gold_details_head_bg@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_head_bg.imageset/gold_details_head_bg@3x.png new file mode 100644 index 00000000..6f689a8e Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_head_bg.imageset/gold_details_head_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_minus.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_minus.imageset/Contents.json new file mode 100644 index 00000000..4f9131d9 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_minus.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gold_details_minus@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gold_details_minus@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_minus.imageset/gold_details_minus@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_minus.imageset/gold_details_minus@2x.png new file mode 100644 index 00000000..561a50e9 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_minus.imageset/gold_details_minus@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_minus.imageset/gold_details_minus@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_minus.imageset/gold_details_minus@3x.png new file mode 100644 index 00000000..694aeacc Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/gold_details_minus.imageset/gold_details_minus@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_arrow_1.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_arrow_1.imageset/Contents.json new file mode 100644 index 00000000..0c599888 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_arrow_1.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "income_record_arrow_1@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "income_record_arrow_1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_arrow_1.imageset/income_record_arrow_1@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_arrow_1.imageset/income_record_arrow_1@2x.png new file mode 100644 index 00000000..e3111b16 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_arrow_1.imageset/income_record_arrow_1@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_arrow_1.imageset/income_record_arrow_1@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_arrow_1.imageset/income_record_arrow_1@3x.png new file mode 100644 index 00000000..21c6a997 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_arrow_1.imageset/income_record_arrow_1@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_arrow_2.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_arrow_2.imageset/Contents.json new file mode 100644 index 00000000..75f6d0b8 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_arrow_2.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "income_record_arrow_2@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "income_record_arrow_2@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_arrow_2.imageset/income_record_arrow_2@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_arrow_2.imageset/income_record_arrow_2@2x.png new file mode 100644 index 00000000..35bbec42 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_arrow_2.imageset/income_record_arrow_2@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_arrow_2.imageset/income_record_arrow_2@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_arrow_2.imageset/income_record_arrow_2@3x.png new file mode 100644 index 00000000..886a53df Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_arrow_2.imageset/income_record_arrow_2@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_diamond_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_diamond_bg.imageset/Contents.json new file mode 100644 index 00000000..584ac7fc --- /dev/null +++ b/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_diamond_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "income_record_diamond_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "income_record_diamond_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_diamond_bg.imageset/income_record_diamond_bg@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_diamond_bg.imageset/income_record_diamond_bg@2x.png new file mode 100644 index 00000000..b73a21fe Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_diamond_bg.imageset/income_record_diamond_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_diamond_bg.imageset/income_record_diamond_bg@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_diamond_bg.imageset/income_record_diamond_bg@3x.png new file mode 100644 index 00000000..692d4159 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_diamond_bg.imageset/income_record_diamond_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_gold_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_gold_bg.imageset/Contents.json new file mode 100644 index 00000000..3029d94d --- /dev/null +++ b/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_gold_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "income_record_gold_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "income_record_gold_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_gold_bg.imageset/income_record_gold_bg@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_gold_bg.imageset/income_record_gold_bg@2x.png new file mode 100644 index 00000000..3d8e4e76 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_gold_bg.imageset/income_record_gold_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_gold_bg.imageset/income_record_gold_bg@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_gold_bg.imageset/income_record_gold_bg@3x.png new file mode 100644 index 00000000..f8357c05 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/income_record_gold_bg.imageset/income_record_gold_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/withdrawal_Head_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/withdrawal_Head_arrow.imageset/Contents.json new file mode 100644 index 00000000..d1e77395 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/IncomeRecord/withdrawal_Head_arrow.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "withdrawal_Head_arrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "withdrawal_Head_arrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/withdrawal_Head_arrow.imageset/withdrawal_Head_arrow@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/withdrawal_Head_arrow.imageset/withdrawal_Head_arrow@2x.png new file mode 100644 index 00000000..7d1493a1 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/withdrawal_Head_arrow.imageset/withdrawal_Head_arrow@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/withdrawal_Head_arrow.imageset/withdrawal_Head_arrow@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/withdrawal_Head_arrow.imageset/withdrawal_Head_arrow@3x.png new file mode 100644 index 00000000..dee5abd5 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/withdrawal_Head_arrow.imageset/withdrawal_Head_arrow@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/withdrawal_gold_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/withdrawal_gold_arrow.imageset/Contents.json new file mode 100644 index 00000000..5fe466c7 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/IncomeRecord/withdrawal_gold_arrow.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "withdrawal_gold_arrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "withdrawal_gold_arrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/withdrawal_gold_arrow.imageset/withdrawal_gold_arrow@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/withdrawal_gold_arrow.imageset/withdrawal_gold_arrow@2x.png new file mode 100644 index 00000000..e3111b16 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/withdrawal_gold_arrow.imageset/withdrawal_gold_arrow@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/withdrawal_gold_arrow.imageset/withdrawal_gold_arrow@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/withdrawal_gold_arrow.imageset/withdrawal_gold_arrow@3x.png new file mode 100644 index 00000000..21c6a997 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/IncomeRecord/withdrawal_gold_arrow.imageset/withdrawal_gold_arrow@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_diamonds_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_diamonds_arrow.imageset/Contents.json deleted file mode 100644 index c658f067..00000000 --- a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_diamonds_arrow.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_exchange_diamonds_arrow@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_exchange_diamonds_arrow@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_diamonds_arrow.imageset/yumi_exchange_diamonds_arrow@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_diamonds_arrow.imageset/yumi_exchange_diamonds_arrow@2x.png deleted file mode 100644 index bdbae085..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_diamonds_arrow.imageset/yumi_exchange_diamonds_arrow@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_diamonds_arrow.imageset/yumi_exchange_diamonds_arrow@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_diamonds_arrow.imageset/yumi_exchange_diamonds_arrow@3x.png deleted file mode 100644 index b5d7426a..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_diamonds_arrow.imageset/yumi_exchange_diamonds_arrow@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_diamonds_pic.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_diamonds_pic.imageset/Contents.json deleted file mode 100644 index 4140ab21..00000000 --- a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_diamonds_pic.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_exchange_diamonds_pic@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_exchange_diamonds_pic@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_diamonds_pic.imageset/yumi_exchange_diamonds_pic@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_diamonds_pic.imageset/yumi_exchange_diamonds_pic@2x.png deleted file mode 100644 index 202e765a..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_diamonds_pic.imageset/yumi_exchange_diamonds_pic@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_diamonds_pic.imageset/yumi_exchange_diamonds_pic@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_diamonds_pic.imageset/yumi_exchange_diamonds_pic@3x.png deleted file mode 100644 index b4ce2d9c..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_diamonds_pic.imageset/yumi_exchange_diamonds_pic@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_down.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_down.imageset/Contents.json deleted file mode 100644 index 6b5e9732..00000000 --- a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_down.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_exchange_down@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_exchange_down@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_down.imageset/yumi_exchange_down@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_down.imageset/yumi_exchange_down@2x.png deleted file mode 100644 index 4d9d903d..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_down.imageset/yumi_exchange_down@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_down.imageset/yumi_exchange_down@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_down.imageset/yumi_exchange_down@3x.png deleted file mode 100644 index 321695cb..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_down.imageset/yumi_exchange_down@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_down_grey.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_down_grey.imageset/Contents.json deleted file mode 100644 index 940afdab..00000000 --- a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_down_grey.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_exchange_down_grey@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_exchange_down_grey@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_down_grey.imageset/yumi_exchange_down_grey@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_down_grey.imageset/yumi_exchange_down_grey@2x.png deleted file mode 100644 index fe9fa2db..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_down_grey.imageset/yumi_exchange_down_grey@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_down_grey.imageset/yumi_exchange_down_grey@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_down_grey.imageset/yumi_exchange_down_grey@3x.png deleted file mode 100644 index 33355405..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_down_grey.imageset/yumi_exchange_down_grey@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_gold_pic.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_gold_pic.imageset/Contents.json deleted file mode 100644 index f5b96aa9..00000000 --- a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_gold_pic.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_exchange_gold_pic@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_exchange_gold_pic@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_gold_pic.imageset/yumi_exchange_gold_pic@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_gold_pic.imageset/yumi_exchange_gold_pic@2x.png deleted file mode 100644 index d264342f..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_gold_pic.imageset/yumi_exchange_gold_pic@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_gold_pic.imageset/yumi_exchange_gold_pic@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_gold_pic.imageset/yumi_exchange_gold_pic@3x.png deleted file mode 100644 index 583453db..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_gold_pic.imageset/yumi_exchange_gold_pic@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_up.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_up.imageset/Contents.json deleted file mode 100644 index 30a552e2..00000000 --- a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_up.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_exchange_up@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_exchange_up@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_up.imageset/yumi_exchange_up@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_up.imageset/yumi_exchange_up@2x.png deleted file mode 100644 index 40abfe07..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_up.imageset/yumi_exchange_up@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_up.imageset/yumi_exchange_up@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_up.imageset/yumi_exchange_up@3x.png deleted file mode 100644 index 58f42b19..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_up.imageset/yumi_exchange_up@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_up_grey.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_up_grey.imageset/Contents.json deleted file mode 100644 index ad13f933..00000000 --- a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_up_grey.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_exchange_up_grey@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_exchange_up_grey@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_up_grey.imageset/yumi_exchange_up_grey@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_up_grey.imageset/yumi_exchange_up_grey@2x.png deleted file mode 100644 index 81854043..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_up_grey.imageset/yumi_exchange_up_grey@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_up_grey.imageset/yumi_exchange_up_grey@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_up_grey.imageset/yumi_exchange_up_grey@3x.png deleted file mode 100644 index 85089499..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_exchange_up_grey.imageset/yumi_exchange_up_grey@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_add.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_add.imageset/Contents.json deleted file mode 100644 index 8c0cfc36..00000000 --- a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_add.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_gold_details_add@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_gold_details_add@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_add.imageset/yumi_gold_details_add@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_add.imageset/yumi_gold_details_add@2x.png deleted file mode 100644 index 7d57963d..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_add.imageset/yumi_gold_details_add@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_add.imageset/yumi_gold_details_add@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_add.imageset/yumi_gold_details_add@3x.png deleted file mode 100644 index f0a1a539..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_add.imageset/yumi_gold_details_add@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_arrow_up.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_arrow_up.imageset/Contents.json deleted file mode 100644 index fdf83731..00000000 --- a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_arrow_up.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_gold_details_arrow_up@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_gold_details_arrow_up@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_arrow_up.imageset/yumi_gold_details_arrow_up@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_arrow_up.imageset/yumi_gold_details_arrow_up@2x.png deleted file mode 100644 index f0a82e80..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_arrow_up.imageset/yumi_gold_details_arrow_up@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_arrow_up.imageset/yumi_gold_details_arrow_up@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_arrow_up.imageset/yumi_gold_details_arrow_up@3x.png deleted file mode 100644 index 8decb72a..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_arrow_up.imageset/yumi_gold_details_arrow_up@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_head_background.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_head_background.imageset/Contents.json deleted file mode 100644 index 048e5167..00000000 --- a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_head_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_gold_details_head_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_gold_details_head_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_head_background.imageset/yumi_gold_details_head_background@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_head_background.imageset/yumi_gold_details_head_background@2x.png deleted file mode 100644 index f6113db0..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_head_background.imageset/yumi_gold_details_head_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_head_background.imageset/yumi_gold_details_head_background@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_head_background.imageset/yumi_gold_details_head_background@3x.png deleted file mode 100644 index 117e6435..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_head_background.imageset/yumi_gold_details_head_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_minus.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_minus.imageset/Contents.json deleted file mode 100644 index a308ad38..00000000 --- a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_minus.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_gold_details_minus@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_gold_details_minus@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_minus.imageset/yumi_gold_details_minus@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_minus.imageset/yumi_gold_details_minus@2x.png deleted file mode 100644 index 321d22f9..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_minus.imageset/yumi_gold_details_minus@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_minus.imageset/yumi_gold_details_minus@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_minus.imageset/yumi_gold_details_minus@3x.png deleted file mode 100644 index ff175874..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_gold_details_minus.imageset/yumi_gold_details_minus@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_arrow_1.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_arrow_1.imageset/Contents.json deleted file mode 100644 index 72a99f74..00000000 --- a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_arrow_1.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_income_record_arrow_1@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_income_record_arrow_1@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_arrow_1.imageset/yumi_income_record_arrow_1@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_arrow_1.imageset/yumi_income_record_arrow_1@2x.png deleted file mode 100644 index f1c872c5..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_arrow_1.imageset/yumi_income_record_arrow_1@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_arrow_1.imageset/yumi_income_record_arrow_1@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_arrow_1.imageset/yumi_income_record_arrow_1@3x.png deleted file mode 100644 index ee8e9c76..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_arrow_1.imageset/yumi_income_record_arrow_1@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_arrow_2.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_arrow_2.imageset/Contents.json deleted file mode 100644 index a0816652..00000000 --- a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_arrow_2.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_income_record_arrow_2@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_income_record_arrow_2@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_arrow_2.imageset/yumi_income_record_arrow_2@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_arrow_2.imageset/yumi_income_record_arrow_2@2x.png deleted file mode 100644 index 222c9956..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_arrow_2.imageset/yumi_income_record_arrow_2@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_arrow_2.imageset/yumi_income_record_arrow_2@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_arrow_2.imageset/yumi_income_record_arrow_2@3x.png deleted file mode 100644 index 480be82b..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_arrow_2.imageset/yumi_income_record_arrow_2@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_diamond_background.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_diamond_background.imageset/Contents.json deleted file mode 100644 index a0af4d5f..00000000 --- a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_diamond_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_income_record_diamond_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_income_record_diamond_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_diamond_background.imageset/yumi_income_record_diamond_background@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_diamond_background.imageset/yumi_income_record_diamond_background@2x.png deleted file mode 100644 index 6cf21ad1..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_diamond_background.imageset/yumi_income_record_diamond_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_diamond_background.imageset/yumi_income_record_diamond_background@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_diamond_background.imageset/yumi_income_record_diamond_background@3x.png deleted file mode 100644 index ce0bff07..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_diamond_background.imageset/yumi_income_record_diamond_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_gold_background.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_gold_background.imageset/Contents.json deleted file mode 100644 index 744687e7..00000000 --- a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_gold_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_income_record_gold_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_income_record_gold_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_gold_background.imageset/yumi_income_record_gold_background@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_gold_background.imageset/yumi_income_record_gold_background@2x.png deleted file mode 100644 index 9e34f0c8..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_gold_background.imageset/yumi_income_record_gold_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_gold_background.imageset/yumi_income_record_gold_background@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_gold_background.imageset/yumi_income_record_gold_background@3x.png deleted file mode 100644 index 650feeef..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_income_record_gold_background.imageset/yumi_income_record_gold_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_withdrawal_Head_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_withdrawal_Head_arrow.imageset/Contents.json deleted file mode 100644 index 47d30c7c..00000000 --- a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_withdrawal_Head_arrow.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_withdrawal_Head_arrow@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_withdrawal_Head_arrow@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_withdrawal_Head_arrow.imageset/yumi_withdrawal_Head_arrow@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_withdrawal_Head_arrow.imageset/yumi_withdrawal_Head_arrow@2x.png deleted file mode 100644 index 62e871b8..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_withdrawal_Head_arrow.imageset/yumi_withdrawal_Head_arrow@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_withdrawal_Head_arrow.imageset/yumi_withdrawal_Head_arrow@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_withdrawal_Head_arrow.imageset/yumi_withdrawal_Head_arrow@3x.png deleted file mode 100644 index 9535803e..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_withdrawal_Head_arrow.imageset/yumi_withdrawal_Head_arrow@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_withdrawal_gold_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_withdrawal_gold_arrow.imageset/Contents.json deleted file mode 100644 index 772f0059..00000000 --- a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_withdrawal_gold_arrow.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_withdrawal_gold_arrow@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_withdrawal_gold_arrow@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_withdrawal_gold_arrow.imageset/yumi_withdrawal_gold_arrow@2x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_withdrawal_gold_arrow.imageset/yumi_withdrawal_gold_arrow@2x.png deleted file mode 100644 index f1c872c5..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_withdrawal_gold_arrow.imageset/yumi_withdrawal_gold_arrow@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_withdrawal_gold_arrow.imageset/yumi_withdrawal_gold_arrow@3x.png b/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_withdrawal_gold_arrow.imageset/yumi_withdrawal_gold_arrow@3x.png deleted file mode 100644 index ee8e9c76..00000000 Binary files a/YuMi/Assets.xcassets/jm/IncomeRecord/yumi_withdrawal_gold_arrow.imageset/yumi_withdrawal_gold_arrow@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/Contents.json b/YuMi/Assets.xcassets/jm/Noble/Rank/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/jm/Noble/Rank/Contents.json +++ b/YuMi/Assets.xcassets/jm/Noble/Rank/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_content_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_content_bg.imageset/Contents.json new file mode 100644 index 00000000..3d3e5c3d --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_content_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "nobel_rank_content_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "nobel_rank_content_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_content_bg.imageset/nobel_rank_content_bg@2x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_content_bg.imageset/nobel_rank_content_bg@2x.png new file mode 100644 index 00000000..467838dd Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_content_bg.imageset/nobel_rank_content_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_content_bg.imageset/nobel_rank_content_bg@3x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_content_bg.imageset/nobel_rank_content_bg@3x.png new file mode 100644 index 00000000..06c1a1a6 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_content_bg.imageset/nobel_rank_content_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_first.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_first.imageset/Contents.json new file mode 100644 index 00000000..643552f6 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_first.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "nobel_rank_first@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "nobel_rank_first@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_first.imageset/nobel_rank_first@2x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_first.imageset/nobel_rank_first@2x.png new file mode 100644 index 00000000..63d409ba Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_first.imageset/nobel_rank_first@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_first.imageset/nobel_rank_first@3x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_first.imageset/nobel_rank_first@3x.png new file mode 100644 index 00000000..369a2604 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_first.imageset/nobel_rank_first@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_second.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_second.imageset/Contents.json new file mode 100644 index 00000000..1cb5883f --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_second.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "nobel_rank_second@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "nobel_rank_second@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_second.imageset/nobel_rank_second@2x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_second.imageset/nobel_rank_second@2x.png new file mode 100644 index 00000000..9de8a553 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_second.imageset/nobel_rank_second@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_second.imageset/nobel_rank_second@3x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_second.imageset/nobel_rank_second@3x.png new file mode 100644 index 00000000..abe4d950 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_second.imageset/nobel_rank_second@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_third.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_third.imageset/Contents.json new file mode 100644 index 00000000..0166c126 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_third.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "nobel_rank_third@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "nobel_rank_third@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_third.imageset/nobel_rank_third@2x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_third.imageset/nobel_rank_third@2x.png new file mode 100644 index 00000000..885eb388 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_third.imageset/nobel_rank_third@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_third.imageset/nobel_rank_third@3x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_third.imageset/nobel_rank_third@3x.png new file mode 100644 index 00000000..968ae02d Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/Rank/nobel_rank_third.imageset/nobel_rank_third@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/noble_first_open_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_first_open_bg.imageset/Contents.json new file mode 100644 index 00000000..42e18419 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_first_open_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "noble_first_open_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "noble_first_open_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/noble_first_open_bg.imageset/noble_first_open_bg@2x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_first_open_bg.imageset/noble_first_open_bg@2x.png new file mode 100644 index 00000000..46559ea5 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_first_open_bg.imageset/noble_first_open_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/noble_first_open_bg.imageset/noble_first_open_bg@3x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_first_open_bg.imageset/noble_first_open_bg@3x.png new file mode 100644 index 00000000..74759f91 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_first_open_bg.imageset/noble_first_open_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/noble_open_btn_bg1.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_open_btn_bg1.imageset/Contents.json new file mode 100644 index 00000000..42e18419 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_open_btn_bg1.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "noble_first_open_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "noble_first_open_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/noble_open_btn_bg1.imageset/noble_first_open_bg@2x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_open_btn_bg1.imageset/noble_first_open_bg@2x.png new file mode 100644 index 00000000..8c92f053 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_open_btn_bg1.imageset/noble_first_open_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/noble_open_btn_bg1.imageset/noble_first_open_bg@3x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_open_btn_bg1.imageset/noble_first_open_bg@3x.png new file mode 100644 index 00000000..a10c1a6d Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_open_btn_bg1.imageset/noble_first_open_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/noble_open_experience.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_open_experience.imageset/Contents.json new file mode 100644 index 00000000..aa0773d2 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_open_experience.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "noble_open_experience@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "noble_open_experience@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/noble_open_experience.imageset/noble_open_experience@2x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_open_experience.imageset/noble_open_experience@2x.png new file mode 100644 index 00000000..76ec2387 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_open_experience.imageset/noble_open_experience@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/noble_open_experience.imageset/noble_open_experience@3x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_open_experience.imageset/noble_open_experience@3x.png new file mode 100644 index 00000000..d5a3927d Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_open_experience.imageset/noble_open_experience@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank.imageset/Contents.json new file mode 100644 index 00000000..b61f883b --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "noble_rank@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "noble_rank@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank.imageset/noble_rank@2x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank.imageset/noble_rank@2x.png new file mode 100644 index 00000000..3a60f9c0 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank.imageset/noble_rank@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank.imageset/noble_rank@3x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank.imageset/noble_rank@3x.png new file mode 100644 index 00000000..75a199fd Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank.imageset/noble_rank@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank_top_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank_top_bg.imageset/Contents.json new file mode 100644 index 00000000..717b5fdc --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank_top_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "noble_rank_top_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "noble_rank_top_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank_top_bg.imageset/noble_rank_top_bg@2x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank_top_bg.imageset/noble_rank_top_bg@2x.png new file mode 100644 index 00000000..f4cff2e3 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank_top_bg.imageset/noble_rank_top_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank_top_bg.imageset/noble_rank_top_bg@3x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank_top_bg.imageset/noble_rank_top_bg@3x.png new file mode 100644 index 00000000..1b7f6c62 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank_top_bg.imageset/noble_rank_top_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank_update_info_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank_update_info_bg.imageset/Contents.json new file mode 100644 index 00000000..3e7662db --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank_update_info_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "noble_rank_update_info_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "noble_rank_update_info_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank_update_info_bg.imageset/noble_rank_update_info_bg@2x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank_update_info_bg.imageset/noble_rank_update_info_bg@2x.png new file mode 100644 index 00000000..31347d9f Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank_update_info_bg.imageset/noble_rank_update_info_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank_update_info_bg.imageset/noble_rank_update_info_bg@3x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank_update_info_bg.imageset/noble_rank_update_info_bg@3x.png new file mode 100644 index 00000000..ea7c68f3 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/Rank/noble_rank_update_info_bg.imageset/noble_rank_update_info_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_first_open_background.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_first_open_background.imageset/Contents.json deleted file mode 100644 index cc91e207..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_first_open_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_grand_first_open_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_grand_first_open_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_first_open_background.imageset/yumi_grand_first_open_background@2x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_first_open_background.imageset/yumi_grand_first_open_background@2x.png deleted file mode 100644 index ab30c80b..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_first_open_background.imageset/yumi_grand_first_open_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_first_open_background.imageset/yumi_grand_first_open_background@3x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_first_open_background.imageset/yumi_grand_first_open_background@3x.png deleted file mode 100644 index 849342a6..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_first_open_background.imageset/yumi_grand_first_open_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_open_btn_background1.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_open_btn_background1.imageset/Contents.json deleted file mode 100644 index b1f536c4..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_open_btn_background1.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_grand_open_btn_background1@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_grand_open_btn_background1@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_open_btn_background1.imageset/yumi_grand_open_btn_background1@2x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_open_btn_background1.imageset/yumi_grand_open_btn_background1@2x.png deleted file mode 100644 index ae240192..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_open_btn_background1.imageset/yumi_grand_open_btn_background1@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_open_btn_background1.imageset/yumi_grand_open_btn_background1@3x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_open_btn_background1.imageset/yumi_grand_open_btn_background1@3x.png deleted file mode 100644 index 929a4ec5..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_open_btn_background1.imageset/yumi_grand_open_btn_background1@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_open_experience.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_open_experience.imageset/Contents.json deleted file mode 100644 index 2668222b..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_open_experience.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_grand_open_experience@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_grand_open_experience@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_open_experience.imageset/yumi_grand_open_experience@2x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_open_experience.imageset/yumi_grand_open_experience@2x.png deleted file mode 100644 index e719b95d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_open_experience.imageset/yumi_grand_open_experience@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_open_experience.imageset/yumi_grand_open_experience@3x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_open_experience.imageset/yumi_grand_open_experience@3x.png deleted file mode 100644 index 6278b0d3..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_open_experience.imageset/yumi_grand_open_experience@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_order_top_background.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_order_top_background.imageset/Contents.json deleted file mode 100644 index 8a42d406..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_order_top_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_grand_order_top_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_grand_order_top_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_order_top_background.imageset/yumi_grand_order_top_background@2x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_order_top_background.imageset/yumi_grand_order_top_background@2x.png deleted file mode 100644 index b3af3bf5..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_order_top_background.imageset/yumi_grand_order_top_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_order_top_background.imageset/yumi_grand_order_top_background@3x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_order_top_background.imageset/yumi_grand_order_top_background@3x.png deleted file mode 100644 index d8b810e1..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_order_top_background.imageset/yumi_grand_order_top_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_order_update_gen_background.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_order_update_gen_background.imageset/Contents.json deleted file mode 100644 index 0ae9709b..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_order_update_gen_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_grand_order_update_gen_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_grand_order_update_gen_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_order_update_gen_background.imageset/yumi_grand_order_update_gen_background@2x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_order_update_gen_background.imageset/yumi_grand_order_update_gen_background@2x.png deleted file mode 100644 index 3812508e..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_order_update_gen_background.imageset/yumi_grand_order_update_gen_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_order_update_gen_background.imageset/yumi_grand_order_update_gen_background@3x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_order_update_gen_background.imageset/yumi_grand_order_update_gen_background@3x.png deleted file mode 100644 index 0ee73214..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_order_update_gen_background.imageset/yumi_grand_order_update_gen_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_rank.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_rank.imageset/Contents.json deleted file mode 100644 index cf70a1f2..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_rank.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_grand_rank@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_grand_rank@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_rank.imageset/yumi_grand_rank@2x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_rank.imageset/yumi_grand_rank@2x.png deleted file mode 100644 index 03cac764..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_rank.imageset/yumi_grand_rank@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_rank.imageset/yumi_grand_rank@3x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_rank.imageset/yumi_grand_rank@3x.png deleted file mode 100644 index 151b576b..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_grand_rank.imageset/yumi_grand_rank@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_first.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_first.imageset/Contents.json deleted file mode 100644 index 414c6fe4..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_first.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_nobel_order_first@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_nobel_order_first@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_first.imageset/yumi_nobel_order_first@2x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_first.imageset/yumi_nobel_order_first@2x.png deleted file mode 100644 index 81efbd67..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_first.imageset/yumi_nobel_order_first@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_first.imageset/yumi_nobel_order_first@3x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_first.imageset/yumi_nobel_order_first@3x.png deleted file mode 100644 index e15cd2af..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_first.imageset/yumi_nobel_order_first@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_matter_background.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_matter_background.imageset/Contents.json deleted file mode 100644 index 75fc2666..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_matter_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_nobel_order_matter_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_nobel_order_matter_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_matter_background.imageset/yumi_nobel_order_matter_background@2x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_matter_background.imageset/yumi_nobel_order_matter_background@2x.png deleted file mode 100644 index 54b5e77d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_matter_background.imageset/yumi_nobel_order_matter_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_matter_background.imageset/yumi_nobel_order_matter_background@3x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_matter_background.imageset/yumi_nobel_order_matter_background@3x.png deleted file mode 100644 index afc72bb4..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_matter_background.imageset/yumi_nobel_order_matter_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_second.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_second.imageset/Contents.json deleted file mode 100644 index 597331a6..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_second.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_nobel_order_second@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_nobel_order_second@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_second.imageset/yumi_nobel_order_second@2x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_second.imageset/yumi_nobel_order_second@2x.png deleted file mode 100644 index 69578a7d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_second.imageset/yumi_nobel_order_second@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_second.imageset/yumi_nobel_order_second@3x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_second.imageset/yumi_nobel_order_second@3x.png deleted file mode 100644 index cd6dc3b8..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_second.imageset/yumi_nobel_order_second@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_third.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_third.imageset/Contents.json deleted file mode 100644 index 0d72088c..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_third.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_nobel_order_third@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_nobel_order_third@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_third.imageset/yumi_nobel_order_third@2x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_third.imageset/yumi_nobel_order_third@2x.png deleted file mode 100644 index dd0bb810..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_third.imageset/yumi_nobel_order_third@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_third.imageset/yumi_nobel_order_third@3x.png b/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_third.imageset/yumi_nobel_order_third@3x.png deleted file mode 100644 index e0875d9a..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/Rank/yumi_nobel_order_third.imageset/yumi_nobel_order_third@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/mine_head_noble_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/mine_head_noble_arrow.imageset/Contents.json new file mode 100644 index 00000000..298ec939 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/mine_head_noble_arrow.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_head_noble_arrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_head_noble_arrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/mine_head_noble_arrow.imageset/mine_head_noble_arrow@2x.png b/YuMi/Assets.xcassets/jm/Noble/mine_head_noble_arrow.imageset/mine_head_noble_arrow@2x.png new file mode 100644 index 00000000..df64e6b4 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/mine_head_noble_arrow.imageset/mine_head_noble_arrow@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/mine_head_noble_arrow.imageset/mine_head_noble_arrow@3x.png b/YuMi/Assets.xcassets/jm/Noble/mine_head_noble_arrow.imageset/mine_head_noble_arrow@3x.png new file mode 100644 index 00000000..83f6455d Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/mine_head_noble_arrow.imageset/mine_head_noble_arrow@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/mine_noble_center__diamond.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center__diamond.imageset/Contents.json new file mode 100644 index 00000000..968fb42a --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center__diamond.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_noble_center__diamond@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_noble_center__diamond@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/mine_noble_center__diamond.imageset/mine_noble_center__diamond@2x.png b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center__diamond.imageset/mine_noble_center__diamond@2x.png new file mode 100644 index 00000000..ded67c19 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center__diamond.imageset/mine_noble_center__diamond@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/mine_noble_center__diamond.imageset/mine_noble_center__diamond@3x.png b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center__diamond.imageset/mine_noble_center__diamond@3x.png new file mode 100644 index 00000000..d2585a29 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center__diamond.imageset/mine_noble_center__diamond@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_apple.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_apple.imageset/Contents.json new file mode 100644 index 00000000..34f7d46f --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_apple.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_noble_center_apple@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_noble_center_apple@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_apple.imageset/mine_noble_center_apple@2x.png b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_apple.imageset/mine_noble_center_apple@2x.png new file mode 100644 index 00000000..24a2cdcf Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_apple.imageset/mine_noble_center_apple@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_apple.imageset/mine_noble_center_apple@3x.png b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_apple.imageset/mine_noble_center_apple@3x.png new file mode 100644 index 00000000..ac4f1639 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_apple.imageset/mine_noble_center_apple@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_pay_no_select.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_pay_no_select.imageset/Contents.json new file mode 100644 index 00000000..4bb43956 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_pay_no_select.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_noble_center_pay_no_select@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_noble_center_pay_no_select@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_pay_no_select.imageset/mine_noble_center_pay_no_select@2x.png b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_pay_no_select.imageset/mine_noble_center_pay_no_select@2x.png new file mode 100644 index 00000000..3591e267 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_pay_no_select.imageset/mine_noble_center_pay_no_select@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_pay_no_select.imageset/mine_noble_center_pay_no_select@3x.png b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_pay_no_select.imageset/mine_noble_center_pay_no_select@3x.png new file mode 100644 index 00000000..80f1b4ed Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_pay_no_select.imageset/mine_noble_center_pay_no_select@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_pay_select.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_pay_select.imageset/Contents.json new file mode 100644 index 00000000..2dd25f5e --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_pay_select.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_noble_center_pay_select@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_noble_center_pay_select@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_pay_select.imageset/mine_noble_center_pay_select@2x.png b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_pay_select.imageset/mine_noble_center_pay_select@2x.png new file mode 100644 index 00000000..ecaaf24d Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_pay_select.imageset/mine_noble_center_pay_select@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_pay_select.imageset/mine_noble_center_pay_select@3x.png b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_pay_select.imageset/mine_noble_center_pay_select@3x.png new file mode 100644 index 00000000..f96538d3 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_pay_select.imageset/mine_noble_center_pay_select@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_rank.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_rank.imageset/Contents.json new file mode 100644 index 00000000..10ba55f8 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_rank.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_noble_center_rank@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_noble_center_rank@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_rank.imageset/mine_noble_center_rank@2x.png b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_rank.imageset/mine_noble_center_rank@2x.png new file mode 100644 index 00000000..413fee73 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_rank.imageset/mine_noble_center_rank@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_rank.imageset/mine_noble_center_rank@3x.png b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_rank.imageset/mine_noble_center_rank@3x.png new file mode 100644 index 00000000..53947b6b Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_rank.imageset/mine_noble_center_rank@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/nobleCenter_head_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/nobleCenter_head_bg.imageset/Contents.json new file mode 100644 index 00000000..94768d82 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/nobleCenter_head_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "nobleCenter_head_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "nobleCenter_head_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/nobleCenter_head_bg.imageset/nobleCenter_head_bg@2x.png b/YuMi/Assets.xcassets/jm/Noble/nobleCenter_head_bg.imageset/nobleCenter_head_bg@2x.png new file mode 100644 index 00000000..7a770e9b Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/nobleCenter_head_bg.imageset/nobleCenter_head_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/nobleCenter_head_bg.imageset/nobleCenter_head_bg@3x.png b/YuMi/Assets.xcassets/jm/Noble/nobleCenter_head_bg.imageset/nobleCenter_head_bg@3x.png new file mode 100644 index 00000000..da239e3e Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/nobleCenter_head_bg.imageset/nobleCenter_head_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_indicate_icon.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/noble_indicate_icon.imageset/Contents.json new file mode 100644 index 00000000..fae9be3c --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/noble_indicate_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "noble_indicate_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "noble_indicate_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_indicate_icon.imageset/noble_indicate_icon@2x.png b/YuMi/Assets.xcassets/jm/Noble/noble_indicate_icon.imageset/noble_indicate_icon@2x.png new file mode 100644 index 00000000..0d25b208 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_indicate_icon.imageset/noble_indicate_icon@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_indicate_icon.imageset/noble_indicate_icon@3x.png b/YuMi/Assets.xcassets/jm/Noble/noble_indicate_icon.imageset/noble_indicate_icon@3x.png new file mode 100644 index 00000000..a278d255 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_indicate_icon.imageset/noble_indicate_icon@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_myLevel_head.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/noble_myLevel_head.imageset/Contents.json new file mode 100644 index 00000000..9021394c --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/noble_myLevel_head.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "noble_myLevel_head@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "noble_myLevel_head@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_myLevel_head.imageset/noble_myLevel_head@2x.png b/YuMi/Assets.xcassets/jm/Noble/noble_myLevel_head.imageset/noble_myLevel_head@2x.png new file mode 100644 index 00000000..d9194201 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_myLevel_head.imageset/noble_myLevel_head@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_myLevel_head.imageset/noble_myLevel_head@3x.png b/YuMi/Assets.xcassets/jm/Noble/noble_myLevel_head.imageset/noble_myLevel_head@3x.png new file mode 100644 index 00000000..4c647227 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_myLevel_head.imageset/noble_myLevel_head@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_nav_help.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/noble_nav_help.imageset/Contents.json new file mode 100644 index 00000000..8ee765e1 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/noble_nav_help.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "noble_nav_help@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "noble_nav_help@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_nav_help.imageset/noble_nav_help@2x.png b/YuMi/Assets.xcassets/jm/Noble/noble_nav_help.imageset/noble_nav_help@2x.png new file mode 100644 index 00000000..9ee62f3c Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_nav_help.imageset/noble_nav_help@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_nav_help.imageset/noble_nav_help@3x.png b/YuMi/Assets.xcassets/jm/Noble/noble_nav_help.imageset/noble_nav_help@3x.png new file mode 100644 index 00000000..f1094054 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_nav_help.imageset/noble_nav_help@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_nav_setting.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/noble_nav_setting.imageset/Contents.json new file mode 100644 index 00000000..15f98a5b --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/noble_nav_setting.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "noble_nav_setting@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "noble_nav_setting@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_nav_setting.imageset/noble_nav_setting@2x.png b/YuMi/Assets.xcassets/jm/Noble/noble_nav_setting.imageset/noble_nav_setting@2x.png new file mode 100644 index 00000000..823d9693 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_nav_setting.imageset/noble_nav_setting@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_nav_setting.imageset/noble_nav_setting@3x.png b/YuMi/Assets.xcassets/jm/Noble/noble_nav_setting.imageset/noble_nav_setting@3x.png new file mode 100644 index 00000000..79c1872a Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_nav_setting.imageset/noble_nav_setting@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_open_btn.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/noble_open_btn.imageset/Contents.json new file mode 100644 index 00000000..c3a6c5b0 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/noble_open_btn.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "noble_open_btn@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "noble_open_btn@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_open_btn.imageset/noble_open_btn@2x.png b/YuMi/Assets.xcassets/jm/Noble/noble_open_btn.imageset/noble_open_btn@2x.png new file mode 100644 index 00000000..e9a26841 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_open_btn.imageset/noble_open_btn@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_open_btn.imageset/noble_open_btn@3x.png b/YuMi/Assets.xcassets/jm/Noble/noble_open_btn.imageset/noble_open_btn@3x.png new file mode 100644 index 00000000..1aaa48e2 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_open_btn.imageset/noble_open_btn@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_open_btn_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/noble_open_btn_bg.imageset/Contents.json new file mode 100644 index 00000000..1deb7ecf --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/noble_open_btn_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "noble_open_btn_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "noble_open_btn_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_open_btn_bg.imageset/noble_open_btn_bg@2x.png b/YuMi/Assets.xcassets/jm/Noble/noble_open_btn_bg.imageset/noble_open_btn_bg@2x.png new file mode 100644 index 00000000..ebb4a61e Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_open_btn_bg.imageset/noble_open_btn_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_open_btn_bg.imageset/noble_open_btn_bg@3x.png b/YuMi/Assets.xcassets/jm/Noble/noble_open_btn_bg.imageset/noble_open_btn_bg@3x.png new file mode 100644 index 00000000..e2ba7839 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_open_btn_bg.imageset/noble_open_btn_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_privilege_icon.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/noble_privilege_icon.imageset/Contents.json new file mode 100644 index 00000000..2da898df --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/noble_privilege_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "noble_privilege_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "noble_privilege_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_privilege_icon.imageset/noble_privilege_icon@2x.png b/YuMi/Assets.xcassets/jm/Noble/noble_privilege_icon.imageset/noble_privilege_icon@2x.png new file mode 100644 index 00000000..7eaee95c Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_privilege_icon.imageset/noble_privilege_icon@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_privilege_icon.imageset/noble_privilege_icon@3x.png b/YuMi/Assets.xcassets/jm/Noble/noble_privilege_icon.imageset/noble_privilege_icon@3x.png new file mode 100644 index 00000000..125b259e Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_privilege_icon.imageset/noble_privilege_icon@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_privilege_list_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/noble_privilege_list_bg.imageset/Contents.json new file mode 100644 index 00000000..9ed35e2e --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/noble_privilege_list_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "noble_privilege_list_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "noble_privilege_list_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_privilege_list_bg.imageset/noble_privilege_list_bg@2x.png b/YuMi/Assets.xcassets/jm/Noble/noble_privilege_list_bg.imageset/noble_privilege_list_bg@2x.png new file mode 100644 index 00000000..a7a3c914 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_privilege_list_bg.imageset/noble_privilege_list_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_privilege_list_bg.imageset/noble_privilege_list_bg@3x.png b/YuMi/Assets.xcassets/jm/Noble/noble_privilege_list_bg.imageset/noble_privilege_list_bg@3x.png new file mode 100644 index 00000000..8397b490 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_privilege_list_bg.imageset/noble_privilege_list_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_safe_level_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/noble_safe_level_arrow.imageset/Contents.json new file mode 100644 index 00000000..2b910e45 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/noble_safe_level_arrow.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "noble_safe_level_arrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "noble_safe_level_arrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_safe_level_arrow.imageset/noble_safe_level_arrow@2x.png b/YuMi/Assets.xcassets/jm/Noble/noble_safe_level_arrow.imageset/noble_safe_level_arrow@2x.png new file mode 100644 index 00000000..db083fc3 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_safe_level_arrow.imageset/noble_safe_level_arrow@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_safe_level_arrow.imageset/noble_safe_level_arrow@3x.png b/YuMi/Assets.xcassets/jm/Noble/noble_safe_level_arrow.imageset/noble_safe_level_arrow@3x.png new file mode 100644 index 00000000..dfa5371a Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_safe_level_arrow.imageset/noble_safe_level_arrow@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_time_close.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/noble_time_close.imageset/Contents.json new file mode 100644 index 00000000..5e623675 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/noble_time_close.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "noble_time_close@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "noble_time_close@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_time_close.imageset/noble_time_close@2x.png b/YuMi/Assets.xcassets/jm/Noble/noble_time_close.imageset/noble_time_close@2x.png new file mode 100644 index 00000000..336b49f1 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_time_close.imageset/noble_time_close@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_time_close.imageset/noble_time_close@3x.png b/YuMi/Assets.xcassets/jm/Noble/noble_time_close.imageset/noble_time_close@3x.png new file mode 100644 index 00000000..f8f1b263 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_time_close.imageset/noble_time_close@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_time_help.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/noble_time_help.imageset/Contents.json new file mode 100644 index 00000000..a45c15b2 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/noble_time_help.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "noble_time_help@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "noble_time_help@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_time_help.imageset/noble_time_help@2x.png b/YuMi/Assets.xcassets/jm/Noble/noble_time_help.imageset/noble_time_help@2x.png new file mode 100644 index 00000000..c617172f Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_time_help.imageset/noble_time_help@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_time_help.imageset/noble_time_help@3x.png b/YuMi/Assets.xcassets/jm/Noble/noble_time_help.imageset/noble_time_help@3x.png new file mode 100644 index 00000000..f8260412 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_time_help.imageset/noble_time_help@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_time_popBg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/noble_time_popBg.imageset/Contents.json new file mode 100644 index 00000000..48c79263 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/noble_time_popBg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "noble_time_popBg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "noble_time_popBg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_time_popBg.imageset/noble_time_popBg@2x.png b/YuMi/Assets.xcassets/jm/Noble/noble_time_popBg.imageset/noble_time_popBg@2x.png new file mode 100644 index 00000000..a43b433e Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_time_popBg.imageset/noble_time_popBg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_time_popBg.imageset/noble_time_popBg@3x.png b/YuMi/Assets.xcassets/jm/Noble/noble_time_popBg.imageset/noble_time_popBg@3x.png new file mode 100644 index 00000000..40e308ed Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_time_popBg.imageset/noble_time_popBg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_upgrade_dressBtn.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/noble_upgrade_dressBtn.imageset/Contents.json new file mode 100644 index 00000000..e8177812 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/noble_upgrade_dressBtn.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "noble_upgrade_dressBtn@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "noble_upgrade_dressBtn@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_upgrade_dressBtn.imageset/noble_upgrade_dressBtn@2x.png b/YuMi/Assets.xcassets/jm/Noble/noble_upgrade_dressBtn.imageset/noble_upgrade_dressBtn@2x.png new file mode 100644 index 00000000..8111fde6 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_upgrade_dressBtn.imageset/noble_upgrade_dressBtn@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_upgrade_dressBtn.imageset/noble_upgrade_dressBtn@3x.png b/YuMi/Assets.xcassets/jm/Noble/noble_upgrade_dressBtn.imageset/noble_upgrade_dressBtn@3x.png new file mode 100644 index 00000000..83cbbb97 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_upgrade_dressBtn.imageset/noble_upgrade_dressBtn@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_upgrade_keepBtn.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/noble_upgrade_keepBtn.imageset/Contents.json new file mode 100644 index 00000000..bd067302 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/noble_upgrade_keepBtn.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "noble_upgrade_keepBtn@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "noble_upgrade_keepBtn@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_upgrade_keepBtn.imageset/noble_upgrade_keepBtn@2x.png b/YuMi/Assets.xcassets/jm/Noble/noble_upgrade_keepBtn.imageset/noble_upgrade_keepBtn@2x.png new file mode 100644 index 00000000..9167da93 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_upgrade_keepBtn.imageset/noble_upgrade_keepBtn@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/noble_upgrade_keepBtn.imageset/noble_upgrade_keepBtn@3x.png b/YuMi/Assets.xcassets/jm/Noble/noble_upgrade_keepBtn.imageset/noble_upgrade_keepBtn@3x.png new file mode 100644 index 00000000..12fe6087 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Noble/noble_upgrade_keepBtn.imageset/noble_upgrade_keepBtn@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Noble/pi_mine_head_noble_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/pi_mine_head_noble_arrow.imageset/Contents.json deleted file mode 100644 index f43e07c6..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/pi_mine_head_noble_arrow.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "pi_mine_head_noble_arrow@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "pi_mine_head_noble_arrow@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Noble/pi_mine_head_noble_arrow.imageset/pi_mine_head_noble_arrow@2x.png b/YuMi/Assets.xcassets/jm/Noble/pi_mine_head_noble_arrow.imageset/pi_mine_head_noble_arrow@2x.png deleted file mode 100644 index c6fb06ad..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/pi_mine_head_noble_arrow.imageset/pi_mine_head_noble_arrow@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/pi_mine_head_noble_arrow.imageset/pi_mine_head_noble_arrow@3x.png b/YuMi/Assets.xcassets/jm/Noble/pi_mine_head_noble_arrow.imageset/pi_mine_head_noble_arrow@3x.png deleted file mode 100644 index 5e226267..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/pi_mine_head_noble_arrow.imageset/pi_mine_head_noble_arrow@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/pi_mine_noble_entrance_noNoble.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/pi_mine_noble_entrance_noNoble.imageset/Contents.json deleted file mode 100644 index add9d023..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/pi_mine_noble_entrance_noNoble.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "pi_mine_noble_entrance_noNoble@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "pi_mine_noble_entrance_noNoble@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Noble/pi_mine_noble_entrance_noNoble.imageset/pi_mine_noble_entrance_noNoble@2x.png b/YuMi/Assets.xcassets/jm/Noble/pi_mine_noble_entrance_noNoble.imageset/pi_mine_noble_entrance_noNoble@2x.png deleted file mode 100644 index 657d5e8f..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/pi_mine_noble_entrance_noNoble.imageset/pi_mine_noble_entrance_noNoble@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/pi_mine_noble_entrance_noNoble.imageset/pi_mine_noble_entrance_noNoble@3x.png b/YuMi/Assets.xcassets/jm/Noble/pi_mine_noble_entrance_noNoble.imageset/pi_mine_noble_entrance_noNoble@3x.png deleted file mode 100644 index 67d14df4..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/pi_mine_noble_entrance_noNoble.imageset/pi_mine_noble_entrance_noNoble@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_indicate_pic.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_indicate_pic.imageset/Contents.json deleted file mode 100644 index cc3bb87a..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_indicate_pic.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_grand_indicate_pic@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_grand_indicate_pic@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_indicate_pic.imageset/yumi_grand_indicate_pic@2x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_indicate_pic.imageset/yumi_grand_indicate_pic@2x.png deleted file mode 100644 index eaa4cf39..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_indicate_pic.imageset/yumi_grand_indicate_pic@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_indicate_pic.imageset/yumi_grand_indicate_pic@3x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_indicate_pic.imageset/yumi_grand_indicate_pic@3x.png deleted file mode 100644 index 7097631f..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_indicate_pic.imageset/yumi_grand_indicate_pic@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_myLevel_head.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_myLevel_head.imageset/Contents.json deleted file mode 100644 index 05279767..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_myLevel_head.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_grand_myLevel_head@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_grand_myLevel_head@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_myLevel_head.imageset/yumi_grand_myLevel_head@2x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_myLevel_head.imageset/yumi_grand_myLevel_head@2x.png deleted file mode 100644 index 4bd7e299..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_myLevel_head.imageset/yumi_grand_myLevel_head@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_myLevel_head.imageset/yumi_grand_myLevel_head@3x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_myLevel_head.imageset/yumi_grand_myLevel_head@3x.png deleted file mode 100644 index 089ca22a..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_myLevel_head.imageset/yumi_grand_myLevel_head@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_open_btn.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_open_btn.imageset/Contents.json deleted file mode 100644 index 6ebe814f..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_open_btn.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_grand_open_btn@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_grand_open_btn@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_open_btn.imageset/yumi_grand_open_btn@2x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_open_btn.imageset/yumi_grand_open_btn@2x.png deleted file mode 100644 index d74c368d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_open_btn.imageset/yumi_grand_open_btn@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_open_btn.imageset/yumi_grand_open_btn@3x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_open_btn.imageset/yumi_grand_open_btn@3x.png deleted file mode 100644 index 1a4c68c3..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_open_btn.imageset/yumi_grand_open_btn@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_open_btn_background.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_open_btn_background.imageset/Contents.json deleted file mode 100644 index c28e2d4e..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_open_btn_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_grand_open_btn_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_grand_open_btn_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_open_btn_background.imageset/yumi_grand_open_btn_background@2x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_open_btn_background.imageset/yumi_grand_open_btn_background@2x.png deleted file mode 100644 index 3f845ec9..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_open_btn_background.imageset/yumi_grand_open_btn_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_open_btn_background.imageset/yumi_grand_open_btn_background@3x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_open_btn_background.imageset/yumi_grand_open_btn_background@3x.png deleted file mode 100644 index 064bec69..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_open_btn_background.imageset/yumi_grand_open_btn_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_privilege_list_background.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_privilege_list_background.imageset/Contents.json deleted file mode 100644 index 36ba572b..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_privilege_list_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_grand_privilege_list_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_grand_privilege_list_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_privilege_list_background.imageset/yumi_grand_privilege_list_background@2x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_privilege_list_background.imageset/yumi_grand_privilege_list_background@2x.png deleted file mode 100644 index b58f06c9..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_privilege_list_background.imageset/yumi_grand_privilege_list_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_privilege_list_background.imageset/yumi_grand_privilege_list_background@3x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_privilege_list_background.imageset/yumi_grand_privilege_list_background@3x.png deleted file mode 100644 index e34195c8..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_privilege_list_background.imageset/yumi_grand_privilege_list_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_privilege_pic.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_privilege_pic.imageset/Contents.json deleted file mode 100644 index cbbebd1d..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_privilege_pic.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_grand_privilege_pic@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_grand_privilege_pic@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_privilege_pic.imageset/yumi_grand_privilege_pic@2x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_privilege_pic.imageset/yumi_grand_privilege_pic@2x.png deleted file mode 100644 index 56088081..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_privilege_pic.imageset/yumi_grand_privilege_pic@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_privilege_pic.imageset/yumi_grand_privilege_pic@3x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_privilege_pic.imageset/yumi_grand_privilege_pic@3x.png deleted file mode 100644 index 772a3687..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_privilege_pic.imageset/yumi_grand_privilege_pic@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_safe_level_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_safe_level_arrow.imageset/Contents.json deleted file mode 100644 index 9c5351f2..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_safe_level_arrow.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_grand_safe_level_arrow@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_grand_safe_level_arrow@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_safe_level_arrow.imageset/yumi_grand_safe_level_arrow@2x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_safe_level_arrow.imageset/yumi_grand_safe_level_arrow@2x.png deleted file mode 100644 index 246963fa..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_safe_level_arrow.imageset/yumi_grand_safe_level_arrow@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_safe_level_arrow.imageset/yumi_grand_safe_level_arrow@3x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_safe_level_arrow.imageset/yumi_grand_safe_level_arrow@3x.png deleted file mode 100644 index f5fef174..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_safe_level_arrow.imageset/yumi_grand_safe_level_arrow@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_close.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_close.imageset/Contents.json deleted file mode 100644 index 9745d756..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_close.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_grand_time_close@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_grand_time_close@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_close.imageset/yumi_grand_time_close@2x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_close.imageset/yumi_grand_time_close@2x.png deleted file mode 100644 index 8adc19f1..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_close.imageset/yumi_grand_time_close@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_close.imageset/yumi_grand_time_close@3x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_close.imageset/yumi_grand_time_close@3x.png deleted file mode 100644 index 7984c037..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_close.imageset/yumi_grand_time_close@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_help.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_help.imageset/Contents.json deleted file mode 100644 index 66df4fad..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_help.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_grand_time_help@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_grand_time_help@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_help.imageset/yumi_grand_time_help@2x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_help.imageset/yumi_grand_time_help@2x.png deleted file mode 100644 index 7901994d..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_help.imageset/yumi_grand_time_help@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_help.imageset/yumi_grand_time_help@3x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_help.imageset/yumi_grand_time_help@3x.png deleted file mode 100644 index 56eee2d5..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_help.imageset/yumi_grand_time_help@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_popBg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_popBg.imageset/Contents.json deleted file mode 100644 index 39a4d427..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_popBg.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_grand_time_popBg@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_grand_time_popBg@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_popBg.imageset/yumi_grand_time_popBg@2x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_popBg.imageset/yumi_grand_time_popBg@2x.png deleted file mode 100644 index 8d991666..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_popBg.imageset/yumi_grand_time_popBg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_popBg.imageset/yumi_grand_time_popBg@3x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_popBg.imageset/yumi_grand_time_popBg@3x.png deleted file mode 100644 index f9e70fbb..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_time_popBg.imageset/yumi_grand_time_popBg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_title_help.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_title_help.imageset/Contents.json deleted file mode 100644 index 09906610..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_title_help.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_grand_title_help@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_grand_title_help@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_title_help.imageset/yumi_grand_title_help@2x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_title_help.imageset/yumi_grand_title_help@2x.png deleted file mode 100644 index c9cb20c3..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_title_help.imageset/yumi_grand_title_help@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_title_help.imageset/yumi_grand_title_help@3x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_title_help.imageset/yumi_grand_title_help@3x.png deleted file mode 100644 index 331864ae..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_title_help.imageset/yumi_grand_title_help@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_title_setting.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_title_setting.imageset/Contents.json deleted file mode 100644 index 3cd9ed20..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_title_setting.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_grand_title_setting@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_grand_title_setting@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_title_setting.imageset/yumi_grand_title_setting@2x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_title_setting.imageset/yumi_grand_title_setting@2x.png deleted file mode 100644 index 9112352b..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_title_setting.imageset/yumi_grand_title_setting@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_title_setting.imageset/yumi_grand_title_setting@3x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_title_setting.imageset/yumi_grand_title_setting@3x.png deleted file mode 100644 index 81ec23eb..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_title_setting.imageset/yumi_grand_title_setting@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_upgrade_dressBtn.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_upgrade_dressBtn.imageset/Contents.json deleted file mode 100644 index 01d83e98..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_upgrade_dressBtn.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_grand_upgrade_dressBtn@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_grand_upgrade_dressBtn@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_upgrade_dressBtn.imageset/yumi_grand_upgrade_dressBtn@2x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_upgrade_dressBtn.imageset/yumi_grand_upgrade_dressBtn@2x.png deleted file mode 100644 index 85e27925..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_upgrade_dressBtn.imageset/yumi_grand_upgrade_dressBtn@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_upgrade_dressBtn.imageset/yumi_grand_upgrade_dressBtn@3x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_upgrade_dressBtn.imageset/yumi_grand_upgrade_dressBtn@3x.png deleted file mode 100644 index 9e56c6b4..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_upgrade_dressBtn.imageset/yumi_grand_upgrade_dressBtn@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_upgrade_keepBtn.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_upgrade_keepBtn.imageset/Contents.json deleted file mode 100644 index 33520c5f..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_upgrade_keepBtn.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_grand_upgrade_keepBtn@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_grand_upgrade_keepBtn@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_upgrade_keepBtn.imageset/yumi_grand_upgrade_keepBtn@2x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_upgrade_keepBtn.imageset/yumi_grand_upgrade_keepBtn@2x.png deleted file mode 100644 index 1a085955..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_upgrade_keepBtn.imageset/yumi_grand_upgrade_keepBtn@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_upgrade_keepBtn.imageset/yumi_grand_upgrade_keepBtn@3x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_grand_upgrade_keepBtn.imageset/yumi_grand_upgrade_keepBtn@3x.png deleted file mode 100644 index 239731cb..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_grand_upgrade_keepBtn.imageset/yumi_grand_upgrade_keepBtn@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_nobleCenter_head_background.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/yumi_nobleCenter_head_background.imageset/Contents.json deleted file mode 100644 index 871f1724..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/yumi_nobleCenter_head_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_nobleCenter_head_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_nobleCenter_head_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_nobleCenter_head_background.imageset/yumi_nobleCenter_head_background@2x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_nobleCenter_head_background.imageset/yumi_nobleCenter_head_background@2x.png deleted file mode 100644 index eceb7d1c..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_nobleCenter_head_background.imageset/yumi_nobleCenter_head_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Noble/yumi_nobleCenter_head_background.imageset/yumi_nobleCenter_head_background@3x.png b/YuMi/Assets.xcassets/jm/Noble/yumi_nobleCenter_head_background.imageset/yumi_nobleCenter_head_background@3x.png deleted file mode 100644 index ee52c378..00000000 Binary files a/YuMi/Assets.xcassets/jm/Noble/yumi_nobleCenter_head_background.imageset/yumi_nobleCenter_head_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Setting/Contents.json b/YuMi/Assets.xcassets/jm/Setting/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/jm/Setting/Contents.json +++ b/YuMi/Assets.xcassets/jm/Setting/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Setting/mine_setting_modif_pay_pwd_hidden.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Setting/mine_setting_modif_pay_pwd_hidden.imageset/Contents.json new file mode 100644 index 00000000..777e892a --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Setting/mine_setting_modif_pay_pwd_hidden.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_setting_modif_pay_pwd_hidden@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_setting_modif_pay_pwd_hidden@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Setting/mine_setting_modif_pay_pwd_hidden.imageset/mine_setting_modif_pay_pwd_hidden@2x.png b/YuMi/Assets.xcassets/jm/Setting/mine_setting_modif_pay_pwd_hidden.imageset/mine_setting_modif_pay_pwd_hidden@2x.png new file mode 100644 index 00000000..9de7f52c Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Setting/mine_setting_modif_pay_pwd_hidden.imageset/mine_setting_modif_pay_pwd_hidden@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Setting/mine_setting_modif_pay_pwd_hidden.imageset/mine_setting_modif_pay_pwd_hidden@3x.png b/YuMi/Assets.xcassets/jm/Setting/mine_setting_modif_pay_pwd_hidden.imageset/mine_setting_modif_pay_pwd_hidden@3x.png new file mode 100644 index 00000000..82abbb50 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Setting/mine_setting_modif_pay_pwd_hidden.imageset/mine_setting_modif_pay_pwd_hidden@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Setting/mine_setting_modif_pay_pwd_show.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Setting/mine_setting_modif_pay_pwd_show.imageset/Contents.json new file mode 100644 index 00000000..6ec156d3 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Setting/mine_setting_modif_pay_pwd_show.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_setting_modif_pay_pwd_show@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_setting_modif_pay_pwd_show@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Setting/mine_setting_modif_pay_pwd_show.imageset/mine_setting_modif_pay_pwd_show@2x.png b/YuMi/Assets.xcassets/jm/Setting/mine_setting_modif_pay_pwd_show.imageset/mine_setting_modif_pay_pwd_show@2x.png new file mode 100644 index 00000000..00a2f451 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Setting/mine_setting_modif_pay_pwd_show.imageset/mine_setting_modif_pay_pwd_show@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Setting/mine_setting_modif_pay_pwd_show.imageset/mine_setting_modif_pay_pwd_show@3x.png b/YuMi/Assets.xcassets/jm/Setting/mine_setting_modif_pay_pwd_show.imageset/mine_setting_modif_pay_pwd_show@3x.png new file mode 100644 index 00000000..320b3a61 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Setting/mine_setting_modif_pay_pwd_show.imageset/mine_setting_modif_pay_pwd_show@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Setting/mine_setting_pay_password_hidden.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Setting/mine_setting_pay_password_hidden.imageset/Contents.json new file mode 100644 index 00000000..01313586 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Setting/mine_setting_pay_password_hidden.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_setting_pay_password_hidden@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_setting_pay_password_hidden@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Setting/mine_setting_pay_password_hidden.imageset/mine_setting_pay_password_hidden@2x.png b/YuMi/Assets.xcassets/jm/Setting/mine_setting_pay_password_hidden.imageset/mine_setting_pay_password_hidden@2x.png new file mode 100644 index 00000000..b6a5170c Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Setting/mine_setting_pay_password_hidden.imageset/mine_setting_pay_password_hidden@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Setting/mine_setting_pay_password_hidden.imageset/mine_setting_pay_password_hidden@3x.png b/YuMi/Assets.xcassets/jm/Setting/mine_setting_pay_password_hidden.imageset/mine_setting_pay_password_hidden@3x.png new file mode 100644 index 00000000..a55dea5b Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Setting/mine_setting_pay_password_hidden.imageset/mine_setting_pay_password_hidden@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Setting/mine_setting_pay_password_show.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Setting/mine_setting_pay_password_show.imageset/Contents.json new file mode 100644 index 00000000..01b358e7 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Setting/mine_setting_pay_password_show.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_setting_pay_password_show@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_setting_pay_password_show@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Setting/mine_setting_pay_password_show.imageset/mine_setting_pay_password_show@2x.png b/YuMi/Assets.xcassets/jm/Setting/mine_setting_pay_password_show.imageset/mine_setting_pay_password_show@2x.png new file mode 100644 index 00000000..95fe661f Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Setting/mine_setting_pay_password_show.imageset/mine_setting_pay_password_show@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Setting/mine_setting_pay_password_show.imageset/mine_setting_pay_password_show@3x.png b/YuMi/Assets.xcassets/jm/Setting/mine_setting_pay_password_show.imageset/mine_setting_pay_password_show@3x.png new file mode 100644 index 00000000..9ef1c45c Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Setting/mine_setting_pay_password_show.imageset/mine_setting_pay_password_show@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_album.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_album.imageset/Contents.json new file mode 100644 index 00000000..1ada2808 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_album.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_setting_permission_album@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_setting_permission_album@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_album.imageset/mine_setting_permission_album@2x.png b/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_album.imageset/mine_setting_permission_album@2x.png new file mode 100644 index 00000000..add229ca Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_album.imageset/mine_setting_permission_album@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_album.imageset/mine_setting_permission_album@3x.png b/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_album.imageset/mine_setting_permission_album@3x.png new file mode 100644 index 00000000..df5620fa Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_album.imageset/mine_setting_permission_album@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_camera.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_camera.imageset/Contents.json new file mode 100644 index 00000000..a1f7606d --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_camera.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "camera@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "camera@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_camera.imageset/camera@2x.png b/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_camera.imageset/camera@2x.png new file mode 100644 index 00000000..9820e77c Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_camera.imageset/camera@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_camera.imageset/camera@3x.png b/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_camera.imageset/camera@3x.png new file mode 100644 index 00000000..6bd24ade Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_camera.imageset/camera@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_voice.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_voice.imageset/Contents.json new file mode 100644 index 00000000..c38e2c47 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_voice.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "voice@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "voice@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_voice.imageset/voice@2x.png b/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_voice.imageset/voice@2x.png new file mode 100644 index 00000000..969917c0 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_voice.imageset/voice@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_voice.imageset/voice@3x.png b/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_voice.imageset/voice@3x.png new file mode 100644 index 00000000..821f0ad7 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Setting/mine_setting_permission_voice.imageset/voice@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Setting/ming_setting_about_us.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Setting/ming_setting_about_us.imageset/Contents.json new file mode 100644 index 00000000..8dc8d10d --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Setting/ming_setting_about_us.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "ming_setting_about_us@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Setting/ming_setting_about_us.imageset/ming_setting_about_us@2x.png b/YuMi/Assets.xcassets/jm/Setting/ming_setting_about_us.imageset/ming_setting_about_us@2x.png new file mode 100644 index 00000000..835da9ad Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Setting/ming_setting_about_us.imageset/ming_setting_about_us@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_modif_pay_pwd_hidden.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_modif_pay_pwd_hidden.imageset/Contents.json deleted file mode 100644 index a838356f..00000000 --- a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_modif_pay_pwd_hidden.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_setting_modif_pay_pwd_hidden@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_setting_modif_pay_pwd_hidden@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_modif_pay_pwd_hidden.imageset/yumi_center_setting_modif_pay_pwd_hidden@2x.png b/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_modif_pay_pwd_hidden.imageset/yumi_center_setting_modif_pay_pwd_hidden@2x.png deleted file mode 100644 index 8dfc57fa..00000000 Binary files a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_modif_pay_pwd_hidden.imageset/yumi_center_setting_modif_pay_pwd_hidden@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_modif_pay_pwd_hidden.imageset/yumi_center_setting_modif_pay_pwd_hidden@3x.png b/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_modif_pay_pwd_hidden.imageset/yumi_center_setting_modif_pay_pwd_hidden@3x.png deleted file mode 100644 index 93a34c41..00000000 Binary files a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_modif_pay_pwd_hidden.imageset/yumi_center_setting_modif_pay_pwd_hidden@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_modif_pay_pwd_show.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_modif_pay_pwd_show.imageset/Contents.json deleted file mode 100644 index 687933c5..00000000 --- a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_modif_pay_pwd_show.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_setting_modif_pay_pwd_show@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_setting_modif_pay_pwd_show@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_modif_pay_pwd_show.imageset/yumi_center_setting_modif_pay_pwd_show@2x.png b/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_modif_pay_pwd_show.imageset/yumi_center_setting_modif_pay_pwd_show@2x.png deleted file mode 100644 index 1d43565b..00000000 Binary files a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_modif_pay_pwd_show.imageset/yumi_center_setting_modif_pay_pwd_show@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_modif_pay_pwd_show.imageset/yumi_center_setting_modif_pay_pwd_show@3x.png b/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_modif_pay_pwd_show.imageset/yumi_center_setting_modif_pay_pwd_show@3x.png deleted file mode 100644 index ceeaac16..00000000 Binary files a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_modif_pay_pwd_show.imageset/yumi_center_setting_modif_pay_pwd_show@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_pay_password_hidden.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_pay_password_hidden.imageset/Contents.json deleted file mode 100644 index 766d0724..00000000 --- a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_pay_password_hidden.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_setting_pay_password_hidden@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_setting_pay_password_hidden@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_pay_password_hidden.imageset/yumi_center_setting_pay_password_hidden@2x.png b/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_pay_password_hidden.imageset/yumi_center_setting_pay_password_hidden@2x.png deleted file mode 100644 index 1482f98b..00000000 Binary files a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_pay_password_hidden.imageset/yumi_center_setting_pay_password_hidden@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_pay_password_hidden.imageset/yumi_center_setting_pay_password_hidden@3x.png b/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_pay_password_hidden.imageset/yumi_center_setting_pay_password_hidden@3x.png deleted file mode 100644 index 8d979bc5..00000000 Binary files a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_pay_password_hidden.imageset/yumi_center_setting_pay_password_hidden@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_pay_password_show.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_pay_password_show.imageset/Contents.json deleted file mode 100644 index 83b668a2..00000000 --- a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_pay_password_show.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_setting_pay_password_show@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_setting_pay_password_show@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_pay_password_show.imageset/yumi_center_setting_pay_password_show@2x.png b/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_pay_password_show.imageset/yumi_center_setting_pay_password_show@2x.png deleted file mode 100644 index 42c9897e..00000000 Binary files a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_pay_password_show.imageset/yumi_center_setting_pay_password_show@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_pay_password_show.imageset/yumi_center_setting_pay_password_show@3x.png b/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_pay_password_show.imageset/yumi_center_setting_pay_password_show@3x.png deleted file mode 100644 index 00d1835a..00000000 Binary files a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_pay_password_show.imageset/yumi_center_setting_pay_password_show@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_album.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_album.imageset/Contents.json deleted file mode 100644 index 8c524230..00000000 --- a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_album.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_setting_permission_album@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_setting_permission_album@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_album.imageset/yumi_center_setting_permission_album@2x.png b/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_album.imageset/yumi_center_setting_permission_album@2x.png deleted file mode 100644 index cb12e33b..00000000 Binary files a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_album.imageset/yumi_center_setting_permission_album@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_album.imageset/yumi_center_setting_permission_album@3x.png b/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_album.imageset/yumi_center_setting_permission_album@3x.png deleted file mode 100644 index 920e0da8..00000000 Binary files a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_album.imageset/yumi_center_setting_permission_album@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_camera.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_camera.imageset/Contents.json deleted file mode 100644 index 6d433e84..00000000 --- a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_camera.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_setting_permission_camera@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_setting_permission_camera@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_camera.imageset/yumi_center_setting_permission_camera@2x.png b/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_camera.imageset/yumi_center_setting_permission_camera@2x.png deleted file mode 100644 index eb568c9e..00000000 Binary files a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_camera.imageset/yumi_center_setting_permission_camera@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_camera.imageset/yumi_center_setting_permission_camera@3x.png b/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_camera.imageset/yumi_center_setting_permission_camera@3x.png deleted file mode 100644 index 90fdf38e..00000000 Binary files a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_camera.imageset/yumi_center_setting_permission_camera@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_voice.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_voice.imageset/Contents.json deleted file mode 100644 index aae4fa2b..00000000 --- a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_voice.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_setting_permission_voice@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_setting_permission_voice@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_voice.imageset/yumi_center_setting_permission_voice@2x.png b/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_voice.imageset/yumi_center_setting_permission_voice@2x.png deleted file mode 100644 index b51cb299..00000000 Binary files a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_voice.imageset/yumi_center_setting_permission_voice@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_voice.imageset/yumi_center_setting_permission_voice@3x.png b/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_voice.imageset/yumi_center_setting_permission_voice@3x.png deleted file mode 100644 index d81e3a37..00000000 Binary files a/YuMi/Assets.xcassets/jm/Setting/yumi_center_setting_permission_voice.imageset/yumi_center_setting_permission_voice@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Setting/yumi_ming_setting_about_us.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Setting/yumi_ming_setting_about_us.imageset/Contents.json deleted file mode 100644 index 7f83e343..00000000 --- a/YuMi/Assets.xcassets/jm/Setting/yumi_ming_setting_about_us.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_ming_setting_about_us@2x.png", "idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Setting/yumi_ming_setting_about_us.imageset/yumi_ming_setting_about_us@2x.png b/YuMi/Assets.xcassets/jm/Setting/yumi_ming_setting_about_us.imageset/yumi_ming_setting_about_us@2x.png deleted file mode 100644 index 4d458843..00000000 Binary files a/YuMi/Assets.xcassets/jm/Setting/yumi_ming_setting_about_us.imageset/yumi_ming_setting_about_us@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/jm/SkillCard/Contents.json +++ b/YuMi/Assets.xcassets/jm/SkillCard/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/Contents.json +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_00.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_00.imageset/Contents.json new file mode 100644 index 00000000..15a44852 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_00.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_00.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_00.imageset/mine_voice_shengyin_00.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_00.imageset/mine_voice_shengyin_00.png new file mode 100644 index 00000000..1c96972c Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_00.imageset/mine_voice_shengyin_00.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_01.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_01.imageset/Contents.json new file mode 100644 index 00000000..81047550 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_01.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_01.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_01.imageset/mine_voice_shengyin_01.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_01.imageset/mine_voice_shengyin_01.png new file mode 100644 index 00000000..6cbaf007 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_01.imageset/mine_voice_shengyin_01.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_02.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_02.imageset/Contents.json new file mode 100644 index 00000000..850a8746 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_02.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_02.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_02.imageset/mine_voice_shengyin_02.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_02.imageset/mine_voice_shengyin_02.png new file mode 100644 index 00000000..48b747d9 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_02.imageset/mine_voice_shengyin_02.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_03.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_03.imageset/Contents.json new file mode 100644 index 00000000..954e46b5 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_03.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_03.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_03.imageset/mine_voice_shengyin_03.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_03.imageset/mine_voice_shengyin_03.png new file mode 100644 index 00000000..ed1943b8 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_03.imageset/mine_voice_shengyin_03.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_04.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_04.imageset/Contents.json new file mode 100644 index 00000000..c8831a44 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_04.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_04.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_04.imageset/mine_voice_shengyin_04.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_04.imageset/mine_voice_shengyin_04.png new file mode 100644 index 00000000..1c72b567 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_04.imageset/mine_voice_shengyin_04.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_05.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_05.imageset/Contents.json new file mode 100644 index 00000000..5ba91a26 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_05.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_05.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_05.imageset/mine_voice_shengyin_05.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_05.imageset/mine_voice_shengyin_05.png new file mode 100644 index 00000000..6a5ed6fc Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_05.imageset/mine_voice_shengyin_05.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_06.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_06.imageset/Contents.json new file mode 100644 index 00000000..009a2574 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_06.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_06.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_06.imageset/mine_voice_shengyin_06.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_06.imageset/mine_voice_shengyin_06.png new file mode 100644 index 00000000..22f999c8 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_06.imageset/mine_voice_shengyin_06.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_07.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_07.imageset/Contents.json new file mode 100644 index 00000000..efdb5fa1 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_07.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_07.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_07.imageset/mine_voice_shengyin_07.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_07.imageset/mine_voice_shengyin_07.png new file mode 100644 index 00000000..7672eddc Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_07.imageset/mine_voice_shengyin_07.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_08.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_08.imageset/Contents.json new file mode 100644 index 00000000..78ec9b16 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_08.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_08.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_08.imageset/mine_voice_shengyin_08.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_08.imageset/mine_voice_shengyin_08.png new file mode 100644 index 00000000..3370356f Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_08.imageset/mine_voice_shengyin_08.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_09.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_09.imageset/Contents.json new file mode 100644 index 00000000..03d48e74 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_09.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_09.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_09.imageset/mine_voice_shengyin_09.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_09.imageset/mine_voice_shengyin_09.png new file mode 100644 index 00000000..1ed29d45 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_09.imageset/mine_voice_shengyin_09.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_10.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_10.imageset/Contents.json new file mode 100644 index 00000000..70fb4224 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_10.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_10.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_10.imageset/mine_voice_shengyin_10.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_10.imageset/mine_voice_shengyin_10.png new file mode 100644 index 00000000..b139f80d Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_10.imageset/mine_voice_shengyin_10.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_11.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_11.imageset/Contents.json new file mode 100644 index 00000000..6a9bced1 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_11.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_11.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_11.imageset/mine_voice_shengyin_11.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_11.imageset/mine_voice_shengyin_11.png new file mode 100644 index 00000000..c12c6d06 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_11.imageset/mine_voice_shengyin_11.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_12.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_12.imageset/Contents.json new file mode 100644 index 00000000..0e8cc76b --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_12.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_12.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_12.imageset/mine_voice_shengyin_12.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_12.imageset/mine_voice_shengyin_12.png new file mode 100644 index 00000000..28384243 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_12.imageset/mine_voice_shengyin_12.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_13.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_13.imageset/Contents.json new file mode 100644 index 00000000..2b36aa42 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_13.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_13.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_13.imageset/mine_voice_shengyin_13.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_13.imageset/mine_voice_shengyin_13.png new file mode 100644 index 00000000..451ba808 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_13.imageset/mine_voice_shengyin_13.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_14.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_14.imageset/Contents.json new file mode 100644 index 00000000..8c1e3d0b --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_14.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_14.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_14.imageset/mine_voice_shengyin_14.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_14.imageset/mine_voice_shengyin_14.png new file mode 100644 index 00000000..40059212 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_14.imageset/mine_voice_shengyin_14.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_15.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_15.imageset/Contents.json new file mode 100644 index 00000000..286737fc --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_15.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_15.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_15.imageset/mine_voice_shengyin_15.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_15.imageset/mine_voice_shengyin_15.png new file mode 100644 index 00000000..59bfc446 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_15.imageset/mine_voice_shengyin_15.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_16.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_16.imageset/Contents.json new file mode 100644 index 00000000..5b45989e --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_16.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_16.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_16.imageset/mine_voice_shengyin_16.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_16.imageset/mine_voice_shengyin_16.png new file mode 100644 index 00000000..3cb3bb7a Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_16.imageset/mine_voice_shengyin_16.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_17.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_17.imageset/Contents.json new file mode 100644 index 00000000..7f84c7da --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_17.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_17.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_17.imageset/mine_voice_shengyin_17.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_17.imageset/mine_voice_shengyin_17.png new file mode 100644 index 00000000..07f4e9d9 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_17.imageset/mine_voice_shengyin_17.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_18.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_18.imageset/Contents.json new file mode 100644 index 00000000..6bd53fae --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_18.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_18.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_18.imageset/mine_voice_shengyin_18.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_18.imageset/mine_voice_shengyin_18.png new file mode 100644 index 00000000..c507d559 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_18.imageset/mine_voice_shengyin_18.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_19.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_19.imageset/Contents.json new file mode 100644 index 00000000..7d818b71 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_19.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_19.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_19.imageset/mine_voice_shengyin_19.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_19.imageset/mine_voice_shengyin_19.png new file mode 100644 index 00000000..bccb3e7b Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_19.imageset/mine_voice_shengyin_19.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_20.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_20.imageset/Contents.json new file mode 100644 index 00000000..0bb29b9a --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_20.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_20.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_20.imageset/mine_voice_shengyin_20.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_20.imageset/mine_voice_shengyin_20.png new file mode 100644 index 00000000..b60219dd Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_20.imageset/mine_voice_shengyin_20.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_21.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_21.imageset/Contents.json new file mode 100644 index 00000000..7e4b00b7 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_21.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_21.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_21.imageset/mine_voice_shengyin_21.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_21.imageset/mine_voice_shengyin_21.png new file mode 100644 index 00000000..feeb324e Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_21.imageset/mine_voice_shengyin_21.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_22.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_22.imageset/Contents.json new file mode 100644 index 00000000..a886b5dd --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_22.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_22.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_22.imageset/mine_voice_shengyin_22.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_22.imageset/mine_voice_shengyin_22.png new file mode 100644 index 00000000..219f7c85 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_22.imageset/mine_voice_shengyin_22.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_23.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_23.imageset/Contents.json new file mode 100644 index 00000000..de1a58f3 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_23.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_23.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_23.imageset/mine_voice_shengyin_23.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_23.imageset/mine_voice_shengyin_23.png new file mode 100644 index 00000000..a2cc0668 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_23.imageset/mine_voice_shengyin_23.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_24.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_24.imageset/Contents.json new file mode 100644 index 00000000..78ffd261 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_24.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_24.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_24.imageset/mine_voice_shengyin_24.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_24.imageset/mine_voice_shengyin_24.png new file mode 100644 index 00000000..47448ba9 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_24.imageset/mine_voice_shengyin_24.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_25.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_25.imageset/Contents.json new file mode 100644 index 00000000..8e6c7f8f --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_25.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_25.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_25.imageset/mine_voice_shengyin_25.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_25.imageset/mine_voice_shengyin_25.png new file mode 100644 index 00000000..439637ce Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_25.imageset/mine_voice_shengyin_25.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_26.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_26.imageset/Contents.json new file mode 100644 index 00000000..98834073 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_26.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_26.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_26.imageset/mine_voice_shengyin_26.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_26.imageset/mine_voice_shengyin_26.png new file mode 100644 index 00000000..5fb4c908 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_26.imageset/mine_voice_shengyin_26.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_27.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_27.imageset/Contents.json new file mode 100644 index 00000000..ab3b9290 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_27.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_27.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_27.imageset/mine_voice_shengyin_27.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_27.imageset/mine_voice_shengyin_27.png new file mode 100644 index 00000000..e95ba84b Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_27.imageset/mine_voice_shengyin_27.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_28.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_28.imageset/Contents.json new file mode 100644 index 00000000..860e9720 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_28.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_28.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_28.imageset/mine_voice_shengyin_28.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_28.imageset/mine_voice_shengyin_28.png new file mode 100644 index 00000000..1c0cd6a4 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_28.imageset/mine_voice_shengyin_28.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_29.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_29.imageset/Contents.json new file mode 100644 index 00000000..ca389054 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_29.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_29.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_29.imageset/mine_voice_shengyin_29.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_29.imageset/mine_voice_shengyin_29.png new file mode 100644 index 00000000..f3476fab Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_29.imageset/mine_voice_shengyin_29.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_30.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_30.imageset/Contents.json new file mode 100644 index 00000000..628708eb --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_30.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_30.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_30.imageset/mine_voice_shengyin_30.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_30.imageset/mine_voice_shengyin_30.png new file mode 100644 index 00000000..9b60b87c Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_30.imageset/mine_voice_shengyin_30.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_31.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_31.imageset/Contents.json new file mode 100644 index 00000000..c74632d6 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_31.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_31.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_31.imageset/mine_voice_shengyin_31.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_31.imageset/mine_voice_shengyin_31.png new file mode 100644 index 00000000..8223ade6 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_31.imageset/mine_voice_shengyin_31.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_32.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_32.imageset/Contents.json new file mode 100644 index 00000000..cd5547e3 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_32.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_32.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_32.imageset/mine_voice_shengyin_32.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_32.imageset/mine_voice_shengyin_32.png new file mode 100644 index 00000000..cb20193f Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_32.imageset/mine_voice_shengyin_32.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_33.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_33.imageset/Contents.json new file mode 100644 index 00000000..d8f69ed9 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_33.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_33.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_33.imageset/mine_voice_shengyin_33.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_33.imageset/mine_voice_shengyin_33.png new file mode 100644 index 00000000..47dbf024 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_33.imageset/mine_voice_shengyin_33.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_34.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_34.imageset/Contents.json new file mode 100644 index 00000000..306ecc7b --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_34.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_34.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_34.imageset/mine_voice_shengyin_34.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_34.imageset/mine_voice_shengyin_34.png new file mode 100644 index 00000000..2828efbf Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_34.imageset/mine_voice_shengyin_34.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_35.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_35.imageset/Contents.json new file mode 100644 index 00000000..0def4078 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_35.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_35.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_35.imageset/mine_voice_shengyin_35.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_35.imageset/mine_voice_shengyin_35.png new file mode 100644 index 00000000..2127f597 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_35.imageset/mine_voice_shengyin_35.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_36.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_36.imageset/Contents.json new file mode 100644 index 00000000..c647e84f --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_36.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_36.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_36.imageset/mine_voice_shengyin_36.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_36.imageset/mine_voice_shengyin_36.png new file mode 100644 index 00000000..e1e66437 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_36.imageset/mine_voice_shengyin_36.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_37.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_37.imageset/Contents.json new file mode 100644 index 00000000..c2756478 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_37.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_37.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_37.imageset/mine_voice_shengyin_37.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_37.imageset/mine_voice_shengyin_37.png new file mode 100644 index 00000000..5de701bd Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_37.imageset/mine_voice_shengyin_37.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_38.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_38.imageset/Contents.json new file mode 100644 index 00000000..0fff5bca --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_38.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_38.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_38.imageset/mine_voice_shengyin_38.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_38.imageset/mine_voice_shengyin_38.png new file mode 100644 index 00000000..608b5e97 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_38.imageset/mine_voice_shengyin_38.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_39.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_39.imageset/Contents.json new file mode 100644 index 00000000..0fe9ae00 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_39.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "mine_voice_shengyin_39.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_39.imageset/mine_voice_shengyin_39.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_39.imageset/mine_voice_shengyin_39.png new file mode 100644 index 00000000..8d7716c7 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/mine_voice_shengyin_39.imageset/mine_voice_shengyin_39.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_00.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_00.imageset/Contents.json deleted file mode 100644 index 7aee0a65..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_00.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_00.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_00.imageset/yumi_center_voice_shengyin_00.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_00.imageset/yumi_center_voice_shengyin_00.png deleted file mode 100644 index fc65d1f8..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_00.imageset/yumi_center_voice_shengyin_00.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_01.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_01.imageset/Contents.json deleted file mode 100644 index 69a5621b..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_01.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_01.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_01.imageset/yumi_center_voice_shengyin_01.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_01.imageset/yumi_center_voice_shengyin_01.png deleted file mode 100644 index 1592a237..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_01.imageset/yumi_center_voice_shengyin_01.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_02.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_02.imageset/Contents.json deleted file mode 100644 index 29388d61..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_02.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_02.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_02.imageset/yumi_center_voice_shengyin_02.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_02.imageset/yumi_center_voice_shengyin_02.png deleted file mode 100644 index 46d57857..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_02.imageset/yumi_center_voice_shengyin_02.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_03.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_03.imageset/Contents.json deleted file mode 100644 index d146627d..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_03.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_03.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_03.imageset/yumi_center_voice_shengyin_03.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_03.imageset/yumi_center_voice_shengyin_03.png deleted file mode 100644 index 1216feae..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_03.imageset/yumi_center_voice_shengyin_03.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_04.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_04.imageset/Contents.json deleted file mode 100644 index e8370940..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_04.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_04.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_04.imageset/yumi_center_voice_shengyin_04.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_04.imageset/yumi_center_voice_shengyin_04.png deleted file mode 100644 index 7671fb97..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_04.imageset/yumi_center_voice_shengyin_04.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_05.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_05.imageset/Contents.json deleted file mode 100644 index a158e05d..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_05.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_05.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_05.imageset/yumi_center_voice_shengyin_05.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_05.imageset/yumi_center_voice_shengyin_05.png deleted file mode 100644 index 1f68c8e0..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_05.imageset/yumi_center_voice_shengyin_05.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_06.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_06.imageset/Contents.json deleted file mode 100644 index 05e0081d..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_06.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_06.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_06.imageset/yumi_center_voice_shengyin_06.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_06.imageset/yumi_center_voice_shengyin_06.png deleted file mode 100644 index c3c65ff6..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_06.imageset/yumi_center_voice_shengyin_06.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_07.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_07.imageset/Contents.json deleted file mode 100644 index cb21eb81..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_07.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_07.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_07.imageset/yumi_center_voice_shengyin_07.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_07.imageset/yumi_center_voice_shengyin_07.png deleted file mode 100644 index 4b932762..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_07.imageset/yumi_center_voice_shengyin_07.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_08.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_08.imageset/Contents.json deleted file mode 100644 index ca05fe43..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_08.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_08.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_08.imageset/yumi_center_voice_shengyin_08.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_08.imageset/yumi_center_voice_shengyin_08.png deleted file mode 100644 index 5c0482d3..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_08.imageset/yumi_center_voice_shengyin_08.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_09.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_09.imageset/Contents.json deleted file mode 100644 index fdbdbe2e..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_09.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_09.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_09.imageset/yumi_center_voice_shengyin_09.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_09.imageset/yumi_center_voice_shengyin_09.png deleted file mode 100644 index fbc10d72..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_09.imageset/yumi_center_voice_shengyin_09.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_10.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_10.imageset/Contents.json deleted file mode 100644 index e4cc1104..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_10.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_10.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_10.imageset/yumi_center_voice_shengyin_10.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_10.imageset/yumi_center_voice_shengyin_10.png deleted file mode 100644 index ce8801c6..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_10.imageset/yumi_center_voice_shengyin_10.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_11.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_11.imageset/Contents.json deleted file mode 100644 index 980377e1..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_11.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_11.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_11.imageset/yumi_center_voice_shengyin_11.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_11.imageset/yumi_center_voice_shengyin_11.png deleted file mode 100644 index 28219543..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_11.imageset/yumi_center_voice_shengyin_11.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_12.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_12.imageset/Contents.json deleted file mode 100644 index b9e5612d..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_12.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_12.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_12.imageset/yumi_center_voice_shengyin_12.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_12.imageset/yumi_center_voice_shengyin_12.png deleted file mode 100644 index 40bcdd1d..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_12.imageset/yumi_center_voice_shengyin_12.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_13.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_13.imageset/Contents.json deleted file mode 100644 index 81c8533e..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_13.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_13.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_13.imageset/yumi_center_voice_shengyin_13.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_13.imageset/yumi_center_voice_shengyin_13.png deleted file mode 100644 index 3cf7baf9..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_13.imageset/yumi_center_voice_shengyin_13.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_14.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_14.imageset/Contents.json deleted file mode 100644 index 31ad3d24..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_14.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_14.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_14.imageset/yumi_center_voice_shengyin_14.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_14.imageset/yumi_center_voice_shengyin_14.png deleted file mode 100644 index bc047a62..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_14.imageset/yumi_center_voice_shengyin_14.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_15.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_15.imageset/Contents.json deleted file mode 100644 index 89e420ba..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_15.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_15.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_15.imageset/yumi_center_voice_shengyin_15.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_15.imageset/yumi_center_voice_shengyin_15.png deleted file mode 100644 index b3754f1c..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_15.imageset/yumi_center_voice_shengyin_15.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_16.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_16.imageset/Contents.json deleted file mode 100644 index 304305b8..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_16.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_16.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_16.imageset/yumi_center_voice_shengyin_16.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_16.imageset/yumi_center_voice_shengyin_16.png deleted file mode 100644 index 21278e72..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_16.imageset/yumi_center_voice_shengyin_16.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_17.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_17.imageset/Contents.json deleted file mode 100644 index 03e4ce27..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_17.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_17.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_17.imageset/yumi_center_voice_shengyin_17.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_17.imageset/yumi_center_voice_shengyin_17.png deleted file mode 100644 index 083290f9..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_17.imageset/yumi_center_voice_shengyin_17.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_18.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_18.imageset/Contents.json deleted file mode 100644 index 512ba339..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_18.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_18.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_18.imageset/yumi_center_voice_shengyin_18.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_18.imageset/yumi_center_voice_shengyin_18.png deleted file mode 100644 index 4ce564a5..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_18.imageset/yumi_center_voice_shengyin_18.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_19.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_19.imageset/Contents.json deleted file mode 100644 index f614c0f7..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_19.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_19.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_19.imageset/yumi_center_voice_shengyin_19.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_19.imageset/yumi_center_voice_shengyin_19.png deleted file mode 100644 index da4d257f..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_19.imageset/yumi_center_voice_shengyin_19.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_20.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_20.imageset/Contents.json deleted file mode 100644 index 69d95837..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_20.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_20.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_20.imageset/yumi_center_voice_shengyin_20.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_20.imageset/yumi_center_voice_shengyin_20.png deleted file mode 100644 index 6b4192d3..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_20.imageset/yumi_center_voice_shengyin_20.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_21.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_21.imageset/Contents.json deleted file mode 100644 index 3db35d78..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_21.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_21.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_21.imageset/yumi_center_voice_shengyin_21.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_21.imageset/yumi_center_voice_shengyin_21.png deleted file mode 100644 index d16dce3f..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_21.imageset/yumi_center_voice_shengyin_21.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_22.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_22.imageset/Contents.json deleted file mode 100644 index 878a4810..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_22.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_22.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_22.imageset/yumi_center_voice_shengyin_22.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_22.imageset/yumi_center_voice_shengyin_22.png deleted file mode 100644 index b251a99b..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_22.imageset/yumi_center_voice_shengyin_22.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_23.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_23.imageset/Contents.json deleted file mode 100644 index 47180b6a..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_23.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_23.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_23.imageset/yumi_center_voice_shengyin_23.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_23.imageset/yumi_center_voice_shengyin_23.png deleted file mode 100644 index 6aa61f08..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_23.imageset/yumi_center_voice_shengyin_23.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_24.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_24.imageset/Contents.json deleted file mode 100644 index c9011e45..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_24.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_24.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_24.imageset/yumi_center_voice_shengyin_24.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_24.imageset/yumi_center_voice_shengyin_24.png deleted file mode 100644 index 0f169202..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_24.imageset/yumi_center_voice_shengyin_24.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_25.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_25.imageset/Contents.json deleted file mode 100644 index cb126627..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_25.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_25.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_25.imageset/yumi_center_voice_shengyin_25.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_25.imageset/yumi_center_voice_shengyin_25.png deleted file mode 100644 index b521cf97..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_25.imageset/yumi_center_voice_shengyin_25.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_26.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_26.imageset/Contents.json deleted file mode 100644 index 88e83070..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_26.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_26.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_26.imageset/yumi_center_voice_shengyin_26.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_26.imageset/yumi_center_voice_shengyin_26.png deleted file mode 100644 index 9b3c6609..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_26.imageset/yumi_center_voice_shengyin_26.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_27.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_27.imageset/Contents.json deleted file mode 100644 index 30ac6999..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_27.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_27.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_27.imageset/yumi_center_voice_shengyin_27.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_27.imageset/yumi_center_voice_shengyin_27.png deleted file mode 100644 index c4e93e22..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_27.imageset/yumi_center_voice_shengyin_27.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_28.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_28.imageset/Contents.json deleted file mode 100644 index 81f81eef..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_28.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_28.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_28.imageset/yumi_center_voice_shengyin_28.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_28.imageset/yumi_center_voice_shengyin_28.png deleted file mode 100644 index a0d5f769..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_28.imageset/yumi_center_voice_shengyin_28.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_29.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_29.imageset/Contents.json deleted file mode 100644 index a83c129f..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_29.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_29.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_29.imageset/yumi_center_voice_shengyin_29.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_29.imageset/yumi_center_voice_shengyin_29.png deleted file mode 100644 index b4b3e2b2..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_29.imageset/yumi_center_voice_shengyin_29.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_30.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_30.imageset/Contents.json deleted file mode 100644 index 14258a09..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_30.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_30.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_30.imageset/yumi_center_voice_shengyin_30.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_30.imageset/yumi_center_voice_shengyin_30.png deleted file mode 100644 index 5fe34541..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_30.imageset/yumi_center_voice_shengyin_30.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_31.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_31.imageset/Contents.json deleted file mode 100644 index 04f50631..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_31.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_31.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_31.imageset/yumi_center_voice_shengyin_31.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_31.imageset/yumi_center_voice_shengyin_31.png deleted file mode 100644 index aa4b69b2..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_31.imageset/yumi_center_voice_shengyin_31.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_32.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_32.imageset/Contents.json deleted file mode 100644 index a113923e..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_32.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_32.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_32.imageset/yumi_center_voice_shengyin_32.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_32.imageset/yumi_center_voice_shengyin_32.png deleted file mode 100644 index fc21390c..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_32.imageset/yumi_center_voice_shengyin_32.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_33.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_33.imageset/Contents.json deleted file mode 100644 index da35f0f1..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_33.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_33.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_33.imageset/yumi_center_voice_shengyin_33.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_33.imageset/yumi_center_voice_shengyin_33.png deleted file mode 100644 index f3a82eac..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_33.imageset/yumi_center_voice_shengyin_33.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_34.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_34.imageset/Contents.json deleted file mode 100644 index a7bcff23..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_34.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_34.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_34.imageset/yumi_center_voice_shengyin_34.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_34.imageset/yumi_center_voice_shengyin_34.png deleted file mode 100644 index c72ba8e6..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_34.imageset/yumi_center_voice_shengyin_34.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_35.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_35.imageset/Contents.json deleted file mode 100644 index d2a87f03..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_35.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_35.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_35.imageset/yumi_center_voice_shengyin_35.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_35.imageset/yumi_center_voice_shengyin_35.png deleted file mode 100644 index 365bdde2..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_35.imageset/yumi_center_voice_shengyin_35.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_36.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_36.imageset/Contents.json deleted file mode 100644 index 85ae48e6..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_36.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_36.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_36.imageset/yumi_center_voice_shengyin_36.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_36.imageset/yumi_center_voice_shengyin_36.png deleted file mode 100644 index 27cce588..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_36.imageset/yumi_center_voice_shengyin_36.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_37.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_37.imageset/Contents.json deleted file mode 100644 index 1528bb5b..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_37.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_37.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_37.imageset/yumi_center_voice_shengyin_37.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_37.imageset/yumi_center_voice_shengyin_37.png deleted file mode 100644 index fc8a1ba3..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_37.imageset/yumi_center_voice_shengyin_37.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_38.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_38.imageset/Contents.json deleted file mode 100644 index a11f64c8..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_38.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_38.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_38.imageset/yumi_center_voice_shengyin_38.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_38.imageset/yumi_center_voice_shengyin_38.png deleted file mode 100644 index 4bcbe904..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_38.imageset/yumi_center_voice_shengyin_38.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_39.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_39.imageset/Contents.json deleted file mode 100644 index 048eb41d..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_39.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_center_voice_shengyin_39.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_39.imageset/yumi_center_voice_shengyin_39.png b/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_39.imageset/yumi_center_voice_shengyin_39.png deleted file mode 100644 index c49e927e..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/VoiceNote/yumi_center_voice_shengyin_39.imageset/yumi_center_voice_shengyin_39.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/skillCard_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/skillCard_arrow.imageset/Contents.json new file mode 100644 index 00000000..603c47ba --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/skillCard_arrow.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "skillCard_arrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "skillCard_arrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/skillCard_arrow.imageset/skillCard_arrow@2x.png b/YuMi/Assets.xcassets/jm/SkillCard/skillCard_arrow.imageset/skillCard_arrow@2x.png new file mode 100644 index 00000000..c9fa0f86 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/skillCard_arrow.imageset/skillCard_arrow@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/skillCard_arrow.imageset/skillCard_arrow@3x.png b/YuMi/Assets.xcassets/jm/SkillCard/skillCard_arrow.imageset/skillCard_arrow@3x.png new file mode 100644 index 00000000..1f1d555e Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/skillCard_arrow.imageset/skillCard_arrow@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/skillCard_edit.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/skillCard_edit.imageset/Contents.json new file mode 100644 index 00000000..162d802a --- /dev/null +++ b/YuMi/Assets.xcassets/jm/SkillCard/skillCard_edit.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "skillCard_edit@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "skillCard_edit@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/SkillCard/skillCard_edit.imageset/skillCard_edit@2x.png b/YuMi/Assets.xcassets/jm/SkillCard/skillCard_edit.imageset/skillCard_edit@2x.png new file mode 100644 index 00000000..0e321dac Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/skillCard_edit.imageset/skillCard_edit@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/skillCard_edit.imageset/skillCard_edit@3x.png b/YuMi/Assets.xcassets/jm/SkillCard/skillCard_edit.imageset/skillCard_edit@3x.png new file mode 100644 index 00000000..19ea9fea Binary files /dev/null and b/YuMi/Assets.xcassets/jm/SkillCard/skillCard_edit.imageset/skillCard_edit@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/yumi_skillCard_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/yumi_skillCard_arrow.imageset/Contents.json deleted file mode 100644 index c970527e..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/yumi_skillCard_arrow.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_skillCard_arrow@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_skillCard_arrow@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/yumi_skillCard_arrow.imageset/yumi_skillCard_arrow@2x.png b/YuMi/Assets.xcassets/jm/SkillCard/yumi_skillCard_arrow.imageset/yumi_skillCard_arrow@2x.png deleted file mode 100644 index 924e50f1..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/yumi_skillCard_arrow.imageset/yumi_skillCard_arrow@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/yumi_skillCard_arrow.imageset/yumi_skillCard_arrow@3x.png b/YuMi/Assets.xcassets/jm/SkillCard/yumi_skillCard_arrow.imageset/yumi_skillCard_arrow@3x.png deleted file mode 100644 index 2dd98dca..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/yumi_skillCard_arrow.imageset/yumi_skillCard_arrow@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/yumi_skillCard_edit.imageset/Contents.json b/YuMi/Assets.xcassets/jm/SkillCard/yumi_skillCard_edit.imageset/Contents.json deleted file mode 100644 index 36385dfe..00000000 --- a/YuMi/Assets.xcassets/jm/SkillCard/yumi_skillCard_edit.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_skillCard_edit@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_skillCard_edit@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/SkillCard/yumi_skillCard_edit.imageset/yumi_skillCard_edit@2x.png b/YuMi/Assets.xcassets/jm/SkillCard/yumi_skillCard_edit.imageset/yumi_skillCard_edit@2x.png deleted file mode 100644 index c7a7cdca..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/yumi_skillCard_edit.imageset/yumi_skillCard_edit@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/SkillCard/yumi_skillCard_edit.imageset/yumi_skillCard_edit@3x.png b/YuMi/Assets.xcassets/jm/SkillCard/yumi_skillCard_edit.imageset/yumi_skillCard_edit@3x.png deleted file mode 100644 index 58707dc1..00000000 Binary files a/YuMi/Assets.xcassets/jm/SkillCard/yumi_skillCard_edit.imageset/yumi_skillCard_edit@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Visitor/Contents.json b/YuMi/Assets.xcassets/jm/Visitor/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/jm/Visitor/Contents.json +++ b/YuMi/Assets.xcassets/jm/Visitor/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Visitor/visitor_record_letter.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Visitor/visitor_record_letter.imageset/Contents.json new file mode 100644 index 00000000..229875fc --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Visitor/visitor_record_letter.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "visitor_record_letter@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "visitor_record_letter@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Visitor/visitor_record_letter.imageset/visitor_record_letter@2x.png b/YuMi/Assets.xcassets/jm/Visitor/visitor_record_letter.imageset/visitor_record_letter@2x.png new file mode 100644 index 00000000..3be0eb96 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Visitor/visitor_record_letter.imageset/visitor_record_letter@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/Visitor/visitor_record_letter.imageset/visitor_record_letter@3x.png b/YuMi/Assets.xcassets/jm/Visitor/visitor_record_letter.imageset/visitor_record_letter@3x.png new file mode 100644 index 00000000..03424912 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/Visitor/visitor_record_letter.imageset/visitor_record_letter@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/Visitor/yumi_visitor_record_letter.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Visitor/yumi_visitor_record_letter.imageset/Contents.json deleted file mode 100644 index b8587dba..00000000 --- a/YuMi/Assets.xcassets/jm/Visitor/yumi_visitor_record_letter.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_visitor_record_letter@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_visitor_record_letter@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/Visitor/yumi_visitor_record_letter.imageset/yumi_visitor_record_letter@2x.png b/YuMi/Assets.xcassets/jm/Visitor/yumi_visitor_record_letter.imageset/yumi_visitor_record_letter@2x.png deleted file mode 100644 index 8354db54..00000000 Binary files a/YuMi/Assets.xcassets/jm/Visitor/yumi_visitor_record_letter.imageset/yumi_visitor_record_letter@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/Visitor/yumi_visitor_record_letter.imageset/yumi_visitor_record_letter@3x.png b/YuMi/Assets.xcassets/jm/Visitor/yumi_visitor_record_letter.imageset/yumi_visitor_record_letter@3x.png deleted file mode 100644 index 8953aed8..00000000 Binary files a/YuMi/Assets.xcassets/jm/Visitor/yumi_visitor_record_letter.imageset/yumi_visitor_record_letter@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/collectRoom/Contents.json b/YuMi/Assets.xcassets/jm/collectRoom/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/jm/collectRoom/Contents.json +++ b/YuMi/Assets.xcassets/jm/collectRoom/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/collectRoom/collect_room_edit_normal.imageset/Contents.json b/YuMi/Assets.xcassets/jm/collectRoom/collect_room_edit_normal.imageset/Contents.json new file mode 100644 index 00000000..7758741f --- /dev/null +++ b/YuMi/Assets.xcassets/jm/collectRoom/collect_room_edit_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "collect_room_edit_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "collect_room_edit_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/collectRoom/collect_room_edit_normal.imageset/collect_room_edit_selected@2x.png b/YuMi/Assets.xcassets/jm/collectRoom/collect_room_edit_normal.imageset/collect_room_edit_selected@2x.png new file mode 100644 index 00000000..76ee2881 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/collectRoom/collect_room_edit_normal.imageset/collect_room_edit_selected@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/collectRoom/collect_room_edit_normal.imageset/collect_room_edit_selected@3x.png b/YuMi/Assets.xcassets/jm/collectRoom/collect_room_edit_normal.imageset/collect_room_edit_selected@3x.png new file mode 100644 index 00000000..1f6a724c Binary files /dev/null and b/YuMi/Assets.xcassets/jm/collectRoom/collect_room_edit_normal.imageset/collect_room_edit_selected@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/collectRoom/collect_room_edit_selected.imageset/Contents.json b/YuMi/Assets.xcassets/jm/collectRoom/collect_room_edit_selected.imageset/Contents.json new file mode 100644 index 00000000..7758741f --- /dev/null +++ b/YuMi/Assets.xcassets/jm/collectRoom/collect_room_edit_selected.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "collect_room_edit_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "collect_room_edit_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/collectRoom/collect_room_edit_selected.imageset/collect_room_edit_selected@2x.png b/YuMi/Assets.xcassets/jm/collectRoom/collect_room_edit_selected.imageset/collect_room_edit_selected@2x.png new file mode 100644 index 00000000..fba0a927 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/collectRoom/collect_room_edit_selected.imageset/collect_room_edit_selected@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/collectRoom/collect_room_edit_selected.imageset/collect_room_edit_selected@3x.png b/YuMi/Assets.xcassets/jm/collectRoom/collect_room_edit_selected.imageset/collect_room_edit_selected@3x.png new file mode 100644 index 00000000..1001c1d6 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/collectRoom/collect_room_edit_selected.imageset/collect_room_edit_selected@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/collectRoom/yumi_collect_scope_edit_normal.imageset/Contents.json b/YuMi/Assets.xcassets/jm/collectRoom/yumi_collect_scope_edit_normal.imageset/Contents.json deleted file mode 100644 index fc16a812..00000000 --- a/YuMi/Assets.xcassets/jm/collectRoom/yumi_collect_scope_edit_normal.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_collect_scope_edit_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_collect_scope_edit_normal@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/collectRoom/yumi_collect_scope_edit_normal.imageset/yumi_collect_scope_edit_normal@2x.png b/YuMi/Assets.xcassets/jm/collectRoom/yumi_collect_scope_edit_normal.imageset/yumi_collect_scope_edit_normal@2x.png deleted file mode 100644 index a4ed1ec4..00000000 Binary files a/YuMi/Assets.xcassets/jm/collectRoom/yumi_collect_scope_edit_normal.imageset/yumi_collect_scope_edit_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/collectRoom/yumi_collect_scope_edit_normal.imageset/yumi_collect_scope_edit_normal@3x.png b/YuMi/Assets.xcassets/jm/collectRoom/yumi_collect_scope_edit_normal.imageset/yumi_collect_scope_edit_normal@3x.png deleted file mode 100644 index 6afc6dc2..00000000 Binary files a/YuMi/Assets.xcassets/jm/collectRoom/yumi_collect_scope_edit_normal.imageset/yumi_collect_scope_edit_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/collectRoom/yumi_collect_scope_edit_selected.imageset/Contents.json b/YuMi/Assets.xcassets/jm/collectRoom/yumi_collect_scope_edit_selected.imageset/Contents.json deleted file mode 100644 index b0844ff9..00000000 --- a/YuMi/Assets.xcassets/jm/collectRoom/yumi_collect_scope_edit_selected.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_collect_scope_edit_selected@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_collect_scope_edit_selected@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/collectRoom/yumi_collect_scope_edit_selected.imageset/yumi_collect_scope_edit_selected@2x.png b/YuMi/Assets.xcassets/jm/collectRoom/yumi_collect_scope_edit_selected.imageset/yumi_collect_scope_edit_selected@2x.png deleted file mode 100644 index 6b12e370..00000000 Binary files a/YuMi/Assets.xcassets/jm/collectRoom/yumi_collect_scope_edit_selected.imageset/yumi_collect_scope_edit_selected@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/collectRoom/yumi_collect_scope_edit_selected.imageset/yumi_collect_scope_edit_selected@3x.png b/YuMi/Assets.xcassets/jm/collectRoom/yumi_collect_scope_edit_selected.imageset/yumi_collect_scope_edit_selected@3x.png deleted file mode 100644 index add12f7d..00000000 Binary files a/YuMi/Assets.xcassets/jm/collectRoom/yumi_collect_scope_edit_selected.imageset/yumi_collect_scope_edit_selected@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/mine_album_reviewing.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_album_reviewing.imageset/Contents.json new file mode 100644 index 00000000..bfae5319 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_album_reviewing.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "album_reviewing@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "album_reviewing@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_album_reviewing.imageset/album_reviewing@2x.png b/YuMi/Assets.xcassets/jm/mine_album_reviewing.imageset/album_reviewing@2x.png new file mode 100644 index 00000000..21a18bd0 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_album_reviewing.imageset/album_reviewing@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_album_reviewing.imageset/album_reviewing@3x.png b/YuMi/Assets.xcassets/jm/mine_album_reviewing.imageset/album_reviewing@3x.png new file mode 100644 index 00000000..565bc4cd Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_album_reviewing.imageset/album_reviewing@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_avatar_reviewing.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_avatar_reviewing.imageset/Contents.json new file mode 100644 index 00000000..aa78fb17 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_avatar_reviewing.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "avatar_reviewing@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "avatar_reviewing@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_avatar_reviewing.imageset/avatar_reviewing@2x.png b/YuMi/Assets.xcassets/jm/mine_avatar_reviewing.imageset/avatar_reviewing@2x.png new file mode 100644 index 00000000..94117eb5 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_avatar_reviewing.imageset/avatar_reviewing@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_avatar_reviewing.imageset/avatar_reviewing@3x.png b/YuMi/Assets.xcassets/jm/mine_avatar_reviewing.imageset/avatar_reviewing@3x.png new file mode 100644 index 00000000..0bf699e5 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_avatar_reviewing.imageset/avatar_reviewing@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_collection.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_collection.imageset/Contents.json new file mode 100644 index 00000000..56ab9734 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_collection.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_collection@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_collection@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_collection.imageset/mine_collection@2x.png b/YuMi/Assets.xcassets/jm/mine_collection.imageset/mine_collection@2x.png new file mode 100644 index 00000000..442097a3 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_collection.imageset/mine_collection@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_collection.imageset/mine_collection@3x.png b/YuMi/Assets.xcassets/jm/mine_collection.imageset/mine_collection@3x.png new file mode 100644 index 00000000..0ab39fa9 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_collection.imageset/mine_collection@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_dress.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_dress.imageset/Contents.json new file mode 100644 index 00000000..b6bde69e --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_dress.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_dress@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_dress@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_dress.imageset/mine_dress@2x.png b/YuMi/Assets.xcassets/jm/mine_dress.imageset/mine_dress@2x.png new file mode 100644 index 00000000..1a0846cb Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_dress.imageset/mine_dress@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_dress.imageset/mine_dress@3x.png b/YuMi/Assets.xcassets/jm/mine_dress.imageset/mine_dress@3x.png new file mode 100644 index 00000000..f48f3318 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_dress.imageset/mine_dress@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_earnings_record.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_earnings_record.imageset/Contents.json new file mode 100644 index 00000000..dfe8a076 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_earnings_record.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_earnings_record@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_earnings_record@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_earnings_record.imageset/mine_earnings_record@2x.png b/YuMi/Assets.xcassets/jm/mine_earnings_record.imageset/mine_earnings_record@2x.png new file mode 100644 index 00000000..b784d2c2 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_earnings_record.imageset/mine_earnings_record@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_earnings_record.imageset/mine_earnings_record@3x.png b/YuMi/Assets.xcassets/jm/mine_earnings_record.imageset/mine_earnings_record@3x.png new file mode 100644 index 00000000..5a0c3a91 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_earnings_record.imageset/mine_earnings_record@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_fans.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_fans.imageset/Contents.json new file mode 100644 index 00000000..53d13f87 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_fans.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_fans@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_fans@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_fans.imageset/mine_fans@2x.png b/YuMi/Assets.xcassets/jm/mine_fans.imageset/mine_fans@2x.png new file mode 100644 index 00000000..089a96ca Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_fans.imageset/mine_fans@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_fans.imageset/mine_fans@3x.png b/YuMi/Assets.xcassets/jm/mine_fans.imageset/mine_fans@3x.png new file mode 100644 index 00000000..94779356 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_fans.imageset/mine_fans@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_feedback.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_feedback.imageset/Contents.json new file mode 100644 index 00000000..eb950d4e --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_feedback.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_feedback@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_feedback@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_feedback.imageset/mine_feedback@2x.png b/YuMi/Assets.xcassets/jm/mine_feedback.imageset/mine_feedback@2x.png new file mode 100644 index 00000000..a4e8556f Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_feedback.imageset/mine_feedback@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_feedback.imageset/mine_feedback@3x.png b/YuMi/Assets.xcassets/jm/mine_feedback.imageset/mine_feedback@3x.png new file mode 100644 index 00000000..f5a7f9e9 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_feedback.imageset/mine_feedback@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_grade.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_grade.imageset/Contents.json new file mode 100644 index 00000000..6f2ac373 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_grade.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_grade@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_grade@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_grade.imageset/mine_grade@2x.png b/YuMi/Assets.xcassets/jm/mine_grade.imageset/mine_grade@2x.png new file mode 100644 index 00000000..5694b660 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_grade.imageset/mine_grade@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_grade.imageset/mine_grade@3x.png b/YuMi/Assets.xcassets/jm/mine_grade.imageset/mine_grade@3x.png new file mode 100644 index 00000000..b71d559c Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_grade.imageset/mine_grade@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_head_account_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_head_account_bg.imageset/Contents.json new file mode 100644 index 00000000..ef2820df --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_head_account_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_head_account_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_head_account_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_head_account_bg.imageset/mine_head_account_bg@2x.png b/YuMi/Assets.xcassets/jm/mine_head_account_bg.imageset/mine_head_account_bg@2x.png new file mode 100644 index 00000000..e0a82832 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_head_account_bg.imageset/mine_head_account_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_head_account_bg.imageset/mine_head_account_bg@3x.png b/YuMi/Assets.xcassets/jm/mine_head_account_bg.imageset/mine_head_account_bg@3x.png new file mode 100644 index 00000000..6a1ba26c Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_head_account_bg.imageset/mine_head_account_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_head_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_head_bg.imageset/Contents.json new file mode 100644 index 00000000..81606029 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_head_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_head_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_head_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_head_bg.imageset/mine_head_bg@2x.png b/YuMi/Assets.xcassets/jm/mine_head_bg.imageset/mine_head_bg@2x.png new file mode 100644 index 00000000..9979136e Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_head_bg.imageset/mine_head_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_head_bg.imageset/mine_head_bg@3x.png b/YuMi/Assets.xcassets/jm/mine_head_bg.imageset/mine_head_bg@3x.png new file mode 100644 index 00000000..2b48ae74 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_head_bg.imageset/mine_head_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_item_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_item_arrow.imageset/Contents.json new file mode 100644 index 00000000..d21f2655 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_item_arrow.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_item_arrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_item_arrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_item_arrow.imageset/mine_item_arrow@2x.png b/YuMi/Assets.xcassets/jm/mine_item_arrow.imageset/mine_item_arrow@2x.png new file mode 100644 index 00000000..103fa7b4 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_item_arrow.imageset/mine_item_arrow@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_item_arrow.imageset/mine_item_arrow@3x.png b/YuMi/Assets.xcassets/jm/mine_item_arrow.imageset/mine_item_arrow@3x.png new file mode 100644 index 00000000..33a7009b Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_item_arrow.imageset/mine_item_arrow@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_me_give.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_me_give.imageset/Contents.json new file mode 100644 index 00000000..8b69e089 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_me_give.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_me_give@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_me_give@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_me_give.imageset/mine_me_give@2x.png b/YuMi/Assets.xcassets/jm/mine_me_give.imageset/mine_me_give@2x.png new file mode 100644 index 00000000..36e7a858 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_me_give.imageset/mine_me_give@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_me_give.imageset/mine_me_give@3x.png b/YuMi/Assets.xcassets/jm/mine_me_give.imageset/mine_me_give@3x.png new file mode 100644 index 00000000..3b930137 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_me_give.imageset/mine_me_give@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_nav_setting.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_nav_setting.imageset/Contents.json new file mode 100644 index 00000000..499bacde --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_nav_setting.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_nav_setting@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_nav_setting@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_nav_setting.imageset/mine_nav_setting@2x.png b/YuMi/Assets.xcassets/jm/mine_nav_setting.imageset/mine_nav_setting@2x.png new file mode 100644 index 00000000..a676dbfe Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_nav_setting.imageset/mine_nav_setting@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_nav_setting.imageset/mine_nav_setting@3x.png b/YuMi/Assets.xcassets/jm/mine_nav_setting.imageset/mine_nav_setting@3x.png new file mode 100644 index 00000000..cba5b4ad Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_nav_setting.imageset/mine_nav_setting@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_noble_entrance_hadNoble.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_noble_entrance_hadNoble.imageset/Contents.json new file mode 100644 index 00000000..12294a19 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_noble_entrance_hadNoble.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_noble_entrance_hadNoble@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_noble_entrance_hadNoble@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_noble_entrance_hadNoble.imageset/mine_noble_entrance_hadNoble@2x.png b/YuMi/Assets.xcassets/jm/mine_noble_entrance_hadNoble.imageset/mine_noble_entrance_hadNoble@2x.png new file mode 100644 index 00000000..9b15780a Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_noble_entrance_hadNoble.imageset/mine_noble_entrance_hadNoble@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_noble_entrance_hadNoble.imageset/mine_noble_entrance_hadNoble@3x.png b/YuMi/Assets.xcassets/jm/mine_noble_entrance_hadNoble.imageset/mine_noble_entrance_hadNoble@3x.png new file mode 100644 index 00000000..9b437d42 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_noble_entrance_hadNoble.imageset/mine_noble_entrance_hadNoble@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_noble_entrance_noNoble.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_noble_entrance_noNoble.imageset/Contents.json new file mode 100644 index 00000000..f7af1d88 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_noble_entrance_noNoble.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_noble_entrance_noNoble@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_noble_entrance_noNoble@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_noble_entrance_noNoble.imageset/mine_noble_entrance_noNoble@2x.png b/YuMi/Assets.xcassets/jm/mine_noble_entrance_noNoble.imageset/mine_noble_entrance_noNoble@2x.png new file mode 100644 index 00000000..158b6289 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_noble_entrance_noNoble.imageset/mine_noble_entrance_noNoble@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_noble_entrance_noNoble.imageset/mine_noble_entrance_noNoble@3x.png b/YuMi/Assets.xcassets/jm/mine_noble_entrance_noNoble.imageset/mine_noble_entrance_noNoble@3x.png new file mode 100644 index 00000000..c6d5176e Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_noble_entrance_noNoble.imageset/mine_noble_entrance_noNoble@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_normal_skill_card.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_normal_skill_card.imageset/Contents.json new file mode 100644 index 00000000..0e358ca6 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_normal_skill_card.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_normal_skill_card@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_normal_skill_card@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_normal_skill_card.imageset/mine_normal_skill_card@2x.png b/YuMi/Assets.xcassets/jm/mine_normal_skill_card.imageset/mine_normal_skill_card@2x.png new file mode 100644 index 00000000..b63a5298 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_normal_skill_card.imageset/mine_normal_skill_card@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_normal_skill_card.imageset/mine_normal_skill_card@3x.png b/YuMi/Assets.xcassets/jm/mine_normal_skill_card.imageset/mine_normal_skill_card@3x.png new file mode 100644 index 00000000..8a6a3838 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_normal_skill_card.imageset/mine_normal_skill_card@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_personal_centermy_room.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_personal_centermy_room.imageset/Contents.json new file mode 100644 index 00000000..244c47bf --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_personal_centermy_room.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_personal_centermy_room@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_personal_centermy_room@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_personal_centermy_room.imageset/mine_personal_centermy_room@2x.png b/YuMi/Assets.xcassets/jm/mine_personal_centermy_room.imageset/mine_personal_centermy_room@2x.png new file mode 100644 index 00000000..c91a9b52 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_personal_centermy_room.imageset/mine_personal_centermy_room@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_personal_centermy_room.imageset/mine_personal_centermy_room@3x.png b/YuMi/Assets.xcassets/jm/mine_personal_centermy_room.imageset/mine_personal_centermy_room@3x.png new file mode 100644 index 00000000..5bfbda8e Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_personal_centermy_room.imageset/mine_personal_centermy_room@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_recharge_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_recharge_bg.imageset/Contents.json new file mode 100644 index 00000000..3b55cdbd --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_recharge_bg.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_recharge_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_recharge_bg.imageset/mine_recharge_bg@2x.png b/YuMi/Assets.xcassets/jm/mine_recharge_bg.imageset/mine_recharge_bg@2x.png new file mode 100644 index 00000000..2e6e48e9 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_recharge_bg.imageset/mine_recharge_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_recharge_coin_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_recharge_coin_bg.imageset/Contents.json new file mode 100644 index 00000000..3f1fa5ec --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_recharge_coin_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_recharge_coin_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_recharge_coin_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_recharge_coin_bg.imageset/mine_recharge_coin_bg@2x.png b/YuMi/Assets.xcassets/jm/mine_recharge_coin_bg.imageset/mine_recharge_coin_bg@2x.png new file mode 100644 index 00000000..abc3787a Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_recharge_coin_bg.imageset/mine_recharge_coin_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_recharge_coin_bg.imageset/mine_recharge_coin_bg@3x.png b/YuMi/Assets.xcassets/jm/mine_recharge_coin_bg.imageset/mine_recharge_coin_bg@3x.png new file mode 100644 index 00000000..7cb6c5a7 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_recharge_coin_bg.imageset/mine_recharge_coin_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_recharge_diamond.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_recharge_diamond.imageset/Contents.json new file mode 100644 index 00000000..a3aa0fba --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_recharge_diamond.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_recharge_diamond@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_recharge_diamond@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_recharge_diamond.imageset/mine_recharge_diamond@2x.png b/YuMi/Assets.xcassets/jm/mine_recharge_diamond.imageset/mine_recharge_diamond@2x.png new file mode 100644 index 00000000..4d2d2939 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_recharge_diamond.imageset/mine_recharge_diamond@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_recharge_diamond.imageset/mine_recharge_diamond@3x.png b/YuMi/Assets.xcassets/jm/mine_recharge_diamond.imageset/mine_recharge_diamond@3x.png new file mode 100644 index 00000000..ae6f6c88 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_recharge_diamond.imageset/mine_recharge_diamond@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_recharge_header_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_recharge_header_bg.imageset/Contents.json new file mode 100644 index 00000000..573a2376 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_recharge_header_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_recharge_header_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_recharge_header_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_recharge_header_bg.imageset/mine_recharge_header_bg@2x.png b/YuMi/Assets.xcassets/jm/mine_recharge_header_bg.imageset/mine_recharge_header_bg@2x.png new file mode 100644 index 00000000..c850278e Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_recharge_header_bg.imageset/mine_recharge_header_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_recharge_header_bg.imageset/mine_recharge_header_bg@3x.png b/YuMi/Assets.xcassets/jm/mine_recharge_header_bg.imageset/mine_recharge_header_bg@3x.png new file mode 100644 index 00000000..a5c60616 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_recharge_header_bg.imageset/mine_recharge_header_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_room.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_room.imageset/Contents.json new file mode 100644 index 00000000..a31ef6eb --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_room.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_room@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_room@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_room.imageset/mine_room@2x.png b/YuMi/Assets.xcassets/jm/mine_room.imageset/mine_room@2x.png new file mode 100644 index 00000000..798d119e Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_room.imageset/mine_room@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_room.imageset/mine_room@3x.png b/YuMi/Assets.xcassets/jm/mine_room.imageset/mine_room@3x.png new file mode 100644 index 00000000..ad0a112b Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_room.imageset/mine_room@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_setting.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_setting.imageset/Contents.json new file mode 100644 index 00000000..c2f3f575 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_setting.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_setting@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_setting@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_setting.imageset/mine_setting@2x.png b/YuMi/Assets.xcassets/jm/mine_setting.imageset/mine_setting@2x.png new file mode 100644 index 00000000..0ae29383 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_setting.imageset/mine_setting@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_setting.imageset/mine_setting@3x.png b/YuMi/Assets.xcassets/jm/mine_setting.imageset/mine_setting@3x.png new file mode 100644 index 00000000..cf6dd8aa Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_setting.imageset/mine_setting@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_teeager_alter_close.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_teeager_alter_close.imageset/Contents.json new file mode 100644 index 00000000..178cc45f --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_teeager_alter_close.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_teeager_alter_close@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_teeager_alter_close@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_teeager_alter_close.imageset/mine_teeager_alter_close@2x.png b/YuMi/Assets.xcassets/jm/mine_teeager_alter_close.imageset/mine_teeager_alter_close@2x.png new file mode 100644 index 00000000..973f7999 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_teeager_alter_close.imageset/mine_teeager_alter_close@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_teeager_alter_close.imageset/mine_teeager_alter_close@3x.png b/YuMi/Assets.xcassets/jm/mine_teeager_alter_close.imageset/mine_teeager_alter_close@3x.png new file mode 100644 index 00000000..e7715111 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_teeager_alter_close.imageset/mine_teeager_alter_close@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_union.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_union.imageset/Contents.json new file mode 100644 index 00000000..5a8c9cc6 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_union.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_union@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_union@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_union.imageset/mine_union@2x.png b/YuMi/Assets.xcassets/jm/mine_union.imageset/mine_union@2x.png new file mode 100644 index 00000000..03b404dd Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_union.imageset/mine_union@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_union.imageset/mine_union@3x.png b/YuMi/Assets.xcassets/jm/mine_union.imageset/mine_union@3x.png new file mode 100644 index 00000000..f26bb1d7 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_union.imageset/mine_union@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_user_id_copy.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_user_id_copy.imageset/Contents.json new file mode 100644 index 00000000..1a5f2396 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_user_id_copy.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_user_id_copy@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_user_id_copy@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_user_id_copy.imageset/mine_user_id_copy@2x.png b/YuMi/Assets.xcassets/jm/mine_user_id_copy.imageset/mine_user_id_copy@2x.png new file mode 100644 index 00000000..4a7c4315 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_user_id_copy.imageset/mine_user_id_copy@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_user_id_copy.imageset/mine_user_id_copy@3x.png b/YuMi/Assets.xcassets/jm/mine_user_id_copy.imageset/mine_user_id_copy@3x.png new file mode 100644 index 00000000..c53ab054 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_user_id_copy.imageset/mine_user_id_copy@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_user_id_copy_white.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_user_id_copy_white.imageset/Contents.json new file mode 100644 index 00000000..3c640c9d --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_user_id_copy_white.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_user_id_copy_white@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_user_id_copy_white@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_user_id_copy_white.imageset/mine_user_id_copy_white@2x.png b/YuMi/Assets.xcassets/jm/mine_user_id_copy_white.imageset/mine_user_id_copy_white@2x.png new file mode 100644 index 00000000..b95decb3 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_user_id_copy_white.imageset/mine_user_id_copy_white@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_user_id_copy_white.imageset/mine_user_id_copy_white@3x.png b/YuMi/Assets.xcassets/jm/mine_user_id_copy_white.imageset/mine_user_id_copy_white@3x.png new file mode 100644 index 00000000..5088d9a3 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_user_id_copy_white.imageset/mine_user_id_copy_white@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_album_add.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_user_info_album_add.imageset/Contents.json new file mode 100644 index 00000000..e0c2a92e --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_user_info_album_add.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_user_info_album_add@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_user_info_album_add@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_album_add.imageset/mine_user_info_album_add@2x.png b/YuMi/Assets.xcassets/jm/mine_user_info_album_add.imageset/mine_user_info_album_add@2x.png new file mode 100644 index 00000000..bb379184 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_user_info_album_add.imageset/mine_user_info_album_add@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_album_add.imageset/mine_user_info_album_add@3x.png b/YuMi/Assets.xcassets/jm/mine_user_info_album_add.imageset/mine_user_info_album_add@3x.png new file mode 100644 index 00000000..59df2c39 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_user_info_album_add.imageset/mine_user_info_album_add@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_bottom_attention_normal.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_user_info_bottom_attention_normal.imageset/Contents.json new file mode 100644 index 00000000..7130e4f1 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_user_info_bottom_attention_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_user_info_bottom_attention_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_user_info_bottom_attention_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_bottom_attention_normal.imageset/mine_user_info_bottom_attention_normal@2x.png b/YuMi/Assets.xcassets/jm/mine_user_info_bottom_attention_normal.imageset/mine_user_info_bottom_attention_normal@2x.png new file mode 100644 index 00000000..2e89bacd Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_user_info_bottom_attention_normal.imageset/mine_user_info_bottom_attention_normal@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_bottom_attention_normal.imageset/mine_user_info_bottom_attention_normal@3x.png b/YuMi/Assets.xcassets/jm/mine_user_info_bottom_attention_normal.imageset/mine_user_info_bottom_attention_normal@3x.png new file mode 100644 index 00000000..25ad6944 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_user_info_bottom_attention_normal.imageset/mine_user_info_bottom_attention_normal@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_bottom_attention_select.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_user_info_bottom_attention_select.imageset/Contents.json new file mode 100644 index 00000000..e4ce0f4a --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_user_info_bottom_attention_select.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_user_info_bottom_attention_select@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_user_info_bottom_attention_select@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_bottom_attention_select.imageset/mine_user_info_bottom_attention_select@2x.png b/YuMi/Assets.xcassets/jm/mine_user_info_bottom_attention_select.imageset/mine_user_info_bottom_attention_select@2x.png new file mode 100644 index 00000000..944e093b Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_user_info_bottom_attention_select.imageset/mine_user_info_bottom_attention_select@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_bottom_attention_select.imageset/mine_user_info_bottom_attention_select@3x.png b/YuMi/Assets.xcassets/jm/mine_user_info_bottom_attention_select.imageset/mine_user_info_bottom_attention_select@3x.png new file mode 100644 index 00000000..90cf42ed Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_user_info_bottom_attention_select.imageset/mine_user_info_bottom_attention_select@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_bottom_chat.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_user_info_bottom_chat.imageset/Contents.json new file mode 100644 index 00000000..967476cf --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_user_info_bottom_chat.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_user_info_bottom_chat@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_user_info_bottom_chat@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_bottom_chat.imageset/mine_user_info_bottom_chat@2x.png b/YuMi/Assets.xcassets/jm/mine_user_info_bottom_chat.imageset/mine_user_info_bottom_chat@2x.png new file mode 100644 index 00000000..80ea21a9 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_user_info_bottom_chat.imageset/mine_user_info_bottom_chat@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_bottom_chat.imageset/mine_user_info_bottom_chat@3x.png b/YuMi/Assets.xcassets/jm/mine_user_info_bottom_chat.imageset/mine_user_info_bottom_chat@3x.png new file mode 100644 index 00000000..132a027a Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_user_info_bottom_chat.imageset/mine_user_info_bottom_chat@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_edit.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_user_info_edit.imageset/Contents.json new file mode 100644 index 00000000..2f7932f3 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_user_info_edit.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_user_info_edit@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_user_info_edit@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_edit.imageset/mine_user_info_edit@2x.png b/YuMi/Assets.xcassets/jm/mine_user_info_edit.imageset/mine_user_info_edit@2x.png new file mode 100644 index 00000000..b1db8e55 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_user_info_edit.imageset/mine_user_info_edit@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_edit.imageset/mine_user_info_edit@3x.png b/YuMi/Assets.xcassets/jm/mine_user_info_edit.imageset/mine_user_info_edit@3x.png new file mode 100644 index 00000000..f18f5c52 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_user_info_edit.imageset/mine_user_info_edit@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_edit_clear.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_user_info_edit_clear.imageset/Contents.json new file mode 100644 index 00000000..0f9f58ac --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_user_info_edit_clear.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_user_info_edit_clear@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_user_info_edit_clear@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_edit_clear.imageset/mine_user_info_edit_clear@2x.png b/YuMi/Assets.xcassets/jm/mine_user_info_edit_clear.imageset/mine_user_info_edit_clear@2x.png new file mode 100644 index 00000000..365a329c Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_user_info_edit_clear.imageset/mine_user_info_edit_clear@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_edit_clear.imageset/mine_user_info_edit_clear@3x.png b/YuMi/Assets.xcassets/jm/mine_user_info_edit_clear.imageset/mine_user_info_edit_clear@3x.png new file mode 100644 index 00000000..c3f13c8a Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_user_info_edit_clear.imageset/mine_user_info_edit_clear@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_edit_photo_delete.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_user_info_edit_photo_delete.imageset/Contents.json new file mode 100644 index 00000000..d2440f23 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_user_info_edit_photo_delete.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_user_info_edit_photo_delete@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_user_info_edit_photo_delete@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_edit_photo_delete.imageset/mine_user_info_edit_photo_delete@2x.png b/YuMi/Assets.xcassets/jm/mine_user_info_edit_photo_delete.imageset/mine_user_info_edit_photo_delete@2x.png new file mode 100644 index 00000000..9e13fc00 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_user_info_edit_photo_delete.imageset/mine_user_info_edit_photo_delete@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_edit_photo_delete.imageset/mine_user_info_edit_photo_delete@3x.png b/YuMi/Assets.xcassets/jm/mine_user_info_edit_photo_delete.imageset/mine_user_info_edit_photo_delete@3x.png new file mode 100644 index 00000000..93000a57 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_user_info_edit_photo_delete.imageset/mine_user_info_edit_photo_delete@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_header_page_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_user_info_header_page_bg.imageset/Contents.json new file mode 100644 index 00000000..0f8de64e --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_user_info_header_page_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_user_info_header_page_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_user_info_header_page_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_header_page_bg.imageset/mine_user_info_header_page_bg@2x.png b/YuMi/Assets.xcassets/jm/mine_user_info_header_page_bg.imageset/mine_user_info_header_page_bg@2x.png new file mode 100644 index 00000000..d03a80a5 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_user_info_header_page_bg.imageset/mine_user_info_header_page_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_header_page_bg.imageset/mine_user_info_header_page_bg@3x.png b/YuMi/Assets.xcassets/jm/mine_user_info_header_page_bg.imageset/mine_user_info_header_page_bg@3x.png new file mode 100644 index 00000000..7b1cd683 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_user_info_header_page_bg.imageset/mine_user_info_header_page_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_skill_card_voice_pause.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_user_info_skill_card_voice_pause.imageset/Contents.json new file mode 100644 index 00000000..8f06210e --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_user_info_skill_card_voice_pause.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_user_info_skill_card_voice_pause@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_user_info_skill_card_voice_pause@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_skill_card_voice_pause.imageset/mine_user_info_skill_card_voice_pause@2x.png b/YuMi/Assets.xcassets/jm/mine_user_info_skill_card_voice_pause.imageset/mine_user_info_skill_card_voice_pause@2x.png new file mode 100644 index 00000000..2c216851 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_user_info_skill_card_voice_pause.imageset/mine_user_info_skill_card_voice_pause@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_skill_card_voice_pause.imageset/mine_user_info_skill_card_voice_pause@3x.png b/YuMi/Assets.xcassets/jm/mine_user_info_skill_card_voice_pause.imageset/mine_user_info_skill_card_voice_pause@3x.png new file mode 100644 index 00000000..9fb35b86 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_user_info_skill_card_voice_pause.imageset/mine_user_info_skill_card_voice_pause@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_skill_card_voice_play.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_user_info_skill_card_voice_play.imageset/Contents.json new file mode 100644 index 00000000..1dde4ffb --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_user_info_skill_card_voice_play.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_user_info_skill_card_voice_play@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_user_info_skill_card_voice_play@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_skill_card_voice_play.imageset/mine_user_info_skill_card_voice_play@2x.png b/YuMi/Assets.xcassets/jm/mine_user_info_skill_card_voice_play.imageset/mine_user_info_skill_card_voice_play@2x.png new file mode 100644 index 00000000..737f36bf Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_user_info_skill_card_voice_play.imageset/mine_user_info_skill_card_voice_play@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_user_info_skill_card_voice_play.imageset/mine_user_info_skill_card_voice_play@3x.png b/YuMi/Assets.xcassets/jm/mine_user_info_skill_card_voice_play.imageset/mine_user_info_skill_card_voice_play@3x.png new file mode 100644 index 00000000..c185e166 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_user_info_skill_card_voice_play.imageset/mine_user_info_skill_card_voice_play@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_userinfo_header_shadow_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_userinfo_header_shadow_bg.imageset/Contents.json new file mode 100644 index 00000000..d2843ab4 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_userinfo_header_shadow_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_userinfo_header_shadow_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_userinfo_header_shadow_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_userinfo_header_shadow_bg.imageset/mine_userinfo_header_shadow_bg@2x.png b/YuMi/Assets.xcassets/jm/mine_userinfo_header_shadow_bg.imageset/mine_userinfo_header_shadow_bg@2x.png new file mode 100644 index 00000000..de9a9286 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_userinfo_header_shadow_bg.imageset/mine_userinfo_header_shadow_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_userinfo_header_shadow_bg.imageset/mine_userinfo_header_shadow_bg@3x.png b/YuMi/Assets.xcassets/jm/mine_userinfo_header_shadow_bg.imageset/mine_userinfo_header_shadow_bg@3x.png new file mode 100644 index 00000000..fb4d1245 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_userinfo_header_shadow_bg.imageset/mine_userinfo_header_shadow_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_wallet.imageset/Contents.json b/YuMi/Assets.xcassets/jm/mine_wallet.imageset/Contents.json new file mode 100644 index 00000000..bcd96a1a --- /dev/null +++ b/YuMi/Assets.xcassets/jm/mine_wallet.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_wallet@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_wallet@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/mine_wallet.imageset/mine_wallet@2x.png b/YuMi/Assets.xcassets/jm/mine_wallet.imageset/mine_wallet@2x.png new file mode 100644 index 00000000..1ae4ecc1 Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_wallet.imageset/mine_wallet@2x.png differ diff --git a/YuMi/Assets.xcassets/jm/mine_wallet.imageset/mine_wallet@3x.png b/YuMi/Assets.xcassets/jm/mine_wallet.imageset/mine_wallet@3x.png new file mode 100644 index 00000000..708b153e Binary files /dev/null and b/YuMi/Assets.xcassets/jm/mine_wallet.imageset/mine_wallet@3x.png differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_album_reviewing.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_album_reviewing.imageset/Contents.json deleted file mode 100644 index b043ec7b..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_album_reviewing.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_album_reviewing@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_album_reviewing@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_album_reviewing.imageset/yumi_center_album_reviewing@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_album_reviewing.imageset/yumi_center_album_reviewing@2x.png deleted file mode 100644 index 5e2db3c5..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_album_reviewing.imageset/yumi_center_album_reviewing@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_album_reviewing.imageset/yumi_center_album_reviewing@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_album_reviewing.imageset/yumi_center_album_reviewing@3x.png deleted file mode 100644 index 8a564ae7..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_album_reviewing.imageset/yumi_center_album_reviewing@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_avatar_reviewing.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_avatar_reviewing.imageset/Contents.json deleted file mode 100644 index 649b9a03..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_avatar_reviewing.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_avatar_reviewing@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_avatar_reviewing@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_avatar_reviewing.imageset/yumi_center_avatar_reviewing@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_avatar_reviewing.imageset/yumi_center_avatar_reviewing@2x.png deleted file mode 100644 index 40710779..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_avatar_reviewing.imageset/yumi_center_avatar_reviewing@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_avatar_reviewing.imageset/yumi_center_avatar_reviewing@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_avatar_reviewing.imageset/yumi_center_avatar_reviewing@3x.png deleted file mode 100644 index 797c30c2..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_avatar_reviewing.imageset/yumi_center_avatar_reviewing@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_collection.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_collection.imageset/Contents.json deleted file mode 100644 index c039fb33..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_collection.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_collection@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_collection@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_collection.imageset/yumi_center_collection@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_collection.imageset/yumi_center_collection@2x.png deleted file mode 100644 index 5edaf850..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_collection.imageset/yumi_center_collection@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_collection.imageset/yumi_center_collection@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_collection.imageset/yumi_center_collection@3x.png deleted file mode 100644 index 93109753..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_collection.imageset/yumi_center_collection@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_dress.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_dress.imageset/Contents.json deleted file mode 100644 index 1fc36d0d..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_dress.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_dress@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_dress@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_dress.imageset/yumi_center_dress@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_dress.imageset/yumi_center_dress@2x.png deleted file mode 100644 index 6415cd7a..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_dress.imageset/yumi_center_dress@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_dress.imageset/yumi_center_dress@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_dress.imageset/yumi_center_dress@3x.png deleted file mode 100644 index e109d4ed..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_dress.imageset/yumi_center_dress@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_earnings_record.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_earnings_record.imageset/Contents.json deleted file mode 100644 index 9f1ff16b..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_earnings_record.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_earnings_record@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_earnings_record@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_earnings_record.imageset/yumi_center_earnings_record@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_earnings_record.imageset/yumi_center_earnings_record@2x.png deleted file mode 100644 index f6f11164..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_earnings_record.imageset/yumi_center_earnings_record@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_earnings_record.imageset/yumi_center_earnings_record@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_earnings_record.imageset/yumi_center_earnings_record@3x.png deleted file mode 100644 index 83c4a4f7..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_earnings_record.imageset/yumi_center_earnings_record@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_fans.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_fans.imageset/Contents.json deleted file mode 100644 index dd51222c..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_fans.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_fans@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_fans@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_fans.imageset/yumi_center_fans@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_fans.imageset/yumi_center_fans@2x.png deleted file mode 100644 index ef9760f9..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_fans.imageset/yumi_center_fans@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_fans.imageset/yumi_center_fans@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_fans.imageset/yumi_center_fans@3x.png deleted file mode 100644 index 77ee4a88..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_fans.imageset/yumi_center_fans@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_feedback.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_feedback.imageset/Contents.json deleted file mode 100644 index 31c899ff..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_feedback.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_feedback@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_feedback@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_feedback.imageset/yumi_center_feedback@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_feedback.imageset/yumi_center_feedback@2x.png deleted file mode 100644 index a66e63ad..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_feedback.imageset/yumi_center_feedback@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_feedback.imageset/yumi_center_feedback@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_feedback.imageset/yumi_center_feedback@3x.png deleted file mode 100644 index 1d143c82..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_feedback.imageset/yumi_center_feedback@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_grade.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_grade.imageset/Contents.json deleted file mode 100644 index 8949965d..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_grade.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_grade@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_grade@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_grade.imageset/yumi_center_grade@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_grade.imageset/yumi_center_grade@2x.png deleted file mode 100644 index 970517dd..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_grade.imageset/yumi_center_grade@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_grade.imageset/yumi_center_grade@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_grade.imageset/yumi_center_grade@3x.png deleted file mode 100644 index d030725b..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_grade.imageset/yumi_center_grade@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_grand_entrance_hadNoble.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_grand_entrance_hadNoble.imageset/Contents.json deleted file mode 100644 index 3c3455f2..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_grand_entrance_hadNoble.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_grand_entrance_hadNoble@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_grand_entrance_hadNoble@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_grand_entrance_hadNoble.imageset/yumi_center_grand_entrance_hadNoble@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_grand_entrance_hadNoble.imageset/yumi_center_grand_entrance_hadNoble@2x.png deleted file mode 100644 index 9ebdc5a6..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_grand_entrance_hadNoble.imageset/yumi_center_grand_entrance_hadNoble@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_grand_entrance_hadNoble.imageset/yumi_center_grand_entrance_hadNoble@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_grand_entrance_hadNoble.imageset/yumi_center_grand_entrance_hadNoble@3x.png deleted file mode 100644 index a9ffe96a..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_grand_entrance_hadNoble.imageset/yumi_center_grand_entrance_hadNoble@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_grand_entrance_noNoble.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_grand_entrance_noNoble.imageset/Contents.json deleted file mode 100644 index bff4c873..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_grand_entrance_noNoble.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_grand_entrance_noNoble@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_grand_entrance_noNoble@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_grand_entrance_noNoble.imageset/yumi_center_grand_entrance_noNoble@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_grand_entrance_noNoble.imageset/yumi_center_grand_entrance_noNoble@2x.png deleted file mode 100644 index f2c464df..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_grand_entrance_noNoble.imageset/yumi_center_grand_entrance_noNoble@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_grand_entrance_noNoble.imageset/yumi_center_grand_entrance_noNoble@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_grand_entrance_noNoble.imageset/yumi_center_grand_entrance_noNoble@3x.png deleted file mode 100644 index afc7c081..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_grand_entrance_noNoble.imageset/yumi_center_grand_entrance_noNoble@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_head_account_background.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_head_account_background.imageset/Contents.json deleted file mode 100644 index 3573db4d..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_head_account_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_head_account_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_head_account_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_head_account_background.imageset/yumi_center_head_account_background@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_head_account_background.imageset/yumi_center_head_account_background@2x.png deleted file mode 100644 index b85dc6e4..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_head_account_background.imageset/yumi_center_head_account_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_head_account_background.imageset/yumi_center_head_account_background@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_head_account_background.imageset/yumi_center_head_account_background@3x.png deleted file mode 100644 index ae0264ab..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_head_account_background.imageset/yumi_center_head_account_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_head_background.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_head_background.imageset/Contents.json deleted file mode 100644 index 50733f4f..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_head_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_head_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_head_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_head_background.imageset/yumi_center_head_background@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_head_background.imageset/yumi_center_head_background@2x.png deleted file mode 100644 index d2db86ba..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_head_background.imageset/yumi_center_head_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_head_background.imageset/yumi_center_head_background@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_head_background.imageset/yumi_center_head_background@3x.png deleted file mode 100644 index db28a275..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_head_background.imageset/yumi_center_head_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_item_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_item_arrow.imageset/Contents.json deleted file mode 100644 index 956d96d0..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_item_arrow.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_item_arrow@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_item_arrow@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_item_arrow.imageset/yumi_center_item_arrow@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_item_arrow.imageset/yumi_center_item_arrow@2x.png deleted file mode 100644 index 04fd9842..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_item_arrow.imageset/yumi_center_item_arrow@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_item_arrow.imageset/yumi_center_item_arrow@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_item_arrow.imageset/yumi_center_item_arrow@3x.png deleted file mode 100644 index 331c7dcf..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_item_arrow.imageset/yumi_center_item_arrow@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_me_give.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_me_give.imageset/Contents.json deleted file mode 100644 index 67ba52b3..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_me_give.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_me_give@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_me_give@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_me_give.imageset/yumi_center_me_give@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_me_give.imageset/yumi_center_me_give@2x.png deleted file mode 100644 index 8b906367..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_me_give.imageset/yumi_center_me_give@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_me_give.imageset/yumi_center_me_give@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_me_give.imageset/yumi_center_me_give@3x.png deleted file mode 100644 index 5145ce7a..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_me_give.imageset/yumi_center_me_give@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_normal_skill_card.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_normal_skill_card.imageset/Contents.json deleted file mode 100644 index 5f1eaa44..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_normal_skill_card.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_normal_skill_card@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_normal_skill_card@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_normal_skill_card.imageset/yumi_center_normal_skill_card@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_normal_skill_card.imageset/yumi_center_normal_skill_card@2x.png deleted file mode 100644 index 6bb1e450..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_normal_skill_card.imageset/yumi_center_normal_skill_card@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_normal_skill_card.imageset/yumi_center_normal_skill_card@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_normal_skill_card.imageset/yumi_center_normal_skill_card@3x.png deleted file mode 100644 index 5702aef9..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_normal_skill_card.imageset/yumi_center_normal_skill_card@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_personal_centermy_room.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_personal_centermy_room.imageset/Contents.json deleted file mode 100644 index 1584900e..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_personal_centermy_room.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_personal_centermy_room@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_personal_centermy_room@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_personal_centermy_room.imageset/yumi_center_personal_centermy_room@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_personal_centermy_room.imageset/yumi_center_personal_centermy_room@2x.png deleted file mode 100644 index 601b1470..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_personal_centermy_room.imageset/yumi_center_personal_centermy_room@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_personal_centermy_room.imageset/yumi_center_personal_centermy_room@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_personal_centermy_room.imageset/yumi_center_personal_centermy_room@3x.png deleted file mode 100644 index d6d13c00..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_personal_centermy_room.imageset/yumi_center_personal_centermy_room@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_recharge_background.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_recharge_background.imageset/Contents.json deleted file mode 100644 index 2f6c890d..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_recharge_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_recharge_background@2x.png", "idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_recharge_background.imageset/yumi_center_recharge_background@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_recharge_background.imageset/yumi_center_recharge_background@2x.png deleted file mode 100644 index 7ac54fd2..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_recharge_background.imageset/yumi_center_recharge_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_recharge_coin_background.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_recharge_coin_background.imageset/Contents.json deleted file mode 100644 index 212d83ef..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_recharge_coin_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_recharge_coin_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_recharge_coin_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_recharge_coin_background.imageset/yumi_center_recharge_coin_background@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_recharge_coin_background.imageset/yumi_center_recharge_coin_background@2x.png deleted file mode 100644 index e00304a8..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_recharge_coin_background.imageset/yumi_center_recharge_coin_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_recharge_coin_background.imageset/yumi_center_recharge_coin_background@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_recharge_coin_background.imageset/yumi_center_recharge_coin_background@3x.png deleted file mode 100644 index cd6dcda7..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_recharge_coin_background.imageset/yumi_center_recharge_coin_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_recharge_diamond.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_recharge_diamond.imageset/Contents.json deleted file mode 100644 index 21456dfb..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_recharge_diamond.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_recharge_diamond@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_recharge_diamond@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_recharge_diamond.imageset/yumi_center_recharge_diamond@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_recharge_diamond.imageset/yumi_center_recharge_diamond@2x.png deleted file mode 100644 index dc5b0741..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_recharge_diamond.imageset/yumi_center_recharge_diamond@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_recharge_diamond.imageset/yumi_center_recharge_diamond@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_recharge_diamond.imageset/yumi_center_recharge_diamond@3x.png deleted file mode 100644 index cb7bbef3..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_recharge_diamond.imageset/yumi_center_recharge_diamond@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_recharge_header_background.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_recharge_header_background.imageset/Contents.json deleted file mode 100644 index e44c749b..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_recharge_header_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_recharge_header_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_recharge_header_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_recharge_header_background.imageset/yumi_center_recharge_header_background@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_recharge_header_background.imageset/yumi_center_recharge_header_background@2x.png deleted file mode 100644 index 701372b4..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_recharge_header_background.imageset/yumi_center_recharge_header_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_recharge_header_background.imageset/yumi_center_recharge_header_background@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_recharge_header_background.imageset/yumi_center_recharge_header_background@3x.png deleted file mode 100644 index 43ec48c7..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_recharge_header_background.imageset/yumi_center_recharge_header_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_room.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_room.imageset/Contents.json deleted file mode 100644 index 0c62347b..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_room.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_room@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_room@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_room.imageset/yumi_center_room@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_room.imageset/yumi_center_room@2x.png deleted file mode 100644 index abb6c0eb..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_room.imageset/yumi_center_room@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_room.imageset/yumi_center_room@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_room.imageset/yumi_center_room@3x.png deleted file mode 100644 index ed036144..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_room.imageset/yumi_center_room@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_setting.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_setting.imageset/Contents.json deleted file mode 100644 index c2fb26c4..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_setting.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_setting@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_setting@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_setting.imageset/yumi_center_setting@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_setting.imageset/yumi_center_setting@2x.png deleted file mode 100644 index 9d2fbf69..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_setting.imageset/yumi_center_setting@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_setting.imageset/yumi_center_setting@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_setting.imageset/yumi_center_setting@3x.png deleted file mode 100644 index b5e88c0b..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_setting.imageset/yumi_center_setting@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_teeager_alter_close.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_teeager_alter_close.imageset/Contents.json deleted file mode 100644 index e8b0342d..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_teeager_alter_close.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_teeager_alter_close@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_teeager_alter_close@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_teeager_alter_close.imageset/yumi_center_teeager_alter_close@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_teeager_alter_close.imageset/yumi_center_teeager_alter_close@2x.png deleted file mode 100644 index 456463aa..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_teeager_alter_close.imageset/yumi_center_teeager_alter_close@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_teeager_alter_close.imageset/yumi_center_teeager_alter_close@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_teeager_alter_close.imageset/yumi_center_teeager_alter_close@3x.png deleted file mode 100644 index be0869a9..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_teeager_alter_close.imageset/yumi_center_teeager_alter_close@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_title_setting.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_title_setting.imageset/Contents.json deleted file mode 100644 index 61843247..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_title_setting.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_title_setting@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_title_setting@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_title_setting.imageset/yumi_center_title_setting@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_title_setting.imageset/yumi_center_title_setting@2x.png deleted file mode 100644 index a8b861e4..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_title_setting.imageset/yumi_center_title_setting@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_title_setting.imageset/yumi_center_title_setting@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_title_setting.imageset/yumi_center_title_setting@3x.png deleted file mode 100644 index 8f9ee2de..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_title_setting.imageset/yumi_center_title_setting@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_union.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_union.imageset/Contents.json deleted file mode 100644 index c3b10988..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_union.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_union@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_union@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_union.imageset/yumi_center_union@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_union.imageset/yumi_center_union@2x.png deleted file mode 100644 index f98e9b00..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_union.imageset/yumi_center_union@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_union.imageset/yumi_center_union@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_union.imageset/yumi_center_union@3x.png deleted file mode 100644 index 56b7b7e4..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_union.imageset/yumi_center_union@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_album_add.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_album_add.imageset/Contents.json deleted file mode 100644 index 4ae42eec..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_album_add.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_user_gen_album_add@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_user_gen_album_add@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_album_add.imageset/yumi_center_user_gen_album_add@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_album_add.imageset/yumi_center_user_gen_album_add@2x.png deleted file mode 100644 index 87770c1f..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_album_add.imageset/yumi_center_user_gen_album_add@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_album_add.imageset/yumi_center_user_gen_album_add@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_album_add.imageset/yumi_center_user_gen_album_add@3x.png deleted file mode 100644 index 9b979294..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_album_add.imageset/yumi_center_user_gen_album_add@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_attention_normal.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_attention_normal.imageset/Contents.json deleted file mode 100644 index b2ff29f3..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_attention_normal.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_user_gen_bottom_attention_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_user_gen_bottom_attention_normal@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_attention_normal.imageset/yumi_center_user_gen_bottom_attention_normal@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_attention_normal.imageset/yumi_center_user_gen_bottom_attention_normal@2x.png deleted file mode 100644 index f812adb6..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_attention_normal.imageset/yumi_center_user_gen_bottom_attention_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_attention_normal.imageset/yumi_center_user_gen_bottom_attention_normal@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_attention_normal.imageset/yumi_center_user_gen_bottom_attention_normal@3x.png deleted file mode 100644 index a57cef64..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_attention_normal.imageset/yumi_center_user_gen_bottom_attention_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_attention_select.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_attention_select.imageset/Contents.json deleted file mode 100644 index ae550664..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_attention_select.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_user_gen_bottom_attention_select@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_user_gen_bottom_attention_select@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_attention_select.imageset/yumi_center_user_gen_bottom_attention_select@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_attention_select.imageset/yumi_center_user_gen_bottom_attention_select@2x.png deleted file mode 100644 index 73caafa1..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_attention_select.imageset/yumi_center_user_gen_bottom_attention_select@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_attention_select.imageset/yumi_center_user_gen_bottom_attention_select@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_attention_select.imageset/yumi_center_user_gen_bottom_attention_select@3x.png deleted file mode 100644 index edd11862..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_attention_select.imageset/yumi_center_user_gen_bottom_attention_select@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_chat.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_chat.imageset/Contents.json deleted file mode 100644 index 2a5192e6..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_chat.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_user_gen_bottom_chat@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_user_gen_bottom_chat@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_chat.imageset/yumi_center_user_gen_bottom_chat@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_chat.imageset/yumi_center_user_gen_bottom_chat@2x.png deleted file mode 100644 index d460c495..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_chat.imageset/yumi_center_user_gen_bottom_chat@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_chat.imageset/yumi_center_user_gen_bottom_chat@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_chat.imageset/yumi_center_user_gen_bottom_chat@3x.png deleted file mode 100644 index d065b413..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_bottom_chat.imageset/yumi_center_user_gen_bottom_chat@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit.imageset/Contents.json deleted file mode 100644 index 49484a7c..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_user_gen_edit@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_user_gen_edit@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit.imageset/yumi_center_user_gen_edit@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit.imageset/yumi_center_user_gen_edit@2x.png deleted file mode 100644 index 58769e83..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit.imageset/yumi_center_user_gen_edit@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit.imageset/yumi_center_user_gen_edit@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit.imageset/yumi_center_user_gen_edit@3x.png deleted file mode 100644 index a7138e78..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit.imageset/yumi_center_user_gen_edit@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit_clear.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit_clear.imageset/Contents.json deleted file mode 100644 index bd5cbc56..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit_clear.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_user_gen_edit_clear@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_user_gen_edit_clear@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit_clear.imageset/yumi_center_user_gen_edit_clear@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit_clear.imageset/yumi_center_user_gen_edit_clear@2x.png deleted file mode 100644 index b7bdbc83..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit_clear.imageset/yumi_center_user_gen_edit_clear@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit_clear.imageset/yumi_center_user_gen_edit_clear@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit_clear.imageset/yumi_center_user_gen_edit_clear@3x.png deleted file mode 100644 index 2edc9acd..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit_clear.imageset/yumi_center_user_gen_edit_clear@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit_photo_delete.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit_photo_delete.imageset/Contents.json deleted file mode 100644 index 5a418ab2..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit_photo_delete.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_user_gen_edit_photo_delete@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_user_gen_edit_photo_delete@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit_photo_delete.imageset/yumi_center_user_gen_edit_photo_delete@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit_photo_delete.imageset/yumi_center_user_gen_edit_photo_delete@2x.png deleted file mode 100644 index 01144467..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit_photo_delete.imageset/yumi_center_user_gen_edit_photo_delete@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit_photo_delete.imageset/yumi_center_user_gen_edit_photo_delete@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit_photo_delete.imageset/yumi_center_user_gen_edit_photo_delete@3x.png deleted file mode 100644 index 06478617..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_edit_photo_delete.imageset/yumi_center_user_gen_edit_photo_delete@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_header_page_background.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_header_page_background.imageset/Contents.json deleted file mode 100644 index 1c43fece..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_header_page_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_user_gen_header_page_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_user_gen_header_page_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_header_page_background.imageset/yumi_center_user_gen_header_page_background@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_header_page_background.imageset/yumi_center_user_gen_header_page_background@2x.png deleted file mode 100644 index 2d338f7c..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_header_page_background.imageset/yumi_center_user_gen_header_page_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_header_page_background.imageset/yumi_center_user_gen_header_page_background@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_header_page_background.imageset/yumi_center_user_gen_header_page_background@3x.png deleted file mode 100644 index a67f9307..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_header_page_background.imageset/yumi_center_user_gen_header_page_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_skill_card_voice_pause.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_skill_card_voice_pause.imageset/Contents.json deleted file mode 100644 index f73cf1dd..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_skill_card_voice_pause.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_user_gen_skill_card_voice_pause@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_user_gen_skill_card_voice_pause@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_skill_card_voice_pause.imageset/yumi_center_user_gen_skill_card_voice_pause@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_skill_card_voice_pause.imageset/yumi_center_user_gen_skill_card_voice_pause@2x.png deleted file mode 100644 index ee96035d..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_skill_card_voice_pause.imageset/yumi_center_user_gen_skill_card_voice_pause@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_skill_card_voice_pause.imageset/yumi_center_user_gen_skill_card_voice_pause@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_skill_card_voice_pause.imageset/yumi_center_user_gen_skill_card_voice_pause@3x.png deleted file mode 100644 index 567bf662..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_skill_card_voice_pause.imageset/yumi_center_user_gen_skill_card_voice_pause@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_skill_card_voice_play.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_skill_card_voice_play.imageset/Contents.json deleted file mode 100644 index 1fdddd46..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_skill_card_voice_play.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_user_gen_skill_card_voice_play@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_user_gen_skill_card_voice_play@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_skill_card_voice_play.imageset/yumi_center_user_gen_skill_card_voice_play@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_skill_card_voice_play.imageset/yumi_center_user_gen_skill_card_voice_play@2x.png deleted file mode 100644 index 8ddcdbc5..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_skill_card_voice_play.imageset/yumi_center_user_gen_skill_card_voice_play@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_skill_card_voice_play.imageset/yumi_center_user_gen_skill_card_voice_play@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_user_gen_skill_card_voice_play.imageset/yumi_center_user_gen_skill_card_voice_play@3x.png deleted file mode 100644 index c6be196b..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_user_gen_skill_card_voice_play.imageset/yumi_center_user_gen_skill_card_voice_play@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_id_copy.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_user_id_copy.imageset/Contents.json deleted file mode 100644 index 7f7c2de2..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_user_id_copy.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_user_id_copy@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_user_id_copy@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_id_copy.imageset/yumi_center_user_id_copy@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_user_id_copy.imageset/yumi_center_user_id_copy@2x.png deleted file mode 100644 index 4a53217e..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_user_id_copy.imageset/yumi_center_user_id_copy@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_id_copy.imageset/yumi_center_user_id_copy@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_user_id_copy.imageset/yumi_center_user_id_copy@3x.png deleted file mode 100644 index 36840899..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_user_id_copy.imageset/yumi_center_user_id_copy@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_id_copy_white.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_user_id_copy_white.imageset/Contents.json deleted file mode 100644 index dff9ab72..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_user_id_copy_white.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_user_id_copy_white@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_user_id_copy_white@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_id_copy_white.imageset/yumi_center_user_id_copy_white@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_user_id_copy_white.imageset/yumi_center_user_id_copy_white@2x.png deleted file mode 100644 index 5e21fbbf..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_user_id_copy_white.imageset/yumi_center_user_id_copy_white@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_user_id_copy_white.imageset/yumi_center_user_id_copy_white@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_user_id_copy_white.imageset/yumi_center_user_id_copy_white@3x.png deleted file mode 100644 index 0300cd66..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_user_id_copy_white.imageset/yumi_center_user_id_copy_white@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_usergen_header_shadow_background.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_usergen_header_shadow_background.imageset/Contents.json deleted file mode 100644 index 4e063006..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_usergen_header_shadow_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_usergen_header_shadow_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_usergen_header_shadow_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_usergen_header_shadow_background.imageset/yumi_center_usergen_header_shadow_background@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_usergen_header_shadow_background.imageset/yumi_center_usergen_header_shadow_background@2x.png deleted file mode 100644 index 5169f8b3..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_usergen_header_shadow_background.imageset/yumi_center_usergen_header_shadow_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_usergen_header_shadow_background.imageset/yumi_center_usergen_header_shadow_background@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_usergen_header_shadow_background.imageset/yumi_center_usergen_header_shadow_background@3x.png deleted file mode 100644 index e7161c07..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_usergen_header_shadow_background.imageset/yumi_center_usergen_header_shadow_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_wallet.imageset/Contents.json b/YuMi/Assets.xcassets/jm/yumi_center_wallet.imageset/Contents.json deleted file mode 100644 index b611fa46..00000000 --- a/YuMi/Assets.xcassets/jm/yumi_center_wallet.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_center_wallet@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_center_wallet@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/jm/yumi_center_wallet.imageset/yumi_center_wallet@2x.png b/YuMi/Assets.xcassets/jm/yumi_center_wallet.imageset/yumi_center_wallet@2x.png deleted file mode 100644 index b7efa50f..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_wallet.imageset/yumi_center_wallet@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/jm/yumi_center_wallet.imageset/yumi_center_wallet@3x.png b/YuMi/Assets.xcassets/jm/yumi_center_wallet.imageset/yumi_center_wallet@3x.png deleted file mode 100644 index 7d834f98..00000000 Binary files a/YuMi/Assets.xcassets/jm/yumi_center_wallet.imageset/yumi_center_wallet@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Contents.json b/YuMi/Assets.xcassets/low/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/low/Contents.json +++ b/YuMi/Assets.xcassets/low/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/Greet/Contents.json b/YuMi/Assets.xcassets/low/Greet/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/low/Greet/Contents.json +++ b/YuMi/Assets.xcassets/low/Greet/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_icon.imageset/Contents.json b/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_icon.imageset/Contents.json new file mode 100644 index 00000000..80d98449 --- /dev/null +++ b/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_new_user_greet_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_new_user_greet_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_icon.imageset/home_new_user_greet_icon@2x.png b/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_icon.imageset/home_new_user_greet_icon@2x.png new file mode 100644 index 00000000..02dc9ee5 Binary files /dev/null and b/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_icon.imageset/home_new_user_greet_icon@2x.png differ diff --git a/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_icon.imageset/home_new_user_greet_icon@3x.png b/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_icon.imageset/home_new_user_greet_icon@3x.png new file mode 100644 index 00000000..b8de4a4d Binary files /dev/null and b/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_icon.imageset/home_new_user_greet_icon@3x.png differ diff --git a/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_start.imageset/Contents.json b/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_start.imageset/Contents.json new file mode 100644 index 00000000..f655d3f3 --- /dev/null +++ b/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_start.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_new_user_greet_start@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_new_user_greet_start@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_start.imageset/home_new_user_greet_start@2x.png b/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_start.imageset/home_new_user_greet_start@2x.png new file mode 100644 index 00000000..92ba52bb Binary files /dev/null and b/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_start.imageset/home_new_user_greet_start@2x.png differ diff --git a/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_start.imageset/home_new_user_greet_start@3x.png b/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_start.imageset/home_new_user_greet_start@3x.png new file mode 100644 index 00000000..a68cbeeb Binary files /dev/null and b/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_start.imageset/home_new_user_greet_start@3x.png differ diff --git a/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_wave.imageset/Contents.json b/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_wave.imageset/Contents.json new file mode 100644 index 00000000..55ab8bf5 --- /dev/null +++ b/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_wave.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_new_user_greet_wave@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_new_user_greet_wave@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_wave.imageset/home_new_user_greet_wave@2x.png b/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_wave.imageset/home_new_user_greet_wave@2x.png new file mode 100644 index 00000000..2879f6f6 Binary files /dev/null and b/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_wave.imageset/home_new_user_greet_wave@2x.png differ diff --git a/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_wave.imageset/home_new_user_greet_wave@3x.png b/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_wave.imageset/home_new_user_greet_wave@3x.png new file mode 100644 index 00000000..951b2c57 Binary files /dev/null and b/YuMi/Assets.xcassets/low/Greet/home_new_user_greet_wave.imageset/home_new_user_greet_wave@3x.png differ diff --git a/YuMi/Assets.xcassets/low/Greet/room_new_user_greet_bg.imageset/Contents.json b/YuMi/Assets.xcassets/low/Greet/room_new_user_greet_bg.imageset/Contents.json new file mode 100644 index 00000000..05da95ad --- /dev/null +++ b/YuMi/Assets.xcassets/low/Greet/room_new_user_greet_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_new_user_greet_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_new_user_greet_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/Greet/room_new_user_greet_bg.imageset/room_new_user_greet_bg@2x.png b/YuMi/Assets.xcassets/low/Greet/room_new_user_greet_bg.imageset/room_new_user_greet_bg@2x.png new file mode 100644 index 00000000..92b80312 Binary files /dev/null and b/YuMi/Assets.xcassets/low/Greet/room_new_user_greet_bg.imageset/room_new_user_greet_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/low/Greet/room_new_user_greet_bg.imageset/room_new_user_greet_bg@3x.png b/YuMi/Assets.xcassets/low/Greet/room_new_user_greet_bg.imageset/room_new_user_greet_bg@3x.png new file mode 100644 index 00000000..48fd677b Binary files /dev/null and b/YuMi/Assets.xcassets/low/Greet/room_new_user_greet_bg.imageset/room_new_user_greet_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/low/Greet/room_new_user_greet_new.imageset/Contents.json b/YuMi/Assets.xcassets/low/Greet/room_new_user_greet_new.imageset/Contents.json new file mode 100644 index 00000000..27bd67a7 --- /dev/null +++ b/YuMi/Assets.xcassets/low/Greet/room_new_user_greet_new.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_new_user_greet_new@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_new_user_greet_new@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/Greet/room_new_user_greet_new.imageset/room_new_user_greet_new@2x.png b/YuMi/Assets.xcassets/low/Greet/room_new_user_greet_new.imageset/room_new_user_greet_new@2x.png new file mode 100644 index 00000000..d92690af Binary files /dev/null and b/YuMi/Assets.xcassets/low/Greet/room_new_user_greet_new.imageset/room_new_user_greet_new@2x.png differ diff --git a/YuMi/Assets.xcassets/low/Greet/room_new_user_greet_new.imageset/room_new_user_greet_new@3x.png b/YuMi/Assets.xcassets/low/Greet/room_new_user_greet_new.imageset/room_new_user_greet_new@3x.png new file mode 100644 index 00000000..47b34244 Binary files /dev/null and b/YuMi/Assets.xcassets/low/Greet/room_new_user_greet_new.imageset/room_new_user_greet_new@3x.png differ diff --git a/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_pic.imageset/Contents.json b/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_pic.imageset/Contents.json deleted file mode 100644 index 3225a8a9..00000000 --- a/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_pic.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_new_user_greet_pic@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_new_user_greet_pic@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_pic.imageset/yumi_main_new_user_greet_pic@2x.png b/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_pic.imageset/yumi_main_new_user_greet_pic@2x.png deleted file mode 100644 index 00db5095..00000000 Binary files a/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_pic.imageset/yumi_main_new_user_greet_pic@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_pic.imageset/yumi_main_new_user_greet_pic@3x.png b/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_pic.imageset/yumi_main_new_user_greet_pic@3x.png deleted file mode 100644 index 7d1e2632..00000000 Binary files a/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_pic.imageset/yumi_main_new_user_greet_pic@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_start.imageset/Contents.json b/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_start.imageset/Contents.json deleted file mode 100644 index db66bf8a..00000000 --- a/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_start.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_new_user_greet_start@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_new_user_greet_start@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_start.imageset/yumi_main_new_user_greet_start@2x.png b/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_start.imageset/yumi_main_new_user_greet_start@2x.png deleted file mode 100644 index 698128e2..00000000 Binary files a/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_start.imageset/yumi_main_new_user_greet_start@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_start.imageset/yumi_main_new_user_greet_start@3x.png b/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_start.imageset/yumi_main_new_user_greet_start@3x.png deleted file mode 100644 index 9bd06005..00000000 Binary files a/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_start.imageset/yumi_main_new_user_greet_start@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_wave.imageset/Contents.json b/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_wave.imageset/Contents.json deleted file mode 100644 index 530c04de..00000000 --- a/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_wave.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_new_user_greet_wave@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_new_user_greet_wave@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_wave.imageset/yumi_main_new_user_greet_wave@2x.png b/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_wave.imageset/yumi_main_new_user_greet_wave@2x.png deleted file mode 100644 index 08de6811..00000000 Binary files a/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_wave.imageset/yumi_main_new_user_greet_wave@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_wave.imageset/yumi_main_new_user_greet_wave@3x.png b/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_wave.imageset/yumi_main_new_user_greet_wave@3x.png deleted file mode 100644 index ec1e9735..00000000 Binary files a/YuMi/Assets.xcassets/low/Greet/yumi_main_new_user_greet_wave.imageset/yumi_main_new_user_greet_wave@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Greet/yumi_scope_new_user_greet_background.imageset/Contents.json b/YuMi/Assets.xcassets/low/Greet/yumi_scope_new_user_greet_background.imageset/Contents.json deleted file mode 100644 index 255d780c..00000000 --- a/YuMi/Assets.xcassets/low/Greet/yumi_scope_new_user_greet_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_new_user_greet_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_new_user_greet_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/Greet/yumi_scope_new_user_greet_background.imageset/yumi_scope_new_user_greet_background@2x.png b/YuMi/Assets.xcassets/low/Greet/yumi_scope_new_user_greet_background.imageset/yumi_scope_new_user_greet_background@2x.png deleted file mode 100644 index 5faa25f1..00000000 Binary files a/YuMi/Assets.xcassets/low/Greet/yumi_scope_new_user_greet_background.imageset/yumi_scope_new_user_greet_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Greet/yumi_scope_new_user_greet_background.imageset/yumi_scope_new_user_greet_background@3x.png b/YuMi/Assets.xcassets/low/Greet/yumi_scope_new_user_greet_background.imageset/yumi_scope_new_user_greet_background@3x.png deleted file mode 100644 index 1697e1fc..00000000 Binary files a/YuMi/Assets.xcassets/low/Greet/yumi_scope_new_user_greet_background.imageset/yumi_scope_new_user_greet_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Greet/yumi_scope_new_user_greet_new.imageset/Contents.json b/YuMi/Assets.xcassets/low/Greet/yumi_scope_new_user_greet_new.imageset/Contents.json deleted file mode 100644 index 3980d1de..00000000 --- a/YuMi/Assets.xcassets/low/Greet/yumi_scope_new_user_greet_new.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_new_user_greet_new@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_new_user_greet_new@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/Greet/yumi_scope_new_user_greet_new.imageset/yumi_scope_new_user_greet_new@2x.png b/YuMi/Assets.xcassets/low/Greet/yumi_scope_new_user_greet_new.imageset/yumi_scope_new_user_greet_new@2x.png deleted file mode 100644 index 7c60d9dc..00000000 Binary files a/YuMi/Assets.xcassets/low/Greet/yumi_scope_new_user_greet_new.imageset/yumi_scope_new_user_greet_new@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Greet/yumi_scope_new_user_greet_new.imageset/yumi_scope_new_user_greet_new@3x.png b/YuMi/Assets.xcassets/low/Greet/yumi_scope_new_user_greet_new.imageset/yumi_scope_new_user_greet_new@3x.png deleted file mode 100644 index 66278343..00000000 Binary files a/YuMi/Assets.xcassets/low/Greet/yumi_scope_new_user_greet_new.imageset/yumi_scope_new_user_greet_new@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Live/Contents.json b/YuMi/Assets.xcassets/low/Live/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/low/Live/Contents.json +++ b/YuMi/Assets.xcassets/low/Live/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/Live/home_live_hot_bg.imageset/Contents.json b/YuMi/Assets.xcassets/low/Live/home_live_hot_bg.imageset/Contents.json new file mode 100644 index 00000000..8b2481aa --- /dev/null +++ b/YuMi/Assets.xcassets/low/Live/home_live_hot_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_live_hot_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_live_hot_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/Live/home_live_hot_bg.imageset/home_live_hot_bg@2x.png b/YuMi/Assets.xcassets/low/Live/home_live_hot_bg.imageset/home_live_hot_bg@2x.png new file mode 100644 index 00000000..c85ef73d Binary files /dev/null and b/YuMi/Assets.xcassets/low/Live/home_live_hot_bg.imageset/home_live_hot_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/low/Live/home_live_hot_bg.imageset/home_live_hot_bg@3x.png b/YuMi/Assets.xcassets/low/Live/home_live_hot_bg.imageset/home_live_hot_bg@3x.png new file mode 100644 index 00000000..c12712a7 Binary files /dev/null and b/YuMi/Assets.xcassets/low/Live/home_live_hot_bg.imageset/home_live_hot_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/low/Live/home_live_recommend_tag.imageset/Contents.json b/YuMi/Assets.xcassets/low/Live/home_live_recommend_tag.imageset/Contents.json new file mode 100644 index 00000000..9c7d1bcb --- /dev/null +++ b/YuMi/Assets.xcassets/low/Live/home_live_recommend_tag.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_live_recommend_tag@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_live_recommend_tag@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/Live/home_live_recommend_tag.imageset/home_live_recommend_tag@2x.png b/YuMi/Assets.xcassets/low/Live/home_live_recommend_tag.imageset/home_live_recommend_tag@2x.png new file mode 100644 index 00000000..f1cc49ec Binary files /dev/null and b/YuMi/Assets.xcassets/low/Live/home_live_recommend_tag.imageset/home_live_recommend_tag@2x.png differ diff --git a/YuMi/Assets.xcassets/low/Live/home_live_recommend_tag.imageset/home_live_recommend_tag@3x.png b/YuMi/Assets.xcassets/low/Live/home_live_recommend_tag.imageset/home_live_recommend_tag@3x.png new file mode 100644 index 00000000..f04b3ba6 Binary files /dev/null and b/YuMi/Assets.xcassets/low/Live/home_live_recommend_tag.imageset/home_live_recommend_tag@3x.png differ diff --git a/YuMi/Assets.xcassets/low/Live/home_live_record_bg.imageset/Contents.json b/YuMi/Assets.xcassets/low/Live/home_live_record_bg.imageset/Contents.json new file mode 100644 index 00000000..f8a2625e --- /dev/null +++ b/YuMi/Assets.xcassets/low/Live/home_live_record_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_live_record_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_live_record_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/Live/home_live_record_bg.imageset/home_live_record_bg@2x.png b/YuMi/Assets.xcassets/low/Live/home_live_record_bg.imageset/home_live_record_bg@2x.png new file mode 100644 index 00000000..44642311 Binary files /dev/null and b/YuMi/Assets.xcassets/low/Live/home_live_record_bg.imageset/home_live_record_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/low/Live/home_live_record_bg.imageset/home_live_record_bg@3x.png b/YuMi/Assets.xcassets/low/Live/home_live_record_bg.imageset/home_live_record_bg@3x.png new file mode 100644 index 00000000..a405dcb7 Binary files /dev/null and b/YuMi/Assets.xcassets/low/Live/home_live_record_bg.imageset/home_live_record_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/low/Live/home_live_record_icon.imageset/Contents.json b/YuMi/Assets.xcassets/low/Live/home_live_record_icon.imageset/Contents.json new file mode 100644 index 00000000..42b2f87b --- /dev/null +++ b/YuMi/Assets.xcassets/low/Live/home_live_record_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_live_record_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_live_record_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/Live/home_live_record_icon.imageset/home_live_record_icon@2x.png b/YuMi/Assets.xcassets/low/Live/home_live_record_icon.imageset/home_live_record_icon@2x.png new file mode 100644 index 00000000..f6be9088 Binary files /dev/null and b/YuMi/Assets.xcassets/low/Live/home_live_record_icon.imageset/home_live_record_icon@2x.png differ diff --git a/YuMi/Assets.xcassets/low/Live/home_live_record_icon.imageset/home_live_record_icon@3x.png b/YuMi/Assets.xcassets/low/Live/home_live_record_icon.imageset/home_live_record_icon@3x.png new file mode 100644 index 00000000..7af1be01 Binary files /dev/null and b/YuMi/Assets.xcassets/low/Live/home_live_record_icon.imageset/home_live_record_icon@3x.png differ diff --git a/YuMi/Assets.xcassets/low/Live/yumi_main_spot_hot_background.imageset/Contents.json b/YuMi/Assets.xcassets/low/Live/yumi_main_spot_hot_background.imageset/Contents.json deleted file mode 100644 index 3707a232..00000000 --- a/YuMi/Assets.xcassets/low/Live/yumi_main_spot_hot_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_spot_hot_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_spot_hot_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/Live/yumi_main_spot_hot_background.imageset/yumi_main_spot_hot_background@2x.png b/YuMi/Assets.xcassets/low/Live/yumi_main_spot_hot_background.imageset/yumi_main_spot_hot_background@2x.png deleted file mode 100644 index 4c015d7b..00000000 Binary files a/YuMi/Assets.xcassets/low/Live/yumi_main_spot_hot_background.imageset/yumi_main_spot_hot_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Live/yumi_main_spot_hot_background.imageset/yumi_main_spot_hot_background@3x.png b/YuMi/Assets.xcassets/low/Live/yumi_main_spot_hot_background.imageset/yumi_main_spot_hot_background@3x.png deleted file mode 100644 index 4e9db5be..00000000 Binary files a/YuMi/Assets.xcassets/low/Live/yumi_main_spot_hot_background.imageset/yumi_main_spot_hot_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Live/yumi_main_spot_recommend_tag.imageset/Contents.json b/YuMi/Assets.xcassets/low/Live/yumi_main_spot_recommend_tag.imageset/Contents.json deleted file mode 100644 index db583714..00000000 --- a/YuMi/Assets.xcassets/low/Live/yumi_main_spot_recommend_tag.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_spot_recommend_tag@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_spot_recommend_tag@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/Live/yumi_main_spot_recommend_tag.imageset/yumi_main_spot_recommend_tag@2x.png b/YuMi/Assets.xcassets/low/Live/yumi_main_spot_recommend_tag.imageset/yumi_main_spot_recommend_tag@2x.png deleted file mode 100644 index 59ac8883..00000000 Binary files a/YuMi/Assets.xcassets/low/Live/yumi_main_spot_recommend_tag.imageset/yumi_main_spot_recommend_tag@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Live/yumi_main_spot_recommend_tag.imageset/yumi_main_spot_recommend_tag@3x.png b/YuMi/Assets.xcassets/low/Live/yumi_main_spot_recommend_tag.imageset/yumi_main_spot_recommend_tag@3x.png deleted file mode 100644 index 1c1e183e..00000000 Binary files a/YuMi/Assets.xcassets/low/Live/yumi_main_spot_recommend_tag.imageset/yumi_main_spot_recommend_tag@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Live/yumi_main_spot_record_background.imageset/Contents.json b/YuMi/Assets.xcassets/low/Live/yumi_main_spot_record_background.imageset/Contents.json deleted file mode 100644 index 7e807d2b..00000000 --- a/YuMi/Assets.xcassets/low/Live/yumi_main_spot_record_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_spot_record_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_spot_record_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/Live/yumi_main_spot_record_background.imageset/yumi_main_spot_record_background@2x.png b/YuMi/Assets.xcassets/low/Live/yumi_main_spot_record_background.imageset/yumi_main_spot_record_background@2x.png deleted file mode 100644 index 7d70da68..00000000 Binary files a/YuMi/Assets.xcassets/low/Live/yumi_main_spot_record_background.imageset/yumi_main_spot_record_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Live/yumi_main_spot_record_background.imageset/yumi_main_spot_record_background@3x.png b/YuMi/Assets.xcassets/low/Live/yumi_main_spot_record_background.imageset/yumi_main_spot_record_background@3x.png deleted file mode 100644 index be8cf271..00000000 Binary files a/YuMi/Assets.xcassets/low/Live/yumi_main_spot_record_background.imageset/yumi_main_spot_record_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Live/yumi_main_spot_record_pic.imageset/Contents.json b/YuMi/Assets.xcassets/low/Live/yumi_main_spot_record_pic.imageset/Contents.json deleted file mode 100644 index 7bcbbbd4..00000000 --- a/YuMi/Assets.xcassets/low/Live/yumi_main_spot_record_pic.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_spot_record_pic@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_spot_record_pic@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/Live/yumi_main_spot_record_pic.imageset/yumi_main_spot_record_pic@2x.png b/YuMi/Assets.xcassets/low/Live/yumi_main_spot_record_pic.imageset/yumi_main_spot_record_pic@2x.png deleted file mode 100644 index bfe6b023..00000000 Binary files a/YuMi/Assets.xcassets/low/Live/yumi_main_spot_record_pic.imageset/yumi_main_spot_record_pic@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Live/yumi_main_spot_record_pic.imageset/yumi_main_spot_record_pic@3x.png b/YuMi/Assets.xcassets/low/Live/yumi_main_spot_record_pic.imageset/yumi_main_spot_record_pic@3x.png deleted file mode 100644 index c66e2adb..00000000 Binary files a/YuMi/Assets.xcassets/low/Live/yumi_main_spot_record_pic.imageset/yumi_main_spot_record_pic@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Note/Contents.json b/YuMi/Assets.xcassets/low/Note/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/low/Note/Contents.json +++ b/YuMi/Assets.xcassets/low/Note/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/Note/home_note_00000.imageset/Contents.json b/YuMi/Assets.xcassets/low/Note/home_note_00000.imageset/Contents.json new file mode 100644 index 00000000..a40e89d3 --- /dev/null +++ b/YuMi/Assets.xcassets/low/Note/home_note_00000.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_note_00000@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/Note/home_note_00000.imageset/home_note_00000@2x.png b/YuMi/Assets.xcassets/low/Note/home_note_00000.imageset/home_note_00000@2x.png new file mode 100644 index 00000000..3ec2a3cd Binary files /dev/null and b/YuMi/Assets.xcassets/low/Note/home_note_00000.imageset/home_note_00000@2x.png differ diff --git a/YuMi/Assets.xcassets/low/Note/home_note_00001.imageset/Contents.json b/YuMi/Assets.xcassets/low/Note/home_note_00001.imageset/Contents.json new file mode 100644 index 00000000..371de961 --- /dev/null +++ b/YuMi/Assets.xcassets/low/Note/home_note_00001.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_note_00001@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/Note/home_note_00001.imageset/home_note_00001@2x.png b/YuMi/Assets.xcassets/low/Note/home_note_00001.imageset/home_note_00001@2x.png new file mode 100644 index 00000000..59379be7 Binary files /dev/null and b/YuMi/Assets.xcassets/low/Note/home_note_00001.imageset/home_note_00001@2x.png differ diff --git a/YuMi/Assets.xcassets/low/Note/home_note_00002.imageset/Contents.json b/YuMi/Assets.xcassets/low/Note/home_note_00002.imageset/Contents.json new file mode 100644 index 00000000..24fa04a6 --- /dev/null +++ b/YuMi/Assets.xcassets/low/Note/home_note_00002.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_note_00002@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/Note/home_note_00002.imageset/home_note_00002@2x.png b/YuMi/Assets.xcassets/low/Note/home_note_00002.imageset/home_note_00002@2x.png new file mode 100644 index 00000000..9f8d6ec8 Binary files /dev/null and b/YuMi/Assets.xcassets/low/Note/home_note_00002.imageset/home_note_00002@2x.png differ diff --git a/YuMi/Assets.xcassets/low/Note/home_note_00003.imageset/Contents.json b/YuMi/Assets.xcassets/low/Note/home_note_00003.imageset/Contents.json new file mode 100644 index 00000000..c359d3c4 --- /dev/null +++ b/YuMi/Assets.xcassets/low/Note/home_note_00003.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_note_00003@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/Note/home_note_00003.imageset/home_note_00003@2x.png b/YuMi/Assets.xcassets/low/Note/home_note_00003.imageset/home_note_00003@2x.png new file mode 100644 index 00000000..33ff32f6 Binary files /dev/null and b/YuMi/Assets.xcassets/low/Note/home_note_00003.imageset/home_note_00003@2x.png differ diff --git a/YuMi/Assets.xcassets/low/Note/home_note_00004.imageset/Contents.json b/YuMi/Assets.xcassets/low/Note/home_note_00004.imageset/Contents.json new file mode 100644 index 00000000..02b7a444 --- /dev/null +++ b/YuMi/Assets.xcassets/low/Note/home_note_00004.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_note_00004@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/Note/home_note_00004.imageset/home_note_00004@2x.png b/YuMi/Assets.xcassets/low/Note/home_note_00004.imageset/home_note_00004@2x.png new file mode 100644 index 00000000..271d3959 Binary files /dev/null and b/YuMi/Assets.xcassets/low/Note/home_note_00004.imageset/home_note_00004@2x.png differ diff --git a/YuMi/Assets.xcassets/low/Note/home_note_00005.imageset/Contents.json b/YuMi/Assets.xcassets/low/Note/home_note_00005.imageset/Contents.json new file mode 100644 index 00000000..a1b942c1 --- /dev/null +++ b/YuMi/Assets.xcassets/low/Note/home_note_00005.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_note_00005@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/Note/home_note_00005.imageset/home_note_00005@2x.png b/YuMi/Assets.xcassets/low/Note/home_note_00005.imageset/home_note_00005@2x.png new file mode 100644 index 00000000..175dec4c Binary files /dev/null and b/YuMi/Assets.xcassets/low/Note/home_note_00005.imageset/home_note_00005@2x.png differ diff --git a/YuMi/Assets.xcassets/low/Note/home_note_00006.imageset/Contents.json b/YuMi/Assets.xcassets/low/Note/home_note_00006.imageset/Contents.json new file mode 100644 index 00000000..d009675c --- /dev/null +++ b/YuMi/Assets.xcassets/low/Note/home_note_00006.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_note_00006@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/Note/home_note_00006.imageset/home_note_00006@2x.png b/YuMi/Assets.xcassets/low/Note/home_note_00006.imageset/home_note_00006@2x.png new file mode 100644 index 00000000..30a99f73 Binary files /dev/null and b/YuMi/Assets.xcassets/low/Note/home_note_00006.imageset/home_note_00006@2x.png differ diff --git a/YuMi/Assets.xcassets/low/Note/home_note_00007.imageset/Contents.json b/YuMi/Assets.xcassets/low/Note/home_note_00007.imageset/Contents.json new file mode 100644 index 00000000..305cf5e6 --- /dev/null +++ b/YuMi/Assets.xcassets/low/Note/home_note_00007.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_note_00007@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/Note/home_note_00007.imageset/home_note_00007@2x.png b/YuMi/Assets.xcassets/low/Note/home_note_00007.imageset/home_note_00007@2x.png new file mode 100644 index 00000000..9174a346 Binary files /dev/null and b/YuMi/Assets.xcassets/low/Note/home_note_00007.imageset/home_note_00007@2x.png differ diff --git a/YuMi/Assets.xcassets/low/Note/home_note_00008.imageset/Contents.json b/YuMi/Assets.xcassets/low/Note/home_note_00008.imageset/Contents.json new file mode 100644 index 00000000..548e3c8c --- /dev/null +++ b/YuMi/Assets.xcassets/low/Note/home_note_00008.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_note_00008@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/Note/home_note_00008.imageset/home_note_00008@2x.png b/YuMi/Assets.xcassets/low/Note/home_note_00008.imageset/home_note_00008@2x.png new file mode 100644 index 00000000..7b8b199d Binary files /dev/null and b/YuMi/Assets.xcassets/low/Note/home_note_00008.imageset/home_note_00008@2x.png differ diff --git a/YuMi/Assets.xcassets/low/Note/home_note_00009.imageset/Contents.json b/YuMi/Assets.xcassets/low/Note/home_note_00009.imageset/Contents.json new file mode 100644 index 00000000..0d8cd882 --- /dev/null +++ b/YuMi/Assets.xcassets/low/Note/home_note_00009.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_note_00009@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/Note/home_note_00009.imageset/home_note_00009@2x.png b/YuMi/Assets.xcassets/low/Note/home_note_00009.imageset/home_note_00009@2x.png new file mode 100644 index 00000000..59421374 Binary files /dev/null and b/YuMi/Assets.xcassets/low/Note/home_note_00009.imageset/home_note_00009@2x.png differ diff --git a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00000.imageset/Contents.json b/YuMi/Assets.xcassets/low/Note/yumi_main_note_00000.imageset/Contents.json deleted file mode 100644 index ac515fe2..00000000 --- a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00000.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_note_00000@2x.png", "idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00000.imageset/yumi_main_note_00000@2x.png b/YuMi/Assets.xcassets/low/Note/yumi_main_note_00000.imageset/yumi_main_note_00000@2x.png deleted file mode 100644 index d191a800..00000000 Binary files a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00000.imageset/yumi_main_note_00000@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00001.imageset/Contents.json b/YuMi/Assets.xcassets/low/Note/yumi_main_note_00001.imageset/Contents.json deleted file mode 100644 index 0168db96..00000000 --- a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00001.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_note_00001@2x.png", "idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00001.imageset/yumi_main_note_00001@2x.png b/YuMi/Assets.xcassets/low/Note/yumi_main_note_00001.imageset/yumi_main_note_00001@2x.png deleted file mode 100644 index 304c6eb7..00000000 Binary files a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00001.imageset/yumi_main_note_00001@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00002.imageset/Contents.json b/YuMi/Assets.xcassets/low/Note/yumi_main_note_00002.imageset/Contents.json deleted file mode 100644 index 4de6bac2..00000000 --- a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00002.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_note_00002@2x.png", "idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00002.imageset/yumi_main_note_00002@2x.png b/YuMi/Assets.xcassets/low/Note/yumi_main_note_00002.imageset/yumi_main_note_00002@2x.png deleted file mode 100644 index ee156c11..00000000 Binary files a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00002.imageset/yumi_main_note_00002@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00003.imageset/Contents.json b/YuMi/Assets.xcassets/low/Note/yumi_main_note_00003.imageset/Contents.json deleted file mode 100644 index e1f958d0..00000000 --- a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00003.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_note_00003@2x.png", "idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00003.imageset/yumi_main_note_00003@2x.png b/YuMi/Assets.xcassets/low/Note/yumi_main_note_00003.imageset/yumi_main_note_00003@2x.png deleted file mode 100644 index b72ebcce..00000000 Binary files a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00003.imageset/yumi_main_note_00003@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00004.imageset/Contents.json b/YuMi/Assets.xcassets/low/Note/yumi_main_note_00004.imageset/Contents.json deleted file mode 100644 index 76a55b12..00000000 --- a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00004.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_note_00004@2x.png", "idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00004.imageset/yumi_main_note_00004@2x.png b/YuMi/Assets.xcassets/low/Note/yumi_main_note_00004.imageset/yumi_main_note_00004@2x.png deleted file mode 100644 index aa3a4c69..00000000 Binary files a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00004.imageset/yumi_main_note_00004@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00005.imageset/Contents.json b/YuMi/Assets.xcassets/low/Note/yumi_main_note_00005.imageset/Contents.json deleted file mode 100644 index b6785e12..00000000 --- a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00005.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_note_00005@2x.png", "idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00005.imageset/yumi_main_note_00005@2x.png b/YuMi/Assets.xcassets/low/Note/yumi_main_note_00005.imageset/yumi_main_note_00005@2x.png deleted file mode 100644 index 84193462..00000000 Binary files a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00005.imageset/yumi_main_note_00005@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00006.imageset/Contents.json b/YuMi/Assets.xcassets/low/Note/yumi_main_note_00006.imageset/Contents.json deleted file mode 100644 index a7d1f415..00000000 --- a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00006.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_note_00006@2x.png", "idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00006.imageset/yumi_main_note_00006@2x.png b/YuMi/Assets.xcassets/low/Note/yumi_main_note_00006.imageset/yumi_main_note_00006@2x.png deleted file mode 100644 index 5d5936d3..00000000 Binary files a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00006.imageset/yumi_main_note_00006@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00007.imageset/Contents.json b/YuMi/Assets.xcassets/low/Note/yumi_main_note_00007.imageset/Contents.json deleted file mode 100644 index d9d66232..00000000 --- a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00007.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_note_00007@2x.png", "idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00007.imageset/yumi_main_note_00007@2x.png b/YuMi/Assets.xcassets/low/Note/yumi_main_note_00007.imageset/yumi_main_note_00007@2x.png deleted file mode 100644 index 7926efda..00000000 Binary files a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00007.imageset/yumi_main_note_00007@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00008.imageset/Contents.json b/YuMi/Assets.xcassets/low/Note/yumi_main_note_00008.imageset/Contents.json deleted file mode 100644 index 1c619b77..00000000 --- a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00008.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_note_00008@2x.png", "idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00008.imageset/yumi_main_note_00008@2x.png b/YuMi/Assets.xcassets/low/Note/yumi_main_note_00008.imageset/yumi_main_note_00008@2x.png deleted file mode 100644 index fabd4d3a..00000000 Binary files a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00008.imageset/yumi_main_note_00008@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00009.imageset/Contents.json b/YuMi/Assets.xcassets/low/Note/yumi_main_note_00009.imageset/Contents.json deleted file mode 100644 index ac05a992..00000000 --- a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00009.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_note_00009@2x.png", "idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00009.imageset/yumi_main_note_00009@2x.png b/YuMi/Assets.xcassets/low/Note/yumi_main_note_00009.imageset/yumi_main_note_00009@2x.png deleted file mode 100644 index 1f40f2e0..00000000 Binary files a/YuMi/Assets.xcassets/low/Note/yumi_main_note_00009.imageset/yumi_main_note_00009@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/home_bg.imageset/Contents.json b/YuMi/Assets.xcassets/low/home_bg.imageset/Contents.json new file mode 100644 index 00000000..9cde55d4 --- /dev/null +++ b/YuMi/Assets.xcassets/low/home_bg.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/home_bg.imageset/home_bg@2x.png b/YuMi/Assets.xcassets/low/home_bg.imageset/home_bg@2x.png new file mode 100644 index 00000000..caae9a53 Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_bg.imageset/home_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/low/home_hot_section_logo.imageset/Contents.json b/YuMi/Assets.xcassets/low/home_hot_section_logo.imageset/Contents.json new file mode 100644 index 00000000..51564db4 --- /dev/null +++ b/YuMi/Assets.xcassets/low/home_hot_section_logo.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_hot_section_logo@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_hot_section_logo@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/home_hot_section_logo.imageset/home_hot_section_logo@2x.png b/YuMi/Assets.xcassets/low/home_hot_section_logo.imageset/home_hot_section_logo@2x.png new file mode 100644 index 00000000..2f35c5d3 Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_hot_section_logo.imageset/home_hot_section_logo@2x.png differ diff --git a/YuMi/Assets.xcassets/low/home_hot_section_logo.imageset/home_hot_section_logo@3x.png b/YuMi/Assets.xcassets/low/home_hot_section_logo.imageset/home_hot_section_logo@3x.png new file mode 100644 index 00000000..54a5652a Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_hot_section_logo.imageset/home_hot_section_logo@3x.png differ diff --git a/YuMi/Assets.xcassets/low/home_like_across_pk_bg.imageset/Contents.json b/YuMi/Assets.xcassets/low/home_like_across_pk_bg.imageset/Contents.json new file mode 100644 index 00000000..246c8b4d --- /dev/null +++ b/YuMi/Assets.xcassets/low/home_like_across_pk_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_like_across_pk_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_like_across_pk_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/home_like_across_pk_bg.imageset/home_like_across_pk_bg@2x.png b/YuMi/Assets.xcassets/low/home_like_across_pk_bg.imageset/home_like_across_pk_bg@2x.png new file mode 100644 index 00000000..46d3fb83 Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_like_across_pk_bg.imageset/home_like_across_pk_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/low/home_like_across_pk_bg.imageset/home_like_across_pk_bg@3x.png b/YuMi/Assets.xcassets/low/home_like_across_pk_bg.imageset/home_like_across_pk_bg@3x.png new file mode 100644 index 00000000..85cb50b8 Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_like_across_pk_bg.imageset/home_like_across_pk_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/low/home_name.imageset/Contents.json b/YuMi/Assets.xcassets/low/home_name.imageset/Contents.json new file mode 100644 index 00000000..c3f83b86 --- /dev/null +++ b/YuMi/Assets.xcassets/low/home_name.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_name@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_name@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/home_name.imageset/home_name@2x.png b/YuMi/Assets.xcassets/low/home_name.imageset/home_name@2x.png new file mode 100644 index 00000000..56a26271 Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_name.imageset/home_name@2x.png differ diff --git a/YuMi/Assets.xcassets/low/home_name.imageset/home_name@3x.png b/YuMi/Assets.xcassets/low/home_name.imageset/home_name@3x.png new file mode 100644 index 00000000..5248f5cc Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_name.imageset/home_name@3x.png differ diff --git a/YuMi/Assets.xcassets/low/home_nav_background.imageset/Contents.json b/YuMi/Assets.xcassets/low/home_nav_background.imageset/Contents.json new file mode 100644 index 00000000..5076084d --- /dev/null +++ b/YuMi/Assets.xcassets/low/home_nav_background.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_nav_background@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_nav_background@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/home_nav_background.imageset/home_nav_background@2x.png b/YuMi/Assets.xcassets/low/home_nav_background.imageset/home_nav_background@2x.png new file mode 100644 index 00000000..ca119d0b Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_nav_background.imageset/home_nav_background@2x.png differ diff --git a/YuMi/Assets.xcassets/low/home_nav_background.imageset/home_nav_background@3x.png b/YuMi/Assets.xcassets/low/home_nav_background.imageset/home_nav_background@3x.png new file mode 100644 index 00000000..ae24f520 Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_nav_background.imageset/home_nav_background@3x.png differ diff --git a/YuMi/Assets.xcassets/low/home_party_little_game_content_bg.imageset/Contents.json b/YuMi/Assets.xcassets/low/home_party_little_game_content_bg.imageset/Contents.json new file mode 100644 index 00000000..d5fcb900 --- /dev/null +++ b/YuMi/Assets.xcassets/low/home_party_little_game_content_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_party_little_game_content_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_party_little_game_content_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/home_party_little_game_content_bg.imageset/home_party_little_game_content_bg@2x.png b/YuMi/Assets.xcassets/low/home_party_little_game_content_bg.imageset/home_party_little_game_content_bg@2x.png new file mode 100644 index 00000000..f5872756 Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_party_little_game_content_bg.imageset/home_party_little_game_content_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/low/home_party_little_game_content_bg.imageset/home_party_little_game_content_bg@3x.png b/YuMi/Assets.xcassets/low/home_party_little_game_content_bg.imageset/home_party_little_game_content_bg@3x.png new file mode 100644 index 00000000..cb31952a Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_party_little_game_content_bg.imageset/home_party_little_game_content_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/low/home_party_little_game_cover.imageset/Contents.json b/YuMi/Assets.xcassets/low/home_party_little_game_cover.imageset/Contents.json new file mode 100644 index 00000000..fd19ff69 --- /dev/null +++ b/YuMi/Assets.xcassets/low/home_party_little_game_cover.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_party_little_game_cover@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_party_little_game_cover@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/home_party_little_game_cover.imageset/home_party_little_game_cover@2x.png b/YuMi/Assets.xcassets/low/home_party_little_game_cover.imageset/home_party_little_game_cover@2x.png new file mode 100644 index 00000000..2293a9e3 Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_party_little_game_cover.imageset/home_party_little_game_cover@2x.png differ diff --git a/YuMi/Assets.xcassets/low/home_party_little_game_cover.imageset/home_party_little_game_cover@3x.png b/YuMi/Assets.xcassets/low/home_party_little_game_cover.imageset/home_party_little_game_cover@3x.png new file mode 100644 index 00000000..28bc211f Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_party_little_game_cover.imageset/home_party_little_game_cover@3x.png differ diff --git a/YuMi/Assets.xcassets/low/home_party_little_game_enter.imageset/Contents.json b/YuMi/Assets.xcassets/low/home_party_little_game_enter.imageset/Contents.json new file mode 100644 index 00000000..3d84827e --- /dev/null +++ b/YuMi/Assets.xcassets/low/home_party_little_game_enter.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_party_little_game_enter@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_party_little_game_enter@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/home_party_little_game_enter.imageset/home_party_little_game_enter@2x.png b/YuMi/Assets.xcassets/low/home_party_little_game_enter.imageset/home_party_little_game_enter@2x.png new file mode 100644 index 00000000..6d9088f2 Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_party_little_game_enter.imageset/home_party_little_game_enter@2x.png differ diff --git a/YuMi/Assets.xcassets/low/home_party_little_game_enter.imageset/home_party_little_game_enter@3x.png b/YuMi/Assets.xcassets/low/home_party_little_game_enter.imageset/home_party_little_game_enter@3x.png new file mode 100644 index 00000000..3e4ae234 Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_party_little_game_enter.imageset/home_party_little_game_enter@3x.png differ diff --git a/YuMi/Assets.xcassets/low/home_party_little_game_match.imageset/Contents.json b/YuMi/Assets.xcassets/low/home_party_little_game_match.imageset/Contents.json new file mode 100644 index 00000000..cb177b5f --- /dev/null +++ b/YuMi/Assets.xcassets/low/home_party_little_game_match.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_party_little_game_match@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_party_little_game_match@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/home_party_little_game_match.imageset/home_party_little_game_match@2x.png b/YuMi/Assets.xcassets/low/home_party_little_game_match.imageset/home_party_little_game_match@2x.png new file mode 100644 index 00000000..8fcae567 Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_party_little_game_match.imageset/home_party_little_game_match@2x.png differ diff --git a/YuMi/Assets.xcassets/low/home_party_little_game_match.imageset/home_party_little_game_match@3x.png b/YuMi/Assets.xcassets/low/home_party_little_game_match.imageset/home_party_little_game_match@3x.png new file mode 100644 index 00000000..9ac929f2 Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_party_little_game_match.imageset/home_party_little_game_match@3x.png differ diff --git a/YuMi/Assets.xcassets/low/home_recommend_across_pk_bg.imageset/Contents.json b/YuMi/Assets.xcassets/low/home_recommend_across_pk_bg.imageset/Contents.json new file mode 100644 index 00000000..df7982d5 --- /dev/null +++ b/YuMi/Assets.xcassets/low/home_recommend_across_pk_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_recommend_across_pk_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_recommend_across_pk_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/home_recommend_across_pk_bg.imageset/home_recommend_across_pk_bg@2x.png b/YuMi/Assets.xcassets/low/home_recommend_across_pk_bg.imageset/home_recommend_across_pk_bg@2x.png new file mode 100644 index 00000000..e32d203f Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_recommend_across_pk_bg.imageset/home_recommend_across_pk_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/low/home_recommend_across_pk_bg.imageset/home_recommend_across_pk_bg@3x.png b/YuMi/Assets.xcassets/low/home_recommend_across_pk_bg.imageset/home_recommend_across_pk_bg@3x.png new file mode 100644 index 00000000..e6ca0ffd Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_recommend_across_pk_bg.imageset/home_recommend_across_pk_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/low/home_recommend_hot_note.imageset/Contents.json b/YuMi/Assets.xcassets/low/home_recommend_hot_note.imageset/Contents.json new file mode 100644 index 00000000..55f19863 --- /dev/null +++ b/YuMi/Assets.xcassets/low/home_recommend_hot_note.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_recommend_hot_note@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_recommend_hot_note@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/home_recommend_hot_note.imageset/home_recommend_hot_note@2x.png b/YuMi/Assets.xcassets/low/home_recommend_hot_note.imageset/home_recommend_hot_note@2x.png new file mode 100644 index 00000000..1dbbbddb Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_recommend_hot_note.imageset/home_recommend_hot_note@2x.png differ diff --git a/YuMi/Assets.xcassets/low/home_recommend_hot_note.imageset/home_recommend_hot_note@3x.png b/YuMi/Assets.xcassets/low/home_recommend_hot_note.imageset/home_recommend_hot_note@3x.png new file mode 100644 index 00000000..1ce963ba Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_recommend_hot_note.imageset/home_recommend_hot_note@3x.png differ diff --git a/YuMi/Assets.xcassets/low/home_recommend_indicator_room.imageset/Contents.json b/YuMi/Assets.xcassets/low/home_recommend_indicator_room.imageset/Contents.json new file mode 100644 index 00000000..59bc8a58 --- /dev/null +++ b/YuMi/Assets.xcassets/low/home_recommend_indicator_room.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_recommend_indicator_room@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_recommend_indicator_room@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/home_recommend_indicator_room.imageset/home_recommend_indicator_room@2x.png b/YuMi/Assets.xcassets/low/home_recommend_indicator_room.imageset/home_recommend_indicator_room@2x.png new file mode 100644 index 00000000..c1ae5e2c Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_recommend_indicator_room.imageset/home_recommend_indicator_room@2x.png differ diff --git a/YuMi/Assets.xcassets/low/home_recommend_indicator_room.imageset/home_recommend_indicator_room@3x.png b/YuMi/Assets.xcassets/low/home_recommend_indicator_room.imageset/home_recommend_indicator_room@3x.png new file mode 100644 index 00000000..a01f8859 Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_recommend_indicator_room.imageset/home_recommend_indicator_room@3x.png differ diff --git a/YuMi/Assets.xcassets/low/home_recommend_nick_shadow_bg.imageset/Contents.json b/YuMi/Assets.xcassets/low/home_recommend_nick_shadow_bg.imageset/Contents.json new file mode 100644 index 00000000..88ffecb7 --- /dev/null +++ b/YuMi/Assets.xcassets/low/home_recommend_nick_shadow_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_recommend_nick_shadow_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_recommend_nick_shadow_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/home_recommend_nick_shadow_bg.imageset/home_recommend_nick_shadow_bg@2x.png b/YuMi/Assets.xcassets/low/home_recommend_nick_shadow_bg.imageset/home_recommend_nick_shadow_bg@2x.png new file mode 100644 index 00000000..3abad2c9 Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_recommend_nick_shadow_bg.imageset/home_recommend_nick_shadow_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/low/home_recommend_nick_shadow_bg.imageset/home_recommend_nick_shadow_bg@3x.png b/YuMi/Assets.xcassets/low/home_recommend_nick_shadow_bg.imageset/home_recommend_nick_shadow_bg@3x.png new file mode 100644 index 00000000..197c8ed0 Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_recommend_nick_shadow_bg.imageset/home_recommend_nick_shadow_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/low/home_recommend_play_list_bg.imageset/Contents.json b/YuMi/Assets.xcassets/low/home_recommend_play_list_bg.imageset/Contents.json new file mode 100644 index 00000000..98a1e0da --- /dev/null +++ b/YuMi/Assets.xcassets/low/home_recommend_play_list_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_recommend_play_list_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_recommend_play_list_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/home_recommend_play_list_bg.imageset/home_recommend_play_list_bg@2x.png b/YuMi/Assets.xcassets/low/home_recommend_play_list_bg.imageset/home_recommend_play_list_bg@2x.png new file mode 100644 index 00000000..58b806ad Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_recommend_play_list_bg.imageset/home_recommend_play_list_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/low/home_recommend_play_list_bg.imageset/home_recommend_play_list_bg@3x.png b/YuMi/Assets.xcassets/low/home_recommend_play_list_bg.imageset/home_recommend_play_list_bg@3x.png new file mode 100644 index 00000000..baa09584 Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_recommend_play_list_bg.imageset/home_recommend_play_list_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/low/home_recommend_play_person_logo.imageset/Contents.json b/YuMi/Assets.xcassets/low/home_recommend_play_person_logo.imageset/Contents.json new file mode 100644 index 00000000..1a8586be --- /dev/null +++ b/YuMi/Assets.xcassets/low/home_recommend_play_person_logo.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_recommend_play_person_logo@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_recommend_play_person_logo@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/home_recommend_play_person_logo.imageset/home_recommend_play_person_logo@2x.png b/YuMi/Assets.xcassets/low/home_recommend_play_person_logo.imageset/home_recommend_play_person_logo@2x.png new file mode 100644 index 00000000..5c5bb891 Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_recommend_play_person_logo.imageset/home_recommend_play_person_logo@2x.png differ diff --git a/YuMi/Assets.xcassets/low/home_recommend_play_person_logo.imageset/home_recommend_play_person_logo@3x.png b/YuMi/Assets.xcassets/low/home_recommend_play_person_logo.imageset/home_recommend_play_person_logo@3x.png new file mode 100644 index 00000000..adaf698e Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_recommend_play_person_logo.imageset/home_recommend_play_person_logo@3x.png differ diff --git a/YuMi/Assets.xcassets/low/home_recommend_room_more.imageset/Contents.json b/YuMi/Assets.xcassets/low/home_recommend_room_more.imageset/Contents.json new file mode 100644 index 00000000..9d62e5ef --- /dev/null +++ b/YuMi/Assets.xcassets/low/home_recommend_room_more.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_recommend_room_more@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_recommend_room_more@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/home_recommend_room_more.imageset/home_recommend_room_more@2x.png b/YuMi/Assets.xcassets/low/home_recommend_room_more.imageset/home_recommend_room_more@2x.png new file mode 100644 index 00000000..4248ed49 Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_recommend_room_more.imageset/home_recommend_room_more@2x.png differ diff --git a/YuMi/Assets.xcassets/low/home_recommend_room_more.imageset/home_recommend_room_more@3x.png b/YuMi/Assets.xcassets/low/home_recommend_room_more.imageset/home_recommend_room_more@3x.png new file mode 100644 index 00000000..9048ed2e Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_recommend_room_more.imageset/home_recommend_room_more@3x.png differ diff --git a/YuMi/Assets.xcassets/low/home_recommend_room_placeholder.imageset/Contents.json b/YuMi/Assets.xcassets/low/home_recommend_room_placeholder.imageset/Contents.json new file mode 100644 index 00000000..85922613 --- /dev/null +++ b/YuMi/Assets.xcassets/low/home_recommend_room_placeholder.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_recommend_room_placeholder@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_recommend_room_placeholder@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/home_recommend_room_placeholder.imageset/home_recommend_room_placeholder@2x.png b/YuMi/Assets.xcassets/low/home_recommend_room_placeholder.imageset/home_recommend_room_placeholder@2x.png new file mode 100644 index 00000000..86e9e2cd Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_recommend_room_placeholder.imageset/home_recommend_room_placeholder@2x.png differ diff --git a/YuMi/Assets.xcassets/low/home_recommend_room_placeholder.imageset/home_recommend_room_placeholder@3x.png b/YuMi/Assets.xcassets/low/home_recommend_room_placeholder.imageset/home_recommend_room_placeholder@3x.png new file mode 100644 index 00000000..f0bbbc1e Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_recommend_room_placeholder.imageset/home_recommend_room_placeholder@3x.png differ diff --git a/YuMi/Assets.xcassets/low/home_recommend_section_logo.imageset/Contents.json b/YuMi/Assets.xcassets/low/home_recommend_section_logo.imageset/Contents.json new file mode 100644 index 00000000..62c4f8c8 --- /dev/null +++ b/YuMi/Assets.xcassets/low/home_recommend_section_logo.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_recommend_section_logo@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_recommend_section_logo@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/home_recommend_section_logo.imageset/home_recommend_section_logo@2x.png b/YuMi/Assets.xcassets/low/home_recommend_section_logo.imageset/home_recommend_section_logo@2x.png new file mode 100644 index 00000000..0e4c4f11 Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_recommend_section_logo.imageset/home_recommend_section_logo@2x.png differ diff --git a/YuMi/Assets.xcassets/low/home_recommend_section_logo.imageset/home_recommend_section_logo@3x.png b/YuMi/Assets.xcassets/low/home_recommend_section_logo.imageset/home_recommend_section_logo@3x.png new file mode 100644 index 00000000..11695d0e Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_recommend_section_logo.imageset/home_recommend_section_logo@3x.png differ diff --git a/YuMi/Assets.xcassets/low/home_recommend_tag_bg.imageset/Contents.json b/YuMi/Assets.xcassets/low/home_recommend_tag_bg.imageset/Contents.json new file mode 100644 index 00000000..68445490 --- /dev/null +++ b/YuMi/Assets.xcassets/low/home_recommend_tag_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_recommend_tag_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_recommend_tag_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/home_recommend_tag_bg.imageset/home_recommend_tag_bg@2x.png b/YuMi/Assets.xcassets/low/home_recommend_tag_bg.imageset/home_recommend_tag_bg@2x.png new file mode 100644 index 00000000..c95cf9fc Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_recommend_tag_bg.imageset/home_recommend_tag_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/low/home_recommend_tag_bg.imageset/home_recommend_tag_bg@3x.png b/YuMi/Assets.xcassets/low/home_recommend_tag_bg.imageset/home_recommend_tag_bg@3x.png new file mode 100644 index 00000000..348107c4 Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_recommend_tag_bg.imageset/home_recommend_tag_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/low/home_room_list_note_bg.imageset/Contents.json b/YuMi/Assets.xcassets/low/home_room_list_note_bg.imageset/Contents.json new file mode 100644 index 00000000..e9ce05aa --- /dev/null +++ b/YuMi/Assets.xcassets/low/home_room_list_note_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_room_list_note_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_room_list_note_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/home_room_list_note_bg.imageset/home_room_list_note_bg@2x.png b/YuMi/Assets.xcassets/low/home_room_list_note_bg.imageset/home_room_list_note_bg@2x.png new file mode 100644 index 00000000..868c0007 Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_room_list_note_bg.imageset/home_room_list_note_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/low/home_room_list_note_bg.imageset/home_room_list_note_bg@3x.png b/YuMi/Assets.xcassets/low/home_room_list_note_bg.imageset/home_room_list_note_bg@3x.png new file mode 100644 index 00000000..24f6a9ae Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_room_list_note_bg.imageset/home_room_list_note_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/low/home_room_list_shadow_bg.imageset/Contents.json b/YuMi/Assets.xcassets/low/home_room_list_shadow_bg.imageset/Contents.json new file mode 100644 index 00000000..df2bad3a --- /dev/null +++ b/YuMi/Assets.xcassets/low/home_room_list_shadow_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_room_list_shadow_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_room_list_shadow_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/home_room_list_shadow_bg.imageset/home_room_list_shadow_bg@2x.png b/YuMi/Assets.xcassets/low/home_room_list_shadow_bg.imageset/home_room_list_shadow_bg@2x.png new file mode 100644 index 00000000..a797ae0c Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_room_list_shadow_bg.imageset/home_room_list_shadow_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/low/home_room_list_shadow_bg.imageset/home_room_list_shadow_bg@3x.png b/YuMi/Assets.xcassets/low/home_room_list_shadow_bg.imageset/home_room_list_shadow_bg@3x.png new file mode 100644 index 00000000..800a2885 Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_room_list_shadow_bg.imageset/home_room_list_shadow_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/low/home_search_input_search.imageset/Contents.json b/YuMi/Assets.xcassets/low/home_search_input_search.imageset/Contents.json new file mode 100644 index 00000000..11ea90b2 --- /dev/null +++ b/YuMi/Assets.xcassets/low/home_search_input_search.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_search_input_search@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_search_input_search@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/home_search_input_search.imageset/home_search_input_search@2x.png b/YuMi/Assets.xcassets/low/home_search_input_search.imageset/home_search_input_search@2x.png new file mode 100644 index 00000000..3733e971 Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_search_input_search.imageset/home_search_input_search@2x.png differ diff --git a/YuMi/Assets.xcassets/low/home_search_input_search.imageset/home_search_input_search@3x.png b/YuMi/Assets.xcassets/low/home_search_input_search.imageset/home_search_input_search@3x.png new file mode 100644 index 00000000..5d456ca0 Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_search_input_search.imageset/home_search_input_search@3x.png differ diff --git a/YuMi/Assets.xcassets/low/home_search_user_online.imageset/Contents.json b/YuMi/Assets.xcassets/low/home_search_user_online.imageset/Contents.json new file mode 100644 index 00000000..69fc3809 --- /dev/null +++ b/YuMi/Assets.xcassets/low/home_search_user_online.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_search_user_online@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_search_user_online@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/home_search_user_online.imageset/home_search_user_online@2x.png b/YuMi/Assets.xcassets/low/home_search_user_online.imageset/home_search_user_online@2x.png new file mode 100644 index 00000000..099261ce Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_search_user_online.imageset/home_search_user_online@2x.png differ diff --git a/YuMi/Assets.xcassets/low/home_search_user_online.imageset/home_search_user_online@3x.png b/YuMi/Assets.xcassets/low/home_search_user_online.imageset/home_search_user_online@3x.png new file mode 100644 index 00000000..3418f123 Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_search_user_online.imageset/home_search_user_online@3x.png differ diff --git a/YuMi/Assets.xcassets/low/home_search_white_back.imageset/Contents.json b/YuMi/Assets.xcassets/low/home_search_white_back.imageset/Contents.json new file mode 100644 index 00000000..955ef7b3 --- /dev/null +++ b/YuMi/Assets.xcassets/low/home_search_white_back.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_search_white_back@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_search_white_back@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/home_search_white_back.imageset/home_search_white_back@2x.png b/YuMi/Assets.xcassets/low/home_search_white_back.imageset/home_search_white_back@2x.png new file mode 100644 index 00000000..313a154f Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_search_white_back.imageset/home_search_white_back@2x.png differ diff --git a/YuMi/Assets.xcassets/low/home_search_white_back.imageset/home_search_white_back@3x.png b/YuMi/Assets.xcassets/low/home_search_white_back.imageset/home_search_white_back@3x.png new file mode 100644 index 00000000..b76a3e27 Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_search_white_back.imageset/home_search_white_back@3x.png differ diff --git a/YuMi/Assets.xcassets/low/home_user_circle.imageset/Contents.json b/YuMi/Assets.xcassets/low/home_user_circle.imageset/Contents.json new file mode 100644 index 00000000..5916d31f --- /dev/null +++ b/YuMi/Assets.xcassets/low/home_user_circle.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_user_circle@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_user_circle@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/home_user_circle.imageset/home_user_circle@2x.png b/YuMi/Assets.xcassets/low/home_user_circle.imageset/home_user_circle@2x.png new file mode 100644 index 00000000..7abb3c0e Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_user_circle.imageset/home_user_circle@2x.png differ diff --git a/YuMi/Assets.xcassets/low/home_user_circle.imageset/home_user_circle@3x.png b/YuMi/Assets.xcassets/low/home_user_circle.imageset/home_user_circle@3x.png new file mode 100644 index 00000000..435e694c Binary files /dev/null and b/YuMi/Assets.xcassets/low/home_user_circle.imageset/home_user_circle@3x.png differ diff --git a/YuMi/Assets.xcassets/low/navigation/Contents.json b/YuMi/Assets.xcassets/low/navigation/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/low/navigation/Contents.json +++ b/YuMi/Assets.xcassets/low/navigation/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/navigation/home_nav_indicator.imageset/Contents.json b/YuMi/Assets.xcassets/low/navigation/home_nav_indicator.imageset/Contents.json new file mode 100644 index 00000000..09ec21bc --- /dev/null +++ b/YuMi/Assets.xcassets/low/navigation/home_nav_indicator.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_nav_indicator@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_nav_indicator@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/navigation/home_nav_indicator.imageset/home_nav_indicator@2x.png b/YuMi/Assets.xcassets/low/navigation/home_nav_indicator.imageset/home_nav_indicator@2x.png new file mode 100644 index 00000000..dbfeca98 Binary files /dev/null and b/YuMi/Assets.xcassets/low/navigation/home_nav_indicator.imageset/home_nav_indicator@2x.png differ diff --git a/YuMi/Assets.xcassets/low/navigation/home_nav_indicator.imageset/home_nav_indicator@3x.png b/YuMi/Assets.xcassets/low/navigation/home_nav_indicator.imageset/home_nav_indicator@3x.png new file mode 100644 index 00000000..48a19dd8 Binary files /dev/null and b/YuMi/Assets.xcassets/low/navigation/home_nav_indicator.imageset/home_nav_indicator@3x.png differ diff --git a/YuMi/Assets.xcassets/low/navigation/home_nav_open_room.imageset/Contents.json b/YuMi/Assets.xcassets/low/navigation/home_nav_open_room.imageset/Contents.json new file mode 100644 index 00000000..415060f6 --- /dev/null +++ b/YuMi/Assets.xcassets/low/navigation/home_nav_open_room.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_nav_open_room@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_nav_open_room@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/navigation/home_nav_open_room.imageset/home_nav_open_room@2x.png b/YuMi/Assets.xcassets/low/navigation/home_nav_open_room.imageset/home_nav_open_room@2x.png new file mode 100644 index 00000000..f7902242 Binary files /dev/null and b/YuMi/Assets.xcassets/low/navigation/home_nav_open_room.imageset/home_nav_open_room@2x.png differ diff --git a/YuMi/Assets.xcassets/low/navigation/home_nav_open_room.imageset/home_nav_open_room@3x.png b/YuMi/Assets.xcassets/low/navigation/home_nav_open_room.imageset/home_nav_open_room@3x.png new file mode 100644 index 00000000..db2d173b Binary files /dev/null and b/YuMi/Assets.xcassets/low/navigation/home_nav_open_room.imageset/home_nav_open_room@3x.png differ diff --git a/YuMi/Assets.xcassets/low/navigation/home_nav_rank.imageset/Contents.json b/YuMi/Assets.xcassets/low/navigation/home_nav_rank.imageset/Contents.json new file mode 100644 index 00000000..111471cb --- /dev/null +++ b/YuMi/Assets.xcassets/low/navigation/home_nav_rank.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_nav_rank@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_nav_rank@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/navigation/home_nav_rank.imageset/home_nav_rank@2x.png b/YuMi/Assets.xcassets/low/navigation/home_nav_rank.imageset/home_nav_rank@2x.png new file mode 100644 index 00000000..8361610d Binary files /dev/null and b/YuMi/Assets.xcassets/low/navigation/home_nav_rank.imageset/home_nav_rank@2x.png differ diff --git a/YuMi/Assets.xcassets/low/navigation/home_nav_rank.imageset/home_nav_rank@3x.png b/YuMi/Assets.xcassets/low/navigation/home_nav_rank.imageset/home_nav_rank@3x.png new file mode 100644 index 00000000..f9c7168a Binary files /dev/null and b/YuMi/Assets.xcassets/low/navigation/home_nav_rank.imageset/home_nav_rank@3x.png differ diff --git a/YuMi/Assets.xcassets/low/navigation/home_nav_search.imageset/Contents.json b/YuMi/Assets.xcassets/low/navigation/home_nav_search.imageset/Contents.json new file mode 100644 index 00000000..dfa884f4 --- /dev/null +++ b/YuMi/Assets.xcassets/low/navigation/home_nav_search.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_nav_search@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_nav_search@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/navigation/home_nav_search.imageset/home_nav_search@2x.png b/YuMi/Assets.xcassets/low/navigation/home_nav_search.imageset/home_nav_search@2x.png new file mode 100644 index 00000000..cd466fa0 Binary files /dev/null and b/YuMi/Assets.xcassets/low/navigation/home_nav_search.imageset/home_nav_search@2x.png differ diff --git a/YuMi/Assets.xcassets/low/navigation/home_nav_search.imageset/home_nav_search@3x.png b/YuMi/Assets.xcassets/low/navigation/home_nav_search.imageset/home_nav_search@3x.png new file mode 100644 index 00000000..63112bfa Binary files /dev/null and b/YuMi/Assets.xcassets/low/navigation/home_nav_search.imageset/home_nav_search@3x.png differ diff --git a/YuMi/Assets.xcassets/low/navigation/yumi_main_title_indicator.imageset/Contents.json b/YuMi/Assets.xcassets/low/navigation/yumi_main_title_indicator.imageset/Contents.json deleted file mode 100644 index 1130dce8..00000000 --- a/YuMi/Assets.xcassets/low/navigation/yumi_main_title_indicator.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_title_indicator@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_title_indicator@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/navigation/yumi_main_title_indicator.imageset/yumi_main_title_indicator@2x.png b/YuMi/Assets.xcassets/low/navigation/yumi_main_title_indicator.imageset/yumi_main_title_indicator@2x.png deleted file mode 100644 index 79e24a10..00000000 Binary files a/YuMi/Assets.xcassets/low/navigation/yumi_main_title_indicator.imageset/yumi_main_title_indicator@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/navigation/yumi_main_title_indicator.imageset/yumi_main_title_indicator@3x.png b/YuMi/Assets.xcassets/low/navigation/yumi_main_title_indicator.imageset/yumi_main_title_indicator@3x.png deleted file mode 100644 index d026ab7a..00000000 Binary files a/YuMi/Assets.xcassets/low/navigation/yumi_main_title_indicator.imageset/yumi_main_title_indicator@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/navigation/yumi_main_title_open_room.imageset/Contents.json b/YuMi/Assets.xcassets/low/navigation/yumi_main_title_open_room.imageset/Contents.json deleted file mode 100644 index 8d28aa56..00000000 --- a/YuMi/Assets.xcassets/low/navigation/yumi_main_title_open_room.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_title_open_room@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_title_open_room@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/navigation/yumi_main_title_open_room.imageset/yumi_main_title_open_room@2x.png b/YuMi/Assets.xcassets/low/navigation/yumi_main_title_open_room.imageset/yumi_main_title_open_room@2x.png deleted file mode 100644 index 8b8f3977..00000000 Binary files a/YuMi/Assets.xcassets/low/navigation/yumi_main_title_open_room.imageset/yumi_main_title_open_room@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/navigation/yumi_main_title_open_room.imageset/yumi_main_title_open_room@3x.png b/YuMi/Assets.xcassets/low/navigation/yumi_main_title_open_room.imageset/yumi_main_title_open_room@3x.png deleted file mode 100644 index 82153d04..00000000 Binary files a/YuMi/Assets.xcassets/low/navigation/yumi_main_title_open_room.imageset/yumi_main_title_open_room@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/navigation/yumi_main_title_rank.imageset/Contents.json b/YuMi/Assets.xcassets/low/navigation/yumi_main_title_rank.imageset/Contents.json deleted file mode 100644 index 5302b0e1..00000000 --- a/YuMi/Assets.xcassets/low/navigation/yumi_main_title_rank.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_title_rank@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_title_rank@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/navigation/yumi_main_title_rank.imageset/yumi_main_title_rank@2x.png b/YuMi/Assets.xcassets/low/navigation/yumi_main_title_rank.imageset/yumi_main_title_rank@2x.png deleted file mode 100644 index dcb5f57e..00000000 Binary files a/YuMi/Assets.xcassets/low/navigation/yumi_main_title_rank.imageset/yumi_main_title_rank@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/navigation/yumi_main_title_rank.imageset/yumi_main_title_rank@3x.png b/YuMi/Assets.xcassets/low/navigation/yumi_main_title_rank.imageset/yumi_main_title_rank@3x.png deleted file mode 100644 index 32f03fa2..00000000 Binary files a/YuMi/Assets.xcassets/low/navigation/yumi_main_title_rank.imageset/yumi_main_title_rank@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/navigation/yumi_main_title_search.imageset/Contents.json b/YuMi/Assets.xcassets/low/navigation/yumi_main_title_search.imageset/Contents.json deleted file mode 100644 index a4945062..00000000 --- a/YuMi/Assets.xcassets/low/navigation/yumi_main_title_search.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_title_search@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_title_search@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/navigation/yumi_main_title_search.imageset/yumi_main_title_search@2x.png b/YuMi/Assets.xcassets/low/navigation/yumi_main_title_search.imageset/yumi_main_title_search@2x.png deleted file mode 100644 index 8969e23f..00000000 Binary files a/YuMi/Assets.xcassets/low/navigation/yumi_main_title_search.imageset/yumi_main_title_search@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/navigation/yumi_main_title_search.imageset/yumi_main_title_search@3x.png b/YuMi/Assets.xcassets/low/navigation/yumi_main_title_search.imageset/yumi_main_title_search@3x.png deleted file mode 100644 index c0ff4c02..00000000 Binary files a/YuMi/Assets.xcassets/low/navigation/yumi_main_title_search.imageset/yumi_main_title_search@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/newhome/Contents.json b/YuMi/Assets.xcassets/low/newhome/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/low/newhome/Contents.json +++ b/YuMi/Assets.xcassets/low/newhome/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/newhome/home_party_number.imageset/Contents.json b/YuMi/Assets.xcassets/low/newhome/home_party_number.imageset/Contents.json new file mode 100644 index 00000000..b003bd44 --- /dev/null +++ b/YuMi/Assets.xcassets/low/newhome/home_party_number.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_party_number@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_party_number@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/newhome/home_party_number.imageset/home_party_number@2x.png b/YuMi/Assets.xcassets/low/newhome/home_party_number.imageset/home_party_number@2x.png new file mode 100644 index 00000000..49f2144a Binary files /dev/null and b/YuMi/Assets.xcassets/low/newhome/home_party_number.imageset/home_party_number@2x.png differ diff --git a/YuMi/Assets.xcassets/low/newhome/home_party_number.imageset/home_party_number@3x.png b/YuMi/Assets.xcassets/low/newhome/home_party_number.imageset/home_party_number@3x.png new file mode 100644 index 00000000..704b1d8d Binary files /dev/null and b/YuMi/Assets.xcassets/low/newhome/home_party_number.imageset/home_party_number@3x.png differ diff --git a/YuMi/Assets.xcassets/low/newhome/home_play_female_border.imageset/Contents.json b/YuMi/Assets.xcassets/low/newhome/home_play_female_border.imageset/Contents.json new file mode 100644 index 00000000..6bc0c8cd --- /dev/null +++ b/YuMi/Assets.xcassets/low/newhome/home_play_female_border.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_play_female_border@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_play_female_border@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/newhome/home_play_female_border.imageset/home_play_female_border@2x.png b/YuMi/Assets.xcassets/low/newhome/home_play_female_border.imageset/home_play_female_border@2x.png new file mode 100644 index 00000000..53d83ff8 Binary files /dev/null and b/YuMi/Assets.xcassets/low/newhome/home_play_female_border.imageset/home_play_female_border@2x.png differ diff --git a/YuMi/Assets.xcassets/low/newhome/home_play_female_border.imageset/home_play_female_border@3x.png b/YuMi/Assets.xcassets/low/newhome/home_play_female_border.imageset/home_play_female_border@3x.png new file mode 100644 index 00000000..97727e5e Binary files /dev/null and b/YuMi/Assets.xcassets/low/newhome/home_play_female_border.imageset/home_play_female_border@3x.png differ diff --git a/YuMi/Assets.xcassets/low/newhome/home_play_male_border.imageset/Contents.json b/YuMi/Assets.xcassets/low/newhome/home_play_male_border.imageset/Contents.json new file mode 100644 index 00000000..3dbc9609 --- /dev/null +++ b/YuMi/Assets.xcassets/low/newhome/home_play_male_border.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_play_male_border@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_play_male_border@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/newhome/home_play_male_border.imageset/home_play_male_border@2x.png b/YuMi/Assets.xcassets/low/newhome/home_play_male_border.imageset/home_play_male_border@2x.png new file mode 100644 index 00000000..412ce4f0 Binary files /dev/null and b/YuMi/Assets.xcassets/low/newhome/home_play_male_border.imageset/home_play_male_border@2x.png differ diff --git a/YuMi/Assets.xcassets/low/newhome/home_play_male_border.imageset/home_play_male_border@3x.png b/YuMi/Assets.xcassets/low/newhome/home_play_male_border.imageset/home_play_male_border@3x.png new file mode 100644 index 00000000..64a679fe Binary files /dev/null and b/YuMi/Assets.xcassets/low/newhome/home_play_male_border.imageset/home_play_male_border@3x.png differ diff --git a/YuMi/Assets.xcassets/low/newhome/home_slider_bg.imageset/Contents.json b/YuMi/Assets.xcassets/low/newhome/home_slider_bg.imageset/Contents.json new file mode 100644 index 00000000..62640e9a --- /dev/null +++ b/YuMi/Assets.xcassets/low/newhome/home_slider_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_slider_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_slider_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/newhome/home_slider_bg.imageset/home_slider_bg@2x.png b/YuMi/Assets.xcassets/low/newhome/home_slider_bg.imageset/home_slider_bg@2x.png new file mode 100644 index 00000000..9c511db4 Binary files /dev/null and b/YuMi/Assets.xcassets/low/newhome/home_slider_bg.imageset/home_slider_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/low/newhome/home_slider_bg.imageset/home_slider_bg@3x.png b/YuMi/Assets.xcassets/low/newhome/home_slider_bg.imageset/home_slider_bg@3x.png new file mode 100644 index 00000000..e1b82ed3 Binary files /dev/null and b/YuMi/Assets.xcassets/low/newhome/home_slider_bg.imageset/home_slider_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/low/newhome/home_top_bg.imageset/Contents.json b/YuMi/Assets.xcassets/low/newhome/home_top_bg.imageset/Contents.json new file mode 100644 index 00000000..8fd49509 --- /dev/null +++ b/YuMi/Assets.xcassets/low/newhome/home_top_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_top_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_top_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/newhome/home_top_bg.imageset/home_top_bg@2x.png b/YuMi/Assets.xcassets/low/newhome/home_top_bg.imageset/home_top_bg@2x.png new file mode 100644 index 00000000..7be7a240 Binary files /dev/null and b/YuMi/Assets.xcassets/low/newhome/home_top_bg.imageset/home_top_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/low/newhome/home_top_bg.imageset/home_top_bg@3x.png b/YuMi/Assets.xcassets/low/newhome/home_top_bg.imageset/home_top_bg@3x.png new file mode 100644 index 00000000..76e7ed94 Binary files /dev/null and b/YuMi/Assets.xcassets/low/newhome/home_top_bg.imageset/home_top_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/low/newhome/yumi_main_party_number.imageset/Contents.json b/YuMi/Assets.xcassets/low/newhome/yumi_main_party_number.imageset/Contents.json deleted file mode 100644 index 17a52698..00000000 --- a/YuMi/Assets.xcassets/low/newhome/yumi_main_party_number.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_party_number@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_party_number@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/newhome/yumi_main_party_number.imageset/yumi_main_party_number@2x.png b/YuMi/Assets.xcassets/low/newhome/yumi_main_party_number.imageset/yumi_main_party_number@2x.png deleted file mode 100644 index f37f2dcc..00000000 Binary files a/YuMi/Assets.xcassets/low/newhome/yumi_main_party_number.imageset/yumi_main_party_number@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/newhome/yumi_main_party_number.imageset/yumi_main_party_number@3x.png b/YuMi/Assets.xcassets/low/newhome/yumi_main_party_number.imageset/yumi_main_party_number@3x.png deleted file mode 100644 index 103c88d0..00000000 Binary files a/YuMi/Assets.xcassets/low/newhome/yumi_main_party_number.imageset/yumi_main_party_number@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/newhome/yumi_main_play_female_border.imageset/Contents.json b/YuMi/Assets.xcassets/low/newhome/yumi_main_play_female_border.imageset/Contents.json deleted file mode 100644 index 070e5e4c..00000000 --- a/YuMi/Assets.xcassets/low/newhome/yumi_main_play_female_border.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_play_female_border@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_play_female_border@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/newhome/yumi_main_play_female_border.imageset/yumi_main_play_female_border@2x.png b/YuMi/Assets.xcassets/low/newhome/yumi_main_play_female_border.imageset/yumi_main_play_female_border@2x.png deleted file mode 100644 index 56490888..00000000 Binary files a/YuMi/Assets.xcassets/low/newhome/yumi_main_play_female_border.imageset/yumi_main_play_female_border@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/newhome/yumi_main_play_female_border.imageset/yumi_main_play_female_border@3x.png b/YuMi/Assets.xcassets/low/newhome/yumi_main_play_female_border.imageset/yumi_main_play_female_border@3x.png deleted file mode 100644 index 289c14b1..00000000 Binary files a/YuMi/Assets.xcassets/low/newhome/yumi_main_play_female_border.imageset/yumi_main_play_female_border@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/newhome/yumi_main_play_male_border.imageset/Contents.json b/YuMi/Assets.xcassets/low/newhome/yumi_main_play_male_border.imageset/Contents.json deleted file mode 100644 index 1eee4538..00000000 --- a/YuMi/Assets.xcassets/low/newhome/yumi_main_play_male_border.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_play_male_border@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_play_male_border@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/newhome/yumi_main_play_male_border.imageset/yumi_main_play_male_border@2x.png b/YuMi/Assets.xcassets/low/newhome/yumi_main_play_male_border.imageset/yumi_main_play_male_border@2x.png deleted file mode 100644 index 6c91e4a0..00000000 Binary files a/YuMi/Assets.xcassets/low/newhome/yumi_main_play_male_border.imageset/yumi_main_play_male_border@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/newhome/yumi_main_play_male_border.imageset/yumi_main_play_male_border@3x.png b/YuMi/Assets.xcassets/low/newhome/yumi_main_play_male_border.imageset/yumi_main_play_male_border@3x.png deleted file mode 100644 index e48c1297..00000000 Binary files a/YuMi/Assets.xcassets/low/newhome/yumi_main_play_male_border.imageset/yumi_main_play_male_border@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/newhome/yumi_main_slider_background.imageset/Contents.json b/YuMi/Assets.xcassets/low/newhome/yumi_main_slider_background.imageset/Contents.json deleted file mode 100644 index 43afa69f..00000000 --- a/YuMi/Assets.xcassets/low/newhome/yumi_main_slider_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_slider_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_slider_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/newhome/yumi_main_slider_background.imageset/yumi_main_slider_background@2x.png b/YuMi/Assets.xcassets/low/newhome/yumi_main_slider_background.imageset/yumi_main_slider_background@2x.png deleted file mode 100644 index b3cb1ca1..00000000 Binary files a/YuMi/Assets.xcassets/low/newhome/yumi_main_slider_background.imageset/yumi_main_slider_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/newhome/yumi_main_slider_background.imageset/yumi_main_slider_background@3x.png b/YuMi/Assets.xcassets/low/newhome/yumi_main_slider_background.imageset/yumi_main_slider_background@3x.png deleted file mode 100644 index 0012027a..00000000 Binary files a/YuMi/Assets.xcassets/low/newhome/yumi_main_slider_background.imageset/yumi_main_slider_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/newhome/yumi_main_top_background.imageset/Contents.json b/YuMi/Assets.xcassets/low/newhome/yumi_main_top_background.imageset/Contents.json deleted file mode 100644 index 31e5ac9d..00000000 --- a/YuMi/Assets.xcassets/low/newhome/yumi_main_top_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_top_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_top_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/newhome/yumi_main_top_background.imageset/yumi_main_top_background@2x.png b/YuMi/Assets.xcassets/low/newhome/yumi_main_top_background.imageset/yumi_main_top_background@2x.png deleted file mode 100644 index af64611c..00000000 Binary files a/YuMi/Assets.xcassets/low/newhome/yumi_main_top_background.imageset/yumi_main_top_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/newhome/yumi_main_top_background.imageset/yumi_main_top_background@3x.png b/YuMi/Assets.xcassets/low/newhome/yumi_main_top_background.imageset/yumi_main_top_background@3x.png deleted file mode 100644 index de28c305..00000000 Binary files a/YuMi/Assets.xcassets/low/newhome/yumi_main_top_background.imageset/yumi_main_top_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/room_like_collect_room_hot.imageset/Contents.json b/YuMi/Assets.xcassets/low/room_like_collect_room_hot.imageset/Contents.json new file mode 100644 index 00000000..c15e7efd --- /dev/null +++ b/YuMi/Assets.xcassets/low/room_like_collect_room_hot.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_like_collect_room_hot@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_like_collect_room_hot@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/low/room_like_collect_room_hot.imageset/room_like_collect_room_hot@2x.png b/YuMi/Assets.xcassets/low/room_like_collect_room_hot.imageset/room_like_collect_room_hot@2x.png new file mode 100644 index 00000000..ef5ff695 Binary files /dev/null and b/YuMi/Assets.xcassets/low/room_like_collect_room_hot.imageset/room_like_collect_room_hot@2x.png differ diff --git a/YuMi/Assets.xcassets/low/room_like_collect_room_hot.imageset/room_like_collect_room_hot@3x.png b/YuMi/Assets.xcassets/low/room_like_collect_room_hot.imageset/room_like_collect_room_hot@3x.png new file mode 100644 index 00000000..cdb0137e Binary files /dev/null and b/YuMi/Assets.xcassets/low/room_like_collect_room_hot.imageset/room_like_collect_room_hot@3x.png differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_background.imageset/Contents.json b/YuMi/Assets.xcassets/low/yumi_main_background.imageset/Contents.json deleted file mode 100644 index 1128d56b..00000000 --- a/YuMi/Assets.xcassets/low/yumi_main_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_background@2x.png", "idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/yumi_main_background.imageset/yumi_main_background@2x.png b/YuMi/Assets.xcassets/low/yumi_main_background.imageset/yumi_main_background@2x.png deleted file mode 100644 index 3c2c331e..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_background.imageset/yumi_main_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_hot_section_logo.imageset/Contents.json b/YuMi/Assets.xcassets/low/yumi_main_hot_section_logo.imageset/Contents.json deleted file mode 100644 index ecf6eba3..00000000 --- a/YuMi/Assets.xcassets/low/yumi_main_hot_section_logo.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_hot_section_logo@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_hot_section_logo@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/yumi_main_hot_section_logo.imageset/yumi_main_hot_section_logo@2x.png b/YuMi/Assets.xcassets/low/yumi_main_hot_section_logo.imageset/yumi_main_hot_section_logo@2x.png deleted file mode 100644 index ab3f7827..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_hot_section_logo.imageset/yumi_main_hot_section_logo@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_hot_section_logo.imageset/yumi_main_hot_section_logo@3x.png b/YuMi/Assets.xcassets/low/yumi_main_hot_section_logo.imageset/yumi_main_hot_section_logo@3x.png deleted file mode 100644 index e5c6e040..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_hot_section_logo.imageset/yumi_main_hot_section_logo@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_like_across_pk_background.imageset/Contents.json b/YuMi/Assets.xcassets/low/yumi_main_like_across_pk_background.imageset/Contents.json deleted file mode 100644 index 8a215c06..00000000 --- a/YuMi/Assets.xcassets/low/yumi_main_like_across_pk_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_like_across_pk_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_like_across_pk_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/yumi_main_like_across_pk_background.imageset/yumi_main_like_across_pk_background@2x.png b/YuMi/Assets.xcassets/low/yumi_main_like_across_pk_background.imageset/yumi_main_like_across_pk_background@2x.png deleted file mode 100644 index 4c59c6f6..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_like_across_pk_background.imageset/yumi_main_like_across_pk_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_like_across_pk_background.imageset/yumi_main_like_across_pk_background@3x.png b/YuMi/Assets.xcassets/low/yumi_main_like_across_pk_background.imageset/yumi_main_like_across_pk_background@3x.png deleted file mode 100644 index 6329ba02..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_like_across_pk_background.imageset/yumi_main_like_across_pk_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_name.imageset/Contents.json b/YuMi/Assets.xcassets/low/yumi_main_name.imageset/Contents.json deleted file mode 100644 index 8c102d05..00000000 --- a/YuMi/Assets.xcassets/low/yumi_main_name.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_name@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_name@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/yumi_main_name.imageset/yumi_main_name@2x.png b/YuMi/Assets.xcassets/low/yumi_main_name.imageset/yumi_main_name@2x.png deleted file mode 100644 index cf8af186..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_name.imageset/yumi_main_name@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_name.imageset/yumi_main_name@3x.png b/YuMi/Assets.xcassets/low/yumi_main_name.imageset/yumi_main_name@3x.png deleted file mode 100644 index edc8c038..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_name.imageset/yumi_main_name@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_party_little_game_cover.imageset/Contents.json b/YuMi/Assets.xcassets/low/yumi_main_party_little_game_cover.imageset/Contents.json deleted file mode 100644 index cf8d7141..00000000 --- a/YuMi/Assets.xcassets/low/yumi_main_party_little_game_cover.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_party_little_game_cover@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_party_little_game_cover@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/yumi_main_party_little_game_cover.imageset/yumi_main_party_little_game_cover@2x.png b/YuMi/Assets.xcassets/low/yumi_main_party_little_game_cover.imageset/yumi_main_party_little_game_cover@2x.png deleted file mode 100644 index 77369de0..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_party_little_game_cover.imageset/yumi_main_party_little_game_cover@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_party_little_game_cover.imageset/yumi_main_party_little_game_cover@3x.png b/YuMi/Assets.xcassets/low/yumi_main_party_little_game_cover.imageset/yumi_main_party_little_game_cover@3x.png deleted file mode 100644 index 997bf96e..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_party_little_game_cover.imageset/yumi_main_party_little_game_cover@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_party_little_game_enter.imageset/Contents.json b/YuMi/Assets.xcassets/low/yumi_main_party_little_game_enter.imageset/Contents.json deleted file mode 100644 index 5d066693..00000000 --- a/YuMi/Assets.xcassets/low/yumi_main_party_little_game_enter.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_party_little_game_enter@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_party_little_game_enter@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/yumi_main_party_little_game_enter.imageset/yumi_main_party_little_game_enter@2x.png b/YuMi/Assets.xcassets/low/yumi_main_party_little_game_enter.imageset/yumi_main_party_little_game_enter@2x.png deleted file mode 100644 index 9eb1d139..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_party_little_game_enter.imageset/yumi_main_party_little_game_enter@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_party_little_game_enter.imageset/yumi_main_party_little_game_enter@3x.png b/YuMi/Assets.xcassets/low/yumi_main_party_little_game_enter.imageset/yumi_main_party_little_game_enter@3x.png deleted file mode 100644 index 41fba4df..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_party_little_game_enter.imageset/yumi_main_party_little_game_enter@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_party_little_game_match.imageset/Contents.json b/YuMi/Assets.xcassets/low/yumi_main_party_little_game_match.imageset/Contents.json deleted file mode 100644 index 51252945..00000000 --- a/YuMi/Assets.xcassets/low/yumi_main_party_little_game_match.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_party_little_game_match@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_party_little_game_match@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/yumi_main_party_little_game_match.imageset/yumi_main_party_little_game_match@2x.png b/YuMi/Assets.xcassets/low/yumi_main_party_little_game_match.imageset/yumi_main_party_little_game_match@2x.png deleted file mode 100644 index 279e1a7b..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_party_little_game_match.imageset/yumi_main_party_little_game_match@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_party_little_game_match.imageset/yumi_main_party_little_game_match@3x.png b/YuMi/Assets.xcassets/low/yumi_main_party_little_game_match.imageset/yumi_main_party_little_game_match@3x.png deleted file mode 100644 index 95908819..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_party_little_game_match.imageset/yumi_main_party_little_game_match@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_party_little_game_matter_background.imageset/Contents.json b/YuMi/Assets.xcassets/low/yumi_main_party_little_game_matter_background.imageset/Contents.json deleted file mode 100644 index db16ef80..00000000 --- a/YuMi/Assets.xcassets/low/yumi_main_party_little_game_matter_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_party_little_game_matter_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_party_little_game_matter_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/yumi_main_party_little_game_matter_background.imageset/yumi_main_party_little_game_matter_background@2x.png b/YuMi/Assets.xcassets/low/yumi_main_party_little_game_matter_background.imageset/yumi_main_party_little_game_matter_background@2x.png deleted file mode 100644 index 37b7093c..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_party_little_game_matter_background.imageset/yumi_main_party_little_game_matter_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_party_little_game_matter_background.imageset/yumi_main_party_little_game_matter_background@3x.png b/YuMi/Assets.xcassets/low/yumi_main_party_little_game_matter_background.imageset/yumi_main_party_little_game_matter_background@3x.png deleted file mode 100644 index 2c32b335..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_party_little_game_matter_background.imageset/yumi_main_party_little_game_matter_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_across_pk_background.imageset/Contents.json b/YuMi/Assets.xcassets/low/yumi_main_recommend_across_pk_background.imageset/Contents.json deleted file mode 100644 index 2edc0243..00000000 --- a/YuMi/Assets.xcassets/low/yumi_main_recommend_across_pk_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_recommend_across_pk_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_recommend_across_pk_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_across_pk_background.imageset/yumi_main_recommend_across_pk_background@2x.png b/YuMi/Assets.xcassets/low/yumi_main_recommend_across_pk_background.imageset/yumi_main_recommend_across_pk_background@2x.png deleted file mode 100644 index 1c365771..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_recommend_across_pk_background.imageset/yumi_main_recommend_across_pk_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_across_pk_background.imageset/yumi_main_recommend_across_pk_background@3x.png b/YuMi/Assets.xcassets/low/yumi_main_recommend_across_pk_background.imageset/yumi_main_recommend_across_pk_background@3x.png deleted file mode 100644 index 2b29c426..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_recommend_across_pk_background.imageset/yumi_main_recommend_across_pk_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_hot_note.imageset/Contents.json b/YuMi/Assets.xcassets/low/yumi_main_recommend_hot_note.imageset/Contents.json deleted file mode 100644 index acc56468..00000000 --- a/YuMi/Assets.xcassets/low/yumi_main_recommend_hot_note.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_recommend_hot_note@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_recommend_hot_note@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_hot_note.imageset/yumi_main_recommend_hot_note@2x.png b/YuMi/Assets.xcassets/low/yumi_main_recommend_hot_note.imageset/yumi_main_recommend_hot_note@2x.png deleted file mode 100644 index c304b0d8..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_recommend_hot_note.imageset/yumi_main_recommend_hot_note@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_hot_note.imageset/yumi_main_recommend_hot_note@3x.png b/YuMi/Assets.xcassets/low/yumi_main_recommend_hot_note.imageset/yumi_main_recommend_hot_note@3x.png deleted file mode 100644 index 3548d57d..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_recommend_hot_note.imageset/yumi_main_recommend_hot_note@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_indicator_room.imageset/Contents.json b/YuMi/Assets.xcassets/low/yumi_main_recommend_indicator_room.imageset/Contents.json deleted file mode 100644 index 9142bcee..00000000 --- a/YuMi/Assets.xcassets/low/yumi_main_recommend_indicator_room.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_recommend_indicator_room@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_recommend_indicator_room@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_indicator_room.imageset/yumi_main_recommend_indicator_room@2x.png b/YuMi/Assets.xcassets/low/yumi_main_recommend_indicator_room.imageset/yumi_main_recommend_indicator_room@2x.png deleted file mode 100644 index 139a798c..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_recommend_indicator_room.imageset/yumi_main_recommend_indicator_room@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_indicator_room.imageset/yumi_main_recommend_indicator_room@3x.png b/YuMi/Assets.xcassets/low/yumi_main_recommend_indicator_room.imageset/yumi_main_recommend_indicator_room@3x.png deleted file mode 100644 index 03f74445..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_recommend_indicator_room.imageset/yumi_main_recommend_indicator_room@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_labelbackground.imageset/Contents.json b/YuMi/Assets.xcassets/low/yumi_main_recommend_labelbackground.imageset/Contents.json deleted file mode 100644 index 2b3c54fc..00000000 --- a/YuMi/Assets.xcassets/low/yumi_main_recommend_labelbackground.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_recommend_labelbackground@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_recommend_labelbackground@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_labelbackground.imageset/yumi_main_recommend_labelbackground@2x.png b/YuMi/Assets.xcassets/low/yumi_main_recommend_labelbackground.imageset/yumi_main_recommend_labelbackground@2x.png deleted file mode 100644 index 166de603..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_recommend_labelbackground.imageset/yumi_main_recommend_labelbackground@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_labelbackground.imageset/yumi_main_recommend_labelbackground@3x.png b/YuMi/Assets.xcassets/low/yumi_main_recommend_labelbackground.imageset/yumi_main_recommend_labelbackground@3x.png deleted file mode 100644 index 0de27926..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_recommend_labelbackground.imageset/yumi_main_recommend_labelbackground@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_nick_shadow_background.imageset/Contents.json b/YuMi/Assets.xcassets/low/yumi_main_recommend_nick_shadow_background.imageset/Contents.json deleted file mode 100644 index 6af006db..00000000 --- a/YuMi/Assets.xcassets/low/yumi_main_recommend_nick_shadow_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_recommend_nick_shadow_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_recommend_nick_shadow_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_nick_shadow_background.imageset/yumi_main_recommend_nick_shadow_background@2x.png b/YuMi/Assets.xcassets/low/yumi_main_recommend_nick_shadow_background.imageset/yumi_main_recommend_nick_shadow_background@2x.png deleted file mode 100644 index e7b850a3..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_recommend_nick_shadow_background.imageset/yumi_main_recommend_nick_shadow_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_nick_shadow_background.imageset/yumi_main_recommend_nick_shadow_background@3x.png b/YuMi/Assets.xcassets/low/yumi_main_recommend_nick_shadow_background.imageset/yumi_main_recommend_nick_shadow_background@3x.png deleted file mode 100644 index 41becd0b..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_recommend_nick_shadow_background.imageset/yumi_main_recommend_nick_shadow_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_play_list_background.imageset/Contents.json b/YuMi/Assets.xcassets/low/yumi_main_recommend_play_list_background.imageset/Contents.json deleted file mode 100644 index 91e97ca1..00000000 --- a/YuMi/Assets.xcassets/low/yumi_main_recommend_play_list_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_recommend_play_list_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_recommend_play_list_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_play_list_background.imageset/yumi_main_recommend_play_list_background@2x.png b/YuMi/Assets.xcassets/low/yumi_main_recommend_play_list_background.imageset/yumi_main_recommend_play_list_background@2x.png deleted file mode 100644 index cb392cbb..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_recommend_play_list_background.imageset/yumi_main_recommend_play_list_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_play_list_background.imageset/yumi_main_recommend_play_list_background@3x.png b/YuMi/Assets.xcassets/low/yumi_main_recommend_play_list_background.imageset/yumi_main_recommend_play_list_background@3x.png deleted file mode 100644 index 2ddc34a2..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_recommend_play_list_background.imageset/yumi_main_recommend_play_list_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_play_person_logo.imageset/Contents.json b/YuMi/Assets.xcassets/low/yumi_main_recommend_play_person_logo.imageset/Contents.json deleted file mode 100644 index 9dcb45e1..00000000 --- a/YuMi/Assets.xcassets/low/yumi_main_recommend_play_person_logo.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_recommend_play_person_logo@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_recommend_play_person_logo@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_play_person_logo.imageset/yumi_main_recommend_play_person_logo@2x.png b/YuMi/Assets.xcassets/low/yumi_main_recommend_play_person_logo.imageset/yumi_main_recommend_play_person_logo@2x.png deleted file mode 100644 index cb2fc3d1..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_recommend_play_person_logo.imageset/yumi_main_recommend_play_person_logo@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_play_person_logo.imageset/yumi_main_recommend_play_person_logo@3x.png b/YuMi/Assets.xcassets/low/yumi_main_recommend_play_person_logo.imageset/yumi_main_recommend_play_person_logo@3x.png deleted file mode 100644 index f51aa71b..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_recommend_play_person_logo.imageset/yumi_main_recommend_play_person_logo@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_scope_more.imageset/Contents.json b/YuMi/Assets.xcassets/low/yumi_main_recommend_scope_more.imageset/Contents.json deleted file mode 100644 index 16d13ea4..00000000 --- a/YuMi/Assets.xcassets/low/yumi_main_recommend_scope_more.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_recommend_scope_more@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_recommend_scope_more@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_scope_more.imageset/yumi_main_recommend_scope_more@2x.png b/YuMi/Assets.xcassets/low/yumi_main_recommend_scope_more.imageset/yumi_main_recommend_scope_more@2x.png deleted file mode 100644 index 2ea81ab4..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_recommend_scope_more.imageset/yumi_main_recommend_scope_more@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_scope_more.imageset/yumi_main_recommend_scope_more@3x.png b/YuMi/Assets.xcassets/low/yumi_main_recommend_scope_more.imageset/yumi_main_recommend_scope_more@3x.png deleted file mode 100644 index dbf12f2d..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_recommend_scope_more.imageset/yumi_main_recommend_scope_more@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_scope_placeholder.imageset/Contents.json b/YuMi/Assets.xcassets/low/yumi_main_recommend_scope_placeholder.imageset/Contents.json deleted file mode 100644 index efd11c73..00000000 --- a/YuMi/Assets.xcassets/low/yumi_main_recommend_scope_placeholder.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_recommend_scope_placeholder@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_recommend_scope_placeholder@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_scope_placeholder.imageset/yumi_main_recommend_scope_placeholder@2x.png b/YuMi/Assets.xcassets/low/yumi_main_recommend_scope_placeholder.imageset/yumi_main_recommend_scope_placeholder@2x.png deleted file mode 100644 index 666122da..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_recommend_scope_placeholder.imageset/yumi_main_recommend_scope_placeholder@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_scope_placeholder.imageset/yumi_main_recommend_scope_placeholder@3x.png b/YuMi/Assets.xcassets/low/yumi_main_recommend_scope_placeholder.imageset/yumi_main_recommend_scope_placeholder@3x.png deleted file mode 100644 index de868397..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_recommend_scope_placeholder.imageset/yumi_main_recommend_scope_placeholder@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_section_logo.imageset/Contents.json b/YuMi/Assets.xcassets/low/yumi_main_recommend_section_logo.imageset/Contents.json deleted file mode 100644 index 9e9201dd..00000000 --- a/YuMi/Assets.xcassets/low/yumi_main_recommend_section_logo.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_recommend_section_logo@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_recommend_section_logo@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_section_logo.imageset/yumi_main_recommend_section_logo@2x.png b/YuMi/Assets.xcassets/low/yumi_main_recommend_section_logo.imageset/yumi_main_recommend_section_logo@2x.png deleted file mode 100644 index fc0e1c4a..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_recommend_section_logo.imageset/yumi_main_recommend_section_logo@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_recommend_section_logo.imageset/yumi_main_recommend_section_logo@3x.png b/YuMi/Assets.xcassets/low/yumi_main_recommend_section_logo.imageset/yumi_main_recommend_section_logo@3x.png deleted file mode 100644 index 29fc3c4f..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_recommend_section_logo.imageset/yumi_main_recommend_section_logo@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_scope_list_note_background.imageset/Contents.json b/YuMi/Assets.xcassets/low/yumi_main_scope_list_note_background.imageset/Contents.json deleted file mode 100644 index 56eb5150..00000000 --- a/YuMi/Assets.xcassets/low/yumi_main_scope_list_note_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_scope_list_note_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_scope_list_note_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/yumi_main_scope_list_note_background.imageset/yumi_main_scope_list_note_background@2x.png b/YuMi/Assets.xcassets/low/yumi_main_scope_list_note_background.imageset/yumi_main_scope_list_note_background@2x.png deleted file mode 100644 index 2165c769..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_scope_list_note_background.imageset/yumi_main_scope_list_note_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_scope_list_note_background.imageset/yumi_main_scope_list_note_background@3x.png b/YuMi/Assets.xcassets/low/yumi_main_scope_list_note_background.imageset/yumi_main_scope_list_note_background@3x.png deleted file mode 100644 index e8361dba..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_scope_list_note_background.imageset/yumi_main_scope_list_note_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_scope_list_shadow_background.imageset/Contents.json b/YuMi/Assets.xcassets/low/yumi_main_scope_list_shadow_background.imageset/Contents.json deleted file mode 100644 index cd66ead0..00000000 --- a/YuMi/Assets.xcassets/low/yumi_main_scope_list_shadow_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_scope_list_shadow_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_scope_list_shadow_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/yumi_main_scope_list_shadow_background.imageset/yumi_main_scope_list_shadow_background@2x.png b/YuMi/Assets.xcassets/low/yumi_main_scope_list_shadow_background.imageset/yumi_main_scope_list_shadow_background@2x.png deleted file mode 100644 index 18ed228f..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_scope_list_shadow_background.imageset/yumi_main_scope_list_shadow_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_scope_list_shadow_background.imageset/yumi_main_scope_list_shadow_background@3x.png b/YuMi/Assets.xcassets/low/yumi_main_scope_list_shadow_background.imageset/yumi_main_scope_list_shadow_background@3x.png deleted file mode 100644 index 8f6c0bb7..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_scope_list_shadow_background.imageset/yumi_main_scope_list_shadow_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_search_input_search.imageset/Contents.json b/YuMi/Assets.xcassets/low/yumi_main_search_input_search.imageset/Contents.json deleted file mode 100644 index 59fe8a98..00000000 --- a/YuMi/Assets.xcassets/low/yumi_main_search_input_search.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_search_input_search@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_search_input_search@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/yumi_main_search_input_search.imageset/yumi_main_search_input_search@2x.png b/YuMi/Assets.xcassets/low/yumi_main_search_input_search.imageset/yumi_main_search_input_search@2x.png deleted file mode 100644 index 54d74f30..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_search_input_search.imageset/yumi_main_search_input_search@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_search_input_search.imageset/yumi_main_search_input_search@3x.png b/YuMi/Assets.xcassets/low/yumi_main_search_input_search.imageset/yumi_main_search_input_search@3x.png deleted file mode 100644 index 3da55297..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_search_input_search.imageset/yumi_main_search_input_search@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_search_user_online.imageset/Contents.json b/YuMi/Assets.xcassets/low/yumi_main_search_user_online.imageset/Contents.json deleted file mode 100644 index e734436f..00000000 --- a/YuMi/Assets.xcassets/low/yumi_main_search_user_online.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_search_user_online@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_search_user_online@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/yumi_main_search_user_online.imageset/yumi_main_search_user_online@2x.png b/YuMi/Assets.xcassets/low/yumi_main_search_user_online.imageset/yumi_main_search_user_online@2x.png deleted file mode 100644 index 6fb2b19e..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_search_user_online.imageset/yumi_main_search_user_online@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_search_user_online.imageset/yumi_main_search_user_online@3x.png b/YuMi/Assets.xcassets/low/yumi_main_search_user_online.imageset/yumi_main_search_user_online@3x.png deleted file mode 100644 index 72898e3e..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_search_user_online.imageset/yumi_main_search_user_online@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_search_white_back.imageset/Contents.json b/YuMi/Assets.xcassets/low/yumi_main_search_white_back.imageset/Contents.json deleted file mode 100644 index ca76d18a..00000000 --- a/YuMi/Assets.xcassets/low/yumi_main_search_white_back.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_search_white_back@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_search_white_back@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/yumi_main_search_white_back.imageset/yumi_main_search_white_back@2x.png b/YuMi/Assets.xcassets/low/yumi_main_search_white_back.imageset/yumi_main_search_white_back@2x.png deleted file mode 100644 index 20850ff7..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_search_white_back.imageset/yumi_main_search_white_back@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_search_white_back.imageset/yumi_main_search_white_back@3x.png b/YuMi/Assets.xcassets/low/yumi_main_search_white_back.imageset/yumi_main_search_white_back@3x.png deleted file mode 100644 index 190e9fba..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_search_white_back.imageset/yumi_main_search_white_back@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_title_background.imageset/Contents.json b/YuMi/Assets.xcassets/low/yumi_main_title_background.imageset/Contents.json deleted file mode 100644 index 82f7ee71..00000000 --- a/YuMi/Assets.xcassets/low/yumi_main_title_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_title_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_title_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/yumi_main_title_background.imageset/yumi_main_title_background@2x.png b/YuMi/Assets.xcassets/low/yumi_main_title_background.imageset/yumi_main_title_background@2x.png deleted file mode 100644 index dea19f30..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_title_background.imageset/yumi_main_title_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_title_background.imageset/yumi_main_title_background@3x.png b/YuMi/Assets.xcassets/low/yumi_main_title_background.imageset/yumi_main_title_background@3x.png deleted file mode 100644 index a202d3db..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_title_background.imageset/yumi_main_title_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_user_circle.imageset/Contents.json b/YuMi/Assets.xcassets/low/yumi_main_user_circle.imageset/Contents.json deleted file mode 100644 index 919616f5..00000000 --- a/YuMi/Assets.xcassets/low/yumi_main_user_circle.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_main_user_circle@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_main_user_circle@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/yumi_main_user_circle.imageset/yumi_main_user_circle@2x.png b/YuMi/Assets.xcassets/low/yumi_main_user_circle.imageset/yumi_main_user_circle@2x.png deleted file mode 100644 index ad58b413..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_user_circle.imageset/yumi_main_user_circle@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_main_user_circle.imageset/yumi_main_user_circle@3x.png b/YuMi/Assets.xcassets/low/yumi_main_user_circle.imageset/yumi_main_user_circle@3x.png deleted file mode 100644 index 89f0ed71..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_main_user_circle.imageset/yumi_main_user_circle@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_scope_like_collect_scope_hot.imageset/Contents.json b/YuMi/Assets.xcassets/low/yumi_scope_like_collect_scope_hot.imageset/Contents.json deleted file mode 100644 index 51205c4b..00000000 --- a/YuMi/Assets.xcassets/low/yumi_scope_like_collect_scope_hot.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_like_collect_scope_hot@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_like_collect_scope_hot@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/low/yumi_scope_like_collect_scope_hot.imageset/yumi_scope_like_collect_scope_hot@2x.png b/YuMi/Assets.xcassets/low/yumi_scope_like_collect_scope_hot.imageset/yumi_scope_like_collect_scope_hot@2x.png deleted file mode 100644 index e53ecc2c..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_scope_like_collect_scope_hot.imageset/yumi_scope_like_collect_scope_hot@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/low/yumi_scope_like_collect_scope_hot.imageset/yumi_scope_like_collect_scope_hot@3x.png b/YuMi/Assets.xcassets/low/yumi_scope_like_collect_scope_hot.imageset/yumi_scope_like_collect_scope_hot@3x.png deleted file mode 100644 index 734247f7..00000000 Binary files a/YuMi/Assets.xcassets/low/yumi_scope_like_collect_scope_hot.imageset/yumi_scope_like_collect_scope_hot@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/main/Contents.json b/YuMi/Assets.xcassets/main/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/main/Contents.json +++ b/YuMi/Assets.xcassets/main/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/main/tab_gameHome_normal.imageset/Contents.json b/YuMi/Assets.xcassets/main/tab_gameHome_normal.imageset/Contents.json new file mode 100644 index 00000000..f9e07d2e --- /dev/null +++ b/YuMi/Assets.xcassets/main/tab_gameHome_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tab_gameHome_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tab_gameHome_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/main/tab_gameHome_normal.imageset/tab_gameHome_normal@2x.png b/YuMi/Assets.xcassets/main/tab_gameHome_normal.imageset/tab_gameHome_normal@2x.png new file mode 100644 index 00000000..78d06ee5 Binary files /dev/null and b/YuMi/Assets.xcassets/main/tab_gameHome_normal.imageset/tab_gameHome_normal@2x.png differ diff --git a/YuMi/Assets.xcassets/main/tab_gameHome_normal.imageset/tab_gameHome_normal@3x.png b/YuMi/Assets.xcassets/main/tab_gameHome_normal.imageset/tab_gameHome_normal@3x.png new file mode 100644 index 00000000..7c502e0b Binary files /dev/null and b/YuMi/Assets.xcassets/main/tab_gameHome_normal.imageset/tab_gameHome_normal@3x.png differ diff --git a/YuMi/Assets.xcassets/main/tab_gameHome_selected.imageset/Contents.json b/YuMi/Assets.xcassets/main/tab_gameHome_selected.imageset/Contents.json new file mode 100644 index 00000000..7982e184 --- /dev/null +++ b/YuMi/Assets.xcassets/main/tab_gameHome_selected.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tab_gameHome_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tab_gameHome_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/main/tab_gameHome_selected.imageset/tab_gameHome_selected@2x.png b/YuMi/Assets.xcassets/main/tab_gameHome_selected.imageset/tab_gameHome_selected@2x.png new file mode 100644 index 00000000..87cbb78a Binary files /dev/null and b/YuMi/Assets.xcassets/main/tab_gameHome_selected.imageset/tab_gameHome_selected@2x.png differ diff --git a/YuMi/Assets.xcassets/main/tab_gameHome_selected.imageset/tab_gameHome_selected@3x.png b/YuMi/Assets.xcassets/main/tab_gameHome_selected.imageset/tab_gameHome_selected@3x.png new file mode 100644 index 00000000..12573cd6 Binary files /dev/null and b/YuMi/Assets.xcassets/main/tab_gameHome_selected.imageset/tab_gameHome_selected@3x.png differ diff --git a/YuMi/Assets.xcassets/main/tab_message_normal.imageset/Contents.json b/YuMi/Assets.xcassets/main/tab_message_normal.imageset/Contents.json new file mode 100644 index 00000000..931b135f --- /dev/null +++ b/YuMi/Assets.xcassets/main/tab_message_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tab_message_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tab_message_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/main/tab_message_normal.imageset/tab_message_normal@2x.png b/YuMi/Assets.xcassets/main/tab_message_normal.imageset/tab_message_normal@2x.png new file mode 100644 index 00000000..33aab9f6 Binary files /dev/null and b/YuMi/Assets.xcassets/main/tab_message_normal.imageset/tab_message_normal@2x.png differ diff --git a/YuMi/Assets.xcassets/main/tab_message_normal.imageset/tab_message_normal@3x.png b/YuMi/Assets.xcassets/main/tab_message_normal.imageset/tab_message_normal@3x.png new file mode 100644 index 00000000..606c2a4b Binary files /dev/null and b/YuMi/Assets.xcassets/main/tab_message_normal.imageset/tab_message_normal@3x.png differ diff --git a/YuMi/Assets.xcassets/main/tab_message_selected.imageset/Contents.json b/YuMi/Assets.xcassets/main/tab_message_selected.imageset/Contents.json new file mode 100644 index 00000000..57e79920 --- /dev/null +++ b/YuMi/Assets.xcassets/main/tab_message_selected.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tab_message_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tab_message_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/main/tab_message_selected.imageset/tab_message_selected@2x.png b/YuMi/Assets.xcassets/main/tab_message_selected.imageset/tab_message_selected@2x.png new file mode 100644 index 00000000..9703fe5c Binary files /dev/null and b/YuMi/Assets.xcassets/main/tab_message_selected.imageset/tab_message_selected@2x.png differ diff --git a/YuMi/Assets.xcassets/main/tab_message_selected.imageset/tab_message_selected@3x.png b/YuMi/Assets.xcassets/main/tab_message_selected.imageset/tab_message_selected@3x.png new file mode 100644 index 00000000..030b246f Binary files /dev/null and b/YuMi/Assets.xcassets/main/tab_message_selected.imageset/tab_message_selected@3x.png differ diff --git a/YuMi/Assets.xcassets/main/tab_mine_normal.imageset/Contents.json b/YuMi/Assets.xcassets/main/tab_mine_normal.imageset/Contents.json new file mode 100644 index 00000000..892f413e --- /dev/null +++ b/YuMi/Assets.xcassets/main/tab_mine_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tab_mine_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tab_mine_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/main/tab_mine_normal.imageset/tab_mine_normal@2x.png b/YuMi/Assets.xcassets/main/tab_mine_normal.imageset/tab_mine_normal@2x.png new file mode 100644 index 00000000..1303071a Binary files /dev/null and b/YuMi/Assets.xcassets/main/tab_mine_normal.imageset/tab_mine_normal@2x.png differ diff --git a/YuMi/Assets.xcassets/main/tab_mine_normal.imageset/tab_mine_normal@3x.png b/YuMi/Assets.xcassets/main/tab_mine_normal.imageset/tab_mine_normal@3x.png new file mode 100644 index 00000000..86d4c9ca Binary files /dev/null and b/YuMi/Assets.xcassets/main/tab_mine_normal.imageset/tab_mine_normal@3x.png differ diff --git a/YuMi/Assets.xcassets/main/tab_mine_selected.imageset/Contents.json b/YuMi/Assets.xcassets/main/tab_mine_selected.imageset/Contents.json new file mode 100644 index 00000000..1c1a6f8a --- /dev/null +++ b/YuMi/Assets.xcassets/main/tab_mine_selected.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tab_mine_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tab_mine_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/main/tab_mine_selected.imageset/tab_mine_selected@2x.png b/YuMi/Assets.xcassets/main/tab_mine_selected.imageset/tab_mine_selected@2x.png new file mode 100644 index 00000000..f09e6f01 Binary files /dev/null and b/YuMi/Assets.xcassets/main/tab_mine_selected.imageset/tab_mine_selected@2x.png differ diff --git a/YuMi/Assets.xcassets/main/tab_mine_selected.imageset/tab_mine_selected@3x.png b/YuMi/Assets.xcassets/main/tab_mine_selected.imageset/tab_mine_selected@3x.png new file mode 100644 index 00000000..1e1eb17a Binary files /dev/null and b/YuMi/Assets.xcassets/main/tab_mine_selected.imageset/tab_mine_selected@3x.png differ diff --git a/YuMi/Assets.xcassets/main/tab_monents_normal.imageset/Contents.json b/YuMi/Assets.xcassets/main/tab_monents_normal.imageset/Contents.json new file mode 100644 index 00000000..790ee69e --- /dev/null +++ b/YuMi/Assets.xcassets/main/tab_monents_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tab_monents_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tab_monents_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/main/tab_monents_normal.imageset/tab_monents_normal@2x.png b/YuMi/Assets.xcassets/main/tab_monents_normal.imageset/tab_monents_normal@2x.png new file mode 100644 index 00000000..3772b938 Binary files /dev/null and b/YuMi/Assets.xcassets/main/tab_monents_normal.imageset/tab_monents_normal@2x.png differ diff --git a/YuMi/Assets.xcassets/main/tab_monents_normal.imageset/tab_monents_normal@3x.png b/YuMi/Assets.xcassets/main/tab_monents_normal.imageset/tab_monents_normal@3x.png new file mode 100644 index 00000000..cf6417c4 Binary files /dev/null and b/YuMi/Assets.xcassets/main/tab_monents_normal.imageset/tab_monents_normal@3x.png differ diff --git a/YuMi/Assets.xcassets/main/tab_monents_select.imageset/Contents.json b/YuMi/Assets.xcassets/main/tab_monents_select.imageset/Contents.json new file mode 100644 index 00000000..addb7d74 --- /dev/null +++ b/YuMi/Assets.xcassets/main/tab_monents_select.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tab_monents_select@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tab_monents_select@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/main/tab_monents_select.imageset/tab_monents_select@2x.png b/YuMi/Assets.xcassets/main/tab_monents_select.imageset/tab_monents_select@2x.png new file mode 100644 index 00000000..3d3c11d3 Binary files /dev/null and b/YuMi/Assets.xcassets/main/tab_monents_select.imageset/tab_monents_select@2x.png differ diff --git a/YuMi/Assets.xcassets/main/tab_monents_select.imageset/tab_monents_select@3x.png b/YuMi/Assets.xcassets/main/tab_monents_select.imageset/tab_monents_select@3x.png new file mode 100644 index 00000000..44fef2aa Binary files /dev/null and b/YuMi/Assets.xcassets/main/tab_monents_select.imageset/tab_monents_select@3x.png differ diff --git a/YuMi/Assets.xcassets/main/yumi_tab_center_normal.imageset/Contents.json b/YuMi/Assets.xcassets/main/yumi_tab_center_normal.imageset/Contents.json deleted file mode 100644 index 40079b67..00000000 --- a/YuMi/Assets.xcassets/main/yumi_tab_center_normal.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_tab_center_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_tab_center_normal@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/main/yumi_tab_center_normal.imageset/yumi_tab_center_normal@2x.png b/YuMi/Assets.xcassets/main/yumi_tab_center_normal.imageset/yumi_tab_center_normal@2x.png deleted file mode 100644 index 72b59a0a..00000000 Binary files a/YuMi/Assets.xcassets/main/yumi_tab_center_normal.imageset/yumi_tab_center_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/main/yumi_tab_center_normal.imageset/yumi_tab_center_normal@3x.png b/YuMi/Assets.xcassets/main/yumi_tab_center_normal.imageset/yumi_tab_center_normal@3x.png deleted file mode 100644 index f5a57e0d..00000000 Binary files a/YuMi/Assets.xcassets/main/yumi_tab_center_normal.imageset/yumi_tab_center_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/main/yumi_tab_center_selected.imageset/Contents.json b/YuMi/Assets.xcassets/main/yumi_tab_center_selected.imageset/Contents.json deleted file mode 100644 index 3c918a23..00000000 --- a/YuMi/Assets.xcassets/main/yumi_tab_center_selected.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_tab_center_selected@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_tab_center_selected@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/main/yumi_tab_center_selected.imageset/yumi_tab_center_selected@2x.png b/YuMi/Assets.xcassets/main/yumi_tab_center_selected.imageset/yumi_tab_center_selected@2x.png deleted file mode 100644 index a1901470..00000000 Binary files a/YuMi/Assets.xcassets/main/yumi_tab_center_selected.imageset/yumi_tab_center_selected@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/main/yumi_tab_center_selected.imageset/yumi_tab_center_selected@3x.png b/YuMi/Assets.xcassets/main/yumi_tab_center_selected.imageset/yumi_tab_center_selected@3x.png deleted file mode 100644 index 601b681e..00000000 Binary files a/YuMi/Assets.xcassets/main/yumi_tab_center_selected.imageset/yumi_tab_center_selected@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/main/yumi_tab_gameHome_normal.imageset/Contents.json b/YuMi/Assets.xcassets/main/yumi_tab_gameHome_normal.imageset/Contents.json deleted file mode 100644 index b77870e7..00000000 --- a/YuMi/Assets.xcassets/main/yumi_tab_gameHome_normal.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_tab_gameHome_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_tab_gameHome_normal@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/main/yumi_tab_gameHome_normal.imageset/yumi_tab_gameHome_normal@2x.png b/YuMi/Assets.xcassets/main/yumi_tab_gameHome_normal.imageset/yumi_tab_gameHome_normal@2x.png deleted file mode 100644 index f8afae69..00000000 Binary files a/YuMi/Assets.xcassets/main/yumi_tab_gameHome_normal.imageset/yumi_tab_gameHome_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/main/yumi_tab_gameHome_normal.imageset/yumi_tab_gameHome_normal@3x.png b/YuMi/Assets.xcassets/main/yumi_tab_gameHome_normal.imageset/yumi_tab_gameHome_normal@3x.png deleted file mode 100644 index b602f4b6..00000000 Binary files a/YuMi/Assets.xcassets/main/yumi_tab_gameHome_normal.imageset/yumi_tab_gameHome_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/main/yumi_tab_gameHome_selected.imageset/Contents.json b/YuMi/Assets.xcassets/main/yumi_tab_gameHome_selected.imageset/Contents.json deleted file mode 100644 index 4b02c105..00000000 --- a/YuMi/Assets.xcassets/main/yumi_tab_gameHome_selected.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_tab_gameHome_selected@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_tab_gameHome_selected@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/main/yumi_tab_gameHome_selected.imageset/yumi_tab_gameHome_selected@2x.png b/YuMi/Assets.xcassets/main/yumi_tab_gameHome_selected.imageset/yumi_tab_gameHome_selected@2x.png deleted file mode 100644 index 63951436..00000000 Binary files a/YuMi/Assets.xcassets/main/yumi_tab_gameHome_selected.imageset/yumi_tab_gameHome_selected@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/main/yumi_tab_gameHome_selected.imageset/yumi_tab_gameHome_selected@3x.png b/YuMi/Assets.xcassets/main/yumi_tab_gameHome_selected.imageset/yumi_tab_gameHome_selected@3x.png deleted file mode 100644 index 9eda1756..00000000 Binary files a/YuMi/Assets.xcassets/main/yumi_tab_gameHome_selected.imageset/yumi_tab_gameHome_selected@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/main/yumi_tab_monents_normal.imageset/Contents.json b/YuMi/Assets.xcassets/main/yumi_tab_monents_normal.imageset/Contents.json deleted file mode 100644 index 7a3896b5..00000000 --- a/YuMi/Assets.xcassets/main/yumi_tab_monents_normal.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_tab_monents_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_tab_monents_normal@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/main/yumi_tab_monents_normal.imageset/yumi_tab_monents_normal@2x.png b/YuMi/Assets.xcassets/main/yumi_tab_monents_normal.imageset/yumi_tab_monents_normal@2x.png deleted file mode 100644 index dc88dab9..00000000 Binary files a/YuMi/Assets.xcassets/main/yumi_tab_monents_normal.imageset/yumi_tab_monents_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/main/yumi_tab_monents_normal.imageset/yumi_tab_monents_normal@3x.png b/YuMi/Assets.xcassets/main/yumi_tab_monents_normal.imageset/yumi_tab_monents_normal@3x.png deleted file mode 100644 index 71b168b9..00000000 Binary files a/YuMi/Assets.xcassets/main/yumi_tab_monents_normal.imageset/yumi_tab_monents_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/main/yumi_tab_monents_select.imageset/Contents.json b/YuMi/Assets.xcassets/main/yumi_tab_monents_select.imageset/Contents.json deleted file mode 100644 index 086da546..00000000 --- a/YuMi/Assets.xcassets/main/yumi_tab_monents_select.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_tab_monents_select@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_tab_monents_select@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/main/yumi_tab_monents_select.imageset/yumi_tab_monents_select@2x.png b/YuMi/Assets.xcassets/main/yumi_tab_monents_select.imageset/yumi_tab_monents_select@2x.png deleted file mode 100644 index 84eaf6b2..00000000 Binary files a/YuMi/Assets.xcassets/main/yumi_tab_monents_select.imageset/yumi_tab_monents_select@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/main/yumi_tab_monents_select.imageset/yumi_tab_monents_select@3x.png b/YuMi/Assets.xcassets/main/yumi_tab_monents_select.imageset/yumi_tab_monents_select@3x.png deleted file mode 100644 index d3ddacf5..00000000 Binary files a/YuMi/Assets.xcassets/main/yumi_tab_monents_select.imageset/yumi_tab_monents_select@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/main/yumi_tab_msg_normal.imageset/Contents.json b/YuMi/Assets.xcassets/main/yumi_tab_msg_normal.imageset/Contents.json deleted file mode 100644 index 4da8bdd1..00000000 --- a/YuMi/Assets.xcassets/main/yumi_tab_msg_normal.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_tab_msg_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_tab_msg_normal@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/main/yumi_tab_msg_normal.imageset/yumi_tab_msg_normal@2x.png b/YuMi/Assets.xcassets/main/yumi_tab_msg_normal.imageset/yumi_tab_msg_normal@2x.png deleted file mode 100644 index 575b8d1b..00000000 Binary files a/YuMi/Assets.xcassets/main/yumi_tab_msg_normal.imageset/yumi_tab_msg_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/main/yumi_tab_msg_normal.imageset/yumi_tab_msg_normal@3x.png b/YuMi/Assets.xcassets/main/yumi_tab_msg_normal.imageset/yumi_tab_msg_normal@3x.png deleted file mode 100644 index fe50f33f..00000000 Binary files a/YuMi/Assets.xcassets/main/yumi_tab_msg_normal.imageset/yumi_tab_msg_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/main/yumi_tab_msg_selected.imageset/Contents.json b/YuMi/Assets.xcassets/main/yumi_tab_msg_selected.imageset/Contents.json deleted file mode 100644 index 2724d5b5..00000000 --- a/YuMi/Assets.xcassets/main/yumi_tab_msg_selected.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_tab_msg_selected@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_tab_msg_selected@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/main/yumi_tab_msg_selected.imageset/yumi_tab_msg_selected@2x.png b/YuMi/Assets.xcassets/main/yumi_tab_msg_selected.imageset/yumi_tab_msg_selected@2x.png deleted file mode 100644 index b3239212..00000000 Binary files a/YuMi/Assets.xcassets/main/yumi_tab_msg_selected.imageset/yumi_tab_msg_selected@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/main/yumi_tab_msg_selected.imageset/yumi_tab_msg_selected@3x.png b/YuMi/Assets.xcassets/main/yumi_tab_msg_selected.imageset/yumi_tab_msg_selected@3x.png deleted file mode 100644 index 6a7c4de4..00000000 Binary files a/YuMi/Assets.xcassets/main/yumi_tab_msg_selected.imageset/yumi_tab_msg_selected@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/Contents.json b/YuMi/Assets.xcassets/middle/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/middle/Contents.json +++ b/YuMi/Assets.xcassets/middle/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/middle/GiftLuckTab/Contents.json b/YuMi/Assets.xcassets/middle/GiftLuckTab/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/middle/GiftLuckTab/Contents.json +++ b/YuMi/Assets.xcassets/middle/GiftLuckTab/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/middle/GiftLuckTab/gift_lucky_broadcast_bg.imageset/Contents.json b/YuMi/Assets.xcassets/middle/GiftLuckTab/gift_lucky_broadcast_bg.imageset/Contents.json new file mode 100644 index 00000000..ddb69cd5 --- /dev/null +++ b/YuMi/Assets.xcassets/middle/GiftLuckTab/gift_lucky_broadcast_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gift_lucky_broadcast_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gift_lucky_broadcast_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/middle/GiftLuckTab/gift_lucky_broadcast_bg.imageset/gift_lucky_broadcast_bg@2x.png b/YuMi/Assets.xcassets/middle/GiftLuckTab/gift_lucky_broadcast_bg.imageset/gift_lucky_broadcast_bg@2x.png new file mode 100644 index 00000000..0bdbf946 Binary files /dev/null and b/YuMi/Assets.xcassets/middle/GiftLuckTab/gift_lucky_broadcast_bg.imageset/gift_lucky_broadcast_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/middle/GiftLuckTab/gift_lucky_broadcast_bg.imageset/gift_lucky_broadcast_bg@3x.png b/YuMi/Assets.xcassets/middle/GiftLuckTab/gift_lucky_broadcast_bg.imageset/gift_lucky_broadcast_bg@3x.png new file mode 100644 index 00000000..8ce84517 Binary files /dev/null and b/YuMi/Assets.xcassets/middle/GiftLuckTab/gift_lucky_broadcast_bg.imageset/gift_lucky_broadcast_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_background.imageset/Contents.json b/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_background.imageset/Contents.json deleted file mode 100644 index 9f7fc176..00000000 --- a/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_present_lucky_broadcast_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_present_lucky_broadcast_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_background.imageset/yumi_present_lucky_broadcast_background@2x.png b/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_background.imageset/yumi_present_lucky_broadcast_background@2x.png deleted file mode 100644 index 61ea2829..00000000 Binary files a/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_background.imageset/yumi_present_lucky_broadcast_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_background.imageset/yumi_present_lucky_broadcast_background@3x.png b/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_background.imageset/yumi_present_lucky_broadcast_background@3x.png deleted file mode 100644 index d703b966..00000000 Binary files a/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_background.imageset/yumi_present_lucky_broadcast_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_pic.imageset/Contents.json b/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_pic.imageset/Contents.json deleted file mode 100644 index 7d4dac34..00000000 --- a/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_pic.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_present_lucky_broadcast_pic@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_present_lucky_broadcast_pic@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_pic.imageset/yumi_present_lucky_broadcast_pic@2x.png b/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_pic.imageset/yumi_present_lucky_broadcast_pic@2x.png deleted file mode 100644 index 4676af77..00000000 Binary files a/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_pic.imageset/yumi_present_lucky_broadcast_pic@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_pic.imageset/yumi_present_lucky_broadcast_pic@3x.png b/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_pic.imageset/yumi_present_lucky_broadcast_pic@3x.png deleted file mode 100644 index 67accccf..00000000 Binary files a/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_pic.imageset/yumi_present_lucky_broadcast_pic@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_playType.imageset/Contents.json b/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_playType.imageset/Contents.json deleted file mode 100644 index 5a95f175..00000000 --- a/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_playType.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_present_lucky_broadcast_playType@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_present_lucky_broadcast_playType@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_playType.imageset/yumi_present_lucky_broadcast_playType@2x.png b/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_playType.imageset/yumi_present_lucky_broadcast_playType@2x.png deleted file mode 100644 index 5d0cb3b5..00000000 Binary files a/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_playType.imageset/yumi_present_lucky_broadcast_playType@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_playType.imageset/yumi_present_lucky_broadcast_playType@3x.png b/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_playType.imageset/yumi_present_lucky_broadcast_playType@3x.png deleted file mode 100644 index 4ca10774..00000000 Binary files a/YuMi/Assets.xcassets/middle/GiftLuckTab/yumi_present_lucky_broadcast_playType.imageset/yumi_present_lucky_broadcast_playType@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/Contents.json b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/Contents.json +++ b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_weekStar_background.imageset/Contents.json b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_weekStar_background.imageset/Contents.json new file mode 100644 index 00000000..e417b94d --- /dev/null +++ b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_weekStar_background.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gift_weekStar_background@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gift_weekStar_background@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_weekStar_background.imageset/gift_weekStar_background@2x.png b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_weekStar_background.imageset/gift_weekStar_background@2x.png new file mode 100644 index 00000000..9a33a3ee Binary files /dev/null and b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_weekStar_background.imageset/gift_weekStar_background@2x.png differ diff --git a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_weekStar_background.imageset/gift_weekStar_background@3x.png b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_weekStar_background.imageset/gift_weekStar_background@3x.png new file mode 100644 index 00000000..52772eb0 Binary files /dev/null and b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_weekStar_background.imageset/gift_weekStar_background@3x.png differ diff --git a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_weekStar_entrance.imageset/Contents.json b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_weekStar_entrance.imageset/Contents.json new file mode 100644 index 00000000..80a2cbbe --- /dev/null +++ b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_weekStar_entrance.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gift_weekStar_entrance@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gift_weekStar_entrance@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_weekStar_entrance.imageset/gift_weekStar_entrance@2x.png b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_weekStar_entrance.imageset/gift_weekStar_entrance@2x.png new file mode 100644 index 00000000..53413405 Binary files /dev/null and b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_weekStar_entrance.imageset/gift_weekStar_entrance@2x.png differ diff --git a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_weekStar_entrance.imageset/gift_weekStar_entrance@3x.png b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_weekStar_entrance.imageset/gift_weekStar_entrance@3x.png new file mode 100644 index 00000000..0a8e198c Binary files /dev/null and b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_weekStar_entrance.imageset/gift_weekStar_entrance@3x.png differ diff --git a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/yumi_present_weekStar_background.imageset/Contents.json b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/yumi_present_weekStar_background.imageset/Contents.json deleted file mode 100644 index 51e2a4f9..00000000 --- a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/yumi_present_weekStar_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_present_weekStar_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_present_weekStar_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/yumi_present_weekStar_background.imageset/yumi_present_weekStar_background@2x.png b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/yumi_present_weekStar_background.imageset/yumi_present_weekStar_background@2x.png deleted file mode 100644 index c37ae598..00000000 Binary files a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/yumi_present_weekStar_background.imageset/yumi_present_weekStar_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/yumi_present_weekStar_background.imageset/yumi_present_weekStar_background@3x.png b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/yumi_present_weekStar_background.imageset/yumi_present_weekStar_background@3x.png deleted file mode 100644 index 1d702001..00000000 Binary files a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/yumi_present_weekStar_background.imageset/yumi_present_weekStar_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/yumi_present_weekStar_entrance.imageset/Contents.json b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/yumi_present_weekStar_entrance.imageset/Contents.json deleted file mode 100644 index 7bbfa6d9..00000000 --- a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/yumi_present_weekStar_entrance.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_present_weekStar_entrance@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_present_weekStar_entrance@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/yumi_present_weekStar_entrance.imageset/yumi_present_weekStar_entrance@2x.png b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/yumi_present_weekStar_entrance.imageset/yumi_present_weekStar_entrance@2x.png deleted file mode 100644 index 5a910416..00000000 Binary files a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/yumi_present_weekStar_entrance.imageset/yumi_present_weekStar_entrance@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/yumi_present_weekStar_entrance.imageset/yumi_present_weekStar_entrance@3x.png b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/yumi_present_weekStar_entrance.imageset/yumi_present_weekStar_entrance@3x.png deleted file mode 100644 index d9703e69..00000000 Binary files a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/yumi_present_weekStar_entrance.imageset/yumi_present_weekStar_entrance@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/gift_bar_count_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/middle/gift_bar_count_arrow.imageset/Contents.json new file mode 100644 index 00000000..6a8024e7 --- /dev/null +++ b/YuMi/Assets.xcassets/middle/gift_bar_count_arrow.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gift_bar_count_arrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gift_bar_count_arrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/middle/gift_bar_count_arrow.imageset/gift_bar_count_arrow@2x.png b/YuMi/Assets.xcassets/middle/gift_bar_count_arrow.imageset/gift_bar_count_arrow@2x.png new file mode 100644 index 00000000..430d0f59 Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_bar_count_arrow.imageset/gift_bar_count_arrow@2x.png differ diff --git a/YuMi/Assets.xcassets/middle/gift_bar_count_arrow.imageset/gift_bar_count_arrow@3x.png b/YuMi/Assets.xcassets/middle/gift_bar_count_arrow.imageset/gift_bar_count_arrow@3x.png new file mode 100644 index 00000000..64ca49c5 Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_bar_count_arrow.imageset/gift_bar_count_arrow@3x.png differ diff --git a/YuMi/Assets.xcassets/middle/gift_bar_count_up_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/middle/gift_bar_count_up_arrow.imageset/Contents.json new file mode 100644 index 00000000..577e884c --- /dev/null +++ b/YuMi/Assets.xcassets/middle/gift_bar_count_up_arrow.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gift_bar_count_up_arrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gift_bar_count_up_arrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/middle/gift_bar_count_up_arrow.imageset/gift_bar_count_up_arrow@2x.png b/YuMi/Assets.xcassets/middle/gift_bar_count_up_arrow.imageset/gift_bar_count_up_arrow@2x.png new file mode 100644 index 00000000..61f2ef34 Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_bar_count_up_arrow.imageset/gift_bar_count_up_arrow@2x.png differ diff --git a/YuMi/Assets.xcassets/middle/gift_bar_count_up_arrow.imageset/gift_bar_count_up_arrow@3x.png b/YuMi/Assets.xcassets/middle/gift_bar_count_up_arrow.imageset/gift_bar_count_up_arrow@3x.png new file mode 100644 index 00000000..9977f725 Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_bar_count_up_arrow.imageset/gift_bar_count_up_arrow@3x.png differ diff --git a/YuMi/Assets.xcassets/middle/gift_bar_recharge_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/middle/gift_bar_recharge_arrow.imageset/Contents.json new file mode 100644 index 00000000..fc40b1b0 --- /dev/null +++ b/YuMi/Assets.xcassets/middle/gift_bar_recharge_arrow.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gift_bar_recharge_arrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gift_bar_recharge_arrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/middle/gift_bar_recharge_arrow.imageset/gift_bar_recharge_arrow@2x.png b/YuMi/Assets.xcassets/middle/gift_bar_recharge_arrow.imageset/gift_bar_recharge_arrow@2x.png new file mode 100644 index 00000000..5addaaa6 Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_bar_recharge_arrow.imageset/gift_bar_recharge_arrow@2x.png differ diff --git a/YuMi/Assets.xcassets/middle/gift_bar_recharge_arrow.imageset/gift_bar_recharge_arrow@3x.png b/YuMi/Assets.xcassets/middle/gift_bar_recharge_arrow.imageset/gift_bar_recharge_arrow@3x.png new file mode 100644 index 00000000..3594fb7f Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_bar_recharge_arrow.imageset/gift_bar_recharge_arrow@3x.png differ diff --git a/YuMi/Assets.xcassets/middle/gift_bar_white_count_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/middle/gift_bar_white_count_arrow.imageset/Contents.json new file mode 100644 index 00000000..24cc59a7 --- /dev/null +++ b/YuMi/Assets.xcassets/middle/gift_bar_white_count_arrow.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gift_bar_white_count_arrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gift_bar_white_count_arrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/middle/gift_bar_white_count_arrow.imageset/gift_bar_white_count_arrow@2x.png b/YuMi/Assets.xcassets/middle/gift_bar_white_count_arrow.imageset/gift_bar_white_count_arrow@2x.png new file mode 100644 index 00000000..a21ee46e Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_bar_white_count_arrow.imageset/gift_bar_white_count_arrow@2x.png differ diff --git a/YuMi/Assets.xcassets/middle/gift_bar_white_count_arrow.imageset/gift_bar_white_count_arrow@3x.png b/YuMi/Assets.xcassets/middle/gift_bar_white_count_arrow.imageset/gift_bar_white_count_arrow@3x.png new file mode 100644 index 00000000..020ec767 Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_bar_white_count_arrow.imageset/gift_bar_white_count_arrow@3x.png differ diff --git a/YuMi/Assets.xcassets/middle/gift_bar_white_count_up_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/middle/gift_bar_white_count_up_arrow.imageset/Contents.json new file mode 100644 index 00000000..5d024712 --- /dev/null +++ b/YuMi/Assets.xcassets/middle/gift_bar_white_count_up_arrow.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gift_bar_white_count_up_arrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gift_bar_white_count_up_arrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/middle/gift_bar_white_count_up_arrow.imageset/gift_bar_white_count_up_arrow@2x.png b/YuMi/Assets.xcassets/middle/gift_bar_white_count_up_arrow.imageset/gift_bar_white_count_up_arrow@2x.png new file mode 100644 index 00000000..4771ef3a Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_bar_white_count_up_arrow.imageset/gift_bar_white_count_up_arrow@2x.png differ diff --git a/YuMi/Assets.xcassets/middle/gift_bar_white_count_up_arrow.imageset/gift_bar_white_count_up_arrow@3x.png b/YuMi/Assets.xcassets/middle/gift_bar_white_count_up_arrow.imageset/gift_bar_white_count_up_arrow@3x.png new file mode 100644 index 00000000..1a948970 Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_bar_white_count_up_arrow.imageset/gift_bar_white_count_up_arrow@3x.png differ diff --git a/YuMi/Assets.xcassets/middle/gift_constellationBanner_bg.imageset/Contents.json b/YuMi/Assets.xcassets/middle/gift_constellationBanner_bg.imageset/Contents.json new file mode 100644 index 00000000..abce1bf7 --- /dev/null +++ b/YuMi/Assets.xcassets/middle/gift_constellationBanner_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gift_constellationBanner_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gift_constellationBanner_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/middle/gift_constellationBanner_bg.imageset/gift_constellationBanner_bg@2x.png b/YuMi/Assets.xcassets/middle/gift_constellationBanner_bg.imageset/gift_constellationBanner_bg@2x.png new file mode 100644 index 00000000..07bf4002 Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_constellationBanner_bg.imageset/gift_constellationBanner_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/middle/gift_constellationBanner_bg.imageset/gift_constellationBanner_bg@3x.png b/YuMi/Assets.xcassets/middle/gift_constellationBanner_bg.imageset/gift_constellationBanner_bg@3x.png new file mode 100644 index 00000000..392f0d4b Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_constellationBanner_bg.imageset/gift_constellationBanner_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/middle/gift_diamond.imageset/Contents.json b/YuMi/Assets.xcassets/middle/gift_diamond.imageset/Contents.json new file mode 100644 index 00000000..531cbd61 --- /dev/null +++ b/YuMi/Assets.xcassets/middle/gift_diamond.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gift_diamond@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gift_diamond@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/middle/gift_diamond.imageset/gift_diamond@2x.png b/YuMi/Assets.xcassets/middle/gift_diamond.imageset/gift_diamond@2x.png new file mode 100644 index 00000000..06c2565d Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_diamond.imageset/gift_diamond@2x.png differ diff --git a/YuMi/Assets.xcassets/middle/gift_diamond.imageset/gift_diamond@3x.png b/YuMi/Assets.xcassets/middle/gift_diamond.imageset/gift_diamond@3x.png new file mode 100644 index 00000000..9a947a38 Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_diamond.imageset/gift_diamond@3x.png differ diff --git a/YuMi/Assets.xcassets/middle/gift_info_empty_bg.imageset/Contents.json b/YuMi/Assets.xcassets/middle/gift_info_empty_bg.imageset/Contents.json new file mode 100644 index 00000000..cc25dc25 --- /dev/null +++ b/YuMi/Assets.xcassets/middle/gift_info_empty_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gift_info_empty_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gift_info_empty_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/middle/gift_info_empty_bg.imageset/gift_info_empty_bg@2x.png b/YuMi/Assets.xcassets/middle/gift_info_empty_bg.imageset/gift_info_empty_bg@2x.png new file mode 100644 index 00000000..59c613c3 Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_info_empty_bg.imageset/gift_info_empty_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/middle/gift_info_empty_bg.imageset/gift_info_empty_bg@3x.png b/YuMi/Assets.xcassets/middle/gift_info_empty_bg.imageset/gift_info_empty_bg@3x.png new file mode 100644 index 00000000..056eb864 Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_info_empty_bg.imageset/gift_info_empty_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/middle/gift_tag_effect.imageset/Contents.json b/YuMi/Assets.xcassets/middle/gift_tag_effect.imageset/Contents.json new file mode 100644 index 00000000..88fbb7b6 --- /dev/null +++ b/YuMi/Assets.xcassets/middle/gift_tag_effect.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gift_tag_effect@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gift_tag_effect@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/middle/gift_tag_effect.imageset/gift_tag_effect@2x.png b/YuMi/Assets.xcassets/middle/gift_tag_effect.imageset/gift_tag_effect@2x.png new file mode 100644 index 00000000..a9a1a85d Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_tag_effect.imageset/gift_tag_effect@2x.png differ diff --git a/YuMi/Assets.xcassets/middle/gift_tag_effect.imageset/gift_tag_effect@3x.png b/YuMi/Assets.xcassets/middle/gift_tag_effect.imageset/gift_tag_effect@3x.png new file mode 100644 index 00000000..36b5b8ca Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_tag_effect.imageset/gift_tag_effect@3x.png differ diff --git a/YuMi/Assets.xcassets/middle/gift_tag_exclude.imageset/Contents.json b/YuMi/Assets.xcassets/middle/gift_tag_exclude.imageset/Contents.json new file mode 100644 index 00000000..59215e0f --- /dev/null +++ b/YuMi/Assets.xcassets/middle/gift_tag_exclude.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gift_tag_exclude@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gift_tag_exclude@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/middle/gift_tag_exclude.imageset/gift_tag_exclude@2x.png b/YuMi/Assets.xcassets/middle/gift_tag_exclude.imageset/gift_tag_exclude@2x.png new file mode 100644 index 00000000..8ade975c Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_tag_exclude.imageset/gift_tag_exclude@2x.png differ diff --git a/YuMi/Assets.xcassets/middle/gift_tag_exclude.imageset/gift_tag_exclude@3x.png b/YuMi/Assets.xcassets/middle/gift_tag_exclude.imageset/gift_tag_exclude@3x.png new file mode 100644 index 00000000..f2f3943f Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_tag_exclude.imageset/gift_tag_exclude@3x.png differ diff --git a/YuMi/Assets.xcassets/middle/gift_tag_latest.imageset/Contents.json b/YuMi/Assets.xcassets/middle/gift_tag_latest.imageset/Contents.json new file mode 100644 index 00000000..6ff24fe8 --- /dev/null +++ b/YuMi/Assets.xcassets/middle/gift_tag_latest.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gift_tag_latest@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gift_tag_latest@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/middle/gift_tag_latest.imageset/gift_tag_latest@2x.png b/YuMi/Assets.xcassets/middle/gift_tag_latest.imageset/gift_tag_latest@2x.png new file mode 100644 index 00000000..8be4c9c6 Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_tag_latest.imageset/gift_tag_latest@2x.png differ diff --git a/YuMi/Assets.xcassets/middle/gift_tag_latest.imageset/gift_tag_latest@3x.png b/YuMi/Assets.xcassets/middle/gift_tag_latest.imageset/gift_tag_latest@3x.png new file mode 100644 index 00000000..208a14a0 Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_tag_latest.imageset/gift_tag_latest@3x.png differ diff --git a/YuMi/Assets.xcassets/middle/gift_tag_time_limit.imageset/Contents.json b/YuMi/Assets.xcassets/middle/gift_tag_time_limit.imageset/Contents.json new file mode 100644 index 00000000..9c60eabf --- /dev/null +++ b/YuMi/Assets.xcassets/middle/gift_tag_time_limit.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gift_tag_time_limit@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gift_tag_time_limit@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/middle/gift_tag_time_limit.imageset/gift_tag_time_limit@2x.png b/YuMi/Assets.xcassets/middle/gift_tag_time_limit.imageset/gift_tag_time_limit@2x.png new file mode 100644 index 00000000..d1877ad8 Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_tag_time_limit.imageset/gift_tag_time_limit@2x.png differ diff --git a/YuMi/Assets.xcassets/middle/gift_tag_time_limit.imageset/gift_tag_time_limit@3x.png b/YuMi/Assets.xcassets/middle/gift_tag_time_limit.imageset/gift_tag_time_limit@3x.png new file mode 100644 index 00000000..e070c974 Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_tag_time_limit.imageset/gift_tag_time_limit@3x.png differ diff --git a/YuMi/Assets.xcassets/middle/gift_type_newIcon.imageset/Contents.json b/YuMi/Assets.xcassets/middle/gift_type_newIcon.imageset/Contents.json new file mode 100644 index 00000000..6528cd0c --- /dev/null +++ b/YuMi/Assets.xcassets/middle/gift_type_newIcon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gift_type_newIcon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gift_type_newIcon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/middle/gift_type_newIcon.imageset/gift_type_newIcon@2x.png b/YuMi/Assets.xcassets/middle/gift_type_newIcon.imageset/gift_type_newIcon@2x.png new file mode 100644 index 00000000..c6d3bf4f Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_type_newIcon.imageset/gift_type_newIcon@2x.png differ diff --git a/YuMi/Assets.xcassets/middle/gift_type_newIcon.imageset/gift_type_newIcon@3x.png b/YuMi/Assets.xcassets/middle/gift_type_newIcon.imageset/gift_type_newIcon@3x.png new file mode 100644 index 00000000..e40dadac Binary files /dev/null and b/YuMi/Assets.xcassets/middle/gift_type_newIcon.imageset/gift_type_newIcon@3x.png differ diff --git a/YuMi/Assets.xcassets/middle/room_gift_graffiti_close.imageset/Contents.json b/YuMi/Assets.xcassets/middle/room_gift_graffiti_close.imageset/Contents.json new file mode 100644 index 00000000..c885b53b --- /dev/null +++ b/YuMi/Assets.xcassets/middle/room_gift_graffiti_close.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_gift_graffiti_close@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_gift_graffiti_close@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/middle/room_gift_graffiti_close.imageset/room_gift_graffiti_close@2x.png b/YuMi/Assets.xcassets/middle/room_gift_graffiti_close.imageset/room_gift_graffiti_close@2x.png new file mode 100644 index 00000000..19e86c51 Binary files /dev/null and b/YuMi/Assets.xcassets/middle/room_gift_graffiti_close.imageset/room_gift_graffiti_close@2x.png differ diff --git a/YuMi/Assets.xcassets/middle/room_gift_graffiti_close.imageset/room_gift_graffiti_close@3x.png b/YuMi/Assets.xcassets/middle/room_gift_graffiti_close.imageset/room_gift_graffiti_close@3x.png new file mode 100644 index 00000000..39801abc Binary files /dev/null and b/YuMi/Assets.xcassets/middle/room_gift_graffiti_close.imageset/room_gift_graffiti_close@3x.png differ diff --git a/YuMi/Assets.xcassets/middle/room_gift_graffiti_delete.imageset/Contents.json b/YuMi/Assets.xcassets/middle/room_gift_graffiti_delete.imageset/Contents.json new file mode 100644 index 00000000..ea61a618 --- /dev/null +++ b/YuMi/Assets.xcassets/middle/room_gift_graffiti_delete.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_gift_graffiti_delete@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_gift_graffiti_delete@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/middle/room_gift_graffiti_delete.imageset/room_gift_graffiti_delete@2x.png b/YuMi/Assets.xcassets/middle/room_gift_graffiti_delete.imageset/room_gift_graffiti_delete@2x.png new file mode 100644 index 00000000..de3a4dc1 Binary files /dev/null and b/YuMi/Assets.xcassets/middle/room_gift_graffiti_delete.imageset/room_gift_graffiti_delete@2x.png differ diff --git a/YuMi/Assets.xcassets/middle/room_gift_graffiti_delete.imageset/room_gift_graffiti_delete@3x.png b/YuMi/Assets.xcassets/middle/room_gift_graffiti_delete.imageset/room_gift_graffiti_delete@3x.png new file mode 100644 index 00000000..c77384c4 Binary files /dev/null and b/YuMi/Assets.xcassets/middle/room_gift_graffiti_delete.imageset/room_gift_graffiti_delete@3x.png differ diff --git a/YuMi/Assets.xcassets/middle/room_gift_graffiti_hand.imageset/Contents.json b/YuMi/Assets.xcassets/middle/room_gift_graffiti_hand.imageset/Contents.json new file mode 100644 index 00000000..bc993863 --- /dev/null +++ b/YuMi/Assets.xcassets/middle/room_gift_graffiti_hand.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_gift_graffiti_hand@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_gift_graffiti_hand@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/middle/room_gift_graffiti_hand.imageset/room_gift_graffiti_hand@2x.png b/YuMi/Assets.xcassets/middle/room_gift_graffiti_hand.imageset/room_gift_graffiti_hand@2x.png new file mode 100644 index 00000000..8424c6d4 Binary files /dev/null and b/YuMi/Assets.xcassets/middle/room_gift_graffiti_hand.imageset/room_gift_graffiti_hand@2x.png differ diff --git a/YuMi/Assets.xcassets/middle/room_gift_graffiti_hand.imageset/room_gift_graffiti_hand@3x.png b/YuMi/Assets.xcassets/middle/room_gift_graffiti_hand.imageset/room_gift_graffiti_hand@3x.png new file mode 100644 index 00000000..c09cdfe6 Binary files /dev/null and b/YuMi/Assets.xcassets/middle/room_gift_graffiti_hand.imageset/room_gift_graffiti_hand@3x.png differ diff --git a/YuMi/Assets.xcassets/middle/room_gift_graffiti_repeal.imageset/Contents.json b/YuMi/Assets.xcassets/middle/room_gift_graffiti_repeal.imageset/Contents.json new file mode 100644 index 00000000..d3a7287c --- /dev/null +++ b/YuMi/Assets.xcassets/middle/room_gift_graffiti_repeal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_gift_graffiti_repeal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_gift_graffiti_repeal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/middle/room_gift_graffiti_repeal.imageset/room_gift_graffiti_repeal@2x.png b/YuMi/Assets.xcassets/middle/room_gift_graffiti_repeal.imageset/room_gift_graffiti_repeal@2x.png new file mode 100644 index 00000000..8e23ae15 Binary files /dev/null and b/YuMi/Assets.xcassets/middle/room_gift_graffiti_repeal.imageset/room_gift_graffiti_repeal@2x.png differ diff --git a/YuMi/Assets.xcassets/middle/room_gift_graffiti_repeal.imageset/room_gift_graffiti_repeal@3x.png b/YuMi/Assets.xcassets/middle/room_gift_graffiti_repeal.imageset/room_gift_graffiti_repeal@3x.png new file mode 100644 index 00000000..2a13a5ec Binary files /dev/null and b/YuMi/Assets.xcassets/middle/room_gift_graffiti_repeal.imageset/room_gift_graffiti_repeal@3x.png differ diff --git a/YuMi/Assets.xcassets/middle/room_gift_panel_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/middle/room_gift_panel_arrow.imageset/Contents.json new file mode 100644 index 00000000..cf12d8af --- /dev/null +++ b/YuMi/Assets.xcassets/middle/room_gift_panel_arrow.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_gift_panel_arrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_gift_panel_arrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/middle/room_gift_panel_arrow.imageset/room_gift_panel_arrow@2x.png b/YuMi/Assets.xcassets/middle/room_gift_panel_arrow.imageset/room_gift_panel_arrow@2x.png new file mode 100644 index 00000000..c621bdeb Binary files /dev/null and b/YuMi/Assets.xcassets/middle/room_gift_panel_arrow.imageset/room_gift_panel_arrow@2x.png differ diff --git a/YuMi/Assets.xcassets/middle/room_gift_panel_arrow.imageset/room_gift_panel_arrow@3x.png b/YuMi/Assets.xcassets/middle/room_gift_panel_arrow.imageset/room_gift_panel_arrow@3x.png new file mode 100644 index 00000000..e4e3f81c Binary files /dev/null and b/YuMi/Assets.xcassets/middle/room_gift_panel_arrow.imageset/room_gift_panel_arrow@3x.png differ diff --git a/YuMi/Assets.xcassets/middle/yumi_present_constellationBanner_background.imageset/Contents.json b/YuMi/Assets.xcassets/middle/yumi_present_constellationBanner_background.imageset/Contents.json deleted file mode 100644 index 036d9498..00000000 --- a/YuMi/Assets.xcassets/middle/yumi_present_constellationBanner_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_present_constellationBanner_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_present_constellationBanner_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/middle/yumi_present_constellationBanner_background.imageset/yumi_present_constellationBanner_background@2x.png b/YuMi/Assets.xcassets/middle/yumi_present_constellationBanner_background.imageset/yumi_present_constellationBanner_background@2x.png deleted file mode 100644 index 682dbdb3..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_present_constellationBanner_background.imageset/yumi_present_constellationBanner_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_present_constellationBanner_background.imageset/yumi_present_constellationBanner_background@3x.png b/YuMi/Assets.xcassets/middle/yumi_present_constellationBanner_background.imageset/yumi_present_constellationBanner_background@3x.png deleted file mode 100644 index 5234c8cf..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_present_constellationBanner_background.imageset/yumi_present_constellationBanner_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_present_diamond.imageset/Contents.json b/YuMi/Assets.xcassets/middle/yumi_present_diamond.imageset/Contents.json deleted file mode 100644 index 023c7502..00000000 --- a/YuMi/Assets.xcassets/middle/yumi_present_diamond.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_present_diamond@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_present_diamond@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/middle/yumi_present_diamond.imageset/yumi_present_diamond@2x.png b/YuMi/Assets.xcassets/middle/yumi_present_diamond.imageset/yumi_present_diamond@2x.png deleted file mode 100644 index 4b44ffe1..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_present_diamond.imageset/yumi_present_diamond@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_present_diamond.imageset/yumi_present_diamond@3x.png b/YuMi/Assets.xcassets/middle/yumi_present_diamond.imageset/yumi_present_diamond@3x.png deleted file mode 100644 index 81131ba2..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_present_diamond.imageset/yumi_present_diamond@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_present_gen_empty_background.imageset/Contents.json b/YuMi/Assets.xcassets/middle/yumi_present_gen_empty_background.imageset/Contents.json deleted file mode 100644 index 2af9c149..00000000 --- a/YuMi/Assets.xcassets/middle/yumi_present_gen_empty_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_present_gen_empty_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_present_gen_empty_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/middle/yumi_present_gen_empty_background.imageset/yumi_present_gen_empty_background@2x.png b/YuMi/Assets.xcassets/middle/yumi_present_gen_empty_background.imageset/yumi_present_gen_empty_background@2x.png deleted file mode 100644 index 54e195d6..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_present_gen_empty_background.imageset/yumi_present_gen_empty_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_present_gen_empty_background.imageset/yumi_present_gen_empty_background@3x.png b/YuMi/Assets.xcassets/middle/yumi_present_gen_empty_background.imageset/yumi_present_gen_empty_background@3x.png deleted file mode 100644 index 07d24d31..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_present_gen_empty_background.imageset/yumi_present_gen_empty_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_present_labeleffect.imageset/Contents.json b/YuMi/Assets.xcassets/middle/yumi_present_labeleffect.imageset/Contents.json deleted file mode 100644 index aa455ad9..00000000 --- a/YuMi/Assets.xcassets/middle/yumi_present_labeleffect.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_present_labeleffect@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_present_labeleffect@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/middle/yumi_present_labeleffect.imageset/yumi_present_labeleffect@2x.png b/YuMi/Assets.xcassets/middle/yumi_present_labeleffect.imageset/yumi_present_labeleffect@2x.png deleted file mode 100644 index fbc0b9eb..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_present_labeleffect.imageset/yumi_present_labeleffect@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_present_labeleffect.imageset/yumi_present_labeleffect@3x.png b/YuMi/Assets.xcassets/middle/yumi_present_labeleffect.imageset/yumi_present_labeleffect@3x.png deleted file mode 100644 index da4dca60..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_present_labeleffect.imageset/yumi_present_labeleffect@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_present_labelexclude.imageset/Contents.json b/YuMi/Assets.xcassets/middle/yumi_present_labelexclude.imageset/Contents.json deleted file mode 100644 index 2fcb1a40..00000000 --- a/YuMi/Assets.xcassets/middle/yumi_present_labelexclude.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_present_labelexclude@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_present_labelexclude@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/middle/yumi_present_labelexclude.imageset/yumi_present_labelexclude@2x.png b/YuMi/Assets.xcassets/middle/yumi_present_labelexclude.imageset/yumi_present_labelexclude@2x.png deleted file mode 100644 index 2ff97492..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_present_labelexclude.imageset/yumi_present_labelexclude@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_present_labelexclude.imageset/yumi_present_labelexclude@3x.png b/YuMi/Assets.xcassets/middle/yumi_present_labelexclude.imageset/yumi_present_labelexclude@3x.png deleted file mode 100644 index b2606782..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_present_labelexclude.imageset/yumi_present_labelexclude@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_present_labellatest.imageset/Contents.json b/YuMi/Assets.xcassets/middle/yumi_present_labellatest.imageset/Contents.json deleted file mode 100644 index 8e5ecff5..00000000 --- a/YuMi/Assets.xcassets/middle/yumi_present_labellatest.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_present_labellatest@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_present_labellatest@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/middle/yumi_present_labellatest.imageset/yumi_present_labellatest@2x.png b/YuMi/Assets.xcassets/middle/yumi_present_labellatest.imageset/yumi_present_labellatest@2x.png deleted file mode 100644 index d09ed6c8..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_present_labellatest.imageset/yumi_present_labellatest@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_present_labellatest.imageset/yumi_present_labellatest@3x.png b/YuMi/Assets.xcassets/middle/yumi_present_labellatest.imageset/yumi_present_labellatest@3x.png deleted file mode 100644 index 75e4813b..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_present_labellatest.imageset/yumi_present_labellatest@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_present_labeltime_limit.imageset/Contents.json b/YuMi/Assets.xcassets/middle/yumi_present_labeltime_limit.imageset/Contents.json deleted file mode 100644 index 15d12eaf..00000000 --- a/YuMi/Assets.xcassets/middle/yumi_present_labeltime_limit.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_present_labeltime_limit@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_present_labeltime_limit@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/middle/yumi_present_labeltime_limit.imageset/yumi_present_labeltime_limit@2x.png b/YuMi/Assets.xcassets/middle/yumi_present_labeltime_limit.imageset/yumi_present_labeltime_limit@2x.png deleted file mode 100644 index 280e2b9a..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_present_labeltime_limit.imageset/yumi_present_labeltime_limit@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_present_labeltime_limit.imageset/yumi_present_labeltime_limit@3x.png b/YuMi/Assets.xcassets/middle/yumi_present_labeltime_limit.imageset/yumi_present_labeltime_limit@3x.png deleted file mode 100644 index 3ccc124a..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_present_labeltime_limit.imageset/yumi_present_labeltime_limit@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_present_let_count_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/middle/yumi_present_let_count_arrow.imageset/Contents.json deleted file mode 100644 index e381b909..00000000 --- a/YuMi/Assets.xcassets/middle/yumi_present_let_count_arrow.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_present_let_count_arrow@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_present_let_count_arrow@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/middle/yumi_present_let_count_arrow.imageset/yumi_present_let_count_arrow@2x.png b/YuMi/Assets.xcassets/middle/yumi_present_let_count_arrow.imageset/yumi_present_let_count_arrow@2x.png deleted file mode 100644 index 1687ebc2..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_present_let_count_arrow.imageset/yumi_present_let_count_arrow@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_present_let_count_arrow.imageset/yumi_present_let_count_arrow@3x.png b/YuMi/Assets.xcassets/middle/yumi_present_let_count_arrow.imageset/yumi_present_let_count_arrow@3x.png deleted file mode 100644 index 7d22ea69..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_present_let_count_arrow.imageset/yumi_present_let_count_arrow@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_present_let_count_up_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/middle/yumi_present_let_count_up_arrow.imageset/Contents.json deleted file mode 100644 index e489ff52..00000000 --- a/YuMi/Assets.xcassets/middle/yumi_present_let_count_up_arrow.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_present_let_count_up_arrow@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_present_let_count_up_arrow@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/middle/yumi_present_let_count_up_arrow.imageset/yumi_present_let_count_up_arrow@2x.png b/YuMi/Assets.xcassets/middle/yumi_present_let_count_up_arrow.imageset/yumi_present_let_count_up_arrow@2x.png deleted file mode 100644 index 5ec51d48..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_present_let_count_up_arrow.imageset/yumi_present_let_count_up_arrow@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_present_let_count_up_arrow.imageset/yumi_present_let_count_up_arrow@3x.png b/YuMi/Assets.xcassets/middle/yumi_present_let_count_up_arrow.imageset/yumi_present_let_count_up_arrow@3x.png deleted file mode 100644 index ecbe34d8..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_present_let_count_up_arrow.imageset/yumi_present_let_count_up_arrow@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_present_let_recharge_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/middle/yumi_present_let_recharge_arrow.imageset/Contents.json deleted file mode 100644 index 88ad844f..00000000 --- a/YuMi/Assets.xcassets/middle/yumi_present_let_recharge_arrow.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_present_let_recharge_arrow@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_present_let_recharge_arrow@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/middle/yumi_present_let_recharge_arrow.imageset/yumi_present_let_recharge_arrow@2x.png b/YuMi/Assets.xcassets/middle/yumi_present_let_recharge_arrow.imageset/yumi_present_let_recharge_arrow@2x.png deleted file mode 100644 index 1fa7d10c..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_present_let_recharge_arrow.imageset/yumi_present_let_recharge_arrow@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_present_let_recharge_arrow.imageset/yumi_present_let_recharge_arrow@3x.png b/YuMi/Assets.xcassets/middle/yumi_present_let_recharge_arrow.imageset/yumi_present_let_recharge_arrow@3x.png deleted file mode 100644 index e3a0682f..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_present_let_recharge_arrow.imageset/yumi_present_let_recharge_arrow@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_present_let_white_count_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/middle/yumi_present_let_white_count_arrow.imageset/Contents.json deleted file mode 100644 index c8270b75..00000000 --- a/YuMi/Assets.xcassets/middle/yumi_present_let_white_count_arrow.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_present_let_white_count_arrow@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_present_let_white_count_arrow@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/middle/yumi_present_let_white_count_arrow.imageset/yumi_present_let_white_count_arrow@2x.png b/YuMi/Assets.xcassets/middle/yumi_present_let_white_count_arrow.imageset/yumi_present_let_white_count_arrow@2x.png deleted file mode 100644 index af2a9df5..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_present_let_white_count_arrow.imageset/yumi_present_let_white_count_arrow@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_present_let_white_count_arrow.imageset/yumi_present_let_white_count_arrow@3x.png b/YuMi/Assets.xcassets/middle/yumi_present_let_white_count_arrow.imageset/yumi_present_let_white_count_arrow@3x.png deleted file mode 100644 index d39d3128..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_present_let_white_count_arrow.imageset/yumi_present_let_white_count_arrow@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_present_let_white_count_up_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/middle/yumi_present_let_white_count_up_arrow.imageset/Contents.json deleted file mode 100644 index 222e9e3b..00000000 --- a/YuMi/Assets.xcassets/middle/yumi_present_let_white_count_up_arrow.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_present_let_white_count_up_arrow@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_present_let_white_count_up_arrow@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/middle/yumi_present_let_white_count_up_arrow.imageset/yumi_present_let_white_count_up_arrow@2x.png b/YuMi/Assets.xcassets/middle/yumi_present_let_white_count_up_arrow.imageset/yumi_present_let_white_count_up_arrow@2x.png deleted file mode 100644 index a017aca8..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_present_let_white_count_up_arrow.imageset/yumi_present_let_white_count_up_arrow@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_present_let_white_count_up_arrow.imageset/yumi_present_let_white_count_up_arrow@3x.png b/YuMi/Assets.xcassets/middle/yumi_present_let_white_count_up_arrow.imageset/yumi_present_let_white_count_up_arrow@3x.png deleted file mode 100644 index 98651ed6..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_present_let_white_count_up_arrow.imageset/yumi_present_let_white_count_up_arrow@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_present_type_newIcon.imageset/Contents.json b/YuMi/Assets.xcassets/middle/yumi_present_type_newIcon.imageset/Contents.json deleted file mode 100644 index 0b33bc7f..00000000 --- a/YuMi/Assets.xcassets/middle/yumi_present_type_newIcon.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_present_type_newIcon@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_present_type_newIcon@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/middle/yumi_present_type_newIcon.imageset/yumi_present_type_newIcon@2x.png b/YuMi/Assets.xcassets/middle/yumi_present_type_newIcon.imageset/yumi_present_type_newIcon@2x.png deleted file mode 100644 index 5fe4730f..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_present_type_newIcon.imageset/yumi_present_type_newIcon@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_present_type_newIcon.imageset/yumi_present_type_newIcon@3x.png b/YuMi/Assets.xcassets/middle/yumi_present_type_newIcon.imageset/yumi_present_type_newIcon@3x.png deleted file mode 100644 index 520547ab..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_present_type_newIcon.imageset/yumi_present_type_newIcon@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_close.imageset/Contents.json b/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_close.imageset/Contents.json deleted file mode 100644 index 9c740431..00000000 --- a/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_close.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_present_graffiti_close@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_present_graffiti_close@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_close.imageset/yumi_scope_present_graffiti_close@2x.png b/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_close.imageset/yumi_scope_present_graffiti_close@2x.png deleted file mode 100644 index 600ceeb4..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_close.imageset/yumi_scope_present_graffiti_close@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_close.imageset/yumi_scope_present_graffiti_close@3x.png b/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_close.imageset/yumi_scope_present_graffiti_close@3x.png deleted file mode 100644 index 78cb97ef..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_close.imageset/yumi_scope_present_graffiti_close@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_delete.imageset/Contents.json b/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_delete.imageset/Contents.json deleted file mode 100644 index 913eb352..00000000 --- a/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_delete.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_present_graffiti_delete@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_present_graffiti_delete@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_delete.imageset/yumi_scope_present_graffiti_delete@2x.png b/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_delete.imageset/yumi_scope_present_graffiti_delete@2x.png deleted file mode 100644 index b41cdc23..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_delete.imageset/yumi_scope_present_graffiti_delete@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_delete.imageset/yumi_scope_present_graffiti_delete@3x.png b/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_delete.imageset/yumi_scope_present_graffiti_delete@3x.png deleted file mode 100644 index 3e0d0d06..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_delete.imageset/yumi_scope_present_graffiti_delete@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_hand.imageset/Contents.json b/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_hand.imageset/Contents.json deleted file mode 100644 index 1a032826..00000000 --- a/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_hand.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_present_graffiti_hand@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_present_graffiti_hand@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_hand.imageset/yumi_scope_present_graffiti_hand@2x.png b/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_hand.imageset/yumi_scope_present_graffiti_hand@2x.png deleted file mode 100644 index 81475b37..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_hand.imageset/yumi_scope_present_graffiti_hand@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_hand.imageset/yumi_scope_present_graffiti_hand@3x.png b/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_hand.imageset/yumi_scope_present_graffiti_hand@3x.png deleted file mode 100644 index c35a2a64..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_hand.imageset/yumi_scope_present_graffiti_hand@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_repeal.imageset/Contents.json b/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_repeal.imageset/Contents.json deleted file mode 100644 index 2be860e4..00000000 --- a/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_repeal.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_present_graffiti_repeal@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_present_graffiti_repeal@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_repeal.imageset/yumi_scope_present_graffiti_repeal@2x.png b/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_repeal.imageset/yumi_scope_present_graffiti_repeal@2x.png deleted file mode 100644 index 7e5455c3..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_repeal.imageset/yumi_scope_present_graffiti_repeal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_repeal.imageset/yumi_scope_present_graffiti_repeal@3x.png b/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_repeal.imageset/yumi_scope_present_graffiti_repeal@3x.png deleted file mode 100644 index febe7023..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_scope_present_graffiti_repeal.imageset/yumi_scope_present_graffiti_repeal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_scope_present_panel_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/middle/yumi_scope_present_panel_arrow.imageset/Contents.json deleted file mode 100644 index 954a5879..00000000 --- a/YuMi/Assets.xcassets/middle/yumi_scope_present_panel_arrow.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_present_panel_arrow@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_present_panel_arrow@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/middle/yumi_scope_present_panel_arrow.imageset/yumi_scope_present_panel_arrow@2x.png b/YuMi/Assets.xcassets/middle/yumi_scope_present_panel_arrow.imageset/yumi_scope_present_panel_arrow@2x.png deleted file mode 100644 index 20a941dc..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_scope_present_panel_arrow.imageset/yumi_scope_present_panel_arrow@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/middle/yumi_scope_present_panel_arrow.imageset/yumi_scope_present_panel_arrow@3x.png b/YuMi/Assets.xcassets/middle/yumi_scope_present_panel_arrow.imageset/yumi_scope_present_panel_arrow@3x.png deleted file mode 100644 index 61211b13..00000000 Binary files a/YuMi/Assets.xcassets/middle/yumi_scope_present_panel_arrow.imageset/yumi_scope_present_panel_arrow@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/poersioon/Contents.json b/YuMi/Assets.xcassets/poersioon/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/poersioon/Contents.json +++ b/YuMi/Assets.xcassets/poersioon/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/poersioon/version_update_top_bg.imageset/Contents.json b/YuMi/Assets.xcassets/poersioon/version_update_top_bg.imageset/Contents.json new file mode 100644 index 00000000..44ed6269 --- /dev/null +++ b/YuMi/Assets.xcassets/poersioon/version_update_top_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "version_update_top_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "version_update_top_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/poersioon/version_update_top_bg.imageset/version_update_top_bg@2x.png b/YuMi/Assets.xcassets/poersioon/version_update_top_bg.imageset/version_update_top_bg@2x.png new file mode 100644 index 00000000..f2afd617 Binary files /dev/null and b/YuMi/Assets.xcassets/poersioon/version_update_top_bg.imageset/version_update_top_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/poersioon/version_update_top_bg.imageset/version_update_top_bg@3x.png b/YuMi/Assets.xcassets/poersioon/version_update_top_bg.imageset/version_update_top_bg@3x.png new file mode 100644 index 00000000..4e25d9a6 Binary files /dev/null and b/YuMi/Assets.xcassets/poersioon/version_update_top_bg.imageset/version_update_top_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/poersioon/yumi_version_update_top_background.imageset/Contents.json b/YuMi/Assets.xcassets/poersioon/yumi_version_update_top_background.imageset/Contents.json deleted file mode 100644 index 46905590..00000000 --- a/YuMi/Assets.xcassets/poersioon/yumi_version_update_top_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_version_update_top_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_version_update_top_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/poersioon/yumi_version_update_top_background.imageset/yumi_version_update_top_background@2x.png b/YuMi/Assets.xcassets/poersioon/yumi_version_update_top_background.imageset/yumi_version_update_top_background@2x.png deleted file mode 100644 index 4f222711..00000000 Binary files a/YuMi/Assets.xcassets/poersioon/yumi_version_update_top_background.imageset/yumi_version_update_top_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/poersioon/yumi_version_update_top_background.imageset/yumi_version_update_top_background@3x.png b/YuMi/Assets.xcassets/poersioon/yumi_version_update_top_background.imageset/yumi_version_update_top_background@3x.png deleted file mode 100644 index a0be595c..00000000 Binary files a/YuMi/Assets.xcassets/poersioon/yumi_version_update_top_background.imageset/yumi_version_update_top_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/room_across_pk_invite_result_bg.imageset/Contents.json b/YuMi/Assets.xcassets/room_across_pk_invite_result_bg.imageset/Contents.json new file mode 100644 index 00000000..9685b2d7 --- /dev/null +++ b/YuMi/Assets.xcassets/room_across_pk_invite_result_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_invite_result_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_invite_result_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/room_across_pk_invite_result_bg.imageset/room_across_pk_invite_result_bg@2x.png b/YuMi/Assets.xcassets/room_across_pk_invite_result_bg.imageset/room_across_pk_invite_result_bg@2x.png new file mode 100644 index 00000000..a5a80159 Binary files /dev/null and b/YuMi/Assets.xcassets/room_across_pk_invite_result_bg.imageset/room_across_pk_invite_result_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/room_across_pk_invite_result_bg.imageset/room_across_pk_invite_result_bg@3x.png b/YuMi/Assets.xcassets/room_across_pk_invite_result_bg.imageset/room_across_pk_invite_result_bg@3x.png new file mode 100644 index 00000000..7683f6cf Binary files /dev/null and b/YuMi/Assets.xcassets/room_across_pk_invite_result_bg.imageset/room_across_pk_invite_result_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/toast/Contents.json b/YuMi/Assets.xcassets/toast/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/toast/Contents.json +++ b/YuMi/Assets.xcassets/toast/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_000.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_000.imageset/Contents.json new file mode 100644 index 00000000..98ea514b --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_000.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_000.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_000.imageset/loading_000.png b/YuMi/Assets.xcassets/toast/loading_000.imageset/loading_000.png new file mode 100644 index 00000000..46d8c2ce Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_000.imageset/loading_000.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_001.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_001.imageset/Contents.json new file mode 100644 index 00000000..2be35874 --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_001.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_001.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_001.imageset/loading_001.png b/YuMi/Assets.xcassets/toast/loading_001.imageset/loading_001.png new file mode 100644 index 00000000..3175fb55 Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_001.imageset/loading_001.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_002.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_002.imageset/Contents.json new file mode 100644 index 00000000..fa553119 --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_002.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_002.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_002.imageset/loading_002.png b/YuMi/Assets.xcassets/toast/loading_002.imageset/loading_002.png new file mode 100644 index 00000000..984fd193 Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_002.imageset/loading_002.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_003.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_003.imageset/Contents.json new file mode 100644 index 00000000..badfd8e9 --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_003.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_003.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_003.imageset/loading_003.png b/YuMi/Assets.xcassets/toast/loading_003.imageset/loading_003.png new file mode 100644 index 00000000..bb5b6f39 Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_003.imageset/loading_003.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_004.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_004.imageset/Contents.json new file mode 100644 index 00000000..718f0e59 --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_004.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_004.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_004.imageset/loading_004.png b/YuMi/Assets.xcassets/toast/loading_004.imageset/loading_004.png new file mode 100644 index 00000000..bb8579d0 Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_004.imageset/loading_004.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_005.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_005.imageset/Contents.json new file mode 100644 index 00000000..487e071d --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_005.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_005.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_005.imageset/loading_005.png b/YuMi/Assets.xcassets/toast/loading_005.imageset/loading_005.png new file mode 100644 index 00000000..318a9818 Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_005.imageset/loading_005.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_006.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_006.imageset/Contents.json new file mode 100644 index 00000000..03925138 --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_006.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_006.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_006.imageset/loading_006.png b/YuMi/Assets.xcassets/toast/loading_006.imageset/loading_006.png new file mode 100644 index 00000000..cc43ddad Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_006.imageset/loading_006.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_007.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_007.imageset/Contents.json new file mode 100644 index 00000000..371ebae5 --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_007.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_007.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_007.imageset/loading_007.png b/YuMi/Assets.xcassets/toast/loading_007.imageset/loading_007.png new file mode 100644 index 00000000..20b7b7ed Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_007.imageset/loading_007.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_008.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_008.imageset/Contents.json new file mode 100644 index 00000000..3316f712 --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_008.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_008.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_008.imageset/loading_008.png b/YuMi/Assets.xcassets/toast/loading_008.imageset/loading_008.png new file mode 100644 index 00000000..99939089 Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_008.imageset/loading_008.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_009.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_009.imageset/Contents.json new file mode 100644 index 00000000..9dec7cc8 --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_009.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_009.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_009.imageset/loading_009.png b/YuMi/Assets.xcassets/toast/loading_009.imageset/loading_009.png new file mode 100644 index 00000000..4b79bd0a Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_009.imageset/loading_009.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_010.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_010.imageset/Contents.json new file mode 100644 index 00000000..9d7fca74 --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_010.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_010.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_010.imageset/loading_010.png b/YuMi/Assets.xcassets/toast/loading_010.imageset/loading_010.png new file mode 100644 index 00000000..e4b300d2 Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_010.imageset/loading_010.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_011.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_011.imageset/Contents.json new file mode 100644 index 00000000..e870a5be --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_011.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_011.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_011.imageset/loading_011.png b/YuMi/Assets.xcassets/toast/loading_011.imageset/loading_011.png new file mode 100644 index 00000000..4e4132e7 Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_011.imageset/loading_011.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_012.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_012.imageset/Contents.json new file mode 100644 index 00000000..e3493c55 --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_012.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_012.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_012.imageset/loading_012.png b/YuMi/Assets.xcassets/toast/loading_012.imageset/loading_012.png new file mode 100644 index 00000000..671cedf6 Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_012.imageset/loading_012.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_013.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_013.imageset/Contents.json new file mode 100644 index 00000000..1da4e8e3 --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_013.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_013.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_013.imageset/loading_013.png b/YuMi/Assets.xcassets/toast/loading_013.imageset/loading_013.png new file mode 100644 index 00000000..09dbb876 Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_013.imageset/loading_013.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_014.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_014.imageset/Contents.json new file mode 100644 index 00000000..d3082e39 --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_014.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_014.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_014.imageset/loading_014.png b/YuMi/Assets.xcassets/toast/loading_014.imageset/loading_014.png new file mode 100644 index 00000000..8c0ac0c8 Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_014.imageset/loading_014.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_015.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_015.imageset/Contents.json new file mode 100644 index 00000000..35ca2345 --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_015.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_015.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_015.imageset/loading_015.png b/YuMi/Assets.xcassets/toast/loading_015.imageset/loading_015.png new file mode 100644 index 00000000..e11abc97 Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_015.imageset/loading_015.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_016.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_016.imageset/Contents.json new file mode 100644 index 00000000..3ebe3233 --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_016.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_016.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_016.imageset/loading_016.png b/YuMi/Assets.xcassets/toast/loading_016.imageset/loading_016.png new file mode 100644 index 00000000..65a147bf Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_016.imageset/loading_016.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_017.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_017.imageset/Contents.json new file mode 100644 index 00000000..a0febc71 --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_017.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_017.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_017.imageset/loading_017.png b/YuMi/Assets.xcassets/toast/loading_017.imageset/loading_017.png new file mode 100644 index 00000000..700bc5b3 Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_017.imageset/loading_017.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_018.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_018.imageset/Contents.json new file mode 100644 index 00000000..ac7c4a5d --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_018.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_018.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_018.imageset/loading_018.png b/YuMi/Assets.xcassets/toast/loading_018.imageset/loading_018.png new file mode 100644 index 00000000..da637416 Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_018.imageset/loading_018.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_019.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_019.imageset/Contents.json new file mode 100644 index 00000000..81ede683 --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_019.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_019.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_019.imageset/loading_019.png b/YuMi/Assets.xcassets/toast/loading_019.imageset/loading_019.png new file mode 100644 index 00000000..c1ae1719 Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_019.imageset/loading_019.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_020.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_020.imageset/Contents.json new file mode 100644 index 00000000..71ed5e8c --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_020.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_020.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_020.imageset/loading_020.png b/YuMi/Assets.xcassets/toast/loading_020.imageset/loading_020.png new file mode 100644 index 00000000..14b563d9 Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_020.imageset/loading_020.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_021.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_021.imageset/Contents.json new file mode 100644 index 00000000..e8f2bbc2 --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_021.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_021.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_021.imageset/loading_021.png b/YuMi/Assets.xcassets/toast/loading_021.imageset/loading_021.png new file mode 100644 index 00000000..3c28e3b5 Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_021.imageset/loading_021.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_022.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_022.imageset/Contents.json new file mode 100644 index 00000000..b6e65004 --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_022.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_022.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_022.imageset/loading_022.png b/YuMi/Assets.xcassets/toast/loading_022.imageset/loading_022.png new file mode 100644 index 00000000..5361dfb2 Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_022.imageset/loading_022.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_023.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_023.imageset/Contents.json new file mode 100644 index 00000000..5bda929f --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_023.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_023.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_023.imageset/loading_023.png b/YuMi/Assets.xcassets/toast/loading_023.imageset/loading_023.png new file mode 100644 index 00000000..22b4d5f1 Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_023.imageset/loading_023.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_024.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_024.imageset/Contents.json new file mode 100644 index 00000000..350baa63 --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_024.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_024.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_024.imageset/loading_024.png b/YuMi/Assets.xcassets/toast/loading_024.imageset/loading_024.png new file mode 100644 index 00000000..c8f913fb Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_024.imageset/loading_024.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_025.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_025.imageset/Contents.json new file mode 100644 index 00000000..09dc99f5 --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_025.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_025.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_025.imageset/loading_025.png b/YuMi/Assets.xcassets/toast/loading_025.imageset/loading_025.png new file mode 100644 index 00000000..5cc9d6b3 Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_025.imageset/loading_025.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_026.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_026.imageset/Contents.json new file mode 100644 index 00000000..d040be2f --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_026.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_026.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_026.imageset/loading_026.png b/YuMi/Assets.xcassets/toast/loading_026.imageset/loading_026.png new file mode 100644 index 00000000..84e83c1f Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_026.imageset/loading_026.png differ diff --git a/YuMi/Assets.xcassets/toast/loading_027.imageset/Contents.json b/YuMi/Assets.xcassets/toast/loading_027.imageset/Contents.json new file mode 100644 index 00000000..fe3a8fc0 --- /dev/null +++ b/YuMi/Assets.xcassets/toast/loading_027.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "loading_027.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/toast/loading_027.imageset/loading_027.png b/YuMi/Assets.xcassets/toast/loading_027.imageset/loading_027.png new file mode 100644 index 00000000..0de41d87 Binary files /dev/null and b/YuMi/Assets.xcassets/toast/loading_027.imageset/loading_027.png differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_000.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_000.imageset/Contents.json deleted file mode 100644 index 2eb3b3b5..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_000.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_000.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_000.imageset/yumi_loading_000.png b/YuMi/Assets.xcassets/toast/yumi_loading_000.imageset/yumi_loading_000.png deleted file mode 100644 index a2572878..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_000.imageset/yumi_loading_000.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_001.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_001.imageset/Contents.json deleted file mode 100644 index 557f467d..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_001.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_001.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_001.imageset/yumi_loading_001.png b/YuMi/Assets.xcassets/toast/yumi_loading_001.imageset/yumi_loading_001.png deleted file mode 100644 index 7d81c89e..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_001.imageset/yumi_loading_001.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_002.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_002.imageset/Contents.json deleted file mode 100644 index 5ffb90a5..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_002.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_002.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_002.imageset/yumi_loading_002.png b/YuMi/Assets.xcassets/toast/yumi_loading_002.imageset/yumi_loading_002.png deleted file mode 100644 index aba45718..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_002.imageset/yumi_loading_002.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_003.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_003.imageset/Contents.json deleted file mode 100644 index aeda11fb..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_003.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_003.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_003.imageset/yumi_loading_003.png b/YuMi/Assets.xcassets/toast/yumi_loading_003.imageset/yumi_loading_003.png deleted file mode 100644 index 0d8f3f75..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_003.imageset/yumi_loading_003.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_004.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_004.imageset/Contents.json deleted file mode 100644 index efca6935..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_004.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_004.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_004.imageset/yumi_loading_004.png b/YuMi/Assets.xcassets/toast/yumi_loading_004.imageset/yumi_loading_004.png deleted file mode 100644 index 6bbeafed..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_004.imageset/yumi_loading_004.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_005.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_005.imageset/Contents.json deleted file mode 100644 index 6018f68b..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_005.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_005.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_005.imageset/yumi_loading_005.png b/YuMi/Assets.xcassets/toast/yumi_loading_005.imageset/yumi_loading_005.png deleted file mode 100644 index ea0c3fa0..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_005.imageset/yumi_loading_005.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_006.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_006.imageset/Contents.json deleted file mode 100644 index 19f46d7d..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_006.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_006.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_006.imageset/yumi_loading_006.png b/YuMi/Assets.xcassets/toast/yumi_loading_006.imageset/yumi_loading_006.png deleted file mode 100644 index b65eb922..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_006.imageset/yumi_loading_006.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_007.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_007.imageset/Contents.json deleted file mode 100644 index 55078a04..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_007.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_007.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_007.imageset/yumi_loading_007.png b/YuMi/Assets.xcassets/toast/yumi_loading_007.imageset/yumi_loading_007.png deleted file mode 100644 index 032d5e65..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_007.imageset/yumi_loading_007.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_008.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_008.imageset/Contents.json deleted file mode 100644 index a1ff5b54..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_008.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_008.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_008.imageset/yumi_loading_008.png b/YuMi/Assets.xcassets/toast/yumi_loading_008.imageset/yumi_loading_008.png deleted file mode 100644 index cc4fe0eb..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_008.imageset/yumi_loading_008.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_009.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_009.imageset/Contents.json deleted file mode 100644 index 417842e8..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_009.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_009.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_009.imageset/yumi_loading_009.png b/YuMi/Assets.xcassets/toast/yumi_loading_009.imageset/yumi_loading_009.png deleted file mode 100644 index 9fca4852..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_009.imageset/yumi_loading_009.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_010.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_010.imageset/Contents.json deleted file mode 100644 index aec4cfda..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_010.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_010.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_010.imageset/yumi_loading_010.png b/YuMi/Assets.xcassets/toast/yumi_loading_010.imageset/yumi_loading_010.png deleted file mode 100644 index 282be1bf..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_010.imageset/yumi_loading_010.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_011.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_011.imageset/Contents.json deleted file mode 100644 index 4742a17d..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_011.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_011.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_011.imageset/yumi_loading_011.png b/YuMi/Assets.xcassets/toast/yumi_loading_011.imageset/yumi_loading_011.png deleted file mode 100644 index 3846aaae..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_011.imageset/yumi_loading_011.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_012.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_012.imageset/Contents.json deleted file mode 100644 index 856b1dc3..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_012.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_012.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_012.imageset/yumi_loading_012.png b/YuMi/Assets.xcassets/toast/yumi_loading_012.imageset/yumi_loading_012.png deleted file mode 100644 index d753dc7a..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_012.imageset/yumi_loading_012.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_013.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_013.imageset/Contents.json deleted file mode 100644 index a6d98270..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_013.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_013.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_013.imageset/yumi_loading_013.png b/YuMi/Assets.xcassets/toast/yumi_loading_013.imageset/yumi_loading_013.png deleted file mode 100644 index fd1f4251..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_013.imageset/yumi_loading_013.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_014.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_014.imageset/Contents.json deleted file mode 100644 index 6139d636..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_014.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_014.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_014.imageset/yumi_loading_014.png b/YuMi/Assets.xcassets/toast/yumi_loading_014.imageset/yumi_loading_014.png deleted file mode 100644 index d16088b8..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_014.imageset/yumi_loading_014.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_015.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_015.imageset/Contents.json deleted file mode 100644 index 78b79b46..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_015.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_015.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_015.imageset/yumi_loading_015.png b/YuMi/Assets.xcassets/toast/yumi_loading_015.imageset/yumi_loading_015.png deleted file mode 100644 index 086ba9da..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_015.imageset/yumi_loading_015.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_016.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_016.imageset/Contents.json deleted file mode 100644 index 5f5065ca..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_016.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_016.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_016.imageset/yumi_loading_016.png b/YuMi/Assets.xcassets/toast/yumi_loading_016.imageset/yumi_loading_016.png deleted file mode 100644 index 49248788..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_016.imageset/yumi_loading_016.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_017.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_017.imageset/Contents.json deleted file mode 100644 index e2efe9b6..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_017.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_017.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_017.imageset/yumi_loading_017.png b/YuMi/Assets.xcassets/toast/yumi_loading_017.imageset/yumi_loading_017.png deleted file mode 100644 index 7608bd62..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_017.imageset/yumi_loading_017.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_018.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_018.imageset/Contents.json deleted file mode 100644 index 86827043..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_018.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_018.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_018.imageset/yumi_loading_018.png b/YuMi/Assets.xcassets/toast/yumi_loading_018.imageset/yumi_loading_018.png deleted file mode 100644 index 30f7c248..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_018.imageset/yumi_loading_018.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_019.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_019.imageset/Contents.json deleted file mode 100644 index 08af0293..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_019.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_019.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_019.imageset/yumi_loading_019.png b/YuMi/Assets.xcassets/toast/yumi_loading_019.imageset/yumi_loading_019.png deleted file mode 100644 index 7059bcbc..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_019.imageset/yumi_loading_019.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_020.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_020.imageset/Contents.json deleted file mode 100644 index bd1d3328..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_020.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_020.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_020.imageset/yumi_loading_020.png b/YuMi/Assets.xcassets/toast/yumi_loading_020.imageset/yumi_loading_020.png deleted file mode 100644 index ecf9ca3f..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_020.imageset/yumi_loading_020.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_021.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_021.imageset/Contents.json deleted file mode 100644 index 6584d89c..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_021.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_021.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_021.imageset/yumi_loading_021.png b/YuMi/Assets.xcassets/toast/yumi_loading_021.imageset/yumi_loading_021.png deleted file mode 100644 index 1184d3d5..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_021.imageset/yumi_loading_021.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_022.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_022.imageset/Contents.json deleted file mode 100644 index 0ef0755e..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_022.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_022.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_022.imageset/yumi_loading_022.png b/YuMi/Assets.xcassets/toast/yumi_loading_022.imageset/yumi_loading_022.png deleted file mode 100644 index 08d7ed3b..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_022.imageset/yumi_loading_022.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_023.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_023.imageset/Contents.json deleted file mode 100644 index 8a11577e..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_023.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_023.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_023.imageset/yumi_loading_023.png b/YuMi/Assets.xcassets/toast/yumi_loading_023.imageset/yumi_loading_023.png deleted file mode 100644 index f8e93bab..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_023.imageset/yumi_loading_023.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_024.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_024.imageset/Contents.json deleted file mode 100644 index 31ff3812..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_024.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_024.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_024.imageset/yumi_loading_024.png b/YuMi/Assets.xcassets/toast/yumi_loading_024.imageset/yumi_loading_024.png deleted file mode 100644 index 46ba066d..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_024.imageset/yumi_loading_024.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_025.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_025.imageset/Contents.json deleted file mode 100644 index 4e19de97..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_025.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_025.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_025.imageset/yumi_loading_025.png b/YuMi/Assets.xcassets/toast/yumi_loading_025.imageset/yumi_loading_025.png deleted file mode 100644 index f8daf3cb..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_025.imageset/yumi_loading_025.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_026.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_026.imageset/Contents.json deleted file mode 100644 index c4f1328e..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_026.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_026.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_026.imageset/yumi_loading_026.png b/YuMi/Assets.xcassets/toast/yumi_loading_026.imageset/yumi_loading_026.png deleted file mode 100644 index 1f4aad83..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_026.imageset/yumi_loading_026.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_027.imageset/Contents.json b/YuMi/Assets.xcassets/toast/yumi_loading_027.imageset/Contents.json deleted file mode 100644 index 8c29d3de..00000000 --- a/YuMi/Assets.xcassets/toast/yumi_loading_027.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_loading_027.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/toast/yumi_loading_027.imageset/yumi_loading_027.png b/YuMi/Assets.xcassets/toast/yumi_loading_027.imageset/yumi_loading_027.png deleted file mode 100644 index 644138ee..00000000 Binary files a/YuMi/Assets.xcassets/toast/yumi_loading_027.imageset/yumi_loading_027.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/Contents.json b/YuMi/Assets.xcassets/utils/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/utils/Contents.json +++ b/YuMi/Assets.xcassets/utils/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/utils/Share/Contents.json b/YuMi/Assets.xcassets/utils/Share/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/utils/Share/Contents.json +++ b/YuMi/Assets.xcassets/utils/Share/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/utils/Share/share_friend.imageset/Contents.json b/YuMi/Assets.xcassets/utils/Share/share_friend.imageset/Contents.json new file mode 100644 index 00000000..3f8cbbd3 --- /dev/null +++ b/YuMi/Assets.xcassets/utils/Share/share_friend.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "share_friend@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "share_friend@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/utils/Share/share_friend.imageset/share_friend@2x.png b/YuMi/Assets.xcassets/utils/Share/share_friend.imageset/share_friend@2x.png new file mode 100644 index 00000000..3a6f654e Binary files /dev/null and b/YuMi/Assets.xcassets/utils/Share/share_friend.imageset/share_friend@2x.png differ diff --git a/YuMi/Assets.xcassets/utils/Share/share_friend.imageset/share_friend@3x.png b/YuMi/Assets.xcassets/utils/Share/share_friend.imageset/share_friend@3x.png new file mode 100644 index 00000000..1b906595 Binary files /dev/null and b/YuMi/Assets.xcassets/utils/Share/share_friend.imageset/share_friend@3x.png differ diff --git a/YuMi/Assets.xcassets/utils/Share/share_qq_disable.imageset/Contents.json b/YuMi/Assets.xcassets/utils/Share/share_qq_disable.imageset/Contents.json new file mode 100644 index 00000000..2659d872 --- /dev/null +++ b/YuMi/Assets.xcassets/utils/Share/share_qq_disable.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "share_qq_disable@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "share_qq_disable@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/utils/Share/share_qq_disable.imageset/share_qq_disable@2x.png b/YuMi/Assets.xcassets/utils/Share/share_qq_disable.imageset/share_qq_disable@2x.png new file mode 100644 index 00000000..cdc3a461 Binary files /dev/null and b/YuMi/Assets.xcassets/utils/Share/share_qq_disable.imageset/share_qq_disable@2x.png differ diff --git a/YuMi/Assets.xcassets/utils/Share/share_qq_disable.imageset/share_qq_disable@3x.png b/YuMi/Assets.xcassets/utils/Share/share_qq_disable.imageset/share_qq_disable@3x.png new file mode 100644 index 00000000..89769c68 Binary files /dev/null and b/YuMi/Assets.xcassets/utils/Share/share_qq_disable.imageset/share_qq_disable@3x.png differ diff --git a/YuMi/Assets.xcassets/utils/Share/share_qqzone_disable.imageset/Contents.json b/YuMi/Assets.xcassets/utils/Share/share_qqzone_disable.imageset/Contents.json new file mode 100644 index 00000000..fb035cb1 --- /dev/null +++ b/YuMi/Assets.xcassets/utils/Share/share_qqzone_disable.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "share_qqzone_disable@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "share_qqzone_disable@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/utils/Share/share_qqzone_disable.imageset/share_qqzone_disable@2x.png b/YuMi/Assets.xcassets/utils/Share/share_qqzone_disable.imageset/share_qqzone_disable@2x.png new file mode 100644 index 00000000..59b69a79 Binary files /dev/null and b/YuMi/Assets.xcassets/utils/Share/share_qqzone_disable.imageset/share_qqzone_disable@2x.png differ diff --git a/YuMi/Assets.xcassets/utils/Share/share_qqzone_disable.imageset/share_qqzone_disable@3x.png b/YuMi/Assets.xcassets/utils/Share/share_qqzone_disable.imageset/share_qqzone_disable@3x.png new file mode 100644 index 00000000..92cb66eb Binary files /dev/null and b/YuMi/Assets.xcassets/utils/Share/share_qqzone_disable.imageset/share_qqzone_disable@3x.png differ diff --git a/YuMi/Assets.xcassets/utils/Share/yumi_parti_friend.imageset/Contents.json b/YuMi/Assets.xcassets/utils/Share/yumi_parti_friend.imageset/Contents.json deleted file mode 100644 index 1329ec52..00000000 --- a/YuMi/Assets.xcassets/utils/Share/yumi_parti_friend.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_parti_friend@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_parti_friend@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/utils/Share/yumi_parti_friend.imageset/yumi_parti_friend@2x.png b/YuMi/Assets.xcassets/utils/Share/yumi_parti_friend.imageset/yumi_parti_friend@2x.png deleted file mode 100644 index 2320b503..00000000 Binary files a/YuMi/Assets.xcassets/utils/Share/yumi_parti_friend.imageset/yumi_parti_friend@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/Share/yumi_parti_friend.imageset/yumi_parti_friend@3x.png b/YuMi/Assets.xcassets/utils/Share/yumi_parti_friend.imageset/yumi_parti_friend@3x.png deleted file mode 100644 index 76e9abca..00000000 Binary files a/YuMi/Assets.xcassets/utils/Share/yumi_parti_friend.imageset/yumi_parti_friend@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/Share/yumi_parti_qq_disable.imageset/Contents.json b/YuMi/Assets.xcassets/utils/Share/yumi_parti_qq_disable.imageset/Contents.json deleted file mode 100644 index e36cb641..00000000 --- a/YuMi/Assets.xcassets/utils/Share/yumi_parti_qq_disable.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_parti_qq_disable@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_parti_qq_disable@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/utils/Share/yumi_parti_qq_disable.imageset/yumi_parti_qq_disable@2x.png b/YuMi/Assets.xcassets/utils/Share/yumi_parti_qq_disable.imageset/yumi_parti_qq_disable@2x.png deleted file mode 100644 index 73192243..00000000 Binary files a/YuMi/Assets.xcassets/utils/Share/yumi_parti_qq_disable.imageset/yumi_parti_qq_disable@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/Share/yumi_parti_qq_disable.imageset/yumi_parti_qq_disable@3x.png b/YuMi/Assets.xcassets/utils/Share/yumi_parti_qq_disable.imageset/yumi_parti_qq_disable@3x.png deleted file mode 100644 index 95bad63b..00000000 Binary files a/YuMi/Assets.xcassets/utils/Share/yumi_parti_qq_disable.imageset/yumi_parti_qq_disable@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/Share/yumi_parti_qqzone_disable.imageset/Contents.json b/YuMi/Assets.xcassets/utils/Share/yumi_parti_qqzone_disable.imageset/Contents.json deleted file mode 100644 index 0ead9fad..00000000 --- a/YuMi/Assets.xcassets/utils/Share/yumi_parti_qqzone_disable.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_parti_qqzone_disable@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_parti_qqzone_disable@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/utils/Share/yumi_parti_qqzone_disable.imageset/yumi_parti_qqzone_disable@2x.png b/YuMi/Assets.xcassets/utils/Share/yumi_parti_qqzone_disable.imageset/yumi_parti_qqzone_disable@2x.png deleted file mode 100644 index f70832e9..00000000 Binary files a/YuMi/Assets.xcassets/utils/Share/yumi_parti_qqzone_disable.imageset/yumi_parti_qqzone_disable@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/Share/yumi_parti_qqzone_disable.imageset/yumi_parti_qqzone_disable@3x.png b/YuMi/Assets.xcassets/utils/Share/yumi_parti_qqzone_disable.imageset/yumi_parti_qqzone_disable@3x.png deleted file mode 100644 index df4c5093..00000000 Binary files a/YuMi/Assets.xcassets/utils/Share/yumi_parti_qqzone_disable.imageset/yumi_parti_qqzone_disable@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/common_avatar.imageset/Contents.json b/YuMi/Assets.xcassets/utils/common_avatar.imageset/Contents.json new file mode 100644 index 00000000..bcd123e8 --- /dev/null +++ b/YuMi/Assets.xcassets/utils/common_avatar.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "common_avatar@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/utils/common_avatar.imageset/common_avatar@2x.png b/YuMi/Assets.xcassets/utils/common_avatar.imageset/common_avatar@2x.png new file mode 100644 index 00000000..835da9ad Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_avatar.imageset/common_avatar@2x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_checkbox_checked.imageset/Contents.json b/YuMi/Assets.xcassets/utils/common_checkbox_checked.imageset/Contents.json new file mode 100644 index 00000000..4ece2b53 --- /dev/null +++ b/YuMi/Assets.xcassets/utils/common_checkbox_checked.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "common_checkbox_checked@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "common_checkbox_checked@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/utils/common_checkbox_checked.imageset/common_checkbox_checked@2x.png b/YuMi/Assets.xcassets/utils/common_checkbox_checked.imageset/common_checkbox_checked@2x.png new file mode 100644 index 00000000..e8700513 Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_checkbox_checked.imageset/common_checkbox_checked@2x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_checkbox_checked.imageset/common_checkbox_checked@3x.png b/YuMi/Assets.xcassets/utils/common_checkbox_checked.imageset/common_checkbox_checked@3x.png new file mode 100644 index 00000000..6819663f Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_checkbox_checked.imageset/common_checkbox_checked@3x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_checkbox_uncheck.imageset/Contents.json b/YuMi/Assets.xcassets/utils/common_checkbox_uncheck.imageset/Contents.json new file mode 100644 index 00000000..a80db0e3 --- /dev/null +++ b/YuMi/Assets.xcassets/utils/common_checkbox_uncheck.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "common_checkbox_uncheck@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "common_checkbox_uncheck@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/utils/common_checkbox_uncheck.imageset/common_checkbox_uncheck@2x.png b/YuMi/Assets.xcassets/utils/common_checkbox_uncheck.imageset/common_checkbox_uncheck@2x.png new file mode 100644 index 00000000..22beeddb Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_checkbox_uncheck.imageset/common_checkbox_uncheck@2x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_checkbox_uncheck.imageset/common_checkbox_uncheck@3x.png b/YuMi/Assets.xcassets/utils/common_checkbox_uncheck.imageset/common_checkbox_uncheck@3x.png new file mode 100644 index 00000000..338ea5bb Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_checkbox_uncheck.imageset/common_checkbox_uncheck@3x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_close_white.imageset/Contents.json b/YuMi/Assets.xcassets/utils/common_close_white.imageset/Contents.json new file mode 100644 index 00000000..1786b6d7 --- /dev/null +++ b/YuMi/Assets.xcassets/utils/common_close_white.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "common_close_white@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "common_close_white@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/utils/common_close_white.imageset/common_close_white@2x.png b/YuMi/Assets.xcassets/utils/common_close_white.imageset/common_close_white@2x.png new file mode 100644 index 00000000..db170c1e Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_close_white.imageset/common_close_white@2x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_close_white.imageset/common_close_white@3x.png b/YuMi/Assets.xcassets/utils/common_close_white.imageset/common_close_white@3x.png new file mode 100644 index 00000000..b1d50337 Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_close_white.imageset/common_close_white@3x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_diamond.imageset/Contents.json b/YuMi/Assets.xcassets/utils/common_diamond.imageset/Contents.json new file mode 100644 index 00000000..60294607 --- /dev/null +++ b/YuMi/Assets.xcassets/utils/common_diamond.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "common_diamond@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "common_diamond@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/utils/common_diamond.imageset/common_diamond@2x.png b/YuMi/Assets.xcassets/utils/common_diamond.imageset/common_diamond@2x.png new file mode 100644 index 00000000..5d290e29 Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_diamond.imageset/common_diamond@2x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_diamond.imageset/common_diamond@3x.png b/YuMi/Assets.xcassets/utils/common_diamond.imageset/common_diamond@3x.png new file mode 100644 index 00000000..583f3ab3 Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_diamond.imageset/common_diamond@3x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_empty.imageset/Contents.json b/YuMi/Assets.xcassets/utils/common_empty.imageset/Contents.json new file mode 100644 index 00000000..77117db8 --- /dev/null +++ b/YuMi/Assets.xcassets/utils/common_empty.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "common_empty@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "common_empty@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/utils/common_empty.imageset/common_empty@2x.png b/YuMi/Assets.xcassets/utils/common_empty.imageset/common_empty@2x.png new file mode 100644 index 00000000..5d531532 Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_empty.imageset/common_empty@2x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_empty.imageset/common_empty@3x.png b/YuMi/Assets.xcassets/utils/common_empty.imageset/common_empty@3x.png new file mode 100644 index 00000000..c6442bf2 Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_empty.imageset/common_empty@3x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_empty_avatar.imageset/Contents.json b/YuMi/Assets.xcassets/utils/common_empty_avatar.imageset/Contents.json new file mode 100644 index 00000000..17e37a5b --- /dev/null +++ b/YuMi/Assets.xcassets/utils/common_empty_avatar.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "common_empty_avatar@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "common_empty_avatar@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/utils/common_empty_avatar.imageset/common_empty_avatar@2x.png b/YuMi/Assets.xcassets/utils/common_empty_avatar.imageset/common_empty_avatar@2x.png new file mode 100644 index 00000000..7edea0a2 Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_empty_avatar.imageset/common_empty_avatar@2x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_empty_avatar.imageset/common_empty_avatar@3x.png b/YuMi/Assets.xcassets/utils/common_empty_avatar.imageset/common_empty_avatar@3x.png new file mode 100644 index 00000000..a085ebb3 Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_empty_avatar.imageset/common_empty_avatar@3x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_female.imageset/Contents.json b/YuMi/Assets.xcassets/utils/common_female.imageset/Contents.json new file mode 100644 index 00000000..9c8be61e --- /dev/null +++ b/YuMi/Assets.xcassets/utils/common_female.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "common_female@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "common_female@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/utils/common_female.imageset/common_female@2x.png b/YuMi/Assets.xcassets/utils/common_female.imageset/common_female@2x.png new file mode 100644 index 00000000..3ff69fda Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_female.imageset/common_female@2x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_female.imageset/common_female@3x.png b/YuMi/Assets.xcassets/utils/common_female.imageset/common_female@3x.png new file mode 100644 index 00000000..b884acbc Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_female.imageset/common_female@3x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_icon_beautiful.imageset/Contents.json b/YuMi/Assets.xcassets/utils/common_icon_beautiful.imageset/Contents.json new file mode 100644 index 00000000..ada538a3 --- /dev/null +++ b/YuMi/Assets.xcassets/utils/common_icon_beautiful.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "common_icon_beautiful@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "common_icon_beautiful@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/utils/common_icon_beautiful.imageset/common_icon_beautiful@2x.png b/YuMi/Assets.xcassets/utils/common_icon_beautiful.imageset/common_icon_beautiful@2x.png new file mode 100644 index 00000000..9688f95f Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_icon_beautiful.imageset/common_icon_beautiful@2x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_icon_beautiful.imageset/common_icon_beautiful@3x.png b/YuMi/Assets.xcassets/utils/common_icon_beautiful.imageset/common_icon_beautiful@3x.png new file mode 100644 index 00000000..35d75244 Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_icon_beautiful.imageset/common_icon_beautiful@3x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_male.imageset/Contents.json b/YuMi/Assets.xcassets/utils/common_male.imageset/Contents.json new file mode 100644 index 00000000..4be67a95 --- /dev/null +++ b/YuMi/Assets.xcassets/utils/common_male.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "common_male@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "common_male@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/utils/common_male.imageset/common_male@2x.png b/YuMi/Assets.xcassets/utils/common_male.imageset/common_male@2x.png new file mode 100644 index 00000000..e0ffcb98 Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_male.imageset/common_male@2x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_male.imageset/common_male@3x.png b/YuMi/Assets.xcassets/utils/common_male.imageset/common_male@3x.png new file mode 100644 index 00000000..80b8fb17 Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_male.imageset/common_male@3x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_nav_back.imageset/Contents.json b/YuMi/Assets.xcassets/utils/common_nav_back.imageset/Contents.json new file mode 100644 index 00000000..608ee4a1 --- /dev/null +++ b/YuMi/Assets.xcassets/utils/common_nav_back.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "common_nav_back@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "common_nav_back@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/utils/common_nav_back.imageset/common_nav_back@2x.png b/YuMi/Assets.xcassets/utils/common_nav_back.imageset/common_nav_back@2x.png new file mode 100644 index 00000000..8fa6c4ae Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_nav_back.imageset/common_nav_back@2x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_nav_back.imageset/common_nav_back@3x.png b/YuMi/Assets.xcassets/utils/common_nav_back.imageset/common_nav_back@3x.png new file mode 100644 index 00000000..b1a605c9 Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_nav_back.imageset/common_nav_back@3x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_new_user.imageset/Contents.json b/YuMi/Assets.xcassets/utils/common_new_user.imageset/Contents.json new file mode 100644 index 00000000..afe3844f --- /dev/null +++ b/YuMi/Assets.xcassets/utils/common_new_user.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "common_new_user@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "common_new_user@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/utils/common_new_user.imageset/common_new_user@2x.png b/YuMi/Assets.xcassets/utils/common_new_user.imageset/common_new_user@2x.png new file mode 100644 index 00000000..e76f047a Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_new_user.imageset/common_new_user@2x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_new_user.imageset/common_new_user@3x.png b/YuMi/Assets.xcassets/utils/common_new_user.imageset/common_new_user@3x.png new file mode 100644 index 00000000..466f211f Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_new_user.imageset/common_new_user@3x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_offical.imageset/Contents.json b/YuMi/Assets.xcassets/utils/common_offical.imageset/Contents.json new file mode 100644 index 00000000..b724b1bc --- /dev/null +++ b/YuMi/Assets.xcassets/utils/common_offical.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "common_offical@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "common_offical@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/utils/common_offical.imageset/common_offical@2x.png b/YuMi/Assets.xcassets/utils/common_offical.imageset/common_offical@2x.png new file mode 100644 index 00000000..d8eb02b0 Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_offical.imageset/common_offical@2x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_offical.imageset/common_offical@3x.png b/YuMi/Assets.xcassets/utils/common_offical.imageset/common_offical@3x.png new file mode 100644 index 00000000..bf953883 Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_offical.imageset/common_offical@3x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_right_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/utils/common_right_arrow.imageset/Contents.json new file mode 100644 index 00000000..25da4bd1 --- /dev/null +++ b/YuMi/Assets.xcassets/utils/common_right_arrow.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "common_right_arrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "common_right_arrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/utils/common_right_arrow.imageset/common_right_arrow@2x.png b/YuMi/Assets.xcassets/utils/common_right_arrow.imageset/common_right_arrow@2x.png new file mode 100644 index 00000000..95e1560b Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_right_arrow.imageset/common_right_arrow@2x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_right_arrow.imageset/common_right_arrow@3x.png b/YuMi/Assets.xcassets/utils/common_right_arrow.imageset/common_right_arrow@3x.png new file mode 100644 index 00000000..8a1d13db Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_right_arrow.imageset/common_right_arrow@3x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_super_admin.imageset/Contents.json b/YuMi/Assets.xcassets/utils/common_super_admin.imageset/Contents.json new file mode 100644 index 00000000..7e5dcb73 --- /dev/null +++ b/YuMi/Assets.xcassets/utils/common_super_admin.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "common_super_admin@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "common_super_admin@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/utils/common_super_admin.imageset/common_super_admin@2x.png b/YuMi/Assets.xcassets/utils/common_super_admin.imageset/common_super_admin@2x.png new file mode 100644 index 00000000..a892435c Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_super_admin.imageset/common_super_admin@2x.png differ diff --git a/YuMi/Assets.xcassets/utils/common_super_admin.imageset/common_super_admin@3x.png b/YuMi/Assets.xcassets/utils/common_super_admin.imageset/common_super_admin@3x.png new file mode 100644 index 00000000..442d19a1 Binary files /dev/null and b/YuMi/Assets.xcassets/utils/common_super_admin.imageset/common_super_admin@3x.png differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_avatar.imageset/Contents.json b/YuMi/Assets.xcassets/utils/yumi_same_avatar.imageset/Contents.json deleted file mode 100644 index 30e747e1..00000000 --- a/YuMi/Assets.xcassets/utils/yumi_same_avatar.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_same_avatar@2x.png", "idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/utils/yumi_same_avatar.imageset/yumi_same_avatar@2x.png b/YuMi/Assets.xcassets/utils/yumi_same_avatar.imageset/yumi_same_avatar@2x.png deleted file mode 100644 index 4d458843..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_avatar.imageset/yumi_same_avatar@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_checkbox_checked.imageset/Contents.json b/YuMi/Assets.xcassets/utils/yumi_same_checkbox_checked.imageset/Contents.json deleted file mode 100644 index 587e62e0..00000000 --- a/YuMi/Assets.xcassets/utils/yumi_same_checkbox_checked.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_same_checkbox_checked@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_same_checkbox_checked@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/utils/yumi_same_checkbox_checked.imageset/yumi_same_checkbox_checked@2x.png b/YuMi/Assets.xcassets/utils/yumi_same_checkbox_checked.imageset/yumi_same_checkbox_checked@2x.png deleted file mode 100644 index 96e828c4..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_checkbox_checked.imageset/yumi_same_checkbox_checked@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_checkbox_checked.imageset/yumi_same_checkbox_checked@3x.png b/YuMi/Assets.xcassets/utils/yumi_same_checkbox_checked.imageset/yumi_same_checkbox_checked@3x.png deleted file mode 100644 index 6e4b2b42..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_checkbox_checked.imageset/yumi_same_checkbox_checked@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_checkbox_uncheck.imageset/Contents.json b/YuMi/Assets.xcassets/utils/yumi_same_checkbox_uncheck.imageset/Contents.json deleted file mode 100644 index 16e167aa..00000000 --- a/YuMi/Assets.xcassets/utils/yumi_same_checkbox_uncheck.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_same_checkbox_uncheck@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_same_checkbox_uncheck@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/utils/yumi_same_checkbox_uncheck.imageset/yumi_same_checkbox_uncheck@2x.png b/YuMi/Assets.xcassets/utils/yumi_same_checkbox_uncheck.imageset/yumi_same_checkbox_uncheck@2x.png deleted file mode 100644 index a1a96976..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_checkbox_uncheck.imageset/yumi_same_checkbox_uncheck@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_checkbox_uncheck.imageset/yumi_same_checkbox_uncheck@3x.png b/YuMi/Assets.xcassets/utils/yumi_same_checkbox_uncheck.imageset/yumi_same_checkbox_uncheck@3x.png deleted file mode 100644 index 4fb2a562..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_checkbox_uncheck.imageset/yumi_same_checkbox_uncheck@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_close_white.imageset/Contents.json b/YuMi/Assets.xcassets/utils/yumi_same_close_white.imageset/Contents.json deleted file mode 100644 index 53d57bba..00000000 --- a/YuMi/Assets.xcassets/utils/yumi_same_close_white.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_same_close_white@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_same_close_white@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/utils/yumi_same_close_white.imageset/yumi_same_close_white@2x.png b/YuMi/Assets.xcassets/utils/yumi_same_close_white.imageset/yumi_same_close_white@2x.png deleted file mode 100644 index 81c35a9b..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_close_white.imageset/yumi_same_close_white@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_close_white.imageset/yumi_same_close_white@3x.png b/YuMi/Assets.xcassets/utils/yumi_same_close_white.imageset/yumi_same_close_white@3x.png deleted file mode 100644 index 7c0906d7..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_close_white.imageset/yumi_same_close_white@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_diamond.imageset/Contents.json b/YuMi/Assets.xcassets/utils/yumi_same_diamond.imageset/Contents.json deleted file mode 100644 index ef74ad57..00000000 --- a/YuMi/Assets.xcassets/utils/yumi_same_diamond.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_same_diamond@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_same_diamond@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/utils/yumi_same_diamond.imageset/yumi_same_diamond@2x.png b/YuMi/Assets.xcassets/utils/yumi_same_diamond.imageset/yumi_same_diamond@2x.png deleted file mode 100644 index 224577a4..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_diamond.imageset/yumi_same_diamond@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_diamond.imageset/yumi_same_diamond@3x.png b/YuMi/Assets.xcassets/utils/yumi_same_diamond.imageset/yumi_same_diamond@3x.png deleted file mode 100644 index b3b507f6..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_diamond.imageset/yumi_same_diamond@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_empty.imageset/Contents.json b/YuMi/Assets.xcassets/utils/yumi_same_empty.imageset/Contents.json deleted file mode 100644 index 0f6ee490..00000000 --- a/YuMi/Assets.xcassets/utils/yumi_same_empty.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_same_empty@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_same_empty@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/utils/yumi_same_empty.imageset/yumi_same_empty@2x.png b/YuMi/Assets.xcassets/utils/yumi_same_empty.imageset/yumi_same_empty@2x.png deleted file mode 100644 index 77e3e7b4..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_empty.imageset/yumi_same_empty@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_empty.imageset/yumi_same_empty@3x.png b/YuMi/Assets.xcassets/utils/yumi_same_empty.imageset/yumi_same_empty@3x.png deleted file mode 100644 index 174402d2..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_empty.imageset/yumi_same_empty@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_empty_avatar.imageset/Contents.json b/YuMi/Assets.xcassets/utils/yumi_same_empty_avatar.imageset/Contents.json deleted file mode 100644 index 5bafffa3..00000000 --- a/YuMi/Assets.xcassets/utils/yumi_same_empty_avatar.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_same_empty_avatar@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_same_empty_avatar@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/utils/yumi_same_empty_avatar.imageset/yumi_same_empty_avatar@2x.png b/YuMi/Assets.xcassets/utils/yumi_same_empty_avatar.imageset/yumi_same_empty_avatar@2x.png deleted file mode 100644 index 6d15dc28..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_empty_avatar.imageset/yumi_same_empty_avatar@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_empty_avatar.imageset/yumi_same_empty_avatar@3x.png b/YuMi/Assets.xcassets/utils/yumi_same_empty_avatar.imageset/yumi_same_empty_avatar@3x.png deleted file mode 100644 index a381d232..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_empty_avatar.imageset/yumi_same_empty_avatar@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_female.imageset/Contents.json b/YuMi/Assets.xcassets/utils/yumi_same_female.imageset/Contents.json deleted file mode 100644 index 38a1d96c..00000000 --- a/YuMi/Assets.xcassets/utils/yumi_same_female.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_same_female@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_same_female@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/utils/yumi_same_female.imageset/yumi_same_female@2x.png b/YuMi/Assets.xcassets/utils/yumi_same_female.imageset/yumi_same_female@2x.png deleted file mode 100644 index 89d16ae0..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_female.imageset/yumi_same_female@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_female.imageset/yumi_same_female@3x.png b/YuMi/Assets.xcassets/utils/yumi_same_female.imageset/yumi_same_female@3x.png deleted file mode 100644 index c9ed0554..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_female.imageset/yumi_same_female@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_male.imageset/Contents.json b/YuMi/Assets.xcassets/utils/yumi_same_male.imageset/Contents.json deleted file mode 100644 index 3cbe04e7..00000000 --- a/YuMi/Assets.xcassets/utils/yumi_same_male.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_same_male@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_same_male@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/utils/yumi_same_male.imageset/yumi_same_male@2x.png b/YuMi/Assets.xcassets/utils/yumi_same_male.imageset/yumi_same_male@2x.png deleted file mode 100644 index 2020e4ed..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_male.imageset/yumi_same_male@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_male.imageset/yumi_same_male@3x.png b/YuMi/Assets.xcassets/utils/yumi_same_male.imageset/yumi_same_male@3x.png deleted file mode 100644 index fe53a6bc..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_male.imageset/yumi_same_male@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_new_user.imageset/Contents.json b/YuMi/Assets.xcassets/utils/yumi_same_new_user.imageset/Contents.json deleted file mode 100644 index f553354d..00000000 --- a/YuMi/Assets.xcassets/utils/yumi_same_new_user.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_same_new_user@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_same_new_user@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/utils/yumi_same_new_user.imageset/yumi_same_new_user@2x.png b/YuMi/Assets.xcassets/utils/yumi_same_new_user.imageset/yumi_same_new_user@2x.png deleted file mode 100644 index 1628e5e5..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_new_user.imageset/yumi_same_new_user@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_new_user.imageset/yumi_same_new_user@3x.png b/YuMi/Assets.xcassets/utils/yumi_same_new_user.imageset/yumi_same_new_user@3x.png deleted file mode 100644 index 452dbb63..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_new_user.imageset/yumi_same_new_user@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_offical.imageset/Contents.json b/YuMi/Assets.xcassets/utils/yumi_same_offical.imageset/Contents.json deleted file mode 100644 index 5589e375..00000000 --- a/YuMi/Assets.xcassets/utils/yumi_same_offical.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_same_offical@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_same_offical@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/utils/yumi_same_offical.imageset/yumi_same_offical@2x.png b/YuMi/Assets.xcassets/utils/yumi_same_offical.imageset/yumi_same_offical@2x.png deleted file mode 100644 index 762378ec..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_offical.imageset/yumi_same_offical@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_offical.imageset/yumi_same_offical@3x.png b/YuMi/Assets.xcassets/utils/yumi_same_offical.imageset/yumi_same_offical@3x.png deleted file mode 100644 index 60e4b7df..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_offical.imageset/yumi_same_offical@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_pic_beautiful.imageset/Contents.json b/YuMi/Assets.xcassets/utils/yumi_same_pic_beautiful.imageset/Contents.json deleted file mode 100644 index 9243dda6..00000000 --- a/YuMi/Assets.xcassets/utils/yumi_same_pic_beautiful.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_same_pic_beautiful@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_same_pic_beautiful@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/utils/yumi_same_pic_beautiful.imageset/yumi_same_pic_beautiful@2x.png b/YuMi/Assets.xcassets/utils/yumi_same_pic_beautiful.imageset/yumi_same_pic_beautiful@2x.png deleted file mode 100644 index 8c0027dc..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_pic_beautiful.imageset/yumi_same_pic_beautiful@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_pic_beautiful.imageset/yumi_same_pic_beautiful@3x.png b/YuMi/Assets.xcassets/utils/yumi_same_pic_beautiful.imageset/yumi_same_pic_beautiful@3x.png deleted file mode 100644 index b2693b8c..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_pic_beautiful.imageset/yumi_same_pic_beautiful@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_right_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/utils/yumi_same_right_arrow.imageset/Contents.json deleted file mode 100644 index 72e01338..00000000 --- a/YuMi/Assets.xcassets/utils/yumi_same_right_arrow.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_same_right_arrow@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_same_right_arrow@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/utils/yumi_same_right_arrow.imageset/yumi_same_right_arrow@2x.png b/YuMi/Assets.xcassets/utils/yumi_same_right_arrow.imageset/yumi_same_right_arrow@2x.png deleted file mode 100644 index 78cc4b36..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_right_arrow.imageset/yumi_same_right_arrow@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_right_arrow.imageset/yumi_same_right_arrow@3x.png b/YuMi/Assets.xcassets/utils/yumi_same_right_arrow.imageset/yumi_same_right_arrow@3x.png deleted file mode 100644 index e7b60966..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_right_arrow.imageset/yumi_same_right_arrow@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_super_admin.imageset/Contents.json b/YuMi/Assets.xcassets/utils/yumi_same_super_admin.imageset/Contents.json deleted file mode 100644 index 062f58fc..00000000 --- a/YuMi/Assets.xcassets/utils/yumi_same_super_admin.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_same_super_admin@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_same_super_admin@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/utils/yumi_same_super_admin.imageset/yumi_same_super_admin@2x.png b/YuMi/Assets.xcassets/utils/yumi_same_super_admin.imageset/yumi_same_super_admin@2x.png deleted file mode 100644 index 00b91a28..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_super_admin.imageset/yumi_same_super_admin@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_super_admin.imageset/yumi_same_super_admin@3x.png b/YuMi/Assets.xcassets/utils/yumi_same_super_admin.imageset/yumi_same_super_admin@3x.png deleted file mode 100644 index 61476bc5..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_super_admin.imageset/yumi_same_super_admin@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_title_back.imageset/Contents.json b/YuMi/Assets.xcassets/utils/yumi_same_title_back.imageset/Contents.json deleted file mode 100644 index a2d8dc94..00000000 --- a/YuMi/Assets.xcassets/utils/yumi_same_title_back.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_same_title_back@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_same_title_back@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/utils/yumi_same_title_back.imageset/yumi_same_title_back@2x.png b/YuMi/Assets.xcassets/utils/yumi_same_title_back.imageset/yumi_same_title_back@2x.png deleted file mode 100644 index cb4dccef..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_title_back.imageset/yumi_same_title_back@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/utils/yumi_same_title_back.imageset/yumi_same_title_back@3x.png b/YuMi/Assets.xcassets/utils/yumi_same_title_back.imageset/yumi_same_title_back@3x.png deleted file mode 100644 index cda46398..00000000 Binary files a/YuMi/Assets.xcassets/utils/yumi_same_title_back.imageset/yumi_same_title_back@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yeeat/Contents.json b/YuMi/Assets.xcassets/yeeat/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/yeeat/Contents.json +++ b/YuMi/Assets.xcassets/yeeat/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yeeat/share_copy_link.imageset/Contents.json b/YuMi/Assets.xcassets/yeeat/share_copy_link.imageset/Contents.json new file mode 100644 index 00000000..c24972aa --- /dev/null +++ b/YuMi/Assets.xcassets/yeeat/share_copy_link.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "share_copy_link@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "share_copy_link@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yeeat/share_copy_link.imageset/share_copy_link@2x.png b/YuMi/Assets.xcassets/yeeat/share_copy_link.imageset/share_copy_link@2x.png new file mode 100644 index 00000000..7156b757 Binary files /dev/null and b/YuMi/Assets.xcassets/yeeat/share_copy_link.imageset/share_copy_link@2x.png differ diff --git a/YuMi/Assets.xcassets/yeeat/share_copy_link.imageset/share_copy_link@3x.png b/YuMi/Assets.xcassets/yeeat/share_copy_link.imageset/share_copy_link@3x.png new file mode 100644 index 00000000..e4e9b5ba Binary files /dev/null and b/YuMi/Assets.xcassets/yeeat/share_copy_link.imageset/share_copy_link@3x.png differ diff --git a/YuMi/Assets.xcassets/yeeat/share_fb.imageset/Contents.json b/YuMi/Assets.xcassets/yeeat/share_fb.imageset/Contents.json new file mode 100644 index 00000000..05ab5ff7 --- /dev/null +++ b/YuMi/Assets.xcassets/yeeat/share_fb.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "share_fb@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "share_fb@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yeeat/share_fb.imageset/share_fb@2x.png b/YuMi/Assets.xcassets/yeeat/share_fb.imageset/share_fb@2x.png new file mode 100644 index 00000000..bfdc5535 Binary files /dev/null and b/YuMi/Assets.xcassets/yeeat/share_fb.imageset/share_fb@2x.png differ diff --git a/YuMi/Assets.xcassets/yeeat/share_fb.imageset/share_fb@3x.png b/YuMi/Assets.xcassets/yeeat/share_fb.imageset/share_fb@3x.png new file mode 100644 index 00000000..b7b71c9c Binary files /dev/null and b/YuMi/Assets.xcassets/yeeat/share_fb.imageset/share_fb@3x.png differ diff --git a/YuMi/Assets.xcassets/yeeat/share_line.imageset/Contents.json b/YuMi/Assets.xcassets/yeeat/share_line.imageset/Contents.json new file mode 100644 index 00000000..4a3d32c6 --- /dev/null +++ b/YuMi/Assets.xcassets/yeeat/share_line.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "share_line@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "share_line@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yeeat/share_line.imageset/share_line@2x.png b/YuMi/Assets.xcassets/yeeat/share_line.imageset/share_line@2x.png new file mode 100644 index 00000000..303c6048 Binary files /dev/null and b/YuMi/Assets.xcassets/yeeat/share_line.imageset/share_line@2x.png differ diff --git a/YuMi/Assets.xcassets/yeeat/share_line.imageset/share_line@3x.png b/YuMi/Assets.xcassets/yeeat/share_line.imageset/share_line@3x.png new file mode 100644 index 00000000..df5b8ea2 Binary files /dev/null and b/YuMi/Assets.xcassets/yeeat/share_line.imageset/share_line@3x.png differ diff --git a/YuMi/Assets.xcassets/yeeat/yumi_parti_copy_link.imageset/Contents.json b/YuMi/Assets.xcassets/yeeat/yumi_parti_copy_link.imageset/Contents.json deleted file mode 100644 index eb83c77f..00000000 --- a/YuMi/Assets.xcassets/yeeat/yumi_parti_copy_link.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_parti_copy_link@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_parti_copy_link@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yeeat/yumi_parti_copy_link.imageset/yumi_parti_copy_link@2x.png b/YuMi/Assets.xcassets/yeeat/yumi_parti_copy_link.imageset/yumi_parti_copy_link@2x.png deleted file mode 100644 index 403c9556..00000000 Binary files a/YuMi/Assets.xcassets/yeeat/yumi_parti_copy_link.imageset/yumi_parti_copy_link@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yeeat/yumi_parti_copy_link.imageset/yumi_parti_copy_link@3x.png b/YuMi/Assets.xcassets/yeeat/yumi_parti_copy_link.imageset/yumi_parti_copy_link@3x.png deleted file mode 100644 index df872cf1..00000000 Binary files a/YuMi/Assets.xcassets/yeeat/yumi_parti_copy_link.imageset/yumi_parti_copy_link@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yeeat/yumi_parti_fb.imageset/Contents.json b/YuMi/Assets.xcassets/yeeat/yumi_parti_fb.imageset/Contents.json deleted file mode 100644 index 79535cb7..00000000 --- a/YuMi/Assets.xcassets/yeeat/yumi_parti_fb.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_parti_fb@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_parti_fb@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yeeat/yumi_parti_fb.imageset/yumi_parti_fb@2x.png b/YuMi/Assets.xcassets/yeeat/yumi_parti_fb.imageset/yumi_parti_fb@2x.png deleted file mode 100644 index 503fc4ea..00000000 Binary files a/YuMi/Assets.xcassets/yeeat/yumi_parti_fb.imageset/yumi_parti_fb@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yeeat/yumi_parti_fb.imageset/yumi_parti_fb@3x.png b/YuMi/Assets.xcassets/yeeat/yumi_parti_fb.imageset/yumi_parti_fb@3x.png deleted file mode 100644 index 91a86ae2..00000000 Binary files a/YuMi/Assets.xcassets/yeeat/yumi_parti_fb.imageset/yumi_parti_fb@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yeeat/yumi_parti_line.imageset/Contents.json b/YuMi/Assets.xcassets/yeeat/yumi_parti_line.imageset/Contents.json deleted file mode 100644 index 4a778c5e..00000000 --- a/YuMi/Assets.xcassets/yeeat/yumi_parti_line.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_parti_line@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_parti_line@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yeeat/yumi_parti_line.imageset/yumi_parti_line@2x.png b/YuMi/Assets.xcassets/yeeat/yumi_parti_line.imageset/yumi_parti_line@2x.png deleted file mode 100644 index cb6b55ff..00000000 Binary files a/YuMi/Assets.xcassets/yeeat/yumi_parti_line.imageset/yumi_parti_line@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yeeat/yumi_parti_line.imageset/yumi_parti_line@3x.png b/YuMi/Assets.xcassets/yeeat/yumi_parti_line.imageset/yumi_parti_line@3x.png deleted file mode 100644 index b4229a5b..00000000 Binary files a/YuMi/Assets.xcassets/yeeat/yumi_parti_line.imageset/yumi_parti_line@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/Contents.json +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/acrossPK_countDown_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/acrossPK_countDown_bg.imageset/Contents.json new file mode 100644 index 00000000..4c2cb28b --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/acrossPK_countDown_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "acrossPK_countDown_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "acrossPK_countDown_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/acrossPK_countDown_bg.imageset/acrossPK_countDown_bg@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/acrossPK_countDown_bg.imageset/acrossPK_countDown_bg@2x.png new file mode 100644 index 00000000..885e1e79 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/acrossPK_countDown_bg.imageset/acrossPK_countDown_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/acrossPK_countDown_bg.imageset/acrossPK_countDown_bg@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/acrossPK_countDown_bg.imageset/acrossPK_countDown_bg@3x.png new file mode 100644 index 00000000..928102f8 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/acrossPK_countDown_bg.imageset/acrossPK_countDown_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/acrossPK_countDown_left_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/acrossPK_countDown_left_bg.imageset/Contents.json new file mode 100644 index 00000000..2aeee433 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/acrossPK_countDown_left_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "acrossPK_countDown_left_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "acrossPK_countDown_left_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/acrossPK_countDown_left_bg.imageset/acrossPK_countDown_left_bg@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/acrossPK_countDown_left_bg.imageset/acrossPK_countDown_left_bg@2x.png new file mode 100644 index 00000000..641eae4b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/acrossPK_countDown_left_bg.imageset/acrossPK_countDown_left_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/acrossPK_countDown_left_bg.imageset/acrossPK_countDown_left_bg@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/acrossPK_countDown_left_bg.imageset/acrossPK_countDown_left_bg@3x.png new file mode 100644 index 00000000..732641ed Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/acrossPK_countDown_left_bg.imageset/acrossPK_countDown_left_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_invite_icon.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_invite_icon.imageset/Contents.json new file mode 100644 index 00000000..9c481d9c --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_invite_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchor_pk_invite_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchor_pk_invite_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_invite_icon.imageset/anchor_pk_invite_icon@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_invite_icon.imageset/anchor_pk_invite_icon@2x.png new file mode 100644 index 00000000..b01bdaf6 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_invite_icon.imageset/anchor_pk_invite_icon@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_invite_icon.imageset/anchor_pk_invite_icon@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_invite_icon.imageset/anchor_pk_invite_icon@3x.png new file mode 100644 index 00000000..75f167c5 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_invite_icon.imageset/anchor_pk_invite_icon@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_mute_other.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_mute_other.imageset/Contents.json new file mode 100644 index 00000000..48a3bc29 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_mute_other.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchor_pk_mute_other@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchor_pk_mute_other@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_mute_other.imageset/anchor_pk_mute_other@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_mute_other.imageset/anchor_pk_mute_other@2x.png new file mode 100644 index 00000000..5865a542 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_mute_other.imageset/anchor_pk_mute_other@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_mute_other.imageset/anchor_pk_mute_other@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_mute_other.imageset/anchor_pk_mute_other@3x.png new file mode 100644 index 00000000..78fdc75a Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_mute_other.imageset/anchor_pk_mute_other@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_open_other.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_open_other.imageset/Contents.json new file mode 100644 index 00000000..d3c013cc --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_open_other.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchor_pk_open_other@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchor_pk_open_other@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_open_other.imageset/anchor_pk_open_other@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_open_other.imageset/anchor_pk_open_other@2x.png new file mode 100644 index 00000000..d1ea6b64 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_open_other.imageset/anchor_pk_open_other@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_open_other.imageset/anchor_pk_open_other@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_open_other.imageset/anchor_pk_open_other@3x.png new file mode 100644 index 00000000..f26a2328 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_open_other.imageset/anchor_pk_open_other@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_random_icon.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_random_icon.imageset/Contents.json new file mode 100644 index 00000000..cbaca198 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_random_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchor_pk_random_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchor_pk_random_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_random_icon.imageset/anchor_pk_random_icon@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_random_icon.imageset/anchor_pk_random_icon@2x.png new file mode 100644 index 00000000..b6eb2e67 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_random_icon.imageset/anchor_pk_random_icon@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_random_icon.imageset/anchor_pk_random_icon@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_random_icon.imageset/anchor_pk_random_icon@3x.png new file mode 100644 index 00000000..c24d415f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/anchor_pk_random_icon.imageset/anchor_pk_random_icon@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_delete_pk_room.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_delete_pk_room.imageset/Contents.json new file mode 100644 index 00000000..c57fb376 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_delete_pk_room.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_delete_pk_room@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_delete_pk_room@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_delete_pk_room.imageset/room_across_delete_pk_room@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_delete_pk_room.imageset/room_across_delete_pk_room@2x.png new file mode 100644 index 00000000..9eb4ddb9 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_delete_pk_room.imageset/room_across_delete_pk_room@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_delete_pk_room.imageset/room_across_delete_pk_room@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_delete_pk_room.imageset/room_across_delete_pk_room@3x.png new file mode 100644 index 00000000..3c3ea5d3 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_delete_pk_room.imageset/room_across_delete_pk_room@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_add_room.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_add_room.imageset/Contents.json new file mode 100644 index 00000000..8e7acc14 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_add_room.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_add_room@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_add_room@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_add_room.imageset/room_across_pk_add_room@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_add_room.imageset/room_across_pk_add_room@2x.png new file mode 100644 index 00000000..143fdadc Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_add_room.imageset/room_across_pk_add_room@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_add_room.imageset/room_across_pk_add_room@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_add_room.imageset/room_across_pk_add_room@3x.png new file mode 100644 index 00000000..c7766298 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_add_room.imageset/room_across_pk_add_room@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_help.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_help.imageset/Contents.json new file mode 100644 index 00000000..d57c7f5c --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_help.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_help@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_help@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_help.imageset/room_across_pk_help@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_help.imageset/room_across_pk_help@2x.png new file mode 100644 index 00000000..484eecec Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_help.imageset/room_across_pk_help@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_help.imageset/room_across_pk_help@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_help.imageset/room_across_pk_help@3x.png new file mode 100644 index 00000000..84f393a1 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_help.imageset/room_across_pk_help@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_bg.imageset/Contents.json new file mode 100644 index 00000000..2777f32f --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_invite_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_invite_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_bg.imageset/room_across_pk_invite_bg@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_bg.imageset/room_across_pk_invite_bg@2x.png new file mode 100644 index 00000000..2c1283e7 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_bg.imageset/room_across_pk_invite_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_bg.imageset/room_across_pk_invite_bg@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_bg.imageset/room_across_pk_invite_bg@3x.png new file mode 100644 index 00000000..11017de8 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_bg.imageset/room_across_pk_invite_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_accept_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_accept_bg.imageset/Contents.json new file mode 100644 index 00000000..798a53e9 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_accept_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_invite_result_accept_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_invite_result_accept_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_accept_bg.imageset/room_across_pk_invite_result_accept_bg@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_accept_bg.imageset/room_across_pk_invite_result_accept_bg@2x.png new file mode 100644 index 00000000..49369bf0 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_accept_bg.imageset/room_across_pk_invite_result_accept_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_accept_bg.imageset/room_across_pk_invite_result_accept_bg@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_accept_bg.imageset/room_across_pk_invite_result_accept_bg@3x.png new file mode 100644 index 00000000..77232d73 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_accept_bg.imageset/room_across_pk_invite_result_accept_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_bg.imageset/Contents.json new file mode 100644 index 00000000..9685b2d7 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_invite_result_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_invite_result_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_bg.imageset/room_across_pk_invite_result_bg@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_bg.imageset/room_across_pk_invite_result_bg@2x.png new file mode 100644 index 00000000..a5a80159 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_bg.imageset/room_across_pk_invite_result_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_bg.imageset/room_across_pk_invite_result_bg@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_bg.imageset/room_across_pk_invite_result_bg@3x.png new file mode 100644 index 00000000..7683f6cf Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_bg.imageset/room_across_pk_invite_result_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_close.imageset/Contents.json new file mode 100644 index 00000000..e9f30577 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_close.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_invite_result_close@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_invite_result_close@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_close.imageset/room_across_pk_invite_result_close@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_close.imageset/room_across_pk_invite_result_close@2x.png new file mode 100644 index 00000000..7fb64a8c Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_close.imageset/room_across_pk_invite_result_close@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_close.imageset/room_across_pk_invite_result_close@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_close.imageset/room_across_pk_invite_result_close@3x.png new file mode 100644 index 00000000..a0b6dd93 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_invite_result_close.imageset/room_across_pk_invite_result_close@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_bg.imageset/Contents.json new file mode 100644 index 00000000..08393f61 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_panel_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_panel_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_bg.imageset/room_across_pk_panel_bg@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_bg.imageset/room_across_pk_panel_bg@2x.png new file mode 100644 index 00000000..c076b043 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_bg.imageset/room_across_pk_panel_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_bg.imageset/room_across_pk_panel_bg@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_bg.imageset/room_across_pk_panel_bg@3x.png new file mode 100644 index 00000000..b644b677 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_bg.imageset/room_across_pk_panel_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_avatar.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_avatar.imageset/Contents.json new file mode 100644 index 00000000..f77cd46a --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_avatar.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_panel_charm_avatar@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_panel_charm_avatar@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_avatar.imageset/room_across_pk_panel_charm_avatar@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_avatar.imageset/room_across_pk_panel_charm_avatar@2x.png new file mode 100644 index 00000000..e67fc26b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_avatar.imageset/room_across_pk_panel_charm_avatar@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_avatar.imageset/room_across_pk_panel_charm_avatar@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_avatar.imageset/room_across_pk_panel_charm_avatar@3x.png new file mode 100644 index 00000000..6fe6ce63 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_avatar.imageset/room_across_pk_panel_charm_avatar@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_bg.imageset/Contents.json new file mode 100644 index 00000000..e16271d9 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_panel_charm_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_panel_charm_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_bg.imageset/room_across_pk_panel_charm_bg@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_bg.imageset/room_across_pk_panel_charm_bg@2x.png new file mode 100644 index 00000000..9084893f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_bg.imageset/room_across_pk_panel_charm_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_bg.imageset/room_across_pk_panel_charm_bg@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_bg.imageset/room_across_pk_panel_charm_bg@3x.png new file mode 100644 index 00000000..d52653f0 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_bg.imageset/room_across_pk_panel_charm_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_head.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_head.imageset/Contents.json new file mode 100644 index 00000000..b45a10d9 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_head.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_panel_charm_head@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_panel_charm_head@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_head.imageset/room_across_pk_panel_charm_head@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_head.imageset/room_across_pk_panel_charm_head@2x.png new file mode 100644 index 00000000..a7e44a1d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_head.imageset/room_across_pk_panel_charm_head@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_head.imageset/room_across_pk_panel_charm_head@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_head.imageset/room_across_pk_panel_charm_head@3x.png new file mode 100644 index 00000000..5ed0a6d1 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_charm_head.imageset/room_across_pk_panel_charm_head@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_avatar.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_avatar.imageset/Contents.json new file mode 100644 index 00000000..45e125c5 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_avatar.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_panel_contribute_avatar@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_panel_contribute_avatar@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_avatar.imageset/room_across_pk_panel_contribute_avatar@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_avatar.imageset/room_across_pk_panel_contribute_avatar@2x.png new file mode 100644 index 00000000..ef843434 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_avatar.imageset/room_across_pk_panel_contribute_avatar@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_avatar.imageset/room_across_pk_panel_contribute_avatar@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_avatar.imageset/room_across_pk_panel_contribute_avatar@3x.png new file mode 100644 index 00000000..96e8f015 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_avatar.imageset/room_across_pk_panel_contribute_avatar@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_bg.imageset/Contents.json new file mode 100644 index 00000000..7146ddf8 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_panel_contribute_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_panel_contribute_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_bg.imageset/room_across_pk_panel_contribute_bg@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_bg.imageset/room_across_pk_panel_contribute_bg@2x.png new file mode 100644 index 00000000..3de45a0e Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_bg.imageset/room_across_pk_panel_contribute_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_bg.imageset/room_across_pk_panel_contribute_bg@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_bg.imageset/room_across_pk_panel_contribute_bg@3x.png new file mode 100644 index 00000000..cd96db41 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_bg.imageset/room_across_pk_panel_contribute_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_head.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_head.imageset/Contents.json new file mode 100644 index 00000000..dc108705 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_head.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_panel_contribute_head@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_panel_contribute_head@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_head.imageset/room_across_pk_panel_contribute_head@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_head.imageset/room_across_pk_panel_contribute_head@2x.png new file mode 100644 index 00000000..9ddfd773 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_head.imageset/room_across_pk_panel_contribute_head@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_head.imageset/room_across_pk_panel_contribute_head@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_head.imageset/room_across_pk_panel_contribute_head@3x.png new file mode 100644 index 00000000..5b2d9d27 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_contribute_head.imageset/room_across_pk_panel_contribute_head@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_fold.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_fold.imageset/Contents.json new file mode 100644 index 00000000..08767b6a --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_fold.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_panel_fold@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_panel_fold@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_fold.imageset/room_across_pk_panel_fold@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_fold.imageset/room_across_pk_panel_fold@2x.png new file mode 100644 index 00000000..b42e860d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_fold.imageset/room_across_pk_panel_fold@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_fold.imageset/room_across_pk_panel_fold@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_fold.imageset/room_across_pk_panel_fold@3x.png new file mode 100644 index 00000000..868a0008 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_fold.imageset/room_across_pk_panel_fold@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_help.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_help.imageset/Contents.json new file mode 100644 index 00000000..30a974bb --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_help.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_panel_help@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_panel_help@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_help.imageset/room_across_pk_panel_help@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_help.imageset/room_across_pk_panel_help@2x.png new file mode 100644 index 00000000..a75c4d3c Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_help.imageset/room_across_pk_panel_help@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_help.imageset/room_across_pk_panel_help@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_help.imageset/room_across_pk_panel_help@3x.png new file mode 100644 index 00000000..20a5cf19 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_help.imageset/room_across_pk_panel_help@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_rule_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_rule_bg.imageset/Contents.json new file mode 100644 index 00000000..94af54a6 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_rule_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_panel_rule_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_panel_rule_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_rule_bg.imageset/room_across_pk_panel_rule_bg@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_rule_bg.imageset/room_across_pk_panel_rule_bg@2x.png new file mode 100644 index 00000000..b2ff57b1 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_rule_bg.imageset/room_across_pk_panel_rule_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_rule_bg.imageset/room_across_pk_panel_rule_bg@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_rule_bg.imageset/room_across_pk_panel_rule_bg@3x.png new file mode 100644 index 00000000..7e9989ac Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_rule_bg.imageset/room_across_pk_panel_rule_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_small_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_small_bg.imageset/Contents.json new file mode 100644 index 00000000..440a0059 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_small_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_panel_small_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_panel_small_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_small_bg.imageset/room_across_pk_panel_small_bg@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_small_bg.imageset/room_across_pk_panel_small_bg@2x.png new file mode 100644 index 00000000..ae256ac8 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_small_bg.imageset/room_across_pk_panel_small_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_small_bg.imageset/room_across_pk_panel_small_bg@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_small_bg.imageset/room_across_pk_panel_small_bg@3x.png new file mode 100644 index 00000000..8dcfef1f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_panel_small_bg.imageset/room_across_pk_panel_small_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_prize_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_prize_bg.imageset/Contents.json new file mode 100644 index 00000000..b7fdea3a --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_prize_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_prize_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_prize_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_prize_bg.imageset/room_across_pk_prize_bg@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_prize_bg.imageset/room_across_pk_prize_bg@2x.png new file mode 100644 index 00000000..6a57f86c Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_prize_bg.imageset/room_across_pk_prize_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_prize_bg.imageset/room_across_pk_prize_bg@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_prize_bg.imageset/room_across_pk_prize_bg@3x.png new file mode 100644 index 00000000..9576ec08 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_prize_bg.imageset/room_across_pk_prize_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_prize_ko.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_prize_ko.imageset/Contents.json new file mode 100644 index 00000000..03dd61ef --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_prize_ko.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_prize_ko@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_prize_ko@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_prize_ko.imageset/room_across_pk_prize_ko@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_prize_ko.imageset/room_across_pk_prize_ko@2x.png new file mode 100644 index 00000000..1aa68c0b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_prize_ko.imageset/room_across_pk_prize_ko@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_prize_ko.imageset/room_across_pk_prize_ko@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_prize_ko.imageset/room_across_pk_prize_ko@3x.png new file mode 100644 index 00000000..ca106407 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_prize_ko.imageset/room_across_pk_prize_ko@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_bg.imageset/Contents.json new file mode 100644 index 00000000..de0bc07b --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_result_fail_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_result_fail_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_bg.imageset/room_across_pk_result_fail_bg@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_bg.imageset/room_across_pk_result_fail_bg@2x.png new file mode 100644 index 00000000..540ae0bf Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_bg.imageset/room_across_pk_result_fail_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_bg.imageset/room_across_pk_result_fail_bg@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_bg.imageset/room_across_pk_result_fail_bg@3x.png new file mode 100644 index 00000000..db230ff9 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_bg.imageset/room_across_pk_result_fail_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_close.imageset/Contents.json new file mode 100644 index 00000000..842aa6a2 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_close.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_result_fail_close@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_result_fail_close@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_close.imageset/room_across_pk_result_fail_close@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_close.imageset/room_across_pk_result_fail_close@2x.png new file mode 100644 index 00000000..4d268f3c Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_close.imageset/room_across_pk_result_fail_close@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_close.imageset/room_across_pk_result_fail_close@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_close.imageset/room_across_pk_result_fail_close@3x.png new file mode 100644 index 00000000..3aabd700 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_close.imageset/room_across_pk_result_fail_close@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_person_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_person_bg.imageset/Contents.json new file mode 100644 index 00000000..7a7372f4 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_person_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_result_fail_person_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_result_fail_person_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_person_bg.imageset/room_across_pk_result_fail_person_bg@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_person_bg.imageset/room_across_pk_result_fail_person_bg@2x.png new file mode 100644 index 00000000..337f08b6 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_person_bg.imageset/room_across_pk_result_fail_person_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_person_bg.imageset/room_across_pk_result_fail_person_bg@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_person_bg.imageset/room_across_pk_result_fail_person_bg@3x.png new file mode 100644 index 00000000..d2e32d33 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_fail_person_bg.imageset/room_across_pk_result_fail_person_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forcednd_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forcednd_bg.imageset/Contents.json new file mode 100644 index 00000000..6575d159 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forcednd_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_result_forcednd_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_result_forcednd_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forcednd_bg.imageset/room_across_pk_result_forcednd_bg@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forcednd_bg.imageset/room_across_pk_result_forcednd_bg@2x.png new file mode 100644 index 00000000..625b5601 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forcednd_bg.imageset/room_across_pk_result_forcednd_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forcednd_bg.imageset/room_across_pk_result_forcednd_bg@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forcednd_bg.imageset/room_across_pk_result_forcednd_bg@3x.png new file mode 100644 index 00000000..b4684c16 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forcednd_bg.imageset/room_across_pk_result_forcednd_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_blue_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_blue_bg.imageset/Contents.json new file mode 100644 index 00000000..916a1e57 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_blue_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_result_forceend_blue_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_result_forceend_blue_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_blue_bg.imageset/room_across_pk_result_forceend_blue_bg@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_blue_bg.imageset/room_across_pk_result_forceend_blue_bg@2x.png new file mode 100644 index 00000000..dd5ac977 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_blue_bg.imageset/room_across_pk_result_forceend_blue_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_blue_bg.imageset/room_across_pk_result_forceend_blue_bg@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_blue_bg.imageset/room_across_pk_result_forceend_blue_bg@3x.png new file mode 100644 index 00000000..23d0a904 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_blue_bg.imageset/room_across_pk_result_forceend_blue_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_pk_icon.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_pk_icon.imageset/Contents.json new file mode 100644 index 00000000..ff29902c --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_pk_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_result_forceend_pk_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_result_forceend_pk_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_pk_icon.imageset/room_across_pk_result_forceend_pk_icon@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_pk_icon.imageset/room_across_pk_result_forceend_pk_icon@2x.png new file mode 100644 index 00000000..4dcf9d30 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_pk_icon.imageset/room_across_pk_result_forceend_pk_icon@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_pk_icon.imageset/room_across_pk_result_forceend_pk_icon@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_pk_icon.imageset/room_across_pk_result_forceend_pk_icon@3x.png new file mode 100644 index 00000000..e62cabf0 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_pk_icon.imageset/room_across_pk_result_forceend_pk_icon@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_red_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_red_bg.imageset/Contents.json new file mode 100644 index 00000000..d989d343 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_red_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_result_forceend_red_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_result_forceend_red_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_red_bg.imageset/room_across_pk_result_forceend_red_bg@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_red_bg.imageset/room_across_pk_result_forceend_red_bg@2x.png new file mode 100644 index 00000000..4ba22f1f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_red_bg.imageset/room_across_pk_result_forceend_red_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_red_bg.imageset/room_across_pk_result_forceend_red_bg@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_red_bg.imageset/room_across_pk_result_forceend_red_bg@3x.png new file mode 100644 index 00000000..d1eba2b3 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_forceend_red_bg.imageset/room_across_pk_result_forceend_red_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_pk_icon.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_pk_icon.imageset/Contents.json new file mode 100644 index 00000000..de472486 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_pk_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_result_pk_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_result_pk_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_pk_icon.imageset/room_across_pk_result_pk_icon@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_pk_icon.imageset/room_across_pk_result_pk_icon@2x.png new file mode 100644 index 00000000..e6820065 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_pk_icon.imageset/room_across_pk_result_pk_icon@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_pk_icon.imageset/room_across_pk_result_pk_icon@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_pk_icon.imageset/room_across_pk_result_pk_icon@3x.png new file mode 100644 index 00000000..943e827c Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_pk_icon.imageset/room_across_pk_result_pk_icon@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_red_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_red_bg.imageset/Contents.json new file mode 100644 index 00000000..c4bfa4be --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_red_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_result_red_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_result_red_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_red_bg.imageset/room_across_pk_result_red_bg@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_red_bg.imageset/room_across_pk_result_red_bg@2x.png new file mode 100644 index 00000000..ca8668a2 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_red_bg.imageset/room_across_pk_result_red_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_red_bg.imageset/room_across_pk_result_red_bg@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_red_bg.imageset/room_across_pk_result_red_bg@3x.png new file mode 100644 index 00000000..1142b138 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_red_bg.imageset/room_across_pk_result_red_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_bg.imageset/Contents.json new file mode 100644 index 00000000..7ad54c1a --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_result_tie_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_result_tie_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_bg.imageset/room_across_pk_result_tie_bg@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_bg.imageset/room_across_pk_result_tie_bg@2x.png new file mode 100644 index 00000000..756518fb Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_bg.imageset/room_across_pk_result_tie_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_bg.imageset/room_across_pk_result_tie_bg@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_bg.imageset/room_across_pk_result_tie_bg@3x.png new file mode 100644 index 00000000..470982f5 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_bg.imageset/room_across_pk_result_tie_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_close.imageset/Contents.json new file mode 100644 index 00000000..ca15d04f --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_close.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_result_tie_close@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_result_tie_close@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_close.imageset/room_across_pk_result_tie_close@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_close.imageset/room_across_pk_result_tie_close@2x.png new file mode 100644 index 00000000..b0fc0421 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_close.imageset/room_across_pk_result_tie_close@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_close.imageset/room_across_pk_result_tie_close@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_close.imageset/room_across_pk_result_tie_close@3x.png new file mode 100644 index 00000000..dc41ccda Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_close.imageset/room_across_pk_result_tie_close@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_person_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_person_bg.imageset/Contents.json new file mode 100644 index 00000000..dd3c7665 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_person_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_result_tie_person_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_result_tie_person_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_person_bg.imageset/room_across_pk_result_tie_person_bg@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_person_bg.imageset/room_across_pk_result_tie_person_bg@2x.png new file mode 100644 index 00000000..7af16dce Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_person_bg.imageset/room_across_pk_result_tie_person_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_person_bg.imageset/room_across_pk_result_tie_person_bg@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_person_bg.imageset/room_across_pk_result_tie_person_bg@3x.png new file mode 100644 index 00000000..1ac4cce2 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_tie_person_bg.imageset/room_across_pk_result_tie_person_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_bg.imageset/Contents.json new file mode 100644 index 00000000..854fe193 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_result_win_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_result_win_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_bg.imageset/room_across_pk_result_win_bg@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_bg.imageset/room_across_pk_result_win_bg@2x.png new file mode 100644 index 00000000..7e2bf735 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_bg.imageset/room_across_pk_result_win_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_bg.imageset/room_across_pk_result_win_bg@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_bg.imageset/room_across_pk_result_win_bg@3x.png new file mode 100644 index 00000000..79942061 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_bg.imageset/room_across_pk_result_win_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_blue_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_blue_bg.imageset/Contents.json new file mode 100644 index 00000000..4503f94d --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_blue_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_result_win_blue_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_result_win_blue_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_blue_bg.imageset/room_across_pk_result_win_blue_bg@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_blue_bg.imageset/room_across_pk_result_win_blue_bg@2x.png new file mode 100644 index 00000000..d3dde0d9 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_blue_bg.imageset/room_across_pk_result_win_blue_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_blue_bg.imageset/room_across_pk_result_win_blue_bg@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_blue_bg.imageset/room_across_pk_result_win_blue_bg@3x.png new file mode 100644 index 00000000..d9bc1130 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_blue_bg.imageset/room_across_pk_result_win_blue_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_close.imageset/Contents.json new file mode 100644 index 00000000..7932d6d8 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_close.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_result_win_close@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_result_win_close@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_close.imageset/room_across_pk_result_win_close@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_close.imageset/room_across_pk_result_win_close@2x.png new file mode 100644 index 00000000..b4b8ee73 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_close.imageset/room_across_pk_result_win_close@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_close.imageset/room_across_pk_result_win_close@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_close.imageset/room_across_pk_result_win_close@3x.png new file mode 100644 index 00000000..d56a03b5 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_close.imageset/room_across_pk_result_win_close@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_icon.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_icon.imageset/Contents.json new file mode 100644 index 00000000..386f9876 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_result_win_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_result_win_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_icon.imageset/room_across_pk_result_win_icon@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_icon.imageset/room_across_pk_result_win_icon@2x.png new file mode 100644 index 00000000..540e5099 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_icon.imageset/room_across_pk_result_win_icon@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_icon.imageset/room_across_pk_result_win_icon@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_icon.imageset/room_across_pk_result_win_icon@3x.png new file mode 100644 index 00000000..bb150fdb Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_icon.imageset/room_across_pk_result_win_icon@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_person_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_person_bg.imageset/Contents.json new file mode 100644 index 00000000..c49b122b --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_person_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_result_win_person_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_result_win_person_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_person_bg.imageset/room_across_pk_result_win_person_bg@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_person_bg.imageset/room_across_pk_result_win_person_bg@2x.png new file mode 100644 index 00000000..7231d7ed Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_person_bg.imageset/room_across_pk_result_win_person_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_person_bg.imageset/room_across_pk_result_win_person_bg@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_person_bg.imageset/room_across_pk_result_win_person_bg@3x.png new file mode 100644 index 00000000..4418d8be Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_result_win_person_bg.imageset/room_across_pk_result_win_person_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_rule_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_rule_bg.imageset/Contents.json new file mode 100644 index 00000000..f191ff63 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_rule_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_across_pk_rule_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_across_pk_rule_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_rule_bg.imageset/room_across_pk_rule_bg@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_rule_bg.imageset/room_across_pk_rule_bg@2x.png new file mode 100644 index 00000000..e502b8c6 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_rule_bg.imageset/room_across_pk_rule_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_rule_bg.imageset/room_across_pk_rule_bg@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_rule_bg.imageset/room_across_pk_rule_bg@3x.png new file mode 100644 index 00000000..b2bd5f3c Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/room_across_pk_rule_bg.imageset/room_across_pk_rule_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/roomg_across_pk_choose_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/roomg_across_pk_choose_normal.imageset/Contents.json new file mode 100644 index 00000000..27d398b1 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/roomg_across_pk_choose_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "roomg_across_pk_choose_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "roomg_across_pk_choose_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/roomg_across_pk_choose_normal.imageset/roomg_across_pk_choose_normal@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/roomg_across_pk_choose_normal.imageset/roomg_across_pk_choose_normal@2x.png new file mode 100644 index 00000000..69780cba Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/roomg_across_pk_choose_normal.imageset/roomg_across_pk_choose_normal@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/roomg_across_pk_choose_normal.imageset/roomg_across_pk_choose_normal@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/roomg_across_pk_choose_normal.imageset/roomg_across_pk_choose_normal@3x.png new file mode 100644 index 00000000..daa2b9e8 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/roomg_across_pk_choose_normal.imageset/roomg_across_pk_choose_normal@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/roomg_across_pk_choose_select.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/roomg_across_pk_choose_select.imageset/Contents.json new file mode 100644 index 00000000..23b9e607 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/AcrossRoomPK/roomg_across_pk_choose_select.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "roomg_across_pk_choose_select@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "roomg_across_pk_choose_select@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/roomg_across_pk_choose_select.imageset/roomg_across_pk_choose_select@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/roomg_across_pk_choose_select.imageset/roomg_across_pk_choose_select@2x.png new file mode 100644 index 00000000..31b966d0 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/roomg_across_pk_choose_select.imageset/roomg_across_pk_choose_select@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/roomg_across_pk_choose_select.imageset/roomg_across_pk_choose_select@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/roomg_across_pk_choose_select.imageset/roomg_across_pk_choose_select@3x.png new file mode 100644 index 00000000..9055892e Binary files /dev/null and b/YuMi/Assets.xcassets/yna/AcrossRoomPK/roomg_across_pk_choose_select.imageset/roomg_across_pk_choose_select@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_acrossPK_countDown_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_acrossPK_countDown_background.imageset/Contents.json deleted file mode 100644 index af8b039b..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_acrossPK_countDown_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_acrossPK_countDown_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_acrossPK_countDown_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_acrossPK_countDown_background.imageset/yumi_acrossPK_countDown_background@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_acrossPK_countDown_background.imageset/yumi_acrossPK_countDown_background@2x.png deleted file mode 100644 index 36d6c850..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_acrossPK_countDown_background.imageset/yumi_acrossPK_countDown_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_acrossPK_countDown_background.imageset/yumi_acrossPK_countDown_background@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_acrossPK_countDown_background.imageset/yumi_acrossPK_countDown_background@3x.png deleted file mode 100644 index 1b3e6907..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_acrossPK_countDown_background.imageset/yumi_acrossPK_countDown_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_acrossPK_countDown_left_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_acrossPK_countDown_left_background.imageset/Contents.json deleted file mode 100644 index 43bc9983..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_acrossPK_countDown_left_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_acrossPK_countDown_left_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_acrossPK_countDown_left_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_acrossPK_countDown_left_background.imageset/yumi_acrossPK_countDown_left_background@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_acrossPK_countDown_left_background.imageset/yumi_acrossPK_countDown_left_background@2x.png deleted file mode 100644 index 8d28c05b..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_acrossPK_countDown_left_background.imageset/yumi_acrossPK_countDown_left_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_acrossPK_countDown_left_background.imageset/yumi_acrossPK_countDown_left_background@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_acrossPK_countDown_left_background.imageset/yumi_acrossPK_countDown_left_background@3x.png deleted file mode 100644 index ef16dd9f..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_acrossPK_countDown_left_background.imageset/yumi_acrossPK_countDown_left_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_invite_pic.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_invite_pic.imageset/Contents.json deleted file mode 100644 index 96edebed..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_invite_pic.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchor_pk_invite_pic@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchor_pk_invite_pic@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_invite_pic.imageset/yumi_anchor_pk_invite_pic@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_invite_pic.imageset/yumi_anchor_pk_invite_pic@2x.png deleted file mode 100644 index d35132e9..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_invite_pic.imageset/yumi_anchor_pk_invite_pic@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_invite_pic.imageset/yumi_anchor_pk_invite_pic@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_invite_pic.imageset/yumi_anchor_pk_invite_pic@3x.png deleted file mode 100644 index 4e14e661..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_invite_pic.imageset/yumi_anchor_pk_invite_pic@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_mute_other.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_mute_other.imageset/Contents.json deleted file mode 100644 index 45aa7673..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_mute_other.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchor_pk_mute_other@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchor_pk_mute_other@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_mute_other.imageset/yumi_anchor_pk_mute_other@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_mute_other.imageset/yumi_anchor_pk_mute_other@2x.png deleted file mode 100644 index 5c1b63c2..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_mute_other.imageset/yumi_anchor_pk_mute_other@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_mute_other.imageset/yumi_anchor_pk_mute_other@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_mute_other.imageset/yumi_anchor_pk_mute_other@3x.png deleted file mode 100644 index 24d6471d..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_mute_other.imageset/yumi_anchor_pk_mute_other@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_open_other.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_open_other.imageset/Contents.json deleted file mode 100644 index 3ba0e43b..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_open_other.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchor_pk_open_other@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchor_pk_open_other@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_open_other.imageset/yumi_anchor_pk_open_other@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_open_other.imageset/yumi_anchor_pk_open_other@2x.png deleted file mode 100644 index d24299c8..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_open_other.imageset/yumi_anchor_pk_open_other@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_open_other.imageset/yumi_anchor_pk_open_other@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_open_other.imageset/yumi_anchor_pk_open_other@3x.png deleted file mode 100644 index f9ad4cc7..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_open_other.imageset/yumi_anchor_pk_open_other@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_random_pic.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_random_pic.imageset/Contents.json deleted file mode 100644 index 42151371..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_random_pic.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchor_pk_random_pic@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchor_pk_random_pic@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_random_pic.imageset/yumi_anchor_pk_random_pic@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_random_pic.imageset/yumi_anchor_pk_random_pic@2x.png deleted file mode 100644 index 02350819..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_random_pic.imageset/yumi_anchor_pk_random_pic@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_random_pic.imageset/yumi_anchor_pk_random_pic@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_random_pic.imageset/yumi_anchor_pk_random_pic@3x.png deleted file mode 100644 index 9ddd35b6..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_anchor_pk_random_pic.imageset/yumi_anchor_pk_random_pic@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_roomg_across_pk_choose_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_roomg_across_pk_choose_normal.imageset/Contents.json deleted file mode 100644 index b3643651..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_roomg_across_pk_choose_normal.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_roomg_across_pk_choose_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_roomg_across_pk_choose_normal@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_roomg_across_pk_choose_normal.imageset/yumi_roomg_across_pk_choose_normal@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_roomg_across_pk_choose_normal.imageset/yumi_roomg_across_pk_choose_normal@2x.png deleted file mode 100644 index b6dc109e..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_roomg_across_pk_choose_normal.imageset/yumi_roomg_across_pk_choose_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_roomg_across_pk_choose_normal.imageset/yumi_roomg_across_pk_choose_normal@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_roomg_across_pk_choose_normal.imageset/yumi_roomg_across_pk_choose_normal@3x.png deleted file mode 100644 index 53129c2e..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_roomg_across_pk_choose_normal.imageset/yumi_roomg_across_pk_choose_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_roomg_across_pk_choose_select.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_roomg_across_pk_choose_select.imageset/Contents.json deleted file mode 100644 index 5574650d..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_roomg_across_pk_choose_select.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_roomg_across_pk_choose_select@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_roomg_across_pk_choose_select@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_roomg_across_pk_choose_select.imageset/yumi_roomg_across_pk_choose_select@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_roomg_across_pk_choose_select.imageset/yumi_roomg_across_pk_choose_select@2x.png deleted file mode 100644 index 5086f3ba..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_roomg_across_pk_choose_select.imageset/yumi_roomg_across_pk_choose_select@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_roomg_across_pk_choose_select.imageset/yumi_roomg_across_pk_choose_select@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_roomg_across_pk_choose_select.imageset/yumi_roomg_across_pk_choose_select@3x.png deleted file mode 100644 index 037fbc38..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_roomg_across_pk_choose_select.imageset/yumi_roomg_across_pk_choose_select@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_delete_pk_room.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_delete_pk_room.imageset/Contents.json deleted file mode 100644 index 8cce3a3f..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_delete_pk_room.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_delete_pk_room@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_delete_pk_room@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_delete_pk_room.imageset/yumi_scope_across_delete_pk_room@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_delete_pk_room.imageset/yumi_scope_across_delete_pk_room@2x.png deleted file mode 100644 index 6b635b94..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_delete_pk_room.imageset/yumi_scope_across_delete_pk_room@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_delete_pk_room.imageset/yumi_scope_across_delete_pk_room@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_delete_pk_room.imageset/yumi_scope_across_delete_pk_room@3x.png deleted file mode 100644 index 410f4372..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_delete_pk_room.imageset/yumi_scope_across_delete_pk_room@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_add_room.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_add_room.imageset/Contents.json deleted file mode 100644 index 630050eb..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_add_room.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_add_room@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_add_room@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_add_room.imageset/yumi_scope_across_pk_add_room@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_add_room.imageset/yumi_scope_across_pk_add_room@2x.png deleted file mode 100644 index 596d56d9..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_add_room.imageset/yumi_scope_across_pk_add_room@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_add_room.imageset/yumi_scope_across_pk_add_room@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_add_room.imageset/yumi_scope_across_pk_add_room@3x.png deleted file mode 100644 index c4c61f74..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_add_room.imageset/yumi_scope_across_pk_add_room@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_help.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_help.imageset/Contents.json deleted file mode 100644 index 7b4b58e4..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_help.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_help@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_help@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_help.imageset/yumi_scope_across_pk_help@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_help.imageset/yumi_scope_across_pk_help@2x.png deleted file mode 100644 index 2f1847ff..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_help.imageset/yumi_scope_across_pk_help@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_help.imageset/yumi_scope_across_pk_help@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_help.imageset/yumi_scope_across_pk_help@3x.png deleted file mode 100644 index d5828dc4..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_help.imageset/yumi_scope_across_pk_help@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_background.imageset/Contents.json deleted file mode 100644 index 423f65b3..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_invite_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_invite_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_background.imageset/yumi_scope_across_pk_invite_background@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_background.imageset/yumi_scope_across_pk_invite_background@2x.png deleted file mode 100644 index fe4d7f78..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_background.imageset/yumi_scope_across_pk_invite_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_background.imageset/yumi_scope_across_pk_invite_background@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_background.imageset/yumi_scope_across_pk_invite_background@3x.png deleted file mode 100644 index b423b02e..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_background.imageset/yumi_scope_across_pk_invite_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_accept_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_accept_background.imageset/Contents.json deleted file mode 100644 index 6d4347ab..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_accept_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_invite_result_accept_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_invite_result_accept_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_accept_background.imageset/yumi_scope_across_pk_invite_result_accept_background@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_accept_background.imageset/yumi_scope_across_pk_invite_result_accept_background@2x.png deleted file mode 100644 index 84081415..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_accept_background.imageset/yumi_scope_across_pk_invite_result_accept_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_accept_background.imageset/yumi_scope_across_pk_invite_result_accept_background@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_accept_background.imageset/yumi_scope_across_pk_invite_result_accept_background@3x.png deleted file mode 100644 index 44950d5b..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_accept_background.imageset/yumi_scope_across_pk_invite_result_accept_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_background.imageset/Contents.json deleted file mode 100644 index ab550dc7..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_invite_result_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_invite_result_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_background.imageset/yumi_scope_across_pk_invite_result_background@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_background.imageset/yumi_scope_across_pk_invite_result_background@2x.png deleted file mode 100644 index 33b08841..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_background.imageset/yumi_scope_across_pk_invite_result_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_background.imageset/yumi_scope_across_pk_invite_result_background@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_background.imageset/yumi_scope_across_pk_invite_result_background@3x.png deleted file mode 100644 index 742f3ecb..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_background.imageset/yumi_scope_across_pk_invite_result_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_close.imageset/Contents.json deleted file mode 100644 index 92f07b21..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_close.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_invite_result_close@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_invite_result_close@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_close.imageset/yumi_scope_across_pk_invite_result_close@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_close.imageset/yumi_scope_across_pk_invite_result_close@2x.png deleted file mode 100644 index 4f59fc70..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_close.imageset/yumi_scope_across_pk_invite_result_close@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_close.imageset/yumi_scope_across_pk_invite_result_close@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_close.imageset/yumi_scope_across_pk_invite_result_close@3x.png deleted file mode 100644 index a5a1cd0f..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_invite_result_close.imageset/yumi_scope_across_pk_invite_result_close@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_background.imageset/Contents.json deleted file mode 100644 index a535fa49..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_panel_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_panel_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_background.imageset/yumi_scope_across_pk_panel_background@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_background.imageset/yumi_scope_across_pk_panel_background@2x.png deleted file mode 100644 index deb8c08b..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_background.imageset/yumi_scope_across_pk_panel_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_background.imageset/yumi_scope_across_pk_panel_background@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_background.imageset/yumi_scope_across_pk_panel_background@3x.png deleted file mode 100644 index 59f41a55..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_background.imageset/yumi_scope_across_pk_panel_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_avatar.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_avatar.imageset/Contents.json deleted file mode 100644 index d917a38a..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_avatar.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_panel_charm_avatar@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_panel_charm_avatar@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_avatar.imageset/yumi_scope_across_pk_panel_charm_avatar@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_avatar.imageset/yumi_scope_across_pk_panel_charm_avatar@2x.png deleted file mode 100644 index e8fc0b01..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_avatar.imageset/yumi_scope_across_pk_panel_charm_avatar@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_avatar.imageset/yumi_scope_across_pk_panel_charm_avatar@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_avatar.imageset/yumi_scope_across_pk_panel_charm_avatar@3x.png deleted file mode 100644 index 52c26be4..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_avatar.imageset/yumi_scope_across_pk_panel_charm_avatar@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_background.imageset/Contents.json deleted file mode 100644 index d12c2240..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_panel_charm_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_panel_charm_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_background.imageset/yumi_scope_across_pk_panel_charm_background@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_background.imageset/yumi_scope_across_pk_panel_charm_background@2x.png deleted file mode 100644 index 63d4ed6b..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_background.imageset/yumi_scope_across_pk_panel_charm_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_background.imageset/yumi_scope_across_pk_panel_charm_background@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_background.imageset/yumi_scope_across_pk_panel_charm_background@3x.png deleted file mode 100644 index 3a13d437..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_background.imageset/yumi_scope_across_pk_panel_charm_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_head.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_head.imageset/Contents.json deleted file mode 100644 index 2c026d14..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_head.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_panel_charm_head@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_panel_charm_head@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_head.imageset/yumi_scope_across_pk_panel_charm_head@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_head.imageset/yumi_scope_across_pk_panel_charm_head@2x.png deleted file mode 100644 index 21153548..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_head.imageset/yumi_scope_across_pk_panel_charm_head@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_head.imageset/yumi_scope_across_pk_panel_charm_head@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_head.imageset/yumi_scope_across_pk_panel_charm_head@3x.png deleted file mode 100644 index b423f4ec..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_charm_head.imageset/yumi_scope_across_pk_panel_charm_head@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_avatar.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_avatar.imageset/Contents.json deleted file mode 100644 index 996f7784..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_avatar.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_panel_contribute_avatar@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_panel_contribute_avatar@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_avatar.imageset/yumi_scope_across_pk_panel_contribute_avatar@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_avatar.imageset/yumi_scope_across_pk_panel_contribute_avatar@2x.png deleted file mode 100644 index a8d92b1e..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_avatar.imageset/yumi_scope_across_pk_panel_contribute_avatar@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_avatar.imageset/yumi_scope_across_pk_panel_contribute_avatar@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_avatar.imageset/yumi_scope_across_pk_panel_contribute_avatar@3x.png deleted file mode 100644 index 92cd2e7d..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_avatar.imageset/yumi_scope_across_pk_panel_contribute_avatar@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_background.imageset/Contents.json deleted file mode 100644 index d4c548e9..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_panel_contribute_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_panel_contribute_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_background.imageset/yumi_scope_across_pk_panel_contribute_background@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_background.imageset/yumi_scope_across_pk_panel_contribute_background@2x.png deleted file mode 100644 index 660ab7c4..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_background.imageset/yumi_scope_across_pk_panel_contribute_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_background.imageset/yumi_scope_across_pk_panel_contribute_background@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_background.imageset/yumi_scope_across_pk_panel_contribute_background@3x.png deleted file mode 100644 index fbc206fe..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_background.imageset/yumi_scope_across_pk_panel_contribute_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_head.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_head.imageset/Contents.json deleted file mode 100644 index 608c6a01..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_head.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_panel_contribute_head@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_panel_contribute_head@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_head.imageset/yumi_scope_across_pk_panel_contribute_head@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_head.imageset/yumi_scope_across_pk_panel_contribute_head@2x.png deleted file mode 100644 index 653ac777..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_head.imageset/yumi_scope_across_pk_panel_contribute_head@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_head.imageset/yumi_scope_across_pk_panel_contribute_head@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_head.imageset/yumi_scope_across_pk_panel_contribute_head@3x.png deleted file mode 100644 index 2352713d..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_contribute_head.imageset/yumi_scope_across_pk_panel_contribute_head@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_fold.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_fold.imageset/Contents.json deleted file mode 100644 index 7bf95ea6..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_fold.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_panel_fold@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_panel_fold@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_fold.imageset/yumi_scope_across_pk_panel_fold@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_fold.imageset/yumi_scope_across_pk_panel_fold@2x.png deleted file mode 100644 index 4b07819a..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_fold.imageset/yumi_scope_across_pk_panel_fold@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_fold.imageset/yumi_scope_across_pk_panel_fold@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_fold.imageset/yumi_scope_across_pk_panel_fold@3x.png deleted file mode 100644 index 2a8e5414..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_fold.imageset/yumi_scope_across_pk_panel_fold@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_help.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_help.imageset/Contents.json deleted file mode 100644 index 3528d27a..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_help.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_panel_help@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_panel_help@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_help.imageset/yumi_scope_across_pk_panel_help@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_help.imageset/yumi_scope_across_pk_panel_help@2x.png deleted file mode 100644 index a78b7c60..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_help.imageset/yumi_scope_across_pk_panel_help@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_help.imageset/yumi_scope_across_pk_panel_help@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_help.imageset/yumi_scope_across_pk_panel_help@3x.png deleted file mode 100644 index d1111f7b..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_help.imageset/yumi_scope_across_pk_panel_help@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_rule_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_rule_background.imageset/Contents.json deleted file mode 100644 index aff8c2ef..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_rule_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_panel_rule_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_panel_rule_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_rule_background.imageset/yumi_scope_across_pk_panel_rule_background@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_rule_background.imageset/yumi_scope_across_pk_panel_rule_background@2x.png deleted file mode 100644 index 452c94a5..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_rule_background.imageset/yumi_scope_across_pk_panel_rule_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_rule_background.imageset/yumi_scope_across_pk_panel_rule_background@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_rule_background.imageset/yumi_scope_across_pk_panel_rule_background@3x.png deleted file mode 100644 index aa660230..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_rule_background.imageset/yumi_scope_across_pk_panel_rule_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_small_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_small_background.imageset/Contents.json deleted file mode 100644 index 33fe7b09..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_small_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_panel_small_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_panel_small_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_small_background.imageset/yumi_scope_across_pk_panel_small_background@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_small_background.imageset/yumi_scope_across_pk_panel_small_background@2x.png deleted file mode 100644 index b35bb8ed..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_small_background.imageset/yumi_scope_across_pk_panel_small_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_small_background.imageset/yumi_scope_across_pk_panel_small_background@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_small_background.imageset/yumi_scope_across_pk_panel_small_background@3x.png deleted file mode 100644 index b6884cfb..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_panel_small_background.imageset/yumi_scope_across_pk_panel_small_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_prize_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_prize_background.imageset/Contents.json deleted file mode 100644 index b035e2d0..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_prize_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_prize_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_prize_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_prize_background.imageset/yumi_scope_across_pk_prize_background@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_prize_background.imageset/yumi_scope_across_pk_prize_background@2x.png deleted file mode 100644 index 21672567..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_prize_background.imageset/yumi_scope_across_pk_prize_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_prize_background.imageset/yumi_scope_across_pk_prize_background@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_prize_background.imageset/yumi_scope_across_pk_prize_background@3x.png deleted file mode 100644 index 129a5772..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_prize_background.imageset/yumi_scope_across_pk_prize_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_prize_ko.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_prize_ko.imageset/Contents.json deleted file mode 100644 index efd01ed9..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_prize_ko.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_prize_ko@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_prize_ko@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_prize_ko.imageset/yumi_scope_across_pk_prize_ko@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_prize_ko.imageset/yumi_scope_across_pk_prize_ko@2x.png deleted file mode 100644 index adce8f05..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_prize_ko.imageset/yumi_scope_across_pk_prize_ko@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_prize_ko.imageset/yumi_scope_across_pk_prize_ko@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_prize_ko.imageset/yumi_scope_across_pk_prize_ko@3x.png deleted file mode 100644 index e52ff8ea..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_prize_ko.imageset/yumi_scope_across_pk_prize_ko@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_background.imageset/Contents.json deleted file mode 100644 index 95846949..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_result_fail_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_result_fail_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_background.imageset/yumi_scope_across_pk_result_fail_background@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_background.imageset/yumi_scope_across_pk_result_fail_background@2x.png deleted file mode 100644 index 5b6d405a..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_background.imageset/yumi_scope_across_pk_result_fail_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_background.imageset/yumi_scope_across_pk_result_fail_background@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_background.imageset/yumi_scope_across_pk_result_fail_background@3x.png deleted file mode 100644 index 9a093616..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_background.imageset/yumi_scope_across_pk_result_fail_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_close.imageset/Contents.json deleted file mode 100644 index 1233f62f..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_close.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_result_fail_close@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_result_fail_close@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_close.imageset/yumi_scope_across_pk_result_fail_close@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_close.imageset/yumi_scope_across_pk_result_fail_close@2x.png deleted file mode 100644 index dff3dd33..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_close.imageset/yumi_scope_across_pk_result_fail_close@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_close.imageset/yumi_scope_across_pk_result_fail_close@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_close.imageset/yumi_scope_across_pk_result_fail_close@3x.png deleted file mode 100644 index 851fb286..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_close.imageset/yumi_scope_across_pk_result_fail_close@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_person_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_person_background.imageset/Contents.json deleted file mode 100644 index 84b2a3c2..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_person_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_result_fail_person_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_result_fail_person_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_person_background.imageset/yumi_scope_across_pk_result_fail_person_background@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_person_background.imageset/yumi_scope_across_pk_result_fail_person_background@2x.png deleted file mode 100644 index 678b5ece..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_person_background.imageset/yumi_scope_across_pk_result_fail_person_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_person_background.imageset/yumi_scope_across_pk_result_fail_person_background@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_person_background.imageset/yumi_scope_across_pk_result_fail_person_background@3x.png deleted file mode 100644 index e4036301..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_fail_person_background.imageset/yumi_scope_across_pk_result_fail_person_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forcednd_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forcednd_background.imageset/Contents.json deleted file mode 100644 index eb1e02a1..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forcednd_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_result_forcednd_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_result_forcednd_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forcednd_background.imageset/yumi_scope_across_pk_result_forcednd_background@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forcednd_background.imageset/yumi_scope_across_pk_result_forcednd_background@2x.png deleted file mode 100644 index e2db4c0f..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forcednd_background.imageset/yumi_scope_across_pk_result_forcednd_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forcednd_background.imageset/yumi_scope_across_pk_result_forcednd_background@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forcednd_background.imageset/yumi_scope_across_pk_result_forcednd_background@3x.png deleted file mode 100644 index a83e3f11..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forcednd_background.imageset/yumi_scope_across_pk_result_forcednd_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_blue_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_blue_background.imageset/Contents.json deleted file mode 100644 index 1d0feda0..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_blue_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_result_forceend_blue_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_result_forceend_blue_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_blue_background.imageset/yumi_scope_across_pk_result_forceend_blue_background@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_blue_background.imageset/yumi_scope_across_pk_result_forceend_blue_background@2x.png deleted file mode 100644 index 68656524..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_blue_background.imageset/yumi_scope_across_pk_result_forceend_blue_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_blue_background.imageset/yumi_scope_across_pk_result_forceend_blue_background@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_blue_background.imageset/yumi_scope_across_pk_result_forceend_blue_background@3x.png deleted file mode 100644 index 0cbea123..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_blue_background.imageset/yumi_scope_across_pk_result_forceend_blue_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_pk_pic.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_pk_pic.imageset/Contents.json deleted file mode 100644 index e7b94e5e..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_pk_pic.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_result_forceend_pk_pic@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_result_forceend_pk_pic@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_pk_pic.imageset/yumi_scope_across_pk_result_forceend_pk_pic@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_pk_pic.imageset/yumi_scope_across_pk_result_forceend_pk_pic@2x.png deleted file mode 100644 index 3814754f..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_pk_pic.imageset/yumi_scope_across_pk_result_forceend_pk_pic@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_pk_pic.imageset/yumi_scope_across_pk_result_forceend_pk_pic@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_pk_pic.imageset/yumi_scope_across_pk_result_forceend_pk_pic@3x.png deleted file mode 100644 index 946c0bb4..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_pk_pic.imageset/yumi_scope_across_pk_result_forceend_pk_pic@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_red_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_red_background.imageset/Contents.json deleted file mode 100644 index 3b5ca372..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_red_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_result_forceend_red_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_result_forceend_red_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_red_background.imageset/yumi_scope_across_pk_result_forceend_red_background@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_red_background.imageset/yumi_scope_across_pk_result_forceend_red_background@2x.png deleted file mode 100644 index 02297f34..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_red_background.imageset/yumi_scope_across_pk_result_forceend_red_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_red_background.imageset/yumi_scope_across_pk_result_forceend_red_background@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_red_background.imageset/yumi_scope_across_pk_result_forceend_red_background@3x.png deleted file mode 100644 index e337d407..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_forceend_red_background.imageset/yumi_scope_across_pk_result_forceend_red_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_pk_pic.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_pk_pic.imageset/Contents.json deleted file mode 100644 index ea53c949..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_pk_pic.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_result_pk_pic@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_result_pk_pic@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_pk_pic.imageset/yumi_scope_across_pk_result_pk_pic@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_pk_pic.imageset/yumi_scope_across_pk_result_pk_pic@2x.png deleted file mode 100644 index 513de01d..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_pk_pic.imageset/yumi_scope_across_pk_result_pk_pic@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_pk_pic.imageset/yumi_scope_across_pk_result_pk_pic@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_pk_pic.imageset/yumi_scope_across_pk_result_pk_pic@3x.png deleted file mode 100644 index 346bb125..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_pk_pic.imageset/yumi_scope_across_pk_result_pk_pic@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_red_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_red_background.imageset/Contents.json deleted file mode 100644 index 70c3b490..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_red_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_result_red_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_result_red_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_red_background.imageset/yumi_scope_across_pk_result_red_background@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_red_background.imageset/yumi_scope_across_pk_result_red_background@2x.png deleted file mode 100644 index bb0e50b1..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_red_background.imageset/yumi_scope_across_pk_result_red_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_red_background.imageset/yumi_scope_across_pk_result_red_background@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_red_background.imageset/yumi_scope_across_pk_result_red_background@3x.png deleted file mode 100644 index b2f7b6d5..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_red_background.imageset/yumi_scope_across_pk_result_red_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_background.imageset/Contents.json deleted file mode 100644 index 7f10813d..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_result_tie_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_result_tie_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_background.imageset/yumi_scope_across_pk_result_tie_background@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_background.imageset/yumi_scope_across_pk_result_tie_background@2x.png deleted file mode 100644 index f8795a89..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_background.imageset/yumi_scope_across_pk_result_tie_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_background.imageset/yumi_scope_across_pk_result_tie_background@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_background.imageset/yumi_scope_across_pk_result_tie_background@3x.png deleted file mode 100644 index fb4ed3b0..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_background.imageset/yumi_scope_across_pk_result_tie_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_close.imageset/Contents.json deleted file mode 100644 index fe443384..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_close.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_result_tie_close@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_result_tie_close@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_close.imageset/yumi_scope_across_pk_result_tie_close@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_close.imageset/yumi_scope_across_pk_result_tie_close@2x.png deleted file mode 100644 index 0a0ee8e4..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_close.imageset/yumi_scope_across_pk_result_tie_close@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_close.imageset/yumi_scope_across_pk_result_tie_close@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_close.imageset/yumi_scope_across_pk_result_tie_close@3x.png deleted file mode 100644 index 4c6d38dd..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_close.imageset/yumi_scope_across_pk_result_tie_close@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_person_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_person_background.imageset/Contents.json deleted file mode 100644 index eb52ea2f..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_person_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_result_tie_person_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_result_tie_person_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_person_background.imageset/yumi_scope_across_pk_result_tie_person_background@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_person_background.imageset/yumi_scope_across_pk_result_tie_person_background@2x.png deleted file mode 100644 index 24350fe1..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_person_background.imageset/yumi_scope_across_pk_result_tie_person_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_person_background.imageset/yumi_scope_across_pk_result_tie_person_background@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_person_background.imageset/yumi_scope_across_pk_result_tie_person_background@3x.png deleted file mode 100644 index be684c5c..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_tie_person_background.imageset/yumi_scope_across_pk_result_tie_person_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_background.imageset/Contents.json deleted file mode 100644 index 2c7153b4..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_result_win_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_result_win_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_background.imageset/yumi_scope_across_pk_result_win_background@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_background.imageset/yumi_scope_across_pk_result_win_background@2x.png deleted file mode 100644 index 3f34903f..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_background.imageset/yumi_scope_across_pk_result_win_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_background.imageset/yumi_scope_across_pk_result_win_background@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_background.imageset/yumi_scope_across_pk_result_win_background@3x.png deleted file mode 100644 index 9b52ae39..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_background.imageset/yumi_scope_across_pk_result_win_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_blue_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_blue_background.imageset/Contents.json deleted file mode 100644 index 2c248e8a..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_blue_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_result_win_blue_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_result_win_blue_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_blue_background.imageset/yumi_scope_across_pk_result_win_blue_background@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_blue_background.imageset/yumi_scope_across_pk_result_win_blue_background@2x.png deleted file mode 100644 index 79c309a7..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_blue_background.imageset/yumi_scope_across_pk_result_win_blue_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_blue_background.imageset/yumi_scope_across_pk_result_win_blue_background@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_blue_background.imageset/yumi_scope_across_pk_result_win_blue_background@3x.png deleted file mode 100644 index 14622458..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_blue_background.imageset/yumi_scope_across_pk_result_win_blue_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_close.imageset/Contents.json deleted file mode 100644 index 5e7f9e9c..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_close.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_result_win_close@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_result_win_close@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_close.imageset/yumi_scope_across_pk_result_win_close@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_close.imageset/yumi_scope_across_pk_result_win_close@2x.png deleted file mode 100644 index 32799cef..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_close.imageset/yumi_scope_across_pk_result_win_close@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_close.imageset/yumi_scope_across_pk_result_win_close@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_close.imageset/yumi_scope_across_pk_result_win_close@3x.png deleted file mode 100644 index eb4318b9..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_close.imageset/yumi_scope_across_pk_result_win_close@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_person_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_person_background.imageset/Contents.json deleted file mode 100644 index a21f9e13..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_person_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_result_win_person_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_result_win_person_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_person_background.imageset/yumi_scope_across_pk_result_win_person_background@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_person_background.imageset/yumi_scope_across_pk_result_win_person_background@2x.png deleted file mode 100644 index 4144cb57..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_person_background.imageset/yumi_scope_across_pk_result_win_person_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_person_background.imageset/yumi_scope_across_pk_result_win_person_background@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_person_background.imageset/yumi_scope_across_pk_result_win_person_background@3x.png deleted file mode 100644 index 5745c835..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_person_background.imageset/yumi_scope_across_pk_result_win_person_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_pic.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_pic.imageset/Contents.json deleted file mode 100644 index 6b2adf83..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_pic.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_result_win_pic@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_result_win_pic@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_pic.imageset/yumi_scope_across_pk_result_win_pic@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_pic.imageset/yumi_scope_across_pk_result_win_pic@2x.png deleted file mode 100644 index ae6deb60..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_pic.imageset/yumi_scope_across_pk_result_win_pic@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_pic.imageset/yumi_scope_across_pk_result_win_pic@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_pic.imageset/yumi_scope_across_pk_result_win_pic@3x.png deleted file mode 100644 index f4dc17ff..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_result_win_pic.imageset/yumi_scope_across_pk_result_win_pic@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_rule_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_rule_background.imageset/Contents.json deleted file mode 100644 index 6789304b..00000000 --- a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_rule_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_across_pk_rule_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_across_pk_rule_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_rule_background.imageset/yumi_scope_across_pk_rule_background@2x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_rule_background.imageset/yumi_scope_across_pk_rule_background@2x.png deleted file mode 100644 index 81a2e923..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_rule_background.imageset/yumi_scope_across_pk_rule_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_rule_background.imageset/yumi_scope_across_pk_rule_background@3x.png b/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_rule_background.imageset/yumi_scope_across_pk_rule_background@3x.png deleted file mode 100644 index f9ad33f5..00000000 Binary files a/YuMi/Assets.xcassets/yna/AcrossRoomPK/yumi_scope_across_pk_rule_background.imageset/yumi_scope_across_pk_rule_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Activity/Contents.json b/YuMi/Assets.xcassets/yna/Activity/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/yna/Activity/Contents.json +++ b/YuMi/Assets.xcassets/yna/Activity/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Activity/room_activity_banner_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Activity/room_activity_banner_normal.imageset/Contents.json new file mode 100644 index 00000000..cdf5372b --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Activity/room_activity_banner_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_activity_banner_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_activity_banner_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Activity/room_activity_banner_normal.imageset/room_activity_banner_normal@2x.png b/YuMi/Assets.xcassets/yna/Activity/room_activity_banner_normal.imageset/room_activity_banner_normal@2x.png new file mode 100644 index 00000000..f1b74069 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Activity/room_activity_banner_normal.imageset/room_activity_banner_normal@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Activity/room_activity_banner_normal.imageset/room_activity_banner_normal@3x.png b/YuMi/Assets.xcassets/yna/Activity/room_activity_banner_normal.imageset/room_activity_banner_normal@3x.png new file mode 100644 index 00000000..d9bb5a22 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Activity/room_activity_banner_normal.imageset/room_activity_banner_normal@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Activity/room_activity_banner_select.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Activity/room_activity_banner_select.imageset/Contents.json new file mode 100644 index 00000000..0cb4e7b2 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Activity/room_activity_banner_select.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_activity_banner_select@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_activity_banner_select@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Activity/room_activity_banner_select.imageset/room_activity_banner_select@2x.png b/YuMi/Assets.xcassets/yna/Activity/room_activity_banner_select.imageset/room_activity_banner_select@2x.png new file mode 100644 index 00000000..422b0bea Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Activity/room_activity_banner_select.imageset/room_activity_banner_select@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Activity/room_activity_banner_select.imageset/room_activity_banner_select@3x.png b/YuMi/Assets.xcassets/yna/Activity/room_activity_banner_select.imageset/room_activity_banner_select@3x.png new file mode 100644 index 00000000..38dcd309 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Activity/room_activity_banner_select.imageset/room_activity_banner_select@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Activity/yumi_scope_activity_banner_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Activity/yumi_scope_activity_banner_normal.imageset/Contents.json deleted file mode 100644 index 7bb332c8..00000000 --- a/YuMi/Assets.xcassets/yna/Activity/yumi_scope_activity_banner_normal.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_activity_banner_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_activity_banner_normal@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Activity/yumi_scope_activity_banner_normal.imageset/yumi_scope_activity_banner_normal@2x.png b/YuMi/Assets.xcassets/yna/Activity/yumi_scope_activity_banner_normal.imageset/yumi_scope_activity_banner_normal@2x.png deleted file mode 100644 index 8e34d8f5..00000000 Binary files a/YuMi/Assets.xcassets/yna/Activity/yumi_scope_activity_banner_normal.imageset/yumi_scope_activity_banner_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Activity/yumi_scope_activity_banner_normal.imageset/yumi_scope_activity_banner_normal@3x.png b/YuMi/Assets.xcassets/yna/Activity/yumi_scope_activity_banner_normal.imageset/yumi_scope_activity_banner_normal@3x.png deleted file mode 100644 index a0e529b3..00000000 Binary files a/YuMi/Assets.xcassets/yna/Activity/yumi_scope_activity_banner_normal.imageset/yumi_scope_activity_banner_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Activity/yumi_scope_activity_banner_select.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Activity/yumi_scope_activity_banner_select.imageset/Contents.json deleted file mode 100644 index a45f89f8..00000000 --- a/YuMi/Assets.xcassets/yna/Activity/yumi_scope_activity_banner_select.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_activity_banner_select@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_activity_banner_select@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Activity/yumi_scope_activity_banner_select.imageset/yumi_scope_activity_banner_select@2x.png b/YuMi/Assets.xcassets/yna/Activity/yumi_scope_activity_banner_select.imageset/yumi_scope_activity_banner_select@2x.png deleted file mode 100644 index a01e066a..00000000 Binary files a/YuMi/Assets.xcassets/yna/Activity/yumi_scope_activity_banner_select.imageset/yumi_scope_activity_banner_select@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Activity/yumi_scope_activity_banner_select.imageset/yumi_scope_activity_banner_select@3x.png b/YuMi/Assets.xcassets/yna/Activity/yumi_scope_activity_banner_select.imageset/yumi_scope_activity_banner_select@3x.png deleted file mode 100644 index 24a3e0d9..00000000 Binary files a/YuMi/Assets.xcassets/yna/Activity/yumi_scope_activity_banner_select.imageset/yumi_scope_activity_banner_select@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/Contents.json +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_invite_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_invite_bg.imageset/Contents.json new file mode 100644 index 00000000..c8ea82e1 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_invite_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPK_invite_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPK_invite_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_invite_bg.imageset/anchorPK_invite_bg@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_invite_bg.imageset/anchorPK_invite_bg@2x.png new file mode 100644 index 00000000..b369179c Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_invite_bg.imageset/anchorPK_invite_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_invite_bg.imageset/anchorPK_invite_bg@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_invite_bg.imageset/anchorPK_invite_bg@3x.png new file mode 100644 index 00000000..361ede0e Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_invite_bg.imageset/anchorPK_invite_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_MVP.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_MVP.imageset/Contents.json new file mode 100644 index 00000000..99aa3853 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_MVP.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPK_panel_MVP@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPK_panel_MVP@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_MVP.imageset/anchorPK_panel_MVP@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_MVP.imageset/anchorPK_panel_MVP@2x.png new file mode 100644 index 00000000..65b2e688 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_MVP.imageset/anchorPK_panel_MVP@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_MVP.imageset/anchorPK_panel_MVP@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_MVP.imageset/anchorPK_panel_MVP@3x.png new file mode 100644 index 00000000..d68d081c Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_MVP.imageset/anchorPK_panel_MVP@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_bg.imageset/Contents.json new file mode 100644 index 00000000..8758156b --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPK_panel_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPK_panel_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_bg.imageset/anchorPK_panel_bg@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_bg.imageset/anchorPK_panel_bg@2x.png new file mode 100644 index 00000000..3465c85d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_bg.imageset/anchorPK_panel_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_bg.imageset/anchorPK_panel_bg@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_bg.imageset/anchorPK_panel_bg@3x.png new file mode 100644 index 00000000..34382ffe Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_bg.imageset/anchorPK_panel_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_micState.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_micState.imageset/Contents.json new file mode 100644 index 00000000..150a8e36 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_micState.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPK_panel_blue_micState@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPK_panel_blue_micState@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_micState.imageset/anchorPK_panel_blue_micState@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_micState.imageset/anchorPK_panel_blue_micState@2x.png new file mode 100644 index 00000000..fc6f5ba0 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_micState.imageset/anchorPK_panel_blue_micState@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_micState.imageset/anchorPK_panel_blue_micState@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_micState.imageset/anchorPK_panel_blue_micState@3x.png new file mode 100644 index 00000000..b9adc9b1 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_micState.imageset/anchorPK_panel_blue_micState@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_progress.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_progress.imageset/Contents.json new file mode 100644 index 00000000..a645ac37 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_progress.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPK_panel_blue_progress@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPK_panel_blue_progress@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_progress.imageset/anchorPK_panel_blue_progress@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_progress.imageset/anchorPK_panel_blue_progress@2x.png new file mode 100644 index 00000000..5e8852bc Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_progress.imageset/anchorPK_panel_blue_progress@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_progress.imageset/anchorPK_panel_blue_progress@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_progress.imageset/anchorPK_panel_blue_progress@3x.png new file mode 100644 index 00000000..7173e8ff Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_progress.imageset/anchorPK_panel_blue_progress@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_star.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_star.imageset/Contents.json new file mode 100644 index 00000000..b0322d2a --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_star.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPK_panel_blue_star@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPK_panel_blue_star@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_star.imageset/anchorPK_panel_blue_star@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_star.imageset/anchorPK_panel_blue_star@2x.png new file mode 100644 index 00000000..7592e36b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_star.imageset/anchorPK_panel_blue_star@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_star.imageset/anchorPK_panel_blue_star@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_star.imageset/anchorPK_panel_blue_star@3x.png new file mode 100644 index 00000000..39acda6c Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_blue_star.imageset/anchorPK_panel_blue_star@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_micState.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_micState.imageset/Contents.json new file mode 100644 index 00000000..3267628c --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_micState.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPK_panel_red_micState@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPK_panel_red_micState@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_micState.imageset/anchorPK_panel_red_micState@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_micState.imageset/anchorPK_panel_red_micState@2x.png new file mode 100644 index 00000000..3fc7ff04 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_micState.imageset/anchorPK_panel_red_micState@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_micState.imageset/anchorPK_panel_red_micState@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_micState.imageset/anchorPK_panel_red_micState@3x.png new file mode 100644 index 00000000..287d53ec Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_micState.imageset/anchorPK_panel_red_micState@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_progress.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_progress.imageset/Contents.json new file mode 100644 index 00000000..dc887aec --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_progress.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPK_panel_red_progress@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPK_panel_red_progress@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_progress.imageset/anchorPK_panel_red_progress@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_progress.imageset/anchorPK_panel_red_progress@2x.png new file mode 100644 index 00000000..c60e0879 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_progress.imageset/anchorPK_panel_red_progress@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_progress.imageset/anchorPK_panel_red_progress@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_progress.imageset/anchorPK_panel_red_progress@3x.png new file mode 100644 index 00000000..4c3b7728 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_progress.imageset/anchorPK_panel_red_progress@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_star.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_star.imageset/Contents.json new file mode 100644 index 00000000..9712ec77 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_star.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPK_panel_red_star@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPK_panel_red_star@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_star.imageset/anchorPK_panel_red_star@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_star.imageset/anchorPK_panel_red_star@2x.png new file mode 100644 index 00000000..95de6b96 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_star.imageset/anchorPK_panel_red_star@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_star.imageset/anchorPK_panel_red_star@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_star.imageset/anchorPK_panel_red_star@3x.png new file mode 100644 index 00000000..52f1b910 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_panel_red_star.imageset/anchorPK_panel_red_star@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_KO.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_KO.imageset/Contents.json new file mode 100644 index 00000000..56da8719 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_KO.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPK_prize_KO@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPK_prize_KO@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_KO.imageset/anchorPK_prize_KO@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_KO.imageset/anchorPK_prize_KO@2x.png new file mode 100644 index 00000000..df9a3ccc Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_KO.imageset/anchorPK_prize_KO@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_KO.imageset/anchorPK_prize_KO@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_KO.imageset/anchorPK_prize_KO@3x.png new file mode 100644 index 00000000..a8a618be Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_KO.imageset/anchorPK_prize_KO@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_bg.imageset/Contents.json new file mode 100644 index 00000000..717a36f0 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPK_prize_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPK_prize_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_bg.imageset/anchorPK_prize_bg@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_bg.imageset/anchorPK_prize_bg@2x.png new file mode 100644 index 00000000..5c9a62a0 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_bg.imageset/anchorPK_prize_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_bg.imageset/anchorPK_prize_bg@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_bg.imageset/anchorPK_prize_bg@3x.png new file mode 100644 index 00000000..8234c4c7 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_bg.imageset/anchorPK_prize_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_onLook_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_onLook_bg.imageset/Contents.json new file mode 100644 index 00000000..a4981591 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_onLook_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPK_prize_onLook_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPK_prize_onLook_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_onLook_bg.imageset/anchorPK_prize_onLook_bg@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_onLook_bg.imageset/anchorPK_prize_onLook_bg@2x.png new file mode 100644 index 00000000..3852fecd Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_onLook_bg.imageset/anchorPK_prize_onLook_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_onLook_bg.imageset/anchorPK_prize_onLook_bg@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_onLook_bg.imageset/anchorPK_prize_onLook_bg@3x.png new file mode 100644 index 00000000..0861a4ea Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_prize_onLook_bg.imageset/anchorPK_prize_onLook_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_blueValue_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_blueValue_bg.imageset/Contents.json new file mode 100644 index 00000000..bc2b6f86 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_blueValue_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPK_result_blueValue_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPK_result_blueValue_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_blueValue_bg.imageset/anchorPK_result_blueValue_bg@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_blueValue_bg.imageset/anchorPK_result_blueValue_bg@2x.png new file mode 100644 index 00000000..c3399d53 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_blueValue_bg.imageset/anchorPK_result_blueValue_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_blueValue_bg.imageset/anchorPK_result_blueValue_bg@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_blueValue_bg.imageset/anchorPK_result_blueValue_bg@3x.png new file mode 100644 index 00000000..1bc3ac3b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_blueValue_bg.imageset/anchorPK_result_blueValue_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_contribute_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_contribute_bg.imageset/Contents.json new file mode 100644 index 00000000..cdc3d34d --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_contribute_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPK_result_contribute_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPK_result_contribute_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_contribute_bg.imageset/anchorPK_result_contribute_bg@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_contribute_bg.imageset/anchorPK_result_contribute_bg@2x.png new file mode 100644 index 00000000..98b49c7b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_contribute_bg.imageset/anchorPK_result_contribute_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_contribute_bg.imageset/anchorPK_result_contribute_bg@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_contribute_bg.imageset/anchorPK_result_contribute_bg@3x.png new file mode 100644 index 00000000..8fa3ce57 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_contribute_bg.imageset/anchorPK_result_contribute_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_bg.imageset/Contents.json new file mode 100644 index 00000000..1726a64e --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPK_result_fail_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPK_result_fail_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_bg.imageset/anchorPK_result_fail_bg@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_bg.imageset/anchorPK_result_fail_bg@2x.png new file mode 100644 index 00000000..2d6fb2d9 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_bg.imageset/anchorPK_result_fail_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_bg.imageset/anchorPK_result_fail_bg@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_bg.imageset/anchorPK_result_fail_bg@3x.png new file mode 100644 index 00000000..b58d6990 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_bg.imageset/anchorPK_result_fail_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_headWear.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_headWear.imageset/Contents.json new file mode 100644 index 00000000..3da54f5d --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_headWear.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPK_result_fail_headWear@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPK_result_fail_headWear@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_headWear.imageset/anchorPK_result_fail_headWear@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_headWear.imageset/anchorPK_result_fail_headWear@2x.png new file mode 100644 index 00000000..d32a6489 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_headWear.imageset/anchorPK_result_fail_headWear@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_headWear.imageset/anchorPK_result_fail_headWear@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_headWear.imageset/anchorPK_result_fail_headWear@3x.png new file mode 100644 index 00000000..628fb932 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_headWear.imageset/anchorPK_result_fail_headWear@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_title_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_title_bg.imageset/Contents.json new file mode 100644 index 00000000..fedf871d --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_title_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPK_result_fail_title_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPK_result_fail_title_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_title_bg.imageset/anchorPK_result_fail_title_bg@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_title_bg.imageset/anchorPK_result_fail_title_bg@2x.png new file mode 100644 index 00000000..1747a09b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_title_bg.imageset/anchorPK_result_fail_title_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_title_bg.imageset/anchorPK_result_fail_title_bg@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_title_bg.imageset/anchorPK_result_fail_title_bg@3x.png new file mode 100644 index 00000000..ff41fba6 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_fail_title_bg.imageset/anchorPK_result_fail_title_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_mvp_icon.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_mvp_icon.imageset/Contents.json new file mode 100644 index 00000000..97ef0e83 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_mvp_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPK_result_mvp_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPK_result_mvp_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_mvp_icon.imageset/anchorPK_result_mvp_icon@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_mvp_icon.imageset/anchorPK_result_mvp_icon@2x.png new file mode 100644 index 00000000..56dc830a Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_mvp_icon.imageset/anchorPK_result_mvp_icon@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_mvp_icon.imageset/anchorPK_result_mvp_icon@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_mvp_icon.imageset/anchorPK_result_mvp_icon@3x.png new file mode 100644 index 00000000..471a2e02 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_mvp_icon.imageset/anchorPK_result_mvp_icon@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_redValue_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_redValue_bg.imageset/Contents.json new file mode 100644 index 00000000..edfc0a18 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_redValue_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPK_result_redValue_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPK_result_redValue_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_redValue_bg.imageset/anchorPK_result_redValue_bg@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_redValue_bg.imageset/anchorPK_result_redValue_bg@2x.png new file mode 100644 index 00000000..b212f65b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_redValue_bg.imageset/anchorPK_result_redValue_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_redValue_bg.imageset/anchorPK_result_redValue_bg@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_redValue_bg.imageset/anchorPK_result_redValue_bg@3x.png new file mode 100644 index 00000000..3fb7fd30 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_redValue_bg.imageset/anchorPK_result_redValue_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_bg.imageset/Contents.json new file mode 100644 index 00000000..6b187ab9 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPK_result_tie_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPK_result_tie_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_bg.imageset/anchorPK_result_tie_bg@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_bg.imageset/anchorPK_result_tie_bg@2x.png new file mode 100644 index 00000000..72904a48 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_bg.imageset/anchorPK_result_tie_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_bg.imageset/anchorPK_result_tie_bg@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_bg.imageset/anchorPK_result_tie_bg@3x.png new file mode 100644 index 00000000..16464392 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_bg.imageset/anchorPK_result_tie_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_headWear.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_headWear.imageset/Contents.json new file mode 100644 index 00000000..f977dfd2 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_headWear.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPK_result_tie_headWear@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPK_result_tie_headWear@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_headWear.imageset/anchorPK_result_tie_headWear@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_headWear.imageset/anchorPK_result_tie_headWear@2x.png new file mode 100644 index 00000000..08f39df1 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_headWear.imageset/anchorPK_result_tie_headWear@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_headWear.imageset/anchorPK_result_tie_headWear@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_headWear.imageset/anchorPK_result_tie_headWear@3x.png new file mode 100644 index 00000000..d341ae70 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_headWear.imageset/anchorPK_result_tie_headWear@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_title_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_title_bg.imageset/Contents.json new file mode 100644 index 00000000..d86a5ea8 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_title_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPK_result_tie_title_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPK_result_tie_title_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_title_bg.imageset/anchorPK_result_tie_title_bg@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_title_bg.imageset/anchorPK_result_tie_title_bg@2x.png new file mode 100644 index 00000000..9b25d545 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_title_bg.imageset/anchorPK_result_tie_title_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_title_bg.imageset/anchorPK_result_tie_title_bg@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_title_bg.imageset/anchorPK_result_tie_title_bg@3x.png new file mode 100644 index 00000000..10ebf0d0 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_tie_title_bg.imageset/anchorPK_result_tie_title_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_bg.imageset/Contents.json new file mode 100644 index 00000000..0eaa2b66 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPK_result_win_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPK_result_win_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_bg.imageset/anchorPK_result_win_bg@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_bg.imageset/anchorPK_result_win_bg@2x.png new file mode 100644 index 00000000..abbb0c5e Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_bg.imageset/anchorPK_result_win_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_bg.imageset/anchorPK_result_win_bg@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_bg.imageset/anchorPK_result_win_bg@3x.png new file mode 100644 index 00000000..02947da4 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_bg.imageset/anchorPK_result_win_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_headWear.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_headWear.imageset/Contents.json new file mode 100644 index 00000000..42f9c2c7 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_headWear.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPK_result_win_headWear@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPK_result_win_headWear@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_headWear.imageset/anchorPK_result_win_headWear@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_headWear.imageset/anchorPK_result_win_headWear@2x.png new file mode 100644 index 00000000..5e34b7a8 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_headWear.imageset/anchorPK_result_win_headWear@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_headWear.imageset/anchorPK_result_win_headWear@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_headWear.imageset/anchorPK_result_win_headWear@3x.png new file mode 100644 index 00000000..13995b23 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_headWear.imageset/anchorPK_result_win_headWear@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_title_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_title_bg.imageset/Contents.json new file mode 100644 index 00000000..821f1836 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_title_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPK_result_win_title_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPK_result_win_title_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_title_bg.imageset/anchorPK_result_win_title_bg@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_title_bg.imageset/anchorPK_result_win_title_bg@2x.png new file mode 100644 index 00000000..0bd3843d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_title_bg.imageset/anchorPK_result_win_title_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_title_bg.imageset/anchorPK_result_win_title_bg@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_title_bg.imageset/anchorPK_result_win_title_bg@3x.png new file mode 100644 index 00000000..b2f46bec Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPK_result_win_title_bg.imageset/anchorPK_result_win_title_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_attention.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_attention.imageset/Contents.json new file mode 100644 index 00000000..fc5ff88d --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_attention.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPk_micro_attention@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPk_micro_attention@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_attention.imageset/anchorPk_micro_attention@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_attention.imageset/anchorPk_micro_attention@2x.png new file mode 100644 index 00000000..92766049 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_attention.imageset/anchorPk_micro_attention@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_attention.imageset/anchorPk_micro_attention@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_attention.imageset/anchorPk_micro_attention@3x.png new file mode 100644 index 00000000..e3a3342d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_attention.imageset/anchorPk_micro_attention@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_follow.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_follow.imageset/Contents.json new file mode 100644 index 00000000..1700d984 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_follow.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPk_micro_follow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPk_micro_follow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_follow.imageset/anchorPk_micro_follow@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_follow.imageset/anchorPk_micro_follow@2x.png new file mode 100644 index 00000000..1126f394 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_follow.imageset/anchorPk_micro_follow@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_follow.imageset/anchorPk_micro_follow@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_follow.imageset/anchorPk_micro_follow@3x.png new file mode 100644 index 00000000..a73ea8f7 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_follow.imageset/anchorPk_micro_follow@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_fail.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_fail.imageset/Contents.json new file mode 100644 index 00000000..86ac1925 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_fail.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPk_micro_result_fail@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPk_micro_result_fail@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_fail.imageset/anchorPk_micro_result_fail@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_fail.imageset/anchorPk_micro_result_fail@2x.png new file mode 100644 index 00000000..4ab13f2f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_fail.imageset/anchorPk_micro_result_fail@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_fail.imageset/anchorPk_micro_result_fail@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_fail.imageset/anchorPk_micro_result_fail@3x.png new file mode 100644 index 00000000..914393aa Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_fail.imageset/anchorPk_micro_result_fail@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_tie.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_tie.imageset/Contents.json new file mode 100644 index 00000000..f5da6d65 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_tie.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPk_micro_result_tie@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPk_micro_result_tie@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_tie.imageset/anchorPk_micro_result_tie@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_tie.imageset/anchorPk_micro_result_tie@2x.png new file mode 100644 index 00000000..02b321aa Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_tie.imageset/anchorPk_micro_result_tie@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_tie.imageset/anchorPk_micro_result_tie@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_tie.imageset/anchorPk_micro_result_tie@3x.png new file mode 100644 index 00000000..f63e15b1 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_tie.imageset/anchorPk_micro_result_tie@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_win.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_win.imageset/Contents.json new file mode 100644 index 00000000..9ae1cad6 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_win.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPk_micro_result_win@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPk_micro_result_win@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_win.imageset/anchorPk_micro_result_win@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_win.imageset/anchorPk_micro_result_win@2x.png new file mode 100644 index 00000000..f85f727f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_win.imageset/anchorPk_micro_result_win@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_win.imageset/anchorPk_micro_result_win@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_win.imageset/anchorPk_micro_result_win@3x.png new file mode 100644 index 00000000..821c7d4e Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_micro_result_win.imageset/anchorPk_micro_result_win@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_panel_ruleBg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_panel_ruleBg.imageset/Contents.json new file mode 100644 index 00000000..80150456 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_panel_ruleBg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPk_panel_ruleBg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPk_panel_ruleBg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_panel_ruleBg.imageset/anchorPk_panel_ruleBg@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_panel_ruleBg.imageset/anchorPk_panel_ruleBg@2x.png new file mode 100644 index 00000000..414193dc Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_panel_ruleBg.imageset/anchorPk_panel_ruleBg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_panel_ruleBg.imageset/anchorPk_panel_ruleBg@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_panel_ruleBg.imageset/anchorPk_panel_ruleBg@3x.png new file mode 100644 index 00000000..31bc697a Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_panel_ruleBg.imageset/anchorPk_panel_ruleBg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_panel_vs.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_panel_vs.imageset/Contents.json new file mode 100644 index 00000000..f396f089 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_panel_vs.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPk_panel_vs@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPk_panel_vs@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_panel_vs.imageset/anchorPk_panel_vs@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_panel_vs.imageset/anchorPk_panel_vs@2x.png new file mode 100644 index 00000000..45f3526b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_panel_vs.imageset/anchorPk_panel_vs@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_panel_vs.imageset/anchorPk_panel_vs@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_panel_vs.imageset/anchorPk_panel_vs@3x.png new file mode 100644 index 00000000..9b13ba92 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_panel_vs.imageset/anchorPk_panel_vs@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_result_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_result_close.imageset/Contents.json new file mode 100644 index 00000000..feccb0d9 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_result_close.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchorPk_result_close@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchorPk_result_close@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_result_close.imageset/anchorPk_result_close@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_result_close.imageset/anchorPk_result_close@2x.png new file mode 100644 index 00000000..04e02213 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_result_close.imageset/anchorPk_result_close@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_result_close.imageset/anchorPk_result_close@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_result_close.imageset/anchorPk_result_close@3x.png new file mode 100644 index 00000000..0069145d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/anchorPk_result_close.imageset/anchorPk_result_close@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_invite_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_invite_background.imageset/Contents.json deleted file mode 100644 index 68e1026f..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_invite_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPK_invite_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPK_invite_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_invite_background.imageset/yumi_anchorPK_invite_background@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_invite_background.imageset/yumi_anchorPK_invite_background@2x.png deleted file mode 100644 index 33843450..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_invite_background.imageset/yumi_anchorPK_invite_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_invite_background.imageset/yumi_anchorPK_invite_background@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_invite_background.imageset/yumi_anchorPK_invite_background@3x.png deleted file mode 100644 index 202a4d9b..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_invite_background.imageset/yumi_anchorPK_invite_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_MVP.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_MVP.imageset/Contents.json deleted file mode 100644 index ca19aa68..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_MVP.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPK_panel_MVP@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPK_panel_MVP@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_MVP.imageset/yumi_anchorPK_panel_MVP@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_MVP.imageset/yumi_anchorPK_panel_MVP@2x.png deleted file mode 100644 index 1f030983..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_MVP.imageset/yumi_anchorPK_panel_MVP@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_MVP.imageset/yumi_anchorPK_panel_MVP@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_MVP.imageset/yumi_anchorPK_panel_MVP@3x.png deleted file mode 100644 index a88b9e9c..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_MVP.imageset/yumi_anchorPK_panel_MVP@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_background.imageset/Contents.json deleted file mode 100644 index e20dda0b..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPK_panel_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPK_panel_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_background.imageset/yumi_anchorPK_panel_background@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_background.imageset/yumi_anchorPK_panel_background@2x.png deleted file mode 100644 index 16c8eeac..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_background.imageset/yumi_anchorPK_panel_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_background.imageset/yumi_anchorPK_panel_background@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_background.imageset/yumi_anchorPK_panel_background@3x.png deleted file mode 100644 index d51011f3..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_background.imageset/yumi_anchorPK_panel_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_micState.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_micState.imageset/Contents.json deleted file mode 100644 index 071ee327..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_micState.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPK_panel_blue_micState@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPK_panel_blue_micState@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_micState.imageset/yumi_anchorPK_panel_blue_micState@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_micState.imageset/yumi_anchorPK_panel_blue_micState@2x.png deleted file mode 100644 index 492cbe05..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_micState.imageset/yumi_anchorPK_panel_blue_micState@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_micState.imageset/yumi_anchorPK_panel_blue_micState@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_micState.imageset/yumi_anchorPK_panel_blue_micState@3x.png deleted file mode 100644 index 1e8579a7..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_micState.imageset/yumi_anchorPK_panel_blue_micState@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_progress.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_progress.imageset/Contents.json deleted file mode 100644 index 2a37c5d4..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_progress.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPK_panel_blue_progress@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPK_panel_blue_progress@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_progress.imageset/yumi_anchorPK_panel_blue_progress@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_progress.imageset/yumi_anchorPK_panel_blue_progress@2x.png deleted file mode 100644 index 37accf50..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_progress.imageset/yumi_anchorPK_panel_blue_progress@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_progress.imageset/yumi_anchorPK_panel_blue_progress@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_progress.imageset/yumi_anchorPK_panel_blue_progress@3x.png deleted file mode 100644 index 59915175..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_progress.imageset/yumi_anchorPK_panel_blue_progress@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_star.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_star.imageset/Contents.json deleted file mode 100644 index 3ac35d07..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_star.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPK_panel_blue_star@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPK_panel_blue_star@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_star.imageset/yumi_anchorPK_panel_blue_star@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_star.imageset/yumi_anchorPK_panel_blue_star@2x.png deleted file mode 100644 index 0ae05a91..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_star.imageset/yumi_anchorPK_panel_blue_star@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_star.imageset/yumi_anchorPK_panel_blue_star@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_star.imageset/yumi_anchorPK_panel_blue_star@3x.png deleted file mode 100644 index 7ed230b5..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_blue_star.imageset/yumi_anchorPK_panel_blue_star@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_micState.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_micState.imageset/Contents.json deleted file mode 100644 index a07f1684..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_micState.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPK_panel_red_micState@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPK_panel_red_micState@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_micState.imageset/yumi_anchorPK_panel_red_micState@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_micState.imageset/yumi_anchorPK_panel_red_micState@2x.png deleted file mode 100644 index 69709b85..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_micState.imageset/yumi_anchorPK_panel_red_micState@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_micState.imageset/yumi_anchorPK_panel_red_micState@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_micState.imageset/yumi_anchorPK_panel_red_micState@3x.png deleted file mode 100644 index 8b97974b..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_micState.imageset/yumi_anchorPK_panel_red_micState@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_progress.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_progress.imageset/Contents.json deleted file mode 100644 index 5b16ffdc..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_progress.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPK_panel_red_progress@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPK_panel_red_progress@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_progress.imageset/yumi_anchorPK_panel_red_progress@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_progress.imageset/yumi_anchorPK_panel_red_progress@2x.png deleted file mode 100644 index 16501aac..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_progress.imageset/yumi_anchorPK_panel_red_progress@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_progress.imageset/yumi_anchorPK_panel_red_progress@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_progress.imageset/yumi_anchorPK_panel_red_progress@3x.png deleted file mode 100644 index cd883aff..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_progress.imageset/yumi_anchorPK_panel_red_progress@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_star.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_star.imageset/Contents.json deleted file mode 100644 index df8604e8..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_star.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPK_panel_red_star@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPK_panel_red_star@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_star.imageset/yumi_anchorPK_panel_red_star@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_star.imageset/yumi_anchorPK_panel_red_star@2x.png deleted file mode 100644 index 0d3d9573..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_star.imageset/yumi_anchorPK_panel_red_star@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_star.imageset/yumi_anchorPK_panel_red_star@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_star.imageset/yumi_anchorPK_panel_red_star@3x.png deleted file mode 100644 index 059ca96f..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_panel_red_star.imageset/yumi_anchorPK_panel_red_star@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_KO.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_KO.imageset/Contents.json deleted file mode 100644 index 2cd1e6a3..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_KO.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPK_prize_KO@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPK_prize_KO@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_KO.imageset/yumi_anchorPK_prize_KO@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_KO.imageset/yumi_anchorPK_prize_KO@2x.png deleted file mode 100644 index d49d28e8..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_KO.imageset/yumi_anchorPK_prize_KO@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_KO.imageset/yumi_anchorPK_prize_KO@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_KO.imageset/yumi_anchorPK_prize_KO@3x.png deleted file mode 100644 index 96fee756..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_KO.imageset/yumi_anchorPK_prize_KO@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_background.imageset/Contents.json deleted file mode 100644 index 774816cb..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPK_prize_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPK_prize_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_background.imageset/yumi_anchorPK_prize_background@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_background.imageset/yumi_anchorPK_prize_background@2x.png deleted file mode 100644 index 339fe74c..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_background.imageset/yumi_anchorPK_prize_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_background.imageset/yumi_anchorPK_prize_background@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_background.imageset/yumi_anchorPK_prize_background@3x.png deleted file mode 100644 index b5033dcc..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_background.imageset/yumi_anchorPK_prize_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_onLook_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_onLook_background.imageset/Contents.json deleted file mode 100644 index a73a0556..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_onLook_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPK_prize_onLook_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPK_prize_onLook_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_onLook_background.imageset/yumi_anchorPK_prize_onLook_background@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_onLook_background.imageset/yumi_anchorPK_prize_onLook_background@2x.png deleted file mode 100644 index fc4aa422..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_onLook_background.imageset/yumi_anchorPK_prize_onLook_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_onLook_background.imageset/yumi_anchorPK_prize_onLook_background@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_onLook_background.imageset/yumi_anchorPK_prize_onLook_background@3x.png deleted file mode 100644 index 53268edc..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_prize_onLook_background.imageset/yumi_anchorPK_prize_onLook_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_blueValue_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_blueValue_background.imageset/Contents.json deleted file mode 100644 index af78473a..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_blueValue_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPK_result_blueValue_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPK_result_blueValue_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_blueValue_background.imageset/yumi_anchorPK_result_blueValue_background@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_blueValue_background.imageset/yumi_anchorPK_result_blueValue_background@2x.png deleted file mode 100644 index 1e17de69..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_blueValue_background.imageset/yumi_anchorPK_result_blueValue_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_blueValue_background.imageset/yumi_anchorPK_result_blueValue_background@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_blueValue_background.imageset/yumi_anchorPK_result_blueValue_background@3x.png deleted file mode 100644 index 17d535ba..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_blueValue_background.imageset/yumi_anchorPK_result_blueValue_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_contribute_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_contribute_background.imageset/Contents.json deleted file mode 100644 index ae26eab2..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_contribute_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPK_result_contribute_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPK_result_contribute_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_contribute_background.imageset/yumi_anchorPK_result_contribute_background@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_contribute_background.imageset/yumi_anchorPK_result_contribute_background@2x.png deleted file mode 100644 index 22290458..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_contribute_background.imageset/yumi_anchorPK_result_contribute_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_contribute_background.imageset/yumi_anchorPK_result_contribute_background@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_contribute_background.imageset/yumi_anchorPK_result_contribute_background@3x.png deleted file mode 100644 index c8ba556c..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_contribute_background.imageset/yumi_anchorPK_result_contribute_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_background.imageset/Contents.json deleted file mode 100644 index b98f97d6..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPK_result_fail_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPK_result_fail_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_background.imageset/yumi_anchorPK_result_fail_background@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_background.imageset/yumi_anchorPK_result_fail_background@2x.png deleted file mode 100644 index 7239b71f..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_background.imageset/yumi_anchorPK_result_fail_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_background.imageset/yumi_anchorPK_result_fail_background@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_background.imageset/yumi_anchorPK_result_fail_background@3x.png deleted file mode 100644 index 4d1f9f5e..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_background.imageset/yumi_anchorPK_result_fail_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_headWear.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_headWear.imageset/Contents.json deleted file mode 100644 index 7dd1cb26..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_headWear.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPK_result_fail_headWear@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPK_result_fail_headWear@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_headWear.imageset/yumi_anchorPK_result_fail_headWear@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_headWear.imageset/yumi_anchorPK_result_fail_headWear@2x.png deleted file mode 100644 index 0405d205..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_headWear.imageset/yumi_anchorPK_result_fail_headWear@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_headWear.imageset/yumi_anchorPK_result_fail_headWear@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_headWear.imageset/yumi_anchorPK_result_fail_headWear@3x.png deleted file mode 100644 index 31d1f574..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_headWear.imageset/yumi_anchorPK_result_fail_headWear@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_title_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_title_background.imageset/Contents.json deleted file mode 100644 index 08c299e7..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_title_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPK_result_fail_title_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPK_result_fail_title_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_title_background.imageset/yumi_anchorPK_result_fail_title_background@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_title_background.imageset/yumi_anchorPK_result_fail_title_background@2x.png deleted file mode 100644 index 84e7f185..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_title_background.imageset/yumi_anchorPK_result_fail_title_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_title_background.imageset/yumi_anchorPK_result_fail_title_background@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_title_background.imageset/yumi_anchorPK_result_fail_title_background@3x.png deleted file mode 100644 index 2fbcdc87..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_fail_title_background.imageset/yumi_anchorPK_result_fail_title_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_mvp_pic.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_mvp_pic.imageset/Contents.json deleted file mode 100644 index 33102607..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_mvp_pic.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPK_result_mvp_pic@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPK_result_mvp_pic@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_mvp_pic.imageset/yumi_anchorPK_result_mvp_pic@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_mvp_pic.imageset/yumi_anchorPK_result_mvp_pic@2x.png deleted file mode 100644 index 571bbe54..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_mvp_pic.imageset/yumi_anchorPK_result_mvp_pic@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_mvp_pic.imageset/yumi_anchorPK_result_mvp_pic@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_mvp_pic.imageset/yumi_anchorPK_result_mvp_pic@3x.png deleted file mode 100644 index 48956021..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_mvp_pic.imageset/yumi_anchorPK_result_mvp_pic@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_redValue_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_redValue_background.imageset/Contents.json deleted file mode 100644 index 162e7227..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_redValue_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPK_result_redValue_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPK_result_redValue_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_redValue_background.imageset/yumi_anchorPK_result_redValue_background@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_redValue_background.imageset/yumi_anchorPK_result_redValue_background@2x.png deleted file mode 100644 index 7f747ce7..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_redValue_background.imageset/yumi_anchorPK_result_redValue_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_redValue_background.imageset/yumi_anchorPK_result_redValue_background@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_redValue_background.imageset/yumi_anchorPK_result_redValue_background@3x.png deleted file mode 100644 index 5a76e83f..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_redValue_background.imageset/yumi_anchorPK_result_redValue_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_background.imageset/Contents.json deleted file mode 100644 index 4d652a14..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPK_result_tie_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPK_result_tie_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_background.imageset/yumi_anchorPK_result_tie_background@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_background.imageset/yumi_anchorPK_result_tie_background@2x.png deleted file mode 100644 index 9b01a72c..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_background.imageset/yumi_anchorPK_result_tie_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_background.imageset/yumi_anchorPK_result_tie_background@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_background.imageset/yumi_anchorPK_result_tie_background@3x.png deleted file mode 100644 index b1d92049..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_background.imageset/yumi_anchorPK_result_tie_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_headWear.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_headWear.imageset/Contents.json deleted file mode 100644 index c94fe0e8..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_headWear.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPK_result_tie_headWear@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPK_result_tie_headWear@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_headWear.imageset/yumi_anchorPK_result_tie_headWear@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_headWear.imageset/yumi_anchorPK_result_tie_headWear@2x.png deleted file mode 100644 index d113f27a..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_headWear.imageset/yumi_anchorPK_result_tie_headWear@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_headWear.imageset/yumi_anchorPK_result_tie_headWear@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_headWear.imageset/yumi_anchorPK_result_tie_headWear@3x.png deleted file mode 100644 index 40afc900..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_headWear.imageset/yumi_anchorPK_result_tie_headWear@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_title_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_title_background.imageset/Contents.json deleted file mode 100644 index 1b40ef5e..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_title_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPK_result_tie_title_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPK_result_tie_title_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_title_background.imageset/yumi_anchorPK_result_tie_title_background@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_title_background.imageset/yumi_anchorPK_result_tie_title_background@2x.png deleted file mode 100644 index 1921280a..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_title_background.imageset/yumi_anchorPK_result_tie_title_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_title_background.imageset/yumi_anchorPK_result_tie_title_background@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_title_background.imageset/yumi_anchorPK_result_tie_title_background@3x.png deleted file mode 100644 index ac297800..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_tie_title_background.imageset/yumi_anchorPK_result_tie_title_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_background.imageset/Contents.json deleted file mode 100644 index 2147230f..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPK_result_win_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPK_result_win_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_background.imageset/yumi_anchorPK_result_win_background@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_background.imageset/yumi_anchorPK_result_win_background@2x.png deleted file mode 100644 index 8c1a472c..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_background.imageset/yumi_anchorPK_result_win_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_background.imageset/yumi_anchorPK_result_win_background@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_background.imageset/yumi_anchorPK_result_win_background@3x.png deleted file mode 100644 index b022230e..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_background.imageset/yumi_anchorPK_result_win_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_headWear.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_headWear.imageset/Contents.json deleted file mode 100644 index e496e267..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_headWear.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPK_result_win_headWear@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPK_result_win_headWear@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_headWear.imageset/yumi_anchorPK_result_win_headWear@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_headWear.imageset/yumi_anchorPK_result_win_headWear@2x.png deleted file mode 100644 index 5407b9a9..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_headWear.imageset/yumi_anchorPK_result_win_headWear@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_headWear.imageset/yumi_anchorPK_result_win_headWear@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_headWear.imageset/yumi_anchorPK_result_win_headWear@3x.png deleted file mode 100644 index fc54fa46..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_headWear.imageset/yumi_anchorPK_result_win_headWear@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_title_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_title_background.imageset/Contents.json deleted file mode 100644 index 4b7dc8ff..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_title_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPK_result_win_title_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPK_result_win_title_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_title_background.imageset/yumi_anchorPK_result_win_title_background@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_title_background.imageset/yumi_anchorPK_result_win_title_background@2x.png deleted file mode 100644 index ba723fa8..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_title_background.imageset/yumi_anchorPK_result_win_title_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_title_background.imageset/yumi_anchorPK_result_win_title_background@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_title_background.imageset/yumi_anchorPK_result_win_title_background@3x.png deleted file mode 100644 index 3f75e083..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPK_result_win_title_background.imageset/yumi_anchorPK_result_win_title_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_attention.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_attention.imageset/Contents.json deleted file mode 100644 index 378bfd2d..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_attention.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPk_micro_attention@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPk_micro_attention@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_attention.imageset/yumi_anchorPk_micro_attention@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_attention.imageset/yumi_anchorPk_micro_attention@2x.png deleted file mode 100644 index bba97490..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_attention.imageset/yumi_anchorPk_micro_attention@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_attention.imageset/yumi_anchorPk_micro_attention@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_attention.imageset/yumi_anchorPk_micro_attention@3x.png deleted file mode 100644 index ea8ccbee..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_attention.imageset/yumi_anchorPk_micro_attention@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_follow.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_follow.imageset/Contents.json deleted file mode 100644 index 7736a165..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_follow.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPk_micro_follow@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPk_micro_follow@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_follow.imageset/yumi_anchorPk_micro_follow@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_follow.imageset/yumi_anchorPk_micro_follow@2x.png deleted file mode 100644 index 410f1c63..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_follow.imageset/yumi_anchorPk_micro_follow@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_follow.imageset/yumi_anchorPk_micro_follow@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_follow.imageset/yumi_anchorPk_micro_follow@3x.png deleted file mode 100644 index 4dcef749..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_follow.imageset/yumi_anchorPk_micro_follow@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_fail.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_fail.imageset/Contents.json deleted file mode 100644 index 461c0130..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_fail.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPk_micro_result_fail@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPk_micro_result_fail@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_fail.imageset/yumi_anchorPk_micro_result_fail@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_fail.imageset/yumi_anchorPk_micro_result_fail@2x.png deleted file mode 100644 index f7c1cffd..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_fail.imageset/yumi_anchorPk_micro_result_fail@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_fail.imageset/yumi_anchorPk_micro_result_fail@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_fail.imageset/yumi_anchorPk_micro_result_fail@3x.png deleted file mode 100644 index 289a2581..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_fail.imageset/yumi_anchorPk_micro_result_fail@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_tie.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_tie.imageset/Contents.json deleted file mode 100644 index 2886462e..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_tie.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPk_micro_result_tie@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPk_micro_result_tie@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_tie.imageset/yumi_anchorPk_micro_result_tie@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_tie.imageset/yumi_anchorPk_micro_result_tie@2x.png deleted file mode 100644 index 39e62ba8..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_tie.imageset/yumi_anchorPk_micro_result_tie@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_tie.imageset/yumi_anchorPk_micro_result_tie@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_tie.imageset/yumi_anchorPk_micro_result_tie@3x.png deleted file mode 100644 index 1f59a6ac..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_tie.imageset/yumi_anchorPk_micro_result_tie@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_win.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_win.imageset/Contents.json deleted file mode 100644 index 8e4ffd62..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_win.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPk_micro_result_win@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPk_micro_result_win@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_win.imageset/yumi_anchorPk_micro_result_win@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_win.imageset/yumi_anchorPk_micro_result_win@2x.png deleted file mode 100644 index 7850eaa5..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_win.imageset/yumi_anchorPk_micro_result_win@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_win.imageset/yumi_anchorPk_micro_result_win@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_win.imageset/yumi_anchorPk_micro_result_win@3x.png deleted file mode 100644 index 26811521..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_micro_result_win.imageset/yumi_anchorPk_micro_result_win@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_panel_ruleBg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_panel_ruleBg.imageset/Contents.json deleted file mode 100644 index 0664a7df..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_panel_ruleBg.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPk_panel_ruleBg@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPk_panel_ruleBg@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_panel_ruleBg.imageset/yumi_anchorPk_panel_ruleBg@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_panel_ruleBg.imageset/yumi_anchorPk_panel_ruleBg@2x.png deleted file mode 100644 index fcc2faa4..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_panel_ruleBg.imageset/yumi_anchorPk_panel_ruleBg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_panel_ruleBg.imageset/yumi_anchorPk_panel_ruleBg@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_panel_ruleBg.imageset/yumi_anchorPk_panel_ruleBg@3x.png deleted file mode 100644 index 1335f69f..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_panel_ruleBg.imageset/yumi_anchorPk_panel_ruleBg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_panel_vs.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_panel_vs.imageset/Contents.json deleted file mode 100644 index 97e815c1..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_panel_vs.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPk_panel_vs@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPk_panel_vs@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_panel_vs.imageset/yumi_anchorPk_panel_vs@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_panel_vs.imageset/yumi_anchorPk_panel_vs@2x.png deleted file mode 100644 index 8a5825f5..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_panel_vs.imageset/yumi_anchorPk_panel_vs@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_panel_vs.imageset/yumi_anchorPk_panel_vs@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_panel_vs.imageset/yumi_anchorPk_panel_vs@3x.png deleted file mode 100644 index 1f459fb2..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_panel_vs.imageset/yumi_anchorPk_panel_vs@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_result_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_result_close.imageset/Contents.json deleted file mode 100644 index 46e1f524..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_result_close.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchorPk_result_close@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchorPk_result_close@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_result_close.imageset/yumi_anchorPk_result_close@2x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_result_close.imageset/yumi_anchorPk_result_close@2x.png deleted file mode 100644 index b28b6b90..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_result_close.imageset/yumi_anchorPk_result_close@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_result_close.imageset/yumi_anchorPk_result_close@3x.png b/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_result_close.imageset/yumi_anchorPk_result_close@3x.png deleted file mode 100644 index 0b0023bd..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/AnchorPk/yumi_anchorPk_result_close.imageset/yumi_anchorPk_result_close@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/yna/Anchor/Contents.json +++ b/YuMi/Assets.xcassets/yna/Anchor/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/Contents.json +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_000.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_000.imageset/Contents.json new file mode 100644 index 00000000..0fd521de --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_000.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_000.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_000.imageset/anchorLoading_000.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_000.imageset/anchorLoading_000.png new file mode 100644 index 00000000..15492922 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_000.imageset/anchorLoading_000.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_001.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_001.imageset/Contents.json new file mode 100644 index 00000000..850fce12 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_001.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_001.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_001.imageset/anchorLoading_001.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_001.imageset/anchorLoading_001.png new file mode 100644 index 00000000..168306ac Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_001.imageset/anchorLoading_001.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_002.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_002.imageset/Contents.json new file mode 100644 index 00000000..3478a565 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_002.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_002.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_002.imageset/anchorLoading_002.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_002.imageset/anchorLoading_002.png new file mode 100644 index 00000000..30b794c0 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_002.imageset/anchorLoading_002.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_003.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_003.imageset/Contents.json new file mode 100644 index 00000000..61c529c4 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_003.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_003.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_003.imageset/anchorLoading_003.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_003.imageset/anchorLoading_003.png new file mode 100644 index 00000000..0722bafe Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_003.imageset/anchorLoading_003.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_004.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_004.imageset/Contents.json new file mode 100644 index 00000000..2bd1866b --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_004.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_004.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_004.imageset/anchorLoading_004.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_004.imageset/anchorLoading_004.png new file mode 100644 index 00000000..523b87af Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_004.imageset/anchorLoading_004.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_005.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_005.imageset/Contents.json new file mode 100644 index 00000000..a8415f74 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_005.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_005.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_005.imageset/anchorLoading_005.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_005.imageset/anchorLoading_005.png new file mode 100644 index 00000000..0b606096 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_005.imageset/anchorLoading_005.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_006.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_006.imageset/Contents.json new file mode 100644 index 00000000..fcee09d5 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_006.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_006.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_006.imageset/anchorLoading_006.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_006.imageset/anchorLoading_006.png new file mode 100644 index 00000000..3881d42b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_006.imageset/anchorLoading_006.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_007.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_007.imageset/Contents.json new file mode 100644 index 00000000..0d1d6024 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_007.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_007.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_007.imageset/anchorLoading_007.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_007.imageset/anchorLoading_007.png new file mode 100644 index 00000000..40846b2d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_007.imageset/anchorLoading_007.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_008.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_008.imageset/Contents.json new file mode 100644 index 00000000..efa24d12 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_008.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_008.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_008.imageset/anchorLoading_008.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_008.imageset/anchorLoading_008.png new file mode 100644 index 00000000..5c6dfeb2 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_008.imageset/anchorLoading_008.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_009.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_009.imageset/Contents.json new file mode 100644 index 00000000..ad4e8fba --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_009.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_009.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_009.imageset/anchorLoading_009.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_009.imageset/anchorLoading_009.png new file mode 100644 index 00000000..b908fe42 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_009.imageset/anchorLoading_009.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_010.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_010.imageset/Contents.json new file mode 100644 index 00000000..413984f3 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_010.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_010.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_010.imageset/anchorLoading_010.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_010.imageset/anchorLoading_010.png new file mode 100644 index 00000000..3aab16fa Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_010.imageset/anchorLoading_010.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_011.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_011.imageset/Contents.json new file mode 100644 index 00000000..830117d5 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_011.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_011.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_011.imageset/anchorLoading_011.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_011.imageset/anchorLoading_011.png new file mode 100644 index 00000000..0683b422 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_011.imageset/anchorLoading_011.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_012.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_012.imageset/Contents.json new file mode 100644 index 00000000..f4c013a8 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_012.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_012.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_012.imageset/anchorLoading_012.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_012.imageset/anchorLoading_012.png new file mode 100644 index 00000000..818ae102 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_012.imageset/anchorLoading_012.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_013.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_013.imageset/Contents.json new file mode 100644 index 00000000..8d3f1d68 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_013.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_013.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_013.imageset/anchorLoading_013.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_013.imageset/anchorLoading_013.png new file mode 100644 index 00000000..6c62ba70 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_013.imageset/anchorLoading_013.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_014.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_014.imageset/Contents.json new file mode 100644 index 00000000..89b206a0 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_014.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_014.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_014.imageset/anchorLoading_014.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_014.imageset/anchorLoading_014.png new file mode 100644 index 00000000..fcd8f694 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_014.imageset/anchorLoading_014.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_015.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_015.imageset/Contents.json new file mode 100644 index 00000000..fd7f45d2 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_015.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_015.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_015.imageset/anchorLoading_015.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_015.imageset/anchorLoading_015.png new file mode 100644 index 00000000..60c6c37d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_015.imageset/anchorLoading_015.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_016.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_016.imageset/Contents.json new file mode 100644 index 00000000..d61746ef --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_016.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_016.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_016.imageset/anchorLoading_016.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_016.imageset/anchorLoading_016.png new file mode 100644 index 00000000..9f669a9b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_016.imageset/anchorLoading_016.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_017.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_017.imageset/Contents.json new file mode 100644 index 00000000..d253f5e3 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_017.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_017.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_017.imageset/anchorLoading_017.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_017.imageset/anchorLoading_017.png new file mode 100644 index 00000000..9ee3b510 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_017.imageset/anchorLoading_017.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_018.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_018.imageset/Contents.json new file mode 100644 index 00000000..9838a4cc --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_018.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_018.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_018.imageset/anchorLoading_018.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_018.imageset/anchorLoading_018.png new file mode 100644 index 00000000..9883f02f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_018.imageset/anchorLoading_018.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_019.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_019.imageset/Contents.json new file mode 100644 index 00000000..eb126c99 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_019.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_019.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_019.imageset/anchorLoading_019.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_019.imageset/anchorLoading_019.png new file mode 100644 index 00000000..4f64d00c Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_019.imageset/anchorLoading_019.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_020.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_020.imageset/Contents.json new file mode 100644 index 00000000..37ba47c8 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_020.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_020.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_020.imageset/anchorLoading_020.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_020.imageset/anchorLoading_020.png new file mode 100644 index 00000000..8b7e1ecf Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_020.imageset/anchorLoading_020.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_021.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_021.imageset/Contents.json new file mode 100644 index 00000000..5eb7ea30 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_021.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_021.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_021.imageset/anchorLoading_021.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_021.imageset/anchorLoading_021.png new file mode 100644 index 00000000..03e076a5 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_021.imageset/anchorLoading_021.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_022.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_022.imageset/Contents.json new file mode 100644 index 00000000..44ed8714 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_022.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_022.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_022.imageset/anchorLoading_022.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_022.imageset/anchorLoading_022.png new file mode 100644 index 00000000..1774845c Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_022.imageset/anchorLoading_022.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_023.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_023.imageset/Contents.json new file mode 100644 index 00000000..74a16222 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_023.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_023.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_023.imageset/anchorLoading_023.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_023.imageset/anchorLoading_023.png new file mode 100644 index 00000000..bbdf7fac Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_023.imageset/anchorLoading_023.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_024.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_024.imageset/Contents.json new file mode 100644 index 00000000..2a1046e8 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_024.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_024.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_024.imageset/anchorLoading_024.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_024.imageset/anchorLoading_024.png new file mode 100644 index 00000000..61aae622 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_024.imageset/anchorLoading_024.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_025.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_025.imageset/Contents.json new file mode 100644 index 00000000..a7f4609f --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_025.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_025.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_025.imageset/anchorLoading_025.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_025.imageset/anchorLoading_025.png new file mode 100644 index 00000000..71f56ef0 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_025.imageset/anchorLoading_025.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_026.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_026.imageset/Contents.json new file mode 100644 index 00000000..b1c33f80 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_026.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_026.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_026.imageset/anchorLoading_026.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_026.imageset/anchorLoading_026.png new file mode 100644 index 00000000..acf2de44 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_026.imageset/anchorLoading_026.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_027.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_027.imageset/Contents.json new file mode 100644 index 00000000..aeb403e6 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_027.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_027.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_027.imageset/anchorLoading_027.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_027.imageset/anchorLoading_027.png new file mode 100644 index 00000000..8c65459f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_027.imageset/anchorLoading_027.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_028.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_028.imageset/Contents.json new file mode 100644 index 00000000..e7c07663 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_028.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_028.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_028.imageset/anchorLoading_028.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_028.imageset/anchorLoading_028.png new file mode 100644 index 00000000..7648fa57 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_028.imageset/anchorLoading_028.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_029.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_029.imageset/Contents.json new file mode 100644 index 00000000..200d6b44 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_029.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_029.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_029.imageset/anchorLoading_029.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_029.imageset/anchorLoading_029.png new file mode 100644 index 00000000..8ffa64c9 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_029.imageset/anchorLoading_029.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_030.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_030.imageset/Contents.json new file mode 100644 index 00000000..638576b3 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_030.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_030.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_030.imageset/anchorLoading_030.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_030.imageset/anchorLoading_030.png new file mode 100644 index 00000000..f3914a5c Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_030.imageset/anchorLoading_030.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_031.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_031.imageset/Contents.json new file mode 100644 index 00000000..239a89dd --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_031.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_031.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_031.imageset/anchorLoading_031.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_031.imageset/anchorLoading_031.png new file mode 100644 index 00000000..5db7da17 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_031.imageset/anchorLoading_031.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_032.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_032.imageset/Contents.json new file mode 100644 index 00000000..aee98992 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_032.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_032.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_032.imageset/anchorLoading_032.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_032.imageset/anchorLoading_032.png new file mode 100644 index 00000000..083f58e2 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_032.imageset/anchorLoading_032.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_033.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_033.imageset/Contents.json new file mode 100644 index 00000000..a60b6465 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_033.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_033.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_033.imageset/anchorLoading_033.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_033.imageset/anchorLoading_033.png new file mode 100644 index 00000000..fa424892 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_033.imageset/anchorLoading_033.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_034.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_034.imageset/Contents.json new file mode 100644 index 00000000..5a3168d1 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_034.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_034.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_034.imageset/anchorLoading_034.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_034.imageset/anchorLoading_034.png new file mode 100644 index 00000000..4d2ced8c Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_034.imageset/anchorLoading_034.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_035.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_035.imageset/Contents.json new file mode 100644 index 00000000..198c888c --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_035.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_035.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_035.imageset/anchorLoading_035.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_035.imageset/anchorLoading_035.png new file mode 100644 index 00000000..03fd6614 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_035.imageset/anchorLoading_035.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_036.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_036.imageset/Contents.json new file mode 100644 index 00000000..c24fc329 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_036.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_036.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_036.imageset/anchorLoading_036.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_036.imageset/anchorLoading_036.png new file mode 100644 index 00000000..0bb27821 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_036.imageset/anchorLoading_036.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_037.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_037.imageset/Contents.json new file mode 100644 index 00000000..e1ea09da --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_037.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_037.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_037.imageset/anchorLoading_037.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_037.imageset/anchorLoading_037.png new file mode 100644 index 00000000..b672e5b1 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_037.imageset/anchorLoading_037.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_038.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_038.imageset/Contents.json new file mode 100644 index 00000000..97a8111b --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_038.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_038.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_038.imageset/anchorLoading_038.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_038.imageset/anchorLoading_038.png new file mode 100644 index 00000000..f8bf49ce Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_038.imageset/anchorLoading_038.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_039.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_039.imageset/Contents.json new file mode 100644 index 00000000..8be252d5 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_039.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_039.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_039.imageset/anchorLoading_039.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_039.imageset/anchorLoading_039.png new file mode 100644 index 00000000..702727a0 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_039.imageset/anchorLoading_039.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_040.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_040.imageset/Contents.json new file mode 100644 index 00000000..91fb42dc --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_040.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_040.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_040.imageset/anchorLoading_040.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_040.imageset/anchorLoading_040.png new file mode 100644 index 00000000..25a11e18 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_040.imageset/anchorLoading_040.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_041.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_041.imageset/Contents.json new file mode 100644 index 00000000..5037199c --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_041.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_041.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_041.imageset/anchorLoading_041.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_041.imageset/anchorLoading_041.png new file mode 100644 index 00000000..aac0baec Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_041.imageset/anchorLoading_041.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_042.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_042.imageset/Contents.json new file mode 100644 index 00000000..9b759594 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_042.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_042.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_042.imageset/anchorLoading_042.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_042.imageset/anchorLoading_042.png new file mode 100644 index 00000000..ab84a1ea Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_042.imageset/anchorLoading_042.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_043.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_043.imageset/Contents.json new file mode 100644 index 00000000..e5a59c10 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_043.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_043.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_043.imageset/anchorLoading_043.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_043.imageset/anchorLoading_043.png new file mode 100644 index 00000000..6e0f0577 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_043.imageset/anchorLoading_043.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_044.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_044.imageset/Contents.json new file mode 100644 index 00000000..ef0f8d02 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_044.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_044.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_044.imageset/anchorLoading_044.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_044.imageset/anchorLoading_044.png new file mode 100644 index 00000000..4e2702eb Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_044.imageset/anchorLoading_044.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_045.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_045.imageset/Contents.json new file mode 100644 index 00000000..241cc529 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_045.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_045.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_045.imageset/anchorLoading_045.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_045.imageset/anchorLoading_045.png new file mode 100644 index 00000000..37aeec6d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_045.imageset/anchorLoading_045.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_046.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_046.imageset/Contents.json new file mode 100644 index 00000000..882b5923 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_046.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_046.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_046.imageset/anchorLoading_046.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_046.imageset/anchorLoading_046.png new file mode 100644 index 00000000..36c637b2 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_046.imageset/anchorLoading_046.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_047.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_047.imageset/Contents.json new file mode 100644 index 00000000..e6a87686 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_047.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "anchorLoading_047.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_047.imageset/anchorLoading_047.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_047.imageset/anchorLoading_047.png new file mode 100644 index 00000000..45a79bf6 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/Loading/anchorLoading_047.imageset/anchorLoading_047.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_000.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_000.imageset/Contents.json deleted file mode 100644 index 498e046b..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_000.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_000.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_000.imageset/yumi_anchorLoading_000.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_000.imageset/yumi_anchorLoading_000.png deleted file mode 100644 index 45600679..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_000.imageset/yumi_anchorLoading_000.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_001.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_001.imageset/Contents.json deleted file mode 100644 index 5137bb52..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_001.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_001.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_001.imageset/yumi_anchorLoading_001.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_001.imageset/yumi_anchorLoading_001.png deleted file mode 100644 index ed5bcfe8..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_001.imageset/yumi_anchorLoading_001.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_002.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_002.imageset/Contents.json deleted file mode 100644 index a0fc31bc..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_002.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_002.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_002.imageset/yumi_anchorLoading_002.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_002.imageset/yumi_anchorLoading_002.png deleted file mode 100644 index e6fef5d9..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_002.imageset/yumi_anchorLoading_002.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_003.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_003.imageset/Contents.json deleted file mode 100644 index f91d2602..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_003.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_003.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_003.imageset/yumi_anchorLoading_003.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_003.imageset/yumi_anchorLoading_003.png deleted file mode 100644 index fe689303..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_003.imageset/yumi_anchorLoading_003.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_004.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_004.imageset/Contents.json deleted file mode 100644 index da276668..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_004.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_004.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_004.imageset/yumi_anchorLoading_004.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_004.imageset/yumi_anchorLoading_004.png deleted file mode 100644 index 8601e8cd..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_004.imageset/yumi_anchorLoading_004.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_005.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_005.imageset/Contents.json deleted file mode 100644 index ec26cfa9..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_005.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_005.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_005.imageset/yumi_anchorLoading_005.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_005.imageset/yumi_anchorLoading_005.png deleted file mode 100644 index 7c7c9f1b..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_005.imageset/yumi_anchorLoading_005.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_006.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_006.imageset/Contents.json deleted file mode 100644 index e2d17ec4..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_006.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_006.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_006.imageset/yumi_anchorLoading_006.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_006.imageset/yumi_anchorLoading_006.png deleted file mode 100644 index 1a8686f6..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_006.imageset/yumi_anchorLoading_006.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_007.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_007.imageset/Contents.json deleted file mode 100644 index 811ee4fe..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_007.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_007.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_007.imageset/yumi_anchorLoading_007.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_007.imageset/yumi_anchorLoading_007.png deleted file mode 100644 index a0b4478a..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_007.imageset/yumi_anchorLoading_007.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_008.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_008.imageset/Contents.json deleted file mode 100644 index 5cd3ee29..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_008.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_008.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_008.imageset/yumi_anchorLoading_008.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_008.imageset/yumi_anchorLoading_008.png deleted file mode 100644 index 38bb3308..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_008.imageset/yumi_anchorLoading_008.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_009.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_009.imageset/Contents.json deleted file mode 100644 index 5e6c7238..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_009.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_009.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_009.imageset/yumi_anchorLoading_009.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_009.imageset/yumi_anchorLoading_009.png deleted file mode 100644 index 0c57293f..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_009.imageset/yumi_anchorLoading_009.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_010.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_010.imageset/Contents.json deleted file mode 100644 index e68191b6..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_010.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_010.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_010.imageset/yumi_anchorLoading_010.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_010.imageset/yumi_anchorLoading_010.png deleted file mode 100644 index 2b552c92..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_010.imageset/yumi_anchorLoading_010.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_011.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_011.imageset/Contents.json deleted file mode 100644 index 16c4c9d0..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_011.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_011.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_011.imageset/yumi_anchorLoading_011.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_011.imageset/yumi_anchorLoading_011.png deleted file mode 100644 index 563a7cde..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_011.imageset/yumi_anchorLoading_011.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_012.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_012.imageset/Contents.json deleted file mode 100644 index ae4ad1b3..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_012.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_012.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_012.imageset/yumi_anchorLoading_012.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_012.imageset/yumi_anchorLoading_012.png deleted file mode 100644 index a3804d46..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_012.imageset/yumi_anchorLoading_012.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_013.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_013.imageset/Contents.json deleted file mode 100644 index 87507eab..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_013.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_013.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_013.imageset/yumi_anchorLoading_013.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_013.imageset/yumi_anchorLoading_013.png deleted file mode 100644 index ab7fc802..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_013.imageset/yumi_anchorLoading_013.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_014.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_014.imageset/Contents.json deleted file mode 100644 index 02fe508d..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_014.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_014.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_014.imageset/yumi_anchorLoading_014.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_014.imageset/yumi_anchorLoading_014.png deleted file mode 100644 index 8e36749b..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_014.imageset/yumi_anchorLoading_014.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_015.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_015.imageset/Contents.json deleted file mode 100644 index ef91aaec..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_015.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_015.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_015.imageset/yumi_anchorLoading_015.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_015.imageset/yumi_anchorLoading_015.png deleted file mode 100644 index 32c00bc4..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_015.imageset/yumi_anchorLoading_015.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_016.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_016.imageset/Contents.json deleted file mode 100644 index 0f048e28..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_016.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_016.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_016.imageset/yumi_anchorLoading_016.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_016.imageset/yumi_anchorLoading_016.png deleted file mode 100644 index ee525faf..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_016.imageset/yumi_anchorLoading_016.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_017.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_017.imageset/Contents.json deleted file mode 100644 index e1b581d0..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_017.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_017.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_017.imageset/yumi_anchorLoading_017.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_017.imageset/yumi_anchorLoading_017.png deleted file mode 100644 index 235670ff..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_017.imageset/yumi_anchorLoading_017.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_018.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_018.imageset/Contents.json deleted file mode 100644 index 158f383f..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_018.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_018.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_018.imageset/yumi_anchorLoading_018.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_018.imageset/yumi_anchorLoading_018.png deleted file mode 100644 index 6a8c9f1d..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_018.imageset/yumi_anchorLoading_018.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_019.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_019.imageset/Contents.json deleted file mode 100644 index 18c69634..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_019.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_019.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_019.imageset/yumi_anchorLoading_019.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_019.imageset/yumi_anchorLoading_019.png deleted file mode 100644 index 26f6ade0..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_019.imageset/yumi_anchorLoading_019.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_020.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_020.imageset/Contents.json deleted file mode 100644 index fdb067ad..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_020.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_020.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_020.imageset/yumi_anchorLoading_020.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_020.imageset/yumi_anchorLoading_020.png deleted file mode 100644 index 7cebcac4..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_020.imageset/yumi_anchorLoading_020.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_021.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_021.imageset/Contents.json deleted file mode 100644 index d9910f81..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_021.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_021.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_021.imageset/yumi_anchorLoading_021.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_021.imageset/yumi_anchorLoading_021.png deleted file mode 100644 index a48da136..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_021.imageset/yumi_anchorLoading_021.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_022.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_022.imageset/Contents.json deleted file mode 100644 index 159572c0..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_022.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_022.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_022.imageset/yumi_anchorLoading_022.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_022.imageset/yumi_anchorLoading_022.png deleted file mode 100644 index 4bb74b7d..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_022.imageset/yumi_anchorLoading_022.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_023.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_023.imageset/Contents.json deleted file mode 100644 index 35b58206..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_023.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_023.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_023.imageset/yumi_anchorLoading_023.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_023.imageset/yumi_anchorLoading_023.png deleted file mode 100644 index 23a15ef1..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_023.imageset/yumi_anchorLoading_023.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_024.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_024.imageset/Contents.json deleted file mode 100644 index 7549d875..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_024.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_024.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_024.imageset/yumi_anchorLoading_024.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_024.imageset/yumi_anchorLoading_024.png deleted file mode 100644 index a9215d0c..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_024.imageset/yumi_anchorLoading_024.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_025.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_025.imageset/Contents.json deleted file mode 100644 index eb65fe93..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_025.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_025.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_025.imageset/yumi_anchorLoading_025.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_025.imageset/yumi_anchorLoading_025.png deleted file mode 100644 index 459ceb77..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_025.imageset/yumi_anchorLoading_025.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_026.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_026.imageset/Contents.json deleted file mode 100644 index 0ccd7573..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_026.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_026.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_026.imageset/yumi_anchorLoading_026.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_026.imageset/yumi_anchorLoading_026.png deleted file mode 100644 index 7bcd4a96..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_026.imageset/yumi_anchorLoading_026.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_027.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_027.imageset/Contents.json deleted file mode 100644 index 17d7b80a..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_027.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_027.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_027.imageset/yumi_anchorLoading_027.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_027.imageset/yumi_anchorLoading_027.png deleted file mode 100644 index 1909c9a0..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_027.imageset/yumi_anchorLoading_027.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_028.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_028.imageset/Contents.json deleted file mode 100644 index 57e9706b..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_028.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_028.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_028.imageset/yumi_anchorLoading_028.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_028.imageset/yumi_anchorLoading_028.png deleted file mode 100644 index ae7b858c..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_028.imageset/yumi_anchorLoading_028.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_029.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_029.imageset/Contents.json deleted file mode 100644 index 46e9d37c..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_029.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_029.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_029.imageset/yumi_anchorLoading_029.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_029.imageset/yumi_anchorLoading_029.png deleted file mode 100644 index fc82efa8..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_029.imageset/yumi_anchorLoading_029.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_030.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_030.imageset/Contents.json deleted file mode 100644 index 7471bbe6..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_030.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_030.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_030.imageset/yumi_anchorLoading_030.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_030.imageset/yumi_anchorLoading_030.png deleted file mode 100644 index 381bdecd..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_030.imageset/yumi_anchorLoading_030.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_031.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_031.imageset/Contents.json deleted file mode 100644 index 7687873d..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_031.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_031.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_031.imageset/yumi_anchorLoading_031.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_031.imageset/yumi_anchorLoading_031.png deleted file mode 100644 index 1701f85e..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_031.imageset/yumi_anchorLoading_031.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_032.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_032.imageset/Contents.json deleted file mode 100644 index 211ff212..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_032.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_032.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_032.imageset/yumi_anchorLoading_032.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_032.imageset/yumi_anchorLoading_032.png deleted file mode 100644 index 21d1693c..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_032.imageset/yumi_anchorLoading_032.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_033.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_033.imageset/Contents.json deleted file mode 100644 index 7967de02..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_033.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_033.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_033.imageset/yumi_anchorLoading_033.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_033.imageset/yumi_anchorLoading_033.png deleted file mode 100644 index a74d8f5d..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_033.imageset/yumi_anchorLoading_033.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_034.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_034.imageset/Contents.json deleted file mode 100644 index 3160446e..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_034.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_034.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_034.imageset/yumi_anchorLoading_034.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_034.imageset/yumi_anchorLoading_034.png deleted file mode 100644 index db7952ba..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_034.imageset/yumi_anchorLoading_034.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_035.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_035.imageset/Contents.json deleted file mode 100644 index c67441ac..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_035.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_035.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_035.imageset/yumi_anchorLoading_035.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_035.imageset/yumi_anchorLoading_035.png deleted file mode 100644 index 0a1d34ea..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_035.imageset/yumi_anchorLoading_035.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_036.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_036.imageset/Contents.json deleted file mode 100644 index 39789fc9..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_036.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_036.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_036.imageset/yumi_anchorLoading_036.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_036.imageset/yumi_anchorLoading_036.png deleted file mode 100644 index 8ea28cc7..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_036.imageset/yumi_anchorLoading_036.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_037.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_037.imageset/Contents.json deleted file mode 100644 index b5a669fd..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_037.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_037.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_037.imageset/yumi_anchorLoading_037.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_037.imageset/yumi_anchorLoading_037.png deleted file mode 100644 index 09275e10..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_037.imageset/yumi_anchorLoading_037.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_038.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_038.imageset/Contents.json deleted file mode 100644 index f833cd7c..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_038.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_038.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_038.imageset/yumi_anchorLoading_038.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_038.imageset/yumi_anchorLoading_038.png deleted file mode 100644 index 79fe1281..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_038.imageset/yumi_anchorLoading_038.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_039.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_039.imageset/Contents.json deleted file mode 100644 index 1eddce8e..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_039.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_039.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_039.imageset/yumi_anchorLoading_039.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_039.imageset/yumi_anchorLoading_039.png deleted file mode 100644 index cbcf388d..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_039.imageset/yumi_anchorLoading_039.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_040.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_040.imageset/Contents.json deleted file mode 100644 index 4a33c38a..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_040.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_040.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_040.imageset/yumi_anchorLoading_040.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_040.imageset/yumi_anchorLoading_040.png deleted file mode 100644 index b08a5ece..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_040.imageset/yumi_anchorLoading_040.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_041.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_041.imageset/Contents.json deleted file mode 100644 index 6dd03c25..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_041.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_041.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_041.imageset/yumi_anchorLoading_041.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_041.imageset/yumi_anchorLoading_041.png deleted file mode 100644 index 28a71ba3..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_041.imageset/yumi_anchorLoading_041.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_042.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_042.imageset/Contents.json deleted file mode 100644 index 6412b297..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_042.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_042.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_042.imageset/yumi_anchorLoading_042.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_042.imageset/yumi_anchorLoading_042.png deleted file mode 100644 index 22824db7..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_042.imageset/yumi_anchorLoading_042.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_043.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_043.imageset/Contents.json deleted file mode 100644 index e1e53ef0..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_043.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_043.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_043.imageset/yumi_anchorLoading_043.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_043.imageset/yumi_anchorLoading_043.png deleted file mode 100644 index 51839364..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_043.imageset/yumi_anchorLoading_043.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_044.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_044.imageset/Contents.json deleted file mode 100644 index 05a32063..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_044.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_044.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_044.imageset/yumi_anchorLoading_044.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_044.imageset/yumi_anchorLoading_044.png deleted file mode 100644 index f94612ea..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_044.imageset/yumi_anchorLoading_044.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_045.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_045.imageset/Contents.json deleted file mode 100644 index b56b011d..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_045.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_045.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_045.imageset/yumi_anchorLoading_045.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_045.imageset/yumi_anchorLoading_045.png deleted file mode 100644 index e6973fd8..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_045.imageset/yumi_anchorLoading_045.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_046.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_046.imageset/Contents.json deleted file mode 100644 index ebd2be4b..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_046.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_046.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_046.imageset/yumi_anchorLoading_046.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_046.imageset/yumi_anchorLoading_046.png deleted file mode 100644 index a1951214..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_046.imageset/yumi_anchorLoading_046.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_047.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_047.imageset/Contents.json deleted file mode 100644 index 0746b34f..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_047.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_anchorLoading_047.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_047.imageset/yumi_anchorLoading_047.png b/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_047.imageset/yumi_anchorLoading_047.png deleted file mode 100644 index b022cbe5..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/Loading/yumi_anchorLoading_047.imageset/yumi_anchorLoading_047.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_Task_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_Task_bg.imageset/Contents.json new file mode 100644 index 00000000..c7499da8 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_Task_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchor_fansTeam_Task_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchor_fansTeam_Task_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_Task_bg.imageset/anchor_fansTeam_Task_bg@2x.png b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_Task_bg.imageset/anchor_fansTeam_Task_bg@2x.png new file mode 100644 index 00000000..f4f1bb75 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_Task_bg.imageset/anchor_fansTeam_Task_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_Task_bg.imageset/anchor_fansTeam_Task_bg@3x.png b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_Task_bg.imageset/anchor_fansTeam_Task_bg@3x.png new file mode 100644 index 00000000..7161fde3 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_Task_bg.imageset/anchor_fansTeam_Task_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_entrance_hadOpen.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_entrance_hadOpen.imageset/Contents.json new file mode 100644 index 00000000..f9eac52b --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_entrance_hadOpen.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchor_fansTeam_entrance_hadOpen@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchor_fansTeam_entrance_hadOpen@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_entrance_hadOpen.imageset/anchor_fansTeam_entrance_hadOpen@2x.png b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_entrance_hadOpen.imageset/anchor_fansTeam_entrance_hadOpen@2x.png new file mode 100644 index 00000000..5f1a423c Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_entrance_hadOpen.imageset/anchor_fansTeam_entrance_hadOpen@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_entrance_hadOpen.imageset/anchor_fansTeam_entrance_hadOpen@3x.png b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_entrance_hadOpen.imageset/anchor_fansTeam_entrance_hadOpen@3x.png new file mode 100644 index 00000000..ad8f274f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_entrance_hadOpen.imageset/anchor_fansTeam_entrance_hadOpen@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_entrance_icon.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_entrance_icon.imageset/Contents.json new file mode 100644 index 00000000..5d30de44 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_entrance_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchor_fansTeam_entrance_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchor_fansTeam_entrance_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_entrance_icon.imageset/anchor_fansTeam_entrance_icon@2x.png b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_entrance_icon.imageset/anchor_fansTeam_entrance_icon@2x.png new file mode 100644 index 00000000..d6ed9250 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_entrance_icon.imageset/anchor_fansTeam_entrance_icon@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_entrance_icon.imageset/anchor_fansTeam_entrance_icon@3x.png b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_entrance_icon.imageset/anchor_fansTeam_entrance_icon@3x.png new file mode 100644 index 00000000..a3a18bca Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_entrance_icon.imageset/anchor_fansTeam_entrance_icon@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_help.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_help.imageset/Contents.json new file mode 100644 index 00000000..98be99a7 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_help.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchor_fansTeam_help@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchor_fansTeam_help@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_help.imageset/anchor_fansTeam_help@2x.png b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_help.imageset/anchor_fansTeam_help@2x.png new file mode 100644 index 00000000..c1417e12 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_help.imageset/anchor_fansTeam_help@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_help.imageset/anchor_fansTeam_help@3x.png b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_help.imageset/anchor_fansTeam_help@3x.png new file mode 100644 index 00000000..0b3fbe4a Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_help.imageset/anchor_fansTeam_help@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_more.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_more.imageset/Contents.json new file mode 100644 index 00000000..da8e80ae --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_more.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchor_fansTeam_more@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchor_fansTeam_more@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_more.imageset/anchor_fansTeam_more@2x.png b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_more.imageset/anchor_fansTeam_more@2x.png new file mode 100644 index 00000000..a987d664 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_more.imageset/anchor_fansTeam_more@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_more.imageset/anchor_fansTeam_more@3x.png b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_more.imageset/anchor_fansTeam_more@3x.png new file mode 100644 index 00000000..d141e034 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_more.imageset/anchor_fansTeam_more@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_nameplate.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_nameplate.imageset/Contents.json new file mode 100644 index 00000000..748da108 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_nameplate.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchor_fansTeam_nameplate@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchor_fansTeam_nameplate@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_nameplate.imageset/anchor_fansTeam_nameplate@2x.png b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_nameplate.imageset/anchor_fansTeam_nameplate@2x.png new file mode 100644 index 00000000..a805e7b5 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_nameplate.imageset/anchor_fansTeam_nameplate@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_nameplate.imageset/anchor_fansTeam_nameplate@3x.png b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_nameplate.imageset/anchor_fansTeam_nameplate@3x.png new file mode 100644 index 00000000..5aebd7d8 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_nameplate.imageset/anchor_fansTeam_nameplate@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_rank.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_rank.imageset/Contents.json new file mode 100644 index 00000000..2cbf1e42 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_rank.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchor_fansTeam_rank@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchor_fansTeam_rank@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_rank.imageset/anchor_fansTeam_rank@2x.png b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_rank.imageset/anchor_fansTeam_rank@2x.png new file mode 100644 index 00000000..996408a4 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_rank.imageset/anchor_fansTeam_rank@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_rank.imageset/anchor_fansTeam_rank@3x.png b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_rank.imageset/anchor_fansTeam_rank@3x.png new file mode 100644 index 00000000..341c657b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_rank.imageset/anchor_fansTeam_rank@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_ruleBg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_ruleBg.imageset/Contents.json new file mode 100644 index 00000000..82bde674 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_ruleBg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchor_fansTeam_ruleBg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchor_fansTeam_ruleBg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_ruleBg.imageset/anchor_fansTeam_ruleBg@2x.png b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_ruleBg.imageset/anchor_fansTeam_ruleBg@2x.png new file mode 100644 index 00000000..3385275e Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_ruleBg.imageset/anchor_fansTeam_ruleBg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_ruleBg.imageset/anchor_fansTeam_ruleBg@3x.png b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_ruleBg.imageset/anchor_fansTeam_ruleBg@3x.png new file mode 100644 index 00000000..c12a14f3 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_ruleBg.imageset/anchor_fansTeam_ruleBg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_task.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_task.imageset/Contents.json new file mode 100644 index 00000000..739feb4e --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_task.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchor_fansTeam_task@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchor_fansTeam_task@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_task.imageset/anchor_fansTeam_task@2x.png b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_task.imageset/anchor_fansTeam_task@2x.png new file mode 100644 index 00000000..a2ce4b27 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_task.imageset/anchor_fansTeam_task@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_task.imageset/anchor_fansTeam_task@3x.png b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_task.imageset/anchor_fansTeam_task@3x.png new file mode 100644 index 00000000..5d670ce0 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/anchor_fansTeam_task.imageset/anchor_fansTeam_task@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_hourRank_btn.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/anchor_hourRank_btn.imageset/Contents.json new file mode 100644 index 00000000..bef8ce16 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/anchor_hourRank_btn.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchor_hourRank_btn@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchor_hourRank_btn@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_hourRank_btn.imageset/anchor_hourRank_btn@2x.png b/YuMi/Assets.xcassets/yna/Anchor/anchor_hourRank_btn.imageset/anchor_hourRank_btn@2x.png new file mode 100644 index 00000000..b1f77f43 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/anchor_hourRank_btn.imageset/anchor_hourRank_btn@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_hourRank_btn.imageset/anchor_hourRank_btn@3x.png b/YuMi/Assets.xcassets/yna/Anchor/anchor_hourRank_btn.imageset/anchor_hourRank_btn@3x.png new file mode 100644 index 00000000..71115079 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/anchor_hourRank_btn.imageset/anchor_hourRank_btn@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_hour_rank_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/anchor_hour_rank_bg.imageset/Contents.json new file mode 100644 index 00000000..e19decc3 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/anchor_hour_rank_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchor_hour_rank_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchor_hour_rank_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_hour_rank_bg.imageset/anchor_hour_rank_bg@2x.png b/YuMi/Assets.xcassets/yna/Anchor/anchor_hour_rank_bg.imageset/anchor_hour_rank_bg@2x.png new file mode 100644 index 00000000..69d90178 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/anchor_hour_rank_bg.imageset/anchor_hour_rank_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_hour_rank_bg.imageset/anchor_hour_rank_bg@3x.png b/YuMi/Assets.xcassets/yna/Anchor/anchor_hour_rank_bg.imageset/anchor_hour_rank_bg@3x.png new file mode 100644 index 00000000..9f84ecb2 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/anchor_hour_rank_bg.imageset/anchor_hour_rank_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_hour_rank_icon.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/anchor_hour_rank_icon.imageset/Contents.json new file mode 100644 index 00000000..e6cd08c7 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/anchor_hour_rank_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchor_hour_rank_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchor_hour_rank_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_hour_rank_icon.imageset/anchor_hour_rank_icon@2x.png b/YuMi/Assets.xcassets/yna/Anchor/anchor_hour_rank_icon.imageset/anchor_hour_rank_icon@2x.png new file mode 100644 index 00000000..1d816c66 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/anchor_hour_rank_icon.imageset/anchor_hour_rank_icon@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_hour_rank_icon.imageset/anchor_hour_rank_icon@3x.png b/YuMi/Assets.xcassets/yna/Anchor/anchor_hour_rank_icon.imageset/anchor_hour_rank_icon@3x.png new file mode 100644 index 00000000..c9483d89 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/anchor_hour_rank_icon.imageset/anchor_hour_rank_icon@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_scroll_tip.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/anchor_scroll_tip.imageset/Contents.json new file mode 100644 index 00000000..37cb134d --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/anchor_scroll_tip.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "anchor_scroll_tip@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "anchor_scroll_tip@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_scroll_tip.imageset/anchor_scroll_tip@2x.png b/YuMi/Assets.xcassets/yna/Anchor/anchor_scroll_tip.imageset/anchor_scroll_tip@2x.png new file mode 100644 index 00000000..93edc517 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/anchor_scroll_tip.imageset/anchor_scroll_tip@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/anchor_scroll_tip.imageset/anchor_scroll_tip@3x.png b/YuMi/Assets.xcassets/yna/Anchor/anchor_scroll_tip.imageset/anchor_scroll_tip@3x.png new file mode 100644 index 00000000..f5b4ce6c Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/anchor_scroll_tip.imageset/anchor_scroll_tip@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/join_anchor_fansTeam_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/join_anchor_fansTeam_bg.imageset/Contents.json new file mode 100644 index 00000000..e7a25d2e --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Anchor/join_anchor_fansTeam_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "join_anchor_fansTeam_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "join_anchor_fansTeam_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Anchor/join_anchor_fansTeam_bg.imageset/join_anchor_fansTeam_bg@2x.png b/YuMi/Assets.xcassets/yna/Anchor/join_anchor_fansTeam_bg.imageset/join_anchor_fansTeam_bg@2x.png new file mode 100644 index 00000000..37171297 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/join_anchor_fansTeam_bg.imageset/join_anchor_fansTeam_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/join_anchor_fansTeam_bg.imageset/join_anchor_fansTeam_bg@3x.png b/YuMi/Assets.xcassets/yna/Anchor/join_anchor_fansTeam_bg.imageset/join_anchor_fansTeam_bg@3x.png new file mode 100644 index 00000000..6335211f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Anchor/join_anchor_fansTeam_bg.imageset/join_anchor_fansTeam_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_Task_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_Task_background.imageset/Contents.json deleted file mode 100644 index ac18469e..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_Task_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchor_fansTeam_Task_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchor_fansTeam_Task_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_Task_background.imageset/yumi_anchor_fansTeam_Task_background@2x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_Task_background.imageset/yumi_anchor_fansTeam_Task_background@2x.png deleted file mode 100644 index 46369943..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_Task_background.imageset/yumi_anchor_fansTeam_Task_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_Task_background.imageset/yumi_anchor_fansTeam_Task_background@3x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_Task_background.imageset/yumi_anchor_fansTeam_Task_background@3x.png deleted file mode 100644 index 50505d50..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_Task_background.imageset/yumi_anchor_fansTeam_Task_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_entrance_hadOpen.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_entrance_hadOpen.imageset/Contents.json deleted file mode 100644 index 612b8601..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_entrance_hadOpen.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchor_fansTeam_entrance_hadOpen@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchor_fansTeam_entrance_hadOpen@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_entrance_hadOpen.imageset/yumi_anchor_fansTeam_entrance_hadOpen@2x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_entrance_hadOpen.imageset/yumi_anchor_fansTeam_entrance_hadOpen@2x.png deleted file mode 100644 index e32f27f3..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_entrance_hadOpen.imageset/yumi_anchor_fansTeam_entrance_hadOpen@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_entrance_hadOpen.imageset/yumi_anchor_fansTeam_entrance_hadOpen@3x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_entrance_hadOpen.imageset/yumi_anchor_fansTeam_entrance_hadOpen@3x.png deleted file mode 100644 index 5572fa10..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_entrance_hadOpen.imageset/yumi_anchor_fansTeam_entrance_hadOpen@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_entrance_pic.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_entrance_pic.imageset/Contents.json deleted file mode 100644 index a0acc3d3..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_entrance_pic.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchor_fansTeam_entrance_pic@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchor_fansTeam_entrance_pic@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_entrance_pic.imageset/yumi_anchor_fansTeam_entrance_pic@2x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_entrance_pic.imageset/yumi_anchor_fansTeam_entrance_pic@2x.png deleted file mode 100644 index aff310a4..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_entrance_pic.imageset/yumi_anchor_fansTeam_entrance_pic@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_entrance_pic.imageset/yumi_anchor_fansTeam_entrance_pic@3x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_entrance_pic.imageset/yumi_anchor_fansTeam_entrance_pic@3x.png deleted file mode 100644 index c81bde5e..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_entrance_pic.imageset/yumi_anchor_fansTeam_entrance_pic@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_help.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_help.imageset/Contents.json deleted file mode 100644 index 66c6f307..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_help.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchor_fansTeam_help@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchor_fansTeam_help@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_help.imageset/yumi_anchor_fansTeam_help@2x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_help.imageset/yumi_anchor_fansTeam_help@2x.png deleted file mode 100644 index 9c200ad0..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_help.imageset/yumi_anchor_fansTeam_help@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_help.imageset/yumi_anchor_fansTeam_help@3x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_help.imageset/yumi_anchor_fansTeam_help@3x.png deleted file mode 100644 index 5d43b82f..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_help.imageset/yumi_anchor_fansTeam_help@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_more.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_more.imageset/Contents.json deleted file mode 100644 index a6235f1b..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_more.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchor_fansTeam_more@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchor_fansTeam_more@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_more.imageset/yumi_anchor_fansTeam_more@2x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_more.imageset/yumi_anchor_fansTeam_more@2x.png deleted file mode 100644 index 26ffdded..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_more.imageset/yumi_anchor_fansTeam_more@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_more.imageset/yumi_anchor_fansTeam_more@3x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_more.imageset/yumi_anchor_fansTeam_more@3x.png deleted file mode 100644 index 879a8a2d..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_more.imageset/yumi_anchor_fansTeam_more@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_nameplate.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_nameplate.imageset/Contents.json deleted file mode 100644 index 2d976bab..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_nameplate.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchor_fansTeam_nameplate@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchor_fansTeam_nameplate@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_nameplate.imageset/yumi_anchor_fansTeam_nameplate@2x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_nameplate.imageset/yumi_anchor_fansTeam_nameplate@2x.png deleted file mode 100644 index dd70e6ef..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_nameplate.imageset/yumi_anchor_fansTeam_nameplate@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_nameplate.imageset/yumi_anchor_fansTeam_nameplate@3x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_nameplate.imageset/yumi_anchor_fansTeam_nameplate@3x.png deleted file mode 100644 index f66857f7..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_nameplate.imageset/yumi_anchor_fansTeam_nameplate@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_rank.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_rank.imageset/Contents.json deleted file mode 100644 index 6bbe7ff0..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_rank.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchor_fansTeam_rank@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchor_fansTeam_rank@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_rank.imageset/yumi_anchor_fansTeam_rank@2x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_rank.imageset/yumi_anchor_fansTeam_rank@2x.png deleted file mode 100644 index 8bd6bbe6..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_rank.imageset/yumi_anchor_fansTeam_rank@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_rank.imageset/yumi_anchor_fansTeam_rank@3x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_rank.imageset/yumi_anchor_fansTeam_rank@3x.png deleted file mode 100644 index a939f457..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_rank.imageset/yumi_anchor_fansTeam_rank@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_ruleBg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_ruleBg.imageset/Contents.json deleted file mode 100644 index fabad48d..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_ruleBg.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchor_fansTeam_ruleBg@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchor_fansTeam_ruleBg@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_ruleBg.imageset/yumi_anchor_fansTeam_ruleBg@2x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_ruleBg.imageset/yumi_anchor_fansTeam_ruleBg@2x.png deleted file mode 100644 index 21440b55..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_ruleBg.imageset/yumi_anchor_fansTeam_ruleBg@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_ruleBg.imageset/yumi_anchor_fansTeam_ruleBg@3x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_ruleBg.imageset/yumi_anchor_fansTeam_ruleBg@3x.png deleted file mode 100644 index e4c8056c..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_ruleBg.imageset/yumi_anchor_fansTeam_ruleBg@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_task.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_task.imageset/Contents.json deleted file mode 100644 index 06524634..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_task.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchor_fansTeam_task@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchor_fansTeam_task@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_task.imageset/yumi_anchor_fansTeam_task@2x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_task.imageset/yumi_anchor_fansTeam_task@2x.png deleted file mode 100644 index 1f2b2b1b..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_task.imageset/yumi_anchor_fansTeam_task@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_task.imageset/yumi_anchor_fansTeam_task@3x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_task.imageset/yumi_anchor_fansTeam_task@3x.png deleted file mode 100644 index 678312cb..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_fansTeam_task.imageset/yumi_anchor_fansTeam_task@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hourRank_btn.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hourRank_btn.imageset/Contents.json deleted file mode 100644 index 4325c6a4..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hourRank_btn.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchor_hourRank_btn@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchor_hourRank_btn@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hourRank_btn.imageset/yumi_anchor_hourRank_btn@2x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hourRank_btn.imageset/yumi_anchor_hourRank_btn@2x.png deleted file mode 100644 index c473a6f6..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hourRank_btn.imageset/yumi_anchor_hourRank_btn@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hourRank_btn.imageset/yumi_anchor_hourRank_btn@3x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hourRank_btn.imageset/yumi_anchor_hourRank_btn@3x.png deleted file mode 100644 index 50340a80..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hourRank_btn.imageset/yumi_anchor_hourRank_btn@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hour_order_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hour_order_background.imageset/Contents.json deleted file mode 100644 index 5a32cd87..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hour_order_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchor_hour_order_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchor_hour_order_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hour_order_background.imageset/yumi_anchor_hour_order_background@2x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hour_order_background.imageset/yumi_anchor_hour_order_background@2x.png deleted file mode 100644 index 84bb25cc..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hour_order_background.imageset/yumi_anchor_hour_order_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hour_order_background.imageset/yumi_anchor_hour_order_background@3x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hour_order_background.imageset/yumi_anchor_hour_order_background@3x.png deleted file mode 100644 index a5c320d7..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hour_order_background.imageset/yumi_anchor_hour_order_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hour_order_pic.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hour_order_pic.imageset/Contents.json deleted file mode 100644 index 32c985b4..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hour_order_pic.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchor_hour_order_pic@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchor_hour_order_pic@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hour_order_pic.imageset/yumi_anchor_hour_order_pic@2x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hour_order_pic.imageset/yumi_anchor_hour_order_pic@2x.png deleted file mode 100644 index e737b291..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hour_order_pic.imageset/yumi_anchor_hour_order_pic@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hour_order_pic.imageset/yumi_anchor_hour_order_pic@3x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hour_order_pic.imageset/yumi_anchor_hour_order_pic@3x.png deleted file mode 100644 index 502446d2..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_hour_order_pic.imageset/yumi_anchor_hour_order_pic@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_scroll_tip.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_scroll_tip.imageset/Contents.json deleted file mode 100644 index 591977d5..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_scroll_tip.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_anchor_scroll_tip@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_anchor_scroll_tip@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_scroll_tip.imageset/yumi_anchor_scroll_tip@2x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_scroll_tip.imageset/yumi_anchor_scroll_tip@2x.png deleted file mode 100644 index d09d7747..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_scroll_tip.imageset/yumi_anchor_scroll_tip@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_scroll_tip.imageset/yumi_anchor_scroll_tip@3x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_scroll_tip.imageset/yumi_anchor_scroll_tip@3x.png deleted file mode 100644 index 9bf3139d..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_anchor_scroll_tip.imageset/yumi_anchor_scroll_tip@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_join_anchor_fansTeam_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Anchor/yumi_join_anchor_fansTeam_background.imageset/Contents.json deleted file mode 100644 index d0d27499..00000000 --- a/YuMi/Assets.xcassets/yna/Anchor/yumi_join_anchor_fansTeam_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_join_anchor_fansTeam_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_join_anchor_fansTeam_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_join_anchor_fansTeam_background.imageset/yumi_join_anchor_fansTeam_background@2x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_join_anchor_fansTeam_background.imageset/yumi_join_anchor_fansTeam_background@2x.png deleted file mode 100644 index 67ec603a..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_join_anchor_fansTeam_background.imageset/yumi_join_anchor_fansTeam_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Anchor/yumi_join_anchor_fansTeam_background.imageset/yumi_join_anchor_fansTeam_background@3x.png b/YuMi/Assets.xcassets/yna/Anchor/yumi_join_anchor_fansTeam_background.imageset/yumi_join_anchor_fansTeam_background@3x.png deleted file mode 100644 index 512bd7eb..00000000 Binary files a/YuMi/Assets.xcassets/yna/Anchor/yumi_join_anchor_fansTeam_background.imageset/yumi_join_anchor_fansTeam_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/yna/BackMusic/Contents.json +++ b/YuMi/Assets.xcassets/yna/BackMusic/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_nav_add.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_nav_add.imageset/Contents.json new file mode 100644 index 00000000..1c380019 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_nav_add.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_music_library_nav_add@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_music_library_nav_add@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_nav_add.imageset/room_music_library_nav_add@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_nav_add.imageset/room_music_library_nav_add@2x.png new file mode 100644 index 00000000..c702c045 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_nav_add.imageset/room_music_library_nav_add@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_nav_add.imageset/room_music_library_nav_add@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_nav_add.imageset/room_music_library_nav_add@3x.png new file mode 100644 index 00000000..f53ed7bc Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_nav_add.imageset/room_music_library_nav_add@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_pause.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_pause.imageset/Contents.json new file mode 100644 index 00000000..e9866ae6 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_pause.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_music_library_pause@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_music_library_pause@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_pause.imageset/room_music_library_pause@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_pause.imageset/room_music_library_pause@2x.png new file mode 100644 index 00000000..2bea0aae Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_pause.imageset/room_music_library_pause@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_pause.imageset/room_music_library_pause@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_pause.imageset/room_music_library_pause@3x.png new file mode 100644 index 00000000..af966d9d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_pause.imageset/room_music_library_pause@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_play.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_play.imageset/Contents.json new file mode 100644 index 00000000..c987db3a --- /dev/null +++ b/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_play.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_music_library_play@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_music_library_play@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_play.imageset/room_music_library_play@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_play.imageset/room_music_library_play@2x.png new file mode 100644 index 00000000..6a602a15 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_play.imageset/room_music_library_play@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_play.imageset/room_music_library_play@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_play.imageset/room_music_library_play@3x.png new file mode 100644 index 00000000..3c3775f8 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_play.imageset/room_music_library_play@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_volum_setting.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_volum_setting.imageset/Contents.json new file mode 100644 index 00000000..1e85b8aa --- /dev/null +++ b/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_volum_setting.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_music_library_volum_setting@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_music_library_volum_setting@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_volum_setting.imageset/room_music_library_volum_setting@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_volum_setting.imageset/room_music_library_volum_setting@2x.png new file mode 100644 index 00000000..da022a93 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_volum_setting.imageset/room_music_library_volum_setting@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_volum_setting.imageset/room_music_library_volum_setting@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_volum_setting.imageset/room_music_library_volum_setting@3x.png new file mode 100644 index 00000000..f40c9275 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_library_volum_setting.imageset/room_music_library_volum_setting@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_player_enter.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/room_music_player_enter.imageset/Contents.json new file mode 100644 index 00000000..c1e67cb3 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/BackMusic/room_music_player_enter.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_music_player_enter@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_music_player_enter@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_player_enter.imageset/room_music_player_enter@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_player_enter.imageset/room_music_player_enter@2x.png new file mode 100644 index 00000000..af5b4cd4 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_player_enter.imageset/room_music_player_enter@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_player_enter.imageset/room_music_player_enter@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_player_enter.imageset/room_music_player_enter@3x.png new file mode 100644 index 00000000..a82a6806 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_player_enter.imageset/room_music_player_enter@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_more.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_more.imageset/Contents.json new file mode 100644 index 00000000..ef916133 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_more.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_music_small_player_more@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_more.imageset/room_music_small_player_more@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_more.imageset/room_music_small_player_more@3x.png new file mode 100644 index 00000000..0a5e3320 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_more.imageset/room_music_small_player_more@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_next.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_next.imageset/Contents.json new file mode 100644 index 00000000..d0841c3e --- /dev/null +++ b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_next.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_music_small_player_next@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_music_small_player_next@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_next.imageset/room_music_small_player_next@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_next.imageset/room_music_small_player_next@2x.png new file mode 100644 index 00000000..88ca2952 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_next.imageset/room_music_small_player_next@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_next.imageset/room_music_small_player_next@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_next.imageset/room_music_small_player_next@3x.png new file mode 100644 index 00000000..203323a6 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_next.imageset/room_music_small_player_next@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_order.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_order.imageset/Contents.json new file mode 100644 index 00000000..50dd9fcf --- /dev/null +++ b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_order.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_music_small_player_order@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_music_small_player_order@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_order.imageset/room_music_small_player_order@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_order.imageset/room_music_small_player_order@2x.png new file mode 100644 index 00000000..3601956a Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_order.imageset/room_music_small_player_order@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_order.imageset/room_music_small_player_order@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_order.imageset/room_music_small_player_order@3x.png new file mode 100644 index 00000000..8eef1934 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_order.imageset/room_music_small_player_order@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_pause.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_pause.imageset/Contents.json new file mode 100644 index 00000000..2e35fde7 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_pause.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_music_small_player_pause@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_music_small_player_pause@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_pause.imageset/room_music_small_player_pause@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_pause.imageset/room_music_small_player_pause@2x.png new file mode 100644 index 00000000..000544a1 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_pause.imageset/room_music_small_player_pause@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_pause.imageset/room_music_small_player_pause@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_pause.imageset/room_music_small_player_pause@3x.png new file mode 100644 index 00000000..1bc5e172 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_pause.imageset/room_music_small_player_pause@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_play.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_play.imageset/Contents.json new file mode 100644 index 00000000..df7b6da0 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_play.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_music_small_player_play@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_music_small_player_play@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_play.imageset/room_music_small_player_play@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_play.imageset/room_music_small_player_play@2x.png new file mode 100644 index 00000000..16352d68 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_play.imageset/room_music_small_player_play@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_play.imageset/room_music_small_player_play@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_play.imageset/room_music_small_player_play@3x.png new file mode 100644 index 00000000..b6027b54 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_play.imageset/room_music_small_player_play@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_single.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_single.imageset/Contents.json new file mode 100644 index 00000000..538bab18 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_single.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_music_small_player_single@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_music_small_player_single@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_single.imageset/room_music_small_player_single@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_single.imageset/room_music_small_player_single@2x.png new file mode 100644 index 00000000..e5571e58 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_single.imageset/room_music_small_player_single@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_single.imageset/room_music_small_player_single@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_single.imageset/room_music_small_player_single@3x.png new file mode 100644 index 00000000..86a89f96 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_single.imageset/room_music_small_player_single@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_voice.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_voice.imageset/Contents.json new file mode 100644 index 00000000..839db885 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_voice.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_music_small_player_voice@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_music_small_player_voice@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_voice.imageset/room_music_small_player_voice@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_voice.imageset/room_music_small_player_voice@2x.png new file mode 100644 index 00000000..9e802b48 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_voice.imageset/room_music_small_player_voice@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_voice.imageset/room_music_small_player_voice@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_voice.imageset/room_music_small_player_voice@3x.png new file mode 100644 index 00000000..ce616912 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_voice.imageset/room_music_small_player_voice@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_white_dot.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_white_dot.imageset/Contents.json new file mode 100644 index 00000000..ebf19127 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_white_dot.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_music_small_player_white_dot@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_music_small_player_white_dot@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_white_dot.imageset/room_music_small_player_white_dot@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_white_dot.imageset/room_music_small_player_white_dot@2x.png new file mode 100644 index 00000000..e85c3533 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_white_dot.imageset/room_music_small_player_white_dot@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_white_dot.imageset/room_music_small_player_white_dot@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_white_dot.imageset/room_music_small_player_white_dot@3x.png new file mode 100644 index 00000000..8ce56d71 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_small_player_white_dot.imageset/room_music_small_player_white_dot@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_transfer_computer.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/room_music_transfer_computer.imageset/Contents.json new file mode 100644 index 00000000..af5978ac --- /dev/null +++ b/YuMi/Assets.xcassets/yna/BackMusic/room_music_transfer_computer.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_music_transfer_computer@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_music_transfer_computer@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_transfer_computer.imageset/room_music_transfer_computer@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_transfer_computer.imageset/room_music_transfer_computer@2x.png new file mode 100644 index 00000000..e8fef146 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_transfer_computer.imageset/room_music_transfer_computer@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_transfer_computer.imageset/room_music_transfer_computer@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_transfer_computer.imageset/room_music_transfer_computer@3x.png new file mode 100644 index 00000000..03ae264e Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_transfer_computer.imageset/room_music_transfer_computer@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_transfer_wifi.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/room_music_transfer_wifi.imageset/Contents.json new file mode 100644 index 00000000..e442ae73 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/BackMusic/room_music_transfer_wifi.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_music_transfer_wifi@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_music_transfer_wifi@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_transfer_wifi.imageset/room_music_transfer_wifi@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_transfer_wifi.imageset/room_music_transfer_wifi@2x.png new file mode 100644 index 00000000..c19f3baf Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_transfer_wifi.imageset/room_music_transfer_wifi@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_transfer_wifi.imageset/room_music_transfer_wifi@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_transfer_wifi.imageset/room_music_transfer_wifi@3x.png new file mode 100644 index 00000000..434f95d6 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_transfer_wifi.imageset/room_music_transfer_wifi@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_voice_setting_dot.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/room_music_voice_setting_dot.imageset/Contents.json new file mode 100644 index 00000000..6d1d016f --- /dev/null +++ b/YuMi/Assets.xcassets/yna/BackMusic/room_music_voice_setting_dot.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_music_voice_setting_dot@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_music_voice_setting_dot@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_voice_setting_dot.imageset/room_music_voice_setting_dot@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_voice_setting_dot.imageset/room_music_voice_setting_dot@2x.png new file mode 100644 index 00000000..f7cbf230 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_voice_setting_dot.imageset/room_music_voice_setting_dot@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/room_music_voice_setting_dot.imageset/room_music_voice_setting_dot@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/room_music_voice_setting_dot.imageset/room_music_voice_setting_dot@3x.png new file mode 100644 index 00000000..a595dfb7 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/BackMusic/room_music_voice_setting_dot.imageset/room_music_voice_setting_dot@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_pause.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_pause.imageset/Contents.json deleted file mode 100644 index ec12ace5..00000000 --- a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_pause.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_musimage_library_pause@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_musimage_library_pause@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_pause.imageset/yumi_scope_musimage_library_pause@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_pause.imageset/yumi_scope_musimage_library_pause@2x.png deleted file mode 100644 index 0241c31b..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_pause.imageset/yumi_scope_musimage_library_pause@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_pause.imageset/yumi_scope_musimage_library_pause@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_pause.imageset/yumi_scope_musimage_library_pause@3x.png deleted file mode 100644 index 3dadb4c8..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_pause.imageset/yumi_scope_musimage_library_pause@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_play.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_play.imageset/Contents.json deleted file mode 100644 index 63ac76a5..00000000 --- a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_play.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_musimage_library_play@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_musimage_library_play@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_play.imageset/yumi_scope_musimage_library_play@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_play.imageset/yumi_scope_musimage_library_play@2x.png deleted file mode 100644 index efe14778..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_play.imageset/yumi_scope_musimage_library_play@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_play.imageset/yumi_scope_musimage_library_play@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_play.imageset/yumi_scope_musimage_library_play@3x.png deleted file mode 100644 index 91f3b4d1..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_play.imageset/yumi_scope_musimage_library_play@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_title_add.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_title_add.imageset/Contents.json deleted file mode 100644 index 2fc0e2bb..00000000 --- a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_title_add.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_musimage_library_title_add@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_musimage_library_title_add@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_title_add.imageset/yumi_scope_musimage_library_title_add@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_title_add.imageset/yumi_scope_musimage_library_title_add@2x.png deleted file mode 100644 index ef7dadfb..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_title_add.imageset/yumi_scope_musimage_library_title_add@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_title_add.imageset/yumi_scope_musimage_library_title_add@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_title_add.imageset/yumi_scope_musimage_library_title_add@3x.png deleted file mode 100644 index 1defccfc..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_title_add.imageset/yumi_scope_musimage_library_title_add@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_volum_setting.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_volum_setting.imageset/Contents.json deleted file mode 100644 index 767c77d8..00000000 --- a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_volum_setting.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_musimage_library_volum_setting@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_musimage_library_volum_setting@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_volum_setting.imageset/yumi_scope_musimage_library_volum_setting@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_volum_setting.imageset/yumi_scope_musimage_library_volum_setting@2x.png deleted file mode 100644 index 6770aaff..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_volum_setting.imageset/yumi_scope_musimage_library_volum_setting@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_volum_setting.imageset/yumi_scope_musimage_library_volum_setting@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_volum_setting.imageset/yumi_scope_musimage_library_volum_setting@3x.png deleted file mode 100644 index 3163fab1..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_library_volum_setting.imageset/yumi_scope_musimage_library_volum_setting@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_player_enter.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_player_enter.imageset/Contents.json deleted file mode 100644 index 022e7209..00000000 --- a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_player_enter.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_musimage_player_enter@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_musimage_player_enter@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_player_enter.imageset/yumi_scope_musimage_player_enter@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_player_enter.imageset/yumi_scope_musimage_player_enter@2x.png deleted file mode 100644 index d3a47ef9..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_player_enter.imageset/yumi_scope_musimage_player_enter@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_player_enter.imageset/yumi_scope_musimage_player_enter@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_player_enter.imageset/yumi_scope_musimage_player_enter@3x.png deleted file mode 100644 index 5d440022..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_player_enter.imageset/yumi_scope_musimage_player_enter@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_more.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_more.imageset/Contents.json deleted file mode 100644 index e5b9a646..00000000 --- a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_more.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_musimage_small_player_more@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_more.imageset/yumi_scope_musimage_small_player_more@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_more.imageset/yumi_scope_musimage_small_player_more@3x.png deleted file mode 100644 index 0bc56689..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_more.imageset/yumi_scope_musimage_small_player_more@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_next.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_next.imageset/Contents.json deleted file mode 100644 index 1f924a1d..00000000 --- a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_next.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_musimage_small_player_next@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_musimage_small_player_next@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_next.imageset/yumi_scope_musimage_small_player_next@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_next.imageset/yumi_scope_musimage_small_player_next@2x.png deleted file mode 100644 index 165a63a6..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_next.imageset/yumi_scope_musimage_small_player_next@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_next.imageset/yumi_scope_musimage_small_player_next@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_next.imageset/yumi_scope_musimage_small_player_next@3x.png deleted file mode 100644 index 87c0d95f..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_next.imageset/yumi_scope_musimage_small_player_next@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_order.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_order.imageset/Contents.json deleted file mode 100644 index 293464fc..00000000 --- a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_order.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_musimage_small_player_order@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_musimage_small_player_order@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_order.imageset/yumi_scope_musimage_small_player_order@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_order.imageset/yumi_scope_musimage_small_player_order@2x.png deleted file mode 100644 index 66109fc1..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_order.imageset/yumi_scope_musimage_small_player_order@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_order.imageset/yumi_scope_musimage_small_player_order@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_order.imageset/yumi_scope_musimage_small_player_order@3x.png deleted file mode 100644 index 135d4956..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_order.imageset/yumi_scope_musimage_small_player_order@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_pause.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_pause.imageset/Contents.json deleted file mode 100644 index 31250296..00000000 --- a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_pause.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_musimage_small_player_pause@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_musimage_small_player_pause@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_pause.imageset/yumi_scope_musimage_small_player_pause@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_pause.imageset/yumi_scope_musimage_small_player_pause@2x.png deleted file mode 100644 index 5c3db183..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_pause.imageset/yumi_scope_musimage_small_player_pause@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_pause.imageset/yumi_scope_musimage_small_player_pause@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_pause.imageset/yumi_scope_musimage_small_player_pause@3x.png deleted file mode 100644 index c8b0a2d8..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_pause.imageset/yumi_scope_musimage_small_player_pause@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_play.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_play.imageset/Contents.json deleted file mode 100644 index bef46d62..00000000 --- a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_play.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_musimage_small_player_play@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_musimage_small_player_play@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_play.imageset/yumi_scope_musimage_small_player_play@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_play.imageset/yumi_scope_musimage_small_player_play@2x.png deleted file mode 100644 index 01218fc1..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_play.imageset/yumi_scope_musimage_small_player_play@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_play.imageset/yumi_scope_musimage_small_player_play@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_play.imageset/yumi_scope_musimage_small_player_play@3x.png deleted file mode 100644 index 17dde82a..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_play.imageset/yumi_scope_musimage_small_player_play@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_single.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_single.imageset/Contents.json deleted file mode 100644 index 6bc516cb..00000000 --- a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_single.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_musimage_small_player_single@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_musimage_small_player_single@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_single.imageset/yumi_scope_musimage_small_player_single@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_single.imageset/yumi_scope_musimage_small_player_single@2x.png deleted file mode 100644 index c6f04a94..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_single.imageset/yumi_scope_musimage_small_player_single@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_single.imageset/yumi_scope_musimage_small_player_single@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_single.imageset/yumi_scope_musimage_small_player_single@3x.png deleted file mode 100644 index 233d0956..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_single.imageset/yumi_scope_musimage_small_player_single@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_voice.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_voice.imageset/Contents.json deleted file mode 100644 index baca36b4..00000000 --- a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_voice.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_musimage_small_player_voice@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_musimage_small_player_voice@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_voice.imageset/yumi_scope_musimage_small_player_voice@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_voice.imageset/yumi_scope_musimage_small_player_voice@2x.png deleted file mode 100644 index 3e354aa9..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_voice.imageset/yumi_scope_musimage_small_player_voice@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_voice.imageset/yumi_scope_musimage_small_player_voice@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_voice.imageset/yumi_scope_musimage_small_player_voice@3x.png deleted file mode 100644 index 7bccaa58..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_voice.imageset/yumi_scope_musimage_small_player_voice@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_white_dot.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_white_dot.imageset/Contents.json deleted file mode 100644 index f36ac0b7..00000000 --- a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_white_dot.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_musimage_small_player_white_dot@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_musimage_small_player_white_dot@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_white_dot.imageset/yumi_scope_musimage_small_player_white_dot@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_white_dot.imageset/yumi_scope_musimage_small_player_white_dot@2x.png deleted file mode 100644 index 19d718ce..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_white_dot.imageset/yumi_scope_musimage_small_player_white_dot@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_white_dot.imageset/yumi_scope_musimage_small_player_white_dot@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_white_dot.imageset/yumi_scope_musimage_small_player_white_dot@3x.png deleted file mode 100644 index c7c7c048..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_small_player_white_dot.imageset/yumi_scope_musimage_small_player_white_dot@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_transfer_computer.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_transfer_computer.imageset/Contents.json deleted file mode 100644 index 4dffddae..00000000 --- a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_transfer_computer.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_musimage_transfer_computer@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_musimage_transfer_computer@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_transfer_computer.imageset/yumi_scope_musimage_transfer_computer@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_transfer_computer.imageset/yumi_scope_musimage_transfer_computer@2x.png deleted file mode 100644 index eb0be1ea..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_transfer_computer.imageset/yumi_scope_musimage_transfer_computer@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_transfer_computer.imageset/yumi_scope_musimage_transfer_computer@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_transfer_computer.imageset/yumi_scope_musimage_transfer_computer@3x.png deleted file mode 100644 index a51832ca..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_transfer_computer.imageset/yumi_scope_musimage_transfer_computer@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_transfer_wifi.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_transfer_wifi.imageset/Contents.json deleted file mode 100644 index a09b1d1e..00000000 --- a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_transfer_wifi.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_musimage_transfer_wifi@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_musimage_transfer_wifi@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_transfer_wifi.imageset/yumi_scope_musimage_transfer_wifi@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_transfer_wifi.imageset/yumi_scope_musimage_transfer_wifi@2x.png deleted file mode 100644 index 8ab93c44..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_transfer_wifi.imageset/yumi_scope_musimage_transfer_wifi@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_transfer_wifi.imageset/yumi_scope_musimage_transfer_wifi@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_transfer_wifi.imageset/yumi_scope_musimage_transfer_wifi@3x.png deleted file mode 100644 index e51dfa85..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_transfer_wifi.imageset/yumi_scope_musimage_transfer_wifi@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_voice_setting_dot.imageset/Contents.json b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_voice_setting_dot.imageset/Contents.json deleted file mode 100644 index 5794aea3..00000000 --- a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_voice_setting_dot.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_musimage_voice_setting_dot@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_musimage_voice_setting_dot@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_voice_setting_dot.imageset/yumi_scope_musimage_voice_setting_dot@2x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_voice_setting_dot.imageset/yumi_scope_musimage_voice_setting_dot@2x.png deleted file mode 100644 index efaba192..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_voice_setting_dot.imageset/yumi_scope_musimage_voice_setting_dot@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_voice_setting_dot.imageset/yumi_scope_musimage_voice_setting_dot@3x.png b/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_voice_setting_dot.imageset/yumi_scope_musimage_voice_setting_dot@3x.png deleted file mode 100644 index 2d02b5f7..00000000 Binary files a/YuMi/Assets.xcassets/yna/BackMusic/yumi_scope_musimage_voice_setting_dot.imageset/yumi_scope_musimage_voice_setting_dot@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/Contents.json b/YuMi/Assets.xcassets/yna/Broadcast/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/yna/Broadcast/Contents.json +++ b/YuMi/Assets.xcassets/yna/Broadcast/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Fairy/Contents.json b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/Contents.json similarity index 100% rename from YuMi/Assets.xcassets/jm/Fairy/Contents.json rename to YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/Contents.json diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_avatar_board.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_avatar_board.imageset/Contents.json new file mode 100644 index 00000000..fab3fd82 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_avatar_board.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_gift_broadcast_high_avatar_board@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_gift_broadcast_high_avatar_board@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_avatar_board.imageset/room_gift_broadcast_high_avatar_board@2x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_avatar_board.imageset/room_gift_broadcast_high_avatar_board@2x.png new file mode 100644 index 00000000..8334c1f0 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_avatar_board.imageset/room_gift_broadcast_high_avatar_board@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_avatar_board.imageset/room_gift_broadcast_high_avatar_board@3x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_avatar_board.imageset/room_gift_broadcast_high_avatar_board@3x.png new file mode 100644 index 00000000..cac29a03 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_avatar_board.imageset/room_gift_broadcast_high_avatar_board@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_bg.imageset/Contents.json new file mode 100644 index 00000000..1a03cd76 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_bg.imageset/Contents.json @@ -0,0 +1,25 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_gift_broadcast_high_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_gift_broadcast_high_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "localizable" : true + } +} diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_bg.imageset/room_gift_broadcast_high_bg@2x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_bg.imageset/room_gift_broadcast_high_bg@2x.png new file mode 100644 index 00000000..0fe0c07b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_bg.imageset/room_gift_broadcast_high_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_bg.imageset/room_gift_broadcast_high_bg@3x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_bg.imageset/room_gift_broadcast_high_bg@3x.png new file mode 100644 index 00000000..d89679d1 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_bg.imageset/room_gift_broadcast_high_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_close.imageset/Contents.json new file mode 100644 index 00000000..a7c60226 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_close.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_gift_broadcast_high_close@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_gift_broadcast_high_close@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_close.imageset/room_gift_broadcast_high_close@2x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_close.imageset/room_gift_broadcast_high_close@2x.png new file mode 100644 index 00000000..f96c8b3b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_close.imageset/room_gift_broadcast_high_close@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_close.imageset/room_gift_broadcast_high_close@3x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_close.imageset/room_gift_broadcast_high_close@3x.png new file mode 100644 index 00000000..f4c1d438 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_close.imageset/room_gift_broadcast_high_close@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_normal_id_nick_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_normal_id_nick_bg.imageset/Contents.json new file mode 100644 index 00000000..4a7aed8e --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_normal_id_nick_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_gift_broadcast_high_normal_nick_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_gift_broadcast_high_normal_nick_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_normal_id_nick_bg.imageset/room_gift_broadcast_high_normal_nick_bg@2x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_normal_id_nick_bg.imageset/room_gift_broadcast_high_normal_nick_bg@2x.png new file mode 100644 index 00000000..f79ee470 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_normal_id_nick_bg.imageset/room_gift_broadcast_high_normal_nick_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_normal_id_nick_bg.imageset/room_gift_broadcast_high_normal_nick_bg@3x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_normal_id_nick_bg.imageset/room_gift_broadcast_high_normal_nick_bg@3x.png new file mode 100644 index 00000000..6b0cdf36 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_normal_id_nick_bg.imageset/room_gift_broadcast_high_normal_nick_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_normal_nick_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_normal_nick_bg.imageset/Contents.json new file mode 100644 index 00000000..4a7aed8e --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_normal_nick_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_gift_broadcast_high_normal_nick_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_gift_broadcast_high_normal_nick_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_normal_nick_bg.imageset/room_gift_broadcast_high_normal_nick_bg@2x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_normal_nick_bg.imageset/room_gift_broadcast_high_normal_nick_bg@2x.png new file mode 100644 index 00000000..f2ca82d1 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_normal_nick_bg.imageset/room_gift_broadcast_high_normal_nick_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_normal_nick_bg.imageset/room_gift_broadcast_high_normal_nick_bg@3x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_normal_nick_bg.imageset/room_gift_broadcast_high_normal_nick_bg@3x.png new file mode 100644 index 00000000..cddb6f71 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_high/room_gift_broadcast_high_normal_nick_bg.imageset/room_gift_broadcast_high_normal_nick_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/Contents.json b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_avatar_board.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_avatar_board.imageset/Contents.json new file mode 100644 index 00000000..b2911063 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_avatar_board.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_gift_broadcast_low_avatar_board@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_gift_broadcast_low_avatar_board@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_avatar_board.imageset/room_gift_broadcast_low_avatar_board@2x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_avatar_board.imageset/room_gift_broadcast_low_avatar_board@2x.png new file mode 100644 index 00000000..a36c8686 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_avatar_board.imageset/room_gift_broadcast_low_avatar_board@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_avatar_board.imageset/room_gift_broadcast_low_avatar_board@3x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_avatar_board.imageset/room_gift_broadcast_low_avatar_board@3x.png new file mode 100644 index 00000000..8cb97fb6 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_avatar_board.imageset/room_gift_broadcast_low_avatar_board@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_bg.imageset/Contents.json new file mode 100644 index 00000000..8e0c2413 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_bg.imageset/Contents.json @@ -0,0 +1,25 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_gift_broadcast_low_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_gift_broadcast_low_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "localizable" : true + } +} diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_bg.imageset/room_gift_broadcast_low_bg@2x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_bg.imageset/room_gift_broadcast_low_bg@2x.png new file mode 100644 index 00000000..b2923424 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_bg.imageset/room_gift_broadcast_low_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_bg.imageset/room_gift_broadcast_low_bg@3x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_bg.imageset/room_gift_broadcast_low_bg@3x.png new file mode 100644 index 00000000..eea71d18 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_bg.imageset/room_gift_broadcast_low_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_close.imageset/Contents.json new file mode 100644 index 00000000..6021bde4 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_close.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_gift_broadcast_low_close@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_gift_broadcast_low_close@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_close.imageset/room_gift_broadcast_low_close@2x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_close.imageset/room_gift_broadcast_low_close@2x.png new file mode 100644 index 00000000..9e053109 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_close.imageset/room_gift_broadcast_low_close@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_close.imageset/room_gift_broadcast_low_close@3x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_close.imageset/room_gift_broadcast_low_close@3x.png new file mode 100644 index 00000000..fc6002e9 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_close.imageset/room_gift_broadcast_low_close@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_normal_nick_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_normal_nick_bg.imageset/Contents.json new file mode 100644 index 00000000..34609f81 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_normal_nick_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_gift_broadcast_low_normal_nick_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_gift_broadcast_low_normal_nick_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_normal_nick_bg.imageset/room_gift_broadcast_low_normal_nick_bg@2x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_normal_nick_bg.imageset/room_gift_broadcast_low_normal_nick_bg@2x.png new file mode 100644 index 00000000..3cd49a4a Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_normal_nick_bg.imageset/room_gift_broadcast_low_normal_nick_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_normal_nick_bg.imageset/room_gift_broadcast_low_normal_nick_bg@3x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_normal_nick_bg.imageset/room_gift_broadcast_low_normal_nick_bg@3x.png new file mode 100644 index 00000000..ec94ae3e Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_low/room_gift_broadcast_low_normal_nick_bg.imageset/room_gift_broadcast_low_normal_nick_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/Contents.json b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_avatar_board.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_avatar_board.imageset/Contents.json new file mode 100644 index 00000000..a5c0f9bf --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_avatar_board.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_gift_broadcast_middle_avatar_board@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_gift_broadcast_middle_avatar_board@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_avatar_board.imageset/room_gift_broadcast_middle_avatar_board@2x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_avatar_board.imageset/room_gift_broadcast_middle_avatar_board@2x.png new file mode 100644 index 00000000..a36c8686 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_avatar_board.imageset/room_gift_broadcast_middle_avatar_board@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_avatar_board.imageset/room_gift_broadcast_middle_avatar_board@3x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_avatar_board.imageset/room_gift_broadcast_middle_avatar_board@3x.png new file mode 100644 index 00000000..8cb97fb6 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_avatar_board.imageset/room_gift_broadcast_middle_avatar_board@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_bg.imageset/Contents.json new file mode 100644 index 00000000..bf1bf998 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_bg.imageset/Contents.json @@ -0,0 +1,25 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_gift_broadcast_middle_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_gift_broadcast_middle_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "localizable" : true + } +} diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_bg.imageset/room_gift_broadcast_middle_bg@2x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_bg.imageset/room_gift_broadcast_middle_bg@2x.png new file mode 100644 index 00000000..e2fe19d2 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_bg.imageset/room_gift_broadcast_middle_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_bg.imageset/room_gift_broadcast_middle_bg@3x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_bg.imageset/room_gift_broadcast_middle_bg@3x.png new file mode 100644 index 00000000..f340ba37 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_bg.imageset/room_gift_broadcast_middle_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_close.imageset/Contents.json new file mode 100644 index 00000000..076e6325 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_close.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_gift_broadcast_middle_close@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_gift_broadcast_middle_close@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_close.imageset/room_gift_broadcast_middle_close@2x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_close.imageset/room_gift_broadcast_middle_close@2x.png new file mode 100644 index 00000000..534f59b2 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_close.imageset/room_gift_broadcast_middle_close@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_close.imageset/room_gift_broadcast_middle_close@3x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_close.imageset/room_gift_broadcast_middle_close@3x.png new file mode 100644 index 00000000..9f784738 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_close.imageset/room_gift_broadcast_middle_close@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_normal_nick_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_normal_nick_bg.imageset/Contents.json new file mode 100644 index 00000000..c531f930 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_normal_nick_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_gift_broadcast_middle_normal_nick_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_gift_broadcast_middle_normal_nick_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_normal_nick_bg.imageset/room_gift_broadcast_middle_normal_nick_bg@2x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_normal_nick_bg.imageset/room_gift_broadcast_middle_normal_nick_bg@2x.png new file mode 100644 index 00000000..8d92d703 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_normal_nick_bg.imageset/room_gift_broadcast_middle_normal_nick_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_normal_nick_bg.imageset/room_gift_broadcast_middle_normal_nick_bg@3x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_normal_nick_bg.imageset/room_gift_broadcast_middle_normal_nick_bg@3x.png new file mode 100644 index 00000000..62983d3d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_middle/room_gift_broadcast_middle_normal_nick_bg.imageset/room_gift_broadcast_middle_normal_nick_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_send.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_send.imageset/Contents.json new file mode 100644 index 00000000..b5a11cd3 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_send.imageset/Contents.json @@ -0,0 +1,25 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_gift_broadcast_send@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_gift_broadcast_send@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "localizable" : true + } +} diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_send.imageset/room_gift_broadcast_send@2x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_send.imageset/room_gift_broadcast_send@2x.png new file mode 100644 index 00000000..79af40f0 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_send.imageset/room_gift_broadcast_send@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_send.imageset/room_gift_broadcast_send@3x.png b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_send.imageset/room_gift_broadcast_send@3x.png new file mode 100644 index 00000000..da618500 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Broadcast/room_gift_broadcast_send.imageset/room_gift_broadcast_send@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_avatar_board.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_avatar_board.imageset/Contents.json deleted file mode 100644 index 9c352610..00000000 --- a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_avatar_board.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_present_broadcast_avatar_board@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_present_broadcast_avatar_board@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_avatar_board.imageset/yumi_scope_present_broadcast_avatar_board@2x.png b/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_avatar_board.imageset/yumi_scope_present_broadcast_avatar_board@2x.png deleted file mode 100644 index 2c7adcc0..00000000 Binary files a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_avatar_board.imageset/yumi_scope_present_broadcast_avatar_board@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_avatar_board.imageset/yumi_scope_present_broadcast_avatar_board@3x.png b/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_avatar_board.imageset/yumi_scope_present_broadcast_avatar_board@3x.png deleted file mode 100644 index 37b3cd4e..00000000 Binary files a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_avatar_board.imageset/yumi_scope_present_broadcast_avatar_board@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_close.imageset/Contents.json deleted file mode 100644 index 4189c96e..00000000 --- a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_close.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_present_broadcast_close@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_present_broadcast_close@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_close.imageset/yumi_scope_present_broadcast_close@2x.png b/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_close.imageset/yumi_scope_present_broadcast_close@2x.png deleted file mode 100644 index c9b3623a..00000000 Binary files a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_close.imageset/yumi_scope_present_broadcast_close@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_close.imageset/yumi_scope_present_broadcast_close@3x.png b/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_close.imageset/yumi_scope_present_broadcast_close@3x.png deleted file mode 100644 index 616a3924..00000000 Binary files a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_close.imageset/yumi_scope_present_broadcast_close@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_high_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_high_background.imageset/Contents.json deleted file mode 100644 index b9ae025b..00000000 --- a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_high_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_present_broadcast_high_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_present_broadcast_high_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_high_background.imageset/yumi_scope_present_broadcast_high_background@2x.png b/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_high_background.imageset/yumi_scope_present_broadcast_high_background@2x.png deleted file mode 100644 index a7cbaa85..00000000 Binary files a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_high_background.imageset/yumi_scope_present_broadcast_high_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_high_background.imageset/yumi_scope_present_broadcast_high_background@3x.png b/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_high_background.imageset/yumi_scope_present_broadcast_high_background@3x.png deleted file mode 100644 index ef197e90..00000000 Binary files a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_high_background.imageset/yumi_scope_present_broadcast_high_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_higher_nick_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_higher_nick_background.imageset/Contents.json deleted file mode 100644 index fa7eff3a..00000000 --- a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_higher_nick_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_present_broadcast_higher_nick_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_present_broadcast_higher_nick_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_higher_nick_background.imageset/yumi_scope_present_broadcast_higher_nick_background@2x.png b/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_higher_nick_background.imageset/yumi_scope_present_broadcast_higher_nick_background@2x.png deleted file mode 100644 index 5c0ac055..00000000 Binary files a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_higher_nick_background.imageset/yumi_scope_present_broadcast_higher_nick_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_higher_nick_background.imageset/yumi_scope_present_broadcast_higher_nick_background@3x.png b/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_higher_nick_background.imageset/yumi_scope_present_broadcast_higher_nick_background@3x.png deleted file mode 100644 index daa8e2af..00000000 Binary files a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_higher_nick_background.imageset/yumi_scope_present_broadcast_higher_nick_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_low_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_low_background.imageset/Contents.json deleted file mode 100644 index 5ee256b7..00000000 --- a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_low_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_present_broadcast_low_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_present_broadcast_low_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_low_background.imageset/yumi_scope_present_broadcast_low_background@2x.png b/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_low_background.imageset/yumi_scope_present_broadcast_low_background@2x.png deleted file mode 100644 index d6092d00..00000000 Binary files a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_low_background.imageset/yumi_scope_present_broadcast_low_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_low_background.imageset/yumi_scope_present_broadcast_low_background@3x.png b/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_low_background.imageset/yumi_scope_present_broadcast_low_background@3x.png deleted file mode 100644 index a3f66f78..00000000 Binary files a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_low_background.imageset/yumi_scope_present_broadcast_low_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_middle_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_middle_background.imageset/Contents.json deleted file mode 100644 index fe400061..00000000 --- a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_middle_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_present_broadcast_middle_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_present_broadcast_middle_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_middle_background.imageset/yumi_scope_present_broadcast_middle_background@2x.png b/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_middle_background.imageset/yumi_scope_present_broadcast_middle_background@2x.png deleted file mode 100644 index bdf3c37c..00000000 Binary files a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_middle_background.imageset/yumi_scope_present_broadcast_middle_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_middle_background.imageset/yumi_scope_present_broadcast_middle_background@3x.png b/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_middle_background.imageset/yumi_scope_present_broadcast_middle_background@3x.png deleted file mode 100644 index 0d2b9181..00000000 Binary files a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_middle_background.imageset/yumi_scope_present_broadcast_middle_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_normal_nick_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_normal_nick_background.imageset/Contents.json deleted file mode 100644 index e98a2d18..00000000 --- a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_normal_nick_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_present_broadcast_normal_nick_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_present_broadcast_normal_nick_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_normal_nick_background.imageset/yumi_scope_present_broadcast_normal_nick_background@2x.png b/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_normal_nick_background.imageset/yumi_scope_present_broadcast_normal_nick_background@2x.png deleted file mode 100644 index c702f302..00000000 Binary files a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_normal_nick_background.imageset/yumi_scope_present_broadcast_normal_nick_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_normal_nick_background.imageset/yumi_scope_present_broadcast_normal_nick_background@3x.png b/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_normal_nick_background.imageset/yumi_scope_present_broadcast_normal_nick_background@3x.png deleted file mode 100644 index 2e726c1a..00000000 Binary files a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_normal_nick_background.imageset/yumi_scope_present_broadcast_normal_nick_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_send.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_send.imageset/Contents.json deleted file mode 100644 index fb45af3d..00000000 --- a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_send.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_present_broadcast_send@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_present_broadcast_send@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_send.imageset/yumi_scope_present_broadcast_send@2x.png b/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_send.imageset/yumi_scope_present_broadcast_send@2x.png deleted file mode 100644 index a0a8e1c7..00000000 Binary files a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_send.imageset/yumi_scope_present_broadcast_send@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_send.imageset/yumi_scope_present_broadcast_send@3x.png b/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_send.imageset/yumi_scope_present_broadcast_send@3x.png deleted file mode 100644 index a4a0a836..00000000 Binary files a/YuMi/Assets.xcassets/yna/Broadcast/yumi_scope_present_broadcast_send.imageset/yumi_scope_present_broadcast_send@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/yna/CandyTree/Contents.json +++ b/YuMi/Assets.xcassets/yna/CandyTree/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_diamond.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_diamond.imageset/Contents.json new file mode 100644 index 00000000..86b5777d --- /dev/null +++ b/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_diamond.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "candy_tree_diamond@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "candy_tree_diamond@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_diamond.imageset/candy_tree_diamond@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_diamond.imageset/candy_tree_diamond@2x.png new file mode 100644 index 00000000..200101ac Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_diamond.imageset/candy_tree_diamond@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_diamond.imageset/candy_tree_diamond@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_diamond.imageset/candy_tree_diamond@3x.png new file mode 100644 index 00000000..289c81e7 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_diamond.imageset/candy_tree_diamond@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_fifth.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_fifth.imageset/Contents.json new file mode 100644 index 00000000..2f26698b --- /dev/null +++ b/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_fifth.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "candy_tree_levle_fifth@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "candy_tree_levle_fifth@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_fifth.imageset/candy_tree_levle_fifth@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_fifth.imageset/candy_tree_levle_fifth@2x.png new file mode 100644 index 00000000..b60dbf29 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_fifth.imageset/candy_tree_levle_fifth@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_fifth.imageset/candy_tree_levle_fifth@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_fifth.imageset/candy_tree_levle_fifth@3x.png new file mode 100644 index 00000000..1e0a6a07 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_fifth.imageset/candy_tree_levle_fifth@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_fourth.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_fourth.imageset/Contents.json new file mode 100644 index 00000000..cda301ed --- /dev/null +++ b/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_fourth.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "candy_tree_levle_fourth@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "candy_tree_levle_fourth@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_fourth.imageset/candy_tree_levle_fourth@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_fourth.imageset/candy_tree_levle_fourth@2x.png new file mode 100644 index 00000000..0dab4f44 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_fourth.imageset/candy_tree_levle_fourth@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_fourth.imageset/candy_tree_levle_fourth@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_fourth.imageset/candy_tree_levle_fourth@3x.png new file mode 100644 index 00000000..b5ca78f5 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_fourth.imageset/candy_tree_levle_fourth@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_third.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_third.imageset/Contents.json new file mode 100644 index 00000000..e8739e55 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_third.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "candy_tree_levle_third@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "candy_tree_levle_third@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_third.imageset/candy_tree_levle_third@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_third.imageset/candy_tree_levle_third@2x.png new file mode 100644 index 00000000..03c23d31 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_third.imageset/candy_tree_levle_third@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_third.imageset/candy_tree_levle_third@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_third.imageset/candy_tree_levle_third@3x.png new file mode 100644 index 00000000..43405ad4 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/candy_tree_levle_third.imageset/candy_tree_levle_third@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_add.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_add.imageset/Contents.json new file mode 100644 index 00000000..317e0edd --- /dev/null +++ b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_add.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_candy_tree_add@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_candy_tree_add@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_add.imageset/room_candy_tree_add@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_add.imageset/room_candy_tree_add@2x.png new file mode 100644 index 00000000..5f7457d2 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_add.imageset/room_candy_tree_add@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_add.imageset/room_candy_tree_add@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_add.imageset/room_candy_tree_add@3x.png new file mode 100644 index 00000000..c4877de9 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_add.imageset/room_candy_tree_add@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_back.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_back.imageset/Contents.json new file mode 100644 index 00000000..d3d37692 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_back.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_candy_tree_back@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_candy_tree_back@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_back.imageset/room_candy_tree_back@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_back.imageset/room_candy_tree_back@2x.png new file mode 100644 index 00000000..9dd01fc1 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_back.imageset/room_candy_tree_back@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_back.imageset/room_candy_tree_back@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_back.imageset/room_candy_tree_back@3x.png new file mode 100644 index 00000000..16f68c31 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_back.imageset/room_candy_tree_back@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_bg.imageset/Contents.json new file mode 100644 index 00000000..f4416017 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_candy_tree_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_candy_tree_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_bg.imageset/room_candy_tree_bg@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_bg.imageset/room_candy_tree_bg@2x.png new file mode 100644 index 00000000..5a08411e Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_bg.imageset/room_candy_tree_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_bg.imageset/room_candy_tree_bg@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_bg.imageset/room_candy_tree_bg@3x.png new file mode 100644 index 00000000..06652a27 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_bg.imageset/room_candy_tree_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_candy.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_candy.imageset/Contents.json new file mode 100644 index 00000000..d3c1e5f9 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_candy.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_candy_tree_candy@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_candy_tree_candy@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_candy.imageset/room_candy_tree_candy@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_candy.imageset/room_candy_tree_candy@2x.png new file mode 100644 index 00000000..82042d9e Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_candy.imageset/room_candy_tree_candy@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_candy.imageset/room_candy_tree_candy@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_candy.imageset/room_candy_tree_candy@3x.png new file mode 100644 index 00000000..f92c2480 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_candy.imageset/room_candy_tree_candy@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_enter.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_enter.imageset/Contents.json new file mode 100644 index 00000000..93735f52 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_enter.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_candy_tree_enter@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_candy_tree_enter@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_enter.imageset/room_candy_tree_enter@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_enter.imageset/room_candy_tree_enter@2x.png new file mode 100644 index 00000000..154c9cfc Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_enter.imageset/room_candy_tree_enter@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_enter.imageset/room_candy_tree_enter@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_enter.imageset/room_candy_tree_enter@3x.png new file mode 100644 index 00000000..002e9d4e Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_enter.imageset/room_candy_tree_enter@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_more.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_more.imageset/Contents.json new file mode 100644 index 00000000..f33314dd --- /dev/null +++ b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_more.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_candy_tree_more@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_candy_tree_more@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_more.imageset/room_candy_tree_more@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_more.imageset/room_candy_tree_more@2x.png new file mode 100644 index 00000000..f59900e3 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_more.imageset/room_candy_tree_more@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_more.imageset/room_candy_tree_more@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_more.imageset/room_candy_tree_more@3x.png new file mode 100644 index 00000000..a27c85e4 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_more.imageset/room_candy_tree_more@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_bg.imageset/Contents.json new file mode 100644 index 00000000..f4bdc7b2 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_candy_tree_pick_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_candy_tree_pick_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_bg.imageset/room_candy_tree_pick_bg@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_bg.imageset/room_candy_tree_pick_bg@2x.png new file mode 100644 index 00000000..34734c2d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_bg.imageset/room_candy_tree_pick_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_bg.imageset/room_candy_tree_pick_bg@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_bg.imageset/room_candy_tree_pick_bg@3x.png new file mode 100644 index 00000000..d6bee55a Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_bg.imageset/room_candy_tree_pick_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_disable.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_disable.imageset/Contents.json new file mode 100644 index 00000000..1217e945 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_disable.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_candy_tree_pick_disable@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_candy_tree_pick_disable@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_disable.imageset/room_candy_tree_pick_disable@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_disable.imageset/room_candy_tree_pick_disable@2x.png new file mode 100644 index 00000000..b97110ba Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_disable.imageset/room_candy_tree_pick_disable@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_disable.imageset/room_candy_tree_pick_disable@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_disable.imageset/room_candy_tree_pick_disable@3x.png new file mode 100644 index 00000000..04ddf021 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_disable.imageset/room_candy_tree_pick_disable@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_normal.imageset/Contents.json new file mode 100644 index 00000000..2309f139 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_candy_tree_pick_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_candy_tree_pick_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_normal.imageset/room_candy_tree_pick_normal@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_normal.imageset/room_candy_tree_pick_normal@2x.png new file mode 100644 index 00000000..94cbc670 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_normal.imageset/room_candy_tree_pick_normal@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_normal.imageset/room_candy_tree_pick_normal@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_normal.imageset/room_candy_tree_pick_normal@3x.png new file mode 100644 index 00000000..7de58fc6 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_pick_normal.imageset/room_candy_tree_pick_normal@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_rank.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_rank.imageset/Contents.json new file mode 100644 index 00000000..de4876c0 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_rank.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_candy_tree_rank@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_candy_tree_rank@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_rank.imageset/room_candy_tree_rank@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_rank.imageset/room_candy_tree_rank@2x.png new file mode 100644 index 00000000..4cb14f5d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_rank.imageset/room_candy_tree_rank@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_rank.imageset/room_candy_tree_rank@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_rank.imageset/room_candy_tree_rank@3x.png new file mode 100644 index 00000000..67623c23 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_rank.imageset/room_candy_tree_rank@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_record_refresh.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_record_refresh.imageset/Contents.json new file mode 100644 index 00000000..d3dda4f9 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_record_refresh.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_candy_tree_record_refresh@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_candy_tree_record_refresh@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_record_refresh.imageset/room_candy_tree_record_refresh@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_record_refresh.imageset/room_candy_tree_record_refresh@2x.png new file mode 100644 index 00000000..79fc8174 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_record_refresh.imageset/room_candy_tree_record_refresh@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_record_refresh.imageset/room_candy_tree_record_refresh@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_record_refresh.imageset/room_candy_tree_record_refresh@3x.png new file mode 100644 index 00000000..512f7afc Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_record_refresh.imageset/room_candy_tree_record_refresh@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_subtract.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_subtract.imageset/Contents.json new file mode 100644 index 00000000..8962fbbc --- /dev/null +++ b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_subtract.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_candy_tree_subtract@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_candy_tree_subtract@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_subtract.imageset/room_candy_tree_subtract@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_subtract.imageset/room_candy_tree_subtract@2x.png new file mode 100644 index 00000000..1ca05021 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_subtract.imageset/room_candy_tree_subtract@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_subtract.imageset/room_candy_tree_subtract@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_subtract.imageset/room_candy_tree_subtract@3x.png new file mode 100644 index 00000000..f5567e5e Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candy_tree_subtract.imageset/room_candy_tree_subtract@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_large_gift_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_large_gift_bg.imageset/Contents.json new file mode 100644 index 00000000..fa5b2020 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_large_gift_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_candytree_large_gift_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_candytree_large_gift_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_large_gift_bg.imageset/room_candytree_large_gift_bg@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_large_gift_bg.imageset/room_candytree_large_gift_bg@2x.png new file mode 100644 index 00000000..45ef826e Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_large_gift_bg.imageset/room_candytree_large_gift_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_large_gift_bg.imageset/room_candytree_large_gift_bg@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_large_gift_bg.imageset/room_candytree_large_gift_bg@3x.png new file mode 100644 index 00000000..d0c4511d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_large_gift_bg.imageset/room_candytree_large_gift_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_prompt.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_prompt.imageset/Contents.json new file mode 100644 index 00000000..1ecf4274 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_prompt.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_candytree_prompt@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_candytree_prompt@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_prompt.imageset/room_candytree_prompt@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_prompt.imageset/room_candytree_prompt@2x.png new file mode 100644 index 00000000..1ec4bd1f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_prompt.imageset/room_candytree_prompt@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_prompt.imageset/room_candytree_prompt@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_prompt.imageset/room_candytree_prompt@3x.png new file mode 100644 index 00000000..e3b35709 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_prompt.imageset/room_candytree_prompt@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num1.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num1.imageset/Contents.json new file mode 100644 index 00000000..4304013b --- /dev/null +++ b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num1.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_candytree_wish_num1@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_candytree_wish_num1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num1.imageset/room_candytree_wish_num1@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num1.imageset/room_candytree_wish_num1@2x.png new file mode 100644 index 00000000..063a13d5 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num1.imageset/room_candytree_wish_num1@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num1.imageset/room_candytree_wish_num1@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num1.imageset/room_candytree_wish_num1@3x.png new file mode 100644 index 00000000..0f6b1653 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num1.imageset/room_candytree_wish_num1@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num2.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num2.imageset/Contents.json new file mode 100644 index 00000000..89c1aa94 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num2.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_candytree_wish_num2@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_candytree_wish_num2@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num2.imageset/room_candytree_wish_num2@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num2.imageset/room_candytree_wish_num2@2x.png new file mode 100644 index 00000000..3d6446e7 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num2.imageset/room_candytree_wish_num2@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num2.imageset/room_candytree_wish_num2@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num2.imageset/room_candytree_wish_num2@3x.png new file mode 100644 index 00000000..b44cb109 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num2.imageset/room_candytree_wish_num2@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num3.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num3.imageset/Contents.json new file mode 100644 index 00000000..96cf7da2 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num3.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_candytree_wish_num3@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_candytree_wish_num3@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num3.imageset/room_candytree_wish_num3@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num3.imageset/room_candytree_wish_num3@2x.png new file mode 100644 index 00000000..d3bc582a Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num3.imageset/room_candytree_wish_num3@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num3.imageset/room_candytree_wish_num3@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num3.imageset/room_candytree_wish_num3@3x.png new file mode 100644 index 00000000..4833611c Binary files /dev/null and b/YuMi/Assets.xcassets/yna/CandyTree/room_candytree_wish_num3.imageset/room_candytree_wish_num3@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_diamond.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_diamond.imageset/Contents.json deleted file mode 100644 index 3c579028..00000000 --- a/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_diamond.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_candy_tree_diamond@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_candy_tree_diamond@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_diamond.imageset/yumi_candy_tree_diamond@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_diamond.imageset/yumi_candy_tree_diamond@2x.png deleted file mode 100644 index 7613b5a0..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_diamond.imageset/yumi_candy_tree_diamond@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_diamond.imageset/yumi_candy_tree_diamond@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_diamond.imageset/yumi_candy_tree_diamond@3x.png deleted file mode 100644 index 94d6de0b..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_diamond.imageset/yumi_candy_tree_diamond@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_fifth.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_fifth.imageset/Contents.json deleted file mode 100644 index 13e12ea3..00000000 --- a/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_fifth.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_candy_tree_levle_fifth@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_candy_tree_levle_fifth@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_fifth.imageset/yumi_candy_tree_levle_fifth@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_fifth.imageset/yumi_candy_tree_levle_fifth@2x.png deleted file mode 100644 index 1e989c34..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_fifth.imageset/yumi_candy_tree_levle_fifth@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_fifth.imageset/yumi_candy_tree_levle_fifth@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_fifth.imageset/yumi_candy_tree_levle_fifth@3x.png deleted file mode 100644 index 391d66bd..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_fifth.imageset/yumi_candy_tree_levle_fifth@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_fourth.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_fourth.imageset/Contents.json deleted file mode 100644 index 020ad396..00000000 --- a/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_fourth.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_candy_tree_levle_fourth@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_candy_tree_levle_fourth@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_fourth.imageset/yumi_candy_tree_levle_fourth@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_fourth.imageset/yumi_candy_tree_levle_fourth@2x.png deleted file mode 100644 index 43501526..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_fourth.imageset/yumi_candy_tree_levle_fourth@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_fourth.imageset/yumi_candy_tree_levle_fourth@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_fourth.imageset/yumi_candy_tree_levle_fourth@3x.png deleted file mode 100644 index 53989bc0..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_fourth.imageset/yumi_candy_tree_levle_fourth@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_third.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_third.imageset/Contents.json deleted file mode 100644 index 7d9dee3e..00000000 --- a/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_third.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_candy_tree_levle_third@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_candy_tree_levle_third@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_third.imageset/yumi_candy_tree_levle_third@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_third.imageset/yumi_candy_tree_levle_third@2x.png deleted file mode 100644 index eb45d611..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_third.imageset/yumi_candy_tree_levle_third@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_third.imageset/yumi_candy_tree_levle_third@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_third.imageset/yumi_candy_tree_levle_third@3x.png deleted file mode 100644 index 8d8c416f..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_candy_tree_levle_third.imageset/yumi_candy_tree_levle_third@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_add.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_add.imageset/Contents.json deleted file mode 100644 index 206eec52..00000000 --- a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_add.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_candy_tree_add@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_candy_tree_add@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_add.imageset/yumi_scope_candy_tree_add@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_add.imageset/yumi_scope_candy_tree_add@2x.png deleted file mode 100644 index e90a1ebb..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_add.imageset/yumi_scope_candy_tree_add@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_add.imageset/yumi_scope_candy_tree_add@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_add.imageset/yumi_scope_candy_tree_add@3x.png deleted file mode 100644 index 32ffebdc..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_add.imageset/yumi_scope_candy_tree_add@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_back.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_back.imageset/Contents.json deleted file mode 100644 index 693e85ce..00000000 --- a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_back.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_candy_tree_back@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_candy_tree_back@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_back.imageset/yumi_scope_candy_tree_back@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_back.imageset/yumi_scope_candy_tree_back@2x.png deleted file mode 100644 index 2c128417..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_back.imageset/yumi_scope_candy_tree_back@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_back.imageset/yumi_scope_candy_tree_back@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_back.imageset/yumi_scope_candy_tree_back@3x.png deleted file mode 100644 index 582698a2..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_back.imageset/yumi_scope_candy_tree_back@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_background.imageset/Contents.json deleted file mode 100644 index 52708c75..00000000 --- a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_candy_tree_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_candy_tree_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_background.imageset/yumi_scope_candy_tree_background@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_background.imageset/yumi_scope_candy_tree_background@2x.png deleted file mode 100644 index 28a309be..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_background.imageset/yumi_scope_candy_tree_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_background.imageset/yumi_scope_candy_tree_background@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_background.imageset/yumi_scope_candy_tree_background@3x.png deleted file mode 100644 index 5298d816..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_background.imageset/yumi_scope_candy_tree_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_candy.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_candy.imageset/Contents.json deleted file mode 100644 index 049e18fd..00000000 --- a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_candy.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_candy_tree_candy@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_candy_tree_candy@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_candy.imageset/yumi_scope_candy_tree_candy@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_candy.imageset/yumi_scope_candy_tree_candy@2x.png deleted file mode 100644 index 8ce98843..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_candy.imageset/yumi_scope_candy_tree_candy@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_candy.imageset/yumi_scope_candy_tree_candy@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_candy.imageset/yumi_scope_candy_tree_candy@3x.png deleted file mode 100644 index ae08acdb..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_candy.imageset/yumi_scope_candy_tree_candy@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_enter.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_enter.imageset/Contents.json deleted file mode 100644 index 6d2fcf45..00000000 --- a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_enter.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_candy_tree_enter@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_candy_tree_enter@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_enter.imageset/yumi_scope_candy_tree_enter@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_enter.imageset/yumi_scope_candy_tree_enter@2x.png deleted file mode 100644 index 615023b3..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_enter.imageset/yumi_scope_candy_tree_enter@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_enter.imageset/yumi_scope_candy_tree_enter@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_enter.imageset/yumi_scope_candy_tree_enter@3x.png deleted file mode 100644 index 1206baad..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_enter.imageset/yumi_scope_candy_tree_enter@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_more.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_more.imageset/Contents.json deleted file mode 100644 index 2cdb2bb6..00000000 --- a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_more.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_candy_tree_more@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_candy_tree_more@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_more.imageset/yumi_scope_candy_tree_more@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_more.imageset/yumi_scope_candy_tree_more@2x.png deleted file mode 100644 index 99343314..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_more.imageset/yumi_scope_candy_tree_more@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_more.imageset/yumi_scope_candy_tree_more@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_more.imageset/yumi_scope_candy_tree_more@3x.png deleted file mode 100644 index 8b89ff76..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_more.imageset/yumi_scope_candy_tree_more@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_background.imageset/Contents.json deleted file mode 100644 index 00979c83..00000000 --- a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_candy_tree_pick_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_candy_tree_pick_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_background.imageset/yumi_scope_candy_tree_pick_background@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_background.imageset/yumi_scope_candy_tree_pick_background@2x.png deleted file mode 100644 index 92aa4d9f..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_background.imageset/yumi_scope_candy_tree_pick_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_background.imageset/yumi_scope_candy_tree_pick_background@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_background.imageset/yumi_scope_candy_tree_pick_background@3x.png deleted file mode 100644 index a5c42b09..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_background.imageset/yumi_scope_candy_tree_pick_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_disable.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_disable.imageset/Contents.json deleted file mode 100644 index bc1710b4..00000000 --- a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_disable.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_candy_tree_pick_disable@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_candy_tree_pick_disable@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_disable.imageset/yumi_scope_candy_tree_pick_disable@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_disable.imageset/yumi_scope_candy_tree_pick_disable@2x.png deleted file mode 100644 index 5055b240..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_disable.imageset/yumi_scope_candy_tree_pick_disable@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_disable.imageset/yumi_scope_candy_tree_pick_disable@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_disable.imageset/yumi_scope_candy_tree_pick_disable@3x.png deleted file mode 100644 index d939777a..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_disable.imageset/yumi_scope_candy_tree_pick_disable@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_normal.imageset/Contents.json deleted file mode 100644 index d410f321..00000000 --- a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_normal.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_candy_tree_pick_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_candy_tree_pick_normal@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_normal.imageset/yumi_scope_candy_tree_pick_normal@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_normal.imageset/yumi_scope_candy_tree_pick_normal@2x.png deleted file mode 100644 index a68ee9a1..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_normal.imageset/yumi_scope_candy_tree_pick_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_normal.imageset/yumi_scope_candy_tree_pick_normal@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_normal.imageset/yumi_scope_candy_tree_pick_normal@3x.png deleted file mode 100644 index 654260b5..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_pick_normal.imageset/yumi_scope_candy_tree_pick_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_rank.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_rank.imageset/Contents.json deleted file mode 100644 index 4bd6ff2a..00000000 --- a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_rank.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_candy_tree_rank@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_candy_tree_rank@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_rank.imageset/yumi_scope_candy_tree_rank@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_rank.imageset/yumi_scope_candy_tree_rank@2x.png deleted file mode 100644 index ad22370f..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_rank.imageset/yumi_scope_candy_tree_rank@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_rank.imageset/yumi_scope_candy_tree_rank@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_rank.imageset/yumi_scope_candy_tree_rank@3x.png deleted file mode 100644 index 737df334..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_rank.imageset/yumi_scope_candy_tree_rank@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_record_refresh.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_record_refresh.imageset/Contents.json deleted file mode 100644 index a4704aad..00000000 --- a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_record_refresh.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_candy_tree_record_refresh@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_candy_tree_record_refresh@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_record_refresh.imageset/yumi_scope_candy_tree_record_refresh@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_record_refresh.imageset/yumi_scope_candy_tree_record_refresh@2x.png deleted file mode 100644 index 07826b2c..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_record_refresh.imageset/yumi_scope_candy_tree_record_refresh@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_record_refresh.imageset/yumi_scope_candy_tree_record_refresh@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_record_refresh.imageset/yumi_scope_candy_tree_record_refresh@3x.png deleted file mode 100644 index a23f424c..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_record_refresh.imageset/yumi_scope_candy_tree_record_refresh@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_subtract.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_subtract.imageset/Contents.json deleted file mode 100644 index 82b45174..00000000 --- a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_subtract.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_candy_tree_subtract@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_candy_tree_subtract@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_subtract.imageset/yumi_scope_candy_tree_subtract@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_subtract.imageset/yumi_scope_candy_tree_subtract@2x.png deleted file mode 100644 index 7029bfe5..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_subtract.imageset/yumi_scope_candy_tree_subtract@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_subtract.imageset/yumi_scope_candy_tree_subtract@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_subtract.imageset/yumi_scope_candy_tree_subtract@3x.png deleted file mode 100644 index 5abbd941..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candy_tree_subtract.imageset/yumi_scope_candy_tree_subtract@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_large_present_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_large_present_background.imageset/Contents.json deleted file mode 100644 index 10a5019b..00000000 --- a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_large_present_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_candytree_large_present_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_candytree_large_present_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_large_present_background.imageset/yumi_scope_candytree_large_present_background@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_large_present_background.imageset/yumi_scope_candytree_large_present_background@2x.png deleted file mode 100644 index fbec3c9e..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_large_present_background.imageset/yumi_scope_candytree_large_present_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_large_present_background.imageset/yumi_scope_candytree_large_present_background@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_large_present_background.imageset/yumi_scope_candytree_large_present_background@3x.png deleted file mode 100644 index d41b42d1..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_large_present_background.imageset/yumi_scope_candytree_large_present_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_prompt.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_prompt.imageset/Contents.json deleted file mode 100644 index 77e35828..00000000 --- a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_prompt.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_candytree_prompt@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_candytree_prompt@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_prompt.imageset/yumi_scope_candytree_prompt@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_prompt.imageset/yumi_scope_candytree_prompt@2x.png deleted file mode 100644 index 61d9dd0c..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_prompt.imageset/yumi_scope_candytree_prompt@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_prompt.imageset/yumi_scope_candytree_prompt@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_prompt.imageset/yumi_scope_candytree_prompt@3x.png deleted file mode 100644 index a7e8cf73..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_prompt.imageset/yumi_scope_candytree_prompt@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num1.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num1.imageset/Contents.json deleted file mode 100644 index ee7b7a63..00000000 --- a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num1.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_candytree_wish_num1@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_candytree_wish_num1@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num1.imageset/yumi_scope_candytree_wish_num1@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num1.imageset/yumi_scope_candytree_wish_num1@2x.png deleted file mode 100644 index 3a86fd67..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num1.imageset/yumi_scope_candytree_wish_num1@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num1.imageset/yumi_scope_candytree_wish_num1@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num1.imageset/yumi_scope_candytree_wish_num1@3x.png deleted file mode 100644 index bf298cc4..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num1.imageset/yumi_scope_candytree_wish_num1@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num2.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num2.imageset/Contents.json deleted file mode 100644 index 2278f5f9..00000000 --- a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num2.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_candytree_wish_num2@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_candytree_wish_num2@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num2.imageset/yumi_scope_candytree_wish_num2@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num2.imageset/yumi_scope_candytree_wish_num2@2x.png deleted file mode 100644 index 272074ea..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num2.imageset/yumi_scope_candytree_wish_num2@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num2.imageset/yumi_scope_candytree_wish_num2@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num2.imageset/yumi_scope_candytree_wish_num2@3x.png deleted file mode 100644 index f492cfaf..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num2.imageset/yumi_scope_candytree_wish_num2@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num3.imageset/Contents.json b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num3.imageset/Contents.json deleted file mode 100644 index 2a24decc..00000000 --- a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num3.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_candytree_wish_num3@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_candytree_wish_num3@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num3.imageset/yumi_scope_candytree_wish_num3@2x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num3.imageset/yumi_scope_candytree_wish_num3@2x.png deleted file mode 100644 index 6967eeda..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num3.imageset/yumi_scope_candytree_wish_num3@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num3.imageset/yumi_scope_candytree_wish_num3@3x.png b/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num3.imageset/yumi_scope_candytree_wish_num3@3x.png deleted file mode 100644 index 98bd9b1d..00000000 Binary files a/YuMi/Assets.xcassets/yna/CandyTree/yumi_scope_candytree_wish_num3.imageset/yumi_scope_candytree_wish_num3@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Contents.json b/YuMi/Assets.xcassets/yna/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/yna/Contents.json +++ b/YuMi/Assets.xcassets/yna/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Dating/Contents.json b/YuMi/Assets.xcassets/yna/Dating/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/yna/Dating/Contents.json +++ b/YuMi/Assets.xcassets/yna/Dating/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_alert_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_alert_close.imageset/Contents.json new file mode 100644 index 00000000..a454609f --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_alert_close.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_mode_dating_alert_close@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_mode_dating_alert_close@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_alert_close.imageset/room_mode_dating_alert_close@2x.png b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_alert_close.imageset/room_mode_dating_alert_close@2x.png new file mode 100644 index 00000000..c43e962e Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_alert_close.imageset/room_mode_dating_alert_close@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_alert_close.imageset/room_mode_dating_alert_close@3x.png b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_alert_close.imageset/room_mode_dating_alert_close@3x.png new file mode 100644 index 00000000..2184f82e Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_alert_close.imageset/room_mode_dating_alert_close@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_background.imageset/Contents.json new file mode 100644 index 00000000..4d3ba8eb --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_background.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_mode_dating_background@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_mode_dating_background@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_background.imageset/room_mode_dating_background@2x.png b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_background.imageset/room_mode_dating_background@2x.png new file mode 100644 index 00000000..0b80404d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_background.imageset/room_mode_dating_background@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_background.imageset/room_mode_dating_background@3x.png b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_background.imageset/room_mode_dating_background@3x.png new file mode 100644 index 00000000..24e7591b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_background.imageset/room_mode_dating_background@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_enter.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_enter.imageset/Contents.json new file mode 100644 index 00000000..a3893acd --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_enter.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_mode_dating_enter@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_mode_dating_enter@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_enter.imageset/room_mode_dating_enter@2x.png b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_enter.imageset/room_mode_dating_enter@2x.png new file mode 100644 index 00000000..cf0d9e6f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_enter.imageset/room_mode_dating_enter@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_enter.imageset/room_mode_dating_enter@3x.png b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_enter.imageset/room_mode_dating_enter@3x.png new file mode 100644 index 00000000..8ee9c067 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_enter.imageset/room_mode_dating_enter@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_female_select.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_female_select.imageset/Contents.json new file mode 100644 index 00000000..5bf87d9e --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_female_select.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_mode_dating_female_select@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_mode_dating_female_select@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_female_select.imageset/room_mode_dating_female_select@2x.png b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_female_select.imageset/room_mode_dating_female_select@2x.png new file mode 100644 index 00000000..04233231 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_female_select.imageset/room_mode_dating_female_select@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_female_select.imageset/room_mode_dating_female_select@3x.png b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_female_select.imageset/room_mode_dating_female_select@3x.png new file mode 100644 index 00000000..5b4b4b91 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_female_select.imageset/room_mode_dating_female_select@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_heart_icon.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_heart_icon.imageset/Contents.json new file mode 100644 index 00000000..b7f979d1 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_heart_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_mode_dating_heart_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_mode_dating_heart_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_heart_icon.imageset/room_mode_dating_heart_icon@2x.png b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_heart_icon.imageset/room_mode_dating_heart_icon@2x.png new file mode 100644 index 00000000..7b20d47e Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_heart_icon.imageset/room_mode_dating_heart_icon@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_heart_icon.imageset/room_mode_dating_heart_icon@3x.png b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_heart_icon.imageset/room_mode_dating_heart_icon@3x.png new file mode 100644 index 00000000..9b24b902 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_heart_icon.imageset/room_mode_dating_heart_icon@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_male_select.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_male_select.imageset/Contents.json new file mode 100644 index 00000000..befcbccf --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_male_select.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_mode_dating_male_select@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_mode_dating_male_select@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_male_select.imageset/room_mode_dating_male_select@2x.png b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_male_select.imageset/room_mode_dating_male_select@2x.png new file mode 100644 index 00000000..45412112 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_male_select.imageset/room_mode_dating_male_select@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_male_select.imageset/room_mode_dating_male_select@3x.png b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_male_select.imageset/room_mode_dating_male_select@3x.png new file mode 100644 index 00000000..ad88c8eb Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_male_select.imageset/room_mode_dating_male_select@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_not_select.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_not_select.imageset/Contents.json new file mode 100644 index 00000000..27b08159 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_not_select.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_mode_dating_not_select@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_mode_dating_not_select@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_not_select.imageset/room_mode_dating_not_select@2x.png b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_not_select.imageset/room_mode_dating_not_select@2x.png new file mode 100644 index 00000000..6db863be Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_not_select.imageset/room_mode_dating_not_select@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_not_select.imageset/room_mode_dating_not_select@3x.png b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_not_select.imageset/room_mode_dating_not_select@3x.png new file mode 100644 index 00000000..6467c082 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_not_select.imageset/room_mode_dating_not_select@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_pick_heart.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_pick_heart.imageset/Contents.json new file mode 100644 index 00000000..efba7ae4 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_pick_heart.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "room_mode_dating_pick_heart.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_pick_heart.imageset/room_mode_dating_pick_heart.png b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_pick_heart.imageset/room_mode_dating_pick_heart.png new file mode 100644 index 00000000..935b6586 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_pick_heart.imageset/room_mode_dating_pick_heart.png differ diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_progress_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_progress_bg.imageset/Contents.json new file mode 100644 index 00000000..58f75674 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_progress_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_mode_dating_progress_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_mode_dating_progress_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_progress_bg.imageset/room_mode_dating_progress_bg@2x.png b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_progress_bg.imageset/room_mode_dating_progress_bg@2x.png new file mode 100644 index 00000000..b3ffd3ea Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_progress_bg.imageset/room_mode_dating_progress_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_progress_bg.imageset/room_mode_dating_progress_bg@3x.png b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_progress_bg.imageset/room_mode_dating_progress_bg@3x.png new file mode 100644 index 00000000..22753087 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_progress_bg.imageset/room_mode_dating_progress_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_vip.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_vip.imageset/Contents.json new file mode 100644 index 00000000..6ff1dd85 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_vip.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_mode_dating_vip.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_vip.imageset/room_mode_dating_vip.png b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_vip.imageset/room_mode_dating_vip.png new file mode 100644 index 00000000..0bb285ad Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_vip.imageset/room_mode_dating_vip.png differ diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_vip_rule_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_vip_rule_bg.imageset/Contents.json new file mode 100644 index 00000000..bf30c824 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_vip_rule_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_mode_dating_vip_rule_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_mode_dating_vip_rule_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_vip_rule_bg.imageset/room_mode_dating_vip_rule_bg@2x.png b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_vip_rule_bg.imageset/room_mode_dating_vip_rule_bg@2x.png new file mode 100644 index 00000000..a0a6b190 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_vip_rule_bg.imageset/room_mode_dating_vip_rule_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_vip_rule_bg.imageset/room_mode_dating_vip_rule_bg@3x.png b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_vip_rule_bg.imageset/room_mode_dating_vip_rule_bg@3x.png new file mode 100644 index 00000000..0c3cadfd Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_vip_rule_bg.imageset/room_mode_dating_vip_rule_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_vip_title.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_vip_title.imageset/Contents.json new file mode 100644 index 00000000..af73f240 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_vip_title.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_mode_dating_vip_title.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_vip_title.imageset/room_mode_dating_vip_title.png b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_vip_title.imageset/room_mode_dating_vip_title.png new file mode 100644 index 00000000..6c3f9ff9 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Dating/room_mode_dating_vip_title.imageset/room_mode_dating_vip_title.png differ diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_alert_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_alert_close.imageset/Contents.json deleted file mode 100644 index afbbff2f..00000000 --- a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_alert_close.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_mode_dating_alert_close@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_mode_dating_alert_close@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_alert_close.imageset/yumi_scope_mode_dating_alert_close@2x.png b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_alert_close.imageset/yumi_scope_mode_dating_alert_close@2x.png deleted file mode 100644 index 83ba63ca..00000000 Binary files a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_alert_close.imageset/yumi_scope_mode_dating_alert_close@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_alert_close.imageset/yumi_scope_mode_dating_alert_close@3x.png b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_alert_close.imageset/yumi_scope_mode_dating_alert_close@3x.png deleted file mode 100644 index 83c1044d..00000000 Binary files a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_alert_close.imageset/yumi_scope_mode_dating_alert_close@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_background.imageset/Contents.json deleted file mode 100644 index d8a10ac6..00000000 --- a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_mode_dating_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_mode_dating_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_background.imageset/yumi_scope_mode_dating_background@2x.png b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_background.imageset/yumi_scope_mode_dating_background@2x.png deleted file mode 100644 index 37170396..00000000 Binary files a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_background.imageset/yumi_scope_mode_dating_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_background.imageset/yumi_scope_mode_dating_background@3x.png b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_background.imageset/yumi_scope_mode_dating_background@3x.png deleted file mode 100644 index 37cc7f5f..00000000 Binary files a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_background.imageset/yumi_scope_mode_dating_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_enter.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_enter.imageset/Contents.json deleted file mode 100644 index 9de2137e..00000000 --- a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_enter.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_mode_dating_enter@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_mode_dating_enter@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_enter.imageset/yumi_scope_mode_dating_enter@2x.png b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_enter.imageset/yumi_scope_mode_dating_enter@2x.png deleted file mode 100644 index b4af60b4..00000000 Binary files a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_enter.imageset/yumi_scope_mode_dating_enter@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_enter.imageset/yumi_scope_mode_dating_enter@3x.png b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_enter.imageset/yumi_scope_mode_dating_enter@3x.png deleted file mode 100644 index 2756259e..00000000 Binary files a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_enter.imageset/yumi_scope_mode_dating_enter@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_female_select.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_female_select.imageset/Contents.json deleted file mode 100644 index a1c9b287..00000000 --- a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_female_select.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_mode_dating_female_select@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_mode_dating_female_select@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_female_select.imageset/yumi_scope_mode_dating_female_select@2x.png b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_female_select.imageset/yumi_scope_mode_dating_female_select@2x.png deleted file mode 100644 index 2dda5503..00000000 Binary files a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_female_select.imageset/yumi_scope_mode_dating_female_select@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_female_select.imageset/yumi_scope_mode_dating_female_select@3x.png b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_female_select.imageset/yumi_scope_mode_dating_female_select@3x.png deleted file mode 100644 index 0c8e578c..00000000 Binary files a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_female_select.imageset/yumi_scope_mode_dating_female_select@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_heart_pic.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_heart_pic.imageset/Contents.json deleted file mode 100644 index 299a112b..00000000 --- a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_heart_pic.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_mode_dating_heart_pic@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_mode_dating_heart_pic@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_heart_pic.imageset/yumi_scope_mode_dating_heart_pic@2x.png b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_heart_pic.imageset/yumi_scope_mode_dating_heart_pic@2x.png deleted file mode 100644 index 0d6ce52a..00000000 Binary files a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_heart_pic.imageset/yumi_scope_mode_dating_heart_pic@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_heart_pic.imageset/yumi_scope_mode_dating_heart_pic@3x.png b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_heart_pic.imageset/yumi_scope_mode_dating_heart_pic@3x.png deleted file mode 100644 index 6c1a3a8e..00000000 Binary files a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_heart_pic.imageset/yumi_scope_mode_dating_heart_pic@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_male_select.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_male_select.imageset/Contents.json deleted file mode 100644 index 8116347c..00000000 --- a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_male_select.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_mode_dating_male_select@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_mode_dating_male_select@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_male_select.imageset/yumi_scope_mode_dating_male_select@2x.png b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_male_select.imageset/yumi_scope_mode_dating_male_select@2x.png deleted file mode 100644 index 1e3c505a..00000000 Binary files a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_male_select.imageset/yumi_scope_mode_dating_male_select@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_male_select.imageset/yumi_scope_mode_dating_male_select@3x.png b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_male_select.imageset/yumi_scope_mode_dating_male_select@3x.png deleted file mode 100644 index a3c9b480..00000000 Binary files a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_male_select.imageset/yumi_scope_mode_dating_male_select@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_not_select.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_not_select.imageset/Contents.json deleted file mode 100644 index 41c6661b..00000000 --- a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_not_select.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_mode_dating_not_select@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_mode_dating_not_select@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_not_select.imageset/yumi_scope_mode_dating_not_select@2x.png b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_not_select.imageset/yumi_scope_mode_dating_not_select@2x.png deleted file mode 100644 index 40177970..00000000 Binary files a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_not_select.imageset/yumi_scope_mode_dating_not_select@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_not_select.imageset/yumi_scope_mode_dating_not_select@3x.png b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_not_select.imageset/yumi_scope_mode_dating_not_select@3x.png deleted file mode 100644 index cf9a205a..00000000 Binary files a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_not_select.imageset/yumi_scope_mode_dating_not_select@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_pick_heart.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_pick_heart.imageset/Contents.json deleted file mode 100644 index e223dbf7..00000000 --- a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_pick_heart.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_scope_mode_dating_pick_heart.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_pick_heart.imageset/yumi_scope_mode_dating_pick_heart.png b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_pick_heart.imageset/yumi_scope_mode_dating_pick_heart.png deleted file mode 100644 index 596da2ff..00000000 Binary files a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_pick_heart.imageset/yumi_scope_mode_dating_pick_heart.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_progress_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_progress_background.imageset/Contents.json deleted file mode 100644 index 47427ed4..00000000 --- a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_progress_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_mode_dating_progress_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_mode_dating_progress_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_progress_background.imageset/yumi_scope_mode_dating_progress_background@2x.png b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_progress_background.imageset/yumi_scope_mode_dating_progress_background@2x.png deleted file mode 100644 index a9676997..00000000 Binary files a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_progress_background.imageset/yumi_scope_mode_dating_progress_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_progress_background.imageset/yumi_scope_mode_dating_progress_background@3x.png b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_progress_background.imageset/yumi_scope_mode_dating_progress_background@3x.png deleted file mode 100644 index c7027e70..00000000 Binary files a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_progress_background.imageset/yumi_scope_mode_dating_progress_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_vip.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_vip.imageset/Contents.json deleted file mode 100644 index ea753f51..00000000 --- a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_vip.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_mode_dating_vip@2x.png", "idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_vip.imageset/yumi_scope_mode_dating_vip@2x.png b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_vip.imageset/yumi_scope_mode_dating_vip@2x.png deleted file mode 100644 index d888fedf..00000000 Binary files a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_vip.imageset/yumi_scope_mode_dating_vip@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_vip_rule_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_vip_rule_background.imageset/Contents.json deleted file mode 100644 index ae6d1286..00000000 --- a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_vip_rule_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_mode_dating_vip_rule_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_mode_dating_vip_rule_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_vip_rule_background.imageset/yumi_scope_mode_dating_vip_rule_background@2x.png b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_vip_rule_background.imageset/yumi_scope_mode_dating_vip_rule_background@2x.png deleted file mode 100644 index 0bd65613..00000000 Binary files a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_vip_rule_background.imageset/yumi_scope_mode_dating_vip_rule_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_vip_rule_background.imageset/yumi_scope_mode_dating_vip_rule_background@3x.png b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_vip_rule_background.imageset/yumi_scope_mode_dating_vip_rule_background@3x.png deleted file mode 100644 index 535957d8..00000000 Binary files a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_vip_rule_background.imageset/yumi_scope_mode_dating_vip_rule_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_vip_title.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_vip_title.imageset/Contents.json deleted file mode 100644 index 4070bf4d..00000000 --- a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_vip_title.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_mode_dating_vip_title@2x.png", "idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_vip_title.imageset/yumi_scope_mode_dating_vip_title@2x.png b/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_vip_title.imageset/yumi_scope_mode_dating_vip_title@2x.png deleted file mode 100644 index de1b75d0..00000000 Binary files a/YuMi/Assets.xcassets/yna/Dating/yumi_scope_mode_dating_vip_title.imageset/yumi_scope_mode_dating_vip_title@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Face/Contents.json b/YuMi/Assets.xcassets/yna/Face/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/yna/Face/Contents.json +++ b/YuMi/Assets.xcassets/yna/Face/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Face/room_face_nobel_lock.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Face/room_face_nobel_lock.imageset/Contents.json new file mode 100644 index 00000000..993ad2b8 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Face/room_face_nobel_lock.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_face_nobel_lock@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_face_nobel_lock@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Face/room_face_nobel_lock.imageset/room_face_nobel_lock@2x.png b/YuMi/Assets.xcassets/yna/Face/room_face_nobel_lock.imageset/room_face_nobel_lock@2x.png new file mode 100644 index 00000000..81c67fa6 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Face/room_face_nobel_lock.imageset/room_face_nobel_lock@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Face/room_face_nobel_lock.imageset/room_face_nobel_lock@3x.png b/YuMi/Assets.xcassets/yna/Face/room_face_nobel_lock.imageset/room_face_nobel_lock@3x.png new file mode 100644 index 00000000..727964a3 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Face/room_face_nobel_lock.imageset/room_face_nobel_lock@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Face/room_face_nobel_privil.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Face/room_face_nobel_privil.imageset/Contents.json new file mode 100644 index 00000000..1b687974 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Face/room_face_nobel_privil.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_face_nobel_privil@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_face_nobel_privil@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Face/room_face_nobel_privil.imageset/room_face_nobel_privil@2x.png b/YuMi/Assets.xcassets/yna/Face/room_face_nobel_privil.imageset/room_face_nobel_privil@2x.png new file mode 100644 index 00000000..b3bc9df1 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Face/room_face_nobel_privil.imageset/room_face_nobel_privil@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Face/room_face_nobel_privil.imageset/room_face_nobel_privil@3x.png b/YuMi/Assets.xcassets/yna/Face/room_face_nobel_privil.imageset/room_face_nobel_privil@3x.png new file mode 100644 index 00000000..e6c2d85d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Face/room_face_nobel_privil.imageset/room_face_nobel_privil@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Face/yumi_scope_face_nobel_lock.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Face/yumi_scope_face_nobel_lock.imageset/Contents.json deleted file mode 100644 index 060a1a4b..00000000 --- a/YuMi/Assets.xcassets/yna/Face/yumi_scope_face_nobel_lock.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_face_nobel_lock@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_face_nobel_lock@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Face/yumi_scope_face_nobel_lock.imageset/yumi_scope_face_nobel_lock@2x.png b/YuMi/Assets.xcassets/yna/Face/yumi_scope_face_nobel_lock.imageset/yumi_scope_face_nobel_lock@2x.png deleted file mode 100644 index 3687cbd9..00000000 Binary files a/YuMi/Assets.xcassets/yna/Face/yumi_scope_face_nobel_lock.imageset/yumi_scope_face_nobel_lock@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Face/yumi_scope_face_nobel_lock.imageset/yumi_scope_face_nobel_lock@3x.png b/YuMi/Assets.xcassets/yna/Face/yumi_scope_face_nobel_lock.imageset/yumi_scope_face_nobel_lock@3x.png deleted file mode 100644 index 1c30c195..00000000 Binary files a/YuMi/Assets.xcassets/yna/Face/yumi_scope_face_nobel_lock.imageset/yumi_scope_face_nobel_lock@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Face/yumi_scope_face_nobel_privil.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Face/yumi_scope_face_nobel_privil.imageset/Contents.json deleted file mode 100644 index dc07ac19..00000000 --- a/YuMi/Assets.xcassets/yna/Face/yumi_scope_face_nobel_privil.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_face_nobel_privil@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_face_nobel_privil@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Face/yumi_scope_face_nobel_privil.imageset/yumi_scope_face_nobel_privil@2x.png b/YuMi/Assets.xcassets/yna/Face/yumi_scope_face_nobel_privil.imageset/yumi_scope_face_nobel_privil@2x.png deleted file mode 100644 index 9a37483d..00000000 Binary files a/YuMi/Assets.xcassets/yna/Face/yumi_scope_face_nobel_privil.imageset/yumi_scope_face_nobel_privil@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Face/yumi_scope_face_nobel_privil.imageset/yumi_scope_face_nobel_privil@3x.png b/YuMi/Assets.xcassets/yna/Face/yumi_scope_face_nobel_privil.imageset/yumi_scope_face_nobel_privil@3x.png deleted file mode 100644 index 72c4a688..00000000 Binary files a/YuMi/Assets.xcassets/yna/Face/yumi_scope_face_nobel_privil.imageset/yumi_scope_face_nobel_privil@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/Contents.json b/YuMi/Assets.xcassets/yna/FirstRecharge/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/yna/FirstRecharge/Contents.json +++ b/YuMi/Assets.xcassets/yna/FirstRecharge/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/gift_first_recharge_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/FirstRecharge/gift_first_recharge_bg.imageset/Contents.json new file mode 100644 index 00000000..07a0909d --- /dev/null +++ b/YuMi/Assets.xcassets/yna/FirstRecharge/gift_first_recharge_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gift_first_recharge_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gift_first_recharge_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/gift_first_recharge_bg.imageset/gift_first_recharge_bg@2x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/gift_first_recharge_bg.imageset/gift_first_recharge_bg@2x.png new file mode 100644 index 00000000..a422228c Binary files /dev/null and b/YuMi/Assets.xcassets/yna/FirstRecharge/gift_first_recharge_bg.imageset/gift_first_recharge_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/gift_first_recharge_bg.imageset/gift_first_recharge_bg@3x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/gift_first_recharge_bg.imageset/gift_first_recharge_bg@3x.png new file mode 100644 index 00000000..efea6fe9 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/FirstRecharge/gift_first_recharge_bg.imageset/gift_first_recharge_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_bg.imageset/Contents.json new file mode 100644 index 00000000..8a419bec --- /dev/null +++ b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_first_recharge_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_first_recharge_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_bg.imageset/room_first_recharge_bg@2x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_bg.imageset/room_first_recharge_bg@2x.png new file mode 100644 index 00000000..f207cd4f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_bg.imageset/room_first_recharge_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_bg.imageset/room_first_recharge_bg@3x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_bg.imageset/room_first_recharge_bg@3x.png new file mode 100644 index 00000000..213c73e0 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_bg.imageset/room_first_recharge_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_cell_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_cell_bg.imageset/Contents.json new file mode 100644 index 00000000..c0c86054 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_cell_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_first_recharge_cell_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_first_recharge_cell_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_cell_bg.imageset/room_first_recharge_cell_bg@2x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_cell_bg.imageset/room_first_recharge_cell_bg@2x.png new file mode 100644 index 00000000..89325571 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_cell_bg.imageset/room_first_recharge_cell_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_cell_bg.imageset/room_first_recharge_cell_bg@3x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_cell_bg.imageset/room_first_recharge_cell_bg@3x.png new file mode 100644 index 00000000..c4ffb0c7 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_cell_bg.imageset/room_first_recharge_cell_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_descrip_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_descrip_bg.imageset/Contents.json new file mode 100644 index 00000000..48a96aa9 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_descrip_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_first_recharge_descrip_bg@2x@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_first_recharge_descrip_bg@2x@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_descrip_bg.imageset/room_first_recharge_descrip_bg@2x@2x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_descrip_bg.imageset/room_first_recharge_descrip_bg@2x@2x.png new file mode 100644 index 00000000..b3d08d55 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_descrip_bg.imageset/room_first_recharge_descrip_bg@2x@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_descrip_bg.imageset/room_first_recharge_descrip_bg@2x@3x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_descrip_bg.imageset/room_first_recharge_descrip_bg@2x@3x.png new file mode 100644 index 00000000..d6b84fbf Binary files /dev/null and b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_descrip_bg.imageset/room_first_recharge_descrip_bg@2x@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_enter.imageset/Contents.json b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_enter.imageset/Contents.json new file mode 100644 index 00000000..de704f3c --- /dev/null +++ b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_enter.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_first_recharge_enter@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_first_recharge_enter@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_enter.imageset/room_first_recharge_enter@2x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_enter.imageset/room_first_recharge_enter@2x.png new file mode 100644 index 00000000..e4e3c8b5 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_enter.imageset/room_first_recharge_enter@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_enter.imageset/room_first_recharge_enter@3x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_enter.imageset/room_first_recharge_enter@3x.png new file mode 100644 index 00000000..e7a971e9 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_enter.imageset/room_first_recharge_enter@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_extra.imageset/Contents.json b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_extra.imageset/Contents.json new file mode 100644 index 00000000..303f60e7 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_extra.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_first_recharge_extra@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_first_recharge_extra@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_extra.imageset/room_first_recharge_extra@2x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_extra.imageset/room_first_recharge_extra@2x.png new file mode 100644 index 00000000..e1e4bdc6 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_extra.imageset/room_first_recharge_extra@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_extra.imageset/room_first_recharge_extra@3x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_extra.imageset/room_first_recharge_extra@3x.png new file mode 100644 index 00000000..7e377059 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_extra.imageset/room_first_recharge_extra@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_help.imageset/Contents.json b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_help.imageset/Contents.json new file mode 100644 index 00000000..d15787e0 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_help.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_first_recharge_help@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_first_recharge_help@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_help.imageset/room_first_recharge_help@2x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_help.imageset/room_first_recharge_help@2x.png new file mode 100644 index 00000000..e567d574 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_help.imageset/room_first_recharge_help@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_help.imageset/room_first_recharge_help@3x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_help.imageset/room_first_recharge_help@3x.png new file mode 100644 index 00000000..5a7baebc Binary files /dev/null and b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_help.imageset/room_first_recharge_help@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_recharge.imageset/Contents.json b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_recharge.imageset/Contents.json new file mode 100644 index 00000000..0d29d0a9 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_recharge.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_first_recharge_recharge@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_first_recharge_recharge@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_recharge.imageset/room_first_recharge_recharge@2x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_recharge.imageset/room_first_recharge_recharge@2x.png new file mode 100644 index 00000000..00dbcdfb Binary files /dev/null and b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_recharge.imageset/room_first_recharge_recharge@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_recharge.imageset/room_first_recharge_recharge@3x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_recharge.imageset/room_first_recharge_recharge@3x.png new file mode 100644 index 00000000..b72b06a3 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_recharge.imageset/room_first_recharge_recharge@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_recharge_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_recharge_arrow.imageset/Contents.json new file mode 100644 index 00000000..31d30199 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_recharge_arrow.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_first_recharge_recharge_arrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_first_recharge_recharge_arrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_recharge_arrow.imageset/room_first_recharge_recharge_arrow@2x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_recharge_arrow.imageset/room_first_recharge_recharge_arrow@2x.png new file mode 100644 index 00000000..2ae0ac29 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_recharge_arrow.imageset/room_first_recharge_recharge_arrow@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_recharge_arrow.imageset/room_first_recharge_recharge_arrow@3x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_recharge_arrow.imageset/room_first_recharge_recharge_arrow@3x.png new file mode 100644 index 00000000..addb05b4 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_recharge_arrow.imageset/room_first_recharge_recharge_arrow@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_reward_extra_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_reward_extra_bg.imageset/Contents.json new file mode 100644 index 00000000..b4c52079 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_reward_extra_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_first_recharge_reward_extra_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_first_recharge_reward_extra_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_reward_extra_bg.imageset/room_first_recharge_reward_extra_bg@2x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_reward_extra_bg.imageset/room_first_recharge_reward_extra_bg@2x.png new file mode 100644 index 00000000..70a3d166 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_reward_extra_bg.imageset/room_first_recharge_reward_extra_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_reward_extra_bg.imageset/room_first_recharge_reward_extra_bg@3x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_reward_extra_bg.imageset/room_first_recharge_reward_extra_bg@3x.png new file mode 100644 index 00000000..f42456a6 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_reward_extra_bg.imageset/room_first_recharge_reward_extra_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_segment_select.imageset/Contents.json b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_segment_select.imageset/Contents.json new file mode 100644 index 00000000..41306808 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_segment_select.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_first_recharge_segment_select@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_first_recharge_segment_select@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_segment_select.imageset/room_first_recharge_segment_select@2x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_segment_select.imageset/room_first_recharge_segment_select@2x.png new file mode 100644 index 00000000..b5b25358 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_segment_select.imageset/room_first_recharge_segment_select@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_segment_select.imageset/room_first_recharge_segment_select@3x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_segment_select.imageset/room_first_recharge_segment_select@3x.png new file mode 100644 index 00000000..a7c79fd5 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_segment_select.imageset/room_first_recharge_segment_select@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_success_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_success_bg.imageset/Contents.json new file mode 100644 index 00000000..02f108f0 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_success_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_first_recharge_success_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_first_recharge_success_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_success_bg.imageset/room_first_recharge_success_bg@2x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_success_bg.imageset/room_first_recharge_success_bg@2x.png new file mode 100644 index 00000000..87e58b84 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_success_bg.imageset/room_first_recharge_success_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_success_bg.imageset/room_first_recharge_success_bg@3x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_success_bg.imageset/room_first_recharge_success_bg@3x.png new file mode 100644 index 00000000..8592cdd7 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/FirstRecharge/room_first_recharge_success_bg.imageset/room_first_recharge_success_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_present_first_recharge_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_present_first_recharge_background.imageset/Contents.json deleted file mode 100644 index e8a7fc04..00000000 --- a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_present_first_recharge_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_present_first_recharge_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_present_first_recharge_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_present_first_recharge_background.imageset/yumi_present_first_recharge_background@2x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_present_first_recharge_background.imageset/yumi_present_first_recharge_background@2x.png deleted file mode 100644 index a71cf10d..00000000 Binary files a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_present_first_recharge_background.imageset/yumi_present_first_recharge_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_present_first_recharge_background.imageset/yumi_present_first_recharge_background@3x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_present_first_recharge_background.imageset/yumi_present_first_recharge_background@3x.png deleted file mode 100644 index e389e86b..00000000 Binary files a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_present_first_recharge_background.imageset/yumi_present_first_recharge_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_background.imageset/Contents.json deleted file mode 100644 index 86608743..00000000 --- a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_first_recharge_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_first_recharge_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_background.imageset/yumi_scope_first_recharge_background@2x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_background.imageset/yumi_scope_first_recharge_background@2x.png deleted file mode 100644 index 65922634..00000000 Binary files a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_background.imageset/yumi_scope_first_recharge_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_background.imageset/yumi_scope_first_recharge_background@3x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_background.imageset/yumi_scope_first_recharge_background@3x.png deleted file mode 100644 index f43dbb74..00000000 Binary files a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_background.imageset/yumi_scope_first_recharge_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_cell_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_cell_background.imageset/Contents.json deleted file mode 100644 index 5a2d00e9..00000000 --- a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_cell_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_first_recharge_cell_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_first_recharge_cell_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_cell_background.imageset/yumi_scope_first_recharge_cell_background@2x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_cell_background.imageset/yumi_scope_first_recharge_cell_background@2x.png deleted file mode 100644 index 0c6ca325..00000000 Binary files a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_cell_background.imageset/yumi_scope_first_recharge_cell_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_cell_background.imageset/yumi_scope_first_recharge_cell_background@3x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_cell_background.imageset/yumi_scope_first_recharge_cell_background@3x.png deleted file mode 100644 index daa1c0b7..00000000 Binary files a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_cell_background.imageset/yumi_scope_first_recharge_cell_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_descrip_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_descrip_background.imageset/Contents.json deleted file mode 100644 index 9d699ec4..00000000 --- a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_descrip_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_first_recharge_descrip_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_first_recharge_descrip_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_descrip_background.imageset/yumi_scope_first_recharge_descrip_background@2x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_descrip_background.imageset/yumi_scope_first_recharge_descrip_background@2x.png deleted file mode 100644 index 2f16d524..00000000 Binary files a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_descrip_background.imageset/yumi_scope_first_recharge_descrip_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_descrip_background.imageset/yumi_scope_first_recharge_descrip_background@3x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_descrip_background.imageset/yumi_scope_first_recharge_descrip_background@3x.png deleted file mode 100644 index 89c3943d..00000000 Binary files a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_descrip_background.imageset/yumi_scope_first_recharge_descrip_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_enter.imageset/Contents.json b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_enter.imageset/Contents.json deleted file mode 100644 index 4338d2ca..00000000 --- a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_enter.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_first_recharge_enter@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_first_recharge_enter@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_enter.imageset/yumi_scope_first_recharge_enter@2x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_enter.imageset/yumi_scope_first_recharge_enter@2x.png deleted file mode 100644 index f1be5703..00000000 Binary files a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_enter.imageset/yumi_scope_first_recharge_enter@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_enter.imageset/yumi_scope_first_recharge_enter@3x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_enter.imageset/yumi_scope_first_recharge_enter@3x.png deleted file mode 100644 index 3f6214a1..00000000 Binary files a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_enter.imageset/yumi_scope_first_recharge_enter@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_extra.imageset/Contents.json b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_extra.imageset/Contents.json deleted file mode 100644 index ac60a551..00000000 --- a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_extra.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_first_recharge_extra@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_first_recharge_extra@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_extra.imageset/yumi_scope_first_recharge_extra@2x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_extra.imageset/yumi_scope_first_recharge_extra@2x.png deleted file mode 100644 index 271ec991..00000000 Binary files a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_extra.imageset/yumi_scope_first_recharge_extra@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_extra.imageset/yumi_scope_first_recharge_extra@3x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_extra.imageset/yumi_scope_first_recharge_extra@3x.png deleted file mode 100644 index d9642493..00000000 Binary files a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_extra.imageset/yumi_scope_first_recharge_extra@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_help.imageset/Contents.json b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_help.imageset/Contents.json deleted file mode 100644 index 119185d5..00000000 --- a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_help.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_first_recharge_help@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_first_recharge_help@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_help.imageset/yumi_scope_first_recharge_help@2x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_help.imageset/yumi_scope_first_recharge_help@2x.png deleted file mode 100644 index 1f3b81a1..00000000 Binary files a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_help.imageset/yumi_scope_first_recharge_help@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_help.imageset/yumi_scope_first_recharge_help@3x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_help.imageset/yumi_scope_first_recharge_help@3x.png deleted file mode 100644 index 59e3cec5..00000000 Binary files a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_help.imageset/yumi_scope_first_recharge_help@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_recharge.imageset/Contents.json b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_recharge.imageset/Contents.json deleted file mode 100644 index c79f55be..00000000 --- a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_recharge.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_first_recharge_recharge@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_first_recharge_recharge@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_recharge.imageset/yumi_scope_first_recharge_recharge@2x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_recharge.imageset/yumi_scope_first_recharge_recharge@2x.png deleted file mode 100644 index 8c941b96..00000000 Binary files a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_recharge.imageset/yumi_scope_first_recharge_recharge@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_recharge.imageset/yumi_scope_first_recharge_recharge@3x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_recharge.imageset/yumi_scope_first_recharge_recharge@3x.png deleted file mode 100644 index 809e7868..00000000 Binary files a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_recharge.imageset/yumi_scope_first_recharge_recharge@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_recharge_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_recharge_arrow.imageset/Contents.json deleted file mode 100644 index 54cc82cd..00000000 --- a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_recharge_arrow.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_first_recharge_recharge_arrow@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_first_recharge_recharge_arrow@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_recharge_arrow.imageset/yumi_scope_first_recharge_recharge_arrow@2x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_recharge_arrow.imageset/yumi_scope_first_recharge_recharge_arrow@2x.png deleted file mode 100644 index 0eecba5f..00000000 Binary files a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_recharge_arrow.imageset/yumi_scope_first_recharge_recharge_arrow@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_recharge_arrow.imageset/yumi_scope_first_recharge_recharge_arrow@3x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_recharge_arrow.imageset/yumi_scope_first_recharge_recharge_arrow@3x.png deleted file mode 100644 index 7032a94f..00000000 Binary files a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_recharge_arrow.imageset/yumi_scope_first_recharge_recharge_arrow@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_reward_extra_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_reward_extra_background.imageset/Contents.json deleted file mode 100644 index ef207cdf..00000000 --- a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_reward_extra_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_first_recharge_reward_extra_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_first_recharge_reward_extra_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_reward_extra_background.imageset/yumi_scope_first_recharge_reward_extra_background@2x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_reward_extra_background.imageset/yumi_scope_first_recharge_reward_extra_background@2x.png deleted file mode 100644 index 2deb5cff..00000000 Binary files a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_reward_extra_background.imageset/yumi_scope_first_recharge_reward_extra_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_reward_extra_background.imageset/yumi_scope_first_recharge_reward_extra_background@3x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_reward_extra_background.imageset/yumi_scope_first_recharge_reward_extra_background@3x.png deleted file mode 100644 index 1e969e10..00000000 Binary files a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_reward_extra_background.imageset/yumi_scope_first_recharge_reward_extra_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_segment_select.imageset/Contents.json b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_segment_select.imageset/Contents.json deleted file mode 100644 index dd5af62c..00000000 --- a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_segment_select.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_first_recharge_segment_select@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_first_recharge_segment_select@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_segment_select.imageset/yumi_scope_first_recharge_segment_select@2x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_segment_select.imageset/yumi_scope_first_recharge_segment_select@2x.png deleted file mode 100644 index 82bc7273..00000000 Binary files a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_segment_select.imageset/yumi_scope_first_recharge_segment_select@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_segment_select.imageset/yumi_scope_first_recharge_segment_select@3x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_segment_select.imageset/yumi_scope_first_recharge_segment_select@3x.png deleted file mode 100644 index 5e097c79..00000000 Binary files a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_segment_select.imageset/yumi_scope_first_recharge_segment_select@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_success_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_success_background.imageset/Contents.json deleted file mode 100644 index 87a69f06..00000000 --- a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_success_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_first_recharge_success_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_first_recharge_success_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_success_background.imageset/yumi_scope_first_recharge_success_background@2x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_success_background.imageset/yumi_scope_first_recharge_success_background@2x.png deleted file mode 100644 index b62219f7..00000000 Binary files a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_success_background.imageset/yumi_scope_first_recharge_success_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_success_background.imageset/yumi_scope_first_recharge_success_background@3x.png b/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_success_background.imageset/yumi_scope_first_recharge_success_background@3x.png deleted file mode 100644 index 17a36bba..00000000 Binary files a/YuMi/Assets.xcassets/yna/FirstRecharge/yumi_scope_first_recharge_success_background.imageset/yumi_scope_first_recharge_success_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_arrange_mic.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Menu/room_menu_arrange_mic.imageset/Contents.json new file mode 100644 index 00000000..bef052f2 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Menu/room_menu_arrange_mic.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_menu_arrange_mic@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_menu_arrange_mic@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_arrange_mic.imageset/room_menu_arrange_mic@2x.png b/YuMi/Assets.xcassets/yna/Menu/room_menu_arrange_mic.imageset/room_menu_arrange_mic@2x.png new file mode 100644 index 00000000..c955500a Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Menu/room_menu_arrange_mic.imageset/room_menu_arrange_mic@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_arrange_mic.imageset/room_menu_arrange_mic@3x.png b/YuMi/Assets.xcassets/yna/Menu/room_menu_arrange_mic.imageset/room_menu_arrange_mic@3x.png new file mode 100644 index 00000000..e42c122b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Menu/room_menu_arrange_mic.imageset/room_menu_arrange_mic@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_arrange_mic_new.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Menu/room_menu_arrange_mic_new.imageset/Contents.json new file mode 100644 index 00000000..ef464cdc --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Menu/room_menu_arrange_mic_new.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_menu_arrange_mic_new@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_menu_arrange_mic_new@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_arrange_mic_new.imageset/room_menu_arrange_mic_new@2x.png b/YuMi/Assets.xcassets/yna/Menu/room_menu_arrange_mic_new.imageset/room_menu_arrange_mic_new@2x.png new file mode 100644 index 00000000..1e6f848f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Menu/room_menu_arrange_mic_new.imageset/room_menu_arrange_mic_new@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_arrange_mic_new.imageset/room_menu_arrange_mic_new@3x.png b/YuMi/Assets.xcassets/yna/Menu/room_menu_arrange_mic_new.imageset/room_menu_arrange_mic_new@3x.png new file mode 100644 index 00000000..50fa6928 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Menu/room_menu_arrange_mic_new.imageset/room_menu_arrange_mic_new@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_face.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Menu/room_menu_face.imageset/Contents.json new file mode 100644 index 00000000..14b1da31 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Menu/room_menu_face.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_menu_face@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_face.imageset/room_menu_face@2x.png b/YuMi/Assets.xcassets/yna/Menu/room_menu_face.imageset/room_menu_face@2x.png new file mode 100644 index 00000000..abee97a9 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Menu/room_menu_face.imageset/room_menu_face@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_gift.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Menu/room_menu_gift.imageset/Contents.json new file mode 100644 index 00000000..8402423e --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Menu/room_menu_gift.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_menu_gift@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_menu_gift@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_gift.imageset/room_menu_gift@2x.png b/YuMi/Assets.xcassets/yna/Menu/room_menu_gift.imageset/room_menu_gift@2x.png new file mode 100644 index 00000000..34a8b4c9 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Menu/room_menu_gift.imageset/room_menu_gift@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_gift.imageset/room_menu_gift@3x.png b/YuMi/Assets.xcassets/yna/Menu/room_menu_gift.imageset/room_menu_gift@3x.png new file mode 100644 index 00000000..148127bb Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Menu/room_menu_gift.imageset/room_menu_gift@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_gift1.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Menu/room_menu_gift1.imageset/Contents.json new file mode 100644 index 00000000..2eabb31b --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Menu/room_menu_gift1.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_menu_gift1@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_menu_gift1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_gift1.imageset/room_menu_gift1@2x.png b/YuMi/Assets.xcassets/yna/Menu/room_menu_gift1.imageset/room_menu_gift1@2x.png new file mode 100644 index 00000000..167849f2 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Menu/room_menu_gift1.imageset/room_menu_gift1@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_gift1.imageset/room_menu_gift1@3x.png b/YuMi/Assets.xcassets/yna/Menu/room_menu_gift1.imageset/room_menu_gift1@3x.png new file mode 100644 index 00000000..88ffaab9 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Menu/room_menu_gift1.imageset/room_menu_gift1@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_gift_first_recharge.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Menu/room_menu_gift_first_recharge.imageset/Contents.json new file mode 100644 index 00000000..15577aa0 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Menu/room_menu_gift_first_recharge.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_menu_gift_first_recharge@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_menu_gift_first_recharge@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_gift_first_recharge.imageset/room_menu_gift_first_recharge@2x.png b/YuMi/Assets.xcassets/yna/Menu/room_menu_gift_first_recharge.imageset/room_menu_gift_first_recharge@2x.png new file mode 100644 index 00000000..894166c2 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Menu/room_menu_gift_first_recharge.imageset/room_menu_gift_first_recharge@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_gift_first_recharge.imageset/room_menu_gift_first_recharge@3x.png b/YuMi/Assets.xcassets/yna/Menu/room_menu_gift_first_recharge.imageset/room_menu_gift_first_recharge@3x.png new file mode 100644 index 00000000..8a4e5e1a Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Menu/room_menu_gift_first_recharge.imageset/room_menu_gift_first_recharge@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_message.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Menu/room_menu_message.imageset/Contents.json new file mode 100644 index 00000000..96bdbe73 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Menu/room_menu_message.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_menu_message@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_menu_message@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_message.imageset/room_menu_message@2x.png b/YuMi/Assets.xcassets/yna/Menu/room_menu_message.imageset/room_menu_message@2x.png new file mode 100644 index 00000000..52d4a440 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Menu/room_menu_message.imageset/room_menu_message@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_message.imageset/room_menu_message@3x.png b/YuMi/Assets.xcassets/yna/Menu/room_menu_message.imageset/room_menu_message@3x.png new file mode 100644 index 00000000..98f190fd Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Menu/room_menu_message.imageset/room_menu_message@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_mic_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Menu/room_menu_mic_close.imageset/Contents.json new file mode 100644 index 00000000..158d108a --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Menu/room_menu_mic_close.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_menu_mic_close@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_menu_mic_close@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_mic_close.imageset/room_menu_mic_close@2x.png b/YuMi/Assets.xcassets/yna/Menu/room_menu_mic_close.imageset/room_menu_mic_close@2x.png new file mode 100644 index 00000000..14939ef1 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Menu/room_menu_mic_close.imageset/room_menu_mic_close@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_mic_close.imageset/room_menu_mic_close@3x.png b/YuMi/Assets.xcassets/yna/Menu/room_menu_mic_close.imageset/room_menu_mic_close@3x.png new file mode 100644 index 00000000..54a96899 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Menu/room_menu_mic_close.imageset/room_menu_mic_close@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_mic_open.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Menu/room_menu_mic_open.imageset/Contents.json new file mode 100644 index 00000000..d1371509 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Menu/room_menu_mic_open.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_menu_mic_open@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_menu_mic_open@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_mic_open.imageset/room_menu_mic_open@2x.png b/YuMi/Assets.xcassets/yna/Menu/room_menu_mic_open.imageset/room_menu_mic_open@2x.png new file mode 100644 index 00000000..3a036a96 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Menu/room_menu_mic_open.imageset/room_menu_mic_open@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_mic_open.imageset/room_menu_mic_open@3x.png b/YuMi/Assets.xcassets/yna/Menu/room_menu_mic_open.imageset/room_menu_mic_open@3x.png new file mode 100644 index 00000000..f37c5b63 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Menu/room_menu_mic_open.imageset/room_menu_mic_open@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_more.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Menu/room_menu_more.imageset/Contents.json new file mode 100644 index 00000000..df7e3b9b --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Menu/room_menu_more.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_menu_more@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_more.imageset/room_menu_more@2x.png b/YuMi/Assets.xcassets/yna/Menu/room_menu_more.imageset/room_menu_more@2x.png new file mode 100644 index 00000000..e632a1ab Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Menu/room_menu_more.imageset/room_menu_more@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_new_message.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Menu/room_menu_new_message.imageset/Contents.json new file mode 100644 index 00000000..58c42b9f --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Menu/room_menu_new_message.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_menu_new_message@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_menu_new_message@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_new_message.imageset/room_menu_new_message@2x.png b/YuMi/Assets.xcassets/yna/Menu/room_menu_new_message.imageset/room_menu_new_message@2x.png new file mode 100644 index 00000000..e0bdacb6 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Menu/room_menu_new_message.imageset/room_menu_new_message@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_new_message.imageset/room_menu_new_message@3x.png b/YuMi/Assets.xcassets/yna/Menu/room_menu_new_message.imageset/room_menu_new_message@3x.png new file mode 100644 index 00000000..1c19606b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Menu/room_menu_new_message.imageset/room_menu_new_message@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_noble.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Menu/room_menu_noble.imageset/Contents.json new file mode 100644 index 00000000..1f796bb3 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Menu/room_menu_noble.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_menu_noble@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_menu_noble@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_noble.imageset/room_menu_noble@2x.png b/YuMi/Assets.xcassets/yna/Menu/room_menu_noble.imageset/room_menu_noble@2x.png new file mode 100644 index 00000000..f35d09e6 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Menu/room_menu_noble.imageset/room_menu_noble@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Menu/room_menu_noble.imageset/room_menu_noble@3x.png b/YuMi/Assets.xcassets/yna/Menu/room_menu_noble.imageset/room_menu_noble@3x.png new file mode 100644 index 00000000..f1138f5e Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Menu/room_menu_noble.imageset/room_menu_noble@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Menu/room_more_menu_play.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Menu/room_more_menu_play.imageset/Contents.json deleted file mode 100644 index 70b827e1..00000000 --- a/YuMi/Assets.xcassets/yna/Menu/room_more_menu_play.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "room_more_menu_play@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "room_more_menu_play@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/yna/Menu/room_more_menu_play.imageset/room_more_menu_play@2x.png b/YuMi/Assets.xcassets/yna/Menu/room_more_menu_play.imageset/room_more_menu_play@2x.png deleted file mode 100644 index dce433c8..00000000 Binary files a/YuMi/Assets.xcassets/yna/Menu/room_more_menu_play.imageset/room_more_menu_play@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Menu/room_more_menu_play.imageset/room_more_menu_play@3x.png b/YuMi/Assets.xcassets/yna/Menu/room_more_menu_play.imageset/room_more_menu_play@3x.png deleted file mode 100644 index 0905e384..00000000 Binary files a/YuMi/Assets.xcassets/yna/Menu/room_more_menu_play.imageset/room_more_menu_play@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_arrange_mic.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_arrange_mic.imageset/Contents.json deleted file mode 100644 index ebb578fe..00000000 --- a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_arrange_mic.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_menu_arrange_mic@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_menu_arrange_mic@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_arrange_mic.imageset/yumi_scope_menu_arrange_mic@2x.png b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_arrange_mic.imageset/yumi_scope_menu_arrange_mic@2x.png deleted file mode 100644 index ac09288e..00000000 Binary files a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_arrange_mic.imageset/yumi_scope_menu_arrange_mic@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_arrange_mic.imageset/yumi_scope_menu_arrange_mic@3x.png b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_arrange_mic.imageset/yumi_scope_menu_arrange_mic@3x.png deleted file mode 100644 index e25293dd..00000000 Binary files a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_arrange_mic.imageset/yumi_scope_menu_arrange_mic@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_arrange_mimage_new.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_arrange_mimage_new.imageset/Contents.json deleted file mode 100644 index 9bb98693..00000000 --- a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_arrange_mimage_new.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_menu_arrange_mimage_new@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_menu_arrange_mimage_new@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_arrange_mimage_new.imageset/yumi_scope_menu_arrange_mimage_new@2x.png b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_arrange_mimage_new.imageset/yumi_scope_menu_arrange_mimage_new@2x.png deleted file mode 100644 index 15a8125c..00000000 Binary files a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_arrange_mimage_new.imageset/yumi_scope_menu_arrange_mimage_new@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_arrange_mimage_new.imageset/yumi_scope_menu_arrange_mimage_new@3x.png b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_arrange_mimage_new.imageset/yumi_scope_menu_arrange_mimage_new@3x.png deleted file mode 100644 index c8006b0b..00000000 Binary files a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_arrange_mimage_new.imageset/yumi_scope_menu_arrange_mimage_new@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_face.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_face.imageset/Contents.json deleted file mode 100644 index a39269f2..00000000 --- a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_face.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_menu_face@2x.png", "idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_face.imageset/yumi_scope_menu_face@2x.png b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_face.imageset/yumi_scope_menu_face@2x.png deleted file mode 100644 index acd69d9e..00000000 Binary files a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_face.imageset/yumi_scope_menu_face@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_gift.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_gift.imageset/Contents.json deleted file mode 100644 index 50cb7930..00000000 --- a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_gift.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_menu_gift@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_menu_gift@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_gift.imageset/yumi_scope_menu_gift@2x.png b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_gift.imageset/yumi_scope_menu_gift@2x.png deleted file mode 100644 index 65c56251..00000000 Binary files a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_gift.imageset/yumi_scope_menu_gift@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_gift.imageset/yumi_scope_menu_gift@3x.png b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_gift.imageset/yumi_scope_menu_gift@3x.png deleted file mode 100644 index a2fcd3fb..00000000 Binary files a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_gift.imageset/yumi_scope_menu_gift@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_gift1.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_gift1.imageset/Contents.json deleted file mode 100644 index acb1dd21..00000000 --- a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_gift1.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_menu_gift1@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_menu_gift1@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_gift1.imageset/yumi_scope_menu_gift1@2x.png b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_gift1.imageset/yumi_scope_menu_gift1@2x.png deleted file mode 100644 index c73f9812..00000000 Binary files a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_gift1.imageset/yumi_scope_menu_gift1@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_gift1.imageset/yumi_scope_menu_gift1@3x.png b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_gift1.imageset/yumi_scope_menu_gift1@3x.png deleted file mode 100644 index 44bc348c..00000000 Binary files a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_gift1.imageset/yumi_scope_menu_gift1@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_message.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_message.imageset/Contents.json deleted file mode 100644 index d638de51..00000000 --- a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_message.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_menu_message@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_menu_message@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_message.imageset/yumi_scope_menu_message@2x.png b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_message.imageset/yumi_scope_menu_message@2x.png deleted file mode 100644 index ced34589..00000000 Binary files a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_message.imageset/yumi_scope_menu_message@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_message.imageset/yumi_scope_menu_message@3x.png b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_message.imageset/yumi_scope_menu_message@3x.png deleted file mode 100644 index 316fca22..00000000 Binary files a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_message.imageset/yumi_scope_menu_message@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_mimage_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_mimage_close.imageset/Contents.json deleted file mode 100644 index 65a2ccdc..00000000 --- a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_mimage_close.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_menu_mimage_close@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_menu_mimage_close@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_mimage_close.imageset/yumi_scope_menu_mimage_close@2x.png b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_mimage_close.imageset/yumi_scope_menu_mimage_close@2x.png deleted file mode 100644 index 8aed89bf..00000000 Binary files a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_mimage_close.imageset/yumi_scope_menu_mimage_close@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_mimage_close.imageset/yumi_scope_menu_mimage_close@3x.png b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_mimage_close.imageset/yumi_scope_menu_mimage_close@3x.png deleted file mode 100644 index e59c9727..00000000 Binary files a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_mimage_close.imageset/yumi_scope_menu_mimage_close@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_mimage_open.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_mimage_open.imageset/Contents.json deleted file mode 100644 index 4243aae0..00000000 --- a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_mimage_open.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_menu_mimage_open@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_menu_mimage_open@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_mimage_open.imageset/yumi_scope_menu_mimage_open@2x.png b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_mimage_open.imageset/yumi_scope_menu_mimage_open@2x.png deleted file mode 100644 index c51a2f3f..00000000 Binary files a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_mimage_open.imageset/yumi_scope_menu_mimage_open@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_mimage_open.imageset/yumi_scope_menu_mimage_open@3x.png b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_mimage_open.imageset/yumi_scope_menu_mimage_open@3x.png deleted file mode 100644 index 9fc391b8..00000000 Binary files a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_mimage_open.imageset/yumi_scope_menu_mimage_open@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_more.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_more.imageset/Contents.json deleted file mode 100644 index 71603381..00000000 --- a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_more.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_menu_more@2x.png", "idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_more.imageset/yumi_scope_menu_more@2x.png b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_more.imageset/yumi_scope_menu_more@2x.png deleted file mode 100644 index 6ecc742f..00000000 Binary files a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_more.imageset/yumi_scope_menu_more@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_new_message.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_new_message.imageset/Contents.json deleted file mode 100644 index 7a07d9b6..00000000 --- a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_new_message.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_menu_new_message@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_menu_new_message@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_new_message.imageset/yumi_scope_menu_new_message@2x.png b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_new_message.imageset/yumi_scope_menu_new_message@2x.png deleted file mode 100644 index 29e7043b..00000000 Binary files a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_new_message.imageset/yumi_scope_menu_new_message@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_new_message.imageset/yumi_scope_menu_new_message@3x.png b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_new_message.imageset/yumi_scope_menu_new_message@3x.png deleted file mode 100644 index 80c4264c..00000000 Binary files a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_new_message.imageset/yumi_scope_menu_new_message@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_noble.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_noble.imageset/Contents.json deleted file mode 100644 index c4fd9e05..00000000 --- a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_noble.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_menu_noble@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_menu_noble@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_noble.imageset/yumi_scope_menu_noble@2x.png b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_noble.imageset/yumi_scope_menu_noble@2x.png deleted file mode 100644 index d014afd0..00000000 Binary files a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_noble.imageset/yumi_scope_menu_noble@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_noble.imageset/yumi_scope_menu_noble@3x.png b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_noble.imageset/yumi_scope_menu_noble@3x.png deleted file mode 100644 index acad4dc2..00000000 Binary files a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_noble.imageset/yumi_scope_menu_noble@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_present_first_recharge.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_present_first_recharge.imageset/Contents.json deleted file mode 100644 index a7bab415..00000000 --- a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_present_first_recharge.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_menu_present_first_recharge@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_menu_present_first_recharge@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_present_first_recharge.imageset/yumi_scope_menu_present_first_recharge@2x.png b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_present_first_recharge.imageset/yumi_scope_menu_present_first_recharge@2x.png deleted file mode 100644 index 26920d41..00000000 Binary files a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_present_first_recharge.imageset/yumi_scope_menu_present_first_recharge@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_present_first_recharge.imageset/yumi_scope_menu_present_first_recharge@3x.png b/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_present_first_recharge.imageset/yumi_scope_menu_present_first_recharge@3x.png deleted file mode 100644 index 6e1b973d..00000000 Binary files a/YuMi/Assets.xcassets/yna/Menu/yumi_scope_menu_present_first_recharge.imageset/yumi_scope_menu_present_first_recharge@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Mini/Contents.json b/YuMi/Assets.xcassets/yna/Mini/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/yna/Mini/Contents.json +++ b/YuMi/Assets.xcassets/yna/Mini/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Mini/room_mini_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Mini/room_mini_background.imageset/Contents.json new file mode 100644 index 00000000..d734b0e3 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Mini/room_mini_background.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_mini_background@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_mini_background@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Mini/room_mini_background.imageset/room_mini_background@2x.png b/YuMi/Assets.xcassets/yna/Mini/room_mini_background.imageset/room_mini_background@2x.png new file mode 100644 index 00000000..aabe66a0 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Mini/room_mini_background.imageset/room_mini_background@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Mini/room_mini_background.imageset/room_mini_background@3x.png b/YuMi/Assets.xcassets/yna/Mini/room_mini_background.imageset/room_mini_background@3x.png new file mode 100644 index 00000000..401affa4 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Mini/room_mini_background.imageset/room_mini_background@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Mini/room_mini_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Mini/room_mini_close.imageset/Contents.json new file mode 100644 index 00000000..aff75805 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Mini/room_mini_close.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_mini_close@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_mini_close@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Mini/room_mini_close.imageset/room_mini_close@2x.png b/YuMi/Assets.xcassets/yna/Mini/room_mini_close.imageset/room_mini_close@2x.png new file mode 100644 index 00000000..c8c89355 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Mini/room_mini_close.imageset/room_mini_close@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Mini/room_mini_close.imageset/room_mini_close@3x.png b/YuMi/Assets.xcassets/yna/Mini/room_mini_close.imageset/room_mini_close@3x.png new file mode 100644 index 00000000..fe42b7ae Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Mini/room_mini_close.imageset/room_mini_close@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Mini/yumi_scope_mini_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Mini/yumi_scope_mini_background.imageset/Contents.json deleted file mode 100644 index 18a1c047..00000000 --- a/YuMi/Assets.xcassets/yna/Mini/yumi_scope_mini_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_mini_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_mini_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Mini/yumi_scope_mini_background.imageset/yumi_scope_mini_background@2x.png b/YuMi/Assets.xcassets/yna/Mini/yumi_scope_mini_background.imageset/yumi_scope_mini_background@2x.png deleted file mode 100644 index b39bae8b..00000000 Binary files a/YuMi/Assets.xcassets/yna/Mini/yumi_scope_mini_background.imageset/yumi_scope_mini_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Mini/yumi_scope_mini_background.imageset/yumi_scope_mini_background@3x.png b/YuMi/Assets.xcassets/yna/Mini/yumi_scope_mini_background.imageset/yumi_scope_mini_background@3x.png deleted file mode 100644 index 25c42571..00000000 Binary files a/YuMi/Assets.xcassets/yna/Mini/yumi_scope_mini_background.imageset/yumi_scope_mini_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Mini/yumi_scope_mini_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Mini/yumi_scope_mini_close.imageset/Contents.json deleted file mode 100644 index 0e8a3b35..00000000 --- a/YuMi/Assets.xcassets/yna/Mini/yumi_scope_mini_close.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_mini_close@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_mini_close@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Mini/yumi_scope_mini_close.imageset/yumi_scope_mini_close@2x.png b/YuMi/Assets.xcassets/yna/Mini/yumi_scope_mini_close.imageset/yumi_scope_mini_close@2x.png deleted file mode 100644 index 575a81c4..00000000 Binary files a/YuMi/Assets.xcassets/yna/Mini/yumi_scope_mini_close.imageset/yumi_scope_mini_close@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Mini/yumi_scope_mini_close.imageset/yumi_scope_mini_close@3x.png b/YuMi/Assets.xcassets/yna/Mini/yumi_scope_mini_close.imageset/yumi_scope_mini_close@3x.png deleted file mode 100644 index cc8b2bed..00000000 Binary files a/YuMi/Assets.xcassets/yna/Mini/yumi_scope_mini_close.imageset/yumi_scope_mini_close@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/yna/MoreMenu/Contents.json +++ b/YuMi/Assets.xcassets/yna/MoreMenu/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_anchor_pk.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_anchor_pk.imageset/Contents.json new file mode 100644 index 00000000..24eb19a6 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_anchor_pk.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_more_menu_anchor_pk@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_more_menu_anchor_pk@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_anchor_pk.imageset/room_more_menu_anchor_pk@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_anchor_pk.imageset/room_more_menu_anchor_pk@2x.png new file mode 100644 index 00000000..78b536a7 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_anchor_pk.imageset/room_more_menu_anchor_pk@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_anchor_pk.imageset/room_more_menu_anchor_pk@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_anchor_pk.imageset/room_more_menu_anchor_pk@3x.png new file mode 100644 index 00000000..7a5ef359 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_anchor_pk.imageset/room_more_menu_anchor_pk@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_cross_pk.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_cross_pk.imageset/Contents.json new file mode 100644 index 00000000..9f2255bf --- /dev/null +++ b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_cross_pk.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_more_menu_cross_pk@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_more_menu_cross_pk@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_cross_pk.imageset/room_more_menu_cross_pk@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_cross_pk.imageset/room_more_menu_cross_pk@2x.png new file mode 100644 index 00000000..693bfc86 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_cross_pk.imageset/room_more_menu_cross_pk@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_cross_pk.imageset/room_more_menu_cross_pk@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_cross_pk.imageset/room_more_menu_cross_pk@3x.png new file mode 100644 index 00000000..ae19bc35 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_cross_pk.imageset/room_more_menu_cross_pk@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_dating.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_dating.imageset/Contents.json new file mode 100644 index 00000000..e1e2cf40 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_dating.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_more_menu_dating@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_more_menu_dating@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_dating.imageset/room_more_menu_dating@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_dating.imageset/room_more_menu_dating@2x.png new file mode 100644 index 00000000..dddcca8d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_dating.imageset/room_more_menu_dating@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_dating.imageset/room_more_menu_dating@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_dating.imageset/room_more_menu_dating@3x.png new file mode 100644 index 00000000..f45f55a3 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_dating.imageset/room_more_menu_dating@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_gift_effect.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_gift_effect.imageset/Contents.json new file mode 100644 index 00000000..80c64416 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_gift_effect.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_more_menu_gift_effect@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_more_menu_gift_effect@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_gift_effect.imageset/room_more_menu_gift_effect@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_gift_effect.imageset/room_more_menu_gift_effect@2x.png new file mode 100644 index 00000000..b9c40f58 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_gift_effect.imageset/room_more_menu_gift_effect@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_gift_effect.imageset/room_more_menu_gift_effect@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_gift_effect.imageset/room_more_menu_gift_effect@3x.png new file mode 100644 index 00000000..6f0c918d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_gift_effect.imageset/room_more_menu_gift_effect@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_gift_value.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_gift_value.imageset/Contents.json new file mode 100644 index 00000000..a7e283d0 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_gift_value.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_more_menu_gift_value@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_more_menu_gift_value@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_gift_value.imageset/room_more_menu_gift_value@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_gift_value.imageset/room_more_menu_gift_value@2x.png new file mode 100644 index 00000000..9ec92fb0 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_gift_value.imageset/room_more_menu_gift_value@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_gift_value.imageset/room_more_menu_gift_value@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_gift_value.imageset/room_more_menu_gift_value@3x.png new file mode 100644 index 00000000..58836750 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_gift_value.imageset/room_more_menu_gift_value@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_invite_friend.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_invite_friend.imageset/Contents.json new file mode 100644 index 00000000..74543052 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_invite_friend.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_more_menu_invite_friend@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_more_menu_invite_friend@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_invite_friend.imageset/room_more_menu_invite_friend@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_invite_friend.imageset/room_more_menu_invite_friend@2x.png new file mode 100644 index 00000000..e99c0861 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_invite_friend.imageset/room_more_menu_invite_friend@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_invite_friend.imageset/room_more_menu_invite_friend@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_invite_friend.imageset/room_more_menu_invite_friend@3x.png new file mode 100644 index 00000000..b03231c8 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_invite_friend.imageset/room_more_menu_invite_friend@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_message.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_message.imageset/Contents.json new file mode 100644 index 00000000..410a10ec --- /dev/null +++ b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_message.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_more_menu_message@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_more_menu_message@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_message.imageset/room_more_menu_message@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_message.imageset/room_more_menu_message@2x.png new file mode 100644 index 00000000..2b05ba17 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_message.imageset/room_more_menu_message@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_message.imageset/room_more_menu_message@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_message.imageset/room_more_menu_message@3x.png new file mode 100644 index 00000000..c840007e Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_message.imageset/room_more_menu_message@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_message_clean.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_message_clean.imageset/Contents.json new file mode 100644 index 00000000..ac0dca43 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_message_clean.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_more_menu_message_clean@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_more_menu_message_clean@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_message_clean.imageset/room_more_menu_message_clean@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_message_clean.imageset/room_more_menu_message_clean@2x.png new file mode 100644 index 00000000..cc966372 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_message_clean.imageset/room_more_menu_message_clean@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_message_clean.imageset/room_more_menu_message_clean@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_message_clean.imageset/room_more_menu_message_clean@3x.png new file mode 100644 index 00000000..87144431 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_message_clean.imageset/room_more_menu_message_clean@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_release_radio.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_release_radio.imageset/Contents.json new file mode 100644 index 00000000..324967c2 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_release_radio.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_more_menu_release_radio@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_more_menu_release_radio@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_release_radio.imageset/room_more_menu_release_radio@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_release_radio.imageset/room_more_menu_release_radio@2x.png new file mode 100644 index 00000000..8b23d40e Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_release_radio.imageset/room_more_menu_release_radio@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_release_radio.imageset/room_more_menu_release_radio@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_release_radio.imageset/room_more_menu_release_radio@3x.png new file mode 100644 index 00000000..0df3f3e9 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_release_radio.imageset/room_more_menu_release_radio@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_room_pk.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_room_pk.imageset/Contents.json new file mode 100644 index 00000000..4f22bcb7 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_room_pk.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_more_menu_room_pk@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_more_menu_room_pk@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_room_pk.imageset/room_more_menu_room_pk@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_room_pk.imageset/room_more_menu_room_pk@2x.png new file mode 100644 index 00000000..b77b24e1 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_room_pk.imageset/room_more_menu_room_pk@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_room_pk.imageset/room_more_menu_room_pk@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_room_pk.imageset/room_more_menu_room_pk@3x.png new file mode 100644 index 00000000..17616e30 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_room_pk.imageset/room_more_menu_room_pk@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_setting.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_setting.imageset/Contents.json new file mode 100644 index 00000000..54d444f7 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_setting.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_more_menu_setting@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_more_menu_setting@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_setting.imageset/room_more_menu_setting@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_setting.imageset/room_more_menu_setting@2x.png new file mode 100644 index 00000000..5857c5f3 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_setting.imageset/room_more_menu_setting@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_setting.imageset/room_more_menu_setting@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_setting.imageset/room_more_menu_setting@3x.png new file mode 100644 index 00000000..8bd0f9a4 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_setting.imageset/room_more_menu_setting@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_trumpet.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_trumpet.imageset/Contents.json new file mode 100644 index 00000000..7532d71f --- /dev/null +++ b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_trumpet.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_more_menu_trumpet@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_more_menu_trumpet@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_trumpet.imageset/room_more_menu_trumpet@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_trumpet.imageset/room_more_menu_trumpet@2x.png new file mode 100644 index 00000000..d6ccac29 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_trumpet.imageset/room_more_menu_trumpet@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_trumpet.imageset/room_more_menu_trumpet@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_trumpet.imageset/room_more_menu_trumpet@3x.png new file mode 100644 index 00000000..b5402b13 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_menu_trumpet.imageset/room_more_menu_trumpet@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_voice_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_voice_close.imageset/Contents.json new file mode 100644 index 00000000..12670a0b --- /dev/null +++ b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_voice_close.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_more_voice_close@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_more_voice_close@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_voice_close.imageset/room_more_voice_close@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_voice_close.imageset/room_more_voice_close@2x.png new file mode 100644 index 00000000..7aa0163a Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_voice_close.imageset/room_more_voice_close@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_voice_close.imageset/room_more_voice_close@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_voice_close.imageset/room_more_voice_close@3x.png new file mode 100644 index 00000000..5cb1d97a Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_voice_close.imageset/room_more_voice_close@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_voice_open.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_voice_open.imageset/Contents.json new file mode 100644 index 00000000..8cd2878f --- /dev/null +++ b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_voice_open.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_more_voice_open@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_more_voice_open@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_voice_open.imageset/room_more_voice_open@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_voice_open.imageset/room_more_voice_open@2x.png new file mode 100644 index 00000000..30e5735a Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_voice_open.imageset/room_more_voice_open@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/room_more_voice_open.imageset/room_more_voice_open@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_voice_open.imageset/room_more_voice_open@3x.png new file mode 100644 index 00000000..5c01ad61 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/MoreMenu/room_more_voice_open.imageset/room_more_voice_open@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_anchor_pk.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_anchor_pk.imageset/Contents.json deleted file mode 100644 index ccf02467..00000000 --- a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_anchor_pk.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_more_menu_anchor_pk@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_more_menu_anchor_pk@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_anchor_pk.imageset/yumi_scope_more_menu_anchor_pk@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_anchor_pk.imageset/yumi_scope_more_menu_anchor_pk@2x.png deleted file mode 100644 index 02848a72..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_anchor_pk.imageset/yumi_scope_more_menu_anchor_pk@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_anchor_pk.imageset/yumi_scope_more_menu_anchor_pk@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_anchor_pk.imageset/yumi_scope_more_menu_anchor_pk@3x.png deleted file mode 100644 index 2dc9372b..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_anchor_pk.imageset/yumi_scope_more_menu_anchor_pk@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_cross_pk.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_cross_pk.imageset/Contents.json deleted file mode 100644 index f4e73ff7..00000000 --- a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_cross_pk.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_more_menu_cross_pk@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_more_menu_cross_pk@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_cross_pk.imageset/yumi_scope_more_menu_cross_pk@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_cross_pk.imageset/yumi_scope_more_menu_cross_pk@2x.png deleted file mode 100644 index 1fbfdd31..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_cross_pk.imageset/yumi_scope_more_menu_cross_pk@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_cross_pk.imageset/yumi_scope_more_menu_cross_pk@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_cross_pk.imageset/yumi_scope_more_menu_cross_pk@3x.png deleted file mode 100644 index 928f76e8..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_cross_pk.imageset/yumi_scope_more_menu_cross_pk@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_dating.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_dating.imageset/Contents.json deleted file mode 100644 index 7afe9e55..00000000 --- a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_dating.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_more_menu_dating@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_more_menu_dating@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_dating.imageset/yumi_scope_more_menu_dating@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_dating.imageset/yumi_scope_more_menu_dating@2x.png deleted file mode 100644 index 2979afbc..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_dating.imageset/yumi_scope_more_menu_dating@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_dating.imageset/yumi_scope_more_menu_dating@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_dating.imageset/yumi_scope_more_menu_dating@3x.png deleted file mode 100644 index 10e92b78..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_dating.imageset/yumi_scope_more_menu_dating@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_invite_friend.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_invite_friend.imageset/Contents.json deleted file mode 100644 index 83711ee0..00000000 --- a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_invite_friend.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_more_menu_invite_friend@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_more_menu_invite_friend@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_invite_friend.imageset/yumi_scope_more_menu_invite_friend@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_invite_friend.imageset/yumi_scope_more_menu_invite_friend@2x.png deleted file mode 100644 index b62a724e..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_invite_friend.imageset/yumi_scope_more_menu_invite_friend@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_invite_friend.imageset/yumi_scope_more_menu_invite_friend@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_invite_friend.imageset/yumi_scope_more_menu_invite_friend@3x.png deleted file mode 100644 index a9822c8e..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_invite_friend.imageset/yumi_scope_more_menu_invite_friend@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_message.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_message.imageset/Contents.json deleted file mode 100644 index 234957ca..00000000 --- a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_message.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_more_menu_message@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_more_menu_message@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_message.imageset/yumi_scope_more_menu_message@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_message.imageset/yumi_scope_more_menu_message@2x.png deleted file mode 100644 index ad4ab26a..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_message.imageset/yumi_scope_more_menu_message@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_message.imageset/yumi_scope_more_menu_message@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_message.imageset/yumi_scope_more_menu_message@3x.png deleted file mode 100644 index ddf5ff4f..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_message.imageset/yumi_scope_more_menu_message@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_msg_clean.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_msg_clean.imageset/Contents.json deleted file mode 100644 index 2cc5cd3b..00000000 --- a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_msg_clean.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_more_menu_msg_clean@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_more_menu_msg_clean@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_msg_clean.imageset/yumi_scope_more_menu_msg_clean@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_msg_clean.imageset/yumi_scope_more_menu_msg_clean@2x.png deleted file mode 100644 index 6a4f64db..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_msg_clean.imageset/yumi_scope_more_menu_msg_clean@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_msg_clean.imageset/yumi_scope_more_menu_msg_clean@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_msg_clean.imageset/yumi_scope_more_menu_msg_clean@3x.png deleted file mode 100644 index d64d6d2d..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_msg_clean.imageset/yumi_scope_more_menu_msg_clean@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_present_effect.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_present_effect.imageset/Contents.json deleted file mode 100644 index d331e246..00000000 --- a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_present_effect.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_more_menu_present_effect@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_more_menu_present_effect@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_present_effect.imageset/yumi_scope_more_menu_present_effect@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_present_effect.imageset/yumi_scope_more_menu_present_effect@2x.png deleted file mode 100644 index dc4d244a..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_present_effect.imageset/yumi_scope_more_menu_present_effect@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_present_effect.imageset/yumi_scope_more_menu_present_effect@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_present_effect.imageset/yumi_scope_more_menu_present_effect@3x.png deleted file mode 100644 index a8623903..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_present_effect.imageset/yumi_scope_more_menu_present_effect@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_present_value.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_present_value.imageset/Contents.json deleted file mode 100644 index 510b07ac..00000000 --- a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_present_value.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_more_menu_present_value@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_more_menu_present_value@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_present_value.imageset/yumi_scope_more_menu_present_value@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_present_value.imageset/yumi_scope_more_menu_present_value@2x.png deleted file mode 100644 index 725e663c..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_present_value.imageset/yumi_scope_more_menu_present_value@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_present_value.imageset/yumi_scope_more_menu_present_value@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_present_value.imageset/yumi_scope_more_menu_present_value@3x.png deleted file mode 100644 index 4eef09c1..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_present_value.imageset/yumi_scope_more_menu_present_value@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_release_radio.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_release_radio.imageset/Contents.json deleted file mode 100644 index 2fafa655..00000000 --- a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_release_radio.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_more_menu_release_radio@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_more_menu_release_radio@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_release_radio.imageset/yumi_scope_more_menu_release_radio@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_release_radio.imageset/yumi_scope_more_menu_release_radio@2x.png deleted file mode 100644 index 58d4a10b..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_release_radio.imageset/yumi_scope_more_menu_release_radio@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_release_radio.imageset/yumi_scope_more_menu_release_radio@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_release_radio.imageset/yumi_scope_more_menu_release_radio@3x.png deleted file mode 100644 index 317c236a..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_release_radio.imageset/yumi_scope_more_menu_release_radio@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_scope_pk.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_scope_pk.imageset/Contents.json deleted file mode 100644 index cfb6d695..00000000 --- a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_scope_pk.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_more_menu_scope_pk@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_more_menu_scope_pk@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_scope_pk.imageset/yumi_scope_more_menu_scope_pk@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_scope_pk.imageset/yumi_scope_more_menu_scope_pk@2x.png deleted file mode 100644 index 1433bb27..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_scope_pk.imageset/yumi_scope_more_menu_scope_pk@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_scope_pk.imageset/yumi_scope_more_menu_scope_pk@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_scope_pk.imageset/yumi_scope_more_menu_scope_pk@3x.png deleted file mode 100644 index c69d8e96..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_scope_pk.imageset/yumi_scope_more_menu_scope_pk@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_setting.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_setting.imageset/Contents.json deleted file mode 100644 index d35910c3..00000000 --- a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_setting.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_more_menu_setting@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_more_menu_setting@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_setting.imageset/yumi_scope_more_menu_setting@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_setting.imageset/yumi_scope_more_menu_setting@2x.png deleted file mode 100644 index 3f441ab4..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_setting.imageset/yumi_scope_more_menu_setting@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_setting.imageset/yumi_scope_more_menu_setting@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_setting.imageset/yumi_scope_more_menu_setting@3x.png deleted file mode 100644 index 7c21214a..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_setting.imageset/yumi_scope_more_menu_setting@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_trumpet.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_trumpet.imageset/Contents.json deleted file mode 100644 index 1e729457..00000000 --- a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_trumpet.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_more_menu_trumpet@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_more_menu_trumpet@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_trumpet.imageset/yumi_scope_more_menu_trumpet@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_trumpet.imageset/yumi_scope_more_menu_trumpet@2x.png deleted file mode 100644 index fdc51214..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_trumpet.imageset/yumi_scope_more_menu_trumpet@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_trumpet.imageset/yumi_scope_more_menu_trumpet@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_trumpet.imageset/yumi_scope_more_menu_trumpet@3x.png deleted file mode 100644 index 47ebaf78..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_menu_trumpet.imageset/yumi_scope_more_menu_trumpet@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_voice_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_voice_close.imageset/Contents.json deleted file mode 100644 index cc47a1a7..00000000 --- a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_voice_close.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_more_voice_close@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_more_voice_close@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_voice_close.imageset/yumi_scope_more_voice_close@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_voice_close.imageset/yumi_scope_more_voice_close@2x.png deleted file mode 100644 index e3f575bc..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_voice_close.imageset/yumi_scope_more_voice_close@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_voice_close.imageset/yumi_scope_more_voice_close@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_voice_close.imageset/yumi_scope_more_voice_close@3x.png deleted file mode 100644 index 79cb446b..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_voice_close.imageset/yumi_scope_more_voice_close@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_voice_open.imageset/Contents.json b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_voice_open.imageset/Contents.json deleted file mode 100644 index 58665ada..00000000 --- a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_voice_open.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_more_voice_open@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_more_voice_open@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_voice_open.imageset/yumi_scope_more_voice_open@2x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_voice_open.imageset/yumi_scope_more_voice_open@2x.png deleted file mode 100644 index 9c22c999..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_voice_open.imageset/yumi_scope_more_voice_open@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_voice_open.imageset/yumi_scope_more_voice_open@3x.png b/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_voice_open.imageset/yumi_scope_more_voice_open@3x.png deleted file mode 100644 index 185d53d1..00000000 Binary files a/YuMi/Assets.xcassets/yna/MoreMenu/yumi_scope_more_voice_open.imageset/yumi_scope_more_voice_open@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/NewUserGift/Contents.json b/YuMi/Assets.xcassets/yna/NewUserGift/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/yna/NewUserGift/Contents.json +++ b/YuMi/Assets.xcassets/yna/NewUserGift/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/NewUserGift/room_newUser_gift_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/NewUserGift/room_newUser_gift_bg.imageset/Contents.json new file mode 100644 index 00000000..83527b22 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/NewUserGift/room_newUser_gift_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_newUser_gift_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_newUser_gift_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/NewUserGift/room_newUser_gift_bg.imageset/room_newUser_gift_bg@2x.png b/YuMi/Assets.xcassets/yna/NewUserGift/room_newUser_gift_bg.imageset/room_newUser_gift_bg@2x.png new file mode 100644 index 00000000..ff2734c8 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/NewUserGift/room_newUser_gift_bg.imageset/room_newUser_gift_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/NewUserGift/room_newUser_gift_bg.imageset/room_newUser_gift_bg@3x.png b/YuMi/Assets.xcassets/yna/NewUserGift/room_newUser_gift_bg.imageset/room_newUser_gift_bg@3x.png new file mode 100644 index 00000000..0d982ed7 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/NewUserGift/room_newUser_gift_bg.imageset/room_newUser_gift_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/NewUserGift/yumi_scope_newUser_present_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/NewUserGift/yumi_scope_newUser_present_background.imageset/Contents.json deleted file mode 100644 index 73763e8d..00000000 --- a/YuMi/Assets.xcassets/yna/NewUserGift/yumi_scope_newUser_present_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_newUser_present_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_newUser_present_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/NewUserGift/yumi_scope_newUser_present_background.imageset/yumi_scope_newUser_present_background@2x.png b/YuMi/Assets.xcassets/yna/NewUserGift/yumi_scope_newUser_present_background.imageset/yumi_scope_newUser_present_background@2x.png deleted file mode 100644 index 769f4602..00000000 Binary files a/YuMi/Assets.xcassets/yna/NewUserGift/yumi_scope_newUser_present_background.imageset/yumi_scope_newUser_present_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/NewUserGift/yumi_scope_newUser_present_background.imageset/yumi_scope_newUser_present_background@3x.png b/YuMi/Assets.xcassets/yna/NewUserGift/yumi_scope_newUser_present_background.imageset/yumi_scope_newUser_present_background@3x.png deleted file mode 100644 index 84c8aff7..00000000 Binary files a/YuMi/Assets.xcassets/yna/NewUserGift/yumi_scope_newUser_present_background.imageset/yumi_scope_newUser_present_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Position/Contents.json b/YuMi/Assets.xcassets/yna/Position/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/yna/Position/Contents.json +++ b/YuMi/Assets.xcassets/yna/Position/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Position/room_game_position_crown.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/room_game_position_crown.imageset/Contents.json new file mode 100644 index 00000000..c49a023e --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Position/room_game_position_crown.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "room_game_position_crown.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Position/room_game_position_crown.imageset/room_game_position_crown.png b/YuMi/Assets.xcassets/yna/Position/room_game_position_crown.imageset/room_game_position_crown.png new file mode 100644 index 00000000..4a2e1c51 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Position/room_game_position_crown.imageset/room_game_position_crown.png differ diff --git a/YuMi/Assets.xcassets/yna/Position/room_game_position_mine.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/room_game_position_mine.imageset/Contents.json new file mode 100644 index 00000000..2cee15af --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Position/room_game_position_mine.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "room_game_position_mine.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Position/room_game_position_mine.imageset/room_game_position_mine.png b/YuMi/Assets.xcassets/yna/Position/room_game_position_mine.imageset/room_game_position_mine.png new file mode 100644 index 00000000..5d809258 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Position/room_game_position_mine.imageset/room_game_position_mine.png differ diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_boss.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/room_position_boss.imageset/Contents.json new file mode 100644 index 00000000..9d99f0b3 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Position/room_position_boss.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_position_boss@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_position_boss@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_boss.imageset/room_position_boss@2x.png b/YuMi/Assets.xcassets/yna/Position/room_position_boss.imageset/room_position_boss@2x.png new file mode 100644 index 00000000..e0972cae Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Position/room_position_boss.imageset/room_position_boss@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_boss.imageset/room_position_boss@3x.png b/YuMi/Assets.xcassets/yna/Position/room_position_boss.imageset/room_position_boss@3x.png new file mode 100644 index 00000000..5eab5bf4 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Position/room_position_boss.imageset/room_position_boss@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_dating_female_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/room_position_dating_female_bg.imageset/Contents.json new file mode 100644 index 00000000..e17c4895 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Position/room_position_dating_female_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_position_dating_female_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_position_dating_female_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_dating_female_bg.imageset/room_position_dating_female_bg@2x.png b/YuMi/Assets.xcassets/yna/Position/room_position_dating_female_bg.imageset/room_position_dating_female_bg@2x.png new file mode 100644 index 00000000..8a176e3f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Position/room_position_dating_female_bg.imageset/room_position_dating_female_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_dating_female_bg.imageset/room_position_dating_female_bg@3x.png b/YuMi/Assets.xcassets/yna/Position/room_position_dating_female_bg.imageset/room_position_dating_female_bg@3x.png new file mode 100644 index 00000000..8f8a4556 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Position/room_position_dating_female_bg.imageset/room_position_dating_female_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_dating_male_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/room_position_dating_male_bg.imageset/Contents.json new file mode 100644 index 00000000..44ee2fbc --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Position/room_position_dating_male_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_position_dating_male_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_position_dating_male_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_dating_male_bg.imageset/room_position_dating_male_bg@2x.png b/YuMi/Assets.xcassets/yna/Position/room_position_dating_male_bg.imageset/room_position_dating_male_bg@2x.png new file mode 100644 index 00000000..f3012037 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Position/room_position_dating_male_bg.imageset/room_position_dating_male_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_dating_male_bg.imageset/room_position_dating_male_bg@3x.png b/YuMi/Assets.xcassets/yna/Position/room_position_dating_male_bg.imageset/room_position_dating_male_bg@3x.png new file mode 100644 index 00000000..d6733fdc Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Position/room_position_dating_male_bg.imageset/room_position_dating_male_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_forbid_kicked.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/room_position_forbid_kicked.imageset/Contents.json new file mode 100644 index 00000000..2a88c2f4 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Position/room_position_forbid_kicked.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_position_ forbid_kicked@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_position_ forbid_kicked@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_forbid_kicked.imageset/room_position_ forbid_kicked@2x.png b/YuMi/Assets.xcassets/yna/Position/room_position_forbid_kicked.imageset/room_position_ forbid_kicked@2x.png new file mode 100644 index 00000000..29482260 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Position/room_position_forbid_kicked.imageset/room_position_ forbid_kicked@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_forbid_kicked.imageset/room_position_ forbid_kicked@3x.png b/YuMi/Assets.xcassets/yna/Position/room_position_forbid_kicked.imageset/room_position_ forbid_kicked@3x.png new file mode 100644 index 00000000..2622c17d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Position/room_position_forbid_kicked.imageset/room_position_ forbid_kicked@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_giftValue_heart.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/room_position_giftValue_heart.imageset/Contents.json new file mode 100644 index 00000000..41fbcaed --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Position/room_position_giftValue_heart.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_position_giftValue_heart@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_position_giftValue_heart@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_giftValue_heart.imageset/room_position_giftValue_heart@2x.png b/YuMi/Assets.xcassets/yna/Position/room_position_giftValue_heart.imageset/room_position_giftValue_heart@2x.png new file mode 100644 index 00000000..b49c4521 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Position/room_position_giftValue_heart.imageset/room_position_giftValue_heart@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_giftValue_heart.imageset/room_position_giftValue_heart@3x.png b/YuMi/Assets.xcassets/yna/Position/room_position_giftValue_heart.imageset/room_position_giftValue_heart@3x.png new file mode 100644 index 00000000..75343e59 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Position/room_position_giftValue_heart.imageset/room_position_giftValue_heart@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_lock.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/room_position_lock.imageset/Contents.json new file mode 100644 index 00000000..bd58c2b0 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Position/room_position_lock.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_position_lock@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_position_lock@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_lock.imageset/room_position_lock@2x.png b/YuMi/Assets.xcassets/yna/Position/room_position_lock.imageset/room_position_lock@2x.png new file mode 100644 index 00000000..320b5d69 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Position/room_position_lock.imageset/room_position_lock@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_lock.imageset/room_position_lock@3x.png b/YuMi/Assets.xcassets/yna/Position/room_position_lock.imageset/room_position_lock@3x.png new file mode 100644 index 00000000..f44cd404 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Position/room_position_lock.imageset/room_position_lock@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_lock1.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/room_position_lock1.imageset/Contents.json new file mode 100644 index 00000000..feaacb6e --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Position/room_position_lock1.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_position_lock1@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_position_lock1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_lock1.imageset/room_position_lock1@2x.png b/YuMi/Assets.xcassets/yna/Position/room_position_lock1.imageset/room_position_lock1@2x.png new file mode 100644 index 00000000..5ef03dce Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Position/room_position_lock1.imageset/room_position_lock1@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_lock1.imageset/room_position_lock1@3x.png b/YuMi/Assets.xcassets/yna/Position/room_position_lock1.imageset/room_position_lock1@3x.png new file mode 100644 index 00000000..4f6a0a6b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Position/room_position_lock1.imageset/room_position_lock1@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_mute.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/room_position_mute.imageset/Contents.json new file mode 100644 index 00000000..90562d41 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Position/room_position_mute.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_position_mute@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_position_mute@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_mute.imageset/room_position_mute@2x.png b/YuMi/Assets.xcassets/yna/Position/room_position_mute.imageset/room_position_mute@2x.png new file mode 100644 index 00000000..329b611c Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Position/room_position_mute.imageset/room_position_mute@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_mute.imageset/room_position_mute@3x.png b/YuMi/Assets.xcassets/yna/Position/room_position_mute.imageset/room_position_mute@3x.png new file mode 100644 index 00000000..1116732f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Position/room_position_mute.imageset/room_position_mute@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_mute_Anchor.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/room_position_mute_Anchor.imageset/Contents.json new file mode 100644 index 00000000..b6fb6206 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Position/room_position_mute_Anchor.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_position_mute_big@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_position_mute_big@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_mute_Anchor.imageset/room_position_mute_big@2x.png b/YuMi/Assets.xcassets/yna/Position/room_position_mute_Anchor.imageset/room_position_mute_big@2x.png new file mode 100644 index 00000000..297229af Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Position/room_position_mute_Anchor.imageset/room_position_mute_big@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_mute_Anchor.imageset/room_position_mute_big@3x.png b/YuMi/Assets.xcassets/yna/Position/room_position_mute_Anchor.imageset/room_position_mute_big@3x.png new file mode 100644 index 00000000..a2439719 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Position/room_position_mute_Anchor.imageset/room_position_mute_big@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/room_position_normal.imageset/Contents.json new file mode 100644 index 00000000..c0890b20 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Position/room_position_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_position_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_position_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_normal.imageset/room_position_normal@2x.png b/YuMi/Assets.xcassets/yna/Position/room_position_normal.imageset/room_position_normal@2x.png new file mode 100644 index 00000000..42f18d28 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Position/room_position_normal.imageset/room_position_normal@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_normal.imageset/room_position_normal@3x.png b/YuMi/Assets.xcassets/yna/Position/room_position_normal.imageset/room_position_normal@3x.png new file mode 100644 index 00000000..9a29053b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Position/room_position_normal.imageset/room_position_normal@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_normal1.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/room_position_normal1.imageset/Contents.json new file mode 100644 index 00000000..9d32c21a --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Position/room_position_normal1.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_position_normal1@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_position_normal1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_normal1.imageset/room_position_normal1@2x.png b/YuMi/Assets.xcassets/yna/Position/room_position_normal1.imageset/room_position_normal1@2x.png new file mode 100644 index 00000000..e73b7e59 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Position/room_position_normal1.imageset/room_position_normal1@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Position/room_position_normal1.imageset/room_position_normal1@3x.png b/YuMi/Assets.xcassets/yna/Position/room_position_normal1.imageset/room_position_normal1@3x.png new file mode 100644 index 00000000..a95ab4e2 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Position/room_position_normal1.imageset/room_position_normal1@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Position/room_postion_topic_edit.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/room_postion_topic_edit.imageset/Contents.json new file mode 100644 index 00000000..7fb4bc78 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Position/room_postion_topic_edit.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_postion_topic_edit@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_postion_topic_edit@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Position/room_postion_topic_edit.imageset/room_postion_topic_edit@2x.png b/YuMi/Assets.xcassets/yna/Position/room_postion_topic_edit.imageset/room_postion_topic_edit@2x.png new file mode 100644 index 00000000..009bbfed Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Position/room_postion_topic_edit.imageset/room_postion_topic_edit@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Position/room_postion_topic_edit.imageset/room_postion_topic_edit@3x.png b/YuMi/Assets.xcassets/yna/Position/room_postion_topic_edit.imageset/room_postion_topic_edit@3x.png new file mode 100644 index 00000000..5b28b4de Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Position/room_postion_topic_edit.imageset/room_postion_topic_edit@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_game_position_crown.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/yumi_scope_game_position_crown.imageset/Contents.json deleted file mode 100644 index 53b2c93e..00000000 --- a/YuMi/Assets.xcassets/yna/Position/yumi_scope_game_position_crown.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_scope_game_position_crown.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_game_position_crown.imageset/yumi_scope_game_position_crown.png b/YuMi/Assets.xcassets/yna/Position/yumi_scope_game_position_crown.imageset/yumi_scope_game_position_crown.png deleted file mode 100644 index 75f66a85..00000000 Binary files a/YuMi/Assets.xcassets/yna/Position/yumi_scope_game_position_crown.imageset/yumi_scope_game_position_crown.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_game_position_mine.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/yumi_scope_game_position_mine.imageset/Contents.json deleted file mode 100644 index 25cbbd5a..00000000 --- a/YuMi/Assets.xcassets/yna/Position/yumi_scope_game_position_mine.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_scope_game_position_mine.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_game_position_mine.imageset/yumi_scope_game_position_mine.png b/YuMi/Assets.xcassets/yna/Position/yumi_scope_game_position_mine.imageset/yumi_scope_game_position_mine.png deleted file mode 100644 index 90ce8366..00000000 Binary files a/YuMi/Assets.xcassets/yna/Position/yumi_scope_game_position_mine.imageset/yumi_scope_game_position_mine.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_boss.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_boss.imageset/Contents.json deleted file mode 100644 index 17a4609b..00000000 --- a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_boss.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_position_boss@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_position_boss@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_boss.imageset/yumi_scope_position_boss@2x.png b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_boss.imageset/yumi_scope_position_boss@2x.png deleted file mode 100644 index 6cccd815..00000000 Binary files a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_boss.imageset/yumi_scope_position_boss@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_boss.imageset/yumi_scope_position_boss@3x.png b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_boss.imageset/yumi_scope_position_boss@3x.png deleted file mode 100644 index 8eb3c18a..00000000 Binary files a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_boss.imageset/yumi_scope_position_boss@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_dating_female_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_dating_female_background.imageset/Contents.json deleted file mode 100644 index 1d6b54c1..00000000 --- a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_dating_female_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_position_dating_female_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_position_dating_female_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_dating_female_background.imageset/yumi_scope_position_dating_female_background@2x.png b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_dating_female_background.imageset/yumi_scope_position_dating_female_background@2x.png deleted file mode 100644 index 8b7a053f..00000000 Binary files a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_dating_female_background.imageset/yumi_scope_position_dating_female_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_dating_female_background.imageset/yumi_scope_position_dating_female_background@3x.png b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_dating_female_background.imageset/yumi_scope_position_dating_female_background@3x.png deleted file mode 100644 index 48eb3670..00000000 Binary files a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_dating_female_background.imageset/yumi_scope_position_dating_female_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_dating_male_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_dating_male_background.imageset/Contents.json deleted file mode 100644 index d23daea9..00000000 --- a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_dating_male_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_position_dating_male_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_position_dating_male_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_dating_male_background.imageset/yumi_scope_position_dating_male_background@2x.png b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_dating_male_background.imageset/yumi_scope_position_dating_male_background@2x.png deleted file mode 100644 index 428c427e..00000000 Binary files a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_dating_male_background.imageset/yumi_scope_position_dating_male_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_dating_male_background.imageset/yumi_scope_position_dating_male_background@3x.png b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_dating_male_background.imageset/yumi_scope_position_dating_male_background@3x.png deleted file mode 100644 index 26e0d83b..00000000 Binary files a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_dating_male_background.imageset/yumi_scope_position_dating_male_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_forbid_kicked.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_forbid_kicked.imageset/Contents.json deleted file mode 100644 index 4700af47..00000000 --- a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_forbid_kicked.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_position_forbid_kicked@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_position_forbid_kicked@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_forbid_kicked.imageset/yumi_scope_position_forbid_kicked@2x.png b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_forbid_kicked.imageset/yumi_scope_position_forbid_kicked@2x.png deleted file mode 100644 index ad3191ff..00000000 Binary files a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_forbid_kicked.imageset/yumi_scope_position_forbid_kicked@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_forbid_kicked.imageset/yumi_scope_position_forbid_kicked@3x.png b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_forbid_kicked.imageset/yumi_scope_position_forbid_kicked@3x.png deleted file mode 100644 index fe2c1474..00000000 Binary files a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_forbid_kicked.imageset/yumi_scope_position_forbid_kicked@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_giftValue_heart.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_giftValue_heart.imageset/Contents.json deleted file mode 100644 index 609f48a9..00000000 --- a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_giftValue_heart.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_position_giftValue_heart@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_position_giftValue_heart@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_giftValue_heart.imageset/yumi_scope_position_giftValue_heart@2x.png b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_giftValue_heart.imageset/yumi_scope_position_giftValue_heart@2x.png deleted file mode 100644 index 28c40e9c..00000000 Binary files a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_giftValue_heart.imageset/yumi_scope_position_giftValue_heart@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_giftValue_heart.imageset/yumi_scope_position_giftValue_heart@3x.png b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_giftValue_heart.imageset/yumi_scope_position_giftValue_heart@3x.png deleted file mode 100644 index 16915ab4..00000000 Binary files a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_giftValue_heart.imageset/yumi_scope_position_giftValue_heart@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_lock.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_lock.imageset/Contents.json deleted file mode 100644 index 138e9beb..00000000 --- a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_lock.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_position_lock@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_position_lock@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_lock.imageset/yumi_scope_position_lock@2x.png b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_lock.imageset/yumi_scope_position_lock@2x.png deleted file mode 100644 index 0e888936..00000000 Binary files a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_lock.imageset/yumi_scope_position_lock@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_lock.imageset/yumi_scope_position_lock@3x.png b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_lock.imageset/yumi_scope_position_lock@3x.png deleted file mode 100644 index 27287306..00000000 Binary files a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_lock.imageset/yumi_scope_position_lock@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_lock1.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_lock1.imageset/Contents.json deleted file mode 100644 index ff219fec..00000000 --- a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_lock1.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_position_lock1@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_position_lock1@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_lock1.imageset/yumi_scope_position_lock1@2x.png b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_lock1.imageset/yumi_scope_position_lock1@2x.png deleted file mode 100644 index fd98342c..00000000 Binary files a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_lock1.imageset/yumi_scope_position_lock1@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_lock1.imageset/yumi_scope_position_lock1@3x.png b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_lock1.imageset/yumi_scope_position_lock1@3x.png deleted file mode 100644 index af4415de..00000000 Binary files a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_lock1.imageset/yumi_scope_position_lock1@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_mute.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_mute.imageset/Contents.json deleted file mode 100644 index d3c4f064..00000000 --- a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_mute.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_position_mute@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_position_mute@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_mute.imageset/yumi_scope_position_mute@2x.png b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_mute.imageset/yumi_scope_position_mute@2x.png deleted file mode 100644 index 6680808f..00000000 Binary files a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_mute.imageset/yumi_scope_position_mute@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_mute.imageset/yumi_scope_position_mute@3x.png b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_mute.imageset/yumi_scope_position_mute@3x.png deleted file mode 100644 index 90d3c2d5..00000000 Binary files a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_mute.imageset/yumi_scope_position_mute@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_mute_Anchor.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_mute_Anchor.imageset/Contents.json deleted file mode 100644 index b34ee498..00000000 --- a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_mute_Anchor.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_position_mute_Anchor@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_position_mute_Anchor@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_mute_Anchor.imageset/yumi_scope_position_mute_Anchor@2x.png b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_mute_Anchor.imageset/yumi_scope_position_mute_Anchor@2x.png deleted file mode 100644 index c905fb49..00000000 Binary files a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_mute_Anchor.imageset/yumi_scope_position_mute_Anchor@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_mute_Anchor.imageset/yumi_scope_position_mute_Anchor@3x.png b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_mute_Anchor.imageset/yumi_scope_position_mute_Anchor@3x.png deleted file mode 100644 index cfe0acc5..00000000 Binary files a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_mute_Anchor.imageset/yumi_scope_position_mute_Anchor@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_normal.imageset/Contents.json deleted file mode 100644 index 2ec3a56d..00000000 --- a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_normal.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_position_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_position_normal@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_normal.imageset/yumi_scope_position_normal@2x.png b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_normal.imageset/yumi_scope_position_normal@2x.png deleted file mode 100644 index b1e662f8..00000000 Binary files a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_normal.imageset/yumi_scope_position_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_normal.imageset/yumi_scope_position_normal@3x.png b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_normal.imageset/yumi_scope_position_normal@3x.png deleted file mode 100644 index 3ffcf28d..00000000 Binary files a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_normal.imageset/yumi_scope_position_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_normal1.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_normal1.imageset/Contents.json deleted file mode 100644 index 1e6ffebf..00000000 --- a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_normal1.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_position_normal1@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_position_normal1@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_normal1.imageset/yumi_scope_position_normal1@2x.png b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_normal1.imageset/yumi_scope_position_normal1@2x.png deleted file mode 100644 index bf8ec3cb..00000000 Binary files a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_normal1.imageset/yumi_scope_position_normal1@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_normal1.imageset/yumi_scope_position_normal1@3x.png b/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_normal1.imageset/yumi_scope_position_normal1@3x.png deleted file mode 100644 index 4c2d70cb..00000000 Binary files a/YuMi/Assets.xcassets/yna/Position/yumi_scope_position_normal1.imageset/yumi_scope_position_normal1@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_postion_topimage_edit.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Position/yumi_scope_postion_topimage_edit.imageset/Contents.json deleted file mode 100644 index 561010c1..00000000 --- a/YuMi/Assets.xcassets/yna/Position/yumi_scope_postion_topimage_edit.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_postion_topimage_edit@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_postion_topimage_edit@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_postion_topimage_edit.imageset/yumi_scope_postion_topimage_edit@2x.png b/YuMi/Assets.xcassets/yna/Position/yumi_scope_postion_topimage_edit.imageset/yumi_scope_postion_topimage_edit@2x.png deleted file mode 100644 index e18bb070..00000000 Binary files a/YuMi/Assets.xcassets/yna/Position/yumi_scope_postion_topimage_edit.imageset/yumi_scope_postion_topimage_edit@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Position/yumi_scope_postion_topimage_edit.imageset/yumi_scope_postion_topimage_edit@3x.png b/YuMi/Assets.xcassets/yna/Position/yumi_scope_postion_topimage_edit.imageset/yumi_scope_postion_topimage_edit@3x.png deleted file mode 100644 index fd5256c1..00000000 Binary files a/YuMi/Assets.xcassets/yna/Position/yumi_scope_postion_topimage_edit.imageset/yumi_scope_postion_topimage_edit@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Radio/Contents.json b/YuMi/Assets.xcassets/yna/Radio/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/yna/Radio/Contents.json +++ b/YuMi/Assets.xcassets/yna/Radio/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Radio/room_radio_back.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Radio/room_radio_back.imageset/Contents.json new file mode 100644 index 00000000..5b361559 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Radio/room_radio_back.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_radio_back@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_radio_back@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Radio/room_radio_back.imageset/room_radio_back@2x.png b/YuMi/Assets.xcassets/yna/Radio/room_radio_back.imageset/room_radio_back@2x.png new file mode 100644 index 00000000..34120af1 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Radio/room_radio_back.imageset/room_radio_back@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Radio/room_radio_back.imageset/room_radio_back@3x.png b/YuMi/Assets.xcassets/yna/Radio/room_radio_back.imageset/room_radio_back@3x.png new file mode 100644 index 00000000..852121f7 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Radio/room_radio_back.imageset/room_radio_back@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Radio/room_radio_release_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Radio/room_radio_release_close.imageset/Contents.json new file mode 100644 index 00000000..0ffe4f60 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Radio/room_radio_release_close.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_radio_release_close@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_radio_release_close@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Radio/room_radio_release_close.imageset/room_radio_release_close@2x.png b/YuMi/Assets.xcassets/yna/Radio/room_radio_release_close.imageset/room_radio_release_close@2x.png new file mode 100644 index 00000000..72ed2ae1 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Radio/room_radio_release_close.imageset/room_radio_release_close@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Radio/room_radio_release_close.imageset/room_radio_release_close@3x.png b/YuMi/Assets.xcassets/yna/Radio/room_radio_release_close.imageset/room_radio_release_close@3x.png new file mode 100644 index 00000000..0984ce55 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Radio/room_radio_release_close.imageset/room_radio_release_close@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Radio/yumi_scope_radio_back.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Radio/yumi_scope_radio_back.imageset/Contents.json deleted file mode 100644 index 6d9a92b3..00000000 --- a/YuMi/Assets.xcassets/yna/Radio/yumi_scope_radio_back.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_radio_back@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_radio_back@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Radio/yumi_scope_radio_back.imageset/yumi_scope_radio_back@2x.png b/YuMi/Assets.xcassets/yna/Radio/yumi_scope_radio_back.imageset/yumi_scope_radio_back@2x.png deleted file mode 100644 index 6e2e7eb1..00000000 Binary files a/YuMi/Assets.xcassets/yna/Radio/yumi_scope_radio_back.imageset/yumi_scope_radio_back@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Radio/yumi_scope_radio_back.imageset/yumi_scope_radio_back@3x.png b/YuMi/Assets.xcassets/yna/Radio/yumi_scope_radio_back.imageset/yumi_scope_radio_back@3x.png deleted file mode 100644 index c18eede0..00000000 Binary files a/YuMi/Assets.xcassets/yna/Radio/yumi_scope_radio_back.imageset/yumi_scope_radio_back@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Radio/yumi_scope_radio_release_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Radio/yumi_scope_radio_release_close.imageset/Contents.json deleted file mode 100644 index 4ea03ef6..00000000 --- a/YuMi/Assets.xcassets/yna/Radio/yumi_scope_radio_release_close.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_radio_release_close@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_radio_release_close@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Radio/yumi_scope_radio_release_close.imageset/yumi_scope_radio_release_close@2x.png b/YuMi/Assets.xcassets/yna/Radio/yumi_scope_radio_release_close.imageset/yumi_scope_radio_release_close@2x.png deleted file mode 100644 index 438b5a45..00000000 Binary files a/YuMi/Assets.xcassets/yna/Radio/yumi_scope_radio_release_close.imageset/yumi_scope_radio_release_close@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Radio/yumi_scope_radio_release_close.imageset/yumi_scope_radio_release_close@3x.png b/YuMi/Assets.xcassets/yna/Radio/yumi_scope_radio_release_close.imageset/yumi_scope_radio_release_close@3x.png deleted file mode 100644 index 4caedd44..00000000 Binary files a/YuMi/Assets.xcassets/yna/Radio/yumi_scope_radio_release_close.imageset/yumi_scope_radio_release_close@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/Contents.json b/YuMi/Assets.xcassets/yna/RedPacket/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/yna/RedPacket/Contents.json +++ b/YuMi/Assets.xcassets/yna/RedPacket/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RedPacket/redPacket_entrance.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_entrance.imageset/Contents.json new file mode 100644 index 00000000..1d8af2b3 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_entrance.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "redPacket_entrance.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RedPacket/redPacket_entrance.imageset/redPacket_entrance.png b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_entrance.imageset/redPacket_entrance.png new file mode 100644 index 00000000..51b7d2e9 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_entrance.imageset/redPacket_entrance.png differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_icon.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_icon.imageset/Contents.json new file mode 100644 index 00000000..af388111 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "redPacket_msg_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "redPacket_msg_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_icon.imageset/redPacket_msg_icon@2x.png b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_icon.imageset/redPacket_msg_icon@2x.png new file mode 100644 index 00000000..9ab64756 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_icon.imageset/redPacket_msg_icon@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_icon.imageset/redPacket_msg_icon@3x.png b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_icon.imageset/redPacket_msg_icon@3x.png new file mode 100644 index 00000000..3d0c66bd Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_icon.imageset/redPacket_msg_icon@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_inValid_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_inValid_bg.imageset/Contents.json new file mode 100644 index 00000000..0d88003a --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_inValid_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "redPacket_msg_inValid_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "redPacket_msg_inValid_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_inValid_bg.imageset/redPacket_msg_inValid_bg@2x.png b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_inValid_bg.imageset/redPacket_msg_inValid_bg@2x.png new file mode 100644 index 00000000..d3dcd181 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_inValid_bg.imageset/redPacket_msg_inValid_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_inValid_bg.imageset/redPacket_msg_inValid_bg@3x.png b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_inValid_bg.imageset/redPacket_msg_inValid_bg@3x.png new file mode 100644 index 00000000..9c722cc8 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_inValid_bg.imageset/redPacket_msg_inValid_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_valid_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_valid_bg.imageset/Contents.json new file mode 100644 index 00000000..1ac19cf1 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_valid_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "redPacket_msg_valid_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "redPacket_msg_valid_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_valid_bg.imageset/redPacket_msg_valid_bg@2x.png b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_valid_bg.imageset/redPacket_msg_valid_bg@2x.png new file mode 100644 index 00000000..87e237e2 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_valid_bg.imageset/redPacket_msg_valid_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_valid_bg.imageset/redPacket_msg_valid_bg@3x.png b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_valid_bg.imageset/redPacket_msg_valid_bg@3x.png new file mode 100644 index 00000000..a1a16c0d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_msg_valid_bg.imageset/redPacket_msg_valid_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/redPacket_open.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_open.imageset/Contents.json new file mode 100644 index 00000000..7bcb8eb9 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_open.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "redPacket_open@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "redPacket_open@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RedPacket/redPacket_open.imageset/redPacket_open@2x.png b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_open.imageset/redPacket_open@2x.png new file mode 100644 index 00000000..0a059b23 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_open.imageset/redPacket_open@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/redPacket_open.imageset/redPacket_open@3x.png b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_open.imageset/redPacket_open@3x.png new file mode 100644 index 00000000..fb1693bc Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_open.imageset/redPacket_open@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/redPacket_openRoom.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_openRoom.imageset/Contents.json new file mode 100644 index 00000000..45c7a4f6 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_openRoom.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "redPacket_openRoom@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "redPacket_openRoom@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RedPacket/redPacket_openRoom.imageset/redPacket_openRoom@2x.png b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_openRoom.imageset/redPacket_openRoom@2x.png new file mode 100644 index 00000000..d5772778 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_openRoom.imageset/redPacket_openRoom@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/redPacket_openRoom.imageset/redPacket_openRoom@3x.png b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_openRoom.imageset/redPacket_openRoom@3x.png new file mode 100644 index 00000000..b26212a9 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_openRoom.imageset/redPacket_openRoom@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/redPacket_receive_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_receive_bg.imageset/Contents.json new file mode 100644 index 00000000..7caa1e76 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_receive_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "redPacket_receive_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "redPacket_receive_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RedPacket/redPacket_receive_bg.imageset/redPacket_receive_bg@2x.png b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_receive_bg.imageset/redPacket_receive_bg@2x.png new file mode 100644 index 00000000..066f2d66 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_receive_bg.imageset/redPacket_receive_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/redPacket_receive_bg.imageset/redPacket_receive_bg@3x.png b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_receive_bg.imageset/redPacket_receive_bg@3x.png new file mode 100644 index 00000000..8c1b803e Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_receive_bg.imageset/redPacket_receive_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/redPacket_result_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_result_bg.imageset/Contents.json new file mode 100644 index 00000000..e1db770a --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_result_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "redPacket_result_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "redPacket_result_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RedPacket/redPacket_result_bg.imageset/redPacket_result_bg@2x.png b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_result_bg.imageset/redPacket_result_bg@2x.png new file mode 100644 index 00000000..234bba5e Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_result_bg.imageset/redPacket_result_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/redPacket_result_bg.imageset/redPacket_result_bg@3x.png b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_result_bg.imageset/redPacket_result_bg@3x.png new file mode 100644 index 00000000..ec792e81 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RedPacket/redPacket_result_bg.imageset/redPacket_result_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_button.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_button.imageset/Contents.json new file mode 100644 index 00000000..f2a061ae --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_button.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "send_redPacket_button@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "send_redPacket_button@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_button.imageset/send_redPacket_button@2x.png b/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_button.imageset/send_redPacket_button@2x.png new file mode 100644 index 00000000..f4ec18e0 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_button.imageset/send_redPacket_button@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_button.imageset/send_redPacket_button@3x.png b/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_button.imageset/send_redPacket_button@3x.png new file mode 100644 index 00000000..0169291e Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_button.imageset/send_redPacket_button@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_cancel.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_cancel.imageset/Contents.json new file mode 100644 index 00000000..7f22e684 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_cancel.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "send_redPacket_cancel@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "send_redPacket_cancel@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_cancel.imageset/send_redPacket_cancel@2x.png b/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_cancel.imageset/send_redPacket_cancel@2x.png new file mode 100644 index 00000000..2152c332 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_cancel.imageset/send_redPacket_cancel@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_cancel.imageset/send_redPacket_cancel@3x.png b/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_cancel.imageset/send_redPacket_cancel@3x.png new file mode 100644 index 00000000..2606b0ae Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_cancel.imageset/send_redPacket_cancel@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_help.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_help.imageset/Contents.json new file mode 100644 index 00000000..df85c749 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_help.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "send_redPacket_help@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "send_redPacket_help@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_help.imageset/send_redPacket_help@2x.png b/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_help.imageset/send_redPacket_help@2x.png new file mode 100644 index 00000000..01dbc047 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_help.imageset/send_redPacket_help@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_help.imageset/send_redPacket_help@3x.png b/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_help.imageset/send_redPacket_help@3x.png new file mode 100644 index 00000000..4a57fb08 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RedPacket/send_redPacket_help.imageset/send_redPacket_help@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/send_redpacket_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RedPacket/send_redpacket_bg.imageset/Contents.json new file mode 100644 index 00000000..680917cd --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RedPacket/send_redpacket_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "send_redpacket_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "send_redpacket_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RedPacket/send_redpacket_bg.imageset/send_redpacket_bg@2x.png b/YuMi/Assets.xcassets/yna/RedPacket/send_redpacket_bg.imageset/send_redpacket_bg@2x.png new file mode 100644 index 00000000..ee2f9e70 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RedPacket/send_redpacket_bg.imageset/send_redpacket_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/send_redpacket_bg.imageset/send_redpacket_bg@3x.png b/YuMi/Assets.xcassets/yna/RedPacket/send_redpacket_bg.imageset/send_redpacket_bg@3x.png new file mode 100644 index 00000000..d8d725ff Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RedPacket/send_redpacket_bg.imageset/send_redpacket_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_entrance.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_entrance.imageset/Contents.json deleted file mode 100644 index 941eb3ef..00000000 --- a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_entrance.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"filename": "yumi_redPacket_entrance.png", "idiom": "universal", "scale": "1x"}, {"idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_entrance.imageset/yumi_redPacket_entrance.png b/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_entrance.imageset/yumi_redPacket_entrance.png deleted file mode 100644 index bce336b9..00000000 Binary files a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_entrance.imageset/yumi_redPacket_entrance.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_inValid_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_inValid_background.imageset/Contents.json deleted file mode 100644 index 01218f21..00000000 --- a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_inValid_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_redPacket_msg_inValid_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_redPacket_msg_inValid_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_inValid_background.imageset/yumi_redPacket_msg_inValid_background@2x.png b/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_inValid_background.imageset/yumi_redPacket_msg_inValid_background@2x.png deleted file mode 100644 index 3569f338..00000000 Binary files a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_inValid_background.imageset/yumi_redPacket_msg_inValid_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_inValid_background.imageset/yumi_redPacket_msg_inValid_background@3x.png b/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_inValid_background.imageset/yumi_redPacket_msg_inValid_background@3x.png deleted file mode 100644 index 1227b9c6..00000000 Binary files a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_inValid_background.imageset/yumi_redPacket_msg_inValid_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_pic.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_pic.imageset/Contents.json deleted file mode 100644 index 4d657ad8..00000000 --- a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_pic.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_redPacket_msg_pic@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_redPacket_msg_pic@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_pic.imageset/yumi_redPacket_msg_pic@2x.png b/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_pic.imageset/yumi_redPacket_msg_pic@2x.png deleted file mode 100644 index 6f95c21e..00000000 Binary files a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_pic.imageset/yumi_redPacket_msg_pic@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_pic.imageset/yumi_redPacket_msg_pic@3x.png b/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_pic.imageset/yumi_redPacket_msg_pic@3x.png deleted file mode 100644 index abd8ee3a..00000000 Binary files a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_pic.imageset/yumi_redPacket_msg_pic@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_valid_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_valid_background.imageset/Contents.json deleted file mode 100644 index 5a10611d..00000000 --- a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_valid_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_redPacket_msg_valid_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_redPacket_msg_valid_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_valid_background.imageset/yumi_redPacket_msg_valid_background@2x.png b/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_valid_background.imageset/yumi_redPacket_msg_valid_background@2x.png deleted file mode 100644 index a560ec0f..00000000 Binary files a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_valid_background.imageset/yumi_redPacket_msg_valid_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_valid_background.imageset/yumi_redPacket_msg_valid_background@3x.png b/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_valid_background.imageset/yumi_redPacket_msg_valid_background@3x.png deleted file mode 100644 index 3def04d1..00000000 Binary files a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_msg_valid_background.imageset/yumi_redPacket_msg_valid_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_open.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_open.imageset/Contents.json deleted file mode 100644 index c7bc7e1b..00000000 --- a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_open.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_redPacket_open@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_redPacket_open@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_open.imageset/yumi_redPacket_open@2x.png b/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_open.imageset/yumi_redPacket_open@2x.png deleted file mode 100644 index b99e0464..00000000 Binary files a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_open.imageset/yumi_redPacket_open@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_open.imageset/yumi_redPacket_open@3x.png b/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_open.imageset/yumi_redPacket_open@3x.png deleted file mode 100644 index fb61376e..00000000 Binary files a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_open.imageset/yumi_redPacket_open@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_openRoom.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_openRoom.imageset/Contents.json deleted file mode 100644 index deebf8c3..00000000 --- a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_openRoom.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_redPacket_openRoom@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_redPacket_openRoom@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_openRoom.imageset/yumi_redPacket_openRoom@2x.png b/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_openRoom.imageset/yumi_redPacket_openRoom@2x.png deleted file mode 100644 index cc7bca8f..00000000 Binary files a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_openRoom.imageset/yumi_redPacket_openRoom@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_openRoom.imageset/yumi_redPacket_openRoom@3x.png b/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_openRoom.imageset/yumi_redPacket_openRoom@3x.png deleted file mode 100644 index 14be0f15..00000000 Binary files a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_openRoom.imageset/yumi_redPacket_openRoom@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_receive_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_receive_background.imageset/Contents.json deleted file mode 100644 index 227b3a6c..00000000 --- a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_receive_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_redPacket_receive_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_redPacket_receive_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_receive_background.imageset/yumi_redPacket_receive_background@2x.png b/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_receive_background.imageset/yumi_redPacket_receive_background@2x.png deleted file mode 100644 index 13f4ca00..00000000 Binary files a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_receive_background.imageset/yumi_redPacket_receive_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_receive_background.imageset/yumi_redPacket_receive_background@3x.png b/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_receive_background.imageset/yumi_redPacket_receive_background@3x.png deleted file mode 100644 index ec12e2b7..00000000 Binary files a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_receive_background.imageset/yumi_redPacket_receive_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_result_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_result_background.imageset/Contents.json deleted file mode 100644 index 74d655e3..00000000 --- a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_result_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_redPacket_result_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_redPacket_result_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_result_background.imageset/yumi_redPacket_result_background@2x.png b/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_result_background.imageset/yumi_redPacket_result_background@2x.png deleted file mode 100644 index c5c22653..00000000 Binary files a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_result_background.imageset/yumi_redPacket_result_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_result_background.imageset/yumi_redPacket_result_background@3x.png b/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_result_background.imageset/yumi_redPacket_result_background@3x.png deleted file mode 100644 index 6b839852..00000000 Binary files a/YuMi/Assets.xcassets/yna/RedPacket/yumi_redPacket_result_background.imageset/yumi_redPacket_result_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_button.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_button.imageset/Contents.json deleted file mode 100644 index fa95758e..00000000 --- a/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_button.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_send_redPacket_button@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_send_redPacket_button@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_button.imageset/yumi_send_redPacket_button@2x.png b/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_button.imageset/yumi_send_redPacket_button@2x.png deleted file mode 100644 index c7699819..00000000 Binary files a/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_button.imageset/yumi_send_redPacket_button@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_button.imageset/yumi_send_redPacket_button@3x.png b/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_button.imageset/yumi_send_redPacket_button@3x.png deleted file mode 100644 index 7e3fbbf9..00000000 Binary files a/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_button.imageset/yumi_send_redPacket_button@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_cancel.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_cancel.imageset/Contents.json deleted file mode 100644 index 7738d28c..00000000 --- a/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_cancel.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_send_redPacket_cancel@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_send_redPacket_cancel@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_cancel.imageset/yumi_send_redPacket_cancel@2x.png b/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_cancel.imageset/yumi_send_redPacket_cancel@2x.png deleted file mode 100644 index 5564c1f5..00000000 Binary files a/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_cancel.imageset/yumi_send_redPacket_cancel@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_cancel.imageset/yumi_send_redPacket_cancel@3x.png b/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_cancel.imageset/yumi_send_redPacket_cancel@3x.png deleted file mode 100644 index e2414f80..00000000 Binary files a/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_cancel.imageset/yumi_send_redPacket_cancel@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_help.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_help.imageset/Contents.json deleted file mode 100644 index 1617094c..00000000 --- a/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_help.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_send_redPacket_help@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_send_redPacket_help@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_help.imageset/yumi_send_redPacket_help@2x.png b/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_help.imageset/yumi_send_redPacket_help@2x.png deleted file mode 100644 index 7ae544ef..00000000 Binary files a/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_help.imageset/yumi_send_redPacket_help@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_help.imageset/yumi_send_redPacket_help@3x.png b/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_help.imageset/yumi_send_redPacket_help@3x.png deleted file mode 100644 index 84d3963b..00000000 Binary files a/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redPacket_help.imageset/yumi_send_redPacket_help@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redpacket_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redpacket_background.imageset/Contents.json deleted file mode 100644 index 593e97b1..00000000 --- a/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redpacket_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_send_redpacket_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_send_redpacket_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redpacket_background.imageset/yumi_send_redpacket_background@2x.png b/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redpacket_background.imageset/yumi_send_redpacket_background@2x.png deleted file mode 100644 index 83ab4a83..00000000 Binary files a/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redpacket_background.imageset/yumi_send_redpacket_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redpacket_background.imageset/yumi_send_redpacket_background@3x.png b/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redpacket_background.imageset/yumi_send_redpacket_background@3x.png deleted file mode 100644 index 395df9e8..00000000 Binary files a/YuMi/Assets.xcassets/yna/RedPacket/yumi_send_redpacket_background.imageset/yumi_send_redpacket_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/yna/RoomPK/Contents.json +++ b/YuMi/Assets.xcassets/yna/RoomPK/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_choose_user_mic_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_choose_user_mic_bg.imageset/Contents.json new file mode 100644 index 00000000..22b16608 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_choose_user_mic_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_pk_choose_user_mic_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_pk_choose_user_mic_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_choose_user_mic_bg.imageset/room_pk_choose_user_mic_bg@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_choose_user_mic_bg.imageset/room_pk_choose_user_mic_bg@2x.png new file mode 100644 index 00000000..838f78e8 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_choose_user_mic_bg.imageset/room_pk_choose_user_mic_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_choose_user_mic_bg.imageset/room_pk_choose_user_mic_bg@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_choose_user_mic_bg.imageset/room_pk_choose_user_mic_bg@3x.png new file mode 100644 index 00000000..a1201a90 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_choose_user_mic_bg.imageset/room_pk_choose_user_mic_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_normal_member_enter.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_normal_member_enter.imageset/Contents.json new file mode 100644 index 00000000..c62bb205 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_normal_member_enter.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_pk_normal_member_enter@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_pk_normal_member_enter@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_normal_member_enter.imageset/room_pk_normal_member_enter@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_normal_member_enter.imageset/room_pk_normal_member_enter@2x.png new file mode 100644 index 00000000..4d16a96b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_normal_member_enter.imageset/room_pk_normal_member_enter@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_normal_member_enter.imageset/room_pk_normal_member_enter@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_normal_member_enter.imageset/room_pk_normal_member_enter@3x.png new file mode 100644 index 00000000..fc5b6a38 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_normal_member_enter.imageset/room_pk_normal_member_enter@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_playing_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_playing_bg.imageset/Contents.json new file mode 100644 index 00000000..03468b32 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_playing_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_pk_playing_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_pk_playing_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_playing_bg.imageset/room_pk_playing_bg@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_playing_bg.imageset/room_pk_playing_bg@2x.png new file mode 100644 index 00000000..96bb4478 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_playing_bg.imageset/room_pk_playing_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_playing_bg.imageset/room_pk_playing_bg@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_playing_bg.imageset/room_pk_playing_bg@3x.png new file mode 100644 index 00000000..1bc105b1 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_playing_bg.imageset/room_pk_playing_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_playing_fold.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_playing_fold.imageset/Contents.json new file mode 100644 index 00000000..95d38c24 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_playing_fold.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_pk_playing_fold@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_pk_playing_fold@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_playing_fold.imageset/room_pk_playing_fold@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_playing_fold.imageset/room_pk_playing_fold@2x.png new file mode 100644 index 00000000..6a5b1d5b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_playing_fold.imageset/room_pk_playing_fold@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_playing_fold.imageset/room_pk_playing_fold@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_playing_fold.imageset/room_pk_playing_fold@3x.png new file mode 100644 index 00000000..727fcb00 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_playing_fold.imageset/room_pk_playing_fold@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_position_blue_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_position_blue_bg.imageset/Contents.json new file mode 100644 index 00000000..58f7b689 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_position_blue_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_pk_position_blue_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_pk_position_blue_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_position_blue_bg.imageset/room_pk_position_blue_bg@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_position_blue_bg.imageset/room_pk_position_blue_bg@2x.png new file mode 100644 index 00000000..22179f2b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_position_blue_bg.imageset/room_pk_position_blue_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_position_blue_bg.imageset/room_pk_position_blue_bg@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_position_blue_bg.imageset/room_pk_position_blue_bg@3x.png new file mode 100644 index 00000000..be2a38c1 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_position_blue_bg.imageset/room_pk_position_blue_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_position_red_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_position_red_bg.imageset/Contents.json new file mode 100644 index 00000000..8179b969 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_position_red_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_pk_position_red_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_pk_position_red_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_position_red_bg.imageset/room_pk_position_red_bg@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_position_red_bg.imageset/room_pk_position_red_bg@2x.png new file mode 100644 index 00000000..6b8b3037 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_position_red_bg.imageset/room_pk_position_red_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_position_red_bg.imageset/room_pk_position_red_bg@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_position_red_bg.imageset/room_pk_position_red_bg@3x.png new file mode 100644 index 00000000..39d4c839 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_position_red_bg.imageset/room_pk_position_red_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_bg.imageset/Contents.json new file mode 100644 index 00000000..229421e1 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_pk_progrss_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_pk_progrss_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_bg.imageset/room_pk_progrss_bg@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_bg.imageset/room_pk_progrss_bg@2x.png new file mode 100644 index 00000000..80aafa50 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_bg.imageset/room_pk_progrss_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_bg.imageset/room_pk_progrss_bg@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_bg.imageset/room_pk_progrss_bg@3x.png new file mode 100644 index 00000000..05d75651 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_bg.imageset/room_pk_progrss_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_blue_add.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_blue_add.imageset/Contents.json new file mode 100644 index 00000000..7fd26a83 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_blue_add.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_pk_progrss_blue_add@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_pk_progrss_blue_add@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_blue_add.imageset/room_pk_progrss_blue_add@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_blue_add.imageset/room_pk_progrss_blue_add@2x.png new file mode 100644 index 00000000..a5f98ad8 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_blue_add.imageset/room_pk_progrss_blue_add@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_blue_add.imageset/room_pk_progrss_blue_add@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_blue_add.imageset/room_pk_progrss_blue_add@3x.png new file mode 100644 index 00000000..e72cf570 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_blue_add.imageset/room_pk_progrss_blue_add@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_line_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_line_bg.imageset/Contents.json new file mode 100644 index 00000000..e8ffdee1 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_line_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_pk_progrss_line_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_pk_progrss_line_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_line_bg.imageset/room_pk_progrss_line_bg@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_line_bg.imageset/room_pk_progrss_line_bg@2x.png new file mode 100644 index 00000000..2173b4b1 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_line_bg.imageset/room_pk_progrss_line_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_line_bg.imageset/room_pk_progrss_line_bg@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_line_bg.imageset/room_pk_progrss_line_bg@3x.png new file mode 100644 index 00000000..b4459755 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_line_bg.imageset/room_pk_progrss_line_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_red_add.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_red_add.imageset/Contents.json new file mode 100644 index 00000000..5b5ee40c --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_red_add.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_pk_progrss_red_add@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_pk_progrss_red_add@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_red_add.imageset/room_pk_progrss_red_add@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_red_add.imageset/room_pk_progrss_red_add@2x.png new file mode 100644 index 00000000..f189c637 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_red_add.imageset/room_pk_progrss_red_add@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_red_add.imageset/room_pk_progrss_red_add@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_red_add.imageset/room_pk_progrss_red_add@3x.png new file mode 100644 index 00000000..1a318359 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_progrss_red_add.imageset/room_pk_progrss_red_add@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_line_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_line_bg.imageset/Contents.json new file mode 100644 index 00000000..098e00bd --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_line_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_pk_record_line_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_pk_record_line_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_line_bg.imageset/room_pk_record_line_bg@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_line_bg.imageset/room_pk_record_line_bg@2x.png new file mode 100644 index 00000000..012f7d7f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_line_bg.imageset/room_pk_record_line_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_line_bg.imageset/room_pk_record_line_bg@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_line_bg.imageset/room_pk_record_line_bg@3x.png new file mode 100644 index 00000000..e3f472d4 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_line_bg.imageset/room_pk_record_line_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_lose.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_lose.imageset/Contents.json new file mode 100644 index 00000000..e3e4c625 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_lose.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_pk_record_lose@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_pk_record_lose@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_lose.imageset/room_pk_record_lose@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_lose.imageset/room_pk_record_lose@2x.png new file mode 100644 index 00000000..16d24cd2 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_lose.imageset/room_pk_record_lose@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_lose.imageset/room_pk_record_lose@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_lose.imageset/room_pk_record_lose@3x.png new file mode 100644 index 00000000..a2b72702 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_lose.imageset/room_pk_record_lose@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_winner.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_winner.imageset/Contents.json new file mode 100644 index 00000000..4a147924 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_winner.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_pk_record_winner@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_pk_record_winner@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_winner.imageset/room_pk_record_winner@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_winner.imageset/room_pk_record_winner@2x.png new file mode 100644 index 00000000..6cd14efd Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_winner.imageset/room_pk_record_winner@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_winner.imageset/room_pk_record_winner@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_winner.imageset/room_pk_record_winner@3x.png new file mode 100644 index 00000000..d50018ac Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_record_winner.imageset/room_pk_record_winner@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_blue_victory_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_blue_victory_bg.imageset/Contents.json new file mode 100644 index 00000000..9823298b --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_blue_victory_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_pk_result_blue_victory_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_pk_result_blue_victory_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_blue_victory_bg.imageset/room_pk_result_blue_victory_bg@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_blue_victory_bg.imageset/room_pk_result_blue_victory_bg@2x.png new file mode 100644 index 00000000..c79a37bc Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_blue_victory_bg.imageset/room_pk_result_blue_victory_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_blue_victory_bg.imageset/room_pk_result_blue_victory_bg@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_blue_victory_bg.imageset/room_pk_result_blue_victory_bg@3x.png new file mode 100644 index 00000000..a7a313c7 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_blue_victory_bg.imageset/room_pk_result_blue_victory_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_bottom_loser_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_bottom_loser_bg.imageset/Contents.json new file mode 100644 index 00000000..5a1b0b58 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_bottom_loser_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_pk_result_bottom_loser_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_pk_result_bottom_loser_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_bottom_loser_bg.imageset/room_pk_result_bottom_loser_bg@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_bottom_loser_bg.imageset/room_pk_result_bottom_loser_bg@2x.png new file mode 100644 index 00000000..13d8322a Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_bottom_loser_bg.imageset/room_pk_result_bottom_loser_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_bottom_loser_bg.imageset/room_pk_result_bottom_loser_bg@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_bottom_loser_bg.imageset/room_pk_result_bottom_loser_bg@3x.png new file mode 100644 index 00000000..3eb7f231 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_bottom_loser_bg.imageset/room_pk_result_bottom_loser_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_bottom_win_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_bottom_win_bg.imageset/Contents.json new file mode 100644 index 00000000..e10f8c6b --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_bottom_win_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_pk_result_bottom_win_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_pk_result_bottom_win_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_bottom_win_bg.imageset/room_pk_result_bottom_win_bg@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_bottom_win_bg.imageset/room_pk_result_bottom_win_bg@2x.png new file mode 100644 index 00000000..f72ed2de Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_bottom_win_bg.imageset/room_pk_result_bottom_win_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_bottom_win_bg.imageset/room_pk_result_bottom_win_bg@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_bottom_win_bg.imageset/room_pk_result_bottom_win_bg@3x.png new file mode 100644 index 00000000..8be9f7e0 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_bottom_win_bg.imageset/room_pk_result_bottom_win_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_content_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_content_bg.imageset/Contents.json new file mode 100644 index 00000000..cc5d67db --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_content_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_pk_result_content_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_pk_result_content_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_content_bg.imageset/room_pk_result_content_bg@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_content_bg.imageset/room_pk_result_content_bg@2x.png new file mode 100644 index 00000000..b8b3993a Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_content_bg.imageset/room_pk_result_content_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_content_bg.imageset/room_pk_result_content_bg@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_content_bg.imageset/room_pk_result_content_bg@3x.png new file mode 100644 index 00000000..938678d2 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_content_bg.imageset/room_pk_result_content_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_loser_result_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_loser_result_bg.imageset/Contents.json new file mode 100644 index 00000000..a3394497 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_loser_result_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_pk_result_loser_result_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_pk_result_loser_result_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_loser_result_bg.imageset/room_pk_result_loser_result_bg@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_loser_result_bg.imageset/room_pk_result_loser_result_bg@2x.png new file mode 100644 index 00000000..3608c803 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_loser_result_bg.imageset/room_pk_result_loser_result_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_loser_result_bg.imageset/room_pk_result_loser_result_bg@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_loser_result_bg.imageset/room_pk_result_loser_result_bg@3x.png new file mode 100644 index 00000000..d5da7d9d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_loser_result_bg.imageset/room_pk_result_loser_result_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_draw_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_draw_bg.imageset/Contents.json new file mode 100644 index 00000000..e2bc7639 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_draw_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_pk_result_top_draw_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_pk_result_top_draw_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_draw_bg.imageset/room_pk_result_top_draw_bg@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_draw_bg.imageset/room_pk_result_top_draw_bg@2x.png new file mode 100644 index 00000000..4f56814f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_draw_bg.imageset/room_pk_result_top_draw_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_draw_bg.imageset/room_pk_result_top_draw_bg@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_draw_bg.imageset/room_pk_result_top_draw_bg@3x.png new file mode 100644 index 00000000..fdb874cb Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_draw_bg.imageset/room_pk_result_top_draw_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_loser_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_loser_bg.imageset/Contents.json new file mode 100644 index 00000000..2132b788 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_loser_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_pk_result_top_loser_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_pk_result_top_loser_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_loser_bg.imageset/room_pk_result_top_loser_bg@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_loser_bg.imageset/room_pk_result_top_loser_bg@2x.png new file mode 100644 index 00000000..ffc13e4f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_loser_bg.imageset/room_pk_result_top_loser_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_loser_bg.imageset/room_pk_result_top_loser_bg@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_loser_bg.imageset/room_pk_result_top_loser_bg@3x.png new file mode 100644 index 00000000..e5326e95 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_loser_bg.imageset/room_pk_result_top_loser_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_win_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_win_bg.imageset/Contents.json new file mode 100644 index 00000000..2404e55b --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_win_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_pk_result_top_win_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_pk_result_top_win_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_win_bg.imageset/room_pk_result_top_win_bg@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_win_bg.imageset/room_pk_result_top_win_bg@2x.png new file mode 100644 index 00000000..d9e88e30 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_win_bg.imageset/room_pk_result_top_win_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_win_bg.imageset/room_pk_result_top_win_bg@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_win_bg.imageset/room_pk_result_top_win_bg@3x.png new file mode 100644 index 00000000..430e3378 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_top_win_bg.imageset/room_pk_result_top_win_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_user_mvp.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_user_mvp.imageset/Contents.json new file mode 100644 index 00000000..15f0c7e2 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_user_mvp.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_pk_result_user_mvp@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_pk_result_user_mvp@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_user_mvp.imageset/room_pk_result_user_mvp@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_user_mvp.imageset/room_pk_result_user_mvp@2x.png new file mode 100644 index 00000000..b0bf2912 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_user_mvp.imageset/room_pk_result_user_mvp@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_user_mvp.imageset/room_pk_result_user_mvp@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_user_mvp.imageset/room_pk_result_user_mvp@3x.png new file mode 100644 index 00000000..c08f2153 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_result_user_mvp.imageset/room_pk_result_user_mvp@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_user_unselect.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_user_unselect.imageset/Contents.json new file mode 100644 index 00000000..796ea2cb --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_user_unselect.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_pk_user_unselect@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_pk_user_unselect@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_user_unselect.imageset/room_pk_user_unselect@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_user_unselect.imageset/room_pk_user_unselect@2x.png new file mode 100644 index 00000000..fcc0d722 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_user_unselect.imageset/room_pk_user_unselect@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_user_unselect.imageset/room_pk_user_unselect@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_user_unselect.imageset/room_pk_user_unselect@3x.png new file mode 100644 index 00000000..5cfe6783 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_user_unselect.imageset/room_pk_user_unselect@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vote_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vote_normal.imageset/Contents.json new file mode 100644 index 00000000..931cebdd --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vote_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_pk_vote_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_pk_vote_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vote_normal.imageset/room_pk_vote_normal@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vote_normal.imageset/room_pk_vote_normal@2x.png new file mode 100644 index 00000000..712d265e Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vote_normal.imageset/room_pk_vote_normal@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vote_normal.imageset/room_pk_vote_normal@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vote_normal.imageset/room_pk_vote_normal@3x.png new file mode 100644 index 00000000..dc5b6724 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vote_normal.imageset/room_pk_vote_normal@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vote_select.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vote_select.imageset/Contents.json new file mode 100644 index 00000000..c0a181e4 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vote_select.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_pk_vote_select@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_pk_vote_select@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vote_select.imageset/room_pk_vote_select@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vote_select.imageset/room_pk_vote_select@2x.png new file mode 100644 index 00000000..549875a7 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vote_select.imageset/room_pk_vote_select@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vote_select.imageset/room_pk_vote_select@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vote_select.imageset/room_pk_vote_select@3x.png new file mode 100644 index 00000000..139ba962 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vote_select.imageset/room_pk_vote_select@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vs_logo.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vs_logo.imageset/Contents.json new file mode 100644 index 00000000..57429756 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vs_logo.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_pk_vs_logo@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_pk_vs_logo@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vs_logo.imageset/room_pk_vs_logo@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vs_logo.imageset/room_pk_vs_logo@2x.png new file mode 100644 index 00000000..add8d886 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vs_logo.imageset/room_pk_vs_logo@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vs_logo.imageset/room_pk_vs_logo@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vs_logo.imageset/room_pk_vs_logo@3x.png new file mode 100644 index 00000000..ad39cba8 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/RoomPK/room_pk_vs_logo.imageset/room_pk_vs_logo@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_choose_user_mimage_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_choose_user_mimage_background.imageset/Contents.json deleted file mode 100644 index d65ac6eb..00000000 --- a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_choose_user_mimage_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_pk_choose_user_mimage_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_pk_choose_user_mimage_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_choose_user_mimage_background.imageset/yumi_scope_pk_choose_user_mimage_background@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_choose_user_mimage_background.imageset/yumi_scope_pk_choose_user_mimage_background@2x.png deleted file mode 100644 index 0c033d47..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_choose_user_mimage_background.imageset/yumi_scope_pk_choose_user_mimage_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_choose_user_mimage_background.imageset/yumi_scope_pk_choose_user_mimage_background@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_choose_user_mimage_background.imageset/yumi_scope_pk_choose_user_mimage_background@3x.png deleted file mode 100644 index af9286ee..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_choose_user_mimage_background.imageset/yumi_scope_pk_choose_user_mimage_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_normal_member_enter.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_normal_member_enter.imageset/Contents.json deleted file mode 100644 index 9552f509..00000000 --- a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_normal_member_enter.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_pk_normal_member_enter@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_pk_normal_member_enter@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_normal_member_enter.imageset/yumi_scope_pk_normal_member_enter@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_normal_member_enter.imageset/yumi_scope_pk_normal_member_enter@2x.png deleted file mode 100644 index 659ff036..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_normal_member_enter.imageset/yumi_scope_pk_normal_member_enter@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_normal_member_enter.imageset/yumi_scope_pk_normal_member_enter@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_normal_member_enter.imageset/yumi_scope_pk_normal_member_enter@3x.png deleted file mode 100644 index f5a7ac24..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_normal_member_enter.imageset/yumi_scope_pk_normal_member_enter@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_playing_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_playing_background.imageset/Contents.json deleted file mode 100644 index 97d18536..00000000 --- a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_playing_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_pk_playing_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_pk_playing_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_playing_background.imageset/yumi_scope_pk_playing_background@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_playing_background.imageset/yumi_scope_pk_playing_background@2x.png deleted file mode 100644 index 9b47f501..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_playing_background.imageset/yumi_scope_pk_playing_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_playing_background.imageset/yumi_scope_pk_playing_background@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_playing_background.imageset/yumi_scope_pk_playing_background@3x.png deleted file mode 100644 index ddff9c07..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_playing_background.imageset/yumi_scope_pk_playing_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_playing_fold.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_playing_fold.imageset/Contents.json deleted file mode 100644 index 08ca0cdb..00000000 --- a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_playing_fold.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_pk_playing_fold@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_pk_playing_fold@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_playing_fold.imageset/yumi_scope_pk_playing_fold@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_playing_fold.imageset/yumi_scope_pk_playing_fold@2x.png deleted file mode 100644 index 4a945dd6..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_playing_fold.imageset/yumi_scope_pk_playing_fold@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_playing_fold.imageset/yumi_scope_pk_playing_fold@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_playing_fold.imageset/yumi_scope_pk_playing_fold@3x.png deleted file mode 100644 index daffc167..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_playing_fold.imageset/yumi_scope_pk_playing_fold@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_position_blue_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_position_blue_background.imageset/Contents.json deleted file mode 100644 index 1aca75d6..00000000 --- a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_position_blue_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_pk_position_blue_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_pk_position_blue_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_position_blue_background.imageset/yumi_scope_pk_position_blue_background@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_position_blue_background.imageset/yumi_scope_pk_position_blue_background@2x.png deleted file mode 100644 index 6005e3c3..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_position_blue_background.imageset/yumi_scope_pk_position_blue_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_position_blue_background.imageset/yumi_scope_pk_position_blue_background@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_position_blue_background.imageset/yumi_scope_pk_position_blue_background@3x.png deleted file mode 100644 index 1190dd44..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_position_blue_background.imageset/yumi_scope_pk_position_blue_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_position_red_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_position_red_background.imageset/Contents.json deleted file mode 100644 index 7fc0f06e..00000000 --- a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_position_red_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_pk_position_red_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_pk_position_red_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_position_red_background.imageset/yumi_scope_pk_position_red_background@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_position_red_background.imageset/yumi_scope_pk_position_red_background@2x.png deleted file mode 100644 index 1c3e670d..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_position_red_background.imageset/yumi_scope_pk_position_red_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_position_red_background.imageset/yumi_scope_pk_position_red_background@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_position_red_background.imageset/yumi_scope_pk_position_red_background@3x.png deleted file mode 100644 index a3fbb40e..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_position_red_background.imageset/yumi_scope_pk_position_red_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_background.imageset/Contents.json deleted file mode 100644 index 86c4b16d..00000000 --- a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_pk_progrss_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_pk_progrss_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_background.imageset/yumi_scope_pk_progrss_background@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_background.imageset/yumi_scope_pk_progrss_background@2x.png deleted file mode 100644 index eb762837..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_background.imageset/yumi_scope_pk_progrss_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_background.imageset/yumi_scope_pk_progrss_background@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_background.imageset/yumi_scope_pk_progrss_background@3x.png deleted file mode 100644 index 799d18a1..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_background.imageset/yumi_scope_pk_progrss_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_blue_add.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_blue_add.imageset/Contents.json deleted file mode 100644 index bcade9d6..00000000 --- a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_blue_add.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_pk_progrss_blue_add@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_pk_progrss_blue_add@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_blue_add.imageset/yumi_scope_pk_progrss_blue_add@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_blue_add.imageset/yumi_scope_pk_progrss_blue_add@2x.png deleted file mode 100644 index f4215f46..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_blue_add.imageset/yumi_scope_pk_progrss_blue_add@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_blue_add.imageset/yumi_scope_pk_progrss_blue_add@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_blue_add.imageset/yumi_scope_pk_progrss_blue_add@3x.png deleted file mode 100644 index 0b01fb34..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_blue_add.imageset/yumi_scope_pk_progrss_blue_add@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_line_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_line_background.imageset/Contents.json deleted file mode 100644 index a9971b24..00000000 --- a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_line_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_pk_progrss_line_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_pk_progrss_line_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_line_background.imageset/yumi_scope_pk_progrss_line_background@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_line_background.imageset/yumi_scope_pk_progrss_line_background@2x.png deleted file mode 100644 index b39dec7f..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_line_background.imageset/yumi_scope_pk_progrss_line_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_line_background.imageset/yumi_scope_pk_progrss_line_background@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_line_background.imageset/yumi_scope_pk_progrss_line_background@3x.png deleted file mode 100644 index 11e7d8fe..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_line_background.imageset/yumi_scope_pk_progrss_line_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_red_add.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_red_add.imageset/Contents.json deleted file mode 100644 index 0fd7912a..00000000 --- a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_red_add.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_pk_progrss_red_add@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_pk_progrss_red_add@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_red_add.imageset/yumi_scope_pk_progrss_red_add@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_red_add.imageset/yumi_scope_pk_progrss_red_add@2x.png deleted file mode 100644 index 1bef608a..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_red_add.imageset/yumi_scope_pk_progrss_red_add@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_red_add.imageset/yumi_scope_pk_progrss_red_add@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_red_add.imageset/yumi_scope_pk_progrss_red_add@3x.png deleted file mode 100644 index 7610b5f1..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_progrss_red_add.imageset/yumi_scope_pk_progrss_red_add@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_line_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_line_background.imageset/Contents.json deleted file mode 100644 index b0fa297c..00000000 --- a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_line_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_pk_record_line_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_pk_record_line_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_line_background.imageset/yumi_scope_pk_record_line_background@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_line_background.imageset/yumi_scope_pk_record_line_background@2x.png deleted file mode 100644 index 04f579c6..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_line_background.imageset/yumi_scope_pk_record_line_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_line_background.imageset/yumi_scope_pk_record_line_background@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_line_background.imageset/yumi_scope_pk_record_line_background@3x.png deleted file mode 100644 index 9262079e..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_line_background.imageset/yumi_scope_pk_record_line_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_lose.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_lose.imageset/Contents.json deleted file mode 100644 index 4a8dac93..00000000 --- a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_lose.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_pk_record_lose@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_pk_record_lose@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_lose.imageset/yumi_scope_pk_record_lose@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_lose.imageset/yumi_scope_pk_record_lose@2x.png deleted file mode 100644 index c9594596..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_lose.imageset/yumi_scope_pk_record_lose@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_lose.imageset/yumi_scope_pk_record_lose@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_lose.imageset/yumi_scope_pk_record_lose@3x.png deleted file mode 100644 index e56ac03e..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_lose.imageset/yumi_scope_pk_record_lose@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_winner.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_winner.imageset/Contents.json deleted file mode 100644 index 6aa9c4f6..00000000 --- a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_winner.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_pk_record_winner@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_pk_record_winner@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_winner.imageset/yumi_scope_pk_record_winner@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_winner.imageset/yumi_scope_pk_record_winner@2x.png deleted file mode 100644 index 2f382613..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_winner.imageset/yumi_scope_pk_record_winner@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_winner.imageset/yumi_scope_pk_record_winner@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_winner.imageset/yumi_scope_pk_record_winner@3x.png deleted file mode 100644 index 24c9be28..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_record_winner.imageset/yumi_scope_pk_record_winner@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_blue_victory_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_blue_victory_background.imageset/Contents.json deleted file mode 100644 index 5718c24f..00000000 --- a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_blue_victory_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_pk_result_blue_victory_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_pk_result_blue_victory_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_blue_victory_background.imageset/yumi_scope_pk_result_blue_victory_background@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_blue_victory_background.imageset/yumi_scope_pk_result_blue_victory_background@2x.png deleted file mode 100644 index 24ddbe7a..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_blue_victory_background.imageset/yumi_scope_pk_result_blue_victory_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_blue_victory_background.imageset/yumi_scope_pk_result_blue_victory_background@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_blue_victory_background.imageset/yumi_scope_pk_result_blue_victory_background@3x.png deleted file mode 100644 index 7bf4bf99..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_blue_victory_background.imageset/yumi_scope_pk_result_blue_victory_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_bottom_loser_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_bottom_loser_background.imageset/Contents.json deleted file mode 100644 index b898b935..00000000 --- a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_bottom_loser_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_pk_result_bottom_loser_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_pk_result_bottom_loser_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_bottom_loser_background.imageset/yumi_scope_pk_result_bottom_loser_background@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_bottom_loser_background.imageset/yumi_scope_pk_result_bottom_loser_background@2x.png deleted file mode 100644 index 497ef21b..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_bottom_loser_background.imageset/yumi_scope_pk_result_bottom_loser_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_bottom_loser_background.imageset/yumi_scope_pk_result_bottom_loser_background@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_bottom_loser_background.imageset/yumi_scope_pk_result_bottom_loser_background@3x.png deleted file mode 100644 index 53f9a0e8..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_bottom_loser_background.imageset/yumi_scope_pk_result_bottom_loser_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_bottom_win_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_bottom_win_background.imageset/Contents.json deleted file mode 100644 index 24a10b2f..00000000 --- a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_bottom_win_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_pk_result_bottom_win_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_pk_result_bottom_win_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_bottom_win_background.imageset/yumi_scope_pk_result_bottom_win_background@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_bottom_win_background.imageset/yumi_scope_pk_result_bottom_win_background@2x.png deleted file mode 100644 index 3af61ff0..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_bottom_win_background.imageset/yumi_scope_pk_result_bottom_win_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_bottom_win_background.imageset/yumi_scope_pk_result_bottom_win_background@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_bottom_win_background.imageset/yumi_scope_pk_result_bottom_win_background@3x.png deleted file mode 100644 index 119ef45e..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_bottom_win_background.imageset/yumi_scope_pk_result_bottom_win_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_loser_result_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_loser_result_background.imageset/Contents.json deleted file mode 100644 index 4770c1c5..00000000 --- a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_loser_result_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_pk_result_loser_result_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_pk_result_loser_result_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_loser_result_background.imageset/yumi_scope_pk_result_loser_result_background@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_loser_result_background.imageset/yumi_scope_pk_result_loser_result_background@2x.png deleted file mode 100644 index c6914b4a..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_loser_result_background.imageset/yumi_scope_pk_result_loser_result_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_loser_result_background.imageset/yumi_scope_pk_result_loser_result_background@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_loser_result_background.imageset/yumi_scope_pk_result_loser_result_background@3x.png deleted file mode 100644 index be3fd57a..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_loser_result_background.imageset/yumi_scope_pk_result_loser_result_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_matter_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_matter_background.imageset/Contents.json deleted file mode 100644 index 8975ffd8..00000000 --- a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_matter_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_pk_result_matter_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_pk_result_matter_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_matter_background.imageset/yumi_scope_pk_result_matter_background@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_matter_background.imageset/yumi_scope_pk_result_matter_background@2x.png deleted file mode 100644 index d28e58aa..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_matter_background.imageset/yumi_scope_pk_result_matter_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_matter_background.imageset/yumi_scope_pk_result_matter_background@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_matter_background.imageset/yumi_scope_pk_result_matter_background@3x.png deleted file mode 100644 index 12e634fd..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_matter_background.imageset/yumi_scope_pk_result_matter_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_draw_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_draw_background.imageset/Contents.json deleted file mode 100644 index 24da5be5..00000000 --- a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_draw_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_pk_result_top_draw_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_pk_result_top_draw_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_draw_background.imageset/yumi_scope_pk_result_top_draw_background@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_draw_background.imageset/yumi_scope_pk_result_top_draw_background@2x.png deleted file mode 100644 index 686f0f22..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_draw_background.imageset/yumi_scope_pk_result_top_draw_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_draw_background.imageset/yumi_scope_pk_result_top_draw_background@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_draw_background.imageset/yumi_scope_pk_result_top_draw_background@3x.png deleted file mode 100644 index ac4b3b03..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_draw_background.imageset/yumi_scope_pk_result_top_draw_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_loser_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_loser_background.imageset/Contents.json deleted file mode 100644 index e028460e..00000000 --- a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_loser_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_pk_result_top_loser_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_pk_result_top_loser_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_loser_background.imageset/yumi_scope_pk_result_top_loser_background@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_loser_background.imageset/yumi_scope_pk_result_top_loser_background@2x.png deleted file mode 100644 index 5818e109..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_loser_background.imageset/yumi_scope_pk_result_top_loser_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_loser_background.imageset/yumi_scope_pk_result_top_loser_background@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_loser_background.imageset/yumi_scope_pk_result_top_loser_background@3x.png deleted file mode 100644 index be2a8c19..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_loser_background.imageset/yumi_scope_pk_result_top_loser_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_win_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_win_background.imageset/Contents.json deleted file mode 100644 index 3db5e948..00000000 --- a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_win_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_pk_result_top_win_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_pk_result_top_win_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_win_background.imageset/yumi_scope_pk_result_top_win_background@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_win_background.imageset/yumi_scope_pk_result_top_win_background@2x.png deleted file mode 100644 index 1513b67d..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_win_background.imageset/yumi_scope_pk_result_top_win_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_win_background.imageset/yumi_scope_pk_result_top_win_background@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_win_background.imageset/yumi_scope_pk_result_top_win_background@3x.png deleted file mode 100644 index d985d139..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_top_win_background.imageset/yumi_scope_pk_result_top_win_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_user_mvp.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_user_mvp.imageset/Contents.json deleted file mode 100644 index 154c7aa9..00000000 --- a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_user_mvp.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_pk_result_user_mvp@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_pk_result_user_mvp@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_user_mvp.imageset/yumi_scope_pk_result_user_mvp@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_user_mvp.imageset/yumi_scope_pk_result_user_mvp@2x.png deleted file mode 100644 index 17be28f5..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_user_mvp.imageset/yumi_scope_pk_result_user_mvp@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_user_mvp.imageset/yumi_scope_pk_result_user_mvp@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_user_mvp.imageset/yumi_scope_pk_result_user_mvp@3x.png deleted file mode 100644 index 26a57b18..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_result_user_mvp.imageset/yumi_scope_pk_result_user_mvp@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_user_unselect.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_user_unselect.imageset/Contents.json deleted file mode 100644 index 6360680d..00000000 --- a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_user_unselect.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_pk_user_unselect@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_pk_user_unselect@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_user_unselect.imageset/yumi_scope_pk_user_unselect@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_user_unselect.imageset/yumi_scope_pk_user_unselect@2x.png deleted file mode 100644 index 765f2b72..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_user_unselect.imageset/yumi_scope_pk_user_unselect@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_user_unselect.imageset/yumi_scope_pk_user_unselect@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_user_unselect.imageset/yumi_scope_pk_user_unselect@3x.png deleted file mode 100644 index 75f79a20..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_user_unselect.imageset/yumi_scope_pk_user_unselect@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vote_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vote_normal.imageset/Contents.json deleted file mode 100644 index d4e33e58..00000000 --- a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vote_normal.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_pk_vote_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_pk_vote_normal@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vote_normal.imageset/yumi_scope_pk_vote_normal@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vote_normal.imageset/yumi_scope_pk_vote_normal@2x.png deleted file mode 100644 index 89fa21e1..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vote_normal.imageset/yumi_scope_pk_vote_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vote_normal.imageset/yumi_scope_pk_vote_normal@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vote_normal.imageset/yumi_scope_pk_vote_normal@3x.png deleted file mode 100644 index 51b72f8a..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vote_normal.imageset/yumi_scope_pk_vote_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vote_select.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vote_select.imageset/Contents.json deleted file mode 100644 index b28f187c..00000000 --- a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vote_select.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_pk_vote_select@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_pk_vote_select@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vote_select.imageset/yumi_scope_pk_vote_select@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vote_select.imageset/yumi_scope_pk_vote_select@2x.png deleted file mode 100644 index cc3e67a6..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vote_select.imageset/yumi_scope_pk_vote_select@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vote_select.imageset/yumi_scope_pk_vote_select@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vote_select.imageset/yumi_scope_pk_vote_select@3x.png deleted file mode 100644 index fb2c2234..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vote_select.imageset/yumi_scope_pk_vote_select@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vs_logo.imageset/Contents.json b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vs_logo.imageset/Contents.json deleted file mode 100644 index 5412855b..00000000 --- a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vs_logo.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_pk_vs_logo@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_pk_vs_logo@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vs_logo.imageset/yumi_scope_pk_vs_logo@2x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vs_logo.imageset/yumi_scope_pk_vs_logo@2x.png deleted file mode 100644 index 35e6e828..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vs_logo.imageset/yumi_scope_pk_vs_logo@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vs_logo.imageset/yumi_scope_pk_vs_logo@3x.png b/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vs_logo.imageset/yumi_scope_pk_vs_logo@3x.png deleted file mode 100644 index 49d7039f..00000000 Binary files a/YuMi/Assets.xcassets/yna/RoomPK/yumi_scope_pk_vs_logo.imageset/yumi_scope_pk_vs_logo@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/yna/Sailing/Contents.json +++ b/YuMi/Assets.xcassets/yna/Sailing/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailiing_enter.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/room_sailiing_enter.imageset/Contents.json new file mode 100644 index 00000000..4bbcc50a --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Sailing/room_sailiing_enter.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_sailiing_enter.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailiing_enter.imageset/room_sailiing_enter.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailiing_enter.imageset/room_sailiing_enter.png new file mode 100644 index 00000000..772f2a4e Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailiing_enter.imageset/room_sailiing_enter.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_add.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_add.imageset/Contents.json new file mode 100644 index 00000000..fa62a112 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_add.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_sailing_add@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_sailing_add@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_add.imageset/room_sailing_add@2x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_add.imageset/room_sailing_add@2x.png new file mode 100644 index 00000000..f931db19 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_add.imageset/room_sailing_add@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_add.imageset/room_sailing_add@3x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_add.imageset/room_sailing_add@3x.png new file mode 100644 index 00000000..eb649f27 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_add.imageset/room_sailing_add@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_animation_gift_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_animation_gift_bg.imageset/Contents.json new file mode 100644 index 00000000..1ef18477 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_animation_gift_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_sailing_animation_gift_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_sailing_animation_gift_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_animation_gift_bg.imageset/room_sailing_animation_gift_bg@2x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_animation_gift_bg.imageset/room_sailing_animation_gift_bg@2x.png new file mode 100644 index 00000000..d3fd09c6 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_animation_gift_bg.imageset/room_sailing_animation_gift_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_animation_gift_bg.imageset/room_sailing_animation_gift_bg@3x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_animation_gift_bg.imageset/room_sailing_animation_gift_bg@3x.png new file mode 100644 index 00000000..f0226b69 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_animation_gift_bg.imageset/room_sailing_animation_gift_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_bg.imageset/Contents.json new file mode 100644 index 00000000..0f765804 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_sailing_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_sailing_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_bg.imageset/room_sailing_bg@2x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_bg.imageset/room_sailing_bg@2x.png new file mode 100644 index 00000000..628775a8 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_bg.imageset/room_sailing_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_bg.imageset/room_sailing_bg@3x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_bg.imageset/room_sailing_bg@3x.png new file mode 100644 index 00000000..792e68dc Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_bg.imageset/room_sailing_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_bg.imageset/Contents.json new file mode 100644 index 00000000..5810546f --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_sailing_buy_fuel_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_sailing_buy_fuel_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_bg.imageset/room_sailing_buy_fuel_bg@2x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_bg.imageset/room_sailing_buy_fuel_bg@2x.png new file mode 100644 index 00000000..e43feb11 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_bg.imageset/room_sailing_buy_fuel_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_bg.imageset/room_sailing_buy_fuel_bg@3x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_bg.imageset/room_sailing_buy_fuel_bg@3x.png new file mode 100644 index 00000000..32a04bfc Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_bg.imageset/room_sailing_buy_fuel_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_cancel.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_cancel.imageset/Contents.json new file mode 100644 index 00000000..8f739431 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_cancel.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_sailing_buy_fuel_cancel@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_sailing_buy_fuel_cancel@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_cancel.imageset/room_sailing_buy_fuel_cancel@2x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_cancel.imageset/room_sailing_buy_fuel_cancel@2x.png new file mode 100644 index 00000000..74ab6a0a Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_cancel.imageset/room_sailing_buy_fuel_cancel@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_cancel.imageset/room_sailing_buy_fuel_cancel@3x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_cancel.imageset/room_sailing_buy_fuel_cancel@3x.png new file mode 100644 index 00000000..b5edab08 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_cancel.imageset/room_sailing_buy_fuel_cancel@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_sure.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_sure.imageset/Contents.json new file mode 100644 index 00000000..52490827 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_sure.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_sailing_buy_fuel_sure@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_sailing_buy_fuel_sure@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_sure.imageset/room_sailing_buy_fuel_sure@2x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_sure.imageset/room_sailing_buy_fuel_sure@2x.png new file mode 100644 index 00000000..73ac4fd8 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_sure.imageset/room_sailing_buy_fuel_sure@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_sure.imageset/room_sailing_buy_fuel_sure@3x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_sure.imageset/room_sailing_buy_fuel_sure@3x.png new file mode 100644 index 00000000..441828ba Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_buy_fuel_sure.imageset/room_sailing_buy_fuel_sure@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_description.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_description.imageset/Contents.json new file mode 100644 index 00000000..45b60ff1 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_description.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_sailing_description@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_sailing_description@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_description.imageset/room_sailing_description@2x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_description.imageset/room_sailing_description@2x.png new file mode 100644 index 00000000..709caf4c Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_description.imageset/room_sailing_description@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_description.imageset/room_sailing_description@3x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_description.imageset/room_sailing_description@3x.png new file mode 100644 index 00000000..049295ea Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_description.imageset/room_sailing_description@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_explore.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_explore.imageset/Contents.json new file mode 100644 index 00000000..bfd0fb43 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_explore.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_sailing_explore@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_sailing_explore@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_explore.imageset/room_sailing_explore@2x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_explore.imageset/room_sailing_explore@2x.png new file mode 100644 index 00000000..d6546fc0 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_explore.imageset/room_sailing_explore@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_explore.imageset/room_sailing_explore@3x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_explore.imageset/room_sailing_explore@3x.png new file mode 100644 index 00000000..ffa03fab Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_explore.imageset/room_sailing_explore@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_explore_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_explore_bg.imageset/Contents.json new file mode 100644 index 00000000..e751ae93 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_explore_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_sailing_explore_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_sailing_explore_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_explore_bg.imageset/room_sailing_explore_bg@2x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_explore_bg.imageset/room_sailing_explore_bg@2x.png new file mode 100644 index 00000000..d83399e5 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_explore_bg.imageset/room_sailing_explore_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_explore_bg.imageset/room_sailing_explore_bg@3x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_explore_bg.imageset/room_sailing_explore_bg@3x.png new file mode 100644 index 00000000..25e720eb Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_explore_bg.imageset/room_sailing_explore_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_getfule.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_getfule.imageset/Contents.json new file mode 100644 index 00000000..f5f7832b --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_getfule.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_sailing_getfule@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_sailing_getfule@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_getfule.imageset/room_sailing_getfule@2x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_getfule.imageset/room_sailing_getfule@2x.png new file mode 100644 index 00000000..8fd04f91 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_getfule.imageset/room_sailing_getfule@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_getfule.imageset/room_sailing_getfule@3x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_getfule.imageset/room_sailing_getfule@3x.png new file mode 100644 index 00000000..5ccce105 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_getfule.imageset/room_sailing_getfule@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_cowry_large.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_cowry_large.imageset/Contents.json new file mode 100644 index 00000000..3be00047 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_cowry_large.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_sailing_prize_cowry_large@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_sailing_prize_cowry_large@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_cowry_large.imageset/room_sailing_prize_cowry_large@2x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_cowry_large.imageset/room_sailing_prize_cowry_large@2x.png new file mode 100644 index 00000000..6d9aede8 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_cowry_large.imageset/room_sailing_prize_cowry_large@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_cowry_large.imageset/room_sailing_prize_cowry_large@3x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_cowry_large.imageset/room_sailing_prize_cowry_large@3x.png new file mode 100644 index 00000000..4b5bd39a Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_cowry_large.imageset/room_sailing_prize_cowry_large@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_crowy.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_crowy.imageset/Contents.json new file mode 100644 index 00000000..6a6b1f02 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_crowy.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_sailing_prize_crowy@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_sailing_prize_crowy@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_crowy.imageset/room_sailing_prize_crowy@2x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_crowy.imageset/room_sailing_prize_crowy@2x.png new file mode 100644 index 00000000..25ffda1f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_crowy.imageset/room_sailing_prize_crowy@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_crowy.imageset/room_sailing_prize_crowy@3x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_crowy.imageset/room_sailing_prize_crowy@3x.png new file mode 100644 index 00000000..51e37c64 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_crowy.imageset/room_sailing_prize_crowy@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_normal_large.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_normal_large.imageset/Contents.json new file mode 100644 index 00000000..8ce23d86 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_normal_large.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_sailing_prize_normal_large@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_sailing_prize_normal_large@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_normal_large.imageset/room_sailing_prize_normal_large@2x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_normal_large.imageset/room_sailing_prize_normal_large@2x.png new file mode 100644 index 00000000..496d54ab Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_normal_large.imageset/room_sailing_prize_normal_large@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_normal_large.imageset/room_sailing_prize_normal_large@3x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_normal_large.imageset/room_sailing_prize_normal_large@3x.png new file mode 100644 index 00000000..9e4daa88 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_normal_large.imageset/room_sailing_prize_normal_large@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_one.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_one.imageset/Contents.json new file mode 100644 index 00000000..211cacd6 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_one.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_sailing_prize_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_sailing_prize_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_one.imageset/room_sailing_prize_normal@2x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_one.imageset/room_sailing_prize_normal@2x.png new file mode 100644 index 00000000..95265e94 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_one.imageset/room_sailing_prize_normal@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_one.imageset/room_sailing_prize_normal@3x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_one.imageset/room_sailing_prize_normal@3x.png new file mode 100644 index 00000000..46f907c2 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_prize_one.imageset/room_sailing_prize_normal@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank.imageset/Contents.json new file mode 100644 index 00000000..ec68886c --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_sailing_rank@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_sailing_rank@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank.imageset/room_sailing_rank@2x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank.imageset/room_sailing_rank@2x.png new file mode 100644 index 00000000..4802d47f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank.imageset/room_sailing_rank@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank.imageset/room_sailing_rank@3x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank.imageset/room_sailing_rank@3x.png new file mode 100644 index 00000000..df53e7ce Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank.imageset/room_sailing_rank@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_bg.imageset/Contents.json new file mode 100644 index 00000000..764d1d5c --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_sailing_rank_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_sailing_rank_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_bg.imageset/room_sailing_rank_bg@2x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_bg.imageset/room_sailing_rank_bg@2x.png new file mode 100644 index 00000000..270f2b28 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_bg.imageset/room_sailing_rank_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_bg.imageset/room_sailing_rank_bg@3x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_bg.imageset/room_sailing_rank_bg@3x.png new file mode 100644 index 00000000..fd2c9656 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_bg.imageset/room_sailing_rank_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_first.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_first.imageset/Contents.json new file mode 100644 index 00000000..78b5b4f0 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_first.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_sailing_rank_first@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_sailing_rank_first@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_first.imageset/room_sailing_rank_first@2x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_first.imageset/room_sailing_rank_first@2x.png new file mode 100644 index 00000000..065d12bd Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_first.imageset/room_sailing_rank_first@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_first.imageset/room_sailing_rank_first@3x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_first.imageset/room_sailing_rank_first@3x.png new file mode 100644 index 00000000..1a0b6685 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_first.imageset/room_sailing_rank_first@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_second.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_second.imageset/Contents.json new file mode 100644 index 00000000..8203e269 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_second.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_sailing_rank_second@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_sailing_rank_second@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_second.imageset/room_sailing_rank_second@2x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_second.imageset/room_sailing_rank_second@2x.png new file mode 100644 index 00000000..084d5f6f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_second.imageset/room_sailing_rank_second@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_second.imageset/room_sailing_rank_second@3x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_second.imageset/room_sailing_rank_second@3x.png new file mode 100644 index 00000000..59c827b1 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_second.imageset/room_sailing_rank_second@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_third.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_third.imageset/Contents.json new file mode 100644 index 00000000..422fa229 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_third.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_sailing_rank_third@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_sailing_rank_third@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_third.imageset/room_sailing_rank_third@2x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_third.imageset/room_sailing_rank_third@2x.png new file mode 100644 index 00000000..924eba52 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_third.imageset/room_sailing_rank_third@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_third.imageset/room_sailing_rank_third@3x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_third.imageset/room_sailing_rank_third@3x.png new file mode 100644 index 00000000..fa2bbcad Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rank_third.imageset/room_sailing_rank_third@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_record.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_record.imageset/Contents.json new file mode 100644 index 00000000..c9097d21 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_record.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_sailing_record@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_sailing_record@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_record.imageset/room_sailing_record@2x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_record.imageset/room_sailing_record@2x.png new file mode 100644 index 00000000..99ccb051 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_record.imageset/room_sailing_record@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_record.imageset/room_sailing_record@3x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_record.imageset/room_sailing_record@3x.png new file mode 100644 index 00000000..d1f88897 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_record.imageset/room_sailing_record@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_redu.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_redu.imageset/Contents.json new file mode 100644 index 00000000..bf0832f5 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_redu.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_sailing_redu@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_sailing_redu@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_redu.imageset/room_sailing_redu@2x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_redu.imageset/room_sailing_redu@2x.png new file mode 100644 index 00000000..25f46b72 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_redu.imageset/room_sailing_redu@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_redu.imageset/room_sailing_redu@3x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_redu.imageset/room_sailing_redu@3x.png new file mode 100644 index 00000000..4f60fcf4 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_redu.imageset/room_sailing_redu@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rule_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rule_bg.imageset/Contents.json new file mode 100644 index 00000000..262887fb --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rule_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_sailing_rule_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_sailing_rule_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rule_bg.imageset/room_sailing_rule_bg@2x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rule_bg.imageset/room_sailing_rule_bg@2x.png new file mode 100644 index 00000000..4083318d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rule_bg.imageset/room_sailing_rule_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rule_bg.imageset/room_sailing_rule_bg@3x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rule_bg.imageset/room_sailing_rule_bg@3x.png new file mode 100644 index 00000000..eb42332a Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_rule_bg.imageset/room_sailing_rule_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_sailing.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_sailing.imageset/Contents.json new file mode 100644 index 00000000..ecf82d76 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_sailing.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_sailing_sailing@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_sailing_sailing@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_sailing.imageset/room_sailing_sailing@2x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_sailing.imageset/room_sailing_sailing@2x.png new file mode 100644 index 00000000..b825c3e0 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_sailing.imageset/room_sailing_sailing@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_sailing.imageset/room_sailing_sailing@3x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_sailing.imageset/room_sailing_sailing@3x.png new file mode 100644 index 00000000..14cbfac6 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_sailing.imageset/room_sailing_sailing@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_tips_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_tips_normal.imageset/Contents.json new file mode 100644 index 00000000..a7e773c0 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_tips_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_sailing_tips_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_sailing_tips_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_tips_normal.imageset/room_sailing_tips_normal@2x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_tips_normal.imageset/room_sailing_tips_normal@2x.png new file mode 100644 index 00000000..fee24b41 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_tips_normal.imageset/room_sailing_tips_normal@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_tips_normal.imageset/room_sailing_tips_normal@3x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_tips_normal.imageset/room_sailing_tips_normal@3x.png new file mode 100644 index 00000000..113dbdd8 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_tips_normal.imageset/room_sailing_tips_normal@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_tips_select.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_tips_select.imageset/Contents.json new file mode 100644 index 00000000..0c6dfaf3 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_tips_select.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_sailing_tips_select@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_sailing_tips_select@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_tips_select.imageset/room_sailing_tips_select@2x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_tips_select.imageset/room_sailing_tips_select@2x.png new file mode 100644 index 00000000..606753fb Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_tips_select.imageset/room_sailing_tips_select@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/room_sailing_tips_select.imageset/room_sailing_tips_select@3x.png b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_tips_select.imageset/room_sailing_tips_select@3x.png new file mode 100644 index 00000000..f4f96e9d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Sailing/room_sailing_tips_select.imageset/room_sailing_tips_select@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailiing_enter.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailiing_enter.imageset/Contents.json deleted file mode 100644 index ff8c128b..00000000 --- a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailiing_enter.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_sailiing_enter@2x.png", "idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailiing_enter.imageset/yumi_scope_sailiing_enter@2x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailiing_enter.imageset/yumi_scope_sailiing_enter@2x.png deleted file mode 100644 index fe242b31..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailiing_enter.imageset/yumi_scope_sailiing_enter@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_add.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_add.imageset/Contents.json deleted file mode 100644 index 2130357e..00000000 --- a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_add.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_sailing_add@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_sailing_add@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_add.imageset/yumi_scope_sailing_add@2x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_add.imageset/yumi_scope_sailing_add@2x.png deleted file mode 100644 index d270c068..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_add.imageset/yumi_scope_sailing_add@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_add.imageset/yumi_scope_sailing_add@3x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_add.imageset/yumi_scope_sailing_add@3x.png deleted file mode 100644 index 0d749995..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_add.imageset/yumi_scope_sailing_add@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_animation_present_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_animation_present_background.imageset/Contents.json deleted file mode 100644 index ff745c40..00000000 --- a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_animation_present_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_sailing_animation_present_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_sailing_animation_present_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_animation_present_background.imageset/yumi_scope_sailing_animation_present_background@2x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_animation_present_background.imageset/yumi_scope_sailing_animation_present_background@2x.png deleted file mode 100644 index 9f74e31b..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_animation_present_background.imageset/yumi_scope_sailing_animation_present_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_animation_present_background.imageset/yumi_scope_sailing_animation_present_background@3x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_animation_present_background.imageset/yumi_scope_sailing_animation_present_background@3x.png deleted file mode 100644 index 78344f5a..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_animation_present_background.imageset/yumi_scope_sailing_animation_present_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_background.imageset/Contents.json deleted file mode 100644 index e5d5e8b1..00000000 --- a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_sailing_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_sailing_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_background.imageset/yumi_scope_sailing_background@2x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_background.imageset/yumi_scope_sailing_background@2x.png deleted file mode 100644 index fce4201b..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_background.imageset/yumi_scope_sailing_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_background.imageset/yumi_scope_sailing_background@3x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_background.imageset/yumi_scope_sailing_background@3x.png deleted file mode 100644 index 0367f65d..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_background.imageset/yumi_scope_sailing_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_background.imageset/Contents.json deleted file mode 100644 index 7f8604f0..00000000 --- a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_sailing_buy_fuel_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_sailing_buy_fuel_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_background.imageset/yumi_scope_sailing_buy_fuel_background@2x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_background.imageset/yumi_scope_sailing_buy_fuel_background@2x.png deleted file mode 100644 index f30d1b98..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_background.imageset/yumi_scope_sailing_buy_fuel_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_background.imageset/yumi_scope_sailing_buy_fuel_background@3x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_background.imageset/yumi_scope_sailing_buy_fuel_background@3x.png deleted file mode 100644 index cf8abef3..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_background.imageset/yumi_scope_sailing_buy_fuel_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_cancel.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_cancel.imageset/Contents.json deleted file mode 100644 index 957cdccb..00000000 --- a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_cancel.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_sailing_buy_fuel_cancel@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_sailing_buy_fuel_cancel@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_cancel.imageset/yumi_scope_sailing_buy_fuel_cancel@2x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_cancel.imageset/yumi_scope_sailing_buy_fuel_cancel@2x.png deleted file mode 100644 index 5732b4fc..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_cancel.imageset/yumi_scope_sailing_buy_fuel_cancel@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_cancel.imageset/yumi_scope_sailing_buy_fuel_cancel@3x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_cancel.imageset/yumi_scope_sailing_buy_fuel_cancel@3x.png deleted file mode 100644 index e54f7455..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_cancel.imageset/yumi_scope_sailing_buy_fuel_cancel@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_sure.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_sure.imageset/Contents.json deleted file mode 100644 index 23813c48..00000000 --- a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_sure.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_sailing_buy_fuel_sure@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_sailing_buy_fuel_sure@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_sure.imageset/yumi_scope_sailing_buy_fuel_sure@2x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_sure.imageset/yumi_scope_sailing_buy_fuel_sure@2x.png deleted file mode 100644 index 89f3b787..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_sure.imageset/yumi_scope_sailing_buy_fuel_sure@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_sure.imageset/yumi_scope_sailing_buy_fuel_sure@3x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_sure.imageset/yumi_scope_sailing_buy_fuel_sure@3x.png deleted file mode 100644 index 21bf52c5..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_buy_fuel_sure.imageset/yumi_scope_sailing_buy_fuel_sure@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_description.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_description.imageset/Contents.json deleted file mode 100644 index 5f32514b..00000000 --- a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_description.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_sailing_description@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_sailing_description@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_description.imageset/yumi_scope_sailing_description@2x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_description.imageset/yumi_scope_sailing_description@2x.png deleted file mode 100644 index c0c5d308..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_description.imageset/yumi_scope_sailing_description@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_description.imageset/yumi_scope_sailing_description@3x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_description.imageset/yumi_scope_sailing_description@3x.png deleted file mode 100644 index 917c5b3c..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_description.imageset/yumi_scope_sailing_description@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_explore.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_explore.imageset/Contents.json deleted file mode 100644 index d2128b66..00000000 --- a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_explore.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_sailing_explore@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_sailing_explore@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_explore.imageset/yumi_scope_sailing_explore@2x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_explore.imageset/yumi_scope_sailing_explore@2x.png deleted file mode 100644 index 1015f9b5..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_explore.imageset/yumi_scope_sailing_explore@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_explore.imageset/yumi_scope_sailing_explore@3x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_explore.imageset/yumi_scope_sailing_explore@3x.png deleted file mode 100644 index 2d333202..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_explore.imageset/yumi_scope_sailing_explore@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_explore_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_explore_background.imageset/Contents.json deleted file mode 100644 index 95c17e55..00000000 --- a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_explore_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_sailing_explore_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_sailing_explore_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_explore_background.imageset/yumi_scope_sailing_explore_background@2x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_explore_background.imageset/yumi_scope_sailing_explore_background@2x.png deleted file mode 100644 index e046cff3..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_explore_background.imageset/yumi_scope_sailing_explore_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_explore_background.imageset/yumi_scope_sailing_explore_background@3x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_explore_background.imageset/yumi_scope_sailing_explore_background@3x.png deleted file mode 100644 index d5b3de2c..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_explore_background.imageset/yumi_scope_sailing_explore_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_getfule.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_getfule.imageset/Contents.json deleted file mode 100644 index 4f035c7b..00000000 --- a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_getfule.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_sailing_getfule@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_sailing_getfule@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_getfule.imageset/yumi_scope_sailing_getfule@2x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_getfule.imageset/yumi_scope_sailing_getfule@2x.png deleted file mode 100644 index 6ca80617..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_getfule.imageset/yumi_scope_sailing_getfule@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_getfule.imageset/yumi_scope_sailing_getfule@3x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_getfule.imageset/yumi_scope_sailing_getfule@3x.png deleted file mode 100644 index f405eb2c..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_getfule.imageset/yumi_scope_sailing_getfule@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_background.imageset/Contents.json deleted file mode 100644 index a8749f9c..00000000 --- a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_sailing_order_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_sailing_order_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_background.imageset/yumi_scope_sailing_order_background@2x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_background.imageset/yumi_scope_sailing_order_background@2x.png deleted file mode 100644 index 09fb5dcf..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_background.imageset/yumi_scope_sailing_order_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_background.imageset/yumi_scope_sailing_order_background@3x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_background.imageset/yumi_scope_sailing_order_background@3x.png deleted file mode 100644 index 8ad132d2..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_background.imageset/yumi_scope_sailing_order_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_first.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_first.imageset/Contents.json deleted file mode 100644 index 3322f1da..00000000 --- a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_first.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_sailing_order_first@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_sailing_order_first@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_first.imageset/yumi_scope_sailing_order_first@2x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_first.imageset/yumi_scope_sailing_order_first@2x.png deleted file mode 100644 index 423e556d..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_first.imageset/yumi_scope_sailing_order_first@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_first.imageset/yumi_scope_sailing_order_first@3x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_first.imageset/yumi_scope_sailing_order_first@3x.png deleted file mode 100644 index 06bdaa07..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_first.imageset/yumi_scope_sailing_order_first@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_second.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_second.imageset/Contents.json deleted file mode 100644 index 3d4bc34d..00000000 --- a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_second.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_sailing_order_second@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_sailing_order_second@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_second.imageset/yumi_scope_sailing_order_second@2x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_second.imageset/yumi_scope_sailing_order_second@2x.png deleted file mode 100644 index f7ea5355..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_second.imageset/yumi_scope_sailing_order_second@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_second.imageset/yumi_scope_sailing_order_second@3x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_second.imageset/yumi_scope_sailing_order_second@3x.png deleted file mode 100644 index 8efc967d..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_second.imageset/yumi_scope_sailing_order_second@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_third.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_third.imageset/Contents.json deleted file mode 100644 index 5bd1a56f..00000000 --- a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_third.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_sailing_order_third@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_sailing_order_third@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_third.imageset/yumi_scope_sailing_order_third@2x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_third.imageset/yumi_scope_sailing_order_third@2x.png deleted file mode 100644 index 59b7b24b..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_third.imageset/yumi_scope_sailing_order_third@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_third.imageset/yumi_scope_sailing_order_third@3x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_third.imageset/yumi_scope_sailing_order_third@3x.png deleted file mode 100644 index 1ab5f546..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_order_third.imageset/yumi_scope_sailing_order_third@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_cowry_large.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_cowry_large.imageset/Contents.json deleted file mode 100644 index 74d509e1..00000000 --- a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_cowry_large.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_sailing_prize_cowry_large@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_sailing_prize_cowry_large@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_cowry_large.imageset/yumi_scope_sailing_prize_cowry_large@2x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_cowry_large.imageset/yumi_scope_sailing_prize_cowry_large@2x.png deleted file mode 100644 index 3c7fc797..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_cowry_large.imageset/yumi_scope_sailing_prize_cowry_large@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_cowry_large.imageset/yumi_scope_sailing_prize_cowry_large@3x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_cowry_large.imageset/yumi_scope_sailing_prize_cowry_large@3x.png deleted file mode 100644 index f8e597d6..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_cowry_large.imageset/yumi_scope_sailing_prize_cowry_large@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_crowy.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_crowy.imageset/Contents.json deleted file mode 100644 index 021ddd8b..00000000 --- a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_crowy.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_sailing_prize_crowy@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_sailing_prize_crowy@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_crowy.imageset/yumi_scope_sailing_prize_crowy@2x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_crowy.imageset/yumi_scope_sailing_prize_crowy@2x.png deleted file mode 100644 index 26a4606e..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_crowy.imageset/yumi_scope_sailing_prize_crowy@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_crowy.imageset/yumi_scope_sailing_prize_crowy@3x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_crowy.imageset/yumi_scope_sailing_prize_crowy@3x.png deleted file mode 100644 index b46e61f7..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_crowy.imageset/yumi_scope_sailing_prize_crowy@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_normal_large.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_normal_large.imageset/Contents.json deleted file mode 100644 index 0b485872..00000000 --- a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_normal_large.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_sailing_prize_normal_large@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_sailing_prize_normal_large@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_normal_large.imageset/yumi_scope_sailing_prize_normal_large@2x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_normal_large.imageset/yumi_scope_sailing_prize_normal_large@2x.png deleted file mode 100644 index 93fb6469..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_normal_large.imageset/yumi_scope_sailing_prize_normal_large@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_normal_large.imageset/yumi_scope_sailing_prize_normal_large@3x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_normal_large.imageset/yumi_scope_sailing_prize_normal_large@3x.png deleted file mode 100644 index 9dc4a6fc..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_normal_large.imageset/yumi_scope_sailing_prize_normal_large@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_one.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_one.imageset/Contents.json deleted file mode 100644 index 206c1927..00000000 --- a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_one.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_sailing_prize_one@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_sailing_prize_one@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_one.imageset/yumi_scope_sailing_prize_one@2x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_one.imageset/yumi_scope_sailing_prize_one@2x.png deleted file mode 100644 index 559c6187..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_one.imageset/yumi_scope_sailing_prize_one@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_one.imageset/yumi_scope_sailing_prize_one@3x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_one.imageset/yumi_scope_sailing_prize_one@3x.png deleted file mode 100644 index 9a5d9f2d..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_prize_one.imageset/yumi_scope_sailing_prize_one@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_rank.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_rank.imageset/Contents.json deleted file mode 100644 index 037dd029..00000000 --- a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_rank.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_sailing_rank@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_sailing_rank@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_rank.imageset/yumi_scope_sailing_rank@2x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_rank.imageset/yumi_scope_sailing_rank@2x.png deleted file mode 100644 index 94a5a801..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_rank.imageset/yumi_scope_sailing_rank@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_rank.imageset/yumi_scope_sailing_rank@3x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_rank.imageset/yumi_scope_sailing_rank@3x.png deleted file mode 100644 index 46010058..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_rank.imageset/yumi_scope_sailing_rank@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_record.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_record.imageset/Contents.json deleted file mode 100644 index ce5e9e44..00000000 --- a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_record.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_sailing_record@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_sailing_record@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_record.imageset/yumi_scope_sailing_record@2x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_record.imageset/yumi_scope_sailing_record@2x.png deleted file mode 100644 index 799ed1dd..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_record.imageset/yumi_scope_sailing_record@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_record.imageset/yumi_scope_sailing_record@3x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_record.imageset/yumi_scope_sailing_record@3x.png deleted file mode 100644 index 1a2768cb..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_record.imageset/yumi_scope_sailing_record@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_redu.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_redu.imageset/Contents.json deleted file mode 100644 index a9998b10..00000000 --- a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_redu.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_sailing_redu@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_sailing_redu@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_redu.imageset/yumi_scope_sailing_redu@2x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_redu.imageset/yumi_scope_sailing_redu@2x.png deleted file mode 100644 index a494a778..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_redu.imageset/yumi_scope_sailing_redu@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_redu.imageset/yumi_scope_sailing_redu@3x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_redu.imageset/yumi_scope_sailing_redu@3x.png deleted file mode 100644 index ea97813e..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_redu.imageset/yumi_scope_sailing_redu@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_rule_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_rule_background.imageset/Contents.json deleted file mode 100644 index 6ea27024..00000000 --- a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_rule_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_sailing_rule_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_sailing_rule_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_rule_background.imageset/yumi_scope_sailing_rule_background@2x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_rule_background.imageset/yumi_scope_sailing_rule_background@2x.png deleted file mode 100644 index e00418b5..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_rule_background.imageset/yumi_scope_sailing_rule_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_rule_background.imageset/yumi_scope_sailing_rule_background@3x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_rule_background.imageset/yumi_scope_sailing_rule_background@3x.png deleted file mode 100644 index 7118fad2..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_rule_background.imageset/yumi_scope_sailing_rule_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_sailing.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_sailing.imageset/Contents.json deleted file mode 100644 index 40931515..00000000 --- a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_sailing.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_sailing_sailing@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_sailing_sailing@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_sailing.imageset/yumi_scope_sailing_sailing@2x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_sailing.imageset/yumi_scope_sailing_sailing@2x.png deleted file mode 100644 index 7beaa3ad..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_sailing.imageset/yumi_scope_sailing_sailing@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_sailing.imageset/yumi_scope_sailing_sailing@3x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_sailing.imageset/yumi_scope_sailing_sailing@3x.png deleted file mode 100644 index a886d1cb..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_sailing.imageset/yumi_scope_sailing_sailing@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_tips_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_tips_normal.imageset/Contents.json deleted file mode 100644 index 848a250a..00000000 --- a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_tips_normal.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_sailing_tips_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_sailing_tips_normal@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_tips_normal.imageset/yumi_scope_sailing_tips_normal@2x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_tips_normal.imageset/yumi_scope_sailing_tips_normal@2x.png deleted file mode 100644 index 0f70c7b9..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_tips_normal.imageset/yumi_scope_sailing_tips_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_tips_normal.imageset/yumi_scope_sailing_tips_normal@3x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_tips_normal.imageset/yumi_scope_sailing_tips_normal@3x.png deleted file mode 100644 index 89ae3b01..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_tips_normal.imageset/yumi_scope_sailing_tips_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_tips_select.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_tips_select.imageset/Contents.json deleted file mode 100644 index 111c80e5..00000000 --- a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_tips_select.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_sailing_tips_select@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_sailing_tips_select@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_tips_select.imageset/yumi_scope_sailing_tips_select@2x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_tips_select.imageset/yumi_scope_sailing_tips_select@2x.png deleted file mode 100644 index 15e517d8..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_tips_select.imageset/yumi_scope_sailing_tips_select@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_tips_select.imageset/yumi_scope_sailing_tips_select@3x.png b/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_tips_select.imageset/yumi_scope_sailing_tips_select@3x.png deleted file mode 100644 index 2def6254..00000000 Binary files a/YuMi/Assets.xcassets/yna/Sailing/yumi_scope_sailing_tips_select.imageset/yumi_scope_sailing_tips_select@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Setting/Contents.json b/YuMi/Assets.xcassets/yna/Setting/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/yna/Setting/Contents.json +++ b/YuMi/Assets.xcassets/yna/Setting/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Setting/room_setting_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Setting/room_setting_arrow.imageset/Contents.json new file mode 100644 index 00000000..eddb27d2 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Setting/room_setting_arrow.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_setting_arrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_setting_arrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Setting/room_setting_arrow.imageset/room_setting_arrow@2x.png b/YuMi/Assets.xcassets/yna/Setting/room_setting_arrow.imageset/room_setting_arrow@2x.png new file mode 100644 index 00000000..e1eff858 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Setting/room_setting_arrow.imageset/room_setting_arrow@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Setting/room_setting_arrow.imageset/room_setting_arrow@3x.png b/YuMi/Assets.xcassets/yna/Setting/room_setting_arrow.imageset/room_setting_arrow@3x.png new file mode 100644 index 00000000..17c784d4 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Setting/room_setting_arrow.imageset/room_setting_arrow@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Setting/room_setting_tag_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Setting/room_setting_tag_close.imageset/Contents.json new file mode 100644 index 00000000..9b6bd9e3 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Setting/room_setting_tag_close.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_setting_tag_close@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_setting_tag_close@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Setting/room_setting_tag_close.imageset/room_setting_tag_close@2x.png b/YuMi/Assets.xcassets/yna/Setting/room_setting_tag_close.imageset/room_setting_tag_close@2x.png new file mode 100644 index 00000000..f55493c5 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Setting/room_setting_tag_close.imageset/room_setting_tag_close@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Setting/room_setting_tag_close.imageset/room_setting_tag_close@3x.png b/YuMi/Assets.xcassets/yna/Setting/room_setting_tag_close.imageset/room_setting_tag_close@3x.png new file mode 100644 index 00000000..9734accd Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Setting/room_setting_tag_close.imageset/room_setting_tag_close@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Setting/yumi_scope_setting_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Setting/yumi_scope_setting_arrow.imageset/Contents.json deleted file mode 100644 index 8714c0ec..00000000 --- a/YuMi/Assets.xcassets/yna/Setting/yumi_scope_setting_arrow.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_setting_arrow@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_setting_arrow@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Setting/yumi_scope_setting_arrow.imageset/yumi_scope_setting_arrow@2x.png b/YuMi/Assets.xcassets/yna/Setting/yumi_scope_setting_arrow.imageset/yumi_scope_setting_arrow@2x.png deleted file mode 100644 index 7214d0d5..00000000 Binary files a/YuMi/Assets.xcassets/yna/Setting/yumi_scope_setting_arrow.imageset/yumi_scope_setting_arrow@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Setting/yumi_scope_setting_arrow.imageset/yumi_scope_setting_arrow@3x.png b/YuMi/Assets.xcassets/yna/Setting/yumi_scope_setting_arrow.imageset/yumi_scope_setting_arrow@3x.png deleted file mode 100644 index 82e517c5..00000000 Binary files a/YuMi/Assets.xcassets/yna/Setting/yumi_scope_setting_arrow.imageset/yumi_scope_setting_arrow@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Setting/yumi_scope_setting_labelclose.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Setting/yumi_scope_setting_labelclose.imageset/Contents.json deleted file mode 100644 index 8f0c1305..00000000 --- a/YuMi/Assets.xcassets/yna/Setting/yumi_scope_setting_labelclose.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_setting_labelclose@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_setting_labelclose@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Setting/yumi_scope_setting_labelclose.imageset/yumi_scope_setting_labelclose@2x.png b/YuMi/Assets.xcassets/yna/Setting/yumi_scope_setting_labelclose.imageset/yumi_scope_setting_labelclose@2x.png deleted file mode 100644 index 5b4581ce..00000000 Binary files a/YuMi/Assets.xcassets/yna/Setting/yumi_scope_setting_labelclose.imageset/yumi_scope_setting_labelclose@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Setting/yumi_scope_setting_labelclose.imageset/yumi_scope_setting_labelclose@3x.png b/YuMi/Assets.xcassets/yna/Setting/yumi_scope_setting_labelclose.imageset/yumi_scope_setting_labelclose@3x.png deleted file mode 100644 index d5afcabc..00000000 Binary files a/YuMi/Assets.xcassets/yna/Setting/yumi_scope_setting_labelclose.imageset/yumi_scope_setting_labelclose@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Trumpet/Contents.json b/YuMi/Assets.xcassets/yna/Trumpet/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/yna/Trumpet/Contents.json +++ b/YuMi/Assets.xcassets/yna/Trumpet/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Trumpet/rooom_trumpet_bgImage.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Trumpet/rooom_trumpet_bgImage.imageset/Contents.json new file mode 100644 index 00000000..78330736 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Trumpet/rooom_trumpet_bgImage.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "rooom_trumpet_bgImage@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "rooom_trumpet_bgImage@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Trumpet/rooom_trumpet_bgImage.imageset/rooom_trumpet_bgImage@2x.png b/YuMi/Assets.xcassets/yna/Trumpet/rooom_trumpet_bgImage.imageset/rooom_trumpet_bgImage@2x.png new file mode 100644 index 00000000..b4a03045 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Trumpet/rooom_trumpet_bgImage.imageset/rooom_trumpet_bgImage@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Trumpet/rooom_trumpet_bgImage.imageset/rooom_trumpet_bgImage@3x.png b/YuMi/Assets.xcassets/yna/Trumpet/rooom_trumpet_bgImage.imageset/rooom_trumpet_bgImage@3x.png new file mode 100644 index 00000000..c8409f41 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Trumpet/rooom_trumpet_bgImage.imageset/rooom_trumpet_bgImage@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Trumpet/rooom_trumpet_send.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Trumpet/rooom_trumpet_send.imageset/Contents.json new file mode 100644 index 00000000..914e7ae4 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/Trumpet/rooom_trumpet_send.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "rooom_trumpet_send@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "rooom_trumpet_send@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/Trumpet/rooom_trumpet_send.imageset/rooom_trumpet_send@2x.png b/YuMi/Assets.xcassets/yna/Trumpet/rooom_trumpet_send.imageset/rooom_trumpet_send@2x.png new file mode 100644 index 00000000..a9cfbf28 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Trumpet/rooom_trumpet_send.imageset/rooom_trumpet_send@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/Trumpet/rooom_trumpet_send.imageset/rooom_trumpet_send@3x.png b/YuMi/Assets.xcassets/yna/Trumpet/rooom_trumpet_send.imageset/rooom_trumpet_send@3x.png new file mode 100644 index 00000000..87702f7c Binary files /dev/null and b/YuMi/Assets.xcassets/yna/Trumpet/rooom_trumpet_send.imageset/rooom_trumpet_send@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/Trumpet/yumi_rooom_trumpet_backgroundImage.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Trumpet/yumi_rooom_trumpet_backgroundImage.imageset/Contents.json deleted file mode 100644 index 54316fba..00000000 --- a/YuMi/Assets.xcassets/yna/Trumpet/yumi_rooom_trumpet_backgroundImage.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_rooom_trumpet_backgroundImage@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_rooom_trumpet_backgroundImage@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Trumpet/yumi_rooom_trumpet_backgroundImage.imageset/yumi_rooom_trumpet_backgroundImage@2x.png b/YuMi/Assets.xcassets/yna/Trumpet/yumi_rooom_trumpet_backgroundImage.imageset/yumi_rooom_trumpet_backgroundImage@2x.png deleted file mode 100644 index b7f8d3f0..00000000 Binary files a/YuMi/Assets.xcassets/yna/Trumpet/yumi_rooom_trumpet_backgroundImage.imageset/yumi_rooom_trumpet_backgroundImage@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Trumpet/yumi_rooom_trumpet_backgroundImage.imageset/yumi_rooom_trumpet_backgroundImage@3x.png b/YuMi/Assets.xcassets/yna/Trumpet/yumi_rooom_trumpet_backgroundImage.imageset/yumi_rooom_trumpet_backgroundImage@3x.png deleted file mode 100644 index 262b41f3..00000000 Binary files a/YuMi/Assets.xcassets/yna/Trumpet/yumi_rooom_trumpet_backgroundImage.imageset/yumi_rooom_trumpet_backgroundImage@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Trumpet/yumi_rooom_trumpet_send.imageset/Contents.json b/YuMi/Assets.xcassets/yna/Trumpet/yumi_rooom_trumpet_send.imageset/Contents.json deleted file mode 100644 index 420524b8..00000000 --- a/YuMi/Assets.xcassets/yna/Trumpet/yumi_rooom_trumpet_send.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_rooom_trumpet_send@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_rooom_trumpet_send@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/Trumpet/yumi_rooom_trumpet_send.imageset/yumi_rooom_trumpet_send@2x.png b/YuMi/Assets.xcassets/yna/Trumpet/yumi_rooom_trumpet_send.imageset/yumi_rooom_trumpet_send@2x.png deleted file mode 100644 index b0a6df24..00000000 Binary files a/YuMi/Assets.xcassets/yna/Trumpet/yumi_rooom_trumpet_send.imageset/yumi_rooom_trumpet_send@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/Trumpet/yumi_rooom_trumpet_send.imageset/yumi_rooom_trumpet_send@3x.png b/YuMi/Assets.xcassets/yna/Trumpet/yumi_rooom_trumpet_send.imageset/yumi_rooom_trumpet_send@3x.png deleted file mode 100644 index 49fc0657..00000000 Binary files a/YuMi/Assets.xcassets/yna/Trumpet/yumi_rooom_trumpet_send.imageset/yumi_rooom_trumpet_send@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/yna/UserCard/Contents.json +++ b/YuMi/Assets.xcassets/yna/UserCard/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_attention_disable.imageset/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/usercard_attention_disable.imageset/Contents.json new file mode 100644 index 00000000..31514704 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/UserCard/usercard_attention_disable.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "usercard_attention_disable@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "usercard_attention_disable@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_attention_disable.imageset/usercard_attention_disable@2x.png b/YuMi/Assets.xcassets/yna/UserCard/usercard_attention_disable.imageset/usercard_attention_disable@2x.png new file mode 100644 index 00000000..ae92f13e Binary files /dev/null and b/YuMi/Assets.xcassets/yna/UserCard/usercard_attention_disable.imageset/usercard_attention_disable@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_attention_disable.imageset/usercard_attention_disable@3x.png b/YuMi/Assets.xcassets/yna/UserCard/usercard_attention_disable.imageset/usercard_attention_disable@3x.png new file mode 100644 index 00000000..0dccb4f2 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/UserCard/usercard_attention_disable.imageset/usercard_attention_disable@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_attention_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/usercard_attention_normal.imageset/Contents.json new file mode 100644 index 00000000..1c8ca329 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/UserCard/usercard_attention_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "usercard_attention_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "usercard_attention_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_attention_normal.imageset/usercard_attention_normal@2x.png b/YuMi/Assets.xcassets/yna/UserCard/usercard_attention_normal.imageset/usercard_attention_normal@2x.png new file mode 100644 index 00000000..4cbd4950 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/UserCard/usercard_attention_normal.imageset/usercard_attention_normal@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_attention_normal.imageset/usercard_attention_normal@3x.png b/YuMi/Assets.xcassets/yna/UserCard/usercard_attention_normal.imageset/usercard_attention_normal@3x.png new file mode 100644 index 00000000..01bb4bac Binary files /dev/null and b/YuMi/Assets.xcassets/yna/UserCard/usercard_attention_normal.imageset/usercard_attention_normal@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_blacklist_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/usercard_blacklist_normal.imageset/Contents.json new file mode 100644 index 00000000..d8684c2a --- /dev/null +++ b/YuMi/Assets.xcassets/yna/UserCard/usercard_blacklist_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "usercard_blacklist_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "usercard_blacklist_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_blacklist_normal.imageset/usercard_blacklist_normal@2x.png b/YuMi/Assets.xcassets/yna/UserCard/usercard_blacklist_normal.imageset/usercard_blacklist_normal@2x.png new file mode 100644 index 00000000..cdd971f5 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/UserCard/usercard_blacklist_normal.imageset/usercard_blacklist_normal@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_blacklist_normal.imageset/usercard_blacklist_normal@3x.png b/YuMi/Assets.xcassets/yna/UserCard/usercard_blacklist_normal.imageset/usercard_blacklist_normal@3x.png new file mode 100644 index 00000000..bc3a4cbd Binary files /dev/null and b/YuMi/Assets.xcassets/yna/UserCard/usercard_blacklist_normal.imageset/usercard_blacklist_normal@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_chat_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/usercard_chat_normal.imageset/Contents.json new file mode 100644 index 00000000..0940f391 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/UserCard/usercard_chat_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "usercard_chat_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "usercard_chat_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_chat_normal.imageset/usercard_chat_normal@2x.png b/YuMi/Assets.xcassets/yna/UserCard/usercard_chat_normal.imageset/usercard_chat_normal@2x.png new file mode 100644 index 00000000..37c0c1c1 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/UserCard/usercard_chat_normal.imageset/usercard_chat_normal@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_chat_normal.imageset/usercard_chat_normal@3x.png b/YuMi/Assets.xcassets/yna/UserCard/usercard_chat_normal.imageset/usercard_chat_normal@3x.png new file mode 100644 index 00000000..56cb4826 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/UserCard/usercard_chat_normal.imageset/usercard_chat_normal@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/usercard_close.imageset/Contents.json new file mode 100644 index 00000000..f08a1929 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/UserCard/usercard_close.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "usercard_close@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "usercard_close@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_close.imageset/usercard_close@2x.png b/YuMi/Assets.xcassets/yna/UserCard/usercard_close.imageset/usercard_close@2x.png new file mode 100644 index 00000000..b418b773 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/UserCard/usercard_close.imageset/usercard_close@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_close.imageset/usercard_close@3x.png b/YuMi/Assets.xcassets/yna/UserCard/usercard_close.imageset/usercard_close@3x.png new file mode 100644 index 00000000..4bf7d85c Binary files /dev/null and b/YuMi/Assets.xcassets/yna/UserCard/usercard_close.imageset/usercard_close@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_disable.imageset/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_disable.imageset/Contents.json new file mode 100644 index 00000000..73c9d478 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_disable.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "usercard_invite_micro_disable@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "usercard_invite_micro_disable@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_disable.imageset/usercard_invite_micro_disable@2x.png b/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_disable.imageset/usercard_invite_micro_disable@2x.png new file mode 100644 index 00000000..fc45601d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_disable.imageset/usercard_invite_micro_disable@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_disable.imageset/usercard_invite_micro_disable@3x.png b/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_disable.imageset/usercard_invite_micro_disable@3x.png new file mode 100644 index 00000000..14bd6f6b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_disable.imageset/usercard_invite_micro_disable@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_normal.imageset/Contents.json new file mode 100644 index 00000000..560dab93 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "usercard_invite_micro_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "usercard_invite_micro_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_normal.imageset/usercard_invite_micro_normal@2x.png b/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_normal.imageset/usercard_invite_micro_normal@2x.png new file mode 100644 index 00000000..22edb5bc Binary files /dev/null and b/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_normal.imageset/usercard_invite_micro_normal@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_normal.imageset/usercard_invite_micro_normal@3x.png b/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_normal.imageset/usercard_invite_micro_normal@3x.png new file mode 100644 index 00000000..6754ba7e Binary files /dev/null and b/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_normal.imageset/usercard_invite_micro_normal@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_owner.imageset/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_owner.imageset/Contents.json new file mode 100644 index 00000000..9e626d77 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_owner.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "usercard_invite_micro_owner@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "usercard_invite_micro_owner@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_owner.imageset/usercard_invite_micro_owner@2x.png b/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_owner.imageset/usercard_invite_micro_owner@2x.png new file mode 100644 index 00000000..72c0f8b5 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_owner.imageset/usercard_invite_micro_owner@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_owner.imageset/usercard_invite_micro_owner@3x.png b/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_owner.imageset/usercard_invite_micro_owner@3x.png new file mode 100644 index 00000000..629f0330 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_owner.imageset/usercard_invite_micro_owner@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_owner_disable.imageset/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_owner_disable.imageset/Contents.json new file mode 100644 index 00000000..9d2d97dc --- /dev/null +++ b/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_owner_disable.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "usercard_invite_micro_owner_disable@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "usercard_invite_micro_owner_disable@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_owner_disable.imageset/usercard_invite_micro_owner_disable@2x.png b/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_owner_disable.imageset/usercard_invite_micro_owner_disable@2x.png new file mode 100644 index 00000000..7756d986 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_owner_disable.imageset/usercard_invite_micro_owner_disable@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_owner_disable.imageset/usercard_invite_micro_owner_disable@3x.png b/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_owner_disable.imageset/usercard_invite_micro_owner_disable@3x.png new file mode 100644 index 00000000..6911b777 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/UserCard/usercard_invite_micro_owner_disable.imageset/usercard_invite_micro_owner_disable@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_kickout_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/usercard_kickout_normal.imageset/Contents.json new file mode 100644 index 00000000..95db6e4e --- /dev/null +++ b/YuMi/Assets.xcassets/yna/UserCard/usercard_kickout_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "usercard_kickout_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "usercard_kickout_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_kickout_normal.imageset/usercard_kickout_normal@2x.png b/YuMi/Assets.xcassets/yna/UserCard/usercard_kickout_normal.imageset/usercard_kickout_normal@2x.png new file mode 100644 index 00000000..877b6913 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/UserCard/usercard_kickout_normal.imageset/usercard_kickout_normal@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_kickout_normal.imageset/usercard_kickout_normal@3x.png b/YuMi/Assets.xcassets/yna/UserCard/usercard_kickout_normal.imageset/usercard_kickout_normal@3x.png new file mode 100644 index 00000000..4ffa0bb3 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/UserCard/usercard_kickout_normal.imageset/usercard_kickout_normal@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_manager_disable.imageset/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/usercard_manager_disable.imageset/Contents.json new file mode 100644 index 00000000..a406f665 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/UserCard/usercard_manager_disable.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "usercard_manager_disable@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "usercard_manager_disable@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_manager_disable.imageset/usercard_manager_disable@2x.png b/YuMi/Assets.xcassets/yna/UserCard/usercard_manager_disable.imageset/usercard_manager_disable@2x.png new file mode 100644 index 00000000..be0b3e7f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/UserCard/usercard_manager_disable.imageset/usercard_manager_disable@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_manager_disable.imageset/usercard_manager_disable@3x.png b/YuMi/Assets.xcassets/yna/UserCard/usercard_manager_disable.imageset/usercard_manager_disable@3x.png new file mode 100644 index 00000000..12f4bb21 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/UserCard/usercard_manager_disable.imageset/usercard_manager_disable@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_manager_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/usercard_manager_normal.imageset/Contents.json new file mode 100644 index 00000000..5d416c4c --- /dev/null +++ b/YuMi/Assets.xcassets/yna/UserCard/usercard_manager_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "usercard_manager_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "usercard_manager_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_manager_normal.imageset/usercard_manager_normal@2x.png b/YuMi/Assets.xcassets/yna/UserCard/usercard_manager_normal.imageset/usercard_manager_normal@2x.png new file mode 100644 index 00000000..09a7174f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/UserCard/usercard_manager_normal.imageset/usercard_manager_normal@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_manager_normal.imageset/usercard_manager_normal@3x.png b/YuMi/Assets.xcassets/yna/UserCard/usercard_manager_normal.imageset/usercard_manager_normal@3x.png new file mode 100644 index 00000000..720cd62a Binary files /dev/null and b/YuMi/Assets.xcassets/yna/UserCard/usercard_manager_normal.imageset/usercard_manager_normal@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_sendgift_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/usercard_sendgift_normal.imageset/Contents.json new file mode 100644 index 00000000..169a30b9 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/UserCard/usercard_sendgift_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "usercard_sendgift_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "usercard_sendgift_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_sendgift_normal.imageset/usercard_sendgift_normal@2x.png b/YuMi/Assets.xcassets/yna/UserCard/usercard_sendgift_normal.imageset/usercard_sendgift_normal@2x.png new file mode 100644 index 00000000..4627ef97 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/UserCard/usercard_sendgift_normal.imageset/usercard_sendgift_normal@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/usercard_sendgift_normal.imageset/usercard_sendgift_normal@3x.png b/YuMi/Assets.xcassets/yna/UserCard/usercard_sendgift_normal.imageset/usercard_sendgift_normal@3x.png new file mode 100644 index 00000000..5953fab8 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/UserCard/usercard_sendgift_normal.imageset/usercard_sendgift_normal@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_attention_disable.imageset/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_attention_disable.imageset/Contents.json deleted file mode 100644 index 901285a5..00000000 --- a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_attention_disable.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_usercard_attention_disable@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_usercard_attention_disable@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_attention_disable.imageset/yumi_usercard_attention_disable@2x.png b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_attention_disable.imageset/yumi_usercard_attention_disable@2x.png deleted file mode 100644 index f52b0f36..00000000 Binary files a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_attention_disable.imageset/yumi_usercard_attention_disable@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_attention_disable.imageset/yumi_usercard_attention_disable@3x.png b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_attention_disable.imageset/yumi_usercard_attention_disable@3x.png deleted file mode 100644 index dc41af8f..00000000 Binary files a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_attention_disable.imageset/yumi_usercard_attention_disable@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_attention_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_attention_normal.imageset/Contents.json deleted file mode 100644 index 54c24fb2..00000000 --- a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_attention_normal.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_usercard_attention_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_usercard_attention_normal@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_attention_normal.imageset/yumi_usercard_attention_normal@2x.png b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_attention_normal.imageset/yumi_usercard_attention_normal@2x.png deleted file mode 100644 index e27cd0ef..00000000 Binary files a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_attention_normal.imageset/yumi_usercard_attention_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_attention_normal.imageset/yumi_usercard_attention_normal@3x.png b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_attention_normal.imageset/yumi_usercard_attention_normal@3x.png deleted file mode 100644 index d253eebe..00000000 Binary files a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_attention_normal.imageset/yumi_usercard_attention_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_blacklist_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_blacklist_normal.imageset/Contents.json deleted file mode 100644 index b50fa8b3..00000000 --- a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_blacklist_normal.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_usercard_blacklist_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_usercard_blacklist_normal@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_blacklist_normal.imageset/yumi_usercard_blacklist_normal@2x.png b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_blacklist_normal.imageset/yumi_usercard_blacklist_normal@2x.png deleted file mode 100644 index 0adaaf78..00000000 Binary files a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_blacklist_normal.imageset/yumi_usercard_blacklist_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_blacklist_normal.imageset/yumi_usercard_blacklist_normal@3x.png b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_blacklist_normal.imageset/yumi_usercard_blacklist_normal@3x.png deleted file mode 100644 index 03cd993b..00000000 Binary files a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_blacklist_normal.imageset/yumi_usercard_blacklist_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_chat_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_chat_normal.imageset/Contents.json deleted file mode 100644 index ec969a1a..00000000 --- a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_chat_normal.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_usercard_chat_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_usercard_chat_normal@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_chat_normal.imageset/yumi_usercard_chat_normal@2x.png b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_chat_normal.imageset/yumi_usercard_chat_normal@2x.png deleted file mode 100644 index 8e2df782..00000000 Binary files a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_chat_normal.imageset/yumi_usercard_chat_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_chat_normal.imageset/yumi_usercard_chat_normal@3x.png b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_chat_normal.imageset/yumi_usercard_chat_normal@3x.png deleted file mode 100644 index b6c87178..00000000 Binary files a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_chat_normal.imageset/yumi_usercard_chat_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_close.imageset/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_close.imageset/Contents.json deleted file mode 100644 index 49e3a04f..00000000 --- a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_close.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_usercard_close@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_usercard_close@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_close.imageset/yumi_usercard_close@2x.png b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_close.imageset/yumi_usercard_close@2x.png deleted file mode 100644 index 07835c1f..00000000 Binary files a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_close.imageset/yumi_usercard_close@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_close.imageset/yumi_usercard_close@3x.png b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_close.imageset/yumi_usercard_close@3x.png deleted file mode 100644 index eff08fd1..00000000 Binary files a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_close.imageset/yumi_usercard_close@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_disable.imageset/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_disable.imageset/Contents.json deleted file mode 100644 index 8681774e..00000000 --- a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_disable.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_usercard_invite_micro_disable@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_usercard_invite_micro_disable@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_disable.imageset/yumi_usercard_invite_micro_disable@2x.png b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_disable.imageset/yumi_usercard_invite_micro_disable@2x.png deleted file mode 100644 index 0a77d109..00000000 Binary files a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_disable.imageset/yumi_usercard_invite_micro_disable@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_disable.imageset/yumi_usercard_invite_micro_disable@3x.png b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_disable.imageset/yumi_usercard_invite_micro_disable@3x.png deleted file mode 100644 index 5b94942b..00000000 Binary files a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_disable.imageset/yumi_usercard_invite_micro_disable@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_normal.imageset/Contents.json deleted file mode 100644 index 30c20955..00000000 --- a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_normal.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_usercard_invite_micro_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_usercard_invite_micro_normal@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_normal.imageset/yumi_usercard_invite_micro_normal@2x.png b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_normal.imageset/yumi_usercard_invite_micro_normal@2x.png deleted file mode 100644 index 5c7ce7a0..00000000 Binary files a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_normal.imageset/yumi_usercard_invite_micro_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_normal.imageset/yumi_usercard_invite_micro_normal@3x.png b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_normal.imageset/yumi_usercard_invite_micro_normal@3x.png deleted file mode 100644 index f68bcb5f..00000000 Binary files a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_normal.imageset/yumi_usercard_invite_micro_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_owner.imageset/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_owner.imageset/Contents.json deleted file mode 100644 index 4696246f..00000000 --- a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_owner.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_usercard_invite_micro_owner@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_usercard_invite_micro_owner@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_owner.imageset/yumi_usercard_invite_micro_owner@2x.png b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_owner.imageset/yumi_usercard_invite_micro_owner@2x.png deleted file mode 100644 index e6171eb8..00000000 Binary files a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_owner.imageset/yumi_usercard_invite_micro_owner@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_owner.imageset/yumi_usercard_invite_micro_owner@3x.png b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_owner.imageset/yumi_usercard_invite_micro_owner@3x.png deleted file mode 100644 index 1c0450b0..00000000 Binary files a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_owner.imageset/yumi_usercard_invite_micro_owner@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_owner_disable.imageset/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_owner_disable.imageset/Contents.json deleted file mode 100644 index 1eac1c1c..00000000 --- a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_owner_disable.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_usercard_invite_micro_owner_disable@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_usercard_invite_micro_owner_disable@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_owner_disable.imageset/yumi_usercard_invite_micro_owner_disable@2x.png b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_owner_disable.imageset/yumi_usercard_invite_micro_owner_disable@2x.png deleted file mode 100644 index 214baa93..00000000 Binary files a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_owner_disable.imageset/yumi_usercard_invite_micro_owner_disable@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_owner_disable.imageset/yumi_usercard_invite_micro_owner_disable@3x.png b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_owner_disable.imageset/yumi_usercard_invite_micro_owner_disable@3x.png deleted file mode 100644 index e412cf00..00000000 Binary files a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_invite_micro_owner_disable.imageset/yumi_usercard_invite_micro_owner_disable@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_kickout_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_kickout_normal.imageset/Contents.json deleted file mode 100644 index ba76ce54..00000000 --- a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_kickout_normal.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_usercard_kickout_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_usercard_kickout_normal@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_kickout_normal.imageset/yumi_usercard_kickout_normal@2x.png b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_kickout_normal.imageset/yumi_usercard_kickout_normal@2x.png deleted file mode 100644 index c13df71b..00000000 Binary files a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_kickout_normal.imageset/yumi_usercard_kickout_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_kickout_normal.imageset/yumi_usercard_kickout_normal@3x.png b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_kickout_normal.imageset/yumi_usercard_kickout_normal@3x.png deleted file mode 100644 index fa7bd7f1..00000000 Binary files a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_kickout_normal.imageset/yumi_usercard_kickout_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_manager_disable.imageset/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_manager_disable.imageset/Contents.json deleted file mode 100644 index 27a23673..00000000 --- a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_manager_disable.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_usercard_manager_disable@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_usercard_manager_disable@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_manager_disable.imageset/yumi_usercard_manager_disable@2x.png b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_manager_disable.imageset/yumi_usercard_manager_disable@2x.png deleted file mode 100644 index 756e5c70..00000000 Binary files a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_manager_disable.imageset/yumi_usercard_manager_disable@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_manager_disable.imageset/yumi_usercard_manager_disable@3x.png b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_manager_disable.imageset/yumi_usercard_manager_disable@3x.png deleted file mode 100644 index b2a29714..00000000 Binary files a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_manager_disable.imageset/yumi_usercard_manager_disable@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_manager_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_manager_normal.imageset/Contents.json deleted file mode 100644 index 59cd09e1..00000000 --- a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_manager_normal.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_usercard_manager_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_usercard_manager_normal@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_manager_normal.imageset/yumi_usercard_manager_normal@2x.png b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_manager_normal.imageset/yumi_usercard_manager_normal@2x.png deleted file mode 100644 index d486f102..00000000 Binary files a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_manager_normal.imageset/yumi_usercard_manager_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_manager_normal.imageset/yumi_usercard_manager_normal@3x.png b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_manager_normal.imageset/yumi_usercard_manager_normal@3x.png deleted file mode 100644 index a2153ea0..00000000 Binary files a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_manager_normal.imageset/yumi_usercard_manager_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_sendpresent_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_sendpresent_normal.imageset/Contents.json deleted file mode 100644 index ea72b33c..00000000 --- a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_sendpresent_normal.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_usercard_sendpresent_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_usercard_sendpresent_normal@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_sendpresent_normal.imageset/yumi_usercard_sendpresent_normal@2x.png b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_sendpresent_normal.imageset/yumi_usercard_sendpresent_normal@2x.png deleted file mode 100644 index b40d47fe..00000000 Binary files a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_sendpresent_normal.imageset/yumi_usercard_sendpresent_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_sendpresent_normal.imageset/yumi_usercard_sendpresent_normal@3x.png b/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_sendpresent_normal.imageset/yumi_usercard_sendpresent_normal@3x.png deleted file mode 100644 index 6bab5891..00000000 Binary files a/YuMi/Assets.xcassets/yna/UserCard/yumi_usercard_sendpresent_normal.imageset/yumi_usercard_sendpresent_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/Contents.json b/YuMi/Assets.xcassets/yna/WishGift/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/yna/WishGift/Contents.json +++ b/YuMi/Assets.xcassets/yna/WishGift/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/WishGift/room_more_menu_wish_gift.imageset/Contents.json b/YuMi/Assets.xcassets/yna/WishGift/room_more_menu_wish_gift.imageset/Contents.json new file mode 100644 index 00000000..ce26d098 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/WishGift/room_more_menu_wish_gift.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_more_menu_wish_gift@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_more_menu_wish_gift@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/WishGift/room_more_menu_wish_gift.imageset/room_more_menu_wish_gift@2x.png b/YuMi/Assets.xcassets/yna/WishGift/room_more_menu_wish_gift.imageset/room_more_menu_wish_gift@2x.png new file mode 100644 index 00000000..71b1b690 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/WishGift/room_more_menu_wish_gift.imageset/room_more_menu_wish_gift@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/room_more_menu_wish_gift.imageset/room_more_menu_wish_gift@3x.png b/YuMi/Assets.xcassets/yna/WishGift/room_more_menu_wish_gift.imageset/room_more_menu_wish_gift@3x.png new file mode 100644 index 00000000..a5ba12d9 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/WishGift/room_more_menu_wish_gift.imageset/room_more_menu_wish_gift@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/room_wish_create_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/yna/WishGift/room_wish_create_arrow.imageset/Contents.json new file mode 100644 index 00000000..88042afc --- /dev/null +++ b/YuMi/Assets.xcassets/yna/WishGift/room_wish_create_arrow.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_wish_create_arrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_wish_create_arrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/WishGift/room_wish_create_arrow.imageset/room_wish_create_arrow@2x.png b/YuMi/Assets.xcassets/yna/WishGift/room_wish_create_arrow.imageset/room_wish_create_arrow@2x.png new file mode 100644 index 00000000..3f840731 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/WishGift/room_wish_create_arrow.imageset/room_wish_create_arrow@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/room_wish_create_arrow.imageset/room_wish_create_arrow@3x.png b/YuMi/Assets.xcassets/yna/WishGift/room_wish_create_arrow.imageset/room_wish_create_arrow@3x.png new file mode 100644 index 00000000..6bad5f75 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/WishGift/room_wish_create_arrow.imageset/room_wish_create_arrow@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_add.imageset/Contents.json b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_add.imageset/Contents.json new file mode 100644 index 00000000..66e39ba3 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_add.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_wish_gift_add@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_wish_gift_add@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_add.imageset/room_wish_gift_add@2x.png b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_add.imageset/room_wish_gift_add@2x.png new file mode 100644 index 00000000..747d537d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_add.imageset/room_wish_gift_add@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_add.imageset/room_wish_gift_add@3x.png b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_add.imageset/room_wish_gift_add@3x.png new file mode 100644 index 00000000..a36dadf3 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_add.imageset/room_wish_gift_add@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_completion.imageset/Contents.json b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_completion.imageset/Contents.json new file mode 100644 index 00000000..87a85a89 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_completion.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_wish_gift_completion@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_wish_gift_completion@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_completion.imageset/room_wish_gift_completion@2x.png b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_completion.imageset/room_wish_gift_completion@2x.png new file mode 100644 index 00000000..eb088d99 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_completion.imageset/room_wish_gift_completion@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_completion.imageset/room_wish_gift_completion@3x.png b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_completion.imageset/room_wish_gift_completion@3x.png new file mode 100644 index 00000000..8452a0a5 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_completion.imageset/room_wish_gift_completion@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_mesage_finish.imageset/Contents.json b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_mesage_finish.imageset/Contents.json new file mode 100644 index 00000000..a6547082 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_mesage_finish.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_wish_gift_mesage_finish@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_wish_gift_mesage_finish@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_mesage_finish.imageset/room_wish_gift_mesage_finish@2x.png b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_mesage_finish.imageset/room_wish_gift_mesage_finish@2x.png new file mode 100644 index 00000000..0b86e971 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_mesage_finish.imageset/room_wish_gift_mesage_finish@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_mesage_finish.imageset/room_wish_gift_mesage_finish@3x.png b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_mesage_finish.imageset/room_wish_gift_mesage_finish@3x.png new file mode 100644 index 00000000..f4222bc2 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_mesage_finish.imageset/room_wish_gift_mesage_finish@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_panel_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_panel_bg.imageset/Contents.json new file mode 100644 index 00000000..996861a0 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_panel_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_wish_gift_panel_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_wish_gift_panel_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_panel_bg.imageset/room_wish_gift_panel_bg@2x.png b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_panel_bg.imageset/room_wish_gift_panel_bg@2x.png new file mode 100644 index 00000000..847bd2c4 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_panel_bg.imageset/room_wish_gift_panel_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_panel_bg.imageset/room_wish_gift_panel_bg@3x.png b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_panel_bg.imageset/room_wish_gift_panel_bg@3x.png new file mode 100644 index 00000000..d68980bc Binary files /dev/null and b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_panel_bg.imageset/room_wish_gift_panel_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_panel_gift_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_panel_gift_bg.imageset/Contents.json new file mode 100644 index 00000000..a68f9737 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_panel_gift_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_wish_gift_panel_gift_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_wish_gift_panel_gift_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_panel_gift_bg.imageset/room_wish_gift_panel_gift_bg@2x.png b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_panel_gift_bg.imageset/room_wish_gift_panel_gift_bg@2x.png new file mode 100644 index 00000000..69efd3c1 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_panel_gift_bg.imageset/room_wish_gift_panel_gift_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_panel_gift_bg.imageset/room_wish_gift_panel_gift_bg@3x.png b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_panel_gift_bg.imageset/room_wish_gift_panel_gift_bg@3x.png new file mode 100644 index 00000000..c6099213 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_panel_gift_bg.imageset/room_wish_gift_panel_gift_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_subtract.imageset/Contents.json b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_subtract.imageset/Contents.json new file mode 100644 index 00000000..7c298540 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_subtract.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_wish_gift_subtract@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_wish_gift_subtract@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_subtract.imageset/room_wish_gift_subtract@2x.png b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_subtract.imageset/room_wish_gift_subtract@2x.png new file mode 100644 index 00000000..03a740ce Binary files /dev/null and b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_subtract.imageset/room_wish_gift_subtract@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_subtract.imageset/room_wish_gift_subtract@3x.png b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_subtract.imageset/room_wish_gift_subtract@3x.png new file mode 100644 index 00000000..3805509b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/WishGift/room_wish_gift_subtract.imageset/room_wish_gift_subtract@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_more_menu_wish_gift.imageset/Contents.json b/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_more_menu_wish_gift.imageset/Contents.json deleted file mode 100644 index 21afed23..00000000 --- a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_more_menu_wish_gift.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_more_menu_wish_gift@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_more_menu_wish_gift@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_more_menu_wish_gift.imageset/yumi_scope_more_menu_wish_gift@2x.png b/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_more_menu_wish_gift.imageset/yumi_scope_more_menu_wish_gift@2x.png deleted file mode 100644 index 6e9873f3..00000000 Binary files a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_more_menu_wish_gift.imageset/yumi_scope_more_menu_wish_gift@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_more_menu_wish_gift.imageset/yumi_scope_more_menu_wish_gift@3x.png b/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_more_menu_wish_gift.imageset/yumi_scope_more_menu_wish_gift@3x.png deleted file mode 100644 index 631466ee..00000000 Binary files a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_more_menu_wish_gift.imageset/yumi_scope_more_menu_wish_gift@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_create_arrow.imageset/Contents.json b/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_create_arrow.imageset/Contents.json deleted file mode 100644 index a6f86738..00000000 --- a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_create_arrow.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_wish_create_arrow@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_wish_create_arrow@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_create_arrow.imageset/yumi_scope_wish_create_arrow@2x.png b/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_create_arrow.imageset/yumi_scope_wish_create_arrow@2x.png deleted file mode 100644 index 73d23ef0..00000000 Binary files a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_create_arrow.imageset/yumi_scope_wish_create_arrow@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_create_arrow.imageset/yumi_scope_wish_create_arrow@3x.png b/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_create_arrow.imageset/yumi_scope_wish_create_arrow@3x.png deleted file mode 100644 index bedfed3f..00000000 Binary files a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_create_arrow.imageset/yumi_scope_wish_create_arrow@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_add.imageset/Contents.json b/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_add.imageset/Contents.json deleted file mode 100644 index 01af9e71..00000000 --- a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_add.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_wish_present_add@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_wish_present_add@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_add.imageset/yumi_scope_wish_present_add@2x.png b/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_add.imageset/yumi_scope_wish_present_add@2x.png deleted file mode 100644 index 34c875af..00000000 Binary files a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_add.imageset/yumi_scope_wish_present_add@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_add.imageset/yumi_scope_wish_present_add@3x.png b/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_add.imageset/yumi_scope_wish_present_add@3x.png deleted file mode 100644 index f15e6a37..00000000 Binary files a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_add.imageset/yumi_scope_wish_present_add@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_completion.imageset/Contents.json b/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_completion.imageset/Contents.json deleted file mode 100644 index 261b3e9e..00000000 --- a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_completion.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_wish_present_completion@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_wish_present_completion@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_completion.imageset/yumi_scope_wish_present_completion@2x.png b/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_completion.imageset/yumi_scope_wish_present_completion@2x.png deleted file mode 100644 index b9f5be3c..00000000 Binary files a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_completion.imageset/yumi_scope_wish_present_completion@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_completion.imageset/yumi_scope_wish_present_completion@3x.png b/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_completion.imageset/yumi_scope_wish_present_completion@3x.png deleted file mode 100644 index 8a23ff05..00000000 Binary files a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_completion.imageset/yumi_scope_wish_present_completion@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_mesage_finish.imageset/Contents.json b/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_mesage_finish.imageset/Contents.json deleted file mode 100644 index a187d787..00000000 --- a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_mesage_finish.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_wish_present_mesage_finish@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_wish_present_mesage_finish@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_mesage_finish.imageset/yumi_scope_wish_present_mesage_finish@2x.png b/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_mesage_finish.imageset/yumi_scope_wish_present_mesage_finish@2x.png deleted file mode 100644 index 42395e22..00000000 Binary files a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_mesage_finish.imageset/yumi_scope_wish_present_mesage_finish@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_mesage_finish.imageset/yumi_scope_wish_present_mesage_finish@3x.png b/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_mesage_finish.imageset/yumi_scope_wish_present_mesage_finish@3x.png deleted file mode 100644 index cd1179d1..00000000 Binary files a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_mesage_finish.imageset/yumi_scope_wish_present_mesage_finish@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_panel_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_panel_background.imageset/Contents.json deleted file mode 100644 index 4d332e47..00000000 --- a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_panel_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_wish_present_panel_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_wish_present_panel_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_panel_background.imageset/yumi_scope_wish_present_panel_background@2x.png b/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_panel_background.imageset/yumi_scope_wish_present_panel_background@2x.png deleted file mode 100644 index f3ed87f8..00000000 Binary files a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_panel_background.imageset/yumi_scope_wish_present_panel_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_panel_background.imageset/yumi_scope_wish_present_panel_background@3x.png b/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_panel_background.imageset/yumi_scope_wish_present_panel_background@3x.png deleted file mode 100644 index e1ce852a..00000000 Binary files a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_panel_background.imageset/yumi_scope_wish_present_panel_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_panel_present_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_panel_present_background.imageset/Contents.json deleted file mode 100644 index 5d954cfd..00000000 --- a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_panel_present_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_wish_present_panel_present_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_wish_present_panel_present_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_panel_present_background.imageset/yumi_scope_wish_present_panel_present_background@2x.png b/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_panel_present_background.imageset/yumi_scope_wish_present_panel_present_background@2x.png deleted file mode 100644 index d57e1d5a..00000000 Binary files a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_panel_present_background.imageset/yumi_scope_wish_present_panel_present_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_panel_present_background.imageset/yumi_scope_wish_present_panel_present_background@3x.png b/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_panel_present_background.imageset/yumi_scope_wish_present_panel_present_background@3x.png deleted file mode 100644 index 3133f4db..00000000 Binary files a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_panel_present_background.imageset/yumi_scope_wish_present_panel_present_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_subtract.imageset/Contents.json b/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_subtract.imageset/Contents.json deleted file mode 100644 index cb9cd19f..00000000 --- a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_subtract.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_wish_present_subtract@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_wish_present_subtract@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_subtract.imageset/yumi_scope_wish_present_subtract@2x.png b/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_subtract.imageset/yumi_scope_wish_present_subtract@2x.png deleted file mode 100644 index 43110bfa..00000000 Binary files a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_subtract.imageset/yumi_scope_wish_present_subtract@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_subtract.imageset/yumi_scope_wish_present_subtract@3x.png b/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_subtract.imageset/yumi_scope_wish_present_subtract@3x.png deleted file mode 100644 index 8680a7a0..00000000 Binary files a/YuMi/Assets.xcassets/yna/WishGift/yumi_scope_wish_present_subtract.imageset/yumi_scope_wish_present_subtract@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/YearActivity/Contents.json b/YuMi/Assets.xcassets/yna/YearActivity/Contents.json index e2342777..73c00596 100644 --- a/YuMi/Assets.xcassets/yna/YearActivity/Contents.json +++ b/YuMi/Assets.xcassets/yna/YearActivity/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/YearActivity/YearActivity_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/YearActivity/YearActivity_bg.imageset/Contents.json new file mode 100644 index 00000000..095db9ca --- /dev/null +++ b/YuMi/Assets.xcassets/yna/YearActivity/YearActivity_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "YearActivity_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "YearActivity_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/YearActivity/YearActivity_bg.imageset/YearActivity_bg@2x.png b/YuMi/Assets.xcassets/yna/YearActivity/YearActivity_bg.imageset/YearActivity_bg@2x.png new file mode 100644 index 00000000..8b2a1bee Binary files /dev/null and b/YuMi/Assets.xcassets/yna/YearActivity/YearActivity_bg.imageset/YearActivity_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/YearActivity/YearActivity_bg.imageset/YearActivity_bg@3x.png b/YuMi/Assets.xcassets/yna/YearActivity/YearActivity_bg.imageset/YearActivity_bg@3x.png new file mode 100644 index 00000000..d911f156 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/YearActivity/YearActivity_bg.imageset/YearActivity_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/YearActivity/YearActivity_goto.imageset/Contents.json b/YuMi/Assets.xcassets/yna/YearActivity/YearActivity_goto.imageset/Contents.json new file mode 100644 index 00000000..5d330ba1 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/YearActivity/YearActivity_goto.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "YearActivity_goto@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "YearActivity_goto@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/YearActivity/YearActivity_goto.imageset/YearActivity_goto@2x.png b/YuMi/Assets.xcassets/yna/YearActivity/YearActivity_goto.imageset/YearActivity_goto@2x.png new file mode 100644 index 00000000..e83eb8d2 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/YearActivity/YearActivity_goto.imageset/YearActivity_goto@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/YearActivity/YearActivity_goto.imageset/YearActivity_goto@3x.png b/YuMi/Assets.xcassets/yna/YearActivity/YearActivity_goto.imageset/YearActivity_goto@3x.png new file mode 100644 index 00000000..d669e8cc Binary files /dev/null and b/YuMi/Assets.xcassets/yna/YearActivity/YearActivity_goto.imageset/YearActivity_goto@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/YearActivity/yumi_YearActivity_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/YearActivity/yumi_YearActivity_background.imageset/Contents.json deleted file mode 100644 index a5735e07..00000000 --- a/YuMi/Assets.xcassets/yna/YearActivity/yumi_YearActivity_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_YearActivity_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_YearActivity_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/YearActivity/yumi_YearActivity_background.imageset/yumi_YearActivity_background@2x.png b/YuMi/Assets.xcassets/yna/YearActivity/yumi_YearActivity_background.imageset/yumi_YearActivity_background@2x.png deleted file mode 100644 index 4ac2096c..00000000 Binary files a/YuMi/Assets.xcassets/yna/YearActivity/yumi_YearActivity_background.imageset/yumi_YearActivity_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/YearActivity/yumi_YearActivity_background.imageset/yumi_YearActivity_background@3x.png b/YuMi/Assets.xcassets/yna/YearActivity/yumi_YearActivity_background.imageset/yumi_YearActivity_background@3x.png deleted file mode 100644 index 63224c80..00000000 Binary files a/YuMi/Assets.xcassets/yna/YearActivity/yumi_YearActivity_background.imageset/yumi_YearActivity_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/YearActivity/yumi_YearActivity_goto.imageset/Contents.json b/YuMi/Assets.xcassets/yna/YearActivity/yumi_YearActivity_goto.imageset/Contents.json deleted file mode 100644 index a9c9f81d..00000000 --- a/YuMi/Assets.xcassets/yna/YearActivity/yumi_YearActivity_goto.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_YearActivity_goto@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_YearActivity_goto@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/YearActivity/yumi_YearActivity_goto.imageset/yumi_YearActivity_goto@2x.png b/YuMi/Assets.xcassets/yna/YearActivity/yumi_YearActivity_goto.imageset/yumi_YearActivity_goto@2x.png deleted file mode 100644 index 299bea39..00000000 Binary files a/YuMi/Assets.xcassets/yna/YearActivity/yumi_YearActivity_goto.imageset/yumi_YearActivity_goto@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/YearActivity/yumi_YearActivity_goto.imageset/yumi_YearActivity_goto@3x.png b/YuMi/Assets.xcassets/yna/YearActivity/yumi_YearActivity_goto.imageset/yumi_YearActivity_goto@3x.png deleted file mode 100644 index 08c62973..00000000 Binary files a/YuMi/Assets.xcassets/yna/YearActivity/yumi_YearActivity_goto.imageset/yumi_YearActivity_goto@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/min_room_back.imageset/Contents.json b/YuMi/Assets.xcassets/yna/min_room_back.imageset/Contents.json new file mode 100644 index 00000000..5da73e3c --- /dev/null +++ b/YuMi/Assets.xcassets/yna/min_room_back.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "min_room_back@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "min_room_back@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/min_room_back.imageset/min_room_back@2x.png b/YuMi/Assets.xcassets/yna/min_room_back.imageset/min_room_back@2x.png new file mode 100644 index 00000000..338e66d4 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/min_room_back.imageset/min_room_back@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/min_room_back.imageset/min_room_back@3x.png b/YuMi/Assets.xcassets/yna/min_room_back.imageset/min_room_back@3x.png new file mode 100644 index 00000000..d1046470 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/min_room_back.imageset/min_room_back@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/room_background.imageset/Contents.json new file mode 100644 index 00000000..9a13035e --- /dev/null +++ b/YuMi/Assets.xcassets/yna/room_background.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_background .png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/room_background.imageset/room_background .png b/YuMi/Assets.xcassets/yna/room_background.imageset/room_background .png new file mode 100644 index 00000000..1ac7c65d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_background.imageset/room_background .png differ diff --git a/YuMi/Assets.xcassets/yna/room_collect_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/room_collect_normal.imageset/Contents.json new file mode 100644 index 00000000..7e4c9c60 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/room_collect_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_collect_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_collect_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/room_collect_normal.imageset/room_collect_normal@2x.png b/YuMi/Assets.xcassets/yna/room_collect_normal.imageset/room_collect_normal@2x.png new file mode 100644 index 00000000..c5c7a44f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_collect_normal.imageset/room_collect_normal@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_collect_normal.imageset/room_collect_normal@3x.png b/YuMi/Assets.xcassets/yna/room_collect_normal.imageset/room_collect_normal@3x.png new file mode 100644 index 00000000..d605cd89 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_collect_normal.imageset/room_collect_normal@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_collect_selected.imageset/Contents.json b/YuMi/Assets.xcassets/yna/room_collect_selected.imageset/Contents.json new file mode 100644 index 00000000..7d7aa79f --- /dev/null +++ b/YuMi/Assets.xcassets/yna/room_collect_selected.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_collect_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_collect_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/room_collect_selected.imageset/room_collect_selected@2x.png b/YuMi/Assets.xcassets/yna/room_collect_selected.imageset/room_collect_selected@2x.png new file mode 100644 index 00000000..2c0da543 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_collect_selected.imageset/room_collect_selected@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_collect_selected.imageset/room_collect_selected@3x.png b/YuMi/Assets.xcassets/yna/room_collect_selected.imageset/room_collect_selected@3x.png new file mode 100644 index 00000000..8cf09d01 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_collect_selected.imageset/room_collect_selected@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_enterRoom_hide.imageset/Contents.json b/YuMi/Assets.xcassets/yna/room_enterRoom_hide.imageset/Contents.json new file mode 100644 index 00000000..00251668 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/room_enterRoom_hide.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_enterRoom_hide@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_enterRoom_hide@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/room_enterRoom_hide.imageset/room_enterRoom_hide@2x.png b/YuMi/Assets.xcassets/yna/room_enterRoom_hide.imageset/room_enterRoom_hide@2x.png new file mode 100644 index 00000000..b49a3665 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_enterRoom_hide.imageset/room_enterRoom_hide@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_enterRoom_hide.imageset/room_enterRoom_hide@3x.png b/YuMi/Assets.xcassets/yna/room_enterRoom_hide.imageset/room_enterRoom_hide@3x.png new file mode 100644 index 00000000..b92d3cfd Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_enterRoom_hide.imageset/room_enterRoom_hide@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_gift_banner_high_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/room_gift_banner_high_bg.imageset/Contents.json new file mode 100644 index 00000000..0398ce79 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/room_gift_banner_high_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_gift_banner_high_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_gift_banner_high_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/room_gift_banner_high_bg.imageset/room_gift_banner_high_bg@2x.png b/YuMi/Assets.xcassets/yna/room_gift_banner_high_bg.imageset/room_gift_banner_high_bg@2x.png new file mode 100644 index 00000000..316c58f9 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_gift_banner_high_bg.imageset/room_gift_banner_high_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_gift_banner_high_bg.imageset/room_gift_banner_high_bg@3x.png b/YuMi/Assets.xcassets/yna/room_gift_banner_high_bg.imageset/room_gift_banner_high_bg@3x.png new file mode 100644 index 00000000..63fd4dd0 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_gift_banner_high_bg.imageset/room_gift_banner_high_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_gift_banner_light.imageset/Contents.json b/YuMi/Assets.xcassets/yna/room_gift_banner_light.imageset/Contents.json new file mode 100644 index 00000000..bbfb6b20 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/room_gift_banner_light.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_gift_banner_light@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_gift_banner_light@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/room_gift_banner_light.imageset/room_gift_banner_light@2x.png b/YuMi/Assets.xcassets/yna/room_gift_banner_light.imageset/room_gift_banner_light@2x.png new file mode 100644 index 00000000..19eaa046 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_gift_banner_light.imageset/room_gift_banner_light@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_gift_banner_light.imageset/room_gift_banner_light@3x.png b/YuMi/Assets.xcassets/yna/room_gift_banner_light.imageset/room_gift_banner_light@3x.png new file mode 100644 index 00000000..7883706b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_gift_banner_light.imageset/room_gift_banner_light@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_gift_banner_low_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/room_gift_banner_low_bg.imageset/Contents.json new file mode 100644 index 00000000..1218342d --- /dev/null +++ b/YuMi/Assets.xcassets/yna/room_gift_banner_low_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_gift_banner_low_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_gift_banner_low_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/room_gift_banner_low_bg.imageset/room_gift_banner_low_bg@2x.png b/YuMi/Assets.xcassets/yna/room_gift_banner_low_bg.imageset/room_gift_banner_low_bg@2x.png new file mode 100644 index 00000000..5913265f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_gift_banner_low_bg.imageset/room_gift_banner_low_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_gift_banner_low_bg.imageset/room_gift_banner_low_bg@3x.png b/YuMi/Assets.xcassets/yna/room_gift_banner_low_bg.imageset/room_gift_banner_low_bg@3x.png new file mode 100644 index 00000000..e6cefe19 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_gift_banner_low_bg.imageset/room_gift_banner_low_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_gift_banner_middle_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/room_gift_banner_middle_bg.imageset/Contents.json new file mode 100644 index 00000000..3bf340cd --- /dev/null +++ b/YuMi/Assets.xcassets/yna/room_gift_banner_middle_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_gift_banner_middle_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_gift_banner_middle_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/room_gift_banner_middle_bg.imageset/room_gift_banner_middle_bg@2x.png b/YuMi/Assets.xcassets/yna/room_gift_banner_middle_bg.imageset/room_gift_banner_middle_bg@2x.png new file mode 100644 index 00000000..ed34bd43 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_gift_banner_middle_bg.imageset/room_gift_banner_middle_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_gift_banner_middle_bg.imageset/room_gift_banner_middle_bg@3x.png b/YuMi/Assets.xcassets/yna/room_gift_banner_middle_bg.imageset/room_gift_banner_middle_bg@3x.png new file mode 100644 index 00000000..925fab5b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_gift_banner_middle_bg.imageset/room_gift_banner_middle_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_gift_noble_entrance.imageset/Contents.json b/YuMi/Assets.xcassets/yna/room_gift_noble_entrance.imageset/Contents.json new file mode 100644 index 00000000..8cbbb9d8 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/room_gift_noble_entrance.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_gift_noble_entrance@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_gift_noble_entrance@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/room_gift_noble_entrance.imageset/room_gift_noble_entrance@2x.png b/YuMi/Assets.xcassets/yna/room_gift_noble_entrance.imageset/room_gift_noble_entrance@2x.png new file mode 100644 index 00000000..e61616de Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_gift_noble_entrance.imageset/room_gift_noble_entrance@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_gift_noble_entrance.imageset/room_gift_noble_entrance@3x.png b/YuMi/Assets.xcassets/yna/room_gift_noble_entrance.imageset/room_gift_noble_entrance@3x.png new file mode 100644 index 00000000..e6c2d85d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_gift_noble_entrance.imageset/room_gift_noble_entrance@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_gift_noble_lock.imageset/Contents.json b/YuMi/Assets.xcassets/yna/room_gift_noble_lock.imageset/Contents.json new file mode 100644 index 00000000..4fd49460 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/room_gift_noble_lock.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_gift_noble_lock@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_gift_noble_lock@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/room_gift_noble_lock.imageset/room_gift_noble_lock@2x.png b/YuMi/Assets.xcassets/yna/room_gift_noble_lock.imageset/room_gift_noble_lock@2x.png new file mode 100644 index 00000000..35a4ad4f Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_gift_noble_lock.imageset/room_gift_noble_lock@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_gift_noble_lock.imageset/room_gift_noble_lock@3x.png b/YuMi/Assets.xcassets/yna/room_gift_noble_lock.imageset/room_gift_noble_lock@3x.png new file mode 100644 index 00000000..608b445d Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_gift_noble_lock.imageset/room_gift_noble_lock@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_info_back.imageset/Contents.json b/YuMi/Assets.xcassets/yna/room_info_back.imageset/Contents.json new file mode 100644 index 00000000..28a5b7ad --- /dev/null +++ b/YuMi/Assets.xcassets/yna/room_info_back.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_info_back@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_info_back@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/room_info_back.imageset/room_info_back@2x.png b/YuMi/Assets.xcassets/yna/room_info_back.imageset/room_info_back@2x.png new file mode 100644 index 00000000..9ab1aaf0 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_info_back.imageset/room_info_back@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_info_back.imageset/room_info_back@3x.png b/YuMi/Assets.xcassets/yna/room_info_back.imageset/room_info_back@3x.png new file mode 100644 index 00000000..9e10372b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_info_back.imageset/room_info_back@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_info_exit.imageset/Contents.json b/YuMi/Assets.xcassets/yna/room_info_exit.imageset/Contents.json new file mode 100644 index 00000000..0cd96b66 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/room_info_exit.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_info_exit@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_info_exit@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/room_info_exit.imageset/room_info_exit@2x.png b/YuMi/Assets.xcassets/yna/room_info_exit.imageset/room_info_exit@2x.png new file mode 100644 index 00000000..3e902448 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_info_exit.imageset/room_info_exit@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_info_exit.imageset/room_info_exit@3x.png b/YuMi/Assets.xcassets/yna/room_info_exit.imageset/room_info_exit@3x.png new file mode 100644 index 00000000..712274f3 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_info_exit.imageset/room_info_exit@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_info_gift_effect.imageset/Contents.json b/YuMi/Assets.xcassets/yna/room_info_gift_effect.imageset/Contents.json new file mode 100644 index 00000000..460e8486 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/room_info_gift_effect.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_info_gift_effect@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_info_gift_effect@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/room_info_gift_effect.imageset/room_info_gift_effect@2x.png b/YuMi/Assets.xcassets/yna/room_info_gift_effect.imageset/room_info_gift_effect@2x.png new file mode 100644 index 00000000..efa4b7e0 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_info_gift_effect.imageset/room_info_gift_effect@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_info_gift_effect.imageset/room_info_gift_effect@3x.png b/YuMi/Assets.xcassets/yna/room_info_gift_effect.imageset/room_info_gift_effect@3x.png new file mode 100644 index 00000000..69b4dfbb Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_info_gift_effect.imageset/room_info_gift_effect@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_info_lock_room.imageset/Contents.json b/YuMi/Assets.xcassets/yna/room_info_lock_room.imageset/Contents.json new file mode 100644 index 00000000..47137044 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/room_info_lock_room.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_info_lock_room@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_info_lock_room@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/room_info_lock_room.imageset/room_info_lock_room@2x.png b/YuMi/Assets.xcassets/yna/room_info_lock_room.imageset/room_info_lock_room@2x.png new file mode 100644 index 00000000..eb42c9b0 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_info_lock_room.imageset/room_info_lock_room@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_info_lock_room.imageset/room_info_lock_room@3x.png b/YuMi/Assets.xcassets/yna/room_info_lock_room.imageset/room_info_lock_room@3x.png new file mode 100644 index 00000000..f7f1cbf8 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_info_lock_room.imageset/room_info_lock_room@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_info_mini.imageset/Contents.json b/YuMi/Assets.xcassets/yna/room_info_mini.imageset/Contents.json new file mode 100644 index 00000000..4eafcb99 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/room_info_mini.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_info_mini@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_info_mini@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/room_info_mini.imageset/room_info_mini@2x.png b/YuMi/Assets.xcassets/yna/room_info_mini.imageset/room_info_mini@2x.png new file mode 100644 index 00000000..ff1c9f96 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_info_mini.imageset/room_info_mini@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_info_mini.imageset/room_info_mini@3x.png b/YuMi/Assets.xcassets/yna/room_info_mini.imageset/room_info_mini@3x.png new file mode 100644 index 00000000..186a84cd Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_info_mini.imageset/room_info_mini@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_info_report.imageset/Contents.json b/YuMi/Assets.xcassets/yna/room_info_report.imageset/Contents.json new file mode 100644 index 00000000..f45b3963 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/room_info_report.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_info_report@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_info_report@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/room_info_report.imageset/room_info_report@2x.png b/YuMi/Assets.xcassets/yna/room_info_report.imageset/room_info_report@2x.png new file mode 100644 index 00000000..bdfb74e6 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_info_report.imageset/room_info_report@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_info_report.imageset/room_info_report@3x.png b/YuMi/Assets.xcassets/yna/room_info_report.imageset/room_info_report@3x.png new file mode 100644 index 00000000..cf22a5f3 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_info_report.imageset/room_info_report@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_info_setting.imageset/Contents.json b/YuMi/Assets.xcassets/yna/room_info_setting.imageset/Contents.json new file mode 100644 index 00000000..1b93b4af --- /dev/null +++ b/YuMi/Assets.xcassets/yna/room_info_setting.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_info_setting@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_info_setting@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/room_info_setting.imageset/room_info_setting@2x.png b/YuMi/Assets.xcassets/yna/room_info_setting.imageset/room_info_setting@2x.png new file mode 100644 index 00000000..88c4f9f8 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_info_setting.imageset/room_info_setting@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_info_setting.imageset/room_info_setting@3x.png b/YuMi/Assets.xcassets/yna/room_info_setting.imageset/room_info_setting@3x.png new file mode 100644 index 00000000..a2a7b8b2 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_info_setting.imageset/room_info_setting@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_licnese_hour_rank_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/room_licnese_hour_rank_bg.imageset/Contents.json new file mode 100644 index 00000000..6d5ba252 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/room_licnese_hour_rank_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_licnese_hour_rank_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_licnese_hour_rank_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/room_licnese_hour_rank_bg.imageset/room_licnese_hour_rank_bg@2x.png b/YuMi/Assets.xcassets/yna/room_licnese_hour_rank_bg.imageset/room_licnese_hour_rank_bg@2x.png new file mode 100644 index 00000000..b10102d1 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_licnese_hour_rank_bg.imageset/room_licnese_hour_rank_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_licnese_hour_rank_bg.imageset/room_licnese_hour_rank_bg@3x.png b/YuMi/Assets.xcassets/yna/room_licnese_hour_rank_bg.imageset/room_licnese_hour_rank_bg@3x.png new file mode 100644 index 00000000..f6c5ea79 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_licnese_hour_rank_bg.imageset/room_licnese_hour_rank_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_message_tips_bg.imageset/Contents.json b/YuMi/Assets.xcassets/yna/room_message_tips_bg.imageset/Contents.json new file mode 100644 index 00000000..ef45d437 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/room_message_tips_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_message_tips_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_message_tips_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/room_message_tips_bg.imageset/room_message_tips_bg@2x.png b/YuMi/Assets.xcassets/yna/room_message_tips_bg.imageset/room_message_tips_bg@2x.png new file mode 100644 index 00000000..1f7bb587 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_message_tips_bg.imageset/room_message_tips_bg@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_message_tips_bg.imageset/room_message_tips_bg@3x.png b/YuMi/Assets.xcassets/yna/room_message_tips_bg.imageset/room_message_tips_bg@3x.png new file mode 100644 index 00000000..28ef88c1 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_message_tips_bg.imageset/room_message_tips_bg@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_secretMan.imageset/Contents.json b/YuMi/Assets.xcassets/yna/room_secretMan.imageset/Contents.json new file mode 100644 index 00000000..38b9e927 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/room_secretMan.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_secretMan@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/room_secretMan.imageset/room_secretMan@2x.png b/YuMi/Assets.xcassets/yna/room_secretMan.imageset/room_secretMan@2x.png new file mode 100644 index 00000000..91895f33 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_secretMan.imageset/room_secretMan@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_star_kitchen.imageset/Contents.json b/YuMi/Assets.xcassets/yna/room_star_kitchen.imageset/Contents.json new file mode 100644 index 00000000..ac8cf899 --- /dev/null +++ b/YuMi/Assets.xcassets/yna/room_star_kitchen.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_star_kitchen@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_star_kitchen@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/yna/room_star_kitchen.imageset/room_star_kitchen@2x.png b/YuMi/Assets.xcassets/yna/room_star_kitchen.imageset/room_star_kitchen@2x.png new file mode 100644 index 00000000..8c02860b Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_star_kitchen.imageset/room_star_kitchen@2x.png differ diff --git a/YuMi/Assets.xcassets/yna/room_star_kitchen.imageset/room_star_kitchen@3x.png b/YuMi/Assets.xcassets/yna/room_star_kitchen.imageset/room_star_kitchen@3x.png new file mode 100644 index 00000000..02029b31 Binary files /dev/null and b/YuMi/Assets.xcassets/yna/room_star_kitchen.imageset/room_star_kitchen@3x.png differ diff --git a/YuMi/Assets.xcassets/yna/yumi_min_scope_back.imageset/Contents.json b/YuMi/Assets.xcassets/yna/yumi_min_scope_back.imageset/Contents.json deleted file mode 100644 index d202bec9..00000000 --- a/YuMi/Assets.xcassets/yna/yumi_min_scope_back.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_min_scope_back@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_min_scope_back@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/yumi_min_scope_back.imageset/yumi_min_scope_back@2x.png b/YuMi/Assets.xcassets/yna/yumi_min_scope_back.imageset/yumi_min_scope_back@2x.png deleted file mode 100644 index bb29f4ac..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_min_scope_back.imageset/yumi_min_scope_back@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_min_scope_back.imageset/yumi_min_scope_back@3x.png b/YuMi/Assets.xcassets/yna/yumi_min_scope_back.imageset/yumi_min_scope_back@3x.png deleted file mode 100644 index f7688944..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_min_scope_back.imageset/yumi_min_scope_back@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/yumi_scope_background.imageset/Contents.json deleted file mode 100644 index 88c314b8..00000000 --- a/YuMi/Assets.xcassets/yna/yumi_scope_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_background@2x.png", "idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_background.imageset/yumi_scope_background@2x.png b/YuMi/Assets.xcassets/yna/yumi_scope_background.imageset/yumi_scope_background@2x.png deleted file mode 100644 index 00754d4b..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_background.imageset/yumi_scope_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_collect_normal.imageset/Contents.json b/YuMi/Assets.xcassets/yna/yumi_scope_collect_normal.imageset/Contents.json deleted file mode 100644 index 5332e16e..00000000 --- a/YuMi/Assets.xcassets/yna/yumi_scope_collect_normal.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_collect_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_collect_normal@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_collect_normal.imageset/yumi_scope_collect_normal@2x.png b/YuMi/Assets.xcassets/yna/yumi_scope_collect_normal.imageset/yumi_scope_collect_normal@2x.png deleted file mode 100644 index fc7181b8..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_collect_normal.imageset/yumi_scope_collect_normal@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_collect_normal.imageset/yumi_scope_collect_normal@3x.png b/YuMi/Assets.xcassets/yna/yumi_scope_collect_normal.imageset/yumi_scope_collect_normal@3x.png deleted file mode 100644 index 82407043..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_collect_normal.imageset/yumi_scope_collect_normal@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_collect_selected.imageset/Contents.json b/YuMi/Assets.xcassets/yna/yumi_scope_collect_selected.imageset/Contents.json deleted file mode 100644 index 6dfa464e..00000000 --- a/YuMi/Assets.xcassets/yna/yumi_scope_collect_selected.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_collect_selected@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_collect_selected@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_collect_selected.imageset/yumi_scope_collect_selected@2x.png b/YuMi/Assets.xcassets/yna/yumi_scope_collect_selected.imageset/yumi_scope_collect_selected@2x.png deleted file mode 100644 index ccfab612..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_collect_selected.imageset/yumi_scope_collect_selected@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_collect_selected.imageset/yumi_scope_collect_selected@3x.png b/YuMi/Assets.xcassets/yna/yumi_scope_collect_selected.imageset/yumi_scope_collect_selected@3x.png deleted file mode 100644 index 26c2a93c..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_collect_selected.imageset/yumi_scope_collect_selected@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_enterRoom_hide.imageset/Contents.json b/YuMi/Assets.xcassets/yna/yumi_scope_enterRoom_hide.imageset/Contents.json deleted file mode 100644 index ab42b359..00000000 --- a/YuMi/Assets.xcassets/yna/yumi_scope_enterRoom_hide.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_enterRoom_hide@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_enterRoom_hide@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_enterRoom_hide.imageset/yumi_scope_enterRoom_hide@2x.png b/YuMi/Assets.xcassets/yna/yumi_scope_enterRoom_hide.imageset/yumi_scope_enterRoom_hide@2x.png deleted file mode 100644 index 49ec100d..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_enterRoom_hide.imageset/yumi_scope_enterRoom_hide@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_enterRoom_hide.imageset/yumi_scope_enterRoom_hide@3x.png b/YuMi/Assets.xcassets/yna/yumi_scope_enterRoom_hide.imageset/yumi_scope_enterRoom_hide@3x.png deleted file mode 100644 index 2f60b33e..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_enterRoom_hide.imageset/yumi_scope_enterRoom_hide@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_gen_back.imageset/Contents.json b/YuMi/Assets.xcassets/yna/yumi_scope_gen_back.imageset/Contents.json deleted file mode 100644 index 054ecf65..00000000 --- a/YuMi/Assets.xcassets/yna/yumi_scope_gen_back.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_gen_back@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_gen_back@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_gen_back.imageset/yumi_scope_gen_back@2x.png b/YuMi/Assets.xcassets/yna/yumi_scope_gen_back.imageset/yumi_scope_gen_back@2x.png deleted file mode 100644 index 129f8bcd..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_gen_back.imageset/yumi_scope_gen_back@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_gen_back.imageset/yumi_scope_gen_back@3x.png b/YuMi/Assets.xcassets/yna/yumi_scope_gen_back.imageset/yumi_scope_gen_back@3x.png deleted file mode 100644 index 45a632ed..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_gen_back.imageset/yumi_scope_gen_back@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_gen_exit.imageset/Contents.json b/YuMi/Assets.xcassets/yna/yumi_scope_gen_exit.imageset/Contents.json deleted file mode 100644 index f8aa8447..00000000 --- a/YuMi/Assets.xcassets/yna/yumi_scope_gen_exit.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_gen_exit@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_gen_exit@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_gen_exit.imageset/yumi_scope_gen_exit@2x.png b/YuMi/Assets.xcassets/yna/yumi_scope_gen_exit.imageset/yumi_scope_gen_exit@2x.png deleted file mode 100644 index b463366b..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_gen_exit.imageset/yumi_scope_gen_exit@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_gen_exit.imageset/yumi_scope_gen_exit@3x.png b/YuMi/Assets.xcassets/yna/yumi_scope_gen_exit.imageset/yumi_scope_gen_exit@3x.png deleted file mode 100644 index 5ed24314..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_gen_exit.imageset/yumi_scope_gen_exit@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_gen_lock_room.imageset/Contents.json b/YuMi/Assets.xcassets/yna/yumi_scope_gen_lock_room.imageset/Contents.json deleted file mode 100644 index badd9048..00000000 --- a/YuMi/Assets.xcassets/yna/yumi_scope_gen_lock_room.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_gen_lock_room@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_gen_lock_room@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_gen_lock_room.imageset/yumi_scope_gen_lock_room@2x.png b/YuMi/Assets.xcassets/yna/yumi_scope_gen_lock_room.imageset/yumi_scope_gen_lock_room@2x.png deleted file mode 100644 index 616ab781..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_gen_lock_room.imageset/yumi_scope_gen_lock_room@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_gen_lock_room.imageset/yumi_scope_gen_lock_room@3x.png b/YuMi/Assets.xcassets/yna/yumi_scope_gen_lock_room.imageset/yumi_scope_gen_lock_room@3x.png deleted file mode 100644 index c63fc95d..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_gen_lock_room.imageset/yumi_scope_gen_lock_room@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_gen_mini.imageset/Contents.json b/YuMi/Assets.xcassets/yna/yumi_scope_gen_mini.imageset/Contents.json deleted file mode 100644 index 2aa268c9..00000000 --- a/YuMi/Assets.xcassets/yna/yumi_scope_gen_mini.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_gen_mini@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_gen_mini@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_gen_mini.imageset/yumi_scope_gen_mini@2x.png b/YuMi/Assets.xcassets/yna/yumi_scope_gen_mini.imageset/yumi_scope_gen_mini@2x.png deleted file mode 100644 index 675294e0..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_gen_mini.imageset/yumi_scope_gen_mini@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_gen_mini.imageset/yumi_scope_gen_mini@3x.png b/YuMi/Assets.xcassets/yna/yumi_scope_gen_mini.imageset/yumi_scope_gen_mini@3x.png deleted file mode 100644 index 514b3c4f..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_gen_mini.imageset/yumi_scope_gen_mini@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_gen_present_effect.imageset/Contents.json b/YuMi/Assets.xcassets/yna/yumi_scope_gen_present_effect.imageset/Contents.json deleted file mode 100644 index 6d1369e9..00000000 --- a/YuMi/Assets.xcassets/yna/yumi_scope_gen_present_effect.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_gen_present_effect@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_gen_present_effect@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_gen_present_effect.imageset/yumi_scope_gen_present_effect@2x.png b/YuMi/Assets.xcassets/yna/yumi_scope_gen_present_effect.imageset/yumi_scope_gen_present_effect@2x.png deleted file mode 100644 index ae0db866..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_gen_present_effect.imageset/yumi_scope_gen_present_effect@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_gen_present_effect.imageset/yumi_scope_gen_present_effect@3x.png b/YuMi/Assets.xcassets/yna/yumi_scope_gen_present_effect.imageset/yumi_scope_gen_present_effect@3x.png deleted file mode 100644 index a7e18e0c..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_gen_present_effect.imageset/yumi_scope_gen_present_effect@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_gen_report.imageset/Contents.json b/YuMi/Assets.xcassets/yna/yumi_scope_gen_report.imageset/Contents.json deleted file mode 100644 index 89328439..00000000 --- a/YuMi/Assets.xcassets/yna/yumi_scope_gen_report.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_gen_report@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_gen_report@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_gen_report.imageset/yumi_scope_gen_report@2x.png b/YuMi/Assets.xcassets/yna/yumi_scope_gen_report.imageset/yumi_scope_gen_report@2x.png deleted file mode 100644 index 6d3bd3ee..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_gen_report.imageset/yumi_scope_gen_report@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_gen_report.imageset/yumi_scope_gen_report@3x.png b/YuMi/Assets.xcassets/yna/yumi_scope_gen_report.imageset/yumi_scope_gen_report@3x.png deleted file mode 100644 index a507057f..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_gen_report.imageset/yumi_scope_gen_report@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_gen_setting.imageset/Contents.json b/YuMi/Assets.xcassets/yna/yumi_scope_gen_setting.imageset/Contents.json deleted file mode 100644 index 14c3fa44..00000000 --- a/YuMi/Assets.xcassets/yna/yumi_scope_gen_setting.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_gen_setting@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_gen_setting@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_gen_setting.imageset/yumi_scope_gen_setting@2x.png b/YuMi/Assets.xcassets/yna/yumi_scope_gen_setting.imageset/yumi_scope_gen_setting@2x.png deleted file mode 100644 index 17ee03de..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_gen_setting.imageset/yumi_scope_gen_setting@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_gen_setting.imageset/yumi_scope_gen_setting@3x.png b/YuMi/Assets.xcassets/yna/yumi_scope_gen_setting.imageset/yumi_scope_gen_setting@3x.png deleted file mode 100644 index 8e79365e..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_gen_setting.imageset/yumi_scope_gen_setting@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_licnese_hour_order_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/yumi_scope_licnese_hour_order_background.imageset/Contents.json deleted file mode 100644 index dad4f956..00000000 --- a/YuMi/Assets.xcassets/yna/yumi_scope_licnese_hour_order_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_licnese_hour_order_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_licnese_hour_order_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_licnese_hour_order_background.imageset/yumi_scope_licnese_hour_order_background@2x.png b/YuMi/Assets.xcassets/yna/yumi_scope_licnese_hour_order_background.imageset/yumi_scope_licnese_hour_order_background@2x.png deleted file mode 100644 index 24e20269..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_licnese_hour_order_background.imageset/yumi_scope_licnese_hour_order_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_licnese_hour_order_background.imageset/yumi_scope_licnese_hour_order_background@3x.png b/YuMi/Assets.xcassets/yna/yumi_scope_licnese_hour_order_background.imageset/yumi_scope_licnese_hour_order_background@3x.png deleted file mode 100644 index 932bfc7b..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_licnese_hour_order_background.imageset/yumi_scope_licnese_hour_order_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_msg_tips_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/yumi_scope_msg_tips_background.imageset/Contents.json deleted file mode 100644 index fc634020..00000000 --- a/YuMi/Assets.xcassets/yna/yumi_scope_msg_tips_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_msg_tips_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_msg_tips_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_msg_tips_background.imageset/yumi_scope_msg_tips_background@2x.png b/YuMi/Assets.xcassets/yna/yumi_scope_msg_tips_background.imageset/yumi_scope_msg_tips_background@2x.png deleted file mode 100644 index edf88242..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_msg_tips_background.imageset/yumi_scope_msg_tips_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_msg_tips_background.imageset/yumi_scope_msg_tips_background@3x.png b/YuMi/Assets.xcassets/yna/yumi_scope_msg_tips_background.imageset/yumi_scope_msg_tips_background@3x.png deleted file mode 100644 index f43f5ff5..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_msg_tips_background.imageset/yumi_scope_msg_tips_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_present_all_mic.imageset/Contents.json b/YuMi/Assets.xcassets/yna/yumi_scope_present_all_mic.imageset/Contents.json deleted file mode 100644 index 11d9cca9..00000000 --- a/YuMi/Assets.xcassets/yna/yumi_scope_present_all_mic.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_present_all_mic@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_present_all_mic@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_present_all_mic.imageset/yumi_scope_present_all_mic@2x.png b/YuMi/Assets.xcassets/yna/yumi_scope_present_all_mic.imageset/yumi_scope_present_all_mic@2x.png deleted file mode 100644 index 3ad43e37..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_present_all_mic.imageset/yumi_scope_present_all_mic@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_present_all_mic.imageset/yumi_scope_present_all_mic@3x.png b/YuMi/Assets.xcassets/yna/yumi_scope_present_all_mic.imageset/yumi_scope_present_all_mic@3x.png deleted file mode 100644 index d5378abd..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_present_all_mic.imageset/yumi_scope_present_all_mic@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_high_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_high_background.imageset/Contents.json deleted file mode 100644 index c59f36d3..00000000 --- a/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_high_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_present_banner_high_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_present_banner_high_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_high_background.imageset/yumi_scope_present_banner_high_background@2x.png b/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_high_background.imageset/yumi_scope_present_banner_high_background@2x.png deleted file mode 100644 index b8ebcbea..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_high_background.imageset/yumi_scope_present_banner_high_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_high_background.imageset/yumi_scope_present_banner_high_background@3x.png b/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_high_background.imageset/yumi_scope_present_banner_high_background@3x.png deleted file mode 100644 index bf1a7df1..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_high_background.imageset/yumi_scope_present_banner_high_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_light.imageset/Contents.json b/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_light.imageset/Contents.json deleted file mode 100644 index 7aa2b34a..00000000 --- a/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_light.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_present_banner_light@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_present_banner_light@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_light.imageset/yumi_scope_present_banner_light@2x.png b/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_light.imageset/yumi_scope_present_banner_light@2x.png deleted file mode 100644 index 91b2e314..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_light.imageset/yumi_scope_present_banner_light@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_light.imageset/yumi_scope_present_banner_light@3x.png b/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_light.imageset/yumi_scope_present_banner_light@3x.png deleted file mode 100644 index 2c2c05fb..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_light.imageset/yumi_scope_present_banner_light@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_low_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_low_background.imageset/Contents.json deleted file mode 100644 index c9ba4400..00000000 --- a/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_low_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_present_banner_low_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_present_banner_low_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_low_background.imageset/yumi_scope_present_banner_low_background@2x.png b/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_low_background.imageset/yumi_scope_present_banner_low_background@2x.png deleted file mode 100644 index 2f978871..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_low_background.imageset/yumi_scope_present_banner_low_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_low_background.imageset/yumi_scope_present_banner_low_background@3x.png b/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_low_background.imageset/yumi_scope_present_banner_low_background@3x.png deleted file mode 100644 index c6b12a2e..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_low_background.imageset/yumi_scope_present_banner_low_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_middle_background.imageset/Contents.json b/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_middle_background.imageset/Contents.json deleted file mode 100644 index dabecb27..00000000 --- a/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_middle_background.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_present_banner_middle_background@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_present_banner_middle_background@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_middle_background.imageset/yumi_scope_present_banner_middle_background@2x.png b/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_middle_background.imageset/yumi_scope_present_banner_middle_background@2x.png deleted file mode 100644 index 3a98fbec..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_middle_background.imageset/yumi_scope_present_banner_middle_background@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_middle_background.imageset/yumi_scope_present_banner_middle_background@3x.png b/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_middle_background.imageset/yumi_scope_present_banner_middle_background@3x.png deleted file mode 100644 index bcd44c22..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_present_banner_middle_background.imageset/yumi_scope_present_banner_middle_background@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_present_grand_entrance.imageset/Contents.json b/YuMi/Assets.xcassets/yna/yumi_scope_present_grand_entrance.imageset/Contents.json deleted file mode 100644 index 7c534a7e..00000000 --- a/YuMi/Assets.xcassets/yna/yumi_scope_present_grand_entrance.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_present_grand_entrance@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_present_grand_entrance@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_present_grand_entrance.imageset/yumi_scope_present_grand_entrance@2x.png b/YuMi/Assets.xcassets/yna/yumi_scope_present_grand_entrance.imageset/yumi_scope_present_grand_entrance@2x.png deleted file mode 100644 index 839de445..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_present_grand_entrance.imageset/yumi_scope_present_grand_entrance@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_present_grand_entrance.imageset/yumi_scope_present_grand_entrance@3x.png b/YuMi/Assets.xcassets/yna/yumi_scope_present_grand_entrance.imageset/yumi_scope_present_grand_entrance@3x.png deleted file mode 100644 index 72c4a688..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_present_grand_entrance.imageset/yumi_scope_present_grand_entrance@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_present_grand_lock.imageset/Contents.json b/YuMi/Assets.xcassets/yna/yumi_scope_present_grand_lock.imageset/Contents.json deleted file mode 100644 index 09085412..00000000 --- a/YuMi/Assets.xcassets/yna/yumi_scope_present_grand_lock.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_present_grand_lock@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_present_grand_lock@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_present_grand_lock.imageset/yumi_scope_present_grand_lock@2x.png b/YuMi/Assets.xcassets/yna/yumi_scope_present_grand_lock.imageset/yumi_scope_present_grand_lock@2x.png deleted file mode 100644 index 1d91aebf..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_present_grand_lock.imageset/yumi_scope_present_grand_lock@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_present_grand_lock.imageset/yumi_scope_present_grand_lock@3x.png b/YuMi/Assets.xcassets/yna/yumi_scope_present_grand_lock.imageset/yumi_scope_present_grand_lock@3x.png deleted file mode 100644 index 51774f53..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_present_grand_lock.imageset/yumi_scope_present_grand_lock@3x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_secretMan.imageset/Contents.json b/YuMi/Assets.xcassets/yna/yumi_scope_secretMan.imageset/Contents.json deleted file mode 100644 index 58f660b0..00000000 --- a/YuMi/Assets.xcassets/yna/yumi_scope_secretMan.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_secretMan@2x.png", "idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_secretMan.imageset/yumi_scope_secretMan@2x.png b/YuMi/Assets.xcassets/yna/yumi_scope_secretMan.imageset/yumi_scope_secretMan@2x.png deleted file mode 100644 index ec711b53..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_secretMan.imageset/yumi_scope_secretMan@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_star_kitchen.imageset/Contents.json b/YuMi/Assets.xcassets/yna/yumi_scope_star_kitchen.imageset/Contents.json deleted file mode 100644 index b0b909bf..00000000 --- a/YuMi/Assets.xcassets/yna/yumi_scope_star_kitchen.imageset/Contents.json +++ /dev/null @@ -1,7 +0,0 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "yumi_scope_star_kitchen@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "yumi_scope_star_kitchen@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_star_kitchen.imageset/yumi_scope_star_kitchen@2x.png b/YuMi/Assets.xcassets/yna/yumi_scope_star_kitchen.imageset/yumi_scope_star_kitchen@2x.png deleted file mode 100644 index 37657243..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_star_kitchen.imageset/yumi_scope_star_kitchen@2x.png and /dev/null differ diff --git a/YuMi/Assets.xcassets/yna/yumi_scope_star_kitchen.imageset/yumi_scope_star_kitchen@3x.png b/YuMi/Assets.xcassets/yna/yumi_scope_star_kitchen.imageset/yumi_scope_star_kitchen@3x.png deleted file mode 100644 index db086f23..00000000 Binary files a/YuMi/Assets.xcassets/yna/yumi_scope_star_kitchen.imageset/yumi_scope_star_kitchen@3x.png and /dev/null differ diff --git a/YuMi/Config/ClientAtomicMatrix.h b/YuMi/Config/ClientAtomicMatrix.h deleted file mode 100644 index 904604ec..00000000 --- a/YuMi/Config/ClientAtomicMatrix.h +++ /dev/null @@ -1,45 +0,0 @@ -// -// ClientAtomicMatrix.h -// YUMI -// -// Created by YUMI on 2022/3/7. -// - -#import -#import "ClientDeficitSheatheMatrix.h" -#import "AdvertiseMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, FaceLivenessStrategy) { - FaceLivenessStrategy_Pass = 0, - FaceLivenessStrategy_Force = 1, - FaceLivenessStrategy_Guide = 2, -}; - -@interface ClientAtomicMatrix : NSObject -@property (nonatomic,strong) NSArray *homeTabList; -@property (nonatomic,copy) NSDictionary *faceInitData; -@property (nonatomic,assign) BOOL appStoreAuditNoticeVersion; -@property(nonatomic, assign) NSInteger roomMessageCount; -@property (nonatomic,assign) NSInteger findNewbieCharmLevel; -@property (nonatomic,assign) double hideCarEffectGiftPrice; -@property (nonatomic, assign) NSInteger linearlyPoolOpenLevel; -@property (nonatomic, strong) ClientDeficitSheatheMatrix *redEnvelopeConfig; -@property (nonatomic,strong) AdvertiseMatrix *splashVo; -@property (nonatomic, strong) NSArray *officialMsgUids; -@property (nonatomic,strong) NSArray *officialAccountUids; -@property (nonatomic,assign) BOOL twelveStarSwitch; -@property (nonatomic,assign) FaceLivenessStrategy certificationType; - -@property (nonatomic,strong) NSMutableArray *giveDiamondErbanNoList; -@property (nonatomic,strong) NSMutableArray *giveGiftErbanNoList; -@property (nonatomic,assign) NSInteger giveDiamondDailyNum; -@property (nonatomic,assign) NSInteger giveDiamondOnceLimitNum; -@property (nonatomic,assign) NSInteger giveDiamondExperLevel; -@property (nonatomic,assign) NSInteger giveGiftExperLevel; - -@property (nonatomic,assign) double giveDiamondRate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Config/ClientAtomicMatrix.m b/YuMi/Config/ClientAtomicMatrix.m deleted file mode 100644 index a2d4a69f..00000000 --- a/YuMi/Config/ClientAtomicMatrix.m +++ /dev/null @@ -1,19 +0,0 @@ -// -// ClientAtomicMatrix.m -// YUMI -// -// Created by YUMI on 2022/3/7. -// - -#import "ClientAtomicMatrix.h" -#import "YUMIAdIndicateTool.h" -@implementation ClientAtomicMatrix - -- (void)setSplashVo:(AdvertiseMatrix *)splashVo { - _splashVo = splashVo; - if (_splashVo) { - [YUMIAdIndicateTool.partowardsiciptowardsionIndictowardseUtensil preserveDirectoryAbstract:splashVo]; - } -} - -@end diff --git a/YuMi/Config/ClientConfig.h b/YuMi/Config/ClientConfig.h new file mode 100644 index 00000000..b8036c4a --- /dev/null +++ b/YuMi/Config/ClientConfig.h @@ -0,0 +1,37 @@ +// +// ClientConfig.h +// YUMI +// +// Created by YUMI on 2021/12/11. +// + +#import +#import "ClientDataModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface ClientConfig : NSObject ++ (instancetype)shareConfig; +///初始化 +- (void)clientInit; +//TODO: 直接使用model吧 下个版本改 +/// iOS第三方登录是否需要绑定手机号 +@property (nonatomic,assign) BOOL iosPhoneBind;; +/// 是否开启了糖果树 +@property (nonatomic,assign) BOOL openCandyTree; +///配置信息 +@property (nonatomic,strong) ClientDataModel *configInfo; +///开箱子 大于等级 展示 +@property (nonatomic, assign) NSInteger openCandyTreeLimitLevel; +@property (nonatomic,assign) BOOL canOpen; +///表情--- +@property (nonatomic, copy) NSString *version; +@property (nonatomic, copy) NSString *zipMd5; +@property (nonatomic, strong) NSURL *zipUrl; + +///添加心跳定时器 +- (void)addHeartBratTimer; +///重置心跳定时器 +- (void)resetHeartBratTimer; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Config/ClientConfig.m b/YuMi/Config/ClientConfig.m new file mode 100644 index 00000000..c23952dd --- /dev/null +++ b/YuMi/Config/ClientConfig.m @@ -0,0 +1,101 @@ +// +// ClientConfig.m +// YUMI +// +// Created by YUMI on 2021/12/11. +// + +#import "ClientConfig.h" +#import "Api+Main.h" +/// tool +#import "DESEncrypt.h" +#import "YUMIConstant.h" +#import +#import "XPRoomFaceTool.h" +#import "NSString+Utils.h" +#import "YYUtility.h" +#import "XPWeakTimer.h" +#import "Api+Main.h" + +@interface ClientConfig () +{ + NSTimer * timer; +} +///重试的次数 10次 如果你还是失败的话 那就算了 没办法了 +@property (nonatomic,assign) int retryCount; +@end + +@implementation ClientConfig + ++ (instancetype)shareConfig { + static dispatch_once_t onceToken; + static ClientConfig * config; + dispatch_once(&onceToken, ^{ + config = [[ClientConfig alloc] init]; + }); + return config; +} + +- (void)clientInit { + self.canOpen = NO; + [Api clientInitConfig:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + self.retryCount = 0; + NSDictionary * initData = data.data; + self.canOpen = ![initData[@"aModel"] boolValue]; + self.iosPhoneBind = [initData[@"iosPhoneBind"] boolValue]; + //糖果树配置 + self.openCandyTree = [initData[@"openBoxSwitch"] boolValue]; + self.openCandyTreeLimitLevel = [initData[@"openBoxSwitchLevelNo"] intValue]; + ClientDataModel * model = [ClientDataModel modelWithDictionary:data.data]; + self.configInfo = model; + //表情包 + NSString *json = initData[@"faceJson"][@"json"]; + NSString *deJson = [DESEncrypt decryptUseDES:json key:KeyWithType(KeyType_FacePwdEncode)]; + NSDictionary *faceInitData = [deJson toJSONObject]; + model.faceInitData = faceInitData; + if (faceInitData) { + [XPRoomFaceTool shareFaceTool].version = [NSString stringWithFormat:@"%@",faceInitData[@"version"]]; + [XPRoomFaceTool shareFaceTool].zipMd5 = [[NSString stringWithFormat:@"%@",faceInitData[@"zipMd5"]] uppercaseString]; + [XPRoomFaceTool shareFaceTool].zipUrl = [NSString stringWithFormat:@"%@",faceInitData[@"zipUrl"]]; + ///表情的数据保存本地 + [[XPRoomFaceTool shareFaceTool] saveFaceInfoList:faceInitData]; + ///开始下载 + [[XPRoomFaceTool shareFaceTool] downFaceData]; + } + + //是否展示公屏 + NSString *serverVer = initData[@"appStoreAuditNoticeVersion"]; + NSString *shortVer = [YYUtility appVersion]; + BOOL isHigh = [NSString versionCompareOldStr:serverVer andNewStr:shortVer]; + model.appStoreAuditNoticeVersion = isHigh; + self.configInfo = model; + [[NSNotificationCenter defaultCenter] postNotificationName:@"reloadnewtab" object:nil]; + } else { + if (self.retryCount < 10) { + [self clientInit]; + self.retryCount+=1; + } + } + }]; +} + +- (void)addHeartBratTimer { + if (timer) { + return; + } + timer = [XPWeakTimer scheduledTimerWithTimeInterval:30 block:^(id userInfo) { + [Api requestClientHeartBrat:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + + }]; + } userInfo:nil repeats:YES]; +} + +- (void)resetHeartBratTimer { + if (timer) { + timer = nil; + } +} + + +@end diff --git a/YuMi/Config/ClientDataModel.h b/YuMi/Config/ClientDataModel.h new file mode 100644 index 00000000..cadd8631 --- /dev/null +++ b/YuMi/Config/ClientDataModel.h @@ -0,0 +1,65 @@ +// +// ClientDataModel.h +// YUMI +// +// Created by YUMI on 2022/3/7. +// + +#import +#import "ClientRedPacketModel.h" +#import "AdvertiseModel.h" +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, FaceLivenessStrategy) { + FaceLivenessStrategy_Pass = 0, + FaceLivenessStrategy_Force = 1, + FaceLivenessStrategy_Guide = 2, +}; + +@interface ClientDataModel : NSObject +///首页tag 配置 +@property (nonatomic,strong) NSArray *homeTabList; +///房间表情的数据 +@property (nonatomic,copy) NSDictionary *faceInitData; +///是否隐藏房间公告 +@property (nonatomic,assign) BOOL appStoreAuditNoticeVersion; +//进入房间拉取N条聊天数据 +@property(nonatomic, assign) NSInteger roomMessageCount; +///发现萌新展示等级 +@property (nonatomic,assign) NSInteger findNewbieCharmLevel; +///送礼物隐藏座驾动画的值 +@property (nonatomic,assign) double hideCarEffectGiftPrice; +//航海等级限制 +@property (nonatomic, assign) NSInteger linearlyPoolOpenLevel; +///红包配置 +@property (nonatomic, strong) ClientRedPacketModel *redEnvelopeConfig; +///启动图 +@property (nonatomic,strong) AdvertiseModel *splashVo; +///官方消息Uid列表 +@property (nonatomic, strong) NSArray *officialMsgUids; +///官方账号 小秘书 红包消息 +@property (nonatomic,strong) NSArray *officialAccountUids; +///星座礼物顶部是否开启 +@property (nonatomic,assign) BOOL twelveStarSwitch; +/// 开房是否需要实名 +@property (nonatomic,assign) FaceLivenessStrategy certificationType; + +///转赠钻石白名单 +@property (nonatomic,strong) NSMutableArray *giveDiamondErbanNoList; +///转赠礼物白名单 +@property (nonatomic,strong) NSMutableArray *giveGiftErbanNoList; +///每日转赠钻石总额限制 +@property (nonatomic,assign) NSInteger giveDiamondDailyNum; +///转赠钻石单笔最大限额 +@property (nonatomic,assign) NSInteger giveDiamondOnceLimitNum; +///转赠钻石财富等级 +@property (nonatomic,assign) NSInteger giveDiamondExperLevel; +///转赠礼物财富等级 +@property (nonatomic,assign) NSInteger giveGiftExperLevel; + +///转赠手续费率 +@property (nonatomic,assign) double giveDiamondRate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Config/ClientDataModel.m b/YuMi/Config/ClientDataModel.m new file mode 100644 index 00000000..906813b7 --- /dev/null +++ b/YuMi/Config/ClientDataModel.m @@ -0,0 +1,19 @@ +// +// ClientDataModel.m +// YUMI +// +// Created by YUMI on 2022/3/7. +// + +#import "ClientDataModel.h" +#import "XPAdImageTool.h" +@implementation ClientDataModel + +- (void)setSplashVo:(AdvertiseModel *)splashVo { + _splashVo = splashVo; + if (_splashVo) { + [XPAdImageTool.shareImageTool saveAdInfo:splashVo]; + } +} + +@end diff --git a/YuMi/Config/ClientDeficitSheatheMatrix.h b/YuMi/Config/ClientDeficitSheatheMatrix.h deleted file mode 100644 index 6c5ffbc6..00000000 --- a/YuMi/Config/ClientDeficitSheatheMatrix.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// ClientDeficitSheatheMatrix.h -// YUMI -// -// Created by YUMI on 2022/8/31. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - - -@interface ClientDeficitSheatheMatrix : NSObject - -@property (nonatomic, assign) BOOL open; -@property (nonatomic, assign) long long pushUserId; -@property (nonatomic, strong) NSNumber *roomRedEnvelopeMaxNum; -@property (nonatomic, strong) NSNumber *roomRedEnvelopeMinAmount; -@property (nonatomic, strong) NSNumber *roomRedEnvelopeMinNum; -@property (nonatomic, strong) NSNumber *serverRedEnvelopeMaxNum; -@property (nonatomic, strong) NSNumber *serverRedEnvelopeMinAmount; -@property (nonatomic, strong) NSNumber *serverRedEnvelopeMinNum; -@property (nonatomic, strong) NSNumber *roomRedEnvelopeMaxAmount; -@property (nonatomic, strong) NSNumber *serverRedEnvelopeMaxAmount; -@property (nonatomic, strong) NSNumber *redEnvelopedPosition; -@property (nonatomic, strong) NSNumber *redEnvelopeType; -@property (nonatomic, strong) NSNumber *exchangeDiamondsRate; -@property (nonatomic, copy) NSString *serverAppVersion; - -@property (nonatomic, strong) NSArray *openRooms; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Config/ClientDeficitSheatheMatrix.m b/YuMi/Config/ClientDeficitSheatheMatrix.m deleted file mode 100644 index 24691f1c..00000000 --- a/YuMi/Config/ClientDeficitSheatheMatrix.m +++ /dev/null @@ -1,13 +0,0 @@ -// -// ClientDeficitSheatheMatrix.m -// YUMI -// -// Created by YUMI on 2022/8/31. -// - -#import "ClientDeficitSheatheMatrix.h" - -@implementation ClientDeficitSheatheMatrix - - -@end diff --git a/YuMi/Config/ClientDisposition.h b/YuMi/Config/ClientDisposition.h deleted file mode 100644 index 95159b4f..00000000 --- a/YuMi/Config/ClientDisposition.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// ClientDisposition.h -// YUMI -// -// Created by YUMI on 2021/12/11. -// - -#import -#import "ClientAtomicMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@interface ClientDisposition : NSObject -+ (instancetype)partowardsiciptowardsionDisposition; -- (void)clientInit; -@property (nonatomic,assign) BOOL iosMobileBind;; -@property (nonatomic,assign) BOOL unfoildConfectioneryTimber; -@property (nonatomic,strong) ClientAtomicMatrix *dispositionAbstract; -@property (nonatomic, assign) NSInteger unfoildConfectioneryTimberRestrictionPrototype; -@property (nonatomic,assign) BOOL canUnfoild; -@property (nonatomic, copy) NSString *version; -@property (nonatomic, copy) NSString *zipMd5; -@property (nonatomic, strong) NSURL *zipUrl; - -- (void)accelertowardseCourageBrtowardsIntrtowardsemper; -- (void)replacementCourageBrtowardsIntrtowardsemper; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Config/ClientDisposition.m b/YuMi/Config/ClientDisposition.m deleted file mode 100644 index d8a14bd1..00000000 --- a/YuMi/Config/ClientDisposition.m +++ /dev/null @@ -1,99 +0,0 @@ -// -// ClientDisposition.m -// YUMI -// -// Created by YUMI on 2021/12/11. -// - -#import "ClientDisposition.h" -#import "Api+Main.h" -#import "DESEncrypt.h" -#import "YUMIConstant.h" -#import -#import "YUMIChamberAcceptTool.h" -#import "NSString+Utils.h" -#import "YYUtility.h" -#import "YUMIWeakIntratemporalr.h" -#import "Api+Main.h" - -@interface ClientDisposition () -{ - NSTimer * timer; -} -@property (nonatomic,assign) int retryCount; -@end - -@implementation ClientDisposition - -+ (instancetype)partowardsiciptowardsionDisposition { - static dispatch_once_t onceToken; - static ClientDisposition * config; - dispatch_once(&onceToken, ^{ - config = [[ClientDisposition alloc] init]; - }); - return config; -} - -- (void)clientInit { - self.canUnfoild = NO; - [Api clientInitDisposition:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - self.retryCount = 0; - NSDictionary * initData = data.data; - self.canUnfoild = ![initData[@"aModel"] boolValue]; - self.iosMobileBind = [initData[@"iosPhoneBind"] boolValue]; - - self.unfoildConfectioneryTimber = [initData[@"openBoxSwitch"] boolValue]; - self.unfoildConfectioneryTimberRestrictionPrototype = [initData[@"openBoxSwitchLevelNo"] intValue]; - ClientAtomicMatrix * model = [ClientAtomicMatrix mtowardsrixAboutImpactbasket:data.data]; - self.dispositionAbstract = model; - - NSString *json = initData[@"faceJson"][@"json"]; - NSString *deJson = [DESEncrypt decryptUseDES:json key:KeyWithType(KeyGenre_FacePwdEncode)]; - NSDictionary *faceInitData = [deJson toJSONGroal]; - model.faceInitData = faceInitData; - if (faceInitData) { - [YUMIChamberAcceptTool partowardsiciptowardsionAcceptUtensil].version = [NSString stringWithFormat:@"%@",faceInitData[@"version"]]; - [YUMIChamberAcceptTool partowardsiciptowardsionAcceptUtensil].zipMd5 = [[NSString stringWithFormat:@"%@",faceInitData[@"zipMd5"]] uppercaseString]; - [YUMIChamberAcceptTool partowardsiciptowardsionAcceptUtensil].zipUrl = [NSString stringWithFormat:@"%@",faceInitData[@"zipUrl"]]; - - [[YUMIChamberAcceptTool partowardsiciptowardsionAcceptUtensil] preserveAcceptAbstractSttowardsement:faceInitData]; - - [[YUMIChamberAcceptTool partowardsiciptowardsionAcceptUtensil] downAcceptTowardsoloudspeaker]; - } - - - NSString *serverVer = initData[@"appStoreAuditNoticeVersion"]; - NSString *shortVer = [YYUtility appVersion]; - BOOL isHigh = [NSString versionContraprohibititinguishInthecaseofmerBWStt:serverVer andNewStr:shortVer]; - model.appStoreAuditNoticeVersion = isHigh; - self.dispositionAbstract = model; - [[NSNotificationCenter defaultCenter] postNotificationName:@"reloadnewtab" object:nil]; - } else { - if (self.retryCount < 10) { - [self clientInit]; - self.retryCount+=1; - } - } - }]; -} - -- (void)accelertowardseCourageBrtowardsIntrtowardsemper { - if (timer) { - return; - } - timer = [YUMIWeakIntratemporalr scheduledTimerWithTimeInterval:30 block:^(id userInfo) { - [Api requisitionClientCourageBrtowards:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - - }]; - } userInfo:nil repeats:YES]; -} - -- (void)replacementCourageBrtowardsIntrtowardsemper { - if (timer) { - timer = nil; - } -} - - -@end diff --git a/YuMi/Config/ClientRedPacketModel.h b/YuMi/Config/ClientRedPacketModel.h new file mode 100644 index 00000000..f14c3a10 --- /dev/null +++ b/YuMi/Config/ClientRedPacketModel.h @@ -0,0 +1,50 @@ +// +// ClientRedPacketModel.h +// YUMI +// +// Created by YUMI on 2022/8/31. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +//@class + +@interface ClientRedPacketModel : NSObject + +///红包开关 +@property (nonatomic, assign) BOOL open; +///红包推送id +@property (nonatomic, assign) long long pushUserId; +///厅内红包个数最大值 +@property (nonatomic, strong) NSNumber *roomRedEnvelopeMaxNum; +///厅内红包数额最小值 +@property (nonatomic, strong) NSNumber *roomRedEnvelopeMinAmount; +///厅内红包个数最小值 +@property (nonatomic, strong) NSNumber *roomRedEnvelopeMinNum; +///全服红包个数最大值 +@property (nonatomic, strong) NSNumber *serverRedEnvelopeMaxNum; +///全服红包数额最小值 +@property (nonatomic, strong) NSNumber *serverRedEnvelopeMinAmount; +///全服红包个数最小值 +@property (nonatomic, strong) NSNumber *serverRedEnvelopeMinNum; +///厅内红包数额最大值 +@property (nonatomic, strong) NSNumber *roomRedEnvelopeMaxAmount; +///全服红包数额最大值 +@property (nonatomic, strong) NSNumber *serverRedEnvelopeMaxAmount; +///默认红包位置,1厅内 2全服 +@property (nonatomic, strong) NSNumber *redEnvelopedPosition; +///默认红包类型,1 钻石 2礼物 +@property (nonatomic, strong) NSNumber *redEnvelopeType; +///钻石红包比例 +@property (nonatomic, strong) NSNumber *exchangeDiamondsRate; +///版本 +@property (nonatomic, copy) NSString *serverAppVersion; + +//@property (nonatomic, strong) NSArray<> *gold2GiftIds; +@property (nonatomic, strong) NSArray *openRooms; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Config/ClientRedPacketModel.m b/YuMi/Config/ClientRedPacketModel.m new file mode 100644 index 00000000..1a1c13c6 --- /dev/null +++ b/YuMi/Config/ClientRedPacketModel.m @@ -0,0 +1,16 @@ +// +// ClientRedPacketModel.m +// YUMI +// +// Created by YUMI on 2022/8/31. +// + +#import "ClientRedPacketModel.h" + +@implementation ClientRedPacketModel + +//+ (NSDictionary *)objectClassInArray { +// return @{@"contents":GuildMessageLayoutInfoModel.class}; +//} + +@end diff --git a/YuMi/CustomUI/Adbvertise/AdvertiseMatrix.h b/YuMi/CustomUI/Adbvertise/AdvertiseMatrix.h deleted file mode 100644 index 923424ca..00000000 --- a/YuMi/CustomUI/Adbvertise/AdvertiseMatrix.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// AdvertiseMatrix.h -// YUMI -// -// Created by YUMI on 2022/10/31. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, SplashAbstractSkipGenre) { - SplashAbstractSkipGenrePage = 1, - SplashAbstractSkipGenreRoom = 2, - SplashAbstractSkipGenreWeb = 3, -}; - -@interface AdvertiseMatrix : NSObject -@property (nonatomic, strong) NSString *link; -@property (nonatomic, assign) SplashAbstractSkipGenre type; -@property (nonatomic, copy) NSString *pict; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/Adbvertise/AdvertiseMatrix.m b/YuMi/CustomUI/Adbvertise/AdvertiseMatrix.m deleted file mode 100644 index ac963d28..00000000 --- a/YuMi/CustomUI/Adbvertise/AdvertiseMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// AdvertiseMatrix.m -// YUMI -// -// Created by YUMI on 2022/10/31. -// - -#import "AdvertiseMatrix.h" - -@implementation AdvertiseMatrix - -@end diff --git a/YuMi/CustomUI/Adbvertise/AdvertiseModel.h b/YuMi/CustomUI/Adbvertise/AdvertiseModel.h new file mode 100644 index 00000000..0c4c61a5 --- /dev/null +++ b/YuMi/CustomUI/Adbvertise/AdvertiseModel.h @@ -0,0 +1,24 @@ +// +// AdvertiseModel.h +// YUMI +// +// Created by YUMI on 2022/10/31. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, SplashInfoSkipType) { + SplashInfoSkipTypePage = 1, + SplashInfoSkipTypeRoom = 2, + SplashInfoSkipTypeWeb = 3, +}; + +@interface AdvertiseModel : NSObject +@property (nonatomic, strong) NSString *link; +@property (nonatomic, assign) SplashInfoSkipType type;// 1跳app页面,2跳聊天室,3跳h5页面 +@property (nonatomic, copy) NSString *pict; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/Adbvertise/AdvertiseModel.m b/YuMi/CustomUI/Adbvertise/AdvertiseModel.m new file mode 100644 index 00000000..09d8506a --- /dev/null +++ b/YuMi/CustomUI/Adbvertise/AdvertiseModel.m @@ -0,0 +1,12 @@ +// +// AdvertiseModel.m +// YUMI +// +// Created by YUMI on 2022/10/31. +// + +#import "AdvertiseModel.h" + +@implementation AdvertiseModel + +@end diff --git a/YuMi/CustomUI/Adbvertise/XPAdImageTool.h b/YuMi/CustomUI/Adbvertise/XPAdImageTool.h new file mode 100644 index 00000000..71e55a2c --- /dev/null +++ b/YuMi/CustomUI/Adbvertise/XPAdImageTool.h @@ -0,0 +1,48 @@ +// +// YMAdImageTool.h +// YUMI +// +// Created by YUMI on 2022/10/31. +// + +#import +#import "AdvertiseModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPAdImageTool : NSObject ++ (instancetype)shareImageTool; + +///是否登录成功im +@property (nonatomic,assign)BOOL isImLogin; + +//去除广告信息 +- (AdvertiseModel *)getAdInfoFromCacheInMainWith:(NSString *)link; +///保存信息 +- (void)saveAdInfo:(AdvertiseModel *)adInfo; +/** + * 判断文件是否存在 + */ +- (BOOL)isFileExistWithFilePath:(NSString *)filePath; + +/** + * 初始化广告页面 + */ +- (void)getAdvertisingImage; + +/** + * 下载新图片 + */ +- (void)downloadAdImageWithUrl:(NSString *)imageUrl imageName:(NSString *)imageName; + +/** + * 删除旧图片 + */ +- (void)deleteOldImage; + +/** + * 根据图片名拼接文件路径 + */ +- (NSString *)getFilePathWithImageName:(NSString *)imageName; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/Adbvertise/XPAdImageTool.m b/YuMi/CustomUI/Adbvertise/XPAdImageTool.m new file mode 100644 index 00000000..52bebc9e --- /dev/null +++ b/YuMi/CustomUI/Adbvertise/XPAdImageTool.m @@ -0,0 +1,145 @@ +// +// YMAdImageTool.m +// YUMI +// +// Created by YUMI on 2022/10/31. +// + +#import "XPAdImageTool.h" +#import + +#define CACHENAME @"XPUserCache" + +UIKIT_EXTERN NSString * const adImageName; +@interface XPAdImageTool () +@property (nonatomic, strong) YYCache *yyCache; +///广告信息 +@property (nonatomic,strong) AdvertiseModel *infoModel; +@end + +static XPAdImageTool* tool; +@implementation XPAdImageTool + ++ (instancetype)shareImageTool { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + tool = [[XPAdImageTool alloc] init]; + }); + return tool; +} + +- (instancetype)init +{ + self = [super init]; + if (self) { + self.yyCache = [YYCache cacheWithName:CACHENAME]; + } + return self; +} + +//去除广告信息 +- (AdvertiseModel *)getAdInfoFromCacheInMainWith:(NSString *)link { + if (link.length > 0) { + if ([self.yyCache containsObjectForKey:link]) { + return [self.yyCache objectForKey:link]; + }else { + return nil; + } + }else { + return nil; + } + return nil; +} + + +///保存信息 +- (void)saveAdInfo:(AdvertiseModel *)adInfo { + self.infoModel = adInfo; + NSArray *stringArr = [adInfo.pict componentsSeparatedByString:@"/"]; + NSString *key = stringArr.lastObject; + [self.yyCache setObject:adInfo forKey:key withBlock:^{ + + }]; + + [self getAdvertisingImage]; +} + +/** + * 判断文件是否存在 + */ +- (BOOL)isFileExistWithFilePath:(NSString *)filePath { + NSFileManager *fileManager = [NSFileManager defaultManager]; + BOOL isDirectory = FALSE; + return [fileManager fileExistsAtPath:filePath isDirectory:&isDirectory]; +} + +/** + * 初始化广告页面 + */ +- (void)getAdvertisingImage { + + if (self.infoModel.pict.length > 0) { + NSString *imageUrl = self.infoModel.pict; + // 获取图片名 + NSArray *stringArr = [imageUrl componentsSeparatedByString:@"/"]; + NSString *imageName = stringArr.lastObject; + + // 拼接沙盒路径 + NSString *filePath = [self getFilePathWithImageName:imageName]; + BOOL isExist = [self isFileExistWithFilePath:filePath]; + if (!isExist){// 如果该图片不存在,则删除老图片,下载新图片 + [self downloadAdImageWithUrl:imageUrl imageName:imageName]; + } + }else { + [self deleteOldImage]; + } +} + +/** + * 下载新图片 + */ +- (void)downloadAdImageWithUrl:(NSString *)imageUrl imageName:(NSString *)imageName { + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + + NSString *encode = [imageUrl stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; + NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:encode]]; + UIImage *image = [UIImage imageWithData:data]; + + NSString *filePath = [self getFilePathWithImageName:imageName]; // 保存文件的名称 + if ([UIImagePNGRepresentation(image) writeToFile:filePath atomically:YES]) {// 保存成功 + [self deleteOldImage]; + [[NSUserDefaults standardUserDefaults] setValue:imageName forKey:adImageName]; + [[NSUserDefaults standardUserDefaults] synchronize]; + }else{ + [self deleteOldImage]; + } + + }); +} + +/** + * 删除旧图片 + */ +- (void)deleteOldImage { + NSString *imageName = [[NSUserDefaults standardUserDefaults] valueForKey:adImageName]; + if (imageName) { + NSString *filePath = [self getFilePathWithImageName:imageName]; + NSFileManager *fileManager = [NSFileManager defaultManager]; + [fileManager removeItemAtPath:filePath error:nil]; + } +} + +/** + * 根据图片名拼接文件路径 + */ +- (NSString *)getFilePathWithImageName:(NSString *)imageName { + if (imageName) { + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES); + NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:imageName]; + + return filePath; + } + + return nil; +} +@end diff --git a/YuMi/CustomUI/Adbvertise/XPAdvertiseView.h b/YuMi/CustomUI/Adbvertise/XPAdvertiseView.h new file mode 100644 index 00000000..2b150fee --- /dev/null +++ b/YuMi/CustomUI/Adbvertise/XPAdvertiseView.h @@ -0,0 +1,25 @@ +// +// YMAdvertiseView.h +// YUMI +// +// Created by YUMI on 2022/10/31. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPAdvertiseView : UIView + +/** 显示广告页面方法*/ +- (void)show; + +/** 图片路径*/ +@property (nonatomic, copy) NSString *filePath; + +@property (nonatomic, strong) UIImage *adImage; + +@property (nonatomic, copy) void(^dismissHandler)(BOOL shouldJump); //闪屏消失回调 +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/Adbvertise/XPAdvertiseView.m b/YuMi/CustomUI/Adbvertise/XPAdvertiseView.m new file mode 100644 index 00000000..4dec837a --- /dev/null +++ b/YuMi/CustomUI/Adbvertise/XPAdvertiseView.m @@ -0,0 +1,205 @@ +// +// YMAdvertiseView.m +// YUMI +// +// Created by YUMI on 2022/10/31. +// + +#import "XPAdvertiseView.h" +#import "AppDelegate.h" +//tool +#import +#import +#import "YUMIMacroUitls.h" +///Tool +#import "UIImage+Utils.h" +NSString *const adImageName = @"adImageName"; +NSString *const adUrl = @"adUrl"; +// 广告显示的时间 +static int const showtime = 3; + +@interface XPAdvertiseView() + +@property (nonatomic, strong) UIImageView *adView;//广告图片 + +@property (nonatomic, strong) UIButton *countdownButton;//倒计时、跳过按钮 + +@property (nonatomic, strong) NSTimer *countTimer; + +@property (nonatomic, assign) int count; + +@property (nonatomic, strong) UIWindow *window; + +@end + + +@implementation XPAdvertiseView + +#pragma mark - Initialize Methods + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + + _adView = [[UIImageView alloc] initWithFrame:frame]; + _adView.userInteractionEnabled = YES; + _adView.contentMode = UIViewContentModeScaleAspectFill; + _adView.clipsToBounds = YES; + [self addSubview:_adView]; + + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTapAdViewAction)]; + [_adView addGestureRecognizer:tap]; + [self addSubview:self.countdownButton]; +// // 因为倒数跳秒问题,导致无法及时响应事件,经测试提案说无法接受此结果。所以就做成和安卓一样,去掉倒计时和跳过 +// if ([self needCountDownBtn]) { +// [self addSubview:self.countdownButton]; +// } + } + return self; +} + +#pragma mark - Public Methods + +- (void)show { + // 倒计时方法1:GCD + [self gcdCoundownHander]; + + UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow; + [self.window.rootViewController.view addSubview:self]; + [self.window makeKeyAndVisible]; + [keyWindow makeKeyWindow]; +} + + +#pragma mark - Event Response + +/// 点击闪屏操作 +- (void)onTapAdViewAction { + [self dismissWithJumpHandle:YES]; +} + +/// 点击跳过按钮 +- (void)onClickSkipButton:(UIButton *)sender { + [self dismissWithJumpHandle:NO]; +} + + +#pragma mark - Privite Method + +// GCD倒计时方法 +- (void)gcdCoundownHander { + __block int timeout = showtime; + dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); + dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); + dispatch_source_set_timer(_timer, DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC, 0); //每秒执行 + + dispatch_source_set_event_handler(_timer, ^{ + + if (timeout <= 0) { //倒计时结束,关闭 + dispatch_source_cancel(_timer); + dispatch_async(dispatch_get_main_queue(), ^{ + [self dismissWithJumpHandle:NO]; + }); + } else { + dispatch_async(dispatch_get_main_queue(), ^{ + if (self.countdownButton) { + [self.countdownButton setTitle:YMLocalizedString(@"XPAdvertiseView0") forState:UIControlStateNormal]; + } + }); + timeout--; + } + }); + dispatch_resume(_timer); +} + +// 移除广告页面 +- (void)dismissWithJumpHandle:(BOOL)shouldJump { + if (self.countTimer) { + [self.countTimer invalidate]; + self.countTimer = nil; + } + + @kWeakify(self) + [UIView animateWithDuration:0.5f animations:^{ + @kStrongify(self) + self.window.hidden = YES; + + } completion:^(BOOL finished) { + @kStrongify(self) + + [self removeFromSuperview]; + self.window = nil; + + !self.dismissHandler ?: self.dismissHandler(shouldJump); + }]; +} + + +- (NSString *)deviceName { + // Gets a string with the device model + size_t size; + int nR = sysctlbyname("hw.machine", NULL, &size, NULL, 0); + char *machine = (char *)malloc(size); + nR = sysctlbyname("hw.machine", machine, &size, NULL, 0); + NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding]; + free(machine); + return platform; +} + +- (BOOL)needCountDownBtn { + + NSString *platform = [self deviceName]; + BOOL needBtn = YES; + if ([platform isEqualToString:@"iPhone6,1"] || + [platform isEqualToString:@"iPhone6,2"] || + [platform isEqualToString:@"iPhone7,1"] || + [platform isEqualToString:@"iPhone7,2"] || + [platform isEqualToString:@"iPhone8,1"] || + [platform isEqualToString:@"iPhone8,2"] || + [platform isEqualToString:@"iPhone8,4"]) { + needBtn = NO; + } + return needBtn; +} + +#pragma mark - Setter +- (void)setFilePath:(NSString *)filePath { + _filePath = filePath; + UIImage *image = [UIImage imageWithContentsOfFile:filePath]; + _adView.image = [image cutImage:[UIScreen mainScreen].bounds.size]; +} + +- (void)setAdImage:(UIImage *)adImage { + _adImage = adImage; + _adView.image = [adImage cutImage:[UIScreen mainScreen].bounds.size]; +} + + +#pragma mark - Getter + +- (UIWindow *)window { + if (_window == nil) { + _window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds]; + _window.windowLevel = UIWindowLevelAlert; + _window.userInteractionEnabled = YES; + _window.rootViewController = [[UIViewController alloc] init]; + } + return _window; +} + +- (UIButton *)countdownButton { + if (_countdownButton == nil) { + CGFloat btnW = 60; + CGFloat btnH = 30; + _countdownButton = [UIButton buttonWithType:UIButtonTypeCustom]; + _countdownButton.frame = CGRectMake(KScreenWidth - btnW - 24, btnH + 10, btnW, btnH); + [_countdownButton addTarget:self action:@selector(onClickSkipButton:) forControlEvents:UIControlEventTouchUpInside]; + [_countdownButton setTitle:YMLocalizedString(@"XPAdvertiseView1") forState:UIControlStateNormal]; + _countdownButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_countdownButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _countdownButton.backgroundColor = [UIColor colorWithRed:38 /255.0 green:38 /255.0 blue:38 /255.0 alpha:0.6]; + _countdownButton.layer.cornerRadius = 4; + } + return _countdownButton; +} + +@end diff --git a/YuMi/CustomUI/Adbvertise/YUMIAdIndicateTool.h b/YuMi/CustomUI/Adbvertise/YUMIAdIndicateTool.h deleted file mode 100644 index 41edbcc7..00000000 --- a/YuMi/CustomUI/Adbvertise/YUMIAdIndicateTool.h +++ /dev/null @@ -1,35 +0,0 @@ -// -// YMAdImageTool.h -// YUMI -// -// Created by YUMI on 2022/10/31. -// - -#import -#import "AdvertiseMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIAdIndicateTool : NSObject -+ (instancetype)partowardsiciptowardsionIndictowardseUtensil; - -@property (nonatomic,assign)BOOL isImSurmount; - -- (AdvertiseMatrix *)acquireDirectoryAbstractByvirtueofConcealInMainAbout:(NSString *)link; -- (void)preserveDirectoryAbstract:(AdvertiseMatrix *)adInfo; - -- (BOOL)isAccurtowardseExistAboutAccurtowardseRoute:(NSString *)filePath; - - -- (void)acquireDirectoryvertisingIndictowardse; - - -- (void)downchamberDirectoryIndictowardseAboutWeebsite:(NSString *)imageUrl imageName:(NSString *)imageName; - - -- (void)representtowardsionInthecaseofmerIndictowardse; - - -- (NSString *)acquireAccurtowardseRouteAboutIndictowardseConstitute:(NSString *)imageName; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/Adbvertise/YUMIAdIndicateTool.m b/YuMi/CustomUI/Adbvertise/YUMIAdIndicateTool.m deleted file mode 100644 index 91a0e15e..00000000 --- a/YuMi/CustomUI/Adbvertise/YUMIAdIndicateTool.m +++ /dev/null @@ -1,132 +0,0 @@ -// -// YMAdImageTool.m -// YUMI -// -// Created by YUMI on 2022/10/31. -// - -#import "YUMIAdIndicateTool.h" -#import - -#define CACHENAME @"XPUserCache" - -UIKIT_EXTERN NSString * const adImageName; -@interface YUMIAdIndicateTool () -@property (nonatomic, strong) YYCache *yyConceal; -@property (nonatomic,strong) AdvertiseMatrix *infoMatrix; -@end - -static YUMIAdIndicateTool* tool; -@implementation YUMIAdIndicateTool - -+ (instancetype)partowardsiciptowardsionIndictowardseUtensil { - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - tool = [[YUMIAdIndicateTool alloc] init]; - }); - return tool; -} - -- (instancetype)init -{ - self = [super init]; - if (self) { - self.yyConceal = [YYCache cacheWithName:CACHENAME]; - } - return self; -} - -- (AdvertiseMatrix *)acquireDirectoryAbstractByvirtueofConcealInMainAbout:(NSString *)link { - if (link.length > 0) { - if ([self.yyConceal containsObjectForKey:link]) { - return [self.yyConceal objectForKey:link]; - }else { - return nil; - } - }else { - return nil; - } - return nil; -} - - -- (void)preserveDirectoryAbstract:(AdvertiseMatrix *)adInfo { - self.infoMatrix = adInfo; - NSArray *stringArr = [adInfo.pict componentsSeparatedByString:@"/"]; - NSString *key = stringArr.lastObject; - [self.yyConceal setObject:adInfo forKey:key withBlock:^{ - - }]; - - [self acquireDirectoryvertisingIndictowardse]; -} - - -- (BOOL)isAccurtowardseExistAboutAccurtowardseRoute:(NSString *)filePath { - NSFileManager *fileManager = [NSFileManager defaultManager]; - BOOL isDirectory = FALSE; - return [fileManager fileExistsAtPath:filePath isDirectory:&isDirectory]; -} - - -- (void)acquireDirectoryvertisingIndictowardse { - - if (self.infoMatrix.pict.length > 0) { - NSString *imageUrl = self.infoMatrix.pict; - - NSArray *stringArr = [imageUrl componentsSeparatedByString:@"/"]; - NSString *imageName = stringArr.lastObject; - - - NSString *filePath = [self acquireAccurtowardseRouteAboutIndictowardseConstitute:imageName]; - BOOL isExist = [self isAccurtowardseExistAboutAccurtowardseRoute:filePath]; - if (!isExist){ - [self downchamberDirectoryIndictowardseAboutWeebsite:imageUrl imageName:imageName]; - } - }else { - [self representtowardsionInthecaseofmerIndictowardse]; - } -} - - -- (void)downchamberDirectoryIndictowardseAboutWeebsite:(NSString *)imageUrl imageName:(NSString *)imageName { - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ - - NSString *encode = [imageUrl stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; - NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:encode]]; - UIImage *image = [UIImage imageWithData:data]; - - NSString *filePath = [self acquireAccurtowardseRouteAboutIndictowardseConstitute:imageName]; - if ([UIImagePNGRepresentation(image) writeToFile:filePath atomically:YES]) { - [self representtowardsionInthecaseofmerIndictowardse]; - [[NSUserDefaults standardUserDefaults] setValue:imageName forKey:adImageName]; - [[NSUserDefaults standardUserDefaults] synchronize]; - }else{ - [self representtowardsionInthecaseofmerIndictowardse]; - } - - }); -} - - -- (void)representtowardsionInthecaseofmerIndictowardse { - NSString *imageName = [[NSUserDefaults standardUserDefaults] valueForKey:adImageName]; - if (imageName) { - NSString *filePath = [self acquireAccurtowardseRouteAboutIndictowardseConstitute:imageName]; - NSFileManager *fileManager = [NSFileManager defaultManager]; - [fileManager removeItemAtPath:filePath error:nil]; - } -} - - -- (NSString *)acquireAccurtowardseRouteAboutIndictowardseConstitute:(NSString *)imageName { - if (imageName) { - NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES); - NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:imageName]; - - return filePath; - } - - return nil; -} -@end diff --git a/YuMi/CustomUI/Adbvertise/YUMIAdvertiseRegard.h b/YuMi/CustomUI/Adbvertise/YUMIAdvertiseRegard.h deleted file mode 100644 index 8b668aa0..00000000 --- a/YuMi/CustomUI/Adbvertise/YUMIAdvertiseRegard.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YMAdvertiseView.h -// YUMI -// -// Created by YUMI on 2022/10/31. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIAdvertiseRegard : UIView - - -- (void)show; - - -@property (nonatomic, copy) NSString *filePath; - -@property (nonatomic, strong) UIImage *adIndicate; - -@property (nonatomic, copy) void(^disappearHandler)(BOOL shouldJump); -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/Adbvertise/YUMIAdvertiseRegard.m b/YuMi/CustomUI/Adbvertise/YUMIAdvertiseRegard.m deleted file mode 100644 index f08341bf..00000000 --- a/YuMi/CustomUI/Adbvertise/YUMIAdvertiseRegard.m +++ /dev/null @@ -1,194 +0,0 @@ -// -// YMAdvertiseView.m -// YUMI -// -// Created by YUMI on 2022/10/31. -// - -#import "YUMIAdvertiseRegard.h" -#import "AppDelegate.h" -#import -#import -#import "YUMIMacroUitls.h" -#import "UIImage+Utils.h" -NSString *const adImageName = @"adImageName"; -NSString *const adUrl = @"adUrl"; -static int const showtime = 3; - -@interface YUMIAdvertiseRegard() - -@property (nonatomic, strong) UIImageView *adRegard; - -@property (nonatomic, strong) UIButton *computationdownBtuton; - -@property (nonatomic, strong) NSTimer *computationIntratemper; - -@property (nonatomic, assign) int count; - -@property (nonatomic, strong) UIWindow *window; - -@end - - -@implementation YUMIAdvertiseRegard - -#pragma mark - Initialize Methods - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - - _adRegard = [[UIImageView alloc] initWithFrame:frame]; - _adRegard.userInteractionEnabled = YES; - _adRegard.contentMode = UIViewContentModeScaleAspectFill; - _adRegard.clipsToBounds = YES; - [self addSubview:_adRegard]; - - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dwellBetowardsDirectoryRegardPerformance)]; - [_adRegard addGestureRecognizer:tap]; - [self addSubview:self.computationdownBtuton]; - } - return self; -} - -#pragma mark - Public Methods - -- (void)show { - - [self gcdCoundownHander]; - - UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow; - [self.window.rootViewController.view addSubview:self]; - [self.window makeKeyAndVisible]; - [keyWindow makeKeyWindow]; -} - - -#pragma mark - Event Response - -- (void)dwellBetowardsDirectoryRegardPerformance { - [self prohibitiaplictowardsionearAboutJumpShank:YES]; -} - -- (void)onTicktackSkipBtuton:(UIButton *)sender { - [self prohibitiaplictowardsionearAboutJumpShank:NO]; -} - - -#pragma mark - Privite Method - -- (void)gcdCoundownHander { - __block int timeout = showtime; - dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); - dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); - dispatch_source_set_timer(_timer, DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC, 0); - - dispatch_source_set_event_handler(_timer, ^{ - - if (timeout <= 0) { - dispatch_source_cancel(_timer); - dispatch_async(dispatch_get_main_queue(), ^{ - [self prohibitiaplictowardsionearAboutJumpShank:NO]; - }); - } else { - dispatch_async(dispatch_get_main_queue(), ^{ - if (self.computationdownBtuton) { - [self.computationdownBtuton setTitle:YMLocalizedString(@"YUMI_Advertise_View_0") forState:UIControlStateNormal]; - } - }); - timeout--; - } - }); - dispatch_resume(_timer); -} - -- (void)prohibitiaplictowardsionearAboutJumpShank:(BOOL)shouldJump { - if (self.computationIntratemper) { - [self.computationIntratemper invalidate]; - self.computationIntratemper = nil; - } - - @kWeakify(self) - [UIView animateWithDuration:0.5f animations:^{ - @kStrongify(self) - self.window.hidden = YES; - - } completion:^(BOOL finished) { - @kStrongify(self) - - [self removeFromSuperview]; - self.window = nil; - - !self.disappearHandler ?: self.disappearHandler(shouldJump); - }]; -} - - -- (NSString *)deviceName { - - size_t size; - int nR = sysctlbyname("hw.machine", NULL, &size, NULL, 0); - char *machine = (char *)malloc(size); - nR = sysctlbyname("hw.machine", machine, &size, NULL, 0); - NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding]; - free(machine); - return platform; -} - -- (BOOL)needComputtowardsionPubescenceBtuton { - - NSString *platform = [self deviceName]; - BOOL needBtn = YES; - if ([platform isEqualToString:@"iPhone6,1"] || - [platform isEqualToString:@"iPhone6,2"] || - [platform isEqualToString:@"iPhone7,1"] || - [platform isEqualToString:@"iPhone7,2"] || - [platform isEqualToString:@"iPhone8,1"] || - [platform isEqualToString:@"iPhone8,2"] || - [platform isEqualToString:@"iPhone8,4"]) { - needBtn = NO; - } - return needBtn; -} - -#pragma mark - Setter -- (void)setFilePath:(NSString *)filePath { - _filePath = filePath; - UIImage *image = [UIImage imageWithContentsOfFile:filePath]; - _adRegard.image = [image cutIndictowardse:[UIScreen mainScreen].bounds.size]; -} - -- (void)setAdIndicate:(UIImage *)adIndicate { - _adIndicate = adIndicate; - _adRegard.image = [adIndicate cutIndictowardse:[UIScreen mainScreen].bounds.size]; -} - - -#pragma mark - Getter - -- (UIWindow *)window { - if (_window == nil) { - _window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds]; - _window.windowLevel = UIWindowLevelAlert; - _window.userInteractionEnabled = YES; - _window.rootViewController = [[UIViewController alloc] init]; - } - return _window; -} - -- (UIButton *)computationdownBtuton { - if (_computationdownBtuton == nil) { - CGFloat btnW = 60; - CGFloat btnH = 30; - _computationdownBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - _computationdownBtuton.frame = CGRectMake(KScreenWidth - btnW - 24, btnH + 10, btnW, btnH); - [_computationdownBtuton addTarget:self action:@selector(onTicktackSkipBtuton:) forControlEvents:UIControlEventTouchUpInside]; - [_computationdownBtuton setTitle:YMLocalizedString(@"YUMI_Advertise_View_1") forState:UIControlStateNormal]; - _computationdownBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_computationdownBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _computationdownBtuton.backgroundColor = [UIColor colorWithRed:38 /255.0 green:38 /255.0 blue:38 /255.0 alpha:0.6]; - _computationdownBtuton.layer.cornerRadius = 4; - } - return _computationdownBtuton; -} - -@end diff --git a/YuMi/CustomUI/DJDKMIMOMColor.h b/YuMi/CustomUI/DJDKMIMOMColor.h index 44d15bdc..ec898b00 100644 --- a/YuMi/CustomUI/DJDKMIMOMColor.h +++ b/YuMi/CustomUI/DJDKMIMOMColor.h @@ -13,45 +13,67 @@ NS_ASSUME_NONNULL_BEGIN @interface DJDKMIMOMColor : NSObject -+ (UIColor *)aplictowardsionMainPrettify; -+ (UIColor *)aplictowardsionUnderlinePrettify; -+ (UIColor *)aplictowardsionUnderlinePrettify1; -+ (UIColor *)aplictowardsionUnderlinePrettify2; +/// 主题色0x9682FF ++ (UIColor *)appMainColor; +///强调色 #248CFE ++ (UIColor *)appEmphasizeColor; +///强调色1 0xBF36FF ++ (UIColor *)appEmphasizeColor1; +///强调色2 0xFB486A ++ (UIColor *)appEmphasizeColor2; +/* ------页面相关颜色 START------ */ +/// view的背景色 0xF3F5FA ++ (UIColor *)appBackgroundColor; +/// cell的背景色 0xFFFFFF ++ (UIColor *)appCellBackgroundColor; +///正文颜色 0x333333 ++ (UIColor *)mainTextColor; +/// 二级文字颜色 0x666666 ++ (UIColor *)secondTextColor; +///三级文字的颜色 0x999999 ++ (UIColor *)textThirdColor; +///分割线的颜色 0xE8E8E8 ++ (UIColor *)dividerColor; +/* ------页面相关颜色 END------ */ -+ (UIColor *)aplictowardsionEncouragegroundPrettify; -+ (UIColor *)aplictowardsionElementEncouragegroundPrettify; -+ (UIColor *)mainEssayPrettify; -+ (UIColor *)instantEssayPrettify; -+ (UIColor *)essayTertiusPrettify; -+ (UIColor *)dividerPrettify; +/* ------Button 相关颜色 START------ */ +/// button 可用 渐变色的开始 0xFFA936 ++ (UIColor *)confirmButtonGradientStartColor; +/// button 可用 渐变色的中间 #9CB3FF ++ (UIColor *)confirmButtonGradientMiddleColor; +/// button 可用 渐变色的开始 0xFFCB47 ++ (UIColor *)confirmButtonGradientEndColor; +/// 确定的按钮文字颜色 #FFFFFF ++ (UIColor *)confirmButtonTextColor; +/// 取消按钮 渐变色的开始 0xF7DDBF ++ (UIColor *)cancelButtonGradientStartColor; +/// 取消按钮 渐变色的结束 0xF7E8C4 ++ (UIColor *)cancelButtonGradientEndColor; +/// 取消的按钮文字颜色 0xFFA936 ++ (UIColor *)cancelButtonTextColor; +/// 取消按钮单一普通背景色 0xFFCE4E ++ (UIColor *)cancelButtonNormalBgColor; +/// 按钮不可点击背景色 0xD2D5D7 ++ (UIColor *)disableButtonColor; +/// 按钮不可点击文字颜色 0xF9F9F9 ++ (UIColor *)disableButtonTextColor; +/* ------Button 相关颜色 END------ */ +/* ------弹窗相关颜色 START------ */ ++ (UIColor *)alertBackgroundColor; ++ (UIColor *)alertTitleColor; ++ (UIColor *)alertMessageColor; ++ (UIColor *)actionSeparatorColor; +/* ------弹窗相关颜色 END------ */ +///tabbar 没有点击的时候颜色 0x333333, 0.4 ++ (UIColor *)tabbarNormalColor; +/// tabbar的View的color 0xFFFFFF ++ (UIColor *)tabbarViewColor; -+ (UIColor *)acknowledgementBtutonObliquityInititowardsePrettify; -+ (UIColor *)acknowledgementBtutonObliquityMiddlePrettify; -+ (UIColor *)acknowledgementBtutonObliquityConcludePrettify; -+ (UIColor *)acknowledgementBtutonEssayPrettify; -+ (UIColor *)revoctowardsionBtutonObliquityInititowardsePrettify; -+ (UIColor *)revoctowardsionBtutonObliquityConcludePrettify; -+ (UIColor *)revoctowardsionBtutonEssayPrettify; -+ (UIColor *)revoctowardsionBtutonOrdinaryBackgroundPrettify; -+ (UIColor *)prohibitionBtutonPrettify; -+ (UIColor *)prohibitionBtutonEssayPrettify; ++ (UIColor *)colorWithHexString:(NSString *)hexString; - - -+ (UIColor *)precautiousEncouragegroundPrettify; -+ (UIColor *)precautiousChampionPrettify; -+ (UIColor *)precautiousCommunictowardsionPrettify; -+ (UIColor *)performanceSepartowardsorPrettify; - - -+ (UIColor *)tabbarOrdinaryPrettify; -+ (UIColor *)tabbarRegardPrettify; - -+ (UIColor *)colorAboutHexBWSttr:(NSString *)hexString; - -+ (UIColor *)introjectionEssayPrettify; ++ (UIColor *)inputTextColor; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/DJDKMIMOMColor.m b/YuMi/CustomUI/DJDKMIMOMColor.m index f003a0c4..45658fc9 100644 --- a/YuMi/CustomUI/DJDKMIMOMColor.m +++ b/YuMi/CustomUI/DJDKMIMOMColor.m @@ -1,5 +1,5 @@ // -// ThemeColor.m +// DJDKMIMOMColor.m // YUMI // // Created by YUMI on 2021/9/9. @@ -8,129 +8,151 @@ #import "DJDKMIMOMColor.h" @implementation DJDKMIMOMColor -+ (UIColor *)aplictowardsionMainPrettify { +/// 主题色0x9682FF ++ (UIColor *)appMainColor { return UIColorFromRGB(0x9682FF); } -+ (UIColor *)aplictowardsionUnderlinePrettify { +///强调色 #248CFE ++ (UIColor *)appEmphasizeColor { return UIColorFromRGB(0x248CFE); } -+ (UIColor *)aplictowardsionUnderlinePrettify1 { +///强调色1 0xBF36FF ++ (UIColor *)appEmphasizeColor1 { return UIColorFromRGB(0xBF36FF); } -+ (UIColor *)aplictowardsionUnderlinePrettify2 { +///强调色2 0xFB486A ++ (UIColor *)appEmphasizeColor2 { return UIColorFromRGB(0xFB486A); } - -+ (UIColor *)aplictowardsionEncouragegroundPrettify { +/* ------页面相关颜色 START------ */ +/// view的背景色 0xF3F5FA ++ (UIColor *)appBackgroundColor { return UIColorFromRGB(0xF3F5FA); } -+ (UIColor *)aplictowardsionElementEncouragegroundPrettify { +/// cell的背景色 0xFFFFFF ++ (UIColor *)appCellBackgroundColor { return UIColorFromRGB(0xFFFFFF); } -+ (UIColor *)mainEssayPrettify { +///正文颜色 0x333333 ++ (UIColor *)mainTextColor { return UIColorFromRGB(0x161958); } -+ (UIColor *)instantEssayPrettify { +/// 二级文字颜色 0x666666 ++ (UIColor *)secondTextColor { return UIColorFromRGB(0x8A8CAB); } -+ (UIColor *)essayTertiusPrettify { +///三级文字的颜色 0x999999 ++ (UIColor *)textThirdColor { return UIColorFromRGB(0xBABBCD); } -+ (UIColor *)dividerPrettify { +///分割线的颜色 0xE8E8E8 ++ (UIColor *)dividerColor { return UIColorFromRGB(0xE8E8E8); } +/* ------页面相关颜色 END------ */ - - -+ (UIColor *)acknowledgementBtutonObliquityInititowardsePrettify { +/* ------Button 相关颜色 START------ */ +/// button 可用 渐变色的开始 0x3CAAFF ++ (UIColor *)confirmButtonGradientStartColor { return UIColorFromRGB(0x3CAAFF); } -+ (UIColor *)acknowledgementBtutonObliquityConcludePrettify { +/// button 可用 渐变色的开始 0xB176FF ++ (UIColor *)confirmButtonGradientEndColor { return UIColorFromRGB(0xB176FF); } -+ (UIColor *)acknowledgementBtutonEssayPrettify { +/// 确定的按钮文字颜色 #FFFFFF ++ (UIColor *)confirmButtonTextColor { return UIColorFromRGB(0xFFFFFF); } -+ (UIColor *)revoctowardsionBtutonObliquityInititowardsePrettify { +/// 取消按钮 渐变色的开始 0xF7DDBF ++ (UIColor *)cancelButtonGradientStartColor { return UIColorFromRGB(0xCEEFFD); } -+ (UIColor *)acknowledgementBtutonObliquityMiddlePrettify { - return [self colorAboutHexBWSttr:@"#9CB3FF"]; +/// button 可用 渐变色的中间 #9CB3FF ++ (UIColor *)confirmButtonGradientMiddleColor { + return [self colorWithHexString:@"#9CB3FF"]; } -+ (UIColor *)revoctowardsionBtutonObliquityConcludePrettify { +/// 取消按钮 渐变色的结束 0xF7E8C4 ++ (UIColor *)cancelButtonGradientEndColor { return UIColorFromRGB(0xD2F4F4); } -+ (UIColor *)revoctowardsionBtutonEssayPrettify { +/// 取消的按钮文字颜色 0xFFA936 ++ (UIColor *)cancelButtonTextColor { return UIColorFromRGB(0x5FCCE4); } -+ (UIColor *)revoctowardsionBtutonOrdinaryBackgroundPrettify { +/// 取消按钮单一普通背景色 0xFFCE4E ++ (UIColor *)cancelButtonNormalBgColor { return UIColorFromRGB(0xCEEFFD); } -+ (UIColor *)prohibitionBtutonPrettify { +/// 按钮不可点击背景色 0xD2D5D7 ++ (UIColor *)disableButtonColor { return UIColorFromRGB(0xCEEFFD); } -+ (UIColor *)prohibitionBtutonEssayPrettify { +/// 按钮不可点击文字颜色 0xF9F9F9 ++ (UIColor *)disableButtonTextColor { return UIColorFromRGB(0x5FCCE4); } +/* ------Button 相关颜色 END------ */ - - -+ (UIColor *)precautiousEncouragegroundPrettify { +/* ------弹窗相关颜色 START------ */ ++ (UIColor *)alertBackgroundColor { return UIColorFromRGB(0xFFFFFF); } -+ (UIColor *)precautiousChampionPrettify { ++ (UIColor *)alertTitleColor { return UIColorFromRGB(0x333333); } -+ (UIColor *)precautiousCommunictowardsionPrettify { ++ (UIColor *)alertMessageColor { return UIColorFromRGB(0x333333); } -+ (UIColor *)performanceSepartowardsorPrettify { ++ (UIColor *)actionSeparatorColor { return UIColorFromRGB(0xF0F0F0); } +/* ------弹窗相关颜色 END------ */ - -+ (UIColor *)tabbarOrdinaryPrettify { +///tabbar 没有点击的时候颜色 0x333333, 0.4 ++ (UIColor *)tabbarNormalColor { return UIColorRGBAlpha(0x333333, 0.4); } -+ (UIColor *)tabbarRegardPrettify { +/// tabbar的View的color 0xFFFFFF ++ (UIColor *)tabbarViewColor { return UIColorFromRGB(0xFFFFFF); } -+ (UIColor *)colorAboutHexBWSttr: (NSString *) hexString { ++ (UIColor *)colorWithHexString: (NSString *) hexString { if (hexString.length == 0) { return [UIColor blackColor]; } NSString *colorString = [[hexString stringByReplacingOccurrencesOfString: @"#" withString: @""] uppercaseString]; CGFloat alpha, red, blue, green; switch ([colorString length]) { - case 3: + case 3: // #RGB alpha = 1.0f; - red = [self colorComponentByvirtueof: colorString start: 0 length: 1]; - green = [self colorComponentByvirtueof: colorString start: 1 length: 1]; - blue = [self colorComponentByvirtueof: colorString start: 2 length: 1]; + red = [self colorComponentFrom: colorString start: 0 length: 1]; + green = [self colorComponentFrom: colorString start: 1 length: 1]; + blue = [self colorComponentFrom: colorString start: 2 length: 1]; break; - case 4: - alpha = [self colorComponentByvirtueof: colorString start: 0 length: 1]; - red = [self colorComponentByvirtueof: colorString start: 1 length: 1]; - green = [self colorComponentByvirtueof: colorString start: 2 length: 1]; - blue = [self colorComponentByvirtueof: colorString start: 3 length: 1]; + case 4: // #ARGB + alpha = [self colorComponentFrom: colorString start: 0 length: 1]; + red = [self colorComponentFrom: colorString start: 1 length: 1]; + green = [self colorComponentFrom: colorString start: 2 length: 1]; + blue = [self colorComponentFrom: colorString start: 3 length: 1]; break; - case 6: + case 6: // #RRGGBB alpha = 1.0f; - red = [self colorComponentByvirtueof: colorString start: 0 length: 2]; - green = [self colorComponentByvirtueof: colorString start: 2 length: 2]; - blue = [self colorComponentByvirtueof: colorString start: 4 length: 2]; + red = [self colorComponentFrom: colorString start: 0 length: 2]; + green = [self colorComponentFrom: colorString start: 2 length: 2]; + blue = [self colorComponentFrom: colorString start: 4 length: 2]; break; - case 8: - alpha = [self colorComponentByvirtueof: colorString start: 0 length: 2]; - red = [self colorComponentByvirtueof: colorString start: 2 length: 2]; - green = [self colorComponentByvirtueof: colorString start: 4 length: 2]; - blue = [self colorComponentByvirtueof: colorString start: 6 length: 2]; + case 8: // #AARRGGBB + alpha = [self colorComponentFrom: colorString start: 0 length: 2]; + red = [self colorComponentFrom: colorString start: 2 length: 2]; + green = [self colorComponentFrom: colorString start: 4 length: 2]; + blue = [self colorComponentFrom: colorString start: 6 length: 2]; break; default: [NSException raise:@"Invalid color value" format: @"Color value %@ is invalid. It should be a hex value of the form #RBG, #ARGB, #RRGGBB, or #AARRGGBB", hexString]; @@ -139,7 +161,7 @@ return [UIColor colorWithRed: red green: green blue: blue alpha: alpha]; } -+ (CGFloat) colorComponentByvirtueof: (NSString *) string start: (NSUInteger) start length: (NSUInteger) length { ++ (CGFloat) colorComponentFrom: (NSString *) string start: (NSUInteger) start length: (NSUInteger) length { NSString *substring = [string substringWithRange: NSMakeRange(start, length)]; NSString *fullHex = length == 2 ? substring : [NSString stringWithFormat: @"%@%@", substring, substring]; unsigned hexComponent; @@ -147,8 +169,9 @@ return hexComponent / 255.0; } -+ (UIColor *)introjectionEssayPrettify { - return [self colorAboutHexBWSttr:@"#1F1A4E"]; +///输入框的文本颜色 #1F1A4E ++ (UIColor *)inputTextColor { + return [self colorWithHexString:@"#1F1A4E"]; } @end diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/Color/Contents.json b/YuMi/CustomUI/InputView/Assets.xcassets/Color/Contents.json index e2342777..73c00596 100644 --- a/YuMi/CustomUI/InputView/Assets.xcassets/Color/Contents.json +++ b/YuMi/CustomUI/InputView/Assets.xcassets/Color/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/Contents.json b/YuMi/CustomUI/InputView/Assets.xcassets/Contents.json index e2342777..73c00596 100644 --- a/YuMi/CustomUI/InputView/Assets.xcassets/Contents.json +++ b/YuMi/CustomUI/InputView/Assets.xcassets/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/input/Contents.json b/YuMi/CustomUI/InputView/Assets.xcassets/input/Contents.json index e2342777..73c00596 100644 --- a/YuMi/CustomUI/InputView/Assets.xcassets/input/Contents.json +++ b/YuMi/CustomUI/InputView/Assets.xcassets/input/Contents.json @@ -1,7 +1,6 @@ -{"info": {"author": "xcode", "version": 1}} - - - - - - +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_emoji_black_normal.imageset/Contents.json b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_emoji_black_normal.imageset/Contents.json index d85227be..2f5f5010 100644 --- a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_emoji_black_normal.imageset/Contents.json +++ b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_emoji_black_normal.imageset/Contents.json @@ -1,7 +1,54 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"appearances": [{"appearance": "luminosity", "value": "dark"}], "idiom": "universal", "scale": "1x"}, {"filename": "chat_icon_emoji_black_l_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"appearances": [{"appearance": "luminosity", "value": "dark"}], "filename": "chat_icon_emoji_black_l_normal@2x-1.png", "idiom": "universal", "scale": "2x"}, {"filename": "chat_icon_emoji_black_l_normal@3x.png", "idiom": "universal", "scale": "3x"}, {"appearances": [{"appearance": "luminosity", "value": "dark"}], "filename": "chat_icon_emoji_black_l_normal@3x-1.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "chat_icon_emoji_black_l_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "chat_icon_emoji_black_l_normal@2x-1.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "chat_icon_emoji_black_l_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "chat_icon_emoji_black_l_normal@3x-1.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_emoji_black_normal.imageset/chat_icon_emoji_black_l_normal@2x-1.png b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_emoji_black_normal.imageset/chat_icon_emoji_black_l_normal@2x-1.png index fad0d7b4..4f9226cc 100644 Binary files a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_emoji_black_normal.imageset/chat_icon_emoji_black_l_normal@2x-1.png and b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_emoji_black_normal.imageset/chat_icon_emoji_black_l_normal@2x-1.png differ diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_emoji_black_normal.imageset/chat_icon_emoji_black_l_normal@2x.png b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_emoji_black_normal.imageset/chat_icon_emoji_black_l_normal@2x.png index 0028b945..f744bdd9 100644 Binary files a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_emoji_black_normal.imageset/chat_icon_emoji_black_l_normal@2x.png and b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_emoji_black_normal.imageset/chat_icon_emoji_black_l_normal@2x.png differ diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_emoji_black_normal.imageset/chat_icon_emoji_black_l_normal@3x-1.png b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_emoji_black_normal.imageset/chat_icon_emoji_black_l_normal@3x-1.png index 4ef66d2c..567a1f4f 100644 Binary files a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_emoji_black_normal.imageset/chat_icon_emoji_black_l_normal@3x-1.png and b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_emoji_black_normal.imageset/chat_icon_emoji_black_l_normal@3x-1.png differ diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_emoji_black_normal.imageset/chat_icon_emoji_black_l_normal@3x.png b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_emoji_black_normal.imageset/chat_icon_emoji_black_l_normal@3x.png index 84a013c0..06011f8a 100644 Binary files a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_emoji_black_normal.imageset/chat_icon_emoji_black_l_normal@3x.png and b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_emoji_black_normal.imageset/chat_icon_emoji_black_l_normal@3x.png differ diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_extend_black_normal.imageset/Contents.json b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_extend_black_normal.imageset/Contents.json index 79871e16..640000e9 100644 --- a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_extend_black_normal.imageset/Contents.json +++ b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_extend_black_normal.imageset/Contents.json @@ -1,7 +1,54 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"appearances": [{"appearance": "luminosity", "value": "dark"}], "idiom": "universal", "scale": "1x"}, {"filename": "chat_icon_more_black_l_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"appearances": [{"appearance": "luminosity", "value": "dark"}], "filename": "chat_icon_more_black_l_normal@2x-1.png", "idiom": "universal", "scale": "2x"}, {"filename": "chat_icon_more_black_l_normal@3x.png", "idiom": "universal", "scale": "3x"}, {"appearances": [{"appearance": "luminosity", "value": "dark"}], "filename": "chat_icon_more_black_l_normal@3x-1.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "chat_icon_more_black_l_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "chat_icon_more_black_l_normal@2x-1.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "chat_icon_more_black_l_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "chat_icon_more_black_l_normal@3x-1.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_extend_black_normal.imageset/chat_icon_more_black_l_normal@2x-1.png b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_extend_black_normal.imageset/chat_icon_more_black_l_normal@2x-1.png index 9a304e4a..c624a0d2 100644 Binary files a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_extend_black_normal.imageset/chat_icon_more_black_l_normal@2x-1.png and b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_extend_black_normal.imageset/chat_icon_more_black_l_normal@2x-1.png differ diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_extend_black_normal.imageset/chat_icon_more_black_l_normal@2x.png b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_extend_black_normal.imageset/chat_icon_more_black_l_normal@2x.png index 9092a911..4c7083ee 100644 Binary files a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_extend_black_normal.imageset/chat_icon_more_black_l_normal@2x.png and b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_extend_black_normal.imageset/chat_icon_more_black_l_normal@2x.png differ diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_extend_black_normal.imageset/chat_icon_more_black_l_normal@3x-1.png b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_extend_black_normal.imageset/chat_icon_more_black_l_normal@3x-1.png index d7fea729..d5698183 100644 Binary files a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_extend_black_normal.imageset/chat_icon_more_black_l_normal@3x-1.png and b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_extend_black_normal.imageset/chat_icon_more_black_l_normal@3x-1.png differ diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_extend_black_normal.imageset/chat_icon_more_black_l_normal@3x.png b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_extend_black_normal.imageset/chat_icon_more_black_l_normal@3x.png index b1c46d8c..5b7fce22 100644 Binary files a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_extend_black_normal.imageset/chat_icon_more_black_l_normal@3x.png and b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_extend_black_normal.imageset/chat_icon_more_black_l_normal@3x.png differ diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_keyboard_black_normal.imageset/Contents.json b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_keyboard_black_normal.imageset/Contents.json index 6ea19768..4ef04d90 100644 --- a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_keyboard_black_normal.imageset/Contents.json +++ b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_keyboard_black_normal.imageset/Contents.json @@ -1,7 +1,54 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"appearances": [{"appearance": "luminosity", "value": "dark"}], "idiom": "universal", "scale": "1x"}, {"filename": "chat_icon_keyboard_black_l_normal@2x.png", "idiom": "universal", "scale": "2x"}, {"appearances": [{"appearance": "luminosity", "value": "dark"}], "filename": "chat_icon_keyboard_black_l_normal@2x-1.png", "idiom": "universal", "scale": "2x"}, {"filename": "chat_icon_keyboard_black_l_normal@3x.png", "idiom": "universal", "scale": "3x"}, {"appearances": [{"appearance": "luminosity", "value": "dark"}], "filename": "chat_icon_keyboard_black_l_normal@3x-1.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "chat_icon_keyboard_black_l_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "chat_icon_keyboard_black_l_normal@2x-1.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "chat_icon_keyboard_black_l_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "chat_icon_keyboard_black_l_normal@3x-1.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_keyboard_black_normal.imageset/chat_icon_keyboard_black_l_normal@2x-1.png b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_keyboard_black_normal.imageset/chat_icon_keyboard_black_l_normal@2x-1.png index e991f616..e5a01fdb 100644 Binary files a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_keyboard_black_normal.imageset/chat_icon_keyboard_black_l_normal@2x-1.png and b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_keyboard_black_normal.imageset/chat_icon_keyboard_black_l_normal@2x-1.png differ diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_keyboard_black_normal.imageset/chat_icon_keyboard_black_l_normal@2x.png b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_keyboard_black_normal.imageset/chat_icon_keyboard_black_l_normal@2x.png index 3fcf613b..46290828 100644 Binary files a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_keyboard_black_normal.imageset/chat_icon_keyboard_black_l_normal@2x.png and b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_keyboard_black_normal.imageset/chat_icon_keyboard_black_l_normal@2x.png differ diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_keyboard_black_normal.imageset/chat_icon_keyboard_black_l_normal@3x-1.png b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_keyboard_black_normal.imageset/chat_icon_keyboard_black_l_normal@3x-1.png index fd03b3ca..18b2cfcc 100644 Binary files a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_keyboard_black_normal.imageset/chat_icon_keyboard_black_l_normal@3x-1.png and b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_keyboard_black_normal.imageset/chat_icon_keyboard_black_l_normal@3x-1.png differ diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_keyboard_black_normal.imageset/chat_icon_keyboard_black_l_normal@3x.png b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_keyboard_black_normal.imageset/chat_icon_keyboard_black_l_normal@3x.png index e0f45e62..14883382 100644 Binary files a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_keyboard_black_normal.imageset/chat_icon_keyboard_black_l_normal@3x.png and b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_keyboard_black_normal.imageset/chat_icon_keyboard_black_l_normal@3x.png differ diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_voice_black_normal.imageset/Contents.json b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_voice_black_normal.imageset/Contents.json index 38c70b13..06110338 100644 --- a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_voice_black_normal.imageset/Contents.json +++ b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_voice_black_normal.imageset/Contents.json @@ -1,7 +1,54 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"appearances": [{"appearance": "luminosity", "value": "dark"}], "idiom": "universal", "scale": "1x"}, {"filename": "chat_icon_voice@2x.png", "idiom": "universal", "scale": "2x"}, {"appearances": [{"appearance": "luminosity", "value": "dark"}], "filename": "chat_icon_voice_dark@2x.png", "idiom": "universal", "scale": "2x"}, {"filename": "chat_icon_voice@3x.png", "idiom": "universal", "scale": "3x"}, {"appearances": [{"appearance": "luminosity", "value": "dark"}], "filename": "chat_icon_voice_dark@3x.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "chat_icon_voice@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "chat_icon_voice_dark@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "chat_icon_voice@3x.png", + "idiom" : "universal", + "scale" : "3x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "chat_icon_voice_dark@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_voice_black_normal.imageset/chat_icon_voice@2x.png b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_voice_black_normal.imageset/chat_icon_voice@2x.png index d366fe8b..ef1c8ecf 100644 Binary files a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_voice_black_normal.imageset/chat_icon_voice@2x.png and b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_voice_black_normal.imageset/chat_icon_voice@2x.png differ diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_voice_black_normal.imageset/chat_icon_voice@3x.png b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_voice_black_normal.imageset/chat_icon_voice@3x.png index cdb0d958..3380ec3a 100644 Binary files a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_voice_black_normal.imageset/chat_icon_voice@3x.png and b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_voice_black_normal.imageset/chat_icon_voice@3x.png differ diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_voice_black_normal.imageset/chat_icon_voice_dark@2x.png b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_voice_black_normal.imageset/chat_icon_voice_dark@2x.png index 4986e668..cb369685 100644 Binary files a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_voice_black_normal.imageset/chat_icon_voice_dark@2x.png and b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_voice_black_normal.imageset/chat_icon_voice_dark@2x.png differ diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_voice_black_normal.imageset/chat_icon_voice_dark@3x.png b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_voice_black_normal.imageset/chat_icon_voice_dark@3x.png index e8d65ba5..211df549 100644 Binary files a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_voice_black_normal.imageset/chat_icon_voice_dark@3x.png and b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_chat_voice_black_normal.imageset/chat_icon_voice_dark@3x.png differ diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_emotion_delete.imageset/Contents.json b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_emotion_delete.imageset/Contents.json index 355f10b1..260c5efa 100644 --- a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_emotion_delete.imageset/Contents.json +++ b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_emotion_delete.imageset/Contents.json @@ -1,7 +1,22 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"filename": "compose_emotion_delete_highlighted.png", "idiom": "universal", "scale": "2x"}, {"filename": "compose_emotion_delete_highlighted-1.png", "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "compose_emotion_delete_highlighted.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "compose_emotion_delete_highlighted-1.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_emotion_delete.imageset/compose_emotion_delete_highlighted-1.png b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_emotion_delete.imageset/compose_emotion_delete_highlighted-1.png index f2cea355..6053549c 100644 Binary files a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_emotion_delete.imageset/compose_emotion_delete_highlighted-1.png and b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_emotion_delete.imageset/compose_emotion_delete_highlighted-1.png differ diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_emotion_delete.imageset/compose_emotion_delete_highlighted.png b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_emotion_delete.imageset/compose_emotion_delete_highlighted.png index 9387ab0e..8acf5f15 100644 Binary files a/YuMi/CustomUI/InputView/Assets.xcassets/input/q_emotion_delete.imageset/compose_emotion_delete_highlighted.png and b/YuMi/CustomUI/InputView/Assets.xcassets/input/q_emotion_delete.imageset/compose_emotion_delete_highlighted.png differ diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/q_white_btn.imageset/Contents.json b/YuMi/CustomUI/InputView/Assets.xcassets/q_white_btn.imageset/Contents.json index 31fed830..5c56699d 100644 --- a/YuMi/CustomUI/InputView/Assets.xcassets/q_white_btn.imageset/Contents.json +++ b/YuMi/CustomUI/InputView/Assets.xcassets/q_white_btn.imageset/Contents.json @@ -1,7 +1,52 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"appearances": [{"appearance": "luminosity", "value": "dark"}], "idiom": "universal", "scale": "1x"}, {"filename": "white_rect.png", "idiom": "universal", "scale": "2x"}, {"appearances": [{"appearance": "luminosity", "value": "dark"}], "filename": "white_btn_dark.png", "idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}, {"appearances": [{"appearance": "luminosity", "value": "dark"}], "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "white_rect.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "white_btn_dark.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/q_white_btn.imageset/white_btn_dark.png b/YuMi/CustomUI/InputView/Assets.xcassets/q_white_btn.imageset/white_btn_dark.png index 41afdfe4..9b9ef6e1 100644 Binary files a/YuMi/CustomUI/InputView/Assets.xcassets/q_white_btn.imageset/white_btn_dark.png and b/YuMi/CustomUI/InputView/Assets.xcassets/q_white_btn.imageset/white_btn_dark.png differ diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/q_white_btn.imageset/white_rect.png b/YuMi/CustomUI/InputView/Assets.xcassets/q_white_btn.imageset/white_rect.png index 193e45de..804a26d2 100644 Binary files a/YuMi/CustomUI/InputView/Assets.xcassets/q_white_btn.imageset/white_rect.png and b/YuMi/CustomUI/InputView/Assets.xcassets/q_white_btn.imageset/white_rect.png differ diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/q_white_input_btn.imageset/Contents.json b/YuMi/CustomUI/InputView/Assets.xcassets/q_white_input_btn.imageset/Contents.json index 7d331812..f0cab498 100644 --- a/YuMi/CustomUI/InputView/Assets.xcassets/q_white_input_btn.imageset/Contents.json +++ b/YuMi/CustomUI/InputView/Assets.xcassets/q_white_input_btn.imageset/Contents.json @@ -1,7 +1,52 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"appearances": [{"appearance": "luminosity", "value": "dark"}], "idiom": "universal", "scale": "1x"}, {"filename": "white_rect.png", "idiom": "universal", "scale": "2x"}, {"appearances": [{"appearance": "luminosity", "value": "dark"}], "filename": "white_input_btn_dark.png", "idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}, {"appearances": [{"appearance": "luminosity", "value": "dark"}], "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "white_rect.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "white_input_btn_dark.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/q_white_input_btn.imageset/white_input_btn_dark.png b/YuMi/CustomUI/InputView/Assets.xcassets/q_white_input_btn.imageset/white_input_btn_dark.png index b475825f..b86b1ac6 100644 Binary files a/YuMi/CustomUI/InputView/Assets.xcassets/q_white_input_btn.imageset/white_input_btn_dark.png and b/YuMi/CustomUI/InputView/Assets.xcassets/q_white_input_btn.imageset/white_input_btn_dark.png differ diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/q_white_input_btn.imageset/white_rect.png b/YuMi/CustomUI/InputView/Assets.xcassets/q_white_input_btn.imageset/white_rect.png index 193e45de..804a26d2 100644 Binary files a/YuMi/CustomUI/InputView/Assets.xcassets/q_white_input_btn.imageset/white_rect.png and b/YuMi/CustomUI/InputView/Assets.xcassets/q_white_input_btn.imageset/white_rect.png differ diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/q_white_input_press_btn.imageset/Contents.json b/YuMi/CustomUI/InputView/Assets.xcassets/q_white_input_press_btn.imageset/Contents.json index 2f04e003..16a190f6 100644 --- a/YuMi/CustomUI/InputView/Assets.xcassets/q_white_input_press_btn.imageset/Contents.json +++ b/YuMi/CustomUI/InputView/Assets.xcassets/q_white_input_press_btn.imageset/Contents.json @@ -1,7 +1,52 @@ -{"images": [{"idiom": "universal", "scale": "1x"}, {"appearances": [{"appearance": "luminosity", "value": "dark"}], "idiom": "universal", "scale": "1x"}, {"filename": "white_input_press_btn.png", "idiom": "universal", "scale": "2x"}, {"appearances": [{"appearance": "luminosity", "value": "dark"}], "filename": "white_input_press_btn_dark.png", "idiom": "universal", "scale": "2x"}, {"idiom": "universal", "scale": "3x"}, {"appearances": [{"appearance": "luminosity", "value": "dark"}], "idiom": "universal", "scale": "3x"}], "info": {"author": "xcode", "version": 1}} - - - - - - +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "white_input_press_btn.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "white_input_press_btn_dark.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/q_white_input_press_btn.imageset/white_input_press_btn.png b/YuMi/CustomUI/InputView/Assets.xcassets/q_white_input_press_btn.imageset/white_input_press_btn.png index 8478d580..485bccd7 100644 Binary files a/YuMi/CustomUI/InputView/Assets.xcassets/q_white_input_press_btn.imageset/white_input_press_btn.png and b/YuMi/CustomUI/InputView/Assets.xcassets/q_white_input_press_btn.imageset/white_input_press_btn.png differ diff --git a/YuMi/CustomUI/InputView/Assets.xcassets/q_white_input_press_btn.imageset/white_input_press_btn_dark.png b/YuMi/CustomUI/InputView/Assets.xcassets/q_white_input_press_btn.imageset/white_input_press_btn_dark.png index 0833fdb2..07a2dd98 100644 Binary files a/YuMi/CustomUI/InputView/Assets.xcassets/q_white_input_press_btn.imageset/white_input_press_btn_dark.png and b/YuMi/CustomUI/InputView/Assets.xcassets/q_white_input_press_btn.imageset/white_input_press_btn_dark.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoj_s_normal@2x.png b/YuMi/CustomUI/InputView/Emoji/emoj_s_normal@2x.png index 897ad0cb..122bda25 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoj_s_normal@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoj_s_normal@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoj_s_pressed@2x.png b/YuMi/CustomUI/InputView/Emoji/emoj_s_pressed@2x.png index c51bc399..c4ce400f 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoj_s_pressed@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoj_s_pressed@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji.xml b/YuMi/CustomUI/InputView/Emoji/emoji.xml index 0637c204..55b87daa 100755 --- a/YuMi/CustomUI/InputView/Emoji/emoji.xml +++ b/YuMi/CustomUI/InputView/Emoji/emoji.xml @@ -1,135 +1,130 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_00@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_00@2x.png index dd5dd8d7..9db8367c 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_00@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_00@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_01@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_01@2x.png index 4f332896..ee31fdcd 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_01@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_01@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_02@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_02@2x.png index 9dc1d119..13c6f9a6 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_02@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_02@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_03@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_03@2x.png index 528109ca..153f1a0c 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_03@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_03@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_04@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_04@2x.png index 0983afa1..7af71afb 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_04@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_04@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_05@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_05@2x.png index beb98622..92e8845a 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_05@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_05@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_06@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_06@2x.png index c973e82a..07a645d6 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_06@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_06@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_07@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_07@2x.png index d469b806..4399a22d 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_07@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_07@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_08@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_08@2x.png index 485919c4..ced9560a 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_08@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_08@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_09@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_09@2x.png index 12225206..56d2378c 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_09@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_09@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_100@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_100@2x.png index 07af5c3d..f5d4ca92 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_100@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_100@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_101@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_101@2x.png index cc7eea4b..5915d884 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_101@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_101@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_102@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_102@2x.png index e919b07d..ea86e019 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_102@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_102@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_103@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_103@2x.png index dd515ac2..53ac7055 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_103@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_103@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_104@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_104@2x.png index e602afde..38fd7d8d 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_104@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_104@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_105@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_105@2x.png index 50aacba2..25507f6a 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_105@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_105@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_106@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_106@2x.png index 61d3e7c6..8e9ab3d9 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_106@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_106@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_107@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_107@2x.png index 446f2d71..f7b78d07 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_107@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_107@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_108@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_108@2x.png index b9f3f721..74d26df4 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_108@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_108@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_109@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_109@2x.png index 1a84c7a1..3a863167 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_109@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_109@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_10@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_10@2x.png index 9a709d8a..a7726c17 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_10@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_10@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_110@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_110@2x.png index 983468b8..0b084991 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_110@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_110@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_111@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_111@2x.png index 5eecf6e1..b02f25fe 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_111@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_111@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_112@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_112@2x.png index 8865949a..c1c85bb3 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_112@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_112@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_113@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_113@2x.png index 22899ba7..a197441d 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_113@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_113@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_114@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_114@2x.png index 8470f72b..0f952644 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_114@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_114@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_115@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_115@2x.png index b47fc94a..13bd4111 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_115@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_115@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_116@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_116@2x.png index 4f332896..ee31fdcd 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_116@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_116@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_117@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_117@2x.png index 45b1608e..c37892ec 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_117@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_117@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_118@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_118@2x.png index 45d03d71..19fe459e 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_118@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_118@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_119@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_119@2x.png index d85b88f4..d169aeca 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_119@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_119@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_11@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_11@2x.png index bb542c22..4d311653 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_11@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_11@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_120@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_120@2x.png index c207d208..73b0f85b 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_120@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_120@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_121@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_121@2x.png index b0149b42..b558b096 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_121@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_121@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_122@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_122@2x.png index 215ac5cc..d395e8d1 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_122@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_122@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_123@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_123@2x.png index c91f406e..911ab18d 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_123@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_123@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_124@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_124@2x.png index dc0edcf6..e7db679c 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_124@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_124@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_125@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_125@2x.png index 20a8679d..adcf5b51 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_125@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_125@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_126@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_126@2x.png index 25a9174c..0f1938e1 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_126@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_126@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_127@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_127@2x.png index 254ee819..0b30f90c 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_127@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_127@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_128@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_128@2x.png index 3a77bc18..e2fa25e2 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_128@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_128@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_129@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_129@2x.png index 169c0c9e..e9967138 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_129@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_129@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_12@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_12@2x.png index b938ab41..83b37d74 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_12@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_12@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_130@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_130@2x.png index ae5b1ec4..02d4008d 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_130@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_130@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_131@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_131@2x.png index bfa80445..c9b1c054 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_131@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_131@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_132@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_132@2x.png index 6ca60024..5a655508 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_132@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_132@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_133@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_133@2x.png index 9fb0e74e..def66bf6 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_133@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_133@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_134@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_134@2x.png index 7ad7a7ab..ed366cd3 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_134@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_134@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_135@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_135@2x.png index 40ca36e0..77d20545 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_135@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_135@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_136@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_136@2x.png index 51012a04..639cb3a9 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_136@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_136@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_137@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_137@2x.png index 4915d13e..5ebe5556 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_137@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_137@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_138@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_138@2x.png index c541baef..417f8ab1 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_138@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_138@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_139@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_139@2x.png index eb4ab8fd..1fd6655c 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_139@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_139@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_13@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_13@2x.png index 672585d4..53be82b5 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_13@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_13@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_140@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_140@2x.png index 23e285e7..e4797459 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_140@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_140@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_141@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_141@2x.png index eecfa585..0627ec95 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_141@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_141@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_142@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_142@2x.png index 4506b64e..06e91709 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_142@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_142@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_143@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_143@2x.png index 955131cf..0bdae774 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_143@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_143@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_144@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_144@2x.png index 32f8f8c1..9d176d16 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_144@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_144@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_145@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_145@2x.png index d0d10118..86132764 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_145@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_145@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_146@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_146@2x.png index 6b89422b..701bf5f9 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_146@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_146@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_147@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_147@2x.png index 03259c68..7c4b4358 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_147@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_147@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_148@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_148@2x.png index 23ad740d..ed2edb20 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_148@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_148@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_149@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_149@2x.png index 73aabfa9..8b9a67c1 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_149@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_149@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_14@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_14@2x.png index 8c697c5c..688a6e4d 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_14@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_14@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_150@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_150@2x.png index 9acd173d..81ac9a87 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_150@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_150@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_151@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_151@2x.png index cf26bac0..30c3a849 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_151@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_151@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_152@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_152@2x.png index a083eae9..65193c42 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_152@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_152@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_15@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_15@2x.png index f67d2f43..46c29485 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_15@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_15@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_160@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_160@2x.png index 104b8e77..82ce23ec 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_160@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_160@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_161@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_161@2x.png index 3bb2c09f..981fb717 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_161@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_161@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_162@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_162@2x.png index 22878157..08d638f2 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_162@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_162@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_163@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_163@2x.png index f60ddff3..a493dc3e 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_163@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_163@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_164@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_164@2x.png index 488d3f32..d61502d6 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_164@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_164@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_165@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_165@2x.png index a104c057..26421922 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_165@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_165@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_166@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_166@2x.png index 88b2089c..e87ca8b7 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_166@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_166@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_16@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_16@2x.png index 7cf8fc6d..0da25e2d 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_16@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_16@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_17@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_17@2x.png index 7392218e..dd0af7ec 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_17@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_17@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_18@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_18@2x.png index ed51d591..feab8a16 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_18@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_18@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_19@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_19@2x.png index ce7b1f3e..6f979eed 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_19@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_19@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_200@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_200@2x.png index 26969e15..8b9f3bb6 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_200@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_200@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_20@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_20@2x.png index b8425bdc..30bf0a76 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_20@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_20@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_21@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_21@2x.png index 80c188ac..70324caf 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_21@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_21@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_22@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_22@2x.png index 4e01c845..f7d85847 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_22@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_22@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_23@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_23@2x.png index b3c17e92..48f30fa4 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_23@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_23@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_24@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_24@2x.png index ab29f320..6b8edaae 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_24@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_24@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_25@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_25@2x.png index bbd0d020..78886377 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_25@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_25@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_26@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_26@2x.png index 000649f4..1bd1ee4b 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_26@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_26@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_27@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_27@2x.png index da48ca5d..bee713ce 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_27@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_27@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_28@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_28@2x.png index 8b2d6fdc..0226d98e 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_28@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_28@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_29@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_29@2x.png index d9f0b4e4..07f35a71 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_29@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_29@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_30@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_30@2x.png index f35f8785..7126b754 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_30@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_30@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_31@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_31@2x.png index 9f463977..dec4c4bc 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_31@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_31@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_32@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_32@2x.png index a740ba8b..c39d85f3 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_32@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_32@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_33@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_33@2x.png index 99525193..2ab18b16 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_33@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_33@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_34@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_34@2x.png index fdc51c74..d57edc65 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_34@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_34@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_35@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_35@2x.png index f85aaad6..e3a4fb20 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_35@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_35@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_36@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_36@2x.png index ee6c25f3..c7b74cc1 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_36@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_36@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_37@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_37@2x.png index b0043280..8a02a03a 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_37@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_37@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_38@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_38@2x.png index 8de34969..361333b4 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_38@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_38@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_39@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_39@2x.png index 769cc2f1..56d9485c 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_39@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_39@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_40@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_40@2x.png index 1081c1b8..b0c7e4ad 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_40@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_40@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_41@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_41@2x.png index f607cf62..5389ecd2 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_41@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_41@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_42@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_42@2x.png index 9b90dc3f..5bb78b8c 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_42@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_42@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_43@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_43@2x.png index 4cd324eb..136d7fd4 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_43@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_43@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_44@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_44@2x.png index 38ca0557..4addc100 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_44@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_44@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_45@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_45@2x.png index 05261cb9..55aeaf2c 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_45@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_45@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_46@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_46@2x.png index 3161ab0c..b25947cc 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_46@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_46@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_47@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_47@2x.png index 11b6213b..213483ae 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_47@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_47@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_48@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_48@2x.png index eaf2772a..858182db 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_48@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_48@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_49@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_49@2x.png index a45f717c..16fb3cbc 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_49@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_49@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_50@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_50@2x.png index fb8ca09a..131f58b4 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_50@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_50@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_51@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_51@2x.png index a0f9f738..3708efd7 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_51@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_51@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_52@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_52@2x.png index 076aa9f7..ea1c2843 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_52@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_52@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_53@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_53@2x.png index b7eaedf3..67267431 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_53@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_53@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_54@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_54@2x.png index f242ab93..6ec04d57 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_54@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_54@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_55@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_55@2x.png index 76d1c4f7..dcf2aa45 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_55@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_55@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_56@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_56@2x.png index 6f213565..0d963e86 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_56@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_56@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_57@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_57@2x.png index 6ca60024..5a655508 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_57@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_57@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_58@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_58@2x.png index 75856426..52dd5b1e 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_58@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_58@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_59@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_59@2x.png index 437c2260..6102de8a 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_59@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_59@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_60@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_60@2x.png index 4b968da1..b90969ee 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_60@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_60@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_61@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_61@2x.png index b94f50d5..30c3411f 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_61@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_61@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_62@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_62@2x.png index 4d094a39..d5105775 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_62@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_62@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_63@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_63@2x.png index f8724089..c574c94d 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_63@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_63@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_64@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_64@2x.png index c15d6159..230ee5a0 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_64@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_64@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_65@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_65@2x.png index 62d134ef..967e0840 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_65@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_65@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_66@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_66@2x.png index bac9d51a..69e85b03 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_66@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_66@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_67@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_67@2x.png index c6498a90..f34d6718 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_67@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_67@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_68@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_68@2x.png index cfb8a6d9..164dc56a 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_68@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_68@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_69@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_69@2x.png index 0bbeeb84..b1c92bd7 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_69@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_69@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_70@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_70@2x.png index f8eb4195..a58cfc5e 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_70@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_70@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_71@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_71@2x.png index 3e93db96..e1d80e11 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_71@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_71@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_72@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_72@2x.png index a41712dc..14986a8e 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_72@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_72@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_73@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_73@2x.png index 72b33de1..6e4a99d0 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_73@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_73@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_74@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_74@2x.png index 14f33155..04d51bef 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_74@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_74@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_75@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_75@2x.png index 8275f639..5c9dd3f6 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_75@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_75@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_76@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_76@2x.png index 8455b1e7..102ffd95 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_76@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_76@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_77@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_77@2x.png index f0bc20ff..8853ca53 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_77@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_77@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_78@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_78@2x.png index 8ba315c0..b1febb37 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_78@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_78@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_79@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_79@2x.png index d7d7fe1b..dc9f76c7 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_79@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_79@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_80@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_80@2x.png index 7fbb9993..d1d40014 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_80@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_80@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_81@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_81@2x.png index a2c4825a..538dfd5d 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_81@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_81@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_82@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_82@2x.png index 5fdde7d1..a6c56062 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_82@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_82@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_83@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_83@2x.png index f0a62f6e..8376609c 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_83@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_83@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_84@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_84@2x.png index 452631f9..dc7e2c55 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_84@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_84@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_85@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_85@2x.png index 7992ddd6..faa16945 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_85@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_85@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_86@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_86@2x.png index c41ea897..d1e98877 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_86@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_86@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_87@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_87@2x.png index 1df97576..9d9b57db 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_87@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_87@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_88@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_88@2x.png index 54abef09..f61d6e77 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_88@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_88@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_89@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_89@2x.png index b8d716ef..a1fd3840 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_89@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_89@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_90@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_90@2x.png index c0203eb6..5599f6be 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_90@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_90@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_91@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_91@2x.png index 56b89334..4fa5719d 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_91@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_91@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_92@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_92@2x.png index ac8796bb..b5512569 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_92@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_92@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_93@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_93@2x.png index 48ac0da5..7a2fbc1c 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_93@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_93@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_94@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_94@2x.png index 053912bf..bc30b620 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_94@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_94@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_95@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_95@2x.png index 43e29646..69863a06 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_95@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_95@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_96@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_96@2x.png index 5d9c02f8..0b6f1751 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_96@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_96@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_97@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_97@2x.png index 006e0b6f..01fa5937 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_97@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_97@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_98@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_98@2x.png index c5da70db..1c7b12fe 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_98@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_98@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_99@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_99@2x.png index 1624c51c..e0092487 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_99@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_99@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_del_normal@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_del_normal@2x.png index fd4fb6db..a2f1e0dd 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_del_normal@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_del_normal@2x.png differ diff --git a/YuMi/CustomUI/InputView/Emoji/emoji_del_pressed@2x.png b/YuMi/CustomUI/InputView/Emoji/emoji_del_pressed@2x.png index 538ee329..260aa0ce 100755 Binary files a/YuMi/CustomUI/InputView/Emoji/emoji_del_pressed@2x.png and b/YuMi/CustomUI/InputView/Emoji/emoji_del_pressed@2x.png differ diff --git a/YuMi/CustomUI/InputView/InputView/MHTAppearanceIndicateMatrix.h b/YuMi/CustomUI/InputView/InputView/MHTAppearanceIndicateMatrix.h deleted file mode 100644 index 141737e0..00000000 --- a/YuMi/CustomUI/InputView/InputView/MHTAppearanceIndicateMatrix.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// MHTAppearanceIndicateMatrix.h -// YUMI -// -// Created by YUMI on 2023/1/11. -// - -#import -#import -NS_ASSUME_NONNULL_BEGIN - -@interface MHTAppearanceIndicateMatrix : NSObject -@property (nonatomic,assign) BOOL isSelect; -@property (nonatomic,assign) BOOL isOrigin; -@property (nonatomic,strong) TZAssetModel *assetInfo; -@property (nonatomic,strong) UIImage *originImage; -@property (nonatomic,strong) UIImage *compressImage; -@property (nonatomic,assign) NSInteger number; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/InputView/InputView/MHTAppearanceIndicateMatrix.m b/YuMi/CustomUI/InputView/InputView/MHTAppearanceIndicateMatrix.m deleted file mode 100644 index f1080cc6..00000000 --- a/YuMi/CustomUI/InputView/InputView/MHTAppearanceIndicateMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// MHTAppearanceIndicateMatrix.m -// YUMI -// -// Created by YUMI on 2023/1/11. -// - -#import "MHTAppearanceIndicateMatrix.h" - -@implementation MHTAppearanceIndicateMatrix - -@end diff --git a/YuMi/CustomUI/InputView/InputView/MHTESentimentIndicateRegard.h b/YuMi/CustomUI/InputView/InputView/MHTESentimentIndicateRegard.h deleted file mode 100644 index d43558c5..00000000 --- a/YuMi/CustomUI/InputView/InputView/MHTESentimentIndicateRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// MHTESentimentIndicateRegard.h -// YUMI -// -// Created by YUMI on 2022/8/17. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface MHTESentimentIndicateRegard : UIImageView -@property (nonatomic, strong) NSString *exhibitionEssay; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/InputView/InputView/MHTESentimentIndicateRegard.m b/YuMi/CustomUI/InputView/InputView/MHTESentimentIndicateRegard.m deleted file mode 100644 index c767e280..00000000 --- a/YuMi/CustomUI/InputView/InputView/MHTESentimentIndicateRegard.m +++ /dev/null @@ -1,14 +0,0 @@ -// -// MHTESentimentIndicateRegard.m -// YUMI -// -// Created by YUMI on 2022/8/17. -// - -#import "MHTESentimentIndicateRegard.h" - -@implementation MHTESentimentIndicateRegard - - - -@end diff --git a/YuMi/CustomUI/InputView/InputView/MHTExtendDirectorateRegard.h b/YuMi/CustomUI/InputView/InputView/MHTExtendDirectorateRegard.h deleted file mode 100755 index f05f5eee..00000000 --- a/YuMi/CustomUI/InputView/InputView/MHTExtendDirectorateRegard.h +++ /dev/null @@ -1,48 +0,0 @@ -// -// MHTExtendDirectorateRegard.h -// QKeyBoardDemo -// -// Created by QDong on 14-5-1. -// Copyright (c) 2021年 QDong QQ:285275534@qq.com. All rights reserved. -// - -#import - - -@interface MHTExtendDirectorateProvisionMatrix : NSObject - - -@property (nonatomic, strong) UIImage *ordinaryFigureIndicate; - - -@property (nonatomic, strong) NSString *title; - - -- (instancetype)initAboutOrdinaryFigureIndictowardse:(UIImage *)ordinaryFigureIndicate - title:(NSString *)title; - -@end - - -@protocol QExtendDirectorateRegardRepresendtation - -@optional - -- (void)didChosenSpreadDirectortowardseProvision:(MHTExtendDirectorateProvisionMatrix *)shareMenuItem atIndex:(NSInteger)index; - -@end - - -@interface MHTExtendDirectorateRegard : UIView - -@property (nonatomic, strong) NSArray *spreadDirectorateProvisions; - -@property (nonatomic, weak) id delegate; - - -- (void)reloadData; - - -- (void)rechamberProvisionHLOfIndictowardsrix:(int)index withNormalIconImage:(UIImage *)image withTitle:(NSString *)title ; - -@end diff --git a/YuMi/CustomUI/InputView/InputView/MHTExtendDirectorateRegard.m b/YuMi/CustomUI/InputView/InputView/MHTExtendDirectorateRegard.m deleted file mode 100755 index 31657cf6..00000000 --- a/YuMi/CustomUI/InputView/InputView/MHTExtendDirectorateRegard.m +++ /dev/null @@ -1,249 +0,0 @@ -// -// MHTExtendDirectorateRegard.m -// QKeyBoardDemo -// -// Created by QDong on 14-5-1. -// Copyright (c) 2021年 QDong QQ:285275534@qq.com. All rights reserved. -// - -#import "MHTExtendDirectorateRegard.h" - -const int UIPageControlHeight = 56; - -const int UIMenuItemCellWidth = 80; - -const int UIMenuItemCellHeight = 90; - -const int UIPerColumItemCount = 2; - -@implementation MHTExtendDirectorateProvisionMatrix - -- (instancetype)initAboutOrdinaryFigureIndictowardse:(UIImage *)ordinaryFigureIndicate - title:(NSString *)title { - self = [super init]; - if (self) { - self.ordinaryFigureIndicate = ordinaryFigureIndicate; - self.title = title; - } - return self; -} - -- (void)dealloc { - self.ordinaryFigureIndicate = nil; - self.title = nil; -} - -@end - -@interface MHTExtendDirectorateAssembletionElement : UIView - - -@property (nonatomic, weak) UIButton *spreadProvisionBtuton; - -@property (nonatomic, weak) UILabel *spreadProvisionChampionSequencignation; - - -- (void)setup; -@end - -@implementation MHTExtendDirectorateAssembletionElement - -- (void)setup { - if (!_spreadProvisionBtuton) { - UIButton *spreadProvisionBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - spreadProvisionBtuton.frame = CGRectMake(0, 0, UIMenuItemCellWidth, UIMenuItemCellWidth); - spreadProvisionBtuton.backgroundColor = [UIColor clearColor]; - [self addSubview:spreadProvisionBtuton]; - - self.spreadProvisionBtuton = spreadProvisionBtuton; - } - - if (!_spreadProvisionChampionSequencignation) { - - UILabel *spreadProvisionChampionSequencignation = [[UILabel alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(self.spreadProvisionBtuton.frame), UIMenuItemCellWidth, 17)]; - spreadProvisionChampionSequencignation.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - NSBundle *bundle = [NSBundle bundleForClass:[self class]]; - spreadProvisionChampionSequencignation.textColor = [UIColor colorNamed:@"q_text_black_gray" inBundle:bundle compatibleWithTraitCollection:nil]; - } else { - spreadProvisionChampionSequencignation.textColor = [UIColor colorWithRed:91/255.0f green:91/255.0f blue:91/255.0f alpha:1]; - } - spreadProvisionChampionSequencignation.font = [UIFont systemFontOfSize:15]; - spreadProvisionChampionSequencignation.textAlignment = NSTextAlignmentCenter; - [self addSubview:spreadProvisionChampionSequencignation]; - - self.spreadProvisionChampionSequencignation = spreadProvisionChampionSequencignation; - } -} - -- (void)awakeFromNib { - [self setup]; - [super awakeFromNib]; -} - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self setup]; - } - return self; -} - -@end - -@interface MHTExtendDirectorateRegard () - - -@property (nonatomic, weak) UIScrollView *spreadTrundleRegard; - - -@property (nonatomic, weak) UIPageControl *spreadPeriodGovernance; - - -- (void)extconcludeProvisionBtutonTicktacked:(UIButton *)sender; - - -- (void)setup; - -@end - -@implementation MHTExtendDirectorateRegard - -- (void)extconcludeProvisionBtutonTicktacked:(UIButton *)sender { - if ([self.delegate respondsToSelector:@selector(didChosenSpreadDirectortowardseProvision:atIndex:)]) { - NSInteger index = sender.tag; - if (index < self.spreadDirectorateProvisions.count) { - [self.delegate didChosenSpreadDirectortowardseProvision:[self.spreadDirectorateProvisions objectAtIndex:index] atIndex:index]; - } - } -} - -- (void)rechamberProvisionHLOfIndictowardsrix:(int)index withNormalIconImage:(UIImage *)image withTitle:(NSString *)title { - if ([self.spreadTrundleRegard.subviews count] > index) { - MHTExtendDirectorateAssembletionElement *extendItemView = self.spreadTrundleRegard.subviews[index]; - [extendItemView.spreadProvisionBtuton setImage:image forState:UIControlStateNormal]; - extendItemView.spreadProvisionChampionSequencignation.text = title; - } -} - -- (void)reloadData { - if (!_spreadDirectorateProvisions.count) - return; - - int perRowItemCount = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) ? 10 : 4; - - [self.spreadTrundleRegard.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; - - CGFloat paddingX = 10; - CGFloat paddingY = 10; - for (MHTExtendDirectorateProvisionMatrix *extendItem in self.spreadDirectorateProvisions) { - NSInteger index = [self.spreadDirectorateProvisions indexOfObject:extendItem]; - NSInteger page = index / (perRowItemCount * UIPerColumItemCount); - CGRect extendItemViewFrame = [self acquireConfigurtowardsionAboutPerRowProvisionComputtowardsion:perRowItemCount - perColumItemCount:UIPerColumItemCount - itemWidth:UIMenuItemCellWidth - itemAltitude:UIMenuItemCellHeight - paddingX:paddingX - paddingY:paddingY - atIndex:index - onPage:page]; - MHTExtendDirectorateAssembletionElement *extendItemView = [[MHTExtendDirectorateAssembletionElement alloc] initWithFrame:extendItemViewFrame]; - - extendItemView.spreadProvisionBtuton.tag = index; - [extendItemView.spreadProvisionBtuton addTarget:self action:@selector(extconcludeProvisionBtutonTicktacked:) forControlEvents:UIControlEventTouchUpInside]; - [extendItemView.spreadProvisionBtuton setImage:extendItem.ordinaryFigureIndicate forState:UIControlStateNormal]; - extendItemView.spreadProvisionChampionSequencignation.text = extendItem.title; - - [self.spreadTrundleRegard addSubview:extendItemView]; - } - - self.spreadPeriodGovernance.numberOfPages = (self.spreadDirectorateProvisions.count / (perRowItemCount * 2) + (self.spreadDirectorateProvisions.count % (perRowItemCount * 2) ? 1 : 0)); - [self.spreadTrundleRegard setContentSize:CGSizeMake(((self.spreadDirectorateProvisions.count / (perRowItemCount * 2) + (self.spreadDirectorateProvisions.count % (perRowItemCount * 2) ? 1 : 0)) * CGRectGetWidth(self.bounds)), CGRectGetHeight(self.spreadTrundleRegard.bounds))]; -} - - -- (CGRect)acquireConfigurtowardsionAboutPerRowProvisionComputtowardsion:(NSInteger)perRowItemCount - perColumItemCount:(NSInteger)perColumItemCount - itemWidth:(CGFloat)itemWidth - itemAltitude:(NSInteger)itemAltitude - paddingX:(CGFloat)paddingX - paddingY:(CGFloat)paddingY - atIndex:(NSInteger)index - onPage:(NSInteger)page { - CGRect itemFrame = CGRectMake((index % perRowItemCount) * (itemWidth + paddingX) + paddingX + (page * CGRectGetWidth(self.bounds)), ((index / perRowItemCount) - perColumItemCount * page) * (itemAltitude + paddingY) + paddingY, itemWidth, itemAltitude); - return itemFrame; -} - -#pragma mark - Life cycle - -- (void)setup { - - if (!_spreadTrundleRegard) { - UIScrollView *spreadTrundleRegard = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.bounds), CGRectGetHeight(self.bounds) - UIPageControlHeight)]; - spreadTrundleRegard.delegate = self; - spreadTrundleRegard.canCancelContentTouches = NO; - spreadTrundleRegard.delaysContentTouches = YES; - spreadTrundleRegard.backgroundColor = self.backgroundColor; - spreadTrundleRegard.showsHorizontalScrollIndicator = NO; - spreadTrundleRegard.showsVerticalScrollIndicator = NO; - [spreadTrundleRegard setScrollsToTop:NO]; - spreadTrundleRegard.pagingEnabled = YES; - [self addSubview:spreadTrundleRegard]; - - self.spreadTrundleRegard = spreadTrundleRegard; - } - - if (!_spreadPeriodGovernance) { - UIPageControl *spreadPeriodGovernance = [[UIPageControl alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(self.spreadTrundleRegard.frame), CGRectGetWidth(self.bounds), UIPageControlHeight)]; - spreadPeriodGovernance.backgroundColor = self.backgroundColor; - spreadPeriodGovernance.hidesForSinglePage = YES; - spreadPeriodGovernance.defersCurrentPageDisplay = YES; - [self addSubview:spreadPeriodGovernance]; - - self.spreadPeriodGovernance = spreadPeriodGovernance; - } -} - -- (void)layoutSubviews { - [super layoutSubviews]; - self.spreadTrundleRegard.frame = CGRectMake(0, 0, CGRectGetWidth(self.bounds), CGRectGetHeight(self.bounds) - UIPageControlHeight); - self.spreadPeriodGovernance.frame = CGRectMake(0, CGRectGetMaxY(self.spreadTrundleRegard.frame), CGRectGetWidth(self.bounds), UIPageControlHeight); -} - -- (void)awakeFromNib { - [self setup]; - [super awakeFromNib]; -} - -- (id)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - - [self setup]; - } - return self; -} - -- (void)dealloc { - self.spreadDirectorateProvisions = nil; - self.spreadTrundleRegard = nil; - self.spreadPeriodGovernance = nil; -} - -- (void)willMoveToSuperview:(UIView *)newSuperview { - if (newSuperview) { - [self reloadData]; - } -} - -#pragma mark - UIScrollView delegate - -- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { - - CGFloat pageWidth = scrollView.frame.size.width; - - NSInteger currentPage = floor((scrollView.contentOffset.x - pageWidth/2)/pageWidth)+1; - [self.spreadPeriodGovernance setCurrentPage:currentPage]; -} - -@end diff --git a/YuMi/CustomUI/InputView/InputView/MHTIntrojectionAppearancetElement.h b/YuMi/CustomUI/InputView/InputView/MHTIntrojectionAppearancetElement.h deleted file mode 100644 index 06828baf..00000000 --- a/YuMi/CustomUI/InputView/InputView/MHTIntrojectionAppearancetElement.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// MHTIntrojectionAppearancetElement.h -// YUMI -// -// Created by YUMI on 2023/1/11. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class MHTAppearanceIndicateMatrix, MHTIntrojectionAppearancetElement; - -@protocol QIntrojectionPhototElementRepresendtation - -- (void)qIntrojectionAplictowardsionearancetElement:(MHTIntrojectionAppearancetElement *)view didClickChoose:(MHTAppearanceIndicateMatrix *)model; - -@end - -@interface MHTIntrojectionAppearancetElement : UICollectionViewCell -@property (nonatomic,strong) MHTAppearanceIndicateMatrix *imageInfo; - -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/InputView/InputView/MHTIntrojectionAppearancetElement.m b/YuMi/CustomUI/InputView/InputView/MHTIntrojectionAppearancetElement.m deleted file mode 100644 index e972baa0..00000000 --- a/YuMi/CustomUI/InputView/InputView/MHTIntrojectionAppearancetElement.m +++ /dev/null @@ -1,124 +0,0 @@ -// -// MHTIntrojectionAppearancetElement.m -// YUMI -// -// Created by YUMI on 2023/1/11. -// - -#import "MHTIntrojectionAppearancetElement.h" -#import -#import "MHTAppearanceIndicateMatrix.h" -#import "YUMIMacroUitls.h" -#import "UIImage+Utils.h" -#import "DJDKMIMOMColor.h" -#import "UIButton+EnlargeTouchArea.h" - -@interface MHTIntrojectionAppearancetElement () - -@property (nonatomic,strong) UIImageView *brandIndicateRegard; -@property (nonatomic,strong) UIButton *concludeBtuton; -@property (nonatomic,strong) UILabel *numberLabel; - -@end - - -@implementation MHTIntrojectionAppearancetElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.brandIndicateRegard]; - [self.contentView addSubview:self.concludeBtuton]; - [self.contentView addSubview:self.numberLabel]; -} - -- (void)initChildLyRestrictions { - [self.brandIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.contentView); - }]; - - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20, 20)); - make.right.top.mas_equalTo(self.contentView).inset(10); - }]; - - [self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.equalTo(self.concludeBtuton); - make.size.mas_equalTo(CGSizeMake(18, 18)); - }]; -} - -#pragma mark - Event Response -- (void)concludeBtutonPerformance:(UIButton *)sender { - sender.selected = !sender.selected; - self.imageInfo.isSelect = sender.selected; - if (self.delegate && [self.delegate respondsToSelector:@selector(qIntrojectionAplictowardsionearancetElement:didClickChoose:)]) { - [self.delegate qIntrojectionAplictowardsionearancetElement:self didClickChoose:self.imageInfo]; - } -} - -#pragma mark - Getters And Setters -- (void)setImageInfo:(MHTAppearanceIndicateMatrix *)imageInfo { - _imageInfo = imageInfo; - if (_imageInfo) { - self.numberLabel.hidden = !imageInfo.isSelect; - self.concludeBtuton.selected = imageInfo.isSelect; - if (!imageInfo.originImage) { - [[TZImageManager manager] getPhotoWithAsset:imageInfo.assetInfo.asset photoWidth:200 completion:^(UIImage *appearance, NSDictionary *info, BOOL isDegraded) { - self.brandIndicateRegard.image = appearance; - self.imageInfo.originImage = appearance; - UIImage * image = [appearance compressAboutLargestLength:1024 * 10]; - self.imageInfo.compressImage = image; - } progressHandler:nil networkAccessAllowed:NO]; - } else { - self.brandIndicateRegard.image = imageInfo.originImage; - } - self.numberLabel.text = [NSString stringWithFormat:@"%ld", imageInfo.number]; - } -} - -- (UIImageView *)brandIndicateRegard { - if (!_brandIndicateRegard) { - _brandIndicateRegard = [[UIImageView alloc] init]; - _brandIndicateRegard.userInteractionEnabled = YES; - _brandIndicateRegard.layer.masksToBounds = YES; - _brandIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _brandIndicateRegard.layer.cornerRadius = 4; - } - return _brandIndicateRegard; -} - -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_concludeBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_term_input_kit_choose_normal"] forState:UIControlStateNormal]; - [_concludeBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_term_input_kit_choose_normal"] forState:UIControlStateSelected]; - [_concludeBtuton addTarget:self action:@selector(concludeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_concludeBtuton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:10]; - } - return _concludeBtuton; -} - - -- (UILabel *)numberLabel { - if (!_numberLabel) { - _numberLabel = [[UILabel alloc] init]; - _numberLabel.font = [UIFont systemFontOfSize:10]; - _numberLabel.textColor = [UIColor whiteColor]; - _numberLabel.backgroundColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#5FCCE4"]; - _numberLabel.layer.masksToBounds = YES; - _numberLabel.layer.cornerRadius = 9; - _numberLabel.textAlignment = NSTextAlignmentCenter; - } - return _numberLabel; -} - -@end diff --git a/YuMi/CustomUI/InputView/InputView/MHTIntrojectionObstacleRegard.h b/YuMi/CustomUI/InputView/InputView/MHTIntrojectionObstacleRegard.h deleted file mode 100755 index ca4107a5..00000000 --- a/YuMi/CustomUI/InputView/InputView/MHTIntrojectionObstacleRegard.h +++ /dev/null @@ -1,90 +0,0 @@ -// -// MHTIntrojectionObstacleRegard.h -// QKeyBoardDemo -// -// Created by QDong on 14-4-24. -// Copyright (c) 2021年 QDong QQ:285275534@qq.com. All rights reserved. -// - -#import -#import "SZTextView.h" -#import "MHTIntrojectionObstacleRegardDispositionuration.h" - -extern const int UIInputBarViewMinHeight; - -@class MHTIntrojectionObstacleRegard; - -@protocol QIntrojectionObstacleRegardAtomicSource -@optional - -- (UITextView *)essayRegardInthecaseofIntrojectionObstacleRegard:(MHTIntrojectionObstacleRegard *)introjectionObstacleRegard; - -@end - -@protocol QIntrojectionObstacleRegardRepresendtation - -@optional - - -- (void)introjectionObstacleRegard:(MHTIntrojectionObstacleRegard *)introjectionObstacleRegard inputTextViewDidBeginEditing:(UITextView *)introjectionEssayRegard; - -- (void)introjectionObstacleRegard:(MHTIntrojectionObstacleRegard *)introjectionObstacleRegard inputTextViewShouldBeginEditing:(UITextView *)introjectionEssayRegard; - -- (void)introjectionObstacleRegard:(MHTIntrojectionObstacleRegard *)introjectionObstacleRegard introjectionEssayRegard:(UITextView *)introjectionEssayRegard heightDidChange:(CGFloat)changeValue becauseSendText:(BOOL)becauseSendText; - - -- (void)introjectionObstacleRegard:(MHTIntrojectionObstacleRegard *)introjectionObstacleRegard onReputtowardsionSwopBtutonTicktack:(UIButton *)reputationSwopBtuton; - - -- (void)introjectionObstacleRegard:(MHTIntrojectionObstacleRegard *)introjectionObstacleRegard onKeyboardSendClick:(NSString *)inputNormalText; - - -- (void)introjectionObstacleRegard:(MHTIntrojectionObstacleRegard *)introjectionObstacleRegard onExtendButtonClick:(UIButton *)spreadSwopBtuton; - - -- (void)introjectionObstacleRegard:(MHTIntrojectionObstacleRegard *)introjectionObstacleRegard onEmotionButtonClick:(UIButton *)senintratemporalntSwopBtuton; - - -- (void)introjectionObstacleRegard:(MHTIntrojectionObstacleRegard *)introjectionObstacleRegard onCameraButtonClick:(UIButton *)senintratemporalntSwopBtuton; - - - -- (void)introjectionObstacleRegard:(MHTIntrojectionObstacleRegard *)introjectionObstacleRegard onPhototButtonClick:(UIButton *)senintratemporalntSwopBtuton; - - - -- (void)introjectionObstacleRegard:(MHTIntrojectionObstacleRegard *)introjectionObstacleRegard onGiftButtonClick:(UIButton *)senintratemporalntSwopBtuton; - - -- (void)vocalmanualReflectionImplementtowardsion:(NSString *)recordPath; - -@end - -@interface MHTIntrojectionObstacleRegard : UIView - -@property (nonatomic, strong, readonly) SZTextView *introjectionEssayRegard; - -@property (nonatomic, strong, readonly) UIButton *reflectionBtuton; - -@property (nonatomic, weak) id delegate; - -@property (nonatomic, weak) id dataSource; - -- (void)setupAboutDispositionurtowardsion:(MHTIntrojectionObstacleRegardDispositionuration *)configuration; - - -- (void)essayRegardBecomeThresholdResponder; - -- (void)essayRegardResignThresholdResponder; - -- (NSString *)essayRegardIntrojectionOrdinaryEssay; - -- (void)insertSenintrtowardsemporalntIdiosyncracydBWSttr:(NSAttributedString *)emotionAttributedString; - -- (void)insertSenintrtowardsemporalnt:(NSString *)emotionKey; - -- (BOOL)representtowardsionSenintrtowardsemporalnt; - -- (NSTimeInterval)prohibititinctIntrojectionEssayByDischarge; - -@end diff --git a/YuMi/CustomUI/InputView/InputView/MHTIntrojectionObstacleRegard.m b/YuMi/CustomUI/InputView/InputView/MHTIntrojectionObstacleRegard.m deleted file mode 100755 index b609db6b..00000000 --- a/YuMi/CustomUI/InputView/InputView/MHTIntrojectionObstacleRegard.m +++ /dev/null @@ -1,639 +0,0 @@ -// -// MHTIntrojectionObstacleRegard.m -// QKeyBoardDemo -// -// Created by QDong on 2021-8-3. -// Copyright (c) 2021年 QDong QQ:285275534@qq.com. All rights reserved. -// - -const int UIInputBarViewMinHeight = 58; - -const int UIInputTextViewMinHeight = 42; - -const int UIInputTextViewMaxHeight = 147; -#import -#import -#import "MHTIntrojectionObstacleRegard.h" -#import "UITextView+MHTSpirit.h" -#import "InterlocutionVocalmusicReflectionRegard.h" -#import "YUMIMacroUitls.h" -#import "UIImage+Utils.h" -#import "DJDKMIMOMColor.h" -#import "StatsticsticsServingFacilitater.h" - -@interface MHTIntrojectionObstacleRegard () -{ -} -@property (nonatomic, strong) SZTextView *introjectionEssayRegard; -@property (nonatomic, strong) UIButton *reputationSwopBtuton; -@property (nonatomic, strong) UIButton *spreadSwopBtuton; -@property (nonatomic, strong) UIButton *senintratemporalntSwopBtuton; -@property (nonatomic, strong) UIButton *reflectionBtuton; -@property (nonatomic,strong) UIStackView *utensilHierarchyRegard; -@property (nonatomic,strong) UIButton *appearanceBtuton; -@property (nonatomic,strong) UIButton *cameraBtuton; -@property (nonatomic,strong) UIButton *presentBtuton; - -@property (nonatomic, assign) NSTimeInterval introjectionObstacleAltitudeDiversificationBrectifynessContinuance; - -@property (nonatomic, assign) NSTimeInterval introjectionObstacleAltitudeDiversificationBrectifynessTerminDischargeContinuance; - -@property (nonatomic, assign) BOOL keydirectorateDischargeCapacitated; - -@property (nonatomic, strong) NSString *introjectionedEssay; - -@property (nonatomic, assign) CGFloat previousEssayRegardSatisfperformanceAltitude; - -@property (nonatomic, assign) BOOL distinctIntrojectionEssayByDischargeSoon; -@property (nonatomic,strong) InterlocutionVocalmusicReflectionRegard *audioReflectionRegard; -@property (nonatomic,strong) MHTIntrojectionObstacleRegardDispositionuration *config; -@property (nonatomic,assign) NSTimeInterval currentTime; -@end - -@implementation MHTIntrojectionObstacleRegard - -#pragma mark - Init -- (void)awakeFromNib { - [super awakeFromNib]; -} - -- (void)setupAboutDispositionurtowardsion:(MHTIntrojectionObstacleRegardDispositionuration *)configuration -{ - self.config = configuration; - self.keydirectorateDischargeCapacitated = configuration.keydirectorateDischargeCapacitated; - - const int UISwitchButtonWidth = 40; - const int horizontalPadding = 6; - const CGFloat verticalPadding = (UIInputBarViewMinHeight - UISwitchButtonWidth )/2; - CGFloat textViewFrameX = 0; - CGFloat rightViewsMinX = 0; - const CGFloat textViewHorizontalMargin = 8; - CGFloat safeAreaInsetsLeft = 0; - CGFloat safeAreaInsetsRight = 0; - if (@available(iOS 11.0, *)) { - safeAreaInsetsLeft = UIApplication.sharedApplication.windows.firstObject.safeAreaInsets.left; - safeAreaInsetsRight = UIApplication.sharedApplication.windows.firstObject.safeAreaInsets.right; - } - - NSBundle *bundle = [NSBundle bundleForClass:[self class]]; - - - if (!configuration.reputationBtutonVeiled) { - UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, UISwitchButtonWidth, UISwitchButtonWidth)]; - [button setBackgroundImage:[UIImage imageNamed:@"q_chat_keyboard_black_normal" inBundle:bundle compatibleWithTraitCollection:nil] forState:UIControlStateNormal]; - [button setBackgroundImage:[UIImage imageNamed:@"q_chat_voice_black_normal" inBundle:bundle compatibleWithTraitCollection:nil] forState:UIControlStateSelected]; - [button addTarget:self action:@selector(onReputtowardsionSwopBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - CGRect buttonFrame = button.frame; - buttonFrame.origin = CGPointMake(horizontalPadding + safeAreaInsetsLeft, verticalPadding); - button.frame = buttonFrame; - [self addSubview:button]; - self.reputationSwopBtuton = button; - textViewFrameX = CGRectGetMaxX(button.frame); - } else { - - textViewFrameX = safeAreaInsetsLeft + 8; - } - - - BOOL rightButtonShowed = NO; - - - if (configuration.rectifyDischargeBtuton) { - UIButton *button = configuration.rectifyDischargeBtuton; - button.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin; - - CGRect buttonFrame = button.frame; - buttonFrame.origin = CGPointMake(CGRectGetWidth(self.bounds) - horizontalPadding - CGRectGetWidth(buttonFrame) - safeAreaInsetsRight, verticalPadding); - button.frame = buttonFrame; - [self addSubview:button]; - rightViewsMinX = CGRectGetMinX(buttonFrame); - rightButtonShowed = YES; - - } else if (!configuration.spreadBtutonVeiled) { - - UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, UISwitchButtonWidth, UISwitchButtonWidth)]; - button.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin; - [button setBackgroundImage:[UIImage imageNamed:@"q_chat_extend_black_normal" inBundle:bundle compatibleWithTraitCollection:nil] forState:UIControlStateNormal]; - [button addTarget:self action:@selector(onSpreadSwopBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - - CGRect buttonFrame = button.frame; - buttonFrame.origin = CGPointMake(CGRectGetWidth(self.bounds) - horizontalPadding - CGRectGetWidth(buttonFrame) - safeAreaInsetsRight, verticalPadding); - button.frame = buttonFrame; - [self addSubview:button]; - rightViewsMinX = CGRectGetMinX(buttonFrame); - self.spreadSwopBtuton = button; - rightButtonShowed = YES; - - } else { - rightViewsMinX = CGRectGetWidth(self.bounds) - safeAreaInsetsRight; - } - - - if (!configuration.senintratemporalntBtutonVeiled) { - UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, UISwitchButtonWidth, UISwitchButtonWidth)]; - button.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin; - [button setBackgroundImage:[UIImage imageNamed:@"q_chat_emoji_black_normal" inBundle:bundle compatibleWithTraitCollection:nil] forState:UIControlStateNormal]; - [button setBackgroundImage:[UIImage imageNamed:@"q_chat_keyboard_black_normal" inBundle:bundle compatibleWithTraitCollection:nil] forState:UIControlStateSelected]; - [button addTarget:self action:@selector(onSenintrtowardsemporalntSwopBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - CGRect buttonFrame = button.frame; - if (rightButtonShowed) { - buttonFrame.origin = CGPointMake(rightViewsMinX - CGRectGetWidth(buttonFrame) - horizontalPadding, verticalPadding); - } else { - buttonFrame.origin = CGPointMake(CGRectGetWidth(self.bounds) - horizontalPadding - CGRectGetWidth(buttonFrame) - safeAreaInsetsRight, verticalPadding); - } - button.frame = buttonFrame; - [self addSubview:button]; - self.senintratemporalntSwopBtuton = button; - - rightViewsMinX = CGRectGetMinX(buttonFrame); - } else { - - } - - - CGFloat textViewWidth = rightViewsMinX - textViewHorizontalMargin - textViewFrameX - textViewHorizontalMargin; - - - UITextView *textView = nil; - if ([self.dataSource respondsToSelector:@selector(essayRegardInthecaseofIntrojectionObstacleRegard:)]) { - - textView = [self.dataSource essayRegardInthecaseofIntrojectionObstacleRegard:self]; - } - - if (!textView){ - - textView = [[SZTextView alloc] initWithFrame:CGRectZero]; - textView.font = [UIFont systemFontOfSize:17.5]; - textView.returnKeyType = UIReturnKeySend; - textView.scrollsToTop = NO; - textView.textAlignment = NSTextAlignmentLeft; - textView.layer.cornerRadius = UIInputTextViewMinHeight / 2; - - textView.textContainerInset = UIEdgeInsetsMake(10.0f, 8.0f, 10.0f, 8.0f); - - - textView.enablesReturnKeyAutomatically = YES; - } - - textView.autoresizingMask = UIViewAutoresizingFlexibleWidth; - textView.delegate = self; - - - [textView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:nil]; - [self addSubview:textView]; - textView.frame = CGRectMake(textViewFrameX + textViewHorizontalMargin, (UIInputBarViewMinHeight - UIInputTextViewMinHeight)/2, textViewWidth, UIInputTextViewMinHeight); - self.introjectionEssayRegard = textView; - - - self.previousEssayRegardSatisfperformanceAltitude = [self acquireEssayRegardStowardsisfperformanceAltitude]; - - - if (!configuration.reputationBtutonVeiled) { - UIButton *button = [[UIButton alloc] initWithFrame:self.introjectionEssayRegard.frame]; - button.autoresizingMask = UIViewAutoresizingFlexibleWidth; - - [button setBackgroundImage:[UIImage imageWithColor: UIColorFromRGB(0xF1F1FA)] forState:UIControlStateNormal]; - [button setBackgroundImage:[UIImage imageNamed:@"q_white_input_press_btn" inBundle:bundle compatibleWithTraitCollection:nil] forState:UIControlStateHighlighted]; - [button setTitle:configuration.speakBtutonChampion?:YMLocalizedString(@"Q_Input_Bar_View_0") forState:UIControlStateNormal]; - [button setTitle:configuration.speakBtutonChampion?:YMLocalizedString(@"Q_Input_Bar_View_1") forState:UIControlStateSelected]; - [button addTarget:self action:@selector(vocalmanualContactPubescencePerformance) forControlEvents:UIControlEventTouchDown]; - [button addTarget:self action:@selector(vocalmanualContactUpwardsOptowardssidesidePerformance) forControlEvents:UIControlEventTouchUpOutside]; - [button addTarget:self action:@selector(vocalmanualContactUpwardsInsidePerformance) forControlEvents:UIControlEventTouchUpInside]; - [button addTarget:self action:@selector(vocalmanualContactDragImportPerformance) forControlEvents:UIControlEventTouchDragEnter]; - [button addTarget:self action:@selector(vocalmanualContactDragExitPerformance) forControlEvents:UIControlEventTouchDragExit]; - button.layer.masksToBounds = YES; - button.layer.cornerRadius = UIInputTextViewMinHeight / 2; - button.alpha = self.reputationSwopBtuton.selected; - [self addSubview:button]; - self.reflectionBtuton = button; - } - - if (!configuration.utensilVeiled) { - UIStackView * stackView = [[UIStackView alloc] init]; - stackView.axis = UILayoutConstraintAxisHorizontal; - stackView.distribution = UIStackViewDistributionFillEqually; - stackView.alignment = UIStackViewAlignmentFill; - stackView.spacing = 0; - stackView.backgroundColor = [UIColor clearColor]; - stackView.frame = CGRectMake(0, CGRectGetMaxY(self.introjectionEssayRegard.frame) + 5, self.frame.size.width, 30); - [self addSubview:stackView]; - self.utensilHierarchyRegard = stackView; - [self.utensilHierarchyRegard addArrangedSubview:self.appearanceBtuton]; - [self.utensilHierarchyRegard addArrangedSubview:self.cameraBtuton]; - [self.utensilHierarchyRegard addArrangedSubview:self.presentBtuton]; - - self.appearanceBtuton.hidden = configuration.appearanceBtutonVeiled; - self.presentBtuton.hidden = configuration.presentBtutonVeiled; - self.cameraBtuton.hidden = configuration.cameraBtutonVeiled; - } - - - - self.backgroundColor = configuration.introjectionObstacleEncouragegroundPrettify; - _introjectionEssayRegard.textColor = configuration.textColor; - _introjectionEssayRegard.backgroundColor = configuration.textRegardEncouragegroundPrettify; - [self.reflectionBtuton setTitleColor:configuration.reflectionBtutonChampionPrettify forState:UIControlStateNormal]; - - - self.introjectionObstacleAltitudeDiversificationBrectifynessContinuance = configuration.introjectionObstacleAltitudeDiversificationBrectifynessContinuance == 0 ? 0.2 : configuration.introjectionObstacleAltitudeDiversificationBrectifynessContinuance; - self.introjectionObstacleAltitudeDiversificationBrectifynessTerminDischargeContinuance = 0.1; - - - UIView *apexBurlywoodRegard = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.bounds), 1 / [UIScreen mainScreen].scale)]; - apexBurlywoodRegard.backgroundColor = configuration.introjectionObstacleDirectoratePrettify; - [self addSubview:apexBurlywoodRegard]; - [[NIMSDK sharedSDK].mediaManager addDelegate:self]; -} - -#pragma mark - NIMMediaManagerDelegate - -- (void)recordAudio:(nullable NSString *)filePath didBeganWithError:(nullable NSError *)error { - NSLog(@"开始录制语音"); -} - - -- (void)recordAudio:(nullable NSString *)filePath didCompletedWithError:(nullable NSError *)error { - if (filePath.length > 0 && error == nil) { - if (self.delegate && [self.delegate respondsToSelector:@selector(vocalmanualReflectionImplementtowardsion:)]) { - [self.delegate vocalmanualReflectionImplementtowardsion:filePath]; - } - } - NSLog(@"录制音频完成后的回调 %@", filePath); -} - - -- (void)recordAudioDidCancelled { - NSLog(@"录音被取消的回调"); -} - - -- (void)recordAudioProgress:(NSTimeInterval)currentTime { - self.currentTime = currentTime; - [self.audioReflectionRegard refurbishVocalmusicReflectionDirectoryvance:currentTime]; -} - - -- (void)recordAudioInterruptionBegin { - [self.audioReflectionRegard revoctowardsionVocalmusicReflection]; -} - - -#pragma mark - IBAction -- (IBAction)onReputtowardsionSwopBtutonTicktack:(UIButton *)sender -{ - sender.selected = !sender.selected; - self.senintratemporalntSwopBtuton.selected = NO; - self.spreadSwopBtuton.selected = NO; - - if (sender.selected) { - self.introjectionedEssay = self.introjectionEssayRegard.text; - self.introjectionEssayRegard.text = nil; - [self.introjectionEssayRegard resignFirstResponder]; - } else { - self.introjectionEssayRegard.text = self.introjectionedEssay; - self.introjectionedEssay = nil; - [self.introjectionEssayRegard becomeFirstResponder]; - } - - [UIView animateWithDuration:0.2 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ - self.reflectionBtuton.alpha = sender.selected; - self.introjectionEssayRegard.alpha = !sender.selected; - } completion:^(BOOL finished) { - - }]; - - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEvent_chat_toolbar_voice_click]; - - if ([self.delegate respondsToSelector:@selector(introjectionObstacleRegard:onReputtowardsionSwopBtutonTicktack:)]) { - [self.delegate introjectionObstacleRegard:self onReputtowardsionSwopBtutonTicktack:sender]; - } -} - -- (IBAction)onSenintrtowardsemporalntSwopBtutonTicktack:(UIButton *)sender -{ - sender.selected = !sender.selected; - self.reputationSwopBtuton.selected = NO; - self.spreadSwopBtuton.selected = NO; - - if (!sender.selected) { - [UIView animateWithDuration:0.2 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ - self.reflectionBtuton.alpha = sender.selected; - self.introjectionEssayRegard.alpha = !sender.selected; - } completion:^(BOOL finished) { - - }]; - } else { - [UIView animateWithDuration:0.2 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ - self.reflectionBtuton.alpha = !sender.selected; - self.introjectionEssayRegard.alpha = sender.selected; - } completion:^(BOOL finished) { - - }]; - } - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEvent_chat_toolbar_emoticon_click]; - if ([self.delegate respondsToSelector:@selector(introjectionObstacleRegard:onEmotionButtonClick:)]) { - [self.delegate introjectionObstacleRegard:self onEmotionButtonClick:sender]; - } -} - -- (IBAction)onSpreadSwopBtutonTicktack:(UIButton *)sender -{ - sender.selected = !sender.selected; - self.senintratemporalntSwopBtuton.selected = NO; - if ([self.delegate respondsToSelector:@selector(introjectionObstacleRegard:onExtendButtonClick:)]) { - [self.delegate introjectionObstacleRegard:self onExtendButtonClick:sender]; - } -} - -- (void)aplictowardsionearanceBtutonPerformance:(UIButton *)sender { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEvent_chat_toolbar_appearance_click]; - sender.selected = !sender.selected; - if (self.delegate && [self.delegate respondsToSelector:@selector(introjectionObstacleRegard:onPhototButtonClick:)]) { - [self.delegate introjectionObstacleRegard:self onPhototButtonClick:sender]; - } -} - -- (void)presentBtutonPerformance:(UIButton *)sender { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEvent_chat_toolbar_gift_click]; - if (self.delegate && [self.delegate respondsToSelector:@selector(introjectionObstacleRegard:onGiftButtonClick:)]) { - [self.delegate introjectionObstacleRegard:self onGiftButtonClick:sender]; - } -} - -- (void)camerBtutonPerformance:(UIButton *)sender { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEvent_chat_toolbar_camera_click]; - if (self.delegate && [self.delegate respondsToSelector:@selector(introjectionObstacleRegard:onCameraButtonClick:)]) { - [self.delegate introjectionObstacleRegard:self onCameraButtonClick:sender]; - } -} - -- (void)vocalmanualContactPubescencePerformance { - self.currentTime = 0; - self.reflectionBtuton.selected = YES; - - if (!self.audioReflectionRegard.superview) { - [[UIApplication sharedApplication].keyWindow addSubview:self.audioReflectionRegard]; - [self.audioReflectionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.mas_equalTo(self.audioReflectionRegard.superview); - }]; - [self.audioReflectionRegard prohibitipositionVocalmusicReflection:@"message_tool_audio_record_first" title:YMLocalizedString(@"Q_Input_Bar_View_2") isAnimation:YES]; - [self.audioReflectionRegard instituteVocalmusicReflection]; - } - -} - -- (void)vocalmanualContactUpwardsOptowardssidesidePerformance { - self.reflectionBtuton.selected = NO; - - [self.audioReflectionRegard revoctowardsionVocalmusicReflection]; - [self.audioReflectionRegard removeFromSuperview]; -} - -- (void)vocalmanualContactUpwardsInsidePerformance { - self.reflectionBtuton.selected = NO; - if (self.currentTime > 1) { - - [self.audioReflectionRegard accomplishVocalmusicReflection]; - } else { - - [self.audioReflectionRegard revoctowardsionVocalmusicReflection]; - } - [self.audioReflectionRegard removeFromSuperview]; -} - -- (void)vocalmanualContactDragImportPerformance { - - [self.audioReflectionRegard prohibitipositionVocalmusicReflection:@"message_tool_audio_record_first" title:YMLocalizedString(@"Q_Input_Bar_View_3") isAnimation:YES]; -} - -- (void)vocalmanualContactDragExitPerformance { - - [self.audioReflectionRegard prohibitipositionVocalmusicReflection:@"message_tool_audio_record_cancel" title:YMLocalizedString(@"Q_Input_Bar_View_4") isAnimation:NO]; -} - - -#pragma mark - Public -- (void)replacementEssayRegardAltitudeBy:(CGFloat)textViewHeightShouldChangeValue { - - CGRect prevFrame = self.introjectionEssayRegard.frame; - self.introjectionEssayRegard.frame = CGRectMake(prevFrame.origin.x, - prevFrame.origin.y, - prevFrame.size.width, - prevFrame.size.height + textViewHeightShouldChangeValue); - - if (!self.config.utensilVeiled) { - self.utensilHierarchyRegard.frame = CGRectMake(0, CGRectGetMaxY(self.introjectionEssayRegard.frame) + 5, self.frame.size.width, 30); - } -} - -- (void)essayRegardBecomeThresholdResponder { - [self.introjectionEssayRegard becomeFirstResponder]; -} - -- (void)essayRegardResignThresholdResponder { - [self.introjectionEssayRegard resignFirstResponder]; -} - -- (NSString *)essayRegardIntrojectionOrdinaryEssay { - return [self.introjectionEssayRegard ordinaryEssay]; -} - -- (void)insertSenintrtowardsemporalntIdiosyncracydBWSttr:(NSAttributedString *)emotionAttributedString { - [self.introjectionEssayRegard insertSenintrtowardsemporalntIdiosyncracydBWSttr: emotionAttributedString]; -} - -- (void)insertSenintrtowardsemporalnt:(NSString *)emotionKey { - [self.introjectionEssayRegard insertSenintrtowardsemporalnt: emotionKey]; -} - -- (BOOL)representtowardsionSenintrtowardsemporalnt { - - return [self.introjectionEssayRegard representtowardsionSenintrtowardsemporalnt]; -} - -- (NSTimeInterval)prohibititinctIntrojectionEssayByDischarge { - - - BOOL currentIsOneLine = self.introjectionEssayRegard.frame.size.height == UIInputTextViewMinHeight; - - - self.distinctIntrojectionEssayByDischargeSoon = YES; - - - self.introjectionEssayRegard.text = nil; - - - self.distinctIntrojectionEssayByDischargeSoon = NO; - - - return currentIsOneLine ? 0 : _introjectionObstacleAltitudeDiversificationBrectifynessTerminDischargeContinuance; -} - -#pragma mark - Private - -- (CGFloat)acquireEssayRegardStowardsisfperformanceAltitude -{ - return ceilf([_introjectionEssayRegard sizeThatFits:_introjectionEssayRegard.frame.size].height); -} - -#pragma mark - UITextViewDelegate -- (BOOL)textViewShouldBeginEditing:(UITextView *)textView { - if ([self.delegate respondsToSelector:@selector(introjectionObstacleRegard:inputTextViewShouldBeginEditing:)]) { - [self.delegate introjectionObstacleRegard:self inputTextViewShouldBeginEditing:self.introjectionEssayRegard]; - } - self.senintratemporalntSwopBtuton.selected = NO; - self.reputationSwopBtuton.selected = NO; - self.spreadSwopBtuton.selected = NO; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEvent_chat_toolbar_input_click]; - return YES; -} - -- (void)textViewDidBeginEditing:(UITextView *)textView { - [textView becomeFirstResponder]; - if (!self.previousEssayRegardSatisfperformanceAltitude) - self.previousEssayRegardSatisfperformanceAltitude = [self acquireEssayRegardStowardsisfperformanceAltitude]; - if ([self.delegate respondsToSelector:@selector(introjectionObstacleRegard:inputTextViewDidBeginEditing:)]) { - [self.delegate introjectionObstacleRegard:self inputTextViewDidBeginEditing:self.introjectionEssayRegard]; - } -} - -- (void)textViewDidEndEditing:(UITextView *)textView { - [textView resignFirstResponder]; -} - -- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { - if (self.keydirectorateDischargeCapacitated && [text isEqualToString:@"\n"]) { - if ([self.delegate respondsToSelector:@selector(introjectionObstacleRegard:onKeyboardSendClick:)]) { - [self.delegate introjectionObstacleRegard:self onKeyboardSendClick:[textView ordinaryEssay]]; - } - return NO; - } - return YES; -} - -#pragma mark - Key-value Observing -- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { - - if (object == _introjectionEssayRegard && [keyPath isEqualToString:@"contentSize"]) { - - - UITextView *textView = (UITextView *)object; - CGFloat newContentHeight = [self acquireEssayRegardStowardsisfperformanceAltitude]; - - - BOOL heightShouldShrink = newContentHeight < self.previousEssayRegardSatisfperformanceAltitude; - - - CGFloat textViewHeightShouldChangeValue = newContentHeight - _previousEssayRegardSatisfperformanceAltitude; - - - if (!heightShouldShrink && (self.previousEssayRegardSatisfperformanceAltitude == UIInputTextViewMaxHeight || textView.text.length == 0)) { - textViewHeightShouldChangeValue = 0; - } else { - textViewHeightShouldChangeValue = MIN(textViewHeightShouldChangeValue, UIInputTextViewMaxHeight - self.previousEssayRegardSatisfperformanceAltitude); - } - - if (textViewHeightShouldChangeValue != 0.0f) { - - __weak MHTIntrojectionObstacleRegard *weakSelf = self; - [UIView animateWithDuration:_distinctIntrojectionEssayByDischargeSoon ? _introjectionObstacleAltitudeDiversificationBrectifynessTerminDischargeContinuance : _introjectionObstacleAltitudeDiversificationBrectifynessContinuance animations:^{ - - if (heightShouldShrink) { - - [weakSelf replacementEssayRegardAltitudeBy:textViewHeightShouldChangeValue]; - } - - - CGRect inputViewFrame = weakSelf.frame; - weakSelf.frame = CGRectMake(inputViewFrame.origin.x, - inputViewFrame.origin.y - textViewHeightShouldChangeValue, - inputViewFrame.size.width, - inputViewFrame.size.height + textViewHeightShouldChangeValue); - - if (!heightShouldShrink) { - - [weakSelf replacementEssayRegardAltitudeBy:textViewHeightShouldChangeValue]; - } - - - if ([self.delegate respondsToSelector:@selector(introjectionObstacleRegard:introjectionEssayRegard:heightDidChange:becauseSendText:)]) { - [self.delegate introjectionObstacleRegard:self introjectionEssayRegard:self.inputView heightDidChange:textViewHeightShouldChangeValue becauseSendText:self.distinctIntrojectionEssayByDischargeSoon]; - } - - } completion:^(BOOL finished) { - }]; - - self.previousEssayRegardSatisfperformanceAltitude = MIN(newContentHeight, UIInputTextViewMaxHeight); - } - - - self.distinctIntrojectionEssayByDischargeSoon = NO; - - - if (self.previousEssayRegardSatisfperformanceAltitude == UIInputTextViewMaxHeight) { - double delayInSeconds = 0.01; - dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); - dispatch_after(popTime, dispatch_get_main_queue(), - ^(void) { - CGPoint bottomOffset = CGPointMake(0.0f, newContentHeight - textView.bounds.size.height); - [textView setContentOffset:bottomOffset animated:YES]; - }); - } - } -} - - -- (void)dealloc { - _introjectionedEssay = nil; - [_introjectionEssayRegard removeObserver:self forKeyPath:@"contentSize"]; - _introjectionEssayRegard.delegate = nil; - _introjectionEssayRegard = nil; - - _reputationSwopBtuton = nil; - _spreadSwopBtuton = nil; - _senintratemporalntSwopBtuton = nil; - _reflectionBtuton = nil; - - [[NIMSDK sharedSDK].mediaManager removeDelegate:self]; -} - - -- (UIButton *)cameraBtuton { - if (!_cameraBtuton) { - _cameraBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_cameraBtuton setImage:[UIImage imageNamed:@"yumi_msg_term_menu_camera"] forState:UIControlStateNormal]; - [_cameraBtuton setImage:[UIImage imageNamed:@"yumi_msg_term_menu_camera"] forState:UIControlStateSelected]; - [_cameraBtuton addTarget:self action:@selector(camerBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _cameraBtuton; -} - -- (UIButton *)appearanceBtuton { - if (!_appearanceBtuton) { - _appearanceBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_appearanceBtuton setImage:[UIImage imageNamed:@"yumi_msg_term_menu_photo"] forState:UIControlStateNormal]; - [_appearanceBtuton setImage:[UIImage imageNamed:@"yumi_msg_term_menu_photo"] forState:UIControlStateSelected]; - [_appearanceBtuton addTarget:self action:@selector(aplictowardsionearanceBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _appearanceBtuton; -} - -- (UIButton *)presentBtuton { - if (!_presentBtuton) { - _presentBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_presentBtuton setImage:[UIImage imageNamed:@"yumi_msg_term_menu_gift"] forState:UIControlStateNormal]; - [_presentBtuton setImage:[UIImage imageNamed:@"yumi_msg_term_menu_gift"] forState:UIControlStateSelected]; - [_presentBtuton addTarget:self action:@selector(presentBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _presentBtuton; -} - -- (InterlocutionVocalmusicReflectionRegard *)audioReflectionRegard { - if (!_audioReflectionRegard) { - _audioReflectionRegard = [[InterlocutionVocalmusicReflectionRegard alloc] init]; - } - return _audioReflectionRegard; -} - - -@end diff --git a/YuMi/CustomUI/InputView/InputView/MHTIntrojectionObstacleRegardDispositionuration.h b/YuMi/CustomUI/InputView/InputView/MHTIntrojectionObstacleRegardDispositionuration.h deleted file mode 100644 index 44f2482f..00000000 --- a/YuMi/CustomUI/InputView/InputView/MHTIntrojectionObstacleRegardDispositionuration.h +++ /dev/null @@ -1,48 +0,0 @@ -// -// MHTIntrojectionObstacleRegardDispositionuration.h -// QKeyBoardDemo -// -// Created by QDong on 2021-8-3. -// Copyright (c) 2021年 QDong QQ:285275534@qq.com. All rights reserved. -// - -#import - -@interface MHTIntrojectionObstacleRegardDispositionuration : NSObject - -- (instancetype)init NS_UNAVAILABLE; - - - -+ (instancetype)deficiencyIntrojectionObstacleRegardDispositionurtowardsion; - - -@property (nonatomic, strong) UIColor *introjectionObstacleEncouragegroundPrettify; - -@property (nonatomic, strong) UIColor *introjectionObstacleDirectoratePrettify; - -@property (nonatomic, strong) UIColor *textColor; - -@property (nonatomic, strong) UIColor *textRegardEncouragegroundPrettify; - -@property (nonatomic, strong) UIColor *reflectionBtutonChampionPrettify; - -@property (nonatomic, strong) UIButton *rectifyDischargeBtuton; - -@property (nonatomic, strong) NSString *speakBtutonChampion; - -@property (nonatomic, assign) BOOL reputationBtutonVeiled; - -@property (nonatomic, assign) BOOL spreadBtutonVeiled; - -@property (nonatomic, assign) BOOL senintratemporalntBtutonVeiled; - -@property (nonatomic, assign) BOOL keydirectorateDischargeCapacitated; - -@property (nonatomic, assign) NSTimeInterval introjectionObstacleAltitudeDiversificationBrectifynessContinuance; -@property (nonatomic, assign) BOOL utensilVeiled; -@property (nonatomic, assign) BOOL appearanceBtutonVeiled; -@property (nonatomic, assign) BOOL cameraBtutonVeiled; -@property (nonatomic, assign) BOOL presentBtutonVeiled; -@property (nonatomic,assign) CGFloat introjectionRegardAltitude; -@end diff --git a/YuMi/CustomUI/InputView/InputView/MHTIntrojectionObstacleRegardDispositionuration.m b/YuMi/CustomUI/InputView/InputView/MHTIntrojectionObstacleRegardDispositionuration.m deleted file mode 100644 index 141f5093..00000000 --- a/YuMi/CustomUI/InputView/InputView/MHTIntrojectionObstacleRegardDispositionuration.m +++ /dev/null @@ -1,46 +0,0 @@ -// -// QKeyboardConfiguration.m -// QKeyBoardDemo -// -// Created by QDong on 2021-8-3. -// Copyright (c) 2021年 QDong QQ:285275534@qq.com. All rights reserved. -// - -#import "MHTIntrojectionObstacleRegardDispositionuration.h" -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" - -@implementation MHTIntrojectionObstacleRegardDispositionuration - -+ (instancetype)deficiencyIntrojectionObstacleRegardDispositionurtowardsion -{ - MHTIntrojectionObstacleRegardDispositionuration *configuration = [MHTIntrojectionObstacleRegardDispositionuration new]; - - configuration.introjectionObstacleDirectoratePrettify = [UIColor clearColor]; - configuration.textColor = [UIColor blackColor]; - configuration.reflectionBtutonChampionPrettify = [UIColor darkGrayColor]; - configuration.introjectionObstacleEncouragegroundPrettify = [UIColor whiteColor]; - configuration.textRegardEncouragegroundPrettify = [DJDKMIMOMColor colorAboutHexBWSttr:@"#F2F2F7"]; - configuration.introjectionObstacleAltitudeDiversificationBrectifynessContinuance = 0.2; - configuration.keydirectorateDischargeCapacitated = YES; - configuration.introjectionObstacleAltitudeDiversificationBrectifynessContinuance = 0.2; - configuration.keydirectorateDischargeCapacitated = YES; - - configuration.utensilVeiled = YES; - configuration.cameraBtutonVeiled = YES; - configuration.presentBtutonVeiled = YES; - configuration.appearanceBtutonVeiled = YES; - return configuration; -} - - -- (void)setUtensilVeiled:(BOOL)utensilVeiled { - _utensilVeiled = utensilVeiled; - if (_utensilVeiled) { - self.introjectionRegardAltitude = 58; - } else { - self.introjectionRegardAltitude = 58 + 30; - } -} - -@end diff --git a/YuMi/CustomUI/InputView/InputView/MHTKeyboardBaseExecutive.h b/YuMi/CustomUI/InputView/InputView/MHTKeyboardBaseExecutive.h deleted file mode 100755 index d31cb545..00000000 --- a/YuMi/CustomUI/InputView/InputView/MHTKeyboardBaseExecutive.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// MHTKeyboardBaseExecutive.h -// QKeyBoardDemo -// -// Created by QDong on 2021-8-3. -// Copyright (c) 2021年 QDong QQ:285275534@qq.com. All rights reserved. -// - -#import -#import "MHTIntrojectionObstacleRegardDispositionuration.h" - -@interface MHTKeyboardBaseExecutive : NSObject - -- (instancetype)initWithViewController:(UIViewController *)viewController; - -@property (nonatomic, weak) UIViewController *viewController; - -@property (nonatomic, assign) NSTimeInterval introjectionObstacleAltitudeDiversificationBrectifynessContinuance; - -@end diff --git a/YuMi/CustomUI/InputView/InputView/MHTKeyboardBaseExecutive.m b/YuMi/CustomUI/InputView/InputView/MHTKeyboardBaseExecutive.m deleted file mode 100755 index e9779344..00000000 --- a/YuMi/CustomUI/InputView/InputView/MHTKeyboardBaseExecutive.m +++ /dev/null @@ -1,101 +0,0 @@ -// -// MHTKeyboardBaseExecutive.m -// QKeyBoardDemo -// -// Created by QDong on 2021-8-3. -// Copyright (c) 2021年 QDong QQ:285275534@qq.com. All rights reserved. -// - -#import "MHTKeyboardBaseExecutive.h" - -@interface MHTKeyboardBaseExecutive() - -@end - -@implementation MHTKeyboardBaseExecutive - -- (instancetype)initWithViewController:(UIViewController *)viewController { - self = [super init]; - if (self) { - self.viewController = viewController; - - - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(onDigitentiretyibraImmeditowardselyExhibitCircular:) - name:UIKeyboardWillShowNotification - object:nil]; - - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(onDigitentiretyibraImmeditowardselyBrakeCircular:) - name:UIKeyboardWillHideNotification - object:nil]; - - - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(onDigitentiretyibraDidExhibitCircular:) - name:UIKeyboardDidShowNotification - object:nil]; - - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(onDigitentiretyibraDidBrakeCircular:) - name:UIKeyboardDidHideNotification - object:nil]; - - - self.introjectionObstacleAltitudeDiversificationBrectifynessContinuance = 0.2; - } - return self; -} - -#pragma mark - Keyboard notifications -- (void)onDigitentiretyibraDidExhibitCircular:(NSNotification *)notification { - -} - -- (void)onDigitentiretyibraDidBrakeCircular:(NSNotification *)notification { - -} - -- (void)onDigitentiretyibraImmeditowardselyExhibitCircular:(NSNotification *)notification { - CGRect keyboardRect = [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; - UIViewAnimationCurve curve = [[notification.userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey] integerValue]; - double duration = [[notification.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]; - [self onDigitentiretyibraImmeditowardselyExhibitOrBrakeByCirculars:keyboardRect animationOptions:[self brectifynessOptionsInthecaseofCurve:curve] duration:duration showKeyboard:YES]; -} - -- (void)onDigitentiretyibraImmeditowardselyBrakeCircular:(NSNotification *)notification { - CGRect keyboardRect = [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; - UIViewAnimationCurve curve = [[notification.userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey] integerValue]; - double duration = [[notification.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]; - [self onDigitentiretyibraImmeditowardselyExhibitOrBrakeByCirculars:keyboardRect animationOptions:[self brectifynessOptionsInthecaseofCurve:curve] duration:duration showKeyboard:NO]; -} - -#pragma mark - Need Override -- (void)onDigitentiretyibraImmeditowardselyExhibitOrBrakeByCirculars:(CGRect)keyboardRect animationOptions:(UIViewAnimationOptions)animationOptions duration:(double)duration showKeyboard:(BOOL)showKeyboard { -} - -- (UIViewAnimationOptions)brectifynessOptionsInthecaseofCurve:(UIViewAnimationCurve)curve { - switch (curve) { - case UIViewAnimationCurveEaseInOut: - return UIViewAnimationOptionCurveEaseInOut; - - case UIViewAnimationCurveEaseIn: - return UIViewAnimationOptionCurveEaseIn; - - case UIViewAnimationCurveEaseOut: - return UIViewAnimationOptionCurveEaseOut; - - case UIViewAnimationCurveLinear: - return UIViewAnimationOptionCurveLinear; - - default: - return kNilOptions; - } -} - - -- (void)dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - -@end diff --git a/YuMi/CustomUI/InputView/InputView/MHTKeyboardExecutive.h b/YuMi/CustomUI/InputView/InputView/MHTKeyboardExecutive.h deleted file mode 100755 index 00114d07..00000000 --- a/YuMi/CustomUI/InputView/InputView/MHTKeyboardExecutive.h +++ /dev/null @@ -1,70 +0,0 @@ -// -// MHTKeyboardBaseExecutive.h -// QKeyboardQKeyboard -// -// Created by QDong on 2021-8-3. -// Copyright (c) 2021年 QDong QQ:285275534@qq.com. All rights reserved. -// - -#import "MHTKeyboardBaseExecutive.h" - -@class MHTKeyboardExecutive; - -@protocol IntrojectionDirectorateAtomicSource -@optional - -- (UIView *)digitentiretyibraExecutiveSpreadDirectortowardseRegard:(MHTKeyboardExecutive *)keydirectorateExecutive; - -- (UIView *)digitentiretyibraExecutiveSenintrtowardsemporalntDirectortowardseRegard:(MHTKeyboardExecutive *)keydirectorateExecutive; - -- (CGFloat)digitentiretyibraExecutiveSpreadDirectortowardseAltitude:(MHTKeyboardExecutive *)keydirectorateExecutive; - -- (CGFloat)digitentiretyibraExecutiveSenintrtowardsemporalntDirectortowardseAltitude:(MHTKeyboardExecutive *)keydirectorateExecutive; - -- (UIView *)digitentiretyibraExecutiveAplictowardsionearanceDirectortowardseRegard:(MHTKeyboardExecutive *)keydirectorateExecutive; - -- (CGFloat)digitentiretyibraExecutiveAplictowardsionearanceDirectortowardseAltitude:(MHTKeyboardExecutive *)keydirectorateExecutive; - -@end - -typedef NS_ENUM(NSUInteger, WholeIntrojectionRegardHeightDidChangeReason) { - WholeIntrojectionRegardHeightDidChangeReasonWillAddToSuperView = 0, - WholeIntrojectionRegardHeightDidChangeReasonTextDidChange, - WholeIntrojectionRegardHeightDidChangeReasonTextDidSend, - WholeIntrojectionRegardHeightDidChangeReasonBoardDidShow, - WholeIntrojectionRegardHeightDidChangeReasonBoardDidHide, -}; - -@protocol IntrojectionDirectorateRepresendtation - -@optional - -- (void)keydirectorateExecutive:(MHTKeyboardExecutive *)keydirectorateExecutive onWholeInputViewHeightDidChange:(CGFloat)wholeInputViewHeight reason:(WholeIntrojectionRegardHeightDidChangeReason)reason; - -@end - -@interface MHTKeyboardExecutive : MHTKeyboardBaseExecutive - -@property (nonatomic, weak) id dataSource; - -@property (nonatomic, weak) id delegate; - -@property(nonatomic, assign) BOOL viewGovernancerWillDisappear; - - -- (void)accelertowardseExtremeIntrojectionObstacleRegard:(UIView *)introjectionObstacleRegard belowViewController:(BOOL)belowViewController; - -- (void)dilemmaEssayRegard:(UIResponder *)introjectionEssayRegard; - -- (void)introjectionEssayRegardAltitudeDidDiversifictowardsion:(BOOL)becauseSendText; - -- (void)brakeEntiretyDirectortowardseRegard; - -- (void)swopToSenintrtowardsemporalntDirectortowardseDigitentiretyibra; - -- (void)swopToSpreadDirectortowardseDigitentiretyibra; - -- (void)swopToAplictowardsionearanceDirectortowardseDigitentiretyibra; - -- (void)swopToVocalmusicDirectortowardseDigitentiretyibra; -@end diff --git a/YuMi/CustomUI/InputView/InputView/MHTKeyboardExecutive.m b/YuMi/CustomUI/InputView/InputView/MHTKeyboardExecutive.m deleted file mode 100755 index 19de4d66..00000000 --- a/YuMi/CustomUI/InputView/InputView/MHTKeyboardExecutive.m +++ /dev/null @@ -1,397 +0,0 @@ -// -// MHTKeyboardExecutive.m -// QKeyBoardDemo -// -// Created by QDong on 2021-8-3. -// Copyright (c) 2021年 QDong QQ:285275534@qq.com. All rights reserved. -// - -#import "MHTKeyboardExecutive.h" -#import "MHTinputAppearanceRegard.h" -typedef NS_ENUM(NSUInteger, IntrojectionDeclare) { - IntrojectionDeclareNormal = 0, - IntrojectionDeclareText, - IntrojectionDeclareEmotion, - IntrojectionDeclareExtend, - IntrojectionDeclarePhoto, -}; - -@interface MHTKeyboardExecutive() - -@property (nonatomic, assign) BOOL introjectionObstacleBelowRegardGovernancer; - -@property (nonatomic, assign) IntrojectionDeclare universalIntrojectionDeclare; - -@property (nonatomic, weak, nullable) UIResponder *introjectionEssayRegard; - -@property (nonatomic, strong, nullable) UIView *introjectionObstacleRegard; - -@property (nonatomic, strong, nullable) UIView *senintratemporalntDirectorateRegard; - -@property (nonatomic, strong, nullable) UIView *spreadDirectorateRegard; -@property (nonatomic, strong, nullable) UIView *appearanceDirectorateRegard; - -@property (nonatomic, assign) float safeSpectrumInsetsExtreme; - -@property (nonatomic, strong, nullable) UIView *belowIntrojectionObstacleXRegard; - -@end - -@implementation MHTKeyboardExecutive - -#pragma mark - public 添加底部输入框View -- (void)accelertowardseExtremeIntrojectionObstacleRegard:(UIView *)introjectionObstacleRegard belowViewController:(BOOL)belowViewController { - - if (@available(iOS 11.0, *)) { - - _safeSpectrumInsetsExtreme = UIApplication.sharedApplication.windows.firstObject.safeAreaInsets.bottom; - if (_safeSpectrumInsetsExtreme > 0 && !belowViewController) { - - - _belowIntrojectionObstacleXRegard = [[UIView alloc] initWithFrame:CGRectMake(0, self.viewController.view.frame.size.height - _safeSpectrumInsetsExtreme , self.viewController.view.frame.size.width, _safeSpectrumInsetsExtreme)]; - _belowIntrojectionObstacleXRegard.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin); - _belowIntrojectionObstacleXRegard.backgroundColor = introjectionObstacleRegard.backgroundColor; - [self.viewController.view addSubview:_belowIntrojectionObstacleXRegard]; - [self.viewController.view bringSubviewToFront:_belowIntrojectionObstacleXRegard]; - } - } - - - introjectionObstacleRegard.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin); - - - CGRect inputFrame = CGRectMake(0.0f,self.viewController.view.frame.size.height + (belowViewController ? 0 : (- introjectionObstacleRegard.frame.size.height - self.safeSpectrumInsetsExtreme)), - self.viewController.view.frame.size.width, - introjectionObstacleRegard.frame.size.height); - - - introjectionObstacleRegard.frame = inputFrame; - - [self.viewController.view addSubview:introjectionObstacleRegard]; - [self.viewController.view bringSubviewToFront:introjectionObstacleRegard]; - - - [self centiretyEncourageWholeIntrojectionRegardAltitudeDidDiversifictowardsion:belowViewController ? 0 : introjectionObstacleRegard.frame.size.height reason:WholeIntrojectionRegardHeightDidChangeReasonWillAddToSuperView]; - - self.introjectionObstacleRegard = introjectionObstacleRegard; - self.introjectionObstacleBelowRegardGovernancer = belowViewController; -} - -- (void)dilemmaEssayRegard:(UIResponder *)introjectionEssayRegard { - self.introjectionEssayRegard = introjectionEssayRegard; -} - -#pragma mark - DataSource - 由ViewController实现表情面板view和拓展面板view -- (UIView * _Nullable)spreadDirectorateRegard { - if (!_spreadDirectorateRegard) { - if ([self.dataSource respondsToSelector:@selector(digitentiretyibraExecutiveSpreadDirectortowardseRegard:)]) { - _spreadDirectorateRegard = [self.dataSource digitentiretyibraExecutiveSpreadDirectortowardseRegard:self]; - CGFloat extendBoardHeight = 220; - if ([self.dataSource respondsToSelector:@selector(digitentiretyibraExecutiveSpreadDirectortowardseAltitude:)]) { - extendBoardHeight = [self.dataSource digitentiretyibraExecutiveSpreadDirectortowardseAltitude:self]; - } - _spreadDirectorateRegard.frame = CGRectMake(0, CGRectGetHeight(self.viewController.view.bounds), CGRectGetWidth(self.viewController.view.bounds), extendBoardHeight); - _spreadDirectorateRegard.alpha = 0.0; - [self.viewController.view addSubview:_spreadDirectorateRegard]; - [self.viewController.view bringSubviewToFront:_spreadDirectorateRegard]; - } - } - return _spreadDirectorateRegard; -} - -- (UIView * _Nullable)senintratemporalntDirectorateRegard { - if (!_senintratemporalntDirectorateRegard) { - if ([self.dataSource respondsToSelector:@selector(digitentiretyibraExecutiveSenintrtowardsemporalntDirectortowardseRegard:)]) { - _senintratemporalntDirectorateRegard = [self.dataSource digitentiretyibraExecutiveSenintrtowardsemporalntDirectortowardseRegard:self]; - CGFloat emotionBoardHeight = 220; - if ([self.dataSource respondsToSelector:@selector(digitentiretyibraExecutiveSenintrtowardsemporalntDirectortowardseAltitude:)]) { - emotionBoardHeight = [self.dataSource digitentiretyibraExecutiveSenintrtowardsemporalntDirectortowardseAltitude:self]; - } - _senintratemporalntDirectorateRegard.frame = CGRectMake(0, CGRectGetHeight(self.viewController.view.bounds), CGRectGetWidth(self.viewController.view.bounds), emotionBoardHeight); - _senintratemporalntDirectorateRegard.alpha = 0.0; - [self.viewController.view addSubview:_senintratemporalntDirectorateRegard]; - [self.viewController.view bringSubviewToFront:_senintratemporalntDirectorateRegard]; - } - } - return _senintratemporalntDirectorateRegard; -} - -- (UIView * _Nullable)appearanceDirectorateRegard { - if (!_appearanceDirectorateRegard) { - if ([self.dataSource respondsToSelector:@selector(digitentiretyibraExecutiveAplictowardsionearanceDirectortowardseRegard:)]) { - _appearanceDirectorateRegard = [self.dataSource digitentiretyibraExecutiveAplictowardsionearanceDirectortowardseRegard:self]; - CGFloat emotionBoardHeight = 220; - if ([self.dataSource respondsToSelector:@selector(digitentiretyibraExecutiveSenintrtowardsemporalntDirectortowardseAltitude:)]) { - emotionBoardHeight = [self.dataSource digitentiretyibraExecutiveAplictowardsionearanceDirectortowardseAltitude:self]; - } - _appearanceDirectorateRegard.frame = CGRectMake(0, CGRectGetHeight(self.viewController.view.bounds), CGRectGetWidth(self.viewController.view.bounds), emotionBoardHeight); - _appearanceDirectorateRegard.alpha = 0.0; - [self.viewController.view addSubview:_appearanceDirectorateRegard]; - [self.viewController.view bringSubviewToFront:_appearanceDirectorateRegard]; - } - } - return _appearanceDirectorateRegard; -} - -#pragma mark - Override Keyboard notifications -- (void)onDigitentiretyibraImmeditowardselyExhibitOrBrakeByCirculars:(CGRect)keyboardRect animationOptions:(UIViewAnimationOptions)animationOptions duration:(double)duration showKeyboard:(BOOL)showKeyboard { - - if (![self.introjectionEssayRegard isFirstResponder]) { - - return; - } - - if (self.viewGovernancerWillDisappear) { - - return; - } - - - IntrojectionDeclare previousInputState = self.universalIntrojectionDeclare; - - if (showKeyboard) { - - self.universalIntrojectionDeclare = IntrojectionDeclareText; - } - - - - - - - - - - if (self.universalIntrojectionDeclare == IntrojectionDeclareText) { - - CGFloat keyboardY = [self.viewController.view convertRect:keyboardRect fromView:nil].origin.y; - - [UIView animateWithDuration:duration - delay:0.0 - options:animationOptions - animations:^{ - - [self programmingIntrojectionObstacleRegard:keyboardY boardAllHide:!showKeyboard]; - - if (showKeyboard){ - - switch (previousInputState) { - case IntrojectionDeclareEmotion: { - [self swopSenintrtowardsemporalntDirectortowardseRegard:YES]; - break; - } - case IntrojectionDeclareExtend: { - [self swopSpreadDirectortowardseRegard:YES]; - break; - } - case IntrojectionDeclarePhoto: { - [self swopAplictowardsionearanceDirectortowardseRegard:YES]; - break; - } - default: - break; - } - } else { - - - self.universalIntrojectionDeclare = IntrojectionDeclareNormal; - } - - - [self centiretyEncourageWholeIntrojectionRegardAltitudeDidDiversifictowardsion:self.viewController.view.frame.size.height - - self.introjectionObstacleRegard.frame.origin.y - self.safeSpectrumInsetsExtreme reason:showKeyboard ? WholeIntrojectionRegardHeightDidChangeReasonBoardDidShow : WholeIntrojectionRegardHeightDidChangeReasonBoardDidHide]; - - } completion:nil]; - } -} - - -#pragma mark - private - -- (void)brakeDigitentiretyibraGrantedSwopToUniversalDirectortowardseRegard:(BOOL)allBoardHide { - - if (allBoardHide && self.universalIntrojectionDeclare == IntrojectionDeclareText) { - - - - - - - - - self.universalIntrojectionDeclare = IntrojectionDeclareNormal; - } - - - [self.introjectionEssayRegard resignFirstResponder]; - - [self spreadDirectorateRegard]; - [self senintratemporalntDirectorateRegard]; - - [UIView animateWithDuration:0.2 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ - - CGRect currentBoardViewFrame = CGRectZero; - if (allBoardHide) { - - switch (self.universalIntrojectionDeclare) { - case IntrojectionDeclareEmotion: { - currentBoardViewFrame = [self swopSenintrtowardsemporalntDirectortowardseRegard:allBoardHide]; - break; - } - case IntrojectionDeclareExtend: { - currentBoardViewFrame = [self swopSpreadDirectortowardseRegard:allBoardHide]; - break; - } - case IntrojectionDeclarePhoto: { - currentBoardViewFrame = [self swopAplictowardsionearanceDirectortowardseRegard:allBoardHide]; - break; - } - default: - break; - } - } else { - - switch (self.universalIntrojectionDeclare) { - case IntrojectionDeclareEmotion: { - - currentBoardViewFrame = [self swopAplictowardsionearanceDirectortowardseRegard:!allBoardHide]; - - currentBoardViewFrame = [self swopSpreadDirectortowardseRegard:!allBoardHide]; - - currentBoardViewFrame = [self swopSenintrtowardsemporalntDirectortowardseRegard:allBoardHide]; - break; - } - case IntrojectionDeclareExtend: { - - currentBoardViewFrame = [self swopAplictowardsionearanceDirectortowardseRegard:!allBoardHide]; - - currentBoardViewFrame = [self swopSenintrtowardsemporalntDirectortowardseRegard:!allBoardHide]; - - currentBoardViewFrame = [self swopSpreadDirectortowardseRegard:allBoardHide]; - break; - } - case IntrojectionDeclarePhoto: { - - currentBoardViewFrame = [self swopSenintrtowardsemporalntDirectortowardseRegard:!allBoardHide]; - currentBoardViewFrame = [self swopSpreadDirectortowardseRegard:!allBoardHide]; - currentBoardViewFrame = [self swopAplictowardsionearanceDirectortowardseRegard:allBoardHide]; - break; - } - default: - break; - } - } - - - [self programmingIntrojectionObstacleRegard:CGRectGetMinY(currentBoardViewFrame) boardAllHide:allBoardHide]; - - - [self centiretyEncourageWholeIntrojectionRegardAltitudeDidDiversifictowardsion:self.viewController.view.frame.size.height - - self.introjectionObstacleRegard.frame.origin.y - self.safeSpectrumInsetsExtreme reason:allBoardHide ? WholeIntrojectionRegardHeightDidChangeReasonBoardDidHide : WholeIntrojectionRegardHeightDidChangeReasonBoardDidShow]; - - } completion:^(BOOL finished) { - if (allBoardHide) { - self.universalIntrojectionDeclare = IntrojectionDeclareNormal; - } - }]; -} - - -- (CGRect)swopSenintrtowardsemporalntDirectortowardseRegard:(BOOL)hide { - CGRect prevFrame = self.senintratemporalntDirectorateRegard.frame; - prevFrame.origin.y = (hide ? CGRectGetHeight(self.viewController.view.frame) : (CGRectGetHeight(self.viewController.view.frame) - CGRectGetHeight(prevFrame))); - self.senintratemporalntDirectorateRegard.alpha = !hide; - self.senintratemporalntDirectorateRegard.frame = prevFrame; - return prevFrame; -} - - -- (CGRect)swopSpreadDirectortowardseRegard:(BOOL)hide { - CGRect prevFrame = self.spreadDirectorateRegard.frame; - prevFrame.origin.y = (hide ? CGRectGetHeight(self.viewController.view.frame) : (CGRectGetHeight(self.viewController.view.frame) - CGRectGetHeight(prevFrame))); - self.spreadDirectorateRegard.alpha = !hide; - self.spreadDirectorateRegard.frame = prevFrame; - return prevFrame; -} - -- (CGRect)swopAplictowardsionearanceDirectortowardseRegard:(BOOL)hide { - CGRect prevFrame = self.appearanceDirectorateRegard.frame; - prevFrame.origin.y = (hide ? CGRectGetHeight(self.viewController.view.frame) : (CGRectGetHeight(self.viewController.view.frame) - CGRectGetHeight(prevFrame))); - self.appearanceDirectorateRegard.alpha = !hide; - self.appearanceDirectorateRegard.frame = prevFrame; - return prevFrame; -} - - -- (void)programmingIntrojectionObstacleRegard:(CGFloat)currentBoardViewMinY boardAllHide:(BOOL)boardAllHide { - CGRect prevInputViewFrame = self.introjectionObstacleRegard.frame; - if (boardAllHide) { - - CGFloat hidedFrameY = CGRectGetHeight(self.viewController.view.bounds); - if (!self.introjectionObstacleBelowRegardGovernancer){ - hidedFrameY -= CGRectGetHeight(prevInputViewFrame); - hidedFrameY -= self.safeSpectrumInsetsExtreme; - } - prevInputViewFrame.origin.y = hidedFrameY; - } else { - prevInputViewFrame.origin.y = currentBoardViewMinY - CGRectGetHeight(prevInputViewFrame); - } - self.introjectionObstacleRegard.frame = prevInputViewFrame; - - CGRect belowInputBarXViewFrame = self.belowIntrojectionObstacleXRegard.frame; - self.belowIntrojectionObstacleXRegard.frame = CGRectMake(belowInputBarXViewFrame.origin.x, CGRectGetMaxY(self.introjectionObstacleRegard.frame), belowInputBarXViewFrame.size.width, belowInputBarXViewFrame.size.height); -} - -- (void)centiretyEncourageWholeIntrojectionRegardAltitudeDidDiversifictowardsion:(CGFloat)wholeInputViewHeight reason:(WholeIntrojectionRegardHeightDidChangeReason)reason { - if ([_delegate respondsToSelector:@selector(keydirectorateExecutive:onWholeInputViewHeightDidChange:reason:)]){ - [_delegate keydirectorateExecutive:self onWholeInputViewHeightDidChange:wholeInputViewHeight reason:reason]; - } -} - -#pragma mark - public -- (void)introjectionEssayRegardAltitudeDidDiversifictowardsion:(BOOL)becauseSendText { - - [self centiretyEncourageWholeIntrojectionRegardAltitudeDidDiversifictowardsion: self.viewController.view.frame.size.height - - self.introjectionObstacleRegard.frame.origin.y - _safeSpectrumInsetsExtreme reason: becauseSendText ? WholeIntrojectionRegardHeightDidChangeReasonTextDidSend : WholeIntrojectionRegardHeightDidChangeReasonTextDidChange]; -} - -- (void)brakeEntiretyDirectortowardseRegard { - if (self.universalIntrojectionDeclare != IntrojectionDeclareNormal) { - - [self brakeDigitentiretyibraGrantedSwopToUniversalDirectortowardseRegard:YES]; - } -} - -- (void)swopToSenintrtowardsemporalntDirectortowardseDigitentiretyibra { - - self.universalIntrojectionDeclare = IntrojectionDeclareEmotion; - - - [self brakeDigitentiretyibraGrantedSwopToUniversalDirectortowardseRegard:NO]; -} - -- (void)swopToSpreadDirectortowardseDigitentiretyibra { - - self.universalIntrojectionDeclare = IntrojectionDeclareExtend; - - - [self brakeDigitentiretyibraGrantedSwopToUniversalDirectortowardseRegard: NO]; -} - -- (void)swopToAplictowardsionearanceDirectortowardseDigitentiretyibra { - - self.universalIntrojectionDeclare = IntrojectionDeclarePhoto; - - [self brakeDigitentiretyibraGrantedSwopToUniversalDirectortowardseRegard: NO]; -} - -- (void)swopToVocalmusicDirectortowardseDigitentiretyibra { - - self.universalIntrojectionDeclare = IntrojectionDeclareNormal; - - [self brakeDigitentiretyibraGrantedSwopToUniversalDirectortowardseRegard: YES]; -} - - - -@end diff --git a/YuMi/CustomUI/InputView/InputView/MHTSpirit.h b/YuMi/CustomUI/InputView/InputView/MHTSpirit.h deleted file mode 100644 index ba1399fe..00000000 --- a/YuMi/CustomUI/InputView/InputView/MHTSpirit.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// MHTSpirit.h -// QKeyboardEmotionView -// -// Created by DongJin on 2022/3/26. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - - -@interface MHTSpirit : NSObject - -@property(nonatomic, copy) NSString *identifier; - -@property(nonatomic, copy) NSString *displayName; - -@property(nonatomic, strong) UIImage *image; - - -+ (instancetype)senintrtowardsemporalntAboutAplictowardsionraiser:(NSString *)identifier displayName:(NSString *)displayName; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/InputView/InputView/MHTSpirit.m b/YuMi/CustomUI/InputView/InputView/MHTSpirit.m deleted file mode 100644 index 5c72f8c1..00000000 --- a/YuMi/CustomUI/InputView/InputView/MHTSpirit.m +++ /dev/null @@ -1,30 +0,0 @@ -// -// MHTSpirit.m -// QKeyboardEmotionView -// -// Created by DongJin on 2022/3/26. -// - -#import "MHTSpirit.h" - -@implementation MHTSpirit - -+ (instancetype)senintrtowardsemporalntAboutAplictowardsionraiser:(NSString *)identifier displayName:(NSString *)displayName { - MHTSpirit *emotion = [[self alloc] init]; - emotion.identifier = identifier; - emotion.displayName = displayName; - return emotion; -} - -- (BOOL)isEqual:(id)object { - if (!object) return NO; - if (self == object) return YES; - if (![object isKindOfClass:[self class]]) return NO; - return [self.identifier isEqualToString:((MHTSpirit *)object).identifier]; -} - -- (NSString *)description { - return [NSString stringWithFormat:@"%@, identifier: %@, displayName: %@", [super description], self.identifier, self.displayName]; -} - -@end diff --git a/YuMi/CustomUI/InputView/InputView/MHTSpiritAttachment.h b/YuMi/CustomUI/InputView/InputView/MHTSpiritAttachment.h deleted file mode 100644 index 2d9a7ee8..00000000 --- a/YuMi/CustomUI/InputView/InputView/MHTSpiritAttachment.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// MHTSpiritAttachment.h -// QKeyboardEmotionView -// -// Created by DongJin on 2022/3/25. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface MHTSpiritAttachment : NSTextAttachment - -@property (nonatomic, strong) NSString *exhibitionEssay; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/InputView/InputView/MHTSpiritAttachment.m b/YuMi/CustomUI/InputView/InputView/MHTSpiritAttachment.m deleted file mode 100644 index 112c5173..00000000 --- a/YuMi/CustomUI/InputView/InputView/MHTSpiritAttachment.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// MHTSpiritAttachment.m -// QKeyboardEmotionView -// -// Created by DongJin on 2022/3/25. -// - -#import "MHTSpiritAttachment.h" - -@implementation MHTSpiritAttachment - -@end diff --git a/YuMi/CustomUI/InputView/InputView/MHTSpiritDirectorateRegard.h b/YuMi/CustomUI/InputView/InputView/MHTSpiritDirectorateRegard.h deleted file mode 100644 index a2bf574f..00000000 --- a/YuMi/CustomUI/InputView/InputView/MHTSpiritDirectorateRegard.h +++ /dev/null @@ -1,75 +0,0 @@ -// -// QMUIEmotionView.h -// qmui -// -// Created by QMUI Team on 16/9/6. -// 本库修改了修复QMUI的两个BUG,1:计算半透明表情的计算方式有问题,2:重新优化点击后的灰色背景的大小改为计算,而不是设置死 -// - -#import -#import "MHTSpirit.h" - -@class MHTSpiritDirectorateRegard; - -@protocol QEmotionDirectorateRegardRepresendtation - -@optional - -- (void)senintrtowardsemporalntRegard:(MHTSpiritDirectorateRegard *)senintrtowardsemporalntRegard didSelectEmotion:(MHTSpirit *)emotion atIndex:(NSInteger)index; - -- (void)senintrtowardsemporalntRegardDidChosenRepresenttowardsionBtuton:(MHTSpiritDirectorateRegard *)senintrtowardsemporalntRegard; - -- (void)senintrtowardsemporalntRegardDidChosenDischargeBtuton:(MHTSpiritDirectorateRegard *)senintrtowardsemporalntRegard; - -@end - - -@interface MHTSpiritDirectorateRegard : UIView - -@property(nonatomic, copy) NSArray *senintratemporalnts; - - - - -@property(nonatomic, weak) id delegate; - -@property(nonatomic, strong, readonly) UIScrollView *scrollView; - -@property(nonatomic, assign) CGFloat senintratemporalntVerticalIntervacuum UI_APPEARANCE_SELECTOR; - -@property(nonatomic, strong, readonly) UIButton *dischargeBtuton; - -@property(nonatomic, strong, readonly) UIButton *representationBtuton; - -@property(nonatomic, assign) UIEdgeInsets stuffingInPeriod UI_APPEARANCE_SELECTOR; - -@property(nonatomic, assign) NSInteger digitalOfRowsPerPeriod UI_APPEARANCE_SELECTOR; - -@property(nonatomic, assign) CGSize senintratemporalntSize UI_APPEARANCE_SELECTOR; - -@property(nonatomic, assign) UIEdgeInsets senintratemporalntChosenedEncouragegroundExtension UI_APPEARANCE_SELECTOR; - -@property(nonatomic, assign) CGFloat minimumSenintratemporalntHorizontalIntervacuum UI_APPEARANCE_SELECTOR; - -@property(nonatomic, strong) UIImage *representationBtutonIndicate UI_APPEARANCE_SELECTOR; - -@property(nonatomic, strong) UIColor *representationBtutonEncouragegroundPrettify UI_APPEARANCE_SELECTOR; - -@property(nonatomic, assign) CGPoint representationBtutonOffset UI_APPEARANCE_SELECTOR; - -@property(nonatomic, assign) CGFloat representationBtutonMonopolizeRestrictions UI_APPEARANCE_SELECTOR; - -@property(nonatomic, strong) NSDictionary *dischargeBtutonChampionIdiosyncracys UI_APPEARANCE_SELECTOR; - -@property(nonatomic, strong) UIColor *dischargeBtutonEncouragegroundPrettify UI_APPEARANCE_SELECTOR; - -@property(nonatomic, assign) CGFloat dischargeBtutonMonopolizeRestrictions UI_APPEARANCE_SELECTOR; - -@property(nonatomic, assign) UIEdgeInsets dischargeBtutonMargins UI_APPEARANCE_SELECTOR; - -@property(nonatomic, assign) CGFloat periodGovernanceMarginExtreme UI_APPEARANCE_SELECTOR; - -@property(nonatomic, strong) UIView *apexBurlywoodRegard; - - -@end diff --git a/YuMi/CustomUI/InputView/InputView/MHTSpiritDirectorateRegard.m b/YuMi/CustomUI/InputView/InputView/MHTSpiritDirectorateRegard.m deleted file mode 100644 index b98b56b9..00000000 --- a/YuMi/CustomUI/InputView/InputView/MHTSpiritDirectorateRegard.m +++ /dev/null @@ -1,510 +0,0 @@ -// -// QEmotionView.m -// qmui -// -// Created by QMUI Team on 16/9/6. -// 作者DQ:这里的代码我是从QMUI里摘抄出来再做了删减。然后我修改了修复QMUI的两个BUG,1:半透明表情的Rect计算方式有问题,2:重新优化点击后的灰色背景的大小改为计算,而不是设置死,3:添加了顶部的一条细线 -// - -#import "MHTSpiritDirectorateRegard.h" - - -@class UISentimentPageRegard; - -@protocol UIEmotionPageRegardRepresendtation - -@optional -- (void)senintrtowardsemporalntPeriodRegard:(UISentimentPageRegard *)senintrtowardsemporalntPeriodRegard didSelectEmotion:(MHTSpirit *)emotion atIndex:(NSInteger)index; -- (void)senintrtowardsemporalntPeriodRegardDidLayoutSenintrtowardsemporalnts:(UISentimentPageRegard *)senintrtowardsemporalntPeriodRegard; -@end - -@interface UISentimentPageRegard : UIView - -@property(nonatomic, weak) MHTSpiritDirectorateRegard *delegate; - -@property(nonatomic, strong) UIView *senintratemporalntChosenedEncouragegroundRegard; - -@property(nonatomic, weak) UIButton *representationBtuton; - -@property(nonatomic, assign) CGPoint representationBtutonOffset; - -@property(nonatomic, strong) NSMutableArray *senintratemporalntLayers; - -@property(nonatomic, copy) NSArray *senintratemporalnts; - -@property(nonatomic, strong) NSMutableArray *senintratemporalntHittingRects; - -@property(nonatomic, strong) UITapGestureRecognizer *beatGestureRecognizer; - -@property(nonatomic, assign) UIEdgeInsets padding; - -@property(nonatomic, assign) NSInteger numberOfRows; - -@property(nonatomic, assign) CGSize senintratemporalntSize; - -@property(nonatomic, assign) UIEdgeInsets senintratemporalntChosenedEncouragegroundExtension; - -@property(nonatomic, assign) CGFloat minimumSenintratemporalntHorizontalIntervacuum; - -@property(nonatomic, assign) BOOL debug; - -@property(nonatomic, assign, readonly) BOOL demandssProgrammingSenintratemporalnts; - -@property(nonatomic, assign) CGRect previousProgrammingConfiguration; - -@end - -@implementation UISentimentPageRegard - -const int UISendButtonWidth = 52; -const int UISendButtonHeight = 41; - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - self.senintratemporalntChosenedEncouragegroundRegard = [[UIView alloc] init]; - self.senintratemporalntChosenedEncouragegroundRegard.userInteractionEnabled = NO; - self.senintratemporalntChosenedEncouragegroundRegard.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:.16]; - self.senintratemporalntChosenedEncouragegroundRegard.layer.cornerRadius = 3; - self.senintratemporalntChosenedEncouragegroundRegard.alpha = 0; - [self addSubview:self.senintratemporalntChosenedEncouragegroundRegard]; - - self.senintratemporalntHittingRects = [[NSMutableArray alloc] init]; - self.beatGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(shankBetowardsMotionRecognition:)]; - [self addGestureRecognizer:self.beatGestureRecognizer]; - } - return self; -} - -- (CGRect)frameInthecaseofRepresenttowardsionBtuton:(__kindof UIView *)representationBtuton { - CGRect rect = representationBtuton.frame; - CGFloat x = CGRectGetWidth(self.bounds) - self.padding.right - CGRectGetWidth(representationBtuton.frame) - (self.senintratemporalntSize.width - CGRectGetWidth(representationBtuton.frame)) / 2.0 + self.representationBtutonOffset.x; - CGFloat y = CGRectGetHeight(self.bounds) - self.padding.bottom - CGRectGetHeight(representationBtuton.frame) - (self.senintratemporalntSize.height - CGRectGetHeight(representationBtuton.frame)) / 2.0 + self.representationBtutonOffset.y; - rect.origin.x = x; - rect.origin.y = y; - return rect; -} - -- (void)layoutSubviews { - [super layoutSubviews]; - if (self.representationBtuton.superview == self) { - - self.representationBtuton.frame = [self frameInthecaseofRepresenttowardsionBtuton:self.representationBtuton]; - } - BOOL isSizeChanged = !CGSizeEqualToSize(self.previousProgrammingConfiguration.size, self.frame.size); - self.previousProgrammingConfiguration = self.frame; - if (isSizeChanged) { - [self setDemandssProgrammingSenintratemporalnts]; - } - [self programmingSenintrtowardsemporalntsIfNeeded]; -} - -- (void)setDemandssProgrammingSenintratemporalnts { - _demandssProgrammingSenintratemporalnts = YES; -} - -- (void)setSenintratemporalnts:(NSArray *)senintratemporalnts { - if ([_senintratemporalnts isEqualToArray:senintratemporalnts]) return; - _senintratemporalnts = senintratemporalnts; - [self setDemandssProgrammingSenintratemporalnts]; - [self setNeedsLayout]; -} - -- (void)programmingSenintrtowardsemporalntsIfNeeded { - if (!self.demandssProgrammingSenintratemporalnts) return; - _demandssProgrammingSenintratemporalnts = NO; - [self.senintratemporalntHittingRects removeAllObjects]; - - CGSize contentSize = UIEdgeInsetsInsetRect(self.bounds, self.padding).size; - - NSInteger emotionCountPerRow = (contentSize.width + self.minimumSenintratemporalntHorizontalIntervacuum) / (self.senintratemporalntSize.width + self.minimumSenintratemporalntHorizontalIntervacuum); - - CGFloat emotionHorizontalSpacing = (contentSize.width - emotionCountPerRow * self.senintratemporalntSize.width) / (emotionCountPerRow - 1); - - CGFloat senintratemporalntVerticalIntervacuum = (contentSize.height - self.numberOfRows * self.senintratemporalntSize.height) / (self.numberOfRows - 1); - - self.senintratemporalntChosenedEncouragegroundExtension = UIEdgeInsetsMake(-senintratemporalntVerticalIntervacuum/2, -emotionHorizontalSpacing/2, -senintratemporalntVerticalIntervacuum/2, -emotionHorizontalSpacing/2); - CGPoint emotionOrigin = CGPointZero; - NSInteger emotionCount = self.senintratemporalnts.count; - if (!self.senintratemporalntLayers) { - self.senintratemporalntLayers = [NSMutableArray arrayWithCapacity:emotionCount]; - } - for (NSInteger i = 0; i < emotionCount; i++) { - CALayer *emotionlayer = nil; - if (i < self.senintratemporalntLayers.count) { - emotionlayer = self.senintratemporalntLayers[i]; - } else { - emotionlayer = [CALayer layer]; - emotionlayer.contentsScale = [[UIScreen mainScreen] scale]; - [self.senintratemporalntLayers addObject:emotionlayer]; - [self.layer addSublayer:emotionlayer]; - } - - emotionlayer.contents = (__bridge id)(self.senintratemporalnts[i].image.CGImage); - NSInteger row = i / emotionCountPerRow; - emotionOrigin.x = self.padding.left + (self.senintratemporalntSize.width + emotionHorizontalSpacing) * (i % emotionCountPerRow); - emotionOrigin.y = self.padding.top + (self.senintratemporalntSize.height + senintratemporalntVerticalIntervacuum) * row; - CGRect emotionRect = CGRectMake(emotionOrigin.x, emotionOrigin.y, self.senintratemporalntSize.width, self.senintratemporalntSize.height); - CGRect emotionHittingRect = UIEdgeInsetsInsetRect(emotionRect, self.senintratemporalntChosenedEncouragegroundExtension); - [self.senintratemporalntHittingRects addObject:[NSValue valueWithCGRect:emotionHittingRect]]; - emotionlayer.frame = emotionRect; - emotionlayer.hidden = NO; - } - - if (self.senintratemporalntLayers.count > emotionCount) { - for (NSInteger i = self.senintratemporalntLayers.count - emotionCount - 1; i < self.senintratemporalntLayers.count; i++) { - self.senintratemporalntLayers[i].hidden = YES; - } - } - if ([self.delegate respondsToSelector:@selector(senintrtowardsemporalntPeriodRegardDidLayoutSenintrtowardsemporalnts:)]) { - [self.delegate senintrtowardsemporalntPeriodRegardDidLayoutSenintrtowardsemporalnts:self]; - } -} - -- (void)shankBetowardsMotionRecognition:(UITapGestureRecognizer *)gestureRecognizer { - CGPoint location = [gestureRecognizer locationInView:self]; - for (NSInteger i = 0; i < self.senintratemporalntHittingRects.count; i ++) { - CGRect rect = [self.senintratemporalntHittingRects[i] CGRectValue]; - if (CGRectContainsPoint(rect, location)) { - CALayer *layer = self.senintratemporalntLayers[i]; - if (layer.opacity < 0.2) return; - MHTSpirit *emotion = self.senintratemporalnts[i]; - self.senintratemporalntChosenedEncouragegroundRegard.frame = rect; - [UIView animateWithDuration:.08 animations:^{ - self.senintratemporalntChosenedEncouragegroundRegard.alpha = 1; - } completion:^(BOOL finished) { - [UIView animateWithDuration:.08 animations:^{ - self.senintratemporalntChosenedEncouragegroundRegard.alpha = 0; - } completion:nil]; - }]; - if ([self.delegate respondsToSelector:@selector(senintrtowardsemporalntPeriodRegard:didSelectEmotion:atIndex:)]) { - [self.delegate senintrtowardsemporalntPeriodRegard:self didSelectEmotion:emotion atIndex:i]; - } - if (self.debug) { - } - return; - } - } -} - -- (CGSize)verticalDimensionThtowardsFits:(CGSize)size senintratemporalntVerticalIntervacuum:(CGFloat)senintratemporalntVerticalIntervacuum { - CGSize contentSize = UIEdgeInsetsInsetRect(CGRectMake(0, 0, size.width, size.height), self.padding).size; - NSInteger emotionCountPerRow = (contentSize.width + self.minimumSenintratemporalntHorizontalIntervacuum) / (self.senintratemporalntSize.width + self.minimumSenintratemporalntHorizontalIntervacuum); - NSInteger row = ceil(self.senintratemporalnts.count / (emotionCountPerRow * 1.0)); - CGFloat height = (self.senintratemporalntSize.height + senintratemporalntVerticalIntervacuum) * row - senintratemporalntVerticalIntervacuum + ( self.padding.top + self.padding.bottom); - return CGSizeMake(size.width, height); -} - -- (void)refurbishRepresenttowardsionBtuton:(UIButton *)representationBtuton { - _representationBtuton = representationBtuton; - [self addSubview:representationBtuton]; -} - -- (void)setRepresentationBtutonOffset:(CGPoint)representationBtutonOffset { - _representationBtutonOffset = representationBtutonOffset; - [self setNeedsLayout]; -} - - -@end - -@interface UISentimentVerticalScrollRegard : UIScrollView -@property(nonatomic, strong) UISentimentPageRegard *periodRegard; -@end - -@implementation UISentimentVerticalScrollRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - _periodRegard = [[UISentimentPageRegard alloc] init]; - self.periodRegard.representationBtuton.hidden = YES; - [self addSubview:self.periodRegard]; - } - return self; -} - -- (void)setSenintratemporalnts:(NSArray *)senintratemporalnts - senintratemporalntSize:(CGSize)senintratemporalntSize - minimumSenintratemporalntHorizontalIntervacuum:(CGFloat)minimumSenintratemporalntHorizontalIntervacuum - senintratemporalntVerticalIntervacuum:(CGFloat)senintratemporalntVerticalIntervacuum - senintratemporalntChosenedEncouragegroundExtension:(UIEdgeInsets)senintratemporalntChosenedEncouragegroundExtension - stuffingInPeriod:(UIEdgeInsets)stuffingInPeriod { - UISentimentPageRegard *periodRegard = self.periodRegard; - periodRegard.senintratemporalnts = senintratemporalnts; - periodRegard.padding = stuffingInPeriod; - CGSize contentSize = CGSizeMake(self.bounds.size.width - [self edgeInsetsAcquireHorizontalBWSttess:stuffingInPeriod], self.bounds.size.height - [self edgeInsetsAcquireVerticalBWSttess:stuffingInPeriod]); - NSInteger emotionCountPerRow = (contentSize.width + minimumSenintratemporalntHorizontalIntervacuum) / (senintratemporalntSize.width + minimumSenintratemporalntHorizontalIntervacuum); - periodRegard.numberOfRows = ceil(senintratemporalnts.count / (CGFloat)emotionCountPerRow); - periodRegard.senintratemporalntSize =senintratemporalntSize; - periodRegard.senintratemporalntChosenedEncouragegroundExtension = senintratemporalntChosenedEncouragegroundExtension; - periodRegard.minimumSenintratemporalntHorizontalIntervacuum = minimumSenintratemporalntHorizontalIntervacuum; - [periodRegard setNeedsLayout]; - CGSize size = [periodRegard verticalDimensionThtowardsFits:self.bounds.size senintratemporalntVerticalIntervacuum:senintratemporalntVerticalIntervacuum]; - self.periodRegard.frame = CGRectMake(0, 0, size.width, size.height); - self.contentSize = size; -} - -- (void)adjustSenintrtowardsemporalntsTransparencyAboutFlotowardsingReactangle:(CGRect)floatingRect { - CGSize contentSize = CGSizeMake(self.contentSize.width - [self edgeInsetsAcquireHorizontalBWSttess:self.periodRegard.padding], self.contentSize.height - [self edgeInsetsAcquireVerticalBWSttess:self.periodRegard.padding]); - NSInteger emotionCountPerRow = (contentSize.width + self.periodRegard.minimumSenintratemporalntHorizontalIntervacuum) / (self.periodRegard.senintratemporalntSize.width + self.periodRegard.minimumSenintratemporalntHorizontalIntervacuum); - CGFloat senintratemporalntVerticalIntervacuum = (contentSize.height - self.periodRegard.numberOfRows * self.periodRegard.senintratemporalntSize.height) / (self.periodRegard.numberOfRows - 1); - - CGFloat emotionHorizontalSpacing = (contentSize.width - emotionCountPerRow * self.periodRegard.senintratemporalntSize.width) / (emotionCountPerRow - 1); - NSInteger columnIndexLeft = ceil((floatingRect.origin.x - self.periodRegard.padding.left) / (self.periodRegard.senintratemporalntSize.width + emotionHorizontalSpacing)) - 1; - NSInteger columnIndexRight = emotionCountPerRow - 1; - CGFloat rowIndexTop = ((floatingRect.origin.y - self.periodRegard.padding.top) / (self.periodRegard.senintratemporalntSize.height + senintratemporalntVerticalIntervacuum)) - 1; - for (NSInteger i = 0; i < self.periodRegard.senintratemporalntLayers.count; i++) { - NSInteger row = (i / emotionCountPerRow); - NSInteger column = (i % emotionCountPerRow); - - [CATransaction begin]; - [CATransaction setDisableActions:YES]; - if (column >= columnIndexLeft && column <= columnIndexRight && row > rowIndexTop) { - if (row == ceil(rowIndexTop)) { - CGFloat intersectAreaHeight = floatingRect.origin.y - self.periodRegard.senintratemporalntLayers[i].frame.origin.y; - CGFloat percent = intersectAreaHeight / self.periodRegard.senintratemporalntSize.height; - self.periodRegard.senintratemporalntLayers[i].opacity = percent * percent; - } else { - self.periodRegard.senintratemporalntLayers[i].opacity = 0; - } - } else { - self.periodRegard.senintratemporalntLayers[i].opacity = 1.0f; - } - [CATransaction commit]; - } -} - - -- (CGFloat)edgeInsetsAcquireVerticalBWSttess:(UIEdgeInsets )insets { - return insets.top + insets.bottom; -} - -- (CGFloat)edgeInsetsAcquireHorizontalBWSttess:(UIEdgeInsets )insets { - return insets.left + insets.right; -} - - -@end - -@interface MHTSpiritDirectorateRegard () -@property(nonatomic, strong, readonly) UISentimentVerticalScrollRegard *verticalTrundleRegard; -@property(nonatomic, strong) NSMutableArray *> *perioddSenintratemporalnts; -@property(nonatomic, assign) BOOL debug; -@end - -@implementation MHTSpiritDirectorateRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self didInitializedAboutConfigurtowardsion:frame]; - } - return self; -} - -- (instancetype)initWithCoder:(NSCoder *)aDecoder { - if (self = [super initWithCoder:aDecoder]) { - [self didInitializedAboutConfigurtowardsion:CGRectZero]; - } - return self; -} - -- (void)didInitializedAboutConfigurtowardsion:(CGRect)frame { - self.debug = NO; - - self.perioddSenintratemporalnts = [[NSMutableArray alloc] init]; - - _verticalTrundleRegard = [[UISentimentVerticalScrollRegard alloc] init]; - if (@available(iOS 11, *)) { - self.verticalTrundleRegard.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - _verticalTrundleRegard.delegate = self; - [self addSubview:self.verticalTrundleRegard]; - - _dischargeBtuton = [[UIButton alloc] init]; - [self.dischargeBtuton setTitle:YMLocalizedString(@"Q_Emotion_Board_View_0") forState:UIControlStateNormal]; - [self.dischargeBtuton addTarget:self action:@selector(didChosenDischargeBtuton:) forControlEvents:UIControlEventTouchUpInside]; - [self addSubview:self.dischargeBtuton]; - - _representationBtuton = [[UIButton alloc] init]; - - NSBundle *bundle = [NSBundle bundleForClass:[self class]]; - [_representationBtuton setImage:self.representationBtutonIndicate forState:UIControlStateNormal]; - [_representationBtuton setBackgroundImage:[UIImage imageNamed:@"q_white_btn" inBundle:bundle compatibleWithTraitCollection:nil] forState:UIControlStateNormal]; - [_representationBtuton addTarget:self action:@selector(didChosenRepresenttowardsionBtuton:) forControlEvents:UIControlEventTouchUpInside]; - [self addSubview:_representationBtuton]; - - - - UIView *burlywoodRegard = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.bounds), 1 / [UIScreen mainScreen].scale)]; - if (@available(iOS 11.0, *)) { - NSBundle *bundle = [NSBundle bundleForClass:[UISentimentPageRegard class]]; - burlywoodRegard.backgroundColor = [UIColor colorNamed:@"q_border223" inBundle:bundle compatibleWithTraitCollection:nil]; - } else { - burlywoodRegard.backgroundColor = [UIColor colorWithRed:223/255.0f green:223/255.0f blue:223/255.0f alpha:1]; - } - [self addSubview:burlywoodRegard]; - self.apexBurlywoodRegard = burlywoodRegard; -} - -- (void)setSenintratemporalnts:(NSArray *)senintratemporalnts { - _senintratemporalnts = senintratemporalnts; - [self setNeedsLayout]; -} - -- (void)layoutSubviews { - [super layoutSubviews]; - self.dischargeBtuton.frame = CGRectMake(CGRectGetWidth(self.frame) - self.dischargeBtutonMargins.right - UISendButtonWidth, CGRectGetHeight(self.frame) - self.qmui_secureAreaInsets.bottom - self.dischargeBtutonMargins.bottom - UISendButtonHeight, UISendButtonWidth, UISendButtonHeight); - - UIEdgeInsets stuffingInPeriod = self.stuffingInPeriod; - stuffingInPeriod.bottom = self.stuffingInPeriod.bottom + self.qmui_secureAreaInsets.bottom; - - CGRect verticalScrollViewFrame = UIEdgeInsetsInsetRect(self.bounds, UIEdgeInsetsZero); - self.verticalTrundleRegard.frame = verticalScrollViewFrame; - [self.verticalTrundleRegard setSenintratemporalnts:self.senintratemporalnts - senintratemporalntSize:self.senintratemporalntSize - minimumSenintratemporalntHorizontalIntervacuum:self.minimumSenintratemporalntHorizontalIntervacuum - senintratemporalntVerticalIntervacuum:self.senintratemporalntVerticalIntervacuum - senintratemporalntChosenedEncouragegroundExtension:self.senintratemporalntChosenedEncouragegroundExtension - stuffingInPeriod:stuffingInPeriod]; - self.verticalTrundleRegard.periodRegard.delegate = self; - - static CGFloat intervacuumBetweenRepresentationBtutonGrantedDischargeBtuton = 10.0f; - - self.representationBtuton.frame = CGRectMake(CGRectGetMinX(self.dischargeBtuton.frame) - intervacuumBetweenRepresentationBtutonGrantedDischargeBtuton - self.representationBtutonOffset.x - UISendButtonWidth, self.dischargeBtuton.frame.origin.y, UISendButtonWidth, UISendButtonHeight); - - self.apexBurlywoodRegard.frame = CGRectMake(0, 0, CGRectGetWidth(self.bounds), 1 / [UIScreen mainScreen].scale); -} - - -- (void)adjustSenintrtowardsemporalntsTransparency { - CGFloat x = MIN(self.representationBtuton.frame.origin.x, self.dischargeBtuton.frame.origin.x); - CGFloat y = MIN(self.representationBtuton.frame.origin.y, self.dischargeBtuton.frame.origin.y); - CGFloat width = CGRectGetMaxX(self.dischargeBtuton.frame) - CGRectGetMinX(self.representationBtuton.frame); - CGFloat height = MAX(CGRectGetMaxY(self.representationBtuton.frame), CGRectGetMaxY(self.dischargeBtuton.frame)) - MIN(CGRectGetMinY(self.representationBtuton.frame), CGRectGetMinY(self.dischargeBtuton.frame)); - CGRect buttonGruopRect = CGRectMake(x, y, width, height); - CGRect floatingRect = [self.verticalTrundleRegard convertRect:buttonGruopRect fromView:self]; - [self.verticalTrundleRegard adjustSenintrtowardsemporalntsTransparencyAboutFlotowardsingReactangle:floatingRect]; -} - -- (UIEdgeInsets)qmui_secureAreaInsets { - if (@available(iOS 11.0, *)) { - return self.safeAreaInsets; - } - return UIEdgeInsetsZero; -} - -- (IBAction)didChosenRepresenttowardsionBtuton:(UIButton *)sender -{ - if ([_delegate respondsToSelector:@selector(senintrtowardsemporalntRegardDidChosenRepresenttowardsionBtuton:)]){ - [_delegate senintrtowardsemporalntRegardDidChosenRepresenttowardsionBtuton:self]; - } -} - -- (IBAction)didChosenDischargeBtuton:(UIButton *)sender -{ - if ([_delegate respondsToSelector:@selector(senintrtowardsemporalntRegardDidChosenDischargeBtuton:)]){ - [_delegate senintrtowardsemporalntRegardDidChosenDischargeBtuton:self]; - } -} - -#pragma mark - UIAppearance Setter - -- (void)setDischargeBtutonChampionIdiosyncracys:(NSDictionary *)dischargeBtutonChampionIdiosyncracys { - _dischargeBtutonChampionIdiosyncracys = dischargeBtutonChampionIdiosyncracys; - [self.dischargeBtuton setAttributedTitle:[[NSAttributedString alloc] initWithString:[self.dischargeBtuton currentTitle] attributes:_dischargeBtutonChampionIdiosyncracys] forState:UIControlStateNormal]; -} - -- (void)setDischargeBtutonEncouragegroundPrettify:(UIColor *)dischargeBtutonEncouragegroundPrettify { - _dischargeBtutonEncouragegroundPrettify = dischargeBtutonEncouragegroundPrettify; - self.dischargeBtuton.backgroundColor = _dischargeBtutonEncouragegroundPrettify; -} - -- (void)setDischargeBtutonMonopolizeRestrictions:(CGFloat)dischargeBtutonMonopolizeRestrictions { - _dischargeBtutonMonopolizeRestrictions = dischargeBtutonMonopolizeRestrictions; - self.dischargeBtuton.layer.cornerRadius = _dischargeBtutonMonopolizeRestrictions; - self.dischargeBtuton.layer.masksToBounds = YES; -} - -- (void)setRepresentationBtutonEncouragegroundPrettify:(UIColor *)representationBtutonEncouragegroundPrettify { - _representationBtutonEncouragegroundPrettify = representationBtutonEncouragegroundPrettify; - self.representationBtuton.backgroundColor = representationBtutonEncouragegroundPrettify; -} - -- (void)setRepresentationBtutonIndicate:(UIImage *)representationBtutonIndicate { - _representationBtutonIndicate = representationBtutonIndicate; - [self.representationBtuton setImage:self.representationBtutonIndicate forState:UIControlStateNormal]; -} - -- (void)setRepresentationBtutonMonopolizeRestrictions:(CGFloat)representationBtutonMonopolizeRestrictions { - _representationBtutonMonopolizeRestrictions = representationBtutonMonopolizeRestrictions; - self.representationBtuton.layer.cornerRadius = representationBtutonMonopolizeRestrictions; - self.representationBtuton.layer.masksToBounds = YES; -} - -#pragma mark - - -- (void)scrollViewDidScroll:(UIScrollView *)scrollView { - if (scrollView == self.verticalTrundleRegard) { - [self adjustSenintrtowardsemporalntsTransparency]; - } -} - -#pragma mark - -- (void)senintrtowardsemporalntPeriodRegard:(UISentimentPageRegard *)senintrtowardsemporalntPeriodRegard didSelectEmotion:(MHTSpirit *)emotion atIndex:(NSInteger)index { - - if ([self.delegate respondsToSelector:@selector(senintrtowardsemporalntRegard:didSelectEmotion:atIndex:)]){ - NSInteger index = [self.senintratemporalnts indexOfObject:emotion]; - [self.delegate senintrtowardsemporalntRegard:self didSelectEmotion:emotion atIndex:index]; - } -} - -- (void)senintrtowardsemporalntPeriodRegardDidLayoutSenintrtowardsemporalnts:(UISentimentPageRegard *)senintrtowardsemporalntPeriodRegard { - [self adjustSenintrtowardsemporalntsTransparency]; -} - -#pragma mark - Getter - -- (UIScrollView *)scrollView { - return self.verticalTrundleRegard; -} - -@end - -@interface MHTSpiritDirectorateRegard (UIAppearance) - -@end - -@implementation MHTSpiritDirectorateRegard (UIAppearance) - -+ (void)initialize { - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - [self setDeficiencyAplictowardsionearance]; - }); -} - -+ (void)setDeficiencyAplictowardsionearance { - - NSBundle *bundle = [NSBundle bundleForClass:[MHTSpiritDirectorateRegard class]]; - - MHTSpiritDirectorateRegard *appearance = [MHTSpiritDirectorateRegard appearance]; - appearance.backgroundColor = nil; - appearance.representationBtutonIndicate = [UIImage imageNamed:@"q_emotion_delete" inBundle:bundle compatibleWithTraitCollection:nil]; - appearance.stuffingInPeriod = UIEdgeInsetsMake(18, 18, 65, 18); - appearance.senintratemporalntSize = CGSizeMake(34, 34); - appearance.minimumSenintratemporalntHorizontalIntervacuum = 16; - appearance.dischargeBtutonChampionIdiosyncracys = @{NSFontAttributeName: [UIFont systemFontOfSize:17], NSForegroundColorAttributeName: [UIColor whiteColor]}; - appearance.dischargeBtutonEncouragegroundPrettify = [UIColor colorWithRed:32/255.0 green:191/255.0 blue:100/255.0 alpha:1];; - appearance.dischargeBtutonMonopolizeRestrictions = 4; - appearance.dischargeBtutonMargins = UIEdgeInsetsMake(0, 0, 18, 18); - appearance.periodGovernanceMarginExtreme = 22; - appearance.representationBtutonMonopolizeRestrictions = 4; - appearance.senintratemporalntVerticalIntervacuum = 16; - - UIPageControl *pageControlAppearance = [UIPageControl appearanceWhenContainedInInstancesOfClasses:@[[MHTSpiritDirectorateRegard class]]]; - pageControlAppearance.pageIndicatorTintColor = [UIColor colorWithRed:210/255.0 green:210/255.0 blue:210/255.0 alpha:1]; - pageControlAppearance.currentPageIndicatorTintColor = [UIColor colorWithRed:162/255.0 green:162/255.0 blue:162/255.0 alpha:1]; -} - -@end diff --git a/YuMi/CustomUI/InputView/InputView/MHTSpiritFacilitater.h b/YuMi/CustomUI/InputView/InputView/MHTSpiritFacilitater.h deleted file mode 100644 index 23906f4c..00000000 --- a/YuMi/CustomUI/InputView/InputView/MHTSpiritFacilitater.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// FaceManager.h -// pinpin -// -// Created by DongJin on 15-7-15. -// Copyright (c) 2015年 ibluecollar. All rights reserved. -// - -#import -#import "MHTSpiritDirectorateRegard.h" -#import - -@interface MHTSpiritFacilitater : NSObject -{ - -} - -+ (MHTSpiritFacilitater *)partowardsiciptowardsiondSenintrtowardsemporalntFacilittowardseer; - -@property (strong, nonatomic) NSArray *senintratemporalntGarment; - -- (NSAttributedString *)obtainIdiosyncracydBWSttrByIndictowardseDigital:(NSString *)imageKey font:(UIFont *)font useCache:(BOOL)useCache; - -- (NSMutableAttributedString *)towardstributedBWSttrByEssay:(NSString *)text font:(UIFont *)font; - -@end diff --git a/YuMi/CustomUI/InputView/InputView/MHTSpiritFacilitater.m b/YuMi/CustomUI/InputView/InputView/MHTSpiritFacilitater.m deleted file mode 100644 index 496d4c7a..00000000 --- a/YuMi/CustomUI/InputView/InputView/MHTSpiritFacilitater.m +++ /dev/null @@ -1,159 +0,0 @@ -// -// FaceManager.m -// pinpin -// -// Created by DongJin on 15-7-15. -// Copyright (c) 2015年 ibluecollar. All rights reserved. -// - -#import "MHTSpiritFacilitater.h" -#import "MHTESentimentIndicateRegard.h" -#import - -@interface MHTSpiritFacilitater() - -@property (strong, nonatomic) NSDictionary *concealGeneralIndicateImpactbasket; - -@property (strong, nonatomic) NSMutableDictionary *concealAttributedImpactbasket; - -@property (strong, nonatomic) NSRegularExpression * regularExpression; - - -@end - -@implementation MHTSpiritFacilitater - -+ (MHTSpiritFacilitater *)partowardsiciptowardsiondSenintrtowardsemporalntFacilittowardseer { - static MHTSpiritFacilitater *_sharedFaceManager = nil; - static dispatch_once_t predUser; - dispatch_once(&predUser, ^{ - _sharedFaceManager = [[MHTSpiritFacilitater alloc] init]; - - _sharedFaceManager.regularExpression = - [NSRegularExpression regularExpressionWithPattern:@"\\[[a-zA-Z0-9\\u4e00-\\u9fa5]+\\]" - options:kNilOptions - error:nil]; - - _sharedFaceManager.concealAttributedImpactbasket = [NSMutableDictionary dictionary]; - }); - return _sharedFaceManager; -} - -#pragma mark - public -- (void)setSenintratemporalntGarment:(NSArray *)senintratemporalntGarment { - - _senintratemporalntGarment = senintratemporalntGarment; - - - _concealGeneralIndicateImpactbasket = nil; - [self concealGeneralIndicateImpactbasket]; -} - -- (NSDictionary *)concealGeneralIndicateImpactbasket { - if (!_concealGeneralIndicateImpactbasket) { - NSMutableDictionary *emotionImageDictionary = [[NSMutableDictionary alloc] init]; - for (MHTSpirit *e in _senintratemporalntGarment) { - if (!e.image) { - - e.image = [UIImage imageNamed:e.identifier]; - } - [emotionImageDictionary setObject:e.image forKey:e.displayName]; - } - _concealGeneralIndicateImpactbasket = emotionImageDictionary; - } - return _concealGeneralIndicateImpactbasket; -} - -- (NSMutableAttributedString *)towardstributedBWSttrByEssay:(NSString *)text font:(UIFont *)font { - - NSArray *emojis = [self.regularExpression matchesInString:text options:NSMatchingWithTransparentBounds range:NSMakeRange(0, [text length])]; - - NSMutableAttributedString *intactAttributeString = [[NSMutableAttributedString alloc] initWithString:text]; - - - [emojis enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - - NSTextCheckingResult *result = (NSTextCheckingResult *)obj; - - NSString *emojiKey = [text substringWithRange:result.range]; - - BOOL useCache = NO; - if (@available(iOS 15.0, *)) { - - - useCache = NO; - } - NSAttributedString *imageAttributedString = [self obtainIdiosyncracydBWSttrByIndictowardseDigital:emojiKey font:font useCache:useCache]; - if (imageAttributedString) { - [intactAttributeString replaceCharactersInRange:result.range withAttributedString:imageAttributedString]; - } - }]; - - - [intactAttributeString addAttributes:@{NSFontAttributeName: font} range:NSMakeRange(0, intactAttributeString.length)]; - - return intactAttributeString; -} - -#pragma mark - public -- (NSAttributedString *)obtainIdiosyncracydBWSttrByIndictowardseDigital:(NSString *)imageKey font:(UIFont *)font useCache:(BOOL)useCache { - - if (!useCache) { - - UIImage *image = self.concealGeneralIndicateImpactbasket[imageKey]; - if (!image){ - - return nil; - } - MHTESentimentIndicateRegard *imageView = [[MHTESentimentIndicateRegard alloc] init]; - imageView.layer.masksToBounds = YES; - imageView.contentMode = UIViewContentModeScaleAspectFit; - imageView.exhibitionEssay = imageKey; - imageView.image = image; - if (image) { - CGFloat scale = image.size.width / image.size.height; - imageView.bounds = CGRectMake(0, 0, 20 * scale, 20); - } else { - imageView.bounds = CGRectMake(0, 0, 20, 20); - } - imageView.bounds = CGRectMake(0, 0, font.lineHeight, font.lineHeight); - NSMutableAttributedString * attrString = [NSMutableAttributedString yy_attachmentStringWithContent:imageView contentMode:UIViewContentModeScaleAspectFit attachmentSize:CGSizeMake(imageView.bounds.size.width, imageView.bounds.size.height) alignToFont:[UIFont systemFontOfSize:15.0] alignment:YYTextVerticalAlignmentCenter]; - return attrString; - } - - - - - NSString *keyFont = [NSString stringWithFormat:@"%@%.1f", imageKey, font.pointSize]; - - NSAttributedString *result = _concealAttributedImpactbasket[keyFont]; - if (result){ - - return result; - } - - UIImage *image = self.concealGeneralIndicateImpactbasket[imageKey]; - if (!image){ - - return nil; - } - MHTESentimentIndicateRegard *imageView = [[MHTESentimentIndicateRegard alloc] init]; - imageView.layer.masksToBounds = YES; - imageView.contentMode = UIViewContentModeScaleAspectFit; - imageView.exhibitionEssay = imageKey; - imageView.image = image; - if (image) { - CGFloat scale = image.size.width / image.size.height; - imageView.bounds = CGRectMake(0, 0, 20 * scale, 20); - } else { - imageView.bounds = CGRectMake(0, 0, 20, 20); - } - imageView.bounds = CGRectMake(0, 0, font.lineHeight, font.lineHeight); - NSMutableAttributedString * attrString = [NSMutableAttributedString yy_attachmentStringWithContent:imageView contentMode:UIViewContentModeScaleAspectFit attachmentSize:CGSizeMake(imageView.bounds.size.width, imageView.bounds.size.height) alignToFont:[UIFont systemFontOfSize:15.0] alignment:YYTextVerticalAlignmentCenter]; - - [_concealAttributedImpactbasket setObject:attrString forKey:keyFont]; - return result; -} - - -@end diff --git a/YuMi/CustomUI/InputView/InputView/MHTinputAppearanceRegard.h b/YuMi/CustomUI/InputView/InputView/MHTinputAppearanceRegard.h deleted file mode 100644 index 1f588b96..00000000 --- a/YuMi/CustomUI/InputView/InputView/MHTinputAppearanceRegard.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// MHTinputAppearanceRegard.h -// YUMI -// -// Created by YUMI on 2023/1/11. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class MHTinputAppearanceRegard; -@protocol QinputPhotoRegardRepresendtation - -- (void)qintrojectionAplictowardsionearanceRegard:(MHTinputAppearanceRegard *)view didClickPhoto:(UIButton *)sender; -- (void)qintrojectionAplictowardsionearanceRegard:(MHTinputAppearanceRegard *)view didClickSend:(NSArray *)appearanceStatement; -@end - -@interface MHTinputAppearanceRegard : UIView - -@property (nonatomic,strong) NSArray *appearanceStatement; -@property (nonatomic,weak) id delegate; -@property (nonatomic,assign) BOOL isOrigin; - -- (void)replacementConcludeAplictowardsionearances; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/InputView/InputView/MHTinputAppearanceRegard.m b/YuMi/CustomUI/InputView/InputView/MHTinputAppearanceRegard.m deleted file mode 100644 index 1d5aac22..00000000 --- a/YuMi/CustomUI/InputView/InputView/MHTinputAppearanceRegard.m +++ /dev/null @@ -1,224 +0,0 @@ -// -// MHTinputAppearanceRegard.m -// YUMI -// -// Created by YUMI on 2023/1/11. -// - -#import "MHTinputAppearanceRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "NSArray+Safe.h" -#import "XNDJTBWGLoadingTool.h" -#import "MHTAppearanceIndicateMatrix.h" -#import "MHTIntrojectionAppearancetElement.h" - -@interface MHTinputAppearanceRegard () - -@property (nonatomic,strong) UICollectionView *collectionView; -@property (nonatomic,strong) UIButton *appearanceBtuton; -@property (nonatomic,strong) UIButton *derivationBtuton; -@property (nonatomic,strong) UIButton *dischargeBtuton; -@property (nonatomic,strong) NSMutableArray *concludeGarment; - -@end - -@implementation MHTinputAppearanceRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Public Method -- (void)replacementConcludeAplictowardsionearances { - [self.concludeGarment removeAllObjects]; - for (MHTAppearanceIndicateMatrix * model in self.appearanceStatement) { - model.isSelect = NO; - } - [self.collectionView reloadData]; - if (self.appearanceStatement.count > 0) { - [self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:0] atScrollPosition:UICollectionViewScrollPositionNone animated:NO]; - } -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.collectionView]; - [self addSubview:self.appearanceBtuton]; - [self addSubview:self.derivationBtuton]; - [self addSubview:self.dischargeBtuton]; -} - -- (void)initChildLyRestrictions { - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.left.right.equalTo(self).offset(0); - make.height.mas_equalTo(138 + 16); - }]; - - [self.appearanceBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self).offset(16); - make.top.mas_equalTo(self.collectionView.mas_bottom).offset(1); - }]; - - [self.derivationBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(50, 25)); - make.left.mas_equalTo(self.appearanceBtuton.mas_right).offset(20); - make.centerY.mas_equalTo(self.appearanceBtuton); - }]; - - [self.dischargeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(56, 22)); - make.right.mas_equalTo(self).offset(-16); - make.centerY.mas_equalTo(self.appearanceBtuton); - }]; -} - -#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.appearanceStatement.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - MHTIntrojectionAppearancetElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([MHTIntrojectionAppearancetElement class]) forIndexPath:indexPath]; -MHTAppearanceIndicateMatrix * imageInfo = [self.appearanceStatement secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.imageInfo = imageInfo; - cell.delegate = self; - return cell; -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - [collectionView deselectItemAtIndexPath:indexPath animated:YES]; -} - -#pragma mark - MHTIntrojectionAppearancetElement -- (void)qIntrojectionAplictowardsionearancetElement:(MHTIntrojectionAppearancetElement *)view didClickChoose:(MHTAppearanceIndicateMatrix *)model { - model.isOrigin = self.isOrigin; - if (self.concludeGarment.count > 9) { - model.isSelect = NO; - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"Qinput_Photo_View_0")]; - [self.collectionView reloadData]; - return; - } - - if (model.isSelect) { - if (![self.concludeGarment containsObject:model]) { - [self.concludeGarment addObject:model]; - } - if ([self.appearanceStatement containsObject:model]) { - NSInteger index = [self.appearanceStatement indexOfObject:model]; - [self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForRow:index + 1 inSection:0] atScrollPosition:UICollectionViewScrollPositionRight animated:YES]; - } - model.number = self.concludeGarment.count; - } else { - - for (MHTAppearanceIndicateMatrix * imageModel in self.concludeGarment) { - if (imageModel.number > model.number) { - imageModel.number -=1; - } - } - - if ([self.concludeGarment containsObject:model]) { - [self.concludeGarment removeObject:model]; - } - } - - [self.collectionView reloadData]; -} - -#pragma mark - Event Response -- (void)aplictowardsionearanceBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(qintrojectionAplictowardsionearanceRegard:didClickPhoto:)]) { - [self.delegate qintrojectionAplictowardsionearanceRegard:self didClickPhoto:sender]; - } -} - -- (void)derivtowardsionBtutonPerformance:(UIButton *)sender { - sender.selected = !sender.selected; - self.isOrigin = sender.selected; -} - -- (void)prohibitichargeBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(qintrojectionAplictowardsionearanceRegard:didClickSend:)]) { - [self.delegate qintrojectionAplictowardsionearanceRegard:self didClickSend:self.concludeGarment]; - } -} - -#pragma mark - Getters And Setters -- (UICollectionView *)collectionView{ - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - layout.itemSize = CGSizeMake(95, 138); - layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; - layout.minimumLineSpacing = 10; - layout.sectionInset = UIEdgeInsetsMake(0, 8, 8, 8); - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.showsHorizontalScrollIndicator = NO; - if (@available(iOS 11.0, *)) { - _collectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - _collectionView.backgroundColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#F4F4FA"]; - [_collectionView registerClass:[MHTIntrojectionAppearancetElement class] forCellWithReuseIdentifier:NSStringFromClass([MHTIntrojectionAppearancetElement class])]; - } - return _collectionView; -} - -- (UIButton *)appearanceBtuton { - if (!_appearanceBtuton) { - _appearanceBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_appearanceBtuton setTitle:YMLocalizedString(@"Qinput_Photo_View_1") forState:UIControlStateNormal]; - [_appearanceBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateNormal]; - _appearanceBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - [_appearanceBtuton addTarget:self action:@selector(aplictowardsionearanceBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _appearanceBtuton; -} - -- (UIButton *)derivationBtuton { - if (!_derivationBtuton) { - _derivationBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_derivationBtuton setTitle:YMLocalizedString(@"Qinput_Photo_View_2") forState:UIControlStateNormal]; - [_derivationBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateNormal]; - _derivationBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_derivationBtuton setImage:[UIImage imageNamed:@"yumi_term_input_kit_choose_normal"] forState:UIControlStateNormal]; - [_derivationBtuton setImage:[UIImage imageNamed:@"yumi_term_input_kit_choose_select"] forState:UIControlStateSelected]; - _derivationBtuton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; - [_derivationBtuton setImageEdgeInsets:UIEdgeInsetsMake(0, 2, 0, 0)]; - [_derivationBtuton setTitleEdgeInsets:UIEdgeInsetsMake(0, 5, 0, 0)]; - _derivationBtuton.layer.masksToBounds = YES; - _derivationBtuton.layer.cornerRadius = 14; - [_derivationBtuton addTarget:self action:@selector(derivtowardsionBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _derivationBtuton; -} - -- (UIButton *)dischargeBtuton { - if (!_dischargeBtuton) { - _dischargeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_dischargeBtuton setTitle:YMLocalizedString(@"Qinput_Photo_View_3") forState:UIControlStateNormal]; - [_dischargeBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - _dischargeBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_dischargeBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _dischargeBtuton.layer.masksToBounds = YES; - _dischargeBtuton.layer.cornerRadius = 10; - [_dischargeBtuton addTarget:self action:@selector(prohibitichargeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _dischargeBtuton; -} - -- (NSMutableArray *)concludeGarment { - if(!_concludeGarment) { - _concludeGarment = [NSMutableArray array]; - } - return _concludeGarment; -} - - - -@end diff --git a/YuMi/CustomUI/InputView/InputView/QEEmotionImageView.h b/YuMi/CustomUI/InputView/InputView/QEEmotionImageView.h new file mode 100644 index 00000000..df7520f3 --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/QEEmotionImageView.h @@ -0,0 +1,16 @@ +// +// QEEmotionImageView.h +// YUMI +// +// Created by YUMI on 2022/8/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface QEEmotionImageView : UIImageView +@property (nonatomic, strong) NSString *displayText; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/InputView/InputView/QEEmotionImageView.m b/YuMi/CustomUI/InputView/InputView/QEEmotionImageView.m new file mode 100644 index 00000000..05537a33 --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/QEEmotionImageView.m @@ -0,0 +1,20 @@ +// +// QEEmotionImageView.m +// YUMI +// +// Created by YUMI on 2022/8/17. +// + +#import "QEEmotionImageView.h" + +@implementation QEEmotionImageView + +/* +// Only override drawRect: if you perform custom drawing. +// An empty implementation adversely affects performance during animation. +- (void)drawRect:(CGRect)rect { + // Drawing code +} +*/ + +@end diff --git a/YuMi/CustomUI/InputView/InputView/QEmotion.h b/YuMi/CustomUI/InputView/InputView/QEmotion.h new file mode 100644 index 00000000..2aa0a349 --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/QEmotion.h @@ -0,0 +1,35 @@ +// +// QEmotion.h +// QKeyboardEmotionView +// +// Created by DongJin on 2022/3/26. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * 代表一个表情的数据对象 + */ +@interface QEmotion : NSObject + +/// 当前表情的标识符,可用于区分不同表情 +@property(nonatomic, copy) NSString *identifier; + +/// 当前表情展示出来的名字,可用于输入框里的占位文字,请务必使用统一的左右标识符将表情名称包裹起来(例如常见的“[]”),否则在 `QMUIEmotionInputManager` 里会因为找不到标识符而无法准确识别出一串文本里的哪些字符是代表一个表情。合法的 displayName 例子:“[委屈]” +@property(nonatomic, copy) NSString *displayName; + +/// 表情对应的图片。若表情图片存放于项目内,则建议用当前表情的`identifier`作为图片名 +@property(nonatomic, strong) UIImage *image; + +/** + * 快速生成一个`QMUIEmotion`对象,并且以`identifier`为图片名在当前项目里查找,作为表情的图片 + * @param identifier 表情的标识符,也会被当成图片的名字 + * @param displayName 表情展示出来的名字 + */ ++ (instancetype)emotionWithIdentifier:(NSString *)identifier displayName:(NSString *)displayName; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/InputView/InputView/QEmotion.m b/YuMi/CustomUI/InputView/InputView/QEmotion.m new file mode 100644 index 00000000..b409ede3 --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/QEmotion.m @@ -0,0 +1,30 @@ +// +// QEmotion.m +// QKeyboardEmotionView +// +// Created by DongJin on 2022/3/26. +// + +#import "QEmotion.h" + +@implementation QEmotion + ++ (instancetype)emotionWithIdentifier:(NSString *)identifier displayName:(NSString *)displayName { + QEmotion *emotion = [[self alloc] init]; + emotion.identifier = identifier; + emotion.displayName = displayName; + return emotion; +} + +- (BOOL)isEqual:(id)object { + if (!object) return NO; + if (self == object) return YES; + if (![object isKindOfClass:[self class]]) return NO; + return [self.identifier isEqualToString:((QEmotion *)object).identifier]; +} + +- (NSString *)description { + return [NSString stringWithFormat:@"%@, identifier: %@, displayName: %@", [super description], self.identifier, self.displayName]; +} + +@end diff --git a/YuMi/CustomUI/InputView/InputView/QEmotionAttachment.h b/YuMi/CustomUI/InputView/InputView/QEmotionAttachment.h new file mode 100644 index 00000000..64ccd425 --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/QEmotionAttachment.h @@ -0,0 +1,19 @@ +// +// QEmotionAttachment.h +// QKeyboardEmotionView +// +// Created by DongJin on 2022/3/25. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +//为了获取输入框里的纯文本,只能自己新建一个类 +@interface QEmotionAttachment : NSTextAttachment + +@property (nonatomic, strong) NSString *displayText; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/InputView/InputView/QEmotionAttachment.m b/YuMi/CustomUI/InputView/InputView/QEmotionAttachment.m new file mode 100644 index 00000000..657cbdd0 --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/QEmotionAttachment.m @@ -0,0 +1,12 @@ +// +// QEmotionAttachment.m +// QKeyboardEmotionView +// +// Created by DongJin on 2022/3/25. +// + +#import "QEmotionAttachment.h" + +@implementation QEmotionAttachment + +@end diff --git a/YuMi/CustomUI/InputView/InputView/QEmotionBoardView.h b/YuMi/CustomUI/InputView/InputView/QEmotionBoardView.h new file mode 100644 index 00000000..5017c960 --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/QEmotionBoardView.h @@ -0,0 +1,122 @@ +// +// QMUIEmotionView.h +// qmui +// +// Created by QMUI Team on 16/9/6. +// 本库修改了修复QMUI的两个BUG,1:计算半透明表情的计算方式有问题,2:重新优化点击后的灰色背景的大小改为计算,而不是设置死 +// + +#import +#import "QEmotion.h" + +@class QEmotionBoardView; + +@protocol QEmotionBoardViewDelegate + +@optional +/** + * 选中表情时的回调 + * @param index 被选中的表情在`emotions`里的索引 + * @param emotion 被选中的表情对应的`QMUIEmotion`对象 + */ +- (void)emotionView:(QEmotionBoardView *)emotionView didSelectEmotion:(QEmotion *)emotion atIndex:(NSInteger)index; + +// 删除按钮的点击事件回调 +- (void)emotionViewDidSelectDeleteButton:(QEmotionBoardView *)emotionView; + +// 发送按钮的点击事件回调 +- (void)emotionViewDidSelectSendButton:(QEmotionBoardView *)emotionView; + +@end + +/** + * 表情控件,支持任意表情的展示,每个表情以相同的大小显示。 + * + * 使用方式: + * + * - 通过`initWithFrame:`初始化,如果面板高度不变,建议在init时就设置好,若最终布局以父类的`layoutSubviews`为准,则也可通过`init`方法初始化,再在`layoutSubviews`里计算布局 + * - 通过调整`paddingInPage`、`emotionSize`等变量来自定义UI + * - 通过`emotions`设置要展示的表情 + * - 通过`didSelectEmotionBlock`设置选中表情时的回调,通过`didSelectDeleteButtonBlock`来响应面板内的删除按钮 + * - 为`sendButton`添加`addTarget:action:forState:`事件,从而触发发送逻辑 + * + * 本控件支持通过`UIAppearance`设置全局的默认样式。若要修改控件内的`UIPageControl`的样式,可通过`[UIPageControl appearanceWhenContainedInInstancesOfClasses:@[[QMUIEmotionView class]]]`的方式来修改。 + */ +@interface QEmotionBoardView : UIView + +/// 要展示的所有表情 +@property(nonatomic, copy) NSArray *emotions; + +/** + * 选中表情时的回调 + * @argv index 被选中的表情在`emotions`里的索引 + * @argv emotion 被选中的表情对应的`QMUIEmotion`对象 + * @see QMUIEmotion + */ +//@property(nonatomic, copy) void (^didSelectEmotionBlock)(NSInteger index, QMUIEmotion *emotion); +// +///// 删除按钮的点击事件回调 +//@property(nonatomic, copy) void (^didSelectDeleteButtonBlock)(void); + + +@property(nonatomic, weak) id delegate; + +/// 用于展示表情面板的竖向滚动的 scrollView,布局撑满整个控件 +@property(nonatomic, strong, readonly) UIScrollView *scrollView; + +/// 表情与表情之间的垂直间距,默认为10,仅在 verticalAlignment 为 YES 时生效,当 verticalAlignment 为 N0 时,表情的垂直间距由 numberOfRowsPerPage 决定 +@property(nonatomic, assign) CGFloat emotionVerticalSpacing UI_APPEARANCE_SELECTOR; + +/// 控件右下角的发送按钮 +@property(nonatomic, strong, readonly) UIButton *sendButton; + +/// 控件右下角的删除按钮 +@property(nonatomic, strong, readonly) UIButton *deleteButton; + +/// 每一页表情的上下左右padding,默认为{18, 18, 65, 18} +@property(nonatomic, assign) UIEdgeInsets paddingInPage UI_APPEARANCE_SELECTOR; + +/// 每一页表情允许的最大行数,默认为4 +@property(nonatomic, assign) NSInteger numberOfRowsPerPage UI_APPEARANCE_SELECTOR; + +/// 表情的图片大小,不管`QMUIEmotion.image.size`多大,都会被缩放到`emotionSize`里显示,默认为{30, 30} +@property(nonatomic, assign) CGSize emotionSize UI_APPEARANCE_SELECTOR; + +/// 表情点击时的背景遮罩相对于`emotionSize`往外拓展的区域,负值表示遮罩比表情还大,正值表示遮罩比表情还小,默认为{-3, -3, -3, -3} +@property(nonatomic, assign) UIEdgeInsets emotionSelectedBackgroundExtension UI_APPEARANCE_SELECTOR; + +/// 表情与表情之间的最小水平间距,默认为10 +@property(nonatomic, assign) CGFloat minimumEmotionHorizontalSpacing UI_APPEARANCE_SELECTOR; + +/// 表情面板右下角的删除按钮的图片,默认为`[QMUIHelper imageWithName:@"QMUI_emotion_delete"]` +@property(nonatomic, strong) UIImage *deleteButtonImage UI_APPEARANCE_SELECTOR; + +/// 删除按钮的背景色,默认为 nil +@property(nonatomic, strong) UIColor *deleteButtonBackgroundColor UI_APPEARANCE_SELECTOR; + +/// 删除按钮位置的 (x,y) 的偏移,默认为 CGPointZero +@property(nonatomic, assign) CGPoint deleteButtonOffset UI_APPEARANCE_SELECTOR; + +/// 删除按钮的圆角大小,默认为4 +@property(nonatomic, assign) CGFloat deleteButtonCornerRadius UI_APPEARANCE_SELECTOR; + +/// 发送按钮的文字样式,默认为{NSFontAttributeName: UIFontMake(15), NSForegroundColorAttributeName: UIColorWhite} +@property(nonatomic, strong) NSDictionary *sendButtonTitleAttributes UI_APPEARANCE_SELECTOR; + +/// 发送按钮的背景色,默认为`UIColorBlue` +@property(nonatomic, strong) UIColor *sendButtonBackgroundColor UI_APPEARANCE_SELECTOR; + +/// 发送按钮的圆角大小,默认为4 +@property(nonatomic, assign) CGFloat sendButtonCornerRadius UI_APPEARANCE_SELECTOR; + +/// 发送按钮布局时的外边距,相对于控件右下角。仅right/bottom有效,默认为{0, 0, 16, 16} +@property(nonatomic, assign) UIEdgeInsets sendButtonMargins UI_APPEARANCE_SELECTOR; + +/// 分页控件距离底部的间距,默认为22 +@property(nonatomic, assign) CGFloat pageControlMarginBottom UI_APPEARANCE_SELECTOR; + +/// 顶部那条细线 +@property(nonatomic, strong) UIView *topLineView; + + +@end diff --git a/YuMi/CustomUI/InputView/InputView/QEmotionBoardView.m b/YuMi/CustomUI/InputView/InputView/QEmotionBoardView.m new file mode 100644 index 00000000..73b636ef --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/QEmotionBoardView.m @@ -0,0 +1,531 @@ +// +// QEmotionView.m +// qmui +// +// Created by QMUI Team on 16/9/6. +// 作者DQ:这里的代码我是从QMUI里摘抄出来再做了删减。然后我修改了修复QMUI的两个BUG,1:半透明表情的Rect计算方式有问题,2:重新优化点击后的灰色背景的大小改为计算,而不是设置死,3:添加了顶部的一条细线 +// + +#import "QEmotionBoardView.h" + + +@class UIEmotionPageView; + +@protocol UIEmotionPageViewDelegate + +@optional +- (void)emotionPageView:(UIEmotionPageView *)emotionPageView didSelectEmotion:(QEmotion *)emotion atIndex:(NSInteger)index; +- (void)emotionPageViewDidLayoutEmotions:(UIEmotionPageView *)emotionPageView; +@end + +/// 表情面板每一页的cell,在drawRect里将所有表情绘制上去,同时自带一个末尾的删除按钮 +@interface UIEmotionPageView : UIView + +@property(nonatomic, weak) QEmotionBoardView *delegate; + +/// 表情被点击时盖在表情上方用于表示选中的遮罩 +@property(nonatomic, strong) UIView *emotionSelectedBackgroundView; + +/// 表情面板右下角的删除按钮 +@property(nonatomic, weak) UIButton *deleteButton; + +/// 删除按钮位置的 (x,y) 的偏移 +@property(nonatomic, assign) CGPoint deleteButtonOffset; + +/// 所有表情的 Layer +@property(nonatomic, strong) NSMutableArray *emotionLayers; + +/// 分配给当前pageView的所有表情 +@property(nonatomic, copy) NSArray *emotions; + +/// 记录当前pageView里所有表情的可点击区域的rect,在drawRect:里更新,在tap事件里使用 +@property(nonatomic, strong) NSMutableArray *emotionHittingRects; + +/// 负责实现表情的点击 +@property(nonatomic, strong) UITapGestureRecognizer *tapGestureRecognizer; + +/// 整个pageView内部的padding +@property(nonatomic, assign) UIEdgeInsets padding; + +/// 每个pageView能展示表情的行数 +@property(nonatomic, assign) NSInteger numberOfRows; + +/// 每个表情的绘制区域大小,表情图片最终会以UIViewContentModeScaleAspectFit的方式撑满这个大小。表情计算布局时也是基于这个大小来算的。 +@property(nonatomic, assign) CGSize emotionSize; + +/// 点击表情时出现的遮罩要在表情所在的矩形位置拓展多少空间,负值表示遮罩比emotionSize更大,正值表示遮罩比emotionSize更小。最终判断表情点击区域时也是以拓展后的区域来判定的 +@property(nonatomic, assign) UIEdgeInsets emotionSelectedBackgroundExtension; + +/// 表情与表情之间的水平间距的最小值,实际值可能比这个要大一点(pageView会把剩余空间分配到表情的水平间距里) +@property(nonatomic, assign) CGFloat minimumEmotionHorizontalSpacing; + +/// debug模式会把表情的绘制矩形显示出来 +@property(nonatomic, assign) BOOL debug; + +@property(nonatomic, assign, readonly) BOOL needsLayoutEmotions; + +@property(nonatomic, assign) CGRect previousLayoutFrame; + +@end + +@implementation UIEmotionPageView + +//发送按钮,删除按钮的宽高 +const int UISendButtonWidth = 52; +const int UISendButtonHeight = 41; + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + self.emotionSelectedBackgroundView = [[UIView alloc] init]; + self.emotionSelectedBackgroundView.userInteractionEnabled = NO; + self.emotionSelectedBackgroundView.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:.16]; + self.emotionSelectedBackgroundView.layer.cornerRadius = 3; + self.emotionSelectedBackgroundView.alpha = 0; + [self addSubview:self.emotionSelectedBackgroundView]; + + self.emotionHittingRects = [[NSMutableArray alloc] init]; + self.tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGestureRecognizer:)]; + [self addGestureRecognizer:self.tapGestureRecognizer]; + } + return self; +} + +- (CGRect)frameForDeleteButton:(__kindof UIView *)deleteButton { + CGRect rect = deleteButton.frame; + CGFloat x = CGRectGetWidth(self.bounds) - self.padding.right - CGRectGetWidth(deleteButton.frame) - (self.emotionSize.width - CGRectGetWidth(deleteButton.frame)) / 2.0 + self.deleteButtonOffset.x; + CGFloat y = CGRectGetHeight(self.bounds) - self.padding.bottom - CGRectGetHeight(deleteButton.frame) - (self.emotionSize.height - CGRectGetHeight(deleteButton.frame)) / 2.0 + self.deleteButtonOffset.y; + rect.origin.x = x; + rect.origin.y = y; + return rect; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + if (self.deleteButton.superview == self) { + // 删除按钮必定布局到最后一个表情的位置,且与表情上下左右居中 + self.deleteButton.frame = [self frameForDeleteButton:self.deleteButton]; + } + BOOL isSizeChanged = !CGSizeEqualToSize(self.previousLayoutFrame.size, self.frame.size); + self.previousLayoutFrame = self.frame; + if (isSizeChanged) { + [self setNeedsLayoutEmotions]; + } + [self layoutEmotionsIfNeeded]; +} + +- (void)setNeedsLayoutEmotions { + _needsLayoutEmotions = YES; +} + +- (void)setEmotions:(NSArray *)emotions { + if ([_emotions isEqualToArray:emotions]) return; + _emotions = emotions; + [self setNeedsLayoutEmotions]; + [self setNeedsLayout]; +} + +- (void)layoutEmotionsIfNeeded { + if (!self.needsLayoutEmotions) return; + _needsLayoutEmotions = NO; + [self.emotionHittingRects removeAllObjects]; + + CGSize contentSize = UIEdgeInsetsInsetRect(self.bounds, self.padding).size; + //根据小表情的自身大小+水平最小间距,算出来一行有多少个表情 + NSInteger emotionCountPerRow = (contentSize.width + self.minimumEmotionHorizontalSpacing) / (self.emotionSize.width + self.minimumEmotionHorizontalSpacing); + //最后算出来的 实际表情之间的水平间距 + CGFloat emotionHorizontalSpacing = (contentSize.width - emotionCountPerRow * self.emotionSize.width) / (emotionCountPerRow - 1); + //最后算出来的 实际表情之间的垂直间距 + CGFloat emotionVerticalSpacing = (contentSize.height - self.numberOfRows * self.emotionSize.height) / (self.numberOfRows - 1); + //最后计算出来,点击表情的扩展点击范围 ;dqdebug + self.emotionSelectedBackgroundExtension = UIEdgeInsetsMake(-emotionVerticalSpacing/2, -emotionHorizontalSpacing/2, -emotionVerticalSpacing/2, -emotionHorizontalSpacing/2); + CGPoint emotionOrigin = CGPointZero; + NSInteger emotionCount = self.emotions.count; + if (!self.emotionLayers) { + self.emotionLayers = [NSMutableArray arrayWithCapacity:emotionCount]; + } + for (NSInteger i = 0; i < emotionCount; i++) { + CALayer *emotionlayer = nil; + if (i < self.emotionLayers.count) { + emotionlayer = self.emotionLayers[i]; + } else { + emotionlayer = [CALayer layer]; + emotionlayer.contentsScale = [[UIScreen mainScreen] scale]; + [self.emotionLayers addObject:emotionlayer]; + [self.layer addSublayer:emotionlayer]; + } + + emotionlayer.contents = (__bridge id)(self.emotions[i].image.CGImage);//使用layer效率更高 + NSInteger row = i / emotionCountPerRow; + emotionOrigin.x = self.padding.left + (self.emotionSize.width + emotionHorizontalSpacing) * (i % emotionCountPerRow); + emotionOrigin.y = self.padding.top + (self.emotionSize.height + emotionVerticalSpacing) * row; + CGRect emotionRect = CGRectMake(emotionOrigin.x, emotionOrigin.y, self.emotionSize.width, self.emotionSize.height); + CGRect emotionHittingRect = UIEdgeInsetsInsetRect(emotionRect, self.emotionSelectedBackgroundExtension); + [self.emotionHittingRects addObject:[NSValue valueWithCGRect:emotionHittingRect]]; + emotionlayer.frame = emotionRect; + emotionlayer.hidden = NO; + } + + if (self.emotionLayers.count > emotionCount) { + for (NSInteger i = self.emotionLayers.count - emotionCount - 1; i < self.emotionLayers.count; i++) { + self.emotionLayers[i].hidden = YES; + } + } + if ([self.delegate respondsToSelector:@selector(emotionPageViewDidLayoutEmotions:)]) { + [self.delegate emotionPageViewDidLayoutEmotions:self]; + } +} + +//监听整个大面板的点击事件,然后找到具体的某个表情 +- (void)handleTapGestureRecognizer:(UITapGestureRecognizer *)gestureRecognizer { + CGPoint location = [gestureRecognizer locationInView:self]; + for (NSInteger i = 0; i < self.emotionHittingRects.count; i ++) { + CGRect rect = [self.emotionHittingRects[i] CGRectValue]; + if (CGRectContainsPoint(rect, location)) { + CALayer *layer = self.emotionLayers[i]; + if (layer.opacity < 0.2) return; + QEmotion *emotion = self.emotions[i]; + self.emotionSelectedBackgroundView.frame = rect; + [UIView animateWithDuration:.08 animations:^{ + self.emotionSelectedBackgroundView.alpha = 1; + } completion:^(BOOL finished) { + [UIView animateWithDuration:.08 animations:^{ + self.emotionSelectedBackgroundView.alpha = 0; + } completion:nil]; + }]; + if ([self.delegate respondsToSelector:@selector(emotionPageView:didSelectEmotion:atIndex:)]) { + [self.delegate emotionPageView:self didSelectEmotion:emotion atIndex:i]; + } + if (self.debug) { +// QMUILog(NSStringFromClass(self.class), @"点击的是当前页里的第 %@ 个表情,%@", @(i), emotion); + } + return; + } + } +} + +- (CGSize)verticalSizeThatFits:(CGSize)size emotionVerticalSpacing:(CGFloat)emotionVerticalSpacing { + CGSize contentSize = UIEdgeInsetsInsetRect(CGRectMake(0, 0, size.width, size.height), self.padding).size; + NSInteger emotionCountPerRow = (contentSize.width + self.minimumEmotionHorizontalSpacing) / (self.emotionSize.width + self.minimumEmotionHorizontalSpacing); + NSInteger row = ceil(self.emotions.count / (emotionCountPerRow * 1.0)); + CGFloat height = (self.emotionSize.height + emotionVerticalSpacing) * row - emotionVerticalSpacing + ( self.padding.top + self.padding.bottom); + return CGSizeMake(size.width, height); +} + +- (void)updateDeleteButton:(UIButton *)deleteButton { + _deleteButton = deleteButton; + [self addSubview:deleteButton]; +} + +- (void)setDeleteButtonOffset:(CGPoint)deleteButtonOffset { + _deleteButtonOffset = deleteButtonOffset; + [self setNeedsLayout]; +} + + +@end + +@interface UIEmotionVerticalScrollView : UIScrollView +@property(nonatomic, strong) UIEmotionPageView *pageView; +@end + +@implementation UIEmotionVerticalScrollView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + _pageView = [[UIEmotionPageView alloc] init]; + self.pageView.deleteButton.hidden = YES; + [self addSubview:self.pageView]; + } + return self; +} + +- (void)setEmotions:(NSArray *)emotions + emotionSize:(CGSize)emotionSize + minimumEmotionHorizontalSpacing:(CGFloat)minimumEmotionHorizontalSpacing + emotionVerticalSpacing:(CGFloat)emotionVerticalSpacing + emotionSelectedBackgroundExtension:(UIEdgeInsets)emotionSelectedBackgroundExtension + paddingInPage:(UIEdgeInsets)paddingInPage { + UIEmotionPageView *pageView = self.pageView; + pageView.emotions = emotions; + pageView.padding = paddingInPage; + CGSize contentSize = CGSizeMake(self.bounds.size.width - [self edgeInsetsGetHorizontalValue:paddingInPage], self.bounds.size.height - [self edgeInsetsGetVerticalValue:paddingInPage]); + NSInteger emotionCountPerRow = (contentSize.width + minimumEmotionHorizontalSpacing) / (emotionSize.width + minimumEmotionHorizontalSpacing); + pageView.numberOfRows = ceil(emotions.count / (CGFloat)emotionCountPerRow); + pageView.emotionSize =emotionSize; + pageView.emotionSelectedBackgroundExtension = emotionSelectedBackgroundExtension; + pageView.minimumEmotionHorizontalSpacing = minimumEmotionHorizontalSpacing; + [pageView setNeedsLayout]; + CGSize size = [pageView verticalSizeThatFits:self.bounds.size emotionVerticalSpacing:emotionVerticalSpacing]; + self.pageView.frame = CGRectMake(0, 0, size.width, size.height); + self.contentSize = size; +} + +- (void)adjustEmotionsAlphaWithFloatingRect:(CGRect)floatingRect { + CGSize contentSize = CGSizeMake(self.contentSize.width - [self edgeInsetsGetHorizontalValue:self.pageView.padding], self.contentSize.height - [self edgeInsetsGetVerticalValue:self.pageView.padding]); + NSInteger emotionCountPerRow = (contentSize.width + self.pageView.minimumEmotionHorizontalSpacing) / (self.pageView.emotionSize.width + self.pageView.minimumEmotionHorizontalSpacing); + CGFloat emotionVerticalSpacing = (contentSize.height - self.pageView.numberOfRows * self.pageView.emotionSize.height) / (self.pageView.numberOfRows - 1); + //最后算出来的 实际表情之间的水平间距 + CGFloat emotionHorizontalSpacing = (contentSize.width - emotionCountPerRow * self.pageView.emotionSize.width) / (emotionCountPerRow - 1); + NSInteger columnIndexLeft = ceil((floatingRect.origin.x - self.pageView.padding.left) / (self.pageView.emotionSize.width + emotionHorizontalSpacing)) - 1; + NSInteger columnIndexRight = emotionCountPerRow - 1; + CGFloat rowIndexTop = ((floatingRect.origin.y - self.pageView.padding.top) / (self.pageView.emotionSize.height + emotionVerticalSpacing)) - 1; + for (NSInteger i = 0; i < self.pageView.emotionLayers.count; i++) { + NSInteger row = (i / emotionCountPerRow); + NSInteger column = (i % emotionCountPerRow); + + [CATransaction begin]; + [CATransaction setDisableActions:YES]; + if (column >= columnIndexLeft && column <= columnIndexRight && row > rowIndexTop) { + if (row == ceil(rowIndexTop)) { + CGFloat intersectAreaHeight = floatingRect.origin.y - self.pageView.emotionLayers[i].frame.origin.y; + CGFloat percent = intersectAreaHeight / self.pageView.emotionSize.height; + self.pageView.emotionLayers[i].opacity = percent * percent; + } else { + self.pageView.emotionLayers[i].opacity = 0; + } + } else { + self.pageView.emotionLayers[i].opacity = 1.0f; + } + [CATransaction commit]; + } +} + + +- (CGFloat)edgeInsetsGetVerticalValue:(UIEdgeInsets )insets { + return insets.top + insets.bottom; +} + +- (CGFloat)edgeInsetsGetHorizontalValue:(UIEdgeInsets )insets { + return insets.left + insets.right; +} + + +@end + +@interface QEmotionBoardView () +/// 用于展示表情面板的竖向滚动 scrollView,布局撑满整个控件 +@property(nonatomic, strong, readonly) UIEmotionVerticalScrollView *verticalScrollView; +@property(nonatomic, strong) NSMutableArray *> *pagedEmotions; +@property(nonatomic, assign) BOOL debug; +@end + +@implementation QEmotionBoardView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self didInitializedWithFrame:frame]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)aDecoder { + if (self = [super initWithCoder:aDecoder]) { + [self didInitializedWithFrame:CGRectZero]; + } + return self; +} + +- (void)didInitializedWithFrame:(CGRect)frame { + self.debug = NO; + + self.pagedEmotions = [[NSMutableArray alloc] init]; + + _verticalScrollView = [[UIEmotionVerticalScrollView alloc] init]; + if (@available(iOS 11, *)) { + self.verticalScrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + _verticalScrollView.delegate = self; + [self addSubview:self.verticalScrollView]; + + _sendButton = [[UIButton alloc] init]; + [self.sendButton setTitle:YMLocalizedString(@"QEmotionBoardView0") forState:UIControlStateNormal]; + [self.sendButton addTarget:self action:@selector(didSelectSendButton:) forControlEvents:UIControlEventTouchUpInside]; +// self.sendButton.contentEdgeInsets = UIEdgeInsetsMake(5, 17, 5, 17); + [self addSubview:self.sendButton]; + + _deleteButton = [[UIButton alloc] init]; + + NSBundle *bundle = [NSBundle bundleForClass:[self class]]; + [_deleteButton setImage:self.deleteButtonImage forState:UIControlStateNormal]; + [_deleteButton setBackgroundImage:[UIImage imageNamed:@"q_white_btn" inBundle:bundle compatibleWithTraitCollection:nil] forState:UIControlStateNormal]; + [_deleteButton addTarget:self action:@selector(didSelectDeleteButton:) forControlEvents:UIControlEventTouchUpInside]; +// _deleteButton.layer.cornerRadius = 6; +// _deleteButton.layer.masksToBounds = YES; + [self addSubview:_deleteButton]; + + + //输入条的上方添加一行细线 + UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.bounds), 1 / [UIScreen mainScreen].scale)]; + if (@available(iOS 11.0, *)) { + NSBundle *bundle = [NSBundle bundleForClass:[UIEmotionPageView class]]; + lineView.backgroundColor = [UIColor colorNamed:@"q_border223" inBundle:bundle compatibleWithTraitCollection:nil]; + } else { + lineView.backgroundColor = [UIColor colorWithRed:223/255.0f green:223/255.0f blue:223/255.0f alpha:1]; + } + [self addSubview:lineView]; + self.topLineView = lineView; +} + +- (void)setEmotions:(NSArray *)emotions { + _emotions = emotions; + [self setNeedsLayout]; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + self.sendButton.frame = CGRectMake(CGRectGetWidth(self.frame) - self.sendButtonMargins.right - UISendButtonWidth, CGRectGetHeight(self.frame) - self.qmui_safeAreaInsets.bottom - self.sendButtonMargins.bottom - UISendButtonHeight, UISendButtonWidth, UISendButtonHeight); + + UIEdgeInsets paddingInPage = self.paddingInPage; + paddingInPage.bottom = self.paddingInPage.bottom + self.qmui_safeAreaInsets.bottom; + + CGRect verticalScrollViewFrame = UIEdgeInsetsInsetRect(self.bounds, UIEdgeInsetsZero); + self.verticalScrollView.frame = verticalScrollViewFrame; + [self.verticalScrollView setEmotions:self.emotions + emotionSize:self.emotionSize + minimumEmotionHorizontalSpacing:self.minimumEmotionHorizontalSpacing + emotionVerticalSpacing:self.emotionVerticalSpacing + emotionSelectedBackgroundExtension:self.emotionSelectedBackgroundExtension + paddingInPage:paddingInPage]; + self.verticalScrollView.pageView.delegate = self; + + static CGFloat spacingBetweenDeleteButtonAndSendButton = 10.0f; + + self.deleteButton.frame = CGRectMake(CGRectGetMinX(self.sendButton.frame) - spacingBetweenDeleteButtonAndSendButton - self.deleteButtonOffset.x - UISendButtonWidth, self.sendButton.frame.origin.y, UISendButtonWidth, UISendButtonHeight); + + self.topLineView.frame = CGRectMake(0, 0, CGRectGetWidth(self.bounds), 1 / [UIScreen mainScreen].scale); +} + + +- (void)adjustEmotionsAlpha { + CGFloat x = MIN(self.deleteButton.frame.origin.x, self.sendButton.frame.origin.x); + CGFloat y = MIN(self.deleteButton.frame.origin.y, self.sendButton.frame.origin.y); + CGFloat width = CGRectGetMaxX(self.sendButton.frame) - CGRectGetMinX(self.deleteButton.frame); + CGFloat height = MAX(CGRectGetMaxY(self.deleteButton.frame), CGRectGetMaxY(self.sendButton.frame)) - MIN(CGRectGetMinY(self.deleteButton.frame), CGRectGetMinY(self.sendButton.frame)); + CGRect buttonGruopRect = CGRectMake(x, y, width, height); + CGRect floatingRect = [self.verticalScrollView convertRect:buttonGruopRect fromView:self]; + [self.verticalScrollView adjustEmotionsAlphaWithFloatingRect:floatingRect]; +} + +- (UIEdgeInsets)qmui_safeAreaInsets { + if (@available(iOS 11.0, *)) { + return self.safeAreaInsets; + } + return UIEdgeInsetsZero; +} + +- (IBAction)didSelectDeleteButton:(UIButton *)sender +{ + if ([_delegate respondsToSelector:@selector(emotionViewDidSelectDeleteButton:)]){ + [_delegate emotionViewDidSelectDeleteButton:self]; + } +} + +- (IBAction)didSelectSendButton:(UIButton *)sender +{ + if ([_delegate respondsToSelector:@selector(emotionViewDidSelectSendButton:)]){ + [_delegate emotionViewDidSelectSendButton:self]; + } +} + +#pragma mark - UIAppearance Setter + +- (void)setSendButtonTitleAttributes:(NSDictionary *)sendButtonTitleAttributes { + _sendButtonTitleAttributes = sendButtonTitleAttributes; + [self.sendButton setAttributedTitle:[[NSAttributedString alloc] initWithString:[self.sendButton currentTitle] attributes:_sendButtonTitleAttributes] forState:UIControlStateNormal]; +} + +- (void)setSendButtonBackgroundColor:(UIColor *)sendButtonBackgroundColor { + _sendButtonBackgroundColor = sendButtonBackgroundColor; + self.sendButton.backgroundColor = _sendButtonBackgroundColor; +} + +- (void)setSendButtonCornerRadius:(CGFloat)sendButtonCornerRadius { + _sendButtonCornerRadius = sendButtonCornerRadius; + self.sendButton.layer.cornerRadius = _sendButtonCornerRadius; + self.sendButton.layer.masksToBounds = YES; +} + +- (void)setDeleteButtonBackgroundColor:(UIColor *)deleteButtonBackgroundColor { + _deleteButtonBackgroundColor = deleteButtonBackgroundColor; + self.deleteButton.backgroundColor = deleteButtonBackgroundColor; +} + +- (void)setDeleteButtonImage:(UIImage *)deleteButtonImage { + _deleteButtonImage = deleteButtonImage; + [self.deleteButton setImage:self.deleteButtonImage forState:UIControlStateNormal]; +} + +- (void)setDeleteButtonCornerRadius:(CGFloat)deleteButtonCornerRadius { + _deleteButtonCornerRadius = deleteButtonCornerRadius; + self.deleteButton.layer.cornerRadius = deleteButtonCornerRadius; + self.deleteButton.layer.masksToBounds = YES; +} + +#pragma mark - + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + if (scrollView == self.verticalScrollView) { + [self adjustEmotionsAlpha]; + } +} + +#pragma mark - +- (void)emotionPageView:(UIEmotionPageView *)emotionPageView didSelectEmotion:(QEmotion *)emotion atIndex:(NSInteger)index { + //再回调给vc,之前QMUI官方demo里这里是用的block,为了兼容swift和代码清晰,我修改成了delegate + if ([self.delegate respondsToSelector:@selector(emotionView:didSelectEmotion:atIndex:)]){ + NSInteger index = [self.emotions indexOfObject:emotion]; + [self.delegate emotionView:self didSelectEmotion:emotion atIndex:index]; + } +} + +- (void)emotionPageViewDidLayoutEmotions:(UIEmotionPageView *)emotionPageView { + [self adjustEmotionsAlpha]; +} + +#pragma mark - Getter + +- (UIScrollView *)scrollView { + return self.verticalScrollView; +} + +@end + +@interface QEmotionBoardView (UIAppearance) + +@end + +@implementation QEmotionBoardView (UIAppearance) + ++ (void)initialize { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + [self setDefaultAppearance]; + }); +} + ++ (void)setDefaultAppearance { + + NSBundle *bundle = [NSBundle bundleForClass:[QEmotionBoardView class]]; + + QEmotionBoardView *appearance = [QEmotionBoardView appearance]; + appearance.backgroundColor = nil; + appearance.deleteButtonImage = [UIImage imageNamed:@"q_emotion_delete" inBundle:bundle compatibleWithTraitCollection:nil]; + appearance.paddingInPage = UIEdgeInsetsMake(18, 18, 65, 18); //65是滚到底部时候的一大片空白,微信也有 + appearance.emotionSize = CGSizeMake(34, 34); + appearance.minimumEmotionHorizontalSpacing = 16; + appearance.sendButtonTitleAttributes = @{NSFontAttributeName: [UIFont systemFontOfSize:17], NSForegroundColorAttributeName: [UIColor whiteColor]}; + appearance.sendButtonBackgroundColor = [UIColor colorWithRed:32/255.0 green:191/255.0 blue:100/255.0 alpha:1];; + appearance.sendButtonCornerRadius = 4; + appearance.sendButtonMargins = UIEdgeInsetsMake(0, 0, 18, 18);//要和上面的paddingInPage一致 + appearance.pageControlMarginBottom = 22; + appearance.deleteButtonCornerRadius = 4; + appearance.emotionVerticalSpacing = 16; + + UIPageControl *pageControlAppearance = [UIPageControl appearanceWhenContainedInInstancesOfClasses:@[[QEmotionBoardView class]]]; + pageControlAppearance.pageIndicatorTintColor = [UIColor colorWithRed:210/255.0 green:210/255.0 blue:210/255.0 alpha:1]; + pageControlAppearance.currentPageIndicatorTintColor = [UIColor colorWithRed:162/255.0 green:162/255.0 blue:162/255.0 alpha:1]; +} + +@end diff --git a/YuMi/CustomUI/InputView/InputView/QEmotionHelper.h b/YuMi/CustomUI/InputView/InputView/QEmotionHelper.h new file mode 100644 index 00000000..5d1ca39d --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/QEmotionHelper.h @@ -0,0 +1,31 @@ +// +// FaceManager.h +// pinpin +// +// Created by DongJin on 15-7-15. +// Copyright (c) 2015年 ibluecollar. All rights reserved. +// + +#import +#import "QEmotionBoardView.h" +#import + +//表情转换类 +@interface QEmotionHelper : NSObject +{ + +} + ++ (QEmotionHelper *)sharedEmotionHelper; + +//显示表情键盘面板的时候,用这个。测试结果是占用0.5MB的内存(永驻) +@property (strong, nonatomic) NSArray *emotionArray; + +//imageKey:[微笑] font:label的Font,返回😊 +//把 @"[微笑]" 转为 @"😊" +- (NSAttributedString *)obtainAttributedStringByImageKey:(NSString *)imageKey font:(UIFont *)font useCache:(BOOL)useCache; + +//把 @"害~你好啊[微笑]" 转为 @"害~你好啊😊" +- (NSMutableAttributedString *)attributedStringByText:(NSString *)text font:(UIFont *)font; + +@end diff --git a/YuMi/CustomUI/InputView/InputView/QEmotionHelper.m b/YuMi/CustomUI/InputView/InputView/QEmotionHelper.m new file mode 100644 index 00000000..42fca428 --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/QEmotionHelper.m @@ -0,0 +1,171 @@ +// +// FaceManager.m +// pinpin +// +// Created by DongJin on 15-7-15. +// Copyright (c) 2015年 ibluecollar. All rights reserved. +// + +#import "QEmotionHelper.h" +#import "QEEmotionImageView.h" +#import + +@interface QEmotionHelper() + +//key是 图片名:比如:[微笑] ; value是😊(Image) +//把[微笑]转为😊的时候,用这个。//占用内存0.2M +@property (strong, nonatomic) NSDictionary *cacheTotalImageDictionary; + +//key是 图片名+font:比如:[微笑]17 ; value是😊(NSAttributedString) +//Tips:ios15用不到这个 +@property (strong, nonatomic) NSMutableDictionary *cacheAttributedDictionary; + +//把[微笑]转为😊的正则 +@property (strong, nonatomic) NSRegularExpression * regularExpression; + + +@end + +@implementation QEmotionHelper + ++ (QEmotionHelper *)sharedEmotionHelper { + static QEmotionHelper *_sharedFaceManager = nil; + static dispatch_once_t predUser; + dispatch_once(&predUser, ^{ + _sharedFaceManager = [[QEmotionHelper alloc] init]; + + _sharedFaceManager.regularExpression = + [NSRegularExpression regularExpressionWithPattern:@"\\[[a-zA-Z0-9\\u4e00-\\u9fa5]+\\]" + options:kNilOptions + error:nil]; + + _sharedFaceManager.cacheAttributedDictionary = [NSMutableDictionary dictionary]; + }); + return _sharedFaceManager; +} + +#pragma mark - public +//本方法我这里只是demo演示;实际开发中,可以改为你自己的获取表情列表的写法 +//由于emotionArray包含Image,测试结果是占用0.5MB的内存(永驻) +- (void)setEmotionArray:(NSArray *)emotionArray { + + _emotionArray = emotionArray; + + //重置Image字典 + _cacheTotalImageDictionary = nil; + [self cacheTotalImageDictionary]; +} + +//懒加载;key是 图片名:比如:[微笑] ; value是😊(Image) +- (NSDictionary *)cacheTotalImageDictionary { + if (!_cacheTotalImageDictionary) { + NSMutableDictionary *emotionImageDictionary = [[NSMutableDictionary alloc] init]; + for (QEmotion *e in _emotionArray) { + if (!e.image) { + //建议在外部AppDelegate里就设置好image,不建议走这里 + e.image = [UIImage imageNamed:e.identifier]; + } + [emotionImageDictionary setObject:e.image forKey:e.displayName]; + } + _cacheTotalImageDictionary = emotionImageDictionary; + } + return _cacheTotalImageDictionary; +} + +//把整段String:@"害~你好[微笑]" 转为 @"害~你好😊" +- (NSMutableAttributedString *)attributedStringByText:(NSString *)text font:(UIFont *)font { + + NSArray *emojis = [self.regularExpression matchesInString:text options:NSMatchingWithTransparentBounds range:NSMakeRange(0, [text length])]; + + NSMutableAttributedString *intactAttributeString = [[NSMutableAttributedString alloc] initWithString:text]; + + // 逆序遍历数组 + [emojis enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + + NSTextCheckingResult *result = (NSTextCheckingResult *)obj; + + NSString *emojiKey = [text substringWithRange:result.range]; + + BOOL useCache = NO; + if (@available(iOS 15.0, *)) { + //在ios15上不可以用缓存的NSAttributedString,会只出现1个表情,在ios14以及之前是可以。 + //ios15他采用了NSTextAttachmentViewProvider,具体我没研究 + useCache = NO; + } + NSAttributedString *imageAttributedString = [self obtainAttributedStringByImageKey:emojiKey font:font useCache:useCache]; + if (imageAttributedString) { + [intactAttributeString replaceCharactersInRange:result.range withAttributedString:imageAttributedString]; + } + }]; + + // 修复由于插入AttributeString而导致font改变的问题;防止插入表情后textView的font变小 + [intactAttributeString addAttributes:@{NSFontAttributeName: font} range:NSMakeRange(0, intactAttributeString.length)]; + + return intactAttributeString; +} + +#pragma mark - public +//把只是单纯的一个表情转为AttributedString +//imageKey:[微笑] ,font:label的Font,返回😊 +//把 @"[微笑]" 转为 @"😊" +- (NSAttributedString *)obtainAttributedStringByImageKey:(NSString *)imageKey font:(UIFont *)font useCache:(BOOL)useCache { + + if (!useCache) { + //不从缓存中取AttributedString,(因为输入栏中的AttributedString如果是同一个对象,在ios12上会有长按bug) + UIImage *image = self.cacheTotalImageDictionary[imageKey]; + if (!image){ + //说明压根就没匹配上,比如:[随便打的字] + return nil; + } + QEEmotionImageView *imageView = [[QEEmotionImageView alloc] init]; + imageView.layer.masksToBounds = YES; + imageView.contentMode = UIViewContentModeScaleAspectFit; + imageView.displayText = imageKey; + imageView.image = image; + if (image) { + CGFloat scale = image.size.width / image.size.height; + imageView.bounds = CGRectMake(0, 0, 20 * scale, 20); + } else { + imageView.bounds = CGRectMake(0, 0, 20, 20); + } + imageView.bounds = CGRectMake(0, 0, font.lineHeight, font.lineHeight); + NSMutableAttributedString * attrString = [NSMutableAttributedString yy_attachmentStringWithContent:imageView contentMode:UIViewContentModeScaleAspectFit attachmentSize:CGSizeMake(imageView.bounds.size.width, imageView.bounds.size.height) alignToFont:[UIFont systemFontOfSize:15.0] alignment:YYTextVerticalAlignmentCenter]; + return attrString; + } + + + + //keyFont 是: [微笑]17 、[旺柴]17 + NSString *keyFont = [NSString stringWithFormat:@"%@%.1f", imageKey, font.pointSize]; + //在ios15上不可以用缓存的NSAttributedString,在ios14以及之前是可以 + NSAttributedString *result = _cacheAttributedDictionary[keyFont]; + if (result){ + //从缓存中取 + return result; + } + + UIImage *image = self.cacheTotalImageDictionary[imageKey]; + if (!image){ + //说明压根就没匹配上,比如:[随便打的字] + return nil; + } + QEEmotionImageView *imageView = [[QEEmotionImageView alloc] init]; + imageView.layer.masksToBounds = YES; + imageView.contentMode = UIViewContentModeScaleAspectFit; + imageView.displayText = imageKey; + imageView.image = image; + if (image) { + CGFloat scale = image.size.width / image.size.height; + imageView.bounds = CGRectMake(0, 0, 20 * scale, 20); + } else { + imageView.bounds = CGRectMake(0, 0, 20, 20); + } + imageView.bounds = CGRectMake(0, 0, font.lineHeight, font.lineHeight); + NSMutableAttributedString * attrString = [NSMutableAttributedString yy_attachmentStringWithContent:imageView contentMode:UIViewContentModeScaleAspectFit attachmentSize:CGSizeMake(imageView.bounds.size.width, imageView.bounds.size.height) alignToFont:[UIFont systemFontOfSize:15.0] alignment:YYTextVerticalAlignmentCenter]; + //[微笑]17 对应的NSAttributedString 缓存到Dictionary中 + [_cacheAttributedDictionary setObject:attrString forKey:keyFont]; + return result; +} + + +@end diff --git a/YuMi/CustomUI/InputView/InputView/QExtendBoardView.h b/YuMi/CustomUI/InputView/InputView/QExtendBoardView.h new file mode 100755 index 00000000..063b8b72 --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/QExtendBoardView.h @@ -0,0 +1,67 @@ +// +// QExtendBoardView.h +// QKeyBoardDemo +// +// Created by QDong on 14-5-1. +// Copyright (c) 2021年 QDong QQ:285275534@qq.com. All rights reserved. +// + +#import + + +@interface QExtendBoardItemModel : NSObject + +/** + * Cell图片 + */ +@property (nonatomic, strong) UIImage *normalIconImage; + +/** + * Cell标题 + */ +@property (nonatomic, strong) NSString *title; + +/** + * 根据正常图片和标题初始化一个Model对象 + * + * @param normalIconImage 正常图片 + * @param title 标题 + * + * @return 返回一个Model对象 + */ +- (instancetype)initWithNormalIconImage:(UIImage *)normalIconImage + title:(NSString *)title; + +@end + + +@protocol QExtendBoardViewDelegate + +@optional +/** + * 点击拓展面板的cell + * + * @param shareMenuItem 被点击的第三方Model对象,可以在这里做一些特殊的定制 + * @param index 被点击的位置 + */ +- (void)didSelectExtendBoardItem:(QExtendBoardItemModel *)shareMenuItem atIndex:(NSInteger)index; + +@end + + +@interface QExtendBoardView : UIView + +//第三方功能Models +@property (nonatomic, strong) NSArray *extendBoardItems; + +@property (nonatomic, weak) id delegate; + +/** + * 根据数据源刷新第三方功能按钮的布局 + */ +- (void)reloadData; + + +- (void)reloadItemOfIndex:(int)index withNormalIconImage:(UIImage *)image withTitle:(NSString *)title ; + +@end diff --git a/YuMi/CustomUI/InputView/InputView/QExtendBoardView.m b/YuMi/CustomUI/InputView/InputView/QExtendBoardView.m new file mode 100755 index 00000000..28b6b718 --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/QExtendBoardView.m @@ -0,0 +1,279 @@ +// +// QExtendBoardView.m +// QKeyBoardDemo +// +// Created by QDong on 14-5-1. +// Copyright (c) 2021年 QDong QQ:285275534@qq.com. All rights reserved. +// + +#import "QExtendBoardView.h" + +const int UIPageControlHeight = 56; + +const int UIMenuItemCellWidth = 80; + +const int UIMenuItemCellHeight = 90; + +const int UIPerColumItemCount = 2; + +@implementation QExtendBoardItemModel + +- (instancetype)initWithNormalIconImage:(UIImage *)normalIconImage + title:(NSString *)title { + self = [super init]; + if (self) { + self.normalIconImage = normalIconImage; + self.title = title; + } + return self; +} + +- (void)dealloc { + self.normalIconImage = nil; + self.title = nil; +} + +@end + +@interface QExtendBoardCollectionCell : UIView + +/** + * 第三方按钮 + */ +@property (nonatomic, weak) UIButton *extendItemButton; +/** + * 第三方按钮的标题 + */ +@property (nonatomic, weak) UILabel *extendItemTitleLabel; + +/** + * 配置默认控件的方法 + */ +- (void)setup; +@end + +@implementation QExtendBoardCollectionCell + +- (void)setup { + if (!_extendItemButton) { + UIButton *extendItemButton = [UIButton buttonWithType:UIButtonTypeCustom]; + extendItemButton.frame = CGRectMake(0, 0, UIMenuItemCellWidth, UIMenuItemCellWidth); + extendItemButton.backgroundColor = [UIColor clearColor]; + [self addSubview:extendItemButton]; + + self.extendItemButton = extendItemButton; + } + + if (!_extendItemTitleLabel) { + + UILabel *extendItemTitleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(self.extendItemButton.frame), UIMenuItemCellWidth, 17)]; + extendItemTitleLabel.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + NSBundle *bundle = [NSBundle bundleForClass:[self class]]; + extendItemTitleLabel.textColor = [UIColor colorNamed:@"q_text_black_gray" inBundle:bundle compatibleWithTraitCollection:nil]; + } else { + extendItemTitleLabel.textColor = [UIColor colorWithRed:91/255.0f green:91/255.0f blue:91/255.0f alpha:1]; + } + extendItemTitleLabel.font = [UIFont systemFontOfSize:15]; + extendItemTitleLabel.textAlignment = NSTextAlignmentCenter; + [self addSubview:extendItemTitleLabel]; + + self.extendItemTitleLabel = extendItemTitleLabel; + } +} + +- (void)awakeFromNib { + [self setup]; + [super awakeFromNib]; +} + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self setup]; + } + return self; +} + +@end + +@interface QExtendBoardView () + +/** + * 这是背景滚动视图 + */ +@property (nonatomic, weak) UIScrollView *extendScrollView; + +/** + * 显示页码的视图 + */ +@property (nonatomic, weak) UIPageControl *extendPageControl; + +/** + * 第三方按钮点击的事件 + * + * @param sender 第三方按钮对象 + */ +- (void)extendItemButtonClicked:(UIButton *)sender; + +/** + * 配置默认控件 + */ +- (void)setup; + +@end + +@implementation QExtendBoardView + +- (void)extendItemButtonClicked:(UIButton *)sender { + if ([self.delegate respondsToSelector:@selector(didSelectExtendBoardItem:atIndex:)]) { + NSInteger index = sender.tag; + if (index < self.extendBoardItems.count) { + [self.delegate didSelectExtendBoardItem:[self.extendBoardItems objectAtIndex:index] atIndex:index]; + } + } +} + +- (void)reloadItemOfIndex:(int)index withNormalIconImage:(UIImage *)image withTitle:(NSString *)title { + if ([self.extendScrollView.subviews count] > index) { + QExtendBoardCollectionCell *extendItemView = self.extendScrollView.subviews[index]; + [extendItemView.extendItemButton setImage:image forState:UIControlStateNormal]; + extendItemView.extendItemTitleLabel.text = title; + } +} + +- (void)reloadData { + if (!_extendBoardItems.count) + return; + // 每行有4个 + int perRowItemCount = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) ? 10 : 4; + + [self.extendScrollView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; + + CGFloat paddingX = 10; + CGFloat paddingY = 10; + for (QExtendBoardItemModel *extendItem in self.extendBoardItems) { + NSInteger index = [self.extendBoardItems indexOfObject:extendItem]; + NSInteger page = index / (perRowItemCount * UIPerColumItemCount); + CGRect extendItemViewFrame = [self getFrameWithPerRowItemCount:perRowItemCount + perColumItemCount:UIPerColumItemCount + itemWidth:UIMenuItemCellWidth + itemHeight:UIMenuItemCellHeight + paddingX:paddingX + paddingY:paddingY + atIndex:index + onPage:page]; + QExtendBoardCollectionCell *extendItemView = [[QExtendBoardCollectionCell alloc] initWithFrame:extendItemViewFrame]; + + extendItemView.extendItemButton.tag = index; + [extendItemView.extendItemButton addTarget:self action:@selector(extendItemButtonClicked:) forControlEvents:UIControlEventTouchUpInside]; + [extendItemView.extendItemButton setImage:extendItem.normalIconImage forState:UIControlStateNormal]; + extendItemView.extendItemTitleLabel.text = extendItem.title; + + [self.extendScrollView addSubview:extendItemView]; + } + + self.extendPageControl.numberOfPages = (self.extendBoardItems.count / (perRowItemCount * 2) + (self.extendBoardItems.count % (perRowItemCount * 2) ? 1 : 0)); + [self.extendScrollView setContentSize:CGSizeMake(((self.extendBoardItems.count / (perRowItemCount * 2) + (self.extendBoardItems.count % (perRowItemCount * 2) ? 1 : 0)) * CGRectGetWidth(self.bounds)), CGRectGetHeight(self.extendScrollView.bounds))]; +} + +/** + * 通过目标的参数,获取一个grid布局 + * + * @param perRowItemCount 每行有多少列 + * @param perColumItemCount 每列有多少行 + * @param itemWidth gridItem的宽度 + * @param itemHeight gridItem的高度 + * @param paddingX gridItem之间的X轴间隔 + * @param paddingY gridItem之间的Y轴间隔 + * @param index 某个gridItem所在的index序号 + * @param page 某个gridItem所在的页码 + * + * @return 返回一个已经处理好的gridItem frame + */ +- (CGRect)getFrameWithPerRowItemCount:(NSInteger)perRowItemCount + perColumItemCount:(NSInteger)perColumItemCount + itemWidth:(CGFloat)itemWidth + itemHeight:(NSInteger)itemHeight + paddingX:(CGFloat)paddingX + paddingY:(CGFloat)paddingY + atIndex:(NSInteger)index + onPage:(NSInteger)page { + CGRect itemFrame = CGRectMake((index % perRowItemCount) * (itemWidth + paddingX) + paddingX + (page * CGRectGetWidth(self.bounds)), ((index / perRowItemCount) - perColumItemCount * page) * (itemHeight + paddingY) + paddingY, itemWidth, itemHeight); + return itemFrame; +} + +#pragma mark - Life cycle + +- (void)setup { + + if (!_extendScrollView) { + UIScrollView *extendScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.bounds), CGRectGetHeight(self.bounds) - UIPageControlHeight)]; + extendScrollView.delegate = self; + extendScrollView.canCancelContentTouches = NO; + extendScrollView.delaysContentTouches = YES; + extendScrollView.backgroundColor = self.backgroundColor; + extendScrollView.showsHorizontalScrollIndicator = NO; + extendScrollView.showsVerticalScrollIndicator = NO; + [extendScrollView setScrollsToTop:NO]; + extendScrollView.pagingEnabled = YES; + [self addSubview:extendScrollView]; + + self.extendScrollView = extendScrollView; + } + + if (!_extendPageControl) { + UIPageControl *extendPageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(self.extendScrollView.frame), CGRectGetWidth(self.bounds), UIPageControlHeight)]; + extendPageControl.backgroundColor = self.backgroundColor; + extendPageControl.hidesForSinglePage = YES; + extendPageControl.defersCurrentPageDisplay = YES; + [self addSubview:extendPageControl]; + + self.extendPageControl = extendPageControl; + } +} + +- (void)layoutSubviews { + [super layoutSubviews]; + self.extendScrollView.frame = CGRectMake(0, 0, CGRectGetWidth(self.bounds), CGRectGetHeight(self.bounds) - UIPageControlHeight); + self.extendPageControl.frame = CGRectMake(0, CGRectGetMaxY(self.extendScrollView.frame), CGRectGetWidth(self.bounds), UIPageControlHeight); +} + +- (void)awakeFromNib { + [self setup]; + [super awakeFromNib]; +} + +- (id)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + // Initialization code + [self setup]; + } + return self; +} + +- (void)dealloc { + self.extendBoardItems = nil; +// self.extendScrollView.delegate = self; + self.extendScrollView = nil; + self.extendPageControl = nil; +} + +- (void)willMoveToSuperview:(UIView *)newSuperview { + if (newSuperview) { + [self reloadData]; + } +} + +#pragma mark - UIScrollView delegate + +- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { + //每页宽度 + CGFloat pageWidth = scrollView.frame.size.width; + //根据当前的坐标与页宽计算当前页码 + NSInteger currentPage = floor((scrollView.contentOffset.x - pageWidth/2)/pageWidth)+1; + [self.extendPageControl setCurrentPage:currentPage]; +} + +@end diff --git a/YuMi/CustomUI/InputView/InputView/QInputBarView.h b/YuMi/CustomUI/InputView/InputView/QInputBarView.h new file mode 100755 index 00000000..b4da9d1d --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/QInputBarView.h @@ -0,0 +1,122 @@ +// +// QInputBarView.h +// QKeyBoardDemo +// +// Created by QDong on 14-4-24. +// Copyright (c) 2021年 QDong QQ:285275534@qq.com. All rights reserved. +// + +#import +#import "SZTextView.h" +#import "QInputBarViewConfiguration.h" + +//整个Bar的最小高度(即文字只有1行时候的高度) +extern const int UIInputBarViewMinHeight; + +@class QInputBarView; + +@protocol QInputBarViewDataSource +@optional + +//@return 输入条上的UITextView,返回你自定义的UITextView;如果不实现这个方法,本类会自己创建一个UITextView +- (UITextView *)textViewForInputBarView:(QInputBarView *)inputBarView; + +@end + +@protocol QInputBarViewDelegate + +@optional + + +// 输入框刚好开始编辑 +- (void)inputBarView:(QInputBarView *)inputBarView inputTextViewDidBeginEditing:(UITextView *)inputTextView; + +// 输入框将要开始编辑 +- (void)inputBarView:(QInputBarView *)inputBarView inputTextViewShouldBeginEditing:(UITextView *)inputTextView; + +// 输入框的高度发生了改变(因为输入了值) +- (void)inputBarView:(QInputBarView *)inputBarView inputTextView:(UITextView *)inputTextView heightDidChange:(CGFloat)changeValue becauseSendText:(BOOL)becauseSendText; + +/** + * 在发送文本和语音之间发送改变时,会触发这个回调函数 + */ +- (void)inputBarView:(QInputBarView *)inputBarView onVoiceSwitchButtonClick:(UIButton *)voiceSwitchButton; + +/** + * 点击了系统键盘的发送按钮 + * @param inputNormalText :"害~你好啊[微笑]" + */ +- (void)inputBarView:(QInputBarView *)inputBarView onKeyboardSendClick:(NSString *)inputNormalText; + +/** + * 点击+号按钮Action + */ +- (void)inputBarView:(QInputBarView *)inputBarView onExtendButtonClick:(UIButton *)extendSwitchButton; + +/** + * 发送第三方表情 + */ +- (void)inputBarView:(QInputBarView *)inputBarView onEmotionButtonClick:(UIButton *)emotionSwitchButton; + +/** + * 吊起相册 + */ +- (void)inputBarView:(QInputBarView *)inputBarView onCameraButtonClick:(UIButton *)emotionSwitchButton; + + +/** + * 发送相机 + */ +- (void)inputBarView:(QInputBarView *)inputBarView onPhototButtonClick:(UIButton *)emotionSwitchButton; + + +/** + * 送礼物 + */ +- (void)inputBarView:(QInputBarView *)inputBarView onGiftButtonClick:(UIButton *)emotionSwitchButton; + + +- (void)audioRecordCompletion:(NSString *)recordPath; + +@end + +//输入条View,不包含表情面板 +@interface QInputBarView : UIView + +@property (nonatomic, strong, readonly) SZTextView *inputTextView; + +@property (nonatomic, strong, readonly) UIButton *recordButton; + +@property (nonatomic, weak) id delegate; + +@property (nonatomic, weak) id dataSource; + +// 根据配置设置UI,本方法只需要调用一次 +- (void)setupWithConfiguration:(QInputBarViewConfiguration *)configuration; + + +// 让textView获取焦点 +- (void)textViewBecomeFirstResponder; + +// 让textView失去焦点 +- (void)textViewResignFirstResponder; + +// 获取textView的内容文本 +- (NSString *)textViewInputNormalText; + +// 给textView插入表情图片,比如😊 +- (void)insertEmotionAttributedString:(NSAttributedString *)emotionAttributedString; + +// 给textView插入表情的文本,比如[微笑] +- (void)insertEmotion:(NSString *)emotionKey; + +// textView删除表情 +// @return YES 表示刚才成功删除了一个表情; +// @return NO 表示刚才没删掉表情(于是本类就什么都不操作,由外部vc实现删除操作。这样做因为vc的自定义tv可能要实现文字块删除,比如 @人名) +- (BOOL)deleteEmotion; + +// 清除输入的文本,不建议你自己用inputTextView.text = nil来情况文本。因为那样的话如果输入栏的文字>1行,你调用tableView.reload再scrollToBottom会出现tableView滚动不流畅 +//之所以不流畅是因为tableView的scrollToBottom动画和onWholeInputViewHeightDidChange里的动画同时被调用 +- (NSTimeInterval)clearInputTextBySend; //@return 0:当前inputText只有一行;非0:动画时长 + +@end diff --git a/YuMi/CustomUI/InputView/InputView/QInputBarView.m b/YuMi/CustomUI/InputView/InputView/QInputBarView.m new file mode 100755 index 00000000..6add27f5 --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/QInputBarView.m @@ -0,0 +1,694 @@ +// +// QInputBarView.m +// QKeyBoardDemo +// +// Created by QDong on 2021-8-3. +// Copyright (c) 2021年 QDong QQ:285275534@qq.com. All rights reserved. +// + +//整个Bar的最小高度(即文字只有1行时候的整条Bar的高度) +const int UIInputBarViewMinHeight = 58; + +//Bar里面的UITextView的最小高度(即文字只有1行时候的UITextView高度) +const int UIInputTextViewMinHeight = 42; + +//Bar里面的UITextView的最大高度(即文字有超多行时候的高度) +const int UIInputTextViewMaxHeight = 147; +///Third +#import +#import +#import "QInputBarView.h" +#import "UITextView+QEmotion.h" +#import "SessionAudioRecordView.h" +#import "YUMIMacroUitls.h" +#import "UIImage+Utils.h" +#import "DJDKMIMOMColor.h" +#import "StatisticsServiceHelper.h" + +//默认的输入bar,包含了:左侧的语音切换按钮,中间的textview和按住录音按钮,右侧的表情和拓展按钮,(总之,仿微信的输入条) +//上述按钮都可以设置隐藏,如果还是无法满足你的需求,请自定义UIView,参考TextFieldViewController +@interface QInputBarView () +{ +} +@property (nonatomic, strong) SZTextView *inputTextView; +@property (nonatomic, strong) UIButton *voiceSwitchButton; +@property (nonatomic, strong) UIButton *extendSwitchButton; +@property (nonatomic, strong) UIButton *emotionSwitchButton; +@property (nonatomic, strong) UIButton *recordButton; //按住不松录音的长条按钮 +///底部的容器 +@property (nonatomic,strong) UIStackView *toolStackView; +///显示相册 +@property (nonatomic,strong) UIButton *photoButton; +///照相机 +@property (nonatomic,strong) UIButton *cameraButton; +///选择的礼物 +@property (nonatomic,strong) UIButton *giftButton; + +/// 输入栏TextView的高度发生变化的动画时长(秒) +@property (nonatomic, assign) NSTimeInterval inputBarHeightChangeAnimationDuration; // default is 0.2 + +/// 点击“发送”按钮时候会清空输入栏,进而导致TextView的高度变化的动画时长(秒) +@property (nonatomic, assign) NSTimeInterval inputBarHeightChangeAnimationWhenSendDuration; //0.1 + +// 点击键盘右下角的按钮是否是发送,NO表示普通回车换行,YES表示回调Delegate的Send方法 +@property (nonatomic, assign) BOOL keyboardSendEnabled; // default is YES + +//在切换语音和文本消息的时候,需要保存原本已经输入的文本 +@property (nonatomic, strong) NSString *inputedText; + +//记录旧的textView Heigth +@property (nonatomic, assign) CGFloat previousTextViewContentHeight; + +//刚才清空文本框是因为点击了”发送“按钮。加入这个全局变量是为了Delegate的heightDidChange方法可以回调特殊的返回值 +@property (nonatomic, assign) BOOL clearInputTextBySendSoon; +///录音的view +@property (nonatomic,strong) SessionAudioRecordView *audioRecordView; +///配置 +@property (nonatomic,strong) QInputBarViewConfiguration *config; +///当前 时间 +@property (nonatomic,assign) NSTimeInterval currentTime; +@end + +@implementation QInputBarView + +#pragma mark - Init +- (void)awakeFromNib { + [super awakeFromNib]; +} + +- (void)setupWithConfiguration:(QInputBarViewConfiguration *)configuration +{ + self.config = configuration; + self.keyboardSendEnabled = configuration.keyboardSendEnabled; + + const int UISwitchButtonWidth = 40; // 3个按钮固定宽高 + const int horizontalPadding = 6; // 水平间隔 + const CGFloat verticalPadding = (UIInputBarViewMinHeight - UISwitchButtonWidth )/2;// 垂直间隔 + CGFloat textViewFrameX = 0;// 输入框的frame.x + CGFloat rightViewsMinX = 0;// 输入框右边的按钮的minY,为了计算textView的宽度 + const CGFloat textViewHorizontalMargin = 8; //输入框的左右margin + CGFloat safeAreaInsetsLeft = 0; + CGFloat safeAreaInsetsRight = 0; + if (@available(iOS 11.0, *)) { + safeAreaInsetsLeft = UIApplication.sharedApplication.windows.firstObject.safeAreaInsets.left; + safeAreaInsetsRight = UIApplication.sharedApplication.windows.firstObject.safeAreaInsets.right; + } + + NSBundle *bundle = [NSBundle bundleForClass:[self class]]; + + // 允许发送语音 + if (!configuration.voiceButtonHidden) { + UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, UISwitchButtonWidth, UISwitchButtonWidth)]; + [button setBackgroundImage:[UIImage imageNamed:@"q_chat_keyboard_black_normal" inBundle:bundle compatibleWithTraitCollection:nil] forState:UIControlStateNormal]; + [button setBackgroundImage:[UIImage imageNamed:@"q_chat_voice_black_normal" inBundle:bundle compatibleWithTraitCollection:nil] forState:UIControlStateSelected]; + [button addTarget:self action:@selector(onVoiceSwitchButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + CGRect buttonFrame = button.frame; + buttonFrame.origin = CGPointMake(horizontalPadding + safeAreaInsetsLeft, verticalPadding); + button.frame = buttonFrame; + [self addSubview:button]; + self.voiceSwitchButton = button; + textViewFrameX = CGRectGetMaxX(button.frame); + } else { + //如果没有左边的语音按钮,输入条太贴左边了,+8提高一些marginLeft + textViewFrameX = safeAreaInsetsLeft + 8; + } + + //是否显示最右侧按钮(最右侧按钮可能是+,也可能是“发送”) + BOOL rightButtonShowed = NO; + + //右边是发送按钮 + if (configuration.rightSendButton) { + UIButton *button = configuration.rightSendButton; + button.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin; + + CGRect buttonFrame = button.frame; + buttonFrame.origin = CGPointMake(CGRectGetWidth(self.bounds) - horizontalPadding - CGRectGetWidth(buttonFrame) - safeAreaInsetsRight, verticalPadding); + button.frame = buttonFrame; + [self addSubview:button]; + rightViewsMinX = CGRectGetMinX(buttonFrame); + rightButtonShowed = YES; + + } else if (!configuration.extendButtonHidden) { + // 允许发送多媒体消息。为什么不是先放表情按钮呢?因为布局的需要 + UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, UISwitchButtonWidth, UISwitchButtonWidth)]; + button.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin; + [button setBackgroundImage:[UIImage imageNamed:@"q_chat_extend_black_normal" inBundle:bundle compatibleWithTraitCollection:nil] forState:UIControlStateNormal]; + [button addTarget:self action:@selector(onExtendSwitchButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + + CGRect buttonFrame = button.frame; + buttonFrame.origin = CGPointMake(CGRectGetWidth(self.bounds) - horizontalPadding - CGRectGetWidth(buttonFrame) - safeAreaInsetsRight, verticalPadding); + button.frame = buttonFrame; + [self addSubview:button]; + rightViewsMinX = CGRectGetMinX(buttonFrame); + self.extendSwitchButton = button; + rightButtonShowed = YES; + + } else { + rightViewsMinX = CGRectGetWidth(self.bounds) - safeAreaInsetsRight; + } + + // 允许发送表情 + if (!configuration.emotionButtonHidden) { + UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, UISwitchButtonWidth, UISwitchButtonWidth)]; + button.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin; + [button setBackgroundImage:[UIImage imageNamed:@"q_chat_emoji_black_normal" inBundle:bundle compatibleWithTraitCollection:nil] forState:UIControlStateNormal]; + [button setBackgroundImage:[UIImage imageNamed:@"q_chat_keyboard_black_normal" inBundle:bundle compatibleWithTraitCollection:nil] forState:UIControlStateSelected]; + [button addTarget:self action:@selector(onEmotionSwitchButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + CGRect buttonFrame = button.frame; + if (rightButtonShowed) { + buttonFrame.origin = CGPointMake(rightViewsMinX - CGRectGetWidth(buttonFrame) - horizontalPadding, verticalPadding); + } else { + buttonFrame.origin = CGPointMake(CGRectGetWidth(self.bounds) - horizontalPadding - CGRectGetWidth(buttonFrame) - safeAreaInsetsRight, verticalPadding); + } + button.frame = buttonFrame; + [self addSubview:button]; + self.emotionSwitchButton = button; + + rightViewsMinX = CGRectGetMinX(buttonFrame); + } else { + //不显示表情按钮,rightViewsMinX已经在上面处理好了 + } + + // 输入框的宽度 + CGFloat textViewWidth = rightViewsMinX - textViewHorizontalMargin - textViewFrameX - textViewHorizontalMargin; + + // 初始化输入框 + UITextView *textView = nil; + if ([self.dataSource respondsToSelector:@selector(textViewForInputBarView:)]) { + //textView 是由vc实现的,本类只设置一下frame + textView = [self.dataSource textViewForInputBarView:self]; + } + + if (!textView){ + //vc没有提供UITextView,我们自己来实现 + textView = [[SZTextView alloc] initWithFrame:CGRectZero]; + textView.font = [UIFont systemFontOfSize:17.5]; + textView.returnKeyType = UIReturnKeySend; + textView.scrollsToTop = NO; + textView.textAlignment = NSTextAlignmentLeft; + textView.layer.cornerRadius = UIInputTextViewMinHeight / 2; + //top, left, bottom, right + textView.textContainerInset = UIEdgeInsetsMake(10.0f, 8.0f, 10.0f, 8.0f); + //如果我设置了left边距,换行的时候,xcode会弹出提示:requesting caretRectForPosition: while the NSTextStorage has oustanding changes . 但是实际运行没任何影响 + //如果把left(第2、4个参数)设置为0,就不会有警告。原因不明 + textView.enablesReturnKeyAutomatically = YES; // UITextView内部判断send按钮是否可以用 + } + //本类来控制tv的frame和delegate + textView.autoresizingMask = UIViewAutoresizingFlexibleWidth; + textView.delegate = self; + + //用kvo来监听输入文本的改变,进而改变tv高度和整个bar高度 + [textView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:nil]; + [self addSubview:textView]; + textView.frame = CGRectMake(textViewFrameX + textViewHorizontalMargin, (UIInputBarViewMinHeight - UIInputTextViewMinHeight)/2, textViewWidth, UIInputTextViewMinHeight); + self.inputTextView = textView; + + //记录初始化时候的textview高度 + self.previousTextViewContentHeight = [self getTextViewContentHeight]; + + // 如果是可以发送语言的,那就需要一个按钮录音的按钮,事件可以在外部添加 + if (!configuration.voiceButtonHidden) { + UIButton *button = [[UIButton alloc] initWithFrame:self.inputTextView.frame]; + button.autoresizingMask = UIViewAutoresizingFlexibleWidth; + + [button setBackgroundImage:[UIImage imageWithColor: UIColorFromRGB(0xF1F1FA)] forState:UIControlStateNormal]; + [button setBackgroundImage:[UIImage imageNamed:@"q_white_input_press_btn" inBundle:bundle compatibleWithTraitCollection:nil] forState:UIControlStateHighlighted]; + [button setTitle:configuration.speakButtonTitle?:YMLocalizedString(@"QInputBarView0") forState:UIControlStateNormal]; + [button setTitle:configuration.speakButtonTitle?:YMLocalizedString(@"QInputBarView1") forState:UIControlStateSelected]; + [button addTarget:self action:@selector(audioTouchDownAction) forControlEvents:UIControlEventTouchDown]; + [button addTarget:self action:@selector(audioTouchUpOutsideAction) forControlEvents:UIControlEventTouchUpOutside]; + [button addTarget:self action:@selector(audioTouchUpInsideAction) forControlEvents:UIControlEventTouchUpInside]; + [button addTarget:self action:@selector(audioTouchDragEnterAction) forControlEvents:UIControlEventTouchDragEnter]; + [button addTarget:self action:@selector(audioTouchDragExitAction) forControlEvents:UIControlEventTouchDragExit]; + button.layer.masksToBounds = YES; + button.layer.cornerRadius = UIInputTextViewMinHeight / 2; + button.alpha = self.voiceSwitchButton.selected; + [self addSubview:button]; + self.recordButton = button; + } + + if (!configuration.toolHidden) { + UIStackView * stackView = [[UIStackView alloc] init]; + stackView.axis = UILayoutConstraintAxisHorizontal; + stackView.distribution = UIStackViewDistributionFillEqually; + stackView.alignment = UIStackViewAlignmentFill; + stackView.spacing = 0; + stackView.backgroundColor = [UIColor clearColor]; + stackView.frame = CGRectMake(0, CGRectGetMaxY(self.inputTextView.frame) + 5, self.frame.size.width, 30); + [self addSubview:stackView]; + self.toolStackView = stackView; + [self.toolStackView addArrangedSubview:self.photoButton]; + [self.toolStackView addArrangedSubview:self.cameraButton]; + [self.toolStackView addArrangedSubview:self.giftButton]; + + self.photoButton.hidden = configuration.photoButtonHidden; + self.giftButton.hidden = configuration.giftButtonHidden; + self.cameraButton.hidden = configuration.cameraButtonHidden; + } + + + //各种颜色 + self.backgroundColor = configuration.inputBarBackgroundColor; + _inputTextView.textColor = configuration.textColor; + _inputTextView.backgroundColor = configuration.textViewBackgroundColor; + [self.recordButton setTitleColor:configuration.recordButtonTitleColor forState:UIControlStateNormal]; + + //两个动画时长 + self.inputBarHeightChangeAnimationDuration = configuration.inputBarHeightChangeAnimationDuration == 0 ? 0.2 : configuration.inputBarHeightChangeAnimationDuration; + self.inputBarHeightChangeAnimationWhenSendDuration = 0.1; + + //输入条的上方添加一行细线 + UIView *topLineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.bounds), 1 / [UIScreen mainScreen].scale)]; + topLineView.backgroundColor = configuration.inputBarBoardColor; + [self addSubview:topLineView]; + [[NIMSDK sharedSDK].mediaManager addDelegate:self]; +} + +#pragma mark - NIMMediaManagerDelegate +/** + * 开始录制音频的回调 + * + * @param filePath 录制的音频的文件路径 + * @param error 错误信息 + * @discussion 如果录音失败,filePath 有可能为 nil + */ +- (void)recordAudio:(nullable NSString *)filePath didBeganWithError:(nullable NSError *)error { + NSLog(@"开始录制语音"); +} + +/** + * 录制音频完成后的回调 + * + * @param filePath 录制完成的音频文件路径 + * @param error 错误信息 + */ +- (void)recordAudio:(nullable NSString *)filePath didCompletedWithError:(nullable NSError *)error { + if (filePath.length > 0 && error == nil) { + if (self.delegate && [self.delegate respondsToSelector:@selector(audioRecordCompletion:)]) { + [self.delegate audioRecordCompletion:filePath]; + } + } + NSLog(@"录制音频完成后的回调 %@", filePath); +} + +/** + * 录音被取消的回调 + */ +- (void)recordAudioDidCancelled { + NSLog(@"录音被取消的回调"); +} + +/** + * 音频录制进度更新回调 + * + * @param currentTime 当前录制的时间 + */ +- (void)recordAudioProgress:(NSTimeInterval)currentTime { + self.currentTime = currentTime; + [self.audioRecordView updateAudioRecordProgress:currentTime]; +} + +/** + * 录音开始被打断回调 + */ +- (void)recordAudioInterruptionBegin { + [self.audioRecordView cancelAudioRecord]; +} + + +#pragma mark - IBAction +// 左边语音\键盘切换按钮点击 +- (IBAction)onVoiceSwitchButtonClick:(UIButton *)sender +{ + sender.selected = !sender.selected; + self.emotionSwitchButton.selected = NO; + self.extendSwitchButton.selected = NO; + + if (sender.selected) { + self.inputedText = self.inputTextView.text; + self.inputTextView.text = nil; + [self.inputTextView resignFirstResponder]; + } else { + self.inputTextView.text = self.inputedText; + self.inputedText = nil; + [self.inputTextView becomeFirstResponder]; + } + + [UIView animateWithDuration:0.2 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ + self.recordButton.alpha = sender.selected; + self.inputTextView.alpha = !sender.selected; + } completion:^(BOOL finished) { + + }]; + + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEvent_chat_toolbar_voice_click]; + + if ([self.delegate respondsToSelector:@selector(inputBarView:onVoiceSwitchButtonClick:)]) { + [self.delegate inputBarView:self onVoiceSwitchButtonClick:sender]; + } +} + +// 右边表情\键盘切换按钮点击 +- (IBAction)onEmotionSwitchButtonClick:(UIButton *)sender +{ + sender.selected = !sender.selected; + self.voiceSwitchButton.selected = NO; + self.extendSwitchButton.selected = NO; + + if (!sender.selected) { + [UIView animateWithDuration:0.2 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ + self.recordButton.alpha = sender.selected; + self.inputTextView.alpha = !sender.selected; + } completion:^(BOOL finished) { + + }]; + } else { + [UIView animateWithDuration:0.2 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ + self.recordButton.alpha = !sender.selected; + self.inputTextView.alpha = sender.selected; + } completion:^(BOOL finished) { + + }]; + } + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEvent_chat_toolbar_emoticon_click]; + if ([self.delegate respondsToSelector:@selector(inputBarView:onEmotionButtonClick:)]) { + [self.delegate inputBarView:self onEmotionButtonClick:sender]; + } +} + +// 右边表情\键盘切换按钮点击 +- (IBAction)onExtendSwitchButtonClick:(UIButton *)sender +{ + sender.selected = !sender.selected; + self.emotionSwitchButton.selected = NO; + if ([self.delegate respondsToSelector:@selector(inputBarView:onExtendButtonClick:)]) { + [self.delegate inputBarView:self onExtendButtonClick:sender]; + } +} + +- (void)photoButtonAction:(UIButton *)sender { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEvent_chat_toolbar_photo_click]; + sender.selected = !sender.selected; + if (self.delegate && [self.delegate respondsToSelector:@selector(inputBarView:onPhototButtonClick:)]) { + [self.delegate inputBarView:self onPhototButtonClick:sender]; + } +} + +- (void)giftButtonAction:(UIButton *)sender { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEvent_chat_toolbar_gift_click]; + if (self.delegate && [self.delegate respondsToSelector:@selector(inputBarView:onGiftButtonClick:)]) { + [self.delegate inputBarView:self onGiftButtonClick:sender]; + } +} + +- (void)camerButtonAction:(UIButton *)sender { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEvent_chat_toolbar_camera_click]; + if (self.delegate && [self.delegate respondsToSelector:@selector(inputBarView:onCameraButtonClick:)]) { + [self.delegate inputBarView:self onCameraButtonClick:sender]; + } +} + +- (void)audioTouchDownAction { + self.currentTime = 0; + self.recordButton.selected = YES; + ///开始录音 + if (!self.audioRecordView.superview) { + [[UIApplication sharedApplication].keyWindow addSubview:self.audioRecordView]; + [self.audioRecordView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self.audioRecordView.superview); + }]; + [self.audioRecordView configAudioRecord:@"message_tool_audio_record_first" title:YMLocalizedString(@"QInputBarView2") isAnimation:YES]; + [self.audioRecordView beginAudioRecord]; + } + +} + +- (void)audioTouchUpOutsideAction { + self.recordButton.selected = NO; + ///取消录音 + [self.audioRecordView cancelAudioRecord]; + [self.audioRecordView removeFromSuperview]; +} + +- (void)audioTouchUpInsideAction { + self.recordButton.selected = NO; + if (self.currentTime > 1) { + ///手指抬起 完成录音 + [self.audioRecordView finishAudioRecord]; + } else { + ///取消录音 + [self.audioRecordView cancelAudioRecord]; + } + [self.audioRecordView removeFromSuperview]; +} + +- (void)audioTouchDragEnterAction { + ///手指上滑 取消发送 + [self.audioRecordView configAudioRecord:@"message_tool_audio_record_first" title:YMLocalizedString(@"QInputBarView3") isAnimation:YES]; +} + +- (void)audioTouchDragExitAction { + ///松开手指 取消发送 + [self.audioRecordView configAudioRecord:@"message_tool_audio_record_cancel" title:YMLocalizedString(@"QInputBarView4") isAnimation:NO]; +} + + +#pragma mark - Public +- (void)resetTextViewHeightBy:(CGFloat)textViewHeightShouldChangeValue { + // 动态改变自身的高度和输入框的高度 + CGRect prevFrame = self.inputTextView.frame; + self.inputTextView.frame = CGRectMake(prevFrame.origin.x, + prevFrame.origin.y, + prevFrame.size.width, + prevFrame.size.height + textViewHeightShouldChangeValue); + + if (!self.config.toolHidden) { + self.toolStackView.frame = CGRectMake(0, CGRectGetMaxY(self.inputTextView.frame) + 5, self.frame.size.width, 30); + } +} + +// 让textView获取焦点 +- (void)textViewBecomeFirstResponder { + [self.inputTextView becomeFirstResponder]; +} + +// 让textView失去焦点 +- (void)textViewResignFirstResponder { + [self.inputTextView resignFirstResponder]; +} + +// 获取textView的内容文本 +- (NSString *)textViewInputNormalText { + return [self.inputTextView normalText]; +} + +// 给textView插入表情图片,比如😊 +- (void)insertEmotionAttributedString:(NSAttributedString *)emotionAttributedString { + [self.inputTextView insertEmotionAttributedString: emotionAttributedString]; +} + +// 给textView插入表情的文本,比如[微笑] +- (void)insertEmotion:(NSString *)emotionKey { + [self.inputTextView insertEmotion: emotionKey]; +} + +// textView删除表情 +// @return YES 表示刚才成功删除了一个表情; +// @return NO 表示刚才没删掉表情(于是本类就什么都不操作,由外部vc实现删除操作。这样做因为vc的自定义tv可能要实现文字块删除,比如 @人名) +- (BOOL)deleteEmotion { + //点的是删除按钮,获得光标所在的位置 + return [self.inputTextView deleteEmotion]; +} + +// 清除输入的文本。不建议你自己用inputTextView.text = nil来情况文本。因为那样的话如果输入栏的文字>1行,你调用tableView.reload再scrollToBottom会出现tableView滚动不流畅 +//之所以不流畅是因为tableView的scrollToBottom动画和onWholeInputViewHeightDidChange里的动画同时被调用 +- (NSTimeInterval)clearInputTextBySend { + + //YES:当前inputText只有一行;NO:大于一行 + BOOL currentIsOneLine = self.inputTextView.frame.size.height == UIInputTextViewMinHeight; + + //临时改成yes,等回调了delegate要立刻设NO + self.clearInputTextBySendSoon = YES; + + //清空输入栏,如果当前输入栏里的文字行数>1会立即触发KVO + self.inputTextView.text = nil; + + //等走完KVO和KVO里的的delegate,再关掉 + self.clearInputTextBySendSoon = NO; + + //@return YES:当前inputText只有一行;NO:大于一行 + return currentIsOneLine ? 0 : _inputBarHeightChangeAnimationWhenSendDuration; +} + +#pragma mark - Private +/** + * 获取某个UITextView对象的content高度 + * @return 返回高度 + */ +- (CGFloat)getTextViewContentHeight +{ + return ceilf([_inputTextView sizeThatFits:_inputTextView.frame.size].height); +} + +#pragma mark - UITextViewDelegate +- (BOOL)textViewShouldBeginEditing:(UITextView *)textView { + if ([self.delegate respondsToSelector:@selector(inputBarView:inputTextViewShouldBeginEditing:)]) { + [self.delegate inputBarView:self inputTextViewShouldBeginEditing:self.inputTextView]; + } + self.emotionSwitchButton.selected = NO; + self.voiceSwitchButton.selected = NO; + self.extendSwitchButton.selected = NO; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEvent_chat_toolbar_input_click]; + return YES; +} + +- (void)textViewDidBeginEditing:(UITextView *)textView { + [textView becomeFirstResponder]; + if (!self.previousTextViewContentHeight) + self.previousTextViewContentHeight = [self getTextViewContentHeight]; + if ([self.delegate respondsToSelector:@selector(inputBarView:inputTextViewDidBeginEditing:)]) { + [self.delegate inputBarView:self inputTextViewDidBeginEditing:self.inputTextView]; + } +} + +- (void)textViewDidEndEditing:(UITextView *)textView { + [textView resignFirstResponder]; +} + +- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { + if (self.keyboardSendEnabled && [text isEqualToString:@"\n"]) { + if ([self.delegate respondsToSelector:@selector(inputBarView:onKeyboardSendClick:)]) { + [self.delegate inputBarView:self onKeyboardSendClick:[textView normalText]]; + } + return NO; + } + return YES; +} + +//只有在发生换行时候才会触发这里 +#pragma mark - Key-value Observing +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { + + if (object == _inputTextView && [keyPath isEqualToString:@"contentSize"]) { + //当输入的文本发生<折行>的时候会进入这里,这是ios系统判断的折行,<折行>包括新增文本导致的折行,也包括删除文本 + + UITextView *textView = (UITextView *)object; + CGFloat newContentHeight = [self getTextViewContentHeight]; + + //true表示tv行数减少了 + BOOL heightShouldShrink = newContentHeight < self.previousTextViewContentHeight; + + //由于内容的输入,tv应该发生高度的变化,这个值就是应该tv改变的高度差 + CGFloat textViewHeightShouldChangeValue = newContentHeight - _previousTextViewContentHeight; + + //要根据max和minheight重新计算一下高度变化差 + if (!heightShouldShrink && (self.previousTextViewContentHeight == UIInputTextViewMaxHeight || textView.text.length == 0)) { + textViewHeightShouldChangeValue = 0; + } else { + textViewHeightShouldChangeValue = MIN(textViewHeightShouldChangeValue, UIInputTextViewMaxHeight - self.previousTextViewContentHeight); + } + + if (textViewHeightShouldChangeValue != 0.0f) { + //textView的高度有所改变 + __weak QInputBarView *weakSelf = self; + [UIView animateWithDuration:_clearInputTextBySendSoon ? _inputBarHeightChangeAnimationWhenSendDuration : _inputBarHeightChangeAnimationDuration animations:^{ + + if (heightShouldShrink) { + // 如果需要缩放, 先改变tv的高度,再修改bar的高度 + [weakSelf resetTextViewHeightBy:textViewHeightShouldChangeValue]; + } + + //设置本bar的frame + CGRect inputViewFrame = weakSelf.frame; + weakSelf.frame = CGRectMake(inputViewFrame.origin.x, + inputViewFrame.origin.y - textViewHeightShouldChangeValue, + inputViewFrame.size.width, + inputViewFrame.size.height + textViewHeightShouldChangeValue); + + if (!heightShouldShrink) { + //为了兼容低版本ios系统,所以这句代码,不可以跟上面的合并 + [weakSelf resetTextViewHeightBy:textViewHeightShouldChangeValue]; + } + + //回调给QKeyboardManager + if ([self.delegate respondsToSelector:@selector(inputBarView:inputTextView:heightDidChange:becauseSendText:)]) { + [self.delegate inputBarView:self inputTextView:self.inputView heightDidChange:textViewHeightShouldChangeValue becauseSendText:self.clearInputTextBySendSoon]; + } + + } completion:^(BOOL finished) { + }]; + + self.previousTextViewContentHeight = MIN(newContentHeight, UIInputTextViewMaxHeight); + } + + //这一句可以不写,为了保险还是写了 + self.clearInputTextBySendSoon = NO; + + // 达到最大高度的时候(无论textView的高度是否有所改变),要更新tv的ContentOffset,让他滚起来 + if (self.previousTextViewContentHeight == UIInputTextViewMaxHeight) { + double delayInSeconds = 0.01; + dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); + dispatch_after(popTime, dispatch_get_main_queue(), + ^(void) { + CGPoint bottomOffset = CGPointMake(0.0f, newContentHeight - textView.bounds.size.height); + [textView setContentOffset:bottomOffset animated:YES]; + }); + } + } +} + + +- (void)dealloc { + _inputedText = nil; + [_inputTextView removeObserver:self forKeyPath:@"contentSize"]; + _inputTextView.delegate = nil; + _inputTextView = nil; + + _voiceSwitchButton = nil; + _extendSwitchButton = nil; + _emotionSwitchButton = nil; + _recordButton = nil; + + [[NIMSDK sharedSDK].mediaManager removeDelegate:self]; +} + + +- (UIButton *)cameraButton { + if (!_cameraButton) { + _cameraButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_cameraButton setImage:[UIImage imageNamed:@"message_session_menu_camera"] forState:UIControlStateNormal]; + [_cameraButton setImage:[UIImage imageNamed:@"message_session_menu_camera"] forState:UIControlStateSelected]; + [_cameraButton addTarget:self action:@selector(camerButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _cameraButton; +} + +- (UIButton *)photoButton { + if (!_photoButton) { + _photoButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_photoButton setImage:[UIImage imageNamed:@"message_session_menu_photo"] forState:UIControlStateNormal]; + [_photoButton setImage:[UIImage imageNamed:@"message_session_menu_photo"] forState:UIControlStateSelected]; + [_photoButton addTarget:self action:@selector(photoButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _photoButton; +} + +- (UIButton *)giftButton { + if (!_giftButton) { + _giftButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_giftButton setImage:[UIImage imageNamed:@"message_session_menu_gift"] forState:UIControlStateNormal]; + [_giftButton setImage:[UIImage imageNamed:@"message_session_menu_gift"] forState:UIControlStateSelected]; + [_giftButton addTarget:self action:@selector(giftButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _giftButton; +} + +- (SessionAudioRecordView *)audioRecordView { + if (!_audioRecordView) { + _audioRecordView = [[SessionAudioRecordView alloc] init]; + } + return _audioRecordView; +} + + +@end diff --git a/YuMi/CustomUI/InputView/InputView/QInputBarViewConfiguration.h b/YuMi/CustomUI/InputView/InputView/QInputBarViewConfiguration.h new file mode 100644 index 00000000..1894f575 --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/QInputBarViewConfiguration.h @@ -0,0 +1,61 @@ +// +// QInputBarViewConfiguration.h +// QKeyBoardDemo +// +// Created by QDong on 2021-8-3. +// Copyright (c) 2021年 QDong QQ:285275534@qq.com. All rights reserved. +// + +#import + +@interface QInputBarViewConfiguration : NSObject + +- (instancetype)init NS_UNAVAILABLE; + + +/** + 默认相册配置 + */ ++ (instancetype)defaultInputBarViewConfiguration; + + +@property (nonatomic, strong) UIColor *inputBarBackgroundColor;//输入条颜色,默认仿微信的灰色 + +@property (nonatomic, strong) UIColor *inputBarBoardColor;//输入条上方的的那一条细横线的颜色 + +@property (nonatomic, strong) UIColor *textColor;//输入栏textview的颜色 + +@property (nonatomic, strong) UIColor *textViewBackgroundColor;//输入栏textview的背景颜色,默认白色 + +@property (nonatomic, strong) UIColor *recordButtonTitleColor;//按住说话按钮的字体颜色 + +@property (nonatomic, strong) UIButton *rightSendButton;//如果不为nil,那么替换掉右边的"+"按钮 //default is nil + +//语音条上的title,当voiceButtonHidden为No时候才有效 +@property (nonatomic, strong) NSString *speakButtonTitle;//default is nil。nil就显示@"按住说话" + +/// 是否隐藏发送语音 +@property (nonatomic, assign) BOOL voiceButtonHidden; // default is NO + +/// 是否隐藏发送多媒体 +@property (nonatomic, assign) BOOL extendButtonHidden; // default is NO + +/// 是否隐藏发送表情 +@property (nonatomic, assign) BOOL emotionButtonHidden; // default is NO + +/// 点击键盘右下角的按钮是否是发送,NO表示普通回车换行,YES表示回调Delegate的Send方法 +@property (nonatomic, assign) BOOL keyboardSendEnabled; // default is YES + +/// 输入栏TextView的高度发送变化的动画时长(秒) +@property (nonatomic, assign) NSTimeInterval inputBarHeightChangeAnimationDuration; // default is 0.2 +/// 是否隐藏底部的操作栏 +@property (nonatomic, assign) BOOL toolHidden; // default is yes +/// 是否隐藏 相册 +@property (nonatomic, assign) BOOL photoButtonHidden; // default is yes +/// 是否隐藏照相机 +@property (nonatomic, assign) BOOL cameraButtonHidden; // default is yes +/// 是否隐藏送礼物按钮 +@property (nonatomic, assign) BOOL giftButtonHidden; // default is yes +///底部操作的高度 +@property (nonatomic,assign) CGFloat inputViewHeight; +@end diff --git a/YuMi/CustomUI/InputView/InputView/QInputBarViewConfiguration.m b/YuMi/CustomUI/InputView/InputView/QInputBarViewConfiguration.m new file mode 100644 index 00000000..aeb94349 --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/QInputBarViewConfiguration.m @@ -0,0 +1,57 @@ +// +// QKeyboardConfiguration.m +// QKeyBoardDemo +// +// Created by QDong on 2021-8-3. +// Copyright (c) 2021年 QDong QQ:285275534@qq.com. All rights reserved. +// + +#import "QInputBarViewConfiguration.h" +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" + +@implementation QInputBarViewConfiguration + ++ (instancetype)defaultInputBarViewConfiguration +{ + QInputBarViewConfiguration *configuration = [QInputBarViewConfiguration new]; + +// if (@available(iOS 11.0, *)) { +// NSBundle *bundle = [NSBundle bundleForClass:[QInputBarViewConfiguration class]]; +//// configuration.inputBarBackgroundColor = [UIColor colorNamed:@"q_input_gray_bg" inBundle:bundle compatibleWithTraitCollection:nil]; +// configuration.inputBarBoardColor = [UIColor colorNamed:@"q_border223" inBundle:bundle compatibleWithTraitCollection:nil]; +//// configuration.textColor = [UIColor colorNamed:@"q_black_gray" inBundle:bundle compatibleWithTraitCollection:nil]; +// configuration.textViewBackgroundColor = [UIColor colorNamed:@"q_input" inBundle:bundle compatibleWithTraitCollection:nil]; +// configuration.recordButtonTitleColor = [UIColor colorNamed:@"q_black_white" inBundle:bundle compatibleWithTraitCollection:nil]; +// } else { +// +// +// } + configuration.inputBarBoardColor = [UIColor clearColor]; + configuration.textColor = [UIColor blackColor]; + configuration.recordButtonTitleColor = [UIColor darkGrayColor]; + configuration.inputBarBackgroundColor = [UIColor whiteColor]; + configuration.textViewBackgroundColor = [DJDKMIMOMColor colorWithHexString:@"#F2F2F7"]; + configuration.inputBarHeightChangeAnimationDuration = 0.2; + configuration.keyboardSendEnabled = YES; + configuration.inputBarHeightChangeAnimationDuration = 0.2; + configuration.keyboardSendEnabled = YES; + + configuration.toolHidden = YES; + configuration.cameraButtonHidden = YES; + configuration.giftButtonHidden = YES; + configuration.photoButtonHidden = YES; + return configuration; +} + + +- (void)setToolHidden:(BOOL)toolHidden { + _toolHidden = toolHidden; + if (_toolHidden) { + self.inputViewHeight = 58; + } else { + self.inputViewHeight = 58 + 30; + } +} + +@end diff --git a/YuMi/CustomUI/InputView/InputView/QInputPhototCell.h b/YuMi/CustomUI/InputView/InputView/QInputPhototCell.h new file mode 100644 index 00000000..8f99eb58 --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/QInputPhototCell.h @@ -0,0 +1,27 @@ +// +// QInputPhototCell.h +// YUMI +// +// Created by YUMI on 2023/1/11. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class QPhotoImageModel, QInputPhototCell; + +@protocol QInputPhototCellDelegate + +- (void)qInputPhototCell:(QInputPhototCell *)view didClickChoose:(QPhotoImageModel *)model; + +@end + +@interface QInputPhototCell : UICollectionViewCell +///图片信息 +@property (nonatomic,strong) QPhotoImageModel *imageInfo; + +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/InputView/InputView/QInputPhototCell.m b/YuMi/CustomUI/InputView/InputView/QInputPhototCell.m new file mode 100644 index 00000000..44047460 --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/QInputPhototCell.m @@ -0,0 +1,128 @@ +// +// QInputPhototCell.m +// YUMI +// +// Created by YUMI on 2023/1/11. +// + +#import "QInputPhototCell.h" +///Third +#import +#import "QPhotoImageModel.h" +#import "YUMIMacroUitls.h" +#import "UIImage+Utils.h" +#import "DJDKMIMOMColor.h" +#import "UIButton+EnlargeTouchArea.h" + +@interface QInputPhototCell () + +///显示图片 +@property (nonatomic,strong) UIImageView *logoImageView; +///选中 +@property (nonatomic,strong) UIButton *chooseButton; +///选中的个数 +@property (nonatomic,strong) UILabel *numberLabel; + +@end + + +@implementation QInputPhototCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.logoImageView]; + [self.contentView addSubview:self.chooseButton]; + [self.contentView addSubview:self.numberLabel]; +} + +- (void)initSubViewConstraints { + [self.logoImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.contentView); + }]; + + [self.chooseButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20, 20)); + make.right.top.mas_equalTo(self.contentView).inset(10); + }]; + + [self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.equalTo(self.chooseButton); + make.size.mas_equalTo(CGSizeMake(18, 18)); + }]; +} + +#pragma mark - Event Response +- (void)chooseButtonAction:(UIButton *)sender { + sender.selected = !sender.selected; + self.imageInfo.isSelect = sender.selected; + if (self.delegate && [self.delegate respondsToSelector:@selector(qInputPhototCell:didClickChoose:)]) { + [self.delegate qInputPhototCell:self didClickChoose:self.imageInfo]; + } +} + +#pragma mark - Getters And Setters +- (void)setImageInfo:(QPhotoImageModel *)imageInfo { + _imageInfo = imageInfo; + if (_imageInfo) { + self.numberLabel.hidden = !imageInfo.isSelect; + self.chooseButton.selected = imageInfo.isSelect; + if (!imageInfo.originImage) { + [[TZImageManager manager] getPhotoWithAsset:imageInfo.assetInfo.asset photoWidth:200 completion:^(UIImage *photo, NSDictionary *info, BOOL isDegraded) { + self.logoImageView.image = photo; + self.imageInfo.originImage = photo; + UIImage * image = [photo compressWithMaxLength:1024 * 10]; + self.imageInfo.compressImage = image; + } progressHandler:nil networkAccessAllowed:NO]; + } else { + self.logoImageView.image = imageInfo.originImage; + } + self.numberLabel.text = [NSString stringWithFormat:@"%ld", imageInfo.number]; + } +} + +- (UIImageView *)logoImageView { + if (!_logoImageView) { + _logoImageView = [[UIImageView alloc] init]; + _logoImageView.userInteractionEnabled = YES; + _logoImageView.layer.masksToBounds = YES; + _logoImageView.contentMode = UIViewContentModeScaleAspectFill; + _logoImageView.layer.cornerRadius = 4; + } + return _logoImageView; +} + +- (UIButton *)chooseButton { + if (!_chooseButton) { + _chooseButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_chooseButton setBackgroundImage:[UIImage imageNamed:@"session_input_tool_choose_normal"] forState:UIControlStateNormal]; + [_chooseButton setBackgroundImage:[UIImage imageNamed:@"session_input_tool_choose_normal"] forState:UIControlStateSelected]; + [_chooseButton addTarget:self action:@selector(chooseButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_chooseButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + } + return _chooseButton; +} + + +- (UILabel *)numberLabel { + if (!_numberLabel) { + _numberLabel = [[UILabel alloc] init]; + _numberLabel.font = [UIFont systemFontOfSize:10]; + _numberLabel.textColor = [UIColor whiteColor]; + _numberLabel.backgroundColor = [DJDKMIMOMColor colorWithHexString:@"#5FCCE4"]; + _numberLabel.layer.masksToBounds = YES; + _numberLabel.layer.cornerRadius = 9; + _numberLabel.textAlignment = NSTextAlignmentCenter; + } + return _numberLabel; +} + +@end diff --git a/YuMi/CustomUI/InputView/InputView/QKeyboardBaseManager.h b/YuMi/CustomUI/InputView/InputView/QKeyboardBaseManager.h new file mode 100755 index 00000000..a6b3860f --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/QKeyboardBaseManager.h @@ -0,0 +1,21 @@ +// +// QKeyboardBaseManager.h +// QKeyBoardDemo +// +// Created by QDong on 2021-8-3. +// Copyright (c) 2021年 QDong QQ:285275534@qq.com. All rights reserved. +// + +#import +#import "QInputBarViewConfiguration.h" + +@interface QKeyboardBaseManager : NSObject + +- (instancetype)initWithViewController:(UIViewController *)viewController; + +@property (nonatomic, weak) UIViewController *viewController;//当前vc + +// 输入栏TextView的高度发送变化的动画时长(秒) +@property (nonatomic, assign) NSTimeInterval inputBarHeightChangeAnimationDuration; // default is 0.2 + +@end diff --git a/YuMi/CustomUI/InputView/InputView/QKeyboardBaseManager.m b/YuMi/CustomUI/InputView/InputView/QKeyboardBaseManager.m new file mode 100755 index 00000000..04b5100c --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/QKeyboardBaseManager.m @@ -0,0 +1,102 @@ +// +// QKeyboardBaseManager.m +// QKeyBoardDemo +// +// Created by QDong on 2021-8-3. +// Copyright (c) 2021年 QDong QQ:285275534@qq.com. All rights reserved. +// + +#import "QKeyboardBaseManager.h" + +@interface QKeyboardBaseManager() + +@end + +@implementation QKeyboardBaseManager + +- (instancetype)initWithViewController:(UIViewController *)viewController { + self = [super init]; + if (self) { + self.viewController = viewController; + + // 键盘通知 + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(onKeyboardWillShowNotification:) + name:UIKeyboardWillShowNotification + object:nil]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(onKeyboardWillHideNotification:) + name:UIKeyboardWillHideNotification + object:nil]; + + //经过DQ测试,ios13死活收不到UIKeyboardDidShowNotification,情况不明 + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(onKeyboardDidShowNotification:) + name:UIKeyboardDidShowNotification + object:nil]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(onKeyboardDidHideNotification:) + name:UIKeyboardDidHideNotification + object:nil]; + + // 输入栏TextView的高度发送变化的动画时长(秒) + self.inputBarHeightChangeAnimationDuration = 0.2; + } + return self; +} + +#pragma mark - Keyboard notifications +- (void)onKeyboardDidShowNotification:(NSNotification *)notification { + +} + +- (void)onKeyboardDidHideNotification:(NSNotification *)notification { + +} + +//在模拟器上测试:如果模拟器的键盘无法弹出,那么点击输入栏不会收到WillShowNotification,而是直接收到WillHideNotification,但是这种情况下依然会走textViewShouldBeginEditing +- (void)onKeyboardWillShowNotification:(NSNotification *)notification { + CGRect keyboardRect = [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; + UIViewAnimationCurve curve = [[notification.userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey] integerValue]; + double duration = [[notification.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]; + [self onKeyboardWillShowOrHideByNotifications:keyboardRect animationOptions:[self animationOptionsForCurve:curve] duration:duration showKeyboard:YES]; +} + +- (void)onKeyboardWillHideNotification:(NSNotification *)notification { + CGRect keyboardRect = [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; + UIViewAnimationCurve curve = [[notification.userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey] integerValue]; + double duration = [[notification.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]; + [self onKeyboardWillShowOrHideByNotifications:keyboardRect animationOptions:[self animationOptionsForCurve:curve] duration:duration showKeyboard:NO]; +} + +#pragma mark - Need Override +- (void)onKeyboardWillShowOrHideByNotifications:(CGRect)keyboardRect animationOptions:(UIViewAnimationOptions)animationOptions duration:(double)duration showKeyboard:(BOOL)showKeyboard { +} + +- (UIViewAnimationOptions)animationOptionsForCurve:(UIViewAnimationCurve)curve { + switch (curve) { + case UIViewAnimationCurveEaseInOut: + return UIViewAnimationOptionCurveEaseInOut; + + case UIViewAnimationCurveEaseIn: + return UIViewAnimationOptionCurveEaseIn; + + case UIViewAnimationCurveEaseOut: + return UIViewAnimationOptionCurveEaseOut; + + case UIViewAnimationCurveLinear: + return UIViewAnimationOptionCurveLinear; + + default: + return kNilOptions; + } +} + + +- (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +@end diff --git a/YuMi/CustomUI/InputView/InputView/QKeyboardManager.h b/YuMi/CustomUI/InputView/InputView/QKeyboardManager.h new file mode 100755 index 00000000..72eeb96d --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/QKeyboardManager.h @@ -0,0 +1,91 @@ +// +// QKeyboardBaseManager.h +// QKeyboardQKeyboard +// +// Created by QDong on 2021-8-3. +// Copyright (c) 2021年 QDong QQ:285275534@qq.com. All rights reserved. +// + +#import "QKeyboardBaseManager.h" + +@class QKeyboardManager; + +@protocol InputBoardDataSource +@optional + +//@return 点加号按钮弹出的拓展面板View,且无需设置frame +- (UIView *)keyboardManagerExtendBoardView:(QKeyboardManager *)keyboardManager; + +//@return 点表情按钮弹出的表情面板View,且无需设置frame +- (UIView *)keyboardManagerEmotionBoardView:(QKeyboardManager *)keyboardManager; + +//@return 点加号按钮弹出的拓展面板View的高度 +- (CGFloat)keyboardManagerExtendBoardHeight:(QKeyboardManager *)keyboardManager; + +//@return 点表情按钮弹出的表情面板View的高度 +- (CGFloat)keyboardManagerEmotionBoardHeight:(QKeyboardManager *)keyboardManager; + +//@return 点表情按钮弹出的选择图片View,且无需设置frame +- (UIView *)keyboardManagerPhotoBoardView:(QKeyboardManager *)keyboardManager; + +//@return 选择图片的高度 +- (CGFloat)keyboardManagerPhotoBoardHeight:(QKeyboardManager *)keyboardManager; + +@end + +//整个”输入View“的高度发生变化的原因(整个输入View包含bar和表情栏或者键盘) +typedef NS_ENUM(NSUInteger, WholeInputViewHeightDidChangeReason) { + WholeInputViewHeightDidChangeReasonWillAddToSuperView = 0, //因为输入条被add到vc中 + WholeInputViewHeightDidChangeReasonTextDidChange,//因为文本框输入的内容高度发生变化 + WholeInputViewHeightDidChangeReasonTextDidSend,//因为点“发送”按钮所以清空了文本框 2022-03-24与上面那条区分开 + WholeInputViewHeightDidChangeReasonBoardDidShow,//显示了 软键盘or面板(表情面板或者拓展面板) + WholeInputViewHeightDidChangeReasonBoardDidHide,//隐藏了 软键盘or面板(表情面板或者拓展面板) +}; + +@protocol InputBoardDelegate + +@optional + +//整个输入View的高度发生变化(整个View包含bar和表情栏或者键盘,但是不包含底部安全区高度) +//会触发这个的原因:1、addBottomInputBarView;2、输入文字换行了;3、切换面板;4、呼出键盘 +//Warning:这个回调方法的触发已经在animate中了,无需再在本方法里写animate +- (void)keyboardManager:(QKeyboardManager *)keyboardManager onWholeInputViewHeightDidChange:(CGFloat)wholeInputViewHeight reason:(WholeInputViewHeightDidChangeReason)reason; + +@end + +@interface QKeyboardManager : QKeyboardBaseManager + +@property (nonatomic, weak) id dataSource; + +@property (nonatomic, weak) id delegate; + +//viewController是否要走viewWillDisappear;为了解决:键盘弹出状态下vc侧滑返回,会触发Notification进而影响inputBarView.frame的bug +@property(nonatomic, assign) BOOL viewControllerWillDisappear; + +/** + * public - 添加底部输入框View + * @param belowViewController :YES表示输入框平时不显示(比如朋友圈);NO表示平时也显示(比如聊天) + */ +- (void)addBottomInputBarView:(UIView *)inputBarView belowViewController:(BOOL)belowViewController; + +// public - 为了方便动画切换,本Manager类需要拿到textview或textField的引用,如果有输入条,请传过来;没有输入条可以不调用该方法 +- (void)bindTextView:(UIResponder *)inputTextView; + +// public - 底部的输入框高度发生变化,becauseSendText: 是因为点击了“发送”按钮清空了文本进而导致了输入栏高度变化 +- (void)inputTextViewHeightDidChange:(BOOL)becauseSendText; + +// public - 隐藏所有面板,包括表情面板和拓展面板 +- (void)hideAllBoardView; + +// public - 表情面板和键盘之间的切换 +- (void)switchToEmotionBoardKeyboard; + +// public - 拓展面板和键盘之间的切换 +- (void)switchToExtendBoardKeyboard; + +// public - 切换到选择图片,toExtendBoardView +- (void)switchToPhotoBoardKeyboard; + +// public - 切换到拓展面板,toExtendBoardView +- (void)switchToAudioBoardKeyboard; +@end diff --git a/YuMi/CustomUI/InputView/InputView/QKeyboardManager.m b/YuMi/CustomUI/InputView/InputView/QKeyboardManager.m new file mode 100755 index 00000000..60d82fdd --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/QKeyboardManager.m @@ -0,0 +1,426 @@ +// +// QKeyboardManager.m +// QKeyBoardDemo +// +// Created by QDong on 2021-8-3. +// Copyright (c) 2021年 QDong QQ:285275534@qq.com. All rights reserved. +// + +#import "QKeyboardManager.h" +#import "QinputPhotoView.h" +typedef NS_ENUM(NSUInteger, InputState) { + InputStateNormal = 0, //默认状态,没弹出键盘 也没弹出表情 也没弹出extend面板 + InputStateText,//弹出软键盘状态 + InputStateEmotion,//弹出表情状态 + InputStateExtend,//弹出extend面板状态 + InputStatePhoto,//弹出选择图片 +}; + +@interface QKeyboardManager() + +//true:输入条平时是不显示出来的;false:输入条一直都在vc底部 +@property (nonatomic, assign) BOOL inputBarBelowViewController; + +//当前的输入状态 +@property (nonatomic, assign) InputState currentInputState; + +//输入条,由vc传过来,一般情况下,这个输入框是inputBar的子view,但是也可能不是(比如发微博界面) +@property (nonatomic, weak, nullable) UIResponder *inputTextView; + +//那一条输入框bar,由vc传过来,包含了左右的按钮 +@property (nonatomic, strong, nullable) UIView *inputBarView; + +@property (nonatomic, strong, nullable) UIView *emotionBoardView; + +@property (nonatomic, strong, nullable) UIView *extendBoardView; +@property (nonatomic, strong, nullable) UIView *photoBoardView; + +//iPhoneX底部距离 +@property (nonatomic, assign) float safeAreaInsetsBottom; + +//iPhoneX系列手机上,如果手指快速向上滑动tableView,那么会出现0.1秒的"可以透过inputBar和底部安全区中间看到背景tableView"。为了解决这个细小的问题,我加入了这个 +@property (nonatomic, strong, nullable) UIView *belowInputBarXView; + +@end + +@implementation QKeyboardManager + +#pragma mark - public 添加底部输入框View +- (void)addBottomInputBarView:(UIView *)inputBarView belowViewController:(BOOL)belowViewController { + + if (@available(iOS 11.0, *)) { + //如果是x,给底部的34pt添加上背景颜色,颜色和输入条一致 + _safeAreaInsetsBottom = UIApplication.sharedApplication.windows.firstObject.safeAreaInsets.bottom; + if (_safeAreaInsetsBottom > 0 && !belowViewController) { + //iPhoneX 且 聊天界面VC(即输入条固定在底部)就会进入这里 + //我添加了一个和输入条背景颜色一样的普通View在inputView的底部 + _belowInputBarXView = [[UIView alloc] initWithFrame:CGRectMake(0, self.viewController.view.frame.size.height - _safeAreaInsetsBottom , self.viewController.view.frame.size.width, _safeAreaInsetsBottom)]; + _belowInputBarXView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin); + _belowInputBarXView.backgroundColor = inputBarView.backgroundColor; + [self.viewController.view addSubview:_belowInputBarXView]; + [self.viewController.view bringSubviewToFront:_belowInputBarXView]; + } + } + + //注意这里,系统会自动调整inputBarView的y和width + inputBarView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin); + + // 工具条的frame + CGRect inputFrame = CGRectMake(0.0f,self.viewController.view.frame.size.height + (belowViewController ? 0 : (- inputBarView.frame.size.height - self.safeAreaInsetsBottom)), + self.viewController.view.frame.size.width, + inputBarView.frame.size.height); + + // vc创建的工具条,本类负责设置frame和addSubview + inputBarView.frame = inputFrame; + + [self.viewController.view addSubview:inputBarView]; + [self.viewController.view bringSubviewToFront:inputBarView]; + + //因为底部添加了输入条;回调给vc,让vc处理界面的tableview的frame + [self callBackWholeInputViewHeightDidChange:belowViewController ? 0 : inputBarView.frame.size.height reason:WholeInputViewHeightDidChangeReasonWillAddToSuperView]; + + self.inputBarView = inputBarView; + self.inputBarBelowViewController = belowViewController; +} + +//public - 由vc调用该方法,让本manager类拿到textView的引用 +- (void)bindTextView:(UIResponder *)inputTextView { + self.inputTextView = inputTextView; +} + +#pragma mark - DataSource - 由ViewController实现表情面板view和拓展面板view +- (UIView * _Nullable)extendBoardView { + if (!_extendBoardView) { + if ([self.dataSource respondsToSelector:@selector(keyboardManagerExtendBoardView:)]) { + _extendBoardView = [self.dataSource keyboardManagerExtendBoardView:self]; + CGFloat extendBoardHeight = 220;//默认高度 + if ([self.dataSource respondsToSelector:@selector(keyboardManagerExtendBoardHeight:)]) { + extendBoardHeight = [self.dataSource keyboardManagerExtendBoardHeight:self]; + } + _extendBoardView.frame = CGRectMake(0, CGRectGetHeight(self.viewController.view.bounds), CGRectGetWidth(self.viewController.view.bounds), extendBoardHeight); + _extendBoardView.alpha = 0.0; + [self.viewController.view addSubview:_extendBoardView]; + [self.viewController.view bringSubviewToFront:_extendBoardView]; + } + } + return _extendBoardView; +} + +- (UIView * _Nullable)emotionBoardView { + if (!_emotionBoardView) { + if ([self.dataSource respondsToSelector:@selector(keyboardManagerEmotionBoardView:)]) { + _emotionBoardView = [self.dataSource keyboardManagerEmotionBoardView:self]; + CGFloat emotionBoardHeight = 220;//默认高度 + if ([self.dataSource respondsToSelector:@selector(keyboardManagerEmotionBoardHeight:)]) { + emotionBoardHeight = [self.dataSource keyboardManagerEmotionBoardHeight:self]; + } + _emotionBoardView.frame = CGRectMake(0, CGRectGetHeight(self.viewController.view.bounds), CGRectGetWidth(self.viewController.view.bounds), emotionBoardHeight); + _emotionBoardView.alpha = 0.0; + [self.viewController.view addSubview:_emotionBoardView]; + [self.viewController.view bringSubviewToFront:_emotionBoardView]; + } + } + return _emotionBoardView; +} + +- (UIView * _Nullable)photoBoardView { + if (!_photoBoardView) { + if ([self.dataSource respondsToSelector:@selector(keyboardManagerPhotoBoardView:)]) { + _photoBoardView = [self.dataSource keyboardManagerPhotoBoardView:self]; + CGFloat emotionBoardHeight = 220;//默认高度 + if ([self.dataSource respondsToSelector:@selector(keyboardManagerEmotionBoardHeight:)]) { + emotionBoardHeight = [self.dataSource keyboardManagerPhotoBoardHeight:self]; + } + _photoBoardView.frame = CGRectMake(0, CGRectGetHeight(self.viewController.view.bounds), CGRectGetWidth(self.viewController.view.bounds), emotionBoardHeight); + _photoBoardView.alpha = 0.0; + [self.viewController.view addSubview:_photoBoardView]; + [self.viewController.view bringSubviewToFront:_photoBoardView]; + } + } + return _photoBoardView; +} + +#pragma mark - Override Keyboard notifications +//Private 只有通过系统的键盘广播触发到这里 +- (void)onKeyboardWillShowOrHideByNotifications:(CGRect)keyboardRect animationOptions:(UIViewAnimationOptions)animationOptions duration:(double)duration showKeyboard:(BOOL)showKeyboard { + + if (![self.inputTextView isFirstResponder]) { + //本次弹出软键盘并不是因为我们的输入框,而是有别的输入框 + return; + } + + if (self.viewControllerWillDisappear) { + //为了解决:键盘弹出状态下vc侧滑返回,会触发Notification进而影响inputBarView.frame的bug + return; + } + + //马上要弹出键盘了,先看看当前的状态是哪个BoardView,一会要把它隐藏掉 + InputState previousInputState = self.currentInputState; + + if (showKeyboard) { + //马上要显示软键盘了,设置当前state为Text模式。 + self.currentInputState = InputStateText; + } + + //如果不做下面这个 if == InputStateText判断,会导致表情板(或拓展面板)和键盘切换时候inputbar会晃动 + //Q:为什么会抖动? + //A:软键盘切换到表情面板时:先调用hideKeyboardAndSwitchToCurrentBoardView方法去做动画,这时候State == InputStateEmotion。但是这时候由于软键盘收到了收起通知,也会进入到这里,这里也做了动画。两个动画冲突了 + //所以加上State == InputStateText,来确保弹出表情板时候不走下面的代码,进而让上述两个动画不会同时执行 + + //Q:为了避免上述抖动问题,为什么不换成if (showKeyboard)? + //A:因为如果是单纯的键盘收起其实还是要走下面的代码的;单纯的收起键盘时候showKeyboard为false,State为InputStateText + + if (self.currentInputState == InputStateText) { + + CGFloat keyboardY = [self.viewController.view convertRect:keyboardRect fromView:nil].origin.y; + + [UIView animateWithDuration:duration + delay:0.0 + options:animationOptions + animations:^{ + + [self layoutInputBarView:keyboardY boardAllHide:!showKeyboard]; + + if (showKeyboard){ + //键盘Notifition要willShow软键盘 + switch (previousInputState) { + case InputStateEmotion: { + [self switchEmotionBoardView:YES]; + break; + } + case InputStateExtend: { + [self switchExtendBoardView:YES]; + break; + } + case InputStatePhoto: { + [self switchPhotoBoardView:YES]; + break; + } + default: + break; + } + } else { + //当前本来就已经是软键盘输入文本 && 是键盘Notifition要willHide软键盘 + //进入这里的可能性:1、软键盘上的“收起键盘”按钮,2、点击左边的语音按钮,3、vc调用了tv.resignFirstResponder。 而vc调用hideAll的时候,会被hideKeyboardAndSwitchToCurrentBoardView吸收掉,并不会进入这里 + self.currentInputState = InputStateNormal; + } + + //回调给ViewController + [self callBackWholeInputViewHeightDidChange:self.viewController.view.frame.size.height + - self.inputBarView.frame.origin.y - self.safeAreaInsetsBottom reason:showKeyboard ? WholeInputViewHeightDidChangeReasonBoardDidShow : WholeInputViewHeightDidChangeReasonBoardDidHide]; + + } completion:nil]; + } +} + + +#pragma mark - private +/** + * private 切换(或者隐藏)当前面板; --------->>>>>> 如果是切换,调用该方法前需要设置好currentInputState <<<<<<<----------- + * @param allBoardHide yes == 隐藏所有面板,no == 显示currentInputState对应的面板(但是前提是设置好state) + */ +- (void)hideKeyboardAndSwitchToCurrentBoardView:(BOOL)allBoardHide { + + if (allBoardHide && self.currentInputState == InputStateText) { + //隐藏所有面板 && 当前是软键盘,由vc调用->hideAllBoardView(YES)->进入这里 + + //Q:为什么要在这里就把state设置为Normal? + //A:因为下面的resignFirstResponder会触发系统Notifications -> 进入onKeyboardWillShowOrHideByNotifications方法 + // -> if (self.currentInputState == InputStateText) -> self.layoutInputBarView ; self.callBack; + // + // 但是本方法下面已经实现了self.layoutInputBarView ; self.callBack; + // 所以这里把state设置为Normal就是避免再重复走上述方法,上述方法只是处理软键盘上的“收起键盘”按钮 + self.currentInputState = InputStateNormal; + } + + //无论是显示某个面板,还是隐藏所有面板,都要先让输入框失去焦点,然后再进行切换动画 + [self.inputTextView resignFirstResponder]; + //初始化一下面板view。如果在下面的动画代码里才初始化,会导致从左上角飘移进入 + [self extendBoardView]; + [self emotionBoardView]; + + [UIView animateWithDuration:0.2 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ + + CGRect currentBoardViewFrame = CGRectZero; + if (allBoardHide) { + //表示隐藏掉两个面板 + switch (self.currentInputState) { + case InputStateEmotion: { + currentBoardViewFrame = [self switchEmotionBoardView:allBoardHide]; + break; + } + case InputStateExtend: { + currentBoardViewFrame = [self switchExtendBoardView:allBoardHide]; + break; + } + case InputStatePhoto: { + currentBoardViewFrame = [self switchPhotoBoardView:allBoardHide]; + break; + } + default: + break; + } + } else { + //这里需要注意方法的执行顺序 + switch (self.currentInputState) { + case InputStateEmotion: { + // 1、先隐藏和自己无关的View + currentBoardViewFrame = [self switchPhotoBoardView:!allBoardHide]; + // 1、先隐藏和自己无关的View + currentBoardViewFrame = [self switchExtendBoardView:!allBoardHide]; + // 2、再显示和自己相关的View + currentBoardViewFrame = [self switchEmotionBoardView:allBoardHide]; + break; + } + case InputStateExtend: { + // 1、先隐藏和自己无关的View + currentBoardViewFrame = [self switchPhotoBoardView:!allBoardHide]; + // 1、先隐藏和自己无关的View + currentBoardViewFrame = [self switchEmotionBoardView:!allBoardHide]; + // 2、再显示和自己相关的View + currentBoardViewFrame = [self switchExtendBoardView:allBoardHide]; + break; + } + case InputStatePhoto: { + // 1、先隐藏和自己无关的View + currentBoardViewFrame = [self switchEmotionBoardView:!allBoardHide]; + currentBoardViewFrame = [self switchExtendBoardView:!allBoardHide]; + currentBoardViewFrame = [self switchPhotoBoardView:allBoardHide]; + break; + } + default: + break; + } + } + + //重设InputBarView的frame + [self layoutInputBarView:CGRectGetMinY(currentBoardViewFrame) boardAllHide:allBoardHide]; + + //回调给ViewController + [self callBackWholeInputViewHeightDidChange:self.viewController.view.frame.size.height + - self.inputBarView.frame.origin.y - self.safeAreaInsetsBottom reason:allBoardHide ? WholeInputViewHeightDidChangeReasonBoardDidHide : WholeInputViewHeightDidChangeReasonBoardDidShow]; + + } completion:^(BOOL finished) { + if (allBoardHide) { + self.currentInputState = InputStateNormal; + } + }]; +} + +/** + * private 显示(no)或者 隐藏(yes)表情面板 + * @return 表情面板的Frame + **/ +- (CGRect)switchEmotionBoardView:(BOOL)hide { + CGRect prevFrame = self.emotionBoardView.frame; + prevFrame.origin.y = (hide ? CGRectGetHeight(self.viewController.view.frame) : (CGRectGetHeight(self.viewController.view.frame) - CGRectGetHeight(prevFrame))); + self.emotionBoardView.alpha = !hide; + self.emotionBoardView.frame = prevFrame; + return prevFrame; +} + +/** + * private 显示(no)或者 隐藏(yes)拓展面板 + * @return 拓展面板的Frame + **/ +- (CGRect)switchExtendBoardView:(BOOL)hide { + CGRect prevFrame = self.extendBoardView.frame; + prevFrame.origin.y = (hide ? CGRectGetHeight(self.viewController.view.frame) : (CGRectGetHeight(self.viewController.view.frame) - CGRectGetHeight(prevFrame))); + self.extendBoardView.alpha = !hide; + self.extendBoardView.frame = prevFrame; + return prevFrame; +} + +- (CGRect)switchPhotoBoardView:(BOOL)hide { + CGRect prevFrame = self.photoBoardView.frame; + prevFrame.origin.y = (hide ? CGRectGetHeight(self.viewController.view.frame) : (CGRectGetHeight(self.viewController.view.frame) - CGRectGetHeight(prevFrame))); + self.photoBoardView.alpha = !hide; + self.photoBoardView.frame = prevFrame; + return prevFrame; +} + +/** + * private 依据当前面板切换,来决定输入条view的frame + * @param currentBoardViewMinY 当前面板的Frame的minY + * @param boardAllHide yes 表示所有面板都是隐藏的状态,no 但凡有一个面板没隐藏 + **/ +- (void)layoutInputBarView:(CGFloat)currentBoardViewMinY boardAllHide:(BOOL)boardAllHide { + CGRect prevInputViewFrame = self.inputBarView.frame; + if (boardAllHide) { + //隐藏掉两个面板 + CGFloat hidedFrameY = CGRectGetHeight(self.viewController.view.bounds); + if (!self.inputBarBelowViewController){ + hidedFrameY -= CGRectGetHeight(prevInputViewFrame); + hidedFrameY -= self.safeAreaInsetsBottom; + } + prevInputViewFrame.origin.y = hidedFrameY; + } else { + prevInputViewFrame.origin.y = currentBoardViewMinY - CGRectGetHeight(prevInputViewFrame); + } + self.inputBarView.frame = prevInputViewFrame; + + CGRect belowInputBarXViewFrame = self.belowInputBarXView.frame; + self.belowInputBarXView.frame = CGRectMake(belowInputBarXViewFrame.origin.x, CGRectGetMaxY(self.inputBarView.frame), belowInputBarXViewFrame.size.width, belowInputBarXViewFrame.size.height); +} + +//private +- (void)callBackWholeInputViewHeightDidChange:(CGFloat)wholeInputViewHeight reason:(WholeInputViewHeightDidChangeReason)reason { + if ([_delegate respondsToSelector:@selector(keyboardManager:onWholeInputViewHeightDidChange:reason:)]){ + [_delegate keyboardManager:self onWholeInputViewHeightDidChange:wholeInputViewHeight reason:reason]; + } +} + +#pragma mark - public +// public - 底部的输入框高度发生变化,changeValue 高度变化值 +- (void)inputTextViewHeightDidChange:(BOOL)becauseSendText { + //回调给ViewController + [self callBackWholeInputViewHeightDidChange: self.viewController.view.frame.size.height + - self.inputBarView.frame.origin.y - _safeAreaInsetsBottom reason: becauseSendText ? WholeInputViewHeightDidChangeReasonTextDidSend : WholeInputViewHeightDidChangeReasonTextDidChange]; +} + +// public - 隐藏所有面板,包括表情面板和拓展面板 和 软键盘 +- (void)hideAllBoardView { + if (self.currentInputState != InputStateNormal) { + //说明当前要么是键盘,要么是表情面板或者拓展面板 + [self hideKeyboardAndSwitchToCurrentBoardView:YES]; + } +} + +// public - 切换到表情面板,toEmotionBoardView +- (void)switchToEmotionBoardKeyboard { + //先设置全局变量State为表情State + self.currentInputState = InputStateEmotion; + + //NO表示是要显示当前面板(即InputStateEmotion) + [self hideKeyboardAndSwitchToCurrentBoardView:NO]; +} + +// public - 切换到拓展面板,toExtendBoardView +- (void)switchToExtendBoardKeyboard { + //先设置全局变量State为拓展State + self.currentInputState = InputStateExtend; + + //NO表示是要显示当前面板(即InputStateExtend) + [self hideKeyboardAndSwitchToCurrentBoardView: NO]; +} + +// public - 切换到选择图片,toExtendBoardView +- (void)switchToPhotoBoardKeyboard { + //先设置全局变量State为拓展State + self.currentInputState = InputStatePhoto; + //NO表示是要显示当前面板(即InputStatePhoto) + [self hideKeyboardAndSwitchToCurrentBoardView: NO]; +} + +// public - 切换到拓展面板,toExtendBoardView +- (void)switchToAudioBoardKeyboard { + //先设置全局变量State为拓展State + self.currentInputState = InputStateNormal; + //NO表示是要显示当前面板(即InputStateExtend) + [self hideKeyboardAndSwitchToCurrentBoardView: YES]; +} + +//顺便提一句:切换到软键盘是靠系统的[textView becomeFirstResponder]; 然后会触发键盘的Notification,然后就进入我上面封装的onKeyboardWillShowOrHideByNotifications方法 + + +@end diff --git a/YuMi/CustomUI/InputView/InputView/QPhotoImageModel.h b/YuMi/CustomUI/InputView/InputView/QPhotoImageModel.h new file mode 100644 index 00000000..47dfb1f6 --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/QPhotoImageModel.h @@ -0,0 +1,27 @@ +// +// QPhotoImageModel.h +// YUMI +// +// Created by YUMI on 2023/1/11. +// + +#import +#import +NS_ASSUME_NONNULL_BEGIN + +@interface QPhotoImageModel : NSObject +///是否选中 +@property (nonatomic,assign) BOOL isSelect; +///是否是原图 +@property (nonatomic,assign) BOOL isOrigin; +///图片信息 +@property (nonatomic,strong) TZAssetModel *assetInfo; +///图片 +@property (nonatomic,strong) UIImage *originImage; +///缩略图 +@property (nonatomic,strong) UIImage *compressImage; +///个数 +@property (nonatomic,assign) NSInteger number; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/InputView/InputView/QPhotoImageModel.m b/YuMi/CustomUI/InputView/InputView/QPhotoImageModel.m new file mode 100644 index 00000000..02d94680 --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/QPhotoImageModel.m @@ -0,0 +1,12 @@ +// +// QPhotoImageModel.m +// YUMI +// +// Created by YUMI on 2023/1/11. +// + +#import "QPhotoImageModel.h" + +@implementation QPhotoImageModel + +@end diff --git a/YuMi/CustomUI/InputView/InputView/QinputPhotoView.h b/YuMi/CustomUI/InputView/InputView/QinputPhotoView.h new file mode 100644 index 00000000..ae4ca2d0 --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/QinputPhotoView.h @@ -0,0 +1,33 @@ +// +// QinputPhotoView.h +// YUMI +// +// Created by YUMI on 2023/1/11. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class QinputPhotoView; +@protocol QinputPhotoViewDelegate + +///点击选择相册 +- (void)qinputPhotoView:(QinputPhotoView *)view didClickPhoto:(UIButton *)sender; +///发送图片 +- (void)qinputPhotoView:(QinputPhotoView *)view didClickSend:(NSArray *)photoList; +@end + +@interface QinputPhotoView : UIView + +@property (nonatomic,strong) NSArray *photoList; +///代理 +@property (nonatomic,weak) id delegate; +///是否选择原图 +@property (nonatomic,assign) BOOL isOrigin; + +///重置 +- (void)resetChoosePhotos; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/InputView/InputView/QinputPhotoView.m b/YuMi/CustomUI/InputView/InputView/QinputPhotoView.m new file mode 100644 index 00000000..1f18dfaf --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/QinputPhotoView.m @@ -0,0 +1,233 @@ +// +// QinputPhotoView.m +// YUMI +// +// Created by YUMI on 2023/1/11. +// + +#import "QinputPhotoView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "NSArray+Safe.h" +#import "XNDJTDDLoadingTool.h" +///Model +#import "QPhotoImageModel.h" +///View +#import "QInputPhototCell.h" + +@interface QinputPhotoView () + +///列表 +@property (nonatomic,strong) UICollectionView *collectionView; +///相册 +@property (nonatomic,strong) UIButton *photoButton; +///原图 +@property (nonatomic,strong) UIButton *originButton; +///发送按钮 +@property (nonatomic,strong) UIButton *sendButton; +///选择发送的图片 +@property (nonatomic,strong) NSMutableArray *chooseArray; + +@end + +@implementation QinputPhotoView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Public Method +- (void)resetChoosePhotos { + [self.chooseArray removeAllObjects]; + for (QPhotoImageModel * model in self.photoList) { + model.isSelect = NO; + } + [self.collectionView reloadData]; + if (self.photoList.count > 0) { + [self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:0] atScrollPosition:UICollectionViewScrollPositionNone animated:NO]; + } +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.collectionView]; + [self addSubview:self.photoButton]; + [self addSubview:self.originButton]; + [self addSubview:self.sendButton]; +} + +- (void)initSubViewConstraints { + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.left.right.equalTo(self).offset(0); + make.height.mas_equalTo(138 + 16); + }]; + + [self.photoButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self).offset(16); + make.top.mas_equalTo(self.collectionView.mas_bottom).offset(1); + }]; + + [self.originButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(50, 25)); + make.left.mas_equalTo(self.photoButton.mas_right).offset(20); + make.centerY.mas_equalTo(self.photoButton); + }]; + + [self.sendButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(56, 22)); + make.right.mas_equalTo(self).offset(-16); + make.centerY.mas_equalTo(self.photoButton); + }]; +} + +#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.photoList.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + QInputPhototCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([QInputPhototCell class]) forIndexPath:indexPath]; +QPhotoImageModel * imageInfo = [self.photoList safeObjectAtIndex1:indexPath.row]; + cell.imageInfo = imageInfo; + cell.delegate = self; + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + [collectionView deselectItemAtIndexPath:indexPath animated:YES]; +} + +#pragma mark - QInputPhototCell +- (void)qInputPhototCell:(QInputPhototCell *)view didClickChoose:(QPhotoImageModel *)model { + model.isOrigin = self.isOrigin; + if (self.chooseArray.count > 9) { + model.isSelect = NO; + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"QinputPhotoView0")]; + [self.collectionView reloadData]; + return; + } + + if (model.isSelect) { + if (![self.chooseArray containsObject:model]) { + [self.chooseArray addObject:model]; + } + if ([self.photoList containsObject:model]) { + NSInteger index = [self.photoList indexOfObject:model]; + [self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForRow:index + 1 inSection:0] atScrollPosition:UICollectionViewScrollPositionRight animated:YES]; + } + model.number = self.chooseArray.count; + } else { + + for (QPhotoImageModel * imageModel in self.chooseArray) { + if (imageModel.number > model.number) { + imageModel.number -=1; + } + } + + if ([self.chooseArray containsObject:model]) { + [self.chooseArray removeObject:model]; + } + } + + [self.collectionView reloadData]; +} + +#pragma mark - Event Response +- (void)photoButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(qinputPhotoView:didClickPhoto:)]) { + [self.delegate qinputPhotoView:self didClickPhoto:sender]; + } +} + +- (void)originButtonAction:(UIButton *)sender { + sender.selected = !sender.selected; + self.isOrigin = sender.selected; +} + +- (void)sendButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(qinputPhotoView:didClickSend:)]) { + [self.delegate qinputPhotoView:self didClickSend:self.chooseArray]; + } +} + +#pragma mark - Getters And Setters +- (UICollectionView *)collectionView{ + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + layout.itemSize = CGSizeMake(95, 138); + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + layout.minimumLineSpacing = 10; + layout.sectionInset = UIEdgeInsetsMake(0, 8, 8, 8); + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.showsHorizontalScrollIndicator = NO; + if (@available(iOS 11.0, *)) { + _collectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + _collectionView.backgroundColor = [DJDKMIMOMColor colorWithHexString:@"#F4F4FA"]; + [_collectionView registerClass:[QInputPhototCell class] forCellWithReuseIdentifier:NSStringFromClass([QInputPhototCell class])]; + } + return _collectionView; +} + +- (UIButton *)photoButton { + if (!_photoButton) { + _photoButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_photoButton setTitle:YMLocalizedString(@"QinputPhotoView1") forState:UIControlStateNormal]; + [_photoButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + _photoButton.titleLabel.font = [UIFont systemFontOfSize:14]; + [_photoButton addTarget:self action:@selector(photoButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _photoButton; +} + +- (UIButton *)originButton { + if (!_originButton) { + _originButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_originButton setTitle:YMLocalizedString(@"QinputPhotoView2") forState:UIControlStateNormal]; + [_originButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + _originButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_originButton setImage:[UIImage imageNamed:@"session_input_tool_choose_normal"] forState:UIControlStateNormal]; + [_originButton setImage:[UIImage imageNamed:@"session_input_tool_choose_select"] forState:UIControlStateSelected]; + _originButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; + [_originButton setImageEdgeInsets:UIEdgeInsetsMake(0, 2, 0, 0)]; + [_originButton setTitleEdgeInsets:UIEdgeInsetsMake(0, 5, 0, 0)]; + _originButton.layer.masksToBounds = YES; + _originButton.layer.cornerRadius = 14; + [_originButton addTarget:self action:@selector(originButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _originButton; +} + +- (UIButton *)sendButton { + if (!_sendButton) { + _sendButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_sendButton setTitle:YMLocalizedString(@"QinputPhotoView3") forState:UIControlStateNormal]; + [_sendButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + _sendButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_sendButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _sendButton.layer.masksToBounds = YES; + _sendButton.layer.cornerRadius = 10; + [_sendButton addTarget:self action:@selector(sendButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _sendButton; +} + +- (NSMutableArray *)chooseArray { + if(!_chooseArray) { + _chooseArray = [NSMutableArray array]; + } + return _chooseArray; +} + + + +@end diff --git a/YuMi/CustomUI/InputView/InputView/UITextView+MHTSpirit.h b/YuMi/CustomUI/InputView/InputView/UITextView+MHTSpirit.h deleted file mode 100644 index c66704b0..00000000 --- a/YuMi/CustomUI/InputView/InputView/UITextView+MHTSpirit.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// UITextView+MHTSpirit.h -// QKeyBoardDemo -// -// Created by QDong on 2021-8-3. -// Copyright (c) 2021年 QDong QQ:285275534@qq.com. All rights reserved. -// - - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface UITextView (MHTSpirit) - -- (void)insertSenintrtowardsemporalntIdiosyncracydBWSttr:(NSAttributedString *)emotionAttributedString; - -- (void)insertSenintrtowardsemporalnt:(NSString *)emotionKey; - -- (BOOL)representtowardsionSenintrtowardsemporalnt; - -- (NSString *)ordinaryEssay; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/InputView/InputView/UITextView+MHTSpirit.m b/YuMi/CustomUI/InputView/InputView/UITextView+MHTSpirit.m deleted file mode 100644 index 1ca2340f..00000000 --- a/YuMi/CustomUI/InputView/InputView/UITextView+MHTSpirit.m +++ /dev/null @@ -1,95 +0,0 @@ -// -// UITextView+MHTSpirit.h -// QKeyBoardDemo -// -// Created by QDong on 2021-8-3. -// Copyright (c) 2021年 QDong QQ:285275534@qq.com. All rights reserved. -// - -#import "UITextView+MHTSpirit.h" -#import "MHTESentimentIndicateRegard.h" -#import "YYText.h" - -@implementation UITextView (MHTSpirit) - -- (void)insertSenintrtowardsemporalntIdiosyncracydBWSttr:(NSAttributedString *)emotionAttributedString { - if (!emotionAttributedString){ - return; - } - NSMutableAttributedString *content = self.attributedText.mutableCopy; - - int location = (int)self.selectedRange.location; - [content insertAttributedString:emotionAttributedString atIndex:location]; - - [content addAttributes:@{NSFontAttributeName: self.font, NSForegroundColorAttributeName: self.textColor} range:NSMakeRange(location, emotionAttributedString.length)]; - - self.attributedText = content; - - NSRange range; - range.location = location + emotionAttributedString.length; - range.length = 0; - self.selectedRange = range; -} - -- (void)insertSenintrtowardsemporalnt:(NSString *)emotionKey { - NSMutableAttributedString *content = self.attributedText.mutableCopy; - - int location = (int)self.selectedRange.location; - [content insertAttributedString:[[NSAttributedString alloc] initWithString:emotionKey attributes:@{NSFontAttributeName:self.font,NSForegroundColorAttributeName:self.textColor}] atIndex:location]; - - self.attributedText = content; - - NSRange range; - range.location = location + emotionKey.length; - range.length = 0; - self.selectedRange = range; -} - -- (BOOL)representtowardsionSenintrtowardsemporalnt { - - int location = (int)self.selectedRange.location; - if(location == 0){ - return NO; - } - - NSString *headresult = [self.text substringToIndex:location]; - - if ([headresult hasSuffix:@"]"]) { - - for (int i = (int)[headresult length]; i>=0 ; i--) { - - char tempString = [headresult characterAtIndex:(i-1)]; - if (tempString == '[') { - NSMutableAttributedString *content = self.attributedText.mutableCopy; - - [content deleteCharactersInRange:NSMakeRange(i - 1,location - i + 1)]; - self.attributedText = content; - - NSRange range; - range.location = [headresult length]; - range.length = 0; - self.selectedRange = range; - return YES; - } - } - } - return NO; -} - -- (NSString *)ordinaryEssay { - NSMutableString *normalMutableString = self.attributedText.string.mutableCopy; - CGSize maxSize = CGSizeMake(50, MAXFLOAT); - YYTextLayout * layout = [YYTextLayout layoutWithContainerSize:maxSize text:self.attributedText]; - for (int i = 0; i< layout.attachments.count; i++) { - YYTextAttachment * attachment = [layout.attachments objectAtIndex:i]; - if (!attachment || ![attachment.content isKindOfClass:[MHTESentimentIndicateRegard class]]) continue; - MHTESentimentIndicateRegard* imageView = attachment.content; - NSValue * value = [layout.attachmentRanges objectAtIndex:i]; - NSRange range = value.rangeValue; - if (!imageView.exhibitionEssay) continue; - [normalMutableString replaceCharactersInRange:range withString:imageView.exhibitionEssay]; - } - return normalMutableString; -} - -@end diff --git a/YuMi/CustomUI/InputView/InputView/UITextView+QEmotion.h b/YuMi/CustomUI/InputView/InputView/UITextView+QEmotion.h new file mode 100644 index 00000000..4ec558cd --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/UITextView+QEmotion.h @@ -0,0 +1,31 @@ +// +// UITextView+QEmotion.h +// QKeyBoardDemo +// +// Created by QDong on 2021-8-3. +// Copyright (c) 2021年 QDong QQ:285275534@qq.com. All rights reserved. +// + + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface UITextView (QEmotion) + +// 给textView插入表情图片,比如😊 +- (void)insertEmotionAttributedString:(NSAttributedString *)emotionAttributedString; + +// 给textView插入表情的文本,比如[微笑] +- (void)insertEmotion:(NSString *)emotionKey; + +// textView删除表情 +// @return YES 表示刚才成功删除了一个表情; +// @return NO 表示刚才没删掉表情(于是本类就什么都不操作,由外部vc实现删除操作。这样做因为vc的自定义tv可能要实现文字块删除,比如 @人名) +- (BOOL)deleteEmotion; + +- (NSString *)normalText; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/InputView/InputView/UITextView+QEmotion.m b/YuMi/CustomUI/InputView/InputView/UITextView+QEmotion.m new file mode 100644 index 00000000..12d23569 --- /dev/null +++ b/YuMi/CustomUI/InputView/InputView/UITextView+QEmotion.m @@ -0,0 +1,100 @@ +// +// UITextView+QEmotion.h +// QKeyBoardDemo +// +// Created by QDong on 2021-8-3. +// Copyright (c) 2021年 QDong QQ:285275534@qq.com. All rights reserved. +// + +#import "UITextView+QEmotion.h" +#import "QEEmotionImageView.h" +#import "YYText.h" + +@implementation UITextView (QEmotion) + +// 给textView插入表情图片,比如😊 +- (void)insertEmotionAttributedString:(NSAttributedString *)emotionAttributedString { + if (!emotionAttributedString){ + return; + } + NSMutableAttributedString *content = self.attributedText.mutableCopy; + // 获得光标所在的位置 + int location = (int)self.selectedRange.location; + [content insertAttributedString:emotionAttributedString atIndex:location]; + // 修复由于插入AttributeString而导致font改变的问题;防止插入表情后textView的font变小 + [content addAttributes:@{NSFontAttributeName: self.font, NSForegroundColorAttributeName: self.textColor} range:NSMakeRange(location, emotionAttributedString.length)]; + + self.attributedText = content; + //重新设置光标位置 + NSRange range; + range.location = location + emotionAttributedString.length; + range.length = 0; + self.selectedRange = range; +} + +// 给textView插入表情的文本,比如[微笑] +- (void)insertEmotion:(NSString *)emotionKey { + NSMutableAttributedString *content = self.attributedText.mutableCopy; + // 获得光标所在的位置 + int location = (int)self.selectedRange.location; + [content insertAttributedString:[[NSAttributedString alloc] initWithString:emotionKey attributes:@{NSFontAttributeName:self.font,NSForegroundColorAttributeName:self.textColor}] atIndex:location]; + // 将调整后的字符串添加到UITextView上面 + self.attributedText = content; + //重新设置光标位置 + NSRange range; + range.location = location + emotionKey.length; + range.length = 0; + self.selectedRange = range; +} + +// textView删除表情 +// @return YES 表示刚才成功删除了一个表情; +// @return NO 表示刚才没删掉表情(于是本类就什么都不操作,由外部vc实现删除操作。这样做因为vc的自定义tv可能要实现文字块删除,比如 @人名) +- (BOOL)deleteEmotion { + //点的是删除按钮,获得光标所在的位置 + int location = (int)self.selectedRange.location; + if(location == 0){ + return NO; + } + // 先获取前半段 + NSString *headresult = [self.text substringToIndex:location]; + + if ([headresult hasSuffix:@"]"]) { + //最后一位是] + for (int i = (int)[headresult length]; i>=0 ; i--) { + //往前找,找到"[" + char tempString = [headresult characterAtIndex:(i-1)]; + if (tempString == '[') { + NSMutableAttributedString *content = self.attributedText.mutableCopy; + //砍掉[XXX],重新赋值前半段 + [content deleteCharactersInRange:NSMakeRange(i - 1,location - i + 1)]; + self.attributedText = content; + //重新设置光标位置 + NSRange range; + range.location = [headresult length]; + range.length = 0; + self.selectedRange = range; + return YES; + } + } + } + return NO; +} + +- (NSString *)normalText { + NSMutableString *normalMutableString = self.attributedText.string.mutableCopy; + CGSize maxSize = CGSizeMake(50, MAXFLOAT); + YYTextLayout * layout = [YYTextLayout layoutWithContainerSize:maxSize text:self.attributedText]; + for (int i = 0; i< layout.attachments.count; i++) { + YYTextAttachment * attachment = [layout.attachments objectAtIndex:i]; + if (!attachment || ![attachment.content isKindOfClass:[QEEmotionImageView class]]) continue; + QEEmotionImageView* imageView = attachment.content; + NSValue * value = [layout.attachmentRanges objectAtIndex:i]; + NSRange range = value.rangeValue; + if (!imageView.displayText) continue; + [normalMutableString replaceCharactersInRange:range withString:imageView.displayText]; + } + return normalMutableString; +} + +@end diff --git a/YuMi/CustomUI/MKJPopup/Config/MKJActionSheetDisposition.h b/YuMi/CustomUI/MKJPopup/Config/MKJActionSheetDisposition.h deleted file mode 100644 index b47a3c51..00000000 --- a/YuMi/CustomUI/MKJPopup/Config/MKJActionSheetDisposition.h +++ /dev/null @@ -1,45 +0,0 @@ -// -// MKJActionSheetDisposition.h -// AFNetworking -// -// Created by lee on 2019/5/23. -// action sheet item 配置 - -#import - -typedef enum : NSUInteger { - TTItemSelectNormal, - TTItemSelectHighLight, -} TTItemSelectType; - - -NS_ASSUME_NONNULL_BEGIN -typedef void(^TTActionSheetClickAction)(void); - -@interface MKJActionSheetDisposition : NSObject - - -@property (nonatomic, copy) NSString *title; - - -@property (nonatomic, strong) UIColor *titleColor; - - -@property (nonatomic, assign) TTItemSelectType type; - - -@property (nonatomic, copy) TTActionSheetClickAction ticktackPerformance; - - -+ (MKJActionSheetDisposition *)normalTitle:(NSString *)title - ticktackPerformance:(TTActionSheetClickAction)ticktackPerformance; -+ (MKJActionSheetDisposition *)normalTitle:(NSString *)title - selectColorType:(TTItemSelectType)type ticktackPerformance:(TTActionSheetClickAction)ticktackPerformance; - - -+ (MKJActionSheetDisposition *)actionWithTitle:(NSString *)title - color:(UIColor *)textColor - handler:(TTActionSheetClickAction)handler; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/MKJPopup/Config/MKJActionSheetDisposition.m b/YuMi/CustomUI/MKJPopup/Config/MKJActionSheetDisposition.m deleted file mode 100644 index c9a333e9..00000000 --- a/YuMi/CustomUI/MKJPopup/Config/MKJActionSheetDisposition.m +++ /dev/null @@ -1,42 +0,0 @@ -// -// MKJActionSheetDisposition.m -// AFNetworking -// -// Created by lee on 2019/5/23. -// - -#import "MKJActionSheetDisposition.h" -#import "DJDKMIMOMColor.h" - -@implementation MKJActionSheetDisposition - - -+ (MKJActionSheetDisposition *)normalTitle:(NSString *)title ticktackPerformance:(TTActionSheetClickAction)ticktackPerformance { - - return [self normalTitle:title selectColorType:TTItemSelectNormal ticktackPerformance:ticktackPerformance]; -} - -+ (MKJActionSheetDisposition *)normalTitle:(NSString *)title selectColorType:(TTItemSelectType)type ticktackPerformance:(TTActionSheetClickAction)ticktackPerformance { - - UIColor *color = type == TTItemSelectHighLight ? [DJDKMIMOMColor precautiousChampionPrettify] : [DJDKMIMOMColor precautiousChampionPrettify]; - - MKJActionSheetDisposition *config = [self actionWithTitle:title color:color handler:ticktackPerformance]; - config.type = type; - - return config; -} - -+ (MKJActionSheetDisposition *)actionWithTitle:(NSString *)title - color:(UIColor *)textColor - handler:(TTActionSheetClickAction)handler { - - MKJActionSheetDisposition *config = [[MKJActionSheetDisposition alloc] init]; - config.type = TTItemSelectNormal; - config.title = title; - config.titleColor = textColor; - config.ticktackPerformance = handler; - - return config; -} - -@end diff --git a/YuMi/CustomUI/MKJPopup/Config/MKJPrecautiousButtonDisposition.h b/YuMi/CustomUI/MKJPopup/Config/MKJPrecautiousButtonDisposition.h deleted file mode 100644 index 2e473ce2..00000000 --- a/YuMi/CustomUI/MKJPopup/Config/MKJPrecautiousButtonDisposition.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// MKJPrecautiousButtonDisposition.h -// YM_TTChatViewKit -// -// Created by lee on 2019/5/21. -// Copyright © 2023 YUMI. All rights reserved. -// alert 按钮配置 - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface MKJPrecautiousButtonDisposition : NSObject - -@property (nonatomic, copy) NSString *title; - -@property (nonatomic, strong) UIFont *font; - -@property (nonatomic, strong) UIColor *titleColor; - -@property (nonatomic, strong) UIColor *backgroundColor; - -@property (nonatomic, strong) UIImage *backgroundImage; - -@property (nonatomic, assign) CGFloat cornerRadius; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/MKJPopup/Config/MKJPrecautiousButtonDisposition.m b/YuMi/CustomUI/MKJPopup/Config/MKJPrecautiousButtonDisposition.m deleted file mode 100644 index c2e773e8..00000000 --- a/YuMi/CustomUI/MKJPopup/Config/MKJPrecautiousButtonDisposition.m +++ /dev/null @@ -1,13 +0,0 @@ -// -// MKJPrecautiousButtonDisposition.m -// YM_TTChatViewKit -// -// Created by lee on 2019/5/21. -// Copyright © 2023 YUMI. All rights reserved. -// - -#import "MKJPrecautiousButtonDisposition.h" - -@implementation MKJPrecautiousButtonDisposition - -@end diff --git a/YuMi/CustomUI/MKJPopup/Config/MKJPrecautiousCommunicationAttributedDisposition.h b/YuMi/CustomUI/MKJPopup/Config/MKJPrecautiousCommunicationAttributedDisposition.h deleted file mode 100644 index 24e13e27..00000000 --- a/YuMi/CustomUI/MKJPopup/Config/MKJPrecautiousCommunicationAttributedDisposition.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// TTAlertContentAttributedConfig.h -// YM_TTChatViewKit -// -// Created by lee on 2019/5/21. -// Copyright © 2023 YUMI. All rights reserved. -// alert 提示内容富文本配置 - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface MKJPrecautiousCommunicationAttributedDisposition : NSObject - - -@property (nonatomic, copy) NSString *text; - - -@property (nonatomic, strong) UIColor *color; - - -@property (nonatomic, strong) UIFont *font; - - -@property (nonatomic, assign) NSRange range; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/MKJPopup/Config/MKJPrecautiousCommunicationAttributedDisposition.m b/YuMi/CustomUI/MKJPopup/Config/MKJPrecautiousCommunicationAttributedDisposition.m deleted file mode 100644 index 2b1652cd..00000000 --- a/YuMi/CustomUI/MKJPopup/Config/MKJPrecautiousCommunicationAttributedDisposition.m +++ /dev/null @@ -1,13 +0,0 @@ -// -// TTAlertContentAttributedConfig.m -// YM_TTChatViewKit -// -// Created by lee on 2019/5/21. -// Copyright © 2023 YUMI. All rights reserved. -// - -#import "MKJPrecautiousCommunicationAttributedDisposition.h" - -@implementation MKJPrecautiousCommunicationAttributedDisposition - -@end diff --git a/YuMi/CustomUI/MKJPopup/Config/MKJPrecautiousDisposition.h b/YuMi/CustomUI/MKJPopup/Config/MKJPrecautiousDisposition.h deleted file mode 100644 index 2ef28bff..00000000 --- a/YuMi/CustomUI/MKJPopup/Config/MKJPrecautiousDisposition.h +++ /dev/null @@ -1,62 +0,0 @@ -// -// MKJPrecautiousDisposition.h -// YM_TTChatViewKit -// -// Created by lee on 2019/5/20. -// Copyright © 2023 YUMI. All rights reserved. -// alert 配置 - -#import -#import -#import "MKJPrecautiousButtonDisposition.h" -#import "MKJPrecautiousCommunicationAttributedDisposition.h" - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSUInteger, MKJAlertActionStyle) { - TTAlertActionConfirmStyle = 0, - TTAlertActionCancelStyle = 1, - TTAlertActionBothStyle = 2, -}; - - -@interface MKJPrecautiousDisposition : NSObject -@property (nonatomic, assign) MKJAlertActionStyle performanceStyle; -@property (nonatomic, strong) UIColor *backgroundColor; - -@property (nonatomic, copy) NSString *title; -@property (nonatomic, strong) UIFont *titleFont; -@property (nonatomic, strong) UIColor *titleColor; - -@property (nonatomic, copy) NSString *message; -@property (nonatomic, strong) UIFont *communicationLetterform; -@property (nonatomic, strong) UIColor *communicationPrettify; - -@property (nonatomic, assign) CGFloat communicationBurlywoodIntervacuum; - -@property (nonatomic, strong) NSArray *communicationAttributedDisposition; -@property (nonatomic,strong) NSMutableAttributedString *communicationAttributed; - -@property (nonatomic, strong) MKJPrecautiousButtonDisposition *revocationBtutonDisposition; - -@property (nonatomic, strong) MKJPrecautiousButtonDisposition *acknowledgementBtutonDisposition; - - -@property (nonatomic, assign) CGFloat maskEncouragegroundTransparency; - -@property (nonatomic, assign) CGFloat cornerRadius; - -@property (nonatomic, assign) BOOL shouldDismissOnBackgroundTouch; - - -@property (nonatomic, assign) BOOL disableRobotizationDisappearTerminTicktackBtuton; - - -@property (nonatomic, assign) BOOL shouldFilterSpringforth; - - -@property (nonatomic, copy) NSString *filterIdentifier; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/MKJPopup/Config/MKJPrecautiousDisposition.m b/YuMi/CustomUI/MKJPopup/Config/MKJPrecautiousDisposition.m deleted file mode 100644 index 2c940027..00000000 --- a/YuMi/CustomUI/MKJPopup/Config/MKJPrecautiousDisposition.m +++ /dev/null @@ -1,75 +0,0 @@ -// -// MKJPrecautiousDisposition.m -// YM_TTChatViewKit -// -// Created by lee on 2019/5/20. -// Copyright © 2023 YUMI. All rights reserved. -// - -#import "MKJPrecautiousDisposition.h" -#import "UIImage+Utils.h" -#import "DJDKMIMOMColor.h" - -static CGFloat kPrecautiousChampionLetterform = 18.f; -static CGFloat kPrecautiousBtutonLetterform = 15.f; -static CGFloat kPrecautiousCommunicationLetterform = 15.f; -static CGFloat kPrecautiousMonopolizeRestrictions = 12.f; -static CGFloat kPrecautiousEncouragegroundPrettifyTransparency = 0.3; -static CGFloat kPrecautiousCommunicationLetterformBurlywoodVacuum = -1; -static CGFloat kPrecautiousBtutonMonopolizeRestrictions = 8.f; - -@implementation MKJPrecautiousDisposition - -- (instancetype)init { - self = [super init]; - if (self) { - - _backgroundColor = [DJDKMIMOMColor precautiousEncouragegroundPrettify]; - - - kPrecautiousChampionLetterform = 16.f; - kPrecautiousMonopolizeRestrictions = 14.f; - kPrecautiousBtutonMonopolizeRestrictions = 19.f; - - _performanceStyle = TTAlertActionBothStyle; - - - _title = @""; - _titleFont = [UIFont fontWithName:@"PingFangSC-Medium" size:kPrecautiousChampionLetterform]; - _titleColor = [DJDKMIMOMColor precautiousChampionPrettify]; - - - _message = @""; - _communicationLetterform = [UIFont systemFontOfSize:kPrecautiousCommunicationLetterform]; - _communicationPrettify = [DJDKMIMOMColor precautiousCommunictowardsionPrettify]; - _communicationBurlywoodIntervacuum = kPrecautiousCommunicationLetterformBurlywoodVacuum; - _communicationAttributedDisposition = @[]; - - - _revocationBtutonDisposition = [[MKJPrecautiousButtonDisposition alloc] init]; - _revocationBtutonDisposition.title = @"取消"; - _revocationBtutonDisposition.font = [UIFont systemFontOfSize:kPrecautiousBtutonLetterform]; - _revocationBtutonDisposition.titleColor = [DJDKMIMOMColor revoctowardsionBtutonEssayPrettify]; - _revocationBtutonDisposition.backgroundImage = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor revoctowardsionBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor revoctowardsionBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)]; - _revocationBtutonDisposition.cornerRadius = kPrecautiousBtutonMonopolizeRestrictions; - - - _acknowledgementBtutonDisposition = [[MKJPrecautiousButtonDisposition alloc] init]; - _acknowledgementBtutonDisposition.title = YMLocalizedString(@"TT_Alert_Config_0"); - _acknowledgementBtutonDisposition.font = [UIFont systemFontOfSize:kPrecautiousBtutonLetterform]; - _acknowledgementBtutonDisposition.titleColor = [DJDKMIMOMColor acknowledgementBtutonEssayPrettify]; - _acknowledgementBtutonDisposition.backgroundImage = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)]; - _acknowledgementBtutonDisposition.cornerRadius = kPrecautiousBtutonMonopolizeRestrictions; - - _cornerRadius = kPrecautiousMonopolizeRestrictions; - _shouldDismissOnBackgroundTouch = YES; - - - _maskEncouragegroundTransparency = kPrecautiousEncouragegroundPrettifyTransparency; - _disableRobotizationDisappearTerminTicktackBtuton = NO; - } - return self; -} - -@end - diff --git a/YuMi/CustomUI/MKJPopup/Header/TTPopupConstants.h b/YuMi/CustomUI/MKJPopup/Header/TTPopupConstants.h deleted file mode 100644 index 95e74623..00000000 --- a/YuMi/CustomUI/MKJPopup/Header/TTPopupConstants.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// TTPopupConstants.h -// YM_TTChatViewKit -// -// Created by lvjunhang on 2019/5/21. -// Copyright © 2023 YUMI. All rights reserved. -// - -#import - - -typedef void(^TTPopupCompletionHandler)(void); - - -typedef NS_ENUM(NSUInteger, MKJPopupStyle) { - MKJPopupStyleAlert = 0, - MKJPopupStyleActionSheet -}; - - -typedef NS_ENUM(NSUInteger, MKJPopupPriority) { - MKJPopupPriorityNormal = 0, - MKJPopupPriorityHigh, - MKJPopupPriorityRequired -}; diff --git a/YuMi/CustomUI/MKJPopup/MKJPopup.h b/YuMi/CustomUI/MKJPopup/MKJPopup.h deleted file mode 100644 index e59d4c0d..00000000 --- a/YuMi/CustomUI/MKJPopup/MKJPopup.h +++ /dev/null @@ -1,77 +0,0 @@ -// -// MKJPopup.h -// YM_TTChatViewKit -// -// Created by lvjunhang on 2019/5/22. -// Copyright © 2023 YUMI. All rights reserved. -// 弹窗工具类 - -#import -#import "TTPopupConstants.h" -#import "MKJPrecautiousDisposition.h" -#import "MKJActionSheetDisposition.h" -#import "MKJPopupServing.h" - -NS_ASSUME_NONNULL_BEGIN - -@class UIView; - -@interface MKJPopup : NSObject - -#pragma mark Alert - -+ (void)precautiousAboutCommunictowardsion:(NSString *)message - acknowledgementHandler:(TTPopupCompletionHandler)acknowledgementHandler - cancelHandler:(TTPopupCompletionHandler)cancelHandler; - - - -+ (void)precautiousAboutDisposition:(MKJPrecautiousDisposition *)config - showBorder:(BOOL)isShowBorder - acknowledgementHandler:(TTPopupCompletionHandler)acknowledgementHandler - cancelHandler:(TTPopupCompletionHandler)cancelHandler; - - - -+ (void)precautiousAboutCommunictowardsion:(NSString *)message - config:(MKJPrecautiousDisposition *)config - showBorder:(BOOL)isShowBorder - cancelHandler:(TTPopupCompletionHandler)cancelHandler - acknowledgementHandler:(TTPopupCompletionHandler)acknowledgementHandler; - - -+ (void)precautiousAboutDisposition:(MKJPrecautiousDisposition *)config - acknowledgementHandler:(TTPopupCompletionHandler)acknowledgementHandler - cancelHandler:(TTPopupCompletionHandler)cancelHandler; - -#pragma mark Action Sheet - -+ (void)performanceSheetAboutProvisions:(NSArray *)items; - - -+ (void)performanceSheetAboutProvisions:(NSArray *)items - showCancelItem:(BOOL)showCancelItem; - - -+ (void)performanceSheetAboutProvisions:(NSArray *)items - cancelHandler:(TTActionSheetClickAction)cancelHandler; - -#pragma mark Popup - -+ (void)popupRegard:(UIView *)customView - style:(MKJPopupStyle)style; - - -+ (void)popupAboutDisposition:(MKJPopupServing *)config; - -#pragma mark Dismiss - -+ (void)dismiss; - -#pragma mark Query - -+ (BOOL)hasExhibitSpringforth; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/MKJPopup/MKJPopup.m b/YuMi/CustomUI/MKJPopup/MKJPopup.m deleted file mode 100644 index 24174703..00000000 --- a/YuMi/CustomUI/MKJPopup/MKJPopup.m +++ /dev/null @@ -1,235 +0,0 @@ -// -// MKJPopup.m -// YM_TTChatViewKit -// -// Created by lvjunhang on 2019/5/22. -// Copyright © 2023 YUMI. All rights reserved. -// - -#import "MKJPopup.h" -#import "MKJPrecautiousRegard.h" -#import "MKJActionSheetRegard.h" -#import "MKJPopupServing.h" -#import "MKJPopupExecutiveServing.h" - -static CGFloat const kActionSheetViewPadding = 15.f; -static CGFloat const kActionSheetViewCellHeight = 52.f; -static CGFloat const kActionSheetViewCancelViewHeight = 67.f; -static CGFloat const kActionSheetViewBottomPadding = 15.f; -static CGFloat const kMixHeight = 200.f; -static CGFloat const kMaxHeight = 450.f; - -@implementation MKJPopup - -#pragma mark - Public Methods -#pragma mark Alert -+ (void)precautiousAboutCommunictowardsion:(NSString *)message - acknowledgementHandler:(TTPopupCompletionHandler)acknowledgementHandler - cancelHandler:(TTPopupCompletionHandler)cancelHandler { - - [self precautiousAboutCommunictowardsion:message - config:nil - cancelHandler:cancelHandler - acknowledgementHandler:acknowledgementHandler]; -} - -+ (void)precautiousAboutDisposition:(MKJPrecautiousDisposition *)config - acknowledgementHandler:(TTPopupCompletionHandler)acknowledgementHandler - cancelHandler:(TTPopupCompletionHandler)cancelHandler { - - [self precautiousAboutCommunictowardsion:nil - config:config - cancelHandler:cancelHandler - acknowledgementHandler:acknowledgementHandler]; -} - -+ (void)precautiousAboutCommunictowardsion:(NSString *)message - config:(MKJPrecautiousDisposition *)config - cancelHandler:(TTPopupCompletionHandler)cancelHandler - acknowledgementHandler:(TTPopupCompletionHandler)acknowledgementHandler { - - if (!config) { - config = [[MKJPrecautiousDisposition alloc] init]; - config.message = message; - } - - if (config.message.length <= 0 && config.communicationAttributed.length <=0 && config.communicationAttributedDisposition.count <=0) { - NSAssert(NO, @" message can not be nil, 弹窗文案不可以为空"); - return; - } - CGFloat width = [UIScreen mainScreen].bounds.size.width - 40 * 2; - CGFloat height = ([self communictowardsionDimension:config.message width:width].height + 160); - - if (height < kMixHeight) { - height = kMixHeight; - } else if (height > kMaxHeight) { - height = kMaxHeight; - } - MKJPrecautiousRegard *contentView = [[MKJPrecautiousRegard alloc] initWithFrame:CGRectMake(0, 0, width, height)]; - contentView.config = config; - contentView.isDispositionDirectorate = NO; - contentView.revocationPerformance = cancelHandler; - contentView.acknowledgementPerformance = acknowledgementHandler; - if (!contentView.config.disableRobotizationDisappearTerminTicktackBtuton) { - - contentView.disappearPerformance = ^{ - [MKJPopup dismiss]; - }; - } - [self popupRegard:contentView style:MKJPopupStyleAlert config:config]; -} - -+ (void)precautiousAboutDisposition:(MKJPrecautiousDisposition *)config - showBorder:(BOOL)isShowBorder - acknowledgementHandler:(TTPopupCompletionHandler)acknowledgementHandler - cancelHandler:(TTPopupCompletionHandler)cancelHandler { - [self precautiousAboutCommunictowardsion:nil - config:config - showBorder:isShowBorder - cancelHandler:cancelHandler - acknowledgementHandler:acknowledgementHandler]; -} - -+ (void)precautiousAboutCommunictowardsion:(NSString *)message - config:(MKJPrecautiousDisposition *)config - showBorder:(BOOL)isShowBorder - cancelHandler:(TTPopupCompletionHandler)cancelHandler - acknowledgementHandler:(TTPopupCompletionHandler)acknowledgementHandler { - - if (!config) { - config = [[MKJPrecautiousDisposition alloc] init]; - config.message = message; - } - - if (config.message.length <= 0) { - NSAssert(NO, @" message can not be nil, 弹窗文案不可以为空"); - return; - } - - CGFloat width = [UIScreen mainScreen].bounds.size.width - 40 * 2; - CGFloat height = ([self communictowardsionDimension:config.message width:width].height + 160); - - - if (height < kMixHeight) { - height = kMixHeight; - } else if (height > kMaxHeight) { - height = kMaxHeight; - } - - MKJPrecautiousRegard *contentView = [[MKJPrecautiousRegard alloc] initWithFrame:CGRectMake(0, 0, width, height)]; - contentView.config = config; - contentView.revocationPerformance = cancelHandler; - contentView.acknowledgementPerformance = acknowledgementHandler; - contentView.isDispositionDirectorate = isShowBorder; - - if (!contentView.config.disableRobotizationDisappearTerminTicktackBtuton) { - - contentView.disappearPerformance = ^{ - [MKJPopup dismiss]; - }; - } - - [self popupRegard:contentView style:MKJPopupStyleAlert config:config]; -} - -#pragma mark Action Sheet -+ (void)performanceSheetAboutProvisions:(NSArray *)items { - - [MKJPopup performanceSheetAboutProvisions:items showCancelItem:YES cancelHandler:nil]; -} - -+ (void)performanceSheetAboutProvisions:(NSArray *)items - showCancelItem:(BOOL)showCancelItem { - - [MKJPopup performanceSheetAboutProvisions:items showCancelItem:showCancelItem cancelHandler:nil]; -} - -+ (void)performanceSheetAboutProvisions:(NSArray *)items cancelHandler:(TTActionSheetClickAction)cancelHandler { - - [MKJPopup performanceSheetAboutProvisions:items showCancelItem:YES cancelHandler:cancelHandler]; -} - -+ (void)performanceSheetAboutProvisions:(NSArray *)items - showCancelItem:(BOOL)showCancelItem - cancelHandler:(TTActionSheetClickAction)cancelHandler { - - CGFloat width = [UIScreen mainScreen].bounds.size.width - kActionSheetViewPadding * 2; - CGFloat height = kActionSheetViewCellHeight * items.count + kActionSheetViewBottomPadding; - - - if (showCancelItem) { - - height += kActionSheetViewCancelViewHeight; - } - - if (@available(iOS 11.0, *)) { - - height += [UIApplication sharedApplication].keyWindow.safeAreaInsets.bottom; - } - - CGRect rect = CGRectMake(0, 0, width, height); - - MKJActionSheetRegard *sheetView = [[MKJActionSheetRegard alloc] initWithFrame:rect - demandsRevocation:showCancelItem - items:items]; - sheetView.revocationPerformance = cancelHandler; - - - sheetView.disappearPerformance = ^{ - [MKJPopup dismiss]; - }; - - [self popupRegard:sheetView style:MKJPopupStyleActionSheet]; -} - - -#pragma mark Popup -+ (void)popupRegard:(UIView *)customView - style:(MKJPopupStyle)style { - - MKJPopupServing *service = [[MKJPopupServing alloc] init]; - service.style = style; - service.contentView = customView; - - [self popupAboutDisposition:service]; -} - -+ (void)popupRegard:(UIView *)customView - style:(MKJPopupStyle)style - config:(MKJPrecautiousDisposition *)config { - - MKJPopupServing *service = [[MKJPopupServing alloc] init]; - service.style = style; - service.contentView = customView; - service.shouldDismissOnBackgroundTouch = config.shouldDismissOnBackgroundTouch; - service.maskEncouragegroundTransparency = config.maskEncouragegroundTransparency; - [self popupAboutDisposition:service]; -} - - -+ (void)popupAboutDisposition:(MKJPopupServing *)config { - if (![config.contentView isKindOfClass:UIView.class]) { - NSAssert(NO, @"MKJPopup customView should inherit from UIView."); - return; - } - [[MKJPopupExecutiveServing sharedInstance] accelertowardseSpringforthServing:config]; -} - -#pragma mark Dismiss -+ (void)dismiss { - [[MKJPopupExecutiveServing sharedInstance] transltowardseSpringforthServing]; -} - -#pragma mark Query - -+ (BOOL)hasExhibitSpringforth { - return [MKJPopupExecutiveServing sharedInstance].universalSpringforthService != nil; -} - -#pragma mark - Privite -+ (CGSize)communictowardsionDimension:(NSString *)text width:(CGFloat)width { - CGRect stringRect = [text boundingRectWithSize:CGSizeMake(width - 2 * 20, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:15.f]} context:nil]; - return stringRect.size; -} - -@end diff --git a/YuMi/CustomUI/MKJPopup/Manager/MKJPopupExecutiveServing.h b/YuMi/CustomUI/MKJPopup/Manager/MKJPopupExecutiveServing.h deleted file mode 100644 index 7dab0004..00000000 --- a/YuMi/CustomUI/MKJPopup/Manager/MKJPopupExecutiveServing.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// MKJPopupExecutiveServing.h -// YM_TTChatViewKit -// -// Created by lvjunhang on 2019/5/21. -// Copyright © 2023 YUMI. All rights reserved. -// - -#import -#import "TTPopupExecutiveServiceCeremony.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface MKJPopupExecutiveServing : NSObject - -@property (nonatomic, strong) id universalSpringforthService; - -+ (instancetype)sharedInstance; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/MKJPopup/Manager/MKJPopupExecutiveServing.m b/YuMi/CustomUI/MKJPopup/Manager/MKJPopupExecutiveServing.m deleted file mode 100644 index f019e7f7..00000000 --- a/YuMi/CustomUI/MKJPopup/Manager/MKJPopupExecutiveServing.m +++ /dev/null @@ -1,188 +0,0 @@ -// -// MKJPopupExecutiveServing.m -// YM_TTChatViewKit -// -// Created by lvjunhang on 2019/5/21. -// Copyright © 2023 YUMI. All rights reserved. -// - -#import "MKJPopupExecutiveServing.h" - -#import - -@interface MKJPopupExecutiveServing () - -@property (nonatomic, strong) NSMutableArray< id > *queue; - -@property (nonatomic, assign, getter=isExhibitingSpringforth) BOOL showingSpringforth; - -@end - -@implementation MKJPopupExecutiveServing - -#pragma mark - Life Cycle -+ (instancetype)sharedInstance { - static MKJPopupExecutiveServing *instance = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - instance = [[self alloc] init]; - }); - - return instance; -} - -- (instancetype)init { - if (self = [super init]) { - _queue = [NSMutableArray array]; - } - return self; -} - -#pragma mark - TTPopupExecutiveServiceCeremony -- (void)accelertowardseSpringforthServing:(id)service { - if (![service conformsToProtocol:@protocol(TTPopupServiceCeremony)]) { - return; - } - if ([_queue containsObject:service]) { - return; - } - NSInteger insertPosition = [self insertPolariztowardsionInthecaseofSpringforthServing:service]; - if (insertPosition == NSNotFound) { - return; - } - [_queue insertObject:service atIndex:insertPosition]; - - if (_universalSpringforthService == nil && _queue.count == 1) { - [self EvidenceSpringforth]; - } -} - -- (void)transltowardseSpringforthServing { - - - - if (!self.isExhibitingSpringforth) { - return; - } - - if (_universalSpringforthService == nil) { - return; - } - - if (_queue.count > 0) { - [_queue removeObjectAtIndex:0]; - } - - [FFPopup dismissPopupForView:_universalSpringforthService.contentView animated:YES]; - _universalSpringforthService = nil; -} - - -- (void)transltowardseProvenienceWhenContactMaskRegard { - if (_universalSpringforthService == nil) { - return; - } - if (_queue.count > 0) { - [_queue removeObjectAtIndex:0]; - } - _universalSpringforthService = nil; -} - -#pragma mark - Private Methods - -- (void)EvidenceSpringforth { - if (self.isExhibitingSpringforth) { - return; - } - if (_universalSpringforthService) { - return; - } - if (_queue.count == 0) { - return; - } - id popupService = _queue.firstObject; - if (![popupService conformsToProtocol:@protocol(TTPopupServiceCeremony)]) { - return; - } - _universalSpringforthService = popupService; - FFPopupHorizontalLayout horizontalLayout = FFPopupHorizontalLayout_Center; - FFPopupVerticalLayout verticalLayout = FFPopupVerticalLayout_Center; - FFPopupShowType showType = (FFPopupShowType)popupService.showType; - FFPopupDismissType dismissType = FFPopupDismissType_GrowOut; - if (popupService.style == MKJPopupStyleActionSheet) { - verticalLayout = FFPopupVerticalLayout_Bottom; - showType = FFPopupShowType_SlideInFromBottom; - dismissType = FFPopupDismissType_SlideOutToBottom; - } - FFPopup *popup = [FFPopup popupWithContentView:popupService.contentView]; - popup.showType = showType; - popup.dismissType = dismissType; - popup.maskType = FFPopupMaskType_Dimmed; - popup.dimmedMaskAlpha = popupService.maskEncouragegroundTransparency; - popup.shouldDismissOnBackgroundTouch = popupService.shouldDismissOnBackgroundTouch; - - [popup showWithLayout:FFPopupLayoutMake(horizontalLayout, verticalLayout) duration:0.0]; - __weak typeof(self) weakSelf = self; - - - - popup.didFinishDismissingBlock = ^{ - __strong typeof(weakSelf) strongSelf = weakSelf; - BOOL isDismissOnBackgroundTouch = strongSelf.universalSpringforthService != nil; - if (isDismissOnBackgroundTouch) { - - [self transltowardseProvenienceWhenContactMaskRegard]; - } - if (popupService.didFinishDismissHandler) { - popupService.didFinishDismissHandler(isDismissOnBackgroundTouch); - } - - strongSelf.showingSpringforth = NO; - - [strongSelf EvidenceSpringforth]; - }; - - popup.didFinishShowingBlock = ^{ - - self.showingSpringforth = YES; - if (popupService.didFinishShowingHandler) { - popupService.didFinishShowingHandler(); - } - }; -} - - -- (NSInteger)insertPolariztowardsionInthecaseofSpringforthServing:(id)service { - __block NSInteger result = NSNotFound; - if (service == nil) { - return result; - } - if (_queue.count == 0) { - return 0; - } - - if (service.shouldFilterSpringforth && service.filterIdentifier.length > 0) { - BOOL filterFlag = NO; - for (id serv in _queue) { - if ([serv.filterIdentifier isEqualToString:service.filterIdentifier]) { - filterFlag = YES; - break; - } - } - if (filterFlag) { - return result; - } - } - [_queue enumerateObjectsUsingBlock:^(id _Nonnull model, NSUInteger idx, BOOL * _Nonnull stop) { - - if (service.priority > model.priority) { - result = idx; - *stop = YES; - } - }]; - - result = MIN(result, _queue.count); - return result; -} - -@end diff --git a/YuMi/CustomUI/MKJPopup/Manager/TTPopupExecutiveServiceCeremony.h b/YuMi/CustomUI/MKJPopup/Manager/TTPopupExecutiveServiceCeremony.h deleted file mode 100644 index eb39ff0f..00000000 --- a/YuMi/CustomUI/MKJPopup/Manager/TTPopupExecutiveServiceCeremony.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// TTPopupExecutiveServiceCeremony.h -// YM_TTChatViewKit -// -// Created by lvjunhang on 2019/5/21. -// Copyright © 2023 YUMI. All rights reserved. -// - -#import "TTPopupServiceCeremony.h" - -@protocol TTPopupExecutiveServiceCeremony - - -- (void)accelertowardseSpringforthServing:(id)service; - - -- (void)transltowardseSpringforthServing; - -@end diff --git a/YuMi/CustomUI/MKJPopup/Service/MKJPopupServing.h b/YuMi/CustomUI/MKJPopup/Service/MKJPopupServing.h deleted file mode 100644 index 4882f0c2..00000000 --- a/YuMi/CustomUI/MKJPopup/Service/MKJPopupServing.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// MKJPopupServing.h -// YM_TTChatViewKit -// -// Created by lvjunhang on 2019/5/21. -// Copyright © 2023 YUMI. All rights reserved. -// - -#import -#import "TTPopupServiceCeremony.h" - -#define TTPopupConfig MKJPopupServing - -NS_ASSUME_NONNULL_BEGIN - -@interface MKJPopupServing : NSObject - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/MKJPopup/Service/MKJPopupServing.m b/YuMi/CustomUI/MKJPopup/Service/MKJPopupServing.m deleted file mode 100644 index 03756eb1..00000000 --- a/YuMi/CustomUI/MKJPopup/Service/MKJPopupServing.m +++ /dev/null @@ -1,36 +0,0 @@ -// -// MKJPopupServing.m -// YM_TTChatViewKit -// -// Created by lvjunhang on 2019/5/21. -// Copyright © 2023 YUMI. All rights reserved. -// - -#import "MKJPopupServing.h" - -@implementation MKJPopupServing - -@synthesize style = _style; -@synthesize priority = _priority; -@synthesize contentView = _contentView; -@synthesize maskEncouragegroundTransparency = _maskEncouragegroundTransparency; -@synthesize shouldDismissOnBackgroundTouch = _shouldDismissOnBackgroundTouch; -@synthesize didFinishDismissHandler = _didFinishDismissHandler; -@synthesize didFinishShowingHandler = _didFinishShowingHandler; -@synthesize shouldFilterSpringforth = _shouldFilterSpringforth; -@synthesize filterIdentifier = _filterIdentifier; -@synthesize showType = _showType; -- (instancetype)init { - self = [super init]; - if (self) { - _style = MKJPopupStyleAlert; - _priority = MKJPopupPriorityNormal; - _maskEncouragegroundTransparency = 0.5; - _shouldDismissOnBackgroundTouch = YES; - _shouldFilterSpringforth = NO; - _showType = MKJPopupShowGenreDefault; - } - return self; -} - -@end diff --git a/YuMi/CustomUI/MKJPopup/Service/TTPopupServiceCeremony.h b/YuMi/CustomUI/MKJPopup/Service/TTPopupServiceCeremony.h deleted file mode 100644 index 383f83c3..00000000 --- a/YuMi/CustomUI/MKJPopup/Service/TTPopupServiceCeremony.h +++ /dev/null @@ -1,49 +0,0 @@ -// -// TTPopupServiceCeremony.h -// YM_TTChatViewKit -// -// Created by lvjunhang on 2019/5/21. -// Copyright © 2023 YUMI. All rights reserved. -// - -#import "TTPopupConstants.h" - -typedef NS_ENUM(NSUInteger, MKJPopupShowGenre) { - MKJPopupShowGenre_FadeIn = 1, - MKJPopupShowGenreDefault = 8, -}; - -@class UIView; - -@protocol TTPopupServiceCeremony - - -@property (nonatomic, assign) MKJPopupStyle style; - - -@property (nonatomic, assign) MKJPopupPriority priority; - - -@property (nonatomic, strong) UIView *contentView; - - -@property (nonatomic, assign) CGFloat maskEncouragegroundTransparency; - - -@property (nonatomic, assign) BOOL shouldDismissOnBackgroundTouch; - - -@property (nonatomic, copy) void (^didFinishDismissHandler)(BOOL isDismissOnBackgroundTouch); - - -@property (nonatomic, copy) void (^didFinishShowingHandler)(void); - - -@property (nonatomic, assign) BOOL shouldFilterSpringforth; - - -@property (nonatomic, copy) NSString *filterIdentifier; - - -@property (nonatomic, assign) MKJPopupShowGenre showType; -@end diff --git a/YuMi/CustomUI/MKJPopup/View/MKJActionSheetRegard.h b/YuMi/CustomUI/MKJPopup/View/MKJActionSheetRegard.h deleted file mode 100644 index 50f23e6c..00000000 --- a/YuMi/CustomUI/MKJPopup/View/MKJActionSheetRegard.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// MKJActionSheetRegard.h -// YM_TTChatViewKit -// -// Created by lee on 2019/5/22. -// Copyright © 2023 YUMI. All rights reserved. -// - -#import -#import "TTPopupConstants.h" - -NS_ASSUME_NONNULL_BEGIN - -@class MKJActionSheetDisposition; - -@interface MKJActionSheetRegard : UIView - -@property (nonatomic, copy) TTPopupCompletionHandler revocationPerformance; -@property (nonatomic, copy) TTPopupCompletionHandler disappearPerformance; - -- (instancetype)initWithFrame:(CGRect)frame - demandsRevocation:(BOOL)demandsRevocation - items:(NSArray *)items; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/MKJPopup/View/MKJActionSheetRegard.m b/YuMi/CustomUI/MKJPopup/View/MKJActionSheetRegard.m deleted file mode 100644 index ab0d7f5c..00000000 --- a/YuMi/CustomUI/MKJPopup/View/MKJActionSheetRegard.m +++ /dev/null @@ -1,135 +0,0 @@ -// -// MKJActionSheetRegard.m -// YM_TTChatViewKit -// -// Created by lee on 2019/5/22. -// Copyright © 2023 YUMI. All rights reserved. -// - -#import "MKJActionSheetRegard.h" -#import "MKJActionSheetDisposition.h" -#import "DJDKMIMOMColor.h" -#import - -static CGFloat const kSheetViewCellHeight = 51.f; -static CGFloat const kSheetViewCornerRadius = 14.f; -static NSString *const kSheetViewCellConst = @"kSheetViewCellConst"; - -@interface MKJActionSheetRegard () - - -@property (nonatomic, strong) UITableView *tableView; - -@property (nonatomic, strong) NSArray *items; - -@property (nonatomic, assign) BOOL demandsRevocation; - -@property (nonatomic, strong) UIButton *revocationBtuton; - -@end - -@implementation MKJActionSheetRegard - -#pragma mark - -#pragma mark lifeCycle -- (instancetype)initWithFrame:(CGRect)frame demandsRevocation:(BOOL)demandsRevocation items:(NSArray *)items { - self = [super initWithFrame:frame]; - if (self) { - _items = items; - _demandsRevocation = demandsRevocation; - [self initRegards]; - [self initRestrictions]; - } - return self; -} - -- (void)initRegards { - [self addSubview:self.tableView]; - [self addSubview:self.revocationBtuton]; -} - -- (void)initRestrictions { - - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.height.mas_equalTo(self.items.count * kSheetViewCellHeight); - }]; - - if (_demandsRevocation) { - - self.revocationBtuton.hidden = NO; - [self.revocationBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self); - make.height.mas_equalTo(kSheetViewCellHeight); - make.top.mas_equalTo(self.tableView.mas_bottom).offset(15); - }]; - } - -} - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return 1; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.items.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kSheetViewCellConst]; - cell.backgroundColor = UIColor.clearColor; - cell.textLabel.textAlignment = NSTextAlignmentCenter; - cell.textLabel.text = _items[indexPath.row].title; - cell.textLabel.textColor = _items[indexPath.row].titleColor; - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - - - MKJActionSheetDisposition *config = _items[indexPath.row]; - !config.ticktackPerformance ?: config.ticktackPerformance(); - - !_disappearPerformance ?: _disappearPerformance(); -} - -- (void)onTicktackRevoctowardsionBtutonPerformance:(UIButton *)revocationBtuton { - !_revocationPerformance ?: _revocationPerformance(); - !_disappearPerformance ?: _disappearPerformance(); -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.separatorColor = [DJDKMIMOMColor performanceSepartowardsorPrettify]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine; - _tableView.rowHeight = kSheetViewCellHeight; - _tableView.tableFooterView = [[UIView alloc] init]; - _tableView.backgroundColor = [UIColor whiteColor]; - _tableView.layer.cornerRadius = kSheetViewCornerRadius; - _tableView.layer.masksToBounds = YES; - _tableView.bounces = NO; - [_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:kSheetViewCellConst]; - } - return _tableView; -} - -- (UIButton *)revocationBtuton { - if (!_revocationBtuton) { - _revocationBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_revocationBtuton setTitle:YMLocalizedString(@"TT_Action_Sheet_View_0") forState:UIControlStateNormal]; - [_revocationBtuton setBackgroundColor:UIColor.whiteColor]; - [_revocationBtuton setTitleColor:[DJDKMIMOMColor precautiousCommunictowardsionPrettify] forState:UIControlStateNormal]; - [_revocationBtuton.titleLabel setFont:[UIFont systemFontOfSize:16]]; - _revocationBtuton.layer.cornerRadius = kSheetViewCornerRadius; - _revocationBtuton.layer.masksToBounds = YES; - [_revocationBtuton addTarget:self action:@selector(onTicktackRevoctowardsionBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _revocationBtuton.hidden = YES; - } - return _revocationBtuton; -} - -@end diff --git a/YuMi/CustomUI/MKJPopup/View/MKJPrecautiousRegard.h b/YuMi/CustomUI/MKJPopup/View/MKJPrecautiousRegard.h deleted file mode 100644 index 7c0a27e4..00000000 --- a/YuMi/CustomUI/MKJPopup/View/MKJPrecautiousRegard.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// MKJPrecautiousRegard.h -// YM_TTChatViewKit -// -// Created by lee on 2019/5/20. -// Copyright © 2023 YUMI. All rights reserved. -// - -#import -#import "TTPopupConstants.h" - -@class MKJPrecautiousDisposition; - -NS_ASSUME_NONNULL_BEGIN - -@interface MKJPrecautiousRegard : UIView -@property (nonatomic, strong) MKJPrecautiousDisposition *config; -@property (nonatomic, assign) BOOL isDispositionDirectorate; -@property (nonatomic, copy) TTPopupCompletionHandler revocationPerformance; -@property (nonatomic, copy) TTPopupCompletionHandler acknowledgementPerformance; -@property (nonatomic, copy) TTPopupCompletionHandler disappearPerformance; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/MKJPopup/View/MKJPrecautiousRegard.m b/YuMi/CustomUI/MKJPopup/View/MKJPrecautiousRegard.m deleted file mode 100644 index 3b381378..00000000 --- a/YuMi/CustomUI/MKJPopup/View/MKJPrecautiousRegard.m +++ /dev/null @@ -1,246 +0,0 @@ -// -// MKJPrecautiousRegard.m -// YM_TTChatViewKit -// -// Created by lee on 2019/5/20. -// Copyright © 2023 YUMI. All rights reserved. -// - -#import "MKJPrecautiousRegard.h" -#import "MKJPrecautiousDisposition.h" -#import "DJDKMIMOMColor.h" -#import - -static CGFloat const kMargin = 25.f; -static CGFloat const kPadding = 20.f; -static CGFloat const kBtnHeight = 38.f; - -@interface MKJPrecautiousRegard () - -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UILabel *communicationSequencignation; -@property (nonatomic, strong) UIButton *revocationBtuton; -@property (nonatomic, strong) UIButton *acknowledgementBtuton; -@property (nonatomic, strong) UIStackView *stackView; - -@end - -@implementation MKJPrecautiousRegard - -#pragma mark - lifeCyle -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initRegards]; - [self initRestrictions]; - } - return self; -} - -- (void)initRegards { - [self addSubview:self.titleLabel]; - [self addSubview:self.communicationSequencignation]; - [self addSubview:self.stackView]; - [self.stackView addSubview:self.revocationBtuton]; - [self.stackView addSubview:self.acknowledgementBtuton]; -} - -- (void)initRestrictions { - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(kPadding); - make.left.right.mas_equalTo(self).inset(kPadding); - }]; - - [self.communicationSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(kMargin); - make.left.right.mas_equalTo(self).inset(kPadding); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(-kPadding); - make.centerX.mas_equalTo(self); - }]; - - [self.revocationBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(kBtnHeight); - make.width.mas_equalTo(self.mas_width).multipliedBy(0.4); - }]; - - [self.acknowledgementBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(kBtnHeight); - make.width.mas_equalTo(self.mas_width).multipliedBy(0.4); - }]; -} - -#pragma mark - Button Events -- (void)onTicktackConfirmBtutonPerformance:(UIButton *)acknowledgementBtuton { - !_acknowledgementPerformance ?: _acknowledgementPerformance(); - !_disappearPerformance ?: _disappearPerformance(); -} - -- (void)onTicktackRevoctowardsionBtutonPerformance:(UIButton *)revocationBtuton { - !_revocationPerformance ?: _revocationPerformance(); - !_disappearPerformance ?: _disappearPerformance(); -} - -#pragma mark - private method - -- (NSMutableAttributedString *)communictowardsionIdiosyncracyBWSttr:(MKJPrecautiousDisposition *)config { - NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] initWithString:config.message]; - if (config.communicationBurlywoodIntervacuum > 0) { - NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; - paragraphStyle.lineSpacing = config.communicationBurlywoodIntervacuum; - paragraphStyle.alignment = self.communicationSequencignation.textAlignment; - [attString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, config.message.length)]; - } - - - [config.communicationAttributedDisposition enumerateObjectsUsingBlock:^(MKJPrecautiousCommunicationAttributedDisposition * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - - if ([obj isKindOfClass:[MKJPrecautiousCommunicationAttributedDisposition class]]) { - if (obj.text && obj.text.length > 0) { - NSRange range = [config.message rangeOfString:obj.text]; - - if (obj.range.length != 0) { - if (obj.range.location + obj.range.length > config.message.length) { - NSAssert(NO, @"obj.range out of bounds"); - return; - } - range = obj.range; - } - if (obj.font) { - [attString addAttribute:NSFontAttributeName value:obj.font range:range]; - } - if (obj.color) { - [attString addAttribute:NSForegroundColorAttributeName value:obj.color range:range]; - } - } - } - }]; - return attString; -} - -#pragma mark - getter && setter - -- (void)setConfig:(MKJPrecautiousDisposition *)config { - _config = config; - - if (config.cornerRadius > 0) { - self.layer.cornerRadius = config.cornerRadius; - self.layer.masksToBounds = YES; - } - - self.backgroundColor = config.backgroundColor; - - _titleLabel.text = config.title; - _titleLabel.textColor = config.titleColor; - _titleLabel.font = config.titleFont; - - _revocationBtuton.hidden = config.performanceStyle == TTAlertActionConfirmStyle; - _acknowledgementBtuton.hidden = config.performanceStyle == TTAlertActionCancelStyle; - - - [_revocationBtuton setTitle:config.revocationBtutonDisposition.title forState:UIControlStateNormal]; - [_revocationBtuton setTitleColor:config.revocationBtutonDisposition.titleColor forState:UIControlStateNormal]; - [_revocationBtuton.titleLabel setFont:config.revocationBtutonDisposition.font]; - [_revocationBtuton setBackgroundColor:config.revocationBtutonDisposition.backgroundColor]; - [_revocationBtuton setBackgroundImage:config.revocationBtutonDisposition.backgroundImage forState:UIControlStateNormal]; - if (config.revocationBtutonDisposition.cornerRadius > 0) { - _revocationBtuton.layer.cornerRadius = config.revocationBtutonDisposition.cornerRadius; - _revocationBtuton.layer.masksToBounds = YES; - } - - - [_acknowledgementBtuton setTitle:config.acknowledgementBtutonDisposition.title forState:UIControlStateNormal]; - [_acknowledgementBtuton setTitleColor:config.acknowledgementBtutonDisposition.titleColor forState:UIControlStateNormal]; - [_acknowledgementBtuton.titleLabel setFont:config.acknowledgementBtutonDisposition.font]; - [_acknowledgementBtuton setBackgroundColor:config.acknowledgementBtutonDisposition.backgroundColor]; - [_acknowledgementBtuton setBackgroundImage:config.acknowledgementBtutonDisposition.backgroundImage forState:UIControlStateNormal]; - if (config.acknowledgementBtutonDisposition.cornerRadius > 0) { - _acknowledgementBtuton.layer.cornerRadius = config.acknowledgementBtutonDisposition.cornerRadius; - _acknowledgementBtuton.layer.masksToBounds = YES; - } - - - _communicationSequencignation.font = config.communicationLetterform; - _communicationSequencignation.textColor = config.communicationPrettify; - - if (config.communicationAttributedDisposition.count > 0) { - _communicationSequencignation.attributedText = [self communictowardsionIdiosyncracyBWSttr:config]; - _communicationSequencignation.textAlignment = NSTextAlignmentCenter; - } else if(config.communicationAttributed.length > 0) { - _communicationSequencignation.attributedText = config.communicationAttributed; - _communicationSequencignation.textAlignment = NSTextAlignmentCenter; - } else { - _communicationSequencignation.text = config.message; - } - - _revocationBtuton.layer.borderColor = [DJDKMIMOMColor dividerPrettify].CGColor; - _revocationBtuton.layer.borderWidth = 2.f; - _acknowledgementBtuton.layer.borderColor = [DJDKMIMOMColor dividerPrettify].CGColor; - _acknowledgementBtuton.layer.borderWidth = 2.f; -} - -- (void)setIsDispositionDirectorate:(BOOL)isDispositionDirectorate { - _isDispositionDirectorate = isDispositionDirectorate; - if (isDispositionDirectorate) { - - _revocationBtuton.layer.borderColor = [DJDKMIMOMColor dividerPrettify].CGColor; - _revocationBtuton.layer.borderWidth = 2.f; - _acknowledgementBtuton.layer.borderColor = [DJDKMIMOMColor dividerPrettify].CGColor; - _acknowledgementBtuton.layer.borderWidth = 2.f; - }else { - - _revocationBtuton.layer.borderColor = [DJDKMIMOMColor dividerPrettify].CGColor; - _revocationBtuton.layer.borderWidth = 0; - _acknowledgementBtuton.layer.borderColor = [DJDKMIMOMColor dividerPrettify].CGColor; - _acknowledgementBtuton.layer.borderWidth = 0; - } -} - - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel ; -} - -- (UILabel *)communicationSequencignation { - if (!_communicationSequencignation) { - _communicationSequencignation = [[UILabel alloc] init]; - _communicationSequencignation.numberOfLines = 0; - _communicationSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _communicationSequencignation; -} - -- (UIButton *)revocationBtuton { - if (!_revocationBtuton) { - _revocationBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_revocationBtuton addTarget:self action:@selector(onTicktackRevoctowardsionBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _revocationBtuton; -} - -- (UIButton *)acknowledgementBtuton { - if (!_acknowledgementBtuton) { - _acknowledgementBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_acknowledgementBtuton addTarget:self action:@selector(onTicktackConfirmBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _acknowledgementBtuton; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] initWithArrangedSubviews:@[self.revocationBtuton, self.acknowledgementBtuton]]; - _stackView.distribution = UIStackViewDistributionFillEqually; - _stackView.alignment = UIStackViewAlignmentCenter; - _stackView.spacing = 16; - } - return _stackView; -} - -@end diff --git a/YuMi/CustomUI/SVGA/XPSVGAPlayer.h b/YuMi/CustomUI/SVGA/XPSVGAPlayer.h new file mode 100644 index 00000000..41802912 --- /dev/null +++ b/YuMi/CustomUI/SVGA/XPSVGAPlayer.h @@ -0,0 +1,16 @@ +// +// YMSVGAPlayer.h +// YUMI +// +// Created by YUMI on 2022/6/15. +// + +#import "SVGAImageView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPSVGAPlayer : SVGAImageView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/SVGA/XPSVGAPlayer.m b/YuMi/CustomUI/SVGA/XPSVGAPlayer.m new file mode 100644 index 00000000..a19b16ad --- /dev/null +++ b/YuMi/CustomUI/SVGA/XPSVGAPlayer.m @@ -0,0 +1,530 @@ +// +// YMSVGAPlayer.m +// YUMI +// +// Created by YUMI on 2022/6/15. +// + +#import "XPSVGAPlayer.h" +#import "SVGAVideoEntity.h" +#import "SVGAVideoSpriteEntity.h" +#import "SVGAVideoSpriteFrameEntity.h" +#import "SVGAContentLayer.h" +#import "SVGABitmapLayer.h" +#import "SVGAVectorLayer.h" +#import "SVGAAudioLayer.h" +#import "SVGAAudioEntity.h" +#import "YYText.h" + +@interface XPSVGAPlayer () + +@property (nonatomic, strong) CALayer *drawLayer; +@property (nonatomic, strong) NSArray *audioLayers; +@property (nonatomic, strong) CADisplayLink *displayLink; +@property (nonatomic, assign) NSInteger currentFrame; +@property (nonatomic, copy) NSArray *contentLayers; +@property (nonatomic, copy) NSDictionary *dynamicObjects; +@property (nonatomic, copy) NSDictionary *dynamicTexts; +@property (nonatomic, copy) NSDictionary *dynamicDrawings; +@property (nonatomic, copy) NSDictionary *dynamicHiddens; +@property (nonatomic, assign) int loopCount; +@property (nonatomic, assign) NSRange currentRange; +@property (nonatomic, assign) BOOL forwardAnimating; +@property (nonatomic, assign) BOOL reversing; +@property (nonatomic, assign) BOOL audioPlaying; + +@end + + + +@implementation XPSVGAPlayer +@synthesize videoItem = _videoItem; + + +- (instancetype)init { + if (self = [super init]) { + [self initPlayer]; + } + return self; +} + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initPlayer]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)aDecoder { + if (self = [super initWithCoder:aDecoder]) { + [self initPlayer]; + } + return self; +} + +- (void)initPlayer { + self.contentMode = UIViewContentModeTop; + self.clearsAfterStop = YES; +} + +- (void)willMoveToSuperview:(UIView *)newSuperview { + [super willMoveToSuperview:newSuperview]; + if (newSuperview == nil) { + [self stopAnimation:YES]; + } +} + +- (void)startAnimation { + if (self.videoItem == nil) { + NSLog(@"videoItem could not be nil!"); + return; + } else if (self.drawLayer == nil) { + self.videoItem = _videoItem; + } + [self stopAnimation:NO]; + self.loopCount = 0; + self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(next)]; + + self.displayLink.frameInterval = 60 / self.videoItem.FPS; + [self.displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes]; + self.forwardAnimating = !self.reversing; +} + +- (void)startAnimationWithRange:(NSRange)range reverse:(BOOL)reverse { + self.currentRange = range; + self.reversing = reverse; + if (reverse) { + self.currentFrame = MIN(self.videoItem.frames - 1, range.location + range.length - 1); + } + else { + self.currentFrame = MAX(0, range.location); + } + [self startAnimation]; +} + +- (void)pauseAnimation { + [self stopAnimation:NO]; +} + +- (void)stopAnimation { + [self stopAnimation:self.clearsAfterStop]; +} + +- (void)stopAnimation:(BOOL)clear { + self.forwardAnimating = NO; + if (self.displayLink != nil) { + [self.displayLink invalidate]; + } + if (clear) { + [self clear]; + } + [self clearAudios]; + self.displayLink = nil; +} + +- (void)clear { + self.contentLayers = nil; + [self.drawLayer removeFromSuperlayer]; + self.drawLayer = nil; +} + +- (void)clearAudios { + if (!self.audioPlaying) { + return; + } + for (SVGAAudioLayer *layer in self.audioLayers) { + [layer.audioPlayer stop]; + } + self.audioPlaying = NO; +} + +- (void)stepToFrame:(NSInteger)frame andPlay:(BOOL)andPlay { + if (self.videoItem == nil) { + NSLog(@"videoItem could not be nil!"); + return; + } else if (self.drawLayer == nil) { + self.videoItem = _videoItem; + } + if (frame >= self.videoItem.frames || frame < 0) { + return; + } + [self pauseAnimation]; + self.currentFrame = frame; + [self update]; + if (andPlay) { + self.forwardAnimating = YES; + self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(next)]; + self.displayLink.frameInterval = 60 / self.videoItem.FPS; + [self.displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes]; + } +} + +- (void)stepToPercentage:(CGFloat)percentage andPlay:(BOOL)andPlay { + NSInteger frame = (NSInteger)(self.videoItem.frames * percentage); + if (frame >= self.videoItem.frames && frame > 0) { + frame = self.videoItem.frames - 1; + } + [self stepToFrame:frame andPlay:andPlay]; +} + +- (void)draw { + self.drawLayer = [[CALayer alloc] init]; + self.drawLayer.frame = CGRectMake(0, 0, self.videoItem.videoSize.width, self.videoItem.videoSize.height); + self.drawLayer.masksToBounds = true; + NSMutableDictionary *tempHostLayers = [NSMutableDictionary dictionary]; + NSMutableArray *tempContentLayers = [NSMutableArray array]; + + [self.videoItem.sprites enumerateObjectsUsingBlock:^(SVGAVideoSpriteEntity * _Nonnull sprite, NSUInteger idx, BOOL * _Nonnull stop) { + UIImage *bitmap; + if (sprite.imageKey != nil) { + NSString *bitmapKey = [sprite.imageKey stringByDeletingPathExtension]; + if (self.dynamicObjects[bitmapKey] != nil) { + bitmap = self.dynamicObjects[bitmapKey]; + } + else { + bitmap = self.videoItem.images[bitmapKey]; + } + } + SVGAContentLayer *contentLayer = [sprite requestLayerWithBitmap:bitmap]; + contentLayer.imageKey = sprite.imageKey; + [tempContentLayers addObject:contentLayer]; + if ([sprite.imageKey hasSuffix:@".matte"]) { + CALayer *hostLayer = [[CALayer alloc] init]; + hostLayer.mask = contentLayer; + tempHostLayers[sprite.imageKey] = hostLayer; + } else { + if (sprite.matteKey && sprite.matteKey.length > 0) { + CALayer *hostLayer = tempHostLayers[sprite.matteKey]; + [hostLayer addSublayer:contentLayer]; + if (![sprite.matteKey isEqualToString:self.videoItem.sprites[idx - 1].matteKey]) { + [self.drawLayer addSublayer:hostLayer]; + } + } else { + [self.drawLayer addSublayer:contentLayer]; + } + } + if (sprite.imageKey != nil) { + if (self.dynamicTexts[sprite.imageKey] != nil) { + NSAttributedString *text = self.dynamicTexts[sprite.imageKey]; + CGSize bitmapSize = CGSizeMake(self.videoItem.images[sprite.imageKey].size.width * self.videoItem.images[sprite.imageKey].scale, self.videoItem.images[sprite.imageKey].size.height * self.videoItem.images[sprite.imageKey].scale); + + + CATextLayer *textLayer = [CATextLayer layer]; + textLayer.contentsScale = [[UIScreen mainScreen] scale]; + [textLayer setString:self.dynamicTexts[sprite.imageKey]]; + textLayer.alignmentMode = kCAAlignmentCenter; + CGSize size = [text boundingRectWithSize:CGSizeMake(bitmapSize.width, CGFLOAT_MAX) + options:NSStringDrawingUsesLineFragmentOrigin + context:NULL].size; + textLayer.frame = CGRectMake(0, 0, size.width, size.height); + [contentLayer addSublayer:textLayer]; + contentLayer.textLayer = textLayer; + [contentLayer resetTextLayerProperties:text]; + } + if (self.dynamicHiddens[sprite.imageKey] != nil && + [self.dynamicHiddens[sprite.imageKey] boolValue] == YES) { + contentLayer.dynamicHidden = YES; + } + if (self.dynamicDrawings[sprite.imageKey] != nil) { + contentLayer.dynamicDrawingBlock = self.dynamicDrawings[sprite.imageKey]; + } + } + }]; + self.contentLayers = tempContentLayers; + + [self.layer addSublayer:self.drawLayer]; + NSMutableArray *audioLayers = [NSMutableArray array]; + [self.videoItem.audios enumerateObjectsUsingBlock:^(SVGAAudioEntity * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + SVGAAudioLayer *audioLayer = [[SVGAAudioLayer alloc] initWithAudioItem:obj videoItem:self.videoItem]; + [audioLayers addObject:audioLayer]; + }]; + self.audioLayers = audioLayers; + [self update]; + [self resize]; +} + +- (void)resize { + if (self.contentMode == UIViewContentModeScaleAspectFit) { + CGFloat videoRatio = self.videoItem.videoSize.width / self.videoItem.videoSize.height; + CGFloat layerRatio = self.bounds.size.width / self.bounds.size.height; + if (videoRatio > layerRatio) { + CGFloat ratio = self.bounds.size.width / self.videoItem.videoSize.width; + CGPoint offset = CGPointMake( + (1.0 - ratio) / 2.0 * self.videoItem.videoSize.width, + (1.0 - ratio) / 2.0 * self.videoItem.videoSize.height + - (self.bounds.size.height - self.videoItem.videoSize.height * ratio) / 2.0 + ); + self.drawLayer.transform = CATransform3DMakeAffineTransform(CGAffineTransformMake(ratio, 0, 0, ratio, -offset.x, -offset.y)); + } + else { + CGFloat ratio = self.bounds.size.height / self.videoItem.videoSize.height; + CGPoint offset = CGPointMake( + (1.0 - ratio) / 2.0 * self.videoItem.videoSize.width - (self.bounds.size.width - self.videoItem.videoSize.width * ratio) / 2.0, + (1.0 - ratio) / 2.0 * self.videoItem.videoSize.height); + self.drawLayer.transform = CATransform3DMakeAffineTransform(CGAffineTransformMake(ratio, 0, 0, ratio, -offset.x, -offset.y)); + } + } + else if (self.contentMode == UIViewContentModeScaleAspectFill) { + CGFloat videoRatio = self.videoItem.videoSize.width / self.videoItem.videoSize.height; + CGFloat layerRatio = self.bounds.size.width / self.bounds.size.height; + if (videoRatio < layerRatio) { + CGFloat ratio = self.bounds.size.width / self.videoItem.videoSize.width; + CGPoint offset = CGPointMake( + (1.0 - ratio) / 2.0 * self.videoItem.videoSize.width, + (1.0 - ratio) / 2.0 * self.videoItem.videoSize.height + - (self.bounds.size.height - self.videoItem.videoSize.height * ratio) / 2.0 + ); + self.drawLayer.transform = CATransform3DMakeAffineTransform(CGAffineTransformMake(ratio, 0, 0, ratio, -offset.x, -offset.y)); + } + else { + CGFloat ratio = self.bounds.size.height / self.videoItem.videoSize.height; + CGPoint offset = CGPointMake( + (1.0 - ratio) / 2.0 * self.videoItem.videoSize.width - (self.bounds.size.width - self.videoItem.videoSize.width * ratio) / 2.0, + (1.0 - ratio) / 2.0 * self.videoItem.videoSize.height); + self.drawLayer.transform = CATransform3DMakeAffineTransform(CGAffineTransformMake(ratio, 0, 0, ratio, -offset.x, -offset.y)); + } + } + else if (self.contentMode == UIViewContentModeTop) { + CGFloat scaleX = self.frame.size.width / self.videoItem.videoSize.width; + CGPoint offset = CGPointMake((1.0 - scaleX) / 2.0 * self.videoItem.videoSize.width, (1 - scaleX) / 2.0 * self.videoItem.videoSize.height); + self.drawLayer.transform = CATransform3DMakeAffineTransform(CGAffineTransformMake(scaleX, 0, 0, scaleX, -offset.x, -offset.y)); + } + else if (self.contentMode == UIViewContentModeBottom) { + CGFloat scaleX = self.frame.size.width / self.videoItem.videoSize.width; + CGPoint offset = CGPointMake( + (1.0 - scaleX) / 2.0 * self.videoItem.videoSize.width, + (1.0 - scaleX) / 2.0 * self.videoItem.videoSize.height); + self.drawLayer.transform = CATransform3DMakeAffineTransform(CGAffineTransformMake(scaleX, 0, 0, scaleX, -offset.x, -offset.y + self.frame.size.height - self.videoItem.videoSize.height * scaleX)); + } + else if (self.contentMode == UIViewContentModeLeft) { + CGFloat scaleY = self.frame.size.height / self.videoItem.videoSize.height; + CGPoint offset = CGPointMake((1.0 - scaleY) / 2.0 * self.videoItem.videoSize.width, (1 - scaleY) / 2.0 * self.videoItem.videoSize.height); + self.drawLayer.transform = CATransform3DMakeAffineTransform(CGAffineTransformMake(scaleY, 0, 0, scaleY, -offset.x, -offset.y)); + } + else if (self.contentMode == UIViewContentModeRight) { + CGFloat scaleY = self.frame.size.height / self.videoItem.videoSize.height; + CGPoint offset = CGPointMake( + (1.0 - scaleY) / 2.0 * self.videoItem.videoSize.width, + (1.0 - scaleY) / 2.0 * self.videoItem.videoSize.height); + self.drawLayer.transform = CATransform3DMakeAffineTransform(CGAffineTransformMake(scaleY, 0, 0, scaleY, -offset.x + self.frame.size.width - self.videoItem.videoSize.width * scaleY, -offset.y)); + } + else { + CGFloat scaleX = self.frame.size.width / self.videoItem.videoSize.width; + CGFloat scaleY = self.frame.size.height / self.videoItem.videoSize.height; + CGPoint offset = CGPointMake((1.0 - scaleX) / 2.0 * self.videoItem.videoSize.width, (1 - scaleY) / 2.0 * self.videoItem.videoSize.height); + self.drawLayer.transform = CATransform3DMakeAffineTransform(CGAffineTransformMake(scaleX, 0, 0, scaleY, -offset.x, -offset.y)); + } +} + +- (void)layoutSubviews { + [super layoutSubviews]; + [self resize]; +} + +- (void)update { + [CATransaction setDisableActions:YES]; + for (SVGAContentLayer *layer in self.contentLayers) { + if ([layer isKindOfClass:[SVGAContentLayer class]]) { + [layer stepToFrame:self.currentFrame]; + } + } + [CATransaction setDisableActions:NO]; + if (self.forwardAnimating && self.audioLayers.count > 0) { + for (SVGAAudioLayer *layer in self.audioLayers) { + if (!self.audioPlaying && layer.audioItem.startFrame >= self.currentFrame) { + [layer.audioPlayer setCurrentTime:(NSTimeInterval)(layer.audioItem.startTime / 1000)]; + [layer.audioPlayer play]; + self.audioPlaying = YES; + } + if (self.audioPlaying && layer.audioItem.endFrame <= self.currentFrame) { + [layer.audioPlayer stop]; + self.audioPlaying = NO; + } + } + } +} + +- (void)next { + if (self.reversing) { + self.currentFrame--; + if (self.currentFrame < (NSInteger)MAX(0, self.currentRange.location)) { + self.currentFrame = MIN(self.videoItem.frames - 1, self.currentRange.location + self.currentRange.length - 1); + self.loopCount++; + } + } + else { + self.currentFrame++; + if (self.currentFrame >= MIN(self.videoItem.frames, self.currentRange.location + self.currentRange.length)) { + self.currentFrame = MAX(0, self.currentRange.location); + [self clearAudios]; + self.loopCount++; + } + } + if (self.loops > 0 && self.loopCount >= self.loops) { + [self stopAnimation]; + if (!self.clearsAfterStop && [self.fillMode isEqualToString:@"Backward"]) { + [self stepToFrame:MAX(0, self.currentRange.location) andPlay:NO]; + } + else if (!self.clearsAfterStop && [self.fillMode isEqualToString:@"Forward"]) { + [self stepToFrame:MIN(self.videoItem.frames - 1, self.currentRange.location + self.currentRange.length - 1) andPlay:NO]; + } + id delegate = self.delegate; + if (delegate != nil && [delegate respondsToSelector:@selector(svgaPlayerDidFinishedAnimation:)]) { + [delegate svgaPlayerDidFinishedAnimation:self]; + } + return; + } + [self update]; + id delegate = self.delegate; + if (delegate != nil && [delegate respondsToSelector:@selector(svgaPlayerDidAnimatedToFrame:)]) { + [delegate svgaPlayerDidAnimatedToFrame:self.currentFrame]; + } + if (delegate != nil && [delegate respondsToSelector:@selector(svgaPlayerDidAnimatedToPercentage:)] && self.videoItem.frames > 0) { + [delegate svgaPlayerDidAnimatedToPercentage:(CGFloat)(self.currentFrame + 1) / (CGFloat)self.videoItem.frames]; + } +} + +- (void)setVideoItem:(SVGAVideoEntity *)videoItem { + _videoItem = videoItem; + _currentRange = NSMakeRange(0, videoItem.frames); + _reversing = NO; + _currentFrame = 0; + _loopCount = 0; + [[NSOperationQueue mainQueue] addOperationWithBlock:^{ + [self clear]; + [self draw]; + }]; +} + +#pragma mark - Dynamic Object + +- (void)setImage:(UIImage *)image forKey:(NSString *)aKey { + if (image == nil) { + return; + } + NSMutableDictionary *mutableDynamicObjects = [self.dynamicObjects mutableCopy]; + [mutableDynamicObjects setObject:image forKey:aKey]; + self.dynamicObjects = mutableDynamicObjects; + if (self.contentLayers.count > 0) { + for (SVGAContentLayer *layer in self.contentLayers) { + if ([layer isKindOfClass:[SVGAContentLayer class]] && [layer.imageKey isEqualToString:aKey]) { + layer.bitmapLayer.contents = (__bridge id _Nullable)([image CGImage]); + } + } + } +} + +- (void)setImageWithURL:(NSURL *)URL forKey:(NSString *)aKey { + [[[NSURLSession sharedSession] dataTaskWithURL:URL completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { + if (error == nil && data != nil) { + UIImage *image = [UIImage imageWithData:data]; + if (image != nil) { + [[NSOperationQueue mainQueue] addOperationWithBlock:^{ + [self setImage:image forKey:aKey]; + }]; + } + } + }] resume]; +} + +- (void)setImage:(UIImage *)image forKey:(NSString *)aKey referenceLayer:(CALayer *)referenceLayer { + [self setImage:image forKey:aKey]; +} + +- (void)setAttributedText:(NSAttributedString *)attributedText forKey:(NSString *)aKey { + if (attributedText == nil) { + return; + } + NSMutableDictionary *mutableDynamicTexts = [self.dynamicTexts mutableCopy]; + [mutableDynamicTexts setObject:attributedText forKey:aKey]; + self.dynamicTexts = mutableDynamicTexts; + if (self.contentLayers.count > 0) { + CGSize bitmapSize = CGSizeMake(self.videoItem.images[aKey].size.width * self.videoItem.images[aKey].scale, self.videoItem.images[aKey].size.height * self.videoItem.images[aKey].scale); + CGSize size = [attributedText boundingRectWithSize:bitmapSize + options:NSStringDrawingUsesLineFragmentOrigin context:NULL].size; + CATextLayer *textLayer; + for (SVGAContentLayer *layer in self.contentLayers) { + if ([layer isKindOfClass:[SVGAContentLayer class]] && [layer.imageKey isEqualToString:aKey]) { + textLayer = layer.textLayer; + if (textLayer == nil) { + textLayer = [CATextLayer layer]; + [layer addSublayer:textLayer]; + layer.textLayer = textLayer; + [layer resetTextLayerProperties:attributedText]; + } + } + } + if (textLayer != nil) { + textLayer.contentsScale = [[UIScreen mainScreen] scale]; + [textLayer setString:attributedText]; + textLayer.alignmentMode = kCAAlignmentCenter; + textLayer.frame = CGRectMake(0, 0, size.width, size.height); + } + } +} + +- (void)setDrawingBlock:(SVGAPlayerDynamicDrawingBlock)drawingBlock forKey:(NSString *)aKey { + NSMutableDictionary *mutableDynamicDrawings = [self.dynamicDrawings mutableCopy]; + [mutableDynamicDrawings setObject:drawingBlock forKey:aKey]; + self.dynamicDrawings = mutableDynamicDrawings; + if (self.contentLayers.count > 0) { + for (SVGAContentLayer *layer in self.contentLayers) { + if ([layer isKindOfClass:[SVGAContentLayer class]] && + [layer.imageKey isEqualToString:aKey]) { + layer.dynamicDrawingBlock = drawingBlock; + } + } + } +} + +- (void)setHidden:(BOOL)hidden forKey:(NSString *)aKey { + NSMutableDictionary *mutableDynamicHiddens = [self.dynamicHiddens mutableCopy]; + [mutableDynamicHiddens setObject:@(hidden) forKey:aKey]; + self.dynamicHiddens = mutableDynamicHiddens; + if (self.contentLayers.count > 0) { + for (SVGAContentLayer *layer in self.contentLayers) { + if ([layer isKindOfClass:[SVGAContentLayer class]] && + [layer.imageKey isEqualToString:aKey]) { + layer.dynamicHidden = hidden; + } + } + } +} + +- (void)clearDynamicObjects { + self.dynamicObjects = nil; + self.dynamicTexts = nil; + self.dynamicHiddens = nil; + self.dynamicDrawings = nil; +} + +- (NSDictionary *)dynamicObjects { + if (_dynamicObjects == nil) { + _dynamicObjects = @{}; + } + return _dynamicObjects; +} + +- (NSDictionary *)dynamicTexts { + if (_dynamicTexts == nil) { + _dynamicTexts = @{}; + } + return _dynamicTexts; +} + +- (NSDictionary *)dynamicHiddens { + if (_dynamicHiddens == nil) { + _dynamicHiddens = @{}; + } + return _dynamicHiddens; +} + +- (NSDictionary *)dynamicDrawings { + if (_dynamicDrawings == nil) { + _dynamicDrawings = @{}; + } + return _dynamicDrawings; +} + +@end + diff --git a/YuMi/CustomUI/SVGA/YUMISVGADisporter.h b/YuMi/CustomUI/SVGA/YUMISVGADisporter.h deleted file mode 100644 index 220780d3..00000000 --- a/YuMi/CustomUI/SVGA/YUMISVGADisporter.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMSVGAPlayer.h -// YUMI -// -// Created by YUMI on 2022/6/15. -// - -#import "SVGAImageView.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISVGADisporter : SVGAImageView - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/SVGA/YUMISVGADisporter.m b/YuMi/CustomUI/SVGA/YUMISVGADisporter.m deleted file mode 100644 index 546104b4..00000000 --- a/YuMi/CustomUI/SVGA/YUMISVGADisporter.m +++ /dev/null @@ -1,530 +0,0 @@ -// -// YMSVGAPlayer.m -// YUMI -// -// Created by YUMI on 2022/6/15. -// - -#import "YUMISVGADisporter.h" -#import "SVGAVideoEntity.h" -#import "SVGAVideoSpriteEntity.h" -#import "SVGAVideoSpriteFrameEntity.h" -#import "SVGAContentLayer.h" -#import "SVGABitmapLayer.h" -#import "SVGAVectorLayer.h" -#import "SVGAAudioLayer.h" -#import "SVGAAudioEntity.h" -#import "YYText.h" - -@interface YUMISVGADisporter () - -@property (nonatomic, strong) CALayer *drawLayer; -@property (nonatomic, strong) NSArray *audioLayers; -@property (nonatomic, strong) CADisplayLink *displayLink; -@property (nonatomic, assign) NSInteger currentFrame; -@property (nonatomic, copy) NSArray *contentLayers; -@property (nonatomic, copy) NSDictionary *dynamicObjects; -@property (nonatomic, copy) NSDictionary *dynamicTexts; -@property (nonatomic, copy) NSDictionary *dynamicDrawings; -@property (nonatomic, copy) NSDictionary *dynamicHiddens; -@property (nonatomic, assign) int loopCount; -@property (nonatomic, assign) NSRange currentRange; -@property (nonatomic, assign) BOOL forwardAnimating; -@property (nonatomic, assign) BOOL reversing; -@property (nonatomic, assign) BOOL audioPlaying; - -@end - - - -@implementation YUMISVGADisporter -@synthesize videoItem = _videoItem; - - -- (instancetype)init { - if (self = [super init]) { - [self initPlayer]; - } - return self; -} - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initPlayer]; - } - return self; -} - -- (instancetype)initWithCoder:(NSCoder *)aDecoder { - if (self = [super initWithCoder:aDecoder]) { - [self initPlayer]; - } - return self; -} - -- (void)initPlayer { - self.contentMode = UIViewContentModeTop; - self.clearsAfterStop = YES; -} - -- (void)willMoveToSuperview:(UIView *)newSuperview { - [super willMoveToSuperview:newSuperview]; - if (newSuperview == nil) { - [self stopAnimation:YES]; - } -} - -- (void)startAnimation { - if (self.videoItem == nil) { - NSLog(@"videoItem could not be nil!"); - return; - } else if (self.drawLayer == nil) { - self.videoItem = _videoItem; - } - [self stopAnimation:NO]; - self.loopCount = 0; - self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(next)]; - - self.displayLink.frameInterval = 60 / self.videoItem.FPS; - [self.displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes]; - self.forwardAnimating = !self.reversing; -} - -- (void)startAnimationWithRange:(NSRange)range reverse:(BOOL)reverse { - self.currentRange = range; - self.reversing = reverse; - if (reverse) { - self.currentFrame = MIN(self.videoItem.frames - 1, range.location + range.length - 1); - } - else { - self.currentFrame = MAX(0, range.location); - } - [self startAnimation]; -} - -- (void)pauseAnimation { - [self stopAnimation:NO]; -} - -- (void)stopAnimation { - [self stopAnimation:self.clearsAfterStop]; -} - -- (void)stopAnimation:(BOOL)clear { - self.forwardAnimating = NO; - if (self.displayLink != nil) { - [self.displayLink invalidate]; - } - if (clear) { - [self clear]; - } - [self clearAudios]; - self.displayLink = nil; -} - -- (void)clear { - self.contentLayers = nil; - [self.drawLayer removeFromSuperlayer]; - self.drawLayer = nil; -} - -- (void)clearAudios { - if (!self.audioPlaying) { - return; - } - for (SVGAAudioLayer *layer in self.audioLayers) { - [layer.audioPlayer stop]; - } - self.audioPlaying = NO; -} - -- (void)stepToFrame:(NSInteger)frame andPlay:(BOOL)andPlay { - if (self.videoItem == nil) { - NSLog(@"videoItem could not be nil!"); - return; - } else if (self.drawLayer == nil) { - self.videoItem = _videoItem; - } - if (frame >= self.videoItem.frames || frame < 0) { - return; - } - [self pauseAnimation]; - self.currentFrame = frame; - [self update]; - if (andPlay) { - self.forwardAnimating = YES; - self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(next)]; - self.displayLink.frameInterval = 60 / self.videoItem.FPS; - [self.displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes]; - } -} - -- (void)stepToPercentage:(CGFloat)percentage andPlay:(BOOL)andPlay { - NSInteger frame = (NSInteger)(self.videoItem.frames * percentage); - if (frame >= self.videoItem.frames && frame > 0) { - frame = self.videoItem.frames - 1; - } - [self stepToFrame:frame andPlay:andPlay]; -} - -- (void)draw { - self.drawLayer = [[CALayer alloc] init]; - self.drawLayer.frame = CGRectMake(0, 0, self.videoItem.videoSize.width, self.videoItem.videoSize.height); - self.drawLayer.masksToBounds = true; - NSMutableDictionary *tempHostLayers = [NSMutableDictionary dictionary]; - NSMutableArray *tempContentLayers = [NSMutableArray array]; - - [self.videoItem.sprites enumerateObjectsUsingBlock:^(SVGAVideoSpriteEntity * _Nonnull butterfly, NSUInteger idx, BOOL * _Nonnull stop) { - UIImage *bitmap; - if (butterfly.imageKey != nil) { - NSString *bitmapKey = [butterfly.imageKey stringByDeletingPathExtension]; - if (self.dynamicObjects[bitmapKey] != nil) { - bitmap = self.dynamicObjects[bitmapKey]; - } - else { - bitmap = self.videoItem.images[bitmapKey]; - } - } - SVGAContentLayer *contentLayer = [butterfly requestLayerWithBitmap:bitmap]; - contentLayer.imageKey = butterfly.imageKey; - [tempContentLayers addObject:contentLayer]; - if ([butterfly.imageKey hasSuffix:@".matte"]) { - CALayer *hostLayer = [[CALayer alloc] init]; - hostLayer.mask = contentLayer; - tempHostLayers[butterfly.imageKey] = hostLayer; - } else { - if (butterfly.matteKey && butterfly.matteKey.length > 0) { - CALayer *hostLayer = tempHostLayers[butterfly.matteKey]; - [hostLayer addSublayer:contentLayer]; - if (![butterfly.matteKey isEqualToString:self.videoItem.sprites[idx - 1].matteKey]) { - [self.drawLayer addSublayer:hostLayer]; - } - } else { - [self.drawLayer addSublayer:contentLayer]; - } - } - if (butterfly.imageKey != nil) { - if (self.dynamicTexts[butterfly.imageKey] != nil) { - NSAttributedString *text = self.dynamicTexts[butterfly.imageKey]; - CGSize bitmapSize = CGSizeMake(self.videoItem.images[butterfly.imageKey].size.width * self.videoItem.images[butterfly.imageKey].scale, self.videoItem.images[butterfly.imageKey].size.height * self.videoItem.images[butterfly.imageKey].scale); - - - CATextLayer *textLayer = [CATextLayer layer]; - textLayer.contentsScale = [[UIScreen mainScreen] scale]; - [textLayer setString:self.dynamicTexts[butterfly.imageKey]]; - textLayer.alignmentMode = kCAAlignmentCenter; - CGSize size = [text boundingRectWithSize:CGSizeMake(bitmapSize.width, CGFLOAT_MAX) - options:NSStringDrawingUsesLineFragmentOrigin - context:NULL].size; - textLayer.frame = CGRectMake(0, 0, size.width, size.height); - [contentLayer addSublayer:textLayer]; - contentLayer.textLayer = textLayer; - [contentLayer resetTextLayerProperties:text]; - } - if (self.dynamicHiddens[butterfly.imageKey] != nil && - [self.dynamicHiddens[butterfly.imageKey] boolValue] == YES) { - contentLayer.dynamicHidden = YES; - } - if (self.dynamicDrawings[butterfly.imageKey] != nil) { - contentLayer.dynamicDrawingBlock = self.dynamicDrawings[butterfly.imageKey]; - } - } - }]; - self.contentLayers = tempContentLayers; - - [self.layer addSublayer:self.drawLayer]; - NSMutableArray *audioLayers = [NSMutableArray array]; - [self.videoItem.audios enumerateObjectsUsingBlock:^(SVGAAudioEntity * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - SVGAAudioLayer *audioLayer = [[SVGAAudioLayer alloc] initWithAudioItem:obj videoItem:self.videoItem]; - [audioLayers addObject:audioLayer]; - }]; - self.audioLayers = audioLayers; - [self update]; - [self resize]; -} - -- (void)resize { - if (self.contentMode == UIViewContentModeScaleAspectFit) { - CGFloat videoRatio = self.videoItem.videoSize.width / self.videoItem.videoSize.height; - CGFloat layerRatio = self.bounds.size.width / self.bounds.size.height; - if (videoRatio > layerRatio) { - CGFloat ratio = self.bounds.size.width / self.videoItem.videoSize.width; - CGPoint offset = CGPointMake( - (1.0 - ratio) / 2.0 * self.videoItem.videoSize.width, - (1.0 - ratio) / 2.0 * self.videoItem.videoSize.height - - (self.bounds.size.height - self.videoItem.videoSize.height * ratio) / 2.0 - ); - self.drawLayer.transform = CATransform3DMakeAffineTransform(CGAffineTransformMake(ratio, 0, 0, ratio, -offset.x, -offset.y)); - } - else { - CGFloat ratio = self.bounds.size.height / self.videoItem.videoSize.height; - CGPoint offset = CGPointMake( - (1.0 - ratio) / 2.0 * self.videoItem.videoSize.width - (self.bounds.size.width - self.videoItem.videoSize.width * ratio) / 2.0, - (1.0 - ratio) / 2.0 * self.videoItem.videoSize.height); - self.drawLayer.transform = CATransform3DMakeAffineTransform(CGAffineTransformMake(ratio, 0, 0, ratio, -offset.x, -offset.y)); - } - } - else if (self.contentMode == UIViewContentModeScaleAspectFill) { - CGFloat videoRatio = self.videoItem.videoSize.width / self.videoItem.videoSize.height; - CGFloat layerRatio = self.bounds.size.width / self.bounds.size.height; - if (videoRatio < layerRatio) { - CGFloat ratio = self.bounds.size.width / self.videoItem.videoSize.width; - CGPoint offset = CGPointMake( - (1.0 - ratio) / 2.0 * self.videoItem.videoSize.width, - (1.0 - ratio) / 2.0 * self.videoItem.videoSize.height - - (self.bounds.size.height - self.videoItem.videoSize.height * ratio) / 2.0 - ); - self.drawLayer.transform = CATransform3DMakeAffineTransform(CGAffineTransformMake(ratio, 0, 0, ratio, -offset.x, -offset.y)); - } - else { - CGFloat ratio = self.bounds.size.height / self.videoItem.videoSize.height; - CGPoint offset = CGPointMake( - (1.0 - ratio) / 2.0 * self.videoItem.videoSize.width - (self.bounds.size.width - self.videoItem.videoSize.width * ratio) / 2.0, - (1.0 - ratio) / 2.0 * self.videoItem.videoSize.height); - self.drawLayer.transform = CATransform3DMakeAffineTransform(CGAffineTransformMake(ratio, 0, 0, ratio, -offset.x, -offset.y)); - } - } - else if (self.contentMode == UIViewContentModeTop) { - CGFloat scaleX = self.frame.size.width / self.videoItem.videoSize.width; - CGPoint offset = CGPointMake((1.0 - scaleX) / 2.0 * self.videoItem.videoSize.width, (1 - scaleX) / 2.0 * self.videoItem.videoSize.height); - self.drawLayer.transform = CATransform3DMakeAffineTransform(CGAffineTransformMake(scaleX, 0, 0, scaleX, -offset.x, -offset.y)); - } - else if (self.contentMode == UIViewContentModeBottom) { - CGFloat scaleX = self.frame.size.width / self.videoItem.videoSize.width; - CGPoint offset = CGPointMake( - (1.0 - scaleX) / 2.0 * self.videoItem.videoSize.width, - (1.0 - scaleX) / 2.0 * self.videoItem.videoSize.height); - self.drawLayer.transform = CATransform3DMakeAffineTransform(CGAffineTransformMake(scaleX, 0, 0, scaleX, -offset.x, -offset.y + self.frame.size.height - self.videoItem.videoSize.height * scaleX)); - } - else if (self.contentMode == UIViewContentModeLeft) { - CGFloat scaleY = self.frame.size.height / self.videoItem.videoSize.height; - CGPoint offset = CGPointMake((1.0 - scaleY) / 2.0 * self.videoItem.videoSize.width, (1 - scaleY) / 2.0 * self.videoItem.videoSize.height); - self.drawLayer.transform = CATransform3DMakeAffineTransform(CGAffineTransformMake(scaleY, 0, 0, scaleY, -offset.x, -offset.y)); - } - else if (self.contentMode == UIViewContentModeRight) { - CGFloat scaleY = self.frame.size.height / self.videoItem.videoSize.height; - CGPoint offset = CGPointMake( - (1.0 - scaleY) / 2.0 * self.videoItem.videoSize.width, - (1.0 - scaleY) / 2.0 * self.videoItem.videoSize.height); - self.drawLayer.transform = CATransform3DMakeAffineTransform(CGAffineTransformMake(scaleY, 0, 0, scaleY, -offset.x + self.frame.size.width - self.videoItem.videoSize.width * scaleY, -offset.y)); - } - else { - CGFloat scaleX = self.frame.size.width / self.videoItem.videoSize.width; - CGFloat scaleY = self.frame.size.height / self.videoItem.videoSize.height; - CGPoint offset = CGPointMake((1.0 - scaleX) / 2.0 * self.videoItem.videoSize.width, (1 - scaleY) / 2.0 * self.videoItem.videoSize.height); - self.drawLayer.transform = CATransform3DMakeAffineTransform(CGAffineTransformMake(scaleX, 0, 0, scaleY, -offset.x, -offset.y)); - } -} - -- (void)layoutSubviews { - [super layoutSubviews]; - [self resize]; -} - -- (void)update { - [CATransaction setDisableActions:YES]; - for (SVGAContentLayer *layer in self.contentLayers) { - if ([layer isKindOfClass:[SVGAContentLayer class]]) { - [layer stepToFrame:self.currentFrame]; - } - } - [CATransaction setDisableActions:NO]; - if (self.forwardAnimating && self.audioLayers.count > 0) { - for (SVGAAudioLayer *layer in self.audioLayers) { - if (!self.audioPlaying && layer.audioItem.startFrame >= self.currentFrame) { - [layer.audioPlayer setCurrentTime:(NSTimeInterval)(layer.audioItem.startTime / 1000)]; - [layer.audioPlayer play]; - self.audioPlaying = YES; - } - if (self.audioPlaying && layer.audioItem.endFrame <= self.currentFrame) { - [layer.audioPlayer stop]; - self.audioPlaying = NO; - } - } - } -} - -- (void)next { - if (self.reversing) { - self.currentFrame--; - if (self.currentFrame < (NSInteger)MAX(0, self.currentRange.location)) { - self.currentFrame = MIN(self.videoItem.frames - 1, self.currentRange.location + self.currentRange.length - 1); - self.loopCount++; - } - } - else { - self.currentFrame++; - if (self.currentFrame >= MIN(self.videoItem.frames, self.currentRange.location + self.currentRange.length)) { - self.currentFrame = MAX(0, self.currentRange.location); - [self clearAudios]; - self.loopCount++; - } - } - if (self.loops > 0 && self.loopCount >= self.loops) { - [self stopAnimation]; - if (!self.clearsAfterStop && [self.fillMode isEqualToString:@"Backward"]) { - [self stepToFrame:MAX(0, self.currentRange.location) andPlay:NO]; - } - else if (!self.clearsAfterStop && [self.fillMode isEqualToString:@"Forward"]) { - [self stepToFrame:MIN(self.videoItem.frames - 1, self.currentRange.location + self.currentRange.length - 1) andPlay:NO]; - } - id delegate = self.delegate; - if (delegate != nil && [delegate respondsToSelector:@selector(svgaPlayerDidFinishedAnimation:)]) { - [delegate svgaPlayerDidFinishedAnimation:self]; - } - return; - } - [self update]; - id delegate = self.delegate; - if (delegate != nil && [delegate respondsToSelector:@selector(svgaPlayerDidAnimatedToFrame:)]) { - [delegate svgaPlayerDidAnimatedToFrame:self.currentFrame]; - } - if (delegate != nil && [delegate respondsToSelector:@selector(svgaPlayerDidAnimatedToPercentage:)] && self.videoItem.frames > 0) { - [delegate svgaPlayerDidAnimatedToPercentage:(CGFloat)(self.currentFrame + 1) / (CGFloat)self.videoItem.frames]; - } -} - -- (void)setVideoItem:(SVGAVideoEntity *)videoItem { - _videoItem = videoItem; - _currentRange = NSMakeRange(0, videoItem.frames); - _reversing = NO; - _currentFrame = 0; - _loopCount = 0; - [[NSOperationQueue mainQueue] addOperationWithBlock:^{ - [self clear]; - [self draw]; - }]; -} - -#pragma mark - Dynamic Object - -- (void)setImage:(UIImage *)image forKey:(NSString *)aKey { - if (image == nil) { - return; - } - NSMutableDictionary *mutableDynamicObjects = [self.dynamicObjects mutableCopy]; - [mutableDynamicObjects setObject:image forKey:aKey]; - self.dynamicObjects = mutableDynamicObjects; - if (self.contentLayers.count > 0) { - for (SVGAContentLayer *layer in self.contentLayers) { - if ([layer isKindOfClass:[SVGAContentLayer class]] && [layer.imageKey isEqualToString:aKey]) { - layer.bitmapLayer.contents = (__bridge id _Nullable)([image CGImage]); - } - } - } -} - -- (void)setImageWithURL:(NSURL *)URL forKey:(NSString *)aKey { - [[[NSURLSession sharedSession] dataTaskWithURL:URL completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { - if (error == nil && data != nil) { - UIImage *image = [UIImage imageWithData:data]; - if (image != nil) { - [[NSOperationQueue mainQueue] addOperationWithBlock:^{ - [self setImage:image forKey:aKey]; - }]; - } - } - }] resume]; -} - -- (void)setImage:(UIImage *)image forKey:(NSString *)aKey referenceLayer:(CALayer *)referenceLayer { - [self setImage:image forKey:aKey]; -} - -- (void)setAttributedText:(NSAttributedString *)attributedText forKey:(NSString *)aKey { - if (attributedText == nil) { - return; - } - NSMutableDictionary *mutableDynamicTexts = [self.dynamicTexts mutableCopy]; - [mutableDynamicTexts setObject:attributedText forKey:aKey]; - self.dynamicTexts = mutableDynamicTexts; - if (self.contentLayers.count > 0) { - CGSize bitmapSize = CGSizeMake(self.videoItem.images[aKey].size.width * self.videoItem.images[aKey].scale, self.videoItem.images[aKey].size.height * self.videoItem.images[aKey].scale); - CGSize size = [attributedText boundingRectWithSize:bitmapSize - options:NSStringDrawingUsesLineFragmentOrigin context:NULL].size; - CATextLayer *textLayer; - for (SVGAContentLayer *layer in self.contentLayers) { - if ([layer isKindOfClass:[SVGAContentLayer class]] && [layer.imageKey isEqualToString:aKey]) { - textLayer = layer.textLayer; - if (textLayer == nil) { - textLayer = [CATextLayer layer]; - [layer addSublayer:textLayer]; - layer.textLayer = textLayer; - [layer resetTextLayerProperties:attributedText]; - } - } - } - if (textLayer != nil) { - textLayer.contentsScale = [[UIScreen mainScreen] scale]; - [textLayer setString:attributedText]; - textLayer.alignmentMode = kCAAlignmentCenter; - textLayer.frame = CGRectMake(0, 0, size.width, size.height); - } - } -} - -- (void)setDrawingBlock:(SVGAPlayerDynamicDrawingBlock)drawingBlock forKey:(NSString *)aKey { - NSMutableDictionary *mutableDynamicDrawings = [self.dynamicDrawings mutableCopy]; - [mutableDynamicDrawings setObject:drawingBlock forKey:aKey]; - self.dynamicDrawings = mutableDynamicDrawings; - if (self.contentLayers.count > 0) { - for (SVGAContentLayer *layer in self.contentLayers) { - if ([layer isKindOfClass:[SVGAContentLayer class]] && - [layer.imageKey isEqualToString:aKey]) { - layer.dynamicDrawingBlock = drawingBlock; - } - } - } -} - -- (void)setHidden:(BOOL)hidden forKey:(NSString *)aKey { - NSMutableDictionary *mutableDynamicHiddens = [self.dynamicHiddens mutableCopy]; - [mutableDynamicHiddens setObject:@(hidden) forKey:aKey]; - self.dynamicHiddens = mutableDynamicHiddens; - if (self.contentLayers.count > 0) { - for (SVGAContentLayer *layer in self.contentLayers) { - if ([layer isKindOfClass:[SVGAContentLayer class]] && - [layer.imageKey isEqualToString:aKey]) { - layer.dynamicHidden = hidden; - } - } - } -} - -- (void)clearDynamicObjects { - self.dynamicObjects = nil; - self.dynamicTexts = nil; - self.dynamicHiddens = nil; - self.dynamicDrawings = nil; -} - -- (NSDictionary *)dynamicObjects { - if (_dynamicObjects == nil) { - _dynamicObjects = @{}; - } - return _dynamicObjects; -} - -- (NSDictionary *)dynamicTexts { - if (_dynamicTexts == nil) { - _dynamicTexts = @{}; - } - return _dynamicTexts; -} - -- (NSDictionary *)dynamicHiddens { - if (_dynamicHiddens == nil) { - _dynamicHiddens = @{}; - } - return _dynamicHiddens; -} - -- (NSDictionary *)dynamicDrawings { - if (_dynamicDrawings == nil) { - _dynamicDrawings = @{}; - } - return _dynamicDrawings; -} - -@end - diff --git a/YuMi/CustomUI/ShareView/Model/XPShareInfoModel.h b/YuMi/CustomUI/ShareView/Model/XPShareInfoModel.h new file mode 100644 index 00000000..88b6f3bb --- /dev/null +++ b/YuMi/CustomUI/ShareView/Model/XPShareInfoModel.h @@ -0,0 +1,55 @@ +// +// YMShareModel.h +// YUMI +// +// Created by YUMI on 2021/11/23. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(NSUInteger, ShareType) { + ///分享房间 + ShareType_Room = 1, + ///分享h5 + ShareType_H5 = 2, + ///大转盘 目前没用到 + ShareType_User_Draw = 888, +}; + +@interface XPShareInfoModel : NSObject +///分享的标题 +@property (nonatomic,copy) NSString *shareTitle; +///分享的内容 +@property (nonatomic,copy) NSString *shareContent; +///分享的地址 +@property (nonatomic,copy) NSString *shareUrl; +///分享图片 +@property (nonatomic,copy) NSString *shareImageUrl; +///分享图片 +@property (nonatomic,copy) UIImage *shareImage; +///分享的类型 +@property (nonatomic,assign) ShareType type; +///分享类型,1微信好友,2微信朋友圈,3QQ好友,4QQ空间 +@property (nonatomic,assign) NSInteger shareType; +///分享房间的uid +@property (nonatomic,assign) NSInteger roomUid; +#pragma mark - 动态分享 +///被分享动态的那个人 +@property (nonatomic,copy) NSString *uid; +///动态分享 +@property (nonatomic,copy) NSString *dynamicId; +///话题id +@property (nonatomic,copy) NSString *worldId; +///封面 +@property (nonatomic,copy) NSString *imageUrl; +///名称 +@property (nonatomic,copy) NSString *nick; +///发布者的uid +@property (nonatomic,copy) NSString *publishUid; +///内容 +@property (nonatomic,copy) NSString *content; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/ShareView/Model/XPShareInfoModel.m b/YuMi/CustomUI/ShareView/Model/XPShareInfoModel.m new file mode 100644 index 00000000..648355c1 --- /dev/null +++ b/YuMi/CustomUI/ShareView/Model/XPShareInfoModel.m @@ -0,0 +1,12 @@ +// +// YMShareModel.m +// YUMI +// +// Created by YUMI on 2021/11/23. +// + +#import "XPShareInfoModel.h" + +@implementation XPShareInfoModel + +@end diff --git a/YuMi/CustomUI/ShareView/Model/XPShareItem.h b/YuMi/CustomUI/ShareView/Model/XPShareItem.h new file mode 100644 index 00000000..e4545dc5 --- /dev/null +++ b/YuMi/CustomUI/ShareView/Model/XPShareItem.h @@ -0,0 +1,41 @@ +// +// YMShareItem.h +// YUMI +// +// Created by YUMI on 2021/11/23. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef enum : NSUInteger { + ///微信好友 + XPShareItemTagWeChat = 1, + ///微信朋友圈 + XPShareItemTagMoments, + ///QQ好友 + XPShareItemTagQQ, + ///QQ空间 + XPShareItemTagQQZone, + ///LIne + XPShareItemTagLine, + ///FaceBook + XPShareItemTagFaceBook, + ///复制链接 + XPShareItemTagCopyLink, + ///应用好友 + XPShareItemTagAppFriends, +} XPShareItemTag; + +@interface XPShareItem : NSObject +@property (nonatomic, copy) NSString *title; +@property (nonatomic, copy) NSString *imageName; +@property (nonatomic, copy) NSString *disableImageName; +@property (nonatomic, assign) BOOL disable; +@property (nonatomic, assign) XPShareItemTag type; + ++ (instancetype)itemWitTag:(XPShareItemTag)itemTag title:(NSString *)title imageName:(NSString *)imageName disableImageName:(NSString *)disableImageName; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/ShareView/Model/XPShareItem.m b/YuMi/CustomUI/ShareView/Model/XPShareItem.m new file mode 100644 index 00000000..4a2f76af --- /dev/null +++ b/YuMi/CustomUI/ShareView/Model/XPShareItem.m @@ -0,0 +1,23 @@ +// +// YMShareItem.m +// YUMI +// +// Created by YUMI on 2021/11/23. +// + +#import "XPShareItem.h" + +@implementation XPShareItem + ++ (instancetype)itemWitTag:(XPShareItemTag)itemTag title:(NSString *)title imageName:(NSString *)imageName disableImageName:(NSString *)disableImageName { + XPShareItem *item = [[self alloc] init]; + item.type = itemTag; + item.title = title; + item.imageName = imageName; + item.disableImageName = disableImageName; + item.disable = NO; + return item; +} + + +@end diff --git a/YuMi/CustomUI/ShareView/Model/YUMIParaticipationAbstractMatrix.h b/YuMi/CustomUI/ShareView/Model/YUMIParaticipationAbstractMatrix.h deleted file mode 100644 index be576a8e..00000000 --- a/YuMi/CustomUI/ShareView/Model/YUMIParaticipationAbstractMatrix.h +++ /dev/null @@ -1,40 +0,0 @@ -// -// YMShareModel.h -// YUMI -// -// Created by YUMI on 2021/11/23. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSUInteger, ShareGenre) { - - ShareGenre_Room = 1, - - ShareGenre_H5 = 2, - - ShareGenre_User_Draw = 888, -}; - -@interface YUMIParaticipationAbstractMatrix : NSObject -@property (nonatomic,copy) NSString *shareTitle; -@property (nonatomic,copy) NSString *shareContent; -@property (nonatomic,copy) NSString *shareUrl; -@property (nonatomic,copy) NSString *shareImageUrl; -@property (nonatomic,copy) UIImage *shareImage; -@property (nonatomic,assign) ShareGenre type; -@property (nonatomic,assign) NSInteger shareType; -@property (nonatomic,assign) NSInteger roomUid; -#pragma mark - 动态分享 -@property (nonatomic,copy) NSString *uid; -@property (nonatomic,copy) NSString *dynamicId; -@property (nonatomic,copy) NSString *worldId; -@property (nonatomic,copy) NSString *imageUrl; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,copy) NSString *publishUid; -@property (nonatomic,copy) NSString *content; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/ShareView/Model/YUMIParaticipationAbstractMatrix.m b/YuMi/CustomUI/ShareView/Model/YUMIParaticipationAbstractMatrix.m deleted file mode 100644 index c5fefc49..00000000 --- a/YuMi/CustomUI/ShareView/Model/YUMIParaticipationAbstractMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMShareModel.m -// YUMI -// -// Created by YUMI on 2021/11/23. -// - -#import "YUMIParaticipationAbstractMatrix.h" - -@implementation YUMIParaticipationAbstractMatrix - -@end diff --git a/YuMi/CustomUI/ShareView/Model/YUMIParaticipationProvision.h b/YuMi/CustomUI/ShareView/Model/YUMIParaticipationProvision.h deleted file mode 100644 index d7b70f10..00000000 --- a/YuMi/CustomUI/ShareView/Model/YUMIParaticipationProvision.h +++ /dev/null @@ -1,41 +0,0 @@ -// -// YMShareItem.h -// YUMI -// -// Created by YUMI on 2021/11/23. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef enum : NSUInteger { - - XPShareItemTagWeChat = 1, - - XPShareItemTagMoments, - - XPShareItemTagQQ, - - XPShareItemTagQQZone, - - XPShareItemTagLine, - - XPShareItemTagFaceBook, - - XPShareItemTagCopyLink, - - XPShareItemTagAppFriends, -} XPShareItemTag; - -@interface YUMIParaticipationProvision : NSObject -@property (nonatomic, copy) NSString *title; -@property (nonatomic, copy) NSString *imageName; -@property (nonatomic, copy) NSString *disableImageName; -@property (nonatomic, assign) BOOL disable; -@property (nonatomic, assign) XPShareItemTag type; - -+ (instancetype)itemWitCouple:(XPShareItemTag)itemTag title:(NSString *)title imageName:(NSString *)imageName disableImageName:(NSString *)disableImageName; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/ShareView/Model/YUMIParaticipationProvision.m b/YuMi/CustomUI/ShareView/Model/YUMIParaticipationProvision.m deleted file mode 100644 index e2aa7862..00000000 --- a/YuMi/CustomUI/ShareView/Model/YUMIParaticipationProvision.m +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMShareItem.m -// YUMI -// -// Created by YUMI on 2021/11/23. -// - -#import "YUMIParaticipationProvision.h" - -@implementation YUMIParaticipationProvision - -+ (instancetype)itemWitCouple:(XPShareItemTag)itemTag title:(NSString *)title imageName:(NSString *)imageName disableImageName:(NSString *)disableImageName { - YUMIParaticipationProvision *item = [[self alloc] init]; - item.type = itemTag; - item.title = title; - item.imageName = imageName; - item.disableImageName = disableImageName; - item.disable = NO; - return item; -} - - -@end diff --git a/YuMi/CustomUI/ShareView/View/XPShareItemCell.h b/YuMi/CustomUI/ShareView/View/XPShareItemCell.h new file mode 100644 index 00000000..d70aa254 --- /dev/null +++ b/YuMi/CustomUI/ShareView/View/XPShareItemCell.h @@ -0,0 +1,16 @@ +// +// YMShareItemCell.h +// YMRoomMoudle +// +// Created by YUMI on 2022/9/2. +// Copyright © 2023 YUMI. All rights reserved. +// + +#import +#import "XPShareItem.h" + +@interface XPShareItemCell : UICollectionViewCell + +@property (nonatomic, strong) XPShareItem *shareItem; + +@end diff --git a/YuMi/CustomUI/ShareView/View/XPShareItemCell.m b/YuMi/CustomUI/ShareView/View/XPShareItemCell.m new file mode 100644 index 00000000..e36a375e --- /dev/null +++ b/YuMi/CustomUI/ShareView/View/XPShareItemCell.m @@ -0,0 +1,77 @@ +// +// YMShareItemCell.m +// YMRoomMoudle +// +// Created by YUMI on 2022/9/2. +// Copyright © 2023 YUMI. All rights reserved. +// + +#import "XPShareItemCell.h" +#import "DJDKMIMOMColor.h" +#import + +@interface XPShareItemCell() + +@property (nonatomic, strong) UIImageView *iconImageView; +@property (nonatomic, strong) UILabel *titleLabel; + +@end + +@implementation XPShareItemCell + +#pragma mark - Life Style +- (instancetype)initWithFrame:(CGRect)frame{ + if (self=[super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews{ + [self.contentView addSubview:self.iconImageView]; + [self.contentView addSubview:self.titleLabel]; + +} +- (void)initSubViewConstraints{ + CGFloat wh = 40; + [self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.equalTo(@(wh)); + make.top.equalTo(self.contentView); + make.centerX.equalTo(self.contentView); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.equalTo(self.contentView); + make.top.equalTo(self.iconImageView.mas_bottom).offset(10); + }]; +} + +#pragma mark - Getters And Setters +- (void)setShareItem:(XPShareItem *)shareItem{ + _shareItem = shareItem; + self.userInteractionEnabled = shareItem.disable; + if (!shareItem.disable) { + self.iconImageView.image = [UIImage imageNamed:shareItem.disableImageName]; + }else{ + self.iconImageView.image = [UIImage imageNamed:shareItem.imageName]; + } + self.titleLabel.text = shareItem.title; +} + + +- (UIImageView *)iconImageView{ + if (!_iconImageView) { + _iconImageView = [[UIImageView alloc] init]; + } + return _iconImageView; +} +- (UILabel *)titleLabel{ + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textColor = [DJDKMIMOMColor alertMessageColor]; + _titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:12]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} +@end diff --git a/YuMi/CustomUI/ShareView/View/YUMIParaticipationProvisionElement.h b/YuMi/CustomUI/ShareView/View/YUMIParaticipationProvisionElement.h deleted file mode 100644 index 18360204..00000000 --- a/YuMi/CustomUI/ShareView/View/YUMIParaticipationProvisionElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMShareItemCell.h -// YMRoomMoudle -// -// Created by YUMI on 2022/9/2. -// Copyright © 2023 YUMI. All rights reserved. -// - -#import -#import "YUMIParaticipationProvision.h" - -@interface YUMIParaticipationProvisionElement : UICollectionViewCell - -@property (nonatomic, strong) YUMIParaticipationProvision *shareProvision; - -@end diff --git a/YuMi/CustomUI/ShareView/View/YUMIParaticipationProvisionElement.m b/YuMi/CustomUI/ShareView/View/YUMIParaticipationProvisionElement.m deleted file mode 100644 index 09600664..00000000 --- a/YuMi/CustomUI/ShareView/View/YUMIParaticipationProvisionElement.m +++ /dev/null @@ -1,77 +0,0 @@ -// -// YMShareItemCell.m -// YMRoomMoudle -// -// Created by YUMI on 2022/9/2. -// Copyright © 2023 YUMI. All rights reserved. -// - -#import "YUMIParaticipationProvisionElement.h" -#import "DJDKMIMOMColor.h" -#import - -@interface YUMIParaticipationProvisionElement() - -@property (nonatomic, strong) UIImageView *figureIndicateRegard; -@property (nonatomic, strong) UILabel *titleLabel; - -@end - -@implementation YUMIParaticipationProvisionElement - -#pragma mark - Life Style -- (instancetype)initWithFrame:(CGRect)frame{ - if (self=[super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews{ - [self.contentView addSubview:self.figureIndicateRegard]; - [self.contentView addSubview:self.titleLabel]; - -} -- (void)initChildLyRestrictions{ - CGFloat wh = 40; - [self.figureIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.equalTo(@(wh)); - make.top.equalTo(self.contentView); - make.centerX.equalTo(self.contentView); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.equalTo(self.contentView); - make.top.equalTo(self.figureIndicateRegard.mas_bottom).offset(10); - }]; -} - -#pragma mark - Getters And Setters -- (void)setShareProvision:(YUMIParaticipationProvision *)shareProvision{ - _shareProvision = shareProvision; - self.userInteractionEnabled = shareProvision.disable; - if (!shareProvision.disable) { - self.figureIndicateRegard.image = [UIImage imageNamed:shareProvision.disableImageName]; - }else{ - self.figureIndicateRegard.image = [UIImage imageNamed:shareProvision.imageName]; - } - self.titleLabel.text = shareProvision.title; -} - - -- (UIImageView *)figureIndicateRegard{ - if (!_figureIndicateRegard) { - _figureIndicateRegard = [[UIImageView alloc] init]; - } - return _figureIndicateRegard; -} -- (UILabel *)titleLabel{ - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textColor = [DJDKMIMOMColor precautiousCommunictowardsionPrettify]; - _titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:12]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} -@end diff --git a/YuMi/CustomUI/ShareView/XPShareView.h b/YuMi/CustomUI/ShareView/XPShareView.h new file mode 100644 index 00000000..815df53f --- /dev/null +++ b/YuMi/CustomUI/ShareView/XPShareView.h @@ -0,0 +1,29 @@ +// +// YMShareView.h +// YMRoomMoudle +// +// Created by YUMI on 2022/9/2. +// Copyright © 2023 YUMI. All rights reserved. +// + +#import +#import "XPShareItem.h" +#import "XPShareInfoModel.h" + +@class XPShareView; +@protocol XCShareViewDelegate +///点了取消分享 +- (void)shareViewDidClickCancel:(XPShareView *)shareView; +///分享成功 +- (void)shareView:(XPShareView *)shareView didSuccess:(XPShareInfoModel *)shareInfo; +///分享失败 +- (void)shareView:(XPShareView *)shareView shareFail:(NSString *)message; +@end; + +@interface XPShareView : UIView + +@property (nonatomic, weak) id delegate; + +- (instancetype)initWithItems:(NSArray *)items itemSize:(CGSize)itemSize shareInfo:(XPShareInfoModel *)shareInfo; + +@end diff --git a/YuMi/CustomUI/ShareView/XPShareView.m b/YuMi/CustomUI/ShareView/XPShareView.m new file mode 100644 index 00000000..cb371966 --- /dev/null +++ b/YuMi/CustomUI/ShareView/XPShareView.m @@ -0,0 +1,232 @@ +// +// XCShareView.m +// XCRoomMoudle +// +// Created by KevinWang on 2018/9/2. +// Copyright © 2018年 YiZhuan. All rights reserved. +// + +#import "XPShareView.h" +///Third +#import +#import +#import +///Tool +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "XCCurrentVCStackManager.h" +#import "TTPopup.h" +#import "XNDJTDDLoadingTool.h" +#import "NSArray+Safe.h" +///View +#import "XPShareItemCell.h" +#import "XPMineShareViewController.h" + +@interface XPShareView() +///取消 +@property (nonatomic, strong) UIButton *cancleButton; +///列表 +@property (nonatomic, strong) UICollectionView *collectionView; +///数据源 +@property (nonatomic, strong) NSArray *items; +///item的大小 +@property (nonatomic,assign) CGSize itemSize; +///分享的内容 +@property (nonatomic,strong) XPShareInfoModel *shareInfo; +@end + +@implementation XPShareView + +#pragma mark - Life Style +- (instancetype)initWithItems:(NSArray *)items itemSize:(CGSize)itemSize shareInfo:(XPShareInfoModel *)shareInfo { + if (self = [super init]) { + self.items = items; + self.itemSize =itemSize; + self.shareInfo = shareInfo; + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.collectionView]; + [self addSubview:self.cancleButton]; +} + +- (void)initSubViewConstraints { + + CGFloat collectionWidth = KScreenWidth - 15 * 2; + ///一行有几个 + int numberLine = collectionWidth / self.itemSize.width; + int page = self.items.count % numberLine > 0 ? (int)self.items.count / numberLine + 1 : (int)self.items.count / numberLine; + CGFloat collectionHeight = page * self.itemSize.height + 20 + (page-1) * 10 + 10; + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self); + make.height.mas_equalTo(collectionHeight); + make.left.right.mas_equalTo(self).inset(15); + }]; + + [self.cancleButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(45); + make.left.right.mas_equalTo(self.collectionView); + make.top.mas_equalTo(self.collectionView.mas_bottom).offset(15); + }]; + + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth); + make.bottom.mas_equalTo(self.cancleButton.mas_bottom).offset(30); + }]; +} + + +- (BOOL)isInstallClient:(SSDKPlatformType)platform { + return [ShareSDK isClientInstalled:platform]; +} + +- (SSDKPlatformType)getSharePlatformType:(XPShareItemTag)itemTag { + SSDKPlatformType type; + switch (itemTag) { + case XPShareItemTagFaceBook: + type = SSDKPlatformTypeFacebook; + break; + case XPShareItemTagLine: + type = SSDKPlatformTypeLine; + break; + default: + type = SSDKPlatformTypeUnknown; + break; + } + return type; +} + +#pragma mark - UICollectionViewDelegate +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{ + return self.items.count; +} +- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ + XPShareItemCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPShareItemCell class]) forIndexPath:indexPath]; + XPShareItem * item = [self.items safeObjectAtIndex1:indexPath.item]; + if(item != nil){ + if (item.type == XPShareItemTagAppFriends || item.type == XPShareItemTagCopyLink) { + item.disable = YES; + } else { + item.disable = [self isInstallClient:[self getSharePlatformType:item.type]]; + } + cell.shareItem = item; + } + return cell; +} +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{ + [collectionView deselectItemAtIndexPath:indexPath animated:YES]; + XPShareItem * item = [self.items safeObjectAtIndex1:indexPath.item]; + if (item == nil)return; + if (item.type == XPShareItemTagAppFriends) { + [TTPopup dismiss]; + XPMineShareViewController * shareVC = [[XPMineShareViewController alloc] init]; + shareVC.shareType = MineShareType_Monents; + shareVC.shareInfo = self.shareInfo; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:shareVC animated:YES]; + return; + } else if(item.type == XPShareItemTagCopyLink) { + NSString * urlString = self.shareInfo.shareUrl; + UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; + [pasteboard setString:urlString]; + [XNDJTDDLoadingTool showSuccessWithMessage:YMLocalizedString(@"XPShareView0")]; + [TTPopup dismiss]; + return; + } + self.shareInfo.shareType = item.type; + NSMutableDictionary *shareParams = [NSMutableDictionary dictionary]; + NSString * title = [self.shareInfo shareTitle].length > 0 ? self.shareInfo.shareTitle : @""; + NSString * content = self.shareInfo.shareContent.length > 0 ? self.shareInfo.shareContent : @""; + NSString * urlString = self.shareInfo.shareUrl.length > 0 ?self.shareInfo.shareUrl : @""; + NSString * imageURL = self.shareInfo.shareImageUrl.length > 0 ? self.shareInfo.shareImageUrl : @""; + NSString *encodedUrl = [urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; + SSDKPlatformType platformType; + if (item.type == XPShareItemTagLine) { + title = YMLocalizedString(@"XPShareView1"); + platformType = SSDKPlatformTypeLine; + if (![ShareSDK isClientInstalled:platformType]) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPShareView2")]; + return; + } + [shareParams SSDKSetupLineParamsByText:encodedUrl image:nil type:SSDKContentTypeAuto]; + } else { + title = YMLocalizedString(@"XPShareView3"); + platformType = SSDKPlatformTypeFacebook; + content = YMLocalizedString(@"XPShareView4"); + [shareParams SSDKSetupFacebookParamsByText:title image:@"https://image.hfighting.com/morentouxiang.png" url:[NSURL URLWithString:urlString] urlTitle:@"title" urlName:@"name" attachementUrl:nil hashtag:@"#Piko" quote:@"Piko" shareType:SSDKFacebookShareTypeNative type:SSDKContentTypeWebPage]; + } + + [ShareSDK share:platformType parameters:shareParams onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) { + switch (state) { + case SSDKResponseStateSuccess: + { + if (self.delegate && [self.delegate respondsToSelector:@selector(shareView:didSuccess:)]) { + [self.delegate shareView:self didSuccess:self.shareInfo]; + } + } + break; + case SSDKResponseStateFail: + { + if (self.delegate && [self.delegate respondsToSelector:@selector(shareView:shareFail:)]) { + [self.delegate shareView:self shareFail:YMLocalizedString(@"XPShareView5")]; + } + } + break; + case SSDKResponseStateCancel: + { + if (self.delegate && [self.delegate respondsToSelector:@selector(shareView:shareFail:)]) { + [self.delegate shareView:self shareFail:YMLocalizedString(@"XPShareView6")]; + } + } + break; + default: + break; + } + }]; +} + +#pragma mark - Event Response +- (void)cancleButtonDidClck:(UIButton *)button{ + if (self.delegate && [self.delegate respondsToSelector:@selector(shareViewDidClickCancel:)]) { + [self.delegate shareViewDidClickCancel:self]; + } +} + +#pragma mark - Getters And Setters +- (UICollectionView *)collectionView{ + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.itemSize = self.itemSize; + layout.minimumInteritemSpacing = 0; + layout.minimumLineSpacing = 10; + layout.sectionInset = UIEdgeInsetsMake(20, 0, 10, 0); + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.backgroundColor = [UIColor whiteColor]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.layer.masksToBounds = YES; + _collectionView.layer.cornerRadius = 15; + [_collectionView registerClass:[XPShareItemCell class] forCellWithReuseIdentifier:NSStringFromClass([XPShareItemCell class])]; + } + return _collectionView; +} + +- (UIButton *)cancleButton{ + if (!_cancleButton) { + _cancleButton = [[UIButton alloc] init]; + [_cancleButton setBackgroundColor:[UIColor whiteColor]]; + [_cancleButton setTitle:YMLocalizedString(@"XPShareView7") forState:UIControlStateNormal]; + _cancleButton.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:15]; + _cancleButton.layer.masksToBounds = YES; + _cancleButton.layer.cornerRadius = 45/2; + [_cancleButton setTitleColor:[DJDKMIMOMColor textThirdColor] forState:UIControlStateNormal]; + [_cancleButton addTarget:self action:@selector(cancleButtonDidClck:) forControlEvents:UIControlEventTouchUpInside]; + } + return _cancleButton; +} + +@end diff --git a/YuMi/CustomUI/ShareView/YUMIParaticipationRegard.h b/YuMi/CustomUI/ShareView/YUMIParaticipationRegard.h deleted file mode 100644 index 73e105eb..00000000 --- a/YuMi/CustomUI/ShareView/YUMIParaticipationRegard.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YMShareView.h -// YMRoomMoudle -// -// Created by YUMI on 2022/9/2. -// Copyright © 2023 YUMI. All rights reserved. -// - -#import -#import "YUMIParaticipationProvision.h" -#import "YUMIParaticipationAbstractMatrix.h" - -@class YUMIParaticipationRegard; -@protocol XCShareRegardRepresendtation -- (void)partowardsiciptowardsionRegardDidTicktackRevoctowardsion:(YUMIParaticipationRegard *)partowardsiciptowardsionRegard; -- (void)partowardsiciptowardsionRegard:(YUMIParaticipationRegard *)partowardsiciptowardsionRegard didSuccess:(YUMIParaticipationAbstractMatrix *)shareInfo; -- (void)partowardsiciptowardsionRegard:(YUMIParaticipationRegard *)partowardsiciptowardsionRegard shareFail:(NSString *)message; -@end; - -@interface YUMIParaticipationRegard : UIView - -@property (nonatomic, weak) id delegate; - -- (instancetype)initWithItems:(NSArray *)items itemSize:(CGSize)itemSize shareInfo:(YUMIParaticipationAbstractMatrix *)shareInfo; - -@end diff --git a/YuMi/CustomUI/ShareView/YUMIParaticipationRegard.m b/YuMi/CustomUI/ShareView/YUMIParaticipationRegard.m deleted file mode 100644 index 490b7172..00000000 --- a/YuMi/CustomUI/ShareView/YUMIParaticipationRegard.m +++ /dev/null @@ -1,224 +0,0 @@ -// -// XCShareView.m -// XCRoomMoudle -// -// Created by KevinWang on 2018/9/2. -// Copyright © 2018年 YiZhuan. All rights reserved. -// - -#import "YUMIParaticipationRegard.h" -#import -#import -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "XCCurrentVCStackExecutive.h" -#import "MKJPopup.h" -#import "XNDJTBWGLoadingTool.h" -#import "NSArray+Safe.h" -#import "YUMIParaticipationProvisionElement.h" -#import "YUMIManeParaticipationRegardGovernancer.h" - -@interface YUMIParaticipationRegard() -@property (nonatomic, strong) UIButton *cancleBtuton; -@property (nonatomic, strong) UICollectionView *collectionView; -@property (nonatomic, strong) NSArray *items; -@property (nonatomic,assign) CGSize itemSize; -@property (nonatomic,strong) YUMIParaticipationAbstractMatrix *shareInfo; -@end - -@implementation YUMIParaticipationRegard - -#pragma mark - Life Style -- (instancetype)initWithItems:(NSArray *)items itemSize:(CGSize)itemSize shareInfo:(YUMIParaticipationAbstractMatrix *)shareInfo { - if (self = [super init]) { - self.items = items; - self.itemSize =itemSize; - self.shareInfo = shareInfo; - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.collectionView]; - [self addSubview:self.cancleBtuton]; -} - -- (void)initChildLyRestrictions { - - CGFloat collectionWidth = KScreenWidth - 15 * 2; - - int numberLine = collectionWidth / self.itemSize.width; - int page = self.items.count % numberLine > 0 ? (int)self.items.count / numberLine + 1 : (int)self.items.count / numberLine; - CGFloat collectionHeight = page * self.itemSize.height + 20 + (page-1) * 10 + 10; - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self); - make.height.mas_equalTo(collectionHeight); - make.left.right.mas_equalTo(self).inset(15); - }]; - - [self.cancleBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(45); - make.left.right.mas_equalTo(self.collectionView); - make.top.mas_equalTo(self.collectionView.mas_bottom).offset(15); - }]; - - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth); - make.bottom.mas_equalTo(self.cancleBtuton.mas_bottom).offset(30); - }]; -} - - -- (BOOL)isInstentiretyClient:(SSDKPlatformType)platform { - return [ShareSDK isClientInstalled:platform]; -} - -- (SSDKPlatformType)acquirePartowardsiciptowardsionPltowardsformGenre:(XPShareItemTag)itemTag { - SSDKPlatformType type; - switch (itemTag) { - case XPShareItemTagFaceBook: - type = SSDKPlatformTypeFacebook; - break; - case XPShareItemTagLine: - type = SSDKPlatformTypeLine; - break; - default: - type = SSDKPlatformTypeUnknown; - break; - } - return type; -} - -#pragma mark - UICollectionViewDelegate -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{ - return self.items.count; -} -- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ - YUMIParaticipationProvisionElement *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIParaticipationProvisionElement class]) forIndexPath:indexPath]; - YUMIParaticipationProvision * item = [self.items secureGroalTowardsIndictowardsrix1:indexPath.item]; - if(item != nil){ - if (item.type == XPShareItemTagAppFriends || item.type == XPShareItemTagCopyLink) { - item.disable = YES; - } else { - item.disable = [self isInstentiretyClient:[self acquirePartowardsiciptowardsionPltowardsformGenre:item.type]]; - } - cell.shareProvision = item; - } - return cell; -} -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{ - [collectionView deselectItemAtIndexPath:indexPath animated:YES]; - YUMIParaticipationProvision * item = [self.items secureGroalTowardsIndictowardsrix1:indexPath.item]; - if (item == nil)return; - if (item.type == XPShareItemTagAppFriends) { - [MKJPopup dismiss]; - YUMIManeParaticipationRegardGovernancer * shareVC = [[YUMIManeParaticipationRegardGovernancer alloc] init]; - shareVC.shareType = ManeShareGenre_Monents; - shareVC.shareInfo = self.shareInfo; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:shareVC animated:YES]; - return; - } else if(item.type == XPShareItemTagCopyLink) { - NSString * urlString = self.shareInfo.shareUrl; - UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; - [pasteboard setString:urlString]; - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:YMLocalizedString(@"YUMI_Share_View_0")]; - [MKJPopup dismiss]; - return; - } - self.shareInfo.shareType = item.type; - NSMutableDictionary *shareParams = [NSMutableDictionary dictionary]; - NSString * title = [self.shareInfo shareTitle].length > 0 ? self.shareInfo.shareTitle : @""; - NSString * content = self.shareInfo.shareContent.length > 0 ? self.shareInfo.shareContent : @""; - NSString * urlString = self.shareInfo.shareUrl.length > 0 ?self.shareInfo.shareUrl : @""; - NSString * imageURL = self.shareInfo.shareImageUrl.length > 0 ? self.shareInfo.shareImageUrl : @""; - NSString *encodedUrl = [urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; - SSDKPlatformType platformType; - if (item.type == XPShareItemTagLine) { - title = YMLocalizedString(@"YUMI_Share_View_1"); - platformType = SSDKPlatformTypeLine; - if (![ShareSDK isClientInstalled:platformType]) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Share_View_2")]; - return; - } - [shareParams SSDKSetupLineParamsByText:encodedUrl image:nil type:SSDKContentTypeAuto]; - } else { - title = YMLocalizedString(@"YUMI_Share_View_3"); - platformType = SSDKPlatformTypeFacebook; - content = YMLocalizedString(@"YUMI_Share_View_4"); - [shareParams SSDKSetupFacebookParamsByText:title image:@"https://image.hfighting.com/morentouxiang.png" url:[NSURL URLWithString:urlString] urlTitle:@"title" urlName:@"name" attachementUrl:nil hashtag:@"#Piko" quote:@"Piko" shareType:SSDKFacebookShareTypeNative type:SSDKContentTypeWebPage]; - } - - [ShareSDK share:platformType parameters:shareParams onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) { - switch (state) { - case SSDKResponseStateSuccess: - { - if (self.delegate && [self.delegate respondsToSelector:@selector(partowardsiciptowardsionRegard:didSuccess:)]) { - [self.delegate partowardsiciptowardsionRegard:self didSuccess:self.shareInfo]; - } - } - break; - case SSDKResponseStateFail: - { - if (self.delegate && [self.delegate respondsToSelector:@selector(partowardsiciptowardsionRegard:shareFail:)]) { - [self.delegate partowardsiciptowardsionRegard:self shareFail:YMLocalizedString(@"YUMI_Share_View_5")]; - } - } - break; - case SSDKResponseStateCancel: - { - if (self.delegate && [self.delegate respondsToSelector:@selector(partowardsiciptowardsionRegard:shareFail:)]) { - [self.delegate partowardsiciptowardsionRegard:self shareFail:YMLocalizedString(@"YUMI_Share_View_6")]; - } - } - break; - default: - break; - } - }]; -} - -#pragma mark - Event Response -- (void)cancleBtutonDidClck:(UIButton *)button{ - if (self.delegate && [self.delegate respondsToSelector:@selector(partowardsiciptowardsionRegardDidTicktackRevoctowardsion:)]) { - [self.delegate partowardsiciptowardsionRegardDidTicktackRevoctowardsion:self]; - } -} - -#pragma mark - Getters And Setters -- (UICollectionView *)collectionView{ - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.itemSize = self.itemSize; - layout.minimumInteritemSpacing = 0; - layout.minimumLineSpacing = 10; - layout.sectionInset = UIEdgeInsetsMake(20, 0, 10, 0); - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.backgroundColor = [UIColor whiteColor]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.layer.masksToBounds = YES; - _collectionView.layer.cornerRadius = 15; - [_collectionView registerClass:[YUMIParaticipationProvisionElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIParaticipationProvisionElement class])]; - } - return _collectionView; -} - -- (UIButton *)cancleBtuton{ - if (!_cancleBtuton) { - _cancleBtuton = [[UIButton alloc] init]; - [_cancleBtuton setBackgroundColor:[UIColor whiteColor]]; - [_cancleBtuton setTitle:YMLocalizedString(@"YUMI_Share_View_7") forState:UIControlStateNormal]; - _cancleBtuton.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:15]; - _cancleBtuton.layer.masksToBounds = YES; - _cancleBtuton.layer.cornerRadius = 45/2; - [_cancleBtuton setTitleColor:[DJDKMIMOMColor essayTertiusPrettify] forState:UIControlStateNormal]; - [_cancleBtuton addTarget:self action:@selector(cancleBtutonDidClck:) forControlEvents:UIControlEventTouchUpInside]; - } - return _cancleBtuton; -} - -@end diff --git a/YuMi/CustomUI/SwitchView/XPSwitch.h b/YuMi/CustomUI/SwitchView/XPSwitch.h new file mode 100644 index 00000000..81a0d8a0 --- /dev/null +++ b/YuMi/CustomUI/SwitchView/XPSwitch.h @@ -0,0 +1,38 @@ +// +// YMSwitch.h +// YUMI +// +// Created by YUMI on 2023/2/9. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef enum { + CHSwitchShapeOval, + CHSwitchShapeRectangle, + CHSwitchShapeRectangleNoCorner +} CHSwitchShape; + +@interface XPSwitch : UIControl +/** 开关状态读取与设置 */ +@property (nonatomic, getter = isOn) BOOL on; +/** 开关形状枚举值:默认CHSwitchShapeOval */ +@property (nonatomic, assign) CHSwitchShape shape; +/** 打开时的颜色 */ +@property (nonatomic, strong) UIColor *onTintColor; +/** 关闭时的颜色 */ +@property (nonatomic, strong) UIColor *tintColor; +/** 圆点颜色 */ +@property (nonatomic, strong) UIColor *thumbTintColor; +/** 是否需要阴影效果 */ +@property (nonatomic, assign) BOOL shadow; +/** 关闭时的阴影颜色 */ +@property (nonatomic, strong) UIColor *tintBorderColor; +/** 打开时的阴影颜色 */ +@property (nonatomic, strong) UIColor *onTintBorderColor; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/SwitchView/XPSwitch.m b/YuMi/CustomUI/SwitchView/XPSwitch.m new file mode 100644 index 00000000..f9d1b5e0 --- /dev/null +++ b/YuMi/CustomUI/SwitchView/XPSwitch.m @@ -0,0 +1,372 @@ +// +// YMSwitch.m +// YUMI +// +// Created by YUMI on 2023/2/9. +// + +#import "XPSwitch.h" +#import + +static const CGFloat kAnimateDuration = 0.3f; +static const CGFloat kHorizontalAdjustment = 3.0f; +static const CGFloat kRectShapeCornerRadius = 4.0f; +static const CGFloat kThumbShadowOpacity = 0.3f; +static const CGFloat kThumbShadowRadius = 0.5f; +static const CGFloat kSwitchBorderWidth = 1.75f; + +@interface XPSwitch () + +@property (nonatomic, strong) UIView *onBackgroundView; +@property (nonatomic, strong) UIView *offBackgroundView; +@property (nonatomic, strong) UIView *thumbView; + +@end +@implementation XPSwitch + +@synthesize onBackgroundView = _onBackgroundView; +@synthesize offBackgroundView = _offBackgroundView; +@synthesize thumbView = _thumbView; +@synthesize on = _on; +@synthesize shape = _shape; +@synthesize onTintColor = _onTintColor; +@synthesize tintColor = _tintColor; +@synthesize thumbTintColor = _thumbTintColor; +@synthesize shadow = _shadow; +@synthesize onTintBorderColor = _onTintBorderColor; +@synthesize tintBorderColor = _tintBorderColor; + +#pragma mark - View +- (id)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self setupUI]; + } + return self; +} + +- (void) awakeFromNib { + [super awakeFromNib]; + + [self setupUI]; +} + +- (void)setupUI { + self.shape = CHSwitchShapeOval; + + [self setBackgroundColor:[UIColor clearColor]]; + + // Background view for ON + self.onBackgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; + [self.onBackgroundView setBackgroundColor:[UIColor colorWithRed:(19.0f/255.0f) green:(121.0f/255.0f) blue:(208.0f/255.0f) alpha:1.0f]]; + [self.onBackgroundView.layer setCornerRadius:self.frame.size.height/2]; + [self.onBackgroundView.layer setShouldRasterize:YES]; + [self.onBackgroundView.layer setRasterizationScale:[UIScreen mainScreen].scale]; + [self addSubview:self.onBackgroundView]; + + // Background view for OFF + self.offBackgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; + [self.offBackgroundView setBackgroundColor:[UIColor whiteColor]]; + [self.offBackgroundView.layer setCornerRadius:self.frame.size.height/2]; + [self.offBackgroundView.layer setShouldRasterize:YES]; + [self.offBackgroundView.layer setRasterizationScale:[UIScreen mainScreen].scale]; + [self addSubview:self.offBackgroundView]; + + // Round switch view + self.thumbView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.height-kHorizontalAdjustment, self.frame.size.height-kHorizontalAdjustment)]; + [self.thumbView setBackgroundColor:[UIColor whiteColor]]; + [self.thumbView setUserInteractionEnabled:YES]; + [self.thumbView.layer setCornerRadius:(self.frame.size.height-kHorizontalAdjustment)/2]; + [self.thumbView.layer setShadowOffset:CGSizeMake(0, 1)]; + [self.thumbView.layer setShouldRasterize:YES]; + [self.thumbView.layer setShadowOpacity:kThumbShadowOpacity]; + [self.thumbView.layer setRasterizationScale:[UIScreen mainScreen].scale]; + [self addSubview:self.thumbView]; + self.shadow = YES; + + // Default to OFF position + [self.thumbView setCenter:CGPointMake(self.thumbView.frame.size.width/2, self.frame.size.height/2)]; + + // Handle Thumb Tap Gesture + UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self + action:@selector(handleSwitchTap:)]; + [tapGestureRecognizer setDelegate:self]; + [self.thumbView addGestureRecognizer:tapGestureRecognizer]; + + // Handle Background Tap Gesture + UITapGestureRecognizer *tapBgGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleBgTap:)]; + [tapBgGestureRecognizer setDelegate:self]; + [self addGestureRecognizer:tapBgGestureRecognizer]; + + // Handle Thumb Pan Gesture + UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)]; + [panGestureRecognizer setDelegate:self]; + [self.thumbView addGestureRecognizer:panGestureRecognizer]; + + [self setOn:NO]; +} + +#pragma mark - Accessor +- (BOOL)isOn { + return _on; +} + +- (void)setOn:(BOOL)on { + if (_on != on) + _on = on; + + if (_on) { + [self.onBackgroundView setAlpha:1.0]; + self.offBackgroundView.transform = CGAffineTransformMakeScale(0.0, 0.0); + + self.thumbView.center = CGPointMake(self.onBackgroundView.frame.size.width - (self.thumbView.frame.size.width + kHorizontalAdjustment)/2, self.thumbView.center.y); + } + else { + [self.onBackgroundView setAlpha:0.0]; + self.offBackgroundView.transform = CGAffineTransformMakeScale(1.0, 1.0); + + self.thumbView.center = CGPointMake((self.thumbView.frame.size.width+kHorizontalAdjustment)/2, self.thumbView.center.y); + } +} + +- (void)setOnTintColor:(UIColor *)color +{ + if (_onTintColor != color) + _onTintColor = color; + + [self.onBackgroundView setBackgroundColor:color]; +} + +- (void)setOnTintBorderColor:(UIColor *)color +{ + if (_onTintBorderColor != color) + _onTintBorderColor = color; + + [self.onBackgroundView.layer setBorderColor:color.CGColor]; + + if (color) + [self.onBackgroundView.layer setBorderWidth:kSwitchBorderWidth]; + else + [self.onBackgroundView.layer setBorderWidth:0.0]; +} + +- (void)setTintColor:(UIColor *)color +{ + if (_tintColor != color) + _tintColor = color; + + [self.offBackgroundView setBackgroundColor:color]; +} + +- (void)setTintBorderColor:(UIColor *)color +{ + if (_tintBorderColor != color) + _tintBorderColor = color; + + [self.offBackgroundView.layer setBorderColor:color.CGColor]; + + if (color) + [self.offBackgroundView.layer setBorderWidth:kSwitchBorderWidth]; + else + [self.offBackgroundView.layer setBorderWidth:0.0]; +} + +- (void)setThumbTintColor:(UIColor *)color +{ + if (_thumbTintColor != color) + _thumbTintColor = color; + + [self.thumbView setBackgroundColor:color]; +} + +- (void)setShape:(CHSwitchShape)newShape +{ + if (_shape != newShape) + _shape = newShape; + + if (newShape == CHSwitchShapeOval) + { + [self.onBackgroundView.layer setCornerRadius:self.frame.size.height/2]; + [self.offBackgroundView.layer setCornerRadius:self.frame.size.height/2]; + [self.thumbView.layer setCornerRadius:(self.frame.size.height-kHorizontalAdjustment)/2]; + } + else if (newShape == CHSwitchShapeRectangle) + { + [self.onBackgroundView.layer setCornerRadius:kRectShapeCornerRadius]; + [self.offBackgroundView.layer setCornerRadius:kRectShapeCornerRadius]; + [self.thumbView.layer setCornerRadius:kRectShapeCornerRadius]; + } + else if (newShape == CHSwitchShapeRectangleNoCorner) + { + [self.onBackgroundView.layer setCornerRadius:0]; + [self.offBackgroundView.layer setCornerRadius:0]; + [self.thumbView.layer setCornerRadius:0]; + } +} + +- (void)setShadow:(BOOL)showShadow +{ + if (_shadow != showShadow) + _shadow = showShadow; + + if (showShadow) + { + [self.thumbView.layer setShadowOffset:CGSizeMake(0, 1)]; + [self.thumbView.layer setShadowRadius:kThumbShadowRadius]; + [self.thumbView.layer setShadowOpacity:kThumbShadowOpacity]; + } + else + { + [self.thumbView.layer setShadowRadius:0.0]; + [self.thumbView.layer setShadowOpacity:0.0]; + } +} + +#pragma mark - Animation +- (void)animateToDestination:(CGPoint)centerPoint withDuration:(CGFloat)duration switch:(BOOL)on +{ + [UIView animateWithDuration:duration + delay:0.0f + options:UIViewAnimationOptionCurveEaseOut + animations:^{ + self.thumbView.center = centerPoint; + + if (on) + { + [self.onBackgroundView setAlpha:1.0]; + } + else + { + [self.onBackgroundView setAlpha:0.0]; + } + + } + completion:^(BOOL finished) { + if (finished) + { + [self updateSwitch:on]; + } + + }]; + + [UIView animateWithDuration:duration + delay:0.075f + options:UIViewAnimationOptionCurveEaseOut + animations:^{ + if (on) + { + self.offBackgroundView.transform = CGAffineTransformMakeScale(0.0, 0.0); + } + else + { + self.offBackgroundView.transform = CGAffineTransformMakeScale(1.0, 1.0); + } + + } + completion:^(BOOL finished) { + }]; +} + + + +#pragma mark - Gesture Recognizers +- (void)handlePan:(UIPanGestureRecognizer *)recognizer +{ + CGPoint translation = [recognizer translationInView:self.thumbView]; + + // Check the new center to see if within the boud + CGPoint newCenter = CGPointMake(recognizer.view.center.x + translation.x, + recognizer.view.center.y); + if (newCenter.x < (recognizer.view.frame.size.width+kHorizontalAdjustment)/2 || newCenter.x > self.onBackgroundView.frame.size.width-(recognizer.view.frame.size.width+kHorizontalAdjustment)/2) + { + // New center is Out of bound. Animate to left or right position + if(recognizer.state == UIGestureRecognizerStateBegan || + recognizer.state == UIGestureRecognizerStateChanged) + { + CGPoint velocity = [recognizer velocityInView:self.thumbView]; + + if (velocity.x >= 0) + { + // Animate move to right + [self animateToDestination:CGPointMake(self.onBackgroundView.frame.size.width - (self.thumbView.frame.size.width+kHorizontalAdjustment)/2, recognizer.view.center.y) withDuration:kAnimateDuration switch:YES]; + } + else + { + // Animate move to left + [self animateToDestination:CGPointMake((self.thumbView.frame.size.width+kHorizontalAdjustment)/2, recognizer.view.center.y) withDuration:kAnimateDuration switch:NO]; + } + + } + + return; + } + + // Only allow vertical pan + recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, + recognizer.view.center.y); + [recognizer setTranslation:CGPointMake(0, 0) inView:self.thumbView]; + + CGPoint velocity = [recognizer velocityInView:self.thumbView]; + + if(recognizer.state == UIGestureRecognizerStateEnded) + { + if (velocity.x >= 0) + { + if (recognizer.view.center.x < self.onBackgroundView.frame.size.width - (self.thumbView.frame.size.width+kHorizontalAdjustment)/2) + { + // Animate move to right + [self animateToDestination:CGPointMake(self.onBackgroundView.frame.size.width - (self.thumbView.frame.size.width+kHorizontalAdjustment)/2, recognizer.view.center.y) withDuration:kAnimateDuration switch:YES]; + } + } + else + { + // Animate move to left + [self animateToDestination:CGPointMake((self.thumbView.frame.size.width+kHorizontalAdjustment)/2, recognizer.view.center.y) withDuration:kAnimateDuration switch:NO]; + } + } +} + +- (void)handleSwitchTap:(UIPanGestureRecognizer *)recognizer +{ + if (recognizer.state == UIGestureRecognizerStateEnded) + { + if (self.isOn) + { + // Animate move to left + [self animateToDestination:CGPointMake((self.thumbView.frame.size.width+kHorizontalAdjustment)/2, recognizer.view.center.y) withDuration:kAnimateDuration switch:NO]; + } + else + { + // Animate move to right + [self animateToDestination:CGPointMake(self.onBackgroundView.frame.size.width - (self.thumbView.frame.size.width+kHorizontalAdjustment)/2, recognizer.view.center.y) withDuration:kAnimateDuration switch:YES]; + } + } +} + +- (void)handleBgTap:(UIPanGestureRecognizer *)recognizer +{ + if (recognizer.state == UIGestureRecognizerStateEnded) + { + if (self.isOn) + { + // Animate move to left + [self animateToDestination:CGPointMake((self.thumbView.frame.size.width+kHorizontalAdjustment)/2, self.thumbView.center.y) withDuration:kAnimateDuration switch:NO]; + } + else + { + // Animate move to right + [self animateToDestination:CGPointMake(self.onBackgroundView.frame.size.width - (self.thumbView.frame.size.width+kHorizontalAdjustment)/2, self.thumbView.center.y) withDuration:kAnimateDuration switch:YES]; + } + } +} + +#pragma mark - +- (void)updateSwitch:(BOOL)on +{ + if (_on != on) + _on = on; + + [self sendActionsForControlEvents:UIControlEventValueChanged]; +} + +@end diff --git a/YuMi/CustomUI/SwitchView/YUMISwitch.h b/YuMi/CustomUI/SwitchView/YUMISwitch.h deleted file mode 100644 index 1abd9728..00000000 --- a/YuMi/CustomUI/SwitchView/YUMISwitch.h +++ /dev/null @@ -1,38 +0,0 @@ -// -// YMSwitch.h -// YUMI -// -// Created by YUMI on 2023/2/9. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef enum { - CHSwitchShapeOval, - CHSwitchShapeRectangle, - CHSwitchShapeRectangleNoCorner -} CHSwitchShape; - -@interface YUMISwitch : UIControl - -@property (nonatomic, getter = isOn) BOOL on; - -@property (nonatomic, assign) CHSwitchShape shape; - -@property (nonatomic, strong) UIColor *onTintColor; - -@property (nonatomic, strong) UIColor *tintColor; - -@property (nonatomic, strong) UIColor *thumbTintColor; - -@property (nonatomic, assign) BOOL shadow; - -@property (nonatomic, strong) UIColor *tintBorderPrettify; - -@property (nonatomic, strong) UIColor *onTintBorderPrettify; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/SwitchView/YUMISwitch.m b/YuMi/CustomUI/SwitchView/YUMISwitch.m deleted file mode 100644 index faee62da..00000000 --- a/YuMi/CustomUI/SwitchView/YUMISwitch.m +++ /dev/null @@ -1,372 +0,0 @@ -// -// YMSwitch.m -// YUMI -// -// Created by YUMI on 2023/2/9. -// - -#import "YUMISwitch.h" -#import - -static const CGFloat kAnimateDuration = 0.3f; -static const CGFloat kHorizontalAdjustment = 3.0f; -static const CGFloat kRectShapeCornerRadius = 4.0f; -static const CGFloat kThumbShadowOpacity = 0.3f; -static const CGFloat kThumbShadowRadius = 0.5f; -static const CGFloat kSwitchBorderWidth = 1.75f; - -@interface YUMISwitch () - -@property (nonatomic, strong) UIView *onEncouragegroundRegard; -@property (nonatomic, strong) UIView *offEncouragegroundRegard; -@property (nonatomic, strong) UIView *thumbRegard; - -@end -@implementation YUMISwitch - -@synthesize onEncouragegroundRegard = _onEncouragegroundRegard; -@synthesize offEncouragegroundRegard = _offEncouragegroundRegard; -@synthesize thumbRegard = _thumbRegard; -@synthesize on = _on; -@synthesize shape = _shape; -@synthesize onTintColor = _onTintColor; -@synthesize tintColor = _tintColor; -@synthesize thumbTintColor = _thumbTintColor; -@synthesize shadow = _shadow; -@synthesize onTintBorderPrettify = _onTintBorderPrettify; -@synthesize tintBorderPrettify = _tintBorderPrettify; - -#pragma mark - View -- (id)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self setupUI]; - } - return self; -} - -- (void) awakeFromNib { - [super awakeFromNib]; - - [self setupUI]; -} - -- (void)setupUI { - self.shape = CHSwitchShapeOval; - - [self setBackgroundColor:[UIColor clearColor]]; - - - self.onEncouragegroundRegard = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; - [self.onEncouragegroundRegard setBackgroundColor:[UIColor colorWithRed:(19.0f/255.0f) green:(121.0f/255.0f) blue:(208.0f/255.0f) alpha:1.0f]]; - [self.onEncouragegroundRegard.layer setCornerRadius:self.frame.size.height/2]; - [self.onEncouragegroundRegard.layer setShouldRasterize:YES]; - [self.onEncouragegroundRegard.layer setRasterizationScale:[UIScreen mainScreen].scale]; - [self addSubview:self.onEncouragegroundRegard]; - - - self.offEncouragegroundRegard = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; - [self.offEncouragegroundRegard setBackgroundColor:[UIColor whiteColor]]; - [self.offEncouragegroundRegard.layer setCornerRadius:self.frame.size.height/2]; - [self.offEncouragegroundRegard.layer setShouldRasterize:YES]; - [self.offEncouragegroundRegard.layer setRasterizationScale:[UIScreen mainScreen].scale]; - [self addSubview:self.offEncouragegroundRegard]; - - - self.thumbRegard = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.height-kHorizontalAdjustment, self.frame.size.height-kHorizontalAdjustment)]; - [self.thumbRegard setBackgroundColor:[UIColor whiteColor]]; - [self.thumbRegard setUserInteractionEnabled:YES]; - [self.thumbRegard.layer setCornerRadius:(self.frame.size.height-kHorizontalAdjustment)/2]; - [self.thumbRegard.layer setShadowOffset:CGSizeMake(0, 1)]; - [self.thumbRegard.layer setShouldRasterize:YES]; - [self.thumbRegard.layer setShadowOpacity:kThumbShadowOpacity]; - [self.thumbRegard.layer setRasterizationScale:[UIScreen mainScreen].scale]; - [self addSubview:self.thumbRegard]; - self.shadow = YES; - - - [self.thumbRegard setCenter:CGPointMake(self.thumbRegard.frame.size.width/2, self.frame.size.height/2)]; - - - UITapGestureRecognizer *beatGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self - action:@selector(shankSwopBetowards:)]; - [beatGestureRecognizer setDelegate:self]; - [self.thumbRegard addGestureRecognizer:beatGestureRecognizer]; - - - UITapGestureRecognizer *tapBgGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(shankBackgroundBetowards:)]; - [tapBgGestureRecognizer setDelegate:self]; - [self addGestureRecognizer:tapBgGestureRecognizer]; - - - UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(shankPan:)]; - [panGestureRecognizer setDelegate:self]; - [self.thumbRegard addGestureRecognizer:panGestureRecognizer]; - - [self setOn:NO]; -} - -#pragma mark - Accessor -- (BOOL)isOn { - return _on; -} - -- (void)setOn:(BOOL)on { - if (_on != on) - _on = on; - - if (_on) { - [self.onEncouragegroundRegard setAlpha:1.0]; - self.offEncouragegroundRegard.transform = CGAffineTransformMakeScale(0.0, 0.0); - - self.thumbRegard.center = CGPointMake(self.onEncouragegroundRegard.frame.size.width - (self.thumbRegard.frame.size.width + kHorizontalAdjustment)/2, self.thumbRegard.center.y); - } - else { - [self.onEncouragegroundRegard setAlpha:0.0]; - self.offEncouragegroundRegard.transform = CGAffineTransformMakeScale(1.0, 1.0); - - self.thumbRegard.center = CGPointMake((self.thumbRegard.frame.size.width+kHorizontalAdjustment)/2, self.thumbRegard.center.y); - } -} - -- (void)setOnTintColor:(UIColor *)color -{ - if (_onTintColor != color) - _onTintColor = color; - - [self.onEncouragegroundRegard setBackgroundColor:color]; -} - -- (void)setOnTintBorderPrettify:(UIColor *)color -{ - if (_onTintBorderPrettify != color) - _onTintBorderPrettify = color; - - [self.onEncouragegroundRegard.layer setBorderColor:color.CGColor]; - - if (color) - [self.onEncouragegroundRegard.layer setBorderWidth:kSwitchBorderWidth]; - else - [self.onEncouragegroundRegard.layer setBorderWidth:0.0]; -} - -- (void)setTintColor:(UIColor *)color -{ - if (_tintColor != color) - _tintColor = color; - - [self.offEncouragegroundRegard setBackgroundColor:color]; -} - -- (void)setTintBorderPrettify:(UIColor *)color -{ - if (_tintBorderPrettify != color) - _tintBorderPrettify = color; - - [self.offEncouragegroundRegard.layer setBorderColor:color.CGColor]; - - if (color) - [self.offEncouragegroundRegard.layer setBorderWidth:kSwitchBorderWidth]; - else - [self.offEncouragegroundRegard.layer setBorderWidth:0.0]; -} - -- (void)setThumbTintColor:(UIColor *)color -{ - if (_thumbTintColor != color) - _thumbTintColor = color; - - [self.thumbRegard setBackgroundColor:color]; -} - -- (void)setShape:(CHSwitchShape)newShape -{ - if (_shape != newShape) - _shape = newShape; - - if (newShape == CHSwitchShapeOval) - { - [self.onEncouragegroundRegard.layer setCornerRadius:self.frame.size.height/2]; - [self.offEncouragegroundRegard.layer setCornerRadius:self.frame.size.height/2]; - [self.thumbRegard.layer setCornerRadius:(self.frame.size.height-kHorizontalAdjustment)/2]; - } - else if (newShape == CHSwitchShapeRectangle) - { - [self.onEncouragegroundRegard.layer setCornerRadius:kRectShapeCornerRadius]; - [self.offEncouragegroundRegard.layer setCornerRadius:kRectShapeCornerRadius]; - [self.thumbRegard.layer setCornerRadius:kRectShapeCornerRadius]; - } - else if (newShape == CHSwitchShapeRectangleNoCorner) - { - [self.onEncouragegroundRegard.layer setCornerRadius:0]; - [self.offEncouragegroundRegard.layer setCornerRadius:0]; - [self.thumbRegard.layer setCornerRadius:0]; - } -} - -- (void)setShadow:(BOOL)showShadow -{ - if (_shadow != showShadow) - _shadow = showShadow; - - if (showShadow) - { - [self.thumbRegard.layer setShadowOffset:CGSizeMake(0, 1)]; - [self.thumbRegard.layer setShadowRadius:kThumbShadowRadius]; - [self.thumbRegard.layer setShadowOpacity:kThumbShadowOpacity]; - } - else - { - [self.thumbRegard.layer setShadowRadius:0.0]; - [self.thumbRegard.layer setShadowOpacity:0.0]; - } -} - -#pragma mark - Animation -- (void)animtowardseToSequenctintowardsion:(CGPoint)centerPoint withDurtowardsion:(CGFloat)duration switch:(BOOL)on -{ - [UIView animateWithDuration:duration - delay:0.0f - options:UIViewAnimationOptionCurveEaseOut - animations:^{ - self.thumbRegard.center = centerPoint; - - if (on) - { - [self.onEncouragegroundRegard setAlpha:1.0]; - } - else - { - [self.onEncouragegroundRegard setAlpha:0.0]; - } - - } - completion:^(BOOL finished) { - if (finished) - { - [self refurbishSwop:on]; - } - - }]; - - [UIView animateWithDuration:duration - delay:0.075f - options:UIViewAnimationOptionCurveEaseOut - animations:^{ - if (on) - { - self.offEncouragegroundRegard.transform = CGAffineTransformMakeScale(0.0, 0.0); - } - else - { - self.offEncouragegroundRegard.transform = CGAffineTransformMakeScale(1.0, 1.0); - } - - } - completion:^(BOOL finished) { - }]; -} - - - -#pragma mark - Gesture Recognizers -- (void)shankPan:(UIPanGestureRecognizer *)recognizer -{ - CGPoint translation = [recognizer translationInView:self.thumbRegard]; - - - CGPoint newCenter = CGPointMake(recognizer.view.center.x + translation.x, - recognizer.view.center.y); - if (newCenter.x < (recognizer.view.frame.size.width+kHorizontalAdjustment)/2 || newCenter.x > self.onEncouragegroundRegard.frame.size.width-(recognizer.view.frame.size.width+kHorizontalAdjustment)/2) - { - - if(recognizer.state == UIGestureRecognizerStateBegan || - recognizer.state == UIGestureRecognizerStateChanged) - { - CGPoint velocity = [recognizer velocityInView:self.thumbRegard]; - - if (velocity.x >= 0) - { - - [self animtowardseToSequenctintowardsion:CGPointMake(self.onEncouragegroundRegard.frame.size.width - (self.thumbRegard.frame.size.width+kHorizontalAdjustment)/2, recognizer.view.center.y) withDurtowardsion:kAnimateDuration switch:YES]; - } - else - { - - [self animtowardseToSequenctintowardsion:CGPointMake((self.thumbRegard.frame.size.width+kHorizontalAdjustment)/2, recognizer.view.center.y) withDurtowardsion:kAnimateDuration switch:NO]; - } - - } - - return; - } - - - recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, - recognizer.view.center.y); - [recognizer setTranslation:CGPointMake(0, 0) inView:self.thumbRegard]; - - CGPoint velocity = [recognizer velocityInView:self.thumbRegard]; - - if(recognizer.state == UIGestureRecognizerStateEnded) - { - if (velocity.x >= 0) - { - if (recognizer.view.center.x < self.onEncouragegroundRegard.frame.size.width - (self.thumbRegard.frame.size.width+kHorizontalAdjustment)/2) - { - - [self animtowardseToSequenctintowardsion:CGPointMake(self.onEncouragegroundRegard.frame.size.width - (self.thumbRegard.frame.size.width+kHorizontalAdjustment)/2, recognizer.view.center.y) withDurtowardsion:kAnimateDuration switch:YES]; - } - } - else - { - - [self animtowardseToSequenctintowardsion:CGPointMake((self.thumbRegard.frame.size.width+kHorizontalAdjustment)/2, recognizer.view.center.y) withDurtowardsion:kAnimateDuration switch:NO]; - } - } -} - -- (void)shankSwopBetowards:(UIPanGestureRecognizer *)recognizer -{ - if (recognizer.state == UIGestureRecognizerStateEnded) - { - if (self.isOn) - { - - [self animtowardseToSequenctintowardsion:CGPointMake((self.thumbRegard.frame.size.width+kHorizontalAdjustment)/2, recognizer.view.center.y) withDurtowardsion:kAnimateDuration switch:NO]; - } - else - { - - [self animtowardseToSequenctintowardsion:CGPointMake(self.onEncouragegroundRegard.frame.size.width - (self.thumbRegard.frame.size.width+kHorizontalAdjustment)/2, recognizer.view.center.y) withDurtowardsion:kAnimateDuration switch:YES]; - } - } -} - -- (void)shankBackgroundBetowards:(UIPanGestureRecognizer *)recognizer -{ - if (recognizer.state == UIGestureRecognizerStateEnded) - { - if (self.isOn) - { - - [self animtowardseToSequenctintowardsion:CGPointMake((self.thumbRegard.frame.size.width+kHorizontalAdjustment)/2, self.thumbRegard.center.y) withDurtowardsion:kAnimateDuration switch:NO]; - } - else - { - - [self animtowardseToSequenctintowardsion:CGPointMake(self.onEncouragegroundRegard.frame.size.width - (self.thumbRegard.frame.size.width+kHorizontalAdjustment)/2, self.thumbRegard.center.y) withDurtowardsion:kAnimateDuration switch:YES]; - } - } -} - -#pragma mark - -- (void)refurbishSwop:(BOOL)on -{ - if (_on != on) - _on = on; - - [self sendActionsForControlEvents:UIControlEventValueChanged]; -} - -@end diff --git a/YuMi/CustomUI/TTPopup/Config/TTActionSheetConfig.h b/YuMi/CustomUI/TTPopup/Config/TTActionSheetConfig.h new file mode 100644 index 00000000..3e40e742 --- /dev/null +++ b/YuMi/CustomUI/TTPopup/Config/TTActionSheetConfig.h @@ -0,0 +1,57 @@ +// +// TTActionSheetConfig.h +// AFNetworking +// +// Created by lee on 2019/5/23. +// action sheet item 配置 + +#import + +typedef enum : NSUInteger { + TTItemSelectNormal, + TTItemSelectHighLight, +} TTItemSelectType; + + +NS_ASSUME_NONNULL_BEGIN +typedef void(^TTActionSheetClickAction)(void); + +@interface TTActionSheetConfig : NSObject + +/** 标题 */ +@property (nonatomic, copy) NSString *title; + +/** + 标题颜色 + */ +@property (nonatomic, strong) UIColor *titleColor; + +/** 是否选中 */ +@property (nonatomic, assign) TTItemSelectType type; + +/** 点击事件 */ +@property (nonatomic, copy) TTActionSheetClickAction clickAction; + +/** + 构建 actionSheet item 实例 + + @param title 标题 + @param clickAction 点击事件 + @return item 实例 + */ ++ (TTActionSheetConfig *)normalTitle:(NSString *)title + clickAction:(TTActionSheetClickAction)clickAction; ++ (TTActionSheetConfig *)normalTitle:(NSString *)title + selectColorType:(TTItemSelectType)type clickAction:(TTActionSheetClickAction)clickAction; + + +/// 构建实例 +/// @param title 标题 +/// @param textColor 颜色 +/// @param handler 事件处理 ++ (TTActionSheetConfig *)actionWithTitle:(NSString *)title + color:(UIColor *)textColor + handler:(TTActionSheetClickAction)handler; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/TTPopup/Config/TTActionSheetConfig.m b/YuMi/CustomUI/TTPopup/Config/TTActionSheetConfig.m new file mode 100644 index 00000000..52cab29a --- /dev/null +++ b/YuMi/CustomUI/TTPopup/Config/TTActionSheetConfig.m @@ -0,0 +1,48 @@ +// +// TTActionSheetConfig.m +// AFNetworking +// +// Created by lee on 2019/5/23. +// + +#import "TTActionSheetConfig.h" +#import "DJDKMIMOMColor.h" + +@implementation TTActionSheetConfig + +/** + 构建 actionSheet item 实例 + + @param title 标题 + @param clickAction 点击事件 + @return item 实例 + */ ++ (TTActionSheetConfig *)normalTitle:(NSString *)title clickAction:(TTActionSheetClickAction)clickAction { + + return [self normalTitle:title selectColorType:TTItemSelectNormal clickAction:clickAction]; +} + ++ (TTActionSheetConfig *)normalTitle:(NSString *)title selectColorType:(TTItemSelectType)type clickAction:(TTActionSheetClickAction)clickAction { + + UIColor *color = type == TTItemSelectHighLight ? [DJDKMIMOMColor alertTitleColor] : [DJDKMIMOMColor alertTitleColor]; + + TTActionSheetConfig *config = [self actionWithTitle:title color:color handler:clickAction]; + config.type = type; + + return config; +} + ++ (TTActionSheetConfig *)actionWithTitle:(NSString *)title + color:(UIColor *)textColor + handler:(TTActionSheetClickAction)handler { + + TTActionSheetConfig *config = [[TTActionSheetConfig alloc] init]; + config.type = TTItemSelectNormal; + config.title = title; + config.titleColor = textColor; + config.clickAction = handler; + + return config; +} + +@end diff --git a/YuMi/CustomUI/TTPopup/Config/TTAlertButtonConfig.h b/YuMi/CustomUI/TTPopup/Config/TTAlertButtonConfig.h new file mode 100644 index 00000000..f886cc46 --- /dev/null +++ b/YuMi/CustomUI/TTPopup/Config/TTAlertButtonConfig.h @@ -0,0 +1,30 @@ +// +// TTAlertButtonConfig.h +// YM_TTChatViewKit +// +// Created by lee on 2019/5/21. +// Copyright © 2023 YUMI. All rights reserved. +// alert 按钮配置 + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface TTAlertButtonConfig : NSObject +/** 按钮标题 */ +@property (nonatomic, copy) NSString *title; +/** 按钮字体 */ +@property (nonatomic, strong) UIFont *font; +/** 按钮字体颜色 */ +@property (nonatomic, strong) UIColor *titleColor; +/** 背景色 */ +@property (nonatomic, strong) UIColor *backgroundColor; +/** 背景图 */ +@property (nonatomic, strong) UIImage *backgroundImage; +/** 圆角 */ +@property (nonatomic, assign) CGFloat cornerRadius; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/TTPopup/Config/TTAlertButtonConfig.m b/YuMi/CustomUI/TTPopup/Config/TTAlertButtonConfig.m new file mode 100644 index 00000000..4c851227 --- /dev/null +++ b/YuMi/CustomUI/TTPopup/Config/TTAlertButtonConfig.m @@ -0,0 +1,13 @@ +// +// TTAlertButtonConfig.m +// YM_TTChatViewKit +// +// Created by lee on 2019/5/21. +// Copyright © 2023 YUMI. All rights reserved. +// + +#import "TTAlertButtonConfig.h" + +@implementation TTAlertButtonConfig + +@end diff --git a/YuMi/CustomUI/TTPopup/Config/TTAlertConfig.h b/YuMi/CustomUI/TTPopup/Config/TTAlertConfig.h new file mode 100644 index 00000000..fb27ea48 --- /dev/null +++ b/YuMi/CustomUI/TTPopup/Config/TTAlertConfig.h @@ -0,0 +1,85 @@ +// +// TTAlertConfig.h +// YM_TTChatViewKit +// +// Created by lee on 2019/5/20. +// Copyright © 2023 YUMI. All rights reserved. +// alert 配置 + +#import +#import +#import "TTAlertButtonConfig.h" +#import "TTAlertMessageAttributedConfig.h" + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSUInteger, TTAlertActionStyle) { + TTAlertActionConfirmStyle = 0, // 只有确定按钮 + TTAlertActionCancelStyle = 1, // 只有取消按钮 + TTAlertActionBothStyle = 2, // 全部按钮 +}; + + +@interface TTAlertConfig : NSObject +// 按钮显示风格 +@property (nonatomic, assign) TTAlertActionStyle actionStyle; +// 容器背景设置 +@property (nonatomic, strong) UIColor *backgroundColor; + +// 标题设置 +@property (nonatomic, copy) NSString *title; +@property (nonatomic, strong) UIFont *titleFont; +@property (nonatomic, strong) UIColor *titleColor; + +// 内容设置 +@property (nonatomic, copy) NSString *message; +@property (nonatomic, strong) UIFont *messageFont; +@property (nonatomic, strong) UIColor *messageColor; +/** 内容的行间距,默认不设置,当值为 0 或负数时无效 */ +@property (nonatomic, assign) CGFloat messageLineSpacing; +/** 内容富文本配置 */ +@property (nonatomic, strong) NSArray *messageAttributedConfig; +///配置内容的富文本 +@property (nonatomic,strong) NSMutableAttributedString *messageAttributed; + +// 取消按钮配置 +@property (nonatomic, strong) TTAlertButtonConfig *cancelButtonConfig; + +// 确定按钮配置 +@property (nonatomic, strong) TTAlertButtonConfig *confirmButtonConfig; + +/** + 背景蒙层的透明度 + @Description 默认是 000000 黑色 0.3 alpha + */ +@property (nonatomic, assign) CGFloat maskBackgroundAlpha; + +// 圆角 +@property (nonatomic, assign) CGFloat cornerRadius; + +// 点击蒙层是否消失,默认:YES +@property (nonatomic, assign) BOOL shouldDismissOnBackgroundTouch; + +/** + 点击‘确定’‘取消’按钮时禁止弹窗自动消失,默认:NO + + @discussion 若值为 YES,需要主动调用 [TTPopup dismiss] 消除弹窗 + */ +@property (nonatomic, assign) BOOL disableAutoDismissWhenClickButton; + +/** + 重复弹窗过滤,默认:NO + + @discussion 设置过滤时,队列中将不会出现相同过滤标识的弹窗 + 过滤标识通过 # 设置 + */ +@property (nonatomic, assign) BOOL shouldFilterPopup; + +/** + 过滤标识,默认:nil + */ +@property (nonatomic, copy) NSString *filterIdentifier; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/TTPopup/Config/TTAlertConfig.m b/YuMi/CustomUI/TTPopup/Config/TTAlertConfig.m new file mode 100644 index 00000000..77ef0d06 --- /dev/null +++ b/YuMi/CustomUI/TTPopup/Config/TTAlertConfig.m @@ -0,0 +1,75 @@ +// +// TTAlertConfig.m +// YM_TTChatViewKit +// +// Created by lee on 2019/5/20. +// Copyright © 2023 YUMI. All rights reserved. +// + +#import "TTAlertConfig.h" +#import "UIImage+Utils.h" +#import "DJDKMIMOMColor.h" + +static CGFloat kAlertTitleFont = 18.f; +static CGFloat kAlertButtonFont = 15.f; +static CGFloat kAlertMessageFont = 15.f; +static CGFloat kAlertCornerRadius = 12.f; +static CGFloat kAlertBackgroundColorAlpha = 0.3; +static CGFloat kAlertMessageFontLineSpace = -1; +static CGFloat kAlertButtonCornerRadius = 8.f; + +@implementation TTAlertConfig + +- (instancetype)init { + self = [super init]; + if (self) { + + _backgroundColor = [DJDKMIMOMColor alertBackgroundColor]; + + //背景颜色 + kAlertTitleFont = 16.f; + kAlertCornerRadius = 14.f; + kAlertButtonCornerRadius = 19.f; + + _actionStyle = TTAlertActionBothStyle; + + // title + _title = @"";// 标题 + _titleFont = [UIFont fontWithName:@"PingFangSC-Medium" size:kAlertTitleFont];// 字体 + _titleColor = [DJDKMIMOMColor alertTitleColor];// 颜色 + + // message + _message = @""; + _messageFont = [UIFont systemFontOfSize:kAlertMessageFont];// 内容 + _messageColor = [DJDKMIMOMColor alertMessageColor];// 颜色 + _messageLineSpacing = kAlertMessageFontLineSpace;// 字体行间距 + _messageAttributedConfig = @[];// 自定义富文本样式 + + // cancel button + _cancelButtonConfig = [[TTAlertButtonConfig alloc] init]; + _cancelButtonConfig.title = @"取消";// 取消按钮 + _cancelButtonConfig.font = [UIFont systemFontOfSize:kAlertButtonFont];// 按钮字体 + _cancelButtonConfig.titleColor = [DJDKMIMOMColor cancelButtonTextColor];// 字体颜色 + _cancelButtonConfig.backgroundImage = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor cancelButtonGradientStartColor], [DJDKMIMOMColor cancelButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)]; + _cancelButtonConfig.cornerRadius = kAlertButtonCornerRadius;// 按钮背景图 + + // confirm button + _confirmButtonConfig = [[TTAlertButtonConfig alloc] init]; + _confirmButtonConfig.title = YMLocalizedString(@"TTAlertConfig0"); + _confirmButtonConfig.font = [UIFont systemFontOfSize:kAlertButtonFont]; + _confirmButtonConfig.titleColor = [DJDKMIMOMColor confirmButtonTextColor]; + _confirmButtonConfig.backgroundImage = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)]; + _confirmButtonConfig.cornerRadius = kAlertButtonCornerRadius; + + _cornerRadius = kAlertCornerRadius;// 默认圆角 + _shouldDismissOnBackgroundTouch = YES;// 点击蒙层是否消失 + + // mask default 0.3 black + _maskBackgroundAlpha = kAlertBackgroundColorAlpha; // alert 背景色 + _disableAutoDismissWhenClickButton = NO; + } + return self; +} + +@end + diff --git a/YuMi/CustomUI/TTPopup/Config/TTAlertMessageAttributedConfig.h b/YuMi/CustomUI/TTPopup/Config/TTAlertMessageAttributedConfig.h new file mode 100644 index 00000000..374c57d9 --- /dev/null +++ b/YuMi/CustomUI/TTPopup/Config/TTAlertMessageAttributedConfig.h @@ -0,0 +1,34 @@ +// +// TTAlertContentAttributedConfig.h +// YM_TTChatViewKit +// +// Created by lee on 2019/5/21. +// Copyright © 2023 YUMI. All rights reserved. +// alert 提示内容富文本配置 + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface TTAlertMessageAttributedConfig : NSObject + +/** 富文本字段需要特殊显示的文本 */ +@property (nonatomic, copy) NSString *text; + +/** 颜色 */ +@property (nonatomic, strong) UIColor *color; + +/** 字体 */ +@property (nonatomic, strong) UIFont *font; + +/** + 目标文本指定位置,一旦设置则无视 text 的值 + + @discussion 内容文本中出现相同的目标文本时,可通过设置 range 精确指定位置 + */ +@property (nonatomic, assign) NSRange range; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/TTPopup/Config/TTAlertMessageAttributedConfig.m b/YuMi/CustomUI/TTPopup/Config/TTAlertMessageAttributedConfig.m new file mode 100644 index 00000000..91a2a92c --- /dev/null +++ b/YuMi/CustomUI/TTPopup/Config/TTAlertMessageAttributedConfig.m @@ -0,0 +1,13 @@ +// +// TTAlertContentAttributedConfig.m +// YM_TTChatViewKit +// +// Created by lee on 2019/5/21. +// Copyright © 2023 YUMI. All rights reserved. +// + +#import "TTAlertMessageAttributedConfig.h" + +@implementation TTAlertMessageAttributedConfig + +@end diff --git a/YuMi/CustomUI/TTPopup/Header/TTPopupConstants.h b/YuMi/CustomUI/TTPopup/Header/TTPopupConstants.h new file mode 100644 index 00000000..01fcb356 --- /dev/null +++ b/YuMi/CustomUI/TTPopup/Header/TTPopupConstants.h @@ -0,0 +1,38 @@ +// +// TTPopupConstants.h +// YM_TTChatViewKit +// +// Created by lvjunhang on 2019/5/21. +// Copyright © 2023 YUMI. All rights reserved. +// + +#import + +/** + Popup 组件通用回调 + */ +typedef void(^TTPopupCompletionHandler)(void); + +/** + 弹窗类型 + + - TTPopupStyleAlert: Alert + - TTPopupStyleActionSheet: ActionSheet + */ +typedef NS_ENUM(NSUInteger, TTPopupStyle) { + TTPopupStyleAlert = 0, + TTPopupStyleActionSheet +}; + +/** + 弹窗优先级 + + - TTPopupPriorityNormal: 普通 + - TTPopupPriorityHigh: 高 + - TTPopupPriorityRequired: 必须 + */ +typedef NS_ENUM(NSUInteger, TTPopupPriority) { + TTPopupPriorityNormal = 0, + TTPopupPriorityHigh, + TTPopupPriorityRequired +}; diff --git a/YuMi/CustomUI/TTPopup/Manager/TTPopupManagerService.h b/YuMi/CustomUI/TTPopup/Manager/TTPopupManagerService.h new file mode 100644 index 00000000..3d4718af --- /dev/null +++ b/YuMi/CustomUI/TTPopup/Manager/TTPopupManagerService.h @@ -0,0 +1,24 @@ +// +// TTPopupManagerService.h +// YM_TTChatViewKit +// +// Created by lvjunhang on 2019/5/21. +// Copyright © 2023 YUMI. All rights reserved. +// + +#import +#import "TTPopupManagerServiceProtocol.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface TTPopupManagerService : NSObject +/** + 当前显示的弹窗服务 + */ +@property (nonatomic, strong) id currentPopupService; + ++ (instancetype)sharedInstance; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/TTPopup/Manager/TTPopupManagerService.m b/YuMi/CustomUI/TTPopup/Manager/TTPopupManagerService.m new file mode 100644 index 00000000..c6d8267e --- /dev/null +++ b/YuMi/CustomUI/TTPopup/Manager/TTPopupManagerService.m @@ -0,0 +1,200 @@ +// +// TTPopupManagerService.m +// YM_TTChatViewKit +// +// Created by lvjunhang on 2019/5/21. +// Copyright © 2023 YUMI. All rights reserved. +// + +#import "TTPopupManagerService.h" + +#import + +@interface TTPopupManagerService () + +@property (nonatomic, strong) NSMutableArray< id > *queue; +/** + 当前是否正在显示状态 + */ +@property (nonatomic, assign, getter=isShowingPopup) BOOL showingPopup; + +@end + +@implementation TTPopupManagerService + +#pragma mark - Life Cycle ++ (instancetype)sharedInstance { + static TTPopupManagerService *instance = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + instance = [[self alloc] init]; + }); + + return instance; +} + +- (instancetype)init { + if (self = [super init]) { + _queue = [NSMutableArray array]; + } + return self; +} + +#pragma mark - TTPopupManagerServiceProtocol +- (void)addPopupService:(id)service { + if (![service conformsToProtocol:@protocol(TTPopupServiceProtocol)]) { + return; + } + if ([_queue containsObject:service]) { + return; + } + NSInteger insertPosition = [self insertPositionForPopupService:service]; + if (insertPosition == NSNotFound) { + return; + } + [_queue insertObject:service atIndex:insertPosition]; + //当前没有弹窗显示且队列只有一个元素时,显示弹窗 + if (_currentPopupService == nil && _queue.count == 1) { + [self showPopup]; + } +} + +- (void)removePopupService { + + //防止当弹窗还未显示完成,在显示过程中频繁调用 dismiss + //使得 _currentPopupService 被清空,导致弹窗无法消失,从而假死现象 + if (!self.isShowingPopup) { + return; + } + + if (_currentPopupService == nil) { + return; + } + + if (_queue.count > 0) { + [_queue removeObjectAtIndex:0]; + } + + [FFPopup dismissPopupForView:_currentPopupService.contentView animated:YES]; + _currentPopupService = nil; +} + +/** + 点击蒙层时移除队列中的数据源 + + @discussion 注意无需调用 dismissPopupForView + */ +- (void)removeSourceWhenTouchMaskView { + if (_currentPopupService == nil) { + return; + } + if (_queue.count > 0) { + [_queue removeObjectAtIndex:0]; + } + _currentPopupService = nil; +} + +#pragma mark - Private Methods +/** + 显示弹窗 + */ +- (void)showPopup { + if (self.isShowingPopup) { + return; + } + if (_currentPopupService) { + return; + } + if (_queue.count == 0) { + return; + } + id popupService = _queue.firstObject; + if (![popupService conformsToProtocol:@protocol(TTPopupServiceProtocol)]) { + return; + } + _currentPopupService = popupService; + FFPopupHorizontalLayout horizontalLayout = FFPopupHorizontalLayout_Center; + FFPopupVerticalLayout verticalLayout = FFPopupVerticalLayout_Center; + FFPopupShowType showType = (FFPopupShowType)popupService.showType; + FFPopupDismissType dismissType = FFPopupDismissType_GrowOut; + if (popupService.style == TTPopupStyleActionSheet) { + verticalLayout = FFPopupVerticalLayout_Bottom; + showType = FFPopupShowType_SlideInFromBottom; + dismissType = FFPopupDismissType_SlideOutToBottom; + } + FFPopup *popup = [FFPopup popupWithContentView:popupService.contentView]; + popup.showType = showType; + popup.dismissType = dismissType; + popup.maskType = FFPopupMaskType_Dimmed; + popup.dimmedMaskAlpha = popupService.maskBackgroundAlpha; + popup.shouldDismissOnBackgroundTouch = popupService.shouldDismissOnBackgroundTouch; + + [popup showWithLayout:FFPopupLayoutMake(horizontalLayout, verticalLayout) duration:0.0]; + __weak typeof(self) weakSelf = self; + // 不管是调用’dismissPopupForView:animated:‘ 还是‘点击蒙层消除’,最终都会走到这里 + // 适合在此展示队列中下一个弹窗 + // 通过 _currentPopupService 是否为空可以判断是哪种消除方式 + popup.didFinishDismissingBlock = ^{ + __strong typeof(weakSelf) strongSelf = weakSelf; + BOOL isDismissOnBackgroundTouch = strongSelf.currentPopupService != nil; + if (isDismissOnBackgroundTouch) { + // ‘点击蒙层消除’时,在展现下一个弹窗前移除数据源 + [self removeSourceWhenTouchMaskView]; + } + if (popupService.didFinishDismissHandler) { + popupService.didFinishDismissHandler(isDismissOnBackgroundTouch); + } + // 弹窗消除结束,更新状态 + strongSelf.showingPopup = NO; + // 显示下一个弹窗 + [strongSelf showPopup]; + }; + + popup.didFinishShowingBlock = ^{ + // 开始弹窗,更新状态 + self.showingPopup = YES; + if (popupService.didFinishShowingHandler) { + popupService.didFinishShowingHandler(); + } + }; +} + +/** + 弹窗将要插入队列的位置 + @param service 弹窗服务实例 + @return 队列的位置 + */ +- (NSInteger)insertPositionForPopupService:(id)service { + __block NSInteger result = NSNotFound; + if (service == nil) { + return result; + } + if (_queue.count == 0) { + return 0; + } + // 设置重复弹窗过滤 + if (service.shouldFilterPopup && service.filterIdentifier.length > 0) { + BOOL filterFlag = NO; + for (id serv in _queue) { + if ([serv.filterIdentifier isEqualToString:service.filterIdentifier]) { + filterFlag = YES; + break; + } + } + if (filterFlag) { + return result; + } + } + [_queue enumerateObjectsUsingBlock:^(id _Nonnull model, NSUInteger idx, BOOL * _Nonnull stop) { + // 找到队中比当前弹窗优先级低的位置 + if (service.priority > model.priority) { + result = idx; + *stop = YES; + } + }]; + // 如果没有合适的位置,则将新的弹窗放在队尾 + result = MIN(result, _queue.count); + return result; +} + +@end diff --git a/YuMi/CustomUI/TTPopup/Manager/TTPopupManagerServiceProtocol.h b/YuMi/CustomUI/TTPopup/Manager/TTPopupManagerServiceProtocol.h new file mode 100644 index 00000000..c5f4c063 --- /dev/null +++ b/YuMi/CustomUI/TTPopup/Manager/TTPopupManagerServiceProtocol.h @@ -0,0 +1,25 @@ +// +// TTPopupManagerServiceProtocol.h +// YM_TTChatViewKit +// +// Created by lvjunhang on 2019/5/21. +// Copyright © 2023 YUMI. All rights reserved. +// + +#import "TTPopupServiceProtocol.h" + +@protocol TTPopupManagerServiceProtocol + +/** + 添加一个弹窗 + + @param service 服从弹窗服务的实例 + */ +- (void)addPopupService:(id)service; + +/** + 移除一个弹窗 + */ +- (void)removePopupService; + +@end diff --git a/YuMi/CustomUI/TTPopup/Service/TTPopupService.h b/YuMi/CustomUI/TTPopup/Service/TTPopupService.h new file mode 100644 index 00000000..45328658 --- /dev/null +++ b/YuMi/CustomUI/TTPopup/Service/TTPopupService.h @@ -0,0 +1,22 @@ +// +// TTPopupService.h +// YM_TTChatViewKit +// +// Created by lvjunhang on 2019/5/21. +// Copyright © 2023 YUMI. All rights reserved. +// + +#import +#import "TTPopupServiceProtocol.h" + +// TTPopupConfig 是 TTPopupService 的别称 +// 具体信息见 TTPopupService +#define TTPopupConfig TTPopupService + +NS_ASSUME_NONNULL_BEGIN + +@interface TTPopupService : NSObject + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/TTPopup/Service/TTPopupService.m b/YuMi/CustomUI/TTPopup/Service/TTPopupService.m new file mode 100644 index 00000000..82db3c14 --- /dev/null +++ b/YuMi/CustomUI/TTPopup/Service/TTPopupService.m @@ -0,0 +1,36 @@ +// +// TTPopupService.m +// YM_TTChatViewKit +// +// Created by lvjunhang on 2019/5/21. +// Copyright © 2023 YUMI. All rights reserved. +// + +#import "TTPopupService.h" + +@implementation TTPopupService + +@synthesize style = _style; +@synthesize priority = _priority; +@synthesize contentView = _contentView; +@synthesize maskBackgroundAlpha = _maskBackgroundAlpha; +@synthesize shouldDismissOnBackgroundTouch = _shouldDismissOnBackgroundTouch; +@synthesize didFinishDismissHandler = _didFinishDismissHandler; +@synthesize didFinishShowingHandler = _didFinishShowingHandler; +@synthesize shouldFilterPopup = _shouldFilterPopup; +@synthesize filterIdentifier = _filterIdentifier; +@synthesize showType = _showType; +- (instancetype)init { + self = [super init]; + if (self) { + _style = TTPopupStyleAlert; + _priority = TTPopupPriorityNormal; + _maskBackgroundAlpha = 0.5; + _shouldDismissOnBackgroundTouch = YES; + _shouldFilterPopup = NO; + _showType = TTPopupShowTypeDefault; + } + return self; +} + +@end diff --git a/YuMi/CustomUI/TTPopup/Service/TTPopupServiceProtocol.h b/YuMi/CustomUI/TTPopup/Service/TTPopupServiceProtocol.h new file mode 100644 index 00000000..c19a37d4 --- /dev/null +++ b/YuMi/CustomUI/TTPopup/Service/TTPopupServiceProtocol.h @@ -0,0 +1,78 @@ +// +// TTPopupServiceProtocol.h +// YM_TTChatViewKit +// +// Created by lvjunhang on 2019/5/21. +// Copyright © 2023 YUMI. All rights reserved. +// + +#import "TTPopupConstants.h" + +typedef NS_ENUM(NSUInteger, TTPopupShowType) { + TTPopupShowType_FadeIn = 1, + TTPopupShowTypeDefault = 8, +}; + +@class UIView; + +@protocol TTPopupServiceProtocol + +/** + 弹窗样式,默认:TTPopupStyleAlert + */ +@property (nonatomic, assign) TTPopupStyle style; + +/** + 弹窗优先级权重,默认:TTPopupPriorityNormal + + @discussion 权重越高在弹窗队列的优先级越高,即优先弹出;相同权重按先来后到原则 + */ +@property (nonatomic, assign) TTPopupPriority priority; + +/** + 自定义视图内容,默认:nil + + @discussion 如果未配置,或 contentView 未继承自 UIView 及其子类,将忽略该弹窗 + */ +@property (nonatomic, strong) UIView *contentView; + +/** + 背景蒙层透明度,默认:0x000000 0.3 alpha + + @discussion 由于第三方原因,暂不支持蒙层颜色修改 + */ +@property (nonatomic, assign) CGFloat maskBackgroundAlpha; + +/** + 点击蒙层是否消除弹窗,默认:YES + */ +@property (nonatomic, assign) BOOL shouldDismissOnBackgroundTouch; + +/** + 弹窗消失回调,isDismissOnBackgroundTouch 区分是否点击蒙层触发 + */ +@property (nonatomic, copy) void (^didFinishDismissHandler)(BOOL isDismissOnBackgroundTouch); + +/** + 弹窗显示成功回调 + */ +@property (nonatomic, copy) void (^didFinishShowingHandler)(void); + +/** + 重复弹窗过滤,默认:NO + + @discussion 设置过滤时,队列中将不会出现相同过滤标识的弹窗 + 过滤标识通过 # 设置 + */ +@property (nonatomic, assign) BOOL shouldFilterPopup; + +/** + 过滤标识,默认:nil + */ +@property (nonatomic, copy) NSString *filterIdentifier; + +/** + 显示动画类型, 默认是 default + */ +@property (nonatomic, assign) TTPopupShowType showType; +@end diff --git a/YuMi/CustomUI/TTPopup/TTPopup.h b/YuMi/CustomUI/TTPopup/TTPopup.h new file mode 100644 index 00000000..bdee4c78 --- /dev/null +++ b/YuMi/CustomUI/TTPopup/TTPopup.h @@ -0,0 +1,126 @@ +// +// TTPopup.h +// YM_TTChatViewKit +// +// Created by lvjunhang on 2019/5/22. +// Copyright © 2023 YUMI. All rights reserved. +// 弹窗工具类 + +#import +#import "TTPopupConstants.h" +#import "TTAlertConfig.h" +#import "TTActionSheetConfig.h" +#import "TTPopupService.h" + +NS_ASSUME_NONNULL_BEGIN + +@class UIView; + +@interface TTPopup : NSObject + +#pragma mark Alert +/** + 显示 alert 弹窗 + + @discussion 显示四个内容:默认标题‘提示’,提示内容,取消按钮,确认按钮 + + @param message 提示内容,不能为空(⊙o⊙)哦 + @param confirmHandler 确认操作 + @param cancelHandler 取消操作 + */ ++ (void)alertWithMessage:(NSString *)message + confirmHandler:(TTPopupCompletionHandler)confirmHandler + cancelHandler:(TTPopupCompletionHandler)cancelHandler; + + +/** +显示 alert 弹窗 + +@discussion 显示四个内容:默认标题‘提示’,提示内容,取消按钮,确认按钮 + +@param config 完善的视图配置,为您变态的需求保驾护航 +@param isShowBorder 是否显示边框 +@param confirmHandler 确认操作 +@param cancelHandler 取消操作 +*/ ++ (void)alertWithConfig:(TTAlertConfig *)config + showBorder:(BOOL)isShowBorder + confirmHandler:(TTPopupCompletionHandler)confirmHandler + cancelHandler:(TTPopupCompletionHandler)cancelHandler; + + + ++ (void)alertWithMessage:(NSString *)message + config:(TTAlertConfig *)config + showBorder:(BOOL)isShowBorder + cancelHandler:(TTPopupCompletionHandler)cancelHandler + confirmHandler:(TTPopupCompletionHandler)confirmHandler; + +/** + 显示 alert 弹窗 + @discussion 显示四个内容:标题,提示内容,取消按钮,确认按钮 + @param config 完善的视图配置,为您变态的需求保驾护航 + @param cancelHandler 取消操作 + @param confirmHandler 确认操作 + */ ++ (void)alertWithConfig:(TTAlertConfig *)config + confirmHandler:(TTPopupCompletionHandler)confirmHandler + cancelHandler:(TTPopupCompletionHandler)cancelHandler; + +#pragma mark Action Sheet +/** + 显示 action sheet 弹窗,自带贴心的取消按钮😊 + + @param items 配置列表 + */ ++ (void)actionSheetWithItems:(NSArray *)items; + +/** + 显示 action sheet 弹窗 + + @param items 配置列表 + @param showCancelItem 是否显示取消按钮 + */ ++ (void)actionSheetWithItems:(NSArray *)items + showCancelItem:(BOOL)showCancelItem; + +/** + 显示 action sheet 弹窗 + + @param items 配置列表 + @param cancelHandler 取消按钮回调 + */ ++ (void)actionSheetWithItems:(NSArray *)items + cancelHandler:(TTActionSheetClickAction)cancelHandler; + +#pragma mark Popup +/** + 显示自定义弹窗 + @param customView 自定义 view + @param style 弹窗样式 + */ ++ (void)popupView:(UIView *)customView + style:(TTPopupStyle)style; + +/** + 显示自定义弹窗 + + @param config 自定义弹窗配置 + */ ++ (void)popupWithConfig:(TTPopupService *)config; + +#pragma mark Dismiss +/** + 消除当前弹窗 + */ ++ (void)dismiss; + +#pragma mark Query +/** + 当前是否有显示弹窗 + */ ++ (BOOL)hasShowPopup; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/TTPopup/TTPopup.m b/YuMi/CustomUI/TTPopup/TTPopup.m new file mode 100644 index 00000000..6f0f5fa4 --- /dev/null +++ b/YuMi/CustomUI/TTPopup/TTPopup.m @@ -0,0 +1,237 @@ +// +// TTPopup.m +// YM_TTChatViewKit +// +// Created by lvjunhang on 2019/5/22. +// Copyright © 2023 YUMI. All rights reserved. +// + +#import "TTPopup.h" +#import "TTAlertView.h" +#import "TTActionSheetView.h" +#import "TTPopupService.h" +#import "TTPopupManagerService.h" + +static CGFloat const kActionSheetViewPadding = 15.f; +static CGFloat const kActionSheetViewCellHeight = 52.f; +static CGFloat const kActionSheetViewCancelViewHeight = 67.f; +static CGFloat const kActionSheetViewBottomPadding = 15.f; +static CGFloat const kMixHeight = 200.f; +static CGFloat const kMaxHeight = 450.f; + +@implementation TTPopup + +#pragma mark - Public Methods +#pragma mark Alert ++ (void)alertWithMessage:(NSString *)message + confirmHandler:(TTPopupCompletionHandler)confirmHandler + cancelHandler:(TTPopupCompletionHandler)cancelHandler { + + [self alertWithMessage:message + config:nil + cancelHandler:cancelHandler + confirmHandler:confirmHandler]; +} + ++ (void)alertWithConfig:(TTAlertConfig *)config + confirmHandler:(TTPopupCompletionHandler)confirmHandler + cancelHandler:(TTPopupCompletionHandler)cancelHandler { + + [self alertWithMessage:nil + config:config + cancelHandler:cancelHandler + confirmHandler:confirmHandler]; +} + ++ (void)alertWithMessage:(NSString *)message + config:(TTAlertConfig *)config + cancelHandler:(TTPopupCompletionHandler)cancelHandler + confirmHandler:(TTPopupCompletionHandler)confirmHandler { + + if (!config) { + config = [[TTAlertConfig alloc] init]; + config.message = message; + } + + if (config.message.length <= 0 && config.messageAttributed.length <=0 && config.messageAttributedConfig.count <=0) { + NSAssert(NO, @" message can not be nil, 弹窗文案不可以为空"); + return; + } + CGFloat width = [UIScreen mainScreen].bounds.size.width - 40 * 2; + CGFloat height = ([self messageSize:config.message width:width].height + 160); + // 最小 200, 最大 450 + if (height < kMixHeight) { + height = kMixHeight; + } else if (height > kMaxHeight) { + height = kMaxHeight; + } + TTAlertView *contentView = [[TTAlertView alloc] initWithFrame:CGRectMake(0, 0, width, height)]; + contentView.config = config; + contentView.isConfigBoard = NO; + contentView.cancelAction = cancelHandler; + contentView.confirmAction = confirmHandler; + if (!contentView.config.disableAutoDismissWhenClickButton) { + // 设置弹窗按钮自动消除 + contentView.dismissAction = ^{ + [TTPopup dismiss]; + }; + } + [self popupView:contentView style:TTPopupStyleAlert config:config]; +} + ++ (void)alertWithConfig:(TTAlertConfig *)config + showBorder:(BOOL)isShowBorder + confirmHandler:(TTPopupCompletionHandler)confirmHandler + cancelHandler:(TTPopupCompletionHandler)cancelHandler { + [self alertWithMessage:nil + config:config + showBorder:isShowBorder + cancelHandler:cancelHandler + confirmHandler:confirmHandler]; +} + ++ (void)alertWithMessage:(NSString *)message + config:(TTAlertConfig *)config + showBorder:(BOOL)isShowBorder + cancelHandler:(TTPopupCompletionHandler)cancelHandler + confirmHandler:(TTPopupCompletionHandler)confirmHandler { + + if (!config) { + config = [[TTAlertConfig alloc] init]; + config.message = message; + } + + if (config.message.length <= 0) { + NSAssert(NO, @" message can not be nil, 弹窗文案不可以为空"); + return; + } + + CGFloat width = [UIScreen mainScreen].bounds.size.width - 40 * 2; + CGFloat height = ([self messageSize:config.message width:width].height + 160); + + // 最小 200, 最大 450 + if (height < kMixHeight) { + height = kMixHeight; + } else if (height > kMaxHeight) { + height = kMaxHeight; + } + + TTAlertView *contentView = [[TTAlertView alloc] initWithFrame:CGRectMake(0, 0, width, height)]; + contentView.config = config; + contentView.cancelAction = cancelHandler; + contentView.confirmAction = confirmHandler; + contentView.isConfigBoard = isShowBorder; + + if (!contentView.config.disableAutoDismissWhenClickButton) { + // 设置弹窗按钮自动消除 + contentView.dismissAction = ^{ + [TTPopup dismiss]; + }; + } + + [self popupView:contentView style:TTPopupStyleAlert config:config]; +} + +#pragma mark Action Sheet ++ (void)actionSheetWithItems:(NSArray *)items { + + [TTPopup actionSheetWithItems:items showCancelItem:YES cancelHandler:nil]; +} + ++ (void)actionSheetWithItems:(NSArray *)items + showCancelItem:(BOOL)showCancelItem { + + [TTPopup actionSheetWithItems:items showCancelItem:showCancelItem cancelHandler:nil]; +} + ++ (void)actionSheetWithItems:(NSArray *)items cancelHandler:(TTActionSheetClickAction)cancelHandler { + + [TTPopup actionSheetWithItems:items showCancelItem:YES cancelHandler:cancelHandler]; +} + ++ (void)actionSheetWithItems:(NSArray *)items + showCancelItem:(BOOL)showCancelItem + cancelHandler:(TTActionSheetClickAction)cancelHandler { + + CGFloat width = [UIScreen mainScreen].bounds.size.width - kActionSheetViewPadding * 2; + CGFloat height = kActionSheetViewCellHeight * items.count + kActionSheetViewBottomPadding; + + // 如果需要显示取消按钮则增加响应的高度 + if (showCancelItem) { + // 按钮的高度和间距 + height += kActionSheetViewCancelViewHeight; + } + + if (@available(iOS 11.0, *)) { + // 如果是 iPhone X 系列(刘海屏幕系列) 底部则需要添加 34 的高度 + height += [UIApplication sharedApplication].keyWindow.safeAreaInsets.bottom; + } + + CGRect rect = CGRectMake(0, 0, width, height); + + TTActionSheetView *sheetView = [[TTActionSheetView alloc] initWithFrame:rect + needCancel:showCancelItem + items:items]; + sheetView.cancelAction = cancelHandler; + + // 设置弹窗按钮自动消除 + sheetView.dismissAction = ^{ + [TTPopup dismiss]; + }; + + [self popupView:sheetView style:TTPopupStyleActionSheet]; +} + + +#pragma mark Popup ++ (void)popupView:(UIView *)customView + style:(TTPopupStyle)style { + + TTPopupService *service = [[TTPopupService alloc] init]; + service.style = style; + service.contentView = customView; + + [self popupWithConfig:service]; +} + ++ (void)popupView:(UIView *)customView + style:(TTPopupStyle)style + config:(TTAlertConfig *)config { + + TTPopupService *service = [[TTPopupService alloc] init]; + service.style = style; + service.contentView = customView; + service.shouldDismissOnBackgroundTouch = config.shouldDismissOnBackgroundTouch; + service.maskBackgroundAlpha = config.maskBackgroundAlpha; + [self popupWithConfig:service]; +} + + ++ (void)popupWithConfig:(TTPopupService *)config { + if (![config.contentView isKindOfClass:UIView.class]) { + NSAssert(NO, @"TTPopup customView should inherit from UIView."); + return; + } + [[TTPopupManagerService sharedInstance] addPopupService:config]; +} + +#pragma mark Dismiss ++ (void)dismiss { + [[TTPopupManagerService sharedInstance] removePopupService]; +} + +#pragma mark Query +/** + 当前是否有显示弹窗 + */ ++ (BOOL)hasShowPopup { + return [TTPopupManagerService sharedInstance].currentPopupService != nil; +} + +#pragma mark - Privite ++ (CGSize)messageSize:(NSString *)text width:(CGFloat)width { + CGRect stringRect = [text boundingRectWithSize:CGSizeMake(width - 2 * 20, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:15.f]} context:nil]; + return stringRect.size; +} + +@end diff --git a/YuMi/CustomUI/TTPopup/View/TTActionSheetView.h b/YuMi/CustomUI/TTPopup/View/TTActionSheetView.h new file mode 100644 index 00000000..64aac067 --- /dev/null +++ b/YuMi/CustomUI/TTPopup/View/TTActionSheetView.h @@ -0,0 +1,26 @@ +// +// TTActionSheetView.h +// YM_TTChatViewKit +// +// Created by lee on 2019/5/22. +// Copyright © 2023 YUMI. All rights reserved. +// + +#import +#import "TTPopupConstants.h" + +NS_ASSUME_NONNULL_BEGIN + +@class TTActionSheetConfig; + +@interface TTActionSheetView : UIView + +@property (nonatomic, copy) TTPopupCompletionHandler cancelAction; +@property (nonatomic, copy) TTPopupCompletionHandler dismissAction; + +- (instancetype)initWithFrame:(CGRect)frame + needCancel:(BOOL)needCancel + items:(NSArray *)items; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/TTPopup/View/TTActionSheetView.m b/YuMi/CustomUI/TTPopup/View/TTActionSheetView.m new file mode 100644 index 00000000..d97eab2e --- /dev/null +++ b/YuMi/CustomUI/TTPopup/View/TTActionSheetView.m @@ -0,0 +1,135 @@ +// +// TTActionSheetView.m +// YM_TTChatViewKit +// +// Created by lee on 2019/5/22. +// Copyright © 2023 YUMI. All rights reserved. +// + +#import "TTActionSheetView.h" +#import "TTActionSheetConfig.h" +#import "DJDKMIMOMColor.h" +#import + +static CGFloat const kSheetViewCellHeight = 51.f; +static CGFloat const kSheetViewCornerRadius = 14.f; +static NSString *const kSheetViewCellConst = @"kSheetViewCellConst"; + +@interface TTActionSheetView () + +/** sheetView 载体 */ +@property (nonatomic, strong) UITableView *tableView; +/** 数据源 */ +@property (nonatomic, strong) NSArray *items; +/** 是否需要显示取消按钮 */ +@property (nonatomic, assign) BOOL needCancel; +/** 取消按钮 */ +@property (nonatomic, strong) UIButton *cancelButton; + +@end + +@implementation TTActionSheetView + +#pragma mark - +#pragma mark lifeCycle +- (instancetype)initWithFrame:(CGRect)frame needCancel:(BOOL)needCancel items:(NSArray *)items { + self = [super initWithFrame:frame]; + if (self) { + _items = items; + _needCancel = needCancel; + [self initViews]; + [self initConstraints]; + } + return self; +} + +- (void)initViews { + [self addSubview:self.tableView]; + [self addSubview:self.cancelButton]; +} + +- (void)initConstraints { + + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self); + make.height.mas_equalTo(self.items.count * kSheetViewCellHeight); + }]; + + if (_needCancel) { + // 显示 cancel view + self.cancelButton.hidden = NO; + [self.cancelButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self); + make.height.mas_equalTo(kSheetViewCellHeight); + make.top.mas_equalTo(self.tableView.mas_bottom).offset(15); + }]; + } + +} + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.items.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kSheetViewCellConst]; + cell.backgroundColor = UIColor.clearColor; + cell.textLabel.textAlignment = NSTextAlignmentCenter; + cell.textLabel.text = _items[indexPath.row].title; + cell.textLabel.textColor = _items[indexPath.row].titleColor; + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + + // 配置中的事件处理 + TTActionSheetConfig *config = _items[indexPath.row]; + !config.clickAction ?: config.clickAction(); + + !_dismissAction ?: _dismissAction(); +} + +- (void)onClickCancelButtonAction:(UIButton *)cancelButton { + !_cancelAction ?: _cancelAction(); + !_dismissAction ?: _dismissAction(); +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.separatorColor = [DJDKMIMOMColor actionSeparatorColor]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine; + _tableView.rowHeight = kSheetViewCellHeight; + _tableView.tableFooterView = [[UIView alloc] init]; + _tableView.backgroundColor = [UIColor whiteColor]; + _tableView.layer.cornerRadius = kSheetViewCornerRadius; + _tableView.layer.masksToBounds = YES; + _tableView.bounces = NO; + [_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:kSheetViewCellConst]; + } + return _tableView; +} + +- (UIButton *)cancelButton { + if (!_cancelButton) { + _cancelButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_cancelButton setTitle:YMLocalizedString(@"TTActionSheetView0") forState:UIControlStateNormal]; + [_cancelButton setBackgroundColor:UIColor.whiteColor]; + [_cancelButton setTitleColor:[DJDKMIMOMColor alertMessageColor] forState:UIControlStateNormal]; + [_cancelButton.titleLabel setFont:[UIFont systemFontOfSize:16]]; + _cancelButton.layer.cornerRadius = kSheetViewCornerRadius; + _cancelButton.layer.masksToBounds = YES; + [_cancelButton addTarget:self action:@selector(onClickCancelButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _cancelButton.hidden = YES; + } + return _cancelButton; +} + +@end diff --git a/YuMi/CustomUI/TTPopup/View/TTAlertView.h b/YuMi/CustomUI/TTPopup/View/TTAlertView.h new file mode 100644 index 00000000..bc6bcca8 --- /dev/null +++ b/YuMi/CustomUI/TTPopup/View/TTAlertView.h @@ -0,0 +1,25 @@ +// +// TTAlertView.h +// YM_TTChatViewKit +// +// Created by lee on 2019/5/20. +// Copyright © 2023 YUMI. All rights reserved. +// + +#import +#import "TTPopupConstants.h" + +@class TTAlertConfig; + +NS_ASSUME_NONNULL_BEGIN + +@interface TTAlertView : UIView +@property (nonatomic, strong) TTAlertConfig *config;// 配置 +@property (nonatomic, assign) BOOL isConfigBoard;// 是否配置边框 +@property (nonatomic, copy) TTPopupCompletionHandler cancelAction; +@property (nonatomic, copy) TTPopupCompletionHandler confirmAction; +@property (nonatomic, copy) TTPopupCompletionHandler dismissAction; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/TTPopup/View/TTAlertView.m b/YuMi/CustomUI/TTPopup/View/TTAlertView.m new file mode 100644 index 00000000..fb316648 --- /dev/null +++ b/YuMi/CustomUI/TTPopup/View/TTAlertView.m @@ -0,0 +1,250 @@ +// +// TTAlertView.m +// YM_TTChatViewKit +// +// Created by lee on 2019/5/20. +// Copyright © 2023 YUMI. All rights reserved. +// + +#import "TTAlertView.h" +#import "TTAlertConfig.h" +#import "DJDKMIMOMColor.h" +#import + +static CGFloat const kMargin = 25.f; +static CGFloat const kPadding = 20.f; +static CGFloat const kBtnHeight = 38.f; + +@interface TTAlertView () + +@property (nonatomic, strong) UILabel *titleLabel; // 标题 +@property (nonatomic, strong) UILabel *messageLabel; // 内容 +@property (nonatomic, strong) UIButton *cancelButton; // 取消按钮 +@property (nonatomic, strong) UIButton *confirmButton; // 确认按钮 +@property (nonatomic, strong) UIStackView *stackView; + +@end + +@implementation TTAlertView + +#pragma mark - lifeCyle +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initViews]; + [self initConstraints]; + } + return self; +} + +- (void)initViews { + [self addSubview:self.titleLabel]; + [self addSubview:self.messageLabel]; + [self addSubview:self.stackView]; + [self.stackView addSubview:self.cancelButton]; + [self.stackView addSubview:self.confirmButton]; +} + +- (void)initConstraints { + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(kPadding); + make.left.right.mas_equalTo(self).inset(kPadding); + }]; + + [self.messageLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(kMargin); + make.left.right.mas_equalTo(self).inset(kPadding); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(-kPadding); + make.centerX.mas_equalTo(self); + }]; + + [self.cancelButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(kBtnHeight); + make.width.mas_equalTo(self.mas_width).multipliedBy(0.4); + }]; + + [self.confirmButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(kBtnHeight); + make.width.mas_equalTo(self.mas_width).multipliedBy(0.4); + }]; +} + +#pragma mark - Button Events +- (void)onClickConfirmButtonAction:(UIButton *)confirmButton { + !_confirmAction ?: _confirmAction(); + !_dismissAction ?: _dismissAction(); +} + +- (void)onClickCancelButtonAction:(UIButton *)cancelButton { + !_cancelAction ?: _cancelAction(); + !_dismissAction ?: _dismissAction(); +} + +#pragma mark - private method +/** + 设置 messageLabel 需要显示的富文本效果 + @param config 弹窗配置 + @return 富文本内容 + */ +- (NSMutableAttributedString *)messageAttributeString:(TTAlertConfig *)config { + NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] initWithString:config.message]; + if (config.messageLineSpacing > 0) { // 行间距 + NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; + paragraphStyle.lineSpacing = config.messageLineSpacing; + paragraphStyle.alignment = self.messageLabel.textAlignment; + [attString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, config.message.length)]; + } + + // 富文本显示效果 + [config.messageAttributedConfig enumerateObjectsUsingBlock:^(TTAlertMessageAttributedConfig * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + // 遍历数组,添加展示富文本效果 + if ([obj isKindOfClass:[TTAlertMessageAttributedConfig class]]) { + if (obj.text && obj.text.length > 0) { + NSRange range = [config.message rangeOfString:obj.text]; + // 如果外部指定了 range 。就不用查找出的 range + if (obj.range.length != 0) { + if (obj.range.location + obj.range.length > config.message.length) { + NSAssert(NO, @"obj.range out of bounds"); + return; + } + range = obj.range; + } + if (obj.font) { // 字体 + [attString addAttribute:NSFontAttributeName value:obj.font range:range]; + } + if (obj.color) { // 颜色 + [attString addAttribute:NSForegroundColorAttributeName value:obj.color range:range]; + } + } + } + }]; + return attString; +} + +#pragma mark - getter && setter + +- (void)setConfig:(TTAlertConfig *)config { + _config = config; + // cornerRadius + if (config.cornerRadius > 0) { + self.layer.cornerRadius = config.cornerRadius; + self.layer.masksToBounds = YES; + } + //背景 + self.backgroundColor = config.backgroundColor; + // title + _titleLabel.text = config.title; + _titleLabel.textColor = config.titleColor; + _titleLabel.font = config.titleFont; + + _cancelButton.hidden = config.actionStyle == TTAlertActionConfirmStyle; + _confirmButton.hidden = config.actionStyle == TTAlertActionCancelStyle; + + // cancel button + [_cancelButton setTitle:config.cancelButtonConfig.title forState:UIControlStateNormal]; + [_cancelButton setTitleColor:config.cancelButtonConfig.titleColor forState:UIControlStateNormal]; + [_cancelButton.titleLabel setFont:config.cancelButtonConfig.font]; + [_cancelButton setBackgroundColor:config.cancelButtonConfig.backgroundColor]; + [_cancelButton setBackgroundImage:config.cancelButtonConfig.backgroundImage forState:UIControlStateNormal]; + if (config.cancelButtonConfig.cornerRadius > 0) { + _cancelButton.layer.cornerRadius = config.cancelButtonConfig.cornerRadius; + _cancelButton.layer.masksToBounds = YES; + } + + // confirm button + [_confirmButton setTitle:config.confirmButtonConfig.title forState:UIControlStateNormal]; + [_confirmButton setTitleColor:config.confirmButtonConfig.titleColor forState:UIControlStateNormal]; + [_confirmButton.titleLabel setFont:config.confirmButtonConfig.font]; + [_confirmButton setBackgroundColor:config.confirmButtonConfig.backgroundColor]; + [_confirmButton setBackgroundImage:config.confirmButtonConfig.backgroundImage forState:UIControlStateNormal]; + if (config.confirmButtonConfig.cornerRadius > 0) { + _confirmButton.layer.cornerRadius = config.confirmButtonConfig.cornerRadius; + _confirmButton.layer.masksToBounds = YES; + } + + // message + _messageLabel.font = config.messageFont; + _messageLabel.textColor = config.messageColor; + + if (config.messageAttributedConfig.count > 0) { + _messageLabel.attributedText = [self messageAttributeString:config]; + _messageLabel.textAlignment = NSTextAlignmentCenter; + } else if(config.messageAttributed.length > 0) { + _messageLabel.attributedText = config.messageAttributed; + _messageLabel.textAlignment = NSTextAlignmentCenter; + } else { + _messageLabel.text = config.message; + } + + _cancelButton.layer.borderColor = [DJDKMIMOMColor dividerColor].CGColor; + _cancelButton.layer.borderWidth = 2.f; + _confirmButton.layer.borderColor = [DJDKMIMOMColor dividerColor].CGColor; + _confirmButton.layer.borderWidth = 2.f; +} + +- (void)setIsConfigBoard:(BOOL)isConfigBoard { + _isConfigBoard = isConfigBoard; + if (isConfigBoard) { + //需要边框 + _cancelButton.layer.borderColor = [DJDKMIMOMColor dividerColor].CGColor; + _cancelButton.layer.borderWidth = 2.f; + _confirmButton.layer.borderColor = [DJDKMIMOMColor dividerColor].CGColor; + _confirmButton.layer.borderWidth = 2.f; + }else { + //不需要边框 + _cancelButton.layer.borderColor = [DJDKMIMOMColor dividerColor].CGColor; + _cancelButton.layer.borderWidth = 0; + _confirmButton.layer.borderColor = [DJDKMIMOMColor dividerColor].CGColor; + _confirmButton.layer.borderWidth = 0; + } +} + + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel ; +} + +- (UILabel *)messageLabel { + if (!_messageLabel) { + _messageLabel = [[UILabel alloc] init]; + _messageLabel.numberOfLines = 0; + _messageLabel.textAlignment = NSTextAlignmentCenter; + } + return _messageLabel; +} + +- (UIButton *)cancelButton { + if (!_cancelButton) { + _cancelButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_cancelButton addTarget:self action:@selector(onClickCancelButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _cancelButton; +} + +- (UIButton *)confirmButton { + if (!_confirmButton) { + _confirmButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_confirmButton addTarget:self action:@selector(onClickConfirmButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _confirmButton; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] initWithArrangedSubviews:@[self.cancelButton, self.confirmButton]]; + _stackView.distribution = UIStackViewDistributionFillEqually; + _stackView.alignment = UIStackViewAlignmentCenter; + _stackView.spacing = 16; + } + return _stackView; +} + +@end diff --git a/YuMi/CustomUI/UIButton/UIButton+EnlargeTouchArea.h b/YuMi/CustomUI/UIButton/UIButton+EnlargeTouchArea.h index 313c08e5..b68b996b 100644 --- a/YuMi/CustomUI/UIButton/UIButton+EnlargeTouchArea.h +++ b/YuMi/CustomUI/UIButton/UIButton+EnlargeTouchArea.h @@ -1,22 +1,36 @@ -// -// UIButton+EnlargeTouchArea.h -// YMCategrayKit -// -// Created by YM on 2022/8/30. -// Copyright © 2018年 YUIMI. All rights reserved. -// - -#import - -@interface UIButton (EnlargeTouchArea) - -@property (strong, nonatomic) NSValue *imageFrame; -@property (strong, nonatomic) NSValue *titleFrame; - - -- (void)setEnlargeEdgeAboutApex:(CGFloat)top right:(CGFloat)right bottom:(CGFloat)bottom left:(CGFloat)left; - - -- (void)enlargeContactArea:(UIEdgeInsets)insets; - -@end +// +// UIButton+EnlargeTouchArea.h +// YMCategrayKit +// +// Created by YM on 2022/8/30. +// Copyright © 2018年 YUIMI. All rights reserved. +// + +#import + +@interface UIButton (EnlargeTouchArea) + +//图片frmae +@property (strong, nonatomic) NSValue *imageFrame; +//标题frmae +@property (strong, nonatomic) NSValue *titleFrame; + +/** + 通过 hitTest:withEvent: 扩大btn的点击范围 + 注:填写的都是 在button 原frame 上面 扩大的对应的值 + + @param top 顶部 扩大的值 + @param right 右边 扩大的值 + @param bottom 底部 扩大的值 + @param left 左边 扩大的值 + */ +- (void)setEnlargeEdgeWithTop:(CGFloat)top right:(CGFloat)right bottom:(CGFloat)bottom left:(CGFloat)left; + +/** + 扩大按钮点击范围 + + @discussion setEnlargeEdgeWithTop:right:bottom:left:方法的包装 + */ +- (void)enlargeTouchArea:(UIEdgeInsets)insets; + +@end diff --git a/YuMi/CustomUI/UIButton/UIButton+EnlargeTouchArea.m b/YuMi/CustomUI/UIButton/UIButton+EnlargeTouchArea.m index da382f40..877fafb2 100644 --- a/YuMi/CustomUI/UIButton/UIButton+EnlargeTouchArea.m +++ b/YuMi/CustomUI/UIButton/UIButton+EnlargeTouchArea.m @@ -12,17 +12,18 @@ @implementation UIButton (EnlargeTouchArea) +//定义常量 必须是C语言字符串 static const char *imageFrameStr = "imageFrame"; static const char *titleFrameStr = "titleFrame"; + (void)load{ static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ - Method newImageMethod = class_getInstanceMethod(self, @selector(strange_indictowardseReactangleInthecaseofStowardsisfperformanceReactangle:)); + Method newImageMethod = class_getInstanceMethod(self, @selector(new_imageRectForContentRect:)); Method oldImageMethod = class_getInstanceMethod(self, @selector(imageRectForContentRect:)); method_exchangeImplementations(newImageMethod, oldImageMethod); - Method newTitleMethod = class_getInstanceMethod(self, @selector(strange_championReactangleInthecaseofStowardsisfperformanceReactangle:)); + Method newTitleMethod = class_getInstanceMethod(self, @selector(new_titleRectForContentRect:)); Method oldTitleMethod = class_getInstanceMethod(self, @selector(titleRectForContentRect:)); method_exchangeImplementations(newTitleMethod, oldTitleMethod); }); @@ -44,16 +45,16 @@ static const char *titleFrameStr = "titleFrame"; return objc_getAssociatedObject(self, titleFrameStr); } -- (CGRect)strange_indictowardseReactangleInthecaseofStowardsisfperformanceReactangle:(CGRect)contentRect{ +- (CGRect)new_imageRectForContentRect:(CGRect)contentRect{ if (CGRectEqualToRect(self.imageFrame.CGRectValue, CGRectZero)) { - return [self strange_indictowardseReactangleInthecaseofStowardsisfperformanceReactangle:contentRect]; + return [self new_imageRectForContentRect:contentRect]; } return self.imageFrame.CGRectValue; } -- (CGRect)strange_championReactangleInthecaseofStowardsisfperformanceReactangle:(CGRect)contentRect{ +- (CGRect)new_titleRectForContentRect:(CGRect)contentRect{ if (CGRectEqualToRect(self.titleFrame.CGRectValue, CGRectZero)) { - return [self strange_championReactangleInthecaseofStowardsisfperformanceReactangle:contentRect]; + return [self new_titleRectForContentRect:contentRect]; } return self.titleFrame.CGRectValue; } @@ -65,7 +66,7 @@ static char rightNameKey; static char bottomNameKey; static char leftNameKey; -- (void)setEnlargeEdgeAboutApex:(CGFloat)top right:(CGFloat)right bottom:(CGFloat)bottom left:(CGFloat)left +- (void)setEnlargeEdgeWithTop:(CGFloat)top right:(CGFloat)right bottom:(CGFloat)bottom left:(CGFloat)left { objc_setAssociatedObject(self, &topNameKey, [NSNumber numberWithFloat:top], OBJC_ASSOCIATION_COPY_NONATOMIC); objc_setAssociatedObject(self, &rightNameKey, [NSNumber numberWithFloat:right], OBJC_ASSOCIATION_COPY_NONATOMIC); @@ -73,15 +74,15 @@ static char leftNameKey; objc_setAssociatedObject(self, &leftNameKey, [NSNumber numberWithFloat:left], OBJC_ASSOCIATION_COPY_NONATOMIC); } -- (void)enlargeContactArea:(UIEdgeInsets)insets +- (void)enlargeTouchArea:(UIEdgeInsets)insets { - [self setEnlargeEdgeAboutApex:insets.top + [self setEnlargeEdgeWithTop:insets.top right:insets.right bottom:insets.bottom left:insets.left]; } -- (CGRect)enlargedReactangle +- (CGRect)enlargedRect { NSNumber* topEdge = objc_getAssociatedObject(self, &topNameKey); NSNumber* rightEdge = objc_getAssociatedObject(self, &rightNameKey); @@ -103,7 +104,7 @@ static char leftNameKey; - (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent*)event { if(self.hidden) return nil; - CGRect rect = [self enlargedReactangle]; + CGRect rect = [self enlargedRect]; if (CGRectEqualToRect(rect, self.bounds)) { return [super hitTest:point withEvent:event]; diff --git a/YuMi/CustomUI/UIImage/UIImage+Utils.h b/YuMi/CustomUI/UIImage/UIImage+Utils.h index daa1762c..5c5d4261 100644 --- a/YuMi/CustomUI/UIImage/UIImage+Utils.h +++ b/YuMi/CustomUI/UIImage/UIImage+Utils.h @@ -1,50 +1,54 @@ -// -// UIImage+Utils.h -// YYMobileFramework -// -// Created by wuwei on 14/6/20. -// Copyright (c) 2014年 YY Inc. All rights reserved. -// - -#import - -typedef NS_ENUM(NSUInteger, GradientGenre) { - GradientGenreTopToBottom = 0, - GradientGenreLeftToRight = 1, - GradientGenreUpleftToLowright = 2, - GradientGenreUprightToLowleft = 3, -}; - -@interface UIImage (Utils) - -- (UIImage *)grayscaleIndictowardse; - -- (UIImage *)indictowardseBlconcludeInGray; - -- (UIImage *)indictowardseAboutBlconcludeManner:(CGBlendMode)blendMode; - -+ (UIImage *)imageWithColor:(UIColor *)color; - -+ (UIImage *)imageWithColor:(UIColor *)color size:(CGSize)size; - -+ (UIImage *)fixOrientation:(UIImage *)aImage; - -- (UIImage *)imageWithColor:(UIColor *)color; - -- (UIImage *)setMonopolizeAboutRestrictions:(CGFloat)radius andSize:(CGSize)size; - -- (void)imageWithSize:(CGSize)size radius:(CGFloat)radius backColor:(UIColor *)backColor completion:(void(^)(UIImage *image))completion; - -+ (UIImage *)gradientPrettifyIndictowardseByvirtueofPrettifys:(NSArray*)colors gradientType:(GradientGenre)gradientType imgSize:(CGSize)imgSize; - -+ (UIImage *)wtowardserIndictowardseAboutIndictowardse:(UIImage *)image waterImage:(UIImage *)waterImage waterImageRect:(CGRect)rect; - -+ (CGSize)sizeAboutIndictowardseDerivtowardsionDimension:(CGSize)originSize - minSize:(CGSize)imageMinSize - maxSize:(CGSize)imageMaxSize; - -- (UIImage *)cutIndictowardse:(CGSize)newSize; - - --(UIImage *)compressAboutLargestLength:(NSUInteger)maxLength; -@end +// +// UIImage+Utils.h +// YYMobileFramework +// +// Created by wuwei on 14/6/20. +// Copyright (c) 2014年 YY Inc. All rights reserved. +// + +#import + +typedef NS_ENUM(NSUInteger, GradientType) { + GradientTypeTopToBottom = 0,//从上到小 + GradientTypeLeftToRight = 1,//从左到右 + GradientTypeUpleftToLowright = 2,//左上到右下 + GradientTypeUprightToLowleft = 3,//右上到左下 +}; + +@interface UIImage (Utils) + +- (UIImage *)grayscaleImage; + +- (UIImage *)imageBlendInGray; + +- (UIImage *)imageWithBlendMode:(CGBlendMode)blendMode; + ++ (UIImage *)imageWithColor:(UIColor *)color; + ++ (UIImage *)imageWithColor:(UIColor *)color size:(CGSize)size; + ++ (UIImage *)fixOrientation:(UIImage *)aImage; + +- (UIImage *)imageWithColor:(UIColor *)color; + +- (UIImage *)setCornerWithRadius:(CGFloat)radius andSize:(CGSize)size; + +//异步生成纯色圆角图片 +- (void)imageWithSize:(CGSize)size radius:(CGFloat)radius backColor:(UIColor *)backColor completion:(void(^)(UIImage *image))completion; +/** + 返回指定大小,颜色,渐变模式的渐变色图片 + */ ++ (UIImage *)gradientColorImageFromColors:(NSArray*)colors gradientType:(GradientType)gradientType imgSize:(CGSize)imgSize; + ++ (UIImage *)waterImageWithImage:(UIImage *)image waterImage:(UIImage *)waterImage waterImageRect:(CGRect)rect; + ++ (CGSize)sizeWithImageOriginSize:(CGSize)originSize + minSize:(CGSize)imageMinSize + maxSize:(CGSize)imageMaxSize; + +///裁剪图片 +- (UIImage *)cutImage:(CGSize)newSize; + + +-(UIImage *)compressWithMaxLength:(NSUInteger)maxLength; +@end diff --git a/YuMi/CustomUI/UIImage/UIImage+Utils.m b/YuMi/CustomUI/UIImage/UIImage+Utils.m index f1d47cc5..31159a1f 100644 --- a/YuMi/CustomUI/UIImage/UIImage+Utils.m +++ b/YuMi/CustomUI/UIImage/UIImage+Utils.m @@ -10,7 +10,7 @@ #import @implementation UIImage (Utils) -- (UIImage *)grayscaleIndictowardse +- (UIImage *)grayscaleImage { CGFloat width = self.size.width; CGFloat height = self.size.height; @@ -32,15 +32,15 @@ CGContextDrawImage(context, CGRectMake(0, 0, width, height), self.CGImage); CGImageRef imageRef = CGBitmapContextCreateImage(context); - UIImage *grayscaleIndictowardse = [UIImage imageWithCGImage:imageRef]; + UIImage *grayscaleImage = [UIImage imageWithCGImage:imageRef]; CGImageRelease(imageRef); CGContextRelease(context); - return grayscaleIndictowardse; + return grayscaleImage; } -- (UIImage *)indictowardseBlconcludeInGray { +- (UIImage *)imageBlendInGray { UIGraphicsBeginImageContext(self.size); CGRect bounds = CGRectMake(0, 0, self.size.width, self.size.height); @@ -56,7 +56,7 @@ -- (UIImage *)indictowardseAboutBlconcludeManner:(CGBlendMode)blendMode { +- (UIImage *)imageWithBlendMode:(CGBlendMode)blendMode { UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0f); CGRect bounds = CGRectMake(0, 0, self.size.width, self.size.height); @@ -91,12 +91,12 @@ + (UIImage *)fixOrientation:(UIImage *)aImage { - + // No-op if the orientation is already correct if (aImage.imageOrientation == UIImageOrientationUp) return aImage; - - + // We need to calculate the proper transformation to make the image upright. + // We do it in 2 steps: Rotate if Left/Right/Down, and then flip if Mirrored. CGAffineTransform transform = CGAffineTransformIdentity; switch (aImage.imageOrientation) { @@ -137,8 +137,8 @@ break; } - - + // Now we draw the underlying CGImage into a new context, applying the transform + // calculated above. CGContextRef ctx = CGBitmapContextCreate(NULL, aImage.size.width, aImage.size.height, CGImageGetBitsPerComponent(aImage.CGImage), 0, CGImageGetColorSpace(aImage.CGImage), @@ -149,7 +149,7 @@ case UIImageOrientationLeftMirrored: case UIImageOrientationRight: case UIImageOrientationRightMirrored: - + // Grr... CGContextDrawImage(ctx, CGRectMake(0,0,aImage.size.height,aImage.size.width), aImage.CGImage); break; @@ -158,7 +158,7 @@ break; } - + // And now we just create a new UIImage from the drawing context CGImageRef cgimg = CGBitmapContextCreateImage(ctx); UIImage *img = [UIImage imageWithCGImage:cgimg]; CGContextRelease(ctx); @@ -181,25 +181,26 @@ } +//异步生成纯色圆角图片 - (void)imageWithSize:(CGSize)size radius:(CGFloat)radius backColor:(UIColor *)backColor completion:(void(^)(UIImage *image))completion { - + // 异步绘制裁切 dispatch_async(dispatch_get_global_queue(0, 0), ^{ - + // 利用绘图建立上下文 UIGraphicsBeginImageContextWithOptions(size, true, 0); CGRect rect = CGRectMake(0, 0, size.width, size.height); - + // 填充颜色 [backColor setFill]; UIRectFill(rect); + // // 贝塞尔裁切 + // UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:radius]; + // [path addClip]; + // [self drawInRect:rect]; - - - - - - UIImage *resultImage = [UIGraphicsGetImageFromCurrentImageContext() circularIndictowardse]; - + // 获取结果 + UIImage *resultImage = [UIGraphicsGetImageFromCurrentImageContext() circularImage]; + // 关闭上下文 UIGraphicsEndImageContext(); - + // 主队列回调 dispatch_async(dispatch_get_main_queue(), ^{ completion(resultImage); }); @@ -207,32 +208,32 @@ } -- (UIImage *)circularIndictowardse { - +- (UIImage *)circularImage { + // 1. 开启图形上下文 UIGraphicsBeginImageContextWithOptions(self.size, NO, 0); - + // 2. 描述路径 UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, self.size.width, self.size.height) byRoundingCorners:UIRectCornerTopLeft|UIRectCornerTopRight | UIRectCornerBottomLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(self.size.width, self.size.height)]; + // UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, self.size.width, self.size.height)]; - - + // 3. 添加裁减区域 [path addClip]; - + // 4. 绘制图片 [self drawAtPoint:CGPointZero]; - + // 5. 从上下文获取图片 UIImage * image = UIGraphicsGetImageFromCurrentImageContext(); - + // 6. 关闭上下文 UIGraphicsEndImageContext(); - + // 7. 设置图片 return image; } -+ (UIImage *)gradientPrettifyIndictowardseByvirtueofPrettifys:(NSArray *)colors gradientType:(GradientGenre)gradientType imgSize:(CGSize)imgSize{ ++ (UIImage *)gradientColorImageFromColors:(NSArray *)colors gradientType:(GradientType)gradientType imgSize:(CGSize)imgSize{ NSMutableArray *ar = [NSMutableArray array]; for(UIColor *c in colors) { @@ -246,19 +247,19 @@ CGPoint start; CGPoint end; switch (gradientType) { - case GradientGenreTopToBottom: + case GradientTypeTopToBottom: start = CGPointMake(0.0, 0.0); end = CGPointMake(0.0, imgSize.height); break; - case GradientGenreLeftToRight: + case GradientTypeLeftToRight: start = CGPointMake(0.0, 0.0); end = CGPointMake(imgSize.width, 0.0); break; - case GradientGenreUpleftToLowright: + case GradientTypeUpleftToLowright: start = CGPointMake(0.0, 0.0); end = CGPointMake(imgSize.width, imgSize.height); break; - case GradientGenreUprightToLowleft: + case GradientTypeUprightToLowleft: start = CGPointMake(imgSize.width, 0.0); end = CGPointMake(0.0, imgSize.height); break; @@ -275,62 +276,63 @@ return image; } -- (UIImage *)setMonopolizeAboutRestrictions:(CGFloat)radius andSize:(CGSize)size { - +- (UIImage *)setCornerWithRadius:(CGFloat)radius andSize:(CGSize)size { + //开启图形上下文 UIGraphicsBeginImageContext(size); - + //绘制圆角矩形 CGRect rect = CGRectMake(0, 0, size.width, size.height); UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:rect byRoundingCorners:UIRectCornerAllCorners cornerRadii:CGSizeMake(radius, radius)]; - + //将Path添加到上下文中 CGContextAddPath(UIGraphicsGetCurrentContext(), path.CGPath); - + //裁剪上下文 CGContextClip(UIGraphicsGetCurrentContext()); - + //将图片绘制到上下文中 [self drawInRect:rect]; - + //设置绘制模式 CGContextDrawPath(UIGraphicsGetCurrentContext(), kCGPathStroke); - + //获取图片 UIImage *output = UIGraphicsGetImageFromCurrentImageContext(); - + //关闭上下文 UIGraphicsEndImageContext(); - + //返回裁剪好的图片 return output; } -+ (UIImage *)wtowardserIndictowardseAboutIndictowardse:(UIImage *)image waterImage:(UIImage *)waterImage waterImageRect:(CGRect)rect +// 给图片添加图片水印 ++ (UIImage *)waterImageWithImage:(UIImage *)image waterImage:(UIImage *)waterImage waterImageRect:(CGRect)rect { - - + //1.获取图片 + //2.开启上下文 UIGraphicsBeginImageContextWithOptions(image.size, NO, 0); - + //3.绘制背景图片 [image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)]; - + //绘制水印图片到当前上下文 [waterImage drawInRect:rect]; - + //4.从上下文中获取新图片 UIImage * newImage = UIGraphicsGetImageFromCurrentImageContext(); - + //5.关闭图形上下文 UIGraphicsEndImageContext(); - + //返回图片 return newImage; } -+ (CGSize)sizeAboutIndictowardseDerivtowardsionDimension:(CGSize)originSize ++ (CGSize)sizeWithImageOriginSize:(CGSize)originSize minSize:(CGSize)imageMinSize maxSize:(CGSize)imageMaxSiz { CGSize size; NSInteger imageWidth = originSize.width ,imageHeight = originSize.height; NSInteger imageMinWidth = imageMinSize.width, imageMinHeight = imageMinSize.height; NSInteger imageMaxWidth = imageMaxSiz.width, imageMaxHeight = imageMaxSiz.height; - if (imageWidth > imageHeight) + if (imageWidth > imageHeight) //宽图 { - size.height = imageMinHeight; + size.height = imageMinHeight; //高度取最小高度 size.width = imageWidth * imageMinHeight / imageHeight; if (size.width > imageMaxWidth) { size.width = imageMaxWidth; } } - else if(imageWidth < imageHeight) + else if(imageWidth < imageHeight)//高图 { size.width = imageMinWidth; size.height = imageHeight *imageMinWidth / imageWidth; @@ -338,7 +340,7 @@ size.height = imageMaxHeight; } } - else + else//方图 { if (imageWidth > imageMaxWidth){ size.width = imageMaxWidth; @@ -354,11 +356,11 @@ return size; } -- (UIImage *)cutIndictowardse:(CGSize)newSize{ +- (UIImage *)cutImage:(CGSize)newSize{ CGFloat scale = newSize.height / self.size.height; UIImage *scaleImage = [self originImage:self scaleToSize:CGSizeMake(self.size.width*scale, self.size.height*scale)]; - + //裁剪暂时有问题 return scaleImage; } @@ -376,8 +378,8 @@ } --(UIImage *)compressAboutLargestLength:(NSUInteger)maxLength{ - +-(UIImage *)compressWithMaxLength:(NSUInteger)maxLength{ + // Compress by quality CGFloat compression = 1; NSData *data = UIImageJPEGRepresentation(self, compression); if (data.length < maxLength) return self; @@ -387,8 +389,8 @@ for (int i = 0; i < 6; ++i) { compression = (max + min) / 2; data = UIImageJPEGRepresentation(self, compression); - - + //NSLog(@"Compression = %.1f", compression); + //NSLog(@"In compressing quality loop, image size = %ld KB", data.length / 1024); if (data.length < maxLength * 0.9) { min = compression; } else if (data.length > maxLength) { @@ -397,23 +399,23 @@ break; } } - + //NSLog(@"After compressing quality, image size = %ld KB", data.length / 1024); if (data.length < maxLength) return self; UIImage *resultImage = [UIImage imageWithData:data]; - + // Compress by size NSUInteger lastDataLength = 0; while (data.length > maxLength && data.length != lastDataLength) { lastDataLength = data.length; CGFloat ratio = (CGFloat)maxLength / data.length; - + //NSLog(@"Ratio = %.1f", ratio); CGSize size = CGSizeMake((NSUInteger)(resultImage.size.width * sqrtf(ratio)), - (NSUInteger)(resultImage.size.height * sqrtf(ratio))); + (NSUInteger)(resultImage.size.height * sqrtf(ratio))); // Use NSUInteger to prevent white blank UIGraphicsBeginImageContext(size); [resultImage drawInRect:CGRectMake(0, 0, size.width, size.height)]; resultImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); data = UIImageJPEGRepresentation(resultImage, compression); - + //NSLog(@"In compressing size loop, image size = %ld KB", data.length / 1024); } if (data) { return [UIImage imageWithData:data];; diff --git a/YuMi/CustomUI/UIImageView/NetImageConfig.h b/YuMi/CustomUI/UIImageView/NetImageConfig.h new file mode 100644 index 00000000..9c00444a --- /dev/null +++ b/YuMi/CustomUI/UIImageView/NetImageConfig.h @@ -0,0 +1,22 @@ +// +// NetImageConfig.h +// YUMI +// +// Created by zu on 2021/11/25. +// + +#import +#import "UIImageConstant.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface NetImageConfig : NSObject + +@property (nonatomic, assign) BOOL autoLoad; +@property (nonatomic, assign) ImageType imageType; +@property (nonatomic, assign) CGFloat radius; +@property (nonatomic, strong) UIImage * placeHolder; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/UIImageView/NetImageConfig.m b/YuMi/CustomUI/UIImageView/NetImageConfig.m new file mode 100644 index 00000000..f1274d43 --- /dev/null +++ b/YuMi/CustomUI/UIImageView/NetImageConfig.m @@ -0,0 +1,21 @@ +// +// NetImageConfig.m +// YUMI +// +// Created by zu on 2021/11/25. +// + +#import "NetImageConfig.h" + +@implementation NetImageConfig + +- (instancetype)init +{ + self = [super init]; + if (self) { + _autoLoad = YES; + } + return self; +} + +@end diff --git a/YuMi/CustomUI/UIImageView/NetImageView.h b/YuMi/CustomUI/UIImageView/NetImageView.h new file mode 100644 index 00000000..ba5f192e --- /dev/null +++ b/YuMi/CustomUI/UIImageView/NetImageView.h @@ -0,0 +1,36 @@ +// +// NetImageView.h +// YUMI +// +// Created by zu on 2021/11/2. +// + +#import +#import "UIImageConstant.h" +#import "NetImageConfig.h" + +NS_ASSUME_NONNULL_BEGIN + +typedef void(^LoadCompletion)(UIImage *image, NSURL * url); + +typedef NS_ENUM(NSInteger, NetImageState){ + NetImageStateUnload = 1, + NetImageStateLoading, + NetImageStateLoaded, +}; + +@interface NetImageView : UIImageView + +@property (nonatomic, assign, readonly) NetImageState state; +@property (nonatomic, copy) NSString* imageUrl; + +- (instancetype)initWithUrl:(NSString * _Nonnull)imageUrl; +- (instancetype)initWithConfig:(NetImageConfig * _Nullable)config; +- (instancetype)initWithUrl:(NSString * _Nonnull)imageUrl config:(NetImageConfig * _Nullable)config; + +- (void)loadImage:(LoadCompletion _Nullable)completion; +- (void)loadImageWithUrl:(NSString * _Nonnull)imageUrl completion:(LoadCompletion _Nullable)completion; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/UIImageView/NetImageView.m b/YuMi/CustomUI/UIImageView/NetImageView.m new file mode 100644 index 00000000..f7df9401 --- /dev/null +++ b/YuMi/CustomUI/UIImageView/NetImageView.m @@ -0,0 +1,88 @@ +// +// NetImageView.m +// YUMI +// +// Created by zu on 2021/11/2. +// + +#import "NetImageView.h" +#import +#import + +@interface NetImageView() + +@property (nonatomic, assign, readwrite) NetImageState state; +@property (nonatomic, copy) NSString * innerConfigedUrl; + +@property (nonatomic, strong) NetImageConfig * config; + +@end + +@implementation NetImageView + +- (instancetype)initWithUrl:(NSString *)url { + return [self initWithUrl:url config:nil]; +} + +- (instancetype)initWithConfig:(NetImageConfig *)config { + return [self initWithUrl:@"" config:config]; +} + +- (instancetype)initWithUrl:(NSString *)url config:(NetImageConfig *)config { + self = [super init]; + if (self) { + _state = NetImageStateUnload; + _config = config; + if (_config.autoLoad) { + [self setImageUrl:url]; + } else { + [self initImageUrl:url]; + } + + } + return self; +} + +- (void)initImageUrl:(NSString *)imageUrl { + _imageUrl = imageUrl; + _innerConfigedUrl = [UIImageConstant configUrl:_imageUrl type:self.config.imageType radius:self.config.radius]; +} + +- (void)setImageUrl:(NSString *)imageUrl { + [self initImageUrl:imageUrl]; + UIImage * image = [[SDImageCache sharedImageCache] imageFromCacheForKey:_innerConfigedUrl]; + if (image) { + self.image = image; + self.state = NetImageStateLoaded; + } else { + [self loadImage:nil]; + } +} + +- (void)loadImage:(LoadCompletion)completion { + self.state = NetImageStateLoading; + [self sd_setImageWithURL:[NSURL URLWithString:_innerConfigedUrl] placeholderImage:self.config.placeHolder options:SDWebImageRetryFailed completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) { + if (error) { + self.state = NetImageStateUnload; + } else { + self.state = NetImageStateLoaded; + if (completion) { + completion(image, imageURL); + }; + } + }]; +} + +- (void)loadImageWithUrl:(NSString * _Nonnull)imageUrl completion:(LoadCompletion)completion { + [self initImageUrl:imageUrl]; + [self loadImage:completion]; +} + +- (NetImageConfig *)config { + if (!_config) { + _config = [[NetImageConfig alloc] init]; + } + return _config; +} + +@end diff --git a/YuMi/CustomUI/UIImageView/NetIndicateDisposition.h b/YuMi/CustomUI/UIImageView/NetIndicateDisposition.h deleted file mode 100644 index e9925de1..00000000 --- a/YuMi/CustomUI/UIImageView/NetIndicateDisposition.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// NetIndicateDisposition.h -// YUMI -// -// Created by zu on 2021/11/25. -// - -#import -#import "UIIndicateConstant.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface NetIndicateDisposition : NSObject - -@property (nonatomic, assign) BOOL autoChamber; -@property (nonatomic, assign) ImageGenre imageType; -@property (nonatomic, assign) CGFloat radius; -@property (nonatomic, strong) UIImage * deparatmentMaintainrietary; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/UIImageView/NetIndicateDisposition.m b/YuMi/CustomUI/UIImageView/NetIndicateDisposition.m deleted file mode 100644 index 561c1dc4..00000000 --- a/YuMi/CustomUI/UIImageView/NetIndicateDisposition.m +++ /dev/null @@ -1,21 +0,0 @@ -// -// NetIndicateDisposition.m -// YUMI -// -// Created by zu on 2021/11/25. -// - -#import "NetIndicateDisposition.h" - -@implementation NetIndicateDisposition - -- (instancetype)init -{ - self = [super init]; - if (self) { - _autoChamber = YES; - } - return self; -} - -@end diff --git a/YuMi/CustomUI/UIImageView/NetIndicateRegard.h b/YuMi/CustomUI/UIImageView/NetIndicateRegard.h deleted file mode 100644 index b6e181ca..00000000 --- a/YuMi/CustomUI/UIImageView/NetIndicateRegard.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// NetIndicateRegard.h -// YUMI -// -// Created by zu on 2021/11/2. -// - -#import -#import "UIIndicateConstant.h" -#import "NetIndicateDisposition.h" - -NS_ASSUME_NONNULL_BEGIN - -typedef void(^LoadCompletion)(UIImage *image, NSURL * url); - -typedef NS_ENUM(NSInteger, NetImageDeclare){ - NetImageDeclareUnload = 1, - NetImageDeclareLoading, - NetImageDeclareLoaded, -}; - -@interface NetIndicateRegard : UIImageView - -@property (nonatomic, assign, readonly) NetImageDeclare state; -@property (nonatomic, copy) NSString* imageUrl; - -- (instancetype)initWithUrl:(NSString * _Nonnull)imageUrl; -- (instancetype)initWithConfig:(NetIndicateDisposition * _Nullable)config; -- (instancetype)initWithUrl:(NSString * _Nonnull)imageUrl config:(NetIndicateDisposition * _Nullable)config; - -- (void)chamberIndictowardse:(LoadCompletion _Nullable)completion; -- (void)chamberIndictowardseAboutWeebsite:(NSString * _Nonnull)imageUrl completion:(LoadCompletion _Nullable)completion; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/UIImageView/NetIndicateRegard.m b/YuMi/CustomUI/UIImageView/NetIndicateRegard.m deleted file mode 100644 index 6bb69d5f..00000000 --- a/YuMi/CustomUI/UIImageView/NetIndicateRegard.m +++ /dev/null @@ -1,88 +0,0 @@ -// -// NetIndicateRegard.m -// YUMI -// -// Created by zu on 2021/11/2. -// - -#import "NetIndicateRegard.h" -#import -#import - -@interface NetIndicateRegard() - -@property (nonatomic, assign, readwrite) NetImageDeclare state; -@property (nonatomic, copy) NSString * innerDispositionedUrl; - -@property (nonatomic, strong) NetIndicateDisposition * config; - -@end - -@implementation NetIndicateRegard - -- (instancetype)initWithUrl:(NSString *)url { - return [self initWithUrl:url config:nil]; -} - -- (instancetype)initWithConfig:(NetIndicateDisposition *)config { - return [self initWithUrl:@"" config:config]; -} - -- (instancetype)initWithUrl:(NSString *)url config:(NetIndicateDisposition *)config { - self = [super init]; - if (self) { - _state = NetImageDeclareUnload; - _config = config; - if (_config.autoChamber) { - [self setImageUrl:url]; - } else { - [self initIndictowardseWeebsite:url]; - } - - } - return self; -} - -- (void)initIndictowardseWeebsite:(NSString *)imageUrl { - _imageUrl = imageUrl; - _innerDispositionedUrl = [UIIndicateConstant prohibitipositionWeebsite:_imageUrl type:self.config.imageType radius:self.config.radius]; -} - -- (void)setImageUrl:(NSString *)imageUrl { - [self initIndictowardseWeebsite:imageUrl]; - UIImage * image = [[SDImageCache sharedImageCache] imageFromCacheForKey:_innerDispositionedUrl]; - if (image) { - self.image = image; - self.state = NetImageDeclareLoaded; - } else { - [self chamberIndictowardse:nil]; - } -} - -- (void)chamberIndictowardse:(LoadCompletion)completion { - self.state = NetImageDeclareLoading; - [self sd_setImageWithURL:[NSURL URLWithString:_innerDispositionedUrl] placeholderImage:self.config.deparatmentMaintainrietary options:SDWebImageRetryFailed completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) { - if (error) { - self.state = NetImageDeclareUnload; - } else { - self.state = NetImageDeclareLoaded; - if (completion) { - completion(image, imageURL); - }; - } - }]; -} - -- (void)chamberIndictowardseAboutWeebsite:(NSString * _Nonnull)imageUrl completion:(LoadCompletion)completion { - [self initIndictowardseWeebsite:imageUrl]; - [self chamberIndictowardse:completion]; -} - -- (NetIndicateDisposition *)config { - if (!_config) { - _config = [[NetIndicateDisposition alloc] init]; - } - return _config; -} - -@end diff --git a/YuMi/CustomUI/UIImageView/UIImageConstant.h b/YuMi/CustomUI/UIImageView/UIImageConstant.h new file mode 100644 index 00000000..e4020384 --- /dev/null +++ b/YuMi/CustomUI/UIImageView/UIImageConstant.h @@ -0,0 +1,52 @@ +// +// UIImageViewConstant.h +// YUMI +// +// Created by YUMI on 2021/9/17. +// 存放一些 加载图片 需要做的裁剪的key + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface UIImageConstant : NSObject + + +#pragma mark - 图片相关的 +UIKIT_EXTERN NSString * const kImageTypeRoomFace; //房间表情 +UIKIT_EXTERN NSString * const kImageTypeRoomGift; //房间礼物 +UIKIT_EXTERN NSString * const kImageTypeUserIcon; //用户头像60x60 +UIKIT_EXTERN NSString * const kImageTypeUserLibaryDetail;//用户相册大图nil +UIKIT_EXTERN NSString * const kImageTypeCornerAvatar;//圆角图形,会先把图形裁剪成正方形,并且转换为png +UIKIT_EXTERN NSString * const kImageTypeUserInfoAlbum;//用户信息里面相册 +UIKIT_EXTERN NSString * const kImageTypeUserCardLevel;///用户资料卡中 等级以高度20等比例缩放 +UIKIT_EXTERN NSString * const kImageTypeMonentsPhoto;///动态中的图片 +typedef NS_ENUM(NSUInteger, ImageType){ + ImageTypeRoomFace = 1, //房间表情 + ImageTypeRoomGift, //房间礼物 + ImageTypeUserIcon, //用户头像60x60 + ImageTypeUserLibaryDetail, //用户相册大图 + ImageTypeCornerAvatar, //圆角图形,会先把图形裁剪成正方形,并且转换为png + ImageTypeUserInfoAlbum, ///用户信息里面相册 + ImageTypeUserCardLevel, /// 用户资料卡中 等级以高度20等比例缩放 + ImageTypeMonentsPhoto, ///动态中的图片 +}; + +///展位图 + +/// 头像的默认占位图 ++ (UIImage *)defaultAvatarPlaceholder; +///空白头像缺省图 ++ (UIImage *)defaultEmptyAvatarPlaceholder; +/// 空白图的占位图 ++ (UIImage *)defalutEmptyPlaceholder; +/// banner的占位图 ++ (UIImage *)defalutBannerPlaceholder; + ++ (NSString*)configUrl:(NSString*)url type:(ImageType)type; ++ (NSString*)configUrl:(NSString*)url radius:(CGFloat)radius; ++ (NSString*)configUrl:(NSString*)url type:(ImageType)type radius:(CGFloat)radius; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/UIImageView/UIImageConstant.m b/YuMi/CustomUI/UIImageView/UIImageConstant.m new file mode 100644 index 00000000..623b61bc --- /dev/null +++ b/YuMi/CustomUI/UIImageView/UIImageConstant.m @@ -0,0 +1,107 @@ +// +// UIImageViewConstant.m +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import "UIImageConstant.h" + +@implementation UIImageConstant + +/// 房间表情 +NSString * const kImageTypeRoomFace = @""; +/// 房间礼物 +NSString * const kImageTypeRoomGift = @""; +/// 用户头像150x150 +NSString * const kImageTypeUserIcon = @"imageMogr2/auto-orient/thumbnail/150x150"; +/// 用户相册大图 +NSString * const kImageTypeUserLibaryDetail = @"imageMogr2/auto-orient/thumbnail/300x300"; +NSString * const kImageTypeCornerAvatar = @"imageMogr2/auto-orient/thumbnail/300x300/format/png"; +/// 用户信息里面相册 +NSString * const kImageTypeUserInfoAlbum = @"imageMogr2/auto-orient/blur/375x375"; +/// 用户信息里面相册 +NSString * const kImageTypeUserCardLevel = @"imageMogr2/thumbnail/x40"; +/// 动态中的图片 400 * 400 +NSString * const kImageTypeMonentsPhoto = @"imageMogr2/auto-orient/thumbnail/400x400"; + +/// 头像的默认占位图 ++ (UIImage *)defaultAvatarPlaceholder { + return [UIImage imageNamed:@"common_avatar"]; +} + +///空白头像缺省图 ++ (UIImage *)defaultEmptyAvatarPlaceholder { + return [UIImage imageNamed:@"common_empty_avatar"]; +} + +/// 空白图的占位图 ++ (UIImage *)defalutEmptyPlaceholder { + return [UIImage imageNamed:@"common_empty"]; +} +/// banner的占位图 ++ (UIImage *)defalutBannerPlaceholder { + return [UIImage imageNamed:@"common_banner"]; +} + ++ (NSString *)configUrl:(NSString *)url type:(ImageType)type { + return [self configUrl:url type:type radius:0]; +} + ++ (NSString *)configUrl:(NSString *)url radius:(CGFloat)radius { + return [self configUrl:url type:-1 radius:radius]; +} + ++ (NSString *)configUrl:(NSString *)url type:(ImageType)type radius:(CGFloat)radius { + if (!url || url.length <= 0) return nil; + NSMutableString *urlString = [NSMutableString stringWithString:url]; + NSString *configUrl = nil; + switch (type) { + case ImageTypeUserIcon: + configUrl = kImageTypeUserIcon; + break; + case ImageTypeCornerAvatar: + configUrl = kImageTypeCornerAvatar; + break; + case ImageTypeRoomFace: + configUrl = kImageTypeRoomFace; + break; + case ImageTypeUserLibaryDetail: + configUrl = kImageTypeUserLibaryDetail; + break; + case ImageTypeRoomGift: + configUrl = kImageTypeRoomGift; + break; + case ImageTypeUserInfoAlbum: + configUrl = kImageTypeUserInfoAlbum; + break; + case ImageTypeUserCardLevel: + configUrl = kImageTypeUserCardLevel; + case ImageTypeMonentsPhoto: + configUrl = kImageTypeMonentsPhoto; + break; + default: + break; + } + + if (configUrl) { + if ([url containsString:@"?"]) { + [urlString appendString:@"|"]; + }else{ + [urlString appendString:@"?"]; + } + [urlString appendString:configUrl]; + } + + if (radius > 0) { + [urlString appendString:[NSString stringWithFormat:@"|roundPic/radius/%f", radius]]; + } + + return CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, + (CFStringRef)urlString, + NULL, + (CFStringRef)@"|", + kCFStringEncodingUTF8)); +} + +@end diff --git a/YuMi/CustomUI/UIImageView/UIIndicateConstant.h b/YuMi/CustomUI/UIImageView/UIIndicateConstant.h deleted file mode 100644 index d73e94f3..00000000 --- a/YuMi/CustomUI/UIImageView/UIIndicateConstant.h +++ /dev/null @@ -1,47 +0,0 @@ -// -// UIImageViewConstant.h -// YUMI -// -// Created by YUMI on 2021/9/17. -// 存放一些 加载图片 需要做的裁剪的key - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface UIIndicateConstant : NSObject - - -#pragma mark - 图片相关的 -UIKIT_EXTERN NSString * const kImageTypeRoomFace; -UIKIT_EXTERN NSString * const kImageTypeRoomGift; -UIKIT_EXTERN NSString * const kImageTypeUserIcon; -UIKIT_EXTERN NSString * const kImageTypeUserLibaryDetail; -UIKIT_EXTERN NSString * const kImageTypeCornerAvatar; -UIKIT_EXTERN NSString * const kImageTypeUserInfoAlbum; -UIKIT_EXTERN NSString * const kImageTypeUserCardLevel; -UIKIT_EXTERN NSString * const kImageTypeMonentsPhoto; -typedef NS_ENUM(NSUInteger, ImageGenre){ - ImageGenreRoomFace = 1, - ImageGenreRoomGift, - ImageGenreUserIcon, - ImageGenreUserLibaryDetail, - ImageGenreCornerAvatar, - ImageGenreUserInfoAlbum, - ImageGenreUserCardLevel, - ImageGenreMonentsPhoto, -}; - - -+ (UIImage *)deficiencyIntelligenceportraitDepapossessor; -+ (UIImage *)deficiencyDispossessIntelligenceportraitDepapossessor; -+ (UIImage *)defalutDispossessDepapossessor; -+ (UIImage *)defalutOriflammeDepapossessor; - -+ (NSString*)prohibitipositionWeebsite:(NSString*)url type:(ImageGenre)type; -+ (NSString*)prohibitipositionWeebsite:(NSString*)url radius:(CGFloat)radius; -+ (NSString*)prohibitipositionWeebsite:(NSString*)url type:(ImageGenre)type radius:(CGFloat)radius; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/UIImageView/UIIndicateConstant.m b/YuMi/CustomUI/UIImageView/UIIndicateConstant.m deleted file mode 100644 index 8a1c7cf3..00000000 --- a/YuMi/CustomUI/UIImageView/UIIndicateConstant.m +++ /dev/null @@ -1,96 +0,0 @@ -// -// UIImageViewConstant.m -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import "UIIndicateConstant.h" - -@implementation UIIndicateConstant - -NSString * const kImageTypeRoomFace = @""; -NSString * const kImageTypeRoomGift = @""; -NSString * const kImageTypeUserIcon = @"imageMogr2/auto-orient/thumbnail/150x150"; -NSString * const kImageTypeUserLibaryDetail = @"imageMogr2/auto-orient/thumbnail/300x300"; -NSString * const kImageTypeCornerAvatar = @"imageMogr2/auto-orient/thumbnail/300x300/format/png"; -NSString * const kImageTypeUserInfoAlbum = @"imageMogr2/auto-orient/blur/375x375"; -NSString * const kImageTypeUserCardLevel = @"imageMogr2/thumbnail/x40"; -NSString * const kImageTypeMonentsPhoto = @"imageMogr2/auto-orient/thumbnail/400x400"; - -+ (UIImage *)deficiencyIntelligenceportraitDepapossessor { - return [UIImage imageNamed:@"yumi_same_avatar"]; -} - -+ (UIImage *)deficiencyDispossessIntelligenceportraitDepapossessor { - return [UIImage imageNamed:@"yumi_same_empty_avatar"]; -} - -+ (UIImage *)defalutDispossessDepapossessor { - return [UIImage imageNamed:@"yumi_same_empty"]; -} -+ (UIImage *)defalutOriflammeDepapossessor { - return [UIImage imageNamed:@"common_banner"]; -} - -+ (NSString *)prohibitipositionWeebsite:(NSString *)url type:(ImageGenre)type { - return [self prohibitipositionWeebsite:url type:type radius:0]; -} - -+ (NSString *)prohibitipositionWeebsite:(NSString *)url radius:(CGFloat)radius { - return [self prohibitipositionWeebsite:url type:-1 radius:radius]; -} - -+ (NSString *)prohibitipositionWeebsite:(NSString *)url type:(ImageGenre)type radius:(CGFloat)radius { - if (!url || url.length <= 0) return nil; - NSMutableString *urlString = [NSMutableString stringWithString:url]; - NSString *prohibitipositionWeebsite = nil; - switch (type) { - case ImageGenreUserIcon: - prohibitipositionWeebsite = kImageTypeUserIcon; - break; - case ImageGenreCornerAvatar: - prohibitipositionWeebsite = kImageTypeCornerAvatar; - break; - case ImageGenreRoomFace: - prohibitipositionWeebsite = kImageTypeRoomFace; - break; - case ImageGenreUserLibaryDetail: - prohibitipositionWeebsite = kImageTypeUserLibaryDetail; - break; - case ImageGenreRoomGift: - prohibitipositionWeebsite = kImageTypeRoomGift; - break; - case ImageGenreUserInfoAlbum: - prohibitipositionWeebsite = kImageTypeUserInfoAlbum; - break; - case ImageGenreUserCardLevel: - prohibitipositionWeebsite = kImageTypeUserCardLevel; - case ImageGenreMonentsPhoto: - prohibitipositionWeebsite = kImageTypeMonentsPhoto; - break; - default: - break; - } - - if (prohibitipositionWeebsite) { - if ([url containsString:@"?"]) { - [urlString appendString:@"|"]; - }else{ - [urlString appendString:@"?"]; - } - [urlString appendString:prohibitipositionWeebsite]; - } - - if (radius > 0) { - [urlString appendString:[NSString stringWithFormat:@"|roundPic/radius/%f", radius]]; - } - - return CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, - (CFStringRef)urlString, - NULL, - (CFStringRef)@"|", - kCFStringEncodingUTF8)); -} - -@end diff --git a/YuMi/CustomUI/UIViewCorner/UIView+Corner.h b/YuMi/CustomUI/UIViewCorner/UIView+Corner.h index 31f67b8a..28104dba 100644 --- a/YuMi/CustomUI/UIViewCorner/UIView+Corner.h +++ b/YuMi/CustomUI/UIViewCorner/UIView+Corner.h @@ -10,7 +10,7 @@ NS_ASSUME_NONNULL_BEGIN @interface UIView (Corner) -- (void)setMonopolizeAboutContraryApexMonopolize:(CGFloat)leftTop +- (void)setCornerWithLeftTopCorner:(CGFloat)leftTop rightTopCorner:(CGFloat)rigtTop bottomLeftCorner:(CGFloat)bottemLeft bottomRightCorner:(CGFloat)bottemRight diff --git a/YuMi/CustomUI/UIViewCorner/UIView+Corner.m b/YuMi/CustomUI/UIViewCorner/UIView+Corner.m index 30a2a407..a9e6d6ea 100644 --- a/YuMi/CustomUI/UIViewCorner/UIView+Corner.m +++ b/YuMi/CustomUI/UIViewCorner/UIView+Corner.m @@ -9,7 +9,7 @@ @implementation UIView (Corner) -- (void)setMonopolizeAboutContraryApexMonopolize:(CGFloat)leftTop +- (void)setCornerWithLeftTopCorner:(CGFloat)leftTop rightTopCorner:(CGFloat)rigtTop bottomLeftCorner:(CGFloat)bottemLeft bottomRightCorner:(CGFloat)bottemRight @@ -21,18 +21,18 @@ maskPath.lineWidth = 1.0; maskPath.lineCapStyle = kCGLineCapRound; maskPath.lineJoinStyle = kCGLineJoinRound; - [maskPath moveToPoint:CGPointMake(bottemRight, height)]; + [maskPath moveToPoint:CGPointMake(bottemRight, height)]; //左下角 [maskPath addLineToPoint:CGPointMake(width - bottemRight, height)]; - [maskPath addQuadCurveToPoint:CGPointMake(width, height- bottemRight) controlPoint:CGPointMake(width, height)]; - [maskPath addLineToPoint:CGPointMake(width, rigtTop)]; + [maskPath addQuadCurveToPoint:CGPointMake(width, height- bottemRight) controlPoint:CGPointMake(width, height)]; //右下角的圆弧 + [maskPath addLineToPoint:CGPointMake(width, rigtTop)]; //右边直线 - [maskPath addQuadCurveToPoint:CGPointMake(width - rigtTop, 0) controlPoint:CGPointMake(width, 0)]; - [maskPath addLineToPoint:CGPointMake(leftTop, 0)]; + [maskPath addQuadCurveToPoint:CGPointMake(width - rigtTop, 0) controlPoint:CGPointMake(width, 0)]; //右上角圆弧 + [maskPath addLineToPoint:CGPointMake(leftTop, 0)]; //顶部直线 - [maskPath addQuadCurveToPoint:CGPointMake(0, leftTop) controlPoint:CGPointMake(0, 0)]; - [maskPath addLineToPoint:CGPointMake(0, height - bottemLeft)]; - [maskPath addQuadCurveToPoint:CGPointMake(bottemLeft, height) controlPoint:CGPointMake(0, height)]; + [maskPath addQuadCurveToPoint:CGPointMake(0, leftTop) controlPoint:CGPointMake(0, 0)]; //左上角圆弧 + [maskPath addLineToPoint:CGPointMake(0, height - bottemLeft)]; //左边直线 + [maskPath addQuadCurveToPoint:CGPointMake(bottemLeft, height) controlPoint:CGPointMake(0, height)]; //左下角圆弧 CAShapeLayer *maskLayer = [CAShapeLayer layer]; maskLayer.frame = CGRectMake(0, 0, size.width, size.height); diff --git a/YuMi/CustomUI/VagueImageView/UIImage+ImageEffects.h b/YuMi/CustomUI/VagueImageView/UIImage+ImageEffects.h index eee4fae0..5e1b1085 100755 --- a/YuMi/CustomUI/VagueImageView/UIImage+ImageEffects.h +++ b/YuMi/CustomUI/VagueImageView/UIImage+ImageEffects.h @@ -1,14 +1,107 @@ - +/* + File: UIImage+ImageEffects.h + Abstract: This is a category of UIImage that adds methods to apply blur and tint effects to an image. This is the code you’ll want to look out to find out how to use vImage to efficiently calculate a blur. + Version: 1.0 + + Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple + Inc. ("Apple") in consideration of your agreement to the following + terms, and your use, installation, modification or redistribution of + this Apple software constitutes acceptance of these terms. If you do + not agree with these terms, please do not use, install, modify or + redistribute this Apple software. + + In consideration of your agreement to abide by the following terms, and + subject to these terms, Apple grants you a personal, non-exclusive + license, under Apple's copyrights in this original Apple software (the + "Apple Software"), to use, reproduce, modify and redistribute the Apple + Software, with or without modifications, in source and/or binary forms; + provided that if you redistribute the Apple Software in its entirety and + without modifications, you must retain this notice and the following + text and disclaimers in all such redistributions of the Apple Software. + Neither the name, trademarks, service marks or logos of Apple Inc. may + be used to endorse or promote products derived from the Apple Software + without specific prior written permission from Apple. Except as + expressly stated in this notice, no other rights or licenses, express or + implied, are granted by Apple herein, including but not limited to any + patent rights that may be infringed by your derivative works or by other + works in which the Apple Software may be incorporated. + + The Apple Software is provided by Apple on an "AS IS" basis. APPLE + MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION + THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND + OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. + + IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, + MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED + AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), + STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + + Copyright (C) 2013 Apple Inc. All Rights Reserved. + + + Copyright © 2013 Apple Inc. All rights reserved. + WWDC 2013 License + + NOTE: This Apple Software was supplied by Apple as part of a WWDC 2013 + Session. Please refer to the applicable WWDC 2013 Session for further + information. + + IMPORTANT: This Apple software is supplied to you by Apple Inc. + ("Apple") in consideration of your agreement to the following terms, and + your use, installation, modification or redistribution of this Apple + software constitutes acceptance of these terms. If you do not agree with + these terms, please do not use, install, modify or redistribute this + Apple software. + + In consideration of your agreement to abide by the following terms, and + subject to these terms, Apple grants you a non-exclusive license, under + Apple's copyrights in this original Apple software (the "Apple + Software"), to use, reproduce, modify and redistribute the Apple + Software, with or without modifications, in source and/or binary forms; + provided that if you redistribute the Apple Software in its entirety and + without modifications, you must retain this notice and the following + text and disclaimers in all such redistributions of the Apple Software. + Neither the name, trademarks, service marks or logos of Apple Inc. may + be used to endorse or promote products derived from the Apple Software + without specific prior written permission from Apple. Except as + expressly stated in this notice, no other rights or licenses, express or + implied, are granted by Apple herein, including but not limited to any + patent rights that may be infringed by your derivative works or by other + works in which the Apple Software may be incorporated. + + The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES + NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND + OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. + + IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, + MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED + AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), + STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + + EA1002 + 5/3/2013 + */ #import @interface UIImage (ImageEffects) -- (UIImage *)demandShiningImpression; -- (UIImage *)demandExtraShiningImpression; -- (UIImage *)demandDarkImpression; -- (UIImage *)demandTintImpressionAboutPrettify:(UIColor *)tintColor; +- (UIImage *)applyLightEffect; +- (UIImage *)applyExtraLightEffect; +- (UIImage *)applyDarkEffect; +- (UIImage *)applyTintEffectWithColor:(UIColor *)tintColor; -- (UIImage *)demandInprohibititinctAboutRestrictions:(CGFloat)blurRadius tintColor:(UIColor *)tintColor saturationDeltaFactor:(CGFloat)saturationDeltaFactor maskImage:(UIImage *)maskImage; +- (UIImage *)applyBlurWithRadius:(CGFloat)blurRadius tintColor:(UIColor *)tintColor saturationDeltaFactor:(CGFloat)saturationDeltaFactor maskImage:(UIImage *)maskImage; @end diff --git a/YuMi/CustomUI/VagueImageView/UIImage+ImageEffects.m b/YuMi/CustomUI/VagueImageView/UIImage+ImageEffects.m index df19467d..e1d6acd2 100755 --- a/YuMi/CustomUI/VagueImageView/UIImage+ImageEffects.m +++ b/YuMi/CustomUI/VagueImageView/UIImage+ImageEffects.m @@ -1,4 +1,97 @@ - +/* + File: UIImage+ImageEffects.m + Abstract: This is a category of UIImage that adds methods to apply blur and tint effects to an image. This is the code you’ll want to look out to find out how to use vImage to efficiently calculate a blur. + Version: 1.0 + + Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple + Inc. ("Apple") in consideration of your agreement to the following + terms, and your use, installation, modification or redistribution of + this Apple software constitutes acceptance of these terms. If you do + not agree with these terms, please do not use, install, modify or + redistribute this Apple software. + + In consideration of your agreement to abide by the following terms, and + subject to these terms, Apple grants you a personal, non-exclusive + license, under Apple's copyrights in this original Apple software (the + "Apple Software"), to use, reproduce, modify and redistribute the Apple + Software, with or without modifications, in source and/or binary forms; + provided that if you redistribute the Apple Software in its entirety and + without modifications, you must retain this notice and the following + text and disclaimers in all such redistributions of the Apple Software. + Neither the name, trademarks, service marks or logos of Apple Inc. may + be used to endorse or promote products derived from the Apple Software + without specific prior written permission from Apple. Except as + expressly stated in this notice, no other rights or licenses, express or + implied, are granted by Apple herein, including but not limited to any + patent rights that may be infringed by your derivative works or by other + works in which the Apple Software may be incorporated. + + The Apple Software is provided by Apple on an "AS IS" basis. APPLE + MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION + THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND + OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. + + IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, + MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED + AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), + STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + + Copyright (C) 2013 Apple Inc. All Rights Reserved. + + + Copyright © 2013 Apple Inc. All rights reserved. + WWDC 2013 License + + NOTE: This Apple Software was supplied by Apple as part of a WWDC 2013 + Session. Please refer to the applicable WWDC 2013 Session for further + information. + + IMPORTANT: This Apple software is supplied to you by Apple Inc. + ("Apple") in consideration of your agreement to the following terms, and + your use, installation, modification or redistribution of this Apple + software constitutes acceptance of these terms. If you do not agree with + these terms, please do not use, install, modify or redistribute this + Apple software. + + In consideration of your agreement to abide by the following terms, and + subject to these terms, Apple grants you a non-exclusive license, under + Apple's copyrights in this original Apple software (the "Apple + Software"), to use, reproduce, modify and redistribute the Apple + Software, with or without modifications, in source and/or binary forms; + provided that if you redistribute the Apple Software in its entirety and + without modifications, you must retain this notice and the following + text and disclaimers in all such redistributions of the Apple Software. + Neither the name, trademarks, service marks or logos of Apple Inc. may + be used to endorse or promote products derived from the Apple Software + without specific prior written permission from Apple. Except as + expressly stated in this notice, no other rights or licenses, express or + implied, are granted by Apple herein, including but not limited to any + patent rights that may be infringed by your derivative works or by other + works in which the Apple Software may be incorporated. + + The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES + NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE + IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND + OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. + + IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, + MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED + AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), + STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + + EA1002 + 5/3/2013 + */ #import "UIImage+ImageEffects.h" @@ -9,28 +102,28 @@ @implementation UIImage (ImageEffects) -- (UIImage *)demandShiningImpression +- (UIImage *)applyLightEffect { UIColor *tintColor = [UIColor colorWithWhite:1.0 alpha:0.3]; - return [self demandInprohibititinctAboutRestrictions:30 tintColor:tintColor saturationDeltaFactor:1.8 maskImage:nil]; + return [self applyBlurWithRadius:30 tintColor:tintColor saturationDeltaFactor:1.8 maskImage:nil]; } -- (UIImage *)demandExtraShiningImpression +- (UIImage *)applyExtraLightEffect { UIColor *tintColor = [UIColor colorWithWhite:0.97 alpha:0.82]; - return [self demandInprohibititinctAboutRestrictions:20 tintColor:tintColor saturationDeltaFactor:1.8 maskImage:nil]; + return [self applyBlurWithRadius:20 tintColor:tintColor saturationDeltaFactor:1.8 maskImage:nil]; } -- (UIImage *)demandDarkImpression +- (UIImage *)applyDarkEffect { UIColor *tintColor = [UIColor colorWithWhite:0.11 alpha:0.73]; - return [self demandInprohibititinctAboutRestrictions:20 tintColor:tintColor saturationDeltaFactor:1.8 maskImage:nil]; + return [self applyBlurWithRadius:20 tintColor:tintColor saturationDeltaFactor:1.8 maskImage:nil]; } -- (UIImage *)demandTintImpressionAboutPrettify:(UIColor *)tintColor +- (UIImage *)applyTintEffectWithColor:(UIColor *)tintColor { const CGFloat EffectColorAlpha = 0.6; UIColor *effectColor = tintColor; @@ -47,13 +140,13 @@ effectColor = [UIColor colorWithRed:r green:g blue:b alpha:EffectColorAlpha]; } } - return [self demandInprohibititinctAboutRestrictions:10 tintColor:effectColor saturationDeltaFactor:-1.0 maskImage:nil]; + return [self applyBlurWithRadius:10 tintColor:effectColor saturationDeltaFactor:-1.0 maskImage:nil]; } -- (UIImage *)demandInprohibititinctAboutRestrictions:(CGFloat)blurRadius tintColor:(UIColor *)tintColor saturationDeltaFactor:(CGFloat)saturationDeltaFactor maskImage:(UIImage *)maskImage +- (UIImage *)applyBlurWithRadius:(CGFloat)blurRadius tintColor:(UIColor *)tintColor saturationDeltaFactor:(CGFloat)saturationDeltaFactor maskImage:(UIImage *)maskImage { - + // Check pre-conditions. if (self.size.width < 1 || self.size.height < 1) { NSLog (@"*** error: invalid size: (%.2f x %.2f). Both dimensions must be >= 1: %@", self.size.width, self.size.height, self); return nil; @@ -94,22 +187,22 @@ effectOutBuffer.rowBytes = CGBitmapContextGetBytesPerRow(effectOutContext); if (hasBlur) { - - - - - - - - - - - - + // A description of how to compute the box kernel width from the Gaussian + // radius (aka standard deviation) appears in the SVG spec: + // http://www.w3.org/TR/SVG/filters.html#feGaussianBlurElement + // + // For larger values of 's' (s >= 2.0), an approximation can be used: Three + // successive box-blurs build a piece-wise quadratic convolution kernel, which + // approximates the Gaussian kernel to within roughly 3%. + // + // let d = floor(s * 3*sqrt(2*pi)/4 + 0.5) + // + // ... if d is odd, use three box-blurs of size 'd', centered on the output pixel. + // CGFloat inputRadius = blurRadius * [[UIScreen mainScreen] scale]; NSUInteger radius = floor(inputRadius * 3. * sqrt(2 * M_PI) / 4 + 0.5); if (radius % 2 != 1) { - radius += 1; + radius += 1; // force radius to be odd so that the three box-blur methodology works. } vImageBoxConvolve_ARGB8888(&effectInBuffer, &effectOutBuffer, NULL, 0, 0, radius, radius, 0, kvImageEdgeExtend); vImageBoxConvolve_ARGB8888(&effectOutBuffer, &effectInBuffer, NULL, 0, 0, radius, radius, 0, kvImageEdgeExtend); @@ -147,16 +240,16 @@ UIGraphicsEndImageContext(); } - + // Set up output context. UIGraphicsBeginImageContextWithOptions(self.size, NO, [[UIScreen mainScreen] scale]); CGContextRef outputContext = UIGraphicsGetCurrentContext(); CGContextScaleCTM(outputContext, 1.0, -1.0); CGContextTranslateCTM(outputContext, 0, -self.size.height); - + // Draw base image. CGContextDrawImage(outputContext, imageRect, self.CGImage); - + // Draw effect image. if (hasBlur) { CGContextSaveGState(outputContext); if (maskImage) { @@ -166,7 +259,7 @@ CGContextRestoreGState(outputContext); } - + // Add in color tint. if (tintColor) { CGContextSaveGState(outputContext); CGContextSetFillColorWithColor(outputContext, tintColor.CGColor); @@ -174,7 +267,7 @@ CGContextRestoreGState(outputContext); } - + // Output image is ready. UIImage *outputImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); diff --git a/YuMi/CustomUI/XCCurrentVCStackExecutive.h b/YuMi/CustomUI/XCCurrentVCStackExecutive.h deleted file mode 100644 index e1da8bdb..00000000 --- a/YuMi/CustomUI/XCCurrentVCStackExecutive.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMCurrentVCStackManager.h -// YMBaseUIKit -// -// Created by 卫明何 on 2018/8/9. -// Copyright © 2018年 YUIMI. All rights reserved. -// - -#import -#import - -@interface XCCurrentVCStackExecutive : NSObject - -+ (instancetype)shareManager; - - -- (UINavigationController *)universalBreeadcrumbGovernancer; - - -- (UIViewController *)getCurrentVC; - - -@end diff --git a/YuMi/CustomUI/XCCurrentVCStackExecutive.m b/YuMi/CustomUI/XCCurrentVCStackExecutive.m deleted file mode 100644 index dbfa6d18..00000000 --- a/YuMi/CustomUI/XCCurrentVCStackExecutive.m +++ /dev/null @@ -1,122 +0,0 @@ -// -// YMCurrentVCStackManager.m -// YMBaseUIKit -// -// Created by 卫明何 on 2018/8/9. -// Copyright © 2018年 YUIMI. All rights reserved. -// - -#import "XCCurrentVCStackExecutive.h" - -NSString * const kRoomChatPushViewKey = @"kRoomChatPushViewKey"; -@implementation XCCurrentVCStackExecutive - -+ (instancetype)shareManager { - static dispatch_once_t onceToken = 0; - static id instance; - dispatch_once(&onceToken, ^{ - instance = [[self alloc] init]; - }); - - return instance; -} - -- (UIViewController *)getCurrentVC { - - [[NSNotificationCenter defaultCenter] postNotificationName:kRoomChatPushViewKey object:nil]; - - UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController; - UIViewController *currentVC = [self getCurrentVCFrom:rootViewController]; - return currentVC; -} - -- (UIViewController *)getCurrentVCFrom:(UIViewController *)rootVC { - UIViewController *currentVC; - if ([rootVC presentedViewController]) { - - rootVC = [rootVC presentedViewController]; - } - if ([rootVC isKindOfClass:[UITabBarController class]]) { - - currentVC = [self getCurrentVCFrom:[(UITabBarController *)rootVC selectedViewController]]; - - } else if ([rootVC isKindOfClass:[UINavigationController class]]) { - - currentVC = [self getCurrentVCFrom:[(UINavigationController *)rootVC visibleViewController]]; - - } else { - - currentVC = rootVC; - } - return currentVC; -} - -- (UIViewController *)currentViewController { - UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow; - UIViewController *vc = keyWindow.rootViewController; - while (vc.presentedViewController) { - vc = vc.presentedViewController; - if ([vc isKindOfClass:[UINavigationController class]]) { - vc = [(UINavigationController *)vc visibleViewController]; - } - else if ([vc isKindOfClass:[UITabBarController class]]) { - vc = [(UITabBarController *)vc selectedViewController]; - } - } - return vc; -} - -- (UINavigationController *)universalBreeadcrumbGovernancer { - return [self universalNC]; -} - -- (UINavigationController *)universalNC{ - if (![[UIApplication sharedApplication].windows.lastObject isKindOfClass:[UIWindow class]]) { - NSAssert(0, @"未获取到导航控制器"); - return nil; - } - UIViewController *rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController; - return [self acquireUniversalNCByvirtueof:rootViewController]; -} - - -- (UINavigationController *)acquireUniversalNCByvirtueof:(UIViewController *)vc{ - if ([vc isKindOfClass:NSClassFromString(@"MMDrawerController")]) { - vc = (UIViewController *)[vc valueForKey:@"centerViewController"]; - } - if ([vc isKindOfClass:[UITabBarController class]]) { - UINavigationController *nc = ((UITabBarController *)vc).selectedViewController; - return [self acquireUniversalNCByvirtueof:nc]; - } - else if ([vc isKindOfClass:[UINavigationController class]]) { - if (((UINavigationController *)vc).presentedViewController) { - return [self acquireUniversalNCByvirtueof:((UINavigationController *)vc).presentedViewController]; - } - return [self acquireUniversalNCByvirtueof:((UINavigationController *)vc).topViewController]; - } - else if ([vc isKindOfClass:[UIViewController class]]) { - if (vc.presentedViewController) { - return [self acquireUniversalNCByvirtueof:vc.presentedViewController]; - } - else { - if (!vc.navigationController) { - if (vc.presentingViewController) { - [vc dismissViewControllerAnimated:NO completion:nil]; - - return [self acquireUniversalNCByvirtueof:vc.presentingViewController]; - } else { - NSAssert(0, @"未获取到导航控制器"); - return nil; - } - } else { - return vc.navigationController; - } - } - } - else { - NSAssert(0, @"未获取到导航控制器"); - return nil; - } -} - -@end diff --git a/YuMi/CustomUI/XCCurrentVCStackManager.h b/YuMi/CustomUI/XCCurrentVCStackManager.h new file mode 100644 index 00000000..aaa03a8f --- /dev/null +++ b/YuMi/CustomUI/XCCurrentVCStackManager.h @@ -0,0 +1,31 @@ +// +// YMCurrentVCStackManager.h +// YMBaseUIKit +// +// Created by 卫明何 on 2018/8/9. +// Copyright © 2018年 YUIMI. All rights reserved. +// + +#import +#import + +@interface XCCurrentVCStackManager : NSObject + ++ (instancetype)shareManager; + +/** + 当前的导航控制器 + + @return 导航控制器 + */ +- (UINavigationController *)currentNavigationController; + +/** + 当前最顶层控制器 + + @return 当前最顶层控制器 + */ +- (UIViewController *)getCurrentVC; + + +@end diff --git a/YuMi/CustomUI/XCCurrentVCStackManager.m b/YuMi/CustomUI/XCCurrentVCStackManager.m new file mode 100644 index 00000000..41a43723 --- /dev/null +++ b/YuMi/CustomUI/XCCurrentVCStackManager.m @@ -0,0 +1,123 @@ +// +// YMCurrentVCStackManager.m +// YMBaseUIKit +// +// Created by 卫明何 on 2018/8/9. +// Copyright © 2018年 YUIMI. All rights reserved. +// + +#import "XCCurrentVCStackManager.h" + +NSString * const kRoomChatPushViewKey = @"kRoomChatPushViewKey"; +@implementation XCCurrentVCStackManager + ++ (instancetype)shareManager { + static dispatch_once_t onceToken = 0; + static id instance; + dispatch_once(&onceToken, ^{ + instance = [[self alloc] init]; + }); + + return instance; +} + +- (UIViewController *)getCurrentVC { + ///兼容房间内私聊的 + [[NSNotificationCenter defaultCenter] postNotificationName:kRoomChatPushViewKey object:nil]; + + UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController; + UIViewController *currentVC = [self getCurrentVCFrom:rootViewController]; + return currentVC; +} + +- (UIViewController *)getCurrentVCFrom:(UIViewController *)rootVC { + UIViewController *currentVC; + if ([rootVC presentedViewController]) { + // 视图是被presented出来的 + rootVC = [rootVC presentedViewController]; + } + if ([rootVC isKindOfClass:[UITabBarController class]]) { + // 根视图为UITabBarController + currentVC = [self getCurrentVCFrom:[(UITabBarController *)rootVC selectedViewController]]; + + } else if ([rootVC isKindOfClass:[UINavigationController class]]) { + // 根视图为UINavigationController + currentVC = [self getCurrentVCFrom:[(UINavigationController *)rootVC visibleViewController]]; + + } else { + // 根视图为非导航类 + currentVC = rootVC; + } + return currentVC; +} + +- (UIViewController *)currentViewController { + UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow; + UIViewController *vc = keyWindow.rootViewController; + while (vc.presentedViewController) { + vc = vc.presentedViewController; + if ([vc isKindOfClass:[UINavigationController class]]) { + vc = [(UINavigationController *)vc visibleViewController]; + } + else if ([vc isKindOfClass:[UITabBarController class]]) { + vc = [(UITabBarController *)vc selectedViewController]; + } + } + return vc; +} + +- (UINavigationController *)currentNavigationController { + return [self currentNC]; +} + +- (UINavigationController *)currentNC{ + if (![[UIApplication sharedApplication].windows.lastObject isKindOfClass:[UIWindow class]]) { + NSAssert(0, @"未获取到导航控制器"); + return nil; + } + UIViewController *rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController; + return [self getCurrentNCFrom:rootViewController]; +} + + +//递归 +- (UINavigationController *)getCurrentNCFrom:(UIViewController *)vc{ + if ([vc isKindOfClass:NSClassFromString(@"MMDrawerController")]) { + vc = (UIViewController *)[vc valueForKey:@"centerViewController"]; + } + if ([vc isKindOfClass:[UITabBarController class]]) { + UINavigationController *nc = ((UITabBarController *)vc).selectedViewController; + return [self getCurrentNCFrom:nc]; + } + else if ([vc isKindOfClass:[UINavigationController class]]) { + if (((UINavigationController *)vc).presentedViewController) { + return [self getCurrentNCFrom:((UINavigationController *)vc).presentedViewController]; + } + return [self getCurrentNCFrom:((UINavigationController *)vc).topViewController]; + } + else if ([vc isKindOfClass:[UIViewController class]]) { + if (vc.presentedViewController) { + return [self getCurrentNCFrom:vc.presentedViewController]; + } + else { + if (!vc.navigationController) { + if (vc.presentingViewController) { + [vc dismissViewControllerAnimated:NO completion:nil]; + + return [self getCurrentNCFrom:vc.presentingViewController]; + } else { + NSAssert(0, @"未获取到导航控制器"); + return nil; + } + } else { + return vc.navigationController; + } + } + } + else { + NSAssert(0, @"未获取到导航控制器"); + return nil; + } +} + +@end diff --git a/YuMi/CustomUI/XNDJTBWGLoadingTool.h b/YuMi/CustomUI/XNDJTBWGLoadingTool.h deleted file mode 100644 index eba8871d..00000000 --- a/YuMi/CustomUI/XNDJTBWGLoadingTool.h +++ /dev/null @@ -1,73 +0,0 @@ -// -// YMHUDTool.h -// TTPlay -// -// Created by YM on 2022/5/15. -// Copyright © 2023 YUMI. All rights reserved. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - - - -@interface XNDJTBWGLoadingTool : NSObject - -+ (void)brakeHUD; - - -+ (void)brakeHUDInRegard:(nullable UIView *)view; - - -+ (void)EvidenceAccomplishmentAboutCommunictowardsion:(NSString *)message; - - -+ (void)EvidenceAccomplishmentAboutCommunictowardsion:(NSString *)message inView:(nullable UIView *)view; - - -+ (void)EvidenceAccomplishmentAboutCommunictowardsion:(NSString *)message inView:(nullable UIView *)view delay:(NSTimeInterval)afterDelay enabled:(BOOL)enabled; - - -+ (void)EvidenceMistakeAboutCommunictowardsion:(NSString *)message; - - -+ (void)EvidenceMistakeAboutCommunictowardsion:(NSString *)message inView:(nullable UIView *)view; - - -+ (void)EvidenceMistakeAboutCommunictowardsion:(NSString *)message inView:(nullable UIView *)view delay:(NSTimeInterval)afterDelay enabled:(BOOL)enabled; - - -+ (void)EvidenceGFPChambering; - - -+ (void)EvidenceGFPChamberingInRegard:(nullable UIView *)view; - - -+ (void)EvidenceGFPChamberingInRegard:(nullable UIView *)view bgColor:(nullable UIColor *)bgColor enabled:(BOOL)enabled; - - -+ (void)EvidenceKellegChambering; - -+ (void)EvidenceKellegChambering:(UIView *)view; - - -+ (void)EvidenceChambering; - - -+ (void)EvidenceChamberingInRegard:(nullable UIView *)view; - - -+ (void)EvidenceChamberingInRegard:(nullable UIView *)view enabled:(BOOL)enabled; - - -+ (void)EvidenceChamberingAboutCommunictowardsion:(NSString *)message; - - -+ (void)EvidenceChamberingAboutCommunictowardsion:(NSString *)message inView:(nullable UIView *)view; - - -+ (void)EvidenceChamberingAboutCommunictowardsion:(NSString *)message inView:(nullable UIView *)view enabled:(BOOL)enabled; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/XNDJTBWGLoadingTool.m b/YuMi/CustomUI/XNDJTBWGLoadingTool.m deleted file mode 100644 index 442dcbd6..00000000 --- a/YuMi/CustomUI/XNDJTBWGLoadingTool.m +++ /dev/null @@ -1,330 +0,0 @@ -// -// YMHUDTool.m -// TTPlay -// -// Created by YM on 2022/5/15. -// Copyright © 2023 YUMI. All rights reserved. -// - -#import "XNDJTBWGLoadingTool.h" -#import "GCDHelper.h" -#import -#import "DJDKMIMOMColor.h" -#import "ClientDisposition.h" - -#define kDelayTime 2.5 -@interface XNDJTBWGLoadingTool () -@property (class,nonatomic,copy) NSArray *animationImages; -@end - -@implementation XNDJTBWGLoadingTool - -static NSArray * _animationImages = nil; - - -+ (void)brakeHUDInRegard:(nullable UIView *)view { - dispatch_main_sync_safe(^{ - if (view) { - [MBProgressHUD hideHUDForView:view animated:NO]; - [MBProgressHUD hideHUDForView:[UIApplication sharedApplication].keyWindow animated:NO]; - } else { - [MBProgressHUD hideHUDForView:[UIApplication sharedApplication].keyWindow animated:NO]; - } - }); -} - -+ (void)brakeHUD { - [self brakeHUDInRegard:nil]; -} - - -+ (void)EvidenceAccomplishmentAboutCommunictowardsion:(NSString *)message { - [self EvidenceAccomplishmentAboutCommunictowardsion:message inView:[UIApplication sharedApplication].keyWindow]; -} - - -+ (void)EvidenceAccomplishmentAboutCommunictowardsion:(NSString *)message inView:(nullable UIView *)view { - [self EvidenceAccomplishmentAboutCommunictowardsion:message inView:view delay:kDelayTime enabled:NO]; -} - - -+ (void)EvidenceAccomplishmentAboutCommunictowardsion:(NSString *)message inView:(nullable UIView *)view delay:(NSTimeInterval)afterDelay enabled:(BOOL)enabled { - - if (message.length == 0) { return; } - __block UIView *inView = view; - - dispatch_main_sync_safe(^{ - if (!inView) { - inView = [UIApplication sharedApplication].keyWindow; - } - [self brakeHUDInRegard:view]; - MBProgressHUD *hud = [self ordinaryDirectoryvanceHUD:view]; - hud.userInteractionEnabled = enabled; - hud.mode = MBProgressHUDModeText; - hud.bezelView.style = MBProgressHUDBackgroundStyleSolidColor; - hud.margin = 8; - - hud.bezelView.color = [[UIColor blackColor] colorWithAlphaComponent:0.8]; - hud.label.text = message; - hud.label.numberOfLines = 0; - hud.label.textColor = [UIColor whiteColor]; - hud.label.font = [UIFont systemFontOfSize:14]; - [hud hideAnimated:YES afterDelay:afterDelay]; - }); -} - - -+ (void)EvidenceMistakeAboutCommunictowardsion:(NSString *)message { - [self EvidenceMistakeAboutCommunictowardsion:message inView:[UIApplication sharedApplication].keyWindow]; -} - - -+ (void)EvidenceMistakeAboutCommunictowardsion:(NSString *)message inView:(nullable UIView *)view { - [self EvidenceMistakeAboutCommunictowardsion:message inView:view delay:kDelayTime enabled:NO]; -} - - -+ (void)EvidenceMistakeAboutCommunictowardsion:(NSString *)message inView:(nullable UIView *)view delay:(NSTimeInterval)afterDelay enabled:(BOOL)enabled { - if (message.length == 0) { return; } - if (!view) { - view = [UIApplication sharedApplication].keyWindow; - } - - [self brakeHUDInRegard:view]; - - dispatch_main_sync_safe(^{ - MBProgressHUD *hud = [self ordinaryDirectoryvanceHUD:view]; - hud.userInteractionEnabled = enabled; - hud.mode = MBProgressHUDModeText; - hud.bezelView.style = MBProgressHUDBackgroundStyleSolidColor; - hud.margin = 8; - - hud.bezelView.color = [[UIColor blackColor] colorWithAlphaComponent:0.8]; - hud.label.text = message; - hud.label.numberOfLines = 0; - hud.label.textColor = [UIColor whiteColor]; - hud.label.font = [UIFont systemFontOfSize:14]; - [hud hideAnimated:YES afterDelay:afterDelay]; - }); -} - - -+ (void)EvidenceChambering { - [self EvidenceChamberingInRegard:[UIApplication sharedApplication].keyWindow]; -} - - -+ (void)EvidenceChamberingInRegard:(nullable UIView *)view { - [self EvidenceChamberingInRegard:view enabled:YES]; -} - - -+ (void)EvidenceChamberingInRegard:(nullable UIView *)view enabled:(BOOL)enabled { - [self EvidenceChamberingAboutCommunictowardsion:@"" inView:view enabled:enabled]; -} - - -+ (void)EvidenceChamberingAboutCommunictowardsion:(NSString *)message { - [self EvidenceChamberingAboutCommunictowardsion:message inView:[UIApplication sharedApplication].keyWindow]; -} - - -+ (void)EvidenceChamberingAboutCommunictowardsion:(NSString *)message inView:(nullable UIView *)view { - [self EvidenceChamberingAboutCommunictowardsion:message inView:view enabled:YES]; -} - - -+ (void)EvidenceChamberingAboutCommunictowardsion:(NSString *)message inView:(nullable UIView *)view enabled:(BOOL)enabled { - if (!view) { - view = [UIApplication sharedApplication].keyWindow; - } - [self brakeHUDInRegard:view]; - - dispatch_main_sync_safe(^{ - MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES]; - hud.userInteractionEnabled = enabled; - hud.bezelView.color = [[UIColor whiteColor] colorWithAlphaComponent:0.8]; - hud.removeFromSuperViewOnHide = YES; - if (message.length) { - hud.label.text = message; - hud.label.numberOfLines = 0; - hud.label.textColor = [UIColor blackColor]; - hud.label.font = [UIFont systemFontOfSize:14]; - } - }); - -} - - -+ (void)EvidenceGFPChambering { - [self EvidenceGFPChamberingInRegard:[UIApplication sharedApplication].keyWindow]; -} - - -+ (void)EvidenceGFPChamberingInRegard:(nullable UIView *)view { - [self EvidenceGFPChamberingInRegard:view bgColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0.35] enabled:YES]; -} - - -+ (void)EvidenceGFPChamberingInRegard:(nullable UIView *)view bgColor:(nullable UIColor *)bgColor enabled:(BOOL)enabled { - if (!view) { - view = [UIApplication sharedApplication].keyWindow; - } - [self brakeHUDInRegard:view]; - dispatch_main_sync_safe(^{ - MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES]; - hud.bezelView.style = MBProgressHUDBackgroundStyleSolidColor; - hud.minSize = CGSizeMake(168, 133); - hud.userInteractionEnabled = enabled; - hud.mode = MBProgressHUDModeCustomView; - hud.minSize = CGSizeMake(150, 150); - [hud.bezelView addSubview:[self loadingView]]; - hud.backgroundColor = bgColor; - hud.bezelView.color = [UIColor clearColor]; - hud.removeFromSuperViewOnHide = YES; - }); -} - - -+ (void)EvidenceKellegChambering { - if (![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - return; - } - UIView *view = [UIApplication sharedApplication].delegate.window; - dispatch_main_sync_safe(^{ - MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES]; - hud.bezelView.style = MBProgressHUDBackgroundStyleSolidColor; - hud.userInteractionEnabled = NO; - hud.mode = MBProgressHUDModeCustomView; - hud.minSize = CGSizeMake(100, 100 + 16 + 30); - [hud.bezelView addSubview:[self kellegSwopChamberingRegard]]; - hud.bezelView.color = [UIColor clearColor]; - hud.removeFromSuperViewOnHide = YES; - }); -} - -+ (void)EvidenceKellegChambering:(UIView *)view { - dispatch_main_sync_safe(^{ - MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES]; - hud.bezelView.style = MBProgressHUDBackgroundStyleSolidColor; - hud.userInteractionEnabled = NO; - hud.mode = MBProgressHUDModeCustomView; - hud.minSize = CGSizeMake(100, 100 + 16 + 30); - [hud.bezelView addSubview:[self kellegSwopChamberingRegard]]; - hud.bezelView.color = [UIColor clearColor]; - hud.removeFromSuperViewOnHide = YES; - }); -} - -#pragma mark - private -+ (MBProgressHUD *)ordinaryDirectoryvanceHUD:(UIView *)view { - MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES]; - hud.removeFromSuperViewOnHide = YES; - return hud; -} - - - -+ (UIView *)loadingView { - UIView *loadingBGView = [[UIView alloc] init]; - loadingBGView.layer.cornerRadius = 20; - loadingBGView.backgroundColor = [UIColor whiteColor]; - UIImageView *loadingImageView = [[UIImageView alloc] init]; - - UILabel *loadingTitleLabel = [[UILabel alloc] init]; - loadingTitleLabel = [[UILabel alloc] init]; - loadingTitleLabel.textColor = [UIColor colorWithRed:(153.0)/255.0f green:(153.0)/255.0f blue:(153.0)/255.0f alpha:1]; - loadingTitleLabel.font = [UIFont systemFontOfSize:14]; - loadingTitleLabel.text = @"加载中…"; - loadingTitleLabel.textAlignment = NSTextAlignmentCenter; - - [loadingBGView addSubview:loadingImageView]; - [loadingBGView addSubview:loadingTitleLabel]; - - loadingBGView.frame = CGRectMake(0,0,120,120); - loadingImageView.frame = CGRectMake((CGRectGetWidth(loadingBGView.frame)-80)/ 2, 10, 80, 80); - loadingTitleLabel.frame = CGRectMake(0, CGRectGetMaxY(loadingImageView.frame) + 8, loadingBGView.frame.size.width, 15); - - loadingImageView.animationImages = [self chamberingKellegBrectifynessIndictowardses]; - [loadingImageView startAnimating]; - return loadingBGView; -} - -+ (NSArray *)chamberingBrectifynessIndictowardses { - - if (XNDJTBWGLoadingTool.animationImages.count > 0) { - return XNDJTBWGLoadingTool.animationImages; - } - NSString * countString = @"00"; - NSMutableArray * indicateGarment= [NSMutableArray array]; - for (int i = 0; i <= 27; i++) { - if (i < 10) { - countString = [NSString stringWithFormat:@"0%d", i]; - } else { - countString = [NSString stringWithFormat:@"%d", i]; - } - NSString * loadingImageName = [NSString stringWithFormat:@"loading_0%@", countString]; - UIImage * image = [UIImage imageNamed:loadingImageName]; - [indicateGarment addObject:image]; - } - NSArray * array = [indicateGarment copy]; - [XNDJTBWGLoadingTool setAnimationImages:array]; - return array; -} - -+ (UIView *)kellegSwopChamberingRegard { - UIView *loadingBGView = [[UIView alloc] init]; - loadingBGView.layer.cornerRadius = 20; - loadingBGView.backgroundColor = [UIColor clearColor]; - UIImageView *loadingImageView = [[UIImageView alloc] init]; - - UILabel *loadingTitleLabel = [[UILabel alloc] init]; - loadingTitleLabel = [[UILabel alloc] init]; - loadingTitleLabel.textColor = UIColorFromRGB(0xC9BCF2); - loadingTitleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; - loadingTitleLabel.text = @"加载中…"; - loadingTitleLabel.textAlignment = NSTextAlignmentCenter; - - [loadingBGView addSubview:loadingImageView]; - [loadingBGView addSubview:loadingTitleLabel]; - - loadingBGView.frame = CGRectMake(0,0,100,100 + 16 + 30); - loadingImageView.frame = CGRectMake(0, 0, 100, 100); - loadingTitleLabel.frame = CGRectMake(0, CGRectGetMaxY(loadingImageView.frame) + 8, loadingBGView.frame.size.width, 15); - loadingImageView.animationImages = [self chamberingKellegBrectifynessIndictowardses]; - [loadingImageView startAnimating]; - return loadingBGView; -} - -+ (NSArray *)chamberingKellegBrectifynessIndictowardses { - NSString * countString = @"00"; - NSMutableArray * indicateGarment= [NSMutableArray array]; - for (int i = 0; i <= 47; i++) { - if (i < 10) { - countString = [NSString stringWithFormat:@"0%d", i]; - } else { - countString = [NSString stringWithFormat:@"%d", i]; - } - NSString * loadingImageName = [NSString stringWithFormat:@"anchorLoading_0%@", countString]; - UIImage * image = [UIImage imageNamed:loadingImageName]; - [indicateGarment addObject:image]; - } - NSArray * array = [indicateGarment copy]; - return array; -} - -+ (NSArray *)animationImages { - if (_animationImages == nil) { - _animationImages = [NSArray array]; - } - return _animationImages; -} - -+ (void)setAnimationImages:(NSArray *)animationImages { - if (animationImages != _animationImages) { - _animationImages = animationImages; - } -} - - -@end diff --git a/YuMi/CustomUI/XNDJTDDLoadingTool.h b/YuMi/CustomUI/XNDJTDDLoadingTool.h new file mode 100644 index 00000000..128b2bae --- /dev/null +++ b/YuMi/CustomUI/XNDJTDDLoadingTool.h @@ -0,0 +1,141 @@ +// +// YMHUDTool.h +// TTPlay +// +// Created by YM on 2022/5/15. +// Copyright © 2023 YUMI. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + showGIFLoading使用注意: + 1.谁负责showLoading, 谁负责hideHUD + 2.showLoading是指定了加载在那个View, hideHUD时请指定hide那个view的hud + */ + +@interface XNDJTDDLoadingTool : NSObject +/** + 隐藏HUD + */ ++ (void)hideHUD; + +/** + 隐藏HUD, 如果view为nil, 则默认隐藏主窗口的HUD + + @param view view + */ ++ (void)hideHUDInView:(nullable UIView *)view; + +/** + 显示成功message, 默认显示在窗口上, 2.5s后消失, 默认不拦截点击事件 + + @param message 文字 + */ ++ (void)showSuccessWithMessage:(NSString *)message; + +/** + 显示成功message, 2.5s后消失, 默认不拦截点击事件 + + @param message 文字 + @param view 显示在哪个view上 + */ ++ (void)showSuccessWithMessage:(NSString *)message inView:(nullable UIView *)view; + +/** + 显示成功message + + @param message 文字 + @param view 显示在哪个view上 + @param afterDelay 延迟消失时间 + @param enabled 是否可以拦截事件 no:不拦截 yes:拦截 + */ ++ (void)showSuccessWithMessage:(NSString *)message inView:(nullable UIView *)view delay:(NSTimeInterval)afterDelay enabled:(BOOL)enabled; + +/** + 显示错误message, 默认显示在窗口上, 2.5s后消失, 默认不拦截点击事件 + + @param message 文字 + */ ++ (void)showErrorWithMessage:(NSString *)message; + +/** + 显示错误message, 2.5s后消失, 默认不拦截点击事件 + + @param message 文字 + @param view 显示在哪个view上 + */ ++ (void)showErrorWithMessage:(NSString *)message inView:(nullable UIView *)view; + +/** + 显示错误message + + @param message 文字 + @param view 显示在哪个view上 + @param afterDelay 延迟消失时间 + @param enabled 是否可以拦截事件 no:不拦截 yes:拦截 + */ ++ (void)showErrorWithMessage:(NSString *)message inView:(nullable UIView *)view delay:(NSTimeInterval)afterDelay enabled:(BOOL)enabled; + +/** + 在窗口上显示自定义GIFLoading, 背景默认黑色0.35透明度, 默认拦截点击事件 + */ ++ (void)showGIFLoading; + +/** + 在指定的view上显示自定义GIFLoading, 背景默认黑色0.35透明度, 默认拦截点击事件 + + @param view 显示在哪个view上 + */ ++ (void)showGIFLoadingInView:(nullable UIView *)view; + +/** + 在指定的view上显示自定义GIFLoading + + @param view 显示在哪个view上 + @param bgColor 背景颜色, 遮盖 + @param enabled 是否可以拦截事件 no:不拦截 yes:拦截 + */ ++ (void)showGIFLoadingInView:(nullable UIView *)view bgColor:(nullable UIColor *)bgColor enabled:(BOOL)enabled; + +/** + 加载下一个个播房 + */ ++ (void)showAnchorLoading; + ++ (void)showAnchorLoading:(UIView *)view; + +/** + 在窗口上显示菊花 + */ ++ (void)showLoading; + +/** + 在view上显示菊花 + */ ++ (void)showLoadingInView:(nullable UIView *)view; + +/** + 在view上显示菊花 + */ ++ (void)showLoadingInView:(nullable UIView *)view enabled:(BOOL)enabled; + +/** + 在窗口上显示菊花+文字 + */ ++ (void)showLoadingWithMessage:(NSString *)message; + +/** + 在view上显示菊花+文字 + */ ++ (void)showLoadingWithMessage:(NSString *)message inView:(nullable UIView *)view; + +/** + 在view上显示菊花+文字 + */ ++ (void)showLoadingWithMessage:(NSString *)message inView:(nullable UIView *)view enabled:(BOOL)enabled; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/CustomUI/XNDJTDDLoadingTool.m b/YuMi/CustomUI/XNDJTDDLoadingTool.m new file mode 100644 index 00000000..a1855ab2 --- /dev/null +++ b/YuMi/CustomUI/XNDJTDDLoadingTool.m @@ -0,0 +1,391 @@ +// +// YMHUDTool.m +// TTPlay +// +// Created by YM on 2022/5/15. +// Copyright © 2023 YUMI. All rights reserved. +// + +#import "XNDJTDDLoadingTool.h" +#import "GCDHelper.h" +#import +#import "DJDKMIMOMColor.h" +#import "ClientConfig.h" + +#define kDelayTime 2.5 +@interface XNDJTDDLoadingTool () +/// +@property (class,nonatomic,copy) NSArray *animationImages; +@end + +@implementation XNDJTDDLoadingTool + +static NSArray * _animationImages = nil; + +/** + 隐藏HUD, 如果view为nil, 则默认隐藏主窗口的HUD + + @param view view + */ ++ (void)hideHUDInView:(nullable UIView *)view { + dispatch_main_sync_safe(^{ + if (view) { + [MBProgressHUD hideHUDForView:view animated:NO]; + [MBProgressHUD hideHUDForView:[UIApplication sharedApplication].keyWindow animated:NO]; + } else { + [MBProgressHUD hideHUDForView:[UIApplication sharedApplication].keyWindow animated:NO]; + } + }); +} +/** + 隐藏HUD + */ ++ (void)hideHUD { + [self hideHUDInView:nil]; +} + +/** + 显示成功message, 默认显示在窗口上, 2.5s后消失, 默认不拦截点击事件 + + @param message 文字 + */ ++ (void)showSuccessWithMessage:(NSString *)message { + [self showSuccessWithMessage:message inView:[UIApplication sharedApplication].keyWindow]; +} + +/** + 显示成功message, 2.5s后消失, 默认不拦截点击事件 + + @param message 文字 + @param view 显示在哪个view上 + */ ++ (void)showSuccessWithMessage:(NSString *)message inView:(nullable UIView *)view { + [self showSuccessWithMessage:message inView:view delay:kDelayTime enabled:NO]; +} + +/** + 显示成功message + @param message 文字 + @param view 显示在哪个view上 + @param afterDelay 延迟消失时间 + @param enabled 是否可以拦截事件 no:不拦截 yes:拦截 + */ ++ (void)showSuccessWithMessage:(NSString *)message inView:(nullable UIView *)view delay:(NSTimeInterval)afterDelay enabled:(BOOL)enabled { + + if (message.length == 0) { return; } + __block UIView *inView = view; + + dispatch_main_sync_safe(^{ + if (!inView) { + inView = [UIApplication sharedApplication].keyWindow; + } + [self hideHUDInView:view]; // 先隐藏 + MBProgressHUD *hud = [self normalProgressHUD:view]; + hud.userInteractionEnabled = enabled; + hud.mode = MBProgressHUDModeText; + hud.bezelView.style = MBProgressHUDBackgroundStyleSolidColor; + hud.margin = 8; + // 方框背景颜色 + hud.bezelView.color = [[UIColor blackColor] colorWithAlphaComponent:0.8]; + hud.label.text = message; + hud.label.numberOfLines = 0; + hud.label.textColor = [UIColor whiteColor]; + hud.label.font = [UIFont systemFontOfSize:14]; + [hud hideAnimated:YES afterDelay:afterDelay]; + }); +} + +/** + 显示错误message, 默认显示在窗口上, 2.5s后消失, 默认不拦截点击事件 + + @param message 文字 + */ ++ (void)showErrorWithMessage:(NSString *)message { + [self showErrorWithMessage:message inView:[UIApplication sharedApplication].keyWindow]; +} + +/** + 显示错误message, 2.5s后消失, 默认不拦截点击事件 + + @param message 文字 + @param view 显示在哪个view上 + */ ++ (void)showErrorWithMessage:(NSString *)message inView:(nullable UIView *)view { + [self showErrorWithMessage:message inView:view delay:kDelayTime enabled:NO]; +} + +/** + 显示错误message + + @param message 文字 + @param view 显示在哪个view上 + @param afterDelay 延迟消失时间 + @param enabled 是否可以拦截事件 no:不拦截 yes:拦截 + */ ++ (void)showErrorWithMessage:(NSString *)message inView:(nullable UIView *)view delay:(NSTimeInterval)afterDelay enabled:(BOOL)enabled { + if (message.length == 0) { return; } + if (!view) { + view = [UIApplication sharedApplication].keyWindow; + } + + [self hideHUDInView:view]; // 先隐藏 + + dispatch_main_sync_safe(^{ + MBProgressHUD *hud = [self normalProgressHUD:view]; + hud.userInteractionEnabled = enabled; + hud.mode = MBProgressHUDModeText; + hud.bezelView.style = MBProgressHUDBackgroundStyleSolidColor; + hud.margin = 8; + // 方框背景颜色 + hud.bezelView.color = [[UIColor blackColor] colorWithAlphaComponent:0.8]; + hud.label.text = message; + hud.label.numberOfLines = 0; + hud.label.textColor = [UIColor whiteColor]; + hud.label.font = [UIFont systemFontOfSize:14]; + [hud hideAnimated:YES afterDelay:afterDelay]; + }); +} + +/** + * 在窗口上显示菊花 + */ ++ (void)showLoading { + [self showLoadingInView:[UIApplication sharedApplication].keyWindow]; +} + +/** + * 在view上显示菊花 + */ ++ (void)showLoadingInView:(nullable UIView *)view { + [self showLoadingInView:view enabled:YES]; +} + +/** + * 在view上显示菊花 + */ ++ (void)showLoadingInView:(nullable UIView *)view enabled:(BOOL)enabled { + [self showLoadingWithMessage:@"" inView:view enabled:enabled]; +} + +/** + * 在窗口上显示菊花+文字 + */ ++ (void)showLoadingWithMessage:(NSString *)message { + [self showLoadingWithMessage:message inView:[UIApplication sharedApplication].keyWindow]; +} + +/** + * 在view上显示菊花+文字 + */ ++ (void)showLoadingWithMessage:(NSString *)message inView:(nullable UIView *)view { + [self showLoadingWithMessage:message inView:view enabled:YES]; +} + +/** + * 在view上显示菊花+文字 + */ ++ (void)showLoadingWithMessage:(NSString *)message inView:(nullable UIView *)view enabled:(BOOL)enabled { + if (!view) { + view = [UIApplication sharedApplication].keyWindow; + } + [self hideHUDInView:view]; + + dispatch_main_sync_safe(^{ + MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES]; + hud.userInteractionEnabled = enabled; + hud.bezelView.color = [[UIColor whiteColor] colorWithAlphaComponent:0.8]; + hud.removeFromSuperViewOnHide = YES; + if (message.length) { + hud.label.text = message; + hud.label.numberOfLines = 0; + hud.label.textColor = [UIColor blackColor]; + hud.label.font = [UIFont systemFontOfSize:14]; + } + }); + +} + +/** + 在窗口上显示自定义GIFLoading, 背景默认黑色0.35透明度, 默认拦截点击事件 + */ ++ (void)showGIFLoading { + [self showGIFLoadingInView:[UIApplication sharedApplication].keyWindow]; +} + +/** + 在指定的view上显示自定义GIFLoading, 背景默认黑色0.35透明度, 默认拦截点击事件 + + @param view 显示在哪个view上 + */ ++ (void)showGIFLoadingInView:(nullable UIView *)view { + [self showGIFLoadingInView:view bgColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0.35] enabled:YES]; +} + +/** + 在指定的view上显示自定义GIFLoading + @param view 显示在哪个view上 + @param bgColor 背景颜色, 遮盖 + @param enabled 是否可以拦截事件 no:不拦截 yes:拦截 + */ ++ (void)showGIFLoadingInView:(nullable UIView *)view bgColor:(nullable UIColor *)bgColor enabled:(BOOL)enabled { + if (!view) { + view = [UIApplication sharedApplication].keyWindow; + } + [self hideHUDInView:view]; + dispatch_main_sync_safe(^{ + MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES]; + hud.bezelView.style = MBProgressHUDBackgroundStyleSolidColor; + hud.minSize = CGSizeMake(168, 133); + hud.userInteractionEnabled = enabled; + hud.mode = MBProgressHUDModeCustomView; + hud.minSize = CGSizeMake(150, 150); + [hud.bezelView addSubview:[self loadingView]]; + hud.backgroundColor = bgColor; + hud.bezelView.color = [UIColor clearColor]; + hud.removeFromSuperViewOnHide = YES; + }); +} + + ++ (void)showAnchorLoading { + if (![ClientConfig shareConfig].canOpen) { + return; + } + UIView *view = [UIApplication sharedApplication].delegate.window; + dispatch_main_sync_safe(^{ + MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES]; + hud.bezelView.style = MBProgressHUDBackgroundStyleSolidColor; + hud.userInteractionEnabled = NO; + hud.mode = MBProgressHUDModeCustomView; + hud.minSize = CGSizeMake(100, 100 + 16 + 30); + [hud.bezelView addSubview:[self anchorSwitchLoadingView]]; + hud.bezelView.color = [UIColor clearColor]; + hud.removeFromSuperViewOnHide = YES; + }); +} + ++ (void)showAnchorLoading:(UIView *)view { + dispatch_main_sync_safe(^{ + MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES]; + hud.bezelView.style = MBProgressHUDBackgroundStyleSolidColor; + hud.userInteractionEnabled = NO; + hud.mode = MBProgressHUDModeCustomView; + hud.minSize = CGSizeMake(100, 100 + 16 + 30); + [hud.bezelView addSubview:[self anchorSwitchLoadingView]]; + hud.bezelView.color = [UIColor clearColor]; + hud.removeFromSuperViewOnHide = YES; + }); +} + +#pragma mark - private ++ (MBProgressHUD *)normalProgressHUD:(UIView *)view { + MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES]; + hud.removeFromSuperViewOnHide = YES; + return hud; +} + + + ++ (UIView *)loadingView { + UIView *loadingBGView = [[UIView alloc] init]; + loadingBGView.layer.cornerRadius = 20; + loadingBGView.backgroundColor = [UIColor whiteColor]; + UIImageView *loadingImageView = [[UIImageView alloc] init]; + + UILabel *loadingTitleLabel = [[UILabel alloc] init]; + loadingTitleLabel = [[UILabel alloc] init]; + loadingTitleLabel.textColor = [UIColor colorWithRed:(153.0)/255.0f green:(153.0)/255.0f blue:(153.0)/255.0f alpha:1]; + loadingTitleLabel.font = [UIFont systemFontOfSize:14]; + loadingTitleLabel.text = @"加载中…"; + loadingTitleLabel.textAlignment = NSTextAlignmentCenter; + + [loadingBGView addSubview:loadingImageView]; + [loadingBGView addSubview:loadingTitleLabel]; + + loadingBGView.frame = CGRectMake(0,0,120,120); + loadingImageView.frame = CGRectMake((CGRectGetWidth(loadingBGView.frame)-80)/ 2, 10, 80, 80); + loadingTitleLabel.frame = CGRectMake(0, CGRectGetMaxY(loadingImageView.frame) + 8, loadingBGView.frame.size.width, 15); + + loadingImageView.animationImages = [self loadingAnchorAnimationImages]; + [loadingImageView startAnimating]; + return loadingBGView; +} + ++ (NSArray *)loadingAnimationImages { + + if (XNDJTDDLoadingTool.animationImages.count > 0) { + return XNDJTDDLoadingTool.animationImages; + } + NSString * countString = @"00"; + NSMutableArray * imageArray= [NSMutableArray array]; + for (int i = 0; i <= 27; i++) { + if (i < 10) { + countString = [NSString stringWithFormat:@"0%d", i]; + } else { + countString = [NSString stringWithFormat:@"%d", i]; + } + NSString * loadingImageName = [NSString stringWithFormat:@"loading_0%@", countString]; + UIImage * image = [UIImage imageNamed:loadingImageName]; + [imageArray addObject:image]; + } + NSArray * array = [imageArray copy]; + [XNDJTDDLoadingTool setAnimationImages:array]; + return array; +} + ++ (UIView *)anchorSwitchLoadingView { + UIView *loadingBGView = [[UIView alloc] init]; + loadingBGView.layer.cornerRadius = 20; + loadingBGView.backgroundColor = [UIColor clearColor]; + UIImageView *loadingImageView = [[UIImageView alloc] init]; + + UILabel *loadingTitleLabel = [[UILabel alloc] init]; + loadingTitleLabel = [[UILabel alloc] init]; + loadingTitleLabel.textColor = UIColorFromRGB(0xC9BCF2); + loadingTitleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + loadingTitleLabel.text = @"加载中…"; + loadingTitleLabel.textAlignment = NSTextAlignmentCenter; + + [loadingBGView addSubview:loadingImageView]; + [loadingBGView addSubview:loadingTitleLabel]; + + loadingBGView.frame = CGRectMake(0,0,100,100 + 16 + 30); + loadingImageView.frame = CGRectMake(0, 0, 100, 100); + loadingTitleLabel.frame = CGRectMake(0, CGRectGetMaxY(loadingImageView.frame) + 8, loadingBGView.frame.size.width, 15); + loadingImageView.animationImages = [self loadingAnchorAnimationImages]; + [loadingImageView startAnimating]; + return loadingBGView; +} + ++ (NSArray *)loadingAnchorAnimationImages { + NSString * countString = @"00"; + NSMutableArray * imageArray= [NSMutableArray array]; + for (int i = 0; i <= 47; i++) { + if (i < 10) { + countString = [NSString stringWithFormat:@"0%d", i]; + } else { + countString = [NSString stringWithFormat:@"%d", i]; + } + NSString * loadingImageName = [NSString stringWithFormat:@"anchorLoading_0%@", countString]; + UIImage * image = [UIImage imageNamed:loadingImageName]; + [imageArray addObject:image]; + } + NSArray * array = [imageArray copy]; + return array; +} + ++ (NSArray *)animationImages { + if (_animationImages == nil) { + _animationImages = [NSArray array]; + } + return _animationImages; +} + ++ (void)setAnimationImages:(NSArray *)animationImages { + if (animationImages != _animationImages) { + _animationImages = animationImages; + } +} + + +@end diff --git a/YuMi/Global/YUMIConstant.h b/YuMi/Global/YUMIConstant.h index 456ff49c..9ad3999d 100644 --- a/YuMi/Global/YUMIConstant.h +++ b/YuMi/Global/YUMIConstant.h @@ -15,29 +15,30 @@ UIKIT_EXTERN NSString * const kRoomMiniNotificationKey; UIKIT_EXTERN NSString * const kVisitorUnReadCountNotificationKey; UIKIT_EXTERN NSString * const kHadShowNewUserGiftKey; UIKIT_EXTERN NSString * const kRedPacketHistory; -UIKIT_EXTERN NSString * const kTuWenMessageHistory; +UIKIT_EXTERN NSString * const kTuWenMessageHistory;///图文消息已读记录 UIKIT_EXTERN NSString * const kTeenagerStatusChange; UIKIT_EXTERN NSString * const kRoomQuickMessageCloseCount; UIKIT_EXTERN NSString * const kLoginMethod; -typedef NS_ENUM(NSUInteger, KeyGenre) { - KeyGenre_PasswordEncode, - KeyGenre_NTESQuickLoginBusinessId, - KeyGenre_Agora, - KeyGenre_TRTC, - KeyGenre_NetEase, - keyType_YiDunBussinessId, - KeyGenre_FacePwdEncode, - KeyGenre_SudGameAppID, - KeyGenre_SudGameAppKey, - - KeyGenre_GuildUidKey, - - KeyGenre_SystemNotifiUidKey, - - KeyGenre_SecretaryUidKey, +typedef NS_ENUM(NSUInteger, KeyType) { + KeyType_PasswordEncode,///密码 des 加密的 + KeyType_NTESQuickLoginBusinessId,///网易易盾 快捷登录 id + KeyType_Agora,///声网 key + KeyType_TRTC,///TRTC key + KeyType_NetEase,///云信的key + keyType_YiDunBussinessId,///易盾的id + KeyType_FacePwdEncode, ///表情包解密key + KeyType_SudGameAppID,///小游戏APPID + KeyType_SudGameAppKey,///小游戏APPKey + ///家族公会key + KeyType_GuildUidKey, + ///系统通知 + KeyType_SystemNotifiUidKey, + ///小秘书 + KeyType_SecretaryUidKey, }; -NSString * const KeyWithType(KeyGenre type); +/// 获取当前项目中所用到的 type 所对应的 value 的值 type 类型 +NSString * const KeyWithType(KeyType type); @end diff --git a/YuMi/Global/YUMIConstant.m b/YuMi/Global/YUMIConstant.m index 69c76d55..805a1a5b 100644 --- a/YuMi/Global/YUMIConstant.m +++ b/YuMi/Global/YUMIConstant.m @@ -8,32 +8,38 @@ #import "YUMIConstant.h" #import "AESUtils.h" @implementation YUMIConstant +/// AES miyao 14257fewedfgh 偏移 abcedgf NSString * const kRoomMiniNotificationKey = @"ESkVolktPxd1sZsH4yccGD5S49crhLjAGMVnH3TeQjw="; NSString * const kRoomGiftEffectUpdateNotificationKey = @"vNba94B4Zlh56Eb1VTbkLO1dVTROgaL5uVHAkQz9A92JkuP/lD+63ZgfhDId93Sm"; NSString * const kHomeMoreScrollPageKey = @"gf6PRnJmby4FIMvi75ZSRqCO4udLaWxSUj6b26l7HOE="; NSString * const kVisitorUnReadCountNotificationKey = @"gebsDgmM0iXmwnTEcqgP9EIC8aLUT0lK4t05kHYQADjBhVJmLIafi90V/wXgWPM7"; -NSString * const kRoomBackMusicCaptureVolumeKey = @"9N5Ei+Ch6nkmH1LzZET4ZjYSzXKFbavt+6lU+45eQa8="; -NSString * const kRoomBackMusicAudioMixingVolumeKey = @"JuJZKfNgZQ7s25PjQcGG97za686ecXI1lylS9PSLrayNeY2l1me4NyyYUXHGaJP0"; -NSString * const kRoomBackMusicPlayMusicOrderKey = @"xjtpOpnLgX00F9HgwT1FISMQPkxXj5cpE2vYc2acOR0="; -NSString * const kRoomBackMusicPlayMusicFinishKey = @"xjtpOpnLgX00F9HgwT1FIf5yt3rZb+KP9BT0F9AgD7I8M+2JTSYq+jDIEx1e6qdC"; -NSString * const kUserCompleteInfoFinishKey = @"0g1ARAbys7hdfKcXF32WZAASQwkJH//glyiNAZOS5Co="; -NSString * const kHadShowNewUserGiftKey = @"OHIPXsTBvyt1zwNqr4f6YJkIycUshwhKIpC5Pm2nVVU="; -NSString * const kNewUserRechargeKey = @"fmslcb104aFPWxdSGkMg6lmyehgB3uCu9V/FqzVpL+8="; -NSString * const kFromSearchToHomeViewKey = @"pr5yHog50uSsZLKj2nA6Ono3Mq/bLTDyngBNDVRkhgg="; -NSString * const kTabShowAnchorCardKey = @"MIO0LwD8MCBISnBOps47VF1waAwY+/XFOm2C3luic/k="; +NSString * const kRoomBackMusicCaptureVolumeKey = @"9N5Ei+Ch6nkmH1LzZET4ZjYSzXKFbavt+6lU+45eQa8=";///房间背景音乐 人声大小的key +NSString * const kRoomBackMusicAudioMixingVolumeKey = @"JuJZKfNgZQ7s25PjQcGG97za686ecXI1lylS9PSLrayNeY2l1me4NyyYUXHGaJP0";///房间背景音乐 背景音乐的大小 +NSString * const kRoomBackMusicPlayMusicOrderKey = @"xjtpOpnLgX00F9HgwT1FISMQPkxXj5cpE2vYc2acOR0=";///房间背景音乐 播放顺序 单曲 顺序 1 0 +NSString * const kRoomBackMusicPlayMusicFinishKey = @"xjtpOpnLgX00F9HgwT1FIf5yt3rZb+KP9BT0F9AgD7I8M+2JTSYq+jDIEx1e6qdC";///房间背景音乐 播放完毕的key +NSString * const kUserCompleteInfoFinishKey = @"0g1ARAbys7hdfKcXF32WZAASQwkJH//glyiNAZOS5Co=";///补全资料完成 +NSString * const kHadShowNewUserGiftKey = @"OHIPXsTBvyt1zwNqr4f6YJkIycUshwhKIpC5Pm2nVVU=";//新用户房间礼物 +NSString * const kNewUserRechargeKey = @"fmslcb104aFPWxdSGkMg6lmyehgB3uCu9V/FqzVpL+8=";//新用户充值优惠 不同于房间内首充 +NSString * const kFromSearchToHomeViewKey = @"pr5yHog50uSsZLKj2nA6Ono3Mq/bLTDyngBNDVRkhgg=";//用户第一次从搜索页返回首页 +NSString * const kTabShowAnchorCardKey = @"MIO0LwD8MCBISnBOps47VF1waAwY+/XFOm2C3luic/k="; //tab展示主播卡片 NSString * const kRedPacketHistory = @"nwKkblakw5CH37vvs9YcSjHhVHcOoeZMmE09gg7Ymhk"; -NSString * const kTuWenMessageHistory = @"AMRtf6yOWYapbYqqOBK+m5IUPsFN5hfbOpPkrYvOr1E="; -NSString * const kTeenagerStatusChange = @"Pn5RRk7StcSdlVksgBaunx8mADfiSN1UnkpU7FSBGis="; -NSString * const kRoomQuickMessageCloseCount = @"bUi7KnisS+mmUMj45e9s4VycnvRvBViGvd/ouRS4SHo="; -NSString * const kShieldingNotification = @"a1NoaWVsZGluZ05vdGlmaWNhdGlvbg=="; -NSString * const kRoomKickoutTime = @"a1Jvb21LaWNrb3V0VGltZQ=="; +NSString * const kTuWenMessageHistory = @"AMRtf6yOWYapbYqqOBK+m5IUPsFN5hfbOpPkrYvOr1E=";//图文消息已读记录 +NSString * const kTeenagerStatusChange = @"Pn5RRk7StcSdlVksgBaunx8mADfiSN1UnkpU7FSBGis=";//青少年状态改变 +NSString * const kRoomQuickMessageCloseCount = @"bUi7KnisS+mmUMj45e9s4VycnvRvBViGvd/ouRS4SHo=";//房间快捷发言关闭次数 +NSString * const kShieldingNotification = @"a1NoaWVsZGluZ05vdGlmaWNhdGlvbg==";///屏蔽房间 +NSString * const kRoomKickoutTime = @"a1Jvb21LaWNrb3V0VGltZQ==";///被踢时间 NSString * const kRoomReceivedCandyNotificationKey = @"Um9vbVJlY2VpdmVkQ2FuZHlOb3RpZmljYXRpb25LZXk="; +///每日转赠钻石总额限制 NSString * const kGiveDiamondDailyNum = @"a0dpdmVEaWFtb25kRGFpbHlOdW0="; +///弹出首充界面 NSString * const kShowFirstRechargeView = @"a1Nob3dGaXJzdFJlY2hhcmdlVmlldw=="; +///邀请成员成功 NSString * const kInviteMemeberSuccess = @"a0ludml0ZU1lbWViZXJTdWNjZXNz"; +///登录方式 NSString * const kLoginMethod = @"a0xvZ2luTWV0aG9k"; NSString * const kRequestRicket = @"a1JlcXVlc3RSaWNrZXQ="; -NSString * const KeyWithType(KeyGenre type) { +///在里面进行判断当前环境是什么 +NSString * const KeyWithType(KeyType type) { BOOL isRelase = NO; #ifdef DEBUG isRelase = NO; @@ -44,39 +50,37 @@ NSString * const KeyWithType(KeyGenre type) { if(isRelase == NO){ NSDictionary * dic = @{ - @(KeyGenre_PasswordEncode) : @"1ea53d260ecf11e7b56e00163e046a26", - @(KeyGenre_NTESQuickLoginBusinessId) : @"09c1214706c34f4798d3f05d86148608", - @(KeyGenre_Agora) : @"7ae1a8dabe7a44a9a67c829faa409e70", - @(KeyGenre_TRTC) : @"1400741885", + @(KeyType_PasswordEncode) : @"1ea53d260ecf11e7b56e00163e046a26", + @(KeyType_NTESQuickLoginBusinessId) : @"09c1214706c34f4798d3f05d86148608", + @(KeyType_Agora) : @"7ae1a8dabe7a44a9a67c829faa409e70", + @(KeyType_TRTC) : @"1400741885", - @(KeyGenre_NetEase) : @"1c3b8c6bf8467d8e4c33a004dbec5c94", + @(KeyType_NetEase) : @"1c3b8c6bf8467d8e4c33a004dbec5c94", @(keyType_YiDunBussinessId) : @"yinyouApnsDebug", - @(KeyGenre_FacePwdEncode) : @"1ea53d260ecf11e7b56e00163e046a26", - @(KeyGenre_SudGameAppID) : @"1578948593831571457", - @(KeyGenre_SudGameAppKey) : @"J9lHOXvFWkAZiTfl4SK7IGt0wDnW3fWd", - @(KeyGenre_GuildUidKey) : @"938284", - @(KeyGenre_SystemNotifiUidKey) : @"938283", - @(KeyGenre_SecretaryUidKey) : @"938282" + @(KeyType_FacePwdEncode) : @"1ea53d260ecf11e7b56e00163e046a26", + @(KeyType_SudGameAppID) : @"1578948593831571457", + @(KeyType_SudGameAppKey) : @"J9lHOXvFWkAZiTfl4SK7IGt0wDnW3fWd", + @(KeyType_GuildUidKey) : @"938284", + @(KeyType_SystemNotifiUidKey) : @"938283", + @(KeyType_SecretaryUidKey) : @"938282" }; NSString * value = [dic objectForKey:@(type)]; return value; } - ///正式环境 - NSDictionary * dic = @{ - @(KeyGenre_PasswordEncode) : @"mjaN83evhuwnbE4yEiLQpvH7sALhxCuJ6aPjPlq5amVpHsQtSdbgri3JoHqf/I9+", - @(KeyGenre_NTESQuickLoginBusinessId) : @"sCsa0RnuPYtEeE+efSDuHRYEfCObccfLfAK/Sn1LC8X/YifkZfyHNlCts1syZE3R", - @(KeyGenre_Agora) : @"HwmdWg0On+bzIrQvJJA3d8rgc0NMYKwMFhYDcygni8lNnfrtqkAfH1+kGUlrWZ0W", - @(KeyGenre_TRTC) : @"Phn3JPi/ZvZ7zVM099Q3dg==", - - @(KeyGenre_NetEase) : @"d55LVCUFT72SVZskbk1L3ZCVjG+tRnUnOqAGuG04kb9uz+qIvbyudhJLDmbOFDtE", + @(KeyType_PasswordEncode) : @"mjaN83evhuwnbE4yEiLQpvH7sALhxCuJ6aPjPlq5amVpHsQtSdbgri3JoHqf/I9+",///1ea53d260ecf11e7b56e00163e046a26 + @(KeyType_NTESQuickLoginBusinessId) : @"sCsa0RnuPYtEeE+efSDuHRYEfCObccfLfAK/Sn1LC8X/YifkZfyHNlCts1syZE3R",///60cdaa83aa654e5ea184de7160b4073d + @(KeyType_Agora) : @"HwmdWg0On+bzIrQvJJA3d8rgc0NMYKwMFhYDcygni8lNnfrtqkAfH1+kGUlrWZ0W",///7ae1a8dabe7a44a9a67c829faa409e70 + @(KeyType_TRTC) : @"Phn3JPi/ZvZ7zVM099Q3dg==",///1400600174 + ///h+GaKZVuHTQz0wEHbg8HLaUTL9mCjNDRcRo1OJTESWhiE/lzcnvMEv00/dxu8cOq + @(KeyType_NetEase) : @"d55LVCUFT72SVZskbk1L3ZCVjG+tRnUnOqAGuG04kb9uz+qIvbyudhJLDmbOFDtE",///14ef7a0d0a84cb49bae1c22d78cf1ddf @(keyType_YiDunBussinessId) : @"tl2ZVgj6Mrf9lhoJ9ikxgu8tHJoloM5pxk+hsHIB4pulU6r531Qc7Ol5X8QR5Jy0", - @(KeyGenre_FacePwdEncode) : @"mjaN83evhuwnbE4yEiLQpvH7sALhxCuJ6aPjPlq5amVpHsQtSdbgri3JoHqf/I9+", - @(KeyGenre_SudGameAppID) : @"bRnNgSyiJHQULD/HF9NTtfEb+0pwxAjj1lNPvryHSoE=", - @(KeyGenre_SudGameAppKey) : @"OFgpvGaGTMDQQZmWqw07VyV2cAGTt2rRYSeZZNe2Gw9mGNxW4h1C/H9GYwl8017U", - @(KeyGenre_GuildUidKey) : @"umyLNHTFzWIPw2FWQcYIeQ==", - @(KeyGenre_SystemNotifiUidKey) : @"ZacsLJGoW2hbNoXo32DnaA==", - @(KeyGenre_SecretaryUidKey) : @"cHTJhjYL9UXGs8NJSFxhdg==" + @(KeyType_FacePwdEncode) : @"mjaN83evhuwnbE4yEiLQpvH7sALhxCuJ6aPjPlq5amVpHsQtSdbgri3JoHqf/I9+",///1ea53d260ecf11e7b56e00163e046a26 + @(KeyType_SudGameAppID) : @"bRnNgSyiJHQULD/HF9NTtfEb+0pwxAjj1lNPvryHSoE=",///1467745235064848385 + @(KeyType_SudGameAppKey) : @"OFgpvGaGTMDQQZmWqw07VyV2cAGTt2rRYSeZZNe2Gw9mGNxW4h1C/H9GYwl8017U",///BvjLDpWol7OihaYeFebuepx1bZu6cxU5 + @(KeyType_GuildUidKey) : @"umyLNHTFzWIPw2FWQcYIeQ==", + @(KeyType_SystemNotifiUidKey) : @"ZacsLJGoW2hbNoXo32DnaA==", + @(KeyType_SecretaryUidKey) : @"cHTJhjYL9UXGs8NJSFxhdg==" }; NSString * value = [dic objectForKey:@(type)]; NSString * number = [AESUtils aesDecrypt:value]; diff --git a/YuMi/Global/YUMIHtmlUrl.h b/YuMi/Global/YUMIHtmlUrl.h index 61b15549..5d462e00 100644 --- a/YuMi/Global/YUMIHtmlUrl.h +++ b/YuMi/Global/YUMIHtmlUrl.h @@ -11,94 +11,88 @@ NS_ASSUME_NONNULL_BEGIN @interface YUMIHtmlUrl : NSObject -typedef NS_ENUM(NSUInteger, URLGenre) { - kPrivacyURL, - kPrivacySDKURL, - kPrivacyPersonalURL, - kPrivacyDeviceURL, - kUserProtocalURL, - kUserInviteFriendURL, - kFAQURL, - kIdentityURL, +typedef NS_ENUM(NSUInteger, URLType) { + kPrivacyURL,///隐私政策 + kPrivacySDKURL,// 隐私政策-SDK + kPrivacyPersonalURL,// 隐私政策-个人信息 + kPrivacyDeviceURL,// 隐私政策-设备权限 + kUserProtocalURL, ///用户协议 + kUserInviteFriendURL, ///邀请好友 + kFAQURL,///帮助 + kIdentityURL,///实名认证 kGameBindAccountURL, - kNurseryURL, - kRechargePrivacyURL, - kReportRoomURL, - + kNurseryURL,///护苗计划 + kRechargePrivacyURL,////充值协议 + kReportRoomURL,///举报房间 + ///分享房间 kShareRoomURL, - + /// 糖果树获取糖果 kCandyTreeURL, - + /// 获奖记录 kCandyTreeRecordURL, - + /// 糖果树玩法规则 kCandyTreeRuleURL, - + ///房间魅力榜 kRoomCharmRankURL, - + ///房间榜 kRoomRankURL, - + ///房间小时榜 kRoomHourRankURL, - + ///用户等级 kUserLevelURL, - + ///平台榜单入口 kHomeRankURL, - + ///相亲规则介绍 kRoomDatingRule, - + ///贵族规则 kNobleRuleURL, - + ///贵族排行榜 + kNobleRankURL, + ///用户充值协议 kUserRechargeAgrURL, - + //用户注册服务协议 kUserRegiServiceAgrURL, - + ///直播服务协议 kLiveServiceAgrURL, - + ///社区规范 kCommunitySpecURL, - + ///账号注销协议 kAccountlogoutAgrURL, - + ///账号注销 kAccountlogoutURL, - + ///主播粉丝团-铭牌申请 kAnchorFansOpenURL, - + ///主播粉丝团-粉丝列表 kAnchorFansListURL, - + ///主播粉丝团-粉丝排行 kAnchorFansRankURL, - + ///主播粉丝团-粉丝团规则 kAnchorFansRuleURL, - + ///周星礼物-周星榜 kNewWeekStarURL, - + ///牌照房间小时榜 kLicenseHourRankURL, - + ///幸运礼物玩法说明 kLuckyGiftPlayRuleURL, - + ///航海中奖记录 kSailingRecordURL, - + ///航海玩法说明 kSailingPlayDescdURL, - + ///活动地址 kSailingActivityURL, - + ///网络整治乱象 kNetworkRenovateURL, - + ///动态分享 kMonentsShareURL, - + ///红包规则 kRedPacketRuleURL, - + ///星座入口 kXinZuoStarURL, - + ///收益记录 kMineEarningsRecord, - ///夺宝券购买 - kTreasureTicketBuyURL, - ///夺宝榜单达人 - kTreasureRankListURL, - ///夺宝券规则说明 - kTreasureRuleURL, - ///夺宝记录 - kTreasureRecordURL, }; -NSString * const URLWithType(URLGenre type); +NSString * const URLWithType(URLType type); @end diff --git a/YuMi/Global/YUMIHtmlUrl.m b/YuMi/Global/YUMIHtmlUrl.m index 254b6703..5b3d5882 100644 --- a/YuMi/Global/YUMIHtmlUrl.m +++ b/YuMi/Global/YUMIHtmlUrl.m @@ -11,57 +11,65 @@ #import @implementation YUMIHtmlUrl -NSString * const URLWithType(URLGenre type) { - NSString * prefix = @"peko"; +NSString * const URLWithType(URLType type) { + NSString * prefix = @"p"; + prefix = [NSString stringWithFormat:@"%@e",prefix]; + prefix = [NSString stringWithFormat:@"%@k",prefix]; + prefix = [NSString stringWithFormat:@"%@o",prefix]; + + if(type == kNobleRankURL){ + NSDictionary *dic = @{@(kNobleRankURL):@"modules/noble/index.html"};///排行榜} + NSString * url = [dic objectForKey:@(type)]; + return [NSString stringWithFormat:@"%@/%@",prefix, url]; + + } + NSDictionary * dic = @{ - @(kPrivacyURL) : @"sPa8x4YF1hFEeCeH5v+RMOulemxgjjZLbxkN8ZrBSM8=", - @(kPrivacySDKURL) : @"EXbb0qKoel1tyEL3rQ3//BQ6p/uA56xs9iAOyFI7TRU=", - @(kPrivacyPersonalURL) : @"u+t46y/9x4S49BgHUeSXxxu2D69UtZtmyhA93HUTvzI=", - @(kPrivacyDeviceURL) : @"u+t46y/9x4S49BgHUeSXx/rPFwLB78TiQyN+xJKENGQ=", - @(kUserProtocalURL) : @"0sBhBaRqf7oBlYvNK4azCrVPTFjv9FYF0A2v9+qkSxg=", - @(kUserInviteFriendURL) : @"HInhWCyiR3L4dAlHrmQ/GttrZqXhOtq85WujAcETPPI=", - @(kFAQURL) : @"k/Bqnh8nGkuhV8KhU6xN5a8EkxEQrbDMAWNBtaAdJCo=", - @(kIdentityURL) : @"EQtrsRlCX2+rJN89+qyAT6JtfEnprTylInFU0tTPyLA=", - @(kGameBindAccountURL) : @"5s9YWzw5Lt6ro86UN4pUFETAyuCsIL3wl00gLK5rCek=", - @(kNurseryURL) : @"ZT1/YWK/T7gXs1rGDAYnbqG0OrzjhPKJfaebh80/1ro=", - @(kRechargePrivacyURL) : @"boJayVmf9bj+vVXabUop2cc110U9LaDdAJhHfbinDzXLhlBtiv3h7J6Sivv3v1Lr", - @(kReportRoomURL) : @"TbIA4vIU9O5Z/RGJKEELZNe7SFzF9ig/Lvo6D1upv/g=", - @(kShareRoomURL) : @"k+TyUH/PriZr4MWmS/rq8BUYAu34MX3ZyAZsDLF0Eck=", - @(kCandyTreeURL) : @"uGP8LbEVEzTWPSSD357NnkHsXf118dGp9qeZO+8idY4=", - @(kCandyTreeRuleURL) : @"V6XAvR9DZVl5TTczQ/JABNYrR8ebdHwSCqNvO+lcxDl8aiBlq4Dt1BNO3V+65Q4B", - @(kCandyTreeRecordURL) : @"V6XAvR9DZVl5TTczQ/JABDNKGpFSnSP/r6WLbu91uPKWKlwVlmlYvkETALeLk7Jz", - @(kRoomCharmRankURL) : @"a5qVnItWuLLh148cl8R/+VuVNfOSOd1nzVzfSFbAxUA=", - @(kRoomRankURL) : @"DqPWO/9EdbpkGl4PoRVQy4+hE8o8EuE30v2vN/yeZFg=", - @(kRoomHourRankURL) : @"DqPWO/9EdbpkGl4PoRVQy7m9/mGnCSpoi673bWBnwBc=", - @(kUserLevelURL) : @"NE+tamYZsEj7S9BySlTpcCyRDMdxsWDzm6KrZTs9Lbo=", - @(kHomeRankURL) : @"V6XAvR9DZVl5TTczQ/JABNoH8I7E1sQ4oZmqs01zOfc=", - @(kRoomDatingRule) : @"BbMeRujqQH/yCud2VyM4tZMYe8oHwrQCEcP50kTTxgQ=", - @(kNobleRuleURL) : @"4x4Blbka3DFMAyZGSVqxAp0jXvE4/JUx48YfowufzircU1vr/Du8GqrouZUzD9Uq", - @(kUserRechargeAgrURL) : @"boJayVmf9bj+vVXabUop2cc110U9LaDdAJhHfbinDzXLhlBtiv3h7J6Sivv3v1Lr", - @(kUserRegiServiceAgrURL): @"0sBhBaRqf7oBlYvNK4azCrVPTFjv9FYF0A2v9+qkSxg=", - @(kLiveServiceAgrURL) : @"83qLuhoOlxXOw3gwkchLAnb0iz5PEjqOS5dKRRzIxVw=", - @(kCommunitySpecURL) : @"oZs0ygpb9qtOkpZG1zcj1qS3fx0xzBArL1h358e1NM3hbbSU8qTOBmxkpJ03iq+K", - @(kAccountlogoutAgrURL) : @"8pzk0dLk9GPSIKjn894dHtmPvxfIJTkUYNP5qTE7GzYpYAG7LWwF1pK7NWb4E0D9", - @(kAccountlogoutURL) : @"8pzk0dLk9GPSIKjn894dHmMgQS2OHgRpZ6NNmxGMZ7E=", - @(kAnchorFansOpenURL) : @"mLMTNiyvF2Tbv4qan6+ogPrhx2U0FdD+3WkY/LdNbduiPL2qYSUiF2VJ2Dfbgnpn", - @(kAnchorFansListURL) : @"mLMTNiyvF2Tbv4qan6+ogDXuGLEHnNEEiALV6JCC/gE=", - @(kAnchorFansRankURL) : @"mLMTNiyvF2Tbv4qan6+ogCO6lES2UPVnrnZbAxJMj9o+Oz0MAqy0RX8j1QuItbfT", - @(kAnchorFansRuleURL) : @"mLMTNiyvF2Tbv4qan6+ogG32ymd/DYTOoOeZFye3U9A=", - @(kNewWeekStarURL) : @"GmT6HOvcXNUSbxa4g7oNm8j+6DnTtsNc9nMk6SrEyCdP95p3Jwz84r/fjSNcBBRi", - @(kLicenseHourRankURL) : @"DqPWO/9EdbpkGl4PoRVQyyMfaOgNqIr7sGIOi+kLkijf1EAcL9tVSblMXjNuq+Qy", - @(kLuckyGiftPlayRuleURL) : @"DcADpWwvzNDc5QYX9hmrJDFatpu+zp4ynUPdb+KeBx0+iFBaBI/MRU80MenYMHKQ", - @(kSailingActivityURL) : @"ZrQv+cP5sXzlvQp0nvUa20JB5cyCS6X8LTGvUroUfxk=", - @(kSailingPlayDescdURL) : @"ZrQv+cP5sXzlvQp0nvUa23RXydMeqE8YfwP1J1xHCv3PdHFTlEJiRJ1vhrmu25pu", - @(kSailingRecordURL) : @"ZrQv+cP5sXzlvQp0nvUa2w5kpdXwSP1aQbPEWUi/gPvrXEWTD9m43qlvhznGtWx1", - @(kNetworkRenovateURL) : @"vMZOLHkGF9uAzm9Ii2dzmQVhtZPf5IUKeg8H7/5FGcWE3YbMNrK59iMSV91HEHz/", - @(kMonentsShareURL) : @"s06Uv+UqjOdDhupnk0YpKKnSCSFCZssMEJxKZdf+s0Ge3zIFKv3knVVNr710Y5eF", - @(kRedPacketRuleURL) : @"nRMNKGz9zmwOEcoRr/bGneWzsrl+qHbvUGgXJhFAfVGcldkazbiNrc/v2rR0HFw+", - @(kXinZuoStarURL) : @"3l3NxeDKO2bNAESpzjZ76mvJa2D26Bgqy+nNusiuH1UHYM+bYk+MM/TNM4VRqk1K", - @(kMineEarningsRecord) : @"0HJ5o+40NtYGeHo1KRoQE3VdLhFQnvGyqgph9CCLjyU53rS29T2nD7UEh3CpX2BG", - @(kTreasureTicketBuyURL) : @"modules/act-treasureSnatching/index.html",///夺宝购买 - @(kTreasureRankListURL) : @"modules/act-treasureSnatching/list.html",///夺宝达人 - @(kTreasureRuleURL) : @"modules/act-treasureSnatching/rule.html",///夺宝规则说明 - @(kTreasureRecordURL) : @"modules/act-treasureSnatching/record.html",///夺宝记录 + @(kPrivacyURL) : @"sPa8x4YF1hFEeCeH5v+RMOulemxgjjZLbxkN8ZrBSM8=",//隐私政策 modules/rule/privacy-wap.html + @(kPrivacySDKURL) : @"EXbb0qKoel1tyEL3rQ3//BQ6p/uA56xs9iAOyFI7TRU=",//隐私政策-SDK modules/rule/sdk.html + @(kPrivacyPersonalURL) : @"u+t46y/9x4S49BgHUeSXxxu2D69UtZtmyhA93HUTvzI=",//隐私政策-个人信息 modules/rule/personal-info.html + @(kPrivacyDeviceURL) : @"u+t46y/9x4S49BgHUeSXx/rPFwLB78TiQyN+xJKENGQ=",//隐私政策-设备权限 modules/rule/permissions.html + @(kUserProtocalURL) : @"0sBhBaRqf7oBlYvNK4azCrVPTFjv9FYF0A2v9+qkSxg=",///用户协议 modules/rule/protocol.html + @(kUserInviteFriendURL) : @"HInhWCyiR3L4dAlHrmQ/GttrZqXhOtq85WujAcETPPI=",///邀请好友 + @(kFAQURL) : @"k/Bqnh8nGkuhV8KhU6xN5a8EkxEQrbDMAWNBtaAdJCo=",//常见问题 modules/rule/guide.html + @(kIdentityURL) : @"EQtrsRlCX2+rJN89+qyAT6JtfEnprTylInFU0tTPyLA=",//实人认证 modules/identity/new.html + @(kGameBindAccountURL) : @"5s9YWzw5Lt6ro86UN4pUFETAyuCsIL3wl00gLK5rCek=",///绑定账号 modules/game/bindAccount.html + @(kNurseryURL) : @"ZT1/YWK/T7gXs1rGDAYnbqG0OrzjhPKJfaebh80/1ro=",///护苗计划 activity/cleanNet/index.html + @(kRechargePrivacyURL) : @"boJayVmf9bj+vVXabUop2cc110U9LaDdAJhHfbinDzXLhlBtiv3h7J6Sivv3v1Lr",//充值协议 modules/rule/rechargeAgreement.html + @(kReportRoomURL) : @"TbIA4vIU9O5Z/RGJKEELZNe7SFzF9ig/Lvo6D1upv/g=",///举报房间 + @(kShareRoomURL) : @"k+TyUH/PriZr4MWmS/rq8BUYAu34MX3ZyAZsDLF0Eck=",///分享房间 modules/share_room/index.html + @(kCandyTreeURL) : @"uGP8LbEVEzTWPSSD357NnkHsXf118dGp9qeZO+8idY4=",///参加糖果树 activity/explore/index.html + @(kCandyTreeRuleURL) : @"V6XAvR9DZVl5TTczQ/JABNYrR8ebdHwSCqNvO+lcxDl8aiBlq4Dt1BNO3V+65Q4B",///糖果树规则 modules/rank/index.html#/wishingWellRule + @(kCandyTreeRecordURL) : @"V6XAvR9DZVl5TTczQ/JABDNKGpFSnSP/r6WLbu91uPKWKlwVlmlYvkETALeLk7Jz",///糖果树记录 modules/rank/index.html#/newWishingWellRecord + @(kRoomCharmRankURL) : @"a5qVnItWuLLh148cl8R/+VuVNfOSOd1nzVzfSFbAxUA=",//房间魅力榜 modules/charm/index.html + @(kRoomRankURL) : @"DqPWO/9EdbpkGl4PoRVQy4+hE8o8EuE30v2vN/yeZFg=", //房间榜 modules/room_rank/index.html + @(kRoomHourRankURL) : @"DqPWO/9EdbpkGl4PoRVQy7m9/mGnCSpoi673bWBnwBc=", //房间小时榜 modules/room_rank/hourRank.html + @(kUserLevelURL) : @"NE+tamYZsEj7S9BySlTpcCyRDMdxsWDzm6KrZTs9Lbo=",//我的等级 modules/level/index.html + @(kHomeRankURL) : @"V6XAvR9DZVl5TTczQ/JABNoH8I7E1sQ4oZmqs01zOfc=", // 排行榜 modules/rank/index.html#/rank + @(kRoomDatingRule) : @"BbMeRujqQH/yCud2VyM4tZMYe8oHwrQCEcP50kTTxgQ=",//相亲玩法 modules/rule/dating.html + @(kNobleRuleURL) : @"4x4Blbka3DFMAyZGSVqxAp0jXvE4/JUx48YfowufzircU1vr/Du8GqrouZUzD9Uq", // 贵族规则 modules/rule/introduction-patrician.html + + @(kUserRechargeAgrURL) : @"boJayVmf9bj+vVXabUop2cc110U9LaDdAJhHfbinDzXLhlBtiv3h7J6Sivv3v1Lr", ///用户充值协议 + @(kUserRegiServiceAgrURL): @"0sBhBaRqf7oBlYvNK4azCrVPTFjv9FYF0A2v9+qkSxg=",//用户注册服务协议 modules/rule/protocol.html + @(kLiveServiceAgrURL) : @"83qLuhoOlxXOw3gwkchLAnb0iz5PEjqOS5dKRRzIxVw=", ///直播服务协议 modules/rule/live-protocol.html + @(kCommunitySpecURL) : @"oZs0ygpb9qtOkpZG1zcj1qS3fx0xzBArL1h358e1NM3hbbSU8qTOBmxkpJ03iq+K", ///社区规范 modules/rule/community-norms.html + @(kAccountlogoutAgrURL) : @"8pzk0dLk9GPSIKjn894dHtmPvxfIJTkUYNP5qTE7GzYpYAG7LWwF1pK7NWb4E0D9", ///账号注销协议 + @(kAccountlogoutURL) : @"8pzk0dLk9GPSIKjn894dHmMgQS2OHgRpZ6NNmxGMZ7E=", ///账号注销 modules/rule/loginout.html + @(kAnchorFansOpenURL) : @"mLMTNiyvF2Tbv4qan6+ogPrhx2U0FdD+3WkY/LdNbduiPL2qYSUiF2VJ2Dfbgnpn", ///主播粉丝团-铭牌申请v modules/fans_club/nameplate.html + @(kAnchorFansListURL) : @"mLMTNiyvF2Tbv4qan6+ogDXuGLEHnNEEiALV6JCC/gE=", ///主播粉丝团-粉丝列表 modules/fans_club/myfans.html + @(kAnchorFansRankURL) : @"mLMTNiyvF2Tbv4qan6+ogCO6lES2UPVnrnZbAxJMj9o+Oz0MAqy0RX8j1QuItbfT", ///主播粉丝团-粉丝排行 modules/fans_club/fans_rank.html + @(kAnchorFansRuleURL) : @"mLMTNiyvF2Tbv4qan6+ogG32ymd/DYTOoOeZFye3U9A=", ///主播粉丝团-粉丝团规则 modules/fans_club/rule.html + @(kNewWeekStarURL) : @"GmT6HOvcXNUSbxa4g7oNm8j+6DnTtsNc9nMk6SrEyCdP95p3Jwz84r/fjSNcBBRi", ///周星礼物-周星榜 modules/weekStar/newWeekStar.html + @(kLicenseHourRankURL) : @"DqPWO/9EdbpkGl4PoRVQyyMfaOgNqIr7sGIOi+kLkijf1EAcL9tVSblMXjNuq+Qy",///牌照房小时榜礼物 modules/room_rank/hourRankLicense.html + @(kLuckyGiftPlayRuleURL) : @"DcADpWwvzNDc5QYX9hmrJDFatpu+zp4ynUPdb+KeBx0+iFBaBI/MRU80MenYMHKQ",///幸运礼物玩法说明 modules/rule/luckyGiftRule.html?giftID=%@ + @(kSailingActivityURL) : @"ZrQv+cP5sXzlvQp0nvUa20JB5cyCS6X8LTGvUroUfxk=", ///航海活动地址 activity/act-sail/more.html + @(kSailingPlayDescdURL) : @"ZrQv+cP5sXzlvQp0nvUa23RXydMeqE8YfwP1J1xHCv3PdHFTlEJiRJ1vhrmu25pu", ///航海玩法规则 activity/act-sail/play_explain.html + @(kSailingRecordURL) : @"ZrQv+cP5sXzlvQp0nvUa2w5kpdXwSP1aQbPEWUi/gPvrXEWTD9m43qlvhznGtWx1", ///航海中奖记录 activity/act-sail/win_record.html + @(kNetworkRenovateURL) : @"vMZOLHkGF9uAzm9Ii2dzmQVhtZPf5IUKeg8H7/5FGcWE3YbMNrK59iMSV91HEHz/",///网络整治乱象 activity/activemodel/index.html?code=ZBGG + @(kMonentsShareURL) : @"s06Uv+UqjOdDhupnk0YpKKnSCSFCZssMEJxKZdf+s0Ge3zIFKv3knVVNr710Y5eF",///分享动态 modules/world/share-page/index.html + @(kRedPacketRuleURL) : @"nRMNKGz9zmwOEcoRr/bGneWzsrl+qHbvUGgXJhFAfVGcldkazbiNrc/v2rR0HFw+",///红包规则 modules/rule/red-packet-rule.html + @(kXinZuoStarURL) : @"3l3NxeDKO2bNAESpzjZ76mvJa2D26Bgqy+nNusiuH1UHYM+bYk+MM/TNM4VRqk1K",///星座礼物 activity/act-constellation/index.html + @(kMineEarningsRecord) : @"0HJ5o+40NtYGeHo1KRoQE3VdLhFQnvGyqgph9CCLjyU53rS29T2nD7UEh3CpX2BG",///收益记录 }; NSString * url = [dic objectForKey:@(type)]; NSString * webUrl = [AESUtils aesDecrypt:url]; diff --git a/YuMi/Global/YUMIMacroUitls.h b/YuMi/Global/YUMIMacroUitls.h index 41f205a1..c4559e87 100644 --- a/YuMi/Global/YUMIMacroUitls.h +++ b/YuMi/Global/YUMIMacroUitls.h @@ -8,6 +8,7 @@ #ifndef YUMIMacroUitls_h #define YUMIMacroUitls_h +//iPhoneX系列设备(刘海屏设备) #define iPhoneXSeries \ ({BOOL isPhoneXSeries = NO;\ if (@available(iOS 11.0, *)) {\ @@ -31,10 +32,20 @@ isPhoneXSeries = [[UIApplication sharedApplication] delegate].window.safeAreaIns #define kScreenHeightScale ((CGFloat)KScreenHeight / (CGFloat)812) #define kWeakify(o) try{}@finally{} __weak typeof(o) o##Weak = o; #define kStrongify(o) autoreleasepool{} __strong typeof(o) o = o##Weak; +///keyWindow +#define kWindow [UIApplication sharedApplication].keyWindow +#define kImage(image) [UIImage imageNamed:image] + +///UIFont +#define kFontRegular(font) [UIFont systemFontOfSize:kGetScaleWidth(font) weight:UIFontWeightRegular] +#define kFontMedium(font) [UIFont systemFontOfSize:kGetScaleWidth(font) weight:UIFontWeightMedium] +#define kFontSemibold(font) [UIFont systemFontOfSize:kGetScaleWidth(font) weight:UIFontWeightSemibold] +#define kFontBold(font) [UIFont systemFontOfSize:kGetScaleWidth(font) weight:UIFontWeightBold] +#define kFontHeavy(font) [UIFont systemFontOfSize:kGetScaleWidth(font) weight:UIFontWeightHeavy] + + + -#import "NSBundle+Localizable.h" -#define YMLocalizedString(key) \ -[NSBundle ymProvincializedBWSttrInthecaseofDigital:(key)] #ifdef DEBUG @@ -47,5 +58,7 @@ isPhoneXSeries = [[UIApplication sharedApplication] delegate].window.safeAreaIns #endif #define API_Image_URL @"https://image.hfighting.com" - -#endif +#import "NSBundle+Localizable.h" +#define YMLocalizedString(key) \ +[NSBundle ymLocalizedStringForKey:(key)] +#endif /* YUMIMacroUitls_h */ diff --git a/YuMi/Global/YUMINNNN.h b/YuMi/Global/YUMINNNN.h index e56385f0..77d74178 100644 --- a/YuMi/Global/YUMINNNN.h +++ b/YuMi/Global/YUMINNNN.h @@ -8,81 +8,82 @@ #ifndef YUMINNNN_h #define YUMINNNN_h -typedef NS_ENUM(NSUInteger, ThirdLoginGenre) { - ThirdLoginGenre_WeChat = 1, - ThirdLoginGenre_QQ = 2, - ThirdLoginGenre_FB = 10, - ThirdLoginGenre_Line = 9, - ThirdLoginGenre_Gmail = 8, - ThirdLoginGenre_Apple = 5, - ThirdLoginGenre_Phone = 11, +typedef NS_ENUM(NSUInteger, ThirdLoginType) { + ThirdLoginType_WeChat = 1,///微信 + ThirdLoginType_QQ = 2,///QQ + ThirdLoginType_FB = 10,///FackBook + ThirdLoginType_Line = 9,///Line + ThirdLoginType_Gmail = 8,///谷歌 + ThirdLoginType_Apple = 5,///苹果登录 + ThirdLoginType_Phone = 11,///手机号登录 }; -typedef NS_ENUM(NSUInteger, GetSmsGenre) { - GetSmsGenre_Regist = 1, - GetSmsGenre_Login = 2, - GetSmsGenre_Reset_Password = 3, - GetSmsGenre_Bind_Phone = 4, - GetSmsGenre_Bind_ZF = 5, - GetSmsGenre_Reset_ZF = 6, - GetSmsGenre_Unbind_Phone = 7, +/// @param type 类型 业务类型,必填,1注册,2登录,3重设密码,4绑定手机,5绑定xczAccount,6重设xcz密码,7解绑手机 +typedef NS_ENUM(NSUInteger, GetSmsType) { + GetSmsType_Regist = 1,///注册 + GetSmsType_Login = 2,///登录 + GetSmsType_Reset_Password = 3,///重设密码 + GetSmsType_Bind_Phone = 4, ///绑定手机 + GetSmsType_Bind_ZF = 5,///绑定支付宝 + GetSmsType_Reset_ZF = 6,///重设支付密码 + GetSmsType_Unbind_Phone = 7, ///解绑手机 }; -typedef NS_ENUM(NSInteger, GenderGenre) { - GenderGenre_Male = 1, - GenderGenre_Female = 2, +typedef NS_ENUM(NSInteger, GenderType) { + GenderType_Male = 1,///男性 + GenderType_Female = 2,///女性 }; -typedef NS_ENUM(NSInteger, DressUpLabelGenre) { - DressUpLabelGenre_New = 1, - DressUpLabelGenre_Discount = 2, - DressUpLabelGenre_Limit = 3, - DressUpLabelGenre_Exclusive = 4 +typedef NS_ENUM(NSInteger, DressUpLabelType) { + DressUpLabelType_New = 1, //新品 + DressUpLabelType_Discount = 2, //折扣 + DressUpLabelType_Limit = 3,//限定 + DressUpLabelType_Exclusive = 4//专属 }; -typedef NS_ENUM(NSInteger, GroupGenre) { - GroupGenre_default = 0, - GroupGenre_Blue = 1, - GroupGenre_Red = 2, +typedef NS_ENUM(NSInteger, GroupType) { + GroupType_default = 0,//默认 + GroupType_Blue = 1,//蓝队 男神 + GroupType_Red = 2, //红队 女神 }; -typedef NS_ENUM(NSInteger, ConsumerEnterChamberFromGenre) { - - ConsumerEnterChamberFromGenre_Home_Recommend = 1, - - ConsumerEnterChamberFromGenre_Follow_User = 2, - - ConsumerEnterChamberFromGenre_Follow_Game_Detail = 8, - - ConsumerEnterChamberFromGenre_Cross_Room_PK = 9, - - ConsumerEnterChamberFromGenre_New_User_Greet = 10 +typedef NS_ENUM(NSInteger, UserEnterRoomFromType) { + ///首页推荐 + UserEnterRoomFromType_Home_Recommend = 1, + ///跟随用户 + UserEnterRoomFromType_Follow_User = 2, + ///赛事详情 + UserEnterRoomFromType_Follow_Game_Detail = 8, + ///跨房PK + UserEnterRoomFromType_Cross_Room_PK = 9, + ///新用户打招呼 + UserEnterRoomFromType_New_User_Greet = 10 }; -typedef NS_ENUM(NSInteger, LittleGameDisportPosition) { - LittleGameDisportPosition_NoIn = 0, - LittleGameDisportPosition_IsIn = 1, - LittleGameDisportPosition_Ready = 2, - LittleGameDisportPosition_Plying = 3, +typedef NS_ENUM(NSInteger, LittleGamePlayStatus) { + LittleGamePlayStatus_NoIn = 0,//未加入 + LittleGamePlayStatus_IsIn = 1,//已加入 + LittleGamePlayStatus_Ready = 2, //已准备 + LittleGamePlayStatus_Plying = 3,//游戏中 }; -typedef NS_ENUM(NSInteger, ChamberCombatVoteModeGenre){ - ChamberCombatVoteModeGenre_GiftValue = 1, - ChamberCombatVoteModeGenre_NumberPerson = 2, +typedef NS_ENUM(NSInteger, RoomPKVoteModeType){ + RoomPKVoteModeType_GiftValue = 1,//礼物价值 + RoomPKVoteModeType_NumberPerson = 2, //按送礼物的人数 }; -typedef NS_ENUM(NSInteger, ChamberCombatResultGenre) { - ChamberCombatResultGenre_Draw = 0, - ChamberCombatResultGenre_Blue = 1, - ChamberCombatResultGenre_Red = 2, +typedef NS_ENUM(NSInteger, RoomPKResultType) { + RoomPKResultType_Draw = 0,//平局 + RoomPKResultType_Blue = 1,//蓝方胜 + RoomPKResultType_Red = 2, //红方胜 }; -typedef NS_ENUM(NSInteger, ContactUseingGenre) { - - ContactUseingGenre_Normal = 0, - - ContactUseingGenre_In_Room = 1, - - ContactUseingGenre_Share = 2, +typedef NS_ENUM(NSInteger, ContactUseingType) { + ///默认 + ContactUseingType_Normal = 0, + ///在房间内 + ContactUseingType_In_Room = 1, + ///分享 + ContactUseingType_Share = 2, }; -#endif +#endif /* YUMINNNN_h */ diff --git a/YuMi/Modules/YMLogin/Api/Api+Login.h b/YuMi/Modules/YMLogin/Api/Api+Login.h index 88bde016..09a0ef85 100644 --- a/YuMi/Modules/YMLogin/Api/Api+Login.h +++ b/YuMi/Modules/YMLogin/Api/Api+Login.h @@ -10,10 +10,14 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (Login) -+ (void)mobileFlexibleSurmount:(HttpRequestHelperCompletion)completion ++ (void)phoneQuickLogin:(HttpRequestHelperCompletion)completion accessToken:(NSString *)accessToken token:(NSString *)token; -+ (void)surmountAboutCryptogram:(HttpRequestHelperCompletion)completion +/// 手机验证码登录 +/// @param completion 完成 +/// @param phone 手机号 +/// @param code 验证码 ++ (void)loginWithCode:(HttpRequestHelperCompletion)completion phone:(NSString *)phone code:(NSString *)code client_secret:(NSString *)client_secret @@ -22,7 +26,11 @@ NS_ASSUME_NONNULL_BEGIN grant_type:(NSString *)grant_type phoneAreaCode:(NSString *)phoneAreaCode; -+ (void)surmountAboutCiphercryptogram:(HttpRequestHelperCompletion)completion +/// 手机密码登录 +/// @param completion 完成 +/// @param phone 手机号 +/// @param password 验证码 ++ (void)loginWithPassword:(HttpRequestHelperCompletion)completion phone:(NSString *)phone password:(NSString *)password client_secret:(NSString *)client_secret @@ -30,25 +38,43 @@ NS_ASSUME_NONNULL_BEGIN client_id:(NSString *)client_id grant_type:(NSString *)grant_type; -+ (void)replacementCiphercryptogramAboutMobile:(HttpRequestHelperCompletion)complction +/// 充值密码 没有登录的时候 +/// @param complction 完成 +/// @param phone 手机号 +/// @param newPwd 新的密码 +/// @param smsCode 验证码 ++ (void)resetPasswordWithPhone:(HttpRequestHelperCompletion)complction phone:(NSString *)phone newPwd:(NSString *)newPwd smsCode:(NSString *)smsCode; -+ (void)surmountAboutTertiusPart:(HttpRequestHelperCompletion)complction +/// 第三方登录 +/// @param complction 完成 +/// @param openid 唯一标识符 +/// @param unionid unionid +/// @param access_token access_token +/// @param type 第三方登录的类型 ++ (void)loginWithThirdPart:(HttpRequestHelperCompletion)complction openid:(NSString *)openid unionid:(NSString *)unionid access_token:(NSString *)access_token type:(NSString *)type; -+ (void)arbitraryMonicer:(HttpRequestHelperCompletion)completion; +/// 随机获取一个昵称 +/// @param completion 完成 ++ (void)randomNick:(HttpRequestHelperCompletion)completion; -+ (void)dilemmaAplictowardsionartowardsusCryptogram:(HttpRequestHelperCompletion)complection +/// 绑定手机号码 +/// @param complection 完成 +/// @param phone 手机号 +/// @param code 验证码 +/// @param ticket ticket ++ (void)bindMoblieCode:(HttpRequestHelperCompletion)complection phone:(NSString *)phone code:(NSString *)code ticket:(NSString *)ticket; -+(void)acquireMobileAreaCryptogramSttowardsement:(HttpRequestHelperCompletion)complection; ++(void)getPhoneAreaCodeList:(HttpRequestHelperCompletion)complection; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Api/Api+Login.m b/YuMi/Modules/YMLogin/Api/Api+Login.m index fd45a86a..0a45436e 100644 --- a/YuMi/Modules/YMLogin/Api/Api+Login.m +++ b/YuMi/Modules/YMLogin/Api/Api+Login.m @@ -9,48 +9,74 @@ #import @implementation Api (Login) -+ (void)mobileFlexibleSurmount:(HttpRequestHelperCompletion)completion accessToken:(NSString *)accessToken token:(NSString *)token { - NSString * fang = [NSString stringFromBase64String:@"YWNjL29uZWNsaWNrL2xvZ2lu"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, accessToken, token, nil]; ++ (void)phoneQuickLogin:(HttpRequestHelperCompletion)completion accessToken:(NSString *)accessToken token:(NSString *)token { + NSString * fang = [NSString stringFromBase64String:@"YWNjL29uZWNsaWNrL2xvZ2lu"];///acc/oneclick/login + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, accessToken, token, nil]; } -+ (void)surmountAboutCryptogram:(HttpRequestHelperCompletion)completion phone:(NSString *)phone code:(NSString *)code client_secret:(NSString *)client_secret version:(NSString *)version client_id:(NSString *)client_id grant_type:(NSString *)grant_type phoneAreaCode:(NSString *)phoneAreaCode{ - NSString * fang = [NSString stringFromBase64String:@"b2F1dGgvdG9rZW4="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,phone,code,client_secret,version, client_id, grant_type,phoneAreaCode, nil]; +/// 手机验证码登录 +/// @param completion 完成 +/// @param phone 手机号 +/// @param code 验证码 ++ (void)loginWithCode:(HttpRequestHelperCompletion)completion phone:(NSString *)phone code:(NSString *)code client_secret:(NSString *)client_secret version:(NSString *)version client_id:(NSString *)client_id grant_type:(NSString *)grant_type phoneAreaCode:(NSString *)phoneAreaCode{ + NSString * fang = [NSString stringFromBase64String:@"b2F1dGgvdG9rZW4="];///oauth/token + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,phone,code,client_secret,version, client_id, grant_type,phoneAreaCode, nil]; } -+ (void)surmountAboutCiphercryptogram:(HttpRequestHelperCompletion)completion phone:(NSString *)phone password:(NSString *)password client_secret:(NSString *)client_secret version:(NSString *)version client_id:(NSString *)client_id grant_type:(NSString *)grant_type { - NSString * fang = [NSString stringFromBase64String:@"b2F1dGgvdG9rZW4="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,phone,password,client_secret,version, client_id, grant_type, nil]; +/// 手机密码登录 +/// @param completion 完成 +/// @param phone 手机号 +/// @param password 验证码 ++ (void)loginWithPassword:(HttpRequestHelperCompletion)completion phone:(NSString *)phone password:(NSString *)password client_secret:(NSString *)client_secret version:(NSString *)version client_id:(NSString *)client_id grant_type:(NSString *)grant_type { + NSString * fang = [NSString stringFromBase64String:@"b2F1dGgvdG9rZW4="];///oauth/token + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,phone,password,client_secret,version, client_id, grant_type, nil]; } -+ (void)replacementCiphercryptogramAboutMobile:(HttpRequestHelperCompletion)completion phone:(NSString *)phone newPwd:(NSString *)newPwd smsCode:(NSString *)smsCode { - NSString * fang = [NSString stringFromBase64String:@"YWNjL3B3ZC9yZXNldA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, phone, newPwd, smsCode, nil]; +/// 充值密码 没有登录的时候 +/// @param completion 完成 +/// @param phone 手机号 +/// @param newPwd 新的密码 +/// @param smsCode 验证码 ++ (void)resetPasswordWithPhone:(HttpRequestHelperCompletion)completion phone:(NSString *)phone newPwd:(NSString *)newPwd smsCode:(NSString *)smsCode { + NSString * fang = [NSString stringFromBase64String:@"YWNjL3B3ZC9yZXNldA=="];/// acc/pwd/reset + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, phone, newPwd, smsCode, nil]; } -+ (void)surmountAboutTertiusPart:(HttpRequestHelperCompletion)completion openid:(NSString *)openid unionid:(NSString *)unionid access_token:(NSString *)access_token type:(NSString *)type { - NSString * fang = [NSString stringFromBase64String:@"YWNjL3RoaXJkL2xvZ2lu"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, openid, unionid, access_token, type, nil]; +/// 第三方登录 +/// @param completion 完成 +/// @param openid 唯一标识符 +/// @param unionid unionid +/// @param access_token access_token +/// @param type 第三方登录的类型 ++ (void)loginWithThirdPart:(HttpRequestHelperCompletion)completion openid:(NSString *)openid unionid:(NSString *)unionid access_token:(NSString *)access_token type:(NSString *)type { + NSString * fang = [NSString stringFromBase64String:@"YWNjL3RoaXJkL2xvZ2lu"];///acc/third/login + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, openid, unionid, access_token, type, nil]; } -+ (void)arbitraryMonicer:(HttpRequestHelperCompletion)completion { - NSString * fang = [NSString stringFromBase64String:@"cmFuZG9tL25pY2svZ2V0"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, nil]; +/// 随机获取一个昵称 +/// @param completion 完成 ++ (void)randomNick:(HttpRequestHelperCompletion)completion { + NSString * fang = [NSString stringFromBase64String:@"cmFuZG9tL25pY2svZ2V0"];///random/nick/get + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, nil]; } -+ (void)dilemmaAplictowardsionartowardsusCryptogram:(HttpRequestHelperCompletion)complection +/// 绑定手机号码 +/// @param complection 完成 +/// @param phone 手机号 +/// @param code 验证码 +/// @param ticket ticket ++ (void)bindMoblieCode:(HttpRequestHelperCompletion)complection phone:(NSString *)phone code:(NSString *)code ticket:(NSString *)ticket { - NSString * fang = [NSString stringFromBase64String:@"d2l0aERyYXcvcGhvbmU="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, phone, code, ticket, nil]; + NSString * fang = [NSString stringFromBase64String:@"d2l0aERyYXcvcGhvbmU="];///withDraw/phone + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, phone, code, ticket, nil]; } -+(void)acquireMobileAreaCryptogramSttowardsement:(HttpRequestHelperCompletion)complection{ - NSString * fang = [NSString stringFromBase64String:@"YXJlYUluZm8vbGlzdA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__,nil]; ++(void)getPhoneAreaCodeList:(HttpRequestHelperCompletion)complection{ + NSString * fang = [NSString stringFromBase64String:@"YXJlYUluZm8vbGlzdA=="];///areaInfo/list + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__,nil]; } @end diff --git a/YuMi/Modules/YMLogin/Model/LoginAreaModel.h b/YuMi/Modules/YMLogin/Model/LoginAreaModel.h new file mode 100644 index 00000000..adcd25b6 --- /dev/null +++ b/YuMi/Modules/YMLogin/Model/LoginAreaModel.h @@ -0,0 +1,25 @@ +// +// LoginAreaModel.h +// YuMi +// +// Created by YuMi on 2023/6/25. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface LoginAreaModel : NSObject +@property (nonatomic,copy) NSString *codeId; +@property (nonatomic,copy) NSString *name; +@property (nonatomic,copy) NSString *abbr; +@property (nonatomic,copy) NSString *phone_area_code; +@property (nonatomic,copy) NSString *phoneAreaCode; +@property (nonatomic,copy) NSString *seq; +@property (nonatomic,copy) NSString *status; +@property (nonatomic,copy) NSString *region; +@property (nonatomic,copy) NSString *create_time; +@property (nonatomic,copy) NSString *update_time; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Model/LoginAreaModel.m b/YuMi/Modules/YMLogin/Model/LoginAreaModel.m new file mode 100644 index 00000000..a552d633 --- /dev/null +++ b/YuMi/Modules/YMLogin/Model/LoginAreaModel.m @@ -0,0 +1,12 @@ +// +// LoginAreaModel.m +// YuMi +// +// Created by YuMi on 2023/6/25. +// + +#import "LoginAreaModel.h" + +@implementation LoginAreaModel + +@end diff --git a/YuMi/Modules/YMLogin/Model/SurmountAreaMatrix.h b/YuMi/Modules/YMLogin/Model/SurmountAreaMatrix.h deleted file mode 100644 index 0d206542..00000000 --- a/YuMi/Modules/YMLogin/Model/SurmountAreaMatrix.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// SurmountAreaMatrix.h -// YuMi -// -// Created by YuMi on 2023/6/25. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface SurmountAreaMatrix : NSObject -@property (nonatomic,copy) NSString *codeId; -@property (nonatomic,copy) NSString *name; -@property (nonatomic,copy) NSString *abbr; -@property (nonatomic,copy) NSString *phone_area_code; -@property (nonatomic,copy) NSString *phoneAreaCode; -@property (nonatomic,copy) NSString *seq; -@property (nonatomic,copy) NSString *status; -@property (nonatomic,copy) NSString *region; -@property (nonatomic,copy) NSString *create_time; -@property (nonatomic,copy) NSString *update_time; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Model/SurmountAreaMatrix.m b/YuMi/Modules/YMLogin/Model/SurmountAreaMatrix.m deleted file mode 100644 index 48c0048b..00000000 --- a/YuMi/Modules/YMLogin/Model/SurmountAreaMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// SurmountAreaMatrix.m -// YuMi -// -// Created by YuMi on 2023/6/25. -// - -#import "SurmountAreaMatrix.h" - -@implementation SurmountAreaMatrix - -@end diff --git a/YuMi/Modules/YMLogin/Model/ThirdConsumerAbstract.h b/YuMi/Modules/YMLogin/Model/ThirdConsumerAbstract.h deleted file mode 100644 index b2a65aef..00000000 --- a/YuMi/Modules/YMLogin/Model/ThirdConsumerAbstract.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// ThirdConsumerAbstract.h -// YUMI -// -// Created by YUMI on 2021/9/13. -// - -#import "NSObject+MJExtension.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface ThirdConsumerAbstract : NSObject -@property (nonatomic,copy) NSString *userName; -@property (nonatomic,copy) NSString *avatarUrl; -@property (nonatomic,copy) NSString * openid; - -@property (nonatomic,copy) NSString * access_token; - -@property (nonatomic,copy) NSString * unionid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Model/ThirdConsumerAbstract.m b/YuMi/Modules/YMLogin/Model/ThirdConsumerAbstract.m deleted file mode 100644 index aff7bfc1..00000000 --- a/YuMi/Modules/YMLogin/Model/ThirdConsumerAbstract.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ThirdConsumerAbstract.m -// YUMI -// -// Created by YUMI on 2021/9/13. -//保存第三方请求的 用户信息 - -#import "ThirdConsumerAbstract.h" - -@implementation ThirdConsumerAbstract - -@end diff --git a/YuMi/Modules/YMLogin/Model/ThirdUserInfo.h b/YuMi/Modules/YMLogin/Model/ThirdUserInfo.h new file mode 100644 index 00000000..132781ec --- /dev/null +++ b/YuMi/Modules/YMLogin/Model/ThirdUserInfo.h @@ -0,0 +1,24 @@ +// +// ThirdUserInfo.h +// YUMI +// +// Created by YUMI on 2021/9/13. +// + +#import "NSObject+MJExtension.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface ThirdUserInfo : NSObject +///用户名 +@property (nonatomic,copy) NSString *userName; +///头像的地址 +@property (nonatomic,copy) NSString *avatarUrl; +@property (nonatomic,copy) NSString * openid; + +@property (nonatomic,copy) NSString * access_token; + +@property (nonatomic,copy) NSString * unionid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Model/ThirdUserInfo.m b/YuMi/Modules/YMLogin/Model/ThirdUserInfo.m new file mode 100644 index 00000000..02d1ec11 --- /dev/null +++ b/YuMi/Modules/YMLogin/Model/ThirdUserInfo.m @@ -0,0 +1,12 @@ +// +// ThirdUserInfo.m +// YUMI +// +// Created by YUMI on 2021/9/13. +//保存第三方请求的 用户信息 + +#import "ThirdUserInfo.h" + +@implementation ThirdUserInfo + +@end diff --git a/YuMi/Modules/YMLogin/Presenter/LoginBindPhonePresent.h b/YuMi/Modules/YMLogin/Presenter/LoginBindPhonePresent.h new file mode 100644 index 00000000..fd581d39 --- /dev/null +++ b/YuMi/Modules/YMLogin/Presenter/LoginBindPhonePresent.h @@ -0,0 +1,16 @@ +// +// LoginBindPhonePresent.h +// YUMI +// +// Created by YUMI on 2021/9/15. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface LoginBindPhonePresent : BaseMvpPresenter + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Presenter/LoginBindPhonePresent.m b/YuMi/Modules/YMLogin/Presenter/LoginBindPhonePresent.m new file mode 100644 index 00000000..848eddd5 --- /dev/null +++ b/YuMi/Modules/YMLogin/Presenter/LoginBindPhonePresent.m @@ -0,0 +1,17 @@ +// +// LoginBindPhonePresent.m +// YUMI +// +// Created by YUMI on 2021/9/15. +// + +#import "LoginBindPhonePresent.h" +#import "BaseMvpProtocol.h" + +@implementation LoginBindPhonePresent + +- (id)getView { + return ((id) [super getView]); +} + +@end diff --git a/YuMi/Modules/YMLogin/Presenter/LoginForgetPasswordPresent.h b/YuMi/Modules/YMLogin/Presenter/LoginForgetPasswordPresent.h new file mode 100644 index 00000000..2ca2dc09 --- /dev/null +++ b/YuMi/Modules/YMLogin/Presenter/LoginForgetPasswordPresent.h @@ -0,0 +1,25 @@ +// +// LoginForgetPasswordPresent.h +// YUMI +// +// Created by YUMI on 2021/9/10. +// + +#import "BaseMvpPresenter.h" +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +@interface LoginForgetPasswordPresent : BaseMvpPresenter +/// 获取手机的验证码 +/// @param phone 手机号 +/// @param type 类型 +- (void)phoneSmsCode:(NSString *)phone type:(GetSmsType)type phoneAreaCode:(NSString *)phoneAreaCode; + +/// 没有登录的时候 重置密码 +/// @param phone 手机号 +/// @param newPwd 新的密码 +/// @param smsCode 验证码 +- (void)resetPassword:(NSString *)phone newPwd:(NSString *)newPwd smsCode:(NSString *)smsCode; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Presenter/LoginForgetPasswordPresent.m b/YuMi/Modules/YMLogin/Presenter/LoginForgetPasswordPresent.m new file mode 100644 index 00000000..20c269bb --- /dev/null +++ b/YuMi/Modules/YMLogin/Presenter/LoginForgetPasswordPresent.m @@ -0,0 +1,49 @@ +// +// LoginForgetPasswordPresent.m +// YUMI +// +// Created by YUMI on 2021/9/10. +// + +#import "LoginForgetPasswordPresent.h" +///Tool +#import "AccountInfoStorage.h" +#import "DESEncrypt.h" +#import "YUMIConstant.h" +///Api +#import "Api+Login.h" +///Presenter +#import "LoginForgetPasswordPresent.h" +///Protocol +#import "LoginForgetPasswordProtocol.h" + +@implementation LoginForgetPasswordPresent + +- (id)getView { + return ((id) [super getView]); +} + +/// 获取手机的验证码 +/// @param phone 手机号 +/// @param type 类型 +- (void)phoneSmsCode:(NSString *)phone type:(GetSmsType)type phoneAreaCode:(NSString *)phoneAreaCode{ + NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)]; + [Api phoneSmsCode:[self createHttpCompletion:^(id _Nonnull data) { + [[self getView] phoneSmsCodeSuccess]; + }] mobile:desPhone type:[NSString stringWithFormat:@"%lu", (unsigned long)type] phoneAreaCode:phoneAreaCode]; +} + + +/// 没有登录的时候 重置密码 +/// @param phone 手机号 +/// @param newPwd 新的密码 +/// @param smsCode 验证码 +- (void)resetPassword:(NSString *)phone newPwd:(NSString *)newPwd smsCode:(NSString *)smsCode { + NSString * desPassword = [DESEncrypt encryptUseDES:newPwd key:KeyWithType(KeyType_PasswordEncode)]; + NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)]; + [Api resetPasswordWithPhone:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] resetPasswrodSuccess]; + } showLoading:YES] phone:desPhone newPwd:desPassword smsCode:smsCode]; +} + +@end diff --git a/YuMi/Modules/YMLogin/Presenter/LoginFullInfoPresenter.h b/YuMi/Modules/YMLogin/Presenter/LoginFullInfoPresenter.h new file mode 100644 index 00000000..601e20a8 --- /dev/null +++ b/YuMi/Modules/YMLogin/Presenter/LoginFullInfoPresenter.h @@ -0,0 +1,38 @@ +// +// LoginFullInfoPresenter.h +// YUMI +// +// Created by YUMI on 2021/9/14. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN +@class ThirdUserInfo; +@interface LoginFullInfoPresenter : BaseMvpPresenter + +/// 获取保存的第三方的数据模型 +- (ThirdUserInfo *)getThirdUserInfo; + +/// 随机获取昵称 +- (void)randomRequestNick; + +/// 补全资料 +/// @param avatar 头像 +/// @param gender 性别 +/// @param nick 昵称 +/// @param inviteCode 邀请码 +/// @param roomUid 邀请的那个房间的uid +/// @param shareUid 邀请人的uid +/// @param shareChannel 邀请的渠道 +- (void)complectionInfoWithAvatar:(NSString *)avatar + gender:(NSString *)gender + nick:(NSString *)nick + inviteCode:(NSString * __nullable)inviteCode + roomUid:(NSString * __nullable)roomUid + shareUid:(NSString * __nullable)shareUid + shareChannel:(NSString * __nullable)shareChannel; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Presenter/LoginFullInfoPresenter.m b/YuMi/Modules/YMLogin/Presenter/LoginFullInfoPresenter.m new file mode 100644 index 00000000..ad45d96d --- /dev/null +++ b/YuMi/Modules/YMLogin/Presenter/LoginFullInfoPresenter.m @@ -0,0 +1,84 @@ +// +// LoginFullInfoPresenter.m +// YUMI +// +// Created by YUMI on 2021/9/14. +// + +#import "LoginFullInfoPresenter.h" +///Api +#import "Api+Login.h" +#import "LoginFullInfoProtocol.h" +#import "NSMutableDictionary+Saft.h" +///Tool +#import "AccountInfoStorage.h" +///Model +#import "ThirdUserInfo.h" + +@implementation LoginFullInfoPresenter + +- (id)getView { + return ((id) [super getView]); +} + + +/// 获取保存的第三方的数据模型 +- (ThirdUserInfo *)getThirdUserInfo { + if ([AccountInfoStorage instance].thirdUserInfo) { + return [AccountInfoStorage instance].thirdUserInfo; + } + return nil; +} + +/// 随机获取昵称 +- (void)randomRequestNick { + [Api randomNick:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] requestRandomNickSuccess:data.data]; + }]]; +} + + +/// 补全资料 +/// @param avatar 头像 +/// @param gender 性别 +/// @param nick 昵称 +/// @param inviteCode 邀请码 +/// @param roomUid 邀请的那个房间的uid +/// @param shareUid 邀请人的uid +/// @param shareChannel 邀请的渠道 +- (void)complectionInfoWithAvatar:(NSString *)avatar + gender:(NSString *)gender + nick:(NSString *)nick + inviteCode:(NSString * __nullable)inviteCode + roomUid:(NSString * __nullable)roomUid + shareUid:(NSString * __nullable)shareUid + shareChannel:(NSString * __nullable)shareChannel { + NSString * uid = [[AccountInfoStorage instance] getUid]; + NSString * ticket = [[AccountInfoStorage instance] getTicket]; + NSMutableDictionary * params = [NSMutableDictionary dictionary]; + [params safeSetObject:avatar forKey:@"avatar"]; + [params safeSetObject:gender forKey:@"gender"]; + [params safeSetObject:nick forKey:@"nick"]; + [params safeSetObject:uid forKey:@"uid"]; + [params safeSetObject:ticket forKey:@"ticket"]; + if (inviteCode.length > 0) { + [params safeSetObject:inviteCode forKey:@"inviteCode"]; + } + + if (roomUid.length > 0) { + [params safeSetObject:roomUid forKey:@"roomUid"]; + } + + if (shareUid.length > 0) { + [params safeSetObject:shareUid forKey:@"shareUid"]; + } + + if (shareChannel.length > 0) { + [params safeSetObject:shareChannel forKey:@"shareChannel"]; + } + [Api completeUserInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] complementInfoSuccess]; + }] userInfo:params]; +} + +@end diff --git a/YuMi/Modules/YMLogin/Presenter/LoginPasswordPresent.h b/YuMi/Modules/YMLogin/Presenter/LoginPasswordPresent.h new file mode 100644 index 00000000..344981d9 --- /dev/null +++ b/YuMi/Modules/YMLogin/Presenter/LoginPasswordPresent.h @@ -0,0 +1,19 @@ +// +// LoginPasswordPresent.h +// YUMI +// +// Created by YUMI on 2021/9/9. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface LoginPasswordPresent : BaseMvpPresenter +/// 使用手机号和密码登录 +/// @param phone 手机号 +/// @param password 验证码 +- (void)loginWithPhone:(NSString *)phone password:(NSString *)password; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Presenter/LoginPasswordPresent.m b/YuMi/Modules/YMLogin/Presenter/LoginPasswordPresent.m new file mode 100644 index 00000000..01936569 --- /dev/null +++ b/YuMi/Modules/YMLogin/Presenter/LoginPasswordPresent.m @@ -0,0 +1,42 @@ +// +// LoginPasswordPresent.m +// YUMI +// +// Created by YUMI on 2021/9/9. +// + +#import "LoginPasswordPresent.h" +///Http +#import "Api+Login.h" +///Tool +#import "AccountInfoStorage.h" +#import "DESEncrypt.h" +#import "YUMIConstant.h" +///Model +#import "AccountModel.h" +///Protocol +#import "LoginPasswordProtocol.h" + + +@implementation LoginPasswordPresent + +- (id)getView { + return ((id) [super getView]); +} + +/// 使用手机号和密码登录 +/// @param phone 手机号 +/// @param password 验证码 +- (void)loginWithPhone:(NSString *)phone password:(NSString *)password { + NSString * desPassword = [DESEncrypt encryptUseDES:password key:KeyWithType(KeyType_PasswordEncode)]; + NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)]; + [Api loginWithPassword:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + AccountModel * accountModel = [AccountModel modelWithDictionary:data.data]; + if (accountModel && accountModel.access_token.length > 0) { + [[AccountInfoStorage instance] saveAccountInfo:accountModel]; + } + [[self getView] phoneAndPasswordLoginSuccess]; + } showLoading:YES] phone:desPhone password:desPassword client_secret:@"uyzjdhds" version:@"1" client_id:@"erban-client" grant_type:@"password"]; +} + +@end diff --git a/YuMi/Modules/YMLogin/Presenter/LoginPresenter.h b/YuMi/Modules/YMLogin/Presenter/LoginPresenter.h new file mode 100644 index 00000000..757d0b37 --- /dev/null +++ b/YuMi/Modules/YMLogin/Presenter/LoginPresenter.h @@ -0,0 +1,28 @@ +// +// LoginPresenter.h +// YUMI +// +// Created by zu on 2021/9/1. +// + +#import "BaseMvpPresenter.h" +#import "YUMINNNN.h" +#import +#import +#import +NS_ASSUME_NONNULL_BEGIN + +@interface LoginPresenter : BaseMvpPresenter + +- (void)phoneQuickLogin:(NSString *)accessToken token:(NSString*) token; + + +/// 第三方登录 +/// @param type 登录的类型 +- (void)thirdLoginWithType:(ThirdLoginType)type; + +///第三方登录,谷歌登录 +-(void)thirdLoginByGoogleWithPresentingViewController:(UIViewController *)presentingViewController configuration:(GIDConfiguration *)configuration; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Presenter/LoginPresenter.m b/YuMi/Modules/YMLogin/Presenter/LoginPresenter.m new file mode 100644 index 00000000..d453f017 --- /dev/null +++ b/YuMi/Modules/YMLogin/Presenter/LoginPresenter.m @@ -0,0 +1,175 @@ +// +// LoginPresenter.m +// YUMI +// +// Created by zu on 2021/9/1. +// + +#import "LoginPresenter.h" +///Third +#import +#import +///APi +#import "Api+Login.h" +///Tool +#import "AccountInfoStorage.h" +#import "XNDJTDDLoadingTool.h" +#import "YUMIMacroUitls.h" +///P +#import "LoginProtocol.h" +///Model +#import "ThirdUserInfo.h" +#import "AccountModel.h" + + + +@implementation LoginPresenter + +- (id)getView { + return ((id) [super getView]); +} + +- (void)phoneQuickLogin:(NSString *)accessToken token:(NSString *)token { + [Api phoneQuickLogin:[self createHttpCompletion:^(BaseModel *data) { + [[AccountInfoStorage instance] saveAccountInfo:[AccountModel modelWithDictionary:data.data]]; + [[self getView] loginSuccess]; + } showLoading:YES] accessToken:accessToken token:token]; +} + + +/// 第三方登录 +/// @param type 登录的类型 +- (void)thirdLoginWithType:(ThirdLoginType)type{ + + SSDKPlatformType platformType; + switch (type) { + case ThirdLoginType_FB: + platformType = SSDKPlatformTypeFacebook; + break; + case ThirdLoginType_Line: + platformType = SSDKPlatformTypeLine; + break; + case ThirdLoginType_Apple: + platformType = SSDKPlatformTypeAppleAccount; + break; + case ThirdLoginType_Gmail: + platformType = SSDKPlatformTypeGooglePlus; + break; + default: + platformType = SSDKPlatformTypeAppleAccount; + break; + } + NSDictionary * settings; + if (type == SSDKPlatformTypeFacebook) { + settings = @{@"isBrowser":@(YES)}; + } + + [ShareSDK cancelAuthorize:platformType result:nil]; + [ShareSDK authorize:platformType settings:settings onStateChanged:^(SSDKResponseState state, SSDKUser *user, NSError *error) { + if (state == SSDKResponseStateSuccess) {///成功 + ThirdUserInfo * userInfo = [[ThirdUserInfo alloc] init]; + NSString * openid = @""; + NSString * access_token = user.credential.token.length > 0 ? user.credential.token : @""; + NSString * unionid = @""; + if (platformType == SSDKPlatformTypeLine) { + openid = user.credential.uid.length > 0 ? user.credential.uid : user.uid; + unionid = user.credential.uid.length > 0 ? user.credential.uid : user.uid; + userInfo.userName = user.nickname; + userInfo.avatarUrl = user.icon; + } else if (platformType == SSDKPlatformTypeFacebook) { //微信登录 + openid = user.credential.uid.length > 0 ? user.credential.uid : user.uid;; + unionid = user.credential.uid.length > 0 ? user.credential.uid : user.uid;; + userInfo.userName = user.nickname; + userInfo.avatarUrl = user.icon; + } else if (platformType == SSDKPlatformTypeAppleAccount) { //苹果登录 + // openid = user.credential.token; + unionid = [user.credential rawData][@"user"]; + NSString * familyName = [user.credential rawData][@"fullName"][@"familyName"]; + NSString * givenName = [user.credential rawData][@"fullName"][@"givenName"]; + if (familyName.length > 0 && givenName.length> 0) { + userInfo.userName = [NSString stringWithFormat:@"%@%@", familyName, givenName]; + } + } + if (unionid == nil) { + unionid = @""; + } + openid = unionid; + userInfo.openid = openid; + userInfo.access_token = access_token; + userInfo.unionid = unionid; + ///保存一下第三方的值 + [AccountInfoStorage instance].thirdUserInfo = userInfo; + [self loginWithThirdPartWithType:type]; + } else if(state == SSDKResponseStateCancel) {///取消 + [[self getView] showErrorToast:YMLocalizedString(@"LoginPresenter0")]; + + } else if (state == SSDKResponseStateFail) {///失败 + [[self getView] showErrorToast:YMLocalizedString(@"LoginPresenter1")]; + + } + }]; +} +-(void)loginWithThirdPartWithType:(ThirdLoginType)type{ + NSString * openid = [AccountInfoStorage instance].thirdUserInfo.openid; + NSString * access_token = [AccountInfoStorage instance].thirdUserInfo.access_token; + NSString * unionid = [AccountInfoStorage instance].thirdUserInfo.unionid; + [Api loginWithThirdPart:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + AccountModel * model = [AccountModel modelWithDictionary:data.data]; + if (model != nil) { + [[AccountInfoStorage instance] saveAccountInfo:model]; + [[self getView] loginSuccess]; + } + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] showErrorToast:YMLocalizedString(@"LoginPresenter1")]; + } showLoading:YES] openid:openid unionid:unionid access_token:access_token type:[NSString stringWithFormat:@"%lu", (unsigned long)type]]; + + +} + +-(void)thirdLoginByGoogleWithPresentingViewController:(UIViewController *)presentingViewController configuration:(GIDConfiguration *)configuration{ + + [GIDSignIn.sharedInstance signInWithConfiguration:configuration + presentingViewController:presentingViewController + callback:^(GIDGoogleUser * _Nullable user, + NSError * _Nullable error) { + if (error != nil) { + if (error.code == kGIDSignInErrorCodeCanceled){ + [[self getView] showErrorToast:YMLocalizedString(@"LoginPresenter0")]; + }else{ + [[self getView] showErrorToast:YMLocalizedString(@"LoginPresenter1")]; + } + } else { + ThirdUserInfo * userInfo = [[ThirdUserInfo alloc] init]; + NSString * openid = user.userID; + NSString * access_token = user.authentication.idToken.length > 0 ? user.authentication.idToken : @""; + NSString * unionid = user.userID; + userInfo.userName = user.profile.name; + userInfo.avatarUrl = [[user.profile imageURLWithDimension:60] absoluteString]; + userInfo.openid = openid; + userInfo.access_token = access_token; + userInfo.unionid = unionid; + ///保存一下第三方的值 + [AccountInfoStorage instance].thirdUserInfo = userInfo; + [self loginWithThirdGoogle]; + } + }]; +} + +-(void)loginWithThirdGoogle{ + NSString * openid = [AccountInfoStorage instance].thirdUserInfo.openid; + NSString * access_token = [AccountInfoStorage instance].thirdUserInfo.access_token; + NSString * unionid = [AccountInfoStorage instance].thirdUserInfo.unionid; + [Api loginWithThirdPart:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + AccountModel * model = [AccountModel modelWithDictionary:data.data]; + if (model != nil) { + [[AccountInfoStorage instance] saveAccountInfo:model]; + [[self getView] loginSuccess]; + } + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[super getView] showErrorToast:YMLocalizedString(@"LoginPresenter1")]; + } showLoading:YES] openid:openid unionid:unionid access_token:access_token type:[NSString stringWithFormat:@"%lu", (unsigned long)ThirdLoginType_Gmail]]; +} + + + +@end diff --git a/YuMi/Modules/YMLogin/Presenter/LoginVerifCodePresent.h b/YuMi/Modules/YMLogin/Presenter/LoginVerifCodePresent.h new file mode 100644 index 00000000..867d2167 --- /dev/null +++ b/YuMi/Modules/YMLogin/Presenter/LoginVerifCodePresent.h @@ -0,0 +1,31 @@ +// +// LoginVerifCodePresent.h +// YUMI +// +// Created by YUMI on 2021/9/9. +// + +#import "BaseMvpPresenter.h" +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +@interface LoginVerifCodePresent : BaseMvpPresenter +/// 获取手机的验证码 +/// @param phone 手机号 +/// @param type 类型 +- (void)phoneSmsCode:(NSString *)phone type:(GetSmsType)type phoneAreaCode:(NSString *)phoneAreaCode; + +/// 使用手机号和验证码登录 +/// @param phone 手机号 +/// @param code 验证码 +- (void)loginWithPhone:(NSString *)phone code:(NSString *)code phoneAreaCode:(NSString *)phoneAreaCode; + +/// 绑定手机号 +/// @param phone 手机号 +/// @param code 验证码 +- (void)bindWithPhone:(NSString *)phone code:(NSString *)code; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Presenter/LoginVerifCodePresent.m b/YuMi/Modules/YMLogin/Presenter/LoginVerifCodePresent.m new file mode 100644 index 00000000..4178efef --- /dev/null +++ b/YuMi/Modules/YMLogin/Presenter/LoginVerifCodePresent.m @@ -0,0 +1,66 @@ +// +// LoginVerifCodePresent.m +// YUMI +// +// Created by YUMI on 2021/9/9. +// + +#import "LoginVerifCodePresent.h" +///第三方 +#import +///Tool +#import "AccountInfoStorage.h" +#import "DESEncrypt.h" +#import "YUMIConstant.h" +///Api +#import "Api+Login.h" +///Presenter +#import "LoginVerifCodePresent.h" +///Protocol +#import "LoginVerifCodeProtocol.h" +///Model +#import "AccountModel.h" + +@implementation LoginVerifCodePresent + +- (id)getView { + return ((id) [super getView]); +} + +/// 获取手机的验证码 +/// @param phone 手机号 +/// @param type 类型 +- (void)phoneSmsCode:(NSString *)phone type:(GetSmsType)type phoneAreaCode:(NSString *)phoneAreaCode { + NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)]; + [Api phoneSmsCode:[self createHttpCompletion:^(id _Nonnull data) { + [[self getView] phoneSmsCodeSuccess]; + }] mobile:desPhone type:[NSString stringWithFormat:@"%lu", (unsigned long)type] phoneAreaCode:phoneAreaCode]; +} + +/// 使用手机号和验证码登录 +/// @param phone 手机号 +/// @param code 验证码 +- (void)loginWithPhone:(NSString *)phone code:(NSString *)code phoneAreaCode:(NSString *)phoneAreaCode{ + NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)]; + [Api loginWithCode:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + AccountModel * accountModel = [AccountModel modelWithDictionary:data.data]; + + if (accountModel && accountModel.access_token.length > 0) { + [[AccountInfoStorage instance] saveAccountInfo:accountModel]; + } + [[self getView] loginSuccess]; + } showLoading:YES] phone:desPhone code:code client_secret:@"uyzjdhds" version:@"1" client_id:@"erban-client" grant_type:@"password" phoneAreaCode:phoneAreaCode]; +} + +/// 绑定手机号 +/// @param phone 手机号 +/// @param code 验证码 +- (void)bindWithPhone:(NSString *)phone code:(NSString *)code { + NSString * ticket = [[AccountInfoStorage instance] getTicket]; + NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)]; + [Api bindMoblieCode:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] bindPhoneSuccess]; + } showLoading:YES] phone:desPhone code:code ticket:ticket]; +} + +@end diff --git a/YuMi/Modules/YMLogin/Presenter/SurmountCiphercodeExternalize.h b/YuMi/Modules/YMLogin/Presenter/SurmountCiphercodeExternalize.h deleted file mode 100644 index 71c57c70..00000000 --- a/YuMi/Modules/YMLogin/Presenter/SurmountCiphercodeExternalize.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// SurmountCiphercodeExternalize.h -// YUMI -// -// Created by YUMI on 2021/9/9. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface SurmountCiphercodeExternalize : BaseMvpExternalizer -- (void)surmountAboutMobile:(NSString *)phone password:(NSString *)password; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Presenter/SurmountCiphercodeExternalize.m b/YuMi/Modules/YMLogin/Presenter/SurmountCiphercodeExternalize.m deleted file mode 100644 index 858e57de..00000000 --- a/YuMi/Modules/YMLogin/Presenter/SurmountCiphercodeExternalize.m +++ /dev/null @@ -1,35 +0,0 @@ -// -// SurmountCiphercodeExternalize.m -// YUMI -// -// Created by YUMI on 2021/9/9. -// - -#import "SurmountCiphercodeExternalize.h" -#import "Api+Login.h" -#import "AccountAbstractStorage.h" -#import "DESEncrypt.h" -#import "YUMIConstant.h" -#import "AccountMatrix.h" -#import "SurmountCiphercodeCeremony.h" - - -@implementation SurmountCiphercodeExternalize - -- (id)acquireRegard { - return ((id) [super acquireRegard]); -} - -- (void)surmountAboutMobile:(NSString *)phone password:(NSString *)password { - NSString * desPassword = [DESEncrypt encryptUseDES:password key:KeyWithType(KeyGenre_PasswordEncode)]; - NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyGenre_PasswordEncode)]; - [Api surmountAboutCiphercryptogram:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - AccountMatrix * accountModel = [AccountMatrix mtowardsrixAboutImpactbasket:data.data]; - if (accountModel && accountModel.access_token.length > 0) { - [[AccountAbstractStorage instance] preserveSequenceriptionAbstract:accountModel]; - } - [[self acquireRegard] mobileGrantedCiphercryptogramSurmountAccomplishment]; - } EvidenceChambering:YES] phone:desPhone password:desPassword client_secret:@"uyzjdhds" version:@"1" client_id:@"erban-client" grant_type:@"password"]; -} - -@end diff --git a/YuMi/Modules/YMLogin/Presenter/SurmountDilemmaMobileExternalize.h b/YuMi/Modules/YMLogin/Presenter/SurmountDilemmaMobileExternalize.h deleted file mode 100644 index 130f3410..00000000 --- a/YuMi/Modules/YMLogin/Presenter/SurmountDilemmaMobileExternalize.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// SurmountDilemmaMobileExternalize.h -// YUMI -// -// Created by YUMI on 2021/9/15. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface SurmountDilemmaMobileExternalize : BaseMvpExternalizer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Presenter/SurmountDilemmaMobileExternalize.m b/YuMi/Modules/YMLogin/Presenter/SurmountDilemmaMobileExternalize.m deleted file mode 100644 index 1068f2aa..00000000 --- a/YuMi/Modules/YMLogin/Presenter/SurmountDilemmaMobileExternalize.m +++ /dev/null @@ -1,17 +0,0 @@ -// -// SurmountDilemmaMobileExternalize.m -// YUMI -// -// Created by YUMI on 2021/9/15. -// - -#import "SurmountDilemmaMobileExternalize.h" -#import "BaseMvpCeremony.h" - -@implementation SurmountDilemmaMobileExternalize - -- (id)acquireRegard { - return ((id) [super acquireRegard]); -} - -@end diff --git a/YuMi/Modules/YMLogin/Presenter/SurmountExternalizer.h b/YuMi/Modules/YMLogin/Presenter/SurmountExternalizer.h deleted file mode 100644 index 367cb827..00000000 --- a/YuMi/Modules/YMLogin/Presenter/SurmountExternalizer.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// SurmountExternalizer.h -// YUMI -// -// Created by zu on 2021/9/1. -// - -#import "BaseMvpExternalizer.h" -#import "YUMINNNN.h" -#import -#import -#import -NS_ASSUME_NONNULL_BEGIN - -@interface SurmountExternalizer : BaseMvpExternalizer - -- (void)mobileFlexibleSurmount:(NSString *)accessToken token:(NSString*) token; - - -- (void)tertiusSurmountAboutGenre:(ThirdLoginGenre)type; - --(void)tertiusSurmountByGoogleAboutPresentingRegardGovernancer:(UIViewController *)presentingViewController configuration:(GIDConfiguration *)configuration; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Presenter/SurmountExternalizer.m b/YuMi/Modules/YMLogin/Presenter/SurmountExternalizer.m deleted file mode 100644 index 90bd882e..00000000 --- a/YuMi/Modules/YMLogin/Presenter/SurmountExternalizer.m +++ /dev/null @@ -1,168 +0,0 @@ -// -// SurmountExternalizer.m -// YUMI -// -// Created by zu on 2021/9/1. -// - -#import "SurmountExternalizer.h" -#import -#import -#import "Api+Login.h" -#import "AccountAbstractStorage.h" -#import "XNDJTBWGLoadingTool.h" -#import "YUMIMacroUitls.h" -#import "SurmountCeremony.h" -#import "ThirdConsumerAbstract.h" -#import "AccountMatrix.h" - - - -@implementation SurmountExternalizer - -- (id)acquireRegard { - return ((id) [super acquireRegard]); -} - -- (void)mobileFlexibleSurmount:(NSString *)accessToken token:(NSString *)token { - [Api mobileFlexibleSurmount:[self produceHyperessayImplementtowardsion:^(BaseMatrix *data) { - [[AccountAbstractStorage instance] preserveSequenceriptionAbstract:[AccountMatrix mtowardsrixAboutImpactbasket:data.data]]; - [[self acquireRegard] surmountAccomplishment]; - } EvidenceChambering:YES] accessToken:accessToken token:token]; -} - - -- (void)tertiusSurmountAboutGenre:(ThirdLoginGenre)type{ - - SSDKPlatformType platformType; - switch (type) { - case ThirdLoginGenre_FB: - platformType = SSDKPlatformTypeFacebook; - break; - case ThirdLoginGenre_Line: - platformType = SSDKPlatformTypeLine; - break; - case ThirdLoginGenre_Apple: - platformType = SSDKPlatformTypeAppleAccount; - break; - case ThirdLoginGenre_Gmail: - platformType = SSDKPlatformTypeGooglePlus; - break; - default: - platformType = SSDKPlatformTypeAppleAccount; - break; - } - NSDictionary * settings; - if (type == SSDKPlatformTypeFacebook) { - settings = @{@"isBrowser":@(YES)}; - } - - [ShareSDK cancelAuthorize:platformType result:nil]; - [ShareSDK authorize:platformType settings:settings onStateChanged:^(SSDKResponseState state, SSDKUser *user, NSError *error) { - if (state == SSDKResponseStateSuccess) { - ThirdConsumerAbstract * userInfo = [[ThirdConsumerAbstract alloc] init]; - NSString * openid = @""; - NSString * access_token = user.credential.token.length > 0 ? user.credential.token : @""; - NSString * unionid = @""; - if (platformType == SSDKPlatformTypeLine) { - openid = user.credential.uid.length > 0 ? user.credential.uid : user.uid; - unionid = user.credential.uid.length > 0 ? user.credential.uid : user.uid; - userInfo.userName = user.nickname; - userInfo.avatarUrl = user.icon; - } else if (platformType == SSDKPlatformTypeFacebook) { - openid = user.credential.uid.length > 0 ? user.credential.uid : user.uid;; - unionid = user.credential.uid.length > 0 ? user.credential.uid : user.uid;; - userInfo.userName = user.nickname; - userInfo.avatarUrl = user.icon; - } else if (platformType == SSDKPlatformTypeAppleAccount) { - - unionid = [user.credential rawData][@"user"]; - NSString * familyName = [user.credential rawData][@"fullName"][@"familyName"]; - NSString * givenName = [user.credential rawData][@"fullName"][@"givenName"]; - if (familyName.length > 0 && givenName.length> 0) { - userInfo.userName = [NSString stringWithFormat:@"%@%@", familyName, givenName]; - } - } - if (unionid == nil) { - unionid = @""; - } - openid = unionid; - userInfo.openid = openid; - userInfo.access_token = access_token; - userInfo.unionid = unionid; - - [AccountAbstractStorage instance].thirdUserInfo = userInfo; - [self surmountAboutTertiusPartAboutGenre:type]; - } else if(state == SSDKResponseStateCancel) { - [[self acquireRegard] EvidenceMistakeToast:YMLocalizedString(@"LoginPresenter0")]; - - } else if (state == SSDKResponseStateFail) { - [[self acquireRegard] EvidenceMistakeToast:YMLocalizedString(@"LoginPresenter1")]; - - } - }]; -} --(void)surmountAboutTertiusPartAboutGenre:(ThirdLoginGenre)type{ - NSString * openid = [AccountAbstractStorage instance].thirdUserInfo.openid; - NSString * access_token = [AccountAbstractStorage instance].thirdUserInfo.access_token; - NSString * unionid = [AccountAbstractStorage instance].thirdUserInfo.unionid; - [Api surmountAboutTertiusPart:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - AccountMatrix * model = [AccountMatrix mtowardsrixAboutImpactbasket:data.data]; - if (model != nil) { - [[AccountAbstractStorage instance] preserveSequenceriptionAbstract:model]; - [[self acquireRegard] surmountAccomplishment]; - } - } fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] EvidenceMistakeToast:YMLocalizedString(@"LoginPresenter1")]; - } EvidenceChambering:YES] openid:openid unionid:unionid access_token:access_token type:[NSString stringWithFormat:@"%lu", (unsigned long)type]]; - - -} - --(void)tertiusSurmountByGoogleAboutPresentingRegardGovernancer:(UIViewController *)presentingViewController configuration:(GIDConfiguration *)configuration{ - - [GIDSignIn.sharedInstance signInWithConfiguration:configuration - presentingViewController:presentingViewController - callback:^(GIDGoogleUser * _Nullable user, - NSError * _Nullable error) { - if (error != nil) { - if (error.code == kGIDSignInErrorCodeCanceled){ - [[self acquireRegard] EvidenceMistakeToast:YMLocalizedString(@"LoginPresenter0")]; - }else{ - [[self acquireRegard] EvidenceMistakeToast:YMLocalizedString(@"LoginPresenter1")]; - } - } else { - ThirdConsumerAbstract * userInfo = [[ThirdConsumerAbstract alloc] init]; - NSString * openid = user.userID; - NSString * access_token = user.authentication.idToken.length > 0 ? user.authentication.idToken : @""; - NSString * unionid = user.userID; - userInfo.userName = user.profile.name; - userInfo.avatarUrl = [[user.profile imageURLWithDimension:60] absoluteString]; - userInfo.openid = openid; - userInfo.access_token = access_token; - userInfo.unionid = unionid; - - [AccountAbstractStorage instance].thirdUserInfo = userInfo; - [self surmountAboutTertiusGoogle]; - } - }]; -} - --(void)surmountAboutTertiusGoogle{ - NSString * openid = [AccountAbstractStorage instance].thirdUserInfo.openid; - NSString * access_token = [AccountAbstractStorage instance].thirdUserInfo.access_token; - NSString * unionid = [AccountAbstractStorage instance].thirdUserInfo.unionid; - [Api surmountAboutTertiusPart:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - AccountMatrix * model = [AccountMatrix mtowardsrixAboutImpactbasket:data.data]; - if (model != nil) { - [[AccountAbstractStorage instance] preserveSequenceriptionAbstract:model]; - [[self acquireRegard] surmountAccomplishment]; - } - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[super acquireRegard] EvidenceMistakeToast:YMLocalizedString(@"LoginPresenter1")]; - } EvidenceChambering:YES] openid:openid unionid:unionid access_token:access_token type:[NSString stringWithFormat:@"%lu", (unsigned long)ThirdLoginGenre_Gmail]]; -} - - - -@end diff --git a/YuMi/Modules/YMLogin/Presenter/SurmountForgetCiphercodeExternalize.h b/YuMi/Modules/YMLogin/Presenter/SurmountForgetCiphercodeExternalize.h deleted file mode 100644 index 1a6b5cb1..00000000 --- a/YuMi/Modules/YMLogin/Presenter/SurmountForgetCiphercodeExternalize.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// SurmountForgetCiphercodeExternalize.h -// YUMI -// -// Created by YUMI on 2021/9/10. -// - -#import "BaseMvpExternalizer.h" -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -@interface SurmountForgetCiphercodeExternalize : BaseMvpExternalizer -- (void)mobileSmsCryptogram:(NSString *)phone type:(GetSmsGenre)type phoneAreaCode:(NSString *)phoneAreaCode; - -- (void)replacementCiphercryptogram:(NSString *)phone newPwd:(NSString *)newPwd smsCode:(NSString *)smsCode; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Presenter/SurmountForgetCiphercodeExternalize.m b/YuMi/Modules/YMLogin/Presenter/SurmountForgetCiphercodeExternalize.m deleted file mode 100644 index e7252bcf..00000000 --- a/YuMi/Modules/YMLogin/Presenter/SurmountForgetCiphercodeExternalize.m +++ /dev/null @@ -1,38 +0,0 @@ -// -// SurmountForgetCiphercodeExternalize.m -// YUMI -// -// Created by YUMI on 2021/9/10. -// - -#import "SurmountForgetCiphercodeExternalize.h" -#import "AccountAbstractStorage.h" -#import "DESEncrypt.h" -#import "YUMIConstant.h" -#import "Api+Login.h" -#import "SurmountForgetCiphercodeExternalize.h" -#import "SurmountForgetCiphercodeCeremony.h" - -@implementation SurmountForgetCiphercodeExternalize - -- (id)acquireRegard { - return ((id) [super acquireRegard]); -} - -- (void)mobileSmsCryptogram:(NSString *)phone type:(GetSmsGenre)type phoneAreaCode:(NSString *)phoneAreaCode{ - NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyGenre_PasswordEncode)]; - [Api mobileSmsCryptogram:[self produceHyperessayImplementtowardsion:^(id _Nonnull data) { - [[self acquireRegard] mobileSmsCryptogramAccomplishment]; - }] mobile:desPhone type:[NSString stringWithFormat:@"%lu", (unsigned long)type] phoneAreaCode:phoneAreaCode]; -} - - -- (void)replacementCiphercryptogram:(NSString *)phone newPwd:(NSString *)newPwd smsCode:(NSString *)smsCode { - NSString * desPassword = [DESEncrypt encryptUseDES:newPwd key:KeyWithType(KeyGenre_PasswordEncode)]; - NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyGenre_PasswordEncode)]; - [Api replacementCiphercryptogramAboutMobile:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] replacementPasswrodAccomplishment]; - } EvidenceChambering:YES] phone:desPhone newPwd:desPassword smsCode:smsCode]; -} - -@end diff --git a/YuMi/Modules/YMLogin/Presenter/SurmountFullAbstractExternalizer.h b/YuMi/Modules/YMLogin/Presenter/SurmountFullAbstractExternalizer.h deleted file mode 100644 index d5dede96..00000000 --- a/YuMi/Modules/YMLogin/Presenter/SurmountFullAbstractExternalizer.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// SurmountFullAbstractExternalizer.h -// YUMI -// -// Created by YUMI on 2021/9/14. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN -@class ThirdConsumerAbstract; -@interface SurmountFullAbstractExternalizer : BaseMvpExternalizer - -- (ThirdConsumerAbstract *)acquireTertiusConsumerAbstract; - -- (void)arbitraryDemandMonicer; - -- (void)complectionAbstractAboutIntelligenceportrait:(NSString *)avatar - gender:(NSString *)gender - nick:(NSString *)nick - centiretyforCryptogram:(NSString * __nullable)centiretyforCryptogram - roomUid:(NSString * __nullable)roomUid - shareUid:(NSString * __nullable)shareUid - shareChannel:(NSString * __nullable)shareChannel; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Presenter/SurmountFullAbstractExternalizer.m b/YuMi/Modules/YMLogin/Presenter/SurmountFullAbstractExternalizer.m deleted file mode 100644 index 4f3c466c..00000000 --- a/YuMi/Modules/YMLogin/Presenter/SurmountFullAbstractExternalizer.m +++ /dev/null @@ -1,71 +0,0 @@ -// -// SurmountFullAbstractExternalizer.m -// YUMI -// -// Created by YUMI on 2021/9/14. -// - -#import "SurmountFullAbstractExternalizer.h" -#import "Api+Login.h" -#import "SurmountFullAbstractCeremony.h" -#import "NSMutableDictionary+Saft.h" -#import "AccountAbstractStorage.h" -#import "ThirdConsumerAbstract.h" - -@implementation SurmountFullAbstractExternalizer - -- (id)acquireRegard { - return ((id) [super acquireRegard]); -} - - -- (ThirdConsumerAbstract *)acquireTertiusConsumerAbstract { - if ([AccountAbstractStorage instance].thirdUserInfo) { - return [AccountAbstractStorage instance].thirdUserInfo; - } - return nil; -} - -- (void)arbitraryDemandMonicer { - [Api arbitraryMonicer:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] requisitionArbitraryMonicerAccomplishment:data.data]; - }]]; -} - - -- (void)complectionAbstractAboutIntelligenceportrait:(NSString *)avatar - gender:(NSString *)gender - nick:(NSString *)nick - centiretyforCryptogram:(NSString * __nullable)centiretyforCryptogram - roomUid:(NSString * __nullable)roomUid - shareUid:(NSString * __nullable)shareUid - shareChannel:(NSString * __nullable)shareChannel { - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - NSString * ticket = [[AccountAbstractStorage instance] acquireTicket]; - NSMutableDictionary * params = [NSMutableDictionary dictionary]; - [params secureSetGroal:avatar forKey:@"avatar"]; - [params secureSetGroal:gender forKey:@"gender"]; - [params secureSetGroal:nick forKey:@"nick"]; - [params secureSetGroal:uid forKey:@"uid"]; - [params secureSetGroal:ticket forKey:@"ticket"]; - if (centiretyforCryptogram.length > 0) { - [params secureSetGroal:centiretyforCryptogram forKey:@"inviteCode"]; - } - - if (roomUid.length > 0) { - [params secureSetGroal:roomUid forKey:@"roomUid"]; - } - - if (shareUid.length > 0) { - [params secureSetGroal:shareUid forKey:@"shareUid"]; - } - - if (shareChannel.length > 0) { - [params secureSetGroal:shareChannel forKey:@"shareChannel"]; - } - [Api accomplishConsumerAbstract:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] complementAbstractAccomplishment]; - }] userInfo:params]; -} - -@end diff --git a/YuMi/Modules/YMLogin/Presenter/SurmountValidationCodeExternalize.h b/YuMi/Modules/YMLogin/Presenter/SurmountValidationCodeExternalize.h deleted file mode 100644 index 794c37ae..00000000 --- a/YuMi/Modules/YMLogin/Presenter/SurmountValidationCodeExternalize.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// SurmountValidationCodeExternalize.h -// YUMI -// -// Created by YUMI on 2021/9/9. -// - -#import "BaseMvpExternalizer.h" -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -@interface SurmountValidationCodeExternalize : BaseMvpExternalizer -- (void)mobileSmsCryptogram:(NSString *)phone type:(GetSmsGenre)type phoneAreaCode:(NSString *)phoneAreaCode; - -- (void)surmountAboutMobile:(NSString *)phone code:(NSString *)code phoneAreaCode:(NSString *)phoneAreaCode; - -- (void)dilemmaAboutMobile:(NSString *)phone code:(NSString *)code; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Presenter/SurmountValidationCodeExternalize.m b/YuMi/Modules/YMLogin/Presenter/SurmountValidationCodeExternalize.m deleted file mode 100644 index 1689846c..00000000 --- a/YuMi/Modules/YMLogin/Presenter/SurmountValidationCodeExternalize.m +++ /dev/null @@ -1,51 +0,0 @@ -// -// SurmountValidationCodeExternalize.m -// YUMI -// -// Created by YUMI on 2021/9/9. -// - -#import "SurmountValidationCodeExternalize.h" -#import -#import "AccountAbstractStorage.h" -#import "DESEncrypt.h" -#import "YUMIConstant.h" -#import "Api+Login.h" -#import "SurmountValidationCodeExternalize.h" -#import "SurmountVerifCodeCeremony.h" -#import "AccountMatrix.h" - -@implementation SurmountValidationCodeExternalize - -- (id)acquireRegard { - return ((id) [super acquireRegard]); -} - -- (void)mobileSmsCryptogram:(NSString *)phone type:(GetSmsGenre)type phoneAreaCode:(NSString *)phoneAreaCode { - NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyGenre_PasswordEncode)]; - [Api mobileSmsCryptogram:[self produceHyperessayImplementtowardsion:^(id _Nonnull data) { - [[self acquireRegard] mobileSmsCryptogramAccomplishment]; - }] mobile:desPhone type:[NSString stringWithFormat:@"%lu", (unsigned long)type] phoneAreaCode:phoneAreaCode]; -} - -- (void)surmountAboutMobile:(NSString *)phone code:(NSString *)code phoneAreaCode:(NSString *)phoneAreaCode{ - NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyGenre_PasswordEncode)]; - [Api surmountAboutCryptogram:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - AccountMatrix * accountModel = [AccountMatrix mtowardsrixAboutImpactbasket:data.data]; - - if (accountModel && accountModel.access_token.length > 0) { - [[AccountAbstractStorage instance] preserveSequenceriptionAbstract:accountModel]; - } - [[self acquireRegard] surmountAccomplishment]; - } EvidenceChambering:YES] phone:desPhone code:code client_secret:@"uyzjdhds" version:@"1" client_id:@"erban-client" grant_type:@"password" phoneAreaCode:phoneAreaCode]; -} - -- (void)dilemmaAboutMobile:(NSString *)phone code:(NSString *)code { - NSString * ticket = [[AccountAbstractStorage instance] acquireTicket]; - NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyGenre_PasswordEncode)]; - [Api dilemmaAplictowardsionartowardsusCryptogram:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] dilemmaMobileAccomplishment]; - } EvidenceChambering:YES] phone:desPhone code:code ticket:ticket]; -} - -@end diff --git a/YuMi/Modules/YMLogin/Presenter/XPLoginVerifBindPhonePresenter.h b/YuMi/Modules/YMLogin/Presenter/XPLoginVerifBindPhonePresenter.h new file mode 100644 index 00000000..a3b9c680 --- /dev/null +++ b/YuMi/Modules/YMLogin/Presenter/XPLoginVerifBindPhonePresenter.h @@ -0,0 +1,30 @@ +// +// YMLoginVerifBindPhonePresenter.h +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import "MainPresenter.h" +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPLoginVerifBindPhonePresenter : MainPresenter + +/// 获取手机的验证码 +/// @param phone 手机号 +/// @param type 类型 +- (void)phoneSmsCode:(NSString *)phone type:(GetSmsType)type phoneAreaCode:(NSString *)phoneAreaCode; + +/// 校验手机验证码接口 +/// @param moblieNum 手机号码 +/// @param code 验证码 +- (void)checkMoblieCodeWithMoblie:(NSString *)moblieNum code:(NSString *)code; + +/// 绑定手机验证码接口 +/// @param moblieNum 手机号码 +/// @param code 验证码 +- (void)bindkMoblieCodeWithMoblie:(NSString *)moblieNum code:(NSString *)code; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Presenter/XPLoginVerifBindPhonePresenter.m b/YuMi/Modules/YMLogin/Presenter/XPLoginVerifBindPhonePresenter.m new file mode 100644 index 00000000..b537dec6 --- /dev/null +++ b/YuMi/Modules/YMLogin/Presenter/XPLoginVerifBindPhonePresenter.m @@ -0,0 +1,53 @@ +// +// YMLoginVerifBindPhonePresenter.m +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import "XPLoginVerifBindPhonePresenter.h" +#import "Api+Login.h" +///Tool +#import "AccountInfoStorage.h" +#import "DESEncrypt.h" +#import "YUMIConstant.h" +///P +#import "XPLoginVerifBindPhoneProtocol.h" + +@implementation XPLoginVerifBindPhonePresenter + +/// 获取手机的验证码 +/// @param phone 手机号 +/// @param type 类型 +- (void)phoneSmsCode:(NSString *)phone type:(GetSmsType)type phoneAreaCode:(NSString *)phoneAreaCode{ + NSString * typeStr = [NSString stringWithFormat:@"%lu", (unsigned long)type]; + NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)]; + [Api phoneSmsCode:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] phoneSmsCodeSuccess]; + }] mobile:desPhone type:typeStr phoneAreaCode:phoneAreaCode]; +} + + +/// 校验手机验证码接口 +/// @param moblieNum 手机号码 +/// @param code 验证码 +- (void)checkMoblieCodeWithMoblie:(NSString *)moblieNum code:(NSString *)code { + NSString * uid = [[AccountInfoStorage instance] getUid]; + NSString * ticket = [[AccountInfoStorage instance] getTicket]; + NSString * desPhone = [DESEncrypt encryptUseDES:moblieNum key:KeyWithType(KeyType_PasswordEncode)]; + [Api checkMoblieCode:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] checkMoblieCodeWithMoblieSuccess]; + }] mobile:desPhone code:code uid:uid ticket:ticket]; +} + +/// 绑定手机验证码接口 +/// @param moblieNum 手机号码 +/// @param code 验证码 +- (void)bindkMoblieCodeWithMoblie:(NSString *)moblieNum code:(NSString *)code { + NSString * ticket = [[AccountInfoStorage instance] getTicket]; + NSString * desPhone = [DESEncrypt encryptUseDES:moblieNum key:KeyWithType(KeyType_PasswordEncode)]; + [Api bindMoblieCode:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] bindMoblieCodeWithMoblieSuccess]; + }] phone:desPhone code:code ticket:ticket]; +} +@end diff --git a/YuMi/Modules/YMLogin/Presenter/YUMISurmountValidationDilemmaMobileExternalizer.h b/YuMi/Modules/YMLogin/Presenter/YUMISurmountValidationDilemmaMobileExternalizer.h deleted file mode 100644 index 7a84fe81..00000000 --- a/YuMi/Modules/YMLogin/Presenter/YUMISurmountValidationDilemmaMobileExternalizer.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMLoginVerifBindPhonePresenter.h -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import "MainExternalizer.h" -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISurmountValidationDilemmaMobileExternalizer : MainExternalizer - -- (void)mobileSmsCryptogram:(NSString *)phone type:(GetSmsGenre)type phoneAreaCode:(NSString *)phoneAreaCode; - -- (void)examineAplictowardsionartowardsusCryptogramAboutAplictowardsionartowardsus:(NSString *)moblieNum code:(NSString *)code; - -- (void)dilemmakAplictowardsionartowardsusCryptogramAboutAplictowardsionartowardsus:(NSString *)moblieNum code:(NSString *)code; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Presenter/YUMISurmountValidationDilemmaMobileExternalizer.m b/YuMi/Modules/YMLogin/Presenter/YUMISurmountValidationDilemmaMobileExternalizer.m deleted file mode 100644 index d9658e2d..00000000 --- a/YuMi/Modules/YMLogin/Presenter/YUMISurmountValidationDilemmaMobileExternalizer.m +++ /dev/null @@ -1,42 +0,0 @@ -// -// YMLoginVerifBindPhonePresenter.m -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import "YUMISurmountValidationDilemmaMobileExternalizer.h" -#import "Api+Login.h" -#import "AccountAbstractStorage.h" -#import "DESEncrypt.h" -#import "YUMIConstant.h" -#import "FBCSurmountVerifBindPhoneCeremony.h" - -@implementation YUMISurmountValidationDilemmaMobileExternalizer - -- (void)mobileSmsCryptogram:(NSString *)phone type:(GetSmsGenre)type phoneAreaCode:(NSString *)phoneAreaCode{ - NSString * typeStr = [NSString stringWithFormat:@"%lu", (unsigned long)type]; - NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyGenre_PasswordEncode)]; - [Api mobileSmsCryptogram:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] mobileSmsCryptogramAccomplishment]; - }] mobile:desPhone type:typeStr phoneAreaCode:phoneAreaCode]; -} - - -- (void)examineAplictowardsionartowardsusCryptogramAboutAplictowardsionartowardsus:(NSString *)moblieNum code:(NSString *)code { - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - NSString * ticket = [[AccountAbstractStorage instance] acquireTicket]; - NSString * desPhone = [DESEncrypt encryptUseDES:moblieNum key:KeyWithType(KeyGenre_PasswordEncode)]; - [Api examineAplictowardsionartowardsusCryptogram:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] examineAplictowardsionartowardsusCryptogramAboutAplictowardsionartowardsusAccomplishment]; - }] mobile:desPhone code:code uid:uid ticket:ticket]; -} - -- (void)dilemmakAplictowardsionartowardsusCryptogramAboutAplictowardsionartowardsus:(NSString *)moblieNum code:(NSString *)code { - NSString * ticket = [[AccountAbstractStorage instance] acquireTicket]; - NSString * desPhone = [DESEncrypt encryptUseDES:moblieNum key:KeyWithType(KeyGenre_PasswordEncode)]; - [Api dilemmaAplictowardsionartowardsusCryptogram:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] dilemmaAplictowardsionartowardsusCryptogramAboutAplictowardsionartowardsusAccomplishment]; - }] phone:desPhone code:code ticket:ticket]; -} -@end diff --git a/YuMi/Modules/YMLogin/Protocol/FBCSurmountVerifBindPhoneCeremony.h b/YuMi/Modules/YMLogin/Protocol/FBCSurmountVerifBindPhoneCeremony.h deleted file mode 100644 index 37c0feb6..00000000 --- a/YuMi/Modules/YMLogin/Protocol/FBCSurmountVerifBindPhoneCeremony.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMLoginVerifBindPhoneProtocol.h -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCSurmountVerifBindPhoneCeremony -- (void)mobileSmsCryptogramAccomplishment; -- (void)dilemmaAplictowardsionartowardsusCryptogramAboutAplictowardsionartowardsusAccomplishment; -- (void)examineAplictowardsionartowardsusCryptogramAboutAplictowardsionartowardsusAccomplishment; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Protocol/LoginForgetPasswordProtocol.h b/YuMi/Modules/YMLogin/Protocol/LoginForgetPasswordProtocol.h new file mode 100644 index 00000000..0eb5a45c --- /dev/null +++ b/YuMi/Modules/YMLogin/Protocol/LoginForgetPasswordProtocol.h @@ -0,0 +1,19 @@ +// +// LoginForgetPasswordProtocol.h +// YUMI +// +// Created by YUMI on 2021/9/10. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol LoginForgetPasswordProtocol +///请求手机号的验证码成功 +- (void)phoneSmsCodeSuccess; +///重置密码成功 +- (void)resetPasswrodSuccess; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Protocol/LoginFullInfoProtocol.h b/YuMi/Modules/YMLogin/Protocol/LoginFullInfoProtocol.h new file mode 100644 index 00000000..80289da4 --- /dev/null +++ b/YuMi/Modules/YMLogin/Protocol/LoginFullInfoProtocol.h @@ -0,0 +1,19 @@ +// +// LoginFullInfoProtocol.h +// YUMI +// +// Created by YUMI on 2021/9/14. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol LoginFullInfoProtocol +///随机请求一个昵称 +- (void)requestRandomNickSuccess:(NSString *)nick; +///补全资料成功 +- (void)complementInfoSuccess; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Protocol/LoginPasswordProtocol.h b/YuMi/Modules/YMLogin/Protocol/LoginPasswordProtocol.h new file mode 100644 index 00000000..e57bf3a2 --- /dev/null +++ b/YuMi/Modules/YMLogin/Protocol/LoginPasswordProtocol.h @@ -0,0 +1,17 @@ +// +// LoginPasswordProtocol.h +// YUMI +// +// Created by YUMI on 2021/9/9. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol LoginPasswordProtocol +///手机号密码登录成功 +- (void)phoneAndPasswordLoginSuccess; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Protocol/LoginProtocol.h b/YuMi/Modules/YMLogin/Protocol/LoginProtocol.h new file mode 100644 index 00000000..2e52ba2b --- /dev/null +++ b/YuMi/Modules/YMLogin/Protocol/LoginProtocol.h @@ -0,0 +1,17 @@ +// +// LoginProtocol.h +// YUMI +// +// Created by zu on 2021/9/1. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol LoginProtocol + +- (void)loginSuccess; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Protocol/LoginVerifCodeProtocol.h b/YuMi/Modules/YMLogin/Protocol/LoginVerifCodeProtocol.h new file mode 100644 index 00000000..26633d57 --- /dev/null +++ b/YuMi/Modules/YMLogin/Protocol/LoginVerifCodeProtocol.h @@ -0,0 +1,21 @@ +// +// LoginVerifCodeProtocol.h +// YUMI +// +// Created by YUMI on 2021/9/9. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol LoginVerifCodeProtocol +///请求手机号的验证码成功 +- (void)phoneSmsCodeSuccess; +///登录成功 +- (void)loginSuccess; +///绑定手机号成功 +- (void)bindPhoneSuccess; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Protocol/SurmountCeremony.h b/YuMi/Modules/YMLogin/Protocol/SurmountCeremony.h deleted file mode 100644 index 74885a5a..00000000 --- a/YuMi/Modules/YMLogin/Protocol/SurmountCeremony.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// SurmountCeremony.h -// YUMI -// -// Created by zu on 2021/9/1. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol SurmountCeremony - -- (void)surmountAccomplishment; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Protocol/SurmountCiphercodeCeremony.h b/YuMi/Modules/YMLogin/Protocol/SurmountCiphercodeCeremony.h deleted file mode 100644 index 8e9ed6d3..00000000 --- a/YuMi/Modules/YMLogin/Protocol/SurmountCiphercodeCeremony.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// SurmountCiphercodeCeremony.h -// YUMI -// -// Created by YUMI on 2021/9/9. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol SurmountCiphercodeCeremony -- (void)mobileGrantedCiphercryptogramSurmountAccomplishment; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Protocol/SurmountForgetCiphercodeCeremony.h b/YuMi/Modules/YMLogin/Protocol/SurmountForgetCiphercodeCeremony.h deleted file mode 100644 index 8d78bae0..00000000 --- a/YuMi/Modules/YMLogin/Protocol/SurmountForgetCiphercodeCeremony.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// SurmountForgetCiphercodeCeremony.h -// YUMI -// -// Created by YUMI on 2021/9/10. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol SurmountForgetCiphercodeCeremony -- (void)mobileSmsCryptogramAccomplishment; -- (void)replacementPasswrodAccomplishment; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Protocol/SurmountFullAbstractCeremony.h b/YuMi/Modules/YMLogin/Protocol/SurmountFullAbstractCeremony.h deleted file mode 100644 index d43c9742..00000000 --- a/YuMi/Modules/YMLogin/Protocol/SurmountFullAbstractCeremony.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// SurmountFullAbstractCeremony.h -// YUMI -// -// Created by YUMI on 2021/9/14. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol SurmountFullAbstractCeremony -- (void)requisitionArbitraryMonicerAccomplishment:(NSString *)nick; -- (void)complementAbstractAccomplishment; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Protocol/SurmountVerifCodeCeremony.h b/YuMi/Modules/YMLogin/Protocol/SurmountVerifCodeCeremony.h deleted file mode 100644 index ab47728a..00000000 --- a/YuMi/Modules/YMLogin/Protocol/SurmountVerifCodeCeremony.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// SurmountVerifCodeCeremony.h -// YUMI -// -// Created by YUMI on 2021/9/9. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol SurmountVerifCodeCeremony -- (void)mobileSmsCryptogramAccomplishment; -- (void)surmountAccomplishment; -- (void)dilemmaMobileAccomplishment; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Protocol/XPLoginVerifBindPhoneProtocol.h b/YuMi/Modules/YMLogin/Protocol/XPLoginVerifBindPhoneProtocol.h new file mode 100644 index 00000000..1e276fe3 --- /dev/null +++ b/YuMi/Modules/YMLogin/Protocol/XPLoginVerifBindPhoneProtocol.h @@ -0,0 +1,21 @@ +// +// YMLoginVerifBindPhoneProtocol.h +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPLoginVerifBindPhoneProtocol +///请求手机号的验证码成功 +- (void)phoneSmsCodeSuccess; +///绑定手机号成功 +- (void)bindMoblieCodeWithMoblieSuccess; +///验证绑定手机成功 +- (void)checkMoblieCodeWithMoblieSuccess; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/CustomView/ConsumerPrivacyRegard.h b/YuMi/Modules/YMLogin/View/CustomView/ConsumerPrivacyRegard.h deleted file mode 100644 index 828415a9..00000000 --- a/YuMi/Modules/YMLogin/View/CustomView/ConsumerPrivacyRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// ConsumerPrivacyRegard.h -// YUMI -// -// Created by YUMI on 2021/11/1. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface ConsumerPrivacyRegard : UIView -@property (nonatomic,strong) UIViewController * controller; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/CustomView/ConsumerPrivacyRegard.m b/YuMi/Modules/YMLogin/View/CustomView/ConsumerPrivacyRegard.m deleted file mode 100644 index da54478d..00000000 --- a/YuMi/Modules/YMLogin/View/CustomView/ConsumerPrivacyRegard.m +++ /dev/null @@ -1,202 +0,0 @@ -// -// ConsumerPrivacyRegard.m -// YUMI -// -// Created by YUMI on 2021/11/1. -// - -#import "ConsumerPrivacyRegard.h" -#import -#import -#import "YUMIConstant.h" -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "YUMIHtmlUrl.h" -#import "MKJPopup.h" -#import "UIImage+Utils.h" -#import "YUMITissueRegardGovernancer.h" - -NSString * const kYouMiNumberCountKey = @"kYouMinumbernnagna"; -@interface ConsumerPrivacyRegard () -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) YYTextView *satisfperformanceSequencignation; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic, strong) UIButton *acknowledgementBtuton; -@property (nonatomic, strong) UIButton *exitBtuton; -@end - -@implementation ConsumerPrivacyRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Response -- (void)onAgreementBtutonTicktack:(UIButton *)sender { - if (sender == self.acknowledgementBtuton) { - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - [defaults setObject:@"isShow" forKey:kYouMiNumberCountKey]; - [defaults synchronize]; - [MKJPopup dismiss]; - } -} - -- (void)routeBtutonTicktack:(UIButton *)sender { - [self routeAplictowardsionlictowardsion]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor whiteColor]; - self.layer.masksToBounds = YES; - self.layer.cornerRadius = 10; - [self addSubview:self.titleLabel]; - [self addSubview:self.satisfperformanceSequencignation]; - [self addSubview:self.stackView]; - [self.stackView addArrangedSubview:self.exitBtuton]; - [self.stackView addArrangedSubview:self.acknowledgementBtuton]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth - 38 * 2); - make.height.mas_equalTo(424); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(18); - make.centerX.mas_equalTo(self); - }]; - - [self.satisfperformanceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(55); - make.left.mas_equalTo(28); - make.right.mas_equalTo(-28); - make.bottom.mas_equalTo(-68); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(-20); - make.left.right.mas_equalTo(self).inset(15); - make.height.mas_equalTo(36); - }]; - -} - - -- (void)routeAplictowardsionlictowardsion { - [MKJPopup dismiss]; - [UIView beginAnimations:@"exitApplication" context:nil]; - [UIView setAnimationDuration:0.5]; - [UIView setAnimationDelegate:self]; - [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self cache:NO]; - [UIView setAnimationDidStopSelector:@selector(brectifynessAccomplished:finished:context:)]; - [UIView commitAnimations]; -} -- (void)brectifynessAccomplished:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context { - if ([animationID compare:@"exitApplication"] == 0) { - exit(0); - } -} - -#pragma mark - getters and setters - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:16.f weight:UIFontWeightMedium]; - _titleLabel.textColor = [DJDKMIMOMColor precautiousChampionPrettify]; - _titleLabel.text = [NSString stringWithFormat:YMLocalizedString(@"User_Privacy_View_0"), AppName]; - } - return _titleLabel; -} - -- (YYTextView *)satisfperformanceSequencignation { - if (!_satisfperformanceSequencignation) { - _satisfperformanceSequencignation = [[YYTextView alloc]init]; - _satisfperformanceSequencignation.editable = NO; - _satisfperformanceSequencignation.showsVerticalScrollIndicator = NO; - _satisfperformanceSequencignation.showsHorizontalScrollIndicator = NO; - - NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new]; - paragraphStyle.lineSpacing = 4; - NSString * agreement = [NSString stringWithFormat:YMLocalizedString(@"User_Privacy_View_1"), AppName]; - NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] init]; - NSAttributedString *att1 = [[NSAttributedString alloc] initWithString:agreement attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:14], NSForegroundColorAttributeName : [DJDKMIMOMColor essayTertiusPrettify], NSParagraphStyleAttributeName : paragraphStyle, NSKernAttributeName : @(1.0)}]; - - NSMutableAttributedString *att2 = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"User_Privacy_View_2") attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:14 weight:UIFontWeightMedium], NSForegroundColorAttributeName : [DJDKMIMOMColor essayTertiusPrettify], NSParagraphStyleAttributeName : paragraphStyle, NSKernAttributeName : @(1.0)}]; - @kWeakify(self); - [att2 yy_setTextHighlightRange:NSMakeRange(8, 6) color:[DJDKMIMOMColor aplictowardsionMainPrettify] backgroundColor:[UIColor clearColor] tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { - @kStrongify(self); - [MKJPopup dismiss]; - YUMITissueRegardGovernancer *web = [[YUMITissueRegardGovernancer alloc] init]; - web.url = URLWithType(kPrivacyURL); - [self.controller.navigationController pushViewController:web animated:YES]; - }]; - - [att2 yy_setTextHighlightRange:NSMakeRange(15, 6) color:[DJDKMIMOMColor aplictowardsionMainPrettify] backgroundColor:[UIColor clearColor] tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { - @kStrongify(self); - [MKJPopup dismiss]; - YUMITissueRegardGovernancer *web = [[YUMITissueRegardGovernancer alloc] init]; - web.url = URLWithType(kUserProtocalURL); - [self.controller.navigationController pushViewController:web animated:YES]; - }]; - - [attStr appendAttributedString:att1]; - [attStr appendAttributedString:att2]; - - _satisfperformanceSequencignation.attributedText = attStr; - } - return _satisfperformanceSequencignation; -} - -- (UIButton *)acknowledgementBtuton { - if (!_acknowledgementBtuton) { - _acknowledgementBtuton = [[UIButton alloc]init]; - [_acknowledgementBtuton setTitle:YMLocalizedString(@"User_Privacy_View_3") forState:UIControlStateNormal]; - _acknowledgementBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_acknowledgementBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateNormal]; - UIImage *image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)]; - [_acknowledgementBtuton setBackgroundImage:image forState:UIControlStateNormal]; - _acknowledgementBtuton.layer.cornerRadius = 18; - _acknowledgementBtuton.layer.masksToBounds = YES; - [_acknowledgementBtuton addTarget:self action:@selector(onAgreementBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - } - return _acknowledgementBtuton; -} - -- (UIButton *)exitBtuton { - if (!_exitBtuton) { - _exitBtuton = [[UIButton alloc]init]; - [_exitBtuton setTitle:YMLocalizedString(@"User_Privacy_View_4") forState:UIControlStateNormal]; - _exitBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_exitBtuton setTitleColor:[DJDKMIMOMColor revoctowardsionBtutonEssayPrettify] forState:UIControlStateNormal]; - UIImage *image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor revoctowardsionBtutonObliquityInititowardsePrettify],[DJDKMIMOMColor revoctowardsionBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)]; - [_exitBtuton setBackgroundImage:image forState:UIControlStateNormal]; - _exitBtuton.layer.cornerRadius = 18; - _exitBtuton.layer.masksToBounds = YES; - [_exitBtuton addTarget:self action:@selector(routeBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - } - return _exitBtuton; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFillEqually; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 20; - } - return _stackView; -} - - - -@end diff --git a/YuMi/Modules/YMLogin/View/CustomView/LoginVerifCodeView.h b/YuMi/Modules/YMLogin/View/CustomView/LoginVerifCodeView.h new file mode 100644 index 00000000..ce9588a5 --- /dev/null +++ b/YuMi/Modules/YMLogin/View/CustomView/LoginVerifCodeView.h @@ -0,0 +1,24 @@ +// +// LoginVerifCodeView.h +// YUMI +// +// Created by YUMI on 2021/9/8. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface LoginVerifCodeView : UIView + +///输入的验证码 有几位 +@property (nonatomic,assign) int number; +///输入的字符串的 +@property (nonatomic,copy) void(^textFieldChangeBlock)(NSString *); +///是否密文输入 +@property (nonatomic, assign) BOOL shouldBeSecurity; +///类型 +@property (nonatomic,assign) int type;//1.转赠钻石 +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/CustomView/LoginVerifCodeView.m b/YuMi/Modules/YMLogin/View/CustomView/LoginVerifCodeView.m new file mode 100644 index 00000000..1d7c199a --- /dev/null +++ b/YuMi/Modules/YMLogin/View/CustomView/LoginVerifCodeView.m @@ -0,0 +1,165 @@ +// +// LoginVerifCodeView.m +// YUMI +// +// Created by YUMI on 2021/9/8. +// + +#import "LoginVerifCodeView.h" +///第三方 +#import +#import +///Tool +#import "DJDKMIMOMColor.h" + +@interface LoginVerifCodeView () +///输入框的占位符 +@property (nonatomic,strong) UITextField *textField; +///显示label的数组 +@property (nonatomic,strong) NSMutableArray *lableArray; +@end + + +@implementation LoginVerifCodeView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + [self initEvents]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.textField]; +} + +- (void)initSubViewConstraints { + [self.textField mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; +} + +- (void)initEvents { + @weakify(self); + [[self.textField rac_signalForControlEvents:UIControlEventEditingChanged] subscribeNext:^(__kindof UITextField *textField) { + @strongify(self); + [self updateLablesWithText:textField]; + }]; +} + +- (void)updateLablesWithText:(UITextField *)textField { + if (textField.text.length > self.lableArray.count) { + textField.text = [textField.text substringToIndex:self.lableArray.count]; + } + if (textField.text.length >= self.number) { + [textField resignFirstResponder]; + if (_textFieldChangeBlock) { + _textFieldChangeBlock(textField.text); + } + } + + for (UILabel *pwLab in self.lableArray) { + if (pwLab.tag < (100 + textField.text.length)) { + if (self.shouldBeSecurity) { + pwLab.text = @"●"; + } else { + NSRange range = NSMakeRange(pwLab.tag-100, 1); + pwLab.text = [textField.text substringWithRange:range]; + } + }else{ + pwLab.text = @""; + } + } +} + +- (void)configLabelArray { + CGFloat itemWidth = 45; + CGFloat itemHeight = 45; + CGFloat itemSpace = 11; + for (int i = 0; i < _number; i++) { + UILabel * label = [[UILabel alloc] init]; + label.textColor = [DJDKMIMOMColor mainTextColor]; + label.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; + label.textAlignment = NSTextAlignmentCenter; + label.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + label.layer.masksToBounds = YES; + label.layer.cornerRadius = 10; + label.tag = 100 + i; + [self addSubview:label]; + [label mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(itemWidth, itemHeight)); + make.centerY.mas_equalTo(self); + make.left.mas_equalTo(self).offset((itemWidth + itemSpace)* i); + }]; + [self.lableArray addObject:label]; + } + + UILabel * label = [self.lableArray lastObject]; + if (label) { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(label.mas_right); + make.height.mas_equalTo(itemHeight); + }]; + } +} + +- (void)configLabelArrayOfGiveDiamond { + CGFloat itemWidth = kGetScaleWidth(50); + CGFloat itemHeight = kGetScaleWidth(50); + CGFloat itemSpace = kGetScaleWidth(9); + for (int i = 0; i < _number; i++) { + UILabel * label = [[UILabel alloc] init]; + label.textColor = [DJDKMIMOMColor mainTextColor]; + label.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; + label.textAlignment = NSTextAlignmentCenter; + label.backgroundColor = UIColorFromRGB(0xF0F5F6); + label.layer.masksToBounds = YES; + label.layer.cornerRadius = kGetScaleWidth(4); + label.tag = 100 + i; + [self addSubview:label]; + [label mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(itemWidth, itemHeight)); + make.centerY.mas_equalTo(self); + make.left.mas_equalTo(self).offset((itemWidth + itemSpace)* i); + }]; + [self.lableArray addObject:label]; + } +} + +#pragma mark - Getters And Setters +- (void)setNumber:(int)number { + _number = number; + if(self.type == 1 && _number > 0){ + [self configLabelArrayOfGiveDiamond]; + return; + } + + if (_number > 0) { + [self configLabelArray]; + } +} + +- (UITextField *)textField { + if (!_textField) { + _textField = [[UITextField alloc] init]; + _textField.tintColor = [UIColor clearColor]; + _textField.textColor = [UIColor clearColor]; + _textField.keyboardType = UIKeyboardTypeNumberPad; + [_textField becomeFirstResponder]; + } + return _textField; +} + +- (NSMutableArray *)lableArray { + if (!_lableArray) { + _lableArray = [NSMutableArray array]; + } + return _lableArray; +} + +@end diff --git a/YuMi/Modules/YMLogin/View/CustomView/SurmountValidationCodeRegard.h b/YuMi/Modules/YMLogin/View/CustomView/SurmountValidationCodeRegard.h deleted file mode 100644 index b5448fc4..00000000 --- a/YuMi/Modules/YMLogin/View/CustomView/SurmountValidationCodeRegard.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// SurmountValidationCodeRegard.h -// YUMI -// -// Created by YUMI on 2021/9/8. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface SurmountValidationCodeRegard : UIView - -@property (nonatomic,assign) int number; -@property (nonatomic,copy) void(^textFieldChangeBlock)(NSString *); -@property (nonatomic, assign) BOOL shouldBeAssurance; -@property (nonatomic,assign) int type; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/CustomView/SurmountValidationCodeRegard.m b/YuMi/Modules/YMLogin/View/CustomView/SurmountValidationCodeRegard.m deleted file mode 100644 index 5b6ced66..00000000 --- a/YuMi/Modules/YMLogin/View/CustomView/SurmountValidationCodeRegard.m +++ /dev/null @@ -1,161 +0,0 @@ -// -// SurmountValidationCodeRegard.m -// YUMI -// -// Created by YUMI on 2021/9/8. -// - -#import "SurmountValidationCodeRegard.h" -#import -#import -#import "DJDKMIMOMColor.h" - -@interface SurmountValidationCodeRegard () -@property (nonatomic,strong) UITextField *essayUniverse; -@property (nonatomic,strong) NSMutableArray *sequencigntionGarment; -@end - - -@implementation SurmountValidationCodeRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - [self initOccurrences]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.essayUniverse]; -} - -- (void)initChildLyRestrictions { - [self.essayUniverse mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; -} - -- (void)initOccurrences { - @weakify(self); - [[self.essayUniverse rac_signalForControlEvents:UIControlEventEditingChanged] subscribeNext:^(__kindof UITextField *essayUniverse) { - @strongify(self); - [self refurbishSequencigntionsAboutEssay:essayUniverse]; - }]; -} - -- (void)refurbishSequencigntionsAboutEssay:(UITextField *)essayUniverse { - if (essayUniverse.text.length > self.sequencigntionGarment.count) { - essayUniverse.text = [essayUniverse.text substringToIndex:self.sequencigntionGarment.count]; - } - if (essayUniverse.text.length >= self.number) { - [essayUniverse resignFirstResponder]; - if (_textFieldChangeBlock) { - _textFieldChangeBlock(essayUniverse.text); - } - } - - for (UILabel *pwLab in self.sequencigntionGarment) { - if (pwLab.tag < (100 + essayUniverse.text.length)) { - if (self.shouldBeAssurance) { - pwLab.text = @"●"; - } else { - NSRange range = NSMakeRange(pwLab.tag-100, 1); - pwLab.text = [essayUniverse.text substringWithRange:range]; - } - }else{ - pwLab.text = @""; - } - } -} - -- (void)prohibitipositionSequencigntowardsionGarment { - CGFloat itemWidth = 45; - CGFloat itemAltitude = 45; - CGFloat itemSpace = 11; - for (int i = 0; i < _number; i++) { - UILabel * label = [[UILabel alloc] init]; - label.textColor = [DJDKMIMOMColor mainEssayPrettify]; - label.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; - label.textAlignment = NSTextAlignmentCenter; - label.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - label.layer.masksToBounds = YES; - label.layer.cornerRadius = 10; - label.tag = 100 + i; - [self addSubview:label]; - [label mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(itemWidth, itemAltitude)); - make.centerY.mas_equalTo(self); - make.left.mas_equalTo(self).offset((itemWidth + itemSpace)* i); - }]; - [self.sequencigntionGarment addObject:label]; - } - - UILabel * label = [self.sequencigntionGarment lastObject]; - if (label) { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(label.mas_right); - make.height.mas_equalTo(itemAltitude); - }]; - } -} - -- (void)prohibitipositionSequencigntowardsionGarmentHLOfGiveDiamond { - CGFloat itemWidth = kGetScaleWidth(50); - CGFloat itemAltitude = kGetScaleWidth(50); - CGFloat itemSpace = kGetScaleWidth(9); - for (int i = 0; i < _number; i++) { - UILabel * label = [[UILabel alloc] init]; - label.textColor = [DJDKMIMOMColor mainEssayPrettify]; - label.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; - label.textAlignment = NSTextAlignmentCenter; - label.backgroundColor = UIColorFromRGB(0xF0F5F6); - label.layer.masksToBounds = YES; - label.layer.cornerRadius = kGetScaleWidth(4); - label.tag = 100 + i; - [self addSubview:label]; - [label mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(itemWidth, itemAltitude)); - make.centerY.mas_equalTo(self); - make.left.mas_equalTo(self).offset((itemWidth + itemSpace)* i); - }]; - [self.sequencigntionGarment addObject:label]; - } -} - -#pragma mark - Getters And Setters -- (void)setNumber:(int)number { - _number = number; - if(self.type == 1 && _number > 0){ - [self prohibitipositionSequencigntowardsionGarmentHLOfGiveDiamond]; - return; - } - - if (_number > 0) { - [self prohibitipositionSequencigntowardsionGarment]; - } -} - -- (UITextField *)essayUniverse { - if (!_essayUniverse) { - _essayUniverse = [[UITextField alloc] init]; - _essayUniverse.tintColor = [UIColor clearColor]; - _essayUniverse.textColor = [UIColor clearColor]; - _essayUniverse.keyboardType = UIKeyboardTypeNumberPad; - [_essayUniverse becomeFirstResponder]; - } - return _essayUniverse; -} - -- (NSMutableArray *)sequencigntionGarment { - if (!_sequencigntionGarment) { - _sequencigntionGarment = [NSMutableArray array]; - } - return _sequencigntionGarment; -} - -@end diff --git a/YuMi/Modules/YMLogin/View/CustomView/UserPrivacyView.h b/YuMi/Modules/YMLogin/View/CustomView/UserPrivacyView.h new file mode 100644 index 00000000..7005cd2d --- /dev/null +++ b/YuMi/Modules/YMLogin/View/CustomView/UserPrivacyView.h @@ -0,0 +1,17 @@ +// +// UserPrivacyView.h +// YUMI +// +// Created by YUMI on 2021/11/1. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface UserPrivacyView : UIView +/// +@property (nonatomic,strong) UIViewController * controller; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/CustomView/UserPrivacyView.m b/YuMi/Modules/YMLogin/View/CustomView/UserPrivacyView.m new file mode 100644 index 00000000..df28d273 --- /dev/null +++ b/YuMi/Modules/YMLogin/View/CustomView/UserPrivacyView.m @@ -0,0 +1,211 @@ +// +// UserPrivacyView.m +// YUMI +// +// Created by YUMI on 2021/11/1. +// + +#import "UserPrivacyView.h" +///Third +#import +#import +///Tool +#import "YUMIConstant.h" +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "YUMIHtmlUrl.h" +#import "TTPopup.h" +#import "UIImage+Utils.h" +///VC +#import "XPWebViewController.h" + +NSString * const kYouMiNumberCountKey = @"kYouMinumbernnagna"; +@interface UserPrivacyView () +///title +@property (nonatomic, strong) UILabel *titleLabel; +///内容 +@property (nonatomic, strong) YYTextView *contentLabel; +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///确认 +@property (nonatomic, strong) UIButton *confirmButton; +///退出 +@property (nonatomic, strong) UIButton *exitButton; +@end + +@implementation UserPrivacyView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Response +- (void)onAgreementButtonClick:(UIButton *)sender { + if (sender == self.confirmButton) { + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + [defaults setObject:@"isShow" forKey:kYouMiNumberCountKey]; + [defaults synchronize]; + [TTPopup dismiss]; + } +} + +- (void)exitButtonClick:(UIButton *)sender { + [self exitApplication]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor whiteColor]; + self.layer.masksToBounds = YES; + self.layer.cornerRadius = 10; + [self addSubview:self.titleLabel]; + [self addSubview:self.contentLabel]; + [self addSubview:self.stackView]; + [self.stackView addArrangedSubview:self.exitButton]; + [self.stackView addArrangedSubview:self.confirmButton]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth - 38 * 2); + make.height.mas_equalTo(424); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(18); + make.centerX.mas_equalTo(self); + }]; + + [self.contentLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(55); + make.left.mas_equalTo(28); + make.right.mas_equalTo(-28); + make.bottom.mas_equalTo(-68); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(-20); + make.left.right.mas_equalTo(self).inset(15); + make.height.mas_equalTo(36); + }]; + +} + + +///退出app +- (void)exitApplication { + [TTPopup dismiss]; + [UIView beginAnimations:@"exitApplication" context:nil]; + [UIView setAnimationDuration:0.5]; + [UIView setAnimationDelegate:self]; + [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self cache:NO]; + [UIView setAnimationDidStopSelector:@selector(animationFinished:finished:context:)]; + [UIView commitAnimations]; +} +- (void)animationFinished:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context { + if ([animationID compare:@"exitApplication"] == 0) { + exit(0); + } +} + +#pragma mark - getters and setters + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:16.f weight:UIFontWeightMedium]; + _titleLabel.textColor = [DJDKMIMOMColor alertTitleColor]; + _titleLabel.text = [NSString stringWithFormat:YMLocalizedString(@"UserPrivacyView0"), AppName]; + } + return _titleLabel; +} + +- (YYTextView *)contentLabel { + if (!_contentLabel) { + _contentLabel = [[YYTextView alloc]init]; + _contentLabel.editable = NO; + _contentLabel.showsVerticalScrollIndicator = NO; + _contentLabel.showsHorizontalScrollIndicator = NO; + + NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new]; + paragraphStyle.lineSpacing = 4; + NSString * agreement = [NSString stringWithFormat:YMLocalizedString(@"UserPrivacyView1"), AppName]; + NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] init]; + NSAttributedString *att1 = [[NSAttributedString alloc] initWithString:agreement attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:14], NSForegroundColorAttributeName : [DJDKMIMOMColor textThirdColor], NSParagraphStyleAttributeName : paragraphStyle, NSKernAttributeName : @(1.0)}]; + + NSMutableAttributedString *att2 = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"UserPrivacyView2") attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:14 weight:UIFontWeightMedium], NSForegroundColorAttributeName : [DJDKMIMOMColor textThirdColor], NSParagraphStyleAttributeName : paragraphStyle, NSKernAttributeName : @(1.0)}]; + @kWeakify(self); + [att2 yy_setTextHighlightRange:NSMakeRange(8, 6) color:[DJDKMIMOMColor appMainColor] backgroundColor:[UIColor clearColor] tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { + @kStrongify(self); + [TTPopup dismiss]; + XPWebViewController *web = [[XPWebViewController alloc] init]; + web.url = URLWithType(kPrivacyURL); + [self.controller.navigationController pushViewController:web animated:YES]; + }]; + + [att2 yy_setTextHighlightRange:NSMakeRange(15, 6) color:[DJDKMIMOMColor appMainColor] backgroundColor:[UIColor clearColor] tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { + @kStrongify(self); + [TTPopup dismiss]; + XPWebViewController *web = [[XPWebViewController alloc] init]; + web.url = URLWithType(kUserProtocalURL); + [self.controller.navigationController pushViewController:web animated:YES]; + }]; + + [attStr appendAttributedString:att1]; + [attStr appendAttributedString:att2]; + + _contentLabel.attributedText = attStr; + } + return _contentLabel; +} + +- (UIButton *)confirmButton { + if (!_confirmButton) { + _confirmButton = [[UIButton alloc]init]; + [_confirmButton setTitle:YMLocalizedString(@"UserPrivacyView3") forState:UIControlStateNormal]; + _confirmButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_confirmButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + UIImage *image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)]; + [_confirmButton setBackgroundImage:image forState:UIControlStateNormal]; + _confirmButton.layer.cornerRadius = 18; + _confirmButton.layer.masksToBounds = YES; + [_confirmButton addTarget:self action:@selector(onAgreementButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + } + return _confirmButton; +} + +- (UIButton *)exitButton { + if (!_exitButton) { + _exitButton = [[UIButton alloc]init]; + [_exitButton setTitle:YMLocalizedString(@"UserPrivacyView4") forState:UIControlStateNormal]; + _exitButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_exitButton setTitleColor:[DJDKMIMOMColor cancelButtonTextColor] forState:UIControlStateNormal]; + UIImage *image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor cancelButtonGradientStartColor],[DJDKMIMOMColor cancelButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)]; + [_exitButton setBackgroundImage:image forState:UIControlStateNormal]; + _exitButton.layer.cornerRadius = 18; + _exitButton.layer.masksToBounds = YES; + [_exitButton addTarget:self action:@selector(exitButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + } + return _exitButton; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFillEqually; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 20; + } + return _stackView; +} + + + +@end diff --git a/YuMi/Modules/YMLogin/View/CustomView/XPLoginBindSuccessView.h b/YuMi/Modules/YMLogin/View/CustomView/XPLoginBindSuccessView.h new file mode 100644 index 00000000..3f84cf1a --- /dev/null +++ b/YuMi/Modules/YMLogin/View/CustomView/XPLoginBindSuccessView.h @@ -0,0 +1,17 @@ +// +// YMLoginBindSuccessView.h +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +typedef void(^XPBindViewDismissHandler)(void); +@interface XPLoginBindSuccessView : UIView +@property (nonatomic, copy) XPBindViewDismissHandler dismissHandler; ++ (void)showBindSuccessViewWithHandler:(XPBindViewDismissHandler)handler; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/CustomView/XPLoginBindSuccessView.m b/YuMi/Modules/YMLogin/View/CustomView/XPLoginBindSuccessView.m new file mode 100644 index 00000000..c3807f0a --- /dev/null +++ b/YuMi/Modules/YMLogin/View/CustomView/XPLoginBindSuccessView.m @@ -0,0 +1,126 @@ +// +// YMLoginBindSuccessView.m +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import "XPLoginBindSuccessView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "TTPopup.h" + +@interface XPLoginBindSuccessView () + +@property (nonatomic, strong) UIImageView *successImageView; +@property (nonatomic, strong) UILabel *textLabel; +@property (nonatomic, strong) UIButton *closeBtn; + +@end + +@implementation XPLoginBindSuccessView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self baseUI]; + [self initViews]; + [self initConstraints]; + } + return self; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + +} + +#pragma mark - +#pragma mark lifeCycle +- (void)baseUI { + self.layer.cornerRadius = 8.f; + self.layer.masksToBounds = YES; + self.backgroundColor = [UIColor whiteColor]; +} +- (void)initViews { + [self addSubview:self.successImageView]; + [self addSubview:self.textLabel]; + [self addSubview:self.closeBtn]; +} + +- (void)initConstraints { + [self.successImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(18); + make.centerX.mas_equalTo(0); + make.size.mas_equalTo(CGSizeMake(76, 76)); + }]; + + [self.textLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(0); + make.top.mas_equalTo(self.successImageView.mas_bottom).offset(7); + }]; + + [self.closeBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(0); + make.top.mas_equalTo(self.textLabel.mas_bottom).offset(22); + make.height.mas_equalTo(38); + make.width.mas_equalTo(124); + }]; +} + +#pragma mark private methods ++ (void)showBindSuccessViewWithHandler:(XPBindViewDismissHandler)handler { + XPLoginBindSuccessView *bindSuccessView = [[XPLoginBindSuccessView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth - 64, 195)]; + bindSuccessView.dismissHandler = handler; + [TTPopup popupView:bindSuccessView style:TTPopupStyleAlert]; +} + +#pragma mark - +#pragma mark button click events +- (void)closeBtnClickAction:(UIButton *)btn { + [TTPopup dismiss]; + !_dismissHandler ? : _dismissHandler(); +} + +#pragma mark - +#pragma mark getter & setter +- (UIImageView *)successImageView +{ + if (!_successImageView) { + _successImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"login_bind_phone_success"]]; + } + return _successImageView; +} + +- (UILabel *)textLabel +{ + if (!_textLabel) { + _textLabel = [[UILabel alloc] init]; + _textLabel.text = YMLocalizedString(@"XPLoginBindSuccessView0"); + _textLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _textLabel.font = [UIFont fontWithName:@"PingFangSC-Regular" size:17]; + _textLabel.adjustsFontSizeToFitWidth = YES; + _textLabel.textAlignment = NSTextAlignmentCenter; + } + return _textLabel; +} + +- (UIButton *)closeBtn { + if (!_closeBtn) { + _closeBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_closeBtn setTitle:YMLocalizedString(@"XPLoginBindSuccessView1") forState:UIControlStateNormal]; + [_closeBtn setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + [_closeBtn setBackgroundColor:[DJDKMIMOMColor appBackgroundColor]]; + [_closeBtn.titleLabel setFont:[UIFont systemFontOfSize:15.f]]; + _closeBtn.layer.masksToBounds = YES; + _closeBtn.layer.cornerRadius = 19; + [_closeBtn addTarget:self action:@selector(closeBtnClickAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _closeBtn; +} + +@end diff --git a/YuMi/Modules/YMLogin/View/CustomView/YUMISurmountDilemmaSuccessRegard.h b/YuMi/Modules/YMLogin/View/CustomView/YUMISurmountDilemmaSuccessRegard.h deleted file mode 100644 index 0bcfe382..00000000 --- a/YuMi/Modules/YMLogin/View/CustomView/YUMISurmountDilemmaSuccessRegard.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMLoginBindSuccessView.h -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -typedef void(^XPBindViewDismissHandler)(void); -@interface YUMISurmountDilemmaSuccessRegard : UIView -@property (nonatomic, copy) XPBindViewDismissHandler disappearHandler; -+ (void)EvidenceBindAccomplishmentRegardAboutShankr:(XPBindViewDismissHandler)handler; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/CustomView/YUMISurmountDilemmaSuccessRegard.m b/YuMi/Modules/YMLogin/View/CustomView/YUMISurmountDilemmaSuccessRegard.m deleted file mode 100644 index 2039bdeb..00000000 --- a/YuMi/Modules/YMLogin/View/CustomView/YUMISurmountDilemmaSuccessRegard.m +++ /dev/null @@ -1,124 +0,0 @@ -// -// YMLoginBindSuccessView.m -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import "YUMISurmountDilemmaSuccessRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "MKJPopup.h" - -@interface YUMISurmountDilemmaSuccessRegard () - -@property (nonatomic, strong) UIImageView *successIndicateRegard; -@property (nonatomic, strong) UILabel *textLabel; -@property (nonatomic, strong) UIButton *concludeBtuton; - -@end - -@implementation YUMISurmountDilemmaSuccessRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self baseUI]; - [self initRegards]; - [self initRestrictions]; - } - return self; -} - -- (void)layoutSubviews { - [super layoutSubviews]; - -} - -#pragma mark - -#pragma mark lifeCycle -- (void)baseUI { - self.layer.cornerRadius = 8.f; - self.layer.masksToBounds = YES; - self.backgroundColor = [UIColor whiteColor]; -} -- (void)initRegards { - [self addSubview:self.successIndicateRegard]; - [self addSubview:self.textLabel]; - [self addSubview:self.concludeBtuton]; -} - -- (void)initRestrictions { - [self.successIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(18); - make.centerX.mas_equalTo(0); - make.size.mas_equalTo(CGSizeMake(76, 76)); - }]; - - [self.textLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(0); - make.top.mas_equalTo(self.successIndicateRegard.mas_bottom).offset(7); - }]; - - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(0); - make.top.mas_equalTo(self.textLabel.mas_bottom).offset(22); - make.height.mas_equalTo(38); - make.width.mas_equalTo(124); - }]; -} - -#pragma mark private methods -+ (void)EvidenceBindAccomplishmentRegardAboutShankr:(XPBindViewDismissHandler)handler { - YUMISurmountDilemmaSuccessRegard *bindSuccessView = [[YUMISurmountDilemmaSuccessRegard alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth - 64, 195)]; - bindSuccessView.disappearHandler = handler; - [MKJPopup popupRegard:bindSuccessView style:MKJPopupStyleAlert]; -} - -#pragma mark - -#pragma mark button click events -- (void)concludeBtutonTicktackPerformance:(UIButton *)btn { - [MKJPopup dismiss]; - !_disappearHandler ? : _disappearHandler(); -} - -#pragma mark - -#pragma mark getter & setter -- (UIImageView *)successIndicateRegard -{ - if (!_successIndicateRegard) { - _successIndicateRegard = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yumi_login_bind_phone_success"]]; - } - return _successIndicateRegard; -} - -- (UILabel *)textLabel -{ - if (!_textLabel) { - _textLabel = [[UILabel alloc] init]; - _textLabel.text = YMLocalizedString(@"XPLoginBindSuccessView0"); - _textLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _textLabel.font = [UIFont fontWithName:@"PingFangSC-Regular" size:17]; - _textLabel.adjustsFontSizeToFitWidth = YES; - _textLabel.textAlignment = NSTextAlignmentCenter; - } - return _textLabel; -} - -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_concludeBtuton setTitle:YMLocalizedString(@"XPLoginBindSuccessView1") forState:UIControlStateNormal]; - [_concludeBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateNormal]; - [_concludeBtuton setBackgroundColor:[DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]]; - [_concludeBtuton.titleLabel setFont:[UIFont systemFontOfSize:15.f]]; - _concludeBtuton.layer.masksToBounds = YES; - _concludeBtuton.layer.cornerRadius = 19; - [_concludeBtuton addTarget:self action:@selector(concludeBtutonTicktackPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _concludeBtuton; -} - -@end diff --git a/YuMi/Modules/YMLogin/View/LoginBindPhoneViewController.h b/YuMi/Modules/YMLogin/View/LoginBindPhoneViewController.h new file mode 100644 index 00000000..63f9cfdc --- /dev/null +++ b/YuMi/Modules/YMLogin/View/LoginBindPhoneViewController.h @@ -0,0 +1,16 @@ +// +// LoginBindPhoneViewController.h +// YUMI +// +// Created by YUMI on 2021/9/14. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface LoginBindPhoneViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/LoginBindPhoneViewController.m b/YuMi/Modules/YMLogin/View/LoginBindPhoneViewController.m new file mode 100644 index 00000000..211b7846 --- /dev/null +++ b/YuMi/Modules/YMLogin/View/LoginBindPhoneViewController.m @@ -0,0 +1,222 @@ +// +// LoginBindPhoneViewController.m +// YUMI +// +// Created by YUMI on 2021/9/14. +// + +#import "LoginBindPhoneViewController.h" +///Third +#import +#import +///Tool +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "NSString+Utils.h" +#import "UIButton+EnlargeTouchArea.h" +///Tool +#import "LoginBindPhonePresent.h" +///VC +#import "LoginVerifCodeViewController.h" + +@interface LoginBindPhoneViewController () +///提示Label +@property (nonatomic, strong) UILabel *titleLabel; +/// 手机号输入框背景 +@property (nonatomic, strong) UIView *bgView; +///86 Label +@property (nonatomic, strong) UILabel *countryLabel; +///手机号输入框 +@property (nonatomic, strong) UITextField *phoneTextField; +///登录按钮 +@property (nonatomic, strong) UIButton *loginBtn; +///返回按钮 如果点击了返回按钮的话 那就退出登录 +@property (nonatomic,strong) UIButton *backButton; +@end + +@implementation LoginBindPhoneViewController +- (BOOL)isHiddenNavBar { + return YES; +} +#pragma mark - life cycle +- (LoginBindPhonePresent *)createPresenter { + return [[LoginBindPhonePresent alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self setUpUI]; + [self setEvents]; +} + +- (void)viewDidAppear:(BOOL)animated { + [self showErrorToast:@"第三方登录需绑定手机号喔~"]; +} + +- (void)setUpUI { + [self.view addSubview:self.titleLabel]; + [self.view addSubview:self.bgView];//输入框 + [self.bgView addSubview:self.countryLabel]; + [self.bgView addSubview:self.phoneTextField]; + [self.view addSubview:self.loginBtn]; //登录按钮 + [self.view addSubview:self.backButton]; +} + +- (void)viewDidLayoutSubviews { + [super viewDidLayoutSubviews]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.view); + make.top.mas_equalTo(self.view).offset(150); + }]; + //输入框 + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.view); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(50); + make.width.mas_equalTo(280); + make.height.mas_equalTo(45); + }]; + [self.countryLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(10); + make.top.mas_equalTo(self.bgView).offset(5); + make.width.mas_equalTo(60); + make.height.mas_equalTo(35); + }]; + [self.phoneTextField mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(70); + make.top.mas_equalTo(self.bgView).offset(5); + make.width.mas_equalTo(200); + make.height.mas_equalTo(35); + }]; + //登录按钮 + [self.loginBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.view); + make.top.mas_equalTo(self.bgView.mas_bottom).offset(50); + make.width.mas_equalTo(60); + make.height.mas_equalTo(60); + }]; + + [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(15, 15)); + make.left.mas_equalTo(self.view).offset(14); + make.top.mas_equalTo(self.view).offset(36 + kSafeAreaTopHeight); + }]; +} + +- (void)setEvents { + @weakify(self) + // 登录 + [[RACSignal combineLatest:@[self.phoneTextField.rac_textSignal] + reduce:^id(NSString *phone){ + BOOL enable = phone.length == 11; + return @(enable); + }] subscribeNext:^(NSNumber *enable) { + @strongify(self) + self.loginBtn.enabled = [enable boolValue]; + }]; + + + [[[[self.loginBtn rac_signalForControlEvents:UIControlEventTouchUpInside] doNext:^(id x) { + @strongify(self) + self.loginBtn.enabled = NO; + }] flattenMap:^id (id value) { + return [RACSignal createSignal:^RACDisposable *(id subscriber) { + if (!self.phoneTextField.text.isPhoneNumber) { + [self showErrorToast:YMLocalizedString(@"LoginBindPhoneViewController1")]; + [subscriber sendNext:@(NO)]; + }else { + [subscriber sendNext:@(YES)]; + } + [subscriber sendCompleted]; + return nil; + }]; + }] subscribeNext:^(NSNumber *signedIn) { + @strongify(self) + self.loginBtn.enabled = YES; + BOOL success = [signedIn boolValue]; + if (success) { + //跳转去验证码页面 + LoginVerifCodeViewController *codeVC = [[LoginVerifCodeViewController alloc] init]; + codeVC.phone = self.phoneTextField.text; + codeVC.type = VerifCodeType_BindPhone; + [self.navigationController pushViewController:codeVC animated:YES]; + } + }]; +} + +#pragma mark - Event Response +- (void)backButtonAction:(UIButton *)sender { + ///退出登录状态 + [self dismissViewControllerAnimated:NO completion:^{ + [self.presenter logout]; + }]; +} + +#pragma mark - Getters And Setters +- (UILabel *)titleLabel{ + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; + _titleLabel.text = YMLocalizedString(@"LoginBindPhoneViewController2"); + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +- (UIView *)bgView { + if (!_bgView) { + _bgView = [[UIView alloc] init]; + _bgView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _bgView.layer.cornerRadius = 45/2; + _bgView.layer.masksToBounds = YES; + } + return _bgView; +} + +- (UILabel *)countryLabel{ + if (!_countryLabel) { + _countryLabel = [[UILabel alloc] init]; + _countryLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:15]; + _countryLabel.text = @"+852"; + _countryLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _countryLabel.backgroundColor = [UIColor clearColor]; + _countryLabel.textAlignment = NSTextAlignmentCenter; + } + return _countryLabel; +} + +- (UITextField *)phoneTextField { + if (!_phoneTextField) { + _phoneTextField = [[UITextField alloc] init]; + _phoneTextField.keyboardType = UIKeyboardTypeNumberPad; + _phoneTextField.backgroundColor = [UIColor clearColor]; + _phoneTextField.textColor = [DJDKMIMOMColor mainTextColor]; + _phoneTextField.tintColor = [DJDKMIMOMColor appMainColor]; + _phoneTextField.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:15]; + _phoneTextField.textAlignment = NSTextAlignmentLeft; + } + return _phoneTextField; +} + +- (UIButton *)loginBtn { + if (!_loginBtn) { + _loginBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + _loginBtn.enabled = NO; + [_loginBtn setImage:[UIImage imageNamed:@"login_button"] forState:UIControlStateDisabled]; + [_loginBtn setImage:[UIImage imageNamed:@"login_button_sel"] forState:UIControlStateNormal]; + } + return _loginBtn; +} + +- (UIButton *)backButton { + if (!_backButton) { + _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateNormal]; + [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateSelected]; + [_backButton setEnlargeEdgeWithTop:15 right:15 bottom:15 left:15]; + [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _backButton; +} + +@end diff --git a/YuMi/Modules/YMLogin/View/LoginFullInfoViewController.h b/YuMi/Modules/YMLogin/View/LoginFullInfoViewController.h new file mode 100644 index 00000000..2f3cb873 --- /dev/null +++ b/YuMi/Modules/YMLogin/View/LoginFullInfoViewController.h @@ -0,0 +1,16 @@ +// +// LoginFullInfoViewController.h +// YUMI +// +// Created by YUMI on 2021/9/14. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface LoginFullInfoViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/LoginFullInfoViewController.m b/YuMi/Modules/YMLogin/View/LoginFullInfoViewController.m new file mode 100644 index 00000000..3b29b575 --- /dev/null +++ b/YuMi/Modules/YMLogin/View/LoginFullInfoViewController.m @@ -0,0 +1,464 @@ +// +// LoginFullInfoViewController.m +// YUMI +// +// Created by YUMI on 2021/9/14. +// + +#import "LoginFullInfoViewController.h" +///Third +#import +#import +///Tool +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "UIButton+EnlargeTouchArea.h" +#import "StatisticsServiceHelper.h" +#import "AccountInfoStorage.h" +#import "TTPopup.h" +///Model +#import "ThirdUserInfo.h" +///P +#import "LoginFullInfoPresenter.h" +#import "LoginFullInfoProtocol.h" + +UIKIT_EXTERN NSString * kUserCompleteInfoFinishKey; + +@interface LoginFullInfoViewController () +///完善资料 +@property (nonatomic,strong) UILabel *titleLabel; +///性别后期无法修改 +@property (nonatomic,strong) UILabel *remindLabel; +///昵称的背景 +@property (nonatomic,strong) UIView * backView; +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///显示昵称 +@property (nonatomic,strong) UILabel *nameLabel; +///输入框 +@property (nonatomic,strong) UITextField *textField; +///更新 +@property (nonatomic,strong) UIButton *refreshButton; +///x性别的容器 +@property (nonatomic,strong) UIStackView *sexStackView; +///男用户 +@property (nonatomic,strong) UIButton *maleButton; +///女用户 +@property (nonatomic,strong) UIButton *femaleButton; +///下一步 +@property (nonatomic,strong) UIButton *nextButton; +///邀请码 +@property (nonatomic,strong) UILabel *codeLabel; +///邀请码的容器 +@property (nonatomic,strong) UIView *codeContainView; +///邀请码输入框 +@property (nonatomic,strong) UITextField *codeTextField; +///选填 +@property (nonatomic,strong) UILabel *codeDesLabel; +///本软件只提供给18 +@property (nonatomic,strong) UILabel *limitLabel; +///第三方的用户信息 +@property (nonatomic,strong) ThirdUserInfo *thirdInfo; +///目前选择的性别 +@property (nonatomic,copy) NSString *sexString; +@end + +@implementation LoginFullInfoViewController + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (LoginFullInfoPresenter *)createPresenter { + return [[LoginFullInfoPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + [self initEvents]; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + [self.view endEditing:YES]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.titleLabel]; + [self.view addSubview:self.remindLabel]; + [self.view addSubview:self.backView]; + [self.view addSubview:self.sexStackView]; + [self.view addSubview:self.codeLabel]; + [self.view addSubview:self.codeContainView]; + [self.view addSubview:self.nextButton]; + [self.view addSubview:self.limitLabel]; + [self.backView addSubview:self.stackView]; + [self.stackView addArrangedSubview:self.nameLabel]; + [self.stackView addArrangedSubview:self.textField]; + [self.stackView addArrangedSubview:self.refreshButton]; + + [self.sexStackView addArrangedSubview:self.maleButton]; + [self.sexStackView addArrangedSubview:self.femaleButton]; + + [self.codeContainView addSubview:self.codeTextField]; + [self.codeContainView addSubview:self.codeDesLabel]; + + if ([self.presenter getThirdUserInfo] && [self.presenter getThirdUserInfo].userName.length > 0) { + self.textField.text = [self.presenter getThirdUserInfo].userName; + } else { + [self.presenter randomRequestNick]; + } +} + +- (void)initSubViewConstraints { + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.view); + make.top.mas_equalTo(self.view).offset(60 + kSafeAreaTopHeight); + }]; + + [self.remindLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.view); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(8); + }]; + + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view).inset(52); + make.height.mas_equalTo(45); + make.top.mas_equalTo(self.remindLabel.mas_bottom).offset(49); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backView).inset(25); + make.top.bottom.mas_equalTo(self.backView); + }]; + + + [self.sexStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backView); + make.top.mas_equalTo(self.backView.mas_bottom).offset(15); + }]; + + [self.codeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.top.mas_equalTo(self.sexStackView.mas_bottom).offset(20); + }]; + + [self.codeContainView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.height.mas_equalTo(self.backView); + make.top.mas_equalTo(self.codeLabel.mas_bottom).offset(11); + }]; + + [self.codeTextField mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.codeContainView).offset(10); + make.top.bottom.mas_equalTo(self.codeContainView); + make.right.mas_equalTo(self.codeDesLabel.mas_left).offset(-5); + }]; + + [self.codeDesLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.codeContainView).offset(-25); + make.centerY.mas_equalTo(self.codeContainView); + }]; + + [self.nextButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view).inset(52); + make.height.mas_equalTo(45); + make.top.mas_equalTo(self.codeContainView.mas_bottom).offset(75); + }]; + + [self.limitLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.view.mas_bottom).offset(-15); + }]; +} + +- (void)initEvents { + @weakify(self); + [[self.textField.rac_textSignal map:^id _Nullable(NSString * _Nullable value) { + if (value.length > 15) { + value = [value substringToIndex:15]; + } + return value; + }] subscribeNext:^(id _Nullable x) { + @strongify(self); + self.textField.text = x; + [self updateNextButton]; + }]; + +} + +///更新用户信息 +- (void)updateUserInfo { + [self.presenter complectionInfoWithAvatar:[self getAvatarUrl] gender:self.maleButton.selected ? @"1":@"2" nick:self.textField.text inviteCode:self.codeTextField.text roomUid:nil shareUid:nil shareChannel:nil]; +} + +///获取头像 可能是从第三方获取的头像 +- (NSString *)getAvatarUrl { + NSString * avatar; + if ([self.presenter getThirdUserInfo] && [self.presenter getThirdUserInfo].avatarUrl.length > 0) { + avatar = [self.presenter getThirdUserInfo].avatarUrl; + } else { + avatar = @"https://image.hfighting.com/morentouxiang.png"; + } + return avatar; +} + +- (void)updateNextButton { + if (self.textField.text.length > 0 && self.sexString.length > 0) { + self.nextButton.enabled = YES; + } else { + self.nextButton.enabled = NO; + } +} + +#pragma mark - LoginFullInfoProtocol +- (void)requestRandomNickSuccess:(NSString *)nick { + self.textField.text = nick; +} + +- (void)complementInfoSuccess { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventLoginRepariSuccess]; + ///需要重新加载一次 ticket 刷新tabbar的item + [[AccountInfoStorage instance] saveTicket:nil]; + UIViewController *vc = self.presentingViewController; + while (vc.presentingViewController) { + vc = vc.presentingViewController; + } + [vc dismissViewControllerAnimated:YES completion:^{ + }]; + NSString * inviteCode = self.codeTextField.text.length > 0 ? self.codeTextField.text : @""; + [[NSNotificationCenter defaultCenter] postNotificationName:kUserCompleteInfoFinishKey object:inviteCode]; +} +#pragma mark - Event Response +- (void)nextButtonAction:(UIButton *)sender { + if (self.codeTextField.text.length <= 0) { + TTAlertConfig * config = [[TTAlertConfig alloc] init]; + config.title = @""; + config.message = YMLocalizedString(@"LoginFullInfoViewController0"); + [TTPopup alertWithConfig:config confirmHandler:^{ + [self updateUserInfo]; + } cancelHandler:^{ + + }]; + } else { + [self updateUserInfo]; + } +} + +- (void)refreshButtonAction:(UIButton *)sender { + CAKeyframeAnimation *lAni = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation.z"]; + lAni.duration = 1; + lAni.values=@[@0,@(M_PI*2)]; + //使得动画结束后,保持动画效果 + lAni.removedOnCompletion = NO; + lAni.fillMode = kCAFillModeForwards; + [sender.layer addAnimation:lAni forKey:nil]; + [self.presenter randomRequestNick]; +} + +- (void)maleButtonAction:(UIButton *)sender { + self.femaleButton.selected = NO; + sender.selected = YES; + self.sexString = @"1"; +} + +- (void)femaleButtonAction:(UIButton *)sender { + sender.selected = YES; + self.maleButton.selected = NO; + self.sexString = @"2"; +} + +#pragma mark - Getters And Setters +- (void)setSexString:(NSString *)sexString { + _sexString = sexString; + [self updateNextButton]; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"LoginFullInfoViewController1"); + _titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Bold" size:18]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} + +- (UILabel *)remindLabel { + if (!_remindLabel) { + _remindLabel = [[UILabel alloc] init]; + _remindLabel.text = YMLocalizedString(@"LoginFullInfoViewController2"); + _remindLabel.font = [UIFont systemFontOfSize:13]; + _remindLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _remindLabel; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 10; + } + return _stackView; +} + +- (UIView *)backView { + if (!_backView) { + _backView = [[UIView alloc] init]; + _backView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _backView.layer.masksToBounds = YES; + _backView.layer.cornerRadius = 45/2; + } + return _backView; +} + +- (UILabel *)nameLabel { + if (!_nameLabel) { + _nameLabel = [[UILabel alloc] init]; + _nameLabel.text = YMLocalizedString(@"LoginFullInfoViewController3"); + _nameLabel.font = [UIFont systemFontOfSize:15]; + _nameLabel.textColor = [DJDKMIMOMColor secondTextColor]; + [_nameLabel setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + [_nameLabel setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + + } + return _nameLabel; +} + +- (UITextField *)textField { + if (!_textField) { + _textField = [[UITextField alloc] init]; + _textField.textColor = [DJDKMIMOMColor mainTextColor]; + _textField.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:15.f]; + _textField.borderStyle = UITextBorderStyleNone; + _textField.tintColor = [DJDKMIMOMColor appMainColor]; + _textField.textAlignment = NSTextAlignmentRight; + _textField.backgroundColor = [UIColor clearColor]; + } + return _textField; +} + +- (UIButton *)refreshButton { + if (!_refreshButton) { + _refreshButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_refreshButton setImage:[UIImage imageNamed:@"login_full_info_refresh"] forState:UIControlStateNormal]; + [_refreshButton setImage:[UIImage imageNamed:@"login_full_info_refresh"] forState:UIControlStateSelected]; + [_refreshButton setEnlargeEdgeWithTop:0 right:0 bottom:0 left:10]; + [_refreshButton setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + [_refreshButton setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + [_refreshButton addTarget:self action:@selector(refreshButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _refreshButton; +} + +- (UIStackView *)sexStackView { + if (!_sexStackView) { + _sexStackView = [[UIStackView alloc] init]; + _sexStackView.axis = UILayoutConstraintAxisHorizontal; + _sexStackView.distribution = UIStackViewDistributionFill; + _sexStackView.alignment = UIStackViewAlignmentCenter; + _sexStackView.spacing = 15; + } + return _sexStackView; +} + +- (UIButton *)maleButton { + if (!_maleButton) { + _maleButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_maleButton setImage:[UIImage imageNamed:@"login_full_info_male_normal"] forState:UIControlStateNormal]; + [_maleButton setImage:[UIImage imageNamed:@"login_full_info_male_select"] forState:UIControlStateSelected]; + [_maleButton addTarget:self action:@selector(maleButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _maleButton; +} + +- (UIButton *)femaleButton { + if (!_femaleButton) { + _femaleButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_femaleButton setImage:[UIImage imageNamed:@"login_full_info_female_normal"] forState:UIControlStateNormal]; + [_femaleButton setImage:[UIImage imageNamed:@"login_full_info_female_select"] forState:UIControlStateSelected]; + [_femaleButton addTarget:self action:@selector(femaleButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _femaleButton; +} + +- (UIView *)codeContainView { + if (!_codeContainView) { + _codeContainView = [[UIView alloc] init]; + _codeContainView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _codeContainView.layer.masksToBounds= YES; + _codeContainView.layer.cornerRadius = 45/2; + } + return _codeContainView; +} + +- (UITextField *)codeTextField { + if (!_codeTextField) { + _codeTextField = [[UITextField alloc] init]; + _codeTextField.textColor = [DJDKMIMOMColor mainTextColor]; + _codeTextField.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:15.f]; + _codeTextField.borderStyle = UITextBorderStyleNone; + _codeTextField.tintColor = [DJDKMIMOMColor appMainColor]; + _codeTextField.textAlignment = NSTextAlignmentLeft; + _codeTextField.backgroundColor = [UIColor clearColor]; + } + return _codeTextField; +} + +- (UILabel *)codeLabel { + if (!_codeLabel) { + _codeLabel = [[UILabel alloc] init]; + _codeLabel.text = YMLocalizedString(@"LoginFullInfoViewController4"); + _codeLabel.font = [UIFont systemFontOfSize:18]; + _codeLabel.textAlignment = NSTextAlignmentCenter; + _codeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _codeLabel; +} + +- (UILabel *)codeDesLabel { + if (!_codeDesLabel) { + _codeDesLabel = [[UILabel alloc] init]; + _codeDesLabel.text = @"(选填)"; + _codeDesLabel.font = [UIFont systemFontOfSize:15]; + _codeDesLabel.textColor = [DJDKMIMOMColor textThirdColor]; + [_codeDesLabel setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + } + return _codeDesLabel; +} + +- (UIButton *)nextButton{ + if (!_nextButton) { + _nextButton = [UIButton buttonWithType:UIButtonTypeCustom]; + _nextButton.layer.masksToBounds = YES; + _nextButton.layer.cornerRadius = 45/2.f; + [_nextButton setTitle:YMLocalizedString(@"LoginFullInfoViewController6") forState:UIControlStateNormal]; + _nextButton.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; + [_nextButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + _nextButton.enabled = NO; + UIImage *image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)]; + [_nextButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor disableButtonColor], [DJDKMIMOMColor disableButtonColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; + [_nextButton setBackgroundImage:image forState:UIControlStateNormal]; + [_nextButton addTarget:self action:@selector(nextButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _nextButton; +} + +- (UILabel *)limitLabel { + if (!_limitLabel) { + _limitLabel = [[UILabel alloc] init]; + _limitLabel.text = YMLocalizedString(@"LoginFullInfoViewController7"); + _limitLabel.textAlignment = NSTextAlignmentCenter; + _limitLabel.font = [UIFont systemFontOfSize:12]; + _limitLabel.textColor = [DJDKMIMOMColor textThirdColor]; + } + return _limitLabel; +} + +@end diff --git a/YuMi/Modules/YMLogin/View/LoginVerifCodeViewController.h b/YuMi/Modules/YMLogin/View/LoginVerifCodeViewController.h new file mode 100644 index 00000000..69ca2e2c --- /dev/null +++ b/YuMi/Modules/YMLogin/View/LoginVerifCodeViewController.h @@ -0,0 +1,28 @@ +// +// LoginVerifCodeViewController.h +// YUMI +// +// Created by YUMI on 2021/9/8. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(NSUInteger, VerifCodeType){ + VerifCodeType_Regist, ///注册的时候 + VerifCodeType_BindPhone,///绑定手机 + VerifCodeType_Login,///手机登录 + VerifCodeType_AreaCode,///区号 +} ; + + +@interface LoginVerifCodeViewController : MvpViewController + +///输入的手机号 +@property (nonatomic,copy) NSString *phone; +@property (nonatomic,copy) NSString *phoneAreaCode; +///类型 +@property (nonatomic,assign) VerifCodeType type; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/LoginVerifCodeViewController.m b/YuMi/Modules/YMLogin/View/LoginVerifCodeViewController.m new file mode 100644 index 00000000..af8db3dd --- /dev/null +++ b/YuMi/Modules/YMLogin/View/LoginVerifCodeViewController.m @@ -0,0 +1,362 @@ +// +// LoginVerifCodeViewController.m +// YuMi +// +// Created by YuMi on 2021/9/8. +// + +#import "LoginVerifCodeViewController.h" +///第三方 +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "CountDownHelper.h" +#import "YUMIMacroUitls.h" +#import "YUMIConstant.h" +#import "XNDJTDDLoadingTool.h" +#import "UIView+Corner.h" +#import "UIButton+EnlargeTouchArea.h" +///Presenter +#import "LoginVerifCodePresent.h" +///Protocole +#import "LoginVerifCodeProtocol.h" +///View +#import "LoginVerifCodeView.h" +#import "LoginFullInfoViewController.h" +#import "XPLoginPwdViewController.h" + +@interface LoginVerifCodeViewController () +///顶部背景 +@property (nonatomic,strong) UIImageView *topBackImgView; +///内容 +@property (nonatomic,strong) UIView *contentView; +///标题 +@property (nonatomic,strong) UILabel *titleLabel; +//背景 +@property (nonatomic,strong) UIView *bgCodeView; +///容器 +@property (nonatomic,strong) UIStackView *codeStackView; +///显示倒计时 +@property (nonatomic,strong) UILabel *cutdownLabel; +///重新获得验证码 +@property (nonatomic,strong) UIButton *retryCodeButton; +///输入密码 +@property (nonatomic,strong) UITextField *textField; +///登录 +@property (nonatomic,strong) UIButton *loginButton; +///返回按钮 +@property (nonatomic,strong) UIButton *backBtn; +///是否验证码登录成功,登录成功后,不能再用验证码登录了,直接走下面的登录流程就可 +@property (nonatomic,assign) BOOL isLoginSuccess; +///成功后登录验证码 +@property (nonatomic,copy) NSString *code; +@end + +@implementation LoginVerifCodeViewController + +- (void)dealloc { + [[CountDownHelper shareHelper] stopCountDown]; +} + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (LoginVerifCodePresent *)createPresenter { + return [[LoginVerifCodePresent alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + + + [self initSubViews]; + [self initSubViewConstraints]; + if(self.type != VerifCodeType_AreaCode){ + self.retryCodeButton.hidden = YES; + self.cutdownLabel.hidden = NO; + [[CountDownHelper shareHelper] openCountdownWithTime:60]; + }else{ + self.textField.keyboardType = UIKeyboardTypeDefault; + } + +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + [self.view endEditing:NO]; +} + +- (void)viewDidDisappear:(BOOL)animated { + [super viewDidDisappear:animated]; + [[CountDownHelper shareHelper] stopCountDown]; +} + +#pragma mark - Private Method +- (void)initSubViews { + + [self.view addSubview:self.topBackImgView]; + [self.view addSubview:self.contentView]; + + + if(self.type == VerifCodeType_AreaCode){ + self.titleLabel.text = YMLocalizedString(@"LoginVerifCodeViewController5"); + + }else{ + [self.topBackImgView addSubview:self.backBtn]; + [CountDownHelper shareHelper].delegate = self; + } + + [self.topBackImgView addSubview:self.titleLabel]; + + [self.contentView addSubview:self.bgCodeView]; + [self.bgCodeView addSubview:self.codeStackView]; + [self.codeStackView addArrangedSubview:self.textField]; + [self.codeStackView addArrangedSubview:self.cutdownLabel]; + [self.codeStackView addArrangedSubview:self.retryCodeButton]; + [self.contentView addSubview:self.loginButton]; + + +} + +- (void)initSubViewConstraints { + [self.topBackImgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.height.mas_equalTo(kGetScaleWidth(333)); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.top.equalTo(self.topBackImgView.mas_bottom).mas_offset(-kGetScaleWidth(30)); + }]; + if(self.type != VerifCodeType_AreaCode){ + [self.backBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.topBackImgView.mas_top).offset(kSafeAreaTopHeight + kGetScaleWidth(52)); + make.width.height.mas_equalTo(kGetScaleWidth(20)); + make.left.mas_equalTo(kGetScaleWidth(15)); + }]; + } + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.topBackImgView).offset(kGetScaleWidth(30)); + make.top.mas_equalTo(self.topBackImgView.mas_top).offset(kSafeAreaTopHeight + kGetScaleWidth(96)); + }]; + + + [self.bgCodeView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(30)); + make.right.mas_equalTo(-kGetScaleWidth(33)); + make.left.mas_equalTo(kGetScaleWidth(33)); + make.height.mas_equalTo(kGetScaleWidth(63)); + }]; + + [self.codeStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(20)); + make.right.mas_equalTo(-kGetScaleWidth(20)); + make.top.bottom.equalTo(self.bgCodeView); + }]; + [self.textField mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_greaterThanOrEqualTo(kGetScaleWidth(190)); + }]; + [self.loginButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.equalTo(self.contentView); + make.height.mas_equalTo(kGetScaleWidth(63)); + make.width.mas_equalTo(kGetScaleWidth(165)); + make.top.equalTo(self.bgCodeView.mas_bottom).mas_offset(kGetScaleWidth(50)); + }]; + +} + + +- (void)httpRequestPhoneSmsCode { + [self.presenter phoneSmsCode:[NSString stringWithFormat:@"%@%@",self.phoneAreaCode,self.phone] type:GetSmsType_Regist phoneAreaCode:self.phoneAreaCode]; +} + + + +-(void)loginButtonAction{ + + [self.view endEditing:YES]; + self.loginButton.enabled = NO; +// if(self.type == VerifCodeType_AreaCode){ +// [self showLoading]; +// +// return; +// } + + if(self.isLoginSuccess == YES && [self.code isEqualToString:self.textField.text]){ + [XNDJTDDLoadingTool showLoadingInView:self.view]; + [self loginSuccess]; + return; + } + self.isLoginSuccess = NO; + [XNDJTDDLoadingTool showLoadingInView:self.view]; + self.code = self.textField.text; + [self.presenter loginWithPhone:[NSString stringWithFormat:@"%@%@",self.phoneAreaCode,self.phone] code:self.textField.text phoneAreaCode:self.phoneAreaCode]; +} + +- (void)disMissVC { + [[CountDownHelper shareHelper] stopCountDown]; + NSMutableArray *vcList = [NSMutableArray array]; + for (id vc in self.navigationController.viewControllers) { + if(![vc isKindOfClass:[XPLoginPwdViewController class]]){ + [vcList addObject:vc]; + } + } + self.navigationController.viewControllers = vcList; + UIViewController *vc = self.presentingViewController; + while (vc.presentingViewController) { + vc = vc.presentingViewController; + } + [vc dismissViewControllerAnimated:YES completion:nil]; + [self.navigationController popToRootViewControllerAnimated:NO]; +} + + +#pragma mark - LoginVerifCodeProtocol +- (void)loginFail:(NSString *)reason{ + self.loginButton.enabled = YES; + [XNDJTDDLoadingTool showLoadingInView:self.view]; +} +- (void)loginSuccess { + self.isLoginSuccess = YES; + [[CountDownHelper shareHelper] stopCountDown]; + [self disMissVC]; + self.loginButton.enabled = YES; +} + +///绑定手机号成功 +- (void)bindPhoneSuccess { + [self disMissVC]; +} +#pragma mark - LoginProtocol +- (void)phoneSmsCodeSuccess { + [self showSuccessToast:YMLocalizedString(@"PKIDLoginViewController11")]; + self.retryCodeButton.hidden = YES; + self.cutdownLabel.hidden = NO; + [[CountDownHelper shareHelper] openCountdownWithTime:60]; +} + +#pragma mark - CountDownHelperDelegate +- (void)onCountdownFinish { + self.retryCodeButton.hidden = NO; + self.cutdownLabel.hidden = YES; +} + +- (void)onCountdownOpen:(int)time { + self.cutdownLabel.text = [NSString stringWithFormat:@"%dS",time]; +} +-(void)textFieldDidChange:(UITextField *)textField{ + self.loginButton.enabled = textField.text > 0; +} +#pragma mark 重新获取验证吗 +-(void)retryCodeAction{ + [self httpRequestPhoneSmsCode]; +} +-(void)backAction{ + [self.navigationController popViewControllerAnimated:YES]; +} +#pragma mark - Getters And Setters + + +- (UILabel *)titleLabel{ + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:40]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _titleLabel.text = YMLocalizedString(@"LoginVerifCodeViewController3"); + } + return _titleLabel; +} + + + + +- (UILabel *)cutdownLabel { + if (!_cutdownLabel) { + _cutdownLabel = [[UILabel alloc] init]; + _cutdownLabel.textAlignment = NSTextAlignmentRight; + _cutdownLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightSemibold]; + _cutdownLabel.textColor = UIColorFromRGB(0x9168FA); + _cutdownLabel.hidden = NO; + } + return _cutdownLabel; +} +-(UIView *)bgCodeView{ + if (!_bgCodeView){ + _bgCodeView = [UIView new]; + _bgCodeView.backgroundColor = UIColorFromRGB(0xF0F5F6); + [_bgCodeView setCornerWithLeftTopCorner:kGetScaleWidth(10) rightTopCorner:kGetScaleWidth(10) bottomLeftCorner:kGetScaleWidth(10) bottomRightCorner:kGetScaleWidth(10) size:CGSizeMake(kGetScaleWidth(308), kGetScaleWidth(63))]; + } + return _bgCodeView; +} +- (UIButton *)retryCodeButton { + if (!_retryCodeButton) { + _retryCodeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_retryCodeButton setTitle:YMLocalizedString(@"LoginVerifCodeViewController4") forState:UIControlStateNormal]; + [_retryCodeButton setTitleColor:[DJDKMIMOMColor colorWithHexString:@"#1F1A4E"] forState:UIControlStateNormal]; + _retryCodeButton.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightSemibold]; + _retryCodeButton.hidden = YES; + [_retryCodeButton addTarget:self action:@selector(retryCodeAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _retryCodeButton; +} +- (UIImageView *)topBackImgView { + if (!_topBackImgView) { + _topBackImgView = [[UIImageView alloc] init]; + _topBackImgView.userInteractionEnabled = YES; + _topBackImgView.image = [UIImage imageNamed:@"login_top_bg"]; + _topBackImgView.layer.masksToBounds = YES; + _topBackImgView.contentMode = UIViewContentModeScaleAspectFill; + } + return _topBackImgView; +} +-(UITextField *)textField{ + if (!_textField){ + _textField = [[UITextField alloc]init]; + _textField.keyboardType = UIKeyboardTypeNumberPad; + _textField.textColor = [DJDKMIMOMColor colorWithHexString:@"#1F1A4E"]; + _textField.font = [UIFont systemFontOfSize:16 weight:UIFontWeightSemibold]; + [_textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; + + } + return _textField; +} +- (UIView *)contentView { + if (!_contentView) { + _contentView = [[UIView alloc] init]; + _contentView.backgroundColor = [UIColor whiteColor]; + [_contentView setCornerWithLeftTopCorner:kGetScaleWidth(25) rightTopCorner:kGetScaleWidth(25) bottomLeftCorner:0 bottomRightCorner:0 size:CGSizeMake(KScreenWidth, KScreenHeight - kGetScaleWidth(303))]; + } + return _contentView; +} +- (UIButton *)loginButton { + if (!_loginButton) { + _loginButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_loginButton setImage:[UIImage imageNamed:@"login_finish"] forState:UIControlStateNormal]; + [_loginButton addTarget:self action:@selector(loginButtonAction) forControlEvents:UIControlEventTouchUpInside]; + _loginButton.enabled = NO; + } + return _loginButton; +} + +- (UIStackView *)codeStackView{ + if (!_codeStackView) { + _codeStackView = [[UIStackView alloc] init]; + _codeStackView.axis = UILayoutConstraintAxisHorizontal; + _codeStackView.distribution = UIStackViewDistributionFillProportionally; + _codeStackView.alignment = UIStackViewAlignmentFill; + _codeStackView.spacing = 10; + } + return _codeStackView; +} +- (UIButton *)backBtn{ + if (!_backBtn){ + _backBtn = [UIButton new]; + [_backBtn setBackgroundImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateNormal]; + [_backBtn setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + [_backBtn addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _backBtn; +} +@end diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPForgetPwdViewController.h b/YuMi/Modules/YMLogin/View/NewLogin/XPForgetPwdViewController.h new file mode 100644 index 00000000..293cb307 --- /dev/null +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPForgetPwdViewController.h @@ -0,0 +1,16 @@ +// +// YMForgetPwdViewController.h +// YUMI +// +// Created by XY on 2023/2/14. +// + +#import "XPLoginBaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPForgetPwdViewController : XPLoginBaseViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPForgetPwdViewController.m b/YuMi/Modules/YMLogin/View/NewLogin/XPForgetPwdViewController.m new file mode 100644 index 00000000..460d43cf --- /dev/null +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPForgetPwdViewController.m @@ -0,0 +1,202 @@ +// +// YMForgetPwdViewController.m +// YUMI +// +// Created by XY on 2023/2/14. +// + +#import "XPForgetPwdViewController.h" +#import +#import "YUMIMacroUitls.h" +#import + +#import "XPLoginInputView.h" + +#import "LoginForgetPasswordPresent.h" +#import "LoginForgetPasswordProtocol.h" +#import "XPLoginAraeViewController.h" + +@interface XPForgetPwdViewController () + +/// 标题 +@property (nonatomic, strong) UILabel *titleLabel; +/// 手机号输入框 +@property (nonatomic, strong) XPLoginInputView *phoneInputView; +/// 验证码输入框 +@property (nonatomic, strong) XPLoginInputView *codeInputView; +/// 密码输入框 +@property (nonatomic, strong) XPLoginInputView *pwdInputView; +/// 确定按钮 +@property (nonatomic, strong) UIButton *sureBtn; +@property (nonatomic,copy) NSString *phoneAreaCode; + +@end + +@implementation XPForgetPwdViewController + +- (LoginForgetPasswordPresent *)createPresenter { + return [[LoginForgetPasswordPresent alloc] init]; +} + +- (void)viewDidLoad { + self.phoneAreaCode = @"852"; + self.needEffect = YES; + self.needBack = YES; + [super viewDidLoad]; + [self createUI]; + [self racBind]; +} + +- (void)createUI { + [self.view addSubview:self.titleLabel]; + [self.view addSubview:self.phoneInputView]; + [self.view addSubview:self.codeInputView]; + [self.view addSubview:self.pwdInputView]; + [self.view addSubview:self.sureBtn]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.view); + make.top.mas_equalTo(kStatusBarHeight); + make.height.mas_equalTo(44); + }]; + [self.phoneInputView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(38); + make.right.mas_equalTo(-38); + make.top.mas_equalTo(139.0/812.0*KScreenHeight); + make.height.mas_equalTo(66); + }]; + [self.codeInputView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.phoneInputView); + make.right.mas_equalTo(self.phoneInputView); + make.top.mas_equalTo(self.phoneInputView.mas_bottom).offset(16); + make.height.mas_equalTo(self.phoneInputView); + }]; + [self.pwdInputView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.phoneInputView); + make.right.mas_equalTo(self.phoneInputView); + make.top.mas_equalTo(self.codeInputView.mas_bottom).offset(16); + make.height.mas_equalTo(self.phoneInputView); + }]; + [self.sureBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.pwdInputView.mas_bottom).offset(51); + make.centerX.mas_equalTo(self.view); + make.width.height.mas_equalTo(96); + }]; + +} + +- (void)racBind { + RAC(self.sureBtn, enabled) = [[RACSignal combineLatest:@[self.phoneInputView.inputTextField.rac_textSignal, self.pwdInputView.inputTextField.rac_textSignal, self.pwdInputView.inputTextField.rac_textSignal] reduce:^id _Nonnull(NSString *phone, NSString* smsCode, NSString *password){ + return @((phone.length == 11) && smsCode.length >= 5 && (password.length >= 6 && password.length <= 16)); + }] takeUntil:self.rac_willDeallocSignal]; +} + +/// 确认 +- (void)sureBtnClicked { + NSString *phone = self.phoneInputView.inputTextField.text; + NSString *smsCode = self.codeInputView.inputTextField.text; + NSString *password = self.pwdInputView.inputTextField.text; + [self.presenter resetPassword:phone newPwd:password smsCode:smsCode]; +} + +#pragma mark - XPLoginInputViewDelegate + +- (void)smsCodeAction { + NSString *phone = self.phoneInputView.inputTextField.text; + if (phone.length != 11 ) { + [self showErrorToast:YMLocalizedString(@"XPForgetPwdViewController0")]; + return; + } + [self.presenter phoneSmsCode:phone type:GetSmsType_Reset_Password phoneAreaCode:self.phoneAreaCode]; + +} + +- (void)areaListAction { + XPLoginAraeViewController *codeVC = [XPLoginAraeViewController new]; + codeVC.delegate = self; + [self.navigationController pushViewController:codeVC animated:YES]; +} + +- (void)chooseAreaCodeSuccess:(NSString *)code { + if (code.length > 0) { + self.phoneAreaCode = code; + [self.phoneInputView.areaCodeBtn setTitle:[NSString stringWithFormat:@"+%@", code] forState:UIControlStateNormal]; + } +} + +#pragma mark - LoginForgetPasswordProtocol + +///请求手机号的验证码成功 +- (void)phoneSmsCodeSuccess { + [self showSuccessToast:YMLocalizedString(@"XPForgetPwdViewController1")]; + [self.codeInputView fireTimer]; +} + +///重置密码成功 +- (void)resetPasswrodSuccess { + [self showSuccessToast:YMLocalizedString(@"XPForgetPwdViewController2")]; + [self.navigationController popViewControllerAnimated:YES]; + +} + +#pragma mark - 懒加载 + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPForgetPwdViewController3"); + _titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; + _titleLabel.textColor = UIColor.whiteColor; + } + return _titleLabel; +} + +- (XPLoginInputView *)phoneInputView { + if (!_phoneInputView) { + _phoneInputView = [[XPLoginInputView alloc] init]; + _phoneInputView.areaStackView.hidden = NO; + _phoneInputView.delegate = self; + NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPForgetPwdViewController4")]; + [placeholder addAttribute:NSForegroundColorAttributeName value:UIColor.whiteColor range:NSMakeRange(0, placeholder.length)]; + _phoneInputView.inputTextField.attributedPlaceholder = placeholder; + _phoneInputView.inputTextField.keyboardType = UIKeyboardTypeNumberPad; + } + return _phoneInputView; +} + +- (XPLoginInputView *)codeInputView { + if (!_codeInputView) { + _codeInputView = [[XPLoginInputView alloc] init]; + _codeInputView.smsCodeBtn.hidden = NO; + NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPForgetPwdViewController5")]; + [placeholder addAttribute:NSForegroundColorAttributeName value:UIColor.whiteColor range:NSMakeRange(0, placeholder.length)]; + _codeInputView.inputTextField.attributedPlaceholder = placeholder; + _codeInputView.inputTextField.keyboardType = UIKeyboardTypeNumberPad; + _codeInputView.delegate = self; + } + return _codeInputView; +} + +- (XPLoginInputView *)pwdInputView { + if (!_pwdInputView) { + _pwdInputView = [[XPLoginInputView alloc] init]; + NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc] initWithString:@"请输入密码(6-16个字符)"]; + [placeholder addAttribute:NSForegroundColorAttributeName value:UIColor.whiteColor range:NSMakeRange(0, placeholder.length)]; + _pwdInputView.inputTextField.attributedPlaceholder = placeholder; + _pwdInputView.inputTextField.keyboardType = UIKeyboardTypeAlphabet; + _pwdInputView.inputTextField.secureTextEntry = YES; + } + return _pwdInputView; +} + +- (UIButton *)sureBtn { + if (!_sureBtn) { + _sureBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_sureBtn setImage:[UIImage imageNamed:@"login_next"] forState:UIControlStateNormal]; + [_sureBtn setImage:[UIImage imageNamed:@"login_next_disable"] forState:UIControlStateSelected]; + [_sureBtn addTarget:self action:@selector(sureBtnClicked) forControlEvents:UIControlEventTouchUpInside]; + } + return _sureBtn; +} + +@end diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginAraeViewController.h b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginAraeViewController.h new file mode 100644 index 00000000..1a1f2899 --- /dev/null +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginAraeViewController.h @@ -0,0 +1,21 @@ +// +// XPLoginAraeViewController.h +// YuMi +// +// Created by YuMi on 2023/6/25. +// + +#import "BaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN +@protocol XPLoginAraeViewControllerDelegate + +-(void)chooseAreaCodeSuccess:(NSString *)code; + +@end +@interface XPLoginAraeViewController : BaseViewController +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginAraeViewController.m b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginAraeViewController.m new file mode 100644 index 00000000..14fea97f --- /dev/null +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginAraeViewController.m @@ -0,0 +1,152 @@ +// +// XPLoginAraeViewController.m +// YuMi +// +// Created by YuMi on 2023/6/25. +// + +#import "XPLoginAraeViewController.h" +///view +#import "XPLoginAreaTableViewCell.h" +#import "LoginAreaModel.h" +#import "NSObject+MJExtension.h" +#import "YUMIMacroUitls.h" +#import "Api+Login.h" +///Third +#import +@interface XPLoginAraeViewController () +@property (nonatomic,strong) UITableView *tableView; +@property (nonatomic,strong) NSMutableArray *listData; +@property (nonatomic,strong) NSMutableArray *titleList; +@end + +@implementation XPLoginAraeViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + [Api getPhoneAreaCodeList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + NSArray *list = [LoginAreaModel modelsWithArray:data.data]; + [self.titleList removeAllObjects]; + [self.listData removeAllObjects]; + [self getLocalPlistWithList:list]; + } + }]; +} +#pragma mark - LoginVerifCodeProtocol + +-(void)getPhoneAreaCodeListSuccess:(NSArray *)list{ + [self hideHUD]; + [self.titleList removeAllObjects]; + [self.listData removeAllObjects]; + [self getLocalPlistWithList:list]; +} +-(void)getPhoneAreaCodeListFail{ + [self hideHUD]; + NSBundle *bundle = [NSBundle mainBundle]; + NSString *file = [bundle pathForResource:@"district" ofType:@"plist"]; + NSArray *dictArray = [NSArray arrayWithContentsOfFile:file]; + + NSArray *list = [LoginAreaModel modelsWithArray:dictArray]; + [self getLocalPlistWithList:list]; +} +-(void)getLocalPlistWithList:(NSArray *)list{ + + NSArray * letterList = @[@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",@"J",@"K",@"L",@"M",@"N",@"O",@"P",@"Q",@"R",@"S",@"T",@"U",@"V",@"W",@"X",@"Y",@"Z"]; + NSMutableArray *otherList = [NSMutableArray array]; + for (NSString *letter in letterList) { + NSMutableArray *modelList = [NSMutableArray array]; + for (LoginAreaModel *model in list) { + NSString *fristLetter = [model.name substringWithRange:NSMakeRange(0, 1)]; + if([letter isEqualToString:fristLetter]){ + [modelList addObject:model]; + }else{ + if(![letterList containsObject:fristLetter] && ![otherList containsObject:model]){ + [otherList addObject:model]; + } + } + } + if(modelList.count > 0){ + + [self.titleList addObject:letter]; + [self.listData addObject:modelList]; + } + } + [self.listData addObject:otherList]; + [self.titleList addObject:@"#"]; + [self.tableView reloadData]; +} +#pragma mark - UITableViewDelegate +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ + return self.listData.count; +} +- (nullable NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{ + + return self.titleList[section]; +} +-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ + return [self.listData[section] count]; +} + +- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView { + return self.titleList; +} + +-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ + XPLoginAreaTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPLoginAreaTableViewCell class]) forIndexPath:indexPath]; + if(indexPath.section < self.listData.count){ + NSArray *listModel = self.listData[indexPath.section]; + if(indexPath.row < listModel.count){ + cell.areaModel =listModel[indexPath.row]; + } + } + return cell; +} +-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ + LoginAreaModel *codeModel = self.listData[indexPath.section][indexPath.row]; + if(self.delegate && [self.delegate respondsToSelector:@selector(chooseAreaCodeSuccess:)]){ + + [self.delegate chooseAreaCodeSuccess:codeModel.phoneAreaCode ?: codeModel.phone_area_code]; + } + [self.navigationController popViewControllerAnimated:YES]; +} +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPChooseRreaCodeVC0"); + [self.view addSubview:self.tableView]; +} +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.view); + }]; +} +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.rowHeight = kGetScaleWidth(37); + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;; + _tableView.backgroundColor = [UIColor whiteColor]; + [_tableView registerClass:[XPLoginAreaTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPLoginAreaTableViewCell class])]; + } + return _tableView; +} +- (NSMutableArray *)titleList{ + if (!_titleList){ + _titleList = [NSMutableArray array]; + } + return _titleList; +} +- (NSMutableArray *)listData{ + if (!_listData){ + _listData = [NSMutableArray array]; + } + return _listData; +} + + +@end diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginAreaTableViewCell.h b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginAreaTableViewCell.h new file mode 100644 index 00000000..87f2bedc --- /dev/null +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginAreaTableViewCell.h @@ -0,0 +1,18 @@ +// +// XPLoginAreaTableViewCell.h +// YuMi +// +// Created by YuMi on 2023/6/25. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class LoginAreaModel; +@interface XPLoginAreaTableViewCell : UITableViewCell + +@property (nonatomic,strong) LoginAreaModel *areaModel; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginAreaTableViewCell.m b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginAreaTableViewCell.m new file mode 100644 index 00000000..e782b7d3 --- /dev/null +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginAreaTableViewCell.m @@ -0,0 +1,74 @@ +// +// XPLoginAreaTableViewCell.m +// YuMi +// +// Created by YuMi on 2023/6/25. +// + +#import "XPLoginAreaTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "LoginAreaModel.h" +@interface XPLoginAreaTableViewCell() +@property (nonatomic,strong) UILabel *areaVeiw; +@property (nonatomic,strong) UILabel *codeView; +@end +@implementation XPLoginAreaTableViewCell +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor whiteColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.areaVeiw]; + [self.contentView addSubview:self.codeView]; +} +- (void)initSubViewConstraints { + [self.areaVeiw mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(15)); + make.centerY.equalTo(self.contentView); + }]; + [self.codeView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-kGetScaleWidth(15)); + make.centerY.equalTo(self.contentView); + }]; +} +- (void)setAreaModel:(LoginAreaModel *)areaModel{ + _areaModel = areaModel; + _areaVeiw.text = _areaModel.name; + if(_areaModel.phoneAreaCode == nil){ + _codeView.text = _areaModel.phone_area_code; + return; + } + _codeView.text = _areaModel.phoneAreaCode; +} +#pragma mark - 懒加载 + +- (UILabel *)areaVeiw { + if (!_areaVeiw) { + _areaVeiw = [[UILabel alloc] init]; + _areaVeiw.font = [UIFont systemFontOfSize:14]; + _areaVeiw.textColor = [DJDKMIMOMColor colorWithHexString:@"#1F1A4E"]; + } + return _areaVeiw; +} + + +- (UILabel *)codeView { + if (!_codeView) { + _codeView = [[UILabel alloc] init]; + _codeView.font = [UIFont systemFontOfSize:14]; + _codeView.textColor = [DJDKMIMOMColor colorWithHexString:@"#1F1A4E"]; + } + return _codeView; +} + +@end diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginBaseViewController.h b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginBaseViewController.h new file mode 100644 index 00000000..e5e8dca2 --- /dev/null +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginBaseViewController.h @@ -0,0 +1,21 @@ +// +// YMLoginBaseViewController.h +// YUMI +// +// Created by XY on 2023/2/14. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPLoginBaseViewController : MvpViewController + +/// 是否需要毛玻璃效果 +@property (nonatomic, assign) BOOL needEffect; +/// 是否需要返回按钮 +@property (nonatomic, assign) BOOL needBack; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginBaseViewController.m b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginBaseViewController.m new file mode 100644 index 00000000..a2aff93c --- /dev/null +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginBaseViewController.m @@ -0,0 +1,132 @@ +// +// YMLoginBaseViewController.m +// YUMI +// +// Created by XY on 2023/2/14. +// + +#import "XPLoginBaseViewController.h" +#import +#import +#import "YUMIMacroUitls.h" +#import "XPRoomGiftAnimationParser.h" +@interface XPLoginBaseViewController () + +/// vap背景 +@property (nonatomic, strong) VAPView *vapView; +/// 毛玻璃 +@property (nonatomic, strong) UIToolbar *toolBar; +/// 返回按钮 +@property (nonatomic, strong) UIButton *backBtn; +///VAP动画管理 +@property (nonatomic, strong) XPRoomGiftAnimationParser *vapParser; +@end + +@implementation XPLoginBaseViewController + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (UIStatusBarStyle)preferredStatusBarStyle { + return UIStatusBarStyleLightContent; +} + + +- (void)viewDidLoad { + [super viewDidLoad]; + [self createBaseUI]; + [self playVAP]; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [self.vapView resumeHWDMP4]; +} + +- (void)viewDidDisappear:(BOOL)animated { + [super viewDidDisappear:animated]; + [self.vapView pauseHWDMP4]; +} + +- (void)createBaseUI { + [self.view addSubview:self.vapView]; + if (self.needEffect) { + [self.view addSubview:self.toolBar]; + } + if (self.needBack) { + [self.view addSubview:self.backBtn]; + [self.backBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kStatusBarHeight); + make.left.mas_equalTo(0); + make.width.mas_equalTo(44); + make.height.mas_equalTo(44); + }]; + } +} + +/// 播放vap +- (void)playVAP { +// NSString *filePath = [NSString stringWithFormat:@"%@/login_vapbg.mp4", API_Image_URL]; + NSString *filePath = [[NSBundle mainBundle] pathForResource:@"login_vapbg" ofType:@"mp4"]; + [self.vapView setMute:YES]; + [self.vapView playHWDMP4:filePath repeatCount:1 delegate:self]; +// [self.vapParser parseWithURL:filePath completionBlock:^(NSString * _Nullable videoUrl) { +// if (videoUrl.length) { +// [self.vapView setMute:YES]; +// [self.vapView playHWDMP4:videoUrl repeatCount:1 delegate:self]; +// } +// } failureBlock:^(NSError * _Nullable error) { +// +// }]; +} + +/// 返回 +- (void)backBtnClicked { + [self.navigationController popViewControllerAnimated:YES]; +} + + +#pragma mark - 懒加载 + +- (VAPView *)vapView { + if (!_vapView) { + _vapView = [[VAPView alloc] initWithFrame:self.view.bounds]; + _vapView.contentMode = UIViewContentModeScaleAspectFill; + _vapView.hwd_enterBackgroundOP = HWDMP4EBOperationTypeDoNothing; + } + return _vapView; +} + +- (UIToolbar *)toolBar { + if (!_toolBar) { + _toolBar = [[UIToolbar alloc] initWithFrame:self.view.bounds]; + _toolBar.barStyle = UIBarStyleBlack; + _toolBar.alpha = 0.92; + } + return _toolBar; +} + +- (UIButton *)backBtn { + if (!_backBtn) { + _backBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_backBtn setImage:[UIImage imageNamed:@"home_search_white_back"] forState:UIControlStateNormal]; + [_backBtn addTarget:self action:@selector(backBtnClicked) forControlEvents:UIControlEventTouchUpInside]; + } + return _backBtn; +} + +- (void)dealloc { + [self.vapView stopHWDMP4]; + self.vapView = nil; + NSLog(@"%s",__func__); +} + +- (XPRoomGiftAnimationParser *)vapParser { + if (!_vapParser) { + _vapParser = [[XPRoomGiftAnimationParser alloc] init]; + } + return _vapParser; +} + +@end diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginInputView.h b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginInputView.h new file mode 100644 index 00000000..6a9c6b31 --- /dev/null +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginInputView.h @@ -0,0 +1,37 @@ +// +// YMLoginInputView.h +// YUMI +// +// Created by XY on 2023/2/14. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPLoginInputViewDelegate + +- (void)smsCodeAction; + +- (void)areaListAction; + +@end + +@interface XPLoginInputView : UIView +/// +@property (nonatomic,strong) UIStackView *areaStackView; +/// 区号 +@property (nonatomic, strong) UIButton *areaCodeBtn; +/// 输入框 +@property (nonatomic, strong) UITextField *inputTextField; +/// 验证码 +@property (nonatomic, strong) UIButton *smsCodeBtn; + +@property (nonatomic, weak) id delegate; + +//开启倒计时 +- (void)fireTimer; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginInputView.m b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginInputView.m new file mode 100644 index 00000000..b8c40c57 --- /dev/null +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginInputView.m @@ -0,0 +1,161 @@ +// +// YMLoginInputView.m +// YUMI +// +// Created by XY on 2023/2/14. +// + +#import "XPLoginInputView.h" +#import "DJDKMIMOMColor.h" +#import +#import + +@interface XPLoginInputView() + +@property (nonatomic, strong) dispatch_source_t timer; + +@property (nonatomic,strong) UIImageView *areaImageView; +@end + +@implementation XPLoginInputView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + self.backgroundColor = UIColor.clearColor; + self.layer.cornerRadius = 66.0/2.0; + self.layer.borderWidth = 1; + self.layer.borderColor = [UIColor.whiteColor colorWithAlphaComponent:0.2].CGColor; + + [self createUI]; + } + return self; +} + +- (void)createUI { + UIStackView *stackView = [[UIStackView alloc] init]; + stackView.axis = UILayoutConstraintAxisHorizontal; + stackView.distribution = UIStackViewDistributionFill; + stackView.alignment = UIStackViewAlignmentCenter; + stackView.spacing = 5; + [self addSubview:stackView]; + + + UIImageView * areaImageView = [[UIImageView alloc] init]; + areaImageView.userInteractionEnabled = YES; + areaImageView.image = [UIImage imageNamed:@"login_area_arrow"]; + areaImageView.userInteractionEnabled = NO; + + /// 区号 + UIButton *areaCodeBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [areaCodeBtn setTitle:@"+852" forState:UIControlStateNormal]; + [areaCodeBtn setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; + areaCodeBtn.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightRegular]; + _areaCodeBtn = areaCodeBtn; + areaCodeBtn.userInteractionEnabled = NO; + + UIStackView *areaStackView = [[UIStackView alloc] init]; + areaStackView.axis = UILayoutConstraintAxisHorizontal; + areaStackView.distribution = UIStackViewDistributionFill; + areaStackView.alignment = UIStackViewAlignmentCenter; + areaStackView.spacing = 2; + + + UIButton *areaBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [areaBtn addTarget:self action:@selector(areaChooseClicked) forControlEvents:UIControlEventTouchUpInside]; + [areaStackView addSubview:areaBtn]; + + [areaStackView addArrangedSubview:areaCodeBtn]; + [areaStackView addArrangedSubview:areaImageView]; + + [stackView addArrangedSubview:areaStackView]; + self.areaStackView = areaStackView; + + + /// 输入框 + UITextField *inputTextField = [[UITextField alloc] init]; + inputTextField.textColor = UIColor.whiteColor; + inputTextField.font = [UIFont systemFontOfSize:18 weight:UIFontWeightRegular]; + [stackView addArrangedSubview:inputTextField]; + self.inputTextField = inputTextField; + /// 获取验证码 + UIButton *smsCodeBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [smsCodeBtn setTitle:YMLocalizedString(@"XPLoginInputView0") forState:UIControlStateNormal]; + [smsCodeBtn setTitleColor:UIColorFromRGB(0xFB486A) forState:UIControlStateNormal]; + smsCodeBtn.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; + [smsCodeBtn addTarget:self action:@selector(smsCodeBtnClicked) forControlEvents:UIControlEventTouchUpInside]; + [stackView addArrangedSubview:smsCodeBtn]; + self.smsCodeBtn = smsCodeBtn; + + [stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(15); + make.right.mas_equalTo(-15); + make.top.bottom.mas_equalTo(0); + }]; + + + [areaImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(18); + make.height.mas_equalTo(18); + }]; + + [areaCodeBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(50); + make.height.mas_equalTo(stackView); + }]; + [inputTextField mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(stackView); + }]; + [smsCodeBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(80); + make.height.mas_equalTo(stackView); + }]; + + [areaBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(areaStackView); + }]; + + + self.areaStackView.hidden = YES; + self.smsCodeBtn.hidden = YES; + +} + + +- (void)smsCodeBtnClicked { + if (self.delegate && [self.delegate respondsToSelector:@selector(smsCodeAction)]) { + [self.delegate smsCodeAction]; + } +} + +- (void)areaChooseClicked { + if (self.delegate && [self.delegate respondsToSelector:@selector(areaListAction)]) { + [self.delegate areaListAction]; + } +} + + +//开启倒计时 +- (void)fireTimer { + __block NSInteger count = 60; + dispatch_queue_t queue = dispatch_get_main_queue(); + dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); + dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC, 0 * NSEC_PER_SEC); + @weakify(self); + dispatch_source_set_event_handler(timer, ^{ + @strongify(self); + count--; + if (count < 0) { + [self.smsCodeBtn setTitle:YMLocalizedString(@"XPLoginInputView1") forState:UIControlStateNormal]; + self.smsCodeBtn.userInteractionEnabled = YES; + dispatch_cancel(self.timer); + }else{ + [self.smsCodeBtn setTitle:[NSString stringWithFormat:@"%lds",count] forState:UIControlStateNormal]; + self.smsCodeBtn.userInteractionEnabled = NO; + } + }); + dispatch_resume(timer); + self.timer = timer; +} + +@end diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPhoneViewController.h b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPhoneViewController.h new file mode 100644 index 00000000..ff17a5e2 --- /dev/null +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPhoneViewController.h @@ -0,0 +1,16 @@ +// +// YMLoginPhoneViewController.h +// YUMI +// +// Created by XY on 2023/2/13. +// + +#import "XPLoginBaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPLoginPhoneViewController : XPLoginBaseViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPhoneViewController.m b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPhoneViewController.m new file mode 100644 index 00000000..6c7cc5ec --- /dev/null +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPhoneViewController.m @@ -0,0 +1,229 @@ +// +// YMLoginPhoneViewController.m +// YUMI +// +// Created by XY on 2023/2/13. +// + +#import "XPLoginPhoneViewController.h" +#import +#import "YUMIMacroUitls.h" +#import + +#import "XPLoginInputView.h" + +#import "XPLoginPwdViewController.h" +#import "XPLoginAraeViewController.h" +#import "LoginVerifCodePresent.h" +#import "LoginVerifCodeProtocol.h" + +@interface XPLoginPhoneViewController () + +/// 手机号登录 +@property (nonatomic, strong) UILabel *titleLabel; +/// 未注册的手机号自动登录 +@property (nonatomic, strong) UILabel *despLabel; +/// 手机号输入框 +@property (nonatomic, strong) XPLoginInputView *phoneInputView; +/// 验证码输入框 +@property (nonatomic, strong) XPLoginInputView *codeInputView; +/// 登录按钮 +@property (nonatomic, strong) UIButton *loginBtn; +/// 密码登录 +@property (nonatomic, strong) UIButton *pwdLoginBtn; +@property (nonatomic,copy) NSString *phoneAreaCode; +@end + +@implementation XPLoginPhoneViewController + +- (LoginVerifCodePresent *)createPresenter { + return [[LoginVerifCodePresent alloc] init]; +} + + +- (void)viewDidLoad { + self.needEffect = YES; + self.needBack = YES; + self.phoneAreaCode = @"852"; + [super viewDidLoad]; + [self createUI]; + [self racBind]; +} + +- (void)createUI { + + [self.view addSubview:self.titleLabel]; + [self.view addSubview:self.despLabel]; + [self.view addSubview:self.phoneInputView]; + [self.view addSubview:self.codeInputView]; + [self.view addSubview:self.loginBtn]; + [self.view addSubview:self.pwdLoginBtn]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.view); + make.top.mas_equalTo(146.0/812.0*KScreenHeight); + }]; + [self.despLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.view); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(4); + }]; + [self.phoneInputView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(38); + make.right.mas_equalTo(-38); + make.top.mas_equalTo(self.despLabel.mas_bottom).offset(23); + make.height.mas_equalTo(66); + }]; + [self.codeInputView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.phoneInputView); + make.right.mas_equalTo(self.phoneInputView); + make.top.mas_equalTo(self.phoneInputView.mas_bottom).offset(16); + make.height.mas_equalTo(self.phoneInputView); + }]; + [self.loginBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.codeInputView.mas_bottom).offset(51); + make.centerX.mas_equalTo(self.view); + make.width.height.mas_equalTo(96); + }]; + [self.pwdLoginBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.loginBtn.mas_bottom).offset(24); + make.centerX.mas_equalTo(self.view); + }]; + +} + +- (void)racBind { + RAC(self.loginBtn, enabled) = [[RACSignal combineLatest:@[self.phoneInputView.inputTextField.rac_textSignal, self.codeInputView.inputTextField.rac_textSignal] reduce:^id _Nonnull(NSString *phone, NSString* smsCode){ + return @((phone.length > 0) && smsCode.length >= 5); + }] takeUntil:self.rac_willDeallocSignal]; +} + + +/// 登录 +- (void)loginBtnClicked { + NSString *phone = self.phoneInputView.inputTextField.text; + NSString *smsCode = self.codeInputView.inputTextField.text; + NSString * phoneStr = [NSString stringWithFormat:@"%@%@",self.phoneAreaCode, phone]; + [self.presenter loginWithPhone:phoneStr code:smsCode phoneAreaCode:self.phoneAreaCode]; +} + +/// 密码登录 +- (void)pwdLoginBtnClicked { + XPLoginPwdViewController *pwdVC = [[XPLoginPwdViewController alloc] init]; + [self.navigationController pushViewController:pwdVC animated:YES]; +} + +#pragma mark - XPLoginInputViewDelegate + +- (void)smsCodeAction { + NSString *phone = self.phoneInputView.inputTextField.text; + if (phone.length == 0 ) { + [self showErrorToast:YMLocalizedString(@"XPLoginPhoneViewController0")]; + return; + } + [self.presenter phoneSmsCode:phone type:GetSmsType_Regist phoneAreaCode:self.phoneAreaCode]; +} + +- (void)areaListAction { + XPLoginAraeViewController *codeVC = [XPLoginAraeViewController new]; + codeVC.delegate = self; + [self.navigationController pushViewController:codeVC animated:YES]; +} + +- (void)chooseAreaCodeSuccess:(NSString *)code { + if (code.length > 0) { + self.phoneAreaCode = code; + [self.phoneInputView.areaCodeBtn setTitle:[NSString stringWithFormat:@"+%@", code] forState:UIControlStateNormal]; + } +} + +#pragma mark - LoginVerifCodeProtocol +- (void)loginSuccess { + [self showSuccessToast:YMLocalizedString(@"XPLoginPhoneViewController1")]; + UIViewController *vc = self.presentingViewController; + while (vc.presentingViewController) { + vc = vc.presentingViewController; + } + [vc dismissViewControllerAnimated:YES completion:nil]; + [self.navigationController popToRootViewControllerAnimated:NO]; +} + + + +#pragma mark - LoginProtocol +- (void)phoneSmsCodeSuccess { + [self showSuccessToast:YMLocalizedString(@"XPLoginPhoneViewController2")]; + [self.codeInputView fireTimer]; +} + +#pragma mark - 懒加载 + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPLoginPhoneViewController3"); + _titleLabel.font = [UIFont systemFontOfSize:24 weight:UIFontWeightMedium]; + _titleLabel.textColor = UIColor.whiteColor; + } + return _titleLabel; +} + +- (UILabel *)despLabel { + if (!_despLabel) { + _despLabel = [[UILabel alloc] init]; + _despLabel.text = YMLocalizedString(@"XPLoginPhoneViewController4"); + _despLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightRegular]; + _despLabel.textColor = [UIColor.whiteColor colorWithAlphaComponent:0.6]; + } + return _despLabel; +} + +- (XPLoginInputView *)phoneInputView { + if (!_phoneInputView) { + _phoneInputView = [[XPLoginInputView alloc] init]; + _phoneInputView.areaStackView.hidden = NO; + _phoneInputView.delegate = self; + NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginPhoneViewController5")]; + [placeholder addAttribute:NSForegroundColorAttributeName value:UIColor.whiteColor range:NSMakeRange(0, placeholder.length)]; + _phoneInputView.inputTextField.attributedPlaceholder = placeholder; + _phoneInputView.inputTextField.keyboardType = UIKeyboardTypeNumberPad; + } + return _phoneInputView; +} + +- (XPLoginInputView *)codeInputView { + if (!_codeInputView) { + _codeInputView = [[XPLoginInputView alloc] init]; + _codeInputView.smsCodeBtn.hidden = NO; + NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginPhoneViewController6")]; + [placeholder addAttribute:NSForegroundColorAttributeName value:UIColor.whiteColor range:NSMakeRange(0, placeholder.length)]; + _codeInputView.inputTextField.attributedPlaceholder = placeholder; + _codeInputView.inputTextField.keyboardType = UIKeyboardTypeNumberPad; + _codeInputView.delegate = self; + } + return _codeInputView; +} + +- (UIButton *)loginBtn { + if (!_loginBtn) { + _loginBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_loginBtn setImage:[UIImage imageNamed:@"login_next"] forState:UIControlStateNormal]; + [_loginBtn setImage:[UIImage imageNamed:@"login_next_disable"] forState:UIControlStateDisabled]; + [_loginBtn addTarget:self action:@selector(loginBtnClicked) forControlEvents:UIControlEventTouchUpInside]; + } + return _loginBtn; +} + +- (UIButton *)pwdLoginBtn { + if (!_pwdLoginBtn) { + _pwdLoginBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + NSMutableAttributedString *title = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginPhoneViewController7")]; + [title addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:NSMakeRange(0, title.length)]; + [_pwdLoginBtn setAttributedTitle:title forState:UIControlStateNormal]; + [_pwdLoginBtn setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; + _pwdLoginBtn.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightRegular]; + [_pwdLoginBtn addTarget:self action:@selector(pwdLoginBtnClicked) forControlEvents:UIControlEventTouchUpInside]; + } + return _pwdLoginBtn; +} + +@end diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPwdViewController.h b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPwdViewController.h new file mode 100644 index 00000000..46527dcf --- /dev/null +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPwdViewController.h @@ -0,0 +1,16 @@ +// +// YMLoginPwdViewController.h +// YUMI +// +// Created by XY on 2023/2/14. +// + +#import "XPLoginBaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPLoginPwdViewController : XPLoginBaseViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPwdViewController.m b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPwdViewController.m new file mode 100644 index 00000000..9b0547eb --- /dev/null +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPwdViewController.m @@ -0,0 +1,193 @@ +// +// YMLoginPwdViewController.m +// YUMI +// +// Created by XY on 2023/2/14. +// + +#import "XPLoginPwdViewController.h" +#import +#import "YUMIMacroUitls.h" +#import + +#import "XPLoginInputView.h" +#import "XPLoginPwdViewController.h" +#import "XPForgetPwdViewController.h" + +#import "LoginPasswordPresent.h" +#import "LoginPasswordProtocol.h" + +@interface XPLoginPwdViewController () + +/// 密码登录 +@property (nonatomic, strong) UILabel *titleLabel; +/// 手机号输入框 +@property (nonatomic, strong) XPLoginInputView *phoneInputView; +/// 密码输入框 +@property (nonatomic, strong) XPLoginInputView *pwdInputView; +/// 登录按钮 +@property (nonatomic, strong) UIButton *loginBtn; +/// 密码登录 +@property (nonatomic, strong) UIButton *phoneLoginBtn; +/// 忘记密码 +@property (nonatomic, strong) UIButton *forgetBtn; + +@end + +@implementation XPLoginPwdViewController + +- (LoginPasswordPresent *)createPresenter { + return [[LoginPasswordPresent alloc] init]; +} + +- (void)viewDidLoad { + self.needEffect = YES; + self.needBack = YES; + [super viewDidLoad]; + [self createUI]; + [self racBind]; +} + +- (void)createUI { + [self.view addSubview:self.titleLabel]; + [self.view addSubview:self.phoneInputView]; + [self.view addSubview:self.pwdInputView]; + [self.view addSubview:self.loginBtn]; + [self.view addSubview:self.phoneLoginBtn]; + [self.view addSubview:self.forgetBtn]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.view); + make.top.mas_equalTo(146.0/812.0*KScreenHeight); + }]; + [self.phoneInputView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(38); + make.right.mas_equalTo(-38); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(41); + make.height.mas_equalTo(66); + }]; + [self.pwdInputView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.phoneInputView); + make.right.mas_equalTo(self.phoneInputView); + make.top.mas_equalTo(self.phoneInputView.mas_bottom).offset(16); + make.height.mas_equalTo(self.phoneInputView); + }]; + [self.loginBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.pwdInputView.mas_bottom).offset(51); + make.centerX.mas_equalTo(self.view); + make.width.height.mas_equalTo(96); + }]; + [self.phoneLoginBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.loginBtn.mas_bottom).offset(24); + make.centerX.mas_equalTo(self.view); + }]; + [self.forgetBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.pwdInputView); + make.top.mas_equalTo(self.pwdInputView.mas_bottom).offset(10); + }]; + +} + +- (void)racBind { + RAC(self.loginBtn, enabled) = [[RACSignal combineLatest:@[self.phoneInputView.inputTextField.rac_textSignal, self.pwdInputView.inputTextField.rac_textSignal] reduce:^id _Nonnull(NSString *phone, NSString* password){ + return @((phone.length ==11 || phone.length == 7) && password.length >= 6); + }] takeUntil:self.rac_willDeallocSignal]; +} + +- (void)loginBtnClicked { + NSString *phone = self.phoneInputView.inputTextField.text; + NSString *password = self.pwdInputView.inputTextField.text; + [self.presenter loginWithPhone:phone password:password]; +} + +- (void)phoneLoginBtnClicked { + [self.navigationController popViewControllerAnimated:YES]; +} + +- (void)forgetBtnClicked { + XPForgetPwdViewController *forgetVC = [[XPForgetPwdViewController alloc] init]; + [self.navigationController pushViewController:forgetVC animated:YES]; +} + +#pragma mark - LoginPasswordProtocol +- (void)phoneAndPasswordLoginSuccess { + [self showSuccessToast:YMLocalizedString(@"XPLoginPwdViewController0")]; + UIViewController *vc = self.presentingViewController; + while (vc.presentingViewController) { + vc = vc.presentingViewController; + } + [vc dismissViewControllerAnimated:YES completion:nil]; + [self.navigationController popToRootViewControllerAnimated:NO]; +} + +#pragma mark - 懒加载 + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPLoginPwdViewController1"); + _titleLabel.font = [UIFont systemFontOfSize:24 weight:UIFontWeightMedium]; + _titleLabel.textColor = UIColor.whiteColor; + } + return _titleLabel; +} + +- (XPLoginInputView *)phoneInputView { + if (!_phoneInputView) { + _phoneInputView = [[XPLoginInputView alloc] init]; + _phoneInputView.areaStackView.hidden = YES; + NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginPwdViewController2")]; + [placeholder addAttribute:NSForegroundColorAttributeName value:UIColor.whiteColor range:NSMakeRange(0, placeholder.length)]; + _phoneInputView.inputTextField.attributedPlaceholder = placeholder; + _phoneInputView.inputTextField.keyboardType = UIKeyboardTypeNumberPad; + } + return _phoneInputView; +} + +- (XPLoginInputView *)pwdInputView { + if (!_pwdInputView) { + _pwdInputView = [[XPLoginInputView alloc] init]; + NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginPwdViewController3")]; + [placeholder addAttribute:NSForegroundColorAttributeName value:UIColor.whiteColor range:NSMakeRange(0, placeholder.length)]; + _pwdInputView.inputTextField.attributedPlaceholder = placeholder; + _pwdInputView.inputTextField.keyboardType = UIKeyboardTypeAlphabet; + _pwdInputView.inputTextField.secureTextEntry = YES; + } + return _pwdInputView; +} + +- (UIButton *)loginBtn { + if (!_loginBtn) { + _loginBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_loginBtn setImage:[UIImage imageNamed:@"login_next"] forState:UIControlStateNormal]; + [_loginBtn setImage:[UIImage imageNamed:@"login_next_disable"] forState:UIControlStateDisabled]; + [_loginBtn addTarget:self action:@selector(loginBtnClicked) forControlEvents:UIControlEventTouchUpInside]; + } + return _loginBtn; +} + +- (UIButton *)phoneLoginBtn { + if (!_phoneLoginBtn) { + _phoneLoginBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + NSMutableAttributedString *title = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginPwdViewController4")]; + [title addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:NSMakeRange(0, title.length)]; + [_phoneLoginBtn setAttributedTitle:title forState:UIControlStateNormal]; + [_phoneLoginBtn setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; + _phoneLoginBtn.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightRegular]; + [_phoneLoginBtn addTarget:self action:@selector(phoneLoginBtnClicked) forControlEvents:UIControlEventTouchUpInside]; + } + return _phoneLoginBtn; +} + +- (UIButton *)forgetBtn { + if (!_forgetBtn) { + _forgetBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_forgetBtn setTitle:@"忘记密码?" forState:UIControlStateNormal]; + [_forgetBtn setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; + _forgetBtn.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; + [_forgetBtn addTarget:self action:@selector(forgetBtnClicked) forControlEvents:UIControlEventTouchUpInside]; + } + return _forgetBtn; +} + +@end diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginViewController.h b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginViewController.h new file mode 100644 index 00000000..57aad575 --- /dev/null +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginViewController.h @@ -0,0 +1,16 @@ +// +// YMLoginViewController.h +// YUMI +// +// Created by XY on 2023/2/13. +// + +#import "XPLoginBaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPLoginViewController : XPLoginBaseViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginViewController.m b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginViewController.m new file mode 100644 index 00000000..c928c135 --- /dev/null +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginViewController.m @@ -0,0 +1,383 @@ +// +// YMLoginViewController.m +// YUMI +// +// Created by XY on 2023/2/13. +// + +#import "XPLoginViewController.h" +#import +#import +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "YUMIMacroUitls.h" +#import +#import "YUMIHtmlUrl.h" +#import "UIButton+EnlargeTouchArea.h" +#import +#import "YUMIConstant.h" +#import "GCDHelper.h" +#import "TTPopup.h" +#import "StatisticsServiceHelper.h" +#import "XNDJTDDLoadingTool.h" +#import "XPWebViewController.h" +#import "XPLoginPhoneViewController.h" +#import "UserPrivacyView.h" +#import "AESUtils.h" +#import "LoginPresenter.h" +#import "LoginProtocol.h" + +UIKIT_EXTERN NSString * const kYouMiNumberCountKey; +NSString * const HadAgreePrivacy = @"HadAgreePrivacy"; + +@interface XPLoginViewController () + +/// 一键登录 +@property (nonatomic, strong) UIButton *quickLoginBtn; +/// 同意按钮 +@property (nonatomic, strong) UIButton *agreeBtn; +/// 协议隐私政策 +@property (nonatomic, strong) YYLabel *protocolLabel; +/// 其他登录方式 +@property (nonatomic, strong) UILabel *otherLabel; +/// 勾选隐私政策提示泡泡 +@property (nonatomic, strong) UIImageView *authBubbleView; +/// 泡泡提示内容 +@property (nonatomic, strong) UILabel *authBubbleLabel; +@property (nonatomic, strong) UIStackView *stackView; +///手机 +@property (nonatomic, strong) UIButton *fbButtonView; +///wx +@property (nonatomic, strong) UIButton *googleButtonView; +///qq +@property (nonatomic, strong) UIButton *lineButtonView; +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000 +@property (nonatomic, strong) ASAuthorizationAppleIDButton *appleButton; +#endif +///谷歌登录配置 +@property (nonatomic,strong) GIDConfiguration *configuration; +@end + +@implementation XPLoginViewController + +- (LoginPresenter *)createPresenter { + return [[LoginPresenter alloc] init]; +} + +- (void)viewDidLoad { + self.needEffect = NO; + self.needBack = NO; + [super viewDidLoad]; + [self createUI]; + +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [self setConfigPrivacyAlertView]; +} + +- (void)createUI { + [self.view addSubview:self.quickLoginBtn]; + [self.view addSubview:self.protocolLabel]; + [self.view addSubview:self.agreeBtn]; + [self.view addSubview:self.otherLabel]; + [self.view addSubview:self.stackView]; + [self.view addSubview:self.authBubbleView]; + [self.authBubbleView addSubview:self.authBubbleLabel]; + + [self.stackView addArrangedSubview:self.fbButtonView]; + [self.stackView addArrangedSubview:self.googleButtonView]; + [self.stackView addArrangedSubview:self.lineButtonView]; + [self.stackView addArrangedSubview:self.appleButton]; + + [self.quickLoginBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(45); + make.right.mas_equalTo(-45); + make.height.mas_equalTo(66); + make.centerY.mas_equalTo(self.view); + }]; + [self.protocolLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.quickLoginBtn.mas_bottom).offset(56); + make.centerX.mas_equalTo(self.view).offset(10); + make.right.mas_lessThanOrEqualTo(-10); + make.height.mas_greaterThanOrEqualTo(22); + }]; + [self.agreeBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.protocolLabel.mas_left).offset(0); + make.top.mas_equalTo(self.protocolLabel.mas_top); + make.width.height.mas_equalTo(22); + }]; + [self.otherLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.view); + make.bottom.mas_equalTo(-169); + }]; + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.otherLabel.mas_bottom).offset(27); + make.centerX.mas_equalTo(self.view); + make.height.mas_equalTo(40); + }]; + [self.authBubbleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.agreeBtn).mas_offset((-16)); + make.top.mas_equalTo(self.agreeBtn.mas_bottom); + make.width.mas_equalTo(235); + make.height.mas_equalTo(29); + }]; + [self.authBubbleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(8); + make.bottom.mas_equalTo(self.authBubbleView).mas_offset(-6); + }]; + + [self.fbButtonView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(40); + }]; + +} + +- (void)setConfigPrivacyAlertView { + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSString *isShow = [defaults objectForKey:kYouMiNumberCountKey]; + // 隐私协议弹出 + if (!isShow && isShow.length <= 0) { + UserPrivacyView * alertView = [[UserPrivacyView alloc] init]; + alertView.controller = self; + TTPopupService * config = [[TTPopupService alloc] init]; + config.shouldDismissOnBackgroundTouch = NO; + config.contentView = alertView; + [TTPopup popupWithConfig:config]; + }; +} + +- (void)loginDidClick:(UIButton *)sender { + if (self.agreeBtn.selected) { + ThirdLoginType type = sender.tag - 1000; + if(type == ThirdLoginType_Gmail){ + [self.presenter thirdLoginByGoogleWithPresentingViewController:self configuration:self.configuration]; + return; + } + [self.presenter thirdLoginWithType:type]; + + } else { + [self showErrorToast:YMLocalizedString(@"PKLoginViewController1")]; + } + +} + +/// 点击同意 +- (void)agreeBtnClicked { + self.agreeBtn.selected = !self.agreeBtn.selected; + if (self.agreeBtn.isSelected) { + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + [defaults setObject:@"hadAgree" forKey:HadAgreePrivacy]; + [defaults synchronize]; + [UIView animateWithDuration:0.5 animations:^{ + self.authBubbleView.alpha = 0.0; + }]; + } else { + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSString * hadAgree = [defaults stringForKey:HadAgreePrivacy]; + if (hadAgree.length > 0) { + [defaults removeObjectForKey:HadAgreePrivacy]; + } + } +} + +/// 点击手机号登录 +- (void)phoneLoginBtnClicked { + if (self.agreeBtn.isSelected) { + XPLoginPhoneViewController *phoneVC = [[XPLoginPhoneViewController alloc] init]; + [self.navigationController pushViewController:phoneVC animated:YES]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventLoginPhoneClick]; + } else { + [UIView animateWithDuration:0.5 animations:^{ + self.authBubbleView.alpha = 1.0; + }]; + } +} + +/// 点击一键登录 +- (void)quickLoginBtnClicked { + if (self.agreeBtn.isSelected) { + XPLoginPhoneViewController *phoneVC = [[XPLoginPhoneViewController alloc] init]; + [self.navigationController pushViewController:phoneVC animated:YES]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventLoginPhoneClick]; + } else { + [UIView animateWithDuration:0.5 animations:^{ + self.authBubbleView.alpha = 1.0; + }]; + } +} +#pragma mark - LoginProtocol +- (void)loginSuccess { + [self dismissViewControllerAnimated:YES completion:nil]; + [self showSuccessToast:YMLocalizedString(@"XPLoginViewController4")]; +} + +#pragma mark - 懒加载 + +- (UIButton *)quickLoginBtn { + if (!_quickLoginBtn) { + _quickLoginBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + _quickLoginBtn.layer.masksToBounds = YES; + _quickLoginBtn.layer.cornerRadius = 66.0/2.f; + [_quickLoginBtn setTitle:YMLocalizedString(@"XPLoginViewController5") forState:UIControlStateNormal]; + _quickLoginBtn.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightRegular]; + [_quickLoginBtn setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; + UIImage *image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(KScreenWidth - 45 * 2, 45)]; + [_quickLoginBtn setBackgroundImage:image forState:UIControlStateNormal]; + [_quickLoginBtn setImage:[UIImage imageNamed:@"login_phone_white"] forState:UIControlStateNormal]; + [_quickLoginBtn addTarget:self action:@selector(quickLoginBtnClicked) forControlEvents:UIControlEventTouchUpInside]; + } + return _quickLoginBtn; +} + +- (UIButton *)agreeBtn { + if(!_agreeBtn) { + _agreeBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_agreeBtn setImage:[UIImage imageNamed:@"login_agree"] forState:UIControlStateSelected]; + [_agreeBtn setImage:[UIImage imageNamed:@"login_disagree"] forState:UIControlStateNormal]; + [_agreeBtn setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + [_agreeBtn addTarget:self action:@selector(agreeBtnClicked) forControlEvents:UIControlEventTouchUpInside]; + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSString *hadAgree = [defaults objectForKey:HadAgreePrivacy]; + if (hadAgree.length > 0) { + _agreeBtn.selected = YES; + } + } + return _agreeBtn; +} + +- (YYLabel *)protocolLabel { + if (!_protocolLabel) { + _protocolLabel = [[YYLabel alloc] init]; + _protocolLabel.font = [UIFont systemFontOfSize:12]; + _protocolLabel.numberOfLines = 0; + + NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginViewController6")]; + attString.yy_color = UIColor.whiteColor; + NSString *userString = YMLocalizedString(@"XPLoginViewController7"); + NSMutableAttributedString *userAttString = [[NSMutableAttributedString alloc] initWithString:userString attributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor appMainColor]}]; + @weakify(self) + [userAttString yy_setTextHighlightRange:NSMakeRange(0, userAttString.length) color:nil backgroundColor:nil userInfo:nil tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { + @strongify(self); + // 跳转用户协议 + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + webVC.url = URLWithType(kUserProtocalURL); + [self.navigationController pushViewController:webVC animated:YES]; + } longPressAction:nil]; + + NSMutableAttributedString *andString = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginViewController8")]; + andString.yy_color = UIColor.whiteColor; + NSString *protocolString = YMLocalizedString(@"XPLoginViewController9"); + NSMutableAttributedString *privateString = [[NSMutableAttributedString alloc] initWithString:protocolString attributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor appMainColor]}]; + [privateString yy_setTextHighlightRange:NSMakeRange(0, privateString.length) color:nil backgroundColor:nil userInfo:nil tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { + @strongify(self); + // 跳转隐私政策 + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + webVC.url = URLWithType(kPrivacyURL); + [self.navigationController pushViewController:webVC animated:YES]; + } longPressAction:nil]; + [attString appendAttributedString:userAttString]; + [attString appendAttributedString:andString]; + [attString appendAttributedString:privateString]; + + _protocolLabel.attributedText = attString; + } + return _protocolLabel; +} + +- (UILabel *)otherLabel { + if (!_otherLabel) { + _otherLabel = [[UILabel alloc] init]; + _otherLabel.text = YMLocalizedString(@"XPLoginViewController10"); + _otherLabel.textColor = UIColor.whiteColor; + _otherLabel.font = [UIFont systemFontOfSize:12]; + _otherLabel.textAlignment = NSTextAlignmentCenter; + } + return _otherLabel; +} + +- (UIImageView *)authBubbleView { + if (!_authBubbleView) { + _authBubbleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"login_auth_bubble"]]; + _authBubbleView.contentMode = UIViewContentModeScaleAspectFit; + _authBubbleView.alpha = 0; + } + return _authBubbleView; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFillEqually; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 20; + } + return _stackView; +} + +- (UILabel *)authBubbleLabel { + if (!_authBubbleLabel) { + _authBubbleLabel = [[UILabel alloc] init]; + _authBubbleLabel.text = YMLocalizedString(@"XPLoginViewController11"); + _authBubbleLabel.font = [UIFont systemFontOfSize:10]; + _authBubbleLabel.textColor = UIColor.whiteColor; + } + return _authBubbleLabel; +} + +- (UIButton *)fbButtonView { + if (!_fbButtonView) { + _fbButtonView = [UIButton buttonWithType:UIButtonTypeCustom]; + [_fbButtonView setImage: [UIImage imageNamed:@"login_facebook"] forState:UIControlStateNormal]; + _fbButtonView.tag = 1000 + ThirdLoginType_FB; + [_fbButtonView addTarget:self action:@selector(loginDidClick:) forControlEvents:UIControlEventTouchUpInside]; + } + return _fbButtonView; +} + +- (UIButton *)googleButtonView { + if (!_googleButtonView) { + _googleButtonView = [UIButton buttonWithType:UIButtonTypeCustom]; + [_googleButtonView setImage: [UIImage imageNamed:@"login_gmail"] forState:UIControlStateNormal]; + _googleButtonView.tag = 1000 + ThirdLoginType_Gmail; + [_googleButtonView addTarget:self action:@selector(loginDidClick:) forControlEvents:UIControlEventTouchUpInside]; + } + return _googleButtonView; +} + +- (UIButton *)lineButtonView { + if (!_lineButtonView) { + _lineButtonView = [UIButton buttonWithType:UIButtonTypeCustom]; + [_lineButtonView setImage: [UIImage imageNamed:@"login_line"] forState:UIControlStateNormal]; + _lineButtonView.tag = 1000 + ThirdLoginType_Line; + [_lineButtonView addTarget:self action:@selector(loginDidClick:) forControlEvents:UIControlEventTouchUpInside]; + } + return _lineButtonView; +} + +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000 +- (ASAuthorizationAppleIDButton *)appleButton API_AVAILABLE(ios(13.0)){ + if (!_appleButton) { + if (@available(iOS 13.0, *)) { + _appleButton = [[ASAuthorizationAppleIDButton alloc] initWithAuthorizationButtonType:ASAuthorizationAppleIDButtonTypeSignIn authorizationButtonStyle:ASAuthorizationAppleIDButtonStyleWhite]; + } else { + // Fallback on earlier versions + } + _appleButton.cornerRadius = 25; + _appleButton.tag = 1000 + ThirdLoginType_Apple; + [_appleButton addTarget:self action:@selector(loginDidClick:) forControlEvents:UIControlEventTouchUpInside]; + } + return _appleButton; +} +#endif +- (GIDConfiguration *)configuration{ + if (!_configuration){ + NSString * number = [AESUtils aesDecrypt:@"ScLBu7ctIiyGCKPro3Jj6XMdsdCCpNT9L4wyjHEF+bguqubkXNSayFBGMKmoDwe1hjfAc958XSaBdMyEaFXLO38Bwq3xURYVNpgEM4b14zg="]; + _configuration = [[GIDConfiguration alloc] initWithClientID:number]; + } + return _configuration; +} + +@end diff --git a/YuMi/Modules/YMLogin/View/NewLogin/YUMIForgetPwordRegardGovernancer.h b/YuMi/Modules/YMLogin/View/NewLogin/YUMIForgetPwordRegardGovernancer.h deleted file mode 100644 index 32ae4022..00000000 --- a/YuMi/Modules/YMLogin/View/NewLogin/YUMIForgetPwordRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMForgetPwdViewController.h -// YUMI -// -// Created by XY on 2023/2/14. -// - -#import "YUMISurmountBaseRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIForgetPwordRegardGovernancer : YUMISurmountBaseRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/NewLogin/YUMIForgetPwordRegardGovernancer.m b/YuMi/Modules/YMLogin/View/NewLogin/YUMIForgetPwordRegardGovernancer.m deleted file mode 100644 index f2ba4f6e..00000000 --- a/YuMi/Modules/YMLogin/View/NewLogin/YUMIForgetPwordRegardGovernancer.m +++ /dev/null @@ -1,194 +0,0 @@ -// -// YMForgetPwdViewController.m -// YUMI -// -// Created by XY on 2023/2/14. -// - -#import "YUMIForgetPwordRegardGovernancer.h" -#import -#import "YUMIMacroUitls.h" -#import - -#import "YUMISurmountIntrojectionRegard.h" - -#import "SurmountForgetCiphercodeExternalize.h" -#import "SurmountForgetCiphercodeCeremony.h" -#import "YUMISurmountAraeRegardGovernancer.h" - -@interface YUMIForgetPwordRegardGovernancer () - -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) YUMISurmountIntrojectionRegard *mobileIntrojectionRegard; -@property (nonatomic, strong) YUMISurmountIntrojectionRegard *cryptogramIntrojectionRegard; -@property (nonatomic, strong) YUMISurmountIntrojectionRegard *pwordIntrojectionRegard; -@property (nonatomic, strong) UIButton *sureBtuton; -@property (nonatomic,copy) NSString *phoneAreaCode; - -@end - -@implementation YUMIForgetPwordRegardGovernancer - -- (SurmountForgetCiphercodeExternalize *)producePresimport { - return [[SurmountForgetCiphercodeExternalize alloc] init]; -} - -- (void)viewDidLoad { - self.phoneAreaCode = @"852"; - self.demandsImpression = YES; - self.demandsEncourage = YES; - [super viewDidLoad]; - [self produceUI]; - [self racBind]; -} - -- (void)produceUI { - [self.view addSubview:self.titleLabel]; - [self.view addSubview:self.mobileIntrojectionRegard]; - [self.view addSubview:self.cryptogramIntrojectionRegard]; - [self.view addSubview:self.pwordIntrojectionRegard]; - [self.view addSubview:self.sureBtuton]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.view); - make.top.mas_equalTo(kStatusBarHeight); - make.height.mas_equalTo(44); - }]; - [self.mobileIntrojectionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(38); - make.right.mas_equalTo(-38); - make.top.mas_equalTo(139.0/812.0*KScreenHeight); - make.height.mas_equalTo(66); - }]; - [self.cryptogramIntrojectionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.mobileIntrojectionRegard); - make.right.mas_equalTo(self.mobileIntrojectionRegard); - make.top.mas_equalTo(self.mobileIntrojectionRegard.mas_bottom).offset(16); - make.height.mas_equalTo(self.mobileIntrojectionRegard); - }]; - [self.pwordIntrojectionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.mobileIntrojectionRegard); - make.right.mas_equalTo(self.mobileIntrojectionRegard); - make.top.mas_equalTo(self.cryptogramIntrojectionRegard.mas_bottom).offset(16); - make.height.mas_equalTo(self.mobileIntrojectionRegard); - }]; - [self.sureBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.pwordIntrojectionRegard.mas_bottom).offset(51); - make.centerX.mas_equalTo(self.view); - make.width.height.mas_equalTo(96); - }]; - -} - -- (void)racBind { - RAC(self.sureBtuton, enabled) = [[RACSignal combineLatest:@[self.mobileIntrojectionRegard.introjectionEssayUniverse.rac_textSignal, self.pwordIntrojectionRegard.introjectionEssayUniverse.rac_textSignal, self.pwordIntrojectionRegard.introjectionEssayUniverse.rac_textSignal] reduce:^id _Nonnull(NSString *phone, NSString* smsCode, NSString *password){ - return @((phone.length == 11) && smsCode.length >= 5 && (password.length >= 6 && password.length <= 16)); - }] takeUntil:self.rac_willDeallocSignal]; -} - -- (void)sureBtutonTicktacked { - NSString *phone = self.mobileIntrojectionRegard.introjectionEssayUniverse.text; - NSString *smsCode = self.cryptogramIntrojectionRegard.introjectionEssayUniverse.text; - NSString *password = self.pwordIntrojectionRegard.introjectionEssayUniverse.text; - [self.presimport replacementCiphercryptogram:phone newPwd:password smsCode:smsCode]; -} - -#pragma mark - FBCSurmountIntrojectionRegardRepresendtation - -- (void)smsCryptogramPerformance { - NSString *phone = self.mobileIntrojectionRegard.introjectionEssayUniverse.text; - if (phone.length != 11 ) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Forget_Pwd_View_Controller_0")]; - return; - } - [self.presimport mobileSmsCryptogram:phone type:GetSmsGenre_Reset_Password phoneAreaCode:self.phoneAreaCode]; - -} - -- (void)areaSttowardsementPerformance { - YUMISurmountAraeRegardGovernancer *codeVC = [YUMISurmountAraeRegardGovernancer new]; - codeVC.delegate = self; - [self.navigationController pushViewController:codeVC animated:YES]; -} - -- (void)concludeAreaCryptogramAccomplishment:(NSString *)code { - if (code.length > 0) { - self.phoneAreaCode = code; - [self.mobileIntrojectionRegard.areaCryptogramBtuton setTitle:[NSString stringWithFormat:@"+%@", code] forState:UIControlStateNormal]; - } -} - -#pragma mark - SurmountForgetCiphercodeCeremony - -- (void)mobileSmsCryptogramAccomplishment { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Forget_Pwd_View_Controller_1")]; - [self.cryptogramIntrojectionRegard fireIntrtowardsemper]; -} - -- (void)replacementPasswrodAccomplishment { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Forget_Pwd_View_Controller_2")]; - [self.navigationController popViewControllerAnimated:YES]; - -} - -#pragma mark - 懒加载 - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Forget_Pwd_View_Controller_3"); - _titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; - _titleLabel.textColor = UIColor.whiteColor; - } - return _titleLabel; -} - -- (YUMISurmountIntrojectionRegard *)mobileIntrojectionRegard { - if (!_mobileIntrojectionRegard) { - _mobileIntrojectionRegard = [[YUMISurmountIntrojectionRegard alloc] init]; - _mobileIntrojectionRegard.areaHierarchyRegard.hidden = NO; - _mobileIntrojectionRegard.delegate = self; - NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"YUMI_Forget_Pwd_View_Controller_4")]; - [placeholder addAttribute:NSForegroundColorAttributeName value:UIColor.whiteColor range:NSMakeRange(0, placeholder.length)]; - _mobileIntrojectionRegard.introjectionEssayUniverse.attributedPlaceholder = placeholder; - _mobileIntrojectionRegard.introjectionEssayUniverse.keyboardType = UIKeyboardTypeNumberPad; - } - return _mobileIntrojectionRegard; -} - -- (YUMISurmountIntrojectionRegard *)cryptogramIntrojectionRegard { - if (!_cryptogramIntrojectionRegard) { - _cryptogramIntrojectionRegard = [[YUMISurmountIntrojectionRegard alloc] init]; - _cryptogramIntrojectionRegard.smsCryptogramBtuton.hidden = NO; - NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"YUMI_Forget_Pwd_View_Controller_5")]; - [placeholder addAttribute:NSForegroundColorAttributeName value:UIColor.whiteColor range:NSMakeRange(0, placeholder.length)]; - _cryptogramIntrojectionRegard.introjectionEssayUniverse.attributedPlaceholder = placeholder; - _cryptogramIntrojectionRegard.introjectionEssayUniverse.keyboardType = UIKeyboardTypeNumberPad; - _cryptogramIntrojectionRegard.delegate = self; - } - return _cryptogramIntrojectionRegard; -} - -- (YUMISurmountIntrojectionRegard *)pwordIntrojectionRegard { - if (!_pwordIntrojectionRegard) { - _pwordIntrojectionRegard = [[YUMISurmountIntrojectionRegard alloc] init]; - NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc] initWithString:@"请输入密码(6-16个字符)"]; - [placeholder addAttribute:NSForegroundColorAttributeName value:UIColor.whiteColor range:NSMakeRange(0, placeholder.length)]; - _pwordIntrojectionRegard.introjectionEssayUniverse.attributedPlaceholder = placeholder; - _pwordIntrojectionRegard.introjectionEssayUniverse.keyboardType = UIKeyboardTypeAlphabet; - _pwordIntrojectionRegard.introjectionEssayUniverse.secureTextEntry = YES; - } - return _pwordIntrojectionRegard; -} - -- (UIButton *)sureBtuton { - if (!_sureBtuton) { - _sureBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_sureBtuton setImage:[UIImage imageNamed:@"yumi_login_next"] forState:UIControlStateNormal]; - [_sureBtuton setImage:[UIImage imageNamed:@"yumi_login_next_disable"] forState:UIControlStateSelected]; - [_sureBtuton addTarget:self action:@selector(sureBtutonTicktacked) forControlEvents:UIControlEventTouchUpInside]; - } - return _sureBtuton; -} - -@end diff --git a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountAraeRegardGovernancer.h b/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountAraeRegardGovernancer.h deleted file mode 100644 index 22dedb2c..00000000 --- a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountAraeRegardGovernancer.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YUMISurmountAraeRegardGovernancer.h -// YuMi -// -// Created by YuMi on 2023/6/25. -// - -#import "BaseRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN -@protocol FBCSurmountAraeRegardGovernancerRepresendtation - --(void)concludeAreaCryptogramAccomplishment:(NSString *)code; - -@end -@interface YUMISurmountAraeRegardGovernancer : BaseRegardGovernancer -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountAraeRegardGovernancer.m b/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountAraeRegardGovernancer.m deleted file mode 100644 index c6b42021..00000000 --- a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountAraeRegardGovernancer.m +++ /dev/null @@ -1,150 +0,0 @@ -// -// YUMISurmountAraeRegardGovernancer.m -// YuMi -// -// Created by YuMi on 2023/6/25. -// - -#import "YUMISurmountAraeRegardGovernancer.h" -#import "YUMISurmountAreaTabulationRegardElement.h" -#import "SurmountAreaMatrix.h" -#import "NSObject+MJExtension.h" -#import "YUMIMacroUitls.h" -#import "Api+Login.h" -#import -@interface YUMISurmountAraeRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *listData; -@property (nonatomic,strong) NSMutableArray *championStatement; -@end - -@implementation YUMISurmountAraeRegardGovernancer - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - [Api acquireMobileAreaCryptogramSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSArray *list = [SurmountAreaMatrix mtowardsrixsAboutGarment:data.data]; - [self.championStatement removeAllObjects]; - [self.listData removeAllObjects]; - [self acquireProvincialPlistAboutSttowardsement:list]; - } - }]; -} -#pragma mark - SurmountVerifCodeCeremony - --(void)acquireMobileAreaCryptogramSttowardsementAccomplishment:(NSArray *)list{ - [self brakeHUD]; - [self.championStatement removeAllObjects]; - [self.listData removeAllObjects]; - [self acquireProvincialPlistAboutSttowardsement:list]; -} --(void)acquireMobileAreaCryptogramSttowardsementFlunk{ - [self brakeHUD]; - NSBundle *bundle = [NSBundle mainBundle]; - NSString *file = [bundle pathForResource:@"district" ofType:@"plist"]; - NSArray *dictArray = [NSArray arrayWithContentsOfFile:file]; - - NSArray *list = [SurmountAreaMatrix mtowardsrixsAboutGarment:dictArray]; - [self acquireProvincialPlistAboutSttowardsement:list]; -} --(void)acquireProvincialPlistAboutSttowardsement:(NSArray *)list{ - - NSArray * letterList = @[@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",@"J",@"K",@"L",@"M",@"N",@"O",@"P",@"Q",@"R",@"S",@"T",@"U",@"V",@"W",@"X",@"Y",@"Z"]; - NSMutableArray *otherList = [NSMutableArray array]; - for (NSString *letter in letterList) { - NSMutableArray *matrixStatement = [NSMutableArray array]; - for (SurmountAreaMatrix *model in list) { - NSString *fristLetter = [model.name substringWithRange:NSMakeRange(0, 1)]; - if([letter isEqualToString:fristLetter]){ - [matrixStatement addObject:model]; - }else{ - if(![letterList containsObject:fristLetter] && ![otherList containsObject:model]){ - [otherList addObject:model]; - } - } - } - if(matrixStatement.count > 0){ - - [self.championStatement addObject:letter]; - [self.listData addObject:matrixStatement]; - } - } - [self.listData addObject:otherList]; - [self.championStatement addObject:@"#"]; - [self.tableView reloadData]; -} -#pragma mark - UITableViewDelegate -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ - return self.listData.count; -} -- (nullable NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{ - - return self.championStatement[section]; -} --(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ - return [self.listData[section] count]; -} - -- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView { - return self.championStatement; -} - --(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ - YUMISurmountAreaTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMISurmountAreaTabulationRegardElement class]) forIndexPath:indexPath]; - if(indexPath.section < self.listData.count){ - NSArray *listMatrix = self.listData[indexPath.section]; - if(indexPath.row < listMatrix.count){ - cell.areaMatrix =listMatrix[indexPath.row]; - } - } - return cell; -} --(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ - SurmountAreaMatrix *codeModel = self.listData[indexPath.section][indexPath.row]; - if(self.delegate && [self.delegate respondsToSelector:@selector(concludeAreaCryptogramAccomplishment:)]){ - - [self.delegate concludeAreaCryptogramAccomplishment:codeModel.phoneAreaCode ?: codeModel.phone_area_code]; - } - [self.navigationController popViewControllerAnimated:YES]; -} -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Choose_Rrea_Code_VC_0"); - [self.view addSubview:self.tableView]; -} -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.view); - }]; -} -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.rowHeight = kGetScaleWidth(37); - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;; - _tableView.backgroundColor = [UIColor whiteColor]; - [_tableView registerClass:[YUMISurmountAreaTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMISurmountAreaTabulationRegardElement class])]; - } - return _tableView; -} -- (NSMutableArray *)championStatement{ - if (!_championStatement){ - _championStatement = [NSMutableArray array]; - } - return _championStatement; -} -- (NSMutableArray *)listData{ - if (!_listData){ - _listData = [NSMutableArray array]; - } - return _listData; -} - - -@end diff --git a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountAreaTabulationRegardElement.h b/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountAreaTabulationRegardElement.h deleted file mode 100644 index b47959b9..00000000 --- a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountAreaTabulationRegardElement.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YUMISurmountAreaTabulationRegardElement.h -// YuMi -// -// Created by YuMi on 2023/6/25. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class SurmountAreaMatrix; -@interface YUMISurmountAreaTabulationRegardElement : UITableViewCell - -@property (nonatomic,strong) SurmountAreaMatrix *areaMatrix; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountAreaTabulationRegardElement.m b/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountAreaTabulationRegardElement.m deleted file mode 100644 index df65c862..00000000 --- a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountAreaTabulationRegardElement.m +++ /dev/null @@ -1,72 +0,0 @@ -// -// YUMISurmountAreaTabulationRegardElement.m -// YuMi -// -// Created by YuMi on 2023/6/25. -// - -#import "YUMISurmountAreaTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "SurmountAreaMatrix.h" -@interface YUMISurmountAreaTabulationRegardElement() -@property (nonatomic,strong) UILabel *spectrumVeiw; -@property (nonatomic,strong) UILabel *cryptogramRegard; -@end -@implementation YUMISurmountAreaTabulationRegardElement -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor whiteColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.spectrumVeiw]; - [self.contentView addSubview:self.cryptogramRegard]; -} -- (void)initChildLyRestrictions { - [self.spectrumVeiw mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(15)); - make.centerY.equalTo(self.contentView); - }]; - [self.cryptogramRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-kGetScaleWidth(15)); - make.centerY.equalTo(self.contentView); - }]; -} -- (void)setAreaMatrix:(SurmountAreaMatrix *)areaMatrix{ - _areaMatrix = areaMatrix; - _spectrumVeiw.text = _areaMatrix.name; - if(_areaMatrix.phoneAreaCode == nil){ - _cryptogramRegard.text = _areaMatrix.phone_area_code; - return; - } - _cryptogramRegard.text = _areaMatrix.phoneAreaCode; -} -#pragma mark - 懒加载 - -- (UILabel *)spectrumVeiw { - if (!_spectrumVeiw) { - _spectrumVeiw = [[UILabel alloc] init]; - _spectrumVeiw.font = [UIFont systemFontOfSize:14]; - _spectrumVeiw.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#1F1A4E"]; - } - return _spectrumVeiw; -} - - -- (UILabel *)cryptogramRegard { - if (!_cryptogramRegard) { - _cryptogramRegard = [[UILabel alloc] init]; - _cryptogramRegard.font = [UIFont systemFontOfSize:14]; - _cryptogramRegard.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#1F1A4E"]; - } - return _cryptogramRegard; -} - -@end diff --git a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountBaseRegardGovernancer.h b/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountBaseRegardGovernancer.h deleted file mode 100644 index a958613b..00000000 --- a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountBaseRegardGovernancer.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMLoginBaseViewController.h -// YUMI -// -// Created by XY on 2023/2/14. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISurmountBaseRegardGovernancer : MvpRegardGovernancer - -@property (nonatomic, assign) BOOL demandsImpression; -@property (nonatomic, assign) BOOL demandsEncourage; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountBaseRegardGovernancer.m b/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountBaseRegardGovernancer.m deleted file mode 100644 index 09b7e0de..00000000 --- a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountBaseRegardGovernancer.m +++ /dev/null @@ -1,117 +0,0 @@ -// -// YMLoginBaseViewController.m -// YUMI -// -// Created by XY on 2023/2/14. -// - -#import "YUMISurmountBaseRegardGovernancer.h" -#import -#import -#import "YUMIMacroUitls.h" -#import "YUMIChamberPresentBrightnessAnatomiser.h" -@interface YUMISurmountBaseRegardGovernancer () - -@property (nonatomic, strong) VAPView *vapView; -@property (nonatomic, strong) UIToolbar *utensilObstacle; -@property (nonatomic, strong) UIButton *encourageBtuton; -@property (nonatomic, strong) YUMIChamberPresentBrightnessAnatomiser *vepporAnatomiser; -@end - -@implementation YUMISurmountBaseRegardGovernancer - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (UIStatusBarStyle)preferredStatusBarStyle { - return UIStatusBarStyleLightContent; -} - - -- (void)viewDidLoad { - [super viewDidLoad]; - [self produceBaseUI]; - [self prohibitiportVAP]; -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - [self.vapView resumeHWDMP4]; -} - -- (void)viewDidDisappear:(BOOL)animated { - [super viewDidDisappear:animated]; - [self.vapView pauseHWDMP4]; -} - -- (void)produceBaseUI { - [self.view addSubview:self.vapView]; - if (self.demandsImpression) { - [self.view addSubview:self.utensilObstacle]; - } - if (self.demandsEncourage) { - [self.view addSubview:self.encourageBtuton]; - [self.encourageBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kStatusBarHeight); - make.left.mas_equalTo(0); - make.width.mas_equalTo(44); - make.height.mas_equalTo(44); - }]; - } -} - -- (void)prohibitiportVAP { - NSString *filePath = [[NSBundle mainBundle] pathForResource:@"login_vapbg" ofType:@"mp4"]; - [self.vapView setMute:YES]; - [self.vapView playHWDMP4:filePath repeatCount:1 delegate:self]; -} - -- (void)encourageBtutonTicktacked { - [self.navigationController popViewControllerAnimated:YES]; -} - - -#pragma mark - 懒加载 - -- (VAPView *)vapView { - if (!_vapView) { - _vapView = [[VAPView alloc] initWithFrame:self.view.bounds]; - _vapView.contentMode = UIViewContentModeScaleAspectFill; - _vapView.hwd_enterBackgroundOP = HWDMP4EBOperationTypeDoNothing; - } - return _vapView; -} - -- (UIToolbar *)utensilObstacle { - if (!_utensilObstacle) { - _utensilObstacle = [[UIToolbar alloc] initWithFrame:self.view.bounds]; - _utensilObstacle.barStyle = UIBarStyleBlack; - _utensilObstacle.alpha = 0.92; - } - return _utensilObstacle; -} - -- (UIButton *)encourageBtuton { - if (!_encourageBtuton) { - _encourageBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_encourageBtuton setImage:[UIImage imageNamed:@"yumi_main_search_white_back"] forState:UIControlStateNormal]; - [_encourageBtuton addTarget:self action:@selector(encourageBtutonTicktacked) forControlEvents:UIControlEventTouchUpInside]; - } - return _encourageBtuton; -} - -- (void)dealloc { - [self.vapView stopHWDMP4]; - self.vapView = nil; - NSLog(@"%s",__func__); -} - -- (YUMIChamberPresentBrightnessAnatomiser *)vepporAnatomiser { - if (!_vepporAnatomiser) { - _vepporAnatomiser = [[YUMIChamberPresentBrightnessAnatomiser alloc] init]; - } - return _vepporAnatomiser; -} - -@end diff --git a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountIntrojectionRegard.h b/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountIntrojectionRegard.h deleted file mode 100644 index 623c59ad..00000000 --- a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountIntrojectionRegard.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// YMLoginInputView.h -// YUMI -// -// Created by XY on 2023/2/14. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCSurmountIntrojectionRegardRepresendtation - -- (void)smsCryptogramPerformance; - -- (void)areaSttowardsementPerformance; - -@end - -@interface YUMISurmountIntrojectionRegard : UIView -@property (nonatomic,strong) UIStackView *areaHierarchyRegard; -@property (nonatomic, strong) UIButton *areaCryptogramBtuton; -@property (nonatomic, strong) UITextField *introjectionEssayUniverse; -@property (nonatomic, strong) UIButton *smsCryptogramBtuton; - -@property (nonatomic, weak) id delegate; - -- (void)fireIntrtowardsemper; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountIntrojectionRegard.m b/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountIntrojectionRegard.m deleted file mode 100644 index 6f2778c8..00000000 --- a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountIntrojectionRegard.m +++ /dev/null @@ -1,160 +0,0 @@ -// -// YMLoginInputView.m -// YUMI -// -// Created by XY on 2023/2/14. -// - -#import "YUMISurmountIntrojectionRegard.h" -#import "DJDKMIMOMColor.h" -#import -#import - -@interface YUMISurmountIntrojectionRegard() - -@property (nonatomic, strong) dispatch_source_t timer; - -@property (nonatomic,strong) UIImageView *areaIndicateRegard; -@end - -@implementation YUMISurmountIntrojectionRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - self.backgroundColor = UIColor.clearColor; - self.layer.cornerRadius = 66.0/2.0; - self.layer.borderWidth = 1; - self.layer.borderColor = [UIColor.whiteColor colorWithAlphaComponent:0.2].CGColor; - - [self produceUI]; - } - return self; -} - -- (void)produceUI { - UIStackView *stackView = [[UIStackView alloc] init]; - stackView.axis = UILayoutConstraintAxisHorizontal; - stackView.distribution = UIStackViewDistributionFill; - stackView.alignment = UIStackViewAlignmentCenter; - stackView.spacing = 5; - [self addSubview:stackView]; - - - UIImageView * areaIndicateRegard = [[UIImageView alloc] init]; - areaIndicateRegard.userInteractionEnabled = YES; - areaIndicateRegard.image = [UIImage imageNamed:@"yumi_login_area_arrow"]; - areaIndicateRegard.userInteractionEnabled = NO; - - - UIButton *areaCryptogramBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [areaCryptogramBtuton setTitle:@"+852" forState:UIControlStateNormal]; - [areaCryptogramBtuton setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; - areaCryptogramBtuton.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightRegular]; - _areaCryptogramBtuton = areaCryptogramBtuton; - areaCryptogramBtuton.userInteractionEnabled = NO; - - UIStackView *areaHierarchyRegard = [[UIStackView alloc] init]; - areaHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - areaHierarchyRegard.distribution = UIStackViewDistributionFill; - areaHierarchyRegard.alignment = UIStackViewAlignmentCenter; - areaHierarchyRegard.spacing = 2; - - - UIButton *areaBtn = [UIButton buttonWithType:UIButtonTypeCustom]; - [areaBtn addTarget:self action:@selector(areaConcludeTicktacked) forControlEvents:UIControlEventTouchUpInside]; - [areaHierarchyRegard addSubview:areaBtn]; - - [areaHierarchyRegard addArrangedSubview:areaCryptogramBtuton]; - [areaHierarchyRegard addArrangedSubview:areaIndicateRegard]; - - [stackView addArrangedSubview:areaHierarchyRegard]; - self.areaHierarchyRegard = areaHierarchyRegard; - - - - UITextField *introjectionEssayUniverse = [[UITextField alloc] init]; - introjectionEssayUniverse.textColor = UIColor.whiteColor; - introjectionEssayUniverse.font = [UIFont systemFontOfSize:18 weight:UIFontWeightRegular]; - [stackView addArrangedSubview:introjectionEssayUniverse]; - self.introjectionEssayUniverse = introjectionEssayUniverse; - - UIButton *smsCryptogramBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [smsCryptogramBtuton setTitle:YMLocalizedString(@"XPLoginInputView0") forState:UIControlStateNormal]; - [smsCryptogramBtuton setTitleColor:UIColorFromRGB(0xFB486A) forState:UIControlStateNormal]; - smsCryptogramBtuton.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; - [smsCryptogramBtuton addTarget:self action:@selector(smsCryptogramBtutonTicktacked) forControlEvents:UIControlEventTouchUpInside]; - [stackView addArrangedSubview:smsCryptogramBtuton]; - self.smsCryptogramBtuton = smsCryptogramBtuton; - - [stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(15); - make.right.mas_equalTo(-15); - make.top.bottom.mas_equalTo(0); - }]; - - - [areaIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(18); - make.height.mas_equalTo(18); - }]; - - [areaCryptogramBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(50); - make.height.mas_equalTo(stackView); - }]; - [introjectionEssayUniverse mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(stackView); - }]; - [smsCryptogramBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(80); - make.height.mas_equalTo(stackView); - }]; - - [areaBtn mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(areaHierarchyRegard); - }]; - - - self.areaHierarchyRegard.hidden = YES; - self.smsCryptogramBtuton.hidden = YES; - -} - - -- (void)smsCryptogramBtutonTicktacked { - if (self.delegate && [self.delegate respondsToSelector:@selector(smsCryptogramPerformance)]) { - [self.delegate smsCryptogramPerformance]; - } -} - -- (void)areaConcludeTicktacked { - if (self.delegate && [self.delegate respondsToSelector:@selector(areaSttowardsementPerformance)]) { - [self.delegate areaSttowardsementPerformance]; - } -} - - -- (void)fireIntrtowardsemper { - __block NSInteger count = 60; - dispatch_queue_t queue = dispatch_get_main_queue(); - dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); - dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC, 0 * NSEC_PER_SEC); - @weakify(self); - dispatch_source_set_event_handler(timer, ^{ - @strongify(self); - count--; - if (count < 0) { - [self.smsCryptogramBtuton setTitle:YMLocalizedString(@"XPLoginInputView1") forState:UIControlStateNormal]; - self.smsCryptogramBtuton.userInteractionEnabled = YES; - dispatch_cancel(self.timer); - }else{ - [self.smsCryptogramBtuton setTitle:[NSString stringWithFormat:@"%lds",count] forState:UIControlStateNormal]; - self.smsCryptogramBtuton.userInteractionEnabled = NO; - } - }); - dispatch_resume(timer); - self.timer = timer; -} - -@end diff --git a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountMobileRegardGovernancer.h b/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountMobileRegardGovernancer.h deleted file mode 100644 index 7af7da2d..00000000 --- a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountMobileRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMLoginPhoneViewController.h -// YUMI -// -// Created by XY on 2023/2/13. -// - -#import "YUMISurmountBaseRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISurmountMobileRegardGovernancer : YUMISurmountBaseRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountMobileRegardGovernancer.m b/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountMobileRegardGovernancer.m deleted file mode 100644 index 88ad0e36..00000000 --- a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountMobileRegardGovernancer.m +++ /dev/null @@ -1,221 +0,0 @@ -// -// YMLoginPhoneViewController.m -// YUMI -// -// Created by XY on 2023/2/13. -// - -#import "YUMISurmountMobileRegardGovernancer.h" -#import -#import "YUMIMacroUitls.h" -#import - -#import "YUMISurmountIntrojectionRegard.h" - -#import "YUMISurmountPwordRegardGovernancer.h" -#import "YUMISurmountAraeRegardGovernancer.h" -#import "SurmountValidationCodeExternalize.h" -#import "SurmountVerifCodeCeremony.h" - -@interface YUMISurmountMobileRegardGovernancer () - -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UILabel *sequencpSequencignation; -@property (nonatomic, strong) YUMISurmountIntrojectionRegard *mobileIntrojectionRegard; -@property (nonatomic, strong) YUMISurmountIntrojectionRegard *cryptogramIntrojectionRegard; -@property (nonatomic, strong) UIButton *surmountBtuton; -@property (nonatomic, strong) UIButton *pwordSurmountBtuton; -@property (nonatomic,copy) NSString *phoneAreaCode; -@end - -@implementation YUMISurmountMobileRegardGovernancer - -- (SurmountValidationCodeExternalize *)producePresimport { - return [[SurmountValidationCodeExternalize alloc] init]; -} - - -- (void)viewDidLoad { - self.demandsImpression = YES; - self.demandsEncourage = YES; - self.phoneAreaCode = @"852"; - [super viewDidLoad]; - [self produceUI]; - [self racBind]; -} - -- (void)produceUI { - - [self.view addSubview:self.titleLabel]; - [self.view addSubview:self.sequencpSequencignation]; - [self.view addSubview:self.mobileIntrojectionRegard]; - [self.view addSubview:self.cryptogramIntrojectionRegard]; - [self.view addSubview:self.surmountBtuton]; - [self.view addSubview:self.pwordSurmountBtuton]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.view); - make.top.mas_equalTo(146.0/812.0*KScreenHeight); - }]; - [self.sequencpSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.view); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(4); - }]; - [self.mobileIntrojectionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(38); - make.right.mas_equalTo(-38); - make.top.mas_equalTo(self.sequencpSequencignation.mas_bottom).offset(23); - make.height.mas_equalTo(66); - }]; - [self.cryptogramIntrojectionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.mobileIntrojectionRegard); - make.right.mas_equalTo(self.mobileIntrojectionRegard); - make.top.mas_equalTo(self.mobileIntrojectionRegard.mas_bottom).offset(16); - make.height.mas_equalTo(self.mobileIntrojectionRegard); - }]; - [self.surmountBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.cryptogramIntrojectionRegard.mas_bottom).offset(51); - make.centerX.mas_equalTo(self.view); - make.width.height.mas_equalTo(96); - }]; - [self.pwordSurmountBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.surmountBtuton.mas_bottom).offset(24); - make.centerX.mas_equalTo(self.view); - }]; - -} - -- (void)racBind { - RAC(self.surmountBtuton, enabled) = [[RACSignal combineLatest:@[self.mobileIntrojectionRegard.introjectionEssayUniverse.rac_textSignal, self.cryptogramIntrojectionRegard.introjectionEssayUniverse.rac_textSignal] reduce:^id _Nonnull(NSString *phone, NSString* smsCode){ - return @((phone.length == 11) && smsCode.length >= 5); - }] takeUntil:self.rac_willDeallocSignal]; -} - - -- (void)surmountBtutonTicktacked { - NSString *phone = self.mobileIntrojectionRegard.introjectionEssayUniverse.text; - NSString *smsCode = self.cryptogramIntrojectionRegard.introjectionEssayUniverse.text; - NSString * phoneStr = [NSString stringWithFormat:@"%@%@",self.phoneAreaCode, phone]; - [self.presimport surmountAboutMobile:phoneStr code:smsCode phoneAreaCode:self.phoneAreaCode]; -} - -- (void)pwdSurmountBtutonTicktacked { - YUMISurmountPwordRegardGovernancer *pwdVC = [[YUMISurmountPwordRegardGovernancer alloc] init]; - [self.navigationController pushViewController:pwdVC animated:YES]; -} - -#pragma mark - FBCSurmountIntrojectionRegardRepresendtation - -- (void)smsCryptogramPerformance { - NSString *phone = self.mobileIntrojectionRegard.introjectionEssayUniverse.text; - if (phone.length != 11 ) { - [self EvidenceMistakeToast:YMLocalizedString(@"XPLoginPhoneViewController0")]; - return; - } - [self.presimport mobileSmsCryptogram:phone type:GetSmsGenre_Regist phoneAreaCode:self.phoneAreaCode]; -} - -- (void)areaSttowardsementPerformance { - YUMISurmountAraeRegardGovernancer *codeVC = [YUMISurmountAraeRegardGovernancer new]; - codeVC.delegate = self; - [self.navigationController pushViewController:codeVC animated:YES]; -} - -- (void)concludeAreaCryptogramAccomplishment:(NSString *)code { - if (code.length > 0) { - self.phoneAreaCode = code; - [self.mobileIntrojectionRegard.areaCryptogramBtuton setTitle:[NSString stringWithFormat:@"+%@", code] forState:UIControlStateNormal]; - } -} - -#pragma mark - SurmountVerifCodeCeremony -- (void)surmountAccomplishment { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"XPLoginPhoneViewController1")]; - UIViewController *vc = self.presentingViewController; - while (vc.presentingViewController) { - vc = vc.presentingViewController; - } - [vc dismissViewControllerAnimated:YES completion:nil]; - [self.navigationController popToRootViewControllerAnimated:NO]; -} - - - -#pragma mark - SurmountCeremony -- (void)mobileSmsCryptogramAccomplishment { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"XPLoginPhoneViewController2")]; - [self.cryptogramIntrojectionRegard fireIntrtowardsemper]; -} - -#pragma mark - 懒加载 - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"XPLoginPhoneViewController3"); - _titleLabel.font = [UIFont systemFontOfSize:24 weight:UIFontWeightMedium]; - _titleLabel.textColor = UIColor.whiteColor; - } - return _titleLabel; -} - -- (UILabel *)sequencpSequencignation { - if (!_sequencpSequencignation) { - _sequencpSequencignation = [[UILabel alloc] init]; - _sequencpSequencignation.text = YMLocalizedString(@"XPLoginPhoneViewController4"); - _sequencpSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightRegular]; - _sequencpSequencignation.textColor = [UIColor.whiteColor colorWithAlphaComponent:0.6]; - } - return _sequencpSequencignation; -} - -- (YUMISurmountIntrojectionRegard *)mobileIntrojectionRegard { - if (!_mobileIntrojectionRegard) { - _mobileIntrojectionRegard = [[YUMISurmountIntrojectionRegard alloc] init]; - _mobileIntrojectionRegard.areaHierarchyRegard.hidden = NO; - _mobileIntrojectionRegard.delegate = self; - NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginPhoneViewController5")]; - [placeholder addAttribute:NSForegroundColorAttributeName value:UIColor.whiteColor range:NSMakeRange(0, placeholder.length)]; - _mobileIntrojectionRegard.introjectionEssayUniverse.attributedPlaceholder = placeholder; - _mobileIntrojectionRegard.introjectionEssayUniverse.keyboardType = UIKeyboardTypeNumberPad; - } - return _mobileIntrojectionRegard; -} - -- (YUMISurmountIntrojectionRegard *)cryptogramIntrojectionRegard { - if (!_cryptogramIntrojectionRegard) { - _cryptogramIntrojectionRegard = [[YUMISurmountIntrojectionRegard alloc] init]; - _cryptogramIntrojectionRegard.smsCryptogramBtuton.hidden = NO; - NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginPhoneViewController6")]; - [placeholder addAttribute:NSForegroundColorAttributeName value:UIColor.whiteColor range:NSMakeRange(0, placeholder.length)]; - _cryptogramIntrojectionRegard.introjectionEssayUniverse.attributedPlaceholder = placeholder; - _cryptogramIntrojectionRegard.introjectionEssayUniverse.keyboardType = UIKeyboardTypeNumberPad; - _cryptogramIntrojectionRegard.delegate = self; - } - return _cryptogramIntrojectionRegard; -} - -- (UIButton *)surmountBtuton { - if (!_surmountBtuton) { - _surmountBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_surmountBtuton setImage:[UIImage imageNamed:@"yumi_login_next"] forState:UIControlStateNormal]; - [_surmountBtuton setImage:[UIImage imageNamed:@"yumi_login_next_disable"] forState:UIControlStateDisabled]; - [_surmountBtuton addTarget:self action:@selector(surmountBtutonTicktacked) forControlEvents:UIControlEventTouchUpInside]; - } - return _surmountBtuton; -} - -- (UIButton *)pwordSurmountBtuton { - if (!_pwordSurmountBtuton) { - _pwordSurmountBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - NSMutableAttributedString *title = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginPhoneViewController7")]; - [title addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:NSMakeRange(0, title.length)]; - [_pwordSurmountBtuton setAttributedTitle:title forState:UIControlStateNormal]; - [_pwordSurmountBtuton setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; - _pwordSurmountBtuton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightRegular]; - [_pwordSurmountBtuton addTarget:self action:@selector(pwdSurmountBtutonTicktacked) forControlEvents:UIControlEventTouchUpInside]; - } - return _pwordSurmountBtuton; -} - -@end diff --git a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountPwordRegardGovernancer.h b/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountPwordRegardGovernancer.h deleted file mode 100644 index ad22fa46..00000000 --- a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountPwordRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMLoginPwdViewController.h -// YUMI -// -// Created by XY on 2023/2/14. -// - -#import "YUMISurmountBaseRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISurmountPwordRegardGovernancer : YUMISurmountBaseRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountPwordRegardGovernancer.m b/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountPwordRegardGovernancer.m deleted file mode 100644 index ce2c8880..00000000 --- a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountPwordRegardGovernancer.m +++ /dev/null @@ -1,187 +0,0 @@ -// -// YMLoginPwdViewController.m -// YUMI -// -// Created by XY on 2023/2/14. -// - -#import "YUMISurmountPwordRegardGovernancer.h" -#import -#import "YUMIMacroUitls.h" -#import - -#import "YUMISurmountIntrojectionRegard.h" -#import "YUMISurmountPwordRegardGovernancer.h" -#import "YUMIForgetPwordRegardGovernancer.h" - -#import "SurmountCiphercodeExternalize.h" -#import "SurmountCiphercodeCeremony.h" - -@interface YUMISurmountPwordRegardGovernancer () - -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) YUMISurmountIntrojectionRegard *mobileIntrojectionRegard; -@property (nonatomic, strong) YUMISurmountIntrojectionRegard *pwordIntrojectionRegard; -@property (nonatomic, strong) UIButton *surmountBtuton; -@property (nonatomic, strong) UIButton *mobileSurmountBtuton; -@property (nonatomic, strong) UIButton *forgetBtuton; - -@end - -@implementation YUMISurmountPwordRegardGovernancer - -- (SurmountCiphercodeExternalize *)producePresimport { - return [[SurmountCiphercodeExternalize alloc] init]; -} - -- (void)viewDidLoad { - self.demandsImpression = YES; - self.demandsEncourage = YES; - [super viewDidLoad]; - [self produceUI]; - [self racBind]; -} - -- (void)produceUI { - [self.view addSubview:self.titleLabel]; - [self.view addSubview:self.mobileIntrojectionRegard]; - [self.view addSubview:self.pwordIntrojectionRegard]; - [self.view addSubview:self.surmountBtuton]; - [self.view addSubview:self.mobileSurmountBtuton]; - [self.view addSubview:self.forgetBtuton]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.view); - make.top.mas_equalTo(146.0/812.0*KScreenHeight); - }]; - [self.mobileIntrojectionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(38); - make.right.mas_equalTo(-38); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(41); - make.height.mas_equalTo(66); - }]; - [self.pwordIntrojectionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.mobileIntrojectionRegard); - make.right.mas_equalTo(self.mobileIntrojectionRegard); - make.top.mas_equalTo(self.mobileIntrojectionRegard.mas_bottom).offset(16); - make.height.mas_equalTo(self.mobileIntrojectionRegard); - }]; - [self.surmountBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.pwordIntrojectionRegard.mas_bottom).offset(51); - make.centerX.mas_equalTo(self.view); - make.width.height.mas_equalTo(96); - }]; - [self.mobileSurmountBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.surmountBtuton.mas_bottom).offset(24); - make.centerX.mas_equalTo(self.view); - }]; - [self.forgetBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.pwordIntrojectionRegard); - make.top.mas_equalTo(self.pwordIntrojectionRegard.mas_bottom).offset(10); - }]; - -} - -- (void)racBind { - RAC(self.surmountBtuton, enabled) = [[RACSignal combineLatest:@[self.mobileIntrojectionRegard.introjectionEssayUniverse.rac_textSignal, self.pwordIntrojectionRegard.introjectionEssayUniverse.rac_textSignal] reduce:^id _Nonnull(NSString *phone, NSString* password){ - return @((phone.length ==11 || phone.length == 7) && password.length >= 6); - }] takeUntil:self.rac_willDeallocSignal]; -} - -- (void)surmountBtutonTicktacked { - NSString *phone = self.mobileIntrojectionRegard.introjectionEssayUniverse.text; - NSString *password = self.pwordIntrojectionRegard.introjectionEssayUniverse.text; - [self.presimport surmountAboutMobile:phone password:password]; -} - -- (void)mobileSurmountBtutonTicktacked { - [self.navigationController popViewControllerAnimated:YES]; -} - -- (void)SpongeoutBtutonTicktacked { - YUMIForgetPwordRegardGovernancer *forgetVC = [[YUMIForgetPwordRegardGovernancer alloc] init]; - [self.navigationController pushViewController:forgetVC animated:YES]; -} - -#pragma mark - SurmountCiphercodeCeremony -- (void)mobileGrantedCiphercryptogramSurmountAccomplishment { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"XPLoginPwdViewController0")]; - UIViewController *vc = self.presentingViewController; - while (vc.presentingViewController) { - vc = vc.presentingViewController; - } - [vc dismissViewControllerAnimated:YES completion:nil]; - [self.navigationController popToRootViewControllerAnimated:NO]; -} - -#pragma mark - 懒加载 - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"XPLoginPwdViewController1"); - _titleLabel.font = [UIFont systemFontOfSize:24 weight:UIFontWeightMedium]; - _titleLabel.textColor = UIColor.whiteColor; - } - return _titleLabel; -} - -- (YUMISurmountIntrojectionRegard *)mobileIntrojectionRegard { - if (!_mobileIntrojectionRegard) { - _mobileIntrojectionRegard = [[YUMISurmountIntrojectionRegard alloc] init]; - _mobileIntrojectionRegard.areaHierarchyRegard.hidden = YES; - NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginPwdViewController2")]; - [placeholder addAttribute:NSForegroundColorAttributeName value:UIColor.whiteColor range:NSMakeRange(0, placeholder.length)]; - _mobileIntrojectionRegard.introjectionEssayUniverse.attributedPlaceholder = placeholder; - _mobileIntrojectionRegard.introjectionEssayUniverse.keyboardType = UIKeyboardTypeNumberPad; - } - return _mobileIntrojectionRegard; -} - -- (YUMISurmountIntrojectionRegard *)pwordIntrojectionRegard { - if (!_pwordIntrojectionRegard) { - _pwordIntrojectionRegard = [[YUMISurmountIntrojectionRegard alloc] init]; - NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginPwdViewController3")]; - [placeholder addAttribute:NSForegroundColorAttributeName value:UIColor.whiteColor range:NSMakeRange(0, placeholder.length)]; - _pwordIntrojectionRegard.introjectionEssayUniverse.attributedPlaceholder = placeholder; - _pwordIntrojectionRegard.introjectionEssayUniverse.keyboardType = UIKeyboardTypeAlphabet; - _pwordIntrojectionRegard.introjectionEssayUniverse.secureTextEntry = YES; - } - return _pwordIntrojectionRegard; -} - -- (UIButton *)surmountBtuton { - if (!_surmountBtuton) { - _surmountBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_surmountBtuton setImage:[UIImage imageNamed:@"yumi_login_next"] forState:UIControlStateNormal]; - [_surmountBtuton setImage:[UIImage imageNamed:@"yumi_login_next_disable"] forState:UIControlStateDisabled]; - [_surmountBtuton addTarget:self action:@selector(surmountBtutonTicktacked) forControlEvents:UIControlEventTouchUpInside]; - } - return _surmountBtuton; -} - -- (UIButton *)mobileSurmountBtuton { - if (!_mobileSurmountBtuton) { - _mobileSurmountBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - NSMutableAttributedString *title = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginPwdViewController4")]; - [title addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:NSMakeRange(0, title.length)]; - [_mobileSurmountBtuton setAttributedTitle:title forState:UIControlStateNormal]; - [_mobileSurmountBtuton setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; - _mobileSurmountBtuton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightRegular]; - [_mobileSurmountBtuton addTarget:self action:@selector(mobileSurmountBtutonTicktacked) forControlEvents:UIControlEventTouchUpInside]; - } - return _mobileSurmountBtuton; -} - -- (UIButton *)forgetBtuton { - if (!_forgetBtuton) { - _forgetBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_forgetBtuton setTitle:@"忘记密码?" forState:UIControlStateNormal]; - [_forgetBtuton setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; - _forgetBtuton.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; - [_forgetBtuton addTarget:self action:@selector(SpongeoutBtutonTicktacked) forControlEvents:UIControlEventTouchUpInside]; - } - return _forgetBtuton; -} - -@end diff --git a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountRegardGovernancer.h b/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountRegardGovernancer.h deleted file mode 100644 index 0fec60cb..00000000 --- a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMLoginViewController.h -// YUMI -// -// Created by XY on 2023/2/13. -// - -#import "YUMISurmountBaseRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISurmountRegardGovernancer : YUMISurmountBaseRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountRegardGovernancer.m b/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountRegardGovernancer.m deleted file mode 100644 index c548ced4..00000000 --- a/YuMi/Modules/YMLogin/View/NewLogin/YUMISurmountRegardGovernancer.m +++ /dev/null @@ -1,370 +0,0 @@ -// -// YMLoginViewController.m -// YUMI -// -// Created by XY on 2023/2/13. -// - -#import "YUMISurmountRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "YUMIMacroUitls.h" -#import -#import "YUMIHtmlUrl.h" -#import "UIButton+EnlargeTouchArea.h" -#import -#import "YUMIConstant.h" -#import "GCDHelper.h" -#import "MKJPopup.h" -#import "StatsticsticsServingFacilitater.h" -#import "XNDJTBWGLoadingTool.h" -#import "YUMITissueRegardGovernancer.h" -#import "YUMISurmountMobileRegardGovernancer.h" -#import "ConsumerPrivacyRegard.h" -#import "AESUtils.h" -#import "SurmountExternalizer.h" -#import "SurmountCeremony.h" - -UIKIT_EXTERN NSString * const kYouMiNumberCountKey; -NSString * const HadAgreePrivacy = @"HadAgreePrivacy"; - -@interface YUMISurmountRegardGovernancer () - -@property (nonatomic, strong) UIButton *quickSurmountBtuton; -@property (nonatomic, strong) UIButton *agreeBtuton; -@property (nonatomic, strong) YYLabel *protocolSequencignation; -@property (nonatomic, strong) UILabel *separateSequencignation; -@property (nonatomic, strong) UIImageView *attestationIntumesceRegard; -@property (nonatomic, strong) UILabel *attestationIntumesceSequencignation; -@property (nonatomic, strong) UIStackView *stackView; -@property (nonatomic, strong) UIButton *fbBtutonRegard; -@property (nonatomic, strong) UIButton *googleBtutonRegard; -@property (nonatomic, strong) UIButton *burlywoodBtutonRegard; -#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000 -@property (nonatomic, strong) ASAuthorizationAppleIDButton *appleBtuton; -#endif -@property (nonatomic,strong) GIDConfiguration *configuration; -@end - -@implementation YUMISurmountRegardGovernancer - -- (SurmountExternalizer *)producePresimport { - return [[SurmountExternalizer alloc] init]; -} - -- (void)viewDidLoad { - self.demandsImpression = NO; - self.demandsEncourage = NO; - [super viewDidLoad]; - [self produceUI]; - -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - [self setDispositionPrivacyPrecautiousRegard]; -} - -- (void)produceUI { - [self.view addSubview:self.quickSurmountBtuton]; - [self.view addSubview:self.protocolSequencignation]; - [self.view addSubview:self.agreeBtuton]; - [self.view addSubview:self.separateSequencignation]; - [self.view addSubview:self.stackView]; - [self.view addSubview:self.attestationIntumesceRegard]; - [self.attestationIntumesceRegard addSubview:self.attestationIntumesceSequencignation]; - - [self.stackView addArrangedSubview:self.fbBtutonRegard]; - [self.stackView addArrangedSubview:self.googleBtutonRegard]; - [self.stackView addArrangedSubview:self.burlywoodBtutonRegard]; - [self.stackView addArrangedSubview:self.appleBtuton]; - - [self.quickSurmountBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(45); - make.right.mas_equalTo(-45); - make.height.mas_equalTo(66); - make.centerY.mas_equalTo(self.view); - }]; - [self.protocolSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.quickSurmountBtuton.mas_bottom).offset(56); - make.centerX.mas_equalTo(self.view).offset(10); - make.right.mas_lessThanOrEqualTo(-10); - make.height.mas_greaterThanOrEqualTo(22); - }]; - [self.agreeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.protocolSequencignation.mas_left).offset(0); - make.top.mas_equalTo(self.protocolSequencignation.mas_top); - make.width.height.mas_equalTo(22); - }]; - [self.separateSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.view); - make.bottom.mas_equalTo(-169); - }]; - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.separateSequencignation.mas_bottom).offset(27); - make.centerX.mas_equalTo(self.view); - make.height.mas_equalTo(40); - }]; - [self.attestationIntumesceRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.agreeBtuton).mas_offset((-16)); - make.top.mas_equalTo(self.agreeBtuton.mas_bottom); - make.width.mas_equalTo(235); - make.height.mas_equalTo(29); - }]; - [self.attestationIntumesceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(8); - make.bottom.mas_equalTo(self.attestationIntumesceRegard).mas_offset(-6); - }]; - - [self.fbBtutonRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(40); - }]; - -} - -- (void)setDispositionPrivacyPrecautiousRegard { - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - NSString *isExhibit = [defaults objectForKey:kYouMiNumberCountKey]; - - if (!isExhibit && isExhibit.length <= 0) { - ConsumerPrivacyRegard * alertView = [[ConsumerPrivacyRegard alloc] init]; - alertView.controller = self; - MKJPopupServing * config = [[MKJPopupServing alloc] init]; - config.shouldDismissOnBackgroundTouch = NO; - config.contentView = alertView; - [MKJPopup popupAboutDisposition:config]; - }; -} - -- (void)surmountDidTicktack:(UIButton *)sender { - if (self.agreeBtuton.selected) { - ThirdLoginGenre type = sender.tag - 1000; - if(type == ThirdLoginGenre_Gmail){ - [self.presimport tertiusSurmountByGoogleAboutPresentingRegardGovernancer:self configuration:self.configuration]; - return; - } - [self.presimport tertiusSurmountAboutGenre:type]; - - } else { - [self EvidenceMistakeToast:YMLocalizedString(@"PKLoginViewController1")]; - } - -} - -- (void)agreeBtutonTicktacked { - self.agreeBtuton.selected = !self.agreeBtuton.selected; - if (self.agreeBtuton.isSelected) { - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - [defaults setObject:@"hadAgree" forKey:HadAgreePrivacy]; - [defaults synchronize]; - [UIView animateWithDuration:0.5 animations:^{ - self.attestationIntumesceRegard.alpha = 0.0; - }]; - } else { - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - NSString * hadAgree = [defaults stringForKey:HadAgreePrivacy]; - if (hadAgree.length > 0) { - [defaults removeObjectForKey:HadAgreePrivacy]; - } - } -} - -- (void)mobileSurmountBtutonTicktacked { - if (self.agreeBtuton.isSelected) { - YUMISurmountMobileRegardGovernancer *phoneVC = [[YUMISurmountMobileRegardGovernancer alloc] init]; - [self.navigationController pushViewController:phoneVC animated:YES]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventLoginPhoneClick]; - } else { - [UIView animateWithDuration:0.5 animations:^{ - self.attestationIntumesceRegard.alpha = 1.0; - }]; - } -} - -- (void)flexibleSurmountBtutonTicktacked { - if (self.agreeBtuton.isSelected) { - YUMISurmountMobileRegardGovernancer *phoneVC = [[YUMISurmountMobileRegardGovernancer alloc] init]; - [self.navigationController pushViewController:phoneVC animated:YES]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventLoginPhoneClick]; - } else { - [UIView animateWithDuration:0.5 animations:^{ - self.attestationIntumesceRegard.alpha = 1.0; - }]; - } -} -#pragma mark - SurmountCeremony -- (void)surmountAccomplishment { - [self dismissViewControllerAnimated:YES completion:nil]; - [self EvidenceAccomplishmentToast:YMLocalizedString(@"XPLoginViewController4")]; -} - -#pragma mark - 懒加载 - -- (UIButton *)quickSurmountBtuton { - if (!_quickSurmountBtuton) { - _quickSurmountBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - _quickSurmountBtuton.layer.masksToBounds = YES; - _quickSurmountBtuton.layer.cornerRadius = 66.0/2.f; - [_quickSurmountBtuton setTitle:YMLocalizedString(@"XPLoginViewController5") forState:UIControlStateNormal]; - _quickSurmountBtuton.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightRegular]; - [_quickSurmountBtuton setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; - UIImage *image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(KScreenWidth - 45 * 2, 45)]; - [_quickSurmountBtuton setBackgroundImage:image forState:UIControlStateNormal]; - [_quickSurmountBtuton setImage:[UIImage imageNamed:@"yumi_login_phone_white"] forState:UIControlStateNormal]; - [_quickSurmountBtuton addTarget:self action:@selector(flexibleSurmountBtutonTicktacked) forControlEvents:UIControlEventTouchUpInside]; - } - return _quickSurmountBtuton; -} - -- (UIButton *)agreeBtuton { - if(!_agreeBtuton) { - _agreeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_agreeBtuton setImage:[UIImage imageNamed:@"yumi_login_agree"] forState:UIControlStateSelected]; - [_agreeBtuton setImage:[UIImage imageNamed:@"yumi_login_disagree"] forState:UIControlStateNormal]; - [_agreeBtuton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:10]; - [_agreeBtuton addTarget:self action:@selector(agreeBtutonTicktacked) forControlEvents:UIControlEventTouchUpInside]; - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - NSString *hadAgree = [defaults objectForKey:HadAgreePrivacy]; - if (hadAgree.length > 0) { - _agreeBtuton.selected = YES; - } - } - return _agreeBtuton; -} - -- (YYLabel *)protocolSequencignation { - if (!_protocolSequencignation) { - _protocolSequencignation = [[YYLabel alloc] init]; - _protocolSequencignation.font = [UIFont systemFontOfSize:12]; - _protocolSequencignation.numberOfLines = 0; - - NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginViewController6")]; - attString.yy_color = UIColor.whiteColor; - NSString *userString = YMLocalizedString(@"XPLoginViewController7"); - NSMutableAttributedString *userAttString = [[NSMutableAttributedString alloc] initWithString:userString attributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor aplictowardsionMainPrettify]}]; - @weakify(self) - [userAttString yy_setTextHighlightRange:NSMakeRange(0, userAttString.length) color:nil backgroundColor:nil userInfo:nil tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { - @strongify(self); - - YUMITissueRegardGovernancer * webVewC = [[YUMITissueRegardGovernancer alloc] init]; - webVewC.url = URLWithType(kUserProtocalURL); - [self.navigationController pushViewController:webVewC animated:YES]; - } longPressAction:nil]; - - NSMutableAttributedString *andString = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginViewController8")]; - andString.yy_color = UIColor.whiteColor; - NSString *protocolString = YMLocalizedString(@"XPLoginViewController9"); - NSMutableAttributedString *privateString = [[NSMutableAttributedString alloc] initWithString:protocolString attributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor aplictowardsionMainPrettify]}]; - [privateString yy_setTextHighlightRange:NSMakeRange(0, privateString.length) color:nil backgroundColor:nil userInfo:nil tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { - @strongify(self); - - YUMITissueRegardGovernancer * webVewC = [[YUMITissueRegardGovernancer alloc] init]; - webVewC.url = URLWithType(kPrivacyURL); - [self.navigationController pushViewController:webVewC animated:YES]; - } longPressAction:nil]; - [attString appendAttributedString:userAttString]; - [attString appendAttributedString:andString]; - [attString appendAttributedString:privateString]; - - _protocolSequencignation.attributedText = attString; - } - return _protocolSequencignation; -} - -- (UILabel *)separateSequencignation { - if (!_separateSequencignation) { - _separateSequencignation = [[UILabel alloc] init]; - _separateSequencignation.text = YMLocalizedString(@"XPLoginViewController10"); - _separateSequencignation.textColor = UIColor.whiteColor; - _separateSequencignation.font = [UIFont systemFontOfSize:12]; - _separateSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _separateSequencignation; -} - -- (UIImageView *)attestationIntumesceRegard { - if (!_attestationIntumesceRegard) { - _attestationIntumesceRegard = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yumi_login_auth_bubble"]]; - _attestationIntumesceRegard.contentMode = UIViewContentModeScaleAspectFit; - _attestationIntumesceRegard.alpha = 0; - } - return _attestationIntumesceRegard; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFillEqually; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 20; - } - return _stackView; -} - -- (UILabel *)attestationIntumesceSequencignation { - if (!_attestationIntumesceSequencignation) { - _attestationIntumesceSequencignation = [[UILabel alloc] init]; - _attestationIntumesceSequencignation.text = YMLocalizedString(@"XPLoginViewController11"); - _attestationIntumesceSequencignation.font = [UIFont systemFontOfSize:10]; - _attestationIntumesceSequencignation.textColor = UIColor.whiteColor; - } - return _attestationIntumesceSequencignation; -} - -- (UIButton *)fbBtutonRegard { - if (!_fbBtutonRegard) { - _fbBtutonRegard = [UIButton buttonWithType:UIButtonTypeCustom]; - [_fbBtutonRegard setImage: [UIImage imageNamed:@"yumi_login_facebook"] forState:UIControlStateNormal]; - _fbBtutonRegard.tag = 1000 + ThirdLoginGenre_FB; - [_fbBtutonRegard addTarget:self action:@selector(surmountDidTicktack:) forControlEvents:UIControlEventTouchUpInside]; - } - return _fbBtutonRegard; -} - -- (UIButton *)googleBtutonRegard { - if (!_googleBtutonRegard) { - _googleBtutonRegard = [UIButton buttonWithType:UIButtonTypeCustom]; - [_googleBtutonRegard setImage: [UIImage imageNamed:@"yumi_login_gmail"] forState:UIControlStateNormal]; - _googleBtutonRegard.tag = 1000 + ThirdLoginGenre_Gmail; - [_googleBtutonRegard addTarget:self action:@selector(surmountDidTicktack:) forControlEvents:UIControlEventTouchUpInside]; - } - return _googleBtutonRegard; -} - -- (UIButton *)burlywoodBtutonRegard { - if (!_burlywoodBtutonRegard) { - _burlywoodBtutonRegard = [UIButton buttonWithType:UIButtonTypeCustom]; - [_burlywoodBtutonRegard setImage: [UIImage imageNamed:@"yumi_login_line"] forState:UIControlStateNormal]; - _burlywoodBtutonRegard.tag = 1000 + ThirdLoginGenre_Line; - [_burlywoodBtutonRegard addTarget:self action:@selector(surmountDidTicktack:) forControlEvents:UIControlEventTouchUpInside]; - } - return _burlywoodBtutonRegard; -} - -#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000 -- (ASAuthorizationAppleIDButton *)appleBtuton API_AVAILABLE(ios(13.0)){ - if (!_appleBtuton) { - if (@available(iOS 13.0, *)) { - _appleBtuton = [[ASAuthorizationAppleIDButton alloc] initWithAuthorizationButtonType:ASAuthorizationAppleIDButtonTypeSignIn authorizationButtonStyle:ASAuthorizationAppleIDButtonStyleWhite]; - } else { - - } - _appleBtuton.cornerRadius = 25; - _appleBtuton.tag = 1000 + ThirdLoginGenre_Apple; - [_appleBtuton addTarget:self action:@selector(surmountDidTicktack:) forControlEvents:UIControlEventTouchUpInside]; - } - return _appleBtuton; -} -#endif -- (GIDConfiguration *)configuration{ - if (!_configuration){ - NSString * number = [AESUtils aesDecrypt:@"ScLBu7ctIiyGCKPro3Jj6XMdsdCCpNT9L4wyjHEF+bguqubkXNSayFBGMKmoDwe1hjfAc958XSaBdMyEaFXLO38Bwq3xURYVNpgEM4b14zg="]; - _configuration = [[GIDConfiguration alloc] initWithClientID:number]; - } - return _configuration; -} - -@end diff --git a/YuMi/Modules/YMLogin/View/SurmountDilemmaMobileRegardGovernancer.h b/YuMi/Modules/YMLogin/View/SurmountDilemmaMobileRegardGovernancer.h deleted file mode 100644 index d4b829a0..00000000 --- a/YuMi/Modules/YMLogin/View/SurmountDilemmaMobileRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// SurmountDilemmaMobileRegardGovernancer.h -// YUMI -// -// Created by YUMI on 2021/9/14. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface SurmountDilemmaMobileRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/SurmountDilemmaMobileRegardGovernancer.m b/YuMi/Modules/YMLogin/View/SurmountDilemmaMobileRegardGovernancer.m deleted file mode 100644 index 7beff81a..00000000 --- a/YuMi/Modules/YMLogin/View/SurmountDilemmaMobileRegardGovernancer.m +++ /dev/null @@ -1,212 +0,0 @@ -// -// SurmountDilemmaMobileRegardGovernancer.m -// YUMI -// -// Created by YUMI on 2021/9/14. -// - -#import "SurmountDilemmaMobileRegardGovernancer.h" -#import -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "NSString+Utils.h" -#import "UIButton+EnlargeTouchArea.h" -#import "SurmountDilemmaMobileExternalize.h" -#import "SurmountValidationCodeRegardGovernancer.h" - -@interface SurmountDilemmaMobileRegardGovernancer () -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UIView *backgroundRegard; -@property (nonatomic, strong) UILabel *computationrySequencignation; -@property (nonatomic, strong) UITextField *mobileEssayUniverse; -@property (nonatomic, strong) UIButton *surmountBtuton; -@property (nonatomic,strong) UIButton *backButton; -@end - -@implementation SurmountDilemmaMobileRegardGovernancer -- (BOOL)isVeiledNevObstacle { - return YES; -} -#pragma mark - life cycle -- (SurmountDilemmaMobileExternalize *)producePresimport { - return [[SurmountDilemmaMobileExternalize alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self setUpwardsUI]; - [self setEvents]; -} - -- (void)viewDidAppear:(BOOL)animated { - [self EvidenceMistakeToast:@"第三方登录需绑定手机号喔~"]; -} - -- (void)setUpwardsUI { - [self.view addSubview:self.titleLabel]; - [self.view addSubview:self.backgroundRegard]; - [self.backgroundRegard addSubview:self.computationrySequencignation]; - [self.backgroundRegard addSubview:self.mobileEssayUniverse]; - [self.view addSubview:self.surmountBtuton]; - [self.view addSubview:self.backButton]; -} - -- (void)viewDidLayoutSubviews { - [super viewDidLayoutSubviews]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.view); - make.top.mas_equalTo(self.view).offset(150); - }]; - - [self.backgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.view); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(50); - make.width.mas_equalTo(280); - make.height.mas_equalTo(45); - }]; - [self.computationrySequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(10); - make.top.mas_equalTo(self.backgroundRegard).offset(5); - make.width.mas_equalTo(60); - make.height.mas_equalTo(35); - }]; - [self.mobileEssayUniverse mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(70); - make.top.mas_equalTo(self.backgroundRegard).offset(5); - make.width.mas_equalTo(200); - make.height.mas_equalTo(35); - }]; - - [self.surmountBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.view); - make.top.mas_equalTo(self.backgroundRegard.mas_bottom).offset(50); - make.width.mas_equalTo(60); - make.height.mas_equalTo(60); - }]; - - [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(15, 15)); - make.left.mas_equalTo(self.view).offset(14); - make.top.mas_equalTo(self.view).offset(36 + kSafeAreaTopHeight); - }]; -} - -- (void)setEvents { - @weakify(self) - - [[RACSignal combineLatest:@[self.mobileEssayUniverse.rac_textSignal] - reduce:^id(NSString *phone){ - BOOL enable = phone.length == 11; - return @(enable); - }] subscribeNext:^(NSNumber *enable) { - @strongify(self) - self.surmountBtuton.enabled = [enable boolValue]; - }]; - - - [[[[self.surmountBtuton rac_signalForControlEvents:UIControlEventTouchUpInside] doNext:^(id x) { - @strongify(self) - self.surmountBtuton.enabled = NO; - }] flattenMap:^id (id value) { - return [RACSignal createSignal:^RACDisposable *(id subscriber) { - if (!self.mobileEssayUniverse.text.isMobileDigital) { - [self EvidenceMistakeToast:YMLocalizedString(@"LoginBindPhoneViewController1")]; - [subscriber sendNext:@(NO)]; - }else { - [subscriber sendNext:@(YES)]; - } - [subscriber sendCompleted]; - return nil; - }]; - }] subscribeNext:^(NSNumber *signedIn) { - @strongify(self) - self.surmountBtuton.enabled = YES; - BOOL success = [signedIn boolValue]; - if (success) { - - SurmountValidationCodeRegardGovernancer *codeVC = [[SurmountValidationCodeRegardGovernancer alloc] init]; - codeVC.phone = self.mobileEssayUniverse.text; - codeVC.type = VerifCodeGenre_BindPhone; - [self.navigationController pushViewController:codeVC animated:YES]; - } - }]; -} - -#pragma mark - Event Response -- (void)encourageBtutonPerformance:(UIButton *)sender { - - [self dismissViewControllerAnimated:NO completion:^{ - [self.presimport logout]; - }]; -} - -#pragma mark - Getters And Setters -- (UILabel *)titleLabel{ - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; - _titleLabel.text = YMLocalizedString(@"LoginBindPhoneViewController2"); - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -- (UIView *)backgroundRegard { - if (!_backgroundRegard) { - _backgroundRegard = [[UIView alloc] init]; - _backgroundRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _backgroundRegard.layer.cornerRadius = 45/2; - _backgroundRegard.layer.masksToBounds = YES; - } - return _backgroundRegard; -} - -- (UILabel *)computationrySequencignation{ - if (!_computationrySequencignation) { - _computationrySequencignation = [[UILabel alloc] init]; - _computationrySequencignation.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:15]; - _computationrySequencignation.text = @"+852"; - _computationrySequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _computationrySequencignation.backgroundColor = [UIColor clearColor]; - _computationrySequencignation.textAlignment = NSTextAlignmentCenter; - } - return _computationrySequencignation; -} - -- (UITextField *)mobileEssayUniverse { - if (!_mobileEssayUniverse) { - _mobileEssayUniverse = [[UITextField alloc] init]; - _mobileEssayUniverse.keyboardType = UIKeyboardTypeNumberPad; - _mobileEssayUniverse.backgroundColor = [UIColor clearColor]; - _mobileEssayUniverse.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _mobileEssayUniverse.tintColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - _mobileEssayUniverse.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:15]; - _mobileEssayUniverse.textAlignment = NSTextAlignmentLeft; - } - return _mobileEssayUniverse; -} - -- (UIButton *)surmountBtuton { - if (!_surmountBtuton) { - _surmountBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - _surmountBtuton.enabled = NO; - [_surmountBtuton setImage:[UIImage imageNamed:@"yumi_login_button"] forState:UIControlStateDisabled]; - [_surmountBtuton setImage:[UIImage imageNamed:@"yumi_login_button_sel"] forState:UIControlStateNormal]; - } - return _surmountBtuton; -} - -- (UIButton *)backButton { - if (!_backButton) { - _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backButton setImage:[UIImage imageNamed:@"yumi_same_title_back"] forState:UIControlStateNormal]; - [_backButton setImage:[UIImage imageNamed:@"yumi_same_title_back"] forState:UIControlStateSelected]; - [_backButton setEnlargeEdgeAboutApex:15 right:15 bottom:15 left:15]; - [_backButton addTarget:self action:@selector(encourageBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _backButton; -} - -@end diff --git a/YuMi/Modules/YMLogin/View/SurmountFullAbstractRegardGovernancer.h b/YuMi/Modules/YMLogin/View/SurmountFullAbstractRegardGovernancer.h deleted file mode 100644 index 361df08c..00000000 --- a/YuMi/Modules/YMLogin/View/SurmountFullAbstractRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// SurmountFullAbstractRegardGovernancer.h -// YUMI -// -// Created by YUMI on 2021/9/14. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface SurmountFullAbstractRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/SurmountFullAbstractRegardGovernancer.m b/YuMi/Modules/YMLogin/View/SurmountFullAbstractRegardGovernancer.m deleted file mode 100644 index 02b4182d..00000000 --- a/YuMi/Modules/YMLogin/View/SurmountFullAbstractRegardGovernancer.m +++ /dev/null @@ -1,440 +0,0 @@ -// -// SurmountFullAbstractRegardGovernancer.m -// YUMI -// -// Created by YUMI on 2021/9/14. -// - -#import "SurmountFullAbstractRegardGovernancer.h" -#import -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "UIButton+EnlargeTouchArea.h" -#import "StatsticsticsServingFacilitater.h" -#import "AccountAbstractStorage.h" -#import "MKJPopup.h" -#import "ThirdConsumerAbstract.h" -#import "SurmountFullAbstractExternalizer.h" -#import "SurmountFullAbstractCeremony.h" - -UIKIT_EXTERN NSString * kUserCompleteInfoFinishKey; - -@interface SurmountFullAbstractRegardGovernancer () -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UILabel *remindSequencignation; -@property (nonatomic,strong) UIView * encourageRegard; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UILabel *constituteSequencignation; -@property (nonatomic,strong) UITextField *essayUniverse; -@property (nonatomic,strong) UIButton *refreshBtuton; -@property (nonatomic,strong) UIStackView *seaxualityHierarchyRegard; -@property (nonatomic,strong) UIButton *maleBtuton; -@property (nonatomic,strong) UIButton *femaleBtuton; -@property (nonatomic,strong) UIButton *nextBtuton; -@property (nonatomic,strong) UILabel *cryptogramSequencignation; -@property (nonatomic,strong) UIView *cryptogramAccommoengagementRegard; -@property (nonatomic,strong) UITextField *cryptogramEssayUniverse; -@property (nonatomic,strong) UILabel *cryptogramSequencSequencignation; -@property (nonatomic,strong) UILabel *restrictionSequencignation; -@property (nonatomic,strong) ThirdConsumerAbstract *tertiusAbstract; -@property (nonatomic,copy) NSString *seualityBWSttr; -@end - -@implementation SurmountFullAbstractRegardGovernancer - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (SurmountFullAbstractExternalizer *)producePresimport { - return [[SurmountFullAbstractExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self initOccurrences]; -} - -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { - [self.view endEditing:YES]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.titleLabel]; - [self.view addSubview:self.remindSequencignation]; - [self.view addSubview:self.encourageRegard]; - [self.view addSubview:self.seaxualityHierarchyRegard]; - [self.view addSubview:self.cryptogramSequencignation]; - [self.view addSubview:self.cryptogramAccommoengagementRegard]; - [self.view addSubview:self.nextBtuton]; - [self.view addSubview:self.restrictionSequencignation]; - [self.encourageRegard addSubview:self.stackView]; - [self.stackView addArrangedSubview:self.constituteSequencignation]; - [self.stackView addArrangedSubview:self.essayUniverse]; - [self.stackView addArrangedSubview:self.refreshBtuton]; - - [self.seaxualityHierarchyRegard addArrangedSubview:self.maleBtuton]; - [self.seaxualityHierarchyRegard addArrangedSubview:self.femaleBtuton]; - - [self.cryptogramAccommoengagementRegard addSubview:self.cryptogramEssayUniverse]; - [self.cryptogramAccommoengagementRegard addSubview:self.cryptogramSequencSequencignation]; - - if ([self.presimport acquireTertiusConsumerAbstract] && [self.presimport acquireTertiusConsumerAbstract].userName.length > 0) { - self.essayUniverse.text = [self.presimport acquireTertiusConsumerAbstract].userName; - } else { - [self.presimport arbitraryDemandMonicer]; - } -} - -- (void)initChildLyRestrictions { - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.view); - make.top.mas_equalTo(self.view).offset(60 + kSafeAreaTopHeight); - }]; - - [self.remindSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.view); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(8); - }]; - - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view).inset(52); - make.height.mas_equalTo(45); - make.top.mas_equalTo(self.remindSequencignation.mas_bottom).offset(49); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageRegard).inset(25); - make.top.bottom.mas_equalTo(self.encourageRegard); - }]; - - - [self.seaxualityHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageRegard); - make.top.mas_equalTo(self.encourageRegard.mas_bottom).offset(15); - }]; - - [self.cryptogramSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.top.mas_equalTo(self.seaxualityHierarchyRegard.mas_bottom).offset(20); - }]; - - [self.cryptogramAccommoengagementRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.height.mas_equalTo(self.encourageRegard); - make.top.mas_equalTo(self.cryptogramSequencignation.mas_bottom).offset(11); - }]; - - [self.cryptogramEssayUniverse mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.cryptogramAccommoengagementRegard).offset(10); - make.top.bottom.mas_equalTo(self.cryptogramAccommoengagementRegard); - make.right.mas_equalTo(self.cryptogramSequencSequencignation.mas_left).offset(-5); - }]; - - [self.cryptogramSequencSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.cryptogramAccommoengagementRegard).offset(-25); - make.centerY.mas_equalTo(self.cryptogramAccommoengagementRegard); - }]; - - [self.nextBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view).inset(52); - make.height.mas_equalTo(45); - make.top.mas_equalTo(self.cryptogramAccommoengagementRegard.mas_bottom).offset(75); - }]; - - [self.restrictionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.view.mas_bottom).offset(-15); - }]; -} - -- (void)initOccurrences { - @weakify(self); - [[self.essayUniverse.rac_textSignal map:^id _Nullable(NSString * _Nullable value) { - if (value.length > 15) { - value = [value substringToIndex:15]; - } - return value; - }] subscribeNext:^(id _Nullable x) { - @strongify(self); - self.essayUniverse.text = x; - [self refurbishLtowardsterBtuton]; - }]; - -} - -- (void)refurbishConsumerAbstract { - [self.presimport complectionAbstractAboutIntelligenceportrait:[self acquireIntelligenceportraitWeebsite] gender:self.maleBtuton.selected ? @"1":@"2" nick:self.essayUniverse.text centiretyforCryptogram:self.cryptogramEssayUniverse.text roomUid:nil shareUid:nil shareChannel:nil]; -} - -- (NSString *)acquireIntelligenceportraitWeebsite { - NSString * avatar; - if ([self.presimport acquireTertiusConsumerAbstract] && [self.presimport acquireTertiusConsumerAbstract].avatarUrl.length > 0) { - avatar = [self.presimport acquireTertiusConsumerAbstract].avatarUrl; - } else { - avatar = @"https://image.hfighting.com/morentouxiang.png"; - } - return avatar; -} - -- (void)refurbishLtowardsterBtuton { - if (self.essayUniverse.text.length > 0 && self.seualityBWSttr.length > 0) { - self.nextBtuton.enabled = YES; - } else { - self.nextBtuton.enabled = NO; - } -} - -#pragma mark - SurmountFullAbstractCeremony -- (void)requisitionArbitraryMonicerAccomplishment:(NSString *)nick { - self.essayUniverse.text = nick; -} - -- (void)complementAbstractAccomplishment { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventLoginRepariSuccess]; - - [[AccountAbstractStorage instance] preserveTicket:nil]; - UIViewController *vc = self.presentingViewController; - while (vc.presentingViewController) { - vc = vc.presentingViewController; - } - [vc dismissViewControllerAnimated:YES completion:^{ - }]; - NSString * centiretyforCryptogram = self.cryptogramEssayUniverse.text.length > 0 ? self.cryptogramEssayUniverse.text : @""; - [[NSNotificationCenter defaultCenter] postNotificationName:kUserCompleteInfoFinishKey object:centiretyforCryptogram]; -} -#pragma mark - Event Response -- (void)ltowardsterBtutonPerformance:(UIButton *)sender { - if (self.cryptogramEssayUniverse.text.length <= 0) { - MKJPrecautiousDisposition * config = [[MKJPrecautiousDisposition alloc] init]; - config.title = @""; - config.message = YMLocalizedString(@"LoginFullInfoViewController0"); - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [self refurbishConsumerAbstract]; - } cancelHandler:^{ - - }]; - } else { - [self refurbishConsumerAbstract]; - } -} - -- (void)renovtowardseBtutonPerformance:(UIButton *)sender { - CAKeyframeAnimation *lAni = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation.z"]; - lAni.duration = 1; - lAni.values=@[@0,@(M_PI*2)]; - - lAni.removedOnCompletion = NO; - lAni.fillMode = kCAFillModeForwards; - [sender.layer addAnimation:lAni forKey:nil]; - [self.presimport arbitraryDemandMonicer]; -} - -- (void)maleBtutonPerformance:(UIButton *)sender { - self.femaleBtuton.selected = NO; - sender.selected = YES; - self.seualityBWSttr = @"1"; -} - -- (void)femaleBtutonPerformance:(UIButton *)sender { - sender.selected = YES; - self.maleBtuton.selected = NO; - self.seualityBWSttr = @"2"; -} - -#pragma mark - Getters And Setters -- (void)setSeualityBWSttr:(NSString *)seualityBWSttr { - _seualityBWSttr = seualityBWSttr; - [self refurbishLtowardsterBtuton]; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"LoginFullInfoViewController1"); - _titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Bold" size:18]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} - -- (UILabel *)remindSequencignation { - if (!_remindSequencignation) { - _remindSequencignation = [[UILabel alloc] init]; - _remindSequencignation.text = YMLocalizedString(@"LoginFullInfoViewController2"); - _remindSequencignation.font = [UIFont systemFontOfSize:13]; - _remindSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _remindSequencignation; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 10; - } - return _stackView; -} - -- (UIView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIView alloc] init]; - _encourageRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _encourageRegard.layer.masksToBounds = YES; - _encourageRegard.layer.cornerRadius = 45/2; - } - return _encourageRegard; -} - -- (UILabel *)constituteSequencignation { - if (!_constituteSequencignation) { - _constituteSequencignation = [[UILabel alloc] init]; - _constituteSequencignation.text = YMLocalizedString(@"LoginFullInfoViewController3"); - _constituteSequencignation.font = [UIFont systemFontOfSize:15]; - _constituteSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - [_constituteSequencignation setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - [_constituteSequencignation setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - - } - return _constituteSequencignation; -} - -- (UITextField *)essayUniverse { - if (!_essayUniverse) { - _essayUniverse = [[UITextField alloc] init]; - _essayUniverse.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _essayUniverse.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:15.f]; - _essayUniverse.borderStyle = UITextBorderStyleNone; - _essayUniverse.tintColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - _essayUniverse.textAlignment = NSTextAlignmentRight; - _essayUniverse.backgroundColor = [UIColor clearColor]; - } - return _essayUniverse; -} - -- (UIButton *)refreshBtuton { - if (!_refreshBtuton) { - _refreshBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_refreshBtuton setImage:[UIImage imageNamed:@"yumi_login_full_gen_refresh"] forState:UIControlStateNormal]; - [_refreshBtuton setImage:[UIImage imageNamed:@"yumi_login_full_gen_refresh"] forState:UIControlStateSelected]; - [_refreshBtuton setEnlargeEdgeAboutApex:0 right:0 bottom:0 left:10]; - [_refreshBtuton setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - [_refreshBtuton setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - [_refreshBtuton addTarget:self action:@selector(renovtowardseBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _refreshBtuton; -} - -- (UIStackView *)seaxualityHierarchyRegard { - if (!_seaxualityHierarchyRegard) { - _seaxualityHierarchyRegard = [[UIStackView alloc] init]; - _seaxualityHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _seaxualityHierarchyRegard.distribution = UIStackViewDistributionFill; - _seaxualityHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _seaxualityHierarchyRegard.spacing = 15; - } - return _seaxualityHierarchyRegard; -} - -- (UIButton *)maleBtuton { - if (!_maleBtuton) { - _maleBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_maleBtuton setImage:[UIImage imageNamed:@"yumi_login_full_gen_male_normal"] forState:UIControlStateNormal]; - [_maleBtuton setImage:[UIImage imageNamed:@"yumi_login_full_gen_male_select"] forState:UIControlStateSelected]; - [_maleBtuton addTarget:self action:@selector(maleBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _maleBtuton; -} - -- (UIButton *)femaleBtuton { - if (!_femaleBtuton) { - _femaleBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_femaleBtuton setImage:[UIImage imageNamed:@"yumi_login_full_gen_female_normal"] forState:UIControlStateNormal]; - [_femaleBtuton setImage:[UIImage imageNamed:@"yumi_login_full_gen_female_select"] forState:UIControlStateSelected]; - [_femaleBtuton addTarget:self action:@selector(femaleBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _femaleBtuton; -} - -- (UIView *)cryptogramAccommoengagementRegard { - if (!_cryptogramAccommoengagementRegard) { - _cryptogramAccommoengagementRegard = [[UIView alloc] init]; - _cryptogramAccommoengagementRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _cryptogramAccommoengagementRegard.layer.masksToBounds= YES; - _cryptogramAccommoengagementRegard.layer.cornerRadius = 45/2; - } - return _cryptogramAccommoengagementRegard; -} - -- (UITextField *)cryptogramEssayUniverse { - if (!_cryptogramEssayUniverse) { - _cryptogramEssayUniverse = [[UITextField alloc] init]; - _cryptogramEssayUniverse.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _cryptogramEssayUniverse.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:15.f]; - _cryptogramEssayUniverse.borderStyle = UITextBorderStyleNone; - _cryptogramEssayUniverse.tintColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - _cryptogramEssayUniverse.textAlignment = NSTextAlignmentLeft; - _cryptogramEssayUniverse.backgroundColor = [UIColor clearColor]; - } - return _cryptogramEssayUniverse; -} - -- (UILabel *)cryptogramSequencignation { - if (!_cryptogramSequencignation) { - _cryptogramSequencignation = [[UILabel alloc] init]; - _cryptogramSequencignation.text = YMLocalizedString(@"LoginFullInfoViewController4"); - _cryptogramSequencignation.font = [UIFont systemFontOfSize:18]; - _cryptogramSequencignation.textAlignment = NSTextAlignmentCenter; - _cryptogramSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _cryptogramSequencignation; -} - -- (UILabel *)cryptogramSequencSequencignation { - if (!_cryptogramSequencSequencignation) { - _cryptogramSequencSequencignation = [[UILabel alloc] init]; - _cryptogramSequencSequencignation.text = @"(选填)"; - _cryptogramSequencSequencignation.font = [UIFont systemFontOfSize:15]; - _cryptogramSequencSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - [_cryptogramSequencSequencignation setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - } - return _cryptogramSequencSequencignation; -} - -- (UIButton *)nextBtuton{ - if (!_nextBtuton) { - _nextBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - _nextBtuton.layer.masksToBounds = YES; - _nextBtuton.layer.cornerRadius = 45/2.f; - [_nextBtuton setTitle:YMLocalizedString(@"LoginFullInfoViewController6") forState:UIControlStateNormal]; - _nextBtuton.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; - [_nextBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - _nextBtuton.enabled = NO; - UIImage *image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)]; - [_nextBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor prohibitionBtutonPrettify], [DJDKMIMOMColor prohibitionBtutonPrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; - [_nextBtuton setBackgroundImage:image forState:UIControlStateNormal]; - [_nextBtuton addTarget:self action:@selector(ltowardsterBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _nextBtuton; -} - -- (UILabel *)restrictionSequencignation { - if (!_restrictionSequencignation) { - _restrictionSequencignation = [[UILabel alloc] init]; - _restrictionSequencignation.text = YMLocalizedString(@"LoginFullInfoViewController7"); - _restrictionSequencignation.textAlignment = NSTextAlignmentCenter; - _restrictionSequencignation.font = [UIFont systemFontOfSize:12]; - _restrictionSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - } - return _restrictionSequencignation; -} - -@end diff --git a/YuMi/Modules/YMLogin/View/SurmountValidationCodeRegardGovernancer.h b/YuMi/Modules/YMLogin/View/SurmountValidationCodeRegardGovernancer.h deleted file mode 100644 index 9e82cfb7..00000000 --- a/YuMi/Modules/YMLogin/View/SurmountValidationCodeRegardGovernancer.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// SurmountValidationCodeRegardGovernancer.h -// YUMI -// -// Created by YUMI on 2021/9/8. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSUInteger, VerifCodeGenre){ - VerifCodeGenre_Regist, - VerifCodeGenre_BindPhone, - VerifCodeGenre_Login, - VerifCodeGenre_AreaCode, -} ; - - -@interface SurmountValidationCodeRegardGovernancer : MvpRegardGovernancer - -@property (nonatomic,copy) NSString *phone; -@property (nonatomic,copy) NSString *phoneAreaCode; -@property (nonatomic,assign) VerifCodeGenre type; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/SurmountValidationCodeRegardGovernancer.m b/YuMi/Modules/YMLogin/View/SurmountValidationCodeRegardGovernancer.m deleted file mode 100644 index 39f0380c..00000000 --- a/YuMi/Modules/YMLogin/View/SurmountValidationCodeRegardGovernancer.m +++ /dev/null @@ -1,339 +0,0 @@ -// -// SurmountValidationCodeRegardGovernancer.m -// YuMi -// -// Created by YuMi on 2021/9/8. -// - -#import "SurmountValidationCodeRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "ComputationDownFacilitater.h" -#import "YUMIMacroUitls.h" -#import "YUMIConstant.h" -#import "XNDJTBWGLoadingTool.h" -#import "UIView+Corner.h" -#import "UIButton+EnlargeTouchArea.h" -#import "SurmountValidationCodeExternalize.h" -#import "SurmountVerifCodeCeremony.h" -#import "SurmountValidationCodeRegard.h" -#import "SurmountFullAbstractRegardGovernancer.h" -#import "YUMISurmountPwordRegardGovernancer.h" - -@interface SurmountValidationCodeRegardGovernancer () -@property (nonatomic,strong) UIImageView *apexEncourageIndiRegard; -@property (nonatomic,strong) UIView *contentView; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UIView *backgroundCryptogramRegard; -@property (nonatomic,strong) UIStackView *cryptogramHierarchyRegard; -@property (nonatomic,strong) UILabel *cutdownSequencignation; -@property (nonatomic,strong) UIButton *retrialCryptogramBtuton; -@property (nonatomic,strong) UITextField *essayUniverse; -@property (nonatomic,strong) UIButton *surmountBtuton; -@property (nonatomic,strong) UIButton *encourageBtuton; -@property (nonatomic,assign) BOOL isSurmountSuccess; -@property (nonatomic,copy) NSString *code; -@end - -@implementation SurmountValidationCodeRegardGovernancer - -- (void)dealloc { - [[ComputationDownFacilitater partowardsiciptowardsionFacilittowardseer] suspeindComputtowardsionPubescence]; -} - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (SurmountValidationCodeExternalize *)producePresimport { - return [[SurmountValidationCodeExternalize alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - - - [self initSubViews]; - [self initChildLyRestrictions]; - if(self.type != VerifCodeGenre_AreaCode){ - self.retrialCryptogramBtuton.hidden = YES; - self.cutdownSequencignation.hidden = NO; - [[ComputationDownFacilitater partowardsiciptowardsionFacilittowardseer] unfoildComputtowardsiondownAboutIntrtowardsemporal:60]; - }else{ - self.essayUniverse.keyboardType = UIKeyboardTypeDefault; - } - -} - -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { - [self.view endEditing:NO]; -} - -- (void)viewDidDisappear:(BOOL)animated { - [super viewDidDisappear:animated]; - [[ComputationDownFacilitater partowardsiciptowardsionFacilittowardseer] suspeindComputtowardsionPubescence]; -} - -#pragma mark - Private Method -- (void)initSubViews { - - [self.view addSubview:self.apexEncourageIndiRegard]; - [self.view addSubview:self.contentView]; - - - if(self.type == VerifCodeGenre_AreaCode){ - self.titleLabel.text = YMLocalizedString(@"LoginVerifCodeViewController5"); - - }else{ - [self.apexEncourageIndiRegard addSubview:self.encourageBtuton]; - [ComputationDownFacilitater partowardsiciptowardsionFacilittowardseer].delegate = self; - } - - [self.apexEncourageIndiRegard addSubview:self.titleLabel]; - - [self.contentView addSubview:self.backgroundCryptogramRegard]; - [self.backgroundCryptogramRegard addSubview:self.cryptogramHierarchyRegard]; - [self.cryptogramHierarchyRegard addArrangedSubview:self.essayUniverse]; - [self.cryptogramHierarchyRegard addArrangedSubview:self.cutdownSequencignation]; - [self.cryptogramHierarchyRegard addArrangedSubview:self.retrialCryptogramBtuton]; - [self.contentView addSubview:self.surmountBtuton]; - - -} - -- (void)initChildLyRestrictions { - [self.apexEncourageIndiRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.height.mas_equalTo(kGetScaleWidth(333)); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.top.equalTo(self.apexEncourageIndiRegard.mas_bottom).mas_offset(-kGetScaleWidth(30)); - }]; - if(self.type != VerifCodeGenre_AreaCode){ - [self.encourageBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.apexEncourageIndiRegard.mas_top).offset(kSafeAreaTopHeight + kGetScaleWidth(52)); - make.width.height.mas_equalTo(kGetScaleWidth(20)); - make.left.mas_equalTo(kGetScaleWidth(15)); - }]; - } - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.apexEncourageIndiRegard).offset(kGetScaleWidth(30)); - make.top.mas_equalTo(self.apexEncourageIndiRegard.mas_top).offset(kSafeAreaTopHeight + kGetScaleWidth(96)); - }]; - - - [self.backgroundCryptogramRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(30)); - make.right.mas_equalTo(-kGetScaleWidth(33)); - make.left.mas_equalTo(kGetScaleWidth(33)); - make.height.mas_equalTo(kGetScaleWidth(63)); - }]; - - [self.cryptogramHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(20)); - make.right.mas_equalTo(-kGetScaleWidth(20)); - make.top.bottom.equalTo(self.backgroundCryptogramRegard); - }]; - [self.essayUniverse mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_greaterThanOrEqualTo(kGetScaleWidth(190)); - }]; - [self.surmountBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.equalTo(self.contentView); - make.height.mas_equalTo(kGetScaleWidth(63)); - make.width.mas_equalTo(kGetScaleWidth(165)); - make.top.equalTo(self.backgroundCryptogramRegard.mas_bottom).mas_offset(kGetScaleWidth(50)); - }]; - -} - - -- (void)httpDemandMobileSmsCryptogram { - [self.presimport mobileSmsCryptogram:[NSString stringWithFormat:@"%@%@",self.phoneAreaCode,self.phone] type:GetSmsGenre_Regist phoneAreaCode:self.phoneAreaCode]; -} - - - --(void)surmountBtutonPerformance{ - - [self.view endEditing:YES]; - self.surmountBtuton.enabled = NO; - - if(self.isSurmountSuccess == YES && [self.code isEqualToString:self.essayUniverse.text]){ - [XNDJTBWGLoadingTool EvidenceChamberingInRegard:self.view]; - [self surmountAccomplishment]; - return; - } - self.isSurmountSuccess = NO; - [XNDJTBWGLoadingTool EvidenceChamberingInRegard:self.view]; - self.code = self.essayUniverse.text; - [self.presimport surmountAboutMobile:[NSString stringWithFormat:@"%@%@",self.phoneAreaCode,self.phone] code:self.essayUniverse.text phoneAreaCode:self.phoneAreaCode]; -} - -- (void)prohibitiaplictowardsionarVewC { - [[ComputationDownFacilitater partowardsiciptowardsionFacilittowardseer] suspeindComputtowardsionPubescence]; - NSMutableArray *vcList = [NSMutableArray array]; - for (id vc in self.navigationController.viewControllers) { - if(![vc isKindOfClass:[YUMISurmountPwordRegardGovernancer class]]){ - [vcList addObject:vc]; - } - } - self.navigationController.viewControllers = vcList; - UIViewController *vc = self.presentingViewController; - while (vc.presentingViewController) { - vc = vc.presentingViewController; - } - [vc dismissViewControllerAnimated:YES completion:nil]; - [self.navigationController popToRootViewControllerAnimated:NO]; -} - - -#pragma mark - SurmountVerifCodeCeremony -- (void)surmountFlunk:(NSString *)reason{ - self.surmountBtuton.enabled = YES; - [XNDJTBWGLoadingTool EvidenceChamberingInRegard:self.view]; -} -- (void)surmountAccomplishment { - self.isSurmountSuccess = YES; - [[ComputationDownFacilitater partowardsiciptowardsionFacilittowardseer] suspeindComputtowardsionPubescence]; - [self prohibitiaplictowardsionarVewC]; - self.surmountBtuton.enabled = YES; -} - -- (void)dilemmaMobileAccomplishment { - [self prohibitiaplictowardsionarVewC]; -} -#pragma mark - SurmountCeremony -- (void)mobileSmsCryptogramAccomplishment { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"PKIDLoginViewController11")]; - self.retrialCryptogramBtuton.hidden = YES; - self.cutdownSequencignation.hidden = NO; - [[ComputationDownFacilitater partowardsiciptowardsionFacilittowardseer] unfoildComputtowardsiondownAboutIntrtowardsemporal:60]; -} - -#pragma mark - CountDownHelperRepresendtation -- (void)onComputtowardsiondownAccomplish { - self.retrialCryptogramBtuton.hidden = NO; - self.cutdownSequencignation.hidden = YES; -} - -- (void)onComputtowardsiondownUnfoild:(int)time { - self.cutdownSequencignation.text = [NSString stringWithFormat:@"%dS",time]; -} --(void)essayUniverseDidDiversifictowardsion:(UITextField *)essayUniverse{ - self.surmountBtuton.enabled = essayUniverse.text > 0; -} -#pragma mark 重新获取验证吗 --(void)retrialCryptogramPerformance{ - [self httpDemandMobileSmsCryptogram]; -} --(void)backAction{ - [self.navigationController popViewControllerAnimated:YES]; -} -#pragma mark - Getters And Setters - - -- (UILabel *)titleLabel{ - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:40]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleLabel.text = YMLocalizedString(@"LoginVerifCodeViewController3"); - } - return _titleLabel; -} - - - - -- (UILabel *)cutdownSequencignation { - if (!_cutdownSequencignation) { - _cutdownSequencignation = [[UILabel alloc] init]; - _cutdownSequencignation.textAlignment = NSTextAlignmentRight; - _cutdownSequencignation.font = [UIFont systemFontOfSize:16 weight:UIFontWeightSemibold]; - _cutdownSequencignation.textColor = UIColorFromRGB(0x9168FA); - _cutdownSequencignation.hidden = NO; - } - return _cutdownSequencignation; -} --(UIView *)backgroundCryptogramRegard{ - if (!_backgroundCryptogramRegard){ - _backgroundCryptogramRegard = [UIView new]; - _backgroundCryptogramRegard.backgroundColor = UIColorFromRGB(0xF0F5F6); - [_backgroundCryptogramRegard setMonopolizeAboutContraryApexMonopolize:kGetScaleWidth(10) rightTopCorner:kGetScaleWidth(10) bottomLeftCorner:kGetScaleWidth(10) bottomRightCorner:kGetScaleWidth(10) size:CGSizeMake(kGetScaleWidth(308), kGetScaleWidth(63))]; - } - return _backgroundCryptogramRegard; -} -- (UIButton *)retrialCryptogramBtuton { - if (!_retrialCryptogramBtuton) { - _retrialCryptogramBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_retrialCryptogramBtuton setTitle:YMLocalizedString(@"LoginVerifCodeViewController4") forState:UIControlStateNormal]; - [_retrialCryptogramBtuton setTitleColor:[DJDKMIMOMColor colorAboutHexBWSttr:@"#1F1A4E"] forState:UIControlStateNormal]; - _retrialCryptogramBtuton.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightSemibold]; - _retrialCryptogramBtuton.hidden = YES; - [_retrialCryptogramBtuton addTarget:self action:@selector(retrialCryptogramPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _retrialCryptogramBtuton; -} -- (UIImageView *)apexEncourageIndiRegard { - if (!_apexEncourageIndiRegard) { - _apexEncourageIndiRegard = [[UIImageView alloc] init]; - _apexEncourageIndiRegard.userInteractionEnabled = YES; - _apexEncourageIndiRegard.image = [UIImage imageNamed:@"login_top_bg"]; - _apexEncourageIndiRegard.layer.masksToBounds = YES; - _apexEncourageIndiRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _apexEncourageIndiRegard; -} --(UITextField *)essayUniverse{ - if (!_essayUniverse){ - _essayUniverse = [[UITextField alloc]init]; - _essayUniverse.keyboardType = UIKeyboardTypeNumberPad; - _essayUniverse.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#1F1A4E"]; - _essayUniverse.font = [UIFont systemFontOfSize:16 weight:UIFontWeightSemibold]; - [_essayUniverse addTarget:self action:@selector(essayUniverseDidDiversifictowardsion:) forControlEvents:UIControlEventEditingChanged]; - - } - return _essayUniverse; -} -- (UIView *)contentView { - if (!_contentView) { - _contentView = [[UIView alloc] init]; - _contentView.backgroundColor = [UIColor whiteColor]; - [_contentView setMonopolizeAboutContraryApexMonopolize:kGetScaleWidth(25) rightTopCorner:kGetScaleWidth(25) bottomLeftCorner:0 bottomRightCorner:0 size:CGSizeMake(KScreenWidth, KScreenHeight - kGetScaleWidth(303))]; - } - return _contentView; -} -- (UIButton *)surmountBtuton { - if (!_surmountBtuton) { - _surmountBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_surmountBtuton setImage:[UIImage imageNamed:@"login_finish"] forState:UIControlStateNormal]; - [_surmountBtuton addTarget:self action:@selector(surmountBtutonPerformance) forControlEvents:UIControlEventTouchUpInside]; - _surmountBtuton.enabled = NO; - } - return _surmountBtuton; -} - -- (UIStackView *)cryptogramHierarchyRegard{ - if (!_cryptogramHierarchyRegard) { - _cryptogramHierarchyRegard = [[UIStackView alloc] init]; - _cryptogramHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _cryptogramHierarchyRegard.distribution = UIStackViewDistributionFillProportionally; - _cryptogramHierarchyRegard.alignment = UIStackViewAlignmentFill; - _cryptogramHierarchyRegard.spacing = 10; - } - return _cryptogramHierarchyRegard; -} -- (UIButton *)encourageBtuton{ - if (!_encourageBtuton){ - _encourageBtuton = [UIButton new]; - [_encourageBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_same_title_back"] forState:UIControlStateNormal]; - [_encourageBtuton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:10]; - [_encourageBtuton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside]; - } - return _encourageBtuton; -} -@end diff --git a/YuMi/Modules/YMLogin/View/XPLoginBindPhoneResultViewController.h b/YuMi/Modules/YMLogin/View/XPLoginBindPhoneResultViewController.h new file mode 100644 index 00000000..72cdc31b --- /dev/null +++ b/YuMi/Modules/YMLogin/View/XPLoginBindPhoneResultViewController.h @@ -0,0 +1,16 @@ +// +// YMLoginBindPhoneResultViewController.h +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import "BaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN +@class UserInfoModel; +@interface XPLoginBindPhoneResultViewController : BaseViewController +@property (nonatomic, strong) UserInfoModel *userInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/XPLoginBindPhoneResultViewController.m b/YuMi/Modules/YMLogin/View/XPLoginBindPhoneResultViewController.m new file mode 100644 index 00000000..2a486904 --- /dev/null +++ b/YuMi/Modules/YMLogin/View/XPLoginBindPhoneResultViewController.m @@ -0,0 +1,144 @@ +// +// YMLoginBindPhoneResultViewController.m +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import "XPLoginBindPhoneResultViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +///Model +#import "UserInfoModel.h" +///VC +#import "XPLoginVerifBindPhoneViewController.h" +@interface XPLoginBindPhoneResultViewController () + +@property (nonatomic, strong) UIView *containerView; +@property (nonatomic, strong) UIImageView *iconImageView; +@property (nonatomic, strong) UILabel *titleLabel; +@property (nonatomic, strong) UILabel *phoneLabel; +@property (nonatomic, strong) UIButton *changePhoneBtn; + +@end + +@implementation XPLoginBindPhoneResultViewController + + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initViews]; + [self setUpConstraints]; + [self setConfigs]; +} + +#pragma mark - Private Method +- (void)initViews { + [self.view addSubview:self.containerView]; + [self.containerView addSubview:self.iconImageView]; + [self.containerView addSubview:self.titleLabel]; + [self.containerView addSubview:self.phoneLabel]; + [self.containerView addSubview:self.changePhoneBtn]; +} + +- (void)setConfigs { + self.title = YMLocalizedString(@"XPLoginBindPhoneResultViewController0"); + self.phoneLabel.text = self.userInfo.phone; +} + +- (void)setUpConstraints { + [self.containerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(49); + make.left.right.bottom.mas_equalTo(0); + }]; + + [self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(50); + make.centerX.mas_equalTo(0); + make.size.mas_equalTo(CGSizeMake(135, 130)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(0); + make.top.mas_equalTo(self.iconImageView.mas_bottom).offset(39); + }]; + + [self.phoneLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(0); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(11); + }]; + + [self.changePhoneBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.phoneLabel.mas_bottom).offset(41); + make.left.right.mas_equalTo(0).inset(32); + make.centerX.mas_equalTo(0); + make.height.mas_equalTo(45); + }]; +} +#pragma mark - Event Response +- (void)changePhoneBtnAction:(UIButton *)sender { + XPLoginVerifBindPhoneViewController *vc = [[XPLoginVerifBindPhoneViewController alloc] init]; + vc.userInfo = self.userInfo; + vc.bindingPhoneNumType = XPBindingPhoneNumTypeConfirm; + [self.navigationController pushViewController:vc animated:YES]; +} + +#pragma mark - Getters And Setters +- (UIView *)containerView{ + if (!_containerView) { + _containerView = [[UIView alloc] init]; + _containerView.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; + } + return _containerView; +} + +- (UIImageView *)iconImageView{ + if (!_iconImageView) { + _iconImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"login_bind_phone_bg"]]; + } + return _iconImageView; +} + +- (UILabel *)titleLabel{ + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPLoginBindPhoneResultViewController1"); + _titleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _titleLabel.font = [UIFont systemFontOfSize:14.f]; + _titleLabel.adjustsFontSizeToFitWidth = YES; + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} + +- (UILabel *)phoneLabel{ + if (!_phoneLabel) { + _phoneLabel = [[UILabel alloc] init]; + _phoneLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _phoneLabel.font = [UIFont boldSystemFontOfSize:18.f]; + _phoneLabel.adjustsFontSizeToFitWidth = YES; + _phoneLabel.textAlignment = NSTextAlignmentCenter; + } + return _phoneLabel; +} + +- (UIButton *)changePhoneBtn { + if (!_changePhoneBtn) { + _changePhoneBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_changePhoneBtn setTitle:YMLocalizedString(@"XPLoginBindPhoneResultViewController2") forState:UIControlStateNormal]; + [_changePhoneBtn setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_changePhoneBtn.titleLabel setFont:[UIFont fontWithName:@"PingFang-SC-Medium" size:18]]; + [_changePhoneBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _changePhoneBtn.layer.masksToBounds = YES; + _changePhoneBtn.layer.cornerRadius = 22.5; + [_changePhoneBtn addTarget:self action:@selector(changePhoneBtnAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _changePhoneBtn; +} + + +@end diff --git a/YuMi/Modules/YMLogin/View/XPLoginVerifBindPhoneViewController.h b/YuMi/Modules/YMLogin/View/XPLoginVerifBindPhoneViewController.h new file mode 100644 index 00000000..e675dc53 --- /dev/null +++ b/YuMi/Modules/YMLogin/View/XPLoginVerifBindPhoneViewController.h @@ -0,0 +1,29 @@ +// +// YMLoginVerifBindPhoneViewController.h +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + 手机号绑定的类型 + - TTBindingPhoneNumTypeNormal: 普通状态,首次绑定 + - TTBindingPhoneNumTypeConfirm : 验证状态:验证已绑定的手机 + */ +typedef NS_ENUM(NSUInteger, TTBindingPhoneNumType) { + XPBindingPhoneNumTypeNormal = 0, + XPBindingPhoneNumTypeEdit = 1, + XPBindingPhoneNumTypeConfirm = 2, +}; +@class UserInfoModel; +@interface XPLoginVerifBindPhoneViewController : MvpViewController +@property (nonatomic, assign) TTBindingPhoneNumType bindingPhoneNumType; +///用户信息 +@property (nonatomic, strong) UserInfoModel *userInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/XPLoginVerifBindPhoneViewController.m b/YuMi/Modules/YMLogin/View/XPLoginVerifBindPhoneViewController.m new file mode 100644 index 00000000..96d98b9f --- /dev/null +++ b/YuMi/Modules/YMLogin/View/XPLoginVerifBindPhoneViewController.m @@ -0,0 +1,433 @@ +// +// YMLoginVerifBindPhoneViewController.m +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import "XPLoginVerifBindPhoneViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIConstant.h" +#import "YUMIMacroUitls.h" +#import "UIImage+Utils.h" +#import "CountDownHelper.h" +///Model +#import "UserInfoModel.h" +///P +#import "XPLoginVerifBindPhoneProtocol.h" +#import "XPLoginVerifBindPhonePresenter.h" +///VC +#import "LoginBindPhoneViewController.h" +#import "XPMineSettingViewController.h" +///View +#import "XPLoginBindSuccessView.h" + +@interface XPLoginVerifBindPhoneViewController () +@property (nonatomic, strong) UIView *containerView; +@property (nonatomic, strong) UILabel *areaLabel; +@property (nonatomic, strong) UIButton *countryBtn; +@property (nonatomic, strong) UIView *areaLineView; + +@property (nonatomic, strong) UIView *phoneLineView; +@property (nonatomic, strong) UIView *authLineView; +@property (nonatomic, strong) UILabel *areaCodeLabel; + +@property (nonatomic, strong) UIButton *authCodeBtn; +@property (nonatomic, strong) UITextField *phoneNumTextField; +@property (nonatomic, strong) UITextField *authCodeTextField; + +@property (nonatomic, strong) UIButton *confirmBtn; // 确认按钮 + +@property (nonatomic, strong) UILabel *tipsLabel; // 手机号丢失 +@property (nonatomic, assign) BOOL isResetPhone; // 重新绑定手机 +@end + +@implementation XPLoginVerifBindPhoneViewController + +- (void)dealloc { + [[CountDownHelper shareHelper] stopCountDown]; +} + +- (XPLoginVerifBindPhonePresenter *)createPresenter { + return [[XPLoginVerifBindPhonePresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + [self setConfigs]; + [self setEvents]; +} + +- (void)viewDidDisappear:(BOOL)animated { + [super viewDidDisappear:animated]; + [[CountDownHelper shareHelper] stopCountDown]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [CountDownHelper shareHelper].delegate = self; + [self.view addSubview:self.containerView]; + [self.containerView addSubview:self.areaLabel]; + [self.containerView addSubview:self.countryBtn]; + + [self.containerView addSubview:self.areaLineView]; + [self.containerView addSubview:self.areaCodeLabel]; + [self.containerView addSubview:self.phoneNumTextField]; + [self.containerView addSubview:self.phoneLineView]; + + [self.containerView addSubview:self.authCodeBtn]; + [self.containerView addSubview:self.authCodeTextField]; + [self.containerView addSubview:self.authLineView]; + + [self.containerView addSubview:self.confirmBtn]; + [self.containerView addSubview:self.tipsLabel]; +} + +- (void)initSubViewConstraints { + [self.containerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(0); + make.left.right.bottom.mas_equalTo(0); + }]; + + [self.areaLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(32); + make.top.mas_equalTo(20); + }]; + + [self.countryBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-32); + make.centerY.mas_equalTo(self.areaLabel); + }]; + + [self.areaLineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.areaLabel.mas_bottom).offset(18); + make.left.right.mas_equalTo(0).inset(32); + make.height.mas_equalTo(1); + }]; + + [self.areaCodeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.areaLineView.mas_bottom).offset(18); + make.left.mas_equalTo(self.areaLabel); + }]; + + [self.phoneNumTextField mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(80); + make.centerY.mas_equalTo(self.areaCodeLabel); + make.right.mas_equalTo(self.authCodeBtn.mas_left).offset(-20); + }]; + + [self.authCodeBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-32); + make.centerY.mas_equalTo(self.areaCodeLabel); + }]; + + [self.phoneLineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.height.mas_equalTo(self.areaLineView); + make.top.mas_equalTo(self.areaCodeLabel.mas_bottom).offset(18); + }]; + + [self.authCodeTextField mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(0).inset(32); + make.height.mas_equalTo(48); + make.top.mas_equalTo(self.phoneLineView.mas_bottom); + }]; + + [self.authLineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.left.right.mas_equalTo(self.areaLineView); + make.top.mas_equalTo(self.authCodeTextField.mas_bottom); + }]; + + [self.confirmBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(0).inset(32); + make.top.mas_equalTo(self.authLineView.mas_bottom).offset(70); + make.height.mas_equalTo(45); + }]; + + [self.tipsLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.confirmBtn.mas_bottom).offset(36); + make.centerX.mas_equalTo(0); + }]; +} +#pragma mark -配置 +- (void)setConfigs { + switch (self.bindingPhoneNumType) { + case XPBindingPhoneNumTypeEdit:{ + self.navigationItem.title = YMLocalizedString(@"XPLoginVerifBindPhoneViewController0"); + } + break; + case XPBindingPhoneNumTypeNormal:{ + self.navigationItem.title = YMLocalizedString(@"XPLoginVerifBindPhoneViewController1"); + } + break; + case XPBindingPhoneNumTypeConfirm:{ + self.tipsLabel.hidden = NO; + self.navigationItem.title = YMLocalizedString(@"XPLoginVerifBindPhoneViewController2"); + [self.confirmBtn setTitle:YMLocalizedString(@"XPLoginVerifBindPhoneViewController3") forState:UIControlStateNormal]; + if (self.userInfo.isBindPhone) { + self.phoneNumTextField.enabled = NO; + self.phoneNumTextField.text = self.userInfo.phone; + } + } + break; + default: + break; + } + + RAC(self.confirmBtn,enabled) = [RACSignal combineLatest:@[self.phoneNumTextField.rac_textSignal,self.authCodeTextField.rac_textSignal] reduce:^(NSString *phone,NSString *code){ + return @(phone.length == 11 && code.length == 5); + }]; + +} + + +#pragma mark 交互事件 +- (void)setEvents { + @weakify(self) + // 获取验证码点击事件 + [[[self.authCodeBtn rac_signalForControlEvents:UIControlEventTouchUpInside] filter:^BOOL(__kindof UIControl * _Nullable value) { + // 获取验证码 + if (self.phoneNumTextField.text.length == 0) { + [self showErrorToast:YMLocalizedString(@"XPLoginVerifBindPhoneViewController4")]; + return NO; + }else if (self.phoneNumTextField.text.length < 11) { + [self showErrorToast:YMLocalizedString(@"XPLoginVerifBindPhoneViewController5")]; + return NO; + }else { + return YES; + } + }] subscribeNext:^(id _Nullable x) { + @strongify(self); + [self.presenter phoneSmsCode:self.phoneNumTextField.text type:self.bindingPhoneNumType == XPBindingPhoneNumTypeConfirm ? GetSmsType_Unbind_Phone : GetSmsType_Bind_Phone phoneAreaCode:@""]; + }]; + + + // 绑定和验证 + [[[self.confirmBtn rac_signalForControlEvents:UIControlEventTouchUpInside] filter:^BOOL(__kindof UIControl * _Nullable value) { + @strongify(self) + // 确认绑定手机号 + if (self.phoneNumTextField.text.length == 0) { + [self showErrorToast:YMLocalizedString(@"XPLoginVerifBindPhoneViewController6")]; + return NO; + }else if (self.authCodeTextField.text.length == 0) { + [self showErrorToast:YMLocalizedString(@"XPLoginVerifBindPhoneViewController7")]; + return NO; + }else { + return YES; + } + }] subscribeNext:^(id _Nullable x) { + @strongify(self) + if (self.bindingPhoneNumType == XPBindingPhoneNumTypeConfirm) { + [self.presenter checkMoblieCodeWithMoblie:self.phoneNumTextField.text code:self.authCodeTextField.text]; + } else { + [self.presenter bindkMoblieCodeWithMoblie:self.phoneNumTextField.text code:self.authCodeTextField.text]; + } + } error:^(NSError * _Nullable error) { + + }]; +} + +#pragma mark - XPLoginVerifBindPhoneProtocol +- (void)phoneSmsCodeSuccess { + self.authCodeBtn.enabled = NO; + [self showSuccessToast:YMLocalizedString(@"XPLoginVerifBindPhoneViewController8")]; + [[CountDownHelper shareHelper] openCountdownWithTime:60]; +} + +- (void)checkMoblieCodeWithMoblieSuccess { + [self showSuccessToast:YMLocalizedString(@"XPLoginVerifBindPhoneViewController9")]; + [[CountDownHelper shareHelper] stopCountDown]; + XPLoginVerifBindPhoneViewController *vc = [[XPLoginVerifBindPhoneViewController alloc] init]; + vc.bindingPhoneNumType = XPBindingPhoneNumTypeEdit; + vc.userInfo = self.userInfo; + [self.navigationController pushViewController:vc animated:YES]; +} + +- (void)bindMoblieCodeWithMoblieSuccess { + [[CountDownHelper shareHelper] stopCountDown]; + // 修改绑定信息 + if (self.bindingPhoneNumType == XPBindingPhoneNumTypeEdit) { + @weakify(self); + [XPLoginBindSuccessView showBindSuccessViewWithHandler:^{ + @strongify(self); + // 返回设置页面 + __block __kindof UIViewController *vc; + [self.navigationController.childViewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj isKindOfClass:[XPMineSettingViewController class]]) { + vc = obj; // 导航控制器中有设置VC + } + }]; + + if ([self.navigationController.childViewControllers containsObject:vc]) { + [self.navigationController popToViewController:vc animated:YES]; + } else { + [self.navigationController popViewControllerAnimated:YES]; + } + }]; + } else if (self.bindingPhoneNumType == XPBindingPhoneNumTypeNormal) { + @weakify(self); + [XPLoginBindSuccessView showBindSuccessViewWithHandler:^{ + @strongify(self); + [self.navigationController popViewControllerAnimated:YES]; + }]; + } + self.confirmBtn.enabled = YES; // 打开交互 +} + + +#pragma mark - CountDownHelperDelegate +///倒计时进行中 +- (void)onCountdownOpen:(int)time { + [self.authCodeBtn setTitle:[NSString stringWithFormat:YMLocalizedString(@"XPLoginVerifBindPhoneViewController10"), time] forState:UIControlStateDisabled]; +} +///倒计时结束 +- (void)onCountdownFinish { + self.authCodeBtn.enabled= YES; + [self.authCodeBtn setTitle:YMLocalizedString(@"XPLoginVerifBindPhoneViewController11") forState:UIControlStateNormal]; +} + +#pragma mark - Getters And Setters +- (UIView *)containerView{ + if (!_containerView) { + _containerView = [[UIView alloc] init]; + _containerView.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; + } + return _containerView; +} + +- (UILabel *)areaLabel{ + if (!_areaLabel) { + _areaLabel = [[UILabel alloc] init]; + _areaLabel.text = YMLocalizedString(@"XPLoginVerifBindPhoneViewController12"); + _areaLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _areaLabel.font = [UIFont systemFontOfSize:14.f]; + _areaLabel.adjustsFontSizeToFitWidth = YES; + } + return _areaLabel; +} + +- (UILabel *)areaCodeLabel{ + if (!_areaCodeLabel) { + _areaCodeLabel = [[UILabel alloc] init]; + _areaCodeLabel.text = @"+852"; + _areaCodeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _areaCodeLabel.font = [UIFont systemFontOfSize:14.f]; + _areaCodeLabel.adjustsFontSizeToFitWidth = YES; + } + return _areaCodeLabel; +} + +- (UIButton *)countryBtn { + if (!_countryBtn) { + _countryBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_countryBtn setTitle:YMLocalizedString(@"XPLoginVerifBindPhoneViewController13") forState:UIControlStateNormal]; + [_countryBtn setImage:[UIImage imageNamed:@"mine_item_arrow"] forState:UIControlStateNormal]; + _countryBtn.transform = CGAffineTransformMakeScale(-1.0, 1.0); + _countryBtn.titleLabel.transform = CGAffineTransformMakeScale(-1.0, 1.0); + _countryBtn.imageView.transform = CGAffineTransformMakeScale(-1.0, 1.0); + _countryBtn.imageEdgeInsets = UIEdgeInsetsMake(0, -10, 0, 0); + [_countryBtn setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateNormal]; + [_countryBtn.titleLabel setFont:[UIFont systemFontOfSize:14.f]]; + } + return _countryBtn; +} + +- (UIButton *)confirmBtn { + if (!_confirmBtn) { + _confirmBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_confirmBtn setTitle:YMLocalizedString(@"XPLoginVerifBindPhoneViewController14") forState:UIControlStateNormal]; + [_confirmBtn setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_confirmBtn setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateDisabled]; + [_confirmBtn.titleLabel setFont:[UIFont fontWithName:@"PingFang-SC-Medium" size:18]]; + _confirmBtn.layer.cornerRadius = 22.5f; + _confirmBtn.layer.masksToBounds = YES; + _confirmBtn.enabled = NO; + [_confirmBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_confirmBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor disableButtonColor], [DJDKMIMOMColor disableButtonColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; + } + return _confirmBtn; +} + +- (UIButton *)authCodeBtn { + if (!_authCodeBtn) { + _authCodeBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_authCodeBtn setTitle:YMLocalizedString(@"XPLoginVerifBindPhoneViewController15") forState:UIControlStateNormal]; + [_authCodeBtn setTitleColor:[DJDKMIMOMColor appMainColor] forState:UIControlStateNormal]; + [_authCodeBtn setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateDisabled]; + [_authCodeBtn.titleLabel setFont:[UIFont systemFontOfSize:12.f]]; + } + return _authCodeBtn; +} + +- (UITextField *)phoneNumTextField { + if (!_phoneNumTextField) { + _phoneNumTextField = [[UITextField alloc] init]; + _phoneNumTextField.textColor = [DJDKMIMOMColor mainTextColor]; + _phoneNumTextField.font = [UIFont systemFontOfSize:14.f]; + _phoneNumTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginVerifBindPhoneViewController16")attributes:@{NSForegroundColorAttributeName: [DJDKMIMOMColor secondTextColor]}]; + _phoneNumTextField.clearButtonMode = UITextFieldViewModeWhileEditing; + _phoneNumTextField.borderStyle = UITextBorderStyleNone; + _phoneNumTextField.keyboardType = UIKeyboardTypeNumberPad; + _phoneNumTextField.tintColor = [DJDKMIMOMColor mainTextColor]; + } + return _phoneNumTextField; +} + + +- (UITextField *)authCodeTextField { + if (!_authCodeTextField) { + _authCodeTextField = [[UITextField alloc] init]; + _authCodeTextField.textColor = [DJDKMIMOMColor mainTextColor]; + _authCodeTextField.font = [UIFont systemFontOfSize:14.f]; + _authCodeTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginVerifBindPhoneViewController17")attributes:@{NSForegroundColorAttributeName: [DJDKMIMOMColor secondTextColor]}]; + _authCodeTextField.clearButtonMode = UITextFieldViewModeWhileEditing; + _authCodeTextField.borderStyle = UITextBorderStyleNone; + _authCodeTextField.keyboardType = UIKeyboardTypeNumberPad; + _authCodeTextField.tintColor = [DJDKMIMOMColor mainTextColor]; + } + return _authCodeTextField; +} + +- (UIView *)areaLineView { + if (!_areaLineView) { + _areaLineView = [[UIView alloc] init]; + _areaLineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _areaLineView; +} + +- (UIView *)phoneLineView { + if (!_phoneLineView) { + _phoneLineView = [[UIView alloc] init]; + _phoneLineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _phoneLineView; +} + +- (UIView *)authLineView { + if (!_authLineView) { + _authLineView = [[UIView alloc] init]; + _authLineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _authLineView; +} + +- (UILabel *)tipsLabel{ + if (!_tipsLabel) { + _tipsLabel = [[UILabel alloc] init]; + _tipsLabel.text = [NSString stringWithFormat:@"如果您的手机号已丢失\n请咨询客服,ID:%@", @"88001"]; + _tipsLabel.textColor = [DJDKMIMOMColor textThirdColor]; + _tipsLabel.font = [UIFont systemFontOfSize:14.f]; + _tipsLabel.adjustsFontSizeToFitWidth = YES; + _tipsLabel.numberOfLines = 0; + _tipsLabel.hidden = YES; + } + return _tipsLabel; +} + +@end diff --git a/YuMi/Modules/YMLogin/View/YUMISurmountDilemmaMobileConsequentRegardGovernancer.h b/YuMi/Modules/YMLogin/View/YUMISurmountDilemmaMobileConsequentRegardGovernancer.h deleted file mode 100644 index 46a1b770..00000000 --- a/YuMi/Modules/YMLogin/View/YUMISurmountDilemmaMobileConsequentRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMLoginBindPhoneResultViewController.h -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import "BaseRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN -@class ConsumerAbstractMatrix; -@interface YUMISurmountDilemmaMobileConsequentRegardGovernancer : BaseRegardGovernancer -@property (nonatomic, strong) ConsumerAbstractMatrix *userInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/YUMISurmountDilemmaMobileConsequentRegardGovernancer.m b/YuMi/Modules/YMLogin/View/YUMISurmountDilemmaMobileConsequentRegardGovernancer.m deleted file mode 100644 index bc0cc5ef..00000000 --- a/YuMi/Modules/YMLogin/View/YUMISurmountDilemmaMobileConsequentRegardGovernancer.m +++ /dev/null @@ -1,140 +0,0 @@ -// -// YMLoginBindPhoneResultViewController.m -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import "YUMISurmountDilemmaMobileConsequentRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "ConsumerAbstractMatrix.h" -#import "YUMISurmountValidationDilemmaMobileRegardGovernancer.h" -@interface YUMISurmountDilemmaMobileConsequentRegardGovernancer () - -@property (nonatomic, strong) UIView *containerView; -@property (nonatomic, strong) UIImageView *figureIndicateRegard; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UILabel *mobileSequencignation; -@property (nonatomic, strong) UIButton *diversificationMobileBtuton; - -@end - -@implementation YUMISurmountDilemmaMobileConsequentRegardGovernancer - - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initRegards]; - [self setUpwardsRestrictions]; - [self setDispositions]; -} - -#pragma mark - Private Method -- (void)initRegards { - [self.view addSubview:self.containerView]; - [self.containerView addSubview:self.figureIndicateRegard]; - [self.containerView addSubview:self.titleLabel]; - [self.containerView addSubview:self.mobileSequencignation]; - [self.containerView addSubview:self.diversificationMobileBtuton]; -} - -- (void)setDispositions { - self.title = YMLocalizedString(@"XPLoginBindPhoneResultViewController0"); - self.mobileSequencignation.text = self.userInfo.phone; -} - -- (void)setUpwardsRestrictions { - [self.containerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(49); - make.left.right.bottom.mas_equalTo(0); - }]; - - [self.figureIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(50); - make.centerX.mas_equalTo(0); - make.size.mas_equalTo(CGSizeMake(135, 130)); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(0); - make.top.mas_equalTo(self.figureIndicateRegard.mas_bottom).offset(39); - }]; - - [self.mobileSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(0); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(11); - }]; - - [self.diversificationMobileBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.mobileSequencignation.mas_bottom).offset(41); - make.left.right.mas_equalTo(0).inset(32); - make.centerX.mas_equalTo(0); - make.height.mas_equalTo(45); - }]; -} -#pragma mark - Event Response -- (void)diversifictowardsionMobileBtutonPerformance:(UIButton *)sender { - YUMISurmountValidationDilemmaMobileRegardGovernancer *vc = [[YUMISurmountValidationDilemmaMobileRegardGovernancer alloc] init]; - vc.userInfo = self.userInfo; - vc.bindingMobileFigureGenre = XPBindingPhoneNumTypeConfirm; - [self.navigationController pushViewController:vc animated:YES]; -} - -#pragma mark - Getters And Setters -- (UIView *)containerView{ - if (!_containerView) { - _containerView = [[UIView alloc] init]; - _containerView.backgroundColor = [DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]; - } - return _containerView; -} - -- (UIImageView *)figureIndicateRegard{ - if (!_figureIndicateRegard) { - _figureIndicateRegard = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yumi_login_bind_phone_background"]]; - } - return _figureIndicateRegard; -} - -- (UILabel *)titleLabel{ - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"XPLoginBindPhoneResultViewController1"); - _titleLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _titleLabel.font = [UIFont systemFontOfSize:14.f]; - _titleLabel.adjustsFontSizeToFitWidth = YES; - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} - -- (UILabel *)mobileSequencignation{ - if (!_mobileSequencignation) { - _mobileSequencignation = [[UILabel alloc] init]; - _mobileSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _mobileSequencignation.font = [UIFont boldSystemFontOfSize:18.f]; - _mobileSequencignation.adjustsFontSizeToFitWidth = YES; - _mobileSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _mobileSequencignation; -} - -- (UIButton *)diversificationMobileBtuton { - if (!_diversificationMobileBtuton) { - _diversificationMobileBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_diversificationMobileBtuton setTitle:YMLocalizedString(@"XPLoginBindPhoneResultViewController2") forState:UIControlStateNormal]; - [_diversificationMobileBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_diversificationMobileBtuton.titleLabel setFont:[UIFont fontWithName:@"PingFang-SC-Medium" size:18]]; - [_diversificationMobileBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _diversificationMobileBtuton.layer.masksToBounds = YES; - _diversificationMobileBtuton.layer.cornerRadius = 22.5; - [_diversificationMobileBtuton addTarget:self action:@selector(diversifictowardsionMobileBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _diversificationMobileBtuton; -} - - -@end diff --git a/YuMi/Modules/YMLogin/View/YUMISurmountValidationDilemmaMobileRegardGovernancer.h b/YuMi/Modules/YMLogin/View/YUMISurmountValidationDilemmaMobileRegardGovernancer.h deleted file mode 100644 index ff3a2774..00000000 --- a/YuMi/Modules/YMLogin/View/YUMISurmountValidationDilemmaMobileRegardGovernancer.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YMLoginVerifBindPhoneViewController.h -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - - -typedef NS_ENUM(NSUInteger, MKJBindingPhoneNumGenre) { - XPBindingPhoneNumTypeNormal = 0, - XPBindingPhoneNumTypeEdit = 1, - XPBindingPhoneNumTypeConfirm = 2, -}; -@class ConsumerAbstractMatrix; -@interface YUMISurmountValidationDilemmaMobileRegardGovernancer : MvpRegardGovernancer -@property (nonatomic, assign) MKJBindingPhoneNumGenre bindingMobileFigureGenre; -@property (nonatomic, strong) ConsumerAbstractMatrix *userInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/YUMISurmountValidationDilemmaMobileRegardGovernancer.m b/YuMi/Modules/YMLogin/View/YUMISurmountValidationDilemmaMobileRegardGovernancer.m deleted file mode 100644 index 1c10ac41..00000000 --- a/YuMi/Modules/YMLogin/View/YUMISurmountValidationDilemmaMobileRegardGovernancer.m +++ /dev/null @@ -1,425 +0,0 @@ -// -// YMLoginVerifBindPhoneViewController.m -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import "YUMISurmountValidationDilemmaMobileRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIConstant.h" -#import "YUMIMacroUitls.h" -#import "UIImage+Utils.h" -#import "ComputationDownFacilitater.h" -#import "ConsumerAbstractMatrix.h" -#import "FBCSurmountVerifBindPhoneCeremony.h" -#import "YUMISurmountValidationDilemmaMobileExternalizer.h" -#import "SurmountDilemmaMobileRegardGovernancer.h" -#import "YUMIManeInstanllingRegardGovernancer.h" -#import "YUMISurmountDilemmaSuccessRegard.h" - -@interface YUMISurmountValidationDilemmaMobileRegardGovernancer () -@property (nonatomic, strong) UIView *containerView; -@property (nonatomic, strong) UILabel *spectrumSequencignation; -@property (nonatomic, strong) UIButton *computationryBtuton; -@property (nonatomic, strong) UIView *spectrumBurlywoodRegard; - -@property (nonatomic, strong) UIView *mobileBurlywoodRegard; -@property (nonatomic, strong) UIView *attestationBurlywoodRegard; -@property (nonatomic, strong) UILabel *spectrumCryptogramSequencignation; - -@property (nonatomic, strong) UIButton *attestationCryptogramBtuton; -@property (nonatomic, strong) UITextField *mobileFigureEssayUniverse; -@property (nonatomic, strong) UITextField *attestationCryptogramEssayUniverse; - -@property (nonatomic, strong) UIButton *confirmBtn; - -@property (nonatomic, strong) UILabel *promptsSequencignation; -@property (nonatomic, assign) BOOL isResetMobile; -@end - -@implementation YUMISurmountValidationDilemmaMobileRegardGovernancer - -- (void)dealloc { - [[ComputationDownFacilitater partowardsiciptowardsionFacilittowardseer] suspeindComputtowardsionPubescence]; -} - -- (YUMISurmountValidationDilemmaMobileExternalizer *)producePresimport { - return [[YUMISurmountValidationDilemmaMobileExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self setDispositions]; - [self setEvents]; -} - -- (void)viewDidDisappear:(BOOL)animated { - [super viewDidDisappear:animated]; - [[ComputationDownFacilitater partowardsiciptowardsionFacilittowardseer] suspeindComputtowardsionPubescence]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [ComputationDownFacilitater partowardsiciptowardsionFacilittowardseer].delegate = self; - [self.view addSubview:self.containerView]; - [self.containerView addSubview:self.spectrumSequencignation]; - [self.containerView addSubview:self.computationryBtuton]; - - [self.containerView addSubview:self.spectrumBurlywoodRegard]; - [self.containerView addSubview:self.spectrumCryptogramSequencignation]; - [self.containerView addSubview:self.mobileFigureEssayUniverse]; - [self.containerView addSubview:self.mobileBurlywoodRegard]; - - [self.containerView addSubview:self.attestationCryptogramBtuton]; - [self.containerView addSubview:self.attestationCryptogramEssayUniverse]; - [self.containerView addSubview:self.attestationBurlywoodRegard]; - - [self.containerView addSubview:self.confirmBtn]; - [self.containerView addSubview:self.promptsSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.containerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(0); - make.left.right.bottom.mas_equalTo(0); - }]; - - [self.spectrumSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(32); - make.top.mas_equalTo(20); - }]; - - [self.computationryBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-32); - make.centerY.mas_equalTo(self.spectrumSequencignation); - }]; - - [self.spectrumBurlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.spectrumSequencignation.mas_bottom).offset(18); - make.left.right.mas_equalTo(0).inset(32); - make.height.mas_equalTo(1); - }]; - - [self.spectrumCryptogramSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.spectrumBurlywoodRegard.mas_bottom).offset(18); - make.left.mas_equalTo(self.spectrumSequencignation); - }]; - - [self.mobileFigureEssayUniverse mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(80); - make.centerY.mas_equalTo(self.spectrumCryptogramSequencignation); - make.right.mas_equalTo(self.attestationCryptogramBtuton.mas_left).offset(-20); - }]; - - [self.attestationCryptogramBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-32); - make.centerY.mas_equalTo(self.spectrumCryptogramSequencignation); - }]; - - [self.mobileBurlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.height.mas_equalTo(self.spectrumBurlywoodRegard); - make.top.mas_equalTo(self.spectrumCryptogramSequencignation.mas_bottom).offset(18); - }]; - - [self.attestationCryptogramEssayUniverse mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(0).inset(32); - make.height.mas_equalTo(48); - make.top.mas_equalTo(self.mobileBurlywoodRegard.mas_bottom); - }]; - - [self.attestationBurlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.left.right.mas_equalTo(self.spectrumBurlywoodRegard); - make.top.mas_equalTo(self.attestationCryptogramEssayUniverse.mas_bottom); - }]; - - [self.confirmBtn mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(0).inset(32); - make.top.mas_equalTo(self.attestationBurlywoodRegard.mas_bottom).offset(70); - make.height.mas_equalTo(45); - }]; - - [self.promptsSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.confirmBtn.mas_bottom).offset(36); - make.centerX.mas_equalTo(0); - }]; -} -#pragma mark -配置 -- (void)setDispositions { - switch (self.bindingMobileFigureGenre) { - case XPBindingPhoneNumTypeEdit:{ - self.navigationItem.title = YMLocalizedString(@"XPLoginVerifBindPhoneViewController0"); - } - break; - case XPBindingPhoneNumTypeNormal:{ - self.navigationItem.title = YMLocalizedString(@"XPLoginVerifBindPhoneViewController1"); - } - break; - case XPBindingPhoneNumTypeConfirm:{ - self.promptsSequencignation.hidden = NO; - self.navigationItem.title = YMLocalizedString(@"XPLoginVerifBindPhoneViewController2"); - [self.confirmBtn setTitle:YMLocalizedString(@"XPLoginVerifBindPhoneViewController3") forState:UIControlStateNormal]; - if (self.userInfo.isBindPhone) { - self.mobileFigureEssayUniverse.enabled = NO; - self.mobileFigureEssayUniverse.text = self.userInfo.phone; - } - } - break; - default: - break; - } - - RAC(self.confirmBtn,enabled) = [RACSignal combineLatest:@[self.mobileFigureEssayUniverse.rac_textSignal,self.attestationCryptogramEssayUniverse.rac_textSignal] reduce:^(NSString *phone,NSString *code){ - return @(phone.length == 11 && code.length == 5); - }]; - -} - - -#pragma mark 交互事件 -- (void)setEvents { - @weakify(self) - - [[[self.attestationCryptogramBtuton rac_signalForControlEvents:UIControlEventTouchUpInside] filter:^BOOL(__kindof UIControl * _Nullable value) { - - if (self.mobileFigureEssayUniverse.text.length == 0) { - [self EvidenceMistakeToast:YMLocalizedString(@"XPLoginVerifBindPhoneViewController4")]; - return NO; - }else if (self.mobileFigureEssayUniverse.text.length < 11) { - [self EvidenceMistakeToast:YMLocalizedString(@"XPLoginVerifBindPhoneViewController5")]; - return NO; - }else { - return YES; - } - }] subscribeNext:^(id _Nullable x) { - @strongify(self); - [self.presimport mobileSmsCryptogram:self.mobileFigureEssayUniverse.text type:self.bindingMobileFigureGenre == XPBindingPhoneNumTypeConfirm ? GetSmsGenre_Unbind_Phone : GetSmsGenre_Bind_Phone phoneAreaCode:@""]; - }]; - - - - [[[self.confirmBtn rac_signalForControlEvents:UIControlEventTouchUpInside] filter:^BOOL(__kindof UIControl * _Nullable value) { - @strongify(self) - - if (self.mobileFigureEssayUniverse.text.length == 0) { - [self EvidenceMistakeToast:YMLocalizedString(@"XPLoginVerifBindPhoneViewController6")]; - return NO; - }else if (self.attestationCryptogramEssayUniverse.text.length == 0) { - [self EvidenceMistakeToast:YMLocalizedString(@"XPLoginVerifBindPhoneViewController7")]; - return NO; - }else { - return YES; - } - }] subscribeNext:^(id _Nullable x) { - @strongify(self) - if (self.bindingMobileFigureGenre == XPBindingPhoneNumTypeConfirm) { - [self.presimport examineAplictowardsionartowardsusCryptogramAboutAplictowardsionartowardsus:self.mobileFigureEssayUniverse.text code:self.attestationCryptogramEssayUniverse.text]; - } else { - [self.presimport dilemmakAplictowardsionartowardsusCryptogramAboutAplictowardsionartowardsus:self.mobileFigureEssayUniverse.text code:self.attestationCryptogramEssayUniverse.text]; - } - } error:^(NSError * _Nullable error) { - - }]; -} - -#pragma mark - FBCSurmountVerifBindPhoneCeremony -- (void)mobileSmsCryptogramAccomplishment { - self.attestationCryptogramBtuton.enabled = NO; - [self EvidenceAccomplishmentToast:YMLocalizedString(@"XPLoginVerifBindPhoneViewController8")]; - [[ComputationDownFacilitater partowardsiciptowardsionFacilittowardseer] unfoildComputtowardsiondownAboutIntrtowardsemporal:60]; -} - -- (void)examineAplictowardsionartowardsusCryptogramAboutAplictowardsionartowardsusAccomplishment { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"XPLoginVerifBindPhoneViewController9")]; - [[ComputationDownFacilitater partowardsiciptowardsionFacilittowardseer] suspeindComputtowardsionPubescence]; - YUMISurmountValidationDilemmaMobileRegardGovernancer *vc = [[YUMISurmountValidationDilemmaMobileRegardGovernancer alloc] init]; - vc.bindingMobileFigureGenre = XPBindingPhoneNumTypeEdit; - vc.userInfo = self.userInfo; - [self.navigationController pushViewController:vc animated:YES]; -} - -- (void)dilemmaAplictowardsionartowardsusCryptogramAboutAplictowardsionartowardsusAccomplishment { - [[ComputationDownFacilitater partowardsiciptowardsionFacilittowardseer] suspeindComputtowardsionPubescence]; - - if (self.bindingMobileFigureGenre == XPBindingPhoneNumTypeEdit) { - @weakify(self); - [YUMISurmountDilemmaSuccessRegard EvidenceBindAccomplishmentRegardAboutShankr:^{ - @strongify(self); - - __block __kindof UIViewController *vc; - [self.navigationController.childViewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj isKindOfClass:[YUMIManeInstanllingRegardGovernancer class]]) { - vc = obj; - } - }]; - - if ([self.navigationController.childViewControllers containsObject:vc]) { - [self.navigationController popToViewController:vc animated:YES]; - } else { - [self.navigationController popViewControllerAnimated:YES]; - } - }]; - } else if (self.bindingMobileFigureGenre == XPBindingPhoneNumTypeNormal) { - @weakify(self); - [YUMISurmountDilemmaSuccessRegard EvidenceBindAccomplishmentRegardAboutShankr:^{ - @strongify(self); - [self.navigationController popViewControllerAnimated:YES]; - }]; - } - self.confirmBtn.enabled = YES; -} - - -#pragma mark - CountDownHelperRepresendtation -- (void)onComputtowardsiondownUnfoild:(int)time { - [self.attestationCryptogramBtuton setTitle:[NSString stringWithFormat:YMLocalizedString(@"XPLoginVerifBindPhoneViewController10"), time] forState:UIControlStateDisabled]; -} -- (void)onComputtowardsiondownAccomplish { - self.attestationCryptogramBtuton.enabled= YES; - [self.attestationCryptogramBtuton setTitle:YMLocalizedString(@"XPLoginVerifBindPhoneViewController11") forState:UIControlStateNormal]; -} - -#pragma mark - Getters And Setters -- (UIView *)containerView{ - if (!_containerView) { - _containerView = [[UIView alloc] init]; - _containerView.backgroundColor = [DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]; - } - return _containerView; -} - -- (UILabel *)spectrumSequencignation{ - if (!_spectrumSequencignation) { - _spectrumSequencignation = [[UILabel alloc] init]; - _spectrumSequencignation.text = YMLocalizedString(@"XPLoginVerifBindPhoneViewController12"); - _spectrumSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _spectrumSequencignation.font = [UIFont systemFontOfSize:14.f]; - _spectrumSequencignation.adjustsFontSizeToFitWidth = YES; - } - return _spectrumSequencignation; -} - -- (UILabel *)spectrumCryptogramSequencignation{ - if (!_spectrumCryptogramSequencignation) { - _spectrumCryptogramSequencignation = [[UILabel alloc] init]; - _spectrumCryptogramSequencignation.text = @"+852"; - _spectrumCryptogramSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _spectrumCryptogramSequencignation.font = [UIFont systemFontOfSize:14.f]; - _spectrumCryptogramSequencignation.adjustsFontSizeToFitWidth = YES; - } - return _spectrumCryptogramSequencignation; -} - -- (UIButton *)computationryBtuton { - if (!_computationryBtuton) { - _computationryBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_computationryBtuton setTitle:YMLocalizedString(@"XPLoginVerifBindPhoneViewController13") forState:UIControlStateNormal]; - [_computationryBtuton setImage:[UIImage imageNamed:@"yumi_center_item_arrow"] forState:UIControlStateNormal]; - _computationryBtuton.transform = CGAffineTransformMakeScale(-1.0, 1.0); - _computationryBtuton.titleLabel.transform = CGAffineTransformMakeScale(-1.0, 1.0); - _computationryBtuton.imageView.transform = CGAffineTransformMakeScale(-1.0, 1.0); - _computationryBtuton.imageEdgeInsets = UIEdgeInsetsMake(0, -10, 0, 0); - [_computationryBtuton setTitleColor:[DJDKMIMOMColor instantEssayPrettify] forState:UIControlStateNormal]; - [_computationryBtuton.titleLabel setFont:[UIFont systemFontOfSize:14.f]]; - } - return _computationryBtuton; -} - -- (UIButton *)confirmBtn { - if (!_confirmBtn) { - _confirmBtn = [UIButton buttonWithType:UIButtonTypeCustom]; - [_confirmBtn setTitle:YMLocalizedString(@"XPLoginVerifBindPhoneViewController14") forState:UIControlStateNormal]; - [_confirmBtn setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_confirmBtn setTitleColor:[DJDKMIMOMColor prohibitionBtutonEssayPrettify] forState:UIControlStateDisabled]; - [_confirmBtn.titleLabel setFont:[UIFont fontWithName:@"PingFang-SC-Medium" size:18]]; - _confirmBtn.layer.cornerRadius = 22.5f; - _confirmBtn.layer.masksToBounds = YES; - _confirmBtn.enabled = NO; - [_confirmBtn setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_confirmBtn setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor prohibitionBtutonPrettify], [DJDKMIMOMColor prohibitionBtutonPrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; - } - return _confirmBtn; -} - -- (UIButton *)attestationCryptogramBtuton { - if (!_attestationCryptogramBtuton) { - _attestationCryptogramBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_attestationCryptogramBtuton setTitle:YMLocalizedString(@"XPLoginVerifBindPhoneViewController15") forState:UIControlStateNormal]; - [_attestationCryptogramBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionMainPrettify] forState:UIControlStateNormal]; - [_attestationCryptogramBtuton setTitleColor:[DJDKMIMOMColor instantEssayPrettify] forState:UIControlStateDisabled]; - [_attestationCryptogramBtuton.titleLabel setFont:[UIFont systemFontOfSize:12.f]]; - } - return _attestationCryptogramBtuton; -} - -- (UITextField *)mobileFigureEssayUniverse { - if (!_mobileFigureEssayUniverse) { - _mobileFigureEssayUniverse = [[UITextField alloc] init]; - _mobileFigureEssayUniverse.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _mobileFigureEssayUniverse.font = [UIFont systemFontOfSize:14.f]; - _mobileFigureEssayUniverse.attributedPlaceholder = [[NSAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginVerifBindPhoneViewController16")attributes:@{NSForegroundColorAttributeName: [DJDKMIMOMColor instantEssayPrettify]}]; - _mobileFigureEssayUniverse.clearButtonMode = UITextFieldViewModeWhileEditing; - _mobileFigureEssayUniverse.borderStyle = UITextBorderStyleNone; - _mobileFigureEssayUniverse.keyboardType = UIKeyboardTypeNumberPad; - _mobileFigureEssayUniverse.tintColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _mobileFigureEssayUniverse; -} - - -- (UITextField *)attestationCryptogramEssayUniverse { - if (!_attestationCryptogramEssayUniverse) { - _attestationCryptogramEssayUniverse = [[UITextField alloc] init]; - _attestationCryptogramEssayUniverse.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _attestationCryptogramEssayUniverse.font = [UIFont systemFontOfSize:14.f]; - _attestationCryptogramEssayUniverse.attributedPlaceholder = [[NSAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginVerifBindPhoneViewController17")attributes:@{NSForegroundColorAttributeName: [DJDKMIMOMColor instantEssayPrettify]}]; - _attestationCryptogramEssayUniverse.clearButtonMode = UITextFieldViewModeWhileEditing; - _attestationCryptogramEssayUniverse.borderStyle = UITextBorderStyleNone; - _attestationCryptogramEssayUniverse.keyboardType = UIKeyboardTypeNumberPad; - _attestationCryptogramEssayUniverse.tintColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _attestationCryptogramEssayUniverse; -} - -- (UIView *)spectrumBurlywoodRegard { - if (!_spectrumBurlywoodRegard) { - _spectrumBurlywoodRegard = [[UIView alloc] init]; - _spectrumBurlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _spectrumBurlywoodRegard; -} - -- (UIView *)mobileBurlywoodRegard { - if (!_mobileBurlywoodRegard) { - _mobileBurlywoodRegard = [[UIView alloc] init]; - _mobileBurlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _mobileBurlywoodRegard; -} - -- (UIView *)attestationBurlywoodRegard { - if (!_attestationBurlywoodRegard) { - _attestationBurlywoodRegard = [[UIView alloc] init]; - _attestationBurlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _attestationBurlywoodRegard; -} - -- (UILabel *)promptsSequencignation{ - if (!_promptsSequencignation) { - _promptsSequencignation = [[UILabel alloc] init]; - _promptsSequencignation.text = [NSString stringWithFormat:@"如果您的手机号已丢失\n请咨询客服,ID:%@", @"88001"]; - _promptsSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - _promptsSequencignation.font = [UIFont systemFontOfSize:14.f]; - _promptsSequencignation.adjustsFontSizeToFitWidth = YES; - _promptsSequencignation.numberOfLines = 0; - _promptsSequencignation.hidden = YES; - } - return _promptsSequencignation; -} - -@end diff --git a/YuMi/Modules/YMMessage/Api/Api+Message.h b/YuMi/Modules/YMMessage/Api/Api+Message.h index d3e87438..b41d5cda 100644 --- a/YuMi/Modules/YMMessage/Api/Api+Message.h +++ b/YuMi/Modules/YMMessage/Api/Api+Message.h @@ -11,7 +11,7 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (Message) -+ (void)acquireChinwagRestriction:(HttpRequestHelperCompletion)complection receiverUid:(NSString *)receiverUid ; ++ (void)getChatLimit:(HttpRequestHelperCompletion)complection receiverUid:(NSString *)receiverUid ; @end diff --git a/YuMi/Modules/YMMessage/Api/Api+Message.m b/YuMi/Modules/YMMessage/Api/Api+Message.m index 13ffb468..34070cb1 100644 --- a/YuMi/Modules/YMMessage/Api/Api+Message.m +++ b/YuMi/Modules/YMMessage/Api/Api+Message.m @@ -9,9 +9,9 @@ #import @implementation Api (Message) -+ (void)acquireChinwagRestriction:(HttpRequestHelperCompletion)complection receiverUid:(NSString *)receiverUid { - NSString * fang = [NSString stringFromBase64String:@"cHJpdmF0ZUNoYXQvbGltaXQ="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, receiverUid,nil]; ++ (void)getChatLimit:(HttpRequestHelperCompletion)complection receiverUid:(NSString *)receiverUid { + NSString * fang = [NSString stringFromBase64String:@"cHJpdmF0ZUNoYXQvbGltaXQ="];///privateChat/limit + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, receiverUid,nil]; } @end diff --git a/YuMi/Modules/YMMessage/Model/AttachmentMatrix.h b/YuMi/Modules/YMMessage/Model/AttachmentMatrix.h deleted file mode 100644 index a6ebb48c..00000000 --- a/YuMi/Modules/YMMessage/Model/AttachmentMatrix.h +++ /dev/null @@ -1,503 +0,0 @@ -// -// AttachmentMatrix.h -// YUMI -// -// Created by YUMI on 2021/11/16. -// - -#import -#import -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationGenre) { - - IndividualityCommunicationGenre_Room_Tip = 2, - - IndividualityCommunicationGenre_Gift = 3, - - IndividualityCommunicationGenre_Account = 5, - - IndividualityCommunicationGenre_Member_Online = 6, - - IndividualityCommunicationGenre_Queue = 8, - - IndividualityCommunicationGenre_Face = 9, - - IndividualityCommunicationGenre_Tweet = 10, - - IndividualityCommunicationGenre_AllMicroSend = 12, - - IndividualityCommunicationGenre_Car_Notify = 15, - - IndividualityCommunicationGenre_Kick_User = 18, - - IndividualityCommunicationGenre_Secretary = 19, - - IndividualityCommunicationGenre_Update_RoomInfo = 20, - - IndividualityCommunicationGenre_Application_Share = 22, - - IndividualityCommunicationGenre_Message_Handle = 23, - - IndividualityCommunicationGenre_User_UpGrade = 24, - - IndividualityCommunicationGenre_Candy_Tree = 26, - - IndividualityCommunicationGenre_Arrange_Mic = 30, - - IndividualityCommunicationGenre_Room_PK = 31, - - IndividualityCommunicationGenre_Hall = 32, - - IndividualityCommunicationGenre_Room_GiftValue = 42, - - IndividualityCommunicationGenre_Version_Update = 49, - - IndividualityCommunicationGenre_Hall_Super_Admin = 50, - - IndividualityCommunicationGenre_Monents = 52, - - IndividualityCommunicationGenre_Collection_Room = 59, - - IndividualityCommunicationGenre_RedPacket = 60, - - IndividualityCommunicationGenre_LuckyBag = 61, - - IndividualityCommunicationGenre_FindNew = 62, - - IndividualityCommunicationGenre_Tarot = 71, - - IndividualityCommunicationGenre_RoomPlay_Dating = 72, - - IndividualityCommunicationGenre_Chat_Risk_Alert = 75, - - IndividualityCommunicationGenre_First_Recharge_Reward = 76, - - IndividualityCommunicationGenre_First_VisitorRecord = 78, - - IndividualityCommunicationGenre_Room_Sailing = 81, - - IndividualityCommunicationGenre_Across_Room_PK = 83, - - IndividualityCommunicationGenre_Noble_VIP = 85, - - IndividualityCommunicationGenre_AnchorRoom_AudienceUpMic = 86, - - IndividualityCommunicationGenre_Skill_Card = 87, - - IndividualityCommunicationGenre_Anchor_Hour_Rank = 89, - - IndividualityCommunicationGenre_Anchor_FansTeam = 90, - - IndividualityCommunicationGenre_Licnese_Hour_Rank = 91, - - IndividualityCommunicationGenre_Task_Complete = 92, - - IndividualityCommunicationGenre_Gift_Compound = 93, - - IndividualityCommunicationGenre_Graffiti_Gift = 94, - - IndividualityCommunicationGenre_Graffiti_Star_Kitchen = 95, - - IndividualityCommunicationGenre_Look_Love = 98, -}; - - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationMetroChamberTip) { - - Custom_Message_Sub_Room_Tip_ShareRoom = 21, - - Custom_Message_Sub_Room_Tip_Attention_Owner = 22, -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationMetroPresent) { - - Custom_Message_Sub_Gift_Send = 31, - - Custom_Message_Sub_Gift_ChannelNotify = 32, - - Custom_Message_Sub_Gift_LuckySend = 34, -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationMetroAccount) { - - Custom_Message_Sub_Account_Changed = 51, -}; - -typedef NS_ENUM(NSInteger, IndividualityCommunicationMetroOnLine) { - - Custom_Message_Type_Attention_Member_Online = 61 -}; - -typedef NS_ENUM(NSInteger, IndividualityCommunicationMetroQueue) { - - Custom_Message_Sub_Queue_Invite = 81, - - Custom_Message_Sub_Queue_Kick = 82, -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationMetroFace) { - - Custom_Message_Sub_Face_Send = 91, -}; - -typedef NS_ENUM(NSInteger, IndividualityCommunicationMetroTweet) { - - Custom_Message_Sub_Tweet_News = 101, -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationMetroAllMiecreoscoopeDischarge) { - - Custom_Message_Sub_AllMicroSend = 121, - - Custom_Message_Sub_AllBatchSend = 123, - - Custom_Message_Sub_AllBatchMicroLuckySend = 124, - - Custom_Message_Sub_AllMicroLuckySend = 125, -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationMetroCar) { - Custom_Message_Sub_Car_EnterRoom = 159, -}; - -typedef NS_ENUM(NSUInteger, IndividualityNotificationMetroKick) { - - Custom_Message_Sub_Kick_BlackList = 182, - - Custom_Message_Sub_Kick_BeKicked = 181, -}; - - -typedef NS_ENUM(NSUInteger, IndividualityNotificationSecretary) { - - Custom_Message_Sub_Secretary_Router = 191, -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationMetroUpdateChamberAbstract) { - - Custom_Message_Sub_Update_RoomInfo_AnimateEffect = 201, - - Custom_Message_Sub_Update_RoomInfo_MessageState = 203, - - Custom_Message_Sub_Update_RoomInfo_Notice = 204, - - Custom_Message_Sub_Update_RoomInfo_RedPacket = 205, - - Custom_Message_Sub_Update_RoomInfo_CleanScreen = 206, -}; - -typedef NS_ENUM(NSInteger, IndividualityCommunicationMetroApplicationShare) { - - Custom_Message_Sub_Application_Share_Room = 221, -}; - - -typedef NS_ENUM(NSInteger, IndividualityCommunicationMetroCommunicationHandle) { - Custom_Message_Sub_Message_Handle_Content = 231, - Custom_Message_Sub_Message_Handle_Bussiness = 232, -}; - -typedef NS_ENUM(NSInteger, IndividualityCommunicationMetroConsumerUpgrade) { - - Custom_Message_Sub_User_UpGrade_Exper = 241, - - Custom_Message_Sub_User_UpGrade_Charm = 242 -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationMetroCandyTree) { - - Custom_Message_Sub_Candy_Tree_Me = 261, - - Custom_Message_Sub_Candy_Tree_InRoom = 262, - - Custom_Message_Sub_Candy_Tree_AllRoom = 263, - - Custom_Message_Sub_Candy_Tree_AllRoom_Notify = 264, - - Custom_Message_Sub_Candy_Tree_InRoom_NeedAllMicSend = 265, - -}; - -typedef NS_ENUM(NSUInteger, IndividualityNotiHeaderArrangeLoudspeaker) { - - Custom_Message_Sub_Arrange_Mic_Non_Empty= 301, - - Custom_Message_Sub_Arrange_Mic_Empty= 302, - - Custom_Message_Sub_Arrange_Mic_Mode_Open= 303, - - Custom_Message_Sub_Arrange_Mic_Mode_Close= 304, - - Custom_Message_Sub_Arrange_Mic_Free_Mic_Open= 305, - - Custom_Message_Sub_Arrange_Mic_Free_Mic_Close= 306, -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationMetroChamberCombat){ - - Custom_Message_Sub_Room_PK_Non_Empty = 311, - - Custom_Message_Sub_Room_PK_Empty = 312, - - Custom_Message_Sub_Room_PK_Mode_Open = 313, - - Custom_Message_Sub_Room_PK_Mode_Close = 314, - - Custom_Message_Sub_Room_PK_Start = 315, - - Custom_Message_Sub_Room_PK_Result = 316, - - Custom_Message_Sub_Room_PK_Re_Start= 317, - - Custom_Message_Sub_Room_PK_Manager_Up_Mic = 318, -}; - -typedef NS_ENUM(NSUInteger, Individuality_Noti_Metro_HALL) { - - Custom_Message_Sub_Hall_Apply_Join = 321, - - Custom_Message_Sub_Hall_Manager_Invite = 322, - - Custom_Message_Sub_Hall_Apply_Exit = 323, - - Custom_Message_Sub_Hall_Notice = 324, - - Custom_Message_Sub_Hall_Become_Hall = 325, -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationMetroChamberPresentValue) { - - Custom_Message_Sub_Room_GiftValue_Sync = 421 -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationVersionUpdateValue) { - - Custom_Message_Version_Update_Value = 491 -}; - -typedef NS_ENUM(NSInteger, IndividualityCommunicationMetroHallSuperAdmin) { - - Custom_Message_Sub_Hall_Super_Admin_Remove_CP_Room_Limit = 501, - - Custom_Message_Sub_Hall_Super_Admin_Remove_Room_Pwd = 502, - - Custom_Message_Sub_Hall_Super_Admin_Lock_Mic = 503, - - Custom_Message_Sub_Hall_Super_Admin_Mute_Mic = 504, - - Custom_Message_Sub_Hall_Super_Admin_Kick_Down_Mic = 505, - - Custom_Message_Sub_Hall_Super_Admin_Mark_Black = 506, - - Custom_Message_Sub_Hall_Super_Admin_Kick_Out_Room = 507, - - Custom_Message_Sub_Hall_Super_Admin_Kick_Manager_Out_Room = 508, -}; - -typedef NS_ENUM(NSUInteger, Individuality_Noti_Metro_Dynamic) { - - Custom_Message_Sub_Monents_Unread_Update = 521, - - Custom_Message_Sub_Monents_Ban_Delete = 522, - - Custom_Message_Sub_Monents_Approved = 523, - - Custom_Message_Sub_Monents_Share = 524, -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationMetroRedPacket) { - Custom_Message_Sub_RoomGiftRedPacket = 601, - Custom_Message_Sub_RoomDiamandRedPacket = 602, - Custom_Message_Sub_AllGiftRedPacket = 603, - Custom_Message_Sub_AllDiamandRedPacket = 604, - Custom_Message_Sub_OpenRedPacketSuccess = 605, -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationMetroCollectChamber) { - - Custom_Message_Sub_Room_Gift_LuckBag= 610, - - Custom_Message_Sub_Room_Gift_LuckBag_Server = 611, -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationFindNewConsumerGreet) { - - Custom_Message_Find_New_Greet_New_User = 621, -}; -typedef NS_ENUM(NSUInteger, IndividualityCommunicationRouter) { - - Custom_Message_Router_H5 = 2, -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationMetroLuckyBag) { - - Custom_Message_Sub_Collect_Room_Tips = 591, - - Custom_Message_Sub_Collect_Room_Remind_User = 592, -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationMetroTarot) { - - Custom_Message_Sub_Tarot = 711, -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationMetroChamberDisportDating){ - - Custom_Message_Sub_Room_Play_Dating_Pick_Heart= 721, - - Custom_Message_Sub_Room_Play_Dating_Public_Result = 722, - - Custom_Message_Sub_Room_Play_Dating_Result_Not_Mutual = 723, - - Custom_Message_Sub_Room_Play_Dating_Result_Mutual = 724, -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationMetroChatRiskAlert) { - - Custom_Message_Sub_Chat_Risk_Alert= 751, -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationMetroFirstRecharge) { - - Custom_Message_Sub_Room_First_Recharge_Reward= 761, - - Custom_Message_Sub_New_User_Recharge_Reward = 762, -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationMetroVisitorRecord) { - - Custom_Message_Sub_Visitor_Record = 781, -}; - -typedef NS_ENUM(NSInteger, IndividualityCommunicationMetroSailing) { - - Custom_Message_Sub_Sailing_Me = 811, - - Custom_Message_Sub_Sailing_InRoom = 812, - - Custom_Message_Sub_Sailing_AllRoom = 813, - - Custom_Message_Sub_Sailing_AllRoom_Notify = 814, - - Custom_Message_Sub_Sailing_InRoom_NeedAllMicSend = 815, -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationMetroThroughoutChamberCombat) { - - Custom_Message_Sub_AcrossRoomPK_Invite = 831, - - Custom_Message_Sub_AcrossRoomPK_Reject = 832, - - Custom_Message_Sub_AcrossRoomPK_Accept = 833, - - Custom_Message_Sub_AcrossRoomPK_Panel = 834, - - Custom_Message_Sub_AcrossRoomPK_End = 835, - - Custom_Message_Sub_AcrossRoomPK_Result = 836, - - - Custom_Message_Sub_AnchorPK_Invite = 837, - - Custom_Message_Sub_AnchorPK_Reject = 838, - - Custom_Message_Sub_AnchorPK_Accept = 839, - - Custom_Message_Sub_AnchorPK_Panel = 8310, - - Custom_Message_Sub_AnchorPK_End = 8311, - - Custom_Message_Sub_AnchorPK_Result = 8312, - - Custom_Message_Sub_AnchorPK_Finish = 8313, - - Custom_Message_Sub_PK_BeginTime = 8314, - - Custom_Message_Sub_AnchorPK_Match_TimeOut = 8315, - - Custom_Message_Sub_AnchorPK_MuteOtherMic = 8316, -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationMetroNobleVIP) { - - Custom_Message_Sub_Room_Open_Noble_VIP = 851, - - Custom_Message_Sub_Open_Noble_Success = 852, - - Custom_Message_Sub_Room_Noble_LevelUp = 853, - - Custom_Message_Sub_Noble_LevelUp_User = 854, - - Custom_Message_Sub_Room_Noble_LevelUp_Suspend = 855, - - Custom_Message_Sub_AllRoom_Noble_LevelUp_Suspend = 856, - - Custom_Message_Sub_Room_Trumpet = 857, - -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationKellegHourRank) { - - Custom_Message_Sub_Anchor_Hour_Rank = 891, -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationKellegFansTeam) { - - Custom_Message_Sub_FansTeam_Open_Success = 901, - - Custom_Message_Sub_FansTeam_Open_Fail = 902, - - Custom_Message_Sub_FansTeam_Join_Success = 903, - - Custom_Message_Sub_FansTeam_Out_Success = 904, -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationLicneseHourRank) { - - Custom_Message_Sub_Licnese_Hour_Rank = 911, -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationTaskComplete) { - - Custom_Message_Sub_TaskComplete = 921, -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationPresentCompound) { - - Custom_Message_Sub_Gift_Compound = 931, -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationGraffitiPresent) { - - Custom_Message_Sub_Graffiti_Gift = 941, -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationGraffitiStarKitchen) { - - Custom_Message_Sub_Star_Kitchen_Room = 950, - - Custom_Message_Sub_Star_Kitchen_Server = 951, -}; - -typedef NS_ENUM(NSUInteger, IndividualityCommunicationMetroLookLove) { - - Custom_Message_Sub_Look_Love_Me = 981, - - Custom_Message_Sub_Look_Love_InRoom = 982, - - Custom_Message_Sub_Look_Love_AllRoom = 983, - - Custom_Message_Sub_Look_Love_AllRoom_Notify = 984, - - Custom_Message_Sub_Look_Love_InRoom_NeedAllMicSend = 985, - -}; - -@interface AttachmentMatrix : NSObject -@property (nonatomic,assign) int first; -@property (nonatomic,assign) int second; -@property (nonatomic, strong) id data; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Model/AttachmentMatrix.m b/YuMi/Modules/YMMessage/Model/AttachmentMatrix.m deleted file mode 100644 index 1e50ea67..00000000 --- a/YuMi/Modules/YMMessage/Model/AttachmentMatrix.m +++ /dev/null @@ -1,16 +0,0 @@ -// -// AttachmentMatrix.m -// YUMI -// -// Created by YUMI on 2021/11/16. -// - -#import "AttachmentMatrix.h" -#import "NSObject+MJExtension.h" -@implementation AttachmentMatrix - -- (NSString *)encodeAttachment { - return [self toJSONBWSttr]; -} - -@end diff --git a/YuMi/Modules/YMMessage/Model/AttachmentModel.h b/YuMi/Modules/YMMessage/Model/AttachmentModel.h new file mode 100644 index 00000000..2911a4a3 --- /dev/null +++ b/YuMi/Modules/YMMessage/Model/AttachmentModel.h @@ -0,0 +1,552 @@ +// +// AttachmentModel.h +// YUMI +// +// Created by YUMI on 2021/11/16. +// + +#import +#import +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSUInteger, CustomMessageType) { + ///房间提示 + CustomMessageType_Room_Tip = 2, + ///送礼物的接口 + CustomMessageType_Gift = 3, + ///账户更新 + CustomMessageType_Account = 5, + ///关注的主播上线 + CustomMessageType_Member_Online = 6, + ///队列操作 + CustomMessageType_Queue = 8, + ///表情 + CustomMessageType_Face = 9, + ///推文 + CustomMessageType_Tweet = 10, + ///全麦送 + CustomMessageType_AllMicroSend = 12, + ///座驾进房动画 + CustomMessageType_Car_Notify = 15, + ///踢出房间 + CustomMessageType_Kick_User = 18, + ///小秘书消息 + CustomMessageType_Secretary = 19, + ///房间信息更新 + CustomMessageType_Update_RoomInfo = 20, + ///应用内分享 + CustomMessageType_Application_Share = 22, + ///系统通知,自定义布局消息(带确认、取消) + CustomMessageType_Message_Handle = 23, + ///用户升级 + CustomMessageType_User_UpGrade = 24, + ///糖果树 + CustomMessageType_Candy_Tree = 26, + ///排麦 + CustomMessageType_Arrange_Mic = 30, + ///房间内PK + CustomMessageType_Room_PK = 31, + ///家族 + CustomMessageType_Hall = 32, + ///房间礼物值 + CustomMessageType_Room_GiftValue = 42, + ///版本升级 + CustomMessageType_Version_Update = 49, + ///公会超管 + CustomMessageType_Hall_Super_Admin = 50, + ///动态 + CustomMessageType_Monents = 52, + ///收藏房间 + CustomMessageType_Collection_Room = 59, + ///房间红包 + CustomMessageType_RedPacket = 60, + ///福袋消息 + CustomMessageType_LuckyBag = 61, + ///发现萌新 + CustomMessageType_FindNew = 62, + ///塔罗 + CustomMessageType_Tarot = 71, + ///相亲 + CustomMessageType_RoomPlay_Dating = 72, + ///私聊风险提醒 + CustomMessageType_Chat_Risk_Alert = 75, + ///首充奖励 + CustomMessageType_First_Recharge_Reward = 76, + ///访客记录 + CustomMessageType_First_VisitorRecord = 78, + ///航海 + CustomMessageType_Room_Sailing = 81, + ///跨房PK + CustomMessageType_Across_Room_PK = 83, + ///贵族VIP + CustomMessageType_Noble_VIP = 85, + ///个播房观众点击空坑位,房主收到请求上麦提示 + CustomMessageType_AnchorRoom_AudienceUpMic = 86, + ///技能卡 + CustomMessageType_Skill_Card = 87, + ///个播小时榜 + CustomMessageType_Anchor_Hour_Rank = 89, + ///个播粉丝团 + CustomMessageType_Anchor_FansTeam = 90, + ///牌照房小时榜 + CustomMessageType_Licnese_Hour_Rank = 91, + ///任务完成通知 + CustomMessageType_Task_Complete = 92, + ///礼物合成 + CustomMessageType_Gift_Compound = 93, + ///涂鸦礼物 + CustomMessageType_Graffiti_Gift = 94, + ///星级厨房飘屏 + CustomMessageType_Graffiti_Star_Kitchen = 95, + ///寻爱之旅 + CustomMessageType_Look_Love = 98, +}; + + +///first = CustomMessageType_Room_Tip +typedef NS_ENUM(NSUInteger, CustomMessageSubRoomTip) { + ///分享房间 + Custom_Message_Sub_Room_Tip_ShareRoom = 21, + ///关注房主 + Custom_Message_Sub_Room_Tip_Attention_Owner = 22, +}; + +///first = CustomMessageType_Gift +typedef NS_ENUM(NSUInteger, CustomMessageSubGift) { + ///发送礼物 + Custom_Message_Sub_Gift_Send = 31, + ///全服发送礼物 + Custom_Message_Sub_Gift_ChannelNotify = 32, + ///发送 福袋 礼物 + Custom_Message_Sub_Gift_LuckySend = 34, +}; + +///first = CustomMessageType_Account +typedef NS_ENUM(NSUInteger, CustomMessageSubAccount) { + //账户余额钻石变更 + Custom_Message_Sub_Account_Changed = 51, +}; + +///first = CustomMessageType_Member_Online +typedef NS_ENUM(NSInteger, CustomMessageSubOnLine) { + ///房主的主播上线了 + Custom_Message_Type_Attention_Member_Online = 61 +}; + +///first = CustomMessageType_Queue +typedef NS_ENUM(NSInteger, CustomMessageSubQueue) { + ///邀请上麦 + Custom_Message_Sub_Queue_Invite = 81, + ///踢下麦 + Custom_Message_Sub_Queue_Kick = 82, +}; + +//first = CustomMessageType_Face +typedef NS_ENUM(NSUInteger, CustomMessageSubFace) { + ///发送 + Custom_Message_Sub_Face_Send = 91, +}; + +///first == CustomMessageType_Tweet +typedef NS_ENUM(NSInteger, CustomMessageSubTweet) { + ///推文的内容 + Custom_Message_Sub_Tweet_News = 101, +}; + +///first = CustomMessageType_ALLMicroSend +typedef NS_ENUM(NSUInteger, CustomMessageSubAllMicroSend) { + ///全麦送礼物 + Custom_Message_Sub_AllMicroSend = 121, + ///非全麦 多人送礼 + Custom_Message_Sub_AllBatchSend = 123, + ///非全麦 多人送福袋礼物 + Custom_Message_Sub_AllBatchMicroLuckySend = 124, + ///全麦送 福袋 礼物 122老版本占用了 + Custom_Message_Sub_AllMicroLuckySend = 125, +}; + +///first == CustomMessageType_Car_Notify +typedef NS_ENUM(NSUInteger, CustomMessageSubCar) { + Custom_Message_Sub_Car_EnterRoom = 159, //进房动画 +}; + +///first = CustomMessageType_Kick_User +typedef NS_ENUM(NSUInteger, CustomNotificationSubKick) { + ///拉黑 + Custom_Message_Sub_Kick_BlackList = 182, + ///踢出房间 + Custom_Message_Sub_Kick_BeKicked = 181, +}; + + +///first = CustomMessageType_Secretary +typedef NS_ENUM(NSUInteger, CustomNotificationSecretary) { + ///跳转页面 + Custom_Message_Sub_Secretary_Router = 191, +}; + +///first = CustomMessageType_Update_RoomInfo +typedef NS_ENUM(NSUInteger, CustomMessageSubUpdateRoomInfo) { + ///动画开关状态更新 + Custom_Message_Sub_Update_RoomInfo_AnimateEffect = 201, + ///公屏开关更新 + Custom_Message_Sub_Update_RoomInfo_MessageState = 203, + ///通用公屏提示文案, 公屏纯文本展示消息 data[@"tip"] + Custom_Message_Sub_Update_RoomInfo_Notice = 204, + ///红包开关通知 + Custom_Message_Sub_Update_RoomInfo_RedPacket = 205, + ///清空公屏 + Custom_Message_Sub_Update_RoomInfo_CleanScreen = 206, +}; + +///first = CustomMessageType_Application_Share +typedef NS_ENUM(NSInteger, CustomMessageSubApplicationShare) { + ///分享房间 + Custom_Message_Sub_Application_Share_Room = 221, +}; + + +///first = CustomMessageType_Applica +typedef NS_ENUM(NSInteger, CustomMessageSubMessageHandle) { + Custom_Message_Sub_Message_Handle_Content = 231, //文本 + Custom_Message_Sub_Message_Handle_Bussiness = 232, //业务 +}; + +///first = CustomMessageType_User_UpGrade +typedef NS_ENUM(NSInteger, CustomMessageSubUserUpgrade) { + ///用户等级 + Custom_Message_Sub_User_UpGrade_Exper = 241, + ///魅力等级 + Custom_Message_Sub_User_UpGrade_Charm = 242 +}; + +///first = CustomMessageType_Candy_Tree +typedef NS_ENUM(NSUInteger, CustomMessageSubCandyTree) { + //.自己可见 一级礼物(最小) + Custom_Message_Sub_Candy_Tree_Me = 261, + ///当前房间可见 二级礼物 + Custom_Message_Sub_Candy_Tree_InRoom = 262, + ///所有房间可见 三级礼物 + Custom_Message_Sub_Candy_Tree_AllRoom = 263, + ///所有房间可见+小秘书 四级礼物 + Custom_Message_Sub_Candy_Tree_AllRoom_Notify = 264, + ///五级礼物 + Custom_Message_Sub_Candy_Tree_InRoom_NeedAllMicSend = 265, + //暴击的没用 不写了 +}; + +///first = CustomMessageType_Arrange_Mic +typedef NS_ENUM(NSUInteger, CustomNotiHeaderArrangeMic) { + ///队列从无人排麦到有人排麦 + Custom_Message_Sub_Arrange_Mic_Non_Empty= 301, + ///队列从有人排麦到无人排麦 + Custom_Message_Sub_Arrange_Mic_Empty= 302, + ///开启排麦 + Custom_Message_Sub_Arrange_Mic_Mode_Open= 303, + ///关闭排麦 + Custom_Message_Sub_Arrange_Mic_Mode_Close= 304, + ///将坑位设置成自由麦 + Custom_Message_Sub_Arrange_Mic_Free_Mic_Open= 305, + ///将坑位设置为排麦 + Custom_Message_Sub_Arrange_Mic_Free_Mic_Close= 306, +}; + +///first =CustomMessageType_Room_PK +typedef NS_ENUM(NSUInteger, CustomMessageSubRoomPK){ + ///从无人报名pk排麦到有人报名pk排麦 + Custom_Message_Sub_Room_PK_Non_Empty = 311, + ///从有人报名pk排麦到无人报名pk排麦 + Custom_Message_Sub_Room_PK_Empty = 312, + ///创建了pk模式 + Custom_Message_Sub_Room_PK_Mode_Open = 313, + ///关闭pk模式 + Custom_Message_Sub_Room_PK_Mode_Close = 314, + ///pk开始 + Custom_Message_Sub_Room_PK_Start = 315, + ///pk结果 + Custom_Message_Sub_Room_PK_Result = 316, + ///重新开始 + Custom_Message_Sub_Room_PK_Re_Start= 317, + ///管理员邀请上麦(只用在客户端) + Custom_Message_Sub_Room_PK_Manager_Up_Mic = 318, +}; + +///first=CustomMessageType_Hall +typedef NS_ENUM(NSUInteger, Custom_Noti_Sub_HALL) { + ///申请加入厅 + Custom_Message_Sub_Hall_Apply_Join = 321, + ///管理邀请入厅 + Custom_Message_Sub_Hall_Manager_Invite = 322, + ///申请退出厅 + Custom_Message_Sub_Hall_Apply_Exit = 323, + ///模厅普通通知 + Custom_Message_Sub_Hall_Notice = 324, + ///设置为模厅 + Custom_Message_Sub_Hall_Become_Hall = 325, +}; + +///first = CustomMessageType_Room_GiftValue +typedef NS_ENUM(NSUInteger, CustomMessageSubRoomGiftValue) { + ///礼物值同步 + Custom_Message_Sub_Room_GiftValue_Sync = 421 +}; + +///first = CustomMessageType_Version_Update) +typedef NS_ENUM(NSUInteger, CustomMessageVersionUpdateValue) { + ///版本升级 + Custom_Message_Version_Update_Value = 491 +}; + +///first = CustomMessageType_Hall_Super_Admin +typedef NS_ENUM(NSInteger, CustomMessageSubHallSuperAdmin) { + ///超管解除陪伴房的进房限制 + Custom_Message_Sub_Hall_Super_Admin_Remove_CP_Room_Limit = 501, + ///超管解除多人房的房间密码 + Custom_Message_Sub_Hall_Super_Admin_Remove_Room_Pwd = 502, + ///锁麦 + Custom_Message_Sub_Hall_Super_Admin_Lock_Mic = 503, + ///闭麦 + Custom_Message_Sub_Hall_Super_Admin_Mute_Mic = 504, + ///踢人下麦 + Custom_Message_Sub_Hall_Super_Admin_Kick_Down_Mic = 505, + ///拉黑 + Custom_Message_Sub_Hall_Super_Admin_Mark_Black = 506, + ///踢出房间 + Custom_Message_Sub_Hall_Super_Admin_Kick_Out_Room = 507, + ///踢管理员出房间 + Custom_Message_Sub_Hall_Super_Admin_Kick_Manager_Out_Room = 508, +}; + +/// first == CustomMessageType_Monents +typedef NS_ENUM(NSUInteger, Custom_Noti_Sub_Dynamic) { + ///未读更新 + Custom_Message_Sub_Monents_Unread_Update = 521, + /// 违禁删除 + Custom_Message_Sub_Monents_Ban_Delete = 522, + /// 动态审核通过 + Custom_Message_Sub_Monents_Approved = 523, + /// app内分享动态 + Custom_Message_Sub_Monents_Share = 524, +}; + +///first = CustomMessageType_RedPacket +typedef NS_ENUM(NSUInteger, CustomMessageSubRedPacket) { + Custom_Message_Sub_RoomGiftRedPacket = 601, //房间礼物红包 + Custom_Message_Sub_RoomDiamandRedPacket = 602, //房间钻石红包 + Custom_Message_Sub_AllGiftRedPacket = 603, //全服礼物红包 + Custom_Message_Sub_AllDiamandRedPacket = 604, //全服钻石红包 + Custom_Message_Sub_OpenRedPacketSuccess = 605,//抢红包成功 +}; + +///first = CustomMessageType_Collection_Room +typedef NS_ENUM(NSUInteger, CustomMessageSubCollectRoom) { + /// 福袋礼物房间飘屏通知 + Custom_Message_Sub_Room_Gift_LuckBag= 610, + /// 福袋礼物全服飘屏通知 + Custom_Message_Sub_Room_Gift_LuckBag_Server = 611, + /// 福袋礼物全服飘屏通知 + Custom_Message_Sub_Room_Gift_LuckBag_FullScree = 612, +}; + +///first == CustomMessageType_FindNew 发现萌新 +typedef NS_ENUM(NSUInteger, CustomMessageFindNewUserGreet) { + /// 打招呼 + Custom_Message_Find_New_Greet_New_User = 621, +}; +///跳转类型 +typedef NS_ENUM(NSUInteger, CustomMessageRouter) { + /// 跳转H5 + Custom_Message_Router_H5 = 2, +}; + +///first = CustomMessageType_LuckyBag +typedef NS_ENUM(NSUInteger, CustomMessageSubLuckyBag) { + ///收藏房间公屏提示消息 + Custom_Message_Sub_Collect_Room_Tips = 591, + /// 提醒用户收藏房间 + Custom_Message_Sub_Collect_Room_Remind_User = 592, +}; + +///CustomMessageType_Tarot +typedef NS_ENUM(NSUInteger, CustomMessageSubTarot) { + /// 塔罗中奖消息 + Custom_Message_Sub_Tarot = 711, +}; + +///CustomMessageType_RoomPlay_Dating +typedef NS_ENUM(NSUInteger, CustomMessageSubRoomPlayDating){ + ///选择心动用户 + Custom_Message_Sub_Room_Play_Dating_Pick_Heart= 721, + ///公布结果 + Custom_Message_Sub_Room_Play_Dating_Public_Result = 722, + ///选择了对象 但不是互选 客户端收到结果之后自动加到 公屏上 + Custom_Message_Sub_Room_Play_Dating_Result_Not_Mutual = 723, + ///互选的 客户端收到结果之后自动加到 公屏上 + Custom_Message_Sub_Room_Play_Dating_Result_Mutual = 724, +}; + +///first = CustomMessageType_Chat_Risk_Alert +/// 访客记录 +typedef NS_ENUM(NSUInteger, CustomMessageSubChatRiskAlert) { + /// 私聊风险提醒 + Custom_Message_Sub_Chat_Risk_Alert= 751, +}; + +///first = CustomMessageType_First_Recharge_Reward +typedef NS_ENUM(NSUInteger, CustomMessageSubFirstRecharge) { + /// 首充完成 + Custom_Message_Sub_Room_First_Recharge_Reward= 761, + /// 新用户专享优惠充值完成 + Custom_Message_Sub_New_User_Recharge_Reward = 762, +}; + +/// 访客记录 +typedef NS_ENUM(NSUInteger, CustomMessageSubVisitorRecord) { + /// 访客记录 + Custom_Message_Sub_Visitor_Record = 781, +}; + +///first == CustomMessageType_Room_Sailing +typedef NS_ENUM(NSInteger, CustomMessageSubSailing) { + //自己可见 一级礼物(最小) + Custom_Message_Sub_Sailing_Me = 811, + //当前房间可见 二级礼物 + Custom_Message_Sub_Sailing_InRoom = 812, + //所有房间可见 三级礼物 + Custom_Message_Sub_Sailing_AllRoom = 813, + //所有房间可见+小秘书 四级礼物(最大) + Custom_Message_Sub_Sailing_AllRoom_Notify = 814, + //开箱子开到全麦送 (服务端发) + Custom_Message_Sub_Sailing_InRoom_NeedAllMicSend = 815, +}; + +///first = CustomMessageType_Across_Room_PK +typedef NS_ENUM(NSUInteger, CustomMessageSubAcrossRoomPK) { + /// 收到跨房PK邀请 + Custom_Message_Sub_AcrossRoomPK_Invite = 831, + /// 拒绝跨房PK + Custom_Message_Sub_AcrossRoomPK_Reject = 832, + /// 接受跨房PK + Custom_Message_Sub_AcrossRoomPK_Accept = 833, + /// 面板消息 + Custom_Message_Sub_AcrossRoomPK_Panel = 834, + /// 跨房PK结束通知 + Custom_Message_Sub_AcrossRoomPK_End = 835, + /// 跨房PK结束飘屏 + Custom_Message_Sub_AcrossRoomPK_Result = 836, + + ///收到个播PK邀请 + Custom_Message_Sub_AnchorPK_Invite = 837, + ///拒绝个播pk + Custom_Message_Sub_AnchorPK_Reject = 838, + ///接收个播PK + Custom_Message_Sub_AnchorPK_Accept = 839, + ///个播PK面板消息 + Custom_Message_Sub_AnchorPK_Panel = 8310, + ///个播PK结束通知(收到后进入惩罚阶段) + Custom_Message_Sub_AnchorPK_End = 8311, + ///个播PK结束飘屏 + Custom_Message_Sub_AnchorPK_Result = 8312, + ///个播PK完成 + Custom_Message_Sub_AnchorPK_Finish = 8313, + ///收到预约PK倒计时 + Custom_Message_Sub_PK_BeginTime = 8314, + ///匹配个播随机PK等待超时 + Custom_Message_Sub_AnchorPK_Match_TimeOut = 8315, + ///个播pk禁用对方麦克风 + Custom_Message_Sub_AnchorPK_MuteOtherMic = 8316, +}; + +///first = CustomMessageType_Noble_VIP +typedef NS_ENUM(NSUInteger, CustomMessageSubNobleVIP) { + /// 开通贵族房内消息(公屏显示) + Custom_Message_Sub_Room_Open_Noble_VIP = 851, + /// 开通贵族成功通知消息 + Custom_Message_Sub_Open_Noble_Success = 852, + /// 贵族升级房内消息(公屏显示) + Custom_Message_Sub_Room_Noble_LevelUp = 853, + /// 贵族升级用户通知消息(弹窗) + Custom_Message_Sub_Noble_LevelUp_User = 854, + /// 贵族升级全服飘屏通知消息 + Custom_Message_Sub_Room_Noble_LevelUp_Suspend = 855, + /// 贵族升级全服房间公屏通知消息 + Custom_Message_Sub_AllRoom_Noble_LevelUp_Suspend = 856, + /// 贵族小喇叭房间消息 + Custom_Message_Sub_Room_Trumpet = 857, + +}; + +///first = CustomMessageType_Anchor_Hour_Rank +typedef NS_ENUM(NSUInteger, CustomMessageAnchorHourRank) { + ///个播小时榜 + Custom_Message_Sub_Anchor_Hour_Rank = 891, +}; + +///first = CustomMessageType_Anchor_FansTeam +typedef NS_ENUM(NSUInteger, CustomMessageAnchorFansTeam) { + ///开通粉丝团成功 + Custom_Message_Sub_FansTeam_Open_Success = 901, + ///开通粉丝团失败 + Custom_Message_Sub_FansTeam_Open_Fail = 902, + ///用户加入粉丝团成功 + Custom_Message_Sub_FansTeam_Join_Success = 903, + ///用户退出粉丝团成功 + Custom_Message_Sub_FansTeam_Out_Success = 904, +}; + +///first = CustomMessageType_Licnese_Hour_Rank +typedef NS_ENUM(NSUInteger, CustomMessageLicneseHourRank) { + ///牌照房小时榜 + Custom_Message_Sub_Licnese_Hour_Rank = 911, +}; + +///first = CustomMessageType_Task_Complete +typedef NS_ENUM(NSUInteger, CustomMessageTaskComplete) { + ///任务完成通知 + Custom_Message_Sub_TaskComplete = 921, +}; + +///first = CustomMessageType_Gift_Compound +typedef NS_ENUM(NSUInteger, CustomMessageGiftCompound) { + ///礼物合成通知 + Custom_Message_Sub_Gift_Compound = 931, +}; + +///first = CustomMessageType_Graffiti_Gift +typedef NS_ENUM(NSUInteger, CustomMessageGraffitiGift) { + ///涂鸦礼物 + Custom_Message_Sub_Graffiti_Gift = 941, +}; + +//first = CustomMessageType_Graffiti_Star_Kitchen +typedef NS_ENUM(NSUInteger, CustomMessageGraffitiStarKitchen) { + /// // 星级厨房礼物房间飘屏通知 + Custom_Message_Sub_Star_Kitchen_Room = 950, + /// // 星级厨房礼物全服飘屏通知 + Custom_Message_Sub_Star_Kitchen_Server = 951, + /// // 星级厨房礼物全服飘屏通知 + Custom_Message_Sub_Star_Kitchen_FullScreen = 952, +}; + +///first = CustomMessageType_Candy_Tree +typedef NS_ENUM(NSUInteger, CustomMessageSubLookLove) { + //.自己可见 一级礼物(最小) + Custom_Message_Sub_Look_Love_Me = 981, + ///当前房间可见 二级礼物 + Custom_Message_Sub_Look_Love_InRoom = 982, + ///所有房间可见 三级礼物 + Custom_Message_Sub_Look_Love_AllRoom = 983, + ///所有房间可见+小秘书 四级礼物 + Custom_Message_Sub_Look_Love_AllRoom_Notify = 984, + ///五级礼物 + Custom_Message_Sub_Look_Love_InRoom_NeedAllMicSend = 985, + //暴击的没用 不写了 +}; + +@interface AttachmentModel : NSObject +@property (nonatomic,assign) int first; +@property (nonatomic,assign) int second; +@property (nonatomic, strong) id data; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Model/AttachmentModel.m b/YuMi/Modules/YMMessage/Model/AttachmentModel.m new file mode 100644 index 00000000..340de2c0 --- /dev/null +++ b/YuMi/Modules/YMMessage/Model/AttachmentModel.m @@ -0,0 +1,16 @@ +// +// AttachmentModel.m +// YUMI +// +// Created by YUMI on 2021/11/16. +// + +#import "AttachmentModel.h" +#import "NSObject+MJExtension.h" +@implementation AttachmentModel + +- (NSString *)encodeAttachment { + return [self toJSONString]; +} + +@end diff --git a/YuMi/Modules/YMMessage/Model/ChatLimitMatrix.h b/YuMi/Modules/YMMessage/Model/ChatLimitMatrix.h deleted file mode 100644 index b075c692..00000000 --- a/YuMi/Modules/YMMessage/Model/ChatLimitMatrix.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// ChatLimitMatrix.h -// YUMI -// -// Created by zu on 2021/12/8. -// - -#import "NSObject+MJExtension.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface ChatLimitMatrix : NSObject - -@property (nonatomic, assign) BOOL chat; -@property (nonatomic, copy) NSString * message; -@property (nonatomic, copy) NSString * wealthLevel; -@property (nonatomic, copy) NSString * charmLevel; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Model/ChatLimitMatrix.m b/YuMi/Modules/YMMessage/Model/ChatLimitMatrix.m deleted file mode 100644 index 5402a96f..00000000 --- a/YuMi/Modules/YMMessage/Model/ChatLimitMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ChatLimitMatrix.m -// YUMI -// -// Created by zu on 2021/12/8. -// - -#import "ChatLimitMatrix.h" - -@implementation ChatLimitMatrix - -@end diff --git a/YuMi/Modules/YMMessage/Model/ChatLimitModel.h b/YuMi/Modules/YMMessage/Model/ChatLimitModel.h new file mode 100644 index 00000000..a77faac0 --- /dev/null +++ b/YuMi/Modules/YMMessage/Model/ChatLimitModel.h @@ -0,0 +1,21 @@ +// +// ChatLimitModel.h +// YUMI +// +// Created by zu on 2021/12/8. +// + +#import "NSObject+MJExtension.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface ChatLimitModel : NSObject + +@property (nonatomic, assign) BOOL chat; +@property (nonatomic, copy) NSString * message; +@property (nonatomic, copy) NSString * wealthLevel; +@property (nonatomic, copy) NSString * charmLevel; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Model/ChatLimitModel.m b/YuMi/Modules/YMMessage/Model/ChatLimitModel.m new file mode 100644 index 00000000..b17309e2 --- /dev/null +++ b/YuMi/Modules/YMMessage/Model/ChatLimitModel.m @@ -0,0 +1,12 @@ +// +// ChatLimitModel.m +// YUMI +// +// Created by zu on 2021/12/8. +// + +#import "ChatLimitModel.h" + +@implementation ChatLimitModel + +@end diff --git a/YuMi/Modules/YMMessage/Model/CustomMessage/XCombatickConsumerMatrix.h b/YuMi/Modules/YMMessage/Model/CustomMessage/XCombatickConsumerMatrix.h deleted file mode 100644 index 3a9a06f4..00000000 --- a/YuMi/Modules/YMMessage/Model/CustomMessage/XCombatickConsumerMatrix.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMKickUserModel.h -// YUMI -// -// Created by YUMI on 2021/11/25. -// -///用户被踢出房间的模型 -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface XCombatickConsumerMatrix : NSObject -@property (nonatomic, assign) NSInteger uid; -@property (nonatomic, assign) NSInteger handleUid; -@property (nonatomic, copy) NSString *handleNick; -@property (nonatomic, assign) NSInteger targetUid; -@property (nonatomic, copy) NSString *targetNick; -@property (nonatomic, copy) NSString *micPosition; -@property (nonatomic, copy) NSString *micNumber; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Model/CustomMessage/XCombatickConsumerMatrix.m b/YuMi/Modules/YMMessage/Model/CustomMessage/XCombatickConsumerMatrix.m deleted file mode 100644 index 692f7bc3..00000000 --- a/YuMi/Modules/YMMessage/Model/CustomMessage/XCombatickConsumerMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMKickUserModel.m -// YUMI -// -// Created by YUMI on 2021/11/25. -// - -#import "XCombatickConsumerMatrix.h" - -@implementation XCombatickConsumerMatrix - -@end diff --git a/YuMi/Modules/YMMessage/Model/CustomMessage/XPKickUserModel.h b/YuMi/Modules/YMMessage/Model/CustomMessage/XPKickUserModel.h new file mode 100644 index 00000000..13913aec --- /dev/null +++ b/YuMi/Modules/YMMessage/Model/CustomMessage/XPKickUserModel.h @@ -0,0 +1,29 @@ +// +// YMKickUserModel.h +// YUMI +// +// Created by YUMI on 2021/11/25. +// +///用户被踢出房间的模型 +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPKickUserModel : NSObject +///安卓使用的是Uid 所以加了一个这样的属性 +@property (nonatomic, assign) NSInteger uid; +///处理de uid +@property (nonatomic, assign) NSInteger handleUid; +///处理人的昵称 +@property (nonatomic, copy) NSString *handleNick; +///目标用户的uid +@property (nonatomic, assign) NSInteger targetUid; +///目标用户的昵称 +@property (nonatomic, copy) NSString *targetNick; +///目标坑位 +@property (nonatomic, copy) NSString *micPosition; +///超管踢人的时候目标坑位 +@property (nonatomic, copy) NSString *micNumber; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Model/CustomMessage/XPKickUserModel.m b/YuMi/Modules/YMMessage/Model/CustomMessage/XPKickUserModel.m new file mode 100644 index 00000000..13a9d56d --- /dev/null +++ b/YuMi/Modules/YMMessage/Model/CustomMessage/XPKickUserModel.m @@ -0,0 +1,12 @@ +// +// YMKickUserModel.m +// YUMI +// +// Created by YUMI on 2021/11/25. +// + +#import "XPKickUserModel.h" + +@implementation XPKickUserModel + +@end diff --git a/YuMi/Modules/YMMessage/Model/InterlocutionInstanllingMatrix.h b/YuMi/Modules/YMMessage/Model/InterlocutionInstanllingMatrix.h deleted file mode 100644 index 61afa242..00000000 --- a/YuMi/Modules/YMMessage/Model/InterlocutionInstanllingMatrix.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// InterlocutionInstanllingMatrix.h -// YUMI -// -// Created by YUMI on 2023/1/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, InterlocutionInstanllingGenre) { - - InterlocutionInstanllingGenre_Top, - InterlocutionInstanllingGenre_black, - - InterlocutionInstanllingGenre_report -}; - -@interface InterlocutionInstanllingMatrix : NSObject -@property (nonatomic,copy) NSString *title; -@property (nonatomic,assign) InterlocutionInstanllingGenre settingType; -@property (nonatomic,assign) BOOL state; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Model/InterlocutionInstanllingMatrix.m b/YuMi/Modules/YMMessage/Model/InterlocutionInstanllingMatrix.m deleted file mode 100644 index 5b725e92..00000000 --- a/YuMi/Modules/YMMessage/Model/InterlocutionInstanllingMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// InterlocutionInstanllingMatrix.m -// YUMI -// -// Created by YUMI on 2023/1/18. -// - -#import "InterlocutionInstanllingMatrix.h" - -@implementation InterlocutionInstanllingMatrix - -@end diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/ContentApplicationShareModel.h b/YuMi/Modules/YMMessage/Model/SessionContent/ContentApplicationShareModel.h new file mode 100644 index 00000000..1e69c144 --- /dev/null +++ b/YuMi/Modules/YMMessage/Model/SessionContent/ContentApplicationShareModel.h @@ -0,0 +1,21 @@ +// +// ContentApplicationShareModel.h +// YUMI +// +// Created by YUMI on 2022/4/19. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@interface ContentApplicationShareModel : NSObject +///显示标题 +@property (nonatomic,copy) NSString *title; +///立即进入 +@property (nonatomic,copy) NSString *actionName; +///房主的uid +@property (nonatomic,copy) NSString *routerValue; +///房主头像 +@property (nonatomic,copy) NSString *avatar; +@end +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/ContentApplicationShareModel.m b/YuMi/Modules/YMMessage/Model/SessionContent/ContentApplicationShareModel.m new file mode 100644 index 00000000..b782eac7 --- /dev/null +++ b/YuMi/Modules/YMMessage/Model/SessionContent/ContentApplicationShareModel.m @@ -0,0 +1,12 @@ +// +// ContentApplicationShareModel.m +// YUMI +// +// Created by YUMI on 2022/4/19. +// + +#import "ContentApplicationShareModel.h" + +@implementation ContentApplicationShareModel + +@end diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/ContentLevelUpgradeModel.h b/YuMi/Modules/YMMessage/Model/SessionContent/ContentLevelUpgradeModel.h new file mode 100644 index 00000000..e86cbcfe --- /dev/null +++ b/YuMi/Modules/YMMessage/Model/SessionContent/ContentLevelUpgradeModel.h @@ -0,0 +1,18 @@ +// +// ContentLevelUpgradeModel.h +// YUMI +// +// Created by YUMI on 2022/4/20. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface ContentLevelUpgradeModel : NSObject +@property (nonatomic, copy) NSString *levelName; +///升到的等级 +@property (nonatomic,assign) NSInteger levelSeq; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/ContentLevelUpgradeModel.m b/YuMi/Modules/YMMessage/Model/SessionContent/ContentLevelUpgradeModel.m new file mode 100644 index 00000000..e37b739e --- /dev/null +++ b/YuMi/Modules/YMMessage/Model/SessionContent/ContentLevelUpgradeModel.m @@ -0,0 +1,12 @@ +// +// ContentLevelUpgradeModel.m +// YUMI +// +// Created by YUMI on 2022/4/20. +// + +#import "ContentLevelUpgradeModel.h" + +@implementation ContentLevelUpgradeModel + +@end diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/ContentOpenLiveInfoModel.h b/YuMi/Modules/YMMessage/Model/SessionContent/ContentOpenLiveInfoModel.h new file mode 100644 index 00000000..5e45f65c --- /dev/null +++ b/YuMi/Modules/YMMessage/Model/SessionContent/ContentOpenLiveInfoModel.h @@ -0,0 +1,28 @@ +// +// ContentOpenLiveInfoModel.h +// YUMI +// +// Created by YUMI on 2022/4/19. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class ContentOpenLiveUserInfoModel; +@interface ContentOpenLiveInfoModel : NSObject + +///用户的uid +@property (nonatomic,copy) NSString *uid; +///用户信息 +@property (nonatomic,strong) ContentOpenLiveUserInfoModel *userVo; + +@end + +@interface ContentOpenLiveUserInfoModel : NSObject +///显示名字 +@property (nonatomic,copy) NSString *avatar; +///显示昵称 +@property (nonatomic,copy) NSString *nick; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/ContentOpenLiveInfoModel.m b/YuMi/Modules/YMMessage/Model/SessionContent/ContentOpenLiveInfoModel.m new file mode 100644 index 00000000..62f05ca2 --- /dev/null +++ b/YuMi/Modules/YMMessage/Model/SessionContent/ContentOpenLiveInfoModel.m @@ -0,0 +1,18 @@ +// +// ContentOpenLiveInfoModel.m +// YUMI +// +// Created by YUMI on 2022/4/19. +// 开启直播 + +#import "ContentOpenLiveInfoModel.h" + +@implementation ContentOpenLiveInfoModel + +@end + +@implementation ContentOpenLiveUserInfoModel + + + +@end diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/ContentRistAlertModel.h b/YuMi/Modules/YMMessage/Model/SessionContent/ContentRistAlertModel.h new file mode 100644 index 00000000..1a1c0b9a --- /dev/null +++ b/YuMi/Modules/YMMessage/Model/SessionContent/ContentRistAlertModel.h @@ -0,0 +1,16 @@ +// +// ContentRistAlertModel.h +// YUMI +// +// Created by YUMI on 2022/8/11. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface ContentRistAlertModel : NSObject +@property (nonatomic,strong) NSString *content; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/ContentRistAlertModel.m b/YuMi/Modules/YMMessage/Model/SessionContent/ContentRistAlertModel.m new file mode 100644 index 00000000..795320d5 --- /dev/null +++ b/YuMi/Modules/YMMessage/Model/SessionContent/ContentRistAlertModel.m @@ -0,0 +1,12 @@ +// +// ContentRistAlertModel.m +// YUMI +// +// Created by YUMI on 2022/8/11. +// + +#import "ContentRistAlertModel.h" + +@implementation ContentRistAlertModel + +@end diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/ContentSecretaryModel.h b/YuMi/Modules/YMMessage/Model/SessionContent/ContentSecretaryModel.h new file mode 100644 index 00000000..637bb5ec --- /dev/null +++ b/YuMi/Modules/YMMessage/Model/SessionContent/ContentSecretaryModel.h @@ -0,0 +1,56 @@ +// +// ContentSecretaryModel.h +// YUMI +// +// Created by YUMI on 2022/4/22. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, SecretaryRouterType) { + ///房间 + SecretaryRouterType_Room = 1, + ///跳转网页 + SecretaryRouterType_H5 = 2, + ///钱包页 + SecretaryRouterType_Purse = 3, + ///充值页 + SecretaryRouterType_Recharge = 5, + ///用户信息 + SecretaryRouterType_UserInfo = 6, + ///座驾 + SecretaryRouterType_Car = 7, + ///头饰 + SecretaryRouterType_Headwear = 8, + ///铭牌 + SecretaryRouterType_Nameplate = 9, + ///设置密码 + SecretaryRouterType_Set_Password = 53, + ///贵族中心 + SecretaryRouterType_Nobel_Center = 54, + ///资料卡装扮 + SecretaryRouterType_User_Card = 55, + ///贵族气泡 + SecretaryRouterType_Nobel_Bubble = 56, + ///装扮商城 + SecretaryRouterType_Dressup_Shop = 73, + ///我的装扮 + SecretaryRouterType_My_Dressup = 74, + ///广场话题 + SecretaryRouterType_Square_Topic = 75, +}; + +@interface ContentSecretaryModel : NSObject +///最近回话列表需要显示的内容 推送的内容 +@property (nonatomic,copy) NSString *msg; +///私聊消息需要显示的内容 +@property (nonatomic,copy) NSString *title; +///跳转的类型 +@property (nonatomic,assign) SecretaryRouterType routerType; +///(转跳当前界面需要传的参) +@property (nonatomic,strong) NSString *routerValue; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/ContentSecretaryModel.m b/YuMi/Modules/YMMessage/Model/SessionContent/ContentSecretaryModel.m new file mode 100644 index 00000000..3cb78468 --- /dev/null +++ b/YuMi/Modules/YMMessage/Model/SessionContent/ContentSecretaryModel.m @@ -0,0 +1,12 @@ +// +// ContentSecretaryModel.m +// YUMI +// +// Created by YUMI on 2022/4/22. +// + +#import "ContentSecretaryModel.h" + +@implementation ContentSecretaryModel + +@end diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/ContentShareMonentsModel.h b/YuMi/Modules/YMMessage/Model/SessionContent/ContentShareMonentsModel.h new file mode 100644 index 00000000..4d39e871 --- /dev/null +++ b/YuMi/Modules/YMMessage/Model/SessionContent/ContentShareMonentsModel.h @@ -0,0 +1,35 @@ +// +// ContentShareMonentsModel.h +// YUMI +// +// Created by YUMI on 2022/6/27. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface ContentShareMonentsModel : NSObject +///动态分享 +@property (nonatomic,copy) NSString *dynamicId; +///话题id +@property (nonatomic,copy) NSString *worldId; +///封面 +@property (nonatomic,copy) NSString *imageUrl; +///名称 +@property (nonatomic,copy) NSString *nick; +///发布者的uid +@property (nonatomic,copy) NSString *publishUid; +///内容 +@property (nonatomic,copy) NSString *content; +///头像 +@property (nonatomic,copy) NSString *avatar; +///标题 +@property (nonatomic,copy) NSString *title; +///跳转类型 +@property (nonatomic,assign) NSInteger routerType; +///跳转的id +@property (nonatomic,copy) NSString *routerValue; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/ContentShareMonentsModel.m b/YuMi/Modules/YMMessage/Model/SessionContent/ContentShareMonentsModel.m new file mode 100644 index 00000000..6656ea8d --- /dev/null +++ b/YuMi/Modules/YMMessage/Model/SessionContent/ContentShareMonentsModel.m @@ -0,0 +1,12 @@ +// +// ContentShareMonentsModel.m +// YUMI +// +// Created by YUMI on 2022/6/27. +// + +#import "ContentShareMonentsModel.h" + +@implementation ContentShareMonentsModel + +@end diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/ContentTweetModel.h b/YuMi/Modules/YMMessage/Model/SessionContent/ContentTweetModel.h new file mode 100644 index 00000000..1ce88f3c --- /dev/null +++ b/YuMi/Modules/YMMessage/Model/SessionContent/ContentTweetModel.h @@ -0,0 +1,27 @@ +// +// ContentTweetModel.h +// YUMI +// +// Created by YUMI on 2022/4/28. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface ContentTweetModel : NSObject +///跳转的地址 +@property (nonatomic,copy) NSString *webUrl; +///标题 +@property (nonatomic,copy) NSString *title; +///描述 +@property (nonatomic,copy) NSString *desc; +///显示的照片 +@property (nonatomic,copy) NSString *picUrl; +///跳转类型 1:房间, 2:h5 +@property (nonatomic, assign) NSInteger routerType; +///跳转内容--H5链接或者房主uid +@property (nonatomic, copy) NSString *routerValue; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/ContentTweetModel.m b/YuMi/Modules/YMMessage/Model/SessionContent/ContentTweetModel.m new file mode 100644 index 00000000..c1a761a6 --- /dev/null +++ b/YuMi/Modules/YMMessage/Model/SessionContent/ContentTweetModel.m @@ -0,0 +1,12 @@ +// +// ContentTweetModel.m +// YUMI +// +// Created by YUMI on 2022/4/28. +// + +#import "ContentTweetModel.h" + +@implementation ContentTweetModel + +@end diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionApplicationParaticipationMatrix.h b/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionApplicationParaticipationMatrix.h deleted file mode 100644 index cecc88eb..00000000 --- a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionApplicationParaticipationMatrix.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// SatisfactionApplicationParaticipationMatrix.h -// YUMI -// -// Created by YUMI on 2022/4/19. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@interface SatisfactionApplicationParaticipationMatrix : NSObject -@property (nonatomic,copy) NSString *title; -@property (nonatomic,copy) NSString *actionName; -@property (nonatomic,copy) NSString *routerValue; -@property (nonatomic,copy) NSString *avatar; -@end -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionApplicationParaticipationMatrix.m b/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionApplicationParaticipationMatrix.m deleted file mode 100644 index 317ad378..00000000 --- a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionApplicationParaticipationMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// SatisfactionApplicationParaticipationMatrix.m -// YUMI -// -// Created by YUMI on 2022/4/19. -// - -#import "SatisfactionApplicationParaticipationMatrix.h" - -@implementation SatisfactionApplicationParaticipationMatrix - -@end diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionParaticipationSeparationsMatrix.h b/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionParaticipationSeparationsMatrix.h deleted file mode 100644 index f8314216..00000000 --- a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionParaticipationSeparationsMatrix.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// SatisfactionParaticipationSeparationsMatrix.h -// YUMI -// -// Created by YUMI on 2022/6/27. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface SatisfactionParaticipationSeparationsMatrix : NSObject -@property (nonatomic,copy) NSString *dynamicId; -@property (nonatomic,copy) NSString *worldId; -@property (nonatomic,copy) NSString *imageUrl; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,copy) NSString *publishUid; -@property (nonatomic,copy) NSString *content; -@property (nonatomic,copy) NSString *avatar; -@property (nonatomic,copy) NSString *title; -@property (nonatomic,assign) NSInteger routerType; -@property (nonatomic,copy) NSString *routerValue; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionParaticipationSeparationsMatrix.m b/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionParaticipationSeparationsMatrix.m deleted file mode 100644 index ef4542fe..00000000 --- a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionParaticipationSeparationsMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// SatisfactionParaticipationSeparationsMatrix.m -// YUMI -// -// Created by YUMI on 2022/6/27. -// - -#import "SatisfactionParaticipationSeparationsMatrix.h" - -@implementation SatisfactionParaticipationSeparationsMatrix - -@end diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionPrototypeAscensionMatrix.h b/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionPrototypeAscensionMatrix.h deleted file mode 100644 index 6eca0cfb..00000000 --- a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionPrototypeAscensionMatrix.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// SatisfactionPrototypeAscensionMatrix.h -// YUMI -// -// Created by YUMI on 2022/4/20. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface SatisfactionPrototypeAscensionMatrix : NSObject -@property (nonatomic, copy) NSString *levelName; -@property (nonatomic,assign) NSInteger levelSeq; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionPrototypeAscensionMatrix.m b/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionPrototypeAscensionMatrix.m deleted file mode 100644 index e1b4295a..00000000 --- a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionPrototypeAscensionMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// SatisfactionPrototypeAscensionMatrix.m -// YUMI -// -// Created by YUMI on 2022/4/20. -// - -#import "SatisfactionPrototypeAscensionMatrix.h" - -@implementation SatisfactionPrototypeAscensionMatrix - -@end diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionRistPrecautiousMatrix.h b/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionRistPrecautiousMatrix.h deleted file mode 100644 index e97d69a3..00000000 --- a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionRistPrecautiousMatrix.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// SatisfactionRistPrecautiousMatrix.h -// YUMI -// -// Created by YUMI on 2022/8/11. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface SatisfactionRistPrecautiousMatrix : NSObject -@property (nonatomic,strong) NSString *content; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionRistPrecautiousMatrix.m b/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionRistPrecautiousMatrix.m deleted file mode 100644 index 8d92ac62..00000000 --- a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionRistPrecautiousMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// SatisfactionRistPrecautiousMatrix.m -// YUMI -// -// Created by YUMI on 2022/8/11. -// - -#import "SatisfactionRistPrecautiousMatrix.h" - -@implementation SatisfactionRistPrecautiousMatrix - -@end diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionSecretaryMatrix.h b/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionSecretaryMatrix.h deleted file mode 100644 index 046a226a..00000000 --- a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionSecretaryMatrix.h +++ /dev/null @@ -1,52 +0,0 @@ -// -// SatisfactionSecretaryMatrix.h -// YUMI -// -// Created by YUMI on 2022/4/22. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, SecretaryRouterGenre) { - - SecretaryRouterGenre_Room = 1, - - SecretaryRouterGenre_H5 = 2, - - SecretaryRouterGenre_Purse = 3, - - SecretaryRouterGenre_Recharge = 5, - - SecretaryRouterGenre_UserInfo = 6, - - SecretaryRouterGenre_Car = 7, - - SecretaryRouterGenre_Headwear = 8, - - SecretaryRouterGenre_Nameplate = 9, - - SecretaryRouterGenre_Set_Password = 53, - - SecretaryRouterGenre_Nobel_Center = 54, - - SecretaryRouterGenre_User_Card = 55, - - SecretaryRouterGenre_Nobel_Bubble = 56, - - SecretaryRouterGenre_Dressup_Shop = 73, - - SecretaryRouterGenre_My_Dressup = 74, - - SecretaryRouterGenre_Square_Topic = 75, -}; - -@interface SatisfactionSecretaryMatrix : NSObject -@property (nonatomic,copy) NSString *msg; -@property (nonatomic,copy) NSString *title; -@property (nonatomic,assign) SecretaryRouterGenre routerType; -@property (nonatomic,strong) NSString *routerValue; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionSecretaryMatrix.m b/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionSecretaryMatrix.m deleted file mode 100644 index 2aef8ff5..00000000 --- a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionSecretaryMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// SatisfactionSecretaryMatrix.m -// YUMI -// -// Created by YUMI on 2022/4/22. -// - -#import "SatisfactionSecretaryMatrix.h" - -@implementation SatisfactionSecretaryMatrix - -@end diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionTweetMatrix.h b/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionTweetMatrix.h deleted file mode 100644 index 86a25806..00000000 --- a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionTweetMatrix.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// SatisfactionTweetMatrix.h -// YUMI -// -// Created by YUMI on 2022/4/28. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface SatisfactionTweetMatrix : NSObject -@property (nonatomic,copy) NSString *webUrl; -@property (nonatomic,copy) NSString *title; -@property (nonatomic,copy) NSString *desc; -@property (nonatomic,copy) NSString *picUrl; -@property (nonatomic, assign) NSInteger routerType; -@property (nonatomic, copy) NSString *routerValue; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionTweetMatrix.m b/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionTweetMatrix.m deleted file mode 100644 index 38edea14..00000000 --- a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionTweetMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// SatisfactionTweetMatrix.m -// YUMI -// -// Created by YUMI on 2022/4/28. -// - -#import "SatisfactionTweetMatrix.h" - -@implementation SatisfactionTweetMatrix - -@end diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionUnfoildEnergeticAbstractMatrix.h b/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionUnfoildEnergeticAbstractMatrix.h deleted file mode 100644 index 4dfffb55..00000000 --- a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionUnfoildEnergeticAbstractMatrix.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// SatisfactionUnfoildEnergeticAbstractMatrix.h -// YUMI -// -// Created by YUMI on 2022/4/19. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class SatisfactionUnfoildEnergeticConsumerAbstractMatrix; -@interface SatisfactionUnfoildEnergeticAbstractMatrix : NSObject - -@property (nonatomic,copy) NSString *uid; -@property (nonatomic,strong) SatisfactionUnfoildEnergeticConsumerAbstractMatrix *userVo; - -@end - -@interface SatisfactionUnfoildEnergeticConsumerAbstractMatrix : NSObject -@property (nonatomic,copy) NSString *avatar; -@property (nonatomic,copy) NSString *nick; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionUnfoildEnergeticAbstractMatrix.m b/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionUnfoildEnergeticAbstractMatrix.m deleted file mode 100644 index dcec7127..00000000 --- a/YuMi/Modules/YMMessage/Model/SessionContent/SatisfactionUnfoildEnergeticAbstractMatrix.m +++ /dev/null @@ -1,18 +0,0 @@ -// -// SatisfactionUnfoildEnergeticAbstractMatrix.m -// YUMI -// -// Created by YUMI on 2022/4/19. -// 开启直播 - -#import "SatisfactionUnfoildEnergeticAbstractMatrix.h" - -@implementation SatisfactionUnfoildEnergeticAbstractMatrix - -@end - -@implementation SatisfactionUnfoildEnergeticConsumerAbstractMatrix - - - -@end diff --git a/YuMi/Modules/YMMessage/Model/SessionSettingModel.h b/YuMi/Modules/YMMessage/Model/SessionSettingModel.h new file mode 100644 index 00000000..5975ac14 --- /dev/null +++ b/YuMi/Modules/YMMessage/Model/SessionSettingModel.h @@ -0,0 +1,30 @@ +// +// SessionSettingModel.h +// YUMI +// +// Created by YUMI on 2023/1/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, SessionSettingType) { + ///置顶 + SessionSettingType_Top, +///加入黑名单 + SessionSettingType_black, + ///举报 + SessionSettingType_report +}; + +@interface SessionSettingModel : NSObject +///显示标题 +@property (nonatomic,copy) NSString *title; +///类型 +@property (nonatomic,assign) SessionSettingType settingType; +///状态 +@property (nonatomic,assign) BOOL state; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Model/SessionSettingModel.m b/YuMi/Modules/YMMessage/Model/SessionSettingModel.m new file mode 100644 index 00000000..a57aa8bd --- /dev/null +++ b/YuMi/Modules/YMMessage/Model/SessionSettingModel.m @@ -0,0 +1,12 @@ +// +// SessionSettingModel.m +// YUMI +// +// Created by YUMI on 2023/1/18. +// + +#import "SessionSettingModel.h" + +@implementation SessionSettingModel + +@end diff --git a/YuMi/Modules/YMMessage/Model/SessionToolBar/CommunicationParrotMatrix.h b/YuMi/Modules/YMMessage/Model/SessionToolBar/CommunicationParrotMatrix.h deleted file mode 100644 index 62b742fb..00000000 --- a/YuMi/Modules/YMMessage/Model/SessionToolBar/CommunicationParrotMatrix.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// CommunicationParrotMatrix.h -// YUMI -// -// Created by YUMI on 2022/4/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, CommunicationParrotGenre) { - - CommunicationParrotGenre_Photo = 1, - - CommunicationParrotGenre_Gift -}; - -@interface CommunicationParrotMatrix : NSObject -@property (nonatomic,strong) NSString *imageName; -@property (nonatomic,assign) CommunicationParrotGenre type; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Model/SessionToolBar/CommunicationParrotMatrix.m b/YuMi/Modules/YMMessage/Model/SessionToolBar/CommunicationParrotMatrix.m deleted file mode 100644 index 617b5531..00000000 --- a/YuMi/Modules/YMMessage/Model/SessionToolBar/CommunicationParrotMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// CommunicationParrotMatrix.m -// YUMI -// -// Created by YUMI on 2022/4/21. -// - -#import "CommunicationParrotMatrix.h" - -@implementation CommunicationParrotMatrix - -@end diff --git a/YuMi/Modules/YMMessage/Model/SessionToolBar/MessageMenuModel.h b/YuMi/Modules/YMMessage/Model/SessionToolBar/MessageMenuModel.h new file mode 100644 index 00000000..b5bd9f35 --- /dev/null +++ b/YuMi/Modules/YMMessage/Model/SessionToolBar/MessageMenuModel.h @@ -0,0 +1,27 @@ +// +// MessageMenuModel.h +// YUMI +// +// Created by YUMI on 2022/4/21. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, MessageMenuType) { + ///发送图片 + MessageMenuType_Photo = 1, + ///送礼物 + MessageMenuType_Gift +}; + +@interface MessageMenuModel : NSObject +///图片 +@property (nonatomic,strong) NSString *imageName; +///类型 +@property (nonatomic,assign) MessageMenuType type; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Model/SessionToolBar/MessageMenuModel.m b/YuMi/Modules/YMMessage/Model/SessionToolBar/MessageMenuModel.m new file mode 100644 index 00000000..dc1a7496 --- /dev/null +++ b/YuMi/Modules/YMMessage/Model/SessionToolBar/MessageMenuModel.m @@ -0,0 +1,12 @@ +// +// MessageMenuModel.m +// YUMI +// +// Created by YUMI on 2022/4/21. +// + +#import "MessageMenuModel.h" + +@implementation MessageMenuModel + +@end diff --git a/YuMi/Modules/YMMessage/Presenter/CommunicationExternalizer.h b/YuMi/Modules/YMMessage/Presenter/CommunicationExternalizer.h deleted file mode 100644 index 660d5eb3..00000000 --- a/YuMi/Modules/YMMessage/Presenter/CommunicationExternalizer.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// CommunicationExternalizer.h -// YUMI -// -// Created by zu on 2021/12/8. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationExternalizer : BaseMvpExternalizer - -- (void)acquireChinwagRestrictionReceiverCid:(NSString *)receiverUid; - -- (void)getUserInfo:(NSString *)uid; -- (void)acquireFantowardsicsSimilar:(NSString *)likeUid; -- (void)considertowardsionConsumer:(NSString *)targetUid; - -- (void)acquireConsumerAbstractAboutCid:(NSString *)uid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Presenter/CommunicationExternalizer.m b/YuMi/Modules/YMMessage/Presenter/CommunicationExternalizer.m deleted file mode 100644 index ee88829f..00000000 --- a/YuMi/Modules/YMMessage/Presenter/CommunicationExternalizer.m +++ /dev/null @@ -1,59 +0,0 @@ -// -// CommunicationExternalizer.m -// YUMI -// -// Created by zu on 2021/12/8. -// - -#import "CommunicationExternalizer.h" -#import "Api+Message.h" -#import "ChatLimitMatrix.h" -#import "CommunicationCeremony.h" -#import "Api+Mine.h" -#import "ConsumerAbstractMatrix.h" -#import "AccountAbstractStorage.h" -#import "NEMCCommunicationUtils.h" - -@implementation CommunicationExternalizer - -- (void)acquireConsumerAbstractAboutCid:(NSString *)uid { - [Api getUserInfo:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ConsumerAbstractMatrix * infoMatrix = [ConsumerAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] dwellEarnConsumerAbstractAccomplishment:infoMatrix]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - - }] uid:uid]; -} - -- (void)acquireChinwagRestrictionReceiverCid:(NSString *)receiverUid { - [Api acquireChinwagRestriction:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ChatLimitMatrix *chatLimit = [ChatLimitMatrix mtowardsrixAboutJSON:data.data]; - [[self acquireRegard] dwellEarnRestrictionChinwag:chatLimit]; - } EvidenceChambering:NO errorToast:NO] receiverUid:receiverUid]; -} - -- (void)getUserInfo:(NSString *)uid { - [Api consumerSpecificAbstractImplementtowardsion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ConsumerAbstractMatrix * infoMatrix = [ConsumerAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] dwellEarnInterlocutionConsumerAbstractAccomplishment:infoMatrix]; - }] uid:uid page:@"1" pageSize:@"20"]; -} - -- (void)acquireFantowardsicsSimilar:(NSString *)likeUid { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api considertowardsionPositionImplementtowardsion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - BOOL isLike = [data.data boolValue] || [NEMCCommunicationUtils isHLOfficalSequenceription:likeUid]; - [[self acquireRegard] acquireFantowardsicsSimilarAccomplishment:isLike]; - }] uid:uid isLikeUid:likeUid]; -} - -- (void)considertowardsionConsumer:(NSString *)targetUid { - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - NSString * ticket = [[AccountAbstractStorage instance] acquireTicket]; - NSString * type = @"1"; - [Api considertowardsionImplementtowardsion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] considertowardsionConsumerAccomplishment:targetUid]; - } EvidenceChambering:YES] uid:uid likedUid:targetUid ticket:ticket type:type]; -} - -@end diff --git a/YuMi/Modules/YMMessage/Presenter/MessagePresenter.h b/YuMi/Modules/YMMessage/Presenter/MessagePresenter.h new file mode 100644 index 00000000..9b477381 --- /dev/null +++ b/YuMi/Modules/YMMessage/Presenter/MessagePresenter.h @@ -0,0 +1,29 @@ +// +// MessagePresenter.h +// YUMI +// +// Created by zu on 2021/12/8. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessagePresenter : BaseMvpPresenter + +- (void)getChatLimitReceiverUid:(NSString *)receiverUid; + +/// 获取用户信息 +/// @param uid 用户uid +- (void)getUserInfo:(NSString *)uid; +///是否关注当前用户 +- (void)getFansLike:(NSString *)likeUid; +/// 关注用户 +/// @param targetUid 目标用户的uid +- (void)attentionUser:(NSString *)targetUid; + +// 获取用户信息 +- (void)getUserInfoWithUid:(NSString *)uid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Presenter/MessagePresenter.m b/YuMi/Modules/YMMessage/Presenter/MessagePresenter.m new file mode 100644 index 00000000..0cbcb5a9 --- /dev/null +++ b/YuMi/Modules/YMMessage/Presenter/MessagePresenter.m @@ -0,0 +1,65 @@ +// +// MessagePresenter.m +// YUMI +// +// Created by zu on 2021/12/8. +// + +#import "MessagePresenter.h" +#import "Api+Message.h" +#import "ChatLimitModel.h" +#import "MessageProtocol.h" +#import "Api+Mine.h" +#import "UserInfoModel.h" +#import "AccountInfoStorage.h" +#import "NIMMessageUtils.h" + +@implementation MessagePresenter + +// 获取用户信息 +- (void)getUserInfoWithUid:(NSString *)uid { + [Api getUserInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + UserInfoModel * infoModel = [UserInfoModel modelWithDictionary:data.data]; + [[self getView] onGetUserInfoSuccess:infoModel]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + + }] uid:uid]; +} + +- (void)getChatLimitReceiverUid:(NSString *)receiverUid { + [Api getChatLimit:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + ChatLimitModel *chatLimit = [ChatLimitModel modelWithJSON:data.data]; + [[self getView] onGetLimitChat:chatLimit]; + } showLoading:NO errorToast:NO] receiverUid:receiverUid]; +} + +/// 获取用户信息 +/// @param uid 用户uid +- (void)getUserInfo:(NSString *)uid { + [Api userDetailInfoCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + UserInfoModel * infoModel = [UserInfoModel modelWithDictionary:data.data]; + [[self getView] onGetSessionUserInfoSuccess:infoModel]; + }] uid:uid page:@"1" pageSize:@"20"]; +} + +///是否关注当前用户 +- (void)getFansLike:(NSString *)likeUid { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api attentionStatusCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + BOOL isLike = [data.data boolValue] || [NIMMessageUtils isOfficalAccount:likeUid]; + [[self getView] getFansLikeSuccess:isLike]; + }] uid:uid isLikeUid:likeUid]; +} + +/// 关注用户 +/// @param targetUid 目标用户的uid +- (void)attentionUser:(NSString *)targetUid { + NSString * uid = [[AccountInfoStorage instance] getUid]; + NSString * ticket = [[AccountInfoStorage instance] getTicket]; + NSString * type = @"1"; + [Api attentionCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] attentionUserSuccess:targetUid]; + } showLoading:YES] uid:uid likedUid:targetUid ticket:ticket type:type]; +} + +@end diff --git a/YuMi/Modules/YMMessage/Protocol/CommunicationCeremony.h b/YuMi/Modules/YMMessage/Protocol/CommunicationCeremony.h deleted file mode 100644 index e5a0adc1..00000000 --- a/YuMi/Modules/YMMessage/Protocol/CommunicationCeremony.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// CommunicationCeremony.h -// YUMI -// -// Created by zu on 2021/12/8. -// - -#import - -@class ChatLimitMatrix, ConsumerAbstractMatrix; - -NS_ASSUME_NONNULL_BEGIN - -@protocol CommunicationCeremony - -- (void)dwellEarnRestrictionChinwag:(ChatLimitMatrix *)chatLimit; - -- (void)dwellEarnInterlocutionConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo; -- (void)acquireFantowardsicsSimilarAccomplishment:(BOOL)isLike; -- (void)considertowardsionConsumerAccomplishment:(NSString *)uid; - -- (void)dwellEarnConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Protocol/MessageProtocol.h b/YuMi/Modules/YMMessage/Protocol/MessageProtocol.h new file mode 100644 index 00000000..eb93b450 --- /dev/null +++ b/YuMi/Modules/YMMessage/Protocol/MessageProtocol.h @@ -0,0 +1,29 @@ +// +// MessageProtocol.h +// YUMI +// +// Created by zu on 2021/12/8. +// + +#import + +@class ChatLimitModel, UserInfoModel; + +NS_ASSUME_NONNULL_BEGIN + +@protocol MessageProtocol + +- (void)onGetLimitChat:(ChatLimitModel *)chatLimit; + +///获取用户信息成功 +- (void)onGetSessionUserInfoSuccess:(UserInfoModel *)userInfo; +///获取粉丝喜欢成功 +- (void)getFansLikeSuccess:(BOOL)isLike; +///关注成功 +- (void)attentionUserSuccess:(NSString *)uid; + +///获取用户信息 +- (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Tool/CustomAttachmentDecoder.m b/YuMi/Modules/YMMessage/Tool/CustomAttachmentDecoder.m index e989dc9a..5240bc21 100644 --- a/YuMi/Modules/YMMessage/Tool/CustomAttachmentDecoder.m +++ b/YuMi/Modules/YMMessage/Tool/CustomAttachmentDecoder.m @@ -7,7 +7,7 @@ #import "CustomAttachmentDecoder.h" #import "NSObject+MJExtension.h" -#import "AttachmentMatrix.h" +#import "AttachmentModel.h" @implementation CustomAttachmentDecoder @@ -21,10 +21,10 @@ int second = [dict[@"second"] intValue]; NSDictionary *data = dict[@"data"]; if ([data isKindOfClass:[NSString class]]) { - data = [(NSString *)data mtowardsrix2dictionary]; + data = [(NSString *)data model2dictionary]; } if ([data isKindOfClass:[NSDictionary class]]) { - AttachmentMatrix *attachment = [[AttachmentMatrix alloc]init]; + AttachmentModel *attachment = [[AttachmentModel alloc]init]; attachment.first = (short)first; attachment.second = (short)second; attachment.data = data; diff --git a/YuMi/Modules/YMMessage/View/CommunicationVocalmusicConcentrate.h b/YuMi/Modules/YMMessage/View/CommunicationVocalmusicConcentrate.h deleted file mode 100644 index 81aa249a..00000000 --- a/YuMi/Modules/YMMessage/View/CommunicationVocalmusicConcentrate.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// CommunicationVocalmusicConcentrate.h -// YUMI -// -// Created by YUMI on 2022/4/22. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class NIMMessage; -@interface CommunicationVocalmusicConcentrate : NSObject -+ (instancetype)partowardsiciptowardsionInstance; -@property (nonatomic,strong, readonly) NIMMessage *universalDisportingCommunication; -- (void)play:(NIMMessage *)message; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/CommunicationVocalmusicConcentrate.m b/YuMi/Modules/YMMessage/View/CommunicationVocalmusicConcentrate.m deleted file mode 100644 index 0ed3feac..00000000 --- a/YuMi/Modules/YMMessage/View/CommunicationVocalmusicConcentrate.m +++ /dev/null @@ -1,74 +0,0 @@ -// -// CommunicationVocalmusicConcentrate.m -// YUMI -// -// Created by YUMI on 2022/4/22. -// - -#import "CommunicationVocalmusicConcentrate.h" -#import - -@interface CommunicationVocalmusicConcentrate () -@property (nonatomic,assign) NSInteger retryCount; -@property (nonatomic,strong,nullable) NIMMessage *universalDisportingCommunication; -@end - -@implementation CommunicationVocalmusicConcentrate - -+ (instancetype)partowardsiciptowardsionInstance { - static CommunicationVocalmusicConcentrate *instance; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - instance = [[CommunicationVocalmusicConcentrate alloc] init]; - }); - return instance; -} - -- (instancetype)init { - self = [super init]; - if (self) { - [[NIMSDK sharedSDK].mediaManager addDelegate:self]; - [self replacementRetryComputtowardsion]; - } - return self; -} - -- (void)replacementRetryComputtowardsion { - _retryCount = 3; -} - -- (void)play:(NIMMessage *)message { - NIMAudioObject *audioObject = (NIMAudioObject *)message.messageObject; - if ([audioObject isKindOfClass:[NIMAudioObject class]]) { - self.universalDisportingCommunication = message; - message.isPlayed = YES; - [[NIMSDK sharedSDK].mediaManager play:audioObject.path]; - } -} - - -#pragma mark - NIMMediaManagerDelegate - -- (void)playAudio:(NSString *)filePath didBeganWithError:(NSError *)error -{ - if (error) { - if (_retryCount > 0){ - - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [[NIMSDK sharedSDK].mediaManager play:filePath]; - }); - }else{ - self.universalDisportingCommunication = nil; - [self replacementRetryComputtowardsion]; - } - } else { - [self replacementRetryComputtowardsion]; - } -} - -- (void)playAudio:(NSString *)filePath didCompletedWithError:(nullable NSError *)error { - self.universalDisportingCommunication = nil; -} - - -@end diff --git a/YuMi/Modules/YMMessage/View/FindNew/Api/Api+FindNew.h b/YuMi/Modules/YMMessage/View/FindNew/Api/Api+FindNew.h index b5bde752..ef30d5a3 100644 --- a/YuMi/Modules/YMMessage/View/FindNew/Api/Api+FindNew.h +++ b/YuMi/Modules/YMMessage/View/FindNew/Api/Api+FindNew.h @@ -10,11 +10,20 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (FindNew) -+ (void)prohibiticoveryStrangeConsumer:(HttpRequestHelperCompletion)completion; +///发现萌新 ++ (void)findNewUser:(HttpRequestHelperCompletion)completion; -+ (void)prohibiticoveryStrangeBewelcometoCommunictowardsionSttowardsement:(HttpRequestHelperCompletion)completion start:(NSString *)start pageSize:(NSString *)pageSize; +/// 打招呼用语列表 +/// @param completion 完成 +/// @param start 开始 +/// @param pageSize 一页多少个 ++ (void)findNewGreetMessageList:(HttpRequestHelperCompletion)completion start:(NSString *)start pageSize:(NSString *)pageSize; -+ (void)prohibiticoveryStrangeConsumerBewelcometo:(HttpRequestHelperCompletion)completion helloUid:(NSString *)helloUid message:(NSString *)message; +/// 打招呼 +/// @param completion 完成 +/// @param helloUid 打招呼的uid +/// @param message 打招呼的消息 ++ (void)findNewUserGreet:(HttpRequestHelperCompletion)completion helloUid:(NSString *)helloUid message:(NSString *)message; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/FindNew/Api/Api+FindNew.m b/YuMi/Modules/YMMessage/View/FindNew/Api/Api+FindNew.m index 91a33eff..30040f38 100644 --- a/YuMi/Modules/YMMessage/View/FindNew/Api/Api+FindNew.m +++ b/YuMi/Modules/YMMessage/View/FindNew/Api/Api+FindNew.m @@ -10,23 +10,32 @@ #import @implementation Api (FindNew) -+ (void)prohibiticoveryStrangeConsumer:(HttpRequestHelperCompletion)completion { +///发现萌新 ++ (void)findNewUser:(HttpRequestHelperCompletion)completion { NSMutableDictionary * pararms = [NSMutableDictionary dictionary]; - [pararms secureSetGroal:@"1" forKey:@"page"]; - [pararms secureSetGroal:@"20" forKey:@"pageSize"]; - NSString * fang = [NSString stringFromBase64String:@"bmV3YmllL3Bvb2xMaXN0"]; - [HttpRequestFacilitater request:fang method:HttpRequestHelperMethodGET params:pararms completion:completion]; + [pararms safeSetObject:@"1" forKey:@"page"]; + [pararms safeSetObject:@"20" forKey:@"pageSize"]; + NSString * fang = [NSString stringFromBase64String:@"bmV3YmllL3Bvb2xMaXN0"];//newbie/poolList + [HttpRequestHelper request:fang method:HttpRequestHelperMethodGET params:pararms completion:completion]; } -+ (void)prohibiticoveryStrangeBewelcometoCommunictowardsionSttowardsement:(HttpRequestHelperCompletion)completion start:(NSString *)start pageSize:(NSString *)pageSize { - NSString * fang = [NSString stringFromBase64String:@"bmV3YmllL21lc3NhZ2VMaXN0"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, start, pageSize, nil]; +/// 打招呼用语列表 +/// @param completion 完成 +/// @param start 开始 +/// @param pageSize 一页多少个 ++ (void)findNewGreetMessageList:(HttpRequestHelperCompletion)completion start:(NSString *)start pageSize:(NSString *)pageSize { + NSString * fang = [NSString stringFromBase64String:@"bmV3YmllL21lc3NhZ2VMaXN0"];//newbie/messageList + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, start, pageSize, nil]; } -+ (void)prohibiticoveryStrangeConsumerBewelcometo:(HttpRequestHelperCompletion)completion helloUid:(NSString *)helloUid message:(NSString *)message { - NSString * fang = [NSString stringFromBase64String:@"bmV3YmllL2hlbGxv"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion,__FUNCTION__, helloUid, message, nil]; +/// 打招呼 +/// @param completion 完成 +/// @param helloUid 打招呼的uid +/// @param message 打招呼的消息 ++ (void)findNewUserGreet:(HttpRequestHelperCompletion)completion helloUid:(NSString *)helloUid message:(NSString *)message { + NSString * fang = [NSString stringFromBase64String:@"bmV3YmllL2hlbGxv"];//newbie/hello + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion,__FUNCTION__, helloUid, message, nil]; } @end diff --git a/YuMi/Modules/YMMessage/View/FindNew/Model/DiscoveryStrangeBewelcometoCommunicationMatrix.h b/YuMi/Modules/YMMessage/View/FindNew/Model/DiscoveryStrangeBewelcometoCommunicationMatrix.h deleted file mode 100644 index bc16d48e..00000000 --- a/YuMi/Modules/YMMessage/View/FindNew/Model/DiscoveryStrangeBewelcometoCommunicationMatrix.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// DiscoveryStrangeBewelcometoCommunicationMatrix.h -// YUMI -// -// Created by YUMI on 2022/6/17. -// - -#import -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -@interface DiscoveryStrangeBewelcometoCommunicationMatrix : NSObject -@property (nonatomic,copy) NSString *avatar; -@property (nonatomic,copy)NSString *uid; -@property (nonatomic,copy)NSString *inRoomUid; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,copy) NSString *message; -@property(nonatomic,assign) GenderGenre gender; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/FindNew/Model/DiscoveryStrangeBewelcometoCommunicationMatrix.m b/YuMi/Modules/YMMessage/View/FindNew/Model/DiscoveryStrangeBewelcometoCommunicationMatrix.m deleted file mode 100644 index f0d7cc37..00000000 --- a/YuMi/Modules/YMMessage/View/FindNew/Model/DiscoveryStrangeBewelcometoCommunicationMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// DiscoveryStrangeBewelcometoCommunicationMatrix.m -// YUMI -// -// Created by YUMI on 2022/6/17. -// - -#import "DiscoveryStrangeBewelcometoCommunicationMatrix.h" - -@implementation DiscoveryStrangeBewelcometoCommunicationMatrix - -@end diff --git a/YuMi/Modules/YMMessage/View/FindNew/Model/DiscoveryStrangeBewelcometoStatementMatrix.h b/YuMi/Modules/YMMessage/View/FindNew/Model/DiscoveryStrangeBewelcometoStatementMatrix.h deleted file mode 100644 index 05fd01dc..00000000 --- a/YuMi/Modules/YMMessage/View/FindNew/Model/DiscoveryStrangeBewelcometoStatementMatrix.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// DiscoveryStrangeBewelcometoStatementMatrix.h -// YUMI -// -// Created by YUMI on 2022/6/13. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class DiscoveryStrangeBewelcometoMatrix; -@interface DiscoveryStrangeBewelcometoStatementMatrix : NSObject - -@property (nonatomic,copy) NSString * start; -@property (nonatomic,strong) NSArray *list; - -@end - - -@interface DiscoveryStrangeBewelcometoMatrix : NSObject -@property (nonatomic,assign) NSInteger fId; -@property (nonatomic,copy) NSString *message; -@property (nonatomic,assign) BOOL isSelect; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/FindNew/Model/DiscoveryStrangeBewelcometoStatementMatrix.m b/YuMi/Modules/YMMessage/View/FindNew/Model/DiscoveryStrangeBewelcometoStatementMatrix.m deleted file mode 100644 index b20d3f99..00000000 --- a/YuMi/Modules/YMMessage/View/FindNew/Model/DiscoveryStrangeBewelcometoStatementMatrix.m +++ /dev/null @@ -1,22 +0,0 @@ -// -// DiscoveryStrangeBewelcometoStatementMatrix.m -// YUMI -// -// Created by YUMI on 2022/6/13. -// - -#import "DiscoveryStrangeBewelcometoStatementMatrix.h" - -@implementation DiscoveryStrangeBewelcometoStatementMatrix -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{@"list": DiscoveryStrangeBewelcometoMatrix.class}; -} -@end - - -@implementation DiscoveryStrangeBewelcometoMatrix - -+ (NSDictionary *)replacedDigitalByvirtueofMaintainertyConstitute { - return @{@"fId": @"id"}; -} -@end diff --git a/YuMi/Modules/YMMessage/View/FindNew/Model/DiscoveryStrangeConsumerAbstractMatrix.h b/YuMi/Modules/YMMessage/View/FindNew/Model/DiscoveryStrangeConsumerAbstractMatrix.h deleted file mode 100644 index be4bcfe8..00000000 --- a/YuMi/Modules/YMMessage/View/FindNew/Model/DiscoveryStrangeConsumerAbstractMatrix.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// DiscoveryStrangeConsumerAbstractMatrix.h -// YUMI -// -// Created by YUMI on 2022/6/10. -// - -#import -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -@interface DiscoveryStrangeConsumerAbstractMatrix : NSObject -@property (nonatomic,copy) NSString *avatar; -@property (nonatomic,copy) NSString *charmUrl; -@property (nonatomic,copy) NSString *erbanNo; -@property (nonatomic,copy) NSString *experUrl; -@property (nonatomic,assign) GenderGenre gender; -@property (nonatomic,copy) NSString *uid; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,assign) BOOL hello; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/FindNew/Model/DiscoveryStrangeConsumerAbstractMatrix.m b/YuMi/Modules/YMMessage/View/FindNew/Model/DiscoveryStrangeConsumerAbstractMatrix.m deleted file mode 100644 index c031656d..00000000 --- a/YuMi/Modules/YMMessage/View/FindNew/Model/DiscoveryStrangeConsumerAbstractMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// DiscoveryStrangeConsumerAbstractMatrix.m -// YUMI -// -// Created by YUMI on 2022/6/10. -// - -#import "DiscoveryStrangeConsumerAbstractMatrix.h" - -@implementation DiscoveryStrangeConsumerAbstractMatrix - -@end diff --git a/YuMi/Modules/YMMessage/View/FindNew/Model/FindNewGreetListModel.h b/YuMi/Modules/YMMessage/View/FindNew/Model/FindNewGreetListModel.h new file mode 100644 index 00000000..49ae8df5 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/FindNew/Model/FindNewGreetListModel.h @@ -0,0 +1,31 @@ +// +// FindNewGreetListModel.h +// YUMI +// +// Created by YUMI on 2022/6/13. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class FindNewGreetModel; +@interface FindNewGreetListModel : NSObject + +///开始的 +@property (nonatomic,copy) NSString * start; +///列表 +@property (nonatomic,strong) NSArray *list; + +@end + + +@interface FindNewGreetModel : NSObject +///id +@property (nonatomic,assign) NSInteger fId; +///消息 +@property (nonatomic,copy) NSString *message; +///是否选中 +@property (nonatomic,assign) BOOL isSelect; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/FindNew/Model/FindNewGreetListModel.m b/YuMi/Modules/YMMessage/View/FindNew/Model/FindNewGreetListModel.m new file mode 100644 index 00000000..21e4bdc8 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/FindNew/Model/FindNewGreetListModel.m @@ -0,0 +1,24 @@ +// +// FindNewGreetListModel.m +// YUMI +// +// Created by YUMI on 2022/6/13. +// + +#import "FindNewGreetListModel.h" + +@implementation FindNewGreetListModel +///扩展方法 按需索取 重写即可 +///如果一个模型中 包含一个数组 数组中是另一个模型 ++ (NSDictionary *)objectClassInArray { + return @{@"list": FindNewGreetModel.class}; +} +@end + + +@implementation FindNewGreetModel + ++ (NSDictionary *)replacedKeyFromPropertyName { + return @{@"fId": @"id"}; +} +@end diff --git a/YuMi/Modules/YMMessage/View/FindNew/Model/FindNewGreetMessageModel.h b/YuMi/Modules/YMMessage/View/FindNew/Model/FindNewGreetMessageModel.h new file mode 100644 index 00000000..f46385b7 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/FindNew/Model/FindNewGreetMessageModel.h @@ -0,0 +1,27 @@ +// +// FindNewGreetMessageModel.h +// YUMI +// +// Created by YUMI on 2022/6/17. +// + +#import +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +@interface FindNewGreetMessageModel : NSObject +///头像 +@property (nonatomic,copy) NSString *avatar; +///用户uid +@property (nonatomic,copy)NSString *uid; +///用户所在房间inRoomUid +@property (nonatomic,copy)NSString *inRoomUid; +///萌新昵称 +@property (nonatomic,copy) NSString *nick; +///打招呼内容 +@property (nonatomic,copy) NSString *message; +///性别 +@property(nonatomic,assign) GenderType gender; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/FindNew/Model/FindNewGreetMessageModel.m b/YuMi/Modules/YMMessage/View/FindNew/Model/FindNewGreetMessageModel.m new file mode 100644 index 00000000..69988fbf --- /dev/null +++ b/YuMi/Modules/YMMessage/View/FindNew/Model/FindNewGreetMessageModel.m @@ -0,0 +1,12 @@ +// +// FindNewGreetMessageModel.m +// YUMI +// +// Created by YUMI on 2022/6/17. +// + +#import "FindNewGreetMessageModel.h" + +@implementation FindNewGreetMessageModel + +@end diff --git a/YuMi/Modules/YMMessage/View/FindNew/Model/FindNewUserInfoModel.h b/YuMi/Modules/YMMessage/View/FindNew/Model/FindNewUserInfoModel.h new file mode 100644 index 00000000..b06b332e --- /dev/null +++ b/YuMi/Modules/YMMessage/View/FindNew/Model/FindNewUserInfoModel.h @@ -0,0 +1,31 @@ +// +// FindNewUserInfoModel.h +// YUMI +// +// Created by YUMI on 2022/6/10. +// + +#import +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +@interface FindNewUserInfoModel : NSObject +///头像 +@property (nonatomic,copy) NSString *avatar; +///魅力等级 +@property (nonatomic,copy) NSString *charmUrl; +///平台id +@property (nonatomic,copy) NSString *erbanNo; +///等级 +@property (nonatomic,copy) NSString *experUrl; +///性别 +@property (nonatomic,assign) GenderType gender; +///uid +@property (nonatomic,copy) NSString *uid; +///昵称 +@property (nonatomic,copy) NSString *nick; +///是否打招呼 +@property (nonatomic,assign) BOOL hello; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/FindNew/Model/FindNewUserInfoModel.m b/YuMi/Modules/YMMessage/View/FindNew/Model/FindNewUserInfoModel.m new file mode 100644 index 00000000..f2d598df --- /dev/null +++ b/YuMi/Modules/YMMessage/View/FindNew/Model/FindNewUserInfoModel.m @@ -0,0 +1,12 @@ +// +// FindNewUserInfoModel.m +// YUMI +// +// Created by YUMI on 2022/6/10. +// + +#import "FindNewUserInfoModel.h" + +@implementation FindNewUserInfoModel + +@end diff --git a/YuMi/Modules/YMMessage/View/FindNew/Presenter/XPSessionFindNewPresenter.h b/YuMi/Modules/YMMessage/View/FindNew/Presenter/XPSessionFindNewPresenter.h new file mode 100644 index 00000000..aaedfbae --- /dev/null +++ b/YuMi/Modules/YMMessage/View/FindNew/Presenter/XPSessionFindNewPresenter.h @@ -0,0 +1,18 @@ +// +// YMSessionFindNewPresenter.h +// YUMI +// +// Created by YUMI on 2022/6/10. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPSessionFindNewPresenter : BaseMvpPresenter + +- (void)getFindNewUser; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/FindNew/Presenter/XPSessionFindNewPresenter.m b/YuMi/Modules/YMMessage/View/FindNew/Presenter/XPSessionFindNewPresenter.m new file mode 100644 index 00000000..6d066c34 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/FindNew/Presenter/XPSessionFindNewPresenter.m @@ -0,0 +1,21 @@ +// +// YMSessionFindNewPresenter.m +// YUMI +// +// Created by YUMI on 2022/6/10. +// + +#import "XPSessionFindNewPresenter.h" +#import "XPSessionFindNewProtocol.h" +#import "FindNewUserInfoModel.h" +#import "Api+FindNew.h" +@implementation XPSessionFindNewPresenter + +- (void)getFindNewUser { + [Api findNewUser:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [FindNewUserInfoModel modelsWithArray:data.data]; + [[self getView] getFindNewUserSuccess:array]; + }]]; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/FindNew/Presenter/YUMIInterlocutionDiscoveryStrangeExternalizer.h b/YuMi/Modules/YMMessage/View/FindNew/Presenter/YUMIInterlocutionDiscoveryStrangeExternalizer.h deleted file mode 100644 index 63fa8849..00000000 --- a/YuMi/Modules/YMMessage/View/FindNew/Presenter/YUMIInterlocutionDiscoveryStrangeExternalizer.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMSessionFindNewPresenter.h -// YUMI -// -// Created by YUMI on 2022/6/10. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIInterlocutionDiscoveryStrangeExternalizer : BaseMvpExternalizer - -- (void)acquireDiscoveryStrangeConsumer; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/FindNew/Presenter/YUMIInterlocutionDiscoveryStrangeExternalizer.m b/YuMi/Modules/YMMessage/View/FindNew/Presenter/YUMIInterlocutionDiscoveryStrangeExternalizer.m deleted file mode 100644 index c9eb1b60..00000000 --- a/YuMi/Modules/YMMessage/View/FindNew/Presenter/YUMIInterlocutionDiscoveryStrangeExternalizer.m +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMSessionFindNewPresenter.m -// YUMI -// -// Created by YUMI on 2022/6/10. -// - -#import "YUMIInterlocutionDiscoveryStrangeExternalizer.h" -#import "FBCInterlocutionDiscoveryStrangeCeremony.h" -#import "DiscoveryStrangeConsumerAbstractMatrix.h" -#import "Api+FindNew.h" -@implementation YUMIInterlocutionDiscoveryStrangeExternalizer - -- (void)acquireDiscoveryStrangeConsumer { - [Api prohibiticoveryStrangeConsumer:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [DiscoveryStrangeConsumerAbstractMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireDiscoveryStrangeConsumerAccomplishment:array]; - }]]; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/FindNew/Protocol/FBCInterlocutionDiscoveryStrangeCeremony.h b/YuMi/Modules/YMMessage/View/FindNew/Protocol/FBCInterlocutionDiscoveryStrangeCeremony.h deleted file mode 100644 index 441109fe..00000000 --- a/YuMi/Modules/YMMessage/View/FindNew/Protocol/FBCInterlocutionDiscoveryStrangeCeremony.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMSessionFindNewProtocol.h -// YUMI -// -// Created by YUMI on 2022/6/10. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCInterlocutionDiscoveryStrangeCeremony - -- (void)acquireDiscoveryStrangeConsumerAccomplishment:(NSArray *)list; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/FindNew/Protocol/XPSessionFindNewProtocol.h b/YuMi/Modules/YMMessage/View/FindNew/Protocol/XPSessionFindNewProtocol.h new file mode 100644 index 00000000..4537ca44 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/FindNew/Protocol/XPSessionFindNewProtocol.h @@ -0,0 +1,18 @@ +// +// YMSessionFindNewProtocol.h +// YUMI +// +// Created by YUMI on 2022/6/10. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPSessionFindNewProtocol + +- (void)getFindNewUserSuccess:(NSArray *)list; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/Cell/XPSessionFindNewEmptyTableViewCell.h b/YuMi/Modules/YMMessage/View/FindNew/View/Cell/XPSessionFindNewEmptyTableViewCell.h new file mode 100644 index 00000000..963b9555 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/FindNew/View/Cell/XPSessionFindNewEmptyTableViewCell.h @@ -0,0 +1,16 @@ +// +// YMSessionFindNewEmptyTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/6/10. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPSessionFindNewEmptyTableViewCell : UITableViewCell + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/Cell/XPSessionFindNewEmptyTableViewCell.m b/YuMi/Modules/YMMessage/View/FindNew/View/Cell/XPSessionFindNewEmptyTableViewCell.m new file mode 100644 index 00000000..ad00b5bf --- /dev/null +++ b/YuMi/Modules/YMMessage/View/FindNew/View/Cell/XPSessionFindNewEmptyTableViewCell.m @@ -0,0 +1,71 @@ +// +// YMSessionFindNewEmptyTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/6/10. +// + +#import "XPSessionFindNewEmptyTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImageConstant.h" + +@interface XPSessionFindNewEmptyTableViewCell () +@property (nonatomic,strong) UIImageView *emptyImageView; +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPSessionFindNewEmptyTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.emptyImageView]; + [self.contentView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.emptyImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.contentView).offset(250); + make.size.mas_equalTo(CGSizeMake(100, 100)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.emptyImageView.mas_bottom).offset(20); + make.left.right.mas_equalTo(self.contentView); + }]; +} +#pragma mark - Getters And Setters +- (UIImageView *)emptyImageView { + if (!_emptyImageView) { + _emptyImageView = [[UIImageView alloc] init]; + _emptyImageView.userInteractionEnabled = YES; + _emptyImageView.image = [UIImageConstant defalutEmptyPlaceholder]; + _emptyImageView.layer.masksToBounds = YES; + _emptyImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _emptyImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPSessionFindNewEmptyTableViewCell0"); + _titleLabel.font = [UIFont systemFontOfSize:16]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _titleLabel; +}@end diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/Cell/XPSessionFindNewGreetTableViewCell.h b/YuMi/Modules/YMMessage/View/FindNew/View/Cell/XPSessionFindNewGreetTableViewCell.h new file mode 100644 index 00000000..addf3ecd --- /dev/null +++ b/YuMi/Modules/YMMessage/View/FindNew/View/Cell/XPSessionFindNewGreetTableViewCell.h @@ -0,0 +1,25 @@ +// +// YMSessionFindNewGreetTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/6/13. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class FindNewGreetModel, XPSessionFindNewGreetTableViewCell; +@protocol XPSessionFindNewGreetTableViewCellDelegate + +///选择了某个item +- (void)xPSessionFindNewGreetTableViewCell:(XPSessionFindNewGreetTableViewCell *)view didSelectItem:(FindNewGreetModel *)model; + +@end + +@interface XPSessionFindNewGreetTableViewCell : UITableViewCell +@property (nonatomic,strong) FindNewGreetModel *greetModel; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/Cell/XPSessionFindNewGreetTableViewCell.m b/YuMi/Modules/YMMessage/View/FindNew/View/Cell/XPSessionFindNewGreetTableViewCell.m new file mode 100644 index 00000000..ac4e37ce --- /dev/null +++ b/YuMi/Modules/YMMessage/View/FindNew/View/Cell/XPSessionFindNewGreetTableViewCell.m @@ -0,0 +1,91 @@ +// +// YMSessionFindNewGreetTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/6/13. +// + +#import "XPSessionFindNewGreetTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +///Model +#import "FindNewGreetListModel.h" + +@interface XPSessionFindNewGreetTableViewCell () +///选择 +@property (nonatomic,strong) UIButton *chooseButton; +///选择标题 +@property (nonatomic,strong) UILabel *titleLabel; +@end + + +@implementation XPSessionFindNewGreetTableViewCell +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.chooseButton]; + [self.contentView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.chooseButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.titleLabel.mas_centerY); + make.left.mas_equalTo(15); + make.height.width.mas_equalTo(18); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(10); + make.left.mas_equalTo(self.chooseButton.mas_right).offset(15); + make.right.mas_lessThanOrEqualTo(-15); + }]; +} + +#pragma mark - Event Response +- (void)chooseButtonAction:(UIButton *)sender { + sender.selected = !sender.selected; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPSessionFindNewGreetTableViewCell:didSelectItem:)]) { + [self.delegate xPSessionFindNewGreetTableViewCell:self didSelectItem:self.greetModel]; + } +} +#pragma mark - Getters And Setters +- (void)setGreetModel:(FindNewGreetModel *)greetModel { + _greetModel = greetModel; + if (_greetModel) { + self.titleLabel.text = _greetModel.message; + self.chooseButton.selected = _greetModel.isSelect; + } +} + +- (UIButton *)chooseButton { + if (!_chooseButton) { + _chooseButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_chooseButton setImage:[UIImage imageNamed:@"mine_guild_guild_manager_normal"] forState:UIControlStateNormal]; + [_chooseButton setImage:[UIImage imageNamed:@"mine_guild_guild_manager_select"] forState:UIControlStateSelected]; + [_chooseButton addTarget:self action:@selector(chooseButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _chooseButton; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:15]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _titleLabel.numberOfLines = 2; + } + return _titleLabel; +} + + +@end diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/Cell/XPSessionFindNewTableViewCell.h b/YuMi/Modules/YMMessage/View/FindNew/View/Cell/XPSessionFindNewTableViewCell.h new file mode 100644 index 00000000..4433dc7a --- /dev/null +++ b/YuMi/Modules/YMMessage/View/FindNew/View/Cell/XPSessionFindNewTableViewCell.h @@ -0,0 +1,26 @@ +// +// YMSessionFindNewTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/6/10. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class FindNewUserInfoModel, XPSessionFindNewTableViewCell; +@protocol XPSessionFindNewTableViewCellDelegate +///点击打招呼 +- (void)xPSessionFindNewTableViewCell:(XPSessionFindNewTableViewCell *)cell didSelectItem:(FindNewUserInfoModel *)userInfo; +///点击头像 +- (void)xPSessionFindNewTableViewCell:(XPSessionFindNewTableViewCell *)cell didClickAvatar:(FindNewUserInfoModel *)userInfo; +@end + +@interface XPSessionFindNewTableViewCell : UITableViewCell +///用户信息 +@property (nonatomic,strong) FindNewUserInfoModel *userInfo; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/Cell/XPSessionFindNewTableViewCell.m b/YuMi/Modules/YMMessage/View/FindNew/View/Cell/XPSessionFindNewTableViewCell.m new file mode 100644 index 00000000..4e3ec904 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/FindNew/View/Cell/XPSessionFindNewTableViewCell.m @@ -0,0 +1,244 @@ +// +// YMSessionFindNewTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/6/10. +// + +#import "XPSessionFindNewTableViewCell.h" +///Third +#import +#import +///Tool +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +///Model +#import "FindNewUserInfoModel.h" + +@interface XPSessionFindNewTableViewCell () +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///性别 +@property (nonatomic,strong) UIImageView *sexImageView; +///等级 +@property (nonatomic,strong) NetImageView *experImageView; +///魅力等级 +@property (nonatomic,strong) NetImageView *charmImageView; +///签名 +@property (nonatomic,strong) UILabel * idLabel; +///关注 +@property (nonatomic,strong) UIButton * greetButton; +@end + + +@implementation XPSessionFindNewTableViewCell +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.stackView]; + [self.contentView addSubview:self.idLabel]; + [self.contentView addSubview:self.greetButton]; + + [self.stackView addArrangedSubview:self.nickLabel]; + [self.stackView addArrangedSubview:self.sexImageView]; + [self.stackView addArrangedSubview:self.experImageView]; + [self.stackView addArrangedSubview:self.charmImageView]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(45, 45)); + make.centerY.mas_equalTo(self.contentView); + make.left.mas_equalTo(self.contentView).offset(15); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(10); + make.bottom.mas_equalTo(self.avatarImageView.mas_centerY).offset(-2); + make.right.mas_lessThanOrEqualTo(self.greetButton.mas_left).mas_offset(-4); + }]; + + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.stackView); + make.top.mas_equalTo(self.avatarImageView.mas_centerY).offset(2); + make.right.mas_equalTo(self.greetButton.mas_left).mas_offset(-4); + }]; + + [self.greetButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(64); + make.height.mas_equalTo(25); + make.centerY.mas_equalTo(self.contentView); + make.right.mas_equalTo(self.contentView).offset(-15); + }]; +} + +#pragma mark - Event Response +- (void)attentionButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPSessionFindNewTableViewCell:didSelectItem:)]) { + [self.delegate xPSessionFindNewTableViewCell:self didSelectItem:self.userInfo]; + } +} + +- (void)avatarTapRecognizer { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPSessionFindNewTableViewCell:didClickAvatar:)]) { + [self.delegate xPSessionFindNewTableViewCell:self didClickAvatar:self.userInfo]; + } +} + +#pragma mark - Getters And Setters +- (void)setUserInfo:(FindNewUserInfoModel *)userInfo{ + _userInfo = userInfo; + if (_userInfo) { + self.avatarImageView.imageUrl = _userInfo.avatar; + self.experImageView.imageUrl = _userInfo.experUrl; + self.charmImageView.imageUrl = _userInfo.charmUrl; + self.nickLabel.text = _userInfo.nick; + NSString *sexStr; + if (_userInfo.gender == GenderType_Male) { + sexStr = @"common_male"; + } else { + sexStr = @"common_female"; + } + self.sexImageView.image = [UIImage imageNamed:sexStr]; + self.idLabel.text = [NSString stringWithFormat:@"ID:%@", _userInfo.erbanNo]; + self.greetButton.selected = !_userInfo.hello; + UIImage* image = self.experImageView.image; + if (image) { + CGFloat scale = image.size.width / image.size.height; + [self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20* scale, 20)); + }]; + } else { + NSURL *imgUrl = [NSURL URLWithString:_userInfo.experUrl]; + UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; + if (myImage) { + CGFloat scale = myImage.size.width / myImage.size.height; + [self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20* scale, 20)); + }]; + } + } + + UIImage* charmImage = self.charmImageView.image; + if (charmImage) { + CGFloat scale = charmImage.size.width / charmImage.size.height; + [self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20* scale, 20)); + }]; + } else { + NSURL *imgUrl = [NSURL URLWithString:_userInfo.charmUrl]; + UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; + if (myImage) { + CGFloat scale = myImage.size.width / myImage.size.height; + [self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20* scale, 20)); + }]; + } + } + } +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 45/2; + _avatarImageView.userInteractionEnabled = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(avatarTapRecognizer)]; + [_avatarImageView addGestureRecognizer:tap]; + } + return _avatarImageView; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentCenter; + _stackView.spacing = 2; + } + return _stackView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:15]; + _nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _nickLabel; +} + +- (UIImageView *)sexImageView { + if (!_sexImageView) { + _sexImageView = [[UIImageView alloc] init]; + _sexImageView.userInteractionEnabled = YES; + } + return _sexImageView; +} + +- (NetImageView *)experImageView { + if (!_experImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _experImageView = [[NetImageView alloc] initWithConfig:config]; + } + return _experImageView; +} + +- (NetImageView *)charmImageView { + if (!_charmImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _charmImageView = [[NetImageView alloc] initWithConfig:config]; + } + return _charmImageView; +} + + +- (UILabel *)idLabel{ + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _idLabel.font = [UIFont systemFontOfSize:14]; + } + return _idLabel; +} + +- (UIButton *)greetButton { + if (!_greetButton) { + _greetButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_greetButton setTitle:YMLocalizedString(@"XPSessionFindNewTableViewCell0") forState:UIControlStateNormal]; + [_greetButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + _greetButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_greetButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_greetButton setTitle:YMLocalizedString(@"XPSessionFindNewTableViewCell1") forState:UIControlStateDisabled]; + [_greetButton setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateSelected]; + [_greetButton setBackgroundImage:[UIImage imageWithColor:[DJDKMIMOMColor disableButtonColor]] forState:UIControlStateSelected]; + _greetButton.layer.masksToBounds = YES; + _greetButton.layer.cornerRadius = 25 /2; + [_greetButton addTarget:self action:@selector(attentionButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _greetButton; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/Cell/YUMIInterlocutionDiscoveryStrangeBewelcometoTabulationRegardElement.h b/YuMi/Modules/YMMessage/View/FindNew/View/Cell/YUMIInterlocutionDiscoveryStrangeBewelcometoTabulationRegardElement.h deleted file mode 100644 index 4ab38674..00000000 --- a/YuMi/Modules/YMMessage/View/FindNew/View/Cell/YUMIInterlocutionDiscoveryStrangeBewelcometoTabulationRegardElement.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMSessionFindNewGreetTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/6/13. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class DiscoveryStrangeBewelcometoMatrix, YUMIInterlocutionDiscoveryStrangeBewelcometoTabulationRegardElement; -@protocol FBCInterlocutionDiscoveryStrangeGreetTabulationViweElementRepresendtation - -- (void)yUMIInterlocutionDiscoveryStrangeBewelcometoTarbsultowardsionViweElement:(YUMIInterlocutionDiscoveryStrangeBewelcometoTabulationRegardElement *)view didSelectItem:(DiscoveryStrangeBewelcometoMatrix *)model; - -@end - -@interface YUMIInterlocutionDiscoveryStrangeBewelcometoTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) DiscoveryStrangeBewelcometoMatrix *bewelcometoMatrix; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/Cell/YUMIInterlocutionDiscoveryStrangeBewelcometoTabulationRegardElement.m b/YuMi/Modules/YMMessage/View/FindNew/View/Cell/YUMIInterlocutionDiscoveryStrangeBewelcometoTabulationRegardElement.m deleted file mode 100644 index 09f07d63..00000000 --- a/YuMi/Modules/YMMessage/View/FindNew/View/Cell/YUMIInterlocutionDiscoveryStrangeBewelcometoTabulationRegardElement.m +++ /dev/null @@ -1,86 +0,0 @@ -// -// YMSessionFindNewGreetTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/6/13. -// - -#import "YUMIInterlocutionDiscoveryStrangeBewelcometoTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "DiscoveryStrangeBewelcometoStatementMatrix.h" - -@interface YUMIInterlocutionDiscoveryStrangeBewelcometoTabulationRegardElement () -@property (nonatomic,strong) UIButton *concludeBtuton; -@property (nonatomic,strong) UILabel *titleLabel; -@end - - -@implementation YUMIInterlocutionDiscoveryStrangeBewelcometoTabulationRegardElement -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.concludeBtuton]; - [self.contentView addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.titleLabel.mas_centerY); - make.left.mas_equalTo(15); - make.height.width.mas_equalTo(18); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(10); - make.left.mas_equalTo(self.concludeBtuton.mas_right).offset(15); - make.right.mas_lessThanOrEqualTo(-15); - }]; -} - -#pragma mark - Event Response -- (void)concludeBtutonPerformance:(UIButton *)sender { - sender.selected = !sender.selected; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIInterlocutionDiscoveryStrangeBewelcometoTarbsultowardsionViweElement:didSelectItem:)]) { - [self.delegate yUMIInterlocutionDiscoveryStrangeBewelcometoTarbsultowardsionViweElement:self didSelectItem:self.bewelcometoMatrix]; - } -} -#pragma mark - Getters And Setters -- (void)setBewelcometoMatrix:(DiscoveryStrangeBewelcometoMatrix *)bewelcometoMatrix { - _bewelcometoMatrix = bewelcometoMatrix; - if (_bewelcometoMatrix) { - self.titleLabel.text = _bewelcometoMatrix.message; - self.concludeBtuton.selected = _bewelcometoMatrix.isSelect; - } -} - -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_center_guild_guild_manager_normal"] forState:UIControlStateNormal]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_center_guild_guild_manager_select"] forState:UIControlStateSelected]; - [_concludeBtuton addTarget:self action:@selector(concludeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _concludeBtuton; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:15]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleLabel.numberOfLines = 2; - } - return _titleLabel; -} - - -@end diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/Cell/YUMIInterlocutionDiscoveryStrangeDispossessTabulationRegardElement.h b/YuMi/Modules/YMMessage/View/FindNew/View/Cell/YUMIInterlocutionDiscoveryStrangeDispossessTabulationRegardElement.h deleted file mode 100644 index ac17fe76..00000000 --- a/YuMi/Modules/YMMessage/View/FindNew/View/Cell/YUMIInterlocutionDiscoveryStrangeDispossessTabulationRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMSessionFindNewEmptyTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/6/10. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIInterlocutionDiscoveryStrangeDispossessTabulationRegardElement : UITableViewCell - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/Cell/YUMIInterlocutionDiscoveryStrangeDispossessTabulationRegardElement.m b/YuMi/Modules/YMMessage/View/FindNew/View/Cell/YUMIInterlocutionDiscoveryStrangeDispossessTabulationRegardElement.m deleted file mode 100644 index 0d03d03c..00000000 --- a/YuMi/Modules/YMMessage/View/FindNew/View/Cell/YUMIInterlocutionDiscoveryStrangeDispossessTabulationRegardElement.m +++ /dev/null @@ -1,69 +0,0 @@ -// -// YMSessionFindNewEmptyTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/6/10. -// - -#import "YUMIInterlocutionDiscoveryStrangeDispossessTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIIndicateConstant.h" - -@interface YUMIInterlocutionDiscoveryStrangeDispossessTabulationRegardElement () -@property (nonatomic,strong) UIImageView *dispossessIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@end - -@implementation YUMIInterlocutionDiscoveryStrangeDispossessTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.dispossessIndicateRegard]; - [self.contentView addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.dispossessIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.contentView).offset(250); - make.size.mas_equalTo(CGSizeMake(100, 100)); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.dispossessIndicateRegard.mas_bottom).offset(20); - make.left.right.mas_equalTo(self.contentView); - }]; -} -#pragma mark - Getters And Setters -- (UIImageView *)dispossessIndicateRegard { - if (!_dispossessIndicateRegard) { - _dispossessIndicateRegard = [[UIImageView alloc] init]; - _dispossessIndicateRegard.userInteractionEnabled = YES; - _dispossessIndicateRegard.image = [UIIndicateConstant defalutDispossessDepapossessor]; - _dispossessIndicateRegard.layer.masksToBounds = YES; - _dispossessIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _dispossessIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Session_Find_New_Empty_Table_View_Cell_0"); - _titleLabel.font = [UIFont systemFontOfSize:16]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _titleLabel; -}@end diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/Cell/YUMIInterlocutionDiscoveryStrangeTabulationRegardElement.h b/YuMi/Modules/YMMessage/View/FindNew/View/Cell/YUMIInterlocutionDiscoveryStrangeTabulationRegardElement.h deleted file mode 100644 index 577dcbe6..00000000 --- a/YuMi/Modules/YMMessage/View/FindNew/View/Cell/YUMIInterlocutionDiscoveryStrangeTabulationRegardElement.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMSessionFindNewTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/6/10. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class DiscoveryStrangeConsumerAbstractMatrix, YUMIInterlocutionDiscoveryStrangeTabulationRegardElement; -@protocol FBCInterlocutionDiscoveryStrangeTabulationViweElementRepresendtation -- (void)yUMIInterlocutionDiscoveryStrangeTarbsultowardsionViweElement:(YUMIInterlocutionDiscoveryStrangeTabulationRegardElement *)cell didSelectItem:(DiscoveryStrangeConsumerAbstractMatrix *)userInfo; -- (void)yUMIInterlocutionDiscoveryStrangeTarbsultowardsionViweElement:(YUMIInterlocutionDiscoveryStrangeTabulationRegardElement *)cell didClickAvatar:(DiscoveryStrangeConsumerAbstractMatrix *)userInfo; -@end - -@interface YUMIInterlocutionDiscoveryStrangeTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) DiscoveryStrangeConsumerAbstractMatrix *userInfo; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/Cell/YUMIInterlocutionDiscoveryStrangeTabulationRegardElement.m b/YuMi/Modules/YMMessage/View/FindNew/View/Cell/YUMIInterlocutionDiscoveryStrangeTabulationRegardElement.m deleted file mode 100644 index 966ba963..00000000 --- a/YuMi/Modules/YMMessage/View/FindNew/View/Cell/YUMIInterlocutionDiscoveryStrangeTabulationRegardElement.m +++ /dev/null @@ -1,233 +0,0 @@ -// -// YMSessionFindNewTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/6/10. -// - -#import "YUMIInterlocutionDiscoveryStrangeTabulationRegardElement.h" -#import -#import -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "DiscoveryStrangeConsumerAbstractMatrix.h" - -@interface YUMIInterlocutionDiscoveryStrangeTabulationRegardElement () -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UIImageView *seaxualityIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *experIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *fascinationIndicateRegard; -@property (nonatomic,strong) UILabel * idSequencignation; -@property (nonatomic,strong) UIButton * bewelcometoBtuton; -@end - - -@implementation YUMIInterlocutionDiscoveryStrangeTabulationRegardElement -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.stackView]; - [self.contentView addSubview:self.idSequencignation]; - [self.contentView addSubview:self.bewelcometoBtuton]; - - [self.stackView addArrangedSubview:self.monicerSequencignation]; - [self.stackView addArrangedSubview:self.seaxualityIndicateRegard]; - [self.stackView addArrangedSubview:self.experIndicateRegard]; - [self.stackView addArrangedSubview:self.fascinationIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(45, 45)); - make.centerY.mas_equalTo(self.contentView); - make.left.mas_equalTo(self.contentView).offset(15); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(10); - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(-2); - make.right.mas_lessThanOrEqualTo(self.bewelcometoBtuton.mas_left).mas_offset(-4); - }]; - - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.stackView); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(2); - make.right.mas_equalTo(self.bewelcometoBtuton.mas_left).mas_offset(-4); - }]; - - [self.bewelcometoBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(64); - make.height.mas_equalTo(25); - make.centerY.mas_equalTo(self.contentView); - make.right.mas_equalTo(self.contentView).offset(-15); - }]; -} - -#pragma mark - Event Response -- (void)considertowardsionBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIInterlocutionDiscoveryStrangeTarbsultowardsionViweElement:didSelectItem:)]) { - [self.delegate yUMIInterlocutionDiscoveryStrangeTarbsultowardsionViweElement:self didSelectItem:self.userInfo]; - } -} - -- (void)intelligenceportraitBetowardsRecognition { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIInterlocutionDiscoveryStrangeTarbsultowardsionViweElement:didClickAvatar:)]) { - [self.delegate yUMIInterlocutionDiscoveryStrangeTarbsultowardsionViweElement:self didClickAvatar:self.userInfo]; - } -} - -#pragma mark - Getters And Setters -- (void)setUserInfo:(DiscoveryStrangeConsumerAbstractMatrix *)userInfo{ - _userInfo = userInfo; - if (_userInfo) { - self.intelligenceportraitIndicateRegard.imageUrl = _userInfo.avatar; - self.experIndicateRegard.imageUrl = _userInfo.experUrl; - self.fascinationIndicateRegard.imageUrl = _userInfo.charmUrl; - self.monicerSequencignation.text = _userInfo.nick; - NSString *sexStr; - if (_userInfo.gender == GenderGenre_Male) { - sexStr = @"common_male"; - } else { - sexStr = @"common_female"; - } - self.seaxualityIndicateRegard.image = [UIImage imageNamed:sexStr]; - self.idSequencignation.text = [NSString stringWithFormat:@"ID:%@", _userInfo.erbanNo]; - self.bewelcometoBtuton.selected = !_userInfo.hello; - UIImage* image = self.experIndicateRegard.image; - if (image) { - CGFloat scale = image.size.width / image.size.height; - [self.experIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20* scale, 20)); - }]; - } else { - NSURL *imgUrl = [NSURL URLWithString:_userInfo.experUrl]; - UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; - if (myImage) { - CGFloat scale = myImage.size.width / myImage.size.height; - [self.experIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20* scale, 20)); - }]; - } - } - - UIImage* charmImage = self.fascinationIndicateRegard.image; - if (charmImage) { - CGFloat scale = charmImage.size.width / charmImage.size.height; - [self.fascinationIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20* scale, 20)); - }]; - } else { - NSURL *imgUrl = [NSURL URLWithString:_userInfo.charmUrl]; - UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; - if (myImage) { - CGFloat scale = myImage.size.width / myImage.size.height; - [self.fascinationIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20* scale, 20)); - }]; - } - } - } -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 45/2; - _intelligenceportraitIndicateRegard.userInteractionEnabled = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(intelligenceportraitBetowardsRecognition)]; - [_intelligenceportraitIndicateRegard addGestureRecognizer:tap]; - } - return _intelligenceportraitIndicateRegard; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentCenter; - _stackView.spacing = 2; - } - return _stackView; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:15]; - _monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _monicerSequencignation; -} - -- (UIImageView *)seaxualityIndicateRegard { - if (!_seaxualityIndicateRegard) { - _seaxualityIndicateRegard = [[UIImageView alloc] init]; - _seaxualityIndicateRegard.userInteractionEnabled = YES; - } - return _seaxualityIndicateRegard; -} - -- (NetIndicateRegard *)experIndicateRegard { - if (!_experIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _experIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - } - return _experIndicateRegard; -} - -- (NetIndicateRegard *)fascinationIndicateRegard { - if (!_fascinationIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _fascinationIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - } - return _fascinationIndicateRegard; -} - - -- (UILabel *)idSequencignation{ - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _idSequencignation.font = [UIFont systemFontOfSize:14]; - } - return _idSequencignation; -} - -- (UIButton *)bewelcometoBtuton { - if (!_bewelcometoBtuton) { - _bewelcometoBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_bewelcometoBtuton setTitle:YMLocalizedString(@"YUMI_Session_Find_New_Table_View_Cell_0") forState:UIControlStateNormal]; - [_bewelcometoBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - _bewelcometoBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_bewelcometoBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_bewelcometoBtuton setTitle:YMLocalizedString(@"YUMI_Session_Find_New_Table_View_Cell_1") forState:UIControlStateDisabled]; - [_bewelcometoBtuton setTitleColor:[DJDKMIMOMColor prohibitionBtutonEssayPrettify] forState:UIControlStateSelected]; - [_bewelcometoBtuton setBackgroundImage:[UIImage imageWithColor:[DJDKMIMOMColor prohibitionBtutonPrettify]] forState:UIControlStateSelected]; - _bewelcometoBtuton.layer.masksToBounds = YES; - _bewelcometoBtuton.layer.cornerRadius = 25 /2; - [_bewelcometoBtuton addTarget:self action:@selector(considertowardsionBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _bewelcometoBtuton; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/View/XPSessionFindNewAlertView.h b/YuMi/Modules/YMMessage/View/FindNew/View/View/XPSessionFindNewAlertView.h new file mode 100644 index 00000000..12828af1 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/FindNew/View/View/XPSessionFindNewAlertView.h @@ -0,0 +1,16 @@ +// +// YMSessionFindNewAlertView.h +// YUMI +// +// Created by YUMI on 2022/6/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class FindNewGreetMessageModel; +@interface XPSessionFindNewAlertView : UIView +@property (nonatomic,strong) FindNewGreetMessageModel *userInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/View/XPSessionFindNewAlertView.m b/YuMi/Modules/YMMessage/View/FindNew/View/View/XPSessionFindNewAlertView.m new file mode 100644 index 00000000..cd938cce --- /dev/null +++ b/YuMi/Modules/YMMessage/View/FindNew/View/View/XPSessionFindNewAlertView.m @@ -0,0 +1,208 @@ +// +// YMSessionFindNewAlertView.m +// YUMI +// +// Created by YUMI on 2022/6/17. +// + +#import "XPSessionFindNewAlertView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "TTPopup.h" +#import "NetImageView.h" +#import "YUMIMacroUitls.h" +#import "Api+Room.h" +#import "XNDJTDDLoadingTool.h" +#import "XCCurrentVCStackManager.h" +///Model +#import "FindNewGreetMessageModel.h" +#import "RoomInfoModel.h" +///View +#import "XPRoomViewController.h" +#import "SessionViewController.h" +///P +#import "RoomHostDelegate.h" + +@interface XPSessionFindNewAlertView () + +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///内容 +@property (nonatomic,strong) UILabel *messageLabel; +///忽略 +@property (nonatomic,strong) UIButton *cancelButton; +///找他 +@property (nonatomic,strong) UIButton *findButton; +@end + + +@implementation XPSessionFindNewAlertView +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + self.layer.masksToBounds = YES; + self.layer.cornerRadius = 10; + [self addSubview:self.avatarImageView]; + [self addSubview:self.nickLabel]; + [self addSubview:self.messageLabel]; + [self addSubview:self.cancelButton]; + [self addSubview:self.findButton]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth - 40 * 2); + make.bottom.mas_equalTo(self.cancelButton.mas_bottom).offset(15); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(75, 75)); + make.top.mas_equalTo(self).offset(20); + make.centerX.mas_equalTo(self); + }]; + + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self).inset(10); + make.top.mas_equalTo(self.avatarImageView.mas_bottom).offset(15); + }]; + + [self.messageLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self).inset(40); + make.top.mas_equalTo(self.nickLabel.mas_bottom).offset(10); + }]; + + [self.cancelButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(120, 40)); + make.right.mas_equalTo(self.mas_centerX).offset(-10); + make.top.mas_equalTo(self.messageLabel.mas_bottom).offset(30); + }]; + + [self.findButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.centerY.mas_equalTo(self.cancelButton); + make.left.mas_equalTo(self.mas_centerX).offset(10); + }]; +} + +#pragma mark - Event Response +- (void)cancelButtonAction:(UIButton *)sender { + [TTPopup dismiss]; +} + +- (void)findButtonAction:(UIButton *)sender { + if (self.userInfo.uid.integerValue > 0) { + [Api requestUserInRoom:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + RoomInfoModel * roomInfo = [RoomInfoModel modelWithDictionary:data.data]; + if (roomInfo.uid && self.userInfo.uid && self.userInfo.nick.length > 0) { + //退出原来的房间 如果有的话 TODO 总感觉这种处理不太优雅 进房入口多了 怎么办 进房需要整合 + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj isKindOfClass:[XPRoomViewController class]]) { + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController popToRootViewControllerAnimated:NO]; + XPRoomViewController * rooomVC = obj; + [rooomVC exitRoom]; + *stop = YES; + } + }]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [XPRoomViewController openRoom:[NSString stringWithFormat:@"%ld", roomInfo.uid] fromNick:self.userInfo.nick fromType:UserEnterRoomFromType_Follow_User fromUid:self.userInfo.uid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; + }); + } else { + SessionViewController * sessionVC = [[SessionViewController alloc] initWithSession:[NIMSession session:self.userInfo.uid type:NIMSessionTypeP2P]]; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:sessionVC animated:YES]; + } + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } uid:self.userInfo.uid]; + } + [TTPopup dismiss]; +} + +#pragma mark - Getters And Setters +- (void)setUserInfo:(FindNewGreetMessageModel *)userInfo { + _userInfo = userInfo; + if (_userInfo) { + self.avatarImageView.imageUrl = _userInfo.avatar; + self.nickLabel.text = _userInfo.nick; + self.messageLabel.text = _userInfo.message; + } +} + + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 75 /2; + _avatarImageView.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + } + return _avatarImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + _nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _nickLabel.textAlignment = NSTextAlignmentCenter; + } + return _nickLabel; +} + +- (UILabel *)messageLabel { + if (!_messageLabel) { + _messageLabel = [[UILabel alloc] init]; + _messageLabel.font = [UIFont systemFontOfSize:15]; + _messageLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _messageLabel.textAlignment = NSTextAlignmentCenter; + _messageLabel.numberOfLines = 0; + } + return _messageLabel; +} + +- (UIButton *)cancelButton { + if (!_cancelButton) { + _cancelButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_cancelButton setTitle:YMLocalizedString(@"XPSessionFindNewAlertView0") forState:UIControlStateNormal]; + [_cancelButton setTitleColor:[DJDKMIMOMColor cancelButtonTextColor] forState:UIControlStateNormal]; + _cancelButton.titleLabel.font = [UIFont systemFontOfSize:14]; + [_cancelButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor cancelButtonGradientStartColor], [DJDKMIMOMColor cancelButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _cancelButton.layer.masksToBounds = YES; + _cancelButton.layer.cornerRadius = 10; + [_cancelButton addTarget:self action:@selector(cancelButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _cancelButton; +} + +- (UIButton *)findButton { + if (!_findButton) { + _findButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_findButton setTitle:@"去找TA" forState:UIControlStateNormal]; + [_findButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + _findButton.titleLabel.font = [UIFont systemFontOfSize:14]; + [_findButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _findButton.layer.masksToBounds = YES; + _findButton.layer.cornerRadius = 10; + [_findButton addTarget:self action:@selector(findButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _findButton; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/View/XPSessionFindNewFiltrateView.h b/YuMi/Modules/YMMessage/View/FindNew/View/View/XPSessionFindNewFiltrateView.h new file mode 100644 index 00000000..84cb6960 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/FindNew/View/View/XPSessionFindNewFiltrateView.h @@ -0,0 +1,23 @@ +// +// YMSessionFindNewFiltrateView.h +// YUMI +// +// Created by YUMI on 2022/6/10. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPSessionFindNewFiltrateView; +@protocol XPSessionFindNewFiltrateViewDelegate + +- (void)xPSessionFindNewFiltrateView:(NSString *)chooseHello chooseSex:(NSString *)sex; + +@end + +@interface XPSessionFindNewFiltrateView : UIView +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/View/XPSessionFindNewFiltrateView.m b/YuMi/Modules/YMMessage/View/FindNew/View/View/XPSessionFindNewFiltrateView.m new file mode 100644 index 00000000..a46a8025 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/FindNew/View/View/XPSessionFindNewFiltrateView.m @@ -0,0 +1,349 @@ +// +// YMSessionFindNewFiltrateView.m +// YUMI +// +// Created by YUMI on 2022/6/10. +// + +#import "XPSessionFindNewFiltrateView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "YUMIMacroUitls.h" + +@interface XPSessionFindNewFiltrateView () + +///标题 +@property (nonatomic,strong) UILabel *titleLabel; +///性别 +@property (nonatomic,strong) UILabel *sexLabel; +///容器 +@property (nonatomic,strong) UIStackView *sexStackView; +///全部 +@property (nonatomic,strong) UIButton *allButton; +///男性 +@property (nonatomic,strong) UIButton *maleButton; +///女性 +@property (nonatomic,strong) UIButton *femaleButton; +///确认 +@property (nonatomic,strong) UIButton *sureButton; +///打招呼 +@property (nonatomic,strong) UILabel *helloLabel; +///招呼容器 +@property (nonatomic,strong) UIStackView *helloStackView; +///全部 +@property (nonatomic,strong) UIButton *allHelloButton; +///未达招呼 +@property (nonatomic,strong) UIButton *notHellowButton; +///一打招呼 +@property (nonatomic,strong) UIButton *helloButton; +///选择的性别 +@property (nonatomic,copy) NSString *sexChoose; +///打招呼 +@property (nonatomic,copy) NSString *helloChoose; +@end + + +@implementation XPSessionFindNewFiltrateView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.sexChoose = @"0"; + [self addSubview:self.titleLabel]; + [self addSubview:self.sexLabel]; + [self addSubview:self.sexStackView]; + [self addSubview:self.helloLabel]; + [self addSubview:self.helloStackView]; + [self addSubview:self.sureButton]; + + [self.sexStackView addArrangedSubview:self.allButton]; + [self.sexStackView addArrangedSubview:self.femaleButton]; + [self.sexStackView addArrangedSubview:self.maleButton]; + + [self.helloStackView addArrangedSubview:self.allHelloButton]; + [self.helloStackView addArrangedSubview:self.helloButton]; + [self.helloStackView addArrangedSubview:self.notHellowButton]; + + self.backgroundColor = [UIColor whiteColor]; + CAShapeLayer * layer = [CAShapeLayer layer]; + layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, 315) byRoundingCorners:UIRectCornerTopLeft| UIRectCornerTopRight cornerRadii:CGSizeMake(10, 10)].CGPath; + self.layer.masksToBounds = YES; + self.layer.mask = layer; + [self sexButtonAction:self.allButton]; + [self helloButtonAction:self.allHelloButton]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth); + make.height.mas_equalTo(315); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self).offset(15); + }]; + + [self.sexLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self).offset(15); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(12); + }]; + + [self.sexStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.sexLabel); + make.top.mas_equalTo(self.sexLabel.mas_bottom).offset(12); + make.height.mas_equalTo(26); + make.width.mas_equalTo(72 * 3 + 20 * 2); + }]; + + [self.helloLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self).offset(15); + make.top.mas_equalTo(self.sexStackView.mas_bottom).offset(24); + }]; + + [self.helloStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.sexLabel); + make.top.mas_equalTo(self.helloLabel.mas_bottom).offset(12); + make.height.mas_equalTo(26); + make.width.mas_equalTo(72 * 3 + 20 * 2); + }]; + + [self.sureButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self).inset(57); + make.height.mas_equalTo(38); + make.bottom.mas_equalTo(self).offset(-45); + }]; +} +#pragma mark - Event Response +- (void)sexButtonAction:(UIButton *)sender { + self.allButton.selected = NO; + self.femaleButton.selected = NO; + self.maleButton.selected = NO; + self.allButton.layer.borderWidth = 0; + self.femaleButton.layer.borderWidth = 0; + self.maleButton.layer.borderWidth = 0; + sender.layer.borderWidth = 0.5; + sender.selected = YES; + self.sexChoose = [NSString stringWithFormat:@"%ld", sender.tag - 1000]; +} + +- (void)helloButtonAction:(UIButton *)sender { + self.helloButton.selected = NO; + self.notHellowButton.selected = NO; + self.allHelloButton.selected = NO; + sender.selected = YES; + self.allHelloButton.layer.borderWidth = 0; + self.helloButton.layer.borderWidth = 0; + self.notHellowButton.layer.borderWidth = 0; + sender.layer.borderWidth = 0.5; + self.helloChoose = [NSString stringWithFormat:@"%ld", sender.tag - 1000]; +} + +- (void)sureButtonAction:(UIButton *)sener { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPSessionFindNewFiltrateView:chooseSex:)]) { + [self.delegate xPSessionFindNewFiltrateView:self.helloChoose chooseSex:self.sexChoose]; + } +} + +#pragma mark - Getters And Setters +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightSemibold]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _titleLabel.text = YMLocalizedString(@"XPSessionFindNewFiltrateView0"); + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} + +- (UILabel *)sexLabel { + if (!_sexLabel) { + _sexLabel = [[UILabel alloc] init]; + _sexLabel.font = [UIFont systemFontOfSize:15]; + _sexLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _sexLabel.text = YMLocalizedString(@"XPSessionFindNewFiltrateView1"); + } + return _sexLabel; +} + +- (UIStackView *)sexStackView { + if (!_sexStackView) { + _sexStackView = [[UIStackView alloc] init]; + _sexStackView.axis = UILayoutConstraintAxisHorizontal; + _sexStackView.distribution = UIStackViewDistributionFillEqually; + _sexStackView.alignment = UIStackViewAlignmentFill; + _sexStackView.spacing = 20; + } + return _sexStackView; +} + + +- (UIButton *)maleButton { + if (!_maleButton) { + _maleButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_maleButton setTitle:YMLocalizedString(@"XPSessionFindNewFiltrateView2") forState:UIControlStateNormal]; + [_maleButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _maleButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_maleButton setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateNormal]; + [_maleButton setTitleColor:[DJDKMIMOMColor appMainColor] forState:UIControlStateSelected]; + [_maleButton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0xF1F1FA)] forState:UIControlStateNormal]; + [_maleButton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0xFFF0C9)] forState:UIControlStateSelected]; + _maleButton.layer.borderWidth = 0; + _maleButton.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + _maleButton.layer.masksToBounds = YES; + _maleButton.layer.cornerRadius = 13; + _maleButton.tag = 1001; + [_maleButton addTarget:self action:@selector(sexButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _maleButton; +} + +- (UIButton *)femaleButton { + if (!_femaleButton) { + _femaleButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_femaleButton setTitle:YMLocalizedString(@"XPSessionFindNewFiltrateView3") forState:UIControlStateNormal]; + [_femaleButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _femaleButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_femaleButton setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateNormal]; + [_femaleButton setTitleColor:[DJDKMIMOMColor appMainColor] forState:UIControlStateSelected]; + [_femaleButton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0xF1F1FA)] forState:UIControlStateNormal]; + [_femaleButton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0xFFF0C9)] forState:UIControlStateSelected]; + _femaleButton.layer.borderWidth = 0; + _femaleButton.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + _femaleButton.layer.masksToBounds = YES; + _femaleButton.layer.cornerRadius = 13; + _femaleButton.tag = 1002; + [_femaleButton addTarget:self action:@selector(sexButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _femaleButton; +} + +- (UIButton *)allButton { + if (!_allButton) { + _allButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_allButton setTitle:YMLocalizedString(@"XPSessionFindNewFiltrateView4") forState:UIControlStateNormal]; + [_allButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _allButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_allButton setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateNormal]; + [_allButton setTitleColor:[DJDKMIMOMColor appMainColor] forState:UIControlStateSelected]; + [_allButton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0xF1F1FA)] forState:UIControlStateNormal]; + [_allButton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0xFFF0C9)] forState:UIControlStateSelected]; + _allButton.layer.borderWidth = 0.5; + _allButton.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + _allButton.layer.masksToBounds = YES; + _allButton.layer.cornerRadius = 13; + _allButton.tag = 1000; + _allButton.selected = YES; + [_allButton addTarget:self action:@selector(sexButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _allButton; +} + +- (UILabel *)helloLabel { + if (!_helloLabel) { + _helloLabel = [[UILabel alloc] init]; + _helloLabel.font = [UIFont systemFontOfSize:15]; + _helloLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _helloLabel.text = YMLocalizedString(@"XPSessionFindNewFiltrateView5"); + } + return _helloLabel; +} + +- (UIStackView *)helloStackView { + if (!_helloStackView) { + _helloStackView = [[UIStackView alloc] init]; + _helloStackView.axis = UILayoutConstraintAxisHorizontal; + _helloStackView.distribution = UIStackViewDistributionFillEqually; + _helloStackView.alignment = UIStackViewAlignmentFill; + _helloStackView.spacing = 20; + } + return _helloStackView; +} + +- (UIButton *)helloButton { + if (!_helloButton) { + _helloButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_helloButton setTitle:YMLocalizedString(@"XPSessionFindNewFiltrateView6") forState:UIControlStateNormal]; + [_helloButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _helloButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_helloButton setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateNormal]; + [_helloButton setTitleColor:[DJDKMIMOMColor appMainColor] forState:UIControlStateSelected]; + [_helloButton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0xF1F1FA)] forState:UIControlStateNormal]; + [_helloButton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0xFFF0C9)] forState:UIControlStateSelected]; + _helloButton.layer.borderWidth = 0.5; + _helloButton.layer.masksToBounds = YES; + _helloButton.layer.cornerRadius = 13; + _helloButton.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + _helloButton.tag = 1001; + [_helloButton addTarget:self action:@selector(helloButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _helloButton; +} + +- (UIButton *)notHellowButton { + if (!_notHellowButton) { + _notHellowButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_notHellowButton setTitle:YMLocalizedString(@"XPSessionFindNewFiltrateView7") forState:UIControlStateNormal]; + [_notHellowButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _notHellowButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_notHellowButton setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateNormal]; + [_notHellowButton setTitleColor:[DJDKMIMOMColor appMainColor] forState:UIControlStateSelected]; + [_notHellowButton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0xF1F1FA)] forState:UIControlStateNormal]; + [_notHellowButton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0xFFF0C9)] forState:UIControlStateSelected]; + _notHellowButton.layer.borderWidth = 0.5; + _notHellowButton.layer.masksToBounds = YES; + _notHellowButton.layer.cornerRadius = 13; + _notHellowButton.tag = 1002; + _notHellowButton.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + [_notHellowButton addTarget:self action:@selector(helloButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _notHellowButton; +} + +- (UIButton *)allHelloButton { + if (!_allHelloButton) { + _allHelloButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_allHelloButton setTitle:YMLocalizedString(@"XPSessionFindNewFiltrateView8") forState:UIControlStateNormal]; + [_allHelloButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _allHelloButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_allHelloButton setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateNormal]; + [_allHelloButton setTitleColor:[DJDKMIMOMColor appMainColor] forState:UIControlStateSelected]; + [_allHelloButton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0xF1F1FA)] forState:UIControlStateNormal]; + [_allHelloButton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0xFFF0C9)] forState:UIControlStateSelected]; + _allHelloButton.layer.borderWidth = 0.5; + _allHelloButton.layer.masksToBounds = YES; + _allHelloButton.layer.cornerRadius = 13; + _allHelloButton.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + _allHelloButton.tag = 1000; + [_allHelloButton addTarget:self action:@selector(helloButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _allHelloButton; +} + +- (UIButton *)sureButton { + if (!_sureButton) { + _sureButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_sureButton setTitle:YMLocalizedString(@"XPSessionFindNewFiltrateView9") forState:UIControlStateNormal]; + [_sureButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _sureButton.titleLabel.font = [UIFont systemFontOfSize:14]; + [_sureButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _sureButton.layer.masksToBounds = YES; + _sureButton.layer.cornerRadius = 38/2; + [_sureButton addTarget:self action:@selector(sureButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _sureButton; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/View/XPSessionFindNewGreetListView.h b/YuMi/Modules/YMMessage/View/FindNew/View/View/XPSessionFindNewGreetListView.h new file mode 100644 index 00000000..6572c28c --- /dev/null +++ b/YuMi/Modules/YMMessage/View/FindNew/View/View/XPSessionFindNewGreetListView.h @@ -0,0 +1,26 @@ +// +// YMSessionFindNewGreetListView.h +// YUMI +// +// Created by YUMI on 2022/6/13. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPSessionFindNewGreetListView; +@protocol XPSessionFindNewGreetListViewDelegate + +///打招呼成功 +- (void)xPSessionFindNewGreetListView:(XPSessionFindNewGreetListView *)view greetUserId:(NSString *)userId; + +@end + +@interface XPSessionFindNewGreetListView : UIView +///用户的uid +@property (nonatomic,copy) NSString *userId; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/View/XPSessionFindNewGreetListView.m b/YuMi/Modules/YMMessage/View/FindNew/View/View/XPSessionFindNewGreetListView.m new file mode 100644 index 00000000..eb36b5a5 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/FindNew/View/View/XPSessionFindNewGreetListView.m @@ -0,0 +1,246 @@ +// +// YMSessionFindNewGreetListView.m +// YUMI +// +// Created by YUMI on 2022/6/13. +// + +#import "XPSessionFindNewGreetListView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "YUMIMacroUitls.h" +#import "XNDJTDDLoadingTool.h" +#import "Api+FindNew.h" +#import "TTPopup.h" +#import "NSArray+Safe.h" +///Model +#import "FindNewGreetListModel.h" +///View +#import "XPSessionFindNewGreetTableViewCell.h" + +@interface XPSessionFindNewGreetListView () +///标题 +@property (nonatomic,strong) UILabel *titleLabel; +///容器 +@property (nonatomic,strong) UIStackView *refreshStackView; +///刷新 +@property (nonatomic,strong) UIButton *refreshButton; +///换一批 +@property (nonatomic,strong) UILabel *refreshLabel; +///列表 +@property (nonatomic,strong) UITableView *tableView; +///发送 +@property (nonatomic,strong) UIButton *sendButton; +///数据源 +@property (nonatomic,strong) NSArray *datasource; +///显示的内容 +@property (nonatomic,strong) FindNewGreetListModel *listModel; +///选中的消息 +@property (nonatomic,strong) FindNewGreetModel *selectModel; +@end + +@implementation XPSessionFindNewGreetListView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initHttpRequest]; + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initHttpRequest { + NSString * start = self.listModel ? self.listModel.start : @"0"; + [XNDJTDDLoadingTool showLoading]; + [Api findNewGreetMessageList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + [XNDJTDDLoadingTool hideHUD]; + if (code == 200) { + FindNewGreetListModel * model = [FindNewGreetListModel modelWithDictionary:data.data]; + self.listModel = model; + self.datasource = model.list; + if (model.list.count > 0) { + self.selectModel = model.list.firstObject; + } + [self.tableView reloadData]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } start:start pageSize:@"5"]; +} + +- (void)initSubViews { + self.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; + [self addSubview:self.titleLabel]; + [self addSubview:self.refreshStackView]; + [self addSubview:self.tableView]; + [self addSubview:self.sendButton]; + + [self.refreshStackView addArrangedSubview:self.refreshButton]; + [self.refreshStackView addArrangedSubview:self.refreshLabel]; + + CAShapeLayer * layer = [CAShapeLayer layer]; + UIBezierPath * path= [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, kHalfScreenHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(10, 10)]; + layer.path = path.CGPath; + self.layer.mask = layer; +} + +- (void)initSubViewConstraints { + self.frame = CGRectMake(0, 0, KScreenWidth, kHalfScreenHeight); + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self).offset(17); + make.left.mas_equalTo(15); + }]; + + [self.refreshStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self).offset(-15); + make.centerY.mas_equalTo(self.titleLabel); + make.height.mas_equalTo(30); + }]; + + [self.refreshButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(30); + }]; + + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self); + make.bottom.mas_equalTo(self.sendButton.mas_top); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(10); + }]; + + [self.sendButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.mas_bottom).offset(-20); + make.left.right.mas_equalTo(self).inset(57); + make.height.mas_equalTo(44); + }]; +} + + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 65; +} + + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + XPSessionFindNewGreetTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPSessionFindNewGreetTableViewCell class])]; + FindNewGreetModel * model = [self.datasource safeObjectAtIndex1:indexPath.row]; + if (model.fId == self.selectModel.fId) { + model.isSelect = YES; + } else { + model.isSelect = NO; + } + cell.greetModel = model; + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + FindNewGreetModel * model = [self.datasource safeObjectAtIndex1:indexPath.row]; + self.selectModel = model; + [self.tableView reloadData]; + } +} +#pragma mark - Event Response +- (void)sendButtonAction:(UIButton *)sender { + [Api findNewUserGreet:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + [XNDJTDDLoadingTool showSuccessWithMessage:YMLocalizedString(@"XPSessionFindNewGreetListView0")]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPSessionFindNewGreetListView:greetUserId:)]) { + [self.delegate xPSessionFindNewGreetListView:self greetUserId:self.userId]; + } + [TTPopup dismiss]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } helloUid:self.userId message:self.selectModel.message]; +} + +- (void)tapRefreshRecognizer { + [self initHttpRequest]; +} + +#pragma mark - Getters And Setters +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightBold]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _titleLabel.text = YMLocalizedString(@"XPSessionFindNewGreetListView1"); + } + return _titleLabel; +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPSessionFindNewGreetTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPSessionFindNewGreetTableViewCell class])]; + } + return _tableView; +} + +- (UIStackView *)refreshStackView { + if (!_refreshStackView) { + _refreshStackView = [[UIStackView alloc] init]; + _refreshStackView.axis = UILayoutConstraintAxisHorizontal; + _refreshStackView.distribution = UIStackViewDistributionFill; + _refreshStackView.alignment = UIStackViewAlignmentFill; + _refreshStackView.spacing = 2; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRefreshRecognizer)]; + [_refreshStackView addGestureRecognizer:tap]; + } + return _refreshStackView; +} + +- (UIButton *)refreshButton { + if (!_refreshButton) { + _refreshButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_refreshButton setImage:[UIImage imageNamed:@"session_find_new_refresh"] forState:UIControlStateNormal]; + [_refreshButton setImage:[UIImage imageNamed:@"session_find_new_refresh"] forState:UIControlStateSelected]; + } + return _refreshButton; +} + +- (UILabel *)refreshLabel { + if (!_refreshLabel) { + _refreshLabel = [[UILabel alloc] init]; + _refreshLabel.font = [UIFont systemFontOfSize:13]; + _refreshLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _refreshLabel.text = YMLocalizedString(@"XPSessionFindNewGreetListView2"); + } + return _refreshLabel; +} + +- (UIButton *)sendButton { + if (!_sendButton) { + _sendButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_sendButton setTitle:YMLocalizedString(@"XPSessionFindNewGreetListView3") forState:UIControlStateNormal]; + [_sendButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + _sendButton.titleLabel.font = [UIFont systemFontOfSize:14]; + [_sendButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _sendButton.layer.cornerRadius = 22; + _sendButton.layer.masksToBounds = YES; + [_sendButton addTarget:self action:@selector(sendButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _sendButton; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/View/YUMIInterlocutionDiscoveryStrangeBewelcometoStatementRegard.h b/YuMi/Modules/YMMessage/View/FindNew/View/View/YUMIInterlocutionDiscoveryStrangeBewelcometoStatementRegard.h deleted file mode 100644 index 9244486d..00000000 --- a/YuMi/Modules/YMMessage/View/FindNew/View/View/YUMIInterlocutionDiscoveryStrangeBewelcometoStatementRegard.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMSessionFindNewGreetListView.h -// YUMI -// -// Created by YUMI on 2022/6/13. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIInterlocutionDiscoveryStrangeBewelcometoStatementRegard; -@protocol FBCInterlocutionDiscoveryStrangeGreetStatementRegardRepresendtation - -- (void)yUMIInterlocutionDiscoveryStrangeBewelcometoSttowardsementRegard:(YUMIInterlocutionDiscoveryStrangeBewelcometoStatementRegard *)view greetUserId:(NSString *)userId; - -@end - -@interface YUMIInterlocutionDiscoveryStrangeBewelcometoStatementRegard : UIView -@property (nonatomic,copy) NSString *userId; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/View/YUMIInterlocutionDiscoveryStrangeBewelcometoStatementRegard.m b/YuMi/Modules/YMMessage/View/FindNew/View/View/YUMIInterlocutionDiscoveryStrangeBewelcometoStatementRegard.m deleted file mode 100644 index 03833353..00000000 --- a/YuMi/Modules/YMMessage/View/FindNew/View/View/YUMIInterlocutionDiscoveryStrangeBewelcometoStatementRegard.m +++ /dev/null @@ -1,233 +0,0 @@ -// -// YMSessionFindNewGreetListView.m -// YUMI -// -// Created by YUMI on 2022/6/13. -// - -#import "YUMIInterlocutionDiscoveryStrangeBewelcometoStatementRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "YUMIMacroUitls.h" -#import "XNDJTBWGLoadingTool.h" -#import "Api+FindNew.h" -#import "MKJPopup.h" -#import "NSArray+Safe.h" -#import "DiscoveryStrangeBewelcometoStatementMatrix.h" -#import "YUMIInterlocutionDiscoveryStrangeBewelcometoTabulationRegardElement.h" - -@interface YUMIInterlocutionDiscoveryStrangeBewelcometoStatementRegard () -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UIStackView *refreshHierarchyRegard; -@property (nonatomic,strong) UIButton *refreshBtuton; -@property (nonatomic,strong) UILabel *refreshSequencignation; -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) UIButton *dischargeBtuton; -@property (nonatomic,strong) NSArray *datasource; -@property (nonatomic,strong) DiscoveryStrangeBewelcometoStatementMatrix *listMatrix; -@property (nonatomic,strong) DiscoveryStrangeBewelcometoMatrix *chosenMatrix; -@end - -@implementation YUMIInterlocutionDiscoveryStrangeBewelcometoStatementRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initHyperessayDemand]; - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initHyperessayDemand { - NSString * start = self.listMatrix ? self.listMatrix.start : @"0"; - [XNDJTBWGLoadingTool EvidenceChambering]; - [Api prohibiticoveryStrangeBewelcometoCommunictowardsionSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - [XNDJTBWGLoadingTool brakeHUD]; - if (code == 200) { - DiscoveryStrangeBewelcometoStatementMatrix * model = [DiscoveryStrangeBewelcometoStatementMatrix mtowardsrixAboutImpactbasket:data.data]; - self.listMatrix = model; - self.datasource = model.list; - if (model.list.count > 0) { - self.chosenMatrix = model.list.firstObject; - } - [self.tableView reloadData]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } start:start pageSize:@"5"]; -} - -- (void)initSubViews { - self.backgroundColor = [DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]; - [self addSubview:self.titleLabel]; - [self addSubview:self.refreshHierarchyRegard]; - [self addSubview:self.tableView]; - [self addSubview:self.dischargeBtuton]; - - [self.refreshHierarchyRegard addArrangedSubview:self.refreshBtuton]; - [self.refreshHierarchyRegard addArrangedSubview:self.refreshSequencignation]; - - CAShapeLayer * layer = [CAShapeLayer layer]; - UIBezierPath * path= [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, kHalfScreenHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(10, 10)]; - layer.path = path.CGPath; - self.layer.mask = layer; -} - -- (void)initChildLyRestrictions { - self.frame = CGRectMake(0, 0, KScreenWidth, kHalfScreenHeight); - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self).offset(17); - make.left.mas_equalTo(15); - }]; - - [self.refreshHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self).offset(-15); - make.centerY.mas_equalTo(self.titleLabel); - make.height.mas_equalTo(30); - }]; - - [self.refreshBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(30); - }]; - - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self); - make.bottom.mas_equalTo(self.dischargeBtuton.mas_top); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(10); - }]; - - [self.dischargeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.mas_bottom).offset(-20); - make.left.right.mas_equalTo(self).inset(57); - make.height.mas_equalTo(44); - }]; -} - - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 65; -} - - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - YUMIInterlocutionDiscoveryStrangeBewelcometoTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIInterlocutionDiscoveryStrangeBewelcometoTabulationRegardElement class])]; - DiscoveryStrangeBewelcometoMatrix * model = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (model.fId == self.chosenMatrix.fId) { - model.isSelect = YES; - } else { - model.isSelect = NO; - } - cell.bewelcometoMatrix = model; - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.datasource.count > 0) { - DiscoveryStrangeBewelcometoMatrix * model = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - self.chosenMatrix = model; - [self.tableView reloadData]; - } -} -#pragma mark - Event Response -- (void)prohibitichargeBtutonPerformance:(UIButton *)sender { - [Api prohibiticoveryStrangeConsumerBewelcometo:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:YMLocalizedString(@"YUMI_Session_Find_New_Greet_List_View_0")]; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIInterlocutionDiscoveryStrangeBewelcometoSttowardsementRegard:greetUserId:)]) { - [self.delegate yUMIInterlocutionDiscoveryStrangeBewelcometoSttowardsementRegard:self greetUserId:self.userId]; - } - [MKJPopup dismiss]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } helloUid:self.userId message:self.chosenMatrix.message]; -} - -- (void)betowardsRenovtowardsehRecognition { - [self initHyperessayDemand]; -} - -#pragma mark - Getters And Setters -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightBold]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleLabel.text = YMLocalizedString(@"YUMI_Session_Find_New_Greet_List_View_1"); - } - return _titleLabel; -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIInterlocutionDiscoveryStrangeBewelcometoTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIInterlocutionDiscoveryStrangeBewelcometoTabulationRegardElement class])]; - } - return _tableView; -} - -- (UIStackView *)refreshHierarchyRegard { - if (!_refreshHierarchyRegard) { - _refreshHierarchyRegard = [[UIStackView alloc] init]; - _refreshHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _refreshHierarchyRegard.distribution = UIStackViewDistributionFill; - _refreshHierarchyRegard.alignment = UIStackViewAlignmentFill; - _refreshHierarchyRegard.spacing = 2; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsRenovtowardsehRecognition)]; - [_refreshHierarchyRegard addGestureRecognizer:tap]; - } - return _refreshHierarchyRegard; -} - -- (UIButton *)refreshBtuton { - if (!_refreshBtuton) { - _refreshBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_refreshBtuton setImage:[UIImage imageNamed:@"yumi_term_find_new_refresh"] forState:UIControlStateNormal]; - [_refreshBtuton setImage:[UIImage imageNamed:@"yumi_term_find_new_refresh"] forState:UIControlStateSelected]; - } - return _refreshBtuton; -} - -- (UILabel *)refreshSequencignation { - if (!_refreshSequencignation) { - _refreshSequencignation = [[UILabel alloc] init]; - _refreshSequencignation.font = [UIFont systemFontOfSize:13]; - _refreshSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _refreshSequencignation.text = YMLocalizedString(@"YUMI_Session_Find_New_Greet_List_View_2"); - } - return _refreshSequencignation; -} - -- (UIButton *)dischargeBtuton { - if (!_dischargeBtuton) { - _dischargeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_dischargeBtuton setTitle:YMLocalizedString(@"YUMI_Session_Find_New_Greet_List_View_3") forState:UIControlStateNormal]; - [_dischargeBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - _dischargeBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - [_dischargeBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _dischargeBtuton.layer.cornerRadius = 22; - _dischargeBtuton.layer.masksToBounds = YES; - [_dischargeBtuton addTarget:self action:@selector(prohibitichargeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _dischargeBtuton; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/View/YUMIInterlocutionDiscoveryStrangeFiltrateRegard.h b/YuMi/Modules/YMMessage/View/FindNew/View/View/YUMIInterlocutionDiscoveryStrangeFiltrateRegard.h deleted file mode 100644 index e393bcae..00000000 --- a/YuMi/Modules/YMMessage/View/FindNew/View/View/YUMIInterlocutionDiscoveryStrangeFiltrateRegard.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMSessionFindNewFiltrateView.h -// YUMI -// -// Created by YUMI on 2022/6/10. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIInterlocutionDiscoveryStrangeFiltrateRegard; -@protocol FBCInterlocutionDiscoveryStrangeFiltrateRegardRepresendtation - -- (void)yUMIInterlocutionDiscoveryStrangeFiltrtowardseRegard:(NSString *)chooseHello chooseSex:(NSString *)sex; - -@end - -@interface YUMIInterlocutionDiscoveryStrangeFiltrateRegard : UIView -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/View/YUMIInterlocutionDiscoveryStrangeFiltrateRegard.m b/YuMi/Modules/YMMessage/View/FindNew/View/View/YUMIInterlocutionDiscoveryStrangeFiltrateRegard.m deleted file mode 100644 index ad2c4885..00000000 --- a/YuMi/Modules/YMMessage/View/FindNew/View/View/YUMIInterlocutionDiscoveryStrangeFiltrateRegard.m +++ /dev/null @@ -1,333 +0,0 @@ -// -// YMSessionFindNewFiltrateView.m -// YUMI -// -// Created by YUMI on 2022/6/10. -// - -#import "YUMIInterlocutionDiscoveryStrangeFiltrateRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "YUMIMacroUitls.h" - -@interface YUMIInterlocutionDiscoveryStrangeFiltrateRegard () - -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UILabel *seaxualitySequencignation; -@property (nonatomic,strong) UIStackView *seaxualityHierarchyRegard; -@property (nonatomic,strong) UIButton *entiretyBtuton; -@property (nonatomic,strong) UIButton *maleBtuton; -@property (nonatomic,strong) UIButton *femaleBtuton; -@property (nonatomic,strong) UIButton *sureBtuton; -@property (nonatomic,strong) UILabel *corridoroSequencignation; -@property (nonatomic,strong) UIStackView *corridoroHierarchyRegard; -@property (nonatomic,strong) UIButton *entiretyCorridoroBtuton; -@property (nonatomic,strong) UIButton *notCorridorowBtuton; -@property (nonatomic,strong) UIButton *corridoroBtuton; -@property (nonatomic,copy) NSString *seualityConclude; -@property (nonatomic,copy) NSString *hentiretyoConclude; -@end - - -@implementation YUMIInterlocutionDiscoveryStrangeFiltrateRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.seualityConclude = @"0"; - [self addSubview:self.titleLabel]; - [self addSubview:self.seaxualitySequencignation]; - [self addSubview:self.seaxualityHierarchyRegard]; - [self addSubview:self.corridoroSequencignation]; - [self addSubview:self.corridoroHierarchyRegard]; - [self addSubview:self.sureBtuton]; - - [self.seaxualityHierarchyRegard addArrangedSubview:self.entiretyBtuton]; - [self.seaxualityHierarchyRegard addArrangedSubview:self.femaleBtuton]; - [self.seaxualityHierarchyRegard addArrangedSubview:self.maleBtuton]; - - [self.corridoroHierarchyRegard addArrangedSubview:self.entiretyCorridoroBtuton]; - [self.corridoroHierarchyRegard addArrangedSubview:self.corridoroBtuton]; - [self.corridoroHierarchyRegard addArrangedSubview:self.notCorridorowBtuton]; - - self.backgroundColor = [UIColor whiteColor]; - CAShapeLayer * layer = [CAShapeLayer layer]; - layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, 315) byRoundingCorners:UIRectCornerTopLeft| UIRectCornerTopRight cornerRadii:CGSizeMake(10, 10)].CGPath; - self.layer.masksToBounds = YES; - self.layer.mask = layer; - [self seualityBtutonPerformance:self.entiretyBtuton]; - [self hentiretyoBtutonPerformance:self.entiretyCorridoroBtuton]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth); - make.height.mas_equalTo(315); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self).offset(15); - }]; - - [self.seaxualitySequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self).offset(15); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(12); - }]; - - [self.seaxualityHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.seaxualitySequencignation); - make.top.mas_equalTo(self.seaxualitySequencignation.mas_bottom).offset(12); - make.height.mas_equalTo(26); - make.width.mas_equalTo(72 * 3 + 20 * 2); - }]; - - [self.corridoroSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self).offset(15); - make.top.mas_equalTo(self.seaxualityHierarchyRegard.mas_bottom).offset(24); - }]; - - [self.corridoroHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.seaxualitySequencignation); - make.top.mas_equalTo(self.corridoroSequencignation.mas_bottom).offset(12); - make.height.mas_equalTo(26); - make.width.mas_equalTo(72 * 3 + 20 * 2); - }]; - - [self.sureBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self).inset(57); - make.height.mas_equalTo(38); - make.bottom.mas_equalTo(self).offset(-45); - }]; -} -#pragma mark - Event Response -- (void)seualityBtutonPerformance:(UIButton *)sender { - self.entiretyBtuton.selected = NO; - self.femaleBtuton.selected = NO; - self.maleBtuton.selected = NO; - self.entiretyBtuton.layer.borderWidth = 0; - self.femaleBtuton.layer.borderWidth = 0; - self.maleBtuton.layer.borderWidth = 0; - sender.layer.borderWidth = 0.5; - sender.selected = YES; - self.seualityConclude = [NSString stringWithFormat:@"%ld", sender.tag - 1000]; -} - -- (void)hentiretyoBtutonPerformance:(UIButton *)sender { - self.corridoroBtuton.selected = NO; - self.notCorridorowBtuton.selected = NO; - self.entiretyCorridoroBtuton.selected = NO; - sender.selected = YES; - self.entiretyCorridoroBtuton.layer.borderWidth = 0; - self.corridoroBtuton.layer.borderWidth = 0; - self.notCorridorowBtuton.layer.borderWidth = 0; - sender.layer.borderWidth = 0.5; - self.hentiretyoConclude = [NSString stringWithFormat:@"%ld", sender.tag - 1000]; -} - -- (void)sureBtutonPerformance:(UIButton *)sener { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIInterlocutionDiscoveryStrangeFiltrtowardseRegard:chooseSex:)]) { - [self.delegate yUMIInterlocutionDiscoveryStrangeFiltrtowardseRegard:self.hentiretyoConclude chooseSex:self.seualityConclude]; - } -} - -#pragma mark - Getters And Setters -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightSemibold]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleLabel.text = YMLocalizedString(@"YUMI_Session_Find_New_Filtrate_View_0"); - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} - -- (UILabel *)seaxualitySequencignation { - if (!_seaxualitySequencignation) { - _seaxualitySequencignation = [[UILabel alloc] init]; - _seaxualitySequencignation.font = [UIFont systemFontOfSize:15]; - _seaxualitySequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _seaxualitySequencignation.text = YMLocalizedString(@"YUMI_Session_Find_New_Filtrate_View_1"); - } - return _seaxualitySequencignation; -} - -- (UIStackView *)seaxualityHierarchyRegard { - if (!_seaxualityHierarchyRegard) { - _seaxualityHierarchyRegard = [[UIStackView alloc] init]; - _seaxualityHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _seaxualityHierarchyRegard.distribution = UIStackViewDistributionFillEqually; - _seaxualityHierarchyRegard.alignment = UIStackViewAlignmentFill; - _seaxualityHierarchyRegard.spacing = 20; - } - return _seaxualityHierarchyRegard; -} - - -- (UIButton *)maleBtuton { - if (!_maleBtuton) { - _maleBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_maleBtuton setTitle:YMLocalizedString(@"YUMI_Session_Find_New_Filtrate_View_2") forState:UIControlStateNormal]; - [_maleBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _maleBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_maleBtuton setTitleColor:[DJDKMIMOMColor instantEssayPrettify] forState:UIControlStateNormal]; - [_maleBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionMainPrettify] forState:UIControlStateSelected]; - [_maleBtuton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0xF1F1FA)] forState:UIControlStateNormal]; - [_maleBtuton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0xFFF0C9)] forState:UIControlStateSelected]; - _maleBtuton.layer.borderWidth = 0; - _maleBtuton.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - _maleBtuton.layer.masksToBounds = YES; - _maleBtuton.layer.cornerRadius = 13; - _maleBtuton.tag = 1001; - [_maleBtuton addTarget:self action:@selector(seualityBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _maleBtuton; -} - -- (UIButton *)femaleBtuton { - if (!_femaleBtuton) { - _femaleBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_femaleBtuton setTitle:YMLocalizedString(@"YUMI_Session_Find_New_Filtrate_View_3") forState:UIControlStateNormal]; - [_femaleBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _femaleBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_femaleBtuton setTitleColor:[DJDKMIMOMColor instantEssayPrettify] forState:UIControlStateNormal]; - [_femaleBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionMainPrettify] forState:UIControlStateSelected]; - [_femaleBtuton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0xF1F1FA)] forState:UIControlStateNormal]; - [_femaleBtuton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0xFFF0C9)] forState:UIControlStateSelected]; - _femaleBtuton.layer.borderWidth = 0; - _femaleBtuton.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - _femaleBtuton.layer.masksToBounds = YES; - _femaleBtuton.layer.cornerRadius = 13; - _femaleBtuton.tag = 1002; - [_femaleBtuton addTarget:self action:@selector(seualityBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _femaleBtuton; -} - -- (UIButton *)entiretyBtuton { - if (!_entiretyBtuton) { - _entiretyBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_entiretyBtuton setTitle:YMLocalizedString(@"YUMI_Session_Find_New_Filtrate_View_4") forState:UIControlStateNormal]; - [_entiretyBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _entiretyBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_entiretyBtuton setTitleColor:[DJDKMIMOMColor instantEssayPrettify] forState:UIControlStateNormal]; - [_entiretyBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionMainPrettify] forState:UIControlStateSelected]; - [_entiretyBtuton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0xF1F1FA)] forState:UIControlStateNormal]; - [_entiretyBtuton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0xFFF0C9)] forState:UIControlStateSelected]; - _entiretyBtuton.layer.borderWidth = 0.5; - _entiretyBtuton.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - _entiretyBtuton.layer.masksToBounds = YES; - _entiretyBtuton.layer.cornerRadius = 13; - _entiretyBtuton.tag = 1000; - _entiretyBtuton.selected = YES; - [_entiretyBtuton addTarget:self action:@selector(seualityBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _entiretyBtuton; -} - -- (UILabel *)corridoroSequencignation { - if (!_corridoroSequencignation) { - _corridoroSequencignation = [[UILabel alloc] init]; - _corridoroSequencignation.font = [UIFont systemFontOfSize:15]; - _corridoroSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _corridoroSequencignation.text = YMLocalizedString(@"YUMI_Session_Find_New_Filtrate_View_5"); - } - return _corridoroSequencignation; -} - -- (UIStackView *)corridoroHierarchyRegard { - if (!_corridoroHierarchyRegard) { - _corridoroHierarchyRegard = [[UIStackView alloc] init]; - _corridoroHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _corridoroHierarchyRegard.distribution = UIStackViewDistributionFillEqually; - _corridoroHierarchyRegard.alignment = UIStackViewAlignmentFill; - _corridoroHierarchyRegard.spacing = 20; - } - return _corridoroHierarchyRegard; -} - -- (UIButton *)corridoroBtuton { - if (!_corridoroBtuton) { - _corridoroBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_corridoroBtuton setTitle:YMLocalizedString(@"YUMI_Session_Find_New_Filtrate_View_6") forState:UIControlStateNormal]; - [_corridoroBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _corridoroBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_corridoroBtuton setTitleColor:[DJDKMIMOMColor instantEssayPrettify] forState:UIControlStateNormal]; - [_corridoroBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionMainPrettify] forState:UIControlStateSelected]; - [_corridoroBtuton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0xF1F1FA)] forState:UIControlStateNormal]; - [_corridoroBtuton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0xFFF0C9)] forState:UIControlStateSelected]; - _corridoroBtuton.layer.borderWidth = 0.5; - _corridoroBtuton.layer.masksToBounds = YES; - _corridoroBtuton.layer.cornerRadius = 13; - _corridoroBtuton.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - _corridoroBtuton.tag = 1001; - [_corridoroBtuton addTarget:self action:@selector(hentiretyoBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _corridoroBtuton; -} - -- (UIButton *)notCorridorowBtuton { - if (!_notCorridorowBtuton) { - _notCorridorowBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_notCorridorowBtuton setTitle:YMLocalizedString(@"YUMI_Session_Find_New_Filtrate_View_7") forState:UIControlStateNormal]; - [_notCorridorowBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _notCorridorowBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_notCorridorowBtuton setTitleColor:[DJDKMIMOMColor instantEssayPrettify] forState:UIControlStateNormal]; - [_notCorridorowBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionMainPrettify] forState:UIControlStateSelected]; - [_notCorridorowBtuton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0xF1F1FA)] forState:UIControlStateNormal]; - [_notCorridorowBtuton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0xFFF0C9)] forState:UIControlStateSelected]; - _notCorridorowBtuton.layer.borderWidth = 0.5; - _notCorridorowBtuton.layer.masksToBounds = YES; - _notCorridorowBtuton.layer.cornerRadius = 13; - _notCorridorowBtuton.tag = 1002; - _notCorridorowBtuton.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - [_notCorridorowBtuton addTarget:self action:@selector(hentiretyoBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _notCorridorowBtuton; -} - -- (UIButton *)entiretyCorridoroBtuton { - if (!_entiretyCorridoroBtuton) { - _entiretyCorridoroBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_entiretyCorridoroBtuton setTitle:YMLocalizedString(@"YUMI_Session_Find_New_Filtrate_View_8") forState:UIControlStateNormal]; - [_entiretyCorridoroBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _entiretyCorridoroBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_entiretyCorridoroBtuton setTitleColor:[DJDKMIMOMColor instantEssayPrettify] forState:UIControlStateNormal]; - [_entiretyCorridoroBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionMainPrettify] forState:UIControlStateSelected]; - [_entiretyCorridoroBtuton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0xF1F1FA)] forState:UIControlStateNormal]; - [_entiretyCorridoroBtuton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0xFFF0C9)] forState:UIControlStateSelected]; - _entiretyCorridoroBtuton.layer.borderWidth = 0.5; - _entiretyCorridoroBtuton.layer.masksToBounds = YES; - _entiretyCorridoroBtuton.layer.cornerRadius = 13; - _entiretyCorridoroBtuton.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - _entiretyCorridoroBtuton.tag = 1000; - [_entiretyCorridoroBtuton addTarget:self action:@selector(hentiretyoBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _entiretyCorridoroBtuton; -} - -- (UIButton *)sureBtuton { - if (!_sureBtuton) { - _sureBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_sureBtuton setTitle:YMLocalizedString(@"YUMI_Session_Find_New_Filtrate_View_9") forState:UIControlStateNormal]; - [_sureBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _sureBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - [_sureBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _sureBtuton.layer.masksToBounds = YES; - _sureBtuton.layer.cornerRadius = 38/2; - [_sureBtuton addTarget:self action:@selector(sureBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _sureBtuton; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/View/YUMIInterlocutionDiscoveryStrangePrecautiousRegard.h b/YuMi/Modules/YMMessage/View/FindNew/View/View/YUMIInterlocutionDiscoveryStrangePrecautiousRegard.h deleted file mode 100644 index 7c8433c1..00000000 --- a/YuMi/Modules/YMMessage/View/FindNew/View/View/YUMIInterlocutionDiscoveryStrangePrecautiousRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMSessionFindNewAlertView.h -// YUMI -// -// Created by YUMI on 2022/6/17. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class DiscoveryStrangeBewelcometoCommunicationMatrix; -@interface YUMIInterlocutionDiscoveryStrangePrecautiousRegard : UIView -@property (nonatomic,strong) DiscoveryStrangeBewelcometoCommunicationMatrix *userInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/View/YUMIInterlocutionDiscoveryStrangePrecautiousRegard.m b/YuMi/Modules/YMMessage/View/FindNew/View/View/YUMIInterlocutionDiscoveryStrangePrecautiousRegard.m deleted file mode 100644 index ceaaff0e..00000000 --- a/YuMi/Modules/YMMessage/View/FindNew/View/View/YUMIInterlocutionDiscoveryStrangePrecautiousRegard.m +++ /dev/null @@ -1,198 +0,0 @@ -// -// YMSessionFindNewAlertView.m -// YUMI -// -// Created by YUMI on 2022/6/17. -// - -#import "YUMIInterlocutionDiscoveryStrangePrecautiousRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "MKJPopup.h" -#import "NetIndicateRegard.h" -#import "YUMIMacroUitls.h" -#import "Api+Room.h" -#import "XNDJTBWGLoadingTool.h" -#import "XCCurrentVCStackExecutive.h" -#import "DiscoveryStrangeBewelcometoCommunicationMatrix.h" -#import "ChamberAbstractMatrix.h" -#import "YUMIChamberRegardGovernancer.h" -#import "InterlocutionRegardGovernancer.h" -#import "ChamberHostRepresendtation.h" - -@interface YUMIInterlocutionDiscoveryStrangePrecautiousRegard () - -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UILabel *communicationSequencignation; -@property (nonatomic,strong) UIButton *revocationBtuton; -@property (nonatomic,strong) UIButton *findBtuton; -@end - - -@implementation YUMIInterlocutionDiscoveryStrangePrecautiousRegard -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - self.layer.masksToBounds = YES; - self.layer.cornerRadius = 10; - [self addSubview:self.intelligenceportraitIndicateRegard]; - [self addSubview:self.monicerSequencignation]; - [self addSubview:self.communicationSequencignation]; - [self addSubview:self.revocationBtuton]; - [self addSubview:self.findBtuton]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth - 40 * 2); - make.bottom.mas_equalTo(self.revocationBtuton.mas_bottom).offset(15); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(75, 75)); - make.top.mas_equalTo(self).offset(20); - make.centerX.mas_equalTo(self); - }]; - - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self).inset(10); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_bottom).offset(15); - }]; - - [self.communicationSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self).inset(40); - make.top.mas_equalTo(self.monicerSequencignation.mas_bottom).offset(10); - }]; - - [self.revocationBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(120, 40)); - make.right.mas_equalTo(self.mas_centerX).offset(-10); - make.top.mas_equalTo(self.communicationSequencignation.mas_bottom).offset(30); - }]; - - [self.findBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.revocationBtuton); - make.left.mas_equalTo(self.mas_centerX).offset(10); - }]; -} - -#pragma mark - Event Response -- (void)revoctowardsionBtutonPerformance:(UIButton *)sender { - [MKJPopup dismiss]; -} - -- (void)prohibiticoveryBtutonPerformance:(UIButton *)sender { - if (self.userInfo.uid.integerValue > 0) { - [Api requisitionConsumerInChamber:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - ChamberAbstractMatrix * roomInfo = [ChamberAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - if (roomInfo.uid && self.userInfo.uid && self.userInfo.nick.length > 0) { - - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj isKindOfClass:[YUMIChamberRegardGovernancer class]]) { - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController popToRootViewControllerAnimated:NO]; - YUMIChamberRegardGovernancer * rooomVC = obj; - [rooomVC exitRoom]; - *stop = YES; - } - }]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [YUMIChamberRegardGovernancer unfoildChamber:[NSString stringWithFormat:@"%ld", roomInfo.uid] fromNick:self.userInfo.nick fromType:ConsumerEnterChamberFromGenre_Follow_User fromUid:self.userInfo.uid viewController:[XCCurrentVCStackExecutive shareManager].getCurrentVC]; - }); - } else { - InterlocutionRegardGovernancer * sessionVC = [[InterlocutionRegardGovernancer alloc] initWithSession:[NIMSession session:self.userInfo.uid type:NIMSessionTypeP2P]]; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:sessionVC animated:YES]; - } - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } uid:self.userInfo.uid]; - } - [MKJPopup dismiss]; -} - -#pragma mark - Getters And Setters -- (void)setUserInfo:(DiscoveryStrangeBewelcometoCommunicationMatrix *)userInfo { - _userInfo = userInfo; - if (_userInfo) { - self.intelligenceportraitIndicateRegard.imageUrl = _userInfo.avatar; - self.monicerSequencignation.text = _userInfo.nick; - self.communicationSequencignation.text = _userInfo.message; - } -} - - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 75 /2; - _intelligenceportraitIndicateRegard.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - _monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _monicerSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _monicerSequencignation; -} - -- (UILabel *)communicationSequencignation { - if (!_communicationSequencignation) { - _communicationSequencignation = [[UILabel alloc] init]; - _communicationSequencignation.font = [UIFont systemFontOfSize:15]; - _communicationSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _communicationSequencignation.textAlignment = NSTextAlignmentCenter; - _communicationSequencignation.numberOfLines = 0; - } - return _communicationSequencignation; -} - -- (UIButton *)revocationBtuton { - if (!_revocationBtuton) { - _revocationBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_revocationBtuton setTitle:YMLocalizedString(@"YUMI_Session_Find_New_Alert_View_0") forState:UIControlStateNormal]; - [_revocationBtuton setTitleColor:[DJDKMIMOMColor revoctowardsionBtutonEssayPrettify] forState:UIControlStateNormal]; - _revocationBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - [_revocationBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor revoctowardsionBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor revoctowardsionBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _revocationBtuton.layer.masksToBounds = YES; - _revocationBtuton.layer.cornerRadius = 10; - [_revocationBtuton addTarget:self action:@selector(revoctowardsionBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _revocationBtuton; -} - -- (UIButton *)findBtuton { - if (!_findBtuton) { - _findBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_findBtuton setTitle:@"去找TA" forState:UIControlStateNormal]; - [_findBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - _findBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - [_findBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _findBtuton.layer.masksToBounds = YES; - _findBtuton.layer.cornerRadius = 10; - [_findBtuton addTarget:self action:@selector(prohibiticoveryBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _findBtuton; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/XPSessionFindNewViewController.h b/YuMi/Modules/YMMessage/View/FindNew/View/XPSessionFindNewViewController.h new file mode 100644 index 00000000..ac0dd445 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/FindNew/View/XPSessionFindNewViewController.h @@ -0,0 +1,16 @@ +// +// YMSessionFindNewViewController.h +// YUMI +// +// Created by YUMI on 2022/6/10. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPSessionFindNewViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/XPSessionFindNewViewController.m b/YuMi/Modules/YMMessage/View/FindNew/View/XPSessionFindNewViewController.m new file mode 100644 index 00000000..819f6df9 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/FindNew/View/XPSessionFindNewViewController.m @@ -0,0 +1,274 @@ +// +// YMSessionFindNewViewController.m +// YUMI +// +// Created by YUMI on 2022/6/10. +// + +#import "XPSessionFindNewViewController.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "TTPopup.h" +#import "XCCurrentVCStackManager.h" +#import "NSArray+Safe.h" +#import "ClientConfig.h" +///Model +#import "FindNewUserInfoModel.h" +///View +#import "XPSessionFindNewTableViewCell.h" +#import "XPSessionFindNewEmptyTableViewCell.h" +#import "XPSessionFindNewFiltrateView.h" +#import "XPSessionFindNewGreetListView.h" +#import "XPMineUserInfoViewController.h" +#import "XPMineSimpleUserInfoViewController.h" +///P +#import "XPSessionFindNewProtocol.h" +#import "XPSessionFindNewPresenter.h" + + +@interface XPSessionFindNewViewController () +///导航栏 +@property (nonatomic,strong) UIView * navView; +///发现萌新 +@property (nonatomic,strong) UILabel *titleLabel; +///没日更新 +@property (nonatomic,strong) UILabel *subTitleLabel; +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSArray *datasource; +@property (nonatomic,strong) NSArray *originArray; +@end + +@implementation XPSessionFindNewViewController + +- (__kindof id)createPresenter { + return [[XPSessionFindNewPresenter alloc] init];; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self.presenter getFindNewUser]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.tableView]; + self.navigationItem.titleView = self.navView; + + [self.navView addSubview:self.titleLabel]; + [self.navView addSubview:self.subTitleLabel]; + + [self addNavigationItemWithImageNames:@[@"message_session_find_new_filtrate"] isLeft:NO target:self action:@selector(rightButtonAction:) tags:nil]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.navView); + make.bottom.mas_equalTo(self.navView.mas_centerY).offset(-1); + }]; + + [self.subTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.navView); + make.top.mas_equalTo(self.navView.mas_centerY).offset(1); + }]; +} +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 65; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPSessionFindNewTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPSessionFindNewTableViewCell class])]; + if (cell == nil) { + cell = [[XPSessionFindNewTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPSessionFindNewTableViewCell class])]; + } + cell.userInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.delegate = self; + return cell; + } + + XPSessionFindNewEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPSessionFindNewEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPSessionFindNewEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPSessionFindNewEmptyTableViewCell class])]; + } + return cell; +} + +#pragma mark - XPSessionFindNewFiltrateViewDelegate +- (void)xPSessionFindNewFiltrateView:(NSString *)chooseHello chooseSex:(NSString *)sex { + [TTPopup dismiss]; + NSMutableArray * array = [NSMutableArray array]; + [self.originArray enumerateObjectsUsingBlock:^(FindNewUserInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([sex isEqualToString:@"1"]) { + if (obj.gender == GenderType_Male) { + [array addObject: obj]; + } + } else if([sex isEqualToString:@"2"]) { + if (obj.gender == GenderType_Female) { + [array addObject: obj]; + } + } else { + [array addObject:obj]; + } + }]; + + NSMutableArray * newArray = [NSMutableArray array]; + [array enumerateObjectsUsingBlock:^(FindNewUserInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([chooseHello isEqualToString:@"0"]) { + [newArray addObject:obj]; + } else if([chooseHello isEqualToString:@"2"]) { + if (obj.hello == YES) { + [newArray addObject:obj]; + } + } else if([chooseHello isEqualToString:@"1"]) { + if (obj.hello == NO) { + [newArray addObject:obj]; + } + } + }]; + self.datasource = newArray; + [self.tableView reloadData]; +} + +#pragma mark - XPSessionFindNewTableViewCellDelegate +- (void)xPSessionFindNewTableViewCell:(XPSessionFindNewTableViewCell *)cell didSelectItem:(FindNewUserInfoModel *)userInfo { + if (userInfo.hello) { + ///兼容房间内私聊的 + UIWindow * currentWindow; + for (int i = 0; i < [UIApplication sharedApplication].windows.count; i++) { + UIWindow * window = [[UIApplication sharedApplication].windows safeObjectAtIndex1:i]; + if(window.tag == 1000) { + currentWindow = window; + break; + } + } + if (currentWindow) { + currentWindow.windowLevel = -1; + } + XPSessionFindNewGreetListView * listView = [[XPSessionFindNewGreetListView alloc] init]; + listView.userId = userInfo.uid; + listView.delegate = self; + [TTPopup popupView:listView style:TTPopupStyleActionSheet]; + } else { + [self showErrorToast:@"该用户被打招呼次数太多了,换一个吧~"]; + } +} + +- (void)xPSessionFindNewTableViewCell:(XPSessionFindNewTableViewCell *)cell didClickAvatar:(FindNewUserInfoModel *)userInfo { + if (userInfo.uid > 0) { + if ([ClientConfig shareConfig].canOpen) { + XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init]; + userInfoVC.uid = userInfo.uid.integerValue; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:userInfoVC animated:YES]; + }else{ + XPMineSimpleUserInfoViewController * userInfoVC = [[XPMineSimpleUserInfoViewController alloc] init]; + userInfoVC.uid = userInfo.uid.integerValue; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:userInfoVC animated:YES]; + } + } +} + +#pragma mark - XPSessionFindNewGreetListViewDelegate +- (void)xPSessionFindNewGreetListView:(XPSessionFindNewGreetListView *)view greetUserId:(NSString *)userId { + __block FindNewUserInfoModel * userInfo; + [self.datasource enumerateObjectsUsingBlock:^(FindNewUserInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.uid.integerValue == userId.integerValue) { + userInfo = obj; + *stop = YES; + } + }]; + if (userInfo) { + userInfo.hello = NO; + } + [self.tableView reloadData]; +} + +#pragma mark - XPSessionFindNewProtocol +- (void)getFindNewUserSuccess:(NSArray *)list { + self.datasource = list; + self.originArray = list; + [self.tableView reloadData]; +} + +#pragma mark - Event Response +- (void)rightButtonAction:(UIButton *)sender { + ///兼容房间内私聊的 + UIWindow * currentWindow; + for (int i = 0; i < [UIApplication sharedApplication].windows.count; i++) { + UIWindow * window = [[UIApplication sharedApplication].windows safeObjectAtIndex1:i]; + if(window.tag == 1000) { + currentWindow = window; + break; + } + } + if (currentWindow) { + currentWindow.windowLevel = -1; + } + + XPSessionFindNewFiltrateView * flitrView = [[XPSessionFindNewFiltrateView alloc] init]; + flitrView.delegate = self; + [TTPopup popupView:flitrView style:TTPopupStyleActionSheet]; +} + +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + } + return _tableView; +} + +- (UIView *)navView { + if (!_navView) { + _navView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 250, 44)]; + _navView.backgroundColor = [UIColor clearColor]; + } + return _navView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightSemibold]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _titleLabel.text = YMLocalizedString(@"XPSessionFindNewViewController1"); + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} + +- (UILabel *)subTitleLabel { + if (!_subTitleLabel) { + _subTitleLabel = [[UILabel alloc] init]; + _subTitleLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightSemibold]; + _subTitleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _subTitleLabel.text = YMLocalizedString(@"XPSessionFindNewViewController2"); + _subTitleLabel.textAlignment = NSTextAlignmentCenter; + } + return _subTitleLabel; +} + + +@end diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/YUMIInterlocutionDiscoveryStrangeRegardGovernancer.h b/YuMi/Modules/YMMessage/View/FindNew/View/YUMIInterlocutionDiscoveryStrangeRegardGovernancer.h deleted file mode 100644 index b3c4fe16..00000000 --- a/YuMi/Modules/YMMessage/View/FindNew/View/YUMIInterlocutionDiscoveryStrangeRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMSessionFindNewViewController.h -// YUMI -// -// Created by YUMI on 2022/6/10. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIInterlocutionDiscoveryStrangeRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/FindNew/View/YUMIInterlocutionDiscoveryStrangeRegardGovernancer.m b/YuMi/Modules/YMMessage/View/FindNew/View/YUMIInterlocutionDiscoveryStrangeRegardGovernancer.m deleted file mode 100644 index f2e70197..00000000 --- a/YuMi/Modules/YMMessage/View/FindNew/View/YUMIInterlocutionDiscoveryStrangeRegardGovernancer.m +++ /dev/null @@ -1,264 +0,0 @@ -// -// YMSessionFindNewViewController.m -// YUMI -// -// Created by YUMI on 2022/6/10. -// - -#import "YUMIInterlocutionDiscoveryStrangeRegardGovernancer.h" -#import -#import "DJDKMIMOMColor.h" -#import "MKJPopup.h" -#import "XCCurrentVCStackExecutive.h" -#import "NSArray+Safe.h" -#import "ClientDisposition.h" -#import "DiscoveryStrangeConsumerAbstractMatrix.h" -#import "YUMIInterlocutionDiscoveryStrangeTabulationRegardElement.h" -#import "YUMIInterlocutionDiscoveryStrangeDispossessTabulationRegardElement.h" -#import "YUMIInterlocutionDiscoveryStrangeFiltrateRegard.h" -#import "YUMIInterlocutionDiscoveryStrangeBewelcometoStatementRegard.h" -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -#import "YUMIManeSimpleConsumerAbstractRegardGovernancer.h" -#import "FBCInterlocutionDiscoveryStrangeCeremony.h" -#import "YUMIInterlocutionDiscoveryStrangeExternalizer.h" - - -@interface YUMIInterlocutionDiscoveryStrangeRegardGovernancer () -@property (nonatomic,strong) UIView * nevRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UILabel *subChampionSequencignation; -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSArray *datasource; -@property (nonatomic,strong) NSArray *derivationGarment; -@end - -@implementation YUMIInterlocutionDiscoveryStrangeRegardGovernancer - -- (__kindof id)producePresimport { - return [[YUMIInterlocutionDiscoveryStrangeExternalizer alloc] init];; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self.presimport acquireDiscoveryStrangeConsumer]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.tableView]; - self.navigationItem.titleView = self.nevRegard; - - [self.nevRegard addSubview:self.titleLabel]; - [self.nevRegard addSubview:self.subChampionSequencignation]; - - [self accelertowardseBreeadcrumbProvisionAboutIndictowardseSaluttowardsion:@[@"message_session_find_new_filtrate"] isContrary:NO target:self action:@selector(rectifyBtutonPerformance:) tags:nil]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.nevRegard); - make.bottom.mas_equalTo(self.nevRegard.mas_centerY).offset(-1); - }]; - - [self.subChampionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.nevRegard); - make.top.mas_equalTo(self.nevRegard.mas_centerY).offset(1); - }]; -} -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 65; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMIInterlocutionDiscoveryStrangeTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIInterlocutionDiscoveryStrangeTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIInterlocutionDiscoveryStrangeTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIInterlocutionDiscoveryStrangeTabulationRegardElement class])]; - } - cell.userInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.delegate = self; - return cell; - } - - YUMIInterlocutionDiscoveryStrangeDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIInterlocutionDiscoveryStrangeDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIInterlocutionDiscoveryStrangeDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIInterlocutionDiscoveryStrangeDispossessTabulationRegardElement class])]; - } - return cell; -} - -#pragma mark - FBCInterlocutionDiscoveryStrangeFiltrateRegardRepresendtation -- (void)yUMIInterlocutionDiscoveryStrangeFiltrtowardseRegard:(NSString *)chooseHello chooseSex:(NSString *)sex { - [MKJPopup dismiss]; - NSMutableArray * array = [NSMutableArray array]; - [self.derivationGarment enumerateObjectsUsingBlock:^(DiscoveryStrangeConsumerAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([sex isEqualToString:@"1"]) { - if (obj.gender == GenderGenre_Male) { - [array addObject: obj]; - } - } else if([sex isEqualToString:@"2"]) { - if (obj.gender == GenderGenre_Female) { - [array addObject: obj]; - } - } else { - [array addObject:obj]; - } - }]; - - NSMutableArray * newArray = [NSMutableArray array]; - [array enumerateObjectsUsingBlock:^(DiscoveryStrangeConsumerAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([chooseHello isEqualToString:@"0"]) { - [newArray addObject:obj]; - } else if([chooseHello isEqualToString:@"2"]) { - if (obj.hello == YES) { - [newArray addObject:obj]; - } - } else if([chooseHello isEqualToString:@"1"]) { - if (obj.hello == NO) { - [newArray addObject:obj]; - } - } - }]; - self.datasource = newArray; - [self.tableView reloadData]; -} - -#pragma mark - FBCInterlocutionDiscoveryStrangeTabulationViweElementRepresendtation -- (void)yUMIInterlocutionDiscoveryStrangeTarbsultowardsionViweElement:(YUMIInterlocutionDiscoveryStrangeTabulationRegardElement *)cell didSelectItem:(DiscoveryStrangeConsumerAbstractMatrix *)userInfo { - if (userInfo.hello) { - - UIWindow * currentWindow; - for (int i = 0; i < [UIApplication sharedApplication].windows.count; i++) { - UIWindow * window = [[UIApplication sharedApplication].windows secureGroalTowardsIndictowardsrix1:i]; - if(window.tag == 1000) { - currentWindow = window; - break; - } - } - if (currentWindow) { - currentWindow.windowLevel = -1; - } - YUMIInterlocutionDiscoveryStrangeBewelcometoStatementRegard * listView = [[YUMIInterlocutionDiscoveryStrangeBewelcometoStatementRegard alloc] init]; - listView.userId = userInfo.uid; - listView.delegate = self; - [MKJPopup popupRegard:listView style:MKJPopupStyleActionSheet]; - } else { - [self EvidenceMistakeToast:@"该用户被打招呼次数太多了,换一个吧~"]; - } -} - -- (void)yUMIInterlocutionDiscoveryStrangeTarbsultowardsionViweElement:(YUMIInterlocutionDiscoveryStrangeTabulationRegardElement *)cell didClickAvatar:(DiscoveryStrangeConsumerAbstractMatrix *)userInfo { - if (userInfo.uid > 0) { - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMIManeConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = userInfo.uid.integerValue; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:userInfoVC animated:YES]; - }else{ - YUMIManeSimpleConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeSimpleConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = userInfo.uid.integerValue; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:userInfoVC animated:YES]; - } - } -} - -#pragma mark - FBCInterlocutionDiscoveryStrangeGreetStatementRegardRepresendtation -- (void)yUMIInterlocutionDiscoveryStrangeBewelcometoSttowardsementRegard:(YUMIInterlocutionDiscoveryStrangeBewelcometoStatementRegard *)view greetUserId:(NSString *)userId { - __block DiscoveryStrangeConsumerAbstractMatrix * userInfo; - [self.datasource enumerateObjectsUsingBlock:^(DiscoveryStrangeConsumerAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.uid.integerValue == userId.integerValue) { - userInfo = obj; - *stop = YES; - } - }]; - if (userInfo) { - userInfo.hello = NO; - } - [self.tableView reloadData]; -} - -#pragma mark - FBCInterlocutionDiscoveryStrangeCeremony -- (void)acquireDiscoveryStrangeConsumerAccomplishment:(NSArray *)list { - self.datasource = list; - self.derivationGarment = list; - [self.tableView reloadData]; -} - -#pragma mark - Event Response -- (void)rectifyBtutonPerformance:(UIButton *)sender { - - UIWindow * currentWindow; - for (int i = 0; i < [UIApplication sharedApplication].windows.count; i++) { - UIWindow * window = [[UIApplication sharedApplication].windows secureGroalTowardsIndictowardsrix1:i]; - if(window.tag == 1000) { - currentWindow = window; - break; - } - } - if (currentWindow) { - currentWindow.windowLevel = -1; - } - - YUMIInterlocutionDiscoveryStrangeFiltrateRegard * flitrView = [[YUMIInterlocutionDiscoveryStrangeFiltrateRegard alloc] init]; - flitrView.delegate = self; - [MKJPopup popupRegard:flitrView style:MKJPopupStyleActionSheet]; -} - -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - } - return _tableView; -} - -- (UIView *)nevRegard { - if (!_nevRegard) { - _nevRegard = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 250, 44)]; - _nevRegard.backgroundColor = [UIColor clearColor]; - } - return _nevRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightSemibold]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleLabel.text = YMLocalizedString(@"YUMI_Session_Find_New_View_Controller_1"); - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} - -- (UILabel *)subChampionSequencignation { - if (!_subChampionSequencignation) { - _subChampionSequencignation = [[UILabel alloc] init]; - _subChampionSequencignation.font = [UIFont systemFontOfSize:13 weight:UIFontWeightSemibold]; - _subChampionSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _subChampionSequencignation.text = YMLocalizedString(@"YUMI_Session_Find_New_View_Controller_2"); - _subChampionSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _subChampionSequencignation; -} - - -@end diff --git a/YuMi/Modules/YMMessage/View/MessageAudioCenter.h b/YuMi/Modules/YMMessage/View/MessageAudioCenter.h new file mode 100644 index 00000000..f02604e5 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/MessageAudioCenter.h @@ -0,0 +1,18 @@ +// +// MessageAudioCenter.h +// YUMI +// +// Created by YUMI on 2022/4/22. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class NIMMessage; +@interface MessageAudioCenter : NSObject ++ (instancetype)shareInstance; +@property (nonatomic,strong, readonly) NIMMessage *currentPlayingMessage; +- (void)play:(NIMMessage *)message; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/MessageAudioCenter.m b/YuMi/Modules/YMMessage/View/MessageAudioCenter.m new file mode 100644 index 00000000..be550983 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/MessageAudioCenter.m @@ -0,0 +1,74 @@ +// +// MessageAudioCenter.m +// YUMI +// +// Created by YUMI on 2022/4/22. +// + +#import "MessageAudioCenter.h" +#import + +@interface MessageAudioCenter () +@property (nonatomic,assign) NSInteger retryCount; +@property (nonatomic,strong,nullable) NIMMessage *currentPlayingMessage; +@end + +@implementation MessageAudioCenter + ++ (instancetype)shareInstance { + static MessageAudioCenter *instance; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + instance = [[MessageAudioCenter alloc] init]; + }); + return instance; +} + +- (instancetype)init { + self = [super init]; + if (self) { + [[NIMSDK sharedSDK].mediaManager addDelegate:self]; + [self resetRetryCount]; + } + return self; +} + +- (void)resetRetryCount { + _retryCount = 3; +} + +- (void)play:(NIMMessage *)message { + NIMAudioObject *audioObject = (NIMAudioObject *)message.messageObject; + if ([audioObject isKindOfClass:[NIMAudioObject class]]) { + self.currentPlayingMessage = message; + message.isPlayed = YES; + [[NIMSDK sharedSDK].mediaManager play:audioObject.path]; + } +} + + +#pragma mark - NIMMediaManagerDelegate + +- (void)playAudio:(NSString *)filePath didBeganWithError:(NSError *)error +{ + if (error) { + if (_retryCount > 0){ + // iPhone4 和 iPhone 4S 上连播会由于设备释放过慢导致 AudioQueue 启动不了的问题,这里做个延迟重试,最多重试 3 次 ( code -66681 ) + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [[NIMSDK sharedSDK].mediaManager play:filePath]; + }); + }else{ + self.currentPlayingMessage = nil; + [self resetRetryCount]; + } + } else { + [self resetRetryCount]; + } +} + +- (void)playAudio:(NSString *)filePath didCompletedWithError:(nullable NSError *)error { + self.currentPlayingMessage = nil; +} + + +@end diff --git a/YuMi/Modules/YMMessage/View/NEMCCommunicationMaker.h b/YuMi/Modules/YMMessage/View/NEMCCommunicationMaker.h deleted file mode 100644 index 7501a779..00000000 --- a/YuMi/Modules/YMMessage/View/NEMCCommunicationMaker.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// NEMCCommunicationMaker.h -// YUMI -// -// Created by zu on 2021/11/28. -// - -#import -#import - -@interface NEMCCommunicationMaker : NSObject - -+ (NIMMessage*)communAboutEssay:(NSString *)text; - -+ (NIMMessage *)communAboutVocalmusic:(NSString *)filePath; - -+ (NIMMessage *)communAboutIndictowardse:(UIImage *)image; - -+ (NIMMessage *)communAboutIndictowardseRoute:(NSString *)path; - -+ (NIMMessage *)communAboutIndictowardseTowardsoloudspeaker:(NSData *)data extension:(NSString *)extension; - -+ (NIMMessage *)communAboutVideo:(NSString *)filePath; - -@end - - -@interface NEMCJudgementMaker : NSObject - -+ (NIMQuickComment *)judgementAboutGenre:(int64_t)type - content:(NSString *)content - ext:(NSString *)ext; - -@end diff --git a/YuMi/Modules/YMMessage/View/NEMCCommunicationMaker.m b/YuMi/Modules/YMMessage/View/NEMCCommunicationMaker.m deleted file mode 100644 index 52a84eb6..00000000 --- a/YuMi/Modules/YMMessage/View/NEMCCommunicationMaker.m +++ /dev/null @@ -1,121 +0,0 @@ -// -// NEMCCommunicationMaker.m -// YUMI -// -// Created by zu on 2021/11/28. -// - -#import "NEMCCommunicationMaker.h" -#import "YUMIConstant.h" - -@implementation NEMCCommunicationMaker - -+ (NIMMessage*)communAboutEssay:(NSString*)text -{ - NIMMessage *textMessage = [[NIMMessage alloc] init]; - textMessage.text = text; - [self setupCommunictowardsion:textMessage]; - return textMessage; -} - -+ (NIMMessage*)communAboutVocalmusic:(NSString*)filePath -{ - NIMAudioObject *audioObject = [[NIMAudioObject alloc] initWithSourcePath:filePath scene:NIMNOSSceneTypeMessage]; - NIMMessage *message = [[NIMMessage alloc] init]; - message.messageObject = audioObject; - message.text = YMLocalizedString(@"NIM_Message_Maker_0"); - [self setupCommunictowardsion:message]; - return message; -} - -+ (NIMMessage*)communAboutVideo:(NSString*)filePath -{ - NSDateFormatter *engagementInitialiser = [[NSDateFormatter alloc] init]; - [engagementInitialiser setDateFormat:@"yyyy-MM-dd HH:mm"]; - NSString *dateString = [engagementInitialiser stringFromDate:[NSDate date]]; - NIMVideoObject *videoObject = [[NIMVideoObject alloc] initWithSourcePath:filePath scene:NIMNOSSceneTypeMessage]; - videoObject.displayName = [NSString stringWithFormat:@"视频发送于%@", dateString]; - NIMMessage *message = [[NIMMessage alloc] init]; - message.messageObject = videoObject; - message.apnsContent = YMLocalizedString(@"NIM_Message_Maker_2"); - [self setupCommunictowardsion:message]; - return message; -} - -+ (NIMMessage*)communAboutIndictowardse:(UIImage*)image -{ - NIMImageObject *indicateGroal = [[NIMImageObject alloc] initWithImage:image scene:NIMNOSSceneTypeMessage]; - NIMImageOption *option = [[NIMImageOption alloc] init]; - option.compressQuality = 0.7; - indicateGroal.option = option; - return [NEMCCommunicationMaker genertowardseIndictowardseCommunictowardsion:indicateGroal]; -} - -+ (NIMMessage *)communAboutIndictowardseRoute:(NSString*)path -{ - NIMImageObject * indicateGroal = [[NIMImageObject alloc] initWithFilepath:path scene:NIMNOSSceneTypeMessage]; - return [NEMCCommunicationMaker genertowardseIndictowardseCommunictowardsion:indicateGroal]; -} - -+ (NIMMessage *)communAboutIndictowardseTowardsoloudspeaker:(NSData *)data extension:(NSString *)extension -{ - NIMImageObject *indicateGroal = [[NIMImageObject alloc] initWithData:data extension:extension]; - return [NEMCCommunicationMaker genertowardseIndictowardseCommunictowardsion:indicateGroal]; -} - -+ (NIMMessage *)genertowardseIndictowardseCommunictowardsion:(NIMImageObject *)indicateGroal -{ - NSDateFormatter *engagementInitialiser = [[NSDateFormatter alloc] init]; - [engagementInitialiser setDateFormat:@"yyyy-MM-dd HH:mm"]; - NSString *dateString = [engagementInitialiser stringFromDate:[NSDate date]]; - indicateGroal.displayName = [NSString stringWithFormat:@"图片发送于%@", dateString]; - NIMMessage *message = [[NIMMessage alloc] init]; - message.messageObject = indicateGroal; - message.apnsContent = YMLocalizedString(@"NIM_Message_Maker_4"); - [self setupCommunictowardsion:message]; - return message; -} - -+ (void)setupCommunictowardsion:(NIMMessage *)message -{ - message.apnsPayload = @{ - @"apns-collapse-id": message.messageId, - }; - - NIMMessageSetting *setting = [[NIMMessageSetting alloc] init]; - setting.scene = NIMNOSSceneTypeMessage; - setting.apnsEnabled = YES; - message.setting = setting; - - NIMAntiSpamOption *option = [NIMAntiSpamOption new]; - option.yidunEnabled = YES; - option.businessId = KeyWithType(keyType_YiDunBussinessId); - message.antiSpamOption = option; -} - - -@end - - -@implementation NEMCJudgementMaker - -+ (NIMQuickComment *)judgementAboutGenre:(int64_t)type - content:(NSString *)content - ext:(NSString *)ext -{ - NIMQuickComment *comment = [[NIMQuickComment alloc] init]; - comment.ext = ext; - NIMQuickCommentSetting *setting = [[NIMQuickCommentSetting alloc] init]; - setting.needPush = YES; - setting.needBadge = YES; - setting.pushTitle = YMLocalizedString(@"NIM_Message_Maker_5"); - setting.pushContent = content; - setting.pushPayload = @{ - @"key" : @"value" - }; - comment.setting = setting; - comment.replyType = type; - return comment; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/NEMCCommunicationUtils.h b/YuMi/Modules/YMMessage/View/NEMCCommunicationUtils.h deleted file mode 100644 index 971650a8..00000000 --- a/YuMi/Modules/YMMessage/View/NEMCCommunicationUtils.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// NEMCCommunicationUtils.h -// YUMI -// -// Created by zu on 2021/11/26. -// - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface NEMCCommunicationUtils : NSObject - -+ (NSString *)communicationSatisfperformance:(NIMMessage*)message; - -+ (BOOL)isHLOfficalSequenceription:(NSString *)uid; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/NEMCCommunicationUtils.m b/YuMi/Modules/YMMessage/View/NEMCCommunicationUtils.m deleted file mode 100644 index ff51d137..00000000 --- a/YuMi/Modules/YMMessage/View/NEMCCommunicationUtils.m +++ /dev/null @@ -1,96 +0,0 @@ -// -// NEMCCommunicationUtils.m -// YUMI -// -// Created by zu on 2021/11/26. -// - -#import "NEMCCommunicationUtils.h" -#import "AttachmentMatrix.h" -#import "ClientDisposition.h" -#import "YUMIConstant.h" - -@implementation NEMCCommunicationUtils - -+ (NSString *)communicationSatisfperformance:(NIMMessage*)message { - NSString *text = @""; - switch (message.messageType) { - case NIMMessageTypeTip: - case NIMMessageTypeText: - text = message.text; - break; - case NIMMessageTypeAudio: - text = @"[语音]"; - break; - case NIMMessageTypeImage: - text = @"[图片]"; - break; - case NIMMessageTypeVideo: - text = @"[视频]"; - break; - case NIMMessageTypeLocation: - text = @"[位置]"; - break; - case NIMMessageTypeFile: - text = @"[文件]"; - break; - case NIMMessageTypeCustom: { - NIMCustomObject *obj = (NIMCustomObject *) message.messageObject; - AttachmentMatrix *attachment = (AttachmentMatrix *) obj.attachment; - if (attachment.first == IndividualityCommunicationGenre_Secretary) { - if (attachment.second == Custom_Message_Sub_Secretary_Router) { - text = attachment.data[@"title"]; - } - } else if(attachment.first == IndividualityCommunicationGenre_Gift) { - if (attachment.second == Custom_Message_Sub_Gift_Send) { - text = @"[礼物]"; - } - } else if(attachment.first == IndividualityCommunicationGenre_Hall) { - text = @"[您收到一条公会消息]"; - } else if(attachment.first == IndividualityCommunicationGenre_Member_Online && attachment.second == Custom_Message_Type_Attention_Member_Online) { - return @"您关注的TA上线了,快去围观吧~~~"; - } else if(attachment.first == IndividualityCommunicationGenre_Application_Share && attachment.second == Custom_Message_Sub_Application_Share_Room) { - return @"[分享房间]"; - }else if(attachment.first == IndividualityCommunicationGenre_User_UpGrade && (attachment.second == Custom_Message_Sub_User_UpGrade_Charm || attachment.second == Custom_Message_Sub_User_UpGrade_Exper)) { - return @"[升级消息]"; - } else if(attachment.first == IndividualityCommunicationGenre_Tweet && attachment.second == Custom_Message_Sub_Tweet_News) { - return @"[推文消息]"; - } else if(attachment.first == IndividualityCommunicationGenre_FindNew && attachment.second == Custom_Message_Find_New_Greet_New_User) { - NSString * text = attachment.data[@"message"]; - return text.length > 0 ? text : @"[消息]"; - } else if(attachment.first == IndividualityCommunicationGenre_Monents && attachment.second == Custom_Message_Sub_Monents_Share) { - return @"[分享了一条动态]"; - } else if(attachment.first == IndividualityCommunicationGenre_RedPacket && attachment.second == Custom_Message_Sub_AllDiamandRedPacket) { - return @"[你收到一个全服红包]"; - } else { - text = @"[消息]"; - } - if (!text) { - text = message.text; - } - } - break; - default: - text = @"[未知消息]"; - break; - } - return text; -} - -+ (BOOL)isHLOfficalSequenceription:(NSString *)uid { - if (uid.integerValue <= 0) { - return NO; - } - if ([[ClientDisposition partowardsiciptowardsionDisposition].dispositionAbstract.officialMsgUids containsObject:uid]) { - return YES; - } - - if ([[ClientDisposition partowardsiciptowardsionDisposition].dispositionAbstract.officialAccountUids containsObject:uid]) { - return YES; - } - - return ([KeyWithType(KeyGenre_SecretaryUidKey) isEqualToString:uid] || [KeyWithType(KeyGenre_SystemNotifiUidKey) isEqualToString:uid] || [KeyWithType(KeyGenre_GuildUidKey) isEqualToString:uid]); - return NO; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/NEMCIntratemporalUtils.h b/YuMi/Modules/YMMessage/View/NEMCIntratemporalUtils.h deleted file mode 100644 index 2c1de7a2..00000000 --- a/YuMi/Modules/YMMessage/View/NEMCIntratemporalUtils.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// NEMCIntratemporalUtils.h -// YUMI -// -// Created by zu on 2021/11/26. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface NEMCIntratemporalUtils : NSObject - -+ (NSString *)showTime:(NSTimeInterval)msglastTime showDetail:(BOOL)showDetail; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/NEMCIntratemporalUtils.m b/YuMi/Modules/YMMessage/View/NEMCIntratemporalUtils.m deleted file mode 100644 index 113e6dad..00000000 --- a/YuMi/Modules/YMMessage/View/NEMCIntratemporalUtils.m +++ /dev/null @@ -1,96 +0,0 @@ -// -// NEMCIntratemporalUtils.m -// YUMI -// -// Created by zu on 2021/11/26. -// - -#import "NEMCIntratemporalUtils.h" - -@implementation NEMCIntratemporalUtils - -+ (NSString*)showTime:(NSTimeInterval) msglastTime showDetail:(BOOL)showDetail -{ - - NSDate * nowDate = [NSDate date]; - NSDate * msgDate = [NSDate dateWithTimeIntervalSince1970:msglastTime]; - NSString *result = nil; - NSCalendarUnit components = (NSCalendarUnit)(NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitWeekday|NSCalendarUnitHour | NSCalendarUnitMinute); - NSDateComponents *nowDateComponents = [[NSCalendar currentCalendar] components:components fromDate:nowDate]; - NSDateComponents *msgDateComponents = [[NSCalendar currentCalendar] components:components fromDate:msgDate]; - - NSInteger hour = msgDateComponents.hour; - double OnedayTimeIntervalValue = 24*60*60; - - result = [self acquirePeriodHLOfIntrtowardsemporal:hour withMinute:msgDateComponents.minute]; - if (hour > 12) - { - hour = hour - 12; - } - - BOOL isSameMonth = (nowDateComponents.year == msgDateComponents.year) && (nowDateComponents.month == msgDateComponents.month); - - if(isSameMonth && (nowDateComponents.day == msgDateComponents.day)) - { - result = [[NSString alloc] initWithFormat:@"%@ %zd:%02d",result,hour,(int)msgDateComponents.minute]; - } - else if(isSameMonth && (nowDateComponents.day == (msgDateComponents.day+1))) - { - result = showDetail? [[NSString alloc] initWithFormat:@"昨天%@ %zd:%02d",result,hour,(int)msgDateComponents.minute] : YMLocalizedString(@"NIM_Time_Utils_1"); - } - else if(isSameMonth && (nowDateComponents.day == (msgDateComponents.day+2))) - { - result = showDetail? [[NSString alloc] initWithFormat:@"前天%@ %zd:%02d",result,hour,(int)msgDateComponents.minute] : YMLocalizedString(@"NIM_Time_Utils_3"); - } - else if([nowDate timeIntervalSinceDate:msgDate] < 7 * OnedayTimeIntervalValue) - { - NSString *weekDay = [self weekdayBWStt:msgDateComponents.weekday]; - result = showDetail? [weekDay stringByAppendingFormat:@"%@ %zd:%02d",result,hour,(int)msgDateComponents.minute] : weekDay; - } - else - { - NSString *day = [NSString stringWithFormat:@"%zd-%zd-%zd", msgDateComponents.year, msgDateComponents.month, msgDateComponents.day]; - result = showDetail? [day stringByAppendingFormat:@"%@ %zd:%02d",result,hour,(int)msgDateComponents.minute]:day; - } - return result; -} - -#pragma mark - Private - -+ (NSString *)acquirePeriodHLOfIntrtowardsemporal:(NSInteger)time withMinute:(NSInteger)minute -{ - NSInteger totalMin = time *60 + minute; - NSString *showPeriodOfTime = @""; - if (totalMin > 0 && totalMin <= 5 * 60) - { - showPeriodOfTime = YMLocalizedString(@"NIM_Time_Utils_4"); - } - else if (totalMin > 5 * 60 && totalMin < 12 * 60) - { - showPeriodOfTime = YMLocalizedString(@"NIM_Time_Utils_5"); - } - else if (totalMin >= 12 * 60 && totalMin <= 18 * 60) - { - showPeriodOfTime = YMLocalizedString(@"NIM_Time_Utils_6"); - } - else if ((totalMin > 18 * 60 && totalMin <= (23 * 60 + 59)) || totalMin == 0) - { - showPeriodOfTime = YMLocalizedString(@"NIM_Time_Utils_7"); - } - return showPeriodOfTime; -} - -+(NSString*)weekdayBWStt:(NSInteger)dayOfWeek -{ - static NSDictionary *daysOfWeekDict = nil; - daysOfWeekDict = @{@(1):YMLocalizedString(@"NIM_Time_Utils_8"), - @(2):YMLocalizedString(@"NIM_Time_Utils_9"), - @(3):YMLocalizedString(@"NIM_Time_Utils_10"), - @(4):YMLocalizedString(@"NIM_Time_Utils_11"), - @(5):YMLocalizedString(@"NIM_Time_Utils_12"), - @(6):YMLocalizedString(@"NIM_Time_Utils_13"), - @(7):YMLocalizedString(@"NIM_Time_Utils_14"),}; - return [daysOfWeekDict objectForKey:@(dayOfWeek)]; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/NIMMessageMaker.h b/YuMi/Modules/YMMessage/View/NIMMessageMaker.h new file mode 100644 index 00000000..189c89a9 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/NIMMessageMaker.h @@ -0,0 +1,34 @@ +// +// NIMMessageMaker.h +// YUMI +// +// Created by zu on 2021/11/28. +// + +#import +#import + +@interface NIMMessageMaker : NSObject + ++ (NIMMessage*)msgWithText:(NSString *)text; + ++ (NIMMessage *)msgWithAudio:(NSString *)filePath; + ++ (NIMMessage *)msgWithImage:(UIImage *)image; + ++ (NIMMessage *)msgWithImagePath:(NSString *)path; + ++ (NIMMessage *)msgWithImageData:(NSData *)data extension:(NSString *)extension; + ++ (NIMMessage *)msgWithVideo:(NSString *)filePath; + +@end + + +@interface NIMCommentMaker : NSObject + ++ (NIMQuickComment *)commentWithType:(int64_t)type + content:(NSString *)content + ext:(NSString *)ext; + +@end diff --git a/YuMi/Modules/YMMessage/View/NIMMessageMaker.m b/YuMi/Modules/YMMessage/View/NIMMessageMaker.m new file mode 100644 index 00000000..f5d40546 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/NIMMessageMaker.m @@ -0,0 +1,121 @@ +// +// NIMMessageMaker.m +// YUMI +// +// Created by zu on 2021/11/28. +// + +#import "NIMMessageMaker.h" +#import "YUMIConstant.h" + +@implementation NIMMessageMaker + ++ (NIMMessage*)msgWithText:(NSString*)text +{ + NIMMessage *textMessage = [[NIMMessage alloc] init]; + textMessage.text = text; + [self setupMessage:textMessage]; + return textMessage; +} + ++ (NIMMessage*)msgWithAudio:(NSString*)filePath +{ + NIMAudioObject *audioObject = [[NIMAudioObject alloc] initWithSourcePath:filePath scene:NIMNOSSceneTypeMessage]; + NIMMessage *message = [[NIMMessage alloc] init]; + message.messageObject = audioObject; + message.text = YMLocalizedString(@"NIMMessageMaker0"); + [self setupMessage:message]; + return message; +} + ++ (NIMMessage*)msgWithVideo:(NSString*)filePath +{ + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; + [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"]; + NSString *dateString = [dateFormatter stringFromDate:[NSDate date]]; + NIMVideoObject *videoObject = [[NIMVideoObject alloc] initWithSourcePath:filePath scene:NIMNOSSceneTypeMessage]; + videoObject.displayName = [NSString stringWithFormat:@"视频发送于%@", dateString]; + NIMMessage *message = [[NIMMessage alloc] init]; + message.messageObject = videoObject; + message.apnsContent = YMLocalizedString(@"NIMMessageMaker2"); + [self setupMessage:message]; + return message; +} + ++ (NIMMessage*)msgWithImage:(UIImage*)image +{ + NIMImageObject *imageObject = [[NIMImageObject alloc] initWithImage:image scene:NIMNOSSceneTypeMessage]; + NIMImageOption *option = [[NIMImageOption alloc] init]; + option.compressQuality = 0.7; + imageObject.option = option; + return [NIMMessageMaker generateImageMessage:imageObject]; +} + ++ (NIMMessage *)msgWithImagePath:(NSString*)path +{ + NIMImageObject * imageObject = [[NIMImageObject alloc] initWithFilepath:path scene:NIMNOSSceneTypeMessage]; + return [NIMMessageMaker generateImageMessage:imageObject]; +} + ++ (NIMMessage *)msgWithImageData:(NSData *)data extension:(NSString *)extension +{ + NIMImageObject *imageObject = [[NIMImageObject alloc] initWithData:data extension:extension]; + return [NIMMessageMaker generateImageMessage:imageObject]; +} + ++ (NIMMessage *)generateImageMessage:(NIMImageObject *)imageObject +{ + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; + [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"]; + NSString *dateString = [dateFormatter stringFromDate:[NSDate date]]; + imageObject.displayName = [NSString stringWithFormat:@"图片发送于%@", dateString]; + NIMMessage *message = [[NIMMessage alloc] init]; + message.messageObject = imageObject; + message.apnsContent = YMLocalizedString(@"NIMMessageMaker4"); + [self setupMessage:message]; + return message; +} + ++ (void)setupMessage:(NIMMessage *)message +{ + message.apnsPayload = @{ + @"apns-collapse-id": message.messageId, + }; + + NIMMessageSetting *setting = [[NIMMessageSetting alloc] init]; + setting.scene = NIMNOSSceneTypeMessage; + setting.apnsEnabled = YES; + message.setting = setting; + + NIMAntiSpamOption *option = [NIMAntiSpamOption new]; + option.yidunEnabled = YES; + option.businessId = KeyWithType(keyType_YiDunBussinessId); + message.antiSpamOption = option; +} + + +@end + + +@implementation NIMCommentMaker + ++ (NIMQuickComment *)commentWithType:(int64_t)type + content:(NSString *)content + ext:(NSString *)ext +{ + NIMQuickComment *comment = [[NIMQuickComment alloc] init]; + comment.ext = ext; + NIMQuickCommentSetting *setting = [[NIMQuickCommentSetting alloc] init]; + setting.needPush = YES; + setting.needBadge = YES; + setting.pushTitle = YMLocalizedString(@"NIMMessageMaker5"); + setting.pushContent = content; + setting.pushPayload = @{ + @"key" : @"value" + }; + comment.setting = setting; + comment.replyType = type; + return comment; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/NIMMessageUtils.h b/YuMi/Modules/YMMessage/View/NIMMessageUtils.h new file mode 100644 index 00000000..9ef0c8e3 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/NIMMessageUtils.h @@ -0,0 +1,22 @@ +// +// NIMMessageUtils.h +// YUMI +// +// Created by zu on 2021/11/26. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface NIMMessageUtils : NSObject + ++ (NSString *)messageContent:(NIMMessage*)message; + +///是否是官方账号 ++ (BOOL)isOfficalAccount:(NSString *)uid; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/NIMMessageUtils.m b/YuMi/Modules/YMMessage/View/NIMMessageUtils.m new file mode 100644 index 00000000..88f85c16 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/NIMMessageUtils.m @@ -0,0 +1,96 @@ +// +// NIMMessageUtils.m +// YUMI +// +// Created by zu on 2021/11/26. +// + +#import "NIMMessageUtils.h" +#import "AttachmentModel.h" +#import "ClientConfig.h" +#import "YUMIConstant.h" + +@implementation NIMMessageUtils + ++ (NSString *)messageContent:(NIMMessage*)message { + NSString *text = @""; + switch (message.messageType) { + case NIMMessageTypeTip: + case NIMMessageTypeText: + text = message.text; + break; + case NIMMessageTypeAudio: + text = @"[语音]"; + break; + case NIMMessageTypeImage: + text = @"[图片]"; + break; + case NIMMessageTypeVideo: + text = @"[视频]"; + break; + case NIMMessageTypeLocation: + text = @"[位置]"; + break; + case NIMMessageTypeFile: + text = @"[文件]"; + break; + case NIMMessageTypeCustom: { + NIMCustomObject *obj = (NIMCustomObject *) message.messageObject; + AttachmentModel *attachment = (AttachmentModel *) obj.attachment; + if (attachment.first == CustomMessageType_Secretary) { + if (attachment.second == Custom_Message_Sub_Secretary_Router) { + text = attachment.data[@"title"]; + } + } else if(attachment.first == CustomMessageType_Gift) { + if (attachment.second == Custom_Message_Sub_Gift_Send) { + text = @"[礼物]"; + } + } else if(attachment.first == CustomMessageType_Hall) { + text = @"[您收到一条公会消息]"; + } else if(attachment.first == CustomMessageType_Member_Online && attachment.second == Custom_Message_Type_Attention_Member_Online) { + return @"您关注的TA上线了,快去围观吧~~~"; + } else if(attachment.first == CustomMessageType_Application_Share && attachment.second == Custom_Message_Sub_Application_Share_Room) { + return @"[分享房间]"; + }else if(attachment.first == CustomMessageType_User_UpGrade && (attachment.second == Custom_Message_Sub_User_UpGrade_Charm || attachment.second == Custom_Message_Sub_User_UpGrade_Exper)) { + return @"[升级消息]"; + } else if(attachment.first == CustomMessageType_Tweet && attachment.second == Custom_Message_Sub_Tweet_News) { + return @"[推文消息]"; + } else if(attachment.first == CustomMessageType_FindNew && attachment.second == Custom_Message_Find_New_Greet_New_User) { + NSString * text = attachment.data[@"message"]; + return text.length > 0 ? text : @"[消息]"; + } else if(attachment.first == CustomMessageType_Monents && attachment.second == Custom_Message_Sub_Monents_Share) { + return @"[分享了一条动态]"; + } else if(attachment.first == CustomMessageType_RedPacket && attachment.second == Custom_Message_Sub_AllDiamandRedPacket) { + return @"[你收到一个全服红包]"; + } else { + text = @"[消息]"; + } + if (!text) { + text = message.text; + } + } + break; + default: + text = @"[未知消息]"; + break; + } + return text; +} + ++ (BOOL)isOfficalAccount:(NSString *)uid { + if (uid.integerValue <= 0) { + return NO; + } + if ([[ClientConfig shareConfig].configInfo.officialMsgUids containsObject:uid]) { + return YES; + } + + if ([[ClientConfig shareConfig].configInfo.officialAccountUids containsObject:uid]) { + return YES; + } + + return ([KeyWithType(KeyType_SecretaryUidKey) isEqualToString:uid] || [KeyWithType(KeyType_SystemNotifiUidKey) isEqualToString:uid] || [KeyWithType(KeyType_GuildUidKey) isEqualToString:uid]); + return NO; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/NIMTimeUtils.h b/YuMi/Modules/YMMessage/View/NIMTimeUtils.h new file mode 100644 index 00000000..37b5592d --- /dev/null +++ b/YuMi/Modules/YMMessage/View/NIMTimeUtils.h @@ -0,0 +1,18 @@ +// +// NIMTimeUtils.h +// YUMI +// +// Created by zu on 2021/11/26. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface NIMTimeUtils : NSObject + ++ (NSString *)showTime:(NSTimeInterval)msglastTime showDetail:(BOOL)showDetail; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/NIMTimeUtils.m b/YuMi/Modules/YMMessage/View/NIMTimeUtils.m new file mode 100644 index 00000000..0b6832ef --- /dev/null +++ b/YuMi/Modules/YMMessage/View/NIMTimeUtils.m @@ -0,0 +1,96 @@ +// +// NIMTimeUtils.m +// YUMI +// +// Created by zu on 2021/11/26. +// + +#import "NIMTimeUtils.h" + +@implementation NIMTimeUtils + ++ (NSString*)showTime:(NSTimeInterval) msglastTime showDetail:(BOOL)showDetail +{ + //今天的时间 + NSDate * nowDate = [NSDate date]; + NSDate * msgDate = [NSDate dateWithTimeIntervalSince1970:msglastTime]; + NSString *result = nil; + NSCalendarUnit components = (NSCalendarUnit)(NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitWeekday|NSCalendarUnitHour | NSCalendarUnitMinute); + NSDateComponents *nowDateComponents = [[NSCalendar currentCalendar] components:components fromDate:nowDate]; + NSDateComponents *msgDateComponents = [[NSCalendar currentCalendar] components:components fromDate:msgDate]; + + NSInteger hour = msgDateComponents.hour; + double OnedayTimeIntervalValue = 24*60*60; //一天的秒数 + + result = [self getPeriodOfTime:hour withMinute:msgDateComponents.minute]; + if (hour > 12) + { + hour = hour - 12; + } + + BOOL isSameMonth = (nowDateComponents.year == msgDateComponents.year) && (nowDateComponents.month == msgDateComponents.month); + + if(isSameMonth && (nowDateComponents.day == msgDateComponents.day)) //同一天,显示时间 + { + result = [[NSString alloc] initWithFormat:@"%@ %zd:%02d",result,hour,(int)msgDateComponents.minute]; + } + else if(isSameMonth && (nowDateComponents.day == (msgDateComponents.day+1)))//昨天 + { + result = showDetail? [[NSString alloc] initWithFormat:@"昨天%@ %zd:%02d",result,hour,(int)msgDateComponents.minute] : YMLocalizedString(@"NIMTimeUtils1"); + } + else if(isSameMonth && (nowDateComponents.day == (msgDateComponents.day+2))) //前天 + { + result = showDetail? [[NSString alloc] initWithFormat:@"前天%@ %zd:%02d",result,hour,(int)msgDateComponents.minute] : YMLocalizedString(@"NIMTimeUtils3"); + } + else if([nowDate timeIntervalSinceDate:msgDate] < 7 * OnedayTimeIntervalValue)//一周内 + { + NSString *weekDay = [self weekdayStr:msgDateComponents.weekday]; + result = showDetail? [weekDay stringByAppendingFormat:@"%@ %zd:%02d",result,hour,(int)msgDateComponents.minute] : weekDay; + } + else//显示日期 + { + NSString *day = [NSString stringWithFormat:@"%zd-%zd-%zd", msgDateComponents.year, msgDateComponents.month, msgDateComponents.day]; + result = showDetail? [day stringByAppendingFormat:@"%@ %zd:%02d",result,hour,(int)msgDateComponents.minute]:day; + } + return result; +} + +#pragma mark - Private + ++ (NSString *)getPeriodOfTime:(NSInteger)time withMinute:(NSInteger)minute +{ + NSInteger totalMin = time *60 + minute; + NSString *showPeriodOfTime = @""; + if (totalMin > 0 && totalMin <= 5 * 60) + { + showPeriodOfTime = YMLocalizedString(@"NIMTimeUtils4"); + } + else if (totalMin > 5 * 60 && totalMin < 12 * 60) + { + showPeriodOfTime = YMLocalizedString(@"NIMTimeUtils5"); + } + else if (totalMin >= 12 * 60 && totalMin <= 18 * 60) + { + showPeriodOfTime = YMLocalizedString(@"NIMTimeUtils6"); + } + else if ((totalMin > 18 * 60 && totalMin <= (23 * 60 + 59)) || totalMin == 0) + { + showPeriodOfTime = YMLocalizedString(@"NIMTimeUtils7"); + } + return showPeriodOfTime; +} + ++(NSString*)weekdayStr:(NSInteger)dayOfWeek +{ + static NSDictionary *daysOfWeekDict = nil; + daysOfWeekDict = @{@(1):YMLocalizedString(@"NIMTimeUtils8"), + @(2):YMLocalizedString(@"NIMTimeUtils9"), + @(3):YMLocalizedString(@"NIMTimeUtils10"), + @(4):YMLocalizedString(@"NIMTimeUtils11"), + @(5):YMLocalizedString(@"NIMTimeUtils12"), + @(6):YMLocalizedString(@"NIMTimeUtils13"), + @(7):YMLocalizedString(@"NIMTimeUtils14"),}; + return [daysOfWeekDict objectForKey:@(dayOfWeek)]; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/NIMViews/NEMCBadgeRegard.h b/YuMi/Modules/YMMessage/View/NIMViews/NEMCBadgeRegard.h deleted file mode 100644 index 2bf6e6a2..00000000 --- a/YuMi/Modules/YMMessage/View/NIMViews/NEMCBadgeRegard.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// NEMCBadgeRegard.h -// NIMKit -// -// Created by chris on 15/2/12. -// Copyright (c) 2015年 Netease. All rights reserved. -// - -#import - -@interface NEMCBadgeRegard : UIView - -@property (nonatomic, copy) NSString *badgeValue; - -+ (instancetype)viewAboutQuantityPrompt:(NSString *)badgeValue; - - -@end diff --git a/YuMi/Modules/YMMessage/View/NIMViews/NEMCBadgeRegard.m b/YuMi/Modules/YMMessage/View/NIMViews/NEMCBadgeRegard.m deleted file mode 100644 index 4c41a410..00000000 --- a/YuMi/Modules/YMMessage/View/NIMViews/NEMCBadgeRegard.m +++ /dev/null @@ -1,167 +0,0 @@ -// -// NEMCBadgeRegard.m -// NIMKit -// -// Created by chris on 15/2/12. -// Copyright (c) 2015年 Netease. All rights reserved. -// - - -#import "NEMCBadgeRegard.h" - -@interface NEMCBadgeRegard () - -@property (strong) UIColor *badgeBackgroundColor; - -@property (strong) UIColor *borderColor; - -@property (strong) UIColor *quantityEssayPrettify; - -@property (nonatomic) UIFont *quantityEssayLetterform; - -@property (nonatomic) CGFloat quantityApexStuffing; - -@property (nonatomic) CGFloat quantityContraryStuffing; - -@property (nonatomic) CGFloat whiteCircleExtents; - -@end - -@implementation NEMCBadgeRegard - -+ (instancetype)viewAboutQuantityPrompt:(NSString *)badgeValue{ - if (!badgeValue) { - badgeValue = @""; - } - NEMCBadgeRegard *instance = [[NEMCBadgeRegard alloc] init]; - instance.frame = [instance frameAboutBWStt:badgeValue]; - instance.badgeValue = badgeValue; - - return instance; -} - -- (id)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - self.backgroundColor = [UIColor clearColor]; - - _badgeBackgroundColor = [UIColor colorWithRed:((float)((0xFF5B55 & 0xFF0000) >> 16))/255.0 green:((float)((0xFF5B55 & 0xFF00) >> 8))/255.0 blue:((float)(0xFF5B55 & 0xFF))/255.0 alpha:1.0]; - _borderColor = [UIColor colorWithRed:((float)((0xFF5B55 & 0xFF0000) >> 16))/255.0 green:((float)((0xFF5B55 & 0xFF00) >> 8))/255.0 blue:((float)(0xFF5B55 & 0xFF))/255.0 alpha:1.0]; - _quantityEssayPrettify = [UIColor whiteColor]; - _quantityEssayLetterform = [UIFont boldSystemFontOfSize:11]; - _whiteCircleExtents = 0.f; - } - return self; -} - - -- (void)drawRect:(CGRect)rect -{ - CGContextRef context = UIGraphicsGetCurrentContext(); - CGContextSaveGState(context); - if ([[self badgeValue] length]) { - [self drawAboutStowardsisfperformance:rect context:context]; - }else{ - [self drawAboutOptowardssideStowardsisfperformance:rect context:context]; - } - CGContextRestoreGState(context); -} - -- (void)setBadgeValue:(NSString *)badgeValue { - _badgeValue = badgeValue; - if (_badgeValue.integerValue > 9) { - _quantityContraryStuffing = 6.f; - }else{ - _quantityContraryStuffing = 2.f; - } - _quantityApexStuffing = 2.f; - - self.frame = [self frameAboutBWStt:badgeValue]; - - [self setNeedsDisplay]; -} - -- (CGSize)badgeDimensionAboutBWStt:(NSString *)badgeValue{ - if (!badgeValue || badgeValue.length == 0) { - return CGSizeZero; - } - CGSize size = [badgeValue sizeWithAttributes:@{NSFontAttributeName:self.quantityEssayLetterform}]; - if (size.width < size.height) { - size = CGSizeMake(size.height, size.height); - } - return size; -} - -- (CGRect)frameAboutBWStt:(NSString *)badgeValue{ - CGSize badgeSize = [self badgeDimensionAboutBWStt:badgeValue]; - CGRect badgeFrame = CGRectMake(self.frame.origin.x, self.frame.origin.y, badgeSize.width + self.quantityContraryStuffing * 2 + self.whiteCircleExtents * 2, badgeSize.height + self.quantityApexStuffing * 2 + self.whiteCircleExtents * 2); - return badgeFrame; -} - - - -#pragma mark - Private -- (void)drawAboutStowardsisfperformance:(CGRect)rect context:(CGContextRef)context{ - CGRect bodyFrame = self.bounds; - CGRect bkgFrame = CGRectInset(self.bounds, self.whiteCircleExtents, self.whiteCircleExtents); - CGRect badgeSize = CGRectInset(self.bounds, self.whiteCircleExtents + self.quantityContraryStuffing, self.whiteCircleExtents + self.quantityApexStuffing); - if ([self badgeBackgroundColor]) { - CGContextSetFillColorWithColor(context, [self.borderColor CGColor]); - if ([self badgeValue].integerValue > 9) { - CGFloat circleWith = bodyFrame.size.height; - CGFloat totalWidth = bodyFrame.size.width; - CGFloat diffWidth = totalWidth - circleWith; - CGPoint originPoint = bodyFrame.origin; - CGRect leftCicleFrame = CGRectMake(originPoint.x, originPoint.y, circleWith, circleWith); - CGRect centerFrame = CGRectMake(originPoint.x +circleWith/2, originPoint.y, diffWidth, circleWith); - CGRect rightCicleFrame = CGRectMake(originPoint.x +(totalWidth - circleWith), originPoint.y, circleWith, circleWith); - CGContextFillEllipseInRect(context, leftCicleFrame); - CGContextFillRect(context, centerFrame); - CGContextFillEllipseInRect(context, rightCicleFrame); - - }else{ - CGContextFillEllipseInRect(context, bodyFrame); - } - - CGContextSetFillColorWithColor(context, [[self badgeBackgroundColor] CGColor]); - if ([self badgeValue].integerValue > 9) { - CGFloat circleWith = bkgFrame.size.height; - CGFloat totalWidth = bkgFrame.size.width; - CGFloat diffWidth = totalWidth - circleWith; - CGPoint originPoint = bkgFrame.origin; - CGRect leftCicleFrame = CGRectMake(originPoint.x, originPoint.y, circleWith, circleWith); - CGRect centerFrame = CGRectMake(originPoint.x +circleWith/2, originPoint.y, diffWidth, circleWith); - CGRect rightCicleFrame = CGRectMake(originPoint.x +(totalWidth - circleWith), originPoint.y, circleWith, circleWith); - CGContextFillEllipseInRect(context, leftCicleFrame); - CGContextFillRect(context, centerFrame); - CGContextFillEllipseInRect(context, rightCicleFrame); - }else{ - CGContextFillEllipseInRect(context, bkgFrame); - } - } - - CGContextSetFillColorWithColor(context, [[self quantityEssayPrettify] CGColor]); - NSMutableParagraphStyle *badgeTextStyle = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy]; - [badgeTextStyle setLineBreakMode:NSLineBreakByWordWrapping]; - [badgeTextStyle setAlignment:NSTextAlignmentCenter]; - - - NSDictionary *badgeTextAttributes = @{ - NSFontAttributeName: [self quantityEssayLetterform], - NSForegroundColorAttributeName: [self quantityEssayPrettify], - NSParagraphStyleAttributeName: badgeTextStyle, - }; - [[self badgeValue] drawInRect:CGRectMake(self.whiteCircleExtents + self.quantityContraryStuffing, - self.whiteCircleExtents + self.quantityApexStuffing, - badgeSize.size.width, badgeSize.size.height) - withAttributes:badgeTextAttributes]; -} - - -- (void)drawAboutOptowardssideStowardsisfperformance:(CGRect)rect context:(CGContextRef)context{ - CGRect bodyFrame = self.bounds; - CGContextSetFillColorWithColor(context, [[UIColor redColor] CGColor]); - CGContextFillEllipseInRect(context, bodyFrame); -} - -@end diff --git a/YuMi/Modules/YMMessage/View/NIMViews/NIMBadgeView.h b/YuMi/Modules/YMMessage/View/NIMViews/NIMBadgeView.h new file mode 100644 index 00000000..c6032322 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/NIMViews/NIMBadgeView.h @@ -0,0 +1,18 @@ +// +// NIMBadgeView.h +// NIMKit +// +// Created by chris on 15/2/12. +// Copyright (c) 2015年 Netease. All rights reserved. +// + +#import + +@interface NIMBadgeView : UIView + +@property (nonatomic, copy) NSString *badgeValue; + ++ (instancetype)viewWithBadgeTip:(NSString *)badgeValue; + + +@end diff --git a/YuMi/Modules/YMMessage/View/NIMViews/NIMBadgeView.m b/YuMi/Modules/YMMessage/View/NIMViews/NIMBadgeView.m new file mode 100644 index 00000000..c6ebd852 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/NIMViews/NIMBadgeView.m @@ -0,0 +1,167 @@ +// +// NIMBadgeView.m +// NIMKit +// +// Created by chris on 15/2/12. +// Copyright (c) 2015年 Netease. All rights reserved. +// + + +#import "NIMBadgeView.h" + +@interface NIMBadgeView () + +@property (strong) UIColor *badgeBackgroundColor; + +@property (strong) UIColor *borderColor; + +@property (strong) UIColor *badgeTextColor; + +@property (nonatomic) UIFont *badgeTextFont; + +@property (nonatomic) CGFloat badgeTopPadding; //数字顶部到红圈的距离 + +@property (nonatomic) CGFloat badgeLeftPadding; //数字左部到红圈的距离 + +@property (nonatomic) CGFloat whiteCircleWidth; //最外层白圈的宽度 + +@end + +@implementation NIMBadgeView + ++ (instancetype)viewWithBadgeTip:(NSString *)badgeValue{ + if (!badgeValue) { + badgeValue = @""; + } + NIMBadgeView *instance = [[NIMBadgeView alloc] init]; + instance.frame = [instance frameWithStr:badgeValue]; + instance.badgeValue = badgeValue; + + return instance; +} + +- (id)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + self.backgroundColor = [UIColor clearColor]; + // 0xFF5B55 + _badgeBackgroundColor = [UIColor colorWithRed:((float)((0xFF5B55 & 0xFF0000) >> 16))/255.0 green:((float)((0xFF5B55 & 0xFF00) >> 8))/255.0 blue:((float)(0xFF5B55 & 0xFF))/255.0 alpha:1.0]; + _borderColor = [UIColor colorWithRed:((float)((0xFF5B55 & 0xFF0000) >> 16))/255.0 green:((float)((0xFF5B55 & 0xFF00) >> 8))/255.0 blue:((float)(0xFF5B55 & 0xFF))/255.0 alpha:1.0]; + _badgeTextColor = [UIColor whiteColor]; + _badgeTextFont = [UIFont boldSystemFontOfSize:11]; + _whiteCircleWidth = 0.f; + } + return self; +} + + +- (void)drawRect:(CGRect)rect +{ + CGContextRef context = UIGraphicsGetCurrentContext(); + CGContextSaveGState(context); + if ([[self badgeValue] length]) { + [self drawWithContent:rect context:context]; + }else{ + [self drawWithOutContent:rect context:context]; + } + CGContextRestoreGState(context); +} + +- (void)setBadgeValue:(NSString *)badgeValue { + _badgeValue = badgeValue; + if (_badgeValue.integerValue > 9) { + _badgeLeftPadding = 6.f; + }else{ + _badgeLeftPadding = 2.f; + } + _badgeTopPadding = 2.f; + + self.frame = [self frameWithStr:badgeValue]; + + [self setNeedsDisplay]; +} + +- (CGSize)badgeSizeWithStr:(NSString *)badgeValue{ + if (!badgeValue || badgeValue.length == 0) { + return CGSizeZero; + } + CGSize size = [badgeValue sizeWithAttributes:@{NSFontAttributeName:self.badgeTextFont}]; + if (size.width < size.height) { + size = CGSizeMake(size.height, size.height); + } + return size; +} + +- (CGRect)frameWithStr:(NSString *)badgeValue{ + CGSize badgeSize = [self badgeSizeWithStr:badgeValue]; + CGRect badgeFrame = CGRectMake(self.frame.origin.x, self.frame.origin.y, badgeSize.width + self.badgeLeftPadding * 2 + self.whiteCircleWidth * 2, badgeSize.height + self.badgeTopPadding * 2 + self.whiteCircleWidth * 2);//8=2*2(红圈-文字)+2*2(白圈-红圈) + return badgeFrame; +} + + + +#pragma mark - Private +- (void)drawWithContent:(CGRect)rect context:(CGContextRef)context{ + CGRect bodyFrame = self.bounds; + CGRect bkgFrame = CGRectInset(self.bounds, self.whiteCircleWidth, self.whiteCircleWidth); + CGRect badgeSize = CGRectInset(self.bounds, self.whiteCircleWidth + self.badgeLeftPadding, self.whiteCircleWidth + self.badgeTopPadding); + if ([self badgeBackgroundColor]) {//外白色描边 + CGContextSetFillColorWithColor(context, [self.borderColor CGColor]); + if ([self badgeValue].integerValue > 9) { + CGFloat circleWith = bodyFrame.size.height; + CGFloat totalWidth = bodyFrame.size.width; + CGFloat diffWidth = totalWidth - circleWith; + CGPoint originPoint = bodyFrame.origin; + CGRect leftCicleFrame = CGRectMake(originPoint.x, originPoint.y, circleWith, circleWith); + CGRect centerFrame = CGRectMake(originPoint.x +circleWith/2, originPoint.y, diffWidth, circleWith); + CGRect rightCicleFrame = CGRectMake(originPoint.x +(totalWidth - circleWith), originPoint.y, circleWith, circleWith); + CGContextFillEllipseInRect(context, leftCicleFrame); + CGContextFillRect(context, centerFrame); + CGContextFillEllipseInRect(context, rightCicleFrame); + + }else{ + CGContextFillEllipseInRect(context, bodyFrame); + } + // badge背景色 + CGContextSetFillColorWithColor(context, [[self badgeBackgroundColor] CGColor]); + if ([self badgeValue].integerValue > 9) { + CGFloat circleWith = bkgFrame.size.height; + CGFloat totalWidth = bkgFrame.size.width; + CGFloat diffWidth = totalWidth - circleWith; + CGPoint originPoint = bkgFrame.origin; + CGRect leftCicleFrame = CGRectMake(originPoint.x, originPoint.y, circleWith, circleWith); + CGRect centerFrame = CGRectMake(originPoint.x +circleWith/2, originPoint.y, diffWidth, circleWith); + CGRect rightCicleFrame = CGRectMake(originPoint.x +(totalWidth - circleWith), originPoint.y, circleWith, circleWith); + CGContextFillEllipseInRect(context, leftCicleFrame); + CGContextFillRect(context, centerFrame); + CGContextFillEllipseInRect(context, rightCicleFrame); + }else{ + CGContextFillEllipseInRect(context, bkgFrame); + } + } + + CGContextSetFillColorWithColor(context, [[self badgeTextColor] CGColor]); + NSMutableParagraphStyle *badgeTextStyle = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy]; + [badgeTextStyle setLineBreakMode:NSLineBreakByWordWrapping]; + [badgeTextStyle setAlignment:NSTextAlignmentCenter]; + + + NSDictionary *badgeTextAttributes = @{ + NSFontAttributeName: [self badgeTextFont], + NSForegroundColorAttributeName: [self badgeTextColor], + NSParagraphStyleAttributeName: badgeTextStyle, + }; + [[self badgeValue] drawInRect:CGRectMake(self.whiteCircleWidth + self.badgeLeftPadding, + self.whiteCircleWidth + self.badgeTopPadding, + badgeSize.size.width, badgeSize.size.height) + withAttributes:badgeTextAttributes]; +} + + +- (void)drawWithOutContent:(CGRect)rect context:(CGContextRef)context{ + CGRect bodyFrame = self.bounds; + CGContextSetFillColorWithColor(context, [[UIColor redColor] CGColor]); + CGContextFillEllipseInRect(context, bodyFrame); +} + +@end diff --git a/YuMi/Modules/YMMessage/View/NIMViews/UITableView+NIMScrollToBottom.h b/YuMi/Modules/YMMessage/View/NIMViews/UITableView+NIMScrollToBottom.h index 51cbadce..8d69ec5e 100644 --- a/YuMi/Modules/YMMessage/View/NIMViews/UITableView+NIMScrollToBottom.h +++ b/YuMi/Modules/YMMessage/View/NIMViews/UITableView+NIMScrollToBottom.h @@ -10,5 +10,5 @@ @interface UITableView (NIMKit) -- (void)nim_scrollToExtreme:(BOOL)animation; +- (void)nim_scrollToBottom:(BOOL)animation; @end diff --git a/YuMi/Modules/YMMessage/View/NIMViews/UITableView+NIMScrollToBottom.m b/YuMi/Modules/YMMessage/View/NIMViews/UITableView+NIMScrollToBottom.m index 93068ed9..e52e6805 100644 --- a/YuMi/Modules/YMMessage/View/NIMViews/UITableView+NIMScrollToBottom.m +++ b/YuMi/Modules/YMMessage/View/NIMViews/UITableView+NIMScrollToBottom.m @@ -10,7 +10,7 @@ @implementation UITableView (NIMKit) -- (void)nim_scrollToExtreme:(BOOL)animation +- (void)nim_scrollToBottom:(BOOL)animation { dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ NSInteger row = [self numberOfRowsInSection:1] - 1; diff --git a/YuMi/Modules/YMMessage/View/NIMViews/UIView+NIM.h b/YuMi/Modules/YMMessage/View/NIMViews/UIView+NIM.h index 86bb7517..1fee6ca2 100644 --- a/YuMi/Modules/YMMessage/View/NIMViews/UIView+NIM.h +++ b/YuMi/Modules/YMMessage/View/NIMViews/UIView+NIM.h @@ -12,33 +12,66 @@ @property (nonatomic) CGFloat nim_left; - +/** + * Shortcut for frame.origin.y + * + * Sets frame.origin.y = top + */ @property (nonatomic) CGFloat nim_top; - +/** + * Shortcut for frame.origin.x + frame.size.width + * + * Sets frame.origin.x = right - frame.size.width + */ @property (nonatomic) CGFloat nim_right; - +/** + * Shortcut for frame.origin.y + frame.size.height + * + * Sets frame.origin.y = bottom - frame.size.height + */ @property (nonatomic) CGFloat nim_bottom; - +/** + * Shortcut for frame.size.width + * + * Sets frame.size.width = width + */ @property (nonatomic) CGFloat nim_width; - +/** + * Shortcut for frame.size.height + * + * Sets frame.size.height = height + */ @property (nonatomic) CGFloat nim_height; - +/** + * Shortcut for center.x + * + * Sets center.x = centerX + */ @property (nonatomic) CGFloat nim_centerX; - +/** + * Shortcut for center.y + * + * Sets center.y = centerY + */ @property (nonatomic) CGFloat nim_centerY; - +/** + * Shortcut for frame.origin + */ @property (nonatomic) CGPoint nim_origin; - +/** + * Shortcut for frame.size + */ @property (nonatomic) CGSize nim_size; -- (UIViewController *)nim_viewGovernancer; +//找到自己的vc +- (UIViewController *)nim_viewController; diff --git a/YuMi/Modules/YMMessage/View/NIMViews/UIView+NIM.m b/YuMi/Modules/YMMessage/View/NIMViews/UIView+NIM.m index 375896bc..1b9c4095 100644 --- a/YuMi/Modules/YMMessage/View/NIMViews/UIView+NIM.m +++ b/YuMi/Modules/YMMessage/View/NIMViews/UIView+NIM.m @@ -15,6 +15,7 @@ } +/////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setNim_left:(CGFloat)x { CGRect frame = self.frame; frame.origin.x = x; @@ -22,11 +23,13 @@ } +/////////////////////////////////////////////////////////////////////////////////////////////////// - (CGFloat)nim_top { return self.frame.origin.y; } +/////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setNim_top:(CGFloat)y { CGRect frame = self.frame; frame.origin.y = y; @@ -34,11 +37,13 @@ } +/////////////////////////////////////////////////////////////////////////////////////////////////// - (CGFloat)nim_right { return self.frame.origin.x + self.frame.size.width; } +/////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setNim_right:(CGFloat)right { CGRect frame = self.frame; frame.origin.x = right - frame.size.width; @@ -46,11 +51,13 @@ } +/////////////////////////////////////////////////////////////////////////////////////////////////// - (CGFloat)nim_bottom { return self.frame.origin.y + self.frame.size.height; } +/////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setNim_bottom:(CGFloat)bottom { CGRect frame = self.frame; frame.origin.y = bottom - frame.size.height; @@ -58,31 +65,37 @@ } +/////////////////////////////////////////////////////////////////////////////////////////////////// - (CGFloat)nim_centerX { return self.center.x; } +/////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setNim_centerX:(CGFloat)centerX { self.center = CGPointMake(centerX, self.center.y); } +/////////////////////////////////////////////////////////////////////////////////////////////////// - (CGFloat)nim_centerY { return self.center.y; } +/////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setNim_centerY:(CGFloat)centerY { self.center = CGPointMake(self.center.x, centerY); } +/////////////////////////////////////////////////////////////////////////////////////////////////// - (CGFloat)nim_width { return self.frame.size.width; } +/////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setNim_width:(CGFloat)width { CGRect frame = self.frame; frame.size.width = width; @@ -90,21 +103,25 @@ } +/////////////////////////////////////////////////////////////////////////////////////////////////// - (CGFloat)nim_height { return self.frame.size.height; } +/////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setNim_height:(CGFloat)height { CGRect frame = self.frame; frame.size.height = height; self.frame = frame; } +/////////////////////////////////////////////////////////////////////////////////////////////////// - (CGPoint)nim_origin { return self.frame.origin; } +/////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setNim_origin:(CGPoint)origin { CGRect frame = self.frame; frame.origin = origin; @@ -112,11 +129,13 @@ } +/////////////////////////////////////////////////////////////////////////////////////////////////// - (CGSize)nim_size { return self.frame.size; } +/////////////////////////////////////////////////////////////////////////////////////////////////// - (void)setNim_size:(CGSize)size { CGRect frame = self.frame; frame.size = size; @@ -124,7 +143,7 @@ } -- (UIViewController *)nim_viewGovernancer{ +- (UIViewController *)nim_viewController{ for (UIView* next = self; next; next = next.superview) { UIResponder* nextResponder = [next nextResponder]; if ([nextResponder isKindOfClass:[UIViewController class]]) { diff --git a/YuMi/Modules/YMMessage/View/SayHello/Api/Api+SayHello.h b/YuMi/Modules/YMMessage/View/SayHello/Api/Api+SayHello.h index e3d0e6d0..21362bb5 100644 --- a/YuMi/Modules/YMMessage/View/SayHello/Api/Api+SayHello.h +++ b/YuMi/Modules/YMMessage/View/SayHello/Api/Api+SayHello.h @@ -11,16 +11,30 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (SayHello) -+ (void)shuntProttypeAbstractimplementtion:(HttpRequestHelperCompletion)complection; +/// 打招呼主播评级信息 +/// @param complection 完成 ++ (void)shuntLevleInfoComplection:(HttpRequestHelperCompletion)complection; -+ (void)shuntEnableimplementtion:(HttpRequestHelperCompletion)complection enable:(NSString *)enable; +/// 开启关注自动打招呼 +/// @param complection 完成 +/// @param enable 1 开启 0 关闭 ++ (void)shuntEnableComplection:(HttpRequestHelperCompletion)complection enable:(NSString *)enable; -+ (void)shuntSttowardsementimplementtion:(HttpRequestHelperCompletion)complection page:(NSString *)page size:(NSString *)size; +/// 打招呼列表 +/// @param complection 完成 +/// @param page 当前页数 +/// @param size 当前页数 ++ (void)shuntListComplection:(HttpRequestHelperCompletion)complection page:(NSString *)page size:(NSString *)size; -+ (void)shuntTicktackChinwagimplementtion:(HttpRequestHelperCompletion)complection toUserId:(NSString *)toUserId; +/// 点击私聊按钮 +/// @param complection 完成 +/// @param toUserId 对方的uid ++ (void)shuntClickChatComplection:(HttpRequestHelperCompletion)complection toUserId:(NSString *)toUserId; -+ (void)shuntCorridoroComputtowardsionimplementtion:(HttpRequestHelperCompletion)complection; +/// 打招呼的人数 +/// @param complection 完成 ++ (void)shuntHelloCountComplection:(HttpRequestHelperCompletion)complection; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SayHello/Api/Api+SayHello.m b/YuMi/Modules/YMMessage/View/SayHello/Api/Api+SayHello.m index 0dad215d..4334f698 100644 --- a/YuMi/Modules/YMMessage/View/SayHello/Api/Api+SayHello.m +++ b/YuMi/Modules/YMMessage/View/SayHello/Api/Api+SayHello.m @@ -9,29 +9,43 @@ #import @implementation Api (SayHello) -+ (void)shuntProttypeAbstractimplementtion:(HttpRequestHelperCompletion)complection { - NSString * fang = [NSString stringFromBase64String:@"c2h1bnQvbGV2ZWxfaW5mbw=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, nil]; +/// 打招呼主播评级信息 +/// @param complection 完成 ++ (void)shuntLevleInfoComplection:(HttpRequestHelperCompletion)complection { + NSString * fang = [NSString stringFromBase64String:@"c2h1bnQvbGV2ZWxfaW5mbw=="];///c2h1bnQvbGV2ZWxfaW5mbw== + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, nil]; } -+ (void)shuntEnableimplementtion:(HttpRequestHelperCompletion)complection enable:(NSString *)enable { - NSString * fang = [NSString stringFromBase64String:@"c2h1bnQvZW5hYmxl"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__,enable, nil]; +/// 开启关注自动打招呼 +/// @param complection 完成 +/// @param enable 1 开启 0 关闭 ++ (void)shuntEnableComplection:(HttpRequestHelperCompletion)complection enable:(NSString *)enable { + NSString * fang = [NSString stringFromBase64String:@"c2h1bnQvZW5hYmxl"];//shunt/enable + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__,enable, nil]; } -+ (void)shuntSttowardsementimplementtion:(HttpRequestHelperCompletion)complection page:(NSString *)page size:(NSString *)size { +/// 打招呼列表 +/// @param complection 完成 +/// @param page 当前页数 +/// @param size 当前页数 ++ (void)shuntListComplection:(HttpRequestHelperCompletion)complection page:(NSString *)page size:(NSString *)size { NSString * fang = [NSString stringFromBase64String:@"c2h1bnQvbGlzdA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__,page, size, nil]; + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__,page, size, nil]; } -+ (void)shuntTicktackChinwagimplementtion:(HttpRequestHelperCompletion)complection toUserId:(NSString *)toUserId { +/// 点击私聊按钮 +/// @param complection 完成 +/// @param toUserId 对方的uid ++ (void)shuntClickChatComplection:(HttpRequestHelperCompletion)complection toUserId:(NSString *)toUserId { NSString * fang = [NSString stringFromBase64String:@"c2h1bnQvY2xpY2tfY2hhdA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__,toUserId, nil]; + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__,toUserId, nil]; } -+ (void)shuntCorridoroComputtowardsionimplementtion:(HttpRequestHelperCompletion)complection { - NSString * fang = [NSString stringFromBase64String:@"c2h1bnQvaGVsbG9fY291bnQ="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, nil]; +/// 打招呼的人数 +/// @param complection 完成 ++ (void)shuntHelloCountComplection:(HttpRequestHelperCompletion)complection { + NSString * fang = [NSString stringFromBase64String:@"c2h1bnQvaGVsbG9fY291bnQ="];///shunt/hello_count + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, nil]; } @end diff --git a/YuMi/Modules/YMMessage/View/SayHello/Model/InterlocutionSpeakHalloComputationMatrix.h b/YuMi/Modules/YMMessage/View/SayHello/Model/InterlocutionSpeakHalloComputationMatrix.h deleted file mode 100644 index 50993a7f..00000000 --- a/YuMi/Modules/YMMessage/View/SayHello/Model/InterlocutionSpeakHalloComputationMatrix.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// InterlocutionSpeakHalloComputationMatrix.h -// YUMI -// -// Created by YUMI on 2023/2/3. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface InterlocutionSpeakHalloComputationMatrix : NSObject -@property (nonatomic,assign) NSInteger helloCount; -@property (nonatomic,assign) BOOL visible; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SayHello/Model/InterlocutionSpeakHalloComputationMatrix.m b/YuMi/Modules/YMMessage/View/SayHello/Model/InterlocutionSpeakHalloComputationMatrix.m deleted file mode 100644 index d92d9664..00000000 --- a/YuMi/Modules/YMMessage/View/SayHello/Model/InterlocutionSpeakHalloComputationMatrix.m +++ /dev/null @@ -1,14 +0,0 @@ -// -// InterlocutionSpeakHalloComputationMatrix.m -// YUMI -// -// Created by YUMI on 2023/2/3. -// - -#import "InterlocutionSpeakHalloComputationMatrix.h" - -@implementation InterlocutionSpeakHalloComputationMatrix - - - -@end diff --git a/YuMi/Modules/YMMessage/View/SayHello/Model/InterlocutionSpeakHalloPrototypeMatrix.h b/YuMi/Modules/YMMessage/View/SayHello/Model/InterlocutionSpeakHalloPrototypeMatrix.h deleted file mode 100644 index 3e97d668..00000000 --- a/YuMi/Modules/YMMessage/View/SayHello/Model/InterlocutionSpeakHalloPrototypeMatrix.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// InterlocutionSpeakHalloPrototypeMatrix.h -// YUMI -// -// Created by YUMI on 2023/2/2. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface InterlocutionSpeakHalloPrototypeMatrix : NSObject -@property (nonatomic,copy) NSString *currentLevel; -@property (nonatomic,copy) NSString * currentMultiple; -@property (nonatomic,assign) BOOL enable; -@property (nonatomic,copy) NSString *desc; -@property (nonatomic,assign) NSInteger helloCount; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SayHello/Model/InterlocutionSpeakHalloPrototypeMatrix.m b/YuMi/Modules/YMMessage/View/SayHello/Model/InterlocutionSpeakHalloPrototypeMatrix.m deleted file mode 100644 index 7be842e9..00000000 --- a/YuMi/Modules/YMMessage/View/SayHello/Model/InterlocutionSpeakHalloPrototypeMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// InterlocutionSpeakHalloPrototypeMatrix.m -// YUMI -// -// Created by YUMI on 2023/2/2. -// - -#import "InterlocutionSpeakHalloPrototypeMatrix.h" - -@implementation InterlocutionSpeakHalloPrototypeMatrix - -@end diff --git a/YuMi/Modules/YMMessage/View/SayHello/Model/InterlocutionSpeakHalloStatementMatrix.h b/YuMi/Modules/YMMessage/View/SayHello/Model/InterlocutionSpeakHalloStatementMatrix.h deleted file mode 100644 index aaa9143d..00000000 --- a/YuMi/Modules/YMMessage/View/SayHello/Model/InterlocutionSpeakHalloStatementMatrix.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// InterlocutionSpeakHalloStatementMatrix.h -// YUMI -// -// Created by YUMI on 2023/2/2. -// - -#import -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -@interface InterlocutionSpeakHalloStatementMatrix : NSObject -@property (nonatomic,assign) NSInteger uid; -@property (nonatomic,copy) NSString *name; -@property (nonatomic,copy) NSString *avatar; -@property (nonatomic,copy) NSString *content; -@property (nonatomic,assign) GenderGenre gender; -@property (nonatomic,copy) NSString *experUrl; -@property (nonatomic,copy) NSString *charmUrl; -@property (nonatomic,copy) NSString *onlineDesc; -@property (nonatomic,assign) BOOL online; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SayHello/Model/InterlocutionSpeakHalloStatementMatrix.m b/YuMi/Modules/YMMessage/View/SayHello/Model/InterlocutionSpeakHalloStatementMatrix.m deleted file mode 100644 index 96c4f683..00000000 --- a/YuMi/Modules/YMMessage/View/SayHello/Model/InterlocutionSpeakHalloStatementMatrix.m +++ /dev/null @@ -1,16 +0,0 @@ -// -// InterlocutionSpeakHalloStatementMatrix.m -// YUMI -// -// Created by YUMI on 2023/2/2. -// - -#import "InterlocutionSpeakHalloStatementMatrix.h" - -@implementation InterlocutionSpeakHalloStatementMatrix -+ (NSDictionary *)replacedDigitalByvirtueofMaintainertyConstitute { - return @{@"experUrl":@"userLevelVo.experUrl", - @"charmUrl":@"userLevelVo.charmUrl" - }; -} -@end diff --git a/YuMi/Modules/YMMessage/View/SayHello/Model/SessionSayHelloCountModel.h b/YuMi/Modules/YMMessage/View/SayHello/Model/SessionSayHelloCountModel.h new file mode 100644 index 00000000..c332e297 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SayHello/Model/SessionSayHelloCountModel.h @@ -0,0 +1,19 @@ +// +// SessionSayHelloCountModel.h +// YUMI +// +// Created by YUMI on 2023/2/3. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface SessionSayHelloCountModel : NSObject +///有多少人想和你打招呼 +@property (nonatomic,assign) NSInteger helloCount; +///是否可见 +@property (nonatomic,assign) BOOL visible; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SayHello/Model/SessionSayHelloCountModel.m b/YuMi/Modules/YMMessage/View/SayHello/Model/SessionSayHelloCountModel.m new file mode 100644 index 00000000..b77e4c75 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SayHello/Model/SessionSayHelloCountModel.m @@ -0,0 +1,14 @@ +// +// SessionSayHelloCountModel.m +// YUMI +// +// Created by YUMI on 2023/2/3. +// + +#import "SessionSayHelloCountModel.h" + +@implementation SessionSayHelloCountModel + + + +@end diff --git a/YuMi/Modules/YMMessage/View/SayHello/Model/SessionSayHelloLevelModel.h b/YuMi/Modules/YMMessage/View/SayHello/Model/SessionSayHelloLevelModel.h new file mode 100644 index 00000000..31cca7ef --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SayHello/Model/SessionSayHelloLevelModel.h @@ -0,0 +1,25 @@ +// +// SessionSayHelloLevelModel.h +// YUMI +// +// Created by YUMI on 2023/2/2. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface SessionSayHelloLevelModel : NSObject +///当前主播评级 +@property (nonatomic,copy) NSString *currentLevel; +///当前倍数 +@property (nonatomic,copy) NSString * currentMultiple; +///开启状态 +@property (nonatomic,assign) BOOL enable; +///文案描述:提升下一级.... +@property (nonatomic,copy) NSString *desc; +///打招呼的数量 +@property (nonatomic,assign) NSInteger helloCount; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SayHello/Model/SessionSayHelloLevelModel.m b/YuMi/Modules/YMMessage/View/SayHello/Model/SessionSayHelloLevelModel.m new file mode 100644 index 00000000..f301830b --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SayHello/Model/SessionSayHelloLevelModel.m @@ -0,0 +1,12 @@ +// +// SessionSayHelloLevelModel.m +// YUMI +// +// Created by YUMI on 2023/2/2. +// + +#import "SessionSayHelloLevelModel.h" + +@implementation SessionSayHelloLevelModel + +@end diff --git a/YuMi/Modules/YMMessage/View/SayHello/Model/SessionSayHelloListModel.h b/YuMi/Modules/YMMessage/View/SayHello/Model/SessionSayHelloListModel.h new file mode 100644 index 00000000..9e3a903c --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SayHello/Model/SessionSayHelloListModel.h @@ -0,0 +1,34 @@ +// +// SessionSayHelloListModel.h +// YUMI +// +// Created by YUMI on 2023/2/2. +// + +#import +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +@interface SessionSayHelloListModel : NSObject +///uid +@property (nonatomic,assign) NSInteger uid; +///性别 +@property (nonatomic,copy) NSString *name; +///头像 +@property (nonatomic,copy) NSString *avatar; +///打招呼文案 +@property (nonatomic,copy) NSString *content; +///性别 +@property (nonatomic,assign) GenderType gender; +///财富等级 +@property (nonatomic,copy) NSString *experUrl; +///魅力等级 +@property (nonatomic,copy) NSString *charmUrl; +///在线文案描述 +@property (nonatomic,copy) NSString *onlineDesc; +///是否在线 +@property (nonatomic,assign) BOOL online; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SayHello/Model/SessionSayHelloListModel.m b/YuMi/Modules/YMMessage/View/SayHello/Model/SessionSayHelloListModel.m new file mode 100644 index 00000000..d1f5816d --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SayHello/Model/SessionSayHelloListModel.m @@ -0,0 +1,16 @@ +// +// SessionSayHelloListModel.m +// YUMI +// +// Created by YUMI on 2023/2/2. +// + +#import "SessionSayHelloListModel.h" + +@implementation SessionSayHelloListModel ++ (NSDictionary *)replacedKeyFromPropertyName { + return @{@"experUrl":@"userLevelVo.experUrl", + @"charmUrl":@"userLevelVo.charmUrl" + }; +} +@end diff --git a/YuMi/Modules/YMMessage/View/SayHello/Presenter/XPSessionSayHelloPresenter.h b/YuMi/Modules/YMMessage/View/SayHello/Presenter/XPSessionSayHelloPresenter.h new file mode 100644 index 00000000..8a96d33b --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SayHello/Presenter/XPSessionSayHelloPresenter.h @@ -0,0 +1,27 @@ +// +// YMSessionSayHelloPresenter.h +// YUMI +// +// Created by YUMI on 2023/2/2. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPSessionSayHelloPresenter : BaseMvpPresenter + +///获取主播评级信息 +- (void)shuntLevleInfo; + +///开启关闭自动打招呼 +- (void)shuntEnable:(BOOL)enable; + +///打招呼列表 +- (void)shuntList:(NSInteger)page size:(NSInteger)size state:(NSInteger)state; + +///点击去私聊调用的接口 后台统计使用 +- (void)shuntClickChat:(NSString *)userId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SayHello/Presenter/XPSessionSayHelloPresenter.m b/YuMi/Modules/YMMessage/View/SayHello/Presenter/XPSessionSayHelloPresenter.m new file mode 100644 index 00000000..94fd1c0c --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SayHello/Presenter/XPSessionSayHelloPresenter.m @@ -0,0 +1,53 @@ +// +// YMSessionSayHelloPresenter.m +// YUMI +// +// Created by YUMI on 2023/2/2. +// + +#import "XPSessionSayHelloPresenter.h" +#import "Api+SayHello.h" +#import "SessionSayHelloLevelModel.h" +#import "SessionSayHelloListModel.h" +#import "XPSessionSayHelloProtocol.h" +@implementation XPSessionSayHelloPresenter + +///获取主播评级信息 +- (void)shuntLevleInfo { + [Api shuntLevleInfoComplection:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + SessionSayHelloLevelModel * levelInfo = [SessionSayHelloLevelModel modelWithDictionary:data.data]; + [[self getView] shuntLevleInfoSuccess:levelInfo]; + }]]; +} + +///开启关闭自动打招呼 +- (void)shuntEnable:(BOOL)enable { + NSString * str = enable ? @"1" : @"0"; + [Api shuntEnableComplection:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] shuntEnableScucess:enable]; + }] enable:str]; +} + +///打招呼列表 +- (void)shuntList:(NSInteger)page size:(NSInteger)size state:(NSInteger)state { + NSString * pageStr = [NSString stringWithFormat:@"%ld", page]; + NSString * sizeStr = [NSString stringWithFormat:@"%ld", size]; + [Api shuntListComplection:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [SessionSayHelloListModel modelsWithArray:data.data]; + [[self getView] shuntListScuccess:array state:state]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] shuntListFailState:state]; + }] page:pageStr size:sizeStr]; +} + + +///点击去私聊调用的接口 后台统计使用 +- (void)shuntClickChat:(NSString *)userId { + [Api shuntClickChatComplection:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + + } toUserId:userId]; +} + + + +@end diff --git a/YuMi/Modules/YMMessage/View/SayHello/Presenter/YUMIInterlocutionSpeakHalloExternalizer.h b/YuMi/Modules/YMMessage/View/SayHello/Presenter/YUMIInterlocutionSpeakHalloExternalizer.h deleted file mode 100644 index d80ab539..00000000 --- a/YuMi/Modules/YMMessage/View/SayHello/Presenter/YUMIInterlocutionSpeakHalloExternalizer.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMSessionSayHelloPresenter.h -// YUMI -// -// Created by YUMI on 2023/2/2. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIInterlocutionSpeakHalloExternalizer : BaseMvpExternalizer - -- (void)shuntProttypeAbstract; - -- (void)shuntEnable:(BOOL)enable; - -- (void)shuntSttowardsement:(NSInteger)page size:(NSInteger)size state:(NSInteger)state; - -- (void)shuntTicktackChinwag:(NSString *)userId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SayHello/Presenter/YUMIInterlocutionSpeakHalloExternalizer.m b/YuMi/Modules/YMMessage/View/SayHello/Presenter/YUMIInterlocutionSpeakHalloExternalizer.m deleted file mode 100644 index 04a520d5..00000000 --- a/YuMi/Modules/YMMessage/View/SayHello/Presenter/YUMIInterlocutionSpeakHalloExternalizer.m +++ /dev/null @@ -1,49 +0,0 @@ -// -// YMSessionSayHelloPresenter.m -// YUMI -// -// Created by YUMI on 2023/2/2. -// - -#import "YUMIInterlocutionSpeakHalloExternalizer.h" -#import "Api+SayHello.h" -#import "InterlocutionSpeakHalloPrototypeMatrix.h" -#import "InterlocutionSpeakHalloStatementMatrix.h" -#import "FBCInterlocutionSayHelloCeremony.h" -@implementation YUMIInterlocutionSpeakHalloExternalizer - -- (void)shuntProttypeAbstract { - [Api shuntProttypeAbstractimplementtion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - InterlocutionSpeakHalloPrototypeMatrix * prototypeAbstract = [InterlocutionSpeakHalloPrototypeMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] shuntProttypeAbstractAccomplishment:prototypeAbstract]; - }]]; -} - -- (void)shuntEnable:(BOOL)enable { - NSString * str = enable ? @"1" : @"0"; - [Api shuntEnableimplementtion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] shuntEnableScucess:enable]; - }] enable:str]; -} - -- (void)shuntSttowardsement:(NSInteger)page size:(NSInteger)size state:(NSInteger)state { - NSString * pageStr = [NSString stringWithFormat:@"%ld", page]; - NSString * sizeStr = [NSString stringWithFormat:@"%ld", size]; - [Api shuntSttowardsementimplementtion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [InterlocutionSpeakHalloStatementMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] shuntSttowardsementScuccess:array state:state]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] shuntSttowardsementFlunkDeclare:state]; - }] page:pageStr size:sizeStr]; -} - - -- (void)shuntTicktackChinwag:(NSString *)userId { - [Api shuntTicktackChinwagimplementtion:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - - } toUserId:userId]; -} - - - -@end diff --git a/YuMi/Modules/YMMessage/View/SayHello/Protocol/FBCInterlocutionSayHelloCeremony.h b/YuMi/Modules/YMMessage/View/SayHello/Protocol/FBCInterlocutionSayHelloCeremony.h deleted file mode 100644 index 4f22f5b7..00000000 --- a/YuMi/Modules/YMMessage/View/SayHello/Protocol/FBCInterlocutionSayHelloCeremony.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMSessionSayHelloProtocol.h -// YUMI -// -// Created by YUMI on 2023/2/2. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class InterlocutionSpeakHalloPrototypeMatrix; -@protocol FBCInterlocutionSayHelloCeremony -- (void)shuntProttypeAbstractAccomplishment:(InterlocutionSpeakHalloPrototypeMatrix *)prototypeAbstract; -- (void)shuntEnableScucess:(BOOL)enable; - -- (void)shuntSttowardsementScuccess:(NSArray *)list state:(NSInteger)state; -- (void)shuntSttowardsementFlunkDeclare:(NSInteger)state; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SayHello/Protocol/XPSessionSayHelloProtocol.h b/YuMi/Modules/YMMessage/View/SayHello/Protocol/XPSessionSayHelloProtocol.h new file mode 100644 index 00000000..ed3c8e8f --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SayHello/Protocol/XPSessionSayHelloProtocol.h @@ -0,0 +1,24 @@ +// +// YMSessionSayHelloProtocol.h +// YUMI +// +// Created by YUMI on 2023/2/2. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class SessionSayHelloLevelModel; +@protocol XPSessionSayHelloProtocol +///获取主播评级信息 +- (void)shuntLevleInfoSuccess:(SessionSayHelloLevelModel *)levelInfo; +///开启关闭自动打招呼 +- (void)shuntEnableScucess:(BOOL)enable; + +///打招呼列表 +- (void)shuntListScuccess:(NSArray *)list state:(NSInteger)state; +- (void)shuntListFailState:(NSInteger)state; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SayHello/View/Cell/XPSessionSayHelloEmptyTableViewCell.h b/YuMi/Modules/YMMessage/View/SayHello/View/Cell/XPSessionSayHelloEmptyTableViewCell.h new file mode 100644 index 00000000..e5c830d8 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SayHello/View/Cell/XPSessionSayHelloEmptyTableViewCell.h @@ -0,0 +1,16 @@ +// +// YMSessionSayHelloEmptyTableViewCell.h +// YUMI +// +// Created by YUMI on 2023/1/31. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPSessionSayHelloEmptyTableViewCell : UITableViewCell + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SayHello/View/Cell/XPSessionSayHelloEmptyTableViewCell.m b/YuMi/Modules/YMMessage/View/SayHello/View/Cell/XPSessionSayHelloEmptyTableViewCell.m new file mode 100644 index 00000000..f7944275 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SayHello/View/Cell/XPSessionSayHelloEmptyTableViewCell.m @@ -0,0 +1,73 @@ +// +// YMSessionSayHelloEmptyTableViewCell.m +// YUMI +// +// Created by YUMI on 2023/1/31. +// + +#import "XPSessionSayHelloEmptyTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImageConstant.h" + +@interface XPSessionSayHelloEmptyTableViewCell () +@property (nonatomic,strong) UIImageView *emptyImageView; +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPSessionSayHelloEmptyTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.emptyImageView]; + [self.contentView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.emptyImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.contentView).offset(250); + make.size.mas_equalTo(CGSizeMake(100, 100)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.emptyImageView.mas_bottom).offset(20); + make.left.right.mas_equalTo(self.contentView); + }]; +} +#pragma mark - Getters And Setters +- (UIImageView *)emptyImageView { + if (!_emptyImageView) { + _emptyImageView = [[UIImageView alloc] init]; + _emptyImageView.userInteractionEnabled = YES; + _emptyImageView.image = [UIImageConstant defalutEmptyPlaceholder]; + _emptyImageView.layer.masksToBounds = YES; + _emptyImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _emptyImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPSessionSayHelloEmptyTableViewCell0"); + _titleLabel.font = [UIFont systemFontOfSize:16]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/SayHello/View/Cell/XPSessionSayHelloTableViewCell.h b/YuMi/Modules/YMMessage/View/SayHello/View/Cell/XPSessionSayHelloTableViewCell.h new file mode 100644 index 00000000..c2983a4d --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SayHello/View/Cell/XPSessionSayHelloTableViewCell.h @@ -0,0 +1,25 @@ +// +// YMSessionSayHelloTableViewCell.h +// YUMI +// +// Created by YUMI on 2023/1/31. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class SessionSayHelloListModel, XPSessionSayHelloTableViewCell; +@protocol XPSessionSayHelloTableViewCellDelegate + +///去私聊 +- (void)xPSessionSayHelloTableViewCell:(XPSessionSayHelloTableViewCell *)view didClickChat:(SessionSayHelloListModel *)info; + +@end +@interface XPSessionSayHelloTableViewCell : UITableViewCell +///打招呼信息 +@property (nonatomic,strong) SessionSayHelloListModel *shuntInfo; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SayHello/View/Cell/XPSessionSayHelloTableViewCell.m b/YuMi/Modules/YMMessage/View/SayHello/View/Cell/XPSessionSayHelloTableViewCell.m new file mode 100644 index 00000000..b611ffd0 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SayHello/View/Cell/XPSessionSayHelloTableViewCell.m @@ -0,0 +1,256 @@ +// +// YMSessionSayHelloTableViewCell.m +// YUMI +// +// Created by YUMI on 2023/1/31. +// + +#import "XPSessionSayHelloTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "UIImage+Utils.h" +///Model +#import "SessionSayHelloListModel.h" + +@interface XPSessionSayHelloTableViewCell () +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///显示性别 +@property (nonatomic,strong) UIImageView *sexImageView; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///财富等级 +@property (nonatomic,strong) NetImageView *levelImageView; +///魅力等级 +@property (nonatomic,strong) NetImageView *charmImageView; +///背景 +@property (nonatomic,strong) UIImageView *backView; +///显示内容 +@property (nonatomic,strong) UILabel *titleLabel; +///打招呼 +@property (nonatomic,strong) UIButton *helloButton; +///显示时间 +@property (nonatomic,strong) UILabel *timeLabel; +///在线 +@property (nonatomic,strong) UIView *onLineView; +@end + +@implementation XPSessionSayHelloTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.sexImageView]; + [self.contentView addSubview:self.nickLabel]; + [self.contentView addSubview:self.levelImageView]; + [self.contentView addSubview:self.charmImageView]; + [self.contentView addSubview:self.timeLabel]; + [self.contentView addSubview:self.onLineView]; + [self.contentView addSubview:self.backView]; + + [self.backView addSubview:self.titleLabel]; + [self.backView addSubview:self.helloButton]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(54, 54)); + make.left.mas_equalTo(self.contentView).offset(15); + make.top.mas_equalTo(self.contentView); + }]; + + [self.sexImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(14, 14)); + make.bottom.mas_equalTo(self.avatarImageView); + make.right.mas_equalTo(self.avatarImageView); + }]; + + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(12); + make.bottom.mas_equalTo(self.avatarImageView.mas_centerY).offset(-2); + make.right.mas_lessThanOrEqualTo(self.contentView).offset(-20); + }]; + + [self.levelImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(20); + make.height.mas_equalTo(20); + make.left.mas_equalTo(self.nickLabel); + make.top.mas_equalTo(self.avatarImageView.mas_centerY).offset(2); + }]; + + [self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(20); + make.left.mas_equalTo(self.levelImageView.mas_right).offset(2); + make.centerY.mas_equalTo(self.levelImageView); + }]; + + [self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.avatarImageView); + make.right.mas_equalTo(self.contentView).offset(-15); + }]; + + [self.onLineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(8, 8)); + make.centerY.mas_equalTo(self.timeLabel); + make.right.mas_equalTo(self.timeLabel.mas_left).offset(-2); + }]; + + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(56); + make.left.right.mas_equalTo(self.contentView).inset(15); + make.top.mas_equalTo(self.avatarImageView.mas_bottom).offset(3); + + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backView).offset(16); + make.top.mas_equalTo(self.backView).offset(23); + make.right.mas_lessThanOrEqualTo(self.backView).offset(-25); + }]; + + [self.helloButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(56,24)); + make.centerY.mas_equalTo(self.titleLabel); + make.right.mas_equalTo(self.backView).offset(-16); + }]; +} + +#pragma mark - Event Response +- (void)helloButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPSessionSayHelloTableViewCell:didClickChat:)]) { + [self.delegate xPSessionSayHelloTableViewCell:self didClickChat:self.shuntInfo]; + } +} + +#pragma mark - Getters And Setters +- (void)setShuntInfo:(SessionSayHelloListModel *)shuntInfo { + _shuntInfo = shuntInfo; + if (_shuntInfo) { + self.avatarImageView.imageUrl = _shuntInfo.avatar; + self.sexImageView.image = _shuntInfo.gender == GenderType_Female ? [UIImage imageNamed:@"common_female"] : [UIImage imageNamed:@"common_male"]; + self.nickLabel.text = _shuntInfo.name; + self.levelImageView.imageUrl = _shuntInfo.experUrl; + self.charmImageView.imageUrl = _shuntInfo.charmUrl; + self.timeLabel.text = _shuntInfo.onlineDesc; + self.titleLabel.text = _shuntInfo.content; + self.onLineView.hidden = !_shuntInfo.online; + } +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 54/2; + } + return _avatarImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + _nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _nickLabel; +} + +- (UIImageView *)sexImageView { + if (!_sexImageView) { + _sexImageView = [[UIImageView alloc] init]; + _sexImageView.userInteractionEnabled = YES; + } + return _sexImageView; +} + +- (NetImageView *)levelImageView { + if (!_levelImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _levelImageView = [[NetImageView alloc] initWithConfig:config]; + _levelImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _levelImageView; +} + +- (NetImageView *)charmImageView { + if (!_charmImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _charmImageView = [[NetImageView alloc] initWithConfig:config]; + _charmImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _charmImageView; +} + +- (UIView *)onLineView { + if (!_onLineView) { + _onLineView = [[UIView alloc] init]; + _onLineView.backgroundColor = [DJDKMIMOMColor colorWithHexString:@"#97EF30"]; + _onLineView.layer.masksToBounds = YES; + _onLineView.layer.cornerRadius = 4; + } + return _onLineView; +} + +- (UILabel *)timeLabel { + if (!_timeLabel) { + _timeLabel = [[UILabel alloc] init]; + _timeLabel.font = [UIFont systemFontOfSize:10]; + _timeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _timeLabel; +} + +- (UIImageView *)backView { + if (!_backView) { + _backView = [[UIImageView alloc] init]; + _backView.userInteractionEnabled = YES; + _backView.layer.masksToBounds = YES; + _backView.contentMode = UIViewContentModeScaleAspectFill; + _backView.image = [[UIImage imageNamed:@"session_say_hello_content_bg"] resizableImageWithCapInsets:UIEdgeInsetsMake(20, 300, 10, 250) resizingMode:UIImageResizingModeStretch]; + } + return _backView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:12]; + _titleLabel.textColor = [DJDKMIMOMColor colorWithHexString:@"#8A8CAB"]; + } + return _titleLabel; +} + +- (UIButton *)helloButton { + if (!_helloButton) { + _helloButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_helloButton setTitle:YMLocalizedString(@"XPSessionSayHelloTableViewCell0") forState:UIControlStateNormal]; + [_helloButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + _helloButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_helloButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _helloButton.layer.masksToBounds = YES; + _helloButton.layer.cornerRadius = 12; + [_helloButton addTarget:self action:@selector(helloButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _helloButton; +} + + +@end diff --git a/YuMi/Modules/YMMessage/View/SayHello/View/Cell/YUMIInterlocutionSpeakHalloDispossessTabulationRegardElement.h b/YuMi/Modules/YMMessage/View/SayHello/View/Cell/YUMIInterlocutionSpeakHalloDispossessTabulationRegardElement.h deleted file mode 100644 index e5d05d70..00000000 --- a/YuMi/Modules/YMMessage/View/SayHello/View/Cell/YUMIInterlocutionSpeakHalloDispossessTabulationRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMSessionSayHelloEmptyTableViewCell.h -// YUMI -// -// Created by YUMI on 2023/1/31. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIInterlocutionSpeakHalloDispossessTabulationRegardElement : UITableViewCell - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SayHello/View/Cell/YUMIInterlocutionSpeakHalloDispossessTabulationRegardElement.m b/YuMi/Modules/YMMessage/View/SayHello/View/Cell/YUMIInterlocutionSpeakHalloDispossessTabulationRegardElement.m deleted file mode 100644 index 3fc8d42f..00000000 --- a/YuMi/Modules/YMMessage/View/SayHello/View/Cell/YUMIInterlocutionSpeakHalloDispossessTabulationRegardElement.m +++ /dev/null @@ -1,71 +0,0 @@ -// -// YMSessionSayHelloEmptyTableViewCell.m -// YUMI -// -// Created by YUMI on 2023/1/31. -// - -#import "YUMIInterlocutionSpeakHalloDispossessTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIIndicateConstant.h" - -@interface YUMIInterlocutionSpeakHalloDispossessTabulationRegardElement () -@property (nonatomic,strong) UIImageView *dispossessIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@end - -@implementation YUMIInterlocutionSpeakHalloDispossessTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.dispossessIndicateRegard]; - [self.contentView addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.dispossessIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.contentView).offset(250); - make.size.mas_equalTo(CGSizeMake(100, 100)); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.dispossessIndicateRegard.mas_bottom).offset(20); - make.left.right.mas_equalTo(self.contentView); - }]; -} -#pragma mark - Getters And Setters -- (UIImageView *)dispossessIndicateRegard { - if (!_dispossessIndicateRegard) { - _dispossessIndicateRegard = [[UIImageView alloc] init]; - _dispossessIndicateRegard.userInteractionEnabled = YES; - _dispossessIndicateRegard.image = [UIIndicateConstant defalutDispossessDepapossessor]; - _dispossessIndicateRegard.layer.masksToBounds = YES; - _dispossessIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _dispossessIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Session_Say_Hello_Empty_Table_View_Cell_0"); - _titleLabel.font = [UIFont systemFontOfSize:16]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/SayHello/View/Cell/YUMIInterlocutionSpeakHalloTabulationRegardElement.h b/YuMi/Modules/YMMessage/View/SayHello/View/Cell/YUMIInterlocutionSpeakHalloTabulationRegardElement.h deleted file mode 100644 index 5dec6b8e..00000000 --- a/YuMi/Modules/YMMessage/View/SayHello/View/Cell/YUMIInterlocutionSpeakHalloTabulationRegardElement.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMSessionSayHelloTableViewCell.h -// YUMI -// -// Created by YUMI on 2023/1/31. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class InterlocutionSpeakHalloStatementMatrix, YUMIInterlocutionSpeakHalloTabulationRegardElement; -@protocol FBCInterlocutionSayHelloTabulationViweElementRepresendtation - -- (void)yUMIInterlocutionSpeakCorridoroTarbsultowardsionViweElement:(YUMIInterlocutionSpeakHalloTabulationRegardElement *)view didClickChat:(InterlocutionSpeakHalloStatementMatrix *)info; - -@end -@interface YUMIInterlocutionSpeakHalloTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) InterlocutionSpeakHalloStatementMatrix *shuntAbstract; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SayHello/View/Cell/YUMIInterlocutionSpeakHalloTabulationRegardElement.m b/YuMi/Modules/YMMessage/View/SayHello/View/Cell/YUMIInterlocutionSpeakHalloTabulationRegardElement.m deleted file mode 100644 index b2a72d5e..00000000 --- a/YuMi/Modules/YMMessage/View/SayHello/View/Cell/YUMIInterlocutionSpeakHalloTabulationRegardElement.m +++ /dev/null @@ -1,243 +0,0 @@ -// -// YMSessionSayHelloTableViewCell.m -// YUMI -// -// Created by YUMI on 2023/1/31. -// - -#import "YUMIInterlocutionSpeakHalloTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "UIImage+Utils.h" -#import "InterlocutionSpeakHalloStatementMatrix.h" - -@interface YUMIInterlocutionSpeakHalloTabulationRegardElement () -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UIImageView *seaxualityIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) NetIndicateRegard *prototypeIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *fascinationIndicateRegard; -@property (nonatomic,strong) UIImageView *encourageRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UIButton *corridoroBtuton; -@property (nonatomic,strong) UILabel *intratemporalSequencignation; -@property (nonatomic,strong) UIView *onBurlywoodRegard; -@end - -@implementation YUMIInterlocutionSpeakHalloTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.seaxualityIndicateRegard]; - [self.contentView addSubview:self.monicerSequencignation]; - [self.contentView addSubview:self.prototypeIndicateRegard]; - [self.contentView addSubview:self.fascinationIndicateRegard]; - [self.contentView addSubview:self.intratemporalSequencignation]; - [self.contentView addSubview:self.onBurlywoodRegard]; - [self.contentView addSubview:self.encourageRegard]; - - [self.encourageRegard addSubview:self.titleLabel]; - [self.encourageRegard addSubview:self.corridoroBtuton]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(54, 54)); - make.left.mas_equalTo(self.contentView).offset(15); - make.top.mas_equalTo(self.contentView); - }]; - - [self.seaxualityIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(14, 14)); - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.right.mas_equalTo(self.intelligenceportraitIndicateRegard); - }]; - - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(12); - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(-2); - make.right.mas_lessThanOrEqualTo(self.contentView).offset(-20); - }]; - - [self.prototypeIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(20); - make.height.mas_equalTo(20); - make.left.mas_equalTo(self.monicerSequencignation); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(2); - }]; - - [self.fascinationIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(20); - make.left.mas_equalTo(self.prototypeIndicateRegard.mas_right).offset(2); - make.centerY.mas_equalTo(self.prototypeIndicateRegard); - }]; - - [self.intratemporalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.right.mas_equalTo(self.contentView).offset(-15); - }]; - - [self.onBurlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(8, 8)); - make.centerY.mas_equalTo(self.intratemporalSequencignation); - make.right.mas_equalTo(self.intratemporalSequencignation.mas_left).offset(-2); - }]; - - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(56); - make.left.right.mas_equalTo(self.contentView).inset(15); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_bottom).offset(3); - - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageRegard).offset(16); - make.top.mas_equalTo(self.encourageRegard).offset(23); - make.right.mas_lessThanOrEqualTo(self.encourageRegard).offset(-25); - }]; - - [self.corridoroBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(56,24)); - make.centerY.mas_equalTo(self.titleLabel); - make.right.mas_equalTo(self.encourageRegard).offset(-16); - }]; -} - -#pragma mark - Event Response -- (void)hentiretyoBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIInterlocutionSpeakCorridoroTarbsultowardsionViweElement:didClickChat:)]) { - [self.delegate yUMIInterlocutionSpeakCorridoroTarbsultowardsionViweElement:self didClickChat:self.shuntAbstract]; - } -} - -#pragma mark - Getters And Setters -- (void)setShuntAbstract:(InterlocutionSpeakHalloStatementMatrix *)shuntAbstract { - _shuntAbstract = shuntAbstract; - if (_shuntAbstract) { - self.intelligenceportraitIndicateRegard.imageUrl = _shuntAbstract.avatar; - self.seaxualityIndicateRegard.image = _shuntAbstract.gender == GenderGenre_Female ? [UIImage imageNamed:@"yumi_same_female"] : [UIImage imageNamed:@"yumi_same_male"]; - self.monicerSequencignation.text = _shuntAbstract.name; - self.prototypeIndicateRegard.imageUrl = _shuntAbstract.experUrl; - self.fascinationIndicateRegard.imageUrl = _shuntAbstract.charmUrl; - self.intratemporalSequencignation.text = _shuntAbstract.onlineDesc; - self.titleLabel.text = _shuntAbstract.content; - self.onBurlywoodRegard.hidden = !_shuntAbstract.online; - } -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 54/2; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; - _monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _monicerSequencignation; -} - -- (UIImageView *)seaxualityIndicateRegard { - if (!_seaxualityIndicateRegard) { - _seaxualityIndicateRegard = [[UIImageView alloc] init]; - _seaxualityIndicateRegard.userInteractionEnabled = YES; - } - return _seaxualityIndicateRegard; -} - -- (NetIndicateRegard *)prototypeIndicateRegard { - if (!_prototypeIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _prototypeIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _prototypeIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _prototypeIndicateRegard; -} - -- (NetIndicateRegard *)fascinationIndicateRegard { - if (!_fascinationIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _fascinationIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _fascinationIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _fascinationIndicateRegard; -} - -- (UIView *)onBurlywoodRegard { - if (!_onBurlywoodRegard) { - _onBurlywoodRegard = [[UIView alloc] init]; - _onBurlywoodRegard.backgroundColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#97EF30"]; - _onBurlywoodRegard.layer.masksToBounds = YES; - _onBurlywoodRegard.layer.cornerRadius = 4; - } - return _onBurlywoodRegard; -} - -- (UILabel *)intratemporalSequencignation { - if (!_intratemporalSequencignation) { - _intratemporalSequencignation = [[UILabel alloc] init]; - _intratemporalSequencignation.font = [UIFont systemFontOfSize:10]; - _intratemporalSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _intratemporalSequencignation; -} - -- (UIImageView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIImageView alloc] init]; - _encourageRegard.userInteractionEnabled = YES; - _encourageRegard.layer.masksToBounds = YES; - _encourageRegard.contentMode = UIViewContentModeScaleAspectFill; - _encourageRegard.image = [[UIImage imageNamed:@"yumi_term_say_hello_matter_background"] resizableImageWithCapInsets:UIEdgeInsetsMake(20, 300, 10, 250) resizingMode:UIImageResizingModeStretch]; - } - return _encourageRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:12]; - _titleLabel.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#8A8CAB"]; - } - return _titleLabel; -} - -- (UIButton *)corridoroBtuton { - if (!_corridoroBtuton) { - _corridoroBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_corridoroBtuton setTitle:YMLocalizedString(@"YUMI_Session_Say_Hello_Table_View_Cell_0") forState:UIControlStateNormal]; - [_corridoroBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - _corridoroBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_corridoroBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _corridoroBtuton.layer.masksToBounds = YES; - _corridoroBtuton.layer.cornerRadius = 12; - [_corridoroBtuton addTarget:self action:@selector(hentiretyoBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _corridoroBtuton; -} - - -@end diff --git a/YuMi/Modules/YMMessage/View/SayHello/View/CustomView/XPSessionSayHelloHeaderView.h b/YuMi/Modules/YMMessage/View/SayHello/View/CustomView/XPSessionSayHelloHeaderView.h new file mode 100644 index 00000000..cf90f8f2 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SayHello/View/CustomView/XPSessionSayHelloHeaderView.h @@ -0,0 +1,27 @@ +// +// YMSessionSayHelloHeaderView.h +// YUMI +// +// Created by YUMI on 2023/1/31. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPSessionSayHelloHeaderView, SessionSayHelloLevelModel; +@protocol XPSessionSayHelloHeaderViewDelegate + +- (void)xPSessionSayHelloHeaderView:(XPSessionSayHelloHeaderView *)view didClickBack:(UIButton *)sender; + +- (void)XPSessionSayHelloHeaderView:(XPSessionSayHelloHeaderView *)view didChangeValue:(UISwitch *)switchView; +@end + +@interface XPSessionSayHelloHeaderView : UIView +///代理 +@property (nonatomic,weak) id delegate; + +///等级信息 +@property (nonatomic,strong) SessionSayHelloLevelModel *levelInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SayHello/View/CustomView/XPSessionSayHelloHeaderView.m b/YuMi/Modules/YMMessage/View/SayHello/View/CustomView/XPSessionSayHelloHeaderView.m new file mode 100644 index 00000000..b3a67c93 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SayHello/View/CustomView/XPSessionSayHelloHeaderView.m @@ -0,0 +1,226 @@ +// +// YMSessionSayHelloHeaderView.m +// YUMI +// +// Created by YUMI on 2023/1/31. +// + +#import "XPSessionSayHelloHeaderView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "YUMIMacroUitls.h" +#import "XPSwitch.h" +///Model +#import "SessionSayHelloLevelModel.h" + +@interface XPSessionSayHelloHeaderView () +///返回按钮 +@property (nonatomic,strong) UIButton *backButton; +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///开关 +@property (nonatomic,strong) XPSwitch *switchView; +///当前评级 +@property (nonatomic,strong) UILabel *currentRateLabel; +///打招呼流量 +@property (nonatomic,strong) UILabel *helloLabel; +///下一个等级流量 +@property (nonatomic,strong) UILabel *nextLabel; +///当前的等级 +@property (nonatomic,strong) NetImageView *levelImageView; +@end + +@implementation XPSessionSayHelloHeaderView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + [self addSubview:self.backButton]; + [self addSubview:self.titleLabel]; + [self addSubview:self.switchView]; + [self addSubview:self.currentRateLabel]; + [self addSubview:self.helloLabel]; + [self addSubview:self.nextLabel]; + [self addSubview:self.levelImageView]; +} + +- (void)initSubViewConstraints { + [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self).mas_offset(10); + make.top.mas_equalTo(statusbarHeight); + make.height.width.mas_equalTo(44); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.centerY.mas_equalTo(self.backButton); + }]; + + [self.switchView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self).offset(-15); + make.centerY.mas_equalTo(self.titleLabel); + make.size.mas_equalTo(CGSizeMake(42, 23)); + }]; + + [self.currentRateLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self).offset(15); + make.top.mas_equalTo(self.backButton.mas_bottom).offset(40); + }]; + + [self.helloLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.currentRateLabel); + make.top.mas_equalTo(self.currentRateLabel.mas_bottom).offset(10); + }]; + + [self.nextLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.helloLabel.mas_bottom); + make.left.mas_equalTo(self.helloLabel); + }]; + + [self.levelImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(130, 115)); + make.right.mas_equalTo(self).offset(-15); + make.top.mas_equalTo(self).offset(kNavigationHeight + 8); + }]; +} + +- (void)createCurrentRateAttribute:(NSString *)level { + if (level.length < 0) { + return; + } + NSString * title = [NSString stringWithFormat:@"当前主播评级:%@", level]; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:[DJDKMIMOMColor colorWithHexString:@"#1A1A1A"]}]; + [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor colorWithHexString:@"#FF8400"] range:[title rangeOfString:level]]; + [attribute addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:16 weight:UIFontWeightSemibold] range:[title rangeOfString:level]]; + self.currentRateLabel.attributedText = attribute; +} + +- (void)createHelloAttribute:(NSString *)level { + if (level.length < 0) { + return; + } + NSString * levelStr = [NSString stringWithFormat:YMLocalizedString(@"XPSessionSayHelloHeaderView1"), level]; + NSString * title = [NSString stringWithFormat:@"当前打招呼流量:%@", levelStr]; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14], NSForegroundColorAttributeName:[DJDKMIMOMColor mainTextColor]}]; + [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor colorWithHexString:@"#171A58"] range:[title rangeOfString:levelStr]]; + [attribute addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:24 weight:UIFontWeightMedium] range:[title rangeOfString:levelStr]]; + self.helloLabel.attributedText = attribute; +} + + +#pragma mark - Event Response +- (void)backButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPSessionSayHelloHeaderView:didClickBack:)]) { + [self.delegate xPSessionSayHelloHeaderView:self didClickBack:sender]; + } +} + +- (void)switchDidChange:(UISwitch *)switchOn { + if (self.delegate && [self.delegate respondsToSelector:@selector(XPSessionSayHelloHeaderView:didChangeValue:)]) { + [self.delegate XPSessionSayHelloHeaderView:self didChangeValue:switchOn]; + } +} + +#pragma mark - Getters And Setters +- (void)setLevelInfo:(SessionSayHelloLevelModel *)levelInfo { + _levelInfo = levelInfo; + if (_levelInfo) { + self.switchView.on = _levelInfo.enable; + [self createHelloAttribute:_levelInfo.currentMultiple]; + [self createCurrentRateAttribute:_levelInfo.currentLevel]; + self.nextLabel.text = _levelInfo.desc; + if ([_levelInfo.currentLevel isEqualToString:@"S"]) { + self.levelImageView.image = [UIImage imageNamed:@"mine_anchor_level_s"]; + } else if([_levelInfo.currentLevel isEqualToString:@"B"]) { + self.levelImageView.image = [UIImage imageNamed:@"mine_anchor_level_b"]; + } else if([_levelInfo.currentLevel isEqualToString:@"C"]) { + self.levelImageView.image = [UIImage imageNamed:@"mine_anchor_level_c"]; + }else if([_levelInfo.currentLevel isEqualToString:@"D"]) { + self.levelImageView.image = [UIImage imageNamed:@"mine_anchor_level_d"]; + } else { + self.levelImageView.image = [UIImage imageNamed:@"mine_anchor_level_a"]; + } + } +} + +- (UIButton *)backButton { + if (!_backButton) { + _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateNormal]; + [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateSelected]; + [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _backButton; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _titleLabel.text = YMLocalizedString(@"XPSessionSayHelloHeaderView3"); + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} + +- (XPSwitch *)switchView { + if (!_switchView) { + _switchView = [[XPSwitch alloc] initWithFrame:CGRectMake(0, 0, 42, 23)]; + _switchView.backgroundColor = [UIColor clearColor]; + _switchView.onTintColor = [DJDKMIMOMColor colorWithHexString:@"##5FCCE4"]; + _switchView.tintColor = [DJDKMIMOMColor colorWithHexString:@"#C7DAEA"]; + _switchView.thumbTintColor = [UIColor whiteColor]; + _switchView.shadow = NO; + [_switchView addTarget:self action:@selector(switchDidChange:) forControlEvents:UIControlEventValueChanged]; + + } + return _switchView; +} + +- (UILabel *)currentRateLabel { + if (!_currentRateLabel) { + _currentRateLabel = [[UILabel alloc] init]; + } + return _currentRateLabel; +} + +- (UILabel *)helloLabel { + if (!_helloLabel) { + _helloLabel = [[UILabel alloc] init]; + } + return _helloLabel; +} + +- (UILabel *)nextLabel { + if (!_nextLabel) { + _nextLabel = [[UILabel alloc] init]; + _nextLabel.textColor = [DJDKMIMOMColor colorWithHexString:@"#BABBCD"]; + _nextLabel.font = [UIFont systemFontOfSize:10]; + } + return _nextLabel; +} + +- (NetImageView *)levelImageView { + if (!_levelImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _levelImageView = [[NetImageView alloc] initWithConfig:config]; + _levelImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _levelImageView; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/SayHello/View/CustomView/YUMIInterlocutionSpeakHalloIntelligencerRegard.h b/YuMi/Modules/YMMessage/View/SayHello/View/CustomView/YUMIInterlocutionSpeakHalloIntelligencerRegard.h deleted file mode 100644 index c3a30865..00000000 --- a/YuMi/Modules/YMMessage/View/SayHello/View/CustomView/YUMIInterlocutionSpeakHalloIntelligencerRegard.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YMSessionSayHelloHeaderView.h -// YUMI -// -// Created by YUMI on 2023/1/31. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIInterlocutionSpeakHalloIntelligencerRegard, InterlocutionSpeakHalloPrototypeMatrix; -@protocol FBCInterlocutionSayHelloIntelligencerRegardRepresendtation - -- (void)yUMIInterlocutionSpeakCorridoroIntelligencerRegard:(YUMIInterlocutionSpeakHalloIntelligencerRegard *)view didClickBack:(UIButton *)sender; - -- (void)YUMIInterlocutionSpeakHalloIntelligencerRegard:(YUMIInterlocutionSpeakHalloIntelligencerRegard *)view didChangeValue:(UISwitch *)switchView; -@end - -@interface YUMIInterlocutionSpeakHalloIntelligencerRegard : UIView -@property (nonatomic,weak) id delegate; - -@property (nonatomic,strong) InterlocutionSpeakHalloPrototypeMatrix *prototypeAbstract; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SayHello/View/CustomView/YUMIInterlocutionSpeakHalloIntelligencerRegard.m b/YuMi/Modules/YMMessage/View/SayHello/View/CustomView/YUMIInterlocutionSpeakHalloIntelligencerRegard.m deleted file mode 100644 index 49f2fdd2..00000000 --- a/YuMi/Modules/YMMessage/View/SayHello/View/CustomView/YUMIInterlocutionSpeakHalloIntelligencerRegard.m +++ /dev/null @@ -1,216 +0,0 @@ -// -// YMSessionSayHelloHeaderView.m -// YUMI -// -// Created by YUMI on 2023/1/31. -// - -#import "YUMIInterlocutionSpeakHalloIntelligencerRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "YUMIMacroUitls.h" -#import "YUMISwitch.h" -#import "InterlocutionSpeakHalloPrototypeMatrix.h" - -@interface YUMIInterlocutionSpeakHalloIntelligencerRegard () -@property (nonatomic,strong) UIButton *backButton; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) YUMISwitch *switchView; -@property (nonatomic,strong) UILabel *universalRateSequencignation; -@property (nonatomic,strong) UILabel *corridoroSequencignation; -@property (nonatomic,strong) UILabel *nextSequencignation; -@property (nonatomic,strong) NetIndicateRegard *prototypeIndicateRegard; -@end - -@implementation YUMIInterlocutionSpeakHalloIntelligencerRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - [self addSubview:self.backButton]; - [self addSubview:self.titleLabel]; - [self addSubview:self.switchView]; - [self addSubview:self.universalRateSequencignation]; - [self addSubview:self.corridoroSequencignation]; - [self addSubview:self.nextSequencignation]; - [self addSubview:self.prototypeIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self).mas_offset(10); - make.top.mas_equalTo(statusbarHeight); - make.height.width.mas_equalTo(44); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.centerY.mas_equalTo(self.backButton); - }]; - - [self.switchView mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self).offset(-15); - make.centerY.mas_equalTo(self.titleLabel); - make.size.mas_equalTo(CGSizeMake(42, 23)); - }]; - - [self.universalRateSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self).offset(15); - make.top.mas_equalTo(self.backButton.mas_bottom).offset(40); - }]; - - [self.corridoroSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.universalRateSequencignation); - make.top.mas_equalTo(self.universalRateSequencignation.mas_bottom).offset(10); - }]; - - [self.nextSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.corridoroSequencignation.mas_bottom); - make.left.mas_equalTo(self.corridoroSequencignation); - }]; - - [self.prototypeIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(130, 115)); - make.right.mas_equalTo(self).offset(-15); - make.top.mas_equalTo(self).offset(kNavigationHeight + 8); - }]; -} - -- (void)produceUniversalRtowardseIdiosyncracy:(NSString *)level { - if (level.length < 0) { - return; - } - NSString * title = [NSString stringWithFormat:@"当前主播评级:%@", level]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:[DJDKMIMOMColor colorAboutHexBWSttr:@"#1A1A1A"]}]; - [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor colorAboutHexBWSttr:@"#FF8400"] range:[title rangeOfString:level]]; - [attribute addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:16 weight:UIFontWeightSemibold] range:[title rangeOfString:level]]; - self.universalRateSequencignation.attributedText = attribute; -} - -- (void)produceCorridoroIdiosyncracy:(NSString *)level { - if (level.length < 0) { - return; - } - NSString * levelStr = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Session_Say_Hello_Header_View_1"), level]; - NSString * title = [NSString stringWithFormat:@"当前打招呼流量:%@", levelStr]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14], NSForegroundColorAttributeName:[DJDKMIMOMColor mainEssayPrettify]}]; - [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor colorAboutHexBWSttr:@"#171A58"] range:[title rangeOfString:levelStr]]; - [attribute addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:24 weight:UIFontWeightMedium] range:[title rangeOfString:levelStr]]; - self.corridoroSequencignation.attributedText = attribute; -} - - -#pragma mark - Event Response -- (void)encourageBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIInterlocutionSpeakCorridoroIntelligencerRegard:didClickBack:)]) { - [self.delegate yUMIInterlocutionSpeakCorridoroIntelligencerRegard:self didClickBack:sender]; - } -} - -- (void)swopDidDiversifictowardsion:(UISwitch *)switchOn { - if (self.delegate && [self.delegate respondsToSelector:@selector(YUMIInterlocutionSpeakHalloIntelligencerRegard:didChangeValue:)]) { - [self.delegate YUMIInterlocutionSpeakHalloIntelligencerRegard:self didChangeValue:switchOn]; - } -} - -#pragma mark - Getters And Setters -- (void)setPrototypeAbstract:(InterlocutionSpeakHalloPrototypeMatrix *)prototypeAbstract { - _prototypeAbstract = prototypeAbstract; - if (_prototypeAbstract) { - self.switchView.on = _prototypeAbstract.enable; - [self produceCorridoroIdiosyncracy:_prototypeAbstract.currentMultiple]; - [self produceUniversalRtowardseIdiosyncracy:_prototypeAbstract.currentLevel]; - self.nextSequencignation.text = _prototypeAbstract.desc; - if ([_prototypeAbstract.currentLevel isEqualToString:@"S"]) { - self.prototypeIndicateRegard.image = [UIImage imageNamed:@"yumi_center_anchor_level_s"]; - } else if([_prototypeAbstract.currentLevel isEqualToString:@"B"]) { - self.prototypeIndicateRegard.image = [UIImage imageNamed:@"yumi_center_anchor_level_b"]; - } else if([_prototypeAbstract.currentLevel isEqualToString:@"C"]) { - self.prototypeIndicateRegard.image = [UIImage imageNamed:@"yumi_center_anchor_level_c"]; - }else if([_prototypeAbstract.currentLevel isEqualToString:@"D"]) { - self.prototypeIndicateRegard.image = [UIImage imageNamed:@"yumi_center_anchor_level_d"]; - } else { - self.prototypeIndicateRegard.image = [UIImage imageNamed:@"yumi_center_anchor_level_a"]; - } - } -} - -- (UIButton *)backButton { - if (!_backButton) { - _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backButton setImage:[UIImage imageNamed:@"yumi_same_title_back"] forState:UIControlStateNormal]; - [_backButton setImage:[UIImage imageNamed:@"yumi_same_title_back"] forState:UIControlStateSelected]; - [_backButton addTarget:self action:@selector(encourageBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _backButton; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleLabel.text = YMLocalizedString(@"YUMI_Session_Say_Hello_Header_View_3"); - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} - -- (YUMISwitch *)switchView { - if (!_switchView) { - _switchView = [[YUMISwitch alloc] initWithFrame:CGRectMake(0, 0, 42, 23)]; - _switchView.backgroundColor = [UIColor clearColor]; - _switchView.onTintColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"##5FCCE4"]; - _switchView.tintColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#C7DAEA"]; - _switchView.thumbTintColor = [UIColor whiteColor]; - _switchView.shadow = NO; - [_switchView addTarget:self action:@selector(swopDidDiversifictowardsion:) forControlEvents:UIControlEventValueChanged]; - - } - return _switchView; -} - -- (UILabel *)universalRateSequencignation { - if (!_universalRateSequencignation) { - _universalRateSequencignation = [[UILabel alloc] init]; - } - return _universalRateSequencignation; -} - -- (UILabel *)corridoroSequencignation { - if (!_corridoroSequencignation) { - _corridoroSequencignation = [[UILabel alloc] init]; - } - return _corridoroSequencignation; -} - -- (UILabel *)nextSequencignation { - if (!_nextSequencignation) { - _nextSequencignation = [[UILabel alloc] init]; - _nextSequencignation.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#BABBCD"]; - _nextSequencignation.font = [UIFont systemFontOfSize:10]; - } - return _nextSequencignation; -} - -- (NetIndicateRegard *)prototypeIndicateRegard { - if (!_prototypeIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _prototypeIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _prototypeIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _prototypeIndicateRegard; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/SayHello/View/XPSessionSayHelloViewController.h b/YuMi/Modules/YMMessage/View/SayHello/View/XPSessionSayHelloViewController.h new file mode 100644 index 00000000..2eb6ffa6 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SayHello/View/XPSessionSayHelloViewController.h @@ -0,0 +1,16 @@ +// +// YMSessionSayHelloViewController.h +// YUMI +// +// Created by YUMI on 2023/1/31. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPSessionSayHelloViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SayHello/View/XPSessionSayHelloViewController.m b/YuMi/Modules/YMMessage/View/SayHello/View/XPSessionSayHelloViewController.m new file mode 100644 index 00000000..ca3ece2f --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SayHello/View/XPSessionSayHelloViewController.m @@ -0,0 +1,269 @@ +// +// YMSessionSayHelloViewController.m +// YUMI +// +// Created by YUMI on 2023/1/31. +// + +#import "XPSessionSayHelloViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" +#import "NIMMessageMaker.h" +#import "StatisticsServiceHelper.h" +///Model +#import "SessionSayHelloLevelModel.h" +#import "SessionSayHelloListModel.h" +///View +#import "XPSessionSayHelloHeaderView.h" +#import "XPSessionSayHelloTableViewCell.h" +#import "XPSessionSayHelloEmptyTableViewCell.h" +#import "SessionViewController.h" +///P +#import "XPSessionSayHelloProtocol.h" +#import "XPSessionSayHelloPresenter.h" +@interface XPSessionSayHelloViewController () +///背景图片 +@property (nonatomic,strong) UIImageView *backImageView; +///顶部的View +@property (nonatomic,strong) XPSessionSayHelloHeaderView *headerView; +///背景 +@property (nonatomic,strong) UIView *backView; +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据 +@property (nonatomic,strong) NSMutableArray *datasource; +///当前页数 +@property (nonatomic,assign) NSInteger page; +///等级信息 +@property (nonatomic,strong) SessionSayHelloLevelModel *levelInfo; +@end + +@implementation XPSessionSayHelloViewController + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (__kindof id)createPresenter { + return [[XPSessionSayHelloPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initHeaderAndFooterRrfresh]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [self headerRefresh]; +} + +#pragma mark - Refresh +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; + ///加载用户等级信息 + [self.presenter shuntLevleInfo]; +} + +- (void)headerRefresh { + self.page = 1; + [self.presenter shuntList:self.page size:20 state:0]; +} + +- (void)footerRefresh { + self.page ++; + [self.presenter shuntList:self.page size:20 state:1]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.backImageView]; + [self.view addSubview:self.backView]; + [self.view addSubview:self.tableView]; + [self.view addSubview:self.headerView]; +} + +- (void)initSubViewConstraints { + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(KScreenWidth, KScreenWidth)); + make.top.centerX.mas_equalTo(self.view); + }]; + + [self.headerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.height.mas_equalTo(220 + kSafeAreaTopHeight); + }]; + + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.top.mas_equalTo(self.headerView.mas_bottom); + }]; + + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.backView); + make.top.mas_equalTo(self.backView.mas_top).offset(15); + }]; +} + +#pragma mark - XPSessionSayHelloHeaderViewDelegate +- (void)xPSessionSayHelloHeaderView:(XPSessionSayHelloHeaderView *)view didClickBack:(UIButton *)sender { + [self.navigationController popViewControllerAnimated:YES]; +} + +- (void)XPSessionSayHelloHeaderView:(XPSessionSayHelloHeaderView *)view didChangeValue:(UISwitch *)switchView { + [self.presenter shuntEnable:switchView.on]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEvent_user_greetings_switch_click eventAttributes:@{@"enable":@(switchView.on)}]; +} + +#pragma mark - XPSessionSayHelloProtocol +- (void)shuntEnableScucess:(BOOL)enable { + self.levelInfo.enable = enable; + self.headerView.levelInfo = self.levelInfo; +} + +- (void)shuntListFailState:(NSInteger)state { + if (state == 0) { + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } +} + +- (void)shuntListScuccess:(NSArray *)list state:(NSInteger)state { + if (state == 0) { + [self.datasource removeAllObjects]; + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } + + if (list.count > 0) { + [self.datasource addObjectsFromArray:list]; + } + [self.tableView reloadData]; +} + +- (void)shuntLevleInfoSuccess:(SessionSayHelloLevelModel *)levelInfo { + self.levelInfo = levelInfo; + self.headerView.levelInfo = self.levelInfo; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return self.datasource.count > 0 ? 130 : KScreenHeight - kSafeAreaTopHeight -230; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPSessionSayHelloTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPSessionSayHelloTableViewCell class])]; + if (cell == nil) { + cell = [[XPSessionSayHelloTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPSessionSayHelloTableViewCell class])]; + } + SessionSayHelloListModel * model = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.shuntInfo = model; + cell.delegate = self; + return cell; + } else { + XPSessionSayHelloEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPSessionSayHelloEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPSessionSayHelloEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPSessionSayHelloEmptyTableViewCell class])]; + } + return cell; + } +} + +#pragma mark - XPSessionSayHelloTableViewCellDelegate +- (void)xPSessionSayHelloTableViewCell:(XPSessionSayHelloTableViewCell *)view didClickChat:(SessionSayHelloListModel *)info { + if (info.uid > 0) { + NSString * toUid = [NSString stringWithFormat:@"%ld", info.uid]; + [self.presenter shuntClickChat:toUid]; + NIMSession * session = [NIMSession session:toUid type:NIMSessionTypeP2P]; + if (info.content.length > 0) { + NIMMessage * message = [NIMMessageMaker msgWithText:info.content]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; + } + + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEvent_user_greetings_chat_click eventAttributes:@{@"uid": toUid}]; + SessionViewController * sessionVC = [[SessionViewController alloc] initWithSession:session]; + [self.navigationController pushViewController:sessionVC animated:YES]; + }); + } +} + +#pragma mark - Getters And Setters +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.image = [UIImage imageNamed:@"session_say_hello_list_bg"]; + } + return _backImageView; +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView setContentInset:UIEdgeInsetsMake(0, 0, 0, 0)]; + [_tableView registerClass:[XPSessionSayHelloTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPSessionSayHelloTableViewCell class])]; + [_tableView registerClass:[XPSessionSayHelloEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPSessionSayHelloEmptyTableViewCell class])]; + } + return _tableView; +} + +- (UIView *)backView { + if (!_backView) { + _backView = [[UIView alloc] init]; + _backView.backgroundColor = [UIColor whiteColor]; + CAShapeLayer * layer = [CAShapeLayer layer]; + layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, KScreenHeight - 230 - kSafeAreaTopHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(16, 16)].CGPath; + _backView.layer.mask = layer; + } + return _backView; +} + +- (XPSessionSayHelloHeaderView *)headerView { + if (!_headerView) { + _headerView = [[XPSessionSayHelloHeaderView alloc] init]; + _headerView.delegate = self; + } + return _headerView; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/SayHello/View/YUMIInterlocutionSpeakHalloRegardGovernancer.h b/YuMi/Modules/YMMessage/View/SayHello/View/YUMIInterlocutionSpeakHalloRegardGovernancer.h deleted file mode 100644 index 53238432..00000000 --- a/YuMi/Modules/YMMessage/View/SayHello/View/YUMIInterlocutionSpeakHalloRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMSessionSayHelloViewController.h -// YUMI -// -// Created by YUMI on 2023/1/31. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIInterlocutionSpeakHalloRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SayHello/View/YUMIInterlocutionSpeakHalloRegardGovernancer.m b/YuMi/Modules/YMMessage/View/SayHello/View/YUMIInterlocutionSpeakHalloRegardGovernancer.m deleted file mode 100644 index ee104d9d..00000000 --- a/YuMi/Modules/YMMessage/View/SayHello/View/YUMIInterlocutionSpeakHalloRegardGovernancer.m +++ /dev/null @@ -1,257 +0,0 @@ -// -// YMSessionSayHelloViewController.m -// YUMI -// -// Created by YUMI on 2023/1/31. -// - -#import "YUMIInterlocutionSpeakHalloRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "NEMCCommunicationMaker.h" -#import "StatsticsticsServingFacilitater.h" -#import "InterlocutionSpeakHalloPrototypeMatrix.h" -#import "InterlocutionSpeakHalloStatementMatrix.h" -#import "YUMIInterlocutionSpeakHalloIntelligencerRegard.h" -#import "YUMIInterlocutionSpeakHalloTabulationRegardElement.h" -#import "YUMIInterlocutionSpeakHalloDispossessTabulationRegardElement.h" -#import "InterlocutionRegardGovernancer.h" -#import "FBCInterlocutionSayHelloCeremony.h" -#import "YUMIInterlocutionSpeakHalloExternalizer.h" -@interface YUMIInterlocutionSpeakHalloRegardGovernancer () -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) YUMIInterlocutionSpeakHalloIntelligencerRegard *intelligenceerRegard; -@property (nonatomic,strong) UIView *encourageRegard; -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,assign) NSInteger page; -@property (nonatomic,strong) InterlocutionSpeakHalloPrototypeMatrix *prototypeAbstract; -@end - -@implementation YUMIInterlocutionSpeakHalloRegardGovernancer - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (__kindof id)producePresimport { - return [[YUMIInterlocutionSpeakHalloExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initIntelligencerGrantedTerminalerRrfresh]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - [self intelligenceerRenovtowardseh]; -} - -#pragma mark - Refresh -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - - [self.presimport shuntProttypeAbstract]; -} - -- (void)intelligenceerRenovtowardseh { - self.page = 1; - [self.presimport shuntSttowardsement:self.page size:20 state:0]; -} - -- (void)footerRenovtowardseh { - self.page ++; - [self.presimport shuntSttowardsement:self.page size:20 state:1]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.encourageIndicateRegard]; - [self.view addSubview:self.encourageRegard]; - [self.view addSubview:self.tableView]; - [self.view addSubview:self.intelligenceerRegard]; -} - -- (void)initChildLyRestrictions { - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(KScreenWidth, KScreenWidth)); - make.top.centerX.mas_equalTo(self.view); - }]; - - [self.intelligenceerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.height.mas_equalTo(220 + kSafeAreaTopHeight); - }]; - - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.top.mas_equalTo(self.intelligenceerRegard.mas_bottom); - }]; - - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.encourageRegard); - make.top.mas_equalTo(self.encourageRegard.mas_top).offset(15); - }]; -} - -#pragma mark - FBCInterlocutionSayHelloIntelligencerRegardRepresendtation -- (void)yUMIInterlocutionSpeakCorridoroIntelligencerRegard:(YUMIInterlocutionSpeakHalloIntelligencerRegard *)view didClickBack:(UIButton *)sender { - [self.navigationController popViewControllerAnimated:YES]; -} - -- (void)YUMIInterlocutionSpeakHalloIntelligencerRegard:(YUMIInterlocutionSpeakHalloIntelligencerRegard *)view didChangeValue:(UISwitch *)switchView { - [self.presimport shuntEnable:switchView.on]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEvent_user_greetings_switch_click eventAttributes:@{@"enable":@(switchView.on)}]; -} - -#pragma mark - FBCInterlocutionSayHelloCeremony -- (void)shuntEnableScucess:(BOOL)enable { - self.prototypeAbstract.enable = enable; - self.intelligenceerRegard.prototypeAbstract = self.prototypeAbstract; -} - -- (void)shuntSttowardsementFlunkDeclare:(NSInteger)state { - if (state == 0) { - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } -} - -- (void)shuntSttowardsementScuccess:(NSArray *)list state:(NSInteger)state { - if (state == 0) { - [self.datasource removeAllObjects]; - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } - - if (list.count > 0) { - [self.datasource addObjectsFromArray:list]; - } - [self.tableView reloadData]; -} - -- (void)shuntProttypeAbstractAccomplishment:(InterlocutionSpeakHalloPrototypeMatrix *)prototypeAbstract { - self.prototypeAbstract = prototypeAbstract; - self.intelligenceerRegard.prototypeAbstract = self.prototypeAbstract; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return self.datasource.count > 0 ? 130 : KScreenHeight - kSafeAreaTopHeight -230; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMIInterlocutionSpeakHalloTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIInterlocutionSpeakHalloTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIInterlocutionSpeakHalloTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIInterlocutionSpeakHalloTabulationRegardElement class])]; - } - InterlocutionSpeakHalloStatementMatrix * model = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.shuntAbstract = model; - cell.delegate = self; - return cell; - } else { - YUMIInterlocutionSpeakHalloDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIInterlocutionSpeakHalloDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIInterlocutionSpeakHalloDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIInterlocutionSpeakHalloDispossessTabulationRegardElement class])]; - } - return cell; - } -} - -#pragma mark - FBCInterlocutionSayHelloTabulationViweElementRepresendtation -- (void)yUMIInterlocutionSpeakCorridoroTarbsultowardsionViweElement:(YUMIInterlocutionSpeakHalloTabulationRegardElement *)view didClickChat:(InterlocutionSpeakHalloStatementMatrix *)info { - if (info.uid > 0) { - NSString * toUid = [NSString stringWithFormat:@"%ld", info.uid]; - [self.presimport shuntTicktackChinwag:toUid]; - NIMSession * session = [NIMSession session:toUid type:NIMSessionTypeP2P]; - if (info.content.length > 0) { - NIMMessage * message = [NEMCCommunicationMaker communAboutEssay:info.content]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; - } - - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEvent_user_greetings_chat_click eventAttributes:@{@"uid": toUid}]; - InterlocutionRegardGovernancer * sessionVC = [[InterlocutionRegardGovernancer alloc] initWithSession:session]; - [self.navigationController pushViewController:sessionVC animated:YES]; - }); - } -} - -#pragma mark - Getters And Setters -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_term_say_hello_list_background"]; - } - return _encourageIndicateRegard; -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView setContentInset:UIEdgeInsetsMake(0, 0, 0, 0)]; - [_tableView registerClass:[YUMIInterlocutionSpeakHalloTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIInterlocutionSpeakHalloTabulationRegardElement class])]; - [_tableView registerClass:[YUMIInterlocutionSpeakHalloDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIInterlocutionSpeakHalloDispossessTabulationRegardElement class])]; - } - return _tableView; -} - -- (UIView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIView alloc] init]; - _encourageRegard.backgroundColor = [UIColor whiteColor]; - CAShapeLayer * layer = [CAShapeLayer layer]; - layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, KScreenHeight - 230 - kSafeAreaTopHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(16, 16)].CGPath; - _encourageRegard.layer.mask = layer; - } - return _encourageRegard; -} - -- (YUMIInterlocutionSpeakHalloIntelligencerRegard *)intelligenceerRegard { - if (!_intelligenceerRegard) { - _intelligenceerRegard = [[YUMIInterlocutionSpeakHalloIntelligencerRegard alloc] init]; - _intelligenceerRegard.delegate = self; - } - return _intelligenceerRegard; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Cell/CommunicationElement.h b/YuMi/Modules/YMMessage/View/Session/Cell/CommunicationElement.h deleted file mode 100644 index deabe28c..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Cell/CommunicationElement.h +++ /dev/null @@ -1,31 +0,0 @@ -// -// CommunicationElement.h -// YUMI -// -// Created by zu on 2021/11/28. -// - -#import -#import -#import "CommunicationBaseMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@protocol CommunicationElementRepresendtation - -- (void)refurbishCommunictowardsionAccomplishment:(NIMMessage *)message; - -- (void)didBetowardsIntelligenceportrait:(NSString *)uid; -- (void)didFlunkRetry:(NIMMessage *)message; -- (void)revokeCommunictowardsionAccomplishment:(NIMMessage *)message; -- (void)representtowardsionCommunictowardsionAccomplishment:(NIMMessage *)message; -@end - -@interface CommunicationElement : UITableViewCell - -- (void)rconcludeerAboutCommunictowardsion:(CommunicationBaseMatrix *)message; -@property (nonatomic,weak) id delegate; - -@property (nonatomic,assign) BOOL isInRoom; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Cell/CommunicationElement.m b/YuMi/Modules/YMMessage/View/Session/Cell/CommunicationElement.m deleted file mode 100644 index c7e4ce51..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Cell/CommunicationElement.m +++ /dev/null @@ -1,364 +0,0 @@ -// -// CommunicationElement.m -// YUMI -// -// Created by zu on 2021/11/28. -// - -#import "CommunicationElement.h" -#import "CommunicationContentCeremony.h" -#import "CommunicationSatisfactionEssay.h" -#import "CommunicationSatisfactionIndicate.h" -#import "CommunicationSatisfactionEssayClickable.h" -#import "CommunicationSatisfactionCustomRegard.h" -#import "CommunicationSatisfactionPresentRegard.h" -#import "CommunicationSatisfactionUnionRegard.h" -#import "CommunicationSatisfactionUnSupportRegard.h" -#import "CommunicationSatisfactionUnfoildEnergeticRegard.h" -#import "CommunicationSatisfactionApplicationParaticipationRegard.h" -#import "CommunicationSatisfactionPrototypeAscensionRegard.h" -#import "CommunicationConentVocalmusicRegard.h" -#import "CommunicationSatisfactionTweetRegard.h" -#import "CommunicationSatisfactionCommunicationSolitaireRegard.h" -#import "CommunicationSatisfactionDiscoveryStrangeBewelcometoRegard.h" -#import "CommunicationSatisfactionVenturePrecautiousRegard.h" -#import "CommunicationSatisfactionSeparationsRegard.h" -#import "CommunicationSatisfactionSeparationsAutoRegard.h" -#import "CommunicationSatisfactionDeficitSheatheRegard.h" -#import "CommunicationIntratemporalRegard.h" -#import "StatsticsticsServingFacilitater.h" - -#import "AttachmentMatrix.h" -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "PLIntratemporalUtil.h" - -#import "YUMIMacroUitls.h" -#import - -@interface CommunicationElement() - -@property (nonatomic, assign) NIMMessageType messageType; - - -@property (nonatomic, strong) NetIndicateRegard * contraryIntelligenceportrait; - - -@property (nonatomic, strong) NetIndicateRegard * rectifyIntelligenceportrait; -@property (nonatomic,strong) UIButton *failBtuton; - - -@property (nonatomic, strong) UIView * communicationEncourageground; -@property (nonatomic, strong) MASConstraint * communicationEncouragegroundContrary; -@property (nonatomic, strong) MASConstraint * communicationEncouragegroundRectify; - -@property (nonatomic, strong) UIView * communicationSatisfperformance; -@property (nonatomic,strong) NIMMessage *currentMessage; -@property (nonatomic,strong) CommunicationBaseMatrix *universalMatrix; -@end - -@implementation CommunicationElement - - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; - if (self) { - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self initRegards]; - [self initLayout]; - } - return self; -} - -- (void)initRegards { - self.backgroundColor = UIColor.clearColor; - [self.contentView addSubview:self.contraryIntelligenceportrait]; - [self.contentView addSubview:self.rectifyIntelligenceportrait]; - [self.contentView addSubview:self.communicationEncourageground]; - [self.contentView addSubview:self.failBtuton]; - - - - UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressElementShank:)]; - longPressGesture.minimumPressDuration = 0.5; - [self.communicationEncourageground addGestureRecognizer:longPressGesture]; -} - -- (void)initLayout { - [self.contraryIntelligenceportrait mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.top.mas_equalTo(self).offset(15); - make.width.height.mas_equalTo(45); - }]; - - [self.rectifyIntelligenceportrait mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self).offset(15); - make.right.mas_equalTo(self).offset(-15); - make.width.height.mas_equalTo(45); - }]; - - [self.communicationEncourageground mas_makeConstraints:^(MASConstraintMaker *make) { - self.communicationEncouragegroundContrary = make.left.mas_equalTo(self.contraryIntelligenceportrait.mas_right).offset(15); - self.communicationEncouragegroundRectify = make.right.mas_equalTo(self.rectifyIntelligenceportrait.mas_left).offset(-15); - make.top.mas_equalTo(self).offset(20); - }]; - - [self.failBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20, 20)); - make.centerY.mas_equalTo(self.communicationEncourageground); - make.left.mas_equalTo(self.communicationEncourageground.mas_right).offset(10); - }]; -} - - --(void)longPressElementShank:(UILongPressGestureRecognizer *)gesture { - if (!self.currentMessage) { - return; - } - if(gesture.state==UIGestureRecognizerStateBegan) { - [self becomeFirstResponder]; - - UIMenuController *menuController = [UIMenuController sharedMenuController]; - - UIMenuItem *copyItem = [[UIMenuItem alloc] initWithTitle:YMLocalizedString(@"Message_Cell_0") action:@selector(parrotCopyBtutonPressed:)]; - UIMenuItem *deleteItem = [[UIMenuItem alloc] initWithTitle:YMLocalizedString(@"Message_Cell_1") action:@selector(parrotRepresenttowardsionCopyBtutonPressed:)]; - UIMenuItem *revokeItem = [[UIMenuItem alloc] initWithTitle:YMLocalizedString(@"Message_Cell_2") action:@selector(parrotRevokeBtutonPressed:)]; - NSMutableArray * array = [NSMutableArray array]; - if ((self.currentMessage.messageType == NIMMessageTypeText) && !self.universalMatrix.isHiddenAvatar) { - [array addObject:copyItem]; - } - - if (!self.universalMatrix.isHiddenAvatar) { - [array addObject:deleteItem]; - } - - if (self.currentMessage.isOutgoingMsg && [self examineTowardsoloudspeakerAbout:self.currentMessage.timestamp] && (self.currentMessage.messageType == NIMMessageTypeText || self.currentMessage.messageType == NIMMessageTypeImage || self.currentMessage.messageType == NIMMessageTypeAudio)){ - [array addObject:revokeItem]; - } - menuController.menuItems = array; - - [menuController setTargetRect:gesture.view.frame inView:gesture.view.superview]; - - [menuController setMenuVisible:YES animated:YES]; - - [UIMenuController sharedMenuController].menuItems=nil; - } -} - -- (BOOL)examineTowardsoloudspeakerAbout:(long)currentStr { - NSDate* date = [NSDate dateWithTimeIntervalSince1970:currentStr]; - NSCalendar * calendar = [NSCalendar currentCalendar]; - NSCalendarUnit unit =NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond; - NSDateComponents * cmps = [calendar components:unit fromDate:date toDate:[NSDate date] options:0]; - if (cmps.minute <= 2) { - return YES; - } - return NO; -} - --(void)parrotCopyBtutonPressed:(UIMenuItem *)menuItem { - [UIPasteboard generalPasteboard].string = self.currentMessage.text; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEvent_chat_dialogue_copy_click]; -} - -- (void)parrotRepresenttowardsionCopyBtutonPressed:(UIMenuItem *)menuItem { - NIMDeleteMessageOption * opt = [[NIMDeleteMessageOption alloc] init]; - opt.removeFromDB = YES; - [[NIMSDK sharedSDK].conversationManager deleteMessage:self.currentMessage option:opt]; - if (self.delegate && [self.delegate respondsToSelector:@selector(representtowardsionCommunictowardsionAccomplishment:)]) { - [self.delegate representtowardsionCommunictowardsionAccomplishment:self.currentMessage]; - } - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEvent_chat_dialogue_delete_click]; -} - -- (void)parrotRevokeBtutonPressed:(UIMenuItem *)menuItem { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEvent_chat_dialogue_revocation_click]; - if (self.currentMessage) { - NIMRevokeMessageOption * option = [[NIMRevokeMessageOption alloc] init]; - option.shouldBeCounted = NO; - [[NIMSDK sharedSDK].chatManager revokeMessage:self.currentMessage option:option completion:^(NSError * _Nullable error) { - if (error == nil) { - if (self.delegate && [self.delegate respondsToSelector:@selector(revokeCommunictowardsionAccomplishment:)]) { - [self.delegate revokeCommunictowardsionAccomplishment:self.currentMessage]; - } - } - }]; - } -} - --(BOOL)canBecomeFirstResponder { - return YES; -} - --(BOOL)canPerformAction:(SEL)action withSender:(id)sender { - if (action == @selector(parrotCopyBtutonPressed:) || action == @selector(parrotRepresenttowardsionCopyBtutonPressed:) || action == @selector(parrotRevokeBtutonPressed:)) { - return YES; - } - return NO; -} - -- (void)rconcludeerAboutCommunictowardsion:(CommunicationBaseMatrix *)model { - NIMMessage * message = model.message; - self.universalMatrix = model; - self.currentMessage = message; - NSString * avatarUrl = [[NIMSDK sharedSDK].userManager userInfo:message.from].userInfo.avatarUrl; - avatarUrl = [avatarUrl stringByReplacingOccurrencesOfString:@"https" withString:@"http"]; - BOOL isSelf = [[NIMSDK sharedSDK].loginManager.currentAccount isEqualToString:message.from]; - if (isSelf) { - self.contraryIntelligenceportrait.hidden = YES; - self.rectifyIntelligenceportrait.hidden = NO; - [self.communicationEncouragegroundContrary uninstall]; - [self.communicationEncouragegroundRectify install]; - self.rectifyIntelligenceportrait.imageUrl = avatarUrl; - } else { - self.contraryIntelligenceportrait.hidden = NO; - self.rectifyIntelligenceportrait.hidden = YES; - [self.communicationEncouragegroundContrary install]; - [self.communicationEncouragegroundRectify uninstall]; - self.contraryIntelligenceportrait.imageUrl = avatarUrl; - } - - [self shankCommunictowardsionFlunk:model]; - if (self.communicationSatisfperformance) { - [self.communicationSatisfperformance removeFromSuperview]; - } - - NSString * classStr = [model cellStowardsisfperformance:model]; - if (classStr) { - if (![self.communicationSatisfperformance isKindOfClass:NSClassFromString(classStr)]) { - self.communicationSatisfperformance = [[NSClassFromString(classStr) alloc] init]; - } - } else { - NSAssert(classStr != nil, @"message should not be nil"); - } - [self.communicationEncourageground addSubview:self.communicationSatisfperformance]; - [self.communicationSatisfperformance mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.top.right.bottom.mas_equalTo(self.communicationEncourageground); - }]; - - if (model.isHiddenAvatar) { - self.contraryIntelligenceportrait.hidden= YES; - self.rectifyIntelligenceportrait.hidden = YES; - [self.communicationEncourageground mas_remakeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.contentView).offset(0); - make.height.mas_equalTo(model.height); - }]; - } - [self.communicationSatisfperformance render:model]; -} - -- (void)shankCommunictowardsionFlunk:(CommunicationBaseMatrix *)model { - NIMMessage * message = model.message; - BOOL isHiddenFail = YES; - if (!message.isReceivedMsg) { - isHiddenFail = message.deliveryState != NIMMessageDeliveryStateFailed; - if (message.localExt) { - NSDictionary * dic = message.localExt; - if (((NSString *)dic[@"suggestion"]).integerValue == 2) { - isHiddenFail = NO; - } - } - } else { - isHiddenFail = message.attachmentDownloadState != NIMMessageAttachmentDownloadStateFailed; - } - self.failBtuton.hidden = isHiddenFail || model.isHiddenAvatar; - if (!isHiddenFail) { - if (message.isReceivedMsg) { - [self.failBtuton mas_remakeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20, 20)); - make.centerY.mas_equalTo(self.communicationEncourageground); - make.left.mas_equalTo(self.communicationEncourageground.mas_right).offset(10); - }]; - } else { - [self.failBtuton mas_remakeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20, 20)); - make.centerY.mas_equalTo(self.communicationEncourageground); - make.right.mas_equalTo(self.communicationEncourageground.mas_left).offset(-10); - }]; - } - } -} -#pragma mark - CommunicationContentCustomRegardRepresendtation -- (void)refurbishCommunictowardsionAccomplishment:(NIMMessage *)message { - if (self.delegate && [self.delegate respondsToSelector:@selector(refurbishCommunictowardsionAccomplishment:)]) { - [self.delegate refurbishCommunictowardsionAccomplishment:message]; - } -} - -#pragma mark - Event Response -- (void)rectifyIntelligenceportraitBetowardsRecognition { - if (self.delegate && [self.delegate respondsToSelector:@selector(didBetowardsIntelligenceportrait:)]) { - [self.delegate didBetowardsIntelligenceportrait:self.currentMessage.from]; - } -} - -- (void)leftIntelligenceportraitBetowardsRecognition { - if (self.delegate && [self.delegate respondsToSelector:@selector(didBetowardsIntelligenceportrait:)]) { - [self.delegate didBetowardsIntelligenceportrait:self.currentMessage.from]; - } -} - -- (void)flunkBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(didFlunkRetry:)]) { - [self.delegate didFlunkRetry:self.currentMessage]; - } -} - -#pragma mark - Getters And Setters -- (NetIndicateRegard *)contraryIntelligenceportrait { - if (!_contraryIntelligenceportrait) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.radius = MAXFLOAT; - config.imageType = ImageGenreUserIcon; - _contraryIntelligenceportrait = [[NetIndicateRegard alloc] initWithConfig:config]; - _contraryIntelligenceportrait.layer.masksToBounds = YES; - _contraryIntelligenceportrait.layer.cornerRadius = 45.f / 2; - _contraryIntelligenceportrait.hidden = YES; - _contraryIntelligenceportrait.userInteractionEnabled = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(leftIntelligenceportraitBetowardsRecognition)]; - [_contraryIntelligenceportrait addGestureRecognizer:tap]; - } - return _contraryIntelligenceportrait; -} - -- (NetIndicateRegard *)rectifyIntelligenceportrait { - if (!_rectifyIntelligenceportrait) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.radius = MAXFLOAT; - config.imageType = ImageGenreUserIcon; - _rectifyIntelligenceportrait = [[NetIndicateRegard alloc] initWithConfig:config]; - _rectifyIntelligenceportrait.layer.masksToBounds = YES; - _rectifyIntelligenceportrait.layer.cornerRadius = 45.f / 2; - _rectifyIntelligenceportrait.hidden = YES; - _rectifyIntelligenceportrait.userInteractionEnabled = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(rectifyIntelligenceportraitBetowardsRecognition)]; - [_rectifyIntelligenceportrait addGestureRecognizer:tap]; - } - return _rectifyIntelligenceportrait; -} - -- (UIView *)communicationEncourageground { - if (!_communicationEncourageground) { - _communicationEncourageground = [[UIView alloc]init]; - _communicationEncourageground.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _communicationEncourageground.layer.masksToBounds = YES; - _communicationEncourageground.layer.cornerRadius = 8.f; - } - return _communicationEncourageground; -} - -- (UIButton *)failBtuton { - if (!_failBtuton) { - _failBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_failBtuton setImage:[UIImage imageNamed:@"yumi_msg_term_download_fail"] forState:UIControlStateNormal]; - [_failBtuton setImage:[UIImage imageNamed:@"yumi_msg_term_download_fail"] forState:UIControlStateSelected]; - [_failBtuton addTarget:self action:@selector(flunkBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _failBtuton.hidden = YES; - } - return _failBtuton; -} - - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Cell/InterlocutionConsumerAbstractTabulationRegardElement.h b/YuMi/Modules/YMMessage/View/Session/Cell/InterlocutionConsumerAbstractTabulationRegardElement.h deleted file mode 100644 index f4bc3de7..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Cell/InterlocutionConsumerAbstractTabulationRegardElement.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// InterlocutionConsumerAbstractTabulationRegardElement.h -// YUMI -// -// Created by YUMI on 2023/1/16. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ConsumerAbstractMatrix, InterlocutionConsumerAbstractTabulationRegardElement; -@protocol InterlocutionConsumerAbstractTabulationViweElementRepresendtation - -- (void)interlocutionConsumerAbstractTarbsultowardsionViweElement:(InterlocutionConsumerAbstractTabulationRegardElement *)view showUserInfoVC:(ConsumerAbstractMatrix *)userInfo; - -@end - -@interface InterlocutionConsumerAbstractTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Cell/InterlocutionConsumerAbstractTabulationRegardElement.m b/YuMi/Modules/YMMessage/View/Session/Cell/InterlocutionConsumerAbstractTabulationRegardElement.m deleted file mode 100644 index aa2a81e7..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Cell/InterlocutionConsumerAbstractTabulationRegardElement.m +++ /dev/null @@ -1,439 +0,0 @@ -// -// InterlocutionConsumerAbstractTabulationRegardElement.m -// YUMI -// -// Created by YUMI on 2023/1/16. -// - -#import "InterlocutionConsumerAbstractTabulationRegardElement.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "SpriteSheetIndicateExecutive.h" -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "UIImage+Utils.h" -#import "PLIntratemporalUtil.h" -#import "SDAppearanceBrowser.h" -#import "XCCurrentVCStackExecutive.h" -#import "StatsticsticsServingFacilitater.h" -#import "ConsumerAbstractMatrix.h" -#import "ConsumerAppearance.h" -@interface InterlocutionConsumerAbstractElement : UICollectionViewCell -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; - -@end - -@implementation InterlocutionConsumerAbstractElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.contentView); - }]; -} - -#pragma mark - Getters And Setters -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 8; - _intelligenceportraitIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _intelligenceportraitIndicateRegard; -} - -@end - -@interface InterlocutionConsumerAbstractTabulationRegardElement () -@property (nonatomic,strong) UIView *encourageRegard; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UIView *consumerRegard; -@property (nonatomic,strong) NetIndicateRegard * intelligenceportraitIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *magnificentIndicateRegard; -@property (nonatomic,strong) YYAnimatedImageView *intelligencePenetrateIndicateRegard; -@property (nonatomic, strong) SpriteSheetIndicateExecutive *manager; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UIStackView *coupleHierarchyRegard; -@property (nonatomic,strong) UIButton *seaxualityBtuton; -@property (nonatomic,strong) UIButton *constellationBtuton; -@property (nonatomic,strong) UILabel *signSequencignation; -@property (nonatomic,strong) UICollectionView *collectionView; -@end - - -@implementation InterlocutionConsumerAbstractTabulationRegardElement - - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.encourageRegard]; - [self.contentView addSubview:self.stackView]; - - [self.stackView addArrangedSubview:self.consumerRegard]; - [self.stackView addArrangedSubview:self.collectionView]; - - [self.consumerRegard addSubview:self.intelligenceportraitIndicateRegard]; - [self.consumerRegard addSubview:self.intelligencePenetrateIndicateRegard]; - - [self.consumerRegard addSubview:self.coupleHierarchyRegard]; - [self.consumerRegard addSubview:self.signSequencignation]; - - [self.coupleHierarchyRegard addArrangedSubview:self.magnificentIndicateRegard]; - [self.coupleHierarchyRegard addArrangedSubview:self.monicerSequencignation]; - [self.coupleHierarchyRegard addArrangedSubview:self.seaxualityBtuton]; - [self.coupleHierarchyRegard addArrangedSubview:self.constellationBtuton]; -} - -- (void)initChildLyRestrictions { - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(15); - make.top.mas_equalTo(self.contentView).offset(10); - }]; - - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(15); - make.bottom.mas_equalTo(self.stackView.mas_bottom).offset(16); - make.top.mas_equalTo(self.contentView).offset(10); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(56, 56)); - make.left.mas_equalTo(self.consumerRegard).offset(22); - make.top.mas_equalTo(self.encourageRegard).offset(22); - }]; - - [self.intelligencePenetrateIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.centerY.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.width.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_width).multipliedBy(1.31); - make.height.mas_equalTo(self.intelligencePenetrateIndicateRegard.mas_width); - }]; - - [self.coupleHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligencePenetrateIndicateRegard.mas_right).offset(12); - make.bottom.mas_equalTo(self.intelligencePenetrateIndicateRegard.mas_centerY).offset(-3); - }]; - - [self.magnificentIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(20); - }]; - - [self.seaxualityBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(32, 14)); - }]; - - [self.constellationBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(40, 14)); - }]; - - [self.signSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.monicerSequencignation); - make.right.mas_lessThanOrEqualTo(self.consumerRegard).offset(-5); - make.top.mas_equalTo(self.intelligencePenetrateIndicateRegard.mas_centerY).offset(3); - }]; - - [self.consumerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(76); - }]; - - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(72); - }]; -} - --(NSInteger) acquireDiana:(long )time -{ - NSDate *date = [NSDate dateWithTimeIntervalSince1970:time/1000]; - NSCalendar* calendar = [NSCalendar currentCalendar]; - NSDateComponents* components = [calendar components:NSCalendarUnitMonth fromDate:date]; - NSInteger month = components.month; - return month; -} - -- (NSInteger) acquireSeason:(long) time -{ - NSDate *date = [NSDate dateWithTimeIntervalSince1970:time/1000]; - NSCalendar* calendar = [NSCalendar currentCalendar]; - NSDateComponents* components = [calendar components:NSCalendarUnitDay fromDate:date]; - NSInteger day = components.day; - return day; -} - -- (NSString *)calcultowardseConstelltowardsionAboutDiana:(long)time { - NSString *astroString = YMLocalizedString(@"Session_User_Info_Table_View_Cell_0"); - NSString *astroFormat = @"102123444543"; - NSString *result; - - NSInteger month = [self acquireDiana:time]; - NSInteger day = [self acquireSeason:time]; - - if (month<1 || month>12 || day<1 || day>31){ - return @"错误日期格式!"; - } - - if(month==2 && day>29) - { - return @"错误日期格式!!"; - }else if(month==4 || month==6 || month==9 || month==11) { - if (day>30) { - return @"错误日期格式!!!"; - } - } - - result=[NSString stringWithFormat:@"%@",[astroString substringWithRange:NSMakeRange(month*2-(day < [[astroFormat substringWithRange:NSMakeRange((month-1), 1)] intValue] - (-19))*2,2)]]; - - return [NSString stringWithFormat:YMLocalizedString(@"Session_User_Info_Table_View_Cell_4"),result]; -} - -#pragma mark - UICollectionViewDelegate And UICollectionViewDataSource -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.userInfo.privatePhoto.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - InterlocutionConsumerAbstractElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([InterlocutionConsumerAbstractElement class]) forIndexPath:indexPath]; - ConsumerAppearance * appearance = [self.userInfo.privatePhoto secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.intelligenceportraitIndicateRegard.imageUrl = appearance.photoUrl; - return cell; -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - [collectionView deselectItemAtIndexPath:indexPath animated:YES]; - if (self.userInfo.privatePhoto.count > 0) { - InterlocutionConsumerAbstractElement * cell = (InterlocutionConsumerAbstractElement *)[collectionView cellForItemAtIndexPath:indexPath]; - SDAppearanceBrowser *browser = [[SDAppearanceBrowser alloc]init]; - browser.sourceIndicatesAccommoengagementdRegard = cell; - browser.delegate = self; - browser.indicateComputation = self.userInfo.privatePhoto.count; - browser.universalIndicateIndicatrix = indexPath.row; - browser.isMe = NO; - [browser show]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEvent_chat_toolbar_appearance_click]; - } -} - -#pragma mark - SDPhotoBrowserRepresendtation -- (NSURL *)aplictowardsionearanceBrowser:(SDAppearanceBrowser *)browser highQualityIndictowardseWEEBSITEInthecaseofIndictowardsrix:(NSInteger)index { - ConsumerAppearance * appearance = [self.userInfo.privatePhoto secureGroalTowardsIndictowardsrix1:index]; - return [NSURL URLWithString:appearance.photoUrl]; -} - -- (UIImage *)aplictowardsionearanceBrowser:(SDAppearanceBrowser *)browser placeholderIndictowardseInthecaseofIndictowardsrix:(NSInteger)index { - return [UIIndicateConstant defalutOriflammeDepapossessor]; -} - -#pragma mark - Event Response -- (void)intelligenceportraitIndictowardseRegardRecognition { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEvent_chat_frame_datacard_head_click]; - if (self.delegate && [self.delegate respondsToSelector:@selector(interlocutionConsumerAbstractTarbsultowardsionViweElement:showUserInfoVC:)]) { - [self.delegate interlocutionConsumerAbstractTarbsultowardsionViweElement:self showUserInfoVC:self.userInfo]; - } -} - -#pragma mark - Getters And Setters -- (void)setUserInfo:(ConsumerAbstractMatrix *)userInfo { - _userInfo = userInfo; - if (_userInfo) { - self.intelligenceportraitIndicateRegard.imageUrl = _userInfo.avatar; - NSString * nick = _userInfo.nick; - if (nick.length > 10) { - nick = [nick substringToIndex:10]; - nick = [NSString stringWithFormat:@"%@...", nick]; - } - self.monicerSequencignation.text = nick; - self.signSequencignation.text = _userInfo.userDesc.length > 0 ? _userInfo.userDesc : YMLocalizedString(@"Session_User_Info_Table_View_Cell_5"); - self.magnificentIndicateRegard.imageUrl = _userInfo.userVipInfoVO.vipIcon; - self.magnificentIndicateRegard.hidden = _userInfo.userVipInfoVO.vipIcon.length > 0 ? NO : YES; - NSString * headurl = userInfo.headwearEffect.length > 0 ? userInfo.headwearEffect : userInfo.headwearPic; - if (headurl.length >0) { - self.intelligencePenetrateIndicateRegard.hidden = NO; - NSURL *url = [NSURL URLWithString:headurl]; - @kWeakify(self); - [self.manager chamberSpriteSheetIndictowardseAboutWEEBSITE:url completionBlock:^(YYSpriteSheetImage * _Nullable sprit) { - @kStrongify(self); - self.intelligencePenetrateIndicateRegard.image = sprit; - } failureBlock:^(NSError * _Nullable error) { - }]; - } else { - self.intelligencePenetrateIndicateRegard.hidden = YES; - } - self.collectionView.hidden = _userInfo.privatePhoto.count <= 0; - if (_userInfo.gender == GenderGenre_Male) { - [self.seaxualityBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor colorAboutHexBWSttr:@"#45BBFF"], [DJDKMIMOMColor colorAboutHexBWSttr:@"#8AD4FF"]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [self.seaxualityBtuton setImage:[UIImage imageNamed:@"yumi_term_user_sex_male"] forState:UIControlStateNormal]; - } else { - [self.seaxualityBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor colorAboutHexBWSttr:@"#FF497D"], [DJDKMIMOMColor colorAboutHexBWSttr:@"#FF90AE"]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [self.seaxualityBtuton setImage:[UIImage imageNamed:@"yumi_term_user_sex_female"] forState:UIControlStateNormal]; - } - [self.seaxualityBtuton setTitle:[NSString stringWithFormat:@"%ld", [PLIntratemporalUtil ageAboutEngagementByvirtueofBirth:_userInfo.birth]] forState:UIControlStateNormal]; - [self.constellationBtuton setTitle:[self calcultowardseConstelltowardsionAboutDiana:_userInfo.birth] forState:UIControlStateNormal]; - [self.collectionView reloadData]; - } -} - -- (UIView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIView alloc] init]; - _encourageRegard.backgroundColor = [UIColor whiteColor]; - _encourageRegard.layer.masksToBounds = YES; - _encourageRegard.layer.cornerRadius = 8; - } - return _encourageRegard; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 12; - } - return _stackView; -} - -- (UIView *)consumerRegard { - if (!_consumerRegard) { - _consumerRegard = [[UIView alloc] init]; - _consumerRegard.backgroundColor = [UIColor clearColor]; - } - return _consumerRegard; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.userInteractionEnabled = YES; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 56 / 2; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(intelligenceportraitIndictowardseRegardRecognition)]; - [_intelligenceportraitIndicateRegard addGestureRecognizer:tap]; - } - return _intelligenceportraitIndicateRegard; -} - - -- (UIStackView *)coupleHierarchyRegard { - if (!_coupleHierarchyRegard) { - _coupleHierarchyRegard = [[UIStackView alloc] init]; - _coupleHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _coupleHierarchyRegard.distribution = UIStackViewDistributionFill; - _coupleHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _coupleHierarchyRegard.spacing = 3; - } - return _coupleHierarchyRegard; -} - -- (YYAnimatedImageView *)intelligencePenetrateIndicateRegard { - if (!_intelligencePenetrateIndicateRegard) { - _intelligencePenetrateIndicateRegard = [[YYAnimatedImageView alloc] init]; - _intelligencePenetrateIndicateRegard.backgroundColor = [UIColor clearColor]; - _intelligencePenetrateIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _intelligencePenetrateIndicateRegard; -} - -- (SpriteSheetIndicateExecutive *)manager { - if (!_manager) { - _manager = [[SpriteSheetIndicateExecutive alloc] init]; - } - return _manager; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:16 weight:UIFontWeightBold]; - _monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _monicerSequencignation; -} - -- (NetIndicateRegard *)magnificentIndicateRegard { - if (!_magnificentIndicateRegard) { - _magnificentIndicateRegard = [[NetIndicateRegard alloc] init]; - } - return _magnificentIndicateRegard; -} - -- (UILabel *)signSequencignation { - if (!_signSequencignation) { - _signSequencignation = [[UILabel alloc] init]; - _signSequencignation.font = [UIFont systemFontOfSize:12]; - _signSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - } - return _signSequencignation; -} - -- (UICollectionView *)collectionView{ - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.sectionInset = UIEdgeInsetsMake(00, 15, 0, 0); - layout.itemSize = CGSizeMake(72, 72); - layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; - layout.minimumLineSpacing = 8; - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.backgroundColor = [UIColor clearColor]; - [_collectionView registerClass:[InterlocutionConsumerAbstractElement class] forCellWithReuseIdentifier:NSStringFromClass([InterlocutionConsumerAbstractElement class])]; - } - return _collectionView; -} - -- (UIButton *)seaxualityBtuton { - if (!_seaxualityBtuton) { - _seaxualityBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_seaxualityBtuton setTitle:@"0" forState:UIControlStateNormal]; - [_seaxualityBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _seaxualityBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - [_seaxualityBtuton setTitleEdgeInsets:UIEdgeInsetsMake(0, 3, 0, 0)]; - _seaxualityBtuton.layer.masksToBounds = YES; - _seaxualityBtuton.layer.cornerRadius = 7; - } - return _seaxualityBtuton; -} - -- (UIButton *)constellationBtuton { - if (!_constellationBtuton) { - _constellationBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_constellationBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _constellationBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - [_constellationBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor colorAboutHexBWSttr:@"#8AD4FF"], [DJDKMIMOMColor colorAboutHexBWSttr:@"#45BBFF"]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _constellationBtuton.layer.masksToBounds = YES; - _constellationBtuton.layer.cornerRadius = 7; - } - return _constellationBtuton; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Cell/InterlocutionInstanllingTabulationRegardElement.h b/YuMi/Modules/YMMessage/View/Session/Cell/InterlocutionInstanllingTabulationRegardElement.h deleted file mode 100644 index ea3287a0..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Cell/InterlocutionInstanllingTabulationRegardElement.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// InterlocutionInstanllingTabulationRegardElement.h -// YUMI -// -// Created by YUMI on 2023/1/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class InterlocutionInstanllingMatrix, InterlocutionInstanllingTabulationRegardElement; -@protocol InterlocutionInstanllingTabulationViweElementRepresendtation - -- (void)interlocutionInstanllingTarbsultowardsionViweElement:(InterlocutionInstanllingMatrix *)item switchState:(UISwitch *)switchOn; - -@end -@interface InterlocutionInstanllingTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) InterlocutionInstanllingMatrix *instanllingProvision; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Cell/InterlocutionInstanllingTabulationRegardElement.m b/YuMi/Modules/YMMessage/View/Session/Cell/InterlocutionInstanllingTabulationRegardElement.m deleted file mode 100644 index 36b6c116..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Cell/InterlocutionInstanllingTabulationRegardElement.m +++ /dev/null @@ -1,157 +0,0 @@ -// -// InterlocutionInstanllingTabulationRegardElement.m -// YUMI -// -// Created by YUMI on 2023/1/18. -// - -#import "InterlocutionInstanllingTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "InterlocutionInstanllingMatrix.h" -@interface InterlocutionInstanllingTabulationRegardElement () - -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UISwitch *switchView; -@property (nonatomic,strong) UIImageView *arrowIndicateRegard; -@property (nonatomic,strong) UIView *burlywoodRegard; -@end - - -@implementation InterlocutionInstanllingTabulationRegardElement - - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.titleLabel]; - [self.contentView addSubview:self.stackView]; - [self.contentView addSubview:self.burlywoodRegard]; - - [self.stackView addArrangedSubview:self.switchView]; - [self.stackView addArrangedSubview:self.arrowIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.contentView).offset(15); - make.centerY.mas_equalTo(self.contentView); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.contentView); - make.height.mas_equalTo(0.5); - make.left.right.mas_equalTo(self.contentView).inset(15); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.contentView).offset(-15); - make.centerY.mas_equalTo(self.contentView); - }]; - - [self.arrowIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(5.5, 10)); - }]; - -} - -#pragma mark - Event Response -- (void)swopDidDiversifictowardsion:(UISwitch *)switchOn { - if (self.delegate && [self.delegate respondsToSelector:@selector(interlocutionInstanllingTarbsultowardsionViweElement:switchState:)]) { - [self.delegate interlocutionInstanllingTarbsultowardsionViweElement:self.instanllingProvision switchState:switchOn]; - } -} - -#pragma mark - Getters And Setters -- (void)setSettingItem:(InterlocutionInstanllingMatrix *)instanllingProvision { - _instanllingProvision = instanllingProvision; - if (_instanllingProvision) { - self.titleLabel.text = _instanllingProvision.title; - switch (_instanllingProvision.settingType) { - case InterlocutionInstanllingGenre_Top: - { - self.arrowIndicateRegard.hidden = YES; - self.switchView.hidden = NO; - self.switchView.on = _instanllingProvision.state; - } - break; - case InterlocutionInstanllingGenre_black: - { - self.arrowIndicateRegard.hidden = YES; - self.switchView.hidden = NO; - self.switchView.on = _instanllingProvision.state; - } - break; - case InterlocutionInstanllingGenre_report: - { - self.arrowIndicateRegard.hidden = NO; - self.switchView.hidden = YES; - } - break; - default: - break; - } - } -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:14]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentCenter; - _stackView.spacing = 10; - } - return _stackView; -} - -- (UISwitch *)switchView { - if (!_switchView) { - _switchView = [[UISwitch alloc] init]; - _switchView.onTintColor = [DJDKMIMOMColor aplictowardsionUnderlinePrettify]; - _switchView.tintColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - _switchView.backgroundColor = [UIColor clearColor]; - [_switchView addTarget:self action:@selector(swopDidDiversifictowardsion:) forControlEvents:UIControlEventValueChanged]; - } - return _switchView; -} - -- (UIImageView *)arrowIndicateRegard { - if (!_arrowIndicateRegard) { - _arrowIndicateRegard = [[UIImageView alloc] init]; - _arrowIndicateRegard.userInteractionEnabled = YES; - _arrowIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_setting_arrow"]; - } - return _arrowIndicateRegard; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [DJDKMIMOMColor performanceSepartowardsorPrettify]; - } - return _burlywoodRegard; -} - - - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Cell/MessageCell.h b/YuMi/Modules/YMMessage/View/Session/Cell/MessageCell.h new file mode 100644 index 00000000..3c8e1bd0 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Cell/MessageCell.h @@ -0,0 +1,38 @@ +// +// MessageCell.h +// YUMI +// +// Created by zu on 2021/11/28. +// + +#import +#import +#import "MessageBaseModel.h" +NS_ASSUME_NONNULL_BEGIN + +@protocol MessageCellDelegate + +///更新消息成功 +- (void)updateMessageSuccess:(NIMMessage *)message; + +- (void)didTapAvatar:(NSString *)uid; +///发送失败点击了重试 +- (void)didFailRetry:(NIMMessage *)message; +///撤回消息消息成功 +- (void)revokeMessageSuccess:(NIMMessage *)message; +///删除消息成功 +- (void)deleteMessageSuccess:(NIMMessage *)message; +@end + +@interface MessageCell : UITableViewCell + +//+ (CGFloat)measureHeight:(NIMMessage *)message; +- (void)renderWithMessage:(MessageBaseModel *)message; +///代理 +@property (nonatomic,weak) id delegate; + +///是否在房间中 +@property (nonatomic,assign) BOOL isInRoom; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Cell/MessageCell.m b/YuMi/Modules/YMMessage/View/Session/Cell/MessageCell.m new file mode 100644 index 00000000..01b5a3f7 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Cell/MessageCell.m @@ -0,0 +1,376 @@ +// +// MessageCell.m +// YUMI +// +// Created by zu on 2021/11/28. +// + +#import "MessageCell.h" +#import "MessageContentProtocol.h" +#import "MessageContentText.h" +#import "MessageContentImage.h" +#import "MessageContentTextClickable.h" +#import "MessageContentCustomView.h" +#import "MessageContentGiftView.h" +#import "MessageContentGuildView.h" +#import "MessageContentUnSupportView.h" +#import "MessageContentOpenLiveView.h" +#import "MessageContentApplicationShareView.h" +#import "MessageContentLevelUpgradeView.h" +#import "MessageConentAudioView.h" +#import "MessageContentTweetView.h" +#import "MessageContentSkillCardView.h" +#import "MessageContentFindNewGreetView.h" +#import "MessageContentRiskAlertView.h" +#import "MessageContentMonentsView.h" +#import "MessageContentMonentsAutoView.h" +#import "MessageContentRedPacketView.h" +#import "MessageTimeView.h" +#import "StatisticsServiceHelper.h" + +#import "AttachmentModel.h" +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" +#import "PLTimeUtil.h" + +#import "YUMIMacroUitls.h" +#import + +@interface MessageCell() + +@property (nonatomic, assign) NIMMessageType messageType; + +/** + 左侧头像(私聊对象) + */ +@property (nonatomic, strong) NetImageView * leftAvatar; + +/** + 右侧头像(自己) + */ +@property (nonatomic, strong) NetImageView * rightAvatar; +///处理失败的 +@property (nonatomic,strong) UIButton *failButton; + +/** + 消息背景 + */ +@property (nonatomic, strong) UIView * messageBackground; +@property (nonatomic, strong) MASConstraint * messageBackgroundLeft; +@property (nonatomic, strong) MASConstraint * messageBackgroundRight; +/** + 消息内容实体 + */ +@property (nonatomic, strong) UIView * messageContent; +///当前的消息 +@property (nonatomic,strong) NIMMessage *currentMessage; +///当前的实体 +@property (nonatomic,strong) MessageBaseModel *currentModel; +@end + +@implementation MessageCell + + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; + if (self) { + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self initViews]; + [self initLayout]; + } + return self; +} + +- (void)initViews { + self.backgroundColor = UIColor.clearColor; + [self.contentView addSubview:self.leftAvatar]; + [self.contentView addSubview:self.rightAvatar]; + [self.contentView addSubview:self.messageBackground]; + [self.contentView addSubview:self.failButton]; + + + //在自定义cell中的init方法加入 + UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressCellHandle:)]; + longPressGesture.minimumPressDuration = 0.5; + [self.messageBackground addGestureRecognizer:longPressGesture]; +} + +- (void)initLayout { + [self.leftAvatar mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.mas_equalTo(self).offset(15); + make.width.height.mas_equalTo(45); + }]; + + [self.rightAvatar mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self).offset(15); + make.right.mas_equalTo(self).offset(-15); + make.width.height.mas_equalTo(45); + }]; + + [self.messageBackground mas_makeConstraints:^(MASConstraintMaker *make) { + self.messageBackgroundLeft = make.left.mas_equalTo(self.leftAvatar.mas_right).offset(15); + self.messageBackgroundRight = make.right.mas_equalTo(self.rightAvatar.mas_left).offset(-15); + make.top.mas_equalTo(self).offset(20); + }]; + + [self.failButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20, 20)); + make.centerY.mas_equalTo(self.messageBackground); + make.left.mas_equalTo(self.messageBackground.mas_right).offset(10); + }]; +} + +//并加上几个方法 + +-(void)longPressCellHandle:(UILongPressGestureRecognizer *)gesture { + if (!self.currentMessage) { + return; + } + if(gesture.state==UIGestureRecognizerStateBegan) { + [self becomeFirstResponder]; + + UIMenuController *menuController = [UIMenuController sharedMenuController]; + + UIMenuItem *copyItem = [[UIMenuItem alloc] initWithTitle:YMLocalizedString(@"MessageCell0") action:@selector(menuCopyBtnPressed:)]; + UIMenuItem *deleteItem = [[UIMenuItem alloc] initWithTitle:YMLocalizedString(@"MessageCell1") action:@selector(menuDeleteCopyBtnPressed:)]; + UIMenuItem *revokeItem = [[UIMenuItem alloc] initWithTitle:YMLocalizedString(@"MessageCell2") action:@selector(menuRevokeBtnPressed:)]; + NSMutableArray * array = [NSMutableArray array]; + if ((self.currentMessage.messageType == NIMMessageTypeText) && !self.currentModel.isHiddenAvatar) { + [array addObject:copyItem]; + } + + if (!self.currentModel.isHiddenAvatar) { + [array addObject:deleteItem]; + } + + if (self.currentMessage.isOutgoingMsg && [self checkDataWith:self.currentMessage.timestamp] && (self.currentMessage.messageType == NIMMessageTypeText || self.currentMessage.messageType == NIMMessageTypeImage || self.currentMessage.messageType == NIMMessageTypeAudio)){ + [array addObject:revokeItem]; + } + menuController.menuItems = array; + + [menuController setTargetRect:gesture.view.frame inView:gesture.view.superview]; + + [menuController setMenuVisible:YES animated:YES]; + + [UIMenuController sharedMenuController].menuItems=nil; + } +} + +- (BOOL)checkDataWith:(long)currentStr { + NSDate* date = [NSDate dateWithTimeIntervalSince1970:currentStr]; + NSCalendar * calendar = [NSCalendar currentCalendar]; + NSCalendarUnit unit =NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond; + NSDateComponents * cmps = [calendar components:unit fromDate:date toDate:[NSDate date] options:0]; + if (cmps.minute <= 2) { + return YES; + } + return NO; +} + +-(void)menuCopyBtnPressed:(UIMenuItem *)menuItem { + [UIPasteboard generalPasteboard].string = self.currentMessage.text; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEvent_chat_dialogue_copy_click]; +} + +- (void)menuDeleteCopyBtnPressed:(UIMenuItem *)menuItem { + NIMDeleteMessageOption * opt = [[NIMDeleteMessageOption alloc] init]; + opt.removeFromDB = YES; + [[NIMSDK sharedSDK].conversationManager deleteMessage:self.currentMessage option:opt]; + if (self.delegate && [self.delegate respondsToSelector:@selector(deleteMessageSuccess:)]) { + [self.delegate deleteMessageSuccess:self.currentMessage]; + } + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEvent_chat_dialogue_delete_click]; +} + +- (void)menuRevokeBtnPressed:(UIMenuItem *)menuItem { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEvent_chat_dialogue_revocation_click]; + if (self.currentMessage) { + NIMRevokeMessageOption * option = [[NIMRevokeMessageOption alloc] init]; + option.shouldBeCounted = NO; + [[NIMSDK sharedSDK].chatManager revokeMessage:self.currentMessage option:option completion:^(NSError * _Nullable error) { + if (error == nil) { + if (self.delegate && [self.delegate respondsToSelector:@selector(revokeMessageSuccess:)]) { + [self.delegate revokeMessageSuccess:self.currentMessage]; + } + } + }]; + } +} + +-(BOOL)canBecomeFirstResponder { + return YES; +} + +-(BOOL)canPerformAction:(SEL)action withSender:(id)sender { + if (action == @selector(menuCopyBtnPressed:) || action == @selector(menuDeleteCopyBtnPressed:) || action == @selector(menuRevokeBtnPressed:)) { + return YES; + } + return NO; +} + +- (void)renderWithMessage:(MessageBaseModel *)model { + NIMMessage * message = model.message; + self.currentModel = model; + self.currentMessage = message; + NSString * avatarUrl = [[NIMSDK sharedSDK].userManager userInfo:message.from].userInfo.avatarUrl; + avatarUrl = [avatarUrl stringByReplacingOccurrencesOfString:@"https" withString:@"http"]; + BOOL isSelf = [[NIMSDK sharedSDK].loginManager.currentAccount isEqualToString:message.from]; + if (isSelf) { + self.leftAvatar.hidden = YES; + self.rightAvatar.hidden = NO; + [self.messageBackgroundLeft uninstall]; + [self.messageBackgroundRight install]; + self.rightAvatar.imageUrl = avatarUrl; + } else { + self.leftAvatar.hidden = NO; + self.rightAvatar.hidden = YES; + [self.messageBackgroundLeft install]; + [self.messageBackgroundRight uninstall]; + self.leftAvatar.imageUrl = avatarUrl; + } + + [self handleMessageFail:model]; + if (self.messageContent) { + [self.messageContent removeFromSuperview]; + } + + NSString * classStr = [model cellContent:model]; + if (classStr) { + if (![self.messageContent isKindOfClass:NSClassFromString(classStr)]) { + self.messageContent = [[NSClassFromString(classStr) alloc] init]; + } + } else { + NSAssert(classStr != nil, @"message should not be nil"); + } + [self.messageBackground addSubview:self.messageContent]; + [self.messageContent mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.right.bottom.mas_equalTo(self.messageBackground); + }]; + + if (model.isHiddenAvatar) { + self.leftAvatar.hidden= YES; + self.rightAvatar.hidden = YES; + [self.messageBackground mas_remakeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.contentView).offset(0); + make.height.mas_equalTo(model.height); + }]; + } + [self.messageContent render:model]; +} + +- (void)handleMessageFail:(MessageBaseModel *)model { + NIMMessage * message = model.message; + BOOL isHiddenFail = YES; + if (!message.isReceivedMsg) { + isHiddenFail = message.deliveryState != NIMMessageDeliveryStateFailed; + if (message.localExt) { + NSDictionary * dic = message.localExt; + if (((NSString *)dic[@"suggestion"]).integerValue == 2) { + isHiddenFail = NO; + } + } + } else { + isHiddenFail = message.attachmentDownloadState != NIMMessageAttachmentDownloadStateFailed; + } + self.failButton.hidden = isHiddenFail || model.isHiddenAvatar; + if (!isHiddenFail) { + if (message.isReceivedMsg) { + [self.failButton mas_remakeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20, 20)); + make.centerY.mas_equalTo(self.messageBackground); + make.left.mas_equalTo(self.messageBackground.mas_right).offset(10); + }]; + } else { + [self.failButton mas_remakeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20, 20)); + make.centerY.mas_equalTo(self.messageBackground); + make.right.mas_equalTo(self.messageBackground.mas_left).offset(-10); + }]; + } + } +} +#pragma mark - MessageContentCustomViewDelegate +- (void)updateMessageSuccess:(NIMMessage *)message { + if (self.delegate && [self.delegate respondsToSelector:@selector(updateMessageSuccess:)]) { + [self.delegate updateMessageSuccess:message]; + } +} + +#pragma mark - Event Response +- (void)rightAvatarTapRecognizer { + if (self.delegate && [self.delegate respondsToSelector:@selector(didTapAvatar:)]) { + [self.delegate didTapAvatar:self.currentMessage.from]; + } +} + +- (void)leftAvatarTapRecognizer { + if (self.delegate && [self.delegate respondsToSelector:@selector(didTapAvatar:)]) { + [self.delegate didTapAvatar:self.currentMessage.from]; + } +} + +- (void)failButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(didFailRetry:)]) { + [self.delegate didFailRetry:self.currentMessage]; + } +} + +#pragma mark - Getters And Setters +- (NetImageView *)leftAvatar { + if (!_leftAvatar) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.radius = MAXFLOAT; + config.imageType = ImageTypeUserIcon; + _leftAvatar = [[NetImageView alloc] initWithConfig:config]; + _leftAvatar.layer.masksToBounds = YES; + _leftAvatar.layer.cornerRadius = 45.f / 2; + _leftAvatar.hidden = YES; + _leftAvatar.userInteractionEnabled = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(leftAvatarTapRecognizer)]; + [_leftAvatar addGestureRecognizer:tap]; + } + return _leftAvatar; +} + +- (NetImageView *)rightAvatar { + if (!_rightAvatar) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.radius = MAXFLOAT; + config.imageType = ImageTypeUserIcon; + _rightAvatar = [[NetImageView alloc] initWithConfig:config]; + _rightAvatar.layer.masksToBounds = YES; + _rightAvatar.layer.cornerRadius = 45.f / 2; + _rightAvatar.hidden = YES; + _rightAvatar.userInteractionEnabled = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(rightAvatarTapRecognizer)]; + [_rightAvatar addGestureRecognizer:tap]; + } + return _rightAvatar; +} + +- (UIView *)messageBackground { + if (!_messageBackground) { + _messageBackground = [[UIView alloc]init]; + _messageBackground.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _messageBackground.layer.masksToBounds = YES; + _messageBackground.layer.cornerRadius = 8.f; + } + return _messageBackground; +} + +- (UIButton *)failButton { + if (!_failButton) { + _failButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_failButton setImage:[UIImage imageNamed:@"message_session_download_fail"] forState:UIControlStateNormal]; + [_failButton setImage:[UIImage imageNamed:@"message_session_download_fail"] forState:UIControlStateSelected]; + [_failButton addTarget:self action:@selector(failButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _failButton.hidden = YES; + } + return _failButton; +} + + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Cell/SessionSettingTableViewCell.h b/YuMi/Modules/YMMessage/View/Session/Cell/SessionSettingTableViewCell.h new file mode 100644 index 00000000..ad28caf8 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Cell/SessionSettingTableViewCell.h @@ -0,0 +1,23 @@ +// +// SessionSettingTableViewCell.h +// YUMI +// +// Created by YUMI on 2023/1/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class SessionSettingModel, SessionSettingTableViewCell; +@protocol SessionSettingTableViewCellDelegate + +- (void)sessionSettingTableViewCell:(SessionSettingModel *)item switchState:(UISwitch *)switchOn; + +@end +@interface SessionSettingTableViewCell : UITableViewCell +@property (nonatomic,strong) SessionSettingModel *settingItem; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Cell/SessionSettingTableViewCell.m b/YuMi/Modules/YMMessage/View/Session/Cell/SessionSettingTableViewCell.m new file mode 100644 index 00000000..05e07a76 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Cell/SessionSettingTableViewCell.m @@ -0,0 +1,165 @@ +// +// SessionSettingTableViewCell.m +// YUMI +// +// Created by YUMI on 2023/1/18. +// + +#import "SessionSettingTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +///Model +#import "SessionSettingModel.h" +@interface SessionSettingTableViewCell () + +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///开关盒箭头的容器 +@property (nonatomic,strong) UIStackView *stackView; +///开关 +@property (nonatomic,strong) UISwitch *switchView; +///箭头 +@property (nonatomic,strong) UIImageView *arrowImageView; +///分割线 +@property (nonatomic,strong) UIView *lineView; +@end + + +@implementation SessionSettingTableViewCell + + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.titleLabel]; + [self.contentView addSubview:self.stackView]; + [self.contentView addSubview:self.lineView]; + + [self.stackView addArrangedSubview:self.switchView]; + [self.stackView addArrangedSubview:self.arrowImageView]; +} + +- (void)initSubViewConstraints { + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.contentView).offset(15); + make.centerY.mas_equalTo(self.contentView); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.contentView); + make.height.mas_equalTo(0.5); + make.left.right.mas_equalTo(self.contentView).inset(15); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.contentView).offset(-15); + make.centerY.mas_equalTo(self.contentView); + }]; + + [self.arrowImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(5.5, 10)); + }]; + +} + +#pragma mark - Event Response +- (void)switchDidChange:(UISwitch *)switchOn { + if (self.delegate && [self.delegate respondsToSelector:@selector(sessionSettingTableViewCell:switchState:)]) { + [self.delegate sessionSettingTableViewCell:self.settingItem switchState:switchOn]; + } +} + +#pragma mark - Getters And Setters +- (void)setSettingItem:(SessionSettingModel *)settingItem { + _settingItem = settingItem; + if (_settingItem) { + self.titleLabel.text = _settingItem.title; + switch (_settingItem.settingType) { + case SessionSettingType_Top: + { + self.arrowImageView.hidden = YES; + self.switchView.hidden = NO; + self.switchView.on = _settingItem.state; + } + break; + case SessionSettingType_black: + { + self.arrowImageView.hidden = YES; + self.switchView.hidden = NO; + self.switchView.on = _settingItem.state; + } + break; + case SessionSettingType_report: + { + self.arrowImageView.hidden = NO; + self.switchView.hidden = YES; + } + break; + default: + break; + } + } +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:14]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentCenter; + _stackView.spacing = 10; + } + return _stackView; +} + +- (UISwitch *)switchView { + if (!_switchView) { + _switchView = [[UISwitch alloc] init]; + _switchView.onTintColor = [DJDKMIMOMColor appEmphasizeColor]; + _switchView.tintColor = [DJDKMIMOMColor appMainColor]; + _switchView.backgroundColor = [UIColor clearColor]; + [_switchView addTarget:self action:@selector(switchDidChange:) forControlEvents:UIControlEventValueChanged]; + } + return _switchView; +} + +- (UIImageView *)arrowImageView { + if (!_arrowImageView) { + _arrowImageView = [[UIImageView alloc] init]; + _arrowImageView.userInteractionEnabled = YES; + _arrowImageView.image = [UIImage imageNamed:@"room_setting_arrow"]; + } + return _arrowImageView; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [DJDKMIMOMColor actionSeparatorColor]; + } + return _lineView; +} + + + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Cell/SessionUserInfoTableViewCell.h b/YuMi/Modules/YMMessage/View/Session/Cell/SessionUserInfoTableViewCell.h new file mode 100644 index 00000000..abf0ff4e --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Cell/SessionUserInfoTableViewCell.h @@ -0,0 +1,25 @@ +// +// SessionUserInfoTableViewCell.h +// YUMI +// +// Created by YUMI on 2023/1/16. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class UserInfoModel, SessionUserInfoTableViewCell; +@protocol SessionUserInfoTableViewCellDelegate + +- (void)sessionUserInfoTableViewCell:(SessionUserInfoTableViewCell *)view showUserInfoVC:(UserInfoModel *)userInfo; + +@end + +@interface SessionUserInfoTableViewCell : UITableViewCell +///用户信息 +@property (nonatomic,strong) UserInfoModel *userInfo; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Cell/SessionUserInfoTableViewCell.m b/YuMi/Modules/YMMessage/View/Session/Cell/SessionUserInfoTableViewCell.m new file mode 100644 index 00000000..b35f8018 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Cell/SessionUserInfoTableViewCell.m @@ -0,0 +1,457 @@ +// +// SessionUserInfoTableViewCell.m +// YUMI +// +// Created by YUMI on 2023/1/16. +// + +#import "SessionUserInfoTableViewCell.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "SpriteSheetImageManager.h" +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" +#import "UIImage+Utils.h" +#import "PLTimeUtil.h" +#import "SDPhotoBrowser.h" +#import "XCCurrentVCStackManager.h" +#import "StatisticsServiceHelper.h" +///Model +#import "UserInfoModel.h" +#import "UserPhoto.h" +@interface SessionUserInfoCell : UICollectionViewCell +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; + +@end + +@implementation SessionUserInfoCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.avatarImageView]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.contentView); + }]; +} + +#pragma mark - Getters And Setters +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 8; + _avatarImageView.contentMode = UIViewContentModeScaleAspectFill; + } + return _avatarImageView; +} + +@end + +@interface SessionUserInfoTableViewCell () +///背景 +@property (nonatomic,strong) UIView *backView; +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///用户信息 +@property (nonatomic,strong) UIView *userView; +///头像 +@property (nonatomic,strong) NetImageView * avatarImageView; +///贵族等级icon +@property (nonatomic,strong) NetImageView *nobleImageView; +///普通的 +@property (nonatomic,strong) YYAnimatedImageView *headWearImageView; +///头饰播放 +@property (nonatomic, strong) SpriteSheetImageManager *manager; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; +/// +@property (nonatomic,strong) UIStackView *tagStackView; +///性别 +@property (nonatomic,strong) UIButton *sexButton; +///星座 +@property (nonatomic,strong) UIButton *constellationButton; +///签名 +@property (nonatomic,strong) UILabel *signLabel; +///列表 +@property (nonatomic,strong) UICollectionView *collectionView; +@end + + +@implementation SessionUserInfoTableViewCell + + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.backView]; + [self.contentView addSubview:self.stackView]; + + [self.stackView addArrangedSubview:self.userView]; + [self.stackView addArrangedSubview:self.collectionView]; + + [self.userView addSubview:self.avatarImageView]; + [self.userView addSubview:self.headWearImageView]; + + [self.userView addSubview:self.tagStackView]; + [self.userView addSubview:self.signLabel]; + + [self.tagStackView addArrangedSubview:self.nobleImageView]; + [self.tagStackView addArrangedSubview:self.nickLabel]; + [self.tagStackView addArrangedSubview:self.sexButton]; + [self.tagStackView addArrangedSubview:self.constellationButton]; +} + +- (void)initSubViewConstraints { + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + make.top.mas_equalTo(self.contentView).offset(10); + }]; + + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + make.bottom.mas_equalTo(self.stackView.mas_bottom).offset(16); + make.top.mas_equalTo(self.contentView).offset(10); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(56, 56)); + make.left.mas_equalTo(self.userView).offset(22); + make.top.mas_equalTo(self.backView).offset(22); + }]; + + [self.headWearImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.centerY.mas_equalTo(self.avatarImageView); + make.width.mas_equalTo(self.avatarImageView.mas_width).multipliedBy(1.31); + make.height.mas_equalTo(self.headWearImageView.mas_width); + }]; + + [self.tagStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.headWearImageView.mas_right).offset(12); + make.bottom.mas_equalTo(self.headWearImageView.mas_centerY).offset(-3); + }]; + + [self.nobleImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(20); + }]; + + [self.sexButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(32, 14)); + }]; + + [self.constellationButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(40, 14)); + }]; + + [self.signLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nickLabel); + make.right.mas_lessThanOrEqualTo(self.userView).offset(-5); + make.top.mas_equalTo(self.headWearImageView.mas_centerY).offset(3); + }]; + + [self.userView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(76); + }]; + + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(72); + }]; +} + +-(NSInteger) getMonth:(long )time +{ + NSDate *date = [NSDate dateWithTimeIntervalSince1970:time/1000]; + NSCalendar* calendar = [NSCalendar currentCalendar]; + NSDateComponents* components = [calendar components:NSCalendarUnitMonth fromDate:date]; + NSInteger month = components.month; + return month; +} + +- (NSInteger) getDay:(long) time +{ + NSDate *date = [NSDate dateWithTimeIntervalSince1970:time/1000]; + NSCalendar* calendar = [NSCalendar currentCalendar]; + NSDateComponents* components = [calendar components:NSCalendarUnitDay fromDate:date]; + NSInteger day = components.day; + return day; +} + +///计算星座 +- (NSString *)calculateConstellationWithMonth:(long)time { + NSString *astroString = YMLocalizedString(@"SessionUserInfoTableViewCell0"); + NSString *astroFormat = @"102123444543"; + NSString *result; + + NSInteger month = [self getMonth:time]; + NSInteger day = [self getDay:time]; + + if (month<1 || month>12 || day<1 || day>31){ + return @"错误日期格式!"; + } + + if(month==2 && day>29) + { + return @"错误日期格式!!"; + }else if(month==4 || month==6 || month==9 || month==11) { + if (day>30) { + return @"错误日期格式!!!"; + } + } + + result=[NSString stringWithFormat:@"%@",[astroString substringWithRange:NSMakeRange(month*2-(day < [[astroFormat substringWithRange:NSMakeRange((month-1), 1)] intValue] - (-19))*2,2)]]; + + return [NSString stringWithFormat:YMLocalizedString(@"SessionUserInfoTableViewCell4"),result]; +} + +#pragma mark - UICollectionViewDelegate And UICollectionViewDataSource +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.userInfo.privatePhoto.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + SessionUserInfoCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([SessionUserInfoCell class]) forIndexPath:indexPath]; + UserPhoto * photo = [self.userInfo.privatePhoto safeObjectAtIndex1:indexPath.row]; + cell.avatarImageView.imageUrl = photo.photoUrl; + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + [collectionView deselectItemAtIndexPath:indexPath animated:YES]; + if (self.userInfo.privatePhoto.count > 0) { + SessionUserInfoCell * cell = (SessionUserInfoCell *)[collectionView cellForItemAtIndexPath:indexPath]; + SDPhotoBrowser *browser = [[SDPhotoBrowser alloc]init]; + browser.sourceImagesContainerView = cell; + browser.delegate = self; + browser.imageCount = self.userInfo.privatePhoto.count; + browser.currentImageIndex = indexPath.row; + browser.isMe = NO; + [browser show]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEvent_chat_toolbar_photo_click]; + } +} + +#pragma mark - SDPhotoBrowserDelegate +- (NSURL *)photoBrowser:(SDPhotoBrowser *)browser highQualityImageURLForIndex:(NSInteger)index { + UserPhoto * photo = [self.userInfo.privatePhoto safeObjectAtIndex1:index]; + return [NSURL URLWithString:photo.photoUrl]; +} + +- (UIImage *)photoBrowser:(SDPhotoBrowser *)browser placeholderImageForIndex:(NSInteger)index { + return [UIImageConstant defalutBannerPlaceholder]; +} + +#pragma mark - Event Response +- (void)avatarImageViewRecognizer { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEvent_chat_frame_datacard_head_click]; + if (self.delegate && [self.delegate respondsToSelector:@selector(sessionUserInfoTableViewCell:showUserInfoVC:)]) { + [self.delegate sessionUserInfoTableViewCell:self showUserInfoVC:self.userInfo]; + } +} + +#pragma mark - Getters And Setters +- (void)setUserInfo:(UserInfoModel *)userInfo { + _userInfo = userInfo; + if (_userInfo) { + self.avatarImageView.imageUrl = _userInfo.avatar; + NSString * nick = _userInfo.nick; + if (nick.length > 10) { + nick = [nick substringToIndex:10]; + nick = [NSString stringWithFormat:@"%@...", nick]; + } + self.nickLabel.text = nick; + self.signLabel.text = _userInfo.userDesc.length > 0 ? _userInfo.userDesc : YMLocalizedString(@"SessionUserInfoTableViewCell5"); + self.nobleImageView.imageUrl = _userInfo.userVipInfoVO.vipIcon; + self.nobleImageView.hidden = _userInfo.userVipInfoVO.vipIcon.length > 0 ? NO : YES; + NSString * headurl = userInfo.headwearEffect.length > 0 ? userInfo.headwearEffect : userInfo.headwearPic; + if (headurl.length >0) { + self.headWearImageView.hidden = NO; + NSURL *url = [NSURL URLWithString:headurl]; + @kWeakify(self); + [self.manager loadSpriteSheetImageWithURL:url completionBlock:^(YYSpriteSheetImage * _Nullable sprit) { + @kStrongify(self); + self.headWearImageView.image = sprit; + } failureBlock:^(NSError * _Nullable error) { + }]; + } else { + self.headWearImageView.hidden = YES; + } + self.collectionView.hidden = _userInfo.privatePhoto.count <= 0; + if (_userInfo.gender == GenderType_Male) { + [self.sexButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor colorWithHexString:@"#45BBFF"], [DJDKMIMOMColor colorWithHexString:@"#8AD4FF"]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [self.sexButton setImage:[UIImage imageNamed:@"session_user_sex_male"] forState:UIControlStateNormal]; + } else { + [self.sexButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor colorWithHexString:@"#FF497D"], [DJDKMIMOMColor colorWithHexString:@"#FF90AE"]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [self.sexButton setImage:[UIImage imageNamed:@"session_user_sex_female"] forState:UIControlStateNormal]; + } + [self.sexButton setTitle:[NSString stringWithFormat:@"%ld", [PLTimeUtil ageWithDateFromBirth:_userInfo.birth]] forState:UIControlStateNormal]; + [self.constellationButton setTitle:[self calculateConstellationWithMonth:_userInfo.birth] forState:UIControlStateNormal]; + [self.collectionView reloadData]; + } +} + +- (UIView *)backView { + if (!_backView) { + _backView = [[UIView alloc] init]; + _backView.backgroundColor = [UIColor whiteColor]; + _backView.layer.masksToBounds = YES; + _backView.layer.cornerRadius = 8; + } + return _backView; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 12; + } + return _stackView; +} + +- (UIView *)userView { + if (!_userView) { + _userView = [[UIView alloc] init]; + _userView.backgroundColor = [UIColor clearColor]; + } + return _userView; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.userInteractionEnabled = YES; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 56 / 2; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(avatarImageViewRecognizer)]; + [_avatarImageView addGestureRecognizer:tap]; + } + return _avatarImageView; +} + + +- (UIStackView *)tagStackView { + if (!_tagStackView) { + _tagStackView = [[UIStackView alloc] init]; + _tagStackView.axis = UILayoutConstraintAxisHorizontal; + _tagStackView.distribution = UIStackViewDistributionFill; + _tagStackView.alignment = UIStackViewAlignmentCenter; + _tagStackView.spacing = 3; + } + return _tagStackView; +} + +- (YYAnimatedImageView *)headWearImageView { + if (!_headWearImageView) { + _headWearImageView = [[YYAnimatedImageView alloc] init]; + _headWearImageView.backgroundColor = [UIColor clearColor]; + _headWearImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _headWearImageView; +} + +- (SpriteSheetImageManager *)manager { + if (!_manager) { + _manager = [[SpriteSheetImageManager alloc] init]; + } + return _manager; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightBold]; + _nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _nickLabel; +} + +- (NetImageView *)nobleImageView { + if (!_nobleImageView) { + _nobleImageView = [[NetImageView alloc] init]; + } + return _nobleImageView; +} + +- (UILabel *)signLabel { + if (!_signLabel) { + _signLabel = [[UILabel alloc] init]; + _signLabel.font = [UIFont systemFontOfSize:12]; + _signLabel.textColor = [DJDKMIMOMColor textThirdColor]; + } + return _signLabel; +} + +- (UICollectionView *)collectionView{ + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.sectionInset = UIEdgeInsetsMake(00, 15, 0, 0); + layout.itemSize = CGSizeMake(72, 72); + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + layout.minimumLineSpacing = 8; + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.backgroundColor = [UIColor clearColor]; + [_collectionView registerClass:[SessionUserInfoCell class] forCellWithReuseIdentifier:NSStringFromClass([SessionUserInfoCell class])]; + } + return _collectionView; +} + +- (UIButton *)sexButton { + if (!_sexButton) { + _sexButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_sexButton setTitle:@"0" forState:UIControlStateNormal]; + [_sexButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _sexButton.titleLabel.font = [UIFont systemFontOfSize:10]; + [_sexButton setTitleEdgeInsets:UIEdgeInsetsMake(0, 3, 0, 0)]; + _sexButton.layer.masksToBounds = YES; + _sexButton.layer.cornerRadius = 7; + } + return _sexButton; +} + +- (UIButton *)constellationButton { + if (!_constellationButton) { + _constellationButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_constellationButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _constellationButton.titleLabel.font = [UIFont systemFontOfSize:10]; + [_constellationButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor colorWithHexString:@"#8AD4FF"], [DJDKMIMOMColor colorWithHexString:@"#45BBFF"]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _constellationButton.layer.masksToBounds = YES; + _constellationButton.layer.cornerRadius = 7; + } + return _constellationButton; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationConentVocalmusicRegard.h b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationConentVocalmusicRegard.h deleted file mode 100644 index 10c32fd3..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationConentVocalmusicRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// CommunicationConentVocalmusicRegard.h -// YUMI -// -// Created by YUMI on 2022/4/22. -// - -#import -#import "CommunicationContentCeremony.h" -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationConentVocalmusicRegard : UIView - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationConentVocalmusicRegard.m b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationConentVocalmusicRegard.m deleted file mode 100644 index 60c219cc..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationConentVocalmusicRegard.m +++ /dev/null @@ -1,144 +0,0 @@ -// -// CommunicationConentVocalmusicRegard.m -// YUMI -// -// Created by YUMI on 2022/4/22. -// - -#import "CommunicationConentVocalmusicRegard.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "CommunicationVocalmusicConcentrate.h" -#import "CommunicationVocalmusicMatrix.h" -@interface CommunicationConentVocalmusicRegard () -@property (nonatomic,strong) UIView * encourageRegard; -@property (nonatomic,strong) UILabel *intratemporalSequencignation; -@property (nonatomic,strong) UIImageView *audioIndicateRegard; -@property (nonatomic,strong) NIMMessage *message; -@property (nonatomic,assign) BOOL isPlaying; -@end - -@implementation CommunicationConentVocalmusicRegard - -- (void)dealloc { - [[NIMSDK sharedSDK].mediaManager removeDelegate:self]; -} - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [[NIMSDK sharedSDK].mediaManager setNeedProximityMonitor:NO]; - [[NIMSDK sharedSDK].mediaManager addDelegate:self]; - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.encourageRegard]; - [self.encourageRegard addSubview:self.intratemporalSequencignation]; - [self.encourageRegard addSubview:self.audioIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self).insets(UIEdgeInsetsMake(MESSAGE_PADDING, MESSAGE_PADDING, MESSAGE_PADDING, MESSAGE_PADDING)); - make.height.mas_equalTo(30); - make.width.mas_equalTo(50); - }]; - - [self.intratemporalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageRegard).offset(10); - make.centerY.mas_equalTo(self.encourageRegard); - }]; - - [self.audioIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20, 20)); - make.right.mas_equalTo(self.encourageRegard).offset(-10); - make.centerY.mas_equalTo(self.encourageRegard); - }]; -} - -#pragma mark - NIMMediaManagerDelegate -- (void)playAudio:(NSString *)filePath didBeganWithError:(NSError *)error { - if(filePath && !error) { - if ([CommunicationVocalmusicConcentrate partowardsiciptowardsionInstance].universalDisportingCommunication == self.message) { - [self.audioIndicateRegard startAnimating]; - } - } -} - -- (void)playAudio:(NSString *)filePath didCompletedWithError:(NSError *)error { - [self.audioIndicateRegard stopAnimating]; - UIImage * thirdImage = [UIImage imageNamed:@"yumi_msg_matter_audio_playing_third"]; - self.audioIndicateRegard.image = thirdImage; -} -#pragma mark - Event Response -- (void)didBetowardsEncourageRecognition { - if ([self.message attachmentDownloadState] == NIMMessageAttachmentDownloadStateDownloaded) { - if ([[NIMSDK sharedSDK].mediaManager isPlaying]) { - [[NIMSDK sharedSDK].mediaManager stopPlay]; - } - - if (self.isPlaying) { - [[NIMSDK sharedSDK].mediaManager stopPlay]; - self.isPlaying = NO; - } else { - self.isPlaying = YES; - [[NIMSDK sharedSDK].mediaManager switchAudioOutputDevice:NIMAudioOutputDeviceSpeaker]; - [[CommunicationVocalmusicConcentrate partowardsiciptowardsionInstance] play:self.message]; - } - } -} - -#pragma mark - Getters And Setters -- (UIView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIView alloc] init]; - _encourageRegard.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didBetowardsEncourageRecognition)]; - [_encourageRegard addGestureRecognizer:tap]; - } - return _encourageRegard; -} - -- (UILabel *)intratemporalSequencignation { - if (!_intratemporalSequencignation) { - _intratemporalSequencignation = [[UILabel alloc] init]; - _intratemporalSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _intratemporalSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _intratemporalSequencignation; -} - -- (UIImageView *)audioIndicateRegard { - if (!_audioIndicateRegard) { - _audioIndicateRegard = [[UIImageView alloc] init]; - _audioIndicateRegard.userInteractionEnabled = YES; - UIImage * firstImage = [UIImage imageNamed:@"yumi_msg_matter_audio_playing_first"]; - UIImage * secondImage = [UIImage imageNamed:@"yumi_msg_matter_audio_playing_second"]; - UIImage * thirdImage = [UIImage imageNamed:@"yumi_msg_matter_audio_playing_third"]; - _audioIndicateRegard.animationImages = @[firstImage, secondImage, thirdImage]; - _audioIndicateRegard.animationDuration = 1; - _audioIndicateRegard.animationRepeatCount = HUGE; - _audioIndicateRegard.image = thirdImage; - } - return _audioIndicateRegard; -} - - -- (void)render:(CommunicationBaseMatrix *)model { - self.message = model.message; - NIMAudioObject *audioContent = (NIMAudioObject*)[model.message messageObject]; - NSAssert([audioContent isKindOfClass:[NIMAudioObject class]], @"message should be audio"); - [self.encourageRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(model.contentSize.width);; - }]; - self.intratemporalSequencignation.text = [NSString stringWithFormat:@"%zd\"",(audioContent.duration+500)/1000]; -} - - - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationContentCeremony.h b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationContentCeremony.h deleted file mode 100644 index 198300d2..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationContentCeremony.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// CommunicationContentCeremony.h -// YUMI -// -// Created by zu on 2021/12/2. -// - -#import -#import "YUMIMacroUitls.h" -@class NIMMessage, CommunicationBaseMatrix; - -NS_ASSUME_NONNULL_BEGIN - -#define AVATAR_SIZE 45 -#define AVATAR_MARGIN_H 15 -#define CONTENT_WIDTH_MAX (KScreenWidth - AVATAR_MARGIN_H * 2 * 2 - AVATAR_SIZE * 2) -#define CONTENT_PADDING_V_TOTAL (5 + 15 * 2) -#define MESSAGE_PADDING (10) - -@protocol CommunicationContentCeremony - -- (void)render:(CommunicationBaseMatrix *)message; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationIntratemporalRegard.h b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationIntratemporalRegard.h deleted file mode 100644 index 9d8b2f8a..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationIntratemporalRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// CommunicationIntratemporalRegard.h -// YUMI -// -// Created by YUMI on 2023/1/18. -// - -#import -#import "CommunicationContentCeremony.h" -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationIntratemporalRegard : UIView - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationIntratemporalRegard.m b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationIntratemporalRegard.m deleted file mode 100644 index 48b87ffb..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationIntratemporalRegard.m +++ /dev/null @@ -1,52 +0,0 @@ -// -// CommunicationIntratemporalRegard.m -// YUMI -// -// Created by YUMI on 2023/1/18. -// - -#import "CommunicationIntratemporalRegard.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "CommunicationIntratemporalMatrix.h" - -@interface CommunicationIntratemporalRegard() - -@property (nonatomic, strong) UILabel * intratemporalSequencignation; -@property (nonatomic,strong) NIMMessage *message; - -@end - -@implementation CommunicationIntratemporalRegard - -- (instancetype)init { - self = [super init]; - if (self) { - [self addSubview:self.intratemporalSequencignation]; - [self.intratemporalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self).with.insets(UIEdgeInsetsMake(0, 0, 0, 0)); - }]; - } - return self; -} - -- (void)render:(nonnull CommunicationBaseMatrix *)model { - self.superview.backgroundColor = [UIColor clearColor]; - self.message = model.message; - CommunicationIntratemporalMatrix * timeModel= (CommunicationIntratemporalMatrix *)model; - NSString * communicationEssay = timeModel.time; - self.intratemporalSequencignation.text = communicationEssay; -} - -- (UILabel *)intratemporalSequencignation { - if (!_intratemporalSequencignation) { - _intratemporalSequencignation = [[UILabel alloc] init]; - _intratemporalSequencignation.font = [UIFont systemFontOfSize:10]; - _intratemporalSequencignation.textAlignment = NSTextAlignmentCenter; - _intratemporalSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - } - return _intratemporalSequencignation; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionApplicationParaticipationRegard.h b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionApplicationParaticipationRegard.h deleted file mode 100644 index d04d4e5a..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionApplicationParaticipationRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// CommunicationSatisfactionApplicationParaticipationRegard.h -// YUMI -// -// Created by YUMI on 2022/4/19. -// - -#import "CommunicationSatisfactionCustomRegard.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationSatisfactionApplicationParaticipationRegard : CommunicationSatisfactionCustomRegard - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionApplicationParaticipationRegard.m b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionApplicationParaticipationRegard.m deleted file mode 100644 index a36bb90c..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionApplicationParaticipationRegard.m +++ /dev/null @@ -1,134 +0,0 @@ -// -// CommunicationSatisfactionApplicationParaticipationRegard.m -// YUMI -// -// Created by YUMI on 2022/4/19. -// - -#import "CommunicationSatisfactionApplicationParaticipationRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "ChamberHostRepresendtation.h" -#import "XCCurrentVCStackExecutive.h" -#import "SatisfactionApplicationParaticipationMatrix.h" -#import "CommunicationApplicationParaticipationMatrix.h" -#import "YUMIChamberRegardGovernancer.h" - -@interface CommunicationSatisfactionApplicationParaticipationRegard () -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UIView * burlywoodRegard; -@property (nonatomic,strong) UIButton *importBtuton; -@property (nonatomic,strong) SatisfactionApplicationParaticipationMatrix *shareInfo; -@end - -@implementation CommunicationSatisfactionApplicationParaticipationRegard - - -- (void)render:(CommunicationBaseMatrix *)message { - CommunicationApplicationParaticipationMatrix * model = (CommunicationApplicationParaticipationMatrix *)message; - SatisfactionApplicationParaticipationMatrix *info = model.shareInfo; - if (info) { - self.shareInfo = info; - self.titleLabel.text = info.title; - self.intelligenceportraitIndicateRegard.imageUrl = info.avatar; - if (self.shareInfo.actionName.length > 0) { - [self.importBtuton setTitle:self.shareInfo.actionName forState:UIControlStateNormal]; - } - } -} - - -- (void)initSubViews { - [super initSubViews]; - [self addSubview:self.encourageRegard]; - [self.encourageRegard addSubview:self.titleLabel]; - [self.encourageRegard addSubview:self.intelligenceportraitIndicateRegard]; - [self.encourageRegard addSubview:self.burlywoodRegard]; - [self.encourageRegard addSubview:self.importBtuton]; -} - -- (void)initChildLyRestrictions { - [super initChildLyRestrictions]; - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(KScreenWidth - AVATAR_MARGIN_H * 2 * 2 - AVATAR_SIZE - AVATAR_MARGIN_H, 90)); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageRegard).offset(10); - make.right.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_left).offset(-10); - make.top.mas_equalTo(self.encourageRegard); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(50, 50)); - make.top.mas_equalTo(self.encourageRegard); - make.right.mas_equalTo(self.encourageRegard); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageRegard).inset(12); - make.height.mas_equalTo(1); - make.bottom.mas_equalTo(self.importBtuton.mas_top); - }]; - - [self.importBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.encourageRegard); - make.height.mas_equalTo(40); - }]; -} -#pragma mark - Event Response -- (void)importBtutonPerformance:(UIButton *)sender { - if (self.shareInfo.routerValue.length > 0) { - UIViewController * controllerView = [XCCurrentVCStackExecutive shareManager].getCurrentVC; - - [controllerView.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj isKindOfClass:[YUMIChamberRegardGovernancer class]]) { - [controllerView.navigationController popToRootViewControllerAnimated:NO]; - YUMIChamberRegardGovernancer * rooomVC = obj; - [rooomVC exitRoom]; - *stop = YES; - } - }]; - [YUMIChamberRegardGovernancer unfoildChamber:self.shareInfo.routerValue viewController:[XCCurrentVCStackExecutive shareManager].getCurrentVC]; - } -} - -#pragma mark - Getters And Setters -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _intelligenceportraitIndicateRegard; -} - - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:14]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleLabel.numberOfLines = 2; - } - return _titleLabel; -} - -- (UIButton *)importBtuton { - if (!_importBtuton) { - _importBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_importBtuton setTitle:YMLocalizedString(@"Message_Content_Application_Share_View_0") forState:UIControlStateNormal]; - [_importBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateNormal]; - _importBtuton.titleLabel.font = [UIFont systemFontOfSize:16]; - [_importBtuton addTarget:self action:@selector(importBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _importBtuton; -} - - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionCommunicationSolitaireRegard.h b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionCommunicationSolitaireRegard.h deleted file mode 100644 index 2d25f79d..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionCommunicationSolitaireRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// CommunicationSatisfactionCommunicationSolitaireRegard.h -// YUMI -// -// Created by YUMI on 2022/4/28. -// - -#import "CommunicationSatisfactionCustomRegard.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationSatisfactionCommunicationSolitaireRegard : CommunicationSatisfactionCustomRegard - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionCommunicationSolitaireRegard.m b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionCommunicationSolitaireRegard.m deleted file mode 100644 index 8fa79f8a..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionCommunicationSolitaireRegard.m +++ /dev/null @@ -1,88 +0,0 @@ -// -// CommunicationSatisfactionCommunicationSolitaireRegard.m -// YUMI -// -// Created by YUMI on 2022/4/28. -// - -#import "CommunicationSatisfactionCommunicationSolitaireRegard.h" -#import -#import -#import "HttpRequestFacilitater.h" -#import "AttachmentMatrix.h" -#import "UnionCommunicationMatrix.h" -#import "CommunicationCommunicationSolitaireMatrix.h" -#import "DJDKMIMOMColor.h" -#import "XNDJTBWGLoadingTool.h" -#import "AccountAbstractStorage.h" -#import "YUMIManeUnionRegardGovernancer.h" -#import "XCCurrentVCStackExecutive.h" -#define MESSAGE_MAX_WIDTH 180 -@interface CommunicationSatisfactionCommunicationSolitaireRegard () -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) YYLabel *satisfperformanceSequencignation; -@property (nonatomic,strong) UnionCommunicationMatrix *communicationAbstract; -@property (nonatomic,strong) NIMMessage *message; -@end - -@implementation CommunicationSatisfactionCommunicationSolitaireRegard - -- (void)initSubViews { - [super initSubViews]; - [self.encourageRegard addSubview:self.titleLabel]; - [self.encourageRegard addSubview:self.satisfperformanceSequencignation]; -} - -- (void)initChildLyRestrictions { - [super initChildLyRestrictions]; - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(MESSAGE_MAX_WIDTH); - make.bottom.mas_equalTo(self.satisfperformanceSequencignation.mas_bottom); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageRegard); - make.top.mas_equalTo(self.encourageRegard).offset(MESSAGE_PADDING); - }]; - - [self.satisfperformanceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.left.mas_equalTo(self.encourageRegard); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(MESSAGE_PADDING); - make.height.mas_equalTo(15); - }]; -} - -- (void)render:(CommunicationBaseMatrix *)model { - self.message = model.message; - CommunicationCommunicationSolitaireMatrix *obj = (CommunicationCommunicationSolitaireMatrix *)model; - UnionCommunicationMatrix * info= obj.guildInfo; - self.communicationAbstract = info; - self.titleLabel.text = info.layout.title.content; - self.titleLabel.font = [UIFont systemFontOfSize:info.layout.title.fontSize weight:info.layout.title.fontBold?UIFontWeightBold:UIFontWeightRegular]; - self.satisfperformanceSequencignation.attributedText = obj.attribute; - self.satisfperformanceSequencignation.textAlignment = NSTextAlignmentCenter; - [self.satisfperformanceSequencignation mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(obj.textHeight); - }]; -} - -#pragma mark - Getters And Setters - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textAlignment= NSTextAlignmentCenter; - _titleLabel.font = [UIFont systemFontOfSize:14]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -- (YYLabel *)satisfperformanceSequencignation { - if (!_satisfperformanceSequencignation) { - _satisfperformanceSequencignation = [[YYLabel alloc] init]; - _satisfperformanceSequencignation.numberOfLines = 0; - } - return _satisfperformanceSequencignation; -} -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionCustomRegard.h b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionCustomRegard.h deleted file mode 100644 index 61eb7b1c..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionCustomRegard.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// CommunicationSatisfactionCustomRegard.h -// YUMI -// -// Created by YUMI on 2022/4/15. -// - -#import -#import -#import "AttachmentMatrix.h" -#import "CommunicationContentCeremony.h" -NS_ASSUME_NONNULL_BEGIN - -@protocol CommunicationContentCustomRegardRepresendtation - -- (void)refurbishCommunictowardsionAccomplishment:(NIMMessage *)message; - -@end - -@interface CommunicationSatisfactionCustomRegard : UIView -- (void)initSubViews; - -- (void)initChildLyRestrictions; -@property (nonatomic,strong, readonly) UIView * encourageRegard; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionCustomRegard.m b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionCustomRegard.m deleted file mode 100644 index c7ce2a39..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionCustomRegard.m +++ /dev/null @@ -1,54 +0,0 @@ -// -// CommunicationSatisfactionCustomRegard.m -// YUMI -// -// Created by YUMI on 2022/4/15. -// - -#import "CommunicationSatisfactionCustomRegard.h" -#import - -@interface CommunicationSatisfactionCustomRegard () -@property (nonatomic,strong) UIView * encourageRegard; -@end - -@implementation CommunicationSatisfactionCustomRegard - -- (instancetype)init { - if (self = [super init]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Public Method -- (void)initSubViews { - [self addSubview:self.encourageRegard]; -} - -- (void)initChildLyRestrictions { - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self).insets(UIEdgeInsetsMake(MESSAGE_PADDING, MESSAGE_PADDING, MESSAGE_PADDING, MESSAGE_PADDING)); - }]; -} - - -#pragma mark - CommunicationContentCeremony -- (void)render:(CommunicationBaseMatrix *)model { - -} - -+ (CGFloat)measureAltitude:(NIMMessage *)message { - return 0; -} - -- (UIView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIView alloc] init]; - _encourageRegard.backgroundColor = [UIColor clearColor]; - } - return _encourageRegard; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionDeficitSheatheRegard.h b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionDeficitSheatheRegard.h deleted file mode 100644 index 08178be9..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionDeficitSheatheRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// CommunicationSatisfactionDeficitSheatheRegard.h -// YUMI -// -// Created by YUMI on 2022/9/5. -// - -#import "CommunicationSatisfactionCustomRegard.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationSatisfactionDeficitSheatheRegard : CommunicationSatisfactionCustomRegard - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionDeficitSheatheRegard.m b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionDeficitSheatheRegard.m deleted file mode 100644 index c36a1e08..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionDeficitSheatheRegard.m +++ /dev/null @@ -1,203 +0,0 @@ -// -// CommunicationSatisfactionDeficitSheatheRegard.m -// YUMI -// -// Created by YUMI on 2022/9/5. -// - -#import "CommunicationSatisfactionDeficitSheatheRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIAchieveDeficitSheatheMatrix.h" -#import "CommunicationDeficitSheatheMatrix.h" -#import "YUMIConstant.h" -#import "XCCurrentVCStackExecutive.h" -#import "YUMIChamberRegardGovernancer.h" -#import "ChamberHostRepresendtation.h" - -#define MESSAGE_MAX_WIDTH 260 - -@interface CommunicationSatisfactionDeficitSheatheRegard () - -@property (nonatomic, strong) UIImageView *backgroundIndicateRegard; -@property (nonatomic, strong) UIImageView *deficitSheatheIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UILabel *subLabel; -@property (nonatomic, strong) UIView *devideRegard; -@property (nonatomic, strong) UILabel *sequenceSequencignation; -@property (nonatomic,strong) YUMIAchieveDeficitSheatheMatrix *communicationAbstract; -@property (nonatomic,strong) AttachmentMatrix *attachment; -@property (nonatomic,strong) NIMMessage *message; - -@end - -@implementation CommunicationSatisfactionDeficitSheatheRegard - -- (void)initSubViews { - [super initSubViews]; - [self.encourageRegard addSubview:self.backgroundIndicateRegard]; - [self.encourageRegard addSubview:self.deficitSheatheIndicateRegard]; - [self.encourageRegard addSubview:self.titleLabel]; - [self.encourageRegard addSubview:self.subLabel]; - [self.encourageRegard addSubview:self.devideRegard]; - [self.encourageRegard addSubview:self.sequenceSequencignation]; - - UITapGestureRecognizer * tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(event:)]; - [self.backgroundIndicateRegard addGestureRecognizer:tapGesture]; -} - -- (void)initChildLyRestrictions { - [super initChildLyRestrictions]; - self.encourageRegard.superview.backgroundColor = [UIColor clearColor]; - self.encourageRegard.backgroundColor = [UIColor clearColor]; - [self.encourageRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self).inset(0); - make.width.mas_equalTo(MESSAGE_MAX_WIDTH); - make.height.mas_equalTo(95); - }]; - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(MESSAGE_MAX_WIDTH); - make.top.mas_equalTo(self.encourageRegard); - make.height.mas_equalTo(95); - make.left.mas_equalTo(self.encourageRegard); - }]; - [self.deficitSheatheIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageRegard).mas_offset(16); - make.width.mas_equalTo(31); - make.height.mas_equalTo(40); - make.top.mas_equalTo(self.encourageRegard).mas_offset(13); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.deficitSheatheIndicateRegard.mas_right).mas_offset(6); - make.height.mas_equalTo(16); - make.top.mas_equalTo(self.deficitSheatheIndicateRegard).mas_offset(12); - }]; - - [self.subLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.titleLabel); - make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(8); - make.height.mas_equalTo(13); - }]; - [self.devideRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(16); - make.right.mas_equalTo(-8); - make.top.mas_equalTo(self.deficitSheatheIndicateRegard.mas_bottom).offset(11); - make.height.mas_equalTo(0.5); - }]; - [self.sequenceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(16); - make.top.mas_equalTo(self.devideRegard.mas_bottom).offset(9); - make.height.mas_equalTo(13); - }]; -} - -- (void)render:(CommunicationBaseMatrix *)model { - self.message = model.message; - CommunicationDeficitSheatheMatrix *obj = (CommunicationDeficitSheatheMatrix *)model; - YUMIAchieveDeficitSheatheMatrix * info = obj.redInfo; - self.communicationAbstract = info; - - NSTimeInterval now = [[NSDate date] timeIntervalSince1970]; - if (now - model.message.timestamp > 60*30) { - self.titleLabel.text = YMLocalizedString(@"Message_Content_Red_Packet_View_0"); - self.sequenceSequencignation.text = @"下次要快点来哦~"; - self.subLabel.hidden = YES; - self.backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_redPacket_msg_inValid_background"]; - self.backgroundIndicateRegard.userInteractionEnabled = NO; - } else { - NSArray *redPacketHistory = [[NSUserDefaults standardUserDefaults] objectForKey:kRedPacketHistory]; - if (info) { - if ([redPacketHistory containsObject:info.redEnvelopeId]) { - self.subLabel.hidden = YES; - self.titleLabel.text = YMLocalizedString(@"Message_Content_Red_Packet_View_2"); - self.backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_redPacket_msg_inValid_background"]; - self.sequenceSequencignation.text = YMLocalizedString(@"Message_Content_Red_Packet_View_3"); - self.backgroundIndicateRegard.userInteractionEnabled = NO; - } else { - self.titleLabel.text = info.sendUserNick; - self.sequenceSequencignation.text = @"点击进房领取>"; - self.subLabel.hidden = NO; - self.backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_redPacket_msg_valid_background"]; - self.backgroundIndicateRegard.userInteractionEnabled = YES; - [self.titleLabel mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.deficitSheatheIndicateRegard).mas_offset(5); - }]; - } - } - } -} - -- (void)event:(UITapGestureRecognizer *)gesture { - UIViewController * controllerView = [XCCurrentVCStackExecutive shareManager].getCurrentVC; - - [controllerView.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj isKindOfClass:[YUMIChamberRegardGovernancer class]]) { - [controllerView.navigationController popToRootViewControllerAnimated:NO]; - YUMIChamberRegardGovernancer * rooomVC = obj; - [rooomVC exitRoom]; - *stop = YES; - } - }]; - dispatch_after(1.0, dispatch_get_main_queue(), ^{ - [YUMIChamberRegardGovernancer unfoildChamber:self.communicationAbstract.roomUid viewController:[XCCurrentVCStackExecutive shareManager].getCurrentVC]; - }); -} - -#pragma mark - Getters And Setters -- (UIImageView *)backgroundIndicateRegard { - if (!_backgroundIndicateRegard) { - _backgroundIndicateRegard = [[UIImageView alloc] init]; - _backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_redPacket_msg_valid_background"]; - self.backgroundIndicateRegard.userInteractionEnabled = YES; - } - return _backgroundIndicateRegard; -} - -- (UIImageView *)deficitSheatheIndicateRegard { - if (!_deficitSheatheIndicateRegard) { - _deficitSheatheIndicateRegard = [[UIImageView alloc] init]; - _deficitSheatheIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - _deficitSheatheIndicateRegard.image = [UIImage imageNamed:@"yumi_redPacket_msg_pic"]; - } - return _deficitSheatheIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textAlignment= NSTextAlignmentCenter; - _titleLabel.font = [UIFont systemFontOfSize:16]; - _titleLabel.textColor = [UIColor whiteColor]; - } - return _titleLabel; -} - -- (UILabel *)subLabel { - if (!_subLabel) { - _subLabel = [[UILabel alloc] init]; - _subLabel.text = YMLocalizedString(@"Message_Content_Red_Packet_View_5"); - _subLabel.font = [UIFont systemFontOfSize:13]; - _subLabel.textColor = [UIColor whiteColor]; - } - return _subLabel; -} - -- (UILabel *)sequenceSequencignation { - if (!_sequenceSequencignation) { - _sequenceSequencignation = [[UILabel alloc] init]; - _sequenceSequencignation.font = [UIFont systemFontOfSize:13]; - _sequenceSequencignation.textColor = [UIColor whiteColor]; - } - return _sequenceSequencignation; -} - -- (UIView *)devideRegard { - if (!_devideRegard) { - _devideRegard = [[UIView alloc] init]; - _devideRegard.backgroundColor = [UIColor whiteColor]; - } - return _devideRegard; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionDiscoveryStrangeBewelcometoRegard.h b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionDiscoveryStrangeBewelcometoRegard.h deleted file mode 100644 index 27df3826..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionDiscoveryStrangeBewelcometoRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// CommunicationSatisfactionDiscoveryStrangeBewelcometoRegard.h -// YUMI -// -// Created by YUMI on 2022/6/17. -// - -#import "CommunicationSatisfactionCustomRegard.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationSatisfactionDiscoveryStrangeBewelcometoRegard : CommunicationSatisfactionCustomRegard - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionDiscoveryStrangeBewelcometoRegard.m b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionDiscoveryStrangeBewelcometoRegard.m deleted file mode 100644 index b4c4fa58..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionDiscoveryStrangeBewelcometoRegard.m +++ /dev/null @@ -1,56 +0,0 @@ -// -// CommunicationSatisfactionDiscoveryStrangeBewelcometoRegard.m -// YUMI -// -// Created by YUMI on 2022/6/17. -// - -#import "CommunicationSatisfactionDiscoveryStrangeBewelcometoRegard.h" -#import -#import "NSObject+MJExtension.h" -#import "DJDKMIMOMColor.h" -#import "DiscoveryStrangeBewelcometoCommunicationMatrix.h" -#import "CommunicationDiscoveryStrangeBewelcometoMatrix.h" - -@interface CommunicationSatisfactionDiscoveryStrangeBewelcometoRegard () - -@property (nonatomic,strong) UILabel *titleLabel; - -@end - -@implementation CommunicationSatisfactionDiscoveryStrangeBewelcometoRegard - - -- (void)initSubViews { - [super initSubViews]; - [self.encourageRegard addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [super initChildLyRestrictions]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.encourageRegard); - }]; -} - - -- (void)render:(nonnull CommunicationBaseMatrix *)model { - CommunicationDiscoveryStrangeBewelcometoMatrix *obj = (CommunicationDiscoveryStrangeBewelcometoMatrix *)model; - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(obj.contentSize); - }]; - self.titleLabel.attributedText = obj.attributedText; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc]initWithFrame:CGRectZero]; - _titleLabel.preferredMaxLayoutWidth = CONTENT_WIDTH_MAX - MESSAGE_PADDING * 2; - _titleLabel.textColor = DJDKMIMOMColor.mainEssayPrettify; - _titleLabel.font = [UIFont systemFontOfSize:13]; - _titleLabel.numberOfLines = 0; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionEssay.h b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionEssay.h deleted file mode 100644 index d8500a41..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionEssay.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// CommunicationSatisfactionEssay.h -// YUMI -// -// Created by zu on 2021/12/2. -// - -#import -#import "CommunicationContentCeremony.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationSatisfactionEssay : UIView - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionEssay.m b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionEssay.m deleted file mode 100644 index 064be034..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionEssay.m +++ /dev/null @@ -1,76 +0,0 @@ -// -// CommunicationSatisfactionEssay.m -// YUMI -// -// Created by zu on 2021/12/2. -// - -#import "CommunicationSatisfactionEssay.h" -#import "DJDKMIMOMColor.h" -#import "NSObject+MJExtension.h" -#import "MHTSpiritFacilitater.h" -#import -#import -#import -#import "CommunicationEssayMatrix.h" -#define MESSAGE_TEXT_PADDING 10 - -@interface CommunicationSatisfactionEssay() - - -@property (nonatomic, strong) YYLabel * communicationEssay; - -@property (nonatomic,strong) NIMMessage *message; - -@end - -@implementation CommunicationSatisfactionEssay - -+ (NSDictionary *)communictowardsionEssayTowardstibutes { - UIFont *font = [UIFont systemFontOfSize:13.f]; - NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; - [paragraphStyle setLineSpacing:2.5]; - return @{ - NSFontAttributeName:font, - NSParagraphStyleAttributeName: paragraphStyle - }; -} - -- (instancetype)init { - self = [super init]; - if (self) { - [self addSubview:self.communicationEssay]; - [self.communicationEssay mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self).with.insets(UIEdgeInsetsMake(MESSAGE_TEXT_PADDING, MESSAGE_TEXT_PADDING, MESSAGE_TEXT_PADDING, MESSAGE_TEXT_PADDING)); - }]; - } - return self; -} - -- (void)render:(nonnull CommunicationBaseMatrix *)model { - self.message = model.message; - if (model.messageType == InterlocutionCommunicationGenre_Text) { - CommunicationEssayMatrix * textModel = (CommunicationEssayMatrix *)model; - _communicationEssay.attributedText = textModel.textAttribute; - } else { - NSString * communicationEssay = model.message.text; - if (!communicationEssay || (model.message.messageType != NIMMessageTypeTip && model.message.messageType != NIMMessageTypeText)) { - communicationEssay = YMLocalizedString(@"Message_Content_Text_0"); - } - MHTSpiritFacilitater *faceManager = [MHTSpiritFacilitater partowardsiciptowardsiondSenintrtowardsemporalntFacilittowardseer]; - NSMutableAttributedString * attribute = [faceManager towardstributedBWSttrByEssay:communicationEssay font:[UIFont systemFontOfSize:13]]; - _communicationEssay.attributedText = attribute; - } -} - -- (YYLabel *)communicationEssay { - if (!_communicationEssay) { - _communicationEssay = [[YYLabel alloc]initWithFrame:CGRectZero]; - _communicationEssay.preferredMaxLayoutWidth = CONTENT_WIDTH_MAX - MESSAGE_TEXT_PADDING * 2; - _communicationEssay.textColor = DJDKMIMOMColor.mainEssayPrettify; - _communicationEssay.numberOfLines = 0; - } - return _communicationEssay; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionEssayClickable.h b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionEssayClickable.h deleted file mode 100644 index 619ce5db..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionEssayClickable.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// CommunicationSatisfactionEssayClickable.h -// YUMI -// -// Created by zu on 2022/1/24. -// - -#import "CommunicationSatisfactionCustomRegard.h" -#import "UIView+NIM.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationSatisfactionEssayClickable : CommunicationSatisfactionCustomRegard - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionEssayClickable.m b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionEssayClickable.m deleted file mode 100644 index 59b2d218..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionEssayClickable.m +++ /dev/null @@ -1,209 +0,0 @@ -// -// CommunicationSatisfactionEssayClickable.m -// YUMI -// -// Created by zu on 2022/1/24. -// - -#import "CommunicationSatisfactionEssayClickable.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "NSObject+MJExtension.h" -#import "XCCurrentVCStackExecutive.h" -#import "Api.h" -#import "AccountAbstractStorage.h" -#import "XNDJTBWGLoadingTool.h" -#import "NSObject+MJExtension.h" -#import "ClientDisposition.h" -#import "ConsumerAbstractMatrix.h" -#import "SatisfactionSecretaryMatrix.h" -#import "CommunicationEssayClickMatrix.h" -#import "YUMIChamberRegardGovernancer.h" -#import "YUMITissueRegardGovernancer.h" -#import "YUMIManeReindictRegardGovernancer.h" -#import "YUMIIAPReindictRegardGovernancer.h" -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -#import "YUMIManeSimpleConsumerAbstractRegardGovernancer.h" -#import "YUMIManePretendUpwardsRegardGovernancer.h" -#import "YUMIPretendUpwardsProcurementRegardGovernancer.h" -#import "YUMIManeSurmountCiphercodeRegardGovernancer.h" -#import "YUMISeparationMotifAccommodatedRegardGovernancer.h" -#import "ChamberHostRepresendtation.h" -@interface CommunicationSatisfactionEssayClickable() - - -@property (nonatomic, strong) UILabel * communicationEssay; -@property (nonatomic,strong) SatisfactionSecretaryMatrix *satisfperformanceAbstract; -@end - -@implementation CommunicationSatisfactionEssayClickable - -- (void)initSubViews { - [super initSubViews]; - [self.encourageRegard addSubview:self.communicationEssay]; - UITapGestureRecognizer * tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(event:)]; - [self addGestureRecognizer:tapGesture]; -} - -- (void)initChildLyRestrictions { - [super initChildLyRestrictions]; - [self.communicationEssay mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.encourageRegard).insets(UIEdgeInsetsMake(0, 0, 0, 0)); - }]; -} - -- (void)render:(nonnull CommunicationBaseMatrix *)message { - CommunicationEssayClickMatrix * textModel = (CommunicationEssayClickMatrix *)message; - _communicationEssay.attributedText = textModel.attributedText; -} - -- (void)event:(UITapGestureRecognizer *)gesture { - SecretaryRouterGenre type = self.satisfperformanceAbstract.routerType; - NSString * value = self.satisfperformanceAbstract.routerValue; - switch (type) { - case SecretaryRouterGenre_H5: { - if (value.length) { - YUMITissueRegardGovernancer * webVewC =[[YUMITissueRegardGovernancer alloc] init]; - webVewC.url = value; - [self.nim_viewGovernancer.navigationController pushViewController:webVewC animated:YES]; - } - } - break; - case SecretaryRouterGenre_Room: - { - if (value.length > 0) { - UIViewController * controllerView = [XCCurrentVCStackExecutive shareManager].getCurrentVC; - - [controllerView.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj isKindOfClass:[YUMIChamberRegardGovernancer class]]) { - [controllerView.navigationController popToRootViewControllerAnimated:NO]; - YUMIChamberRegardGovernancer * rooomVC = obj; - [rooomVC exitRoom]; - *stop = YES; - } - }]; - [YUMIChamberRegardGovernancer unfoildChamber:value viewController:[XCCurrentVCStackExecutive shareManager].getCurrentVC]; - } - } - break; - case SecretaryRouterGenre_Purse: - case SecretaryRouterGenre_Recharge: - { - YUMIIAPReindictRegardGovernancer * rechargeVC = [[YUMIIAPReindictRegardGovernancer alloc] init]; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:rechargeVC animated:YES]; - } - break; - case SecretaryRouterGenre_UserInfo: - { - if (value.length > 0) { - - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMIManeConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = value.integerValue; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:userInfoVC animated:YES]; - }else{ - YUMIManeSimpleConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeSimpleConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = value.integerValue; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:userInfoVC animated:YES]; - } - } - } - break; - case SecretaryRouterGenre_Car: - { - YUMIManePretendUpwardsRegardGovernancer * dressUpVC = [[YUMIManePretendUpwardsRegardGovernancer alloc] init]; - dressUpVC.currentIndex = 1; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:dressUpVC animated:YES]; - } - break; - case SecretaryRouterGenre_Headwear: - { - YUMIManePretendUpwardsRegardGovernancer * dressUpVC = [[YUMIManePretendUpwardsRegardGovernancer alloc] init]; - dressUpVC.currentIndex = 0; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:dressUpVC animated:YES]; - } - break; - case SecretaryRouterGenre_Nameplate: - { - YUMIManePretendUpwardsRegardGovernancer * dressUpVC = [[YUMIManePretendUpwardsRegardGovernancer alloc] init]; - dressUpVC.currentIndex = 2; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:dressUpVC animated:YES]; - } - break; - case SecretaryRouterGenre_Nobel_Bubble: - { - YUMIManePretendUpwardsRegardGovernancer * dressUpVC = [[YUMIManePretendUpwardsRegardGovernancer alloc] init]; - dressUpVC.currentIndex = 4; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:dressUpVC animated:YES]; - } - break; - case SecretaryRouterGenre_User_Card: - { - YUMIManePretendUpwardsRegardGovernancer * dressUpVC = [[YUMIManePretendUpwardsRegardGovernancer alloc] init]; - dressUpVC.currentIndex = 3; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:dressUpVC animated:YES]; - } - break; - case SecretaryRouterGenre_Set_Password: - { - [Api getUserInfo:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - ConsumerAbstractMatrix * userInfo = [ConsumerAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - if (!userInfo.isBindPhone) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:@"请先绑定手机号!"]; - return; - } - - if (userInfo.isBindPasswd) { - YUMIManeSurmountCiphercodeRegardGovernancer *vc = [[YUMIManeSurmountCiphercodeRegardGovernancer alloc] init]; - vc.userInfo = userInfo; - vc.isModifiPword = YES; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:vc animated:YES]; - } else { - YUMIManeSurmountCiphercodeRegardGovernancer *vc = [[YUMIManeSurmountCiphercodeRegardGovernancer alloc] init]; - vc.userInfo = userInfo; - vc.isModifiPword = NO; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:vc animated:YES]; - } - } - } uid:[AccountAbstractStorage instance].acquireCid]; - } - break; - case SecretaryRouterGenre_Dressup_Shop: - { - YUMIPretendUpwardsProcurementRegardGovernancer *vc = [[YUMIPretendUpwardsProcurementRegardGovernancer alloc] init]; - vc.currentIndex = [value integerValue]; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:vc animated:YES]; - } - break; - case SecretaryRouterGenre_My_Dressup: - { - YUMIManePretendUpwardsRegardGovernancer * dressUpVC = [[YUMIManePretendUpwardsRegardGovernancer alloc] init]; - dressUpVC.currentIndex = [value integerValue]; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:dressUpVC animated:YES]; - } - break; - case SecretaryRouterGenre_Square_Topic: - { - YUMISeparationMotifAccommodatedRegardGovernancer *topicVC = [[YUMISeparationMotifAccommodatedRegardGovernancer alloc] init]; - topicVC.worldId = value; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:topicVC animated:YES]; - } - break; - default: - break; - } -} - -- (UILabel *)communicationEssay { - if (!_communicationEssay) { - _communicationEssay = [[UILabel alloc]initWithFrame:CGRectZero]; - _communicationEssay.preferredMaxLayoutWidth = CONTENT_WIDTH_MAX - MESSAGE_PADDING * 2; - _communicationEssay.textColor = DJDKMIMOMColor.mainEssayPrettify; - _communicationEssay.numberOfLines = 0; - } - return _communicationEssay; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionIndicate.h b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionIndicate.h deleted file mode 100644 index 5c069df1..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionIndicate.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// CommunicationSatisfactionIndicate.h -// YUMI -// -// Created by zu on 2021/12/2. -// - -#import -#import "CommunicationContentCeremony.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationSatisfactionIndicate : UIView - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionIndicate.m b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionIndicate.m deleted file mode 100644 index 5dcd4ae5..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionIndicate.m +++ /dev/null @@ -1,85 +0,0 @@ -// -// CommunicationSatisfactionIndicate.m -// YUMI -// -// Created by zu on 2021/12/2. -// - -#import "CommunicationSatisfactionIndicate.h" -#import "NetIndicateRegard.h" -#import "SDAppearanceBrowser.h" -#import -#import -#import "UIImage+Utils.h" -#import "CommunicationBaseMatrix.h" -#import "CommunicationIndicateMatrix.h" -#define MESSAGE_IMAGE_MAX_SIZE (CONTENT_WIDTH_MAX) -#define MESSAGE_IMAGE_Min_SIZE (CONTENT_WIDTH_MAX -100) -@interface CommunicationSatisfactionIndicate() - -@property (nonatomic, strong) NetIndicateRegard * communicationIndicate; -@property (nonatomic,strong) CommunicationIndicateMatrix *indicateGroal; - -@end - -@implementation CommunicationSatisfactionIndicate - -- (instancetype)init { - self = [super init]; - if (self) { - [self addSubview:self.communicationIndicate]; - [self.communicationIndicate mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self).with.insets(UIEdgeInsetsMake(MESSAGE_PADDING, MESSAGE_PADDING, MESSAGE_PADDING, MESSAGE_PADDING)); - make.width.height.mas_equalTo(MESSAGE_IMAGE_MAX_SIZE); - }]; - } - return self; -} - -- (void)render:(CommunicationBaseMatrix *)model { - CommunicationIndicateMatrix * imageModel = (CommunicationIndicateMatrix *)model; - self.indicateGroal = imageModel; - [self.communicationIndicate mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(model.contentSize.height); - make.width.mas_equalTo(model.contentSize.width); - }]; - if (imageModel.image) { - self.communicationIndicate.image = imageModel.image; - }else { - self.communicationIndicate.imageUrl = imageModel.imageUrl; - } -} - -#pragma mark - SDPhotoBrowserRepresendtation -- (NSURL *)aplictowardsionearanceBrowser:(SDAppearanceBrowser *)browser highQualityIndictowardseWEEBSITEInthecaseofIndictowardsrix:(NSInteger)index { - return [NSURL URLWithString:self.indicateGroal.imageUrl]; -} - -- (UIImage *)aplictowardsionearanceBrowser:(SDAppearanceBrowser *)browser placeholderIndictowardseInthecaseofIndictowardsrix:(NSInteger)index { - return [UIIndicateConstant defalutOriflammeDepapossessor]; -} - -- (void)didBetowardsIndictowardse { - SDAppearanceBrowser *browser = [[SDAppearanceBrowser alloc]init]; - browser.sourceIndicatesAccommoengagementdRegard = self; - browser.delegate = self; - browser.indicateComputation = 1; - browser.universalIndicateIndicatrix = 0; - browser.isMe = NO; - [browser show]; -} - - -- (NetIndicateRegard *)communicationIndicate { - if (!_communicationIndicate) { - _communicationIndicate = [[NetIndicateRegard alloc] init]; - _communicationIndicate.userInteractionEnabled = YES; - _communicationIndicate.layer.masksToBounds = YES; - _communicationIndicate.contentMode = UIViewContentModeScaleAspectFill; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didBetowardsIndictowardse)]; - [_communicationIndicate addGestureRecognizer:tap]; - } - return _communicationIndicate; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionPresentRegard.h b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionPresentRegard.h deleted file mode 100644 index 008ede10..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionPresentRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// CommunicationSatisfactionPresentRegard.h -// YUMI -// -// Created by YUMI on 2022/4/15. -// - -#import "CommunicationSatisfactionCustomRegard.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationSatisfactionPresentRegard : CommunicationSatisfactionCustomRegard - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionPresentRegard.m b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionPresentRegard.m deleted file mode 100644 index 6a0b86a9..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionPresentRegard.m +++ /dev/null @@ -1,92 +0,0 @@ -// -// CommunicationSatisfactionPresentRegard.m -// YUMI -// -// Created by YUMI on 2022/4/15. -// - -#import "CommunicationSatisfactionPresentRegard.h" -#import -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "PresentAchieveAbstractMatrix.h" -#import "CommunicationPresentMatrix.h" -@interface CommunicationSatisfactionPresentRegard () -@property (nonatomic,strong) NetIndicateRegard *presentIndicateRegard; -@property (nonatomic,strong) UILabel *presentConstituteSequencignation; -@property (nonatomic,strong) UILabel *presentFigureSequencignation; -@end - -@implementation CommunicationSatisfactionPresentRegard - -- (void)initSubViews { - [super initSubViews]; - [self addSubview:self.encourageRegard]; - - [self.encourageRegard addSubview:self.presentIndicateRegard]; - [self.encourageRegard addSubview:self.presentConstituteSequencignation]; - [self.encourageRegard addSubview:self.presentFigureSequencignation]; -} - -- (void)initChildLyRestrictions { - [super initChildLyRestrictions]; - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(80); - make.width.mas_equalTo(185); - }]; - - [self.presentIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(60, 60)); - make.left.mas_equalTo(self.encourageRegard); - make.centerY.mas_equalTo(self.encourageRegard); - }]; - - [self.presentConstituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.presentIndicateRegard.mas_right).offset(10); - make.bottom.mas_equalTo(self.presentIndicateRegard.mas_centerY).offset(-3); - }]; - - [self.presentFigureSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.presentConstituteSequencignation); - make.top.mas_equalTo(self.presentIndicateRegard.mas_centerY).offset(3); - }]; -} - -- (void)render:(CommunicationBaseMatrix *)model { - CommunicationPresentMatrix *obj = (CommunicationPresentMatrix *)model; - self.presentIndicateRegard.imageUrl = obj.giftInfo.giftUrl; - self.presentConstituteSequencignation.text = obj.giftInfo.giftName; - self.presentFigureSequencignation.text = [NSString stringWithFormat:@"X%ld", obj.giftNum]; -} - -- (NetIndicateRegard *)presentIndicateRegard { - if (!_presentIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _presentIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _presentIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _presentIndicateRegard.layer.masksToBounds = YES; - } - return _presentIndicateRegard; -} - -- (UILabel *)presentConstituteSequencignation { - if (!_presentConstituteSequencignation) { - _presentConstituteSequencignation = [[UILabel alloc] init]; - _presentConstituteSequencignation.font = [UIFont systemFontOfSize:15]; - _presentConstituteSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _presentConstituteSequencignation; -} - -- (UILabel *)presentFigureSequencignation { - if (!_presentFigureSequencignation) { - _presentFigureSequencignation = [[UILabel alloc] init]; - _presentFigureSequencignation.font = [UIFont systemFontOfSize:12]; - _presentFigureSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _presentFigureSequencignation; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionPrototypeAscensionRegard.h b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionPrototypeAscensionRegard.h deleted file mode 100644 index 7511f51e..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionPrototypeAscensionRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// CommunicationSatisfactionPrototypeAscensionRegard.h -// YUMI -// -// Created by YUMI on 2022/4/19. -// - -#import "CommunicationSatisfactionCustomRegard.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationSatisfactionPrototypeAscensionRegard : CommunicationSatisfactionCustomRegard - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionPrototypeAscensionRegard.m b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionPrototypeAscensionRegard.m deleted file mode 100644 index b3733280..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionPrototypeAscensionRegard.m +++ /dev/null @@ -1,136 +0,0 @@ -// -// CommunicationSatisfactionPrototypeAscensionRegard.m -// YUMI -// -// Created by YUMI on 2022/4/19. -// - -#import "CommunicationSatisfactionPrototypeAscensionRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "NSObject+MJExtension.h" -#import "YUMIHtmlUrl.h" -#import "XCCurrentVCStackExecutive.h" -#import "CommunicationPrototypeAscensionMatrix.h" -#import "YUMITissueRegardGovernancer.h" - -@interface CommunicationSatisfactionPrototypeAscensionRegard () - -@property (nonatomic,strong) UIImageView *brandIndicateRegard; -@property (nonatomic,strong) UILabel *prototypeSequencignation; -@property (nonatomic,strong) UIView * burlywoodRegard; -@property (nonatomic,strong) UIButton *examineBtuton; -@property (nonatomic,strong) UIImageView *arrowIndicateRegard; - -@end - -@implementation CommunicationSatisfactionPrototypeAscensionRegard - - -- (void)render:(CommunicationBaseMatrix *)model { - CommunicationPrototypeAscensionMatrix *obj = (CommunicationPrototypeAscensionMatrix *)model; - self.brandIndicateRegard.image = [UIImage imageNamed:obj.imageName]; - self.prototypeSequencignation.text = obj.level; -} - -- (void)initSubViews { - [super initSubViews]; - [self.encourageRegard addSubview:self.brandIndicateRegard]; - [self.encourageRegard addSubview:self.prototypeSequencignation]; - [self.encourageRegard addSubview:self.burlywoodRegard]; - [self.encourageRegard addSubview:self.examineBtuton]; - [self.encourageRegard addSubview:self.arrowIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [super initChildLyRestrictions]; - [self.encourageRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self).insets(UIEdgeInsetsMake(MESSAGE_PADDING, MESSAGE_PADDING, 0, MESSAGE_PADDING)); - make.size.mas_equalTo(CGSizeMake(220, 116)); - }]; - - - [self.brandIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(64,64)); - make.left.mas_equalTo(self.encourageRegard); - make.top.mas_equalTo(self.encourageRegard); - }]; - - [self.prototypeSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.brandIndicateRegard.mas_right).offset(10); - make.right.mas_equalTo(self.encourageRegard); - make.top.mas_equalTo(self.brandIndicateRegard).offset(10); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageRegard); - make.height.mas_equalTo(0.5); - make.top.mas_equalTo(self.brandIndicateRegard.mas_bottom).offset(10); - }]; - - [self.examineBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageRegard); - make.height.mas_equalTo(40); - make.top.mas_equalTo(self.burlywoodRegard.mas_bottom); - }]; - - [self.arrowIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(6.5, 11)); - make.right.mas_equalTo(self.encourageRegard); - make.centerY.mas_equalTo(self.examineBtuton); - }]; -} -#pragma mark - Event Response -- (void)examineBtutonPerformance:(UIButton *)sender { - YUMITissueRegardGovernancer * webVewC = [[YUMITissueRegardGovernancer alloc] init]; - webVewC.url = URLWithType(kUserLevelURL); - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:webVewC animated:YES]; -} -#pragma mark - Getters And Setters -- (UIImageView *)brandIndicateRegard { - if (!_brandIndicateRegard) { - _brandIndicateRegard = [[UIImageView alloc] init]; - } - return _brandIndicateRegard; -} - -- (UILabel *)prototypeSequencignation { - if (!_prototypeSequencignation) { - _prototypeSequencignation = [[UILabel alloc] init]; - _prototypeSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _prototypeSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _prototypeSequencignation.numberOfLines = 2; - } - return _prototypeSequencignation; -} - -- (UIButton *)examineBtuton { - if (!_examineBtuton) { - _examineBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_examineBtuton setTitle:YMLocalizedString(@"Message_Content_Level_Upgrade_View_0") forState:UIControlStateNormal]; - [_examineBtuton setTitleColor:UIColorFromRGB(0x4C5AF1) forState:UIControlStateNormal]; - _examineBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - [_examineBtuton addTarget:self action:@selector(examineBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _examineBtuton; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _burlywoodRegard; -} - -- (UIImageView *)arrowIndicateRegard { - if (!_arrowIndicateRegard) { - _arrowIndicateRegard = [[UIImageView alloc] init]; - _arrowIndicateRegard.userInteractionEnabled = YES; - _arrowIndicateRegard.image = [UIImage imageNamed:@"yumi_same_right_arrow"]; - } - return _arrowIndicateRegard; -} - - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionRevokeRegard.h b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionRevokeRegard.h deleted file mode 100644 index e1c1fc3b..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionRevokeRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// CommunicationSatisfactionRevokeRegard.h -// YUMI -// -// Created by YUMI on 2023/1/31. -// - -#import -#import "CommunicationContentCeremony.h" -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationSatisfactionRevokeRegard : UIView - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionRevokeRegard.m b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionRevokeRegard.m deleted file mode 100644 index c5c476da..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionRevokeRegard.m +++ /dev/null @@ -1,48 +0,0 @@ -// -// CommunicationSatisfactionRevokeRegard.m -// YUMI -// -// Created by YUMI on 2023/1/31. -// - -#import "CommunicationSatisfactionRevokeRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "CommunicationRevokeMatrix.h" - -@interface CommunicationSatisfactionRevokeRegard() - -@property (nonatomic, strong) UILabel * intratemporalSequencignation; - -@end - -@implementation CommunicationSatisfactionRevokeRegard - -- (instancetype)init { - self = [super init]; - if (self) { - [self addSubview:self.intratemporalSequencignation]; - [self.intratemporalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self).with.insets(UIEdgeInsetsMake(MESSAGE_PADDING, MESSAGE_PADDING, MESSAGE_PADDING, MESSAGE_PADDING)); - }]; - } - return self; -} - -- (void)render:(nonnull CommunicationBaseMatrix *)model { - self.superview.backgroundColor = [UIColor clearColor]; - CommunicationRevokeMatrix * timeModel= (CommunicationRevokeMatrix *)model; - NSString * communicationEssay = timeModel.title; - self.intratemporalSequencignation.text = communicationEssay; -} - -- (UILabel *)intratemporalSequencignation { - if (!_intratemporalSequencignation) { - _intratemporalSequencignation = [[UILabel alloc] init]; - _intratemporalSequencignation.font = [UIFont systemFontOfSize:10]; - _intratemporalSequencignation.textAlignment = NSTextAlignmentCenter; - _intratemporalSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - } - return _intratemporalSequencignation; -} -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionSeparationsAutoRegard.h b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionSeparationsAutoRegard.h deleted file mode 100644 index b882084b..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionSeparationsAutoRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// CommunicationSatisfactionSeparationsAutoRegard.h -// YUMI -// -// Created by YUMI on 2022/8/26. -// - -#import "CommunicationSatisfactionCustomRegard.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationSatisfactionSeparationsAutoRegard : CommunicationSatisfactionCustomRegard - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionSeparationsAutoRegard.m b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionSeparationsAutoRegard.m deleted file mode 100644 index 9fb7ad35..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionSeparationsAutoRegard.m +++ /dev/null @@ -1,88 +0,0 @@ -// -// CommunicationSatisfactionSeparationsAutoRegard.m -// YUMI -// -// Created by YUMI on 2022/8/26. -// - -#import "CommunicationSatisfactionSeparationsAutoRegard.h" -#import -#import "NSObject+MJExtension.h" -#import "DJDKMIMOMColor.h" -#import "CommunicationSeparationsAutoMatrix.h" -@interface CommunicationSatisfactionSeparationsAutoRegard () - -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UILabel *intratemporalSequencignation; -@property (nonatomic, strong) UILabel *communicationSequencignation; -@end - -@implementation CommunicationSatisfactionSeparationsAutoRegard - -- (void)initSubViews { - [super initSubViews]; - [self addSubview:self.encourageRegard]; - - [self.encourageRegard addSubview:self.titleLabel]; - [self.encourageRegard addSubview:self.intratemporalSequencignation]; - [self.encourageRegard addSubview:self.communicationSequencignation]; -} - -- (void)initChildLyRestrictions { - [super initChildLyRestrictions]; - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(250, 120)); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(14.5); - make.top.mas_equalTo(10); - }]; - - [self.intratemporalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-14.5); - make.centerY.mas_equalTo(self.titleLabel); - }]; - - [self.communicationSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self).inset(14.5); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(12.5); - }]; -} - -- (void)render:(CommunicationBaseMatrix *)message { - CommunicationSeparationsAutoMatrix *obj = (CommunicationSeparationsAutoMatrix *)message; - self.titleLabel.text = obj.title; - self.intratemporalSequencignation.text = obj.time; - self.communicationSequencignation.attributedText = obj.attributedText; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textColor = UIColorFromRGB(0x333333); - _titleLabel.font = [UIFont boldSystemFontOfSize:15]; - } - return _titleLabel; -} - -- (UILabel *)intratemporalSequencignation { - if (!_intratemporalSequencignation) { - _intratemporalSequencignation = [[UILabel alloc] init]; - _intratemporalSequencignation.textColor = UIColorFromRGB(0x999999); - _intratemporalSequencignation.font = [UIFont systemFontOfSize:12]; - _intratemporalSequencignation.textAlignment = NSTextAlignmentRight; - } - return _intratemporalSequencignation; -} - -- (UILabel *)communicationSequencignation { - if (!_communicationSequencignation) { - _communicationSequencignation = [[UILabel alloc] init]; - _communicationSequencignation.textColor = UIColorFromRGB(0x333333); - _communicationSequencignation.font = [UIFont systemFontOfSize:14]; - _communicationSequencignation.numberOfLines = 0; - } - return _communicationSequencignation; -} -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionSeparationsRegard.h b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionSeparationsRegard.h deleted file mode 100644 index 87f9666d..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionSeparationsRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// CommunicationSatisfactionSeparationsRegard.h -// YUMI -// -// Created by YUMI on 2022/8/25. -// - -#import "CommunicationSatisfactionCustomRegard.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationSatisfactionSeparationsRegard : CommunicationSatisfactionCustomRegard - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionSeparationsRegard.m b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionSeparationsRegard.m deleted file mode 100644 index 147ca6e1..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionSeparationsRegard.m +++ /dev/null @@ -1,119 +0,0 @@ -// -// CommunicationSatisfactionSeparationsRegard.m -// YUMI -// -// Created by YUMI on 2022/8/25. -// - -#import "CommunicationSatisfactionSeparationsRegard.h" -#import -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "YUMIPresentStorage.h" -#import "NSObject+MJExtension.h" -#import "XCCurrentVCStackExecutive.h" -#import "ClientDisposition.h" -#import "PresentAchieveAbstractMatrix.h" -#import "CommunicationSeparationsMatrix.h" -#import "YUMISeparationsSpecificRegardGovernancer.h" -#import "YUMIMomentsSimpleSpecificRegardGovernancer.h" -#import "SeparationsAbstractMatrix.h" -@interface CommunicationSatisfactionSeparationsRegard () -@property (nonatomic,strong) NetIndicateRegard *reminiscenceRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UILabel *satisfperformanceSequencignation; -@property (nonatomic,strong) SeparationsAbstractMatrix *reminiscence; -@end - -@implementation CommunicationSatisfactionSeparationsRegard - - -- (void)initSubViews { - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsEncourageRegard)]; - [self.encourageRegard addGestureRecognizer:tap]; - [super initSubViews]; - [self addSubview:self.encourageRegard]; - - [self.encourageRegard addSubview:self.reminiscenceRegard]; - [self.encourageRegard addSubview:self.titleLabel]; - [self.encourageRegard addSubview:self.satisfperformanceSequencignation]; -} - -- (void)initChildLyRestrictions { - [super initChildLyRestrictions]; - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(250, 60)); - }]; - - [self.reminiscenceRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(50, 50)); - make.left.mas_equalTo(self.encourageRegard); - make.centerY.mas_equalTo(self.encourageRegard); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.reminiscenceRegard.mas_right).offset(10); - make.bottom.mas_equalTo(self.reminiscenceRegard.mas_centerY).offset(-3); - make.right.mas_lessThanOrEqualTo(self.encourageRegard).offset(-10); - }]; - - [self.satisfperformanceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.titleLabel); - make.top.mas_equalTo(self.reminiscenceRegard.mas_centerY).offset(3); - make.right.mas_lessThanOrEqualTo(self.encourageRegard).offset(-10); - }]; -} - -- (void)betowardsEncourageRegard { - YUMISeparationsSpecificRegardGovernancer * specificRegard = [[YUMISeparationsSpecificRegardGovernancer alloc] init]; - specificRegard.monentsInfo = self.reminiscence; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:specificRegard animated:YES]; - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMISeparationsSpecificRegardGovernancer * specificRegard = [[YUMISeparationsSpecificRegardGovernancer alloc] init]; - specificRegard.monentsInfo = self.reminiscence; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:specificRegard animated:YES]; - }else{ - YUMIMomentsSimpleSpecificRegardGovernancer * specificRegard = [[YUMIMomentsSimpleSpecificRegardGovernancer alloc] init]; - specificRegard.monentsInfo = self.reminiscence; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:specificRegard animated:YES]; - } -} - -- (void)render:(CommunicationBaseMatrix *)message { - CommunicationSeparationsMatrix *obj = (CommunicationSeparationsMatrix *)message; - self.reminiscence = obj.monentsInfo; - self.reminiscenceRegard.imageUrl = obj.imageUrl; - self.titleLabel.text = obj.title; - self.satisfperformanceSequencignation.text = self.reminiscence.content; -} - -- (NetIndicateRegard *)reminiscenceRegard { - if (!_reminiscenceRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _reminiscenceRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _reminiscenceRegard.contentMode = UIViewContentModeScaleAspectFill; - _reminiscenceRegard.layer.masksToBounds = YES; - _reminiscenceRegard.layer.cornerRadius = 10; - } - return _reminiscenceRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:15]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -- (UILabel *)satisfperformanceSequencignation { - if (!_satisfperformanceSequencignation) { - _satisfperformanceSequencignation = [[UILabel alloc] init]; - _satisfperformanceSequencignation.font = [UIFont systemFontOfSize:12]; - _satisfperformanceSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _satisfperformanceSequencignation; -}@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionTweetRegard.h b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionTweetRegard.h deleted file mode 100644 index 66b8ade9..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionTweetRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// CommunicationSatisfactionTweetRegard.h -// YUMI -// -// Created by YUMI on 2022/4/28. -// - -#import "CommunicationSatisfactionCustomRegard.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationSatisfactionTweetRegard : CommunicationSatisfactionCustomRegard - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionTweetRegard.m b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionTweetRegard.m deleted file mode 100644 index 43e0c3a8..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionTweetRegard.m +++ /dev/null @@ -1,223 +0,0 @@ -// -// CommunicationSatisfactionTweetRegard.m -// YUMI -// -// Created by YUMI on 2022/4/28. -// - -#import "CommunicationSatisfactionTweetRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "NSObject+MJExtension.h" -#import "XCCurrentVCStackExecutive.h" -#import "YUMIConstant.h" -#import "CommunicationTweetMatrix.h" -#import "SatisfactionTweetMatrix.h" -#import "YUMITissueRegardGovernancer.h" -#import "YUMIChamberRegardGovernancer.h" - -@interface CommunicationSatisfactionTweetRegard () -@property (nonatomic,strong) NetIndicateRegard *brandIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UIView * burlywoodRegard; -@property (nonatomic,strong) UILabel *subChampionSequencignation; -@property (nonatomic,strong) UIButton *examineBtuton; -@property (nonatomic, strong) UIImageView *isStrangeIndicateRegard; -@property (nonatomic,strong) SatisfactionTweetMatrix *tweetMatrix; -@property (nonatomic, copy) NSString *messageId; - -@end - - -@implementation CommunicationSatisfactionTweetRegard - -- (void)render:(CommunicationBaseMatrix *)model1 { - CommunicationTweetMatrix *obj = (CommunicationTweetMatrix *)model1; - SatisfactionTweetMatrix * model = obj.tweetInfo; - self.tweetMatrix = model; - self.messageId = model1.message.messageId; - self.brandIndicateRegard.imageUrl = model.picUrl; - self.titleLabel.attributedText = [[NSMutableAttributedString alloc] initWithString:model.title attributes:[self communictowardsionEssayTowardstibutes:[UIFont systemFontOfSize:16] color:[DJDKMIMOMColor mainEssayPrettify]]]; - self.subChampionSequencignation.attributedText = [[NSMutableAttributedString alloc] initWithString:model.desc attributes:[self communictowardsionEssayTowardstibutes:[UIFont systemFontOfSize:13] color:[DJDKMIMOMColor instantEssayPrettify]]]; - - CGFloat oneHeight = [YMLocalizedString(@"Message_Content_Tweet_View_0") boundingRectWithSize:CGSizeMake(240, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin - attributes:[self communictowardsionEssayTowardstibutes:[UIFont systemFontOfSize:16] color:[DJDKMIMOMColor mainEssayPrettify]] context:nil].size.height + 2.5; - - CGFloat titleHeight = [model.title boundingRectWithSize:CGSizeMake(240, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin - attributes:[self communictowardsionEssayTowardstibutes:[UIFont systemFontOfSize:16] color:[DJDKMIMOMColor mainEssayPrettify]] context:nil].size.height; - if (titleHeight <= oneHeight * 2) { - [self.titleLabel mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(titleHeight + 5); - }]; - } else{ - [self.titleLabel mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(oneHeight * 2); - }]; - } - - - - CGFloat desHeight = [model.desc boundingRectWithSize:CGSizeMake(240, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin - attributes:[self communictowardsionEssayTowardstibutes:[UIFont systemFontOfSize:13] color:[DJDKMIMOMColor mainEssayPrettify]] context:nil].size.height; - [self.subChampionSequencignation mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(desHeight); - }]; - - NSArray *redPacketHistory = [[NSUserDefaults standardUserDefaults] objectForKey:kTuWenMessageHistory]; - if ([redPacketHistory containsObject: model1.message.messageId]) { - self.isStrangeIndicateRegard.hidden = YES; - } else { - self.isStrangeIndicateRegard.hidden = NO; - } -} - -- (NSDictionary *)communictowardsionEssayTowardstibutes:(UIFont *)font color:(UIColor *)color { - NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; - [paragraphStyle setLineSpacing:2.5]; - return @{ - NSFontAttributeName:font, - NSParagraphStyleAttributeName: paragraphStyle, - NSForegroundColorAttributeName:color - }; -} - -- (void)initSubViews { - [super initSubViews]; - [self.encourageRegard addSubview:self.titleLabel]; - [self.encourageRegard addSubview:self.brandIndicateRegard]; - [self.encourageRegard addSubview:self.burlywoodRegard]; - [self.encourageRegard addSubview:self.subChampionSequencignation]; - [self.encourageRegard addSubview:self.examineBtuton]; - [self.encourageRegard addSubview:self.isStrangeIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [super initChildLyRestrictions]; - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(280); - make.bottom.mas_equalTo(self.examineBtuton); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageRegard); - make.top.mas_equalTo(self.encourageRegard); - make.height.mas_equalTo(18); - }]; - - [self.brandIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageRegard); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(10); - make.height.mas_equalTo(87); - }]; - - [self.subChampionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageRegard); - make.top.mas_equalTo(self.brandIndicateRegard.mas_bottom).offset(10); - make.height.mas_equalTo(18); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageRegard); - make.height.mas_equalTo(0.5); - make.top.mas_equalTo(self.subChampionSequencignation.mas_bottom).offset(5); - }]; - - [self.examineBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageRegard); - make.top.mas_equalTo(self.burlywoodRegard.mas_bottom).offset(10); - make.height.mas_equalTo(20); - }]; - [self.isStrangeIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.encourageRegard); - make.top.mas_equalTo(self.encourageRegard).mas_offset(3); - make.size.mas_equalTo(CGSizeMake(24, 10)); - }]; -} - -#pragma mark - Event Response -- (void)examineBtutonPerformance:(UIButton *)sender { - - NSArray *history = [[NSUserDefaults standardUserDefaults] objectForKey:kTuWenMessageHistory]; - NSMutableArray *tempArray = [NSMutableArray arrayWithArray:history]; - if (![tempArray containsObject:self.messageId]) { - [tempArray addObject:self.messageId]; - [[NSUserDefaults standardUserDefaults] setObject:tempArray forKey:kTuWenMessageHistory]; - [[NSUserDefaults standardUserDefaults] synchronize]; - } - if (self.tweetMatrix.routerType == 1) { - [YUMIChamberRegardGovernancer unfoildChamber:self.tweetMatrix.routerValue viewController:[XCCurrentVCStackExecutive shareManager].getCurrentVC]; - } else if (self.tweetMatrix.routerType == 2) { - YUMITissueRegardGovernancer * webVewC = [[YUMITissueRegardGovernancer alloc] init]; - webVewC.url = self.tweetMatrix.routerValue; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:webVewC animated:YES]; - } else { - if ([self.tweetMatrix.webUrl hasPrefix:@"http"]) { - YUMITissueRegardGovernancer * webVewC = [[YUMITissueRegardGovernancer alloc] init]; - webVewC.url = self.tweetMatrix.webUrl; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:webVewC animated:YES]; - } - } -} - -#pragma mark - Getters And Setters -- (NetIndicateRegard *)brandIndicateRegard { - if (!_brandIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _brandIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _brandIndicateRegard.layer.masksToBounds = YES; - _brandIndicateRegard.layer.cornerRadius = 10; - _brandIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _brandIndicateRegard.layer.masksToBounds = YES; - } - return _brandIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.numberOfLines = 2; - _titleLabel.preferredMaxLayoutWidth = 240; - } - return _titleLabel; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _burlywoodRegard; -} - -- (UILabel *)subChampionSequencignation { - if (!_subChampionSequencignation) { - _subChampionSequencignation = [[UILabel alloc] init]; - _subChampionSequencignation.numberOfLines = 0; - _subChampionSequencignation.preferredMaxLayoutWidth = 240; - } - return _subChampionSequencignation; -} - -- (UIButton *)examineBtuton { - if (!_examineBtuton) { - _examineBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_examineBtuton setTitle:YMLocalizedString(@"Message_Content_Tweet_View_1") forState:UIControlStateNormal]; - [_examineBtuton setTitleColor:UIColorFromRGB(0x4C5AF1) forState:UIControlStateNormal]; - _examineBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - [_examineBtuton addTarget:self action:@selector(examineBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _examineBtuton; -} - -- (UIImageView *)isStrangeIndicateRegard { - if (!_isStrangeIndicateRegard) { - _isStrangeIndicateRegard = [[UIImageView alloc] init]; - _isStrangeIndicateRegard.image = [UIImage imageNamed:@"yumi_present_type_newIcon"]; - _isStrangeIndicateRegard.hidden = YES; - } - return _isStrangeIndicateRegard; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionUnSupportRegard.h b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionUnSupportRegard.h deleted file mode 100644 index 2f0e7329..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionUnSupportRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// MessageContentUnSupport.h -// YUMI -// -// Created by YUMI on 2022/4/19. -// - -#import -#import "CommunicationContentCeremony.h" -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationSatisfactionUnSupportRegard : UIView - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionUnSupportRegard.m b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionUnSupportRegard.m deleted file mode 100644 index 417b4f31..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionUnSupportRegard.m +++ /dev/null @@ -1,61 +0,0 @@ -// -// MessageContentUnSupport.m -// YUMI -// -// Created by YUMI on 2022/4/19. -// - -#import "CommunicationSatisfactionUnSupportRegard.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "CommunicationUnSupportMatrix.h" - - -@interface CommunicationSatisfactionUnSupportRegard () -@property (nonatomic,strong) UILabel *unSupportSequencignation; -@end - -@implementation CommunicationSatisfactionUnSupportRegard - -- (void)render:(CommunicationBaseMatrix *)message { - NIMCustomObject *obj = (NIMCustomObject *)message.message.messageObject; - NSLog(@"%@", obj); -} - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.unSupportSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.unSupportSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self).with.insets(UIEdgeInsetsMake(MESSAGE_PADDING, MESSAGE_PADDING, MESSAGE_PADDING, MESSAGE_PADDING)); - }]; -} - -#pragma mark - Getters And Setters -- (UILabel *)unSupportSequencignation { - if (!_unSupportSequencignation) { - _unSupportSequencignation = [[UILabel alloc]initWithFrame:CGRectZero]; - _unSupportSequencignation.preferredMaxLayoutWidth = CONTENT_WIDTH_MAX - MESSAGE_PADDING * 2; - _unSupportSequencignation.textColor = DJDKMIMOMColor.mainEssayPrettify; - _unSupportSequencignation.text = YMLocalizedString(@"Message_Content_Un_Support_View_0"); - _unSupportSequencignation.textAlignment = NSTextAlignmentCenter; - _unSupportSequencignation.font = [UIFont systemFontOfSize:13]; - } - return _unSupportSequencignation; -} - - - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionUnfoildEnergeticRegard.h b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionUnfoildEnergeticRegard.h deleted file mode 100644 index bf46cc9e..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionUnfoildEnergeticRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// MessageContentOnlineView.h -// YUMI -// -// Created by YUMI on 2022/4/19. -// 关注的人 开启直播 - -#import "CommunicationSatisfactionCustomRegard.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationSatisfactionUnfoildEnergeticRegard : CommunicationSatisfactionCustomRegard - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionUnfoildEnergeticRegard.m b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionUnfoildEnergeticRegard.m deleted file mode 100644 index c7930e43..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionUnfoildEnergeticRegard.m +++ /dev/null @@ -1,144 +0,0 @@ -// -// MessageContentOnlineView.m -// YUMI -// -// Created by YUMI on 2022/4/19. -// - -#import "CommunicationSatisfactionUnfoildEnergeticRegard.h" -#import -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "XCCurrentVCStackExecutive.h" -#import "ChamberHostRepresendtation.h" -#import "SatisfactionUnfoildEnergeticAbstractMatrix.h" -#import "CommunicationUnfoildEnergeticMatrix.h" -#import "YUMIChamberRegardGovernancer.h" - - -@interface CommunicationSatisfactionUnfoildEnergeticRegard () -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UILabel *idSequencignation; -@property (nonatomic,strong) SatisfactionUnfoildEnergeticAbstractMatrix *userInfo; -@end - -@implementation CommunicationSatisfactionUnfoildEnergeticRegard - - -- (void)render:(CommunicationBaseMatrix *)model { - CommunicationUnfoildEnergeticMatrix *obj = (CommunicationUnfoildEnergeticMatrix *)model; - self.userInfo = obj.userInfo; - if (obj.avatar.length > 0 && obj.nick.length > 0) { - self.intelligenceportraitIndicateRegard.imageUrl = obj.avatar; - self.idSequencignation.text = obj.nick; - } else { - if (obj.uid.integerValue > 0) { - NSArray *uids = @[obj.uid]; - [[NIMSDK sharedSDK].userManager fetchUserInfos:uids completion:^(NSArray * _Nullable users, NSError * _Nullable error) { - if (error == nil) { - NIMUser *user = users[0]; - self.intelligenceportraitIndicateRegard.imageUrl = user.userInfo.avatarUrl; - self.idSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"Message_Content_Open_Live_View_0"), user.userInfo.nickName]; - } - }]; - } - - } -} - -- (void)initSubViews { - [super initSubViews]; - [self addSubview:self.encourageRegard]; - - [self.encourageRegard addSubview:self.intelligenceportraitIndicateRegard]; - [self.encourageRegard addSubview:self.titleLabel]; - [self.encourageRegard addSubview:self.idSequencignation]; - UITapGestureRecognizer * tap= [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(encourageRegardBetowardsRecognozer)]; - [self.encourageRegard addGestureRecognizer:tap]; -} - - -- (void)initChildLyRestrictions { - [super initChildLyRestrictions]; - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self).insets(UIEdgeInsetsMake(MESSAGE_PADDING, MESSAGE_PADDING, MESSAGE_PADDING, MESSAGE_PADDING)); - make.size.mas_equalTo(CGSizeMake(200, 50)); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(47, 47)); - make.centerY.mas_equalTo(self.encourageRegard); - make.left.mas_equalTo(self.encourageRegard).offset(10); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(10); - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(-2); - make.right.mas_lessThanOrEqualTo(self.encourageRegard); - }]; - - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.titleLabel); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(2); - }]; -} - -#pragma mark - Event Response -- (void)encourageRegardBetowardsRecognozer { - if (self.userInfo.uid.length > 0) { - UIViewController * controllerView = [XCCurrentVCStackExecutive shareManager].getCurrentVC; - - [controllerView.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj isKindOfClass:[YUMIChamberRegardGovernancer class]]) { - [controllerView.navigationController popToRootViewControllerAnimated:NO]; - YUMIChamberRegardGovernancer * rooomVC = obj; - [rooomVC exitRoom]; - *stop = YES; - } - }]; - if ([[XCCurrentVCStackExecutive shareManager].getCurrentVC isKindOfClass:[YUMIChamberRegardGovernancer class]]) { - UIViewController * controller = [XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController.presentingViewController; - if (controller) { - [YUMIChamberRegardGovernancer unfoildChamber:self.userInfo.uid viewController:controller]; - } - } else { - [YUMIChamberRegardGovernancer unfoildChamber:self.userInfo.uid viewController:[XCCurrentVCStackExecutive shareManager].getCurrentVC]; - } - - } -} - -#pragma mark - Getters And Setters -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:17]; - _titleLabel.text = @"你关注的TA"; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.font = [UIFont systemFontOfSize:13]; - _idSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _idSequencignation; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionUnionRegard.h b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionUnionRegard.h deleted file mode 100644 index 5b185d6a..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionUnionRegard.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// CommunicationSatisfactionUnionRegard.h -// YUMI -// -// Created by YUMI on 2022/4/18. -// - -#import "CommunicationSatisfactionCustomRegard.h" -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationSatisfactionUnionRegard : CommunicationSatisfactionCustomRegard - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionUnionRegard.m b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionUnionRegard.m deleted file mode 100644 index af3bc424..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionUnionRegard.m +++ /dev/null @@ -1,361 +0,0 @@ -// -// CommunicationSatisfactionUnionRegard.m -// YUMI -// -// Created by YUMI on 2022/4/18. -// - -#import "CommunicationSatisfactionUnionRegard.h" -#import -#import -#import "HttpRequestFacilitater.h" -#import "AttachmentMatrix.h" -#import "UnionCommunicationMatrix.h" -#import "NSObject+MJExtension.h" -#import "DJDKMIMOMColor.h" -#import "XNDJTBWGLoadingTool.h" -#import "AccountAbstractStorage.h" -#import "YUMIManeUnionRegardGovernancer.h" -#import "XCCurrentVCStackExecutive.h" -#import "NSMutableDictionary+Saft.h" -#import "CommunicationUnionMatrix.h" -#define MESSAGE_MAX_WIDTH 230 -#define MESSAGE_TEXT_PADDING 10 -@interface CommunicationSatisfactionUnionRegard () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UIView * contentView; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) YYLabel *satisfperformanceSequencignation; -@property (nonatomic,strong) UIStackView *governanceHierarchyRegard; -@property (nonatomic,strong) UIButton *rejectBtuton; -@property (nonatomic,strong) UIButton *consequentBtuton; -@property (nonatomic,strong) UIButton *agreeBtuton; -@property (nonatomic,strong) UnionCommunicationMatrix *communicationAbstract; -@property (nonatomic,strong) AttachmentMatrix *attachment; -@property (nonatomic,strong) NIMMessage *message; -@end - -@implementation CommunicationSatisfactionUnionRegard - -- (void)initSubViews { - [super initSubViews]; - [self addSubview:self.encourageRegard]; - - [self.encourageRegard addSubview:self.stackView]; - - [self.stackView addArrangedSubview:self.contentView]; - [self.stackView addArrangedSubview:self.governanceHierarchyRegard]; - - [self.contentView addSubview:self.titleLabel]; - [self.contentView addSubview:self.satisfperformanceSequencignation]; - - [self.governanceHierarchyRegard addArrangedSubview:self.rejectBtuton]; - [self.governanceHierarchyRegard addArrangedSubview:self.consequentBtuton]; - [self.governanceHierarchyRegard addArrangedSubview:self.agreeBtuton]; -} - -- (void)initChildLyRestrictions { - [super initChildLyRestrictions]; - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(MESSAGE_MAX_WIDTH); - make.bottom.mas_equalTo(self.stackView).offset(MESSAGE_TEXT_PADDING); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.encourageRegard); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(MESSAGE_MAX_WIDTH); - make.height.mas_equalTo(100); - }]; - - [self.governanceHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(44); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.contentView).offset(20); - }]; - - [self.satisfperformanceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.left.mas_equalTo(self.contentView).inset(MESSAGE_TEXT_PADDING); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(MESSAGE_TEXT_PADDING); - make.bottom.mas_equalTo(self.contentView); - }]; - - CGFloat itemWidth = (MESSAGE_MAX_WIDTH - 15 * 2 - 10) / 2.0; - [self.agreeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(itemWidth); - make.height.mas_equalTo(30); - }]; - - [self.rejectBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(self.agreeBtuton); - }]; - - [self.consequentBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(30); - }]; -} - -- (void)render:(CommunicationUnionMatrix *)model { - self.message = model.message; - NIMCustomObject *obj = (NIMCustomObject *)model.message.messageObject; - AttachmentMatrix * attach = obj.attachment; - self.attachment = attach; - UnionCommunicationMatrix * info; - if (model.message.localExt) { - info = [UnionCommunicationMatrix mtowardsrixAboutImpactbasket:model.message.localExt]; - } else { - info = [UnionCommunicationMatrix mtowardsrixAboutImpactbasket:attach.data]; - } - self.communicationAbstract = info; - self.titleLabel.text = info.layout.title.content; - self.titleLabel.font = [UIFont systemFontOfSize:info.layout.title.fontSize weight:info.layout.title.fontBold?UIFontWeightBold:UIFontWeightRegular]; - NSMutableAttributedString *attr = [[NSMutableAttributedString alloc]init]; - UnionCommunicationProgrammingMatrix *layout = info.layout; - for (UnionCommunicationProgrammingAbstractMatrix *params in layout.contents) { - if (params.content.length > 0) { - if ([params.content containsString:@"/r/n"]) { - params.content = @"\r\n"; - } - NSMutableAttributedString *subAttr = [[NSMutableAttributedString alloc]initWithString:params.content]; - if (params.fontSize > 0) { - [subAttr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:params.fontSize weight:params.fontBold?UIFontWeightBold:UIFontWeightRegular] range:NSMakeRange(0, subAttr.length)]; - } - - if (params.fontColor.length > 0) { - [subAttr addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor colorAboutHexBWSttr:params.fontColor] range:NSMakeRange(0, subAttr.length)]; - } - [attr appendAttributedString:subAttr]; - } - } - attr.yy_lineSpacing = 5; - self.satisfperformanceSequencignation.attributedText = attr; - self.satisfperformanceSequencignation.textAlignment = NSTextAlignmentCenter; - CGSize maxSize = CGSizeMake(MESSAGE_MAX_WIDTH - MESSAGE_TEXT_PADDING * 2, CGFLOAT_MAX); - YYTextLayout * contentLayout = [YYTextLayout layoutWithContainerSize:maxSize text:attr]; - CGFloat contentHeight = contentLayout.textBoundingSize.height + 5; - - [self.contentView mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(contentHeight + 20+ 15 + 15); - }]; - BOOL isCommonNotice = (attach.second == Custom_Message_Sub_Hall_Notice || attach.second == Custom_Message_Sub_Hall_Become_Hall); - if (!isCommonNotice) { - self.governanceHierarchyRegard.hidden = NO; - if (info.msgStatus == 0) { - info.msgStatus = CommunicationUnionDeclare_Untreated; - } - [self shanktConsequentControll:info second:attach.second]; - } else { - self.governanceHierarchyRegard.hidden = YES; - [self.rejectBtuton setAttributedTitle:nil forState:UIControlStateNormal]; - } -} - -- (void)shanktConsequentControll:(UnionCommunicationMatrix *)info second:(Individuality_Noti_Metro_HALL)second { - self.rejectBtuton.hidden = YES; - self.agreeBtuton.hidden = YES; - self.consequentBtuton.hidden= YES; - CommunicationUnionDeclare state = info.msgStatus; - NSMutableAttributedString *attr = [[NSMutableAttributedString alloc]init]; - switch (state) { - case CommunicationUnionDeclare_Agree: - { - self.consequentBtuton.hidden = NO; - [attr appendAttributedString:[self cretowardsConsequentIdiosyncracy:YMLocalizedString(@"Message_Content_Guild_View_0") textColor:UIColorRGBAlpha(0x09BB07, 0.6)]]; - } - break; - case CommunicationUnionDeclare_Reject: - { - self.consequentBtuton.hidden= NO; - [attr appendAttributedString:[self cretowardsConsequentIdiosyncracy:YMLocalizedString(@"Message_Content_Guild_View_1") textColor:UIColorRGBAlpha(0xFF3852, 0.6)]]; - } - break; - case CommunicationUnionDeclare_OutData: - { - self.consequentBtuton.hidden= NO; - [attr appendAttributedString:[self cretowardsConsequentIdiosyncracy:YMLocalizedString(@"Message_Content_Guild_View_2") textColor:UIColorRGBAlpha(0x333333, 0.6)]]; - } - break; - case CommunicationUnionDeclare_Processed: - { - self.consequentBtuton.hidden= NO; - [attr appendAttributedString:[self cretowardsConsequentIdiosyncracy:YMLocalizedString(@"Message_Content_Guild_View_3") textColor:UIColorFromRGB(0xC6C6E9)]]; - } - break; - case CommunicationUnionDeclare_Untreated: - { - self.agreeBtuton.hidden = NO; - self.rejectBtuton.hidden = second == Custom_Message_Sub_Hall_Apply_Exit; - } - break; - default: - break; - } - if (attr.length > 0) { - [self.consequentBtuton setAttributedTitle:attr forState:UIControlStateNormal]; - } -} - -- (NSAttributedString *)cretowardsConsequentIdiosyncracy:(NSString *)message textColor:(UIColor *)textColor { - if (message.length <=0) { - message = @""; - } - NSMutableAttributedString *attr = [[NSMutableAttributedString alloc]initWithString:message]; - [attr addAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14],NSForegroundColorAttributeName:textColor} range:NSMakeRange(0, attr.length)]; - return attr; -} - - -#pragma mark - Event Response -- (void)controllBtutonPerformance:(UIButton *)sender { - NSRange recordRange = [self.communicationAbstract.url rangeOfString:@"recordId="]; - NSString *recordId; - if (!NSEqualRanges(recordRange, NSMakeRange(NSNotFound, 0))) { - if (self.communicationAbstract.url.length > recordRange.location+recordRange.length) { - recordId = [self.communicationAbstract.url substringFromIndex:recordRange.location+recordRange.length]; - } - } - if (recordId.length > 0) { - NSMutableDictionary * params = [NSMutableDictionary dictionary]; - [params secureSetGroal:recordId forKey:@"recordId"]; - [params secureSetGroal:[AccountAbstractStorage instance].acquireCid forKey:@"uid"]; - - NSString * type = sender.tag == 1000? @"0" : @"1"; - if (self.attachment.second == Custom_Message_Sub_Hall_Apply_Join || self.attachment.second == Custom_Message_Sub_Hall_Manager_Invite || self.attachment.second == Custom_Message_Sub_Hall_Apply_Exit) { - if (self.attachment.second != Custom_Message_Sub_Hall_Apply_Exit) { - [params setObject:type forKey:@"type"]; - } - [XNDJTBWGLoadingTool EvidenceChambering]; - [HttpRequestFacilitater POST:self.communicationAbstract.url params:params success:^(BaseMatrix * _Nonnull data) { - [XNDJTBWGLoadingTool brakeHUD]; - NSString *code = [NSString stringWithFormat:@"%@", data.data[@"code"]]; - BOOL isExpired = [code isEqualToString:@"90121"]; - BOOL isHandled = [code isEqualToString:@"90122"]; - CommunicationUnionDeclare state = CommunicationUnionDeclare_Untreated; - if (isExpired) { - state = CommunicationUnionDeclare_OutData; - } else if(isHandled) { - state = CommunicationUnionDeclare_Processed; - } else { - state = sender.tag == 1000 ? CommunicationUnionDeclare_Reject : CommunicationUnionDeclare_Agree; - } - self.communicationAbstract.msgStatus = state; - self.message.localExt = [self.communicationAbstract mtowardsrix2dictionary]; - [[NIMSDK sharedSDK].conversationManager updateMessage:self.message forSession:self.message.session completion:^(NSError * _Nullable error) { - if (self.delegate && [self.delegate respondsToSelector:@selector(refurbishCommunictowardsionAccomplishment:)]) { - [self.delegate refurbishCommunictowardsionAccomplishment:self.message]; - } - }]; - } failure:^(NSInteger resCode, NSString * _Nonnull message) { - [XNDJTBWGLoadingTool brakeHUD]; - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:message]; - }]; - } - } -} - -- (void)stowardsisfperformanceSequencigntionBetowardsRecognition { - if (self.communicationAbstract.routerType == 22 && self.communicationAbstract.routerValue > 0) { - YUMIManeUnionRegardGovernancer * guildVC= [[YUMIManeUnionRegardGovernancer alloc] init]; - guildVC.ownerUid = [AccountAbstractStorage instance].acquireCid; - guildVC.instituteId = [NSString stringWithFormat:@"%ld", self.communicationAbstract.routerValue]; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:guildVC animated:YES]; - } -} -#pragma mark - Getters And Setters -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentCenter; - _stackView.spacing = 10; - } - return _stackView; -} - -- (UIView *)contentView { - if (!_contentView) { - _contentView = [[UIView alloc] init]; - _contentView.backgroundColor = [UIColor clearColor]; - } - return _contentView; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textAlignment= NSTextAlignmentCenter; - _titleLabel.font = [UIFont systemFontOfSize:14]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - [_titleLabel setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical]; - } - return _titleLabel; -} - -- (YYLabel *)satisfperformanceSequencignation { - if (!_satisfperformanceSequencignation) { - _satisfperformanceSequencignation = [[YYLabel alloc] init]; - _satisfperformanceSequencignation.numberOfLines = 0; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(stowardsisfperformanceSequencigntionBetowardsRecognition)]; - [_satisfperformanceSequencignation addGestureRecognizer:tap]; - } - return _satisfperformanceSequencignation; -} - -- (UIStackView *)governanceHierarchyRegard { - if (!_governanceHierarchyRegard) { - _governanceHierarchyRegard = [[UIStackView alloc] init]; - _governanceHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _governanceHierarchyRegard.distribution = UIStackViewDistributionFill; - _governanceHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _governanceHierarchyRegard.spacing = 10; - } - return _governanceHierarchyRegard; -} - -- (UIButton *)rejectBtuton { - if (!_rejectBtuton) { - _rejectBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_rejectBtuton setTitle:YMLocalizedString(@"Message_Content_Guild_View_4") forState:UIControlStateNormal]; - _rejectBtuton.titleLabel.font = [UIFont systemFontOfSize:13]; - [_rejectBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionMainPrettify] forState:UIControlStateNormal]; - _rejectBtuton.layer.masksToBounds = YES; - _rejectBtuton.layer.cornerRadius = 15; - _rejectBtuton.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - _rejectBtuton.layer.borderWidth = 1; - [_rejectBtuton setBackgroundColor:[DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]]; - _rejectBtuton.tag = 1000; - [_rejectBtuton addTarget:self action:@selector(controllBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _rejectBtuton; -} - -- (UIButton *)consequentBtuton { - if (!_consequentBtuton) { - _consequentBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - } - return _consequentBtuton; -} - -- (UIButton *)agreeBtuton { - if (!_agreeBtuton) { - _agreeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_agreeBtuton setTitle:YMLocalizedString(@"Message_Content_Guild_View_5") forState:UIControlStateNormal]; - _agreeBtuton.titleLabel.font = [UIFont systemFontOfSize:13]; - [_agreeBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateNormal]; - _agreeBtuton.layer.masksToBounds = YES; - _agreeBtuton.layer.cornerRadius = 15; - [_agreeBtuton setBackgroundColor:[DJDKMIMOMColor aplictowardsionMainPrettify]]; - _agreeBtuton.tag = 1001; - [_agreeBtuton addTarget:self action:@selector(controllBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _agreeBtuton; -} - - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionVenturePrecautiousRegard.h b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionVenturePrecautiousRegard.h deleted file mode 100644 index 69c0671e..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionVenturePrecautiousRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// CommunicationSatisfactionVenturePrecautiousRegard.h -// YUMI -// -// Created by YUMI on 2022/8/11. -// - -#import "CommunicationSatisfactionCustomRegard.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationSatisfactionVenturePrecautiousRegard : CommunicationSatisfactionCustomRegard - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionVenturePrecautiousRegard.m b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionVenturePrecautiousRegard.m deleted file mode 100644 index e67d8e2c..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationSatisfactionVenturePrecautiousRegard.m +++ /dev/null @@ -1,51 +0,0 @@ -// -// CommunicationSatisfactionVenturePrecautiousRegard.m -// YUMI -// -// Created by YUMI on 2022/8/11. -// - -#import "CommunicationSatisfactionVenturePrecautiousRegard.h" -#import -#import -#import "CommunicationVenturePrecautiousMatrix.h" - -@interface CommunicationSatisfactionVenturePrecautiousRegard () -@property (nonatomic,strong) YYLabel *satisfperformanceSequencignation; -@end - -@implementation CommunicationSatisfactionVenturePrecautiousRegard - - - -- (void)initSubViews { - [super initSubViews]; - [self.encourageRegard addSubview:self.satisfperformanceSequencignation]; -} - - -- (void)initChildLyRestrictions { - [super initChildLyRestrictions]; - [self.satisfperformanceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.encourageRegard); - }]; -} - - -- (void)render:(nonnull CommunicationBaseMatrix *)message { - CommunicationVenturePrecautiousMatrix *obj = (CommunicationVenturePrecautiousMatrix *)message; - self.satisfperformanceSequencignation.attributedText = obj.attributedText; - -} - -- (YYLabel *)satisfperformanceSequencignation { - if (!_satisfperformanceSequencignation) { - _satisfperformanceSequencignation = [[YYLabel alloc]initWithFrame:CGRectZero]; - _satisfperformanceSequencignation.preferredMaxLayoutWidth = CONTENT_WIDTH_MAX - MESSAGE_PADDING * 2; - _satisfperformanceSequencignation.numberOfLines = 0; - } - return _satisfperformanceSequencignation; -} - - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationTipsRegard.h b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationTipsRegard.h deleted file mode 100644 index 3d112f5f..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationTipsRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// CommunicationTipsRegard.h -// YUMI -// -// Created by YUMI on 2023/2/1. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationTipsRegard : UIView - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationTipsRegard.m b/YuMi/Modules/YMMessage/View/Session/Content/CommunicationTipsRegard.m deleted file mode 100644 index 63f8bd0a..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/CommunicationTipsRegard.m +++ /dev/null @@ -1,49 +0,0 @@ -// -// CommunicationTipsRegard.m -// YUMI -// -// Created by YUMI on 2023/2/1. -// - -#import "CommunicationTipsRegard.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "CommunicationTipsMatrix.h" - -@interface CommunicationTipsRegard() - -@property (nonatomic, strong) UILabel * intratemporalSequencignation; -@property (nonatomic,strong) NIMMessage *message; - -@end - -@implementation CommunicationTipsRegard - -- (instancetype)init { - self = [super init]; - if (self) { - [self addSubview:self.intratemporalSequencignation]; - [self.intratemporalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self).with.insets(UIEdgeInsetsMake(0, 0, 0, 0)); - }]; - } - return self; -} - -- (void)render:(nonnull CommunicationBaseMatrix *)model { - self.superview.backgroundColor = [UIColor clearColor]; - self.message = model.message; - self.intratemporalSequencignation.text = model.message.text; -} - -- (UILabel *)intratemporalSequencignation { - if (!_intratemporalSequencignation) { - _intratemporalSequencignation = [[UILabel alloc] init]; - _intratemporalSequencignation.font = [UIFont systemFontOfSize:10]; - _intratemporalSequencignation.textAlignment = NSTextAlignmentCenter; - _intratemporalSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - } - return _intratemporalSequencignation; -} -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageConentAudioView.h b/YuMi/Modules/YMMessage/View/Session/Content/MessageConentAudioView.h new file mode 100644 index 00000000..9f8bf8e2 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageConentAudioView.h @@ -0,0 +1,16 @@ +// +// MessageConentAudioView.h +// YUMI +// +// Created by YUMI on 2022/4/22. +// + +#import +#import "MessageContentProtocol.h" +NS_ASSUME_NONNULL_BEGIN + +@interface MessageConentAudioView : UIView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageConentAudioView.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageConentAudioView.m new file mode 100644 index 00000000..5eb46037 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageConentAudioView.m @@ -0,0 +1,151 @@ +// +// MessageConentAudioView.m +// YUMI +// +// Created by YUMI on 2022/4/22. +// + +#import "MessageConentAudioView.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "MessageAudioCenter.h" +#import "MessageAudioModel.h" +@interface MessageConentAudioView () +///背景 +@property (nonatomic,strong) UIView * backView; +///显示语音的时长 +@property (nonatomic,strong) UILabel *timeLabel; +///显示语音的动画 +@property (nonatomic,strong) UIImageView *audioImageView; +///当前的消息 +@property (nonatomic,strong) NIMMessage *message; +///是否正在播放 +@property (nonatomic,assign) BOOL isPlaying; +@end + +@implementation MessageConentAudioView + +- (void)dealloc { + [[NIMSDK sharedSDK].mediaManager removeDelegate:self]; +} + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [[NIMSDK sharedSDK].mediaManager setNeedProximityMonitor:NO]; + [[NIMSDK sharedSDK].mediaManager addDelegate:self]; + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backView]; + [self.backView addSubview:self.timeLabel]; + [self.backView addSubview:self.audioImageView]; +} + +- (void)initSubViewConstraints { + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self).insets(UIEdgeInsetsMake(MESSAGE_PADDING, MESSAGE_PADDING, MESSAGE_PADDING, MESSAGE_PADDING)); + make.height.mas_equalTo(30); + make.width.mas_equalTo(50); + }]; + + [self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backView).offset(10); + make.centerY.mas_equalTo(self.backView); + }]; + + [self.audioImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20, 20)); + make.right.mas_equalTo(self.backView).offset(-10); + make.centerY.mas_equalTo(self.backView); + }]; +} + +#pragma mark - NIMMediaManagerDelegate +- (void)playAudio:(NSString *)filePath didBeganWithError:(NSError *)error { + if(filePath && !error) { + if ([MessageAudioCenter shareInstance].currentPlayingMessage == self.message) { + [self.audioImageView startAnimating]; + } + } +} + +- (void)playAudio:(NSString *)filePath didCompletedWithError:(NSError *)error { + [self.audioImageView stopAnimating]; + UIImage * thirdImage = [UIImage imageNamed:@"message_content_audio_playing_third"]; + self.audioImageView.image = thirdImage; +} +#pragma mark - Event Response +- (void)didTapBackRecognizer { + if ([self.message attachmentDownloadState] == NIMMessageAttachmentDownloadStateDownloaded) { + if ([[NIMSDK sharedSDK].mediaManager isPlaying]) { + [[NIMSDK sharedSDK].mediaManager stopPlay]; + } + + if (self.isPlaying) { + [[NIMSDK sharedSDK].mediaManager stopPlay]; + self.isPlaying = NO; + } else { + self.isPlaying = YES; + [[NIMSDK sharedSDK].mediaManager switchAudioOutputDevice:NIMAudioOutputDeviceSpeaker]; + [[MessageAudioCenter shareInstance] play:self.message]; + } + } +} + +#pragma mark - Getters And Setters +- (UIView *)backView { + if (!_backView) { + _backView = [[UIView alloc] init]; + _backView.backgroundColor = [UIColor clearColor]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapBackRecognizer)]; + [_backView addGestureRecognizer:tap]; + } + return _backView; +} + +- (UILabel *)timeLabel { + if (!_timeLabel) { + _timeLabel = [[UILabel alloc] init]; + _timeLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _timeLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _timeLabel; +} + +- (UIImageView *)audioImageView { + if (!_audioImageView) { + _audioImageView = [[UIImageView alloc] init]; + _audioImageView.userInteractionEnabled = YES; + UIImage * firstImage = [UIImage imageNamed:@"message_content_audio_playing_first"]; + UIImage * secondImage = [UIImage imageNamed:@"message_content_audio_playing_second"]; + UIImage * thirdImage = [UIImage imageNamed:@"message_content_audio_playing_third"]; + _audioImageView.animationImages = @[firstImage, secondImage, thirdImage]; + _audioImageView.animationDuration = 1; + _audioImageView.animationRepeatCount = HUGE; + _audioImageView.image = thirdImage; + } + return _audioImageView; +} + + +- (void)render:(MessageBaseModel *)model { + self.message = model.message; + NIMAudioObject *audioContent = (NIMAudioObject*)[model.message messageObject]; + NSAssert([audioContent isKindOfClass:[NIMAudioObject class]], @"message should be audio"); + [self.backView mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(model.contentSize.width);; + }]; + self.timeLabel.text = [NSString stringWithFormat:@"%zd\"",(audioContent.duration+500)/1000];//四舍五入 +} + + + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentApplicationShareView.h b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentApplicationShareView.h new file mode 100644 index 00000000..a8f98001 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentApplicationShareView.h @@ -0,0 +1,16 @@ +// +// MessageContentApplicationShareView.h +// YUMI +// +// Created by YUMI on 2022/4/19. +// + +#import "MessageContentCustomView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageContentApplicationShareView : MessageContentCustomView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentApplicationShareView.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentApplicationShareView.m new file mode 100644 index 00000000..b9b19ccb --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentApplicationShareView.m @@ -0,0 +1,143 @@ +// +// MessageContentApplicationShareView.m +// YUMI +// +// Created by YUMI on 2022/4/19. +// + +#import "MessageContentApplicationShareView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "RoomHostDelegate.h" +#import "XCCurrentVCStackManager.h" +///Model +#import "ContentApplicationShareModel.h" +#import "MessageApplicationShareModel.h" +///View +#import "XPRoomViewController.h" + +@interface MessageContentApplicationShareView () +///标题 +@property (nonatomic,strong) UILabel *titleLabel; +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///分割线 +@property (nonatomic,strong) UIView * lineView; +///进入房间 +@property (nonatomic,strong) UIButton *enterButton; +///分享信息 +@property (nonatomic,strong) ContentApplicationShareModel *shareInfo; +@end + +@implementation MessageContentApplicationShareView + + +- (void)render:(MessageBaseModel *)message { + MessageApplicationShareModel * model = (MessageApplicationShareModel *)message; + ContentApplicationShareModel *info = model.shareInfo; + if (info) { + self.shareInfo = info; + self.titleLabel.text = info.title; + self.avatarImageView.imageUrl = info.avatar; + if (self.shareInfo.actionName.length > 0) { + [self.enterButton setTitle:self.shareInfo.actionName forState:UIControlStateNormal]; + } + } +} + + +- (void)initSubViews { + [super initSubViews]; + [self addSubview:self.backView]; + [self.backView addSubview:self.titleLabel]; + [self.backView addSubview:self.avatarImageView]; + [self.backView addSubview:self.lineView]; + [self.backView addSubview:self.enterButton]; +} + +- (void)initSubViewConstraints { + [super initSubViewConstraints]; + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(KScreenWidth - AVATAR_MARGIN_H * 2 * 2 - AVATAR_SIZE - AVATAR_MARGIN_H, 90)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backView).offset(10); + make.right.mas_equalTo(self.avatarImageView.mas_left).offset(-10); + make.top.mas_equalTo(self.backView); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(50, 50)); + make.top.mas_equalTo(self.backView); + make.right.mas_equalTo(self.backView); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backView).inset(12); + make.height.mas_equalTo(1); + make.bottom.mas_equalTo(self.enterButton.mas_top); + }]; + + [self.enterButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.backView); + make.height.mas_equalTo(40); + }]; +} +#pragma mark - Event Response +- (void)enterButtonAction:(UIButton *)sender { + if (self.shareInfo.routerValue.length > 0) { + UIViewController * controllerView = [XCCurrentVCStackManager shareManager].getCurrentVC; + //退出原来的房间 如果有的话 TODO 总感觉这种处理不太优雅 进房入口多了 怎么办 进房需要整合 + [controllerView.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj isKindOfClass:[XPRoomViewController class]]) { + [controllerView.navigationController popToRootViewControllerAnimated:NO]; + XPRoomViewController * rooomVC = obj; + [rooomVC exitRoom]; + *stop = YES; + } + }]; + [XPRoomViewController openRoom:self.shareInfo.routerValue viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; + } +} + +#pragma mark - Getters And Setters +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _avatarImageView; +} + + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:14]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _titleLabel.numberOfLines = 2; + } + return _titleLabel; +} + +- (UIButton *)enterButton { + if (!_enterButton) { + _enterButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_enterButton setTitle:YMLocalizedString(@"MessageContentApplicationShareView0") forState:UIControlStateNormal]; + [_enterButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + _enterButton.titleLabel.font = [UIFont systemFontOfSize:16]; + [_enterButton addTarget:self action:@selector(enterButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _enterButton; +} + + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentCustomView.h b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentCustomView.h new file mode 100644 index 00000000..d6b5bd7a --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentCustomView.h @@ -0,0 +1,29 @@ +// +// MessageContentCustomView.h +// YUMI +// +// Created by YUMI on 2022/4/15. +// + +#import +#import +#import "AttachmentModel.h" +#import "MessageContentProtocol.h" +NS_ASSUME_NONNULL_BEGIN + +@protocol MessageContentCustomViewDelegate + +- (void)updateMessageSuccess:(NIMMessage *)message; + +@end + +@interface MessageContentCustomView : UIView +- (void)initSubViews; + +- (void)initSubViewConstraints; +@property (nonatomic,strong, readonly) UIView * backView; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentCustomView.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentCustomView.m new file mode 100644 index 00000000..c8f3fb54 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentCustomView.m @@ -0,0 +1,56 @@ +// +// MessageContentCustomView.m +// YUMI +// +// Created by YUMI on 2022/4/15. +// + +#import "MessageContentCustomView.h" +///Third +#import + +@interface MessageContentCustomView () +///背景 +@property (nonatomic,strong) UIView * backView; +@end + +@implementation MessageContentCustomView + +- (instancetype)init { + if (self = [super init]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Public Method +- (void)initSubViews { + [self addSubview:self.backView]; +} + +- (void)initSubViewConstraints { + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self).insets(UIEdgeInsetsMake(MESSAGE_PADDING, MESSAGE_PADDING, MESSAGE_PADDING, MESSAGE_PADDING)); + }]; +} + + +#pragma mark - MessageContentProtocol +- (void)render:(MessageBaseModel *)model { + +} + ++ (CGFloat)measureHeight:(NIMMessage *)message { + return 0; +} + +- (UIView *)backView { + if (!_backView) { + _backView = [[UIView alloc] init]; + _backView.backgroundColor = [UIColor clearColor]; + } + return _backView; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentFindNewGreetView.h b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentFindNewGreetView.h new file mode 100644 index 00000000..2f763940 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentFindNewGreetView.h @@ -0,0 +1,16 @@ +// +// MessageContentFindNewGreetView.h +// YUMI +// +// Created by YUMI on 2022/6/17. +// + +#import "MessageContentCustomView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageContentFindNewGreetView : MessageContentCustomView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentFindNewGreetView.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentFindNewGreetView.m new file mode 100644 index 00000000..b4850e6e --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentFindNewGreetView.m @@ -0,0 +1,60 @@ +// +// MessageContentFindNewGreetView.m +// YUMI +// +// Created by YUMI on 2022/6/17. +// + +#import "MessageContentFindNewGreetView.h" +///Third +#import +///Tool +#import "NSObject+MJExtension.h" +#import "DJDKMIMOMColor.h" +///Model +#import "FindNewGreetMessageModel.h" +#import "MessageFindNewGreetModel.h" + +@interface MessageContentFindNewGreetView () + +///显示内容 +@property (nonatomic,strong) UILabel *titleLabel; + +@end + +@implementation MessageContentFindNewGreetView + + +- (void)initSubViews { + [super initSubViews]; + [self.backView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [super initSubViewConstraints]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.backView); + }]; +} + + +- (void)render:(nonnull MessageBaseModel *)model { + MessageFindNewGreetModel *obj = (MessageFindNewGreetModel *)model; + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(obj.contentSize); + }]; + self.titleLabel.attributedText = obj.attributedText; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc]initWithFrame:CGRectZero]; + _titleLabel.preferredMaxLayoutWidth = CONTENT_WIDTH_MAX - MESSAGE_PADDING * 2; + _titleLabel.textColor = DJDKMIMOMColor.mainTextColor; + _titleLabel.font = [UIFont systemFontOfSize:13]; + _titleLabel.numberOfLines = 0; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentGiftView.h b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentGiftView.h new file mode 100644 index 00000000..6603d5e0 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentGiftView.h @@ -0,0 +1,16 @@ +// +// MessageContentGiftView.h +// YUMI +// +// Created by YUMI on 2022/4/15. +// + +#import "MessageContentCustomView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageContentGiftView : MessageContentCustomView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentGiftView.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentGiftView.m new file mode 100644 index 00000000..69320a4c --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentGiftView.m @@ -0,0 +1,98 @@ +// +// MessageContentGiftView.m +// YUMI +// +// Created by YUMI on 2022/4/15. +// + +#import "MessageContentGiftView.h" +///Third +#import +///Tool +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" +///Model +#import "GiftReceiveInfoModel.h" +#import "MessageGiftModel.h" +@interface MessageContentGiftView () +///礼物的 +@property (nonatomic,strong) NetImageView *giftImageView; +///显示名字 +@property (nonatomic,strong) UILabel *giftNameLabel; +///描述 +@property (nonatomic,strong) UILabel *giftNumLabel; +@end + +@implementation MessageContentGiftView + +- (void)initSubViews { + [super initSubViews]; + [self addSubview:self.backView]; + + [self.backView addSubview:self.giftImageView]; + [self.backView addSubview:self.giftNameLabel]; + [self.backView addSubview:self.giftNumLabel]; +} + +- (void)initSubViewConstraints { + [super initSubViewConstraints]; + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(80); + make.width.mas_equalTo(185); + }]; + + [self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(60, 60)); + make.left.mas_equalTo(self.backView); + make.centerY.mas_equalTo(self.backView); + }]; + + [self.giftNameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.giftImageView.mas_right).offset(10); + make.bottom.mas_equalTo(self.giftImageView.mas_centerY).offset(-3); + }]; + + [self.giftNumLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.giftNameLabel); + make.top.mas_equalTo(self.giftImageView.mas_centerY).offset(3); + }]; +} + +- (void)render:(MessageBaseModel *)model { + MessageGiftModel *obj = (MessageGiftModel *)model; + self.giftImageView.imageUrl = obj.giftInfo.giftUrl; + self.giftNameLabel.text = obj.giftInfo.giftName; + self.giftNumLabel.text = [NSString stringWithFormat:@"X%ld", obj.giftNum]; +} + +- (NetImageView *)giftImageView { + if (!_giftImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _giftImageView = [[NetImageView alloc] initWithConfig:config]; + _giftImageView.contentMode = UIViewContentModeScaleAspectFill; + _giftImageView.layer.masksToBounds = YES; + } + return _giftImageView; +} + +- (UILabel *)giftNameLabel { + if (!_giftNameLabel) { + _giftNameLabel = [[UILabel alloc] init]; + _giftNameLabel.font = [UIFont systemFontOfSize:15]; + _giftNameLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _giftNameLabel; +} + +- (UILabel *)giftNumLabel { + if (!_giftNumLabel) { + _giftNumLabel = [[UILabel alloc] init]; + _giftNumLabel.font = [UIFont systemFontOfSize:12]; + _giftNumLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _giftNumLabel; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentGuildView.h b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentGuildView.h new file mode 100644 index 00000000..5b3e5c5a --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentGuildView.h @@ -0,0 +1,15 @@ +// +// MessageContentGuildView.h +// YUMI +// +// Created by YUMI on 2022/4/18. +// + +#import "MessageContentCustomView.h" +NS_ASSUME_NONNULL_BEGIN + +@interface MessageContentGuildView : MessageContentCustomView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentGuildView.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentGuildView.m new file mode 100644 index 00000000..b3af81ca --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentGuildView.m @@ -0,0 +1,371 @@ +// +// MessageContentGuildView.m +// YUMI +// +// Created by YUMI on 2022/4/18. +// + +#import "MessageContentGuildView.h" +///Third +#import +#import +#import "HttpRequestHelper.h" +#import "AttachMentModel.h" +#import "GuildMessageModel.h" +#import "NSObject+MJExtension.h" +#import "DJDKMIMOMColor.h" +#import "XNDJTDDLoadingTool.h" +#import "AccountInfoStorage.h" +#import "XPMineGuildViewController.h" +#import "XCCurrentVCStackManager.h" +#import "NSMutableDictionary+Saft.h" +#import "MessageGuildModel.h" +#define MESSAGE_MAX_WIDTH 230 +#define MESSAGE_TEXT_PADDING 10 +@interface MessageContentGuildView () +///总的stackView +@property (nonatomic,strong) UIStackView *stackView; +///内容的view +@property (nonatomic,strong) UIView * contentView; +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///显示内容 +@property (nonatomic,strong) YYLabel *contentLabel; +///显示操作按钮 +@property (nonatomic,strong) UIStackView *controlStackView; +///拒绝 +@property (nonatomic,strong) UIButton *rejectButton; +///状态 +@property (nonatomic,strong) UIButton *resultButton; +///同意 +@property (nonatomic,strong) UIButton *agreeButton; +///消息的信息 +@property (nonatomic,strong) GuildMessageModel *messageInfo; +@property (nonatomic,strong) AttachmentModel *attachment; +@property (nonatomic,strong) NIMMessage *message; +@end + +@implementation MessageContentGuildView + +- (void)initSubViews { + [super initSubViews]; + [self addSubview:self.backView]; + + [self.backView addSubview:self.stackView]; + + [self.stackView addArrangedSubview:self.contentView]; + [self.stackView addArrangedSubview:self.controlStackView]; + + [self.contentView addSubview:self.titleLabel]; + [self.contentView addSubview:self.contentLabel]; + ///操作按钮 + [self.controlStackView addArrangedSubview:self.rejectButton]; + [self.controlStackView addArrangedSubview:self.resultButton]; + [self.controlStackView addArrangedSubview:self.agreeButton]; +} + +- (void)initSubViewConstraints { + [super initSubViewConstraints]; + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(MESSAGE_MAX_WIDTH); + make.bottom.mas_equalTo(self.stackView).offset(MESSAGE_TEXT_PADDING); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.backView); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(MESSAGE_MAX_WIDTH); + make.height.mas_equalTo(100); + }]; + + [self.controlStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(44); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.contentView).offset(20); + }]; + + [self.contentLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.left.mas_equalTo(self.contentView).inset(MESSAGE_TEXT_PADDING); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(MESSAGE_TEXT_PADDING); + make.bottom.mas_equalTo(self.contentView); + }]; + + CGFloat itemWidth = (MESSAGE_MAX_WIDTH - 15 * 2 - 10) / 2.0; + [self.agreeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(itemWidth); + make.height.mas_equalTo(30); + }]; + + [self.rejectButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(self.agreeButton); + }]; + + [self.resultButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(30); + }]; +} + +- (void)render:(MessageGuildModel *)model { + self.message = model.message; + NIMCustomObject *obj = (NIMCustomObject *)model.message.messageObject; + AttachmentModel * attach = obj.attachment; + self.attachment = attach; + GuildMessageModel * info; + if (model.message.localExt) { + info = [GuildMessageModel modelWithDictionary:model.message.localExt]; + } else { + info = [GuildMessageModel modelWithDictionary:attach.data]; + } + self.messageInfo = info; + self.titleLabel.text = info.layout.title.content; + self.titleLabel.font = [UIFont systemFontOfSize:info.layout.title.fontSize weight:info.layout.title.fontBold?UIFontWeightBold:UIFontWeightRegular]; + NSMutableAttributedString *attr = [[NSMutableAttributedString alloc]init]; + GuildMessageLayoutModel *layout = info.layout; + for (GuildMessageLayoutInfoModel *params in layout.contents) { + if (params.content.length > 0) { + if ([params.content containsString:@"/r/n"]) { + params.content = @"\r\n"; + } + NSMutableAttributedString *subAttr = [[NSMutableAttributedString alloc]initWithString:params.content]; + if (params.fontSize > 0) { + [subAttr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:params.fontSize weight:params.fontBold?UIFontWeightBold:UIFontWeightRegular] range:NSMakeRange(0, subAttr.length)]; + } + + if (params.fontColor.length > 0) { + [subAttr addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor colorWithHexString:params.fontColor] range:NSMakeRange(0, subAttr.length)]; + } + [attr appendAttributedString:subAttr]; + } + } + attr.yy_lineSpacing = 5; + self.contentLabel.attributedText = attr; + self.contentLabel.textAlignment = NSTextAlignmentCenter; + CGSize maxSize = CGSizeMake(MESSAGE_MAX_WIDTH - MESSAGE_TEXT_PADDING * 2, CGFLOAT_MAX); + YYTextLayout * contentLayout = [YYTextLayout layoutWithContainerSize:maxSize text:attr]; + CGFloat contentHeight = contentLayout.textBoundingSize.height + 5; + ///顶部的距离 20 title的高度15 title到content的高度15 + [self.contentView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(contentHeight + 20+ 15 + 15); + }]; + BOOL isCommonNotice = (attach.second == Custom_Message_Sub_Hall_Notice || attach.second == Custom_Message_Sub_Hall_Become_Hall); + if (!isCommonNotice) { + self.controlStackView.hidden = NO; + if (info.msgStatus == 0) { + info.msgStatus = MessageGuildState_Untreated; + } + [self handletResultControll:info second:attach.second]; + } else { + self.controlStackView.hidden = YES; + [self.rejectButton setAttributedTitle:nil forState:UIControlStateNormal]; + } +} + +- (void)handletResultControll:(GuildMessageModel *)info second:(Custom_Noti_Sub_HALL)second { + self.rejectButton.hidden = YES; + self.agreeButton.hidden = YES; + self.resultButton.hidden= YES; + MessageGuildState state = info.msgStatus; + NSMutableAttributedString *attr = [[NSMutableAttributedString alloc]init]; + switch (state) { + case MessageGuildState_Agree: + { + self.resultButton.hidden = NO; + [attr appendAttributedString:[self creatResultAttribute:YMLocalizedString(@"MessageContentGuildView0") textColor:UIColorRGBAlpha(0x09BB07, 0.6)]]; + } + break; + case MessageGuildState_Reject: + { + self.resultButton.hidden= NO; + [attr appendAttributedString:[self creatResultAttribute:YMLocalizedString(@"MessageContentGuildView1") textColor:UIColorRGBAlpha(0xFF3852, 0.6)]]; + } + break; + case MessageGuildState_OutData: + { + self.resultButton.hidden= NO; + [attr appendAttributedString:[self creatResultAttribute:YMLocalizedString(@"MessageContentGuildView2") textColor:UIColorRGBAlpha(0x333333, 0.6)]]; + } + break; + case MessageGuildState_Processed: + { + self.resultButton.hidden= NO; + [attr appendAttributedString:[self creatResultAttribute:YMLocalizedString(@"MessageContentGuildView3") textColor:UIColorFromRGB(0xC6C6E9)]]; + } + break; + case MessageGuildState_Untreated: + { + self.agreeButton.hidden = NO; + self.rejectButton.hidden = second == Custom_Message_Sub_Hall_Apply_Exit; + } + break; + default: + break; + } + if (attr.length > 0) { + [self.resultButton setAttributedTitle:attr forState:UIControlStateNormal]; + } +} + +- (NSAttributedString *)creatResultAttribute:(NSString *)message textColor:(UIColor *)textColor { + if (message.length <=0) { + message = @""; + } + NSMutableAttributedString *attr = [[NSMutableAttributedString alloc]initWithString:message]; + [attr addAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14],NSForegroundColorAttributeName:textColor} range:NSMakeRange(0, attr.length)]; + return attr; +} + + +#pragma mark - Event Response +- (void)controllButtonAction:(UIButton *)sender { + NSRange recordRange = [self.messageInfo.url rangeOfString:@"recordId="]; + NSString *recordId; + if (!NSEqualRanges(recordRange, NSMakeRange(NSNotFound, 0))) { + if (self.messageInfo.url.length > recordRange.location+recordRange.length) { + recordId = [self.messageInfo.url substringFromIndex:recordRange.location+recordRange.length]; + } + } + if (recordId.length > 0) { + NSMutableDictionary * params = [NSMutableDictionary dictionary]; + [params safeSetObject:recordId forKey:@"recordId"]; + [params safeSetObject:[AccountInfoStorage instance].getUid forKey:@"uid"]; + ///0拒绝 1同意 + NSString * type = sender.tag == 1000? @"0" : @"1"; + if (self.attachment.second == Custom_Message_Sub_Hall_Apply_Join || self.attachment.second == Custom_Message_Sub_Hall_Manager_Invite || self.attachment.second == Custom_Message_Sub_Hall_Apply_Exit) { + if (self.attachment.second != Custom_Message_Sub_Hall_Apply_Exit) { + [params setObject:type forKey:@"type"]; + } + [XNDJTDDLoadingTool showLoading]; + [HttpRequestHelper POST:self.messageInfo.url params:params success:^(BaseModel * _Nonnull data) { + [XNDJTDDLoadingTool hideHUD]; + NSString *code = [NSString stringWithFormat:@"%@", data.data[@"code"]]; + BOOL isExpired = [code isEqualToString:@"90121"]; + BOOL isHandled = [code isEqualToString:@"90122"]; + MessageGuildState state = MessageGuildState_Untreated; + if (isExpired) { + state = MessageGuildState_OutData; + } else if(isHandled) { + state = MessageGuildState_Processed; + } else { + state = sender.tag == 1000 ? MessageGuildState_Reject : MessageGuildState_Agree; + } + self.messageInfo.msgStatus = state; + self.message.localExt = [self.messageInfo model2dictionary]; + [[NIMSDK sharedSDK].conversationManager updateMessage:self.message forSession:self.message.session completion:^(NSError * _Nullable error) { + if (self.delegate && [self.delegate respondsToSelector:@selector(updateMessageSuccess:)]) { + [self.delegate updateMessageSuccess:self.message]; + } + }]; + } failure:^(NSInteger resCode, NSString * _Nonnull message) { + [XNDJTDDLoadingTool hideHUD]; + [XNDJTDDLoadingTool showErrorWithMessage:message]; + }]; + } + } +} + +- (void)contentLableTapRecognizer { + if (self.messageInfo.routerType == 22 && self.messageInfo.routerValue > 0) { + XPMineGuildViewController * guildVC= [[XPMineGuildViewController alloc] init]; + guildVC.ownerUid = [AccountInfoStorage instance].getUid; + guildVC.guildId = [NSString stringWithFormat:@"%ld", self.messageInfo.routerValue]; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:guildVC animated:YES]; + } +} +#pragma mark - Getters And Setters +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentCenter; + _stackView.spacing = 10; + } + return _stackView; +} + +- (UIView *)contentView { + if (!_contentView) { + _contentView = [[UIView alloc] init]; + _contentView.backgroundColor = [UIColor clearColor]; + } + return _contentView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textAlignment= NSTextAlignmentCenter; + _titleLabel.font = [UIFont systemFontOfSize:14]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + [_titleLabel setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical]; + } + return _titleLabel; +} + +- (YYLabel *)contentLabel { + if (!_contentLabel) { + _contentLabel = [[YYLabel alloc] init]; + _contentLabel.numberOfLines = 0; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(contentLableTapRecognizer)]; + [_contentLabel addGestureRecognizer:tap]; + } + return _contentLabel; +} + +- (UIStackView *)controlStackView { + if (!_controlStackView) { + _controlStackView = [[UIStackView alloc] init]; + _controlStackView.axis = UILayoutConstraintAxisHorizontal; + _controlStackView.distribution = UIStackViewDistributionFill; + _controlStackView.alignment = UIStackViewAlignmentCenter; + _controlStackView.spacing = 10; + } + return _controlStackView; +} + +- (UIButton *)rejectButton { + if (!_rejectButton) { + _rejectButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_rejectButton setTitle:YMLocalizedString(@"MessageContentGuildView4") forState:UIControlStateNormal]; + _rejectButton.titleLabel.font = [UIFont systemFontOfSize:13]; + [_rejectButton setTitleColor:[DJDKMIMOMColor appMainColor] forState:UIControlStateNormal]; + _rejectButton.layer.masksToBounds = YES; + _rejectButton.layer.cornerRadius = 15; + _rejectButton.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + _rejectButton.layer.borderWidth = 1; + [_rejectButton setBackgroundColor:[DJDKMIMOMColor appCellBackgroundColor]]; + _rejectButton.tag = 1000; + [_rejectButton addTarget:self action:@selector(controllButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _rejectButton; +} + +- (UIButton *)resultButton { + if (!_resultButton) { + _resultButton = [UIButton buttonWithType:UIButtonTypeCustom]; + } + return _resultButton; +} + +- (UIButton *)agreeButton { + if (!_agreeButton) { + _agreeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_agreeButton setTitle:YMLocalizedString(@"MessageContentGuildView5") forState:UIControlStateNormal]; + _agreeButton.titleLabel.font = [UIFont systemFontOfSize:13]; + [_agreeButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + _agreeButton.layer.masksToBounds = YES; + _agreeButton.layer.cornerRadius = 15; + [_agreeButton setBackgroundColor:[DJDKMIMOMColor appMainColor]]; + _agreeButton.tag = 1001; + [_agreeButton addTarget:self action:@selector(controllButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _agreeButton; +} + + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentImage.h b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentImage.h new file mode 100644 index 00000000..d9d848a5 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentImage.h @@ -0,0 +1,17 @@ +// +// MessageContentImage.h +// YUMI +// +// Created by zu on 2021/12/2. +// + +#import +#import "MessageContentProtocol.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageContentImage : UIView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentImage.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentImage.m new file mode 100644 index 00000000..583c4d72 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentImage.m @@ -0,0 +1,85 @@ +// +// MessageContentImage.m +// YUMI +// +// Created by zu on 2021/12/2. +// + +#import "MessageContentImage.h" +#import "NetImageView.h" +#import "SDPhotoBrowser.h" +#import +#import +#import "UIImage+Utils.h" +#import "MessageBaseModel.h" +#import "MessageImageModel.h" +#define MESSAGE_IMAGE_MAX_SIZE (CONTENT_WIDTH_MAX) +#define MESSAGE_IMAGE_Min_SIZE (CONTENT_WIDTH_MAX -100) +@interface MessageContentImage() + +@property (nonatomic, strong) NetImageView * messageImage; +@property (nonatomic,strong) MessageImageModel *imageObject; + +@end + +@implementation MessageContentImage + +- (instancetype)init { + self = [super init]; + if (self) { + [self addSubview:self.messageImage]; + [self.messageImage mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self).with.insets(UIEdgeInsetsMake(MESSAGE_PADDING, MESSAGE_PADDING, MESSAGE_PADDING, MESSAGE_PADDING)); + make.width.height.mas_equalTo(MESSAGE_IMAGE_MAX_SIZE); + }]; + } + return self; +} + +- (void)render:(MessageBaseModel *)model { + MessageImageModel * imageModel = (MessageImageModel *)model; + self.imageObject = imageModel; + [self.messageImage mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(model.contentSize.height); + make.width.mas_equalTo(model.contentSize.width); + }]; + if (imageModel.image) { + self.messageImage.image = imageModel.image; + }else { + self.messageImage.imageUrl = imageModel.imageUrl; + } +} + +#pragma mark - SDPhotoBrowserDelegate +- (NSURL *)photoBrowser:(SDPhotoBrowser *)browser highQualityImageURLForIndex:(NSInteger)index { + return [NSURL URLWithString:self.imageObject.imageUrl]; +} + +- (UIImage *)photoBrowser:(SDPhotoBrowser *)browser placeholderImageForIndex:(NSInteger)index { + return [UIImageConstant defalutBannerPlaceholder]; +} + +- (void)didTapImage { + SDPhotoBrowser *browser = [[SDPhotoBrowser alloc]init]; + browser.sourceImagesContainerView = self; + browser.delegate = self; + browser.imageCount = 1; + browser.currentImageIndex = 0; + browser.isMe = NO; + [browser show]; +} + + +- (NetImageView *)messageImage { + if (!_messageImage) { + _messageImage = [[NetImageView alloc] init]; + _messageImage.userInteractionEnabled = YES; + _messageImage.layer.masksToBounds = YES; + _messageImage.contentMode = UIViewContentModeScaleAspectFill; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapImage)]; + [_messageImage addGestureRecognizer:tap]; + } + return _messageImage; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentLevelUpgradeView.h b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentLevelUpgradeView.h new file mode 100644 index 00000000..4254b60d --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentLevelUpgradeView.h @@ -0,0 +1,16 @@ +// +// MessageContentLevelUpgradeView.h +// YUMI +// +// Created by YUMI on 2022/4/19. +// + +#import "MessageContentCustomView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageContentLevelUpgradeView : MessageContentCustomView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentLevelUpgradeView.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentLevelUpgradeView.m new file mode 100644 index 00000000..2eb6684f --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentLevelUpgradeView.m @@ -0,0 +1,145 @@ +// +// MessageContentLevelUpgradeView.m +// YUMI +// +// Created by YUMI on 2022/4/19. +// + +#import "MessageContentLevelUpgradeView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NSObject+MJExtension.h" +#import "YUMIHtmlUrl.h" +#import "XCCurrentVCStackManager.h" +///Model +#import "MessageLevelUpgradeModel.h" +///View +#import "XPWebViewController.h" + +@interface MessageContentLevelUpgradeView () + +///logo +@property (nonatomic,strong) UIImageView *logoImageView; +///等级升级 +@property (nonatomic,strong) UILabel *levelLabel; +///分割线 +@property (nonatomic,strong) UIView * lineView; +///查看 +@property (nonatomic,strong) UIButton *checkButton; +///箭头 +@property (nonatomic,strong) UIImageView *arrowImageView; + +@end + +@implementation MessageContentLevelUpgradeView + + +- (void)render:(MessageBaseModel *)model { + MessageLevelUpgradeModel *obj = (MessageLevelUpgradeModel *)model; + self.logoImageView.image = [UIImage imageNamed:obj.imageName]; + self.levelLabel.text = obj.level; +} + +- (void)initSubViews { + [super initSubViews]; + [self.backView addSubview:self.logoImageView]; + [self.backView addSubview:self.levelLabel]; + [self.backView addSubview:self.lineView]; + [self.backView addSubview:self.checkButton]; + [self.backView addSubview:self.arrowImageView]; +} + +- (void)initSubViewConstraints { + [super initSubViewConstraints]; + [self.backView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self).insets(UIEdgeInsetsMake(MESSAGE_PADDING, MESSAGE_PADDING, 0, MESSAGE_PADDING)); + make.size.mas_equalTo(CGSizeMake(220, 116)); + }]; + + + [self.logoImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(64,64)); + make.left.mas_equalTo(self.backView); + make.top.mas_equalTo(self.backView); + }]; + + [self.levelLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.logoImageView.mas_right).offset(10); + make.right.mas_equalTo(self.backView); + make.top.mas_equalTo(self.logoImageView).offset(10); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backView); + make.height.mas_equalTo(0.5); + make.top.mas_equalTo(self.logoImageView.mas_bottom).offset(10); + }]; + + [self.checkButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backView); + make.height.mas_equalTo(40); + make.top.mas_equalTo(self.lineView.mas_bottom); + }]; + + [self.arrowImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(6.5, 11)); + make.right.mas_equalTo(self.backView); + make.centerY.mas_equalTo(self.checkButton); + }]; +} +#pragma mark - Event Response +- (void)checkButtonAction:(UIButton *)sender { + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + webVC.url = URLWithType(kUserLevelURL); + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:webVC animated:YES]; +} +#pragma mark - Getters And Setters +- (UIImageView *)logoImageView { + if (!_logoImageView) { + _logoImageView = [[UIImageView alloc] init]; + } + return _logoImageView; +} + +- (UILabel *)levelLabel { + if (!_levelLabel) { + _levelLabel = [[UILabel alloc] init]; + _levelLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _levelLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _levelLabel.numberOfLines = 2; + } + return _levelLabel; +} + +- (UIButton *)checkButton { + if (!_checkButton) { + _checkButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_checkButton setTitle:YMLocalizedString(@"MessageContentLevelUpgradeView0") forState:UIControlStateNormal]; + [_checkButton setTitleColor:UIColorFromRGB(0x4C5AF1) forState:UIControlStateNormal]; + _checkButton.titleLabel.font = [UIFont systemFontOfSize:14]; + [_checkButton addTarget:self action:@selector(checkButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _checkButton; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _lineView; +} + +- (UIImageView *)arrowImageView { + if (!_arrowImageView) { + _arrowImageView = [[UIImageView alloc] init]; + _arrowImageView.userInteractionEnabled = YES; + _arrowImageView.image = [UIImage imageNamed:@"common_right_arrow"]; + } + return _arrowImageView; +} + + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentMonentsAutoView.h b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentMonentsAutoView.h new file mode 100644 index 00000000..414c8d9b --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentMonentsAutoView.h @@ -0,0 +1,16 @@ +// +// MessageContentMonentsAutoView.h +// YUMI +// +// Created by YUMI on 2022/8/26. +// + +#import "MessageContentCustomView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageContentMonentsAutoView : MessageContentCustomView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentMonentsAutoView.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentMonentsAutoView.m new file mode 100644 index 00000000..29da3b57 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentMonentsAutoView.m @@ -0,0 +1,91 @@ +// +// MessageContentMonentsAutoView.m +// YUMI +// +// Created by YUMI on 2022/8/26. +// + +#import "MessageContentMonentsAutoView.h" +///Third +#import +///Tool +#import "NSObject+MJExtension.h" +#import "DJDKMIMOMColor.h" +///Model +#import "MessageMonentsAutoModel.h" +@interface MessageContentMonentsAutoView () + +@property (nonatomic, strong) UILabel *titleLabel; // 标题 +@property (nonatomic, strong) UILabel *timeLabel; // 时间 +@property (nonatomic, strong) UILabel *messageLabel; // 内容 +@end + +@implementation MessageContentMonentsAutoView + +- (void)initSubViews { + [super initSubViews]; + [self addSubview:self.backView]; + + [self.backView addSubview:self.titleLabel]; + [self.backView addSubview:self.timeLabel]; + [self.backView addSubview:self.messageLabel]; +} + +- (void)initSubViewConstraints { + [super initSubViewConstraints]; + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(250, 120)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(14.5); + make.top.mas_equalTo(10); + }]; + + [self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-14.5); + make.centerY.mas_equalTo(self.titleLabel); + }]; + + [self.messageLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self).inset(14.5); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(12.5); + }]; +} + +- (void)render:(MessageBaseModel *)message { + MessageMonentsAutoModel *obj = (MessageMonentsAutoModel *)message; + self.titleLabel.text = obj.title; + self.timeLabel.text = obj.time; + self.messageLabel.attributedText = obj.attributedText; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textColor = UIColorFromRGB(0x333333); + _titleLabel.font = [UIFont boldSystemFontOfSize:15]; + } + return _titleLabel; +} + +- (UILabel *)timeLabel { + if (!_timeLabel) { + _timeLabel = [[UILabel alloc] init]; + _timeLabel.textColor = UIColorFromRGB(0x999999); + _timeLabel.font = [UIFont systemFontOfSize:12]; + _timeLabel.textAlignment = NSTextAlignmentRight; + } + return _timeLabel; +} + +- (UILabel *)messageLabel { + if (!_messageLabel) { + _messageLabel = [[UILabel alloc] init]; + _messageLabel.textColor = UIColorFromRGB(0x333333); + _messageLabel.font = [UIFont systemFontOfSize:14]; + _messageLabel.numberOfLines = 0; + } + return _messageLabel; +} +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentMonentsView.h b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentMonentsView.h new file mode 100644 index 00000000..4bce697c --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentMonentsView.h @@ -0,0 +1,16 @@ +// +// MessageContentMonentsView.h +// YUMI +// +// Created by YUMI on 2022/8/25. +// + +#import "MessageContentCustomView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageContentMonentsView : MessageContentCustomView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentMonentsView.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentMonentsView.m new file mode 100644 index 00000000..3c7aa25e --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentMonentsView.m @@ -0,0 +1,127 @@ +// +// MessageContentMonentsView.m +// YUMI +// +// Created by YUMI on 2022/8/25. +// + +#import "MessageContentMonentsView.h" +///Third +#import +///Tool +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" +#import "XPGiftStorage.h" +#import "NSObject+MJExtension.h" +#import "XCCurrentVCStackManager.h" +#import "ClientConfig.h" +///Model +#import "GiftReceiveInfoModel.h" +#import "MessageMonentsModel.h" +///View +#import "XPMonentsDetailViewController.h" +#import "XPMomentsSimpleDetailViewController.h" +#import "MonentsInfoModel.h" +@interface MessageContentMonentsView () +///礼物的 +@property (nonatomic,strong) NetImageView *monentsView; +///显示名字 +@property (nonatomic,strong) UILabel *titleLabel; +///描述 +@property (nonatomic,strong) UILabel *contentLabel; +///动态 +@property (nonatomic,strong) MonentsInfoModel *monents; +@end + +@implementation MessageContentMonentsView + + +- (void)initSubViews { + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapBackView)]; + [self.backView addGestureRecognizer:tap]; + [super initSubViews]; + [self addSubview:self.backView]; + + [self.backView addSubview:self.monentsView]; + [self.backView addSubview:self.titleLabel]; + [self.backView addSubview:self.contentLabel]; +} + +- (void)initSubViewConstraints { + [super initSubViewConstraints]; + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(250, 60)); + }]; + + [self.monentsView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(50, 50)); + make.left.mas_equalTo(self.backView); + make.centerY.mas_equalTo(self.backView); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.monentsView.mas_right).offset(10); + make.bottom.mas_equalTo(self.monentsView.mas_centerY).offset(-3); + make.right.mas_lessThanOrEqualTo(self.backView).offset(-10); + }]; + + [self.contentLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.titleLabel); + make.top.mas_equalTo(self.monentsView.mas_centerY).offset(3); + make.right.mas_lessThanOrEqualTo(self.backView).offset(-10); + }]; +} + +- (void)tapBackView { + XPMonentsDetailViewController * detailView = [[XPMonentsDetailViewController alloc] init]; + detailView.monentsInfo = self.monents; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:detailView animated:YES]; + if ([ClientConfig shareConfig].canOpen) { + XPMonentsDetailViewController * detailView = [[XPMonentsDetailViewController alloc] init]; + detailView.monentsInfo = self.monents; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:detailView animated:YES]; + }else{ + XPMomentsSimpleDetailViewController * detailView = [[XPMomentsSimpleDetailViewController alloc] init]; + detailView.monentsInfo = self.monents; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:detailView animated:YES]; + } +} + +- (void)render:(MessageBaseModel *)message { + MessageMonentsModel *obj = (MessageMonentsModel *)message; + self.monents = obj.monentsInfo; + self.monentsView.imageUrl = obj.imageUrl; + self.titleLabel.text = obj.title; + self.contentLabel.text = self.monents.content; +} + +- (NetImageView *)monentsView { + if (!_monentsView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _monentsView = [[NetImageView alloc] initWithConfig:config]; + _monentsView.contentMode = UIViewContentModeScaleAspectFill; + _monentsView.layer.masksToBounds = YES; + _monentsView.layer.cornerRadius = 10; + } + return _monentsView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:15]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +- (UILabel *)contentLabel { + if (!_contentLabel) { + _contentLabel = [[UILabel alloc] init]; + _contentLabel.font = [UIFont systemFontOfSize:12]; + _contentLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _contentLabel; +}@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentOpenLiveView.h b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentOpenLiveView.h new file mode 100644 index 00000000..796426b4 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentOpenLiveView.h @@ -0,0 +1,16 @@ +// +// MessageContentOnlineView.h +// YUMI +// +// Created by YUMI on 2022/4/19. +// 关注的人 开启直播 + +#import "MessageContentCustomView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageContentOpenLiveView : MessageContentCustomView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentOpenLiveView.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentOpenLiveView.m new file mode 100644 index 00000000..2ba55b3d --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentOpenLiveView.m @@ -0,0 +1,151 @@ +// +// MessageContentOnlineView.m +// YUMI +// +// Created by YUMI on 2022/4/19. +// + +#import "MessageContentOpenLiveView.h" +///Third +#import +///Tool +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" +#import "XCCurrentVCStackManager.h" +#import "RoomHostDelegate.h" +///Model +#import "ContentOpenLiveInfoModel.h" +#import "MessageOpenLiveModel.h" +///View +#import "XPRoomViewController.h" + + +@interface MessageContentOpenLiveView () +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///显示id +@property (nonatomic,strong) UILabel *idLabel; +@property (nonatomic,strong) ContentOpenLiveInfoModel *userInfo; +@end + +@implementation MessageContentOpenLiveView + + +- (void)render:(MessageBaseModel *)model { + MessageOpenLiveModel *obj = (MessageOpenLiveModel *)model; + self.userInfo = obj.userInfo; + if (obj.avatar.length > 0 && obj.nick.length > 0) { + self.avatarImageView.imageUrl = obj.avatar; + self.idLabel.text = obj.nick; + } else { + if (obj.uid.integerValue > 0) { + NSArray *uids = @[obj.uid]; + [[NIMSDK sharedSDK].userManager fetchUserInfos:uids completion:^(NSArray * _Nullable users, NSError * _Nullable error) { + if (error == nil) { + NIMUser *user = users[0]; + self.avatarImageView.imageUrl = user.userInfo.avatarUrl; + self.idLabel.text = [NSString stringWithFormat:YMLocalizedString(@"MessageContentOpenLiveView0"), user.userInfo.nickName]; + } + }]; + } + + } +} + +- (void)initSubViews { + [super initSubViews]; + [self addSubview:self.backView]; + + [self.backView addSubview:self.avatarImageView]; + [self.backView addSubview:self.titleLabel]; + [self.backView addSubview:self.idLabel]; + UITapGestureRecognizer * tap= [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(backViewTapRecognozer)]; + [self.backView addGestureRecognizer:tap]; +} + + +- (void)initSubViewConstraints { + [super initSubViewConstraints]; + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self).insets(UIEdgeInsetsMake(MESSAGE_PADDING, MESSAGE_PADDING, MESSAGE_PADDING, MESSAGE_PADDING)); + make.size.mas_equalTo(CGSizeMake(200, 50)); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(47, 47)); + make.centerY.mas_equalTo(self.backView); + make.left.mas_equalTo(self.backView).offset(10); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(10); + make.bottom.mas_equalTo(self.avatarImageView.mas_centerY).offset(-2); + make.right.mas_lessThanOrEqualTo(self.backView); + }]; + + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.titleLabel); + make.top.mas_equalTo(self.avatarImageView.mas_centerY).offset(2); + }]; +} + +#pragma mark - Event Response +- (void)backViewTapRecognozer { + if (self.userInfo.uid.length > 0) { + UIViewController * controllerView = [XCCurrentVCStackManager shareManager].getCurrentVC; + //退出原来的房间 如果有的话 TODO 总感觉这种处理不太优雅 进房入口多了 怎么办 进房需要整合 + [controllerView.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj isKindOfClass:[XPRoomViewController class]]) { + [controllerView.navigationController popToRootViewControllerAnimated:NO]; + XPRoomViewController * rooomVC = obj; + [rooomVC exitRoom]; + *stop = YES; + } + }]; + if ([[XCCurrentVCStackManager shareManager].getCurrentVC isKindOfClass:[XPRoomViewController class]]) { + UIViewController * controller = [XCCurrentVCStackManager shareManager].getCurrentVC.navigationController.presentingViewController; + if (controller) { + [XPRoomViewController openRoom:self.userInfo.uid viewController:controller]; + } + } else { + [XPRoomViewController openRoom:self.userInfo.uid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; + } + + } +} + +#pragma mark - Getters And Setters +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.contentMode = UIViewContentModeScaleAspectFill; + } + return _avatarImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:17]; + _titleLabel.text = @"你关注的TA"; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.font = [UIFont systemFontOfSize:13]; + _idLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _idLabel; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentProtocol.h b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentProtocol.h new file mode 100644 index 00000000..e4a0087e --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentProtocol.h @@ -0,0 +1,26 @@ +// +// MessageContentProtocol.h +// YUMI +// +// Created by zu on 2021/12/2. +// + +#import +#import "YUMIMacroUitls.h" +@class NIMMessage, MessageBaseModel; + +NS_ASSUME_NONNULL_BEGIN + +#define AVATAR_SIZE 45 +#define AVATAR_MARGIN_H 15 +#define CONTENT_WIDTH_MAX (KScreenWidth - AVATAR_MARGIN_H * 2 * 2 - AVATAR_SIZE * 2) +#define CONTENT_PADDING_V_TOTAL (5 + 15 * 2) +#define MESSAGE_PADDING (10) + +@protocol MessageContentProtocol + +- (void)render:(MessageBaseModel *)message; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentRedPacketView.h b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentRedPacketView.h new file mode 100644 index 00000000..a638d0b4 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentRedPacketView.h @@ -0,0 +1,16 @@ +// +// MessageContentRedPacketView.h +// YUMI +// +// Created by YUMI on 2022/9/5. +// + +#import "MessageContentCustomView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageContentRedPacketView : MessageContentCustomView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentRedPacketView.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentRedPacketView.m new file mode 100644 index 00000000..e7453913 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentRedPacketView.m @@ -0,0 +1,210 @@ +// +// MessageContentRedPacketView.m +// YUMI +// +// Created by YUMI on 2022/9/5. +// + +#import "MessageContentRedPacketView.h" +///Third +#import +#import "DJDKMIMOMColor.h" +#import "XPReceiveRedPacketModel.h" +#import "MessageRedPacketModel.h" +#import "YUMIConstant.h" +#import "XCCurrentVCStackManager.h" +#import "XPRoomViewController.h" +#import "RoomHostDelegate.h" + +#define MESSAGE_MAX_WIDTH 260 + +@interface MessageContentRedPacketView () + +@property (nonatomic, strong) UIImageView *bgImageView; +///红包icon +@property (nonatomic, strong) UIImageView *redPacketImageView; +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///发出一个全服红包 +@property (nonatomic,strong) UILabel *subLabel; +///分割线 +@property (nonatomic, strong) UIView *devideView; +///领取说明 +@property (nonatomic, strong) UILabel *descLabel; +///消息的信息 +@property (nonatomic,strong) XPReceiveRedPacketModel *messageInfo; +@property (nonatomic,strong) AttachmentModel *attachment; +@property (nonatomic,strong) NIMMessage *message; + +@end + +@implementation MessageContentRedPacketView + +- (void)initSubViews { + [super initSubViews]; + [self.backView addSubview:self.bgImageView]; + [self.backView addSubview:self.redPacketImageView]; + [self.backView addSubview:self.titleLabel]; + [self.backView addSubview:self.subLabel]; + [self.backView addSubview:self.devideView]; + [self.backView addSubview:self.descLabel]; + + UITapGestureRecognizer * tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(event:)]; + [self.bgImageView addGestureRecognizer:tapGesture]; +} + +- (void)initSubViewConstraints { + [super initSubViewConstraints]; + self.backView.superview.backgroundColor = [UIColor clearColor]; + self.backView.backgroundColor = [UIColor clearColor]; + [self.backView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self).inset(0); + make.width.mas_equalTo(MESSAGE_MAX_WIDTH); + make.height.mas_equalTo(95); + }]; + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(MESSAGE_MAX_WIDTH); + make.top.mas_equalTo(self.backView); + make.height.mas_equalTo(95); + make.left.mas_equalTo(self.backView); + }]; + [self.redPacketImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backView).mas_offset(16); + make.width.mas_equalTo(31); + make.height.mas_equalTo(40); + make.top.mas_equalTo(self.backView).mas_offset(13); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.redPacketImageView.mas_right).mas_offset(6); + make.height.mas_equalTo(16); + make.top.mas_equalTo(self.redPacketImageView).mas_offset(12); + }]; + + [self.subLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.titleLabel); + make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(8); + make.height.mas_equalTo(13); + }]; + [self.devideView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(16); + make.right.mas_equalTo(-8); + make.top.mas_equalTo(self.redPacketImageView.mas_bottom).offset(11); + make.height.mas_equalTo(0.5); + }]; + [self.descLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(16); + make.top.mas_equalTo(self.devideView.mas_bottom).offset(9); + make.height.mas_equalTo(13); + }]; +} + +- (void)render:(MessageBaseModel *)model { + self.message = model.message; + MessageRedPacketModel *obj = (MessageRedPacketModel *)model; + XPReceiveRedPacketModel * info = obj.redInfo; + self.messageInfo = info; + //超过半小时就是失效 + NSTimeInterval now = [[NSDate date] timeIntervalSince1970]; + if (now - model.message.timestamp > 60*30) { + self.titleLabel.text = YMLocalizedString(@"MessageContentRedPacketView0"); + self.descLabel.text = @"下次要快点来哦~"; + self.subLabel.hidden = YES; + self.bgImageView.image = [UIImage imageNamed:@"redPacket_msg_inValid_bg"]; + self.bgImageView.userInteractionEnabled = NO; + } else { + NSArray *redPacketHistory = [[NSUserDefaults standardUserDefaults] objectForKey:kRedPacketHistory]; + if (info) { + if ([redPacketHistory containsObject:info.redEnvelopeId]) { + self.subLabel.hidden = YES; + self.titleLabel.text = YMLocalizedString(@"MessageContentRedPacketView2"); + self.bgImageView.image = [UIImage imageNamed:@"redPacket_msg_inValid_bg"]; + self.descLabel.text = YMLocalizedString(@"MessageContentRedPacketView3"); + self.bgImageView.userInteractionEnabled = NO; + } else { + self.titleLabel.text = info.sendUserNick; + self.descLabel.text = @"点击进房领取>"; + self.subLabel.hidden = NO; + self.bgImageView.image = [UIImage imageNamed:@"redPacket_msg_valid_bg"]; + self.bgImageView.userInteractionEnabled = YES; + [self.titleLabel mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.redPacketImageView).mas_offset(5); + }]; + } + } + } +} + +- (void)event:(UITapGestureRecognizer *)gesture { + UIViewController * controllerView = [XCCurrentVCStackManager shareManager].getCurrentVC; + //退出原来的房间 如果有的话 TODO 总感觉这种处理不太优雅 进房入口多了 怎么办 进房需要整合 + [controllerView.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj isKindOfClass:[XPRoomViewController class]]) { + [controllerView.navigationController popToRootViewControllerAnimated:NO]; + XPRoomViewController * rooomVC = obj; + [rooomVC exitRoom]; + *stop = YES; + } + }]; + dispatch_after(1.0, dispatch_get_main_queue(), ^{ + [XPRoomViewController openRoom:self.messageInfo.roomUid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; + }); +} + +#pragma mark - Getters And Setters +- (UIImageView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[UIImageView alloc] init]; + _bgImageView.image = [UIImage imageNamed:@"redPacket_msg_valid_bg"]; + self.bgImageView.userInteractionEnabled = YES; + } + return _bgImageView; +} + +- (UIImageView *)redPacketImageView { + if (!_redPacketImageView) { + _redPacketImageView = [[UIImageView alloc] init]; + _redPacketImageView.contentMode = UIViewContentModeScaleAspectFit; + _redPacketImageView.image = [UIImage imageNamed:@"redPacket_msg_icon"]; + } + return _redPacketImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textAlignment= NSTextAlignmentCenter; + _titleLabel.font = [UIFont systemFontOfSize:16]; + _titleLabel.textColor = [UIColor whiteColor]; + } + return _titleLabel; +} + +- (UILabel *)subLabel { + if (!_subLabel) { + _subLabel = [[UILabel alloc] init]; + _subLabel.text = YMLocalizedString(@"MessageContentRedPacketView5"); + _subLabel.font = [UIFont systemFontOfSize:13]; + _subLabel.textColor = [UIColor whiteColor]; + } + return _subLabel; +} + +- (UILabel *)descLabel { + if (!_descLabel) { + _descLabel = [[UILabel alloc] init]; + _descLabel.font = [UIFont systemFontOfSize:13]; + _descLabel.textColor = [UIColor whiteColor]; + } + return _descLabel; +} + +- (UIView *)devideView { + if (!_devideView) { + _devideView = [[UIView alloc] init]; + _devideView.backgroundColor = [UIColor whiteColor]; + } + return _devideView; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentRevokeView.h b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentRevokeView.h new file mode 100644 index 00000000..e7723734 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentRevokeView.h @@ -0,0 +1,16 @@ +// +// MessageContentRevokeView.h +// YUMI +// +// Created by YUMI on 2023/1/31. +// + +#import +#import "MessageContentProtocol.h" +NS_ASSUME_NONNULL_BEGIN + +@interface MessageContentRevokeView : UIView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentRevokeView.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentRevokeView.m new file mode 100644 index 00000000..e9811415 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentRevokeView.m @@ -0,0 +1,52 @@ +// +// MessageContentRevokeView.m +// YUMI +// +// Created by YUMI on 2023/1/31. +// + +#import "MessageContentRevokeView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +///Model +#import "MessageRevokeModel.h" + +@interface MessageContentRevokeView() + +///显示时间 +@property (nonatomic, strong) UILabel * timeLabel; + +@end + +@implementation MessageContentRevokeView + +- (instancetype)init { + self = [super init]; + if (self) { + [self addSubview:self.timeLabel]; + [self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self).with.insets(UIEdgeInsetsMake(MESSAGE_PADDING, MESSAGE_PADDING, MESSAGE_PADDING, MESSAGE_PADDING)); + }]; + } + return self; +} + +- (void)render:(nonnull MessageBaseModel *)model { + self.superview.backgroundColor = [UIColor clearColor]; + MessageRevokeModel * timeModel= (MessageRevokeModel *)model; + NSString * messageText = timeModel.title; + self.timeLabel.text = messageText; +} + +- (UILabel *)timeLabel { + if (!_timeLabel) { + _timeLabel = [[UILabel alloc] init]; + _timeLabel.font = [UIFont systemFontOfSize:10]; + _timeLabel.textAlignment = NSTextAlignmentCenter; + _timeLabel.textColor = [DJDKMIMOMColor textThirdColor]; + } + return _timeLabel; +} +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentRiskAlertView.h b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentRiskAlertView.h new file mode 100644 index 00000000..3a919a0b --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentRiskAlertView.h @@ -0,0 +1,16 @@ +// +// MessageContentRiskAlertView.h +// YUMI +// +// Created by YUMI on 2022/8/11. +// + +#import "MessageContentCustomView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageContentRiskAlertView : MessageContentCustomView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentRiskAlertView.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentRiskAlertView.m new file mode 100644 index 00000000..71b7aee6 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentRiskAlertView.m @@ -0,0 +1,53 @@ +// +// MessageContentRiskAlertView.m +// YUMI +// +// Created by YUMI on 2022/8/11. +// + +#import "MessageContentRiskAlertView.h" +///Third +#import +#import +#import "MessageRiskAlertModel.h" + +@interface MessageContentRiskAlertView () +///显示内容 +@property (nonatomic,strong) YYLabel *contentLabel; +@end + +@implementation MessageContentRiskAlertView + + + +- (void)initSubViews { + [super initSubViews]; + [self.backView addSubview:self.contentLabel]; +} + + +- (void)initSubViewConstraints { + [super initSubViewConstraints]; + [self.contentLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.backView); + }]; +} + + +- (void)render:(nonnull MessageBaseModel *)message { + MessageRiskAlertModel *obj = (MessageRiskAlertModel *)message; + self.contentLabel.attributedText = obj.attributedText; + +} + +- (YYLabel *)contentLabel { + if (!_contentLabel) { + _contentLabel = [[YYLabel alloc]initWithFrame:CGRectZero]; + _contentLabel.preferredMaxLayoutWidth = CONTENT_WIDTH_MAX - MESSAGE_PADDING * 2; + _contentLabel.numberOfLines = 0; + } + return _contentLabel; +} + + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentSkillCardView.h b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentSkillCardView.h new file mode 100644 index 00000000..20ec08a6 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentSkillCardView.h @@ -0,0 +1,16 @@ +// +// MessageContentSkillCardView.h +// YUMI +// +// Created by YUMI on 2022/4/28. +// + +#import "MessageContentCustomView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageContentSkillCardView : MessageContentCustomView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentSkillCardView.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentSkillCardView.m new file mode 100644 index 00000000..01276515 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentSkillCardView.m @@ -0,0 +1,92 @@ +// +// MessageContentSkillCardView.m +// YUMI +// +// Created by YUMI on 2022/4/28. +// + +#import "MessageContentSkillCardView.h" +///Third +#import +#import +#import "HttpRequestHelper.h" +#import "AttachMentModel.h" +#import "GuildMessageModel.h" +#import "MessageSkillCardModel.h" +#import "DJDKMIMOMColor.h" +#import "XNDJTDDLoadingTool.h" +#import "AccountInfoStorage.h" +#import "XPMineGuildViewController.h" +#import "XCCurrentVCStackManager.h" +#define MESSAGE_MAX_WIDTH 180 +@interface MessageContentSkillCardView () +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///显示内容 +@property (nonatomic,strong) YYLabel *contentLabel; +///消息的信息 +@property (nonatomic,strong) GuildMessageModel *messageInfo; +@property (nonatomic,strong) NIMMessage *message; +@end + +@implementation MessageContentSkillCardView + +- (void)initSubViews { + [super initSubViews]; + [self.backView addSubview:self.titleLabel]; + [self.backView addSubview:self.contentLabel]; +} + +- (void)initSubViewConstraints { + [super initSubViewConstraints]; + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(MESSAGE_MAX_WIDTH); + make.bottom.mas_equalTo(self.contentLabel.mas_bottom); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backView); + make.top.mas_equalTo(self.backView).offset(MESSAGE_PADDING); + }]; + + [self.contentLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.left.mas_equalTo(self.backView); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(MESSAGE_PADDING); + make.height.mas_equalTo(15); + }]; +} + +- (void)render:(MessageBaseModel *)model { + self.message = model.message; + MessageSkillCardModel *obj = (MessageSkillCardModel *)model; + GuildMessageModel * info= obj.guildInfo; + self.messageInfo = info; + self.titleLabel.text = info.layout.title.content; + self.titleLabel.font = [UIFont systemFontOfSize:info.layout.title.fontSize weight:info.layout.title.fontBold?UIFontWeightBold:UIFontWeightRegular]; + self.contentLabel.attributedText = obj.attribute; + self.contentLabel.textAlignment = NSTextAlignmentCenter; + [self.contentLabel mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(obj.textHeight); + }]; +} + +#pragma mark - Getters And Setters + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textAlignment= NSTextAlignmentCenter; + _titleLabel.font = [UIFont systemFontOfSize:14]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +- (YYLabel *)contentLabel { + if (!_contentLabel) { + _contentLabel = [[YYLabel alloc] init]; + _contentLabel.numberOfLines = 0; + } + return _contentLabel; +} +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentText.h b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentText.h new file mode 100644 index 00000000..fbf798cd --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentText.h @@ -0,0 +1,17 @@ +// +// MessageContentText.h +// YUMI +// +// Created by zu on 2021/12/2. +// + +#import +#import "MessageContentProtocol.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageContentText : UIView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentText.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentText.m new file mode 100644 index 00000000..43e79498 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentText.m @@ -0,0 +1,79 @@ +// +// MessageContentText.m +// YUMI +// +// Created by zu on 2021/12/2. +// + +#import "MessageContentText.h" +#import "DJDKMIMOMColor.h" +#import "NSObject+MJExtension.h" +#import "QEmotionHelper.h" +#import +#import +#import +#import "MessageTextModel.h" +#define MESSAGE_TEXT_PADDING 10 + +@interface MessageContentText() + +/** + 消息文本 + */ +@property (nonatomic, strong) YYLabel * messageText; + +///当前的消息 +@property (nonatomic,strong) NIMMessage *message; + +@end + +@implementation MessageContentText + ++ (NSDictionary *)messageTextAttibutes { + UIFont *font = [UIFont systemFontOfSize:13.f]; + NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; + [paragraphStyle setLineSpacing:2.5]; + return @{ + NSFontAttributeName:font, + NSParagraphStyleAttributeName: paragraphStyle + }; +} + +- (instancetype)init { + self = [super init]; + if (self) { + [self addSubview:self.messageText]; + [self.messageText mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self).with.insets(UIEdgeInsetsMake(MESSAGE_TEXT_PADDING, MESSAGE_TEXT_PADDING, MESSAGE_TEXT_PADDING, MESSAGE_TEXT_PADDING)); + }]; + } + return self; +} + +- (void)render:(nonnull MessageBaseModel *)model { + self.message = model.message; + if (model.messageType == SessionMessageType_Text) { + MessageTextModel * textModel = (MessageTextModel *)model; + _messageText.attributedText = textModel.textAttribute; + } else { + NSString * messageText = model.message.text; + if (!messageText || (model.message.messageType != NIMMessageTypeTip && model.message.messageType != NIMMessageTypeText)) { + messageText = YMLocalizedString(@"MessageContentText0"); + } + QEmotionHelper *faceManager = [QEmotionHelper sharedEmotionHelper]; + NSMutableAttributedString * attribute = [faceManager attributedStringByText:messageText font:[UIFont systemFontOfSize:13]]; + _messageText.attributedText = attribute; + } +} + +- (YYLabel *)messageText { + if (!_messageText) { + _messageText = [[YYLabel alloc]initWithFrame:CGRectZero]; + _messageText.preferredMaxLayoutWidth = CONTENT_WIDTH_MAX - MESSAGE_TEXT_PADDING * 2; + _messageText.textColor = DJDKMIMOMColor.mainTextColor; + _messageText.numberOfLines = 0; + } + return _messageText; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentTextClickable.h b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentTextClickable.h new file mode 100644 index 00000000..3587acca --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentTextClickable.h @@ -0,0 +1,17 @@ +// +// MessageContentTextClickable.h +// YUMI +// +// Created by zu on 2022/1/24. +// + +#import "MessageContentCustomView.h" +#import "UIView+NIM.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageContentTextClickable : MessageContentCustomView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentTextClickable.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentTextClickable.m new file mode 100644 index 00000000..bdb7f511 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentTextClickable.m @@ -0,0 +1,218 @@ +// +// MessageContentTextClickable.m +// YUMI +// +// Created by zu on 2022/1/24. +// + +#import "MessageContentTextClickable.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NSObject+MJExtension.h" +#import "XCCurrentVCStackManager.h" +#import "Api.h" +#import "AccountInfoStorage.h" +#import "XNDJTDDLoadingTool.h" +#import "NSObject+MJExtension.h" +#import "ClientConfig.h" +///Model +#import "UserInfoModel.h" +#import "ContentSecretaryModel.h" +#import "MessageTextClickModel.h" +///View +#import "XPRoomViewController.h" +#import "XPWebViewController.h" +#import "XPMineRechargeViewController.h" +#import "XPIAPRechargeViewController.h" +#import "XPMineUserInfoViewController.h" +#import "XPMineSimpleUserInfoViewController.h" +#import "XPMineDressUpViewController.h" +#import "XPDressUpShopViewController.h" +#import "XPMineLoginPasswordViewController.h" +#import "XPMonentTopicContainerViewController.h" +///P +#import "RoomHostDelegate.h" +@interface MessageContentTextClickable() + +/** + 消息文本 + */ +@property (nonatomic, strong) UILabel * messageText; +///获取的模型 +@property (nonatomic,strong) ContentSecretaryModel *contentInfo; +@end + +@implementation MessageContentTextClickable + +- (void)initSubViews { + [super initSubViews]; + [self.backView addSubview:self.messageText]; + UITapGestureRecognizer * tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(event:)]; + [self addGestureRecognizer:tapGesture]; +} + +- (void)initSubViewConstraints { + [super initSubViewConstraints]; + [self.messageText mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.backView).insets(UIEdgeInsetsMake(0, 0, 0, 0)); + }]; +} + +- (void)render:(nonnull MessageBaseModel *)message { + MessageTextClickModel * textModel = (MessageTextClickModel *)message; + _messageText.attributedText = textModel.attributedText; +} + +- (void)event:(UITapGestureRecognizer *)gesture { + SecretaryRouterType type = self.contentInfo.routerType; + NSString * value = self.contentInfo.routerValue; + switch (type) { + case SecretaryRouterType_H5: { + if (value.length) { + XPWebViewController * webVC =[[XPWebViewController alloc] init]; + webVC.url = value; + [self.nim_viewController.navigationController pushViewController:webVC animated:YES]; + } + } + break; + case SecretaryRouterType_Room: + { + if (value.length > 0) { + UIViewController * controllerView = [XCCurrentVCStackManager shareManager].getCurrentVC; + //退出原来的房间 如果有的话 TODO 总感觉这种处理不太优雅 进房入口多了 怎么办 进房需要整合 + [controllerView.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj isKindOfClass:[XPRoomViewController class]]) { + [controllerView.navigationController popToRootViewControllerAnimated:NO]; + XPRoomViewController * rooomVC = obj; + [rooomVC exitRoom]; + *stop = YES; + } + }]; + [XPRoomViewController openRoom:value viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; + } + } + break; + case SecretaryRouterType_Purse: + case SecretaryRouterType_Recharge: + { +// XPMineRechargeViewController * rechargeVC = [[XPMineRechargeViewController alloc] init]; + XPIAPRechargeViewController * rechargeVC = [[XPIAPRechargeViewController alloc] init]; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:rechargeVC animated:YES]; + } + break; + case SecretaryRouterType_UserInfo: + { + if (value.length > 0) { + + if ([ClientConfig shareConfig].canOpen) { + XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init]; + userInfoVC.uid = value.integerValue; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:userInfoVC animated:YES]; + }else{ + XPMineSimpleUserInfoViewController * userInfoVC = [[XPMineSimpleUserInfoViewController alloc] init]; + userInfoVC.uid = value.integerValue; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:userInfoVC animated:YES]; + } + } + } + break; + case SecretaryRouterType_Car: + { + XPMineDressUpViewController * dressUpVC = [[XPMineDressUpViewController alloc] init]; + dressUpVC.currentIndex = 1; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:dressUpVC animated:YES]; + } + break; + case SecretaryRouterType_Headwear: + { + XPMineDressUpViewController * dressUpVC = [[XPMineDressUpViewController alloc] init]; + dressUpVC.currentIndex = 0; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:dressUpVC animated:YES]; + } + break; + case SecretaryRouterType_Nameplate: + { + XPMineDressUpViewController * dressUpVC = [[XPMineDressUpViewController alloc] init]; + dressUpVC.currentIndex = 2; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:dressUpVC animated:YES]; + } + break; + case SecretaryRouterType_Nobel_Bubble: + { + XPMineDressUpViewController * dressUpVC = [[XPMineDressUpViewController alloc] init]; + dressUpVC.currentIndex = 4; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:dressUpVC animated:YES]; + } + break; + case SecretaryRouterType_User_Card: + { + XPMineDressUpViewController * dressUpVC = [[XPMineDressUpViewController alloc] init]; + dressUpVC.currentIndex = 3; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:dressUpVC animated:YES]; + } + break; + case SecretaryRouterType_Set_Password: + { + [Api getUserInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + UserInfoModel * userInfo = [UserInfoModel modelWithDictionary:data.data]; + if (!userInfo.isBindPhone) { + [XNDJTDDLoadingTool showErrorWithMessage:@"请先绑定手机号!"]; + return; + } + //登录密码 + if (userInfo.isBindPasswd) { + XPMineLoginPasswordViewController *vc = [[XPMineLoginPasswordViewController alloc] init]; + vc.userInfo = userInfo; + vc.isModifiPwd = YES; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:vc animated:YES]; + } else { + XPMineLoginPasswordViewController *vc = [[XPMineLoginPasswordViewController alloc] init]; + vc.userInfo = userInfo; + vc.isModifiPwd = NO; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:vc animated:YES]; + } + } + } uid:[AccountInfoStorage instance].getUid]; + } + break; + case SecretaryRouterType_Dressup_Shop: + { + XPDressUpShopViewController *vc = [[XPDressUpShopViewController alloc] init]; + vc.currentIndex = [value integerValue]; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:vc animated:YES]; + } + break; + case SecretaryRouterType_My_Dressup: + { + XPMineDressUpViewController * dressUpVC = [[XPMineDressUpViewController alloc] init]; + dressUpVC.currentIndex = [value integerValue]; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:dressUpVC animated:YES]; + } + break; + case SecretaryRouterType_Square_Topic: + { + XPMonentTopicContainerViewController *topicVC = [[XPMonentTopicContainerViewController alloc] init]; + topicVC.worldId = value; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:topicVC animated:YES]; + } + break; + default: + break; + } +} + +- (UILabel *)messageText { + if (!_messageText) { + _messageText = [[UILabel alloc]initWithFrame:CGRectZero]; + _messageText.preferredMaxLayoutWidth = CONTENT_WIDTH_MAX - MESSAGE_PADDING * 2; + _messageText.textColor = DJDKMIMOMColor.mainTextColor; + _messageText.numberOfLines = 0; + } + return _messageText; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentTweetView.h b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentTweetView.h new file mode 100644 index 00000000..62076675 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentTweetView.h @@ -0,0 +1,16 @@ +// +// MessageContentTweetView.h +// YUMI +// +// Created by YUMI on 2022/4/28. +// + +#import "MessageContentCustomView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageContentTweetView : MessageContentCustomView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentTweetView.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentTweetView.m new file mode 100644 index 00000000..57e0c087 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentTweetView.m @@ -0,0 +1,235 @@ +// +// MessageContentTweetView.m +// YUMI +// +// Created by YUMI on 2022/4/28. +// + +#import "MessageContentTweetView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "NSObject+MJExtension.h" +#import "XCCurrentVCStackManager.h" +#import "YUMIConstant.h" +///Model +#import "MessageTweetModel.h" +#import "ContentTweetModel.h" +///View +#import "XPWebViewController.h" +#import "XPRoomViewController.h" + +@interface MessageContentTweetView () +///显示图片 +@property (nonatomic,strong) NetImageView *logoImageView; +///显示名字 +@property (nonatomic,strong) UILabel *titleLabel; +///分割线 +@property (nonatomic,strong) UIView * lineView; +///显示副标题 +@property (nonatomic,strong) UILabel *subTitleLabel; +///查看详情 +@property (nonatomic,strong) UIButton *checkButton; +///是否为新消息 +@property (nonatomic, strong) UIImageView *isNewImageView; +///新闻的模型 +@property (nonatomic,strong) ContentTweetModel *tweetModel; +///消息ID,用于记录是否已读 +@property (nonatomic, copy) NSString *messageId; + +@end + + +@implementation MessageContentTweetView + +- (void)render:(MessageBaseModel *)model1 { + MessageTweetModel *obj = (MessageTweetModel *)model1; + ContentTweetModel * model = obj.tweetInfo; + self.tweetModel = model; + self.messageId = model1.message.messageId; + self.logoImageView.imageUrl = model.picUrl; + self.titleLabel.attributedText = [[NSMutableAttributedString alloc] initWithString:model.title attributes:[self messageTextAttibutes:[UIFont systemFontOfSize:16] color:[DJDKMIMOMColor mainTextColor]]]; + self.subTitleLabel.attributedText = [[NSMutableAttributedString alloc] initWithString:model.desc attributes:[self messageTextAttibutes:[UIFont systemFontOfSize:13] color:[DJDKMIMOMColor secondTextColor]]]; + + CGFloat oneHeight = [YMLocalizedString(@"MessageContentTweetView0") boundingRectWithSize:CGSizeMake(240, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin + attributes:[self messageTextAttibutes:[UIFont systemFontOfSize:16] color:[DJDKMIMOMColor mainTextColor]] context:nil].size.height + 2.5; + + CGFloat titleHeight = [model.title boundingRectWithSize:CGSizeMake(240, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin + attributes:[self messageTextAttibutes:[UIFont systemFontOfSize:16] color:[DJDKMIMOMColor mainTextColor]] context:nil].size.height; + if (titleHeight <= oneHeight * 2) { + [self.titleLabel mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(titleHeight + 5); + }]; + } else{ + [self.titleLabel mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(oneHeight * 2); + }]; + } + + + + CGFloat desHeight = [model.desc boundingRectWithSize:CGSizeMake(240, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin + attributes:[self messageTextAttibutes:[UIFont systemFontOfSize:13] color:[DJDKMIMOMColor mainTextColor]] context:nil].size.height; + [self.subTitleLabel mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(desHeight); + }]; + + NSArray *redPacketHistory = [[NSUserDefaults standardUserDefaults] objectForKey:kTuWenMessageHistory]; + if ([redPacketHistory containsObject: model1.message.messageId]) { + self.isNewImageView.hidden = YES; + } else { + self.isNewImageView.hidden = NO; + } +} + +- (NSDictionary *)messageTextAttibutes:(UIFont *)font color:(UIColor *)color { + NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; + [paragraphStyle setLineSpacing:2.5]; + return @{ + NSFontAttributeName:font, + NSParagraphStyleAttributeName: paragraphStyle, + NSForegroundColorAttributeName:color + }; +} + +- (void)initSubViews { + [super initSubViews]; + [self.backView addSubview:self.titleLabel]; + [self.backView addSubview:self.logoImageView]; + [self.backView addSubview:self.lineView]; + [self.backView addSubview:self.subTitleLabel]; + [self.backView addSubview:self.checkButton]; + [self.backView addSubview:self.isNewImageView]; +} + +- (void)initSubViewConstraints { + [super initSubViewConstraints]; + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(280); + make.bottom.mas_equalTo(self.checkButton); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backView); + make.top.mas_equalTo(self.backView); + make.height.mas_equalTo(18); + }]; + + [self.logoImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backView); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(10); + make.height.mas_equalTo(87); + }]; + + [self.subTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backView); + make.top.mas_equalTo(self.logoImageView.mas_bottom).offset(10); + make.height.mas_equalTo(18); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backView); + make.height.mas_equalTo(0.5); + make.top.mas_equalTo(self.subTitleLabel.mas_bottom).offset(5); + }]; + + [self.checkButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backView); + make.top.mas_equalTo(self.lineView.mas_bottom).offset(10); + make.height.mas_equalTo(20); + }]; + [self.isNewImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.backView); + make.top.mas_equalTo(self.backView).mas_offset(3); + make.size.mas_equalTo(CGSizeMake(24, 10)); + }]; +} + +#pragma mark - Event Response +- (void)checkButtonAction:(UIButton *)sender { + // 如果打开红包成功 则记录当前红包状态 + NSArray *history = [[NSUserDefaults standardUserDefaults] objectForKey:kTuWenMessageHistory]; + NSMutableArray *tempArray = [NSMutableArray arrayWithArray:history]; + if (![tempArray containsObject:self.messageId]) { + [tempArray addObject:self.messageId]; + [[NSUserDefaults standardUserDefaults] setObject:tempArray forKey:kTuWenMessageHistory]; + [[NSUserDefaults standardUserDefaults] synchronize]; + } + if (self.tweetModel.routerType == 1) { + [XPRoomViewController openRoom:self.tweetModel.routerValue viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; + } else if (self.tweetModel.routerType == 2) { + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + webVC.url = self.tweetModel.routerValue; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:webVC animated:YES]; + } else { + if ([self.tweetModel.webUrl hasPrefix:@"http"]) { + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + webVC.url = self.tweetModel.webUrl; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:webVC animated:YES]; + } + } +} + +#pragma mark - Getters And Setters +- (NetImageView *)logoImageView { + if (!_logoImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _logoImageView = [[NetImageView alloc] initWithConfig:config]; + _logoImageView.layer.masksToBounds = YES; + _logoImageView.layer.cornerRadius = 10; + _logoImageView.contentMode = UIViewContentModeScaleAspectFill; + _logoImageView.layer.masksToBounds = YES; + } + return _logoImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.numberOfLines = 2; + _titleLabel.preferredMaxLayoutWidth = 240; + } + return _titleLabel; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _lineView; +} + +- (UILabel *)subTitleLabel { + if (!_subTitleLabel) { + _subTitleLabel = [[UILabel alloc] init]; + _subTitleLabel.numberOfLines = 0; + _subTitleLabel.preferredMaxLayoutWidth = 240; + } + return _subTitleLabel; +} + +- (UIButton *)checkButton { + if (!_checkButton) { + _checkButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_checkButton setTitle:YMLocalizedString(@"MessageContentTweetView1") forState:UIControlStateNormal]; + [_checkButton setTitleColor:UIColorFromRGB(0x4C5AF1) forState:UIControlStateNormal]; + _checkButton.titleLabel.font = [UIFont systemFontOfSize:14]; + [_checkButton addTarget:self action:@selector(checkButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _checkButton; +} + +- (UIImageView *)isNewImageView { + if (!_isNewImageView) { + _isNewImageView = [[UIImageView alloc] init]; + _isNewImageView.image = [UIImage imageNamed:@"gift_type_newIcon"]; + _isNewImageView.hidden = YES; + } + return _isNewImageView; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentUnSupport.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentUnSupport.m index 3e04f3e0..c503cf2b 100644 --- a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentUnSupport.m +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentUnSupport.m @@ -5,10 +5,16 @@ // Created by 冯硕 on 2022/4/19. // -#import "CommunicationSatisfactionUnSupportRegard.h" - -@implementation CommunicationSatisfactionUnSupportRegard +#import "MessageContentUnSupportView.h" +@implementation MessageContentUnSupportView +/* +// Only override drawRect: if you perform custom drawing. +// An empty implementation adversely affects performance during animation. +- (void)drawRect:(CGRect)rect { + // Drawing code +} +*/ @end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentUnSupportView.h b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentUnSupportView.h new file mode 100644 index 00000000..ab2f87b1 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentUnSupportView.h @@ -0,0 +1,16 @@ +// +// MessageContentUnSupport.h +// YUMI +// +// Created by YUMI on 2022/4/19. +// + +#import +#import "MessageContentProtocol.h" +NS_ASSUME_NONNULL_BEGIN + +@interface MessageContentUnSupportView : UIView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentUnSupportView.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentUnSupportView.m new file mode 100644 index 00000000..a8e4bcf5 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentUnSupportView.m @@ -0,0 +1,64 @@ +// +// MessageContentUnSupport.m +// YUMI +// +// Created by YUMI on 2022/4/19. +// + +#import "MessageContentUnSupportView.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "MessageUnSupportModel.h" + + +@interface MessageContentUnSupportView () +///不支持的类型 +@property (nonatomic,strong) UILabel *unSupportLabel; +@end + +@implementation MessageContentUnSupportView + +- (void)render:(MessageBaseModel *)message { + NIMCustomObject *obj = (NIMCustomObject *)message.message.messageObject; + NSLog(@"%@", obj); +} + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.unSupportLabel]; +} + +- (void)initSubViewConstraints { + [self.unSupportLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self).with.insets(UIEdgeInsetsMake(MESSAGE_PADDING, MESSAGE_PADDING, MESSAGE_PADDING, MESSAGE_PADDING)); + }]; +} + +#pragma mark - Getters And Setters +- (UILabel *)unSupportLabel { + if (!_unSupportLabel) { + _unSupportLabel = [[UILabel alloc]initWithFrame:CGRectZero]; + _unSupportLabel.preferredMaxLayoutWidth = CONTENT_WIDTH_MAX - MESSAGE_PADDING * 2; + _unSupportLabel.textColor = DJDKMIMOMColor.mainTextColor; + _unSupportLabel.text = YMLocalizedString(@"MessageContentUnSupportView0"); + _unSupportLabel.textAlignment = NSTextAlignmentCenter; + _unSupportLabel.font = [UIFont systemFontOfSize:13]; + } + return _unSupportLabel; +} + + + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageTimeView.h b/YuMi/Modules/YMMessage/View/Session/Content/MessageTimeView.h new file mode 100644 index 00000000..3a551f2c --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageTimeView.h @@ -0,0 +1,16 @@ +// +// MessageTimeView.h +// YUMI +// +// Created by YUMI on 2023/1/18. +// + +#import +#import "MessageContentProtocol.h" +NS_ASSUME_NONNULL_BEGIN + +@interface MessageTimeView : UIView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageTimeView.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageTimeView.m new file mode 100644 index 00000000..8b88a0b3 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageTimeView.m @@ -0,0 +1,57 @@ +// +// MessageTimeView.m +// YUMI +// +// Created by YUMI on 2023/1/18. +// + +#import "MessageTimeView.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +///Model +#import "MessageTimeModel.h" + +@interface MessageTimeView() + +///显示时间 +@property (nonatomic, strong) UILabel * timeLabel; +///当前的消息 +@property (nonatomic,strong) NIMMessage *message; + +@end + +@implementation MessageTimeView + +- (instancetype)init { + self = [super init]; + if (self) { + [self addSubview:self.timeLabel]; + [self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self).with.insets(UIEdgeInsetsMake(0, 0, 0, 0)); + }]; + } + return self; +} + +- (void)render:(nonnull MessageBaseModel *)model { + self.superview.backgroundColor = [UIColor clearColor]; + self.message = model.message; + MessageTimeModel * timeModel= (MessageTimeModel *)model; + NSString * messageText = timeModel.time; + self.timeLabel.text = messageText; +} + +- (UILabel *)timeLabel { + if (!_timeLabel) { + _timeLabel = [[UILabel alloc] init]; + _timeLabel.font = [UIFont systemFontOfSize:10]; + _timeLabel.textAlignment = NSTextAlignmentCenter; + _timeLabel.textColor = [DJDKMIMOMColor textThirdColor]; + } + return _timeLabel; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageTipsView.h b/YuMi/Modules/YMMessage/View/Session/Content/MessageTipsView.h new file mode 100644 index 00000000..3ec63320 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageTipsView.h @@ -0,0 +1,16 @@ +// +// MessageTipsView.h +// YUMI +// +// Created by YUMI on 2023/2/1. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageTipsView : UIView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageTipsView.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageTipsView.m new file mode 100644 index 00000000..aa64218b --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageTipsView.m @@ -0,0 +1,54 @@ +// +// MessageTipsView.m +// YUMI +// +// Created by YUMI on 2023/2/1. +// + +#import "MessageTipsView.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +///Model +#import "MessageTipsModel.h" + +@interface MessageTipsView() + +///显示时间 +@property (nonatomic, strong) UILabel * timeLabel; +///当前的消息 +@property (nonatomic,strong) NIMMessage *message; + +@end + +@implementation MessageTipsView + +- (instancetype)init { + self = [super init]; + if (self) { + [self addSubview:self.timeLabel]; + [self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self).with.insets(UIEdgeInsetsMake(0, 0, 0, 0)); + }]; + } + return self; +} + +- (void)render:(nonnull MessageBaseModel *)model { + self.superview.backgroundColor = [UIColor clearColor]; + self.message = model.message; + self.timeLabel.text = model.message.text; +} + +- (UILabel *)timeLabel { + if (!_timeLabel) { + _timeLabel = [[UILabel alloc] init]; + _timeLabel.font = [UIFont systemFontOfSize:10]; + _timeLabel.textAlignment = NSTextAlignmentCenter; + _timeLabel.textColor = [DJDKMIMOMColor textThirdColor]; + } + return _timeLabel; +} +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationApplicationParaticipationMatrix.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationApplicationParaticipationMatrix.h deleted file mode 100644 index c8616d2a..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationApplicationParaticipationMatrix.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// CommunicationApplicationParaticipationMatrix.h -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationBaseMatrix.h" - -NS_ASSUME_NONNULL_BEGIN -@class SatisfactionApplicationParaticipationMatrix; -@interface CommunicationApplicationParaticipationMatrix : CommunicationBaseMatrix -@property (nonatomic,strong) SatisfactionApplicationParaticipationMatrix *shareInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationApplicationParaticipationMatrix.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationApplicationParaticipationMatrix.m deleted file mode 100644 index 7b5a8037..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationApplicationParaticipationMatrix.m +++ /dev/null @@ -1,31 +0,0 @@ -// -// CommunicationApplicationParaticipationMatrix.m -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationApplicationParaticipationMatrix.h" -#import "AttachmentMatrix.h" -#import "SatisfactionApplicationParaticipationMatrix.h" -#import "NSObject+MJExtension.h" -@implementation CommunicationApplicationParaticipationMatrix - -- (instancetype)initWithMessage:(NIMMessage *)message { - if (self = [super initWithMessage:message]) { - self.messageType = InterlocutionCommunicationGenre_Custom; - self.contentSize = CGSizeMake(200, 50); - self.height = 90 + CONTENT_PADDING_V_TOTAL; - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - AttachmentMatrix * attach = obj.attachment; - SatisfactionApplicationParaticipationMatrix *info = [SatisfactionApplicationParaticipationMatrix mtowardsrixAboutImpactbasket:attach.data]; - self.shareInfo = info; - } - return self; -} - -- (NSString *)cellStowardsisfperformance:(CommunicationBaseMatrix *)model { - return @"CommunicationSatisfactionApplicationParaticipationRegard"; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationBaseMatrix.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationBaseMatrix.h deleted file mode 100644 index 182ded0e..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationBaseMatrix.h +++ /dev/null @@ -1,46 +0,0 @@ -// -// CommunicationBaseMatrix.h -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import -#import -#import "CommunicationContentCeremony.h" -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, InterlocutionCommunicationGenre) { - - InterlocutionCommunicationGenre_Text = 1, - - InterlocutionCommunicationGenre_Image, - - InterlocutionCommunicationGenre_Audio, - - InterlocutionCommunicationGenre_Tips, - - InterlocutionCommunicationGenre_Custom, - - InterlocutionCommunicationGenre_Time, - - InterlocutionCommunicationGenre_Revoke, - - InterlocutionCommunicationGenre_UnSupport -}; - -@interface CommunicationBaseMatrix : NSObject -@property (nonatomic,strong) NIMMessage *message; -@property (nonatomic,assign) CGSize contentSize; -@property (nonatomic,assign) CGFloat height; -@property (nonatomic,strong) NSString *nick; -@property (nonatomic,strong) NSString *avatar; -@property (nonatomic,assign) BOOL isOutgoingMsg; -@property (nonatomic,assign) BOOL isHiddenAvatar; -@property (nonatomic,assign) InterlocutionCommunicationGenre messageType; -- (instancetype)initWithMessage:(NIMMessage *)message; - -- (NSString *)cellStowardsisfperformance:(CommunicationBaseMatrix *)model; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationBaseMatrix.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationBaseMatrix.m deleted file mode 100644 index a24cdc1d..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationBaseMatrix.m +++ /dev/null @@ -1,25 +0,0 @@ -// -// CommunicationBaseMatrix.m -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationBaseMatrix.h" - -@implementation CommunicationBaseMatrix - -- (instancetype)initWithMessage:(NIMMessage *)message { - if (self = [super init]) { - self.message = message; - self.isHiddenAvatar = NO; - self.messageType = InterlocutionCommunicationGenre_Text; - } - return self; -} - -- (NSString *)cellStowardsisfperformance:(CommunicationBaseMatrix *)model { - return @"CommunicationSatisfactionEssay"; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationCommunicationSolitaireMatrix.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationCommunicationSolitaireMatrix.h deleted file mode 100644 index 93757214..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationCommunicationSolitaireMatrix.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// CommunicationCommunicationSolitaireMatrix.h -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationBaseMatrix.h" - -NS_ASSUME_NONNULL_BEGIN -@class UnionCommunicationMatrix; -@interface CommunicationCommunicationSolitaireMatrix : CommunicationBaseMatrix -@property (nonatomic,strong) UnionCommunicationMatrix *guildInfo; -@property (nonatomic,strong) NSAttributedString *attribute; -@property (nonatomic,assign) CGFloat textHeight; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationCommunicationSolitaireMatrix.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationCommunicationSolitaireMatrix.m deleted file mode 100644 index 577430e1..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationCommunicationSolitaireMatrix.m +++ /dev/null @@ -1,68 +0,0 @@ -// -// CommunicationCommunicationSolitaireMatrix.m -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationCommunicationSolitaireMatrix.h" -#import -#import "AttachmentMatrix.h" -#import "UnionCommunicationMatrix.h" -#import "NSObject+MJExtension.h" -#import "DJDKMIMOMColor.h" -@implementation CommunicationCommunicationSolitaireMatrix -- (instancetype)initWithMessage:(NIMMessage *)message { - if (self = [super initWithMessage:message]) { - self.messageType = InterlocutionCommunicationGenre_Custom; - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - AttachmentMatrix * attach = obj.attachment; - UnionCommunicationMatrix * info = [UnionCommunicationMatrix mtowardsrixAboutImpactbasket:attach.data]; - self.guildInfo = info; - NSMutableAttributedString *attr = [[NSMutableAttributedString alloc]init]; - UnionCommunicationProgrammingMatrix *layout = info.layout; - for (UnionCommunicationProgrammingAbstractMatrix *params in layout.contents) { - if (params.content.length > 0) { - if ([params.content containsString:@"/r/n"]) { - params.content = @"\r\n"; - } - NSMutableAttributedString *subAttr = [[NSMutableAttributedString alloc]initWithString:params.content]; - if (params.fontSize > 0) { - [subAttr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:params.fontSize weight:params.fontBold?UIFontWeightBold:UIFontWeightRegular] range:NSMakeRange(0, subAttr.length)]; - } - - if (params.fontColor.length > 0) { - [subAttr addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor colorAboutHexBWSttr:params.fontColor] range:NSMakeRange(0, subAttr.length)]; - } - [attr appendAttributedString:subAttr]; - } - } - - attr.yy_lineSpacing = 5; - CGSize maxSize = CGSizeMake(CONTENT_WIDTH_MAX - MESSAGE_PADDING * 2, CGFLOAT_MAX); - YYTextLayout * contentLayout = [YYTextLayout layoutWithContainerSize:maxSize text:attr]; - self.attribute = attr; - - CGFloat contentHeight = contentLayout.textBoundingSize.height+ 20 + 15 + MESSAGE_PADDING * 4; - self.textHeight = contentLayout.textBoundingSize.height + 5; - self.height = contentHeight + CONTENT_PADDING_V_TOTAL; - } - return self; -} - -- (NSDictionary *)communictowardsionEssayTowardstibutes:(UIFont *)font { - NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; - [paragraphStyle setLineSpacing:2.5]; - return @{ - NSFontAttributeName:font, - NSParagraphStyleAttributeName: paragraphStyle - }; -} - - -- (NSString *)cellStowardsisfperformance:(CommunicationBaseMatrix *)model { - return @"CommunicationSatisfactionCommunicationSolitaireRegard"; -} - - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationDeficitSheatheMatrix.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationDeficitSheatheMatrix.h deleted file mode 100644 index 6eda6296..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationDeficitSheatheMatrix.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// CommunicationDeficitSheatheMatrix.h -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationBaseMatrix.h" - -NS_ASSUME_NONNULL_BEGIN -@class YUMIAchieveDeficitSheatheMatrix; -@interface CommunicationDeficitSheatheMatrix : CommunicationBaseMatrix -@property (nonatomic,strong) YUMIAchieveDeficitSheatheMatrix *redInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationDeficitSheatheMatrix.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationDeficitSheatheMatrix.m deleted file mode 100644 index 9450b1ca..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationDeficitSheatheMatrix.m +++ /dev/null @@ -1,31 +0,0 @@ -// -// CommunicationDeficitSheatheMatrix.m -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationDeficitSheatheMatrix.h" -#import "AttachmentMatrix.h" -#import "YUMIAchieveDeficitSheatheMatrix.h" -#import "NSObject+MJExtension.h" -@implementation CommunicationDeficitSheatheMatrix - -- (instancetype)initWithMessage:(NIMMessage *)message { - if (self = [super initWithMessage:message]) { - self.messageType = InterlocutionCommunicationGenre_Custom; - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - AttachmentMatrix * attach = obj.attachment; - YUMIAchieveDeficitSheatheMatrix * info = [YUMIAchieveDeficitSheatheMatrix mtowardsrixAboutJSON:attach.data]; - self.redInfo = info; - self.contentSize = CGSizeMake(260, 95); - self.height = (95 + CONTENT_PADDING_V_TOTAL); - } - return self; -} - -- (NSString *)cellStowardsisfperformance:(CommunicationBaseMatrix *)model { - return @"CommunicationSatisfactionDeficitSheatheRegard"; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationDiscoveryStrangeBewelcometoMatrix.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationDiscoveryStrangeBewelcometoMatrix.h deleted file mode 100644 index 21465542..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationDiscoveryStrangeBewelcometoMatrix.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// CommunicationDiscoveryStrangeBewelcometoMatrix.h -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationBaseMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationDiscoveryStrangeBewelcometoMatrix : CommunicationBaseMatrix - -@property (nonatomic,strong) NSAttributedString *attributedText; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationDiscoveryStrangeBewelcometoMatrix.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationDiscoveryStrangeBewelcometoMatrix.m deleted file mode 100644 index cd8f19d8..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationDiscoveryStrangeBewelcometoMatrix.m +++ /dev/null @@ -1,48 +0,0 @@ -// -// CommunicationDiscoveryStrangeBewelcometoMatrix.m -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationDiscoveryStrangeBewelcometoMatrix.h" -#import "AttachmentMatrix.h" -#import "DiscoveryStrangeBewelcometoCommunicationMatrix.h" -#import "NSObject+MJExtension.h" -@implementation CommunicationDiscoveryStrangeBewelcometoMatrix -- (instancetype)initWithMessage:(NIMMessage *)message { - if (self = [super initWithMessage:message]) { - self.messageType = InterlocutionCommunicationGenre_Custom; - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - AttachmentMatrix * attach = obj.attachment; - DiscoveryStrangeBewelcometoCommunicationMatrix * model = [DiscoveryStrangeBewelcometoCommunicationMatrix mtowardsrixAboutImpactbasket:attach.data]; - NSString * text = model.message; - if (text.length <= 0) { - text = @""; - } - CGSize dstRect = CGSizeMake(CONTENT_WIDTH_MAX - MESSAGE_PADDING * 2, MAXFLOAT); - - CGSize msgSize = [text boundingRectWithSize:dstRect options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine attributes:[self communictowardsionEssayTowardstibutes] context:nil].size; - self.attributedText = [[NSMutableAttributedString alloc] initWithString:text attributes:[self communictowardsionEssayTowardstibutes]]; - self.contentSize = CGSizeMake(msgSize.width + MESSAGE_PADDING * 2, msgSize.height + MESSAGE_PADDING * 2); - self.height = msgSize.height + MESSAGE_PADDING * 2 + CONTENT_PADDING_V_TOTAL; - } - return self; -} - -- (NSDictionary *)communictowardsionEssayTowardstibutes { - UIFont *font = [UIFont systemFontOfSize:13.f]; - NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; - [paragraphStyle setLineSpacing:2.5]; - return @{ - NSFontAttributeName:font, - NSParagraphStyleAttributeName: paragraphStyle - }; -} - - - -- (NSString *)cellStowardsisfperformance:(CommunicationBaseMatrix *)model { - return @"CommunicationSatisfactionDiscoveryStrangeBewelcometoRegard"; -} -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationEssayClickMatrix.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationEssayClickMatrix.h deleted file mode 100644 index 2df6852e..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationEssayClickMatrix.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// CommunicationEssayClickMatrix.h -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationBaseMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationEssayClickMatrix : CommunicationBaseMatrix -@property (nonatomic,strong) NSAttributedString *attributedText; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationEssayClickMatrix.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationEssayClickMatrix.m deleted file mode 100644 index db7c74a0..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationEssayClickMatrix.m +++ /dev/null @@ -1,55 +0,0 @@ -// -// CommunicationEssayClickMatrix.m -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationEssayClickMatrix.h" -#import "AttachmentMatrix.h" -@implementation CommunicationEssayClickMatrix - -- (instancetype)initWithMessage:(NIMMessage *)message { - if (self = [super initWithMessage:message]) { - self.messageType = InterlocutionCommunicationGenre_Custom; - - NSString * communicationEssay = message.text; - if (message.messageType == NIMMessageTypeCustom) { - NIMCustomObject *obj = (NIMCustomObject *) message.messageObject; - AttachmentMatrix *attachment = (AttachmentMatrix *) obj.attachment; - if (attachment.first == IndividualityCommunicationGenre_Secretary) { - if (attachment.second == Custom_Message_Sub_Secretary_Router) { - communicationEssay = attachment.data[@"msg"]; - } - } - } - if (!communicationEssay) { - communicationEssay = YMLocalizedString(@"Message_Text_Click_Model_0"); - } - - CGSize dstRect = CGSizeMake(CONTENT_WIDTH_MAX - MESSAGE_PADDING * 2, MAXFLOAT); - - CGSize msgSize = [communicationEssay boundingRectWithSize:dstRect options:NSStringDrawingUsesLineFragmentOrigin attributes:[self communictowardsionEssayTowardstibutes] context:nil].size; - self.attributedText = [[NSAttributedString alloc] initWithString:communicationEssay attributes:[self communictowardsionEssayTowardstibutes]]; - self.height = msgSize.height + MESSAGE_PADDING * 2 + CONTENT_PADDING_V_TOTAL; - self.contentSize = CGSizeMake(msgSize.width + MESSAGE_PADDING * 2, msgSize.height + MESSAGE_PADDING * 2); - - } - return self; -} - -- (NSDictionary *)communictowardsionEssayTowardstibutes { - UIFont *font = [UIFont systemFontOfSize:13.f]; - NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; - [paragraphStyle setLineSpacing:2.5]; - return @{ - NSFontAttributeName:font, - NSParagraphStyleAttributeName: paragraphStyle - }; -} - -- (NSString *)cellStowardsisfperformance:(CommunicationBaseMatrix *)model { - return @"CommunicationSatisfactionEssayClickable"; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationEssayMatrix.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationEssayMatrix.h deleted file mode 100644 index 47bab3be..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationEssayMatrix.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// CommunicationEssayMatrix.h -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationBaseMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationEssayMatrix : CommunicationBaseMatrix - -@property (nonatomic,strong) NSAttributedString *textAttribute; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationEssayMatrix.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationEssayMatrix.m deleted file mode 100644 index 292b6b8f..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationEssayMatrix.m +++ /dev/null @@ -1,38 +0,0 @@ -// -// CommunicationEssayMatrix.m -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationEssayMatrix.h" -#import "MHTSpiritFacilitater.h" -#import -@implementation CommunicationEssayMatrix - -- (instancetype)initWithMessage:(NIMMessage *)message { - if (self = [super initWithMessage:message]) { - self.messageType = InterlocutionCommunicationGenre_Text; - NSString * communicationEssay = message.text; - if (!communicationEssay) { - communicationEssay = YMLocalizedString(@"Message_Text_Model_0"); - } - CGSize dstRect = CGSizeMake(CONTENT_WIDTH_MAX - MESSAGE_PADDING * 2, MAXFLOAT); - MHTSpiritFacilitater *faceManager = [MHTSpiritFacilitater partowardsiciptowardsiondSenintrtowardsemporalntFacilittowardseer]; - NSMutableAttributedString * attribute = [faceManager towardstributedBWSttrByEssay:communicationEssay font:[UIFont systemFontOfSize:13]]; - self.textAttribute = attribute; - YYTextContainer *container = [YYTextContainer containerWithSize:dstRect]; - container.maximumNumberOfRows = 0; - YYTextLayout *layout = [YYTextLayout layoutWithContainer:container text:attribute]; - CGFloat rowHeight = layout.textBoundingSize.height; - self.contentSize = CGSizeMake(layout.textBoundingSize.width + MESSAGE_PADDING* 2, layout.textBoundingSize.height + MESSAGE_PADDING * 2); - self.height = rowHeight + MESSAGE_PADDING * 2 + CONTENT_PADDING_V_TOTAL; - } - return self; -} - -- (NSString *)cellStowardsisfperformance:(CommunicationBaseMatrix *)model { - return @"CommunicationSatisfactionEssay"; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationIndicateMatrix.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationIndicateMatrix.h deleted file mode 100644 index 451c390f..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationIndicateMatrix.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// CommunicationIndicateMatrix.h -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationBaseMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationIndicateMatrix : CommunicationBaseMatrix -@property (nonatomic,strong) UIImage *image; -@property (nonatomic,copy) NSString *imageUrl; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationIndicateMatrix.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationIndicateMatrix.m deleted file mode 100644 index 773f2b12..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationIndicateMatrix.m +++ /dev/null @@ -1,47 +0,0 @@ -// -// CommunicationIndicateMatrix.m -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationIndicateMatrix.h" -#import "UIImage+Utils.h" -#define MESSAGE_IMAGE_MAX_SIZE (CONTENT_WIDTH_MAX) -#define MESSAGE_IMAGE_Min_SIZE (CONTENT_WIDTH_MAX -100) - -@implementation CommunicationIndicateMatrix -- (instancetype)initWithMessage:(NIMMessage *)message { - if (self = [super initWithMessage:message]) { - self.messageType = InterlocutionCommunicationGenre_Image; - NIMImageObject * indicateGroal = (NIMImageObject*)message.messageObject; - CGFloat attachmentImageMinWidth = (MESSAGE_IMAGE_Min_SIZE); - CGFloat attachmentImageMinHeight = (MESSAGE_IMAGE_Min_SIZE); - CGFloat attachmemtImageMaxWidth = (MESSAGE_IMAGE_MAX_SIZE); - CGFloat attachmentImageMaxHeight = (MESSAGE_IMAGE_MAX_SIZE); - CGSize imageSize; - if (!CGSizeEqualToSize(indicateGroal.size, CGSizeZero)) { - imageSize = indicateGroal.size; - }else { - UIImage *image = [UIImage imageWithContentsOfFile:indicateGroal.thumbPath]; - imageSize = image ? image.size : CGSizeZero; - } - CGSize contentSize = [UIImage sizeAboutIndictowardseDerivtowardsionDimension:imageSize - minSize:CGSizeMake(attachmentImageMinWidth, attachmentImageMinHeight) - maxSize:CGSizeMake(attachmemtImageMaxWidth, attachmentImageMaxHeight)]; - self.contentSize = contentSize; - self.height = contentSize.height + MESSAGE_PADDING * 2 + CONTENT_PADDING_V_TOTAL; - UIImage *image = [UIImage imageWithContentsOfFile:indicateGroal.thumbPath]; - if (image) { - self.image = image; - }else { - self.imageUrl = indicateGroal.url; - } - } - return self; -} - -- (NSString *)cellStowardsisfperformance:(CommunicationBaseMatrix *)model { - return @"CommunicationSatisfactionIndicate"; -} -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationIntratemporalMatrix.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationIntratemporalMatrix.h deleted file mode 100644 index 915b3734..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationIntratemporalMatrix.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// CommunicationIntratemporalMatrix.h -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationBaseMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationIntratemporalMatrix : CommunicationBaseMatrix -@property (nonatomic,strong) NSString *time; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationIntratemporalMatrix.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationIntratemporalMatrix.m deleted file mode 100644 index 1a759204..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationIntratemporalMatrix.m +++ /dev/null @@ -1,26 +0,0 @@ -// -// CommunicationIntratemporalMatrix.m -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationIntratemporalMatrix.h" - -@implementation CommunicationIntratemporalMatrix - -- (instancetype)initWithMessage:(NIMMessage *)message { - if (self = [super initWithMessage:message]) { - self.messageType = InterlocutionCommunicationGenre_Time; - self.contentSize = CGSizeMake(200, 20); - self.height = 20 + CONTENT_PADDING_V_TOTAL; - self.isHiddenAvatar = YES; - } - return self; -} - -- (NSString *)cellStowardsisfperformance:(CommunicationBaseMatrix *)model { - return @"CommunicationIntratemporalRegard"; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationPresentMatrix.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationPresentMatrix.h deleted file mode 100644 index 3808faa5..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationPresentMatrix.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// CommunicationPresentMatrix.h -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationBaseMatrix.h" -@class PresentAbstractMatrix; -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationPresentMatrix : CommunicationBaseMatrix -@property (nonatomic,strong) PresentAbstractMatrix *giftInfo; -@property (nonatomic,assign) NSInteger giftNum; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationPresentMatrix.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationPresentMatrix.m deleted file mode 100644 index b5689e91..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationPresentMatrix.m +++ /dev/null @@ -1,37 +0,0 @@ -// -// CommunicationPresentMatrix.m -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationPresentMatrix.h" -#import "PresentAchieveAbstractMatrix.h" -#import "NSObject+MJExtension.h" -#import "YUMIPresentStorage.h" -#import "AttachmentMatrix.h" -@implementation CommunicationPresentMatrix - -- (instancetype)initWithMessage:(NIMMessage *)message { - if (self = [super initWithMessage:message]) { - self.messageType = InterlocutionCommunicationGenre_Custom; - self.contentSize = CGSizeMake(185 + MESSAGE_PADDING * 2, 80); - self.height = (CONTENT_PADDING_V_TOTAL + 80 + MESSAGE_PADDING * 2); - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - AttachmentMatrix * attach = obj.attachment; - PresentAchieveAbstractMatrix *info = [PresentAchieveAbstractMatrix mtowardsrixAboutImpactbasket:attach.data]; - PresentAbstractMatrix *giftInfo1 = info.gift == nil ? info.giftInfo : info.gift; - if (giftInfo1 == nil) { - giftInfo1 = [[YUMIPresentStorage partowardsiciptowardsionStorage] prohibiticoveryPresentAbstract:info.giftId]; - } - self.giftNum = info.giftNum; - self.giftInfo = giftInfo1; - } - return self; -} - -- (NSString *)cellStowardsisfperformance:(CommunicationBaseMatrix *)model { - return @"CommunicationSatisfactionPresentRegard"; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationPrototypeAscensionMatrix.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationPrototypeAscensionMatrix.h deleted file mode 100644 index d3997411..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationPrototypeAscensionMatrix.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// CommunicationPrototypeAscensionMatrix.h -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationBaseMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationPrototypeAscensionMatrix : CommunicationBaseMatrix -@property (nonatomic,strong) NSString *imageName; -@property (nonatomic,strong) NSString *level; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationPrototypeAscensionMatrix.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationPrototypeAscensionMatrix.m deleted file mode 100644 index e0b428c3..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationPrototypeAscensionMatrix.m +++ /dev/null @@ -1,37 +0,0 @@ -// -// CommunicationPrototypeAscensionMatrix.m -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationPrototypeAscensionMatrix.h" -#import "AttachmentMatrix.h" -#import "SatisfactionPrototypeAscensionMatrix.h" -#import "NSObject+MJExtension.h" -@implementation CommunicationPrototypeAscensionMatrix - -- (instancetype)initWithMessage:(NIMMessage *)message { - if (self = [super initWithMessage:message]) { - self.messageType = InterlocutionCommunicationGenre_Custom; - self.contentSize = CGSizeMake(220, 116); - self.height = 116 + CONTENT_PADDING_V_TOTAL; - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - AttachmentMatrix * attach = obj.attachment; - SatisfactionPrototypeAscensionMatrix * model = [SatisfactionPrototypeAscensionMatrix mtowardsrixAboutJSON:attach.data]; - if (attach.second == Custom_Message_Sub_User_UpGrade_Charm) { - self.imageName = @"message_content_upgrade_charm"; - self.level = [NSString stringWithFormat:@"恭喜!您的魅力等级已到达Lv%@", model.levelName]; - } else { - self.imageName = @"message_content_upgrade_expre"; - self.level = [NSString stringWithFormat:@"恭喜!您的等级已到达Lv%@", model.levelName]; - } - } - return self; -} - -- (NSString *)cellStowardsisfperformance:(CommunicationBaseMatrix *)model { - return @"CommunicationSatisfactionPrototypeAscensionRegard"; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationRevokeMatrix.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationRevokeMatrix.h deleted file mode 100644 index 3de13624..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationRevokeMatrix.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// CommunicationRevokeMatrix.h -// YUMI -// -// Created by YUMI on 2023/1/31. -// - -#import "CommunicationBaseMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationRevokeMatrix : CommunicationBaseMatrix - -@property (nonatomic,strong) NSString *title; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationRevokeMatrix.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationRevokeMatrix.m deleted file mode 100644 index 084673dd..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationRevokeMatrix.m +++ /dev/null @@ -1,31 +0,0 @@ -// -// CommunicationRevokeMatrix.m -// YUMI -// -// Created by YUMI on 2023/1/31. -// - -#import "CommunicationRevokeMatrix.h" - -@implementation CommunicationRevokeMatrix - -- (instancetype)initWithMessage:(NIMMessage *)message { - if (self = [super initWithMessage:message]) { - self.messageType = InterlocutionCommunicationGenre_Revoke; - NSString * communicationEssay = YMLocalizedString(@"Message_Revoke_Model_0"); - self.title = communicationEssay; - if (communicationEssay.length > 0) { - CGSize size = [communicationEssay boundingRectWithSize:CGSizeMake(150, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:10]} context:nil].size; - self.contentSize = CGSizeMake(size.width + 10, 15); - self.height = 15 + CONTENT_PADDING_V_TOTAL; - self.isHiddenAvatar = YES; - } - } - return self; -} - -- (NSString *)cellStowardsisfperformance:(CommunicationBaseMatrix *)model { - return @"CommunicationSatisfactionRevokeRegard"; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationSeparationsAutoMatrix.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationSeparationsAutoMatrix.h deleted file mode 100644 index d1b756a9..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationSeparationsAutoMatrix.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// CommunicationSeparationsAutoMatrix.h -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationBaseMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationSeparationsAutoMatrix : CommunicationBaseMatrix -@property (nonatomic,strong) NSString *title; -@property (nonatomic,strong) NSString *time; -@property (nonatomic,strong) NSAttributedString *attributedText; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationSeparationsAutoMatrix.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationSeparationsAutoMatrix.m deleted file mode 100644 index 3a10b286..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationSeparationsAutoMatrix.m +++ /dev/null @@ -1,46 +0,0 @@ -// -// CommunicationSeparationsAutoMatrix.m -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationSeparationsAutoMatrix.h" -#import "AttachmentMatrix.h" -#import "DJDKMIMOMColor.h" -#import "UnionCommunicationMatrix.h" -#import "NSObject+MJExtension.h" -@implementation CommunicationSeparationsAutoMatrix - -- (instancetype)initWithMessage:(NIMMessage *)message { - if (self = [super initWithMessage:message]) { - self.messageType = InterlocutionCommunicationGenre_Custom; - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - AttachmentMatrix * attach = obj.attachment; - NSDictionary * dic = attach.data; - UnionCommunicationMatrix *model = [UnionCommunicationMatrix mtowardsrixAboutImpactbasket:dic]; - UnionCommunicationProgrammingMatrix * layout = model.layout; - if (layout) { - self.title = layout.title.content; - self.time = layout.time.content; - NSMutableAttributedString *msgString = [[NSMutableAttributedString alloc] init]; - - [layout.contents enumerateObjectsUsingBlock:^(UnionCommunicationProgrammingAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:obj.content]; - [string addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:obj.fontSize] range:NSMakeRange(0, string.length)]; - [string addAttribute:NSForegroundColorAttributeName value:UIColorFromRGB(0x333333) range:NSMakeRange(0, string.length)]; - [msgString appendAttributedString:string]; - }]; - self.attributedText = msgString; - } - self.contentSize = CGSizeMake(250, 120); - self.height = (CONTENT_PADDING_V_TOTAL + 120);; - } - return self; -} - -- (NSString *)cellStowardsisfperformance:(CommunicationBaseMatrix *)model { - return @"CommunicationSatisfactionSeparationsAutoRegard"; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationSeparationsMatrix.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationSeparationsMatrix.h deleted file mode 100644 index 178b46fe..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationSeparationsMatrix.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// CommunicationSeparationsMatrix.h -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationBaseMatrix.h" - -NS_ASSUME_NONNULL_BEGIN -@class SeparationsAbstractMatrix; -@interface CommunicationSeparationsMatrix : CommunicationBaseMatrix -@property (nonatomic,strong) SeparationsAbstractMatrix *monentsInfo; -@property (nonatomic,strong) NSString *imageUrl; -@property (nonatomic,strong) NSString *title; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationSeparationsMatrix.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationSeparationsMatrix.m deleted file mode 100644 index ce1ca58f..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationSeparationsMatrix.m +++ /dev/null @@ -1,49 +0,0 @@ -// -// CommunicationSeparationsMatrix.m -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationSeparationsMatrix.h" -#import "AttachmentMatrix.h" -#import "SeparationsAbstractMatrix.h" -#import "NSObject+MJExtension.h" -@implementation CommunicationSeparationsMatrix -- (instancetype)initWithMessage:(NIMMessage *)message { - if (self = [super initWithMessage:message]) { - self.messageType = InterlocutionCommunicationGenre_Custom; - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - AttachmentMatrix * attach = obj.attachment; - NSDictionary * dic = attach.data; - self.monentsInfo = [SeparationsAbstractMatrix mtowardsrixAboutImpactbasket:dic]; - self.imageUrl = dic[@"imageUrl"]; - NSString * nick = self.monentsInfo.nick; - if (nick.length > 6) { - nick = [nick substringToIndex:6]; - } - NSString * title = [NSString stringWithFormat:@"%@%@",nick, YMLocalizedString(@"Message_Monents_Model_0")]; - self.title = dic[@"title"] ? dic[@"title"] : title; - self.contentSize = CGSizeMake(250, 60); - self.height = (CONTENT_PADDING_V_TOTAL + 60);; - } - return self; -} - - -- (NSDictionary *)communictowardsionEssayTowardstibutes { - UIFont *font = [UIFont systemFontOfSize:13.f]; - NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; - [paragraphStyle setLineSpacing:2.5]; - return @{ - NSFontAttributeName:font, - NSParagraphStyleAttributeName: paragraphStyle - }; -} - - - -- (NSString *)cellStowardsisfperformance:(CommunicationBaseMatrix *)model { - return @"CommunicationSatisfactionSeparationsRegard"; -} -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationTipsMatrix.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationTipsMatrix.h deleted file mode 100644 index d9fbf8e7..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationTipsMatrix.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// CommunicationTipsMatrix.h -// YUMI -// -// Created by YUMI on 2023/2/1. -// - -#import "CommunicationBaseMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationTipsMatrix : CommunicationBaseMatrix - -@end - -NS_ASSUME_NONNULL_END - diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationTipsMatrix.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationTipsMatrix.m deleted file mode 100644 index cfe18e6c..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationTipsMatrix.m +++ /dev/null @@ -1,26 +0,0 @@ -// -// CommunicationTipsMatrix.m -// YUMI -// -// Created by YUMI on 2023/2/1. -// - -#import "CommunicationTipsMatrix.h" - -@implementation CommunicationTipsMatrix - -- (instancetype)initWithMessage:(NIMMessage *)message { - if (self = [super initWithMessage:message]) { - self.messageType = InterlocutionCommunicationGenre_Tips; - self.contentSize = CGSizeMake(200, 20); - self.height = 20 + CONTENT_PADDING_V_TOTAL; - self.isHiddenAvatar = YES; - } - return self; -} - -- (NSString *)cellStowardsisfperformance:(CommunicationBaseMatrix *)model { - return @"CommunicationTipsRegard"; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationTweetMatrix.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationTweetMatrix.h deleted file mode 100644 index 3388292f..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationTweetMatrix.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// CommunicationTweetMatrix.h -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationBaseMatrix.h" - -NS_ASSUME_NONNULL_BEGIN -@class SatisfactionTweetMatrix; -@interface CommunicationTweetMatrix : CommunicationBaseMatrix -@property (nonatomic,strong) SatisfactionTweetMatrix *tweetInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationTweetMatrix.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationTweetMatrix.m deleted file mode 100644 index fbf6cf90..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationTweetMatrix.m +++ /dev/null @@ -1,52 +0,0 @@ -// -// CommunicationTweetMatrix.m -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationTweetMatrix.h" -#import "AttachmentMatrix.h" -#import "SatisfactionTweetMatrix.h" -#import "NSObject+MJExtension.h" -@implementation CommunicationTweetMatrix - -- (instancetype)initWithMessage:(NIMMessage *)message { - if (self = [super initWithMessage:message]) { - self.messageType = InterlocutionCommunicationGenre_Custom; - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - AttachmentMatrix * attach = obj.attachment; - SatisfactionTweetMatrix * model = [SatisfactionTweetMatrix mtowardsrixAboutJSON:attach.data]; - self.tweetInfo = model; - CGFloat oneHeight = [YMLocalizedString(@"Message_Tweet_Model_0") boundingRectWithSize:CGSizeMake(240, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin - attributes:[self communictowardsionEssayTowardstibutes:[UIFont systemFontOfSize:16]] context:nil].size.height + 2.5; - - CGFloat titleHeight = [model.title boundingRectWithSize:CGSizeMake(240, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin - attributes:[self communictowardsionEssayTowardstibutes:[UIFont systemFontOfSize:16]] context:nil].size.height; - if (titleHeight <= oneHeight * 2) { - titleHeight = titleHeight + 5; - } else { - titleHeight = oneHeight * 2; - } - CGFloat desHeight = [model.desc boundingRectWithSize:CGSizeMake(240, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin - attributes:[self communictowardsionEssayTowardstibutes:[UIFont systemFontOfSize:13]] context:nil].size.height; - self.height = titleHeight + desHeight + 85 + 20 + 1 + 35 + MESSAGE_PADDING * 2 + CONTENT_PADDING_V_TOTAL; - } - return self; -} - -- (NSDictionary *)communictowardsionEssayTowardstibutes:(UIFont *)font { - NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; - [paragraphStyle setLineSpacing:2.5]; - return @{ - NSFontAttributeName:font, - NSParagraphStyleAttributeName: paragraphStyle - }; -} - - -- (NSString *)cellStowardsisfperformance:(CommunicationBaseMatrix *)model { - return @"CommunicationSatisfactionTweetRegard"; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationUnSupportMatrix.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationUnSupportMatrix.h deleted file mode 100644 index ac37c48c..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationUnSupportMatrix.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// CommunicationUnSupportMatrix.h -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationBaseMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationUnSupportMatrix : CommunicationBaseMatrix - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationUnSupportMatrix.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationUnSupportMatrix.m deleted file mode 100644 index 01c8088a..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationUnSupportMatrix.m +++ /dev/null @@ -1,30 +0,0 @@ -// -// CommunicationUnSupportMatrix.m -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationUnSupportMatrix.h" - -@implementation CommunicationUnSupportMatrix - - -- (instancetype)initWithMessage:(NIMMessage *)message { - if (self = [super initWithMessage:message]) { - self.messageType = InterlocutionCommunicationGenre_Time; - NSString * communicationEssay = YMLocalizedString(@"Message_Un_Support_Model_0"); - if (communicationEssay.length > 0) { - CGSize size = [communicationEssay boundingRectWithSize:CGSizeMake(150, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13]} context:nil].size; - self.contentSize = CGSizeMake(size.width + MESSAGE_PADDING* 2, size.height + MESSAGE_PADDING * 2); - self.height = size.height + MESSAGE_PADDING * 2 + CONTENT_PADDING_V_TOTAL; - } - } - return self; -} - -- (NSString *)cellStowardsisfperformance:(CommunicationBaseMatrix *)model { - return @"CommunicationSatisfactionUnSupportRegard"; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationUnfoildEnergeticMatrix.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationUnfoildEnergeticMatrix.h deleted file mode 100644 index 03318e5e..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationUnfoildEnergeticMatrix.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// CommunicationUnfoildEnergeticMatrix.h -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationBaseMatrix.h" - -NS_ASSUME_NONNULL_BEGIN -@class SatisfactionUnfoildEnergeticAbstractMatrix; -@interface CommunicationUnfoildEnergeticMatrix : CommunicationBaseMatrix -@property (nonatomic,strong) SatisfactionUnfoildEnergeticAbstractMatrix *userInfo; -@property (nonatomic,strong) NSString *avatar; -@property (nonatomic,strong) NSString *nick; -@property (nonatomic,strong) NSString *uid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationUnfoildEnergeticMatrix.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationUnfoildEnergeticMatrix.m deleted file mode 100644 index 8917e570..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationUnfoildEnergeticMatrix.m +++ /dev/null @@ -1,37 +0,0 @@ -// -// CommunicationUnfoildEnergeticMatrix.m -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationUnfoildEnergeticMatrix.h" -#import "AttachmentMatrix.h" -#import "SatisfactionUnfoildEnergeticAbstractMatrix.h" -#import "NSObject+MJExtension.h" -@implementation CommunicationUnfoildEnergeticMatrix - -- (instancetype)initWithMessage:(NIMMessage *)message { - if (self = [super initWithMessage:message]) { - self.messageType = InterlocutionCommunicationGenre_Custom; - self.contentSize = CGSizeMake(200, 50); - self.height = (50 + CONTENT_PADDING_V_TOTAL + MESSAGE_PADDING * 2); - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - AttachmentMatrix * attach = obj.attachment; - SatisfactionUnfoildEnergeticAbstractMatrix *info = [SatisfactionUnfoildEnergeticAbstractMatrix mtowardsrixAboutImpactbasket:attach.data]; - self.userInfo = info; - self.uid = info.uid; - if (info.userVo.avatar.length > 0 && info.userVo.nick.length > 0) { - self.avatar = info.userVo.avatar; - self.nick = [NSString stringWithFormat:YMLocalizedString(@"Message_Open_Live_Model_0"), info.userVo.nick]; - } - } - return self; -} - -- (NSString *)cellStowardsisfperformance:(CommunicationBaseMatrix *)model { - return @"CommunicationSatisfactionUnfoildEnergeticRegard"; -} - - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationUnionMatrix.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationUnionMatrix.h deleted file mode 100644 index 3670c6ad..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationUnionMatrix.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// CommunicationUnionMatrix.h -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationBaseMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationUnionMatrix : CommunicationBaseMatrix - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationUnionMatrix.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationUnionMatrix.m deleted file mode 100644 index b5a60910..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationUnionMatrix.m +++ /dev/null @@ -1,72 +0,0 @@ -// -// CommunicationUnionMatrix.m -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationUnionMatrix.h" -#import -#import "AttachmentMatrix.h" -#import "UnionCommunicationMatrix.h" -#import "DJDKMIMOMColor.h" -#import "NSObject+MJExtension.h" -@implementation CommunicationUnionMatrix - -- (instancetype)initWithMessage:(NIMMessage *)message { - if (self = [super initWithMessage:message]) { - self.messageType = InterlocutionCommunicationGenre_Custom; - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - AttachmentMatrix * attach = obj.attachment; - UnionCommunicationMatrix * info = [UnionCommunicationMatrix mtowardsrixAboutImpactbasket:attach.data]; - NSMutableAttributedString *attr = [[NSMutableAttributedString alloc]init]; - UnionCommunicationProgrammingMatrix *layout = info.layout; - for (UnionCommunicationProgrammingAbstractMatrix *params in layout.contents) { - if (params.content.length > 0) { - if ([params.content containsString:@"/r/n"]) { - params.content = @"\r\n"; - } - NSMutableAttributedString *subAttr = [[NSMutableAttributedString alloc]initWithString:params.content]; - if (params.fontSize > 0) { - [subAttr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:params.fontSize weight:params.fontBold?UIFontWeightBold:UIFontWeightRegular] range:NSMakeRange(0, subAttr.length)]; - } - - if (params.fontColor.length > 0) { - [subAttr addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor colorAboutHexBWSttr:params.fontColor] range:NSMakeRange(0, subAttr.length)]; - } - [attr appendAttributedString:subAttr]; - } - } - attr.yy_lineSpacing = 5; - CGSize maxSize = CGSizeMake(230 - MESSAGE_PADDING * 2, CGFLOAT_MAX); - YYTextLayout * contentLayout = [YYTextLayout layoutWithContainerSize:maxSize text:attr]; - - CGFloat contentHeight = contentLayout.textBoundingSize.height + 5 + 20 + 15 + 15 + MESSAGE_PADDING; - - BOOL isCommonNotice = (attach.second == Custom_Message_Sub_Hall_Notice || attach.second == Custom_Message_Sub_Hall_Become_Hall); - if (!isCommonNotice) { - contentHeight += (10+44); - } - self.height = contentHeight + CONTENT_PADDING_V_TOTAL; - self.contentSize = CGSizeMake(CONTENT_WIDTH_MAX, contentHeight + 20 + 15 + 15); - - } - return self; -} - -- (NSDictionary *)communictowardsionEssayTowardstibutes { - UIFont *font = [UIFont systemFontOfSize:13.f]; - NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; - [paragraphStyle setLineSpacing:2.5]; - return @{ - NSFontAttributeName:font, - NSParagraphStyleAttributeName: paragraphStyle - }; -} - -- (NSString *)cellStowardsisfperformance:(CommunicationBaseMatrix *)model { - return @"CommunicationSatisfactionUnionRegard"; -} - - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationVenturePrecautiousMatrix.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationVenturePrecautiousMatrix.h deleted file mode 100644 index 8358d17e..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationVenturePrecautiousMatrix.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// CommunicationVenturePrecautiousMatrix.h -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationBaseMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationVenturePrecautiousMatrix : CommunicationBaseMatrix - -@property (nonatomic,strong) NSAttributedString *attributedText; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationVenturePrecautiousMatrix.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationVenturePrecautiousMatrix.m deleted file mode 100644 index 2d3c2554..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationVenturePrecautiousMatrix.m +++ /dev/null @@ -1,65 +0,0 @@ -// -// CommunicationVenturePrecautiousMatrix.m -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationVenturePrecautiousMatrix.h" -#import -#import "AttachmentMatrix.h" -#import "SatisfactionRistPrecautiousMatrix.h" -#import "NSObject+MJExtension.h" -#import "DJDKMIMOMColor.h" -#import "YUMITissueRegardGovernancer.h" -#import "XCCurrentVCStackExecutive.h" -#import "YUMIHtmlUrl.h" -@implementation CommunicationVenturePrecautiousMatrix -- (instancetype)initWithMessage:(NIMMessage *)message { - if (self = [super initWithMessage:message]) { - self.messageType = InterlocutionCommunicationGenre_Custom; - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - AttachmentMatrix * attach = obj.attachment; - SatisfactionRistPrecautiousMatrix * model = [SatisfactionRistPrecautiousMatrix mtowardsrixAboutImpactbasket:attach.data]; - NSString * text = model.content; - if (text.length <= 0) { - text = @""; - } - - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:text attributes:[self communictowardsionEssayTowardstibutes]]; - NSRange range = [text rangeOfString:@"《整治网络直播乱象》"]; - if ((range.location + range.length) <= text.length) { - [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor aplictowardsionUnderlinePrettify] range:range]; - [attribute yy_setTextHighlightRange:range color:nil backgroundColor:nil tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { - YUMITissueRegardGovernancer * webVewC = [[YUMITissueRegardGovernancer alloc] init]; - webVewC.url = URLWithType(kNetworkRenovateURL); - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:webVewC animated:YES]; - }]; - } - self.isHiddenAvatar = YES; - self.attributedText = attribute; - CGSize dstRect = CGSizeMake(CONTENT_WIDTH_MAX - MESSAGE_PADDING * 2, MAXFLOAT); - CGSize msgSize = [text boundingRectWithSize:dstRect options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine attributes:[self communictowardsionEssayTowardstibutes] context:nil].size; - self.contentSize = CGSizeMake(msgSize.width + MESSAGE_PADDING * 2, msgSize.height + MESSAGE_PADDING * 2); - self.height = msgSize.height + MESSAGE_PADDING * 2 + CONTENT_PADDING_V_TOTAL; - } - return self; -} - - -- (NSDictionary *)communictowardsionEssayTowardstibutes { - UIFont *font = [UIFont systemFontOfSize:13.f]; - NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; - [paragraphStyle setLineSpacing:2.5]; - return @{ - NSFontAttributeName:font, - NSParagraphStyleAttributeName: paragraphStyle - }; -} - - - -- (NSString *)cellStowardsisfperformance:(CommunicationBaseMatrix *)model { - return @"CommunicationSatisfactionVenturePrecautiousRegard"; -} -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationVocalmusicMatrix.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationVocalmusicMatrix.h deleted file mode 100644 index 84a54466..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationVocalmusicMatrix.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// CommunicationVocalmusicMatrix.h -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationBaseMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface CommunicationVocalmusicMatrix : CommunicationBaseMatrix - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationVocalmusicMatrix.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationVocalmusicMatrix.m deleted file mode 100644 index dc5c369e..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/CommunicationVocalmusicMatrix.m +++ /dev/null @@ -1,29 +0,0 @@ -// -// CommunicationVocalmusicMatrix.m -// YUMI -// -// Created by YUMI on 2023/1/30. -// - -#import "CommunicationVocalmusicMatrix.h" - -@implementation CommunicationVocalmusicMatrix -- (instancetype)initWithMessage:(NIMMessage *)message { - if (self = [super initWithMessage:message]) { - self.messageType = InterlocutionCommunicationGenre_Audio; - NSInteger audioContentHeight = 30; - NIMAudioObject *audioContent = (NIMAudioObject*)[message messageObject]; - CGFloat value = 2*atan((audioContent.duration/1000.0-1)/10.0)/M_PI; - NSInteger audioContentMinWidth = (CONTENT_WIDTH_MAX - 180); - NSInteger audioContentMaxWidth = (CONTENT_WIDTH_MAX - 100); - CGFloat audioWidth = (audioContentMaxWidth - audioContentMinWidth)* value + audioContentMinWidth; - self.contentSize = CGSizeMake(audioWidth, audioContentHeight); - self.height = (audioContentHeight + CONTENT_PADDING_V_TOTAL+ MESSAGE_PADDING * 2); - } - return self; -} - -- (NSString *)cellStowardsisfperformance:(CommunicationBaseMatrix *)model { - return @"CommunicationConentVocalmusicRegard"; -} -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageApplicationShareModel.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageApplicationShareModel.h new file mode 100644 index 00000000..5ee22c3a --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageApplicationShareModel.h @@ -0,0 +1,17 @@ +// +// MessageApplicationShareModel.h +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageBaseModel.h" + +NS_ASSUME_NONNULL_BEGIN +@class ContentApplicationShareModel; +@interface MessageApplicationShareModel : MessageBaseModel +///分享的信息 +@property (nonatomic,strong) ContentApplicationShareModel *shareInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageApplicationShareModel.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageApplicationShareModel.m new file mode 100644 index 00000000..3eb1a528 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageApplicationShareModel.m @@ -0,0 +1,31 @@ +// +// MessageApplicationShareModel.m +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageApplicationShareModel.h" +#import "AttachmentModel.h" +#import "ContentApplicationShareModel.h" +#import "NSObject+MJExtension.h" +@implementation MessageApplicationShareModel + +- (instancetype)initWithMessage:(NIMMessage *)message { + if (self = [super initWithMessage:message]) { + self.messageType = SessionMessageType_Custom; + self.contentSize = CGSizeMake(200, 50); + self.height = 90 + CONTENT_PADDING_V_TOTAL; + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + AttachmentModel * attach = obj.attachment; + ContentApplicationShareModel *info = [ContentApplicationShareModel modelWithDictionary:attach.data]; + self.shareInfo = info; + } + return self; +} + +- (NSString *)cellContent:(MessageBaseModel *)model { + return @"MessageContentApplicationShareView"; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageAudioModel.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageAudioModel.h new file mode 100644 index 00000000..887fa167 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageAudioModel.h @@ -0,0 +1,16 @@ +// +// MessageAudioModel.h +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageBaseModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageAudioModel : MessageBaseModel + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageAudioModel.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageAudioModel.m new file mode 100644 index 00000000..3627bcce --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageAudioModel.m @@ -0,0 +1,29 @@ +// +// MessageAudioModel.m +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageAudioModel.h" + +@implementation MessageAudioModel +- (instancetype)initWithMessage:(NIMMessage *)message { + if (self = [super initWithMessage:message]) { + self.messageType = SessionMessageType_Audio; + NSInteger audioContentHeight = 30; + NIMAudioObject *audioContent = (NIMAudioObject*)[message messageObject]; + CGFloat value = 2*atan((audioContent.duration/1000.0-1)/10.0)/M_PI; + NSInteger audioContentMinWidth = (CONTENT_WIDTH_MAX - 180); + NSInteger audioContentMaxWidth = (CONTENT_WIDTH_MAX - 100); + CGFloat audioWidth = (audioContentMaxWidth - audioContentMinWidth)* value + audioContentMinWidth; + self.contentSize = CGSizeMake(audioWidth, audioContentHeight); + self.height = (audioContentHeight + CONTENT_PADDING_V_TOTAL+ MESSAGE_PADDING * 2); + } + return self; +} + +- (NSString *)cellContent:(MessageBaseModel *)model { + return @"MessageConentAudioView"; +} +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageBaseModel.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageBaseModel.h new file mode 100644 index 00000000..11f2aefa --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageBaseModel.h @@ -0,0 +1,55 @@ +// +// MessageBaseModel.h +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import +#import +#import "MessageContentProtocol.h" +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, SessionMessageType) { + ///文字 + SessionMessageType_Text = 1, + ///图片 + SessionMessageType_Image, + ///语音 + SessionMessageType_Audio, + ///tips + SessionMessageType_Tips, + ///自定义 + SessionMessageType_Custom, + ///时间戳 + SessionMessageType_Time, + ///撤回消息 + SessionMessageType_Revoke, + ///不支持的消息 + SessionMessageType_UnSupport +}; + +@interface MessageBaseModel : NSObject +///当前的消息类型 +@property (nonatomic,strong) NIMMessage *message; +///大小 +@property (nonatomic,assign) CGSize contentSize; +///高度 +@property (nonatomic,assign) CGFloat height; +///昵称 +@property (nonatomic,strong) NSString *nick; +///头像 +@property (nonatomic,strong) NSString *avatar; +///是否是发出的 +@property (nonatomic,assign) BOOL isOutgoingMsg; +/// +@property (nonatomic,assign) BOOL isHiddenAvatar; +///消息的类型 +@property (nonatomic,assign) SessionMessageType messageType; +///初始化一个message +- (instancetype)initWithMessage:(NIMMessage *)message; + +- (NSString *)cellContent:(MessageBaseModel *)model; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageBaseModel.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageBaseModel.m new file mode 100644 index 00000000..39e69d58 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageBaseModel.m @@ -0,0 +1,25 @@ +// +// MessageBaseModel.m +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageBaseModel.h" + +@implementation MessageBaseModel + +- (instancetype)initWithMessage:(NIMMessage *)message { + if (self = [super init]) { + self.message = message; + self.isHiddenAvatar = NO; + self.messageType = SessionMessageType_Text; + } + return self; +} + +- (NSString *)cellContent:(MessageBaseModel *)model { + return @"MessageContentText"; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageFindNewGreetModel.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageFindNewGreetModel.h new file mode 100644 index 00000000..db0ab08b --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageFindNewGreetModel.h @@ -0,0 +1,17 @@ +// +// MessageFindNewGreetModel.h +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageBaseModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageFindNewGreetModel : MessageBaseModel + +@property (nonatomic,strong) NSAttributedString *attributedText; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageFindNewGreetModel.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageFindNewGreetModel.m new file mode 100644 index 00000000..387bd1ea --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageFindNewGreetModel.m @@ -0,0 +1,48 @@ +// +// MessageFindNewGreetModel.m +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageFindNewGreetModel.h" +#import "AttachmentModel.h" +#import "FindNewGreetMessageModel.h" +#import "NSObject+MJExtension.h" +@implementation MessageFindNewGreetModel +- (instancetype)initWithMessage:(NIMMessage *)message { + if (self = [super initWithMessage:message]) { + self.messageType = SessionMessageType_Custom; + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + AttachmentModel * attach = obj.attachment; + FindNewGreetMessageModel * model = [FindNewGreetMessageModel modelWithDictionary:attach.data]; + NSString * text = model.message; + if (text.length <= 0) { + text = @""; + } + CGSize dstRect = CGSizeMake(CONTENT_WIDTH_MAX - MESSAGE_PADDING * 2, MAXFLOAT); + + CGSize msgSize = [text boundingRectWithSize:dstRect options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine attributes:[self messageTextAttibutes] context:nil].size; + self.attributedText = [[NSMutableAttributedString alloc] initWithString:text attributes:[self messageTextAttibutes]]; + self.contentSize = CGSizeMake(msgSize.width + MESSAGE_PADDING * 2, msgSize.height + MESSAGE_PADDING * 2); + self.height = msgSize.height + MESSAGE_PADDING * 2 + CONTENT_PADDING_V_TOTAL; + } + return self; +} + +- (NSDictionary *)messageTextAttibutes { + UIFont *font = [UIFont systemFontOfSize:13.f]; + NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; + [paragraphStyle setLineSpacing:2.5]; + return @{ + NSFontAttributeName:font, + NSParagraphStyleAttributeName: paragraphStyle + }; +} + + + +- (NSString *)cellContent:(MessageBaseModel *)model { + return @"MessageContentFindNewGreetView"; +} +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageGiftModel.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageGiftModel.h new file mode 100644 index 00000000..96772bd6 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageGiftModel.h @@ -0,0 +1,19 @@ +// +// MessageGiftModel.h +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageBaseModel.h" +@class GiftInfoModel; +NS_ASSUME_NONNULL_BEGIN + +@interface MessageGiftModel : MessageBaseModel +///礼物信息 +@property (nonatomic,strong) GiftInfoModel *giftInfo; +///礼物个数 +@property (nonatomic,assign) NSInteger giftNum; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageGiftModel.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageGiftModel.m new file mode 100644 index 00000000..ac2218d3 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageGiftModel.m @@ -0,0 +1,37 @@ +// +// MessageGiftModel.m +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageGiftModel.h" +#import "GiftReceiveInfoModel.h" +#import "NSObject+MJExtension.h" +#import "XPGiftStorage.h" +#import "AttachmentModel.h" +@implementation MessageGiftModel + +- (instancetype)initWithMessage:(NIMMessage *)message { + if (self = [super initWithMessage:message]) { + self.messageType = SessionMessageType_Custom; + self.contentSize = CGSizeMake(185 + MESSAGE_PADDING * 2, 80); + self.height = (CONTENT_PADDING_V_TOTAL + 80 + MESSAGE_PADDING * 2); + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + AttachmentModel * attach = obj.attachment; + GiftReceiveInfoModel *info = [GiftReceiveInfoModel modelWithDictionary:attach.data]; + GiftInfoModel *giftInfo1 = info.gift == nil ? info.giftInfo : info.gift; + if (giftInfo1 == nil) { + giftInfo1 = [[XPGiftStorage shareStorage] findGiftInfo:info.giftId]; + } + self.giftNum = info.giftNum; + self.giftInfo = giftInfo1; + } + return self; +} + +- (NSString *)cellContent:(MessageBaseModel *)model { + return @"MessageContentGiftView"; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageGuildModel.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageGuildModel.h new file mode 100644 index 00000000..540e076a --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageGuildModel.h @@ -0,0 +1,16 @@ +// +// MessageGuildModel.h +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageBaseModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageGuildModel : MessageBaseModel + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageGuildModel.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageGuildModel.m new file mode 100644 index 00000000..9a5af313 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageGuildModel.m @@ -0,0 +1,72 @@ +// +// MessageGuildModel.m +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageGuildModel.h" +#import +#import "AttachmentModel.h" +#import "GuildMessageModel.h" +#import "DJDKMIMOMColor.h" +#import "NSObject+MJExtension.h" +@implementation MessageGuildModel + +- (instancetype)initWithMessage:(NIMMessage *)message { + if (self = [super initWithMessage:message]) { + self.messageType = SessionMessageType_Custom; + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + AttachmentModel * attach = obj.attachment; + GuildMessageModel * info = [GuildMessageModel modelWithDictionary:attach.data]; + NSMutableAttributedString *attr = [[NSMutableAttributedString alloc]init]; + GuildMessageLayoutModel *layout = info.layout; + for (GuildMessageLayoutInfoModel *params in layout.contents) { + if (params.content.length > 0) { + if ([params.content containsString:@"/r/n"]) { + params.content = @"\r\n"; + } + NSMutableAttributedString *subAttr = [[NSMutableAttributedString alloc]initWithString:params.content]; + if (params.fontSize > 0) { + [subAttr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:params.fontSize weight:params.fontBold?UIFontWeightBold:UIFontWeightRegular] range:NSMakeRange(0, subAttr.length)]; + } + + if (params.fontColor.length > 0) { + [subAttr addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor colorWithHexString:params.fontColor] range:NSMakeRange(0, subAttr.length)]; + } + [attr appendAttributedString:subAttr]; + } + } + attr.yy_lineSpacing = 5; + CGSize maxSize = CGSizeMake(230 - MESSAGE_PADDING * 2, CGFLOAT_MAX); + YYTextLayout * contentLayout = [YYTextLayout layoutWithContainerSize:maxSize text:attr]; + ///顶部的距离 20 title的高度15 title到content的高度 + CGFloat contentHeight = contentLayout.textBoundingSize.height + 5 + 20 + 15 + 15 + MESSAGE_PADDING; + ///44 底部操作栏的高度 + BOOL isCommonNotice = (attach.second == Custom_Message_Sub_Hall_Notice || attach.second == Custom_Message_Sub_Hall_Become_Hall); + if (!isCommonNotice) { + contentHeight += (10+44); + } + self.height = contentHeight + CONTENT_PADDING_V_TOTAL; + self.contentSize = CGSizeMake(CONTENT_WIDTH_MAX, contentHeight + 20 + 15 + 15); + + } + return self; +} + +- (NSDictionary *)messageTextAttibutes { + UIFont *font = [UIFont systemFontOfSize:13.f]; + NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; + [paragraphStyle setLineSpacing:2.5]; + return @{ + NSFontAttributeName:font, + NSParagraphStyleAttributeName: paragraphStyle + }; +} + +- (NSString *)cellContent:(MessageBaseModel *)model { + return @"MessageContentGuildView"; +} + + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageImageModel.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageImageModel.h new file mode 100644 index 00000000..83cb31c3 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageImageModel.h @@ -0,0 +1,17 @@ +// +// MessageImageModel.h +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageBaseModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageImageModel : MessageBaseModel +@property (nonatomic,strong) UIImage *image; +@property (nonatomic,copy) NSString *imageUrl; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageImageModel.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageImageModel.m new file mode 100644 index 00000000..6386275c --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageImageModel.m @@ -0,0 +1,47 @@ +// +// MessageImageModel.m +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageImageModel.h" +#import "UIImage+Utils.h" +#define MESSAGE_IMAGE_MAX_SIZE (CONTENT_WIDTH_MAX) +#define MESSAGE_IMAGE_Min_SIZE (CONTENT_WIDTH_MAX -100) + +@implementation MessageImageModel +- (instancetype)initWithMessage:(NIMMessage *)message { + if (self = [super initWithMessage:message]) { + self.messageType = SessionMessageType_Image; + NIMImageObject * imageObject = (NIMImageObject*)message.messageObject; + CGFloat attachmentImageMinWidth = (MESSAGE_IMAGE_Min_SIZE); + CGFloat attachmentImageMinHeight = (MESSAGE_IMAGE_Min_SIZE); + CGFloat attachmemtImageMaxWidth = (MESSAGE_IMAGE_MAX_SIZE); + CGFloat attachmentImageMaxHeight = (MESSAGE_IMAGE_MAX_SIZE); + CGSize imageSize; + if (!CGSizeEqualToSize(imageObject.size, CGSizeZero)) { + imageSize = imageObject.size; + }else { + UIImage *image = [UIImage imageWithContentsOfFile:imageObject.thumbPath]; + imageSize = image ? image.size : CGSizeZero; + } + CGSize contentSize = [UIImage sizeWithImageOriginSize:imageSize + minSize:CGSizeMake(attachmentImageMinWidth, attachmentImageMinHeight) + maxSize:CGSizeMake(attachmemtImageMaxWidth, attachmentImageMaxHeight)]; + self.contentSize = contentSize; + self.height = contentSize.height + MESSAGE_PADDING * 2 + CONTENT_PADDING_V_TOTAL; + UIImage *image = [UIImage imageWithContentsOfFile:imageObject.thumbPath]; + if (image) { + self.image = image; + }else { + self.imageUrl = imageObject.url; + } + } + return self; +} + +- (NSString *)cellContent:(MessageBaseModel *)model { + return @"MessageContentImage"; +} +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageLevelUpgradeModel.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageLevelUpgradeModel.h new file mode 100644 index 00000000..2fc34cce --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageLevelUpgradeModel.h @@ -0,0 +1,19 @@ +// +// MessageLevelUpgradeModel.h +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageBaseModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageLevelUpgradeModel : MessageBaseModel +///等级的图片 +@property (nonatomic,strong) NSString *imageName; +///等级 +@property (nonatomic,strong) NSString *level; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageLevelUpgradeModel.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageLevelUpgradeModel.m new file mode 100644 index 00000000..3194fd12 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageLevelUpgradeModel.m @@ -0,0 +1,37 @@ +// +// MessageLevelUpgradeModel.m +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageLevelUpgradeModel.h" +#import "AttachmentModel.h" +#import "ContentLevelUpgradeModel.h" +#import "NSObject+MJExtension.h" +@implementation MessageLevelUpgradeModel + +- (instancetype)initWithMessage:(NIMMessage *)message { + if (self = [super initWithMessage:message]) { + self.messageType = SessionMessageType_Custom; + self.contentSize = CGSizeMake(220, 116); + self.height = 116 + CONTENT_PADDING_V_TOTAL; + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + AttachmentModel * attach = obj.attachment; + ContentLevelUpgradeModel * model = [ContentLevelUpgradeModel modelWithJSON:attach.data]; + if (attach.second == Custom_Message_Sub_User_UpGrade_Charm) { + self.imageName = @"message_content_upgrade_charm"; + self.level = [NSString stringWithFormat:@"恭喜!您的魅力等级已到达Lv%@", model.levelName]; + } else { + self.imageName = @"message_content_upgrade_expre"; + self.level = [NSString stringWithFormat:@"恭喜!您的等级已到达Lv%@", model.levelName]; + } + } + return self; +} + +- (NSString *)cellContent:(MessageBaseModel *)model { + return @"MessageContentLevelUpgradeView"; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageMonentsAutoModel.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageMonentsAutoModel.h new file mode 100644 index 00000000..656cdc25 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageMonentsAutoModel.h @@ -0,0 +1,18 @@ +// +// MessageMonentsAutoModel.h +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageBaseModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageMonentsAutoModel : MessageBaseModel +@property (nonatomic,strong) NSString *title; +@property (nonatomic,strong) NSString *time; +@property (nonatomic,strong) NSAttributedString *attributedText; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageMonentsAutoModel.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageMonentsAutoModel.m new file mode 100644 index 00000000..916f1f90 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageMonentsAutoModel.m @@ -0,0 +1,46 @@ +// +// MessageMonentsAutoModel.m +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageMonentsAutoModel.h" +#import "AttachmentModel.h" +#import "DJDKMIMOMColor.h" +#import "GuildMessageModel.h" +#import "NSObject+MJExtension.h" +@implementation MessageMonentsAutoModel + +- (instancetype)initWithMessage:(NIMMessage *)message { + if (self = [super initWithMessage:message]) { + self.messageType = SessionMessageType_Custom; + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + AttachmentModel * attach = obj.attachment; + NSDictionary * dic = attach.data; + GuildMessageModel *model = [GuildMessageModel modelWithDictionary:dic]; + GuildMessageLayoutModel * layout = model.layout; + if (layout) { + self.title = layout.title.content; + self.time = layout.time.content; + NSMutableAttributedString *msgString = [[NSMutableAttributedString alloc] init]; + + [layout.contents enumerateObjectsUsingBlock:^(GuildMessageLayoutInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:obj.content]; + [string addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:obj.fontSize] range:NSMakeRange(0, string.length)]; + [string addAttribute:NSForegroundColorAttributeName value:UIColorFromRGB(0x333333) range:NSMakeRange(0, string.length)]; + [msgString appendAttributedString:string]; + }]; + self.attributedText = msgString; + } + self.contentSize = CGSizeMake(250, 120); + self.height = (CONTENT_PADDING_V_TOTAL + 120);; + } + return self; +} + +- (NSString *)cellContent:(MessageBaseModel *)model { + return @"MessageContentMonentsAutoView"; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageMonentsModel.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageMonentsModel.h new file mode 100644 index 00000000..96559d23 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageMonentsModel.h @@ -0,0 +1,20 @@ +// +// MessageMonentsModel.h +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageBaseModel.h" + +NS_ASSUME_NONNULL_BEGIN +@class MonentsInfoModel; +@interface MessageMonentsModel : MessageBaseModel +@property (nonatomic,strong) MonentsInfoModel *monentsInfo; +///图片的链接 +@property (nonatomic,strong) NSString *imageUrl; +///标题 +@property (nonatomic,strong) NSString *title; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageMonentsModel.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageMonentsModel.m new file mode 100644 index 00000000..4dbf4f87 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageMonentsModel.m @@ -0,0 +1,49 @@ +// +// MessageMonentsModel.m +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageMonentsModel.h" +#import "AttachmentModel.h" +#import "MonentsInfoModel.h" +#import "NSObject+MJExtension.h" +@implementation MessageMonentsModel +- (instancetype)initWithMessage:(NIMMessage *)message { + if (self = [super initWithMessage:message]) { + self.messageType = SessionMessageType_Custom; + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + AttachmentModel * attach = obj.attachment; + NSDictionary * dic = attach.data; + self.monentsInfo = [MonentsInfoModel modelWithDictionary:dic]; + self.imageUrl = dic[@"imageUrl"]; + NSString * nick = self.monentsInfo.nick; + if (nick.length > 6) { + nick = [nick substringToIndex:6]; + } + NSString * title = [NSString stringWithFormat:@"%@%@",nick, YMLocalizedString(@"MessageMonentsModel0")]; + self.title = dic[@"title"] ? dic[@"title"] : title; + self.contentSize = CGSizeMake(250, 60); + self.height = (CONTENT_PADDING_V_TOTAL + 60);; + } + return self; +} + + +- (NSDictionary *)messageTextAttibutes { + UIFont *font = [UIFont systemFontOfSize:13.f]; + NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; + [paragraphStyle setLineSpacing:2.5]; + return @{ + NSFontAttributeName:font, + NSParagraphStyleAttributeName: paragraphStyle + }; +} + + + +- (NSString *)cellContent:(MessageBaseModel *)model { + return @"MessageContentMonentsView"; +} +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageOpenLiveModel.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageOpenLiveModel.h new file mode 100644 index 00000000..e8f90630 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageOpenLiveModel.h @@ -0,0 +1,23 @@ +// +// MessageOpenLiveModel.h +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageBaseModel.h" + +NS_ASSUME_NONNULL_BEGIN +@class ContentOpenLiveInfoModel; +@interface MessageOpenLiveModel : MessageBaseModel +///用户信息 +@property (nonatomic,strong) ContentOpenLiveInfoModel *userInfo; +///头像 +@property (nonatomic,strong) NSString *avatar; +///昵称 +@property (nonatomic,strong) NSString *nick; +///用户信息 +@property (nonatomic,strong) NSString *uid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageOpenLiveModel.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageOpenLiveModel.m new file mode 100644 index 00000000..c4c7873c --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageOpenLiveModel.m @@ -0,0 +1,37 @@ +// +// MessageOpenLiveModel.m +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageOpenLiveModel.h" +#import "AttachmentModel.h" +#import "ContentOpenLiveInfoModel.h" +#import "NSObject+MJExtension.h" +@implementation MessageOpenLiveModel + +- (instancetype)initWithMessage:(NIMMessage *)message { + if (self = [super initWithMessage:message]) { + self.messageType = SessionMessageType_Custom; + self.contentSize = CGSizeMake(200, 50); + self.height = (50 + CONTENT_PADDING_V_TOTAL + MESSAGE_PADDING * 2); + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + AttachmentModel * attach = obj.attachment; + ContentOpenLiveInfoModel *info = [ContentOpenLiveInfoModel modelWithDictionary:attach.data]; + self.userInfo = info; + self.uid = info.uid; + if (info.userVo.avatar.length > 0 && info.userVo.nick.length > 0) { + self.avatar = info.userVo.avatar; + self.nick = [NSString stringWithFormat:YMLocalizedString(@"MessageOpenLiveModel0"), info.userVo.nick]; + } + } + return self; +} + +- (NSString *)cellContent:(MessageBaseModel *)model { + return @"MessageContentOpenLiveView"; +} + + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageRedPacketModel.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageRedPacketModel.h new file mode 100644 index 00000000..5f8ab7c3 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageRedPacketModel.h @@ -0,0 +1,16 @@ +// +// MessageRedPacketModel.h +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageBaseModel.h" + +NS_ASSUME_NONNULL_BEGIN +@class XPReceiveRedPacketModel; +@interface MessageRedPacketModel : MessageBaseModel +@property (nonatomic,strong) XPReceiveRedPacketModel *redInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageRedPacketModel.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageRedPacketModel.m new file mode 100644 index 00000000..e553fccd --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageRedPacketModel.m @@ -0,0 +1,31 @@ +// +// MessageRedPacketModel.m +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageRedPacketModel.h" +#import "AttachmentModel.h" +#import "XPReceiveRedPacketModel.h" +#import "NSObject+MJExtension.h" +@implementation MessageRedPacketModel + +- (instancetype)initWithMessage:(NIMMessage *)message { + if (self = [super initWithMessage:message]) { + self.messageType = SessionMessageType_Custom; + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + AttachmentModel * attach = obj.attachment; + XPReceiveRedPacketModel * info = [XPReceiveRedPacketModel modelWithJSON:attach.data]; + self.redInfo = info; + self.contentSize = CGSizeMake(260, 95); + self.height = (95 + CONTENT_PADDING_V_TOTAL); + } + return self; +} + +- (NSString *)cellContent:(MessageBaseModel *)model { + return @"MessageContentRedPacketView"; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageRevokeModel.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageRevokeModel.h new file mode 100644 index 00000000..bcb06d8f --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageRevokeModel.h @@ -0,0 +1,18 @@ +// +// MessageRevokeModel.h +// YUMI +// +// Created by YUMI on 2023/1/31. +// + +#import "MessageBaseModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageRevokeModel : MessageBaseModel + +///显示的内容 +@property (nonatomic,strong) NSString *title; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageRevokeModel.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageRevokeModel.m new file mode 100644 index 00000000..eff9cfce --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageRevokeModel.m @@ -0,0 +1,31 @@ +// +// MessageRevokeModel.m +// YUMI +// +// Created by YUMI on 2023/1/31. +// + +#import "MessageRevokeModel.h" + +@implementation MessageRevokeModel + +- (instancetype)initWithMessage:(NIMMessage *)message { + if (self = [super initWithMessage:message]) { + self.messageType = SessionMessageType_Revoke; + NSString * messageText = YMLocalizedString(@"MessageRevokeModel0"); + self.title = messageText; + if (messageText.length > 0) { + CGSize size = [messageText boundingRectWithSize:CGSizeMake(150, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:10]} context:nil].size; + self.contentSize = CGSizeMake(size.width + 10, 15); + self.height = 15 + CONTENT_PADDING_V_TOTAL; + self.isHiddenAvatar = YES; + } + } + return self; +} + +- (NSString *)cellContent:(MessageBaseModel *)model { + return @"MessageContentRevokeView"; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageRiskAlertModel.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageRiskAlertModel.h new file mode 100644 index 00000000..8061d03a --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageRiskAlertModel.h @@ -0,0 +1,17 @@ +// +// MessageRiskAlertModel.h +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageBaseModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageRiskAlertModel : MessageBaseModel + +@property (nonatomic,strong) NSAttributedString *attributedText; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageRiskAlertModel.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageRiskAlertModel.m new file mode 100644 index 00000000..b7b142fe --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageRiskAlertModel.m @@ -0,0 +1,65 @@ +// +// MessageRiskAlertModel.m +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageRiskAlertModel.h" +#import +#import "AttachmentModel.h" +#import "ContentRistAlertModel.h" +#import "NSObject+MJExtension.h" +#import "DJDKMIMOMColor.h" +#import "XPWebViewController.h" +#import "XCCurrentVCStackManager.h" +#import "YUMIHtmlUrl.h" +@implementation MessageRiskAlertModel +- (instancetype)initWithMessage:(NIMMessage *)message { + if (self = [super initWithMessage:message]) { + self.messageType = SessionMessageType_Custom; + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + AttachmentModel * attach = obj.attachment; + ContentRistAlertModel * model = [ContentRistAlertModel modelWithDictionary:attach.data]; + NSString * text = model.content; + if (text.length <= 0) { + text = @""; + } + + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:text attributes:[self messageTextAttibutes]]; + NSRange range = [text rangeOfString:@"《整治网络直播乱象》"]; + if ((range.location + range.length) <= text.length) { + [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor appEmphasizeColor] range:range]; + [attribute yy_setTextHighlightRange:range color:nil backgroundColor:nil tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + webVC.url = URLWithType(kNetworkRenovateURL); + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:webVC animated:YES]; + }]; + } + self.isHiddenAvatar = YES; + self.attributedText = attribute; + CGSize dstRect = CGSizeMake(CONTENT_WIDTH_MAX - MESSAGE_PADDING * 2, MAXFLOAT); + CGSize msgSize = [text boundingRectWithSize:dstRect options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine attributes:[self messageTextAttibutes] context:nil].size; + self.contentSize = CGSizeMake(msgSize.width + MESSAGE_PADDING * 2, msgSize.height + MESSAGE_PADDING * 2); + self.height = msgSize.height + MESSAGE_PADDING * 2 + CONTENT_PADDING_V_TOTAL; + } + return self; +} + + +- (NSDictionary *)messageTextAttibutes { + UIFont *font = [UIFont systemFontOfSize:13.f]; + NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; + [paragraphStyle setLineSpacing:2.5]; + return @{ + NSFontAttributeName:font, + NSParagraphStyleAttributeName: paragraphStyle + }; +} + + + +- (NSString *)cellContent:(MessageBaseModel *)model { + return @"MessageContentRiskAlertView"; +} +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageSkillCardModel.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageSkillCardModel.h new file mode 100644 index 00000000..37607c5d --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageSkillCardModel.h @@ -0,0 +1,21 @@ +// +// MessageSkillCardModel.h +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageBaseModel.h" + +NS_ASSUME_NONNULL_BEGIN +@class GuildMessageModel; +@interface MessageSkillCardModel : MessageBaseModel +///技能卡信息 +@property (nonatomic,strong) GuildMessageModel *guildInfo; +///文本消息 +@property (nonatomic,strong) NSAttributedString *attribute; +///文本的高度 +@property (nonatomic,assign) CGFloat textHeight; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageSkillCardModel.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageSkillCardModel.m new file mode 100644 index 00000000..1cd3b897 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageSkillCardModel.m @@ -0,0 +1,68 @@ +// +// MessageSkillCardModel.m +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageSkillCardModel.h" +#import +#import "AttachmentModel.h" +#import "GuildMessageModel.h" +#import "NSObject+MJExtension.h" +#import "DJDKMIMOMColor.h" +@implementation MessageSkillCardModel +- (instancetype)initWithMessage:(NIMMessage *)message { + if (self = [super initWithMessage:message]) { + self.messageType = SessionMessageType_Custom; + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + AttachmentModel * attach = obj.attachment; + GuildMessageModel * info = [GuildMessageModel modelWithDictionary:attach.data]; + self.guildInfo = info; + NSMutableAttributedString *attr = [[NSMutableAttributedString alloc]init]; + GuildMessageLayoutModel *layout = info.layout; + for (GuildMessageLayoutInfoModel *params in layout.contents) { + if (params.content.length > 0) { + if ([params.content containsString:@"/r/n"]) { + params.content = @"\r\n"; + } + NSMutableAttributedString *subAttr = [[NSMutableAttributedString alloc]initWithString:params.content]; + if (params.fontSize > 0) { + [subAttr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:params.fontSize weight:params.fontBold?UIFontWeightBold:UIFontWeightRegular] range:NSMakeRange(0, subAttr.length)]; + } + + if (params.fontColor.length > 0) { + [subAttr addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor colorWithHexString:params.fontColor] range:NSMakeRange(0, subAttr.length)]; + } + [attr appendAttributedString:subAttr]; + } + } + + attr.yy_lineSpacing = 5; + CGSize maxSize = CGSizeMake(CONTENT_WIDTH_MAX - MESSAGE_PADDING * 2, CGFLOAT_MAX); + YYTextLayout * contentLayout = [YYTextLayout layoutWithContainerSize:maxSize text:attr]; + self.attribute = attr; + ///顶部的距离 20 title的高度15 title到content的高度 + CGFloat contentHeight = contentLayout.textBoundingSize.height+ 20 + 15 + MESSAGE_PADDING * 4; + self.textHeight = contentLayout.textBoundingSize.height + 5; + self.height = contentHeight + CONTENT_PADDING_V_TOTAL; + } + return self; +} + +- (NSDictionary *)messageTextAttibutes:(UIFont *)font { + NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; + [paragraphStyle setLineSpacing:2.5]; + return @{ + NSFontAttributeName:font, + NSParagraphStyleAttributeName: paragraphStyle + }; +} + + +- (NSString *)cellContent:(MessageBaseModel *)model { + return @"MessageContentSkillCardView"; +} + + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTextClickModel.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTextClickModel.h new file mode 100644 index 00000000..60abd8d5 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTextClickModel.h @@ -0,0 +1,16 @@ +// +// MessageTextClickModel.h +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageBaseModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageTextClickModel : MessageBaseModel +@property (nonatomic,strong) NSAttributedString *attributedText; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTextClickModel.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTextClickModel.m new file mode 100644 index 00000000..928b7b0b --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTextClickModel.m @@ -0,0 +1,55 @@ +// +// MessageTextClickModel.m +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageTextClickModel.h" +#import "AttachmentModel.h" +@implementation MessageTextClickModel + +- (instancetype)initWithMessage:(NIMMessage *)message { + if (self = [super initWithMessage:message]) { + self.messageType = SessionMessageType_Custom; + + NSString * messageText = message.text; + if (message.messageType == NIMMessageTypeCustom) { + NIMCustomObject *obj = (NIMCustomObject *) message.messageObject; + AttachmentModel *attachment = (AttachmentModel *) obj.attachment; + if (attachment.first == CustomMessageType_Secretary) { + if (attachment.second == Custom_Message_Sub_Secretary_Router) { + messageText = attachment.data[@"msg"]; + } + } + } + if (!messageText) { + messageText = YMLocalizedString(@"MessageTextClickModel0"); + } + + CGSize dstRect = CGSizeMake(CONTENT_WIDTH_MAX - MESSAGE_PADDING * 2, MAXFLOAT); + + CGSize msgSize = [messageText boundingRectWithSize:dstRect options:NSStringDrawingUsesLineFragmentOrigin attributes:[self messageTextAttibutes] context:nil].size; + self.attributedText = [[NSAttributedString alloc] initWithString:messageText attributes:[self messageTextAttibutes]]; + self.height = msgSize.height + MESSAGE_PADDING * 2 + CONTENT_PADDING_V_TOTAL; + self.contentSize = CGSizeMake(msgSize.width + MESSAGE_PADDING * 2, msgSize.height + MESSAGE_PADDING * 2); + + } + return self; +} + +- (NSDictionary *)messageTextAttibutes { + UIFont *font = [UIFont systemFontOfSize:13.f]; + NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; + [paragraphStyle setLineSpacing:2.5]; + return @{ + NSFontAttributeName:font, + NSParagraphStyleAttributeName: paragraphStyle + }; +} + +- (NSString *)cellContent:(MessageBaseModel *)model { + return @"MessageContentTextClickable"; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTextModel.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTextModel.h new file mode 100644 index 00000000..82b64101 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTextModel.h @@ -0,0 +1,19 @@ +// +// MessageTextModel.h +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageBaseModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageTextModel : MessageBaseModel + +///富文本 +@property (nonatomic,strong) NSAttributedString *textAttribute; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTextModel.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTextModel.m new file mode 100644 index 00000000..0758fdc1 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTextModel.m @@ -0,0 +1,38 @@ +// +// MessageTextModel.m +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageTextModel.h" +#import "QEmotionHelper.h" +#import +@implementation MessageTextModel + +- (instancetype)initWithMessage:(NIMMessage *)message { + if (self = [super initWithMessage:message]) { + self.messageType = SessionMessageType_Text; + NSString * messageText = message.text; + if (!messageText) { + messageText = YMLocalizedString(@"MessageTextModel0"); + } + CGSize dstRect = CGSizeMake(CONTENT_WIDTH_MAX - MESSAGE_PADDING * 2, MAXFLOAT); + QEmotionHelper *faceManager = [QEmotionHelper sharedEmotionHelper]; + NSMutableAttributedString * attribute = [faceManager attributedStringByText:messageText font:[UIFont systemFontOfSize:13]]; + self.textAttribute = attribute; + YYTextContainer *container = [YYTextContainer containerWithSize:dstRect]; + container.maximumNumberOfRows = 0; + YYTextLayout *layout = [YYTextLayout layoutWithContainer:container text:attribute]; + CGFloat rowHeight = layout.textBoundingSize.height; + self.contentSize = CGSizeMake(layout.textBoundingSize.width + MESSAGE_PADDING* 2, layout.textBoundingSize.height + MESSAGE_PADDING * 2); + self.height = rowHeight + MESSAGE_PADDING * 2 + CONTENT_PADDING_V_TOTAL; + } + return self; +} + +- (NSString *)cellContent:(MessageBaseModel *)model { + return @"MessageContentText"; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTimeModel.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTimeModel.h new file mode 100644 index 00000000..cf0981a1 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTimeModel.h @@ -0,0 +1,17 @@ +// +// MessageTimeModel.h +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageBaseModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageTimeModel : MessageBaseModel +///时间 +@property (nonatomic,strong) NSString *time; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTimeModel.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTimeModel.m new file mode 100644 index 00000000..40914d2a --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTimeModel.m @@ -0,0 +1,26 @@ +// +// MessageTimeModel.m +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageTimeModel.h" + +@implementation MessageTimeModel + +- (instancetype)initWithMessage:(NIMMessage *)message { + if (self = [super initWithMessage:message]) { + self.messageType = SessionMessageType_Time; + self.contentSize = CGSizeMake(200, 20); + self.height = 20 + CONTENT_PADDING_V_TOTAL; + self.isHiddenAvatar = YES; + } + return self; +} + +- (NSString *)cellContent:(MessageBaseModel *)model { + return @"MessageTimeView"; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTipsModel.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTipsModel.h new file mode 100644 index 00000000..7905df8b --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTipsModel.h @@ -0,0 +1,17 @@ +// +// MessageTipsModel.h +// YUMI +// +// Created by YUMI on 2023/2/1. +// + +#import "MessageBaseModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageTipsModel : MessageBaseModel + +@end + +NS_ASSUME_NONNULL_END + diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTipsModel.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTipsModel.m new file mode 100644 index 00000000..0b1a5bfb --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTipsModel.m @@ -0,0 +1,26 @@ +// +// MessageTipsModel.m +// YUMI +// +// Created by YUMI on 2023/2/1. +// + +#import "MessageTipsModel.h" + +@implementation MessageTipsModel + +- (instancetype)initWithMessage:(NIMMessage *)message { + if (self = [super initWithMessage:message]) { + self.messageType = SessionMessageType_Tips; + self.contentSize = CGSizeMake(200, 20); + self.height = 20 + CONTENT_PADDING_V_TOTAL; + self.isHiddenAvatar = YES; + } + return self; +} + +- (NSString *)cellContent:(MessageBaseModel *)model { + return @"MessageTipsView"; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTweetModel.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTweetModel.h new file mode 100644 index 00000000..0e682596 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTweetModel.h @@ -0,0 +1,16 @@ +// +// MessageTweetModel.h +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageBaseModel.h" + +NS_ASSUME_NONNULL_BEGIN +@class ContentTweetModel; +@interface MessageTweetModel : MessageBaseModel +@property (nonatomic,strong) ContentTweetModel *tweetInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTweetModel.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTweetModel.m new file mode 100644 index 00000000..ec6646be --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageTweetModel.m @@ -0,0 +1,52 @@ +// +// MessageTweetModel.m +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageTweetModel.h" +#import "AttachmentModel.h" +#import "ContentTweetModel.h" +#import "NSObject+MJExtension.h" +@implementation MessageTweetModel + +- (instancetype)initWithMessage:(NIMMessage *)message { + if (self = [super initWithMessage:message]) { + self.messageType = SessionMessageType_Custom; + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + AttachmentModel * attach = obj.attachment; + ContentTweetModel * model = [ContentTweetModel modelWithJSON:attach.data]; + self.tweetInfo = model; + CGFloat oneHeight = [YMLocalizedString(@"MessageTweetModel0") boundingRectWithSize:CGSizeMake(240, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin + attributes:[self messageTextAttibutes:[UIFont systemFontOfSize:16]] context:nil].size.height + 2.5; + + CGFloat titleHeight = [model.title boundingRectWithSize:CGSizeMake(240, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin + attributes:[self messageTextAttibutes:[UIFont systemFontOfSize:16]] context:nil].size.height; + if (titleHeight <= oneHeight * 2) { + titleHeight = titleHeight + 5; + } else { + titleHeight = oneHeight * 2; + } + CGFloat desHeight = [model.desc boundingRectWithSize:CGSizeMake(240, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin + attributes:[self messageTextAttibutes:[UIFont systemFontOfSize:13]] context:nil].size.height; + self.height = titleHeight + desHeight + 85 + 20 + 1 + 35 + MESSAGE_PADDING * 2 + CONTENT_PADDING_V_TOTAL; + } + return self; +} + +- (NSDictionary *)messageTextAttibutes:(UIFont *)font { + NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; + [paragraphStyle setLineSpacing:2.5]; + return @{ + NSFontAttributeName:font, + NSParagraphStyleAttributeName: paragraphStyle + }; +} + + +- (NSString *)cellContent:(MessageBaseModel *)model { + return @"MessageContentTweetView"; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageUnSupportModel.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageUnSupportModel.h new file mode 100644 index 00000000..ca95a7ad --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageUnSupportModel.h @@ -0,0 +1,16 @@ +// +// MessageUnSupportModel.h +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageBaseModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageUnSupportModel : MessageBaseModel + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageUnSupportModel.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageUnSupportModel.m new file mode 100644 index 00000000..b748c373 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageUnSupportModel.m @@ -0,0 +1,30 @@ +// +// MessageUnSupportModel.m +// YUMI +// +// Created by YUMI on 2023/1/30. +// + +#import "MessageUnSupportModel.h" + +@implementation MessageUnSupportModel + + +- (instancetype)initWithMessage:(NIMMessage *)message { + if (self = [super initWithMessage:message]) { + self.messageType = SessionMessageType_Time; + NSString * messageText = YMLocalizedString(@"MessageUnSupportModel0"); + if (messageText.length > 0) { + CGSize size = [messageText boundingRectWithSize:CGSizeMake(150, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13]} context:nil].size; + self.contentSize = CGSizeMake(size.width + MESSAGE_PADDING* 2, size.height + MESSAGE_PADDING * 2); + self.height = size.height + MESSAGE_PADDING * 2 + CONTENT_PADDING_V_TOTAL; + } + } + return self; +} + +- (NSString *)cellContent:(MessageBaseModel *)model { + return @"MessageContentUnSupportView"; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/InterlocutionAbstractRegardGovernancer.h b/YuMi/Modules/YMMessage/View/Session/InterlocutionAbstractRegardGovernancer.h deleted file mode 100644 index c24e87a5..00000000 --- a/YuMi/Modules/YMMessage/View/Session/InterlocutionAbstractRegardGovernancer.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// InterlocutionAbstractRegardGovernancer.h -// YUMI -// -// Created by YUMI on 2022/4/25. -// - -#import "BaseRegardGovernancer.h" -#import -NS_ASSUME_NONNULL_BEGIN -@class ConsumerAbstractMatrix; -@interface InterlocutionAbstractRegardGovernancer : BaseRegardGovernancer -@property (nonatomic,strong) NIMSession *session; -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@property (nonatomic,strong) NSMutableDictionary *stickApexCommunications; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/InterlocutionAbstractRegardGovernancer.m b/YuMi/Modules/YMMessage/View/Session/InterlocutionAbstractRegardGovernancer.m deleted file mode 100644 index f2b736a8..00000000 --- a/YuMi/Modules/YMMessage/View/Session/InterlocutionAbstractRegardGovernancer.m +++ /dev/null @@ -1,255 +0,0 @@ -// -// InterlocutionAbstractRegardGovernancer.m -// YUMI -// -// Created by YUMI on 2022/4/25. -// - -#import "InterlocutionAbstractRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "MKJPopup.h" -#import "YUMIHtmlUrl.h" -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "NSMutableDictionary+Saft.h" -#import "StatsticsticsServingFacilitater.h" -#import "ClientDisposition.h" -#import "XNDJTBWGLoadingTool.h" -#import "InterlocutionInstanllingMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "InterlocutionInstanllingTabulationRegardElement.h" -#import "InterlocutionInstanllingConsumerRegard.h" -#import "YUMITissueRegardGovernancer.h" -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -#import "YUMIManeSimpleConsumerAbstractRegardGovernancer.h" - -@interface InterlocutionAbstractRegardGovernancer () -@property (nonatomic,strong) InterlocutionInstanllingConsumerRegard *intelligenceerRegard; -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSArray *datasource; -@end - -@implementation InterlocutionAbstractRegardGovernancer - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"Session_Info_View_Controller_0"); - [self.view addSubview:self.tableView]; - self.tableView.tableHeaderView = self.intelligenceerRegard; - self.intelligenceerRegard.userInfo = self.userInfo; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view).inset(15); - make.top.mas_equalTo(self.view).offset(12); - make.height.mas_equalTo(50 * 3 + 70); - }]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 50; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - InterlocutionInstanllingTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([InterlocutionInstanllingTabulationRegardElement class])]; - if (cell == nil) { - cell = [[InterlocutionInstanllingTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([InterlocutionInstanllingTabulationRegardElement class])]; - } - InterlocutionInstanllingMatrix * model= [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.instanllingProvision = model; - cell.delegate = self; - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.datasource.count > 0) { - InterlocutionInstanllingMatrix * model = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (model.settingType == InterlocutionInstanllingGenre_report) { - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEvent_chat_set_report_click]; - YUMITissueRegardGovernancer *webVewC = [[YUMITissueRegardGovernancer alloc] init]; - NSString *urlstr = [NSString stringWithFormat:@"%@?reportUid=%ld&source=CHAT",URLWithType(kReportRoomURL),self.userInfo.uid]; - webVewC.url = urlstr; - [self.navigationController pushViewController:webVewC animated:YES]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"Session_Info_View_Controller_1")]; - } - - } - } -} - -#pragma mark - InterlocutionInstanllingTabulationViweElementRepresendtation -- (void)interlocutionInstanllingTarbsultowardsionViweElement:(InterlocutionInstanllingMatrix *)item switchState:(UISwitch *)switchOn { - NSString * userId = [NSString stringWithFormat:@"%ld",self.userInfo.uid]; - if (item.settingType == InterlocutionInstanllingGenre_Top) { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEvent_chat_set_top_click]; - if (switchOn.on) { - NIMAddStickTopSessionParams * params = [[NIMAddStickTopSessionParams alloc] initWithSession:self.session]; - [[NIMSDK sharedSDK].chatExtendManager addStickTopSession:params completion:^(NSError * _Nullable error, NIMStickTopSessionInfo * _Nullable newInfo) { - if (error == nil) { - [self.stickApexCommunications secureSetGroal:newInfo forKey:self.session]; - } - }]; - } else { - NIMStickTopSessionInfo * topInfo; - NIMSession * topSession; - for (int i = 0; i < self.stickApexCommunications.allKeys.count; i++) { - NIMSession * session = [self.stickApexCommunications.allKeys secureGroalTowardsIndictowardsrix1:i]; - if (session.sessionId == self.session.sessionId) { - topSession = session; - break; - } - } - if (topSession) { - topInfo = [self.stickApexCommunications objectForKey:topSession]; - } - if (topInfo) { - [[NIMSDK sharedSDK].chatExtendManager removeStickTopSession:topInfo completion:^(NSError * _Nullable error, NIMStickTopSessionInfo * _Nullable removedInfo) { - if (error == nil) { - [self.stickApexCommunications removeObjectForKey:topSession]; - } - }]; - } - } - } else if (item.settingType == InterlocutionInstanllingGenre_black) { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEvent_chat_set_blacklist_click]; - NSString *title = nil; - NSString *message = nil; - if (switchOn.on) { - title = YMLocalizedString(@"Session_Info_View_Controller_2"); - message = YMLocalizedString(@"Session_Info_View_Controller_3"); - } else { - title = YMLocalizedString(@"Session_Info_View_Controller_4"); - message = YMLocalizedString(@"Session_Info_View_Controller_5"); - } - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.title = title; - config.message = message; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - if (!switchOn.on) { - [[NIMSDK sharedSDK].userManager removeFromBlackBlackList:userId completion:^(NSError * _Nullable error) { - if (error == nil) { - [self EvidenceMistakeToast:YMLocalizedString(@"Session_Info_View_Controller_6")]; - item.state = NO; - [self.tableView reloadData]; - } else { - [self EvidenceMistakeToast:error.description]; - } - - }]; - } else { - [[NIMSDK sharedSDK].userManager addToBlackList:userId completion:^(NSError * _Nullable error) { - if (error == nil) { - [self EvidenceMistakeToast:YMLocalizedString(@"Session_Info_View_Controller_7")]; - item.state = YES; - [self.tableView reloadData]; - } else { - [self EvidenceMistakeToast:error.description]; - } - }]; - } - } cancelHandler:^{ - - }]; - } -} - - -#pragma mark - Event Response -- (void)didBetowardsConsumerRecognition { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEvent_chat_set_data_click]; - - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMIManeConsumerAbstractRegardGovernancer * mineVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - mineVC.uid = self.userInfo.uid; - [self.navigationController pushViewController:mineVC animated:YES]; - }else{ - YUMIManeSimpleConsumerAbstractRegardGovernancer * mineVC = [[YUMIManeSimpleConsumerAbstractRegardGovernancer alloc] init]; - mineVC.uid = self.userInfo.uid; - [self.navigationController pushViewController:mineVC animated:YES]; - } -} - -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor whiteColor]; - _tableView.layer.masksToBounds = YES; - _tableView.layer.cornerRadius = 8; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[InterlocutionInstanllingTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([InterlocutionInstanllingTabulationRegardElement class])]; - } - return _tableView; -} - -- (InterlocutionInstanllingConsumerRegard *)intelligenceerRegard { - if (!_intelligenceerRegard) { - _intelligenceerRegard = [[InterlocutionInstanllingConsumerRegard alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 70)]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didBetowardsConsumerRecognition)]; - [_intelligenceerRegard addGestureRecognizer:tap]; - } - return _intelligenceerRegard; -} - -- (NSArray *)datasource { - if (!_datasource) { - InterlocutionInstanllingMatrix * topModel = [[InterlocutionInstanllingMatrix alloc] init]; - topModel.title = YMLocalizedString(@"Session_Info_View_Controller_8"); - topModel.settingType = InterlocutionInstanllingGenre_Top; - NIMSession * topSession; - for (int i = 0; i < self.stickApexCommunications.allKeys.count; i++) { - NIMSession * session = [self.stickApexCommunications.allKeys secureGroalTowardsIndictowardsrix1:i]; - if (session.sessionId == self.session.sessionId) { - topSession = session; - break; - } - } - if (topSession && topSession.sessionId.length > 0) { - topModel.state = YES; - } else { - topModel.state = NO; - } - - - NSString * uid = [NSString stringWithFormat:@"%ld", self.userInfo.uid]; - BOOL isBlack = [[NIMSDK sharedSDK].userManager isUserInBlackList:uid]; - - InterlocutionInstanllingMatrix * blackModel = [[InterlocutionInstanllingMatrix alloc] init]; - blackModel.title = YMLocalizedString(@"Session_Info_View_Controller_9"); - blackModel.state = isBlack; - blackModel.settingType = InterlocutionInstanllingGenre_black; - - InterlocutionInstanllingMatrix * reportModel = [[InterlocutionInstanllingMatrix alloc] init]; - reportModel.title = YMLocalizedString(@"Session_Info_View_Controller_10"); - reportModel.settingType = InterlocutionInstanllingGenre_report; - - _datasource = @[topModel, blackModel, reportModel]; - } - return _datasource; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/InterlocutionRegardGovernancer.h b/YuMi/Modules/YMMessage/View/Session/InterlocutionRegardGovernancer.h deleted file mode 100644 index 2c9fbf2a..00000000 --- a/YuMi/Modules/YMMessage/View/Session/InterlocutionRegardGovernancer.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// InterlocutionRegardGovernancer.h -// YUMI -// -// Created by zu on 2021/11/28. -// - -#import "MvpRegardGovernancer.h" -#import "InterlocutionStatementRegardGovernancer.h" -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface InterlocutionRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,assign) NSInteger recordId; -@property (nonatomic,assign) BOOL isConsumer; -- (instancetype)initWithSession:(NIMSession *)session; -@property (nonatomic, assign) InterlocutionStatementOpenGenre unfoildGenre; -@property (nonatomic,strong) NSMutableDictionary *stickApexCommunications; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/InterlocutionRegardGovernancer.m b/YuMi/Modules/YMMessage/View/Session/InterlocutionRegardGovernancer.m deleted file mode 100644 index ad3b168b..00000000 --- a/YuMi/Modules/YMMessage/View/Session/InterlocutionRegardGovernancer.m +++ /dev/null @@ -1,1071 +0,0 @@ -// -// InterlocutionRegardGovernancer.m -// YUMI -// -// Created by zu on 2021/11/28. -// - -#import "InterlocutionRegardGovernancer.h" -#import -#import -#import -#import -#import -#import "XCCurrentVCStackExecutive.h" -#import "NEMCCommunicationMaker.h" -#import "YUMIMacroUitls.h" -#import "UITableView+NIMScrollToBottom.h" -#import "DJDKMIMOMColor.h" -#import "NSArray+Safe.h" -#import "MHTSpiritFacilitater.h" -#import "MHTKeyboardExecutive.h" -#import "YYUtility.h" -#import "MKJPopup.h" -#import "AccountAbstractStorage.h" -#import "NSDate+DateUtils.h" -#import "PLIntratemporalUtil.h" -#import "StatsticsticsServingFacilitater.h" -#import "NEMCCommunicationUtils.h" -#import "ClientDisposition.h" -#import "ChamberAbstractMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "CommunicationParrotMatrix.h" -#import "InterlocutionVentureCache.h" -#import "MHTAppearanceIndicateMatrix.h" -#import "AttachmentMatrix.h" -#import "CommunicationBaseMatrix.h" -#import "CommunicationEssayMatrix.h" -#import "CommunicationVocalmusicMatrix.h" -#import "CommunicationIntratemporalMatrix.h" -#import "CommunicationIndicateMatrix.h" -#import "CommunicationUnSupportMatrix.h" -#import "CommunicationPresentMatrix.h" -#import "CommunicationEssayClickMatrix.h" -#import "CommunicationUnionMatrix.h" -#import "CommunicationUnfoildEnergeticMatrix.h" -#import "CommunicationDeficitSheatheMatrix.h" -#import "CommunicationSeparationsAutoMatrix.h" -#import "CommunicationSeparationsMatrix.h" -#import "CommunicationVenturePrecautiousMatrix.h" -#import "CommunicationDiscoveryStrangeBewelcometoMatrix.h" -#import "CommunicationCommunicationSolitaireMatrix.h" -#import "CommunicationTweetMatrix.h" -#import "CommunicationPrototypeAscensionMatrix.h" -#import "CommunicationUnfoildEnergeticMatrix.h" -#import "CommunicationRevokeMatrix.h" -#import "CommunicationTipsMatrix.h" -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -#import "YUMIManeSimpleConsumerAbstractRegardGovernancer.h" -#import "YUMIChamberRegardGovernancer.h" -#import "ChamberHostRepresendtation.h" -#import "CommunicationElement.h" -#import "InterlocutionChatLimitRegard.h" -#import "YUMIDischargePresentRegard.h" -#import "InterlocutionNevRegard.h" -#import "InterlocutionAbstractRegardGovernancer.h" -#import "InterlocutionVentureRegard.h" -#import "MHTIntrojectionObstacleRegard.h" -#import "MHTKeyboardExecutive.h" -#import "MHTSpiritDirectorateRegard.h" -#import "MHTinputAppearanceRegard.h" -#import "InterlocutionConsumerAbstractTabulationRegardElement.h" -#import "CommunicationExternalizer.h" -#import "CommunicationCeremony.h" - - -@interface InterlocutionRegardGovernancer () - -@property (nonatomic, strong) NIMSession * session; -@property (nonatomic, strong) NSMutableArray * messages; -@property (nonatomic,strong) InterlocutionNevRegard *interlocutionNevRegard; -@property (nonatomic, strong) UITableView * interlocutionTabulationViwe; -@property (nonatomic, strong) ConsumerAbstractMatrix *userInfo; -@property (nonatomic, strong) ConsumerAbstractMatrix *specificConsumerAbstract; -@property (nonatomic,strong) NIMMessage *lastMessage; -@property (nonatomic,strong) InterlocutionVentureRegard *riskPrecautiousRegard; -@property(nonatomic,strong)MHTIntrojectionObstacleRegard *introjectionObstacleRegard; -@property(nonatomic,strong)MHTKeyboardExecutive *keydirectorateExecutive; -@property (nonatomic,strong) MHTinputAppearanceRegard *appearanceRegard; -@property (nonatomic,strong) NSArray *appearancetGarment; -@end - -@implementation InterlocutionRegardGovernancer - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (void)dealloc { - [[NIMSDK sharedSDK].chatManager removeDelegate:self]; - [[NIMSDK sharedSDK].conversationManager removeDelegate:self]; - [[NIMSDK sharedSDK].mediaManager removeDelegate:self]; - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - -- (CommunicationExternalizer *)producePresimport { - return [[CommunicationExternalizer alloc] init]; -} - -- (instancetype)initWithSession:(NIMSession *)session { - self = [super init]; - if (self) { - _session = session; - } - return self; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initRegards]; - [self initLayout]; - [IQKeyboardManager sharedManager].enable = NO; - [IQKeyboardManager sharedManager].enableAutoToolbar = NO; - [self initIntelligencerGrantedTerminalerRrfresh]; - [[NIMSDK sharedSDK].chatManager addDelegate:self]; - [[NIMSDK sharedSDK].conversationManager addDelegate:self]; -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - [self.presimport acquireFantowardsicsSimilar:self.session.sessionId]; - [self.presimport acquireConsumerAbstractAboutCid:self.session.sessionId]; -} - -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.interlocutionTabulationViwe.mj_header = header; - [self intelligenceerRenovtowardseh]; - [self initData]; -} - -- (void)intelligenceerRenovtowardseh { - if (self.messages.count > 0) { - CommunicationBaseMatrix * model = self.messages.firstObject; - [[[NIMSDK sharedSDK] conversationManager] messagesInSession:self.session message:model.message limit:20 completion:^(NSError * _Nullable error, NSArray * _Nullable messages) { - [self.interlocutionTabulationViwe.mj_header endRefreshing]; - if (error == nil && messages.count > 0) { - for (int i = ((int)messages.count -1); i >= 0; i--) { - NIMMessage * message = [messages secureGroalTowardsIndictowardsrix1:i]; - CommunicationBaseMatrix * model = [self modeTransformCommunictowardsion:message]; - [self.messages insertObject:model atIndex:0]; - if ((i -1) > 0) { - NIMMessage * message1 = [messages secureGroalTowardsIndictowardsrix1:i -1]; - CGFloat dur = message.timestamp - message1.timestamp; - if (dur / 60 > 5) { - CommunicationBaseMatrix * timeModel = [self produceIntrtowardsemporalCommunictowardsion:message]; - [self.messages insertObject:timeModel atIndex:0]; - } - } - } - } - [self.interlocutionTabulationViwe reloadData]; - }]; - } else { - [[[NIMSDK sharedSDK] conversationManager] messagesInSession:self.session message:nil limit:20 completion:^(NSError * _Nullable error, NSArray * _Nullable messages) { - [self.interlocutionTabulationViwe.mj_header endRefreshing]; - if (error == nil) { - for (int i = 0; i < messages.count; i++) { - NIMMessage * message = [messages secureGroalTowardsIndictowardsrix1:i]; - CommunicationBaseMatrix * model = [self modeTransformCommunictowardsion:message]; - if ((i + 1) < messages.count) { - NIMMessage * message1 = [messages secureGroalTowardsIndictowardsrix1:i + 1]; - CGFloat dur = message1.timestamp - message.timestamp; - if (dur / 60 > 5) { - CommunicationBaseMatrix * timeModel = [self produceIntrtowardsemporalCommunictowardsion:message]; - [self.messages addObject:timeModel]; - } - } - [self.messages addObject:model]; - } - } - [self.interlocutionTabulationViwe reloadData]; - [self.interlocutionTabulationViwe nim_scrollToExtreme:YES]; - }]; - } -} - -#pragma mark - 提前加载相册中的图片 -- (void)chamberBrochureAplictowardsionearances { - @kWeakify(self); - [YYUtility examineAssetsLibrayAvailable:^{ - @kStrongify(self); - - } denied:^{ - - } restriction:^{ - - }]; -} - -#pragma mark - cell的样式 -- (CommunicationBaseMatrix *)modeTransformCommunictowardsion:(NIMMessage *)message { - CommunicationBaseMatrix * model; - switch (message.messageType) { - case NIMMessageTypeText: - model = [[CommunicationEssayMatrix alloc] initWithMessage:message]; - break; - case NIMMessageTypeAudio: - model = [[CommunicationVocalmusicMatrix alloc] initWithMessage:message]; - break; - case NIMMessageTypeImage: - model = [[CommunicationIndicateMatrix alloc] initWithMessage:message]; - break; - case NIMMessageTypeTip: - model = [[CommunicationTipsMatrix alloc] initWithMessage:message]; - break; - case NIMMessageTypeCustom: - model = [self mtowardsrixTransformIndividualityCommunictowardsion:message]; - break; - default: - model = [[CommunicationUnSupportMatrix alloc] initWithMessage:message]; - break; - break; - } - return model; -} - -- (CommunicationBaseMatrix *)mtowardsrixTransformIndividualityCommunictowardsion:(NIMMessage *)message { - CommunicationBaseMatrix * model; - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - AttachmentMatrix *attachment = (AttachmentMatrix *)obj.attachment; - if (attachment.first == IndividualityCommunicationGenre_Gift && attachment.second == Custom_Message_Sub_Gift_Send) { - model = [[CommunicationPresentMatrix alloc] initWithMessage:message]; - } else if(attachment.first == IndividualityCommunicationGenre_Secretary) { - model = [[CommunicationEssayClickMatrix alloc] initWithMessage:message]; - } else if(attachment.first == IndividualityCommunicationGenre_Hall) { - model = [[CommunicationUnionMatrix alloc] initWithMessage:message]; - } else if(attachment.first == IndividualityCommunicationGenre_Member_Online && attachment.second == Custom_Message_Type_Attention_Member_Online) { - model = [[CommunicationUnfoildEnergeticMatrix alloc] initWithMessage:message]; - } else if(attachment.first == IndividualityCommunicationGenre_Application_Share && attachment.second == Custom_Message_Sub_Application_Share_Room) { - model = [[CommunicationUnfoildEnergeticMatrix alloc] initWithMessage:message]; - } else if(attachment.first == IndividualityCommunicationGenre_User_UpGrade && (attachment.second == Custom_Message_Sub_User_UpGrade_Charm || attachment.second == Custom_Message_Sub_User_UpGrade_Exper)) { - model = [[CommunicationPrototypeAscensionMatrix alloc] initWithMessage:message]; - } else if(attachment.first == IndividualityCommunicationGenre_Tweet && attachment.second == Custom_Message_Sub_Tweet_News) { - model = [[CommunicationTweetMatrix alloc] initWithMessage:message]; - } else if(attachment.first == IndividualityCommunicationGenre_Skill_Card) { - model = [[CommunicationCommunicationSolitaireMatrix alloc] initWithMessage:message]; - } else if(attachment.first == IndividualityCommunicationGenre_FindNew){ - model = [[CommunicationDiscoveryStrangeBewelcometoMatrix alloc] initWithMessage:message]; - } else if(attachment.first == IndividualityCommunicationGenre_Chat_Risk_Alert) { - model = [[CommunicationVenturePrecautiousMatrix alloc] initWithMessage:message]; - }else if(attachment.first == IndividualityCommunicationGenre_Monents && attachment.second == Custom_Message_Sub_Monents_Share) { - model = [[CommunicationSeparationsMatrix alloc] initWithMessage:message]; - }else if(attachment.first == IndividualityCommunicationGenre_Monents && (attachment.second == Custom_Message_Sub_Monents_Approved | attachment.second == Custom_Message_Sub_Monents_Ban_Delete)) { - model = [[CommunicationSeparationsAutoMatrix alloc] initWithMessage:message]; - } else if(attachment.first == IndividualityCommunicationGenre_Message_Handle && attachment.second == Custom_Message_Sub_Message_Handle_Content) { - model = [[CommunicationSeparationsAutoMatrix alloc] initWithMessage:message]; - } else if (attachment.first == IndividualityCommunicationGenre_RedPacket && attachment.second == Custom_Message_Sub_AllDiamandRedPacket) { - model = [[CommunicationDeficitSheatheMatrix alloc] initWithMessage:message]; - } else { - model = [[CommunicationUnSupportMatrix alloc] initWithMessage:message]; - } - return model; -} - -- (UINavigationController *)acquireDigitalWindowNev { - if ([XCCurrentVCStackExecutive shareManager].getCurrentVC) { - return [XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController; - } - return self.navigationController; -} - -- (CommunicationBaseMatrix *)produceIntrtowardsemporalCommunictowardsion:(NIMMessage *)message { - CommunicationIntratemporalMatrix * timeModel = [[CommunicationIntratemporalMatrix alloc] initWithMessage:message]; - timeModel.time = [self intrtowardsemporalstrToIntrtowardsemporalInstant:[NSString stringWithFormat:@"%f", message.timestamp]]; - return timeModel; -} - -- (NSString *)intrtowardsemporalstrToIntrtowardsemporalInstant:(NSString *)timeStr { - NSTimeInterval interval = [timeStr doubleValue]; - NSDate *date = [NSDate dateWithTimeIntervalSince1970:interval]; - return [NSDate stringFromDate:date]; -} - -- (void)accelertowardseIntrtowardsemporalCommunictowardsion:(NIMMessage *)message { - if (self.messages.count > 0) { - NIMMessage * lastMessage = self.messages.lastObject.message; - CGFloat dur = message.timestamp - lastMessage.timestamp; - if (dur / 60 > 5) { - NIMMessage * newMessage = [[NIMMessage alloc] init]; - newMessage.timestamp = message.timestamp; - [newMessage setValue:self.session forKey:@"session"]; - CommunicationBaseMatrix * timeModel = [self produceIntrtowardsemporalCommunictowardsion:newMessage]; - [self.messages addObject:timeModel]; - } - } -} - -- (void)accelertowardseRevokeCommunictowardsion:(NIMMessage *)message title:(NSString *)title { - NIMMessage * revokeMessage = [[NIMMessage alloc] init]; - [revokeMessage setValue:self.session forKey:@"session"]; - [revokeMessage setValue:@(NIMMessageTypeTip) forKey:@"messageType"]; - revokeMessage.timestamp = [PLIntratemporalUtil acquireNowIntrtowardsemporalIntrtowardsemporalstampMilliinstant].longLongValue; - revokeMessage.text = title; - [[NIMSDK sharedSDK].conversationManager saveMessage:revokeMessage forSession:self.session completion:nil]; -} - -#pragma mark - Private Method - -- (void)initIntrojectionRegard { - - - MHTIntrojectionObstacleRegardDispositionuration *introjectionObstacleRegardDispositionurtowardsion = [MHTIntrojectionObstacleRegardDispositionuration deficiencyIntrojectionObstacleRegardDispositionurtowardsion]; - introjectionObstacleRegardDispositionurtowardsion.reputationBtutonVeiled = NO; - introjectionObstacleRegardDispositionurtowardsion.spreadBtutonVeiled = YES; - introjectionObstacleRegardDispositionurtowardsion.utensilVeiled = NO; - introjectionObstacleRegardDispositionurtowardsion.presentBtutonVeiled = NO; - introjectionObstacleRegardDispositionurtowardsion.cameraBtutonVeiled = NO; - introjectionObstacleRegardDispositionurtowardsion.appearanceBtutonVeiled = NO; - - _introjectionObstacleRegard = [[MHTIntrojectionObstacleRegard alloc] initWithFrame:CGRectMake(0,0,self.view.frame.size.width,introjectionObstacleRegardDispositionurtowardsion.introjectionRegardAltitude)]; - - [_introjectionObstacleRegard setupAboutDispositionurtowardsion:introjectionObstacleRegardDispositionurtowardsion]; - _introjectionObstacleRegard.delegate = self; - - - _keydirectorateExecutive = [[MHTKeyboardExecutive alloc] initWithViewController:self]; - _keydirectorateExecutive.dataSource = self; - - _keydirectorateExecutive.delegate = self; - [_keydirectorateExecutive accelertowardseExtremeIntrojectionObstacleRegard:_introjectionObstacleRegard belowViewController:NO]; - - - [_keydirectorateExecutive dilemmaEssayRegard:_introjectionObstacleRegard.introjectionEssayRegard]; -} - - -- (void)initRegards { - self.interlocutionNevRegard.isInRoom = self.unfoildGenre == InterlocutionStatementOpenGenreRoom; - [self.view addSubview:self.interlocutionNevRegard]; - [self.view addSubview:self.interlocutionTabulationViwe]; - [self initIntrojectionRegard]; -} - -- (void)initLayout { - [self.interlocutionNevRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(self.unfoildGenre == InterlocutionStatementOpenGenreRoom ? 44 : kNavigationHeight); - make.left.top.right.mas_equalTo(self.view); - }]; -} - -- (void)viewDidLayoutSubviews{ - if (self.unfoildGenre == InterlocutionStatementOpenGenreRoom) { - self.view.frame = CGRectMake(0, 0, KScreenWidth, kHalfScreenHeight); - } -} - -- (void)initData { - NIMUser * user = [[NIMSDK sharedSDK].userManager userInfo:self.session.sessionId]; - if (user) { - self.interlocutionNevRegard.title = user.userInfo.nickName; - } else { - self.interlocutionNevRegard.title = @"加载中……"; - } - [[NIMSDK sharedSDK].conversationManager markAllMessagesReadInSession:self.session]; - [self.presimport acquireChinwagRestrictionReceiverCid:self.session.sessionId]; - [self.presimport getUserInfo:self.session.sessionId]; -} - -- (BOOL)isExistCommunictowardsions:(NIMMessage *)message{ - BOOL isExist = NO; - NIMMessage * model; - for (NIMMessage *item in self.messages.reverseObjectEnumerator.allObjects) { - if ([item isKindOfClass:[NIMMessage class]] && [item.messageId isEqualToString:message.messageId]) { - model = item; - isExist = YES; - break; - } - } - if (model) { - model = message; - } - return isExist; -} - -- (BOOL)EvidenceChinwagVentureRegard:(ConsumerAbstractMatrix *)userInfo { - if (userInfo.banAccount) { - return YES; - } - - NSString * cacheUid = [[InterlocutionVentureCache partowardsiciptowardsionConceal] acquireConcludeChinwagVenturePrecautious:self.session.sessionId]; - - if (cacheUid && [cacheUid isEqualToString:self.session.sessionId]) { - return NO; - } - - if ([[NIMSDK sharedSDK].userManager isMyFriend:self.session.sessionId]) { - return NO; - } - - return YES; -} - -#pragma mark - CommunicationCeremony -- (void)dwellEarnRestrictionChinwag:(ChatLimitMatrix *)chatLimit { - BOOL chatDisabled = !chatLimit.chat && self.messages.count <= 0; - if (chatDisabled) { - InterlocutionChatLimitRegard *chatLimitView = [[InterlocutionChatLimitRegard alloc] initAboutChinwagRestriction:chatLimit]; - self.interlocutionTabulationViwe.tableHeaderView = chatLimitView; - } else { - self.interlocutionTabulationViwe.tableHeaderView = nil; - } - self.introjectionObstacleRegard.userInteractionEnabled = !chatDisabled; - if (chatDisabled) { - self.introjectionObstacleRegard.introjectionEssayRegard.placeholder = YMLocalizedString(@"Session_View_Controller_1"); - } else { - self.introjectionObstacleRegard.introjectionEssayRegard.placeholder = YMLocalizedString(@"Session_View_Controller_2"); - } -} - -- (void)dwellEarnInterlocutionConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo { - _userInfo = userInfo; - self.interlocutionNevRegard.userInfo = userInfo; - if (userInfo.roomUid && self.unfoildGenre == InterlocutionStatementOpenGenreDefault) { - if ([self EvidenceChinwagVentureRegard:userInfo]) { - self.riskPrecautiousRegard.warning = userInfo.banAccount ? @" 温馨提醒:当前对方账号存在异常,请谨慎来往!" : @"温馨提示:对方和您非好友关系,请注意隐私安全!"; - if (!self.riskPrecautiousRegard.superview) { - [self.view addSubview:self.riskPrecautiousRegard]; - [self.riskPrecautiousRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.top.mas_equalTo(self.interlocutionNevRegard.mas_bottom); - make.height.mas_equalTo(20); - }]; - } - [self.interlocutionTabulationViwe mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.interlocutionNevRegard.mas_bottom).mas_offset(20); - }]; - } else { - [self.interlocutionTabulationViwe mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.interlocutionNevRegard.mas_bottom).mas_offset(0); - }]; - } - } else { - if ([self EvidenceChinwagVentureRegard:userInfo]) { - self.riskPrecautiousRegard.warning = userInfo.banAccount ? @" 温馨提醒:当前对方账号存在异常,请谨慎来往!" : @"温馨提示:对方和您非好友关系,请注意隐私安全!"; - if (!self.riskPrecautiousRegard.superview) { - [self.view addSubview:self.riskPrecautiousRegard]; - [self.riskPrecautiousRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.top.mas_equalTo(self.interlocutionNevRegard.mas_bottom); - make.height.mas_equalTo(20); - }]; - } - [self.interlocutionTabulationViwe mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.interlocutionNevRegard.mas_bottom).mas_offset(20); - }]; - } else { - [self.interlocutionTabulationViwe mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.interlocutionNevRegard.mas_bottom).mas_offset(0); - }]; - } - - } -} - -- (void)acquireFantowardsicsSimilarAccomplishment:(BOOL)isLike { - self.interlocutionNevRegard.isLike = isLike; -} - -- (void)considertowardsionConsumerAccomplishment:(NSString *)uid { - if ([uid isEqualToString:self.session.sessionId]) { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"Session_View_Controller_7")]; - self.interlocutionNevRegard.isLike = YES; - } -} - -- (void)dwellEarnConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo { - self.userInfo = userInfo; - [self.interlocutionTabulationViwe reloadData]; -} - -#pragma mark - CommunicationElementRepresendtation -- (void)refurbishCommunictowardsionAccomplishment:(NIMMessage *)message { - if ([message.session.sessionId isEqualToString:self.session.sessionId]) { - [self.interlocutionTabulationViwe reloadData]; - } -} - -- (void)didBetowardsIntelligenceportrait:(NSString *)uid { - if (uid.length > 0 && ![NEMCCommunicationUtils isHLOfficalSequenceription:uid]) { - - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMIManeConsumerAbstractRegardGovernancer * infoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - infoVC.uid = uid.integerValue; - [[self acquireDigitalWindowNev] pushViewController:infoVC animated:YES]; - }else{ - YUMIManeSimpleConsumerAbstractRegardGovernancer * infoVC = [[YUMIManeSimpleConsumerAbstractRegardGovernancer alloc] init]; - infoVC.uid = uid.integerValue; - [[self acquireDigitalWindowNev] pushViewController:infoVC animated:YES]; - } - } -} - -- (void)representtowardsionCommunictowardsionAccomplishment:(NIMMessage *)message { - CommunicationBaseMatrix * revokeMessage; - for (int i = 0; i < self.messages.count; i++) { - CommunicationBaseMatrix * message1 = [self.messages secureGroalTowardsIndictowardsrix1:i]; - if ([message.messageId isEqualToString: message1.message.messageId]) { - revokeMessage = message1; - break; - } - } - if (revokeMessage) { - [self.messages removeObject:revokeMessage]; - [self.interlocutionTabulationViwe reloadData]; - } -} - -- (void)revokeCommunictowardsionAccomplishment:(NIMMessage *)message { - CommunicationBaseMatrix * revokeMessage; - for (int i = 0; i < self.messages.count; i++) { - CommunicationBaseMatrix * message1 = [self.messages secureGroalTowardsIndictowardsrix1:i]; - if ([message.messageId isEqualToString:message1.message.messageId]) { - revokeMessage = message1; - break; - } - } - if (revokeMessage) { - [self.messages removeObject:revokeMessage]; - - [self accelertowardseRevokeCommunictowardsion:message title:YMLocalizedString(@"Session_View_Controller_8")]; - } -} - -#pragma mark - InterlocutionNevRegardRepresendtation -- (void)interlocutionNevRegard:(InterlocutionNevRegard *)view didClickLike:(UIButton *)sender { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEvent_chat_toolbar_fans_click]; - [self.presimport considertowardsionConsumer:self.session.sessionId]; -} - -- (void)interlocutionNevRegard:(InterlocutionNevRegard *)view didClickBack:(UIButton *)sender { - if (self.unfoildGenre == InterlocutionStatementOpenGenreRoom) { - CATransition *transition = [CATransition animation]; - transition.duration = 0.3f; - transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; - transition.type = kCATransitionPush; - transition.subtype = kCATransitionFromLeft; - [self.view.superview.layer addAnimation:transition forKey:nil]; - [self removeFromParentViewController]; - [self.view removeFromSuperview]; - return; - } - [self.navigationController popViewControllerAnimated:YES]; -} - -- (void)interlocutionNevRegard:(InterlocutionNevRegard *)view didClickReport:(UIButton *)sender { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEvent_chat_toolbar_set_click]; - InterlocutionAbstractRegardGovernancer * reportVC = [[InterlocutionAbstractRegardGovernancer alloc] init]; - reportVC.session = self.session; - reportVC.stickApexCommunications = self.stickApexCommunications; - reportVC.userInfo = self.userInfo; - [self.acquireDigitalWindowNev pushViewController:reportVC animated:YES]; -} - -- (void)interlocutionNevRegard:(InterlocutionNevRegard *)view didRoomLive:(NSString *)roomUid { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEvent_chat_dialogue_revocation_click]; - if (self.unfoildGenre == InterlocutionStatementOpenGenreDefault) { - __block BOOL isSameRoom = NO; - __block ChamberAbstractMatrix *chamberMatrix; - [self.acquireDigitalWindowNev.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj isKindOfClass:[YUMIChamberRegardGovernancer class]]) { - YUMIChamberRegardGovernancer * rooomVC = obj; - [[self acquireDigitalWindowNev] popToRootViewControllerAnimated:NO]; - chamberMatrix = rooomVC.acquireChamberAbstract; - if(rooomVC.acquireChamberAbstract.uid == [roomUid integerValue]) { - isSameRoom = YES; - } else { - [rooomVC exitRoom]; - } - *stop = YES; - } - }]; - if (!isSameRoom) { - if (chamberMatrix.type == ChamberGenre_MiniGame) { - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [YUMIChamberRegardGovernancer unfoildChamber:roomUid fromNick:self.userInfo.nick fromType:ConsumerEnterChamberFromGenre_Follow_User fromUid:[NSString stringWithFormat:@"%ld", self.userInfo.uid] viewController:[[XCCurrentVCStackExecutive shareManager] getCurrentVC]]; - }); - } else { - [YUMIChamberRegardGovernancer unfoildChamber:roomUid fromNick:self.userInfo.nick fromType:ConsumerEnterChamberFromGenre_Follow_User fromUid:[NSString stringWithFormat:@"%ld", self.userInfo.uid] viewController:self]; - } - } - } -} - -#pragma mark - UITableViewDataSource -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return 2; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - if (section == 0) { - if ([NEMCCommunicationUtils isHLOfficalSequenceription:self.session.sessionId]) { - return 0; - } - return self.userInfo ? 1 : 0; - } else { - return self.messages.count; - } -} - -- (nonnull UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath { - if (indexPath.section == 0) { - InterlocutionConsumerAbstractTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([InterlocutionConsumerAbstractTabulationRegardElement class])]; - if (cell == nil) { - - [tableView registerClass:[InterlocutionConsumerAbstractTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([InterlocutionConsumerAbstractTabulationRegardElement class])]; - cell = [[InterlocutionConsumerAbstractTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([InterlocutionConsumerAbstractTabulationRegardElement class])]; - } - cell.userInfo = self.userInfo; - cell.delegate = self; - return cell; - } else { - CommunicationBaseMatrix * message = [self.messages secureGroalTowardsIndictowardsrix1:indexPath.row]; - NSString * identifier = [message cellStowardsisfperformance:message]; - - CommunicationElement * cell = [tableView dequeueReusableCellWithIdentifier:identifier]; - if (!cell) { - - [tableView registerClass:[CommunicationElement class] forCellReuseIdentifier:identifier]; - - cell = [tableView dequeueReusableCellWithIdentifier:identifier]; - } - cell.delegate = self; - [cell rconcludeerAboutCommunictowardsion:[self.messages secureGroalTowardsIndictowardsrix1:indexPath.row]]; - return cell; - } -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (indexPath.section == 0) { - return self.userInfo.privatePhoto.count > 0 ? 182 : 100; - } - CommunicationBaseMatrix *msg = [self.messages secureGroalTowardsIndictowardsrix1:indexPath.row]; - return msg.height; -} - -- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { - [self.keydirectorateExecutive brakeEntiretyDirectortowardseRegard]; -} - -#pragma mark - NIMChatManagerDelegate -- (void)onRecvMessages:(NSArray *)messages { - NIMMessage *message = messages.firstObject; - NIMSession *session = message.session; - if (![session isEqual:self.session] || !messages.count) { - return; - } - for (NIMMessage *message in messages) { - [self accelertowardseIntrtowardsemporalCommunictowardsion:message]; - if (message.isDeleted) { - continue; - } - CommunicationBaseMatrix * model = [self modeTransformCommunictowardsion:message]; - [self.messages addObject:model]; - } - [self.interlocutionTabulationViwe reloadData]; - [self.interlocutionTabulationViwe nim_scrollToExtreme:YES]; - - [[NIMSDK sharedSDK].conversationManager markAllMessagesReadInSession:self.session]; -} - -- (void)sendMessage:(NIMMessage *)message didCompleteWithError:(NSError *)error { - if (message.session.sessionType != NIMSessionTypeP2P) { - return; - } - - [self accelertowardseIntrtowardsemporalCommunictowardsion:message]; - - if (![self isExistCommunictowardsions:message]) { - CommunicationBaseMatrix * model = [self modeTransformCommunictowardsion:message]; - [self.messages addObject:model]; - } - - if (message.yidunAntiSpamRes) { - NSDictionary * spamRes = message.yidunAntiSpamRes.toJSONGroal; - NSDictionary * spamResExt = ((NSString *)spamRes[@"ext"]).toJSONGroal; - if ([spamResExt[@"antispam"][@"suggestion"] intValue] == 2) { - NSDictionary * dic = @{@"suggestion": @"2"}; - message.localExt = dic; - [[NIMSDK sharedSDK].conversationManager updateMessage:message forSession:self.session completion:nil]; - } - } - [self.interlocutionTabulationViwe reloadData]; - [self.interlocutionTabulationViwe nim_scrollToExtreme:YES]; -} - - -- (void)onRecvRevokeMessageNotification:(NIMRevokeMessageNotification *)notification { - CommunicationBaseMatrix * revokeMessage; - for (int i = 0; i < self.messages.count; i++) { - CommunicationBaseMatrix * message1 = [self.messages secureGroalTowardsIndictowardsrix1:i]; - if ([notification.message.messageId isEqualToString:message1.message.messageId]) { - revokeMessage = message1; - break; - } - } - if (revokeMessage) { - [self.messages removeObject:revokeMessage]; - [self.interlocutionTabulationViwe reloadData]; - } -} -#pragma mark - NIMConversationManagerDelegate -- (void)messagesDeletedInSession:(NIMSession *)session { - [self.messages removeAllObjects]; - [self initData]; -} - -- (void)didFlunkRetry:(NIMMessage *)message { - if (message.isReceivedMsg) { - [[NIMSDK sharedSDK].chatManager fetchMessageAttachment:message error:nil]; - } else { - [[NIMSDK sharedSDK].chatManager resendMessage:message error:nil]; - } -} - -- (void)prohibitichargeEssayCommunictowardsion:(NSString *)text { - NIMMessage *message = [NEMCCommunicationMaker communAboutEssay:text]; - [[[NIMSDK sharedSDK] chatManager] sendMessage:message toSession:self.session error:nil]; -} - -- (void)vocalmanualReflectionImplementtowardsion:(NSString *)recordPath { - NIMMessage *message = [NEMCCommunicationMaker communAboutVocalmusic:recordPath]; - [[[NIMSDK sharedSDK] chatManager] sendMessage:message toSession:self.session error:nil]; -} - -#pragma mark - TZImagePickerControllerDelegate -- (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingPhotos:(NSArray *)photos sourceAssets:(NSArray *)assets isSelectOriginalPhoto:(BOOL)isSelectOriginalPhoto infos:(NSArray *)infos { - [photos enumerateObjectsUsingBlock:^(UIImage * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj) { - - NIMMessage * message = [NEMCCommunicationMaker communAboutIndictowardse:obj]; - - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:self.session error:nil]; - } - }]; -} - -#pragma mark - InterlocutionRiskRegardRepresendtation -- (void)interlocutionVentureRegardConcludeBtutonTicktack:(InterlocutionVentureRegard *)view { - [[InterlocutionVentureCache partowardsiciptowardsionConceal] preserveConcludeVenture:self.session.sessionId]; - [self.riskPrecautiousRegard removeFromSuperview]; - [self.interlocutionTabulationViwe mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.interlocutionNevRegard.mas_bottom).mas_offset(0); - }]; -} - -#pragma mark - InterlocutionConsumerAbstractTabulationViweElementRepresendtation -- (void)interlocutionConsumerAbstractTarbsultowardsionViweElement:(InterlocutionConsumerAbstractTabulationRegardElement *)view showUserInfoVC:(ConsumerAbstractMatrix *)userInfo { - [self didBetowardsIntelligenceportrait:[NSString stringWithFormat:@"%ld", userInfo.uid]]; -} - -#pragma mark - IntrojectionDirectorateAtomicSource -- (UIView *)digitentiretyibraExecutiveSpreadDirectortowardseRegard:(MHTKeyboardExecutive *)keydirectorateExecutive { - UIView *boardView = [UIView new]; - boardView.backgroundColor = UIColor.clearColor; - return boardView; -} - -- (UIView *)digitentiretyibraExecutiveSenintrtowardsemporalntDirectortowardseRegard:(MHTKeyboardExecutive *)keydirectorateExecutive { - MHTSpiritDirectorateRegard *senintrtowardsemporalntRegard = [[MHTSpiritDirectorateRegard alloc] init]; - MHTSpiritFacilitater *faceManager = [MHTSpiritFacilitater partowardsiciptowardsiondSenintrtowardsemporalntFacilittowardseer]; - senintrtowardsemporalntRegard.senintratemporalnts = faceManager.senintratemporalntGarment; - senintrtowardsemporalntRegard.delegate = self; - if (@available(iOS 11.0, *)) { - NSBundle *bundle = [NSBundle bundleForClass:[self class]]; - senintrtowardsemporalntRegard.backgroundColor = [UIColor colorNamed:@"q_input_extend_bg" inBundle:bundle compatibleWithTraitCollection:nil]; - } else { - senintrtowardsemporalntRegard.backgroundColor = [UIColor colorWithRed:(246)/255.0f green:(246)/255.0f blue:(246)/255.0f alpha:1]; - } - return senintrtowardsemporalntRegard; -} - -- (UIView *)digitentiretyibraExecutiveAplictowardsionearanceDirectortowardseRegard:(MHTKeyboardExecutive *)keydirectorateExecutive{ - MHTinputAppearanceRegard *senintrtowardsemporalntRegard = [[MHTinputAppearanceRegard alloc] init]; - self.appearanceRegard = senintrtowardsemporalntRegard; - senintrtowardsemporalntRegard.appearanceStatement = self.appearancetGarment; - senintrtowardsemporalntRegard.delegate = self; - senintrtowardsemporalntRegard.backgroundColor = [UIColor colorWithRed:(246)/255.0f green:(246)/255.0f blue:(246)/255.0f alpha:1]; - return senintrtowardsemporalntRegard; -} - -- (CGFloat)digitentiretyibraExecutiveSenintrtowardsemporalntDirectortowardseAltitude:(MHTKeyboardExecutive *)keydirectorateExecutive { - return 294; -} - -- (CGFloat)digitentiretyibraExecutiveSpreadDirectortowardseAltitude:(MHTKeyboardExecutive *)keydirectorateExecutive { - return 174; -} - -- (CGFloat)digitentiretyibraExecutiveAplictowardsionearanceDirectortowardseAltitude:(MHTKeyboardExecutive *)keydirectorateExecutive { - return 184 + kSafeAreaBottomHeight; -} - -- (void)introjectionObstacleRegard:(MHTIntrojectionObstacleRegard *)introjectionObstacleRegard onEmotionButtonClick:(UIButton *)senintratemporalntSwopBtuton { - if (senintratemporalntSwopBtuton.isSelected) { - [_keydirectorateExecutive swopToSenintrtowardsemporalntDirectortowardseDigitentiretyibra]; - } else { - _introjectionObstacleRegard.introjectionEssayRegard.text = @""; - [_introjectionObstacleRegard essayRegardBecomeThresholdResponder]; - } -} - -- (void)introjectionObstacleRegard:(MHTIntrojectionObstacleRegard *)introjectionObstacleRegard onReputtowardsionSwopBtutonTicktack:(UIButton *)reputationSwopBtuton { - if (!reputationSwopBtuton.isSelected) { - _introjectionObstacleRegard.introjectionEssayRegard.text = @""; - [_introjectionObstacleRegard essayRegardBecomeThresholdResponder]; - } else { - [_keydirectorateExecutive brakeEntiretyDirectortowardseRegard]; - } -} - -- (void)introjectionObstacleRegard:(MHTIntrojectionObstacleRegard *)introjectionObstacleRegard onGiftButtonClick:(UIButton *)senintratemporalntSwopBtuton { - [_keydirectorateExecutive brakeEntiretyDirectortowardseRegard]; - YUMIDischargePresentRegard * presentRegard = [[YUMIDischargePresentRegard alloc] initWithType:DischargePresentGenre_User uid:nil]; - YUMIExternalizeConsumerAbstractMatrix * userModel = [[YUMIExternalizeConsumerAbstractMatrix alloc] init]; - userModel.avatar = self.userInfo.avatar; - userModel.nick = self.userInfo.nick; - userModel.uid = self.session.sessionId.integerValue; - userModel.isSelect = YES; - [presentRegard prohibitipositionPresentConsumers:@[userModel]]; - [self presentViewController:presentRegard animated:YES completion:nil]; -} - -- (void)introjectionObstacleRegard:(MHTIntrojectionObstacleRegard *)introjectionObstacleRegard onCameraButtonClick:(UIButton *)senintratemporalntSwopBtuton { - [_keydirectorateExecutive brakeEntiretyDirectortowardseRegard]; - @kWeakify(self); - [YYUtility examineCameraAvailable:^{ - @kStrongify(self); - UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; - imagePicker.delegate = self; - imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; - imagePicker.allowsEditing = YES; - [self presentViewController:imagePicker animated:YES completion:NULL]; - } denied:^{ - @kStrongify(self); - [self EvidenceNgtowardsAplictowardsionearance:@"相机不可用" content:YMLocalizedString(@"Session_View_Controller_10")]; - } restriction:^{ - @kStrongify(self); - [self EvidenceNgtowardsAplictowardsionearance:@"相机不可用" content:YMLocalizedString(@"Session_View_Controller_12")]; - }]; - -} - -- (void)introjectionObstacleRegard:(MHTIntrojectionObstacleRegard *)introjectionObstacleRegard onPhototButtonClick:(UIButton *)senintratemporalntSwopBtuton { - if (senintratemporalntSwopBtuton.isSelected) { - @kWeakify(self); - [YYUtility examineAssetsLibrayAvailable:^{ - @kStrongify(self); - [TZImagePickerConfig sharedInstance].allowPickingImage = YES; - dispatch_async(dispatch_get_global_queue(0, 0), ^{ - [[TZImageManager manager] getCameraRollAlbumWithFetchAssets:NO completion:^(TZAlbumModel *model) { - [[TZImageManager manager] getAssetsFromFetchResult:model.result completion:^(NSArray *models) { - dispatch_async(dispatch_get_main_queue(), ^{ - NSMutableArray * array = [NSMutableArray array]; - if (models.count > 40) { - for (int i = 0; i < 40; i++) { - TZAssetModel * assets = [models objectAtIndex:i]; - MHTAppearanceIndicateMatrix * infor = [[MHTAppearanceIndicateMatrix alloc] init]; - infor.isOrigin = NO; - infor.assetInfo = assets; - [array addObject:infor]; - } - } else { - for (int i = 0; i < models.count; i++) { - TZAssetModel * assets = [models objectAtIndex:i]; - MHTAppearanceIndicateMatrix * infor = [[MHTAppearanceIndicateMatrix alloc] init]; - infor.isOrigin = NO; - infor.assetInfo = assets; - [array addObject:infor]; - } - } - self.appearancetGarment = array; - if (self.appearancetGarment.count > 0) { - self.appearanceRegard.appearanceStatement = self.appearancetGarment; - [self.keydirectorateExecutive swopToAplictowardsionearanceDirectortowardseDigitentiretyibra]; - } else { - TZImagePickerController *imagePickerVc = [[TZImagePickerController alloc] initWithMaxImagesCount:1 delegate:self]; - imagePickerVc.modalPresentationStyle = UIModalPresentationOverFullScreen; - imagePickerVc.allowPickingVideo = NO; - imagePickerVc.allowTakeVideo = NO; - imagePickerVc.naviBgColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - imagePickerVc.naviTitleColor = [DJDKMIMOMColor mainEssayPrettify]; - imagePickerVc.barItemTextColor = [DJDKMIMOMColor mainEssayPrettify]; - [self presentViewController:imagePickerVc animated:YES completion:nil]; - } - }); - }]; - }]; - }); - } denied:^{ - @kStrongify(self); - [self EvidenceNgtowardsAplictowardsionearance:@"无法访问相册" content:YMLocalizedString(@"Session_View_Controller_14")]; - } restriction:^{ - @kStrongify(self); - [self EvidenceNgtowardsAplictowardsionearance:@"无法访问相册" content:YMLocalizedString(@"Session_View_Controller_16")]; - }]; - } else { - [_keydirectorateExecutive brakeEntiretyDirectortowardseRegard]; - _introjectionObstacleRegard.introjectionEssayRegard.text = @""; - [_introjectionObstacleRegard essayRegardResignThresholdResponder]; - } - -} - -- (void)EvidenceNgtowardsAplictowardsionearance:(NSString *)title content:(NSString *)content { - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.title = title; - config.message = content; - - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; - if ([[UIApplication sharedApplication] canOpenURL:url]) { - [[UIApplication sharedApplication] openURL:url]; - } - } cancelHandler:^{ - }]; -} - -#pragma mark - IntrojectionDirectorateRepresendtation -- (void)keydirectorateExecutive:(MHTKeyboardExecutive *)keydirectorateExecutive onWholeInputViewHeightDidChange:(CGFloat)wholeInputViewHeight reason:(WholeIntrojectionRegardHeightDidChangeReason)reason { - [UIView animateWithDuration:0.2 animations:^{ - [self.interlocutionTabulationViwe nim_scrollToExtreme:NO]; - [self.interlocutionTabulationViwe mas_remakeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.top.mas_equalTo(self.interlocutionNevRegard.mas_bottom); - make.bottom.mas_equalTo(self.view).offset(-wholeInputViewHeight - kSafeAreaBottomHeight); - }]; - }]; -} - -#pragma mark - QEmotionDirectorateRegardRepresendtation - -- (void)senintrtowardsemporalntRegard:(MHTSpiritDirectorateRegard *)senintrtowardsemporalntRegard didSelectEmotion:(MHTSpirit *)emotion atIndex:(NSInteger)index { - - [_introjectionObstacleRegard insertSenintrtowardsemporalnt:emotion.displayName]; -} - -- (void)senintrtowardsemporalntRegardDidChosenRepresenttowardsionBtuton:(MHTSpiritDirectorateRegard *)senintrtowardsemporalntRegard { - if (![_introjectionObstacleRegard representtowardsionSenintrtowardsemporalnt]){ - - [_introjectionObstacleRegard.introjectionEssayRegard deleteBackward]; - } -} - -- (void)senintrtowardsemporalntRegardDidChosenDischargeBtuton:(MHTSpiritDirectorateRegard *)senintrtowardsemporalntRegard { - [self prohibitichargeEssayCommunictowardsion:[_introjectionObstacleRegard essayRegardIntrojectionOrdinaryEssay]]; - _introjectionObstacleRegard.introjectionEssayRegard.text = @""; - [_keydirectorateExecutive brakeEntiretyDirectortowardseRegard]; - -} - - -- (void)introjectionObstacleRegard:(MHTIntrojectionObstacleRegard *)introjectionObstacleRegard onKeyboardSendClick:(NSString *)inputNormalText { - [self prohibitichargeEssayCommunictowardsion:inputNormalText]; - _introjectionObstacleRegard.introjectionEssayRegard.text = @""; - [_keydirectorateExecutive brakeEntiretyDirectortowardseRegard]; -} - -#pragma mark - QinputPhotoRegardRepresendtation -- (void)qintrojectionAplictowardsionearanceRegard:(MHTinputAppearanceRegard *)view didClickSend:(NSArray *)appearanceStatement { - for (int i = 0; i < appearanceStatement.count; i++) { - MHTAppearanceIndicateMatrix * imageInfo = [appearanceStatement secureGroalTowardsIndictowardsrix1:i]; - UIImage * image; - if (view.isOrigin) { - image = imageInfo.originImage; - } else { - image = imageInfo.compressImage; - } - if (image == nil){ - continue; - } - - NIMMessage * message = [NEMCCommunicationMaker communAboutIndictowardse:image]; - - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:self.session error:nil]; - [view replacementConcludeAplictowardsionearances]; - } -} - -- (void)qintrojectionAplictowardsionearanceRegard:(MHTinputAppearanceRegard *)view didClickPhoto:(UIButton *)sender { - TZImagePickerController *imagePickerVc = [[TZImagePickerController alloc] initWithMaxImagesCount:1 delegate:self]; - imagePickerVc.modalPresentationStyle = UIModalPresentationOverFullScreen; - imagePickerVc.allowPickingVideo = NO; - imagePickerVc.allowTakeVideo = NO; - imagePickerVc.naviBgColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - imagePickerVc.naviTitleColor = [DJDKMIMOMColor mainEssayPrettify]; - imagePickerVc.barItemTextColor = [DJDKMIMOMColor mainEssayPrettify]; - [self presentViewController:imagePickerVc animated:YES completion:nil]; -} - -#pragma mark - UIImagePickerControllerDelegate -- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info -{ - UIImage *selectedPhoto = [info objectForKey:UIImagePickerControllerEditedImage]; - if (selectedPhoto) { - if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) { - UIImageWriteToSavedPhotosAlbum(selectedPhoto, nil, nil, nil); - } - - NIMMessage * message = [NEMCCommunicationMaker communAboutIndictowardse:selectedPhoto]; - - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:self.session error:nil]; - } - [picker dismissViewControllerAnimated:YES completion:^{}]; -} - -- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{ - [picker dismissViewControllerAnimated:YES completion:^{ - }]; -} - - -#pragma mark - Getters And Setters -- (NSArray *)messages { - if (!_messages) { - _messages = [[NSMutableArray alloc] init]; - } - return _messages; -} - -#pragma mark - Event Response -- (void)concludeDigitalDirectortowardse { - [self.view endEditing:YES]; - [self.introjectionObstacleRegard essayRegardResignThresholdResponder]; -} - -- (UITableView *)interlocutionTabulationViwe { - if (!_interlocutionTabulationViwe) { - _interlocutionTabulationViwe = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _interlocutionTabulationViwe.delegate = self; - _interlocutionTabulationViwe.dataSource = self; - _interlocutionTabulationViwe.backgroundColor = UIColor.clearColor; - _interlocutionTabulationViwe.separatorStyle = UITableViewCellSeparatorStyleNone; - _interlocutionTabulationViwe.showsVerticalScrollIndicator = NO; - if (@available(iOS 11.0, *)) { - _interlocutionTabulationViwe.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - } - return _interlocutionTabulationViwe; -} - -- (InterlocutionNevRegard *)interlocutionNevRegard { - if (!_interlocutionNevRegard) { - _interlocutionNevRegard = [[InterlocutionNevRegard alloc] init]; - _interlocutionNevRegard.delegate = self; - } - return _interlocutionNevRegard; -} - -- (InterlocutionVentureRegard *)riskPrecautiousRegard { - if (!_riskPrecautiousRegard) { - _riskPrecautiousRegard = [[InterlocutionVentureRegard alloc] init]; - _riskPrecautiousRegard.delegate = self; - } - return _riskPrecautiousRegard; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/InterlocutionVentureCache.h b/YuMi/Modules/YMMessage/View/Session/InterlocutionVentureCache.h deleted file mode 100644 index 6129ab0c..00000000 --- a/YuMi/Modules/YMMessage/View/Session/InterlocutionVentureCache.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// InterlocutionVentureCache.h -// YUMI -// -// Created by YUMI on 2022/8/11. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface InterlocutionVentureCache : NSObject - -+ (instancetype)partowardsiciptowardsionConceal; - -- (void)preserveConcludeVenture:(NSString *)userId; - -- (NSString *)acquireConcludeChinwagVenturePrecautious:(NSString *)userid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/InterlocutionVentureCache.m b/YuMi/Modules/YMMessage/View/Session/InterlocutionVentureCache.m deleted file mode 100644 index ca10680d..00000000 --- a/YuMi/Modules/YMMessage/View/Session/InterlocutionVentureCache.m +++ /dev/null @@ -1,49 +0,0 @@ -// -// InterlocutionVentureCache.m -// YUMI -// -// Created by YUMI on 2022/8/11. -// - -#import "InterlocutionVentureCache.h" -#import "AccountAbstractStorage.h" -static InterlocutionVentureCache * cache = nil; - - -@interface InterlocutionVentureCache () -@property (nonatomic,strong) NSCache *cache; -@end - -@implementation InterlocutionVentureCache - -+ (instancetype)partowardsiciptowardsionConceal { - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - cache = [[InterlocutionVentureCache alloc] init]; - }); - return cache; -} - -- (void)preserveConcludeVenture:(NSString *)userId { - if (userId.length > 0) { - [self.cache setObject:userId forKey:userId]; - } -} - -- (NSString *)acquireConcludeChinwagVenturePrecautious:(NSString *)userid { - if (userid) { - return [self.cache objectForKey:userid]; - } - return nil; -} - - -- (NSCache *)cache { - if (!_cache) { - _cache = [[NSCache alloc]init]; - _cache.countLimit = 500; - } - return _cache; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/SessionInfoViewController.h b/YuMi/Modules/YMMessage/View/Session/SessionInfoViewController.h new file mode 100644 index 00000000..e5780ca1 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/SessionInfoViewController.h @@ -0,0 +1,21 @@ +// +// SessionInfoViewController.h +// YUMI +// +// Created by YUMI on 2022/4/25. +// + +#import "BaseViewController.h" +#import +NS_ASSUME_NONNULL_BEGIN +@class UserInfoModel; +@interface SessionInfoViewController : BaseViewController +///回话 +@property (nonatomic,strong) NIMSession *session; +///用户信息 +@property (nonatomic,strong) UserInfoModel *userInfo; +///置顶回话 +@property (nonatomic,strong) NSMutableDictionary *stickTopMessages; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/SessionInfoViewController.m b/YuMi/Modules/YMMessage/View/Session/SessionInfoViewController.m new file mode 100644 index 00000000..2d3680ac --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/SessionInfoViewController.m @@ -0,0 +1,262 @@ +// +// SessionInfoViewController.m +// YUMI +// +// Created by YUMI on 2022/4/25. +// + +#import "SessionInfoViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "TTPopup.h" +#import "YUMIHtmlUrl.h" +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" +#import "NSMutableDictionary+Saft.h" +#import "StatisticsServiceHelper.h" +#import "ClientConfig.h" +#import "XNDJTDDLoadingTool.h" +///Model +#import "SessionSettingModel.h" +#import "UserInfoModel.h" +///View +#import "SessionSettingTableViewCell.h" +#import "SessionSettingUserView.h" +#import "XPWebViewController.h" +#import "XPMineUserInfoViewController.h" +#import "XPMineSimpleUserInfoViewController.h" + +@interface SessionInfoViewController () +///头部试图 +@property (nonatomic,strong) SessionSettingUserView *headerView; +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据 +@property (nonatomic,strong) NSArray *datasource; +@end + +@implementation SessionInfoViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"SessionInfoViewController0"); + [self.view addSubview:self.tableView]; + self.tableView.tableHeaderView = self.headerView; + self.headerView.userInfo = self.userInfo; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view).inset(15); + make.top.mas_equalTo(self.view).offset(12); + make.height.mas_equalTo(50 * 3 + 70); + }]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 50; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + SessionSettingTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([SessionSettingTableViewCell class])]; + if (cell == nil) { + cell = [[SessionSettingTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([SessionSettingTableViewCell class])]; + } + SessionSettingModel * model= [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.settingItem = model; + cell.delegate = self; + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + SessionSettingModel * model = [self.datasource safeObjectAtIndex1:indexPath.row]; + if (model.settingType == SessionSettingType_report) { + if ([ClientConfig shareConfig].canOpen) { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEvent_chat_set_report_click]; + XPWebViewController *webVC = [[XPWebViewController alloc] init]; + NSString *urlstr = [NSString stringWithFormat:@"%@?reportUid=%ld&source=CHAT",URLWithType(kReportRoomURL),self.userInfo.uid]; + webVC.url = urlstr; + [self.navigationController pushViewController:webVC animated:YES]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"SessionInfoViewController1")]; + } + + } + } +} + +#pragma mark - SessionSettingTableViewCellDelegate +- (void)sessionSettingTableViewCell:(SessionSettingModel *)item switchState:(UISwitch *)switchOn { + NSString * userId = [NSString stringWithFormat:@"%ld",self.userInfo.uid]; + if (item.settingType == SessionSettingType_Top) { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEvent_chat_set_top_click]; + if (switchOn.on) { + NIMAddStickTopSessionParams * params = [[NIMAddStickTopSessionParams alloc] initWithSession:self.session]; + [[NIMSDK sharedSDK].chatExtendManager addStickTopSession:params completion:^(NSError * _Nullable error, NIMStickTopSessionInfo * _Nullable newInfo) { + if (error == nil) { + [self.stickTopMessages safeSetObject:newInfo forKey:self.session]; + } + }]; + } else { + NIMStickTopSessionInfo * topInfo; + NIMSession * topSession; + for (int i = 0; i < self.stickTopMessages.allKeys.count; i++) { + NIMSession * session = [self.stickTopMessages.allKeys safeObjectAtIndex1:i]; + if (session.sessionId == self.session.sessionId) { + topSession = session; + break; + } + } + if (topSession) { + topInfo = [self.stickTopMessages objectForKey:topSession]; + } + if (topInfo) { + [[NIMSDK sharedSDK].chatExtendManager removeStickTopSession:topInfo completion:^(NSError * _Nullable error, NIMStickTopSessionInfo * _Nullable removedInfo) { + if (error == nil) { + [self.stickTopMessages removeObjectForKey:topSession]; + } + }]; + } + } + } else if (item.settingType == SessionSettingType_black) { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEvent_chat_set_blacklist_click]; + NSString *title = nil; + NSString *message = nil; + if (switchOn.on) { + title = YMLocalizedString(@"SessionInfoViewController2"); + message = YMLocalizedString(@"SessionInfoViewController3"); + } else { + title = YMLocalizedString(@"SessionInfoViewController4"); + message = YMLocalizedString(@"SessionInfoViewController5"); + } + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.title = title; + config.message = message; + [TTPopup alertWithConfig:config confirmHandler:^{ + if (!switchOn.on) { + [[NIMSDK sharedSDK].userManager removeFromBlackBlackList:userId completion:^(NSError * _Nullable error) { + if (error == nil) { + [self showErrorToast:YMLocalizedString(@"SessionInfoViewController6")]; + item.state = NO; + [self.tableView reloadData]; + } else { + [self showErrorToast:error.description]; + } + + }]; + } else { + [[NIMSDK sharedSDK].userManager addToBlackList:userId completion:^(NSError * _Nullable error) { + if (error == nil) { + [self showErrorToast:YMLocalizedString(@"SessionInfoViewController7")]; + item.state = YES; + [self.tableView reloadData]; + } else { + [self showErrorToast:error.description]; + } + }]; + } + } cancelHandler:^{ + + }]; + } +} + + +#pragma mark - Event Response +- (void)didTapUserRecognizer { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEvent_chat_set_data_click]; + + if ([ClientConfig shareConfig].canOpen) { + XPMineUserInfoViewController * mineVC = [[XPMineUserInfoViewController alloc] init]; + mineVC.uid = self.userInfo.uid; + [self.navigationController pushViewController:mineVC animated:YES]; + }else{ + XPMineSimpleUserInfoViewController * mineVC = [[XPMineSimpleUserInfoViewController alloc] init]; + mineVC.uid = self.userInfo.uid; + [self.navigationController pushViewController:mineVC animated:YES]; + } +} + +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor whiteColor]; + _tableView.layer.masksToBounds = YES; + _tableView.layer.cornerRadius = 8; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[SessionSettingTableViewCell class] forCellReuseIdentifier:NSStringFromClass([SessionSettingTableViewCell class])]; + } + return _tableView; +} + +- (SessionSettingUserView *)headerView { + if (!_headerView) { + _headerView = [[SessionSettingUserView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 70)]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapUserRecognizer)]; + [_headerView addGestureRecognizer:tap]; + } + return _headerView; +} + +- (NSArray *)datasource { + if (!_datasource) { + SessionSettingModel * topModel = [[SessionSettingModel alloc] init]; + topModel.title = YMLocalizedString(@"SessionInfoViewController8"); + topModel.settingType = SessionSettingType_Top; + NIMSession * topSession; + for (int i = 0; i < self.stickTopMessages.allKeys.count; i++) { + NIMSession * session = [self.stickTopMessages.allKeys safeObjectAtIndex1:i]; + if (session.sessionId == self.session.sessionId) { + topSession = session; + break; + } + } + if (topSession && topSession.sessionId.length > 0) { + topModel.state = YES; + } else { + topModel.state = NO; + } + + + NSString * uid = [NSString stringWithFormat:@"%ld", self.userInfo.uid]; + BOOL isBlack = [[NIMSDK sharedSDK].userManager isUserInBlackList:uid]; + + SessionSettingModel * blackModel = [[SessionSettingModel alloc] init]; + blackModel.title = YMLocalizedString(@"SessionInfoViewController9"); + blackModel.state = isBlack; + blackModel.settingType = SessionSettingType_black; + + SessionSettingModel * reportModel = [[SessionSettingModel alloc] init]; + reportModel.title = YMLocalizedString(@"SessionInfoViewController10"); + reportModel.settingType = SessionSettingType_report; + + _datasource = @[topModel, blackModel, reportModel]; + } + return _datasource; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/SessionRiskCache.h b/YuMi/Modules/YMMessage/View/Session/SessionRiskCache.h new file mode 100644 index 00000000..0c6325e1 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/SessionRiskCache.h @@ -0,0 +1,21 @@ +// +// SessionRiskCache.h +// YUMI +// +// Created by YUMI on 2022/8/11. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface SessionRiskCache : NSObject + ++ (instancetype)shareCache; + +- (void)saveCloseRisk:(NSString *)userId; + +- (NSString *)getCloseChatRiskAlert:(NSString *)userid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/SessionRiskCache.m b/YuMi/Modules/YMMessage/View/Session/SessionRiskCache.m new file mode 100644 index 00000000..56f1927d --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/SessionRiskCache.m @@ -0,0 +1,50 @@ +// +// SessionRiskCache.m +// YUMI +// +// Created by YUMI on 2022/8/11. +// + +#import "SessionRiskCache.h" +#import "AccountInfoStorage.h" +static SessionRiskCache * cache = nil; + + +@interface SessionRiskCache () +/// +@property (nonatomic,strong) NSCache *cache; +@end + +@implementation SessionRiskCache + ++ (instancetype)shareCache { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + cache = [[SessionRiskCache alloc] init]; + }); + return cache; +} + +- (void)saveCloseRisk:(NSString *)userId { + if (userId.length > 0) { + [self.cache setObject:userId forKey:userId]; + } +} + +- (NSString *)getCloseChatRiskAlert:(NSString *)userid { + if (userid) { + return [self.cache objectForKey:userid]; + } + return nil; +} + + +- (NSCache *)cache { + if (!_cache) { + _cache = [[NSCache alloc]init]; + _cache.countLimit = 500; + } + return _cache; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/SessionViewController.h b/YuMi/Modules/YMMessage/View/Session/SessionViewController.h new file mode 100644 index 00000000..714379ff --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/SessionViewController.h @@ -0,0 +1,25 @@ +// +// SessionViewController.h +// YUMI +// +// Created by zu on 2021/11/28. +// + +#import "MvpViewController.h" +#import "SessionListViewController.h" +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface SessionViewController : MvpViewController +/// integer($int64)当 hallBtnStatus=6 时,对应的申请记录Id +@property (nonatomic,assign) NSInteger recordId; +///integer($int64)当 hallBtnStatus=6 时,对应的申请记录Id,用户申请 +@property (nonatomic,assign) BOOL isUser; +- (instancetype)initWithSession:(NIMSession *)session; +@property (nonatomic, assign) SessionListOpenType openType; +///置顶回话 +@property (nonatomic,strong) NSMutableDictionary *stickTopMessages; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/SessionViewController.m b/YuMi/Modules/YMMessage/View/Session/SessionViewController.m new file mode 100644 index 00000000..b8e1131d --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/SessionViewController.m @@ -0,0 +1,1103 @@ +// +// SessionViewController.m +// YUMI +// +// Created by zu on 2021/11/28. +// + +#import "SessionViewController.h" +#import +#import +#import +#import +#import +///Tool +#import "XCCurrentVCStackManager.h" +#import "NIMMessageMaker.h" +#import "YUMIMacroUitls.h" +#import "UITableView+NIMScrollToBottom.h" +#import "DJDKMIMOMColor.h" +#import "NSArray+Safe.h" +#import "QEmotionHelper.h" +#import "QKeyboardManager.h" +#import "YYUtility.h" +#import "TTPopup.h" +#import "AccountInfoStorage.h" +#import "NSDate+DateUtils.h" +#import "PLTimeUtil.h" +#import "StatisticsServiceHelper.h" +#import "NIMMessageUtils.h" +#import "ClientConfig.h" +///Model +#import "RoomInfoModel.h" +#import "UserInfoModel.h" +#import "MessageMenuModel.h" +#import "SessionRiskCache.h" +#import "QPhotoImageModel.h" +#import "AttachmentModel.h" +#import "MessageBaseModel.h" +#import "MessageTextModel.h" +#import "MessageAudioModel.h" +#import "MessageTimeModel.h" +#import "MessageImageModel.h" +#import "MessageUnSupportModel.h" +#import "MessageGiftModel.h" +#import "MessageTextClickModel.h" +#import "MessageGuildModel.h" +#import "MessageOpenLiveModel.h" +#import "MessageRedPacketModel.h" +#import "MessageMonentsAutoModel.h" +#import "MessageMonentsModel.h" +#import "MessageRiskAlertModel.h" +#import "MessageFindNewGreetModel.h" +#import "MessageSkillCardModel.h" +#import "MessageTweetModel.h" +#import "MessageLevelUpgradeModel.h" +#import "MessageOpenLiveModel.h" +#import "MessageRevokeModel.h" +#import "MessageTipsModel.h" +///View +#import "XPMineUserInfoViewController.h" +#import "XPMineSimpleUserInfoViewController.h" +#import "XPRoomViewController.h" +#import "RoomHostDelegate.h" +#import "MessageCell.h" +#import "SessionChatLimitView.h" +#import "XPSendGiftView.h" +#import "SessionNavView.h" +#import "SessionInfoViewController.h" +#import "SessionRiskView.h" +#import "QInputBarView.h" +#import "QKeyboardManager.h" +#import "QEmotionBoardView.h" +#import "QinputPhotoView.h" +#import "SessionUserInfoTableViewCell.h" +///P +#import "MessagePresenter.h" +#import "MessageProtocol.h" + + +@interface SessionViewController () + +@property (nonatomic, strong) NIMSession * session; +@property (nonatomic, strong) NSMutableArray * messages; +///导航栏 +@property (nonatomic,strong) SessionNavView *sessionNavView; +@property (nonatomic, strong) UITableView * sessionTableView; +@property (nonatomic, strong) UserInfoModel *userInfo; +@property (nonatomic, strong) UserInfoModel *detailUserInfo; +///最后的一条消息 +@property (nonatomic,strong) NIMMessage *lastMessage; +///私聊风险提示 +@property (nonatomic,strong) SessionRiskView *riskAlertView; +@property(nonatomic,strong)QInputBarView *inputBarView; +@property(nonatomic,strong)QKeyboardManager *keyboardManager; +///相册 +@property (nonatomic,strong) QinputPhotoView *photoView; +/// +@property (nonatomic,strong) NSArray *phototArray; +@end + +@implementation SessionViewController + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (void)dealloc { + [[NIMSDK sharedSDK].chatManager removeDelegate:self]; + [[NIMSDK sharedSDK].conversationManager removeDelegate:self]; + [[NIMSDK sharedSDK].mediaManager removeDelegate:self]; + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +- (MessagePresenter *)createPresenter { + return [[MessagePresenter alloc] init]; +} + +- (instancetype)initWithSession:(NIMSession *)session { + self = [super init]; + if (self) { + _session = session; + } + return self; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initViews]; + [self initLayout]; + [IQKeyboardManager sharedManager].enable = NO; + [IQKeyboardManager sharedManager].enableAutoToolbar = NO; + [self initHeaderAndFooterRrfresh]; + [[NIMSDK sharedSDK].chatManager addDelegate:self]; + [[NIMSDK sharedSDK].conversationManager addDelegate:self]; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [self.presenter getFansLike:self.session.sessionId]; + [self.presenter getUserInfoWithUid:self.session.sessionId]; +} + +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.sessionTableView.mj_header = header; + [self headerRefresh]; + [self initData]; +} + +- (void)headerRefresh { + if (self.messages.count > 0) { + MessageBaseModel * model = self.messages.firstObject; + [[[NIMSDK sharedSDK] conversationManager] messagesInSession:self.session message:model.message limit:20 completion:^(NSError * _Nullable error, NSArray * _Nullable messages) { + [self.sessionTableView.mj_header endRefreshing]; + if (error == nil && messages.count > 0) { + for (int i = ((int)messages.count -1); i >= 0; i--) { + NIMMessage * message = [messages safeObjectAtIndex1:i]; + MessageBaseModel * model = [self modeTransformMessage:message]; + [self.messages insertObject:model atIndex:0]; + if ((i -1) > 0) { + NIMMessage * message1 = [messages safeObjectAtIndex1:i -1]; + CGFloat dur = message.timestamp - message1.timestamp; + if (dur / 60 > 5) { + MessageBaseModel * timeModel = [self createTimeMessage:message]; + [self.messages insertObject:timeModel atIndex:0]; + } + } + } + } + [self.sessionTableView reloadData]; + }]; + } else { + [[[NIMSDK sharedSDK] conversationManager] messagesInSession:self.session message:nil limit:20 completion:^(NSError * _Nullable error, NSArray * _Nullable messages) { + [self.sessionTableView.mj_header endRefreshing]; + if (error == nil) { + for (int i = 0; i < messages.count; i++) { + NIMMessage * message = [messages safeObjectAtIndex1:i]; + MessageBaseModel * model = [self modeTransformMessage:message]; + if ((i + 1) < messages.count) { + NIMMessage * message1 = [messages safeObjectAtIndex1:i + 1]; + CGFloat dur = message1.timestamp - message.timestamp; + if (dur / 60 > 5) { + MessageBaseModel * timeModel = [self createTimeMessage:message]; + [self.messages addObject:timeModel]; + } + } + [self.messages addObject:model]; + } + } + [self.sessionTableView reloadData]; + [self.sessionTableView nim_scrollToBottom:YES]; + }]; + } +} + +#pragma mark - 提前加载相册中的图片 +- (void)loadAlbumPhotos { + @kWeakify(self); + [YYUtility checkAssetsLibrayAvailable:^{ + @kStrongify(self); + + } denied:^{ + + } restriction:^{ + + }]; +} + +#pragma mark - cell的样式 +- (MessageBaseModel *)modeTransformMessage:(NIMMessage *)message { + MessageBaseModel * model; + switch (message.messageType) { + case NIMMessageTypeText: + model = [[MessageTextModel alloc] initWithMessage:message]; + break; + case NIMMessageTypeAudio: + model = [[MessageAudioModel alloc] initWithMessage:message]; + break; + case NIMMessageTypeImage: + model = [[MessageImageModel alloc] initWithMessage:message]; + break; + case NIMMessageTypeTip: + model = [[MessageTipsModel alloc] initWithMessage:message]; + break; + case NIMMessageTypeCustom: + model = [self modelTransformCustomMessage:message]; + break; + default: + model = [[MessageUnSupportModel alloc] initWithMessage:message]; + break; + break; + } + return model; +} + +- (MessageBaseModel *)modelTransformCustomMessage:(NIMMessage *)message { + MessageBaseModel * model; + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + AttachmentModel *attachment = (AttachmentModel *)obj.attachment; + if (attachment.first == CustomMessageType_Gift && attachment.second == Custom_Message_Sub_Gift_Send) { + model = [[MessageGiftModel alloc] initWithMessage:message]; + } else if(attachment.first == CustomMessageType_Secretary) { + model = [[MessageTextClickModel alloc] initWithMessage:message]; + } else if(attachment.first == CustomMessageType_Hall) { + model = [[MessageGuildModel alloc] initWithMessage:message]; + } else if(attachment.first == CustomMessageType_Member_Online && attachment.second == Custom_Message_Type_Attention_Member_Online) { + model = [[MessageOpenLiveModel alloc] initWithMessage:message]; + } else if(attachment.first == CustomMessageType_Application_Share && attachment.second == Custom_Message_Sub_Application_Share_Room) { + model = [[MessageOpenLiveModel alloc] initWithMessage:message]; + } else if(attachment.first == CustomMessageType_User_UpGrade && (attachment.second == Custom_Message_Sub_User_UpGrade_Charm || attachment.second == Custom_Message_Sub_User_UpGrade_Exper)) { + model = [[MessageLevelUpgradeModel alloc] initWithMessage:message]; + } else if(attachment.first == CustomMessageType_Tweet && attachment.second == Custom_Message_Sub_Tweet_News) { + model = [[MessageTweetModel alloc] initWithMessage:message]; + } else if(attachment.first == CustomMessageType_Skill_Card) { + model = [[MessageSkillCardModel alloc] initWithMessage:message]; + } else if(attachment.first == CustomMessageType_FindNew){ + model = [[MessageFindNewGreetModel alloc] initWithMessage:message]; + } else if(attachment.first == CustomMessageType_Chat_Risk_Alert) { + model = [[MessageRiskAlertModel alloc] initWithMessage:message]; + }else if(attachment.first == CustomMessageType_Monents && attachment.second == Custom_Message_Sub_Monents_Share) { + model = [[MessageMonentsModel alloc] initWithMessage:message]; + }else if(attachment.first == CustomMessageType_Monents && (attachment.second == Custom_Message_Sub_Monents_Approved | attachment.second == Custom_Message_Sub_Monents_Ban_Delete)) { + model = [[MessageMonentsAutoModel alloc] initWithMessage:message]; + } else if(attachment.first == CustomMessageType_Message_Handle && attachment.second == Custom_Message_Sub_Message_Handle_Content) { + model = [[MessageMonentsAutoModel alloc] initWithMessage:message]; + } else if (attachment.first == CustomMessageType_RedPacket && attachment.second == Custom_Message_Sub_AllDiamandRedPacket) { + model = [[MessageRedPacketModel alloc] initWithMessage:message]; + } else { + model = [[MessageUnSupportModel alloc] initWithMessage:message]; + } + return model; +} + +- (UINavigationController *)getKeyWindowNav { + if ([XCCurrentVCStackManager shareManager].getCurrentVC) { + return [XCCurrentVCStackManager shareManager].getCurrentVC.navigationController; + } + return self.navigationController; +} + +- (MessageBaseModel *)createTimeMessage:(NIMMessage *)message { + MessageTimeModel * timeModel = [[MessageTimeModel alloc] initWithMessage:message]; + timeModel.time = [self timestrToTimeSecond:[NSString stringWithFormat:@"%f", message.timestamp]]; + return timeModel; +} + +- (NSString *)timestrToTimeSecond:(NSString *)timeStr {//timestr 豪秒 + NSTimeInterval interval = [timeStr doubleValue]; + NSDate *date = [NSDate dateWithTimeIntervalSince1970:interval]; + return [NSDate stringFromDate:date]; +} + +- (void)addTimeMessage:(NIMMessage *)message { + if (self.messages.count > 0) { + NIMMessage * lastMessage = self.messages.lastObject.message; + CGFloat dur = message.timestamp - lastMessage.timestamp; + if (dur / 60 > 5) { + NIMMessage * newMessage = [[NIMMessage alloc] init]; + newMessage.timestamp = message.timestamp; + [newMessage setValue:self.session forKey:@"session"]; + MessageBaseModel * timeModel = [self createTimeMessage:newMessage]; + [self.messages addObject:timeModel]; + } + } +} + +- (void)addRevokeMessage:(NIMMessage *)message title:(NSString *)title { + NIMMessage * revokeMessage = [[NIMMessage alloc] init]; + [revokeMessage setValue:self.session forKey:@"session"]; + [revokeMessage setValue:@(NIMMessageTypeTip) forKey:@"messageType"]; + revokeMessage.timestamp = [PLTimeUtil getNowTimeTimestampMillisecond].longLongValue; + revokeMessage.text = title; + [[NIMSDK sharedSDK].conversationManager saveMessage:revokeMessage forSession:self.session completion:nil]; +} + +#pragma mark - Private Method + +- (void)initInputView { + // 初始化输入工具条,frame可以先这样临时设置,下面的addBottomInputBarView方法会重置输入条frame + // 如果你想要自定义输入条View,请参考TextFieldViewController代码 + QInputBarViewConfiguration *inputBarViewConfiguration = [QInputBarViewConfiguration defaultInputBarViewConfiguration]; + inputBarViewConfiguration.voiceButtonHidden = NO;//隐藏语音按钮 + inputBarViewConfiguration.extendButtonHidden = YES;//隐藏拓展按钮 + inputBarViewConfiguration.toolHidden = NO; + inputBarViewConfiguration.giftButtonHidden = NO; + inputBarViewConfiguration.cameraButtonHidden = NO; + inputBarViewConfiguration.photoButtonHidden = NO; + + _inputBarView = [[QInputBarView alloc] initWithFrame:CGRectMake(0,0,self.view.frame.size.width,inputBarViewConfiguration.inputViewHeight)]; + + [_inputBarView setupWithConfiguration:inputBarViewConfiguration]; + _inputBarView.delegate = self; + + //keyboard管理类,用来管理键盘,各大面板的切换 + _keyboardManager = [[QKeyboardManager alloc] initWithViewController:self]; + _keyboardManager.dataSource = self; + //因为addBottomInputBarView方法会立刻触发delegate,所以这里需要先设置delegate + _keyboardManager.delegate = self; + [_keyboardManager addBottomInputBarView:_inputBarView belowViewController:NO]; + + //把输入框(如果有的话)绑定给管理类 + [_keyboardManager bindTextView:_inputBarView.inputTextView]; +} + + +- (void)initViews { + self.sessionNavView.isInRoom = self.openType == SessionListOpenTypeRoom; + [self.view addSubview:self.sessionNavView]; + [self.view addSubview:self.sessionTableView]; + [self initInputView]; +} + +- (void)initLayout { + [self.sessionNavView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(self.openType == SessionListOpenTypeRoom ? 44 : kNavigationHeight); + make.left.top.right.mas_equalTo(self.view); + }]; +} + +- (void)viewDidLayoutSubviews{ + if (self.openType == SessionListOpenTypeRoom) { + self.view.frame = CGRectMake(0, 0, KScreenWidth, kHalfScreenHeight); + } +} + +- (void)initData { + NIMUser * user = [[NIMSDK sharedSDK].userManager userInfo:self.session.sessionId]; + if (user) { + self.sessionNavView.title = user.userInfo.nickName; + } else { + self.sessionNavView.title = @"加载中……"; + } + [[NIMSDK sharedSDK].conversationManager markAllMessagesReadInSession:self.session]; + [self.presenter getChatLimitReceiverUid:self.session.sessionId]; + [self.presenter getUserInfo:self.session.sessionId]; +} + +- (BOOL)isExistMessages:(NIMMessage *)message{ + BOOL isExist = NO; + NIMMessage * model; + for (NIMMessage *item in self.messages.reverseObjectEnumerator.allObjects) { + if ([item isKindOfClass:[NIMMessage class]] && [item.messageId isEqualToString:message.messageId]) { + model = item; + isExist = YES; + break; + } + } + if (model) { + model = message; + } + return isExist; +} + +- (BOOL)showChatRiskView:(UserInfoModel *)userInfo { + if (userInfo.banAccount) { + return YES; + } + + NSString * cacheUid = [[SessionRiskCache shareCache] getCloseChatRiskAlert:self.session.sessionId]; + + if (cacheUid && [cacheUid isEqualToString:self.session.sessionId]) { + return NO; + } + + if ([[NIMSDK sharedSDK].userManager isMyFriend:self.session.sessionId]) { + return NO; + } + + return YES; +} + +#pragma mark - MessageProtocol +- (void)onGetLimitChat:(ChatLimitModel *)chatLimit { + BOOL chatDisabled = !chatLimit.chat && self.messages.count <= 0; + if (chatDisabled) { + SessionChatLimitView *chatLimitView = [[SessionChatLimitView alloc] initWithChatLimit:chatLimit]; + self.sessionTableView.tableHeaderView = chatLimitView; + } else { + self.sessionTableView.tableHeaderView = nil; + } + self.inputBarView.userInteractionEnabled = !chatDisabled; + if (chatDisabled) { + self.inputBarView.inputTextView.placeholder = YMLocalizedString(@"SessionViewController1"); + } else { + self.inputBarView.inputTextView.placeholder = YMLocalizedString(@"SessionViewController2"); + } +} + +///获取用户信息成功 +- (void)onGetSessionUserInfoSuccess:(UserInfoModel *)userInfo { + _userInfo = userInfo; + self.sessionNavView.userInfo = userInfo; + if (userInfo.roomUid && self.openType == SessionListOpenTypeDefault) { + if ([self showChatRiskView:userInfo]) { + self.riskAlertView.warning = userInfo.banAccount ? @" 温馨提醒:当前对方账号存在异常,请谨慎来往!" : @"温馨提示:对方和您非好友关系,请注意隐私安全!"; + if (!self.riskAlertView.superview) { + [self.view addSubview:self.riskAlertView]; + [self.riskAlertView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.top.mas_equalTo(self.sessionNavView.mas_bottom); + make.height.mas_equalTo(20); + }]; + } + [self.sessionTableView mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.sessionNavView.mas_bottom).mas_offset(20); + }]; + } else { + [self.sessionTableView mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.sessionNavView.mas_bottom).mas_offset(0); + }]; + } + } else { + if ([self showChatRiskView:userInfo]) { + self.riskAlertView.warning = userInfo.banAccount ? @" 温馨提醒:当前对方账号存在异常,请谨慎来往!" : @"温馨提示:对方和您非好友关系,请注意隐私安全!"; + if (!self.riskAlertView.superview) { + [self.view addSubview:self.riskAlertView]; + [self.riskAlertView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.top.mas_equalTo(self.sessionNavView.mas_bottom); + make.height.mas_equalTo(20); + }]; + } + [self.sessionTableView mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.sessionNavView.mas_bottom).mas_offset(20); + }]; + } else { + [self.sessionTableView mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.sessionNavView.mas_bottom).mas_offset(0); + }]; + } + + } +} + +- (void)getFansLikeSuccess:(BOOL)isLike { + self.sessionNavView.isLike = isLike; +} + +- (void)attentionUserSuccess:(NSString *)uid { + if ([uid isEqualToString:self.session.sessionId]) { + [self showSuccessToast:YMLocalizedString(@"SessionViewController7")]; + self.sessionNavView.isLike = YES; + } +} + +- (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo { + self.userInfo = userInfo; + [self.sessionTableView reloadData]; +} + +#pragma mark - MessageCellDelegate +- (void)updateMessageSuccess:(NIMMessage *)message { + if ([message.session.sessionId isEqualToString:self.session.sessionId]) { + [self.sessionTableView reloadData]; + } +} + +- (void)didTapAvatar:(NSString *)uid { + if (uid.length > 0 && ![NIMMessageUtils isOfficalAccount:uid]) { + + if ([ClientConfig shareConfig].canOpen) { + XPMineUserInfoViewController * infoVC = [[XPMineUserInfoViewController alloc] init]; + infoVC.uid = uid.integerValue; + [[self getKeyWindowNav] pushViewController:infoVC animated:YES]; + }else{ + XPMineSimpleUserInfoViewController * infoVC = [[XPMineSimpleUserInfoViewController alloc] init]; + infoVC.uid = uid.integerValue; + [[self getKeyWindowNav] pushViewController:infoVC animated:YES]; + } + } +} + +- (void)deleteMessageSuccess:(NIMMessage *)message { + MessageBaseModel * revokeMessage; + for (int i = 0; i < self.messages.count; i++) { + MessageBaseModel * message1 = [self.messages safeObjectAtIndex1:i]; + if ([message.messageId isEqualToString: message1.message.messageId]) { + revokeMessage = message1; + break; + } + } + if (revokeMessage) { + [self.messages removeObject:revokeMessage]; + [self.sessionTableView reloadData]; + } +} + +- (void)revokeMessageSuccess:(NIMMessage *)message { + MessageBaseModel * revokeMessage; + for (int i = 0; i < self.messages.count; i++) { + MessageBaseModel * message1 = [self.messages safeObjectAtIndex1:i]; + if ([message.messageId isEqualToString:message1.message.messageId]) { + revokeMessage = message1; + break; + } + } + if (revokeMessage) { + [self.messages removeObject:revokeMessage]; + // 插入一条撤回消息 + [self addRevokeMessage:message title:YMLocalizedString(@"SessionViewController8")]; + } +} + +#pragma mark - SessionNavViewDelegate +- (void)sessionNavView:(SessionNavView *)view didClickLike:(UIButton *)sender { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEvent_chat_toolbar_fans_click]; + [self.presenter attentionUser:self.session.sessionId]; +} + +- (void)sessionNavView:(SessionNavView *)view didClickBack:(UIButton *)sender { + if (self.openType == SessionListOpenTypeRoom) { + CATransition *transition = [CATransition animation]; + transition.duration = 0.3f; + transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; + transition.type = kCATransitionPush; + transition.subtype = kCATransitionFromLeft; + [self.view.superview.layer addAnimation:transition forKey:nil]; + [self removeFromParentViewController]; + [self.view removeFromSuperview]; + return; + } + [self.navigationController popViewControllerAnimated:YES]; +} + +- (void)sessionNavView:(SessionNavView *)view didClickReport:(UIButton *)sender { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEvent_chat_toolbar_set_click]; + SessionInfoViewController * reportVC = [[SessionInfoViewController alloc] init]; + reportVC.session = self.session; + reportVC.stickTopMessages = self.stickTopMessages; + reportVC.userInfo = self.userInfo; + [self.getKeyWindowNav pushViewController:reportVC animated:YES]; +} + +- (void)sessionNavView:(SessionNavView *)view didRoomLive:(NSString *)roomUid { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEvent_chat_dialogue_revocation_click]; + if (self.openType == SessionListOpenTypeDefault) { + __block BOOL isSameRoom = NO; + __block RoomInfoModel *roomModel; + [self.getKeyWindowNav.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj isKindOfClass:[XPRoomViewController class]]) { + XPRoomViewController * rooomVC = obj; + [[self getKeyWindowNav] popToRootViewControllerAnimated:NO]; + roomModel = rooomVC.getRoomInfo; + if(rooomVC.getRoomInfo.uid == [roomUid integerValue]) { + isSameRoom = YES; + } else { + [rooomVC exitRoom]; + } + *stop = YES; + } + }]; + if (!isSameRoom) { + if (roomModel.type == RoomType_MiniGame) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [XPRoomViewController openRoom:roomUid fromNick:self.userInfo.nick fromType:UserEnterRoomFromType_Follow_User fromUid:[NSString stringWithFormat:@"%ld", self.userInfo.uid] viewController:[[XCCurrentVCStackManager shareManager] getCurrentVC]]; + }); + } else { + [XPRoomViewController openRoom:roomUid fromNick:self.userInfo.nick fromType:UserEnterRoomFromType_Follow_User fromUid:[NSString stringWithFormat:@"%ld", self.userInfo.uid] viewController:self]; + } + } + } +} + +#pragma mark - UITableViewDataSource +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 2; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + if (section == 0) { + if ([NIMMessageUtils isOfficalAccount:self.session.sessionId]) { + return 0; + } + return self.userInfo ? 1 : 0; + } else { + return self.messages.count; + } +} + +- (nonnull UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath { + if (indexPath.section == 0) { + SessionUserInfoTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([SessionUserInfoTableViewCell class])]; + if (cell == nil) { + ///如果没有的话 根据identifier 注册一下 重新获取一下即可 + [tableView registerClass:[SessionUserInfoTableViewCell class] forCellReuseIdentifier:NSStringFromClass([SessionUserInfoTableViewCell class])]; + cell = [[SessionUserInfoTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([SessionUserInfoTableViewCell class])]; + } + cell.userInfo = self.userInfo; + cell.delegate = self; + return cell; + } else { + MessageBaseModel * message = [self.messages safeObjectAtIndex1:indexPath.row]; + NSString * identifier = [message cellContent:message]; + ///从复用池中获取所需要的cell + MessageCell * cell = [tableView dequeueReusableCellWithIdentifier:identifier]; + if (!cell) { + ///如果没有的话 根据identifier 注册一下 重新获取一下即可 + [tableView registerClass:[MessageCell class] forCellReuseIdentifier:identifier]; + ///如果注册过了 就不需要判断cell是否为空 + cell = [tableView dequeueReusableCellWithIdentifier:identifier]; + } + cell.delegate = self; + [cell renderWithMessage:[self.messages safeObjectAtIndex1:indexPath.row]]; + return cell; + } +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (indexPath.section == 0) { + return self.userInfo.privatePhoto.count > 0 ? 182 : 100; + } + MessageBaseModel *msg = [self.messages safeObjectAtIndex1:indexPath.row]; + return msg.height; +} + +- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { + [self.keyboardManager hideAllBoardView]; +} + +#pragma mark - NIMChatManagerDelegate +- (void)onRecvMessages:(NSArray *)messages { + NIMMessage *message = messages.firstObject; + NIMSession *session = message.session; + if (![session isEqual:self.session] || !messages.count) { + return; + } + for (NIMMessage *message in messages) { + [self addTimeMessage:message]; + if (message.isDeleted) { + continue; + } + MessageBaseModel * model = [self modeTransformMessage:message]; + [self.messages addObject:model]; + } + [self.sessionTableView reloadData]; + [self.sessionTableView nim_scrollToBottom:YES]; + + [[NIMSDK sharedSDK].conversationManager markAllMessagesReadInSession:self.session]; +} + +- (void)sendMessage:(NIMMessage *)message didCompleteWithError:(NSError *)error { + if (message.session.sessionType != NIMSessionTypeP2P) { + return; + } + + [self addTimeMessage:message]; + + if (![self isExistMessages:message]) { + MessageBaseModel * model = [self modeTransformMessage:message]; + [self.messages addObject:model]; + } + + if (message.yidunAntiSpamRes) { + NSDictionary * spamRes = message.yidunAntiSpamRes.toJSONObject; + NSDictionary * spamResExt = ((NSString *)spamRes[@"ext"]).toJSONObject; + if ([spamResExt[@"antispam"][@"suggestion"] intValue] == 2) { + NSDictionary * dic = @{@"suggestion": @"2"}; + message.localExt = dic; + [[NIMSDK sharedSDK].conversationManager updateMessage:message forSession:self.session completion:nil]; + } + } + [self.sessionTableView reloadData]; + [self.sessionTableView nim_scrollToBottom:YES]; +} + +/** + * 收到消息被撤回的通知 + * + * @param notification 被撤回的消息信息 + * @discusssion 云信在收到消息撤回后,会先从本地数据库中找到对应消息并进行删除,之后通知上层消息已删除 + */ +- (void)onRecvRevokeMessageNotification:(NIMRevokeMessageNotification *)notification { + MessageBaseModel * revokeMessage; + for (int i = 0; i < self.messages.count; i++) { + MessageBaseModel * message1 = [self.messages safeObjectAtIndex1:i]; + if ([notification.message.messageId isEqualToString:message1.message.messageId]) { + revokeMessage = message1; + break; + } + } + if (revokeMessage) { + [self.messages removeObject:revokeMessage]; + [self.sessionTableView reloadData]; + } +} +#pragma mark - NIMConversationManagerDelegate +- (void)messagesDeletedInSession:(NIMSession *)session { + [self.messages removeAllObjects]; + [self initData]; +} + +- (void)didFailRetry:(NIMMessage *)message { + if (message.isReceivedMsg) { + [[NIMSDK sharedSDK].chatManager fetchMessageAttachment:message error:nil]; + } else { + [[NIMSDK sharedSDK].chatManager resendMessage:message error:nil]; + } +} + +- (void)sendTextMessage:(NSString *)text { + NIMMessage *message = [NIMMessageMaker msgWithText:text]; + [[[NIMSDK sharedSDK] chatManager] sendMessage:message toSession:self.session error:nil]; +} + +- (void)audioRecordCompletion:(NSString *)recordPath { + NIMMessage *message = [NIMMessageMaker msgWithAudio:recordPath]; + [[[NIMSDK sharedSDK] chatManager] sendMessage:message toSession:self.session error:nil]; +} + +#pragma mark - TZImagePickerControllerDelegate +- (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingPhotos:(NSArray *)photos sourceAssets:(NSArray *)assets isSelectOriginalPhoto:(BOOL)isSelectOriginalPhoto infos:(NSArray *)infos { + [photos enumerateObjectsUsingBlock:^(UIImage * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj) { + // 构造出具体会话 + NIMMessage * message = [NIMMessageMaker msgWithImage:obj]; + // 发送消息 + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:self.session error:nil]; + } + }]; +} + +#pragma mark - SessionRiskViewDelegate +- (void)sessionRiskViewCloseButtonClick:(SessionRiskView *)view { + [[SessionRiskCache shareCache] saveCloseRisk:self.session.sessionId]; + [self.riskAlertView removeFromSuperview]; + [self.sessionTableView mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.sessionNavView.mas_bottom).mas_offset(0); + }]; +} + +#pragma mark - SessionUserInfoTableViewCellDelegate +- (void)sessionUserInfoTableViewCell:(SessionUserInfoTableViewCell *)view showUserInfoVC:(UserInfoModel *)userInfo { + [self didTapAvatar:[NSString stringWithFormat:@"%ld", userInfo.uid]]; +} + +#pragma mark - InputBoardDataSource +//@return 点加号按钮弹出的拓展面板View,且无需设置frame +- (UIView *)keyboardManagerExtendBoardView:(QKeyboardManager *)keyboardManager { + UIView *boardView = [UIView new]; + boardView.backgroundColor = UIColor.clearColor; + return boardView; +} + +//@return 点表情按钮弹出的表情面板View,且无需设置frame +- (UIView *)keyboardManagerEmotionBoardView:(QKeyboardManager *)keyboardManager { + QEmotionBoardView *emotionView = [[QEmotionBoardView alloc] init]; + QEmotionHelper *faceManager = [QEmotionHelper sharedEmotionHelper]; + emotionView.emotions = faceManager.emotionArray; + emotionView.delegate = self; + if (@available(iOS 11.0, *)) { + NSBundle *bundle = [NSBundle bundleForClass:[self class]]; + emotionView.backgroundColor = [UIColor colorNamed:@"q_input_extend_bg" inBundle:bundle compatibleWithTraitCollection:nil]; + } else { + emotionView.backgroundColor = [UIColor colorWithRed:(246)/255.0f green:(246)/255.0f blue:(246)/255.0f alpha:1]; + } + return emotionView; +} + +//@return 点表情按钮弹出的表情面板View,且无需设置frame +- (UIView *)keyboardManagerPhotoBoardView:(QKeyboardManager *)keyboardManager{ + QinputPhotoView *emotionView = [[QinputPhotoView alloc] init]; + self.photoView = emotionView; + emotionView.photoList = self.phototArray; + emotionView.delegate = self; + emotionView.backgroundColor = [UIColor colorWithRed:(246)/255.0f green:(246)/255.0f blue:(246)/255.0f alpha:1]; + return emotionView; +} + +//@return 点表情按钮弹出的表情面板View的高度 +- (CGFloat)keyboardManagerEmotionBoardHeight:(QKeyboardManager *)keyboardManager { + return 294; +} + +//@return 点加号按钮弹出的拓展面板View的高度 +- (CGFloat)keyboardManagerExtendBoardHeight:(QKeyboardManager *)keyboardManager { + return 174; +} + +- (CGFloat)keyboardManagerPhotoBoardHeight:(QKeyboardManager *)keyboardManager { + return 184 + kSafeAreaBottomHeight; +} + +//点击表情按钮,切换到表情面板 +- (void)inputBarView:(QInputBarView *)inputBarView onEmotionButtonClick:(UIButton *)emotionSwitchButton { + if (emotionSwitchButton.isSelected) { + [_keyboardManager switchToEmotionBoardKeyboard]; + } else { + _inputBarView.inputTextView.text = @""; + [_inputBarView textViewBecomeFirstResponder]; + } +} + +- (void)inputBarView:(QInputBarView *)inputBarView onVoiceSwitchButtonClick:(UIButton *)voiceSwitchButton { + if (!voiceSwitchButton.isSelected) { + _inputBarView.inputTextView.text = @""; + [_inputBarView textViewBecomeFirstResponder]; + } else { + [_keyboardManager hideAllBoardView]; + } +} + +- (void)inputBarView:(QInputBarView *)inputBarView onGiftButtonClick:(UIButton *)emotionSwitchButton { + [_keyboardManager hideAllBoardView]; + XPSendGiftView * giftView = [[XPSendGiftView alloc] initWithType:SendGiftType_User uid:nil]; + XPGiftUserInfoModel * userModel = [[XPGiftUserInfoModel alloc] init]; + userModel.avatar = self.userInfo.avatar; + userModel.nick = self.userInfo.nick; + userModel.uid = self.session.sessionId.integerValue; + userModel.isSelect = YES; + [giftView configGiftUsers:@[userModel]]; + [self presentViewController:giftView animated:YES completion:nil]; +} + +- (void)inputBarView:(QInputBarView *)inputBarView onCameraButtonClick:(UIButton *)emotionSwitchButton { + [_keyboardManager hideAllBoardView]; + @kWeakify(self); + [YYUtility checkCameraAvailable:^{ + @kStrongify(self); + UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; + imagePicker.delegate = self; + imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; + imagePicker.allowsEditing = YES; + [self presentViewController:imagePicker animated:YES completion:NULL]; + } denied:^{ + @kStrongify(self); + [self showNotPhoto:@"相机不可用" content:YMLocalizedString(@"SessionViewController10")]; + } restriction:^{ + @kStrongify(self); + [self showNotPhoto:@"相机不可用" content:YMLocalizedString(@"SessionViewController12")]; + }]; + +} + +- (void)inputBarView:(QInputBarView *)inputBarView onPhototButtonClick:(UIButton *)emotionSwitchButton { + if (emotionSwitchButton.isSelected) { + @kWeakify(self); + [YYUtility checkAssetsLibrayAvailable:^{ + @kStrongify(self); + [TZImagePickerConfig sharedInstance].allowPickingImage = YES; + dispatch_async(dispatch_get_global_queue(0, 0), ^{ + [[TZImageManager manager] getCameraRollAlbumWithFetchAssets:NO completion:^(TZAlbumModel *model) { + [[TZImageManager manager] getAssetsFromFetchResult:model.result completion:^(NSArray *models) { + dispatch_async(dispatch_get_main_queue(), ^{ + NSMutableArray * array = [NSMutableArray array]; + if (models.count > 40) { + for (int i = 0; i < 40; i++) { + TZAssetModel * assets = [models objectAtIndex:i]; + QPhotoImageModel * infor = [[QPhotoImageModel alloc] init]; + infor.isOrigin = NO; + infor.assetInfo = assets; + [array addObject:infor]; + } + } else { + for (int i = 0; i < models.count; i++) { + TZAssetModel * assets = [models objectAtIndex:i]; + QPhotoImageModel * infor = [[QPhotoImageModel alloc] init]; + infor.isOrigin = NO; + infor.assetInfo = assets; + [array addObject:infor]; + } + } + self.phototArray = array; + if (self.phototArray.count > 0) { + self.photoView.photoList = self.phototArray; + [self.keyboardManager switchToPhotoBoardKeyboard]; + } else { + TZImagePickerController *imagePickerVc = [[TZImagePickerController alloc] initWithMaxImagesCount:1 delegate:self]; + imagePickerVc.modalPresentationStyle = UIModalPresentationOverFullScreen; + imagePickerVc.allowPickingVideo = NO; + imagePickerVc.allowTakeVideo = NO; + imagePickerVc.naviBgColor = [DJDKMIMOMColor appCellBackgroundColor]; + imagePickerVc.naviTitleColor = [DJDKMIMOMColor mainTextColor]; + imagePickerVc.barItemTextColor = [DJDKMIMOMColor mainTextColor]; + [self presentViewController:imagePickerVc animated:YES completion:nil]; + } + }); + }]; + }]; + }); + } denied:^{ + @kStrongify(self); + [self showNotPhoto:@"无法访问相册" content:YMLocalizedString(@"SessionViewController14")]; + } restriction:^{ + @kStrongify(self); + [self showNotPhoto:@"无法访问相册" content:YMLocalizedString(@"SessionViewController16")]; + }]; + } else { + [_keyboardManager hideAllBoardView]; + _inputBarView.inputTextView.text = @""; + [_inputBarView textViewResignFirstResponder]; + } + +} + +- (void)showNotPhoto:(NSString *)title content:(NSString *)content { + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.title = title; + config.message = content; + + [TTPopup alertWithConfig:config confirmHandler:^{ + NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; + if ([[UIApplication sharedApplication] canOpenURL:url]) { + [[UIApplication sharedApplication] openURL:url]; + } + } cancelHandler:^{ + }]; +} + +#pragma mark - InputBoardDelegate +- (void)keyboardManager:(QKeyboardManager *)keyboardManager onWholeInputViewHeightDidChange:(CGFloat)wholeInputViewHeight reason:(WholeInputViewHeightDidChangeReason)reason { + [UIView animateWithDuration:0.2 animations:^{ + [self.sessionTableView nim_scrollToBottom:NO]; + [self.sessionTableView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.top.mas_equalTo(self.sessionNavView.mas_bottom); + make.bottom.mas_equalTo(self.view).offset(-wholeInputViewHeight - kSafeAreaBottomHeight); + }]; + }]; +} + +#pragma mark - QEmotionBoardViewDelegate +/** + * 选中表情时的回调 + * @param index 被选中的表情在`emotions`里的索引 + * @param emotion 被选中的表情对应的`QMUIEmotion`对象 + */ +- (void)emotionView:(QEmotionBoardView *)emotionView didSelectEmotion:(QEmotion *)emotion atIndex:(NSInteger)index { + //把😊插入到输入栏 + [_inputBarView insertEmotion:emotion.displayName]; +} + +// 删除按钮的点击事件回调 +- (void)emotionViewDidSelectDeleteButton:(QEmotionBoardView *)emotionView { + if (![_inputBarView deleteEmotion]){ + //根据当前的光标,这次点击删除按钮并没有删除表情,那么就删除文字 + [_inputBarView.inputTextView deleteBackward]; + } +} + +// 发送按钮的点击事件回调 +- (void)emotionViewDidSelectSendButton:(QEmotionBoardView *)emotionView { + [self sendTextMessage:[_inputBarView textViewInputNormalText]]; + _inputBarView.inputTextView.text = @""; + [_keyboardManager hideAllBoardView]; + +} + +/** + * 点击了系统键盘的发送按钮 + * @param inputNormalText :"害~你好啊[微笑]" + */ +- (void)inputBarView:(QInputBarView *)inputBarView onKeyboardSendClick:(NSString *)inputNormalText { + [self sendTextMessage:inputNormalText]; + _inputBarView.inputTextView.text = @""; + [_keyboardManager hideAllBoardView]; +} + +#pragma mark - QinputPhotoViewDelegate +- (void)qinputPhotoView:(QinputPhotoView *)view didClickSend:(NSArray *)photoList { + for (int i = 0; i < photoList.count; i++) { + QPhotoImageModel * imageInfo = [photoList safeObjectAtIndex1:i]; + UIImage * image; + if (view.isOrigin) { + image = imageInfo.originImage; + } else { + image = imageInfo.compressImage; + } + if (image == nil){ + continue; + } + + NIMMessage * message = [NIMMessageMaker msgWithImage:image]; + // 发送消息 + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:self.session error:nil]; + [view resetChoosePhotos]; + } +} + +- (void)qinputPhotoView:(QinputPhotoView *)view didClickPhoto:(UIButton *)sender { + TZImagePickerController *imagePickerVc = [[TZImagePickerController alloc] initWithMaxImagesCount:1 delegate:self]; + imagePickerVc.modalPresentationStyle = UIModalPresentationOverFullScreen; + imagePickerVc.allowPickingVideo = NO; + imagePickerVc.allowTakeVideo = NO; + imagePickerVc.naviBgColor = [DJDKMIMOMColor appCellBackgroundColor]; + imagePickerVc.naviTitleColor = [DJDKMIMOMColor mainTextColor]; + imagePickerVc.barItemTextColor = [DJDKMIMOMColor mainTextColor]; + [self presentViewController:imagePickerVc animated:YES completion:nil]; +} + +#pragma mark - UIImagePickerControllerDelegate +- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info +{ + UIImage *selectedPhoto = [info objectForKey:UIImagePickerControllerEditedImage]; + if (selectedPhoto) { + if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) { + UIImageWriteToSavedPhotosAlbum(selectedPhoto, nil, nil, nil); + } + // 构造出具体会话 + NIMMessage * message = [NIMMessageMaker msgWithImage:selectedPhoto]; + // 发送消息 + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:self.session error:nil]; + } + [picker dismissViewControllerAnimated:YES completion:^{}]; +} + +- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{ + [picker dismissViewControllerAnimated:YES completion:^{ + }]; +} + + +#pragma mark - Getters And Setters +- (NSArray *)messages { + if (!_messages) { + _messages = [[NSMutableArray alloc] init]; + } + return _messages; +} + +#pragma mark - Event Response +- (void)closeKeyBoard { + [self.view endEditing:YES]; + [self.inputBarView textViewResignFirstResponder]; +} + +- (UITableView *)sessionTableView { + if (!_sessionTableView) { + _sessionTableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _sessionTableView.delegate = self; + _sessionTableView.dataSource = self; + _sessionTableView.backgroundColor = UIColor.clearColor; + _sessionTableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _sessionTableView.showsVerticalScrollIndicator = NO; + if (@available(iOS 11.0, *)) { + _sessionTableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } +// UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(closeKeyBoard)]; +// [_sessionTableView addGestureRecognizer:tap]; + } + return _sessionTableView; +} + +- (SessionNavView *)sessionNavView { + if (!_sessionNavView) { + _sessionNavView = [[SessionNavView alloc] init]; + _sessionNavView.delegate = self; + } + return _sessionNavView; +} + +- (SessionRiskView *)riskAlertView { + if (!_riskAlertView) { + _riskAlertView = [[SessionRiskView alloc] init]; + _riskAlertView.delegate = self; + } + return _riskAlertView; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/View/InterlocutionChatLimitRegard.h b/YuMi/Modules/YMMessage/View/Session/View/InterlocutionChatLimitRegard.h deleted file mode 100644 index 86f6f90e..00000000 --- a/YuMi/Modules/YMMessage/View/Session/View/InterlocutionChatLimitRegard.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// SessionLimitChatView.h -// YUMI -// -// Created by zu on 2021/12/8. -// - -#import -#import "ChatLimitMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface InterlocutionChatLimitRegard : UIView - -- (instancetype)initAboutChinwagRestriction:(ChatLimitMatrix *)chatLimit; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/View/InterlocutionChatLimitRegard.m b/YuMi/Modules/YMMessage/View/Session/View/InterlocutionChatLimitRegard.m deleted file mode 100644 index 6464e5ce..00000000 --- a/YuMi/Modules/YMMessage/View/Session/View/InterlocutionChatLimitRegard.m +++ /dev/null @@ -1,75 +0,0 @@ -// -// SessionLimitChatView.m -// YUMI -// -// Created by zu on 2021/12/8. -// - -#import "InterlocutionChatLimitRegard.h" -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "UIView+NIM.h" -#import "YUMITissueRegardGovernancer.h" -#import -#import -#import - -@interface InterlocutionChatLimitRegard() - -@property (nonatomic, strong) UIView *backgroundRegard; -@property (nonatomic, strong) YYLabel *textLabel; - -@end - -@implementation InterlocutionChatLimitRegard - -- (instancetype)initAboutChinwagRestriction:(ChatLimitMatrix *)chatLimit { - if (self = [super initWithFrame:CGRectMake(0, 0, KScreenWidth, 50)]) { - [self addSubview:self.backgroundRegard]; - [self.backgroundRegard addSubview:self.textLabel]; - - [self.backgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.mas_equalTo(self); - }]; - - [self.textLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.left.right.bottom.mas_equalTo(self.backgroundRegard).insets(UIEdgeInsetsMake(10, 10, 10, 10)); - }]; - - [self initSequencigntowardsion:chatLimit.charmLevel.integerValue wealthLevel:chatLimit.wealthLevel.integerValue]; - } - return self; -} - -- (void)initSequencigntowardsion:(NSInteger)charmLevel wealthLevel:(NSInteger)wealthLevel { - NSInteger charm = charmLevel > 0 ? charmLevel : 3; - NSInteger wealth = wealthLevel > 0 ? wealthLevel : 3; - UIColor *highlightPrettify = DJDKMIMOMColor.aplictowardsionMainPrettify; - NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:YMLocalizedString(@"Session_Chat_Limit_View_0"), wealth, charm] attributes:@{NSFontAttributeName: [UIFont systemFontOfSize: 12],NSForegroundColorAttributeName: DJDKMIMOMColor.mainEssayPrettify}];; - NSRange wealthLevelRange = [attStr.mutableString rangeOfString:[NSString stringWithFormat:@"财富等级≥%zd", wealth]]; - NSRange charmLevelRange = [attStr.mutableString rangeOfString:[NSString stringWithFormat:@"魅力等级≥%zd", charm]]; - [attStr yy_setColor:highlightPrettify range:wealthLevelRange]; - [attStr yy_setColor:highlightPrettify range:charmLevelRange]; - self.textLabel.attributedText = attStr; -} - -- (UIView *)backgroundRegard { - if (!_backgroundRegard) { - _backgroundRegard = [UIView new]; - _backgroundRegard.backgroundColor = DJDKMIMOMColor.aplictowardsionElementEncouragegroundPrettify; - _backgroundRegard.layer.masksToBounds = YES; - _backgroundRegard.layer.cornerRadius = 8.0; - } - return _backgroundRegard; -} - -- (YYLabel *)textLabel { - if (!_textLabel) { - _textLabel = [[YYLabel alloc] init]; - _textLabel.textAlignment = NSTextAlignmentCenter; - _textLabel.numberOfLines = 0; - } - return _textLabel; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/View/InterlocutionInstanllingConsumerRegard.h b/YuMi/Modules/YMMessage/View/Session/View/InterlocutionInstanllingConsumerRegard.h deleted file mode 100644 index 00d897b1..00000000 --- a/YuMi/Modules/YMMessage/View/Session/View/InterlocutionInstanllingConsumerRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// InterlocutionInstanllingConsumerRegard.h -// YUMI -// -// Created by YUMI on 2023/1/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ConsumerAbstractMatrix; -@interface InterlocutionInstanllingConsumerRegard : UIView -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/View/InterlocutionInstanllingConsumerRegard.m b/YuMi/Modules/YMMessage/View/Session/View/InterlocutionInstanllingConsumerRegard.m deleted file mode 100644 index ae9cde37..00000000 --- a/YuMi/Modules/YMMessage/View/Session/View/InterlocutionInstanllingConsumerRegard.m +++ /dev/null @@ -1,158 +0,0 @@ -// -// InterlocutionInstanllingConsumerRegard.m -// YUMI -// -// Created by YUMI on 2023/1/18. -// - -#import "InterlocutionInstanllingConsumerRegard.h" -#import -#import -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "SpriteSheetIndicateExecutive.h" -#import "ConsumerAbstractMatrix.h" - -@interface InterlocutionInstanllingConsumerRegard () -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UILabel *idSequencignation; -@property (nonatomic,strong) UIImageView *arrowIndicateRegard; -@property (nonatomic,strong) YYAnimatedImageView *intelligencePenetrateIndicateRegard; -@property (nonatomic, strong) SpriteSheetIndicateExecutive *manager; - -@end - -@implementation InterlocutionInstanllingConsumerRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.intelligenceportraitIndicateRegard]; - [self addSubview:self.intelligencePenetrateIndicateRegard]; - [self addSubview:self.monicerSequencignation]; - [self addSubview:self.idSequencignation]; - [self addSubview:self.arrowIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(43, 43)); - make.left.mas_equalTo(self).offset(22); - make.top.mas_equalTo(self).offset(22); - }]; - - [self.intelligencePenetrateIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.centerY.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.width.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_width).multipliedBy(1.31); - make.height.mas_equalTo(self.intelligencePenetrateIndicateRegard.mas_width); - }]; - - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(12); - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(-2); - }]; - - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.monicerSequencignation); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(2); - }]; - - [self.arrowIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(6.5, 11)); - make.centerY.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.right.mas_equalTo(self).offset(-15); - }]; -} - -#pragma mark - Getters And Setters -- (void)setUserInfo:(ConsumerAbstractMatrix *)userInfo { - _userInfo = userInfo; - if (_userInfo) { - self.intelligenceportraitIndicateRegard.imageUrl = _userInfo.avatar; - NSString * nick = _userInfo.nick; - self.monicerSequencignation.text = nick; - self.idSequencignation.text = [NSString stringWithFormat:@"ID:%ld", _userInfo.erbanNo]; - NSString * headurl = userInfo.headwearEffect.length > 0 ? userInfo.headwearEffect : userInfo.headwearPic; - if (headurl.length >0) { - self.intelligencePenetrateIndicateRegard.hidden = NO; - NSURL *url = [NSURL URLWithString:headurl]; - @kWeakify(self); - [self.manager chamberSpriteSheetIndictowardseAboutWEEBSITE:url completionBlock:^(YYSpriteSheetImage * _Nullable sprit) { - @kStrongify(self); - self.intelligencePenetrateIndicateRegard.image = sprit; - } failureBlock:^(NSError * _Nullable error) { - }]; - } else { - self.intelligencePenetrateIndicateRegard.hidden = YES; - } - } -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 20; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:15]; - _monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _monicerSequencignation; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.font = [UIFont systemFontOfSize:12]; - _idSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - } - return _idSequencignation; -} - -- (UIImageView *)arrowIndicateRegard { - if (!_arrowIndicateRegard) { - _arrowIndicateRegard = [[UIImageView alloc] init]; - _arrowIndicateRegard.userInteractionEnabled = YES; - _arrowIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_setting_arrow"]; - } - return _arrowIndicateRegard; -} - -- (YYAnimatedImageView *)intelligencePenetrateIndicateRegard { - if (!_intelligencePenetrateIndicateRegard) { - _intelligencePenetrateIndicateRegard = [[YYAnimatedImageView alloc] init]; - _intelligencePenetrateIndicateRegard.backgroundColor = [UIColor clearColor]; - _intelligencePenetrateIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _intelligencePenetrateIndicateRegard; -} - -- (SpriteSheetIndicateExecutive *)manager { - if (!_manager) { - _manager = [[SpriteSheetIndicateExecutive alloc] init]; - } - return _manager; -} - - - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/View/InterlocutionNevEnergeticRegard.h b/YuMi/Modules/YMMessage/View/Session/View/InterlocutionNevEnergeticRegard.h deleted file mode 100644 index 61846c22..00000000 --- a/YuMi/Modules/YMMessage/View/Session/View/InterlocutionNevEnergeticRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// InterlocutionNevEnergeticRegard.h -// YUMI -// -// Created by YUMI on 2023/1/17. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface InterlocutionNevEnergeticRegard : UIView - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/View/InterlocutionNevEnergeticRegard.m b/YuMi/Modules/YMMessage/View/Session/View/InterlocutionNevEnergeticRegard.m deleted file mode 100644 index 89f937c0..00000000 --- a/YuMi/Modules/YMMessage/View/Session/View/InterlocutionNevEnergeticRegard.m +++ /dev/null @@ -1,75 +0,0 @@ -// -// InterlocutionNevEnergeticRegard.m -// YUMI -// -// Created by YUMI on 2023/1/17. -// - -#import "InterlocutionNevEnergeticRegard.h" -#import -#import "DJDKMIMOMColor.h" - -@interface InterlocutionNevEnergeticRegard () - -@property (nonatomic,strong) UIImageView *liveRegard; -@property (nonatomic,strong) UILabel *liveSequencignation; - -@end - -@implementation InterlocutionNevEnergeticRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.liveRegard]; - [self addSubview:self.liveSequencignation]; -} - -- (void)initChildLyRestrictions { - - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(15); - make.right.mas_equalTo(self.liveSequencignation.mas_right); - }]; - - [self.liveRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(6, 6)); - make.centerY.mas_equalTo(self); - make.left.mas_equalTo(self); - }]; - - [self.liveSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.liveRegard.mas_right).offset(4); - make.centerY.mas_equalTo(self.liveRegard); - }]; -} -#pragma mark - Getters And Setters -- (UIImageView *)liveRegard { - if (!_liveRegard) { - _liveRegard = [[UIImageView alloc] init]; - _liveRegard.userInteractionEnabled = YES; - _liveRegard.image = [UIImage imageNamed:@"yumi_term_title_live"]; - } - return _liveRegard; -} - -- (UILabel *)liveSequencignation { - if (!_liveSequencignation) { - _liveSequencignation = [[UILabel alloc] init]; - _liveSequencignation.font = [UIFont systemFontOfSize:10]; - _liveSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - _liveSequencignation.text = @"直播中 >"; - } - return _liveSequencignation; -} - - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/View/InterlocutionNevRegard.h b/YuMi/Modules/YMMessage/View/Session/View/InterlocutionNevRegard.h deleted file mode 100644 index 14660db8..00000000 --- a/YuMi/Modules/YMMessage/View/Session/View/InterlocutionNevRegard.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// InterlocutionNevRegard.h -// YUMI -// -// Created by YUMI on 2022/4/25. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class InterlocutionNevRegard, ConsumerAbstractMatrix; -@protocol InterlocutionNevRegardRepresendtation -- (void)interlocutionNevRegard:(InterlocutionNevRegard *)view didClickReport:(UIButton *)sender; -- (void)interlocutionNevRegard:(InterlocutionNevRegard *)view didClickLike:(UIButton *)sender; -- (void)interlocutionNevRegard:(InterlocutionNevRegard *)view didClickBack:(UIButton *)sender; -- (void)interlocutionNevRegard:(InterlocutionNevRegard *)view didRoomLive:(NSString *)roomUid; -@end - -@interface InterlocutionNevRegard : UIView - -@property (nonatomic,copy) NSString *title; -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@property (nonatomic,assign) BOOL isLike; -@property (nonatomic,weak) id delegate; -@property (nonatomic,assign) BOOL isInRoom; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/View/InterlocutionNevRegard.m b/YuMi/Modules/YMMessage/View/Session/View/InterlocutionNevRegard.m deleted file mode 100644 index 131eb004..00000000 --- a/YuMi/Modules/YMMessage/View/Session/View/InterlocutionNevRegard.m +++ /dev/null @@ -1,246 +0,0 @@ -// -// InterlocutionNevRegard.m -// YUMI -// -// Created by YUMI on 2022/4/25. -// - -#import "InterlocutionNevRegard.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "YUMIConstant.h" -#import "UIImage+Utils.h" -#import "InterlocutionNevEnergeticRegard.h" -#import "NEMCCommunicationUtils.h" -#import "ConsumerAbstractMatrix.h" - -@interface InterlocutionNevRegard () - -@property (nonatomic,strong) UIButton *backButton; -@property (nonatomic,strong) UIStackView *abstractHierarchyRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UILabel *subChampionSequencignation; -@property (nonatomic,strong) InterlocutionNevEnergeticRegard *liveRegard; -@property (nonatomic,strong) UIButton *likeBtuton; -@property (nonatomic,strong) UIButton *reportBtuton; - -@property (nonatomic,copy) NSString *userId; - -@end - -@implementation InterlocutionNevRegard -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - [self addSubview:self.backButton]; - [self addSubview:self.abstractHierarchyRegard]; - [self addSubview:self.reportBtuton]; - [self addSubview:self.likeBtuton]; - - [self.abstractHierarchyRegard addArrangedSubview:self.monicerSequencignation]; - [self.abstractHierarchyRegard addArrangedSubview:self.stackView]; - - [self.stackView addArrangedSubview:self.subChampionSequencignation]; - [self.stackView addArrangedSubview:self.liveRegard]; -} - -- (void)initChildLyRestrictions { - [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(22, 22)); - make.left.mas_equalTo(self).offset(8); - make.top.mas_equalTo(statusbarHeight + 14); - }]; - - [self.abstractHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.centerY.mas_equalTo(self.backButton); - }]; - - [self.likeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.reportBtuton); - make.right.mas_equalTo(self.reportBtuton.mas_left).offset(-12); - make.size.mas_equalTo(CGSizeMake(48, 20)); - }]; - - [self.reportBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(30, 30)); - make.right.mas_equalTo(self).offset(-15); - make.centerY.mas_equalTo(self.backButton); - }]; -} - -#pragma mark - Event Response -- (void)respondBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(interlocutionNevRegard:didClickReport:)]) { - [self.delegate interlocutionNevRegard:self didClickReport:sender]; - } -} - -- (void)encourageBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(interlocutionNevRegard:didClickBack:)]) { - [self.delegate interlocutionNevRegard:self didClickBack:sender]; - } -} - -- (void)similarBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(interlocutionNevRegard:didClickLike:)]) { - [self.delegate interlocutionNevRegard:self didClickLike:sender]; - } -} - -- (void)liveRegardRecognition { - if (self.delegate && [self.delegate respondsToSelector:@selector(interlocutionNevRegard:didRoomLive:)]) { - [self.delegate interlocutionNevRegard:self didRoomLive:self.userInfo.roomUid]; - } -} - -#pragma mark - Getters And Setters -- (void)setUserInfo:(ConsumerAbstractMatrix *)userInfo { - _userInfo = userInfo; - if (_userInfo) { - NSString * userId = [NSString stringWithFormat:@"%ld", userInfo.uid]; - self.userId = userId; - if (userInfo.nick.length > 0) { - self.title = userInfo.nick; - } else { - [[NIMSDK sharedSDK].userManager fetchUserInfos:@[userId] completion:^(NSArray * _Nullable users, NSError * _Nullable error) { - if (!error) { - self.title = users[0].userInfo.nickName; - } - }]; - } - self.subChampionSequencignation.hidden = ![[NIMSDK sharedSDK].userManager isUserInBlackList:userId]; - self.liveRegard.hidden = ([[NIMSDK sharedSDK].userManager isUserInBlackList:userId] || _userInfo.roomUid.length <= 0); - self.reportBtuton.hidden = [NEMCCommunicationUtils isHLOfficalSequenceription:self.userId] || self.isInRoom; - } -} - -- (void)setTitle:(NSString *)title { - _title = title; - if (_title) { - NSString * nick = title; - if (nick.length > 10 ) { - nick = [nick substringToIndex:10]; - } - self.monicerSequencignation.text = nick; - } -} - -- (void)setIsLike:(BOOL)isLike { - _isLike = isLike; - self.likeBtuton.hidden = _isLike; -} - -- (void)setIsInRoom:(BOOL)isInRoom { - _isInRoom = isInRoom; - self.reportBtuton.hidden = _isInRoom; - self.liveRegard.hidden = YES; - if (_isInRoom) { - [self.backButton mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self).offset(11); - }]; - } -} - -- (UIButton *)backButton { - if (!_backButton) { - _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backButton setImage:[UIImage imageNamed:@"yumi_same_title_back"] forState:UIControlStateNormal]; - [_backButton setImage:[UIImage imageNamed:@"yumi_same_title_back"] forState:UIControlStateSelected]; - [_backButton addTarget:self action:@selector(encourageBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _backButton; -} - -- (UIStackView *)abstractHierarchyRegard { - if (!_abstractHierarchyRegard) { - _abstractHierarchyRegard = [[UIStackView alloc] init]; - _abstractHierarchyRegard.axis = UILayoutConstraintAxisVertical; - _abstractHierarchyRegard.distribution = UIStackViewDistributionFill; - _abstractHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _abstractHierarchyRegard.spacing = 1; - } - return _abstractHierarchyRegard; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 0; - } - return _stackView; -} - -- (InterlocutionNevEnergeticRegard *)liveRegard { - if (!_liveRegard) { - _liveRegard = [[InterlocutionNevEnergeticRegard alloc] init]; - _liveRegard.hidden = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(liveRegardRecognition)]; - [_liveRegard addGestureRecognizer:tap]; - } - return _liveRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; - _monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _monicerSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _monicerSequencignation; -} - -- (UIButton *)likeBtuton { - if (!_likeBtuton) { - _likeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_likeBtuton setTitle:YMLocalizedString(@"Session_Nav_View_0") forState:UIControlStateNormal]; - [_likeBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - _likeBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - [_likeBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _likeBtuton.layer.masksToBounds = YES; - _likeBtuton.layer.cornerRadius = 10; - [_likeBtuton addTarget:self action:@selector(similarBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _likeBtuton; -} - -- (UILabel *)subChampionSequencignation { - if (!_subChampionSequencignation) { - _subChampionSequencignation = [[UILabel alloc] init]; - _subChampionSequencignation.font = [UIFont systemFontOfSize:11]; - _subChampionSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _subChampionSequencignation.text = YMLocalizedString(@"Session_Nav_View_1"); - _subChampionSequencignation.hidden = YES; - _subChampionSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _subChampionSequencignation; -} - -- (UIButton *)reportBtuton { - if (!_reportBtuton) { - _reportBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_reportBtuton setImage:[UIImage imageNamed:@"yumi_msg_term_title_report"] forState:UIControlStateNormal]; - [_reportBtuton setImage:[UIImage imageNamed:@"yumi_msg_term_title_report"] forState:UIControlStateSelected]; - [_reportBtuton addTarget:self action:@selector(respondBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _reportBtuton; -} - - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/View/InterlocutionVentureRegard.h b/YuMi/Modules/YMMessage/View/Session/View/InterlocutionVentureRegard.h deleted file mode 100644 index 5cb44cef..00000000 --- a/YuMi/Modules/YMMessage/View/Session/View/InterlocutionVentureRegard.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// InterlocutionVentureRegard.h -// YUMI -// -// Created by YUMI on 2022/8/11. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class InterlocutionVentureRegard; -@protocol InterlocutionRiskRegardRepresendtation - -- (void)interlocutionVentureRegardConcludeBtutonTicktack:(InterlocutionVentureRegard *)view; - -@end - -@interface InterlocutionVentureRegard : UIView -@property (nonatomic,copy) NSString *userId; -@property (nonatomic,weak) id delegate; -@property (nonatomic,copy) NSString *warning; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/View/InterlocutionVentureRegard.m b/YuMi/Modules/YMMessage/View/Session/View/InterlocutionVentureRegard.m deleted file mode 100644 index d7601fb0..00000000 --- a/YuMi/Modules/YMMessage/View/Session/View/InterlocutionVentureRegard.m +++ /dev/null @@ -1,86 +0,0 @@ -// -// InterlocutionVentureRegard.m -// YUMI -// -// Created by YUMI on 2022/8/11. -// - -#import "InterlocutionVentureRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "InterlocutionVentureCache.h" -#import "UIButton+EnlargeTouchArea.h" - -@interface InterlocutionVentureRegard () -@property (strong, nonatomic) UILabel *warnEssaySequencignation; - -@property (strong, nonatomic) UIButton *concludeBtuton; -@end - -@implementation InterlocutionVentureRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = UIColorRGBAlpha(0xfee4e4, 1); - - [self addSubview:self.warnEssaySequencignation]; - [self addSubview:self.concludeBtuton]; -} - -- (void)initChildLyRestrictions { - [self.warnEssaySequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.mas_centerX); - make.centerY.mas_equalTo(self.mas_centerY); - }]; - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(8); - make.trailing.mas_equalTo(self.mas_trailing).offset(-15); - make.centerY.mas_equalTo(self.mas_centerY); - }]; -} - -#pragma mark - Event Response -- (void)concludeBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(interlocutionVentureRegardConcludeBtutonTicktack:)]) { - [self.delegate interlocutionVentureRegardConcludeBtutonTicktack:self]; - } -} - -#pragma mark - Getters And Setters -- (void)setWarning:(NSString *)warning { - _warning = warning; - if (_warning) { - self.warnEssaySequencignation.text = _warning; - } -} - -- (UILabel *)warnEssaySequencignation { - if (!_warnEssaySequencignation) { - _warnEssaySequencignation = [[UILabel alloc]init]; - _warnEssaySequencignation.text = @"温馨提示:对方和您非好友关系,请注意隐私安全!"; - _warnEssaySequencignation.textColor = UIColorFromRGB(0xFF5858); - _warnEssaySequencignation.font = [UIFont systemFontOfSize:12.f]; - } - return _warnEssaySequencignation; -} - -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [[UIButton alloc]init]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_term_warn_close"] forState:UIControlStateNormal]; - [_concludeBtuton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:10]; - [_concludeBtuton addTarget:self action:@selector(concludeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _concludeBtuton; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/View/InterlocutionVocalmusicReflectionRegard.h b/YuMi/Modules/YMMessage/View/Session/View/InterlocutionVocalmusicReflectionRegard.h deleted file mode 100644 index d1e971db..00000000 --- a/YuMi/Modules/YMMessage/View/Session/View/InterlocutionVocalmusicReflectionRegard.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// InterlocutionVocalmusicReflectionRegard.h -// YUMI -// -// Created by YUMI on 2022/4/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface InterlocutionVocalmusicReflectionRegard : UIView - -- (void)prohibitipositionVocalmusicReflection:(NSString *)imageName title:(NSString *)title isAnimation:(BOOL)isAnimation; -- (void)instituteVocalmusicReflection; -- (void)revoctowardsionVocalmusicReflection; -- (void)accomplishVocalmusicReflection; -- (void)refurbishVocalmusicReflectionDirectoryvance:(NSTimeInterval)recordTime; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/View/InterlocutionVocalmusicReflectionRegard.m b/YuMi/Modules/YMMessage/View/Session/View/InterlocutionVocalmusicReflectionRegard.m deleted file mode 100644 index 79f06a12..00000000 --- a/YuMi/Modules/YMMessage/View/Session/View/InterlocutionVocalmusicReflectionRegard.m +++ /dev/null @@ -1,140 +0,0 @@ -// -// InterlocutionVocalmusicReflectionRegard.m -// YUMI -// -// Created by YUMI on 2022/4/21. -// - -#import "InterlocutionVocalmusicReflectionRegard.h" -#import -#import - -@interface InterlocutionVocalmusicReflectionRegard () -@property (nonatomic,strong) UIView * encourageRegard; -@property (nonatomic,strong) UIImageView *brandIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UILabel *intratemporalSequencignation; -@end - -@implementation InterlocutionVocalmusicReflectionRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Public Method -- (void)prohibitipositionVocalmusicReflection:(NSString *)imageName title:(NSString *)title isAnimation:(BOOL)isAnimation { - self.brandIndicateRegard.image = [UIImage imageNamed:imageName]; - if (isAnimation) { - [self.brandIndicateRegard startAnimating]; - } else { - [self.brandIndicateRegard stopAnimating]; - } - self.titleLabel.text = title; -} - -- (void)instituteVocalmusicReflection { - self.intratemporalSequencignation.text = @"00:00"; - [[NIMSDK sharedSDK].mediaManager recordForDuration:60]; -} -- (void)revoctowardsionVocalmusicReflection { - self.intratemporalSequencignation.text = @"00:00"; - [[NIMSDK sharedSDK].mediaManager cancelRecord]; -} -- (void)accomplishVocalmusicReflection { - self.intratemporalSequencignation.text = @"00:00"; - [[NIMSDK sharedSDK].mediaManager stopRecord]; -} - -- (void)refurbishVocalmusicReflectionDirectoryvance:(NSTimeInterval)recordTime { - NSInteger minutes = (NSInteger)recordTime / 60; - NSInteger seconds = (NSInteger)recordTime % 60; - self.intratemporalSequencignation.text = [NSString stringWithFormat:@"%02zd:%02zd", minutes, seconds]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.encourageRegard]; - [self.encourageRegard addSubview:self.brandIndicateRegard]; - [self.encourageRegard addSubview:self.titleLabel]; - [self.encourageRegard addSubview:self.intratemporalSequencignation]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(250, 200)); - }]; - - [self.intratemporalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageRegard); - make.top.mas_equalTo(self.encourageRegard).offset(15); - }]; - - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.brandIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.encourageRegard); - make.top.mas_equalTo(self.encourageRegard).offset(50); - make.size.mas_equalTo(CGSizeMake(90, 72)); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageRegard); - make.top.mas_equalTo(self.brandIndicateRegard.mas_bottom).offset(25); - }]; -} - -#pragma mark - Getters And Setters -- (UIView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIView alloc] init]; - _encourageRegard.backgroundColor = [UIColor blackColor]; - _encourageRegard.layer.masksToBounds = YES; - _encourageRegard.layer.cornerRadius = 10; - } - return _encourageRegard; -} - - -- (UIImageView *)brandIndicateRegard { - if (!_brandIndicateRegard) { - _brandIndicateRegard = [[UIImageView alloc] init]; - _brandIndicateRegard.userInteractionEnabled = YES; - UIImage *firstImage = [UIImage imageNamed:@"yumi_msg_kit_audio_record_first"]; - UIImage *secondImage = [UIImage imageNamed:@"yumi_msg_kit_audio_record_second"]; - UIImage *thirdImage = [UIImage imageNamed:@"yumi_msg_kit_audio_record_third"]; - _brandIndicateRegard.animationImages = @[firstImage, secondImage, thirdImage]; - _brandIndicateRegard.animationDuration = 1; - _brandIndicateRegard.animationRepeatCount = HUGE; - } - return _brandIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:15]; - _titleLabel.textColor = [UIColor whiteColor]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} - -- (UILabel *)intratemporalSequencignation { - if (!_intratemporalSequencignation) { - _intratemporalSequencignation = [[UILabel alloc] init]; - _intratemporalSequencignation.font = [UIFont systemFontOfSize:17 weight:UIFontWeightMedium]; - _intratemporalSequencignation.textColor = [UIColor whiteColor]; - _intratemporalSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _intratemporalSequencignation; -} - - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/View/SessionAudioRecordView.h b/YuMi/Modules/YMMessage/View/Session/View/SessionAudioRecordView.h new file mode 100644 index 00000000..862ced32 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/View/SessionAudioRecordView.h @@ -0,0 +1,26 @@ +// +// SessionAudioRecordView.h +// YUMI +// +// Created by YUMI on 2022/4/21. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface SessionAudioRecordView : UIView + +- (void)configAudioRecord:(NSString *)imageName title:(NSString *)title isAnimation:(BOOL)isAnimation; +///开始录音 +- (void)beginAudioRecord; +///取消录音 +- (void)cancelAudioRecord; +///完成录音 +- (void)finishAudioRecord; +///更新进度 +- (void)updateAudioRecordProgress:(NSTimeInterval)recordTime; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/View/SessionAudioRecordView.m b/YuMi/Modules/YMMessage/View/Session/View/SessionAudioRecordView.m new file mode 100644 index 00000000..c861f05e --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/View/SessionAudioRecordView.m @@ -0,0 +1,148 @@ +// +// SessionAudioRecordView.m +// YUMI +// +// Created by YUMI on 2022/4/21. +// + +#import "SessionAudioRecordView.h" +///Third +#import +#import + +@interface SessionAudioRecordView () +///背景 +@property (nonatomic,strong) UIView * backView; +///显示图片 +@property (nonatomic,strong) UIImageView *logoImageView; +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///当前时间 +@property (nonatomic,strong) UILabel *timeLabel; +@end + +@implementation SessionAudioRecordView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Public Method +- (void)configAudioRecord:(NSString *)imageName title:(NSString *)title isAnimation:(BOOL)isAnimation { + self.logoImageView.image = [UIImage imageNamed:imageName]; + if (isAnimation) { + [self.logoImageView startAnimating]; + } else { + [self.logoImageView stopAnimating]; + } + self.titleLabel.text = title; +} + +///开始录音 +- (void)beginAudioRecord { + self.timeLabel.text = @"00:00"; + [[NIMSDK sharedSDK].mediaManager recordForDuration:60]; +} +///取消录音 +- (void)cancelAudioRecord { + self.timeLabel.text = @"00:00"; + [[NIMSDK sharedSDK].mediaManager cancelRecord]; +} +///完成录音 +- (void)finishAudioRecord { + self.timeLabel.text = @"00:00"; + [[NIMSDK sharedSDK].mediaManager stopRecord]; +} + +- (void)updateAudioRecordProgress:(NSTimeInterval)recordTime { + NSInteger minutes = (NSInteger)recordTime / 60; + NSInteger seconds = (NSInteger)recordTime % 60; + self.timeLabel.text = [NSString stringWithFormat:@"%02zd:%02zd", minutes, seconds]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backView]; + [self.backView addSubview:self.logoImageView]; + [self.backView addSubview:self.titleLabel]; + [self.backView addSubview:self.timeLabel]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(250, 200)); + }]; + + [self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backView); + make.top.mas_equalTo(self.backView).offset(15); + }]; + + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + [self.logoImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.backView); + make.top.mas_equalTo(self.backView).offset(50); + make.size.mas_equalTo(CGSizeMake(90, 72)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backView); + make.top.mas_equalTo(self.logoImageView.mas_bottom).offset(25); + }]; +} + +#pragma mark - Getters And Setters +- (UIView *)backView { + if (!_backView) { + _backView = [[UIView alloc] init]; + _backView.backgroundColor = [UIColor blackColor]; + _backView.layer.masksToBounds = YES; + _backView.layer.cornerRadius = 10; + } + return _backView; +} + + +- (UIImageView *)logoImageView { + if (!_logoImageView) { + _logoImageView = [[UIImageView alloc] init]; + _logoImageView.userInteractionEnabled = YES; + UIImage *firstImage = [UIImage imageNamed:@"message_tool_audio_record_first"]; + UIImage *secondImage = [UIImage imageNamed:@"message_tool_audio_record_second"]; + UIImage *thirdImage = [UIImage imageNamed:@"message_tool_audio_record_third"]; + _logoImageView.animationImages = @[firstImage, secondImage, thirdImage]; + _logoImageView.animationDuration = 1; + _logoImageView.animationRepeatCount = HUGE; + } + return _logoImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:15]; + _titleLabel.textColor = [UIColor whiteColor]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} + +- (UILabel *)timeLabel { + if (!_timeLabel) { + _timeLabel = [[UILabel alloc] init]; + _timeLabel.font = [UIFont systemFontOfSize:17 weight:UIFontWeightMedium]; + _timeLabel.textColor = [UIColor whiteColor]; + _timeLabel.textAlignment = NSTextAlignmentCenter; + } + return _timeLabel; +} + + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/View/SessionChatLimitView.h b/YuMi/Modules/YMMessage/View/Session/View/SessionChatLimitView.h new file mode 100644 index 00000000..550b0498 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/View/SessionChatLimitView.h @@ -0,0 +1,19 @@ +// +// SessionLimitChatView.h +// YUMI +// +// Created by zu on 2021/12/8. +// + +#import +#import "ChatLimitModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface SessionChatLimitView : UIView + +- (instancetype)initWithChatLimit:(ChatLimitModel *)chatLimit; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/View/SessionChatLimitView.m b/YuMi/Modules/YMMessage/View/Session/View/SessionChatLimitView.m new file mode 100644 index 00000000..344fbfa8 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/View/SessionChatLimitView.m @@ -0,0 +1,75 @@ +// +// SessionLimitChatView.m +// YUMI +// +// Created by zu on 2021/12/8. +// + +#import "SessionChatLimitView.h" +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "UIView+NIM.h" +#import "XPWebViewController.h" +#import +#import +#import + +@interface SessionChatLimitView() + +@property (nonatomic, strong) UIView *bgView; +@property (nonatomic, strong) YYLabel *textLabel; + +@end + +@implementation SessionChatLimitView + +- (instancetype)initWithChatLimit:(ChatLimitModel *)chatLimit { + if (self = [super initWithFrame:CGRectMake(0, 0, KScreenWidth, 50)]) { + [self addSubview:self.bgView]; + [self.bgView addSubview:self.textLabel]; + + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self); + }]; + + [self.textLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.left.right.bottom.mas_equalTo(self.bgView).insets(UIEdgeInsetsMake(10, 10, 10, 10)); + }]; + + [self initLabel:chatLimit.charmLevel.integerValue wealthLevel:chatLimit.wealthLevel.integerValue]; + } + return self; +} + +- (void)initLabel:(NSInteger)charmLevel wealthLevel:(NSInteger)wealthLevel { + NSInteger charm = charmLevel > 0 ? charmLevel : 3; + NSInteger wealth = wealthLevel > 0 ? wealthLevel : 3; + UIColor *highlightColor = DJDKMIMOMColor.appMainColor; + NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:YMLocalizedString(@"SessionChatLimitView0"), wealth, charm] attributes:@{NSFontAttributeName: [UIFont systemFontOfSize: 12],NSForegroundColorAttributeName: DJDKMIMOMColor.mainTextColor}];; + NSRange wealthLevelRange = [attStr.mutableString rangeOfString:[NSString stringWithFormat:@"财富等级≥%zd", wealth]]; + NSRange charmLevelRange = [attStr.mutableString rangeOfString:[NSString stringWithFormat:@"魅力等级≥%zd", charm]]; + [attStr yy_setColor:highlightColor range:wealthLevelRange]; + [attStr yy_setColor:highlightColor range:charmLevelRange]; + self.textLabel.attributedText = attStr; +} + +- (UIView *)bgView { + if (!_bgView) { + _bgView = [UIView new]; + _bgView.backgroundColor = DJDKMIMOMColor.appCellBackgroundColor; + _bgView.layer.masksToBounds = YES; + _bgView.layer.cornerRadius = 8.0; + } + return _bgView; +} + +- (YYLabel *)textLabel { + if (!_textLabel) { + _textLabel = [[YYLabel alloc] init]; + _textLabel.textAlignment = NSTextAlignmentCenter; + _textLabel.numberOfLines = 0; + } + return _textLabel; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/View/SessionNavLiveView.h b/YuMi/Modules/YMMessage/View/Session/View/SessionNavLiveView.h new file mode 100644 index 00000000..c5e5cf4c --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/View/SessionNavLiveView.h @@ -0,0 +1,16 @@ +// +// SessionNavLiveView.h +// YUMI +// +// Created by YUMI on 2023/1/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface SessionNavLiveView : UIView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/View/SessionNavLiveView.m b/YuMi/Modules/YMMessage/View/Session/View/SessionNavLiveView.m new file mode 100644 index 00000000..63228648 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/View/SessionNavLiveView.m @@ -0,0 +1,79 @@ +// +// SessionNavLiveView.m +// YUMI +// +// Created by YUMI on 2023/1/17. +// + +#import "SessionNavLiveView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" + +@interface SessionNavLiveView () + +///音符 +@property (nonatomic,strong) UIImageView *liveView; +///直播中 +@property (nonatomic,strong) UILabel *liveLabel; + +@end + +@implementation SessionNavLiveView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.liveView]; + [self addSubview:self.liveLabel]; +} + +- (void)initSubViewConstraints { + + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(15); + make.right.mas_equalTo(self.liveLabel.mas_right); + }]; + + [self.liveView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(6, 6)); + make.centerY.mas_equalTo(self); + make.left.mas_equalTo(self); + }]; + + [self.liveLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.liveView.mas_right).offset(4); + make.centerY.mas_equalTo(self.liveView); + }]; +} +#pragma mark - Getters And Setters +- (UIImageView *)liveView { + if (!_liveView) { + _liveView = [[UIImageView alloc] init]; + _liveView.userInteractionEnabled = YES; + _liveView.image = [UIImage imageNamed:@"session_nav_live"]; + } + return _liveView; +} + +- (UILabel *)liveLabel { + if (!_liveLabel) { + _liveLabel = [[UILabel alloc] init]; + _liveLabel.font = [UIFont systemFontOfSize:10]; + _liveLabel.textColor = [DJDKMIMOMColor textThirdColor]; + _liveLabel.text = @"直播中 >"; + } + return _liveLabel; +} + + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/View/SessionNavView.h b/YuMi/Modules/YMMessage/View/Session/View/SessionNavView.h new file mode 100644 index 00000000..f1eb3d83 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/View/SessionNavView.h @@ -0,0 +1,37 @@ +// +// SessionNavView.h +// YUMI +// +// Created by YUMI on 2022/4/25. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class SessionNavView, UserInfoModel; +@protocol SessionNavViewDelegate +///点击了举报 +- (void)sessionNavView:(SessionNavView *)view didClickReport:(UIButton *)sender; +///点击了关注 +- (void)sessionNavView:(SessionNavView *)view didClickLike:(UIButton *)sender; +///点击了返回 +- (void)sessionNavView:(SessionNavView *)view didClickBack:(UIButton *)sender; +///点击开房中 +- (void)sessionNavView:(SessionNavView *)view didRoomLive:(NSString *)roomUid; +@end + +@interface SessionNavView : UIView + +///标题 +@property (nonatomic,copy) NSString *title; +///用户信息 +@property (nonatomic,strong) UserInfoModel *userInfo; +///是否已经喜欢了 +@property (nonatomic,assign) BOOL isLike; +///代理 +@property (nonatomic,weak) id delegate; +///是否在房间中 +@property (nonatomic,assign) BOOL isInRoom; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/View/SessionNavView.m b/YuMi/Modules/YMMessage/View/Session/View/SessionNavView.m new file mode 100644 index 00000000..0a5a7d50 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/View/SessionNavView.m @@ -0,0 +1,257 @@ +// +// SessionNavView.m +// YUMI +// +// Created by YUMI on 2022/4/25. +// + +#import "SessionNavView.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "YUMIConstant.h" +#import "UIImage+Utils.h" +#import "SessionNavLiveView.h" +#import "NIMMessageUtils.h" +///Model +#import "UserInfoModel.h" + +@interface SessionNavView () + +///返回按钮 +@property (nonatomic,strong) UIButton *backButton; +///用户信息的容器 +@property (nonatomic,strong) UIStackView *infoStackView; +///标题 +@property (nonatomic,strong) UILabel *nickLabel; +///拉黑 和 直播中的 +@property (nonatomic,strong) UIStackView *stackView; +///加入黑名单 +@property (nonatomic,strong) UILabel *subTitleLabel; +///直播中 +@property (nonatomic,strong) SessionNavLiveView *liveView; +///是否关注 +@property (nonatomic,strong) UIButton *likeButton; +///举报 +@property (nonatomic,strong) UIButton *reportButton; + +@property (nonatomic,copy) NSString *userId; + +@end + +@implementation SessionNavView +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + [self addSubview:self.backButton]; + [self addSubview:self.infoStackView]; + [self addSubview:self.reportButton]; + [self addSubview:self.likeButton]; + + [self.infoStackView addArrangedSubview:self.nickLabel]; + [self.infoStackView addArrangedSubview:self.stackView]; + + [self.stackView addArrangedSubview:self.subTitleLabel]; + [self.stackView addArrangedSubview:self.liveView]; +} + +- (void)initSubViewConstraints { + [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(22, 22)); + make.left.mas_equalTo(self).offset(8); + make.top.mas_equalTo(statusbarHeight + 14); + }]; + + [self.infoStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.centerY.mas_equalTo(self.backButton); + }]; + + [self.likeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.reportButton); + make.right.mas_equalTo(self.reportButton.mas_left).offset(-12); + make.size.mas_equalTo(CGSizeMake(48, 20)); + }]; + + [self.reportButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(30, 30)); + make.right.mas_equalTo(self).offset(-15); + make.centerY.mas_equalTo(self.backButton); + }]; +} + +#pragma mark - Event Response +- (void)reportButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(sessionNavView:didClickReport:)]) { + [self.delegate sessionNavView:self didClickReport:sender]; + } +} + +- (void)backButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(sessionNavView:didClickBack:)]) { + [self.delegate sessionNavView:self didClickBack:sender]; + } +} + +- (void)likeButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(sessionNavView:didClickLike:)]) { + [self.delegate sessionNavView:self didClickLike:sender]; + } +} + +- (void)liveViewRecognizer { + if (self.delegate && [self.delegate respondsToSelector:@selector(sessionNavView:didRoomLive:)]) { + [self.delegate sessionNavView:self didRoomLive:self.userInfo.roomUid]; + } +} + +#pragma mark - Getters And Setters +- (void)setUserInfo:(UserInfoModel *)userInfo { + _userInfo = userInfo; + if (_userInfo) { + NSString * userId = [NSString stringWithFormat:@"%ld", userInfo.uid]; + self.userId = userId; + if (userInfo.nick.length > 0) { + self.title = userInfo.nick; + } else { + [[NIMSDK sharedSDK].userManager fetchUserInfos:@[userId] completion:^(NSArray * _Nullable users, NSError * _Nullable error) { + if (!error) { + self.title = users[0].userInfo.nickName; + } + }]; + } + self.subTitleLabel.hidden = ![[NIMSDK sharedSDK].userManager isUserInBlackList:userId]; + self.liveView.hidden = ([[NIMSDK sharedSDK].userManager isUserInBlackList:userId] || _userInfo.roomUid.length <= 0); + self.reportButton.hidden = [NIMMessageUtils isOfficalAccount:self.userId] || self.isInRoom; + } +} + +- (void)setTitle:(NSString *)title { + _title = title; + if (_title) { + NSString * nick = title; + if (nick.length > 10 ) { + nick = [nick substringToIndex:10]; + } + self.nickLabel.text = nick; + } +} + +- (void)setIsLike:(BOOL)isLike { + _isLike = isLike; + self.likeButton.hidden = _isLike; +} + +- (void)setIsInRoom:(BOOL)isInRoom { + _isInRoom = isInRoom; + self.reportButton.hidden = _isInRoom; + self.liveView.hidden = YES; + if (_isInRoom) { + [self.backButton mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self).offset(11); + }]; + } +} + +- (UIButton *)backButton { + if (!_backButton) { + _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateNormal]; + [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateSelected]; + [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _backButton; +} + +- (UIStackView *)infoStackView { + if (!_infoStackView) { + _infoStackView = [[UIStackView alloc] init]; + _infoStackView.axis = UILayoutConstraintAxisVertical; + _infoStackView.distribution = UIStackViewDistributionFill; + _infoStackView.alignment = UIStackViewAlignmentCenter; + _infoStackView.spacing = 1; + } + return _infoStackView; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 0; + } + return _stackView; +} + +- (SessionNavLiveView *)liveView { + if (!_liveView) { + _liveView = [[SessionNavLiveView alloc] init]; + _liveView.hidden = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(liveViewRecognizer)]; + [_liveView addGestureRecognizer:tap]; + } + return _liveView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + _nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _nickLabel.textAlignment = NSTextAlignmentCenter; + } + return _nickLabel; +} + +- (UIButton *)likeButton { + if (!_likeButton) { + _likeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_likeButton setTitle:YMLocalizedString(@"SessionNavView0") forState:UIControlStateNormal]; + [_likeButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + _likeButton.titleLabel.font = [UIFont systemFontOfSize:10]; + [_likeButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _likeButton.layer.masksToBounds = YES; + _likeButton.layer.cornerRadius = 10; + [_likeButton addTarget:self action:@selector(likeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _likeButton; +} + +- (UILabel *)subTitleLabel { + if (!_subTitleLabel) { + _subTitleLabel = [[UILabel alloc] init]; + _subTitleLabel.font = [UIFont systemFontOfSize:11]; + _subTitleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _subTitleLabel.text = YMLocalizedString(@"SessionNavView1"); + _subTitleLabel.hidden = YES; + _subTitleLabel.textAlignment = NSTextAlignmentCenter; + } + return _subTitleLabel; +} + +- (UIButton *)reportButton { + if (!_reportButton) { + _reportButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_reportButton setImage:[UIImage imageNamed:@"message_session_nav_report"] forState:UIControlStateNormal]; + [_reportButton setImage:[UIImage imageNamed:@"message_session_nav_report"] forState:UIControlStateSelected]; + [_reportButton addTarget:self action:@selector(reportButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _reportButton; +} + + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/View/SessionRiskView.h b/YuMi/Modules/YMMessage/View/Session/View/SessionRiskView.h new file mode 100644 index 00000000..b022339b --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/View/SessionRiskView.h @@ -0,0 +1,25 @@ +// +// SessionRiskView.h +// YUMI +// +// Created by YUMI on 2022/8/11. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class SessionRiskView; +@protocol SessionRiskViewDelegate + +- (void)sessionRiskViewCloseButtonClick:(SessionRiskView *)view; + +@end + +@interface SessionRiskView : UIView +@property (nonatomic,copy) NSString *userId; +///代理 +@property (nonatomic,weak) id delegate; +@property (nonatomic,copy) NSString *warning; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/View/SessionRiskView.m b/YuMi/Modules/YMMessage/View/Session/View/SessionRiskView.m new file mode 100644 index 00000000..361b4c17 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/View/SessionRiskView.m @@ -0,0 +1,88 @@ +// +// SessionRiskView.m +// YUMI +// +// Created by YUMI on 2022/8/11. +// + +#import "SessionRiskView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "SessionRiskCache.h" +#import "UIButton+EnlargeTouchArea.h" + +@interface SessionRiskView () +@property (strong, nonatomic) UILabel *warnTextLabel; + +@property (strong, nonatomic) UIButton *closeButton; +@end + +@implementation SessionRiskView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = UIColorRGBAlpha(0xfee4e4, 1); + + [self addSubview:self.warnTextLabel]; + [self addSubview:self.closeButton]; +} + +- (void)initSubViewConstraints { + [self.warnTextLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.mas_centerX); + make.centerY.mas_equalTo(self.mas_centerY); + }]; + [self.closeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(8); + make.trailing.mas_equalTo(self.mas_trailing).offset(-15); + make.centerY.mas_equalTo(self.mas_centerY); + }]; +} + +#pragma mark - Event Response +- (void)closeButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(sessionRiskViewCloseButtonClick:)]) { + [self.delegate sessionRiskViewCloseButtonClick:self]; + } +} + +#pragma mark - Getters And Setters +- (void)setWarning:(NSString *)warning { + _warning = warning; + if (_warning) { + self.warnTextLabel.text = _warning; + } +} + +- (UILabel *)warnTextLabel { + if (!_warnTextLabel) { + _warnTextLabel = [[UILabel alloc]init]; + _warnTextLabel.text = @"温馨提示:对方和您非好友关系,请注意隐私安全!"; + _warnTextLabel.textColor = UIColorFromRGB(0xFF5858); + _warnTextLabel.font = [UIFont systemFontOfSize:12.f]; + } + return _warnTextLabel; +} + +- (UIButton *)closeButton { + if (!_closeButton) { + _closeButton = [[UIButton alloc]init]; + [_closeButton setImage:[UIImage imageNamed:@"session_warn_close"] forState:UIControlStateNormal]; + [_closeButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + [_closeButton addTarget:self action:@selector(closeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _closeButton; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/View/SessionSettingUserView.h b/YuMi/Modules/YMMessage/View/Session/View/SessionSettingUserView.h new file mode 100644 index 00000000..a1e9b488 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/View/SessionSettingUserView.h @@ -0,0 +1,17 @@ +// +// SessionSettingUserView.h +// YUMI +// +// Created by YUMI on 2023/1/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class UserInfoModel; +@interface SessionSettingUserView : UIView +///用户信息 +@property (nonatomic,strong) UserInfoModel *userInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/View/SessionSettingUserView.m b/YuMi/Modules/YMMessage/View/Session/View/SessionSettingUserView.m new file mode 100644 index 00000000..e85c9679 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/View/SessionSettingUserView.m @@ -0,0 +1,167 @@ +// +// SessionSettingUserView.m +// YUMI +// +// Created by YUMI on 2023/1/18. +// + +#import "SessionSettingUserView.h" +///Third +#import +#import +///Tool +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "SpriteSheetImageManager.h" +///Model +#import "UserInfoModel.h" + +@interface SessionSettingUserView () +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///个人主页 +@property (nonatomic,strong) UILabel *idLabel; +///箭头 +@property (nonatomic,strong) UIImageView *arrowImageView; +///普通的 +@property (nonatomic,strong) YYAnimatedImageView *headWearImageView; +///头饰播放 +@property (nonatomic, strong) SpriteSheetImageManager *manager; + +@end + +@implementation SessionSettingUserView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.avatarImageView]; + [self addSubview:self.headWearImageView]; + [self addSubview:self.nickLabel]; + [self addSubview:self.idLabel]; + [self addSubview:self.arrowImageView]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(43, 43)); + make.left.mas_equalTo(self).offset(22); + make.top.mas_equalTo(self).offset(22); + }]; + + [self.headWearImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.centerY.mas_equalTo(self.avatarImageView); + make.width.mas_equalTo(self.avatarImageView.mas_width).multipliedBy(1.31); + make.height.mas_equalTo(self.headWearImageView.mas_width); + }]; + + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(12); + make.bottom.mas_equalTo(self.avatarImageView.mas_centerY).offset(-2); + }]; + + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nickLabel); + make.top.mas_equalTo(self.avatarImageView.mas_centerY).offset(2); + }]; + + [self.arrowImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(6.5, 11)); + make.centerY.mas_equalTo(self.avatarImageView); + make.right.mas_equalTo(self).offset(-15); + }]; +} + +#pragma mark - Getters And Setters +- (void)setUserInfo:(UserInfoModel *)userInfo { + _userInfo = userInfo; + if (_userInfo) { + self.avatarImageView.imageUrl = _userInfo.avatar; + NSString * nick = _userInfo.nick; + self.nickLabel.text = nick; + self.idLabel.text = [NSString stringWithFormat:@"ID:%ld", _userInfo.erbanNo]; + NSString * headurl = userInfo.headwearEffect.length > 0 ? userInfo.headwearEffect : userInfo.headwearPic; + if (headurl.length >0) { + self.headWearImageView.hidden = NO; + NSURL *url = [NSURL URLWithString:headurl]; + @kWeakify(self); + [self.manager loadSpriteSheetImageWithURL:url completionBlock:^(YYSpriteSheetImage * _Nullable sprit) { + @kStrongify(self); + self.headWearImageView.image = sprit; + } failureBlock:^(NSError * _Nullable error) { + }]; + } else { + self.headWearImageView.hidden = YES; + } + } +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 20; + } + return _avatarImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:15]; + _nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _nickLabel; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.font = [UIFont systemFontOfSize:12]; + _idLabel.textColor = [DJDKMIMOMColor textThirdColor]; + } + return _idLabel; +} + +- (UIImageView *)arrowImageView { + if (!_arrowImageView) { + _arrowImageView = [[UIImageView alloc] init]; + _arrowImageView.userInteractionEnabled = YES; + _arrowImageView.image = [UIImage imageNamed:@"room_setting_arrow"]; + } + return _arrowImageView; +} + +- (YYAnimatedImageView *)headWearImageView { + if (!_headWearImageView) { + _headWearImageView = [[YYAnimatedImageView alloc] init]; + _headWearImageView.backgroundColor = [UIColor clearColor]; + _headWearImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _headWearImageView; +} + +- (SpriteSheetImageManager *)manager { + if (!_manager) { + _manager = [[SpriteSheetImageManager alloc] init]; + } + return _manager; +} + + + +@end diff --git a/YuMi/Modules/YMMessage/View/SessionList/InterlocutionStatementElement.h b/YuMi/Modules/YMMessage/View/SessionList/InterlocutionStatementElement.h deleted file mode 100644 index cf6697e1..00000000 --- a/YuMi/Modules/YMMessage/View/SessionList/InterlocutionStatementElement.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// InterlocutionStatementElement.h -// YUMI -// -// Created by zu on 2021/11/26. -// - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface InterlocutionStatementElement : UITableViewCell - -- (void)rconcludeerAboutInterlocution:(NIMRecentSession*)recent; -@property (nonatomic,strong) NSMutableDictionary *stickApexCommunications; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SessionList/InterlocutionStatementElement.m b/YuMi/Modules/YMMessage/View/SessionList/InterlocutionStatementElement.m deleted file mode 100644 index 15925403..00000000 --- a/YuMi/Modules/YMMessage/View/SessionList/InterlocutionStatementElement.m +++ /dev/null @@ -1,201 +0,0 @@ -// -// InterlocutionStatementElement.m -// YUMI -// -// Created by zu on 2021/11/26. -// - -#import "InterlocutionStatementElement.h" -#import "NEMCBadgeRegard.h" -#import "NetIndicateRegard.h" -#import "NEMCCommunicationUtils.h" -#import "NEMCIntratemporalUtils.h" -#import "UIView+NIM.h" - -#import "DJDKMIMOMColor.h" - -#import - -@interface InterlocutionStatementElement() - -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; - -@property (nonatomic,strong) UILabel *constituteSequencignation; - -@property (nonatomic,strong) UILabel *communicationSequencignation; - -@property (nonatomic,strong) UILabel *intratemporalSequencignation; - -@property (nonatomic,strong) NEMCBadgeRegard *quantityRegard; - -@property (nonatomic,strong) UIView *divider; - -@end - -@implementation InterlocutionStatementElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(nullable NSString *)reuseIdentifier { - self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; - if (self) { - self.backgroundColor = UIColor.clearColor; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self initRegard]; - [self initLayout]; - } - return self; -} - -- (void)rconcludeerAboutInterlocution:(NIMRecentSession *)recent { - NIMUser *user = [[NIMSDK sharedSDK].userManager userInfo:recent.session.sessionId]; - if (user.userInfo == nil) { - NSString * uid = recent.session.sessionId; - if (uid > 0) { - NSArray * uids = @[uid]; - [[NIMSDK sharedSDK].userManager fetchUserInfos:uids completion:^(NSArray * _Nullable users, NSError * _Nullable error) { - if (error == nil) { - NIMUser * userInfo = users.firstObject; - self.constituteSequencignation.text = userInfo.userInfo.nickName; - NSString *avatarUrl = userInfo.userInfo.avatarUrl; - self.intelligenceportraitIndicateRegard.imageUrl = avatarUrl; - [self.constituteSequencignation sizeToFit]; - } - }]; - } - } else { - NSString *avatarUrl = user.userInfo.avatarUrl; - self.constituteSequencignation.text = user.userInfo.nickName; - self.intelligenceportraitIndicateRegard.imageUrl = avatarUrl; - [self.constituteSequencignation sizeToFit]; - } - self.communicationSequencignation.text = [NEMCCommunicationUtils communicationSatisfperformance:recent.lastMessage]; - [self.communicationSequencignation sizeToFit]; - if (recent.lastMessage) { - self.intratemporalSequencignation.text = [NEMCIntratemporalUtils showTime:recent.lastMessage.timestamp showDetail:NO]; - } else { - NSTimeInterval timeSecond = recent.updateTime / 1000.0; - self.intratemporalSequencignation.text = [NEMCIntratemporalUtils showTime:timeSecond showDetail:NO]; - } - [self.intratemporalSequencignation sizeToFit]; - if (recent.unreadCount) { - self.quantityRegard.hidden = NO; - self.quantityRegard.badgeValue = @(recent.unreadCount).stringValue; - } else { - self.quantityRegard.hidden = YES; - } - - NIMStickTopSessionInfo * topInfo = [self.stickApexCommunications objectForKey:recent.session]; - if (topInfo && topInfo.session.sessionId.integerValue == recent.session.sessionId.integerValue) { - self.backgroundColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#E5EFFC"]; - } else { - self.backgroundColor = [UIColor clearColor]; - } -} - -- (void)initRegard { - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.constituteSequencignation]; - [self.contentView addSubview:self.communicationSequencignation]; - [self.contentView addSubview:self.intratemporalSequencignation]; - [self.contentView addSubview:self.quantityRegard]; - [self.contentView addSubview:self.divider]; -} - -- (void)initLayout { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.contentView); - make.left.mas_equalTo(15); - make.height.width.mas_equalTo(45); - }]; - - [self.constituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(-2); - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(15); - }]; - - [self.communicationSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.constituteSequencignation); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(2); - make.right.mas_equalTo(self.intratemporalSequencignation.mas_left).offset(-15); - }]; - - [self.intratemporalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self).offset(-15); - make.right.mas_equalTo(self).offset(-15); - }]; - - [self.divider mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo (-15); - make.left.mas_equalTo(self.constituteSequencignation); - make.bottom.mas_equalTo(self); - make.height.mas_equalTo(0.5f); - }]; -} - -- (void)layoutSubviews { - [super layoutSubviews]; - self.quantityRegard.nim_right = self.nim_width - 15; - self.quantityRegard.nim_top = 20; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition *config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.radius = CGFLOAT_MAX; - config.imageType = ImageGenreUserIcon; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 45.f / 2; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)constituteSequencignation { - if (!_constituteSequencignation) { - _constituteSequencignation = [[UILabel alloc] initWithFrame:CGRectZero]; - _constituteSequencignation.backgroundColor = [UIColor clearColor]; - _constituteSequencignation.font = [UIFont systemFontOfSize:15.f weight:UIFontWeightMedium]; - _constituteSequencignation.textColor = DJDKMIMOMColor.mainEssayPrettify; - } - return _constituteSequencignation; -} - -- (UILabel *)communicationSequencignation { - if (!_communicationSequencignation) { - _communicationSequencignation = [[UILabel alloc] initWithFrame:CGRectZero]; - _communicationSequencignation.backgroundColor = [UIColor clearColor]; - _communicationSequencignation.font = [UIFont systemFontOfSize:13.f]; - _communicationSequencignation.textColor = DJDKMIMOMColor.instantEssayPrettify; - } - return _communicationSequencignation; -} - -- (UILabel *)intratemporalSequencignation { - if (!_intratemporalSequencignation) { - _intratemporalSequencignation = [[UILabel alloc] initWithFrame:CGRectZero]; - _intratemporalSequencignation.backgroundColor = [UIColor clearColor]; - _intratemporalSequencignation.font = [UIFont systemFontOfSize:12.f weight:UIFontWeightLight]; - _intratemporalSequencignation.textColor = DJDKMIMOMColor.essayTertiusPrettify; - [_intratemporalSequencignation setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - [_intratemporalSequencignation setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - } - return _intratemporalSequencignation; -} - -- (NEMCBadgeRegard *)quantityRegard { - if (!_quantityRegard) { - _quantityRegard = [NEMCBadgeRegard viewAboutQuantityPrompt:@""]; - } - return _quantityRegard; -} - -- (UIView *)divider { - if (!_divider) { - _divider = [[UIView alloc]init]; - _divider.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - _divider.hidden = YES; - } - return _divider; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/SessionList/InterlocutionStatementRegardGovernancer.h b/YuMi/Modules/YMMessage/View/SessionList/InterlocutionStatementRegardGovernancer.h deleted file mode 100644 index 8b748528..00000000 --- a/YuMi/Modules/YMMessage/View/SessionList/InterlocutionStatementRegardGovernancer.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// InterlocutionStatementRegardGovernancer.h -// YUMI -// -// Created by zu on 2021/11/25. -// -// 请注意,这是一次冒险。😱 -// - -#import "BaseRegardGovernancer.h" -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSUInteger, InterlocutionStatementOpenGenre) { - InterlocutionStatementOpenGenreDefault = 1, - InterlocutionStatementOpenGenreRoom = 2, -}; - -@interface InterlocutionStatementRegardGovernancer : BaseRegardGovernancer - -- (instancetype)initWithType:(InterlocutionStatementOpenGenre)type; - -@property (nonatomic, weak) UIViewController * mainGovernancer; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SessionList/InterlocutionStatementRegardGovernancer.m b/YuMi/Modules/YMMessage/View/SessionList/InterlocutionStatementRegardGovernancer.m deleted file mode 100644 index f3241f5a..00000000 --- a/YuMi/Modules/YMMessage/View/SessionList/InterlocutionStatementRegardGovernancer.m +++ /dev/null @@ -1,514 +0,0 @@ -// -// InterlocutionStatementRegardGovernancer.m -// YUMI -// -// Created by zu on 2021/11/25. -// - -#import "InterlocutionStatementRegardGovernancer.h" -#import "InterlocutionStatementElement.h" -#import "InterlocutionRegardGovernancer.h" -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "ClientDisposition.h" -#import "Api+Mine.h" -#import "AccountAbstractStorage.h" -#import "NSArray+Safe.h" -#import "NSMutableDictionary+Saft.h" -#import "ConsumerAbstractMatrix.h" -#import "YUMIInterlocutionDiscoveryStrangeRegardGovernancer.h" -#import "MKJPopup.h" - - -NSString * const kMessageShowReadDotKey = @"kMessageShowReadDotKey"; - -#import - -@interface InterlocutionStatementRegardGovernancer () -@property (nonatomic,strong) UIView *customNevigationObstacle; - -@property (nonatomic,strong) UILabel *titleLabel; - -@property (nonatomic, strong) UIButton *entiretyLireBtuton; - -@property (nonatomic, strong) UITableView *interlocutionStatementRegard; - - -@property (nonatomic, strong) NSMutableArray *recentInterlocutions; - -@property (nonatomic, assign) InterlocutionStatementOpenGenre unfoildGenre; -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@property (nonatomic, copy) void(^scrollCallback)(UIScrollView *scrollView); -@property (nonatomic,strong) NSMutableDictionary *stickApexCommunications; -@end - -@implementation InterlocutionStatementRegardGovernancer - -- (void)dealloc { - [[NIMSDK sharedSDK].conversationManager removeDelegate:self]; - [[NIMSDK sharedSDK].loginManager removeDelegate:self]; - [[NSNotificationCenter defaultCenter]removeObserver:self]; -} - - -- (instancetype)initWithType:(InterlocutionStatementOpenGenre)type { - self = [self init]; - if (self) { - _unfoildGenre = type; - } - return self; -} - -- (instancetype)init { - self = [super init]; - if (self) { - _unfoildGenre = InterlocutionStatementOpenGenreDefault; - [self initTowardsoloudspeakers]; - [[NIMSDK sharedSDK].conversationManager addDelegate:self]; - [[NIMSDK sharedSDK].loginManager addDelegate:self]; - - [[NIMSDKConfig sharedConfig] setShouldSyncStickTopSessionInfos:YES]; - } - return self; -} - -- (BOOL)isVeiledNevObstacle { - return YES;; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self getUserInfo]; - [self initRegards]; - [self initLayout]; - [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(entiretyLireBtutonTicktack) name:@"kAllReadAction" object:nil]; -} - -- (void)getUserInfo { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api getUserInfo:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - ConsumerAbstractMatrix * userInfo = [ConsumerAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - self.userInfo = userInfo; - [self.interlocutionStatementRegard reloadData]; - } - } uid:uid]; -} -- (void)initRegards { - self.view.backgroundColor = [UIColor clearColor]; - if (self.unfoildGenre == InterlocutionStatementOpenGenreDefault) { - [self.customNevigationObstacle addSubview:self.titleLabel]; - [self.view addSubview:self.customNevigationObstacle]; - [self.customNevigationObstacle addSubview:self.entiretyLireBtuton]; - } - [self.view addSubview:self.interlocutionStatementRegard]; -} - -- (void)initLayout { - if (self.unfoildGenre == InterlocutionStatementOpenGenreDefault) { - [self.customNevigationObstacle mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.height.mas_equalTo(kNavigationHeight); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.customNevigationObstacle); - make.bottom.mas_equalTo(self.customNevigationObstacle.mas_bottom).offset(-10); - }]; - [self.entiretyLireBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-16); - make.width.height.mas_equalTo(30); - make.centerY.mas_equalTo(self.titleLabel); - }]; - } - - [self.interlocutionStatementRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - if (self.unfoildGenre == InterlocutionStatementOpenGenreDefault) { - make.top.mas_equalTo(self.view).offset(kNavigationHeight); - } else { - make.top.mas_equalTo(self.view); - } - }]; - -} - -- (void)initTowardsoloudspeakers { - [self.recentInterlocutions removeAllObjects]; - _recentInterlocutions = [[NIMSDK sharedSDK].conversationManager.allRecentSessions mutableCopy]; - __block int unreadCount = 0; - NSMutableArray * uids = [[NSMutableArray alloc] init]; - [self.recentInterlocutions enumerateObjectsUsingBlock:^(NIMRecentSession * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - [uids addObject:obj.session.sessionId]; - unreadCount += obj.unreadCount; - }]; - [[NIMSDK sharedSDK].userManager fetchUserInfos:uids completion:nil]; - - NIMLoadRecentSessionsOptions *options = [[NIMLoadRecentSessionsOptions alloc] init]; - options.sortByStickTopInfos = YES; - [NIMSDK.sharedSDK.chatExtendManager loadRecentSessionsWithOptions:options completion:^(NSError * _Nullable error, NSArray * _Nullable recentInterlocutions) { - if (error) { - - return; - } - - }]; - @kWeakify(self); - - [self.recentInterlocutions enumerateObjectsUsingBlock:^(NIMRecentSession * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - @kStrongify(self); - if (![[ClientDisposition partowardsiciptowardsionDisposition].dispositionAbstract.officialMsgUids containsObject:obj.session.sessionId]) { - if (obj.lastMessage.messageType == NIMMessageTypeTip) { - if ([obj.lastMessage.localExt[@"isServer"] boolValue] == YES) { - [self.recentInterlocutions removeObject:obj]; - [uids removeObject:obj.session.sessionId]; - unreadCount -= obj.unreadCount; - NIMDeleteRecentSessionOption *option = [[NIMDeleteRecentSessionOption alloc] init]; - option.isDeleteRoamMessage = YES; - option.shouldMarkAllMessagesReadInSessions = YES; - [[NIMSDK sharedSDK].conversationManager deleteRecentSession:obj option:option completion:^(NSError * _Nullable error) { - - }]; - } - } - } - }]; - [self setTarbsObstacleProvisionQuantity:unreadCount]; - [[NIMSDK sharedSDK].userManager fetchUserInfos:uids completion:nil]; - - [[NIMSDK sharedSDK].chatExtendManager loadStickTopSessionInfos:^(NSError * _Nullable error, NSDictionary * _Nullable infos) { - if (error == nil) { - self.stickApexCommunications = [infos mutableCopy]; - [self sortInterlocutionSttowardsement]; - } - }]; - - NIMLoadRecentSessionsOptions *options1 = [[NIMLoadRecentSessionsOptions alloc] init]; - options1.sortByStickTopInfos = YES; - [NIMSDK.sharedSDK.chatExtendManager loadRecentSessionsWithOptions:options1 completion:^(NSError * _Nullable error, NSArray * _Nullable recentInterlocutions) { - if (error) { - - return; - } - - }]; -} - -#pragma mark - UITableViewDelegate -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.unfoildGenre == InterlocutionStatementOpenGenreRoom) { - NIMRecentSession *recentSession = self.recentInterlocutions[indexPath.row]; - InterlocutionRegardGovernancer * sessionVC =[[InterlocutionRegardGovernancer alloc] initWithSession:recentSession.session]; - sessionVC.stickApexCommunications = self.stickApexCommunications; - sessionVC.unfoildGenre = self.unfoildGenre; - CATransition *transition = [CATransition animation]; - transition.duration = 0.3f; - transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; - transition.type = kCATransitionPush; - transition.subtype = kCATransitionFromRight; - [self.mainGovernancer.view.layer addAnimation:transition forKey:nil]; - [self.mainGovernancer.view addSubview:sessionVC.view]; - [self.mainGovernancer addChildViewController:sessionVC]; - } else { - NIMRecentSession *recentSession = self.recentInterlocutions[indexPath.row]; - InterlocutionRegardGovernancer *vc = [[InterlocutionRegardGovernancer alloc] initWithSession:recentSession.session]; - vc.stickApexCommunications = self.stickApexCommunications; - vc.unfoildGenre = self.unfoildGenre; - [self.navigationController pushViewController:vc animated:YES]; - } -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ - return 70.f; -} - -- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { - return YES; -} - -- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath { - NIMRecentSession * session = [self.recentInterlocutions secureGroalTowardsIndictowardsrix1:indexPath.row]; - UITableViewRowAction * deleteAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:YMLocalizedString(@"Session_List_View_Controller_0") handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) { - NIMRecentSession * session = [self.recentInterlocutions secureGroalTowardsIndictowardsrix1:indexPath.row]; - [[NIMSDK sharedSDK].conversationManager deleteRecentSession:session]; - }]; - deleteAction.title = YMLocalizedString(@"Session_List_View_Controller_1"); - deleteAction.backgroundColor = [UIColor redColor]; - NIMStickTopSessionInfo * topInfo = [self.stickApexCommunications objectForKey:session.session]; - if (topInfo.session.sessionId.length > 0) { - UITableViewRowAction * topAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:YMLocalizedString(@"Session_List_View_Controller_6") handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) { - [[NIMSDK sharedSDK].chatExtendManager removeStickTopSession:topInfo completion:^(NSError * _Nullable error, NIMStickTopSessionInfo * _Nullable removedInfo) { - if (error == nil) { - [self.stickApexCommunications removeObjectForKey:session.session]; - [self sortInterlocutionSttowardsement]; - [self.interlocutionStatementRegard reloadData]; - } - }]; - }]; - topAction.title = YMLocalizedString(@"Session_List_View_Controller_7"); - topAction.backgroundColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#4C94FF"]; - return @[deleteAction, topAction]; - } else { - UITableViewRowAction * topAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:YMLocalizedString(@"Session_List_View_Controller_6") handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) { - NIMAddStickTopSessionParams * params = [[NIMAddStickTopSessionParams alloc] initWithSession:session.session]; - [[NIMSDK sharedSDK].chatExtendManager addStickTopSession:params completion:^(NSError * _Nullable error, NIMStickTopSessionInfo * _Nullable newInfo) { - if (error == nil) { - [self.stickApexCommunications secureSetGroal:newInfo forKey:session.session]; - [self sortInterlocutionSttowardsement]; - [self.interlocutionStatementRegard reloadData]; - } - }]; - }]; - topAction.title = YMLocalizedString(@"Session_List_View_Controller_6"); - topAction.backgroundColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#4C94FF"]; - return @[deleteAction, topAction]; - } -} - -#pragma mark - UITableViewDataSource -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return 1; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ - return self.recentInterlocutions.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ - static NSString * cellId = @"cellId"; - InterlocutionStatementElement * cell = [tableView dequeueReusableCellWithIdentifier:cellId]; - if (!cell) { - cell = [[InterlocutionStatementElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId]; - } - NIMRecentSession *recent = self.recentInterlocutions[indexPath.row]; - cell.stickApexCommunications = self.stickApexCommunications; - [cell rconcludeerAboutInterlocution:recent]; - return cell; -} -#pragma mark - NIMConversationManagerDelegate -- (void)didLoadAllRecentSessionCompletion { - [self initTowardsoloudspeakers]; - [self.interlocutionStatementRegard reloadData]; -} - -- (void)didAddRecentSession:(NIMRecentSession *)recentSession - totalUnreadCount:(NSInteger)totalUnreadCount { - [self.recentInterlocutions addObject:recentSession]; - [self.recentInterlocutions sortUsingComparator:^NSComparisonResult(id obj1, id obj2) { - NIMRecentSession *item1 = obj1; - NIMRecentSession *item2 = obj2; - if (item1.lastMessage.timestamp < item2.lastMessage.timestamp) { - return NSOrderedDescending; - } - if (item1.lastMessage.timestamp > item2.lastMessage.timestamp) { - return NSOrderedAscending; - } - return NSOrderedSame; - }]; - [self.interlocutionStatementRegard reloadData]; - [self setTarbsObstacleProvisionQuantity:totalUnreadCount]; -} - -- (void)didUpdateRecentSession:(NIMRecentSession *)recentSession - totalUnreadCount:(NSInteger)totalUnreadCount { - for (NIMRecentSession *recent in self.recentInterlocutions) { - if ([recentSession.session.sessionId isEqualToString:recent.session.sessionId]) { - [self.recentInterlocutions removeObject:recent]; - break; - } - } - NSInteger insert = [self prohibiticoveryInsertPlace:recentSession]; - [self.recentInterlocutions insertObject:recentSession atIndex:insert]; - [self.interlocutionStatementRegard reloadData]; - [self setTarbsObstacleProvisionQuantity:totalUnreadCount]; -} - -- (void)didRemoveRecentSession:(NIMRecentSession *)recentSession - totalUnreadCount:(NSInteger)totalUnreadCount { - - NSUInteger index = [self.recentInterlocutions indexOfObject:recentSession]; - [self.recentInterlocutions removeObjectAtIndex:index]; - - - BOOL deleteRemote = NO; - if (deleteRemote) { - [[NIMSDK sharedSDK].conversationManager deleteRemoteSessions:@[recentSession.session] - completion:nil]; - } - [self.interlocutionStatementRegard reloadData]; - [self setTarbsObstacleProvisionQuantity:totalUnreadCount]; -} - -#pragma mark - NIMLoginManagerDelegate -- (void)onLogin:(NIMLoginStep)step { - if (step == NIMLoginStepSyncOK) { - [self initTowardsoloudspeakers]; - } -} - -#pragma mark - JXCategoryListContentViewDelegate -- (UIView *)listView { - return self.view; -} -- (UIScrollView *)listScrollView { - return self.interlocutionStatementRegard; -} -- (void)listViewDidScrollCallback:(void (^)(UIScrollView *))callback { - self.scrollCallback = callback; -} - -- (void)scrollViewDidScroll:(UIScrollView *)scrollView { - if (self.scrollCallback){ - self.scrollCallback(scrollView); - } - -} - -#pragma mark - Private -- (NSInteger)prohibiticoveryInsertPlace:(NIMRecentSession *)recentSession{ - __block NSUInteger matchIdx = 0; - __block BOOL find = NO; - [self.recentInterlocutions enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { - NIMRecentSession *item = obj; - if (item.lastMessage.timestamp <= recentSession.lastMessage.timestamp) { - *stop = YES; - find = YES; - matchIdx = idx; - } - }]; - if (find) { - return matchIdx; - } else { - return self.recentInterlocutions.count; - } -} - -- (void)sort{ - [self.recentInterlocutions sortUsingComparator:^NSComparisonResult(id obj1, id obj2) { - NIMRecentSession *item1 = obj1; - NIMRecentSession *item2 = obj2; - if (item1.lastMessage.timestamp < item2.lastMessage.timestamp) { - return NSOrderedDescending; - } - if (item1.lastMessage.timestamp > item2.lastMessage.timestamp) { - return NSOrderedAscending; - } - return NSOrderedSame; - }]; -} - -- (void)setTarbsObstacleProvisionQuantity:(NSInteger)value { - [[NSNotificationCenter defaultCenter]postNotificationName:@"kGetTabBarItemBadge" object:nil userInfo:@{@"BadgeValue":@(value)}]; - -} - --(void)sortInterlocutionSttowardsement { - NSMutableArray * recentList = [self.recentInterlocutions mutableCopy]; - [self.recentInterlocutions removeAllObjects]; - NSMutableArray * topList = [NSMutableArray array]; - NSMutableArray * normalList = [NSMutableArray array]; - for (int i = 0 ; i < recentList.count; i++) { - NIMRecentSession * recentSession = [recentList secureGroalTowardsIndictowardsrix1:i]; - NIMStickTopSessionInfo * topInfo = [self.stickApexCommunications objectForKey:recentSession.session]; - if (topInfo && topInfo.session.sessionId > 0) { - [topList addObject:recentSession]; - } else { - [normalList addObject:recentSession]; - } - } - - if (topList.count > 0) { - [self sortGarment:topList]; - } - - if (normalList.count > 0) { - [self sortGarment:normalList]; - } - - [self.recentInterlocutions addObjectsFromArray:topList]; - [self.recentInterlocutions addObjectsFromArray:normalList]; - [self.interlocutionStatementRegard reloadData]; -} - -- (void)sortGarment:(NSMutableArray *)arry { - [arry sortUsingComparator:^NSComparisonResult(id obj1, id obj2) { - NIMRecentSession *item1 = obj1; - NIMRecentSession *item2 = obj2; - if (item1.lastMessage.timestamp < item2.lastMessage.timestamp) { - return NSOrderedDescending; - } - if (item1.lastMessage.timestamp > item2.lastMessage.timestamp) { - return NSOrderedAscending; - } - return NSOrderedSame; - }]; -} - - -#pragma mark - action -- (void)entiretyLireBtutonTicktack { - NSInteger count = [NIMSDK sharedSDK].conversationManager.allUnreadCount; - if (count<1) { - [self EvidenceMistakeToast:YMLocalizedString(@"Session_List_View_Controller_2")]; - return; - } - MKJPrecautiousDisposition * config = [[MKJPrecautiousDisposition alloc] init]; - config.acknowledgementBtutonDisposition.title = YMLocalizedString(@"Session_List_View_Controller_3"); - config.message = @"清除当前未读消息提醒?"; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [[NIMSDK sharedSDK].conversationManager markAllMessagesRead]; - [self setTarbsObstacleProvisionQuantity:0]; - [self.interlocutionStatementRegard reloadData]; - } cancelHandler:^{ - - }]; -} - - -- (UIView *)customNevigationObstacle { - if (!_customNevigationObstacle) { - CGRect frame = CGRectMake(0, kStatusBarHeight, KScreenWidth, 44); - _customNevigationObstacle = [[UIView alloc]initWithFrame:frame]; - } - return _customNevigationObstacle; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] initWithFrame:CGRectZero]; - _titleLabel.backgroundColor = [UIColor clearColor]; - _titleLabel.font = [UIFont systemFontOfSize:18.f weight:UIFontWeightMedium]; - _titleLabel.textColor = DJDKMIMOMColor.mainEssayPrettify; - _titleLabel.text = YMLocalizedString(@"Session_List_View_Controller_5"); - } - return _titleLabel; -} - -- (UITableView *)interlocutionStatementRegard { - if (!_interlocutionStatementRegard) { - _interlocutionStatementRegard = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _interlocutionStatementRegard.separatorStyle = UITableViewCellSeparatorStyleNone; - _interlocutionStatementRegard.backgroundColor = UIColor.clearColor; - _interlocutionStatementRegard.delegate = self; - _interlocutionStatementRegard.dataSource = self; - _interlocutionStatementRegard.showsVerticalScrollIndicator = NO; - } - return _interlocutionStatementRegard; -} - -- (NSMutableArray *)recentInterlocutions { - if (!_recentInterlocutions) { - _recentInterlocutions = [NSMutableArray array]; - } - return _recentInterlocutions; -} - -- (NSMutableDictionary *)stickApexCommunications { - if (!_stickApexCommunications) { - _stickApexCommunications = [NSMutableDictionary dictionary]; - } - return _stickApexCommunications; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/SessionList/SessionListCell.h b/YuMi/Modules/YMMessage/View/SessionList/SessionListCell.h new file mode 100644 index 00000000..372602f8 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SessionList/SessionListCell.h @@ -0,0 +1,20 @@ +// +// SessionListCell.h +// YUMI +// +// Created by zu on 2021/11/26. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface SessionListCell : UITableViewCell + +- (void)renderWithSession:(NIMRecentSession*)recent; +///置顶回话 +@property (nonatomic,strong) NSMutableDictionary *stickTopMessages; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SessionList/SessionListCell.m b/YuMi/Modules/YMMessage/View/SessionList/SessionListCell.m new file mode 100644 index 00000000..cd27ed2b --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SessionList/SessionListCell.m @@ -0,0 +1,201 @@ +// +// SessionListCell.m +// YUMI +// +// Created by zu on 2021/11/26. +// + +#import "SessionListCell.h" +#import "NIMBadgeView.h" +#import "NetImageView.h" +#import "NIMMessageUtils.h" +#import "NIMTimeUtils.h" +#import "UIView+NIM.h" + +#import "DJDKMIMOMColor.h" + +#import + +@interface SessionListCell() + +@property (nonatomic,strong) NetImageView *avatarImageView; + +@property (nonatomic,strong) UILabel *nameLabel; + +@property (nonatomic,strong) UILabel *messageLabel; + +@property (nonatomic,strong) UILabel *timeLabel; + +@property (nonatomic,strong) NIMBadgeView *badgeView; + +@property (nonatomic,strong) UIView *divider; + +@end + +@implementation SessionListCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(nullable NSString *)reuseIdentifier { + self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; + if (self) { + self.backgroundColor = UIColor.clearColor; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self initView]; + [self initLayout]; + } + return self; +} + +- (void)renderWithSession:(NIMRecentSession *)recent { + NIMUser *user = [[NIMSDK sharedSDK].userManager userInfo:recent.session.sessionId]; + if (user.userInfo == nil) { + NSString * uid = recent.session.sessionId; + if (uid > 0) { + NSArray * uids = @[uid]; + [[NIMSDK sharedSDK].userManager fetchUserInfos:uids completion:^(NSArray * _Nullable users, NSError * _Nullable error) { + if (error == nil) { + NIMUser * userInfo = users.firstObject; + self.nameLabel.text = userInfo.userInfo.nickName; + NSString *avatarUrl = userInfo.userInfo.avatarUrl; + self.avatarImageView.imageUrl = avatarUrl; + [self.nameLabel sizeToFit]; + } + }]; + } + } else { + NSString *avatarUrl = user.userInfo.avatarUrl; + self.nameLabel.text = user.userInfo.nickName; + self.avatarImageView.imageUrl = avatarUrl; + [self.nameLabel sizeToFit]; + } + self.messageLabel.text = [NIMMessageUtils messageContent:recent.lastMessage]; + [self.messageLabel sizeToFit]; + if (recent.lastMessage) { + self.timeLabel.text = [NIMTimeUtils showTime:recent.lastMessage.timestamp showDetail:NO]; + } else { + NSTimeInterval timeSecond = recent.updateTime / 1000.0; + self.timeLabel.text = [NIMTimeUtils showTime:timeSecond showDetail:NO]; + } + [self.timeLabel sizeToFit]; + if (recent.unreadCount) { + self.badgeView.hidden = NO; + self.badgeView.badgeValue = @(recent.unreadCount).stringValue; + } else { + self.badgeView.hidden = YES; + } + + NIMStickTopSessionInfo * topInfo = [self.stickTopMessages objectForKey:recent.session]; + if (topInfo && topInfo.session.sessionId.integerValue == recent.session.sessionId.integerValue) { + self.backgroundColor = [DJDKMIMOMColor colorWithHexString:@"#E5EFFC"]; + } else { + self.backgroundColor = [UIColor clearColor]; + } +} + +- (void)initView { + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.nameLabel]; + [self.contentView addSubview:self.messageLabel]; + [self.contentView addSubview:self.timeLabel]; + [self.contentView addSubview:self.badgeView]; + [self.contentView addSubview:self.divider]; +} + +- (void)initLayout { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.contentView); + make.left.mas_equalTo(15); + make.height.width.mas_equalTo(45); + }]; + + [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.avatarImageView.mas_centerY).offset(-2); + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(15); + }]; + + [self.messageLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nameLabel); + make.top.mas_equalTo(self.avatarImageView.mas_centerY).offset(2); + make.right.mas_equalTo(self.timeLabel.mas_left).offset(-15); + }]; + + [self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self).offset(-15); + make.right.mas_equalTo(self).offset(-15); + }]; + + [self.divider mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo (-15); + make.left.mas_equalTo(self.nameLabel); + make.bottom.mas_equalTo(self); + make.height.mas_equalTo(0.5f); + }]; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + self.badgeView.nim_right = self.nim_width - 15; + self.badgeView.nim_top = 20; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig *config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.radius = CGFLOAT_MAX; + config.imageType = ImageTypeUserIcon; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 45.f / 2; + } + return _avatarImageView; +} + +- (UILabel *)nameLabel { + if (!_nameLabel) { + _nameLabel = [[UILabel alloc] initWithFrame:CGRectZero]; + _nameLabel.backgroundColor = [UIColor clearColor]; + _nameLabel.font = [UIFont systemFontOfSize:15.f weight:UIFontWeightMedium]; + _nameLabel.textColor = DJDKMIMOMColor.mainTextColor; + } + return _nameLabel; +} + +- (UILabel *)messageLabel { + if (!_messageLabel) { + _messageLabel = [[UILabel alloc] initWithFrame:CGRectZero]; + _messageLabel.backgroundColor = [UIColor clearColor]; + _messageLabel.font = [UIFont systemFontOfSize:13.f]; + _messageLabel.textColor = DJDKMIMOMColor.secondTextColor; + } + return _messageLabel; +} + +- (UILabel *)timeLabel { + if (!_timeLabel) { + _timeLabel = [[UILabel alloc] initWithFrame:CGRectZero]; + _timeLabel.backgroundColor = [UIColor clearColor]; + _timeLabel.font = [UIFont systemFontOfSize:12.f weight:UIFontWeightLight]; + _timeLabel.textColor = DJDKMIMOMColor.textThirdColor; + [_timeLabel setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + [_timeLabel setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + } + return _timeLabel; +} + +- (NIMBadgeView *)badgeView { + if (!_badgeView) { + _badgeView = [NIMBadgeView viewWithBadgeTip:@""]; + } + return _badgeView; +} + +- (UIView *)divider { + if (!_divider) { + _divider = [[UIView alloc]init]; + _divider.backgroundColor = [DJDKMIMOMColor dividerColor]; + _divider.hidden = YES; + } + return _divider; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/SessionList/SessionListViewController.h b/YuMi/Modules/YMMessage/View/SessionList/SessionListViewController.h new file mode 100644 index 00000000..5d159591 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SessionList/SessionListViewController.h @@ -0,0 +1,30 @@ +// +// SessionListViewController.h +// YUMI +// +// Created by zu on 2021/11/25. +// +// 请注意,这是一次冒险。😱 +// + +#import "BaseViewController.h" +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSUInteger, SessionListOpenType) { + SessionListOpenTypeDefault = 1, + SessionListOpenTypeRoom = 2, +}; + +@interface SessionListViewController : BaseViewController + +- (instancetype)initWithType:(SessionListOpenType)type; +/** 控制器 因为房间内聊天没有控制器去push 或者做其他的操作*/ +@property (nonatomic, weak) UIViewController * mainController; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SessionList/SessionListViewController.m b/YuMi/Modules/YMMessage/View/SessionList/SessionListViewController.m new file mode 100644 index 00000000..6d235919 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SessionList/SessionListViewController.m @@ -0,0 +1,522 @@ +// +// SessionListViewController.m +// YUMI +// +// Created by zu on 2021/11/25. +// + +#import "SessionListViewController.h" +#import "SessionListCell.h" +#import "SessionViewController.h" +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "ClientConfig.h" +#import "Api+Mine.h" +#import "AccountInfoStorage.h" +#import "NSArray+Safe.h" +#import "NSMutableDictionary+Saft.h" +///Model +#import "UserInfoModel.h" +///View +#import "XPSessionFindNewViewController.h" +#import "TTPopUp.h" + + +NSString * const kMessageShowReadDotKey = @"kMessageShowReadDotKey"; + +#import + +@interface SessionListViewController () +@property (nonatomic,strong) UIView *customNavigationBar; + +@property (nonatomic,strong) UILabel *titleLabel; + +@property (nonatomic, strong) UIButton *allReadButton; +/** + * 会话列表 + */ +@property (nonatomic, strong) UITableView *sessionListView; + +/** + * 最近会话集合 + */ +@property (nonatomic, strong) NSMutableArray *recentSessions; + +@property (nonatomic, assign) SessionListOpenType openType; +///用户信息 +@property (nonatomic,strong) UserInfoModel *userInfo; +@property (nonatomic, copy) void(^scrollCallback)(UIScrollView *scrollView); +///置顶回话 +@property (nonatomic,strong) NSMutableDictionary *stickTopMessages; +@end + +@implementation SessionListViewController + +- (void)dealloc { + [[NIMSDK sharedSDK].conversationManager removeDelegate:self]; + [[NIMSDK sharedSDK].loginManager removeDelegate:self]; + [[NSNotificationCenter defaultCenter]removeObserver:self]; +} + + +- (instancetype)initWithType:(SessionListOpenType)type { + self = [self init]; + if (self) { + _openType = type; + } + return self; +} + +- (instancetype)init { + self = [super init]; + if (self) { + _openType = SessionListOpenTypeDefault; + [self initDatas]; + [[NIMSDK sharedSDK].conversationManager addDelegate:self]; + [[NIMSDK sharedSDK].loginManager addDelegate:self]; + ///置顶会话同步 + [[NIMSDKConfig sharedConfig] setShouldSyncStickTopSessionInfos:YES]; + } + return self; +} + +- (BOOL)isHiddenNavBar { + return YES;; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self getUserInfo]; + [self initViews]; + [self initLayout]; + [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(allReadButtonClick) name:@"kAllReadAction" object:nil]; +} + +- (void)getUserInfo { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api getUserInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + UserInfoModel * userInfo = [UserInfoModel modelWithDictionary:data.data]; + self.userInfo = userInfo; + [self.sessionListView reloadData]; + } + } uid:uid]; +} +- (void)initViews { + self.view.backgroundColor = [UIColor clearColor]; + if (self.openType == SessionListOpenTypeDefault) { + [self.customNavigationBar addSubview:self.titleLabel]; + [self.view addSubview:self.customNavigationBar]; + [self.customNavigationBar addSubview:self.allReadButton]; + } + [self.view addSubview:self.sessionListView]; +} + +- (void)initLayout { + if (self.openType == SessionListOpenTypeDefault) { + [self.customNavigationBar mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.height.mas_equalTo(kNavigationHeight); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.customNavigationBar); + make.bottom.mas_equalTo(self.customNavigationBar.mas_bottom).offset(-10); + }]; + [self.allReadButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-16); + make.width.height.mas_equalTo(30); + make.centerY.mas_equalTo(self.titleLabel); + }]; + } + + [self.sessionListView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + if (self.openType == SessionListOpenTypeDefault) { + make.top.mas_equalTo(self.view).offset(kNavigationHeight); + } else { + make.top.mas_equalTo(self.view); + } + }]; + +} + +- (void)initDatas { + [self.recentSessions removeAllObjects]; + _recentSessions = [[NIMSDK sharedSDK].conversationManager.allRecentSessions mutableCopy]; + __block int unreadCount = 0; + NSMutableArray * uids = [[NSMutableArray alloc] init]; + [self.recentSessions enumerateObjectsUsingBlock:^(NIMRecentSession * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + [uids addObject:obj.session.sessionId]; + unreadCount += obj.unreadCount; + }]; + [[NIMSDK sharedSDK].userManager fetchUserInfos:uids completion:nil]; + + NIMLoadRecentSessionsOptions *options = [[NIMLoadRecentSessionsOptions alloc] init]; + options.sortByStickTopInfos = YES; + [NIMSDK.sharedSDK.chatExtendManager loadRecentSessionsWithOptions:options completion:^(NSError * _Nullable error, NSArray * _Nullable recentSessions) { + if (error) { + // handle error + return; + } + + }]; + @kWeakify(self); + // 移除服务端撤回的非正常会话 + [self.recentSessions enumerateObjectsUsingBlock:^(NIMRecentSession * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + @kStrongify(self); + if (![[ClientConfig shareConfig].configInfo.officialMsgUids containsObject:obj.session.sessionId]) { + if (obj.lastMessage.messageType == NIMMessageTypeTip) { + if ([obj.lastMessage.localExt[@"isServer"] boolValue] == YES) { + [self.recentSessions removeObject:obj]; + [uids removeObject:obj.session.sessionId]; + unreadCount -= obj.unreadCount; + NIMDeleteRecentSessionOption *option = [[NIMDeleteRecentSessionOption alloc] init]; + option.isDeleteRoamMessage = YES; + option.shouldMarkAllMessagesReadInSessions = YES; + [[NIMSDK sharedSDK].conversationManager deleteRecentSession:obj option:option completion:^(NSError * _Nullable error) { + + }]; + } + } + } + }]; + [self setTabBarItemBadge:unreadCount]; + [[NIMSDK sharedSDK].userManager fetchUserInfos:uids completion:nil]; + + [[NIMSDK sharedSDK].chatExtendManager loadStickTopSessionInfos:^(NSError * _Nullable error, NSDictionary * _Nullable infos) { + if (error == nil) { + self.stickTopMessages = [infos mutableCopy]; + [self sortSessionList]; + } + }]; + + NIMLoadRecentSessionsOptions *options1 = [[NIMLoadRecentSessionsOptions alloc] init]; + options1.sortByStickTopInfos = YES; + [NIMSDK.sharedSDK.chatExtendManager loadRecentSessionsWithOptions:options1 completion:^(NSError * _Nullable error, NSArray * _Nullable recentSessions) { + if (error) { + // handle error + return; + } + + }]; +} + +#pragma mark - UITableViewDelegate +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.openType == SessionListOpenTypeRoom) { + NIMRecentSession *recentSession = self.recentSessions[indexPath.row]; + SessionViewController * sessionVC =[[SessionViewController alloc] initWithSession:recentSession.session]; + sessionVC.stickTopMessages = self.stickTopMessages; + sessionVC.openType = self.openType; + CATransition *transition = [CATransition animation]; + transition.duration = 0.3f; + transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; + transition.type = kCATransitionPush; + transition.subtype = kCATransitionFromRight; + [self.mainController.view.layer addAnimation:transition forKey:nil]; + [self.mainController.view addSubview:sessionVC.view]; + [self.mainController addChildViewController:sessionVC]; + } else { + NIMRecentSession *recentSession = self.recentSessions[indexPath.row]; + SessionViewController *vc = [[SessionViewController alloc] initWithSession:recentSession.session]; + vc.stickTopMessages = self.stickTopMessages; + vc.openType = self.openType; + [self.navigationController pushViewController:vc animated:YES]; + } +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ + return 70.f; +} + +- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { + return YES; +} + +- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath { + NIMRecentSession * session = [self.recentSessions safeObjectAtIndex1:indexPath.row]; + UITableViewRowAction * deleteAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:YMLocalizedString(@"SessionListViewController0") handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) { + NIMRecentSession * session = [self.recentSessions safeObjectAtIndex1:indexPath.row]; + [[NIMSDK sharedSDK].conversationManager deleteRecentSession:session]; + }]; + deleteAction.title = YMLocalizedString(@"SessionListViewController1"); + deleteAction.backgroundColor = [UIColor redColor]; + NIMStickTopSessionInfo * topInfo = [self.stickTopMessages objectForKey:session.session]; + if (topInfo.session.sessionId.length > 0) { + UITableViewRowAction * topAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:YMLocalizedString(@"SessionListViewController6") handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) { + [[NIMSDK sharedSDK].chatExtendManager removeStickTopSession:topInfo completion:^(NSError * _Nullable error, NIMStickTopSessionInfo * _Nullable removedInfo) { + if (error == nil) { + [self.stickTopMessages removeObjectForKey:session.session]; + [self sortSessionList]; + [self.sessionListView reloadData]; + } + }]; + }]; + topAction.title = YMLocalizedString(@"SessionListViewController7"); + topAction.backgroundColor = [DJDKMIMOMColor colorWithHexString:@"#4C94FF"]; + return @[deleteAction, topAction]; + } else { + UITableViewRowAction * topAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:YMLocalizedString(@"SessionListViewController6") handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) { + NIMAddStickTopSessionParams * params = [[NIMAddStickTopSessionParams alloc] initWithSession:session.session]; + [[NIMSDK sharedSDK].chatExtendManager addStickTopSession:params completion:^(NSError * _Nullable error, NIMStickTopSessionInfo * _Nullable newInfo) { + if (error == nil) { + [self.stickTopMessages safeSetObject:newInfo forKey:session.session]; + [self sortSessionList]; + [self.sessionListView reloadData]; + } + }]; + }]; + topAction.title = YMLocalizedString(@"SessionListViewController6"); + topAction.backgroundColor = [DJDKMIMOMColor colorWithHexString:@"#4C94FF"]; + return @[deleteAction, topAction]; + } +} + +#pragma mark - UITableViewDataSource +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ + return self.recentSessions.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ + static NSString * cellId = @"cellId"; + SessionListCell * cell = [tableView dequeueReusableCellWithIdentifier:cellId]; + if (!cell) { + cell = [[SessionListCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId]; + } + NIMRecentSession *recent = self.recentSessions[indexPath.row]; + cell.stickTopMessages = self.stickTopMessages; + [cell renderWithSession:recent]; + return cell; +} +#pragma mark - NIMConversationManagerDelegate +- (void)didLoadAllRecentSessionCompletion { + [self initDatas]; + [self.sessionListView reloadData]; +} + +- (void)didAddRecentSession:(NIMRecentSession *)recentSession + totalUnreadCount:(NSInteger)totalUnreadCount { + [self.recentSessions addObject:recentSession]; + [self.recentSessions sortUsingComparator:^NSComparisonResult(id obj1, id obj2) { + NIMRecentSession *item1 = obj1; + NIMRecentSession *item2 = obj2; + if (item1.lastMessage.timestamp < item2.lastMessage.timestamp) { + return NSOrderedDescending; + } + if (item1.lastMessage.timestamp > item2.lastMessage.timestamp) { + return NSOrderedAscending; + } + return NSOrderedSame; + }]; + [self.sessionListView reloadData]; + [self setTabBarItemBadge:totalUnreadCount]; +} + +- (void)didUpdateRecentSession:(NIMRecentSession *)recentSession + totalUnreadCount:(NSInteger)totalUnreadCount { + for (NIMRecentSession *recent in self.recentSessions) { + if ([recentSession.session.sessionId isEqualToString:recent.session.sessionId]) { + [self.recentSessions removeObject:recent]; + break; + } + } + NSInteger insert = [self findInsertPlace:recentSession]; + [self.recentSessions insertObject:recentSession atIndex:insert]; + [self.sessionListView reloadData]; + [self setTabBarItemBadge:totalUnreadCount]; +} + +- (void)didRemoveRecentSession:(NIMRecentSession *)recentSession + totalUnreadCount:(NSInteger)totalUnreadCount { + // 清理本地数据 + NSUInteger index = [self.recentSessions indexOfObject:recentSession]; + [self.recentSessions removeObjectAtIndex:index]; + + // 如果删除本地会话后就不允许漫游当前会话,则需要进行一次删除服务器会话的操作 + BOOL deleteRemote = NO; + if (deleteRemote) { + [[NIMSDK sharedSDK].conversationManager deleteRemoteSessions:@[recentSession.session] + completion:nil]; + } + [self.sessionListView reloadData]; + [self setTabBarItemBadge:totalUnreadCount]; +} + +#pragma mark - NIMLoginManagerDelegate +- (void)onLogin:(NIMLoginStep)step { + if (step == NIMLoginStepSyncOK) { + [self initDatas]; + } +} + +#pragma mark - JXCategoryListContentViewDelegate +- (UIView *)listView { + return self.view; +} +- (UIScrollView *)listScrollView { + return self.sessionListView; +} +- (void)listViewDidScrollCallback:(void (^)(UIScrollView *))callback { + self.scrollCallback = callback; +} + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + if (self.scrollCallback){ + self.scrollCallback(scrollView); + } + +} + +#pragma mark - Private +- (NSInteger)findInsertPlace:(NIMRecentSession *)recentSession{ + __block NSUInteger matchIdx = 0; + __block BOOL find = NO; + [self.recentSessions enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { + NIMRecentSession *item = obj; + if (item.lastMessage.timestamp <= recentSession.lastMessage.timestamp) { + *stop = YES; + find = YES; + matchIdx = idx; + } + }]; + if (find) { + return matchIdx; + } else { + return self.recentSessions.count; + } +} + +- (void)sort{ + [self.recentSessions sortUsingComparator:^NSComparisonResult(id obj1, id obj2) { + NIMRecentSession *item1 = obj1; + NIMRecentSession *item2 = obj2; + if (item1.lastMessage.timestamp < item2.lastMessage.timestamp) { + return NSOrderedDescending; + } + if (item1.lastMessage.timestamp > item2.lastMessage.timestamp) { + return NSOrderedAscending; + } + return NSOrderedSame; + }]; +} + +- (void)setTabBarItemBadge:(NSInteger)value { + [[NSNotificationCenter defaultCenter]postNotificationName:@"kGetTabBarItemBadge" object:nil userInfo:@{@"BadgeValue":@(value)}]; + +} + +-(void)sortSessionList { + NSMutableArray * recentList = [self.recentSessions mutableCopy]; + [self.recentSessions removeAllObjects]; + NSMutableArray * topList = [NSMutableArray array]; + NSMutableArray * normalList = [NSMutableArray array]; + for (int i = 0 ; i < recentList.count; i++) { + NIMRecentSession * recentSession = [recentList safeObjectAtIndex1:i]; + NIMStickTopSessionInfo * topInfo = [self.stickTopMessages objectForKey:recentSession.session]; + if (topInfo && topInfo.session.sessionId > 0) { + [topList addObject:recentSession]; + } else { + [normalList addObject:recentSession]; + } + } + + if (topList.count > 0) { + [self sortArray:topList]; + } + + if (normalList.count > 0) { + [self sortArray:normalList]; + } + + [self.recentSessions addObjectsFromArray:topList]; + [self.recentSessions addObjectsFromArray:normalList]; + [self.sessionListView reloadData]; +} + +- (void)sortArray:(NSMutableArray *)arry { + [arry sortUsingComparator:^NSComparisonResult(id obj1, id obj2) { + NIMRecentSession *item1 = obj1; + NIMRecentSession *item2 = obj2; + if (item1.lastMessage.timestamp < item2.lastMessage.timestamp) { + return NSOrderedDescending; + } + if (item1.lastMessage.timestamp > item2.lastMessage.timestamp) { + return NSOrderedAscending; + } + return NSOrderedSame; + }]; +} + + +#pragma mark - action +- (void)allReadButtonClick { + NSInteger count = [NIMSDK sharedSDK].conversationManager.allUnreadCount; + if (count<1) { + [self showErrorToast:YMLocalizedString(@"SessionListViewController2")]; + return; + } + TTAlertConfig * config = [[TTAlertConfig alloc] init]; + config.confirmButtonConfig.title = YMLocalizedString(@"SessionListViewController3"); + config.message = @"清除当前未读消息提醒?"; + [TTPopup alertWithConfig:config confirmHandler:^{ + [[NIMSDK sharedSDK].conversationManager markAllMessagesRead]; + [self setTabBarItemBadge:0]; + [self.sessionListView reloadData]; + } cancelHandler:^{ + + }]; +} + + +- (UIView *)customNavigationBar { + if (!_customNavigationBar) { + CGRect frame = CGRectMake(0, kStatusBarHeight, KScreenWidth, 44); + _customNavigationBar = [[UIView alloc]initWithFrame:frame]; + } + return _customNavigationBar; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] initWithFrame:CGRectZero]; + _titleLabel.backgroundColor = [UIColor clearColor]; + _titleLabel.font = [UIFont systemFontOfSize:18.f weight:UIFontWeightMedium]; + _titleLabel.textColor = DJDKMIMOMColor.mainTextColor; + _titleLabel.text = YMLocalizedString(@"SessionListViewController5"); + } + return _titleLabel; +} + +- (UITableView *)sessionListView { + if (!_sessionListView) { + _sessionListView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _sessionListView.separatorStyle = UITableViewCellSeparatorStyleNone; + _sessionListView.backgroundColor = UIColor.clearColor; + _sessionListView.delegate = self; + _sessionListView.dataSource = self; + _sessionListView.showsVerticalScrollIndicator = NO; + } + return _sessionListView; +} + +- (NSMutableArray *)recentSessions { + if (!_recentSessions) { + _recentSessions = [NSMutableArray array]; + } + return _recentSessions; +} + +- (NSMutableDictionary *)stickTopMessages { + if (!_stickTopMessages) { + _stickTopMessages = [NSMutableDictionary dictionary]; + } + return _stickTopMessages; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/SessionListHeadView/Model/XPSessionListFansPartyModel.h b/YuMi/Modules/YMMessage/View/SessionListHeadView/Model/XPSessionListFansPartyModel.h new file mode 100644 index 00000000..2f31961d --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SessionListHeadView/Model/XPSessionListFansPartyModel.h @@ -0,0 +1,23 @@ +// +// YMSessionListFansPartyModel.h +// YUMI +// +// Created by YUMI on 2022/11/24. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPSessionListFansPartyModel : NSObject + +@property (nonatomic, copy) NSString *avatar; +@property (nonatomic, copy) NSString *uid; +@property (nonatomic, copy) NSString *erbanNo; +@property (nonatomic, copy) NSString *nick; +@property (nonatomic, copy) NSString *roomUid; +@property (nonatomic, assign) NSInteger gender; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SessionListHeadView/Model/XPSessionListFansPartyModel.m b/YuMi/Modules/YMMessage/View/SessionListHeadView/Model/XPSessionListFansPartyModel.m new file mode 100644 index 00000000..01031a40 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SessionListHeadView/Model/XPSessionListFansPartyModel.m @@ -0,0 +1,12 @@ +// +// YMSessionListFansPartyModel.m +// YUMI +// +// Created by YUMI on 2022/11/24. +// + +#import "XPSessionListFansPartyModel.h" + +@implementation XPSessionListFansPartyModel + +@end diff --git a/YuMi/Modules/YMMessage/View/SessionListHeadView/Model/YUMIInterlocutionStatementFanaticsParatiesMatrix.h b/YuMi/Modules/YMMessage/View/SessionListHeadView/Model/YUMIInterlocutionStatementFanaticsParatiesMatrix.h deleted file mode 100644 index 01602d1d..00000000 --- a/YuMi/Modules/YMMessage/View/SessionListHeadView/Model/YUMIInterlocutionStatementFanaticsParatiesMatrix.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMSessionListFansPartyModel.h -// YUMI -// -// Created by YUMI on 2022/11/24. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIInterlocutionStatementFanaticsParatiesMatrix : NSObject - -@property (nonatomic, copy) NSString *avatar; -@property (nonatomic, copy) NSString *uid; -@property (nonatomic, copy) NSString *erbanNo; -@property (nonatomic, copy) NSString *nick; -@property (nonatomic, copy) NSString *roomUid; -@property (nonatomic, assign) NSInteger gender; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SessionListHeadView/Model/YUMIInterlocutionStatementFanaticsParatiesMatrix.m b/YuMi/Modules/YMMessage/View/SessionListHeadView/Model/YUMIInterlocutionStatementFanaticsParatiesMatrix.m deleted file mode 100644 index d882e303..00000000 --- a/YuMi/Modules/YMMessage/View/SessionListHeadView/Model/YUMIInterlocutionStatementFanaticsParatiesMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMSessionListFansPartyModel.m -// YUMI -// -// Created by YUMI on 2022/11/24. -// - -#import "YUMIInterlocutionStatementFanaticsParatiesMatrix.h" - -@implementation YUMIInterlocutionStatementFanaticsParatiesMatrix - -@end diff --git a/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionHelloEnterView.h b/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionHelloEnterView.h new file mode 100644 index 00000000..b7c175b0 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionHelloEnterView.h @@ -0,0 +1,17 @@ +// +// YMSessionHelloEnterView.h +// YUMI +// +// Created by YUMI on 2023/1/31. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPSessionHelloEnterView : UIView +///有多少人喜欢 +@property (nonatomic,assign) NSInteger number; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionHelloEnterView.m b/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionHelloEnterView.m new file mode 100644 index 00000000..3aed247a --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionHelloEnterView.m @@ -0,0 +1,118 @@ +// +// YMSessionHelloEnterView.m +// YUMI +// +// Created by YUMI on 2023/1/31. +// + +#import "XPSessionHelloEnterView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" + +@interface XPSessionHelloEnterView () +///图标 +@property (nonatomic,strong) UIImageView *logoImageView; +///打招呼 +@property (nonatomic,strong) UILabel *titleLabel; +///副标题 +@property (nonatomic,strong) UILabel *subTitleLabel; +///分割线 +@property (nonatomic,strong) UIView *lineView; +@end + +@implementation XPSessionHelloEnterView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.logoImageView]; + [self addSubview:self.titleLabel]; + [self addSubview:self.subTitleLabel]; + [self addSubview:self.lineView]; +} + +- (void)initSubViewConstraints { + [self.logoImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(35, 30)); + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.logoImageView); + make.top.mas_equalTo(self.logoImageView.mas_bottom).offset(2); + }]; + + [self.subTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(0); + make.left.right.mas_equalTo(self); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(1); + make.height.mas_equalTo(28); + make.top.mas_equalTo(self.logoImageView).offset(20); + make.right.mas_equalTo(self); + }]; +} + +- (void)createPersonNumberAttribute:(NSInteger)number { + NSString * numbnerStr = [NSString stringWithFormat:@"%ld", number]; + NSString * title = [NSString stringWithFormat:YMLocalizedString(@"XPSessionHelloEnterView0"), numbnerStr]; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:8], NSForegroundColorAttributeName:[DJDKMIMOMColor colorWithHexString:@"#8A8CAB"]}]; + [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor colorWithHexString:@"#FFA027"] range:[title rangeOfString:numbnerStr]]; + self.subTitleLabel.attributedText = attribute; + self.subTitleLabel.textAlignment = NSTextAlignmentCenter; +} +#pragma mark - Getters And Setters +- (void)setNumber:(NSInteger)number { + _number = number; + [self createPersonNumberAttribute:number]; +} + +- (UIImageView *)logoImageView { + if (!_logoImageView) { + _logoImageView = [[UIImageView alloc] init]; + _logoImageView.userInteractionEnabled = YES; + _logoImageView.image = [UIImage imageNamed:@"session_list_hello_enter"]; + } + return _logoImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _titleLabel.textColor = [DJDKMIMOMColor colorWithHexString:@"#171A58"]; + _titleLabel.text = YMLocalizedString(@"XPSessionHelloEnterView1"); + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} + +- (UILabel *)subTitleLabel { + if (!_subTitleLabel) { + _subTitleLabel = [[UILabel alloc] init]; + } + return _subTitleLabel; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [DJDKMIMOMColor colorWithHexString:@"#D8D8D8"]; + } + return _lineView; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadFriendCell.h b/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadFriendCell.h new file mode 100644 index 00000000..ac318b4d --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadFriendCell.h @@ -0,0 +1,19 @@ +// +// YMSessionListHeadFriendCell.h +// YUMI +// +// Created by YUMI on 2022/11/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class XPSessionListFansPartyModel; +@interface XPSessionListHeadFriendCell : UICollectionViewCell + +- (void)configData:(XPSessionListFansPartyModel *)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadFriendCell.m b/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadFriendCell.m new file mode 100644 index 00000000..a59b51fd --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadFriendCell.m @@ -0,0 +1,155 @@ +// +// YMSessionListHeadFriendCell.m +// YUMI +// +// Created by YUMI on 2022/11/17. +// + +#import "XPSessionListHeadFriendCell.h" +#import +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "UIImage+Utils.h" +#import "XPSessionListFansPartyModel.h" +#import "XPNoteView.h" + +@interface XPSessionListHeadFriendCell() + +@property (nonatomic, strong) UILabel *nameLabel; +@property (nonatomic, strong) NetImageView *imageView; +@property (nonatomic, strong) UIImageView *dotView; +///音符背景 +@property (nonatomic, strong) UIImageView *noteBgImageView; +///直播中 +@property (nonatomic, strong) UILabel *liveLabel; +///音符动效 +@property (nonatomic,strong) XPNoteView *noteImageView; +///动画的数组 +@property (nonatomic,strong) NSArray *animationArray; +@end + +@implementation XPSessionListHeadFriendCell + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initView]; + [self initContraints]; + } + return self; +} + +- (void)initView { + [self.contentView addSubview:self.dotView]; + [self.contentView addSubview:self.imageView]; + [self.contentView addSubview:self.nameLabel]; + + + [self.imageView addSubview:self.noteBgImageView]; + [self.imageView addSubview:self.noteImageView]; + [self.imageView addSubview:self.liveLabel]; +} + +- (void)initContraints { + [self.dotView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(0); + make.centerX.mas_equalTo(self); + make.width.height.mas_equalTo(60); + }]; + [self.imageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.centerY.mas_equalTo(self.dotView); + make.width.height.mas_equalTo(56); + }]; + [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self.dotView.mas_bottom).mas_offset(2); + make.height.mas_equalTo(17); + make.left.mas_equalTo(0); + }]; + + [self.noteBgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.imageView); + make.height.mas_equalTo(14); + }]; + + [self.noteImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.noteBgImageView).mas_offset(15); + make.centerY.mas_equalTo(self.noteBgImageView).mas_offset(-1); + make.height.mas_equalTo(10); + make.width.mas_equalTo(10); + }]; + [self.liveLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.noteImageView.mas_right).mas_offset(2); + make.centerY.mas_equalTo(self.noteImageView); + }]; +} + +- (void)configData:(XPSessionListFansPartyModel *)data { + self.imageView.imageUrl = data.avatar; + NSString *name = data.nick.length > 4 ? [data.nick substringToIndex:4] : data.nick; + self.nameLabel.text = name; +} + +- (UILabel *)nameLabel { + if (!_nameLabel) { + _nameLabel = [[UILabel alloc] initWithFrame:CGRectZero]; + _nameLabel.backgroundColor = [UIColor clearColor]; + _nameLabel.font = [UIFont systemFontOfSize:12]; + _nameLabel.textColor = DJDKMIMOMColor.secondTextColor; + _nameLabel.textAlignment = NSTextAlignmentCenter; + } + return _nameLabel; +} + +- (NetImageView *)imageView { + if (!_imageView) { + NetImageConfig *config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _imageView = [[NetImageView alloc] initWithConfig:config]; + _imageView.contentMode = UIViewContentModeScaleAspectFill; + _imageView.layer.cornerRadius = 54/2; + _imageView.layer.masksToBounds = YES; + _imageView.layer.borderWidth = 1; + _imageView.layer.borderColor = [UIColor whiteColor].CGColor; + } + return _imageView; +} + +- (UIImageView *)dotView { + if (!_dotView) { + _dotView = [[UIImageView alloc] init]; + _dotView.layer.cornerRadius = 60 / 2; + _dotView.layer.masksToBounds = YES; + _dotView.image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0x5BC8F8), UIColorFromRGB(0x66D9D9)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(60, 60)]; + } + return _dotView; +} + +- (UIImageView *)noteBgImageView { + if (!_noteBgImageView) { + _noteBgImageView = [[UIImageView alloc] init]; + _noteBgImageView.image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFFA936), UIColorFromRGB(0xFFCB47)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(52, 14)]; + } + return _noteBgImageView; +} + +- (UILabel *)liveLabel { + if (!_liveLabel) { + _liveLabel = [[UILabel alloc] init]; + _liveLabel.font = [UIFont systemFontOfSize:8]; + _liveLabel.textColor = [UIColor whiteColor]; + _liveLabel.text = YMLocalizedString(@"XPSessionListHeadFriendCell0"); + } + return _liveLabel; +} + +- (XPNoteView *)noteImageView { + if (!_noteImageView) { + _noteImageView = [[XPNoteView alloc] init]; + _noteImageView.pillarColor = [UIColor whiteColor]; + _noteImageView.pillarWidth = 1.5; + [_noteImageView startAnimation]; + } + return _noteImageView; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadItem.h b/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadItem.h new file mode 100644 index 00000000..c93cd806 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadItem.h @@ -0,0 +1,28 @@ +// +// YMSessionListHeadItem.h +// YUMI +// +// Created by YUMI on 2022/11/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSUInteger, XPSessionListHeadItemType) { + XPSessionListHeadItemType_Office,//官方公告 + XPSessionListHeadItemType_Activity,//活动通知 + XPSessionListHeadItemType_Subscribe,//订阅提醒 + XPSessionListHeadItemType_MemgXin,//发现萌新 +}; + +@interface XPSessionListHeadItem : NSObject + +@property (nonatomic, copy) NSString *title; +@property (nonatomic, copy) NSString *imageName; +@property (nonatomic, assign) BOOL showRedDot; +@property (nonatomic, assign) XPSessionListHeadItemType type; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadItem.m b/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadItem.m new file mode 100644 index 00000000..24b2576e --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadItem.m @@ -0,0 +1,12 @@ +// +// YMSessionListHeadItem.m +// YUMI +// +// Created by YUMI on 2022/11/17. +// + +#import "XPSessionListHeadItem.h" + +@implementation XPSessionListHeadItem + +@end diff --git a/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadItemView.h b/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadItemView.h new file mode 100644 index 00000000..18f5f3be --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadItemView.h @@ -0,0 +1,21 @@ +// +// YMSessionListHeadItemView.h +// YUMI +// +// Created by YUMI on 2022/11/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPSessionListHeadItemView : UIView + +@property (nonatomic, copy) NSString *imageName; +@property (nonatomic, copy) NSString *title; +@property (nonatomic, assign) BOOL showDot; +@property (nonatomic, assign) NSInteger badgeValue; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadItemView.m b/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadItemView.m new file mode 100644 index 00000000..7e5691c3 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadItemView.m @@ -0,0 +1,125 @@ +// +// YMSessionListHeadItemView.m +// YUMI +// +// Created by YUMI on 2022/11/17. +// + +#import "XPSessionListHeadItemView.h" +#import +#import "DJDKMIMOMColor.h" +#import "NIMBadgeView.h" +#import "UIView+NIM.h" +#import "YUMIMacroUitls.h" + +@interface XPSessionListHeadItemView() + +@property (nonatomic, strong) UILabel *nameLabel; +@property (nonatomic, strong) UIImageView *imageView; +@property (nonatomic, strong) UIView *dotView; +///未读 +@property (nonatomic,strong) NIMBadgeView *badgeView; + +@end + +@implementation XPSessionListHeadItemView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initView]; + [self initContraints]; + } + return self; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + self.badgeView.nim_right = self.imageView.nim_right+2; + self.badgeView.nim_top = self.imageView.nim_top - 6; +} + +- (void)initView { + [self addSubview:self.imageView]; + [self addSubview:self.nameLabel]; + [self addSubview:self.dotView]; + [self addSubview:self.badgeView]; +} + +- (void)initContraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth / 4); + }]; + + [self.imageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.centerX.mas_equalTo(0); + make.width.height.mas_equalTo(50); + }]; + [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.bottom.mas_equalTo(0); + make.top.mas_equalTo(self.imageView.mas_bottom).mas_offset(8); + make.bottom.mas_equalTo(0); + make.height.mas_equalTo(17); + }]; + [self.dotView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.right.mas_equalTo(self.imageView); + make.width.height.mas_equalTo(12); + }]; +} + +- (void)setTitle:(NSString *)title { + self.nameLabel.text = title; +} + +- (void)setImageName:(NSString *)imageName { + self.imageView.image = [UIImage imageNamed:imageName]; +} +- (void)setShowDot:(BOOL)showDot { + self.dotView.hidden = !showDot; +} + +- (void)setBadgeValue:(NSInteger)badgeValue { + if (badgeValue) { + self.badgeView.hidden = NO; + self.badgeView.badgeValue = @(badgeValue).stringValue; + } else { + self.badgeView.hidden = YES; + } +} + +- (UILabel *)nameLabel { + if (!_nameLabel) { + _nameLabel = [[UILabel alloc] initWithFrame:CGRectZero]; + _nameLabel.backgroundColor = [UIColor clearColor]; + _nameLabel.font = [UIFont systemFontOfSize:14]; + _nameLabel.textColor = DJDKMIMOMColor.mainTextColor; + } + return _nameLabel; +} + +- (UIImageView *)imageView { + if (!_imageView) { + _imageView = [[UIImageView alloc] init]; + } + return _imageView; +} + +- (UIView *)dotView { + if (!_dotView) { + _dotView = [[UIView alloc] init]; + _dotView.layer.cornerRadius = 6; + _dotView.layer.masksToBounds = YES; + _dotView.backgroundColor = UIColorFromRGB(0xFB486A); + _dotView.hidden = YES; + } + return _dotView; +} + +- (NIMBadgeView *)badgeView { + if (!_badgeView) { + _badgeView = [NIMBadgeView viewWithBadgeTip:@""]; + _badgeView.hidden = YES; + } + return _badgeView; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadView.h b/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadView.h new file mode 100644 index 00000000..6b868726 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadView.h @@ -0,0 +1,43 @@ +// +// YMSessionListHeadView.h +// YUMI +// +// Created by YUMI on 2022/11/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class SessionSayHelloCountModel; +@protocol XPSessionListHeadViewDelegate + +///点击官方公告 +- (void)XPSessionListHeadViewDidClickOffice; +///点击活动通知 +- (void)XPSessionListHeadViewDidClickActivity; +///点击订阅提醒 +- (void)XPSessionListHeadViewDidClickSubscribe; +///点击发现萌新 +- (void)XPSessionListHeadViewDidClickMengxin; +///点击打招呼 +- (void)XPSessionListHeadViewDidClickSayHello; +@end + +@interface XPSessionListHeadView : UIView + +- (void)updateToolViewWithUserLevel:(NSInteger)level; + +@property (nonatomic, strong) NSArray *friendsArray; +///是否隐藏 打招呼入口和关注的开播的人 +@property (nonatomic,assign) BOOL hiddentTool; +///打招呼信息 +@property (nonatomic,strong) SessionSayHelloCountModel *sayHelloInfo; + +@property (nonatomic, weak) id delegate; + +///更新角标 +- (void)updateBadgeWithSessionId:(NSString *)sessionId unreadCount:(NSInteger)unreadCount; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadView.m b/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadView.m new file mode 100644 index 00000000..89bed2fe --- /dev/null +++ b/YuMi/Modules/YMMessage/View/SessionListHeadView/XPSessionListHeadView.m @@ -0,0 +1,325 @@ +// +// YMSessionListHeadView.m +// YUMI +// +// Created by YUMI on 2022/11/17. +// + +#import "XPSessionListHeadView.h" +#import +#import "UIImage+Utils.h" +#import "DJDKMIMOMColor.h" +#import "ClientConfig.h" +#import "UserInfoModel.h" +#import "XPSessionListHeadItem.h" +#import "XPSessionListHeadItemView.h" +#import "XPSessionListHeadFriendCell.h" +#import "NSArray+Safe.h" +#import "XPSessionListFansPartyModel.h" +#import "XCCurrentVCStackManager.h" +#import "XPRoomViewController.h" +#import "XPSessionHelloEnterView.h" +#import "SessionSayHelloCountModel.h" +#import "YUMIMacroUitls.h" + +NSString * const kMengXinShowReadDotKey = @"kMengXinShowReadDotKey"; + +@interface XPSessionListHeadView() + +@property (nonatomic, strong) UIStackView *mainStackView; +///工具条 +@property (nonatomic, strong) UIStackView *toolStackView; +///打招呼和 在线直播 +@property (nonatomic,strong) UIStackView *bottomStackView; +///好友列表 +@property (nonatomic, strong) UICollectionView *collectionView; +///打招呼入口 +@property (nonatomic,strong) XPSessionHelloEnterView *helloView; +///工具item集合 +@property (nonatomic, strong) NSMutableArray *funtionArray; + +@end + +@implementation XPSessionListHeadView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initItemData]; + [self initView]; + [self initContraints]; + } + return self; +} + +- (void)initItemData { + XPSessionListHeadItem *officeItem = [[XPSessionListHeadItem alloc] init]; + officeItem.title = YMLocalizedString(@"XPSessionListHeadView0"); + officeItem.imageName = @"session_list_head_office"; + officeItem.type = XPSessionListHeadItemType_Office; + + XPSessionListHeadItem *activityItem = [[XPSessionListHeadItem alloc] init]; + activityItem.title = YMLocalizedString(@"XPSessionListHeadView1"); + activityItem.imageName = @"session_list_head_activity"; + activityItem.type = XPSessionListHeadItemType_Activity; + + XPSessionListHeadItem *subscribeItem = [[XPSessionListHeadItem alloc] init]; + subscribeItem.title = YMLocalizedString(@"XPSessionListHeadView2"); + subscribeItem.imageName = @"session_list_head_subscribe"; + subscribeItem.type = XPSessionListHeadItemType_Subscribe; + + [self.funtionArray addObject:officeItem]; + [self.funtionArray addObject:activityItem]; + [self.funtionArray addObject:subscribeItem]; +} + +- (void)initView { + [self addSubview:self.mainStackView]; + [self.mainStackView addArrangedSubview:self.toolStackView]; + [self.mainStackView addArrangedSubview:self.bottomStackView]; + + [self.bottomStackView addArrangedSubview:self.helloView]; + [self.bottomStackView addArrangedSubview:self.collectionView]; + for (XPSessionListHeadItem *item in self.funtionArray) { + XPSessionListHeadItemView *itemView = [[XPSessionListHeadItemView alloc] init]; + itemView.imageName = item.imageName; + itemView.title = item.title; + itemView.showDot = item.showRedDot; + itemView.tag = item.type; + [self.toolStackView addArrangedSubview:itemView]; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapItem:)]; + [itemView addGestureRecognizer:tap]; + } + +} + +- (void)initContraints { + [self.mainStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.equalTo(self); + }]; + + [self.toolStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth); + make.height.mas_equalTo(85); + }]; + + [self.helloView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(93, 90)); + }]; + + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(90); + make.width.mas_equalTo(0); + }]; + + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.mainStackView); + }]; +} + +#pragma mark - UICollectionViewDelegate +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.friendsArray.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPSessionListHeadFriendCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPSessionListHeadFriendCell class]) forIndexPath:indexPath]; + XPSessionListFansPartyModel *model = [self.friendsArray safeObjectAtIndex1:indexPath.row]; + [cell configData:model]; + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + XPSessionListFansPartyModel *model = [self.friendsArray safeObjectAtIndex1:indexPath.row]; + if (model.roomUid.length > 0) { + [XPRoomViewController openRoom:model.roomUid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; + } +} + +- (void)updateToolViewWithUserLevel:(NSInteger)level { + if( [ClientConfig shareConfig].configInfo.findNewbieCharmLevel <= level) { + XPSessionListHeadItem *mengxinItem = [[XPSessionListHeadItem alloc] init]; + mengxinItem.title = YMLocalizedString(@"XPSessionListHeadView3"); + mengxinItem.imageName = @"session_list_head_mengxin"; + mengxinItem.type = XPSessionListHeadItemType_MemgXin; + [self.funtionArray addObject:mengxinItem]; + + XPSessionListHeadItemView *itemView = [[XPSessionListHeadItemView alloc] init]; + itemView.imageName = mengxinItem.imageName; + itemView.title = mengxinItem.title; + BOOL hidden = [[NSUserDefaults standardUserDefaults] boolForKey:kMengXinShowReadDotKey]; + itemView.showDot = !hidden; + itemView.tag = mengxinItem.type; + [self.toolStackView addArrangedSubview:itemView]; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapItem:)]; + [itemView addGestureRecognizer:tap]; + } +} + +- (void)updateBadgeWithSessionId:(NSString *)sessionId unreadCount:(NSInteger)unreadCount { + for (int i = 0; i<[ClientConfig shareConfig].configInfo.officialMsgUids.count; i++) { + NSString *str = [[ClientConfig shareConfig].configInfo.officialMsgUids safeObjectAtIndex1:i]; + if ([str isEqualToString:sessionId]) { + XPSessionListHeadItemView *itemView = [self.toolStackView.subviews safeObjectAtIndex1:i]; + if (i == 2) { + itemView.showDot = unreadCount; + } else { + itemView.badgeValue = unreadCount; + } + } + } +} + +- (void)tapItem:(UITapGestureRecognizer *)ges { + XPSessionListHeadItemView *view = (XPSessionListHeadItemView *)ges.view; + switch (view.tag) { + case XPSessionListHeadItemType_Office: + { + if (self.delegate && [self.delegate respondsToSelector:@selector(XPSessionListHeadViewDidClickOffice)]) { + [self.delegate XPSessionListHeadViewDidClickOffice]; + } + } + break; + case XPSessionListHeadItemType_Activity: + { + if (self.delegate && [self.delegate respondsToSelector:@selector(XPSessionListHeadViewDidClickActivity)]) { + [self.delegate XPSessionListHeadViewDidClickActivity]; + } + } + break; + case XPSessionListHeadItemType_Subscribe: + { + if (self.delegate && [self.delegate respondsToSelector:@selector(XPSessionListHeadViewDidClickSubscribe)]) { + [self.delegate XPSessionListHeadViewDidClickSubscribe]; + } + } + break; + case XPSessionListHeadItemType_MemgXin: + { + [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kMengXinShowReadDotKey]; + [[NSUserDefaults standardUserDefaults] synchronize]; + XPSessionListHeadItemView *itemView = [self.toolStackView.subviews lastObject]; + itemView.showDot = NO; + if (self.delegate && [self.delegate respondsToSelector:@selector(XPSessionListHeadViewDidClickMengxin)]) { + [self.delegate XPSessionListHeadViewDidClickMengxin]; + } + } + break; + default: + break; + } +} + +- (void)sayHelloRecognizer { + if (self.delegate && [self.delegate respondsToSelector:@selector(XPSessionListHeadViewDidClickSayHello)]) { + [self.delegate XPSessionListHeadViewDidClickSayHello]; + } +} + +- (void)setFriendsArray:(NSArray *)friendsArray { + _friendsArray = friendsArray; + [self.collectionView reloadData]; + if (_friendsArray.count > 0) { + self.collectionView.hidden = NO; + } else { + self.collectionView.hidden = YES; + } +} + +- (void)setSayHelloInfo:(SessionSayHelloCountModel *)sayHelloInfo { + _sayHelloInfo = sayHelloInfo; + if (_sayHelloInfo) { + self.helloView.hidden = !_sayHelloInfo.visible; + self.helloView.number = _sayHelloInfo.helloCount; + } else { + self.helloView.hidden = YES; + } + + CGFloat width = (KScreenWidth); + if (!self.helloView.hidden) { + width = KScreenWidth - 93; + } + + [self.collectionView mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(width); + }]; +} + +- (void)setHiddentTool:(BOOL)hiddentTool { + _hiddentTool = hiddentTool; + self.bottomStackView.hidden = _hiddentTool; +} + +- (UIStackView *)mainStackView { + if (!_mainStackView) { + _mainStackView = [[UIStackView alloc] init]; + _mainStackView.axis = UILayoutConstraintAxisVertical; + _mainStackView.distribution = UIStackViewDistributionFill; + _mainStackView.alignment = UIStackViewAlignmentLeading; + _mainStackView.spacing = 32; + } + return _mainStackView; +} + +- (UIStackView *)toolStackView { + if (!_toolStackView) { + _toolStackView = [[UIStackView alloc] init]; + _toolStackView.axis = UILayoutConstraintAxisHorizontal; + _toolStackView.distribution = UIStackViewDistributionFillEqually; + _toolStackView.alignment = UIStackViewAlignmentCenter; + _toolStackView.backgroundColor = [UIColor clearColor]; + } + return _toolStackView; +} + +- (NSMutableArray *)funtionArray { + if (!_funtionArray) { + _funtionArray = [NSMutableArray array]; + } + return _funtionArray; +} + +- (UIStackView *)bottomStackView { + if (!_bottomStackView) { + _bottomStackView = [[UIStackView alloc] init]; + _bottomStackView.axis = UILayoutConstraintAxisHorizontal; + _bottomStackView.distribution = UIStackViewDistributionFill; + _bottomStackView.alignment = UIStackViewAlignmentCenter; + _bottomStackView.spacing = 0; + _bottomStackView.hidden = YES; + } + return _bottomStackView; +} + +- (XPSessionHelloEnterView *)helloView { + if (!_helloView) { + _helloView = [[XPSessionHelloEnterView alloc] init]; + _helloView.number = 20; + _helloView.hidden = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(sayHelloRecognizer)]; + [_helloView addGestureRecognizer:tap]; + } + return _helloView; +} + +- (UICollectionView *)collectionView { + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + layout.minimumLineSpacing = 18; +// layout.minimumInteritemSpacing = 18; + layout.itemSize = CGSizeMake(60, 90); + layout.sectionInset = UIEdgeInsetsMake(0, 16, 0, 16); + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + [_collectionView registerClass:[XPSessionListHeadFriendCell class] forCellWithReuseIdentifier:NSStringFromClass([XPSessionListHeadFriendCell class])]; + _collectionView.delegate = self; + _collectionView.dataSource = self; + _collectionView.backgroundColor = [UIColor clearColor]; + _collectionView.layer.cornerRadius = 8; + _collectionView.layer.masksToBounds = YES; + _collectionView.hidden = YES; + _collectionView.showsHorizontalScrollIndicator = NO; + } + return _collectionView; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionHalloImportRegard.h b/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionHalloImportRegard.h deleted file mode 100644 index 63b30e8b..00000000 --- a/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionHalloImportRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMSessionHelloEnterView.h -// YUMI -// -// Created by YUMI on 2023/1/31. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIInterlocutionHalloImportRegard : UIView -@property (nonatomic,assign) NSInteger number; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionHalloImportRegard.m b/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionHalloImportRegard.m deleted file mode 100644 index b2156276..00000000 --- a/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionHalloImportRegard.m +++ /dev/null @@ -1,112 +0,0 @@ -// -// YMSessionHelloEnterView.m -// YUMI -// -// Created by YUMI on 2023/1/31. -// - -#import "YUMIInterlocutionHalloImportRegard.h" -#import -#import "DJDKMIMOMColor.h" - -@interface YUMIInterlocutionHalloImportRegard () -@property (nonatomic,strong) UIImageView *brandIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UILabel *subChampionSequencignation; -@property (nonatomic,strong) UIView *burlywoodRegard; -@end - -@implementation YUMIInterlocutionHalloImportRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.brandIndicateRegard]; - [self addSubview:self.titleLabel]; - [self addSubview:self.subChampionSequencignation]; - [self addSubview:self.burlywoodRegard]; -} - -- (void)initChildLyRestrictions { - [self.brandIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(35, 30)); - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.brandIndicateRegard); - make.top.mas_equalTo(self.brandIndicateRegard.mas_bottom).offset(2); - }]; - - [self.subChampionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(0); - make.left.right.mas_equalTo(self); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(1); - make.height.mas_equalTo(28); - make.top.mas_equalTo(self.brandIndicateRegard).offset(20); - make.right.mas_equalTo(self); - }]; -} - -- (void)produceFetowardsureDigitalIdiosyncracy:(NSInteger)number { - NSString * numbnerStr = [NSString stringWithFormat:@"%ld", number]; - NSString * title = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Session_Hello_Enter_View_0"), numbnerStr]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:8], NSForegroundColorAttributeName:[DJDKMIMOMColor colorAboutHexBWSttr:@"#8A8CAB"]}]; - [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor colorAboutHexBWSttr:@"#FFA027"] range:[title rangeOfString:numbnerStr]]; - self.subChampionSequencignation.attributedText = attribute; - self.subChampionSequencignation.textAlignment = NSTextAlignmentCenter; -} -#pragma mark - Getters And Setters -- (void)setNumber:(NSInteger)number { - _number = number; - [self produceFetowardsureDigitalIdiosyncracy:number]; -} - -- (UIImageView *)brandIndicateRegard { - if (!_brandIndicateRegard) { - _brandIndicateRegard = [[UIImageView alloc] init]; - _brandIndicateRegard.userInteractionEnabled = YES; - _brandIndicateRegard.image = [UIImage imageNamed:@"yumi_term_list_hello_enter"]; - } - return _brandIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _titleLabel.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#171A58"]; - _titleLabel.text = YMLocalizedString(@"YUMI_Session_Hello_Enter_View_1"); - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} - -- (UILabel *)subChampionSequencignation { - if (!_subChampionSequencignation) { - _subChampionSequencignation = [[UILabel alloc] init]; - } - return _subChampionSequencignation; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#D8D8D8"]; - } - return _burlywoodRegard; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionStatementIntelligenceAssistantElement.h b/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionStatementIntelligenceAssistantElement.h deleted file mode 100644 index e1b51dd6..00000000 --- a/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionStatementIntelligenceAssistantElement.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMSessionListHeadFriendCell.h -// YUMI -// -// Created by YUMI on 2022/11/17. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class YUMIInterlocutionStatementFanaticsParatiesMatrix; -@interface YUMIInterlocutionStatementIntelligenceAssistantElement : UICollectionViewCell - -- (void)prohibitipositionTowardsoloudspeaker:(YUMIInterlocutionStatementFanaticsParatiesMatrix *)data; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionStatementIntelligenceAssistantElement.m b/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionStatementIntelligenceAssistantElement.m deleted file mode 100644 index a8791833..00000000 --- a/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionStatementIntelligenceAssistantElement.m +++ /dev/null @@ -1,151 +0,0 @@ -// -// YMSessionListHeadFriendCell.m -// YUMI -// -// Created by YUMI on 2022/11/17. -// - -#import "YUMIInterlocutionStatementIntelligenceAssistantElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "UIImage+Utils.h" -#import "YUMIInterlocutionStatementFanaticsParatiesMatrix.h" -#import "YUMINoteRegard.h" - -@interface YUMIInterlocutionStatementIntelligenceAssistantElement() - -@property (nonatomic, strong) UILabel *constituteSequencignation; -@property (nonatomic, strong) NetIndicateRegard *imageView; -@property (nonatomic, strong) UIImageView *pointRegard; -@property (nonatomic, strong) UIImageView *bookBackgroundIndicateRegard; -@property (nonatomic, strong) UILabel *liveSequencignation; -@property (nonatomic,strong) YUMINoteRegard *bookIndicateRegard; -@property (nonatomic,strong) NSArray *brectifynessGarment; -@end - -@implementation YUMIInterlocutionStatementIntelligenceAssistantElement - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initRegard]; - [self initContraints]; - } - return self; -} - -- (void)initRegard { - [self.contentView addSubview:self.pointRegard]; - [self.contentView addSubview:self.imageView]; - [self.contentView addSubview:self.constituteSequencignation]; - - - [self.imageView addSubview:self.bookBackgroundIndicateRegard]; - [self.imageView addSubview:self.bookIndicateRegard]; - [self.imageView addSubview:self.liveSequencignation]; -} - -- (void)initContraints { - [self.pointRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(0); - make.centerX.mas_equalTo(self); - make.width.height.mas_equalTo(60); - }]; - [self.imageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.centerY.mas_equalTo(self.pointRegard); - make.width.height.mas_equalTo(56); - }]; - [self.constituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self.pointRegard.mas_bottom).mas_offset(2); - make.height.mas_equalTo(17); - make.left.mas_equalTo(0); - }]; - - [self.bookBackgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.imageView); - make.height.mas_equalTo(14); - }]; - - [self.bookIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.bookBackgroundIndicateRegard).mas_offset(15); - make.centerY.mas_equalTo(self.bookBackgroundIndicateRegard).mas_offset(-1); - make.height.mas_equalTo(10); - make.width.mas_equalTo(10); - }]; - [self.liveSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.bookIndicateRegard.mas_right).mas_offset(2); - make.centerY.mas_equalTo(self.bookIndicateRegard); - }]; -} - -- (void)prohibitipositionTowardsoloudspeaker:(YUMIInterlocutionStatementFanaticsParatiesMatrix *)data { - self.imageView.imageUrl = data.avatar; - NSString *name = data.nick.length > 4 ? [data.nick substringToIndex:4] : data.nick; - self.constituteSequencignation.text = name; -} - -- (UILabel *)constituteSequencignation { - if (!_constituteSequencignation) { - _constituteSequencignation = [[UILabel alloc] initWithFrame:CGRectZero]; - _constituteSequencignation.backgroundColor = [UIColor clearColor]; - _constituteSequencignation.font = [UIFont systemFontOfSize:12]; - _constituteSequencignation.textColor = DJDKMIMOMColor.instantEssayPrettify; - _constituteSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _constituteSequencignation; -} - -- (NetIndicateRegard *)imageView { - if (!_imageView) { - NetIndicateDisposition *config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _imageView = [[NetIndicateRegard alloc] initWithConfig:config]; - _imageView.contentMode = UIViewContentModeScaleAspectFill; - _imageView.layer.cornerRadius = 54/2; - _imageView.layer.masksToBounds = YES; - _imageView.layer.borderWidth = 1; - _imageView.layer.borderColor = [UIColor whiteColor].CGColor; - } - return _imageView; -} - -- (UIImageView *)pointRegard { - if (!_pointRegard) { - _pointRegard = [[UIImageView alloc] init]; - _pointRegard.layer.cornerRadius = 60 / 2; - _pointRegard.layer.masksToBounds = YES; - _pointRegard.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0x5BC8F8), UIColorFromRGB(0x66D9D9)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(60, 60)]; - } - return _pointRegard; -} - -- (UIImageView *)bookBackgroundIndicateRegard { - if (!_bookBackgroundIndicateRegard) { - _bookBackgroundIndicateRegard = [[UIImageView alloc] init]; - _bookBackgroundIndicateRegard.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFFA936), UIColorFromRGB(0xFFCB47)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(52, 14)]; - } - return _bookBackgroundIndicateRegard; -} - -- (UILabel *)liveSequencignation { - if (!_liveSequencignation) { - _liveSequencignation = [[UILabel alloc] init]; - _liveSequencignation.font = [UIFont systemFontOfSize:8]; - _liveSequencignation.textColor = [UIColor whiteColor]; - _liveSequencignation.text = YMLocalizedString(@"YUMI_Session_List_Head_Friend_Cell_0"); - } - return _liveSequencignation; -} - -- (YUMINoteRegard *)bookIndicateRegard { - if (!_bookIndicateRegard) { - _bookIndicateRegard = [[YUMINoteRegard alloc] init]; - _bookIndicateRegard.pillarPrettify = [UIColor whiteColor]; - _bookIndicateRegard.pillarExtents = 1.5; - [_bookIndicateRegard startAnimation]; - } - return _bookIndicateRegard; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionStatementIntelligenceProvision.h b/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionStatementIntelligenceProvision.h deleted file mode 100644 index e72bfbf2..00000000 --- a/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionStatementIntelligenceProvision.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// YMSessionListHeadItem.h -// YUMI -// -// Created by YUMI on 2022/11/17. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSUInteger, YUMIInterlocutionStatementHeadProvisionGenre) { - YUMIInterlocutionStatementHeadProvisionGenre_Office, - YUMIInterlocutionStatementHeadProvisionGenre_Activity, - YUMIInterlocutionStatementHeadProvisionGenre_Subscribe, - YUMIInterlocutionStatementHeadProvisionGenre_MemgXin, -}; - -@interface YUMIInterlocutionStatementIntelligenceProvision : NSObject - -@property (nonatomic, copy) NSString *title; -@property (nonatomic, copy) NSString *imageName; -@property (nonatomic, assign) BOOL showDeficitPoint; -@property (nonatomic, assign) YUMIInterlocutionStatementHeadProvisionGenre type; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionStatementIntelligenceProvision.m b/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionStatementIntelligenceProvision.m deleted file mode 100644 index dfc5583c..00000000 --- a/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionStatementIntelligenceProvision.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMSessionListHeadItem.m -// YUMI -// -// Created by YUMI on 2022/11/17. -// - -#import "YUMIInterlocutionStatementIntelligenceProvision.h" - -@implementation YUMIInterlocutionStatementIntelligenceProvision - -@end diff --git a/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionStatementIntelligenceProvisionRegard.h b/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionStatementIntelligenceProvisionRegard.h deleted file mode 100644 index faf4380b..00000000 --- a/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionStatementIntelligenceProvisionRegard.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMSessionListHeadItemView.h -// YUMI -// -// Created by YUMI on 2022/11/17. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIInterlocutionStatementIntelligenceProvisionRegard : UIView - -@property (nonatomic, copy) NSString *imageName; -@property (nonatomic, copy) NSString *title; -@property (nonatomic, assign) BOOL showPoint; -@property (nonatomic, assign) NSInteger badgeValue; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionStatementIntelligenceProvisionRegard.m b/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionStatementIntelligenceProvisionRegard.m deleted file mode 100644 index 21836911..00000000 --- a/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionStatementIntelligenceProvisionRegard.m +++ /dev/null @@ -1,124 +0,0 @@ -// -// YMSessionListHeadItemView.m -// YUMI -// -// Created by YUMI on 2022/11/17. -// - -#import "YUMIInterlocutionStatementIntelligenceProvisionRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "NEMCBadgeRegard.h" -#import "UIView+NIM.h" -#import "YUMIMacroUitls.h" - -@interface YUMIInterlocutionStatementIntelligenceProvisionRegard() - -@property (nonatomic, strong) UILabel *constituteSequencignation; -@property (nonatomic, strong) UIImageView *imageView; -@property (nonatomic, strong) UIView *pointRegard; -@property (nonatomic,strong) NEMCBadgeRegard *quantityRegard; - -@end - -@implementation YUMIInterlocutionStatementIntelligenceProvisionRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initRegard]; - [self initContraints]; - } - return self; -} - -- (void)layoutSubviews { - [super layoutSubviews]; - self.quantityRegard.nim_right = self.imageView.nim_right+2; - self.quantityRegard.nim_top = self.imageView.nim_top - 6; -} - -- (void)initRegard { - [self addSubview:self.imageView]; - [self addSubview:self.constituteSequencignation]; - [self addSubview:self.pointRegard]; - [self addSubview:self.quantityRegard]; -} - -- (void)initContraints { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth / 4); - }]; - - [self.imageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.centerX.mas_equalTo(0); - make.width.height.mas_equalTo(50); - }]; - [self.constituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.bottom.mas_equalTo(0); - make.top.mas_equalTo(self.imageView.mas_bottom).mas_offset(8); - make.bottom.mas_equalTo(0); - make.height.mas_equalTo(17); - }]; - [self.pointRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.right.mas_equalTo(self.imageView); - make.width.height.mas_equalTo(12); - }]; -} - -- (void)setTitle:(NSString *)title { - self.constituteSequencignation.text = title; -} - -- (void)setImageName:(NSString *)imageName { - self.imageView.image = [UIImage imageNamed:imageName]; -} -- (void)setShowPoint:(BOOL)showPoint { - self.pointRegard.hidden = !showPoint; -} - -- (void)setBadgeValue:(NSInteger)badgeValue { - if (badgeValue) { - self.quantityRegard.hidden = NO; - self.quantityRegard.badgeValue = @(badgeValue).stringValue; - } else { - self.quantityRegard.hidden = YES; - } -} - -- (UILabel *)constituteSequencignation { - if (!_constituteSequencignation) { - _constituteSequencignation = [[UILabel alloc] initWithFrame:CGRectZero]; - _constituteSequencignation.backgroundColor = [UIColor clearColor]; - _constituteSequencignation.font = [UIFont systemFontOfSize:14]; - _constituteSequencignation.textColor = DJDKMIMOMColor.mainEssayPrettify; - } - return _constituteSequencignation; -} - -- (UIImageView *)imageView { - if (!_imageView) { - _imageView = [[UIImageView alloc] init]; - } - return _imageView; -} - -- (UIView *)pointRegard { - if (!_pointRegard) { - _pointRegard = [[UIView alloc] init]; - _pointRegard.layer.cornerRadius = 6; - _pointRegard.layer.masksToBounds = YES; - _pointRegard.backgroundColor = UIColorFromRGB(0xFB486A); - _pointRegard.hidden = YES; - } - return _pointRegard; -} - -- (NEMCBadgeRegard *)quantityRegard { - if (!_quantityRegard) { - _quantityRegard = [NEMCBadgeRegard viewAboutQuantityPrompt:@""]; - _quantityRegard.hidden = YES; - } - return _quantityRegard; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionStatementIntelligenceRegard.h b/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionStatementIntelligenceRegard.h deleted file mode 100644 index d76cc7fd..00000000 --- a/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionStatementIntelligenceRegard.h +++ /dev/null @@ -1,35 +0,0 @@ -// -// YMSessionListHeadView.h -// YUMI -// -// Created by YUMI on 2022/11/17. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class InterlocutionSpeakHalloComputationMatrix; -@protocol FBCInterlocutionStatementIntelligenceRegardRepresendtation - -- (void)YUMIInterlocutionSttowardsementIntelligenceRegardDidTicktackHLOffice; -- (void)YUMIInterlocutionSttowardsementIntelligenceRegardDidTicktackImportprise; -- (void)YUMIInterlocutionSttowardsementIntelligenceRegardDidTicktackMetroscribe; -- (void)YUMIInterlocutionSttowardsementIntelligenceRegardDidTicktackMengxin; -- (void)YUMIInterlocutionSttowardsementIntelligenceRegardDidTicktackSpeakCorridoro; -@end - -@interface YUMIInterlocutionStatementIntelligenceRegard : UIView - -- (void)refurbishUtensilRegardAboutConsumerPrototype:(NSInteger)level; - -@property (nonatomic, strong) NSArray *friendsGarment; -@property (nonatomic,assign) BOOL veiledtUtensil; -@property (nonatomic,strong) InterlocutionSpeakHalloComputationMatrix *sayCorridoroAbstract; - -@property (nonatomic, weak) id delegate; - -- (void)refurbishQuantityAboutInterlocutionId:(NSString *)sessionId unreadCount:(NSInteger)unreadCount; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionStatementIntelligenceRegard.m b/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionStatementIntelligenceRegard.m deleted file mode 100644 index 50becf3e..00000000 --- a/YuMi/Modules/YMMessage/View/SessionListHeadView/YUMIInterlocutionStatementIntelligenceRegard.m +++ /dev/null @@ -1,319 +0,0 @@ -// -// YMSessionListHeadView.m -// YUMI -// -// Created by YUMI on 2022/11/17. -// - -#import "YUMIInterlocutionStatementIntelligenceRegard.h" -#import -#import "UIImage+Utils.h" -#import "DJDKMIMOMColor.h" -#import "ClientDisposition.h" -#import "ConsumerAbstractMatrix.h" -#import "YUMIInterlocutionStatementIntelligenceProvision.h" -#import "YUMIInterlocutionStatementIntelligenceProvisionRegard.h" -#import "YUMIInterlocutionStatementIntelligenceAssistantElement.h" -#import "NSArray+Safe.h" -#import "YUMIInterlocutionStatementFanaticsParatiesMatrix.h" -#import "XCCurrentVCStackExecutive.h" -#import "YUMIChamberRegardGovernancer.h" -#import "YUMIInterlocutionHalloImportRegard.h" -#import "InterlocutionSpeakHalloComputationMatrix.h" -#import "YUMIMacroUitls.h" - -NSString * const kMengXinShowReadDotKey = @"kMengXinShowReadDotKey"; - -@interface YUMIInterlocutionStatementIntelligenceRegard() - -@property (nonatomic, strong) UIStackView *mainHierarchyRegard; -@property (nonatomic, strong) UIStackView *utensilHierarchyRegard; -@property (nonatomic,strong) UIStackView *extremeHierarchyRegard; -@property (nonatomic, strong) UICollectionView *collectionView; -@property (nonatomic,strong) YUMIInterlocutionHalloImportRegard *corridoroRegard; -@property (nonatomic, strong) NSMutableArray *funtionGarment; - -@end - -@implementation YUMIInterlocutionStatementIntelligenceRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initProvisionTowardsoloudspeaker]; - [self initRegard]; - [self initContraints]; - } - return self; -} - -- (void)initProvisionTowardsoloudspeaker { - YUMIInterlocutionStatementIntelligenceProvision *officeItem = [[YUMIInterlocutionStatementIntelligenceProvision alloc] init]; - officeItem.title = YMLocalizedString(@"YUMI_Session_List_Head_View_0"); - officeItem.imageName = @"session_list_head_office"; - officeItem.type = YUMIInterlocutionStatementHeadProvisionGenre_Office; - - YUMIInterlocutionStatementIntelligenceProvision *activityItem = [[YUMIInterlocutionStatementIntelligenceProvision alloc] init]; - activityItem.title = YMLocalizedString(@"YUMI_Session_List_Head_View_1"); - activityItem.imageName = @"session_list_head_activity"; - activityItem.type = YUMIInterlocutionStatementHeadProvisionGenre_Activity; - - YUMIInterlocutionStatementIntelligenceProvision *subscribeItem = [[YUMIInterlocutionStatementIntelligenceProvision alloc] init]; - subscribeItem.title = YMLocalizedString(@"YUMI_Session_List_Head_View_2"); - subscribeItem.imageName = @"session_list_head_subscribe"; - subscribeItem.type = YUMIInterlocutionStatementHeadProvisionGenre_Subscribe; - - [self.funtionGarment addObject:officeItem]; - [self.funtionGarment addObject:activityItem]; - [self.funtionGarment addObject:subscribeItem]; -} - -- (void)initRegard { - [self addSubview:self.mainHierarchyRegard]; - [self.mainHierarchyRegard addArrangedSubview:self.utensilHierarchyRegard]; - [self.mainHierarchyRegard addArrangedSubview:self.extremeHierarchyRegard]; - - [self.extremeHierarchyRegard addArrangedSubview:self.corridoroRegard]; - [self.extremeHierarchyRegard addArrangedSubview:self.collectionView]; - for (YUMIInterlocutionStatementIntelligenceProvision *item in self.funtionGarment) { - YUMIInterlocutionStatementIntelligenceProvisionRegard *itemView = [[YUMIInterlocutionStatementIntelligenceProvisionRegard alloc] init]; - itemView.imageName = item.imageName; - itemView.title = item.title; - itemView.showPoint = item.showDeficitPoint; - itemView.tag = item.type; - [self.utensilHierarchyRegard addArrangedSubview:itemView]; - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsProvision:)]; - [itemView addGestureRecognizer:tap]; - } - -} - -- (void)initContraints { - [self.mainHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.equalTo(self); - }]; - - [self.utensilHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth); - make.height.mas_equalTo(85); - }]; - - [self.corridoroRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(93, 90)); - }]; - - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(90); - make.width.mas_equalTo(0); - }]; - - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.mainHierarchyRegard); - }]; -} - -#pragma mark - UICollectionViewDelegate -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.friendsGarment.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMIInterlocutionStatementIntelligenceAssistantElement *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIInterlocutionStatementIntelligenceAssistantElement class]) forIndexPath:indexPath]; - YUMIInterlocutionStatementFanaticsParatiesMatrix *model = [self.friendsGarment secureGroalTowardsIndictowardsrix1:indexPath.row]; - [cell prohibitipositionTowardsoloudspeaker:model]; - return cell; -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - YUMIInterlocutionStatementFanaticsParatiesMatrix *model = [self.friendsGarment secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (model.roomUid.length > 0) { - [YUMIChamberRegardGovernancer unfoildChamber:model.roomUid viewController:[XCCurrentVCStackExecutive shareManager].getCurrentVC]; - } -} - -- (void)refurbishUtensilRegardAboutConsumerPrototype:(NSInteger)level { - if( [ClientDisposition partowardsiciptowardsionDisposition].dispositionAbstract.findNewbieCharmLevel <= level) { - YUMIInterlocutionStatementIntelligenceProvision *mengxinItem = [[YUMIInterlocutionStatementIntelligenceProvision alloc] init]; - mengxinItem.title = YMLocalizedString(@"YUMI_Session_List_Head_View_3"); - mengxinItem.imageName = @"session_list_head_mengxin"; - mengxinItem.type = YUMIInterlocutionStatementHeadProvisionGenre_MemgXin; - [self.funtionGarment addObject:mengxinItem]; - - YUMIInterlocutionStatementIntelligenceProvisionRegard *itemView = [[YUMIInterlocutionStatementIntelligenceProvisionRegard alloc] init]; - itemView.imageName = mengxinItem.imageName; - itemView.title = mengxinItem.title; - BOOL hidden = [[NSUserDefaults standardUserDefaults] boolForKey:kMengXinShowReadDotKey]; - itemView.showPoint = !hidden; - itemView.tag = mengxinItem.type; - [self.utensilHierarchyRegard addArrangedSubview:itemView]; - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsProvision:)]; - [itemView addGestureRecognizer:tap]; - } -} - -- (void)refurbishQuantityAboutInterlocutionId:(NSString *)sessionId unreadCount:(NSInteger)unreadCount { - for (int i = 0; i<[ClientDisposition partowardsiciptowardsionDisposition].dispositionAbstract.officialMsgUids.count; i++) { - NSString *str = [[ClientDisposition partowardsiciptowardsionDisposition].dispositionAbstract.officialMsgUids secureGroalTowardsIndictowardsrix1:i]; - if ([str isEqualToString:sessionId]) { - YUMIInterlocutionStatementIntelligenceProvisionRegard *itemView = [self.utensilHierarchyRegard.subviews secureGroalTowardsIndictowardsrix1:i]; - if (i == 2) { - itemView.showPoint = unreadCount; - } else { - itemView.badgeValue = unreadCount; - } - } - } -} - -- (void)betowardsProvision:(UITapGestureRecognizer *)ges { - YUMIInterlocutionStatementIntelligenceProvisionRegard *view = (YUMIInterlocutionStatementIntelligenceProvisionRegard *)ges.view; - switch (view.tag) { - case YUMIInterlocutionStatementHeadProvisionGenre_Office: - { - if (self.delegate && [self.delegate respondsToSelector:@selector(YUMIInterlocutionSttowardsementIntelligenceRegardDidTicktackHLOffice)]) { - [self.delegate YUMIInterlocutionSttowardsementIntelligenceRegardDidTicktackHLOffice]; - } - } - break; - case YUMIInterlocutionStatementHeadProvisionGenre_Activity: - { - if (self.delegate && [self.delegate respondsToSelector:@selector(YUMIInterlocutionSttowardsementIntelligenceRegardDidTicktackImportprise)]) { - [self.delegate YUMIInterlocutionSttowardsementIntelligenceRegardDidTicktackImportprise]; - } - } - break; - case YUMIInterlocutionStatementHeadProvisionGenre_Subscribe: - { - if (self.delegate && [self.delegate respondsToSelector:@selector(YUMIInterlocutionSttowardsementIntelligenceRegardDidTicktackMetroscribe)]) { - [self.delegate YUMIInterlocutionSttowardsementIntelligenceRegardDidTicktackMetroscribe]; - } - } - break; - case YUMIInterlocutionStatementHeadProvisionGenre_MemgXin: - { - [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kMengXinShowReadDotKey]; - [[NSUserDefaults standardUserDefaults] synchronize]; - YUMIInterlocutionStatementIntelligenceProvisionRegard *itemView = [self.utensilHierarchyRegard.subviews lastObject]; - itemView.showPoint = NO; - if (self.delegate && [self.delegate respondsToSelector:@selector(YUMIInterlocutionSttowardsementIntelligenceRegardDidTicktackMengxin)]) { - [self.delegate YUMIInterlocutionSttowardsementIntelligenceRegardDidTicktackMengxin]; - } - } - break; - default: - break; - } -} - -- (void)sayCorridoroRecognition { - if (self.delegate && [self.delegate respondsToSelector:@selector(YUMIInterlocutionSttowardsementIntelligenceRegardDidTicktackSpeakCorridoro)]) { - [self.delegate YUMIInterlocutionSttowardsementIntelligenceRegardDidTicktackSpeakCorridoro]; - } -} - -- (void)setFriendsGarment:(NSArray *)friendsGarment { - _friendsGarment = friendsGarment; - [self.collectionView reloadData]; - if (_friendsGarment.count > 0) { - self.collectionView.hidden = NO; - } else { - self.collectionView.hidden = YES; - } -} - -- (void)setSayCorridoroAbstract:(InterlocutionSpeakHalloComputationMatrix *)sayCorridoroAbstract { - _sayCorridoroAbstract = sayCorridoroAbstract; - if (_sayCorridoroAbstract) { - self.corridoroRegard.hidden = !_sayCorridoroAbstract.visible; - self.corridoroRegard.number = _sayCorridoroAbstract.helloCount; - } else { - self.corridoroRegard.hidden = YES; - } - - CGFloat width = (KScreenWidth); - if (!self.corridoroRegard.hidden) { - width = KScreenWidth - 93; - } - - [self.collectionView mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(width); - }]; -} - -- (void)setVeiledtUtensil:(BOOL)veiledtUtensil { - _veiledtUtensil = veiledtUtensil; - self.extremeHierarchyRegard.hidden = _veiledtUtensil; -} - -- (UIStackView *)mainHierarchyRegard { - if (!_mainHierarchyRegard) { - _mainHierarchyRegard = [[UIStackView alloc] init]; - _mainHierarchyRegard.axis = UILayoutConstraintAxisVertical; - _mainHierarchyRegard.distribution = UIStackViewDistributionFill; - _mainHierarchyRegard.alignment = UIStackViewAlignmentLeading; - _mainHierarchyRegard.spacing = 32; - } - return _mainHierarchyRegard; -} - -- (UIStackView *)utensilHierarchyRegard { - if (!_utensilHierarchyRegard) { - _utensilHierarchyRegard = [[UIStackView alloc] init]; - _utensilHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _utensilHierarchyRegard.distribution = UIStackViewDistributionFillEqually; - _utensilHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _utensilHierarchyRegard.backgroundColor = [UIColor clearColor]; - } - return _utensilHierarchyRegard; -} - -- (NSMutableArray *)funtionGarment { - if (!_funtionGarment) { - _funtionGarment = [NSMutableArray array]; - } - return _funtionGarment; -} - -- (UIStackView *)extremeHierarchyRegard { - if (!_extremeHierarchyRegard) { - _extremeHierarchyRegard = [[UIStackView alloc] init]; - _extremeHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _extremeHierarchyRegard.distribution = UIStackViewDistributionFill; - _extremeHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _extremeHierarchyRegard.spacing = 0; - _extremeHierarchyRegard.hidden = YES; - } - return _extremeHierarchyRegard; -} - -- (YUMIInterlocutionHalloImportRegard *)corridoroRegard { - if (!_corridoroRegard) { - _corridoroRegard = [[YUMIInterlocutionHalloImportRegard alloc] init]; - _corridoroRegard.number = 20; - _corridoroRegard.hidden = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(sayCorridoroRecognition)]; - [_corridoroRegard addGestureRecognizer:tap]; - } - return _corridoroRegard; -} - -- (UICollectionView *)collectionView { - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; - layout.minimumLineSpacing = 18; - layout.itemSize = CGSizeMake(60, 90); - layout.sectionInset = UIEdgeInsetsMake(0, 16, 0, 16); - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - [_collectionView registerClass:[YUMIInterlocutionStatementIntelligenceAssistantElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIInterlocutionStatementIntelligenceAssistantElement class])]; - _collectionView.delegate = self; - _collectionView.dataSource = self; - _collectionView.backgroundColor = [UIColor clearColor]; - _collectionView.layer.cornerRadius = 8; - _collectionView.layer.masksToBounds = YES; - _collectionView.hidden = YES; - _collectionView.showsHorizontalScrollIndicator = NO; - } - return _collectionView; -} - -@end diff --git a/YuMi/Modules/YMMine/Api/Api+Mine.h b/YuMi/Modules/YMMine/Api/Api+Mine.h index d70f3c80..dc822bb0 100644 --- a/YuMi/Modules/YMMine/Api/Api+Mine.h +++ b/YuMi/Modules/YMMine/Api/Api+Mine.h @@ -11,72 +11,158 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (Mine) -+ (void)requisitionsubjectiveObligtowardsionProvision:(HttpRequestHelperCompletion)completion +/// 获取个人中心功能列表 +/// @param completion 完成 +/// @param uid uid ++ (void)requestPersonalFunctionItem:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; -+ (void)requisitionManeOriflammeSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid type:(NSString *)type; +/// 获取个人中心banner列表 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param type 类型 10 ++ (void)requestMineBannerList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid type:(NSString *)type; -+ (void)preserveFeedEncourageAbout:(HttpRequestHelperCompletion)complection +/// 保存反馈的信息 +/// @param complection 完成 +/// @param feedbackDesc 反馈的内容 +/// @param contact 联系方式 +/// @param uid uid +/// @param ticket ticket ++ (void)saveFeedBackWith:(HttpRequestHelperCompletion)complection feedbackDesc:(NSString *)feedbackDesc contact:(NSString *)contact uid:(NSString *)uid ticket:(NSString *)ticket; -+ (void)requisitionConsumerAbstractInfformPosition:(HttpRequestHelperCompletion)complection +/// 查询当前用户开启通知的状态 +/// @param complection 完成 +/// @param uid 用户的uid ++ (void)requestUserInfoNotifyStatus:(HttpRequestHelperCompletion)complection uid:(NSString *)uid; -+ (void)refurbishConsumerAbstractSystemInfformAbout:(HttpRequestHelperCompletion)complection +/// 更新系统通知 +/// @param complection 完成 +/// @param sysMsgNotify 状态 +/// @param uid 用户的uid ++ (void)updateUserInfoSystemNotifyWith:(HttpRequestHelperCompletion)complection sysMsgNotify:(NSString *)sysMsgNotify uid:(NSString *)uid; -+ (void)refurbishKellegBroadCastInfformAbout:(HttpRequestHelperCompletion)completion +/// 更新个播开播通知 +/// @param completion 完成 +/// @param msgNotify 状态 +/// @param uid 用户的uid ++ (void)updateAnchorBroadCastNotifyWith:(HttpRequestHelperCompletion)completion msgNotify:(NSString *)msgNotify uid:(NSString *)uid; -+ (void)setIntersectCiphercryptogram:(HttpRequestHelperCompletion)complection +/// 设置支付密码 +/// @param complection 完成 +/// @param newPasswd 支付密码 +/// @param phone 手机号 +/// @param code 验证码 +/// @param uid uid +/// @param ticket ticket ++ (void)setPayPassword:(HttpRequestHelperCompletion)complection newPasswd:(NSString *)newPasswd phone:(NSString *)phone code:(NSString *)code uid:(NSString *)uid ticket:(NSString *)ticket; -+ (void)modifIntersectCiphercryptogram:(HttpRequestHelperCompletion)complection +/// 修改支付密码 +/// @param complection 完成 +/// @param newPasswd 新的支付密码 +/// @param oldPasswd 旧的支付密码 +/// @param uid uid +/// @param ticket ticket ++ (void)modifPayPassword:(HttpRequestHelperCompletion)complection newPasswd:(NSString *)newPasswd oldPasswd:(NSString *)oldPasswd uid:(NSString *)uid ticket:(NSString *)ticket; -+ (void)setLoingCiphercryptogram:(HttpRequestHelperCompletion)completion phone:(NSString *)phone newPwd:(NSString *)newPwd; +/// 设置登录密码 +/// @param completion 完成 +/// @param phone 手机号 +/// @param newPwd 新的密码 ++ (void)setLoingPassword:(HttpRequestHelperCompletion)completion phone:(NSString *)phone newPwd:(NSString *)newPwd; -+ (void)replacementLoingCiphercryptogram:(HttpRequestHelperCompletion)completion phone:(NSString *)phone newPwd:(NSString *)newPwd smsCode:(NSString *)smsCode; +/// 重置登录密码 +/// @param completion 完成 +/// @param phone 手机号 +/// @param newPwd 新的密码 +/// @param smsCode 验证码 ++ (void)resetLoingPassword:(HttpRequestHelperCompletion)completion phone:(NSString *)phone newPwd:(NSString *)newPwd smsCode:(NSString *)smsCode; -+ (void)decortowardseLoingCiphercryptogram:(HttpRequestHelperCompletion)completion phone:(NSString *)phone newPwd:(NSString *)newPwd pwd:(NSString *)pwd; +/// 修改 登录密码 +/// @param completion 完成 +/// @param phone 手机号 +/// @param newPwd 新的密码 +/// @param pwd 旧密码 ++ (void)modifyLoingPassword:(HttpRequestHelperCompletion)completion phone:(NSString *)phone newPwd:(NSString *)newPwd pwd:(NSString *)pwd; -+ (void)unfoildOrConcludefasciaboardMtowardsrix:(HttpRequestHelperCompletion)complection +/// 开启关闭家长模式 +/// @param complection 完成 +/// @param password 密码 +/// @param status 状态 0 开启 1 关闭 +/// @param uid 用户的uid ++ (void)openOrCloseParentModel:(HttpRequestHelperCompletion)complection password:(NSString *)password status:(NSNumber *)status uid:(NSString *)uid; -+ (void)qiniuUpwardsLoadIndictowardse:(HttpRequestHelperCompletion)complection; +/// 上传七牛获取token +/// @param complection 完成 ++ (void)qiniuUpLoadImage:(HttpRequestHelperCompletion)complection; -+ (void)upburdenConsumerBrochure:(HttpRequestHelperCompletion)complection +/// 上传用户图像到服务器 +/// @param complection 完成 +/// @param photoStr 相册 +/// @param uid 用户的uid +/// @param ticket ticket ++ (void)uploadUserAlbum:(HttpRequestHelperCompletion)complection photoStr:(NSString *)photoStr uid:(NSString *)uid ticket:(NSString *)ticket; -+ (void)representtowardsionIndictowardseByvirtueofWeeblogic:(HttpRequestHelperCompletion)complection +/// 删除用户图像从服务器 +/// @param complection 完成 +/// @param pid 相册 +/// @param uid 用户的uid +/// @param ticket ticket ++ (void)deleteImageFromServer:(HttpRequestHelperCompletion)complection pid:(NSString *)pid uid:(NSString *)uid ticket:(NSString *)ticket; -+ (void)acquireReindictSttowardsement:(HttpRequestHelperCompletion)complection +/// 请求充值列表 +/// @param complection 完成 +/// @param channelType channel ++ (void)getRechargeList:(HttpRequestHelperCompletion)complection channelType:(NSString *)channelType; -+ (void)requisitionPCQReindict:(HttpRequestHelperCompletion)complection +/// 苹果下单 +/// @param complection 完成 +/// @param chargeProdId 充值id +/// @param uid 用户的uid +/// @param ticket ticket +/// @param deviceInfo uuid +/// @param clientIp ip地址 ++ (void)requestIAPRecharge:(HttpRequestHelperCompletion)complection chargeProdId:(NSString *)chargeProdId uid:(NSString *)uid ticket:(NSString *)ticket deviceInfo:(NSString *)deviceInfo clientIp:(NSString *)clientIp; +/// 验证凭据 +/// @param complection 完成 +/// @param receipt base 64 recepit +/// @param chooseEnv @"true" +/// @param chargeRecordId 服务端生成的订单编号 +/// @param transcationId 内购的唯一标识符 +/// @param uid 用户uid +/// @param ticket ticket + (void)checkReceipt:(HttpRequestHelperCompletion)complection receipt:(NSString *)receipt chooseEnv:(NSString *)chooseEnv @@ -85,63 +171,146 @@ NS_ASSUME_NONNULL_BEGIN uid:(NSString *)uid ticket:(NSString *)ticket; -+ (void)revoctowardsionledUniversalSequenceription:(HttpRequestHelperCompletion)complection +/// 退出当前账号 +/// @param complection 完成 +/// @param access_token token ++ (void)logoutCurrentAccount:(HttpRequestHelperCompletion)complection access_token:(NSString *)access_token; -+ (void)considertowardsionPositionImplementtowardsion:(HttpRequestHelperCompletion)complection +/// 查询两个人的关注状态 +/// @param complection 完成 +/// @param uid 自己的uid +/// @param isLikeUid 要查询的那个人的uid ++ (void)attentionStatusCompletion:(HttpRequestHelperCompletion)complection uid:(NSString *)uid isLikeUid:(NSString *)isLikeUid; -+ (void)considertowardsionImplementtowardsion:(HttpRequestHelperCompletion)complection +/// 关注某人 +/// @param complection 完成 +/// @param uid 发起关注的人 +/// @param likedUid 被关注的人 +/// @param ticket ticket +/// @param type l类型默认1 ++ (void)attentionCompletion:(HttpRequestHelperCompletion)complection uid:(NSString *)uid likedUid:(NSString *)likedUid ticket:(NSString *)ticket type:(NSString *)type; -+ (void)consumerSpecificAbstractImplementtowardsion:(HttpRequestHelperCompletion)complection uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize; +/// 获取用户详情 +/// @param complection 完成 +/// @param uid 发起关注的人 +/// @param page page +/// @param pageSize pagesize ++ (void)userDetailInfoCompletion:(HttpRequestHelperCompletion)complection uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize; -+ (void)acquireFantowardsicsSttowardsementImplementtowardsion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid pageNo:(NSString *)pageNo pageSize:(NSString *)pageSize; +/// 获取粉丝列表 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param pageNo 当前页数 +/// @param pageSize 一页多少个 ++ (void)getFansListCompletion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid pageNo:(NSString *)pageNo pageSize:(NSString *)pageSize; -+ (void)acquireVactowardsionerSttowardsementImplementtowardsion:(HttpRequestHelperCompletion)completion pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize; +/// 获取访客列表 +/// @param completion 完成 +/// @param pageNum 当前页数 +/// @param pageSize 一页多少个 ++ (void)getVisitorListCompletion:(HttpRequestHelperCompletion)completion pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize; -+ (void)acquireconsidertowardsionSttowardsementImplementtowardsion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid pageNo:(NSString *)pageNo pageSize:(NSString *)pageSize; +/// 获取关注列表 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param pageNo 当前页数 +/// @param pageSize 一页多少个 ++ (void)getattentionListCompletion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid pageNo:(NSString *)pageNo pageSize:(NSString *)pageSize; -+ (void)upburdenInspectConsumerImplementtowardsion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; +/// 上传访问用户的记录 +/// @param completion 完成 +/// @param uid 被访问的用户uid ++ (void)uploadVisitUserCompletion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; -+ (void)acquireKellegFantowardsicsSquadSttowardsementImplementtowardsion:(HttpRequestHelperCompletion)completion pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize; +/// 获取粉丝团列表 +/// @param completion 完成 +/// @param pageNum 当前页数 +/// @param pageSize 一页多少个 ++ (void)getAnchorFansTeamListCompletion:(HttpRequestHelperCompletion)completion pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize; -+ (void)acquireConsumerPresentRampartowards:(HttpRequestHelperCompletion)comletion uid:(NSString *)uid giftType:(NSString *)giftType; +/// 获取用户的礼物墙 +/// @param comletion 完成 +/// @param uid 用户的uid +/// @param giftType 礼物类型 1:普通礼物;2:幸运礼物 ++ (void)getUserGiftWall:(HttpRequestHelperCompletion)comletion uid:(NSString *)uid giftType:(NSString *)giftType; -+ (void)acquireConsumersSttowardsementAbstract:(HttpRequestHelperCompletion)completion uids:(NSString *)uids; +/// 批量获取用户信息 +/// @param completion 完成 +/// @param uids 用户的uid ++ (void)getUsersListInfo:(HttpRequestHelperCompletion)completion uids:(NSString *)uids; -+ (void)requisitionTerminalImpression:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize; +/// 获取用户进房记录 +/// @param completion 完成 +/// @param uid 用户的uid ++ (void)requestFootPrint:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize; -+ (void)requisitionCleanTerminalImpression:(HttpRequestHelperCompletion)completion uid:(NSString *)uid roomUid:(NSString *)roomUid; +/// 清除进房记录 +/// @param completion 完成 +/// @param uid 用户uid +/// @param roomUid 房间uid ++ (void)requestCleanFootPrint:(HttpRequestHelperCompletion)completion uid:(NSString *)uid roomUid:(NSString *)roomUid; -+ (void)requisitionManeFlexibleDirectoryapttowardsionTraitCompetition:(HttpRequestHelperCompletion)completion uid:(NSString *)uid mgId:(NSString *)mgId; +/// 快捷进房 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param mgId 游戏id ++ (void)requestMineQuickMatchLittleGame:(HttpRequestHelperCompletion)completion uid:(NSString *)uid mgId:(NSString *)mgId; -+ (void)requisitionManeAssembleChamberSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize roomType:(NSString *)roomType; +/// 请求收藏房间列表 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param page 当前页数 +/// @param pageSize 一页多少个 +/// @param roomType 类型:4:个播房;其他:派对房;不传:所有房间 ++ (void)requestMineCollectRoomList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize roomType:(NSString *)roomType; -+ (void)requisitionEachoneHuntfor:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; +/// 请求大家都在搜列表 +/// @param completion 完成 +/// @param uid uid ++ (void)requestEveryoneSearch:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; -+ (void)requisitionFantowardsicsParty:(HttpRequestHelperCompletion)completion; +/// 获取好友派对列表 +/// @param completion 完成 ++ (void)requestFansParty:(HttpRequestHelperCompletion)completion; -+ (void)requisitionKellegDistinctionAbstract:(HttpRequestHelperCompletion)completion; +/// 请求主播评级 +/// @param completion 完成 ++ (void)requestAnchorGradeInfo:(HttpRequestHelperCompletion)completion; -+ (void)requisitionManeUnionSttowardsement:(HttpRequestHelperCompletion)completion; -+ (void)requisitionManeChamberSttowardsement:(HttpRequestHelperCompletion)completion; -+(void)demandCollectiveAbout:(HttpRequestHelperCompletion)completion uid:(NSString *)uid clanId:(NSString *)clanId; +/// 請求公會列表 +/// @param completion 完成 ++ (void)requestMineGuildList:(HttpRequestHelperCompletion)completion; +/// 請求房间列表 +/// @param completion 完成 ++ (void)requestMineRoomList:(HttpRequestHelperCompletion)completion; +///申请加入公会 ++(void)applyClanWith:(HttpRequestHelperCompletion)completion uid:(NSString *)uid clanId:(NSString *)clanId; -+(void)acquireGoldSpecificsTowardsoloudspeaker:(HttpRequestHelperCompletion)completion startTime:(NSString *)startTime endTime:(NSString *)endTime; ++(void)getGoldDetailsData:(HttpRequestHelperCompletion)completion startTime:(NSString *)startTime endTime:(NSString *)endTime; +/// 设置支付密码 重置支付密码 +/// @param completion 完成 +/// @param newPasswd 支付密码 +/// @param phone 手机号 -+ (void)setIntersectCiphercryptogram:(HttpRequestHelperCompletion)completion newPasswd:(NSString *)newPasswd uid:(NSString *)uid ticket:(NSString *)ticket; +/// @param uid uid +/// @param ticket ticket ++ (void)setPayPassword:(HttpRequestHelperCompletion)completion newPasswd:(NSString *)newPasswd uid:(NSString *)uid ticket:(NSString *)ticket; -+(void)requisitionQueryAboutChamberGenre:(HttpRequestHelperCompletion)completion; -+(void)requisitionReflectionRevenue:(HttpRequestHelperCompletion)completion; -+(void)acquireExdiversifictowardsionDiamondAbstractrmtowardsion:(HttpRequestHelperCompletion)completion; ++(void)requestQueryWithRoomType:(HttpRequestHelperCompletion)completion; +///收益记录 ++(void)requestRecordIncome:(HttpRequestHelperCompletion)completion; +///得到兑换界面信息 ++(void)getExchangeDiamondInformation:(HttpRequestHelperCompletion)completion; -+(void)acknowledgementExdiversifictowardsionDiamond:(HttpRequestHelperCompletion)completion goldNum:(NSString *)goldNum diamondNum:(NSString *)diamondNum currency:(NSString *)currency; ++(void)confirmExchangeDiamond:(HttpRequestHelperCompletion)completion goldNum:(NSString *)goldNum diamondNum:(NSString *)diamondNum currency:(NSString *)currency; @end diff --git a/YuMi/Modules/YMMine/Api/Api+Mine.m b/YuMi/Modules/YMMine/Api/Api+Mine.m index bf0791b1..0c99e011 100644 --- a/YuMi/Modules/YMMine/Api/Api+Mine.m +++ b/YuMi/Modules/YMMine/Api/Api+Mine.m @@ -9,239 +9,401 @@ #import @implementation Api (Mine) -+ (void)requisitionsubjectiveObligtowardsionProvision:(HttpRequestHelperCompletion)completion +/// 获取个人中心功能列表 +/// @param completion 完成 +/// @param uid uid ++ (void)requestPersonalFunctionItem:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"cGVyc29uYWwvY2VudGVyL2xpc3Q="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil]; + NSString * fang = [NSString stringFromBase64String:@"cGVyc29uYWwvY2VudGVyL2xpc3Q="];///personal/center/list + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil]; } -+ (void)requisitionManeOriflammeSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid type:(NSString *)type { - NSString * fang = [NSString stringFromBase64String:@"aG9tZS9iYW5uZXI="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, type, nil]; +/// 获取个人中心banner列表 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param type 类型 10 ++ (void)requestMineBannerList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid type:(NSString *)type { + NSString * fang = [NSString stringFromBase64String:@"aG9tZS9iYW5uZXI="];///home/banner + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, type, nil]; } -+ (void)preserveFeedEncourageAbout:(HttpRequestHelperCompletion)completion +/// 保存反馈的信息 +/// @param completion 完成 +/// @param feedbackDesc 反馈的内容 +/// @param contact 联系方式 +/// @param uid uid +/// @param ticket ticket ++ (void)saveFeedBackWith:(HttpRequestHelperCompletion)completion feedbackDesc:(NSString *)feedbackDesc contact:(NSString *)contact uid:(NSString *)uid ticket:(NSString *)ticket { - NSString * fang = [NSString stringFromBase64String:@"ZmVlZGJhY2s="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, feedbackDesc, contact, uid, ticket, nil]; + NSString * fang = [NSString stringFromBase64String:@"ZmVlZGJhY2s="];///feedback + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, feedbackDesc, contact, uid, ticket, nil]; } -+ (void)requisitionConsumerAbstractInfformPosition:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"dXNlci9tc2dOb3RpZnk="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil]; +/// 查询当前用户开启通知的状态 +/// @param completion 完成 +/// @param uid 用户的uid ++ (void)requestUserInfoNotifyStatus:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"dXNlci9tc2dOb3RpZnk="];///user/msgNotify + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil]; } -+ (void)refurbishConsumerAbstractSystemInfformAbout:(HttpRequestHelperCompletion)completion sysMsgNotify:(NSString *)sysMsgNotify uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"dXNlci9zeXNNc2dOb3RpZnk="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, sysMsgNotify,uid, nil]; +/// 更新系统通知 +/// @param completion 完成 +/// @param sysMsgNotify 状态 +/// @param uid 用户的uid ++ (void)updateUserInfoSystemNotifyWith:(HttpRequestHelperCompletion)completion sysMsgNotify:(NSString *)sysMsgNotify uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"dXNlci9zeXNNc2dOb3RpZnk="];///user/sysMsgNotify + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, sysMsgNotify,uid, nil]; } -+ (void)refurbishKellegBroadCastInfformAbout:(HttpRequestHelperCompletion)completion msgNotify:(NSString *)msgNotify uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"dXNlci9zaW5nbGVCcm9hZGNhc3RNc2dOb3RpZnk="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, msgNotify,uid, nil]; +/// 更新个播开播通知 +/// @param completion 完成 +/// @param msgNotify 状态 +/// @param uid 用户的uid ++ (void)updateAnchorBroadCastNotifyWith:(HttpRequestHelperCompletion)completion msgNotify:(NSString *)msgNotify uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"dXNlci9zaW5nbGVCcm9hZGNhc3RNc2dOb3RpZnk="];///user/singleBroadcastMsgNotify + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, msgNotify,uid, nil]; } -+ (void)setIntersectCiphercryptogram:(HttpRequestHelperCompletion)completion newPasswd:(NSString *)newPasswd phone:(NSString *)phone code:(NSString *)code uid:(NSString *)uid ticket:(NSString *)ticket { - NSString * fang = [NSString stringFromBase64String:@"dXNlci9wYXltZW50UGFzc3dkL3Jlc2V0"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, newPasswd, phone, code,uid,ticket, nil]; +/// 设置支付密码 重置支付密码 +/// @param completion 完成 +/// @param newPasswd 支付密码 +/// @param phone 手机号 +/// @param code 验证码 +/// @param uid uid +/// @param ticket ticket ++ (void)setPayPassword:(HttpRequestHelperCompletion)completion newPasswd:(NSString *)newPasswd phone:(NSString *)phone code:(NSString *)code uid:(NSString *)uid ticket:(NSString *)ticket { + NSString * fang = [NSString stringFromBase64String:@"dXNlci9wYXltZW50UGFzc3dkL3Jlc2V0"];///user/paymentPasswd/reset + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, newPasswd, phone, code,uid,ticket, nil]; } -+ (void)modifIntersectCiphercryptogram:(HttpRequestHelperCompletion)completion newPasswd:(NSString *)newPasswd oldPasswd:(NSString *)oldPasswd uid:(NSString *)uid ticket:(NSString *)ticket { - NSString * fang = [NSString stringFromBase64String:@"dXNlci9wYXltZW50UGFzc3dkL21vZGlmeQ=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, newPasswd,oldPasswd,uid,ticket, nil]; +/// 修改支付密码 +/// @param completion 完成 +/// @param newPasswd 新的支付密码 +/// @param oldPasswd 旧的支付密码 +/// @param uid uid +/// @param ticket ticket ++ (void)modifPayPassword:(HttpRequestHelperCompletion)completion newPasswd:(NSString *)newPasswd oldPasswd:(NSString *)oldPasswd uid:(NSString *)uid ticket:(NSString *)ticket { + NSString * fang = [NSString stringFromBase64String:@"dXNlci9wYXltZW50UGFzc3dkL21vZGlmeQ=="];///user/paymentPasswd/modify + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, newPasswd,oldPasswd,uid,ticket, nil]; } -+ (void)setLoingCiphercryptogram:(HttpRequestHelperCompletion)completion phone:(NSString *)phone newPwd:(NSString *)newPwd { - NSString * fang = [NSString stringFromBase64String:@"YWNjL3B3ZC9zZXQ="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, phone, newPwd, nil]; +/// 设置登录密码 +/// @param completion 完成 +/// @param phone 手机号 +/// @param newPwd 新的密码 ++ (void)setLoingPassword:(HttpRequestHelperCompletion)completion phone:(NSString *)phone newPwd:(NSString *)newPwd { + NSString * fang = [NSString stringFromBase64String:@"YWNjL3B3ZC9zZXQ="];///acc/pwd/set + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, phone, newPwd, nil]; } -+ (void)replacementLoingCiphercryptogram:(HttpRequestHelperCompletion)completion phone:(NSString *)phone newPwd:(NSString *)newPwd smsCode:(NSString *)smsCode { - NSString * fang = [NSString stringFromBase64String:@"YWNjL3B3ZC9yZXNldA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, phone, newPwd,smsCode, nil]; +/// 重置登录密码 +/// @param completion 完成 +/// @param phone 手机号 +/// @param newPwd 新的密码 +/// @param smsCode 验证码 ++ (void)resetLoingPassword:(HttpRequestHelperCompletion)completion phone:(NSString *)phone newPwd:(NSString *)newPwd smsCode:(NSString *)smsCode { + NSString * fang = [NSString stringFromBase64String:@"YWNjL3B3ZC9yZXNldA=="];///acc/pwd/reset + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, phone, newPwd,smsCode, nil]; } -+ (void)decortowardseLoingCiphercryptogram:(HttpRequestHelperCompletion)completion phone:(NSString *)phone newPwd:(NSString *)newPwd pwd:(NSString *)pwd { - NSString * fang = [NSString stringFromBase64String:@"YWNjL3B3ZC9tb2RpZnk="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion,__FUNCTION__, phone, newPwd, pwd, nil]; +/// 修改 登录密码 +/// @param completion 完成 +/// @param phone 手机号 +/// @param newPwd 新的密码 +/// @param pwd 旧密码 ++ (void)modifyLoingPassword:(HttpRequestHelperCompletion)completion phone:(NSString *)phone newPwd:(NSString *)newPwd pwd:(NSString *)pwd { + NSString * fang = [NSString stringFromBase64String:@"YWNjL3B3ZC9tb2RpZnk="];///acc/pwd/modify + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion,__FUNCTION__, phone, newPwd, pwd, nil]; } -+ (void)unfoildOrConcludefasciaboardMtowardsrix:(HttpRequestHelperCompletion)completion password:(NSString *)password status:(NSNumber *)status uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"dXNlci9vcGVuT3JDbG9zZQ=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, password,status,uid, nil]; +/// 开启关闭家长模式 +/// @param completion 完成 +/// @param password 密码 +/// @param status 状态 0 开启 1 关闭 +/// @param uid 用户的uid ++ (void)openOrCloseParentModel:(HttpRequestHelperCompletion)completion password:(NSString *)password status:(NSNumber *)status uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"dXNlci9vcGVuT3JDbG9zZQ=="];///user/openOrClose + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, password,status,uid, nil]; } -+ (void)qiniuUpwardsLoadIndictowardse:(HttpRequestHelperCompletion)completion { - NSString * fang = [NSString stringFromBase64String:@"cWluaXUvdXBsb2FkL2dldFVwbG9hZFRva2Vu"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; +/// 上传七牛获取token +/// @param completion 完成 ++ (void)qiniuUpLoadImage:(HttpRequestHelperCompletion)completion { + NSString * fang = [NSString stringFromBase64String:@"cWluaXUvdXBsb2FkL2dldFVwbG9hZFRva2Vu"];///qiniu/upload/getUploadToken + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; } -+ (void)upburdenConsumerBrochure:(HttpRequestHelperCompletion)completion photoStr:(NSString *)photoStr uid:(NSString *)uid ticket:(NSString *)ticket { - NSString * fang = [NSString stringFromBase64String:@"cGhvdG8vdjIvdXBsb2Fk"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,photoStr, uid, ticket, nil]; +/// 上传用户图像到服务器 +/// @param completion 完成 +/// @param photoStr 相册 +/// @param uid 用户的uid +/// @param ticket ticket ++ (void)uploadUserAlbum:(HttpRequestHelperCompletion)completion photoStr:(NSString *)photoStr uid:(NSString *)uid ticket:(NSString *)ticket { + NSString * fang = [NSString stringFromBase64String:@"cGhvdG8vdjIvdXBsb2Fk"];///photo/v2/upload + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,photoStr, uid, ticket, nil]; } -+ (void)representtowardsionIndictowardseByvirtueofWeeblogic:(HttpRequestHelperCompletion)completion pid:(NSString *)pid uid:(NSString *)uid ticket:(NSString *)ticket { - NSString * fang = [NSString stringFromBase64String:@"cGhvdG8vZGVsUGhvdG8="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,pid, uid, ticket, nil]; +/// 删除用户图像从服务器 +/// @param completion 完成 +/// @param pid 相册 +/// @param uid 用户的uid +/// @param ticket ticket ++ (void)deleteImageFromServer:(HttpRequestHelperCompletion)completion pid:(NSString *)pid uid:(NSString *)uid ticket:(NSString *)ticket { + NSString * fang = [NSString stringFromBase64String:@"cGhvdG8vZGVsUGhvdG8="];///photo/delPhoto + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,pid, uid, ticket, nil]; } -+ (void)acquireReindictSttowardsement:(HttpRequestHelperCompletion)completion channelType:(NSString *)channelType { - NSString * fang = [NSString stringFromBase64String:@"Y2hhcmdlcHJvZC9saXN0"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,channelType, nil]; +/// 请求充值列表 +/// @param completion 完成 +/// @param channelType channel ++ (void)getRechargeList:(HttpRequestHelperCompletion)completion channelType:(NSString *)channelType { + NSString * fang = [NSString stringFromBase64String:@"Y2hhcmdlcHJvZC9saXN0"];///chargeprod/list + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,channelType, nil]; } -+ (void)requisitionPCQReindict:(HttpRequestHelperCompletion)completion chargeProdId:(NSString *)chargeProdId uid:(NSString *)uid ticket:(NSString *)ticket deviceInfo:(NSString *)deviceInfo clientIp:(NSString *)clientIp { - NSString * fang = [NSString stringFromBase64String:@"b3JkZXIvcGxhY2VWMg=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,chargeProdId, uid, ticket, deviceInfo, clientIp, nil]; +/// 苹果下单 +/// @param completion 完成 +/// @param chargeProdId 充值id +/// @param uid 用户的uid +/// @param ticket ticket +/// @param deviceInfo uuid +/// @param clientIp ip地址 ++ (void)requestIAPRecharge:(HttpRequestHelperCompletion)completion chargeProdId:(NSString *)chargeProdId uid:(NSString *)uid ticket:(NSString *)ticket deviceInfo:(NSString *)deviceInfo clientIp:(NSString *)clientIp { + NSString * fang = [NSString stringFromBase64String:@"b3JkZXIvcGxhY2VWMg=="];///order/placeV2 + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,chargeProdId, uid, ticket, deviceInfo, clientIp, nil]; } +/// 验证凭据 +/// @param completion 完成 +/// @param receipt base 64 recepit +/// @param chooseEnv @"true" +/// @param chargeRecordId 服务端生成的订单编号 +/// @param transcationId 内购的唯一标识符 +/// @param uid 用户uid +/// @param ticket ticket + (void)checkReceipt:(HttpRequestHelperCompletion)completion receipt:(NSString *)receipt chooseEnv:(NSString *)chooseEnv chargeRecordId:(NSString *)chargeRecordId transcationId:(NSString *)transcationId uid:(NSString *)uid ticket:(NSString *)ticket { - NSString * fang = [NSString stringFromBase64String:@"dmVyaWZ5L3NldGlhcA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,receipt, chooseEnv, chargeRecordId, transcationId, uid, ticket, nil]; + NSString * fang = [NSString stringFromBase64String:@"dmVyaWZ5L3NldGlhcA=="];///verify/setiap + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,receipt, chooseEnv, chargeRecordId, transcationId, uid, ticket, nil]; } -+ (void)revoctowardsionledUniversalSequenceription:(HttpRequestHelperCompletion)completion access_token:(NSString *)access_token { - NSString * fang = [NSString stringFromBase64String:@"YWNjL2xvZ291dA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, access_token, nil]; +/// 退出当前账号 +/// @param completion 完成 +/// @param access_token token ++ (void)logoutCurrentAccount:(HttpRequestHelperCompletion)completion access_token:(NSString *)access_token { + NSString * fang = [NSString stringFromBase64String:@"YWNjL2xvZ291dA=="];///acc/logout + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, access_token, nil]; } -+ (void)considertowardsionPositionImplementtowardsion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid isLikeUid:(NSString *)isLikeUid { - NSString * fang = [NSString stringFromBase64String:@"ZmFucy9pc2xpa2U="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, uid, isLikeUid, nil]; +/// 查询两个人的关注状态 +/// @param completion 完成 +/// @param uid 自己的uid +/// @param isLikeUid 要查询的那个人的uid ++ (void)attentionStatusCompletion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid isLikeUid:(NSString *)isLikeUid { + NSString * fang = [NSString stringFromBase64String:@"ZmFucy9pc2xpa2U="];///fans/islike + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, uid, isLikeUid, nil]; } -+ (void)considertowardsionImplementtowardsion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid likedUid:(NSString *)likedUid ticket:(NSString *)ticket type:(NSString *)type { - NSString * fang = [NSString stringFromBase64String:@"ZmFucy9saWtl"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, likedUid, ticket, type, nil]; +/// 关注某人 +/// @param completion 完成 +/// @param uid 发起关注的人 +/// @param likedUid 被关注的人 +/// @param ticket ticket +/// @param type 1 关注 2取消关注 ++ (void)attentionCompletion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid likedUid:(NSString *)likedUid ticket:(NSString *)ticket type:(NSString *)type { + NSString * fang = [NSString stringFromBase64String:@"ZmFucy9saWtl"];///fans/like + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, likedUid, ticket, type, nil]; } -+ (void)consumerSpecificAbstractImplementtowardsion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize { - NSString * fang = [NSString stringFromBase64String:@"dXNlci9kZXRhaWwvZ2V0"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, page, pageSize, nil]; +/// 获取用户详情 +/// @param completion 完成 +/// @param uid 发起关注的人 +/// @param page page +/// @param pageSize pagesize ++ (void)userDetailInfoCompletion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize { + NSString * fang = [NSString stringFromBase64String:@"dXNlci9kZXRhaWwvZ2V0"];///user/detail/get + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, page, pageSize, nil]; } -+ (void)acquireFantowardsicsSttowardsementImplementtowardsion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid pageNo:(NSString *)pageNo pageSize:(NSString *)pageSize { - NSString * fang = [NSString stringFromBase64String:@"ZmFucy9mYW5zbGlzdA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, pageNo, pageSize, nil]; +/// 获取粉丝列表 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param pageNo 当前页数 +/// @param pageSize 一页多少个 ++ (void)getFansListCompletion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid pageNo:(NSString *)pageNo pageSize:(NSString *)pageSize { + NSString * fang = [NSString stringFromBase64String:@"ZmFucy9mYW5zbGlzdA=="];///@"fans/fanslist" + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, pageNo, pageSize, nil]; } -+ (void)acquireconsidertowardsionSttowardsementImplementtowardsion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid pageNo:(NSString *)pageNo pageSize:(NSString *)pageSize { - NSString * fang = [NSString stringFromBase64String:@"ZmFucy9mb2xsb3dpbmc="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, pageNo, pageSize, nil]; +/// 获取关注列表 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param pageNo 当前页数 +/// @param pageSize 一页多少个 ++ (void)getattentionListCompletion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid pageNo:(NSString *)pageNo pageSize:(NSString *)pageSize { + NSString * fang = [NSString stringFromBase64String:@"ZmFucy9mb2xsb3dpbmc="];///fans/following + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, pageNo, pageSize, nil]; } -+ (void)acquireVactowardsionerSttowardsementImplementtowardsion:(HttpRequestHelperCompletion)completion pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize { - NSString * fang = [NSString stringFromBase64String:@"dXNlcnZpc2l0cmVjb3JkL3Zpc2l0VXNlckxpc3Q="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, pageNum, pageSize, nil]; +/// 获取访客列表 +/// @param completion 完成 +/// @param pageNum 当前页数 +/// @param pageSize 一页多少个 ++ (void)getVisitorListCompletion:(HttpRequestHelperCompletion)completion pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize { + NSString * fang = [NSString stringFromBase64String:@"dXNlcnZpc2l0cmVjb3JkL3Zpc2l0VXNlckxpc3Q="];///uservisitrecord/visitUserList + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, pageNum, pageSize, nil]; } -+ (void)upburdenInspectConsumerImplementtowardsion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"dXNlci9kZXRhaWwvdmlzaXRVc2VyRGV0YWls"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil]; +/// 上传访问用户的记录 +/// @param completion 完成 +/// @param uid 被访问的用户uid ++ (void)uploadVisitUserCompletion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"dXNlci9kZXRhaWwvdmlzaXRVc2VyRGV0YWls"];///user/detail/visitUserDetail + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil]; } -+ (void)acquireKellegFantowardsicsSquadSttowardsementImplementtowardsion:(HttpRequestHelperCompletion)completion pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize { - NSString * fang = [NSString stringFromBase64String:@"YW5jaG9yRmFuc1RlYW0vZ2V0Sm9pbkZhbnNUZWFtTGlzdA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, pageNum, pageSize, nil]; +/// 获取粉丝团列表 +/// @param completion 完成 +/// @param pageNum 当前页数 +/// @param pageSize 一页多少个 ++ (void)getAnchorFansTeamListCompletion:(HttpRequestHelperCompletion)completion pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize { + NSString * fang = [NSString stringFromBase64String:@"YW5jaG9yRmFuc1RlYW0vZ2V0Sm9pbkZhbnNUZWFtTGlzdA=="];///anchorFansTeam/getJoinFansTeamList + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, pageNum, pageSize, nil]; } -+ (void)acquireConsumerPresentRampartowards:(HttpRequestHelperCompletion)comletion uid:(NSString *)uid giftType:(NSString *)giftType { - NSString * fang = [NSString stringFromBase64String:@"Z2lmdHdhbGwvZ2V0QnlHaWZ0VHlwZQ=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:comletion, __FUNCTION__, uid, giftType, nil]; +/// 获取用户的礼物墙 +/// @param comletion 完成 +/// @param uid 用户的uid +/// @param giftType 类型2 ++ (void)getUserGiftWall:(HttpRequestHelperCompletion)comletion uid:(NSString *)uid giftType:(NSString *)giftType { + NSString * fang = [NSString stringFromBase64String:@"Z2lmdHdhbGwvZ2V0QnlHaWZ0VHlwZQ=="];///giftwall/getByGiftType + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:comletion, __FUNCTION__, uid, giftType, nil]; } -+ (void)acquireConsumersSttowardsementAbstract:(HttpRequestHelperCompletion)completion uids:(NSString *)uids { - NSString * fang = [NSString stringFromBase64String:@"dXNlci9saXN0"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uids, nil]; +/// 批量获取用户信息 +/// @param completion 完成 +/// @param uids 用户的uid ++ (void)getUsersListInfo:(HttpRequestHelperCompletion)completion uids:(NSString *)uids { + NSString * fang = [NSString stringFromBase64String:@"dXNlci9saXN0"];///user/list + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uids, nil]; } -+ (void)requisitionTerminalImpression:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize { - NSString * fang = [NSString stringFromBase64String:@"dXNlcnJvb20vZ2V0SW5Sb29tUmVjb3Jk"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, page, pageSize, nil]; +/// 获取用户进房记录 +/// @param completion 完成 +/// @param uid 用户的uid ++ (void)requestFootPrint:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize { + NSString * fang = [NSString stringFromBase64String:@"dXNlcnJvb20vZ2V0SW5Sb29tUmVjb3Jk"];///userroom/getInRoomRecord + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, page, pageSize, nil]; } -+ (void)requisitionCleanTerminalImpression:(HttpRequestHelperCompletion)completion uid:(NSString *)uid roomUid:(NSString *)roomUid { - NSString * fang = [NSString stringFromBase64String:@"dXNlcnJvb20vZGVsZXRlSW5Sb29tUmVjb3Jk"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, roomUid, nil]; +/// 清除进房记录 +/// @param completion 完成 +/// @param uid 用户uid +/// @param roomUid 房间uid ++ (void)requestCleanFootPrint:(HttpRequestHelperCompletion)completion uid:(NSString *)uid roomUid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@"dXNlcnJvb20vZGVsZXRlSW5Sb29tUmVjb3Jk"];///userroom/deleteInRoomRecord + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, roomUid, nil]; } -+ (void)requisitionManeFlexibleDirectoryapttowardsionTraitCompetition:(HttpRequestHelperCompletion)completion uid:(NSString *)uid mgId:(NSString *)mgId { - NSString * fang = [NSString stringFromBase64String:@"aG9tZS9mYXN0UGlja1Yy"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, mgId, nil]; +/// 快捷进房 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param mgId 游戏id ++ (void)requestMineQuickMatchLittleGame:(HttpRequestHelperCompletion)completion uid:(NSString *)uid mgId:(NSString *)mgId { + NSString * fang = [NSString stringFromBase64String:@"aG9tZS9mYXN0UGlja1Yy"];///home/fastPickV2 + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, mgId, nil]; } -+ (void)requisitionManeAssembleChamberSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize roomType:(NSString *)roomType { - NSString * fang = [NSString stringFromBase64String:@"ZmFucy9mYW5zUm9vbUxpc3Q="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,uid , page, pageSize, roomType, nil]; +/// 请求收藏房间列表 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param page 当前页数 +/// @param pageSize 一页多少个 +/// @param roomType 类型:4:个播房;其他:派对房;不传:所有房间 ++ (void)requestMineCollectRoomList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize roomType:(NSString *)roomType { + NSString * fang = [NSString stringFromBase64String:@"ZmFucy9mYW5zUm9vbUxpc3Q="];///fans/fansRoomList + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,uid , page, pageSize, roomType, nil]; } -+ (void)requisitionEachoneHuntfor:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"ZXZlcnkvb25lL3NlYXJjaC9nZXRMaXN0"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil]; +/// 请求大家都在搜列表 +/// @param completion 完成 +/// @param uid uid ++ (void)requestEveryoneSearch:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"ZXZlcnkvb25lL3NlYXJjaC9nZXRMaXN0"];///every/one/search/getList + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil]; } -+ (void)requisitionFantowardsicsParty:(HttpRequestHelperCompletion)completion { - NSString * fang = [NSString stringFromBase64String:@"ZmFucy9mYW5zUGFydExpc3Q="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; +/// 获取好友派对列表 +/// @param completion 完成 ++ (void)requestFansParty:(HttpRequestHelperCompletion)completion { + NSString * fang = [NSString stringFromBase64String:@"ZmFucy9mYW5zUGFydExpc3Q="];///fans/fansPartList + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; } -+ (void)requisitionKellegDistinctionAbstract:(HttpRequestHelperCompletion)completion { - NSString * fang = [NSString stringFromBase64String:@"YW5jaG9yR3JhZGUvZ2V0"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, nil]; +/// 请求主播评级 +/// @param completion 完成 ++ (void)requestAnchorGradeInfo:(HttpRequestHelperCompletion)completion { + NSString * fang = [NSString stringFromBase64String:@"YW5jaG9yR3JhZGUvZ2V0"];///anchorGrade/get + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, nil]; } -+ (void)requisitionManeUnionSttowardsement:(HttpRequestHelperCompletion)completion { - NSString * fang = [NSString stringFromBase64String:@"Y2xhbi9saXN0"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; ++ (void)requestMineGuildList:(HttpRequestHelperCompletion)completion { + NSString * fang = [NSString stringFromBase64String:@"Y2xhbi9saXN0"];///clan/list + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; } -+ (void)requisitionManeChamberSttowardsement:(HttpRequestHelperCompletion)completion { - NSString * fang = [NSString stringFromBase64String:@"aGFsbC9saXN0"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; ++ (void)requestMineRoomList:(HttpRequestHelperCompletion)completion { + NSString * fang = [NSString stringFromBase64String:@"aGFsbC9saXN0"];///hall/list + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; } -+(void)demandCollectiveAbout:(HttpRequestHelperCompletion)completion uid:(NSString *)uid clanId:(NSString *)clanId { - NSString * fang = [NSString stringFromBase64String:@"Y2xhbi9hcHBseQ=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion,__FUNCTION__,uid, clanId, nil]; ++(void)applyClanWith:(HttpRequestHelperCompletion)completion uid:(NSString *)uid clanId:(NSString *)clanId { + NSString * fang = [NSString stringFromBase64String:@"Y2xhbi9hcHBseQ=="];///clan/apply + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion,__FUNCTION__,uid, clanId, nil]; } -+(void)acquireGoldSpecificsTowardsoloudspeaker:(HttpRequestHelperCompletion)completion startTime:(NSString *)startTime endTime:(NSString *)endTime{ - NSString * fang = [NSString stringFromBase64String:@"Y2xhbkdvbGRGbG93L2NsYW5Ub3RhbExpc3Q="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__,startTime,endTime, nil]; ++(void)getGoldDetailsData:(HttpRequestHelperCompletion)completion startTime:(NSString *)startTime endTime:(NSString *)endTime{ + NSString * fang = [NSString stringFromBase64String:@"Y2xhbkdvbGRGbG93L2NsYW5Ub3RhbExpc3Q="];///clanGoldFlow/clanTotalList + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__,startTime,endTime, nil]; } +/// 设置支付密码 重置支付密码 +/// @param completion 完成 +/// @param newPasswd 支付密码 +/// @param phone 手机号 -+ (void)setIntersectCiphercryptogram:(HttpRequestHelperCompletion)completion newPasswd:(NSString *)newPasswd uid:(NSString *)uid ticket:(NSString *)ticket { - NSString * fang = [NSString stringFromBase64String:@"dXNlci9wYXltZW50UGFzc3dkL3Jlc2V0"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, newPasswd,uid,ticket, nil]; +/// @param uid uid +/// @param ticket ticket ++ (void)setPayPassword:(HttpRequestHelperCompletion)completion newPasswd:(NSString *)newPasswd uid:(NSString *)uid ticket:(NSString *)ticket { + NSString * fang = [NSString stringFromBase64String:@"dXNlci9wYXltZW50UGFzc3dkL3Jlc2V0"];///user/paymentPasswd/reset + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, newPasswd,uid,ticket, nil]; } -+(void)requisitionQueryAboutChamberGenre:(HttpRequestHelperCompletion)completion{ - NSString * fang = [NSString stringFromBase64String:@"cHVyc2UvcXVlcnlXaXRoUm9vbVR5cGU="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; ++(void)requestQueryWithRoomType:(HttpRequestHelperCompletion)completion{ + NSString * fang = [NSString stringFromBase64String:@"cHVyc2UvcXVlcnlXaXRoUm9vbVR5cGU="];///purse/queryWithRoomType + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; } -+(void)requisitionReflectionRevenue:(HttpRequestHelperCompletion)completion{ - NSString * fang = [NSString stringFromBase64String:@"cHVyc2UvcXVlcnk="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; ++(void)requestRecordIncome:(HttpRequestHelperCompletion)completion{ + NSString * fang = [NSString stringFromBase64String:@"cHVyc2UvcXVlcnk="];///purse/query + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; } -+(void)acquireExdiversifictowardsionDiamondAbstractrmtowardsion:(HttpRequestHelperCompletion)completion{ - NSString * fang = [NSString stringFromBase64String:@"Z29sZEV4Y2hhbmdlRGlhbW9uZC9nZXRDb25maWc="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; ++(void)getExchangeDiamondInformation:(HttpRequestHelperCompletion)completion{ + NSString * fang = [NSString stringFromBase64String:@"Z29sZEV4Y2hhbmdlRGlhbW9uZC9nZXRDb25maWc="];///goldExchangeDiamond/getConfig + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; } -+(void)acknowledgementExdiversifictowardsionDiamond:(HttpRequestHelperCompletion)completion goldNum:(NSString *)goldNum diamondNum:(NSString *)diamondNum currency:(NSString *)currency{ - NSString * fang = [NSString stringFromBase64String:@"Z29sZEV4Y2hhbmdlRGlhbW9uZC9leGNoYW5nZQ=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion,__FUNCTION__,goldNum,diamondNum,currency, nil]; ++(void)confirmExchangeDiamond:(HttpRequestHelperCompletion)completion goldNum:(NSString *)goldNum diamondNum:(NSString *)diamondNum currency:(NSString *)currency{ + NSString * fang = [NSString stringFromBase64String:@"Z29sZEV4Y2hhbmdlRGlhbW9uZC9leGNoYW5nZQ=="];///goldExchangeDiamond/exchange + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion,__FUNCTION__,goldNum,diamondNum,currency, nil]; } @end diff --git a/YuMi/Modules/YMMine/Model/AnchorFansTeam/XPMineAnchorFansTeamModel.h b/YuMi/Modules/YMMine/Model/AnchorFansTeam/XPMineAnchorFansTeamModel.h new file mode 100644 index 00000000..218d5127 --- /dev/null +++ b/YuMi/Modules/YMMine/Model/AnchorFansTeam/XPMineAnchorFansTeamModel.h @@ -0,0 +1,27 @@ +// +// YMMineAnchorFansTeamModel.h +// YUMI +// +// Created by YUMI on 2022/4/8. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineAnchorFansTeamModel : NSObject + +///头像 +@property (nonatomic, copy) NSString *anchorAvatar; +///粉丝团id +@property (nonatomic, assign) NSInteger teamId; +///粉丝团uid +@property (nonatomic, assign) NSInteger teamUid; +///粉丝团名称 +@property (nonatomic, copy) NSString *anchorNick; +///粉丝团铭牌 +@property (nonatomic, copy) NSString *icon; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/AnchorFansTeam/XPMineAnchorFansTeamModel.m b/YuMi/Modules/YMMine/Model/AnchorFansTeam/XPMineAnchorFansTeamModel.m new file mode 100644 index 00000000..5abb8ae6 --- /dev/null +++ b/YuMi/Modules/YMMine/Model/AnchorFansTeam/XPMineAnchorFansTeamModel.m @@ -0,0 +1,12 @@ +// +// YMMineAnchorFansTeamModel.m +// YUMI +// +// Created by YUMI on 2022/4/8. +// + +#import "XPMineAnchorFansTeamModel.h" + +@implementation XPMineAnchorFansTeamModel + +@end diff --git a/YuMi/Modules/YMMine/Model/AnchorFansTeam/YUMIManeKellegFanaticsSquadMatrix.h b/YuMi/Modules/YMMine/Model/AnchorFansTeam/YUMIManeKellegFanaticsSquadMatrix.h deleted file mode 100644 index 6ed3b901..00000000 --- a/YuMi/Modules/YMMine/Model/AnchorFansTeam/YUMIManeKellegFanaticsSquadMatrix.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMMineAnchorFansTeamModel.h -// YUMI -// -// Created by YUMI on 2022/4/8. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeKellegFanaticsSquadMatrix : NSObject - -@property (nonatomic, copy) NSString *anchorAvatar; -@property (nonatomic, assign) NSInteger teamId; -@property (nonatomic, assign) NSInteger teamUid; -@property (nonatomic, copy) NSString *anchorNick; -@property (nonatomic, copy) NSString *icon; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/AnchorFansTeam/YUMIManeKellegFanaticsSquadMatrix.m b/YuMi/Modules/YMMine/Model/AnchorFansTeam/YUMIManeKellegFanaticsSquadMatrix.m deleted file mode 100644 index a1a6bd9b..00000000 --- a/YuMi/Modules/YMMine/Model/AnchorFansTeam/YUMIManeKellegFanaticsSquadMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMMineAnchorFansTeamModel.m -// YUMI -// -// Created by YUMI on 2022/4/8. -// - -#import "YUMIManeKellegFanaticsSquadMatrix.h" - -@implementation YUMIManeKellegFanaticsSquadMatrix - -@end diff --git a/YuMi/Modules/YMMine/Model/ExchangeAuthority/XPMineExchangeAuthorityModel.h b/YuMi/Modules/YMMine/Model/ExchangeAuthority/XPMineExchangeAuthorityModel.h new file mode 100644 index 00000000..f0239b0b --- /dev/null +++ b/YuMi/Modules/YMMine/Model/ExchangeAuthority/XPMineExchangeAuthorityModel.h @@ -0,0 +1,34 @@ +// +// XPMineExchangeAuthorityModel.h +// YuMi +// +// Created by YuMi on 2023/2/13. +// + +#import +#import "UserLevelVo.h" +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineExchangeAuthorityModel : NSObject +///用户id +@property (nonatomic,copy) NSString *uid; +///头像 +@property (nonatomic,copy) NSString *avatar; +///成员平台号 +@property (nonatomic,assign) NSInteger erbanNo; +///兑换权限 0=关闭,1=开启 +@property (nonatomic,assign) BOOL exchangeAuthStatus; +///性别 +@property (nonatomic,assign) GenderType gender; +///金币数量 +@property (nonatomic,assign) double golds; +///所属公会名称 +@property (nonatomic,copy) NSString *hallName; +///昵称 +@property (nonatomic,copy) NSString *nick; +///用户等级 +@property (nonatomic , strong) UserLevelVo * userLevelVo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/ExchangeAuthority/XPMineExchangeAuthorityModel.m b/YuMi/Modules/YMMine/Model/ExchangeAuthority/XPMineExchangeAuthorityModel.m new file mode 100644 index 00000000..0a3f45ad --- /dev/null +++ b/YuMi/Modules/YMMine/Model/ExchangeAuthority/XPMineExchangeAuthorityModel.m @@ -0,0 +1,12 @@ +// +// XPMineExchangeAuthorityModel.m +// YuMi +// +// Created by YuMi on 2023/2/13. +// + +#import "XPMineExchangeAuthorityModel.h" + +@implementation XPMineExchangeAuthorityModel + +@end diff --git a/YuMi/Modules/YMMine/Model/ExchangeAuthority/YUMIManeExchangeAuthorityMatrix.h b/YuMi/Modules/YMMine/Model/ExchangeAuthority/YUMIManeExchangeAuthorityMatrix.h deleted file mode 100644 index cbad4208..00000000 --- a/YuMi/Modules/YMMine/Model/ExchangeAuthority/YUMIManeExchangeAuthorityMatrix.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YUMIManeExchangeAuthorityMatrix.h -// YuMi -// -// Created by YuMi on 2023/2/13. -// - -#import -#import "ConsumerPrototypeVo.h" -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeExchangeAuthorityMatrix : NSObject -@property (nonatomic,copy) NSString *uid; -@property (nonatomic,copy) NSString *avatar; -@property (nonatomic,assign) NSInteger erbanNo; -@property (nonatomic,assign) BOOL exchangeAuthStatus; -@property (nonatomic,assign) GenderGenre gender; -@property (nonatomic,assign) double golds; -@property (nonatomic,copy) NSString *hallName; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic , strong) ConsumerPrototypeVo * userLevelVo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/ExchangeAuthority/YUMIManeExchangeAuthorityMatrix.m b/YuMi/Modules/YMMine/Model/ExchangeAuthority/YUMIManeExchangeAuthorityMatrix.m deleted file mode 100644 index d6c3f325..00000000 --- a/YuMi/Modules/YMMine/Model/ExchangeAuthority/YUMIManeExchangeAuthorityMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YUMIManeExchangeAuthorityMatrix.m -// YuMi -// -// Created by YuMi on 2023/2/13. -// - -#import "YUMIManeExchangeAuthorityMatrix.h" - -@implementation YUMIManeExchangeAuthorityMatrix - -@end diff --git a/YuMi/Modules/YMMine/Model/FootPrint/XPMineFootPrintModel.h b/YuMi/Modules/YMMine/Model/FootPrint/XPMineFootPrintModel.h new file mode 100644 index 00000000..7ba37096 --- /dev/null +++ b/YuMi/Modules/YMMine/Model/FootPrint/XPMineFootPrintModel.h @@ -0,0 +1,24 @@ +// +// YMMineFootPrintModel.h +// YUMI +// +// Created by YUMI on 2022/7/26. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineFootPrintModel : NSObject + +@property (nonatomic, copy) NSString *roomUid;//房间uid +@property (nonatomic, copy) NSString *roomId;//房间id +@property (nonatomic, copy) NSString *title;//房间名称 +@property (nonatomic, copy) NSString *avatar;//房间头像 +@property (nonatomic, assign) BOOL valid;//开房状态 +@property (nonatomic, assign) long long erbanNo; +@property (nonatomic, assign) long long updateTime; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/FootPrint/XPMineFootPrintModel.m b/YuMi/Modules/YMMine/Model/FootPrint/XPMineFootPrintModel.m new file mode 100644 index 00000000..ac927640 --- /dev/null +++ b/YuMi/Modules/YMMine/Model/FootPrint/XPMineFootPrintModel.m @@ -0,0 +1,12 @@ +// +// YMMineFootPrintModel.m +// YUMI +// +// Created by YUMI on 2022/7/26. +// + +#import "XPMineFootPrintModel.h" + +@implementation XPMineFootPrintModel + +@end diff --git a/YuMi/Modules/YMMine/Model/FootPrint/YUMIManeTerminalImpressionMatrix.h b/YuMi/Modules/YMMine/Model/FootPrint/YUMIManeTerminalImpressionMatrix.h deleted file mode 100644 index bdd8963a..00000000 --- a/YuMi/Modules/YMMine/Model/FootPrint/YUMIManeTerminalImpressionMatrix.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YMMineFootPrintModel.h -// YUMI -// -// Created by YUMI on 2022/7/26. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeTerminalImpressionMatrix : NSObject - -@property (nonatomic, copy) NSString *roomUid; -@property (nonatomic, copy) NSString *roomId; -@property (nonatomic, copy) NSString *title; -@property (nonatomic, copy) NSString *avatar; -@property (nonatomic, assign) BOOL valid; -@property (nonatomic, assign) long long erbanNo; -@property (nonatomic, assign) long long updateTime; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/FootPrint/YUMIManeTerminalImpressionMatrix.m b/YuMi/Modules/YMMine/Model/FootPrint/YUMIManeTerminalImpressionMatrix.m deleted file mode 100644 index 7c808541..00000000 --- a/YuMi/Modules/YMMine/Model/FootPrint/YUMIManeTerminalImpressionMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMMineFootPrintModel.m -// YUMI -// -// Created by YUMI on 2022/7/26. -// - -#import "YUMIManeTerminalImpressionMatrix.h" - -@implementation YUMIManeTerminalImpressionMatrix - -@end diff --git a/YuMi/Modules/YMMine/Model/Friend/FanaticsAbstractMatrix.h b/YuMi/Modules/YMMine/Model/Friend/FanaticsAbstractMatrix.h deleted file mode 100644 index fed9aa2f..00000000 --- a/YuMi/Modules/YMMine/Model/Friend/FanaticsAbstractMatrix.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// FanaticsAbstractMatrix.h -// YUMI -// -// Created by YUMI on 2021/12/21. -// - -#import -#import "YUMINNNN.h" -#import "ConsumerVipAbstractVo.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface FanaticsAbstractMatrix : NSObject -@property (nonatomic,copy) NSString *avatar; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,copy) NSString *uid; -@property (nonatomic,assign) GenderGenre gender; -@property (nonatomic,assign) NSInteger defUser; -@property (nonatomic,copy) NSString *charmUrl; -@property (nonatomic,copy) NSString *experUrl; -@property (nonatomic,copy) NSString *userDesc; -@property (nonatomic,assign) BOOL valid; -@property (nonatomic,copy) NSString *userInRoomUid; -@property (nonatomic, strong) ConsumerVipAbstractVo *userVipInfoVO; -@property (nonatomic,assign) ContactUseingGenre useingType; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/Friend/FanaticsAbstractMatrix.m b/YuMi/Modules/YMMine/Model/Friend/FanaticsAbstractMatrix.m deleted file mode 100644 index 9bb7d90e..00000000 --- a/YuMi/Modules/YMMine/Model/Friend/FanaticsAbstractMatrix.m +++ /dev/null @@ -1,19 +0,0 @@ -// -// FanaticsAbstractMatrix.m -// YUMI -// -// Created by YUMI on 2021/12/21. -// - -#import "FanaticsAbstractMatrix.h" - -@implementation FanaticsAbstractMatrix - -+ (NSDictionary *)replacedDigitalByvirtueofMaintainertyConstitute { - return @{@"experUrl":@"userLevelVo.experUrl", - @"charmUrl":@"userLevelVo.charmUrl", - @"userInRoomUid": @"userInRoom.uid" - }; -} - -@end diff --git a/YuMi/Modules/YMMine/Model/Friend/FansInfoModel.h b/YuMi/Modules/YMMine/Model/Friend/FansInfoModel.h new file mode 100644 index 00000000..88ac9413 --- /dev/null +++ b/YuMi/Modules/YMMine/Model/Friend/FansInfoModel.h @@ -0,0 +1,42 @@ +// +// FansInfoModel.h +// YUMI +// +// Created by YUMI on 2021/12/21. +// + +#import +#import "YUMINNNN.h" +#import "UserVipInfoVo.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FansInfoModel : NSObject +///头像 +@property (nonatomic,copy) NSString *avatar; +///姓名 +@property (nonatomic,copy) NSString *nick; +///uid +@property (nonatomic,copy) NSString *uid; +///性别 +@property (nonatomic,assign) GenderType gender; +///类型 +@property (nonatomic,assign) NSInteger defUser; +///魅力等级 +@property (nonatomic,copy) NSString *charmUrl; +///等级 +@property (nonatomic,copy) NSString *experUrl; +///签名 +@property (nonatomic,copy) NSString *userDesc; +///是否有效 +@property (nonatomic,assign) BOOL valid; +///当前用户所在的房间 映射的字段 +@property (nonatomic,copy) NSString *userInRoomUid; +///贵族信息 +@property (nonatomic, strong) UserVipInfoVo *userVipInfoVO; +///是否在房间中 本地字段 +@property (nonatomic,assign) ContactUseingType useingType; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/Friend/FansInfoModel.m b/YuMi/Modules/YMMine/Model/Friend/FansInfoModel.m new file mode 100644 index 00000000..ee52f1a9 --- /dev/null +++ b/YuMi/Modules/YMMine/Model/Friend/FansInfoModel.m @@ -0,0 +1,20 @@ +// +// FansInfoModel.m +// YUMI +// +// Created by YUMI on 2021/12/21. +// + +#import "FansInfoModel.h" + +@implementation FansInfoModel + +///如果一个模型中需要字段映射的话 比如id -> ID name -> other.name ++ (NSDictionary *)replacedKeyFromPropertyName { + return @{@"experUrl":@"userLevelVo.experUrl", + @"charmUrl":@"userLevelVo.charmUrl", + @"userInRoomUid": @"userInRoom.uid" + }; +} + +@end diff --git a/YuMi/Modules/YMMine/Model/Recharge/RamparatetAbstractMatrix.h b/YuMi/Modules/YMMine/Model/Recharge/RamparatetAbstractMatrix.h deleted file mode 100644 index e7687f2b..00000000 --- a/YuMi/Modules/YMMine/Model/Recharge/RamparatetAbstractMatrix.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// WalletBalanceInfoModel.h -// YUMI -// -// Created by YUMI on 2021/9/26. -// - -#import "NSObject+MJExtension.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface RamparatetAbstractMatrix : NSObject -@property(nonatomic, assign) NSInteger uid; -@property(nonatomic, copy)NSString *goldNum; -@property(nonatomic, copy)NSString *diamonds; - -@property(nonatomic, copy)NSString *chargeGoldNum; - -@property(nonatomic, assign)NSInteger amount; -@property(nonatomic, assign) double diamondNum; - -@property(nonatomic, copy)NSString *depositNum; -@property (nonatomic, assign) BOOL sendGold; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/Recharge/RamparatetAbstractMatrix.m b/YuMi/Modules/YMMine/Model/Recharge/RamparatetAbstractMatrix.m deleted file mode 100644 index 95e6c3bf..00000000 --- a/YuMi/Modules/YMMine/Model/Recharge/RamparatetAbstractMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// WalletBalanceInfoModel.m -// YUMI -// -// Created by YUMI on 2021/9/26. -// - -#import "RamparatetAbstractMatrix.h" - -@implementation RamparatetAbstractMatrix - -@end diff --git a/YuMi/Modules/YMMine/Model/Recharge/RechargeListModel.h b/YuMi/Modules/YMMine/Model/Recharge/RechargeListModel.h new file mode 100644 index 00000000..4d9f69b7 --- /dev/null +++ b/YuMi/Modules/YMMine/Model/Recharge/RechargeListModel.h @@ -0,0 +1,22 @@ +// +// RechargeListModel.h +// YUMI +// +// Created by YUMI on 2021/9/24. +// + +#import "NSObject+MJExtension.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RechargeListModel : NSObject +///充值的id +@property(nonatomic, strong) NSString *chargeProdId; +@property(nonatomic, strong) NSString *prodName; +@property (copy, nonatomic) NSString *prodDesc; +@property(nonatomic, strong) NSNumber *money; +@property(nonatomic, strong) NSNumber *giftGoldNum; +@property(nonatomic, strong) NSString *channel; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/Recharge/RechargeListModel.m b/YuMi/Modules/YMMine/Model/Recharge/RechargeListModel.m new file mode 100644 index 00000000..c5ad9416 --- /dev/null +++ b/YuMi/Modules/YMMine/Model/Recharge/RechargeListModel.m @@ -0,0 +1,12 @@ +// +// RechargeListModel.m +// YUMI +// +// Created by YUMI on 2021/9/24. +// + +#import "RechargeListModel.h" + +@implementation RechargeListModel + +@end diff --git a/YuMi/Modules/YMMine/Model/Recharge/ReindictStatementMatrix.h b/YuMi/Modules/YMMine/Model/Recharge/ReindictStatementMatrix.h deleted file mode 100644 index 4fdbe4b9..00000000 --- a/YuMi/Modules/YMMine/Model/Recharge/ReindictStatementMatrix.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// ReindictStatementMatrix.h -// YUMI -// -// Created by YUMI on 2021/9/24. -// - -#import "NSObject+MJExtension.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface ReindictStatementMatrix : NSObject -@property(nonatomic, strong) NSString *chargeProdId; -@property(nonatomic, strong) NSString *prodName; -@property (copy, nonatomic) NSString *prodDesc; -@property(nonatomic, strong) NSNumber *money; -@property(nonatomic, strong) NSNumber *giftGoldNum; -@property(nonatomic, strong) NSString *channel; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/Recharge/ReindictStatementMatrix.m b/YuMi/Modules/YMMine/Model/Recharge/ReindictStatementMatrix.m deleted file mode 100644 index 2e22a9ae..00000000 --- a/YuMi/Modules/YMMine/Model/Recharge/ReindictStatementMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ReindictStatementMatrix.m -// YUMI -// -// Created by YUMI on 2021/9/24. -// - -#import "ReindictStatementMatrix.h" - -@implementation ReindictStatementMatrix - -@end diff --git a/YuMi/Modules/YMMine/Model/Recharge/WalletInfoModel.h b/YuMi/Modules/YMMine/Model/Recharge/WalletInfoModel.h new file mode 100644 index 00000000..5c5144ac --- /dev/null +++ b/YuMi/Modules/YMMine/Model/Recharge/WalletInfoModel.h @@ -0,0 +1,31 @@ +// +// WalletBalanceInfoModel.h +// YUMI +// +// Created by YUMI on 2021/9/26. +// + +#import "NSObject+MJExtension.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface WalletInfoModel : NSObject +/// 用户 uid +@property(nonatomic, assign) NSInteger uid; +/// 钻石数量 +@property(nonatomic, copy)NSString *goldNum; +//钻石数量 +@property(nonatomic, copy)NSString *diamonds; + +@property(nonatomic, copy)NSString *chargeGoldNum; + +@property(nonatomic, assign)NSInteger amount; +/// 钻石数量 +@property(nonatomic, assign) double diamondNum; + +@property(nonatomic, copy)NSString *depositNum; +/// 是否有钻石转增功能 +@property (nonatomic, assign) BOOL sendGold; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/Recharge/WalletInfoModel.m b/YuMi/Modules/YMMine/Model/Recharge/WalletInfoModel.m new file mode 100644 index 00000000..8b5bcb0c --- /dev/null +++ b/YuMi/Modules/YMMine/Model/Recharge/WalletInfoModel.m @@ -0,0 +1,12 @@ +// +// WalletBalanceInfoModel.m +// YUMI +// +// Created by YUMI on 2021/9/26. +// + +#import "WalletInfoModel.h" + +@implementation WalletInfoModel + +@end diff --git a/YuMi/Modules/YMMine/Model/RecordIncome/XPBindExtractInfoModel.h b/YuMi/Modules/YMMine/Model/RecordIncome/XPBindExtractInfoModel.h new file mode 100644 index 00000000..40014bc6 --- /dev/null +++ b/YuMi/Modules/YMMine/Model/RecordIncome/XPBindExtractInfoModel.h @@ -0,0 +1,37 @@ +// +// XPBindExtractInfoModel.h +// YuMi +// +// Created by YuMi on 2022/11/18. +// + +#import +#import "XPWithdrawAccountModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPBindExtractInfoModel : NSObject +///提現信息 +@property (nonatomic,strong) XPWithdrawAccountModel *account; +//钱包当前金币数 +@property (nonatomic,assign) double golds; +//周剩余次数 +@property (nonatomic,assign) NSInteger remainTimes; +//手续费 +@property (nonatomic,assign) double fee; +@property (nonatomic,assign) NSInteger minGolds; +@property (nonatomic,assign) NSInteger maxGolds; +//有没有密码 +@property (nonatomic,assign) BOOL hasPayPwd; +@end + + + + + + + + + + + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/RecordIncome/XPBindExtractInfoModel.m b/YuMi/Modules/YMMine/Model/RecordIncome/XPBindExtractInfoModel.m new file mode 100644 index 00000000..beb93d6f --- /dev/null +++ b/YuMi/Modules/YMMine/Model/RecordIncome/XPBindExtractInfoModel.m @@ -0,0 +1,14 @@ +// +// XPBindExtractInfoModel.m +// YuMi +// +// Created by YuMi on 2022/11/18. +// + +#import "XPBindExtractInfoModel.h" + +@implementation XPBindExtractInfoModel + +@end + + diff --git a/YuMi/Modules/YMMine/Model/RecordIncome/XPExchangeDiamondsModel.h b/YuMi/Modules/YMMine/Model/RecordIncome/XPExchangeDiamondsModel.h new file mode 100644 index 00000000..0a15d6ae --- /dev/null +++ b/YuMi/Modules/YMMine/Model/RecordIncome/XPExchangeDiamondsModel.h @@ -0,0 +1,20 @@ +// +// XPExchangeDiamondsModel.h +// YuMi +// +// Created by YuMi on 2022/11/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPExchangeDiamondsModel : NSObject +@property (nonatomic,assign) double diamonds;//当前钱包 +@property (nonatomic,assign) double golds;//当前钱包 +@property (nonatomic,assign) double rate;//比率 +@property (nonatomic,assign) NSInteger maxDiamonds; +@property (nonatomic,assign) NSInteger minDiamonds; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/RecordIncome/XPExchangeDiamondsModel.m b/YuMi/Modules/YMMine/Model/RecordIncome/XPExchangeDiamondsModel.m new file mode 100644 index 00000000..2a63cbf9 --- /dev/null +++ b/YuMi/Modules/YMMine/Model/RecordIncome/XPExchangeDiamondsModel.m @@ -0,0 +1,12 @@ +// +// XPExchangeDiamondsModel.m +// YuMi +// +// Created by YuMi on 2022/11/17. +// + +#import "XPExchangeDiamondsModel.h" + +@implementation XPExchangeDiamondsModel + +@end diff --git a/YuMi/Modules/YMMine/Model/RecordIncome/XPIncomeRecordGoldDetailsModel.h b/YuMi/Modules/YMMine/Model/RecordIncome/XPIncomeRecordGoldDetailsModel.h new file mode 100644 index 00000000..e3b60f14 --- /dev/null +++ b/YuMi/Modules/YMMine/Model/RecordIncome/XPIncomeRecordGoldDetailsModel.h @@ -0,0 +1,41 @@ +// +// XPIncomeRecordGoldDetailsModel.h +// YuMi +// +// Created by YuMi on 2022/11/24. +// + +#import +@class XPIncomeRecordGoldDetailItemModel; +NS_ASSUME_NONNULL_BEGIN + +@interface XPIncomeRecordGoldDetailsModel : NSObject +@property (nonatomic,copy) NSString *total; +@property (nonatomic,copy) NSString *totalRemainGolds; +@property (nonatomic,copy) NSString *totalEarnGolds; +@property (nonatomic,copy) NSString *totalGiftGolds; +@property (nonatomic,copy) NSString *totalExchangeGolds; +@property (nonatomic,copy) NSDictionary *hallMemberMap; +@property (nonatomic,copy) NSArray *hallVoList; +@property (nonatomic,copy) NSArray *hallMember; +@end + +NS_ASSUME_NONNULL_END + + +@interface XPIncomeRecordGoldDetailItemModel : NSObject + +@property (nonatomic,copy) NSString *uid; +@property (nonatomic,copy) NSString *nick;//昵称 +@property (nonatomic,copy) NSString *avatar;//头像 +@property (nonatomic,copy) NSString *giftDiamonds;//钻石 +@property (nonatomic,copy) NSString *exchangeGolds;//已兑换金币 +@property (nonatomic,copy) NSString *giftGolds;//兑换金币数 +@property (nonatomic,copy) NSString *remainGolds;//结算金币数 +@property (nonatomic,copy) NSString *hallId; +@property (nonatomic,copy) NSString *hallOwnerUid; +@property (nonatomic,copy) NSString *hallAvatar;//房间头像 +@property (nonatomic,copy) NSString *hallName;//房间名 +@property (nonatomic,copy) NSString *ownerAvatar; + +@end diff --git a/YuMi/Modules/YMMine/Model/RecordIncome/XPIncomeRecordGoldDetailsModel.m b/YuMi/Modules/YMMine/Model/RecordIncome/XPIncomeRecordGoldDetailsModel.m new file mode 100644 index 00000000..b652af1d --- /dev/null +++ b/YuMi/Modules/YMMine/Model/RecordIncome/XPIncomeRecordGoldDetailsModel.m @@ -0,0 +1,23 @@ +// +// XPIncomeRecordGoldDetailsModel.m +// YuMi +// +// Created by YuMi on 2022/11/24. +// + +#import "XPIncomeRecordGoldDetailsModel.h" + +@implementation XPIncomeRecordGoldDetailsModel ++ (NSDictionary *)objectClassInArray { + return @{ + @"hallVoList":XPIncomeRecordGoldDetailItemModel.class, + @"hallMember":XPIncomeRecordGoldDetailItemModel.class + }; +} +@end + + +@implementation XPIncomeRecordGoldDetailItemModel + + +@end diff --git a/YuMi/Modules/YMMine/Model/RecordIncome/XPIncomeRecordModel.h b/YuMi/Modules/YMMine/Model/RecordIncome/XPIncomeRecordModel.h new file mode 100644 index 00000000..04e2190b --- /dev/null +++ b/YuMi/Modules/YMMine/Model/RecordIncome/XPIncomeRecordModel.h @@ -0,0 +1,24 @@ +// +// XPIncomeRecordModel.h +// YuMi +// +// Created by YuMi on 2022/11/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPIncomeRecordModel : NSObject +@property (nonatomic,copy) NSString *uid; +@property (nonatomic,assign) double diamonds; +@property (nonatomic,assign) double crystals; +@property (nonatomic,assign) double golds; +@property (nonatomic,assign) BOOL isClan; +/// +@property (nonatomic,assign) NSInteger roomType; +/// +@property (nonatomic,assign) BOOL hasGoldExchangeAuth; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/RecordIncome/XPIncomeRecordModel.m b/YuMi/Modules/YMMine/Model/RecordIncome/XPIncomeRecordModel.m new file mode 100644 index 00000000..ab839b2a --- /dev/null +++ b/YuMi/Modules/YMMine/Model/RecordIncome/XPIncomeRecordModel.m @@ -0,0 +1,12 @@ +// +// XPIncomeRecordModel.m +// YuMi +// +// Created by YuMi on 2022/11/17. +// + +#import "XPIncomeRecordModel.h" + +@implementation XPIncomeRecordModel + +@end diff --git a/YuMi/Modules/YMMine/Model/RecordIncome/XPWithdrawAccountModel.h b/YuMi/Modules/YMMine/Model/RecordIncome/XPWithdrawAccountModel.h new file mode 100644 index 00000000..05e39222 --- /dev/null +++ b/YuMi/Modules/YMMine/Model/RecordIncome/XPWithdrawAccountModel.h @@ -0,0 +1,24 @@ +// +// XPWithdrawAccountModel.h +// YuMi +// +// Created by YuMi on 2022/11/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPWithdrawAccountModel : NSObject +@property (nonatomic,copy) NSString *uid; +@property (nonatomic,copy) NSString *swift; +@property (nonatomic,copy) NSString *bankName; +@property (nonatomic,copy) NSString *accountNumber; +@property (nonatomic,copy) NSString *accountName; +@property (nonatomic,copy) NSString *address; +@property (nonatomic,copy) NSString *city; +@property (nonatomic,copy) NSString *province; +@property (nonatomic,copy) NSString *postCode; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/RecordIncome/XPWithdrawAccountModel.m b/YuMi/Modules/YMMine/Model/RecordIncome/XPWithdrawAccountModel.m new file mode 100644 index 00000000..f65b5584 --- /dev/null +++ b/YuMi/Modules/YMMine/Model/RecordIncome/XPWithdrawAccountModel.m @@ -0,0 +1,12 @@ +// +// XPWithdrawAccountModel.m +// YuMi +// +// Created by YuMi on 2022/11/18. +// + +#import "XPWithdrawAccountModel.h" + +@implementation XPWithdrawAccountModel + +@end diff --git a/YuMi/Modules/YMMine/Model/RecordIncome/YUMIDilemmaExtractAbstractMatrix.h b/YuMi/Modules/YMMine/Model/RecordIncome/YUMIDilemmaExtractAbstractMatrix.h deleted file mode 100644 index ba77bb25..00000000 --- a/YuMi/Modules/YMMine/Model/RecordIncome/YUMIDilemmaExtractAbstractMatrix.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// YUMIDilemmaExtractAbstractMatrix.h -// YuMi -// -// Created by YuMi on 2022/11/18. -// - -#import -#import "YUMIWithdrawAccountMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIDilemmaExtractAbstractMatrix : NSObject -@property (nonatomic,strong) YUMIWithdrawAccountMatrix *account; -@property (nonatomic,assign) double golds; -@property (nonatomic,assign) NSInteger remainTimes; -@property (nonatomic,assign) double fee; -@property (nonatomic,assign) NSInteger minGolds; -@property (nonatomic,assign) NSInteger maxGolds; -@property (nonatomic,assign) BOOL hasPayPwd; -@end - - - - - - - - - - - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/RecordIncome/YUMIDilemmaExtractAbstractMatrix.m b/YuMi/Modules/YMMine/Model/RecordIncome/YUMIDilemmaExtractAbstractMatrix.m deleted file mode 100644 index 9be7f2db..00000000 --- a/YuMi/Modules/YMMine/Model/RecordIncome/YUMIDilemmaExtractAbstractMatrix.m +++ /dev/null @@ -1,14 +0,0 @@ -// -// YUMIDilemmaExtractAbstractMatrix.m -// YuMi -// -// Created by YuMi on 2022/11/18. -// - -#import "YUMIDilemmaExtractAbstractMatrix.h" - -@implementation YUMIDilemmaExtractAbstractMatrix - -@end - - diff --git a/YuMi/Modules/YMMine/Model/RecordIncome/YUMIExchangeDiamondsMatrix.h b/YuMi/Modules/YMMine/Model/RecordIncome/YUMIExchangeDiamondsMatrix.h deleted file mode 100644 index 66040ddf..00000000 --- a/YuMi/Modules/YMMine/Model/RecordIncome/YUMIExchangeDiamondsMatrix.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YUMIExchangeDiamondsMatrix.h -// YuMi -// -// Created by YuMi on 2022/11/17. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIExchangeDiamondsMatrix : NSObject -@property (nonatomic,assign) double diamonds; -@property (nonatomic,assign) double golds; -@property (nonatomic,assign) double rate; -@property (nonatomic,assign) NSInteger maxDiamonds; -@property (nonatomic,assign) NSInteger minDiamonds; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/RecordIncome/YUMIExchangeDiamondsMatrix.m b/YuMi/Modules/YMMine/Model/RecordIncome/YUMIExchangeDiamondsMatrix.m deleted file mode 100644 index d204dc14..00000000 --- a/YuMi/Modules/YMMine/Model/RecordIncome/YUMIExchangeDiamondsMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YUMIExchangeDiamondsMatrix.m -// YuMi -// -// Created by YuMi on 2022/11/17. -// - -#import "YUMIExchangeDiamondsMatrix.h" - -@implementation YUMIExchangeDiamondsMatrix - -@end diff --git a/YuMi/Modules/YMMine/Model/RecordIncome/YUMIRevenueReflectionGoldSpecificsMatrix.h b/YuMi/Modules/YMMine/Model/RecordIncome/YUMIRevenueReflectionGoldSpecificsMatrix.h deleted file mode 100644 index 9cad8ffe..00000000 --- a/YuMi/Modules/YMMine/Model/RecordIncome/YUMIRevenueReflectionGoldSpecificsMatrix.h +++ /dev/null @@ -1,41 +0,0 @@ -// -// YUMIRevenueReflectionGoldSpecificsMatrix.h -// YuMi -// -// Created by YuMi on 2022/11/24. -// - -#import -@class YUMIRevenueReflectionGoldSpecificProvisionMatrix; -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIRevenueReflectionGoldSpecificsMatrix : NSObject -@property (nonatomic,copy) NSString *total; -@property (nonatomic,copy) NSString *totalRemainGolds; -@property (nonatomic,copy) NSString *totalEarnGolds; -@property (nonatomic,copy) NSString *totalGiftGolds; -@property (nonatomic,copy) NSString *totalExchangeGolds; -@property (nonatomic,copy) NSDictionary *hallMemberMap; -@property (nonatomic,copy) NSArray *hallVoList; -@property (nonatomic,copy) NSArray *hallMember; -@end - -NS_ASSUME_NONNULL_END - - -@interface YUMIRevenueReflectionGoldSpecificProvisionMatrix : NSObject - -@property (nonatomic,copy) NSString *uid; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,copy) NSString *avatar; -@property (nonatomic,copy) NSString *giftDiamonds; -@property (nonatomic,copy) NSString *exchangeGolds; -@property (nonatomic,copy) NSString *giftGolds; -@property (nonatomic,copy) NSString *remainGolds; -@property (nonatomic,copy) NSString *hallId; -@property (nonatomic,copy) NSString *hallOwnerUid; -@property (nonatomic,copy) NSString *hallAvatar; -@property (nonatomic,copy) NSString *hallName; -@property (nonatomic,copy) NSString *ownerAvatar; - -@end diff --git a/YuMi/Modules/YMMine/Model/RecordIncome/YUMIRevenueReflectionGoldSpecificsMatrix.m b/YuMi/Modules/YMMine/Model/RecordIncome/YUMIRevenueReflectionGoldSpecificsMatrix.m deleted file mode 100644 index 8fcb1bfe..00000000 --- a/YuMi/Modules/YMMine/Model/RecordIncome/YUMIRevenueReflectionGoldSpecificsMatrix.m +++ /dev/null @@ -1,23 +0,0 @@ -// -// YUMIRevenueReflectionGoldSpecificsMatrix.m -// YuMi -// -// Created by YuMi on 2022/11/24. -// - -#import "YUMIRevenueReflectionGoldSpecificsMatrix.h" - -@implementation YUMIRevenueReflectionGoldSpecificsMatrix -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{ - @"hallVoList":YUMIRevenueReflectionGoldSpecificProvisionMatrix.class, - @"hallMember":YUMIRevenueReflectionGoldSpecificProvisionMatrix.class - }; -} -@end - - -@implementation YUMIRevenueReflectionGoldSpecificProvisionMatrix - - -@end diff --git a/YuMi/Modules/YMMine/Model/RecordIncome/YUMIRevenueReflectionMatrix.h b/YuMi/Modules/YMMine/Model/RecordIncome/YUMIRevenueReflectionMatrix.h deleted file mode 100644 index 28622034..00000000 --- a/YuMi/Modules/YMMine/Model/RecordIncome/YUMIRevenueReflectionMatrix.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YUMIRevenueReflectionMatrix.h -// YuMi -// -// Created by YuMi on 2022/11/17. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIRevenueReflectionMatrix : NSObject -@property (nonatomic,copy) NSString *uid; -@property (nonatomic,assign) double diamonds; -@property (nonatomic,assign) double crystals; -@property (nonatomic,assign) double golds; -@property (nonatomic,assign) BOOL isClan; -@property (nonatomic,assign) NSInteger roomType; -@property (nonatomic,assign) BOOL hasGoldExchangeAuth; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/RecordIncome/YUMIRevenueReflectionMatrix.m b/YuMi/Modules/YMMine/Model/RecordIncome/YUMIRevenueReflectionMatrix.m deleted file mode 100644 index 5f9f9f01..00000000 --- a/YuMi/Modules/YMMine/Model/RecordIncome/YUMIRevenueReflectionMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YUMIRevenueReflectionMatrix.m -// YuMi -// -// Created by YuMi on 2022/11/17. -// - -#import "YUMIRevenueReflectionMatrix.h" - -@implementation YUMIRevenueReflectionMatrix - -@end diff --git a/YuMi/Modules/YMMine/Model/RecordIncome/YUMIWithdrawAccountMatrix.h b/YuMi/Modules/YMMine/Model/RecordIncome/YUMIWithdrawAccountMatrix.h deleted file mode 100644 index 54320005..00000000 --- a/YuMi/Modules/YMMine/Model/RecordIncome/YUMIWithdrawAccountMatrix.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YUMIWithdrawAccountMatrix.h -// YuMi -// -// Created by YuMi on 2022/11/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIWithdrawAccountMatrix : NSObject -@property (nonatomic,copy) NSString *uid; -@property (nonatomic,copy) NSString *swift; -@property (nonatomic,copy) NSString *bankName; -@property (nonatomic,copy) NSString *accountNumber; -@property (nonatomic,copy) NSString *accountName; -@property (nonatomic,copy) NSString *address; -@property (nonatomic,copy) NSString *city; -@property (nonatomic,copy) NSString *province; -@property (nonatomic,copy) NSString *postCode; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/RecordIncome/YUMIWithdrawAccountMatrix.m b/YuMi/Modules/YMMine/Model/RecordIncome/YUMIWithdrawAccountMatrix.m deleted file mode 100644 index e1f22bb9..00000000 --- a/YuMi/Modules/YMMine/Model/RecordIncome/YUMIWithdrawAccountMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YUMIWithdrawAccountMatrix.m -// YuMi -// -// Created by YuMi on 2022/11/18. -// - -#import "YUMIWithdrawAccountMatrix.h" - -@implementation YUMIWithdrawAccountMatrix - -@end diff --git a/YuMi/Modules/YMMine/Model/UserInfo/ConsumerPresentRamparatAbstractMatrix.h b/YuMi/Modules/YMMine/Model/UserInfo/ConsumerPresentRamparatAbstractMatrix.h deleted file mode 100644 index 09016e02..00000000 --- a/YuMi/Modules/YMMine/Model/UserInfo/ConsumerPresentRamparatAbstractMatrix.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// ConsumerPresentRamparatAbstractMatrix.h -// YUMI -// -// Created by YUMI on 2022/4/14. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface ConsumerPresentRamparatAbstractMatrix : NSObject -@property (nonatomic,copy) NSString *uid; -@property (nonatomic,assign) NSInteger giftPrice; -@property (nonatomic,assign) NSInteger giftId; -@property (nonatomic,copy) NSString *giftName; -@property (nonatomic,copy) NSString *picUrl; -@property (nonatomic,assign) NSInteger reciveCount; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/UserInfo/ConsumerPresentRamparatAbstractMatrix.m b/YuMi/Modules/YMMine/Model/UserInfo/ConsumerPresentRamparatAbstractMatrix.m deleted file mode 100644 index e1acf12e..00000000 --- a/YuMi/Modules/YMMine/Model/UserInfo/ConsumerPresentRamparatAbstractMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ConsumerPresentRamparatAbstractMatrix.m -// YUMI -// -// Created by YUMI on 2022/4/14. -// - -#import "ConsumerPresentRamparatAbstractMatrix.h" - -@implementation ConsumerPresentRamparatAbstractMatrix - -@end diff --git a/YuMi/Modules/YMMine/Model/UserInfo/UserGiftWallInfoModel.h b/YuMi/Modules/YMMine/Model/UserInfo/UserGiftWallInfoModel.h new file mode 100644 index 00000000..fbce878b --- /dev/null +++ b/YuMi/Modules/YMMine/Model/UserInfo/UserGiftWallInfoModel.h @@ -0,0 +1,27 @@ +// +// UserGiftWallInfoModel.h +// YUMI +// +// Created by YUMI on 2022/4/14. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface UserGiftWallInfoModel : NSObject +///目标用户的uid +@property (nonatomic,copy) NSString *uid; +///价格 +@property (nonatomic,assign) NSInteger giftPrice; +///id +@property (nonatomic,assign) NSInteger giftId; +///名称 +@property (nonatomic,copy) NSString *giftName; +///礼物 +@property (nonatomic,copy) NSString *picUrl; +///个数 +@property (nonatomic,assign) NSInteger reciveCount; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/UserInfo/UserGiftWallInfoModel.m b/YuMi/Modules/YMMine/Model/UserInfo/UserGiftWallInfoModel.m new file mode 100644 index 00000000..e71a40bd --- /dev/null +++ b/YuMi/Modules/YMMine/Model/UserInfo/UserGiftWallInfoModel.m @@ -0,0 +1,12 @@ +// +// UserGiftWallInfoModel.m +// YUMI +// +// Created by YUMI on 2022/4/14. +// + +#import "UserGiftWallInfoModel.h" + +@implementation UserGiftWallInfoModel + +@end diff --git a/YuMi/Modules/YMMine/Model/Visitor/XPMineVisitorItemModel.h b/YuMi/Modules/YMMine/Model/Visitor/XPMineVisitorItemModel.h new file mode 100644 index 00000000..a528959d --- /dev/null +++ b/YuMi/Modules/YMMine/Model/Visitor/XPMineVisitorItemModel.h @@ -0,0 +1,23 @@ +// +// YMMineVisitorItemModel.h +// YUMI +// +// Created by YUMI on 2022/1/26. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineVisitorItemModel : NSObject + +@property (nonatomic, copy) NSString *avatar; +@property (nonatomic, assign) NSInteger erbanNo; +@property (nonatomic, assign) NSInteger gender; +@property (nonatomic, copy) NSString *nick; +@property (nonatomic, assign) long long uid; +@property (nonatomic, copy) NSString *visitTimeDesc; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/Visitor/XPMineVisitorItemModel.m b/YuMi/Modules/YMMine/Model/Visitor/XPMineVisitorItemModel.m new file mode 100644 index 00000000..8e082be7 --- /dev/null +++ b/YuMi/Modules/YMMine/Model/Visitor/XPMineVisitorItemModel.m @@ -0,0 +1,12 @@ +// +// YMMineVisitorItemModel.m +// YUMI +// +// Created by YUMI on 2022/1/26. +// + +#import "XPMineVisitorItemModel.h" + +@implementation XPMineVisitorItemModel + +@end diff --git a/YuMi/Modules/YMMine/Model/Visitor/XPMineVisitorUnReadModel.h b/YuMi/Modules/YMMine/Model/Visitor/XPMineVisitorUnReadModel.h new file mode 100644 index 00000000..f74df7c3 --- /dev/null +++ b/YuMi/Modules/YMMine/Model/Visitor/XPMineVisitorUnReadModel.h @@ -0,0 +1,18 @@ +// +// YMMineVisitorUnReadModel.h +// YUMI +// +// Created by YUMI on 2022/1/26. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineVisitorUnReadModel : NSObject + +@property (nonatomic, assign) NSInteger visitNum; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/Visitor/XPMineVisitorUnReadModel.m b/YuMi/Modules/YMMine/Model/Visitor/XPMineVisitorUnReadModel.m new file mode 100644 index 00000000..95c7187c --- /dev/null +++ b/YuMi/Modules/YMMine/Model/Visitor/XPMineVisitorUnReadModel.m @@ -0,0 +1,12 @@ +// +// YMMineVisitorUnReadModel.m +// YUMI +// +// Created by YUMI on 2022/1/26. +// + +#import "XPMineVisitorUnReadModel.h" + +@implementation XPMineVisitorUnReadModel + +@end diff --git a/YuMi/Modules/YMMine/Model/Visitor/YUMIManeVacationerProvisionMatrix.h b/YuMi/Modules/YMMine/Model/Visitor/YUMIManeVacationerProvisionMatrix.h deleted file mode 100644 index 16755bb1..00000000 --- a/YuMi/Modules/YMMine/Model/Visitor/YUMIManeVacationerProvisionMatrix.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMMineVisitorItemModel.h -// YUMI -// -// Created by YUMI on 2022/1/26. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeVacationerProvisionMatrix : NSObject - -@property (nonatomic, copy) NSString *avatar; -@property (nonatomic, assign) NSInteger erbanNo; -@property (nonatomic, assign) NSInteger gender; -@property (nonatomic, copy) NSString *nick; -@property (nonatomic, assign) long long uid; -@property (nonatomic, copy) NSString *visitTimeDesc; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/Visitor/YUMIManeVacationerProvisionMatrix.m b/YuMi/Modules/YMMine/Model/Visitor/YUMIManeVacationerProvisionMatrix.m deleted file mode 100644 index 58e5a897..00000000 --- a/YuMi/Modules/YMMine/Model/Visitor/YUMIManeVacationerProvisionMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMMineVisitorItemModel.m -// YUMI -// -// Created by YUMI on 2022/1/26. -// - -#import "YUMIManeVacationerProvisionMatrix.h" - -@implementation YUMIManeVacationerProvisionMatrix - -@end diff --git a/YuMi/Modules/YMMine/Model/Visitor/YUMIManeVacationerUnReadMatrix.h b/YuMi/Modules/YMMine/Model/Visitor/YUMIManeVacationerUnReadMatrix.h deleted file mode 100644 index 7ea5a551..00000000 --- a/YuMi/Modules/YMMine/Model/Visitor/YUMIManeVacationerUnReadMatrix.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMMineVisitorUnReadModel.h -// YUMI -// -// Created by YUMI on 2022/1/26. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeVacationerUnReadMatrix : NSObject - -@property (nonatomic, assign) NSInteger visitNum; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/Visitor/YUMIManeVacationerUnReadMatrix.m b/YuMi/Modules/YMMine/Model/Visitor/YUMIManeVacationerUnReadMatrix.m deleted file mode 100644 index edf6b768..00000000 --- a/YuMi/Modules/YMMine/Model/Visitor/YUMIManeVacationerUnReadMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMMineVisitorUnReadModel.m -// YUMI -// -// Created by YUMI on 2022/1/26. -// - -#import "YUMIManeVacationerUnReadMatrix.h" - -@implementation YUMIManeVacationerUnReadMatrix - -@end diff --git a/YuMi/Modules/YMMine/Model/XPMineFuntionItemModel.h b/YuMi/Modules/YMMine/Model/XPMineFuntionItemModel.h new file mode 100644 index 00000000..51904a2b --- /dev/null +++ b/YuMi/Modules/YMMine/Model/XPMineFuntionItemModel.h @@ -0,0 +1,25 @@ +// +// YMMineFuntionItemModel.h +// YUMI +// +// Created by YUMI on 2022/7/22. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineFuntionItemModel : NSObject + +@property (nonatomic, assign) NSInteger centerStatus; +@property (nonatomic, copy) NSString *centerPic; +@property (nonatomic, assign) NSInteger centerId; +@property (nonatomic, copy) NSString *centerBadge; +@property (nonatomic, assign) NSInteger skipType; +@property (nonatomic, assign) NSInteger centerSeq; +@property (nonatomic, copy) NSString *centerName; +@property (nonatomic, copy) NSString *centerUrl; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/XPMineFuntionItemModel.m b/YuMi/Modules/YMMine/Model/XPMineFuntionItemModel.m new file mode 100644 index 00000000..3b6cffb7 --- /dev/null +++ b/YuMi/Modules/YMMine/Model/XPMineFuntionItemModel.m @@ -0,0 +1,12 @@ +// +// YMMineFuntionItemModel.m +// YUMI +// +// Created by YUMI on 2022/7/22. +// + +#import "XPMineFuntionItemModel.h" + +@implementation XPMineFuntionItemModel + +@end diff --git a/YuMi/Modules/YMMine/Model/XPMineItemModel.h b/YuMi/Modules/YMMine/Model/XPMineItemModel.h new file mode 100644 index 00000000..792cfa97 --- /dev/null +++ b/YuMi/Modules/YMMine/Model/XPMineItemModel.h @@ -0,0 +1,54 @@ +// +// YMMineItemModel.h +// YUMI +// +// Created by YUMI on 2021/9/16. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(NSInteger, XPMineItemType) { + XPMineItemType_Match_Relevance_Account = 2, ///跳转url (关联账号,实名认证, 邀请好友) + XPMineItemType_Match_Apply_Record, ///报名记录 + XPMineItemType_Match_Bonus,///奖金 + XPMineItemType_Match_Standings, ///战绩 + XPMineItemType_Match_Card_Bag, ///卡包 + XPMineItemType_Match_Shopping, ///商城 + XPMineItemType_Account,///我的账户 + XPMineItemType_Personinfo,///个人中心 + XPMineItemType_Attention_List,///关注列表 + XPMineItemType_Foot_Print, ///足迹、进房记录 + XPMineItemType_Fans_List,///粉丝列表 + XPMineItemType_Noble_Center,///贵族中心 + XPMineItemType_Skill_Card, ///技能卡 + XPMineItemType_My_Room = 64, ///我的房间 + XPMineItemType_Collect_Room = 65, ///收藏房间 + XPMineItemType_My_Guild = 67,///我的公会 + XPMineItemType_Teenager_Mode = 68, ///青少年模式 + XPMineItemType_Match_Manage = 69, ///赛程管理 + XPMineItemType_Visitor = 70,///访客记录 + XPMineItemType_CP = 71,///cp关系 + XPMineItemType_FansTeam = 72,///粉丝团 + XPMineItemType_DressUp_Market = 73, ///装扮商场 + XPMineItemType_My_Dressup = 74,///我的装扮 + XPMineItemType_My_Set = 75///设置 + +}; + + +@interface XPMineItemModel : NSObject +///图片的名字 +@property (nonatomic,copy) NSString *itemImageName; +///名字 +@property (nonatomic,copy) NSString *itemName; +///跳转类型 +@property (nonatomic,assign) XPMineItemType type; +///圆角 +@property (nonatomic, assign) UIRectCorner cornerType; +///未读消息 +@property (nonatomic, assign) NSInteger unReadCount; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/XPMineItemModel.m b/YuMi/Modules/YMMine/Model/XPMineItemModel.m new file mode 100644 index 00000000..3c2cbc07 --- /dev/null +++ b/YuMi/Modules/YMMine/Model/XPMineItemModel.m @@ -0,0 +1,12 @@ +// +// YMMineItemModel.m +// YUMI +// +// Created by YUMI on 2021/9/16. +// + +#import "XPMineItemModel.h" + +@implementation XPMineItemModel + +@end diff --git a/YuMi/Modules/YMMine/Model/XPMineNotificationItemModel.h b/YuMi/Modules/YMMine/Model/XPMineNotificationItemModel.h new file mode 100644 index 00000000..b681db7d --- /dev/null +++ b/YuMi/Modules/YMMine/Model/XPMineNotificationItemModel.h @@ -0,0 +1,21 @@ +// +// YMMineNotificationItemModel.h +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import "NSObject+MJExtension.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineNotificationItemModel : NSObject +/// 标题 +@property (nonatomic, copy) NSString *title; +/// 描述 +@property (nonatomic, copy) NSString *desc; +/// 是否开启 +@property (nonatomic, assign) BOOL notification; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/XPMineNotificationItemModel.m b/YuMi/Modules/YMMine/Model/XPMineNotificationItemModel.m new file mode 100644 index 00000000..5f39ae16 --- /dev/null +++ b/YuMi/Modules/YMMine/Model/XPMineNotificationItemModel.m @@ -0,0 +1,12 @@ +// +// YMMineNotificationItemModel.m +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import "XPMineNotificationItemModel.h" + +@implementation XPMineNotificationItemModel + +@end diff --git a/YuMi/Modules/YMMine/Model/XPMineNotifyStatus.h b/YuMi/Modules/YMMine/Model/XPMineNotifyStatus.h new file mode 100644 index 00000000..acad3812 --- /dev/null +++ b/YuMi/Modules/YMMine/Model/XPMineNotifyStatus.h @@ -0,0 +1,20 @@ +// +// YMMineNotifyStatus.h +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import "NSObject+MJExtension.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineNotifyStatus : NSObject +///系统消息通知 +@property (nonatomic, assign) BOOL sysMsgNotify; +///个播开播通知 +@property (nonatomic, assign) BOOL singleBroadcastMsgNotify; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/XPMineNotifyStatus.m b/YuMi/Modules/YMMine/Model/XPMineNotifyStatus.m new file mode 100644 index 00000000..c08c1b81 --- /dev/null +++ b/YuMi/Modules/YMMine/Model/XPMineNotifyStatus.m @@ -0,0 +1,12 @@ +// +// YMMineNotifyStatus.m +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import "XPMineNotifyStatus.h" + +@implementation XPMineNotifyStatus + +@end diff --git a/YuMi/Modules/YMMine/Model/XPMineSettingItemModel.h b/YuMi/Modules/YMMine/Model/XPMineSettingItemModel.h new file mode 100644 index 00000000..563d9efd --- /dev/null +++ b/YuMi/Modules/YMMine/Model/XPMineSettingItemModel.h @@ -0,0 +1,38 @@ +// +// YMMineSettingItemModel.h +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, XPMineSettingItemType){ + XPMineSettingItemType_Phone, ///手机号 + XPMineSettingItemType_Pay_Password,///支付密码 + ///登录密码 + XPMineSettingItemType_Login_Password, + ///黑名单管理 + XPMineSettingItemType_Black_Manager, + XPMineSettingItemType_Notification_Remind, ///通知提醒 + XPMineSettingItemType_Permission,///关于我们 + XPMineSettingItemType_Helper,///帮助 + XPMineSettingItemType_Feedback,//我要反馈 + XPMineSettingItemType_Clear_Memory,///清楚缓存 + XPMineSettingItemType_About_Us,///关于我们 + XPMineSettingItemType_CheckUpdate,///检查更新 + XPMineSettingItemType_Delete_Account,///注销账号 +}; + +@interface XPMineSettingItemModel : NSObject +///标题 +@property (nonatomic,copy) NSString *title; +///副标题 +@property (nonatomic,copy,) NSString * __nullable subTitle; +///类型 +@property (nonatomic,assign) XPMineSettingItemType type; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/XPMineSettingItemModel.m b/YuMi/Modules/YMMine/Model/XPMineSettingItemModel.m new file mode 100644 index 00000000..dff63ae6 --- /dev/null +++ b/YuMi/Modules/YMMine/Model/XPMineSettingItemModel.m @@ -0,0 +1,12 @@ +// +// YMMineSettingItemModel.m +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import "XPMineSettingItemModel.h" + +@implementation XPMineSettingItemModel + +@end diff --git a/YuMi/Modules/YMMine/Model/XPMineUserInfoEditModel.h b/YuMi/Modules/YMMine/Model/XPMineUserInfoEditModel.h new file mode 100644 index 00000000..05052d8a --- /dev/null +++ b/YuMi/Modules/YMMine/Model/XPMineUserInfoEditModel.h @@ -0,0 +1,35 @@ +// +// YMMineUserInfoEditModel.h +// YUMI +// +// Created by YUMI on 2021/9/23. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(NSInteger, XPMineUserInfoEditType) { + XPMineUserInfoEditType_Avatar,///头像 + XPMineUserInfoEditType_Nick,///名字 + XPMineUserInfoEditType_Birth,///生日 + XPMineUserInfoEditType_Photo,///相册 + XPMineUserInfoEditType_UseDes,///用户描述 +}; + +@interface XPMineUserInfoEditModel : NSObject +///类型 +@property (nonatomic,assign) XPMineUserInfoEditType type; +///标题 +@property (nonatomic,copy) NSString *title; +///副标题 +@property (nonatomic,copy) NSString *subTitle; +///头像 +@property (nonatomic,assign) BOOL isReview; +///头像 +@property (nonatomic,copy) NSString *avatarUrl; +///相册 +@property (nonatomic,copy) NSArray *photoArray; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/XPMineUserInfoEditModel.m b/YuMi/Modules/YMMine/Model/XPMineUserInfoEditModel.m new file mode 100644 index 00000000..c8e416cc --- /dev/null +++ b/YuMi/Modules/YMMine/Model/XPMineUserInfoEditModel.m @@ -0,0 +1,12 @@ +// +// YMMineUserInfoEditModel.m +// YUMI +// +// Created by YUMI on 2021/9/23. +// + +#import "XPMineUserInfoEditModel.h" + +@implementation XPMineUserInfoEditModel + +@end diff --git a/YuMi/Modules/YMMine/Model/YUMIManeConsumerAbstractCompileMatrix.h b/YuMi/Modules/YMMine/Model/YUMIManeConsumerAbstractCompileMatrix.h deleted file mode 100644 index ef477c37..00000000 --- a/YuMi/Modules/YMMine/Model/YUMIManeConsumerAbstractCompileMatrix.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// YMMineUserInfoEditModel.h -// YUMI -// -// Created by YUMI on 2021/9/23. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSInteger, YUMIManeConsumerAbstractEditGenre) { - YUMIManeConsumerAbstractEditGenre_Avatar, - YUMIManeConsumerAbstractEditGenre_Nick, - YUMIManeConsumerAbstractEditGenre_Birth, - YUMIManeConsumerAbstractEditGenre_Photo, - YUMIManeConsumerAbstractEditGenre_UseDes, -}; - -@interface YUMIManeConsumerAbstractCompileMatrix : NSObject -@property (nonatomic,assign) YUMIManeConsumerAbstractEditGenre type; -@property (nonatomic,copy) NSString *title; -@property (nonatomic,copy) NSString *subTitle; -@property (nonatomic,assign) BOOL isReview; -@property (nonatomic,copy) NSString *avatarUrl; -@property (nonatomic,copy) NSArray *photoArray; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/YUMIManeConsumerAbstractCompileMatrix.m b/YuMi/Modules/YMMine/Model/YUMIManeConsumerAbstractCompileMatrix.m deleted file mode 100644 index 653c8dd6..00000000 --- a/YuMi/Modules/YMMine/Model/YUMIManeConsumerAbstractCompileMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMMineUserInfoEditModel.m -// YUMI -// -// Created by YUMI on 2021/9/23. -// - -#import "YUMIManeConsumerAbstractCompileMatrix.h" - -@implementation YUMIManeConsumerAbstractCompileMatrix - -@end diff --git a/YuMi/Modules/YMMine/Model/YUMIManeFuntionProvisionMatrix.h b/YuMi/Modules/YMMine/Model/YUMIManeFuntionProvisionMatrix.h deleted file mode 100644 index 50bc7f35..00000000 --- a/YuMi/Modules/YMMine/Model/YUMIManeFuntionProvisionMatrix.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YMMineFuntionItemModel.h -// YUMI -// -// Created by YUMI on 2022/7/22. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeFuntionProvisionMatrix : NSObject - -@property (nonatomic, assign) NSInteger centerStatus; -@property (nonatomic, copy) NSString *centerPic; -@property (nonatomic, assign) NSInteger centerId; -@property (nonatomic, copy) NSString *centerBadge; -@property (nonatomic, assign) NSInteger skipType; -@property (nonatomic, assign) NSInteger centerSeq; -@property (nonatomic, copy) NSString *centerName; -@property (nonatomic, copy) NSString *centerUrl; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/YUMIManeFuntionProvisionMatrix.m b/YuMi/Modules/YMMine/Model/YUMIManeFuntionProvisionMatrix.m deleted file mode 100644 index e10ff4de..00000000 --- a/YuMi/Modules/YMMine/Model/YUMIManeFuntionProvisionMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMMineFuntionItemModel.m -// YUMI -// -// Created by YUMI on 2022/7/22. -// - -#import "YUMIManeFuntionProvisionMatrix.h" - -@implementation YUMIManeFuntionProvisionMatrix - -@end diff --git a/YuMi/Modules/YMMine/Model/YUMIManeInstanllingProvisionMatrix.h b/YuMi/Modules/YMMine/Model/YUMIManeInstanllingProvisionMatrix.h deleted file mode 100644 index b24ffc63..00000000 --- a/YuMi/Modules/YMMine/Model/YUMIManeInstanllingProvisionMatrix.h +++ /dev/null @@ -1,35 +0,0 @@ -// -// YMMineSettingItemModel.h -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, YUMIManeInstanllingProvisionGenre){ - YUMIManeInstanllingProvisionGenre_Phone, - YUMIManeInstanllingProvisionGenre_Pay_Password, - - YUMIManeInstanllingProvisionGenre_Login_Password, - - YUMIManeInstanllingProvisionGenre_Black_Manager, - YUMIManeInstanllingProvisionGenre_Notification_Remind, - YUMIManeInstanllingProvisionGenre_Permission, - YUMIManeInstanllingProvisionGenre_Helper, - YUMIManeInstanllingProvisionGenre_Feedback, - YUMIManeInstanllingProvisionGenre_Clear_Memory, - YUMIManeInstanllingProvisionGenre_About_Us, - YUMIManeInstanllingProvisionGenre_CheckUpdate, - YUMIManeInstanllingProvisionGenre_Delete_Account, -}; - -@interface YUMIManeInstanllingProvisionMatrix : NSObject -@property (nonatomic,copy) NSString *title; -@property (nonatomic,copy,) NSString * __nullable subTitle; -@property (nonatomic,assign) YUMIManeInstanllingProvisionGenre type; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/YUMIManeInstanllingProvisionMatrix.m b/YuMi/Modules/YMMine/Model/YUMIManeInstanllingProvisionMatrix.m deleted file mode 100644 index 9541ead3..00000000 --- a/YuMi/Modules/YMMine/Model/YUMIManeInstanllingProvisionMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMMineSettingItemModel.m -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import "YUMIManeInstanllingProvisionMatrix.h" - -@implementation YUMIManeInstanllingProvisionMatrix - -@end diff --git a/YuMi/Modules/YMMine/Model/YUMIManeNotificationProvisionMatrix.h b/YuMi/Modules/YMMine/Model/YUMIManeNotificationProvisionMatrix.h deleted file mode 100644 index 1edc5b43..00000000 --- a/YuMi/Modules/YMMine/Model/YUMIManeNotificationProvisionMatrix.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMMineNotificationItemModel.h -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import "NSObject+MJExtension.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeNotificationProvisionMatrix : NSObject -@property (nonatomic, copy) NSString *title; -@property (nonatomic, copy) NSString *desc; -@property (nonatomic, assign) BOOL notification; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/YUMIManeNotificationProvisionMatrix.m b/YuMi/Modules/YMMine/Model/YUMIManeNotificationProvisionMatrix.m deleted file mode 100644 index a22ccfee..00000000 --- a/YuMi/Modules/YMMine/Model/YUMIManeNotificationProvisionMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMMineNotificationItemModel.m -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import "YUMIManeNotificationProvisionMatrix.h" - -@implementation YUMIManeNotificationProvisionMatrix - -@end diff --git a/YuMi/Modules/YMMine/Model/YUMIManeNotifyStatus.h b/YuMi/Modules/YMMine/Model/YUMIManeNotifyStatus.h deleted file mode 100644 index 2aa20b09..00000000 --- a/YuMi/Modules/YMMine/Model/YUMIManeNotifyStatus.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMMineNotifyStatus.h -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import "NSObject+MJExtension.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeNotifyStatus : NSObject -@property (nonatomic, assign) BOOL sysMsgNotify; -@property (nonatomic, assign) BOOL singleBroadcastMsgNotify; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/YUMIManeNotifyStatus.m b/YuMi/Modules/YMMine/Model/YUMIManeNotifyStatus.m deleted file mode 100644 index f097a24b..00000000 --- a/YuMi/Modules/YMMine/Model/YUMIManeNotifyStatus.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMMineNotifyStatus.m -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import "YUMIManeNotifyStatus.h" - -@implementation YUMIManeNotifyStatus - -@end diff --git a/YuMi/Modules/YMMine/Model/YUMIManeProvisionMatrix.h b/YuMi/Modules/YMMine/Model/YUMIManeProvisionMatrix.h deleted file mode 100644 index c0c27e5f..00000000 --- a/YuMi/Modules/YMMine/Model/YUMIManeProvisionMatrix.h +++ /dev/null @@ -1,49 +0,0 @@ -// -// YMMineItemModel.h -// YUMI -// -// Created by YUMI on 2021/9/16. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSInteger, YUMIManeProvisionGenre) { - YUMIManeProvisionGenre_Match_Relevance_Account = 2, - YUMIManeProvisionGenre_Match_Apply_Record, - YUMIManeProvisionGenre_Match_Bonus, - YUMIManeProvisionGenre_Match_Standings, - YUMIManeProvisionGenre_Match_Card_Bag, - YUMIManeProvisionGenre_Match_Shopping, - YUMIManeProvisionGenre_Account, - YUMIManeProvisionGenre_Personinfo, - YUMIManeProvisionGenre_Attention_List, - YUMIManeProvisionGenre_Foot_Print, - YUMIManeProvisionGenre_Fans_List, - YUMIManeProvisionGenre_Noble_Center, - YUMIManeProvisionGenre_Skill_Card, - YUMIManeProvisionGenre_My_Room = 64, - YUMIManeProvisionGenre_Collect_Room = 65, - YUMIManeProvisionGenre_My_Guild = 67, - YUMIManeProvisionGenre_Teenager_Mode = 68, - YUMIManeProvisionGenre_Match_Manage = 69, - YUMIManeProvisionGenre_Visitor = 70, - YUMIManeProvisionGenre_CP = 71, - YUMIManeProvisionGenre_FansTeam = 72, - YUMIManeProvisionGenre_DressUp_Market = 73, - YUMIManeProvisionGenre_My_Dressup = 74, - YUMIManeProvisionGenre_My_Set = 75 - -}; - - -@interface YUMIManeProvisionMatrix : NSObject -@property (nonatomic,copy) NSString *itemImageName; -@property (nonatomic,copy) NSString *itemName; -@property (nonatomic,assign) YUMIManeProvisionGenre type; -@property (nonatomic, assign) UIRectCorner cornerType; -@property (nonatomic, assign) NSInteger unReadCount; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Model/YUMIManeProvisionMatrix.m b/YuMi/Modules/YMMine/Model/YUMIManeProvisionMatrix.m deleted file mode 100644 index 4fd95177..00000000 --- a/YuMi/Modules/YMMine/Model/YUMIManeProvisionMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMMineItemModel.m -// YUMI -// -// Created by YUMI on 2021/9/16. -// - -#import "YUMIManeProvisionMatrix.h" - -@implementation YUMIManeProvisionMatrix - -@end diff --git a/YuMi/Modules/YMMine/Presenter/XPMineAttentionPresenter.h b/YuMi/Modules/YMMine/Presenter/XPMineAttentionPresenter.h new file mode 100644 index 00000000..fa237366 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineAttentionPresenter.h @@ -0,0 +1,19 @@ +// +// YMMineAttentionPresenter.h +// YUMI +// +// Created by YUMI on 2021/12/21. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineAttentionPresenter : BaseMvpPresenter +/// 用户关注列表 +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +- (void)getUserAttentionList:(int)page pageSize:(int)pageSize state:(int)state;; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/XPMineAttentionPresenter.m b/YuMi/Modules/YMMine/Presenter/XPMineAttentionPresenter.m new file mode 100644 index 00000000..957e81fa --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineAttentionPresenter.m @@ -0,0 +1,31 @@ +// +// YMMineAttentionPresenter.m +// YUMI +// +// Created by YUMI on 2021/12/21. +// + +#import "XPMineAttentionPresenter.h" +#import "Api+Mine.h" +#import "AccountInfoStorage.h" +#import "XPMineAttentionProtocol.h" +#import "FansInfoModel.h" + +@implementation XPMineAttentionPresenter + +/// 用户关注列表 +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +- (void)getUserAttentionList:(int)page pageSize:(int)pageSize state:(int)state;{ + NSString * uid= [AccountInfoStorage instance].getUid; + NSString * pageStr = [NSString stringWithFormat:@"%d", page]; + NSString * pageSizeStr = [NSString stringWithFormat:@"%d", pageSize]; + [Api getattentionListCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [FansInfoModel modelsWithArray:data.data]; + [[self getView] getUserAttentionListSuccess:array state:state]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getUserAttentionListFail:state]; + }] uid:uid pageNo:pageStr pageSize:pageSizeStr]; +} + +@end diff --git a/YuMi/Modules/YMMine/Presenter/XPMineBlackListPresenter.h b/YuMi/Modules/YMMine/Presenter/XPMineBlackListPresenter.h new file mode 100644 index 00000000..649eb750 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineBlackListPresenter.h @@ -0,0 +1,16 @@ +// +// YMMineBlackListPresenter.h +// YUMI +// +// Created by YUMI on 2022/5/13. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineBlackListPresenter : BaseMvpPresenter +- (void)getUserListInfo:(NSArray *)array; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/XPMineBlackListPresenter.m b/YuMi/Modules/YMMine/Presenter/XPMineBlackListPresenter.m new file mode 100644 index 00000000..39e0c823 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineBlackListPresenter.m @@ -0,0 +1,25 @@ +// +// YMMineBlackListPresenter.m +// YUMI +// +// Created by YUMI on 2022/5/13. +// + +#import "XPMineBlackListPresenter.h" +#import "Api+Mine.h" +#import "UserInfoModel.h" +#import "XPMineBlackListProtocol.h" +@implementation XPMineBlackListPresenter + +- (void)getUserListInfo:(NSArray *)array { + NSString * uids = @""; + if (array.count > 0) { + uids = [array componentsJoinedByString:@","]; + } + [Api getUsersListInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray *users= [UserInfoModel modelsWithArray:data.data]; + [[self getView] getUserListInfoSuccess:users]; + }] uids:uids]; +} + +@end diff --git a/YuMi/Modules/YMMine/Presenter/XPMineCollectRoomListPresenter.h b/YuMi/Modules/YMMine/Presenter/XPMineCollectRoomListPresenter.h new file mode 100644 index 00000000..7faefac0 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineCollectRoomListPresenter.h @@ -0,0 +1,25 @@ +// +// YMMineCollectRoomListPresenter.h +// YUMI +// +// Created by YUMI on 2022/7/27. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineCollectRoomListPresenter : BaseMvpPresenter + +/// 获取收藏房间列表 +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +/// @param type 类型:4:个播房;其他:派对房;不传:所有房间 +- (void)getCollectRoomList:(int)page pageSize:(int)pageSize state:(int)state type:(NSString *)type; + +///批量删除收藏的房间 +- (void)deletecollectRoomWithRoomUids:(NSString *)roomUids; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/XPMineCollectRoomListPresenter.m b/YuMi/Modules/YMMine/Presenter/XPMineCollectRoomListPresenter.m new file mode 100644 index 00000000..02b3aa0f --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineCollectRoomListPresenter.m @@ -0,0 +1,40 @@ +// +// YMMineCollectRoomListPresenter.m +// YUMI +// +// Created by YUMI on 2022/7/27. +// + +#import "XPMineCollectRoomListPresenter.h" +#import "Api+Mine.h" +#import "Api+Room.h" +#import "XPMineCollectRoomListProtocol.h" +#import "AccountInfoStorage.h" +#import "HomeCollectRoomModel.h" + +@implementation XPMineCollectRoomListPresenter + +/// 获取收藏房间列表 +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +/// @param type 类型:4:个播房;其他:派对房;不传:所有房间 +- (void)getCollectRoomList:(int)page pageSize:(int)pageSize state:(int)state type:(NSString *)type { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api requestMineCollectRoomList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [HomeCollectRoomModel modelsWithArray:data.data[@"fansRoomList"]]; + [[self getView] onGetCollectRoomListSuccess:array state:state]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getCollectRoomListFail:state]; + }] uid:uid page:[NSString stringWithFormat:@"%d", page] pageSize:[NSString stringWithFormat:@"%d", pageSize] roomType:type.length ? type : NULL]; +} + +///批量删除收藏的房间 +- (void)deletecollectRoomWithRoomUids:(NSString *)roomUids { + NSString * type = @"3"; + NSString * uid = [AccountInfoStorage instance].getUid; + [Api collectRoom:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] deleteCollectRoomSuccess]; + }] roomUid:@"" uid:uid type:type roomUids:roomUids]; +} + +@end diff --git a/YuMi/Modules/YMMine/Presenter/XPMineFansPresenter.h b/YuMi/Modules/YMMine/Presenter/XPMineFansPresenter.h new file mode 100644 index 00000000..14c1a29f --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineFansPresenter.h @@ -0,0 +1,23 @@ +// +// YMMineFansPresenter.h +// YUMI +// +// Created by YUMI on 2021/12/21. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineFansPresenter : BaseMvpPresenter +/// 用户粉丝列表 +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +- (void)getUserFansList:(int)page pageSize:(int)pageSize state:(int)state; + +/// 关注粉丝 +/// @param targetUid 目标用户的uid +- (void)attentionFans:(NSString *)targetUid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/XPMineFansPresenter.m b/YuMi/Modules/YMMine/Presenter/XPMineFansPresenter.m new file mode 100644 index 00000000..86422754 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineFansPresenter.m @@ -0,0 +1,43 @@ +// +// YMMineFansPresenter.m +// YUMI +// +// Created by YUMI on 2021/12/21. +// + +#import "XPMineFansPresenter.h" +#import "Api+Mine.h" +#import "XPMineFansProtocol.h" +#import "AccountInfoStorage.h" +#import "FansInfoModel.h" + +@implementation XPMineFansPresenter + + +/// 用户粉丝列表 +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +- (void)getUserFansList:(int)page pageSize:(int)pageSize state:(int)state { + NSString * uid= [AccountInfoStorage instance].getUid; + NSString * pageStr = [NSString stringWithFormat:@"%d", page]; + NSString * pageSizeStr = [NSString stringWithFormat:@"%d", pageSize]; + [Api getFansListCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [FansInfoModel modelsWithArray:data.data[@"fansList"]]; + [[self getView] getUserFansListSuccess:array state:state]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getUserFansListFail:state]; + }] uid:uid pageNo:pageStr pageSize:pageSizeStr]; +} + +/// 关注粉丝 +/// @param targetUid 目标用户的uid +- (void)attentionFans:(NSString *)targetUid { + NSString * uid = [[AccountInfoStorage instance] getUid]; + NSString * ticket = [[AccountInfoStorage instance] getTicket]; + NSString * type = @"1"; + [Api attentionCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] attentionFansSuccess]; + }] uid:uid likedUid:targetUid ticket:ticket type:type]; +} + +@end diff --git a/YuMi/Modules/YMMine/Presenter/XPMineFansTeamPresenter.h b/YuMi/Modules/YMMine/Presenter/XPMineFansTeamPresenter.h new file mode 100644 index 00000000..383287ad --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineFansTeamPresenter.h @@ -0,0 +1,21 @@ +// +// YMMineFansTeamPresenter.h +// YUMI +// +// Created by YUMI on 2022/4/8. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineFansTeamPresenter : BaseMvpPresenter + +/// 获取粉丝团列表 +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +- (void)getAnchorFansTeamList:(int)page pageSize:(int)pageSize state:(int)state; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/XPMineFansTeamPresenter.m b/YuMi/Modules/YMMine/Presenter/XPMineFansTeamPresenter.m new file mode 100644 index 00000000..87c720d5 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineFansTeamPresenter.m @@ -0,0 +1,27 @@ +// +// YMMineFansTeamPresenter.m +// YUMI +// +// Created by YUMI on 2022/4/8. +// + +#import "XPMineFansTeamPresenter.h" +#import "Api+Mine.h" +#import "XPMineAnchorFansTeamProtocol.h" +#import "XPMineAnchorFansTeamModel.h" + +@implementation XPMineFansTeamPresenter + +/// 获取粉丝团列表 +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +- (void)getAnchorFansTeamList:(int)page pageSize:(int)pageSize state:(int)state { + [Api getAnchorFansTeamListCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray *array = [XPMineAnchorFansTeamModel modelsWithArray:data.data]; + [[self getView] getAnchorFansTeamListSuccess:array state:state]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getAnchorFansTeamListFail:state]; + }] pageNum:[NSString stringWithFormat:@"%d", page] pageSize:[NSString stringWithFormat:@"%d", pageSize]]; +} + +@end diff --git a/YuMi/Modules/YMMine/Presenter/XPMineFeedbackPresenter.h b/YuMi/Modules/YMMine/Presenter/XPMineFeedbackPresenter.h new file mode 100644 index 00000000..477ba2e6 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineFeedbackPresenter.h @@ -0,0 +1,20 @@ +// +// YMFeedbackPresenter.h +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineFeedbackPresenter : BaseMvpPresenter + +/// 保存反馈 +/// @param feedback 反馈的内容 +/// @param contact 反馈的联系方式 +- (void)saveFeedBackWith:(NSString *)feedback contact:(NSString *)contact; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/XPMineFeedbackPresenter.m b/YuMi/Modules/YMMine/Presenter/XPMineFeedbackPresenter.m new file mode 100644 index 00000000..0006c53a --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineFeedbackPresenter.m @@ -0,0 +1,29 @@ +// +// YMFeedbackPresenter.m +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import "XPMineFeedbackPresenter.h" +///Tool +#import "AccountInfoStorage.h" +///Api +#import "Api+Mine.h" +///P +#import "XPMineFeedbackProtocol.h" + +@implementation XPMineFeedbackPresenter + +/// 保存反馈 +/// @param feedback 反馈的内容 +/// @param contact 反馈的联系方式 +- (void)saveFeedBackWith:(NSString *)feedback contact:(NSString *)contact { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + [Api saveFeedBackWith:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] saveFeedbackSuccess]; + } showLoading:YES] feedbackDesc:feedback contact:contact uid:uid ticket:ticket]; +} + +@end diff --git a/YuMi/Modules/YMMine/Presenter/XPMineFootPrintPresenter.h b/YuMi/Modules/YMMine/Presenter/XPMineFootPrintPresenter.h new file mode 100644 index 00000000..ceb4a2c5 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineFootPrintPresenter.h @@ -0,0 +1,30 @@ +// +// YMMineFootPrintPresenter.h +// YUMI +// +// Created by YUMI on 2022/7/26. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineFootPrintPresenter : BaseMvpPresenter + +///获取进房记录 +/// @param page 当前页码 +/// @param pageSize 每页数量 +/// @param state 0:刷新, 1:加载更多 +- (void)getFootPrintListWithPage:(int)page pageSize:(int)pageSize state:(int)state; + +/// 清除进房记录 +/// @param roomUid 不传则清空所有 +- (void)cleanFootPrint:(NSString *)roomUid; + +/// 收藏房间 +/// @param roomUid 房间uid +- (void)collectRoomWithRoomUid:(NSString *)roomUid; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/XPMineFootPrintPresenter.m b/YuMi/Modules/YMMine/Presenter/XPMineFootPrintPresenter.m new file mode 100644 index 00000000..a430a725 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineFootPrintPresenter.m @@ -0,0 +1,49 @@ +// +// YMMineFootPrintPresenter.m +// YUMI +// +// Created by YUMI on 2022/7/26. +// + +#import "XPMineFootPrintPresenter.h" +#import "Api+Mine.h" +#import "Api+Room.h" +#import "XPMineFootPrintProtocol.h" +#import "AccountInfoStorage.h" +#import "XPMineFootPrintModel.h" + +@implementation XPMineFootPrintPresenter + +///获取进房记录 +/// @param page 当前页码 +/// @param pageSize 每页数量 +/// @param state 0:刷新, 1:加载更多 +- (void)getFootPrintListWithPage:(int)page pageSize:(int)pageSize state:(int)state { + NSString *uid = [AccountInfoStorage instance].getUid; + [Api requestFootPrint:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray *array = [XPMineFootPrintModel modelsWithArray:data.data]; + [[self getView] getFootPrintListSuccess:array state:state]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getFootPrintListFail:state]; + }] uid:uid page:[NSString stringWithFormat:@"%d", page] pageSize:[NSString stringWithFormat:@"%d", pageSize]]; +} + +/// 清除进房记录 +/// @param roomUid 不传则清空所有 +- (void)cleanFootPrint:(NSString *)roomUid { + NSString *uid = [AccountInfoStorage instance].getUid; + [Api requestCleanFootPrint:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] cleanFootPrintSuccess]; + }] uid:uid roomUid:roomUid.length ? roomUid : NULL]; +} + +///收藏房间 +- (void)collectRoomWithRoomUid:(NSString *)roomUid { + NSString * type = @"1"; + NSString * uid = [AccountInfoStorage instance].getUid; + [Api collectRoom:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] collectRoomSuccess]; + }] roomUid:roomUid uid:uid type:type roomUids:NULL]; +} + +@end diff --git a/YuMi/Modules/YMMine/Presenter/XPMineFriendPresenter.h b/YuMi/Modules/YMMine/Presenter/XPMineFriendPresenter.h new file mode 100644 index 00000000..5f217508 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineFriendPresenter.h @@ -0,0 +1,16 @@ +// +// YMMineFriendPresenter.h +// YUMI +// +// Created by YUMI on 2022/5/29. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineFriendPresenter : BaseMvpPresenter +- (void)getUserListInfo:(NSArray *)array; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/XPMineFriendPresenter.m b/YuMi/Modules/YMMine/Presenter/XPMineFriendPresenter.m new file mode 100644 index 00000000..3a4d212e --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineFriendPresenter.m @@ -0,0 +1,26 @@ +// +// YMMineFriendPresenter.m +// YUMI +// +// Created by YUMI on 2022/5/29. +// + +#import "XPMineFriendPresenter.h" +#import "Api+Mine.h" +#import "XPMineFriendProtocol.h" +#import "UserInfoModel.h" + +@implementation XPMineFriendPresenter + +- (void)getUserListInfo:(NSArray *)array { + NSString * uids = @""; + if (array.count > 0) { + uids = [array componentsJoinedByString:@","]; + } + [Api getUsersListInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray *users= [UserInfoModel modelsWithArray:data.data]; + [[self getView] getUserListInfoSuccess:users]; + }] uids:uids]; +} + +@end diff --git a/YuMi/Modules/YMMine/Presenter/XPMineLoginPasswordPresenter.h b/YuMi/Modules/YMMine/Presenter/XPMineLoginPasswordPresenter.h new file mode 100644 index 00000000..60e5d0d5 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineLoginPasswordPresenter.h @@ -0,0 +1,25 @@ +// +// YMMineLoginPasswordPresenter.h +// YUMI +// +// Created by YUMI on 2022/4/25. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineLoginPasswordPresenter : BaseMvpPresenter +/// 设置登录密码 +/// @param phone 手机号 +/// @param newPwd 密码 +- (void)setLoginPassword:(NSString *)phone newPwd:(NSString *)newPwd; + +/// 修改登录密码 +/// @param phone 手机号 +/// @param newPwd 新密码 +/// @param pwd 旧密码 +- (void)modifyLoginPassword:(NSString *)phone newPwd:(NSString *)newPwd pwd:(NSString *)pwd; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/XPMineLoginPasswordPresenter.m b/YuMi/Modules/YMMine/Presenter/XPMineLoginPasswordPresenter.m new file mode 100644 index 00000000..8c380a7c --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineLoginPasswordPresenter.m @@ -0,0 +1,43 @@ +// +// YMMineLoginPasswordPresenter.m +// YUMI +// +// Created by YUMI on 2022/4/25. +// + +#import "XPMineLoginPasswordPresenter.h" +#import "Api+Mine.h" +#import "DESEncrypt.h" +#import "YUMIConstant.h" +#import "XPMineLoginPasswordProtocol.h" + +@implementation XPMineLoginPasswordPresenter + + +/// 设置登录密码 +/// @param phone 手机号 +/// @param newPwd 密码 +- (void)setLoginPassword:(NSString *)phone newPwd:(NSString *)newPwd { + NSString * desNewPwd = [DESEncrypt encryptUseDES:newPwd key:KeyWithType(KeyType_PasswordEncode)]; + NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)]; + [Api setLoingPassword:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] setLoginPasswordSuccess]; + } showLoading:YES] phone:desPhone newPwd:desNewPwd]; +} + + +/// 修改登录密码 +/// @param phone 手机号 +/// @param newPwd 新密码 +/// @param pwd 旧密码 +- (void)modifyLoginPassword:(NSString *)phone newPwd:(NSString *)newPwd pwd:(NSString *)pwd{ + NSString * desNewPwd = [DESEncrypt encryptUseDES:newPwd key:KeyWithType(KeyType_PasswordEncode)]; + NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)]; + NSString * desPwd = [DESEncrypt encryptUseDES:pwd key:KeyWithType(KeyType_PasswordEncode)]; + [Api modifyLoingPassword:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] modifyLoginPasswordSuccess]; + }] phone:desPhone newPwd:desNewPwd pwd:desPwd]; +} + + +@end diff --git a/YuMi/Modules/YMMine/Presenter/XPMineModifPayPwdPresenter.h b/YuMi/Modules/YMMine/Presenter/XPMineModifPayPwdPresenter.h new file mode 100644 index 00000000..6611978c --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineModifPayPwdPresenter.h @@ -0,0 +1,21 @@ +// +// YMMineModifPayPwdPresenter.h +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import "MainPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineModifPayPwdPresenter : MainPresenter + +/// 修改支付密码 +/// @param oldPasswd 旧的密码 +/// @param newPasswd 新的密码 +- (void)modifyPaymentPasswordWitholdPassword:(NSString *)oldPasswd + newPassword:(NSString *)newPasswd; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/XPMineModifPayPwdPresenter.m b/YuMi/Modules/YMMine/Presenter/XPMineModifPayPwdPresenter.m new file mode 100644 index 00000000..84e57e32 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineModifPayPwdPresenter.m @@ -0,0 +1,34 @@ +// +// YMMineModifPayPwdPresenter.m +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import "XPMineModifPayPwdPresenter.h" +#import "Api+Mine.h" +///Tool +#import "DESEncrypt.h" +#import "AccountInfoStorage.h" +#import "YUMIConstant.h" +///P +#import "XPMineModifPayProtocol.h" + +@implementation XPMineModifPayPwdPresenter + + +/// 修改支付密码 +/// @param oldPasswd 旧的密码 +/// @param newPasswd 新的密码 +- (void)modifyPaymentPasswordWitholdPassword:(NSString *)oldPasswd + newPassword:(NSString *)newPasswd { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + NSString * newpasswordDes = [DESEncrypt encryptUseDES:newPasswd key:KeyWithType(KeyType_PasswordEncode)]; + NSString * oldpasswordDes = [DESEncrypt encryptUseDES:oldPasswd key:KeyWithType(KeyType_PasswordEncode)]; + [Api modifPayPassword:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] modifPayPasswordSuccess]; + }] newPasswd:newpasswordDes oldPasswd:oldpasswordDes uid:uid ticket:ticket]; +} + +@end diff --git a/YuMi/Modules/YMMine/Presenter/XPMineNotificaPresenter.h b/YuMi/Modules/YMMine/Presenter/XPMineNotificaPresenter.h new file mode 100644 index 00000000..7c4ca543 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineNotificaPresenter.h @@ -0,0 +1,22 @@ +// +// YMMineNotificaPresenter.h +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN +@class XPMineNotificationItemModel; +@interface XPMineNotificaPresenter : BaseMvpPresenter +/// 请求当前开关的状态 +- (void)requestUserInfoNotifyStatus; + +/// 更新系统消息状态 +- (void)updateUserInfoSystemNotify:(BOOL)notify; +/// 更新开播消息状态 +- (void)updateBroadCastNotify:(BOOL)notify; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/XPMineNotificaPresenter.m b/YuMi/Modules/YMMine/Presenter/XPMineNotificaPresenter.m new file mode 100644 index 00000000..f08cdfeb --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineNotificaPresenter.m @@ -0,0 +1,69 @@ +// +// YMMineNotificaPresenter.m +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import "XPMineNotificaPresenter.h" +///Api +#import "Api+Mine.h" +///P +#import "XPMineNotificaProtocol.h" +///Tool +#import "AccountInfoStorage.h" +///Model +#import "XPMineNotifyStatus.h" +#import "XPMineNotificationItemModel.h" + +@interface XPMineNotificaPresenter () +///系统消息 +@property (nonatomic,strong) XPMineNotificationItemModel *systemModel; +@end + +@implementation XPMineNotificaPresenter + +- (id)getView { + return (id)[super getView]; +} + + +/// 请求当前开关的状态 +- (void)requestUserInfoNotifyStatus { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api requestUserInfoNotifyStatus:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + XPMineNotifyStatus * model = [XPMineNotifyStatus modelWithDictionary:data.data]; + if (self.systemModel == nil) { + XPMineNotificationItemModel * systemItem = [[XPMineNotificationItemModel alloc] init]; + systemItem.title = YMLocalizedString(@"XPMineNotificaPresenter0"); + systemItem.desc = YMLocalizedString(@"XPMineNotificaPresenter1"); + self.systemModel = systemItem; + } + self.systemModel.notification = model.sysMsgNotify; + XPMineNotificationItemModel * broadcastItem = [[XPMineNotificationItemModel alloc] init]; + broadcastItem.title = YMLocalizedString(@"XPMineNotificaPresenter2"); + broadcastItem.desc = YMLocalizedString(@"XPMineNotificaPresenter3"); + broadcastItem.notification = model.singleBroadcastMsgNotify; + NSArray * array = @[self.systemModel, broadcastItem]; + [[self getView] requestUserInfoNotifyStatusSuccess:array]; + }] uid:uid]; +} + +/// 更新系统消息状态 +- (void)updateUserInfoSystemNotify:(BOOL)notify { + NSString * notifyStr = [NSString stringWithFormat:@"%d", notify]; + NSString * uid = [AccountInfoStorage instance].getUid; + [Api updateUserInfoSystemNotifyWith:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + + }] sysMsgNotify:notifyStr uid:uid]; +} + +/// 更新开播消息状态 +- (void)updateBroadCastNotify:(BOOL)notify { + NSString * notifyStr = [NSString stringWithFormat:@"%d", notify]; + NSString * uid = [AccountInfoStorage instance].getUid; + [Api updateAnchorBroadCastNotifyWith:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + + }] msgNotify:notifyStr uid:uid]; +} +@end diff --git a/YuMi/Modules/YMMine/Presenter/XPMinePayPwdPresenter.h b/YuMi/Modules/YMMine/Presenter/XPMinePayPwdPresenter.h new file mode 100644 index 00000000..e72259c9 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMinePayPwdPresenter.h @@ -0,0 +1,30 @@ +// +// YMMinePayPwdPresenter.h +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import "MainPresenter.h" +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPMinePayPwdPresenter : MainPresenter +/// 获取手机的验证码 +/// @param phone 手机号 +/// @param type 类型 +- (void)phoneSmsCode:(NSString *)phone type:(GetSmsType)type phoneAreaCode:(NSString *)phoneAreaCode; + +/// 设置支付密码 +/// @param password 支付密码 +/// @param phone 手机号 +/// @param veriftCode 验证码 +- (void)setPayPassword:(NSString *)password phone:(NSString *)phone veriftCode:(NSString *)veriftCode; + +/// 设置支付密码 +/// @param password 支付密码 + +- (void)setPayPassword:(NSString *)password; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/XPMinePayPwdPresenter.m b/YuMi/Modules/YMMine/Presenter/XPMinePayPwdPresenter.m new file mode 100644 index 00000000..ad4cad3e --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMinePayPwdPresenter.m @@ -0,0 +1,42 @@ +// +// YMMinePayPwdPresenter.m +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import "XPMinePayPwdPresenter.h" +///Api +#import "Api+Mine.h" +///P +#import "XPMinePayPwdProtocol.h" +///Tool +#import "DESEncrypt.h" +#import "YUMIConstant.h" +#import "AccountInfoStorage.h" + +@implementation XPMinePayPwdPresenter + +/// 获取手机的验证码 +/// @param phone 手机号 +/// @param type 类型 +- (void)phoneSmsCode:(NSString *)phone type:(GetSmsType)type phoneAreaCode:(NSString *)phoneAreaCode{ + NSString * typeStr = [NSString stringWithFormat:@"%lu", (unsigned long)type]; + NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)]; + [Api phoneSmsCode:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] phoneSmsCodeSuccess]; + }] mobile:desPhone type:typeStr phoneAreaCode:phoneAreaCode]; +} + +/// 设置支付密码 +/// @param password 支付密码 + +- (void)setPayPassword:(NSString *)password { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + NSString * newpasswordDes = [DESEncrypt encryptUseDES:password key:KeyWithType(KeyType_PasswordEncode)]; + [Api setPayPassword:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] setPayPasswordSuccess]; + }] newPasswd:newpasswordDes uid:uid ticket:ticket]; +} +@end diff --git a/YuMi/Modules/YMMine/Presenter/XPMinePresent.h b/YuMi/Modules/YMMine/Presenter/XPMinePresent.h new file mode 100644 index 00000000..55f19431 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMinePresent.h @@ -0,0 +1,32 @@ +// +// YMMinePresent.h +// YUMI +// +// Created by YUMI on 2021/9/16. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN +@interface XPMinePresent : BaseMvpPresenter + +/// 获取用户信息 +- (void)getUserInfo; + +/// 获取钱包信息 +- (void)getUserWalletInfoWithGroup:(dispatch_group_t) group; + +/// 获取家族详细的信息 +- (void)getClanDetailInfoWithGroup:(dispatch_group_t) group; +///获取贵族信息 +- (void)getNobleInfoWithGroup:(dispatch_group_t) group; +///获取个人功能列表 +- (void)getPersonItemListWithGroup:(dispatch_group_t) group ; + + +///获取个人中心banner +- (void)getMineBannerListWithGroup:(dispatch_group_t) group; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/XPMinePresent.m b/YuMi/Modules/YMMine/Presenter/XPMinePresent.m new file mode 100644 index 00000000..8c636c0b --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMinePresent.m @@ -0,0 +1,114 @@ +// +// YMMinePresent.m +// YUMI +// +// Created by YUMI on 2021/9/16. +// + +#import "XPMinePresent.h" +///Tool +#import "AccountInfoStorage.h" +#import "StatisticsServiceHelper.h" +///Api +#import "Api+Mine.h" +#import "Api+Guild.h" +#import "Api+Home.h" +///Model +#import "XPMineItemModel.h" +#import "UserInfoModel.h" +#import "ClanDetailInfoModel.h" +#import "XPMineFuntionItemModel.h" +#import "HomeBannerInfoModel.h" +#import "WalletInfoModel.h" +#import "ClanDetailInfoModel.h" +///Protocol +#import "XPMineProtocol.h" +#import "Api+NobleCenter.h" +#import "NobleCenterModel.h" +@implementation XPMinePresent + +/// 获取用户信息 +- (void)getUserInfo { + NSString * uid = [[AccountInfoStorage instance] getUid]; + if (!uid.length) { + + return; + } + [Api getUserInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + UserInfoModel * infoModel = [UserInfoModel modelWithDictionary:data.data]; + [[self getView] onGetUserInfoSuccess:infoModel]; + }errorToast:NO] uid:uid]; +} + +/// 获取钱包信息 +- (void)getUserWalletInfoWithGroup:(dispatch_group_t) group { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + if (!uid.length) { + [[self getView]getUserWalletInfoFailWithGroup:group]; + return; + } + [Api getUserWalletInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + WalletInfoModel * model = [WalletInfoModel modelWithDictionary:data.data]; + [[self getView] getUserWalletInfo:model WithGroup:group]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView]getUserWalletInfoFailWithGroup:group]; + }] uid:uid ticket:ticket]; +} + + +/// 获取家族详细的信息 +- (void)getClanDetailInfoWithGroup:(dispatch_group_t) group { + NSString * uid = [[AccountInfoStorage instance] getUid]; + if (!uid.length) { + [[self getView]onGetClanDetailInfofailWithGroup:group]; + return; + } + [Api getClanDetailInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + ClanDetailInfoModel * clanDetailInfo = [ClanDetailInfoModel modelWithDictionary:data.data]; + [[self getView] onGetClanDetailInfoSuccess:clanDetailInfo WithGroup:group]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView]onGetClanDetailInfofailWithGroup:group]; + }] uid:uid]; +} + +///获取个人功能列表 +- (void)getPersonItemListWithGroup:(dispatch_group_t) group { + NSString * uid = [[AccountInfoStorage instance] getUid]; + if (!uid.length){ + [[self getView] onGetMineFuntionItemFailWithGroup:group]; + return; + } + [Api requestPersonalFunctionItem:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray *array = [XPMineFuntionItemModel modelsWithArray:data.data]; + [[self getView] onGetMineFuntionItemSuccess:array WithGroup:group]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] onGetMineFuntionItemFailWithGroup:group]; + }] uid:uid]; +} +///获取贵族信息 +- (void)getNobleInfoWithGroup:(dispatch_group_t) group { + [Api nobleCenterLevelList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NobleCenterModel *model = [NobleCenterModel modelWithDictionary:data.data]; + [[self getView] getNobleCenterInfoSuccess:model WithGroup:group]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getNobleCenterInfoFailWithGroup:group]; + }]]; +} +///获取个人中心banner +- (void)getMineBannerListWithGroup:(dispatch_group_t) group { + NSString * uid = [[AccountInfoStorage instance] getUid]; + if (!uid.length) { + [[self getView] onGetPersonalBannerListFailWithGroup:group]; + return; + } + [Api requestMineBannerList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [HomeBannerInfoModel modelsWithArray:data.data]; + [[self getView] onGetPersonalBannerListSuccess:array WithGroup:group]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] onGetPersonalBannerListFailWithGroup:group]; + } errorToast:NO] uid:uid type:@"10"]; +} + + +@end diff --git a/YuMi/Modules/YMMine/Presenter/XPMineRechargePresenter.h b/YuMi/Modules/YMMine/Presenter/XPMineRechargePresenter.h new file mode 100644 index 00000000..2204f253 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineRechargePresenter.h @@ -0,0 +1,35 @@ +// +// YMMineRechargePresenter.h +// YUMI +// +// Created by YUMI on 2021/9/24. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineRechargePresenter : BaseMvpPresenter + +/// 获取钱包信息 +- (void)getUserWalletInfo; +/// 请求内购列表 +/// @param channel 目前是8 +- (void)requestRechargeListWithChannel:(NSString *)channel; + +/// 获取充值的订单编号 +/// @param chargeProdId 苹果服务器的充值 的id +- (void)requestIAPRechargeOrderWithChargeProdId:(NSString *)chargeProdId; + +/// 充值成功二次验证 +/// @param receipt 凭据 +/// @param orderId 订单编号 +/// @param transcationId 商品id +- (void)checkReceiptWithData:(NSString *)receipt orderId:(NSString *)orderId transcationId:(NSString *)transcationId; + +/// 批量验证内购掉单 +/// @param transcations 凭据的数组 +- (void)checkTranscationIds:(NSArray *)transcations; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/XPMineRechargePresenter.m b/YuMi/Modules/YMMine/Presenter/XPMineRechargePresenter.m new file mode 100644 index 00000000..fbf5e881 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineRechargePresenter.m @@ -0,0 +1,82 @@ +// +// YMMineRechargePresenter.m +// YUMI +// +// Created by YUMI on 2021/9/24. +// + +#import "XPMineRechargePresenter.h" +///Api +#import "Api+Mine.h" +///Tool +#import "AccountInfoStorage.h" +#import "YYUtility.h" +#import "NSObject+MJExtension.h" +///P +#import "XPMineRechargeProtocol.h" +///Model +#import "RechargeListModel.h" +#import "WalletInfoModel.h" + +@implementation XPMineRechargePresenter + + +/// 获取钱包信息 +- (void)getUserWalletInfo { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + [Api getUserWalletInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + WalletInfoModel * model = [WalletInfoModel modelWithDictionary:data.data]; + [[self getView] getUserWalletInfo:model]; + }] uid:uid ticket:ticket]; +} + + +/// 请求内购列表 +/// @param channel 目前是8 +- (void)requestRechargeListWithChannel:(NSString *)channel { + [Api getRechargeList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [RechargeListModel modelsWithArray:data.data]; + [[self getView] requestRechargeListSucccess:array]; + }] channelType:channel]; +} + +/// 获取充值的订单编号 +/// @param chargeProdId 苹果服务器的充值 的id +- (void)requestIAPRechargeOrderWithChargeProdId:(NSString *)chargeProdId { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + NSString * deviceInfo = [YYUtility deviceID]; + NSString * clientIp= [YYUtility ipAddress]; + [Api requestIAPRecharge:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSString *orderId = (NSString *)data.data[@"recordId"]; + [[self getView] requestIAPRechargeOrderSuccess:orderId chargeProdId:chargeProdId]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] requestIAPRechargeOrderFail]; + }] chargeProdId:chargeProdId uid:uid ticket:ticket deviceInfo:deviceInfo clientIp:clientIp]; +} + + +/// 充值成功二次验证 +/// @param receipt 凭据 +/// @param orderId 订单编号 +/// @param transcationId 商品id +- (void)checkReceiptWithData:(NSString *)receipt orderId:(NSString *)orderId transcationId:(NSString *)transcationId { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + [Api checkReceipt:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] checkReceiptSuccess:transcationId]; + } showLoading:YES] receipt:receipt chooseEnv:@"true" chargeRecordId:orderId transcationId:transcationId uid:uid ticket:ticket]; +} + + +/// 批量验证内购掉单 +/// @param transcations 凭据的数组 +- (void)checkTranscationIds:(NSArray *)transcations { + NSString * transcationIdStr = [transcations toJSONString]; + [Api requestCheckTranscationIds:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] checkTranscationIdsSuccess]; + }] transcationIdStr:transcationIdStr]; +} + +@end diff --git a/YuMi/Modules/YMMine/Presenter/XPMineResetLoginPwdPresenter.h b/YuMi/Modules/YMMine/Presenter/XPMineResetLoginPwdPresenter.h new file mode 100644 index 00000000..93231256 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineResetLoginPwdPresenter.h @@ -0,0 +1,29 @@ +// +// YMMineResetLoginPwdPresenter.h +// YUMI +// +// Created by YUMI on 2022/5/5. +// + +#import "BaseMvpPresenter.h" +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineResetLoginPwdPresenter : BaseMvpPresenter + +/// 获取手机的验证码 +/// @param phone 手机号 +/// @param type 类型 +- (void)phoneSmsCode:(NSString *)phone type:(GetSmsType)type phoneAreaCode:(NSString *)phoneAreaCode; + +/// 重新设置登录密码 +/// @param phone 手机号 +/// @param smsCode 验证码 +/// @param newPwd 密码 +- (void)resetLoginPassword:(NSString *)phone smsCode:(NSString *)smsCode newPwd:(NSString *)newPwd; + +/// 退出当前账号 +- (void)logoutCurrentAccount; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/XPMineResetLoginPwdPresenter.m b/YuMi/Modules/YMMine/Presenter/XPMineResetLoginPwdPresenter.m new file mode 100644 index 00000000..468aa190 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineResetLoginPwdPresenter.m @@ -0,0 +1,70 @@ +// +// YMMineResetLoginPwdPresenter.m +// YUMI +// +// Created by YUMI on 2022/5/5. +// + +#import "XPMineResetLoginPwdPresenter.h" +#import +#import "Api+Mine.h" +#import "Api+Room.h" +#import "DESEncrypt.h" +#import "YUMIConstant.h" +#import "XPMineResetLoginPwdProtocol.h" +#import "XPRoomMiniManager.h" +#import "AccountInfoStorage.h" +#import "RtcManager.h" +#import "RoomInfoModel.h" +#import "AccountModel.h" +@implementation XPMineResetLoginPwdPresenter + +/// 获取手机的验证码 +/// @param phone 手机号 +/// @param type 类型 +- (void)phoneSmsCode:(NSString *)phone type:(GetSmsType)type phoneAreaCode:(NSString *)phoneAreaCode{ + NSString * typeStr = [NSString stringWithFormat:@"%lu", (unsigned long)type]; + NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)]; + [Api phoneSmsCode:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] phoneSmsCodeSuccess]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + + }] mobile:desPhone type:typeStr phoneAreaCode:phoneAreaCode]; +} + +/// 重新设置登录密码 +/// @param phone 手机号 +/// @param smsCode 验证码 +/// @param newPwd 密码 +- (void)resetLoginPassword:(NSString *)phone smsCode:(NSString *)smsCode newPwd:(NSString *)newPwd { + NSString * desNewPwd = [DESEncrypt encryptUseDES:newPwd key:KeyWithType(KeyType_PasswordEncode)]; + NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)]; + [Api resetLoingPassword:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] resetLoginPasswordSuccess]; + }] phone:desPhone newPwd:desNewPwd smsCode:smsCode]; +} + +/// 退出当前账号 +- (void)logoutCurrentAccount { + if([XPRoomMiniManager shareManager].getRoomInfo) { + NSString *roomUid = [NSString stringWithFormat:@"%ld", [XPRoomMiniManager shareManager].getRoomInfo.uid]; + ///上报退房 + [Api requestReportUserOutRoom:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + } uid:[[AccountInfoStorage instance] getUid] roomUid:roomUid ticket:[[AccountInfoStorage instance] getTicket]]; + ///退出房间 + NSString * roomId = [NSString stringWithFormat:@"%ld", [XPRoomMiniManager shareManager].getRoomInfo.roomId]; + [[NIMSDK sharedSDK].chatroomManager exitChatroom:roomId completion:nil]; + [[RtcManager instance] exitRoom]; + [[XPRoomMiniManager shareManager] configRoomInfo:nil]; + [[XPRoomMiniManager shareManager] configUserInfo:nil]; + [[XPRoomMiniManager shareManager] configCurrentMusic:nil isPlaying:NO]; + [[XPRoomMiniManager shareManager] resetLocalMessage]; + } + AccountModel * account = [[AccountInfoStorage instance] accountModel]; + [Api logoutCurrentAccount:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] logoutCurrentAccountSuccess]; + }] access_token:account.access_token]; + [self logout]; +} + +@end diff --git a/YuMi/Modules/YMMine/Presenter/XPMineResetPayPasswordPresenter.h b/YuMi/Modules/YMMine/Presenter/XPMineResetPayPasswordPresenter.h new file mode 100644 index 00000000..56101043 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineResetPayPasswordPresenter.h @@ -0,0 +1,20 @@ +// +// YMMineResetPayPasswordPresenter.h +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import "MainPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineResetPayPasswordPresenter : MainPresenter +/// 重置支付密码 +/// @param password 支付密码 +/// @param phone 手机号 +/// @param veriftCode 验证码 +- (void)resetPayPassword:(NSString *)password phone:(NSString *)phone veriftCode:(NSString *)veriftCode; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/XPMineResetPayPasswordPresenter.m b/YuMi/Modules/YMMine/Presenter/XPMineResetPayPasswordPresenter.m new file mode 100644 index 00000000..d2e9bfd8 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineResetPayPasswordPresenter.m @@ -0,0 +1,33 @@ +// +// YMMineResetPayPasswordPresenter.m +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import "XPMineResetPayPasswordPresenter.h" +///Api +#import "Api+Mine.h" +///Tool +#import "AccountInfoStorage.h" +#import "DESEncrypt.h" +#import "YUMIConstant.h" +///P +#import "XPMineResetPayPasswordProtocol.h" + +@implementation XPMineResetPayPasswordPresenter + +/// 重置支付密码 +/// @param password 支付密码 +/// @param phone 手机号 +/// @param veriftCode 验证码 +- (void)resetPayPassword:(NSString *)password phone:(NSString *)phone veriftCode:(NSString *)veriftCode { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + NSString * newpasswordDes = [DESEncrypt encryptUseDES:password key:KeyWithType(KeyType_PasswordEncode)]; + [Api setPayPassword:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] resetPayPasswordSuccess]; + }] newPasswd:newpasswordDes phone:phone code:veriftCode uid:uid ticket:ticket]; +} + +@end diff --git a/YuMi/Modules/YMMine/Presenter/XPMineSettingPresent.h b/YuMi/Modules/YMMine/Presenter/XPMineSettingPresent.h new file mode 100644 index 00000000..5b0ed46a --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineSettingPresent.h @@ -0,0 +1,29 @@ +// +// YMMineSettingPresent.h +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN +@class UserInfoModel; +@interface XPMineSettingPresent : BaseMvpPresenter + +/// 获取用户信息 +- (void)getUserInfo; + +/// 获取数据源 +/// @param userinfo 当前的用户信息 +- (void)getMineSettingDataSourceWith:(UserInfoModel *)userinfo; + +/// 退出当前账号 +- (void)logoutCurrentAccount; + +///获取版本更新 +- (void)getVersionUpdate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/XPMineSettingPresent.m b/YuMi/Modules/YMMine/Presenter/XPMineSettingPresent.m new file mode 100644 index 00000000..007e3187 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineSettingPresent.m @@ -0,0 +1,202 @@ +// +// YMMineSettingPresent.m +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import "XPMineSettingPresent.h" +#import "Api+Mine.h" +#import "Api+Room.h" +///P +#import "XPMineSettingProtocol.h" +///Model +#import "UserInfoModel.h" +#import "AccountModel.h" +#import "XPMineSettingItemModel.h" +#import "YYUtility.h" +#import "XPVersionUpdateModel.h" +#import "Api+Main.h" +///Tool +#import "AccountInfoStorage.h" +#import "XPRoomMiniManager.h" +#import "RtcManager.h" +#import "ClientConfig.h" +///Third +#import + +@interface XPMineSettingPresent () +///手机号 +@property (nonatomic,strong) XPMineSettingItemModel *phoneItem; +///支付密码 +@property (nonatomic,strong) XPMineSettingItemModel *payItem; +///登录密码 +@property (nonatomic,strong) XPMineSettingItemModel *loginItem; +///数据源 +@property (nonatomic,strong) NSArray *datasouce; +@end + +@implementation XPMineSettingPresent +- (id)getView { + return (id) [super getView]; +} + + +/// 获取数据源 +/// @param userinfo 当前的用户信息 +- (void)getMineSettingDataSourceWith:(UserInfoModel *)userinfo { + if (self.datasouce.count > 0) { + self.phoneItem.subTitle = userinfo.isBindPhone ? userinfo.phone : YMLocalizedString(@"XPMineSettingPresent0"); + self.payItem.subTitle = userinfo.isBindPaymentPwd ? @"修改" : YMLocalizedString(@"XPMineSettingPresent2"); + } else { + if ([ClientConfig shareConfig].canOpen) { + XPMineSettingItemModel * phoneItem = [[XPMineSettingItemModel alloc] init]; + phoneItem.title = YMLocalizedString(@"XPMineSettingPresent3"); + phoneItem.subTitle = userinfo.isBindPhone ? userinfo.phone : YMLocalizedString(@"XPMineSettingPresent4"); + phoneItem.type = XPMineSettingItemType_Phone; + self.phoneItem = phoneItem; + + XPMineSettingItemModel * loginItem = [[XPMineSettingItemModel alloc] init]; + loginItem.title = userinfo.isBindPasswd ? @"重置密码" : YMLocalizedString(@"XPMineSettingPresent6"); + loginItem.subTitle = YMLocalizedString(@"XPMineSettingPresent7"); + loginItem.type = XPMineSettingItemType_Login_Password; + self.loginItem = loginItem; + + XPMineSettingItemModel * blackListItem = [[XPMineSettingItemModel alloc] init]; + blackListItem.title = YMLocalizedString(@"XPMineSettingPresent8"); + blackListItem.subTitle = @""; + blackListItem.type = XPMineSettingItemType_Black_Manager; + + XPMineSettingItemModel * payItem = [[XPMineSettingItemModel alloc] init]; + payItem.title = YMLocalizedString(@"XPMineSettingPresent9"); + payItem.subTitle = userinfo.isBindPaymentPwd ? @"修改" : YMLocalizedString(@"XPMineSettingPresent11"); + payItem.type = XPMineSettingItemType_Pay_Password; + self.payItem = payItem; + + XPMineSettingItemModel * notificaItem = [[XPMineSettingItemModel alloc] init]; + notificaItem.title = YMLocalizedString(@"XPMineSettingPresent12"); + notificaItem.subTitle = YMLocalizedString(@"XPMineSettingPresent13"); + notificaItem.type = XPMineSettingItemType_Notification_Remind; + + XPMineSettingItemModel * privacyItem = [[XPMineSettingItemModel alloc] init]; + privacyItem.title = YMLocalizedString(@"XPMineSettingPresent14"); + privacyItem.subTitle = @""; + privacyItem.type = XPMineSettingItemType_Permission; + + XPMineSettingItemModel * helperItem = [[XPMineSettingItemModel alloc] init]; + helperItem.title = YMLocalizedString(@"XPMineSettingPresent15"); + helperItem.subTitle = @""; + helperItem.type = XPMineSettingItemType_Helper; + + XPMineSettingItemModel * feedbackItem = [[XPMineSettingItemModel alloc] init]; + feedbackItem.title = YMLocalizedString(@"XPMineSettingPresent16"); + feedbackItem.subTitle = @""; + feedbackItem.type = XPMineSettingItemType_Feedback; + + XPMineSettingItemModel * clearMemoryItem = [[XPMineSettingItemModel alloc] init]; + clearMemoryItem.title = YMLocalizedString(@"XPMineSettingPresent17"); + clearMemoryItem.subTitle = @""; + clearMemoryItem.type = XPMineSettingItemType_Clear_Memory; + + XPMineSettingItemModel *updateItem = [[XPMineSettingItemModel alloc] init]; + updateItem.title = YMLocalizedString(@"XPMineSettingPresent18"); + updateItem.subTitle = @""; + updateItem.type = XPMineSettingItemType_CheckUpdate; + + XPMineSettingItemModel * aboutusItem = [[XPMineSettingItemModel alloc] init]; + aboutusItem.title = [NSString stringWithFormat:@"关于%@", AppName]; + aboutusItem.subTitle = @""; + aboutusItem.type = XPMineSettingItemType_About_Us; + + NSArray * oneSection = @[phoneItem]; + NSArray * twoSection = @[loginItem,payItem, notificaItem, blackListItem]; + NSArray * threeSection = @[privacyItem]; + NSArray * fourthSection = @[helperItem, feedbackItem, clearMemoryItem, updateItem, aboutusItem]; + + self.datasouce = @[oneSection, twoSection, threeSection, fourthSection]; + }else{ + XPMineSettingItemModel * blackListItem = [[XPMineSettingItemModel alloc] init]; + blackListItem.title = YMLocalizedString(@"XPMineSettingPresent20"); + blackListItem.subTitle = @""; + blackListItem.type = XPMineSettingItemType_Black_Manager; + + XPMineSettingItemModel * phoneItem = [[XPMineSettingItemModel alloc] init]; + phoneItem.title = YMLocalizedString(@"XPMineSettingPresent21"); + phoneItem.subTitle = userinfo.isBindPhone ? userinfo.phone : @""; + phoneItem.type = XPMineSettingItemType_Phone; + self.phoneItem = phoneItem; + + XPMineSettingItemModel * loginItem = [[XPMineSettingItemModel alloc] init]; + loginItem.title = userinfo.isBindPasswd ? @"重置密码" : YMLocalizedString(@"XPMineSettingPresent23"); + loginItem.subTitle = @""; + loginItem.type = XPMineSettingItemType_Login_Password; + self.loginItem = loginItem; + + XPMineSettingItemModel * clearMemoryItem = [[XPMineSettingItemModel alloc] init]; + clearMemoryItem.title = YMLocalizedString(@"XPMineSettingPresent24"); + clearMemoryItem.subTitle = @""; + clearMemoryItem.type = XPMineSettingItemType_Clear_Memory; + + XPMineSettingItemModel * deleteItem = [[XPMineSettingItemModel alloc] init]; + deleteItem.title = YMLocalizedString(@"XPMineSettingPresent25"); + deleteItem.subTitle = @""; + deleteItem.type = XPMineSettingItemType_Delete_Account; + + NSArray * oneSection = @[blackListItem]; + NSArray * twoSection = @[phoneItem, loginItem]; + NSArray * threeSection = @[clearMemoryItem, deleteItem]; + + self.datasouce = @[oneSection, twoSection, threeSection]; + } + } + + [[self getView] getMineSettingDatasourceSuccess:self.datasouce]; +} + +// 获取用户信息 +- (void)getUserInfo { + NSString * uid = [[AccountInfoStorage instance] getUid]; + [Api getUserInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + UserInfoModel * infoModel = [UserInfoModel modelWithDictionary:data.data]; + [[self getView] onGetUserInfoSuccess:infoModel]; + }] uid:uid]; +} + + +/// 退出当前账号 +- (void)logoutCurrentAccount { + if([XPRoomMiniManager shareManager].getRoomInfo) { + NSString *roomUid = [NSString stringWithFormat:@"%ld", [XPRoomMiniManager shareManager].getRoomInfo.uid]; + ///上报退房 + [Api requestReportUserOutRoom:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + } uid:[[AccountInfoStorage instance] getUid] roomUid:roomUid ticket:[[AccountInfoStorage instance] getTicket]]; + ///退出房间 + NSString * roomId = [NSString stringWithFormat:@"%ld", [XPRoomMiniManager shareManager].getRoomInfo.roomId]; + [[NIMSDK sharedSDK].chatroomManager exitChatroom:roomId completion:nil]; + [[RtcManager instance] exitRoom]; + [[XPRoomMiniManager shareManager] configRoomInfo:nil]; + [[XPRoomMiniManager shareManager] configUserInfo:nil]; + [[XPRoomMiniManager shareManager] configCurrentMusic:nil isPlaying:NO]; + [[XPRoomMiniManager shareManager] resetLocalMessage]; + } + AccountModel * account = [[AccountInfoStorage instance] accountModel]; + [Api logoutCurrentAccount:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] logoutCurrentAccountSuccess]; + }] access_token:account.access_token]; + [self logout]; +} + +#pragma mark - 版本更新 +-(void)getVersionUpdate{ + NSString *appVersion = [YYUtility appVersion]; + NSString *os = @"ios"; + NSString *channel = [YYUtility getAppSource]; + [Api requestVersionUpdate:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + XPVersionUpdateModel *model = [XPVersionUpdateModel modelWithDictionary:data.data]; + [[self getView] getVersionUpdate:model]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getVersionUpdateFail]; + } errorToast:NO] appVersion:appVersion os:os channel:channel]; +} + +@end diff --git a/YuMi/Modules/YMMine/Presenter/XPMineUserDataPresenter.h b/YuMi/Modules/YMMine/Presenter/XPMineUserDataPresenter.h new file mode 100644 index 00000000..53745054 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineUserDataPresenter.h @@ -0,0 +1,26 @@ +// +// YMMineUserDataPresenter.h +// YUMI +// +// Created by YUMI on 2022/4/14. +// + +#import "BaseMvpPresenter.h" + +@class UserInfoModel; +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineUserDataPresenter : BaseMvpPresenter + +/// 获取会长和当前用户家族详细的信息 +/// @param uid 用户的uid +- (void)getClanDetailInfo:(NSString *)uid currentUserUid:(NSString *)currentUserUid; + +/// 用户申请加入公会 +/// @param hallId 公会的id +- (void)memberApplyHall:(NSString *)hallId; + +- (void)getUserInfo:(NSString *)uid success:(void(^)(UserInfoModel * info))success; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/XPMineUserDataPresenter.m b/YuMi/Modules/YMMine/Presenter/XPMineUserDataPresenter.m new file mode 100644 index 00000000..220137b2 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineUserDataPresenter.m @@ -0,0 +1,69 @@ +// +// YMMineUserDataPresenter.m +// YUMI +// +// Created by YUMI on 2022/4/14. +// + +#import "XPMineUserDataPresenter.h" +#import +#import "Api+Guild.h" +#import "ClanDetailInfoModel.h" +#import "AccountInfoStorage.h" +#import "MineSkillCardListInfoModel.h" +#import "XPMineUserDataProtocol.h" +#import "UserInfoModel.h" +@implementation XPMineUserDataPresenter + +/// 获取会长和当前用户家族详细的信息 +/// @param uid 用户的uid +- (void)getClanDetailInfo:(NSString *)uid currentUserUid:(NSString *)currentUserUid { + RACSubject* owner = [RACSubject subject]; + RACSubject* currentUser = [RACSubject subject]; + + [[RACSignal combineLatest:@[owner, currentUser] reduce:^id(ClanDetailInfoModel* ownerClanInfo, ClanDetailInfoModel* currentUserClanInfo){ + [[self getView] getClanDetailInfoSuccess:ownerClanInfo currentUserClanInfo:currentUserClanInfo]; + return nil; + }] subscribeError:^(NSError * _Nullable error) { + + }]; + + [Api getClanDetailInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + ClanDetailInfoModel * clanDetailInfo = [ClanDetailInfoModel modelWithDictionary:data.data]; + [currentUser sendNext:clanDetailInfo]; + [currentUser sendCompleted]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [currentUser sendNext:nil]; + [currentUser sendCompleted]; + }] uid:currentUserUid]; + + [Api getClanDetailInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + ClanDetailInfoModel * clanDetailInfo = [ClanDetailInfoModel modelWithDictionary:data.data]; + [owner sendNext:clanDetailInfo]; + [owner sendCompleted]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [owner sendNext:nil]; + [owner sendCompleted]; + }] uid:uid]; +} + + +/// 用户申请加入公会 +/// @param hallId 公会的id +- (void)memberApplyHall:(NSString *)hallId { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api memberApplyHall:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] memberApplyHallSuccess]; + } showLoading:YES] hallId:hallId uid:uid]; +} + +- (void)getUserInfo:(NSString *)uid success:(void(^)(UserInfoModel * info))success { + [Api getUserInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + UserInfoModel * info = [UserInfoModel modelWithDictionary:data.data]; + if (success) { + success(info); + } + }] uid:uid]; +} + +@end diff --git a/YuMi/Modules/YMMine/Presenter/XPMineUserInfoEditPresenter.h b/YuMi/Modules/YMMine/Presenter/XPMineUserInfoEditPresenter.h new file mode 100644 index 00000000..f2d61588 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineUserInfoEditPresenter.h @@ -0,0 +1,35 @@ +// +// YMMineUserInfoEditPresenter.h +// YUMI +// +// Created by YUMI on 2021/9/23. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN +@class UserInfoModel; +@interface XPMineUserInfoEditPresenter : BaseMvpPresenter + +// 获取用户信息 +- (void)getUserInfo; + +///获取个人资料页编辑的数据源 +- (void)getUserInfoEditDataSourceWithUserInfo:(UserInfoModel *)userInfo; + +/// 补全资料 +/// @param avatar 头像 +/// @param nick 昵称 +/// @param birth 生日 +/// @param userDesc 用户的签名 +- (void)complectionInfoWithAvatar:(NSString * _Nullable)avatar + nick:(NSString * _Nullable)nick + birth:(NSString * _Nullable)birth + userDesc:(NSString * _Nullable)userDesc; + +/// 上传头像 +/// @param avatar 头像 +- (void)uploadAvatar:(UIImage *)avatar; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/XPMineUserInfoEditPresenter.m b/YuMi/Modules/YMMine/Presenter/XPMineUserInfoEditPresenter.m new file mode 100644 index 00000000..4534d511 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineUserInfoEditPresenter.m @@ -0,0 +1,190 @@ +// +// YMMineUserInfoEditPresenter.m +// YUMI +// +// Created by YUMI on 2021/9/23. +// + +#import "XPMineUserInfoEditPresenter.h" +///Api +#import "Api+Mine.h" +///Tool +#import "AccountInfoStorage.h" +#import "UploadImage.h" +#import "NSMutableDictionary+Saft.h" +///Model +#import "XPMineUserInfoEditModel.h" +#import "UserInfoModel.h" +///P +#import "XPMineUserInfoEditProtocol.h" +@interface XPMineUserInfoEditPresenter () +///昵称 +@property (nonatomic,strong) XPMineUserInfoEditModel *nickItem; +///头像 +@property (nonatomic,strong) XPMineUserInfoEditModel *avatarItem; +///生日 +@property (nonatomic,strong) XPMineUserInfoEditModel *birthItem; +///相册 +@property (nonatomic,strong) XPMineUserInfoEditModel *photoItem; +///介绍 +@property (nonatomic,strong) XPMineUserInfoEditModel *desItem; +/// +@property (nonatomic,strong) NSMutableArray *editArray; +///日期的格式 +@property (nonatomic,strong) NSDateFormatter *dateFormatter; +@end + +@implementation XPMineUserInfoEditPresenter + +///获取用户信息 +- (void)getUserInfo { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api getUserInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + UserInfoModel * infoModel = [UserInfoModel modelWithDictionary:data.data]; + [[self getView] onGetUserInfoSuccess:infoModel]; + }] uid:uid]; +} + +///获取个人资料页编辑的数据源 +- (void)getUserInfoEditDataSourceWithUserInfo:(UserInfoModel *)userInfo { + ///数据组装 + if (self.editArray.count <= 0) { + [self.editArray addObject:self.avatarItem]; + [self.editArray addObject:self.nickItem]; + [self.editArray addObject:self.birthItem]; + [self.editArray addObject:self.photoItem]; + [self.editArray addObject:self.desItem]; + } + + + self.avatarItem.isReview = userInfo.isReview; + self.avatarItem.avatarUrl = userInfo.isReview ? userInfo.reviewingAvatar : userInfo.avatar; + + self.nickItem.subTitle = userInfo.nick; + NSString *dateStr = [self.dateFormatter stringFromDate:[NSDate dateWithTimeIntervalSince1970:userInfo.birth/1000]]; + self.birthItem.subTitle = dateStr; + + self.photoItem.photoArray = userInfo.privatePhoto; + + self.desItem.subTitle = userInfo.userDesc.length > 0 ? userInfo.userDesc : @""; + ///数据回传 + [[self getView] getUserInfoEditDataSourceSuccess:self.editArray]; +} + +/// 补全资料 +/// @param avatar 头像 +/// @param nick 昵称 +/// @param birth 生日 +/// @param userDesc 用户的签名 +- (void)complectionInfoWithAvatar:(NSString * _Nullable)avatar + nick:(NSString * _Nullable)nick + birth:(NSString * _Nullable)birth + userDesc:(NSString * _Nullable)userDesc { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [[AccountInfoStorage instance] getTicket]; + NSMutableDictionary * dic = [NSMutableDictionary dictionary]; + if (avatar.length > 0) { + [dic safeSetObject:avatar forKey:@"avatar"]; + } + + if (nick.length > 0) { + [dic safeSetObject:nick forKey:@"nick"]; + } + + if (birth.length > 0) { + [dic safeSetObject:birth forKey:@"birth"]; + } + + if (userDesc.length > 0) { + [dic safeSetObject:userDesc forKey:@"userDesc"]; + } + + [dic safeSetObject:uid forKey:@"uid"]; + [dic safeSetObject:ticket forKey:@"ticket"]; + [Api completeUserInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + UserInfoModel * infoModel = [UserInfoModel modelWithDictionary:data.data]; + [[self getView] completeUserInfoSuccess:infoModel]; + }] userInfo:dic]; +} + + +/// 上传头像 +/// @param avatar 头像 +- (void)uploadAvatar:(UIImage *)avatar { + [Api qiniuUpLoadImage:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSString *key = data.data[@"key"]; + NSString *token = data.data[@"token"]; + [UploadImage uploadImage:avatar named:key token:token success:^(NSString * _Nonnull key, NSDictionary * _Nonnull resp) { + NSString *url = resp[@"path"]; + [[self getView] uploadImageSuccess:url]; + } failure:^(NSNumber * _Nonnull resCode, NSString * _Nonnull message) { + [[self getView] showErrorToast:YMLocalizedString(@"XPMineUserInfoEditPresenter0")]; + }]; + }]]; +} + + +#pragma mark - Getters And Setters +- (XPMineUserInfoEditModel *)nickItem { + if (!_nickItem) { + _nickItem = [[XPMineUserInfoEditModel alloc] init]; + _nickItem.type = XPMineUserInfoEditType_Nick; + _nickItem.title = @"昵称:"; + } + return _nickItem; +} + +- (XPMineUserInfoEditModel *)avatarItem { + if (!_avatarItem) { + _avatarItem = [[XPMineUserInfoEditModel alloc] init]; + _avatarItem.type = XPMineUserInfoEditType_Avatar; + _avatarItem.title = @"头像:"; + } + return _avatarItem; +} + + +- (XPMineUserInfoEditModel *)birthItem { + if (!_birthItem) { + _birthItem = [[XPMineUserInfoEditModel alloc] init]; + _birthItem.type = XPMineUserInfoEditType_Birth; + _birthItem.title = @"生日:"; + } + return _birthItem; +} + +- (XPMineUserInfoEditModel *)photoItem { + if (!_photoItem) { + _photoItem = [[XPMineUserInfoEditModel alloc] init]; + _photoItem.type = XPMineUserInfoEditType_Photo; + _photoItem.title = @"相册:"; + } + return _photoItem; +} + +- (XPMineUserInfoEditModel *)desItem { + if (!_desItem) { + _desItem = [[XPMineUserInfoEditModel alloc] init]; + _desItem.type = XPMineUserInfoEditType_UseDes; + _desItem.title = @"个人介绍:"; + } + return _desItem; +} + +- (NSMutableArray *)editArray { + if (!_editArray) { + _editArray = [NSMutableArray array]; + } + return _editArray; +} + +- (NSDateFormatter *)dateFormatter { + if (!_dateFormatter) { + _dateFormatter = [[NSDateFormatter alloc] init]; + _dateFormatter.dateFormat = @"yyyy-MM-dd"; + } + return _dateFormatter; +} + + +@end diff --git a/YuMi/Modules/YMMine/Presenter/XPMineUserInfoGiftWallPresenter.h b/YuMi/Modules/YMMine/Presenter/XPMineUserInfoGiftWallPresenter.h new file mode 100644 index 00000000..30e8421d --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineUserInfoGiftWallPresenter.h @@ -0,0 +1,16 @@ +// +// YMMineUserInfoGiftWallPresenter.h +// YUMI +// +// Created by YUMI on 2022/4/15. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineUserInfoGiftWallPresenter : BaseMvpPresenter +- (void)getUserGiftWall:(NSString *)uid giftType:(NSInteger)giftType; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/XPMineUserInfoGiftWallPresenter.m b/YuMi/Modules/YMMine/Presenter/XPMineUserInfoGiftWallPresenter.m new file mode 100644 index 00000000..d9f5a804 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineUserInfoGiftWallPresenter.m @@ -0,0 +1,23 @@ +// +// YMMineUserInfoGiftWallPresenter.m +// YUMI +// +// Created by YUMI on 2022/4/15. +// + +#import "XPMineUserInfoGiftWallPresenter.h" +#import "Api+Mine.h" +#import "XPMineUserInfoGiftWallProtocol.h" +#import "UserGiftWallInfoModel.h" + +@implementation XPMineUserInfoGiftWallPresenter + +- (void)getUserGiftWall:(NSString *)uid giftType:(NSInteger)giftType { + NSString * giftTypeStr = [NSString stringWithFormat:@"%ld", giftType]; + [Api getUserGiftWall:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array= [UserGiftWallInfoModel modelsWithArray:data.data]; + [[self getView] getUserGiftWallSuccess:array]; + }] uid:uid giftType:giftTypeStr]; +} + +@end diff --git a/YuMi/Modules/YMMine/Presenter/XPMineUserInfoPresenter.h b/YuMi/Modules/YMMine/Presenter/XPMineUserInfoPresenter.h new file mode 100644 index 00000000..2ca77310 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineUserInfoPresenter.h @@ -0,0 +1,33 @@ +// +// YMMineUserInfoPresenter.h +// YUMI +// +// Created by YUMI on 2021/9/23. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineUserInfoPresenter : BaseMvpPresenter +// 获取用户信息 +- (void)getUserInfoWithUid:(NSString *)uid; +// 获取用户详细信息 +- (void)getUserDetailInfoWithUid:(NSString *)uid; +/// 两个人的关注状态 +/// @param targetUid 对方的uid +- (void)getUserAttentionState:(NSString *)targetUid; + +/// 关注用户 /取消该关注 +/// @param targetUid 目标用户的uid +/// @param state 是否关注 yes 关注 NO 取消关注 +- (void)attentionUser:(NSString *)targetUid state:(BOOL)state; + +///上传访问用户主页记录 +///@param targetUid 被访问用户的uid +- (void)visitUser:(NSString *)targetUid; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/XPMineUserInfoPresenter.m b/YuMi/Modules/YMMine/Presenter/XPMineUserInfoPresenter.m new file mode 100644 index 00000000..e79ca5e3 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineUserInfoPresenter.m @@ -0,0 +1,67 @@ +// +// YMMineUserInfoPresenter.m +// YUMI +// +// Created by YUMI on 2021/9/23. +// + +#import "XPMineUserInfoPresenter.h" +///Tool +#import "Api+Mine.h" +#import "AccountInfoStorage.h" +///Model +#import "UserInfoModel.h" +///P +#import "XPMineUserInfoProtocol.h" + +@implementation XPMineUserInfoPresenter + +// 获取用户信息 +- (void)getUserInfoWithUid:(NSString *)uid { + [Api getUserInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + UserInfoModel * infoModel = [UserInfoModel modelWithDictionary:data.data]; + [[self getView] onGetUserInfoSuccess:infoModel]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + + }] uid:uid]; +} + +// 获取用户详细信息 +- (void)getUserDetailInfoWithUid:(NSString *)uid { + [Api userDetailInfoCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + UserInfoModel * infoModel = [UserInfoModel modelWithDictionary:data.data]; + [[self getView] ongetDetailInfoSuccess:infoModel]; + }] uid:uid page:@"1" pageSize:@"20"]; +} + +/// 两个人的关注状态 +/// @param targetUid 对方的uid +- (void)getUserAttentionState:(NSString *)targetUid; { + NSString * uid = [[AccountInfoStorage instance] getUid]; + [Api attentionStatusCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + BOOL isLike = ((NSNumber *)data.data).boolValue; + [[self getView] getAttentionStateSuccess:isLike]; + }] uid:uid isLikeUid:targetUid]; +} + + +/// 关注用户 /取消该关注 +/// @param targetUid 目标用户的uid +/// @param state 是否关注 yes 关注 NO 取消关注 +- (void)attentionUser:(NSString *)targetUid state:(BOOL)state { + NSString * uid = [[AccountInfoStorage instance] getUid]; + NSString * ticket = [[AccountInfoStorage instance] getTicket]; + NSString * type = state ? @"1" : @"2"; + [Api attentionCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] attentionUserSuccess:state]; + }] uid:uid likedUid:targetUid ticket:ticket type:type]; +} + +///上传访问用户主页记录 +///@param targetUid 被访问用户的uid +- (void)visitUser:(NSString *)targetUid { + [Api uploadVisitUserCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + }] uid:targetUid]; +} + +@end diff --git a/YuMi/Modules/YMMine/Presenter/XPMineUserInfolbumPresenter.h b/YuMi/Modules/YMMine/Presenter/XPMineUserInfolbumPresenter.h new file mode 100644 index 00000000..ed960218 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineUserInfolbumPresenter.h @@ -0,0 +1,29 @@ +// +// YMMineUserInfolbumPresenter.h +// YUMI +// +// Created by YUMI on 2021/9/24. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineUserInfolbumPresenter : BaseMvpPresenter +///获取用户信息 +- (void)getUserInfo; +/// 将图片的地址上传到自己的服务器 +/// @param url 图片的地址 + +- (void)uploadUserAlbumWithUrlStr:(NSString *)url; + +/// 相册 +/// @param albumImage 相册的image +- (void)uploadAlbumImage:(UIImage *)albumImage; + +/// 删除用户图片 +/// @param pid 相册的id +- (void)deleteImageUrlFromServerWithPid:(NSString *)pid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/XPMineUserInfolbumPresenter.m b/YuMi/Modules/YMMine/Presenter/XPMineUserInfolbumPresenter.m new file mode 100644 index 00000000..6697af7b --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineUserInfolbumPresenter.m @@ -0,0 +1,66 @@ +// +// YMMineUserInfolbumPresenter.m +// YUMI +// +// Created by YUMI on 2021/9/24. +// + +#import "XPMineUserInfolbumPresenter.h" +///Api +#import "Api+Mine.h" +///Model +#import "UserInfoModel.h" +///Tool +#import "AccountInfoStorage.h" +#import "UploadImage.h" +///P +#import "XPMineUserInfoAlbumProtocol.h" + +@implementation XPMineUserInfolbumPresenter + +///获取用户信息 +- (void)getUserInfo { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api getUserInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + UserInfoModel * infoModel = [UserInfoModel modelWithDictionary:data.data]; + [[self getView] onGetUserInfoSuccess:infoModel]; + }] uid:uid]; +} + +/// 将图片的地址上传到自己的服务器 +/// @param url 图片的地址 +- (void)uploadUserAlbumWithUrlStr:(NSString *)url { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + [Api uploadUserAlbum:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] uploadUserAlbumSuccess]; + } showLoading:YES] photoStr:url uid:uid ticket:ticket]; +} + +/// 相册 +/// @param albumImage 相册的image +- (void)uploadAlbumImage:(UIImage *)albumImage { + [Api qiniuUpLoadImage:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSString *key = data.data[@"key"]; + NSString *token = data.data[@"token"]; + [UploadImage uploadImage:albumImage named:key token:token success:^(NSString * _Nonnull key, NSDictionary * _Nonnull resp) { + NSString *url = resp[@"path"]; + [[self getView] uploadAlbumImageToThirdSuccess:url]; + } failure:^(NSNumber * _Nonnull resCode, NSString * _Nonnull message) { + [[self getView] showErrorToast:YMLocalizedString(@"XPMineUserInfolbumPresenter0")]; + }]; + } showLoading:YES]]; +} + + +/// 删除用户图片 +/// @param pid 相册的id +- (void)deleteImageUrlFromServerWithPid:(NSString *)pid { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + [Api deleteImageFromServer:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] deleteUserAlbumSuccess]; + } showLoading:YES] pid:pid uid:uid ticket:ticket]; +} + +@end diff --git a/YuMi/Modules/YMMine/Presenter/XPMineVerifIdentityPresenter.h b/YuMi/Modules/YMMine/Presenter/XPMineVerifIdentityPresenter.h new file mode 100644 index 00000000..9f2662aa --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineVerifIdentityPresenter.h @@ -0,0 +1,26 @@ +// +// YMMineVerifIdentityPresenter.h +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import "MainPresenter.h" +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineVerifIdentityPresenter : MainPresenter + +/// 获取手机的验证码 +/// @param phone 手机号 +/// @param type 类型 +- (void)phoneSmsCode:(NSString *)phone type:(GetSmsType)type phoneAreaCode:(NSString *)phoneAreaCode; + + +/// 校验手机验证码接口 +/// @param moblieNum 手机号码 +/// @param code 验证码 +- (void)checkMoblieCodeWithMoblie:(NSString *)moblieNum code:(NSString *)code; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/XPMineVerifIdentityPresenter.m b/YuMi/Modules/YMMine/Presenter/XPMineVerifIdentityPresenter.m new file mode 100644 index 00000000..f6b05135 --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineVerifIdentityPresenter.m @@ -0,0 +1,47 @@ +// +// YMMineVerifIdentityPresenter.m +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import "XPMineVerifIdentityPresenter.h" +///Api +#import "Api.h" +///P +#import "XPMineVerifIdentityProtocol.h" +///Tool +#import "AccountInfoStorage.h" +#import "DESEncrypt.h" +#import "YUMIConstant.h" + + +@implementation XPMineVerifIdentityPresenter + +/// 获取手机的验证码 +/// @param phone 手机号 +/// @param type 类型 +- (void)phoneSmsCode:(NSString *)phone type:(GetSmsType)type phoneAreaCode:(NSString *)phoneAreaCode{ + NSString * typeStr = [NSString stringWithFormat:@"%lu", (unsigned long)type]; + NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)]; + [Api phoneSmsCode:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] phoneSmsCodeSuccess]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + + }] mobile:desPhone type:typeStr phoneAreaCode:phoneAreaCode]; +} + + +/// 校验手机验证码接口 +/// @param moblieNum 手机号码 +/// @param code 验证码 +- (void)checkMoblieCodeWithMoblie:(NSString *)moblieNum code:(NSString *)code { + NSString * uid = [[AccountInfoStorage instance] getUid]; + NSString * ticket = [[AccountInfoStorage instance] getTicket]; + NSString * desPhone = [DESEncrypt encryptUseDES:moblieNum key:KeyWithType(KeyType_PasswordEncode)]; + [Api checkMoblieCode:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] checkMoblieCodeWithMoblieSuccess]; + }] mobile:desPhone code:code uid:uid ticket:ticket]; +} + +@end diff --git a/YuMi/Modules/YMMine/Presenter/XPMineVisitorPresenter.h b/YuMi/Modules/YMMine/Presenter/XPMineVisitorPresenter.h new file mode 100644 index 00000000..367b9f2f --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineVisitorPresenter.h @@ -0,0 +1,21 @@ +// +// YMMineVisitorPresenter.h +// YUMI +// +// Created by YUMI on 2022/1/26. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineVisitorPresenter : BaseMvpPresenter + +/// 获取访客列表 +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +- (void)getVisitorList:(int)page pageSize:(int)pageSize state:(int)state; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/XPMineVisitorPresenter.m b/YuMi/Modules/YMMine/Presenter/XPMineVisitorPresenter.m new file mode 100644 index 00000000..80c28bad --- /dev/null +++ b/YuMi/Modules/YMMine/Presenter/XPMineVisitorPresenter.m @@ -0,0 +1,29 @@ +// +// YMMineVisitorPresenter.m +// YUMI +// +// Created by YUMI on 2022/1/26. +// + +#import "XPMineVisitorPresenter.h" +#import "Api+Mine.h" +#import "XPMineVisitorProtocol.h" +#import "AccountInfoStorage.h" +#import "XPMineVisitorItemModel.h" + +@implementation XPMineVisitorPresenter + +/// 访客列表 +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +- (void)getVisitorList:(int)page pageSize:(int)pageSize state:(int)state { + [Api getVisitorListCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray *array = [XPMineVisitorItemModel modelsWithArray:data.data]; + [[self getView] onGetVisitorListSuccess:array state:state]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getVisitorListFail:state]; + }] pageNum:[NSString stringWithFormat:@"%d", page] pageSize:[NSString stringWithFormat:@"%d", pageSize]]; + +} + +@end diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeAssembleChamberStatementExternalizer.h b/YuMi/Modules/YMMine/Presenter/YUMIManeAssembleChamberStatementExternalizer.h deleted file mode 100644 index 73123878..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeAssembleChamberStatementExternalizer.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YMMineCollectRoomListPresenter.h -// YUMI -// -// Created by YUMI on 2022/7/27. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeAssembleChamberStatementExternalizer : BaseMvpExternalizer - -- (void)acquireAssembleChamberSttowardsement:(int)page pageSize:(int)pageSize state:(int)state type:(NSString *)type; - -- (void)representtowardsionassembleChamberAboutChamberCids:(NSString *)roomUids; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeAssembleChamberStatementExternalizer.m b/YuMi/Modules/YMMine/Presenter/YUMIManeAssembleChamberStatementExternalizer.m deleted file mode 100644 index bf634c93..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeAssembleChamberStatementExternalizer.m +++ /dev/null @@ -1,35 +0,0 @@ -// -// YMMineCollectRoomListPresenter.m -// YUMI -// -// Created by YUMI on 2022/7/27. -// - -#import "YUMIManeAssembleChamberStatementExternalizer.h" -#import "Api+Mine.h" -#import "Api+Room.h" -#import "FBCManeCollectChamberStatementCeremony.h" -#import "AccountAbstractStorage.h" -#import "ResidenceAssembleChamberMatrix.h" - -@implementation YUMIManeAssembleChamberStatementExternalizer - -- (void)acquireAssembleChamberSttowardsement:(int)page pageSize:(int)pageSize state:(int)state type:(NSString *)type { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api requisitionManeAssembleChamberSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [ResidenceAssembleChamberMatrix mtowardsrixsAboutGarment:data.data[@"fansRoomList"]]; - [[self acquireRegard] dwellEarnAssembleChamberSttowardsementAccomplishment:array state:state]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireAssembleChamberSttowardsementFlunk:state]; - }] uid:uid page:[NSString stringWithFormat:@"%d", page] pageSize:[NSString stringWithFormat:@"%d", pageSize] roomType:type.length ? type : NULL]; -} - -- (void)representtowardsionassembleChamberAboutChamberCids:(NSString *)roomUids { - NSString * type = @"3"; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api assembleChamber:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] representtowardsionAssembleChamberAccomplishment]; - }] roomUid:@"" uid:uid type:type roomUids:roomUids]; -} - -@end diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeAssistantExternalizer.h b/YuMi/Modules/YMMine/Presenter/YUMIManeAssistantExternalizer.h deleted file mode 100644 index af256b9a..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeAssistantExternalizer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineFriendPresenter.h -// YUMI -// -// Created by YUMI on 2022/5/29. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeAssistantExternalizer : BaseMvpExternalizer -- (void)acquireConsumerSttowardsementAbstract:(NSArray *)array; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeAssistantExternalizer.m b/YuMi/Modules/YMMine/Presenter/YUMIManeAssistantExternalizer.m deleted file mode 100644 index 32e6ab63..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeAssistantExternalizer.m +++ /dev/null @@ -1,26 +0,0 @@ -// -// YMMineFriendPresenter.m -// YUMI -// -// Created by YUMI on 2022/5/29. -// - -#import "YUMIManeAssistantExternalizer.h" -#import "Api+Mine.h" -#import "FBCManeFriendCeremony.h" -#import "ConsumerAbstractMatrix.h" - -@implementation YUMIManeAssistantExternalizer - -- (void)acquireConsumerSttowardsementAbstract:(NSArray *)array { - NSString * uids = @""; - if (array.count > 0) { - uids = [array componentsJoinedByString:@","]; - } - [Api acquireConsumersSttowardsementAbstract:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray *users= [ConsumerAbstractMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireConsumerSttowardsementAbstractAccomplishment:users]; - }] uids:uids]; -} - -@end diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeBlackStatementExternalizer.h b/YuMi/Modules/YMMine/Presenter/YUMIManeBlackStatementExternalizer.h deleted file mode 100644 index f51c3dd5..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeBlackStatementExternalizer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineBlackListPresenter.h -// YUMI -// -// Created by YUMI on 2022/5/13. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeBlackStatementExternalizer : BaseMvpExternalizer -- (void)acquireConsumerSttowardsementAbstract:(NSArray *)array; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeBlackStatementExternalizer.m b/YuMi/Modules/YMMine/Presenter/YUMIManeBlackStatementExternalizer.m deleted file mode 100644 index 894ea47a..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeBlackStatementExternalizer.m +++ /dev/null @@ -1,25 +0,0 @@ -// -// YMMineBlackListPresenter.m -// YUMI -// -// Created by YUMI on 2022/5/13. -// - -#import "YUMIManeBlackStatementExternalizer.h" -#import "Api+Mine.h" -#import "ConsumerAbstractMatrix.h" -#import "FBCManeBlackStatementCeremony.h" -@implementation YUMIManeBlackStatementExternalizer - -- (void)acquireConsumerSttowardsementAbstract:(NSArray *)array { - NSString * uids = @""; - if (array.count > 0) { - uids = [array componentsJoinedByString:@","]; - } - [Api acquireConsumersSttowardsementAbstract:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray *users= [ConsumerAbstractMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireConsumerSttowardsementAbstractAccomplishment:users]; - }] uids:uids]; -} - -@end diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeConsiderationExternalizer.h b/YuMi/Modules/YMMine/Presenter/YUMIManeConsiderationExternalizer.h deleted file mode 100644 index 9c2830b1..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeConsiderationExternalizer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineAttentionPresenter.h -// YUMI -// -// Created by YUMI on 2021/12/21. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeConsiderationExternalizer : BaseMvpExternalizer -- (void)acquireConsumerConsidertowardsionSttowardsement:(int)page pageSize:(int)pageSize state:(int)state;; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeConsiderationExternalizer.m b/YuMi/Modules/YMMine/Presenter/YUMIManeConsiderationExternalizer.m deleted file mode 100644 index 5a33fe9d..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeConsiderationExternalizer.m +++ /dev/null @@ -1,28 +0,0 @@ -// -// YMMineAttentionPresenter.m -// YUMI -// -// Created by YUMI on 2021/12/21. -// - -#import "YUMIManeConsiderationExternalizer.h" -#import "Api+Mine.h" -#import "AccountAbstractStorage.h" -#import "FBCManeConsiderationCeremony.h" -#import "FanaticsAbstractMatrix.h" - -@implementation YUMIManeConsiderationExternalizer - -- (void)acquireConsumerConsidertowardsionSttowardsement:(int)page pageSize:(int)pageSize state:(int)state;{ - NSString * uid= [AccountAbstractStorage instance].acquireCid; - NSString * pageStr = [NSString stringWithFormat:@"%d", page]; - NSString * pageSizeStr = [NSString stringWithFormat:@"%d", pageSize]; - [Api acquireconsidertowardsionSttowardsementImplementtowardsion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [FanaticsAbstractMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireConsumerConsidertowardsionSttowardsementAccomplishment:array state:state]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireConsumerConsidertowardsionSttowardsementFlunk:state]; - }] uid:uid pageNo:pageStr pageSize:pageSizeStr]; -} - -@end diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAbstractCompileExternalizer.h b/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAbstractCompileExternalizer.h deleted file mode 100644 index 967abdaf..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAbstractCompileExternalizer.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YMMineUserInfoEditPresenter.h -// YUMI -// -// Created by YUMI on 2021/9/23. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN -@class ConsumerAbstractMatrix; -@interface YUMIManeConsumerAbstractCompileExternalizer : BaseMvpExternalizer - -- (void)getUserInfo; - -- (void)acquireConsumerAbstractCompileTowardsoloudspeakerProvenienceAboutConsumerAbstract:(ConsumerAbstractMatrix *)userInfo; - -- (void)complectionAbstractAboutIntelligenceportrait:(NSString * _Nullable)avatar - nick:(NSString * _Nullable)nick - birth:(NSString * _Nullable)birth - userDesc:(NSString * _Nullable)userDesc; - -- (void)upburdenIntelligenceportrait:(UIImage *)avatar; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAbstractCompileExternalizer.m b/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAbstractCompileExternalizer.m deleted file mode 100644 index 7d871cc8..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAbstractCompileExternalizer.m +++ /dev/null @@ -1,170 +0,0 @@ -// -// YMMineUserInfoEditPresenter.m -// YUMI -// -// Created by YUMI on 2021/9/23. -// - -#import "YUMIManeConsumerAbstractCompileExternalizer.h" -#import "Api+Mine.h" -#import "AccountAbstractStorage.h" -#import "UpwardsloadIndicate.h" -#import "NSMutableDictionary+Saft.h" -#import "YUMIManeConsumerAbstractCompileMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "FBCManeConsumerAbstractEditCeremony.h" -@interface YUMIManeConsumerAbstractCompileExternalizer () -@property (nonatomic,strong) YUMIManeConsumerAbstractCompileMatrix *monicerProvision; -@property (nonatomic,strong) YUMIManeConsumerAbstractCompileMatrix *intelligenceportraitProvision; -@property (nonatomic,strong) YUMIManeConsumerAbstractCompileMatrix *birthProvision; -@property (nonatomic,strong) YUMIManeConsumerAbstractCompileMatrix *appearanceProvision; -@property (nonatomic,strong) YUMIManeConsumerAbstractCompileMatrix *sequencProvision; -@property (nonatomic,strong) NSMutableArray *compileGarment; -@property (nonatomic,strong) NSDateFormatter *engagementInitialiser; -@end - -@implementation YUMIManeConsumerAbstractCompileExternalizer - -- (void)getUserInfo { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api getUserInfo:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ConsumerAbstractMatrix * infoMatrix = [ConsumerAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] dwellEarnConsumerAbstractAccomplishment:infoMatrix]; - }] uid:uid]; -} - -- (void)acquireConsumerAbstractCompileTowardsoloudspeakerProvenienceAboutConsumerAbstract:(ConsumerAbstractMatrix *)userInfo { - - if (self.compileGarment.count <= 0) { - [self.compileGarment addObject:self.intelligenceportraitProvision]; - [self.compileGarment addObject:self.monicerProvision]; - [self.compileGarment addObject:self.birthProvision]; - [self.compileGarment addObject:self.appearanceProvision]; - [self.compileGarment addObject:self.sequencProvision]; - } - - - self.intelligenceportraitProvision.isReview = userInfo.isReview; - self.intelligenceportraitProvision.avatarUrl = userInfo.isReview ? userInfo.reviewingAvatar : userInfo.avatar; - - self.monicerProvision.subTitle = userInfo.nick; - NSString *dateStr = [self.engagementInitialiser stringFromDate:[NSDate dateWithTimeIntervalSince1970:userInfo.birth/1000]]; - self.birthProvision.subTitle = dateStr; - - self.appearanceProvision.photoArray = userInfo.privatePhoto; - - self.sequencProvision.subTitle = userInfo.userDesc.length > 0 ? userInfo.userDesc : @""; - - [[self acquireRegard] acquireConsumerAbstractCompileTowardsoloudspeakerProvenienceAccomplishment:self.compileGarment]; -} - -- (void)complectionAbstractAboutIntelligenceportrait:(NSString * _Nullable)avatar - nick:(NSString * _Nullable)nick - birth:(NSString * _Nullable)birth - userDesc:(NSString * _Nullable)userDesc { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [[AccountAbstractStorage instance] acquireTicket]; - NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - if (avatar.length > 0) { - [dic secureSetGroal:avatar forKey:@"avatar"]; - } - - if (nick.length > 0) { - [dic secureSetGroal:nick forKey:@"nick"]; - } - - if (birth.length > 0) { - [dic secureSetGroal:birth forKey:@"birth"]; - } - - if (userDesc.length > 0) { - [dic secureSetGroal:userDesc forKey:@"userDesc"]; - } - - [dic secureSetGroal:uid forKey:@"uid"]; - [dic secureSetGroal:ticket forKey:@"ticket"]; - [Api accomplishConsumerAbstract:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ConsumerAbstractMatrix * infoMatrix = [ConsumerAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] accomplishConsumerAbstractAccomplishment:infoMatrix]; - }] userInfo:dic]; -} - - -- (void)upburdenIntelligenceportrait:(UIImage *)avatar { - [Api qiniuUpwardsLoadIndictowardse:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSString *key = data.data[@"key"]; - NSString *token = data.data[@"token"]; - [UpwardsloadIndicate upburdenIndictowardse:avatar named:key token:token success:^(NSString * _Nonnull key, NSDictionary * _Nonnull resp) { - NSString *url = resp[@"path"]; - [[self acquireRegard] upburdenIndictowardseAccomplishment:url]; - } failure:^(NSNumber * _Nonnull resCode, NSString * _Nonnull message) { - [[self acquireRegard] EvidenceMistakeToast:YMLocalizedString(@"YUMI_Mine_User_Info_Edit_Presenter_0")]; - }]; - }]]; -} - - -#pragma mark - Getters And Setters -- (YUMIManeConsumerAbstractCompileMatrix *)monicerProvision { - if (!_monicerProvision) { - _monicerProvision = [[YUMIManeConsumerAbstractCompileMatrix alloc] init]; - _monicerProvision.type = YUMIManeConsumerAbstractEditGenre_Nick; - _monicerProvision.title = @"昵称:"; - } - return _monicerProvision; -} - -- (YUMIManeConsumerAbstractCompileMatrix *)intelligenceportraitProvision { - if (!_intelligenceportraitProvision) { - _intelligenceportraitProvision = [[YUMIManeConsumerAbstractCompileMatrix alloc] init]; - _intelligenceportraitProvision.type = YUMIManeConsumerAbstractEditGenre_Avatar; - _intelligenceportraitProvision.title = @"头像:"; - } - return _intelligenceportraitProvision; -} - - -- (YUMIManeConsumerAbstractCompileMatrix *)birthProvision { - if (!_birthProvision) { - _birthProvision = [[YUMIManeConsumerAbstractCompileMatrix alloc] init]; - _birthProvision.type = YUMIManeConsumerAbstractEditGenre_Birth; - _birthProvision.title = @"生日:"; - } - return _birthProvision; -} - -- (YUMIManeConsumerAbstractCompileMatrix *)appearanceProvision { - if (!_appearanceProvision) { - _appearanceProvision = [[YUMIManeConsumerAbstractCompileMatrix alloc] init]; - _appearanceProvision.type = YUMIManeConsumerAbstractEditGenre_Photo; - _appearanceProvision.title = @"相册:"; - } - return _appearanceProvision; -} - -- (YUMIManeConsumerAbstractCompileMatrix *)sequencProvision { - if (!_sequencProvision) { - _sequencProvision = [[YUMIManeConsumerAbstractCompileMatrix alloc] init]; - _sequencProvision.type = YUMIManeConsumerAbstractEditGenre_UseDes; - _sequencProvision.title = @"个人介绍:"; - } - return _sequencProvision; -} - -- (NSMutableArray *)compileGarment { - if (!_compileGarment) { - _compileGarment = [NSMutableArray array]; - } - return _compileGarment; -} - -- (NSDateFormatter *)engagementInitialiser { - if (!_engagementInitialiser) { - _engagementInitialiser = [[NSDateFormatter alloc] init]; - _engagementInitialiser.dateFormat = @"yyyy-MM-dd"; - } - return _engagementInitialiser; -} - - -@end diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAbstractExternalizer.h b/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAbstractExternalizer.h deleted file mode 100644 index e4cd679b..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAbstractExternalizer.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YMMineUserInfoPresenter.h -// YUMI -// -// Created by YUMI on 2021/9/23. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeConsumerAbstractExternalizer : BaseMvpExternalizer -- (void)acquireConsumerAbstractAboutCid:(NSString *)uid; -- (void)acquireConsumerSpecificAbstractAboutCid:(NSString *)uid; -- (void)acquireConsumerConsidertowardsionDeclare:(NSString *)targetUid; - -- (void)considertowardsionConsumer:(NSString *)targetUid state:(BOOL)state; - -- (void)visitConsumer:(NSString *)targetUid; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAbstractExternalizer.m b/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAbstractExternalizer.m deleted file mode 100644 index 6d9765f8..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAbstractExternalizer.m +++ /dev/null @@ -1,55 +0,0 @@ -// -// YMMineUserInfoPresenter.m -// YUMI -// -// Created by YUMI on 2021/9/23. -// - -#import "YUMIManeConsumerAbstractExternalizer.h" -#import "Api+Mine.h" -#import "AccountAbstractStorage.h" -#import "ConsumerAbstractMatrix.h" -#import "FBCManeConsumerAbstractCeremony.h" - -@implementation YUMIManeConsumerAbstractExternalizer - -- (void)acquireConsumerAbstractAboutCid:(NSString *)uid { - [Api getUserInfo:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ConsumerAbstractMatrix * infoMatrix = [ConsumerAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] dwellEarnConsumerAbstractAccomplishment:infoMatrix]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - - }] uid:uid]; -} - -- (void)acquireConsumerSpecificAbstractAboutCid:(NSString *)uid { - [Api consumerSpecificAbstractImplementtowardsion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ConsumerAbstractMatrix * infoMatrix = [ConsumerAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] onacquireSpecificAbstractAccomplishment:infoMatrix]; - }] uid:uid page:@"1" pageSize:@"20"]; -} - -- (void)acquireConsumerConsidertowardsionDeclare:(NSString *)targetUid; { - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - [Api considertowardsionPositionImplementtowardsion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - BOOL isLike = ((NSNumber *)data.data).boolValue; - [[self acquireRegard] acquireConsidertowardsionDeclareAccomplishment:isLike]; - }] uid:uid isLikeUid:targetUid]; -} - - -- (void)considertowardsionConsumer:(NSString *)targetUid state:(BOOL)state { - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - NSString * ticket = [[AccountAbstractStorage instance] acquireTicket]; - NSString * type = state ? @"1" : @"2"; - [Api considertowardsionImplementtowardsion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] considertowardsionConsumerAccomplishment:state]; - }] uid:uid likedUid:targetUid ticket:ticket type:type]; -} - -- (void)visitConsumer:(NSString *)targetUid { - [Api upburdenInspectConsumerImplementtowardsion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - }] uid:targetUid]; -} - -@end diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAbstractPresentRamparatExternalizer.h b/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAbstractPresentRamparatExternalizer.h deleted file mode 100644 index d21d64ff..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAbstractPresentRamparatExternalizer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineUserInfoGiftWallPresenter.h -// YUMI -// -// Created by YUMI on 2022/4/15. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeConsumerAbstractPresentRamparatExternalizer : BaseMvpExternalizer -- (void)acquireConsumerPresentRampartowards:(NSString *)uid giftType:(NSInteger)giftType; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAbstractPresentRamparatExternalizer.m b/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAbstractPresentRamparatExternalizer.m deleted file mode 100644 index fe96f94b..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAbstractPresentRamparatExternalizer.m +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMMineUserInfoGiftWallPresenter.m -// YUMI -// -// Created by YUMI on 2022/4/15. -// - -#import "YUMIManeConsumerAbstractPresentRamparatExternalizer.h" -#import "Api+Mine.h" -#import "FBCManeConsumerAbstractPresentWallCeremony.h" -#import "ConsumerPresentRamparatAbstractMatrix.h" - -@implementation YUMIManeConsumerAbstractPresentRamparatExternalizer - -- (void)acquireConsumerPresentRampartowards:(NSString *)uid giftType:(NSInteger)giftType { - NSString * giftTypeStr = [NSString stringWithFormat:@"%ld", giftType]; - [Api acquireConsumerPresentRampartowards:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array= [ConsumerPresentRamparatAbstractMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireConsumerPresentRampartowardsAccomplishment:array]; - }] uid:uid giftType:giftTypeStr]; -} - -@end diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAbstractlbumExternalizer.h b/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAbstractlbumExternalizer.h deleted file mode 100644 index 481461b9..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAbstractlbumExternalizer.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMMineUserInfolbumPresenter.h -// YUMI -// -// Created by YUMI on 2021/9/24. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeConsumerAbstractlbumExternalizer : BaseMvpExternalizer -- (void)getUserInfo; - -- (void)upburdenConsumerBrochureAboutWeebsiteBWStt:(NSString *)url; - -- (void)upburdenBrochureIndictowardse:(UIImage *)albumImage; - -- (void)representtowardsionIndictowardseWeebsiteByvirtueofWeeblogicAboutPid:(NSString *)pid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAbstractlbumExternalizer.m b/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAbstractlbumExternalizer.m deleted file mode 100644 index db6d2a97..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAbstractlbumExternalizer.m +++ /dev/null @@ -1,55 +0,0 @@ -// -// YMMineUserInfolbumPresenter.m -// YUMI -// -// Created by YUMI on 2021/9/24. -// - -#import "YUMIManeConsumerAbstractlbumExternalizer.h" -#import "Api+Mine.h" -#import "ConsumerAbstractMatrix.h" -#import "AccountAbstractStorage.h" -#import "UpwardsloadIndicate.h" -#import "FBCManeConsumerAbstractAlbumCeremony.h" - -@implementation YUMIManeConsumerAbstractlbumExternalizer - -- (void)getUserInfo { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api getUserInfo:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ConsumerAbstractMatrix * infoMatrix = [ConsumerAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] dwellEarnConsumerAbstractAccomplishment:infoMatrix]; - }] uid:uid]; -} - -- (void)upburdenConsumerBrochureAboutWeebsiteBWStt:(NSString *)url { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - [Api upburdenConsumerBrochure:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] upburdenConsumerBrochureAccomplishment]; - } EvidenceChambering:YES] photoStr:url uid:uid ticket:ticket]; -} - -- (void)upburdenBrochureIndictowardse:(UIImage *)albumImage { - [Api qiniuUpwardsLoadIndictowardse:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSString *key = data.data[@"key"]; - NSString *token = data.data[@"token"]; - [UpwardsloadIndicate upburdenIndictowardse:albumImage named:key token:token success:^(NSString * _Nonnull key, NSDictionary * _Nonnull resp) { - NSString *url = resp[@"path"]; - [[self acquireRegard] upburdenBrochureIndictowardseToTertiusAccomplishment:url]; - } failure:^(NSNumber * _Nonnull resCode, NSString * _Nonnull message) { - [[self acquireRegard] EvidenceMistakeToast:YMLocalizedString(@"YUMI_Mine_User_Infolbum_Presenter_0")]; - }]; - } EvidenceChambering:YES]]; -} - - -- (void)representtowardsionIndictowardseWeebsiteByvirtueofWeeblogicAboutPid:(NSString *)pid { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - [Api representtowardsionIndictowardseByvirtueofWeeblogic:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] representtowardsionConsumerBrochureAccomplishment]; - } EvidenceChambering:YES] pid:pid uid:uid ticket:ticket]; -} - -@end diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAtomicExternalizer.h b/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAtomicExternalizer.h deleted file mode 100644 index ded605cc..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAtomicExternalizer.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMMineUserDataPresenter.h -// YUMI -// -// Created by YUMI on 2022/4/14. -// - -#import "BaseMvpExternalizer.h" - -@class ConsumerAbstractMatrix; -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeConsumerAtomicExternalizer : BaseMvpExternalizer - -- (void)acquireCollectiveSpecificAbstract:(NSString *)uid currentUserUid:(NSString *)currentUserUid; - -- (void)componentAplictowardsionlyCorridor:(NSString *)hallId; - -- (void)getUserInfo:(NSString *)uid success:(void(^)(ConsumerAbstractMatrix * info))success; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAtomicExternalizer.m b/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAtomicExternalizer.m deleted file mode 100644 index 280ea135..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeConsumerAtomicExternalizer.m +++ /dev/null @@ -1,65 +0,0 @@ -// -// YMMineUserDataPresenter.m -// YUMI -// -// Created by YUMI on 2022/4/14. -// - -#import "YUMIManeConsumerAtomicExternalizer.h" -#import -#import "Api+Guild.h" -#import "CollectiveSpecificAbstractMatrix.h" -#import "AccountAbstractStorage.h" -#import "ManeCommunicationSolitaireStatementAbstractMatrix.h" -#import "FBCManeConsumerAtomicCeremony.h" -#import "ConsumerAbstractMatrix.h" -@implementation YUMIManeConsumerAtomicExternalizer - -- (void)acquireCollectiveSpecificAbstract:(NSString *)uid currentUserUid:(NSString *)currentUserUid { - RACSubject* owner = [RACSubject subject]; - RACSubject* currentUser = [RACSubject subject]; - - [[RACSignal combineLatest:@[owner, currentUser] reduce:^id(CollectiveSpecificAbstractMatrix* ownerClanInfo, CollectiveSpecificAbstractMatrix* universalConsumerCollectiveAbstract){ - [[self acquireRegard] acquireCollectiveSpecificAbstractAccomplishment:ownerClanInfo universalConsumerCollectiveAbstract:universalConsumerCollectiveAbstract]; - return nil; - }] subscribeError:^(NSError * _Nullable error) { - - }]; - - [Api acquireCollectiveSpecificAbstract:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - CollectiveSpecificAbstractMatrix * collectiveSpecificAbstract = [CollectiveSpecificAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [currentUser sendNext:collectiveSpecificAbstract]; - [currentUser sendCompleted]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [currentUser sendNext:nil]; - [currentUser sendCompleted]; - }] uid:currentUserUid]; - - [Api acquireCollectiveSpecificAbstract:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - CollectiveSpecificAbstractMatrix * collectiveSpecificAbstract = [CollectiveSpecificAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [owner sendNext:collectiveSpecificAbstract]; - [owner sendCompleted]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [owner sendNext:nil]; - [owner sendCompleted]; - }] uid:uid]; -} - - -- (void)componentAplictowardsionlyCorridor:(NSString *)hallId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api componentAplictowardsionlyCorridor:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] componentAplictowardsionlyCorridorAccomplishment]; - } EvidenceChambering:YES] hallId:hallId uid:uid]; -} - -- (void)getUserInfo:(NSString *)uid success:(void(^)(ConsumerAbstractMatrix * info))success { - [Api getUserInfo:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ConsumerAbstractMatrix * info = [ConsumerAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - if (success) { - success(info); - } - }] uid:uid]; -} - -@end diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeExternalize.h b/YuMi/Modules/YMMine/Presenter/YUMIManeExternalize.h deleted file mode 100644 index 488ed820..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeExternalize.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YMMinePresent.h -// YUMI -// -// Created by YUMI on 2021/9/16. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN -@interface YUMIManeExternalize : BaseMvpExternalizer - -- (void)getUserInfo; - -- (void)acquireConsumerPocketbookAbstractAboutGroup:(dispatch_group_t) group; - -- (void)acquireCollectiveSpecificAbstractAboutGroup:(dispatch_group_t) group; - -- (void)acquireFetowardsureProvisionSttowardsementAboutGroup:(dispatch_group_t) group ; - - -- (void)acquireManeOriflammeSttowardsementAboutGroup:(dispatch_group_t) group; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeExternalize.m b/YuMi/Modules/YMMine/Presenter/YUMIManeExternalize.m deleted file mode 100644 index 3d5d3429..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeExternalize.m +++ /dev/null @@ -1,95 +0,0 @@ -// -// YMMinePresent.m -// YUMI -// -// Created by YUMI on 2021/9/16. -// - -#import "YUMIManeExternalize.h" -#import "AccountAbstractStorage.h" -#import "StatsticsticsServingFacilitater.h" -#import "Api+Mine.h" -#import "Api+Guild.h" -#import "Api+Home.h" -#import "YUMIManeProvisionMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "CollectiveSpecificAbstractMatrix.h" -#import "YUMIManeFuntionProvisionMatrix.h" -#import "ResidenceOriflammeAbstractMatrix.h" -#import "RamparatetAbstractMatrix.h" -#import "CollectiveSpecificAbstractMatrix.h" -#import "FBCManeCeremony.h" -@implementation YUMIManeExternalize - -- (void)getUserInfo { - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - if (!uid.length) { - - return; - } - [Api getUserInfo:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ConsumerAbstractMatrix * infoMatrix = [ConsumerAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] dwellEarnConsumerAbstractAccomplishment:infoMatrix]; - }errorToast:NO] uid:uid]; -} - -- (void)acquireConsumerPocketbookAbstractAboutGroup:(dispatch_group_t) group { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - if (!uid.length) { - [[self acquireRegard]acquireConsumerPocketbookAbstractFlunkAboutGroup:group]; - return; - } - [Api acquireConsumerPocketbookAbstract:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - RamparatetAbstractMatrix * model = [RamparatetAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireConsumerPocketbookAbstract:model WithGroup:group]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard]acquireConsumerPocketbookAbstractFlunkAboutGroup:group]; - }] uid:uid ticket:ticket]; -} - - -- (void)acquireCollectiveSpecificAbstractAboutGroup:(dispatch_group_t) group { - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - if (!uid.length) { - [[self acquireRegard]dwellEarnCollectiveSpecificAbstractflunkAboutGroup:group]; - return; - } - [Api acquireCollectiveSpecificAbstract:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - CollectiveSpecificAbstractMatrix * collectiveSpecificAbstract = [CollectiveSpecificAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] dwellEarnCollectiveSpecificAbstractAccomplishment:collectiveSpecificAbstract WithGroup:group]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard]dwellEarnCollectiveSpecificAbstractflunkAboutGroup:group]; - }] uid:uid]; -} - -- (void)acquireFetowardsureProvisionSttowardsementAboutGroup:(dispatch_group_t) group { - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - if (!uid.length){ - [[self acquireRegard] dwellEarnManeFuntionProvisionFlunkAboutGroup:group]; - return; - } - [Api requisitionsubjectiveObligtowardsionProvision:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray *array = [YUMIManeFuntionProvisionMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] dwellEarnManeFuntionProvisionAccomplishment:array WithGroup:group]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] dwellEarnManeFuntionProvisionFlunkAboutGroup:group]; - }] uid:uid]; -} - -- (void)acquireManeOriflammeSttowardsementAboutGroup:(dispatch_group_t) group { - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - if (!uid.length) { - [[self acquireRegard] dwellEarnsubjectiveOriflammeSttowardsementFlunkAboutGroup:group]; - return; - } - [Api requisitionManeOriflammeSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [ResidenceOriflammeAbstractMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] dwellEarnsubjectiveOriflammeSttowardsementAccomplishment:array WithGroup:group]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] dwellEarnsubjectiveOriflammeSttowardsementFlunkAboutGroup:group]; - } errorToast:NO] uid:uid type:@"10"]; -} - - -@end diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeFanaticsExternalizer.h b/YuMi/Modules/YMMine/Presenter/YUMIManeFanaticsExternalizer.h deleted file mode 100644 index d84a29f7..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeFanaticsExternalizer.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMMineFansPresenter.h -// YUMI -// -// Created by YUMI on 2021/12/21. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeFanaticsExternalizer : BaseMvpExternalizer -- (void)acquireConsumerFantowardsicsSttowardsement:(int)page pageSize:(int)pageSize state:(int)state; - -- (void)considertowardsionFantowardsics:(NSString *)targetUid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeFanaticsExternalizer.m b/YuMi/Modules/YMMine/Presenter/YUMIManeFanaticsExternalizer.m deleted file mode 100644 index d7793be2..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeFanaticsExternalizer.m +++ /dev/null @@ -1,38 +0,0 @@ -// -// YMMineFansPresenter.m -// YUMI -// -// Created by YUMI on 2021/12/21. -// - -#import "YUMIManeFanaticsExternalizer.h" -#import "Api+Mine.h" -#import "FBCManeFanaticsCeremony.h" -#import "AccountAbstractStorage.h" -#import "FanaticsAbstractMatrix.h" - -@implementation YUMIManeFanaticsExternalizer - - -- (void)acquireConsumerFantowardsicsSttowardsement:(int)page pageSize:(int)pageSize state:(int)state { - NSString * uid= [AccountAbstractStorage instance].acquireCid; - NSString * pageStr = [NSString stringWithFormat:@"%d", page]; - NSString * pageSizeStr = [NSString stringWithFormat:@"%d", pageSize]; - [Api acquireFantowardsicsSttowardsementImplementtowardsion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [FanaticsAbstractMatrix mtowardsrixsAboutGarment:data.data[@"fansList"]]; - [[self acquireRegard] acquireConsumerFantowardsicsSttowardsementAccomplishment:array state:state]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireConsumerFantowardsicsSttowardsementFlunk:state]; - }] uid:uid pageNo:pageStr pageSize:pageSizeStr]; -} - -- (void)considertowardsionFantowardsics:(NSString *)targetUid { - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - NSString * ticket = [[AccountAbstractStorage instance] acquireTicket]; - NSString * type = @"1"; - [Api considertowardsionImplementtowardsion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] considertowardsionFantowardsicsAccomplishment]; - }] uid:uid likedUid:targetUid ticket:ticket type:type]; -} - -@end diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeFanaticsSquadExternalizer.h b/YuMi/Modules/YMMine/Presenter/YUMIManeFanaticsSquadExternalizer.h deleted file mode 100644 index bcd060a1..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeFanaticsSquadExternalizer.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMMineFansTeamPresenter.h -// YUMI -// -// Created by YUMI on 2022/4/8. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeFanaticsSquadExternalizer : BaseMvpExternalizer - -- (void)acquireKellegFantowardsicsSquadSttowardsement:(int)page pageSize:(int)pageSize state:(int)state; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeFanaticsSquadExternalizer.m b/YuMi/Modules/YMMine/Presenter/YUMIManeFanaticsSquadExternalizer.m deleted file mode 100644 index ed64b7ce..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeFanaticsSquadExternalizer.m +++ /dev/null @@ -1,24 +0,0 @@ -// -// YMMineFansTeamPresenter.m -// YUMI -// -// Created by YUMI on 2022/4/8. -// - -#import "YUMIManeFanaticsSquadExternalizer.h" -#import "Api+Mine.h" -#import "FBCManeKellegFanaticsTeamCeremony.h" -#import "YUMIManeKellegFanaticsSquadMatrix.h" - -@implementation YUMIManeFanaticsSquadExternalizer - -- (void)acquireKellegFantowardsicsSquadSttowardsement:(int)page pageSize:(int)pageSize state:(int)state { - [Api acquireKellegFantowardsicsSquadSttowardsementImplementtowardsion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray *array = [YUMIManeKellegFanaticsSquadMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireKellegFantowardsicsSquadSttowardsementAccomplishment:array state:state]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireKellegFantowardsicsSquadSttowardsementFlunk:state]; - }] pageNum:[NSString stringWithFormat:@"%d", page] pageSize:[NSString stringWithFormat:@"%d", pageSize]]; -} - -@end diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeFeedbackExternalizer.h b/YuMi/Modules/YMMine/Presenter/YUMIManeFeedbackExternalizer.h deleted file mode 100644 index e0f40b15..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeFeedbackExternalizer.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMFeedbackPresenter.h -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeFeedbackExternalizer : BaseMvpExternalizer - -- (void)preserveFeedEncourageAbout:(NSString *)feedback contact:(NSString *)contact; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeFeedbackExternalizer.m b/YuMi/Modules/YMMine/Presenter/YUMIManeFeedbackExternalizer.m deleted file mode 100644 index e93551a7..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeFeedbackExternalizer.m +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMFeedbackPresenter.m -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import "YUMIManeFeedbackExternalizer.h" -#import "AccountAbstractStorage.h" -#import "Api+Mine.h" -#import "FBCManeFeedbackCeremony.h" - -@implementation YUMIManeFeedbackExternalizer - -- (void)preserveFeedEncourageAbout:(NSString *)feedback contact:(NSString *)contact { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - [Api preserveFeedEncourageAbout:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] preserveFeedencourageAccomplishment]; - } EvidenceChambering:YES] feedbackDesc:feedback contact:contact uid:uid ticket:ticket]; -} - -@end diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeInstanllingExternalize.h b/YuMi/Modules/YMMine/Presenter/YUMIManeInstanllingExternalize.h deleted file mode 100644 index 59a56ae6..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeInstanllingExternalize.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YMMineSettingPresent.h -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN -@class ConsumerAbstractMatrix; -@interface YUMIManeInstanllingExternalize : BaseMvpExternalizer - -- (void)getUserInfo; - -- (void)acquireManeInstanllingTowardsoloudspeakerProvenienceAbout:(ConsumerAbstractMatrix *)userinfo; - -- (void)revoctowardsionledUniversalSequenceription; - -- (void)acquireReleaseRefurbish; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeInstanllingExternalize.m b/YuMi/Modules/YMMine/Presenter/YUMIManeInstanllingExternalize.m deleted file mode 100644 index 1d4715c4..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeInstanllingExternalize.m +++ /dev/null @@ -1,190 +0,0 @@ -// -// YMMineSettingPresent.m -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import "YUMIManeInstanllingExternalize.h" -#import "Api+Mine.h" -#import "Api+Room.h" -#import "FBCManeInstanllingCeremony.h" -#import "ConsumerAbstractMatrix.h" -#import "AccountMatrix.h" -#import "YUMIManeInstanllingProvisionMatrix.h" -#import "YYUtility.h" -#import "YUMIVersionRefurbishMatrix.h" -#import "Api+Main.h" -#import "AccountAbstractStorage.h" -#import "YUMIChamberMiniExecutive.h" -#import "RealtimackExecutive.h" -#import "ClientDisposition.h" -#import - -@interface YUMIManeInstanllingExternalize () -@property (nonatomic,strong) YUMIManeInstanllingProvisionMatrix *mobileProvision; -@property (nonatomic,strong) YUMIManeInstanllingProvisionMatrix *payProvision; -@property (nonatomic,strong) YUMIManeInstanllingProvisionMatrix *surmountProvision; -@property (nonatomic,strong) NSArray *atoloudspeakersouce; -@end - -@implementation YUMIManeInstanllingExternalize -- (id)acquireRegard { - return (id) [super acquireRegard]; -} - - -- (void)acquireManeInstanllingTowardsoloudspeakerProvenienceAbout:(ConsumerAbstractMatrix *)userinfo { - if (self.atoloudspeakersouce.count > 0) { - self.mobileProvision.subTitle = userinfo.isBindPhone ? userinfo.phone : YMLocalizedString(@"YUMI_Mine_Setting_Present_0"); - self.payProvision.subTitle = userinfo.isBindPaymentPwd ? @"修改" : YMLocalizedString(@"YUMI_Mine_Setting_Present_2"); - } else { - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMIManeInstanllingProvisionMatrix * mobileProvision = [[YUMIManeInstanllingProvisionMatrix alloc] init]; - mobileProvision.title = YMLocalizedString(@"YUMI_Mine_Setting_Present_3"); - mobileProvision.subTitle = userinfo.isBindPhone ? userinfo.phone : YMLocalizedString(@"YUMI_Mine_Setting_Present_4"); - mobileProvision.type = YUMIManeInstanllingProvisionGenre_Phone; - self.mobileProvision = mobileProvision; - - YUMIManeInstanllingProvisionMatrix * surmountProvision = [[YUMIManeInstanllingProvisionMatrix alloc] init]; - surmountProvision.title = userinfo.isBindPasswd ? @"重置密码" : YMLocalizedString(@"YUMI_Mine_Setting_Present_6"); - surmountProvision.subTitle = YMLocalizedString(@"YUMI_Mine_Setting_Present_7"); - surmountProvision.type = YUMIManeInstanllingProvisionGenre_Login_Password; - self.surmountProvision = surmountProvision; - - YUMIManeInstanllingProvisionMatrix * blackListItem = [[YUMIManeInstanllingProvisionMatrix alloc] init]; - blackListItem.title = YMLocalizedString(@"YUMI_Mine_Setting_Present_8"); - blackListItem.subTitle = @""; - blackListItem.type = YUMIManeInstanllingProvisionGenre_Black_Manager; - - YUMIManeInstanllingProvisionMatrix * payProvision = [[YUMIManeInstanllingProvisionMatrix alloc] init]; - payProvision.title = YMLocalizedString(@"YUMI_Mine_Setting_Present_9"); - payProvision.subTitle = userinfo.isBindPaymentPwd ? @"修改" : YMLocalizedString(@"YUMI_Mine_Setting_Present_11"); - payProvision.type = YUMIManeInstanllingProvisionGenre_Pay_Password; - self.payProvision = payProvision; - - YUMIManeInstanllingProvisionMatrix * notificaItem = [[YUMIManeInstanllingProvisionMatrix alloc] init]; - notificaItem.title = YMLocalizedString(@"YUMI_Mine_Setting_Present_12"); - notificaItem.subTitle = YMLocalizedString(@"YUMI_Mine_Setting_Present_13"); - notificaItem.type = YUMIManeInstanllingProvisionGenre_Notification_Remind; - - YUMIManeInstanllingProvisionMatrix * privacyItem = [[YUMIManeInstanllingProvisionMatrix alloc] init]; - privacyItem.title = YMLocalizedString(@"YUMI_Mine_Setting_Present_14"); - privacyItem.subTitle = @""; - privacyItem.type = YUMIManeInstanllingProvisionGenre_Permission; - - YUMIManeInstanllingProvisionMatrix * helperItem = [[YUMIManeInstanllingProvisionMatrix alloc] init]; - helperItem.title = YMLocalizedString(@"YUMI_Mine_Setting_Present_15"); - helperItem.subTitle = @""; - helperItem.type = YUMIManeInstanllingProvisionGenre_Helper; - - YUMIManeInstanllingProvisionMatrix * feedbackItem = [[YUMIManeInstanllingProvisionMatrix alloc] init]; - feedbackItem.title = YMLocalizedString(@"YUMI_Mine_Setting_Present_16"); - feedbackItem.subTitle = @""; - feedbackItem.type = YUMIManeInstanllingProvisionGenre_Feedback; - - YUMIManeInstanllingProvisionMatrix * clearMemoryItem = [[YUMIManeInstanllingProvisionMatrix alloc] init]; - clearMemoryItem.title = YMLocalizedString(@"YUMI_Mine_Setting_Present_17"); - clearMemoryItem.subTitle = @""; - clearMemoryItem.type = YUMIManeInstanllingProvisionGenre_Clear_Memory; - - YUMIManeInstanllingProvisionMatrix *updateItem = [[YUMIManeInstanllingProvisionMatrix alloc] init]; - updateItem.title = YMLocalizedString(@"YUMI_Mine_Setting_Present_18"); - updateItem.subTitle = @""; - updateItem.type = YUMIManeInstanllingProvisionGenre_CheckUpdate; - - YUMIManeInstanllingProvisionMatrix * aboutusItem = [[YUMIManeInstanllingProvisionMatrix alloc] init]; - aboutusItem.title = [NSString stringWithFormat:@"关于%@", AppName]; - aboutusItem.subTitle = @""; - aboutusItem.type = YUMIManeInstanllingProvisionGenre_About_Us; - - NSArray * oneSection = @[mobileProvision]; - NSArray * twoSection = @[surmountProvision,payProvision, notificaItem, blackListItem]; - NSArray * threeSection = @[privacyItem]; - NSArray * fourthSection = @[helperItem, feedbackItem, clearMemoryItem, updateItem, aboutusItem]; - - self.atoloudspeakersouce = @[oneSection, twoSection, threeSection, fourthSection]; - }else{ - YUMIManeInstanllingProvisionMatrix * blackListItem = [[YUMIManeInstanllingProvisionMatrix alloc] init]; - blackListItem.title = YMLocalizedString(@"YUMI_Mine_Setting_Present_20"); - blackListItem.subTitle = @""; - blackListItem.type = YUMIManeInstanllingProvisionGenre_Black_Manager; - - YUMIManeInstanllingProvisionMatrix * mobileProvision = [[YUMIManeInstanllingProvisionMatrix alloc] init]; - mobileProvision.title = YMLocalizedString(@"YUMI_Mine_Setting_Present_21"); - mobileProvision.subTitle = userinfo.isBindPhone ? userinfo.phone : @""; - mobileProvision.type = YUMIManeInstanllingProvisionGenre_Phone; - self.mobileProvision = mobileProvision; - - YUMIManeInstanllingProvisionMatrix * surmountProvision = [[YUMIManeInstanllingProvisionMatrix alloc] init]; - surmountProvision.title = userinfo.isBindPasswd ? @"重置密码" : YMLocalizedString(@"YUMI_Mine_Setting_Present_23"); - surmountProvision.subTitle = @""; - surmountProvision.type = YUMIManeInstanllingProvisionGenre_Login_Password; - self.surmountProvision = surmountProvision; - - YUMIManeInstanllingProvisionMatrix * clearMemoryItem = [[YUMIManeInstanllingProvisionMatrix alloc] init]; - clearMemoryItem.title = YMLocalizedString(@"YUMI_Mine_Setting_Present_24"); - clearMemoryItem.subTitle = @""; - clearMemoryItem.type = YUMIManeInstanllingProvisionGenre_Clear_Memory; - - YUMIManeInstanllingProvisionMatrix * deleteItem = [[YUMIManeInstanllingProvisionMatrix alloc] init]; - deleteItem.title = YMLocalizedString(@"YUMI_Mine_Setting_Present_25"); - deleteItem.subTitle = @""; - deleteItem.type = YUMIManeInstanllingProvisionGenre_Delete_Account; - - NSArray * oneSection = @[blackListItem]; - NSArray * twoSection = @[mobileProvision, surmountProvision]; - NSArray * threeSection = @[clearMemoryItem, deleteItem]; - - self.atoloudspeakersouce = @[oneSection, twoSection, threeSection]; - } - } - - [[self acquireRegard] acquireManeInstanllingTowardsoloudspeakersourceAccomplishment:self.atoloudspeakersouce]; -} - -- (void)getUserInfo { - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - [Api getUserInfo:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ConsumerAbstractMatrix * infoMatrix = [ConsumerAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] dwellEarnConsumerAbstractAccomplishment:infoMatrix]; - }] uid:uid]; -} - - -- (void)revoctowardsionledUniversalSequenceription { - if([YUMIChamberMiniExecutive shareManager].acquireChamberAbstract) { - NSString *roomUid = [NSString stringWithFormat:@"%ld", [YUMIChamberMiniExecutive shareManager].acquireChamberAbstract.uid]; - - [Api requisitionReportConsumerOptowardssideChamber:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - } uid:[[AccountAbstractStorage instance] acquireCid] roomUid:roomUid ticket:[[AccountAbstractStorage instance] acquireTicket]]; - - NSString * roomId = [NSString stringWithFormat:@"%ld", [YUMIChamberMiniExecutive shareManager].acquireChamberAbstract.roomId]; - [[NIMSDK sharedSDK].chatroomManager exitChatroom:roomId completion:nil]; - [[RealtimackExecutive instance] exitRoom]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionChamberAbstract:nil]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionConsumerAbstract:nil]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionUniversalManual:nil isPlaying:NO]; - [[YUMIChamberMiniExecutive shareManager] replacementProvincialCommunictowardsion]; - } - AccountMatrix * account = [[AccountAbstractStorage instance] accountModel]; - [Api revoctowardsionledUniversalSequenceription:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] revoctowardsionledUniversalSequenceriptionAccomplishment]; - }] access_token:account.access_token]; - [self logout]; -} - -#pragma mark - 版本更新 --(void)acquireReleaseRefurbish{ - NSString *appVersion = [YYUtility appVersion]; - NSString *os = @"ios"; - NSString *channel = [YYUtility acquireAplictowardsionProvenience]; - [Api requisitionReleaseRefurbish:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - YUMIVersionRefurbishMatrix *model = [YUMIVersionRefurbishMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireReleaseRefurbish:model]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireReleaseRefurbishFlunk]; - } errorToast:NO] appVersion:appVersion os:os channel:channel]; -} - -@end diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeIntersectPwordExternalizer.h b/YuMi/Modules/YMMine/Presenter/YUMIManeIntersectPwordExternalizer.h deleted file mode 100644 index fbb079ad..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeIntersectPwordExternalizer.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMMinePayPwdPresenter.h -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import "MainExternalizer.h" -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeIntersectPwordExternalizer : MainExternalizer -- (void)mobileSmsCryptogram:(NSString *)phone type:(GetSmsGenre)type phoneAreaCode:(NSString *)phoneAreaCode; - -- (void)setIntersectCiphercryptogram:(NSString *)password phone:(NSString *)phone veriftCode:(NSString *)veriftCode; - - -- (void)setIntersectCiphercryptogram:(NSString *)password; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeIntersectPwordExternalizer.m b/YuMi/Modules/YMMine/Presenter/YUMIManeIntersectPwordExternalizer.m deleted file mode 100644 index d5d185d5..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeIntersectPwordExternalizer.m +++ /dev/null @@ -1,34 +0,0 @@ -// -// YMMinePayPwdPresenter.m -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import "YUMIManeIntersectPwordExternalizer.h" -#import "Api+Mine.h" -#import "FBCManePayPwordCeremony.h" -#import "DESEncrypt.h" -#import "YUMIConstant.h" -#import "AccountAbstractStorage.h" - -@implementation YUMIManeIntersectPwordExternalizer - -- (void)mobileSmsCryptogram:(NSString *)phone type:(GetSmsGenre)type phoneAreaCode:(NSString *)phoneAreaCode{ - NSString * typeStr = [NSString stringWithFormat:@"%lu", (unsigned long)type]; - NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyGenre_PasswordEncode)]; - [Api mobileSmsCryptogram:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] mobileSmsCryptogramAccomplishment]; - }] mobile:desPhone type:typeStr phoneAreaCode:phoneAreaCode]; -} - - -- (void)setIntersectCiphercryptogram:(NSString *)password { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - NSString * newpasswordDes = [DESEncrypt encryptUseDES:password key:KeyWithType(KeyGenre_PasswordEncode)]; - [Api setIntersectCiphercryptogram:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] setIntersectCiphercryptogramAccomplishment]; - }] newPasswd:newpasswordDes uid:uid ticket:ticket]; -} -@end diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeModifIntersectPwordExternalizer.h b/YuMi/Modules/YMMine/Presenter/YUMIManeModifIntersectPwordExternalizer.h deleted file mode 100644 index 4d624c49..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeModifIntersectPwordExternalizer.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMMineModifPayPwdPresenter.h -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import "MainExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeModifIntersectPwordExternalizer : MainExternalizer - -- (void)decortowardseIntersectmentCiphercryptogramAboutoldCiphercryptogram:(NSString *)oldPasswd - newPassword:(NSString *)newPasswd; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeModifIntersectPwordExternalizer.m b/YuMi/Modules/YMMine/Presenter/YUMIManeModifIntersectPwordExternalizer.m deleted file mode 100644 index 967b956f..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeModifIntersectPwordExternalizer.m +++ /dev/null @@ -1,29 +0,0 @@ -// -// YMMineModifPayPwdPresenter.m -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import "YUMIManeModifIntersectPwordExternalizer.h" -#import "Api+Mine.h" -#import "DESEncrypt.h" -#import "AccountAbstractStorage.h" -#import "YUMIConstant.h" -#import "FBCManeModifPayCeremony.h" - -@implementation YUMIManeModifIntersectPwordExternalizer - - -- (void)decortowardseIntersectmentCiphercryptogramAboutoldCiphercryptogram:(NSString *)oldPasswd - newPassword:(NSString *)newPasswd { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - NSString * newpasswordDes = [DESEncrypt encryptUseDES:newPasswd key:KeyWithType(KeyGenre_PasswordEncode)]; - NSString * oldpasswordDes = [DESEncrypt encryptUseDES:oldPasswd key:KeyWithType(KeyGenre_PasswordEncode)]; - [Api modifIntersectCiphercryptogram:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] modifIntersectCiphercryptogramAccomplishment]; - }] newPasswd:newpasswordDes oldPasswd:oldpasswordDes uid:uid ticket:ticket]; -} - -@end diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeNotificaExternalizer.h b/YuMi/Modules/YMMine/Presenter/YUMIManeNotificaExternalizer.h deleted file mode 100644 index dbb6f836..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeNotificaExternalizer.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMMineNotificaPresenter.h -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN -@class YUMIManeNotificationProvisionMatrix; -@interface YUMIManeNotificaExternalizer : BaseMvpExternalizer -- (void)requisitionConsumerAbstractInfformPosition; - -- (void)refurbishConsumerAbstractSystemInfform:(BOOL)notify; -- (void)refurbishBroadCastInfform:(BOOL)notify; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeNotificaExternalizer.m b/YuMi/Modules/YMMine/Presenter/YUMIManeNotificaExternalizer.m deleted file mode 100644 index 89f5dc66..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeNotificaExternalizer.m +++ /dev/null @@ -1,61 +0,0 @@ -// -// YMMineNotificaPresenter.m -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import "YUMIManeNotificaExternalizer.h" -#import "Api+Mine.h" -#import "FBCManeNotificaCeremony.h" -#import "AccountAbstractStorage.h" -#import "YUMIManeNotifyStatus.h" -#import "YUMIManeNotificationProvisionMatrix.h" - -@interface YUMIManeNotificaExternalizer () -@property (nonatomic,strong) YUMIManeNotificationProvisionMatrix *systemMatrix; -@end - -@implementation YUMIManeNotificaExternalizer - -- (id)acquireRegard { - return (id)[super acquireRegard]; -} - - -- (void)requisitionConsumerAbstractInfformPosition { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api requisitionConsumerAbstractInfformPosition:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - YUMIManeNotifyStatus * model = [YUMIManeNotifyStatus mtowardsrixAboutImpactbasket:data.data]; - if (self.systemMatrix == nil) { - YUMIManeNotificationProvisionMatrix * systemItem = [[YUMIManeNotificationProvisionMatrix alloc] init]; - systemItem.title = YMLocalizedString(@"YUMI_Mine_Notifica_Presenter_0"); - systemItem.desc = YMLocalizedString(@"YUMI_Mine_Notifica_Presenter_1"); - self.systemMatrix = systemItem; - } - self.systemMatrix.notification = model.sysMsgNotify; - YUMIManeNotificationProvisionMatrix * broadcastItem = [[YUMIManeNotificationProvisionMatrix alloc] init]; - broadcastItem.title = YMLocalizedString(@"YUMI_Mine_Notifica_Presenter_2"); - broadcastItem.desc = YMLocalizedString(@"YUMI_Mine_Notifica_Presenter_3"); - broadcastItem.notification = model.singleBroadcastMsgNotify; - NSArray * array = @[self.systemMatrix, broadcastItem]; - [[self acquireRegard] requisitionConsumerAbstractInfformPositionAccomplishment:array]; - }] uid:uid]; -} - -- (void)refurbishConsumerAbstractSystemInfform:(BOOL)notify { - NSString * notifyStr = [NSString stringWithFormat:@"%d", notify]; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api refurbishConsumerAbstractSystemInfformAbout:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - - }] sysMsgNotify:notifyStr uid:uid]; -} - -- (void)refurbishBroadCastInfform:(BOOL)notify { - NSString * notifyStr = [NSString stringWithFormat:@"%d", notify]; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api refurbishKellegBroadCastInfformAbout:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - - }] msgNotify:notifyStr uid:uid]; -} -@end diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeReassociationIntersectCiphercodeExternalizer.h b/YuMi/Modules/YMMine/Presenter/YUMIManeReassociationIntersectCiphercodeExternalizer.h deleted file mode 100644 index 4f6c7b8f..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeReassociationIntersectCiphercodeExternalizer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineResetPayPasswordPresenter.h -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import "MainExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeReassociationIntersectCiphercodeExternalizer : MainExternalizer -- (void)replacementIntersectCiphercryptogram:(NSString *)password phone:(NSString *)phone veriftCode:(NSString *)veriftCode; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeReassociationIntersectCiphercodeExternalizer.m b/YuMi/Modules/YMMine/Presenter/YUMIManeReassociationIntersectCiphercodeExternalizer.m deleted file mode 100644 index 831f70e2..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeReassociationIntersectCiphercodeExternalizer.m +++ /dev/null @@ -1,26 +0,0 @@ -// -// YMMineResetPayPasswordPresenter.m -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import "YUMIManeReassociationIntersectCiphercodeExternalizer.h" -#import "Api+Mine.h" -#import "AccountAbstractStorage.h" -#import "DESEncrypt.h" -#import "YUMIConstant.h" -#import "FBCManeResetPayCiphercodeCeremony.h" - -@implementation YUMIManeReassociationIntersectCiphercodeExternalizer - -- (void)replacementIntersectCiphercryptogram:(NSString *)password phone:(NSString *)phone veriftCode:(NSString *)veriftCode { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - NSString * newpasswordDes = [DESEncrypt encryptUseDES:password key:KeyWithType(KeyGenre_PasswordEncode)]; - [Api setIntersectCiphercryptogram:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] replacementIntersectCiphercryptogramAccomplishment]; - }] newPasswd:newpasswordDes phone:phone code:veriftCode uid:uid ticket:ticket]; -} - -@end diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeReassociationSurmountPwordExternalizer.h b/YuMi/Modules/YMMine/Presenter/YUMIManeReassociationSurmountPwordExternalizer.h deleted file mode 100644 index a47d75b8..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeReassociationSurmountPwordExternalizer.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMMineResetLoginPwdPresenter.h -// YUMI -// -// Created by YUMI on 2022/5/5. -// - -#import "BaseMvpExternalizer.h" -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeReassociationSurmountPwordExternalizer : BaseMvpExternalizer - -- (void)mobileSmsCryptogram:(NSString *)phone type:(GetSmsGenre)type phoneAreaCode:(NSString *)phoneAreaCode; - -- (void)replacementSurmountCiphercryptogram:(NSString *)phone smsCode:(NSString *)smsCode newPwd:(NSString *)newPwd; - -- (void)revoctowardsionledUniversalSequenceription; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeReassociationSurmountPwordExternalizer.m b/YuMi/Modules/YMMine/Presenter/YUMIManeReassociationSurmountPwordExternalizer.m deleted file mode 100644 index ce1a95f9..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeReassociationSurmountPwordExternalizer.m +++ /dev/null @@ -1,62 +0,0 @@ -// -// YMMineResetLoginPwdPresenter.m -// YUMI -// -// Created by YUMI on 2022/5/5. -// - -#import "YUMIManeReassociationSurmountPwordExternalizer.h" -#import -#import "Api+Mine.h" -#import "Api+Room.h" -#import "DESEncrypt.h" -#import "YUMIConstant.h" -#import "FBCManeResetSurmountPwordCeremony.h" -#import "YUMIChamberMiniExecutive.h" -#import "AccountAbstractStorage.h" -#import "RealtimackExecutive.h" -#import "ChamberAbstractMatrix.h" -#import "AccountMatrix.h" -@implementation YUMIManeReassociationSurmountPwordExternalizer - -- (void)mobileSmsCryptogram:(NSString *)phone type:(GetSmsGenre)type phoneAreaCode:(NSString *)phoneAreaCode{ - NSString * typeStr = [NSString stringWithFormat:@"%lu", (unsigned long)type]; - NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyGenre_PasswordEncode)]; - [Api mobileSmsCryptogram:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] mobileSmsCryptogramAccomplishment]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - - }] mobile:desPhone type:typeStr phoneAreaCode:phoneAreaCode]; -} - -- (void)replacementSurmountCiphercryptogram:(NSString *)phone smsCode:(NSString *)smsCode newPwd:(NSString *)newPwd { - NSString * desNewPwd = [DESEncrypt encryptUseDES:newPwd key:KeyWithType(KeyGenre_PasswordEncode)]; - NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyGenre_PasswordEncode)]; - [Api replacementLoingCiphercryptogram:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] replacementSurmountCiphercryptogramAccomplishment]; - }] phone:desPhone newPwd:desNewPwd smsCode:smsCode]; -} - -- (void)revoctowardsionledUniversalSequenceription { - if([YUMIChamberMiniExecutive shareManager].acquireChamberAbstract) { - NSString *roomUid = [NSString stringWithFormat:@"%ld", [YUMIChamberMiniExecutive shareManager].acquireChamberAbstract.uid]; - - [Api requisitionReportConsumerOptowardssideChamber:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - } uid:[[AccountAbstractStorage instance] acquireCid] roomUid:roomUid ticket:[[AccountAbstractStorage instance] acquireTicket]]; - - NSString * roomId = [NSString stringWithFormat:@"%ld", [YUMIChamberMiniExecutive shareManager].acquireChamberAbstract.roomId]; - [[NIMSDK sharedSDK].chatroomManager exitChatroom:roomId completion:nil]; - [[RealtimackExecutive instance] exitRoom]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionChamberAbstract:nil]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionConsumerAbstract:nil]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionUniversalManual:nil isPlaying:NO]; - [[YUMIChamberMiniExecutive shareManager] replacementProvincialCommunictowardsion]; - } - AccountMatrix * account = [[AccountAbstractStorage instance] accountModel]; - [Api revoctowardsionledUniversalSequenceription:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] revoctowardsionledUniversalSequenceriptionAccomplishment]; - }] access_token:account.access_token]; - [self logout]; -} - -@end diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeReindictExternalizer.h b/YuMi/Modules/YMMine/Presenter/YUMIManeReindictExternalizer.h deleted file mode 100644 index da48639b..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeReindictExternalizer.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YMMineRechargePresenter.h -// YUMI -// -// Created by YUMI on 2021/9/24. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeReindictExternalizer : BaseMvpExternalizer - -- (void)acquireConsumerPocketbookAbstract; -- (void)requisitionReindictSttowardsementAboutNarrow:(NSString *)channel; - -- (void)requisitionPCQReindictTellingAboutInstructionProdId:(NSString *)chargeProdId; - -- (void)examineReceiptAboutTowardsoloudspeaker:(NSString *)receipt indentId:(NSString *)indentId transcationId:(NSString *)transcationId; - -- (void)examineSplconcludeidIdents:(NSArray *)transcations; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeReindictExternalizer.m b/YuMi/Modules/YMMine/Presenter/YUMIManeReindictExternalizer.m deleted file mode 100644 index 369a0b3f..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeReindictExternalizer.m +++ /dev/null @@ -1,67 +0,0 @@ -// -// YMMineRechargePresenter.m -// YUMI -// -// Created by YUMI on 2021/9/24. -// - -#import "YUMIManeReindictExternalizer.h" -#import "Api+Mine.h" -#import "AccountAbstractStorage.h" -#import "YYUtility.h" -#import "NSObject+MJExtension.h" -#import "FBCManeReindictCeremony.h" -#import "ReindictStatementMatrix.h" -#import "RamparatetAbstractMatrix.h" - -@implementation YUMIManeReindictExternalizer - - -- (void)acquireConsumerPocketbookAbstract { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - [Api acquireConsumerPocketbookAbstract:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - RamparatetAbstractMatrix * model = [RamparatetAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireConsumerPocketbookAbstract:model]; - }] uid:uid ticket:ticket]; -} - - -- (void)requisitionReindictSttowardsementAboutNarrow:(NSString *)channel { - [Api acquireReindictSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [ReindictStatementMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] requisitionReindictSttowardsementSucccess:array]; - }] channelType:channel]; -} - -- (void)requisitionPCQReindictTellingAboutInstructionProdId:(NSString *)chargeProdId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - NSString * deviceInfo = [YYUtility deviceID]; - NSString * clientIp= [YYUtility ipAccelerateress]; - [Api requisitionPCQReindict:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSString *indentId = (NSString *)data.data[@"recordId"]; - [[self acquireRegard] requisitionPCQReindictTellingAccomplishment:indentId chargeProdId:chargeProdId]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] requisitionPCQReindictTellingFlunk]; - }] chargeProdId:chargeProdId uid:uid ticket:ticket deviceInfo:deviceInfo clientIp:clientIp]; -} - - -- (void)examineReceiptAboutTowardsoloudspeaker:(NSString *)receipt indentId:(NSString *)indentId transcationId:(NSString *)transcationId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - [Api checkReceipt:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] examineReceiptAccomplishment:transcationId]; - } EvidenceChambering:YES] receipt:receipt chooseEnv:@"true" chargeRecordId:indentId transcationId:transcationId uid:uid ticket:ticket]; -} - - -- (void)examineSplconcludeidIdents:(NSArray *)transcations { - NSString * transcationIdStr = [transcations toJSONBWSttr]; - [Api requisitionCheckSplconcludeidIdents:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] examineSplconcludeidIdentsAccomplishment]; - }] transcationIdStr:transcationIdStr]; -} - -@end diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeSurmountCiphercodeExternalizer.h b/YuMi/Modules/YMMine/Presenter/YUMIManeSurmountCiphercodeExternalizer.h deleted file mode 100644 index 9c7f3e07..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeSurmountCiphercodeExternalizer.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMMineLoginPasswordPresenter.h -// YUMI -// -// Created by YUMI on 2022/4/25. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeSurmountCiphercodeExternalizer : BaseMvpExternalizer -- (void)setSurmountCiphercryptogram:(NSString *)phone newPwd:(NSString *)newPwd; - -- (void)decortowardseSurmountCiphercryptogram:(NSString *)phone newPwd:(NSString *)newPwd pwd:(NSString *)pwd; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeSurmountCiphercodeExternalizer.m b/YuMi/Modules/YMMine/Presenter/YUMIManeSurmountCiphercodeExternalizer.m deleted file mode 100644 index de052032..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeSurmountCiphercodeExternalizer.m +++ /dev/null @@ -1,36 +0,0 @@ -// -// YMMineLoginPasswordPresenter.m -// YUMI -// -// Created by YUMI on 2022/4/25. -// - -#import "YUMIManeSurmountCiphercodeExternalizer.h" -#import "Api+Mine.h" -#import "DESEncrypt.h" -#import "YUMIConstant.h" -#import "FBCManeSurmountCiphercodeCeremony.h" - -@implementation YUMIManeSurmountCiphercodeExternalizer - - -- (void)setSurmountCiphercryptogram:(NSString *)phone newPwd:(NSString *)newPwd { - NSString * desNewPwd = [DESEncrypt encryptUseDES:newPwd key:KeyWithType(KeyGenre_PasswordEncode)]; - NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyGenre_PasswordEncode)]; - [Api setLoingCiphercryptogram:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] setSurmountCiphercryptogramAccomplishment]; - } EvidenceChambering:YES] phone:desPhone newPwd:desNewPwd]; -} - - -- (void)decortowardseSurmountCiphercryptogram:(NSString *)phone newPwd:(NSString *)newPwd pwd:(NSString *)pwd{ - NSString * desNewPwd = [DESEncrypt encryptUseDES:newPwd key:KeyWithType(KeyGenre_PasswordEncode)]; - NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyGenre_PasswordEncode)]; - NSString * desPwd = [DESEncrypt encryptUseDES:pwd key:KeyWithType(KeyGenre_PasswordEncode)]; - [Api decortowardseLoingCiphercryptogram:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] decortowardseSurmountCiphercryptogramAccomplishment]; - }] phone:desPhone newPwd:desNewPwd pwd:desPwd]; -} - - -@end diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeTerminalImpressionExternalizer.h b/YuMi/Modules/YMMine/Presenter/YUMIManeTerminalImpressionExternalizer.h deleted file mode 100644 index ad52d824..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeTerminalImpressionExternalizer.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMMineFootPrintPresenter.h -// YUMI -// -// Created by YUMI on 2022/7/26. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeTerminalImpressionExternalizer : BaseMvpExternalizer - -- (void)acquireTerminalImpressionSttowardsementAboutPeriod:(int)page pageSize:(int)pageSize state:(int)state; - -- (void)sanitaryTerminalImpression:(NSString *)roomUid; - -- (void)assembleChamberAboutChamberCid:(NSString *)roomUid; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeTerminalImpressionExternalizer.m b/YuMi/Modules/YMMine/Presenter/YUMIManeTerminalImpressionExternalizer.m deleted file mode 100644 index 62d1513a..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeTerminalImpressionExternalizer.m +++ /dev/null @@ -1,42 +0,0 @@ -// -// YMMineFootPrintPresenter.m -// YUMI -// -// Created by YUMI on 2022/7/26. -// - -#import "YUMIManeTerminalImpressionExternalizer.h" -#import "Api+Mine.h" -#import "Api+Room.h" -#import "FBCManeFootPrintCeremony.h" -#import "AccountAbstractStorage.h" -#import "YUMIManeTerminalImpressionMatrix.h" - -@implementation YUMIManeTerminalImpressionExternalizer - -- (void)acquireTerminalImpressionSttowardsementAboutPeriod:(int)page pageSize:(int)pageSize state:(int)state { - NSString *uid = [AccountAbstractStorage instance].acquireCid; - [Api requisitionTerminalImpression:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray *array = [YUMIManeTerminalImpressionMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireTerminalImpressionSttowardsementAccomplishment:array state:state]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireTerminalImpressionSttowardsementFlunk:state]; - }] uid:uid page:[NSString stringWithFormat:@"%d", page] pageSize:[NSString stringWithFormat:@"%d", pageSize]]; -} - -- (void)sanitaryTerminalImpression:(NSString *)roomUid { - NSString *uid = [AccountAbstractStorage instance].acquireCid; - [Api requisitionCleanTerminalImpression:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] sanitaryTerminalImpressionAccomplishment]; - }] uid:uid roomUid:roomUid.length ? roomUid : NULL]; -} - -- (void)assembleChamberAboutChamberCid:(NSString *)roomUid { - NSString * type = @"1"; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api assembleChamber:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] assembleChamberAccomplishment]; - }] roomUid:roomUid uid:uid type:type roomUids:NULL]; -} - -@end diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeVacationerExternalizer.h b/YuMi/Modules/YMMine/Presenter/YUMIManeVacationerExternalizer.h deleted file mode 100644 index fbb187b4..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeVacationerExternalizer.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMMineVisitorPresenter.h -// YUMI -// -// Created by YUMI on 2022/1/26. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeVacationerExternalizer : BaseMvpExternalizer - -- (void)acquireVactowardsionerSttowardsement:(int)page pageSize:(int)pageSize state:(int)state; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeVacationerExternalizer.m b/YuMi/Modules/YMMine/Presenter/YUMIManeVacationerExternalizer.m deleted file mode 100644 index 27b50b43..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeVacationerExternalizer.m +++ /dev/null @@ -1,26 +0,0 @@ -// -// YMMineVisitorPresenter.m -// YUMI -// -// Created by YUMI on 2022/1/26. -// - -#import "YUMIManeVacationerExternalizer.h" -#import "Api+Mine.h" -#import "FBCManeVisitorCeremony.h" -#import "AccountAbstractStorage.h" -#import "YUMIManeVacationerProvisionMatrix.h" - -@implementation YUMIManeVacationerExternalizer - -- (void)acquireVactowardsionerSttowardsement:(int)page pageSize:(int)pageSize state:(int)state { - [Api acquireVactowardsionerSttowardsementImplementtowardsion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray *array = [YUMIManeVacationerProvisionMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] dwellEarnVactowardsionerSttowardsementAccomplishment:array state:state]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireVactowardsionerSttowardsementFlunk:state]; - }] pageNum:[NSString stringWithFormat:@"%d", page] pageSize:[NSString stringWithFormat:@"%d", pageSize]]; - -} - -@end diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeValidationIdentityExternalizer.h b/YuMi/Modules/YMMine/Presenter/YUMIManeValidationIdentityExternalizer.h deleted file mode 100644 index 15559d38..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeValidationIdentityExternalizer.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YMMineVerifIdentityPresenter.h -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import "MainExternalizer.h" -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeValidationIdentityExternalizer : MainExternalizer - -- (void)mobileSmsCryptogram:(NSString *)phone type:(GetSmsGenre)type phoneAreaCode:(NSString *)phoneAreaCode; - - -- (void)examineAplictowardsionartowardsusCryptogramAboutAplictowardsionartowardsus:(NSString *)moblieNum code:(NSString *)code; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/YUMIManeValidationIdentityExternalizer.m b/YuMi/Modules/YMMine/Presenter/YUMIManeValidationIdentityExternalizer.m deleted file mode 100644 index 3f8e857a..00000000 --- a/YuMi/Modules/YMMine/Presenter/YUMIManeValidationIdentityExternalizer.m +++ /dev/null @@ -1,38 +0,0 @@ -// -// YMMineVerifIdentityPresenter.m -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import "YUMIManeValidationIdentityExternalizer.h" -#import "Api.h" -#import "FBCManeVerifIdentityCeremony.h" -#import "AccountAbstractStorage.h" -#import "DESEncrypt.h" -#import "YUMIConstant.h" - - -@implementation YUMIManeValidationIdentityExternalizer - -- (void)mobileSmsCryptogram:(NSString *)phone type:(GetSmsGenre)type phoneAreaCode:(NSString *)phoneAreaCode{ - NSString * typeStr = [NSString stringWithFormat:@"%lu", (unsigned long)type]; - NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyGenre_PasswordEncode)]; - [Api mobileSmsCryptogram:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] mobileSmsCryptogramAccomplishment]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - - }] mobile:desPhone type:typeStr phoneAreaCode:phoneAreaCode]; -} - - -- (void)examineAplictowardsionartowardsusCryptogramAboutAplictowardsionartowardsus:(NSString *)moblieNum code:(NSString *)code { - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - NSString * ticket = [[AccountAbstractStorage instance] acquireTicket]; - NSString * desPhone = [DESEncrypt encryptUseDES:moblieNum key:KeyWithType(KeyGenre_PasswordEncode)]; - [Api examineAplictowardsionartowardsusCryptogram:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] examineAplictowardsionartowardsusCryptogramAboutAplictowardsionartowardsusAccomplishment]; - }] mobile:desPhone code:code uid:uid ticket:ticket]; -} - -@end diff --git a/YuMi/Modules/YMMine/Protocol/FBCManeBlackStatementCeremony.h b/YuMi/Modules/YMMine/Protocol/FBCManeBlackStatementCeremony.h deleted file mode 100644 index 52992fe7..00000000 --- a/YuMi/Modules/YMMine/Protocol/FBCManeBlackStatementCeremony.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMMineBlackListProtocol.h -// YUMI -// -// Created by YUMI on 2022/5/13. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCManeBlackStatementCeremony - -- (void)acquireConsumerSttowardsementAbstractAccomplishment:(NSArray *)array; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/FBCManeCeremony.h b/YuMi/Modules/YMMine/Protocol/FBCManeCeremony.h deleted file mode 100644 index dbecc670..00000000 --- a/YuMi/Modules/YMMine/Protocol/FBCManeCeremony.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// YMMineProtocol.h -// YUMI -// -// Created by YUMI on 2021/9/16. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIManeProvisionMatrix, ConsumerAbstractMatrix, NobleCenterModel, CollectiveSpecificAbstractMatrix, YUMIManeFuntionProvisionMatrix, ResidenceOriflammeAbstractMatrix, RamparatetAbstractMatrix; -@protocol FBCManeCeremony - -- (void)dwellEarnConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo; -- (void)acquireConsumerPocketbookAbstract:(RamparatetAbstractMatrix *)balanceInfo WithGroup:(dispatch_group_t) group; -- (void)acquireConsumerPocketbookAbstractFlunkAboutGroup:(dispatch_group_t) group; -- (void)acquireMagnificentConcentrtowardseAbstractAccomplishment:(NobleCenterModel *)model WithGroup:(dispatch_group_t) group; -- (void)acquireMagnificentConcentrtowardseAbstractFlunkAboutGroup:(dispatch_group_t) group; -- (void)dwellEarnCollectiveSpecificAbstractAccomplishment:(CollectiveSpecificAbstractMatrix *)collectiveAbstract WithGroup:(dispatch_group_t) group; -- (void)dwellEarnCollectiveSpecificAbstractflunkAboutGroup:(dispatch_group_t)group; -- (void)dwellEarnManeFuntionProvisionAccomplishment:(NSArray *)items WithGroup:(dispatch_group_t) group; -- (void)dwellEarnManeFuntionProvisionFlunkAboutGroup:(dispatch_group_t) group; -- (void)dwellEarnsubjectiveOriflammeSttowardsementAccomplishment:(NSArray *)items WithGroup:(dispatch_group_t) group; -- (void)dwellEarnsubjectiveOriflammeSttowardsementFlunkAboutGroup:(dispatch_group_t) group; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/FBCManeCollectChamberStatementCeremony.h b/YuMi/Modules/YMMine/Protocol/FBCManeCollectChamberStatementCeremony.h deleted file mode 100644 index 44ab8eb6..00000000 --- a/YuMi/Modules/YMMine/Protocol/FBCManeCollectChamberStatementCeremony.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMMineCollectRoomListProtocol.h -// YUMI -// -// Created by YUMI on 2022/7/27. -// - -#import - -@protocol FBCManeCollectChamberStatementCeremony - -- (void)dwellEarnAssembleChamberSttowardsementAccomplishment:(NSArray *)array state:(int)state; - -- (void)acquireAssembleChamberSttowardsementFlunk:(int)state; - -- (void)representtowardsionAssembleChamberAccomplishment; - -@end diff --git a/YuMi/Modules/YMMine/Protocol/FBCManeConsiderationCeremony.h b/YuMi/Modules/YMMine/Protocol/FBCManeConsiderationCeremony.h deleted file mode 100644 index 818cc61a..00000000 --- a/YuMi/Modules/YMMine/Protocol/FBCManeConsiderationCeremony.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMMineAttentionProtocol.h -// YUMI -// -// Created by YUMI on 2021/12/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCManeConsiderationCeremony -- (void)acquireConsumerConsidertowardsionSttowardsementAccomplishment:(NSArray *)array state:(int)state; -- (void)acquireConsumerConsidertowardsionSttowardsementFlunk:(int)state; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/FBCManeConsumerAbstractAlbumCeremony.h b/YuMi/Modules/YMMine/Protocol/FBCManeConsumerAbstractAlbumCeremony.h deleted file mode 100644 index da6eea4e..00000000 --- a/YuMi/Modules/YMMine/Protocol/FBCManeConsumerAbstractAlbumCeremony.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMMineUserInfoAlbumProtocol.h -// YUMI -// -// Created by YUMI on 2021/9/24. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ConsumerAbstractMatrix; -@protocol FBCManeConsumerAbstractAlbumCeremony -- (void)dwellEarnConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo; -- (void)upburdenConsumerBrochureAccomplishment; -- (void)upburdenBrochureIndictowardseToTertiusAccomplishment:(NSString *)url; -- (void)representtowardsionConsumerBrochureAccomplishment; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/FBCManeConsumerAbstractCeremony.h b/YuMi/Modules/YMMine/Protocol/FBCManeConsumerAbstractCeremony.h deleted file mode 100644 index c1b64612..00000000 --- a/YuMi/Modules/YMMine/Protocol/FBCManeConsumerAbstractCeremony.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMMineUserInfoProtocol.h -// YUMI -// -// Created by YUMI on 2021/9/23. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ConsumerAbstractMatrix; -@protocol FBCManeConsumerAbstractCeremony -- (void)dwellEarnConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo; -- (void)onacquireSpecificAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo; -- (void)considertowardsionConsumerAccomplishment:(BOOL)status; -- (void)acquireConsidertowardsionDeclareAccomplishment:(BOOL)status; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/FBCManeConsumerAbstractEditCeremony.h b/YuMi/Modules/YMMine/Protocol/FBCManeConsumerAbstractEditCeremony.h deleted file mode 100644 index a2ae5cb7..00000000 --- a/YuMi/Modules/YMMine/Protocol/FBCManeConsumerAbstractEditCeremony.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMMineUserInfoEditProtocol.h -// YUMI -// -// Created by YUMI on 2021/9/23. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ConsumerAbstractMatrix; -@protocol FBCManeConsumerAbstractEditCeremony -- (void)acquireConsumerAbstractCompileTowardsoloudspeakerProvenienceAccomplishment:(NSArray *)array; -- (void)accomplishConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo; -- (void)dwellEarnConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo; -- (void)upburdenIndictowardseAccomplishment:(NSString *)url; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/FBCManeConsumerAbstractPresentWallCeremony.h b/YuMi/Modules/YMMine/Protocol/FBCManeConsumerAbstractPresentWallCeremony.h deleted file mode 100644 index fed8e67b..00000000 --- a/YuMi/Modules/YMMine/Protocol/FBCManeConsumerAbstractPresentWallCeremony.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMMineUserInfoGiftWallProtocol.h -// YUMI -// -// Created by YUMI on 2022/4/15. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCManeConsumerAbstractPresentWallCeremony - -- (void)acquireConsumerPresentRampartowardsAccomplishment:(NSArray *)giftList; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/FBCManeConsumerAtomicCeremony.h b/YuMi/Modules/YMMine/Protocol/FBCManeConsumerAtomicCeremony.h deleted file mode 100644 index 806a16ed..00000000 --- a/YuMi/Modules/YMMine/Protocol/FBCManeConsumerAtomicCeremony.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMMineUserDataProtolcol.h -// YUMI -// -// Created by YUMI on 2022/4/14. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class CollectiveSpecificAbstractMatrix; -@protocol FBCManeConsumerAtomicCeremony -- (void)acquireCollectiveSpecificAbstractAccomplishment:(CollectiveSpecificAbstractMatrix *)collectiveSpecificAbstract universalConsumerCollectiveAbstract:(CollectiveSpecificAbstractMatrix *)universalConsumerCollectiveAbstract; -- (void)componentAplictowardsionlyCorridorAccomplishment; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/FBCManeFanaticsCeremony.h b/YuMi/Modules/YMMine/Protocol/FBCManeFanaticsCeremony.h deleted file mode 100644 index 52a22877..00000000 --- a/YuMi/Modules/YMMine/Protocol/FBCManeFanaticsCeremony.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMMineFansProtocol.h -// YUMI -// -// Created by YUMI on 2021/12/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCManeFanaticsCeremony - -- (void)acquireConsumerFantowardsicsSttowardsementAccomplishment:(NSArray *)array state:(int)state; -- (void)acquireConsumerFantowardsicsSttowardsementFlunk:(int)state; -- (void)considertowardsionFantowardsicsAccomplishment; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/FBCManeFeedbackCeremony.h b/YuMi/Modules/YMMine/Protocol/FBCManeFeedbackCeremony.h deleted file mode 100644 index c856b0a6..00000000 --- a/YuMi/Modules/YMMine/Protocol/FBCManeFeedbackCeremony.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMMineFeedbackProtocol.h -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCManeFeedbackCeremony - -- (void)preserveFeedencourageAccomplishment; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/FBCManeFootPrintCeremony.h b/YuMi/Modules/YMMine/Protocol/FBCManeFootPrintCeremony.h deleted file mode 100644 index 485360b2..00000000 --- a/YuMi/Modules/YMMine/Protocol/FBCManeFootPrintCeremony.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YMMineFootPrintProtocol.h -// YUMI -// -// Created by YUMI on 2022/7/26. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCManeFootPrintCeremony - -- (void)acquireTerminalImpressionSttowardsementAccomplishment:(NSArray *)array state:(int)state; - -- (void)acquireTerminalImpressionSttowardsementFlunk:(int)state; - -- (void)sanitaryTerminalImpressionAccomplishment; - -- (void)assembleChamberAccomplishment; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/FBCManeFriendCeremony.h b/YuMi/Modules/YMMine/Protocol/FBCManeFriendCeremony.h deleted file mode 100644 index eb9963bc..00000000 --- a/YuMi/Modules/YMMine/Protocol/FBCManeFriendCeremony.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineFriendProtocol.h -// YUMI -// -// Created by YUMI on 2022/5/29. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCManeFriendCeremony -- (void)acquireConsumerSttowardsementAbstractAccomplishment:(NSArray *)list; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/FBCManeInstanllingCeremony.h b/YuMi/Modules/YMMine/Protocol/FBCManeInstanllingCeremony.h deleted file mode 100644 index 1c97b2fb..00000000 --- a/YuMi/Modules/YMMine/Protocol/FBCManeInstanllingCeremony.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMMineSettingProtocol.h -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import -NS_ASSUME_NONNULL_BEGIN - -@class YUMIVersionRefurbishMatrix; -@protocol FBCManeInstanllingCeremony - -- (void)acquireManeInstanllingTowardsoloudspeakersourceAccomplishment:(NSArray *)array; -- (void)dwellEarnConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo; -- (void)revoctowardsionledUniversalSequenceriptionAccomplishment; - -- (void)acquireReleaseRefurbishFlunk; --(void)acquireReleaseRefurbish:(YUMIVersionRefurbishMatrix *)model; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/FBCManeKellegFanaticsTeamCeremony.h b/YuMi/Modules/YMMine/Protocol/FBCManeKellegFanaticsTeamCeremony.h deleted file mode 100644 index 91a852b8..00000000 --- a/YuMi/Modules/YMMine/Protocol/FBCManeKellegFanaticsTeamCeremony.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YMMineAnchorFansTeamProtocol.h -// YUMI -// -// Created by YUMI on 2022/4/8. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCManeKellegFanaticsTeamCeremony - -- (void)acquireKellegFantowardsicsSquadSttowardsementAccomplishment:(NSArray *)array state:(int)state; - -- (void)acquireKellegFantowardsicsSquadSttowardsementFlunk:(int)state; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/FBCManeModifPayCeremony.h b/YuMi/Modules/YMMine/Protocol/FBCManeModifPayCeremony.h deleted file mode 100644 index f0943934..00000000 --- a/YuMi/Modules/YMMine/Protocol/FBCManeModifPayCeremony.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMMineModifPayProtocol.h -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCManeModifPayCeremony - -- (void)modifIntersectCiphercryptogramAccomplishment; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/FBCManeNotificaCeremony.h b/YuMi/Modules/YMMine/Protocol/FBCManeNotificaCeremony.h deleted file mode 100644 index aa070393..00000000 --- a/YuMi/Modules/YMMine/Protocol/FBCManeNotificaCeremony.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineNotificaProtocol.h -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIManeNotifyStatus, YUMIManeNotificationProvisionMatrix; -@protocol FBCManeNotificaCeremony -- (void)requisitionConsumerAbstractInfformPositionAccomplishment:(NSArray *)array; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/FBCManePayPwordCeremony.h b/YuMi/Modules/YMMine/Protocol/FBCManePayPwordCeremony.h deleted file mode 100644 index 3ff1e605..00000000 --- a/YuMi/Modules/YMMine/Protocol/FBCManePayPwordCeremony.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMMInePayPwdProtocol.h -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCManePayPwordCeremony -- (void)mobileSmsCryptogramAccomplishment; -- (void)setIntersectCiphercryptogramAccomplishment; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/FBCManeReindictCeremony.h b/YuMi/Modules/YMMine/Protocol/FBCManeReindictCeremony.h deleted file mode 100644 index 5f7cef68..00000000 --- a/YuMi/Modules/YMMine/Protocol/FBCManeReindictCeremony.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMMineRechargeProtocol.h -// YUMI -// -// Created by YUMI on 2021/9/24. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class RamparatetAbstractMatrix; -@protocol FBCManeReindictCeremony -- (void)acquireConsumerPocketbookAbstract:(RamparatetAbstractMatrix *)balanceInfo; -- (void)requisitionReindictSttowardsementSucccess:(NSArray *)list; -- (void)requisitionPCQReindictTellingAccomplishment:(NSString *)indentId chargeProdId:(NSString *)chargeProdId; -- (void)requisitionPCQReindictTellingFlunk; -- (void)examineReceiptAccomplishment:(NSString *)transcationId; -- (void)examineSplconcludeidIdentsAccomplishment; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/FBCManeResetPayCiphercodeCeremony.h b/YuMi/Modules/YMMine/Protocol/FBCManeResetPayCiphercodeCeremony.h deleted file mode 100644 index 1ecaeeb5..00000000 --- a/YuMi/Modules/YMMine/Protocol/FBCManeResetPayCiphercodeCeremony.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMMineResetPayPasswordProtocol.h -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCManeResetPayCiphercodeCeremony -- (void)replacementIntersectCiphercryptogramAccomplishment; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/FBCManeResetSurmountPwordCeremony.h b/YuMi/Modules/YMMine/Protocol/FBCManeResetSurmountPwordCeremony.h deleted file mode 100644 index d612c955..00000000 --- a/YuMi/Modules/YMMine/Protocol/FBCManeResetSurmountPwordCeremony.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMMineResetLoginPwdProtocol.h -// YUMI -// -// Created by YUMI on 2022/5/5. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCManeResetSurmountPwordCeremony - -- (void)replacementSurmountCiphercryptogramAccomplishment; - -- (void)mobileSmsCryptogramAccomplishment; - -- (void)revoctowardsionledUniversalSequenceriptionAccomplishment; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/FBCManeSurmountCiphercodeCeremony.h b/YuMi/Modules/YMMine/Protocol/FBCManeSurmountCiphercodeCeremony.h deleted file mode 100644 index a6952657..00000000 --- a/YuMi/Modules/YMMine/Protocol/FBCManeSurmountCiphercodeCeremony.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMMineLoginPasswordProtocol.h -// YUMI -// -// Created by YUMI on 2022/4/25. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCManeSurmountCiphercodeCeremony - -- (void)decortowardseSurmountCiphercryptogramAccomplishment; -- (void)setSurmountCiphercryptogramAccomplishment; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/FBCManeVerifIdentityCeremony.h b/YuMi/Modules/YMMine/Protocol/FBCManeVerifIdentityCeremony.h deleted file mode 100644 index 05e17617..00000000 --- a/YuMi/Modules/YMMine/Protocol/FBCManeVerifIdentityCeremony.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMMineVerifIdentityProtocol.h -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCManeVerifIdentityCeremony -- (void)mobileSmsCryptogramAccomplishment; -- (void)examineAplictowardsionartowardsusCryptogramAboutAplictowardsionartowardsusAccomplishment; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/FBCManeVisitorCeremony.h b/YuMi/Modules/YMMine/Protocol/FBCManeVisitorCeremony.h deleted file mode 100644 index 6f2b588d..00000000 --- a/YuMi/Modules/YMMine/Protocol/FBCManeVisitorCeremony.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YMMineVisitorProtocol.h -// YUMI -// -// Created by YUMI on 2022/1/26. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCManeVisitorCeremony - -- (void)dwellEarnVactowardsionerSttowardsementAccomplishment:(NSArray *)array state:(int)state; - -- (void)acquireVactowardsionerSttowardsementFlunk:(int)state; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/XPMineAnchorFansTeamProtocol.h b/YuMi/Modules/YMMine/Protocol/XPMineAnchorFansTeamProtocol.h new file mode 100644 index 00000000..8a4bc0ad --- /dev/null +++ b/YuMi/Modules/YMMine/Protocol/XPMineAnchorFansTeamProtocol.h @@ -0,0 +1,22 @@ +// +// YMMineAnchorFansTeamProtocol.h +// YUMI +// +// Created by YUMI on 2022/4/8. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMineAnchorFansTeamProtocol + +///获取访客列表成功 +- (void)getAnchorFansTeamListSuccess:(NSArray *)array state:(int)state; + +///获取访客列表失败 +- (void)getAnchorFansTeamListFail:(int)state; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/XPMineAttentionProtocol.h b/YuMi/Modules/YMMine/Protocol/XPMineAttentionProtocol.h new file mode 100644 index 00000000..591d5315 --- /dev/null +++ b/YuMi/Modules/YMMine/Protocol/XPMineAttentionProtocol.h @@ -0,0 +1,19 @@ +// +// YMMineAttentionProtocol.h +// YUMI +// +// Created by YUMI on 2021/12/21. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMineAttentionProtocol +///获取用户关注列表 +- (void)getUserAttentionListSuccess:(NSArray *)array state:(int)state; +///获取关注列表失败 +- (void)getUserAttentionListFail:(int)state; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/XPMineBlackListProtocol.h b/YuMi/Modules/YMMine/Protocol/XPMineBlackListProtocol.h new file mode 100644 index 00000000..9f708d8f --- /dev/null +++ b/YuMi/Modules/YMMine/Protocol/XPMineBlackListProtocol.h @@ -0,0 +1,18 @@ +// +// YMMineBlackListProtocol.h +// YUMI +// +// Created by YUMI on 2022/5/13. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMineBlackListProtocol + +- (void)getUserListInfoSuccess:(NSArray *)array; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/XPMineCollectRoomListProtocol.h b/YuMi/Modules/YMMine/Protocol/XPMineCollectRoomListProtocol.h new file mode 100644 index 00000000..bb740b96 --- /dev/null +++ b/YuMi/Modules/YMMine/Protocol/XPMineCollectRoomListProtocol.h @@ -0,0 +1,21 @@ +// +// YMMineCollectRoomListProtocol.h +// YUMI +// +// Created by YUMI on 2022/7/27. +// + +#import + +@protocol XPMineCollectRoomListProtocol + +///获取收藏房间列表成功 +- (void)onGetCollectRoomListSuccess:(NSArray *)array state:(int)state; + +///获取收藏房间列表失败 +- (void)getCollectRoomListFail:(int)state; + +///批量删除收藏的房间成功 +- (void)deleteCollectRoomSuccess; + +@end diff --git a/YuMi/Modules/YMMine/Protocol/XPMineFansProtocol.h b/YuMi/Modules/YMMine/Protocol/XPMineFansProtocol.h new file mode 100644 index 00000000..d9d37d54 --- /dev/null +++ b/YuMi/Modules/YMMine/Protocol/XPMineFansProtocol.h @@ -0,0 +1,22 @@ +// +// YMMineFansProtocol.h +// YUMI +// +// Created by YUMI on 2021/12/21. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMineFansProtocol + +///获取用户粉丝列表 +- (void)getUserFansListSuccess:(NSArray *)array state:(int)state; +///获取粉丝列表失败 +- (void)getUserFansListFail:(int)state; +///关注粉丝成功 +- (void)attentionFansSuccess; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/XPMineFeedbackProtocol.h b/YuMi/Modules/YMMine/Protocol/XPMineFeedbackProtocol.h new file mode 100644 index 00000000..a242dbaf --- /dev/null +++ b/YuMi/Modules/YMMine/Protocol/XPMineFeedbackProtocol.h @@ -0,0 +1,19 @@ +// +// YMMineFeedbackProtocol.h +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMineFeedbackProtocol + +///保存反馈成功 +- (void)saveFeedbackSuccess; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/XPMineFootPrintProtocol.h b/YuMi/Modules/YMMine/Protocol/XPMineFootPrintProtocol.h new file mode 100644 index 00000000..e3cb3367 --- /dev/null +++ b/YuMi/Modules/YMMine/Protocol/XPMineFootPrintProtocol.h @@ -0,0 +1,28 @@ +// +// YMMineFootPrintProtocol.h +// YUMI +// +// Created by YUMI on 2022/7/26. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMineFootPrintProtocol + +///获取进房记录列表成功 +- (void)getFootPrintListSuccess:(NSArray *)array state:(int)state; + +///获取进房记录列表失败 +- (void)getFootPrintListFail:(int)state; + +///清除进房记录成功 +- (void)cleanFootPrintSuccess; + +///收藏房间成功 +- (void)collectRoomSuccess; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/XPMineFriendProtocol.h b/YuMi/Modules/YMMine/Protocol/XPMineFriendProtocol.h new file mode 100644 index 00000000..29b4824d --- /dev/null +++ b/YuMi/Modules/YMMine/Protocol/XPMineFriendProtocol.h @@ -0,0 +1,16 @@ +// +// YMMineFriendProtocol.h +// YUMI +// +// Created by YUMI on 2022/5/29. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMineFriendProtocol +- (void)getUserListInfoSuccess:(NSArray *)list; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/XPMineLoginPasswordProtocol.h b/YuMi/Modules/YMMine/Protocol/XPMineLoginPasswordProtocol.h new file mode 100644 index 00000000..0ebf3e78 --- /dev/null +++ b/YuMi/Modules/YMMine/Protocol/XPMineLoginPasswordProtocol.h @@ -0,0 +1,19 @@ +// +// YMMineLoginPasswordProtocol.h +// YUMI +// +// Created by YUMI on 2022/4/25. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMineLoginPasswordProtocol + +- (void)modifyLoginPasswordSuccess; +- (void)setLoginPasswordSuccess; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/XPMineModifPayProtocol.h b/YuMi/Modules/YMMine/Protocol/XPMineModifPayProtocol.h new file mode 100644 index 00000000..93612aa5 --- /dev/null +++ b/YuMi/Modules/YMMine/Protocol/XPMineModifPayProtocol.h @@ -0,0 +1,19 @@ +// +// YMMineModifPayProtocol.h +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMineModifPayProtocol + +///修改支付密码成功 +- (void)modifPayPasswordSuccess; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/XPMineNotificaProtocol.h b/YuMi/Modules/YMMine/Protocol/XPMineNotificaProtocol.h new file mode 100644 index 00000000..51f00815 --- /dev/null +++ b/YuMi/Modules/YMMine/Protocol/XPMineNotificaProtocol.h @@ -0,0 +1,17 @@ +// +// YMMineNotificaProtocol.h +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPMineNotifyStatus, XPMineNotificationItemModel; +@protocol XPMineNotificaProtocol +///获取当前开关的状态成功 +- (void)requestUserInfoNotifyStatusSuccess:(NSArray *)array; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/XPMinePayPwdProtocol.h b/YuMi/Modules/YMMine/Protocol/XPMinePayPwdProtocol.h new file mode 100644 index 00000000..5d783523 --- /dev/null +++ b/YuMi/Modules/YMMine/Protocol/XPMinePayPwdProtocol.h @@ -0,0 +1,19 @@ +// +// YMMInePayPwdProtocol.h +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMinePayPwdProtocol +///请求手机号的验证码成功 +- (void)phoneSmsCodeSuccess; +///设置支付密码成功 +- (void)setPayPasswordSuccess; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/XPMineProtocol.h b/YuMi/Modules/YMMine/Protocol/XPMineProtocol.h new file mode 100644 index 00000000..92ddc01b --- /dev/null +++ b/YuMi/Modules/YMMine/Protocol/XPMineProtocol.h @@ -0,0 +1,39 @@ +// +// YMMineProtocol.h +// YUMI +// +// Created by YUMI on 2021/9/16. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPMineItemModel, UserInfoModel, NobleCenterModel, ClanDetailInfoModel, XPMineFuntionItemModel, HomeBannerInfoModel, WalletInfoModel; +@protocol XPMineProtocol + +///获取用户信息成功 +- (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo; +///获取账户余额 +- (void)getUserWalletInfo:(WalletInfoModel *)balanceInfo WithGroup:(dispatch_group_t) group; +///获取账户余额失败 +- (void)getUserWalletInfoFailWithGroup:(dispatch_group_t) group; +///获取贵族信息成功 +- (void)getNobleCenterInfoSuccess:(NobleCenterModel *)model WithGroup:(dispatch_group_t) group; +///获取贵族信息失败 +- (void)getNobleCenterInfoFailWithGroup:(dispatch_group_t) group; +///获取家族信息成功 +- (void)onGetClanDetailInfoSuccess:(ClanDetailInfoModel *)clanInfo WithGroup:(dispatch_group_t) group; +///获取家族信息失败 +- (void)onGetClanDetailInfofailWithGroup:(dispatch_group_t)group; +///获取个人中心功能 +- (void)onGetMineFuntionItemSuccess:(NSArray *)items WithGroup:(dispatch_group_t) group; +///获取个人中心功能失败 +- (void)onGetMineFuntionItemFailWithGroup:(dispatch_group_t) group; +///获取个人中心banner +- (void)onGetPersonalBannerListSuccess:(NSArray *)items WithGroup:(dispatch_group_t) group; +///获取个人中心banner失败 +- (void)onGetPersonalBannerListFailWithGroup:(dispatch_group_t) group; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/XPMineRechargeProtocol.h b/YuMi/Modules/YMMine/Protocol/XPMineRechargeProtocol.h new file mode 100644 index 00000000..7473c8d0 --- /dev/null +++ b/YuMi/Modules/YMMine/Protocol/XPMineRechargeProtocol.h @@ -0,0 +1,27 @@ +// +// YMMineRechargeProtocol.h +// YUMI +// +// Created by YUMI on 2021/9/24. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class WalletInfoModel; +@protocol XPMineRechargeProtocol +///请求钱包余额信息 +- (void)getUserWalletInfo:(WalletInfoModel *)balanceInfo; +///请求充值列表成功 +- (void)requestRechargeListSucccess:(NSArray *)list; +///请求充值id的状态成功 +- (void)requestIAPRechargeOrderSuccess:(NSString *)orderId chargeProdId:(NSString *)chargeProdId; +///请求充值账单失败 +- (void)requestIAPRechargeOrderFail; +///二次校验成功 +- (void)checkReceiptSuccess:(NSString *)transcationId; +///批量验证凭据成功 +- (void)checkTranscationIdsSuccess; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/XPMineResetLoginPwdProtocol.h b/YuMi/Modules/YMMine/Protocol/XPMineResetLoginPwdProtocol.h new file mode 100644 index 00000000..cd404e5e --- /dev/null +++ b/YuMi/Modules/YMMine/Protocol/XPMineResetLoginPwdProtocol.h @@ -0,0 +1,22 @@ +// +// YMMineResetLoginPwdProtocol.h +// YUMI +// +// Created by YUMI on 2022/5/5. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMineResetLoginPwdProtocol + +- (void)resetLoginPasswordSuccess; + +- (void)phoneSmsCodeSuccess; + +- (void)logoutCurrentAccountSuccess; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/XPMineResetPayPasswordProtocol.h b/YuMi/Modules/YMMine/Protocol/XPMineResetPayPasswordProtocol.h new file mode 100644 index 00000000..ba5b1330 --- /dev/null +++ b/YuMi/Modules/YMMine/Protocol/XPMineResetPayPasswordProtocol.h @@ -0,0 +1,18 @@ +// +// YMMineResetPayPasswordProtocol.h +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMineResetPayPasswordProtocol +///重置支付密码 +- (void)resetPayPasswordSuccess; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/XPMineSettingProtocol.h b/YuMi/Modules/YMMine/Protocol/XPMineSettingProtocol.h new file mode 100644 index 00000000..495bdd2e --- /dev/null +++ b/YuMi/Modules/YMMine/Protocol/XPMineSettingProtocol.h @@ -0,0 +1,28 @@ +// +// YMMineSettingProtocol.h +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import +NS_ASSUME_NONNULL_BEGIN + +@class XPVersionUpdateModel; +@protocol XPMineSettingProtocol + +/// 获取数据成功 +- (void)getMineSettingDatasourceSuccess:(NSArray *)array; +///获取用户信息成功 +- (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo; +///退出当前账号成功 +- (void)logoutCurrentAccountSuccess; + +///版本更新接口失败 +- (void)getVersionUpdateFail; +///版本更新 +-(void)getVersionUpdate:(XPVersionUpdateModel *)model; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/XPMineUserDataProtocol.h b/YuMi/Modules/YMMine/Protocol/XPMineUserDataProtocol.h new file mode 100644 index 00000000..46278fc4 --- /dev/null +++ b/YuMi/Modules/YMMine/Protocol/XPMineUserDataProtocol.h @@ -0,0 +1,19 @@ +// +// YMMineUserDataProtolcol.h +// YUMI +// +// Created by YUMI on 2022/4/14. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class ClanDetailInfoModel; +@protocol XPMineUserDataProtocol +///获取家族详情成功 +- (void)getClanDetailInfoSuccess:(ClanDetailInfoModel *)clanDetailInfo currentUserClanInfo:(ClanDetailInfoModel *)currentUserClanInfo; +///申请加入公会成功 +- (void)memberApplyHallSuccess; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/XPMineUserInfoAlbumProtocol.h b/YuMi/Modules/YMMine/Protocol/XPMineUserInfoAlbumProtocol.h new file mode 100644 index 00000000..e8365e8b --- /dev/null +++ b/YuMi/Modules/YMMine/Protocol/XPMineUserInfoAlbumProtocol.h @@ -0,0 +1,23 @@ +// +// YMMineUserInfoAlbumProtocol.h +// YUMI +// +// Created by YUMI on 2021/9/24. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class UserInfoModel; +@protocol XPMineUserInfoAlbumProtocol +///获取用户信息成功 +- (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo; +///上传用户的头像成功 +- (void)uploadUserAlbumSuccess; +///上传图片 到第三方成功 +- (void)uploadAlbumImageToThirdSuccess:(NSString *)url; +///删除用户的头像成功 +- (void)deleteUserAlbumSuccess; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/XPMineUserInfoEditProtocol.h b/YuMi/Modules/YMMine/Protocol/XPMineUserInfoEditProtocol.h new file mode 100644 index 00000000..d2db4dba --- /dev/null +++ b/YuMi/Modules/YMMine/Protocol/XPMineUserInfoEditProtocol.h @@ -0,0 +1,23 @@ +// +// YMMineUserInfoEditProtocol.h +// YUMI +// +// Created by YUMI on 2021/9/23. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class UserInfoModel; +@protocol XPMineUserInfoEditProtocol +///获取编辑个人资料页面的数据 +- (void)getUserInfoEditDataSourceSuccess:(NSArray *)array; +///补全资料 +- (void)completeUserInfoSuccess:(UserInfoModel *)userInfo; +///获取用户信息成功 +- (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo; +/// 上传头像成功 +- (void)uploadImageSuccess:(NSString *)url; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/XPMineUserInfoGiftWallProtocol.h b/YuMi/Modules/YMMine/Protocol/XPMineUserInfoGiftWallProtocol.h new file mode 100644 index 00000000..c7a66fe0 --- /dev/null +++ b/YuMi/Modules/YMMine/Protocol/XPMineUserInfoGiftWallProtocol.h @@ -0,0 +1,19 @@ +// +// YMMineUserInfoGiftWallProtocol.h +// YUMI +// +// Created by YUMI on 2022/4/15. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMineUserInfoGiftWallProtocol + +///获取礼物墙成功 +- (void)getUserGiftWallSuccess:(NSArray *)giftList; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/XPMineUserInfoProtocol.h b/YuMi/Modules/YMMine/Protocol/XPMineUserInfoProtocol.h new file mode 100644 index 00000000..04093593 --- /dev/null +++ b/YuMi/Modules/YMMine/Protocol/XPMineUserInfoProtocol.h @@ -0,0 +1,23 @@ +// +// YMMineUserInfoProtocol.h +// YUMI +// +// Created by YUMI on 2021/9/23. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class UserInfoModel; +@protocol XPMineUserInfoProtocol +///获取用户信息成功 +- (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo; +///获取用户详细信息成功 +- (void)ongetDetailInfoSuccess:(UserInfoModel *)userInfo; +///关注/取消关注 +- (void)attentionUserSuccess:(BOOL)status; +///获取关注状态 +- (void)getAttentionStateSuccess:(BOOL)status; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/XPMineVerifIdentityProtocol.h b/YuMi/Modules/YMMine/Protocol/XPMineVerifIdentityProtocol.h new file mode 100644 index 00000000..9cb30d7c --- /dev/null +++ b/YuMi/Modules/YMMine/Protocol/XPMineVerifIdentityProtocol.h @@ -0,0 +1,19 @@ +// +// YMMineVerifIdentityProtocol.h +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMineVerifIdentityProtocol +///请求手机号的验证码成功 +- (void)phoneSmsCodeSuccess; +///验证绑定手机成功 +- (void)checkMoblieCodeWithMoblieSuccess; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Protocol/XPMineVisitorProtocol.h b/YuMi/Modules/YMMine/Protocol/XPMineVisitorProtocol.h new file mode 100644 index 00000000..033d4951 --- /dev/null +++ b/YuMi/Modules/YMMine/Protocol/XPMineVisitorProtocol.h @@ -0,0 +1,22 @@ +// +// YMMineVisitorProtocol.h +// YUMI +// +// Created by YUMI on 2022/1/26. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMineVisitorProtocol + +///获取访客列表成功 +- (void)onGetVisitorListSuccess:(NSArray *)array state:(int)state; + +///获取访客列表失败 +- (void)getVisitorListFail:(int)state; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/AnchorFansTeam/XPMineAnchorFansTeamTableViewCell.h b/YuMi/Modules/YMMine/View/Cell/AnchorFansTeam/XPMineAnchorFansTeamTableViewCell.h new file mode 100644 index 00000000..d5296e38 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/AnchorFansTeam/XPMineAnchorFansTeamTableViewCell.h @@ -0,0 +1,19 @@ +// +// YMMineAnchorFansTeamTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/4/8. +// + +#import +#import "XPMineAnchorFansTeamModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineAnchorFansTeamTableViewCell : UITableViewCell + +@property (nonatomic, strong) XPMineAnchorFansTeamModel *item; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/AnchorFansTeam/XPMineAnchorFansTeamTableViewCell.m b/YuMi/Modules/YMMine/View/Cell/AnchorFansTeam/XPMineAnchorFansTeamTableViewCell.m new file mode 100644 index 00000000..ef8c48ae --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/AnchorFansTeam/XPMineAnchorFansTeamTableViewCell.m @@ -0,0 +1,103 @@ +// +// YMMineAnchorFansTeamTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/4/8. +// + +#import "XPMineAnchorFansTeamTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" + +@interface XPMineAnchorFansTeamTableViewCell() + +///头像 +@property (nonatomic ,strong) NetImageView *avaterImgView; +///昵称 +@property (nonatomic, strong) UILabel *nickLabel; +///铭牌 +@property (nonatomic ,strong) NetImageView *iconImageView; + +@end + +@implementation XPMineAnchorFansTeamTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self setUpUI]; + [self setUpConstraints]; + } + return self; +} + +#pragma mark - lifeCycle +- (void)setUpUI { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.avaterImgView]; + [self.contentView addSubview:self.nickLabel]; + [self.contentView addSubview:self.iconImageView]; +} + +#pragma mark - Constraints +- (void)setUpConstraints { + [self.avaterImgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(15); + make.width.height.mas_equalTo(40); + make.centerY.mas_equalTo(self.contentView.mas_centerY); + }]; + + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avaterImgView.mas_right).mas_offset(10); + make.centerY.mas_equalTo(self.contentView.mas_centerY); + make.right.mas_equalTo(self.iconImageView.mas_left); + }]; + [self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.nickLabel.mas_centerY); + make.width.mas_equalTo(95); + make.height.mas_equalTo(27); + make.right.mas_equalTo(-15); + }]; +} + +- (void)setItem:(XPMineAnchorFansTeamModel *)item { + _item = item; + self.nickLabel.text = item.anchorNick; + self.avaterImgView.imageUrl = item.anchorAvatar; + self.iconImageView.imageUrl = item.icon; +} + +- (NetImageView *)avaterImgView { + if (!_avaterImgView) { + _avaterImgView = [[NetImageView alloc] init]; + _avaterImgView.contentMode = UIViewContentModeScaleAspectFit; + _avaterImgView.layer.cornerRadius = 20; + _avaterImgView.layer.masksToBounds = YES; + } + return _avaterImgView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.textColor = UIColorFromRGB(0x333333); + _nickLabel.font = [UIFont systemFontOfSize:13]; + _nickLabel.text = YMLocalizedString(@"XPMineAnchorFansTeamTableViewCell0"); + } + return _nickLabel; +} + +- (NetImageView *)iconImageView { + if (!_iconImageView) { + _iconImageView = [[NetImageView alloc] init]; + _iconImageView.contentMode = UIViewContentModeScaleAspectFit; + _iconImageView.layer.cornerRadius = 20; + _iconImageView.layer.masksToBounds = YES; + } + return _iconImageView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Cell/AnchorFansTeam/YUMIManeKellegFanaticsSquadTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Cell/AnchorFansTeam/YUMIManeKellegFanaticsSquadTabulationRegardElement.h deleted file mode 100644 index b81db640..00000000 --- a/YuMi/Modules/YMMine/View/Cell/AnchorFansTeam/YUMIManeKellegFanaticsSquadTabulationRegardElement.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMMineAnchorFansTeamTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/4/8. -// - -#import -#import "YUMIManeKellegFanaticsSquadMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeKellegFanaticsSquadTabulationRegardElement : UITableViewCell - -@property (nonatomic, strong) YUMIManeKellegFanaticsSquadMatrix *item; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/AnchorFansTeam/YUMIManeKellegFanaticsSquadTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Cell/AnchorFansTeam/YUMIManeKellegFanaticsSquadTabulationRegardElement.m deleted file mode 100644 index 5d638574..00000000 --- a/YuMi/Modules/YMMine/View/Cell/AnchorFansTeam/YUMIManeKellegFanaticsSquadTabulationRegardElement.m +++ /dev/null @@ -1,98 +0,0 @@ -// -// YMMineAnchorFansTeamTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/4/8. -// - -#import "YUMIManeKellegFanaticsSquadTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" - -@interface YUMIManeKellegFanaticsSquadTabulationRegardElement() - -@property (nonatomic ,strong) NetIndicateRegard *avaterIndiRegard; -@property (nonatomic, strong) UILabel *monicerSequencignation; -@property (nonatomic ,strong) NetIndicateRegard *figureIndicateRegard; - -@end - -@implementation YUMIManeKellegFanaticsSquadTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self setUpwardsUI]; - [self setUpwardsRestrictions]; - } - return self; -} - -#pragma mark - lifeCycle -- (void)setUpwardsUI { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.avaterIndiRegard]; - [self.contentView addSubview:self.monicerSequencignation]; - [self.contentView addSubview:self.figureIndicateRegard]; -} - -#pragma mark - Constraints -- (void)setUpwardsRestrictions { - [self.avaterIndiRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(15); - make.width.height.mas_equalTo(40); - make.centerY.mas_equalTo(self.contentView.mas_centerY); - }]; - - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.avaterIndiRegard.mas_right).mas_offset(10); - make.centerY.mas_equalTo(self.contentView.mas_centerY); - make.right.mas_equalTo(self.figureIndicateRegard.mas_left); - }]; - [self.figureIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.monicerSequencignation.mas_centerY); - make.width.mas_equalTo(95); - make.height.mas_equalTo(27); - make.right.mas_equalTo(-15); - }]; -} - -- (void)setItem:(YUMIManeKellegFanaticsSquadMatrix *)item { - _item = item; - self.monicerSequencignation.text = item.anchorNick; - self.avaterIndiRegard.imageUrl = item.anchorAvatar; - self.figureIndicateRegard.imageUrl = item.icon; -} - -- (NetIndicateRegard *)avaterIndiRegard { - if (!_avaterIndiRegard) { - _avaterIndiRegard = [[NetIndicateRegard alloc] init]; - _avaterIndiRegard.contentMode = UIViewContentModeScaleAspectFit; - _avaterIndiRegard.layer.cornerRadius = 20; - _avaterIndiRegard.layer.masksToBounds = YES; - } - return _avaterIndiRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.textColor = UIColorFromRGB(0x333333); - _monicerSequencignation.font = [UIFont systemFontOfSize:13]; - _monicerSequencignation.text = YMLocalizedString(@"YUMI_Mine_Anchor_Fans_Team_Table_View_Cell_0"); - } - return _monicerSequencignation; -} - -- (NetIndicateRegard *)figureIndicateRegard { - if (!_figureIndicateRegard) { - _figureIndicateRegard = [[NetIndicateRegard alloc] init]; - _figureIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - _figureIndicateRegard.layer.cornerRadius = 20; - _figureIndicateRegard.layer.masksToBounds = YES; - } - return _figureIndicateRegard; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Cell/FootPrint/XPMineFootPrintTableViewCell.h b/YuMi/Modules/YMMine/View/Cell/FootPrint/XPMineFootPrintTableViewCell.h new file mode 100644 index 00000000..e5db34a6 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/FootPrint/XPMineFootPrintTableViewCell.h @@ -0,0 +1,19 @@ +// +// YMMineFootPrintTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/7/26. +// + +#import +#import "XPMineFootPrintModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineFootPrintTableViewCell : UITableViewCell + +@property (nonatomic, strong) XPMineFootPrintModel *item; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/FootPrint/XPMineFootPrintTableViewCell.m b/YuMi/Modules/YMMine/View/Cell/FootPrint/XPMineFootPrintTableViewCell.m new file mode 100644 index 00000000..27ea0989 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/FootPrint/XPMineFootPrintTableViewCell.m @@ -0,0 +1,136 @@ +// +// YMMineFootPrintTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/7/26. +// + +#import "XPMineFootPrintTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" + +@interface XPMineFootPrintTableViewCell() + +@property (nonatomic ,strong) NetImageView *avaterImgView; +@property (nonatomic, strong) UILabel *nickLabel; +@property (nonatomic ,strong) UILabel *memberIdLabel; +@property (nonatomic ,strong) UILabel *timeLabel; +@property (nonatomic, strong) UIView *lineView; + +@end + + +@implementation XPMineFootPrintTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self setUpUI]; + [self setUpConstraints]; + } + return self; +} + +#pragma mark - lifeCycle +- (void)setUpUI { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.avaterImgView]; + [self.contentView addSubview:self.nickLabel]; + [self.contentView addSubview:self.memberIdLabel]; + [self.contentView addSubview:self.timeLabel]; + [self.contentView addSubview:self.lineView]; +} + +#pragma mark - Constraints +- (void)setUpConstraints { + [self.avaterImgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(15); + make.width.height.mas_equalTo(40); + make.centerY.mas_equalTo(self.contentView.mas_centerY); + }]; + + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avaterImgView.mas_right).mas_offset(8); + make.bottom.mas_equalTo(self.avaterImgView.mas_centerY).mas_offset(-4); + make.height.mas_equalTo(14); + }]; + + [self.memberIdLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.avaterImgView.mas_centerY).mas_offset(4); + make.left.mas_equalTo(self.nickLabel); + make.height.mas_equalTo(14); + }]; + + [self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-15); + make.centerY.mas_equalTo(self.nickLabel.mas_centerY); + make.height.mas_equalTo(14); + }]; + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(0); + make.left.mas_equalTo(self.avaterImgView); + make.right.mas_equalTo(-15); + make.height.mas_equalTo(0.5); + }]; +} + +- (void)setItem:(XPMineFootPrintModel *)item { + _item = item; + self.nickLabel.text = item.title; + self.avaterImgView.imageUrl = item.avatar; + self.memberIdLabel.text = [NSString stringWithFormat:@"ID:%lld", item.erbanNo]; + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; + [dateFormatter setDateFormat:@"yyyy-MM-dd"]; + NSDate *date = [NSDate dateWithTimeIntervalSince1970:item.updateTime/ 1000]; + self.timeLabel.text = [dateFormatter stringFromDate:date]; +} + +- (NetImageView *)avaterImgView { + if (!_avaterImgView) { + _avaterImgView = [[NetImageView alloc] init]; + _avaterImgView.contentMode = UIViewContentModeScaleAspectFit; + _avaterImgView.layer.cornerRadius = 4; + _avaterImgView.layer.masksToBounds = YES; + } + return _avaterImgView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _nickLabel.font = [UIFont systemFontOfSize:14]; + } + return _nickLabel; +} + +- (UILabel *)memberIdLabel { + if (!_memberIdLabel) { + _memberIdLabel = [[UILabel alloc] init]; + _memberIdLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _memberIdLabel.font = [UIFont systemFontOfSize:12]; + } + return _memberIdLabel; +} + +- (UILabel *)timeLabel { + if (!_timeLabel) { + _timeLabel = [[UILabel alloc] init]; + _timeLabel.textColor = [DJDKMIMOMColor textThirdColor]; + _timeLabel.font = [UIFont boldSystemFontOfSize:10]; + } + return _timeLabel; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = UIColorFromRGB(0xEAEAF1); + } + return _lineView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Cell/FootPrint/YUMIManeTerminalImpressionTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Cell/FootPrint/YUMIManeTerminalImpressionTabulationRegardElement.h deleted file mode 100644 index d6592d7c..00000000 --- a/YuMi/Modules/YMMine/View/Cell/FootPrint/YUMIManeTerminalImpressionTabulationRegardElement.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMMineFootPrintTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/7/26. -// - -#import -#import "YUMIManeTerminalImpressionMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeTerminalImpressionTabulationRegardElement : UITableViewCell - -@property (nonatomic, strong) YUMIManeTerminalImpressionMatrix *item; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/FootPrint/YUMIManeTerminalImpressionTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Cell/FootPrint/YUMIManeTerminalImpressionTabulationRegardElement.m deleted file mode 100644 index 1b298b92..00000000 --- a/YuMi/Modules/YMMine/View/Cell/FootPrint/YUMIManeTerminalImpressionTabulationRegardElement.m +++ /dev/null @@ -1,134 +0,0 @@ -// -// YMMineFootPrintTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/7/26. -// - -#import "YUMIManeTerminalImpressionTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" - -@interface YUMIManeTerminalImpressionTabulationRegardElement() - -@property (nonatomic ,strong) NetIndicateRegard *avaterIndiRegard; -@property (nonatomic, strong) UILabel *monicerSequencignation; -@property (nonatomic ,strong) UILabel *componentIdSequencignation; -@property (nonatomic ,strong) UILabel *intratemporalSequencignation; -@property (nonatomic, strong) UIView *burlywoodRegard; - -@end - - -@implementation YUMIManeTerminalImpressionTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self setUpwardsUI]; - [self setUpwardsRestrictions]; - } - return self; -} - -#pragma mark - lifeCycle -- (void)setUpwardsUI { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.avaterIndiRegard]; - [self.contentView addSubview:self.monicerSequencignation]; - [self.contentView addSubview:self.componentIdSequencignation]; - [self.contentView addSubview:self.intratemporalSequencignation]; - [self.contentView addSubview:self.burlywoodRegard]; -} - -#pragma mark - Constraints -- (void)setUpwardsRestrictions { - [self.avaterIndiRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(15); - make.width.height.mas_equalTo(40); - make.centerY.mas_equalTo(self.contentView.mas_centerY); - }]; - - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.avaterIndiRegard.mas_right).mas_offset(8); - make.bottom.mas_equalTo(self.avaterIndiRegard.mas_centerY).mas_offset(-4); - make.height.mas_equalTo(14); - }]; - - [self.componentIdSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.avaterIndiRegard.mas_centerY).mas_offset(4); - make.left.mas_equalTo(self.monicerSequencignation); - make.height.mas_equalTo(14); - }]; - - [self.intratemporalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-15); - make.centerY.mas_equalTo(self.monicerSequencignation.mas_centerY); - make.height.mas_equalTo(14); - }]; - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(0); - make.left.mas_equalTo(self.avaterIndiRegard); - make.right.mas_equalTo(-15); - make.height.mas_equalTo(0.5); - }]; -} - -- (void)setItem:(YUMIManeTerminalImpressionMatrix *)item { - _item = item; - self.monicerSequencignation.text = item.title; - self.avaterIndiRegard.imageUrl = item.avatar; - self.componentIdSequencignation.text = [NSString stringWithFormat:@"ID:%lld", item.erbanNo]; - NSDateFormatter *engagementInitialiser = [[NSDateFormatter alloc] init]; - [engagementInitialiser setDateFormat:@"yyyy-MM-dd"]; - NSDate *date = [NSDate dateWithTimeIntervalSince1970:item.updateTime/ 1000]; - self.intratemporalSequencignation.text = [engagementInitialiser stringFromDate:date]; -} - -- (NetIndicateRegard *)avaterIndiRegard { - if (!_avaterIndiRegard) { - _avaterIndiRegard = [[NetIndicateRegard alloc] init]; - _avaterIndiRegard.contentMode = UIViewContentModeScaleAspectFit; - _avaterIndiRegard.layer.cornerRadius = 4; - _avaterIndiRegard.layer.masksToBounds = YES; - } - return _avaterIndiRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _monicerSequencignation.font = [UIFont systemFontOfSize:14]; - } - return _monicerSequencignation; -} - -- (UILabel *)componentIdSequencignation { - if (!_componentIdSequencignation) { - _componentIdSequencignation = [[UILabel alloc] init]; - _componentIdSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _componentIdSequencignation.font = [UIFont systemFontOfSize:12]; - } - return _componentIdSequencignation; -} - -- (UILabel *)intratemporalSequencignation { - if (!_intratemporalSequencignation) { - _intratemporalSequencignation = [[UILabel alloc] init]; - _intratemporalSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - _intratemporalSequencignation.font = [UIFont boldSystemFontOfSize:10]; - } - return _intratemporalSequencignation; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = UIColorFromRGB(0xEAEAF1); - } - return _burlywoodRegard; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Cell/Friend/XPMineAttentionTableViewCell.h b/YuMi/Modules/YMMine/View/Cell/Friend/XPMineAttentionTableViewCell.h new file mode 100644 index 00000000..a50bb627 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/Friend/XPMineAttentionTableViewCell.h @@ -0,0 +1,27 @@ +// +// YMMineAttentionTableViewCell.h +// YUMI +// +// Created by YUMI on 2021/12/21. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class FansInfoModel, XPMineAttentionTableViewCell; +@protocol XPMineAttentionTableViewCellDelegate + +///跟随进房 +- (void)xPMineAttentionTableViewCell:(XPMineAttentionTableViewCell *)view findUser:(NSString *)uid; + +@end + +@interface XPMineAttentionTableViewCell : UITableViewCell + +///粉丝信息 +@property (nonatomic,strong) FansInfoModel *fansInfo; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/Friend/XPMineAttentionTableViewCell.m b/YuMi/Modules/YMMine/View/Cell/Friend/XPMineAttentionTableViewCell.m new file mode 100644 index 00000000..a00c8143 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/Friend/XPMineAttentionTableViewCell.m @@ -0,0 +1,310 @@ +// +// YMMineAttentionTableViewCell.m +// YUMI +// +// Created by YUMI on 2021/12/21. +// + +#import "XPMineAttentionTableViewCell.h" +///Third +#import +///Tool +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +///Model +#import "FansInfoModel.h" + +@interface XPMineAttentionTableViewCell () +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///性别 +@property (nonatomic,strong) UIImageView *sexImageView; +///等级 +@property (nonatomic,strong) NetImageView *experImageView; +///魅力等级 +@property (nonatomic,strong) NetImageView *charmImageView; +///贵族 +@property (nonatomic,strong) NetImageView *nobleImageView; +///签名 +@property (nonatomic,strong) UILabel *signLabel; +///找到他 +@property (nonatomic,strong) UIButton *findButton; +///分割线 +@property (nonatomic,strong) UIView *lineView; +@end + + +@implementation XPMineAttentionTableViewCell +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.stackView]; + [self.contentView addSubview:self.signLabel]; + [self.contentView addSubview:self.findButton]; + [self.contentView addSubview:self.lineView]; + + [self.stackView addArrangedSubview:self.nobleImageView]; + [self.stackView addArrangedSubview:self.nickLabel]; + [self.stackView addArrangedSubview:self.sexImageView]; + [self.stackView addArrangedSubview:self.experImageView]; + [self.stackView addArrangedSubview:self.charmImageView]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(55, 55)); + make.centerY.mas_equalTo(self.contentView); + make.left.mas_equalTo(self.contentView).offset(15); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(10); + make.right.mas_lessThanOrEqualTo(self.findButton.mas_left).mas_offset(-4); + make.bottom.mas_equalTo(self.avatarImageView.mas_centerY).offset(-2); + }]; + + [self.signLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.stackView); + make.top.mas_equalTo(self.avatarImageView.mas_centerY).offset(2); + make.right.mas_equalTo(self.findButton.mas_left).mas_offset(-4); + }]; + + [self.findButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(65); + make.height.mas_equalTo(30); + make.centerY.mas_equalTo(self.contentView); + make.right.mas_equalTo(self.contentView).offset(-15); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.stackView); + make.bottom.mas_equalTo(self.contentView); + make.height.mas_equalTo(1); + make.right.mas_equalTo(self.contentView).offset(-15); + }]; +} + +#pragma mark - Event Response +- (void)findButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineAttentionTableViewCell:findUser:)]) { + [self.delegate xPMineAttentionTableViewCell:self findUser:self.fansInfo.userInRoomUid]; + } +} + +#pragma mark - Getters And Setters +- (void)setFansInfo:(FansInfoModel *)fansInfo { + _fansInfo = fansInfo; + if (_fansInfo) { + self.avatarImageView.imageUrl = _fansInfo.avatar; + self.nickLabel.text = _fansInfo.nick; + self.signLabel.text = _fansInfo.userDesc && _fansInfo.userDesc.length > 0? _fansInfo.userDesc : YMLocalizedString(@"XPMineAttentionTableViewCell0"); + if (_fansInfo.useingType != ContactUseingType_In_Room && _fansInfo.useingType != ContactUseingType_Share) { + self.experImageView.hidden = NO; + self.charmImageView.hidden = NO; + self.nobleImageView.hidden = NO; + self.sexImageView.hidden = NO; + self.experImageView.imageUrl = _fansInfo.experUrl; + self.charmImageView.imageUrl = _fansInfo.charmUrl; + self.nobleImageView.imageUrl = _fansInfo.userVipInfoVO.vipIcon; + NSString *sexStr; + if (_fansInfo.gender == GenderType_Male) { + sexStr = @"common_male"; + } else { + sexStr = @"common_female"; + } + self.sexImageView.image = [UIImage imageNamed:sexStr]; + + self.findButton.hidden = _fansInfo.userInRoomUid.length <= 0; + UIImage* image = self.experImageView.image; + if (image) { + CGFloat scale = image.size.width / image.size.height; + [self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20* scale, 20)); + }]; + } else { + NSURL *imgUrl = [NSURL URLWithString:_fansInfo.experUrl]; + UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; + CGFloat scale = myImage.size.width / myImage.size.height; + [self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20* scale, 20)); + }]; + } + + UIImage* charmImage = self.charmImageView.image; + if (charmImage) { + CGFloat scale = charmImage.size.width / charmImage.size.height; + [self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20* scale, 20)); + }]; + } else { + NSURL *imgUrl = [NSURL URLWithString:_fansInfo.charmUrl]; + UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; + CGFloat scale = myImage.size.width / myImage.size.height; + [self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20* scale, 20)); + }]; + } + + UIImage *nobleImage = self.nobleImageView.image; + if (nobleImage) { + CGFloat scale = nobleImage.size.width / nobleImage.size.height; + [self.nobleImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20* scale, 20)); + }]; + } else { + [self.nobleImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(0, 20)); + }]; + } + if (fansInfo.userVipInfoVO && fansInfo.userVipInfoVO.friendNickColour) { + self.nickLabel.textColor = [self colorWithHexString:fansInfo.userVipInfoVO.friendNickColour]; + } else { + self.nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + } else { + self.experImageView.hidden = YES; + self.charmImageView.hidden = YES; + self.nobleImageView.hidden = YES; + self.sexImageView.hidden = YES; + self.findButton.hidden = YES; + self.nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + } +} + +- (UIColor *)colorWithHexString: (NSString *) hexString { + NSString *colorString = [[hexString stringByReplacingOccurrencesOfString: @"#" withString: @""] uppercaseString]; + CGFloat alpha, red, blue, green; + alpha = 1.0f; + red = [self colorComponentFrom: colorString start: 0 length: 2]; + green = [self colorComponentFrom: colorString start: 2 length: 2]; + blue = [self colorComponentFrom: colorString start: 4 length: 2]; + return [UIColor colorWithRed: red green: green blue: blue alpha: alpha]; +} + +- (CGFloat) colorComponentFrom: (NSString *) string start: (NSUInteger) start length: (NSUInteger) length { + NSString *substring = [string substringWithRange: NSMakeRange(start, length)]; + NSString *fullHex = length == 2 ? substring : [NSString stringWithFormat: @"%@%@", substring, substring]; + unsigned hexComponent; + [[NSScanner scannerWithString: fullHex] scanHexInt: &hexComponent]; + return hexComponent / 255.0; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 55/2; + } + return _avatarImageView; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentCenter; + _stackView.spacing = 2; + } + return _stackView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:15]; + _nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _nickLabel; +} + +- (UIImageView *)sexImageView { + if (!_sexImageView) { + _sexImageView = [[UIImageView alloc] init]; + _sexImageView.userInteractionEnabled = YES; + } + return _sexImageView; +} + +- (NetImageView *)experImageView { + if (!_experImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _experImageView = [[NetImageView alloc] initWithConfig:config]; + _experImageView.layer.maskedCorners = YES; + _experImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _experImageView; +} + +- (NetImageView *)charmImageView { + if (!_charmImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _charmImageView = [[NetImageView alloc] initWithConfig:config]; + _charmImageView.layer.maskedCorners = YES; + _charmImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _charmImageView; +} + +- (NetImageView *)nobleImageView { + if (!_nobleImageView) { + _nobleImageView = [[NetImageView alloc] init]; + } + return _nobleImageView; +} + +- (UILabel *)signLabel{ + if (!_signLabel) { + _signLabel = [[UILabel alloc] init]; + _signLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _signLabel.font = [UIFont systemFontOfSize:12]; + } + return _signLabel; +} + +- (UIButton *)findButton { + if (!_findButton) { + _findButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_findButton setTitle:@"找到Ta" forState:UIControlStateNormal]; + [_findButton setTitleColor:[DJDKMIMOMColor appEmphasizeColor] forState:UIControlStateNormal]; + _findButton.titleLabel.font = [UIFont systemFontOfSize:12]; + _findButton.layer.masksToBounds = YES; + _findButton.layer.cornerRadius = 15; + _findButton.layer.borderColor = [DJDKMIMOMColor appEmphasizeColor].CGColor; + _findButton.layer.borderWidth = 1; + _findButton.hidden = YES; + [_findButton addTarget:self action:@selector(findButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _findButton; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _lineView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Cell/Friend/XPMineFansTableViewCell.h b/YuMi/Modules/YMMine/View/Cell/Friend/XPMineFansTableViewCell.h new file mode 100644 index 00000000..7b45aac4 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/Friend/XPMineFansTableViewCell.h @@ -0,0 +1,25 @@ +// +// YMMineFansTableViewCell.h +// YUMI +// +// Created by YUMI on 2021/12/21. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class FansInfoModel, XPMineFansTableViewCell; +@protocol XPMineFansTableViewCellDelegate +///关注 +- (void)xPMineFansTableViewCell:(XPMineFansTableViewCell *)view didClickAttention:(NSString *)uid; + +@end +@interface XPMineFansTableViewCell : UITableViewCell +///粉丝信息 +@property (nonatomic,strong) FansInfoModel *fansInfo; +///代理 +@property (nonatomic,weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/Friend/XPMineFansTableViewCell.m b/YuMi/Modules/YMMine/View/Cell/Friend/XPMineFansTableViewCell.m new file mode 100644 index 00000000..1e15f3e4 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/Friend/XPMineFansTableViewCell.m @@ -0,0 +1,314 @@ +// +// YMMineFansTableViewCell.m +// YUMI +// +// Created by YUMI on 2021/12/21. +// + +#import "XPMineFansTableViewCell.h" +///Third +#import +#import +///Tool +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +///Model +#import "FansInfoModel.h" + +@interface XPMineFansTableViewCell () +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///性别 +@property (nonatomic,strong) UIImageView *sexImageView; +///等级 +@property (nonatomic,strong) NetImageView *experImageView; +///魅力等级 +@property (nonatomic,strong) NetImageView *charmImageView; +///贵族 +@property (nonatomic,strong) NetImageView *nobleImageView; +///签名 +@property (nonatomic,strong) UILabel *signLabel; +///关注 +@property (nonatomic,strong) UIButton *attentionButton; +///分割线 +@property (nonatomic,strong) UIView * lineView; +@end + + +@implementation XPMineFansTableViewCell +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.stackView]; + [self.contentView addSubview:self.signLabel]; + [self.contentView addSubview:self.attentionButton]; + [self.contentView addSubview:self.lineView]; + + [self.stackView addArrangedSubview:self.nobleImageView]; + [self.stackView addArrangedSubview:self.nickLabel]; + [self.stackView addArrangedSubview:self.sexImageView]; + [self.stackView addArrangedSubview:self.experImageView]; + [self.stackView addArrangedSubview:self.charmImageView]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(55, 55)); + make.centerY.mas_equalTo(self.contentView); + make.left.mas_equalTo(self.contentView).offset(15); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(10); + make.bottom.mas_equalTo(self.avatarImageView.mas_centerY).offset(-2); + make.right.mas_lessThanOrEqualTo(self.attentionButton.mas_left).mas_offset(-4); + }]; + + [self.signLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.stackView); + make.top.mas_equalTo(self.avatarImageView.mas_centerY).offset(2); + make.right.mas_equalTo(self.attentionButton.mas_left).mas_offset(-4); + }]; + + [self.attentionButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(65); + make.height.mas_equalTo(30); + make.centerY.mas_equalTo(self.contentView); + make.right.mas_equalTo(self.contentView).offset(-15); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.stackView); + make.bottom.mas_equalTo(self.contentView); + make.height.mas_equalTo(1); + make.right.mas_equalTo(self.contentView).offset(-15); + }]; +} + +#pragma mark - Event Response +- (void)attentionButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineFansTableViewCell:didClickAttention:)]) { + [self.delegate xPMineFansTableViewCell:self didClickAttention:self.fansInfo.uid]; + } +} + +#pragma mark - Getters And Setters +- (void)setFansInfo:(FansInfoModel *)fansInfo { + _fansInfo = fansInfo; + if (_fansInfo) { + self.avatarImageView.imageUrl = _fansInfo.avatar; + + self.nickLabel.text = _fansInfo.nick; + self.signLabel.text = _fansInfo.userDesc && _fansInfo.userDesc.length > 0? _fansInfo.userDesc : YMLocalizedString(@"XPMineFansTableViewCell0"); + if (_fansInfo.useingType != ContactUseingType_In_Room && _fansInfo.useingType != ContactUseingType_Share) { + self.experImageView.hidden = NO; + self.charmImageView.hidden = NO; + self.nobleImageView.hidden = NO; + self.sexImageView.hidden = NO; + self.attentionButton.hidden = NO; + self.experImageView.imageUrl = _fansInfo.experUrl; + self.charmImageView.imageUrl = _fansInfo.charmUrl; + self.nobleImageView.imageUrl = _fansInfo.userVipInfoVO.vipIcon; + NSString *sexStr; + if (_fansInfo.gender == GenderType_Male) { + sexStr = @"common_male"; + } else { + sexStr = @"common_female"; + } + self.sexImageView.image = [UIImage imageNamed:sexStr]; + + + BOOL isMyFriend = [[NIMSDK sharedSDK].userManager isMyFriend:_fansInfo.uid]; + self.attentionButton.enabled = !isMyFriend; + self.attentionButton.hidden = NO; + UIImage* image = self.experImageView.image; + if (image) { + CGFloat scale = image.size.width / image.size.height; + [self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20* scale, 20)); + }]; + } else { + NSURL *imgUrl = [NSURL URLWithString:_fansInfo.experUrl]; + UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; + CGFloat scale = myImage.size.width / myImage.size.height; + [self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20* scale, 20)); + }]; + } + + UIImage* charmImage = self.charmImageView.image; + if (charmImage) { + CGFloat scale = charmImage.size.width / charmImage.size.height; + [self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20* scale, 20)); + }]; + } else { + NSURL *imgUrl = [NSURL URLWithString:_fansInfo.charmUrl]; + UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; + CGFloat scale = myImage.size.width / myImage.size.height; + [self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20* scale, 20)); + }]; + } + + UIImage *nobleImage = self.nobleImageView.image; + if (nobleImage) { + CGFloat scale = nobleImage.size.width / nobleImage.size.height; + [self.nobleImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20* scale, 20)); + }]; + } else { + [self.nobleImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(0, 20)); + }]; + } + + if (fansInfo.userVipInfoVO && fansInfo.userVipInfoVO.friendNickColour) { + self.nickLabel.textColor = [self colorWithHexString:fansInfo.userVipInfoVO.friendNickColour]; + } else { + self.nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + } else { + self.experImageView.hidden = YES; + self.charmImageView.hidden = YES; + self.nobleImageView.hidden = YES; + self.sexImageView.hidden = YES; + self.attentionButton.hidden = YES; + self.nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + } +} + +- (UIColor *)colorWithHexString: (NSString *) hexString { + NSString *colorString = [[hexString stringByReplacingOccurrencesOfString: @"#" withString: @""] uppercaseString]; + CGFloat alpha, red, blue, green; + alpha = 1.0f; + red = [self colorComponentFrom: colorString start: 0 length: 2]; + green = [self colorComponentFrom: colorString start: 2 length: 2]; + blue = [self colorComponentFrom: colorString start: 4 length: 2]; + return [UIColor colorWithRed: red green: green blue: blue alpha: alpha]; +} + +- (CGFloat) colorComponentFrom: (NSString *) string start: (NSUInteger) start length: (NSUInteger) length { + NSString *substring = [string substringWithRange: NSMakeRange(start, length)]; + NSString *fullHex = length == 2 ? substring : [NSString stringWithFormat: @"%@%@", substring, substring]; + unsigned hexComponent; + [[NSScanner scannerWithString: fullHex] scanHexInt: &hexComponent]; + return hexComponent / 255.0; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 55/2; + } + return _avatarImageView; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentCenter; + _stackView.spacing = 2; + } + return _stackView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:15]; + _nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _nickLabel; +} + +- (UIImageView *)sexImageView { + if (!_sexImageView) { + _sexImageView = [[UIImageView alloc] init]; + _sexImageView.userInteractionEnabled = YES; + } + return _sexImageView; +} + +- (NetImageView *)experImageView { + if (!_experImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _experImageView = [[NetImageView alloc] initWithConfig:config]; + } + return _experImageView; +} + +- (NetImageView *)charmImageView { + if (!_charmImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _charmImageView = [[NetImageView alloc] initWithConfig:config]; + } + return _charmImageView; +} + +- (NetImageView *)nobleImageView { + if (!_nobleImageView) { + _nobleImageView = [[NetImageView alloc] init]; + } + return _nobleImageView; +} + +- (UILabel *)signLabel{ + if (!_signLabel) { + _signLabel = [[UILabel alloc] init]; + _signLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _signLabel.font = [UIFont systemFontOfSize:12]; + } + return _signLabel; +} + +- (UIButton *)attentionButton { + if (!_attentionButton) { + _attentionButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_attentionButton setTitle:YMLocalizedString(@"XPMineFansTableViewCell1") forState:UIControlStateNormal]; + [_attentionButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + _attentionButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_attentionButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_attentionButton setTitle:YMLocalizedString(@"XPMineFansTableViewCell2") forState:UIControlStateDisabled]; + [_attentionButton setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateDisabled]; + [_attentionButton setBackgroundImage:[UIImage imageWithColor:[DJDKMIMOMColor disableButtonColor]] forState:UIControlStateDisabled]; + _attentionButton.layer.masksToBounds = YES; + _attentionButton.layer.cornerRadius = 15; + [_attentionButton addTarget:self action:@selector(attentionButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _attentionButton; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _lineView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Cell/Friend/XPMineFriendEmptyTableViewCell.h b/YuMi/Modules/YMMine/View/Cell/Friend/XPMineFriendEmptyTableViewCell.h new file mode 100644 index 00000000..9229f0c2 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/Friend/XPMineFriendEmptyTableViewCell.h @@ -0,0 +1,17 @@ +// +// YMMineFriendEmptyTableViewCell.h +// YUMI +// +// Created by YUMI on 2021/12/21. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineFriendEmptyTableViewCell : UITableViewCell +///空白的文字 +@property (nonatomic,copy) NSString *emptyTitle; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/Friend/XPMineFriendEmptyTableViewCell.m b/YuMi/Modules/YMMine/View/Cell/Friend/XPMineFriendEmptyTableViewCell.m new file mode 100644 index 00000000..8e8817c7 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/Friend/XPMineFriendEmptyTableViewCell.m @@ -0,0 +1,83 @@ +// +// YMMineFriendEmptyTableViewCell.m +// YUMI +// +// Created by YUMI on 2021/12/21. +// + +#import "XPMineFriendEmptyTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImageConstant.h" + +@interface XPMineFriendEmptyTableViewCell () +@property (nonatomic,strong) UIImageView *emptyImageView; +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPMineFriendEmptyTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.emptyImageView]; + [self.contentView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.emptyImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.contentView); + make.bottom.mas_equalTo(self.contentView.mas_centerY).offset(-15); + make.size.mas_equalTo(CGSizeMake(100, 100)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.emptyImageView.mas_bottom).offset(20); + make.left.right.mas_equalTo(self.contentView); + }]; +} +#pragma mark - Getters And Setters + +- (void)setEmptyTitle:(NSString *)emptyTitle { + _emptyTitle = emptyTitle; + if (_emptyTitle.length > 0) { + self.titleLabel.text = _emptyTitle; + } +} + +- (UIImageView *)emptyImageView { + if (!_emptyImageView) { + _emptyImageView = [[UIImageView alloc] init]; + _emptyImageView.userInteractionEnabled = YES; + _emptyImageView.image = [UIImageConstant defalutEmptyPlaceholder]; + _emptyImageView.layer.masksToBounds = YES; + _emptyImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _emptyImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPMineFriendEmptyTableViewCell0"); + _titleLabel.numberOfLines = 2; + _titleLabel.font = [UIFont systemFontOfSize:16]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Cell/Friend/XPMineFriendTableViewCell.h b/YuMi/Modules/YMMine/View/Cell/Friend/XPMineFriendTableViewCell.h new file mode 100644 index 00000000..6217cef4 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/Friend/XPMineFriendTableViewCell.h @@ -0,0 +1,18 @@ +// +// YMMineFriendTableViewCell.h +// YUMI +// +// Created by YUMI on 2021/12/21. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class UserInfoModel; +@interface XPMineFriendTableViewCell : UITableViewCell +@property (nonatomic,strong) UserInfoModel *userInfo; +///是否在房内聊天 +@property (nonatomic,assign) BOOL isInRoom; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/Friend/XPMineFriendTableViewCell.m b/YuMi/Modules/YMMine/View/Cell/Friend/XPMineFriendTableViewCell.m new file mode 100644 index 00000000..4777cd6c --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/Friend/XPMineFriendTableViewCell.m @@ -0,0 +1,217 @@ +// +// YMMineFriendTableViewCell.m +// YUMI +// +// Created by YUMI on 2021/12/21. +// + +#import "XPMineFriendTableViewCell.h" +///Third +#import +///Tool +#import "NetImageConfig.h" +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +///Model +#import "UserInfoModel.h" + +@interface XPMineFriendTableViewCell () +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///性别 +@property (nonatomic,strong) UIImageView *sexImageView; +///等级 +@property (nonatomic,strong) NetImageView *experImageView; +///魅力等级 +@property (nonatomic,strong) NetImageView *charmImageView; +///签名 +@property (nonatomic,strong) UILabel *signLabel; +///分割线 +@property (nonatomic,strong) UIView *lineView; +@end + + +@implementation XPMineFriendTableViewCell +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.stackView]; + [self.contentView addSubview:self.signLabel]; + [self.contentView addSubview:self.lineView]; + + [self.stackView addArrangedSubview:self.nickLabel]; + [self.stackView addArrangedSubview:self.sexImageView]; + [self.stackView addArrangedSubview:self.experImageView]; + [self.stackView addArrangedSubview:self.charmImageView]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(55, 55)); + make.centerY.mas_equalTo(self.contentView); + make.left.mas_equalTo(self.contentView).offset(15); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(10); + make.bottom.mas_equalTo(self.avatarImageView.mas_centerY).offset(-2); + }]; + + [self.signLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.stackView); + make.top.mas_equalTo(self.avatarImageView.mas_centerY).offset(2); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.stackView); + make.bottom.mas_equalTo(self.contentView); + make.height.mas_equalTo(1); + make.right.mas_equalTo(self.contentView).offset(-15); + }]; +} + +#pragma mark - Getters And Setters +- (void)setUserInfo:(UserInfoModel *)userInfo { + _userInfo = userInfo; + if (_userInfo) { + self.avatarImageView.imageUrl = _userInfo.avatar; + self.nickLabel.text = _userInfo.nick; + self.signLabel.text = _userInfo.userDesc && _userInfo.userDesc.length > 0? _userInfo.userDesc : YMLocalizedString(@"XPMineFriendTableViewCell0"); + if (self.isInRoom) { + self.experImageView.hidden = NO; + self.charmImageView.hidden = NO; + self.experImageView.imageUrl = _userInfo.userLevelVo.experUrl; + self.charmImageView.imageUrl = _userInfo.userLevelVo.charmUrl; + NSString *sexStr; + if (_userInfo.gender == GenderType_Male) { + sexStr = @"common_male"; + } else { + sexStr = @"common_female"; + } + self.sexImageView.image = [UIImage imageNamed:sexStr]; + UIImage* image = self.experImageView.image; + if (image) { + CGFloat scale = image.size.width / image.size.height; + [self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20* scale, 20)); + }]; + } else { + NSURL *imgUrl = [NSURL URLWithString:_userInfo.userLevelVo.experUrl]; + UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; + CGFloat scale = myImage.size.width / myImage.size.height; + [self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20* scale, 20)); + }]; + } + + UIImage* charmImage = self.charmImageView.image; + if (charmImage) { + CGFloat scale = charmImage.size.width / charmImage.size.height; + [self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20* scale, 20)); + }]; + } else { + NSURL *imgUrl = [NSURL URLWithString:_userInfo.userLevelVo.charmUrl]; + UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; + CGFloat scale = myImage.size.width / myImage.size.height; + [self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20* scale, 20)); + }]; + } + } else { + self.experImageView.hidden = YES; + self.charmImageView.hidden = YES; + } + } +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 55/2; + } + return _avatarImageView; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentCenter; + _stackView.spacing = 10; + } + return _stackView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:15]; + _nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _nickLabel; +} + +- (UIImageView *)sexImageView { + if (!_sexImageView) { + _sexImageView = [[UIImageView alloc] init]; + _sexImageView.userInteractionEnabled = YES; + } + return _sexImageView; +} + +- (NetImageView *)experImageView { + if (!_experImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _experImageView = [[NetImageView alloc] initWithConfig:config]; + } + return _experImageView; +} + +- (NetImageView *)charmImageView { + if (!_charmImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _charmImageView = [[NetImageView alloc] initWithConfig:config]; + } + return _charmImageView; +} + +- (UILabel *)signLabel{ + if (!_signLabel) { + _signLabel = [[UILabel alloc] init]; + _signLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _signLabel.font = [UIFont systemFontOfSize:12]; + } + return _signLabel; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _lineView; +} +@end diff --git a/YuMi/Modules/YMMine/View/Cell/Friend/YUMIManeAssistantDispossessTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Cell/Friend/YUMIManeAssistantDispossessTabulationRegardElement.h deleted file mode 100644 index b569a47e..00000000 --- a/YuMi/Modules/YMMine/View/Cell/Friend/YUMIManeAssistantDispossessTabulationRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineFriendEmptyTableViewCell.h -// YUMI -// -// Created by YUMI on 2021/12/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeAssistantDispossessTabulationRegardElement : UITableViewCell -@property (nonatomic,copy) NSString *emptyTitle; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/Friend/YUMIManeAssistantDispossessTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Cell/Friend/YUMIManeAssistantDispossessTabulationRegardElement.m deleted file mode 100644 index c4aacd6a..00000000 --- a/YuMi/Modules/YMMine/View/Cell/Friend/YUMIManeAssistantDispossessTabulationRegardElement.m +++ /dev/null @@ -1,81 +0,0 @@ -// -// YMMineFriendEmptyTableViewCell.m -// YUMI -// -// Created by YUMI on 2021/12/21. -// - -#import "YUMIManeAssistantDispossessTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIIndicateConstant.h" - -@interface YUMIManeAssistantDispossessTabulationRegardElement () -@property (nonatomic,strong) UIImageView *dispossessIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@end - -@implementation YUMIManeAssistantDispossessTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.dispossessIndicateRegard]; - [self.contentView addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.dispossessIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.contentView); - make.bottom.mas_equalTo(self.contentView.mas_centerY).offset(-15); - make.size.mas_equalTo(CGSizeMake(100, 100)); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.dispossessIndicateRegard.mas_bottom).offset(20); - make.left.right.mas_equalTo(self.contentView); - }]; -} -#pragma mark - Getters And Setters - -- (void)setEmptyTitle:(NSString *)emptyTitle { - _emptyTitle = emptyTitle; - if (_emptyTitle.length > 0) { - self.titleLabel.text = _emptyTitle; - } -} - -- (UIImageView *)dispossessIndicateRegard { - if (!_dispossessIndicateRegard) { - _dispossessIndicateRegard = [[UIImageView alloc] init]; - _dispossessIndicateRegard.userInteractionEnabled = YES; - _dispossessIndicateRegard.image = [UIIndicateConstant defalutDispossessDepapossessor]; - _dispossessIndicateRegard.layer.masksToBounds = YES; - _dispossessIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _dispossessIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Mine_Friend_Empty_Table_View_Cell_0"); - _titleLabel.numberOfLines = 2; - _titleLabel.font = [UIFont systemFontOfSize:16]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Cell/Friend/YUMIManeAssistantTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Cell/Friend/YUMIManeAssistantTabulationRegardElement.h deleted file mode 100644 index 8d087a6e..00000000 --- a/YuMi/Modules/YMMine/View/Cell/Friend/YUMIManeAssistantTabulationRegardElement.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMMineFriendTableViewCell.h -// YUMI -// -// Created by YUMI on 2021/12/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ConsumerAbstractMatrix; -@interface YUMIManeAssistantTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@property (nonatomic,assign) BOOL isInRoom; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/Friend/YUMIManeAssistantTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Cell/Friend/YUMIManeAssistantTabulationRegardElement.m deleted file mode 100644 index 9cc04962..00000000 --- a/YuMi/Modules/YMMine/View/Cell/Friend/YUMIManeAssistantTabulationRegardElement.m +++ /dev/null @@ -1,206 +0,0 @@ -// -// YMMineFriendTableViewCell.m -// YUMI -// -// Created by YUMI on 2021/12/21. -// - -#import "YUMIManeAssistantTabulationRegardElement.h" -#import -#import "NetIndicateDisposition.h" -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "ConsumerAbstractMatrix.h" - -@interface YUMIManeAssistantTabulationRegardElement () -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UIImageView *seaxualityIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *experIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *fascinationIndicateRegard; -@property (nonatomic,strong) UILabel *signSequencignation; -@property (nonatomic,strong) UIView *burlywoodRegard; -@end - - -@implementation YUMIManeAssistantTabulationRegardElement -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.stackView]; - [self.contentView addSubview:self.signSequencignation]; - [self.contentView addSubview:self.burlywoodRegard]; - - [self.stackView addArrangedSubview:self.monicerSequencignation]; - [self.stackView addArrangedSubview:self.seaxualityIndicateRegard]; - [self.stackView addArrangedSubview:self.experIndicateRegard]; - [self.stackView addArrangedSubview:self.fascinationIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(55, 55)); - make.centerY.mas_equalTo(self.contentView); - make.left.mas_equalTo(self.contentView).offset(15); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(10); - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(-2); - }]; - - [self.signSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.stackView); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(2); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.stackView); - make.bottom.mas_equalTo(self.contentView); - make.height.mas_equalTo(1); - make.right.mas_equalTo(self.contentView).offset(-15); - }]; -} - -#pragma mark - Getters And Setters -- (void)setUserInfo:(ConsumerAbstractMatrix *)userInfo { - _userInfo = userInfo; - if (_userInfo) { - self.intelligenceportraitIndicateRegard.imageUrl = _userInfo.avatar; - self.monicerSequencignation.text = _userInfo.nick; - self.signSequencignation.text = _userInfo.userDesc && _userInfo.userDesc.length > 0? _userInfo.userDesc : YMLocalizedString(@"YUMI_Mine_Friend_Table_View_Cell_0"); - if (self.isInRoom) { - self.experIndicateRegard.hidden = NO; - self.fascinationIndicateRegard.hidden = NO; - self.experIndicateRegard.imageUrl = _userInfo.userLevelVo.experUrl; - self.fascinationIndicateRegard.imageUrl = _userInfo.userLevelVo.charmUrl; - NSString *sexStr; - if (_userInfo.gender == GenderGenre_Male) { - sexStr = @"common_male"; - } else { - sexStr = @"common_female"; - } - self.seaxualityIndicateRegard.image = [UIImage imageNamed:sexStr]; - UIImage* image = self.experIndicateRegard.image; - if (image) { - CGFloat scale = image.size.width / image.size.height; - [self.experIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20* scale, 20)); - }]; - } else { - NSURL *imgUrl = [NSURL URLWithString:_userInfo.userLevelVo.experUrl]; - UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; - CGFloat scale = myImage.size.width / myImage.size.height; - [self.experIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20* scale, 20)); - }]; - } - - UIImage* charmImage = self.fascinationIndicateRegard.image; - if (charmImage) { - CGFloat scale = charmImage.size.width / charmImage.size.height; - [self.fascinationIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20* scale, 20)); - }]; - } else { - NSURL *imgUrl = [NSURL URLWithString:_userInfo.userLevelVo.charmUrl]; - UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; - CGFloat scale = myImage.size.width / myImage.size.height; - [self.fascinationIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20* scale, 20)); - }]; - } - } else { - self.experIndicateRegard.hidden = YES; - self.fascinationIndicateRegard.hidden = YES; - } - } -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 55/2; - } - return _intelligenceportraitIndicateRegard; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentCenter; - _stackView.spacing = 10; - } - return _stackView; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:15]; - _monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _monicerSequencignation; -} - -- (UIImageView *)seaxualityIndicateRegard { - if (!_seaxualityIndicateRegard) { - _seaxualityIndicateRegard = [[UIImageView alloc] init]; - _seaxualityIndicateRegard.userInteractionEnabled = YES; - } - return _seaxualityIndicateRegard; -} - -- (NetIndicateRegard *)experIndicateRegard { - if (!_experIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _experIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - } - return _experIndicateRegard; -} - -- (NetIndicateRegard *)fascinationIndicateRegard { - if (!_fascinationIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _fascinationIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - } - return _fascinationIndicateRegard; -} - -- (UILabel *)signSequencignation{ - if (!_signSequencignation) { - _signSequencignation = [[UILabel alloc] init]; - _signSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _signSequencignation.font = [UIFont systemFontOfSize:12]; - } - return _signSequencignation; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _burlywoodRegard; -} -@end diff --git a/YuMi/Modules/YMMine/View/Cell/Friend/YUMIManeConsiderationTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Cell/Friend/YUMIManeConsiderationTabulationRegardElement.h deleted file mode 100644 index e8e11037..00000000 --- a/YuMi/Modules/YMMine/View/Cell/Friend/YUMIManeConsiderationTabulationRegardElement.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YMMineAttentionTableViewCell.h -// YUMI -// -// Created by YUMI on 2021/12/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class FanaticsAbstractMatrix, YUMIManeConsiderationTabulationRegardElement; -@protocol FBCManeConsiderationTabulationViweElementRepresendtation - -- (void)fBCManeConsidertowardsionTarbsultowardsionViweElement:(YUMIManeConsiderationTabulationRegardElement *)view findUser:(NSString *)uid; - -@end - -@interface YUMIManeConsiderationTabulationRegardElement : UITableViewCell - -@property (nonatomic,strong) FanaticsAbstractMatrix *fanaticsAbstract; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/Friend/YUMIManeConsiderationTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Cell/Friend/YUMIManeConsiderationTabulationRegardElement.m deleted file mode 100644 index b5fe0e1b..00000000 --- a/YuMi/Modules/YMMine/View/Cell/Friend/YUMIManeConsiderationTabulationRegardElement.m +++ /dev/null @@ -1,297 +0,0 @@ -// -// YMMineAttentionTableViewCell.m -// YUMI -// -// Created by YUMI on 2021/12/21. -// - -#import "YUMIManeConsiderationTabulationRegardElement.h" -#import -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "FanaticsAbstractMatrix.h" - -@interface YUMIManeConsiderationTabulationRegardElement () -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UIImageView *seaxualityIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *experIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *fascinationIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *magnificentIndicateRegard; -@property (nonatomic,strong) UILabel *signSequencignation; -@property (nonatomic,strong) UIButton *findBtuton; -@property (nonatomic,strong) UIView *burlywoodRegard; -@end - - -@implementation YUMIManeConsiderationTabulationRegardElement -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.stackView]; - [self.contentView addSubview:self.signSequencignation]; - [self.contentView addSubview:self.findBtuton]; - [self.contentView addSubview:self.burlywoodRegard]; - - [self.stackView addArrangedSubview:self.magnificentIndicateRegard]; - [self.stackView addArrangedSubview:self.monicerSequencignation]; - [self.stackView addArrangedSubview:self.seaxualityIndicateRegard]; - [self.stackView addArrangedSubview:self.experIndicateRegard]; - [self.stackView addArrangedSubview:self.fascinationIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(55, 55)); - make.centerY.mas_equalTo(self.contentView); - make.left.mas_equalTo(self.contentView).offset(15); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(10); - make.right.mas_lessThanOrEqualTo(self.findBtuton.mas_left).mas_offset(-4); - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(-2); - }]; - - [self.signSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.stackView); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(2); - make.right.mas_equalTo(self.findBtuton.mas_left).mas_offset(-4); - }]; - - [self.findBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(65); - make.height.mas_equalTo(30); - make.centerY.mas_equalTo(self.contentView); - make.right.mas_equalTo(self.contentView).offset(-15); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.stackView); - make.bottom.mas_equalTo(self.contentView); - make.height.mas_equalTo(1); - make.right.mas_equalTo(self.contentView).offset(-15); - }]; -} - -#pragma mark - Event Response -- (void)prohibiticoveryBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeConsidertowardsionTarbsultowardsionViweElement:findUser:)]) { - [self.delegate fBCManeConsidertowardsionTarbsultowardsionViweElement:self findUser:self.fanaticsAbstract.userInRoomUid]; - } -} - -#pragma mark - Getters And Setters -- (void)setFanaticsAbstract:(FanaticsAbstractMatrix *)fanaticsAbstract { - _fanaticsAbstract = fanaticsAbstract; - if (_fanaticsAbstract) { - self.intelligenceportraitIndicateRegard.imageUrl = _fanaticsAbstract.avatar; - self.monicerSequencignation.text = _fanaticsAbstract.nick; - self.signSequencignation.text = _fanaticsAbstract.userDesc && _fanaticsAbstract.userDesc.length > 0? _fanaticsAbstract.userDesc : YMLocalizedString(@"YUMI_Mine_Attention_Table_View_Cell_0"); - if (_fanaticsAbstract.useingType != ContactUseingGenre_In_Room && _fanaticsAbstract.useingType != ContactUseingGenre_Share) { - self.experIndicateRegard.hidden = NO; - self.fascinationIndicateRegard.hidden = NO; - self.magnificentIndicateRegard.hidden = NO; - self.seaxualityIndicateRegard.hidden = NO; - self.experIndicateRegard.imageUrl = _fanaticsAbstract.experUrl; - self.fascinationIndicateRegard.imageUrl = _fanaticsAbstract.charmUrl; - self.magnificentIndicateRegard.imageUrl = _fanaticsAbstract.userVipInfoVO.vipIcon; - NSString *sexStr; - if (_fanaticsAbstract.gender == GenderGenre_Male) { - sexStr = @"common_male"; - } else { - sexStr = @"common_female"; - } - self.seaxualityIndicateRegard.image = [UIImage imageNamed:sexStr]; - - self.findBtuton.hidden = _fanaticsAbstract.userInRoomUid.length <= 0; - UIImage* image = self.experIndicateRegard.image; - if (image) { - CGFloat scale = image.size.width / image.size.height; - [self.experIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20* scale, 20)); - }]; - } else { - NSURL *imgUrl = [NSURL URLWithString:_fanaticsAbstract.experUrl]; - UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; - CGFloat scale = myImage.size.width / myImage.size.height; - [self.experIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20* scale, 20)); - }]; - } - - UIImage* charmImage = self.fascinationIndicateRegard.image; - if (charmImage) { - CGFloat scale = charmImage.size.width / charmImage.size.height; - [self.fascinationIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20* scale, 20)); - }]; - } else { - NSURL *imgUrl = [NSURL URLWithString:_fanaticsAbstract.charmUrl]; - UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; - CGFloat scale = myImage.size.width / myImage.size.height; - [self.fascinationIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20* scale, 20)); - }]; - } - - UIImage *nobleImage = self.magnificentIndicateRegard.image; - if (nobleImage) { - CGFloat scale = nobleImage.size.width / nobleImage.size.height; - [self.magnificentIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20* scale, 20)); - }]; - } else { - [self.magnificentIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(0, 20)); - }]; - } - if (fanaticsAbstract.userVipInfoVO && fanaticsAbstract.userVipInfoVO.friendNickColour) { - self.monicerSequencignation.textColor = [self colorAboutHexBWSttr:fanaticsAbstract.userVipInfoVO.friendNickColour]; - } else { - self.monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - } else { - self.experIndicateRegard.hidden = YES; - self.fascinationIndicateRegard.hidden = YES; - self.magnificentIndicateRegard.hidden = YES; - self.seaxualityIndicateRegard.hidden = YES; - self.findBtuton.hidden = YES; - self.monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - } -} - -- (UIColor *)colorAboutHexBWSttr: (NSString *) hexString { - NSString *colorString = [[hexString stringByReplacingOccurrencesOfString: @"#" withString: @""] uppercaseString]; - CGFloat alpha, red, blue, green; - alpha = 1.0f; - red = [self colorComponentByvirtueof: colorString start: 0 length: 2]; - green = [self colorComponentByvirtueof: colorString start: 2 length: 2]; - blue = [self colorComponentByvirtueof: colorString start: 4 length: 2]; - return [UIColor colorWithRed: red green: green blue: blue alpha: alpha]; -} - -- (CGFloat) colorComponentByvirtueof: (NSString *) string start: (NSUInteger) start length: (NSUInteger) length { - NSString *substring = [string substringWithRange: NSMakeRange(start, length)]; - NSString *fullHex = length == 2 ? substring : [NSString stringWithFormat: @"%@%@", substring, substring]; - unsigned hexComponent; - [[NSScanner scannerWithString: fullHex] scanHexInt: &hexComponent]; - return hexComponent / 255.0; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 55/2; - } - return _intelligenceportraitIndicateRegard; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentCenter; - _stackView.spacing = 2; - } - return _stackView; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:15]; - _monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _monicerSequencignation; -} - -- (UIImageView *)seaxualityIndicateRegard { - if (!_seaxualityIndicateRegard) { - _seaxualityIndicateRegard = [[UIImageView alloc] init]; - _seaxualityIndicateRegard.userInteractionEnabled = YES; - } - return _seaxualityIndicateRegard; -} - -- (NetIndicateRegard *)experIndicateRegard { - if (!_experIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _experIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _experIndicateRegard.layer.maskedCorners = YES; - _experIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _experIndicateRegard; -} - -- (NetIndicateRegard *)fascinationIndicateRegard { - if (!_fascinationIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _fascinationIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _fascinationIndicateRegard.layer.maskedCorners = YES; - _fascinationIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _fascinationIndicateRegard; -} - -- (NetIndicateRegard *)magnificentIndicateRegard { - if (!_magnificentIndicateRegard) { - _magnificentIndicateRegard = [[NetIndicateRegard alloc] init]; - } - return _magnificentIndicateRegard; -} - -- (UILabel *)signSequencignation{ - if (!_signSequencignation) { - _signSequencignation = [[UILabel alloc] init]; - _signSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _signSequencignation.font = [UIFont systemFontOfSize:12]; - } - return _signSequencignation; -} - -- (UIButton *)findBtuton { - if (!_findBtuton) { - _findBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_findBtuton setTitle:@"找到Ta" forState:UIControlStateNormal]; - [_findBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionUnderlinePrettify] forState:UIControlStateNormal]; - _findBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - _findBtuton.layer.masksToBounds = YES; - _findBtuton.layer.cornerRadius = 15; - _findBtuton.layer.borderColor = [DJDKMIMOMColor aplictowardsionUnderlinePrettify].CGColor; - _findBtuton.layer.borderWidth = 1; - _findBtuton.hidden = YES; - [_findBtuton addTarget:self action:@selector(prohibiticoveryBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _findBtuton; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _burlywoodRegard; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Cell/Friend/YUMIManeFanaticsTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Cell/Friend/YUMIManeFanaticsTabulationRegardElement.h deleted file mode 100644 index 3032a48e..00000000 --- a/YuMi/Modules/YMMine/View/Cell/Friend/YUMIManeFanaticsTabulationRegardElement.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMMineFansTableViewCell.h -// YUMI -// -// Created by YUMI on 2021/12/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class FanaticsAbstractMatrix, YUMIManeFanaticsTabulationRegardElement; -@protocol FBCManeFanaticsTabulationViweElementRepresendtation -- (void)fBCManeFantowardsicsTarbsultowardsionViweElement:(YUMIManeFanaticsTabulationRegardElement *)view didClickAttention:(NSString *)uid; - -@end -@interface YUMIManeFanaticsTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) FanaticsAbstractMatrix *fanaticsAbstract; -@property (nonatomic,weak) id delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/Friend/YUMIManeFanaticsTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Cell/Friend/YUMIManeFanaticsTabulationRegardElement.m deleted file mode 100644 index 5553e2c8..00000000 --- a/YuMi/Modules/YMMine/View/Cell/Friend/YUMIManeFanaticsTabulationRegardElement.m +++ /dev/null @@ -1,301 +0,0 @@ -// -// YMMineFansTableViewCell.m -// YUMI -// -// Created by YUMI on 2021/12/21. -// - -#import "YUMIManeFanaticsTabulationRegardElement.h" -#import -#import -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "FanaticsAbstractMatrix.h" - -@interface YUMIManeFanaticsTabulationRegardElement () -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UIImageView *seaxualityIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *experIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *fascinationIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *magnificentIndicateRegard; -@property (nonatomic,strong) UILabel *signSequencignation; -@property (nonatomic,strong) UIButton *considerationBtuton; -@property (nonatomic,strong) UIView * burlywoodRegard; -@end - - -@implementation YUMIManeFanaticsTabulationRegardElement -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.stackView]; - [self.contentView addSubview:self.signSequencignation]; - [self.contentView addSubview:self.considerationBtuton]; - [self.contentView addSubview:self.burlywoodRegard]; - - [self.stackView addArrangedSubview:self.magnificentIndicateRegard]; - [self.stackView addArrangedSubview:self.monicerSequencignation]; - [self.stackView addArrangedSubview:self.seaxualityIndicateRegard]; - [self.stackView addArrangedSubview:self.experIndicateRegard]; - [self.stackView addArrangedSubview:self.fascinationIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(55, 55)); - make.centerY.mas_equalTo(self.contentView); - make.left.mas_equalTo(self.contentView).offset(15); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(10); - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(-2); - make.right.mas_lessThanOrEqualTo(self.considerationBtuton.mas_left).mas_offset(-4); - }]; - - [self.signSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.stackView); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(2); - make.right.mas_equalTo(self.considerationBtuton.mas_left).mas_offset(-4); - }]; - - [self.considerationBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(65); - make.height.mas_equalTo(30); - make.centerY.mas_equalTo(self.contentView); - make.right.mas_equalTo(self.contentView).offset(-15); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.stackView); - make.bottom.mas_equalTo(self.contentView); - make.height.mas_equalTo(1); - make.right.mas_equalTo(self.contentView).offset(-15); - }]; -} - -#pragma mark - Event Response -- (void)considertowardsionBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeFantowardsicsTarbsultowardsionViweElement:didClickAttention:)]) { - [self.delegate fBCManeFantowardsicsTarbsultowardsionViweElement:self didClickAttention:self.fanaticsAbstract.uid]; - } -} - -#pragma mark - Getters And Setters -- (void)setFanaticsAbstract:(FanaticsAbstractMatrix *)fanaticsAbstract { - _fanaticsAbstract = fanaticsAbstract; - if (_fanaticsAbstract) { - self.intelligenceportraitIndicateRegard.imageUrl = _fanaticsAbstract.avatar; - - self.monicerSequencignation.text = _fanaticsAbstract.nick; - self.signSequencignation.text = _fanaticsAbstract.userDesc && _fanaticsAbstract.userDesc.length > 0? _fanaticsAbstract.userDesc : YMLocalizedString(@"YUMI_Mine_Fans_Table_View_Cell_0"); - if (_fanaticsAbstract.useingType != ContactUseingGenre_In_Room && _fanaticsAbstract.useingType != ContactUseingGenre_Share) { - self.experIndicateRegard.hidden = NO; - self.fascinationIndicateRegard.hidden = NO; - self.magnificentIndicateRegard.hidden = NO; - self.seaxualityIndicateRegard.hidden = NO; - self.considerationBtuton.hidden = NO; - self.experIndicateRegard.imageUrl = _fanaticsAbstract.experUrl; - self.fascinationIndicateRegard.imageUrl = _fanaticsAbstract.charmUrl; - self.magnificentIndicateRegard.imageUrl = _fanaticsAbstract.userVipInfoVO.vipIcon; - NSString *sexStr; - if (_fanaticsAbstract.gender == GenderGenre_Male) { - sexStr = @"common_male"; - } else { - sexStr = @"common_female"; - } - self.seaxualityIndicateRegard.image = [UIImage imageNamed:sexStr]; - - - BOOL isMyFriend = [[NIMSDK sharedSDK].userManager isMyFriend:_fanaticsAbstract.uid]; - self.considerationBtuton.enabled = !isMyFriend; - self.considerationBtuton.hidden = NO; - UIImage* image = self.experIndicateRegard.image; - if (image) { - CGFloat scale = image.size.width / image.size.height; - [self.experIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20* scale, 20)); - }]; - } else { - NSURL *imgUrl = [NSURL URLWithString:_fanaticsAbstract.experUrl]; - UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; - CGFloat scale = myImage.size.width / myImage.size.height; - [self.experIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20* scale, 20)); - }]; - } - - UIImage* charmImage = self.fascinationIndicateRegard.image; - if (charmImage) { - CGFloat scale = charmImage.size.width / charmImage.size.height; - [self.fascinationIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20* scale, 20)); - }]; - } else { - NSURL *imgUrl = [NSURL URLWithString:_fanaticsAbstract.charmUrl]; - UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; - CGFloat scale = myImage.size.width / myImage.size.height; - [self.fascinationIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20* scale, 20)); - }]; - } - - UIImage *nobleImage = self.magnificentIndicateRegard.image; - if (nobleImage) { - CGFloat scale = nobleImage.size.width / nobleImage.size.height; - [self.magnificentIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20* scale, 20)); - }]; - } else { - [self.magnificentIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(0, 20)); - }]; - } - - if (fanaticsAbstract.userVipInfoVO && fanaticsAbstract.userVipInfoVO.friendNickColour) { - self.monicerSequencignation.textColor = [self colorAboutHexBWSttr:fanaticsAbstract.userVipInfoVO.friendNickColour]; - } else { - self.monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - } else { - self.experIndicateRegard.hidden = YES; - self.fascinationIndicateRegard.hidden = YES; - self.magnificentIndicateRegard.hidden = YES; - self.seaxualityIndicateRegard.hidden = YES; - self.considerationBtuton.hidden = YES; - self.monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - } -} - -- (UIColor *)colorAboutHexBWSttr: (NSString *) hexString { - NSString *colorString = [[hexString stringByReplacingOccurrencesOfString: @"#" withString: @""] uppercaseString]; - CGFloat alpha, red, blue, green; - alpha = 1.0f; - red = [self colorComponentByvirtueof: colorString start: 0 length: 2]; - green = [self colorComponentByvirtueof: colorString start: 2 length: 2]; - blue = [self colorComponentByvirtueof: colorString start: 4 length: 2]; - return [UIColor colorWithRed: red green: green blue: blue alpha: alpha]; -} - -- (CGFloat) colorComponentByvirtueof: (NSString *) string start: (NSUInteger) start length: (NSUInteger) length { - NSString *substring = [string substringWithRange: NSMakeRange(start, length)]; - NSString *fullHex = length == 2 ? substring : [NSString stringWithFormat: @"%@%@", substring, substring]; - unsigned hexComponent; - [[NSScanner scannerWithString: fullHex] scanHexInt: &hexComponent]; - return hexComponent / 255.0; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 55/2; - } - return _intelligenceportraitIndicateRegard; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentCenter; - _stackView.spacing = 2; - } - return _stackView; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:15]; - _monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _monicerSequencignation; -} - -- (UIImageView *)seaxualityIndicateRegard { - if (!_seaxualityIndicateRegard) { - _seaxualityIndicateRegard = [[UIImageView alloc] init]; - _seaxualityIndicateRegard.userInteractionEnabled = YES; - } - return _seaxualityIndicateRegard; -} - -- (NetIndicateRegard *)experIndicateRegard { - if (!_experIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _experIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - } - return _experIndicateRegard; -} - -- (NetIndicateRegard *)fascinationIndicateRegard { - if (!_fascinationIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _fascinationIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - } - return _fascinationIndicateRegard; -} - -- (NetIndicateRegard *)magnificentIndicateRegard { - if (!_magnificentIndicateRegard) { - _magnificentIndicateRegard = [[NetIndicateRegard alloc] init]; - } - return _magnificentIndicateRegard; -} - -- (UILabel *)signSequencignation{ - if (!_signSequencignation) { - _signSequencignation = [[UILabel alloc] init]; - _signSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _signSequencignation.font = [UIFont systemFontOfSize:12]; - } - return _signSequencignation; -} - -- (UIButton *)considerationBtuton { - if (!_considerationBtuton) { - _considerationBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_considerationBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Fans_Table_View_Cell_1") forState:UIControlStateNormal]; - [_considerationBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - _considerationBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_considerationBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_considerationBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Fans_Table_View_Cell_2") forState:UIControlStateDisabled]; - [_considerationBtuton setTitleColor:[DJDKMIMOMColor prohibitionBtutonEssayPrettify] forState:UIControlStateDisabled]; - [_considerationBtuton setBackgroundImage:[UIImage imageWithColor:[DJDKMIMOMColor prohibitionBtutonPrettify]] forState:UIControlStateDisabled]; - _considerationBtuton.layer.masksToBounds = YES; - _considerationBtuton.layer.cornerRadius = 15; - [_considerationBtuton addTarget:self action:@selector(considertowardsionBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _considerationBtuton; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _burlywoodRegard; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataClanTableViewCell.h b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataClanTableViewCell.h new file mode 100644 index 00000000..f64d0575 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataClanTableViewCell.h @@ -0,0 +1,31 @@ +// +// YMMineDataClanTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/4/14. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class ClanDetailInfoModel, XPMineDataClanTableViewCell; +@protocol XPMineDataClanTableViewCellDelegate +///点击了收起 +- (void)xPMineDataClanTableViewCell:(XPMineDataClanTableViewCell *)view didClickFold:(UIButton *)sender; +///点击了加入公会 +- (void)xPMineDataClanTableViewCell:(XPMineDataClanTableViewCell *)view didClickEnter:(ClanDetailInfoModel *)clanInfo; +///点击了公会 +- (void)xPMineDataClanTableViewCell:(XPMineDataClanTableViewCell *)view didClickClanView:(ClanDetailInfoModel *)clanInfo; +///点击了公会房间 +- (void)xPMineDataClanTableViewCell:(XPMineDataClanTableViewCell *)view didClickHallView:(ClanDetailInfoModel *)clanInfo; +@end +@interface XPMineDataClanTableViewCell : UITableViewCell +///是否展示加入公会 +@property (nonatomic,assign) BOOL isShowEnterHall; + +@property (nonatomic,strong) ClanDetailInfoModel *clanInfo; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataClanTableViewCell.m b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataClanTableViewCell.m new file mode 100644 index 00000000..52fdc1ef --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataClanTableViewCell.m @@ -0,0 +1,357 @@ +// +// YMMineDataClanTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/4/14. +// + +#import "XPMineDataClanTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "UIButton+EnlargeTouchArea.h" +///Model +#import "ClanDetailInfoModel.h" + +@interface XPMineDataClanTableViewCell () +///背景 +@property (nonatomic,strong) UIView *backView; +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///家族 +@property (nonatomic,strong) UIView * clanView; +///家族头像 +@property (nonatomic,strong) NetImageView *clanImageView; +///家族昵称 +@property (nonatomic,strong) UILabel *clanNickLabel; +///展开 +@property (nonatomic,strong) UIButton *foldButton; +///分割线 +@property (nonatomic,strong) UIView * lineView; +///公会 +@property (nonatomic,strong) UIView * hallView; +///公会头像 +@property (nonatomic,strong) NetImageView *hallImageView; +///公会昵称 +@property (nonatomic,strong) UILabel *hallNickLabel; +///加入 +@property (nonatomic,strong) UIButton *enterButton; +///是否折叠 +@property (nonatomic,assign) BOOL isfold; +@end + +@implementation XPMineDataClanTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.isfold = YES; + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.backView]; + [self.backView addSubview:self.titleLabel]; + [self.backView addSubview:self.stackView]; + [self.stackView addArrangedSubview:self.clanView]; + [self.stackView addArrangedSubview:self.hallView]; + + [self.clanView addSubview:self.clanImageView]; + [self.clanView addSubview:self.clanNickLabel]; + [self.clanView addSubview:self.foldButton]; + [self.clanView addSubview:self.lineView]; + + [self.hallView addSubview:self.hallImageView]; + [self.hallView addSubview:self.hallNickLabel]; + [self.hallView addSubview:self.enterButton]; + +} + +- (void)initSubViewConstraints { + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + make.top.mas_equalTo(self.contentView); + make.bottom.mas_equalTo(self.contentView).offset(-15); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backView).offset(12); + make.top.mas_equalTo(self.backView).offset(10); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backView).offset(10); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(5); + make.right.mas_equalTo(self.backView).offset(-10); + }]; + + [self.clanView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(68); + }]; + + + [self.clanImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(48, 48)); + make.left.centerY.mas_equalTo(self.clanView); + }]; + + [self.clanNickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.clanImageView.mas_right).offset(10); + make.centerY.mas_equalTo(self.clanImageView.mas_centerY); + }]; + + [self.foldButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(13, 22)); + make.right.mas_equalTo(self.clanView); + make.centerY.mas_equalTo(self.clanView); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.left.right.mas_equalTo(self.clanView); + make.height.mas_equalTo(1); + }]; + + [self.hallView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(60); + }]; + + [self.hallImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(40, 40)); + make.centerY.mas_equalTo(self.hallView); + make.left.mas_equalTo(self.hallView); + }]; + + [self.hallNickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.hallView); + make.left.mas_equalTo(self.hallImageView.mas_right).offset(10); + make.right.mas_lessThanOrEqualTo(self.enterButton.mas_left).offset(-5); + }]; + + [self.enterButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(56, 20)); + make.centerY.mas_equalTo(self.hallView); + make.right.mas_equalTo(self.hallView); + }]; + +} + +#pragma mark - Event Response +- (void)enterButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineDataClanTableViewCell:didClickEnter:)]) { + [self.delegate xPMineDataClanTableViewCell:self didClickEnter:self.clanInfo]; + } +} + +- (void)foldButtonAction:(UIButton *)sender{ + sender.selected = !sender.selected; + self.hallView.hidden = !self.hallView.hidden; + [UIView animateWithDuration:0.2 animations:^{ + if (self.foldButton.selected) { + self.foldButton.transform = CGAffineTransformIdentity; + } else { + self.foldButton.transform = CGAffineTransformMakeRotation(M_PI / 2); + } + }]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineDataClanTableViewCell:didClickFold:)]) { + [self.delegate xPMineDataClanTableViewCell:self didClickFold:sender]; + } +} + +- (void)didTapClanView { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineDataClanTableViewCell:didClickClanView:)]) { + [self.delegate xPMineDataClanTableViewCell:self didClickClanView:self.clanInfo]; + } +} + +- (void)didTapHallView { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineDataClanTableViewCell:didClickHallView:)]) { + [self.delegate xPMineDataClanTableViewCell:self didClickHallView:self.clanInfo]; + } +} + +#pragma mark - Getters And Setters +- (void)setClanInfo:(ClanDetailInfoModel *)clanInfo { + _clanInfo = clanInfo; + if (_clanInfo) { + self.clanView.hidden = _clanInfo.clan.elderUid.length <= 0; + if (self.clanInfo.clan.elderUid.length > 0) { + if (self.clanInfo.hall.ownerUid.length > 0) { + self.titleLabel.text = YMLocalizedString(@"XPMineDataClanTableViewCell0"); + self.foldButton.hidden = NO; + self.clanView.hidden = NO; + self.hallView.hidden = self.isfold ? YES : NO; + } else { + self.titleLabel.text = YMLocalizedString(@"XPMineDataClanTableViewCell1"); + self.foldButton.hidden = YES; + self.clanView.hidden = NO; + self.hallView.hidden = YES; + } + } else { + if (self.clanInfo.hall.ownerUid.length > 0) { + self.titleLabel.text = YMLocalizedString(@"XPMineDataClanTableViewCell2"); + self.clanView.hidden = YES; + self.hallView.hidden = NO; + } else { + self.clanView.hidden = YES; + self.hallView.hidden = YES; + } + } + self.foldButton.hidden = YES; + self.clanImageView.imageUrl = _clanInfo.clan.avatar; + self.clanNickLabel.text = _clanInfo.clan.name; + self.hallImageView.imageUrl = _clanInfo.hall.ownerAvatar; + self.hallNickLabel.text = _clanInfo.hall.hallName; + } +} + + +- (void)setIsShowEnterHall:(BOOL)isShowEnterHall { + _isShowEnterHall = isShowEnterHall; +} + +- (UIView *)backView { + if (!_backView) { + _backView = [[UIView alloc] init]; + _backView.userInteractionEnabled = YES; + _backView.layer.cornerRadius = 10; + _backView.backgroundColor =[DJDKMIMOMColor appCellBackgroundColor]; + _backView.layer.shadowColor = UIColorFromRGB(0xE4E4E4).CGColor; + _backView.layer.shadowOffset = CGSizeMake(0, 2); + _backView.layer.shadowRadius = 8; + } + return _backView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPMineDataClanTableViewCell3"); + _titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 0; + } + return _stackView; +} + +- (UIView *)clanView { + if (!_clanView) { + _clanView = [[UIView alloc] init]; + _clanView.backgroundColor = [UIColor clearColor]; + } + return _clanView; +} + +- (NetImageView *)clanImageView { + if (!_clanImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _clanImageView = [[NetImageView alloc] initWithConfig:config]; + _clanImageView.layer.masksToBounds = YES; + _clanImageView.layer.cornerRadius = 8; + _clanImageView.userInteractionEnabled = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapClanView)]; + [_clanImageView addGestureRecognizer:tap]; + } + return _clanImageView; +} + +- (UILabel *)clanNickLabel { + if (!_clanNickLabel) { + _clanNickLabel = [[UILabel alloc] init]; + _clanNickLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _clanNickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _clanNickLabel; +} + + +- (UIButton *)foldButton { + if (!_foldButton) { + _foldButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_foldButton setImage:[UIImage imageNamed:@"room_setting_arrow"] forState:UIControlStateNormal]; + [_foldButton setImage:[UIImage imageNamed:@"room_setting_arrow"] forState:UIControlStateSelected]; + [_foldButton addTarget:self action:@selector(foldButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _foldButton.transform = CGAffineTransformMakeRotation(M_PI / 2); + _foldButton.hidden = YES; + [_foldButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + } + return _foldButton; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [UIColor clearColor]; + } + return _lineView; +} + +- (UIView *)hallView { + if (!_hallView) { + _hallView = [[UIView alloc] init]; + _hallView.backgroundColor = [UIColor clearColor]; + _hallView.hidden = NO; + } + return _hallView; +} + +- (NetImageView *)hallImageView { + if (!_hallImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _hallImageView = [[NetImageView alloc] initWithConfig:config]; + _hallImageView.layer.masksToBounds = YES; + _hallImageView.layer.cornerRadius = 8; + _hallImageView.userInteractionEnabled = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapHallView)]; + [_hallImageView addGestureRecognizer:tap]; + } + return _hallImageView; +} + +- (UILabel *)hallNickLabel { + if (!_hallNickLabel) { + _hallNickLabel = [[UILabel alloc] init]; + _hallNickLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _hallNickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _hallNickLabel; +} + +- (UIButton *)enterButton { + if (!_enterButton) { + _enterButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_enterButton setTitle:YMLocalizedString(@"XPMineDataClanTableViewCell4") forState:UIControlStateNormal]; + [_enterButton setTitleColor:UIColorFromRGB(0xFFC000) forState:UIControlStateNormal]; + _enterButton.titleLabel.font = [UIFont systemFontOfSize:10]; + _enterButton.backgroundColor = UIColorRGBAlpha(0xFFC000, 0.2); + _enterButton.layer.masksToBounds = YES; + _enterButton.layer.cornerRadius = 10; + [_enterButton addTarget:self action:@selector(enterButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _enterButton; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataGiftCollectionViewCell.h b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataGiftCollectionViewCell.h new file mode 100644 index 00000000..c050982b --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataGiftCollectionViewCell.h @@ -0,0 +1,16 @@ +// +// YMMineDataGiftCollectionViewCell.h +// YUMI +// +// Created by YUMI on 2022/4/14. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class UserGiftWallInfoModel; +@interface XPMineDataGiftCollectionViewCell : UICollectionViewCell +@property (nonatomic,strong) UserGiftWallInfoModel *giftInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataGiftCollectionViewCell.m b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataGiftCollectionViewCell.m new file mode 100644 index 00000000..b0a3fdfd --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataGiftCollectionViewCell.m @@ -0,0 +1,90 @@ +// +// YMMineDataGiftCollectionViewCell.m +// YUMI +// +// Created by YUMI on 2022/4/14. +// + +#import "XPMineDataGiftCollectionViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "UIView+Corner.h" +///Model +#import "UserGiftWallInfoModel.h" + +@interface XPMineDataGiftCollectionViewCell () +///礼物头像 +@property (nonatomic,strong) NetImageView *giftImageView; +///礼物个数 +@property (nonatomic,strong) UILabel *giftNumberLabel; +@end + +@implementation XPMineDataGiftCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method + +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.giftImageView]; + [self.contentView addSubview:self.giftNumberLabel]; +} + +- (void)initSubViewConstraints { + [self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(47, 47)); + make.top.centerX.mas_equalTo(self.contentView); + }]; + + [self.giftNumberLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.giftImageView.mas_bottom).offset(3); + make.size.mas_equalTo(CGSizeMake(51, 15)); + }]; +} + +#pragma mark - Getters And Setters +- (void)setGiftInfo:(UserGiftWallInfoModel *)giftInfo { + _giftInfo = giftInfo; + if (_giftInfo) { + self.giftImageView.imageUrl = _giftInfo.picUrl; + self.giftNumberLabel.text = [NSString stringWithFormat:@"X%ld", _giftInfo.reciveCount]; + } +} + +- (NetImageView *)giftImageView { + if (!_giftImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _giftImageView = [[NetImageView alloc] initWithConfig:config]; + } + return _giftImageView; +} + + +- (UILabel *)giftNumberLabel { + if (!_giftNumberLabel) { + _giftNumberLabel = [[UILabel alloc] init]; + _giftNumberLabel.font = [UIFont systemFontOfSize:10]; + _giftNumberLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _giftNumberLabel.backgroundColor = UIColorFromRGB(0xF1F1FA); + _giftNumberLabel.textAlignment = NSTextAlignmentCenter; + [_giftNumberLabel setCornerWithLeftTopCorner:2 rightTopCorner:6 bottomLeftCorner:6 bottomRightCorner:2 size:CGSizeMake(51, 15)]; + } + return _giftNumberLabel; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataGiftTableViewCell.h b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataGiftTableViewCell.h new file mode 100644 index 00000000..30bb1723 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataGiftTableViewCell.h @@ -0,0 +1,26 @@ +// +// YMMineDataGiftTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/4/14. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPMineDataGiftTableViewCell, UserGiftWallInfoModel; +@protocol XPMineDataGiftTableViewCellDelegate + +- (void)xPMineDataGiftTableViewCell:(XPMineDataGiftTableViewCell *)view didClickMore:(UIButton *)sender; + +@end +@interface XPMineDataGiftTableViewCell : UITableViewCell +///礼物墙中的礼物 +@property (nonatomic,strong) NSArray *userGiftWall; +///礼物墙中的幸运礼物礼物 +@property (nonatomic,strong) NSArray *userLuckyBagGiftWall; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataGiftTableViewCell.m b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataGiftTableViewCell.m new file mode 100644 index 00000000..9457d62f --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineDataGiftTableViewCell.m @@ -0,0 +1,227 @@ +// +// YMMineDataGiftTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/4/14. +// + +#import "XPMineDataGiftTableViewCell.h" +///Third +#import +#import +#import +#import +///Tool +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "UIImageConstant.h" +#import "UIButton+EnlargeTouchArea.h" +#import "UIImage+Utils.h" +///View +#import "XPMineUserInfoGiftView.h" + +@interface XPMineDataGiftTableViewCell () +///背景 +@property (nonatomic,strong) UIImageView * backImageView; +///显示更多 +@property (nonatomic,strong) UIButton *arrowButton; +///标题 +@property (nonatomic,strong) UILabel *titleLabel; +///分页标题 +@property (nonatomic, strong) NSArray *titles; +///分页控件 +@property (nonatomic, strong) JXCategoryTitleView *titleView; +///分页lineView +@property (nonatomic, strong) JXCategoryListContainerView *containerView; +///普通礼物 +@property (nonatomic,strong) XPMineUserInfoGiftView *normalGiftView; +///幸运礼物 +@property (nonatomic,strong) XPMineUserInfoGiftView *luckyGiftView; +@end + +@implementation XPMineDataGiftTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.backImageView]; + + [self.backImageView addSubview:self.titleLabel]; + [self.backImageView addSubview:self.arrowButton]; + [self.backImageView addSubview:self.titleView]; + [self.backImageView addSubview:self.containerView]; +} + +- (void)initSubViewConstraints { + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + make.top.mas_equalTo(self.contentView); + make.bottom.mas_equalTo(self.contentView).offset(-15); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backImageView).offset(12); + make.top.mas_equalTo(self.backImageView).offset(12); + }]; + + [self.arrowButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(13, 22)); + make.centerY.mas_equalTo(self.titleLabel); + make.right.mas_equalTo(self.backImageView).offset(-15); + }]; + + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.backImageView); + make.width.mas_equalTo(100 * 2 + 20); + make.height.mas_equalTo(30); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(23); + }]; + + [self.containerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.backImageView); + make.top.mas_equalTo(self.titleView.mas_bottom).offset(20); + }]; +} + +#pragma mark - JXCategoryViewDelegate +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { + return self.titles.count; +} + +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { + if (index == 0) { + return self.normalGiftView; + } else { + return self.luckyGiftView; + } +} +#pragma mark - Event Response +- (void)arrowButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineDataGiftTableViewCell:didClickMore:)]) { + [self.delegate xPMineDataGiftTableViewCell:self didClickMore:sender]; + } +} + +#pragma mark - Getters And Setters +- (void)setUserGiftWall:(NSArray *)userGiftWall { + _userGiftWall = userGiftWall; + if (_userGiftWall.count > 12) { + NSMutableArray * array = [_userGiftWall mutableCopy]; + _userGiftWall = [array subarrayWithRange:NSMakeRange(0, 12)]; + } + self.normalGiftView.datasource = _userGiftWall; +} + +- (void)setUserLuckyBagGiftWall:(NSArray *)userLuckyBagGiftWall { + _userLuckyBagGiftWall = userLuckyBagGiftWall; + if (_userLuckyBagGiftWall.count > 12) { + NSMutableArray * array = [_userLuckyBagGiftWall mutableCopy]; + _userLuckyBagGiftWall = [array subarrayWithRange:NSMakeRange(0, 12)]; + } + self.luckyGiftView.datasource = _userLuckyBagGiftWall; +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.layer.cornerRadius = 10; + _backImageView.backgroundColor =[DJDKMIMOMColor appCellBackgroundColor]; + _backImageView.layer.shadowColor = UIColorFromRGB(0xE4E4E4).CGColor; + _backImageView.layer.shadowOpacity = 1; + _backImageView.layer.shadowOffset = CGSizeMake(0, 2); + _backImageView.layer.shadowRadius = 8; + } + return _backImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPMineDataGiftTableViewCell0"); + _titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +- (UIButton *)arrowButton { + if (!_arrowButton) { + _arrowButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_arrowButton setImage:[UIImage imageNamed:@"room_setting_arrow"] forState:UIControlStateNormal]; + [_arrowButton setImage:[UIImage imageNamed:@"room_setting_arrow"] forState:UIControlStateSelected]; + [_arrowButton addTarget:self action:@selector(arrowButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_arrowButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + } + return _arrowButton; +} + +- (JXCategoryTitleView *)titleView { + if (!_titleView) { + _titleView = [[JXCategoryTitleView alloc] init]; + _titleView.delegate = self; + _titleView.titles = self.titles; + _titleView.backgroundColor = [UIColor clearColor]; + _titleView.titleColor = [DJDKMIMOMColor secondTextColor]; + _titleView.titleSelectedColor = [DJDKMIMOMColor mainTextColor]; + _titleView.titleFont = [UIFont systemFontOfSize:12]; + _titleView.titleSelectedFont = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; + _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; + _titleView.defaultSelectedIndex = 0; + _titleView.cellSpacing = 20; + _titleView.cellWidthIncrement = 5; + _titleView.cellWidth = 60; + _titleView.listContainer = self.containerView; + + JXCategoryIndicatorImageView *lineView = [[JXCategoryIndicatorImageView alloc] init]; + lineView.indicatorImageViewSize = CGSizeMake(60, 8); + lineView.verticalMargin = 6; + lineView.indicatorImageView.image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFFC000), UIColorFromRGB(0xFFD15A)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(60, 8)]; + lineView.indicatorImageView.layer.masksToBounds = YES; + lineView.indicatorImageView.layer.cornerRadius = 6; + _titleView.indicators = @[lineView]; + } + return _titleView; +} + +- (JXCategoryListContainerView *)containerView { + if (!_containerView) { + _containerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; + _containerView.defaultSelectedIndex = 0; + _containerView.scrollView.tag = 1009; + } + return _containerView; +} + +- (NSArray *)titles { + if (!_titles) { + _titles = @[@"普通礼物", YMLocalizedString(@"XPMineDataGiftTableViewCell2")]; + } + return _titles; +} + +- (XPMineUserInfoGiftView *)normalGiftView { + if (!_normalGiftView) { + _normalGiftView = [[XPMineUserInfoGiftView alloc] init]; + } + return _normalGiftView; +} + +- (XPMineUserInfoGiftView *)luckyGiftView { + if (!_luckyGiftView) { + _luckyGiftView = [[XPMineUserInfoGiftView alloc] init]; + } + return _luckyGiftView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoAlbumCollectionViewCell.h b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoAlbumCollectionViewCell.h new file mode 100644 index 00000000..47f83abd --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoAlbumCollectionViewCell.h @@ -0,0 +1,29 @@ +// +// YMMineUserInfoAlbumCollectionViewCell.h +// YUMI +// +// Created by YUMI on 2021/9/24. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class UserPhoto, XPMineUserInfoAlbumCollectionViewCell; + +@protocol XPMineUserInfoAlbumCollectionViewCellDelegate +///点击了删除某个 +- (void)xPMineUserInfoAlbumCollectionViewCell:(XPMineUserInfoAlbumCollectionViewCell * )cell didDeleteItem:(UserPhoto *)photo; +@end + +@interface XPMineUserInfoAlbumCollectionViewCell : UICollectionViewCell +///代理 +@property (nonatomic,weak) id delegate; +///相册 +@property (nonatomic,strong) UserPhoto *photo; +///添加 +@property (nonatomic,copy) NSString *addImageName; +///是否编辑 +@property (nonatomic,assign) BOOL isEdit; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoAlbumCollectionViewCell.m b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoAlbumCollectionViewCell.m new file mode 100644 index 00000000..9e2046ba --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoAlbumCollectionViewCell.m @@ -0,0 +1,101 @@ +// +// YMMineUserInfoAlbumCollectionViewCell.m +// YUMI +// +// Created by YUMI on 2021/9/24. +// + +#import "XPMineUserInfoAlbumCollectionViewCell.h" +///Third +#import +///Tool +#import "UIButton+EnlargeTouchArea.h" +///Model +#import "UserPhoto.h" + +#import "NetImageView.h" + +@interface XPMineUserInfoAlbumCollectionViewCell () +/// +@property (nonatomic,strong) NetImageView *logoImageView; +/// +@property (nonatomic,strong) UIButton *deleteButton; +@end + +@implementation XPMineUserInfoAlbumCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Response +- (void)deleteButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineUserInfoAlbumCollectionViewCell:didDeleteItem:)]) { + [self.delegate xPMineUserInfoAlbumCollectionViewCell:self didDeleteItem:self.photo]; + } +} +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.logoImageView]; + [self.contentView addSubview:self.deleteButton]; +} + +- (void)initSubViewConstraints { + [self.logoImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.contentView); + }]; + + [self.deleteButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(25, 25)); + make.top.right.mas_equalTo(self.contentView).inset(0); + }]; +} + +#pragma mark - Getters And Setters +- (void)setPhoto:(UserPhoto *)photo { + _photo = photo; + if (_photo) { + self.logoImageView.imageUrl = photo.photoUrl; + } +} + +- (void)setIsEdit:(BOOL)isEdit { + _isEdit = isEdit; + self.deleteButton.hidden = !_isEdit; +} + +- (void)setAddImageName:(NSString *)addImageName { + _addImageName = addImageName; + if (_addImageName.length > 0) { + self.logoImageView.image = [UIImage imageNamed:_addImageName]; + } +} + +- (NetImageView *)logoImageView { + if (!_logoImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + _logoImageView = [[NetImageView alloc] initWithConfig:config]; + _logoImageView.userInteractionEnabled = YES; + _logoImageView.layer.cornerRadius = 5; + _logoImageView.layer.masksToBounds = YES; + _logoImageView.contentMode = UIViewContentModeScaleAspectFill; + } + return _logoImageView; +} + +- (UIButton *)deleteButton { + if (!_deleteButton) { + _deleteButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_deleteButton setImage:[UIImage imageNamed:@"mine_user_info_edit_photo_delete"] forState:UIControlStateNormal]; + [_deleteButton setImage:[UIImage imageNamed:@"mine_user_info_edit_photo_delete"] forState:UIControlStateSelected]; + [_deleteButton addTarget:self action:@selector(deleteButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _deleteButton; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoEditTableViewCell.h b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoEditTableViewCell.h new file mode 100644 index 00000000..bd2cc03c --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoEditTableViewCell.h @@ -0,0 +1,17 @@ +// +// YMMineUserInfoEditTableViewCell.h +// YUMI +// +// Created by YUMI on 2021/9/23. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPMineUserInfoEditModel; +@interface XPMineUserInfoEditTableViewCell : UITableViewCell +///数据 +@property (nonatomic,strong) XPMineUserInfoEditModel *itmeModel; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoEditTableViewCell.m b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoEditTableViewCell.m new file mode 100644 index 00000000..e78335f0 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoEditTableViewCell.m @@ -0,0 +1,315 @@ +// +// YMMineUserInfoEditTableViewCell.m +// YUMI +// +// Created by YUMI on 2021/9/23. +// + +#import "XPMineUserInfoEditTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +///Model +#import "XPMineUserInfoEditModel.h" +#import "UserPhoto.h" + +#import "NetImageView.h" +#import "UIImage+Utils.h" + +@interface XPMineUserInfoEditTableViewCell () +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///标题 +@property (nonatomic,strong) UILabel *titleLabel; +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///副标题 +@property (nonatomic,strong) UILabel *subTitleLabel; +///箭头 +@property (nonatomic,strong) UIImageView *arrowImageView; +///相册的 +@property (nonatomic,strong) UIStackView *phototStackView; +///第一个 +@property (nonatomic,strong) NetImageView *firstPhotoImageView; +///第二个 +@property (nonatomic,strong) NetImageView *secondPhotoImageView; +///第三个 +@property (nonatomic,strong) NetImageView *thirdPhotoImageView; +///分割线 +@property (nonatomic,strong) UIView * partLineView; +/// +@property (nonatomic,strong) NSMutableArray *photoViewArray; +@end + +@implementation XPMineUserInfoEditTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.stackView]; + [self.contentView addSubview:self.partLineView]; + + [self.stackView addArrangedSubview:self.titleLabel]; + [self.stackView addArrangedSubview:self.avatarImageView]; + [self.stackView addArrangedSubview:self.subTitleLabel]; + [self.stackView addArrangedSubview:self.phototStackView]; + [self.stackView addArrangedSubview:self.arrowImageView]; + + [self.phototStackView addArrangedSubview:self.thirdPhotoImageView]; + [self.phototStackView addArrangedSubview:self.secondPhotoImageView]; + [self.phototStackView addArrangedSubview:self.firstPhotoImageView]; + + [self.photoViewArray addObject:self.firstPhotoImageView]; + [self.photoViewArray addObject:self.secondPhotoImageView]; + [self.photoViewArray addObject:self.thirdPhotoImageView]; +} + +- (void)initSubViewConstraints { + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.contentView); + make.bottom.mas_equalTo(self.partLineView.mas_top); + make.left.right.mas_equalTo(self.contentView).inset(15); + }]; + + [self.partLineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(25); + make.bottom.mas_equalTo(self.contentView); + make.height.mas_equalTo(1); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(50, 50)); + }]; + + [self.arrowImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(6, 10)); + }]; + + [self.firstPhotoImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(35); + }]; + + [self.secondPhotoImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(self.firstPhotoImageView); + }]; + + [self.thirdPhotoImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(self.firstPhotoImageView); + }]; +} + +- (void)loadPhotoViewWithPhotoArray:(NSArray *)array { + if (array.count > 3) { + array = [array subarrayWithRange:NSMakeRange(0, 3)]; + } + self.firstPhotoImageView.hidden = YES; + self.secondPhotoImageView.hidden = YES; + self.thirdPhotoImageView.hidden = YES; + for (int i = 0; i < array.count; i++) { + NetImageView * imageView = [self.photoViewArray objectAtIndex:i]; + NSString * imageUrl = [array objectAtIndex:i].photoUrl; + if (imageUrl.length > 0) { + imageView.imageUrl = imageUrl; + imageView.hidden = NO; + } + } +} + +- (void)configCellWithModel:(XPMineUserInfoEditModel *)model{ + switch (model.type) { + case XPMineUserInfoEditType_Avatar: + { + self.subTitleLabel.hidden = YES; + self.phototStackView.hidden = YES; + self.avatarImageView.hidden = NO; + if (model.isReview) { + [self.avatarImageView loadImageWithUrl:model.avatarUrl completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) { + UIImage * waterImage = [UIImage imageNamed:@"mine_avatar_reviewing"]; + float ratio = waterImage.size.height / waterImage.size.width; + float rectY = image.size.height * (1 - ratio); + self.avatarImageView.image = [UIImage waterImageWithImage:image waterImage:waterImage waterImageRect:CGRectMake(0, rectY, image.size.width, image.size.height * ratio)]; + }]; + } else { + self.avatarImageView.imageUrl = model.avatarUrl; + } + } + break; + case XPMineUserInfoEditType_Birth: + { + self.subTitleLabel.hidden = NO; + self.phototStackView.hidden = YES; + self.avatarImageView.hidden = YES; + } + break; + case XPMineUserInfoEditType_Nick: + { + self.subTitleLabel.hidden = NO; + self.phototStackView.hidden = YES; + self.avatarImageView.hidden = YES; + } + break; + case XPMineUserInfoEditType_UseDes: + { + self.subTitleLabel.hidden = NO; + self.phototStackView.hidden = YES; + self.avatarImageView.hidden = YES; + } + break; + case XPMineUserInfoEditType_Photo: + { + self.subTitleLabel.hidden = YES; + self.phototStackView.hidden = NO; + self.avatarImageView.hidden = YES; + [self loadPhotoViewWithPhotoArray:model.photoArray]; + } + break; + + default: + break; + } +} + +#pragma mark - Getters And Setters +- (void)setItmeModel:(XPMineUserInfoEditModel *)itmeModel { + _itmeModel = itmeModel; + if (_itmeModel) { + self.titleLabel.text = _itmeModel.title; + self.subTitleLabel.text = _itmeModel.subTitle; + [self configCellWithModel:itmeModel]; + } +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentCenter; + _stackView.spacing = 10; + } + return _stackView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:14]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + [_titleLabel setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + } + return _titleLabel; +} + +- (UILabel *)subTitleLabel { + if (!_subTitleLabel) { + _subTitleLabel = [[UILabel alloc] init]; + _subTitleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _subTitleLabel.font = [UIFont systemFontOfSize:12.f]; + _subTitleLabel.textAlignment = NSTextAlignmentRight; + } + return _subTitleLabel; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.userInteractionEnabled = YES; + _avatarImageView.layer.cornerRadius = 25; + _avatarImageView.layer.masksToBounds = YES; + } + return _avatarImageView; +} + +- (UIImageView *)arrowImageView { + if (!_arrowImageView) { + _arrowImageView = [[UIImageView alloc] init]; + _arrowImageView.userInteractionEnabled = YES; + _arrowImageView.image = [UIImage imageNamed:@"mine_item_arrow"]; + [_arrowImageView setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical]; + } + return _arrowImageView; +} + +- (UIStackView *)phototStackView { + if (!_phototStackView) { + _phototStackView = [[UIStackView alloc] init]; + _phototStackView.axis = UILayoutConstraintAxisHorizontal; + _phototStackView.distribution = UIStackViewDistributionFill; + _phototStackView.alignment = UIStackViewAlignmentFill; + _phototStackView.spacing = 10; + } + return _phototStackView; +} + +- (NetImageView *)firstPhotoImageView { + if (!_firstPhotoImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _firstPhotoImageView = [[NetImageView alloc] initWithConfig:config]; + _firstPhotoImageView.userInteractionEnabled = YES; + _firstPhotoImageView.layer.masksToBounds = YES; + _firstPhotoImageView.layer.cornerRadius = 5; + _firstPhotoImageView.hidden = YES; + } + return _firstPhotoImageView; +} + +- (NetImageView *)secondPhotoImageView { + if (!_secondPhotoImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _secondPhotoImageView = [[NetImageView alloc] initWithConfig:config]; + _secondPhotoImageView.userInteractionEnabled = YES; + _secondPhotoImageView.layer.masksToBounds = YES; + _secondPhotoImageView.layer.cornerRadius = 5; + _secondPhotoImageView.hidden = YES; + } + return _secondPhotoImageView; +} + +- (NetImageView *)thirdPhotoImageView { + if (!_thirdPhotoImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _thirdPhotoImageView = [[NetImageView alloc] initWithConfig:config]; + _thirdPhotoImageView.userInteractionEnabled = YES; + _thirdPhotoImageView.layer.masksToBounds = YES; + _thirdPhotoImageView.layer.cornerRadius = 5; + _thirdPhotoImageView.hidden = YES; + } + return _thirdPhotoImageView; +} + +- (UIView *)partLineView { + if (!_partLineView) { + _partLineView = [[UIView alloc] init]; + _partLineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _partLineView; +} + + +- (NSMutableArray *)photoViewArray { + if (!_photoViewArray) { + _photoViewArray = [NSMutableArray array]; + } + return _photoViewArray; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoEmptyCollectionViewCell.h b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoEmptyCollectionViewCell.h new file mode 100644 index 00000000..b620c832 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoEmptyCollectionViewCell.h @@ -0,0 +1,18 @@ +// +// YMMineUserInfoEmptyCollectionViewCell.h +// YUMI +// +// Created by YUMI on 2022/4/15. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineUserInfoEmptyCollectionViewCell : UICollectionViewCell +///是否是礼物墙 +@property (nonatomic,assign) BOOL isGiftWall; +@end + +NS_ASSUME_NONNULL_END + diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoEmptyCollectionViewCell.m b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoEmptyCollectionViewCell.m new file mode 100644 index 00000000..15cd1389 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoEmptyCollectionViewCell.m @@ -0,0 +1,82 @@ +// +// YMMineUserInfoEmptyCollectionViewCell.m +// YUMI +// +// Created by YUMI on 2022/4/15. +// + +#import "XPMineUserInfoEmptyCollectionViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImageConstant.h" + +@interface XPMineUserInfoEmptyCollectionViewCell () +@property (nonatomic,strong) UIImageView *emptyImageView; +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPMineUserInfoEmptyCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.emptyImageView]; + [self.contentView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.emptyImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.contentView).offset(150); + make.size.mas_equalTo(CGSizeMake(100, 100)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.emptyImageView.mas_bottom).offset(20); + make.left.right.mas_equalTo(self.contentView); + }]; +} +#pragma mark - Getters And Setters +- (void)setIsGiftWall:(BOOL)isGiftWall { + _isGiftWall = isGiftWall; + if (_isGiftWall) { + [self.emptyImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.contentView).offset(10); + }]; + self.titleLabel.font = [UIFont systemFontOfSize:13]; + } +} + +- (UIImageView *)emptyImageView { + if (!_emptyImageView) { + _emptyImageView = [[UIImageView alloc] init]; + _emptyImageView.userInteractionEnabled = YES; + _emptyImageView.image = [UIImageConstant defalutEmptyPlaceholder]; + _emptyImageView.layer.masksToBounds = YES; + _emptyImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _emptyImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPMineUserInfoEmptyCollectionViewCell0"); + _titleLabel.font = [UIFont systemFontOfSize:16]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _titleLabel; +} +@end diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoGiftWallCollectionViewCell.h b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoGiftWallCollectionViewCell.h new file mode 100644 index 00000000..1e97d861 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoGiftWallCollectionViewCell.h @@ -0,0 +1,16 @@ +// +// YMMineUserInfoGiftWallCollectionViewCell.h +// YUMI +// +// Created by YUMI on 2022/4/14. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class UserGiftWallInfoModel; +@interface XPMineUserInfoGiftWallCollectionViewCell : UICollectionViewCell +@property (nonatomic,strong) UserGiftWallInfoModel *giftInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoGiftWallCollectionViewCell.m b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoGiftWallCollectionViewCell.m new file mode 100644 index 00000000..87f2c6ef --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoGiftWallCollectionViewCell.m @@ -0,0 +1,158 @@ +// +// YMMineUserInfoGiftWallCollectionViewCell.m +// YUMI +// +// Created by YUMI on 2022/4/14. +// + +#import "XPMineUserInfoGiftWallCollectionViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "UIView+Corner.h" +///Model +#import "UserGiftWallInfoModel.h" + +@interface XPMineUserInfoGiftWallCollectionViewCell () +///礼物的图片 +@property (nonatomic,strong) NetImageView *giftImageView; +///礼物的数量 +@property (nonatomic,strong) UIButton *numberButton; +///礼物的名 +@property (nonatomic,strong) UILabel *giftNameLabel; +///礼物的价值容器 +@property (nonatomic,strong) UIStackView *stackView; +///钻石 +@property (nonatomic,strong) UIImageView *diamondImageView; +///价格 +@property (nonatomic,strong) UILabel *giftPriceLabel; +@end + +@implementation XPMineUserInfoGiftWallCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.giftImageView]; + [self.contentView addSubview:self.numberButton]; + [self.contentView addSubview:self.giftNameLabel]; + [self.contentView addSubview:self.stackView]; + + [self.stackView addArrangedSubview:self.diamondImageView]; + [self.stackView addArrangedSubview:self.giftPriceLabel]; +} + +- (void)initSubViewConstraints { + [self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(5); + make.top.mas_equalTo(self.contentView); + make.height.mas_equalTo(self.giftImageView.mas_width); + }]; + + [self.numberButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(55, 15)); + make.centerX.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.giftImageView.mas_bottom).offset(2); + }]; + + [self.giftNameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.numberButton.mas_bottom).offset(10); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.giftNameLabel.mas_bottom).offset(3); + }]; + + [self.diamondImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(13, 13)); + }]; +} + +#pragma mark - Getters And Setters +- (void)setGiftInfo:(UserGiftWallInfoModel *)giftInfo { + _giftInfo = giftInfo; + if (_giftInfo) { + self.giftImageView.imageUrl = _giftInfo.picUrl; + self.giftNameLabel.text = _giftInfo.giftName; + self.giftPriceLabel.text = [NSString stringWithFormat:@"%ld", _giftInfo.giftPrice]; + [self.numberButton setTitle:[NSString stringWithFormat:@"X%ld", _giftInfo.reciveCount] forState:UIControlStateNormal]; + } +} + +- (NetImageView *)giftImageView { + if (!_giftImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _giftImageView = [[NetImageView alloc] initWithConfig:config]; + _giftImageView.contentMode = UIViewContentModeScaleAspectFill; + _giftImageView.layer.masksToBounds = YES; + } + return _giftImageView; +} + +- (UIButton *)numberButton { + if (!_numberButton) { + _numberButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_numberButton setBackgroundColor:[DJDKMIMOMColor appCellBackgroundColor]]; + [_numberButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + _numberButton.titleLabel.font = [UIFont systemFontOfSize:10]; + _numberButton.layer.masksToBounds = YES; + [_numberButton setCornerWithLeftTopCorner:2 rightTopCorner:6 bottomLeftCorner:6 bottomRightCorner:2 size:CGSizeMake(55, 15)]; + } + return _numberButton; +} + +- (UILabel *)giftNameLabel { + if (!_giftNameLabel) { + _giftNameLabel = [[UILabel alloc] init]; + _giftNameLabel.font = [UIFont systemFontOfSize:13]; + _giftNameLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _giftNameLabel.textAlignment = NSTextAlignmentCenter; + } + return _giftNameLabel; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 3; + } + return _stackView; +} + +- (UIImageView *)diamondImageView { + if (!_diamondImageView) { + _diamondImageView = [[UIImageView alloc] init]; + _diamondImageView.userInteractionEnabled = YES; + _diamondImageView.image = [UIImage imageNamed:@"common_diamond"]; + } + return _diamondImageView; +} + +- (UILabel *)giftPriceLabel { + if (!_giftPriceLabel) { + _giftPriceLabel = [[UILabel alloc] init]; + _giftPriceLabel.font = [UIFont systemFontOfSize:11]; + _giftPriceLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _giftPriceLabel; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoTableViewCell.h b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoTableViewCell.h new file mode 100644 index 00000000..32394494 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoTableViewCell.h @@ -0,0 +1,17 @@ +// +// YMMineInfoTableViewCell.h +// YUMI +// +// Created by YUMI on 2021/9/23. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class UserInfoModel; +@interface XPMineUserInfoTableViewCell : UITableViewCell +///用户信息 +@property (nonatomic,strong) UserInfoModel *userInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoTableViewCell.m b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoTableViewCell.m new file mode 100644 index 00000000..efc08894 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/MineInfo/XPMineUserInfoTableViewCell.m @@ -0,0 +1,167 @@ +// +// YMMineInfoTableViewCell.m +// YUMI +// +// Created by YUMI on 2021/9/23. +// + +#import "XPMineUserInfoTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +///Model +#import "UserInfoModel.h" + +@interface XPMineUserInfoTableViewCell () +///背景 +@property (nonatomic,strong) UIView * backView; +///名字 +@property (nonatomic,strong) UILabel *nameLabel; +///sex +@property (nonatomic,strong) UIImageView *sexImageView; +///id +@property (nonatomic,strong) UILabel *idLabel; +///签名 +@property (nonatomic,strong) UILabel *signLabel; +///正在直播中 +@property (nonatomic,strong) UIButton *onlineButton; +@end + +@implementation XPMineUserInfoTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.backView]; + + [self.backView addSubview:self.nameLabel]; + [self.backView addSubview:self.sexImageView]; + [self.backView addSubview:self.idLabel]; + [self.backView addSubview:self.signLabel]; + [self.backView addSubview:self.onlineButton]; +} + +- (void)initSubViewConstraints { + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + make.top.bottom.mas_equalTo(self.contentView); + }]; + + [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backView).offset(15); + make.top.mas_equalTo(self.backView).offset(15); + }]; + + [self.sexImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nameLabel.mas_right).offset(5); + make.centerY.mas_equalTo(self.nameLabel); + }]; + + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nameLabel); + make.top.mas_equalTo(self.nameLabel.mas_bottom).offset(10); + }]; + + [self.signLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nameLabel); + make.top.mas_equalTo(self.idLabel.mas_bottom).offset(18); + }]; + + [self.onlineButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(55, 18)); + make.right.mas_equalTo(self.backView).offset(-15); + make.top.mas_equalTo(self.backView).offset(10); + }]; +} + +#pragma mark - Getters And Setters +- (void)setUserInfo:(UserInfoModel *)userInfo { + _userInfo = userInfo; + if (_userInfo) { + self.nameLabel.text = _userInfo.nick; + self.idLabel.text = [NSString stringWithFormat:@"%@号:%ld",AppName, (long)_userInfo.erbanNo]; + self.signLabel.text = _userInfo.userDesc.length > 0 ? _userInfo.userDesc : YMLocalizedString(@"XPMineUserInfoTableViewCell1"); + NSString * sexStr; + if (_userInfo.gender == GenderType_Male) { + sexStr = @"common_male"; + } else { + sexStr = @"common_female"; + } + self.sexImageView.image = [UIImage imageNamed:sexStr]; + } +} + +- (UIView *)backView { + if (!_backView) { + _backView = [[UIView alloc] init]; + _backView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _backView.layer.masksToBounds = YES; + _backView.layer.cornerRadius = 12; + } + return _backView; +} + +- (UILabel *)nameLabel { + if (!_nameLabel) { + _nameLabel = [[UILabel alloc] init]; + _nameLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:15]; + _nameLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _nameLabel; +} + +- (UIImageView *)sexImageView { + if (!_sexImageView) { + _sexImageView = [[UIImageView alloc] init]; + _sexImageView.userInteractionEnabled = YES; + } + return _sexImageView; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.font = [UIFont systemFontOfSize:11]; + _idLabel.textColor = [DJDKMIMOMColor textThirdColor]; + } + return _idLabel; +} + +- (UILabel *)signLabel { + if (!_signLabel) { + _signLabel = [[UILabel alloc] init]; + _signLabel.font = [UIFont systemFontOfSize:11];; + _signLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _signLabel; +} + +- (UIButton *)onlineButton { + if (!_onlineButton) { + _onlineButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_onlineButton setTitle:YMLocalizedString(@"XPMineUserInfoTableViewCell2") forState:UIControlStateNormal]; + [_onlineButton setImage:[UIImage imageNamed:@"home_search_user_online"] forState:UIControlStateNormal]; + [_onlineButton setTitleColor:[DJDKMIMOMColor appEmphasizeColor] forState:UIControlStateNormal]; + _onlineButton.backgroundColor = [UIColor clearColor]; + _onlineButton.titleLabel.font = [UIFont systemFontOfSize:10]; + _onlineButton.layer.masksToBounds = YES; + _onlineButton.layer.cornerRadius = 18/2; + _onlineButton.layer.borderColor = [DJDKMIMOMColor appEmphasizeColor].CGColor; + _onlineButton.layer.borderWidth = 1; + [_onlineButton addTarget:self action:@selector(onlineButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _onlineButton; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeAtomicCollectiveTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeAtomicCollectiveTabulationRegardElement.h deleted file mode 100644 index df7273df..00000000 --- a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeAtomicCollectiveTabulationRegardElement.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YMMineDataClanTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/4/14. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class CollectiveSpecificAbstractMatrix, YUMIManeAtomicCollectiveTabulationRegardElement; -@protocol FBCManeAtomicCollectiveTabulationViweElementRepresendtation -- (void)fBCManeTowardsoloudspeakerCollectiveTarbsultowardsionViweElement:(YUMIManeAtomicCollectiveTabulationRegardElement *)view didClickFold:(UIButton *)sender; -- (void)fBCManeTowardsoloudspeakerCollectiveTarbsultowardsionViweElement:(YUMIManeAtomicCollectiveTabulationRegardElement *)view didClickEnter:(CollectiveSpecificAbstractMatrix *)collectiveAbstract; -- (void)fBCManeTowardsoloudspeakerCollectiveTarbsultowardsionViweElement:(YUMIManeAtomicCollectiveTabulationRegardElement *)view didClickClanView:(CollectiveSpecificAbstractMatrix *)collectiveAbstract; -- (void)fBCManeTowardsoloudspeakerCollectiveTarbsultowardsionViweElement:(YUMIManeAtomicCollectiveTabulationRegardElement *)view didClickHallView:(CollectiveSpecificAbstractMatrix *)collectiveAbstract; -@end -@interface YUMIManeAtomicCollectiveTabulationRegardElement : UITableViewCell -@property (nonatomic,assign) BOOL isExhibitImportCorridor; - -@property (nonatomic,strong) CollectiveSpecificAbstractMatrix *collectiveAbstract; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeAtomicCollectiveTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeAtomicCollectiveTabulationRegardElement.m deleted file mode 100644 index b2144d07..00000000 --- a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeAtomicCollectiveTabulationRegardElement.m +++ /dev/null @@ -1,341 +0,0 @@ -// -// YMMineDataClanTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/4/14. -// - -#import "YUMIManeAtomicCollectiveTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "UIButton+EnlargeTouchArea.h" -#import "CollectiveSpecificAbstractMatrix.h" - -@interface YUMIManeAtomicCollectiveTabulationRegardElement () -@property (nonatomic,strong) UIView *encourageRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UIView * collectiveRegard; -@property (nonatomic,strong) NetIndicateRegard *collectiveIndicateRegard; -@property (nonatomic,strong) UILabel *collectiveMonicerSequencignation; -@property (nonatomic,strong) UIButton *foldBtuton; -@property (nonatomic,strong) UIView * burlywoodRegard; -@property (nonatomic,strong) UIView * corridorRegard; -@property (nonatomic,strong) NetIndicateRegard *corridorIndicateRegard; -@property (nonatomic,strong) UILabel *corridorMonicerSequencignation; -@property (nonatomic,strong) UIButton *importBtuton; -@property (nonatomic,assign) BOOL isenfold; -@end - -@implementation YUMIManeAtomicCollectiveTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.isenfold = YES; - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.encourageRegard]; - [self.encourageRegard addSubview:self.titleLabel]; - [self.encourageRegard addSubview:self.stackView]; - [self.stackView addArrangedSubview:self.collectiveRegard]; - [self.stackView addArrangedSubview:self.corridorRegard]; - - [self.collectiveRegard addSubview:self.collectiveIndicateRegard]; - [self.collectiveRegard addSubview:self.collectiveMonicerSequencignation]; - [self.collectiveRegard addSubview:self.foldBtuton]; - [self.collectiveRegard addSubview:self.burlywoodRegard]; - - [self.corridorRegard addSubview:self.corridorIndicateRegard]; - [self.corridorRegard addSubview:self.corridorMonicerSequencignation]; - [self.corridorRegard addSubview:self.importBtuton]; - -} - -- (void)initChildLyRestrictions { - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(15); - make.top.mas_equalTo(self.contentView); - make.bottom.mas_equalTo(self.contentView).offset(-15); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageRegard).offset(12); - make.top.mas_equalTo(self.encourageRegard).offset(10); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageRegard).offset(10); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(5); - make.right.mas_equalTo(self.encourageRegard).offset(-10); - }]; - - [self.collectiveRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(68); - }]; - - - [self.collectiveIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(48, 48)); - make.left.centerY.mas_equalTo(self.collectiveRegard); - }]; - - [self.collectiveMonicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.collectiveIndicateRegard.mas_right).offset(10); - make.centerY.mas_equalTo(self.collectiveIndicateRegard.mas_centerY); - }]; - - [self.foldBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(13, 22)); - make.right.mas_equalTo(self.collectiveRegard); - make.centerY.mas_equalTo(self.collectiveRegard); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.left.right.mas_equalTo(self.collectiveRegard); - make.height.mas_equalTo(1); - }]; - - [self.corridorRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(60); - }]; - - [self.corridorIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(40, 40)); - make.centerY.mas_equalTo(self.corridorRegard); - make.left.mas_equalTo(self.corridorRegard); - }]; - - [self.corridorMonicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.corridorRegard); - make.left.mas_equalTo(self.corridorIndicateRegard.mas_right).offset(10); - make.right.mas_lessThanOrEqualTo(self.importBtuton.mas_left).offset(-5); - }]; - - [self.importBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(56, 20)); - make.centerY.mas_equalTo(self.corridorRegard); - make.right.mas_equalTo(self.corridorRegard); - }]; - -} - -#pragma mark - Event Response -- (void)importBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeTowardsoloudspeakerCollectiveTarbsultowardsionViweElement:didClickEnter:)]) { - [self.delegate fBCManeTowardsoloudspeakerCollectiveTarbsultowardsionViweElement:self didClickEnter:self.collectiveAbstract]; - } -} - -- (void)foldBtutonPerformance:(UIButton *)sender{ - sender.selected = !sender.selected; - self.corridorRegard.hidden = !self.corridorRegard.hidden; - [UIView animateWithDuration:0.2 animations:^{ - if (self.foldBtuton.selected) { - self.foldBtuton.transform = CGAffineTransformIdentity; - } else { - self.foldBtuton.transform = CGAffineTransformMakeRotation(M_PI / 2); - } - }]; - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeTowardsoloudspeakerCollectiveTarbsultowardsionViweElement:didClickFold:)]) { - [self.delegate fBCManeTowardsoloudspeakerCollectiveTarbsultowardsionViweElement:self didClickFold:sender]; - } -} - -- (void)didBetowardsCollectiveRegard { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeTowardsoloudspeakerCollectiveTarbsultowardsionViweElement:didClickClanView:)]) { - [self.delegate fBCManeTowardsoloudspeakerCollectiveTarbsultowardsionViweElement:self didClickClanView:self.collectiveAbstract]; - } -} - -- (void)didBetowardsCorridorRegard { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeTowardsoloudspeakerCollectiveTarbsultowardsionViweElement:didClickHallView:)]) { - [self.delegate fBCManeTowardsoloudspeakerCollectiveTarbsultowardsionViweElement:self didClickHallView:self.collectiveAbstract]; - } -} - -#pragma mark - Getters And Setters -- (void)setCollectiveAbstract:(CollectiveSpecificAbstractMatrix *)collectiveAbstract { - _collectiveAbstract = collectiveAbstract; - if (_collectiveAbstract) { - self.collectiveRegard.hidden = _collectiveAbstract.clan.elderUid.length <= 0; - if (self.collectiveAbstract.clan.elderUid.length > 0) { - if (self.collectiveAbstract.hall.ownerUid.length > 0) { - self.titleLabel.text = YMLocalizedString(@"YUMI_Mine_Data_Clan_Table_View_Cell_0"); - self.foldBtuton.hidden = NO; - self.collectiveRegard.hidden = NO; - self.corridorRegard.hidden = self.isenfold ? YES : NO; - } else { - self.titleLabel.text = YMLocalizedString(@"YUMI_Mine_Data_Clan_Table_View_Cell_1"); - self.foldBtuton.hidden = YES; - self.collectiveRegard.hidden = NO; - self.corridorRegard.hidden = YES; - } - } else { - if (self.collectiveAbstract.hall.ownerUid.length > 0) { - self.titleLabel.text = YMLocalizedString(@"YUMI_Mine_Data_Clan_Table_View_Cell_2"); - self.collectiveRegard.hidden = YES; - self.corridorRegard.hidden = NO; - } else { - self.collectiveRegard.hidden = YES; - self.corridorRegard.hidden = YES; - } - } - self.foldBtuton.hidden = YES; - self.collectiveIndicateRegard.imageUrl = _collectiveAbstract.clan.avatar; - self.collectiveMonicerSequencignation.text = _collectiveAbstract.clan.name; - self.corridorIndicateRegard.imageUrl = _collectiveAbstract.hall.ownerAvatar; - self.corridorMonicerSequencignation.text = _collectiveAbstract.hall.hallName; - } -} - - -- (void)setIsExhibitImportCorridor:(BOOL)isExhibitImportCorridor { - _isExhibitImportCorridor = isExhibitImportCorridor; -} - -- (UIView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIView alloc] init]; - _encourageRegard.userInteractionEnabled = YES; - _encourageRegard.layer.cornerRadius = 10; - _encourageRegard.backgroundColor =[DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _encourageRegard.layer.shadowColor = UIColorFromRGB(0xE4E4E4).CGColor; - _encourageRegard.layer.shadowOffset = CGSizeMake(0, 2); - _encourageRegard.layer.shadowRadius = 8; - } - return _encourageRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Mine_Data_Clan_Table_View_Cell_3"); - _titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 0; - } - return _stackView; -} - -- (UIView *)collectiveRegard { - if (!_collectiveRegard) { - _collectiveRegard = [[UIView alloc] init]; - _collectiveRegard.backgroundColor = [UIColor clearColor]; - } - return _collectiveRegard; -} - -- (NetIndicateRegard *)collectiveIndicateRegard { - if (!_collectiveIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _collectiveIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _collectiveIndicateRegard.layer.masksToBounds = YES; - _collectiveIndicateRegard.layer.cornerRadius = 8; - _collectiveIndicateRegard.userInteractionEnabled = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didBetowardsCollectiveRegard)]; - [_collectiveIndicateRegard addGestureRecognizer:tap]; - } - return _collectiveIndicateRegard; -} - -- (UILabel *)collectiveMonicerSequencignation { - if (!_collectiveMonicerSequencignation) { - _collectiveMonicerSequencignation = [[UILabel alloc] init]; - _collectiveMonicerSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _collectiveMonicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _collectiveMonicerSequencignation; -} - - -- (UIButton *)foldBtuton { - if (!_foldBtuton) { - _foldBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_foldBtuton setImage:[UIImage imageNamed:@"yumi_scope_setting_arrow"] forState:UIControlStateNormal]; - [_foldBtuton setImage:[UIImage imageNamed:@"yumi_scope_setting_arrow"] forState:UIControlStateSelected]; - [_foldBtuton addTarget:self action:@selector(foldBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _foldBtuton.transform = CGAffineTransformMakeRotation(M_PI / 2); - _foldBtuton.hidden = YES; - [_foldBtuton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:10]; - } - return _foldBtuton; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [UIColor clearColor]; - } - return _burlywoodRegard; -} - -- (UIView *)corridorRegard { - if (!_corridorRegard) { - _corridorRegard = [[UIView alloc] init]; - _corridorRegard.backgroundColor = [UIColor clearColor]; - _corridorRegard.hidden = NO; - } - return _corridorRegard; -} - -- (NetIndicateRegard *)corridorIndicateRegard { - if (!_corridorIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _corridorIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _corridorIndicateRegard.layer.masksToBounds = YES; - _corridorIndicateRegard.layer.cornerRadius = 8; - _corridorIndicateRegard.userInteractionEnabled = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didBetowardsCorridorRegard)]; - [_corridorIndicateRegard addGestureRecognizer:tap]; - } - return _corridorIndicateRegard; -} - -- (UILabel *)corridorMonicerSequencignation { - if (!_corridorMonicerSequencignation) { - _corridorMonicerSequencignation = [[UILabel alloc] init]; - _corridorMonicerSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _corridorMonicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _corridorMonicerSequencignation; -} - -- (UIButton *)importBtuton { - if (!_importBtuton) { - _importBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_importBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Data_Clan_Table_View_Cell_4") forState:UIControlStateNormal]; - [_importBtuton setTitleColor:UIColorFromRGB(0xFFC000) forState:UIControlStateNormal]; - _importBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - _importBtuton.backgroundColor = UIColorRGBAlpha(0xFFC000, 0.2); - _importBtuton.layer.masksToBounds = YES; - _importBtuton.layer.cornerRadius = 10; - [_importBtuton addTarget:self action:@selector(importBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _importBtuton; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeAtomicPresentAssembletionRegardElement.h b/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeAtomicPresentAssembletionRegardElement.h deleted file mode 100644 index 3e8170cd..00000000 --- a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeAtomicPresentAssembletionRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineDataGiftCollectionViewCell.h -// YUMI -// -// Created by YUMI on 2022/4/14. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ConsumerPresentRamparatAbstractMatrix; -@interface YUMIManeAtomicPresentAssembletionRegardElement : UICollectionViewCell -@property (nonatomic,strong) ConsumerPresentRamparatAbstractMatrix *giftInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeAtomicPresentAssembletionRegardElement.m b/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeAtomicPresentAssembletionRegardElement.m deleted file mode 100644 index 874d9509..00000000 --- a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeAtomicPresentAssembletionRegardElement.m +++ /dev/null @@ -1,85 +0,0 @@ -// -// YMMineDataGiftCollectionViewCell.m -// YUMI -// -// Created by YUMI on 2022/4/14. -// - -#import "YUMIManeAtomicPresentAssembletionRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "UIView+Corner.h" -#import "ConsumerPresentRamparatAbstractMatrix.h" - -@interface YUMIManeAtomicPresentAssembletionRegardElement () -@property (nonatomic,strong) NetIndicateRegard *presentIndicateRegard; -@property (nonatomic,strong) UILabel *presentDigitalSequencignation; -@end - -@implementation YUMIManeAtomicPresentAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method - -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - [self.contentView addSubview:self.presentIndicateRegard]; - [self.contentView addSubview:self.presentDigitalSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.presentIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(47, 47)); - make.top.centerX.mas_equalTo(self.contentView); - }]; - - [self.presentDigitalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.presentIndicateRegard.mas_bottom).offset(3); - make.size.mas_equalTo(CGSizeMake(51, 15)); - }]; -} - -#pragma mark - Getters And Setters -- (void)setGiftInfo:(ConsumerPresentRamparatAbstractMatrix *)giftInfo { - _giftInfo = giftInfo; - if (_giftInfo) { - self.presentIndicateRegard.imageUrl = _giftInfo.picUrl; - self.presentDigitalSequencignation.text = [NSString stringWithFormat:@"X%ld", _giftInfo.reciveCount]; - } -} - -- (NetIndicateRegard *)presentIndicateRegard { - if (!_presentIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _presentIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - } - return _presentIndicateRegard; -} - - -- (UILabel *)presentDigitalSequencignation { - if (!_presentDigitalSequencignation) { - _presentDigitalSequencignation = [[UILabel alloc] init]; - _presentDigitalSequencignation.font = [UIFont systemFontOfSize:10]; - _presentDigitalSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _presentDigitalSequencignation.backgroundColor = UIColorFromRGB(0xF1F1FA); - _presentDigitalSequencignation.textAlignment = NSTextAlignmentCenter; - [_presentDigitalSequencignation setMonopolizeAboutContraryApexMonopolize:2 rightTopCorner:6 bottomLeftCorner:6 bottomRightCorner:2 size:CGSizeMake(51, 15)]; - } - return _presentDigitalSequencignation; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeAtomicPresentTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeAtomicPresentTabulationRegardElement.h deleted file mode 100644 index 7f7d355c..00000000 --- a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeAtomicPresentTabulationRegardElement.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMMineDataGiftTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/4/14. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIManeAtomicPresentTabulationRegardElement, ConsumerPresentRamparatAbstractMatrix; -@protocol FBCManeAtomicPresentTabulationViweElementRepresendtation - -- (void)fBCManeTowardsoloudspeakerPresentTarbsultowardsionViweElement:(YUMIManeAtomicPresentTabulationRegardElement *)view didClickMore:(UIButton *)sender; - -@end -@interface YUMIManeAtomicPresentTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) NSArray *userGiftWall; -@property (nonatomic,strong) NSArray *userLuckyBagGiftWall; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeAtomicPresentTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeAtomicPresentTabulationRegardElement.m deleted file mode 100644 index 76337229..00000000 --- a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeAtomicPresentTabulationRegardElement.m +++ /dev/null @@ -1,216 +0,0 @@ -// -// YMMineDataGiftTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/4/14. -// - -#import "YUMIManeAtomicPresentTabulationRegardElement.h" -#import -#import -#import -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "UIIndicateConstant.h" -#import "UIButton+EnlargeTouchArea.h" -#import "UIImage+Utils.h" -#import "YUMIManeConsumerAbstractPresentRegard.h" - -@interface YUMIManeAtomicPresentTabulationRegardElement () -@property (nonatomic,strong) UIImageView * encourageIndicateRegard; -@property (nonatomic,strong) UIButton *arrowBtuton; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic, strong) NSArray *titles; -@property (nonatomic, strong) JXCategoryTitleView *titleView; -@property (nonatomic, strong) JXCategoryListContainerView *containerView; -@property (nonatomic,strong) YUMIManeConsumerAbstractPresentRegard *ordinaryPresentRegard; -@property (nonatomic,strong) YUMIManeConsumerAbstractPresentRegard *fortunatePresentRegard; -@end - -@implementation YUMIManeAtomicPresentTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.encourageIndicateRegard]; - - [self.encourageIndicateRegard addSubview:self.titleLabel]; - [self.encourageIndicateRegard addSubview:self.arrowBtuton]; - [self.encourageIndicateRegard addSubview:self.titleView]; - [self.encourageIndicateRegard addSubview:self.containerView]; -} - -- (void)initChildLyRestrictions { - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(15); - make.top.mas_equalTo(self.contentView); - make.bottom.mas_equalTo(self.contentView).offset(-15); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageIndicateRegard).offset(12); - make.top.mas_equalTo(self.encourageIndicateRegard).offset(12); - }]; - - [self.arrowBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(13, 22)); - make.centerY.mas_equalTo(self.titleLabel); - make.right.mas_equalTo(self.encourageIndicateRegard).offset(-15); - }]; - - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.encourageIndicateRegard); - make.width.mas_equalTo(100 * 2 + 20); - make.height.mas_equalTo(30); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(23); - }]; - - [self.containerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.encourageIndicateRegard); - make.top.mas_equalTo(self.titleView.mas_bottom).offset(20); - }]; -} - -#pragma mark - JXCategoryViewDelegate -- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { - return self.titles.count; -} - -- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { - if (index == 0) { - return self.ordinaryPresentRegard; - } else { - return self.fortunatePresentRegard; - } -} -#pragma mark - Event Response -- (void)arrowBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeTowardsoloudspeakerPresentTarbsultowardsionViweElement:didClickMore:)]) { - [self.delegate fBCManeTowardsoloudspeakerPresentTarbsultowardsionViweElement:self didClickMore:sender]; - } -} - -#pragma mark - Getters And Setters -- (void)setUserGiftWall:(NSArray *)userGiftWall { - _userGiftWall = userGiftWall; - if (_userGiftWall.count > 12) { - NSMutableArray * array = [_userGiftWall mutableCopy]; - _userGiftWall = [array subarrayWithRange:NSMakeRange(0, 12)]; - } - self.ordinaryPresentRegard.datasource = _userGiftWall; -} - -- (void)setUserLuckyBagGiftWall:(NSArray *)userLuckyBagGiftWall { - _userLuckyBagGiftWall = userLuckyBagGiftWall; - if (_userLuckyBagGiftWall.count > 12) { - NSMutableArray * array = [_userLuckyBagGiftWall mutableCopy]; - _userLuckyBagGiftWall = [array subarrayWithRange:NSMakeRange(0, 12)]; - } - self.fortunatePresentRegard.datasource = _userLuckyBagGiftWall; -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - _encourageIndicateRegard.layer.cornerRadius = 10; - _encourageIndicateRegard.backgroundColor =[DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _encourageIndicateRegard.layer.shadowColor = UIColorFromRGB(0xE4E4E4).CGColor; - _encourageIndicateRegard.layer.shadowOpacity = 1; - _encourageIndicateRegard.layer.shadowOffset = CGSizeMake(0, 2); - _encourageIndicateRegard.layer.shadowRadius = 8; - } - return _encourageIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Mine_Data_Gift_Table_View_Cell_0"); - _titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -- (UIButton *)arrowBtuton { - if (!_arrowBtuton) { - _arrowBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_arrowBtuton setImage:[UIImage imageNamed:@"yumi_scope_setting_arrow"] forState:UIControlStateNormal]; - [_arrowBtuton setImage:[UIImage imageNamed:@"yumi_scope_setting_arrow"] forState:UIControlStateSelected]; - [_arrowBtuton addTarget:self action:@selector(arrowBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_arrowBtuton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:10]; - } - return _arrowBtuton; -} - -- (JXCategoryTitleView *)titleView { - if (!_titleView) { - _titleView = [[JXCategoryTitleView alloc] init]; - _titleView.delegate = self; - _titleView.titles = self.titles; - _titleView.backgroundColor = [UIColor clearColor]; - _titleView.titleColor = [DJDKMIMOMColor instantEssayPrettify]; - _titleView.titleSelectedColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleView.titleFont = [UIFont systemFontOfSize:12]; - _titleView.titleSelectedFont = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; - _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; - _titleView.defaultSelectedIndex = 0; - _titleView.cellSpacing = 20; - _titleView.cellWidthIncrement = 5; - _titleView.cellWidth = 60; - _titleView.listContainer = self.containerView; - - JXCategoryIndicatorImageView *burlywoodRegard = [[JXCategoryIndicatorImageView alloc] init]; - burlywoodRegard.indicatorImageViewSize = CGSizeMake(60, 8); - burlywoodRegard.verticalMargin = 6; - burlywoodRegard.indicatorImageView.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFFC000), UIColorFromRGB(0xFFD15A)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(60, 8)]; - burlywoodRegard.indicatorImageView.layer.masksToBounds = YES; - burlywoodRegard.indicatorImageView.layer.cornerRadius = 6; - _titleView.indicators = @[burlywoodRegard]; - } - return _titleView; -} - -- (JXCategoryListContainerView *)containerView { - if (!_containerView) { - _containerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; - _containerView.defaultSelectedIndex = 0; - _containerView.scrollView.tag = 1009; - } - return _containerView; -} - -- (NSArray *)titles { - if (!_titles) { - _titles = @[@"普通礼物", YMLocalizedString(@"YUMI_Mine_Data_Gift_Table_View_Cell_2")]; - } - return _titles; -} - -- (YUMIManeConsumerAbstractPresentRegard *)ordinaryPresentRegard { - if (!_ordinaryPresentRegard) { - _ordinaryPresentRegard = [[YUMIManeConsumerAbstractPresentRegard alloc] init]; - } - return _ordinaryPresentRegard; -} - -- (YUMIManeConsumerAbstractPresentRegard *)fortunatePresentRegard { - if (!_fortunatePresentRegard) { - _fortunatePresentRegard = [[YUMIManeConsumerAbstractPresentRegard alloc] init]; - } - return _fortunatePresentRegard; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractAlbumAssembletionRegardElement.h b/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractAlbumAssembletionRegardElement.h deleted file mode 100644 index 5477aaa2..00000000 --- a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractAlbumAssembletionRegardElement.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YMMineUserInfoAlbumCollectionViewCell.h -// YUMI -// -// Created by YUMI on 2021/9/24. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ConsumerAppearance, YUMIManeConsumerAbstractAlbumAssembletionRegardElement; - -@protocol FBCManeConsumerAbstractAlbumAssembletionRegardElementRepresendtation -- (void)fBCManeConsumerAbstractBrochureAssembletionRegardElement:(YUMIManeConsumerAbstractAlbumAssembletionRegardElement * )cell didDeleteItem:(ConsumerAppearance *)appearance; -@end - -@interface YUMIManeConsumerAbstractAlbumAssembletionRegardElement : UICollectionViewCell -@property (nonatomic,weak) id delegate; -@property (nonatomic,strong) ConsumerAppearance *appearance; -@property (nonatomic,copy) NSString *accelerateIndicateConstitute; -@property (nonatomic,assign) BOOL isCompile; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractAlbumAssembletionRegardElement.m b/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractAlbumAssembletionRegardElement.m deleted file mode 100644 index 7858bde4..00000000 --- a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractAlbumAssembletionRegardElement.m +++ /dev/null @@ -1,96 +0,0 @@ -// -// YMMineUserInfoAlbumCollectionViewCell.m -// YUMI -// -// Created by YUMI on 2021/9/24. -// - -#import "YUMIManeConsumerAbstractAlbumAssembletionRegardElement.h" -#import -#import "UIButton+EnlargeTouchArea.h" -#import "ConsumerAppearance.h" - -#import "NetIndicateRegard.h" - -@interface YUMIManeConsumerAbstractAlbumAssembletionRegardElement () -@property (nonatomic,strong) NetIndicateRegard *brandIndicateRegard; -@property (nonatomic,strong) UIButton *representationBtuton; -@end - -@implementation YUMIManeConsumerAbstractAlbumAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Response -- (void)representtowardsionBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeConsumerAbstractBrochureAssembletionRegardElement:didDeleteItem:)]) { - [self.delegate fBCManeConsumerAbstractBrochureAssembletionRegardElement:self didDeleteItem:self.appearance]; - } -} -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.brandIndicateRegard]; - [self.contentView addSubview:self.representationBtuton]; -} - -- (void)initChildLyRestrictions { - [self.brandIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.contentView); - }]; - - [self.representationBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(25, 25)); - make.top.right.mas_equalTo(self.contentView).inset(0); - }]; -} - -#pragma mark - Getters And Setters -- (void)setAppearance:(ConsumerAppearance *)appearance { - _appearance = appearance; - if (_appearance) { - self.brandIndicateRegard.imageUrl = appearance.photoUrl; - } -} - -- (void)setIsCompile:(BOOL)isCompile { - _isCompile = isCompile; - self.representationBtuton.hidden = !_isCompile; -} - -- (void)setAccelerateIndicateConstitute:(NSString *)accelerateIndicateConstitute { - _accelerateIndicateConstitute = accelerateIndicateConstitute; - if (_accelerateIndicateConstitute.length > 0) { - self.brandIndicateRegard.image = [UIImage imageNamed:_accelerateIndicateConstitute]; - } -} - -- (NetIndicateRegard *)brandIndicateRegard { - if (!_brandIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - _brandIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _brandIndicateRegard.userInteractionEnabled = YES; - _brandIndicateRegard.layer.cornerRadius = 5; - _brandIndicateRegard.layer.masksToBounds = YES; - _brandIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _brandIndicateRegard; -} - -- (UIButton *)representationBtuton { - if (!_representationBtuton) { - _representationBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_representationBtuton setImage:[UIImage imageNamed:@"yumi_center_user_gen_edit_photo_delete"] forState:UIControlStateNormal]; - [_representationBtuton setImage:[UIImage imageNamed:@"yumi_center_user_gen_edit_photo_delete"] forState:UIControlStateSelected]; - [_representationBtuton addTarget:self action:@selector(representtowardsionBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _representationBtuton; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractCompileTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractCompileTabulationRegardElement.h deleted file mode 100644 index 026f7d5d..00000000 --- a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractCompileTabulationRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineUserInfoEditTableViewCell.h -// YUMI -// -// Created by YUMI on 2021/9/23. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIManeConsumerAbstractCompileMatrix; -@interface YUMIManeConsumerAbstractCompileTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) YUMIManeConsumerAbstractCompileMatrix *itmeMatrix; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractCompileTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractCompileTabulationRegardElement.m deleted file mode 100644 index 274fd932..00000000 --- a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractCompileTabulationRegardElement.m +++ /dev/null @@ -1,301 +0,0 @@ -// -// YMMineUserInfoEditTableViewCell.m -// YUMI -// -// Created by YUMI on 2021/9/23. -// - -#import "YUMIManeConsumerAbstractCompileTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIManeConsumerAbstractCompileMatrix.h" -#import "ConsumerAppearance.h" - -#import "NetIndicateRegard.h" -#import "UIImage+Utils.h" - -@interface YUMIManeConsumerAbstractCompileTabulationRegardElement () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *subChampionSequencignation; -@property (nonatomic,strong) UIImageView *arrowIndicateRegard; -@property (nonatomic,strong) UIStackView *appearancetHierarchyRegard; -@property (nonatomic,strong) NetIndicateRegard *thresholdAppearanceIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *instantAppearanceIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *tertiusAppearanceIndicateRegard; -@property (nonatomic,strong) UIView * partBurlywoodRegard; -@property (nonatomic,strong) NSMutableArray *appearanceRegardGarment; -@end - -@implementation YUMIManeConsumerAbstractCompileTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.stackView]; - [self.contentView addSubview:self.partBurlywoodRegard]; - - [self.stackView addArrangedSubview:self.titleLabel]; - [self.stackView addArrangedSubview:self.intelligenceportraitIndicateRegard]; - [self.stackView addArrangedSubview:self.subChampionSequencignation]; - [self.stackView addArrangedSubview:self.appearancetHierarchyRegard]; - [self.stackView addArrangedSubview:self.arrowIndicateRegard]; - - [self.appearancetHierarchyRegard addArrangedSubview:self.tertiusAppearanceIndicateRegard]; - [self.appearancetHierarchyRegard addArrangedSubview:self.instantAppearanceIndicateRegard]; - [self.appearancetHierarchyRegard addArrangedSubview:self.thresholdAppearanceIndicateRegard]; - - [self.appearanceRegardGarment addObject:self.thresholdAppearanceIndicateRegard]; - [self.appearanceRegardGarment addObject:self.instantAppearanceIndicateRegard]; - [self.appearanceRegardGarment addObject:self.tertiusAppearanceIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.contentView); - make.bottom.mas_equalTo(self.partBurlywoodRegard.mas_top); - make.left.right.mas_equalTo(self.contentView).inset(15); - }]; - - [self.partBurlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(25); - make.bottom.mas_equalTo(self.contentView); - make.height.mas_equalTo(1); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(50, 50)); - }]; - - [self.arrowIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(6, 10)); - }]; - - [self.thresholdAppearanceIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(35); - }]; - - [self.instantAppearanceIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(self.thresholdAppearanceIndicateRegard); - }]; - - [self.tertiusAppearanceIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(self.thresholdAppearanceIndicateRegard); - }]; -} - -- (void)chamberAplictowardsionearanceRegardAboutAplictowardsionearanceGarment:(NSArray *)array { - if (array.count > 3) { - array = [array subarrayWithRange:NSMakeRange(0, 3)]; - } - self.thresholdAppearanceIndicateRegard.hidden = YES; - self.instantAppearanceIndicateRegard.hidden = YES; - self.tertiusAppearanceIndicateRegard.hidden = YES; - for (int i = 0; i < array.count; i++) { - NetIndicateRegard * imageView = [self.appearanceRegardGarment objectAtIndex:i]; - NSString * imageUrl = [array objectAtIndex:i].photoUrl; - if (imageUrl.length > 0) { - imageView.imageUrl = imageUrl; - imageView.hidden = NO; - } - } -} - -- (void)prohibitipositionElementAboutMtowardsrix:(YUMIManeConsumerAbstractCompileMatrix *)model{ - switch (model.type) { - case YUMIManeConsumerAbstractEditGenre_Avatar: - { - self.subChampionSequencignation.hidden = YES; - self.appearancetHierarchyRegard.hidden = YES; - self.intelligenceportraitIndicateRegard.hidden = NO; - if (model.isReview) { - [self.intelligenceportraitIndicateRegard chamberIndictowardseAboutWeebsite:model.avatarUrl completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) { - UIImage * waterImage = [UIImage imageNamed:@"yumi_center_avatar_reviewing"]; - float ratio = waterImage.size.height / waterImage.size.width; - float rectY = image.size.height * (1 - ratio); - self.intelligenceportraitIndicateRegard.image = [UIImage wtowardserIndictowardseAboutIndictowardse:image waterImage:waterImage waterImageRect:CGRectMake(0, rectY, image.size.width, image.size.height * ratio)]; - }]; - } else { - self.intelligenceportraitIndicateRegard.imageUrl = model.avatarUrl; - } - } - break; - case YUMIManeConsumerAbstractEditGenre_Birth: - { - self.subChampionSequencignation.hidden = NO; - self.appearancetHierarchyRegard.hidden = YES; - self.intelligenceportraitIndicateRegard.hidden = YES; - } - break; - case YUMIManeConsumerAbstractEditGenre_Nick: - { - self.subChampionSequencignation.hidden = NO; - self.appearancetHierarchyRegard.hidden = YES; - self.intelligenceportraitIndicateRegard.hidden = YES; - } - break; - case YUMIManeConsumerAbstractEditGenre_UseDes: - { - self.subChampionSequencignation.hidden = NO; - self.appearancetHierarchyRegard.hidden = YES; - self.intelligenceportraitIndicateRegard.hidden = YES; - } - break; - case YUMIManeConsumerAbstractEditGenre_Photo: - { - self.subChampionSequencignation.hidden = YES; - self.appearancetHierarchyRegard.hidden = NO; - self.intelligenceportraitIndicateRegard.hidden = YES; - [self chamberAplictowardsionearanceRegardAboutAplictowardsionearanceGarment:model.photoArray]; - } - break; - - default: - break; - } -} - -#pragma mark - Getters And Setters -- (void)setItmeMatrix:(YUMIManeConsumerAbstractCompileMatrix *)itmeMatrix { - _itmeMatrix = itmeMatrix; - if (_itmeMatrix) { - self.titleLabel.text = _itmeMatrix.title; - self.subChampionSequencignation.text = _itmeMatrix.subTitle; - [self prohibitipositionElementAboutMtowardsrix:itmeMatrix]; - } -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentCenter; - _stackView.spacing = 10; - } - return _stackView; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:14]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - [_titleLabel setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - } - return _titleLabel; -} - -- (UILabel *)subChampionSequencignation { - if (!_subChampionSequencignation) { - _subChampionSequencignation = [[UILabel alloc] init]; - _subChampionSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _subChampionSequencignation.font = [UIFont systemFontOfSize:12.f]; - _subChampionSequencignation.textAlignment = NSTextAlignmentRight; - } - return _subChampionSequencignation; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.userInteractionEnabled = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 25; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - } - return _intelligenceportraitIndicateRegard; -} - -- (UIImageView *)arrowIndicateRegard { - if (!_arrowIndicateRegard) { - _arrowIndicateRegard = [[UIImageView alloc] init]; - _arrowIndicateRegard.userInteractionEnabled = YES; - _arrowIndicateRegard.image = [UIImage imageNamed:@"yumi_center_item_arrow"]; - [_arrowIndicateRegard setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical]; - } - return _arrowIndicateRegard; -} - -- (UIStackView *)appearancetHierarchyRegard { - if (!_appearancetHierarchyRegard) { - _appearancetHierarchyRegard = [[UIStackView alloc] init]; - _appearancetHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _appearancetHierarchyRegard.distribution = UIStackViewDistributionFill; - _appearancetHierarchyRegard.alignment = UIStackViewAlignmentFill; - _appearancetHierarchyRegard.spacing = 10; - } - return _appearancetHierarchyRegard; -} - -- (NetIndicateRegard *)thresholdAppearanceIndicateRegard { - if (!_thresholdAppearanceIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _thresholdAppearanceIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _thresholdAppearanceIndicateRegard.userInteractionEnabled = YES; - _thresholdAppearanceIndicateRegard.layer.masksToBounds = YES; - _thresholdAppearanceIndicateRegard.layer.cornerRadius = 5; - _thresholdAppearanceIndicateRegard.hidden = YES; - } - return _thresholdAppearanceIndicateRegard; -} - -- (NetIndicateRegard *)instantAppearanceIndicateRegard { - if (!_instantAppearanceIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _instantAppearanceIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _instantAppearanceIndicateRegard.userInteractionEnabled = YES; - _instantAppearanceIndicateRegard.layer.masksToBounds = YES; - _instantAppearanceIndicateRegard.layer.cornerRadius = 5; - _instantAppearanceIndicateRegard.hidden = YES; - } - return _instantAppearanceIndicateRegard; -} - -- (NetIndicateRegard *)tertiusAppearanceIndicateRegard { - if (!_tertiusAppearanceIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _tertiusAppearanceIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _tertiusAppearanceIndicateRegard.userInteractionEnabled = YES; - _tertiusAppearanceIndicateRegard.layer.masksToBounds = YES; - _tertiusAppearanceIndicateRegard.layer.cornerRadius = 5; - _tertiusAppearanceIndicateRegard.hidden = YES; - } - return _tertiusAppearanceIndicateRegard; -} - -- (UIView *)partBurlywoodRegard { - if (!_partBurlywoodRegard) { - _partBurlywoodRegard = [[UIView alloc] init]; - _partBurlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _partBurlywoodRegard; -} - - -- (NSMutableArray *)appearanceRegardGarment { - if (!_appearanceRegardGarment) { - _appearanceRegardGarment = [NSMutableArray array]; - } - return _appearanceRegardGarment; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractDispossessAssembletionRegardElement.h b/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractDispossessAssembletionRegardElement.h deleted file mode 100644 index e972fa8b..00000000 --- a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractDispossessAssembletionRegardElement.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMMineUserInfoEmptyCollectionViewCell.h -// YUMI -// -// Created by YUMI on 2022/4/15. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeConsumerAbstractDispossessAssembletionRegardElement : UICollectionViewCell -@property (nonatomic,assign) BOOL isPresentWentirety; -@end - -NS_ASSUME_NONNULL_END - diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractDispossessAssembletionRegardElement.m b/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractDispossessAssembletionRegardElement.m deleted file mode 100644 index 88620f46..00000000 --- a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractDispossessAssembletionRegardElement.m +++ /dev/null @@ -1,80 +0,0 @@ -// -// YMMineUserInfoEmptyCollectionViewCell.m -// YUMI -// -// Created by YUMI on 2022/4/15. -// - -#import "YUMIManeConsumerAbstractDispossessAssembletionRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIIndicateConstant.h" - -@interface YUMIManeConsumerAbstractDispossessAssembletionRegardElement () -@property (nonatomic,strong) UIImageView *dispossessIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@end - -@implementation YUMIManeConsumerAbstractDispossessAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.dispossessIndicateRegard]; - [self.contentView addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.dispossessIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.contentView).offset(150); - make.size.mas_equalTo(CGSizeMake(100, 100)); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.dispossessIndicateRegard.mas_bottom).offset(20); - make.left.right.mas_equalTo(self.contentView); - }]; -} -#pragma mark - Getters And Setters -- (void)setIsPresentWentirety:(BOOL)isPresentWentirety { - _isPresentWentirety = isPresentWentirety; - if (_isPresentWentirety) { - [self.dispossessIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.contentView).offset(10); - }]; - self.titleLabel.font = [UIFont systemFontOfSize:13]; - } -} - -- (UIImageView *)dispossessIndicateRegard { - if (!_dispossessIndicateRegard) { - _dispossessIndicateRegard = [[UIImageView alloc] init]; - _dispossessIndicateRegard.userInteractionEnabled = YES; - _dispossessIndicateRegard.image = [UIIndicateConstant defalutDispossessDepapossessor]; - _dispossessIndicateRegard.layer.masksToBounds = YES; - _dispossessIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _dispossessIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Mine_User_Info_Empty_Collection_View_Cell_0"); - _titleLabel.font = [UIFont systemFontOfSize:16]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _titleLabel; -} -@end diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractPresentRamparatAssembletionRegardElement.h b/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractPresentRamparatAssembletionRegardElement.h deleted file mode 100644 index 717f424d..00000000 --- a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractPresentRamparatAssembletionRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineUserInfoGiftWallCollectionViewCell.h -// YUMI -// -// Created by YUMI on 2022/4/14. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ConsumerPresentRamparatAbstractMatrix; -@interface YUMIManeConsumerAbstractPresentRamparatAssembletionRegardElement : UICollectionViewCell -@property (nonatomic,strong) ConsumerPresentRamparatAbstractMatrix *giftInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractPresentRamparatAssembletionRegardElement.m b/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractPresentRamparatAssembletionRegardElement.m deleted file mode 100644 index ebc14339..00000000 --- a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractPresentRamparatAssembletionRegardElement.m +++ /dev/null @@ -1,149 +0,0 @@ -// -// YMMineUserInfoGiftWallCollectionViewCell.m -// YUMI -// -// Created by YUMI on 2022/4/14. -// - -#import "YUMIManeConsumerAbstractPresentRamparatAssembletionRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "UIView+Corner.h" -#import "ConsumerPresentRamparatAbstractMatrix.h" - -@interface YUMIManeConsumerAbstractPresentRamparatAssembletionRegardElement () -@property (nonatomic,strong) NetIndicateRegard *presentIndicateRegard; -@property (nonatomic,strong) UIButton *digitalBtuton; -@property (nonatomic,strong) UILabel *presentConstituteSequencignation; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UIImageView *bWSttawberryIndicateRegard; -@property (nonatomic,strong) UILabel *presentValencySequencignation; -@end - -@implementation YUMIManeConsumerAbstractPresentRamparatAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - [self.contentView addSubview:self.presentIndicateRegard]; - [self.contentView addSubview:self.digitalBtuton]; - [self.contentView addSubview:self.presentConstituteSequencignation]; - [self.contentView addSubview:self.stackView]; - - [self.stackView addArrangedSubview:self.bWSttawberryIndicateRegard]; - [self.stackView addArrangedSubview:self.presentValencySequencignation]; -} - -- (void)initChildLyRestrictions { - [self.presentIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(5); - make.top.mas_equalTo(self.contentView); - make.height.mas_equalTo(self.presentIndicateRegard.mas_width); - }]; - - [self.digitalBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(55, 15)); - make.centerX.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.presentIndicateRegard.mas_bottom).offset(2); - }]; - - [self.presentConstituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.digitalBtuton.mas_bottom).offset(10); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.presentConstituteSequencignation.mas_bottom).offset(3); - }]; - - [self.bWSttawberryIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(13, 13)); - }]; -} - -#pragma mark - Getters And Setters -- (void)setGiftInfo:(ConsumerPresentRamparatAbstractMatrix *)giftInfo { - _giftInfo = giftInfo; - if (_giftInfo) { - self.presentIndicateRegard.imageUrl = _giftInfo.picUrl; - self.presentConstituteSequencignation.text = _giftInfo.giftName; - self.presentValencySequencignation.text = [NSString stringWithFormat:@"%ld", _giftInfo.giftPrice]; - [self.digitalBtuton setTitle:[NSString stringWithFormat:@"X%ld", _giftInfo.reciveCount] forState:UIControlStateNormal]; - } -} - -- (NetIndicateRegard *)presentIndicateRegard { - if (!_presentIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _presentIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _presentIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _presentIndicateRegard.layer.masksToBounds = YES; - } - return _presentIndicateRegard; -} - -- (UIButton *)digitalBtuton { - if (!_digitalBtuton) { - _digitalBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_digitalBtuton setBackgroundColor:[DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]]; - [_digitalBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateNormal]; - _digitalBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - _digitalBtuton.layer.masksToBounds = YES; - [_digitalBtuton setMonopolizeAboutContraryApexMonopolize:2 rightTopCorner:6 bottomLeftCorner:6 bottomRightCorner:2 size:CGSizeMake(55, 15)]; - } - return _digitalBtuton; -} - -- (UILabel *)presentConstituteSequencignation { - if (!_presentConstituteSequencignation) { - _presentConstituteSequencignation = [[UILabel alloc] init]; - _presentConstituteSequencignation.font = [UIFont systemFontOfSize:13]; - _presentConstituteSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _presentConstituteSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _presentConstituteSequencignation; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 3; - } - return _stackView; -} - -- (UIImageView *)bWSttawberryIndicateRegard { - if (!_bWSttawberryIndicateRegard) { - _bWSttawberryIndicateRegard = [[UIImageView alloc] init]; - _bWSttawberryIndicateRegard.userInteractionEnabled = YES; - _bWSttawberryIndicateRegard.image = [UIImage imageNamed:@"yumi_same_diamond"]; - } - return _bWSttawberryIndicateRegard; -} - -- (UILabel *)presentValencySequencignation { - if (!_presentValencySequencignation) { - _presentValencySequencignation = [[UILabel alloc] init]; - _presentValencySequencignation.font = [UIFont systemFontOfSize:11]; - _presentValencySequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _presentValencySequencignation; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractTabulationRegardElement.h deleted file mode 100644 index 7a1192b9..00000000 --- a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractTabulationRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineInfoTableViewCell.h -// YUMI -// -// Created by YUMI on 2021/9/23. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ConsumerAbstractMatrix; -@interface YUMIManeConsumerAbstractTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractTabulationRegardElement.m deleted file mode 100644 index 13565e93..00000000 --- a/YuMi/Modules/YMMine/View/Cell/MineInfo/YUMIManeConsumerAbstractTabulationRegardElement.m +++ /dev/null @@ -1,158 +0,0 @@ -// -// YMMineInfoTableViewCell.m -// YUMI -// -// Created by YUMI on 2021/9/23. -// - -#import "YUMIManeConsumerAbstractTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "ConsumerAbstractMatrix.h" - -@interface YUMIManeConsumerAbstractTabulationRegardElement () -@property (nonatomic,strong) UIView * encourageRegard; -@property (nonatomic,strong) UILabel *constituteSequencignation; -@property (nonatomic,strong) UIImageView *seaxualityIndicateRegard; -@property (nonatomic,strong) UILabel *idSequencignation; -@property (nonatomic,strong) UILabel *signSequencignation; -@property (nonatomic,strong) UIButton *onlineBtuton; -@end - -@implementation YUMIManeConsumerAbstractTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.encourageRegard]; - - [self.encourageRegard addSubview:self.constituteSequencignation]; - [self.encourageRegard addSubview:self.seaxualityIndicateRegard]; - [self.encourageRegard addSubview:self.idSequencignation]; - [self.encourageRegard addSubview:self.signSequencignation]; - [self.encourageRegard addSubview:self.onlineBtuton]; -} - -- (void)initChildLyRestrictions { - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(15); - make.top.bottom.mas_equalTo(self.contentView); - }]; - - [self.constituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageRegard).offset(15); - make.top.mas_equalTo(self.encourageRegard).offset(15); - }]; - - [self.seaxualityIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.constituteSequencignation.mas_right).offset(5); - make.centerY.mas_equalTo(self.constituteSequencignation); - }]; - - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.constituteSequencignation); - make.top.mas_equalTo(self.constituteSequencignation.mas_bottom).offset(10); - }]; - - [self.signSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.constituteSequencignation); - make.top.mas_equalTo(self.idSequencignation.mas_bottom).offset(18); - }]; - - [self.onlineBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(55, 18)); - make.right.mas_equalTo(self.encourageRegard).offset(-15); - make.top.mas_equalTo(self.encourageRegard).offset(10); - }]; -} - -#pragma mark - Getters And Setters -- (void)setUserInfo:(ConsumerAbstractMatrix *)userInfo { - _userInfo = userInfo; - if (_userInfo) { - self.constituteSequencignation.text = _userInfo.nick; - self.idSequencignation.text = [NSString stringWithFormat:@"%@号:%ld",AppName, (long)_userInfo.erbanNo]; - self.signSequencignation.text = _userInfo.userDesc.length > 0 ? _userInfo.userDesc : YMLocalizedString(@"YUMI_Mine_User_Info_Table_View_Cell_1"); - NSString * sexStr; - if (_userInfo.gender == GenderGenre_Male) { - sexStr = @"common_male"; - } else { - sexStr = @"common_female"; - } - self.seaxualityIndicateRegard.image = [UIImage imageNamed:sexStr]; - } -} - -- (UIView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIView alloc] init]; - _encourageRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _encourageRegard.layer.masksToBounds = YES; - _encourageRegard.layer.cornerRadius = 12; - } - return _encourageRegard; -} - -- (UILabel *)constituteSequencignation { - if (!_constituteSequencignation) { - _constituteSequencignation = [[UILabel alloc] init]; - _constituteSequencignation.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:15]; - _constituteSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _constituteSequencignation; -} - -- (UIImageView *)seaxualityIndicateRegard { - if (!_seaxualityIndicateRegard) { - _seaxualityIndicateRegard = [[UIImageView alloc] init]; - _seaxualityIndicateRegard.userInteractionEnabled = YES; - } - return _seaxualityIndicateRegard; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.font = [UIFont systemFontOfSize:11]; - _idSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - } - return _idSequencignation; -} - -- (UILabel *)signSequencignation { - if (!_signSequencignation) { - _signSequencignation = [[UILabel alloc] init]; - _signSequencignation.font = [UIFont systemFontOfSize:11];; - _signSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _signSequencignation; -} - -- (UIButton *)onlineBtuton { - if (!_onlineBtuton) { - _onlineBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_onlineBtuton setTitle:YMLocalizedString(@"YUMI_Mine_User_Info_Table_View_Cell_2") forState:UIControlStateNormal]; - [_onlineBtuton setImage:[UIImage imageNamed:@"yumi_main_search_user_online"] forState:UIControlStateNormal]; - [_onlineBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionUnderlinePrettify] forState:UIControlStateNormal]; - _onlineBtuton.backgroundColor = [UIColor clearColor]; - _onlineBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - _onlineBtuton.layer.masksToBounds = YES; - _onlineBtuton.layer.cornerRadius = 18/2; - _onlineBtuton.layer.borderColor = [DJDKMIMOMColor aplictowardsionUnderlinePrettify].CGColor; - _onlineBtuton.layer.borderWidth = 1; - [_onlineBtuton addTarget:self action:@selector(onlineBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _onlineBtuton; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/Cell/Recharge/XPMineRechargeTableViewCell.h b/YuMi/Modules/YMMine/View/Cell/Recharge/XPMineRechargeTableViewCell.h new file mode 100644 index 00000000..170ee5b5 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/Recharge/XPMineRechargeTableViewCell.h @@ -0,0 +1,27 @@ +// +// YMMineRechargeTableViewCell.h +// YUMI +// +// Created by YUMI on 2021/9/24. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class RechargeListModel,XPMineRechargeTableViewCell; + +@protocol XPMineRechargeTableViewCellDelegate + +///点击了某个item +- (void)xPMineRechargeTableViewCell:(XPMineRechargeTableViewCell *)cell didSelectItem:(RechargeListModel *)listModel; + +@end + +@interface XPMineRechargeTableViewCell : UITableViewCell +///数据源 +@property (nonatomic,strong) RechargeListModel *listModel; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/Recharge/XPMineRechargeTableViewCell.m b/YuMi/Modules/YMMine/View/Cell/Recharge/XPMineRechargeTableViewCell.m new file mode 100644 index 00000000..9607bc7c --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/Recharge/XPMineRechargeTableViewCell.m @@ -0,0 +1,146 @@ +// +// YMMineRechargeTableViewCell.m +// YUMI +// +// Created by YUMI on 2021/9/24. +// + +#import "XPMineRechargeTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +///Model +#import "RechargeListModel.h" +@interface XPMineRechargeTableViewCell () +///背景 +@property (nonatomic,strong) UIView * backView; +///💎的标志 +@property (nonatomic,strong) UIImageView *coinImageView; +///数量 +@property (nonatomic,strong) UILabel *numberLabel; +///单位 +@property (nonatomic,strong) UILabel *unitLabel; +///充值 +@property (nonatomic,strong) UIButton *rechargeButton; +@end + +@implementation XPMineRechargeTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Response +- (void)rechargeButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineRechargeTableViewCell:didSelectItem:)]) { + [self.delegate xPMineRechargeTableViewCell:self didSelectItem:self.listModel]; + } +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.backView]; + [self.backView addSubview:self.coinImageView]; + [self.backView addSubview:self.numberLabel]; + [self.backView addSubview:self.unitLabel]; + [self.backView addSubview:self.rechargeButton]; +} + +- (void)initSubViewConstraints { + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + make.top.mas_equalTo(self.contentView).offset(15); + make.bottom.mas_equalTo(self.contentView); + }]; + + [self.coinImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(21, 21)); + make.centerY.mas_equalTo(self.backView); + make.left.mas_equalTo(self.backView).offset(19); + }]; + + [self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.coinImageView); + make.left.mas_equalTo(self.coinImageView.mas_right).offset(6); + }]; + + [self.unitLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.numberLabel); + make.left.mas_equalTo(self.numberLabel.mas_right).offset(6); + }]; + + [self.rechargeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(54, 24)); + make.centerY.mas_equalTo(self.backView); + make.right.mas_equalTo(self.backView).offset(-15); + }]; +} +#pragma mark - Getters And Setters +- (void)setListModel:(RechargeListModel *)listModel { + _listModel = listModel; + if (_listModel) { + NSCharacterSet* nonDigits =[[NSCharacterSet decimalDigitCharacterSet] invertedSet]; + int remainSecond = [[_listModel.prodName stringByTrimmingCharactersInSet:nonDigits] intValue]; + self.numberLabel.text = [NSString stringWithFormat:@"%d",remainSecond]; + [self.rechargeButton setTitle:[NSString stringWithFormat:@"¥%@",[_listModel.money stringValue]] forState:UIControlStateNormal]; + } +} + +- (UIView *)backView { + if (!_backView) { + _backView = [[UIView alloc] init]; + _backView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _backView.layer.masksToBounds = YES; + _backView.layer.cornerRadius = 8; + } + return _backView; +} +- (UIImageView *)coinImageView { + if (!_coinImageView) { + _coinImageView = [[UIImageView alloc] init]; + _coinImageView.userInteractionEnabled = YES; + _coinImageView.image = [UIImage imageNamed:@"common_diamond"]; + } + return _coinImageView; +} + +- (UILabel *)numberLabel { + if (!_numberLabel) { + _numberLabel = [[UILabel alloc] init]; + _numberLabel.font = [UIFont fontWithName:@"PingFang-SC-Bold" size:18]; + _numberLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _numberLabel; +} + +- (UILabel *)unitLabel { + if (!_unitLabel) { + _unitLabel = [[UILabel alloc] init]; + _unitLabel.text = YMLocalizedString(@"XPMineRechargeTableViewCell0"); + _unitLabel.font = [UIFont systemFontOfSize:11]; + _unitLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _unitLabel; +} + +- (UIButton *)rechargeButton { + if (!_rechargeButton) { + _rechargeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_rechargeButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + _rechargeButton.titleLabel.font = [UIFont systemFontOfSize:15]; + _rechargeButton.layer.masksToBounds = YES; + _rechargeButton.layer.cornerRadius = 12; + _rechargeButton.layer.borderWidth = 1; + _rechargeButton.layer.borderColor = [DJDKMIMOMColor mainTextColor].CGColor; + [_rechargeButton addTarget:self action:@selector(rechargeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _rechargeButton; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Cell/Recharge/YUMIManeReindictTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Cell/Recharge/YUMIManeReindictTabulationRegardElement.h deleted file mode 100644 index b370420c..00000000 --- a/YuMi/Modules/YMMine/View/Cell/Recharge/YUMIManeReindictTabulationRegardElement.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YMMineRechargeTableViewCell.h -// YUMI -// -// Created by YUMI on 2021/9/24. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ReindictStatementMatrix,YUMIManeReindictTabulationRegardElement; - -@protocol FBCManeReindictTabulationViweElementRepresendtation - -- (void)fBCManeReindictTarbsultowardsionViweElement:(YUMIManeReindictTabulationRegardElement *)cell didSelectItem:(ReindictStatementMatrix *)listMatrix; - -@end - -@interface YUMIManeReindictTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) ReindictStatementMatrix *listMatrix; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/Recharge/YUMIManeReindictTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Cell/Recharge/YUMIManeReindictTabulationRegardElement.m deleted file mode 100644 index 07aa1725..00000000 --- a/YuMi/Modules/YMMine/View/Cell/Recharge/YUMIManeReindictTabulationRegardElement.m +++ /dev/null @@ -1,138 +0,0 @@ -// -// YMMineRechargeTableViewCell.m -// YUMI -// -// Created by YUMI on 2021/9/24. -// - -#import "YUMIManeReindictTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "ReindictStatementMatrix.h" -@interface YUMIManeReindictTabulationRegardElement () -@property (nonatomic,strong) UIView * encourageRegard; -@property (nonatomic,strong) UIImageView *tangerineIndicateRegard; -@property (nonatomic,strong) UILabel *numberLabel; -@property (nonatomic,strong) UILabel *componentsSequencignation; -@property (nonatomic,strong) UIButton *reindictBtuton; -@end - -@implementation YUMIManeReindictTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Response -- (void)reindictBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeReindictTarbsultowardsionViweElement:didSelectItem:)]) { - [self.delegate fBCManeReindictTarbsultowardsionViweElement:self didSelectItem:self.listMatrix]; - } -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.encourageRegard]; - [self.encourageRegard addSubview:self.tangerineIndicateRegard]; - [self.encourageRegard addSubview:self.numberLabel]; - [self.encourageRegard addSubview:self.componentsSequencignation]; - [self.encourageRegard addSubview:self.reindictBtuton]; -} - -- (void)initChildLyRestrictions { - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(15); - make.top.mas_equalTo(self.contentView).offset(15); - make.bottom.mas_equalTo(self.contentView); - }]; - - [self.tangerineIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(21, 21)); - make.centerY.mas_equalTo(self.encourageRegard); - make.left.mas_equalTo(self.encourageRegard).offset(19); - }]; - - [self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.tangerineIndicateRegard); - make.left.mas_equalTo(self.tangerineIndicateRegard.mas_right).offset(6); - }]; - - [self.componentsSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.numberLabel); - make.left.mas_equalTo(self.numberLabel.mas_right).offset(6); - }]; - - [self.reindictBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(54, 24)); - make.centerY.mas_equalTo(self.encourageRegard); - make.right.mas_equalTo(self.encourageRegard).offset(-15); - }]; -} -#pragma mark - Getters And Setters -- (void)setListMatrix:(ReindictStatementMatrix *)listMatrix { - _listMatrix = listMatrix; - if (_listMatrix) { - NSCharacterSet* nonDigits =[[NSCharacterSet decimalDigitCharacterSet] invertedSet]; - int remainSecond = [[_listMatrix.prodName stringByTrimmingCharactersInSet:nonDigits] intValue]; - self.numberLabel.text = [NSString stringWithFormat:@"%d",remainSecond]; - [self.reindictBtuton setTitle:[NSString stringWithFormat:@"¥%@",[_listMatrix.money stringValue]] forState:UIControlStateNormal]; - } -} - -- (UIView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIView alloc] init]; - _encourageRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _encourageRegard.layer.masksToBounds = YES; - _encourageRegard.layer.cornerRadius = 8; - } - return _encourageRegard; -} -- (UIImageView *)tangerineIndicateRegard { - if (!_tangerineIndicateRegard) { - _tangerineIndicateRegard = [[UIImageView alloc] init]; - _tangerineIndicateRegard.userInteractionEnabled = YES; - _tangerineIndicateRegard.image = [UIImage imageNamed:@"yumi_same_diamond"]; - } - return _tangerineIndicateRegard; -} - -- (UILabel *)numberLabel { - if (!_numberLabel) { - _numberLabel = [[UILabel alloc] init]; - _numberLabel.font = [UIFont fontWithName:@"PingFang-SC-Bold" size:18]; - _numberLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _numberLabel; -} - -- (UILabel *)componentsSequencignation { - if (!_componentsSequencignation) { - _componentsSequencignation = [[UILabel alloc] init]; - _componentsSequencignation.text = YMLocalizedString(@"YUMI_Mine_Recharge_Table_View_Cell_0"); - _componentsSequencignation.font = [UIFont systemFontOfSize:11]; - _componentsSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _componentsSequencignation; -} - -- (UIButton *)reindictBtuton { - if (!_reindictBtuton) { - _reindictBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_reindictBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateNormal]; - _reindictBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - _reindictBtuton.layer.masksToBounds = YES; - _reindictBtuton.layer.cornerRadius = 12; - _reindictBtuton.layer.borderWidth = 1; - _reindictBtuton.layer.borderColor = [DJDKMIMOMColor mainEssayPrettify].CGColor; - [_reindictBtuton addTarget:self action:@selector(reindictBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _reindictBtuton; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Cell/Visitor/XPMineVisitorEmptyTableViewCell.h b/YuMi/Modules/YMMine/View/Cell/Visitor/XPMineVisitorEmptyTableViewCell.h new file mode 100644 index 00000000..9af51910 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/Visitor/XPMineVisitorEmptyTableViewCell.h @@ -0,0 +1,19 @@ +// +// YMMineVisitorEmptyTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/2/22. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineVisitorEmptyTableViewCell : UITableViewCell + +///空白的文字 +@property (nonatomic,copy) NSString *emptyTitle; +@property (nonatomic,strong, readonly) UIImageView *emptyImageView; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/Visitor/XPMineVisitorEmptyTableViewCell.m b/YuMi/Modules/YMMine/View/Cell/Visitor/XPMineVisitorEmptyTableViewCell.m new file mode 100644 index 00000000..6854acd5 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/Visitor/XPMineVisitorEmptyTableViewCell.m @@ -0,0 +1,82 @@ +// +// YMMineVisitorEmptyTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/2/22. +// + +#import "XPMineVisitorEmptyTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImageConstant.h" + +@interface XPMineVisitorEmptyTableViewCell () +@property (nonatomic,strong) UIImageView *emptyImageView; +@property (nonatomic,strong) UILabel *titleLabel; +@end + + +@implementation XPMineVisitorEmptyTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.emptyImageView]; + [self.contentView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.emptyImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.contentView).offset(250); + make.size.mas_equalTo(CGSizeMake(100, 100)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.emptyImageView.mas_bottom).offset(20); + make.left.right.mas_equalTo(self.contentView); + }]; +} +#pragma mark - Getters And Setters +- (void)setEmptyTitle:(NSString *)emptyTitle { + _emptyTitle = emptyTitle; + if (_emptyTitle.length > 0) { + self.titleLabel.text = _emptyTitle; + } +} + +- (UIImageView *)emptyImageView { + if (!_emptyImageView) { + _emptyImageView = [[UIImageView alloc] init]; + _emptyImageView.userInteractionEnabled = YES; + _emptyImageView.image = [UIImageConstant defalutEmptyPlaceholder]; + _emptyImageView.layer.masksToBounds = YES; + _emptyImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _emptyImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPMineVisitorEmptyTableViewCell0"); + _titleLabel.numberOfLines = 2; + _titleLabel.font = [UIFont systemFontOfSize:16]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Cell/Visitor/XPMineVisitorTableViewCell.h b/YuMi/Modules/YMMine/View/Cell/Visitor/XPMineVisitorTableViewCell.h new file mode 100644 index 00000000..f5a2855d --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/Visitor/XPMineVisitorTableViewCell.h @@ -0,0 +1,34 @@ +// +// YMMineVisitorTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/1/26. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPMineVisitorTableViewCell, XPMineVisitorItemModel; + +@protocol XPMineVisitorTableViewCellDelegate + +///点击了私聊 +- (void)onChatClick:(XPMineVisitorTableViewCell *)cell; + +///点击了头像 +- (void)onAvatarClick:(XPMineVisitorTableViewCell *)cell; + +@end + + +@interface XPMineVisitorTableViewCell : UITableViewCell + +@property (nonatomic, assign) BOOL isFirstItem; +@property (nonatomic, assign) BOOL isLastItem; +@property (nonatomic, strong) XPMineVisitorItemModel *item; + +@property (nonatomic, weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/Visitor/XPMineVisitorTableViewCell.m b/YuMi/Modules/YMMine/View/Cell/Visitor/XPMineVisitorTableViewCell.m new file mode 100644 index 00000000..c0d2ef97 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/Visitor/XPMineVisitorTableViewCell.m @@ -0,0 +1,260 @@ +// +// YMMineVisitorTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/1/26. +// + +#import "XPMineVisitorTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "XPMineVisitorItemModel.h" + +@interface XPMineVisitorTableViewCell() + +@property (nonatomic, strong) UIView *bgView; +@property (nonatomic ,strong) NetImageView *avaterImgView; +@property (nonatomic, strong) UIImageView *genderImageView; +@property (nonatomic, strong) UILabel *nickLabel; +@property (nonatomic ,strong) UILabel *memberIdLabel; +@property (nonatomic ,strong) UIButton *tagPic; +@property (nonatomic ,strong) UILabel *timeLabel; +@property (nonatomic, strong) UIView *lineView; + +@end + +@implementation XPMineVisitorTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self setUpUI]; + [self setUpConstraints]; + } + return self; +} + +- (void)drawRect:(CGRect)rect { + if (self.isLastItem && self.isFirstItem) { + UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:self.bgView.bounds byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight | UIRectCornerBottomLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(12, 12)]; + CAShapeLayer *maskLayer = [CAShapeLayer layer]; + maskLayer.path = path.CGPath; + self.bgView.layer.mask = maskLayer; + } else if (self.isFirstItem) { + UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:self.bgView.bounds byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)]; + CAShapeLayer *maskLayer = [CAShapeLayer layer]; + maskLayer.path = path.CGPath; + self.bgView.layer.mask = maskLayer; + } else if (self.isLastItem) { + UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:self.bgView.bounds byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(12, 12)]; + CAShapeLayer *maskLayer = [CAShapeLayer layer]; + maskLayer.path = path.CGPath; + self.bgView.layer.mask = maskLayer; + } else { + UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:self.bgView.bounds byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(0, 0)]; + CAShapeLayer *maskLayer = [CAShapeLayer layer]; + maskLayer.path = path.CGPath; + self.bgView.layer.mask = maskLayer; + } +} + +- (void)layoutSubviews { + [super layoutSubviews]; + [self updateBgViewConstraints]; +} + +#pragma mark - lifeCycle +- (void)setUpUI { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.bgView]; + [self.bgView addSubview:self.avaterImgView]; + [self.bgView addSubview:self.nickLabel]; + [self.bgView addSubview:self.genderImageView]; + [self.bgView addSubview:self.memberIdLabel]; + [self.bgView addSubview:self.tagPic]; + [self.bgView addSubview:self.timeLabel]; + [self.bgView addSubview:self.lineView]; + + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onCliekAvatar:)]; + [self.avaterImgView addGestureRecognizer:tap]; +} + +#pragma mark - Constraints +- (void)setUpConstraints { + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(0); + make.right.mas_equalTo(-15); + make.left.mas_equalTo(15); + make.height.mas_equalTo(70); + make.bottom.mas_equalTo(0); + }]; + [self.avaterImgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(15); + make.width.height.mas_equalTo(40); + make.centerY.mas_equalTo(self.bgView.mas_centerY); + }]; + + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avaterImgView.mas_right).mas_offset(10); + make.bottom.mas_equalTo(self.avaterImgView.mas_centerY).mas_offset(-4); + }]; + [self.genderImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.nickLabel.mas_centerY); + make.width.height.mas_equalTo(14); + make.left.mas_equalTo(self.nickLabel.mas_right).mas_offset(5); + make.right.mas_lessThanOrEqualTo(self.tagPic.mas_left).mas_offset(-5); + }]; + + [self.tagPic mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.timeLabel.mas_top).mas_offset((-1)); + make.right.mas_equalTo(-15); + make.width.height.mas_equalTo(22); + }]; + + [self.memberIdLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.avaterImgView.mas_centerY).mas_offset(4); + make.left.mas_equalTo(self.nickLabel); + }]; + + [self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-15); + make.centerY.mas_equalTo(self.memberIdLabel.mas_centerY); + make.height.mas_equalTo(11); + }]; + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(0); + make.left.mas_equalTo(self.avaterImgView); + make.right.mas_equalTo(-15); + make.height.mas_equalTo(0.5); + }]; +} + +- (void)updateBgViewConstraints { + if (self.isFirstItem) { + [self.bgView mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(10); + make.right.mas_equalTo(-15); + make.left.mas_equalTo(15); + make.height.mas_equalTo(70); + make.bottom.mas_equalTo(0); + }]; + } else { + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(0); + make.right.mas_equalTo(-15); + make.left.mas_equalTo(15); + make.height.mas_equalTo(70); + make.bottom.mas_equalTo(0); + }]; + } +} + +#pragma mark - event +- (void)onChatButtonClick:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(onChatClick:)]) { + [self.delegate onChatClick:self]; + } +} + +- (void)onCliekAvatar:(UITapGestureRecognizer *)ges { + if (self.delegate && [self.delegate respondsToSelector:@selector(onAvatarClick:)]) { + [self.delegate onAvatarClick:self]; + } +} + +/** 最后一个数据 配置圆角 */ +- (void)setIsFirstItem:(BOOL)isFirstItem{ + _isFirstItem = isFirstItem; +} + +- (void)setIsLastItem:(BOOL)isLastItem { + _isLastItem = isLastItem; +} + +- (void)setItem:(XPMineVisitorItemModel *)item { + _item = item; + self.nickLabel.text = item.nick; + self.avaterImgView.imageUrl = item.avatar; + self.memberIdLabel.text = [NSString stringWithFormat:@"ID:%zd", item.erbanNo]; + self.timeLabel.text = item.visitTimeDesc; + self.genderImageView.image = [UIImage imageNamed:item.gender == 1 ? @"common_male" : @"common_female"]; +} + +- (NetImageView *)avaterImgView { + if (!_avaterImgView) { + _avaterImgView = [[NetImageView alloc] init]; + _avaterImgView.contentMode = UIViewContentModeScaleAspectFit; + _avaterImgView.layer.cornerRadius = 20; + _avaterImgView.layer.masksToBounds = YES; + _avaterImgView.userInteractionEnabled = YES; + } + return _avaterImgView; +} + +- (UIView *)bgView { + if (!_bgView) { + _bgView = [[UIView alloc] init]; + _bgView.backgroundColor = UIColorFromRGB(0xFFFFFF); + } + return _bgView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.textColor = UIColorFromRGB(0x333333); + _nickLabel.font = [UIFont systemFontOfSize:13]; + _nickLabel.text = YMLocalizedString(@"XPMineVisitorTableViewCell0"); + } + return _nickLabel; +} + +- (UIImageView *)genderImageView { + if (!_genderImageView) { + _genderImageView = [[UIImageView alloc] init]; + _genderImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _genderImageView; +} + +- (UILabel *)memberIdLabel { + if (!_memberIdLabel) { + _memberIdLabel = [[UILabel alloc] init]; + _memberIdLabel.textColor = UIColorFromRGB(0x999999); + _memberIdLabel.font = [UIFont systemFontOfSize:13]; + _memberIdLabel.text = @""; + } + return _memberIdLabel; +} + +- (UIButton *)tagPic { + if (!_tagPic) { + _tagPic = [[UIButton alloc] init]; + [_tagPic setImage:[UIImage imageNamed:@"visitor_record_letter"] forState:UIControlStateNormal]; + [_tagPic addTarget:self action:@selector(onChatButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + } + return _tagPic; +} + +- (UILabel *)timeLabel { + if (!_timeLabel) { + _timeLabel = [[UILabel alloc] init]; + _timeLabel.text = @"0"; + _timeLabel.textColor = UIColorFromRGB(0x999999); + _timeLabel.font = [UIFont boldSystemFontOfSize:10]; + } + return _timeLabel; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = UIColorFromRGB(0xf5f5f5); + } + return _lineView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Cell/Visitor/YUMIManeVacationerDispossessTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Cell/Visitor/YUMIManeVacationerDispossessTabulationRegardElement.h deleted file mode 100644 index dfde3834..00000000 --- a/YuMi/Modules/YMMine/View/Cell/Visitor/YUMIManeVacationerDispossessTabulationRegardElement.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMMineVisitorEmptyTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/2/22. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeVacationerDispossessTabulationRegardElement : UITableViewCell - -@property (nonatomic,copy) NSString *emptyTitle; -@property (nonatomic,strong, readonly) UIImageView *dispossessIndicateRegard; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/Visitor/YUMIManeVacationerDispossessTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Cell/Visitor/YUMIManeVacationerDispossessTabulationRegardElement.m deleted file mode 100644 index 7d573ac2..00000000 --- a/YuMi/Modules/YMMine/View/Cell/Visitor/YUMIManeVacationerDispossessTabulationRegardElement.m +++ /dev/null @@ -1,80 +0,0 @@ -// -// YMMineVisitorEmptyTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/2/22. -// - -#import "YUMIManeVacationerDispossessTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIIndicateConstant.h" - -@interface YUMIManeVacationerDispossessTabulationRegardElement () -@property (nonatomic,strong) UIImageView *dispossessIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@end - - -@implementation YUMIManeVacationerDispossessTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.dispossessIndicateRegard]; - [self.contentView addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.dispossessIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.contentView).offset(250); - make.size.mas_equalTo(CGSizeMake(100, 100)); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.dispossessIndicateRegard.mas_bottom).offset(20); - make.left.right.mas_equalTo(self.contentView); - }]; -} -#pragma mark - Getters And Setters -- (void)setEmptyTitle:(NSString *)emptyTitle { - _emptyTitle = emptyTitle; - if (_emptyTitle.length > 0) { - self.titleLabel.text = _emptyTitle; - } -} - -- (UIImageView *)dispossessIndicateRegard { - if (!_dispossessIndicateRegard) { - _dispossessIndicateRegard = [[UIImageView alloc] init]; - _dispossessIndicateRegard.userInteractionEnabled = YES; - _dispossessIndicateRegard.image = [UIIndicateConstant defalutDispossessDepapossessor]; - _dispossessIndicateRegard.layer.masksToBounds = YES; - _dispossessIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _dispossessIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Mine_Visitor_Empty_Table_View_Cell_0"); - _titleLabel.numberOfLines = 2; - _titleLabel.font = [UIFont systemFontOfSize:16]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Cell/Visitor/YUMIManeVacationerTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Cell/Visitor/YUMIManeVacationerTabulationRegardElement.h deleted file mode 100644 index 4257bdba..00000000 --- a/YuMi/Modules/YMMine/View/Cell/Visitor/YUMIManeVacationerTabulationRegardElement.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// YMMineVisitorTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/1/26. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIManeVacationerTabulationRegardElement, YUMIManeVacationerProvisionMatrix; - -@protocol FBCManeVisitorTabulationViweElementRepresendtation - -- (void)onChinwagTicktack:(YUMIManeVacationerTabulationRegardElement *)cell; - -- (void)onIntelligenceportraitTicktack:(YUMIManeVacationerTabulationRegardElement *)cell; - -@end - - -@interface YUMIManeVacationerTabulationRegardElement : UITableViewCell - -@property (nonatomic, assign) BOOL isThresholdProvision; -@property (nonatomic, assign) BOOL isRecentProvision; -@property (nonatomic, strong) YUMIManeVacationerProvisionMatrix *item; - -@property (nonatomic, weak) id delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/Visitor/YUMIManeVacationerTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Cell/Visitor/YUMIManeVacationerTabulationRegardElement.m deleted file mode 100644 index c859ad57..00000000 --- a/YuMi/Modules/YMMine/View/Cell/Visitor/YUMIManeVacationerTabulationRegardElement.m +++ /dev/null @@ -1,258 +0,0 @@ -// -// YMMineVisitorTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/1/26. -// - -#import "YUMIManeVacationerTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "YUMIManeVacationerProvisionMatrix.h" - -@interface YUMIManeVacationerTabulationRegardElement() - -@property (nonatomic, strong) UIView *backgroundRegard; -@property (nonatomic ,strong) NetIndicateRegard *avaterIndiRegard; -@property (nonatomic, strong) UIImageView *genderIndicateRegard; -@property (nonatomic, strong) UILabel *monicerSequencignation; -@property (nonatomic ,strong) UILabel *componentIdSequencignation; -@property (nonatomic ,strong) UIButton *coupleGHPiic; -@property (nonatomic ,strong) UILabel *intratemporalSequencignation; -@property (nonatomic, strong) UIView *burlywoodRegard; - -@end - -@implementation YUMIManeVacationerTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self setUpwardsUI]; - [self setUpwardsRestrictions]; - } - return self; -} - -- (void)drawRect:(CGRect)rect { - if (self.isRecentProvision && self.isThresholdProvision) { - UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:self.backgroundRegard.bounds byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight | UIRectCornerBottomLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(12, 12)]; - CAShapeLayer *maskLayer = [CAShapeLayer layer]; - maskLayer.path = path.CGPath; - self.backgroundRegard.layer.mask = maskLayer; - } else if (self.isThresholdProvision) { - UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:self.backgroundRegard.bounds byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)]; - CAShapeLayer *maskLayer = [CAShapeLayer layer]; - maskLayer.path = path.CGPath; - self.backgroundRegard.layer.mask = maskLayer; - } else if (self.isRecentProvision) { - UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:self.backgroundRegard.bounds byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(12, 12)]; - CAShapeLayer *maskLayer = [CAShapeLayer layer]; - maskLayer.path = path.CGPath; - self.backgroundRegard.layer.mask = maskLayer; - } else { - UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:self.backgroundRegard.bounds byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(0, 0)]; - CAShapeLayer *maskLayer = [CAShapeLayer layer]; - maskLayer.path = path.CGPath; - self.backgroundRegard.layer.mask = maskLayer; - } -} - -- (void)layoutSubviews { - [super layoutSubviews]; - [self refurbishBackgroundRegardRestrictions]; -} - -#pragma mark - lifeCycle -- (void)setUpwardsUI { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.backgroundRegard]; - [self.backgroundRegard addSubview:self.avaterIndiRegard]; - [self.backgroundRegard addSubview:self.monicerSequencignation]; - [self.backgroundRegard addSubview:self.genderIndicateRegard]; - [self.backgroundRegard addSubview:self.componentIdSequencignation]; - [self.backgroundRegard addSubview:self.coupleGHPiic]; - [self.backgroundRegard addSubview:self.intratemporalSequencignation]; - [self.backgroundRegard addSubview:self.burlywoodRegard]; - - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onCliekIntelligenceportrait:)]; - [self.avaterIndiRegard addGestureRecognizer:tap]; -} - -#pragma mark - Constraints -- (void)setUpwardsRestrictions { - [self.backgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(0); - make.right.mas_equalTo(-15); - make.left.mas_equalTo(15); - make.height.mas_equalTo(70); - make.bottom.mas_equalTo(0); - }]; - [self.avaterIndiRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(15); - make.width.height.mas_equalTo(40); - make.centerY.mas_equalTo(self.backgroundRegard.mas_centerY); - }]; - - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.avaterIndiRegard.mas_right).mas_offset(10); - make.bottom.mas_equalTo(self.avaterIndiRegard.mas_centerY).mas_offset(-4); - }]; - [self.genderIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.monicerSequencignation.mas_centerY); - make.width.height.mas_equalTo(14); - make.left.mas_equalTo(self.monicerSequencignation.mas_right).mas_offset(5); - make.right.mas_lessThanOrEqualTo(self.coupleGHPiic.mas_left).mas_offset(-5); - }]; - - [self.coupleGHPiic mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.intratemporalSequencignation.mas_top).mas_offset((-1)); - make.right.mas_equalTo(-15); - make.width.height.mas_equalTo(22); - }]; - - [self.componentIdSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.avaterIndiRegard.mas_centerY).mas_offset(4); - make.left.mas_equalTo(self.monicerSequencignation); - }]; - - [self.intratemporalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-15); - make.centerY.mas_equalTo(self.componentIdSequencignation.mas_centerY); - make.height.mas_equalTo(11); - }]; - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(0); - make.left.mas_equalTo(self.avaterIndiRegard); - make.right.mas_equalTo(-15); - make.height.mas_equalTo(0.5); - }]; -} - -- (void)refurbishBackgroundRegardRestrictions { - if (self.isThresholdProvision) { - [self.backgroundRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(10); - make.right.mas_equalTo(-15); - make.left.mas_equalTo(15); - make.height.mas_equalTo(70); - make.bottom.mas_equalTo(0); - }]; - } else { - [self.backgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(0); - make.right.mas_equalTo(-15); - make.left.mas_equalTo(15); - make.height.mas_equalTo(70); - make.bottom.mas_equalTo(0); - }]; - } -} - -#pragma mark - event -- (void)onChinwagBtutonTicktack:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(onChinwagTicktack:)]) { - [self.delegate onChinwagTicktack:self]; - } -} - -- (void)onCliekIntelligenceportrait:(UITapGestureRecognizer *)ges { - if (self.delegate && [self.delegate respondsToSelector:@selector(onIntelligenceportraitTicktack:)]) { - [self.delegate onIntelligenceportraitTicktack:self]; - } -} - - -- (void)setIsThresholdProvision:(BOOL)isThresholdProvision{ - _isThresholdProvision = isThresholdProvision; -} - -- (void)setIsRecentProvision:(BOOL)isRecentProvision { - _isRecentProvision = isRecentProvision; -} - -- (void)setItem:(YUMIManeVacationerProvisionMatrix *)item { - _item = item; - self.monicerSequencignation.text = item.nick; - self.avaterIndiRegard.imageUrl = item.avatar; - self.componentIdSequencignation.text = [NSString stringWithFormat:@"ID:%zd", item.erbanNo]; - self.intratemporalSequencignation.text = item.visitTimeDesc; - self.genderIndicateRegard.image = [UIImage imageNamed:item.gender == 1 ? @"yumi_same_male" : @"yumi_same_female"]; -} - -- (NetIndicateRegard *)avaterIndiRegard { - if (!_avaterIndiRegard) { - _avaterIndiRegard = [[NetIndicateRegard alloc] init]; - _avaterIndiRegard.contentMode = UIViewContentModeScaleAspectFit; - _avaterIndiRegard.layer.cornerRadius = 20; - _avaterIndiRegard.layer.masksToBounds = YES; - _avaterIndiRegard.userInteractionEnabled = YES; - } - return _avaterIndiRegard; -} - -- (UIView *)backgroundRegard { - if (!_backgroundRegard) { - _backgroundRegard = [[UIView alloc] init]; - _backgroundRegard.backgroundColor = UIColorFromRGB(0xFFFFFF); - } - return _backgroundRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.textColor = UIColorFromRGB(0x333333); - _monicerSequencignation.font = [UIFont systemFontOfSize:13]; - _monicerSequencignation.text = YMLocalizedString(@"YUMI_Mine_Visitor_Table_View_Cell_0"); - } - return _monicerSequencignation; -} - -- (UIImageView *)genderIndicateRegard { - if (!_genderIndicateRegard) { - _genderIndicateRegard = [[UIImageView alloc] init]; - _genderIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _genderIndicateRegard; -} - -- (UILabel *)componentIdSequencignation { - if (!_componentIdSequencignation) { - _componentIdSequencignation = [[UILabel alloc] init]; - _componentIdSequencignation.textColor = UIColorFromRGB(0x999999); - _componentIdSequencignation.font = [UIFont systemFontOfSize:13]; - _componentIdSequencignation.text = @""; - } - return _componentIdSequencignation; -} - -- (UIButton *)coupleGHPiic { - if (!_coupleGHPiic) { - _coupleGHPiic = [[UIButton alloc] init]; - [_coupleGHPiic setImage:[UIImage imageNamed:@"yumi_visitor_record_letter"] forState:UIControlStateNormal]; - [_coupleGHPiic addTarget:self action:@selector(onChinwagBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - } - return _coupleGHPiic; -} - -- (UILabel *)intratemporalSequencignation { - if (!_intratemporalSequencignation) { - _intratemporalSequencignation = [[UILabel alloc] init]; - _intratemporalSequencignation.text = @"0"; - _intratemporalSequencignation.textColor = UIColorFromRGB(0x999999); - _intratemporalSequencignation.font = [UIFont boldSystemFontOfSize:10]; - } - return _intratemporalSequencignation; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = UIColorFromRGB(0xf5f5f5); - } - return _burlywoodRegard; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Cell/XPMineBlackListTableViewCell.h b/YuMi/Modules/YMMine/View/Cell/XPMineBlackListTableViewCell.h new file mode 100644 index 00000000..9fe9d3c9 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/XPMineBlackListTableViewCell.h @@ -0,0 +1,16 @@ +// +// YMMineBlackListTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/4/25. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class UserInfoModel; +@interface XPMineBlackListTableViewCell : UITableViewCell +@property (nonatomic,strong) UserInfoModel *userInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/XPMineBlackListTableViewCell.m b/YuMi/Modules/YMMine/View/Cell/XPMineBlackListTableViewCell.m new file mode 100644 index 00000000..da362ff1 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/XPMineBlackListTableViewCell.m @@ -0,0 +1,84 @@ +// +// YMMineBlackListTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/4/25. +// + +#import "XPMineBlackListTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +///Model +#import "UserInfoModel.h" + +@interface XPMineBlackListTableViewCell () +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; + +@end + +@implementation XPMineBlackListTableViewCell +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.nickLabel]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(40, 40)); + make.centerY.mas_equalTo(self.contentView); + make.left.mas_equalTo(self.contentView).offset(15); + }]; + + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(10); + make.right.mas_lessThanOrEqualTo(self.contentView).offset(-5); + make.centerY.mas_equalTo(self.contentView); + }]; +} +#pragma mark - Getters And Setters +- (void)setUserInfo:(UserInfoModel *)userInfo { + _userInfo = userInfo; + if (_userInfo) { + self.avatarImageView.imageUrl = _userInfo.avatar; + self.nickLabel.text = _userInfo.nick; + } +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 20; + } + return _avatarImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + _nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _nickLabel; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Cell/XPMineHeadFunctionItemLayout.h b/YuMi/Modules/YMMine/View/Cell/XPMineHeadFunctionItemLayout.h new file mode 100644 index 00000000..50abcd9c --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/XPMineHeadFunctionItemLayout.h @@ -0,0 +1,16 @@ +// +// YMMineHeadFunctionItemLayout.h +// YUMI +// +// Created by YUMI on 2022/8/4. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineHeadFunctionItemLayout : UICollectionViewFlowLayout + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/XPMineHeadFunctionItemLayout.m b/YuMi/Modules/YMMine/View/Cell/XPMineHeadFunctionItemLayout.m new file mode 100644 index 00000000..dd66c235 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/XPMineHeadFunctionItemLayout.m @@ -0,0 +1,218 @@ +// +// YMMineHeadFunctionItemLayout.m +// YUMI +// +// Created by YUMI on 2022/8/4. +// + +#import "XPMineHeadFunctionItemLayout.h" + +@interface XPMineHeadFunctionItemLayout () +@property (nonatomic, copy) NSMutableDictionary *sectionDic; +@property (nonatomic, strong) NSMutableArray *allAttributes; +@end + +@implementation XPMineHeadFunctionItemLayout + +#pragma mark - life cycle +- (instancetype)init { + self = [super init]; + if (self) { + self.scrollDirection = UICollectionViewScrollDirectionHorizontal; + } + return self; +} + +#pragma mark - overload + +- (void)prepareLayout { + + [super prepareLayout]; + + _sectionDic = [NSMutableDictionary dictionary]; + self.allAttributes = [NSMutableArray array]; + //获取section的数量 + NSUInteger section = [self.collectionView numberOfSections]; + + for (int sec = 0; sec < section; sec++) { + //获取每个section的cell个数 + NSUInteger count = [self.collectionView numberOfItemsInSection:sec]; + + for (NSUInteger item = 0; item *)layoutAttributesForElementsInRect:(CGRect)rect { + + return self.allAttributes; +} + +#pragma mark - private method + +- (void)applyLayoutAttributes:(UICollectionViewLayoutAttributes *)attributes { + + + if(attributes.representedElementKind != nil){ + return; + } + CGFloat minLine = self.minimumLineSpacing; + CGFloat minSpacing = self.minimumInteritemSpacing; + + //attributes 的宽度 + CGFloat itemW = attributes.frame.size.width; + //attributes 的高度 + CGFloat itemH = attributes.frame.size.height; + UIEdgeInsets sectionInsets = self.sectionInset; + //collectionView 的宽度 + CGFloat width = self.collectionView.frame.size.width; + //collectionView 的高度 + CGFloat height = self.collectionView.frame.size.height; + //每个attributes的下标值 从0开始 + NSInteger itemIndex = attributes.indexPath.item; + + CGFloat stride = (self.scrollDirection == UICollectionViewScrollDirectionHorizontal) ? width : height; + + + //获取现在的attributes是第几组 + NSInteger section = attributes.indexPath.section; + //获取每个section的item的个数 + NSInteger itemCount = [self.collectionView numberOfItemsInSection:section]; + + + CGFloat offset = section * stride; + + //计算x方向item个数 + NSInteger xCount = (width / itemW); + //计算y方向item个数 + NSInteger yCount = (height / itemH); + //计算一页总个数 + NSInteger allCount = (xCount * yCount); + //获取每个section的页数,从0开始 + NSInteger page = itemIndex / allCount; + + //余数,用来计算item的x的偏移量 + NSInteger remain = (itemIndex % xCount); + //取商,用来计算item的y的偏移量 + NSInteger merchant = (itemIndex-page*allCount)/xCount; + + + //x方向每个item的偏移量 + CGFloat xCellOffset = remain * (itemW + minLine)+ sectionInsets.left; + //y方向每个item的偏移量 + CGFloat yCellOffset = merchant * (itemH + minSpacing); + + //获取每个section中item占了几页 + NSInteger pageRe = (itemCount % allCount == 0)? (itemCount / allCount) : (itemCount / allCount) + 1; + //将每个section与pageRe对应,计算下面的位置 + [_sectionDic setValue:@(pageRe) forKey:[NSString stringWithFormat:@"%ld", section]]; + + if(self.scrollDirection == UICollectionViewScrollDirectionHorizontal) { + + NSInteger actualLo = 0; + //将每个section中的页数相加 + for (NSString *key in [_sectionDic allKeys]) { + actualLo += [_sectionDic[key] integerValue]; + } + //获取到的最后的数减去最后一组的页码数 + actualLo -= [_sectionDic[[NSString stringWithFormat:@"%ld", [_sectionDic allKeys].count-1]] integerValue]; + xCellOffset += page*width + actualLo*width; + + } else { + + yCellOffset += offset; + } + + attributes.frame = CGRectMake(xCellOffset, yCellOffset, itemW, itemH); +} + + +@end diff --git a/YuMi/Modules/YMMine/View/Cell/XPMineHeadItemCollectionViewCell.h b/YuMi/Modules/YMMine/View/Cell/XPMineHeadItemCollectionViewCell.h new file mode 100644 index 00000000..fae3156c --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/XPMineHeadItemCollectionViewCell.h @@ -0,0 +1,19 @@ +// +// YMMineMatchCollectionViewCell.h +// YUMI +// +// Created by YUMI on 2021/9/16. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPMineFuntionItemModel, LittleGameInfoModel; +@interface XPMineHeadItemCollectionViewCell : UICollectionViewCell + +///功能 +@property (nonatomic,strong) XPMineFuntionItemModel *itemModel; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/XPMineHeadItemCollectionViewCell.m b/YuMi/Modules/YMMine/View/Cell/XPMineHeadItemCollectionViewCell.m new file mode 100644 index 00000000..07fe83c2 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/XPMineHeadItemCollectionViewCell.m @@ -0,0 +1,100 @@ +// +// YMMineMatchCollectionViewCell.m +// YUMI +// +// Created by YUMI on 2021/9/16. +// + +#import "XPMineHeadItemCollectionViewCell.h" +///Third +#import +#import "NetImageView.h" +///Tool +#import "DJDKMIMOMColor.h" +///Model +#import "XPMineFuntionItemModel.h" + +@interface XPMineHeadItemCollectionViewCell () +///显示图片 +@property (nonatomic,strong) NetImageView *logoImageView; +///角标 +@property (nonatomic,strong) NetImageView *badgeImageView; +///显示名字 +@property (nonatomic,strong) UILabel *titleLabel; +@end + + +@implementation XPMineHeadItemCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.logoImageView]; + [self.contentView addSubview:self.titleLabel]; + [self.contentView addSubview:self.badgeImageView]; +} + +- (void)initSubViewConstraints { + [self.logoImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(32, 32)); + make.centerX.mas_equalTo(self.contentView); + make.top.mas_equalTo(6); + }]; + [self.badgeImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.contentView); + make.size.mas_equalTo(CGSizeMake(24, 10)); + make.centerX.mas_equalTo(self.logoImageView.mas_right); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.logoImageView.mas_bottom).offset(4); + make.centerX.mas_equalTo(self.contentView); + make.height.mas_equalTo(17); + }]; +} + +#pragma mark - Getters And Setters +- (void)setItemModel:(XPMineFuntionItemModel *)itemModel { + _itemModel = itemModel; + if (_itemModel) { + self.logoImageView.imageUrl = itemModel.centerPic; + self.titleLabel.text = _itemModel.centerName; + self.badgeImageView.imageUrl = itemModel.centerBadge ? itemModel.centerBadge : nil; + } +} + +- (NetImageView *)logoImageView { + if (!_logoImageView) { + _logoImageView = [[NetImageView alloc] init]; + } + return _logoImageView; +} + +- (NetImageView *)badgeImageView { + if (!_badgeImageView) { + _badgeImageView = [[NetImageView alloc] init]; + _badgeImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _badgeImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:13]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Cell/XPMineHeadItemTableViewCell.h b/YuMi/Modules/YMMine/View/Cell/XPMineHeadItemTableViewCell.h new file mode 100644 index 00000000..decd4f22 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/XPMineHeadItemTableViewCell.h @@ -0,0 +1,28 @@ +// +// YMMineHeadItemTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/1/19. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPMineFuntionItemModel, XPMineHeadItemTableViewCell; +@protocol XPMineHeadItemTableViewCellDelegate + +///选择了某个item +- (void)xPMineHeadItemTableViewCell:(XPMineHeadItemTableViewCell *)cell didSelectItem:(XPMineFuntionItemModel *)item; + +@end + +@interface XPMineHeadItemTableViewCell : UITableViewCell + +///数据 +@property (nonatomic,strong) NSArray *datasource; +///代理 +@property (nonatomic,weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/XPMineHeadItemTableViewCell.m b/YuMi/Modules/YMMine/View/Cell/XPMineHeadItemTableViewCell.m new file mode 100644 index 00000000..a765d6b8 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/XPMineHeadItemTableViewCell.m @@ -0,0 +1,170 @@ +// +// YMMineHeadItemTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/1/19. +// + +#import "XPMineHeadItemTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" +///View +#import "XPMineHeadItemCollectionViewCell.h" +#import "XPMineHeadFunctionItemLayout.h" + +@interface XPMineHeadItemTableViewCell () +///列表 +@property (nonatomic,strong) UICollectionView *collectionView; + +@property (nonatomic, strong) UIView *mainView; +@property (nonatomic, strong) UIView *slideBackView; +@property (nonatomic, strong) UIView *sliderView; + +@end + + +@implementation XPMineHeadItemTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.mainView]; + [self.mainView addSubview:self.collectionView]; +} + +- (void)initSubViewConstraints { + [self.mainView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + make.top.bottom.mas_equalTo(self.contentView); + }]; + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(14); + make.left.right.mas_equalTo(self.mainView); + make.height.mas_equalTo(77+32+17+6); + }]; +} + +#pragma mark - UICollectionViewDatasource And UICollectionViewDelegate +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPMineHeadItemCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPMineHeadItemCollectionViewCell class]) forIndexPath:indexPath]; + XPMineFuntionItemModel * item = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.itemModel = item; + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + [collectionView deselectItemAtIndexPath:indexPath animated:YES]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineHeadItemTableViewCell:didSelectItem:)]) { + XPMineFuntionItemModel * model = [self.datasource safeObjectAtIndex1:indexPath.row]; + [self.delegate xPMineHeadItemTableViewCell:self didSelectItem:model]; + } +} + +#pragma mark - UICollectionViewFlowlayout +- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { + return 0; +} + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + CGFloat width = (KScreenWidth - 30) / 4; + return CGSizeMake(width, 32+4+17+6); +} + +- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section { + return 0; +} + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + CGPoint offset = scrollView.contentOffset; + CGRect frame = self.sliderView.frame; + frame.origin.x = offset.x*12/(scrollView.contentSize.width-scrollView.frame.size.width); + self.sliderView.frame = frame; +} + +#pragma mark - Getters And Setters +- (void)setDatasource:(NSArray *)datasource { + _datasource = datasource; + if(datasource.count > 8) { + [self.mainView addSubview:self.slideBackView]; + [self.slideBackView addSubview:self.sliderView]; + [self.slideBackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.mainView); + make.size.mas_equalTo(CGSizeMake(24, 4)); + make.top.mas_equalTo(self.collectionView.mas_bottom).mas_offset(10); + }]; + [self.sliderView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(12, 4)); + make.top.left.bottom.mas_equalTo(self.slideBackView); + }]; + } else { + [self.sliderView removeFromSuperview]; + [self.slideBackView removeFromSuperview]; + } + [self.collectionView reloadData]; +} + +- (UICollectionView *)collectionView{ + if (!_collectionView) { + XPMineHeadFunctionItemLayout *layout = [[XPMineHeadFunctionItemLayout alloc] init]; + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + layout.minimumLineSpacing = 0; + layout.minimumInteritemSpacing = 10; + layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0); + _collectionView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + [_collectionView registerClass:[XPMineHeadItemCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPMineHeadItemCollectionViewCell class])]; + _collectionView.showsHorizontalScrollIndicator = NO; + _collectionView.pagingEnabled = YES; + } + return _collectionView; +} + +- (UIView *)sliderView { + if (!_sliderView) { + _sliderView = [[UIView alloc] init]; + _sliderView.backgroundColor = [DJDKMIMOMColor appMainColor]; + _sliderView.layer.cornerRadius = 2; + _sliderView.layer.masksToBounds = YES; + } + return _sliderView; +} + +- (UIView *)slideBackView { + if (!_slideBackView) { + _slideBackView = [[UIView alloc] init]; + _slideBackView.backgroundColor = UIColorRGBAlpha(0x000000, 0.1); + _slideBackView.layer.cornerRadius = 2; + _slideBackView.layer.masksToBounds = YES; + _slideBackView.clipsToBounds = YES; + } + return _slideBackView; +} + +- (UIView *)mainView { + if (!_mainView) { + _mainView = [[UIView alloc] init]; + _mainView.backgroundColor = [UIColor whiteColor]; + _mainView.layer.cornerRadius = 8; + _mainView.layer.masksToBounds = YES; + } + return _mainView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Cell/XPMineListCell.h b/YuMi/Modules/YMMine/View/Cell/XPMineListCell.h new file mode 100644 index 00000000..bfc0d5e9 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/XPMineListCell.h @@ -0,0 +1,18 @@ +// +// XPMineListCell.h +// YuMi +// +// Created by YuMi on 2023/6/30. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPMineFuntionItemModel; +@interface XPMineListCell : UITableViewCell +///功能 +@property (nonatomic,strong) XPMineFuntionItemModel *itemModel; +-(void)setCornerWithIsTop:(BOOL)isTop isBottom:(BOOL)isBottom; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/XPMineListCell.m b/YuMi/Modules/YMMine/View/Cell/XPMineListCell.m new file mode 100644 index 00000000..ca569a2c --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/XPMineListCell.m @@ -0,0 +1,140 @@ +// +// XPMineListCell.m +// YuMi +// +// Created by YuMi on 2023/6/30. +// + +#import "XPMineListCell.h" +#import "NetImageView.h" +#import "UIView+Corner.h" +///Model +#import "XPMineFuntionItemModel.h" +@interface XPMineListCell() + +@property (nonatomic,strong) UIView * bgView; +@property (nonatomic,strong) NetImageView *iconView; +@property (nonatomic,strong) UILabel * titleVeiw; +@property (nonatomic,strong) UIImageView * arrowView; +@property (nonatomic,strong) UIView *lineView; + +@end +@implementation XPMineListCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.selectionStyle = UITableViewCellSelectionStyleNone; + self.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.bgView]; + [self.bgView addSubview:self.iconView]; + [self.bgView addSubview:self.titleVeiw]; + [self.bgView addSubview:self.arrowView]; + [self.bgView addSubview:self.lineView]; + +} +- (void)initSubViewConstraints { + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(15); + make.right.mas_equalTo(-15); + make.top.bottom.equalTo(self.contentView); + }]; + [self.iconView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(11); + make.width.height.mas_equalTo(25); + make.centerY.equalTo(self.bgView); + }]; + + [self.titleVeiw mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(42); + make.centerY.equalTo(self.bgView); + }]; + [self.arrowView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_offset(20); + make.height.mas_offset(20); + make.centerY.equalTo(self.bgView); + make.right.mas_equalTo(-15); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(0.5); + make.bottom.equalTo(self.bgView); + make.left.mas_equalTo(15); + make.right.mas_equalTo(-15); + }]; + + +} +#pragma mark - Getters And Setters + +- (void)setItemModel:(XPMineFuntionItemModel *)itemModel { + _itemModel = itemModel; + if (_itemModel) { + self.titleVeiw.text = _itemModel.centerName; + if([_itemModel.centerPic isEqualToString:@"mineview_set"]){ + self.iconView.image = [UIImage imageNamed:@"mineview_set"]; + }else{ + self.iconView.imageUrl = _itemModel.centerPic; + } + } +} +-(void)setCornerWithIsTop:(BOOL)isTop isBottom:(BOOL)isBottom{ + _bgView.layer.mask = nil; + if(isTop == YES && isBottom == YES){ + [_bgView setCornerWithLeftTopCorner:10 rightTopCorner:10 bottomLeftCorner:10 bottomRightCorner:10 size:CGSizeMake(KScreenWidth - 30, 60)]; + + return; + } + if (isTop){ + [_bgView setCornerWithLeftTopCorner:10 rightTopCorner:10 bottomLeftCorner:0 bottomRightCorner:0 size:CGSizeMake(KScreenWidth - 30, 60)]; + } + if(isBottom){ + [_bgView setCornerWithLeftTopCorner:0 rightTopCorner:0 bottomLeftCorner:10 bottomRightCorner:10 size:CGSizeMake(KScreenWidth - 30, 60)]; + } +} +- (UIView *)bgView{ + if (!_bgView){ + _bgView = [UIView new]; + _bgView.backgroundColor = [UIColor whiteColor]; + } + return _bgView; +} +- (NetImageView *)iconView{ + if (!_iconView){ + _iconView = [NetImageView new]; + } + return _iconView; +} + +- (UILabel *)titleVeiw{ + if (!_titleVeiw){ + _titleVeiw = [UILabel new]; + _titleVeiw.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; + _titleVeiw.textColor = UIColorFromRGB(0x1F1A4E); + } + return _titleVeiw; +} + +- (UIImageView *)arrowView{ + if (!_arrowView){ + _arrowView = [UIImageView new]; + _arrowView.image = [UIImage imageNamed:@"mine_item_new_arrow"]; + } + return _arrowView; +} + +-(UIView *)lineView{ + if (!_lineView){ + _lineView = [UIView new]; + _lineView.backgroundColor = UIColorFromRGB(0xF7F7F7); + } + return _lineView; +} +@end diff --git a/YuMi/Modules/YMMine/View/Cell/XPMineNotificationTableViewCell.h b/YuMi/Modules/YMMine/View/Cell/XPMineNotificationTableViewCell.h new file mode 100644 index 00000000..5119e660 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/XPMineNotificationTableViewCell.h @@ -0,0 +1,25 @@ +// +// YMMineNotificationTableViewCell.h +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class XPMineNotificationTableViewCell, XPMineNotificationItemModel; +@protocol XPMineNotificationTableViewCellDelegate +///开关 +- (void)xPMineNotificationTableViewCell:(XPMineNotificationTableViewCell *)cell switchStatus:(BOOL)status; + +@end +@interface XPMineNotificationTableViewCell : UITableViewCell +/** */ +@property (nonatomic,weak) id delegate; +/// +@property (nonatomic,strong) XPMineNotificationItemModel *itemModel; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/XPMineNotificationTableViewCell.m b/YuMi/Modules/YMMine/View/Cell/XPMineNotificationTableViewCell.m new file mode 100644 index 00000000..fabd60e4 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/XPMineNotificationTableViewCell.m @@ -0,0 +1,104 @@ +// +// YMMineNotificationTableViewCell.m +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import "XPMineNotificationTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +///Model +#import "XPMineNotificationItemModel.h" + +@interface XPMineNotificationTableViewCell () +@property (nonatomic, strong) UILabel *titleLabel; +@property (nonatomic, strong) UILabel *subtitleLabel; +@property (nonatomic, strong) UISwitch *selectSwitch; +@end + +@implementation XPMineNotificationTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; + if (self) { + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self initSubviews]; + [self makeConstriants]; + } + return self; +} + +#pragma mark - event +- (void)switchDidTapped:(UISwitch *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineNotificationTableViewCell:switchStatus:)]) { + [self.delegate xPMineNotificationTableViewCell:self switchStatus:sender.on]; + } +} + +#pragma mark - private +- (void)initSubviews { + [self.contentView addSubview:self.titleLabel]; + [self.contentView addSubview:self.subtitleLabel]; + [self.contentView addSubview:self.selectSwitch]; + self.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; +} + +- (void)makeConstriants { + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.contentView).offset(15); + make.top.mas_equalTo(14); + }]; + [self.subtitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.titleLabel); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(8); + }]; + [self.selectSwitch mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.contentView).offset(-15); + make.centerY.mas_equalTo(self.contentView); + }]; +} + +#pragma mark - Getter && Setter + +- (void)setItemModel:(XPMineNotificationItemModel *)itemModel { + _itemModel = itemModel; + self.titleLabel.text = _itemModel.title; + self.subtitleLabel.text = _itemModel.desc; + self.selectSwitch.on = _itemModel.notification; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:16]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +- (UILabel *)subtitleLabel { + if (!_subtitleLabel) { + _subtitleLabel = [[UILabel alloc] init]; + _subtitleLabel.font = [UIFont systemFontOfSize:12]; + _subtitleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _subtitleLabel; +} + +- (UISwitch *)selectSwitch { + if (_selectSwitch == nil) { + _selectSwitch = [[UISwitch alloc] init]; + _selectSwitch.onTintColor = [DJDKMIMOMColor appMainColor]; + _selectSwitch.tintColor = [DJDKMIMOMColor disableButtonColor]; + _selectSwitch.backgroundColor = [UIColor clearColor]; + _selectSwitch.layer.cornerRadius = CGRectGetHeight(_selectSwitch.frame)/2.0; + _selectSwitch.layer.masksToBounds = YES; + [_selectSwitch addTarget:self action:@selector(switchDidTapped:) forControlEvents:UIControlEventValueChanged]; + } + return _selectSwitch; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Cell/XPMinePersonalCenterCell.h b/YuMi/Modules/YMMine/View/Cell/XPMinePersonalCenterCell.h new file mode 100644 index 00000000..3c858f6b --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/XPMinePersonalCenterCell.h @@ -0,0 +1,28 @@ +// +// XPMinePersonalCenterCell.h +// YuMi +// +// Created by YuMi on 2023/6/30. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +typedef void (^XPMinePersonalCenterCellAction)(int type);//type,0,我的房间,1,收益记录,2,转赠钻石 + +@interface XPMinePersonalCenterCell : UITableViewCell +@property(nonatomic,copy)XPMinePersonalCenterCellAction clickAction; +///是否有转赠钻石 +@property (nonatomic,assign) BOOL isHaveGiveDiamond; +@end + + + +@interface XPMinePersonalCenterItemView : UIView +///是否有转赠钻石 +@property (nonatomic,assign) BOOL isHaveGiveDiamond; +-(void)setTitle:(NSString *)title; +-(void)setImage:(NSString *)imageName; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/XPMinePersonalCenterCell.m b/YuMi/Modules/YMMine/View/Cell/XPMinePersonalCenterCell.m new file mode 100644 index 00000000..5bd396cc --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/XPMinePersonalCenterCell.m @@ -0,0 +1,269 @@ +// +// XPMinePersonalCenterCell.m +// YuMi +// +// Created by YuMi on 2023/6/30. +// + +#import "XPMinePersonalCenterCell.h" +@interface XPMinePersonalCenterCell() + +///背景 +@property (nonatomic,strong) UIView *bgView; +/// 标题 +@property (nonatomic,strong) UILabel *titleView; +///我的房间 +@property (nonatomic,strong) XPMinePersonalCenterItemView *myRoomView; +///收益记录 +@property (nonatomic,strong) XPMinePersonalCenterItemView *earningsRecordView; +///赠送钻石 +@property (nonatomic,strong) XPMinePersonalCenterItemView *giveDiamondView; + + + +@end + +@implementation XPMinePersonalCenterCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.selectionStyle = UITableViewCellSelectionStyleNone; + self.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.bgView]; + [self.bgView addSubview:self.titleView]; + [self.bgView addSubview:self.myRoomView]; + [self.bgView addSubview:self.earningsRecordView]; + [self.bgView addSubview:self.giveDiamondView]; + self.giveDiamondView.hidden = YES; +} +- (void)initSubViewConstraints { + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(15); + make.right.mas_offset(-15); + make.top.bottom.equalTo(self.contentView); + }]; + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(12); + make.top.mas_equalTo(14); + }]; + + [self.myRoomView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(35); + make.width.mas_greaterThanOrEqualTo(104); + make.height.equalTo(@38); + make.top.mas_equalTo(44); + }]; + [self.earningsRecordView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.height.width.equalTo(self.myRoomView); + make.right.mas_equalTo(-35); + }]; + [self.giveDiamondView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.height.width.equalTo(self.myRoomView); + make.right.mas_equalTo(0); + }]; +} +-(void)setIsHaveGiveDiamond:(BOOL)isHaveGiveDiamond{ + _isHaveGiveDiamond = isHaveGiveDiamond; + self.myRoomView.isHaveGiveDiamond = _isHaveGiveDiamond; + self.earningsRecordView.isHaveGiveDiamond = _isHaveGiveDiamond; + self.giveDiamondView.isHaveGiveDiamond = _isHaveGiveDiamond; + CGFloat width = (KScreenWidth - 30) / 3; + if(_isHaveGiveDiamond == YES){ + self.giveDiamondView.hidden = NO; + [self.myRoomView mas_updateConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(0); + make.width.mas_greaterThanOrEqualTo(width); + make.height.equalTo(@68); + }]; + [self.earningsRecordView mas_updateConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-width); + }]; + return; + } + self.giveDiamondView.hidden = YES; + [self.myRoomView mas_updateConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(35); + make.width.mas_greaterThanOrEqualTo(104); + make.height.equalTo(@38); + }]; + [self.earningsRecordView mas_updateConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-35); + }]; + +} +-(void)clickMyRoomAction{ + if (self.clickAction){ + self.clickAction(0); + } +} +-(void)clickEarningsRecordAction{ + if (self.clickAction){ + self.clickAction(1); + } +} +-(void)clickGiveDiamondAction{ + if (self.clickAction){ + self.clickAction(2); + } +} +- (UIView *)bgView{ + if(!_bgView){ + _bgView = [UIView new]; + _bgView.backgroundColor = [UIColor whiteColor]; + _bgView.layer.cornerRadius = 10; + _bgView.layer.masksToBounds = YES; + } + return _bgView; +} +-(UILabel *)titleView{ + if(!_titleView){ + _titleView = [UILabel new]; + _titleView.textColor = UIColorFromRGB(0x1F1A4E); + _titleView.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + _titleView.text = YMLocalizedString(@"XPMinePersonalCenterCell0"); + } + + return _titleView; +} +- (XPMinePersonalCenterItemView *)myRoomView{ + if(!_myRoomView){ + _myRoomView = [[XPMinePersonalCenterItemView alloc]initWithFrame:CGRectZero]; + [_myRoomView setTitle:YMLocalizedString(@"XPMinePersonalCenterCell1")]; + [_myRoomView setImage:@"mine_personal_centermy_room"]; + UITapGestureRecognizer *myRoomViewTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(clickMyRoomAction)]; + [_myRoomView addGestureRecognizer:myRoomViewTap]; + return _myRoomView; + } + return _myRoomView; +} +-(XPMinePersonalCenterItemView *)earningsRecordView{ + if(!_earningsRecordView){ + _earningsRecordView = [[XPMinePersonalCenterItemView alloc]initWithFrame:CGRectZero]; + [_earningsRecordView setTitle:YMLocalizedString(@"XPMinePersonalCenterCell2")]; + [_earningsRecordView setImage:@"mine_earnings_record"]; + UITapGestureRecognizer *earningsRecordTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(clickEarningsRecordAction)]; + [_earningsRecordView addGestureRecognizer:earningsRecordTap]; + } + return _earningsRecordView; +} +- (XPMinePersonalCenterItemView *)giveDiamondView{ + if (!_giveDiamondView){ + _giveDiamondView = [[XPMinePersonalCenterItemView alloc]initWithFrame:CGRectZero]; + [_giveDiamondView setTitle:YMLocalizedString(@"XPMinePersonalCenterCell3")]; + [_giveDiamondView setImage:@"mine_me_give"]; + UITapGestureRecognizer *earningsRecordTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(clickGiveDiamondAction)]; + [_giveDiamondView addGestureRecognizer:earningsRecordTap]; + } + return _giveDiamondView; +} + +- (void)awakeFromNib { + [super awakeFromNib]; + // Initialization code +} + +- (void)setSelected:(BOOL)selected animated:(BOOL)animated { + [super setSelected:selected animated:animated]; + + // Configure the view for the selected state +} + +@end + + + +/***************************************************************华丽分割线****************************************************************************/ + +@interface XPMinePersonalCenterItemView() +@property (nonatomic,strong) UIImageView *iconView; +@property (nonatomic,strong) UILabel* titleVeiw; + +@end + + +@implementation XPMinePersonalCenterItemView + + +-(instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if(self){ + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.iconView]; + [self addSubview:self.titleVeiw]; +} +- (void)initSubViewConstraints { + [self.iconView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(38); + make.left.mas_equalTo(0); + make.top.equalTo(self); + }]; + [self.titleVeiw mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(48); + make.top.equalTo(self.iconView.mas_top).mas_offset(9); + make.right.equalTo(self); + }]; +} +-(void)setTitle:(NSString *)title{ + self.titleVeiw.text = title; + +} +-(void)setIsHaveGiveDiamond:(BOOL)isHaveGiveDiamond{ + _isHaveGiveDiamond = isHaveGiveDiamond; + + if(_isHaveGiveDiamond){ + [self.titleVeiw mas_updateConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(0); + make.top.equalTo(self.iconView.mas_top).mas_offset(48); + }]; + CGFloat left = (((KScreenWidth - 30) / 3) - 38) / 2; + [self.iconView mas_updateConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(left); + }]; + _titleVeiw.textAlignment = NSTextAlignmentCenter; + return; + } + [self.titleVeiw mas_updateConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(48); + make.top.equalTo(self.iconView.mas_top).mas_offset(9); + }]; + [self.iconView mas_updateConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(0); + }]; + _titleVeiw.textAlignment = NSTextAlignmentLeft; + +} +-(void)setImage:(NSString *)imageName{ + self.iconView.image = [UIImage imageNamed:imageName]; +} +-(UIImageView *)iconView{ + if(!_iconView){ + _iconView = [UIImageView new]; + _iconView.userInteractionEnabled = YES; + } + return _iconView; +} +-(UILabel *)titleVeiw{ + if(!_titleVeiw){ + _titleVeiw = [UILabel new]; + _titleVeiw.font = [UIFont systemFontOfSize:15 weight:UIFontWeightRegular]; + _titleVeiw.textColor = UIColorFromRGB(0x1F1A4E); + + } + return _titleVeiw; +} +@end diff --git a/YuMi/Modules/YMMine/View/Cell/XPMineSettingTableViewCell.h b/YuMi/Modules/YMMine/View/Cell/XPMineSettingTableViewCell.h new file mode 100644 index 00000000..0b93ec0e --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/XPMineSettingTableViewCell.h @@ -0,0 +1,18 @@ +// +// YMMineSettingTableViewCell.h +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPMineSettingItemModel; +@interface XPMineSettingTableViewCell : UITableViewCell +///数据源 +@property (nonatomic,strong) XPMineSettingItemModel *itemModel; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/XPMineSettingTableViewCell.m b/YuMi/Modules/YMMine/View/Cell/XPMineSettingTableViewCell.m new file mode 100644 index 00000000..c92c9f36 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/XPMineSettingTableViewCell.m @@ -0,0 +1,106 @@ +// +// YMMineSettingTableViewCell.m +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import "XPMineSettingTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +///Model +#import "XPMineSettingItemModel.h" + +@interface XPMineSettingTableViewCell () +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///标题 +@property (nonatomic,strong) UILabel *titleLabel; +///副标题 +@property (nonatomic,strong) UILabel *subTitleLabel; +///箭头 +@property (nonatomic,strong) UIImageView *arrowImageView; +@end + +@implementation XPMineSettingTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + + +#pragma mark - Private Method +- (void)initSubViews { + self.contentView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.stackView]; + + [self.stackView addArrangedSubview:self.titleLabel]; + [self.stackView addArrangedSubview:self.subTitleLabel]; + [self.stackView addArrangedSubview:self.arrowImageView]; +} + +- (void)initSubViewConstraints { + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + make.top.bottom.mas_equalTo(self.contentView); + }]; + +} + +#pragma mark - Getters And Setters +- (void)setItemModel:(XPMineSettingItemModel *)itemModel { + _itemModel = itemModel; + self.titleLabel.text = _itemModel.title; + self.subTitleLabel.text = _itemModel.subTitle; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentCenter; + _stackView.spacing = 10; + } + return _stackView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:16]; + _titleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + [_titleLabel setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + } + return _titleLabel; +} +- (UILabel *)subTitleLabel { + if (!_subTitleLabel) { + _subTitleLabel = [[UILabel alloc] init]; + _subTitleLabel.font = [UIFont systemFontOfSize:12]; + _subTitleLabel.textColor = [DJDKMIMOMColor textThirdColor]; + _subTitleLabel.textAlignment = NSTextAlignmentRight; + } + return _subTitleLabel; +} + +- (UIImageView *)arrowImageView { + if (!_arrowImageView) { + _arrowImageView = [[UIImageView alloc] init]; + _arrowImageView.userInteractionEnabled = YES; + _arrowImageView.image = [UIImage imageNamed:@"mine_item_arrow"]; + [_arrowImageView setContentHuggingPriority:UILayoutPriorityDefaultHigh forAxis:UILayoutConstraintAxisHorizontal]; + [_arrowImageView setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + } + return _arrowImageView; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/Cell/XPMineTheGuildCell.h b/YuMi/Modules/YMMine/View/Cell/XPMineTheGuildCell.h new file mode 100644 index 00000000..10cb8243 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/XPMineTheGuildCell.h @@ -0,0 +1,16 @@ +// +// XPMineTheGuildCell.h +// YuMi +// +// Created by YuMi on 2023/6/30. +// + +#import +#import "ClanDetailInfoModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineTheGuildCell : UITableViewCell +@property (nonatomic,strong) ClanDetailInfoModel *clanInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/XPMineTheGuildCell.m b/YuMi/Modules/YMMine/View/Cell/XPMineTheGuildCell.m new file mode 100644 index 00000000..0743ba59 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Cell/XPMineTheGuildCell.m @@ -0,0 +1,148 @@ +// +// XPMineTheGuildCell.m +// YuMi +// +// Created by YuMi on 2023/6/30. +// + +#import "XPMineTheGuildCell.h" +#import "NetImageView.h" +#import "UIView+Corner.h" +@interface XPMineTheGuildCell() +/// 渐变色背景 +@property (nonatomic,strong) UIImageView *bgImageView; + +/// 左边logo图 +@property (nonatomic,strong) UIImageView *leftIconView; +/// 左边头像 +@property (nonatomic,strong) NetImageView *headIconView; +/// 显示标题 +@property (nonatomic,strong) UILabel *titleView; + +/// 右边点击buttom +@property (nonatomic,strong) UIButton *rightIconBtn; + +@end + + +@implementation XPMineTheGuildCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.selectionStyle = UITableViewCellSelectionStyleNone; + self.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.bgImageView]; + [self.bgImageView addSubview:self.headIconView]; + [self.bgImageView addSubview:self.leftIconView]; + [self.bgImageView addSubview:self.titleView]; + [self.bgImageView addSubview:self.rightIconBtn]; +} +- (void)initSubViewConstraints { + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.trailing.mas_equalTo(-15); + make.leading.mas_equalTo(15); + make.top.height.equalTo(self.contentView); + }]; + [self.headIconView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(18); + make.width.height.mas_equalTo(29); + make.centerY.equalTo(self.bgImageView); + }]; + [self.leftIconView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(17); + make.width.mas_equalTo(30.76); + make.height.mas_equalTo(30); + make.centerY.equalTo(self.bgImageView); + }]; + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(60); + make.centerY.equalTo(self.bgImageView); + }]; + [self.rightIconBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.trailing.mas_equalTo(-18); + make.width.height.mas_equalTo(28); + make.centerY.equalTo(self.bgImageView); + }]; +} + +-(void)setClanInfo:(ClanDetailInfoModel *)clanInfo{ + _clanInfo = clanInfo; + if(_clanInfo.hall.ownerUid > 0 || _clanInfo.clan.elderUid > 0){ + _titleView.text = YMLocalizedString(@"XPMineTheGuildCell0"); + _leftIconView.hidden = YES; + _rightIconBtn.selected = YES; + _headIconView.hidden = NO; + NSString *imageUrl = @""; + if (_clanInfo.clan.elderUid > 0){ + imageUrl = _clanInfo.clan.avatar; + }else{ + if(_clanInfo.hall.ownerUid > 0){ + imageUrl = _clanInfo.hall.ownerAvatar; + } + } + _headIconView.imageUrl = imageUrl; + } +} + +#pragma mark -懒加载 + +- (UIImageView *)bgImageView{ + if (!_bgImageView){ + _bgImageView = [UIImageView new]; + _bgImageView.userInteractionEnabled = YES; + _bgImageView.image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0x2C2825),UIColorFromRGB(0x4E433D)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(KScreenWidth - 30, 44)]; + [_bgImageView setCornerWithLeftTopCorner:8 rightTopCorner:8 bottomLeftCorner:8 bottomRightCorner:8 size:CGSizeMake(KScreenWidth - 30, 44)]; + } + return _bgImageView; +} +-(NetImageView *)headIconView{ + if(!_headIconView){ + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _headIconView = [[NetImageView alloc] initWithConfig:config]; + _headIconView.layer.cornerRadius = 14.5; + _headIconView.layer.masksToBounds = YES; + _headIconView.hidden = YES; + _headIconView.layer.borderWidth = 1; + _headIconView.layer.borderColor = UIColorFromRGB(0xF7C8A9).CGColor; + } + return _headIconView; +} +-(UIImageView *)leftIconView{ + if (!_leftIconView){ + _leftIconView = [UIImageView new]; + _leftIconView.image = [UIImage imageNamed:@"mine_guild_my_icon"]; + } + return _leftIconView; +} +- (UILabel *)titleView{ + if(!_titleView){ + _titleView = [UILabel new]; + _titleView.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:15]; + _titleView.text = YMLocalizedString(@"XPMineTheGuildCell1"); + UIImage *image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xF9CFB3),(id)UIColorFromRGB(0xEEA473)] gradientType:GradientTypeTopToBottom imgSize:CGSizeMake(100, 30)]; + _titleView.textColor = [UIColor colorWithPatternImage:image]; + } + return _titleView; +} +-(UIButton *)rightIconBtn{ + if(!_rightIconBtn){ + _rightIconBtn = [UIButton new]; + [_rightIconBtn setBackgroundImage:[UIImage imageNamed:@"mine_guild_add"] forState:UIControlStateNormal]; + [_rightIconBtn setBackgroundImage:[UIImage imageNamed:@"mine_guild_right_arrow"] forState:UIControlStateSelected]; + _rightIconBtn.selected = NO; + _rightIconBtn.userInteractionEnabled = NO; + } + return _rightIconBtn; +} +@end diff --git a/YuMi/Modules/YMMine/View/Cell/YUMIManeBlackStatementTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Cell/YUMIManeBlackStatementTabulationRegardElement.h deleted file mode 100644 index 399e208d..00000000 --- a/YuMi/Modules/YMMine/View/Cell/YUMIManeBlackStatementTabulationRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineBlackListTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/4/25. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ConsumerAbstractMatrix; -@interface YUMIManeBlackStatementTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/YUMIManeBlackStatementTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Cell/YUMIManeBlackStatementTabulationRegardElement.m deleted file mode 100644 index b6df3592..00000000 --- a/YuMi/Modules/YMMine/View/Cell/YUMIManeBlackStatementTabulationRegardElement.m +++ /dev/null @@ -1,79 +0,0 @@ -// -// YMMineBlackListTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/4/25. -// - -#import "YUMIManeBlackStatementTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "ConsumerAbstractMatrix.h" - -@interface YUMIManeBlackStatementTabulationRegardElement () -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; - -@end - -@implementation YUMIManeBlackStatementTabulationRegardElement -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.monicerSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(40, 40)); - make.centerY.mas_equalTo(self.contentView); - make.left.mas_equalTo(self.contentView).offset(15); - }]; - - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(10); - make.right.mas_lessThanOrEqualTo(self.contentView).offset(-5); - make.centerY.mas_equalTo(self.contentView); - }]; -} -#pragma mark - Getters And Setters -- (void)setUserInfo:(ConsumerAbstractMatrix *)userInfo { - _userInfo = userInfo; - if (_userInfo) { - self.intelligenceportraitIndicateRegard.imageUrl = _userInfo.avatar; - self.monicerSequencignation.text = _userInfo.nick; - } -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 20; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - _monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _monicerSequencignation; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Cell/YUMIManeFeaturealConcentrateElement.h b/YuMi/Modules/YMMine/View/Cell/YUMIManeFeaturealConcentrateElement.h deleted file mode 100644 index 16e79c60..00000000 --- a/YuMi/Modules/YMMine/View/Cell/YUMIManeFeaturealConcentrateElement.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YUMIManeFeaturealConcentrateElement.h -// YuMi -// -// Created by YuMi on 2023/6/30. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -typedef void (^YUMI_MinePersonalCenterCellAction)(int type); - -@interface YUMIManeFeaturealConcentrateElement : UITableViewCell -@property(nonatomic,copy)YUMI_MinePersonalCenterCellAction ticktackPerformance; -@property (nonatomic,assign) BOOL isHaveGiveBWSttawberry; -@end - - - -@interface YUMIManeFeaturealConcentrateProvisionRegard : UIView -@property (nonatomic,assign) BOOL isHaveGiveBWSttawberry; --(void)setTitle:(NSString *)title; --(void)setImage:(NSString *)imageName; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/YUMIManeFeaturealConcentrateElement.m b/YuMi/Modules/YMMine/View/Cell/YUMIManeFeaturealConcentrateElement.m deleted file mode 100644 index 49b67cb1..00000000 --- a/YuMi/Modules/YMMine/View/Cell/YUMIManeFeaturealConcentrateElement.m +++ /dev/null @@ -1,264 +0,0 @@ -// -// YUMIManeFeaturealConcentrateElement.m -// YuMi -// -// Created by YuMi on 2023/6/30. -// - -#import "YUMIManeFeaturealConcentrateElement.h" -@interface YUMIManeFeaturealConcentrateElement() - -@property (nonatomic,strong) UIView *backgroundRegard; -@property (nonatomic,strong) UILabel *titleView; -@property (nonatomic,strong) YUMIManeFeaturealConcentrateProvisionRegard *mieyChamberRegard; -@property (nonatomic,strong) YUMIManeFeaturealConcentrateProvisionRegard *earningsReflectionRegard; -@property (nonatomic,strong) YUMIManeFeaturealConcentrateProvisionRegard *giveBWSttawberryRegard; - - - -@end - -@implementation YUMIManeFeaturealConcentrateElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.selectionStyle = UITableViewCellSelectionStyleNone; - self.backgroundColor = [UIColor clearColor]; - [self.contentView addSubview:self.backgroundRegard]; - [self.backgroundRegard addSubview:self.titleView]; - [self.backgroundRegard addSubview:self.mieyChamberRegard]; - [self.backgroundRegard addSubview:self.earningsReflectionRegard]; - [self.backgroundRegard addSubview:self.giveBWSttawberryRegard]; - self.giveBWSttawberryRegard.hidden = YES; -} -- (void)initChildLyRestrictions { - [self.backgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(15); - make.right.mas_offset(-15); - make.top.bottom.equalTo(self.contentView); - }]; - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(12); - make.top.mas_equalTo(14); - }]; - - [self.mieyChamberRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(35); - make.width.mas_greaterThanOrEqualTo(104); - make.height.equalTo(@38); - make.top.mas_equalTo(44); - }]; - [self.earningsReflectionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.height.width.equalTo(self.mieyChamberRegard); - make.right.mas_equalTo(-35); - }]; - [self.giveBWSttawberryRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.height.width.equalTo(self.mieyChamberRegard); - make.right.mas_equalTo(0); - }]; -} --(void)setIsHaveGiveBWSttawberry:(BOOL)isHaveGiveBWSttawberry{ - _isHaveGiveBWSttawberry = isHaveGiveBWSttawberry; - self.mieyChamberRegard.isHaveGiveBWSttawberry = _isHaveGiveBWSttawberry; - self.earningsReflectionRegard.isHaveGiveBWSttawberry = _isHaveGiveBWSttawberry; - self.giveBWSttawberryRegard.isHaveGiveBWSttawberry = _isHaveGiveBWSttawberry; - CGFloat width = (KScreenWidth - 30) / 3; - if(_isHaveGiveBWSttawberry == YES){ - self.giveBWSttawberryRegard.hidden = NO; - [self.mieyChamberRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(0); - make.width.mas_greaterThanOrEqualTo(width); - make.height.equalTo(@68); - }]; - [self.earningsReflectionRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-width); - }]; - return; - } - self.giveBWSttawberryRegard.hidden = YES; - [self.mieyChamberRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(35); - make.width.mas_greaterThanOrEqualTo(104); - make.height.equalTo(@38); - }]; - [self.earningsReflectionRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-35); - }]; - -} --(void)clickMieyChamberPerformance{ - if (self.ticktackPerformance){ - self.ticktackPerformance(0); - } -} --(void)clickEarningsReflectionPerformance{ - if (self.ticktackPerformance){ - self.ticktackPerformance(1); - } -} --(void)clickGiveDiamondPerformance{ - if (self.ticktackPerformance){ - self.ticktackPerformance(2); - } -} -- (UIView *)backgroundRegard{ - if(!_backgroundRegard){ - _backgroundRegard = [UIView new]; - _backgroundRegard.backgroundColor = [UIColor whiteColor]; - _backgroundRegard.layer.cornerRadius = 10; - _backgroundRegard.layer.masksToBounds = YES; - } - return _backgroundRegard; -} --(UILabel *)titleView{ - if(!_titleView){ - _titleView = [UILabel new]; - _titleView.textColor = UIColorFromRGB(0x1F1A4E); - _titleView.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - _titleView.text = YMLocalizedString(@"YUMI_MinePersonalCenterCell0"); - } - - return _titleView; -} -- (YUMIManeFeaturealConcentrateProvisionRegard *)mieyChamberRegard{ - if(!_mieyChamberRegard){ - _mieyChamberRegard = [[YUMIManeFeaturealConcentrateProvisionRegard alloc]initWithFrame:CGRectZero]; - [_mieyChamberRegard setTitle:YMLocalizedString(@"YUMI_MinePersonalCenterCell1")]; - [_mieyChamberRegard setImage:@"mine_personal_centermy_room"]; - UITapGestureRecognizer *myRoomViewTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(clickMieyChamberPerformance)]; - [_mieyChamberRegard addGestureRecognizer:myRoomViewTap]; - return _mieyChamberRegard; - } - return _mieyChamberRegard; -} --(YUMIManeFeaturealConcentrateProvisionRegard *)earningsReflectionRegard{ - if(!_earningsReflectionRegard){ - _earningsReflectionRegard = [[YUMIManeFeaturealConcentrateProvisionRegard alloc]initWithFrame:CGRectZero]; - [_earningsReflectionRegard setTitle:YMLocalizedString(@"YUMI_MinePersonalCenterCell2")]; - [_earningsReflectionRegard setImage:@"mine_earnings_record"]; - UITapGestureRecognizer *earningsRecordTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(clickEarningsReflectionPerformance)]; - [_earningsReflectionRegard addGestureRecognizer:earningsRecordTap]; - } - return _earningsReflectionRegard; -} -- (YUMIManeFeaturealConcentrateProvisionRegard *)giveBWSttawberryRegard{ - if (!_giveBWSttawberryRegard){ - _giveBWSttawberryRegard = [[YUMIManeFeaturealConcentrateProvisionRegard alloc]initWithFrame:CGRectZero]; - [_giveBWSttawberryRegard setTitle:YMLocalizedString(@"YUMI_MinePersonalCenterCell3")]; - [_giveBWSttawberryRegard setImage:@"mine_me_give"]; - UITapGestureRecognizer *earningsRecordTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(clickGiveDiamondPerformance)]; - [_giveBWSttawberryRegard addGestureRecognizer:earningsRecordTap]; - } - return _giveBWSttawberryRegard; -} - -- (void)awakeFromNib { - [super awakeFromNib]; - -} - -- (void)setSelected:(BOOL)selected animated:(BOOL)animated { - [super setSelected:selected animated:animated]; - - -} - -@end - - - - - -@interface YUMIManeFeaturealConcentrateProvisionRegard() -@property (nonatomic,strong) UIImageView *figureRegard; -@property (nonatomic,strong) UILabel* championVeiw; - -@end - - -@implementation YUMIManeFeaturealConcentrateProvisionRegard - - --(instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if(self){ - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.figureRegard]; - [self addSubview:self.championVeiw]; -} -- (void)initChildLyRestrictions { - [self.figureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(38); - make.left.mas_equalTo(0); - make.top.equalTo(self); - }]; - [self.championVeiw mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(48); - make.top.equalTo(self.figureRegard.mas_top).mas_offset(9); - make.right.equalTo(self); - }]; -} --(void)setTitle:(NSString *)title{ - self.championVeiw.text = title; - -} --(void)setIsHaveGiveBWSttawberry:(BOOL)isHaveGiveBWSttawberry{ - _isHaveGiveBWSttawberry = isHaveGiveBWSttawberry; - - if(_isHaveGiveBWSttawberry){ - [self.championVeiw mas_updateConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(0); - make.top.equalTo(self.figureRegard.mas_top).mas_offset(48); - }]; - CGFloat left = (((KScreenWidth - 30) / 3) - 38) / 2; - [self.figureRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(left); - }]; - _championVeiw.textAlignment = NSTextAlignmentCenter; - return; - } - [self.championVeiw mas_updateConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(48); - make.top.equalTo(self.figureRegard.mas_top).mas_offset(9); - }]; - [self.figureRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(0); - }]; - _championVeiw.textAlignment = NSTextAlignmentLeft; - -} --(void)setImage:(NSString *)imageName{ - self.figureRegard.image = [UIImage imageNamed:imageName]; -} --(UIImageView *)figureRegard{ - if(!_figureRegard){ - _figureRegard = [UIImageView new]; - _figureRegard.userInteractionEnabled = YES; - } - return _figureRegard; -} --(UILabel *)championVeiw{ - if(!_championVeiw){ - _championVeiw = [UILabel new]; - _championVeiw.font = [UIFont systemFontOfSize:15 weight:UIFontWeightRegular]; - _championVeiw.textColor = UIColorFromRGB(0x1F1A4E); - - } - return _championVeiw; -} -@end diff --git a/YuMi/Modules/YMMine/View/Cell/YUMIManeInstanllingTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Cell/YUMIManeInstanllingTabulationRegardElement.h deleted file mode 100644 index d728a45a..00000000 --- a/YuMi/Modules/YMMine/View/Cell/YUMIManeInstanllingTabulationRegardElement.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMMineSettingTableViewCell.h -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIManeInstanllingProvisionMatrix; -@interface YUMIManeInstanllingTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) YUMIManeInstanllingProvisionMatrix *itemMatrix; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/YUMIManeInstanllingTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Cell/YUMIManeInstanllingTabulationRegardElement.m deleted file mode 100644 index 7328eac0..00000000 --- a/YuMi/Modules/YMMine/View/Cell/YUMIManeInstanllingTabulationRegardElement.m +++ /dev/null @@ -1,99 +0,0 @@ -// -// YMMineSettingTableViewCell.m -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import "YUMIManeInstanllingTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIManeInstanllingProvisionMatrix.h" - -@interface YUMIManeInstanllingTabulationRegardElement () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UILabel *subChampionSequencignation; -@property (nonatomic,strong) UIImageView *arrowIndicateRegard; -@end - -@implementation YUMIManeInstanllingTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - - -#pragma mark - Private Method -- (void)initSubViews { - self.contentView.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.stackView]; - - [self.stackView addArrangedSubview:self.titleLabel]; - [self.stackView addArrangedSubview:self.subChampionSequencignation]; - [self.stackView addArrangedSubview:self.arrowIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(15); - make.top.bottom.mas_equalTo(self.contentView); - }]; - -} - -#pragma mark - Getters And Setters -- (void)setItemMatrix:(YUMIManeInstanllingProvisionMatrix *)itemMatrix { - _itemMatrix = itemMatrix; - self.titleLabel.text = _itemMatrix.title; - self.subChampionSequencignation.text = _itemMatrix.subTitle; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentCenter; - _stackView.spacing = 10; - } - return _stackView; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:16]; - _titleLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - [_titleLabel setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - } - return _titleLabel; -} -- (UILabel *)subChampionSequencignation { - if (!_subChampionSequencignation) { - _subChampionSequencignation = [[UILabel alloc] init]; - _subChampionSequencignation.font = [UIFont systemFontOfSize:12]; - _subChampionSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - _subChampionSequencignation.textAlignment = NSTextAlignmentRight; - } - return _subChampionSequencignation; -} - -- (UIImageView *)arrowIndicateRegard { - if (!_arrowIndicateRegard) { - _arrowIndicateRegard = [[UIImageView alloc] init]; - _arrowIndicateRegard.userInteractionEnabled = YES; - _arrowIndicateRegard.image = [UIImage imageNamed:@"yumi_center_item_arrow"]; - [_arrowIndicateRegard setContentHuggingPriority:UILayoutPriorityDefaultHigh forAxis:UILayoutConstraintAxisHorizontal]; - [_arrowIndicateRegard setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - } - return _arrowIndicateRegard; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/Cell/YUMIManeIntelligenceFunctionProvisionProgramming.h b/YuMi/Modules/YMMine/View/Cell/YUMIManeIntelligenceFunctionProvisionProgramming.h deleted file mode 100644 index 607d3190..00000000 --- a/YuMi/Modules/YMMine/View/Cell/YUMIManeIntelligenceFunctionProvisionProgramming.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineHeadFunctionItemLayout.h -// YUMI -// -// Created by YUMI on 2022/8/4. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeIntelligenceFunctionProvisionProgramming : UICollectionViewFlowLayout - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/YUMIManeIntelligenceFunctionProvisionProgramming.m b/YuMi/Modules/YMMine/View/Cell/YUMIManeIntelligenceFunctionProvisionProgramming.m deleted file mode 100644 index 7d07ee03..00000000 --- a/YuMi/Modules/YMMine/View/Cell/YUMIManeIntelligenceFunctionProvisionProgramming.m +++ /dev/null @@ -1,151 +0,0 @@ -// -// YMMineHeadFunctionItemLayout.m -// YUMI -// -// Created by YUMI on 2022/8/4. -// - -#import "YUMIManeIntelligenceFunctionProvisionProgramming.h" - -@interface YUMIManeIntelligenceFunctionProvisionProgramming () -@property (nonatomic, copy) NSMutableDictionary *sectionPackbask; -@property (nonatomic, strong) NSMutableArray *entiretyIdiosyncracys; -@end - -@implementation YUMIManeIntelligenceFunctionProvisionProgramming - -#pragma mark - life cycle -- (instancetype)init { - self = [super init]; - if (self) { - self.scrollDirection = UICollectionViewScrollDirectionHorizontal; - } - return self; -} - -#pragma mark - overload - -- (void)prepareLayout { - - [super prepareLayout]; - - _sectionPackbask = [NSMutableDictionary dictionary]; - self.entiretyIdiosyncracys = [NSMutableArray array]; - - NSUInteger section = [self.collectionView numberOfSections]; - - for (int sec = 0; sec < section; sec++) { - - NSUInteger count = [self.collectionView numberOfItemsInSection:sec]; - - for (NSUInteger item = 0; item *)layoutAttributesForElementsInRect:(CGRect)rect { - - return self.entiretyIdiosyncracys; -} - -#pragma mark - private method - -- (void)applyLayoutAttributes:(UICollectionViewLayoutAttributes *)attributes { - - - if(attributes.representedElementKind != nil){ - return; - } - CGFloat minLine = self.minimumLineSpacing; - CGFloat minSpacing = self.minimumInteritemSpacing; - - - CGFloat itemW = attributes.frame.size.width; - - CGFloat itemH = attributes.frame.size.height; - UIEdgeInsets sectionInsets = self.sectionInset; - - CGFloat width = self.collectionView.frame.size.width; - - CGFloat height = self.collectionView.frame.size.height; - - NSInteger itemIndex = attributes.indexPath.item; - - CGFloat stride = (self.scrollDirection == UICollectionViewScrollDirectionHorizontal) ? width : height; - - - - NSInteger section = attributes.indexPath.section; - - NSInteger itemCount = [self.collectionView numberOfItemsInSection:section]; - - - CGFloat offset = section * stride; - - - NSInteger xCount = (width / itemW); - - NSInteger yCount = (height / itemH); - - NSInteger allCount = (xCount * yCount); - - NSInteger page = itemIndex / allCount; - - - NSInteger remain = (itemIndex % xCount); - - NSInteger merchant = (itemIndex-page*allCount)/xCount; - - - - CGFloat xCellOffset = remain * (itemW + minLine)+ sectionInsets.left; - - CGFloat yCellOffset = merchant * (itemH + minSpacing); - - - NSInteger pageRe = (itemCount % allCount == 0)? (itemCount / allCount) : (itemCount / allCount) + 1; - - [_sectionPackbask setValue:@(pageRe) forKey:[NSString stringWithFormat:@"%ld", section]]; - - if(self.scrollDirection == UICollectionViewScrollDirectionHorizontal) { - - NSInteger actualLo = 0; - - for (NSString *key in [_sectionPackbask allKeys]) { - actualLo += [_sectionPackbask[key] integerValue]; - } - - actualLo -= [_sectionPackbask[[NSString stringWithFormat:@"%ld", [_sectionPackbask allKeys].count-1]] integerValue]; - xCellOffset += page*width + actualLo*width; - - } else { - - yCellOffset += offset; - } - - attributes.frame = CGRectMake(xCellOffset, yCellOffset, itemW, itemH); -} - - -@end diff --git a/YuMi/Modules/YMMine/View/Cell/YUMIManeIntelligenceProvisionAssembletionRegardElement.h b/YuMi/Modules/YMMine/View/Cell/YUMIManeIntelligenceProvisionAssembletionRegardElement.h deleted file mode 100644 index 418134e1..00000000 --- a/YuMi/Modules/YMMine/View/Cell/YUMIManeIntelligenceProvisionAssembletionRegardElement.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMMineMatchCollectionViewCell.h -// YUMI -// -// Created by YUMI on 2021/9/16. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIManeFuntionProvisionMatrix, LittleGameInfoModel; -@interface YUMIManeIntelligenceProvisionAssembletionRegardElement : UICollectionViewCell - -@property (nonatomic,strong) YUMIManeFuntionProvisionMatrix *itemMatrix; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/YUMIManeIntelligenceProvisionAssembletionRegardElement.m b/YuMi/Modules/YMMine/View/Cell/YUMIManeIntelligenceProvisionAssembletionRegardElement.m deleted file mode 100644 index f9326f91..00000000 --- a/YuMi/Modules/YMMine/View/Cell/YUMIManeIntelligenceProvisionAssembletionRegardElement.m +++ /dev/null @@ -1,94 +0,0 @@ -// -// YMMineMatchCollectionViewCell.m -// YUMI -// -// Created by YUMI on 2021/9/16. -// - -#import "YUMIManeIntelligenceProvisionAssembletionRegardElement.h" -#import -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "YUMIManeFuntionProvisionMatrix.h" - -@interface YUMIManeIntelligenceProvisionAssembletionRegardElement () -@property (nonatomic,strong) NetIndicateRegard *brandIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *quantityIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@end - - -@implementation YUMIManeIntelligenceProvisionAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.brandIndicateRegard]; - [self.contentView addSubview:self.titleLabel]; - [self.contentView addSubview:self.quantityIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.brandIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(32, 32)); - make.centerX.mas_equalTo(self.contentView); - make.top.mas_equalTo(6); - }]; - [self.quantityIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.contentView); - make.size.mas_equalTo(CGSizeMake(24, 10)); - make.centerX.mas_equalTo(self.brandIndicateRegard.mas_right); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.brandIndicateRegard.mas_bottom).offset(4); - make.centerX.mas_equalTo(self.contentView); - make.height.mas_equalTo(17); - }]; -} - -#pragma mark - Getters And Setters -- (void)setItemMatrix:(YUMIManeFuntionProvisionMatrix *)itemMatrix { - _itemMatrix = itemMatrix; - if (_itemMatrix) { - self.brandIndicateRegard.imageUrl = itemMatrix.centerPic; - self.titleLabel.text = _itemMatrix.centerName; - self.quantityIndicateRegard.imageUrl = itemMatrix.centerBadge ? itemMatrix.centerBadge : nil; - } -} - -- (NetIndicateRegard *)brandIndicateRegard { - if (!_brandIndicateRegard) { - _brandIndicateRegard = [[NetIndicateRegard alloc] init]; - } - return _brandIndicateRegard; -} - -- (NetIndicateRegard *)quantityIndicateRegard { - if (!_quantityIndicateRegard) { - _quantityIndicateRegard = [[NetIndicateRegard alloc] init]; - _quantityIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _quantityIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:13]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Cell/YUMIManeIntelligenceProvisionTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Cell/YUMIManeIntelligenceProvisionTabulationRegardElement.h deleted file mode 100644 index 732ff20c..00000000 --- a/YuMi/Modules/YMMine/View/Cell/YUMIManeIntelligenceProvisionTabulationRegardElement.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YMMineHeadItemTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/1/19. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIManeFuntionProvisionMatrix, YUMIManeIntelligenceProvisionTabulationRegardElement; -@protocol FBCManeIntelligenceItemTabulationViweElementRepresendtation - -- (void)yUMIManeIntelligenceProvisionTarbsultowardsionViweElement:(YUMIManeIntelligenceProvisionTabulationRegardElement *)cell didSelectItem:(YUMIManeFuntionProvisionMatrix *)item; - -@end - -@interface YUMIManeIntelligenceProvisionTabulationRegardElement : UITableViewCell - -@property (nonatomic,strong) NSArray *datasource; -@property (nonatomic,weak) id delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/YUMIManeIntelligenceProvisionTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Cell/YUMIManeIntelligenceProvisionTabulationRegardElement.m deleted file mode 100644 index d0a3a8db..00000000 --- a/YuMi/Modules/YMMine/View/Cell/YUMIManeIntelligenceProvisionTabulationRegardElement.m +++ /dev/null @@ -1,166 +0,0 @@ -// -// YMMineHeadItemTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/1/19. -// - -#import "YUMIManeIntelligenceProvisionTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "YUMIManeIntelligenceProvisionAssembletionRegardElement.h" -#import "YUMIManeIntelligenceFunctionProvisionProgramming.h" - -@interface YUMIManeIntelligenceProvisionTabulationRegardElement () -@property (nonatomic,strong) UICollectionView *collectionView; - -@property (nonatomic, strong) UIView *mainView; -@property (nonatomic, strong) UIView *slideEncourageRegard; -@property (nonatomic, strong) UIView *sliderView; - -@end - - -@implementation YUMIManeIntelligenceProvisionTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - [self.contentView addSubview:self.mainView]; - [self.mainView addSubview:self.collectionView]; -} - -- (void)initChildLyRestrictions { - [self.mainView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(15); - make.top.bottom.mas_equalTo(self.contentView); - }]; - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(14); - make.left.right.mas_equalTo(self.mainView); - make.height.mas_equalTo(77+32+17+6); - }]; -} - -#pragma mark - UICollectionViewDatasource And UICollectionViewDelegate -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMIManeIntelligenceProvisionAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIManeIntelligenceProvisionAssembletionRegardElement class]) forIndexPath:indexPath]; - YUMIManeFuntionProvisionMatrix * item = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.itemMatrix = item; - return cell; -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - [collectionView deselectItemAtIndexPath:indexPath animated:YES]; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIManeIntelligenceProvisionTarbsultowardsionViweElement:didSelectItem:)]) { - YUMIManeFuntionProvisionMatrix * model = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - [self.delegate yUMIManeIntelligenceProvisionTarbsultowardsionViweElement:self didSelectItem:model]; - } -} - -#pragma mark - UICollectionViewFlowlayout -- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { - return 0; -} - -- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { - CGFloat width = (KScreenWidth - 30) / 4; - return CGSizeMake(width, 32+4+17+6); -} - -- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section { - return 0; -} - -- (void)scrollViewDidScroll:(UIScrollView *)scrollView { - CGPoint offset = scrollView.contentOffset; - CGRect frame = self.sliderView.frame; - frame.origin.x = offset.x*12/(scrollView.contentSize.width-scrollView.frame.size.width); - self.sliderView.frame = frame; -} - -#pragma mark - Getters And Setters -- (void)setDatasource:(NSArray *)datasource { - _datasource = datasource; - if(datasource.count > 8) { - [self.mainView addSubview:self.slideEncourageRegard]; - [self.slideEncourageRegard addSubview:self.sliderView]; - [self.slideEncourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.mainView); - make.size.mas_equalTo(CGSizeMake(24, 4)); - make.top.mas_equalTo(self.collectionView.mas_bottom).mas_offset(10); - }]; - [self.sliderView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(12, 4)); - make.top.left.bottom.mas_equalTo(self.slideEncourageRegard); - }]; - } else { - [self.sliderView removeFromSuperview]; - [self.slideEncourageRegard removeFromSuperview]; - } - [self.collectionView reloadData]; -} - -- (UICollectionView *)collectionView{ - if (!_collectionView) { - YUMIManeIntelligenceFunctionProvisionProgramming *layout = [[YUMIManeIntelligenceFunctionProvisionProgramming alloc] init]; - layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - layout.minimumLineSpacing = 0; - layout.minimumInteritemSpacing = 10; - layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0); - _collectionView.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - [_collectionView registerClass:[YUMIManeIntelligenceProvisionAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIManeIntelligenceProvisionAssembletionRegardElement class])]; - _collectionView.showsHorizontalScrollIndicator = NO; - _collectionView.pagingEnabled = YES; - } - return _collectionView; -} - -- (UIView *)sliderView { - if (!_sliderView) { - _sliderView = [[UIView alloc] init]; - _sliderView.backgroundColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - _sliderView.layer.cornerRadius = 2; - _sliderView.layer.masksToBounds = YES; - } - return _sliderView; -} - -- (UIView *)slideEncourageRegard { - if (!_slideEncourageRegard) { - _slideEncourageRegard = [[UIView alloc] init]; - _slideEncourageRegard.backgroundColor = UIColorRGBAlpha(0x000000, 0.1); - _slideEncourageRegard.layer.cornerRadius = 2; - _slideEncourageRegard.layer.masksToBounds = YES; - _slideEncourageRegard.clipsToBounds = YES; - } - return _slideEncourageRegard; -} - -- (UIView *)mainView { - if (!_mainView) { - _mainView = [[UIView alloc] init]; - _mainView.backgroundColor = [UIColor whiteColor]; - _mainView.layer.cornerRadius = 8; - _mainView.layer.masksToBounds = YES; - } - return _mainView; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Cell/YUMIManeNotificationTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Cell/YUMIManeNotificationTabulationRegardElement.h deleted file mode 100644 index f91a616d..00000000 --- a/YuMi/Modules/YMMine/View/Cell/YUMIManeNotificationTabulationRegardElement.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMMineNotificationTableViewCell.h -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class YUMIManeNotificationTabulationRegardElement, YUMIManeNotificationProvisionMatrix; -@protocol FBCManeNotificationTabulationViweElementRepresendtation -- (void)fBCManeCircularTarbsultowardsionViweElement:(YUMIManeNotificationTabulationRegardElement *)cell switchStatus:(BOOL)status; - -@end -@interface YUMIManeNotificationTabulationRegardElement : UITableViewCell - -@property (nonatomic,weak) id delegate; -@property (nonatomic,strong) YUMIManeNotificationProvisionMatrix *itemMatrix; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/YUMIManeNotificationTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Cell/YUMIManeNotificationTabulationRegardElement.m deleted file mode 100644 index c4dd0b5c..00000000 --- a/YuMi/Modules/YMMine/View/Cell/YUMIManeNotificationTabulationRegardElement.m +++ /dev/null @@ -1,101 +0,0 @@ -// -// YMMineNotificationTableViewCell.m -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import "YUMIManeNotificationTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIManeNotificationProvisionMatrix.h" - -@interface YUMIManeNotificationTabulationRegardElement () -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UILabel *subtitleLabel; -@property (nonatomic, strong) UISwitch *chosenSwop; -@end - -@implementation YUMIManeNotificationTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; - if (self) { - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self initSubviews]; - [self manufactureConstriants]; - } - return self; -} - -#pragma mark - event -- (void)swopDidBetowardslictowardsioned:(UISwitch *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeCircularTarbsultowardsionViweElement:switchStatus:)]) { - [self.delegate fBCManeCircularTarbsultowardsionViweElement:self switchStatus:sender.on]; - } -} - -#pragma mark - private -- (void)initSubviews { - [self.contentView addSubview:self.titleLabel]; - [self.contentView addSubview:self.subtitleLabel]; - [self.contentView addSubview:self.chosenSwop]; - self.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; -} - -- (void)manufactureConstriants { - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.contentView).offset(15); - make.top.mas_equalTo(14); - }]; - [self.subtitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.titleLabel); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(8); - }]; - [self.chosenSwop mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.contentView).offset(-15); - make.centerY.mas_equalTo(self.contentView); - }]; -} - -#pragma mark - Getter && Setter - -- (void)setItemMatrix:(YUMIManeNotificationProvisionMatrix *)itemMatrix { - _itemMatrix = itemMatrix; - self.titleLabel.text = _itemMatrix.title; - self.subtitleLabel.text = _itemMatrix.desc; - self.chosenSwop.on = _itemMatrix.notification; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:16]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -- (UILabel *)subtitleLabel { - if (!_subtitleLabel) { - _subtitleLabel = [[UILabel alloc] init]; - _subtitleLabel.font = [UIFont systemFontOfSize:12]; - _subtitleLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _subtitleLabel; -} - -- (UISwitch *)chosenSwop { - if (_chosenSwop == nil) { - _chosenSwop = [[UISwitch alloc] init]; - _chosenSwop.onTintColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - _chosenSwop.tintColor = [DJDKMIMOMColor prohibitionBtutonPrettify]; - _chosenSwop.backgroundColor = [UIColor clearColor]; - _chosenSwop.layer.cornerRadius = CGRectGetHeight(_chosenSwop.frame)/2.0; - _chosenSwop.layer.masksToBounds = YES; - [_chosenSwop addTarget:self action:@selector(swopDidBetowardslictowardsioned:) forControlEvents:UIControlEventValueChanged]; - } - return _chosenSwop; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Cell/YUMIManeStatementElement.h b/YuMi/Modules/YMMine/View/Cell/YUMIManeStatementElement.h deleted file mode 100644 index 7379682e..00000000 --- a/YuMi/Modules/YMMine/View/Cell/YUMIManeStatementElement.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YUMIManeStatementElement.h -// YuMi -// -// Created by YuMi on 2023/6/30. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIManeFuntionProvisionMatrix; -@interface YUMIManeStatementElement : UITableViewCell -@property (nonatomic,strong) YUMIManeFuntionProvisionMatrix *itemMatrix; --(void)setMonopolizeAboutIsApex:(BOOL)isApex isExtreme:(BOOL)isExtreme; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/YUMIManeStatementElement.m b/YuMi/Modules/YMMine/View/Cell/YUMIManeStatementElement.m deleted file mode 100644 index 26c20342..00000000 --- a/YuMi/Modules/YMMine/View/Cell/YUMIManeStatementElement.m +++ /dev/null @@ -1,139 +0,0 @@ -// -// YUMIManeStatementElement.m -// YuMi -// -// Created by YuMi on 2023/6/30. -// - -#import "YUMIManeStatementElement.h" -#import "NetIndicateRegard.h" -#import "UIView+Corner.h" -#import "YUMIManeFuntionProvisionMatrix.h" -@interface YUMIManeStatementElement() - -@property (nonatomic,strong) UIView * backgroundRegard; -@property (nonatomic,strong) NetIndicateRegard *figureRegard; -@property (nonatomic,strong) UILabel * championVeiw; -@property (nonatomic,strong) UIImageView * arrowView; -@property (nonatomic,strong) UIView *burlywoodRegard; - -@end -@implementation YUMIManeStatementElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.selectionStyle = UITableViewCellSelectionStyleNone; - self.backgroundColor = [UIColor clearColor]; - [self.contentView addSubview:self.backgroundRegard]; - [self.backgroundRegard addSubview:self.figureRegard]; - [self.backgroundRegard addSubview:self.championVeiw]; - [self.backgroundRegard addSubview:self.arrowView]; - [self.backgroundRegard addSubview:self.burlywoodRegard]; - -} -- (void)initChildLyRestrictions { - [self.backgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(15); - make.right.mas_equalTo(-15); - make.top.bottom.equalTo(self.contentView); - }]; - [self.figureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(11); - make.width.height.mas_equalTo(25); - make.centerY.equalTo(self.backgroundRegard); - }]; - - [self.championVeiw mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(42); - make.centerY.equalTo(self.backgroundRegard); - }]; - [self.arrowView mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_offset(20); - make.height.mas_offset(20); - make.centerY.equalTo(self.backgroundRegard); - make.right.mas_equalTo(-15); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(0.5); - make.bottom.equalTo(self.backgroundRegard); - make.left.mas_equalTo(15); - make.right.mas_equalTo(-15); - }]; - - -} -#pragma mark - Getters And Setters - -- (void)setItemMatrix:(YUMIManeFuntionProvisionMatrix *)itemMatrix { - _itemMatrix = itemMatrix; - if (_itemMatrix) { - self.championVeiw.text = _itemMatrix.centerName; - if([_itemMatrix.centerPic isEqualToString:@"mineview_set"]){ - self.figureRegard.image = [UIImage imageNamed:@"mineview_set"]; - }else{ - self.figureRegard.imageUrl = _itemMatrix.centerPic; - } - } -} --(void)setMonopolizeAboutIsApex:(BOOL)isApex isExtreme:(BOOL)isExtreme{ - _backgroundRegard.layer.mask = nil; - if(isApex == YES && isExtreme == YES){ - [_backgroundRegard setMonopolizeAboutContraryApexMonopolize:10 rightTopCorner:10 bottomLeftCorner:10 bottomRightCorner:10 size:CGSizeMake(KScreenWidth - 30, 60)]; - - return; - } - if (isApex){ - [_backgroundRegard setMonopolizeAboutContraryApexMonopolize:10 rightTopCorner:10 bottomLeftCorner:0 bottomRightCorner:0 size:CGSizeMake(KScreenWidth - 30, 60)]; - } - if(isExtreme){ - [_backgroundRegard setMonopolizeAboutContraryApexMonopolize:0 rightTopCorner:0 bottomLeftCorner:10 bottomRightCorner:10 size:CGSizeMake(KScreenWidth - 30, 60)]; - } -} -- (UIView *)backgroundRegard{ - if (!_backgroundRegard){ - _backgroundRegard = [UIView new]; - _backgroundRegard.backgroundColor = [UIColor whiteColor]; - } - return _backgroundRegard; -} -- (NetIndicateRegard *)figureRegard{ - if (!_figureRegard){ - _figureRegard = [NetIndicateRegard new]; - } - return _figureRegard; -} - -- (UILabel *)championVeiw{ - if (!_championVeiw){ - _championVeiw = [UILabel new]; - _championVeiw.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; - _championVeiw.textColor = UIColorFromRGB(0x1F1A4E); - } - return _championVeiw; -} - -- (UIImageView *)arrowView{ - if (!_arrowView){ - _arrowView = [UIImageView new]; - _arrowView.image = [UIImage imageNamed:@"mine_item_new_arrow"]; - } - return _arrowView; -} - --(UIView *)burlywoodRegard{ - if (!_burlywoodRegard){ - _burlywoodRegard = [UIView new]; - _burlywoodRegard.backgroundColor = UIColorFromRGB(0xF7F7F7); - } - return _burlywoodRegard; -} -@end diff --git a/YuMi/Modules/YMMine/View/Cell/YUMIManeTheUnionElement.h b/YuMi/Modules/YMMine/View/Cell/YUMIManeTheUnionElement.h deleted file mode 100644 index 9697bbe7..00000000 --- a/YuMi/Modules/YMMine/View/Cell/YUMIManeTheUnionElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIManeTheUnionElement.h -// YuMi -// -// Created by YuMi on 2023/6/30. -// - -#import -#import "CollectiveSpecificAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeTheUnionElement : UITableViewCell -@property (nonatomic,strong) CollectiveSpecificAbstractMatrix *collectiveAbstract; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Cell/YUMIManeTheUnionElement.m b/YuMi/Modules/YMMine/View/Cell/YUMIManeTheUnionElement.m deleted file mode 100644 index 3a2cab60..00000000 --- a/YuMi/Modules/YMMine/View/Cell/YUMIManeTheUnionElement.m +++ /dev/null @@ -1,143 +0,0 @@ -// -// YUMIManeTheUnionElement.m -// YuMi -// -// Created by YuMi on 2023/6/30. -// - -#import "YUMIManeTheUnionElement.h" -#import "NetIndicateRegard.h" -#import "UIView+Corner.h" -@interface YUMIManeTheUnionElement() -@property (nonatomic,strong) UIImageView *backgroundIndicateRegard; - -@property (nonatomic,strong) UIImageView *contraryFigureRegard; -@property (nonatomic,strong) NetIndicateRegard *intelligenceFigureRegard; -@property (nonatomic,strong) UILabel *titleView; - -@property (nonatomic,strong) UIButton *rectifyFigureBtuton; - -@end - - -@implementation YUMIManeTheUnionElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.selectionStyle = UITableViewCellSelectionStyleNone; - self.backgroundColor = [UIColor clearColor]; - [self.contentView addSubview:self.backgroundIndicateRegard]; - [self.backgroundIndicateRegard addSubview:self.intelligenceFigureRegard]; - [self.backgroundIndicateRegard addSubview:self.contraryFigureRegard]; - [self.backgroundIndicateRegard addSubview:self.titleView]; - [self.backgroundIndicateRegard addSubview:self.rectifyFigureBtuton]; -} -- (void)initChildLyRestrictions { - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.trailing.mas_equalTo(-15); - make.leading.mas_equalTo(15); - make.top.height.equalTo(self.contentView); - }]; - [self.intelligenceFigureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.leading.mas_equalTo(18); - make.width.height.mas_equalTo(29); - make.centerY.equalTo(self.backgroundIndicateRegard); - }]; - [self.contraryFigureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.leading.mas_equalTo(17); - make.width.mas_equalTo(30.76); - make.height.mas_equalTo(30); - make.centerY.equalTo(self.backgroundIndicateRegard); - }]; - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.leading.mas_equalTo(60); - make.centerY.equalTo(self.backgroundIndicateRegard); - }]; - [self.rectifyFigureBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.trailing.mas_equalTo(-18); - make.width.height.mas_equalTo(28); - make.centerY.equalTo(self.backgroundIndicateRegard); - }]; -} - --(void)setCollectiveAbstract:(CollectiveSpecificAbstractMatrix *)collectiveAbstract{ - _collectiveAbstract = collectiveAbstract; - if(_collectiveAbstract.hall.ownerUid > 0 || _collectiveAbstract.clan.elderUid > 0){ - _titleView.text = YMLocalizedString(@"YUMI_MineTheGuildCell0"); - _contraryFigureRegard.hidden = YES; - _rectifyFigureBtuton.selected = YES; - _intelligenceFigureRegard.hidden = NO; - NSString *imageUrl = @""; - if (_collectiveAbstract.clan.elderUid > 0){ - imageUrl = _collectiveAbstract.clan.avatar; - }else{ - if(_collectiveAbstract.hall.ownerUid > 0){ - imageUrl = _collectiveAbstract.hall.ownerAvatar; - } - } - _intelligenceFigureRegard.imageUrl = imageUrl; - } -} - -#pragma mark -懒加载 - -- (UIImageView *)backgroundIndicateRegard{ - if (!_backgroundIndicateRegard){ - _backgroundIndicateRegard = [UIImageView new]; - _backgroundIndicateRegard.userInteractionEnabled = YES; - _backgroundIndicateRegard.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0x2C2825),UIColorFromRGB(0x4E433D)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(KScreenWidth - 30, 44)]; - [_backgroundIndicateRegard setMonopolizeAboutContraryApexMonopolize:8 rightTopCorner:8 bottomLeftCorner:8 bottomRightCorner:8 size:CGSizeMake(KScreenWidth - 30, 44)]; - } - return _backgroundIndicateRegard; -} --(NetIndicateRegard *)intelligenceFigureRegard{ - if(!_intelligenceFigureRegard){ - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceFigureRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceFigureRegard.layer.cornerRadius = 14.5; - _intelligenceFigureRegard.layer.masksToBounds = YES; - _intelligenceFigureRegard.hidden = YES; - _intelligenceFigureRegard.layer.borderWidth = 1; - _intelligenceFigureRegard.layer.borderColor = UIColorFromRGB(0xF7C8A9).CGColor; - } - return _intelligenceFigureRegard; -} --(UIImageView *)contraryFigureRegard{ - if (!_contraryFigureRegard){ - _contraryFigureRegard = [UIImageView new]; - _contraryFigureRegard.image = [UIImage imageNamed:@"yumi_center_guild_my_pic"]; - } - return _contraryFigureRegard; -} -- (UILabel *)titleView{ - if(!_titleView){ - _titleView = [UILabel new]; - _titleView.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:15]; - _titleView.text = YMLocalizedString(@"YUMI_MineTheGuildCell1"); - UIImage *image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xF9CFB3),(id)UIColorFromRGB(0xEEA473)] gradientType:GradientGenreTopToBottom imgSize:CGSizeMake(100, 30)]; - _titleView.textColor = [UIColor colorWithPatternImage:image]; - } - return _titleView; -} --(UIButton *)rectifyFigureBtuton{ - if(!_rectifyFigureBtuton){ - _rectifyFigureBtuton = [UIButton new]; - [_rectifyFigureBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_center_guild_add"] forState:UIControlStateNormal]; - [_rectifyFigureBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_center_guild_right_arrow"] forState:UIControlStateSelected]; - _rectifyFigureBtuton.selected = NO; - _rectifyFigureBtuton.userInteractionEnabled = NO; - } - return _rectifyFigureBtuton; -} -@end diff --git a/YuMi/Modules/YMMine/View/CollectRoom/Cell/XPMineCollectRoomCell.h b/YuMi/Modules/YMMine/View/CollectRoom/Cell/XPMineCollectRoomCell.h new file mode 100644 index 00000000..8bf9a407 --- /dev/null +++ b/YuMi/Modules/YMMine/View/CollectRoom/Cell/XPMineCollectRoomCell.h @@ -0,0 +1,19 @@ +// +// YMMineCollectRoomCell.h +// YUMI +// +// Created by YUMI on 2022/10/12. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class HomeCollectRoomModel; +@interface XPMineCollectRoomCell : UITableViewCell + +@property (nonatomic,strong) HomeCollectRoomModel *roomInfo; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/CollectRoom/Cell/XPMineCollectRoomCell.m b/YuMi/Modules/YMMine/View/CollectRoom/Cell/XPMineCollectRoomCell.m new file mode 100644 index 00000000..5d9fc65e --- /dev/null +++ b/YuMi/Modules/YMMine/View/CollectRoom/Cell/XPMineCollectRoomCell.m @@ -0,0 +1,126 @@ +// +// YMMineCollectRoomCell.m +// YUMI +// +// Created by YUMI on 2022/10/12. +// + +#import "XPMineCollectRoomCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "UIImage+Utils.h" +///Model +#import "HomeCollectRoomModel.h" + +@interface XPMineCollectRoomCell () + +///显示头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///显示名字 +@property (nonatomic,strong) UILabel *nickLabel; +///显示id +@property (nonatomic,strong) UILabel *idLabel; +///分割线 +@property (nonatomic, strong) UIView *devideView; + +@end + +@implementation XPMineCollectRoomCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.nickLabel]; + [self.contentView addSubview:self.idLabel]; + [self.contentView addSubview:self.devideView]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(44, 44)); + make.left.mas_equalTo(self.contentView).offset(15); + make.centerY.mas_equalTo(self.contentView); + }]; + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(7); + make.top.mas_equalTo(self.avatarImageView).offset(2); + make.right.mas_equalTo(-15); + make.height.mas_equalTo(14); + }]; + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.nickLabel.mas_bottom).mas_offset(8); + make.left.mas_equalTo(self.nickLabel); + make.height.mas_equalTo(14); + }]; + + [self.devideView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nickLabel); + make.height.mas_equalTo(0.5); + make.right.bottom.mas_equalTo(0); + }]; + +} + +#pragma mark - Getters And Setters +- (void)setRoomInfo:(HomeCollectRoomModel *)roomInfo { + _roomInfo = roomInfo; + if (_roomInfo) { + self.avatarImageView.imageUrl = _roomInfo.roomAvatar; + self.nickLabel.text = _roomInfo.roomName; + self.idLabel.text = [NSString stringWithFormat:@"ID:%@", _roomInfo.erbanNo]; + } +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 22; + _avatarImageView.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + } + return _avatarImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:14]; + _nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _nickLabel; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.font = [UIFont systemFontOfSize:12]; + _idLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _idLabel; +} + +- (UIView *)devideView { + if (!_devideView) { + _devideView = [[UIView alloc] init]; + _devideView.backgroundColor = UIColorFromRGB(0xEAEAF1); + } + return _devideView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/CollectRoom/Cell/XPMineCollectRoomEditCell.h b/YuMi/Modules/YMMine/View/CollectRoom/Cell/XPMineCollectRoomEditCell.h new file mode 100644 index 00000000..37b7c847 --- /dev/null +++ b/YuMi/Modules/YMMine/View/CollectRoom/Cell/XPMineCollectRoomEditCell.h @@ -0,0 +1,18 @@ +// +// YMMineCollectRoomEditCell.h +// YUMI +// +// Created by YUMI on 2022/10/11. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class HomeCollectRoomModel; +@interface XPMineCollectRoomEditCell : UITableViewCell +@property (nonatomic,strong) HomeCollectRoomModel *roomInfo; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/CollectRoom/Cell/XPMineCollectRoomEditCell.m b/YuMi/Modules/YMMine/View/CollectRoom/Cell/XPMineCollectRoomEditCell.m new file mode 100644 index 00000000..de8c1dd1 --- /dev/null +++ b/YuMi/Modules/YMMine/View/CollectRoom/Cell/XPMineCollectRoomEditCell.m @@ -0,0 +1,145 @@ +// +// YMMineCollectRoomEditCell.m +// YUMI +// +// Created by YUMI on 2022/10/11. +// + +#import "XPMineCollectRoomEditCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "UIImage+Utils.h" +///Model +#import "HomeCollectRoomModel.h" + +@interface XPMineCollectRoomEditCell () + +///显示头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///显示名字 +@property (nonatomic,strong) UILabel *nickLabel; +///显示id +@property (nonatomic,strong) UILabel *idLabel; +///选中按钮 +@property (nonatomic, strong) UIButton *selectBtn; +///分割线 +@property (nonatomic, strong) UIView *devideView; + +@end + +@implementation XPMineCollectRoomEditCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.nickLabel]; + [self.contentView addSubview:self.idLabel]; + [self.contentView addSubview:self.devideView]; + [self.contentView addSubview:self.selectBtn]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(44, 44)); + make.left.mas_equalTo(self.selectBtn.mas_right).offset(15); + make.centerY.mas_equalTo(self.contentView); + }]; + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(7); + make.top.mas_equalTo(self.avatarImageView).offset(2); + make.right.mas_equalTo(-15); + make.height.mas_equalTo(14); + }]; + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.nickLabel.mas_bottom).mas_offset(8); + make.left.mas_equalTo(self.nickLabel); + make.height.mas_equalTo(14); + }]; + + [self.devideView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nickLabel); + make.height.mas_equalTo(0.5); + make.right.bottom.mas_equalTo(0); + }]; + + [self.selectBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20, 20)); + make.left.mas_equalTo(15); + make.centerY.mas_equalTo(self.contentView); + }]; +} + +#pragma mark - Getters And Setters +- (void)setRoomInfo:(HomeCollectRoomModel *)roomInfo { + _roomInfo = roomInfo; + if (_roomInfo) { + self.avatarImageView.imageUrl = _roomInfo.roomAvatar; + self.nickLabel.text = _roomInfo.roomName; + self.idLabel.text = [NSString stringWithFormat:@"ID:%@", _roomInfo.erbanNo]; + self.selectBtn.selected = roomInfo.isSelected; + } +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 22; + _avatarImageView.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + } + return _avatarImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:14]; + _nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _nickLabel; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.font = [UIFont systemFontOfSize:12]; + _idLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _idLabel; +} + +- (UIButton *)selectBtn { + if (!_selectBtn) { + _selectBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_selectBtn setImage:[UIImage imageNamed:@"collect_room_edit_normal"] forState:UIControlStateNormal]; + [_selectBtn setImage:[UIImage imageNamed:@"collect_room_edit_selected"] forState:UIControlStateSelected]; + _selectBtn.userInteractionEnabled = NO; + } + return _selectBtn; +} + +- (UIView *)devideView { + if (!_devideView) { + _devideView = [[UIView alloc] init]; + _devideView.backgroundColor = UIColorFromRGB(0xEAEAF1); + } + return _devideView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/CollectRoom/Cell/YUMIManeAssembleChamberCompileElement.h b/YuMi/Modules/YMMine/View/CollectRoom/Cell/YUMIManeAssembleChamberCompileElement.h deleted file mode 100644 index 2bfabf3c..00000000 --- a/YuMi/Modules/YMMine/View/CollectRoom/Cell/YUMIManeAssembleChamberCompileElement.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMMineCollectRoomEditCell.h -// YUMI -// -// Created by YUMI on 2022/10/11. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class ResidenceAssembleChamberMatrix; -@interface YUMIManeAssembleChamberCompileElement : UITableViewCell -@property (nonatomic,strong) ResidenceAssembleChamberMatrix *roomInfo; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/CollectRoom/Cell/YUMIManeAssembleChamberCompileElement.m b/YuMi/Modules/YMMine/View/CollectRoom/Cell/YUMIManeAssembleChamberCompileElement.m deleted file mode 100644 index 5b2afc72..00000000 --- a/YuMi/Modules/YMMine/View/CollectRoom/Cell/YUMIManeAssembleChamberCompileElement.m +++ /dev/null @@ -1,137 +0,0 @@ -// -// YMMineCollectRoomEditCell.m -// YUMI -// -// Created by YUMI on 2022/10/11. -// - -#import "YUMIManeAssembleChamberCompileElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "UIImage+Utils.h" -#import "ResidenceAssembleChamberMatrix.h" - -@interface YUMIManeAssembleChamberCompileElement () - -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UILabel *idSequencignation; -@property (nonatomic, strong) UIButton *chosenBtuton; -@property (nonatomic, strong) UIView *devideRegard; - -@end - -@implementation YUMIManeAssembleChamberCompileElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.monicerSequencignation]; - [self.contentView addSubview:self.idSequencignation]; - [self.contentView addSubview:self.devideRegard]; - [self.contentView addSubview:self.chosenBtuton]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(44, 44)); - make.left.mas_equalTo(self.chosenBtuton.mas_right).offset(15); - make.centerY.mas_equalTo(self.contentView); - }]; - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(7); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard).offset(2); - make.right.mas_equalTo(-15); - make.height.mas_equalTo(14); - }]; - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.monicerSequencignation.mas_bottom).mas_offset(8); - make.left.mas_equalTo(self.monicerSequencignation); - make.height.mas_equalTo(14); - }]; - - [self.devideRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.monicerSequencignation); - make.height.mas_equalTo(0.5); - make.right.bottom.mas_equalTo(0); - }]; - - [self.chosenBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20, 20)); - make.left.mas_equalTo(15); - make.centerY.mas_equalTo(self.contentView); - }]; -} - -#pragma mark - Getters And Setters -- (void)setRoomInfo:(ResidenceAssembleChamberMatrix *)roomInfo { - _roomInfo = roomInfo; - if (_roomInfo) { - self.intelligenceportraitIndicateRegard.imageUrl = _roomInfo.roomAvatar; - self.monicerSequencignation.text = _roomInfo.roomName; - self.idSequencignation.text = [NSString stringWithFormat:@"ID:%@", _roomInfo.erbanNo]; - self.chosenBtuton.selected = roomInfo.isSelected; - } -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 22; - _intelligenceportraitIndicateRegard.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:14]; - _monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _monicerSequencignation; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.font = [UIFont systemFontOfSize:12]; - _idSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _idSequencignation; -} - -- (UIButton *)chosenBtuton { - if (!_chosenBtuton) { - _chosenBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_chosenBtuton setImage:[UIImage imageNamed:@"yumi_collect_scope_edit_normal"] forState:UIControlStateNormal]; - [_chosenBtuton setImage:[UIImage imageNamed:@"yumi_collect_scope_edit_selected"] forState:UIControlStateSelected]; - _chosenBtuton.userInteractionEnabled = NO; - } - return _chosenBtuton; -} - -- (UIView *)devideRegard { - if (!_devideRegard) { - _devideRegard = [[UIView alloc] init]; - _devideRegard.backgroundColor = UIColorFromRGB(0xEAEAF1); - } - return _devideRegard; -} - -@end diff --git a/YuMi/Modules/YMMine/View/CollectRoom/Cell/YUMIManeAssembleChamberElement.h b/YuMi/Modules/YMMine/View/CollectRoom/Cell/YUMIManeAssembleChamberElement.h deleted file mode 100644 index e3eeebe5..00000000 --- a/YuMi/Modules/YMMine/View/CollectRoom/Cell/YUMIManeAssembleChamberElement.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMMineCollectRoomCell.h -// YUMI -// -// Created by YUMI on 2022/10/12. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class ResidenceAssembleChamberMatrix; -@interface YUMIManeAssembleChamberElement : UITableViewCell - -@property (nonatomic,strong) ResidenceAssembleChamberMatrix *roomInfo; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/CollectRoom/Cell/YUMIManeAssembleChamberElement.m b/YuMi/Modules/YMMine/View/CollectRoom/Cell/YUMIManeAssembleChamberElement.m deleted file mode 100644 index 59ccbe20..00000000 --- a/YuMi/Modules/YMMine/View/CollectRoom/Cell/YUMIManeAssembleChamberElement.m +++ /dev/null @@ -1,119 +0,0 @@ -// -// YMMineCollectRoomCell.m -// YUMI -// -// Created by YUMI on 2022/10/12. -// - -#import "YUMIManeAssembleChamberElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "UIImage+Utils.h" -#import "ResidenceAssembleChamberMatrix.h" - -@interface YUMIManeAssembleChamberElement () - -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UILabel *idSequencignation; -@property (nonatomic, strong) UIView *devideRegard; - -@end - -@implementation YUMIManeAssembleChamberElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.monicerSequencignation]; - [self.contentView addSubview:self.idSequencignation]; - [self.contentView addSubview:self.devideRegard]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(44, 44)); - make.left.mas_equalTo(self.contentView).offset(15); - make.centerY.mas_equalTo(self.contentView); - }]; - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(7); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard).offset(2); - make.right.mas_equalTo(-15); - make.height.mas_equalTo(14); - }]; - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.monicerSequencignation.mas_bottom).mas_offset(8); - make.left.mas_equalTo(self.monicerSequencignation); - make.height.mas_equalTo(14); - }]; - - [self.devideRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.monicerSequencignation); - make.height.mas_equalTo(0.5); - make.right.bottom.mas_equalTo(0); - }]; - -} - -#pragma mark - Getters And Setters -- (void)setRoomInfo:(ResidenceAssembleChamberMatrix *)roomInfo { - _roomInfo = roomInfo; - if (_roomInfo) { - self.intelligenceportraitIndicateRegard.imageUrl = _roomInfo.roomAvatar; - self.monicerSequencignation.text = _roomInfo.roomName; - self.idSequencignation.text = [NSString stringWithFormat:@"ID:%@", _roomInfo.erbanNo]; - } -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 22; - _intelligenceportraitIndicateRegard.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:14]; - _monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _monicerSequencignation; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.font = [UIFont systemFontOfSize:12]; - _idSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _idSequencignation; -} - -- (UIView *)devideRegard { - if (!_devideRegard) { - _devideRegard = [[UIView alloc] init]; - _devideRegard.backgroundColor = UIColorFromRGB(0xEAEAF1); - } - return _devideRegard; -} - -@end diff --git a/YuMi/Modules/YMMine/View/CollectRoom/XPMineCollectPartyRoomViewController.h b/YuMi/Modules/YMMine/View/CollectRoom/XPMineCollectPartyRoomViewController.h new file mode 100644 index 00000000..cc040d51 --- /dev/null +++ b/YuMi/Modules/YMMine/View/CollectRoom/XPMineCollectPartyRoomViewController.h @@ -0,0 +1,41 @@ +// +// YMMineCollectPartyRoomViewController.h +// YUMI +// +// Created by YUMI on 2022/10/11. +// + +#import "MvpViewController.h" +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSUInteger, MineCollectRoomType) { + MineCollectRoomTypeParty, + MineCollectRoomTypeAnchor +}; + +@protocol XPMineCollectPartyRoomViewControllerDelegate + +///是否全选 +- (void)xPMineCollectPartyRoomViewControllerSelectAll:(BOOL)selectAll; + +@end + +@interface XPMineCollectPartyRoomViewController : MvpViewController + +@property (nonatomic, weak) id delegate; + +@property (nonatomic, assign) MineCollectRoomType type; +///数据源 +@property (nonatomic,strong, readonly) NSMutableArray *datasource; +///是否为编辑模式 +@property (nonatomic, assign) BOOL isEdit; +///是否选中所有 +@property (nonatomic, assign) BOOL isSelectAll; +///刷新数据 +- (void)headerRefresh; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/CollectRoom/XPMineCollectPartyRoomViewController.m b/YuMi/Modules/YMMine/View/CollectRoom/XPMineCollectPartyRoomViewController.m new file mode 100644 index 00000000..dbdd9738 --- /dev/null +++ b/YuMi/Modules/YMMine/View/CollectRoom/XPMineCollectPartyRoomViewController.m @@ -0,0 +1,237 @@ +// +// YMMineCollectPartyRoomViewController.m +// YUMI +// +// Created by YUMI on 2022/10/11. +// + +#import "XPMineCollectPartyRoomViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" +///Model +#import "HomeCollectRoomModel.h" +///P +#import "XPMineCollectRoomListPresenter.h" +#import "XPMineCollectRoomListProtocol.h" +///View +#import "XPMineCollectRoomCell.h" +#import "XPMineVisitorEmptyTableViewCell.h" +#import "XPMineCollectRoomEditCell.h" +///VC +#import "XPRoomViewController.h" + +@interface XPMineCollectPartyRoomViewController () + +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +///当前页数 +@property (nonatomic,assign) int page; +///更多数据 +@property (nonatomic,assign) BOOL hasNoMoreData; + +@end + +@implementation XPMineCollectPartyRoomViewController + +#pragma mark - JXCategoryListContentViewDelegate +- (UIView *)listView { + return self.view; +} + +- (XPMineCollectRoomListPresenter *)createPresenter { + return [[XPMineCollectRoomListPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initHeaderAndFooterRrfresh]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - 下拉刷新 +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; + + [self headerRefresh]; +} + +#pragma mark - 刷新的fangfa +- (void)headerRefresh { + self.page = 1; + [self.presenter getCollectRoomList:self.page pageSize:20 state:0 type:self.type == MineCollectRoomTypeParty ? @"1" : @"4"]; +} + +- (void)footerRefresh { + if (self.hasNoMoreData) { + [self showErrorToast:YMLocalizedString(@"XPMineCollectPartyRoomViewController0")]; + return; + } + self.page++; + [self.presenter getCollectRoomList:self.page pageSize:20 state:1 type:self.type == MineCollectRoomTypeParty ? @"1" : @"4"]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMineCollectPartyRoomViewController1"); + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +#pragma mark - XPMineCollectRoomListProtocol +///获取访客列表成功 +- (void)onGetCollectRoomListSuccess:(NSArray *)array state:(int)state { + if (state == 0) { + [self.datasource removeAllObjects]; + [self.tableView.mj_header endRefreshing]; + } + [self.tableView.mj_footer endRefreshing]; + if (array.count > 0) { + self.hasNoMoreData = NO; + [self.datasource addObjectsFromArray:array]; + } else { + self.hasNoMoreData = YES; + [self.tableView.mj_footer endRefreshingWithNoMoreData]; + } + [self.tableView reloadData]; +} + +///获取访客列表失败 +- (void)getCollectRoomListFail:(int)state { + if (state == 0) { + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + if (self.isEdit) { + XPMineCollectRoomEditCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineCollectRoomEditCell class])]; + if (cell == nil) { + cell = [[XPMineCollectRoomEditCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineCollectRoomEditCell class])]; + } + cell.roomInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + return cell; + } else { + XPMineCollectRoomCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineCollectRoomCell class])]; + if (cell == nil) { + cell = [[XPMineCollectRoomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineCollectRoomCell class])]; + } + cell.roomInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + return cell; + } + } + + XPMineVisitorEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineVisitorEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineVisitorEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineVisitorEmptyTableViewCell class])]; + } + cell.emptyTitle = YMLocalizedString(@"XPMineCollectPartyRoomViewController2"); + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 68; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + HomeCollectRoomModel * roomInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + if (self.isEdit) { + roomInfo.isSelected = !roomInfo.isSelected; + [tableView reloadData]; + BOOL selectAll = YES; + for (HomeCollectRoomModel *item in self.datasource) { + if (!item.isSelected) { + selectAll = NO; + break; + } + } + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineCollectPartyRoomViewControllerSelectAll:)]) { + [self.delegate xPMineCollectPartyRoomViewControllerSelectAll:selectAll]; + } + } else { + if (roomInfo.roomUid.integerValue > 0) { + [XPRoomViewController openRoom:roomInfo.roomUid viewController:self]; + } + } +} + +- (void)setIsEdit:(BOOL)isEdit { + _isEdit = isEdit; + for (HomeCollectRoomModel *model in self.datasource) { + model.isSelected = NO; + } + [self.tableView reloadData]; +} + +- (void)setIsSelectAll:(BOOL)isSelectAll { + _isSelectAll = isSelectAll; + if (isSelectAll) { + for (HomeCollectRoomModel *model in self.datasource) { + model.isSelected = YES; + } + } else { + for (HomeCollectRoomModel *model in self.datasource) { + model.isSelected = NO; + } + } + [self.tableView reloadData]; +} + +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + _tableView.contentInset = UIEdgeInsetsMake(8, 0, 0, 0); + [_tableView registerClass:[XPMineVisitorEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineVisitorEmptyTableViewCell class])]; + [_tableView registerClass:[XPMineCollectRoomCell class] forCellReuseIdentifier:NSStringFromClass([XPMineCollectRoomCell class])]; + [_tableView registerClass:[XPMineCollectRoomEditCell class] forCellReuseIdentifier:NSStringFromClass([XPMineCollectRoomEditCell class])]; + } + return _tableView; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + +@end diff --git a/YuMi/Modules/YMMine/View/CollectRoom/YUMIManeAssembleParatiesChamberRegardGovernancer.h b/YuMi/Modules/YMMine/View/CollectRoom/YUMIManeAssembleParatiesChamberRegardGovernancer.h deleted file mode 100644 index 52fe17f4..00000000 --- a/YuMi/Modules/YMMine/View/CollectRoom/YUMIManeAssembleParatiesChamberRegardGovernancer.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// YMMineCollectPartyRoomViewController.h -// YUMI -// -// Created by YUMI on 2022/10/11. -// - -#import "MvpRegardGovernancer.h" -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSUInteger, ManeCollectChamberGenre) { - ManeCollectChamberGenreParty, - ManeCollectChamberGenreAnchor -}; - -@protocol FBCManeCollectPartyChamberRegardGovernancerRepresendtation - -- (void)fBCManeAssemblePartyChamberRegardGovernancerChosenEntirety:(BOOL)selectAll; - -@end - -@interface YUMIManeAssembleParatiesChamberRegardGovernancer : MvpRegardGovernancer - -@property (nonatomic, weak) id delegate; - -@property (nonatomic, assign) ManeCollectChamberGenre type; -@property (nonatomic,strong, readonly) NSMutableArray *datasource; -@property (nonatomic, assign) BOOL isCompile; -@property (nonatomic, assign) BOOL isChosenEntirety; -- (void)intelligenceerRenovtowardseh; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/CollectRoom/YUMIManeAssembleParatiesChamberRegardGovernancer.m b/YuMi/Modules/YMMine/View/CollectRoom/YUMIManeAssembleParatiesChamberRegardGovernancer.m deleted file mode 100644 index 1b7387b4..00000000 --- a/YuMi/Modules/YMMine/View/CollectRoom/YUMIManeAssembleParatiesChamberRegardGovernancer.m +++ /dev/null @@ -1,225 +0,0 @@ -// -// YMMineCollectPartyRoomViewController.m -// YUMI -// -// Created by YUMI on 2022/10/11. -// - -#import "YUMIManeAssembleParatiesChamberRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "ResidenceAssembleChamberMatrix.h" -#import "YUMIManeAssembleChamberStatementExternalizer.h" -#import "FBCManeCollectChamberStatementCeremony.h" -#import "YUMIManeAssembleChamberElement.h" -#import "YUMIManeVacationerDispossessTabulationRegardElement.h" -#import "YUMIManeAssembleChamberCompileElement.h" -#import "YUMIChamberRegardGovernancer.h" - -@interface YUMIManeAssembleParatiesChamberRegardGovernancer () - -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,assign) int page; -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; - -@end - -@implementation YUMIManeAssembleParatiesChamberRegardGovernancer - -#pragma mark - JXCategoryListContentViewDelegate -- (UIView *)listView { - return self.view; -} - -- (YUMIManeAssembleChamberStatementExternalizer *)producePresimport { - return [[YUMIManeAssembleChamberStatementExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initIntelligencerGrantedTerminalerRrfresh]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - 下拉刷新 -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - - [self intelligenceerRenovtowardseh]; -} - -#pragma mark - 刷新的fangfa -- (void)intelligenceerRenovtowardseh { - self.page = 1; - [self.presimport acquireAssembleChamberSttowardsement:self.page pageSize:20 state:0 type:self.type == ManeCollectChamberGenreParty ? @"1" : @"4"]; -} - -- (void)footerRenovtowardseh { - if (self.hasNoFurthaerAtoloudspeaker) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Mine_Collect_Party_Room_View_Controller_0")]; - return; - } - self.page++; - [self.presimport acquireAssembleChamberSttowardsement:self.page pageSize:20 state:1 type:self.type == ManeCollectChamberGenreParty ? @"1" : @"4"]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Mine_Collect_Party_Room_View_Controller_1"); - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -#pragma mark - FBCManeCollectChamberStatementCeremony -- (void)dwellEarnAssembleChamberSttowardsementAccomplishment:(NSArray *)array state:(int)state { - if (state == 0) { - [self.datasource removeAllObjects]; - [self.tableView.mj_header endRefreshing]; - } - [self.tableView.mj_footer endRefreshing]; - if (array.count > 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - [self.datasource addObjectsFromArray:array]; - } else { - self.hasNoFurthaerAtoloudspeaker = YES; - [self.tableView.mj_footer endRefreshingWithNoMoreData]; - } - [self.tableView reloadData]; -} - -- (void)acquireAssembleChamberSttowardsementFlunk:(int)state { - if (state == 0) { - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - if (self.isCompile) { - YUMIManeAssembleChamberCompileElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeAssembleChamberCompileElement class])]; - if (cell == nil) { - cell = [[YUMIManeAssembleChamberCompileElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeAssembleChamberCompileElement class])]; - } - cell.roomInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; - } else { - YUMIManeAssembleChamberElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeAssembleChamberElement class])]; - if (cell == nil) { - cell = [[YUMIManeAssembleChamberElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeAssembleChamberElement class])]; - } - cell.roomInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; - } - } - - YUMIManeVacationerDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeVacationerDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeVacationerDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeVacationerDispossessTabulationRegardElement class])]; - } - cell.emptyTitle = YMLocalizedString(@"YUMI_Mine_Collect_Party_Room_View_Controller_2"); - return cell; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 68; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - ResidenceAssembleChamberMatrix * roomInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (self.isCompile) { - roomInfo.isSelected = !roomInfo.isSelected; - [tableView reloadData]; - BOOL selectAll = YES; - for (ResidenceAssembleChamberMatrix *item in self.datasource) { - if (!item.isSelected) { - selectAll = NO; - break; - } - } - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeAssemblePartyChamberRegardGovernancerChosenEntirety:)]) { - [self.delegate fBCManeAssemblePartyChamberRegardGovernancerChosenEntirety:selectAll]; - } - } else { - if (roomInfo.roomUid.integerValue > 0) { - [YUMIChamberRegardGovernancer unfoildChamber:roomInfo.roomUid viewController:self]; - } - } -} - -- (void)setIsCompile:(BOOL)isCompile { - _isCompile = isCompile; - for (ResidenceAssembleChamberMatrix *model in self.datasource) { - model.isSelected = NO; - } - [self.tableView reloadData]; -} - -- (void)setIsChosenEntirety:(BOOL)isChosenEntirety { - _isChosenEntirety = isChosenEntirety; - if (isChosenEntirety) { - for (ResidenceAssembleChamberMatrix *model in self.datasource) { - model.isSelected = YES; - } - } else { - for (ResidenceAssembleChamberMatrix *model in self.datasource) { - model.isSelected = NO; - } - } - [self.tableView reloadData]; -} - -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - _tableView.contentInset = UIEdgeInsetsMake(8, 0, 0, 0); - [_tableView registerClass:[YUMIManeVacationerDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeVacationerDispossessTabulationRegardElement class])]; - [_tableView registerClass:[YUMIManeAssembleChamberElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeAssembleChamberElement class])]; - [_tableView registerClass:[YUMIManeAssembleChamberCompileElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeAssembleChamberCompileElement class])]; - } - return _tableView; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - -@end diff --git a/YuMi/Modules/YMMine/View/DressUp/Api/Api+DressUp.h b/YuMi/Modules/YMMine/View/DressUp/Api/Api+DressUp.h index b121536e..421c246a 100644 --- a/YuMi/Modules/YMMine/View/DressUp/Api/Api+DressUp.h +++ b/YuMi/Modules/YMMine/View/DressUp/Api/Api+DressUp.h @@ -10,35 +10,91 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (DressUp) -+ (void)intelligencewearSttowardsement:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid; +/// 获取头饰列表 +/// @param completion 完成 +/// @param ticket ticket +/// @param uid uid ++ (void)headwearList:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid; -+ (void)automobileSttowardsement:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid; +/// 获取座驾列表 +/// @param completion 完成 +/// @param ticket ticket +/// @param uid uid ++ (void)carList:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid; -+ (void)mtowardserialSttowardsement:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize; +/// 获取铭牌列表 +/// @param completion 完成 +/// @param ticket ticket +/// @param uid uid ++ (void)nameplateList:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize; -+ (void)magnificentSolitaireSttowardsement:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize; +/// 获取用户贵族资料卡 +/// @param completion 完成 +/// @param ticket ticket +/// @param uid uid ++ (void)nobleCardList:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize; -+ (void)chinwagIntumesceSttowardsement:(HttpRequestHelperCompletion)completion page:(NSString *)page pageSize:(NSString *)pageSize; +/// 获取用户公屏气泡 +/// @param completion 完成 +/// @param page 分页 +/// @param pageSize 页数 ++ (void)chatBubbleList:(HttpRequestHelperCompletion)completion page:(NSString *)page pageSize:(NSString *)pageSize; -+ (void)utilizeIntelligencePenetrtowardse:(HttpRequestHelperCompletion)completion headwearId:(NSString *)headwearId ticket:(NSString *)ticket uid:(NSString *)uid; +/// 使用头饰 +/// @param completion 完成 +/// @param headwearId 头饰id 0 取消使用头饰 +/// @param ticket ticket +/// @param uid uid ++ (void)useHeadWear:(HttpRequestHelperCompletion)completion headwearId:(NSString *)headwearId ticket:(NSString *)ticket uid:(NSString *)uid; -+ (void)utilizeAutomobile:(HttpRequestHelperCompletion)completion carId:(NSString *)carId ticket:(NSString *)ticket uid:(NSString *)uid; +/// 使用座驾 +/// @param completion 完成 +/// @param carId 座驾id 0 取消使用座驾 +/// @param ticket ticket +/// @param uid uid ++ (void)useCar:(HttpRequestHelperCompletion)completion carId:(NSString *)carId ticket:(NSString *)ticket uid:(NSString *)uid; -+ (void)utilizeMtowardserial:(HttpRequestHelperCompletion)completion userNameplateId:(NSString *)userNameplateId ticket:(NSString *)ticket uid:(NSString *)uid; +/// 使用铭牌 +/// @param completion 完成 +/// @param userNameplateId 座驾id 0 取消使用座驾 +/// @param ticket ticket +/// @param uid uid ++ (void)useNameplate:(HttpRequestHelperCompletion)completion userNameplateId:(NSString *)userNameplateId ticket:(NSString *)ticket uid:(NSString *)uid; -+ (void)utilizeMagnificentSolitaire:(HttpRequestHelperCompletion)completion cardId:(NSString *)cardId ticket:(NSString *)ticket uid:(NSString *)uid; +/// 使用贵族资料卡 +/// @param completion 完成 +/// @param cardId 资料卡idd 0 取消使用 +/// @param ticket ticket +/// @param uid uid ++ (void)useNobleCard:(HttpRequestHelperCompletion)completion cardId:(NSString *)cardId ticket:(NSString *)ticket uid:(NSString *)uid; -+ (void)utilizeIntumesce:(HttpRequestHelperCompletion)completion bubbleId:(NSString *)bubbleId; +/// 使用气泡 +/// @param completion 完成 +/// @param bubbleId 气泡id ++ (void)useBubble:(HttpRequestHelperCompletion)completion bubbleId:(NSString *)bubbleId; -+ (void)dressupOriflammeSttowardsement:(HttpRequestHelperCompletion)completion type:(NSString *)type; +/// 活动 +/// @param completion 完成 +/// @param type 类型 2 房间的 1 首页的 3 我的装扮 ++ (void)dressupBannerList:(HttpRequestHelperCompletion)completion type:(NSString *)type; #pragma mark - 装扮商城 -+ (void)requisitionPretconcludeedProcurementSttowardsement:(HttpRequestHelperCompletion)completion dressType:(NSString *)dressType; +/// 获取装扮商城列表 +/// @param completion 完成 +/// @param dressType 装扮类型 ++ (void)requestDressUpShopList:(HttpRequestHelperCompletion)completion dressType:(NSString *)dressType; -+ (void)requisitionPretconcludeedProcurementAcquire:(HttpRequestHelperCompletion)completion id:(NSString *)dressId; +/// 购买装扮 +/// @param completion 完成 +/// @param dressId 装扮id ++ (void)requestDressUpShopBuy:(HttpRequestHelperCompletion)completion id:(NSString *)dressId; -+ (void)requisitionDischargePretconclude:(HttpRequestHelperCompletion)completion id:(NSString *)dressId targetUid:(NSString *)targetUid; +/// 赠送装扮 +/// @param completion 完成 +/// @param dressId 装扮ID +/// @param targetUid 目标用户UID ++ (void)requestSendDress:(HttpRequestHelperCompletion)completion id:(NSString *)dressId targetUid:(NSString *)targetUid; @end diff --git a/YuMi/Modules/YMMine/View/DressUp/Api/Api+DressUp.m b/YuMi/Modules/YMMine/View/DressUp/Api/Api+DressUp.m index e8a999c7..6700f1c5 100644 --- a/YuMi/Modules/YMMine/View/DressUp/Api/Api+DressUp.m +++ b/YuMi/Modules/YMMine/View/DressUp/Api/Api+DressUp.m @@ -9,82 +9,138 @@ #import @implementation Api (DressUp) -+ (void)intelligencewearSttowardsement:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"aGVhZHdlYXIvdjIvdXNlci9saXN0"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, ticket, uid, nil]; +/// 获取头饰列表 +/// @param completion 完成 +/// @param ticket ticket +/// @param uid uid ++ (void)headwearList:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"aGVhZHdlYXIvdjIvdXNlci9saXN0"];///headwear/v2/user/list + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, ticket, uid, nil]; } -+ (void)automobileSttowardsement:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"Y2FyL2NhcnBvcnQvdjIvbGlzdA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, ticket, uid, nil]; +/// 获取座驾列表 +/// @param completion 完成 +/// @param ticket ticket +/// @param uid uid ++ (void)carList:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"Y2FyL2NhcnBvcnQvdjIvbGlzdA=="];///car/carport/v2/list + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, ticket, uid, nil]; } -+ (void)mtowardserialSttowardsement:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize { - NSString * fang = [NSString stringFromBase64String:@"bmFtZXBsYXRlL3VzZXJOYW1lcGxhdGVMaXN0"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, ticket, uid, page, pageSize, nil]; +/// 获取铭牌列表 +/// @param completion 完成 +/// @param ticket ticket +/// @param uid uid ++ (void)nameplateList:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize { + NSString * fang = [NSString stringFromBase64String:@"bmFtZXBsYXRlL3VzZXJOYW1lcGxhdGVMaXN0"];///nameplate/userNameplateList + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, ticket, uid, page, pageSize, nil]; } -+ (void)magnificentSolitaireSttowardsement:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize { - NSString * fang = [NSString stringFromBase64String:@"dXNlckluZm9DYXJkL2xpc3RCeVBhZ2U="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, ticket, uid, page, pageSize, nil]; +/// 获取用户贵族资料卡 +/// @param completion 完成 +/// @param ticket ticket +/// @param uid uid ++ (void)nobleCardList:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize { + NSString * fang = [NSString stringFromBase64String:@"dXNlckluZm9DYXJkL2xpc3RCeVBhZ2U="];///userInfoCard/listByPage + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, ticket, uid, page, pageSize, nil]; } -+ (void)chinwagIntumesceSttowardsement:(HttpRequestHelperCompletion)completion page:(NSString *)page pageSize:(NSString *)pageSize { - NSString * fang = [NSString stringFromBase64String:@"dXNlckNoYXRCdWJibGUvbGlzdEJ5UGFnZQ=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, page, pageSize, nil]; +/// 获取用户公屏气泡 +/// @param completion 完成 +/// @param page 分页 +/// @param pageSize 页数 ++ (void)chatBubbleList:(HttpRequestHelperCompletion)completion page:(NSString *)page pageSize:(NSString *)pageSize { + NSString * fang = [NSString stringFromBase64String:@"dXNlckNoYXRCdWJibGUvbGlzdEJ5UGFnZQ=="];///userChatBubble/listByPage + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, page, pageSize, nil]; } -+ (void)utilizeIntelligencePenetrtowardse:(HttpRequestHelperCompletion)completion headwearId:(NSString *)headwearId ticket:(NSString *)ticket uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"djEvdXNlci9oZWFkd2Vhci91c2U="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, headwearId, ticket, uid, nil]; +/// 使用头饰 +/// @param completion 完成 +/// @param headwearId 头饰id 0 取消使用头饰 +/// @param ticket ticket +/// @param uid uid ++ (void)useHeadWear:(HttpRequestHelperCompletion)completion headwearId:(NSString *)headwearId ticket:(NSString *)ticket uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"djEvdXNlci9oZWFkd2Vhci91c2U="];///v1/user/headwear/use + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, headwearId, ticket, uid, nil]; } -+ (void)utilizeAutomobile:(HttpRequestHelperCompletion)completion carId:(NSString *)carId ticket:(NSString *)ticket uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"Y2FyL2NhcnBvcnQvdXNl"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, carId, ticket, uid, nil]; +/// 使用座驾 +/// @param completion 完成 +/// @param carId 座驾id 0 取消使用座驾 +/// @param ticket ticket +/// @param uid uid ++ (void)useCar:(HttpRequestHelperCompletion)completion carId:(NSString *)carId ticket:(NSString *)ticket uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"Y2FyL2NhcnBvcnQvdXNl"];///car/carport/use + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, carId, ticket, uid, nil]; } -+ (void)utilizeMtowardserial:(HttpRequestHelperCompletion)completion userNameplateId:(NSString *)userNameplateId ticket:(NSString *)ticket uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"bmFtZXBsYXRlL3VzZU5hbWVwbGF0ZQ=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, userNameplateId, ticket, uid, nil]; +/// 使用铭牌 +/// @param completion 完成 +/// @param userNameplateId 座驾id 0 取消使用座驾 +/// @param ticket ticket +/// @param uid uid ++ (void)useNameplate:(HttpRequestHelperCompletion)completion userNameplateId:(NSString *)userNameplateId ticket:(NSString *)ticket uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"bmFtZXBsYXRlL3VzZU5hbWVwbGF0ZQ=="];///nameplate/useNameplate + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, userNameplateId, ticket, uid, nil]; } -+ (void)utilizeMagnificentSolitaire:(HttpRequestHelperCompletion)completion cardId:(NSString *)cardId ticket:(NSString *)ticket uid:(NSString *)uid { +/// 使用贵族资料卡 +/// @param completion 完成 +/// @param cardId 资料卡id 0 取消使用贵族资料卡 +/// @param ticket ticket +/// @param uid uid ++ (void)useNobleCard:(HttpRequestHelperCompletion)completion cardId:(NSString *)cardId ticket:(NSString *)ticket uid:(NSString *)uid { if ([cardId isEqualToString:@"0"]) { cardId = NULL; } - NSString * fang = [NSString stringFromBase64String:@"dXNlckluZm9DYXJkL29wdFVzZXJJbmZvQ2FyZA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, cardId, ticket, uid, nil]; + NSString * fang = [NSString stringFromBase64String:@"dXNlckluZm9DYXJkL29wdFVzZXJJbmZvQ2FyZA=="];///userInfoCard/optUserInfoCard + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, cardId, ticket, uid, nil]; } -+ (void)utilizeIntumesce:(HttpRequestHelperCompletion)completion bubbleId:(NSString *)bubbleId { +/// 使用气泡 +/// @param completion 完成 +/// @param bubbleId 气泡id ++ (void)useBubble:(HttpRequestHelperCompletion)completion bubbleId:(NSString *)bubbleId { if ([bubbleId isEqualToString:@"0"]) { bubbleId = NULL; } - NSString * fang = [NSString stringFromBase64String:@"dXNlckNoYXRCdWJibGUvb3B0VXNlckNoYXRCdWJibGU="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, bubbleId, nil]; + NSString * fang = [NSString stringFromBase64String:@"dXNlckNoYXRCdWJibGUvb3B0VXNlckNoYXRCdWJibGU="];///userChatBubble/optUserChatBubble + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, bubbleId, nil]; } -+ (void)dressupOriflammeSttowardsement:(HttpRequestHelperCompletion)completion type:(NSString *)type { - NSString * fang = [NSString stringFromBase64String:@"aG9tZS9iYW5uZXI="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, type, nil]; +/// 活动 +/// @param completion 完成 +/// @param type 类型 2 房间的 1 首页的 3 我的装扮 ++ (void)dressupBannerList:(HttpRequestHelperCompletion)completion type:(NSString *)type { + NSString * fang = [NSString stringFromBase64String:@"aG9tZS9iYW5uZXI="];/// home/banner + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, type, nil]; } #pragma mark - 装扮商城 -+ (void)requisitionPretconcludeedProcurementSttowardsement:(HttpRequestHelperCompletion)completion dressType:(NSString *)dressType { - NSString * fang = [NSString stringFromBase64String:@"ZHJlc3Mvc2hvcC9saXN0"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, dressType, nil]; +/// 获取装扮商城列表 +/// @param completion 完成 +/// @param dressType 装扮类型 ++ (void)requestDressUpShopList:(HttpRequestHelperCompletion)completion dressType:(NSString *)dressType { + NSString * fang = [NSString stringFromBase64String:@"ZHJlc3Mvc2hvcC9saXN0"];///dress/shop/list + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, dressType, nil]; } -+ (void)requisitionPretconcludeedProcurementAcquire:(HttpRequestHelperCompletion)completion id:(NSString *)dressId { - NSString * fang = [NSString stringFromBase64String:@"ZHJlc3Mvc2hvcC9idXk="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, dressId, nil]; +/// 购买装扮 +/// @param completion 完成 +/// @param dressId 装扮id ++ (void)requestDressUpShopBuy:(HttpRequestHelperCompletion)completion id:(NSString *)dressId { + NSString * fang = [NSString stringFromBase64String:@"ZHJlc3Mvc2hvcC9idXk="];///dress/shop/buy + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, dressId, nil]; } -+ (void)requisitionDischargePretconclude:(HttpRequestHelperCompletion)completion id:(NSString *)dressId targetUid:(NSString *)targetUid { - NSString * fang = [NSString stringFromBase64String:@"ZHJlc3Mvc2hvcC9naXZl"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, dressId, targetUid, nil]; +/// 赠送装扮 +/// @param completion 完成 +/// @param dressId 装扮ID +/// @param targetUid 目标用户UID ++ (void)requestSendDress:(HttpRequestHelperCompletion)completion id:(NSString *)dressId targetUid:(NSString *)targetUid { + NSString * fang = [NSString stringFromBase64String:@"ZHJlc3Mvc2hvcC9naXZl"];///dress/shop/give + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, dressId, targetUid, nil]; } @end diff --git a/YuMi/Modules/YMMine/View/DressUp/Model/CarMatrix.h b/YuMi/Modules/YMMine/View/DressUp/Model/CarMatrix.h deleted file mode 100644 index 54734924..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/Model/CarMatrix.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// CarMatrix.h -// YUMI -// -// Created by YUMI on 2021/12/16. -// - -#import -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -typedef enum { - Dressup_Car_Status_Down = 1, - Dressup_Car_Status_Expire = 2, - Dressup_Car_Status_Ok = 3 -}DressupCarStatus; - -@interface CarMatrix : NSObject -@property (nonatomic, assign) DressupCarStatus status; -@property (nonatomic, strong) NSString *pic; -@property (nonatomic, strong) NSString *carID; -@property (nonatomic, strong) NSString *name; -@property (nonatomic, assign) NSInteger expireDate; -@property (nonatomic, assign) BOOL isGive; -@property (nonatomic, assign) BOOL isUsed; -@property (nonatomic, assign) DressUpLabelGenre labelType; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/Model/CarMatrix.m b/YuMi/Modules/YMMine/View/DressUp/Model/CarMatrix.m deleted file mode 100644 index b688678f..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/Model/CarMatrix.m +++ /dev/null @@ -1,16 +0,0 @@ -// -// CarMatrix.m -// YUMI -// -// Created by YUMI on 2021/12/16. -// - -#import "CarMatrix.h" - -@implementation CarMatrix -+ (NSDictionary *)replacedDigitalByvirtueofMaintainertyConstitute { - return @{@"isUsed" : @"using", - @"carID" : @"id" - }; -} -@end diff --git a/YuMi/Modules/YMMine/View/DressUp/Model/CarModel.h b/YuMi/Modules/YMMine/View/DressUp/Model/CarModel.h new file mode 100644 index 00000000..b9bc5a52 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/Model/CarModel.h @@ -0,0 +1,36 @@ +// +// CarModel.h +// YUMI +// +// Created by YUMI on 2021/12/16. +// + +#import +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +typedef enum { + Dressup_Car_Status_Down = 1, //已下架 + Dressup_Car_Status_Expire = 2, //已过期 + Dressup_Car_Status_Ok = 3 //正常 +}DressupCarStatus; + +@interface CarModel : NSObject +@property (nonatomic, assign) DressupCarStatus status; //状态 +///座驾图片 +@property (nonatomic, strong) NSString *pic; +///id +@property (nonatomic, strong) NSString *carID; +///座驾名称 +@property (nonatomic, strong) NSString *name; +///失效时间 +@property (nonatomic, assign) NSInteger expireDate; +///是否是赠送的 +@property (nonatomic, assign) BOOL isGive; +///是否正在使用 +@property (nonatomic, assign) BOOL isUsed; +///标签类型 +@property (nonatomic, assign) DressUpLabelType labelType; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/Model/CarModel.m b/YuMi/Modules/YMMine/View/DressUp/Model/CarModel.m new file mode 100644 index 00000000..39aae776 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/Model/CarModel.m @@ -0,0 +1,16 @@ +// +// CarModel.m +// YUMI +// +// Created by YUMI on 2021/12/16. +// + +#import "CarModel.h" + +@implementation CarModel ++ (NSDictionary *)replacedKeyFromPropertyName { + return @{@"isUsed" : @"using", + @"carID" : @"id" + }; +} +@end diff --git a/YuMi/Modules/YMMine/View/DressUp/Model/ChatBubbleModel.h b/YuMi/Modules/YMMine/View/DressUp/Model/ChatBubbleModel.h new file mode 100644 index 00000000..0ce280f3 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/Model/ChatBubbleModel.h @@ -0,0 +1,31 @@ +// +// ChatBubbleModel.h +// YUMI +// +// Created by YUMI on 2022/3/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface ChatBubbleModel : NSObject + +///气泡id +@property (nonatomic, copy) NSString *bubbleId; +///气泡url +@property (nonatomic, strong) NSString *bubbleUrl; +///来源 +@property (nonatomic, assign) NSInteger comeFrom; +///过期天数 +@property (nonatomic, assign) NSInteger expireDays; +///气泡名称 +@property (nonatomic, copy) NSString *name; +///是否使用 +@property (nonatomic, assign) BOOL hasUsed; +///是否过期 +@property (nonatomic, assign) BOOL hasExpired; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/Model/ChatBubbleModel.m b/YuMi/Modules/YMMine/View/DressUp/Model/ChatBubbleModel.m new file mode 100644 index 00000000..66d5eed1 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/Model/ChatBubbleModel.m @@ -0,0 +1,12 @@ +// +// ChatBubbleModel.m +// YUMI +// +// Created by YUMI on 2022/3/18. +// + +#import "ChatBubbleModel.h" + +@implementation ChatBubbleModel + +@end diff --git a/YuMi/Modules/YMMine/View/DressUp/Model/ChatIntumesceMatrix.h b/YuMi/Modules/YMMine/View/DressUp/Model/ChatIntumesceMatrix.h deleted file mode 100644 index 7b731684..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/Model/ChatIntumesceMatrix.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// ChatIntumesceMatrix.h -// YUMI -// -// Created by YUMI on 2022/3/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface ChatIntumesceMatrix : NSObject - -@property (nonatomic, copy) NSString *bubbleId; -@property (nonatomic, strong) NSString *bubbleUrl; -@property (nonatomic, assign) NSInteger comeFrom; -@property (nonatomic, assign) NSInteger expireDays; -@property (nonatomic, copy) NSString *name; -@property (nonatomic, assign) BOOL hasUsed; -@property (nonatomic, assign) BOOL hasExpired; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/Model/ChatIntumesceMatrix.m b/YuMi/Modules/YMMine/View/DressUp/Model/ChatIntumesceMatrix.m deleted file mode 100644 index f1e11a3b..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/Model/ChatIntumesceMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ChatIntumesceMatrix.m -// YUMI -// -// Created by YUMI on 2022/3/18. -// - -#import "ChatIntumesceMatrix.h" - -@implementation ChatIntumesceMatrix - -@end diff --git a/YuMi/Modules/YMMine/View/DressUp/Model/DressUpShopModel.h b/YuMi/Modules/YMMine/View/DressUp/Model/DressUpShopModel.h new file mode 100644 index 00000000..2a39d088 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/Model/DressUpShopModel.h @@ -0,0 +1,33 @@ +// +// DressUpShopModel.h +// YUMI +// +// Created by YUMI on 2022/7/28. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface DressUpShopModel : NSObject + +///座驾图片 +@property (nonatomic, strong) NSString *pic; +///id +@property (nonatomic, strong) NSString *dressUpId; +/// +@property (nonatomic, copy) NSString *dressId; +///座驾名称 +@property (nonatomic, strong) NSString *name; +///天数 +@property (nonatomic, assign) NSInteger dressDay; +///价格 +@property (nonatomic, assign) NSInteger dressPrice; +///装扮类型 +@property (nonatomic, assign) NSInteger dressType; +///是否限时 0:限时,1:不限时 +@property (nonatomic, assign) NSInteger dressLimitStatus; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/Model/DressUpShopModel.m b/YuMi/Modules/YMMine/View/DressUp/Model/DressUpShopModel.m new file mode 100644 index 00000000..2fe3a57b --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/Model/DressUpShopModel.m @@ -0,0 +1,16 @@ +// +// DressUpShopModel.m +// YUMI +// +// Created by YUMI on 2022/7/28. +// + +#import "DressUpShopModel.h" + +@implementation DressUpShopModel + ++ (NSDictionary *)replacedKeyFromPropertyName { + return @{@"dressUpId": @"id"}; +} + +@end diff --git a/YuMi/Modules/YMMine/View/DressUp/Model/HeadwearModel.h b/YuMi/Modules/YMMine/View/DressUp/Model/HeadwearModel.h new file mode 100644 index 00000000..b042643b --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/Model/HeadwearModel.h @@ -0,0 +1,41 @@ +// +// HeadwearModel.h +// YUMI +// +// Created by YUMI on 2021/12/16. +// + +#import +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, DressupHeadWearStatus) { + Dressup_Headwear_Status_Ok = 1, //有效 + Dressup_Headwear_Status_Expire = 2,//已过期 + Dressup_Headwear_Status_Down = 3//已下架 +}; + + +@interface HeadwearModel : NSObject +///头饰id +@property (nonatomic, strong) NSString *headwearId; +///是否是赠送 +@property (nonatomic, assign) BOOL isGive; +///是否正在使用 +@property (nonatomic, assign) BOOL isUsed; +///标签类型 +@property (nonatomic, assign) DressUpLabelType labelType; +///头饰的名字 +@property (nonatomic, strong) NSString *headwearName; +///预览图链接 +@property (nonatomic, strong) NSString *pic; +///效果 +@property (nonatomic, strong) NSString *effect; +///还有过期 +@property (nonatomic, strong) NSString *expireDays; +///状态 +@property (nonatomic, assign) DressupHeadWearStatus status; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/Model/HeadwearModel.m b/YuMi/Modules/YMMine/View/DressUp/Model/HeadwearModel.m new file mode 100644 index 00000000..9af57dfa --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/Model/HeadwearModel.m @@ -0,0 +1,16 @@ +// +// HeadwearModel.m +// YUMI +// +// Created by YUMI on 2021/12/16. +// + +#import "HeadwearModel.h" + +@implementation HeadwearModel ++ (NSDictionary *)replacedKeyFromPropertyName { + return @{@"isUsed" : @"used", + @"isGive" : @"give" + }; +} +@end diff --git a/YuMi/Modules/YMMine/View/DressUp/Model/IntelligencewearMatrix.h b/YuMi/Modules/YMMine/View/DressUp/Model/IntelligencewearMatrix.h deleted file mode 100644 index 895ff3c3..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/Model/IntelligencewearMatrix.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// IntelligencewearMatrix.h -// YUMI -// -// Created by YUMI on 2021/12/16. -// - -#import -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, DressupHeadWearPosition) { - Dressup_Headwear_Status_Ok = 1, - Dressup_Headwear_Status_Expire = 2, - Dressup_Headwear_Status_Down = 3 -}; - - -@interface IntelligencewearMatrix : NSObject -@property (nonatomic, strong) NSString *headwearId; -@property (nonatomic, assign) BOOL isGive; -@property (nonatomic, assign) BOOL isUsed; -@property (nonatomic, assign) DressUpLabelGenre labelType; -@property (nonatomic, strong) NSString *headwearName; -@property (nonatomic, strong) NSString *pic; -@property (nonatomic, strong) NSString *effect; -@property (nonatomic, strong) NSString *expireDays; -@property (nonatomic, assign) DressupHeadWearPosition status; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/Model/IntelligencewearMatrix.m b/YuMi/Modules/YMMine/View/DressUp/Model/IntelligencewearMatrix.m deleted file mode 100644 index 8ad30b00..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/Model/IntelligencewearMatrix.m +++ /dev/null @@ -1,16 +0,0 @@ -// -// IntelligencewearMatrix.m -// YUMI -// -// Created by YUMI on 2021/12/16. -// - -#import "IntelligencewearMatrix.h" - -@implementation IntelligencewearMatrix -+ (NSDictionary *)replacedDigitalByvirtueofMaintainertyConstitute { - return @{@"isUsed" : @"used", - @"isGive" : @"give" - }; -} -@end diff --git a/YuMi/Modules/YMMine/View/DressUp/Model/MagnificentSolitaireMatrix.h b/YuMi/Modules/YMMine/View/DressUp/Model/MagnificentSolitaireMatrix.h deleted file mode 100644 index 62117873..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/Model/MagnificentSolitaireMatrix.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// MagnificentSolitaireMatrix.h -// YUMI -// -// Created by YUMI on 2022/1/6. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface MagnificentSolitaireMatrix : NSObject - -@property (nonatomic, copy) NSString *cardId; -@property (nonatomic, assign) NSInteger comeFrom; -@property (nonatomic, assign) NSInteger expireDays; -@property (nonatomic, strong) NSString *expireTime; -@property (nonatomic, assign) BOOL hasExpired; -@property (nonatomic, strong) NSString *name; -@property (nonatomic, strong) NSString *pic; -@property (nonatomic, assign) BOOL used; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/Model/MagnificentSolitaireMatrix.m b/YuMi/Modules/YMMine/View/DressUp/Model/MagnificentSolitaireMatrix.m deleted file mode 100644 index 33d91239..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/Model/MagnificentSolitaireMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// MagnificentSolitaireMatrix.m -// YUMI -// -// Created by YUMI on 2022/1/6. -// - -#import "MagnificentSolitaireMatrix.h" - -@implementation MagnificentSolitaireMatrix - -@end diff --git a/YuMi/Modules/YMMine/View/DressUp/Model/NameplateMatrix.h b/YuMi/Modules/YMMine/View/DressUp/Model/NameplateMatrix.h deleted file mode 100644 index 93e32db8..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/Model/NameplateMatrix.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// NameplateMatrix.h -// YUMI -// -// Created by YUMI on 2021/12/16. -// - -#import -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -@interface NameplateMatrix : NSObject -@property (nonatomic, assign) BOOL isUsing; -@property (nonatomic, copy) NSString * nId; -@property (nonatomic, strong) NSString *nameplateName; -@property (nonatomic, strong) NSString *nameplateImage; -@property (nonatomic, assign) BOOL isExpired; -@property (nonatomic,copy) NSString *expireDays; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/Model/NameplateMatrix.m b/YuMi/Modules/YMMine/View/DressUp/Model/NameplateMatrix.m deleted file mode 100644 index 73ef351c..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/Model/NameplateMatrix.m +++ /dev/null @@ -1,16 +0,0 @@ -// -// NameplateMatrix.m -// YUMI -// -// Created by YUMI on 2021/12/16. -// - -#import "NameplateMatrix.h" - -@implementation NameplateMatrix - -+ (NSDictionary *)replacedDigitalByvirtueofMaintainertyConstitute { - return @{@"nId": @"id"}; -} - -@end diff --git a/YuMi/Modules/YMMine/View/DressUp/Model/NameplateModel.h b/YuMi/Modules/YMMine/View/DressUp/Model/NameplateModel.h new file mode 100644 index 00000000..59b3edc4 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/Model/NameplateModel.h @@ -0,0 +1,27 @@ +// +// NameplateModel.h +// YUMI +// +// Created by YUMI on 2021/12/16. +// + +#import +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +@interface NameplateModel : NSObject +///是否正在使用 +@property (nonatomic, assign) BOOL isUsing; +///id +@property (nonatomic, copy) NSString * nId; +///名字 +@property (nonatomic, strong) NSString *nameplateName; +///铭牌的图片 +@property (nonatomic, strong) NSString *nameplateImage; +///是否过期 +@property (nonatomic, assign) BOOL isExpired; +///过期的天数 +@property (nonatomic,copy) NSString *expireDays; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/Model/NameplateModel.m b/YuMi/Modules/YMMine/View/DressUp/Model/NameplateModel.m new file mode 100644 index 00000000..11271eea --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/Model/NameplateModel.m @@ -0,0 +1,16 @@ +// +// NameplateModel.m +// YUMI +// +// Created by YUMI on 2021/12/16. +// + +#import "NameplateModel.h" + +@implementation NameplateModel + ++ (NSDictionary *)replacedKeyFromPropertyName { + return @{@"nId": @"id"}; +} + +@end diff --git a/YuMi/Modules/YMMine/View/DressUp/Model/NobleCardModel.h b/YuMi/Modules/YMMine/View/DressUp/Model/NobleCardModel.h new file mode 100644 index 00000000..63bf1ad2 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/Model/NobleCardModel.h @@ -0,0 +1,33 @@ +// +// NobleCardModel.h +// YUMI +// +// Created by YUMI on 2022/1/6. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface NobleCardModel : NSObject + +///资料卡id +@property (nonatomic, copy) NSString *cardId; +///来源:1:购买 2:官方赠送 +@property (nonatomic, assign) NSInteger comeFrom; +///过期时间(天) +@property (nonatomic, assign) NSInteger expireDays; +///过期时间 +@property (nonatomic, strong) NSString *expireTime; +///是否过期 +@property (nonatomic, assign) BOOL hasExpired; +///资料卡名字 +@property (nonatomic, strong) NSString *name; +///资料卡图片 +@property (nonatomic, strong) NSString *pic; +///是否使用中 +@property (nonatomic, assign) BOOL used; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/Model/NobleCardModel.m b/YuMi/Modules/YMMine/View/DressUp/Model/NobleCardModel.m new file mode 100644 index 00000000..60352d6b --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/Model/NobleCardModel.m @@ -0,0 +1,12 @@ +// +// NobleCardModel.m +// YUMI +// +// Created by YUMI on 2022/1/6. +// + +#import "NobleCardModel.h" + +@implementation NobleCardModel + +@end diff --git a/YuMi/Modules/YMMine/View/DressUp/Model/PretendUpwardsProcurementMatrix.h b/YuMi/Modules/YMMine/View/DressUp/Model/PretendUpwardsProcurementMatrix.h deleted file mode 100644 index 3c7f90a4..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/Model/PretendUpwardsProcurementMatrix.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// PretendUpwardsProcurementMatrix.h -// YUMI -// -// Created by YUMI on 2022/7/28. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface PretendUpwardsProcurementMatrix : NSObject - -@property (nonatomic, strong) NSString *pic; -@property (nonatomic, strong) NSString *dressUpId; -@property (nonatomic, copy) NSString *dressId; -@property (nonatomic, strong) NSString *name; -@property (nonatomic, assign) NSInteger dressDay; -@property (nonatomic, assign) NSInteger dressPrice; -@property (nonatomic, assign) NSInteger dressType; -@property (nonatomic, assign) NSInteger dressLimitStatus; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/Model/PretendUpwardsProcurementMatrix.m b/YuMi/Modules/YMMine/View/DressUp/Model/PretendUpwardsProcurementMatrix.m deleted file mode 100644 index 4ff2a102..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/Model/PretendUpwardsProcurementMatrix.m +++ /dev/null @@ -1,16 +0,0 @@ -// -// PretendUpwardsProcurementMatrix.m -// YUMI -// -// Created by YUMI on 2022/7/28. -// - -#import "PretendUpwardsProcurementMatrix.h" - -@implementation PretendUpwardsProcurementMatrix - -+ (NSDictionary *)replacedDigitalByvirtueofMaintainertyConstitute { - return @{@"dressUpId": @"id"}; -} - -@end diff --git a/YuMi/Modules/YMMine/View/DressUp/Presenter/XPDressUpShopPresenter.h b/YuMi/Modules/YMMine/View/DressUp/Presenter/XPDressUpShopPresenter.h new file mode 100644 index 00000000..7f6f3ef9 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/Presenter/XPDressUpShopPresenter.h @@ -0,0 +1,26 @@ +// +// YMDressUpShopPresenter.h +// YUMI +// +// Created by YUMI on 2022/7/28. +// + +#import "BaseMvpPresenter.h" +#import "XPDressUpShopProtocol.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPDressUpShopPresenter : BaseMvpPresenter + +/// 获取装扮商城列表 +/// @param type 类型 2:铭牌,0:头饰,1:座驾,3:资料卡,4:聊天气泡 +- (void)getDressUpShopList:(DressUpShopListType)type; + +/// 购买装扮 +/// @param dressType 装扮类型 +/// @param dressId 装扮id +- (void)buyDressUp:(DressUpShopListType)dressType dressId:(NSString *)dressId; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/Presenter/XPDressUpShopPresenter.m b/YuMi/Modules/YMMine/View/DressUp/Presenter/XPDressUpShopPresenter.m new file mode 100644 index 00000000..9824eac7 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/Presenter/XPDressUpShopPresenter.m @@ -0,0 +1,33 @@ +// +// YMDressUpShopPresenter.m +// YUMI +// +// Created by YUMI on 2022/7/28. +// + +#import "XPDressUpShopPresenter.h" +#import "Api+DressUp.h" +#import "DressUpShopModel.h" +#import "WalletInfoModel.h" + +@implementation XPDressUpShopPresenter + +/// 获取装扮商城列表 +/// @param type 类型 0:铭牌,1:头饰,2:座驾,3:资料卡,4:聊天气泡 +- (void)getDressUpShopList:(DressUpShopListType)type { + [Api requestDressUpShopList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray *array = [DressUpShopModel modelsWithArray:data.data]; + [[self getView] getShopListSuccess:array type:type]; + }] dressType:[NSString stringWithFormat:@"%ld", type]]; +} + +/// 购买装扮 +/// @param dressType 装扮类型 +/// @param dressId 装扮id +- (void)buyDressUp:(DressUpShopListType)dressType dressId:(NSString *)dressId { + [Api requestDressUpShopBuy:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] buyShopDressSuccessWithType:dressType]; + } showLoading:YES] id:dressId]; +} + +@end diff --git a/YuMi/Modules/YMMine/View/DressUp/Presenter/XPMineDressUpPresenter.h b/YuMi/Modules/YMMine/View/DressUp/Presenter/XPMineDressUpPresenter.h new file mode 100644 index 00000000..814cf572 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/Presenter/XPMineDressUpPresenter.h @@ -0,0 +1,41 @@ +// +// DressUpPresenter.h +// YUMI +// +// Created by YUMI on 2021/12/15. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineDressUpPresenter : BaseMvpPresenter +/// 获取用户头饰列表 +- (void)getUserHeadwearList; +/// 获取用户座驾列表 +- (void)getUserCarList; +/// 获取用户铭牌列表 +- (void)getUserNameplateList; +/// 获取用户贵族资料卡列表 +- (void)getUserNobleCardList; +/// 获取用户公屏聊天气泡列表 +- (void)getUserChatBubbleList; +/// 使用头饰 +/// @param headwearId 头饰的id 不使用的时候传0 +- (void)useHeader:(NSString *)headwearId; +/// 使用座驾 +/// @param carId 座驾的id 不使用的时候传0 +- (void)useCar:(NSString *)carId; +/// 使用铭牌 +/// @param userNameplateId 铭牌的id 不使用的时候传0 +- (void)useNameplate:(NSString *)userNameplateId; +/// 使用贵族资料卡 +/// @param nobleCardId 贵族资料卡的id 不使用的时候传0 +- (void)userNobleCard:(NSString *)nobleCardId; +/// 使用气泡 +/// @param bubbleId 气泡id +- (void)useBubble:(NSString *)bubbleId; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/Presenter/XPMineDressUpPresenter.m b/YuMi/Modules/YMMine/View/DressUp/Presenter/XPMineDressUpPresenter.m new file mode 100644 index 00000000..0737ed61 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/Presenter/XPMineDressUpPresenter.m @@ -0,0 +1,118 @@ +// +// DressUpPresenter.m +// YUMI +// +// Created by YUMI on 2021/12/15. +// + +#import "XPMineDressUpPresenter.h" +#import "Api+DressUp.h" +#import "XPMineDressUpProtocol.h" +#import "AccountInfoStorage.h" +///Model +#import "HeadwearModel.h" +#import "CarModel.h" +#import "NameplateModel.h" +#import "NobleCardModel.h" +#import "ChatBubbleModel.h" + +@implementation XPMineDressUpPresenter + + +/// 获取用户头饰列表 +- (void)getUserHeadwearList { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + [Api headwearList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [HeadwearModel modelsWithArray:data.data]; + [[self getView] getUserHeadwearListSuccess:array]; + }] ticket:ticket uid:uid]; +} + +/// 获取用户座驾列表 +- (void)getUserCarList { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + [Api carList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [CarModel modelsWithArray:data.data]; + [[self getView] getUserCarListSuccess:array]; + }] ticket:ticket uid:uid]; +} + +/// 获取用户铭牌列表 +- (void)getUserNameplateList { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + [Api nameplateList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [NameplateModel modelsWithArray:data.data[@"nameplateList"]]; + [[self getView] getUserNameplateListSuccess:array]; + }] ticket:ticket uid:uid page:@"1" pageSize:@"500"]; +} + +/// 获取用户贵族资料卡列表 +- (void)getUserNobleCardList { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + [Api nobleCardList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [NobleCardModel modelsWithArray:data.data]; + [[self getView] getUserNobleCardListSuccess:array]; + }] ticket:ticket uid:uid page:@"1" pageSize:@"500"]; +} + +/// 获取用户公屏聊天气泡列表 +- (void)getUserChatBubbleList { + [Api chatBubbleList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [ChatBubbleModel modelsWithArray:data.data]; + [[self getView] getUserChatBubbleListSuccess:array]; + }] page:@"1" pageSize:@"500"]; +} + +/// 使用头饰 +/// @param headwearId 头饰的id 不使用的时候传0 +- (void)useHeader:(NSString *)headwearId { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + [Api useHeadWear:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] useHeadwearSuccess:headwearId]; + } showLoading:YES] headwearId:headwearId ticket:ticket uid:uid]; +} + +/// 使用座驾 +/// @param carId 座驾的id 不使用的时候传0 +- (void)useCar:(NSString *)carId { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + [Api useCar:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] useCarSuccess:carId]; + } showLoading:YES] carId:carId ticket:ticket uid:uid]; +} + +/// 使用铭牌 +/// @param userNameplateId 铭牌的id 不使用的时候传0 +- (void)useNameplate:(NSString *)userNameplateId { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + [Api useNameplate:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] useNameplateSuccess:userNameplateId]; + } showLoading:YES] userNameplateId:userNameplateId ticket:ticket uid:uid]; +} + +/// 使用贵族资料卡 +/// @param nobleCardId 贵族资料卡的id 不使用的时候传0 +- (void)userNobleCard:(NSString *)nobleCardId { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + [Api useNobleCard:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] userNobleCardSuccess:nobleCardId]; + } showLoading:YES] cardId:nobleCardId ticket:ticket uid:uid]; +} + +/// 使用气泡 +/// @param bubbleId 气泡id +- (void)useBubble:(NSString *)bubbleId { + [Api useBubble:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] useBubbleSuccess:bubbleId]; + }] bubbleId:bubbleId]; +} + +@end diff --git a/YuMi/Modules/YMMine/View/DressUp/Presenter/YUMIManePretendUpwardsExternalizer.h b/YuMi/Modules/YMMine/View/DressUp/Presenter/YUMIManePretendUpwardsExternalizer.h deleted file mode 100644 index adc1eeb9..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/Presenter/YUMIManePretendUpwardsExternalizer.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// DressUpPresenter.h -// YUMI -// -// Created by YUMI on 2021/12/15. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManePretendUpwardsExternalizer : BaseMvpExternalizer -- (void)acquireConsumerApexknotSttowardsement; -- (void)acquireConsumerAutomobileSttowardsement; -- (void)acquireConsumerMtowardserialSttowardsement; -- (void)acquireConsumerMagnificentSolitaireSttowardsement; -- (void)acquireConsumerChinwagIntumesceSttowardsement; -- (void)utilizeIntelligencer:(NSString *)headwearId; -- (void)utilizeAutomobile:(NSString *)carId; -- (void)utilizeMtowardserial:(NSString *)userNameplateId; -- (void)consumerMagnificentSolitaire:(NSString *)nobleCardId; -- (void)utilizeIntumesce:(NSString *)bubbleId; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/Presenter/YUMIManePretendUpwardsExternalizer.m b/YuMi/Modules/YMMine/View/DressUp/Presenter/YUMIManePretendUpwardsExternalizer.m deleted file mode 100644 index aabc16fe..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/Presenter/YUMIManePretendUpwardsExternalizer.m +++ /dev/null @@ -1,102 +0,0 @@ -// -// DressUpPresenter.m -// YUMI -// -// Created by YUMI on 2021/12/15. -// - -#import "YUMIManePretendUpwardsExternalizer.h" -#import "Api+DressUp.h" -#import "FBCManePretendedCeremony.h" -#import "AccountAbstractStorage.h" -#import "IntelligencewearMatrix.h" -#import "CarMatrix.h" -#import "NameplateMatrix.h" -#import "MagnificentSolitaireMatrix.h" -#import "ChatIntumesceMatrix.h" - -@implementation YUMIManePretendUpwardsExternalizer - - -- (void)acquireConsumerApexknotSttowardsement { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - [Api intelligencewearSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [IntelligencewearMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireConsumerApexknotSttowardsementAccomplishment:array]; - }] ticket:ticket uid:uid]; -} - -- (void)acquireConsumerAutomobileSttowardsement { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - [Api automobileSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [CarMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireConsumerAutomobileSttowardsementAccomplishment:array]; - }] ticket:ticket uid:uid]; -} - -- (void)acquireConsumerMtowardserialSttowardsement { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - [Api mtowardserialSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [NameplateMatrix mtowardsrixsAboutGarment:data.data[@"nameplateList"]]; - [[self acquireRegard] acquireConsumerMtowardserialSttowardsementAccomplishment:array]; - }] ticket:ticket uid:uid page:@"1" pageSize:@"500"]; -} - -- (void)acquireConsumerMagnificentSolitaireSttowardsement { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - [Api magnificentSolitaireSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [MagnificentSolitaireMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireConsumerMagnificentSolitaireSttowardsementAccomplishment:array]; - }] ticket:ticket uid:uid page:@"1" pageSize:@"500"]; -} - -- (void)acquireConsumerChinwagIntumesceSttowardsement { - [Api chinwagIntumesceSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [ChatIntumesceMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireConsumerChinwagIntumesceSttowardsementAccomplishment:array]; - }] page:@"1" pageSize:@"500"]; -} - -- (void)utilizeIntelligencer:(NSString *)headwearId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - [Api utilizeIntelligencePenetrtowardse:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] utilizeApexknotAccomplishment:headwearId]; - } EvidenceChambering:YES] headwearId:headwearId ticket:ticket uid:uid]; -} - -- (void)utilizeAutomobile:(NSString *)carId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - [Api utilizeAutomobile:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] utilizeAutomobileAccomplishment:carId]; - } EvidenceChambering:YES] carId:carId ticket:ticket uid:uid]; -} - -- (void)utilizeMtowardserial:(NSString *)userNameplateId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - [Api utilizeMtowardserial:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] utilizeMtowardserialAccomplishment:userNameplateId]; - } EvidenceChambering:YES] userNameplateId:userNameplateId ticket:ticket uid:uid]; -} - -- (void)consumerMagnificentSolitaire:(NSString *)nobleCardId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - [Api utilizeMagnificentSolitaire:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] consumerMagnificentSolitaireAccomplishment:nobleCardId]; - } EvidenceChambering:YES] cardId:nobleCardId ticket:ticket uid:uid]; -} - -- (void)utilizeIntumesce:(NSString *)bubbleId { - [Api utilizeIntumesce:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] utilizeIntumesceAccomplishment:bubbleId]; - }] bubbleId:bubbleId]; -} - -@end diff --git a/YuMi/Modules/YMMine/View/DressUp/Presenter/YUMIPretendUpwardsProcurementExternalizer.h b/YuMi/Modules/YMMine/View/DressUp/Presenter/YUMIPretendUpwardsProcurementExternalizer.h deleted file mode 100644 index 8bedc1c8..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/Presenter/YUMIPretendUpwardsProcurementExternalizer.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMDressUpShopPresenter.h -// YUMI -// -// Created by YUMI on 2022/7/28. -// - -#import "BaseMvpExternalizer.h" -#import "FBCPretendedProcurementCeremony.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIPretendUpwardsProcurementExternalizer : BaseMvpExternalizer - -- (void)acquirePretconcludeedProcurementSttowardsement:(DressUpShopStatementGenre)type; - -- (void)acquirePretconcludeed:(DressUpShopStatementGenre)dressType dressId:(NSString *)dressId; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/Presenter/YUMIPretendUpwardsProcurementExternalizer.m b/YuMi/Modules/YMMine/View/DressUp/Presenter/YUMIPretendUpwardsProcurementExternalizer.m deleted file mode 100644 index 8ba7117c..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/Presenter/YUMIPretendUpwardsProcurementExternalizer.m +++ /dev/null @@ -1,28 +0,0 @@ -// -// YMDressUpShopPresenter.m -// YUMI -// -// Created by YUMI on 2022/7/28. -// - -#import "YUMIPretendUpwardsProcurementExternalizer.h" -#import "Api+DressUp.h" -#import "PretendUpwardsProcurementMatrix.h" -#import "RamparatetAbstractMatrix.h" - -@implementation YUMIPretendUpwardsProcurementExternalizer - -- (void)acquirePretconcludeedProcurementSttowardsement:(DressUpShopStatementGenre)type { - [Api requisitionPretconcludeedProcurementSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray *array = [PretendUpwardsProcurementMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireProcurementSttowardsementAccomplishment:array type:type]; - }] dressType:[NSString stringWithFormat:@"%ld", type]]; -} - -- (void)acquirePretconcludeed:(DressUpShopStatementGenre)dressType dressId:(NSString *)dressId { - [Api requisitionPretconcludeedProcurementAcquire:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] acquireProcurementPretconcludeAccomplishmentAboutGenre:dressType]; - } EvidenceChambering:YES] id:dressId]; -} - -@end diff --git a/YuMi/Modules/YMMine/View/DressUp/Protocol/FBCManePretendedCeremony.h b/YuMi/Modules/YMMine/View/DressUp/Protocol/FBCManePretendedCeremony.h deleted file mode 100644 index 028aded7..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/Protocol/FBCManePretendedCeremony.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YMMineDressUpProtocol.h -// YUMI -// -// Created by YUMI on 2021/12/15. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCManePretendedCeremony -- (void)acquireConsumerApexknotSttowardsementAccomplishment:(NSArray *)array; -- (void)acquireConsumerAutomobileSttowardsementAccomplishment:(NSArray *)array; -- (void)acquireConsumerMtowardserialSttowardsementAccomplishment:(NSArray *)array; -- (void)acquireConsumerMagnificentSolitaireSttowardsementAccomplishment:(NSArray *)array; -- (void)acquireConsumerChinwagIntumesceSttowardsementAccomplishment:(NSArray *)array; -- (void)utilizeApexknotAccomplishment:(NSString *)headWearId; -- (void)utilizeAutomobileAccomplishment:(NSString *)carId; -- (void)utilizeMtowardserialAccomplishment:(NSString *)nameplateId; -- (void)consumerMagnificentSolitaireAccomplishment:(NSString *)nobleCardId; -- (void)utilizeIntumesceAccomplishment:(NSString *)bubbleId; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/Protocol/FBCPretendedProcurementCeremony.h b/YuMi/Modules/YMMine/View/DressUp/Protocol/FBCPretendedProcurementCeremony.h deleted file mode 100644 index 72be1104..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/Protocol/FBCPretendedProcurementCeremony.h +++ /dev/null @@ -1,42 +0,0 @@ -// -// YMDressUpShopProtocol.h -// YUMI -// -// Created by YUMI on 2022/7/28. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, DressUpShopStatementGenre) { - DressUpShopStatementGenre_HeadWear = 0, - DressUpShopStatementGenre_Car, - DressUpShopStatementGenre_Nameplate, - DressUpShopStatementGenre_Noble, - DressUpShopStatementGenre_Bubble, -}; - -@class RamparatetAbstractMatrix; -@protocol FBCPretendedProcurementCeremony - -- (void)acquireConsumerPocketbookAbstract:(RamparatetAbstractMatrix *)balanceInfo; - -- (void)acquireProcurementSttowardsementAccomplishment:(NSArray *)array type:(DressUpShopStatementGenre)type; - -- (void)acquireProcurementPretconcludeAccomplishmentAboutGenre:(DressUpShopStatementGenre)type; - -- (void)acquireConsumerApexknotSttowardsementAccomplishment:(NSArray *)array; -- (void)acquireConsumerAutomobileSttowardsementAccomplishment:(NSArray *)array; -- (void)acquireConsumerMtowardserialSttowardsementAccomplishment:(NSArray *)array; -- (void)acquireConsumerMagnificentSolitaireSttowardsementAccomplishment:(NSArray *)array; -- (void)acquireConsumerChinwagIntumesceSttowardsementAccomplishment:(NSArray *)array; -- (void)utilizeApexknotAccomplishment:(NSString *)headWearId; -- (void)utilizeAutomobileAccomplishment:(NSString *)carId; -- (void)utilizeMtowardserialAccomplishment:(NSString *)nameplateId; -- (void)consumerMagnificentSolitaireAccomplishment:(NSString *)nobleCardId; -- (void)utilizeIntumesceAccomplishment:(NSString *)bubbleId; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/Protocol/XPDressUpShopProtocol.h b/YuMi/Modules/YMMine/View/DressUp/Protocol/XPDressUpShopProtocol.h new file mode 100644 index 00000000..d64608e3 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/Protocol/XPDressUpShopProtocol.h @@ -0,0 +1,55 @@ +// +// YMDressUpShopProtocol.h +// YUMI +// +// Created by YUMI on 2022/7/28. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, DressUpShopListType) { + DressUpShopListType_HeadWear = 0, + DressUpShopListType_Car, + DressUpShopListType_Nameplate, + DressUpShopListType_Noble, + DressUpShopListType_Bubble, +}; + +@class WalletInfoModel; +@protocol XPDressUpShopProtocol + +///获取账户余额 +- (void)getUserWalletInfo:(WalletInfoModel *)balanceInfo; + +///获取商城装扮列表成功 +- (void)getShopListSuccess:(NSArray *)array type:(DressUpShopListType)type; + +///购买装扮成功 +- (void)buyShopDressSuccessWithType:(DressUpShopListType)type; + +///获取用户头饰列表成功 +- (void)getUserHeadwearListSuccess:(NSArray *)array; +///获取用户头饰列表成功 +- (void)getUserCarListSuccess:(NSArray *)array; +///获取用户头饰列表成功 +- (void)getUserNameplateListSuccess:(NSArray *)array; +///获取用户贵族资料卡成功 +- (void)getUserNobleCardListSuccess:(NSArray *)array; +///获取用户公屏气泡成功 +- (void)getUserChatBubbleListSuccess:(NSArray *)array; +///使用头饰成功 +- (void)useHeadwearSuccess:(NSString *)headWearId; +///使用座驾成功 +- (void)useCarSuccess:(NSString *)carId; +///使用铭牌成功 +- (void)useNameplateSuccess:(NSString *)nameplateId; +///使用贵族资料卡成功 +- (void)userNobleCardSuccess:(NSString *)nobleCardId; +///使用气泡成功 +- (void)useBubbleSuccess:(NSString *)bubbleId; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/Protocol/XPMineDressUpProtocol.h b/YuMi/Modules/YMMine/View/DressUp/Protocol/XPMineDressUpProtocol.h new file mode 100644 index 00000000..da56473d --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/Protocol/XPMineDressUpProtocol.h @@ -0,0 +1,36 @@ +// +// YMMineDressUpProtocol.h +// YUMI +// +// Created by YUMI on 2021/12/15. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMineDressUpProtocol +///获取用户头饰列表成功 +- (void)getUserHeadwearListSuccess:(NSArray *)array; +///获取用户头饰列表成功 +- (void)getUserCarListSuccess:(NSArray *)array; +///获取用户头饰列表成功 +- (void)getUserNameplateListSuccess:(NSArray *)array; +///获取用户贵族资料卡成功 +- (void)getUserNobleCardListSuccess:(NSArray *)array; +///获取用户公屏气泡成功 +- (void)getUserChatBubbleListSuccess:(NSArray *)array; +///使用头饰成功 +- (void)useHeadwearSuccess:(NSString *)headWearId; +///使用座驾成功 +- (void)useCarSuccess:(NSString *)carId; +///使用铭牌成功 +- (void)useNameplateSuccess:(NSString *)nameplateId; +///使用贵族资料卡成功 +- (void)userNobleCardSuccess:(NSString *)nobleCardId; +///使用气泡成功 +- (void)useBubbleSuccess:(NSString *)bubbleId; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPDressShopSearchTableViewCell.h b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPDressShopSearchTableViewCell.h new file mode 100644 index 00000000..2a6b817f --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPDressShopSearchTableViewCell.h @@ -0,0 +1,26 @@ +// +// YMDressShopSearchTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/7/29. +// + +#import +#import "HomeSearchResultModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@class XPDressShopSearchTableViewCell; +@protocol XPDressShopSearchTableViewCellDelegate + +- (void)xPDressShopSearchTableViewCellSendButtonClick:(XPDressShopSearchTableViewCell *)cell; + +@end +@interface XPDressShopSearchTableViewCell : UITableViewCell + +@property (nonatomic, strong) HomeSearchResultModel *data; +@property (nonatomic, weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPDressShopSearchTableViewCell.m b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPDressShopSearchTableViewCell.m new file mode 100644 index 00000000..e1a5bd04 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPDressShopSearchTableViewCell.m @@ -0,0 +1,183 @@ +// +// YMDressShopSearchTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/7/29. +// + +#import "XPDressShopSearchTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +///Model +#import "HomeSearchResultModel.h" +///View +#import "NetImageView.h" + +@interface XPDressShopSearchTableViewCell () + +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///名字的容器 +@property (nonatomic,strong) UIStackView *nameStackView; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///性别 +@property (nonatomic,strong) UIImageView *sexImageView; +///显示id +@property (nonatomic,strong) UILabel *idLabel; +///分割线 +@property (nonatomic,strong) UIView * lineView; +///赠送 +@property (nonatomic, strong) UIButton *sendButton; + +@end + +@implementation XPDressShopSearchTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Public Method +- (void)setData:(HomeSearchResultModel *)data { + if (data) { + self.avatarImageView.imageUrl = data.avatar; + self.nickLabel.text = data.nick; + self.idLabel.text = [NSString stringWithFormat:@"%@号:%@",AppName, data.erbanNo]; + self.sexImageView.image = data.gender == GenderType_Female ? [UIImage imageNamed:@"common_female"] : [UIImage imageNamed:@"common_male"]; + } +} + +#pragma mark - Private Method +- (void)initSubViews { + self.selectionStyle = UITableViewCellSelectionStyleNone; + self.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.nameStackView]; + [self.contentView addSubview:self.idLabel]; + [self.contentView addSubview:self.sendButton]; + [self.contentView addSubview:self.lineView]; + [self.nameStackView addArrangedSubview:self.nickLabel]; + [self.nameStackView addArrangedSubview:self.sexImageView]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(45, 45)); + make.left.mas_equalTo(self.contentView).offset(15); + make.centerY.mas_equalTo(self.contentView); + }]; + + [self.nameStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(13); + make.height.mas_equalTo(20); + make.bottom.mas_equalTo(self.avatarImageView.mas_centerY).offset(-1.5); + }]; + + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nameStackView); + make.top.mas_equalTo(self.avatarImageView.mas_centerY).offset(1.5); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nameStackView); + make.right.mas_equalTo(self.contentView).offset(-15); + make.bottom.mas_equalTo(self.contentView); + make.height.mas_equalTo(1); + }]; + + [self.sendButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.contentView).offset(-15); + make.centerY.mas_equalTo(self.contentView); + make.size.mas_equalTo(CGSizeMake(72, 24)); + }]; +} + +#pragma mark - Event Response +- (void)sendButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPDressShopSearchTableViewCellSendButtonClick:)]) { + [self.delegate xPDressShopSearchTableViewCellSendButtonClick:self]; + } +} + +#pragma mark - Getters And Setters +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 45/2; + _avatarImageView.contentMode = UIViewContentModeScaleAspectFill; + } + return _avatarImageView; +} + +- (UIStackView *)nameStackView { + if (!_nameStackView) { + _nameStackView = [[UIStackView alloc] init]; + _nameStackView.axis = UILayoutConstraintAxisHorizontal; + _nameStackView.distribution = UIStackViewDistributionFill; + _nameStackView.alignment = UIStackViewAlignmentCenter; + _nameStackView.spacing = 2; + } + return _nameStackView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.text = @""; + _nickLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:15]; + _nickLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _nickLabel; +} + +- (UIImageView *)sexImageView { + if (!_sexImageView) { + _sexImageView = [[UIImageView alloc] init]; + } + return _sexImageView; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.font = [UIFont systemFontOfSize:13]; + _idLabel.textColor = [DJDKMIMOMColor textThirdColor]; + } + return _idLabel; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _lineView; +} + +- (UIButton *)sendButton { + if (!_sendButton) { + _sendButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_sendButton setTitle:YMLocalizedString(@"XPDressShopSearchTableViewCell1") forState:UIControlStateNormal]; + [_sendButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_sendButton addTarget:self action:@selector(sendButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _sendButton.layer.masksToBounds = YES; + _sendButton.layer.cornerRadius = 24/2; + _sendButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_sendButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } + return _sendButton; +} + +@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPDressUpShopCardTableViewCell.h b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPDressUpShopCardTableViewCell.h new file mode 100644 index 00000000..e7405369 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPDressUpShopCardTableViewCell.h @@ -0,0 +1,30 @@ +// +// YMDressUpShopCardTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/7/29. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class DressUpShopModel, XPDressUpShopCardTableViewCell; +@protocol XPDressUpShopCardTableViewCellDelegate + +///赠送装扮 +- (void)xPDressUpShopCardTableViewCellSendDress:(XPDressUpShopCardTableViewCell *)view dressId:(NSString *)dressId; +///购买装扮 +- (void)xPDressUpShopCardTableViewCellBuyDress:(XPDressUpShopCardTableViewCell *)view dressId:(NSString *)dressId; + +@end + +@interface XPDressUpShopCardTableViewCell : UITableViewCell + +@property (nonatomic,strong) DressUpShopModel *nobleCardModel; +///代理 +@property (nonatomic,weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPDressUpShopCardTableViewCell.m b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPDressUpShopCardTableViewCell.m new file mode 100644 index 00000000..49317c9d --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPDressUpShopCardTableViewCell.m @@ -0,0 +1,268 @@ +// +// YMDressUpShopCardTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/7/29. +// + +#import "XPDressUpShopCardTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "UIImage+Utils.h" +#import "YUMIMacroUitls.h" +///Model +#import "DressUpShopModel.h" + +@interface XPDressUpShopCardTableViewCell() + +///容器view +@property (nonatomic, strong) UIView *mainView; +///卡片背景 +@property (nonatomic, strong) UIView *userCardBackView; +///卡片底图 +@property (nonatomic, strong) UIImageView *userCardBackImageView; +///卡片外边框 +@property (nonatomic, strong) NetImageView *nobleImageView; +///名字 +@property (nonatomic, strong) UILabel *titleLabel; +///钻石图标 +@property (nonatomic, strong) UIImageView *diamondImageView; +///钻石金额 +@property (nonatomic, strong) UILabel *diamondLabel; +///赠送 +@property (nonatomic, strong) UIButton *sendButton; +///使用 +@property (nonatomic,strong) UIButton *useButton; +///限时背景 +@property (nonatomic, strong) UIView *limitTimeBgView; +///限时 +@property (nonatomic, strong) UILabel *limitLabel; + +@end + +@implementation XPDressUpShopCardTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor];; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.mainView]; + [self.mainView addSubview:self.userCardBackView]; + [self.mainView addSubview:self.userCardBackImageView]; + [self.mainView addSubview:self.nobleImageView]; + [self.mainView addSubview:self.titleLabel]; + [self.mainView addSubview:self.diamondImageView]; + [self.mainView addSubview:self.diamondLabel]; + [self.mainView addSubview:self.sendButton]; + [self.mainView addSubview:self.useButton]; + [self.mainView addSubview:self.limitTimeBgView]; + [self.limitTimeBgView addSubview:self.limitLabel]; +} + +- (void)initSubViewConstraints { + [self.mainView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(268); + make.left.right.mas_equalTo(self).inset(15); + make.top.mas_equalTo(12); + }]; + [self.userCardBackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(0); + make.height.mas_equalTo(180); + }]; + [self.userCardBackImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(110); + make.width.mas_equalTo(285); + make.bottom.mas_equalTo(self.userCardBackView).mas_offset(-4); + make.centerX.mas_equalTo(self.mainView); + }]; + [self.nobleImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(180); + make.width.mas_equalTo(330); + make.bottom.mas_equalTo(self.userCardBackImageView); + make.centerX.mas_equalTo(self.mainView); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(12); + make.top.mas_equalTo(self.userCardBackView.mas_bottom).mas_offset(14); + make.height.mas_equalTo(14); + }]; + [self.diamondImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.diamondLabel.mas_left).mas_offset(-4); + make.size.mas_equalTo(CGSizeMake(11, 11)); + make.centerY.mas_equalTo(self.titleLabel); + }]; + [self.diamondLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.titleLabel); + make.right.mas_equalTo(-12); + make.height.mas_equalTo(20); + }]; + CGFloat width = (KScreenWidth - 30-20-12) *0.5; + [self.sendButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(width, 32)); + make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(16); + make.right.mas_equalTo(self.mas_centerX).mas_offset(-6); + }]; + [self.useButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.mas_centerX).mas_offset(6); + make.size.mas_equalTo(self.sendButton); + make.centerY.mas_equalTo(self.sendButton); + }]; + [self.limitTimeBgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.right.mas_equalTo(self.userCardBackView); + make.size.mas_equalTo(CGSizeMake(36, 20)); + }]; + [self.limitLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.limitTimeBgView); + }]; +} + +#pragma mark - private + +- (void)setNobleCardModel:(DressUpShopModel *)nobleCardModel { + _nobleCardModel = nobleCardModel; + if (_nobleCardModel) { + self.titleLabel.text = [NSString stringWithFormat:@"%@(%zd天)", nobleCardModel.name, nobleCardModel.dressDay]; + self.nobleImageView.imageUrl = nobleCardModel.pic; + self.diamondLabel.text = [NSString stringWithFormat:@"%zd", nobleCardModel.dressPrice]; + self.limitTimeBgView.hidden = (nobleCardModel.dressLimitStatus != 0); + } +} + +#pragma mark - Event Response +- (void)sendButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPDressUpShopCardTableViewCellSendDress:dressId:)]) { + [self.delegate xPDressUpShopCardTableViewCellSendDress:self dressId:self.nobleCardModel.dressUpId]; + } +} + +- (void)useButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPDressUpShopCardTableViewCellBuyDress:dressId:)]) { + [self.delegate xPDressUpShopCardTableViewCellBuyDress:self dressId:self.nobleCardModel.dressUpId]; + } +} + +#pragma mark - Getter && Setter +- (UIView *)mainView { + if (!_mainView) { + _mainView = [[UIView alloc] init]; + _mainView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _mainView.layer.cornerRadius = 10; + _mainView.layer.masksToBounds = YES; + } + return _mainView; +} + +- (UIView *)userCardBackView { + if (!_userCardBackView) { + _userCardBackView = [[UIView alloc] init]; + _userCardBackView.backgroundColor = UIColorFromRGB(0xEAE5FC); + } + return _userCardBackView;; +} + +- (NetImageView *)nobleImageView { + if (!_nobleImageView) { + _nobleImageView = [[NetImageView alloc] init]; + _nobleImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _nobleImageView;; +} + +- (UIImageView *)userCardBackImageView { + if (!_userCardBackImageView) { + _userCardBackImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"mine_dressup_noble_bg"]]; + _userCardBackImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _userCardBackImageView;; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +- (UIImageView *)diamondImageView { + if (!_diamondImageView) { + _diamondImageView = [[UIImageView alloc] init]; + _diamondImageView.image = [UIImage imageNamed:@"common_diamond"]; + } + return _diamondImageView; +} + +- (UILabel *)diamondLabel { + if (!_diamondLabel) { + _diamondLabel = [[UILabel alloc] init]; + _diamondLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; + _diamondLabel.textColor = UIColorFromRGB(0xFFBC51); + } + return _diamondLabel; +} + +- (UIButton *)sendButton { + if (!_sendButton) { + _sendButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_sendButton setTitle:YMLocalizedString(@"XPDressUpShopCardTableViewCell1") forState:UIControlStateNormal]; + [_sendButton setTitleColor:UIColorFromRGB(0xFFA936) forState:UIControlStateNormal]; + [_sendButton addTarget:self action:@selector(sendButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _sendButton.layer.masksToBounds = YES; + _sendButton.layer.cornerRadius = 32/2; + _sendButton.titleLabel.font = [UIFont systemFontOfSize:12]; + _sendButton.backgroundColor = UIColorFromRGB(0xFFF0C9); + } + return _sendButton; +} + +- (UIButton *)useButton { + if (!_useButton) { + _useButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_useButton setTitle:YMLocalizedString(@"XPDressUpShopCardTableViewCell2") forState:UIControlStateNormal]; + [_useButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_useButton addTarget:self action:@selector(useButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _useButton.layer.masksToBounds = YES; + _useButton.layer.cornerRadius = 32/2; + _useButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_useButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } + return _useButton; +} + +- (UIView *)limitTimeBgView { + if (!_limitTimeBgView) { + _limitTimeBgView = [[UIView alloc] init]; + _limitTimeBgView.backgroundColor = UIColorFromRGB(0xFB486A); + CAShapeLayer * layer = [CAShapeLayer layer]; + UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 36, 20) byRoundingCorners:UIRectCornerBottomLeft cornerRadii:CGSizeMake(10, 10)]; + layer.path = path.CGPath; + _limitTimeBgView.layer.masksToBounds = YES; + _limitTimeBgView.layer.mask = layer; + + } + return _limitTimeBgView; +} + +- (UILabel *)limitLabel { + if (!_limitLabel) { + _limitLabel = [[UILabel alloc] init]; + _limitLabel.text = YMLocalizedString(@"XPDressUpShopCardTableViewCell3"); + _limitLabel.textColor = [UIColor whiteColor]; + _limitLabel.font = [UIFont systemFontOfSize:10]; + _limitLabel.textAlignment = NSTextAlignmentCenter; + } + return _limitLabel; +} +@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPDressUpShopCollectionViewCell.h b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPDressUpShopCollectionViewCell.h new file mode 100644 index 00000000..5bb184c2 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPDressUpShopCollectionViewCell.h @@ -0,0 +1,31 @@ +// +// YMDressUpShopCollectionViewCell.h +// YUMI +// +// Created by YUMI on 2022/7/29. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class DressUpShopModel, XPDressUpShopCollectionViewCell; + +@protocol XPDressUpShopCollectionViewCellDelegate + +///赠送装扮 +- (void)xPDressUpShopCollectionViewCellSendDress:(XPDressUpShopCollectionViewCell *)view dressId:(NSString *)dressId; +///购买装扮 +- (void)xPDressUpShopCollectionViewCellBuyDress:(XPDressUpShopCollectionViewCell *)view dressId:(NSString *)dressId; + +@end + +@interface XPDressUpShopCollectionViewCell : UICollectionViewCell + +@property (nonatomic, strong) DressUpShopModel *dressUpModel; + +@property (nonatomic,weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPDressUpShopCollectionViewCell.m b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPDressUpShopCollectionViewCell.m new file mode 100644 index 00000000..34054a97 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPDressUpShopCollectionViewCell.m @@ -0,0 +1,249 @@ +// +// YMDressUpShopCollectionViewCell.m +// YUMI +// +// Created by YUMI on 2022/7/29. +// + +#import "XPDressUpShopCollectionViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "UIImage+Utils.h" +#import "YUMIMacroUitls.h" +///Model +#import "DressUpShopModel.h" + +@interface XPDressUpShopCollectionViewCell() + +///容器view +@property (nonatomic, strong) UIView *mainView; +///卡片底图 +@property (nonatomic, strong) UIView *userCardBackView; +///装扮图 +@property (nonatomic, strong) NetImageView *dressUpImageView; +///名字 +@property (nonatomic, strong) UILabel *titleLabel; +///钻石图标 +@property (nonatomic, strong) UIImageView *diamondImageView; +///钻石金额 +@property (nonatomic, strong) UILabel *diamondLabel; +///赠送 +@property (nonatomic, strong) UIButton *sendButton; +///使用 +@property (nonatomic,strong) UIButton *useButton; +///限时背景 +@property (nonatomic, strong) UIView *limitTimeBgView; +///限时 +@property (nonatomic, strong) UILabel *limitLabel; + +@end + + +@implementation XPDressUpShopCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.mainView]; + [self.mainView addSubview:self.userCardBackView]; + [self.mainView addSubview:self.dressUpImageView]; + [self.mainView addSubview:self.titleLabel]; + [self.mainView addSubview:self.diamondImageView]; + [self.mainView addSubview:self.diamondLabel]; + [self.mainView addSubview:self.sendButton]; + [self.mainView addSubview:self.useButton]; + [self.mainView addSubview:self.limitTimeBgView]; + [self.limitTimeBgView addSubview:self.limitLabel]; +} + +- (void)initSubViewConstraints { + [self.mainView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; + [self.userCardBackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(92); + make.left.top.right.mas_equalTo(0); + }]; + CGFloat dressImageW = (KScreenWidth - 42) *0.5; + [self.dressUpImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(dressImageW * 0.7, 70)); + make.top.mas_equalTo(11); + make.centerX.mas_equalTo(self.userCardBackView); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(8); + make.top.mas_equalTo(self.userCardBackView.mas_bottom).mas_offset(8); + make.height.mas_equalTo(14); + }]; + + [self.diamondImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.titleLabel); + make.size.mas_equalTo(CGSizeMake(11, 11)); + make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(12); + }]; + [self.diamondLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.diamondImageView); + make.left.mas_equalTo(self.diamondImageView.mas_right).mas_offset(4); + make.height.mas_equalTo(17); + }]; + CGFloat width = ((KScreenWidth - 42) *0.5 - 16-6) *0.5; + [self.sendButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(width, 24)); + make.top.mas_equalTo(self.diamondImageView.mas_bottom).mas_offset(17); + make.right.mas_equalTo(self.mas_centerX).mas_offset(-3); + }]; + [self.useButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.mas_centerX).mas_offset(3); + make.size.mas_equalTo(self.sendButton); + make.centerY.mas_equalTo(self.sendButton); + }]; + [self.limitTimeBgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.right.mas_equalTo(self.userCardBackView); + make.size.mas_equalTo(CGSizeMake(36, 20)); + }]; + [self.limitLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.limitTimeBgView); + }]; +} + +#pragma mark - private +- (void)setDressUpModel:(DressUpShopModel *)dressUpModel { + _dressUpModel = dressUpModel; + if (dressUpModel) { + self.titleLabel.text = [NSString stringWithFormat:@"%@(%zd天)", dressUpModel.name, dressUpModel.dressDay]; + self.dressUpImageView.imageUrl = dressUpModel.pic; + self.diamondLabel.text = [NSString stringWithFormat:@"%zd", dressUpModel.dressPrice]; + self.limitTimeBgView.hidden = (dressUpModel.dressLimitStatus != 0); + } +} + +#pragma mark - Event Response +- (void)sendButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPDressUpShopCollectionViewCellSendDress:dressId:)]) { + [self.delegate xPDressUpShopCollectionViewCellSendDress:self dressId:self.dressUpModel.dressUpId]; + } +} + +- (void)useButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPDressUpShopCollectionViewCellBuyDress:dressId:)]) { + [self.delegate xPDressUpShopCollectionViewCellBuyDress:self dressId:self.dressUpModel.dressUpId]; + } +} + +#pragma mark - Getter && Setter +- (UIView *)mainView { + if (!_mainView) { + _mainView = [[UIView alloc] init]; + _mainView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _mainView.layer.cornerRadius = 10; + _mainView.layer.masksToBounds = YES; + } + return _mainView; +} + +- (UIView *)userCardBackView { + if (!_userCardBackView) { + _userCardBackView = [[UIView alloc] init]; + _userCardBackView.backgroundColor = UIColorFromRGB(0xEAE5FC); + } + return _userCardBackView;; +} + +- (NetImageView *)dressUpImageView { + if (!_dressUpImageView) { + _dressUpImageView = [[NetImageView alloc] init]; + _dressUpImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _dressUpImageView;; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +- (UIImageView *)diamondImageView { + if (!_diamondImageView) { + _diamondImageView = [[UIImageView alloc] init]; + _diamondImageView.image = [UIImage imageNamed:@"common_diamond"]; + } + return _diamondImageView; +} + +- (UILabel *)diamondLabel { + if (!_diamondLabel) { + _diamondLabel = [[UILabel alloc] init]; + _diamondLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightBold]; + _diamondLabel.textColor = UIColorFromRGB(0xFFBC51); + } + return _diamondLabel; +} + +- (UIButton *)sendButton { + if (!_sendButton) { + _sendButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_sendButton setTitle:YMLocalizedString(@"XPDressUpShopCollectionViewCell1") forState:UIControlStateNormal]; + [_sendButton setTitleColor:UIColorFromRGB(0xFFA936) forState:UIControlStateNormal]; + [_sendButton addTarget:self action:@selector(sendButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _sendButton.layer.masksToBounds = YES; + _sendButton.layer.cornerRadius = 24/2; + _sendButton.titleLabel.font = [UIFont systemFontOfSize:12]; + _sendButton.backgroundColor = UIColorFromRGB(0xFFF0C9); + } + return _sendButton; +} + +- (UIButton *)useButton { + if (!_useButton) { + _useButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_useButton setTitle:YMLocalizedString(@"XPDressUpShopCollectionViewCell2") forState:UIControlStateNormal]; + [_useButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_useButton addTarget:self action:@selector(useButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _useButton.layer.masksToBounds = YES; + _useButton.layer.cornerRadius = 24/2; + _useButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_useButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } + return _useButton; +} + +- (UIView *)limitTimeBgView { + if (!_limitTimeBgView) { + _limitTimeBgView = [[UIView alloc] init]; + _limitTimeBgView.backgroundColor = UIColorFromRGB(0xFB486A); + CAShapeLayer * layer = [CAShapeLayer layer]; + UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 36, 20) byRoundingCorners:UIRectCornerBottomLeft cornerRadii:CGSizeMake(10, 10)]; + layer.path = path.CGPath; + _limitTimeBgView.layer.masksToBounds = YES; + _limitTimeBgView.layer.mask = layer; + + } + return _limitTimeBgView; +} + +- (UILabel *)limitLabel { + if (!_limitLabel) { + _limitLabel = [[UILabel alloc] init]; + _limitLabel.text = YMLocalizedString(@"XPDressUpShopCollectionViewCell3"); + _limitLabel.textColor = [UIColor whiteColor]; + _limitLabel.font = [UIFont systemFontOfSize:10]; + _limitLabel.textAlignment = NSTextAlignmentCenter; + } + return _limitLabel; +} + +@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineCarTableViewCell.h b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineCarTableViewCell.h new file mode 100644 index 00000000..fa5c5d69 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineCarTableViewCell.h @@ -0,0 +1,23 @@ +// +// YMMineCarTableViewCell.h +// YUMI +// +// Created by YUMI on 2021/12/15. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class CarModel,XPMineCarTableViewCell; +@protocol XPMineCarTableViewCellDelegate +///使用座驾 +- (void)xPMineCarTableViewCell:(XPMineCarTableViewCell *)cell carId:(NSString *)carId; + +@end +@interface XPMineCarTableViewCell : UITableViewCell +@property (nonatomic,strong) CarModel *carInfo; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineCarTableViewCell.m b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineCarTableViewCell.m new file mode 100644 index 00000000..7ebd3f17 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineCarTableViewCell.m @@ -0,0 +1,247 @@ +// +// YMMineCarTableViewCell.m +// YUMI +// +// Created by YUMI on 2021/12/15. +// + +#import "XPMineCarTableViewCell.h" +///Third +#import +///Tool +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "UIImage+Utils.h" +///Model +#import "CarModel.h" + +@interface XPMineCarTableViewCell () +///座驾 +@property (nonatomic,strong) NetImageView *carImageView; +///名字 +@property (nonatomic,strong) UIStackView *nameStackView; +///头饰名字 +@property (nonatomic, strong) UIImageView *giveImageView; +///名字 +@property (nonatomic, strong) UILabel *titleLabel; +///还有多少时间 +@property (nonatomic,strong) UIStackView *timeStackView; +///剩余天数 +@property (nonatomic, strong) UILabel *timeLabel; +///使用 +@property (nonatomic,strong) UIButton *useButton; +///显示分割线 +@property (nonatomic,strong) UIView * lineView; +/// 限定 新 +@property (nonatomic,strong) UIImageView *limitImageView; +@end + +@implementation XPMineCarTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor];; + [self.contentView addSubview:self.carImageView]; + [self.contentView addSubview:self.nameStackView]; + [self.contentView addSubview:self.timeStackView]; + [self.contentView addSubview:self.useButton]; + [self.contentView addSubview:self.lineView]; + [self.contentView addSubview:self.limitImageView]; + + [self.nameStackView addArrangedSubview:self.giveImageView]; + [self.nameStackView addArrangedSubview:self.titleLabel]; + + [self.timeStackView addArrangedSubview:self.timeLabel]; + +} + +- (void)initSubViewConstraints { + [self.carImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(68); + make.width.mas_equalTo(102); + make.centerY.mas_equalTo(self.contentView); + make.left.mas_equalTo(self.contentView).offset(20); + }]; + + + [self.nameStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.carImageView.mas_right).offset(10); + make.bottom.mas_equalTo(self.carImageView.mas_centerY).offset(-3); + }]; + + [self.giveImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(11, 11)); + }]; + + [self.timeStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nameStackView); + make.top.mas_equalTo(self.carImageView.mas_centerY).offset(3); + make.height.mas_equalTo(13); + }]; + + [self.useButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self); + make.right.mas_equalTo(self.contentView).offset(-15); + make.height.mas_equalTo(33); + make.width.mas_equalTo(85); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.contentView).offset(105); + make.height.mas_equalTo(0.5); + make.bottom.mas_equalTo(self.contentView); + make.right.mas_equalTo(self.contentView).offset(-15); + }]; + + [self.limitImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.left.mas_equalTo(self.contentView).offset(20); + make.width.height.mas_equalTo(20); + }]; +} + +#pragma mark - private +- (void)setCarInfo:(CarModel *)carInfo { + _carInfo = carInfo; + if (_carInfo) { + self.titleLabel.text = _carInfo.name; + self.useButton.hidden = _carInfo.status != Dressup_Car_Status_Ok; + if (_carInfo.status == Dressup_Car_Status_Ok) { + self.timeLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPMineCarTableViewCell0"), _carInfo.expireDate]; + } else { + self.timeLabel.text = YMLocalizedString(@"XPMineCarTableViewCell1"); + } + self.giveImageView.hidden =!_carInfo.isGive; + self.carImageView.imageUrl = _carInfo.pic; + if (_carInfo.isUsed) { + [_useButton setTitle:YMLocalizedString(@"XPMineCarTableViewCell2") forState:UIControlStateNormal]; + [_useButton setTitleColor:[DJDKMIMOMColor cancelButtonTextColor] forState:UIControlStateNormal]; + [_useButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor cancelButtonGradientStartColor], [DJDKMIMOMColor cancelButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } else { + [_useButton setTitle:YMLocalizedString(@"XPMineCarTableViewCell3") forState:UIControlStateNormal]; + [_useButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_useButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } + + NSString * typeStr; + if (_carInfo.labelType == DressUpLabelType_New) { + typeStr = @"mine_dressUp_new"; + } else if(_carInfo.labelType == DressUpLabelType_Limit) { + typeStr = @"mine_dressUp_limit"; + } else if(_carInfo.labelType == DressUpLabelType_Exclusive) { + typeStr = @"mine_dressUp_exclusive"; + } + if (typeStr.length > 0) { + self.limitImageView.image = [UIImage imageNamed:typeStr]; + } + } +} +#pragma mark - Event Response +- (void)useButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineCarTableViewCell:carId:)]) { + NSString * carId = self.carInfo.carID;; + if (self.carInfo.isUsed) { + carId = @"0"; + } + [self.delegate xPMineCarTableViewCell:self carId:carId]; + } +} + +#pragma mark - Getter && Setter +- (UIStackView *)nameStackView { + if (!_nameStackView) { + _nameStackView = [[UIStackView alloc] init]; + _nameStackView.axis = UILayoutConstraintAxisHorizontal; + _nameStackView.distribution = UIStackViewDistributionFill; + _nameStackView.alignment = UIStackViewAlignmentCenter; + _nameStackView.spacing = 2; + } + return _nameStackView; +} + +- (UIImageView *)giveImageView { + if (!_giveImageView) { + _giveImageView = [[UIImageView alloc] init]; + _giveImageView.userInteractionEnabled = YES; + _giveImageView.image = [UIImage imageNamed:@"mine_dressup_give"]; + } + return _giveImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:15]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +- (UIButton *)useButton { + if (!_useButton) { + _useButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_useButton setTitle:YMLocalizedString(@"XPMineCarTableViewCell4") forState:UIControlStateNormal]; + [_useButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_useButton addTarget:self action:@selector(useButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _useButton.layer.masksToBounds = YES; + _useButton.layer.cornerRadius = 33/2; + _useButton.titleLabel.font = [UIFont systemFontOfSize:14]; + [_useButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } + return _useButton; +} + +- (UIStackView *)timeStackView { + if (!_timeStackView) { + _timeStackView = [[UIStackView alloc] init]; + _timeStackView.axis = UILayoutConstraintAxisHorizontal; + _timeStackView.distribution = UIStackViewDistributionFill; + _timeStackView.alignment = UIStackViewAlignmentCenter; + _timeStackView.spacing = 2; + } + return _timeStackView; +} + +- (UILabel *)timeLabel { + if (!_timeLabel) { + _timeLabel = [[UILabel alloc] init]; + _timeLabel.font = [UIFont systemFontOfSize:12]; + _timeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _timeLabel; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _lineView; +} + +- (NetImageView *)carImageView { + if (!_carImageView) { + _carImageView = [[NetImageView alloc] init]; + _carImageView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _carImageView.layer.masksToBounds = YES; + _carImageView.layer.cornerRadius = 12; + } + return _carImageView; +} + +- (UIImageView *)limitImageView { + if (!_limitImageView) { + _limitImageView = [[UIImageView alloc] init]; + } + return _limitImageView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineDressBubbleCollectionViewCell.h b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineDressBubbleCollectionViewCell.h new file mode 100644 index 00000000..99918be4 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineDressBubbleCollectionViewCell.h @@ -0,0 +1,29 @@ +// +// YMMineDressBubbleTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/3/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class ChatBubbleModel, XPMineDressBubbleCollectionViewCell; + +@protocol XPMineDressBubbleTableViewCellDelegate +///使用气泡 +- (void)xPMineDressBubbleCollectionViewCell:(XPMineDressBubbleCollectionViewCell *)view bubbleId:(NSString *)bubbleId; + +@end + +@interface XPMineDressBubbleCollectionViewCell : UICollectionViewCell + +@property (nonatomic, strong) ChatBubbleModel *bubbleModel; + +@property (nonatomic,weak) id delegate; + +@end + + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineDressBubbleCollectionViewCell.m b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineDressBubbleCollectionViewCell.m new file mode 100644 index 00000000..7fd96efa --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineDressBubbleCollectionViewCell.m @@ -0,0 +1,207 @@ +// +// YMMineDressBubbleTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/3/18. +// + +#import "XPMineDressBubbleCollectionViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "UIImage+Utils.h" +///Model +#import "ChatBubbleModel.h" + +@interface XPMineDressBubbleCollectionViewCell() + +///容器view +@property (nonatomic, strong) UIView *mainView; +///显示分割线 +@property (nonatomic,strong) UIImageView *lineView; +///卡片底图 +@property (nonatomic, strong) UIView *userCardBackView; +///卡片外边框 +@property (nonatomic, strong) NetImageView *nobleImageView; +///名字 +@property (nonatomic, strong) UILabel *titleLabel; +///剩余天数 +@property (nonatomic, strong) UILabel *timeLabel; +///使用 +@property (nonatomic,strong) UIButton *useButton; +@end + + +@implementation XPMineDressBubbleCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.mainView]; + [self.mainView addSubview:self.lineView]; + [self.mainView addSubview:self.titleLabel]; + [self.mainView addSubview:self.timeLabel]; + [self.mainView addSubview:self.useButton]; + [self.mainView addSubview:self.userCardBackView]; + [self.userCardBackView addSubview:self.nobleImageView]; +} + +- (void)initSubViewConstraints { + [self.mainView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.mainView).mas_offset(8); + make.top.mas_equalTo(self.mainView).mas_offset(12); + make.width.mas_equalTo(3); + make.height.mas_equalTo(16); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.lineView.mas_right).mas_offset(4); + make.centerY.mas_equalTo(self.lineView); + make.height.mas_equalTo(14); + }]; + + [self.userCardBackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(44); + make.width.mas_equalTo(84); + make.centerX.mas_equalTo(self.mainView); + make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(16); + }]; + + [self.nobleImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(30); + make.width.mas_equalTo(60); + make.bottom.mas_equalTo(self.userCardBackView).mas_offset(-5); + make.centerX.mas_equalTo(self.userCardBackView); + }]; + + [self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.mainView); + make.top.mas_equalTo(self.useButton.mas_bottom).mas_offset(4); + make.height.mas_equalTo(14); + }]; + + [self.useButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.mainView); + make.height.mas_equalTo(24); + make.width.mas_equalTo(89); + make.top.mas_equalTo(self.userCardBackView.mas_bottom).mas_offset(17); + }]; + +} + +#pragma mark - private +- (void)setBubbleModel:(ChatBubbleModel *)bubbleModel { + _bubbleModel = bubbleModel; + if (bubbleModel) { + self.titleLabel.text = bubbleModel.name; + self.useButton.hidden = bubbleModel.hasExpired; + if (!bubbleModel.hasExpired) { + self.timeLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPMineDressBubbleCollectionViewCell0"), bubbleModel.expireDays]; + } else { + self.timeLabel.text = YMLocalizedString(@"XPMineDressBubbleCollectionViewCell1"); + } + self.nobleImageView.imageUrl = bubbleModel.bubbleUrl; + if (bubbleModel.hasUsed) { + [_useButton setTitle:YMLocalizedString(@"XPMineDressBubbleCollectionViewCell2") forState:UIControlStateNormal]; + [_useButton setTitleColor:[DJDKMIMOMColor cancelButtonTextColor] forState:UIControlStateNormal]; + [_useButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor cancelButtonGradientStartColor], [DJDKMIMOMColor cancelButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } else { + [_useButton setTitle:YMLocalizedString(@"XPMineDressBubbleCollectionViewCell3") forState:UIControlStateNormal]; + [_useButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_useButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } + } +} + +#pragma mark - Event Response +- (void)useButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineDressBubbleCollectionViewCell:bubbleId:)]) { + NSString * bubbleId = self.bubbleModel.bubbleId;; + if (self.bubbleModel.hasUsed) { + bubbleId = @"0"; + } + [self.delegate xPMineDressBubbleCollectionViewCell:self bubbleId:bubbleId]; + } +} + +#pragma mark - Getter && Setter +- (UIView *)mainView { + if (!_mainView) { + _mainView = [[UIView alloc] init]; + _mainView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _mainView.layer.cornerRadius = 10; + _mainView.layer.masksToBounds = YES; + } + return _mainView; +} +- (UIImageView *)lineView { + if (!_lineView) { + _lineView = [[UIImageView alloc] init]; + [_lineView setImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFFCB47), UIColorFromRGB(0xFFA936)] gradientType:GradientTypeTopToBottom imgSize:CGSizeMake(3, 16)]]; + _lineView.layer.cornerRadius = 1.5; + _lineView.layer.masksToBounds = YES; + } + return _lineView; +} +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +- (UILabel *)timeLabel { + if (!_timeLabel) { + _timeLabel = [[UILabel alloc] init]; + _timeLabel.font = [UIFont systemFontOfSize:10]; + _timeLabel.textColor = [DJDKMIMOMColor textThirdColor]; + } + return _timeLabel; +} + +- (UIButton *)useButton { + if (!_useButton) { + _useButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_useButton setTitle:YMLocalizedString(@"XPMineDressBubbleCollectionViewCell4") forState:UIControlStateNormal]; + [_useButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_useButton addTarget:self action:@selector(useButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _useButton.layer.masksToBounds = YES; + _useButton.layer.cornerRadius = 24/2; + _useButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_useButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } + return _useButton; +} + +- (NetImageView *)nobleImageView { + if (!_nobleImageView) { + _nobleImageView = [[NetImageView alloc] init]; + _nobleImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _nobleImageView;; +} + +- (UIView *)userCardBackView { + if (!_userCardBackView) { + _userCardBackView = [[UIView alloc] init]; + _userCardBackView.layer.cornerRadius = 12; + _userCardBackView.layer.masksToBounds = YES; + + } + return _userCardBackView;; +} + +@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineDressEmptyCollectionViewCell.h b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineDressEmptyCollectionViewCell.h new file mode 100644 index 00000000..2dc03479 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineDressEmptyCollectionViewCell.h @@ -0,0 +1,19 @@ +// +// YMMineDressEmptyCollectionViewCell.h +// YUMI +// +// Created by YUMI on 2022/3/21. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineDressEmptyCollectionViewCell : UICollectionViewCell + +///标题 +@property (nonatomic,copy) NSString *emptyTitle; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineDressEmptyCollectionViewCell.m b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineDressEmptyCollectionViewCell.m new file mode 100644 index 00000000..179a1b2d --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineDressEmptyCollectionViewCell.m @@ -0,0 +1,77 @@ +// +// YMMineDressEmptyCollectionViewCell.m +// YUMI +// +// Created by YUMI on 2022/3/21. +// + +#import "XPMineDressEmptyCollectionViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImageConstant.h" + +@interface XPMineDressEmptyCollectionViewCell () +@property (nonatomic,strong) UIImageView *emptyImageView; +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPMineDressEmptyCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.emptyImageView]; + [self.contentView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.emptyImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.contentView).offset(150); + make.size.mas_equalTo(CGSizeMake(100, 100)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.emptyImageView.mas_bottom).offset(20); + make.left.right.mas_equalTo(self.contentView); + }]; +} + +#pragma mark - Getters And Setters +- (void)setEmptyTitle:(NSString *)emptyTitle { + _emptyTitle = emptyTitle; + self.titleLabel.text = _emptyTitle; +} + +- (UIImageView *)emptyImageView { + if (!_emptyImageView) { + _emptyImageView = [[UIImageView alloc] init]; + _emptyImageView.userInteractionEnabled = YES; + _emptyImageView.image = [UIImageConstant defalutEmptyPlaceholder]; + _emptyImageView.layer.masksToBounds = YES; + _emptyImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _emptyImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPMineDressEmptyCollectionViewCell0"); + _titleLabel.font = [UIFont systemFontOfSize:16]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _titleLabel; +} +@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineDressEmptyTableViewCell.h b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineDressEmptyTableViewCell.h new file mode 100644 index 00000000..ea6882a3 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineDressEmptyTableViewCell.h @@ -0,0 +1,17 @@ +// +// YMMineDressEmptyTableViewCell.h +// YUMI +// +// Created by YUMI on 2021/12/16. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineDressEmptyTableViewCell : UITableViewCell +///标题 +@property (nonatomic,copy) NSString *emptyTitle; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineDressEmptyTableViewCell.m b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineDressEmptyTableViewCell.m new file mode 100644 index 00000000..16d49ccd --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineDressEmptyTableViewCell.m @@ -0,0 +1,78 @@ +// +// YMMineDressEmptyTableViewCell.m +// YUMI +// +// Created by YUMI on 2021/12/16. +// + +#import "XPMineDressEmptyTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImageConstant.h" + +@interface XPMineDressEmptyTableViewCell () +@property (nonatomic,strong) UIImageView *emptyImageView; +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPMineDressEmptyTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.emptyImageView]; + [self.contentView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.emptyImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.contentView).offset(150); + make.size.mas_equalTo(CGSizeMake(100, 100)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.emptyImageView.mas_bottom).offset(20); + make.left.right.mas_equalTo(self.contentView); + }]; +} + +#pragma mark - Getters And Setters +- (void)setEmptyTitle:(NSString *)emptyTitle { + _emptyTitle = emptyTitle; + self.titleLabel.text = _emptyTitle; +} + +- (UIImageView *)emptyImageView { + if (!_emptyImageView) { + _emptyImageView = [[UIImageView alloc] init]; + _emptyImageView.userInteractionEnabled = YES; + _emptyImageView.image = [UIImageConstant defalutEmptyPlaceholder]; + _emptyImageView.layer.masksToBounds = YES; + _emptyImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _emptyImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPMineDressEmptyTableViewCell0"); + _titleLabel.font = [UIFont systemFontOfSize:16]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _titleLabel; +} +@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineHeadwearTableViewCell.h b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineHeadwearTableViewCell.h new file mode 100644 index 00000000..69fba95a --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineHeadwearTableViewCell.h @@ -0,0 +1,24 @@ +// +// YMMineHeadwearTableViewCell.h +// YUMI +// +// Created by YUMI on 2021/12/15. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class HeadwearModel, XPMineHeadwearTableViewCell; +@protocol XPMineHeadwearTableViewCellDelegate + +///使用头饰 +- (void)xPMineHeadwearTableViewCell:(XPMineHeadwearTableViewCell *)view headwearId:(NSString *)headwearId; + +@end +@interface XPMineHeadwearTableViewCell : UITableViewCell +@property (nonatomic,strong) HeadwearModel *headwearModel; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineHeadwearTableViewCell.m b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineHeadwearTableViewCell.m new file mode 100644 index 00000000..eed217dd --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineHeadwearTableViewCell.m @@ -0,0 +1,274 @@ +// +// YMMineHeadwearTableViewCell.m +// YUMI +// +// Created by YUMI on 2021/12/15. +// + +#import "XPMineHeadwearTableViewCell.h" +///Third +#import +#import +///Tool +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "UIImage+Utils.h" +#import "SpriteSheetImageManager.h" +///Model +#import "HeadwearModel.h" + +@interface XPMineHeadwearTableViewCell () +///名字 +@property (nonatomic,strong) UIStackView *nameStackView; +///头饰名字 +@property (nonatomic, strong) UIImageView *giveImageView; +///名字 +@property (nonatomic, strong) UILabel *titleLabel; +///还有多少时间 +@property (nonatomic,strong) UIStackView *timeStackView; +///剩余天数 +@property (nonatomic, strong) UILabel *timeLabel; +///使用 +@property (nonatomic,strong) UIButton *useButton; +///显示分割线 +@property (nonatomic,strong) UIView * lineView; +///普通的 +@property (nonatomic,strong) YYAnimatedImageView *headWearImageView; +///头饰播放 +@property (nonatomic, strong) SpriteSheetImageManager *manager; +/// 限定 新 +@property (nonatomic,strong) UIImageView *limitImageView; + +@end + +@implementation XPMineHeadwearTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor];; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.headWearImageView]; + [self.contentView addSubview:self.nameStackView]; + [self.contentView addSubview:self.timeStackView]; + [self.contentView addSubview:self.useButton]; + [self.contentView addSubview:self.lineView]; + [self.contentView addSubview:self.limitImageView]; + + [self.nameStackView addArrangedSubview:self.giveImageView]; + [self.nameStackView addArrangedSubview:self.titleLabel]; + + [self.timeStackView addArrangedSubview:self.timeLabel]; + +} + +- (void)initSubViewConstraints { + [self.headWearImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.width.mas_equalTo(80); + make.centerY.mas_equalTo(self.contentView); + make.left.mas_equalTo(self.contentView).offset(20); + }]; + + [self.nameStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.headWearImageView.mas_right).offset(10); + make.bottom.mas_equalTo(self.headWearImageView.mas_centerY).offset(-3); + }]; + + [self.giveImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(11, 11)); + }]; + + [self.timeStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nameStackView); + make.top.mas_equalTo(self.headWearImageView.mas_centerY).offset(3); + make.height.mas_equalTo(13); + }]; + + [self.useButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self); + make.right.mas_equalTo(self.contentView).offset(-15); + make.height.mas_equalTo(33); + make.width.mas_equalTo(85); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.contentView).offset(105); + make.height.mas_equalTo(0.5); + make.bottom.mas_equalTo(self.contentView); + make.right.mas_equalTo(self.contentView).offset(-15); + }]; + + [self.limitImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.left.mas_equalTo(self.contentView).offset(20); + make.width.height.mas_equalTo(20); + }]; +} + +#pragma mark - private +- (void)setHeadwearModel:(HeadwearModel *)headwearModel { + _headwearModel = headwearModel; + if (_headwearModel) { + self.titleLabel.text = _headwearModel.headwearName; + self.useButton.hidden = _headwearModel.status != Dressup_Headwear_Status_Ok; + if (_headwearModel.status == Dressup_Headwear_Status_Ok) { + self.timeLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPMineHeadwearTableViewCell0"), _headwearModel.expireDays]; + } else { + self.timeLabel.text = YMLocalizedString(@"XPMineHeadwearTableViewCell1"); + } + self.giveImageView.hidden =!_headwearModel.isGive; + NSString * headurl = _headwearModel.effect.length > 0 ? _headwearModel.effect : _headwearModel.pic; + if (headurl.length >0) { + self.headWearImageView.hidden = NO; + NSURL *url = [NSURL URLWithString:headurl]; + @kWeakify(self); + [self.manager loadSpriteSheetImageWithURL:url completionBlock:^(YYSpriteSheetImage * _Nullable sprit) { + @kStrongify(self); + self.headWearImageView.image = sprit; + } failureBlock:^(NSError * _Nullable error) { + }]; + } else { + self.headWearImageView.hidden = YES; + } + + if (_headwearModel.isUsed) { + [_useButton setTitle:YMLocalizedString(@"XPMineHeadwearTableViewCell2") forState:UIControlStateNormal]; + [_useButton setTitleColor:[DJDKMIMOMColor cancelButtonTextColor] forState:UIControlStateNormal]; + [_useButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor cancelButtonGradientStartColor], [DJDKMIMOMColor cancelButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } else { + [_useButton setTitle:YMLocalizedString(@"XPMineHeadwearTableViewCell3") forState:UIControlStateNormal]; + [_useButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_useButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } + + NSString * typeStr; + if (_headwearModel.labelType == DressUpLabelType_New) { + typeStr = @"mine_dressUp_new"; + } else if(_headwearModel.labelType == DressUpLabelType_Limit) { + typeStr = @"mine_dressUp_limit"; + } else if(_headwearModel.labelType == DressUpLabelType_Exclusive) { + typeStr = @"mine_dressUp_exclusive"; + } + if (typeStr.length > 0) { + self.limitImageView.image = [UIImage imageNamed:typeStr]; + } + } +} +#pragma mark - Event Response +- (void)useButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineHeadwearTableViewCell:headwearId:)]) { + NSString * headwearId = self.headwearModel.headwearId; + if (self.headwearModel.isUsed) { + headwearId = @"0"; + } + [self.delegate xPMineHeadwearTableViewCell:self headwearId:headwearId]; + } +} + +#pragma mark - Getter && Setter +- (UIStackView *)nameStackView { + if (!_nameStackView) { + _nameStackView = [[UIStackView alloc] init]; + _nameStackView.axis = UILayoutConstraintAxisHorizontal; + _nameStackView.distribution = UIStackViewDistributionFill; + _nameStackView.alignment = UIStackViewAlignmentCenter; + _nameStackView.spacing = 2; + } + return _nameStackView; +} + +- (UIImageView *)giveImageView { + if (!_giveImageView) { + _giveImageView = [[UIImageView alloc] init]; + _giveImageView.userInteractionEnabled = YES; + _giveImageView.image = [UIImage imageNamed:@"mine_dressup_give"]; + } + return _giveImageView; +} + +- (YYAnimatedImageView *)headWearImageView { + if (!_headWearImageView) { + _headWearImageView = [[YYAnimatedImageView alloc] init]; + _headWearImageView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _headWearImageView.contentMode = UIViewContentModeScaleAspectFit; + _headWearImageView.layer.masksToBounds = YES; + _headWearImageView.layer.cornerRadius = 10; + } + return _headWearImageView; +} + + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:15]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +- (UIButton *)useButton { + if (!_useButton) { + _useButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_useButton setTitle:YMLocalizedString(@"XPMineHeadwearTableViewCell4") forState:UIControlStateNormal]; + [_useButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_useButton addTarget:self action:@selector(useButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _useButton.layer.masksToBounds = YES; + _useButton.layer.cornerRadius = 33/2; + _useButton.titleLabel.font = [UIFont systemFontOfSize:14]; + [_useButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } + return _useButton; +} + +- (UIStackView *)timeStackView { + if (!_timeStackView) { + _timeStackView = [[UIStackView alloc] init]; + _timeStackView.axis = UILayoutConstraintAxisHorizontal; + _timeStackView.distribution = UIStackViewDistributionFill; + _timeStackView.alignment = UIStackViewAlignmentCenter; + _timeStackView.spacing = 2; + } + return _timeStackView; +} + +- (UILabel *)timeLabel { + if (!_timeLabel) { + _timeLabel = [[UILabel alloc] init]; + _timeLabel.font = [UIFont systemFontOfSize:12]; + _timeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _timeLabel; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _lineView; +} + +- (SpriteSheetImageManager *)manager { + if (!_manager) { + _manager = [[SpriteSheetImageManager alloc] init]; + } + return _manager; +} + +- (UIImageView *)limitImageView { + if (!_limitImageView) { + _limitImageView = [[UIImageView alloc] init]; + } + return _limitImageView; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineNameplateTableViewCell.h b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineNameplateTableViewCell.h new file mode 100644 index 00000000..a8356b59 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineNameplateTableViewCell.h @@ -0,0 +1,23 @@ +// +// YMMineNameplateTableViewCell.h +// YUMI +// +// Created by YUMI on 2021/12/15. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class NameplateModel, XPMineNameplateTableViewCell; +@protocol XPMineNameplateTableViewCellDelegate +///使用铭牌 +- (void)xPMineNameplateTableViewCell:(XPMineNameplateTableViewCell *)view nameplateId:(NSString *)nameplateId; + +@end +@interface XPMineNameplateTableViewCell : UITableViewCell +@property (nonatomic,strong) NameplateModel *nameplateModel; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineNameplateTableViewCell.m b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineNameplateTableViewCell.m new file mode 100644 index 00000000..21187632 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineNameplateTableViewCell.m @@ -0,0 +1,183 @@ +// +// YMMineNameplateTableViewCell.m +// YUMI +// +// Created by YUMI on 2021/12/15. +// + +#import "XPMineNameplateTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "UIImage+Utils.h" +///Model +#import "NameplateModel.h" + +@interface XPMineNameplateTableViewCell () +///铭牌背景 +@property (nonatomic, strong) UIView *namePlateBgView; +///铭牌 +@property (nonatomic, strong) NetImageView *namePlateImageView; +///名字 +@property (nonatomic, strong) UILabel *titleLabel; +///还有多少时间 +@property (nonatomic,strong) UIStackView *timeStackView; +///剩余天数 +@property (nonatomic, strong) UILabel *timeLabel; +///使用 +@property (nonatomic,strong) UIButton *useButton; + +@end + +@implementation XPMineNameplateTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor];; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.namePlateBgView]; + [self.namePlateBgView addSubview:self.namePlateImageView]; + [self.contentView addSubview:self.titleLabel]; + [self.contentView addSubview:self.timeStackView]; + [self.contentView addSubview:self.useButton]; + [self.timeStackView addArrangedSubview:self.timeLabel]; +} + +- (void)initSubViewConstraints { + [self.namePlateBgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(64); + make.width.mas_equalTo(136); + make.bottom.mas_equalTo(self); + make.left.mas_equalTo(self.contentView).offset(15); + }]; + [self.namePlateImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(30); + make.width.mas_equalTo(90); + make.centerX.centerY.mas_equalTo(self.namePlateBgView); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.namePlateBgView.mas_right).offset(10); + make.bottom.mas_equalTo(self.namePlateBgView.mas_centerY).offset(-3); + }]; + [self.timeStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.titleLabel); + make.top.mas_equalTo(self.namePlateBgView.mas_centerY).offset(3); + }]; + + [self.useButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.namePlateBgView); + make.right.mas_equalTo(self.contentView).offset(-15); + make.height.mas_equalTo(33); + make.width.mas_equalTo(85); + }]; +} + +#pragma mark - private +- (void)setNameplateModel:(NameplateModel *)nameplateModel { + _nameplateModel = nameplateModel; + if (_nameplateModel) { + self.titleLabel.text = _nameplateModel.nameplateName; + self.useButton.hidden = _nameplateModel.isExpired; + if (!_nameplateModel.isExpired) { + self.timeLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPMineNameplateTableViewCell0"), _nameplateModel.expireDays]; + } else { + self.timeLabel.text = YMLocalizedString(@"XPMineNameplateTableViewCell1"); + } + self.namePlateImageView.imageUrl = _nameplateModel.nameplateImage; + if (_nameplateModel.isUsing) { + [_useButton setTitle:YMLocalizedString(@"XPMineNameplateTableViewCell2") forState:UIControlStateNormal]; + [_useButton setTitleColor:[DJDKMIMOMColor cancelButtonTextColor] forState:UIControlStateNormal]; + [_useButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor cancelButtonGradientStartColor], [DJDKMIMOMColor cancelButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } else { + [_useButton setTitle:YMLocalizedString(@"XPMineNameplateTableViewCell3") forState:UIControlStateNormal]; + [_useButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_useButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } + } +} +#pragma mark - Event Response +- (void)useButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineNameplateTableViewCell:nameplateId:)]) { + NSString * nameplateId = self.nameplateModel.nId;; + if (self.nameplateModel.isUsing) { + nameplateId = @"0"; + } + [self.delegate xPMineNameplateTableViewCell:self nameplateId:nameplateId]; + } +} + +#pragma mark - Getter && Setter +- (UIView *)namePlateBgView { + if (!_namePlateBgView) { + _namePlateBgView = [[UIView alloc] init]; + _namePlateBgView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _namePlateBgView.layer.masksToBounds = YES; + _namePlateBgView.layer.cornerRadius = 12; + } + return _namePlateBgView; +} + +- (NetImageView *)namePlateImageView { + if (!_namePlateImageView) { + _namePlateImageView = [[NetImageView alloc] init]; + _namePlateImageView.image = [UIImageConstant defaultAvatarPlaceholder]; + _namePlateImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _namePlateImageView;; +} + +- (UIStackView *)timeStackView { + if (!_timeStackView) { + _timeStackView = [[UIStackView alloc] init]; + _timeStackView.axis = UILayoutConstraintAxisHorizontal; + _timeStackView.distribution = UIStackViewDistributionFill; + _timeStackView.alignment = UIStackViewAlignmentCenter; + _timeStackView.spacing = 2; + } + return _timeStackView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:15]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +- (UIButton *)useButton { + if (!_useButton) { + _useButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_useButton setTitle:YMLocalizedString(@"XPMineNameplateTableViewCell4") forState:UIControlStateNormal]; + [_useButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_useButton addTarget:self action:@selector(useButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _useButton.layer.masksToBounds = YES; + _useButton.layer.cornerRadius = 33/2; + _useButton.titleLabel.font = [UIFont systemFontOfSize:14]; + [_useButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } + return _useButton; +} + +- (UILabel *)timeLabel { + if (!_timeLabel) { + _timeLabel = [[UILabel alloc] init]; + _timeLabel.font = [UIFont systemFontOfSize:12]; + _timeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _timeLabel; +} + +@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineNobleCardTableViewCell.h b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineNobleCardTableViewCell.h new file mode 100644 index 00000000..01326612 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineNobleCardTableViewCell.h @@ -0,0 +1,29 @@ +// +// YMMineNobleCardTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/1/6. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class NobleCardModel, XPMineNobleCardTableViewCell; +@protocol XPMineNobleCardTableViewCellDelegate + +///使用贵族资料卡 +- (void)xPMineNobleCardTableViewCell:(XPMineNobleCardTableViewCell *)view nobleCardId:(NSString *)nobleCardId; + +@end + +@interface XPMineNobleCardTableViewCell : UITableViewCell + +@property (nonatomic,strong) NobleCardModel *nobleCardModel; +///代理 +@property (nonatomic,weak) id delegate; + +@end + + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineNobleCardTableViewCell.m b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineNobleCardTableViewCell.m new file mode 100644 index 00000000..746bd188 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/Cell/XPMineNobleCardTableViewCell.m @@ -0,0 +1,205 @@ +// +// YMMineNobleCardTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/1/6. +// + +#import "XPMineNobleCardTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "UIImage+Utils.h" +///Model +#import "NobleCardModel.h" + +@interface XPMineNobleCardTableViewCell() + +///容器view +@property (nonatomic, strong) UIView *mainView; +///显示分割线 +@property (nonatomic,strong) UIImageView *lineView; +///卡片底图 +@property (nonatomic, strong) UIImageView *userCardBackImageView; +///卡片外边框 +@property (nonatomic, strong) NetImageView *nobleImageView; +///名字 +@property (nonatomic, strong) UILabel *titleLabel; +///剩余天数 +@property (nonatomic, strong) UILabel *timeLabel; +///使用 +@property (nonatomic,strong) UIButton *useButton; + +@end + +@implementation XPMineNobleCardTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor];; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.mainView]; + [self.mainView addSubview:self.lineView]; + [self.mainView addSubview:self.titleLabel]; + [self.mainView addSubview:self.timeLabel]; + [self.mainView addSubview:self.useButton]; + [self.mainView addSubview:self.userCardBackImageView]; + [self.mainView addSubview:self.nobleImageView]; +} + +- (void)initSubViewConstraints { + [self.mainView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(224); + make.left.right.mas_equalTo(self).inset(15); + make.top.mas_equalTo(0); + }]; + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.mainView).mas_offset(8); + make.top.mas_equalTo(self.mainView).mas_offset(16); + make.width.mas_equalTo(3); + make.height.mas_equalTo(16); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.lineView.mas_right).mas_offset(4); + make.centerY.mas_equalTo(self.lineView); + }]; + [self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.titleLabel.mas_right).mas_offset(4); + make.centerY.mas_equalTo(self.lineView); + }]; + + [self.useButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.lineView); + make.right.mas_equalTo(self.mainView).offset(-9); + make.height.mas_equalTo(24); + make.width.mas_equalTo(89); + }]; + + [self.userCardBackImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(110); + make.width.mas_equalTo(285); + make.bottom.mas_equalTo(self.mainView).mas_offset(-4); + make.centerX.mas_equalTo(self.mainView); + }]; + + [self.nobleImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(180); + make.width.mas_equalTo(330); + make.bottom.mas_equalTo(self.userCardBackImageView); + make.centerX.mas_equalTo(self.mainView); + }]; +} + +#pragma mark - private + +- (void)setNobleCardModel:(NobleCardModel *)nobleCardModel { + _nobleCardModel = nobleCardModel; + if (_nobleCardModel) { + self.titleLabel.text = nobleCardModel.name; + self.useButton.hidden = nobleCardModel.hasExpired; + if (!nobleCardModel.hasExpired) { + self.timeLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPMineNobleCardTableViewCell0"), nobleCardModel.expireDays]; + } else { + self.timeLabel.text = YMLocalizedString(@"XPMineNobleCardTableViewCell1"); + } + self.nobleImageView.imageUrl = nobleCardModel.pic; + if (nobleCardModel.used) { + [_useButton setTitle:YMLocalizedString(@"XPMineNobleCardTableViewCell2") forState:UIControlStateNormal]; + [_useButton setTitleColor:[DJDKMIMOMColor cancelButtonTextColor] forState:UIControlStateNormal]; + [_useButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor cancelButtonGradientStartColor], [DJDKMIMOMColor cancelButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } else { + [_useButton setTitle:YMLocalizedString(@"XPMineNobleCardTableViewCell3") forState:UIControlStateNormal]; + [_useButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_useButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } + } +} + +#pragma mark - Event Response +- (void)useButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineNobleCardTableViewCell:nobleCardId:)]) { + NSString * nobleCardId = self.nobleCardModel.cardId;; + if (self.nobleCardModel.used) { + nobleCardId = @"0"; + } + [self.delegate xPMineNobleCardTableViewCell:self nobleCardId:nobleCardId]; + } +} + +#pragma mark - Getter && Setter +- (UIView *)mainView { + if (!_mainView) { + _mainView = [[UIView alloc] init]; + _mainView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _mainView.layer.cornerRadius = 10; + _mainView.layer.masksToBounds = YES; + } + return _mainView; +} +- (UIImageView *)lineView { + if (!_lineView) { + _lineView = [[UIImageView alloc] init]; + [_lineView setImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFFCB47), UIColorFromRGB(0xFFA936)] gradientType:GradientTypeTopToBottom imgSize:CGSizeMake(3, 16)]]; + _lineView.layer.cornerRadius = 1.5; + _lineView.layer.masksToBounds = YES; + } + return _lineView; +} +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +- (UILabel *)timeLabel { + if (!_timeLabel) { + _timeLabel = [[UILabel alloc] init]; + _timeLabel.font = [UIFont systemFontOfSize:10]; + _timeLabel.textColor = [DJDKMIMOMColor textThirdColor]; + } + return _timeLabel; +} + +- (UIButton *)useButton { + if (!_useButton) { + _useButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_useButton setTitle:YMLocalizedString(@"XPMineNobleCardTableViewCell4") forState:UIControlStateNormal]; + [_useButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_useButton addTarget:self action:@selector(useButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _useButton.layer.masksToBounds = YES; + _useButton.layer.cornerRadius = 24/2; + _useButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_useButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } + return _useButton; +} + +- (NetImageView *)nobleImageView { + if (!_nobleImageView) { + _nobleImageView = [[NetImageView alloc] init]; + _nobleImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _nobleImageView;; +} + +- (UIImageView *)userCardBackImageView { + if (!_userCardBackImageView) { + _userCardBackImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"mine_dressup_noble_bg"]]; + _userCardBackImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _userCardBackImageView;; +} +@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManeCarTabulationRegardElement.h b/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManeCarTabulationRegardElement.h deleted file mode 100644 index d44280bc..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManeCarTabulationRegardElement.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMMineCarTableViewCell.h -// YUMI -// -// Created by YUMI on 2021/12/15. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class CarMatrix,YUMIManeCarTabulationRegardElement; -@protocol FBCManeCarTabulationViweElementRepresendtation -- (void)fBCManeAutomobileTarbsultowardsionViweElement:(YUMIManeCarTabulationRegardElement *)cell carId:(NSString *)carId; - -@end -@interface YUMIManeCarTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) CarMatrix *automobileAbstract; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManeCarTabulationRegardElement.m b/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManeCarTabulationRegardElement.m deleted file mode 100644 index f70c3db1..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManeCarTabulationRegardElement.m +++ /dev/null @@ -1,235 +0,0 @@ -// -// YMMineCarTableViewCell.m -// YUMI -// -// Created by YUMI on 2021/12/15. -// - -#import "YUMIManeCarTabulationRegardElement.h" -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "UIImage+Utils.h" -#import "CarMatrix.h" - -@interface YUMIManeCarTabulationRegardElement () -@property (nonatomic,strong) NetIndicateRegard *automobileIndicateRegard; -@property (nonatomic,strong) UIStackView *constituteHierarchyRegard; -@property (nonatomic, strong) UIImageView *giveIndicateRegard; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic,strong) UIStackView *intratemporalHierarchyRegard; -@property (nonatomic, strong) UILabel *intratemporalSequencignation; -@property (nonatomic,strong) UIButton *useBtuton; -@property (nonatomic,strong) UIView * burlywoodRegard; -@property (nonatomic,strong) UIImageView *restrictionIndicateRegard; -@end - -@implementation YUMIManeCarTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor];; - [self.contentView addSubview:self.automobileIndicateRegard]; - [self.contentView addSubview:self.constituteHierarchyRegard]; - [self.contentView addSubview:self.intratemporalHierarchyRegard]; - [self.contentView addSubview:self.useBtuton]; - [self.contentView addSubview:self.burlywoodRegard]; - [self.contentView addSubview:self.restrictionIndicateRegard]; - - [self.constituteHierarchyRegard addArrangedSubview:self.giveIndicateRegard]; - [self.constituteHierarchyRegard addArrangedSubview:self.titleLabel]; - - [self.intratemporalHierarchyRegard addArrangedSubview:self.intratemporalSequencignation]; - -} - -- (void)initChildLyRestrictions { - [self.automobileIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(68); - make.width.mas_equalTo(102); - make.centerY.mas_equalTo(self.contentView); - make.left.mas_equalTo(self.contentView).offset(20); - }]; - - - [self.constituteHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.automobileIndicateRegard.mas_right).offset(10); - make.bottom.mas_equalTo(self.automobileIndicateRegard.mas_centerY).offset(-3); - }]; - - [self.giveIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(11, 11)); - }]; - - [self.intratemporalHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.constituteHierarchyRegard); - make.top.mas_equalTo(self.automobileIndicateRegard.mas_centerY).offset(3); - make.height.mas_equalTo(13); - }]; - - [self.useBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self); - make.right.mas_equalTo(self.contentView).offset(-15); - make.height.mas_equalTo(33); - make.width.mas_equalTo(85); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.contentView).offset(105); - make.height.mas_equalTo(0.5); - make.bottom.mas_equalTo(self.contentView); - make.right.mas_equalTo(self.contentView).offset(-15); - }]; - - [self.restrictionIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.left.mas_equalTo(self.contentView).offset(20); - make.width.height.mas_equalTo(20); - }]; -} - -#pragma mark - private -- (void)setAutomobileAbstract:(CarMatrix *)automobileAbstract { - _automobileAbstract = automobileAbstract; - if (_automobileAbstract) { - self.titleLabel.text = _automobileAbstract.name; - self.useBtuton.hidden = _automobileAbstract.status != Dressup_Car_Status_Ok; - if (_automobileAbstract.status == Dressup_Car_Status_Ok) { - self.intratemporalSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Mine_Car_Table_View_Cell_0"), _automobileAbstract.expireDate]; - } else { - self.intratemporalSequencignation.text = YMLocalizedString(@"YUMI_Mine_Car_Table_View_Cell_1"); - } - self.giveIndicateRegard.hidden =!_automobileAbstract.isGive; - self.automobileIndicateRegard.imageUrl = _automobileAbstract.pic; - if (_automobileAbstract.isUsed) { - [_useBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Car_Table_View_Cell_2") forState:UIControlStateNormal]; - [_useBtuton setTitleColor:[DJDKMIMOMColor revoctowardsionBtutonEssayPrettify] forState:UIControlStateNormal]; - [_useBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor revoctowardsionBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor revoctowardsionBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } else { - [_useBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Car_Table_View_Cell_3") forState:UIControlStateNormal]; - [_useBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_useBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } - - NSString * typeStr; - if (_automobileAbstract.labelType == DressUpLabelGenre_New) { - typeStr = @"mine_dressUp_new"; - } else if(_automobileAbstract.labelType == DressUpLabelGenre_Limit) { - typeStr = @"mine_dressUp_limit"; - } else if(_automobileAbstract.labelType == DressUpLabelGenre_Exclusive) { - typeStr = @"mine_dressUp_exclusive"; - } - if (typeStr.length > 0) { - self.restrictionIndicateRegard.image = [UIImage imageNamed:typeStr]; - } - } -} -#pragma mark - Event Response -- (void)utilizeBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeAutomobileTarbsultowardsionViweElement:carId:)]) { - NSString * carId = self.automobileAbstract.carID;; - if (self.automobileAbstract.isUsed) { - carId = @"0"; - } - [self.delegate fBCManeAutomobileTarbsultowardsionViweElement:self carId:carId]; - } -} - -#pragma mark - Getter && Setter -- (UIStackView *)constituteHierarchyRegard { - if (!_constituteHierarchyRegard) { - _constituteHierarchyRegard = [[UIStackView alloc] init]; - _constituteHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _constituteHierarchyRegard.distribution = UIStackViewDistributionFill; - _constituteHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _constituteHierarchyRegard.spacing = 2; - } - return _constituteHierarchyRegard; -} - -- (UIImageView *)giveIndicateRegard { - if (!_giveIndicateRegard) { - _giveIndicateRegard = [[UIImageView alloc] init]; - _giveIndicateRegard.userInteractionEnabled = YES; - _giveIndicateRegard.image = [UIImage imageNamed:@"yumi_center_dressup_give"]; - } - return _giveIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:15]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -- (UIButton *)useBtuton { - if (!_useBtuton) { - _useBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_useBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Car_Table_View_Cell_4") forState:UIControlStateNormal]; - [_useBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_useBtuton addTarget:self action:@selector(utilizeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _useBtuton.layer.masksToBounds = YES; - _useBtuton.layer.cornerRadius = 33/2; - _useBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - [_useBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } - return _useBtuton; -} - -- (UIStackView *)intratemporalHierarchyRegard { - if (!_intratemporalHierarchyRegard) { - _intratemporalHierarchyRegard = [[UIStackView alloc] init]; - _intratemporalHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _intratemporalHierarchyRegard.distribution = UIStackViewDistributionFill; - _intratemporalHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _intratemporalHierarchyRegard.spacing = 2; - } - return _intratemporalHierarchyRegard; -} - -- (UILabel *)intratemporalSequencignation { - if (!_intratemporalSequencignation) { - _intratemporalSequencignation = [[UILabel alloc] init]; - _intratemporalSequencignation.font = [UIFont systemFontOfSize:12]; - _intratemporalSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _intratemporalSequencignation; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _burlywoodRegard; -} - -- (NetIndicateRegard *)automobileIndicateRegard { - if (!_automobileIndicateRegard) { - _automobileIndicateRegard = [[NetIndicateRegard alloc] init]; - _automobileIndicateRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _automobileIndicateRegard.layer.masksToBounds = YES; - _automobileIndicateRegard.layer.cornerRadius = 12; - } - return _automobileIndicateRegard; -} - -- (UIImageView *)restrictionIndicateRegard { - if (!_restrictionIndicateRegard) { - _restrictionIndicateRegard = [[UIImageView alloc] init]; - } - return _restrictionIndicateRegard; -} - -@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManeIntelligencewearTabulationRegardElement.h b/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManeIntelligencewearTabulationRegardElement.h deleted file mode 100644 index 0725f729..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManeIntelligencewearTabulationRegardElement.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMMineHeadwearTableViewCell.h -// YUMI -// -// Created by YUMI on 2021/12/15. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class IntelligencewearMatrix, YUMIManeIntelligencewearTabulationRegardElement; -@protocol FBCManeIntelligencewearTabulationViweElementRepresendtation - -- (void)fBCManeApexknotTarbsultowardsionViweElement:(YUMIManeIntelligencewearTabulationRegardElement *)view headwearId:(NSString *)headwearId; - -@end -@interface YUMIManeIntelligencewearTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) IntelligencewearMatrix *intelligencewearMatrix; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManeIntelligencewearTabulationRegardElement.m b/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManeIntelligencewearTabulationRegardElement.m deleted file mode 100644 index a9ad0508..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManeIntelligencewearTabulationRegardElement.m +++ /dev/null @@ -1,261 +0,0 @@ -// -// YMMineHeadwearTableViewCell.m -// YUMI -// -// Created by YUMI on 2021/12/15. -// - -#import "YUMIManeIntelligencewearTabulationRegardElement.h" -#import -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "UIImage+Utils.h" -#import "SpriteSheetIndicateExecutive.h" -#import "IntelligencewearMatrix.h" - -@interface YUMIManeIntelligencewearTabulationRegardElement () -@property (nonatomic,strong) UIStackView *constituteHierarchyRegard; -@property (nonatomic, strong) UIImageView *giveIndicateRegard; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic,strong) UIStackView *intratemporalHierarchyRegard; -@property (nonatomic, strong) UILabel *intratemporalSequencignation; -@property (nonatomic,strong) UIButton *useBtuton; -@property (nonatomic,strong) UIView * burlywoodRegard; -@property (nonatomic,strong) YYAnimatedImageView *intelligencePenetrateIndicateRegard; -@property (nonatomic, strong) SpriteSheetIndicateExecutive *manager; -@property (nonatomic,strong) UIImageView *restrictionIndicateRegard; - -@end - -@implementation YUMIManeIntelligencewearTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor];; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.intelligencePenetrateIndicateRegard]; - [self.contentView addSubview:self.constituteHierarchyRegard]; - [self.contentView addSubview:self.intratemporalHierarchyRegard]; - [self.contentView addSubview:self.useBtuton]; - [self.contentView addSubview:self.burlywoodRegard]; - [self.contentView addSubview:self.restrictionIndicateRegard]; - - [self.constituteHierarchyRegard addArrangedSubview:self.giveIndicateRegard]; - [self.constituteHierarchyRegard addArrangedSubview:self.titleLabel]; - - [self.intratemporalHierarchyRegard addArrangedSubview:self.intratemporalSequencignation]; - -} - -- (void)initChildLyRestrictions { - [self.intelligencePenetrateIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.width.mas_equalTo(80); - make.centerY.mas_equalTo(self.contentView); - make.left.mas_equalTo(self.contentView).offset(20); - }]; - - [self.constituteHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligencePenetrateIndicateRegard.mas_right).offset(10); - make.bottom.mas_equalTo(self.intelligencePenetrateIndicateRegard.mas_centerY).offset(-3); - }]; - - [self.giveIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(11, 11)); - }]; - - [self.intratemporalHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.constituteHierarchyRegard); - make.top.mas_equalTo(self.intelligencePenetrateIndicateRegard.mas_centerY).offset(3); - make.height.mas_equalTo(13); - }]; - - [self.useBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self); - make.right.mas_equalTo(self.contentView).offset(-15); - make.height.mas_equalTo(33); - make.width.mas_equalTo(85); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.contentView).offset(105); - make.height.mas_equalTo(0.5); - make.bottom.mas_equalTo(self.contentView); - make.right.mas_equalTo(self.contentView).offset(-15); - }]; - - [self.restrictionIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.left.mas_equalTo(self.contentView).offset(20); - make.width.height.mas_equalTo(20); - }]; -} - -#pragma mark - private -- (void)setIntelligencewearMatrix:(IntelligencewearMatrix *)intelligencewearMatrix { - _intelligencewearMatrix = intelligencewearMatrix; - if (_intelligencewearMatrix) { - self.titleLabel.text = _intelligencewearMatrix.headwearName; - self.useBtuton.hidden = _intelligencewearMatrix.status != Dressup_Headwear_Status_Ok; - if (_intelligencewearMatrix.status == Dressup_Headwear_Status_Ok) { - self.intratemporalSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Mine_Headwear_Table_View_Cell_0"), _intelligencewearMatrix.expireDays]; - } else { - self.intratemporalSequencignation.text = YMLocalizedString(@"YUMI_Mine_Headwear_Table_View_Cell_1"); - } - self.giveIndicateRegard.hidden =!_intelligencewearMatrix.isGive; - NSString * headurl = _intelligencewearMatrix.effect.length > 0 ? _intelligencewearMatrix.effect : _intelligencewearMatrix.pic; - if (headurl.length >0) { - self.intelligencePenetrateIndicateRegard.hidden = NO; - NSURL *url = [NSURL URLWithString:headurl]; - @kWeakify(self); - [self.manager chamberSpriteSheetIndictowardseAboutWEEBSITE:url completionBlock:^(YYSpriteSheetImage * _Nullable sprit) { - @kStrongify(self); - self.intelligencePenetrateIndicateRegard.image = sprit; - } failureBlock:^(NSError * _Nullable error) { - }]; - } else { - self.intelligencePenetrateIndicateRegard.hidden = YES; - } - - if (_intelligencewearMatrix.isUsed) { - [_useBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Headwear_Table_View_Cell_2") forState:UIControlStateNormal]; - [_useBtuton setTitleColor:[DJDKMIMOMColor revoctowardsionBtutonEssayPrettify] forState:UIControlStateNormal]; - [_useBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor revoctowardsionBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor revoctowardsionBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } else { - [_useBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Headwear_Table_View_Cell_3") forState:UIControlStateNormal]; - [_useBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_useBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } - - NSString * typeStr; - if (_intelligencewearMatrix.labelType == DressUpLabelGenre_New) { - typeStr = @"mine_dressUp_new"; - } else if(_intelligencewearMatrix.labelType == DressUpLabelGenre_Limit) { - typeStr = @"mine_dressUp_limit"; - } else if(_intelligencewearMatrix.labelType == DressUpLabelGenre_Exclusive) { - typeStr = @"mine_dressUp_exclusive"; - } - if (typeStr.length > 0) { - self.restrictionIndicateRegard.image = [UIImage imageNamed:typeStr]; - } - } -} -#pragma mark - Event Response -- (void)utilizeBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeApexknotTarbsultowardsionViweElement:headwearId:)]) { - NSString * headwearId = self.intelligencewearMatrix.headwearId; - if (self.intelligencewearMatrix.isUsed) { - headwearId = @"0"; - } - [self.delegate fBCManeApexknotTarbsultowardsionViweElement:self headwearId:headwearId]; - } -} - -#pragma mark - Getter && Setter -- (UIStackView *)constituteHierarchyRegard { - if (!_constituteHierarchyRegard) { - _constituteHierarchyRegard = [[UIStackView alloc] init]; - _constituteHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _constituteHierarchyRegard.distribution = UIStackViewDistributionFill; - _constituteHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _constituteHierarchyRegard.spacing = 2; - } - return _constituteHierarchyRegard; -} - -- (UIImageView *)giveIndicateRegard { - if (!_giveIndicateRegard) { - _giveIndicateRegard = [[UIImageView alloc] init]; - _giveIndicateRegard.userInteractionEnabled = YES; - _giveIndicateRegard.image = [UIImage imageNamed:@"yumi_center_dressup_give"]; - } - return _giveIndicateRegard; -} - -- (YYAnimatedImageView *)intelligencePenetrateIndicateRegard { - if (!_intelligencePenetrateIndicateRegard) { - _intelligencePenetrateIndicateRegard = [[YYAnimatedImageView alloc] init]; - _intelligencePenetrateIndicateRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _intelligencePenetrateIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - _intelligencePenetrateIndicateRegard.layer.masksToBounds = YES; - _intelligencePenetrateIndicateRegard.layer.cornerRadius = 10; - } - return _intelligencePenetrateIndicateRegard; -} - - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:15]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -- (UIButton *)useBtuton { - if (!_useBtuton) { - _useBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_useBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Headwear_Table_View_Cell_4") forState:UIControlStateNormal]; - [_useBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_useBtuton addTarget:self action:@selector(utilizeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _useBtuton.layer.masksToBounds = YES; - _useBtuton.layer.cornerRadius = 33/2; - _useBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - [_useBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } - return _useBtuton; -} - -- (UIStackView *)intratemporalHierarchyRegard { - if (!_intratemporalHierarchyRegard) { - _intratemporalHierarchyRegard = [[UIStackView alloc] init]; - _intratemporalHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _intratemporalHierarchyRegard.distribution = UIStackViewDistributionFill; - _intratemporalHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _intratemporalHierarchyRegard.spacing = 2; - } - return _intratemporalHierarchyRegard; -} - -- (UILabel *)intratemporalSequencignation { - if (!_intratemporalSequencignation) { - _intratemporalSequencignation = [[UILabel alloc] init]; - _intratemporalSequencignation.font = [UIFont systemFontOfSize:12]; - _intratemporalSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _intratemporalSequencignation; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _burlywoodRegard; -} - -- (SpriteSheetIndicateExecutive *)manager { - if (!_manager) { - _manager = [[SpriteSheetIndicateExecutive alloc] init]; - } - return _manager; -} - -- (UIImageView *)restrictionIndicateRegard { - if (!_restrictionIndicateRegard) { - _restrictionIndicateRegard = [[UIImageView alloc] init]; - } - return _restrictionIndicateRegard; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManeMagnificentSolitaireTabulationRegardElement.h b/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManeMagnificentSolitaireTabulationRegardElement.h deleted file mode 100644 index 7f9fcc85..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManeMagnificentSolitaireTabulationRegardElement.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// YMMineNobleCardTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/1/6. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class MagnificentSolitaireMatrix, YUMIManeMagnificentSolitaireTabulationRegardElement; -@protocol FBCManeMagnificentSolitaireTabulationViweElementRepresendtation - -- (void)fBCManeMagnificentSolitaireTarbsultowardsionViweElement:(YUMIManeMagnificentSolitaireTabulationRegardElement *)view nobleCardId:(NSString *)nobleCardId; - -@end - -@interface YUMIManeMagnificentSolitaireTabulationRegardElement : UITableViewCell - -@property (nonatomic,strong) MagnificentSolitaireMatrix *magnificentSolitaireMatrix; -@property (nonatomic,weak) id delegate; - -@end - - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManeMagnificentSolitaireTabulationRegardElement.m b/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManeMagnificentSolitaireTabulationRegardElement.m deleted file mode 100644 index ffb61f10..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManeMagnificentSolitaireTabulationRegardElement.m +++ /dev/null @@ -1,195 +0,0 @@ -// -// YMMineNobleCardTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/1/6. -// - -#import "YUMIManeMagnificentSolitaireTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "UIImage+Utils.h" -#import "MagnificentSolitaireMatrix.h" - -@interface YUMIManeMagnificentSolitaireTabulationRegardElement() - -@property (nonatomic, strong) UIView *mainView; -@property (nonatomic,strong) UIImageView *burlywoodRegard; -@property (nonatomic, strong) UIImageView *consumerSolitaireEncourageIndicateRegard; -@property (nonatomic, strong) NetIndicateRegard *magnificentIndicateRegard; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UILabel *intratemporalSequencignation; -@property (nonatomic,strong) UIButton *useBtuton; - -@end - -@implementation YUMIManeMagnificentSolitaireTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor];; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.mainView]; - [self.mainView addSubview:self.burlywoodRegard]; - [self.mainView addSubview:self.titleLabel]; - [self.mainView addSubview:self.intratemporalSequencignation]; - [self.mainView addSubview:self.useBtuton]; - [self.mainView addSubview:self.consumerSolitaireEncourageIndicateRegard]; - [self.mainView addSubview:self.magnificentIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.mainView mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(224); - make.left.right.mas_equalTo(self).inset(15); - make.top.mas_equalTo(0); - }]; - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.mainView).mas_offset(8); - make.top.mas_equalTo(self.mainView).mas_offset(16); - make.width.mas_equalTo(3); - make.height.mas_equalTo(16); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.burlywoodRegard.mas_right).mas_offset(4); - make.centerY.mas_equalTo(self.burlywoodRegard); - }]; - [self.intratemporalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.titleLabel.mas_right).mas_offset(4); - make.centerY.mas_equalTo(self.burlywoodRegard); - }]; - - [self.useBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.burlywoodRegard); - make.right.mas_equalTo(self.mainView).offset(-9); - make.height.mas_equalTo(24); - make.width.mas_equalTo(89); - }]; - - [self.consumerSolitaireEncourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(110); - make.width.mas_equalTo(285); - make.bottom.mas_equalTo(self.mainView).mas_offset(-4); - make.centerX.mas_equalTo(self.mainView); - }]; - - [self.magnificentIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(180); - make.width.mas_equalTo(330); - make.bottom.mas_equalTo(self.consumerSolitaireEncourageIndicateRegard); - make.centerX.mas_equalTo(self.mainView); - }]; -} - -#pragma mark - private - -- (void)setMagnificentSolitaireMatrix:(MagnificentSolitaireMatrix *)magnificentSolitaireMatrix { - _magnificentSolitaireMatrix = magnificentSolitaireMatrix; - if (_magnificentSolitaireMatrix) { - self.titleLabel.text = magnificentSolitaireMatrix.name; - self.useBtuton.hidden = magnificentSolitaireMatrix.hasExpired; - if (!magnificentSolitaireMatrix.hasExpired) { - self.intratemporalSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Mine_Noble_Card_Table_View_Cell_0"), magnificentSolitaireMatrix.expireDays]; - } else { - self.intratemporalSequencignation.text = YMLocalizedString(@"YUMI_Mine_Noble_Card_Table_View_Cell_1"); - } - self.magnificentIndicateRegard.imageUrl = magnificentSolitaireMatrix.pic; - if (magnificentSolitaireMatrix.used) { - [_useBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Noble_Card_Table_View_Cell_2") forState:UIControlStateNormal]; - [_useBtuton setTitleColor:[DJDKMIMOMColor revoctowardsionBtutonEssayPrettify] forState:UIControlStateNormal]; - [_useBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor revoctowardsionBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor revoctowardsionBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } else { - [_useBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Noble_Card_Table_View_Cell_3") forState:UIControlStateNormal]; - [_useBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_useBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } - } -} - -#pragma mark - Event Response -- (void)utilizeBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeMagnificentSolitaireTarbsultowardsionViweElement:nobleCardId:)]) { - NSString * nobleCardId = self.magnificentSolitaireMatrix.cardId;; - if (self.magnificentSolitaireMatrix.used) { - nobleCardId = @"0"; - } - [self.delegate fBCManeMagnificentSolitaireTarbsultowardsionViweElement:self nobleCardId:nobleCardId]; - } -} - -#pragma mark - Getter && Setter -- (UIView *)mainView { - if (!_mainView) { - _mainView = [[UIView alloc] init]; - _mainView.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _mainView.layer.cornerRadius = 10; - _mainView.layer.masksToBounds = YES; - } - return _mainView; -} -- (UIImageView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIImageView alloc] init]; - [_burlywoodRegard setImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFFCB47), UIColorFromRGB(0xFFA936)] gradientType:GradientGenreTopToBottom imgSize:CGSizeMake(3, 16)]]; - _burlywoodRegard.layer.cornerRadius = 1.5; - _burlywoodRegard.layer.masksToBounds = YES; - } - return _burlywoodRegard; -} -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -- (UILabel *)intratemporalSequencignation { - if (!_intratemporalSequencignation) { - _intratemporalSequencignation = [[UILabel alloc] init]; - _intratemporalSequencignation.font = [UIFont systemFontOfSize:10]; - _intratemporalSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - } - return _intratemporalSequencignation; -} - -- (UIButton *)useBtuton { - if (!_useBtuton) { - _useBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_useBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Noble_Card_Table_View_Cell_4") forState:UIControlStateNormal]; - [_useBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_useBtuton addTarget:self action:@selector(utilizeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _useBtuton.layer.masksToBounds = YES; - _useBtuton.layer.cornerRadius = 24/2; - _useBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_useBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } - return _useBtuton; -} - -- (NetIndicateRegard *)magnificentIndicateRegard { - if (!_magnificentIndicateRegard) { - _magnificentIndicateRegard = [[NetIndicateRegard alloc] init]; - _magnificentIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _magnificentIndicateRegard;; -} - -- (UIImageView *)consumerSolitaireEncourageIndicateRegard { - if (!_consumerSolitaireEncourageIndicateRegard) { - _consumerSolitaireEncourageIndicateRegard = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yumi_center_dressup_grand_background"]]; - _consumerSolitaireEncourageIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _consumerSolitaireEncourageIndicateRegard;; -} -@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManeNameplateTabulationRegardElement.h b/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManeNameplateTabulationRegardElement.h deleted file mode 100644 index c47e0aee..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManeNameplateTabulationRegardElement.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMMineNameplateTableViewCell.h -// YUMI -// -// Created by YUMI on 2021/12/15. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class NameplateMatrix, YUMIManeNameplateTabulationRegardElement; -@protocol FBCManeNameplateTabulationViweElementRepresendtation -- (void)fBCManeMtowardserialTarbsultowardsionViweElement:(YUMIManeNameplateTabulationRegardElement *)view nameplateId:(NSString *)nameplateId; - -@end -@interface YUMIManeNameplateTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) NameplateMatrix *materialMatrix; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManeNameplateTabulationRegardElement.m b/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManeNameplateTabulationRegardElement.m deleted file mode 100644 index 25cd01a7..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManeNameplateTabulationRegardElement.m +++ /dev/null @@ -1,174 +0,0 @@ -// -// YMMineNameplateTableViewCell.m -// YUMI -// -// Created by YUMI on 2021/12/15. -// - -#import "YUMIManeNameplateTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "UIImage+Utils.h" -#import "NameplateMatrix.h" - -@interface YUMIManeNameplateTabulationRegardElement () -@property (nonatomic, strong) UIView *constituteWoodentrayBackgroundRegard; -@property (nonatomic, strong) NetIndicateRegard *constituteWoodentrayIndicateRegard; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic,strong) UIStackView *intratemporalHierarchyRegard; -@property (nonatomic, strong) UILabel *intratemporalSequencignation; -@property (nonatomic,strong) UIButton *useBtuton; - -@end - -@implementation YUMIManeNameplateTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor];; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.constituteWoodentrayBackgroundRegard]; - [self.constituteWoodentrayBackgroundRegard addSubview:self.constituteWoodentrayIndicateRegard]; - [self.contentView addSubview:self.titleLabel]; - [self.contentView addSubview:self.intratemporalHierarchyRegard]; - [self.contentView addSubview:self.useBtuton]; - [self.intratemporalHierarchyRegard addArrangedSubview:self.intratemporalSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.constituteWoodentrayBackgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(64); - make.width.mas_equalTo(136); - make.bottom.mas_equalTo(self); - make.left.mas_equalTo(self.contentView).offset(15); - }]; - [self.constituteWoodentrayIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(30); - make.width.mas_equalTo(90); - make.centerX.centerY.mas_equalTo(self.constituteWoodentrayBackgroundRegard); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.constituteWoodentrayBackgroundRegard.mas_right).offset(10); - make.bottom.mas_equalTo(self.constituteWoodentrayBackgroundRegard.mas_centerY).offset(-3); - }]; - [self.intratemporalHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.titleLabel); - make.top.mas_equalTo(self.constituteWoodentrayBackgroundRegard.mas_centerY).offset(3); - }]; - - [self.useBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.constituteWoodentrayBackgroundRegard); - make.right.mas_equalTo(self.contentView).offset(-15); - make.height.mas_equalTo(33); - make.width.mas_equalTo(85); - }]; -} - -#pragma mark - private -- (void)setMaterialMatrix:(NameplateMatrix *)materialMatrix { - _materialMatrix = materialMatrix; - if (_materialMatrix) { - self.titleLabel.text = _materialMatrix.nameplateName; - self.useBtuton.hidden = _materialMatrix.isExpired; - if (!_materialMatrix.isExpired) { - self.intratemporalSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Mine_Nameplate_Table_View_Cell_0"), _materialMatrix.expireDays]; - } else { - self.intratemporalSequencignation.text = YMLocalizedString(@"YUMI_Mine_Nameplate_Table_View_Cell_1"); - } - self.constituteWoodentrayIndicateRegard.imageUrl = _materialMatrix.nameplateImage; - if (_materialMatrix.isUsing) { - [_useBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Nameplate_Table_View_Cell_2") forState:UIControlStateNormal]; - [_useBtuton setTitleColor:[DJDKMIMOMColor revoctowardsionBtutonEssayPrettify] forState:UIControlStateNormal]; - [_useBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor revoctowardsionBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor revoctowardsionBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } else { - [_useBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Nameplate_Table_View_Cell_3") forState:UIControlStateNormal]; - [_useBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_useBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } - } -} -#pragma mark - Event Response -- (void)utilizeBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeMtowardserialTarbsultowardsionViweElement:nameplateId:)]) { - NSString * nameplateId = self.materialMatrix.nId;; - if (self.materialMatrix.isUsing) { - nameplateId = @"0"; - } - [self.delegate fBCManeMtowardserialTarbsultowardsionViweElement:self nameplateId:nameplateId]; - } -} - -#pragma mark - Getter && Setter -- (UIView *)constituteWoodentrayBackgroundRegard { - if (!_constituteWoodentrayBackgroundRegard) { - _constituteWoodentrayBackgroundRegard = [[UIView alloc] init]; - _constituteWoodentrayBackgroundRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _constituteWoodentrayBackgroundRegard.layer.masksToBounds = YES; - _constituteWoodentrayBackgroundRegard.layer.cornerRadius = 12; - } - return _constituteWoodentrayBackgroundRegard; -} - -- (NetIndicateRegard *)constituteWoodentrayIndicateRegard { - if (!_constituteWoodentrayIndicateRegard) { - _constituteWoodentrayIndicateRegard = [[NetIndicateRegard alloc] init]; - _constituteWoodentrayIndicateRegard.image = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _constituteWoodentrayIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _constituteWoodentrayIndicateRegard;; -} - -- (UIStackView *)intratemporalHierarchyRegard { - if (!_intratemporalHierarchyRegard) { - _intratemporalHierarchyRegard = [[UIStackView alloc] init]; - _intratemporalHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _intratemporalHierarchyRegard.distribution = UIStackViewDistributionFill; - _intratemporalHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _intratemporalHierarchyRegard.spacing = 2; - } - return _intratemporalHierarchyRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:15]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -- (UIButton *)useBtuton { - if (!_useBtuton) { - _useBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_useBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Nameplate_Table_View_Cell_4") forState:UIControlStateNormal]; - [_useBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_useBtuton addTarget:self action:@selector(utilizeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _useBtuton.layer.masksToBounds = YES; - _useBtuton.layer.cornerRadius = 33/2; - _useBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - [_useBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } - return _useBtuton; -} - -- (UILabel *)intratemporalSequencignation { - if (!_intratemporalSequencignation) { - _intratemporalSequencignation = [[UILabel alloc] init]; - _intratemporalSequencignation.font = [UIFont systemFontOfSize:12]; - _intratemporalSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _intratemporalSequencignation; -} - -@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManePretendDispossessAssembletionRegardElement.h b/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManePretendDispossessAssembletionRegardElement.h deleted file mode 100644 index 941f9e24..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManePretendDispossessAssembletionRegardElement.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMMineDressEmptyCollectionViewCell.h -// YUMI -// -// Created by YUMI on 2022/3/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManePretendDispossessAssembletionRegardElement : UICollectionViewCell - -@property (nonatomic,copy) NSString *emptyTitle; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManePretendDispossessAssembletionRegardElement.m b/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManePretendDispossessAssembletionRegardElement.m deleted file mode 100644 index 5dc8378a..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManePretendDispossessAssembletionRegardElement.m +++ /dev/null @@ -1,75 +0,0 @@ -// -// YMMineDressEmptyCollectionViewCell.m -// YUMI -// -// Created by YUMI on 2022/3/21. -// - -#import "YUMIManePretendDispossessAssembletionRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIIndicateConstant.h" - -@interface YUMIManePretendDispossessAssembletionRegardElement () -@property (nonatomic,strong) UIImageView *dispossessIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@end - -@implementation YUMIManePretendDispossessAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - [self.contentView addSubview:self.dispossessIndicateRegard]; - [self.contentView addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.dispossessIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.contentView).offset(150); - make.size.mas_equalTo(CGSizeMake(100, 100)); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.dispossessIndicateRegard.mas_bottom).offset(20); - make.left.right.mas_equalTo(self.contentView); - }]; -} - -#pragma mark - Getters And Setters -- (void)setEmptyTitle:(NSString *)emptyTitle { - _emptyTitle = emptyTitle; - self.titleLabel.text = _emptyTitle; -} - -- (UIImageView *)dispossessIndicateRegard { - if (!_dispossessIndicateRegard) { - _dispossessIndicateRegard = [[UIImageView alloc] init]; - _dispossessIndicateRegard.userInteractionEnabled = YES; - _dispossessIndicateRegard.image = [UIIndicateConstant defalutDispossessDepapossessor]; - _dispossessIndicateRegard.layer.masksToBounds = YES; - _dispossessIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _dispossessIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Mine_Dress_Empty_Collection_View_Cell_0"); - _titleLabel.font = [UIFont systemFontOfSize:16]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _titleLabel; -} -@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManePretendDispossessTabulationRegardElement.h b/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManePretendDispossessTabulationRegardElement.h deleted file mode 100644 index b5062ecb..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManePretendDispossessTabulationRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineDressEmptyTableViewCell.h -// YUMI -// -// Created by YUMI on 2021/12/16. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManePretendDispossessTabulationRegardElement : UITableViewCell -@property (nonatomic,copy) NSString *emptyTitle; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManePretendDispossessTabulationRegardElement.m b/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManePretendDispossessTabulationRegardElement.m deleted file mode 100644 index 57143aef..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManePretendDispossessTabulationRegardElement.m +++ /dev/null @@ -1,76 +0,0 @@ -// -// YMMineDressEmptyTableViewCell.m -// YUMI -// -// Created by YUMI on 2021/12/16. -// - -#import "YUMIManePretendDispossessTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIIndicateConstant.h" - -@interface YUMIManePretendDispossessTabulationRegardElement () -@property (nonatomic,strong) UIImageView *dispossessIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@end - -@implementation YUMIManePretendDispossessTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.dispossessIndicateRegard]; - [self.contentView addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.dispossessIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.contentView).offset(150); - make.size.mas_equalTo(CGSizeMake(100, 100)); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.dispossessIndicateRegard.mas_bottom).offset(20); - make.left.right.mas_equalTo(self.contentView); - }]; -} - -#pragma mark - Getters And Setters -- (void)setEmptyTitle:(NSString *)emptyTitle { - _emptyTitle = emptyTitle; - self.titleLabel.text = _emptyTitle; -} - -- (UIImageView *)dispossessIndicateRegard { - if (!_dispossessIndicateRegard) { - _dispossessIndicateRegard = [[UIImageView alloc] init]; - _dispossessIndicateRegard.userInteractionEnabled = YES; - _dispossessIndicateRegard.image = [UIIndicateConstant defalutDispossessDepapossessor]; - _dispossessIndicateRegard.layer.masksToBounds = YES; - _dispossessIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _dispossessIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Mine_Dress_Empty_Table_View_Cell_0"); - _titleLabel.font = [UIFont systemFontOfSize:16]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _titleLabel; -} -@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManePretendIntumesceAssembletionRegardElement.h b/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManePretendIntumesceAssembletionRegardElement.h deleted file mode 100644 index 7696b988..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManePretendIntumesceAssembletionRegardElement.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// YMMineDressBubbleTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/3/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class ChatIntumesceMatrix, YUMIManePretendIntumesceAssembletionRegardElement; - -@protocol FBCManePretendBubbleTabulationViweElementRepresendtation -- (void)fBCManePretconcludeIntumesceAssembletionRegardElement:(YUMIManePretendIntumesceAssembletionRegardElement *)view bubbleId:(NSString *)bubbleId; - -@end - -@interface YUMIManePretendIntumesceAssembletionRegardElement : UICollectionViewCell - -@property (nonatomic, strong) ChatIntumesceMatrix *intumesceMatrix; - -@property (nonatomic,weak) id delegate; - -@end - - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManePretendIntumesceAssembletionRegardElement.m b/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManePretendIntumesceAssembletionRegardElement.m deleted file mode 100644 index f3da4af5..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIManePretendIntumesceAssembletionRegardElement.m +++ /dev/null @@ -1,197 +0,0 @@ -// -// YMMineDressBubbleTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/3/18. -// - -#import "YUMIManePretendIntumesceAssembletionRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "UIImage+Utils.h" -#import "ChatIntumesceMatrix.h" - -@interface YUMIManePretendIntumesceAssembletionRegardElement() - -@property (nonatomic, strong) UIView *mainView; -@property (nonatomic,strong) UIImageView *burlywoodRegard; -@property (nonatomic, strong) UIView *consumerSolitaireEncourageRegard; -@property (nonatomic, strong) NetIndicateRegard *magnificentIndicateRegard; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UILabel *intratemporalSequencignation; -@property (nonatomic,strong) UIButton *useBtuton; -@end - - -@implementation YUMIManePretendIntumesceAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.mainView]; - [self.mainView addSubview:self.burlywoodRegard]; - [self.mainView addSubview:self.titleLabel]; - [self.mainView addSubview:self.intratemporalSequencignation]; - [self.mainView addSubview:self.useBtuton]; - [self.mainView addSubview:self.consumerSolitaireEncourageRegard]; - [self.consumerSolitaireEncourageRegard addSubview:self.magnificentIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.mainView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(0); - }]; - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.mainView).mas_offset(8); - make.top.mas_equalTo(self.mainView).mas_offset(12); - make.width.mas_equalTo(3); - make.height.mas_equalTo(16); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.burlywoodRegard.mas_right).mas_offset(4); - make.centerY.mas_equalTo(self.burlywoodRegard); - make.height.mas_equalTo(14); - }]; - - [self.consumerSolitaireEncourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(44); - make.width.mas_equalTo(84); - make.centerX.mas_equalTo(self.mainView); - make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(16); - }]; - - [self.magnificentIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(30); - make.width.mas_equalTo(60); - make.bottom.mas_equalTo(self.consumerSolitaireEncourageRegard).mas_offset(-5); - make.centerX.mas_equalTo(self.consumerSolitaireEncourageRegard); - }]; - - [self.intratemporalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.mainView); - make.top.mas_equalTo(self.useBtuton.mas_bottom).mas_offset(4); - make.height.mas_equalTo(14); - }]; - - [self.useBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.mainView); - make.height.mas_equalTo(24); - make.width.mas_equalTo(89); - make.top.mas_equalTo(self.consumerSolitaireEncourageRegard.mas_bottom).mas_offset(17); - }]; - -} - -#pragma mark - private -- (void)setIntumesceMatrix:(ChatIntumesceMatrix *)intumesceMatrix { - _intumesceMatrix = intumesceMatrix; - if (intumesceMatrix) { - self.titleLabel.text = intumesceMatrix.name; - self.useBtuton.hidden = intumesceMatrix.hasExpired; - if (!intumesceMatrix.hasExpired) { - self.intratemporalSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Mine_Dress_Bubble_Collection_View_Cell_0"), intumesceMatrix.expireDays]; - } else { - self.intratemporalSequencignation.text = YMLocalizedString(@"YUMI_Mine_Dress_Bubble_Collection_View_Cell_1"); - } - self.magnificentIndicateRegard.imageUrl = intumesceMatrix.bubbleUrl; - if (intumesceMatrix.hasUsed) { - [_useBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Dress_Bubble_Collection_View_Cell_2") forState:UIControlStateNormal]; - [_useBtuton setTitleColor:[DJDKMIMOMColor revoctowardsionBtutonEssayPrettify] forState:UIControlStateNormal]; - [_useBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor revoctowardsionBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor revoctowardsionBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } else { - [_useBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Dress_Bubble_Collection_View_Cell_3") forState:UIControlStateNormal]; - [_useBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_useBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } - } -} - -#pragma mark - Event Response -- (void)utilizeBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManePretconcludeIntumesceAssembletionRegardElement:bubbleId:)]) { - NSString * bubbleId = self.intumesceMatrix.bubbleId;; - if (self.intumesceMatrix.hasUsed) { - bubbleId = @"0"; - } - [self.delegate fBCManePretconcludeIntumesceAssembletionRegardElement:self bubbleId:bubbleId]; - } -} - -#pragma mark - Getter && Setter -- (UIView *)mainView { - if (!_mainView) { - _mainView = [[UIView alloc] init]; - _mainView.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _mainView.layer.cornerRadius = 10; - _mainView.layer.masksToBounds = YES; - } - return _mainView; -} -- (UIImageView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIImageView alloc] init]; - [_burlywoodRegard setImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFFCB47), UIColorFromRGB(0xFFA936)] gradientType:GradientGenreTopToBottom imgSize:CGSizeMake(3, 16)]]; - _burlywoodRegard.layer.cornerRadius = 1.5; - _burlywoodRegard.layer.masksToBounds = YES; - } - return _burlywoodRegard; -} -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -- (UILabel *)intratemporalSequencignation { - if (!_intratemporalSequencignation) { - _intratemporalSequencignation = [[UILabel alloc] init]; - _intratemporalSequencignation.font = [UIFont systemFontOfSize:10]; - _intratemporalSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - } - return _intratemporalSequencignation; -} - -- (UIButton *)useBtuton { - if (!_useBtuton) { - _useBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_useBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Dress_Bubble_Collection_View_Cell_4") forState:UIControlStateNormal]; - [_useBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_useBtuton addTarget:self action:@selector(utilizeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _useBtuton.layer.masksToBounds = YES; - _useBtuton.layer.cornerRadius = 24/2; - _useBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_useBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } - return _useBtuton; -} - -- (NetIndicateRegard *)magnificentIndicateRegard { - if (!_magnificentIndicateRegard) { - _magnificentIndicateRegard = [[NetIndicateRegard alloc] init]; - _magnificentIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _magnificentIndicateRegard;; -} - -- (UIView *)consumerSolitaireEncourageRegard { - if (!_consumerSolitaireEncourageRegard) { - _consumerSolitaireEncourageRegard = [[UIView alloc] init]; - _consumerSolitaireEncourageRegard.layer.cornerRadius = 12; - _consumerSolitaireEncourageRegard.layer.masksToBounds = YES; - - } - return _consumerSolitaireEncourageRegard;; -} - -@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIPretendProcurementHuntforTabulationRegardElement.h b/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIPretendProcurementHuntforTabulationRegardElement.h deleted file mode 100644 index a39c7942..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIPretendProcurementHuntforTabulationRegardElement.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YMDressShopSearchTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/7/29. -// - -#import -#import "ResidenceHuntforConsequentMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@class YUMIPretendProcurementHuntforTabulationRegardElement; -@protocol FBCPretendProcurementHuntforTabulationViweElementRepresendtation - -- (void)yUMIPretconcludeProcurementHuntforTarbsultowardsionViweElementDischargeBtutonTicktack:(YUMIPretendProcurementHuntforTabulationRegardElement *)cell; - -@end -@interface YUMIPretendProcurementHuntforTabulationRegardElement : UITableViewCell - -@property (nonatomic, strong) ResidenceHuntforConsequentMatrix *data; -@property (nonatomic, weak) id delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIPretendProcurementHuntforTabulationRegardElement.m b/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIPretendProcurementHuntforTabulationRegardElement.m deleted file mode 100644 index 7ec5b63f..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIPretendProcurementHuntforTabulationRegardElement.m +++ /dev/null @@ -1,172 +0,0 @@ -// -// YMDressShopSearchTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/7/29. -// - -#import "YUMIPretendProcurementHuntforTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "ResidenceHuntforConsequentMatrix.h" -#import "NetIndicateRegard.h" - -@interface YUMIPretendProcurementHuntforTabulationRegardElement () - -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UIStackView *constituteHierarchyRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UIImageView *seaxualityIndicateRegard; -@property (nonatomic,strong) UILabel *idSequencignation; -@property (nonatomic,strong) UIView * burlywoodRegard; -@property (nonatomic, strong) UIButton *dischargeBtuton; - -@end - -@implementation YUMIPretendProcurementHuntforTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Public Method -- (void)setData:(ResidenceHuntforConsequentMatrix *)data { - if (data) { - self.intelligenceportraitIndicateRegard.imageUrl = data.avatar; - self.monicerSequencignation.text = data.nick; - self.idSequencignation.text = [NSString stringWithFormat:@"%@号:%@",AppName, data.erbanNo]; - self.seaxualityIndicateRegard.image = data.gender == GenderGenre_Female ? [UIImage imageNamed:@"yumi_same_female"] : [UIImage imageNamed:@"yumi_same_male"]; - } -} - -#pragma mark - Private Method -- (void)initSubViews { - self.selectionStyle = UITableViewCellSelectionStyleNone; - self.backgroundColor = [UIColor clearColor]; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.constituteHierarchyRegard]; - [self.contentView addSubview:self.idSequencignation]; - [self.contentView addSubview:self.dischargeBtuton]; - [self.contentView addSubview:self.burlywoodRegard]; - [self.constituteHierarchyRegard addArrangedSubview:self.monicerSequencignation]; - [self.constituteHierarchyRegard addArrangedSubview:self.seaxualityIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(45, 45)); - make.left.mas_equalTo(self.contentView).offset(15); - make.centerY.mas_equalTo(self.contentView); - }]; - - [self.constituteHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(13); - make.height.mas_equalTo(20); - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(-1.5); - }]; - - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.constituteHierarchyRegard); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(1.5); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.constituteHierarchyRegard); - make.right.mas_equalTo(self.contentView).offset(-15); - make.bottom.mas_equalTo(self.contentView); - make.height.mas_equalTo(1); - }]; - - [self.dischargeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.contentView).offset(-15); - make.centerY.mas_equalTo(self.contentView); - make.size.mas_equalTo(CGSizeMake(72, 24)); - }]; -} - -#pragma mark - Event Response -- (void)prohibitichargeBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIPretconcludeProcurementHuntforTarbsultowardsionViweElementDischargeBtutonTicktack:)]) { - [self.delegate yUMIPretconcludeProcurementHuntforTarbsultowardsionViweElementDischargeBtutonTicktack:self]; - } -} - -#pragma mark - Getters And Setters -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 45/2; - _intelligenceportraitIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _intelligenceportraitIndicateRegard; -} - -- (UIStackView *)constituteHierarchyRegard { - if (!_constituteHierarchyRegard) { - _constituteHierarchyRegard = [[UIStackView alloc] init]; - _constituteHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _constituteHierarchyRegard.distribution = UIStackViewDistributionFill; - _constituteHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _constituteHierarchyRegard.spacing = 2; - } - return _constituteHierarchyRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.text = @""; - _monicerSequencignation.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:15]; - _monicerSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _monicerSequencignation; -} - -- (UIImageView *)seaxualityIndicateRegard { - if (!_seaxualityIndicateRegard) { - _seaxualityIndicateRegard = [[UIImageView alloc] init]; - } - return _seaxualityIndicateRegard; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.font = [UIFont systemFontOfSize:13]; - _idSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - } - return _idSequencignation; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _burlywoodRegard; -} - -- (UIButton *)dischargeBtuton { - if (!_dischargeBtuton) { - _dischargeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_dischargeBtuton setTitle:YMLocalizedString(@"YUMI_Dress_Shop_Search_Table_View_Cell_1") forState:UIControlStateNormal]; - [_dischargeBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_dischargeBtuton addTarget:self action:@selector(prohibitichargeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _dischargeBtuton.layer.masksToBounds = YES; - _dischargeBtuton.layer.cornerRadius = 24/2; - _dischargeBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_dischargeBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } - return _dischargeBtuton; -} - -@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIPretendUpwardsProcurementAssembletionRegardElement.h b/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIPretendUpwardsProcurementAssembletionRegardElement.h deleted file mode 100644 index 61bd3b6d..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIPretendUpwardsProcurementAssembletionRegardElement.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// YMDressUpShopCollectionViewCell.h -// YUMI -// -// Created by YUMI on 2022/7/29. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class PretendUpwardsProcurementMatrix, YUMIPretendUpwardsProcurementAssembletionRegardElement; - -@protocol FBCPretendedProcurementAssembletionRegardElementRepresendtation - -- (void)yUMIPretconcludeedProcurementAssembletionRegardElementDischargePretconclude:(YUMIPretendUpwardsProcurementAssembletionRegardElement *)view dressId:(NSString *)dressId; -- (void)yUMIPretconcludeedProcurementAssembletionRegardElementAcquirePretconclude:(YUMIPretendUpwardsProcurementAssembletionRegardElement *)view dressId:(NSString *)dressId; - -@end - -@interface YUMIPretendUpwardsProcurementAssembletionRegardElement : UICollectionViewCell - -@property (nonatomic, strong) PretendUpwardsProcurementMatrix *dressUpwardsMatrix; - -@property (nonatomic,weak) id delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIPretendUpwardsProcurementAssembletionRegardElement.m b/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIPretendUpwardsProcurementAssembletionRegardElement.m deleted file mode 100644 index db47f05e..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIPretendUpwardsProcurementAssembletionRegardElement.m +++ /dev/null @@ -1,236 +0,0 @@ -// -// YMDressUpShopCollectionViewCell.m -// YUMI -// -// Created by YUMI on 2022/7/29. -// - -#import "YUMIPretendUpwardsProcurementAssembletionRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "UIImage+Utils.h" -#import "YUMIMacroUitls.h" -#import "PretendUpwardsProcurementMatrix.h" - -@interface YUMIPretendUpwardsProcurementAssembletionRegardElement() - -@property (nonatomic, strong) UIView *mainView; -@property (nonatomic, strong) UIView *consumerSolitaireEncourageRegard; -@property (nonatomic, strong) NetIndicateRegard *dressUpwardsIndicateRegard; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UIImageView *bWSttawberryIndicateRegard; -@property (nonatomic, strong) UILabel *bWSttawberrySequencignation; -@property (nonatomic, strong) UIButton *dischargeBtuton; -@property (nonatomic,strong) UIButton *useBtuton; -@property (nonatomic, strong) UIView *restrictionIntratemporalBackgroundRegard; -@property (nonatomic, strong) UILabel *restrictionSequencignation; - -@end - - -@implementation YUMIPretendUpwardsProcurementAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.mainView]; - [self.mainView addSubview:self.consumerSolitaireEncourageRegard]; - [self.mainView addSubview:self.dressUpwardsIndicateRegard]; - [self.mainView addSubview:self.titleLabel]; - [self.mainView addSubview:self.bWSttawberryIndicateRegard]; - [self.mainView addSubview:self.bWSttawberrySequencignation]; - [self.mainView addSubview:self.dischargeBtuton]; - [self.mainView addSubview:self.useBtuton]; - [self.mainView addSubview:self.restrictionIntratemporalBackgroundRegard]; - [self.restrictionIntratemporalBackgroundRegard addSubview:self.restrictionSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.mainView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(0); - }]; - [self.consumerSolitaireEncourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(92); - make.left.top.right.mas_equalTo(0); - }]; - CGFloat dressImageW = (KScreenWidth - 42) *0.5; - [self.dressUpwardsIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(dressImageW * 0.7, 70)); - make.top.mas_equalTo(11); - make.centerX.mas_equalTo(self.consumerSolitaireEncourageRegard); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(8); - make.top.mas_equalTo(self.consumerSolitaireEncourageRegard.mas_bottom).mas_offset(8); - make.height.mas_equalTo(14); - }]; - - [self.bWSttawberryIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.titleLabel); - make.size.mas_equalTo(CGSizeMake(11, 11)); - make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(12); - }]; - [self.bWSttawberrySequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.bWSttawberryIndicateRegard); - make.left.mas_equalTo(self.bWSttawberryIndicateRegard.mas_right).mas_offset(4); - make.height.mas_equalTo(17); - }]; - CGFloat width = ((KScreenWidth - 42) *0.5 - 16-6) *0.5; - [self.dischargeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(width, 24)); - make.top.mas_equalTo(self.bWSttawberryIndicateRegard.mas_bottom).mas_offset(17); - make.right.mas_equalTo(self.mas_centerX).mas_offset(-3); - }]; - [self.useBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.mas_centerX).mas_offset(3); - make.size.mas_equalTo(self.dischargeBtuton); - make.centerY.mas_equalTo(self.dischargeBtuton); - }]; - [self.restrictionIntratemporalBackgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.right.mas_equalTo(self.consumerSolitaireEncourageRegard); - make.size.mas_equalTo(CGSizeMake(36, 20)); - }]; - [self.restrictionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.restrictionIntratemporalBackgroundRegard); - }]; -} - -#pragma mark - private -- (void)setDressUpwardsMatrix:(PretendUpwardsProcurementMatrix *)dressUpwardsMatrix { - _dressUpwardsMatrix = dressUpwardsMatrix; - if (dressUpwardsMatrix) { - self.titleLabel.text = [NSString stringWithFormat:@"%@(%zd天)", dressUpwardsMatrix.name, dressUpwardsMatrix.dressDay]; - self.dressUpwardsIndicateRegard.imageUrl = dressUpwardsMatrix.pic; - self.bWSttawberrySequencignation.text = [NSString stringWithFormat:@"%zd", dressUpwardsMatrix.dressPrice]; - self.restrictionIntratemporalBackgroundRegard.hidden = (dressUpwardsMatrix.dressLimitStatus != 0); - } -} - -#pragma mark - Event Response -- (void)prohibitichargeBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIPretconcludeedProcurementAssembletionRegardElementDischargePretconclude:dressId:)]) { - [self.delegate yUMIPretconcludeedProcurementAssembletionRegardElementDischargePretconclude:self dressId:self.dressUpwardsMatrix.dressUpId]; - } -} - -- (void)utilizeBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIPretconcludeedProcurementAssembletionRegardElementAcquirePretconclude:dressId:)]) { - [self.delegate yUMIPretconcludeedProcurementAssembletionRegardElementAcquirePretconclude:self dressId:self.dressUpwardsMatrix.dressUpId]; - } -} - -#pragma mark - Getter && Setter -- (UIView *)mainView { - if (!_mainView) { - _mainView = [[UIView alloc] init]; - _mainView.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _mainView.layer.cornerRadius = 10; - _mainView.layer.masksToBounds = YES; - } - return _mainView; -} - -- (UIView *)consumerSolitaireEncourageRegard { - if (!_consumerSolitaireEncourageRegard) { - _consumerSolitaireEncourageRegard = [[UIView alloc] init]; - _consumerSolitaireEncourageRegard.backgroundColor = UIColorFromRGB(0xEAE5FC); - } - return _consumerSolitaireEncourageRegard;; -} - -- (NetIndicateRegard *)dressUpwardsIndicateRegard { - if (!_dressUpwardsIndicateRegard) { - _dressUpwardsIndicateRegard = [[NetIndicateRegard alloc] init]; - _dressUpwardsIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _dressUpwardsIndicateRegard;; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -- (UIImageView *)bWSttawberryIndicateRegard { - if (!_bWSttawberryIndicateRegard) { - _bWSttawberryIndicateRegard = [[UIImageView alloc] init]; - _bWSttawberryIndicateRegard.image = [UIImage imageNamed:@"yumi_same_diamond"]; - } - return _bWSttawberryIndicateRegard; -} - -- (UILabel *)bWSttawberrySequencignation { - if (!_bWSttawberrySequencignation) { - _bWSttawberrySequencignation = [[UILabel alloc] init]; - _bWSttawberrySequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightBold]; - _bWSttawberrySequencignation.textColor = UIColorFromRGB(0xFFBC51); - } - return _bWSttawberrySequencignation; -} - -- (UIButton *)dischargeBtuton { - if (!_dischargeBtuton) { - _dischargeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_dischargeBtuton setTitle:YMLocalizedString(@"YUMI_Dress_Up_Shop_Collection_View_Cell_1") forState:UIControlStateNormal]; - [_dischargeBtuton setTitleColor:UIColorFromRGB(0xFFA936) forState:UIControlStateNormal]; - [_dischargeBtuton addTarget:self action:@selector(prohibitichargeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _dischargeBtuton.layer.masksToBounds = YES; - _dischargeBtuton.layer.cornerRadius = 24/2; - _dischargeBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - _dischargeBtuton.backgroundColor = UIColorFromRGB(0xFFF0C9); - } - return _dischargeBtuton; -} - -- (UIButton *)useBtuton { - if (!_useBtuton) { - _useBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_useBtuton setTitle:YMLocalizedString(@"YUMI_Dress_Up_Shop_Collection_View_Cell_2") forState:UIControlStateNormal]; - [_useBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_useBtuton addTarget:self action:@selector(utilizeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _useBtuton.layer.masksToBounds = YES; - _useBtuton.layer.cornerRadius = 24/2; - _useBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_useBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } - return _useBtuton; -} - -- (UIView *)restrictionIntratemporalBackgroundRegard { - if (!_restrictionIntratemporalBackgroundRegard) { - _restrictionIntratemporalBackgroundRegard = [[UIView alloc] init]; - _restrictionIntratemporalBackgroundRegard.backgroundColor = UIColorFromRGB(0xFB486A); - CAShapeLayer * layer = [CAShapeLayer layer]; - UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 36, 20) byRoundingCorners:UIRectCornerBottomLeft cornerRadii:CGSizeMake(10, 10)]; - layer.path = path.CGPath; - _restrictionIntratemporalBackgroundRegard.layer.masksToBounds = YES; - _restrictionIntratemporalBackgroundRegard.layer.mask = layer; - - } - return _restrictionIntratemporalBackgroundRegard; -} - -- (UILabel *)restrictionSequencignation { - if (!_restrictionSequencignation) { - _restrictionSequencignation = [[UILabel alloc] init]; - _restrictionSequencignation.text = YMLocalizedString(@"YUMI_Dress_Up_Shop_Collection_View_Cell_3"); - _restrictionSequencignation.textColor = [UIColor whiteColor]; - _restrictionSequencignation.font = [UIFont systemFontOfSize:10]; - _restrictionSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _restrictionSequencignation; -} - -@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement.h b/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement.h deleted file mode 100644 index 9ac48e60..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// YMDressUpShopCardTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/7/29. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class PretendUpwardsProcurementMatrix, YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement; -@protocol FBCPretendedProcurementSolitaireTabulationViweElementRepresendtation - -- (void)yUMIPretconcludeedProcurementSolitaireTarbsultowardsionViweElementDischargePretconclude:(YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement *)view dressId:(NSString *)dressId; -- (void)yUMIPretconcludeedProcurementSolitaireTarbsultowardsionViweElementAcquirePretconclude:(YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement *)view dressId:(NSString *)dressId; - -@end - -@interface YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement : UITableViewCell - -@property (nonatomic,strong) PretendUpwardsProcurementMatrix *magnificentSolitaireMatrix; -@property (nonatomic,weak) id delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement.m b/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement.m deleted file mode 100644 index 5f99c75c..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/Cell/YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement.m +++ /dev/null @@ -1,254 +0,0 @@ -// -// YMDressUpShopCardTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/7/29. -// - -#import "YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "UIImage+Utils.h" -#import "YUMIMacroUitls.h" -#import "PretendUpwardsProcurementMatrix.h" - -@interface YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement() - -@property (nonatomic, strong) UIView *mainView; -@property (nonatomic, strong) UIView *consumerSolitaireEncourageRegard; -@property (nonatomic, strong) UIImageView *consumerSolitaireEncourageIndicateRegard; -@property (nonatomic, strong) NetIndicateRegard *magnificentIndicateRegard; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UIImageView *bWSttawberryIndicateRegard; -@property (nonatomic, strong) UILabel *bWSttawberrySequencignation; -@property (nonatomic, strong) UIButton *dischargeBtuton; -@property (nonatomic,strong) UIButton *useBtuton; -@property (nonatomic, strong) UIView *restrictionIntratemporalBackgroundRegard; -@property (nonatomic, strong) UILabel *restrictionSequencignation; - -@end - -@implementation YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor];; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.mainView]; - [self.mainView addSubview:self.consumerSolitaireEncourageRegard]; - [self.mainView addSubview:self.consumerSolitaireEncourageIndicateRegard]; - [self.mainView addSubview:self.magnificentIndicateRegard]; - [self.mainView addSubview:self.titleLabel]; - [self.mainView addSubview:self.bWSttawberryIndicateRegard]; - [self.mainView addSubview:self.bWSttawberrySequencignation]; - [self.mainView addSubview:self.dischargeBtuton]; - [self.mainView addSubview:self.useBtuton]; - [self.mainView addSubview:self.restrictionIntratemporalBackgroundRegard]; - [self.restrictionIntratemporalBackgroundRegard addSubview:self.restrictionSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.mainView mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(268); - make.left.right.mas_equalTo(self).inset(15); - make.top.mas_equalTo(12); - }]; - [self.consumerSolitaireEncourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(0); - make.height.mas_equalTo(180); - }]; - [self.consumerSolitaireEncourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(110); - make.width.mas_equalTo(285); - make.bottom.mas_equalTo(self.consumerSolitaireEncourageRegard).mas_offset(-4); - make.centerX.mas_equalTo(self.mainView); - }]; - [self.magnificentIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(180); - make.width.mas_equalTo(330); - make.bottom.mas_equalTo(self.consumerSolitaireEncourageIndicateRegard); - make.centerX.mas_equalTo(self.mainView); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(12); - make.top.mas_equalTo(self.consumerSolitaireEncourageRegard.mas_bottom).mas_offset(14); - make.height.mas_equalTo(14); - }]; - [self.bWSttawberryIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.bWSttawberrySequencignation.mas_left).mas_offset(-4); - make.size.mas_equalTo(CGSizeMake(11, 11)); - make.centerY.mas_equalTo(self.titleLabel); - }]; - [self.bWSttawberrySequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.titleLabel); - make.right.mas_equalTo(-12); - make.height.mas_equalTo(20); - }]; - CGFloat width = (KScreenWidth - 30-20-12) *0.5; - [self.dischargeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(width, 32)); - make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(16); - make.right.mas_equalTo(self.mas_centerX).mas_offset(-6); - }]; - [self.useBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.mas_centerX).mas_offset(6); - make.size.mas_equalTo(self.dischargeBtuton); - make.centerY.mas_equalTo(self.dischargeBtuton); - }]; - [self.restrictionIntratemporalBackgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.right.mas_equalTo(self.consumerSolitaireEncourageRegard); - make.size.mas_equalTo(CGSizeMake(36, 20)); - }]; - [self.restrictionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.restrictionIntratemporalBackgroundRegard); - }]; -} - -#pragma mark - private - -- (void)setMagnificentSolitaireMatrix:(PretendUpwardsProcurementMatrix *)magnificentSolitaireMatrix { - _magnificentSolitaireMatrix = magnificentSolitaireMatrix; - if (_magnificentSolitaireMatrix) { - self.titleLabel.text = [NSString stringWithFormat:@"%@(%zd天)", magnificentSolitaireMatrix.name, magnificentSolitaireMatrix.dressDay]; - self.magnificentIndicateRegard.imageUrl = magnificentSolitaireMatrix.pic; - self.bWSttawberrySequencignation.text = [NSString stringWithFormat:@"%zd", magnificentSolitaireMatrix.dressPrice]; - self.restrictionIntratemporalBackgroundRegard.hidden = (magnificentSolitaireMatrix.dressLimitStatus != 0); - } -} - -#pragma mark - Event Response -- (void)prohibitichargeBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIPretconcludeedProcurementSolitaireTarbsultowardsionViweElementDischargePretconclude:dressId:)]) { - [self.delegate yUMIPretconcludeedProcurementSolitaireTarbsultowardsionViweElementDischargePretconclude:self dressId:self.magnificentSolitaireMatrix.dressUpId]; - } -} - -- (void)utilizeBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIPretconcludeedProcurementSolitaireTarbsultowardsionViweElementAcquirePretconclude:dressId:)]) { - [self.delegate yUMIPretconcludeedProcurementSolitaireTarbsultowardsionViweElementAcquirePretconclude:self dressId:self.magnificentSolitaireMatrix.dressUpId]; - } -} - -#pragma mark - Getter && Setter -- (UIView *)mainView { - if (!_mainView) { - _mainView = [[UIView alloc] init]; - _mainView.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _mainView.layer.cornerRadius = 10; - _mainView.layer.masksToBounds = YES; - } - return _mainView; -} - -- (UIView *)consumerSolitaireEncourageRegard { - if (!_consumerSolitaireEncourageRegard) { - _consumerSolitaireEncourageRegard = [[UIView alloc] init]; - _consumerSolitaireEncourageRegard.backgroundColor = UIColorFromRGB(0xEAE5FC); - } - return _consumerSolitaireEncourageRegard;; -} - -- (NetIndicateRegard *)magnificentIndicateRegard { - if (!_magnificentIndicateRegard) { - _magnificentIndicateRegard = [[NetIndicateRegard alloc] init]; - _magnificentIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _magnificentIndicateRegard;; -} - -- (UIImageView *)consumerSolitaireEncourageIndicateRegard { - if (!_consumerSolitaireEncourageIndicateRegard) { - _consumerSolitaireEncourageIndicateRegard = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yumi_center_dressup_grand_background"]]; - _consumerSolitaireEncourageIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _consumerSolitaireEncourageIndicateRegard;; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -- (UIImageView *)bWSttawberryIndicateRegard { - if (!_bWSttawberryIndicateRegard) { - _bWSttawberryIndicateRegard = [[UIImageView alloc] init]; - _bWSttawberryIndicateRegard.image = [UIImage imageNamed:@"yumi_same_diamond"]; - } - return _bWSttawberryIndicateRegard; -} - -- (UILabel *)bWSttawberrySequencignation { - if (!_bWSttawberrySequencignation) { - _bWSttawberrySequencignation = [[UILabel alloc] init]; - _bWSttawberrySequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; - _bWSttawberrySequencignation.textColor = UIColorFromRGB(0xFFBC51); - } - return _bWSttawberrySequencignation; -} - -- (UIButton *)dischargeBtuton { - if (!_dischargeBtuton) { - _dischargeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_dischargeBtuton setTitle:YMLocalizedString(@"YUMI_Dress_Up_Shop_Card_Table_View_Cell_1") forState:UIControlStateNormal]; - [_dischargeBtuton setTitleColor:UIColorFromRGB(0xFFA936) forState:UIControlStateNormal]; - [_dischargeBtuton addTarget:self action:@selector(prohibitichargeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _dischargeBtuton.layer.masksToBounds = YES; - _dischargeBtuton.layer.cornerRadius = 32/2; - _dischargeBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - _dischargeBtuton.backgroundColor = UIColorFromRGB(0xFFF0C9); - } - return _dischargeBtuton; -} - -- (UIButton *)useBtuton { - if (!_useBtuton) { - _useBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_useBtuton setTitle:YMLocalizedString(@"YUMI_Dress_Up_Shop_Card_Table_View_Cell_2") forState:UIControlStateNormal]; - [_useBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_useBtuton addTarget:self action:@selector(utilizeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _useBtuton.layer.masksToBounds = YES; - _useBtuton.layer.cornerRadius = 32/2; - _useBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_useBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } - return _useBtuton; -} - -- (UIView *)restrictionIntratemporalBackgroundRegard { - if (!_restrictionIntratemporalBackgroundRegard) { - _restrictionIntratemporalBackgroundRegard = [[UIView alloc] init]; - _restrictionIntratemporalBackgroundRegard.backgroundColor = UIColorFromRGB(0xFB486A); - CAShapeLayer * layer = [CAShapeLayer layer]; - UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 36, 20) byRoundingCorners:UIRectCornerBottomLeft cornerRadii:CGSizeMake(10, 10)]; - layer.path = path.CGPath; - _restrictionIntratemporalBackgroundRegard.layer.masksToBounds = YES; - _restrictionIntratemporalBackgroundRegard.layer.mask = layer; - - } - return _restrictionIntratemporalBackgroundRegard; -} - -- (UILabel *)restrictionSequencignation { - if (!_restrictionSequencignation) { - _restrictionSequencignation = [[UILabel alloc] init]; - _restrictionSequencignation.text = YMLocalizedString(@"YUMI_Dress_Up_Shop_Card_Table_View_Cell_3"); - _restrictionSequencignation.textColor = [UIColor whiteColor]; - _restrictionSequencignation.font = [UIFont systemFontOfSize:10]; - _restrictionSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _restrictionSequencignation; -} -@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/XPDressSearchViewController.h b/YuMi/Modules/YMMine/View/DressUp/View/XPDressSearchViewController.h new file mode 100644 index 00000000..7b977cd9 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/XPDressSearchViewController.h @@ -0,0 +1,19 @@ +// +// YMDressSearchViewController.h +// YUMI +// +// Created by YUMI on 2022/7/29. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPDressSearchViewController : MvpViewController + +@property (nonatomic, assign) NSInteger dressType; +@property (nonatomic, copy) NSString *dressId; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/XPDressSearchViewController.m b/YuMi/Modules/YMMine/View/DressUp/View/XPDressSearchViewController.m new file mode 100644 index 00000000..6a720945 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/XPDressSearchViewController.m @@ -0,0 +1,184 @@ +// +// YMDressSearchViewController.m +// YUMI +// +// Created by YUMI on 2022/7/29. +// + +#import "XPDressSearchViewController.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "Api+DressUp.h" +#import "NSArray+Safe.h" +///Model +#import "HomeSearchResultModel.h" +///View +#import "XPDressShopSearchTableViewCell.h" +#import "XPHomeSearchNavView.h" +///P +#import "XPHomeSearchPresenter.h" +#import "XPHomeSearchProtocol.h" +///VC +#import "XPRoomViewController.h" +#import "XPMineUserInfoViewController.h" +@interface XPDressSearchViewController () + +///搜索 +@property (nonatomic,strong) XPHomeSearchNavView *searchView; +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSArray *datasource; + +@end + +@implementation XPDressSearchViewController + +- (XPHomeSearchPresenter *)createPresenter { + return [[XPHomeSearchPresenter alloc] init]; +} + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + [self.view endEditing:YES]; +} + +#pragma mark - Public Method +- (void)searchText:(NSString *)text { + NSString * type = @"2"; + [self.presenter searchRoomList:text type:type]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.searchView]; + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.searchView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.height.mas_equalTo(kNavigationHeight); + }]; + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.bottom.right.mas_equalTo(self.view); + make.top.mas_equalTo(self.searchView.mas_bottom); + }]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 74; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + XPDressShopSearchTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPDressShopSearchTableViewCell class])]; + if (cell == nil) { + cell = [[XPDressShopSearchTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPDressShopSearchTableViewCell class])]; + } + HomeSearchResultModel * resultModel = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.data = resultModel; + cell.delegate = self; + cell.selectionStyle = UITableViewCellSelectionStyleNone; + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; +} + +#pragma mark - XPDressShopSearchTableViewCellDelegate +- (void)xPDressShopSearchTableViewCellSendButtonClick:(XPDressShopSearchTableViewCell *)cell { + NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; + HomeSearchResultModel * resultModel = [self.datasource safeObjectAtIndex1:indexPath.row]; + [self showLoading]; + [Api requestSendDress:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + [self hideHUD]; + if (code == 200) { + [self showSuccessToast:YMLocalizedString(@"XPDressSearchViewController0")]; + } else { + [self showErrorToast:msg]; + } + } id:self.dressId targetUid:resultModel.uid]; +} + +#pragma mark - XPHomeSearchProtocol +- (void)searchRoomSuccess:(NSArray *)data type:(nonnull NSString *)type { + self.datasource = data; + [self.tableView reloadData]; +} + +#pragma mark - +- (UIView *)listView { + return self.view; +} + +#pragma mark - UITextFieldDelegate +- (BOOL)textFieldShouldReturn:(UITextField *)textField { + if (textField.text.length > 0) { + [textField resignFirstResponder]; + [self searchText:textField.text]; + } else { + [self showErrorToast:YMLocalizedString(@"XPDressSearchViewController1")]; + } + return YES; +} + +#pragma mark -XPHomeSearchNavViewDelegate +- (void)xPHomeSearchNavView:(XPHomeSearchNavView *)view didClickSearch:(UIButton *)sender { + if (view.searchTextField.text.length > 0) { + [view.searchTextField resignFirstResponder]; + [self searchText:view.searchTextField.text]; + } else { + [self showErrorToast:YMLocalizedString(@"XPDressSearchViewController2")]; + } +} + +- (void)xPHomeSearchNavView:(XPHomeSearchNavView *)view didClickBack:(UIButton *)sender { + [view.searchTextField resignFirstResponder]; + [self.navigationController popViewControllerAnimated:YES]; +} + +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableHeaderView = [UIView new]; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPDressShopSearchTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPDressShopSearchTableViewCell class])]; + } + return _tableView; +} + +- (XPHomeSearchNavView *)searchView { + if (!_searchView) { + _searchView = [[XPHomeSearchNavView alloc] init]; + _searchView.delegate = self; + _searchView.searchTextField.delegate = self; + } + return _searchView; +} +@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/XPDressUpShopCardViewController.h b/YuMi/Modules/YMMine/View/DressUp/View/XPDressUpShopCardViewController.h new file mode 100644 index 00000000..a039bd0b --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/XPDressUpShopCardViewController.h @@ -0,0 +1,21 @@ +// +// YMDressUpShopCardViewController.h +// YUMI +// +// Created by YUMI on 2022/7/29. +// + +#import "MvpViewController.h" +#import +#import "XPDressUpShopProtocol.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPDressUpShopCardViewController : MvpViewController + +///类型 +@property (nonatomic,assign) DressUpShopListType type; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/XPDressUpShopCardViewController.m b/YuMi/Modules/YMMine/View/DressUp/View/XPDressUpShopCardViewController.m new file mode 100644 index 00000000..de744e49 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/XPDressUpShopCardViewController.m @@ -0,0 +1,194 @@ +// +// YMDressUpShopCardViewController.m +// YUMI +// +// Created by YUMI on 2022/7/29. +// + +#import "XPDressUpShopCardViewController.h" +///Third +#import +///Tool +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" +///View +#import "XPMineDressEmptyTableViewCell.h" +#import "XPDressUpShopCardTableViewCell.h" +#import "XPDressSearchViewController.h" +///P +#import "XPDressUpShopPresenter.h" +///Model +#import "NobleCardModel.h" + +@interface XPDressUpShopCardViewController () + +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSArray *datasource; + +@end + +@implementation XPDressUpShopCardViewController + +- (XPDressUpShopPresenter *)createPresenter { + return [[XPDressUpShopPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} +#pragma mark - XPDressUpShopCardTableViewCellDelegate +///赠送装扮 +- (void)xPDressUpShopCardTableViewCellSendDress:(XPDressUpShopCardTableViewCell *)view dressId:(NSString *)dressId { + XPDressSearchViewController *vc = [[XPDressSearchViewController alloc] init]; + vc.dressType = self.type; + vc.dressId = dressId; + [self.navigationController pushViewController:vc animated:YES]; +} + +///购买装扮 +- (void)xPDressUpShopCardTableViewCellBuyDress:(XPDressUpShopCardTableViewCell *)view dressId:(NSString *)dressId { + [self.presenter buyDressUp:self.type dressId:dressId]; +} + +#pragma mark - XPMineDressUpProtocol +- (void)getShopListSuccess:(NSArray *)array type:(DressUpShopListType)type { + if (type == self.type) { + self.datasource = array; + [self.tableView reloadData]; + } +} + +///购买装扮成功 +- (void)buyShopDressSuccessWithType:(DressUpShopListType)type { + if (type == self.type) { + [self showSuccessToast:YMLocalizedString(@"XPDressUpShopCardViewController0")]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"buyDressSuccessNoti" object:nil]; + } +} + +- (void)getUserHeadwearListSuccess:(NSArray *)array { + self.datasource = array; + [self.tableView reloadData]; +} + +- (void)getUserCarListSuccess:(NSArray *)array { + self.datasource = array; + [self.tableView reloadData]; +} + +- (void)getUserNameplateListSuccess:(NSArray *)array { + self.datasource = array; + [self.tableView reloadData]; +} + +- (void)getUserNobleCardListSuccess:(NSArray *)array { + self.datasource = array; + [self.tableView reloadData]; +} + +- (void)useHeadwearSuccess:(NSString *)headWearId { +// [self.presenter getUserHeadwearList]; + [self showSuccessToast:headWearId.integerValue == 0 ? @"取消使用头饰成功" : YMLocalizedString(@"XPDressUpShopCardViewController2")]; + +} + +- (void)useCarSuccess:(NSString *)carId { +// [self.presenter getUserCarList]; + [self showSuccessToast:carId.integerValue == 0 ? @"取消使用座驾成功" : YMLocalizedString(@"XPDressUpShopCardViewController4")]; +} + +- (void)useNameplateSuccess:(NSString *)nameplateId { +// [self.presenter getUserNameplateList]; + [self showSuccessToast:nameplateId.integerValue == 0 ? @"取消使用铭牌成功" : YMLocalizedString(@"XPDressUpShopCardViewController6")]; +} + +- (void)userNobleCardSuccess:(NSString *)nobleCardId { + [self showSuccessToast:nobleCardId.integerValue == 0 ? @"取消使用资料卡成功" : YMLocalizedString(@"XPDressUpShopCardViewController8")]; + if (nobleCardId.integerValue == 0) { + for (NobleCardModel *model in self.datasource) { + model.used = NO; + } + } else { + for (NobleCardModel *model in self.datasource) { + if ([model.cardId isEqualToString:nobleCardId]) { + model.used = YES; + } else { + model.used = NO; + } + } + } + [self.tableView reloadData]; +} + +#pragma mark - JXCategoryListContentViewDelegate +- (UIView *)listView { + return self.view; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return self.datasource.count > 0 ? 280 : (KScreenHeight - kNavigationHeight - 100 -50); +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPDressUpShopCardTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPDressUpShopCardTableViewCell class])]; + if (cell == nil) { + cell = [[XPDressUpShopCardTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPDressUpShopCardTableViewCell class])]; + } + cell.nobleCardModel = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.delegate = self; + return cell; + } + XPMineDressEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineDressEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineDressEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineDressEmptyTableViewCell class])]; + } + cell.emptyTitle = YMLocalizedString(@"XPDressUpShopCardViewController9"); + return cell; +} + +#pragma mark - Getters And Setters +- (void)setType:(DressUpShopListType)type { + _type = type; + [self.presenter getDressUpShopList:type]; +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + _tableView.contentInset = UIEdgeInsetsMake(0, 0, kSafeAreaBottomHeight, 0); + [_tableView registerClass:[XPDressUpShopCardTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPDressUpShopCardTableViewCell class])]; + [_tableView registerClass:[XPMineDressEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineDressEmptyTableViewCell class])]; + } + return _tableView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/XPDressUpShopListViewController.h b/YuMi/Modules/YMMine/View/DressUp/View/XPDressUpShopListViewController.h new file mode 100644 index 00000000..84ed99b1 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/XPDressUpShopListViewController.h @@ -0,0 +1,21 @@ +// +// YMDressUpShopListViewController.h +// YUMI +// +// Created by YUMI on 2022/7/28. +// + +#import "MvpViewController.h" +#import +#import "XPDressUpShopProtocol.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPDressUpShopListViewController : MvpViewController + +///类型 +@property (nonatomic,assign) DressUpShopListType type; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/XPDressUpShopListViewController.m b/YuMi/Modules/YMMine/View/DressUp/View/XPDressUpShopListViewController.m new file mode 100644 index 00000000..44299fab --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/XPDressUpShopListViewController.m @@ -0,0 +1,220 @@ +// +// YMDressUpShopListViewController.m +// YUMI +// +// Created by YUMI on 2022/7/28. +// + +#import "XPDressUpShopListViewController.h" +///Third +#import +///Tool +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" +///View +#import "XPMineDressEmptyCollectionViewCell.h" +#import "XPDressUpShopCollectionViewCell.h" +#import "XPDressSearchViewController.h" +///P +#import "XPDressUpShopPresenter.h" +///Model +#import "NobleCardModel.h" + +@interface XPDressUpShopListViewController () + +///列表 +@property (nonatomic,strong) UICollectionView *collectionView; +///数据源 +@property (nonatomic,strong) NSArray *datasource; + +@end + +@implementation XPDressUpShopListViewController + +- (XPDressUpShopPresenter *)createPresenter { + return [[XPDressUpShopPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.collectionView]; +} + +- (void)initSubViewConstraints { + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +#pragma mark - XPDressUpShopCollectionViewCellDelegate +- (void)xPDressUpShopCollectionViewCellSendDress:(XPDressUpShopCollectionViewCell *)view dressId:(NSString *)dressId { + XPDressSearchViewController *vc = [[XPDressSearchViewController alloc] init]; + vc.dressType = self.type; + vc.dressId = dressId; + [self.navigationController pushViewController:vc animated:YES]; +} + +- (void)xPDressUpShopCollectionViewCellBuyDress:(XPDressUpShopCollectionViewCell *)view dressId:(NSString *)dressId { + [self.presenter buyDressUp:self.type dressId:dressId]; +} + +#pragma mark - XPMineDressUpProtocol +- (void)getShopListSuccess:(NSArray *)array type:(DressUpShopListType)type { + if (type == self.type) { + self.datasource = array; + [self.collectionView reloadData]; + } +} + +///购买装扮成功 +- (void)buyShopDressSuccessWithType:(DressUpShopListType)type { + if (type == self.type) { + [self showSuccessToast:YMLocalizedString(@"XPDressUpShopListViewController0")]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"buyDressSuccessNoti" object:nil]; + } +} + +- (void)getUserHeadwearListSuccess:(NSArray *)array { + self.datasource = array; + [self.collectionView reloadData]; +} + +- (void)getUserCarListSuccess:(NSArray *)array { + self.datasource = array; + [self.collectionView reloadData]; +} + +- (void)getUserNameplateListSuccess:(NSArray *)array { + self.datasource = array; + [self.collectionView reloadData]; +} + +- (void)getUserNobleCardListSuccess:(NSArray *)array { + self.datasource = array; + [self.collectionView reloadData]; +} + +- (void)useHeadwearSuccess:(NSString *)headWearId { +// [self.presenter getUserHeadwearList]; + [self showSuccessToast:headWearId.integerValue == 0 ? @"取消使用头饰成功" : YMLocalizedString(@"XPDressUpShopListViewController2")]; +} + +- (void)useCarSuccess:(NSString *)carId { +// [self.presenter getUserCarList]; + [self showSuccessToast:carId.integerValue == 0 ? @"取消使用座驾成功" : YMLocalizedString(@"XPDressUpShopListViewController4")]; +} + +- (void)useNameplateSuccess:(NSString *)nameplateId { +// [self.presenter getUserNameplateList]; + [self showSuccessToast:nameplateId.integerValue == 0 ? @"取消使用铭牌成功" : YMLocalizedString(@"XPDressUpShopListViewController6")]; +} + +- (void)userNobleCardSuccess:(NSString *)nobleCardId { + [self showSuccessToast:nobleCardId.integerValue == 0 ? @"取消使用资料卡成功" : YMLocalizedString(@"XPDressUpShopListViewController8")]; + if (nobleCardId.integerValue == 0) { + for (NobleCardModel *model in self.datasource) { + model.used = NO; + } + } else { + for (NobleCardModel *model in self.datasource) { + if ([model.cardId isEqualToString:nobleCardId]) { + model.used = YES; + } else { + model.used = NO; + } + } + } + [self.collectionView reloadData]; +} + +#pragma mark - JXCategoryListContentViewDelegate +- (UIView *)listView { + return self.view; +} + +#pragma mark - UICollectionViewDelegate +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPDressUpShopCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPDressUpShopCollectionViewCell class]) forIndexPath:indexPath]; + cell.dressUpModel = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.delegate = self; + return cell; + } + XPMineDressEmptyCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPMineDressEmptyCollectionViewCell class]) forIndexPath:indexPath]; + cell.emptyTitle = self.type == DressUpShopListType_HeadWear ? @"暂无头饰" : self.type == DressUpShopListType_Car ? @"暂无座驾" : self.type == DressUpShopListType_Nameplate ? @"暂无铭牌" : YMLocalizedString(@"XPDressUpShopListViewController12"); + return cell; +} + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + CGFloat width = (KScreenWidth - 42) *0.5; + return CGSizeMake(width, 188); + } else { + return CGSizeMake(KScreenWidth - 32, KScreenHeight - kNavigationHeight - 100 -50); + } +} + +- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { + if (self.datasource.count > 0) { + return 12; + } else { + return 0; + } +} + +- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section { + if (self.datasource.count > 0) { + return 12; + } else { + return 0; + } +} + +#pragma mark - Getters And Setters +- (void)setType:(DressUpShopListType)type { + _type = type; + switch (type) { + case DressUpShopListType_HeadWear: + [self.presenter getDressUpShopList:DressUpShopListType_HeadWear]; + break; + case DressUpShopListType_Car: + [self.presenter getDressUpShopList:DressUpShopListType_Car]; + break; + case DressUpShopListType_Nameplate: + [self.presenter getDressUpShopList:DressUpShopListType_Nameplate]; + break; + case DressUpShopListType_Bubble: + [self.presenter getDressUpShopList:DressUpShopListType_Bubble]; + break; + default: + break; + } +} + + +- (UICollectionView *)collectionView { + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.scrollDirection = UICollectionViewScrollDirectionVertical; + layout.sectionInset = UIEdgeInsetsMake(15, 15, 15, 15); + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.backgroundColor = [UIColor clearColor]; + [_collectionView registerClass:[XPDressUpShopCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPDressUpShopCollectionViewCell class])]; + [_collectionView registerClass:[XPMineDressEmptyCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPMineDressEmptyCollectionViewCell class])]; + } + return _collectionView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/XPDressUpShopViewController.h b/YuMi/Modules/YMMine/View/DressUp/View/XPDressUpShopViewController.h new file mode 100644 index 00000000..98f486b0 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/XPDressUpShopViewController.h @@ -0,0 +1,19 @@ +// +// YMDressUpShopViewController.h +// YUMI +// +// Created by YUMI on 2022/7/28. +// + +#import "BaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPDressUpShopViewController : BaseViewController + +///当前的index @[@"头饰", @"座驾", @"铭牌", @"资料卡", @"聊天气泡"] +@property (nonatomic,assign) NSInteger currentIndex; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/XPDressUpShopViewController.m b/YuMi/Modules/YMMine/View/DressUp/View/XPDressUpShopViewController.m new file mode 100644 index 00000000..aeae64c2 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/XPDressUpShopViewController.m @@ -0,0 +1,388 @@ +// +// YMDressUpShopViewController.m +// YUMI +// +// Created by YUMI on 2022/7/28. +// + +#import "XPDressUpShopViewController.h" +///Third +#import +#import +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "Api+DressUp.h" +#import "YUMIMacroUitls.h" +#import "UIImage+Utils.h" +#import "AccountInfoStorage.h" +#import "NSArray+Safe.h" +///Model +#import "ActivityInfoModel.h" +#import "WalletInfoModel.h" +///View +#import "XPDressUpShopListViewController.h" +#import "XPRoomViewController.h" +#import "XPWebViewController.h" +#import "XPMineDressUpViewController.h" +#import "XPDressUpShopCardViewController.h" +#import "XPMineRechargeViewController.h" +#import "XPIAPRechargeViewController.h" + +@interface XPDressUpShopViewController () + +///分页标题 +@property (nonatomic, strong) NSArray *titles; +///分页控件 +@property (nonatomic, strong) JXCategoryTitleView *titleView; +///分页lineView +@property (nonatomic, strong) JXCategoryListContainerView *contentView; +///头饰 +@property (nonatomic,strong) XPDressUpShopListViewController *headwearView; +///座驾 +@property (nonatomic,strong) XPDressUpShopListViewController *carView; +///铭牌 +@property (nonatomic,strong) XPDressUpShopListViewController *nameplateView; +///贵族资料卡 +@property (nonatomic, strong) XPDressUpShopCardViewController *nobleView; +///公屏气泡 +@property (nonatomic, strong) XPDressUpShopListViewController *bubbleView; +///轮播图 +@property (nonatomic,strong) SDCycleScrollView *cycleScrollView; +///房间活动的列表 +@property (nonatomic,copy) NSArray *activityList; + +///容器view +@property (nonatomic, strong) UIView *mainView; +///名字 +@property (nonatomic, strong) UILabel *titleLabel; +///钻石图标 +@property (nonatomic, strong) UIImageView *diamondImageView; +///钻石金额 +@property (nonatomic, strong) UILabel *diamondLabel; +///赠送 +@property (nonatomic, strong) UIButton *sendButton; + +@end + +@implementation XPDressUpShopViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + [self requestActivityList]; + [self initSubViews]; + [self initSubViewConstraints]; + [self addNavigationItemWithTitles:@[YMLocalizedString(@"XPDressUpShopViewController0")] titleColor:[DJDKMIMOMColor textThirdColor] isLeft:NO target:self action:@selector(rightButtonAction:) tags:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(buyDressSuccess) name:@"buyDressSuccessNoti" object:nil]; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [self requestWallet]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPDressUpShopViewController1"); + [self.view addSubview:self.cycleScrollView]; + [self.view addSubview:self.titleView]; + [self.view addSubview:self.contentView]; + [self.view addSubview:self.mainView]; + [self.mainView addSubview:self.titleLabel]; + [self.mainView addSubview:self.diamondImageView]; + [self.mainView addSubview:self.diamondLabel]; + [self.mainView addSubview:self.sendButton]; +} + +- (void)initSubViewConstraints { + [self.cycleScrollView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.view); + make.left.mas_equalTo(15); + make.right.mas_equalTo(-15); + make.height.mas_equalTo(100); + }]; + + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.height.mas_equalTo(50); + make.top.mas_equalTo(self.cycleScrollView.mas_bottom); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.mainView.mas_top); + make.top.mas_equalTo(self.titleView.mas_bottom); + }]; + + [self.mainView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.height.mas_equalTo(iPhoneXSeries ? 48+34 : 48); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.diamondImageView.mas_right).mas_offset(4); + make.centerY.mas_equalTo(self.diamondImageView); + make.height.mas_equalTo(17); + }]; + [self.diamondImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(15); + make.size.mas_equalTo(CGSizeMake(15, 15)); + make.top.mas_equalTo(18); + }]; + [self.diamondLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.titleLabel); + make.left.mas_equalTo(self.titleLabel.mas_right).mas_offset(4); + make.height.mas_equalTo(22); + }]; + [self.sendButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(72, 24)); + make.right.mas_equalTo(-15); + make.centerY.mas_equalTo(self.titleLabel); + }]; +} + +#pragma mark - notification +- (void)buyDressSuccess { + [self requestWallet]; +} + +- (void)requestWallet { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + [Api getUserWalletInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + WalletInfoModel * model = [WalletInfoModel modelWithDictionary:data.data]; + self.diamondLabel.text = model.diamonds; + } + } uid:uid ticket:ticket]; +} + +- (void)requestActivityList { + [Api dressupBannerList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + NSArray * array = [ActivityInfoModel modelsWithArray:data.data]; + if (array.count <= 0) { + [self.cycleScrollView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(0); + }]; + return; + } + self.activityList = array; + NSMutableArray * picList = [NSMutableArray array]; + [array enumerateObjectsUsingBlock:^(ActivityInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.bannerPic.length > 0) { + [picList addObject:obj.bannerPic]; + } + }]; + self.cycleScrollView.imageURLStringsGroup = picList; + if (array.count > 1) { + [self.cycleScrollView setAutoScroll:YES]; + self.cycleScrollView.autoScrollTimeInterval = 3; + } else { + [self.cycleScrollView setAutoScroll:NO]; + } + } else { + [self.cycleScrollView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(0); + }]; + } + } type:@"3"]; +} + +- (void)rightButtonAction:(UIButton *)sender { + XPMineDressUpViewController *vc = [[XPMineDressUpViewController alloc] init]; + [self.navigationController pushViewController:vc animated:YES]; +} + +#pragma mark - JXCategoryViewDelegate +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { + return self.titles.count; +} + +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { + if (index == 0) { + return self.headwearView; + } else if(index == 1) { + return self.carView; + } else if (index == 2) { + return self.nameplateView; + } else if (index == 3) { + return self.nobleView; + } + return self.bubbleView; +} + +// 点击选中或者滚动选中都会调用该方法。适用于只关心选中事件,不关心具体是点击还是滚动选中的。 +- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { + // 侧滑手势处理 + self.navigationController.interactivePopGestureRecognizer.enabled = (index == 0); +} + +#pragma mark - SDCycleScrollViewDelegate +- (void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didSelectItemAtIndex:(NSInteger)index { + if (self.activityList.count > index) { + ActivityInfoModel * info = [self.activityList safeObjectAtIndex1:index]; + if (info.skipType == ActivitySkipType_Room) { + [XPRoomViewController openRoom:info.skipUri viewController:self.navigationController]; + } else if(info.skipType == ActivitySkipType_Web) { + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + webVC.url = info.skipUri; + [self.navigationController pushViewController:webVC animated:YES]; + } + } +} + +- (void)rechargeButtonAction:(UIButton *)sender { +// XPMineRechargeViewController *vc = [[XPMineRechargeViewController alloc] init]; + XPIAPRechargeViewController * rechargeVC = [[XPIAPRechargeViewController alloc] init]; + [self.navigationController pushViewController:rechargeVC animated:YES]; +} + +#pragma mark - Getters And Setters +- (void)setCurrentIndex:(NSInteger)currentIndex { + if (currentIndex < self.titles.count) { + [self.titleView setDefaultSelectedIndex:currentIndex]; + } +} + +- (JXCategoryTitleView *)titleView { + if (!_titleView) { + _titleView = [[JXCategoryTitleView alloc] init]; + _titleView.delegate = self; + _titleView.titles = self.titles; + _titleView.titleColor = [DJDKMIMOMColor secondTextColor]; + _titleView.titleSelectedColor = [DJDKMIMOMColor mainTextColor]; + _titleView.titleFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; + _titleView.titleSelectedFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; + _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; + _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; + _titleView.defaultSelectedIndex = 0; + _titleView.listContainer = self.contentView; + + JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init]; + lineView.indicatorColor = [DJDKMIMOMColor appMainColor]; + lineView.indicatorWidth = 8.f; + lineView.indicatorHeight = 4.f; + lineView.indicatorCornerRadius = 2.f; + _titleView.indicators = @[lineView]; + } + return _titleView; +} + +- (JXCategoryListContainerView *)contentView { + if (!_contentView) { + _contentView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; + _contentView.scrollView.backgroundColor = [UIColor clearColor]; + _contentView.defaultSelectedIndex = 0; + } + return _contentView; +} + +- (NSArray *)titles { + return @[@"头饰", @"座驾", @"铭牌", @"资料卡", YMLocalizedString(@"XPDressUpShopViewController6")]; +} + +- (XPDressUpShopListViewController *)headwearView { + if (!_headwearView) { + _headwearView = [[XPDressUpShopListViewController alloc] init]; + _headwearView.type = DressUpShopListType_HeadWear; + } + return _headwearView; +} + +- (XPDressUpShopListViewController *)carView { + if (!_carView) { + _carView = [[XPDressUpShopListViewController alloc] init]; + _carView.type = DressUpShopListType_Car; + } + return _carView; +} + +- (XPDressUpShopListViewController *)nameplateView { + if (!_nameplateView) { + _nameplateView = [[XPDressUpShopListViewController alloc] init]; + _nameplateView.type = DressUpShopListType_Nameplate; + } + return _nameplateView; +} + +- (XPDressUpShopCardViewController *)nobleView { + if (!_nobleView) { + _nobleView = [[XPDressUpShopCardViewController alloc] init]; + _nobleView.type = DressUpShopListType_Noble; + } + return _nobleView; +} + +- (XPDressUpShopListViewController *)bubbleView { + if (!_bubbleView) { + _bubbleView = [[XPDressUpShopListViewController alloc] init]; + _bubbleView.type = DressUpShopListType_Bubble; + } + return _bubbleView; +} + +- (SDCycleScrollView *)cycleScrollView { + if (!_cycleScrollView) { + _cycleScrollView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectZero delegate:self placeholderImage:nil]; + _cycleScrollView.pageControlAliment = SDCycleScrollViewPageContolAlimentCenter; + _cycleScrollView.currentPageDotColor = [UIColor whiteColor]; + _cycleScrollView.pageDotColor = [UIColor colorWithWhite:1 alpha:0.15]; + _cycleScrollView.backgroundColor = [UIColor colorWithWhite:1 alpha:0.00]; + _cycleScrollView.bannerImageViewContentMode = UIViewContentModeScaleAspectFill; + _cycleScrollView.layer.masksToBounds = YES; + _cycleScrollView.layer.cornerRadius = 12; + } + return _cycleScrollView; +} + +- (UIView *)mainView { + if (!_mainView) { + _mainView = [[UIView alloc] init]; + _mainView.backgroundColor = [UIColor whiteColor]; + } + return _mainView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightBold]; + _titleLabel.textColor = [DJDKMIMOMColor textThirdColor]; + _titleLabel.text = YMLocalizedString(@"XPDressUpShopViewController7"); + } + return _titleLabel; +} + +- (UIImageView *)diamondImageView { + if (!_diamondImageView) { + _diamondImageView = [[UIImageView alloc] init]; + _diamondImageView.image = [UIImage imageNamed:@"common_diamond"]; + } + return _diamondImageView; +} + +- (UILabel *)diamondLabel { + if (!_diamondLabel) { + _diamondLabel = [[UILabel alloc] init]; + _diamondLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightBold]; + _diamondLabel.textColor = UIColorFromRGB(0xFFBC51); + } + return _diamondLabel; +} + +- (UIButton *)sendButton { + if (!_sendButton) { + _sendButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_sendButton setTitle:YMLocalizedString(@"XPDressUpShopViewController8") forState:UIControlStateNormal]; + [_sendButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_sendButton addTarget:self action:@selector(rechargeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _sendButton.layer.masksToBounds = YES; + _sendButton.layer.cornerRadius = 24/2; + _sendButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_sendButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } + return _sendButton; +} + +@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/XPMineDressUpBubbleViewController.h b/YuMi/Modules/YMMine/View/DressUp/View/XPMineDressUpBubbleViewController.h new file mode 100644 index 00000000..41ccd7f4 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/XPMineDressUpBubbleViewController.h @@ -0,0 +1,17 @@ +// +// YMMineDressUpBubbleViewController.h +// YUMI +// +// Created by YUMI on 2022/3/21. +// + +#import "MvpViewController.h" +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineDressUpBubbleViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/XPMineDressUpBubbleViewController.m b/YuMi/Modules/YMMine/View/DressUp/View/XPMineDressUpBubbleViewController.m new file mode 100644 index 00000000..f6924026 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/XPMineDressUpBubbleViewController.m @@ -0,0 +1,147 @@ +// +// YMMineDressUpBubbleViewController.m +// YUMI +// +// Created by YUMI on 2022/3/21. +// + +#import "XPMineDressUpBubbleViewController.h" +///Third +#import +///Tool +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" +///View +#import "XPMineDressBubbleCollectionViewCell.h" +#import "XPMineDressEmptyCollectionViewCell.h" +///P +#import "XPMineDressUpPresenter.h" +#import "XPMineDressUpProtocol.h" +///Model +#import "ChatBubbleModel.h" + +@interface XPMineDressUpBubbleViewController () +///列表 +@property (nonatomic,strong) UICollectionView *collectionView; +///数据源 +@property (nonatomic,strong) NSArray *datasource; + +@end + +@implementation XPMineDressUpBubbleViewController + +- (XPMineDressUpPresenter *)createPresenter { + return [[XPMineDressUpPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + [self.presenter getUserChatBubbleList]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.collectionView]; +} + +- (void)initSubViewConstraints { + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +#pragma mark - XPMineDressBubbleTableViewCellDelegate +- (void)xPMineDressBubbleCollectionViewCell:(XPMineDressBubbleCollectionViewCell *)view bubbleId:(NSString *)bubbleId { + [self.presenter useBubble:bubbleId]; +} + +#pragma mark - XPMineDressUpProtocol +- (void)getUserChatBubbleListSuccess:(NSArray *)array { + self.datasource = array; + [self.collectionView reloadData]; +} + +- (void)useBubbleSuccess:(NSString *)bubbleId { + [self showSuccessToast:bubbleId.integerValue == 0 ? @"取消使用气泡成功" : YMLocalizedString(@"XPMineDressUpBubbleViewController1")]; + if (bubbleId.integerValue == 0) { + for (ChatBubbleModel *model in self.datasource) { + model.hasUsed = NO; + } + } else { + for (ChatBubbleModel *model in self.datasource) { + if ([model.bubbleId isEqualToString:bubbleId]) { + model.hasUsed = YES; + } else { + model.hasUsed = NO; + } + } + } + [self.collectionView reloadData]; +} + +#pragma mark - JXCategoryListContentViewDelegate +- (UIView *)listView { + return self.view; +} + +#pragma mark - UICollectionViewDelegate +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPMineDressBubbleCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPMineDressBubbleCollectionViewCell class]) forIndexPath:indexPath]; + cell.bubbleModel = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.delegate = self; + return cell; + } + XPMineDressEmptyCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPMineDressEmptyCollectionViewCell class]) forIndexPath:indexPath]; + cell.emptyTitle = @"亲爱的用户,你还没有聊天气泡噢!"; + return cell; +} + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + CGFloat width = (KScreenWidth - 42) *0.5; + CGFloat height = width * 158 / 166.0; + return CGSizeMake(width, height); + } else { + return CGSizeMake(KScreenWidth - 32, KScreenHeight - kNavigationHeight - 100 -50); + } +} + +- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { + if (self.datasource.count > 0) { + return 12; + } else { + return 0; + } +} + +- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section { + if (self.datasource.count > 0) { + return 12; + } else { + return 0; + } +} + +- (UICollectionView *)collectionView { + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.scrollDirection = UICollectionViewScrollDirectionVertical; + layout.sectionInset = UIEdgeInsetsMake(15, 15, 15, 15); + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.backgroundColor = [UIColor clearColor]; + [_collectionView registerClass:[XPMineDressBubbleCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPMineDressBubbleCollectionViewCell class])]; + [_collectionView registerClass:[XPMineDressEmptyCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPMineDressEmptyCollectionViewCell class])]; + } + return _collectionView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/XPMineDressUpListViewController.h b/YuMi/Modules/YMMine/View/DressUp/View/XPMineDressUpListViewController.h new file mode 100644 index 00000000..6904ce77 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/XPMineDressUpListViewController.h @@ -0,0 +1,25 @@ +// +// YMMineDressUpListViewController.h +// YUMI +// +// Created by YUMI on 2021/12/15. +// + +#import "MvpViewController.h" +#import +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, DressUpListType) { + DressUpListType_HeadWear = 1, + DressUpListType_Car, + DressUpListType_Nameplate, + DressUpListType_Noble, + DressUpListType_Bubble, +}; + +@interface XPMineDressUpListViewController : MvpViewController +///类型 +@property (nonatomic,assign) DressUpListType type; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/XPMineDressUpListViewController.m b/YuMi/Modules/YMMine/View/DressUp/View/XPMineDressUpListViewController.m new file mode 100644 index 00000000..c70c71fe --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/XPMineDressUpListViewController.m @@ -0,0 +1,235 @@ +// +// YMMineDressUpListViewController.m +// YUMI +// +// Created by YUMI on 2021/12/15. +// + +#import "XPMineDressUpListViewController.h" +///Third +#import +///Tool +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" +///View +#import "XPMineHeadwearTableViewCell.h" +#import "XPMineCarTableViewCell.h" +#import "XPMineNameplateTableViewCell.h" +#import "XPMineDressEmptyTableViewCell.h" +#import "XPMineNobleCardTableViewCell.h" +///P +#import "XPMineDressUpPresenter.h" +#import "XPMineDressUpProtocol.h" +///Model +#import "NobleCardModel.h" + +@interface XPMineDressUpListViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSArray *datasource; +@end + +@implementation XPMineDressUpListViewController + +- (XPMineDressUpPresenter *)createPresenter { + return [[XPMineDressUpPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} +#pragma mark - XPMineNameplateTableViewCellDelegate +- (void)xPMineNameplateTableViewCell:(XPMineNameplateTableViewCell *)view nameplateId:(NSString *)nameplateId { + [self.presenter useNameplate:nameplateId]; +} + +#pragma mark - XPMineHeadwearTableViewCellDelegate +- (void)xPMineHeadwearTableViewCell:(XPMineHeadwearTableViewCell *)view headwearId:(NSString *)headwearId { + [self.presenter useHeader:headwearId]; +} +#pragma mark - XPMineCarTableViewCellDelegate +- (void)xPMineCarTableViewCell:(XPMineCarTableViewCell *)cell carId:(NSString *)carId { + [self.presenter useCar:carId]; +} +#pragma mark - XPMineNobleCardTableViewCellDelegate +- (void)xPMineNobleCardTableViewCell:(XPMineNobleCardTableViewCell *)view nobleCardId:(NSString *)nobleCardId { + [self.presenter userNobleCard:nobleCardId]; +} + +#pragma mark - XPMineDressUpProtocol +- (void)getUserHeadwearListSuccess:(NSArray *)array { + self.datasource = array; + [self.tableView reloadData]; +} + +- (void)getUserCarListSuccess:(NSArray *)array { + self.datasource = array; + [self.tableView reloadData]; +} + +- (void)getUserNameplateListSuccess:(NSArray *)array { + self.datasource = array; + [self.tableView reloadData]; +} + +- (void)getUserNobleCardListSuccess:(NSArray *)array { + self.datasource = array; + [self.tableView reloadData]; +} + +- (void)useHeadwearSuccess:(NSString *)headWearId { + [self.presenter getUserHeadwearList]; + [self showSuccessToast:headWearId.integerValue == 0 ? @"取消使用头饰成功" : YMLocalizedString(@"XPMineDressUpListViewController1")]; + +} + +- (void)useCarSuccess:(NSString *)carId { + [self.presenter getUserCarList]; + [self showSuccessToast:carId.integerValue == 0 ? @"取消使用座驾成功" : YMLocalizedString(@"XPMineDressUpListViewController3")]; +} + +- (void)useNameplateSuccess:(NSString *)nameplateId { + [self.presenter getUserNameplateList]; + [self showSuccessToast:nameplateId.integerValue == 0 ? @"取消使用铭牌成功" : YMLocalizedString(@"XPMineDressUpListViewController5")]; +} + +- (void)userNobleCardSuccess:(NSString *)nobleCardId { + [self showSuccessToast:nobleCardId.integerValue == 0 ? @"取消使用资料卡成功" : YMLocalizedString(@"XPMineDressUpListViewController7")]; + if (nobleCardId.integerValue == 0) { + for (NobleCardModel *model in self.datasource) { + model.used = NO; + } + } else { + for (NobleCardModel *model in self.datasource) { + if ([model.cardId isEqualToString:nobleCardId]) { + model.used = YES; + } else { + model.used = NO; + } + } + } + [self.tableView reloadData]; +} + +#pragma mark - JXCategoryListContentViewDelegate +- (UIView *)listView { + return self.view; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.type == DressUpListType_Noble) { + return self.datasource.count > 0 ? 236 : (KScreenHeight - kNavigationHeight - 100 -50); + } else if (self.type == DressUpListType_Nameplate) { + return self.datasource.count > 0 ? 76 : (KScreenHeight - kNavigationHeight - 100 -50); + } else { + return self.datasource.count > 0 ? 120 : (KScreenHeight - kNavigationHeight - 100 -50); + } +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + if (self.type == DressUpListType_HeadWear) { + XPMineHeadwearTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineHeadwearTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineHeadwearTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineHeadwearTableViewCell class])]; + } + cell.headwearModel = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.delegate = self; + return cell; + } else if(self.type == DressUpListType_Car) { + XPMineCarTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineCarTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineCarTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineCarTableViewCell class])]; + } + cell.carInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.delegate = self; + return cell; + } else if (self.type == DressUpListType_Noble) { + XPMineNobleCardTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineNobleCardTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineNobleCardTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineNobleCardTableViewCell class])]; + } + cell.nobleCardModel = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.delegate = self; + return cell; + } else { + XPMineNameplateTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineNameplateTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineNameplateTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineNameplateTableViewCell class])]; + } + cell.nameplateModel = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.delegate = self; + return cell; + } + } + + XPMineDressEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineDressEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineDressEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineDressEmptyTableViewCell class])]; + } + cell.emptyTitle = self.type == DressUpListType_HeadWear ? @"亲爱的用户,你还没有头饰噢!" : self.type == DressUpListType_Car ? @"亲爱的用户,你还没有座驾噢!" : @"亲爱的用户,你还没有铭牌噢!"; + return cell; +} + +#pragma mark - Getters And Setters +- (void)setType:(DressUpListType)type { + _type = type; + switch (type) { + case DressUpListType_HeadWear: + [self.presenter getUserHeadwearList]; + break; + case DressUpListType_Car: + [self.presenter getUserCarList]; + break; + case DressUpListType_Nameplate: + [self.presenter getUserNameplateList]; + break; + case DressUpListType_Noble: + [self.presenter getUserNobleCardList]; + break; + default: + break; + } +} +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + _tableView.contentInset = UIEdgeInsetsMake(0, 0, kSafeAreaBottomHeight, 0); + [_tableView registerClass:[XPMineNameplateTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineNameplateTableViewCell class])]; + [_tableView registerClass:[XPMineCarTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineCarTableViewCell class])]; + [_tableView registerClass:[XPMineHeadwearTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineHeadwearTableViewCell class])]; + [_tableView registerClass:[XPMineNobleCardTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineNobleCardTableViewCell class])]; + [_tableView registerClass:[XPMineDressEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineDressEmptyTableViewCell class])]; + } + return _tableView; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/XPMineDressUpViewController.h b/YuMi/Modules/YMMine/View/DressUp/View/XPMineDressUpViewController.h new file mode 100644 index 00000000..4c8875ff --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/XPMineDressUpViewController.h @@ -0,0 +1,18 @@ +// +// YMMineDressUpViewController.h +// YUMI +// +// Created by YUMI on 2021/12/15. +// + +#import "BaseViewController.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineDressUpViewController : BaseViewController + +///当前的index @[@"头饰", @"座驾", @"铭牌", @"资料卡", @"聊天气泡"] +@property (nonatomic,assign) NSInteger currentIndex; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/XPMineDressUpViewController.m b/YuMi/Modules/YMMine/View/DressUp/View/XPMineDressUpViewController.m new file mode 100644 index 00000000..759dd7d2 --- /dev/null +++ b/YuMi/Modules/YMMine/View/DressUp/View/XPMineDressUpViewController.m @@ -0,0 +1,254 @@ +// +// YMMineDressUpViewController.m +// YUMI +// +// Created by YUMI on 2021/12/15. +// + +#import "XPMineDressUpViewController.h" +///Third +#import +#import +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "Api+DressUp.h" +#import "NSArray+Safe.h" +///Model +#import "ActivityInfoModel.h" +///View +#import "XPMineDressUpListViewController.h" +#import "XPRoomViewController.h" +#import "XPWebViewController.h" +#import "XPMineDressUpBubbleViewController.h" + +@interface XPMineDressUpViewController () +///分页标题 +@property (nonatomic, strong) NSArray *titles; +///分页控件 +@property (nonatomic, strong) JXCategoryTitleView *titleView; +///分页lineView +@property (nonatomic, strong) JXCategoryListContainerView *contentView; +///头饰 +@property (nonatomic,strong) XPMineDressUpListViewController *headwearView; +///座驾 +@property (nonatomic,strong) XPMineDressUpListViewController *carView; +///铭牌 +@property (nonatomic,strong) XPMineDressUpListViewController *nameplateView; +///贵族资料卡 +@property (nonatomic, strong) XPMineDressUpListViewController *nobleView; +///公屏气泡 +@property (nonatomic, strong) XPMineDressUpBubbleViewController *bubbleView; +///轮播图 +@property (nonatomic,strong) SDCycleScrollView *cycleScrollView; +///房间活动的列表 +@property (nonatomic,copy) NSArray *activityList; +@end + +@implementation XPMineDressUpViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + [self requestActivityList]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMineDressUpViewController0"); + [self.view addSubview:self.cycleScrollView]; + [self.view addSubview:self.titleView]; + [self.view addSubview:self.contentView]; +} + +- (void)initSubViewConstraints { + [self.cycleScrollView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.view); + make.left.mas_equalTo(15); + make.right.mas_equalTo(-15); + make.height.mas_equalTo(100); + }]; + + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.height.mas_equalTo(50); + make.top.mas_equalTo(self.cycleScrollView.mas_bottom); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.top.mas_equalTo(self.titleView.mas_bottom); + }]; +} + +- (void)requestActivityList { + [Api dressupBannerList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + NSArray * array = [ActivityInfoModel modelsWithArray:data.data]; + if (array.count <= 0) { + [self.cycleScrollView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(0); + }]; + return; + } + self.activityList = array; + NSMutableArray * picList = [NSMutableArray array]; + [array enumerateObjectsUsingBlock:^(ActivityInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.bannerPic.length > 0) { + [picList addObject:obj.bannerPic]; + } + }]; + self.cycleScrollView.imageURLStringsGroup = picList; + if (array.count > 1) { + [self.cycleScrollView setAutoScroll:YES]; + self.cycleScrollView.autoScrollTimeInterval = 3; + } else { + [self.cycleScrollView setAutoScroll:NO]; + } + } else { + [self.cycleScrollView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(0); + }]; + } + } type:@"3"]; +} + +#pragma mark - JXCategoryViewDelegate +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { + return self.titles.count; +} + +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { + if (index == 0) { + return self.headwearView; + } else if(index == 1) { + return self.carView; + } else if (index == 2) { + return self.nameplateView; + } else if (index == 3) { + return self.nobleView; + } + return self.bubbleView; +} + +// 点击选中或者滚动选中都会调用该方法。适用于只关心选中事件,不关心具体是点击还是滚动选中的。 +- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { + // 侧滑手势处理 + self.navigationController.interactivePopGestureRecognizer.enabled = (index == 0); +} + +#pragma mark - SDCycleScrollViewDelegate +- (void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didSelectItemAtIndex:(NSInteger)index { + if (self.activityList.count > index) { + ActivityInfoModel * info = [self.activityList safeObjectAtIndex1:index]; + if (info.skipType == ActivitySkipType_Room) { + [XPRoomViewController openRoom:info.skipUri viewController:self.navigationController]; + } else if(info.skipType == ActivitySkipType_Web) { + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + webVC.url = info.skipUri; + [self.navigationController pushViewController:webVC animated:YES]; + } + } +} + +#pragma mark - Getters And Setters +- (void)setCurrentIndex:(NSInteger)currentIndex { + if (currentIndex < self.titles.count) { + [self.titleView setDefaultSelectedIndex:currentIndex]; + } +} + +- (JXCategoryTitleView *)titleView { + if (!_titleView) { + _titleView = [[JXCategoryTitleView alloc] init]; + _titleView.delegate = self; + _titleView.titles = self.titles; + _titleView.titleColor = [DJDKMIMOMColor secondTextColor]; + _titleView.titleSelectedColor = [DJDKMIMOMColor mainTextColor]; + _titleView.titleFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; + _titleView.titleSelectedFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; + _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; + _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; + _titleView.defaultSelectedIndex = 0; + _titleView.listContainer = self.contentView; + + JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init]; + lineView.indicatorColor = [DJDKMIMOMColor appMainColor]; + lineView.indicatorWidth = 8.f; + lineView.indicatorHeight = 4.f; + lineView.indicatorCornerRadius = 2.f; + _titleView.indicators = @[lineView]; + } + return _titleView; +} + +- (JXCategoryListContainerView *)contentView { + if (!_contentView) { + _contentView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; + _contentView.scrollView.backgroundColor = [UIColor clearColor]; + _contentView.defaultSelectedIndex = 0; + } + return _contentView; +} + +- (NSArray *)titles { + return @[@"头饰", @"座驾", @"铭牌", @"资料卡", YMLocalizedString(@"XPMineDressUpViewController5")]; +} + +- (XPMineDressUpListViewController *)headwearView { + if (!_headwearView) { + _headwearView = [[XPMineDressUpListViewController alloc] init]; + _headwearView.type = DressUpListType_HeadWear; + } + return _headwearView; +} + +- (XPMineDressUpListViewController *)carView { + if (!_carView) { + _carView = [[XPMineDressUpListViewController alloc] init]; + _carView.type = DressUpListType_Car; + } + return _carView; +} + +- (XPMineDressUpListViewController *)nameplateView { + if (!_nameplateView) { + _nameplateView = [[XPMineDressUpListViewController alloc] init]; + _nameplateView.type = DressUpListType_Nameplate; + } + return _nameplateView; +} + +- (XPMineDressUpListViewController *)nobleView { + if (!_nobleView) { + _nobleView = [[XPMineDressUpListViewController alloc] init]; + _nobleView.type = DressUpListType_Noble; + } + return _nobleView; +} + +- (XPMineDressUpBubbleViewController *)bubbleView { + if (!_bubbleView) { + _bubbleView = [[XPMineDressUpBubbleViewController alloc] init]; + } + return _bubbleView; +} + +- (SDCycleScrollView *)cycleScrollView { + if (!_cycleScrollView) { + _cycleScrollView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectZero delegate:self placeholderImage:nil]; + _cycleScrollView.pageControlAliment = SDCycleScrollViewPageContolAlimentCenter; + _cycleScrollView.currentPageDotColor = [UIColor whiteColor]; + _cycleScrollView.pageDotColor = [UIColor colorWithWhite:1 alpha:0.15]; + _cycleScrollView.backgroundColor = [UIColor colorWithWhite:1 alpha:0.00]; + _cycleScrollView.bannerImageViewContentMode = UIViewContentModeScaleAspectFill; + _cycleScrollView.layer.masksToBounds = YES; + _cycleScrollView.layer.cornerRadius = 12; + } + return _cycleScrollView; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/YUMIManePretendUpwardsIntumesceRegardGovernancer.h b/YuMi/Modules/YMMine/View/DressUp/View/YUMIManePretendUpwardsIntumesceRegardGovernancer.h deleted file mode 100644 index 57d477b2..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/YUMIManePretendUpwardsIntumesceRegardGovernancer.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMMineDressUpBubbleViewController.h -// YUMI -// -// Created by YUMI on 2022/3/21. -// - -#import "MvpRegardGovernancer.h" -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManePretendUpwardsIntumesceRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/YUMIManePretendUpwardsIntumesceRegardGovernancer.m b/YuMi/Modules/YMMine/View/DressUp/View/YUMIManePretendUpwardsIntumesceRegardGovernancer.m deleted file mode 100644 index 76c09dbf..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/YUMIManePretendUpwardsIntumesceRegardGovernancer.m +++ /dev/null @@ -1,140 +0,0 @@ -// -// YMMineDressUpBubbleViewController.m -// YUMI -// -// Created by YUMI on 2022/3/21. -// - -#import "YUMIManePretendUpwardsIntumesceRegardGovernancer.h" -#import -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "YUMIManePretendIntumesceAssembletionRegardElement.h" -#import "YUMIManePretendDispossessAssembletionRegardElement.h" -#import "YUMIManePretendUpwardsExternalizer.h" -#import "FBCManePretendedCeremony.h" -#import "ChatIntumesceMatrix.h" - -@interface YUMIManePretendUpwardsIntumesceRegardGovernancer () -@property (nonatomic,strong) UICollectionView *collectionView; -@property (nonatomic,strong) NSArray *datasource; - -@end - -@implementation YUMIManePretendUpwardsIntumesceRegardGovernancer - -- (YUMIManePretendUpwardsExternalizer *)producePresimport { - return [[YUMIManePretendUpwardsExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self.presimport acquireConsumerChinwagIntumesceSttowardsement]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.collectionView]; -} - -- (void)initChildLyRestrictions { - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -#pragma mark - FBCManePretendBubbleTabulationViweElementRepresendtation -- (void)fBCManePretconcludeIntumesceAssembletionRegardElement:(YUMIManePretendIntumesceAssembletionRegardElement *)view bubbleId:(NSString *)bubbleId { - [self.presimport utilizeIntumesce:bubbleId]; -} - -#pragma mark - FBCManePretendedCeremony -- (void)acquireConsumerChinwagIntumesceSttowardsementAccomplishment:(NSArray *)array { - self.datasource = array; - [self.collectionView reloadData]; -} - -- (void)utilizeIntumesceAccomplishment:(NSString *)bubbleId { - [self EvidenceAccomplishmentToast:bubbleId.integerValue == 0 ? @"取消使用气泡成功" : YMLocalizedString(@"YUMI_Mine_Dress_Up_Bubble_View_Controller_1")]; - if (bubbleId.integerValue == 0) { - for (ChatIntumesceMatrix *model in self.datasource) { - model.hasUsed = NO; - } - } else { - for (ChatIntumesceMatrix *model in self.datasource) { - if ([model.bubbleId isEqualToString:bubbleId]) { - model.hasUsed = YES; - } else { - model.hasUsed = NO; - } - } - } - [self.collectionView reloadData]; -} - -#pragma mark - JXCategoryListContentViewDelegate -- (UIView *)listView { - return self.view; -} - -#pragma mark - UICollectionViewDelegate -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMIManePretendIntumesceAssembletionRegardElement *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIManePretendIntumesceAssembletionRegardElement class]) forIndexPath:indexPath]; - cell.intumesceMatrix = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.delegate = self; - return cell; - } - YUMIManePretendDispossessAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIManePretendDispossessAssembletionRegardElement class]) forIndexPath:indexPath]; - cell.emptyTitle = @"亲爱的用户,你还没有聊天气泡噢!"; - return cell; -} - -- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - CGFloat width = (KScreenWidth - 42) *0.5; - CGFloat height = width * 158 / 166.0; - return CGSizeMake(width, height); - } else { - return CGSizeMake(KScreenWidth - 32, KScreenHeight - kNavigationHeight - 100 -50); - } -} - -- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { - if (self.datasource.count > 0) { - return 12; - } else { - return 0; - } -} - -- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section { - if (self.datasource.count > 0) { - return 12; - } else { - return 0; - } -} - -- (UICollectionView *)collectionView { - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.scrollDirection = UICollectionViewScrollDirectionVertical; - layout.sectionInset = UIEdgeInsetsMake(15, 15, 15, 15); - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.backgroundColor = [UIColor clearColor]; - [_collectionView registerClass:[YUMIManePretendIntumesceAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIManePretendIntumesceAssembletionRegardElement class])]; - [_collectionView registerClass:[YUMIManePretendDispossessAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIManePretendDispossessAssembletionRegardElement class])]; - } - return _collectionView; -} - -@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/YUMIManePretendUpwardsRegardGovernancer.h b/YuMi/Modules/YMMine/View/DressUp/View/YUMIManePretendUpwardsRegardGovernancer.h deleted file mode 100644 index 0dae3e11..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/YUMIManePretendUpwardsRegardGovernancer.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMMineDressUpViewController.h -// YUMI -// -// Created by YUMI on 2021/12/15. -// - -#import "BaseRegardGovernancer.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManePretendUpwardsRegardGovernancer : BaseRegardGovernancer - -@property (nonatomic,assign) NSInteger currentIndex; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/YUMIManePretendUpwardsRegardGovernancer.m b/YuMi/Modules/YMMine/View/DressUp/View/YUMIManePretendUpwardsRegardGovernancer.m deleted file mode 100644 index e5337db3..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/YUMIManePretendUpwardsRegardGovernancer.m +++ /dev/null @@ -1,239 +0,0 @@ -// -// YMMineDressUpViewController.m -// YUMI -// -// Created by YUMI on 2021/12/15. -// - -#import "YUMIManePretendUpwardsRegardGovernancer.h" -#import -#import -#import -#import -#import "DJDKMIMOMColor.h" -#import "Api+DressUp.h" -#import "NSArray+Safe.h" -#import "ImportpriseAbstractMatrix.h" -#import "YUMIManePretendUpwardsStatementRegardGovernancer.h" -#import "YUMIChamberRegardGovernancer.h" -#import "YUMITissueRegardGovernancer.h" -#import "YUMIManePretendUpwardsIntumesceRegardGovernancer.h" - -@interface YUMIManePretendUpwardsRegardGovernancer () -@property (nonatomic, strong) NSArray *titles; -@property (nonatomic, strong) JXCategoryTitleView *titleView; -@property (nonatomic, strong) JXCategoryListContainerView *contentView; -@property (nonatomic,strong) YUMIManePretendUpwardsStatementRegardGovernancer *intelligencewearRegard; -@property (nonatomic,strong) YUMIManePretendUpwardsStatementRegardGovernancer *automobileRegard; -@property (nonatomic,strong) YUMIManePretendUpwardsStatementRegardGovernancer *materialRegard; -@property (nonatomic, strong) YUMIManePretendUpwardsStatementRegardGovernancer *magnificentRegard; -@property (nonatomic, strong) YUMIManePretendUpwardsIntumesceRegardGovernancer *intumesceRegard; -@property (nonatomic,strong) SDCycleScrollView *cycleTrundleRegard; -@property (nonatomic,copy) NSArray *importpriseStatement; -@end - -@implementation YUMIManePretendUpwardsRegardGovernancer - -- (void)viewDidLoad { - [super viewDidLoad]; - [self requisitionImportpriseSttowardsement]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Mine_Dress_Up_View_Controller_0"); - [self.view addSubview:self.cycleTrundleRegard]; - [self.view addSubview:self.titleView]; - [self.view addSubview:self.contentView]; -} - -- (void)initChildLyRestrictions { - [self.cycleTrundleRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.view); - make.left.mas_equalTo(15); - make.right.mas_equalTo(-15); - make.height.mas_equalTo(100); - }]; - - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.height.mas_equalTo(50); - make.top.mas_equalTo(self.cycleTrundleRegard.mas_bottom); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.top.mas_equalTo(self.titleView.mas_bottom); - }]; -} - -- (void)requisitionImportpriseSttowardsement { - [Api dressupOriflammeSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSArray * array = [ImportpriseAbstractMatrix mtowardsrixsAboutGarment:data.data]; - if (array.count <= 0) { - [self.cycleTrundleRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(0); - }]; - return; - } - self.importpriseStatement = array; - NSMutableArray * picList = [NSMutableArray array]; - [array enumerateObjectsUsingBlock:^(ImportpriseAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.bannerPic.length > 0) { - [picList addObject:obj.bannerPic]; - } - }]; - self.cycleTrundleRegard.imageURLStringsGroup = picList; - if (array.count > 1) { - [self.cycleTrundleRegard setAutoScroll:YES]; - self.cycleTrundleRegard.autoScrollTimeInterval = 3; - } else { - [self.cycleTrundleRegard setAutoScroll:NO]; - } - } else { - [self.cycleTrundleRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(0); - }]; - } - } type:@"3"]; -} - -#pragma mark - JXCategoryViewDelegate -- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { - return self.titles.count; -} - -- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { - if (index == 0) { - return self.intelligencewearRegard; - } else if(index == 1) { - return self.automobileRegard; - } else if (index == 2) { - return self.materialRegard; - } else if (index == 3) { - return self.magnificentRegard; - } - return self.intumesceRegard; -} - -- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { - - self.navigationController.interactivePopGestureRecognizer.enabled = (index == 0); -} - -#pragma mark - SDCycleScrollViewDelegate -- (void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didSelectItemAtIndex:(NSInteger)index { - if (self.importpriseStatement.count > index) { - ImportpriseAbstractMatrix * info = [self.importpriseStatement secureGroalTowardsIndictowardsrix1:index]; - if (info.skipType == ActivitySkipGenre_Room) { - [YUMIChamberRegardGovernancer unfoildChamber:info.skipUri viewController:self.navigationController]; - } else if(info.skipType == ActivitySkipGenre_Web) { - YUMITissueRegardGovernancer * webVewC = [[YUMITissueRegardGovernancer alloc] init]; - webVewC.url = info.skipUri; - [self.navigationController pushViewController:webVewC animated:YES]; - } - } -} - -#pragma mark - Getters And Setters -- (void)setCurrentIndex:(NSInteger)currentIndex { - if (currentIndex < self.titles.count) { - [self.titleView setDefaultSelectedIndex:currentIndex]; - } -} - -- (JXCategoryTitleView *)titleView { - if (!_titleView) { - _titleView = [[JXCategoryTitleView alloc] init]; - _titleView.delegate = self; - _titleView.titles = self.titles; - _titleView.titleColor = [DJDKMIMOMColor instantEssayPrettify]; - _titleView.titleSelectedColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleView.titleFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; - _titleView.titleSelectedFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; - _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; - _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; - _titleView.defaultSelectedIndex = 0; - _titleView.listContainer = self.contentView; - - JXCategoryIndicatorLineView *burlywoodRegard = [[JXCategoryIndicatorLineView alloc] init]; - burlywoodRegard.indicatorColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - burlywoodRegard.indicatorWidth = 8.f; - burlywoodRegard.indicatorHeight = 4.f; - burlywoodRegard.indicatorCornerRadius = 2.f; - _titleView.indicators = @[burlywoodRegard]; - } - return _titleView; -} - -- (JXCategoryListContainerView *)contentView { - if (!_contentView) { - _contentView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; - _contentView.scrollView.backgroundColor = [UIColor clearColor]; - _contentView.defaultSelectedIndex = 0; - } - return _contentView; -} - -- (NSArray *)titles { - return @[@"头饰", @"座驾", @"铭牌", @"资料卡", YMLocalizedString(@"YUMI_Mine_Dress_Up_View_Controller_5")]; -} - -- (YUMIManePretendUpwardsStatementRegardGovernancer *)intelligencewearRegard { - if (!_intelligencewearRegard) { - _intelligencewearRegard = [[YUMIManePretendUpwardsStatementRegardGovernancer alloc] init]; - _intelligencewearRegard.type = DressUpStatementGenre_HeadWear; - } - return _intelligencewearRegard; -} - -- (YUMIManePretendUpwardsStatementRegardGovernancer *)automobileRegard { - if (!_automobileRegard) { - _automobileRegard = [[YUMIManePretendUpwardsStatementRegardGovernancer alloc] init]; - _automobileRegard.type = DressUpStatementGenre_Car; - } - return _automobileRegard; -} - -- (YUMIManePretendUpwardsStatementRegardGovernancer *)materialRegard { - if (!_materialRegard) { - _materialRegard = [[YUMIManePretendUpwardsStatementRegardGovernancer alloc] init]; - _materialRegard.type = DressUpStatementGenre_Nameplate; - } - return _materialRegard; -} - -- (YUMIManePretendUpwardsStatementRegardGovernancer *)magnificentRegard { - if (!_magnificentRegard) { - _magnificentRegard = [[YUMIManePretendUpwardsStatementRegardGovernancer alloc] init]; - _magnificentRegard.type = DressUpStatementGenre_Noble; - } - return _magnificentRegard; -} - -- (YUMIManePretendUpwardsIntumesceRegardGovernancer *)intumesceRegard { - if (!_intumesceRegard) { - _intumesceRegard = [[YUMIManePretendUpwardsIntumesceRegardGovernancer alloc] init]; - } - return _intumesceRegard; -} - -- (SDCycleScrollView *)cycleTrundleRegard { - if (!_cycleTrundleRegard) { - _cycleTrundleRegard = [SDCycleScrollView cycleScrollViewWithFrame:CGRectZero delegate:self placeholderImage:nil]; - _cycleTrundleRegard.pageControlAliment = SDCycleScrollViewPageContolAlimentCenter; - _cycleTrundleRegard.currentPageDotColor = [UIColor whiteColor]; - _cycleTrundleRegard.pageDotColor = [UIColor colorWithWhite:1 alpha:0.15]; - _cycleTrundleRegard.backgroundColor = [UIColor colorWithWhite:1 alpha:0.00]; - _cycleTrundleRegard.bannerImageViewContentMode = UIViewContentModeScaleAspectFill; - _cycleTrundleRegard.layer.masksToBounds = YES; - _cycleTrundleRegard.layer.cornerRadius = 12; - } - return _cycleTrundleRegard; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/YUMIManePretendUpwardsStatementRegardGovernancer.h b/YuMi/Modules/YMMine/View/DressUp/View/YUMIManePretendUpwardsStatementRegardGovernancer.h deleted file mode 100644 index 576443a7..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/YUMIManePretendUpwardsStatementRegardGovernancer.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YMMineDressUpListViewController.h -// YUMI -// -// Created by YUMI on 2021/12/15. -// - -#import "MvpRegardGovernancer.h" -#import -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, DressUpStatementGenre) { - DressUpStatementGenre_HeadWear = 1, - DressUpStatementGenre_Car, - DressUpStatementGenre_Nameplate, - DressUpStatementGenre_Noble, - DressUpStatementGenre_Bubble, -}; - -@interface YUMIManePretendUpwardsStatementRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,assign) DressUpStatementGenre type; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/YUMIManePretendUpwardsStatementRegardGovernancer.m b/YuMi/Modules/YMMine/View/DressUp/View/YUMIManePretendUpwardsStatementRegardGovernancer.m deleted file mode 100644 index 60e53d0b..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/YUMIManePretendUpwardsStatementRegardGovernancer.m +++ /dev/null @@ -1,228 +0,0 @@ -// -// YMMineDressUpListViewController.m -// YUMI -// -// Created by YUMI on 2021/12/15. -// - -#import "YUMIManePretendUpwardsStatementRegardGovernancer.h" -#import -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "YUMIManeIntelligencewearTabulationRegardElement.h" -#import "YUMIManeCarTabulationRegardElement.h" -#import "YUMIManeNameplateTabulationRegardElement.h" -#import "YUMIManePretendDispossessTabulationRegardElement.h" -#import "YUMIManeMagnificentSolitaireTabulationRegardElement.h" -#import "YUMIManePretendUpwardsExternalizer.h" -#import "FBCManePretendedCeremony.h" -#import "MagnificentSolitaireMatrix.h" - -@interface YUMIManePretendUpwardsStatementRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSArray *datasource; -@end - -@implementation YUMIManePretendUpwardsStatementRegardGovernancer - -- (YUMIManePretendUpwardsExternalizer *)producePresimport { - return [[YUMIManePretendUpwardsExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} -#pragma mark - FBCManeNameplateTabulationViweElementRepresendtation -- (void)fBCManeMtowardserialTarbsultowardsionViweElement:(YUMIManeNameplateTabulationRegardElement *)view nameplateId:(NSString *)nameplateId { - [self.presimport utilizeMtowardserial:nameplateId]; -} - -#pragma mark - FBCManeIntelligencewearTabulationViweElementRepresendtation -- (void)fBCManeApexknotTarbsultowardsionViweElement:(YUMIManeIntelligencewearTabulationRegardElement *)view headwearId:(NSString *)headwearId { - [self.presimport utilizeIntelligencer:headwearId]; -} -#pragma mark - FBCManeCarTabulationViweElementRepresendtation -- (void)fBCManeAutomobileTarbsultowardsionViweElement:(YUMIManeCarTabulationRegardElement *)cell carId:(NSString *)carId { - [self.presimport utilizeAutomobile:carId]; -} -#pragma mark - FBCManeMagnificentSolitaireTabulationViweElementRepresendtation -- (void)fBCManeMagnificentSolitaireTarbsultowardsionViweElement:(YUMIManeMagnificentSolitaireTabulationRegardElement *)view nobleCardId:(NSString *)nobleCardId { - [self.presimport consumerMagnificentSolitaire:nobleCardId]; -} - -#pragma mark - FBCManePretendedCeremony -- (void)acquireConsumerApexknotSttowardsementAccomplishment:(NSArray *)array { - self.datasource = array; - [self.tableView reloadData]; -} - -- (void)acquireConsumerAutomobileSttowardsementAccomplishment:(NSArray *)array { - self.datasource = array; - [self.tableView reloadData]; -} - -- (void)acquireConsumerMtowardserialSttowardsementAccomplishment:(NSArray *)array { - self.datasource = array; - [self.tableView reloadData]; -} - -- (void)acquireConsumerMagnificentSolitaireSttowardsementAccomplishment:(NSArray *)array { - self.datasource = array; - [self.tableView reloadData]; -} - -- (void)utilizeApexknotAccomplishment:(NSString *)headWearId { - [self.presimport acquireConsumerApexknotSttowardsement]; - [self EvidenceAccomplishmentToast:headWearId.integerValue == 0 ? @"取消使用头饰成功" : YMLocalizedString(@"YUMI_Mine_Dress_Up_List_View_Controller_1")]; - -} - -- (void)utilizeAutomobileAccomplishment:(NSString *)carId { - [self.presimport acquireConsumerAutomobileSttowardsement]; - [self EvidenceAccomplishmentToast:carId.integerValue == 0 ? @"取消使用座驾成功" : YMLocalizedString(@"YUMI_Mine_Dress_Up_List_View_Controller_3")]; -} - -- (void)utilizeMtowardserialAccomplishment:(NSString *)nameplateId { - [self.presimport acquireConsumerMtowardserialSttowardsement]; - [self EvidenceAccomplishmentToast:nameplateId.integerValue == 0 ? @"取消使用铭牌成功" : YMLocalizedString(@"YUMI_Mine_Dress_Up_List_View_Controller_5")]; -} - -- (void)consumerMagnificentSolitaireAccomplishment:(NSString *)nobleCardId { - [self EvidenceAccomplishmentToast:nobleCardId.integerValue == 0 ? @"取消使用资料卡成功" : YMLocalizedString(@"YUMI_Mine_Dress_Up_List_View_Controller_7")]; - if (nobleCardId.integerValue == 0) { - for (MagnificentSolitaireMatrix *model in self.datasource) { - model.used = NO; - } - } else { - for (MagnificentSolitaireMatrix *model in self.datasource) { - if ([model.cardId isEqualToString:nobleCardId]) { - model.used = YES; - } else { - model.used = NO; - } - } - } - [self.tableView reloadData]; -} - -#pragma mark - JXCategoryListContentViewDelegate -- (UIView *)listView { - return self.view; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.type == DressUpStatementGenre_Noble) { - return self.datasource.count > 0 ? 236 : (KScreenHeight - kNavigationHeight - 100 -50); - } else if (self.type == DressUpStatementGenre_Nameplate) { - return self.datasource.count > 0 ? 76 : (KScreenHeight - kNavigationHeight - 100 -50); - } else { - return self.datasource.count > 0 ? 120 : (KScreenHeight - kNavigationHeight - 100 -50); - } -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - if (self.type == DressUpStatementGenre_HeadWear) { - YUMIManeIntelligencewearTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeIntelligencewearTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeIntelligencewearTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeIntelligencewearTabulationRegardElement class])]; - } - cell.intelligencewearMatrix = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.delegate = self; - return cell; - } else if(self.type == DressUpStatementGenre_Car) { - YUMIManeCarTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeCarTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeCarTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeCarTabulationRegardElement class])]; - } - cell.automobileAbstract = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.delegate = self; - return cell; - } else if (self.type == DressUpStatementGenre_Noble) { - YUMIManeMagnificentSolitaireTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeMagnificentSolitaireTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeMagnificentSolitaireTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeMagnificentSolitaireTabulationRegardElement class])]; - } - cell.magnificentSolitaireMatrix = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.delegate = self; - return cell; - } else { - YUMIManeNameplateTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeNameplateTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeNameplateTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeNameplateTabulationRegardElement class])]; - } - cell.materialMatrix = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.delegate = self; - return cell; - } - } - - YUMIManePretendDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManePretendDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManePretendDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManePretendDispossessTabulationRegardElement class])]; - } - cell.emptyTitle = self.type == DressUpStatementGenre_HeadWear ? @"亲爱的用户,你还没有头饰噢!" : self.type == DressUpStatementGenre_Car ? @"亲爱的用户,你还没有座驾噢!" : @"亲爱的用户,你还没有铭牌噢!"; - return cell; -} - -#pragma mark - Getters And Setters -- (void)setType:(DressUpStatementGenre)type { - _type = type; - switch (type) { - case DressUpStatementGenre_HeadWear: - [self.presimport acquireConsumerApexknotSttowardsement]; - break; - case DressUpStatementGenre_Car: - [self.presimport acquireConsumerAutomobileSttowardsement]; - break; - case DressUpStatementGenre_Nameplate: - [self.presimport acquireConsumerMtowardserialSttowardsement]; - break; - case DressUpStatementGenre_Noble: - [self.presimport acquireConsumerMagnificentSolitaireSttowardsement]; - break; - default: - break; - } -} -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - _tableView.contentInset = UIEdgeInsetsMake(0, 0, kSafeAreaBottomHeight, 0); - [_tableView registerClass:[YUMIManeNameplateTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeNameplateTabulationRegardElement class])]; - [_tableView registerClass:[YUMIManeCarTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeCarTabulationRegardElement class])]; - [_tableView registerClass:[YUMIManeIntelligencewearTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeIntelligencewearTabulationRegardElement class])]; - [_tableView registerClass:[YUMIManeMagnificentSolitaireTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeMagnificentSolitaireTabulationRegardElement class])]; - [_tableView registerClass:[YUMIManePretendDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManePretendDispossessTabulationRegardElement class])]; - } - return _tableView; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/YUMIPretendHuntforRegardGovernancer.h b/YuMi/Modules/YMMine/View/DressUp/View/YUMIPretendHuntforRegardGovernancer.h deleted file mode 100644 index 2173cddd..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/YUMIPretendHuntforRegardGovernancer.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMDressSearchViewController.h -// YUMI -// -// Created by YUMI on 2022/7/29. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIPretendHuntforRegardGovernancer : MvpRegardGovernancer - -@property (nonatomic, assign) NSInteger dressType; -@property (nonatomic, copy) NSString *dressId; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/YUMIPretendHuntforRegardGovernancer.m b/YuMi/Modules/YMMine/View/DressUp/View/YUMIPretendHuntforRegardGovernancer.m deleted file mode 100644 index 6e63cd9a..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/YUMIPretendHuntforRegardGovernancer.m +++ /dev/null @@ -1,175 +0,0 @@ -// -// YMDressSearchViewController.m -// YUMI -// -// Created by YUMI on 2022/7/29. -// - -#import "YUMIPretendHuntforRegardGovernancer.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "Api+DressUp.h" -#import "NSArray+Safe.h" -#import "ResidenceHuntforConsequentMatrix.h" -#import "YUMIPretendProcurementHuntforTabulationRegardElement.h" -#import "YUMIResidenceHuntforNevRegard.h" -#import "YUMIResidenceHuntforExternalizer.h" -#import "FBCResidenceHuntforCeremony.h" -#import "YUMIChamberRegardGovernancer.h" -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -@interface YUMIPretendHuntforRegardGovernancer () - -@property (nonatomic,strong) YUMIResidenceHuntforNevRegard *huntforRegard; -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSArray *datasource; - -@end - -@implementation YUMIPretendHuntforRegardGovernancer - -- (YUMIResidenceHuntforExternalizer *)producePresimport { - return [[YUMIResidenceHuntforExternalizer alloc] init]; -} - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { - [self.view endEditing:YES]; -} - -#pragma mark - Public Method -- (void)searchText:(NSString *)text { - NSString * type = @"2"; - [self.presimport huntforChamberSttowardsement:text type:type]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.huntforRegard]; - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.huntforRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.height.mas_equalTo(kNavigationHeight); - }]; - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.bottom.right.mas_equalTo(self.view); - make.top.mas_equalTo(self.huntforRegard.mas_bottom); - }]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 74; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - YUMIPretendProcurementHuntforTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIPretendProcurementHuntforTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIPretendProcurementHuntforTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIPretendProcurementHuntforTabulationRegardElement class])]; - } - ResidenceHuntforConsequentMatrix * resultModel = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.data = resultModel; - cell.delegate = self; - cell.selectionStyle = UITableViewCellSelectionStyleNone; - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; -} - -#pragma mark - FBCPretendProcurementHuntforTabulationViweElementRepresendtation -- (void)yUMIPretconcludeProcurementHuntforTarbsultowardsionViweElementDischargeBtutonTicktack:(YUMIPretendProcurementHuntforTabulationRegardElement *)cell { - NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; - ResidenceHuntforConsequentMatrix * resultModel = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - [self EvidenceChambering]; - [Api requisitionDischargePretconclude:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - [self brakeHUD]; - if (code == 200) { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Dress_Search_View_Controller_0")]; - } else { - [self EvidenceMistakeToast:msg]; - } - } id:self.dressId targetUid:resultModel.uid]; -} - -#pragma mark - FBCResidenceHuntforCeremony -- (void)huntforChamberAccomplishment:(NSArray *)data type:(nonnull NSString *)type { - self.datasource = data; - [self.tableView reloadData]; -} - -#pragma mark - -- (UIView *)listView { - return self.view; -} - -#pragma mark - UITextFieldDelegate -- (BOOL)textFieldShouldReturn:(UITextField *)essayUniverse { - if (essayUniverse.text.length > 0) { - [essayUniverse resignFirstResponder]; - [self searchText:essayUniverse.text]; - } else { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Dress_Search_View_Controller_1")]; - } - return YES; -} - -#pragma mark -FBCResidenceHuntforNevRegardRepresendtation -- (void)fBCHoutilizeHuntforNevRegard:(YUMIResidenceHuntforNevRegard *)view didClickSearch:(UIButton *)sender { - if (view.searchTextField.text.length > 0) { - [view.searchTextField resignFirstResponder]; - [self searchText:view.searchTextField.text]; - } else { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Dress_Search_View_Controller_2")]; - } -} - -- (void)fBCHoutilizeHuntforNevRegard:(YUMIResidenceHuntforNevRegard *)view didClickBack:(UIButton *)sender { - [view.searchTextField resignFirstResponder]; - [self.navigationController popViewControllerAnimated:YES]; -} - -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableHeaderView = [UIView new]; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIPretendProcurementHuntforTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIPretendProcurementHuntforTabulationRegardElement class])]; - } - return _tableView; -} - -- (YUMIResidenceHuntforNevRegard *)huntforRegard { - if (!_huntforRegard) { - _huntforRegard = [[YUMIResidenceHuntforNevRegard alloc] init]; - _huntforRegard.delegate = self; - _huntforRegard.searchTextField.delegate = self; - } - return _huntforRegard; -} -@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/YUMIPretendUpwardsProcurementRegardGovernancer.h b/YuMi/Modules/YMMine/View/DressUp/View/YUMIPretendUpwardsProcurementRegardGovernancer.h deleted file mode 100644 index 1de58653..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/YUMIPretendUpwardsProcurementRegardGovernancer.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMDressUpShopViewController.h -// YUMI -// -// Created by YUMI on 2022/7/28. -// - -#import "BaseRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIPretendUpwardsProcurementRegardGovernancer : BaseRegardGovernancer - -@property (nonatomic,assign) NSInteger currentIndex; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/YUMIPretendUpwardsProcurementRegardGovernancer.m b/YuMi/Modules/YMMine/View/DressUp/View/YUMIPretendUpwardsProcurementRegardGovernancer.m deleted file mode 100644 index 1f0c0404..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/YUMIPretendUpwardsProcurementRegardGovernancer.m +++ /dev/null @@ -1,367 +0,0 @@ -// -// YMDressUpShopViewController.m -// YUMI -// -// Created by YUMI on 2022/7/28. -// - -#import "YUMIPretendUpwardsProcurementRegardGovernancer.h" -#import -#import -#import -#import -#import "DJDKMIMOMColor.h" -#import "Api+DressUp.h" -#import "YUMIMacroUitls.h" -#import "UIImage+Utils.h" -#import "AccountAbstractStorage.h" -#import "NSArray+Safe.h" -#import "ImportpriseAbstractMatrix.h" -#import "RamparatetAbstractMatrix.h" -#import "YUMIPretendUpwardsProcurementStatementRegardGovernancer.h" -#import "YUMIChamberRegardGovernancer.h" -#import "YUMITissueRegardGovernancer.h" -#import "YUMIManePretendUpwardsRegardGovernancer.h" -#import "YUMIPretendUpwardsProcurementSolitaireRegardGovernancer.h" -#import "YUMIManeReindictRegardGovernancer.h" -#import "YUMIIAPReindictRegardGovernancer.h" - -@interface YUMIPretendUpwardsProcurementRegardGovernancer () - -@property (nonatomic, strong) NSArray *titles; -@property (nonatomic, strong) JXCategoryTitleView *titleView; -@property (nonatomic, strong) JXCategoryListContainerView *contentView; -@property (nonatomic,strong) YUMIPretendUpwardsProcurementStatementRegardGovernancer *intelligencewearRegard; -@property (nonatomic,strong) YUMIPretendUpwardsProcurementStatementRegardGovernancer *automobileRegard; -@property (nonatomic,strong) YUMIPretendUpwardsProcurementStatementRegardGovernancer *materialRegard; -@property (nonatomic, strong) YUMIPretendUpwardsProcurementSolitaireRegardGovernancer *magnificentRegard; -@property (nonatomic, strong) YUMIPretendUpwardsProcurementStatementRegardGovernancer *intumesceRegard; -@property (nonatomic,strong) SDCycleScrollView *cycleTrundleRegard; -@property (nonatomic,copy) NSArray *importpriseStatement; - -@property (nonatomic, strong) UIView *mainView; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UIImageView *bWSttawberryIndicateRegard; -@property (nonatomic, strong) UILabel *bWSttawberrySequencignation; -@property (nonatomic, strong) UIButton *dischargeBtuton; - -@end - -@implementation YUMIPretendUpwardsProcurementRegardGovernancer - -- (void)viewDidLoad { - [super viewDidLoad]; - [self requisitionImportpriseSttowardsement]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self accelertowardseBreeadcrumbProvisionAboutChampions:@[YMLocalizedString(@"YUMI_Dress_Up_Shop_View_Controller_0")] titleColor:[DJDKMIMOMColor essayTertiusPrettify] isContrary:NO target:self action:@selector(rectifyBtutonPerformance:) tags:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(acquirePretconcludeAccomplishment) name:@"buyDressSuccessNoti" object:nil]; -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - [self requisitionPocketbook]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Dress_Up_Shop_View_Controller_1"); - [self.view addSubview:self.cycleTrundleRegard]; - [self.view addSubview:self.titleView]; - [self.view addSubview:self.contentView]; - [self.view addSubview:self.mainView]; - [self.mainView addSubview:self.titleLabel]; - [self.mainView addSubview:self.bWSttawberryIndicateRegard]; - [self.mainView addSubview:self.bWSttawberrySequencignation]; - [self.mainView addSubview:self.dischargeBtuton]; -} - -- (void)initChildLyRestrictions { - [self.cycleTrundleRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.view); - make.left.mas_equalTo(15); - make.right.mas_equalTo(-15); - make.height.mas_equalTo(100); - }]; - - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.height.mas_equalTo(50); - make.top.mas_equalTo(self.cycleTrundleRegard.mas_bottom); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.mainView.mas_top); - make.top.mas_equalTo(self.titleView.mas_bottom); - }]; - - [self.mainView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.height.mas_equalTo(iPhoneXSeries ? 48+34 : 48); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.bWSttawberryIndicateRegard.mas_right).mas_offset(4); - make.centerY.mas_equalTo(self.bWSttawberryIndicateRegard); - make.height.mas_equalTo(17); - }]; - [self.bWSttawberryIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(15); - make.size.mas_equalTo(CGSizeMake(15, 15)); - make.top.mas_equalTo(18); - }]; - [self.bWSttawberrySequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.titleLabel); - make.left.mas_equalTo(self.titleLabel.mas_right).mas_offset(4); - make.height.mas_equalTo(22); - }]; - [self.dischargeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(72, 24)); - make.right.mas_equalTo(-15); - make.centerY.mas_equalTo(self.titleLabel); - }]; -} - -#pragma mark - notification -- (void)acquirePretconcludeAccomplishment { - [self requisitionPocketbook]; -} - -- (void)requisitionPocketbook { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - [Api acquireConsumerPocketbookAbstract:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - RamparatetAbstractMatrix * model = [RamparatetAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - self.bWSttawberrySequencignation.text = model.diamonds; - } - } uid:uid ticket:ticket]; -} - -- (void)requisitionImportpriseSttowardsement { - [Api dressupOriflammeSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSArray * array = [ImportpriseAbstractMatrix mtowardsrixsAboutGarment:data.data]; - if (array.count <= 0) { - [self.cycleTrundleRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(0); - }]; - return; - } - self.importpriseStatement = array; - NSMutableArray * picList = [NSMutableArray array]; - [array enumerateObjectsUsingBlock:^(ImportpriseAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.bannerPic.length > 0) { - [picList addObject:obj.bannerPic]; - } - }]; - self.cycleTrundleRegard.imageURLStringsGroup = picList; - if (array.count > 1) { - [self.cycleTrundleRegard setAutoScroll:YES]; - self.cycleTrundleRegard.autoScrollTimeInterval = 3; - } else { - [self.cycleTrundleRegard setAutoScroll:NO]; - } - } else { - [self.cycleTrundleRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(0); - }]; - } - } type:@"3"]; -} - -- (void)rectifyBtutonPerformance:(UIButton *)sender { - YUMIManePretendUpwardsRegardGovernancer *vc = [[YUMIManePretendUpwardsRegardGovernancer alloc] init]; - [self.navigationController pushViewController:vc animated:YES]; -} - -#pragma mark - JXCategoryViewDelegate -- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { - return self.titles.count; -} - -- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { - if (index == 0) { - return self.intelligencewearRegard; - } else if(index == 1) { - return self.automobileRegard; - } else if (index == 2) { - return self.materialRegard; - } else if (index == 3) { - return self.magnificentRegard; - } - return self.intumesceRegard; -} - -- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { - - self.navigationController.interactivePopGestureRecognizer.enabled = (index == 0); -} - -#pragma mark - SDCycleScrollViewDelegate -- (void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didSelectItemAtIndex:(NSInteger)index { - if (self.importpriseStatement.count > index) { - ImportpriseAbstractMatrix * info = [self.importpriseStatement secureGroalTowardsIndictowardsrix1:index]; - if (info.skipType == ActivitySkipGenre_Room) { - [YUMIChamberRegardGovernancer unfoildChamber:info.skipUri viewController:self.navigationController]; - } else if(info.skipType == ActivitySkipGenre_Web) { - YUMITissueRegardGovernancer * webVewC = [[YUMITissueRegardGovernancer alloc] init]; - webVewC.url = info.skipUri; - [self.navigationController pushViewController:webVewC animated:YES]; - } - } -} - -- (void)reindictBtutonPerformance:(UIButton *)sender { - YUMIIAPReindictRegardGovernancer * rechargeVC = [[YUMIIAPReindictRegardGovernancer alloc] init]; - [self.navigationController pushViewController:rechargeVC animated:YES]; -} - -#pragma mark - Getters And Setters -- (void)setCurrentIndex:(NSInteger)currentIndex { - if (currentIndex < self.titles.count) { - [self.titleView setDefaultSelectedIndex:currentIndex]; - } -} - -- (JXCategoryTitleView *)titleView { - if (!_titleView) { - _titleView = [[JXCategoryTitleView alloc] init]; - _titleView.delegate = self; - _titleView.titles = self.titles; - _titleView.titleColor = [DJDKMIMOMColor instantEssayPrettify]; - _titleView.titleSelectedColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleView.titleFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; - _titleView.titleSelectedFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; - _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; - _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; - _titleView.defaultSelectedIndex = 0; - _titleView.listContainer = self.contentView; - - JXCategoryIndicatorLineView *burlywoodRegard = [[JXCategoryIndicatorLineView alloc] init]; - burlywoodRegard.indicatorColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - burlywoodRegard.indicatorWidth = 8.f; - burlywoodRegard.indicatorHeight = 4.f; - burlywoodRegard.indicatorCornerRadius = 2.f; - _titleView.indicators = @[burlywoodRegard]; - } - return _titleView; -} - -- (JXCategoryListContainerView *)contentView { - if (!_contentView) { - _contentView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; - _contentView.scrollView.backgroundColor = [UIColor clearColor]; - _contentView.defaultSelectedIndex = 0; - } - return _contentView; -} - -- (NSArray *)titles { - return @[@"头饰", @"座驾", @"铭牌", @"资料卡", YMLocalizedString(@"YUMI_Dress_Up_Shop_View_Controller_6")]; -} - -- (YUMIPretendUpwardsProcurementStatementRegardGovernancer *)intelligencewearRegard { - if (!_intelligencewearRegard) { - _intelligencewearRegard = [[YUMIPretendUpwardsProcurementStatementRegardGovernancer alloc] init]; - _intelligencewearRegard.type = DressUpShopStatementGenre_HeadWear; - } - return _intelligencewearRegard; -} - -- (YUMIPretendUpwardsProcurementStatementRegardGovernancer *)automobileRegard { - if (!_automobileRegard) { - _automobileRegard = [[YUMIPretendUpwardsProcurementStatementRegardGovernancer alloc] init]; - _automobileRegard.type = DressUpShopStatementGenre_Car; - } - return _automobileRegard; -} - -- (YUMIPretendUpwardsProcurementStatementRegardGovernancer *)materialRegard { - if (!_materialRegard) { - _materialRegard = [[YUMIPretendUpwardsProcurementStatementRegardGovernancer alloc] init]; - _materialRegard.type = DressUpShopStatementGenre_Nameplate; - } - return _materialRegard; -} - -- (YUMIPretendUpwardsProcurementSolitaireRegardGovernancer *)magnificentRegard { - if (!_magnificentRegard) { - _magnificentRegard = [[YUMIPretendUpwardsProcurementSolitaireRegardGovernancer alloc] init]; - _magnificentRegard.type = DressUpShopStatementGenre_Noble; - } - return _magnificentRegard; -} - -- (YUMIPretendUpwardsProcurementStatementRegardGovernancer *)intumesceRegard { - if (!_intumesceRegard) { - _intumesceRegard = [[YUMIPretendUpwardsProcurementStatementRegardGovernancer alloc] init]; - _intumesceRegard.type = DressUpShopStatementGenre_Bubble; - } - return _intumesceRegard; -} - -- (SDCycleScrollView *)cycleTrundleRegard { - if (!_cycleTrundleRegard) { - _cycleTrundleRegard = [SDCycleScrollView cycleScrollViewWithFrame:CGRectZero delegate:self placeholderImage:nil]; - _cycleTrundleRegard.pageControlAliment = SDCycleScrollViewPageContolAlimentCenter; - _cycleTrundleRegard.currentPageDotColor = [UIColor whiteColor]; - _cycleTrundleRegard.pageDotColor = [UIColor colorWithWhite:1 alpha:0.15]; - _cycleTrundleRegard.backgroundColor = [UIColor colorWithWhite:1 alpha:0.00]; - _cycleTrundleRegard.bannerImageViewContentMode = UIViewContentModeScaleAspectFill; - _cycleTrundleRegard.layer.masksToBounds = YES; - _cycleTrundleRegard.layer.cornerRadius = 12; - } - return _cycleTrundleRegard; -} - -- (UIView *)mainView { - if (!_mainView) { - _mainView = [[UIView alloc] init]; - _mainView.backgroundColor = [UIColor whiteColor]; - } - return _mainView; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightBold]; - _titleLabel.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - _titleLabel.text = YMLocalizedString(@"YUMI_Dress_Up_Shop_View_Controller_7"); - } - return _titleLabel; -} - -- (UIImageView *)bWSttawberryIndicateRegard { - if (!_bWSttawberryIndicateRegard) { - _bWSttawberryIndicateRegard = [[UIImageView alloc] init]; - _bWSttawberryIndicateRegard.image = [UIImage imageNamed:@"yumi_same_diamond"]; - } - return _bWSttawberryIndicateRegard; -} - -- (UILabel *)bWSttawberrySequencignation { - if (!_bWSttawberrySequencignation) { - _bWSttawberrySequencignation = [[UILabel alloc] init]; - _bWSttawberrySequencignation.font = [UIFont systemFontOfSize:16 weight:UIFontWeightBold]; - _bWSttawberrySequencignation.textColor = UIColorFromRGB(0xFFBC51); - } - return _bWSttawberrySequencignation; -} - -- (UIButton *)dischargeBtuton { - if (!_dischargeBtuton) { - _dischargeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_dischargeBtuton setTitle:YMLocalizedString(@"YUMI_Dress_Up_Shop_View_Controller_8") forState:UIControlStateNormal]; - [_dischargeBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [_dischargeBtuton addTarget:self action:@selector(reindictBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _dischargeBtuton.layer.masksToBounds = YES; - _dischargeBtuton.layer.cornerRadius = 24/2; - _dischargeBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_dischargeBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } - return _dischargeBtuton; -} - -@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/YUMIPretendUpwardsProcurementSolitaireRegardGovernancer.h b/YuMi/Modules/YMMine/View/DressUp/View/YUMIPretendUpwardsProcurementSolitaireRegardGovernancer.h deleted file mode 100644 index 0f8d001e..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/YUMIPretendUpwardsProcurementSolitaireRegardGovernancer.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YMDressUpShopCardViewController.h -// YUMI -// -// Created by YUMI on 2022/7/29. -// - -#import "MvpRegardGovernancer.h" -#import -#import "FBCPretendedProcurementCeremony.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIPretendUpwardsProcurementSolitaireRegardGovernancer : MvpRegardGovernancer - -@property (nonatomic,assign) DressUpShopStatementGenre type; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/YUMIPretendUpwardsProcurementSolitaireRegardGovernancer.m b/YuMi/Modules/YMMine/View/DressUp/View/YUMIPretendUpwardsProcurementSolitaireRegardGovernancer.m deleted file mode 100644 index e76ecc9f..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/YUMIPretendUpwardsProcurementSolitaireRegardGovernancer.m +++ /dev/null @@ -1,181 +0,0 @@ -// -// YMDressUpShopCardViewController.m -// YUMI -// -// Created by YUMI on 2022/7/29. -// - -#import "YUMIPretendUpwardsProcurementSolitaireRegardGovernancer.h" -#import -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "YUMIManePretendDispossessTabulationRegardElement.h" -#import "YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement.h" -#import "YUMIPretendHuntforRegardGovernancer.h" -#import "YUMIPretendUpwardsProcurementExternalizer.h" -#import "MagnificentSolitaireMatrix.h" - -@interface YUMIPretendUpwardsProcurementSolitaireRegardGovernancer () - -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSArray *datasource; - -@end - -@implementation YUMIPretendUpwardsProcurementSolitaireRegardGovernancer - -- (YUMIPretendUpwardsProcurementExternalizer *)producePresimport { - return [[YUMIPretendUpwardsProcurementExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} -#pragma mark - FBCPretendedProcurementSolitaireTabulationViweElementRepresendtation -- (void)yUMIPretconcludeedProcurementSolitaireTarbsultowardsionViweElementDischargePretconclude:(YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement *)view dressId:(NSString *)dressId { - YUMIPretendHuntforRegardGovernancer *vc = [[YUMIPretendHuntforRegardGovernancer alloc] init]; - vc.dressType = self.type; - vc.dressId = dressId; - [self.navigationController pushViewController:vc animated:YES]; -} - -- (void)yUMIPretconcludeedProcurementSolitaireTarbsultowardsionViweElementAcquirePretconclude:(YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement *)view dressId:(NSString *)dressId { - [self.presimport acquirePretconcludeed:self.type dressId:dressId]; -} - -#pragma mark - FBCManePretendedCeremony -- (void)acquireProcurementSttowardsementAccomplishment:(NSArray *)array type:(DressUpShopStatementGenre)type { - if (type == self.type) { - self.datasource = array; - [self.tableView reloadData]; - } -} - -- (void)acquireProcurementPretconcludeAccomplishmentAboutGenre:(DressUpShopStatementGenre)type { - if (type == self.type) { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Dress_Up_Shop_Card_View_Controller_0")]; - [[NSNotificationCenter defaultCenter] postNotificationName:@"buyDressSuccessNoti" object:nil]; - } -} - -- (void)acquireConsumerApexknotSttowardsementAccomplishment:(NSArray *)array { - self.datasource = array; - [self.tableView reloadData]; -} - -- (void)acquireConsumerAutomobileSttowardsementAccomplishment:(NSArray *)array { - self.datasource = array; - [self.tableView reloadData]; -} - -- (void)acquireConsumerMtowardserialSttowardsementAccomplishment:(NSArray *)array { - self.datasource = array; - [self.tableView reloadData]; -} - -- (void)acquireConsumerMagnificentSolitaireSttowardsementAccomplishment:(NSArray *)array { - self.datasource = array; - [self.tableView reloadData]; -} - -- (void)utilizeApexknotAccomplishment:(NSString *)headWearId { - [self EvidenceAccomplishmentToast:headWearId.integerValue == 0 ? @"取消使用头饰成功" : YMLocalizedString(@"YUMI_Dress_Up_Shop_Card_View_Controller_2")]; - -} - -- (void)utilizeAutomobileAccomplishment:(NSString *)carId { - [self EvidenceAccomplishmentToast:carId.integerValue == 0 ? @"取消使用座驾成功" : YMLocalizedString(@"YUMI_Dress_Up_Shop_Card_View_Controller_4")]; -} - -- (void)utilizeMtowardserialAccomplishment:(NSString *)nameplateId { - [self EvidenceAccomplishmentToast:nameplateId.integerValue == 0 ? @"取消使用铭牌成功" : YMLocalizedString(@"YUMI_Dress_Up_Shop_Card_View_Controller_6")]; -} - -- (void)consumerMagnificentSolitaireAccomplishment:(NSString *)nobleCardId { - [self EvidenceAccomplishmentToast:nobleCardId.integerValue == 0 ? @"取消使用资料卡成功" : YMLocalizedString(@"YUMI_Dress_Up_Shop_Card_View_Controller_8")]; - if (nobleCardId.integerValue == 0) { - for (MagnificentSolitaireMatrix *model in self.datasource) { - model.used = NO; - } - } else { - for (MagnificentSolitaireMatrix *model in self.datasource) { - if ([model.cardId isEqualToString:nobleCardId]) { - model.used = YES; - } else { - model.used = NO; - } - } - } - [self.tableView reloadData]; -} - -#pragma mark - JXCategoryListContentViewDelegate -- (UIView *)listView { - return self.view; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return self.datasource.count > 0 ? 280 : (KScreenHeight - kNavigationHeight - 100 -50); -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement class])]; - } - cell.magnificentSolitaireMatrix = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.delegate = self; - return cell; - } - YUMIManePretendDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManePretendDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManePretendDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManePretendDispossessTabulationRegardElement class])]; - } - cell.emptyTitle = YMLocalizedString(@"YUMI_Dress_Up_Shop_Card_View_Controller_9"); - return cell; -} - -#pragma mark - Getters And Setters -- (void)setType:(DressUpShopStatementGenre)type { - _type = type; - [self.presimport acquirePretconcludeedProcurementSttowardsement:type]; -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - _tableView.contentInset = UIEdgeInsetsMake(0, 0, kSafeAreaBottomHeight, 0); - [_tableView registerClass:[YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIPretendUpwardsProcurementSolitaireTabulationRegardElement class])]; - [_tableView registerClass:[YUMIManePretendDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManePretendDispossessTabulationRegardElement class])]; - } - return _tableView; -} - -@end diff --git a/YuMi/Modules/YMMine/View/DressUp/View/YUMIPretendUpwardsProcurementStatementRegardGovernancer.h b/YuMi/Modules/YMMine/View/DressUp/View/YUMIPretendUpwardsProcurementStatementRegardGovernancer.h deleted file mode 100644 index ad15f336..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/YUMIPretendUpwardsProcurementStatementRegardGovernancer.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YMDressUpShopListViewController.h -// YUMI -// -// Created by YUMI on 2022/7/28. -// - -#import "MvpRegardGovernancer.h" -#import -#import "FBCPretendedProcurementCeremony.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIPretendUpwardsProcurementStatementRegardGovernancer : MvpRegardGovernancer - -@property (nonatomic,assign) DressUpShopStatementGenre type; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/DressUp/View/YUMIPretendUpwardsProcurementStatementRegardGovernancer.m b/YuMi/Modules/YMMine/View/DressUp/View/YUMIPretendUpwardsProcurementStatementRegardGovernancer.m deleted file mode 100644 index af76013d..00000000 --- a/YuMi/Modules/YMMine/View/DressUp/View/YUMIPretendUpwardsProcurementStatementRegardGovernancer.m +++ /dev/null @@ -1,209 +0,0 @@ -// -// YMDressUpShopListViewController.m -// YUMI -// -// Created by YUMI on 2022/7/28. -// - -#import "YUMIPretendUpwardsProcurementStatementRegardGovernancer.h" -#import -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "YUMIManePretendDispossessAssembletionRegardElement.h" -#import "YUMIPretendUpwardsProcurementAssembletionRegardElement.h" -#import "YUMIPretendHuntforRegardGovernancer.h" -#import "YUMIPretendUpwardsProcurementExternalizer.h" -#import "MagnificentSolitaireMatrix.h" - -@interface YUMIPretendUpwardsProcurementStatementRegardGovernancer () - -@property (nonatomic,strong) UICollectionView *collectionView; -@property (nonatomic,strong) NSArray *datasource; - -@end - -@implementation YUMIPretendUpwardsProcurementStatementRegardGovernancer - -- (YUMIPretendUpwardsProcurementExternalizer *)producePresimport { - return [[YUMIPretendUpwardsProcurementExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.collectionView]; -} - -- (void)initChildLyRestrictions { - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -#pragma mark - FBCPretendedProcurementAssembletionRegardElementRepresendtation -- (void)yUMIPretconcludeedProcurementAssembletionRegardElementDischargePretconclude:(YUMIPretendUpwardsProcurementAssembletionRegardElement *)view dressId:(NSString *)dressId { - YUMIPretendHuntforRegardGovernancer *vc = [[YUMIPretendHuntforRegardGovernancer alloc] init]; - vc.dressType = self.type; - vc.dressId = dressId; - [self.navigationController pushViewController:vc animated:YES]; -} - -- (void)yUMIPretconcludeedProcurementAssembletionRegardElementAcquirePretconclude:(YUMIPretendUpwardsProcurementAssembletionRegardElement *)view dressId:(NSString *)dressId { - [self.presimport acquirePretconcludeed:self.type dressId:dressId]; -} - -#pragma mark - FBCManePretendedCeremony -- (void)acquireProcurementSttowardsementAccomplishment:(NSArray *)array type:(DressUpShopStatementGenre)type { - if (type == self.type) { - self.datasource = array; - [self.collectionView reloadData]; - } -} - -- (void)acquireProcurementPretconcludeAccomplishmentAboutGenre:(DressUpShopStatementGenre)type { - if (type == self.type) { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Dress_Up_Shop_List_View_Controller_0")]; - [[NSNotificationCenter defaultCenter] postNotificationName:@"buyDressSuccessNoti" object:nil]; - } -} - -- (void)acquireConsumerApexknotSttowardsementAccomplishment:(NSArray *)array { - self.datasource = array; - [self.collectionView reloadData]; -} - -- (void)acquireConsumerAutomobileSttowardsementAccomplishment:(NSArray *)array { - self.datasource = array; - [self.collectionView reloadData]; -} - -- (void)acquireConsumerMtowardserialSttowardsementAccomplishment:(NSArray *)array { - self.datasource = array; - [self.collectionView reloadData]; -} - -- (void)acquireConsumerMagnificentSolitaireSttowardsementAccomplishment:(NSArray *)array { - self.datasource = array; - [self.collectionView reloadData]; -} - -- (void)utilizeApexknotAccomplishment:(NSString *)headWearId { - [self EvidenceAccomplishmentToast:headWearId.integerValue == 0 ? @"取消使用头饰成功" : YMLocalizedString(@"YUMI_Dress_Up_Shop_List_View_Controller_2")]; -} - -- (void)utilizeAutomobileAccomplishment:(NSString *)carId { - [self EvidenceAccomplishmentToast:carId.integerValue == 0 ? @"取消使用座驾成功" : YMLocalizedString(@"YUMI_Dress_Up_Shop_List_View_Controller_4")]; -} - -- (void)utilizeMtowardserialAccomplishment:(NSString *)nameplateId { - [self EvidenceAccomplishmentToast:nameplateId.integerValue == 0 ? @"取消使用铭牌成功" : YMLocalizedString(@"YUMI_Dress_Up_Shop_List_View_Controller_6")]; -} - -- (void)consumerMagnificentSolitaireAccomplishment:(NSString *)nobleCardId { - [self EvidenceAccomplishmentToast:nobleCardId.integerValue == 0 ? @"取消使用资料卡成功" : YMLocalizedString(@"YUMI_Dress_Up_Shop_List_View_Controller_8")]; - if (nobleCardId.integerValue == 0) { - for (MagnificentSolitaireMatrix *model in self.datasource) { - model.used = NO; - } - } else { - for (MagnificentSolitaireMatrix *model in self.datasource) { - if ([model.cardId isEqualToString:nobleCardId]) { - model.used = YES; - } else { - model.used = NO; - } - } - } - [self.collectionView reloadData]; -} - -#pragma mark - JXCategoryListContentViewDelegate -- (UIView *)listView { - return self.view; -} - -#pragma mark - UICollectionViewDelegate -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMIPretendUpwardsProcurementAssembletionRegardElement *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIPretendUpwardsProcurementAssembletionRegardElement class]) forIndexPath:indexPath]; - cell.dressUpwardsMatrix = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.delegate = self; - return cell; - } - YUMIManePretendDispossessAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIManePretendDispossessAssembletionRegardElement class]) forIndexPath:indexPath]; - cell.emptyTitle = self.type == DressUpShopStatementGenre_HeadWear ? @"暂无头饰" : self.type == DressUpShopStatementGenre_Car ? @"暂无座驾" : self.type == DressUpShopStatementGenre_Nameplate ? @"暂无铭牌" : YMLocalizedString(@"YUMI_Dress_Up_Shop_List_View_Controller_12"); - return cell; -} - -- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - CGFloat width = (KScreenWidth - 42) *0.5; - return CGSizeMake(width, 188); - } else { - return CGSizeMake(KScreenWidth - 32, KScreenHeight - kNavigationHeight - 100 -50); - } -} - -- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { - if (self.datasource.count > 0) { - return 12; - } else { - return 0; - } -} - -- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section { - if (self.datasource.count > 0) { - return 12; - } else { - return 0; - } -} - -#pragma mark - Getters And Setters -- (void)setType:(DressUpShopStatementGenre)type { - _type = type; - switch (type) { - case DressUpShopStatementGenre_HeadWear: - [self.presimport acquirePretconcludeedProcurementSttowardsement:DressUpShopStatementGenre_HeadWear]; - break; - case DressUpShopStatementGenre_Car: - [self.presimport acquirePretconcludeedProcurementSttowardsement:DressUpShopStatementGenre_Car]; - break; - case DressUpShopStatementGenre_Nameplate: - [self.presimport acquirePretconcludeedProcurementSttowardsement:DressUpShopStatementGenre_Nameplate]; - break; - case DressUpShopStatementGenre_Bubble: - [self.presimport acquirePretconcludeedProcurementSttowardsement:DressUpShopStatementGenre_Bubble]; - break; - default: - break; - } -} - - -- (UICollectionView *)collectionView { - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.scrollDirection = UICollectionViewScrollDirectionVertical; - layout.sectionInset = UIEdgeInsetsMake(15, 15, 15, 15); - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.backgroundColor = [UIColor clearColor]; - [_collectionView registerClass:[YUMIPretendUpwardsProcurementAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIPretendUpwardsProcurementAssembletionRegardElement class])]; - [_collectionView registerClass:[YUMIManePretendDispossessAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIManePretendDispossessAssembletionRegardElement class])]; - } - return _collectionView; -} - -@end diff --git a/YuMi/Modules/YMMine/View/EnterpriseRecharge/Api/Api+EnterpriseRecharge.m b/YuMi/Modules/YMMine/View/EnterpriseRecharge/Api/Api+EnterpriseRecharge.m index f4f0cea6..44241fc4 100644 --- a/YuMi/Modules/YMMine/View/EnterpriseRecharge/Api/Api+EnterpriseRecharge.m +++ b/YuMi/Modules/YMMine/View/EnterpriseRecharge/Api/Api+EnterpriseRecharge.m @@ -9,22 +9,30 @@ #import "NSMutableDictionary+Saft.h" @implementation Api (EnterpriseRecharge) -+ (void)importpriseReindictSttowardsement:(HttpRequestHelperCompletion)completion channelType:(NSString *)channelType { - [self manufactureDemand:@"chargeprod/listV2" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, channelType, nil]; +///企业包的充值列表 ++ (void)enterpriseRechargeList:(HttpRequestHelperCompletion)completion channelType:(NSString *)channelType { + [self makeRequest:@"chargeprod/listV2" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, channelType, nil]; } -+ (void)requisitionIntersect:(HttpRequestHelperCompletion)completion chargeProdId:(NSString *)chargeProdId payChannel:(NSString *)payChannel clientIp:(NSString *)clientIp uid:(NSString *)uid ticket:(NSString *)ticket roomUid:(NSString *)roomUid { +/// 请求支付参数 +/// @param completion 完成 +/// @param chargeProdId 订单的id +/// @param payChannel 支付的渠道 +/// @param clientIp ip +/// @param uid uid +/// @param ticket ticket ++ (void)requestPay:(HttpRequestHelperCompletion)completion chargeProdId:(NSString *)chargeProdId payChannel:(NSString *)payChannel clientIp:(NSString *)clientIp uid:(NSString *)uid ticket:(NSString *)ticket roomUid:(NSString *)roomUid { NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic secureSetGroal:chargeProdId forKey:@"chargeProdId"]; - [dic secureSetGroal:payChannel forKey:@"payChannel"]; - [dic secureSetGroal:clientIp forKey:@"clientIp"]; - [dic secureSetGroal:uid forKey:@"uid"]; - [dic secureSetGroal:ticket forKey:@"ticket"]; + [dic safeSetObject:chargeProdId forKey:@"chargeProdId"]; + [dic safeSetObject:payChannel forKey:@"payChannel"]; + [dic safeSetObject:clientIp forKey:@"clientIp"]; + [dic safeSetObject:uid forKey:@"uid"]; + [dic safeSetObject:ticket forKey:@"ticket"]; if (roomUid.integerValue> 0) { - [dic secureSetGroal:roomUid forKey:@"roomUid"]; + [dic safeSetObject:roomUid forKey:@"roomUid"]; } - [HttpRequestFacilitater request:@"charge/pay/apply" method:HttpRequestHelperMethodPOST params:dic completion:completion]; + [HttpRequestHelper request:@"charge/pay/apply" method:HttpRequestHelperMethodPOST params:dic completion:completion]; } diff --git a/YuMi/Modules/YMMine/View/Friend/XPMineAttentionViewController.h b/YuMi/Modules/YMMine/View/Friend/XPMineAttentionViewController.h new file mode 100644 index 00000000..98dd53fa --- /dev/null +++ b/YuMi/Modules/YMMine/View/Friend/XPMineAttentionViewController.h @@ -0,0 +1,28 @@ +// +// YMMineAttentionViewController.h +// YUMI +// +// Created by YUMI on 2021/12/21. +// + +#import "MvpViewController.h" +#import +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +@class XPMineAttentionViewController, FansInfoModel; +@protocol XPMineAttentionViewControllerDelegate + +- (void)xPMineAttentionViewController:(XPMineAttentionViewController *)viewController didSelectItem:(FansInfoModel *)userInfo; + +@end +@interface XPMineAttentionViewController : MvpViewController +///类型 +@property (nonatomic,assign) ContactUseingType type; +///代理 +@property (nonatomic,weak) id delegate; +/** 控制器 因为房间内聊天没有控制器去push 或者做其他的操作*/ +@property (nonatomic, weak) UIViewController * mainController; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Friend/XPMineAttentionViewController.m b/YuMi/Modules/YMMine/View/Friend/XPMineAttentionViewController.m new file mode 100644 index 00000000..3c91dd25 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Friend/XPMineAttentionViewController.m @@ -0,0 +1,242 @@ +// +// YMMineAttentionViewController.m +// YUMI +// +// Created by YUMI on 2021/12/21. +// + +#import "XPMineAttentionViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" +#import "ClientConfig.h" +///Model +#import "FansInfoModel.h" +///View +#import "XPMineAttentionTableViewCell.h" +#import "XPMineFriendEmptyTableViewCell.h" +///View +#import "XPMineFriendEmptyTableViewCell.h" +#import "XPMineAttentionTableViewCell.h" +///P +#import "XPMineAttentionPresenter.h" +#import "XPMineAttentionProtocol.h" +#import "RoomHostDelegate.h" +///VC +#import "XPMineUserInfoViewController.h" +#import "XPMineSimpleUserInfoViewController.h" +#import "XPRoomViewController.h" +#import "SessionViewController.h" + +@interface XPMineAttentionViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +///当前页数 +@property (nonatomic,assign) int page; +///更多数据 +@property (nonatomic,assign) BOOL hasNoMoreData; +@end + +@implementation XPMineAttentionViewController + +- (BOOL)isHiddenNavBar { + return self.type == ContactUseingType_In_Room ? YES : NO; +} + +- (XPMineAttentionPresenter *)createPresenter { + return [[XPMineAttentionPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initHeaderAndFooterRrfresh]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - 下拉刷新 +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; + + [self headerRefresh]; +} + +#pragma mark - 刷新的fangfa +- (void)headerRefresh { + self.page = 1; + [self.presenter getUserAttentionList:self.page pageSize:20 state:0]; +} + +- (void)footerRefresh { + if (self.hasNoMoreData) { + [self showErrorToast:YMLocalizedString(@"XPMineAttentionViewController0")]; + return; + } + self.page++; + [self.presenter getUserAttentionList:self.page pageSize:20 state:1]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMineAttentionViewController1"); + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +#pragma mark - XPMineAttentionProtocol +- (void)getUserAttentionListSuccess:(NSArray *)array state:(int)state { + if (state == 0) { + [self.datasource removeAllObjects]; + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } + if (array.count > 0) { + self.hasNoMoreData = NO; + [self.datasource addObjectsFromArray:array]; + } else { + self.hasNoMoreData = YES; + [self.tableView.mj_footer endRefreshingWithNoMoreData]; + } + [self.tableView reloadData]; +} + +- (void)getUserAttentionListFail:(int)state { + if (state == 0) { + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } +} +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return self.datasource.count > 0 ? 65 : self.type == ContactUseingType_In_Room ? (KScreenHeight - kNavigationHeight) : (KScreenHeight - 200 - kNavigationHeight); +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPMineAttentionTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineAttentionTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineAttentionTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineAttentionTableViewCell class])]; + } + cell.delegate = self; + FansInfoModel * fansInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + fansInfo.useingType = self.type; + cell.fansInfo = fansInfo; + return cell; + } + + XPMineFriendEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineFriendEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineFriendEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineFriendEmptyTableViewCell class])]; + } + cell.emptyTitle = YMLocalizedString(@"XPMineAttentionViewController2"); + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + FansInfoModel * fansInfoModel = [self.datasource safeObjectAtIndex1:indexPath.row]; + if (self.type == ContactUseingType_In_Room) { + SessionViewController * sessionVC = [[SessionViewController alloc] initWithSession:[NIMSession session:fansInfoModel.uid type:NIMSessionTypeP2P]]; + sessionVC.openType = SessionListOpenTypeRoom; + CATransition *transition = [CATransition animation]; + transition.duration = 0.3f; + transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; + transition.type = kCATransitionPush; + transition.subtype = kCATransitionFromRight; + [self.mainController.view.layer addAnimation:transition forKey:nil]; + [self.mainController addChildViewController:sessionVC]; + [self.mainController.view addSubview:sessionVC.view]; + } else if(self.type == ContactUseingType_Share){ + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineAttentionViewController:didSelectItem:)]) { + [self.delegate xPMineAttentionViewController:self didSelectItem:fansInfoModel]; + } + } else { + + if ([ClientConfig shareConfig].canOpen) { + XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init]; + userInfoVC.uid = fansInfoModel.uid.integerValue; + [self.navigationController pushViewController:userInfoVC animated:YES]; + }else{ + XPMineSimpleUserInfoViewController * userInfoVC = [[XPMineSimpleUserInfoViewController alloc] init]; + userInfoVC.uid = fansInfoModel.uid.integerValue; + [self.navigationController pushViewController:userInfoVC animated:YES]; + } + } + } +} + +#pragma mark - XPMineAttentionTableViewCellDelegate +- (void)xPMineAttentionTableViewCell:(XPMineAttentionTableViewCell *)view findUser:(NSString *)uid { + //TODO:退出原来的房间 如果有的话 TODO 总感觉这种处理不太优雅 进房入口多了 怎么办 进房需要整合 + [self.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj isKindOfClass:[XPRoomViewController class]]) { + [self.navigationController popToRootViewControllerAnimated:NO]; + XPRoomViewController * rooomVC = obj; + [rooomVC exitRoom]; + *stop = YES; + } + }]; + [XPRoomViewController openRoom:uid viewController:self]; +} + +#pragma mark - JXCategoryListContentViewDelegate +- (UIView *)listView { + return self.view; +} + +#pragma mark - Getters And Setters + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + _tableView.rowHeight = 65; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPMineFriendEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineFriendEmptyTableViewCell class])]; + [_tableView registerClass:[XPMineAttentionTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineAttentionTableViewCell class])]; + } + return _tableView; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Friend/XPMineContactViewController.h b/YuMi/Modules/YMMine/View/Friend/XPMineContactViewController.h new file mode 100644 index 00000000..98d74e65 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Friend/XPMineContactViewController.h @@ -0,0 +1,17 @@ +// +// YMMineContactViewController.h +// YUMI +// +// Created by YUMI on 2022/5/29. +// + +#import "BaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineContactViewController : BaseViewController +///私聊的用户 +@property (nonatomic,copy) NSString *chatUserId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Friend/XPMineContactViewController.m b/YuMi/Modules/YMMine/View/Friend/XPMineContactViewController.m new file mode 100644 index 00000000..39e6299a --- /dev/null +++ b/YuMi/Modules/YMMine/View/Friend/XPMineContactViewController.m @@ -0,0 +1,191 @@ +// +// YMMineContactViewController.m +// YUMI +// +// Created by YUMI on 2022/5/29. +// + +#import "XPMineContactViewController.h" +///Third +#import +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +///View +#import "SessionViewController.h" +#import "SessionListViewController.h" +#import "XPMineFriendViewController.h" +#import "XPMineAttentionViewController.h" +#import "XPMineFansViewController.h" +@interface XPMineContactViewController () +///标题 +@property (nonatomic,strong) NSArray *titles; +///滑块 +@property (nonatomic,strong) JXCategoryTitleView *titleView; +@property (nonatomic, strong) JXCategoryListContainerView *listContainerView; +///回话 +@property (nonatomic,strong) SessionListViewController *sessionListVC; +///好友 +@property (nonatomic,strong) XPMineFriendViewController *friendVC; +///关注 +@property (nonatomic,strong) XPMineAttentionViewController *attentionVC; +///粉丝 +@property (nonatomic,strong) XPMineFansViewController *fansVC; +@end + +@implementation XPMineContactViewController + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.titleView]; + [self.view addSubview:self.listContainerView]; + +} + +- (void)initSubViewConstraints { + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.height.mas_equalTo(50); + }]; + + [self.listContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.top.mas_equalTo(self.titleView.mas_bottom); + }]; +} + + +#pragma mark - JXCategoryListContainerViewDelegate +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { + return self.titles.count; +} + +// 根据下标 index 返回对应遵守并实现 `JXCategoryListContentViewDelegate` 协议的列表实例 +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { + if (index == 0) { +// [self addChildViewController:self.sessionListVC]; + return self.sessionListVC; + }else if (index == 1) { +// [self addChildViewController:self.friendVC]; + return self.friendVC; + } else if(index == 2) { +// [self addChildViewController:self.fansVC]; + return self.fansVC; + } else { +// [self addChildViewController:self.attentionVC]; + return self.attentionVC; + } +} + +#pragma mark - Getters And Setters +- (void)setChatUserId:(NSString *)chatUserId { + _chatUserId = chatUserId; + if (_chatUserId) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + NIMSession *recentSession = [NIMSession session:self.chatUserId type:NIMSessionTypeP2P]; + SessionViewController * sessionVC =[[SessionViewController alloc] initWithSession:recentSession]; + sessionVC.openType = SessionListOpenTypeRoom; + CATransition *transition = [CATransition animation]; + transition.duration = 0.3f; + transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; + transition.type = kCATransitionPush; + transition.subtype = kCATransitionFromRight; + [self.view.layer addAnimation:transition forKey:nil]; + [self.view addSubview:sessionVC.view]; + [self addChildViewController:sessionVC]; + }); + } +} + + +- (JXCategoryListContainerView *)listContainerView { + if (!_listContainerView) { + _listContainerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; + _listContainerView.listCellBackgroundColor = [UIColor clearColor]; + } + return _listContainerView; +} + +- (NSArray *)titles { + if (!_titles) { + _titles = @[@"消息", @"好友",@"粉丝", YMLocalizedString(@"XPMineContactViewController3")]; + } + return _titles; +} + +- (JXCategoryTitleView *)titleView { + if (!_titleView) { + _titleView = [[JXCategoryTitleView alloc] initWithFrame:CGRectZero]; + _titleView.backgroundColor =[UIColor clearColor]; + _titleView.titleColor = UIColorFromRGB(0x444444); + _titleView.titleSelectedColor = [DJDKMIMOMColor mainTextColor]; + _titleView.titleFont = [UIFont systemFontOfSize:16 weight:UIFontWeightSemibold]; + _titleView.titleSelectedFont = [UIFont systemFontOfSize:18 weight:UIFontWeightHeavy]; + _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; + _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; + _titleView.averageCellSpacingEnabled = NO; + _titleView.defaultSelectedIndex = 0; + _titleView.titles = self.titles; + _titleView.delegate = self; + _titleView.cellSpacing = 0; + _titleView.cellWidth = (CGFloat)KScreenWidth/ 4.0; + _titleView.listContainer = self.listContainerView; + + JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init]; + lineView.indicatorColor = [DJDKMIMOMColor appMainColor]; + lineView.indicatorWidth = 8.f; + lineView.indicatorHeight = 4.f; + lineView.indicatorCornerRadius = 2.f; + _titleView.indicators = @[lineView]; + } + return _titleView; +} + +- (SessionListViewController *)sessionListVC { + if (!_sessionListVC) { + _sessionListVC = [[SessionListViewController alloc] initWithType:SessionListOpenTypeRoom]; + _sessionListVC.mainController = self; + } + return _sessionListVC; +} + +- (XPMineAttentionViewController *)attentionVC { + if (!_attentionVC) { + _attentionVC = [[XPMineAttentionViewController alloc] init]; + _attentionVC.type = ContactUseingType_In_Room; + _attentionVC.mainController = self; + } + return _attentionVC; +} + +- (XPMineFriendViewController *)friendVC { + if (!_friendVC) { + _friendVC = [[XPMineFriendViewController alloc] init]; + _friendVC.type = ContactUseingType_In_Room; + _friendVC.mainController = self; + } + return _friendVC; +} + +- (XPMineFansViewController *)fansVC { + if (!_fansVC) { + _fansVC = [[XPMineFansViewController alloc] init]; + _fansVC.type = ContactUseingType_In_Room; + _fansVC.mainController = self; + } + return _fansVC; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Friend/XPMineFansViewController.h b/YuMi/Modules/YMMine/View/Friend/XPMineFansViewController.h new file mode 100644 index 00000000..ce91e56e --- /dev/null +++ b/YuMi/Modules/YMMine/View/Friend/XPMineFansViewController.h @@ -0,0 +1,29 @@ +// +// YMMineFansViewController.h +// YUMI +// +// Created by YUMI on 2021/12/21. +// + +#import "MvpViewController.h" +#import +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN +@class XPMineFansViewController, FansInfoModel; +@protocol XPMineFansViewControllerDelegate + +- (void)xPMineFansViewController:(XPMineFansViewController *)view didSelectItem:(FansInfoModel *)userInfo; + +@end + +@interface XPMineFansViewController : MvpViewController +///类型 +@property (nonatomic,assign) ContactUseingType type; +///代理 +@property (nonatomic,weak) id delegate; +/** 控制器 因为房间内聊天没有控制器去push 或者做其他的操作*/ +@property (nonatomic, weak) UIViewController * mainController; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Friend/XPMineFansViewController.m b/YuMi/Modules/YMMine/View/Friend/XPMineFansViewController.m new file mode 100644 index 00000000..f88d905b --- /dev/null +++ b/YuMi/Modules/YMMine/View/Friend/XPMineFansViewController.m @@ -0,0 +1,245 @@ +// +// YMMineFansViewController.m +// YUMI +// +// Created by YUMI on 2021/12/21. +// + +#import "XPMineFansViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" +#import "ClientConfig.h" +///Model +#import "FansInfoModel.h" +///View +#import "XPMineFriendEmptyTableViewCell.h" +#import "XPMineFansTableViewCell.h" +///P +#import "XPMineFansPresenter.h" +#import "XPMineFansProtocol.h" +///VC +#import "XPMineUserInfoViewController.h" +#import "XPMineSimpleUserInfoViewController.h" +#import "SessionViewController.h" + +@interface XPMineFansViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +///当前页数 +@property (nonatomic,assign) int page; +///更多数据 +@property (nonatomic,assign) BOOL hasNoMoreData; +@end + +@implementation XPMineFansViewController + +- (BOOL)isHiddenNavBar { + return self.type == ContactUseingType_In_Room ? YES : NO; +} + +- (XPMineFansPresenter *)createPresenter { + return [[XPMineFansPresenter alloc] init]; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [self.tableView reloadData]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initHeaderAndFooterRrfresh]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - 下拉刷新 +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; + + [self headerRefresh]; +} + +#pragma mark - 刷新的fangfa +- (void)headerRefresh { + self.page = 1; + [self.presenter getUserFansList:self.page pageSize:20 state:0]; +} + +- (void)footerRefresh { + if (self.hasNoMoreData) { + [self showErrorToast:YMLocalizedString(@"XPMineFansViewController0")]; + return; + } + self.page++; + [self.presenter getUserFansList:self.page pageSize:20 state:1]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMineFansViewController1"); + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +#pragma mark - XPMineFansProtocol +- (void)getUserFansListSuccess:(NSArray *)array state:(int)state { + if (state == 0) { + [self.datasource removeAllObjects]; + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } + if (array.count > 0) { + self.hasNoMoreData = NO; + [self.datasource addObjectsFromArray:array]; + } else { + self.hasNoMoreData = YES; + [self.tableView.mj_footer endRefreshingWithNoMoreData]; + } + [self.tableView reloadData]; +} + +- (void)getUserFansListFail:(int)state { + if (state == 0) { + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } +} + +- (void)attentionFansSuccess { + /// 因为不知道是不是接口请求的问题 需要等一会才能 和云信的好友关系同步 所以加个延迟吧 + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [self showSuccessToast:YMLocalizedString(@"XPMineFansViewController2")]; + [self.tableView reloadData]; + }); + +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return self.datasource.count > 0 ? 65 : self.type == ContactUseingType_In_Room ? (KScreenHeight - kNavigationHeight) : (KScreenHeight - 200 - kNavigationHeight); +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPMineFansTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineFansTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineFansTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineFansTableViewCell class])]; + } + cell.delegate = self; + FansInfoModel * fansInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + fansInfo.useingType = self.type; + cell.fansInfo = fansInfo; + return cell; + } + + XPMineFriendEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineFriendEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineFriendEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineFriendEmptyTableViewCell class])]; + } + cell.emptyTitle = YMLocalizedString(@"XPMineFansViewController3"); + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + FansInfoModel * fansInfoModel = [self.datasource safeObjectAtIndex1:indexPath.row]; + if (self.type == ContactUseingType_In_Room) { + SessionViewController * sessionVC = [[SessionViewController alloc] initWithSession:[NIMSession session:fansInfoModel.uid type:NIMSessionTypeP2P]]; + sessionVC.openType = SessionListOpenTypeRoom; + CATransition *transition = [CATransition animation]; + transition.duration = 0.3f; + transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; + transition.type = kCATransitionPush; + transition.subtype = kCATransitionFromRight; + [self.mainController.view.layer addAnimation:transition forKey:nil]; + [self.mainController addChildViewController:sessionVC]; + [self.mainController.view addSubview:sessionVC.view]; + } else if(self.type == ContactUseingType_Share) { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineFansViewController:didSelectItem:)]) { + [self.delegate xPMineFansViewController:self didSelectItem:fansInfoModel]; + } + } else { + + if ([ClientConfig shareConfig].canOpen) { + XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init]; + userInfoVC.uid = fansInfoModel.uid.integerValue; + [self.navigationController pushViewController:userInfoVC animated:YES]; + }else{ + XPMineSimpleUserInfoViewController * userInfoVC = [[XPMineSimpleUserInfoViewController alloc] init]; + userInfoVC.uid = fansInfoModel.uid.integerValue; + [self.navigationController pushViewController:userInfoVC animated:YES]; + } + } + } +} + +#pragma mark - JXCategoryListContentViewDelegate +- (UIView *)listView { + return self.view; +} + +#pragma mark - mark +- (void)xPMineFansTableViewCell:(XPMineFansTableViewCell *)view didClickAttention:(NSString *)uid { + if (uid.length > 0) { + [self.presenter attentionFans:uid]; + } +} + +#pragma mark - Getters And Setters + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + _tableView.rowHeight = 65; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPMineFriendEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineFriendEmptyTableViewCell class])]; + [_tableView registerClass:[XPMineFansTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineFansTableViewCell class])]; + } + return _tableView; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Friend/XPMineFriendViewController.h b/YuMi/Modules/YMMine/View/Friend/XPMineFriendViewController.h new file mode 100644 index 00000000..e2a207aa --- /dev/null +++ b/YuMi/Modules/YMMine/View/Friend/XPMineFriendViewController.h @@ -0,0 +1,27 @@ +// +// YMMineFriendViewController.h +// YUMI +// +// Created by YUMI on 2021/12/21. +// + +#import "MvpViewController.h" +#import +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN +@class XPMineFriendViewController, UserInfoModel; +@protocol XPMineFriendViewControllerDelegate + +- (void)xPMineFriendViewController:(XPMineFriendViewController *)viewController didSelectItem:(UserInfoModel *)userInfo; + +@end +@interface XPMineFriendViewController : MvpViewController +///类型 +@property (nonatomic,assign) ContactUseingType type; +///代理 +@property (nonatomic,weak) id delegate; +/** 控制器 因为房间内聊天没有控制器去push 或者做其他的操作*/ +@property (nonatomic, weak) UIViewController * mainController; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Friend/XPMineFriendViewController.m b/YuMi/Modules/YMMine/View/Friend/XPMineFriendViewController.m new file mode 100644 index 00000000..9379ee7c --- /dev/null +++ b/YuMi/Modules/YMMine/View/Friend/XPMineFriendViewController.m @@ -0,0 +1,157 @@ +// +// YMMineFriendViewController.m +// YUMI +// +// Created by YUMI on 2021/12/21. +// + +#import "XPMineFriendViewController.h" +///Third +#import +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" +///Model +#import "UserInfoModel.h" +///View +#import "XPMineFriendEmptyTableViewCell.h" +#import "XPMineFriendTableViewCell.h" +#import "SessionViewController.h" +///P +#import "XPMineFriendPresenter.h" +#import "XPMineFriendProtocol.h" + +@interface XPMineFriendViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSArray *datasource; +///当前页数 +@property (nonatomic,assign) int page; +///更多数据 +@property (nonatomic,assign) BOOL hasNoMoreData; +@end + +@implementation XPMineFriendViewController + +- (__kindof id)createPresenter { + return [[XPMineFriendPresenter alloc] init]; +} + +- (BOOL)isHiddenNavBar { + return self.type == ContactUseingType_In_Room ? YES : NO; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + NSArray * array = [[NIMSDK sharedSDK].userManager myFriends]; + if (array.count > 0) { + NSMutableArray * uids = [NSMutableArray array]; + for (int i = 0; i< array.count; i++) { + NIMUser * user = [array safeObjectAtIndex1:i]; + [uids addObject:user.userId]; + } + [self.presenter getUserListInfo:uids]; + } + [self initSubViews]; + [self initSubViewConstraints]; +} +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return self.datasource.count > 0 ? 65 : self.type == ContactUseingType_In_Room ? (KScreenHeight - kNavigationHeight) : (KScreenHeight - 200 - kNavigationHeight); +} + + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPMineFriendTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineFriendTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineFriendTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineFriendTableViewCell class])]; + } + cell.userInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + return cell; + } + + XPMineFriendEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineFriendEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineFriendEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineFriendEmptyTableViewCell class])]; + } + cell.emptyTitle = YMLocalizedString(@"XPMineFriendViewController0"); + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + UserInfoModel * userInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + if (self.type == ContactUseingType_Share) { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineFriendViewController:didSelectItem:)]) { + [self.delegate xPMineFriendViewController:self didSelectItem:userInfo]; + } + } else if(self.type == ContactUseingType_In_Room) { + SessionViewController * sessionVC = [[SessionViewController alloc] initWithSession:[NIMSession session:[NSString stringWithFormat:@"%ld", userInfo.uid] type:NIMSessionTypeP2P]]; + sessionVC.openType = SessionListOpenTypeRoom; + CATransition *transition = [CATransition animation]; + transition.duration = 0.3f; + transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; + transition.type = kCATransitionPush; + transition.subtype = kCATransitionFromRight; + [self.mainController.view.layer addAnimation:transition forKey:nil]; + [self.mainController addChildViewController:sessionVC]; + [self.mainController.view addSubview:sessionVC.view]; + } else { + SessionViewController * sessionVC = [[SessionViewController alloc] initWithSession:[NIMSession session:[NSString stringWithFormat:@"%ld", userInfo.uid] type:NIMSessionTypeP2P]]; + sessionVC.openType = SessionListOpenTypeRoom; + [self.navigationController pushViewController:sessionVC animated:YES]; + } + } +} + +#pragma mark - XPMineFriendProtocol +- (void)getUserListInfoSuccess:(NSArray *)list { + self.datasource = list; + [self.tableView reloadData]; +} + +#pragma mark - JXCategoryListContentViewDelegate +- (UIView *)listView { + return self.view; +} + +#pragma mark - Getters And Setters + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + _tableView.rowHeight = 65; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPMineFriendEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineFriendEmptyTableViewCell class])]; + [_tableView registerClass:[XPMineFriendTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineFriendTableViewCell class])]; + } + return _tableView; +} +@end diff --git a/YuMi/Modules/YMMine/View/Friend/XPMineShareViewController.h b/YuMi/Modules/YMMine/View/Friend/XPMineShareViewController.h new file mode 100644 index 00000000..81db222d --- /dev/null +++ b/YuMi/Modules/YMMine/View/Friend/XPMineShareViewController.h @@ -0,0 +1,24 @@ +// +// YMMineShareViewController.h +// YUMI +// +// Created by YUMI on 2022/6/27. +// + +#import "BaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN +@class XPShareInfoModel; + +typedef NS_ENUM(NSInteger, MineShareType) { + ///分享动态 + MineShareType_Monents = 1, +}; + +@interface XPMineShareViewController : BaseViewController +@property (nonatomic,strong) XPShareInfoModel *shareInfo; +///分享的类型 +@property (nonatomic,assign) MineShareType shareType; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Friend/XPMineShareViewController.m b/YuMi/Modules/YMMine/View/Friend/XPMineShareViewController.m new file mode 100644 index 00000000..3021430c --- /dev/null +++ b/YuMi/Modules/YMMine/View/Friend/XPMineShareViewController.m @@ -0,0 +1,225 @@ +// +// YMMineShareViewController.m +// YUMI +// +// Created by YUMI on 2022/6/27. +// + +#import "XPMineShareViewController.h" +///Third +#import +#import +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "TTPopup.h" +///Model +#import "XPShareInfoModel.h" +#import "FansInfoModel.h" +#import "UserInfoModel.h" +#import "AttachMentModel.h" +#import "ContentShareMonentsModel.h" +///View +#import "SessionViewController.h" +#import "SessionListViewController.h" +#import "XPMineFriendViewController.h" +#import "XPMineAttentionViewController.h" +#import "XPMineFansViewController.h" +@interface XPMineShareViewController () +///标题 +@property (nonatomic,strong) NSArray *titles; +///滑块 +@property (nonatomic,strong) JXCategoryTitleView *titleView; +@property (nonatomic, strong) JXCategoryListContainerView *listContainerView; +///好友 +@property (nonatomic,strong) XPMineFriendViewController *friendVC; +///关注 +@property (nonatomic,strong) XPMineAttentionViewController *attentionVC; +///粉丝 +@property (nonatomic,strong) XPMineFansViewController *fansVC; +///回话的id +@property (nonatomic,copy) NSString *sessionId; +@end + +@implementation XPMineShareViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMineShareViewController0"); + [self.view addSubview:self.titleView]; + [self.view addSubview:self.listContainerView]; +} + +- (void)initSubViewConstraints { + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.height.mas_equalTo(50); + }]; + + [self.listContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.top.mas_equalTo(self.titleView.mas_bottom); + }]; +} + +- (void)sendCustomMessage:(AttachmentModel *)attachment { + NIMMessage *message = [[NIMMessage alloc]init]; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachment; + message.messageObject = object; + NIMSessionType sessionType = NIMSessionTypeP2P; + //构造会话 + NIMSession *session = [NIMSession session:self.sessionId type:sessionType]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; +} + +- (void)shareToUser:(NSString *)nick { + NSString * title; + AttachmentModel * attachment = [[AttachmentModel alloc] init]; + switch (self.shareType) { + case MineShareType_Monents: + { + title = [NSString stringWithFormat:@"确认分享给%@吗?", nick]; + attachment.first = CustomMessageType_Monents; + attachment.second = Custom_Message_Sub_Monents_Share; + ContentShareMonentsModel * shareInfo = [[ContentShareMonentsModel alloc] init]; + shareInfo.imageUrl = self.shareInfo.imageUrl; + shareInfo.nick = self.shareInfo.nick; + shareInfo.content = self.shareInfo.content; + shareInfo.dynamicId= self.shareInfo.dynamicId; + shareInfo.routerValue = self.shareInfo.dynamicId; + shareInfo.routerType = 50; + attachment.data = shareInfo.model2dictionary; + } + + break; + + default: + break; + } + if (title.length > 0) { + [TTPopup alertWithMessage:title confirmHandler:^{ + [self sendCustomMessage:attachment]; + } cancelHandler:^{ + + }]; + } +} + +#pragma mark - JXCategoryListContainerViewDelegate +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { + return self.titles.count; +} + +// 根据下标 index 返回对应遵守并实现 `JXCategoryListContentViewDelegate` 协议的列表实例 +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { + if (index == 0) { + return self.friendVC; + } else if(index == 1) { + return self.fansVC; + } else { + return self.attentionVC; + } +} + +#pragma mark - XPMineAttentionViewControllerDelegate +///点击了关注的某个人 +- (void)xPMineAttentionViewController:(XPMineAttentionViewController *)viewController didSelectItem:(FansInfoModel *)userInfo { + self.sessionId = userInfo.uid; + [self shareToUser:userInfo.nick]; +} + +#pragma mark - XPMineFansViewControllerDelegate +///点击了粉丝 +- (void)xPMineFansViewController:(XPMineFansViewController *)view didSelectItem:(FansInfoModel *)userInfo { + self.sessionId = userInfo.uid; + [self shareToUser:userInfo.nick]; +} + +#pragma mark - XPMineFriendViewControllerDelegate +///点击了好友 +- (void)xPMineFriendViewController:(XPMineFriendViewController *)viewController didSelectItem:(UserInfoModel *)userInfo { + self.sessionId = [NSString stringWithFormat:@"%ld", userInfo.uid]; + [self shareToUser:userInfo.nick]; +} + +#pragma mark - Getters And Setters + +- (JXCategoryListContainerView *)listContainerView { + if (!_listContainerView) { + _listContainerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; + _listContainerView.listCellBackgroundColor = [UIColor clearColor]; + } + return _listContainerView; +} + +- (NSArray *)titles { + if (!_titles) { + _titles = @[@"好友",@"粉丝", YMLocalizedString(@"XPMineShareViewController4")]; + } + return _titles; +} + +- (JXCategoryTitleView *)titleView { + if (!_titleView) { + _titleView = [[JXCategoryTitleView alloc] initWithFrame:CGRectZero]; + _titleView.backgroundColor =[UIColor clearColor]; + _titleView.titleColor = UIColorFromRGB(0x444444); + _titleView.titleSelectedColor = [DJDKMIMOMColor mainTextColor]; + _titleView.titleFont = [UIFont systemFontOfSize:16 weight:UIFontWeightSemibold]; + _titleView.titleSelectedFont = [UIFont systemFontOfSize:18 weight:UIFontWeightHeavy]; + _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; + _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; + _titleView.averageCellSpacingEnabled = NO; + _titleView.defaultSelectedIndex = 0; + _titleView.titles = self.titles; + _titleView.delegate = self; + _titleView.cellSpacing = 0; + _titleView.cellWidth = (CGFloat)KScreenWidth/ 3.0; + _titleView.listContainer = self.listContainerView; + + JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init]; + lineView.indicatorColor = [DJDKMIMOMColor appMainColor]; + lineView.indicatorWidth = 8.f; + lineView.indicatorHeight = 4.f; + lineView.indicatorCornerRadius = 2.f; + _titleView.indicators = @[lineView]; + } + return _titleView; +} + +- (XPMineAttentionViewController *)attentionVC { + if (!_attentionVC) { + _attentionVC = [[XPMineAttentionViewController alloc] init]; + _attentionVC.type = ContactUseingType_Share; + _attentionVC.delegate = self; + } + return _attentionVC; +} + +- (XPMineFriendViewController *)friendVC { + if (!_friendVC) { + _friendVC = [[XPMineFriendViewController alloc] init]; + _friendVC.type = ContactUseingType_Share; + _friendVC.delegate = self; + } + return _friendVC; +} + +- (XPMineFansViewController *)fansVC { + if (!_fansVC) { + _fansVC = [[XPMineFansViewController alloc] init]; + _fansVC.type = ContactUseingType_Share; + _fansVC.delegate = self; + } + return _fansVC; +} +@end diff --git a/YuMi/Modules/YMMine/View/Friend/XPRoomHalfMessageView.h b/YuMi/Modules/YMMine/View/Friend/XPRoomHalfMessageView.h new file mode 100644 index 00000000..0faa3948 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Friend/XPRoomHalfMessageView.h @@ -0,0 +1,20 @@ +// +// YMRoomHalfMessageView.h +// YUMI +// +// Created by YUMI on 2022/5/29. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomHalfMessageView : UIView +///私聊的用户ID +@property (nonatomic,copy) NSString *chatUserId; + + +- (instancetype)initWithFrame:(CGRect)frame controller:(UIViewController *)controller; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Friend/XPRoomHalfMessageView.m b/YuMi/Modules/YMMine/View/Friend/XPRoomHalfMessageView.m new file mode 100644 index 00000000..c9d12dda --- /dev/null +++ b/YuMi/Modules/YMMine/View/Friend/XPRoomHalfMessageView.m @@ -0,0 +1,95 @@ +// +// YMRoomHalfMessageView.m +// YUMI +// +// Created by YUMI on 2022/5/29. +// + +#import "XPRoomHalfMessageView.h" +///Third +#import +#import "YUMIMacroUitls.h" +#import "BaseNavigationController.h" +#import "XCCurrentVCStackManager.h" +///View +#import "XPMineContactViewController.h" + +UIKIT_EXTERN NSString * kRoomChatPushViewKey; + +@interface XPRoomHalfMessageView () +///点击消失的View +@property (nonatomic,strong) UIView *dismissView; +///联系人的VC +@property (nonatomic,strong) XPMineContactViewController *contactVC; +@property (nonatomic,weak) UIViewController *roomVC; +@end + +@implementation XPRoomHalfMessageView + + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + self.tag = 888; + [self initSubViews]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dismissViewTap) name:kRoomChatPushViewKey object:nil]; + } + return self; +} + +- (instancetype)initWithFrame:(CGRect)frame controller:(UIViewController *)controller { + self = [super initWithFrame:frame]; + if (self) { + self.tag = 888; + self.roomVC = controller; + [self initSubViews]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dismissViewTap) name:kRoomChatPushViewKey object:nil]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + XPMineContactViewController * vc=[XPMineContactViewController new]; + CAShapeLayer * layer = [CAShapeLayer layer]; + UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, kHalfScreenHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)]; + layer.path = path.CGPath; + vc.view.layer.masksToBounds = YES; + vc.view.layer.mask = layer;; + vc.view.frame = CGRectMake(0, KScreenHeight - kHalfScreenHeight, KScreenWidth, kHalfScreenHeight); + self.contactVC = vc; + + + [self addSubview:self.dismissView]; + [self addSubview:self.contactVC.view]; + [self.roomVC addChildViewController:vc]; +} + +#pragma mark - Event Response +- (void)dismissViewTap { + [self removeFromSuperview]; + [self.contactVC removeFromParentViewController]; + [self.contactVC.view removeFromSuperview]; + self.contactVC = nil; + [[NSNotificationCenter defaultCenter] postNotificationName:@"roomMessageTabelViewStopScroll" object:nil]; +} + +#pragma mark - Getters And Setters +- (void)setChatUserId:(NSString *)chatUserId { + _chatUserId = chatUserId; + self.contactVC.chatUserId = chatUserId; +} + + + +- (UIView *)dismissView { + if (!_dismissView) { + _dismissView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight - kHalfScreenHeight)]; + _dismissView.backgroundColor = [UIColor clearColor]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissViewTap)]; + [_dismissView addGestureRecognizer:tap]; + _dismissView.tag = 8888; + } + return _dismissView; +} +@end diff --git a/YuMi/Modules/YMMine/View/Friend/XPRoomMessageBubbleView.h b/YuMi/Modules/YMMine/View/Friend/XPRoomMessageBubbleView.h new file mode 100644 index 00000000..d49bf4a9 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Friend/XPRoomMessageBubbleView.h @@ -0,0 +1,26 @@ +// +// YMRoomMessageBubbleView.h +// YUMI +// +// Created by YUMI on 2022/6/14. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class NIMRecentSession, XPRoomMessageBubbleView; +@protocol XPRoomMessageBubbleViewDelegate + +- (void)xPRoomMessageBubbleView:(XPRoomMessageBubbleView *)view didSelectSession:(NIMRecentSession *)session; + +@end + +@interface XPRoomMessageBubbleView : UIView + +- (void)addRecentSession:(NIMRecentSession *)session; +///代理 +@property (nonatomic,weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Friend/XPRoomMessageBubbleView.m b/YuMi/Modules/YMMine/View/Friend/XPRoomMessageBubbleView.m new file mode 100644 index 00000000..582379be --- /dev/null +++ b/YuMi/Modules/YMMine/View/Friend/XPRoomMessageBubbleView.m @@ -0,0 +1,219 @@ +// +// YMRoomMessageBubbleView.m +// YUMI +// +// Created by YUMI on 2022/6/14. +// + +#import "XPRoomMessageBubbleView.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "NIMMessageUtils.h" +#import "NSArray+Safe.h" + + +@interface XPRoomMessageBubbleCollectionViewCell : UICollectionViewCell +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///内容 +@property (nonatomic,strong) UILabel *contentLabel; +///回话 +@property (nonatomic,strong) NIMRecentSession *session; +@end + +@implementation XPRoomMessageBubbleCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.nickLabel]; + [self.contentView addSubview:self.contentLabel]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(4); + make.left.mas_equalTo(4); + make.width.height.mas_equalTo(25); + }]; + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatarImageView.mas_right).mas_offset(4); + make.right.mas_equalTo(-4); + make.centerY.mas_equalTo(self.avatarImageView.mas_centerY); + }]; + [self.contentLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-4); + make.left.mas_equalTo(4); + make.top.mas_equalTo(self.avatarImageView.mas_bottom).mas_offset(4); + }]; +} +#pragma mark - Getters And Setters +- (void)setSession:(NIMRecentSession *)session { + _session = session; + if (_session) { + NIMUser *user = [[NIMSDK sharedSDK].userManager userInfo:session.session.sessionId]; + NSString *avatarUrl = user.userInfo.avatarUrl; + self.avatarImageView.imageUrl = avatarUrl; + self.nickLabel.text = user.userInfo.nickName; + [self.nickLabel sizeToFit]; + self.contentLabel.text = [NIMMessageUtils messageContent:session.lastMessage]; + } +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 25/2; + _avatarImageView.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + } + return _avatarImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightBold]; + _nickLabel.textColor = [DJDKMIMOMColor appMainColor]; + } + return _nickLabel; +} + +- (UILabel *)contentLabel { + if (!_contentLabel) { + _contentLabel = [[UILabel alloc] init]; + _contentLabel.font = [UIFont systemFontOfSize:10]; + _contentLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _contentLabel; +} + +@end + +@interface XPRoomMessageBubbleView () +///背景图 +@property (nonatomic,strong) UIImageView *backImageView; +///列表 +@property (nonatomic,strong) UICollectionView *collectionView; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +@end + + +@implementation XPRoomMessageBubbleView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Public Method +- (void)addRecentSession:(NIMRecentSession *)session { + [NSObject cancelPreviousPerformRequestsWithTarget:self]; + [self.datasource addObject:session]; + [self.collectionView reloadData]; + if (self.datasource.count > 0) { + [self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForRow:self.datasource.count - 1 inSection:0] atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:YES]; + } + [self performSelector:@selector(animationFinish) withObject:nil afterDelay:3]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + [self addSubview:self.backImageView]; + [self addSubview:self.collectionView]; +} + +- (void)initSubViewConstraints { + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; + + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self); + make.bottom.mas_equalTo(self).offset(-5); + }]; +} + +- (void)animationFinish { + [self.datasource removeAllObjects]; + [self removeFromSuperview]; +} + +#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPRoomMessageBubbleCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPRoomMessageBubbleCollectionViewCell class]) forIndexPath:indexPath]; + cell.session = [self.datasource safeObjectAtIndex1:indexPath.row]; + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomMessageBubbleView:didSelectSession:)]) { + NIMRecentSession * session = [self.datasource safeObjectAtIndex1:indexPath.row]; + [self.delegate xPRoomMessageBubbleView:self didSelectSession:session]; + [self animationFinish]; + } +} + +#pragma mark - Getters And Setters +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.image = [UIImage imageNamed:@"room_message_tips_bg"]; + } + return _backImageView; +} + +- (UICollectionView *)collectionView{ + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.itemSize = CGSizeMake(87, 48); + layout.minimumLineSpacing = 0.1; + layout.minimumInteritemSpacing = 0.1; + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.backgroundColor = [UIColor clearColor]; + [_collectionView registerClass:[XPRoomMessageBubbleCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPRoomMessageBubbleCollectionViewCell class])]; + } + return _collectionView; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/Friend/YUMIChamberCommunicationIntumesceRegard.h b/YuMi/Modules/YMMine/View/Friend/YUMIChamberCommunicationIntumesceRegard.h deleted file mode 100644 index 8aee4be7..00000000 --- a/YuMi/Modules/YMMine/View/Friend/YUMIChamberCommunicationIntumesceRegard.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YMRoomMessageBubbleView.h -// YUMI -// -// Created by YUMI on 2022/6/14. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class NIMRecentSession, YUMIChamberCommunicationIntumesceRegard; -@protocol FBCChamberCommunicationBubbleRegardRepresendtation - -- (void)yUMIChamberCommunictowardsionIntumesceRegard:(YUMIChamberCommunicationIntumesceRegard *)view didSelectSession:(NIMRecentSession *)session; - -@end - -@interface YUMIChamberCommunicationIntumesceRegard : UIView - -- (void)accelertowardseLtowardsterdaInterlocution:(NIMRecentSession *)session; -@property (nonatomic,weak) id delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Friend/YUMIChamberCommunicationIntumesceRegard.m b/YuMi/Modules/YMMine/View/Friend/YUMIChamberCommunicationIntumesceRegard.m deleted file mode 100644 index 5e1225c1..00000000 --- a/YuMi/Modules/YMMine/View/Friend/YUMIChamberCommunicationIntumesceRegard.m +++ /dev/null @@ -1,210 +0,0 @@ -// -// YMRoomMessageBubbleView.m -// YUMI -// -// Created by YUMI on 2022/6/14. -// - -#import "YUMIChamberCommunicationIntumesceRegard.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "NEMCCommunicationUtils.h" -#import "NSArray+Safe.h" - - -@interface YUMIChamberCommunicationIntumesceAssembletionRegardElement : UICollectionViewCell -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UILabel *satisfperformanceSequencignation; -@property (nonatomic,strong) NIMRecentSession *session; -@end - -@implementation YUMIChamberCommunicationIntumesceAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.monicerSequencignation]; - [self.contentView addSubview:self.satisfperformanceSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(4); - make.left.mas_equalTo(4); - make.width.height.mas_equalTo(25); - }]; - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).mas_offset(4); - make.right.mas_equalTo(-4); - make.centerY.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY); - }]; - [self.satisfperformanceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-4); - make.left.mas_equalTo(4); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_bottom).mas_offset(4); - }]; -} -#pragma mark - Getters And Setters -- (void)setSession:(NIMRecentSession *)session { - _session = session; - if (_session) { - NIMUser *user = [[NIMSDK sharedSDK].userManager userInfo:session.session.sessionId]; - NSString *avatarUrl = user.userInfo.avatarUrl; - self.intelligenceportraitIndicateRegard.imageUrl = avatarUrl; - self.monicerSequencignation.text = user.userInfo.nickName; - [self.monicerSequencignation sizeToFit]; - self.satisfperformanceSequencignation.text = [NEMCCommunicationUtils communicationSatisfperformance:session.lastMessage]; - } -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 25/2; - _intelligenceportraitIndicateRegard.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:10 weight:UIFontWeightBold]; - _monicerSequencignation.textColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - } - return _monicerSequencignation; -} - -- (UILabel *)satisfperformanceSequencignation { - if (!_satisfperformanceSequencignation) { - _satisfperformanceSequencignation = [[UILabel alloc] init]; - _satisfperformanceSequencignation.font = [UIFont systemFontOfSize:10]; - _satisfperformanceSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _satisfperformanceSequencignation; -} - -@end - -@interface YUMIChamberCommunicationIntumesceRegard () -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) UICollectionView *collectionView; -@property (nonatomic,strong) NSMutableArray *datasource; -@end - - -@implementation YUMIChamberCommunicationIntumesceRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Public Method -- (void)accelertowardseLtowardsterdaInterlocution:(NIMRecentSession *)session { - [NSObject cancelPreviousPerformRequestsWithTarget:self]; - [self.datasource addObject:session]; - [self.collectionView reloadData]; - if (self.datasource.count > 0) { - [self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForRow:self.datasource.count - 1 inSection:0] atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:YES]; - } - [self performSelector:@selector(brectifynessAccomplish) withObject:nil afterDelay:3]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - [self addSubview:self.encourageIndicateRegard]; - [self addSubview:self.collectionView]; -} - -- (void)initChildLyRestrictions { - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(0); - }]; - - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.bottom.mas_equalTo(self).offset(-5); - }]; -} - -- (void)brectifynessAccomplish { - [self.datasource removeAllObjects]; - [self removeFromSuperview]; -} - -#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMIChamberCommunicationIntumesceAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIChamberCommunicationIntumesceAssembletionRegardElement class]) forIndexPath:indexPath]; - cell.session = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberCommunictowardsionIntumesceRegard:didSelectSession:)]) { - NIMRecentSession * session = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - [self.delegate yUMIChamberCommunictowardsionIntumesceRegard:self didSelectSession:session]; - [self brectifynessAccomplish]; - } -} - -#pragma mark - Getters And Setters -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_msg_tips_background"]; - } - return _encourageIndicateRegard; -} - -- (UICollectionView *)collectionView{ - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.itemSize = CGSizeMake(87, 48); - layout.minimumLineSpacing = 0.1; - layout.minimumInteritemSpacing = 0.1; - layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.backgroundColor = [UIColor clearColor]; - [_collectionView registerClass:[YUMIChamberCommunicationIntumesceAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIChamberCommunicationIntumesceAssembletionRegardElement class])]; - } - return _collectionView; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/Friend/YUMIChamberHalfCommunicationRegard.h b/YuMi/Modules/YMMine/View/Friend/YUMIChamberHalfCommunicationRegard.h deleted file mode 100644 index e5ee5098..00000000 --- a/YuMi/Modules/YMMine/View/Friend/YUMIChamberHalfCommunicationRegard.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMRoomHalfMessageView.h -// YUMI -// -// Created by YUMI on 2022/5/29. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberHalfCommunicationRegard : UIView -@property (nonatomic,copy) NSString *chatConsumerId; - - -- (instancetype)initWithFrame:(CGRect)frame controller:(UIViewController *)controller; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Friend/YUMIChamberHalfCommunicationRegard.m b/YuMi/Modules/YMMine/View/Friend/YUMIChamberHalfCommunicationRegard.m deleted file mode 100644 index 0f823cdb..00000000 --- a/YuMi/Modules/YMMine/View/Friend/YUMIChamberHalfCommunicationRegard.m +++ /dev/null @@ -1,91 +0,0 @@ -// -// YMRoomHalfMessageView.m -// YUMI -// -// Created by YUMI on 2022/5/29. -// - -#import "YUMIChamberHalfCommunicationRegard.h" -#import -#import "YUMIMacroUitls.h" -#import "BaseNevigationGovernancer.h" -#import "XCCurrentVCStackExecutive.h" -#import "YUMIManeContactRegardGovernancer.h" - -UIKIT_EXTERN NSString * kRoomChatPushViewKey; - -@interface YUMIChamberHalfCommunicationRegard () -@property (nonatomic,strong) UIView *disappearRegard; -@property (nonatomic,strong) YUMIManeContactRegardGovernancer *contactVewC; -@property (nonatomic,weak) UIViewController *chamberVewC; -@end - -@implementation YUMIChamberHalfCommunicationRegard - - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - self.tag = 888; - [self initSubViews]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(prohibitiaplictowardsionearRegardBetowards) name:kRoomChatPushViewKey object:nil]; - } - return self; -} - -- (instancetype)initWithFrame:(CGRect)frame controller:(UIViewController *)controller { - self = [super initWithFrame:frame]; - if (self) { - self.tag = 888; - self.chamberVewC = controller; - [self initSubViews]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(prohibitiaplictowardsionearRegardBetowards) name:kRoomChatPushViewKey object:nil]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - YUMIManeContactRegardGovernancer * vc=[YUMIManeContactRegardGovernancer new]; - CAShapeLayer * layer = [CAShapeLayer layer]; - UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, kHalfScreenHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)]; - layer.path = path.CGPath; - vc.view.layer.masksToBounds = YES; - vc.view.layer.mask = layer;; - vc.view.frame = CGRectMake(0, KScreenHeight - kHalfScreenHeight, KScreenWidth, kHalfScreenHeight); - self.contactVewC = vc; - - - [self addSubview:self.disappearRegard]; - [self addSubview:self.contactVewC.view]; - [self.chamberVewC addChildViewController:vc]; -} - -#pragma mark - Event Response -- (void)prohibitiaplictowardsionearRegardBetowards { - [self removeFromSuperview]; - [self.contactVewC removeFromParentViewController]; - [self.contactVewC.view removeFromSuperview]; - self.contactVewC = nil; - [[NSNotificationCenter defaultCenter] postNotificationName:@"roomMessageTabelViewStopScroll" object:nil]; -} - -#pragma mark - Getters And Setters -- (void)setChatConsumerId:(NSString *)chatConsumerId { - _chatConsumerId = chatConsumerId; - self.contactVewC.chatConsumerId = chatConsumerId; -} - - - -- (UIView *)disappearRegard { - if (!_disappearRegard) { - _disappearRegard = [[UIView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight - kHalfScreenHeight)]; - _disappearRegard.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(prohibitiaplictowardsionearRegardBetowards)]; - [_disappearRegard addGestureRecognizer:tap]; - _disappearRegard.tag = 8888; - } - return _disappearRegard; -} -@end diff --git a/YuMi/Modules/YMMine/View/Friend/YUMIManeAssistantRegardGovernancer.h b/YuMi/Modules/YMMine/View/Friend/YUMIManeAssistantRegardGovernancer.h deleted file mode 100644 index 4fe40950..00000000 --- a/YuMi/Modules/YMMine/View/Friend/YUMIManeAssistantRegardGovernancer.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YMMineFriendViewController.h -// YUMI -// -// Created by YUMI on 2021/12/21. -// - -#import "MvpRegardGovernancer.h" -#import -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN -@class YUMIManeAssistantRegardGovernancer, ConsumerAbstractMatrix; -@protocol FBCManeFriendRegardGovernancerRepresendtation - -- (void)fBCManeFriconcludeRegardGovernancer:(YUMIManeAssistantRegardGovernancer *)viewController didSelectItem:(ConsumerAbstractMatrix *)userInfo; - -@end -@interface YUMIManeAssistantRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,assign) ContactUseingGenre type; -@property (nonatomic,weak) id delegate; - -@property (nonatomic, weak) UIViewController * mainGovernancer; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Friend/YUMIManeAssistantRegardGovernancer.m b/YuMi/Modules/YMMine/View/Friend/YUMIManeAssistantRegardGovernancer.m deleted file mode 100644 index dc64f9f7..00000000 --- a/YuMi/Modules/YMMine/View/Friend/YUMIManeAssistantRegardGovernancer.m +++ /dev/null @@ -1,148 +0,0 @@ -// -// YMMineFriendViewController.m -// YUMI -// -// Created by YUMI on 2021/12/21. -// - -#import "YUMIManeAssistantRegardGovernancer.h" -#import -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "ConsumerAbstractMatrix.h" -#import "YUMIManeAssistantDispossessTabulationRegardElement.h" -#import "YUMIManeAssistantTabulationRegardElement.h" -#import "InterlocutionRegardGovernancer.h" -#import "YUMIManeAssistantExternalizer.h" -#import "FBCManeFriendCeremony.h" - -@interface YUMIManeAssistantRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSArray *datasource; -@property (nonatomic,assign) int page; -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; -@end - -@implementation YUMIManeAssistantRegardGovernancer - -- (__kindof id)producePresimport { - return [[YUMIManeAssistantExternalizer alloc] init]; -} - -- (BOOL)isVeiledNevObstacle { - return self.type == ContactUseingGenre_In_Room ? YES : NO; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - NSArray * array = [[NIMSDK sharedSDK].userManager myFriends]; - if (array.count > 0) { - NSMutableArray * uids = [NSMutableArray array]; - for (int i = 0; i< array.count; i++) { - NIMUser * user = [array secureGroalTowardsIndictowardsrix1:i]; - [uids addObject:user.userId]; - } - [self.presimport acquireConsumerSttowardsementAbstract:uids]; - } - [self initSubViews]; - [self initChildLyRestrictions]; -} -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return self.datasource.count > 0 ? 65 : self.type == ContactUseingGenre_In_Room ? (KScreenHeight - kNavigationHeight) : (KScreenHeight - 200 - kNavigationHeight); -} - - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMIManeAssistantTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeAssistantTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeAssistantTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeAssistantTabulationRegardElement class])]; - } - cell.userInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; - } - - YUMIManeAssistantDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeAssistantDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeAssistantDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeAssistantDispossessTabulationRegardElement class])]; - } - cell.emptyTitle = YMLocalizedString(@"YUMI_Mine_Friend_View_Controller_0"); - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.datasource.count > 0) { - ConsumerAbstractMatrix * userInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (self.type == ContactUseingGenre_Share) { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeFriconcludeRegardGovernancer:didSelectItem:)]) { - [self.delegate fBCManeFriconcludeRegardGovernancer:self didSelectItem:userInfo]; - } - } else if(self.type == ContactUseingGenre_In_Room) { - InterlocutionRegardGovernancer * sessionVC = [[InterlocutionRegardGovernancer alloc] initWithSession:[NIMSession session:[NSString stringWithFormat:@"%ld", userInfo.uid] type:NIMSessionTypeP2P]]; - sessionVC.unfoildGenre = InterlocutionStatementOpenGenreRoom; - CATransition *transition = [CATransition animation]; - transition.duration = 0.3f; - transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; - transition.type = kCATransitionPush; - transition.subtype = kCATransitionFromRight; - [self.mainGovernancer.view.layer addAnimation:transition forKey:nil]; - [self.mainGovernancer addChildViewController:sessionVC]; - [self.mainGovernancer.view addSubview:sessionVC.view]; - } else { - InterlocutionRegardGovernancer * sessionVC = [[InterlocutionRegardGovernancer alloc] initWithSession:[NIMSession session:[NSString stringWithFormat:@"%ld", userInfo.uid] type:NIMSessionTypeP2P]]; - sessionVC.unfoildGenre = InterlocutionStatementOpenGenreRoom; - [self.navigationController pushViewController:sessionVC animated:YES]; - } - } -} - -#pragma mark - FBCManeFriendCeremony -- (void)acquireConsumerSttowardsementAbstractAccomplishment:(NSArray *)list { - self.datasource = list; - [self.tableView reloadData]; -} - -#pragma mark - JXCategoryListContentViewDelegate -- (UIView *)listView { - return self.view; -} - -#pragma mark - Getters And Setters - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - _tableView.rowHeight = 65; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIManeAssistantDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeAssistantDispossessTabulationRegardElement class])]; - [_tableView registerClass:[YUMIManeAssistantTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeAssistantTabulationRegardElement class])]; - } - return _tableView; -} -@end diff --git a/YuMi/Modules/YMMine/View/Friend/YUMIManeConsiderationRegardGovernancer.h b/YuMi/Modules/YMMine/View/Friend/YUMIManeConsiderationRegardGovernancer.h deleted file mode 100644 index 609fab7c..00000000 --- a/YuMi/Modules/YMMine/View/Friend/YUMIManeConsiderationRegardGovernancer.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YMMineAttentionViewController.h -// YUMI -// -// Created by YUMI on 2021/12/21. -// - -#import "MvpRegardGovernancer.h" -#import -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -@class YUMIManeConsiderationRegardGovernancer, FanaticsAbstractMatrix; -@protocol FBCManeConsiderationRegardGovernancerRepresendtation - -- (void)fBCManeConsidertowardsionRegardGovernancer:(YUMIManeConsiderationRegardGovernancer *)viewController didSelectItem:(FanaticsAbstractMatrix *)userInfo; - -@end -@interface YUMIManeConsiderationRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,assign) ContactUseingGenre type; -@property (nonatomic,weak) id delegate; - -@property (nonatomic, weak) UIViewController * mainGovernancer; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Friend/YUMIManeConsiderationRegardGovernancer.m b/YuMi/Modules/YMMine/View/Friend/YUMIManeConsiderationRegardGovernancer.m deleted file mode 100644 index 080ece12..00000000 --- a/YuMi/Modules/YMMine/View/Friend/YUMIManeConsiderationRegardGovernancer.m +++ /dev/null @@ -1,231 +0,0 @@ -// -// YMMineAttentionViewController.m -// YUMI -// -// Created by YUMI on 2021/12/21. -// - -#import "YUMIManeConsiderationRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "ClientDisposition.h" -#import "FanaticsAbstractMatrix.h" -#import "YUMIManeConsiderationTabulationRegardElement.h" -#import "YUMIManeAssistantDispossessTabulationRegardElement.h" -#import "YUMIManeAssistantDispossessTabulationRegardElement.h" -#import "YUMIManeConsiderationTabulationRegardElement.h" -#import "YUMIManeConsiderationExternalizer.h" -#import "FBCManeConsiderationCeremony.h" -#import "ChamberHostRepresendtation.h" -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -#import "YUMIManeSimpleConsumerAbstractRegardGovernancer.h" -#import "YUMIChamberRegardGovernancer.h" -#import "InterlocutionRegardGovernancer.h" - -@interface YUMIManeConsiderationRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,assign) int page; -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; -@end - -@implementation YUMIManeConsiderationRegardGovernancer - -- (BOOL)isVeiledNevObstacle { - return self.type == ContactUseingGenre_In_Room ? YES : NO; -} - -- (YUMIManeConsiderationExternalizer *)producePresimport { - return [[YUMIManeConsiderationExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initIntelligencerGrantedTerminalerRrfresh]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - 下拉刷新 -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - - [self intelligenceerRenovtowardseh]; -} - -#pragma mark - 刷新的fangfa -- (void)intelligenceerRenovtowardseh { - self.page = 1; - [self.presimport acquireConsumerConsidertowardsionSttowardsement:self.page pageSize:20 state:0]; -} - -- (void)footerRenovtowardseh { - if (self.hasNoFurthaerAtoloudspeaker) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Mine_Attention_View_Controller_0")]; - return; - } - self.page++; - [self.presimport acquireConsumerConsidertowardsionSttowardsement:self.page pageSize:20 state:1]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Mine_Attention_View_Controller_1"); - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -#pragma mark - FBCManeConsiderationCeremony -- (void)acquireConsumerConsidertowardsionSttowardsementAccomplishment:(NSArray *)array state:(int)state { - if (state == 0) { - [self.datasource removeAllObjects]; - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } - if (array.count > 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - [self.datasource addObjectsFromArray:array]; - } else { - self.hasNoFurthaerAtoloudspeaker = YES; - [self.tableView.mj_footer endRefreshingWithNoMoreData]; - } - [self.tableView reloadData]; -} - -- (void)acquireConsumerConsidertowardsionSttowardsementFlunk:(int)state { - if (state == 0) { - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } -} -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return self.datasource.count > 0 ? 65 : self.type == ContactUseingGenre_In_Room ? (KScreenHeight - kNavigationHeight) : (KScreenHeight - 200 - kNavigationHeight); -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMIManeConsiderationTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeConsiderationTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeConsiderationTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeConsiderationTabulationRegardElement class])]; - } - cell.delegate = self; - FanaticsAbstractMatrix * fanaticsAbstract = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - fanaticsAbstract.useingType = self.type; - cell.fanaticsAbstract = fanaticsAbstract; - return cell; - } - - YUMIManeAssistantDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeAssistantDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeAssistantDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeAssistantDispossessTabulationRegardElement class])]; - } - cell.emptyTitle = YMLocalizedString(@"YUMI_Mine_Attention_View_Controller_2"); - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.datasource.count > 0) { - FanaticsAbstractMatrix * fanaticsAbstractMatrix = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (self.type == ContactUseingGenre_In_Room) { - InterlocutionRegardGovernancer * sessionVC = [[InterlocutionRegardGovernancer alloc] initWithSession:[NIMSession session:fanaticsAbstractMatrix.uid type:NIMSessionTypeP2P]]; - sessionVC.unfoildGenre = InterlocutionStatementOpenGenreRoom; - CATransition *transition = [CATransition animation]; - transition.duration = 0.3f; - transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; - transition.type = kCATransitionPush; - transition.subtype = kCATransitionFromRight; - [self.mainGovernancer.view.layer addAnimation:transition forKey:nil]; - [self.mainGovernancer addChildViewController:sessionVC]; - [self.mainGovernancer.view addSubview:sessionVC.view]; - } else if(self.type == ContactUseingGenre_Share){ - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeConsidertowardsionRegardGovernancer:didSelectItem:)]) { - [self.delegate fBCManeConsidertowardsionRegardGovernancer:self didSelectItem:fanaticsAbstractMatrix]; - } - } else { - - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMIManeConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = fanaticsAbstractMatrix.uid.integerValue; - [self.navigationController pushViewController:userInfoVC animated:YES]; - }else{ - YUMIManeSimpleConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeSimpleConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = fanaticsAbstractMatrix.uid.integerValue; - [self.navigationController pushViewController:userInfoVC animated:YES]; - } - } - } -} - -#pragma mark - FBCManeConsiderationTabulationViweElementRepresendtation -- (void)fBCManeConsidertowardsionTarbsultowardsionViweElement:(YUMIManeConsiderationTabulationRegardElement *)view findUser:(NSString *)uid { - - [self.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj isKindOfClass:[YUMIChamberRegardGovernancer class]]) { - [self.navigationController popToRootViewControllerAnimated:NO]; - YUMIChamberRegardGovernancer * rooomVC = obj; - [rooomVC exitRoom]; - *stop = YES; - } - }]; - [YUMIChamberRegardGovernancer unfoildChamber:uid viewController:self]; -} - -#pragma mark - JXCategoryListContentViewDelegate -- (UIView *)listView { - return self.view; -} - -#pragma mark - Getters And Setters - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - _tableView.rowHeight = 65; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIManeAssistantDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeAssistantDispossessTabulationRegardElement class])]; - [_tableView registerClass:[YUMIManeConsiderationTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeConsiderationTabulationRegardElement class])]; - } - return _tableView; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Friend/YUMIManeContactRegardGovernancer.h b/YuMi/Modules/YMMine/View/Friend/YUMIManeContactRegardGovernancer.h deleted file mode 100644 index ab32a7ed..00000000 --- a/YuMi/Modules/YMMine/View/Friend/YUMIManeContactRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineContactViewController.h -// YUMI -// -// Created by YUMI on 2022/5/29. -// - -#import "BaseRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeContactRegardGovernancer : BaseRegardGovernancer -@property (nonatomic,copy) NSString *chatConsumerId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Friend/YUMIManeContactRegardGovernancer.m b/YuMi/Modules/YMMine/View/Friend/YUMIManeContactRegardGovernancer.m deleted file mode 100644 index 4a4adccf..00000000 --- a/YuMi/Modules/YMMine/View/Friend/YUMIManeContactRegardGovernancer.m +++ /dev/null @@ -1,177 +0,0 @@ -// -// YMMineContactViewController.m -// YUMI -// -// Created by YUMI on 2022/5/29. -// - -#import "YUMIManeContactRegardGovernancer.h" -#import -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "InterlocutionRegardGovernancer.h" -#import "InterlocutionStatementRegardGovernancer.h" -#import "YUMIManeAssistantRegardGovernancer.h" -#import "YUMIManeConsiderationRegardGovernancer.h" -#import "YUMIManeFanaticsRegardGovernancer.h" -@interface YUMIManeContactRegardGovernancer () -@property (nonatomic,strong) NSArray *titles; -@property (nonatomic,strong) JXCategoryTitleView *titleView; -@property (nonatomic, strong) JXCategoryListContainerView *listContainerView; -@property (nonatomic,strong) InterlocutionStatementRegardGovernancer *interlocutionStatementVewC; -@property (nonatomic,strong) YUMIManeAssistantRegardGovernancer *friendVewC; -@property (nonatomic,strong) YUMIManeConsiderationRegardGovernancer *considerationVewC; -@property (nonatomic,strong) YUMIManeFanaticsRegardGovernancer *fanaticsVewC; -@end - -@implementation YUMIManeContactRegardGovernancer - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.titleView]; - [self.view addSubview:self.listContainerView]; - -} - -- (void)initChildLyRestrictions { - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.height.mas_equalTo(50); - }]; - - [self.listContainerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.top.mas_equalTo(self.titleView.mas_bottom); - }]; -} - - -#pragma mark - JXCategoryListContainerViewDelegate -- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { - return self.titles.count; -} - -- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { - if (index == 0) { - return self.interlocutionStatementVewC; - }else if (index == 1) { - return self.friendVewC; - } else if(index == 2) { - return self.fanaticsVewC; - } else { - return self.considerationVewC; - } -} - -#pragma mark - Getters And Setters -- (void)setChatConsumerId:(NSString *)chatConsumerId { - _chatConsumerId = chatConsumerId; - if (_chatConsumerId) { - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - NIMSession *recentSession = [NIMSession session:self.chatConsumerId type:NIMSessionTypeP2P]; - InterlocutionRegardGovernancer * sessionVC =[[InterlocutionRegardGovernancer alloc] initWithSession:recentSession]; - sessionVC.unfoildGenre = InterlocutionStatementOpenGenreRoom; - CATransition *transition = [CATransition animation]; - transition.duration = 0.3f; - transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; - transition.type = kCATransitionPush; - transition.subtype = kCATransitionFromRight; - [self.view.layer addAnimation:transition forKey:nil]; - [self.view addSubview:sessionVC.view]; - [self addChildViewController:sessionVC]; - }); - } -} - - -- (JXCategoryListContainerView *)listContainerView { - if (!_listContainerView) { - _listContainerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; - _listContainerView.listCellBackgroundColor = [UIColor clearColor]; - } - return _listContainerView; -} - -- (NSArray *)titles { - if (!_titles) { - _titles = @[@"消息", @"好友",@"粉丝", YMLocalizedString(@"YUMI_Mine_Contact_View_Controller_3")]; - } - return _titles; -} - -- (JXCategoryTitleView *)titleView { - if (!_titleView) { - _titleView = [[JXCategoryTitleView alloc] initWithFrame:CGRectZero]; - _titleView.backgroundColor =[UIColor clearColor]; - _titleView.titleColor = UIColorFromRGB(0x444444); - _titleView.titleSelectedColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleView.titleFont = [UIFont systemFontOfSize:16 weight:UIFontWeightSemibold]; - _titleView.titleSelectedFont = [UIFont systemFontOfSize:18 weight:UIFontWeightHeavy]; - _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; - _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; - _titleView.averageCellSpacingEnabled = NO; - _titleView.defaultSelectedIndex = 0; - _titleView.titles = self.titles; - _titleView.delegate = self; - _titleView.cellSpacing = 0; - _titleView.cellWidth = (CGFloat)KScreenWidth/ 4.0; - _titleView.listContainer = self.listContainerView; - - JXCategoryIndicatorLineView *burlywoodRegard = [[JXCategoryIndicatorLineView alloc] init]; - burlywoodRegard.indicatorColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - burlywoodRegard.indicatorWidth = 8.f; - burlywoodRegard.indicatorHeight = 4.f; - burlywoodRegard.indicatorCornerRadius = 2.f; - _titleView.indicators = @[burlywoodRegard]; - } - return _titleView; -} - -- (InterlocutionStatementRegardGovernancer *)interlocutionStatementVewC { - if (!_interlocutionStatementVewC) { - _interlocutionStatementVewC = [[InterlocutionStatementRegardGovernancer alloc] initWithType:InterlocutionStatementOpenGenreRoom]; - _interlocutionStatementVewC.mainGovernancer = self; - } - return _interlocutionStatementVewC; -} - -- (YUMIManeConsiderationRegardGovernancer *)considerationVewC { - if (!_considerationVewC) { - _considerationVewC = [[YUMIManeConsiderationRegardGovernancer alloc] init]; - _considerationVewC.type = ContactUseingGenre_In_Room; - _considerationVewC.mainGovernancer = self; - } - return _considerationVewC; -} - -- (YUMIManeAssistantRegardGovernancer *)friendVewC { - if (!_friendVewC) { - _friendVewC = [[YUMIManeAssistantRegardGovernancer alloc] init]; - _friendVewC.type = ContactUseingGenre_In_Room; - _friendVewC.mainGovernancer = self; - } - return _friendVewC; -} - -- (YUMIManeFanaticsRegardGovernancer *)fanaticsVewC { - if (!_fanaticsVewC) { - _fanaticsVewC = [[YUMIManeFanaticsRegardGovernancer alloc] init]; - _fanaticsVewC.type = ContactUseingGenre_In_Room; - _fanaticsVewC.mainGovernancer = self; - } - return _fanaticsVewC; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Friend/YUMIManeFanaticsRegardGovernancer.h b/YuMi/Modules/YMMine/View/Friend/YUMIManeFanaticsRegardGovernancer.h deleted file mode 100644 index 012bec9e..00000000 --- a/YuMi/Modules/YMMine/View/Friend/YUMIManeFanaticsRegardGovernancer.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// YMMineFansViewController.h -// YUMI -// -// Created by YUMI on 2021/12/21. -// - -#import "MvpRegardGovernancer.h" -#import -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN -@class YUMIManeFanaticsRegardGovernancer, FanaticsAbstractMatrix; -@protocol FBCManeFanaticsRegardGovernancerRepresendtation - -- (void)fBCManeFantowardsicsRegardGovernancer:(YUMIManeFanaticsRegardGovernancer *)view didSelectItem:(FanaticsAbstractMatrix *)userInfo; - -@end - -@interface YUMIManeFanaticsRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,assign) ContactUseingGenre type; -@property (nonatomic,weak) id delegate; - -@property (nonatomic, weak) UIViewController * mainGovernancer; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Friend/YUMIManeFanaticsRegardGovernancer.m b/YuMi/Modules/YMMine/View/Friend/YUMIManeFanaticsRegardGovernancer.m deleted file mode 100644 index 05614845..00000000 --- a/YuMi/Modules/YMMine/View/Friend/YUMIManeFanaticsRegardGovernancer.m +++ /dev/null @@ -1,235 +0,0 @@ -// -// YMMineFansViewController.m -// YUMI -// -// Created by YUMI on 2021/12/21. -// - -#import "YUMIManeFanaticsRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "ClientDisposition.h" -#import "FanaticsAbstractMatrix.h" -#import "YUMIManeAssistantDispossessTabulationRegardElement.h" -#import "YUMIManeFanaticsTabulationRegardElement.h" -#import "YUMIManeFanaticsExternalizer.h" -#import "FBCManeFanaticsCeremony.h" -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -#import "YUMIManeSimpleConsumerAbstractRegardGovernancer.h" -#import "InterlocutionRegardGovernancer.h" - -@interface YUMIManeFanaticsRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,assign) int page; -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; -@end - -@implementation YUMIManeFanaticsRegardGovernancer - -- (BOOL)isVeiledNevObstacle { - return self.type == ContactUseingGenre_In_Room ? YES : NO; -} - -- (YUMIManeFanaticsExternalizer *)producePresimport { - return [[YUMIManeFanaticsExternalizer alloc] init]; -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - [self.tableView reloadData]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initIntelligencerGrantedTerminalerRrfresh]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - 下拉刷新 -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - - [self intelligenceerRenovtowardseh]; -} - -#pragma mark - 刷新的fangfa -- (void)intelligenceerRenovtowardseh { - self.page = 1; - [self.presimport acquireConsumerFantowardsicsSttowardsement:self.page pageSize:20 state:0]; -} - -- (void)footerRenovtowardseh { - if (self.hasNoFurthaerAtoloudspeaker) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Mine_Fans_View_Controller_0")]; - return; - } - self.page++; - [self.presimport acquireConsumerFantowardsicsSttowardsement:self.page pageSize:20 state:1]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Mine_Fans_View_Controller_1"); - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -#pragma mark - FBCManeFanaticsCeremony -- (void)acquireConsumerFantowardsicsSttowardsementAccomplishment:(NSArray *)array state:(int)state { - if (state == 0) { - [self.datasource removeAllObjects]; - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } - if (array.count > 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - [self.datasource addObjectsFromArray:array]; - } else { - self.hasNoFurthaerAtoloudspeaker = YES; - [self.tableView.mj_footer endRefreshingWithNoMoreData]; - } - [self.tableView reloadData]; -} - -- (void)acquireConsumerFantowardsicsSttowardsementFlunk:(int)state { - if (state == 0) { - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } -} - -- (void)considertowardsionFantowardsicsAccomplishment { - - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Mine_Fans_View_Controller_2")]; - [self.tableView reloadData]; - }); - -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return self.datasource.count > 0 ? 65 : self.type == ContactUseingGenre_In_Room ? (KScreenHeight - kNavigationHeight) : (KScreenHeight - 200 - kNavigationHeight); -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMIManeFanaticsTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeFanaticsTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeFanaticsTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeFanaticsTabulationRegardElement class])]; - } - cell.delegate = self; - FanaticsAbstractMatrix * fanaticsAbstract = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - fanaticsAbstract.useingType = self.type; - cell.fanaticsAbstract = fanaticsAbstract; - return cell; - } - - YUMIManeAssistantDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeAssistantDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeAssistantDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeAssistantDispossessTabulationRegardElement class])]; - } - cell.emptyTitle = YMLocalizedString(@"YUMI_Mine_Fans_View_Controller_3"); - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.datasource.count > 0) { - FanaticsAbstractMatrix * fanaticsAbstractMatrix = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (self.type == ContactUseingGenre_In_Room) { - InterlocutionRegardGovernancer * sessionVC = [[InterlocutionRegardGovernancer alloc] initWithSession:[NIMSession session:fanaticsAbstractMatrix.uid type:NIMSessionTypeP2P]]; - sessionVC.unfoildGenre = InterlocutionStatementOpenGenreRoom; - CATransition *transition = [CATransition animation]; - transition.duration = 0.3f; - transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; - transition.type = kCATransitionPush; - transition.subtype = kCATransitionFromRight; - [self.mainGovernancer.view.layer addAnimation:transition forKey:nil]; - [self.mainGovernancer addChildViewController:sessionVC]; - [self.mainGovernancer.view addSubview:sessionVC.view]; - } else if(self.type == ContactUseingGenre_Share) { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeFantowardsicsRegardGovernancer:didSelectItem:)]) { - [self.delegate fBCManeFantowardsicsRegardGovernancer:self didSelectItem:fanaticsAbstractMatrix]; - } - } else { - - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMIManeConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = fanaticsAbstractMatrix.uid.integerValue; - [self.navigationController pushViewController:userInfoVC animated:YES]; - }else{ - YUMIManeSimpleConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeSimpleConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = fanaticsAbstractMatrix.uid.integerValue; - [self.navigationController pushViewController:userInfoVC animated:YES]; - } - } - } -} - -#pragma mark - JXCategoryListContentViewDelegate -- (UIView *)listView { - return self.view; -} - -#pragma mark - mark -- (void)fBCManeFantowardsicsTarbsultowardsionViweElement:(YUMIManeFanaticsTabulationRegardElement *)view didClickAttention:(NSString *)uid { - if (uid.length > 0) { - [self.presimport considertowardsionFantowardsics:uid]; - } -} - -#pragma mark - Getters And Setters - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - _tableView.rowHeight = 65; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIManeAssistantDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeAssistantDispossessTabulationRegardElement class])]; - [_tableView registerClass:[YUMIManeFanaticsTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeFanaticsTabulationRegardElement class])]; - } - return _tableView; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Friend/YUMIManeParaticipationRegardGovernancer.h b/YuMi/Modules/YMMine/View/Friend/YUMIManeParaticipationRegardGovernancer.h deleted file mode 100644 index 34675eec..00000000 --- a/YuMi/Modules/YMMine/View/Friend/YUMIManeParaticipationRegardGovernancer.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMMineShareViewController.h -// YUMI -// -// Created by YUMI on 2022/6/27. -// - -#import "BaseRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN -@class YUMIParaticipationAbstractMatrix; - -typedef NS_ENUM(NSInteger, ManeShareGenre) { - - ManeShareGenre_Monents = 1, -}; - -@interface YUMIManeParaticipationRegardGovernancer : BaseRegardGovernancer -@property (nonatomic,strong) YUMIParaticipationAbstractMatrix *shareInfo; -@property (nonatomic,assign) ManeShareGenre shareType; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Friend/YUMIManeParaticipationRegardGovernancer.m b/YuMi/Modules/YMMine/View/Friend/YUMIManeParaticipationRegardGovernancer.m deleted file mode 100644 index 1fd5a968..00000000 --- a/YuMi/Modules/YMMine/View/Friend/YUMIManeParaticipationRegardGovernancer.m +++ /dev/null @@ -1,211 +0,0 @@ -// -// YMMineShareViewController.m -// YUMI -// -// Created by YUMI on 2022/6/27. -// - -#import "YUMIManeParaticipationRegardGovernancer.h" -#import -#import -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "MKJPopup.h" -#import "YUMIParaticipationAbstractMatrix.h" -#import "FanaticsAbstractMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "AttachmentMatrix.h" -#import "SatisfactionParaticipationSeparationsMatrix.h" -#import "InterlocutionRegardGovernancer.h" -#import "InterlocutionStatementRegardGovernancer.h" -#import "YUMIManeAssistantRegardGovernancer.h" -#import "YUMIManeConsiderationRegardGovernancer.h" -#import "YUMIManeFanaticsRegardGovernancer.h" -@interface YUMIManeParaticipationRegardGovernancer () -@property (nonatomic,strong) NSArray *titles; -@property (nonatomic,strong) JXCategoryTitleView *titleView; -@property (nonatomic, strong) JXCategoryListContainerView *listContainerView; -@property (nonatomic,strong) YUMIManeAssistantRegardGovernancer *friendVewC; -@property (nonatomic,strong) YUMIManeConsiderationRegardGovernancer *considerationVewC; -@property (nonatomic,strong) YUMIManeFanaticsRegardGovernancer *fanaticsVewC; -@property (nonatomic,copy) NSString *sessionId; -@end - -@implementation YUMIManeParaticipationRegardGovernancer - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Mine_Share_View_Controller_0"); - [self.view addSubview:self.titleView]; - [self.view addSubview:self.listContainerView]; -} - -- (void)initChildLyRestrictions { - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.height.mas_equalTo(50); - }]; - - [self.listContainerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.top.mas_equalTo(self.titleView.mas_bottom); - }]; -} - -- (void)prohibitichargeIndividualityCommunictowardsion:(AttachmentMatrix *)attachment { - NIMMessage *message = [[NIMMessage alloc]init]; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachment; - message.messageObject = object; - NIMSessionType sessionType = NIMSessionTypeP2P; - - NIMSession *session = [NIMSession session:self.sessionId type:sessionType]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; -} - -- (void)partowardsiciptowardsionToConsumer:(NSString *)nick { - NSString * title; - AttachmentMatrix * attachment = [[AttachmentMatrix alloc] init]; - switch (self.shareType) { - case ManeShareGenre_Monents: - { - title = [NSString stringWithFormat:@"确认分享给%@吗?", nick]; - attachment.first = IndividualityCommunicationGenre_Monents; - attachment.second = Custom_Message_Sub_Monents_Share; - SatisfactionParaticipationSeparationsMatrix * shareInfo = [[SatisfactionParaticipationSeparationsMatrix alloc] init]; - shareInfo.imageUrl = self.shareInfo.imageUrl; - shareInfo.nick = self.shareInfo.nick; - shareInfo.content = self.shareInfo.content; - shareInfo.dynamicId= self.shareInfo.dynamicId; - shareInfo.routerValue = self.shareInfo.dynamicId; - shareInfo.routerType = 50; - attachment.data = shareInfo.mtowardsrix2dictionary; - } - - break; - - default: - break; - } - if (title.length > 0) { - [MKJPopup precautiousAboutCommunictowardsion:title acknowledgementHandler:^{ - [self prohibitichargeIndividualityCommunictowardsion:attachment]; - } cancelHandler:^{ - - }]; - } -} - -#pragma mark - JXCategoryListContainerViewDelegate -- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { - return self.titles.count; -} - -- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { - if (index == 0) { - return self.friendVewC; - } else if(index == 1) { - return self.fanaticsVewC; - } else { - return self.considerationVewC; - } -} - -#pragma mark - FBCManeConsiderationRegardGovernancerRepresendtation -- (void)fBCManeConsidertowardsionRegardGovernancer:(YUMIManeConsiderationRegardGovernancer *)viewController didSelectItem:(FanaticsAbstractMatrix *)userInfo { - self.sessionId = userInfo.uid; - [self partowardsiciptowardsionToConsumer:userInfo.nick]; -} - -#pragma mark - FBCManeFanaticsRegardGovernancerRepresendtation -- (void)fBCManeFantowardsicsRegardGovernancer:(YUMIManeFanaticsRegardGovernancer *)view didSelectItem:(FanaticsAbstractMatrix *)userInfo { - self.sessionId = userInfo.uid; - [self partowardsiciptowardsionToConsumer:userInfo.nick]; -} - -#pragma mark - FBCManeFriendRegardGovernancerRepresendtation -- (void)fBCManeFriconcludeRegardGovernancer:(YUMIManeAssistantRegardGovernancer *)viewController didSelectItem:(ConsumerAbstractMatrix *)userInfo { - self.sessionId = [NSString stringWithFormat:@"%ld", userInfo.uid]; - [self partowardsiciptowardsionToConsumer:userInfo.nick]; -} - -#pragma mark - Getters And Setters - -- (JXCategoryListContainerView *)listContainerView { - if (!_listContainerView) { - _listContainerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; - _listContainerView.listCellBackgroundColor = [UIColor clearColor]; - } - return _listContainerView; -} - -- (NSArray *)titles { - if (!_titles) { - _titles = @[@"好友",@"粉丝", YMLocalizedString(@"YUMI_Mine_Share_View_Controller_4")]; - } - return _titles; -} - -- (JXCategoryTitleView *)titleView { - if (!_titleView) { - _titleView = [[JXCategoryTitleView alloc] initWithFrame:CGRectZero]; - _titleView.backgroundColor =[UIColor clearColor]; - _titleView.titleColor = UIColorFromRGB(0x444444); - _titleView.titleSelectedColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleView.titleFont = [UIFont systemFontOfSize:16 weight:UIFontWeightSemibold]; - _titleView.titleSelectedFont = [UIFont systemFontOfSize:18 weight:UIFontWeightHeavy]; - _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; - _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; - _titleView.averageCellSpacingEnabled = NO; - _titleView.defaultSelectedIndex = 0; - _titleView.titles = self.titles; - _titleView.delegate = self; - _titleView.cellSpacing = 0; - _titleView.cellWidth = (CGFloat)KScreenWidth/ 3.0; - _titleView.listContainer = self.listContainerView; - - JXCategoryIndicatorLineView *burlywoodRegard = [[JXCategoryIndicatorLineView alloc] init]; - burlywoodRegard.indicatorColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - burlywoodRegard.indicatorWidth = 8.f; - burlywoodRegard.indicatorHeight = 4.f; - burlywoodRegard.indicatorCornerRadius = 2.f; - _titleView.indicators = @[burlywoodRegard]; - } - return _titleView; -} - -- (YUMIManeConsiderationRegardGovernancer *)considerationVewC { - if (!_considerationVewC) { - _considerationVewC = [[YUMIManeConsiderationRegardGovernancer alloc] init]; - _considerationVewC.type = ContactUseingGenre_Share; - _considerationVewC.delegate = self; - } - return _considerationVewC; -} - -- (YUMIManeAssistantRegardGovernancer *)friendVewC { - if (!_friendVewC) { - _friendVewC = [[YUMIManeAssistantRegardGovernancer alloc] init]; - _friendVewC.type = ContactUseingGenre_Share; - _friendVewC.delegate = self; - } - return _friendVewC; -} - -- (YUMIManeFanaticsRegardGovernancer *)fanaticsVewC { - if (!_fanaticsVewC) { - _fanaticsVewC = [[YUMIManeFanaticsRegardGovernancer alloc] init]; - _fanaticsVewC.type = ContactUseingGenre_Share; - _fanaticsVewC.delegate = self; - } - return _fanaticsVewC; -} -@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/Api/Api+GiveDiamond.h b/YuMi/Modules/YMMine/View/GiveDiamond/Api/Api+GiveDiamond.h index c96d58be..fedb690a 100644 --- a/YuMi/Modules/YMMine/View/GiveDiamond/Api/Api+GiveDiamond.h +++ b/YuMi/Modules/YMMine/View/GiveDiamond/Api/Api+GiveDiamond.h @@ -10,18 +10,39 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (GiveDiamond) -+ (void)acquireGiveDiamondSttowardsement:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid pageNum:pageStr pageSize:pageSizeStr; +/// @param completion 完成 +/// @param ticket ticket +/// @param uid uid ++ (void)getGiveDiamondList:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid pageNum:pageStr pageSize:pageSizeStr; -+(void)acknowledgementPerformanceAboutIntersect:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid toUid:(NSString *)touid diamondNum:(NSString *) diamondNum payPwd:(NSString *)payPwd; +/// 确认转赠 +/// @param uid 用户id +/// @param touid 转赠用户id +/// @param diamondNum 转赠数量 +/// @param payPwd 支付密码 ++(void)confirmActionWithPay:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid toUid:(NSString *)touid diamondNum:(NSString *) diamondNum payPwd:(NSString *)payPwd; -+(void)huntforGivePeople:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid erbanNo:(NSString *)erbanNo; +/// 搜索转赠人 +/// @param completion 完成 +/// @param erbanNo 平台号 ++(void)searchGivePeople:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid erbanNo:(NSString *)erbanNo; -+(void)acquireexamplesHLOfReflection:(HttpRequestHelperCompletion)completion toUid:(NSString *)toUid type:(NSString *)type pageNum:(NSString *)pageNum; +/// 转赠记录 +/// @param completion 完成 +/// @param toUid 用户id +/// @param type 0,钻石,1礼物 +/// @param pageNum 页数 ++(void)getexamplesOfRecord:(HttpRequestHelperCompletion)completion toUid:(NSString *)toUid type:(NSString *)type pageNum:(NSString *)pageNum; -+(void)givePresent:(HttpRequestHelperCompletion)completion toUid:(NSString *)toUid giftId:(NSString *)giftId giftNum:(NSString *)giftNum; +/// 转赠礼物 +/// @param completion 完成 +/// @param toUid 对方id +/// @param giftId 礼物id +/// @param giftNum 礼物数量 ++(void)giveGift:(HttpRequestHelperCompletion)completion toUid:(NSString *)toUid giftId:(NSString *)giftId giftNum:(NSString *)giftNum; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/Api/Api+GiveDiamond.m b/YuMi/Modules/YMMine/View/GiveDiamond/Api/Api+GiveDiamond.m index dabeaeef..d26e0cb6 100644 --- a/YuMi/Modules/YMMine/View/GiveDiamond/Api/Api+GiveDiamond.m +++ b/YuMi/Modules/YMMine/View/GiveDiamond/Api/Api+GiveDiamond.m @@ -8,21 +8,21 @@ #import "Api+GiveDiamond.h" @implementation Api (GiveDiamond) -+ (void)acquireGiveDiamondSttowardsement:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid pageNum:pageStr pageSize:pageSizeStr{ ++ (void)getGiveDiamondList:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid pageNum:pageStr pageSize:pageSizeStr{ - [self manufactureDemand:@"user/diamond/giveRecord" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, ticket, uid,pageStr,pageSizeStr, nil]; + [self makeRequest:@"user/diamond/giveRecord" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, ticket, uid,pageStr,pageSizeStr, nil]; } -+(void)acknowledgementPerformanceAboutIntersect:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid toUid:(NSString *)touid diamondNum:(NSString *) diamondNum payPwd:(NSString *)payPwd{ - [self manufactureDemand:@"user/diamond/give" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, ticket, uid,touid,diamondNum,payPwd, nil]; ++(void)confirmActionWithPay:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid toUid:(NSString *)touid diamondNum:(NSString *) diamondNum payPwd:(NSString *)payPwd{ + [self makeRequest:@"user/diamond/give" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, ticket, uid,touid,diamondNum,payPwd, nil]; } -+(void)huntforGivePeople:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid erbanNo:(NSString *)erbanNo{ - [self manufactureDemand:@"user/diamond/searchUser" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, ticket, uid,erbanNo, nil]; ++(void)searchGivePeople:(HttpRequestHelperCompletion)completion ticket:(NSString *)ticket uid:(NSString *)uid erbanNo:(NSString *)erbanNo{ + [self makeRequest:@"user/diamond/searchUser" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, ticket, uid,erbanNo, nil]; } -+(void)acquireexamplesHLOfReflection:(HttpRequestHelperCompletion)completion toUid:(NSString *)toUid type:(NSString *)type pageNum:(NSString *)pageNum{ - [self manufactureDemand:@"user/diamond/giveRecordVoByType" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, toUid,type,pageNum, nil]; ++(void)getexamplesOfRecord:(HttpRequestHelperCompletion)completion toUid:(NSString *)toUid type:(NSString *)type pageNum:(NSString *)pageNum{ + [self makeRequest:@"user/diamond/giveRecordVoByType" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, toUid,type,pageNum, nil]; } -+(void)givePresent:(HttpRequestHelperCompletion)completion toUid:(NSString *)toUid giftId:(NSString *)giftId giftNum:(NSString *)giftNum{ - [self manufactureDemand:@"user/diamond/giveGift" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, toUid,giftId,giftNum, nil]; ++(void)giveGift:(HttpRequestHelperCompletion)completion toUid:(NSString *)toUid giftId:(NSString *)giftId giftNum:(NSString *)giftNum{ + [self makeRequest:@"user/diamond/giveGift" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, toUid,giftId,giftNum, nil]; } @end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/Model/XPMineGiveDiamondDetailsModel.h b/YuMi/Modules/YMMine/View/GiveDiamond/Model/XPMineGiveDiamondDetailsModel.h new file mode 100644 index 00000000..e5af412f --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/Model/XPMineGiveDiamondDetailsModel.h @@ -0,0 +1,66 @@ +// +// XPMineGiveDiamondDetailsModel.h +// YuMi +// +// Created by YuMi on 2022/11/1. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineGiveDiamondDetailsModel : NSObject + +///记录 id +@property (nonatomic, copy) NSString *recordId; + +///用户uid +@property (nonatomic, copy) NSString *fromUid; + +///对方用户uid +@property (nonatomic, copy) NSString *targetUid; + + +///对方平台id +@property (nonatomic, copy) NSString *targetErbanNo; + + +///对方用户信息 +@property (nonatomic, copy) NSString *targetNick; + +///对方用户信息 +@property (nonatomic, copy) NSString *targetAvatar; + +///转赠给对方的数量 +@property (nonatomic, copy) NSString *diamondNum; + +///转赠实际支出的数量,包含手续费 +@property (nonatomic, assign) double realDiamondNum; + +///创建时间 +@property (nonatomic, assign) NSInteger createTime; + +///更新时间 +@property (nonatomic, assign) NSInteger updateTime; +///转赠类型: 0转赠钻石 1转赠礼物 +@property (nonatomic, copy) NSString *type; + +///转赠礼物id +@property (nonatomic, copy) NSString *giftId; + +///转赠礼物数 +@property (nonatomic, copy) NSString *giftNum; + +///转赠礼物单价 +@property (nonatomic, copy) NSString *giftGoldNum; +///转赠礼物总价值 +@property (nonatomic, copy) NSString *totalGiftGoldNum; +///礼物图片 +@property (nonatomic, copy) NSString *giftUrl; +///礼物名字 +@property (nonatomic,copy) NSString * giftName; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/Model/XPMineGiveDiamondDetailsModel.m b/YuMi/Modules/YMMine/View/GiveDiamond/Model/XPMineGiveDiamondDetailsModel.m new file mode 100644 index 00000000..d1f1ead5 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/Model/XPMineGiveDiamondDetailsModel.m @@ -0,0 +1,16 @@ +// +// XPMineGiveDiamondDetailsModel.m +// YuMi +// +// Created by YuMi on 2022/11/1. +// + +#import "XPMineGiveDiamondDetailsModel.h" + +@implementation XPMineGiveDiamondDetailsModel ++ (NSDictionary *)replacedKeyFromPropertyName { + return @{ + @"recordId" : @"id" + }; +} +@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/Model/XPMineGiveDiamondModel.h b/YuMi/Modules/YMMine/View/GiveDiamond/Model/XPMineGiveDiamondModel.h new file mode 100644 index 00000000..4193859b --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/Model/XPMineGiveDiamondModel.h @@ -0,0 +1,33 @@ +// +// XPMineGiveDiamondModel.h +// YuMi +// +// Created by YuMi on 2022/10/19. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineGiveDiamondModel : NSObject +///记录 id +@property (nonatomic, copy) NSString *recordId; +///用户uid +@property (nonatomic, copy) NSString *fromUid; +///对方用户uid +@property (nonatomic, copy) NSString *targetUid; +///对方平台id +@property (nonatomic, copy) NSString *targetErbanNo; +///对方用户名 +@property (nonatomic, copy) NSString *targetNick; +///头像 +@property (nonatomic, copy) NSString *targetAvatar; +///转赠给对方的数量 +@property (nonatomic, assign) NSInteger diamondNum; +///转赠实际支出的数量,包含手续费 +@property (nonatomic, assign) double realDiamondNum; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/Model/XPMineGiveDiamondModel.m b/YuMi/Modules/YMMine/View/GiveDiamond/Model/XPMineGiveDiamondModel.m new file mode 100644 index 00000000..bca5db4e --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/Model/XPMineGiveDiamondModel.m @@ -0,0 +1,16 @@ +// +// XPMineGiveDiamondModel.m +// YuMi +// +// Created by YuMi on 2022/10/19. +// + +#import "XPMineGiveDiamondModel.h" + +@implementation XPMineGiveDiamondModel ++ (NSDictionary *)replacedKeyFromPropertyName { + return @{ + @"recordId" : @"id" + }; +} +@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/Model/XPMineGiveDiamondSearchModel.h b/YuMi/Modules/YMMine/View/GiveDiamond/Model/XPMineGiveDiamondSearchModel.h new file mode 100644 index 00000000..f597a82b --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/Model/XPMineGiveDiamondSearchModel.h @@ -0,0 +1,40 @@ +// +// XPMineGiveDiamondSearchModel.h +// YuMi +// +// Created by YuMi on 2022/10/21. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineGiveDiamondSearchModel : NSObject +/** + * 用户uid + */ +@property (nonatomic,copy) NSString *uid; +/** + * 平台号 + */ +@property (nonatomic,copy) NSString *erbanNo; +/** + * 头像 + */ +@property (nonatomic,copy) NSString *avatar; +/** + * 昵称 + */ +@property (nonatomic,copy) NSString *nick; +/** + * 性别 1.男 2.女 + */ + +@property (nonatomic,copy) NSString *gender; +/** + * 生日 + */ +@property (nonatomic,copy) NSString *birth; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/Model/XPMineGiveDiamondSearchModel.m b/YuMi/Modules/YMMine/View/GiveDiamond/Model/XPMineGiveDiamondSearchModel.m new file mode 100644 index 00000000..7cc842ec --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/Model/XPMineGiveDiamondSearchModel.m @@ -0,0 +1,12 @@ +// +// XPMineGiveDiamondSearchModel.m +// YuMi +// +// Created by YuMi on 2022/10/21. +// + +#import "XPMineGiveDiamondSearchModel.h" + +@implementation XPMineGiveDiamondSearchModel + +@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/Model/YUMIManeGiveDiamondHuntforMatrix.h b/YuMi/Modules/YMMine/View/GiveDiamond/Model/YUMIManeGiveDiamondHuntforMatrix.h deleted file mode 100644 index a817f989..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/Model/YUMIManeGiveDiamondHuntforMatrix.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// YUMIManeGiveDiamondHuntforMatrix.h -// YuMi -// -// Created by YuMi on 2022/10/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeGiveDiamondHuntforMatrix : NSObject - -@property (nonatomic,copy) NSString *uid; - -@property (nonatomic,copy) NSString *erbanNo; - -@property (nonatomic,copy) NSString *avatar; - -@property (nonatomic,copy) NSString *nick; - - -@property (nonatomic,copy) NSString *gender; - -@property (nonatomic,copy) NSString *birth; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/Model/YUMIManeGiveDiamondHuntforMatrix.m b/YuMi/Modules/YMMine/View/GiveDiamond/Model/YUMIManeGiveDiamondHuntforMatrix.m deleted file mode 100644 index 56a9c870..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/Model/YUMIManeGiveDiamondHuntforMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YUMIManeGiveDiamondHuntforMatrix.m -// YuMi -// -// Created by YuMi on 2022/10/21. -// - -#import "YUMIManeGiveDiamondHuntforMatrix.h" - -@implementation YUMIManeGiveDiamondHuntforMatrix - -@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/Model/YUMIManeGiveDiamondMatrix.h b/YuMi/Modules/YMMine/View/GiveDiamond/Model/YUMIManeGiveDiamondMatrix.h deleted file mode 100644 index 87f41b5f..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/Model/YUMIManeGiveDiamondMatrix.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YUMIManeGiveDiamondMatrix.h -// YuMi -// -// Created by YuMi on 2022/10/19. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeGiveDiamondMatrix : NSObject -@property (nonatomic, copy) NSString *recordId; -@property (nonatomic, copy) NSString *fromUid; -@property (nonatomic, copy) NSString *targetUid; -@property (nonatomic, copy) NSString *targetErbanNo; -@property (nonatomic, copy) NSString *targetNick; -@property (nonatomic, copy) NSString *targetAvatar; -@property (nonatomic, assign) NSInteger diamondNum; -@property (nonatomic, assign) double realDiamondNum; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/Model/YUMIManeGiveDiamondMatrix.m b/YuMi/Modules/YMMine/View/GiveDiamond/Model/YUMIManeGiveDiamondMatrix.m deleted file mode 100644 index 0c31de48..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/Model/YUMIManeGiveDiamondMatrix.m +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIManeGiveDiamondMatrix.m -// YuMi -// -// Created by YuMi on 2022/10/19. -// - -#import "YUMIManeGiveDiamondMatrix.h" - -@implementation YUMIManeGiveDiamondMatrix -+ (NSDictionary *)replacedDigitalByvirtueofMaintainertyConstitute { - return @{ - @"recordId" : @"id" - }; -} -@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/Model/YUMIManeGiveDiamondSpecificsMatrix.h b/YuMi/Modules/YMMine/View/GiveDiamond/Model/YUMIManeGiveDiamondSpecificsMatrix.h deleted file mode 100644 index acebb9f6..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/Model/YUMIManeGiveDiamondSpecificsMatrix.h +++ /dev/null @@ -1,49 +0,0 @@ -// -// YUMIManeGiveDiamondSpecificsMatrix.h -// YuMi -// -// Created by YuMi on 2022/11/1. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeGiveDiamondSpecificsMatrix : NSObject - -@property (nonatomic, copy) NSString *recordId; - -@property (nonatomic, copy) NSString *fromUid; - -@property (nonatomic, copy) NSString *targetUid; - - -@property (nonatomic, copy) NSString *targetErbanNo; - - -@property (nonatomic, copy) NSString *targetNick; - -@property (nonatomic, copy) NSString *targetAvatar; - -@property (nonatomic, copy) NSString *diamondNum; - -@property (nonatomic, assign) double realDiamondNum; - -@property (nonatomic, assign) NSInteger createTime; - -@property (nonatomic, assign) NSInteger updateTime; -@property (nonatomic, copy) NSString *type; - -@property (nonatomic, copy) NSString *giftId; - -@property (nonatomic, copy) NSString *giftNum; - -@property (nonatomic, copy) NSString *giftGoldNum; -@property (nonatomic, copy) NSString *totalGiftGoldNum; -@property (nonatomic, copy) NSString *giftUrl; -@property (nonatomic,copy) NSString * giftName; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/Model/YUMIManeGiveDiamondSpecificsMatrix.m b/YuMi/Modules/YMMine/View/GiveDiamond/Model/YUMIManeGiveDiamondSpecificsMatrix.m deleted file mode 100644 index 15439980..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/Model/YUMIManeGiveDiamondSpecificsMatrix.m +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIManeGiveDiamondSpecificsMatrix.m -// YuMi -// -// Created by YuMi on 2022/11/1. -// - -#import "YUMIManeGiveDiamondSpecificsMatrix.h" - -@implementation YUMIManeGiveDiamondSpecificsMatrix -+ (NSDictionary *)replacedDigitalByvirtueofMaintainertyConstitute { - return @{ - @"recordId" : @"id" - }; -} -@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/Presenter/XPMineGiveDiamondPresenter.h b/YuMi/Modules/YMMine/View/GiveDiamond/Presenter/XPMineGiveDiamondPresenter.h new file mode 100644 index 00000000..0ea70679 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/Presenter/XPMineGiveDiamondPresenter.h @@ -0,0 +1,30 @@ +// +// XPMineGiveDiamondPresenter.h +// YuMi +// +// Created by YuMi on 2022/10/19. +// +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineGiveDiamondPresenter : BaseMvpPresenter +///得到转赠记录 +-(void)getGiveDiamondRecord; + +/// 获取用户钱包余额信息 +- (void)getUserWalletInfo; + +///确认支付 +-(void)confirmActionWithPayWithToUid:(NSString *)touid diamondNum:(NSString *) diamondNum payPwd:(NSString *)payPwd; +///搜索转赠人 +-(void)searchGivePeopleWith:(NSString *)erbanNo; +///获取转赠记录 +-(void)getExamplesOfRecordWithUid:(NSString *)toUid type:(int)type page:(int)page; +///获取礼物 +-(void)getPackGiftList; +///转赠礼物 +-(void)giveGiftWithToUid:(NSString *)toUid giftId:(NSString *)giftId giftNum:(NSString *)giftNum; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/Presenter/XPMineGiveDiamondPresenter.m b/YuMi/Modules/YMMine/View/GiveDiamond/Presenter/XPMineGiveDiamondPresenter.m new file mode 100644 index 00000000..9c021635 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/Presenter/XPMineGiveDiamondPresenter.m @@ -0,0 +1,90 @@ +// +// XPMineGiveDiamondPresenter.m +// YuMi +// +// Created by YuMi on 2022/10/19. +// + +#import "XPMineGiveDiamondPresenter.h" +#import "AccountInfoStorage.h" + +#import "XPMineGiveDiamondModel.h" +#import "HomeSearchResultModel.h" +#import "WalletInfoModel.h" +#import "XPMineGiveDiamondSearchModel.h" +#import "XPMineGiveDiamondDetailsModel.h" +#import "UserGiftWallInfoModel.h" +#import "GiftInfoModel.h" + +#import "XPMineGiveDiamondProtocol.h" +#import "XPHomeSearchProtocol.h" + +#import "Api+GiveDiamond.h" +#import "Api+Home.h" +#import "Api+Gift.h" +#import "YUMIConstant.h" +#import "DESEncrypt.h" + + +@implementation XPMineGiveDiamondPresenter +-(void)getGiveDiamondRecord{ + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + [Api getGiveDiamondList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [XPMineGiveDiamondModel modelsWithArray:data.data]; + [[self getView] getGiveDiamondListSuccess:array]; + }] ticket:ticket uid:uid pageNum:@"1" pageSize:@"100"]; +} + + +-(void)getUserWalletInfo{ + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + [Api getUserWalletInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + WalletInfoModel * model = [WalletInfoModel modelWithDictionary:data.data]; + [[self getView] getUserWalletInfo:model]; + }] uid:uid ticket:ticket]; +} +-(void)confirmActionWithPayWithToUid:(NSString *)touid diamondNum:(NSString *) diamondNum payPwd:(NSString *)payPwd{ + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + NSString *payPwds = [DESEncrypt encryptUseDES:payPwd key:KeyWithType(KeyType_PasswordEncode)]; + [Api confirmActionWithPay:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] confirmActionWithPay]; + }] ticket:ticket uid:uid toUid:touid diamondNum:diamondNum payPwd:payPwds]; +} +-(void)searchGivePeopleWith:(NSString *)erbanNo{ + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + [Api searchGivePeople:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + XPMineGiveDiamondSearchModel *model = [XPMineGiveDiamondSearchModel modelWithDictionary:data.data]; + [[self getView] searchGivePeopleWihtModel:model]; + }] ticket:ticket uid:uid erbanNo:erbanNo]; +} +-(void)getExamplesOfRecordWithUid:(NSString *)toUid type:(int)type page:(int)page { + [Api getexamplesOfRecord:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray *listModel = [XPMineGiveDiamondDetailsModel modelsWithArray:data.data]; + [[self getView]getexamplesOfRecordWithList:listModel state:type]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView]getexamplesOfRecordWithListWithFailState:type]; + } showLoading:YES] toUid:toUid type:@(type).stringValue pageNum:@(page).stringValue]; +} +-(void)getPackGiftList{ + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + [Api requestPackGiftList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * info = [GiftInfoModel modelsWithArray:data.data]; + [[self getView] getPacketGiftListSuccess:info]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getPacketGiftListFail:msg]; + }] uid:uid ticket:ticket]; +} +-(void)giveGiftWithToUid:(NSString *)toUid giftId:(NSString *)giftId giftNum:(NSString *)giftNum{ + [Api giveGift:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] giveGiftSuccess]; + }] toUid:toUid giftId:giftId giftNum:giftNum]; +} +@end + + + diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/Presenter/YUMIManeGiveDiamondExternalizer.h b/YuMi/Modules/YMMine/View/GiveDiamond/Presenter/YUMIManeGiveDiamondExternalizer.h deleted file mode 100644 index e79dc48e..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/Presenter/YUMIManeGiveDiamondExternalizer.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YUMIManeGiveDiamondExternalizer.h -// YuMi -// -// Created by YuMi on 2022/10/19. -// -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeGiveDiamondExternalizer : BaseMvpExternalizer --(void)acquireGiveDiamondReflection; - -- (void)acquireConsumerPocketbookAbstract; - --(void)acknowledgementPerformanceAboutIntersectAboutToCid:(NSString *)touid diamondNum:(NSString *) diamondNum payPwd:(NSString *)payPwd; --(void)huntforGivePeopleAbout:(NSString *)erbanNo; --(void)acquireExamplesHLOfReflectionAboutCid:(NSString *)toUid type:(int)type page:(int)page; --(void)acquireImpactPresentSttowardsement; --(void)givePresentAboutToCid:(NSString *)toUid giftId:(NSString *)giftId giftNum:(NSString *)giftNum; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/Presenter/YUMIManeGiveDiamondExternalizer.m b/YuMi/Modules/YMMine/View/GiveDiamond/Presenter/YUMIManeGiveDiamondExternalizer.m deleted file mode 100644 index 8c7a65d4..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/Presenter/YUMIManeGiveDiamondExternalizer.m +++ /dev/null @@ -1,90 +0,0 @@ -// -// YUMIManeGiveDiamondExternalizer.m -// YuMi -// -// Created by YuMi on 2022/10/19. -// - -#import "YUMIManeGiveDiamondExternalizer.h" -#import "AccountAbstractStorage.h" - -#import "YUMIManeGiveDiamondMatrix.h" -#import "ResidenceHuntforConsequentMatrix.h" -#import "RamparatetAbstractMatrix.h" -#import "YUMIManeGiveDiamondHuntforMatrix.h" -#import "YUMIManeGiveDiamondSpecificsMatrix.h" -#import "ConsumerPresentRamparatAbstractMatrix.h" -#import "PresentAbstractMatrix.h" - -#import "FBCManeGiveDiamondCeremony.h" -#import "FBCResidenceHuntforCeremony.h" - -#import "Api+GiveDiamond.h" -#import "Api+Home.h" -#import "Api+Gift.h" -#import "YUMIConstant.h" -#import "DESEncrypt.h" - - -@implementation YUMIManeGiveDiamondExternalizer --(void)acquireGiveDiamondReflection{ - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - [Api acquireGiveDiamondSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [YUMIManeGiveDiamondMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireGiveDiamondSttowardsementAccomplishment:array]; - }] ticket:ticket uid:uid pageNum:@"1" pageSize:@"100"]; -} - - --(void)acquireConsumerPocketbookAbstract{ - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - [Api acquireConsumerPocketbookAbstract:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - RamparatetAbstractMatrix * model = [RamparatetAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireConsumerPocketbookAbstract:model]; - }] uid:uid ticket:ticket]; -} --(void)acknowledgementPerformanceAboutIntersectAboutToCid:(NSString *)touid diamondNum:(NSString *) diamondNum payPwd:(NSString *)payPwd{ - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - NSString *payPwds = [DESEncrypt encryptUseDES:payPwd key:KeyWithType(KeyGenre_PasswordEncode)]; - [Api acknowledgementPerformanceAboutIntersect:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] acknowledgementPerformanceAboutIntersect]; - }] ticket:ticket uid:uid toUid:touid diamondNum:diamondNum payPwd:payPwds]; -} --(void)huntforGivePeopleAbout:(NSString *)erbanNo{ - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - [Api huntforGivePeople:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - YUMIManeGiveDiamondHuntforMatrix *model = [YUMIManeGiveDiamondHuntforMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] huntforGivePeopleWihtMtowardsrix:model]; - }] ticket:ticket uid:uid erbanNo:erbanNo]; -} --(void)acquireExamplesHLOfReflectionAboutCid:(NSString *)toUid type:(int)type page:(int)page { - [Api acquireexamplesHLOfReflection:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray *listMatrix = [YUMIManeGiveDiamondSpecificsMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard]acquireexamplesHLOfReflectionAboutSttowardsement:listMatrix state:type]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard]acquireexamplesHLOfReflectionAboutSttowardsementAboutFlunkDeclare:type]; - } EvidenceChambering:YES] toUid:toUid type:@(type).stringValue pageNum:@(page).stringValue]; -} --(void)acquireImpactPresentSttowardsement{ - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - [Api requisitionImpactPresentSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * info = [PresentAbstractMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireShetowardshePresentSttowardsementAccomplishment:info]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireShetowardshePresentSttowardsementFlunk:msg]; - }] uid:uid ticket:ticket]; -} --(void)givePresentAboutToCid:(NSString *)toUid giftId:(NSString *)giftId giftNum:(NSString *)giftNum{ - [Api givePresent:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] givePresentAccomplishment]; - }] toUid:toUid giftId:giftId giftNum:giftNum]; -} -@end - - - diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/Protocol/FBCManeGiveDiamondCeremony.h b/YuMi/Modules/YMMine/View/GiveDiamond/Protocol/FBCManeGiveDiamondCeremony.h deleted file mode 100644 index 61ad410d..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/Protocol/FBCManeGiveDiamondCeremony.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// FBCManeGiveDiamondCeremony.h -// YuMi -// -// Created by YuMi on 2022/10/19. -// - -#import -@class RamparatetAbstractMatrix,YUMIManeGiveDiamondHuntforMatrix,YUMIManeGiveDiamondSpecificsMatrix,PresentAbstractMatrix; -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCManeGiveDiamondCeremony -@optional - -- (void)acquireGiveDiamondSttowardsementAccomplishment:(NSArray *)array; -- (void)huntforConcludeAboutEssay:(NSString *)text; -- (void)acquireConsumerPocketbookAbstract:(RamparatetAbstractMatrix *)balanceInfo; --(void)acknowledgementPerformanceAboutEssay:(NSString *)text; --(void)acknowledgementPerformanceAboutEssay:(NSString *)text concludePresentMatrix:(PresentAbstractMatrix *)concludePresentMatrix; --(void)acknowledgementPerformanceAboutIntersect; --(void)huntforGivePeopleWihtMtowardsrix:(YUMIManeGiveDiamondHuntforMatrix *)model; --(void)acquireexamplesHLOfReflectionAboutSttowardsement:(NSArray *)list state:(int)state; --(void)acquireexamplesHLOfReflectionAboutSttowardsementAboutFlunkDeclare:(int)state; - -- (void)acquireShetowardshePresentSttowardsementAccomplishment:(NSArray *)giftList; -- (void)acquireShetowardshePresentSttowardsementFlunk:(NSString *)message; --(void)givePresentAccomplishment; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/Protocol/XPMineGiveDiamondProtocol.h b/YuMi/Modules/YMMine/View/GiveDiamond/Protocol/XPMineGiveDiamondProtocol.h new file mode 100644 index 00000000..ffa92654 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/Protocol/XPMineGiveDiamondProtocol.h @@ -0,0 +1,42 @@ +// +// XPMineGiveDiamondProtocol.h +// YuMi +// +// Created by YuMi on 2022/10/19. +// + +#import +@class WalletInfoModel,XPMineGiveDiamondSearchModel,XPMineGiveDiamondDetailsModel,GiftInfoModel; +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMineGiveDiamondProtocol +@optional + +///请求转赠记录 +- (void)getGiveDiamondListSuccess:(NSArray *)array; +///搜索转赠人 +- (void)searchEndWithText:(NSString *)text; +///请求钱包余额信息 +- (void)getUserWalletInfo:(WalletInfoModel *)balanceInfo; +///点击确认钻石事件 +-(void)confirmActionWithText:(NSString *)text; +///转赠礼物点击确认事件 +-(void)confirmActionWithText:(NSString *)text chooseGiftModel:(GiftInfoModel *)chooseGiftModel; +///点击确认支付 +-(void)confirmActionWithPay; +///搜索转赠人 +-(void)searchGivePeopleWihtModel:(XPMineGiveDiamondSearchModel *)model; +///转赠记录 +-(void)getexamplesOfRecordWithList:(NSArray *)list state:(int)state; +///转赠记录失败 +-(void)getexamplesOfRecordWithListWithFailState:(int)state; + +///获取背包礼物列表 +- (void)getPacketGiftListSuccess:(NSArray *)giftList; +///获取背包礼物列表失败 +- (void)getPacketGiftListFail:(NSString *)message; +///转赠礼物 +-(void)giveGiftSuccess; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPIncomeRecordGoldDetailsCell.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPIncomeRecordGoldDetailsCell.h new file mode 100644 index 00000000..ff05b683 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPIncomeRecordGoldDetailsCell.h @@ -0,0 +1,19 @@ +// +// XPIncomeRecordGoldDetailsCell.h +// YuMi +// +// Created by YuMi on 2023/6/30. +// + +#import +#import "XPIncomeRecordGoldDetailsModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPIncomeRecordGoldDetailsCell : UITableViewCell +@property (nonatomic,strong) XPIncomeRecordGoldDetailItemModel *detailModel; +@property (nonatomic,assign) NSInteger path; +///所属房间 +@property (nonatomic,strong,readonly) UILabel *roomView; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPIncomeRecordGoldDetailsCell.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPIncomeRecordGoldDetailsCell.m new file mode 100644 index 00000000..837f8cf0 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPIncomeRecordGoldDetailsCell.m @@ -0,0 +1,241 @@ +// +// XPIncomeRecordGoldDetailsCell.m +// YuMi +// +// Created by YuMi on 2023/6/30. +// + +#import "XPIncomeRecordGoldDetailsCell.h" +#import "NetImageView.h" +#import "NSString+Utils.h" +@interface XPIncomeRecordGoldDetailsCell() +@property (nonatomic,strong) UILabel *rankView; +///用户头像 +@property (nonatomic,strong) NetImageView *userImageView; +///用户昵称 +@property (nonatomic,strong) UILabel *userNameView; +///钻石流水 +@property (nonatomic,strong) UILabel *diamondsNumView; +///兑换金币 +@property (nonatomic,strong) UILabel *exchangeNumView; +///已兑 +@property (nonatomic,strong) UILabel *convertedView; +///结算金币 +@property (nonatomic,strong) UILabel *settlementNumView; + +@end +@implementation XPIncomeRecordGoldDetailsCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + if([reuseIdentifier isEqualToString:NSStringFromClass([XPIncomeRecordGoldDetailsCell class])]){ + [self initSubViews]; + [self initSubViewConstraints]; + }else{ + [self initSubViewsWithClan]; + [self initSubViewConstraintsWithClan]; + } + + } + return self; +} + +#pragma mark - Private Method + +- (void)initSubViews { + self.backgroundColor = [UIColor whiteColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.userImageView]; + [self.contentView addSubview:self.userNameView]; + [self.contentView addSubview:self.diamondsNumView]; + [self.contentView addSubview:self.exchangeNumView]; + [self.contentView addSubview:self.convertedView]; + [self.contentView addSubview:self.settlementNumView]; + self.userImageView.layer.cornerRadius = kGetScaleWidth(34)/2; + + +} +- (void)initSubViewConstraints { + [self.userImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(12)); + make.width.height.mas_equalTo(kGetScaleWidth(34)); + make.left.mas_equalTo(kGetScaleWidth(15)); + }]; + [self.userNameView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.userImageView.mas_bottom).mas_offset(kGetScaleWidth(6)); + make.right.equalTo(self.diamondsNumView.mas_left).mas_offset(-kGetScaleWidth(4)); + make.left.mas_equalTo(kGetScaleWidth(3)); + make.height.mas_equalTo(kGetScaleWidth(14)); + }]; + CGFloat width = kGetScaleWidth(247/3); + [self.settlementNumView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(width); + make.centerY.equalTo(self.userImageView); + make.height.mas_equalTo(kGetScaleWidth(17)); + make.right.mas_equalTo(0); + + }]; + + [self.exchangeNumView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.width.centerY.equalTo(self.settlementNumView); + make.right.equalTo(self.settlementNumView.mas_left); + }]; + [self.convertedView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(kGetScaleWidth(14)); + make.width.left.equalTo(self.exchangeNumView); + make.top.equalTo(self.exchangeNumView.mas_bottom).mas_offset(3); + }]; + [self.diamondsNumView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.width.centerY.equalTo(self.exchangeNumView); + make.right.equalTo(self.exchangeNumView.mas_left); + + + }]; +} +- (void)initSubViewsWithClan{ + self.backgroundColor = [UIColor whiteColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.rankView]; + [self.contentView addSubview:self.userImageView]; + [self.contentView addSubview:self.userNameView]; + [self.contentView addSubview:self.diamondsNumView]; + [self.contentView addSubview:self.exchangeNumView]; + [self.contentView addSubview:self.convertedView]; + [self.contentView addSubview:self.settlementNumView]; + self.userImageView.layer.cornerRadius = kGetScaleWidth(35)/2; +} +- (void)initSubViewConstraintsWithClan{ + [self.rankView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.bottom.equalTo(self.contentView); + make.width.mas_equalTo(kGetScaleWidth(50)); + }]; + [self.userImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(12)); + make.width.height.mas_equalTo(kGetScaleWidth(35)); + make.left.mas_equalTo(kGetScaleWidth(57)); + }]; + [self.userNameView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.userImageView.mas_bottom).mas_offset(kGetScaleWidth(6)); + make.centerX.equalTo(self.userImageView); + make.width.mas_equalTo(kGetScaleWidth(48)); + make.height.mas_equalTo(kGetScaleWidth(14)); + }]; + CGFloat width = kGetScaleWidth(277/3); + [self.diamondsNumView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.userNameView.mas_right).mas_offset(1); + make.width.mas_equalTo(width); + make.centerY.equalTo(self.userImageView); + make.height.mas_equalTo(kGetScaleWidth(17)); + }]; + [self.exchangeNumView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.width.centerY.equalTo(self.diamondsNumView); + make.left.equalTo(self.diamondsNumView.mas_right); + }]; + [self.convertedView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(kGetScaleWidth(14)); + make.width.left.equalTo(self.exchangeNumView); + make.top.equalTo(self.exchangeNumView.mas_bottom).mas_offset(3); + }]; + [self.settlementNumView mas_makeConstraints:^(MASConstraintMaker *make) { + + make.height.width.centerY.equalTo(self.exchangeNumView); + make.left.equalTo(self.exchangeNumView.mas_right); + + }]; + +} +-(void)setPath:(NSInteger)path{ + _path = path; + _rankView.text = [NSString stringWithFormat:@"%ld",_path + 1]; +} + +-(void)setDetailModel:(XPIncomeRecordGoldDetailItemModel *)detailModel{ + _detailModel = detailModel; + _userNameView.text = _detailModel.nick; + _userImageView.imageUrl = _detailModel.avatar; + _exchangeNumView.text = [NSString getDealNumwithstring:_detailModel.giftGolds]; + _diamondsNumView.text = [NSString getDealNumwithstring:_detailModel.giftDiamonds]; + _convertedView.text = [NSString stringWithFormat:YMLocalizedString(@"XPIncomeRecordGoldDetailsCell0"),[NSString getDealNumwithstring:_detailModel.exchangeGolds]]; + _settlementNumView.text = [NSString getDealNumwithstring:_detailModel.remainGolds]; +} +#pragma mark -懒加载 +- (NetImageView *)userImageView{ + if (!_userImageView){ + NetImageConfig *config = [[ NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _userImageView = [[NetImageView alloc]initWithConfig:config]; + + _userImageView.layer.masksToBounds = YES; + } + return _userImageView; +} + +- (UILabel *)userNameView { + if (!_userNameView) { + _userNameView = [[UILabel alloc] init]; + _userNameView.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + _userNameView.textColor = [DJDKMIMOMColor inputTextColor]; + _userNameView.textAlignment = NSTextAlignmentCenter; + _userNameView.text = @"0"; + } + return _userNameView; +} + + +- (UILabel *)diamondsNumView { + if (!_exchangeNumView) { + _diamondsNumView = [[UILabel alloc] init]; + _diamondsNumView.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _diamondsNumView.textColor = [DJDKMIMOMColor inputTextColor]; + _diamondsNumView.textAlignment = NSTextAlignmentCenter; + _diamondsNumView.text = @"0"; + } + return _diamondsNumView; +} + + +- (UILabel *)exchangeNumView { + if (!_exchangeNumView) { + _exchangeNumView = [[UILabel alloc] init]; + _exchangeNumView.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _exchangeNumView.textColor = [DJDKMIMOMColor inputTextColor]; + _exchangeNumView.textAlignment = NSTextAlignmentCenter; + _exchangeNumView.text = @"0"; + } + return _exchangeNumView; +} + +- (UILabel *)settlementNumView { + if (!_settlementNumView) { + _settlementNumView = [[UILabel alloc] init]; + _settlementNumView.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _settlementNumView.textColor = UIColorFromRGB(0xDD9E0B); + _settlementNumView.textAlignment = NSTextAlignmentCenter; + _settlementNumView.text = @"0"; + } + return _settlementNumView; +} + +- (UILabel *)convertedView { + if (!_convertedView) { + _convertedView = [[UILabel alloc] init]; + _convertedView.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + _convertedView.textColor = [DJDKMIMOMColor disableButtonTextColor]; + _convertedView.text = [NSString stringWithFormat:YMLocalizedString(@"XPIncomeRecordGoldDetailsCell0"),@"0"]; + _convertedView.textAlignment = NSTextAlignmentCenter; + } + return _convertedView; +} + +- (UILabel *)rankView { + if (!_convertedView) { + _rankView = [[UILabel alloc] init]; + _rankView.font = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; + _rankView.textColor = [DJDKMIMOMColor inputTextColor]; + _rankView.textAlignment = NSTextAlignmentCenter; + } + return _rankView; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineChooseGiveDiamondView.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineChooseGiveDiamondView.h new file mode 100644 index 00000000..c9c16595 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineChooseGiveDiamondView.h @@ -0,0 +1,33 @@ +// +// XPMineChooseGiveDiamondView.h +// YuMi +// +// Created by YuMi on 2022/10/19. +// + +#import +#import "XPMineGiveDiamondModel.h" +#import "XPMineGiveDiamondProtocol.h" +#import "UserInfoModel.h" +NS_ASSUME_NONNULL_BEGIN + + + +@interface XPMineChooseGiveDiamondView : UIView +@property (nonatomic,strong) XPMineGiveDiamondModel *giveDiamondModel;//被转赠人的个人信息 +@property (nonatomic,copy) NSString *diamond;//转赠的钻石 +@property (nonatomic,weak) id delegate;//代理 +@property (nonatomic,strong) UserInfoModel *userInfo;//我的个人信息 +@property (nonatomic,assign) int type;//0,钻石,1,礼物 +-(instancetype)initWithFrame:(CGRect)frame isHaveGiveDiamond:(BOOL)isHaveGiveDiamond isHaveGiveGift:(BOOL)isHaveGiveGift; +-(void)setListData:(NSMutableArray *)listData count:(NSInteger)count; +@end + + + + + + + + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineChooseGiveDiamondView.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineChooseGiveDiamondView.m new file mode 100644 index 00000000..8e3b92b0 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineChooseGiveDiamondView.m @@ -0,0 +1,489 @@ +// +// XPMineChooseGiveDiamondView.m +// YuMi +// +// Created by YuMi on 2022/10/19. +// + +#import "XPMineChooseGiveDiamondView.h" +#import "XPMineChooseGiveGiftViewCell.h" + +#import "XPGuildEmptyCollectionViewCell.h" +#import "GiftInfoModel.h" +#import "XPMineChooseGiveGiftView.h" +#import "NetImageView.h" +#import "ClientConfig.h" + +@interface XPMineChooseGiveDiamondView() +///头像 +@property (nonatomic,strong) NetImageView *headView; +///昵称 +@property (nonatomic,strong) UILabel *titleView; +///id +@property (nonatomic,strong) UILabel *idTitleView; +///选择类型 +@property (nonatomic,strong) UIStackView *typeStackView; +///选择钻石 +@property (nonatomic,strong) UIButton *diamondBtn; +///选择礼物 +@property (nonatomic,strong) UIButton *giftBtn; +///数量钻石图标 +@property (nonatomic,strong) UIImageView *numIcon; +/// 钻石数量 +@property (nonatomic,strong) UITextField *diamondNumView; +///我的钻石数量 +@property (nonatomic,strong) UILabel * myDiamondNumView; +///我的钻石数量钻石图标 +@property (nonatomic,strong) UIImageView *myDiamondIcon; +///确认 +@property (nonatomic,strong) UIButton *confirmBtn; +///分割线 +@property (nonatomic,strong) UIView *lineView; +///转赠礼物view +@property (nonatomic,strong) XPMineChooseGiveGiftView *giveGiftView; + +///是否有转赠钻石权限 +@property (nonatomic,assign) BOOL isHaveGiveDiamond; +///是否有转赠礼物权限 +@property (nonatomic,assign) BOOL isHaveGiveGift; +@end +@implementation XPMineChooseGiveDiamondView + +-(instancetype)initWithFrame:(CGRect)frame isHaveGiveDiamond:(BOOL)isHaveGiveDiamond isHaveGiveGift:(BOOL)isHaveGiveGift{ + self = [super initWithFrame:frame]; + if(self){ + self.isHaveGiveDiamond = isHaveGiveDiamond; + self.isHaveGiveGift = isHaveGiveGift; + [self initSubViews]; + [self initSubViewConstraints]; + if (self.isHaveGiveDiamond == NO && self.isHaveGiveGift == YES){ + [self chooseGiftAction]; + } + + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + + [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillShow:)name:UIKeyboardWillShowNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; + [self addSubview:self.headView]; + [self addSubview:self.titleView]; + [self addSubview:self.idTitleView]; + [self addSubview:self.typeStackView]; + [self.typeStackView addArrangedSubview:self.diamondBtn]; + [self.typeStackView addArrangedSubview:self.giftBtn]; + + + + [self addSubview:self.numIcon]; + [self addSubview:self.diamondNumView]; + [self addSubview:self.lineView]; + [self addSubview:self.myDiamondIcon]; + [self addSubview:self.myDiamondNumView]; + [self addSubview:self.confirmBtn]; + [self addSubview:self.giveGiftView]; + + + +} +- (void)initSubViewConstraints { + [self.headView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(kGetScaleWidth(50)); + make.top.mas_equalTo(kGetScaleWidth(16)); + make.left.mas_equalTo(kGetScaleWidth(15)); + }]; + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.headView.mas_right).mas_offset(kGetScaleWidth(10)); + make.top.equalTo(self.headView.mas_top).mas_offset(kGetScaleWidth(8)); + make.right.mas_equalTo(-kGetScaleWidth(15)); + make.height.mas_equalTo(kGetScaleWidth(17)); + }]; + [self.idTitleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.equalTo(self.titleView); + make.height.mas_equalTo(kGetScaleWidth(14)); + make.top.equalTo(self.titleView.mas_bottom).mas_offset(kGetScaleWidth(4)); + }]; + + + if(self.isHaveGiveGift == YES && self.isHaveGiveDiamond == YES){ + [self.typeStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(15)); + make.width.mas_equalTo(kGetScaleWidth(178)); + make.height.mas_equalTo(kGetScaleWidth(31)); + make.top.equalTo(self.headView.mas_bottom).mas_offset(kGetScaleWidth(25)); + }]; + self.type = 0; + self.giftBtn.hidden = NO; + self.diamondBtn.hidden = NO; + self.typeStackView.spacing = kGetScaleWidth(18); + }else if (self.isHaveGiveDiamond == YES && self.isHaveGiveGift == NO){ + [self.typeStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(15)); + make.width.mas_equalTo(kGetScaleWidth(80)); + make.height.mas_equalTo(kGetScaleWidth(31)); + make.top.equalTo(self.headView.mas_bottom).mas_offset(kGetScaleWidth(25)); + }]; + self.type = 0; + self.giftBtn.hidden = YES; + self.diamondBtn.hidden = NO; + self.typeStackView.spacing = kGetScaleWidth(0); + }else if (self.isHaveGiveDiamond == NO && self.isHaveGiveGift == YES){ + [self.typeStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(15)); + make.width.mas_equalTo(kGetScaleWidth(80)); + make.height.mas_equalTo(kGetScaleWidth(31)); + make.top.equalTo(self.headView.mas_bottom).mas_offset(kGetScaleWidth(25)); + }]; + self.type = 1; + self.giftBtn.hidden = NO; + self.diamondBtn.hidden = YES; + self.typeStackView.spacing = kGetScaleWidth(0); + + } + + [self.numIcon mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.headView); + make.width.height.mas_equalTo(kGetScaleWidth(24)); + make.top.equalTo(self.typeStackView.mas_bottom).mas_offset(kGetScaleWidth(35)); + + }]; + [self.diamondBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(kGetScaleWidth(80)); + make.height.mas_equalTo(kGetScaleWidth(31)); + }]; + [self.giftBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.equalTo(self.diamondBtn); + }]; + + [self.diamondNumView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.equalTo(self.titleView); + make.height.mas_equalTo(kGetScaleWidth(24)); + make.left.equalTo(self.numIcon.mas_right).mas_offset(kGetScaleWidth(10)); + make.centerY.equalTo(self.numIcon); + }]; + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(1); + make.left.equalTo(self.headView); + make.right.equalTo(self.titleView); + make.top.equalTo(self.numIcon.mas_bottom).mas_offset(kGetScaleWidth(6)); + }]; + [self.myDiamondIcon mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.equalTo(self.titleView); + make.width.height.equalTo(self.numIcon); + make.top.equalTo(self.numIcon.mas_bottom).mas_offset(kGetScaleWidth(9)); + }]; + [self.myDiamondNumView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.equalTo(self.myDiamondIcon.mas_left).mas_offset(-kGetScaleWidth(8)); + make.height.equalTo(self.titleView); + make.left.equalTo(self.headView); + make.centerY.equalTo(self.myDiamondIcon); + }]; + [self.confirmBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.headView); + make.right.equalTo(self.titleView); + make.top.equalTo(self.typeStackView.mas_bottom).mas_offset(kGetScaleWidth(162)); + make.height.mas_equalTo(kGetScaleWidth(46)); + }]; + + [self.giveGiftView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(0); + make.right.mas_equalTo(0); + make.top.equalTo(self.typeStackView.mas_bottom).mas_offset(kGetScaleWidth(20)); + make.height.mas_equalTo(kGetScaleWidth(370)); + }]; + + +} +- (void)keyboardWillShow:(NSNotification *)notification + +{ if(!self.giveGiftView.textField.isFirstResponder){return;} + NSDictionary *userInfo = [notification userInfo]; + CGFloat curkeyBoardHeight = [[[notification userInfo]objectForKey:@"UIKeyboardBoundsUserInfoKey"]CGRectValue].size.height; + CGRect begin = [[[notification userInfo]objectForKey:@"UIKeyboardFrameBeginUserInfoKey"]CGRectValue]; + CGRect end = [[[notification userInfo]objectForKey:@"UIKeyboardFrameEndUserInfoKey"]CGRectValue]; + // 第三方键盘回调三次问题,监听仅执行最后一次 + + if( begin.size.height > 0 && (begin.origin.y - end.origin.y > 0)){ + CGFloat keyBoardHeight = curkeyBoardHeight; + CGFloat animationDuration = [userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]; + [self.superview layoutIfNeeded]; + [UIView animateWithDuration:animationDuration animations:^{ + [self mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(-keyBoardHeight); + }]; + [self.superview layoutIfNeeded]; + }]; + + } + +} +- (void)keyboardWillHide:(NSNotification *)notification{ + if(!self.giveGiftView.textField.isFirstResponder){return;} + //获取键盘的高度 + NSDictionary *userInfo = [notification userInfo]; + NSValue *keyboardValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey]; + CGRect keyboardRect = [keyboardValue CGRectValue]; + CGFloat animationDuration = [userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]; + //做自定义事件 + [self.superview layoutIfNeeded]; + [UIView animateWithDuration:animationDuration animations:^{ + [self mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(0); + }]; + + [self.superview layoutIfNeeded]; + }completion:^(BOOL finished) { + + }]; + +} +-(void)dealloc{ + [[NSNotificationCenter defaultCenter]removeObserver:self]; +} + +-(void)setListData:(NSMutableArray *)listData count:(NSInteger)count{ + [self.giveGiftView setListData:listData count:count]; +} +#pragma mark- UITextFieldDelegate +-(void)textFieldDidChange:(UITextField *)textField{ + self.confirmBtn.selected = textField.text.length > 0; +} +-(void)textFieldDidChangeWithText:(NSString *)text{ + if(self.giveGiftView.chooseGiftModel != nil){ + self.confirmBtn.selected = text.length > 0; + } + +} +- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ + ClientConfig *config = [ClientConfig shareConfig]; + NSString *diamond = [NSString stringWithFormat:@"%ld",config.configInfo.giveDiamondOnceLimitNum]; + if((textField.text.length + string.length) > diamond.length){ + return NO; + } + return YES; +} +#pragma mark -btn方法 +///确认 +-(void)confirmAction{ + if(self.confirmBtn.selected == NO){ + return; + } + if(self.type == 0){ + [self.diamondNumView resignFirstResponder]; + if(self.delegate && [self.delegate respondsToSelector:@selector(confirmActionWithText:)]){ + [self.delegate confirmActionWithText:self.diamondNumView.text]; + } + return; + } + + if(self.giveGiftView.chooseGiftModel == nil){ + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPMineChooseGiveGiftView2")]; + return; + } + NSInteger count = [self.giveGiftView.giftCount integerValue]; + if(count == 0){ + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPMineChooseGiveGiftView4")]; + return; + } + if(count > self.giveGiftView.chooseGiftModel.count){ + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPMineChooseGiveGiftView3")]; + return; + } + + + [self.giveGiftView resignFirstResponder]; + if(self.delegate && [self.delegate respondsToSelector:@selector(confirmActionWithText: chooseGiftModel:)]){ + [self.delegate confirmActionWithText:self.giveGiftView.giftCount chooseGiftModel:self.giveGiftView.chooseGiftModel]; + } +} + +///选择钻石 +-(void)chooseDiamondAction{ + self.diamondBtn.selected = YES; + self.giftBtn.selected = NO; + self.giveGiftView.hidden = YES; + self.type = 0; + self.confirmBtn.selected = self.diamondNumView.text.length > 0; + + [self.confirmBtn mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.typeStackView.mas_bottom).mas_offset(kGetScaleWidth(162)); + }]; +} +///选择礼物 +-(void)chooseGiftAction{ + self.type = 1; + self.diamondBtn.selected = NO; + self.giftBtn.selected = YES; + self.giveGiftView.hidden = NO; + if(self.giveGiftView.chooseGiftModel != nil){ + self.confirmBtn.selected = self.giveGiftView.giftCount.length > 0; + }else{ + self.confirmBtn.selected = NO; + } + [self.confirmBtn mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.typeStackView.mas_bottom).mas_offset(kGetScaleWidth(440)); + }]; +} +-(void)setGiveDiamondModel:(XPMineGiveDiamondModel *)giveDiamondModel{ + _giveDiamondModel = giveDiamondModel; + _headView.imageUrl = _giveDiamondModel.targetAvatar; + _titleView.text = _giveDiamondModel.targetNick; + _idTitleView.text = [NSString stringWithFormat:@"ID:%@",_giveDiamondModel.targetErbanNo]; +} +-(void)setDiamond:(NSString *)diamond{ + _diamond = diamond; + _myDiamondNumView.text = [NSString stringWithFormat:@"%@%@",YMLocalizedString(@"XPMineChooseGiveDiamondView0"),diamond]; +} + +#pragma mark - 懒加载 +- (NetImageView *)headView{ + if (!_headView){ + NetImageConfig *config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _headView = [[NetImageView alloc]initWithConfig:config]; + _headView.layer.cornerRadius = kGetScaleWidth(25); + _headView.layer.masksToBounds = YES; + } + return _headView; +} + +-(UILabel *)titleView{ + if (!_titleView){ + _titleView = [UILabel new]; + _titleView.textColor = [DJDKMIMOMColor inputTextColor]; + _titleView.font = [UIFont systemFontOfSize:kGetScaleWidth(14) weight:UIFontWeightMedium]; + } + return _titleView; +} +-(UILabel *)idTitleView{ + if (!_idTitleView){ + _idTitleView = [UILabel new]; + _idTitleView.font = [UIFont systemFontOfSize:kGetScaleWidth(12) weight:UIFontWeightMedium]; + _idTitleView.textColor = [DJDKMIMOMColor disableButtonTextColor]; + } + return _idTitleView; +} + +-(UIImageView *)numIcon{ + if (!_numIcon){ + _numIcon = [UIImageView new]; + _numIcon.image = [UIImage imageNamed:@"mine_give_diamone_icon"]; + } + return _numIcon; +} + +- (UITextField *)diamondNumView{ + if (!_diamondNumView){ + _diamondNumView = [UITextField new]; + _diamondNumView.keyboardType = UIKeyboardTypeNumberPad; + _diamondNumView.font = [UIFont systemFontOfSize:kGetScaleWidth(30) weight:UIFontWeightMedium]; + _diamondNumView.textColor = [DJDKMIMOMColor inputTextColor]; + _diamondNumView.attributedPlaceholder = [[NSMutableAttributedString alloc]initWithString:@"0" attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:kGetScaleWidth(30) weight:UIFontWeightRegular],NSForegroundColorAttributeName:[DJDKMIMOMColor disableButtonTextColor]}]; + _diamondNumView.textAlignment = NSTextAlignmentRight; + [_diamondNumView addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; + _diamondNumView.delegate = self; + } + return _diamondNumView; +} +-(UIView *)lineView{ + if (!_lineView){ + _lineView = [UIView new]; + _lineView.backgroundColor = UIColorFromRGB(0xF7F7F7); + } + return _lineView; +} +-(UILabel *)myDiamondNumView{ + if (!_myDiamondNumView){ + _myDiamondNumView = [UILabel new]; + _myDiamondNumView.textAlignment = NSTextAlignmentRight; + _myDiamondNumView.text = [NSString stringWithFormat:@"%@0",YMLocalizedString(@"XPMineChooseGiveDiamondView0")]; + _myDiamondNumView.font = [UIFont systemFontOfSize:kGetScaleWidth(14) weight:UIFontWeightMedium]; + _myDiamondNumView.textColor = [DJDKMIMOMColor disableButtonTextColor]; + } + return _myDiamondNumView; +} +-(UIImageView *)myDiamondIcon{ + if (!_myDiamondIcon){ + _myDiamondIcon = [UIImageView new]; + _myDiamondIcon.image = [UIImage imageNamed:@"mine_give_diamone_icon"]; + } + return _myDiamondIcon; +} +-(UIButton *)confirmBtn{ + if (!_confirmBtn){ + _confirmBtn = [UIButton new]; + [_confirmBtn setTitle:YMLocalizedString(@"XPMineChooseGiveDiamondView1") forState:UIControlStateNormal]; + [_confirmBtn setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateNormal]; + [_confirmBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; + [_confirmBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(KScreenWidth - kGetScaleWidth(30), kGetScaleWidth(46))] forState:UIControlStateNormal]; + [_confirmBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientMiddleColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(KScreenWidth - kGetScaleWidth(30), kGetScaleWidth(46))] forState:UIControlStateSelected]; + _confirmBtn.layer.cornerRadius = kGetScaleWidth(46) / 2; + _confirmBtn.layer.masksToBounds = YES; + [_confirmBtn addTarget:self action:@selector(confirmAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _confirmBtn; +} +- (XPMineChooseGiveGiftView *)giveGiftView{ + if (!_giveGiftView){ + _giveGiftView = [[XPMineChooseGiveGiftView alloc]initWithFrame:CGRectZero]; + _giveGiftView.hidden = YES; + _giveGiftView.delegate = self; + } + return _giveGiftView; +} + +- (UIStackView *)typeStackView{ + if (!_typeStackView) { + _typeStackView = [[UIStackView alloc] init]; + _typeStackView.axis = UILayoutConstraintAxisHorizontal; + _typeStackView.distribution = UIStackViewDistributionFill; + _typeStackView.alignment = UIStackViewAlignmentFill; + + } + return _typeStackView; +} + +- (UIButton *)diamondBtn{ + if (!_diamondBtn){ + _diamondBtn = [UIButton new]; + UIImage *noChooseImage = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(80), kGetScaleWidth(31))]; + UIImage *chooseImage = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientMiddleColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(80), kGetScaleWidth(31))]; + [_diamondBtn setBackgroundImage:noChooseImage forState:UIControlStateNormal]; + [_diamondBtn setBackgroundImage:chooseImage forState:UIControlStateSelected]; + _diamondBtn.titleLabel.font = [UIFont systemFontOfSize:14]; + [_diamondBtn setTitle:YMLocalizedString(@"XPMineChooseGiveDiamondView2") forState:UIControlStateNormal]; + [_diamondBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; + [_diamondBtn setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; + _diamondBtn.selected = YES; + _diamondBtn.layer.cornerRadius = kGetScaleWidth((31))/2; + _diamondBtn.layer.masksToBounds = YES; + [_diamondBtn addTarget:self action:@selector(chooseDiamondAction) forControlEvents:UIControlEventTouchUpInside]; + + } + return _diamondBtn; +} +-(UIButton *)giftBtn{ + if (!_giftBtn){ + _giftBtn = [UIButton new]; + UIImage *noChooseImage = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(80), kGetScaleWidth(31))]; + UIImage *chooseImage = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientMiddleColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(80), kGetScaleWidth(31))]; + [_giftBtn setBackgroundImage:noChooseImage forState:UIControlStateNormal]; + [_giftBtn setBackgroundImage:chooseImage forState:UIControlStateSelected]; + _giftBtn.titleLabel.font = [UIFont systemFontOfSize:14]; + [_giftBtn setTitle:YMLocalizedString(@"XPMineChooseGiveDiamondView3") forState:UIControlStateNormal]; + [_giftBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; + [_giftBtn setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; + _giftBtn.selected = NO; + _giftBtn.layer.cornerRadius = kGetScaleWidth((31))/2; + _giftBtn.layer.masksToBounds = YES; + [_giftBtn addTarget:self action:@selector(chooseGiftAction) forControlEvents:UIControlEventTouchUpInside]; + + } + return _giftBtn; +} +@end + + diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineChooseGiveGiftView.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineChooseGiveGiftView.h new file mode 100644 index 00000000..d1a85519 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineChooseGiveGiftView.h @@ -0,0 +1,28 @@ +// +// XPMineChooseGiveGiftView.h +// YuMi +// +// Created by YuMi on 2022/11/2. +// + +#import +#import "GiftInfoModel.h" +NS_ASSUME_NONNULL_BEGIN +@protocol XPMineChooseGiveGiftViewDelegate + +-(void)textFieldDidChangeWithText:(NSString *)text; + +@end + +@interface XPMineChooseGiveGiftView : UIView +@property (nonatomic,strong) UITextField *textField; +@property (nonatomic,copy) NSString *giftCount; +@property (nonatomic,assign) NSInteger curPage; +@property (nonatomic,assign) NSInteger count; +@property (nonatomic,weak) id delegate; +@property (nonatomic,strong) GiftInfoModel *chooseGiftModel; +-(void)setListData:(NSMutableArray *)listData count:(NSInteger)count; +-(void)resignFirstResponder; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineChooseGiveGiftView.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineChooseGiveGiftView.m new file mode 100644 index 00000000..9ce95574 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineChooseGiveGiftView.m @@ -0,0 +1,270 @@ +// +// XPMineChooseGiveGiftView.m +// YuMi +// +// Created by YuMi on 2022/11/2. +// +#import "XPPageControl.h" +#import "XPMineChooseGiveGiftView.h" +#import "XPMineChooseGiveGiftViewCell.h" +#import "XPGuildEmptyCollectionViewCell.h" +#import "UIView+Corner.h" +@interface XPMineChooseGiveGiftView() +@property (nonatomic,strong) UICollectionView *collectionView; +@property (nonatomic,strong) UIView *bgView; +@property (nonatomic,strong) XPPageControl *pageControl; +@property (nonatomic,strong) NSMutableArray *listData; +@property (nonatomic,strong) NSIndexPath *indexPath; + +@property (nonatomic,strong) UILabel *numView; + +@property (nonatomic,strong) UIView *lineView; +@property (nonatomic,strong) UIButton *allBtn; +@end +@implementation XPMineChooseGiveGiftView + +-(instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if(self){ + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.bgView]; + [self addSubview:self.collectionView]; + [self addSubview:self.pageControl]; + [self addSubview:self.numView]; + [self addSubview:self.textField]; + [self addSubview:self.lineView]; + [self addSubview:self.allBtn]; +} + +- (void)initSubViewConstraints { + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(15)); + make.right.mas_equalTo(-kGetScaleWidth(15)); + make.top.equalTo(self); + make.height.mas_equalTo(kGetScaleWidth(290)); + }]; + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(15)); + make.right.mas_equalTo(-kGetScaleWidth(15)); + make.top.equalTo(self); + make.height.mas_equalTo(kGetScaleWidth(248)); + }]; + [self.pageControl mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.equalTo(self); + make.top.mas_equalTo(kGetScaleWidth(269)); + make.height.mas_equalTo(kGetScaleWidth(3)); + make.width.mas_equalTo(0); + }]; + [self.textField mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-kGetScaleWidth(15)); + make.height.mas_equalTo(kGetScaleWidth(17)); + make.width.mas_equalTo(kGetScaleWidth(156)); + make.top.equalTo(self.bgView.mas_bottom).mas_offset(kGetScaleWidth(23)); + }]; + [self.numView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.equalTo(self.textField); + make.right.equalTo(self.textField.mas_left).mas_offset(-kGetScaleWidth(10)); + }]; + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.equalTo(self.textField); + make.left.equalTo(self.numView); + make.height.mas_equalTo(1); + make.top.equalTo(self.textField.mas_bottom).mas_offset(kGetScaleWidth(11)); + }]; + [self.allBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(kGetScaleWidth(36)); + make.height.mas_equalTo(kGetScaleWidth(19)); + make.right.equalTo(self.textField); + make.top.equalTo(self.lineView.mas_bottom).mas_offset(kGetScaleWidth(10)); + }]; +} +-(void)setListData:(NSMutableArray *)listData count:(NSInteger)count{ + self.listData = listData; + if(listData.count == 0)return; + [self.collectionView reloadData]; + + self.pageControl.count = count; + self.pageControl.curPage = 1; + self.pageControl.hidden = count == 1; +} +-(void)resignFirstResponder{ + [self.textField resignFirstResponder]; +} +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ + if(self.listData.count == 0){ + XPGuildEmptyCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPGuildEmptyCollectionViewCell class]) forIndexPath:indexPath]; + [cell setConstraints]; + [cell setTitle:YMLocalizedString(@"XPMineChooseGiveGiftView5")]; + return cell; + } + NSInteger count = indexPath.section / 4; + NSInteger index = indexPath.row == 0 ? indexPath.section + count * 4 : indexPath.section + count * 4 + 4; + GiftInfoModel *giftModel = self.listData[index]; + if(giftModel.isEmpty == YES){ + UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([UICollectionViewCell class]) forIndexPath:indexPath]; + cell.backgroundColor = [UIColor clearColor]; + return cell; + } + XPMineChooseGiveGiftViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPMineChooseGiveGiftViewCell class]) forIndexPath:indexPath]; + cell.giftModel = giftModel; + cell.isChoose = NO; + if(self.indexPath != nil){ + if(self.indexPath.section == indexPath.section){ + cell.isChoose = self.indexPath.row == indexPath.row; + } + } + + return cell; +} + +- (NSInteger)collectionView:(nonnull UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + if(self.listData.count == 0)return 1; + return 2; + + +} +-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ + NSInteger page = scrollView.contentOffset.x / (KScreenWidth - kGetScaleWidth(30)); + self.pageControl.curPage = ceil(page+1); +} +-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{ + + return self.listData.count > 0 ? self.listData.count / 2 : 1; +} +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{ + if(self.listData.count == 0)return self.collectionView.frame.size; + return CGSizeMake(kGetScaleWidth(72), kGetScaleWidth(107)); +} +- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{ + if(self.listData.count == 0)return UIEdgeInsetsMake(0,0, 0, 0); + if(section == 0){ + return UIEdgeInsetsMake(kGetScaleWidth(17), kGetScaleWidth(14), 0, 0); + }else if (section == self.listData.count / 2 - 1){ + return UIEdgeInsetsMake(kGetScaleWidth(17), kGetScaleWidth(10), 0, kGetScaleWidth(14)); + }else if (section % 4 == 0){ + return UIEdgeInsetsMake(kGetScaleWidth(17), kGetScaleWidth(28), 0, 0); + } + return UIEdgeInsetsMake(kGetScaleWidth(17), kGetScaleWidth(10), 0, 0); +} +-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{ + + id cell = [collectionView cellForItemAtIndexPath:indexPath]; + if([cell isKindOfClass:[XPMineChooseGiveGiftViewCell class]]){ + XPMineChooseGiveGiftViewCell *getCell = (XPMineChooseGiveGiftViewCell *)cell; + self.indexPath = indexPath; + self.chooseGiftModel = getCell.giftModel; + [self.collectionView reloadData]; + if(self.delegate && [self.delegate respondsToSelector:@selector(textFieldDidChangeWithText:)]){ + [self.delegate textFieldDidChangeWithText:self.textField.text]; + } + } + + +} +- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section{ + return kGetScaleWidth(10); +} +#pragma mark- UITextFieldDelegate +-(void)textFieldDidChange:(UITextField *)textField{ + if(self.delegate && [self.delegate respondsToSelector:@selector(textFieldDidChangeWithText:)]){ + [self.delegate textFieldDidChangeWithText:textField.text]; + } +} +-(void)allChooseAction{ + if(self.chooseGiftModel == nil){ + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPMineChooseGiveGiftView2")]; + return; + } + self.textField.text = @(self.chooseGiftModel.count).stringValue; +} +#pragma mark -懒加载 + + +- (UICollectionView *)collectionView{ + if (!_collectionView){ + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc]init]; + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + _collectionView = [[UICollectionView alloc]initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.delegate = self; + _collectionView.dataSource = self; + _collectionView.pagingEnabled = YES; + _collectionView.showsHorizontalScrollIndicator = NO; + _collectionView.backgroundColor = [UIColor clearColor]; + [_collectionView registerClass:[XPMineChooseGiveGiftViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPMineChooseGiveGiftViewCell class])]; + [_collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([UICollectionViewCell class])]; + [_collectionView registerClass:[XPGuildEmptyCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPGuildEmptyCollectionViewCell class])]; + } + return _collectionView; +} + +-(UIView *)bgView{ + if (!_bgView){ + _bgView = [UIView new]; + _bgView.backgroundColor = UIColorFromRGB(0xF3F5FA); + [_bgView setCornerWithLeftTopCorner:8 rightTopCorner:8 bottomLeftCorner:8 bottomRightCorner:8 size:CGSizeMake(kGetScaleWidth(345), kGetScaleWidth(290))]; + } + return _bgView; +} +- (XPPageControl *)pageControl{ + if (!_pageControl){ + _pageControl = [[XPPageControl alloc]init]; + _pageControl.backgroundColor = [UIColor clearColor]; + + } + return _pageControl; +} + +- (UILabel *)numView { + if (!_numView) { + _numView = [[UILabel alloc] init]; + _numView.font = [UIFont systemFontOfSize:11]; + _numView.textColor = [DJDKMIMOMColor disableButtonTextColor]; + _numView.text = YMLocalizedString(@"XPMineChooseGiveGiftView0"); + } + return _numView; +} + +-(UITextField *)textField{ + if (!_textField){ + _textField = [UITextField new]; + _textField.keyboardType = UIKeyboardTypeNumberPad; + _textField.font = [UIFont systemFontOfSize:kGetScaleWidth(20) weight:UIFontWeightMedium]; + _textField.textColor = [DJDKMIMOMColor inputTextColor]; + _textField.attributedPlaceholder = [[NSMutableAttributedString alloc]initWithString:@"0" attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:kGetScaleWidth(20) weight:UIFontWeightRegular],NSForegroundColorAttributeName:[DJDKMIMOMColor disableButtonTextColor]}]; + _textField.textAlignment = NSTextAlignmentRight; + _textField.text = @"1"; + [_textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; + } + return _textField; +} +-(UIView *)lineView{ + if (!_lineView){ + _lineView = [UIView new]; + _lineView.backgroundColor = UIColorFromRGB(0xF7F7F7); + } + return _lineView; +} +-(UIButton *)allBtn{ + if (!_allBtn){ + _allBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_allBtn setTitle:YMLocalizedString(@"XPMineChooseGiveGiftView1") forState:UIControlStateNormal]; + _allBtn.titleLabel.font = [UIFont systemFontOfSize:12]; + [_allBtn setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateNormal]; + _allBtn.backgroundColor = UIColorFromRGB(0xF3F5FA); + [_allBtn setCornerWithLeftTopCorner:4 rightTopCorner:4 bottomLeftCorner:4 bottomRightCorner:4 size:CGSizeMake(kGetScaleWidth(36), kGetScaleWidth(19))]; + [_allBtn addTarget:self action:@selector(allChooseAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _allBtn; +} +-(NSString *)giftCount{ + return self.textField.text; +} + +@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineChooseGiveGiftViewCell.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineChooseGiveGiftViewCell.h new file mode 100644 index 00000000..cce76cea --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineChooseGiveGiftViewCell.h @@ -0,0 +1,18 @@ +// +// XPMineChooseGiveGiftViewCell.h +// YuMi +// +// Created by YuMi on 2022/11/1. +// + +#import +#import "GiftInfoModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineChooseGiveGiftViewCell : UICollectionViewCell +@property (nonatomic,strong) GiftInfoModel * giftModel; +@property (nonatomic,assign) BOOL isChoose; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineChooseGiveGiftViewCell.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineChooseGiveGiftViewCell.m new file mode 100644 index 00000000..edad1b2a --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineChooseGiveGiftViewCell.m @@ -0,0 +1,105 @@ +// +// XPMineChooseGiveGiftViewCell.m +// YuMi +// +// Created by YuMi on 2022/11/1. +// + +#import "XPMineChooseGiveGiftViewCell.h" +#import "NetImageView.h" +#import "UIView+Corner.h" +@interface XPMineChooseGiveGiftViewCell() +///礼物图片 +@property (nonatomic,strong) NetImageView *giftImageView; +///礼物名称 +@property (nonatomic,strong) UILabel *giftNameView; +///礼物数量 +@property (nonatomic,strong) UILabel *giftNumView; +@end +@implementation XPMineChooseGiveGiftViewCell +-(instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if(self){ + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + + [self.contentView addSubview:self.giftImageView]; + [self.contentView addSubview:self.giftNameView]; + [self.contentView addSubview:self.giftNumView]; +} +- (void)initSubViewConstraints { + [self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(kGetScaleWidth(72)); + make.top.centerX.equalTo(self.contentView); + + }]; + [self.giftNameView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.equalTo(self.contentView); + make.height.mas_equalTo(kGetScaleWidth(12)); + make.top.equalTo(self.giftImageView.mas_bottom).mas_offset(kGetScaleWidth(6)); + }]; + [self.giftNumView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.left.equalTo(self.contentView); + make.height.equalTo(self.giftNameView); + make.top.equalTo(self.giftNameView.mas_bottom).mas_offset(kGetScaleWidth(5)); + }]; +} +-(void)setIsChoose:(BOOL)isChoose{ + _isChoose = isChoose; + UIImage *image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientMiddleColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(72), kGetScaleWidth(72))]; + UIColor *lineColor = [UIColor colorWithPatternImage:image]; + _giftImageView.layer.borderColor = _isChoose ? lineColor.CGColor : [UIColor clearColor].CGColor; +} +-(void)setGiftModel:(GiftInfoModel *)giftModel{ + _giftModel = giftModel; + _giftImageView.imageUrl = _giftModel.giftUrl; + _giftNameView.text = _giftModel.giftName; + _giftNumView.text = [NSString stringWithFormat:@"x%@",@(_giftModel.count)]; +} +#pragma mark -懒加载 + + +- (NetImageView *)giftImageView{ + if (!_giftImageView){ + NetImageConfig *config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _giftImageView = [[NetImageView alloc]initWithConfig:config]; + [_giftImageView setCornerWithLeftTopCorner:8 rightTopCorner:8 bottomLeftCorner:8 bottomRightCorner:8 size:CGSizeMake(kGetScaleWidth(72), kGetScaleWidth(72))]; + _giftImageView.backgroundColor = [UIColor whiteColor]; + UIImage *image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientMiddleColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(72), kGetScaleWidth(72))]; + UIColor *lineColor = [UIColor colorWithPatternImage:image]; + _giftImageView.layer.cornerRadius = kGetScaleWidth(8); + _giftImageView.layer.masksToBounds = YES; + _giftImageView.layer.borderWidth = 1; + _giftImageView.layer.borderColor = lineColor.CGColor; + } + return _giftImageView; +} + +- (UILabel *)giftNameView { + if (!_giftNameView) { + _giftNameView = [[UILabel alloc] init]; + _giftNameView.font = [UIFont systemFontOfSize:12]; + _giftNameView.textColor = UIColorFromRGB(0x6D6B89); + _giftNameView.textAlignment = NSTextAlignmentCenter; + } + return _giftNameView; +} + +- (UILabel *)giftNumView { + if (!_giftNumView) { + _giftNumView = [[UILabel alloc] init]; + _giftNumView.font = [UIFont systemFontOfSize:12]; + _giftNumView.textColor = UIColorFromRGB(0x6D6B89); + } + return _giftNumView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineConfirmGiveDiamondView.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineConfirmGiveDiamondView.h new file mode 100644 index 00000000..5d575987 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineConfirmGiveDiamondView.h @@ -0,0 +1,46 @@ +// +// XPMineConfirmGiveDiamondView.h +// YuMi +// +// Created by YuMi on 2022/10/20. +// + +#import +#import "UserInfoModel.h" +#import "XPMineGiveDiamondModel.h" +NS_ASSUME_NONNULL_BEGIN + + + + + + +@protocol XPMineConfirmGiveDiamondViewDelegate + +///确认支付 +- (void)xpMineConfirmGiveDiamondViewComplete; + + + +@end + +@interface XPMineConfirmGiveDiamondView : UIView +@property (nonatomic,strong) XPMineGiveDiamondModel *giveDiamondModel; +@property (nonatomic,assign) int type;//1,钻石,2,金币兑换钻石 +@property (nonatomic,assign) NSInteger inputDiamonds;//转赠数量 +@property (nonatomic,assign) NSInteger goldNum;//消耗钻石数 +@property (nonatomic,assign) double poundage;//手续费 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END + +/*************************************华丽分割线********************************************************/ + + +@interface XPMineConfirmGiveDiamondItemView : UIView + +@property(nonatomic,copy)NSString *title; + +@property(nonatomic,copy)NSString *num; +@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineConfirmGiveDiamondView.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineConfirmGiveDiamondView.m new file mode 100644 index 00000000..a9c9f1b2 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineConfirmGiveDiamondView.m @@ -0,0 +1,346 @@ +// +// XPMineConfirmGiveDiamondView.m +// YuMi +// +// Created by YuMi on 2022/10/20. +// + +#import "XPMineConfirmGiveDiamondView.h" +#import "ClientConfig.h" +#import "TTPopup.h" +#import "UIButton+EnlargeTouchArea.h" +@interface XPMineConfirmGiveDiamondView() +///转赠人 +@property (nonatomic,strong) UILabel *titleView; +///数量 +@property (nonatomic,strong) UILabel *numView; +///返回 +@property (nonatomic,strong) UIButton *backVeiw; +/// 手续费 +@property (nonatomic,strong) XPMineConfirmGiveDiamondItemView *poundageView; +/// 总钻石 +@property (nonatomic,strong) XPMineConfirmGiveDiamondItemView *totalNumView; +///确认 +@property (nonatomic,strong) UIButton *confirmBtn; +///分割线 +@property (nonatomic,strong) UIView *lineView; + +@end +@implementation XPMineConfirmGiveDiamondView + +-(instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if(self){ + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor whiteColor]; + self.layer.cornerRadius = 12; + self.layer.masksToBounds = YES; + [self addSubview:self.backVeiw]; + [self addSubview:self.titleView]; + [self addSubview:self.numView]; + [self addSubview:self.lineView]; + [self addSubview:self.poundageView]; + [self addSubview:self.totalNumView]; + [self addSubview:self.confirmBtn]; +} +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(kGetScaleWidth(310)); + make.height.mas_equalTo(kGetScaleWidth(250)); + }]; + [self.backVeiw mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(kGetScaleWidth(22)); + make.top.mas_equalTo(kGetScaleWidth(10)); + make.right.mas_equalTo(-kGetScaleWidth(15)); + }]; + + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(20)); + make.right.mas_equalTo(-kGetScaleWidth(20)); + make.top.mas_equalTo(kGetScaleWidth(36)); + make.height.mas_equalTo(kGetScaleWidth(21)); + }]; + + [self.numView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.equalTo(self.titleView); + make.height.mas_equalTo(kGetScaleWidth(24)); + make.top.mas_equalTo(kGetScaleWidth(78)); + }]; + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.equalTo(self.titleView); + make.height.mas_equalTo(1); + make.top.mas_equalTo(kGetScaleWidth(113)); + }]; + + [self.poundageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.equalTo(self); + make.height.mas_equalTo(kGetScaleWidth(17)); + make.top.mas_equalTo(kGetScaleWidth(125)); + }]; + + [self.totalNumView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.equalTo(self); + make.height.mas_equalTo(kGetScaleWidth(17)); + make.top.mas_equalTo(kGetScaleWidth(150)); + }]; + [self.confirmBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(kGetScaleWidth(37)); + make.width.mas_equalTo(kGetScaleWidth(135)); + make.top.mas_equalTo(kGetScaleWidth(189)); + make.centerX.equalTo(self); + }]; + +} + +#pragma mark -set get 方法 +-(void)setType:(int)type{ + _type = type; + if(_type == 2){ + _totalNumView.hidden = YES; + _poundageView.title = YMLocalizedString(@"XPMineConfirmGiveDiamondView7"); + _titleView.text = YMLocalizedString(@"XPMineConfirmGiveDiamondView5"); + [_confirmBtn setTitle:YMLocalizedString(@"XPMineConfirmGiveDiamondView8") forState:UIControlStateNormal]; + + } +} +- (void)setGoldNum:(NSInteger)goldNum{ + _goldNum = goldNum; + if(_type == 2){ + [_poundageView setNum:[NSString stringWithFormat:YMLocalizedString(@"XPMineConfirmGiveDiamondView6"),_goldNum]]; + } +} +- (void)setInputDiamonds:(NSInteger)inputDiamonds{ + _inputDiamonds = inputDiamonds; + if(_type == 2){ + NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWithString:@(_inputDiamonds).stringValue attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:kGetScaleWidth(30) weight:UIFontWeightMedium],NSForegroundColorAttributeName:[DJDKMIMOMColor inputTextColor]}]; + NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; + UIImage *iconImage = [UIImage imageNamed:@"mine_give_diamone_icon"];; + attachment.bounds = CGRectMake(0, roundf(self.numView.font.capHeight - 24)/2.f, 24, 24); + attachment.image =iconImage; + NSAttributedString * starAttribute = [NSMutableAttributedString attributedStringWithAttachment:(NSTextAttachment *)attachment]; + [attributedString insertAttributedString:starAttribute atIndex:attributedString.length]; + self.numView.attributedText = attributedString; + } +} +-(void)setGiveDiamondModel:(XPMineGiveDiamondModel *)giveDiamondModel{ + _giveDiamondModel = giveDiamondModel; + _titleView.text = [NSString stringWithFormat:YMLocalizedString(@"XPMineConfirmGiveDiamondView1"),_giveDiamondModel.targetNick]; + NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; + NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWithString:@(self.inputDiamonds).stringValue attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:kGetScaleWidth(30) weight:UIFontWeightMedium],NSForegroundColorAttributeName:[DJDKMIMOMColor inputTextColor]}]; + UIImage *iconImage = [UIImage imageNamed:@"mine_give_diamone_icon"];; + attachment.bounds = CGRectMake(0, roundf(self.numView.font.capHeight - 24)/2.f, 24, 24); + + attachment.image =iconImage; + NSAttributedString * starAttribute = [NSMutableAttributedString attributedStringWithAttachment:(NSTextAttachment *)attachment]; + [attributedString insertAttributedString:starAttribute atIndex:attributedString.length]; + self.numView.attributedText = attributedString; + self.poundageView.hidden = NO; + self.totalNumView.hidden = NO; + self.lineView.hidden = NO; + if(self.poundage > 0){ + ClientConfig *config = [ClientConfig shareConfig]; + [_poundageView setNum:[NSString stringWithFormat:@"%@%%",@(config.configInfo.giveDiamondRate * 100)]]; + double totalNum = self.inputDiamonds + self.poundage; + + NSString *num = [NSString stringWithFormat:@"%.2f",totalNum]; + [_totalNumView setNum:[NSString stringWithFormat:@"%@%@",[self removeSuffix:num],YMLocalizedString(@"XPMineConfirmGiveDiamondView4")] ]; + return; + } + [self changeConstraintsAction]; + self.poundageView.hidden = YES; + self.totalNumView.hidden = YES; + self.lineView.hidden = YES; + +} +/** + 过滤器/ 将.2f格式化的字符串,去除末尾0 + + @param numberStr .2f格式化后的字符串 + @return 去除末尾0之后的 + */ +- (NSString *)removeSuffix:(NSString *)numberStr{ + if (numberStr.length > 1) { + + if ([numberStr componentsSeparatedByString:@"."].count == 2) { + NSString *last = [numberStr componentsSeparatedByString:@"."].lastObject; + if ([last isEqualToString:@"00"]) { + numberStr = [numberStr substringToIndex:numberStr.length - (last.length + 1)]; + return numberStr; + }else{ + if ([[last substringFromIndex:last.length -1] isEqualToString:@"0"]) { + numberStr = [numberStr substringToIndex:numberStr.length - 1]; + return numberStr; + } + } + } + return numberStr; + }else{ + return nil; + } +} + +///更改约束 +-(void)changeConstraintsAction{ + [self mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(kGetScaleWidth(196)); + }]; + [self.confirmBtn mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(136)); + }]; + +} + +#pragma mark- btn action +-(void)backAction{ + [TTPopup dismiss]; +} +-(void)confirmAction{ + [TTPopup dismiss]; + if(self.delegate && [self.delegate respondsToSelector:@selector(xpMineConfirmGiveDiamondViewComplete)]){ + [self.delegate xpMineConfirmGiveDiamondViewComplete]; + } +} +#pragma mark - 懒加载 +- (UIButton *)backVeiw{ + if (!_backVeiw){ + _backVeiw = [UIButton new]; + [_backVeiw setBackgroundImage:[UIImage imageNamed:@"mine_give_diamond_back"] forState:UIControlStateNormal]; + [_backVeiw setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + [_backVeiw addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _backVeiw; +} +- (UILabel *)titleView{ + if (!_titleView){ + _titleView = [UILabel new]; + _titleView.font = [UIFont systemFontOfSize:kGetScaleWidth(15) weight:UIFontWeightRegular]; + _titleView.textColor = [DJDKMIMOMColor inputTextColor]; + _titleView.textAlignment = NSTextAlignmentCenter; + } + return _titleView; +} +-(UILabel *)numView{ + if (!_numView){ + _numView = [UILabel new]; + _numView.font = [UIFont systemFontOfSize:kGetScaleWidth(30) weight:UIFontWeightMedium]; + _numView.textColor = [DJDKMIMOMColor inputTextColor]; + _numView.textAlignment = NSTextAlignmentCenter; + } + return _numView; +} +- (UIView *)lineView{ + + if (!_lineView){ + _lineView = [UIView new]; + _lineView.backgroundColor = UIColorFromRGB(0xF7F7F7); + } + return _lineView; + +} +- (XPMineConfirmGiveDiamondItemView *)poundageView{ + if (!_poundageView){ + _poundageView = [[XPMineConfirmGiveDiamondItemView alloc]initWithFrame:CGRectZero]; + [_poundageView setTitle:YMLocalizedString(@"XPMineConfirmGiveDiamondView2")]; + + } + return _poundageView; +} +-(XPMineConfirmGiveDiamondItemView *)totalNumView{ + if (!_totalNumView){ + _totalNumView = [[XPMineConfirmGiveDiamondItemView alloc]initWithFrame:CGRectZero]; + [_totalNumView setTitle:YMLocalizedString(@"XPMineConfirmGiveDiamondView3")]; + } + return _totalNumView; +} +- (UIButton *)confirmBtn{ + if (!_confirmBtn){ + _confirmBtn = [UIButton new]; + UIImage *image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientMiddleColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(135), kGetScaleWidth(37))]; + [_confirmBtn setBackgroundImage:image forState:UIControlStateNormal]; + [_confirmBtn setTitle:YMLocalizedString(@"XPMineConfirmGiveDiamondView0") forState:UIControlStateNormal]; + _confirmBtn.titleLabel.font = [UIFont systemFontOfSize:kGetScaleWidth(14) weight:UIFontWeightRegular]; + [_confirmBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_confirmBtn addTarget:self action:@selector(confirmAction) forControlEvents:UIControlEventTouchUpInside]; + _confirmBtn.layer.cornerRadius = kGetScaleWidth(37)/2; + _confirmBtn.layer.masksToBounds = YES; + } + return _confirmBtn; +} +@end + + +/*************************************华丽分割线********************************************************/ + +@interface XPMineConfirmGiveDiamondItemView() + +@property (nonatomic,strong) UILabel *titleView; +@property (nonatomic,strong) UILabel *numView; + + + + +@end + +@implementation XPMineConfirmGiveDiamondItemView +-(instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if(self){ + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +-(void)setTitle:(NSString *)title{ + _title = title; + _titleView.text = _title; + +} +-(void)setNum:(NSString *)num{ + _num = num; + _numView.text = _num; +} +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.titleView]; + [self addSubview:self.numView]; +} +- (void)initSubViewConstraints { + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(20)); + make.top.bottom.equalTo(self); + }]; + [self.numView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-kGetScaleWidth(20)); + make.top.bottom.equalTo(self); + }]; + +} + +#pragma mark - 懒加载 + +- (UILabel *)titleView{ + if (!_titleView){ + _titleView = [UILabel new]; + _titleView.font = [UIFont systemFontOfSize:kGetScaleWidth(12) weight:UIFontWeightRegular]; + _titleView.textColor = UIColorFromRGB(0x6D6B89); + } + return _titleView; +} +-(UILabel *)numView{ + if (!_numView){ + _numView = [UILabel new]; + _numView.font = [UIFont systemFontOfSize:kGetScaleWidth(12) weight:UIFontWeightRegular]; + _numView.textColor = UIColorFromRGB(0x6D6B89); + _numView.textAlignment = NSTextAlignmentRight; + + } + return _numView; +} +@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondCell.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondCell.h new file mode 100644 index 00000000..7706be5e --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondCell.h @@ -0,0 +1,17 @@ +// +// XPMineGiveDiamondCell.h +// YuMi +// +// Created by YuMi on 2022/10/17. +// + +#import +#import "XPMineGiveDiamondModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineGiveDiamondCell : UITableViewCell +@property (nonatomic,strong) XPMineGiveDiamondModel *giveDiamondModel; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondCell.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondCell.m new file mode 100644 index 00000000..b10ae644 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondCell.m @@ -0,0 +1,108 @@ +// +// XPMineGiveDiamondCell.m +// YuMi +// +// Created by YuMi on 2022/10/17. +// + +#import "XPMineGiveDiamondCell.h" +#import "NetImageView.h" +@interface XPMineGiveDiamondCell() + +///头像 +@property (nonatomic,strong) NetImageView *headView; + +/// 名字 +@property (nonatomic,strong) UILabel *titleView; + +/// id +@property (nonatomic,strong) UILabel * IdTitleView; + +@property (nonatomic,strong) UIImageView *arrowView; + +@end + +@implementation XPMineGiveDiamondCell +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +-(void)setGiveDiamondModel:(XPMineGiveDiamondModel *)giveDiamondModel{ + _giveDiamondModel = giveDiamondModel; + _headView.imageUrl = _giveDiamondModel.targetAvatar; + _titleView.text = _giveDiamondModel.targetNick; + _IdTitleView.text = [NSString stringWithFormat:@"ID:%@",_giveDiamondModel.targetErbanNo]; +} +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = 0; + [self addSubview:self.headView]; + [self addSubview:self.titleView]; + [self addSubview:self.IdTitleView]; + [self addSubview:self.arrowView]; + +} +- (void)initSubViewConstraints { + [self.headView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(kGetScaleWidth(50)); + make.centerY.equalTo(self); + make.left.mas_equalTo(kGetScaleWidth(15)); + }]; + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.headView.mas_right).mas_offset( kGetScaleWidth(10)); + make.height.mas_equalTo(kGetScaleWidth(17)); + make.top.equalTo(self.headView.mas_top).mas_offset(kGetScaleWidth(8)); + make.right.mas_equalTo(-kGetScaleWidth(15)); + }]; + + [self.IdTitleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.equalTo(self.titleView); + make.height.mas_equalTo(kGetScaleWidth(14)); + make.top.equalTo(self.titleView.mas_bottom).mas_offset(kGetScaleWidth(4)); + }]; + [self.arrowView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(kGetScaleWidth(20)); + make.centerY.equalTo(self); + make.right.mas_equalTo(-kGetScaleWidth(15)); + }]; +} +#pragma mark - 懒加载 +- (NetImageView *)headView{ + if (!_headView){ + NetImageConfig *config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _headView = [[NetImageView alloc]initWithConfig:config]; + _headView.layer.cornerRadius = kGetScaleWidth(50) / 2; + _headView.layer.masksToBounds = YES; + } + return _headView; +} +-(UILabel *)titleView{ + if (!_titleView){ + _titleView = [[UILabel alloc]init]; + _titleView.font = [UIFont systemFontOfSize:kGetScaleWidth(14) weight:UIFontWeightMedium]; + _titleView.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleView; +} +-(UILabel *)IdTitleView{ + if (!_IdTitleView){ + _IdTitleView = [UILabel new]; + _IdTitleView.font = [UIFont systemFontOfSize:kGetScaleWidth(12) weight:UIFontWeightMedium]; + _IdTitleView.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _IdTitleView; +} +- (UIImageView *)arrowView{ + if (!_arrowView){ + _arrowView = [UIImageView new]; + _arrowView.image = [UIImage imageNamed:@"mine_item_new_arrow"]; + } + return _arrowView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondDetailsCell.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondDetailsCell.h new file mode 100644 index 00000000..44edad70 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondDetailsCell.h @@ -0,0 +1,17 @@ +// +// XPMineGiveDiamondDetailsCell.h +// YuMi +// +// Created by YuMi on 2022/11/1. +// + +#import +#import "XPMineGiveDiamondDetailsModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineGiveDiamondDetailsCell : UITableViewCell +@property (nonatomic,strong) XPMineGiveDiamondDetailsModel *model; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondDetailsCell.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondDetailsCell.m new file mode 100644 index 00000000..99d8b56e --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondDetailsCell.m @@ -0,0 +1,157 @@ +// +// XPMineGiveDiamondDetailsCell.m +// YuMi +// +// Created by YuMi on 2022/11/1. +// + +#import "XPMineGiveDiamondDetailsCell.h" +#import "NetImageView.h" +#import "NSDate+DateUtils.h" +@interface XPMineGiveDiamondDetailsCell() +///礼物/钻石图标 +@property (nonatomic,strong) NetImageView * iconView; +///礼物标题 +@property (nonatomic,strong) UILabel *giftTitleView; +///时间 +@property (nonatomic,strong) UILabel *timeView; +///转赠钻石数量 +@property (nonatomic,strong) UILabel *numView; +///转赠钻石支出 +@property (nonatomic,strong) UILabel *spendingView; + +@end +@implementation XPMineGiveDiamondDetailsCell + + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor whiteColor]; + self.selectionStyle = 0; + [self.contentView addSubview:self.iconView]; + [self.contentView addSubview:self.giftTitleView]; + [self.contentView addSubview:self.timeView]; + [self.contentView addSubview:self.numView]; + [self.contentView addSubview:self.spendingView]; +} +- (void)initSubViewConstraints { + [self.iconView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(kGetScaleWidth(40)); + make.centerY.equalTo(self.contentView); + make.left.mas_equalTo(kGetScaleWidth(15)); + }]; + [self.timeView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-kGetScaleWidth(15)); + make.centerY.equalTo(self.contentView); + }]; + [self.giftTitleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(65)); + make.centerY.equalTo(self.contentView); + make.right.equalTo(self.timeView.mas_left).mas_offset(-kGetScaleWidth(10)); + }]; + [self.numView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.iconView.mas_top).mas_offset(kGetScaleWidth(3)); + make.left.mas_equalTo(kGetScaleWidth(65)); + make.height.mas_equalTo(kGetScaleWidth(17)); + make.right.equalTo(self.timeView.mas_left).mas_offset(-kGetScaleWidth(10)); + }]; + [self.spendingView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.equalTo(self.numView); + make.top.equalTo(self.numView.mas_bottom).mas_offset(kGetScaleWidth(4)); + make.height.mas_equalTo(kGetScaleWidth(14)); + }]; + +} +#pragma mark - 赋值 +- (void)setModel:(XPMineGiveDiamondDetailsModel *)model{ + _model = model; + [self setValue]; +} + +-(void)setValue{ + self.giftTitleView.hidden = YES; + self.numView.hidden = YES; + self.spendingView.hidden = YES; + self.iconView.image = nil; + if(self.model.type.intValue == 0){ + self.giftTitleView.hidden = YES; + self.numView.hidden = NO; + self.spendingView.hidden = NO; + self.iconView.image = [UIImage imageNamed:@"mine_examples_record"]; + self.numView.text = self.model.diamondNum; + self.timeView.text = [NSDate timestampSwitchTime:self.model.createTime/1000 andFormatter:@"yyyy-MM-dd HH:mm:ss"]; + NSString *realDiamondNum = [NSString stringWithFormat:@"%.2f",self.model.realDiamondNum]; + self.spendingView.text = [NSString stringWithFormat:YMLocalizedString(@"XPMineGiveDiamondDetailsCell0"),realDiamondNum]; + return; + } + self.iconView.image = [UIImageConstant defaultAvatarPlaceholder]; + self.iconView.imageUrl = self.model.giftUrl; + self.giftTitleView.text = [NSString stringWithFormat:@"%@ x%@",self.model.giftName,self.model.giftNum]; + self.timeView.text = [NSDate timestampSwitchTime:self.model.createTime/1000 andFormatter:@"yyyy-MM-dd HH:mm:ss"]; + self.giftTitleView.hidden = NO; + self.numView.hidden = YES; + self.spendingView.hidden = YES; +} + +#pragma mark - 懒加载 + +- (NetImageView *)iconView{ + if (!_iconView){ + _iconView = [[NetImageView alloc]init]; + _iconView.backgroundColor = UIColorFromRGB(0xF3F5FA); + _iconView.layer.cornerRadius = kGetScaleWidth(40)/2; + _iconView.clipsToBounds = YES; + _iconView.contentMode = UIViewContentModeScaleAspectFit; + } + return _iconView; +} + +- (UILabel *)giftTitleView { + if (!_giftTitleView) { + _giftTitleView = [[UILabel alloc] init]; + _giftTitleView.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + _giftTitleView.textColor = [DJDKMIMOMColor inputTextColor]; + _giftTitleView.hidden = YES; + } + return _giftTitleView; +} + +- (UILabel *)timeView { + if (!_timeView) { + _timeView = [[UILabel alloc] init]; + _timeView.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _timeView.textColor = [DJDKMIMOMColor disableButtonTextColor]; + _timeView.textAlignment = NSTextAlignmentRight; + } + return _timeView; +} + +- (UILabel *)numView { + if (!_numView) { + _numView = [[UILabel alloc] init]; + _numView.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + _numView.textColor = [DJDKMIMOMColor inputTextColor]; + _numView.text = @"0"; + } + return _numView; +} + +- (UILabel *)spendingView { + if (!_spendingView) { + _spendingView = [[UILabel alloc] init]; + _spendingView.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _spendingView.textColor = [DJDKMIMOMColor disableButtonTextColor]; + _spendingView.text = [NSString stringWithFormat:YMLocalizedString(@"XPMineGiveDiamondDetailsCell0"),@"0"]; + } + return _spendingView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondDetailsView.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondDetailsView.h new file mode 100644 index 00000000..91846575 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondDetailsView.h @@ -0,0 +1,22 @@ +// +// XPMineGiveDiamondDetailsView.h +// YuMi +// +// Created by YuMi on 2022/10/31. +// + +#import +#import +#import "XPMineGiveDiamondDetailsModel.h" +NS_ASSUME_NONNULL_BEGIN + + + + +@interface XPMineGiveDiamondDetailsView : UIView +@property (nonatomic,strong) UITableView *tableView; +@property(nonatomic,strong)NSMutableArray *listData; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondDetailsView.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondDetailsView.m new file mode 100644 index 00000000..5dcb8bb2 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondDetailsView.m @@ -0,0 +1,86 @@ +// +// XPMineGiveDiamondDetailsView.m +// YuMi +// +// Created by YuMi on 2022/10/31. +// + +#import "XPMineGiveDiamondDetailsView.h" + +///view +#import "XPMineGiveDiamondDetailsCell.h" +#import "XPMineFriendEmptyTableViewCell.h" + + +@interface XPMineGiveDiamondDetailsView() + +@end + + +@implementation XPMineGiveDiamondDetailsView + +-(instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if(self){ + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.tableView]; + +} +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self); + }]; +} +#pragma mark - JXCategoryListContentViewDelegate +- (UIView *)listView { + return self; +} +-(void)setListData:(NSMutableArray *)listData{ + _listData = listData; +} +#pragma mark - UITableViewDelegate + +-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ + return self.listData.count > 0 ? self.listData.count : 1; +} + +-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ + return self.listData.count > 0 ? kGetScaleWidth(55) : self.tableView.frame.size.height;; +} +-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ + if(self.listData.count > 0){ + XPMineGiveDiamondDetailsCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineGiveDiamondDetailsCell class]) forIndexPath:indexPath]; + cell.model = self.listData[indexPath.row]; + return cell; + } + XPMineFriendEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineFriendEmptyTableViewCell class])forIndexPath:indexPath] ; + + cell.emptyTitle = YMLocalizedString(@"XPMineGiveDiamondVC3"); + return cell; +} +#pragma mark - 懒加载 +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.showsVerticalScrollIndicator = NO; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + [_tableView registerClass:[XPMineGiveDiamondDetailsCell class] forCellReuseIdentifier:NSStringFromClass([XPMineGiveDiamondDetailsCell class])]; + [_tableView registerClass:[XPMineFriendEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineFriendEmptyTableViewCell class])]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + + } + return _tableView; +} +@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondPasswordView.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondPasswordView.h new file mode 100644 index 00000000..4be82728 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondPasswordView.h @@ -0,0 +1,19 @@ +// +// XPMineGiveDiamondPasswordView.h +// YuMi +// +// Created by YuMi on 2022/10/21. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef void(^MineGiveDiamondPasswordViewBlock)(void); + + +@interface XPMineGiveDiamondPasswordView : UIView +@property (nonatomic,copy) MineGiveDiamondPasswordViewBlock completeBlock; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondPasswordView.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondPasswordView.m new file mode 100644 index 00000000..2e0f7a7e --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondPasswordView.m @@ -0,0 +1,115 @@ +// +// XPMineGiveDiamondPasswordView.m +// YuMi +// +// Created by YuMi on 2022/10/21. +// + +#import "XPMineGiveDiamondPasswordView.h" +#import "UIView+Corner.h" +#import "TTPopup.h" +@interface XPMineGiveDiamondPasswordView() +///标题 +@property (nonatomic,strong) UILabel *titleView; +///取消 +@property (nonatomic,strong) UIButton *cancelBtn; +///确认 +@property (nonatomic,strong) UIButton *confirmBtn; + +@end + +@implementation XPMineGiveDiamondPasswordView + +-(instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if(self){ + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor whiteColor]; + [self setCornerWithLeftTopCorner:kGetScaleWidth(12) rightTopCorner:kGetScaleWidth(12) bottomLeftCorner:kGetScaleWidth(12) bottomRightCorner:kGetScaleWidth(12) size:CGSizeMake(kGetScaleWidth(310), kGetScaleWidth(149))]; + [self addSubview:self.titleView]; + [self addSubview:self.cancelBtn]; + [self addSubview:self.confirmBtn]; + +} +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(kGetScaleWidth(310)); + make.height.mas_equalTo(kGetScaleWidth(149)); + }]; + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(25)); + make.right.left.equalTo(self); + make.height.mas_equalTo(kGetScaleWidth(21)); + }]; + [self.cancelBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(31)); + make.width.mas_equalTo(kGetScaleWidth(110)); + make.height.mas_equalTo(kGetScaleWidth(37)); + make.top.mas_equalTo(kGetScaleWidth(81)); + }]; + [self.confirmBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.width.height.equalTo(self.cancelBtn); + make.right.mas_equalTo(-kGetScaleWidth(31)); + }]; +} + + +-(void)cancelAction{ + [TTPopup dismiss]; +} +-(void)confirmAction{ + [TTPopup dismiss]; + if(self.completeBlock){ + self.completeBlock(); + } +} +#pragma mark - 懒加载 +- (UILabel *)titleView{ + if (!_titleView){ + _titleView = [UILabel new]; + _titleView.font = [UIFont systemFontOfSize:kGetScaleWidth(15) weight:UIFontWeightRegular]; + _titleView.textColor = [DJDKMIMOMColor inputTextColor]; + _titleView.text = YMLocalizedString(@"XPMineChooseGiveDiamondVC1"); + _titleView.textAlignment = NSTextAlignmentCenter; + } + return _titleView; +} + +-(UIButton *)cancelBtn{ + if (!_cancelBtn){ + _cancelBtn = [UIButton new]; + [_cancelBtn setTitle:YMLocalizedString(@"XPShareView7") forState:UIControlStateNormal]; + _cancelBtn.layer.cornerRadius = kGetScaleWidth(37) / 2; + _cancelBtn.layer.masksToBounds = YES; + [_cancelBtn setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateNormal]; + [_cancelBtn addTarget:self action:@selector(cancelAction) forControlEvents:UIControlEventTouchUpInside]; + _cancelBtn.titleLabel.font = [UIFont systemFontOfSize:kGetScaleWidth(14) weight:UIFontWeightRegular]; + _cancelBtn.backgroundColor = [DJDKMIMOMColor disableButtonColor]; + } + return _cancelBtn; +} + +- (UIButton *)confirmBtn{ + if (!_confirmBtn){ + _confirmBtn = [UIButton new]; + [_confirmBtn setTitle:YMLocalizedString(@"XPMineChooseGiveDiamondVC2") forState:UIControlStateNormal]; + [_confirmBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _confirmBtn.titleLabel.font = [UIFont systemFontOfSize:kGetScaleWidth(14) weight:UIFontWeightRegular]; + [_confirmBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientMiddleColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _confirmBtn.layer.cornerRadius = kGetScaleWidth(37) / 2; + _confirmBtn.layer.masksToBounds = YES; + [_confirmBtn addTarget:self action:@selector(confirmAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _confirmBtn; +} + + + +@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondPwdView.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondPwdView.h new file mode 100644 index 00000000..e445c972 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondPwdView.h @@ -0,0 +1,23 @@ +// +// XPMineGiveDiamondPwdView.h +// YuMi +// +// Created by YuMi on 2022/10/19. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@protocol XPMineGiveDiamondPwdViewDelegate + +///完成输入密码 +- (void)xpMineGiveDiamondPwdViewPwdComplete:(NSString *)pwd; + + + +@end +@interface XPMineGiveDiamondPwdView : UIView +@property (nonatomic, weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondPwdView.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondPwdView.m new file mode 100644 index 00000000..d6f8724b --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondPwdView.m @@ -0,0 +1,172 @@ +// +// XPMineGiveDiamondPwdView.m +// YuMi +// +// Created by YuMi on 2022/10/19. +// + +#import "XPMineGiveDiamondPwdView.h" +#import "LoginVerifCodeView.h" +#import +#import + +@interface XPMineGiveDiamondPwdView() + +@property (nonatomic, strong) UIButton *closeBtn; +@property (nonatomic, strong) UILabel *titleLabel; +@property (nonatomic, strong) LoginVerifCodeView *codeView; +@property (nonatomic, strong) UIView *bgView; + +@end +@implementation XPMineGiveDiamondPwdView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + [self initEvents]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillShow:)name:UIKeyboardWillShowNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; + + + self.backgroundColor = [UIColor colorWithWhite:0 alpha:0.35]; + [self addSubview:self.bgView]; + [self.bgView addSubview:self.closeBtn]; + [self.bgView addSubview:self.titleLabel]; + [self.bgView addSubview:self.codeView]; + +} +- (void)keyboardWillShow:(NSNotification *)notification + +{ + NSDictionary *userInfo = [notification userInfo]; + CGFloat curkeyBoardHeight = [[[notification userInfo]objectForKey:@"UIKeyboardBoundsUserInfoKey"]CGRectValue].size.height; + CGRect begin = [[[notification userInfo]objectForKey:@"UIKeyboardFrameBeginUserInfoKey"]CGRectValue]; + CGRect end = [[[notification userInfo]objectForKey:@"UIKeyboardFrameEndUserInfoKey"]CGRectValue]; + // 第三方键盘回调三次问题,监听仅执行最后一次 + + if( begin.size.height > 0 && (begin.origin.y - end.origin.y > 0)){ + CGFloat keyBoardHeight = curkeyBoardHeight; + CGFloat animationDuration = [userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]; + + [UIView animateWithDuration:animationDuration animations:^{ + self.bgView.frame = CGRectMake(0, KScreenHeight - keyBoardHeight - kGetScaleWidth(162), KScreenWidth, kGetScaleWidth(162)); + }]; + + } + +} +- (void)keyboardWillHide:(NSNotification *)notification{ + + //获取键盘的高度 + NSDictionary *userInfo = [notification userInfo]; + NSValue *keyboardValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey]; + CGRect keyboardRect = [keyboardValue CGRectValue]; + CGFloat height = CGRectGetHeight(keyboardRect); + CGFloat animationDuration = [userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]; + //做自定义事件 + self.backgroundColor = [UIColor clearColor]; + [UIView animateWithDuration:animationDuration animations:^{ + self.bgView.frame = CGRectMake(0, KScreenHeight, KScreenWidth, kGetScaleWidth(162)); + }completion:^(BOOL finished) { + [self removeFromSuperview]; + }]; + +} +-(void)dealloc{ + [[NSNotificationCenter defaultCenter]removeObserver:self]; +} + +- (void)initSubViewConstraints { + + self.bgView.frame = CGRectMake(0, KScreenHeight, KScreenWidth, kGetScaleWidth(162)); + [self.closeBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-kGetScaleWidth(15)); + make.top.mas_equalTo(kGetScaleWidth(15)); + make.height.width.mas_equalTo(kGetScaleWidth(22)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(kGetScaleWidth(30)); + make.height.mas_equalTo(kGetScaleWidth(22)); + }]; + + + + [self.codeView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(15)); + make.right.mas_equalTo(-kGetScaleWidth(15)); + make.height.mas_equalTo(kGetScaleWidth(50)); + make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(kGetScaleWidth(40)); + }]; + + +} + +- (void)initEvents { + @weakify(self); + self.codeView.textFieldChangeBlock = ^(NSString * _Nonnull code) { + @strongify(self); + if (code.length == 6) { + [self removeFromSuperview]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xpMineGiveDiamondPwdViewPwdComplete:)]) { + [self.delegate xpMineGiveDiamondPwdViewPwdComplete:code]; + } + } + }; +} + +- (void)onCloseButtonClick:(UIButton *)sender { + [self removeFromSuperview]; +} + + +- (UILabel *)titleLabel { + if (!_titleLabel) { + UILabel *label = [[UILabel alloc] init]; + label.text = YMLocalizedString(@"XPRoomRedPacketPwdView0"); + label.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; + label.textColor = [DJDKMIMOMColor inputTextColor]; + _titleLabel = label; + } + return _titleLabel; +} + +-(UIView *)bgView{ + if (!_bgView){ + _bgView = [UIView new]; + _bgView.backgroundColor = [UIColor whiteColor]; + } + return _bgView; +} + + +- (UIButton *)closeBtn { + if (!_closeBtn) { + _closeBtn = [[UIButton alloc] init]; + [_closeBtn setImage:[UIImage imageNamed:@"send_redPacket_cancel"] forState:UIControlStateNormal]; + [_closeBtn addTarget:self action:@selector(onCloseButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + } + return _closeBtn; +} + +- (LoginVerifCodeView *)codeView { + if (!_codeView) { + _codeView= [[LoginVerifCodeView alloc] init]; + _codeView.type = 1; + _codeView.number = 6; + _codeView.shouldBeSecurity = YES; + } + return _codeView; +} + + + +@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondSearchView.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondSearchView.h new file mode 100644 index 00000000..6e174ca0 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondSearchView.h @@ -0,0 +1,18 @@ +// +// XPMineGiveDiamondSearchView.h +// YuMi +// +// Created by YuMi on 2022/10/17. +// + +#import +#import "XPMineGiveDiamondProtocol.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineGiveDiamondSearchView : UIView +@property (nonatomic,assign) BOOL isSearchHall; +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondSearchView.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondSearchView.m new file mode 100644 index 00000000..0544a3c3 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPMineGiveDiamondSearchView.m @@ -0,0 +1,106 @@ +// +// XPMineGiveDiamondSearchView.m +// YuMi +// +// Created by YuMi on 2022/10/17. +// + +#import "XPMineGiveDiamondSearchView.h" + +@interface XPMineGiveDiamondSearchView() + +///背景 +@property (nonatomic,strong)UIImageView *bgView; +///搜索输入 +@property (nonatomic,strong) UITextField *textField; +///搜索btn +@property (nonatomic,strong) UIButton *searchBtn; + +@end +@implementation XPMineGiveDiamondSearchView + +-(instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if(self){ + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + [self addSubview:self.bgView]; + [self.bgView addSubview:self.textField]; + [self.bgView addSubview:self.searchBtn]; +} +- (void)initSubViewConstraints { + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(15)); + make.right.mas_equalTo(-kGetScaleWidth(15)); + make.top.equalTo(self); + make.height.mas_equalTo(kGetScaleWidth(32)); + }]; + [self.textField mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.bottom.equalTo(self.bgView); + make.left.mas_equalTo(kGetScaleWidth(10)); + make.right.mas_equalTo(-kGetScaleWidth(76)); + }]; + [self.searchBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-kGetScaleWidth(3)); + make.centerY.equalTo(self.bgView); + make.width.mas_equalTo(kGetScaleWidth(66)); + make.height.mas_equalTo(kGetScaleWidth(26)); + }]; +} + +-(void)searchAction{ + [self.textField resignFirstResponder]; + if(self.delegate && [self.delegate respondsToSelector:@selector(searchEndWithText:)]){ + [self.delegate searchEndWithText:self.textField.text]; + } +} +-(void)setIsSearchHall:(BOOL)isSearchHall{ + _isSearchHall = isSearchHall; + if(_isSearchHall == YES){ + _textField.keyboardType = UIKeyboardTypeDefault; + _textField.attributedPlaceholder = [[NSMutableAttributedString alloc]initWithString:YMLocalizedString(@"XPMineGiveDiamondSearchView3") attributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor secondTextColor],NSFontAttributeName:[UIFont systemFontOfSize:14 weight:UIFontWeightRegular]}]; + } +} +#pragma mark -懒加载 +- (UIImageView *)bgView{ + if (!_bgView){ + _bgView = [UIImageView new]; + _bgView.userInteractionEnabled = YES; + _bgView.image = [UIImage imageNamed:@"mine_give_diamond_search"]; + } + return _bgView; +} +-(UITextField *)textField{ + if (!_textField){ + _textField = [[UITextField alloc]initWithFrame:CGRectZero]; + _textField.keyboardType = UIKeyboardTypeNumberPad; + _textField.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _textField.textColor = [DJDKMIMOMColor mainTextColor]; + _textField.attributedPlaceholder = [[NSMutableAttributedString alloc]initWithString:YMLocalizedString(@"XPMineGiveDiamondSearchView1") attributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor secondTextColor],NSFontAttributeName:[UIFont systemFontOfSize:14 weight:UIFontWeightRegular]}]; + + } + return _textField; +} +-(UIButton *)searchBtn{ + if (!_searchBtn){ + _searchBtn = [UIButton new]; + UIImage *image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientMiddleColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(66), kGetScaleWidth(26))]; + [_searchBtn setBackgroundImage:image forState:UIControlStateNormal]; + [_searchBtn setTitle:YMLocalizedString(@"XPMineGiveDiamondSearchView0") forState:UIControlStateNormal]; + [_searchBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _searchBtn.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; + _searchBtn.layer.cornerRadius = kGetScaleWidth(26) / 2; + _searchBtn.layer.masksToBounds = YES; + + [_searchBtn addTarget:self action:@selector(searchAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _searchBtn; +} +@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPPageControl.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPPageControl.h new file mode 100644 index 00000000..0c19c094 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPPageControl.h @@ -0,0 +1,18 @@ +// +// XPPageControl.h +// YuMi +// +// Created by YuMi on 2023/6/30. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPPageControl : UIView + +@property (nonatomic,assign) NSInteger curPage; +@property (nonatomic,assign) NSInteger count; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPPageControl.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPPageControl.m new file mode 100644 index 00000000..940c1555 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/XPPageControl.m @@ -0,0 +1,47 @@ +// +// XPPageControl.m +// YuMi +// +// Created by YuMi on 2023/6/30. +// + +#import "XPPageControl.h" +#import "UIImage+Utils.h" + +@implementation XPPageControl + +#pragma mark - Private Method +- (void)initSubViews { + for (int i = 0; i < self.count; i++) { + UIButton *sender = [[UIButton alloc]initWithFrame:CGRectMake(i * kGetScaleWidth(22), 0, kGetScaleWidth(16), kGetScaleWidth(3))]; + UIImage *chooseImage = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientMiddleColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(16), kGetScaleWidth(3))]; + UIImage *noChooseImage = [UIImage gradientColorImageFromColors:@[[UIColor whiteColor],[UIColor whiteColor],[UIColor whiteColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(16), kGetScaleWidth(3))]; + [sender setBackgroundImage:chooseImage forState:UIControlStateSelected]; + [sender setBackgroundImage:noChooseImage forState:UIControlStateNormal]; + sender.layer.cornerRadius = kGetScaleWidth(3)/2; + sender.layer.masksToBounds = YES; + sender.tag = i + 1; + [self addSubview:sender]; + } + +} +- (void)initSubViewConstraints { + CGFloat width = self.count * kGetScaleWidth(16) + (self.count - 1) * kGetScaleWidth(6); + [self mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(width); + }]; +} +-(void)setCurPage:(NSInteger)curPage{ + _curPage = curPage; + for (UIButton *button in self.subviews) { + button.selected = _curPage == button.tag; + } +} +-(void)setCount:(NSInteger)count{ + _count = count; + [self initSubViewConstraints]; + [self initSubViews]; + +} + +@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeChooseGiveDiamondRegard.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeChooseGiveDiamondRegard.h deleted file mode 100644 index ae29fc23..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeChooseGiveDiamondRegard.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// YUMIManeChooseGiveDiamondRegard.h -// YuMi -// -// Created by YuMi on 2022/10/19. -// - -#import -#import "YUMIManeGiveDiamondMatrix.h" -#import "FBCManeGiveDiamondCeremony.h" -#import "ConsumerAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN - - - -@interface YUMIManeChooseGiveDiamondRegard : UIView -@property (nonatomic,strong) YUMIManeGiveDiamondMatrix *giveBWSttawberryMatrix; -@property (nonatomic,copy) NSString *strawberry; -@property (nonatomic,weak) id delegate; -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@property (nonatomic,assign) int type; --(instancetype)initWithFrame:(CGRect)frame isHaveGiveBWSttawberry:(BOOL)isHaveGiveBWSttawberry isHaveGivePresent:(BOOL)isHaveGivePresent; --(void)setListData:(NSMutableArray *)listData count:(NSInteger)count; -@end - - - - - - - - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeChooseGiveDiamondRegard.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeChooseGiveDiamondRegard.m deleted file mode 100644 index b6dd6145..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeChooseGiveDiamondRegard.m +++ /dev/null @@ -1,471 +0,0 @@ -// -// YUMIManeChooseGiveDiamondRegard.m -// YuMi -// -// Created by YuMi on 2022/10/19. -// - -#import "YUMIManeChooseGiveDiamondRegard.h" -#import "YUMIManeChooseGivePresentRegardElement.h" - -#import "YUMIUnionDispossessAssembletionRegardElement.h" -#import "PresentAbstractMatrix.h" -#import "YUMIManeChooseGivePresentRegard.h" -#import "NetIndicateRegard.h" -#import "ClientDisposition.h" - -@interface YUMIManeChooseGiveDiamondRegard() -@property (nonatomic,strong) NetIndicateRegard *intelligenceRegard; -@property (nonatomic,strong) UILabel *titleView; -@property (nonatomic,strong) UILabel *idChampionRegard; -@property (nonatomic,strong) UIStackView *genreHierarchyRegard; -@property (nonatomic,strong) UIButton *bWSttawberryBtuton; -@property (nonatomic,strong) UIButton *presentBtuton; -@property (nonatomic,strong) UIImageView *figureFigure; -@property (nonatomic,strong) UITextField *bWSttawberryFigureRegard; -@property (nonatomic,strong) UILabel * mieyBWSttawberryFigureRegard; -@property (nonatomic,strong) UIImageView *mieyBWSttawberryFigure; -@property (nonatomic,strong) UIButton *confirmBtn; -@property (nonatomic,strong) UIView *burlywoodRegard; -@property (nonatomic,strong) YUMIManeChooseGivePresentRegard *givePresentRegard; - -@property (nonatomic,assign) BOOL isHaveGiveBWSttawberry; -@property (nonatomic,assign) BOOL isHaveGivePresent; -@end -@implementation YUMIManeChooseGiveDiamondRegard - --(instancetype)initWithFrame:(CGRect)frame isHaveGiveBWSttawberry:(BOOL)isHaveGiveBWSttawberry isHaveGivePresent:(BOOL)isHaveGivePresent{ - self = [super initWithFrame:frame]; - if(self){ - self.isHaveGiveBWSttawberry = isHaveGiveBWSttawberry; - self.isHaveGivePresent = isHaveGivePresent; - [self initSubViews]; - [self initChildLyRestrictions]; - if (self.isHaveGiveBWSttawberry == NO && self.isHaveGivePresent == YES){ - [self concludePresentPerformance]; - } - - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - - [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillShow:)name:UIKeyboardWillShowNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; - [self addSubview:self.intelligenceRegard]; - [self addSubview:self.titleView]; - [self addSubview:self.idChampionRegard]; - [self addSubview:self.genreHierarchyRegard]; - [self.genreHierarchyRegard addArrangedSubview:self.bWSttawberryBtuton]; - [self.genreHierarchyRegard addArrangedSubview:self.presentBtuton]; - - - - [self addSubview:self.figureFigure]; - [self addSubview:self.bWSttawberryFigureRegard]; - [self addSubview:self.burlywoodRegard]; - [self addSubview:self.mieyBWSttawberryFigure]; - [self addSubview:self.mieyBWSttawberryFigureRegard]; - [self addSubview:self.confirmBtn]; - [self addSubview:self.givePresentRegard]; - - - -} -- (void)initChildLyRestrictions { - [self.intelligenceRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(kGetScaleWidth(50)); - make.top.mas_equalTo(kGetScaleWidth(16)); - make.left.mas_equalTo(kGetScaleWidth(15)); - }]; - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.equalTo(self.intelligenceRegard.mas_right).mas_offset(kGetScaleWidth(10)); - make.top.equalTo(self.intelligenceRegard.mas_top).mas_offset(kGetScaleWidth(8)); - make.right.mas_equalTo(-kGetScaleWidth(15)); - make.height.mas_equalTo(kGetScaleWidth(17)); - }]; - [self.idChampionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.equalTo(self.titleView); - make.height.mas_equalTo(kGetScaleWidth(14)); - make.top.equalTo(self.titleView.mas_bottom).mas_offset(kGetScaleWidth(4)); - }]; - - - if(self.isHaveGivePresent == YES && self.isHaveGiveBWSttawberry == YES){ - [self.genreHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(15)); - make.width.mas_equalTo(kGetScaleWidth(178)); - make.height.mas_equalTo(kGetScaleWidth(31)); - make.top.equalTo(self.intelligenceRegard.mas_bottom).mas_offset(kGetScaleWidth(25)); - }]; - self.type = 0; - self.presentBtuton.hidden = NO; - self.bWSttawberryBtuton.hidden = NO; - self.genreHierarchyRegard.spacing = kGetScaleWidth(18); - }else if (self.isHaveGiveBWSttawberry == YES && self.isHaveGivePresent == NO){ - [self.genreHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(15)); - make.width.mas_equalTo(kGetScaleWidth(80)); - make.height.mas_equalTo(kGetScaleWidth(31)); - make.top.equalTo(self.intelligenceRegard.mas_bottom).mas_offset(kGetScaleWidth(25)); - }]; - self.type = 0; - self.presentBtuton.hidden = YES; - self.bWSttawberryBtuton.hidden = NO; - self.genreHierarchyRegard.spacing = kGetScaleWidth(0); - }else if (self.isHaveGiveBWSttawberry == NO && self.isHaveGivePresent == YES){ - [self.genreHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(15)); - make.width.mas_equalTo(kGetScaleWidth(80)); - make.height.mas_equalTo(kGetScaleWidth(31)); - make.top.equalTo(self.intelligenceRegard.mas_bottom).mas_offset(kGetScaleWidth(25)); - }]; - self.type = 1; - self.presentBtuton.hidden = NO; - self.bWSttawberryBtuton.hidden = YES; - self.genreHierarchyRegard.spacing = kGetScaleWidth(0); - - } - - [self.figureFigure mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.equalTo(self.intelligenceRegard); - make.width.height.mas_equalTo(kGetScaleWidth(24)); - make.top.equalTo(self.genreHierarchyRegard.mas_bottom).mas_offset(kGetScaleWidth(35)); - - }]; - [self.bWSttawberryBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(kGetScaleWidth(80)); - make.height.mas_equalTo(kGetScaleWidth(31)); - }]; - [self.presentBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.equalTo(self.bWSttawberryBtuton); - }]; - - [self.bWSttawberryFigureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.equalTo(self.titleView); - make.height.mas_equalTo(kGetScaleWidth(24)); - make.left.equalTo(self.figureFigure.mas_right).mas_offset(kGetScaleWidth(10)); - make.centerY.equalTo(self.figureFigure); - }]; - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(1); - make.left.equalTo(self.intelligenceRegard); - make.right.equalTo(self.titleView); - make.top.equalTo(self.figureFigure.mas_bottom).mas_offset(kGetScaleWidth(6)); - }]; - [self.mieyBWSttawberryFigure mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.equalTo(self.titleView); - make.width.height.equalTo(self.figureFigure); - make.top.equalTo(self.figureFigure.mas_bottom).mas_offset(kGetScaleWidth(9)); - }]; - [self.mieyBWSttawberryFigureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.equalTo(self.mieyBWSttawberryFigure.mas_left).mas_offset(-kGetScaleWidth(8)); - make.height.equalTo(self.titleView); - make.left.equalTo(self.intelligenceRegard); - make.centerY.equalTo(self.mieyBWSttawberryFigure); - }]; - [self.confirmBtn mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.equalTo(self.intelligenceRegard); - make.right.equalTo(self.titleView); - make.top.equalTo(self.genreHierarchyRegard.mas_bottom).mas_offset(kGetScaleWidth(162)); - make.height.mas_equalTo(kGetScaleWidth(46)); - }]; - - [self.givePresentRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(0); - make.right.mas_equalTo(0); - make.top.equalTo(self.genreHierarchyRegard.mas_bottom).mas_offset(kGetScaleWidth(20)); - make.height.mas_equalTo(kGetScaleWidth(370)); - }]; - - -} -- (void)keyboardWillShow:(NSNotification *)notification - -{ if(!self.givePresentRegard.essayUniverse.isFirstResponder){return;} - NSDictionary *userInfo = [notification userInfo]; - CGFloat curkeyBoardHeight = [[[notification userInfo]objectForKey:@"UIKeyboardBoundsUserInfoKey"]CGRectValue].size.height; - CGRect begin = [[[notification userInfo]objectForKey:@"UIKeyboardFrameBeginUserInfoKey"]CGRectValue]; - CGRect end = [[[notification userInfo]objectForKey:@"UIKeyboardFrameEndUserInfoKey"]CGRectValue]; - - - if( begin.size.height > 0 && (begin.origin.y - end.origin.y > 0)){ - CGFloat keyBoardHeight = curkeyBoardHeight; - CGFloat animationDuration = [userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]; - [self.superview layoutIfNeeded]; - [UIView animateWithDuration:animationDuration animations:^{ - [self mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(-keyBoardHeight); - }]; - [self.superview layoutIfNeeded]; - }]; - - } - -} -- (void)keyboardWillHide:(NSNotification *)notification{ - if(!self.givePresentRegard.essayUniverse.isFirstResponder){return;} - - NSDictionary *userInfo = [notification userInfo]; - NSValue *keyboardValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey]; - CGRect keyboardRect = [keyboardValue CGRectValue]; - CGFloat animationDuration = [userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]; - - [self.superview layoutIfNeeded]; - [UIView animateWithDuration:animationDuration animations:^{ - [self mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(0); - }]; - - [self.superview layoutIfNeeded]; - }completion:^(BOOL finished) { - - }]; - -} --(void)dealloc{ - [[NSNotificationCenter defaultCenter]removeObserver:self]; -} - --(void)setListData:(NSMutableArray *)listData count:(NSInteger)count{ - [self.givePresentRegard setListData:listData count:count]; -} -#pragma mark- UITextFieldDelegate --(void)essayUniverseDidDiversifictowardsion:(UITextField *)essayUniverse{ - self.confirmBtn.selected = essayUniverse.text.length > 0; -} --(void)essayUniverseDidDiversifictowardsionAboutEssay:(NSString *)text{ - if(self.givePresentRegard.concludePresentMatrix != nil){ - self.confirmBtn.selected = text.length > 0; - } - -} -- (BOOL)essayUniverse:(UITextField *)essayUniverse shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ - ClientDisposition *config = [ClientDisposition partowardsiciptowardsionDisposition]; - NSString *strawberry = [NSString stringWithFormat:@"%ld",config.dispositionAbstract.giveDiamondOnceLimitNum]; - if((essayUniverse.text.length + string.length) > strawberry.length){ - return NO; - } - return YES; -} -#pragma mark -btn方法 --(void)acknowledgementPerformance{ - if(self.confirmBtn.selected == NO){ - return; - } - if(self.type == 0){ - [self.bWSttawberryFigureRegard resignFirstResponder]; - if(self.delegate && [self.delegate respondsToSelector:@selector(acknowledgementPerformanceAboutEssay:)]){ - [self.delegate acknowledgementPerformanceAboutEssay:self.bWSttawberryFigureRegard.text]; - } - return; - } - - if(self.givePresentRegard.concludePresentMatrix == nil){ - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_MineChooseGiveGiftView2")]; - return; - } - NSInteger count = [self.givePresentRegard.presentComputation integerValue]; - if(count == 0){ - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_MineChooseGiveGiftView4")]; - return; - } - if(count > self.givePresentRegard.concludePresentMatrix.count){ - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_MineChooseGiveGiftView3")]; - return; - } - - - [self.givePresentRegard resignFirstResponder]; - if(self.delegate && [self.delegate respondsToSelector:@selector(acknowledgementPerformanceAboutEssay: concludePresentMatrix:)]){ - [self.delegate acknowledgementPerformanceAboutEssay:self.givePresentRegard.presentComputation concludePresentMatrix:self.givePresentRegard.concludePresentMatrix]; - } -} - --(void)concludeDiamondPerformance{ - self.bWSttawberryBtuton.selected = YES; - self.presentBtuton.selected = NO; - self.givePresentRegard.hidden = YES; - self.type = 0; - self.confirmBtn.selected = self.bWSttawberryFigureRegard.text.length > 0; - - [self.confirmBtn mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.genreHierarchyRegard.mas_bottom).mas_offset(kGetScaleWidth(162)); - }]; -} --(void)concludePresentPerformance{ - self.type = 1; - self.bWSttawberryBtuton.selected = NO; - self.presentBtuton.selected = YES; - self.givePresentRegard.hidden = NO; - if(self.givePresentRegard.concludePresentMatrix != nil){ - self.confirmBtn.selected = self.givePresentRegard.presentComputation.length > 0; - }else{ - self.confirmBtn.selected = NO; - } - [self.confirmBtn mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.genreHierarchyRegard.mas_bottom).mas_offset(kGetScaleWidth(440)); - }]; -} --(void)setGiveBWSttawberryMatrix:(YUMIManeGiveDiamondMatrix *)giveBWSttawberryMatrix{ - _giveBWSttawberryMatrix = giveBWSttawberryMatrix; - _intelligenceRegard.imageUrl = _giveBWSttawberryMatrix.targetAvatar; - _titleView.text = _giveBWSttawberryMatrix.targetNick; - _idChampionRegard.text = [NSString stringWithFormat:@"ID:%@",_giveBWSttawberryMatrix.targetErbanNo]; -} --(void)setStrawberry:(NSString *)strawberry{ - _strawberry = strawberry; - _mieyBWSttawberryFigureRegard.text = [NSString stringWithFormat:@"%@%@",YMLocalizedString(@"YUMI_MineChooseGiveDiamondView0"),strawberry]; -} - -#pragma mark - 懒加载 -- (NetIndicateRegard *)intelligenceRegard{ - if (!_intelligenceRegard){ - NetIndicateDisposition *config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceRegard = [[NetIndicateRegard alloc]initWithConfig:config]; - _intelligenceRegard.layer.cornerRadius = kGetScaleWidth(25); - _intelligenceRegard.layer.masksToBounds = YES; - } - return _intelligenceRegard; -} - --(UILabel *)titleView{ - if (!_titleView){ - _titleView = [UILabel new]; - _titleView.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _titleView.font = [UIFont systemFontOfSize:kGetScaleWidth(14) weight:UIFontWeightMedium]; - } - return _titleView; -} --(UILabel *)idChampionRegard{ - if (!_idChampionRegard){ - _idChampionRegard = [UILabel new]; - _idChampionRegard.font = [UIFont systemFontOfSize:kGetScaleWidth(12) weight:UIFontWeightMedium]; - _idChampionRegard.textColor = [DJDKMIMOMColor prohibitionBtutonEssayPrettify]; - } - return _idChampionRegard; -} - --(UIImageView *)figureFigure{ - if (!_figureFigure){ - _figureFigure = [UIImageView new]; - _figureFigure.image = [UIImage imageNamed:@"yumi_center_give_diamone_pic"]; - } - return _figureFigure; -} - -- (UITextField *)bWSttawberryFigureRegard{ - if (!_bWSttawberryFigureRegard){ - _bWSttawberryFigureRegard = [UITextField new]; - _bWSttawberryFigureRegard.keyboardType = UIKeyboardTypeNumberPad; - _bWSttawberryFigureRegard.font = [UIFont systemFontOfSize:kGetScaleWidth(30) weight:UIFontWeightMedium]; - _bWSttawberryFigureRegard.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _bWSttawberryFigureRegard.attributedPlaceholder = [[NSMutableAttributedString alloc]initWithString:@"0" attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:kGetScaleWidth(30) weight:UIFontWeightRegular],NSForegroundColorAttributeName:[DJDKMIMOMColor prohibitionBtutonEssayPrettify]}]; - _bWSttawberryFigureRegard.textAlignment = NSTextAlignmentRight; - [_bWSttawberryFigureRegard addTarget:self action:@selector(essayUniverseDidDiversifictowardsion:) forControlEvents:UIControlEventEditingChanged]; - _bWSttawberryFigureRegard.delegate = self; - } - return _bWSttawberryFigureRegard; -} --(UIView *)burlywoodRegard{ - if (!_burlywoodRegard){ - _burlywoodRegard = [UIView new]; - _burlywoodRegard.backgroundColor = UIColorFromRGB(0xF7F7F7); - } - return _burlywoodRegard; -} --(UILabel *)mieyBWSttawberryFigureRegard{ - if (!_mieyBWSttawberryFigureRegard){ - _mieyBWSttawberryFigureRegard = [UILabel new]; - _mieyBWSttawberryFigureRegard.textAlignment = NSTextAlignmentRight; - _mieyBWSttawberryFigureRegard.text = [NSString stringWithFormat:@"%@0",YMLocalizedString(@"YUMI_MineChooseGiveDiamondView0")]; - _mieyBWSttawberryFigureRegard.font = [UIFont systemFontOfSize:kGetScaleWidth(14) weight:UIFontWeightMedium]; - _mieyBWSttawberryFigureRegard.textColor = [DJDKMIMOMColor prohibitionBtutonEssayPrettify]; - } - return _mieyBWSttawberryFigureRegard; -} --(UIImageView *)mieyBWSttawberryFigure{ - if (!_mieyBWSttawberryFigure){ - _mieyBWSttawberryFigure = [UIImageView new]; - _mieyBWSttawberryFigure.image = [UIImage imageNamed:@"yumi_center_give_diamone_pic"]; - } - return _mieyBWSttawberryFigure; -} --(UIButton *)confirmBtn{ - if (!_confirmBtn){ - _confirmBtn = [UIButton new]; - [_confirmBtn setTitle:YMLocalizedString(@"YUMI_MineChooseGiveDiamondView1") forState:UIControlStateNormal]; - [_confirmBtn setTitleColor:[DJDKMIMOMColor prohibitionBtutonEssayPrettify] forState:UIControlStateNormal]; - [_confirmBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; - [_confirmBtn setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(KScreenWidth - kGetScaleWidth(30), kGetScaleWidth(46))] forState:UIControlStateNormal]; - [_confirmBtn setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityMiddlePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(KScreenWidth - kGetScaleWidth(30), kGetScaleWidth(46))] forState:UIControlStateSelected]; - _confirmBtn.layer.cornerRadius = kGetScaleWidth(46) / 2; - _confirmBtn.layer.masksToBounds = YES; - [_confirmBtn addTarget:self action:@selector(acknowledgementPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _confirmBtn; -} -- (YUMIManeChooseGivePresentRegard *)givePresentRegard{ - if (!_givePresentRegard){ - _givePresentRegard = [[YUMIManeChooseGivePresentRegard alloc]initWithFrame:CGRectZero]; - _givePresentRegard.hidden = YES; - _givePresentRegard.delegate = self; - } - return _givePresentRegard; -} - -- (UIStackView *)genreHierarchyRegard{ - if (!_genreHierarchyRegard) { - _genreHierarchyRegard = [[UIStackView alloc] init]; - _genreHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _genreHierarchyRegard.distribution = UIStackViewDistributionFill; - _genreHierarchyRegard.alignment = UIStackViewAlignmentFill; - - } - return _genreHierarchyRegard; -} - -- (UIButton *)bWSttawberryBtuton{ - if (!_bWSttawberryBtuton){ - _bWSttawberryBtuton = [UIButton new]; - UIImage *noChooseImage = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(kGetScaleWidth(80), kGetScaleWidth(31))]; - UIImage *chooseImage = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityMiddlePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(kGetScaleWidth(80), kGetScaleWidth(31))]; - [_bWSttawberryBtuton setBackgroundImage:noChooseImage forState:UIControlStateNormal]; - [_bWSttawberryBtuton setBackgroundImage:chooseImage forState:UIControlStateSelected]; - _bWSttawberryBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - [_bWSttawberryBtuton setTitle:YMLocalizedString(@"YUMI_MineChooseGiveDiamondView2") forState:UIControlStateNormal]; - [_bWSttawberryBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; - [_bWSttawberryBtuton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; - _bWSttawberryBtuton.selected = YES; - _bWSttawberryBtuton.layer.cornerRadius = kGetScaleWidth((31))/2; - _bWSttawberryBtuton.layer.masksToBounds = YES; - [_bWSttawberryBtuton addTarget:self action:@selector(concludeDiamondPerformance) forControlEvents:UIControlEventTouchUpInside]; - - } - return _bWSttawberryBtuton; -} --(UIButton *)presentBtuton{ - if (!_presentBtuton){ - _presentBtuton = [UIButton new]; - UIImage *noChooseImage = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(kGetScaleWidth(80), kGetScaleWidth(31))]; - UIImage *chooseImage = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityMiddlePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(kGetScaleWidth(80), kGetScaleWidth(31))]; - [_presentBtuton setBackgroundImage:noChooseImage forState:UIControlStateNormal]; - [_presentBtuton setBackgroundImage:chooseImage forState:UIControlStateSelected]; - _presentBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - [_presentBtuton setTitle:YMLocalizedString(@"YUMI_MineChooseGiveDiamondView3") forState:UIControlStateNormal]; - [_presentBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; - [_presentBtuton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; - _presentBtuton.selected = NO; - _presentBtuton.layer.cornerRadius = kGetScaleWidth((31))/2; - _presentBtuton.layer.masksToBounds = YES; - [_presentBtuton addTarget:self action:@selector(concludePresentPerformance) forControlEvents:UIControlEventTouchUpInside]; - - } - return _presentBtuton; -} -@end - - diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeChooseGivePresentRegard.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeChooseGivePresentRegard.h deleted file mode 100644 index c2d8912d..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeChooseGivePresentRegard.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// YUMIManeChooseGivePresentRegard.h -// YuMi -// -// Created by YuMi on 2022/11/2. -// - -#import -#import "PresentAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN -@protocol FBCManeChooseGivePresentRegardRepresendtation - --(void)essayUniverseDidDiversifictowardsionAboutEssay:(NSString *)text; - -@end - -@interface YUMIManeChooseGivePresentRegard : UIView -@property (nonatomic,strong) UITextField *essayUniverse; -@property (nonatomic,copy) NSString *presentComputation; -@property (nonatomic,assign) NSInteger curPeriod; -@property (nonatomic,assign) NSInteger count; -@property (nonatomic,weak) id delegate; -@property (nonatomic,strong) PresentAbstractMatrix *concludePresentMatrix; --(void)setListData:(NSMutableArray *)listData count:(NSInteger)count; --(void)resignFirstResponder; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeChooseGivePresentRegard.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeChooseGivePresentRegard.m deleted file mode 100644 index cc23a6d2..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeChooseGivePresentRegard.m +++ /dev/null @@ -1,270 +0,0 @@ -// -// YUMIManeChooseGivePresentRegard.m -// YuMi -// -// Created by YuMi on 2022/11/2. -// -#import "YUMIPageControl.h" -#import "YUMIManeChooseGivePresentRegard.h" -#import "YUMIManeChooseGivePresentRegardElement.h" -#import "YUMIUnionDispossessAssembletionRegardElement.h" -#import "UIView+Corner.h" -@interface YUMIManeChooseGivePresentRegard() -@property (nonatomic,strong) UICollectionView *collectionView; -@property (nonatomic,strong) UIView *backgroundRegard; -@property (nonatomic,strong) YUMIPageControl *pageControl; -@property (nonatomic,strong) NSMutableArray *listData; -@property (nonatomic,strong) NSIndexPath *indexPath; - -@property (nonatomic,strong) UILabel *figureRegard; - -@property (nonatomic,strong) UIView *burlywoodRegard; -@property (nonatomic,strong) UIButton *entiretyBtuton; -@end -@implementation YUMIManeChooseGivePresentRegard - --(instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if(self){ - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backgroundRegard]; - [self addSubview:self.collectionView]; - [self addSubview:self.pageControl]; - [self addSubview:self.figureRegard]; - [self addSubview:self.essayUniverse]; - [self addSubview:self.burlywoodRegard]; - [self addSubview:self.entiretyBtuton]; -} - -- (void)initChildLyRestrictions { - [self.backgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(15)); - make.right.mas_equalTo(-kGetScaleWidth(15)); - make.top.equalTo(self); - make.height.mas_equalTo(kGetScaleWidth(290)); - }]; - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(15)); - make.right.mas_equalTo(-kGetScaleWidth(15)); - make.top.equalTo(self); - make.height.mas_equalTo(kGetScaleWidth(248)); - }]; - [self.pageControl mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.equalTo(self); - make.top.mas_equalTo(kGetScaleWidth(269)); - make.height.mas_equalTo(kGetScaleWidth(3)); - make.width.mas_equalTo(0); - }]; - [self.essayUniverse mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-kGetScaleWidth(15)); - make.height.mas_equalTo(kGetScaleWidth(17)); - make.width.mas_equalTo(kGetScaleWidth(156)); - make.top.equalTo(self.backgroundRegard.mas_bottom).mas_offset(kGetScaleWidth(23)); - }]; - [self.figureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.equalTo(self.essayUniverse); - make.right.equalTo(self.essayUniverse.mas_left).mas_offset(-kGetScaleWidth(10)); - }]; - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.equalTo(self.essayUniverse); - make.left.equalTo(self.figureRegard); - make.height.mas_equalTo(1); - make.top.equalTo(self.essayUniverse.mas_bottom).mas_offset(kGetScaleWidth(11)); - }]; - [self.entiretyBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(kGetScaleWidth(36)); - make.height.mas_equalTo(kGetScaleWidth(19)); - make.right.equalTo(self.essayUniverse); - make.top.equalTo(self.burlywoodRegard.mas_bottom).mas_offset(kGetScaleWidth(10)); - }]; -} --(void)setListData:(NSMutableArray *)listData count:(NSInteger)count{ - self.listData = listData; - if(listData.count == 0)return; - [self.collectionView reloadData]; - - self.pageControl.count = count; - self.pageControl.curPeriod = 1; - self.pageControl.hidden = count == 1; -} --(void)resignFirstResponder{ - [self.essayUniverse resignFirstResponder]; -} -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ - if(self.listData.count == 0){ - YUMIUnionDispossessAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIUnionDispossessAssembletionRegardElement class]) forIndexPath:indexPath]; - [cell setConstraints]; - [cell setTitle:YMLocalizedString(@"YUMI_MineChooseGiveGiftView5")]; - return cell; - } - NSInteger count = indexPath.section / 4; - NSInteger index = indexPath.row == 0 ? indexPath.section + count * 4 : indexPath.section + count * 4 + 4; - PresentAbstractMatrix *presentMatrix = self.listData[index]; - if(presentMatrix.isEmpty == YES){ - UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([UICollectionViewCell class]) forIndexPath:indexPath]; - cell.backgroundColor = [UIColor clearColor]; - return cell; - } - YUMIManeChooseGivePresentRegardElement *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIManeChooseGivePresentRegardElement class]) forIndexPath:indexPath]; - cell.presentMatrix = presentMatrix; - cell.isConclude = NO; - if(self.indexPath != nil){ - if(self.indexPath.section == indexPath.section){ - cell.isConclude = self.indexPath.row == indexPath.row; - } - } - - return cell; -} - -- (NSInteger)collectionView:(nonnull UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - if(self.listData.count == 0)return 1; - return 2; - - -} --(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ - NSInteger page = scrollView.contentOffset.x / (KScreenWidth - kGetScaleWidth(30)); - self.pageControl.curPeriod = ceil(page+1); -} --(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{ - - return self.listData.count > 0 ? self.listData.count / 2 : 1; -} -- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{ - if(self.listData.count == 0)return self.collectionView.frame.size; - return CGSizeMake(kGetScaleWidth(72), kGetScaleWidth(107)); -} -- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{ - if(self.listData.count == 0)return UIEdgeInsetsMake(0,0, 0, 0); - if(section == 0){ - return UIEdgeInsetsMake(kGetScaleWidth(17), kGetScaleWidth(14), 0, 0); - }else if (section == self.listData.count / 2 - 1){ - return UIEdgeInsetsMake(kGetScaleWidth(17), kGetScaleWidth(10), 0, kGetScaleWidth(14)); - }else if (section % 4 == 0){ - return UIEdgeInsetsMake(kGetScaleWidth(17), kGetScaleWidth(28), 0, 0); - } - return UIEdgeInsetsMake(kGetScaleWidth(17), kGetScaleWidth(10), 0, 0); -} --(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{ - - id cell = [collectionView cellForItemAtIndexPath:indexPath]; - if([cell isKindOfClass:[YUMIManeChooseGivePresentRegardElement class]]){ - YUMIManeChooseGivePresentRegardElement *getCell = (YUMIManeChooseGivePresentRegardElement *)cell; - self.indexPath = indexPath; - self.concludePresentMatrix = getCell.presentMatrix; - [self.collectionView reloadData]; - if(self.delegate && [self.delegate respondsToSelector:@selector(essayUniverseDidDiversifictowardsionAboutEssay:)]){ - [self.delegate essayUniverseDidDiversifictowardsionAboutEssay:self.essayUniverse.text]; - } - } - - -} -- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section{ - return kGetScaleWidth(10); -} -#pragma mark- UITextFieldDelegate --(void)essayUniverseDidDiversifictowardsion:(UITextField *)essayUniverse{ - if(self.delegate && [self.delegate respondsToSelector:@selector(essayUniverseDidDiversifictowardsionAboutEssay:)]){ - [self.delegate essayUniverseDidDiversifictowardsionAboutEssay:essayUniverse.text]; - } -} --(void)entiretyConcludePerformance{ - if(self.concludePresentMatrix == nil){ - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_MineChooseGiveGiftView2")]; - return; - } - self.essayUniverse.text = @(self.concludePresentMatrix.count).stringValue; -} -#pragma mark -懒加载 - - -- (UICollectionView *)collectionView{ - if (!_collectionView){ - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc]init]; - layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; - _collectionView = [[UICollectionView alloc]initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.delegate = self; - _collectionView.dataSource = self; - _collectionView.pagingEnabled = YES; - _collectionView.showsHorizontalScrollIndicator = NO; - _collectionView.backgroundColor = [UIColor clearColor]; - [_collectionView registerClass:[YUMIManeChooseGivePresentRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIManeChooseGivePresentRegardElement class])]; - [_collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([UICollectionViewCell class])]; - [_collectionView registerClass:[YUMIUnionDispossessAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIUnionDispossessAssembletionRegardElement class])]; - } - return _collectionView; -} - --(UIView *)backgroundRegard{ - if (!_backgroundRegard){ - _backgroundRegard = [UIView new]; - _backgroundRegard.backgroundColor = UIColorFromRGB(0xF3F5FA); - [_backgroundRegard setMonopolizeAboutContraryApexMonopolize:8 rightTopCorner:8 bottomLeftCorner:8 bottomRightCorner:8 size:CGSizeMake(kGetScaleWidth(345), kGetScaleWidth(290))]; - } - return _backgroundRegard; -} -- (YUMIPageControl *)pageControl{ - if (!_pageControl){ - _pageControl = [[YUMIPageControl alloc]init]; - _pageControl.backgroundColor = [UIColor clearColor]; - - } - return _pageControl; -} - -- (UILabel *)figureRegard { - if (!_figureRegard) { - _figureRegard = [[UILabel alloc] init]; - _figureRegard.font = [UIFont systemFontOfSize:11]; - _figureRegard.textColor = [DJDKMIMOMColor prohibitionBtutonEssayPrettify]; - _figureRegard.text = YMLocalizedString(@"YUMI_MineChooseGiveGiftView0"); - } - return _figureRegard; -} - --(UITextField *)essayUniverse{ - if (!_essayUniverse){ - _essayUniverse = [UITextField new]; - _essayUniverse.keyboardType = UIKeyboardTypeNumberPad; - _essayUniverse.font = [UIFont systemFontOfSize:kGetScaleWidth(20) weight:UIFontWeightMedium]; - _essayUniverse.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _essayUniverse.attributedPlaceholder = [[NSMutableAttributedString alloc]initWithString:@"0" attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:kGetScaleWidth(20) weight:UIFontWeightRegular],NSForegroundColorAttributeName:[DJDKMIMOMColor prohibitionBtutonEssayPrettify]}]; - _essayUniverse.textAlignment = NSTextAlignmentRight; - _essayUniverse.text = @"1"; - [_essayUniverse addTarget:self action:@selector(essayUniverseDidDiversifictowardsion:) forControlEvents:UIControlEventEditingChanged]; - } - return _essayUniverse; -} --(UIView *)burlywoodRegard{ - if (!_burlywoodRegard){ - _burlywoodRegard = [UIView new]; - _burlywoodRegard.backgroundColor = UIColorFromRGB(0xF7F7F7); - } - return _burlywoodRegard; -} --(UIButton *)entiretyBtuton{ - if (!_entiretyBtuton){ - _entiretyBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_entiretyBtuton setTitle:YMLocalizedString(@"YUMI_MineChooseGiveGiftView1") forState:UIControlStateNormal]; - _entiretyBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_entiretyBtuton setTitleColor:[DJDKMIMOMColor prohibitionBtutonEssayPrettify] forState:UIControlStateNormal]; - _entiretyBtuton.backgroundColor = UIColorFromRGB(0xF3F5FA); - [_entiretyBtuton setMonopolizeAboutContraryApexMonopolize:4 rightTopCorner:4 bottomLeftCorner:4 bottomRightCorner:4 size:CGSizeMake(kGetScaleWidth(36), kGetScaleWidth(19))]; - [_entiretyBtuton addTarget:self action:@selector(entiretyConcludePerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _entiretyBtuton; -} --(NSString *)presentComputation{ - return self.essayUniverse.text; -} - -@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeChooseGivePresentRegardElement.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeChooseGivePresentRegardElement.h deleted file mode 100644 index 3c516102..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeChooseGivePresentRegardElement.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YUMIManeChooseGivePresentRegardElement.h -// YuMi -// -// Created by YuMi on 2022/11/1. -// - -#import -#import "PresentAbstractMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeChooseGivePresentRegardElement : UICollectionViewCell -@property (nonatomic,strong) PresentAbstractMatrix * presentMatrix; -@property (nonatomic,assign) BOOL isConclude; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeChooseGivePresentRegardElement.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeChooseGivePresentRegardElement.m deleted file mode 100644 index 3fee5508..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeChooseGivePresentRegardElement.m +++ /dev/null @@ -1,102 +0,0 @@ -// -// YUMIManeChooseGivePresentRegardElement.m -// YuMi -// -// Created by YuMi on 2022/11/1. -// - -#import "YUMIManeChooseGivePresentRegardElement.h" -#import "NetIndicateRegard.h" -#import "UIView+Corner.h" -@interface YUMIManeChooseGivePresentRegardElement() -@property (nonatomic,strong) NetIndicateRegard *presentIndicateRegard; -@property (nonatomic,strong) UILabel *presentConstituteRegard; -@property (nonatomic,strong) UILabel *presentFigureRegard; -@end -@implementation YUMIManeChooseGivePresentRegardElement --(instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if(self){ - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - - [self.contentView addSubview:self.presentIndicateRegard]; - [self.contentView addSubview:self.presentConstituteRegard]; - [self.contentView addSubview:self.presentFigureRegard]; -} -- (void)initChildLyRestrictions { - [self.presentIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(kGetScaleWidth(72)); - make.top.centerX.equalTo(self.contentView); - - }]; - [self.presentConstituteRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.equalTo(self.contentView); - make.height.mas_equalTo(kGetScaleWidth(12)); - make.top.equalTo(self.presentIndicateRegard.mas_bottom).mas_offset(kGetScaleWidth(6)); - }]; - [self.presentFigureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.left.equalTo(self.contentView); - make.height.equalTo(self.presentConstituteRegard); - make.top.equalTo(self.presentConstituteRegard.mas_bottom).mas_offset(kGetScaleWidth(5)); - }]; -} --(void)setIsConclude:(BOOL)isConclude{ - _isConclude = isConclude; - UIImage *image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityMiddlePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(kGetScaleWidth(72), kGetScaleWidth(72))]; - UIColor *lineColor = [UIColor colorWithPatternImage:image]; - _presentIndicateRegard.layer.borderColor = _isConclude ? lineColor.CGColor : [UIColor clearColor].CGColor; -} --(void)setPresentMatrix:(PresentAbstractMatrix *)presentMatrix{ - _presentMatrix = presentMatrix; - _presentIndicateRegard.imageUrl = _presentMatrix.giftUrl; - _presentConstituteRegard.text = _presentMatrix.giftName; - _presentFigureRegard.text = [NSString stringWithFormat:@"x%@",@(_presentMatrix.count)]; -} -#pragma mark -懒加载 - - -- (NetIndicateRegard *)presentIndicateRegard{ - if (!_presentIndicateRegard){ - NetIndicateDisposition *config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _presentIndicateRegard = [[NetIndicateRegard alloc]initWithConfig:config]; - [_presentIndicateRegard setMonopolizeAboutContraryApexMonopolize:8 rightTopCorner:8 bottomLeftCorner:8 bottomRightCorner:8 size:CGSizeMake(kGetScaleWidth(72), kGetScaleWidth(72))]; - _presentIndicateRegard.backgroundColor = [UIColor whiteColor]; - UIImage *image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityMiddlePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(kGetScaleWidth(72), kGetScaleWidth(72))]; - UIColor *lineColor = [UIColor colorWithPatternImage:image]; - _presentIndicateRegard.layer.cornerRadius = kGetScaleWidth(8); - _presentIndicateRegard.layer.masksToBounds = YES; - _presentIndicateRegard.layer.borderWidth = 1; - _presentIndicateRegard.layer.borderColor = lineColor.CGColor; - } - return _presentIndicateRegard; -} - -- (UILabel *)presentConstituteRegard { - if (!_presentConstituteRegard) { - _presentConstituteRegard = [[UILabel alloc] init]; - _presentConstituteRegard.font = [UIFont systemFontOfSize:12]; - _presentConstituteRegard.textColor = UIColorFromRGB(0x6D6B89); - _presentConstituteRegard.textAlignment = NSTextAlignmentCenter; - } - return _presentConstituteRegard; -} - -- (UILabel *)presentFigureRegard { - if (!_presentFigureRegard) { - _presentFigureRegard = [[UILabel alloc] init]; - _presentFigureRegard.font = [UIFont systemFontOfSize:12]; - _presentFigureRegard.textColor = UIColorFromRGB(0x6D6B89); - } - return _presentFigureRegard; -} - -@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeConfirmGiveDiamondRegard.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeConfirmGiveDiamondRegard.h deleted file mode 100644 index cd1c2a02..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeConfirmGiveDiamondRegard.h +++ /dev/null @@ -1,45 +0,0 @@ -// -// YUMIManeConfirmGiveDiamondRegard.h -// YuMi -// -// Created by YuMi on 2022/10/20. -// - -#import -#import "ConsumerAbstractMatrix.h" -#import "YUMIManeGiveDiamondMatrix.h" -NS_ASSUME_NONNULL_BEGIN - - - - - - -@protocol FBCManeConfirmGiveDiamondRegardRepresendtation - -- (void)yumiManeConfirmGiveDiamondRegardAccomplish; - - - -@end - -@interface YUMIManeConfirmGiveDiamondRegard : UIView -@property (nonatomic,strong) YUMIManeGiveDiamondMatrix *giveBWSttawberryMatrix; -@property (nonatomic,assign) int type; -@property (nonatomic,assign) NSInteger introjectionBWSttawberrys; -@property (nonatomic,assign) NSInteger goldNum; -@property (nonatomic,assign) double poundage; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END - - - - -@interface YUMIManeConfirmGiveDiamondProvisionRegard : UIView - -@property(nonatomic,copy)NSString *title; - -@property(nonatomic,copy)NSString *num; -@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeConfirmGiveDiamondRegard.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeConfirmGiveDiamondRegard.m deleted file mode 100644 index 3efcd4f3..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeConfirmGiveDiamondRegard.m +++ /dev/null @@ -1,333 +0,0 @@ -// -// YUMIManeConfirmGiveDiamondRegard.m -// YuMi -// -// Created by YuMi on 2022/10/20. -// - -#import "YUMIManeConfirmGiveDiamondRegard.h" -#import "ClientDisposition.h" -#import "MKJPopup.h" -#import "UIButton+EnlargeTouchArea.h" -@interface YUMIManeConfirmGiveDiamondRegard() -@property (nonatomic,strong) UILabel *titleView; -@property (nonatomic,strong) UILabel *figureRegard; -@property (nonatomic,strong) UIButton *encourageVeiw; -@property (nonatomic,strong) YUMIManeConfirmGiveDiamondProvisionRegard *poundageRegard; -@property (nonatomic,strong) YUMIManeConfirmGiveDiamondProvisionRegard *generalFigureRegard; -@property (nonatomic,strong) UIButton *confirmBtn; -@property (nonatomic,strong) UIView *burlywoodRegard; - -@end -@implementation YUMIManeConfirmGiveDiamondRegard - --(instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if(self){ - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor whiteColor]; - self.layer.cornerRadius = 12; - self.layer.masksToBounds = YES; - [self addSubview:self.encourageVeiw]; - [self addSubview:self.titleView]; - [self addSubview:self.figureRegard]; - [self addSubview:self.burlywoodRegard]; - [self addSubview:self.poundageRegard]; - [self addSubview:self.generalFigureRegard]; - [self addSubview:self.confirmBtn]; -} -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(kGetScaleWidth(310)); - make.height.mas_equalTo(kGetScaleWidth(250)); - }]; - [self.encourageVeiw mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(kGetScaleWidth(22)); - make.top.mas_equalTo(kGetScaleWidth(10)); - make.right.mas_equalTo(-kGetScaleWidth(15)); - }]; - - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(20)); - make.right.mas_equalTo(-kGetScaleWidth(20)); - make.top.mas_equalTo(kGetScaleWidth(36)); - make.height.mas_equalTo(kGetScaleWidth(21)); - }]; - - [self.figureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.equalTo(self.titleView); - make.height.mas_equalTo(kGetScaleWidth(24)); - make.top.mas_equalTo(kGetScaleWidth(78)); - }]; - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.equalTo(self.titleView); - make.height.mas_equalTo(1); - make.top.mas_equalTo(kGetScaleWidth(113)); - }]; - - [self.poundageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.equalTo(self); - make.height.mas_equalTo(kGetScaleWidth(17)); - make.top.mas_equalTo(kGetScaleWidth(125)); - }]; - - [self.generalFigureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.equalTo(self); - make.height.mas_equalTo(kGetScaleWidth(17)); - make.top.mas_equalTo(kGetScaleWidth(150)); - }]; - [self.confirmBtn mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(kGetScaleWidth(37)); - make.width.mas_equalTo(kGetScaleWidth(135)); - make.top.mas_equalTo(kGetScaleWidth(189)); - make.centerX.equalTo(self); - }]; - -} - -#pragma mark -set get 方法 --(void)setType:(int)type{ - _type = type; - if(_type == 2){ - _generalFigureRegard.hidden = YES; - _poundageRegard.title = YMLocalizedString(@"YUMI_MineConfirmGiveDiamondView7"); - _titleView.text = YMLocalizedString(@"YUMI_MineConfirmGiveDiamondView5"); - [_confirmBtn setTitle:YMLocalizedString(@"YUMI_MineConfirmGiveDiamondView8") forState:UIControlStateNormal]; - - } -} -- (void)setGoldNum:(NSInteger)goldNum{ - _goldNum = goldNum; - if(_type == 2){ - [_poundageRegard setNum:[NSString stringWithFormat:YMLocalizedString(@"YUMI_MineConfirmGiveDiamondView6"),_goldNum]]; - } -} -- (void)setIntrojectionBWSttawberrys:(NSInteger)introjectionBWSttawberrys{ - _introjectionBWSttawberrys = introjectionBWSttawberrys; - if(_type == 2){ - NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWithString:@(_introjectionBWSttawberrys).stringValue attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:kGetScaleWidth(30) weight:UIFontWeightMedium],NSForegroundColorAttributeName:[DJDKMIMOMColor introjectionEssayPrettify]}]; - NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; - UIImage *iconImage = [UIImage imageNamed:@"yumi_center_give_diamone_pic"];; - attachment.bounds = CGRectMake(0, roundf(self.figureRegard.font.capHeight - 24)/2.f, 24, 24); - attachment.image =iconImage; - NSAttributedString * starAttribute = [NSMutableAttributedString attributedStringWithAttachment:(NSTextAttachment *)attachment]; - [attributedString insertAttributedString:starAttribute atIndex:attributedString.length]; - self.figureRegard.attributedText = attributedString; - } -} --(void)setGiveBWSttawberryMatrix:(YUMIManeGiveDiamondMatrix *)giveBWSttawberryMatrix{ - _giveBWSttawberryMatrix = giveBWSttawberryMatrix; - _titleView.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_MineConfirmGiveDiamondView1"),_giveBWSttawberryMatrix.targetNick]; - NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; - NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWithString:@(self.introjectionBWSttawberrys).stringValue attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:kGetScaleWidth(30) weight:UIFontWeightMedium],NSForegroundColorAttributeName:[DJDKMIMOMColor introjectionEssayPrettify]}]; - UIImage *iconImage = [UIImage imageNamed:@"yumi_center_give_diamone_pic"];; - attachment.bounds = CGRectMake(0, roundf(self.figureRegard.font.capHeight - 24)/2.f, 24, 24); - - attachment.image =iconImage; - NSAttributedString * starAttribute = [NSMutableAttributedString attributedStringWithAttachment:(NSTextAttachment *)attachment]; - [attributedString insertAttributedString:starAttribute atIndex:attributedString.length]; - self.figureRegard.attributedText = attributedString; - self.poundageRegard.hidden = NO; - self.generalFigureRegard.hidden = NO; - self.burlywoodRegard.hidden = NO; - if(self.poundage > 0){ - ClientDisposition *config = [ClientDisposition partowardsiciptowardsionDisposition]; - [_poundageRegard setNum:[NSString stringWithFormat:@"%@%%",@(config.dispositionAbstract.giveDiamondRate * 100)]]; - double totalNum = self.introjectionBWSttawberrys + self.poundage; - - NSString *num = [NSString stringWithFormat:@"%.2f",totalNum]; - [_generalFigureRegard setNum:[NSString stringWithFormat:@"%@%@",[self transltowardseSuffix:num],YMLocalizedString(@"YUMI_MineConfirmGiveDiamondView4")] ]; - return; - } - [self diversifictowardsionRestrictionsPerformance]; - self.poundageRegard.hidden = YES; - self.generalFigureRegard.hidden = YES; - self.burlywoodRegard.hidden = YES; - -} - -- (NSString *)transltowardseSuffix:(NSString *)numberStr{ - if (numberStr.length > 1) { - - if ([numberStr componentsSeparatedByString:@"."].count == 2) { - NSString *last = [numberStr componentsSeparatedByString:@"."].lastObject; - if ([last isEqualToString:@"00"]) { - numberStr = [numberStr substringToIndex:numberStr.length - (last.length + 1)]; - return numberStr; - }else{ - if ([[last substringFromIndex:last.length -1] isEqualToString:@"0"]) { - numberStr = [numberStr substringToIndex:numberStr.length - 1]; - return numberStr; - } - } - } - return numberStr; - }else{ - return nil; - } -} - --(void)diversifictowardsionRestrictionsPerformance{ - [self mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(kGetScaleWidth(196)); - }]; - [self.confirmBtn mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(136)); - }]; - -} - -#pragma mark- btn action --(void)backAction{ - [MKJPopup dismiss]; -} --(void)acknowledgementPerformance{ - [MKJPopup dismiss]; - if(self.delegate && [self.delegate respondsToSelector:@selector(yumiManeConfirmGiveDiamondRegardAccomplish)]){ - [self.delegate yumiManeConfirmGiveDiamondRegardAccomplish]; - } -} -#pragma mark - 懒加载 -- (UIButton *)encourageVeiw{ - if (!_encourageVeiw){ - _encourageVeiw = [UIButton new]; - [_encourageVeiw setBackgroundImage:[UIImage imageNamed:@"mine_give_diamond_back"] forState:UIControlStateNormal]; - [_encourageVeiw setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:10]; - [_encourageVeiw addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside]; - } - return _encourageVeiw; -} -- (UILabel *)titleView{ - if (!_titleView){ - _titleView = [UILabel new]; - _titleView.font = [UIFont systemFontOfSize:kGetScaleWidth(15) weight:UIFontWeightRegular]; - _titleView.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _titleView.textAlignment = NSTextAlignmentCenter; - } - return _titleView; -} --(UILabel *)figureRegard{ - if (!_figureRegard){ - _figureRegard = [UILabel new]; - _figureRegard.font = [UIFont systemFontOfSize:kGetScaleWidth(30) weight:UIFontWeightMedium]; - _figureRegard.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _figureRegard.textAlignment = NSTextAlignmentCenter; - } - return _figureRegard; -} -- (UIView *)burlywoodRegard{ - - if (!_burlywoodRegard){ - _burlywoodRegard = [UIView new]; - _burlywoodRegard.backgroundColor = UIColorFromRGB(0xF7F7F7); - } - return _burlywoodRegard; - -} -- (YUMIManeConfirmGiveDiamondProvisionRegard *)poundageRegard{ - if (!_poundageRegard){ - _poundageRegard = [[YUMIManeConfirmGiveDiamondProvisionRegard alloc]initWithFrame:CGRectZero]; - [_poundageRegard setTitle:YMLocalizedString(@"YUMI_MineConfirmGiveDiamondView2")]; - - } - return _poundageRegard; -} --(YUMIManeConfirmGiveDiamondProvisionRegard *)generalFigureRegard{ - if (!_generalFigureRegard){ - _generalFigureRegard = [[YUMIManeConfirmGiveDiamondProvisionRegard alloc]initWithFrame:CGRectZero]; - [_generalFigureRegard setTitle:YMLocalizedString(@"YUMI_MineConfirmGiveDiamondView3")]; - } - return _generalFigureRegard; -} -- (UIButton *)confirmBtn{ - if (!_confirmBtn){ - _confirmBtn = [UIButton new]; - UIImage *image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityMiddlePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(kGetScaleWidth(135), kGetScaleWidth(37))]; - [_confirmBtn setBackgroundImage:image forState:UIControlStateNormal]; - [_confirmBtn setTitle:YMLocalizedString(@"YUMI_MineConfirmGiveDiamondView0") forState:UIControlStateNormal]; - _confirmBtn.titleLabel.font = [UIFont systemFontOfSize:kGetScaleWidth(14) weight:UIFontWeightRegular]; - [_confirmBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [_confirmBtn addTarget:self action:@selector(acknowledgementPerformance) forControlEvents:UIControlEventTouchUpInside]; - _confirmBtn.layer.cornerRadius = kGetScaleWidth(37)/2; - _confirmBtn.layer.masksToBounds = YES; - } - return _confirmBtn; -} -@end - - - - -@interface YUMIManeConfirmGiveDiamondProvisionRegard() - -@property (nonatomic,strong) UILabel *titleView; -@property (nonatomic,strong) UILabel *figureRegard; - - - - -@end - -@implementation YUMIManeConfirmGiveDiamondProvisionRegard --(instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if(self){ - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} --(void)setTitle:(NSString *)title{ - _title = title; - _titleView.text = _title; - -} --(void)setNum:(NSString *)num{ - _num = num; - _figureRegard.text = _num; -} -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.titleView]; - [self addSubview:self.figureRegard]; -} -- (void)initChildLyRestrictions { - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(20)); - make.top.bottom.equalTo(self); - }]; - [self.figureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-kGetScaleWidth(20)); - make.top.bottom.equalTo(self); - }]; - -} - -#pragma mark - 懒加载 - -- (UILabel *)titleView{ - if (!_titleView){ - _titleView = [UILabel new]; - _titleView.font = [UIFont systemFontOfSize:kGetScaleWidth(12) weight:UIFontWeightRegular]; - _titleView.textColor = UIColorFromRGB(0x6D6B89); - } - return _titleView; -} --(UILabel *)figureRegard{ - if (!_figureRegard){ - _figureRegard = [UILabel new]; - _figureRegard.font = [UIFont systemFontOfSize:kGetScaleWidth(12) weight:UIFontWeightRegular]; - _figureRegard.textColor = UIColorFromRGB(0x6D6B89); - _figureRegard.textAlignment = NSTextAlignmentRight; - - } - return _figureRegard; -} -@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondCiphercodeRegard.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondCiphercodeRegard.h deleted file mode 100644 index c0999128..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondCiphercodeRegard.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YUMIManeGiveDiamondCiphercodeRegard.h -// YuMi -// -// Created by YuMi on 2022/10/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef void(^MineGiveDiamondPasswordViewBlock)(void); - - -@interface YUMIManeGiveDiamondCiphercodeRegard : UIView -@property (nonatomic,copy) MineGiveDiamondPasswordViewBlock completeBlock; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondCiphercodeRegard.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondCiphercodeRegard.m deleted file mode 100644 index 9a5342fe..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondCiphercodeRegard.m +++ /dev/null @@ -1,112 +0,0 @@ -// -// YUMIManeGiveDiamondCiphercodeRegard.m -// YuMi -// -// Created by YuMi on 2022/10/21. -// - -#import "YUMIManeGiveDiamondCiphercodeRegard.h" -#import "UIView+Corner.h" -#import "MKJPopup.h" -@interface YUMIManeGiveDiamondCiphercodeRegard() -@property (nonatomic,strong) UILabel *titleView; -@property (nonatomic,strong) UIButton *revocationBtuton; -@property (nonatomic,strong) UIButton *confirmBtn; - -@end - -@implementation YUMIManeGiveDiamondCiphercodeRegard - --(instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if(self){ - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor whiteColor]; - [self setMonopolizeAboutContraryApexMonopolize:kGetScaleWidth(12) rightTopCorner:kGetScaleWidth(12) bottomLeftCorner:kGetScaleWidth(12) bottomRightCorner:kGetScaleWidth(12) size:CGSizeMake(kGetScaleWidth(310), kGetScaleWidth(149))]; - [self addSubview:self.titleView]; - [self addSubview:self.revocationBtuton]; - [self addSubview:self.confirmBtn]; - -} -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(kGetScaleWidth(310)); - make.height.mas_equalTo(kGetScaleWidth(149)); - }]; - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(25)); - make.right.left.equalTo(self); - make.height.mas_equalTo(kGetScaleWidth(21)); - }]; - [self.revocationBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(31)); - make.width.mas_equalTo(kGetScaleWidth(110)); - make.height.mas_equalTo(kGetScaleWidth(37)); - make.top.mas_equalTo(kGetScaleWidth(81)); - }]; - [self.confirmBtn mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.width.height.equalTo(self.revocationBtuton); - make.right.mas_equalTo(-kGetScaleWidth(31)); - }]; -} - - --(void)revocationPerformance{ - [MKJPopup dismiss]; -} --(void)acknowledgementPerformance{ - [MKJPopup dismiss]; - if(self.completeBlock){ - self.completeBlock(); - } -} -#pragma mark - 懒加载 -- (UILabel *)titleView{ - if (!_titleView){ - _titleView = [UILabel new]; - _titleView.font = [UIFont systemFontOfSize:kGetScaleWidth(15) weight:UIFontWeightRegular]; - _titleView.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _titleView.text = YMLocalizedString(@"YUMI_MineChooseGiveDiamondVC1"); - _titleView.textAlignment = NSTextAlignmentCenter; - } - return _titleView; -} - --(UIButton *)revocationBtuton{ - if (!_revocationBtuton){ - _revocationBtuton = [UIButton new]; - [_revocationBtuton setTitle:YMLocalizedString(@"YUMI_Share_View_7") forState:UIControlStateNormal]; - _revocationBtuton.layer.cornerRadius = kGetScaleWidth(37) / 2; - _revocationBtuton.layer.masksToBounds = YES; - [_revocationBtuton setTitleColor:[DJDKMIMOMColor prohibitionBtutonEssayPrettify] forState:UIControlStateNormal]; - [_revocationBtuton addTarget:self action:@selector(revocationPerformance) forControlEvents:UIControlEventTouchUpInside]; - _revocationBtuton.titleLabel.font = [UIFont systemFontOfSize:kGetScaleWidth(14) weight:UIFontWeightRegular]; - _revocationBtuton.backgroundColor = [DJDKMIMOMColor prohibitionBtutonPrettify]; - } - return _revocationBtuton; -} - -- (UIButton *)confirmBtn{ - if (!_confirmBtn){ - _confirmBtn = [UIButton new]; - [_confirmBtn setTitle:YMLocalizedString(@"YUMI_MineChooseGiveDiamondVC2") forState:UIControlStateNormal]; - [_confirmBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _confirmBtn.titleLabel.font = [UIFont systemFontOfSize:kGetScaleWidth(14) weight:UIFontWeightRegular]; - [_confirmBtn setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityMiddlePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _confirmBtn.layer.cornerRadius = kGetScaleWidth(37) / 2; - _confirmBtn.layer.masksToBounds = YES; - [_confirmBtn addTarget:self action:@selector(acknowledgementPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _confirmBtn; -} - - - -@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondElement.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondElement.h deleted file mode 100644 index 377778d3..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondElement.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YUMIManeGiveDiamondElement.h -// YuMi -// -// Created by YuMi on 2022/10/17. -// - -#import -#import "YUMIManeGiveDiamondMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeGiveDiamondElement : UITableViewCell -@property (nonatomic,strong) YUMIManeGiveDiamondMatrix *giveBWSttawberryMatrix; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondElement.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondElement.m deleted file mode 100644 index 501c730c..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondElement.m +++ /dev/null @@ -1,105 +0,0 @@ -// -// YUMIManeGiveDiamondElement.m -// YuMi -// -// Created by YuMi on 2022/10/17. -// - -#import "YUMIManeGiveDiamondElement.h" -#import "NetIndicateRegard.h" -@interface YUMIManeGiveDiamondElement() - -@property (nonatomic,strong) NetIndicateRegard *intelligenceRegard; - -@property (nonatomic,strong) UILabel *titleView; - -@property (nonatomic,strong) UILabel * IdTitleView; - -@property (nonatomic,strong) UIImageView *arrowView; - -@end - -@implementation YUMIManeGiveDiamondElement -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} --(void)setGiveBWSttawberryMatrix:(YUMIManeGiveDiamondMatrix *)giveBWSttawberryMatrix{ - _giveBWSttawberryMatrix = giveBWSttawberryMatrix; - _intelligenceRegard.imageUrl = _giveBWSttawberryMatrix.targetAvatar; - _titleView.text = _giveBWSttawberryMatrix.targetNick; - _IdTitleView.text = [NSString stringWithFormat:@"ID:%@",_giveBWSttawberryMatrix.targetErbanNo]; -} -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = 0; - [self addSubview:self.intelligenceRegard]; - [self addSubview:self.titleView]; - [self addSubview:self.IdTitleView]; - [self addSubview:self.arrowView]; - -} -- (void)initChildLyRestrictions { - [self.intelligenceRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(kGetScaleWidth(50)); - make.centerY.equalTo(self); - make.left.mas_equalTo(kGetScaleWidth(15)); - }]; - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.equalTo(self.intelligenceRegard.mas_right).mas_offset( kGetScaleWidth(10)); - make.height.mas_equalTo(kGetScaleWidth(17)); - make.top.equalTo(self.intelligenceRegard.mas_top).mas_offset(kGetScaleWidth(8)); - make.right.mas_equalTo(-kGetScaleWidth(15)); - }]; - - [self.IdTitleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.equalTo(self.titleView); - make.height.mas_equalTo(kGetScaleWidth(14)); - make.top.equalTo(self.titleView.mas_bottom).mas_offset(kGetScaleWidth(4)); - }]; - [self.arrowView mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(kGetScaleWidth(20)); - make.centerY.equalTo(self); - make.right.mas_equalTo(-kGetScaleWidth(15)); - }]; -} -#pragma mark - 懒加载 -- (NetIndicateRegard *)intelligenceRegard{ - if (!_intelligenceRegard){ - NetIndicateDisposition *config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceRegard = [[NetIndicateRegard alloc]initWithConfig:config]; - _intelligenceRegard.layer.cornerRadius = kGetScaleWidth(50) / 2; - _intelligenceRegard.layer.masksToBounds = YES; - } - return _intelligenceRegard; -} --(UILabel *)titleView{ - if (!_titleView){ - _titleView = [[UILabel alloc]init]; - _titleView.font = [UIFont systemFontOfSize:kGetScaleWidth(14) weight:UIFontWeightMedium]; - _titleView.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleView; -} --(UILabel *)IdTitleView{ - if (!_IdTitleView){ - _IdTitleView = [UILabel new]; - _IdTitleView.font = [UIFont systemFontOfSize:kGetScaleWidth(12) weight:UIFontWeightMedium]; - _IdTitleView.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _IdTitleView; -} -- (UIImageView *)arrowView{ - if (!_arrowView){ - _arrowView = [UIImageView new]; - _arrowView.image = [UIImage imageNamed:@"mine_item_new_arrow"]; - } - return _arrowView; -} - -@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondHuntforRegard.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondHuntforRegard.h deleted file mode 100644 index cacc7b24..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondHuntforRegard.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YUMIManeGiveDiamondHuntforRegard.h -// YuMi -// -// Created by YuMi on 2022/10/17. -// - -#import -#import "FBCManeGiveDiamondCeremony.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeGiveDiamondHuntforRegard : UIView -@property (nonatomic,assign) BOOL isHuntforCorridor; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondHuntforRegard.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondHuntforRegard.m deleted file mode 100644 index 185c1a0c..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondHuntforRegard.m +++ /dev/null @@ -1,103 +0,0 @@ -// -// YUMIManeGiveDiamondHuntforRegard.m -// YuMi -// -// Created by YuMi on 2022/10/17. -// - -#import "YUMIManeGiveDiamondHuntforRegard.h" - -@interface YUMIManeGiveDiamondHuntforRegard() - -@property (nonatomic,strong)UIImageView *backgroundRegard; -@property (nonatomic,strong) UITextField *essayUniverse; -@property (nonatomic,strong) UIButton *huntforBtuton; - -@end -@implementation YUMIManeGiveDiamondHuntforRegard - --(instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if(self){ - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - [self addSubview:self.backgroundRegard]; - [self.backgroundRegard addSubview:self.essayUniverse]; - [self.backgroundRegard addSubview:self.huntforBtuton]; -} -- (void)initChildLyRestrictions { - [self.backgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(15)); - make.right.mas_equalTo(-kGetScaleWidth(15)); - make.top.equalTo(self); - make.height.mas_equalTo(kGetScaleWidth(32)); - }]; - [self.essayUniverse mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.bottom.equalTo(self.backgroundRegard); - make.left.mas_equalTo(kGetScaleWidth(10)); - make.right.mas_equalTo(-kGetScaleWidth(76)); - }]; - [self.huntforBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-kGetScaleWidth(3)); - make.centerY.equalTo(self.backgroundRegard); - make.width.mas_equalTo(kGetScaleWidth(66)); - make.height.mas_equalTo(kGetScaleWidth(26)); - }]; -} - --(void)huntforPerformance{ - [self.essayUniverse resignFirstResponder]; - if(self.delegate && [self.delegate respondsToSelector:@selector(huntforConcludeAboutEssay:)]){ - [self.delegate huntforConcludeAboutEssay:self.essayUniverse.text]; - } -} --(void)setIsHuntforCorridor:(BOOL)isHuntforCorridor{ - _isHuntforCorridor = isHuntforCorridor; - if(_isHuntforCorridor == YES){ - _essayUniverse.keyboardType = UIKeyboardTypeDefault; - _essayUniverse.attributedPlaceholder = [[NSMutableAttributedString alloc]initWithString:YMLocalizedString(@"YUMI_MineGiveDiamondSearchView3") attributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor instantEssayPrettify],NSFontAttributeName:[UIFont systemFontOfSize:14 weight:UIFontWeightRegular]}]; - } -} -#pragma mark -懒加载 -- (UIImageView *)backgroundRegard{ - if (!_backgroundRegard){ - _backgroundRegard = [UIImageView new]; - _backgroundRegard.userInteractionEnabled = YES; - _backgroundRegard.image = [UIImage imageNamed:@"mine_give_diamond_search"]; - } - return _backgroundRegard; -} --(UITextField *)essayUniverse{ - if (!_essayUniverse){ - _essayUniverse = [[UITextField alloc]initWithFrame:CGRectZero]; - _essayUniverse.keyboardType = UIKeyboardTypeNumberPad; - _essayUniverse.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _essayUniverse.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _essayUniverse.attributedPlaceholder = [[NSMutableAttributedString alloc]initWithString:YMLocalizedString(@"YUMI_MineGiveDiamondSearchView1") attributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor instantEssayPrettify],NSFontAttributeName:[UIFont systemFontOfSize:14 weight:UIFontWeightRegular]}]; - - } - return _essayUniverse; -} --(UIButton *)huntforBtuton{ - if (!_huntforBtuton){ - _huntforBtuton = [UIButton new]; - UIImage *image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityMiddlePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(kGetScaleWidth(66), kGetScaleWidth(26))]; - [_huntforBtuton setBackgroundImage:image forState:UIControlStateNormal]; - [_huntforBtuton setTitle:YMLocalizedString(@"YUMI_MineGiveDiamondSearchView0") forState:UIControlStateNormal]; - [_huntforBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _huntforBtuton.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; - _huntforBtuton.layer.cornerRadius = kGetScaleWidth(26) / 2; - _huntforBtuton.layer.masksToBounds = YES; - - [_huntforBtuton addTarget:self action:@selector(huntforPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _huntforBtuton; -} -@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondPwordRegard.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondPwordRegard.h deleted file mode 100644 index a5f28306..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondPwordRegard.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YUMIManeGiveDiamondPwordRegard.h -// YuMi -// -// Created by YuMi on 2022/10/19. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@protocol FBCManeGiveDiamondPwordRegardRepresendtation - -- (void)yumiManeGiveDiamondPwordRegardPwordAccomplish:(NSString *)pwd; - - - -@end -@interface YUMIManeGiveDiamondPwordRegard : UIView -@property (nonatomic, weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondPwordRegard.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondPwordRegard.m deleted file mode 100644 index bdd6927e..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondPwordRegard.m +++ /dev/null @@ -1,172 +0,0 @@ -// -// YUMIManeGiveDiamondPwordRegard.m -// YuMi -// -// Created by YuMi on 2022/10/19. -// - -#import "YUMIManeGiveDiamondPwordRegard.h" -#import "SurmountValidationCodeRegard.h" -#import -#import - -@interface YUMIManeGiveDiamondPwordRegard() - -@property (nonatomic, strong) UIButton *concludeBtuton; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) SurmountValidationCodeRegard *cryptogramRegard; -@property (nonatomic, strong) UIView *backgroundRegard; - -@end -@implementation YUMIManeGiveDiamondPwordRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - [self initOccurrences]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillShow:)name:UIKeyboardWillShowNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; - - - self.backgroundColor = [UIColor colorWithWhite:0 alpha:0.35]; - [self addSubview:self.backgroundRegard]; - [self.backgroundRegard addSubview:self.concludeBtuton]; - [self.backgroundRegard addSubview:self.titleLabel]; - [self.backgroundRegard addSubview:self.cryptogramRegard]; - -} -- (void)keyboardWillShow:(NSNotification *)notification - -{ - NSDictionary *userInfo = [notification userInfo]; - CGFloat curkeyBoardHeight = [[[notification userInfo]objectForKey:@"UIKeyboardBoundsUserInfoKey"]CGRectValue].size.height; - CGRect begin = [[[notification userInfo]objectForKey:@"UIKeyboardFrameBeginUserInfoKey"]CGRectValue]; - CGRect end = [[[notification userInfo]objectForKey:@"UIKeyboardFrameEndUserInfoKey"]CGRectValue]; - - - if( begin.size.height > 0 && (begin.origin.y - end.origin.y > 0)){ - CGFloat keyBoardHeight = curkeyBoardHeight; - CGFloat animationDuration = [userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]; - - [UIView animateWithDuration:animationDuration animations:^{ - self.backgroundRegard.frame = CGRectMake(0, KScreenHeight - keyBoardHeight - kGetScaleWidth(162), KScreenWidth, kGetScaleWidth(162)); - }]; - - } - -} -- (void)keyboardWillHide:(NSNotification *)notification{ - - - NSDictionary *userInfo = [notification userInfo]; - NSValue *keyboardValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey]; - CGRect keyboardRect = [keyboardValue CGRectValue]; - CGFloat height = CGRectGetHeight(keyboardRect); - CGFloat animationDuration = [userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]; - - self.backgroundColor = [UIColor clearColor]; - [UIView animateWithDuration:animationDuration animations:^{ - self.backgroundRegard.frame = CGRectMake(0, KScreenHeight, KScreenWidth, kGetScaleWidth(162)); - }completion:^(BOOL finished) { - [self removeFromSuperview]; - }]; - -} --(void)dealloc{ - [[NSNotificationCenter defaultCenter]removeObserver:self]; -} - -- (void)initChildLyRestrictions { - - self.backgroundRegard.frame = CGRectMake(0, KScreenHeight, KScreenWidth, kGetScaleWidth(162)); - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-kGetScaleWidth(15)); - make.top.mas_equalTo(kGetScaleWidth(15)); - make.height.width.mas_equalTo(kGetScaleWidth(22)); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(kGetScaleWidth(30)); - make.height.mas_equalTo(kGetScaleWidth(22)); - }]; - - - - [self.cryptogramRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(15)); - make.right.mas_equalTo(-kGetScaleWidth(15)); - make.height.mas_equalTo(kGetScaleWidth(50)); - make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(kGetScaleWidth(40)); - }]; - - -} - -- (void)initOccurrences { - @weakify(self); - self.cryptogramRegard.textFieldChangeBlock = ^(NSString * _Nonnull code) { - @strongify(self); - if (code.length == 6) { - [self removeFromSuperview]; - if (self.delegate && [self.delegate respondsToSelector:@selector(yumiManeGiveDiamondPwordRegardPwordAccomplish:)]) { - [self.delegate yumiManeGiveDiamondPwordRegardPwordAccomplish:code]; - } - } - }; -} - -- (void)onConcludeBtutonTicktack:(UIButton *)sender { - [self removeFromSuperview]; -} - - -- (UILabel *)titleLabel { - if (!_titleLabel) { - UILabel *label = [[UILabel alloc] init]; - label.text = YMLocalizedString(@"YUMI_Room_Red_Packet_Pwd_View_0"); - label.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; - label.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _titleLabel = label; - } - return _titleLabel; -} - --(UIView *)backgroundRegard{ - if (!_backgroundRegard){ - _backgroundRegard = [UIView new]; - _backgroundRegard.backgroundColor = [UIColor whiteColor]; - } - return _backgroundRegard; -} - - -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [[UIButton alloc] init]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_send_redPacket_cancel"] forState:UIControlStateNormal]; - [_concludeBtuton addTarget:self action:@selector(onConcludeBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - } - return _concludeBtuton; -} - -- (SurmountValidationCodeRegard *)cryptogramRegard { - if (!_cryptogramRegard) { - _cryptogramRegard= [[SurmountValidationCodeRegard alloc] init]; - _cryptogramRegard.type = 1; - _cryptogramRegard.number = 6; - _cryptogramRegard.shouldBeAssurance = YES; - } - return _cryptogramRegard; -} - - - -@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondSpecificsElement.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondSpecificsElement.h deleted file mode 100644 index e08554cd..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondSpecificsElement.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YUMIManeGiveDiamondSpecificsElement.h -// YuMi -// -// Created by YuMi on 2022/11/1. -// - -#import -#import "YUMIManeGiveDiamondSpecificsMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeGiveDiamondSpecificsElement : UITableViewCell -@property (nonatomic,strong) YUMIManeGiveDiamondSpecificsMatrix *model; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondSpecificsElement.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondSpecificsElement.m deleted file mode 100644 index 5113a4ef..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondSpecificsElement.m +++ /dev/null @@ -1,152 +0,0 @@ -// -// YUMIManeGiveDiamondSpecificsElement.m -// YuMi -// -// Created by YuMi on 2022/11/1. -// - -#import "YUMIManeGiveDiamondSpecificsElement.h" -#import "NetIndicateRegard.h" -#import "NSDate+DateUtils.h" -@interface YUMIManeGiveDiamondSpecificsElement() -@property (nonatomic,strong) NetIndicateRegard * figureRegard1; -@property (nonatomic,strong) UILabel *presentChampionRegard; -@property (nonatomic,strong) UILabel *intratemporalRegard; -@property (nonatomic,strong) UILabel *figureRegard; -@property (nonatomic,strong) UILabel *spendingRegard; - -@end -@implementation YUMIManeGiveDiamondSpecificsElement - - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor whiteColor]; - self.selectionStyle = 0; - [self.contentView addSubview:self.figureRegard]; - [self.contentView addSubview:self.presentChampionRegard]; - [self.contentView addSubview:self.intratemporalRegard]; - [self.contentView addSubview:self.figureRegard]; - [self.contentView addSubview:self.spendingRegard]; -} -- (void)initChildLyRestrictions { - [self.figureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(kGetScaleWidth(40)); - make.centerY.equalTo(self.contentView); - make.left.mas_equalTo(kGetScaleWidth(15)); - }]; - [self.intratemporalRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-kGetScaleWidth(15)); - make.centerY.equalTo(self.contentView); - }]; - [self.presentChampionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(65)); - make.centerY.equalTo(self.contentView); - make.right.equalTo(self.intratemporalRegard.mas_left).mas_offset(-kGetScaleWidth(10)); - }]; - [self.figureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.figureRegard.mas_top).mas_offset(kGetScaleWidth(3)); - make.left.mas_equalTo(kGetScaleWidth(65)); - make.height.mas_equalTo(kGetScaleWidth(17)); - make.right.equalTo(self.intratemporalRegard.mas_left).mas_offset(-kGetScaleWidth(10)); - }]; - [self.spendingRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.equalTo(self.figureRegard); - make.top.equalTo(self.figureRegard.mas_bottom).mas_offset(kGetScaleWidth(4)); - make.height.mas_equalTo(kGetScaleWidth(14)); - }]; - -} -#pragma mark - 赋值 -- (void)setModel:(YUMIManeGiveDiamondSpecificsMatrix *)model{ - _model = model; - [self setValue]; -} - --(void)setValue{ - self.presentChampionRegard.hidden = YES; - self.figureRegard.hidden = YES; - self.spendingRegard.hidden = YES; - self.figureRegard1.image = nil; - if(self.model.type.intValue == 0){ - self.presentChampionRegard.hidden = YES; - self.figureRegard.hidden = NO; - self.spendingRegard.hidden = NO; - self.figureRegard1.image = [UIImage imageNamed:@"mine_examples_record"]; - self.figureRegard.text = self.model.diamondNum; - self.intratemporalRegard.text = [NSDate intrtowardsemporalstampSwopIntrtowardsemporal:self.model.createTime/1000 andFormatter:@"yyyy-MM-dd HH:mm:ss"]; - NSString *realDiamondNum = [NSString stringWithFormat:@"%.2f",self.model.realDiamondNum]; - self.spendingRegard.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_MineGiveDiamondDetailsCell0"),realDiamondNum]; - return; - } - self.figureRegard1.image = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - self.figureRegard1.imageUrl = self.model.giftUrl; - self.presentChampionRegard.text = [NSString stringWithFormat:@"%@ x%@",self.model.giftName,self.model.giftNum]; - self.intratemporalRegard.text = [NSDate intrtowardsemporalstampSwopIntrtowardsemporal:self.model.createTime/1000 andFormatter:@"yyyy-MM-dd HH:mm:ss"]; - self.presentChampionRegard.hidden = NO; - self.figureRegard.hidden = YES; - self.spendingRegard.hidden = YES; -} - -#pragma mark - 懒加载 - -- (NetIndicateRegard *)figureRegard1{ - if (!_figureRegard1){ - _figureRegard1 = [[NetIndicateRegard alloc]init]; - _figureRegard1.backgroundColor = UIColorFromRGB(0xF3F5FA); - _figureRegard1.layer.cornerRadius = kGetScaleWidth(40)/2; - _figureRegard1.clipsToBounds = YES; - _figureRegard1.contentMode = UIViewContentModeScaleAspectFit; - } - return _figureRegard1; -} - -- (UILabel *)presentChampionRegard { - if (!_presentChampionRegard) { - _presentChampionRegard = [[UILabel alloc] init]; - _presentChampionRegard.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - _presentChampionRegard.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _presentChampionRegard.hidden = YES; - } - return _presentChampionRegard; -} - -- (UILabel *)intratemporalRegard { - if (!_intratemporalRegard) { - _intratemporalRegard = [[UILabel alloc] init]; - _intratemporalRegard.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _intratemporalRegard.textColor = [DJDKMIMOMColor prohibitionBtutonEssayPrettify]; - _intratemporalRegard.textAlignment = NSTextAlignmentRight; - } - return _intratemporalRegard; -} - -- (UILabel *)figureRegard { - if (!_figureRegard) { - _figureRegard = [[UILabel alloc] init]; - _figureRegard.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - _figureRegard.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _figureRegard.text = @"0"; - } - return _figureRegard; -} - -- (UILabel *)spendingRegard { - if (!_spendingRegard) { - _spendingRegard = [[UILabel alloc] init]; - _spendingRegard.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _spendingRegard.textColor = [DJDKMIMOMColor prohibitionBtutonEssayPrettify]; - _spendingRegard.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_MineGiveDiamondDetailsCell0"),@"0"]; - } - return _spendingRegard; -} - -@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondSpecificsRegard.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondSpecificsRegard.h deleted file mode 100644 index 446109db..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondSpecificsRegard.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YUMIManeGiveDiamondSpecificsRegard.h -// YuMi -// -// Created by YuMi on 2022/10/31. -// - -#import -#import -#import "YUMIManeGiveDiamondSpecificsMatrix.h" -NS_ASSUME_NONNULL_BEGIN - - - - -@interface YUMIManeGiveDiamondSpecificsRegard : UIView -@property (nonatomic,strong) UITableView *tableView; -@property(nonatomic,strong)NSMutableArray *listData; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondSpecificsRegard.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondSpecificsRegard.m deleted file mode 100644 index f75be3f6..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIManeGiveDiamondSpecificsRegard.m +++ /dev/null @@ -1,85 +0,0 @@ -// -// YUMIManeGiveDiamondSpecificsRegard.m -// YuMi -// -// Created by YuMi on 2022/10/31. -// - -#import "YUMIManeGiveDiamondSpecificsRegard.h" - -#import "YUMIManeGiveDiamondSpecificsElement.h" -#import "YUMIManeAssistantDispossessTabulationRegardElement.h" - - -@interface YUMIManeGiveDiamondSpecificsRegard() - -@end - - -@implementation YUMIManeGiveDiamondSpecificsRegard - --(instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if(self){ - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.tableView]; - -} -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self); - }]; -} -#pragma mark - JXCategoryListContentViewDelegate -- (UIView *)listView { - return self; -} --(void)setListData:(NSMutableArray *)listData{ - _listData = listData; -} -#pragma mark - UITableViewDelegate - --(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ - return self.listData.count > 0 ? self.listData.count : 1; -} - --(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ - return self.listData.count > 0 ? kGetScaleWidth(55) : self.tableView.frame.size.height;; -} --(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ - if(self.listData.count > 0){ - YUMIManeGiveDiamondSpecificsElement *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeGiveDiamondSpecificsElement class]) forIndexPath:indexPath]; - cell.model = self.listData[indexPath.row]; - return cell; - } - YUMIManeAssistantDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeAssistantDispossessTabulationRegardElement class])forIndexPath:indexPath] ; - - cell.emptyTitle = YMLocalizedString(@"YUMI_MineGiveDiamondVC3"); - return cell; -} -#pragma mark - 懒加载 -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.showsVerticalScrollIndicator = NO; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - [_tableView registerClass:[YUMIManeGiveDiamondSpecificsElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeGiveDiamondSpecificsElement class])]; - [_tableView registerClass:[YUMIManeAssistantDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeAssistantDispossessTabulationRegardElement class])]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - - } - return _tableView; -} -@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIPageControl.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIPageControl.h deleted file mode 100644 index 2b4f6e94..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIPageControl.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YUMIPageControl.h -// YuMi -// -// Created by YuMi on 2023/6/30. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIPageControl : UIView - -@property (nonatomic,assign) NSInteger curPeriod; -@property (nonatomic,assign) NSInteger count; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIPageControl.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIPageControl.m deleted file mode 100644 index 95ea0a40..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIPageControl.m +++ /dev/null @@ -1,47 +0,0 @@ -// -// YUMIPageControl.m -// YuMi -// -// Created by YuMi on 2023/6/30. -// - -#import "YUMIPageControl.h" -#import "UIImage+Utils.h" - -@implementation YUMIPageControl - -#pragma mark - Private Method -- (void)initSubViews { - for (int i = 0; i < self.count; i++) { - UIButton *sender = [[UIButton alloc]initWithFrame:CGRectMake(i * kGetScaleWidth(22), 0, kGetScaleWidth(16), kGetScaleWidth(3))]; - UIImage *chooseImage = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityMiddlePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(kGetScaleWidth(16), kGetScaleWidth(3))]; - UIImage *noChooseImage = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[UIColor whiteColor],[UIColor whiteColor],[UIColor whiteColor]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(kGetScaleWidth(16), kGetScaleWidth(3))]; - [sender setBackgroundImage:chooseImage forState:UIControlStateSelected]; - [sender setBackgroundImage:noChooseImage forState:UIControlStateNormal]; - sender.layer.cornerRadius = kGetScaleWidth(3)/2; - sender.layer.masksToBounds = YES; - sender.tag = i + 1; - [self addSubview:sender]; - } - -} -- (void)initChildLyRestrictions { - CGFloat width = self.count * kGetScaleWidth(16) + (self.count - 1) * kGetScaleWidth(6); - [self mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(width); - }]; -} --(void)setCurPeriod:(NSInteger)curPeriod{ - _curPeriod = curPeriod; - for (UIButton *button in self.subviews) { - button.selected = _curPeriod == button.tag; - } -} --(void)setCount:(NSInteger)count{ - _count = count; - [self initChildLyRestrictions]; - [self initSubViews]; - -} - -@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIRevenueReflectionGoldSpecificsElement.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIRevenueReflectionGoldSpecificsElement.h deleted file mode 100644 index 9ca60a7f..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIRevenueReflectionGoldSpecificsElement.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YUMIRevenueReflectionGoldSpecificsElement.h -// YuMi -// -// Created by YuMi on 2023/6/30. -// - -#import -#import "YUMIRevenueReflectionGoldSpecificsMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIRevenueReflectionGoldSpecificsElement : UITableViewCell -@property (nonatomic,strong) YUMIRevenueReflectionGoldSpecificProvisionMatrix *specificMatrix; -@property (nonatomic,assign) NSInteger path; -@property (nonatomic,strong,readonly) UILabel *chamberRegard; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIRevenueReflectionGoldSpecificsElement.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIRevenueReflectionGoldSpecificsElement.m deleted file mode 100644 index 1d1f503a..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/Cell/YUMIRevenueReflectionGoldSpecificsElement.m +++ /dev/null @@ -1,235 +0,0 @@ -// -// YUMIRevenueReflectionGoldSpecificsElement.m -// YuMi -// -// Created by YuMi on 2023/6/30. -// - -#import "YUMIRevenueReflectionGoldSpecificsElement.h" -#import "NetIndicateRegard.h" -#import "NSString+Utils.h" -@interface YUMIRevenueReflectionGoldSpecificsElement() -@property (nonatomic,strong) UILabel *rateRegard; -@property (nonatomic,strong) NetIndicateRegard *consumerIndicateRegard; -@property (nonatomic,strong) UILabel *consumerConstituteRegard; -@property (nonatomic,strong) UILabel *bWSttawberrysFigureRegard; -@property (nonatomic,strong) UILabel *exdiversificationFigureRegard; -@property (nonatomic,strong) UILabel *convertedRegard; -@property (nonatomic,strong) UILabel *settlementFigureRegard; - -@end -@implementation YUMIRevenueReflectionGoldSpecificsElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - if([reuseIdentifier isEqualToString:NSStringFromClass([YUMIRevenueReflectionGoldSpecificsElement class])]){ - [self initSubViews]; - [self initChildLyRestrictions]; - }else{ - [self initChildLysAboutCollective]; - [self initChildLyRestrictionsAboutCollective]; - } - - } - return self; -} - -#pragma mark - Private Method - -- (void)initSubViews { - self.backgroundColor = [UIColor whiteColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.consumerIndicateRegard]; - [self.contentView addSubview:self.consumerConstituteRegard]; - [self.contentView addSubview:self.bWSttawberrysFigureRegard]; - [self.contentView addSubview:self.exdiversificationFigureRegard]; - [self.contentView addSubview:self.convertedRegard]; - [self.contentView addSubview:self.settlementFigureRegard]; - self.consumerIndicateRegard.layer.cornerRadius = kGetScaleWidth(34)/2; - - -} -- (void)initChildLyRestrictions { - [self.consumerIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(12)); - make.width.height.mas_equalTo(kGetScaleWidth(34)); - make.left.mas_equalTo(kGetScaleWidth(15)); - }]; - [self.consumerConstituteRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.consumerIndicateRegard.mas_bottom).mas_offset(kGetScaleWidth(6)); - make.right.equalTo(self.bWSttawberrysFigureRegard.mas_left).mas_offset(-kGetScaleWidth(4)); - make.left.mas_equalTo(kGetScaleWidth(3)); - make.height.mas_equalTo(kGetScaleWidth(14)); - }]; - CGFloat width = kGetScaleWidth(247/3); - [self.settlementFigureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(width); - make.centerY.equalTo(self.consumerIndicateRegard); - make.height.mas_equalTo(kGetScaleWidth(17)); - make.right.mas_equalTo(0); - - }]; - - [self.exdiversificationFigureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.width.centerY.equalTo(self.settlementFigureRegard); - make.right.equalTo(self.settlementFigureRegard.mas_left); - }]; - [self.convertedRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(kGetScaleWidth(14)); - make.width.left.equalTo(self.exdiversificationFigureRegard); - make.top.equalTo(self.exdiversificationFigureRegard.mas_bottom).mas_offset(3); - }]; - [self.bWSttawberrysFigureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.width.centerY.equalTo(self.exdiversificationFigureRegard); - make.right.equalTo(self.exdiversificationFigureRegard.mas_left); - - - }]; -} -- (void)initChildLysAboutCollective{ - self.backgroundColor = [UIColor whiteColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.rateRegard]; - [self.contentView addSubview:self.consumerIndicateRegard]; - [self.contentView addSubview:self.consumerConstituteRegard]; - [self.contentView addSubview:self.bWSttawberrysFigureRegard]; - [self.contentView addSubview:self.exdiversificationFigureRegard]; - [self.contentView addSubview:self.convertedRegard]; - [self.contentView addSubview:self.settlementFigureRegard]; - self.consumerIndicateRegard.layer.cornerRadius = kGetScaleWidth(35)/2; -} -- (void)initChildLyRestrictionsAboutCollective{ - [self.rateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.top.bottom.equalTo(self.contentView); - make.width.mas_equalTo(kGetScaleWidth(50)); - }]; - [self.consumerIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(12)); - make.width.height.mas_equalTo(kGetScaleWidth(35)); - make.left.mas_equalTo(kGetScaleWidth(57)); - }]; - [self.consumerConstituteRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.consumerIndicateRegard.mas_bottom).mas_offset(kGetScaleWidth(6)); - make.centerX.equalTo(self.consumerIndicateRegard); - make.width.mas_equalTo(kGetScaleWidth(48)); - make.height.mas_equalTo(kGetScaleWidth(14)); - }]; - CGFloat width = kGetScaleWidth(277/3); - [self.bWSttawberrysFigureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.equalTo(self.consumerConstituteRegard.mas_right).mas_offset(1); - make.width.mas_equalTo(width); - make.centerY.equalTo(self.consumerIndicateRegard); - make.height.mas_equalTo(kGetScaleWidth(17)); - }]; - [self.exdiversificationFigureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.width.centerY.equalTo(self.bWSttawberrysFigureRegard); - make.left.equalTo(self.bWSttawberrysFigureRegard.mas_right); - }]; - [self.convertedRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(kGetScaleWidth(14)); - make.width.left.equalTo(self.exdiversificationFigureRegard); - make.top.equalTo(self.exdiversificationFigureRegard.mas_bottom).mas_offset(3); - }]; - [self.settlementFigureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - - make.height.width.centerY.equalTo(self.exdiversificationFigureRegard); - make.left.equalTo(self.exdiversificationFigureRegard.mas_right); - - }]; - -} --(void)setPath:(NSInteger)path{ - _path = path; - _rateRegard.text = [NSString stringWithFormat:@"%ld",_path + 1]; -} - --(void)setSpecificMatrix:(YUMIRevenueReflectionGoldSpecificProvisionMatrix *)specificMatrix{ - _specificMatrix = specificMatrix; - _consumerConstituteRegard.text = _specificMatrix.nick; - _consumerIndicateRegard.imageUrl = _specificMatrix.avatar; - _exdiversificationFigureRegard.text = [NSString acquireDealFigurewithsttri:_specificMatrix.giftGolds]; - _bWSttawberrysFigureRegard.text = [NSString acquireDealFigurewithsttri:_specificMatrix.giftDiamonds]; - _convertedRegard.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Income_Record_Gold_Details_Cell_0"),[NSString acquireDealFigurewithsttri:_specificMatrix.exchangeGolds]]; - _settlementFigureRegard.text = [NSString acquireDealFigurewithsttri:_specificMatrix.remainGolds]; -} -#pragma mark -懒加载 -- (NetIndicateRegard *)consumerIndicateRegard{ - if (!_consumerIndicateRegard){ - NetIndicateDisposition *config = [[ NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _consumerIndicateRegard = [[NetIndicateRegard alloc]initWithConfig:config]; - - _consumerIndicateRegard.layer.masksToBounds = YES; - } - return _consumerIndicateRegard; -} - -- (UILabel *)consumerConstituteRegard { - if (!_consumerConstituteRegard) { - _consumerConstituteRegard = [[UILabel alloc] init]; - _consumerConstituteRegard.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - _consumerConstituteRegard.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _consumerConstituteRegard.textAlignment = NSTextAlignmentCenter; - _consumerConstituteRegard.text = @"0"; - } - return _consumerConstituteRegard; -} - - -- (UILabel *)bWSttawberrysFigureRegard { - if (!_exdiversificationFigureRegard) { - _bWSttawberrysFigureRegard = [[UILabel alloc] init]; - _bWSttawberrysFigureRegard.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _bWSttawberrysFigureRegard.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _bWSttawberrysFigureRegard.textAlignment = NSTextAlignmentCenter; - _bWSttawberrysFigureRegard.text = @"0"; - } - return _bWSttawberrysFigureRegard; -} - - -- (UILabel *)exdiversificationFigureRegard { - if (!_exdiversificationFigureRegard) { - _exdiversificationFigureRegard = [[UILabel alloc] init]; - _exdiversificationFigureRegard.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _exdiversificationFigureRegard.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _exdiversificationFigureRegard.textAlignment = NSTextAlignmentCenter; - _exdiversificationFigureRegard.text = @"0"; - } - return _exdiversificationFigureRegard; -} - -- (UILabel *)settlementFigureRegard { - if (!_settlementFigureRegard) { - _settlementFigureRegard = [[UILabel alloc] init]; - _settlementFigureRegard.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _settlementFigureRegard.textColor = UIColorFromRGB(0xDD9E0B); - _settlementFigureRegard.textAlignment = NSTextAlignmentCenter; - _settlementFigureRegard.text = @"0"; - } - return _settlementFigureRegard; -} - -- (UILabel *)convertedRegard { - if (!_convertedRegard) { - _convertedRegard = [[UILabel alloc] init]; - _convertedRegard.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - _convertedRegard.textColor = [DJDKMIMOMColor prohibitionBtutonEssayPrettify]; - _convertedRegard.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Income_Record_Gold_Details_Cell_0"),@"0"]; - _convertedRegard.textAlignment = NSTextAlignmentCenter; - } - return _convertedRegard; -} - -- (UILabel *)rateRegard { - if (!_convertedRegard) { - _rateRegard = [[UILabel alloc] init]; - _rateRegard.font = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; - _rateRegard.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _rateRegard.textAlignment = NSTextAlignmentCenter; - } - return _rateRegard; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/XPIncomeRecordGoldDetailsHeadView.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/XPIncomeRecordGoldDetailsHeadView.h new file mode 100644 index 00000000..a96c531b --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/XPIncomeRecordGoldDetailsHeadView.h @@ -0,0 +1,52 @@ +// +// XPIncomeRecordGoldDetailsHeadView.h +// YuMi +// +// Created by YuMi on 2022/11/24. +// + +#import +#import "XPIncomeRecordGoldDetailsModel.h" + +typedef enum : NSUInteger { + IncomeRecordGold_Diamond,//钻石 + IncomeRecordGold_Gold,//金币 +} IncomeRecordGoldSortingType; + +@protocol XPIncomeRecordGoldDetailsHeadViewDelegate + +-(void)chooseGoldCoinOrder:(IncomeRecordGoldSortingType)type isAscending:(BOOL)isAscending; + +@end +NS_ASSUME_NONNULL_BEGIN + +@interface XPIncomeRecordGoldDetailsHeadView : UIView +@property (nonatomic,strong) XPIncomeRecordGoldDetailsModel *detailModel; +@property (nonatomic,weak) id delegate; + +-(void)resetArrow; + + + +@end + + + + +/****************************************************华丽分割线*****************************************************************************************/ +@interface XPIncomeRecordGoldDetailsHeadItemView : UIView +@property (nonatomic,copy) NSString *title; +@property (nonatomic,strong,readonly) UIButton *clickBtn; +@property (nonatomic,strong,readonly) UIButton *upBtn; +@property (nonatomic,strong,readonly) UIButton *downBtn; +@end + + + +/****************************************************华丽分割线*****************************************************************************************/ +@interface XPIncomeRecordGoldDetailsNumView : UIView +@property (nonatomic,copy) NSString *title; +@property (nonatomic,copy) NSString *number; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/XPIncomeRecordGoldDetailsHeadView.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/XPIncomeRecordGoldDetailsHeadView.m new file mode 100644 index 00000000..1804e719 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/XPIncomeRecordGoldDetailsHeadView.m @@ -0,0 +1,522 @@ +// +// XPIncomeRecordGoldDetailsHeadView.m +// YuMi +// +// Created by YuMi on 2022/11/24. +// + +#import "XPIncomeRecordGoldDetailsHeadView.h" +#import "NSString+Utils.h" +@interface XPIncomeRecordGoldDetailsHeadView() +//背景 +@property (nonatomic,strong) UIImageView *bgImageView; +///总金币标题 +@property (nonatomic,strong) UILabel *titleView; +///基礎總結算金币 +@property (nonatomic,strong) XPIncomeRecordGoldDetailsNumView *baseNumView; +///公會收益 +@property (nonatomic,strong) XPIncomeRecordGoldDetailsNumView *guildNumView; +///成員總金币 +@property (nonatomic,strong) XPIncomeRecordGoldDetailsNumView *numberGoldView; +///成員總兌換 +@property (nonatomic,strong) XPIncomeRecordGoldDetailsNumView * numberExchangeView; +/// =号 +@property (nonatomic,strong) UILabel *equalSignView; +/// +加 +@property (nonatomic,strong) UILabel *addView; +/// -加 +@property (nonatomic,strong) UILabel *minusSignView; +///底部item +@property (nonatomic,strong) UIView *bgItemView; +///房间 +@property (nonatomic,strong) UILabel *roomView; +///成员 +@property (nonatomic,strong) UILabel *memberView; +///钻石流水 +@property (nonatomic,strong) XPIncomeRecordGoldDetailsHeadItemView *diamondView; +///金币收益 +@property (nonatomic,strong) UILabel *exchangeGoldView; +///可结算金币 +@property (nonatomic,strong) XPIncomeRecordGoldDetailsHeadItemView *settlementView; + +@end +@implementation XPIncomeRecordGoldDetailsHeadView + +-(instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if(self){ + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.bgImageView]; + [self.bgImageView addSubview:self.titleView]; + [self.bgImageView addSubview:self.baseNumView]; + [self.bgImageView addSubview:self.guildNumView]; + [self.bgImageView addSubview:self.numberGoldView]; + [self.bgImageView addSubview:self.numberExchangeView]; + [self.bgImageView addSubview:self.equalSignView]; + [self.bgImageView addSubview:self.addView]; + [self.bgImageView addSubview:self.minusSignView]; + + + [self addSubview:self.bgItemView]; + [self.bgItemView addSubview:self.roomView]; + [self.bgItemView addSubview:self.memberView]; + [self.bgItemView addSubview:self.diamondView]; + [self.bgItemView addSubview:self.exchangeGoldView]; + [self.bgItemView addSubview:self.settlementView]; + +} +- (void)initSubViewConstraints { + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.equalTo(self).inset(kGetScaleWidth(15)); + make.height.mas_equalTo(kGetScaleWidth(90)); + make.top.mas_equalTo(kGetScaleWidth(0)); + }]; + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(14)); + make.top.mas_equalTo(kGetScaleWidth(12)); + make.height.mas_equalTo(kGetScaleWidth(21)); + }]; + + [self.baseNumView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(14)); + make.height.mas_equalTo(kGetScaleWidth(32)); + make.top.mas_equalTo(kGetScaleWidth(41)); + make.width.mas_greaterThanOrEqualTo(kGetScaleWidth(70)); + }]; + + [self.equalSignView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.baseNumView.mas_right).mas_offset(kGetScaleWidth(4)); + make.top.equalTo(self.baseNumView); + make.height.width.mas_equalTo(kGetScaleWidth(14)); + }]; + + [self.guildNumView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.equalSignView.mas_right).mas_offset(kGetScaleWidth(4)); + make.height.top.equalTo(self.baseNumView); + make.width.mas_greaterThanOrEqualTo(kGetScaleWidth(40)); + + }]; + [self.addView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.top.equalTo(self.equalSignView); + make.left.equalTo(self.guildNumView.mas_right).mas_offset(kGetScaleWidth(10)); + }]; + [self.numberGoldView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.top.equalTo(self.baseNumView); + make.width.mas_greaterThanOrEqualTo(kGetScaleWidth(50)); + make.left.equalTo(self.addView.mas_right).mas_offset(kGetScaleWidth(10)); + + }]; + + [self.minusSignView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.top.equalTo(self.equalSignView); + make.left.equalTo(self.numberGoldView.mas_right).mas_offset(kGetScaleWidth(10)); + }]; + + [self.numberExchangeView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.top.equalTo(self.baseNumView); + make.width.mas_greaterThanOrEqualTo(kGetScaleWidth(50)); + make.left.equalTo(self.minusSignView.mas_right).mas_offset(kGetScaleWidth(10)); + make.right.mas_equalTo(-kGetScaleWidth(14)); + }]; + + + [self.bgItemView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.equalTo(self); + make.height.mas_equalTo(kGetScaleWidth(47)); + make.left.right.equalTo(self).inset(kGetScaleWidth(0)); + }]; + [self.roomView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(kGetScaleWidth(64)); + make.left.mas_equalTo(kGetScaleWidth(0)); + make.height.mas_equalTo(kGetScaleWidth(17)); + make.centerY.equalTo(self.bgItemView); + }]; + [self.memberView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.roomView.mas_right); + make.centerY.width.height.equalTo(self.roomView); + }]; + CGFloat width = kGetScaleWidth(247/3); + [self.settlementView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(width); + make.right.equalTo(self.bgItemView); + make.centerY.height.equalTo(self.roomView); + }]; + [self.exchangeGoldView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.width.height.equalTo(self.settlementView); + make.right.equalTo(self.settlementView.mas_left); + }]; + [self.diamondView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.width.height.equalTo(self.exchangeGoldView); + make.right.equalTo(self.exchangeGoldView.mas_left); + }]; + + + +} +-(void)setDetailModel:(XPIncomeRecordGoldDetailsModel *)detailModel{ + _detailModel = detailModel; + _baseNumView.number = [NSString getDealNumwithstring:_detailModel.totalRemainGolds]; + _guildNumView.number = [NSString getDealNumwithstring:_detailModel.totalEarnGolds]; + _numberGoldView.number = [NSString getDealNumwithstring:_detailModel.totalGiftGolds]; + _numberExchangeView.number = [NSString getDealNumwithstring:_detailModel.totalExchangeGolds]; +} +-(void)resetArrow{ + self.diamondView.upBtn.selected = YES; + self.diamondView.downBtn.selected = NO; + self.settlementView.upBtn.selected = YES; + self.settlementView.downBtn.selected = NO; +} +-(void)clickDiamondAction{ + if(self.diamondView.upBtn.selected == YES){ + self.diamondView.upBtn.selected = NO; + self.diamondView.downBtn.selected = YES; + if(self.delegate && [self.delegate respondsToSelector:@selector(chooseGoldCoinOrder:isAscending:)]){ + [self.delegate chooseGoldCoinOrder:IncomeRecordGold_Diamond isAscending:NO]; + } + return; + } + if(self.delegate && [self.delegate respondsToSelector:@selector(chooseGoldCoinOrder:isAscending:)]){ + [self.delegate chooseGoldCoinOrder:IncomeRecordGold_Diamond isAscending:YES]; + } + + self.diamondView.upBtn.selected = YES; + self.diamondView.downBtn.selected = NO; +} + +-(void)clickGoldAction{ + if(self.settlementView.upBtn.selected == YES){ + self.settlementView.upBtn.selected = NO; + self.settlementView.downBtn.selected = YES; + if(self.delegate && [self.delegate respondsToSelector:@selector(chooseGoldCoinOrder:isAscending:)]){ + [self.delegate chooseGoldCoinOrder:IncomeRecordGold_Gold isAscending:NO]; + } + return; + } + if(self.delegate && [self.delegate respondsToSelector:@selector(chooseGoldCoinOrder:isAscending:)]){ + [self.delegate chooseGoldCoinOrder:IncomeRecordGold_Gold isAscending:YES]; + } + + self.settlementView.upBtn.selected = YES; + self.settlementView.downBtn.selected = NO; +} +#pragma mark -懒加载 +- (UIImageView *)bgImageView{ + if (!_bgImageView){ + _bgImageView = [UIImageView new]; + _bgImageView.image = [UIImage imageNamed:@"gold_details_head_bg"]; + _bgImageView.userInteractionEnabled = YES; + } + return _bgImageView; +} + +- (UILabel *)titleView { + if (!_titleView) { + _titleView = [[UILabel alloc] init]; + _titleView.font = [UIFont systemFontOfSize:15 weight:UIFontWeightSemibold]; + _titleView.textColor = UIColorFromRGB(0x572714); + _titleView.text = YMLocalizedString(@"XPIncomeRecordGoldDetailsHeadView0"); + _titleView.textAlignment = NSTextAlignmentCenter; + } + return _titleView; +} + + +-(UIView *)bgItemView{ + if (!_bgItemView){ + _bgItemView = [UIView new]; + _bgItemView.backgroundColor = UIColorFromRGB(0xF0F5F6); + } + return _bgItemView; +} + +- (UILabel *)roomView { + if (!_roomView) { + _roomView = [[UILabel alloc] init]; + _roomView.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _roomView.textColor = [DJDKMIMOMColor inputTextColor]; + _roomView.text = YMLocalizedString(@"XPIncomeRecordGoldDetailsHeadView2"); + _roomView.textAlignment = NSTextAlignmentCenter; + } + return _roomView; +} + +- (UILabel *)memberView { + if (!_memberView) { + _memberView = [[UILabel alloc] init]; + _memberView.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _memberView.textColor = [DJDKMIMOMColor inputTextColor]; + _memberView.textAlignment = NSTextAlignmentCenter; + _memberView.text = YMLocalizedString(@"XPIncomeRecordGoldDetailsHeadView1"); + } + return _memberView; +} + +-(XPIncomeRecordGoldDetailsHeadItemView *)diamondView{ + if (!_diamondView){ + _diamondView = [[XPIncomeRecordGoldDetailsHeadItemView alloc]initWithFrame:CGRectZero]; + _diamondView.title = YMLocalizedString(@"XPIncomeRecordGoldDetailsHeadView5"); + [_diamondView.clickBtn addTarget:self action:@selector(clickDiamondAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _diamondView; +} + +- (UILabel *)exchangeGoldView { + if (!_exchangeGoldView) { + _exchangeGoldView = [[UILabel alloc] init]; + _exchangeGoldView.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _exchangeGoldView.textColor = [DJDKMIMOMColor inputTextColor]; + _exchangeGoldView.textAlignment = NSTextAlignmentCenter; + _exchangeGoldView.text = YMLocalizedString(@"XPIncomeRecordGoldDetailsHeadView3"); + } + return _exchangeGoldView; +} + +-(XPIncomeRecordGoldDetailsHeadItemView *)settlementView{ + if (!_settlementView){ + _settlementView = [[XPIncomeRecordGoldDetailsHeadItemView alloc]initWithFrame:CGRectZero]; + _settlementView.title = YMLocalizedString(@"XPIncomeRecordGoldDetailsHeadView4"); + [_settlementView.clickBtn addTarget:self action:@selector(clickGoldAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _settlementView; +} + +- (XPIncomeRecordGoldDetailsNumView *)baseNumView{ + if (!_baseNumView){ + _baseNumView = [[XPIncomeRecordGoldDetailsNumView alloc]initWithFrame:CGRectZero]; + _baseNumView.title = YMLocalizedString(@"XPIncomeRecordGoldDetailsHeadView6"); + _baseNumView.number = @"0"; + } + return _baseNumView; +} + +- (XPIncomeRecordGoldDetailsNumView *)guildNumView{ + if (!_guildNumView){ + _guildNumView = [[XPIncomeRecordGoldDetailsNumView alloc]initWithFrame:CGRectZero]; + _guildNumView.title = YMLocalizedString(@"XPIncomeRecordGoldDetailsHeadView7"); + _guildNumView.number = @"0"; + } + return _guildNumView; +} +-(XPIncomeRecordGoldDetailsNumView *)numberGoldView{ + if (!_numberGoldView){ + _numberGoldView = [[XPIncomeRecordGoldDetailsNumView alloc]initWithFrame:CGRectZero]; + _numberGoldView.title = YMLocalizedString(@"XPIncomeRecordGoldDetailsHeadView8"); + _numberGoldView.number = @"0"; + } + return _numberGoldView; +} +- (XPIncomeRecordGoldDetailsNumView *)numberExchangeView{ + if (!_numberExchangeView){ + _numberExchangeView = [[XPIncomeRecordGoldDetailsNumView alloc]initWithFrame:CGRectZero]; + _numberExchangeView.title = YMLocalizedString(@"XPIncomeRecordGoldDetailsHeadView9"); + _numberExchangeView.number = @"0"; + } + return _numberExchangeView; +} + + +- (UILabel *)equalSignView { + if (!_equalSignView) { + _equalSignView = [[UILabel alloc] init]; + _equalSignView.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + _equalSignView.textColor = UIColorFromRGB(0x582815); + _equalSignView.text = @"="; + _equalSignView.textAlignment = NSTextAlignmentCenter; + } + return _equalSignView; +} + + +- (UILabel *)addView { + if (!_addView) { + _addView = [[UILabel alloc] init]; + _addView.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + _addView.textColor = UIColorFromRGB(0x582815); + _addView.text = @"+"; + _addView.textAlignment = NSTextAlignmentCenter; + } + return _addView; +} + + +- (UILabel *)minusSignView { + if (!_minusSignView) { + _minusSignView = [[UILabel alloc] init]; + _minusSignView.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + _minusSignView.textColor = UIColorFromRGB(0x582815); + _minusSignView.text = @"-"; + _minusSignView.textAlignment = NSTextAlignmentCenter; + } + return _minusSignView; +} + +@end + +/****************************************************华丽分割线*****************************************************************************************/ + + +@interface XPIncomeRecordGoldDetailsHeadItemView() +@property (nonatomic,strong) UILabel *titleView; +@property (nonatomic,strong) UIButton *upBtn; +@property (nonatomic,strong) UIButton *downBtn; +@property (nonatomic,strong) UIButton *clickBtn; +@end + +@implementation XPIncomeRecordGoldDetailsHeadItemView +-(instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if(self){ + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.titleView]; + [self addSubview:self.upBtn]; + [self addSubview:self.downBtn]; + [self addSubview:self.clickBtn]; +} +- (void)initSubViewConstraints { + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.equalTo(self.mas_centerX).mas_offset(-kGetScaleWidth(5.5)); + make.centerY.equalTo(self); + make.height.mas_equalTo(kGetScaleWidth(17)); + }]; + [self.downBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.titleView.mas_right).mas_offset(kGetScaleWidth(3)); + make.top.equalTo(self.titleView.mas_top).mas_offset(kGetScaleWidth(4)); + make.width.mas_equalTo(kGetScaleWidth(8)); + make.height.mas_equalTo(kGetScaleWidth(4)); + }]; + [self.upBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.width.height.equalTo(self.downBtn); + make.top.equalTo(self.downBtn.mas_bottom).mas_offset(kGetScaleWidth(2)); + }]; + [self.clickBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self); + }]; +} + + +-(void)setTitle:(NSString *)title{ + _title = title; + _titleView.text = _title; +} +#pragma mark -懒加载 + +- (UILabel *)titleView { + if (!_titleView) { + _titleView = [[UILabel alloc] init]; + _titleView.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _titleView.textColor = [DJDKMIMOMColor inputTextColor]; + _titleView.text = YMLocalizedString(@"XPIncomeRecordGoldDetailsHeadView5"); + } + return _titleView; +} + +- (UIButton *)upBtn{ + if (!_upBtn){ + _upBtn = [UIButton new]; + [_upBtn setBackgroundImage:[UIImage imageNamed:@"exchange_down_grey"] forState:UIControlStateNormal]; + [_upBtn setBackgroundImage:[UIImage imageNamed:@"exchange_down"] forState:UIControlStateSelected]; + + _upBtn.selected = YES; + } + return _upBtn; +} +- (UIButton *)downBtn{ + if (!_downBtn){ + _downBtn = [UIButton new]; + [_downBtn setBackgroundImage:[UIImage imageNamed:@"exchange_up_grey"] forState:UIControlStateNormal]; + [_downBtn setBackgroundImage:[UIImage imageNamed:@"exchange_up"] forState:UIControlStateSelected]; + + + _downBtn.selected = NO; + } + return _downBtn; +} +- (UIButton *)clickBtn{ + if (!_clickBtn){ + _clickBtn = [UIButton new]; + } + return _clickBtn; +} +@end + + + + +/****************************************************华丽分割线***********************************************************************************************************************************************************************************/ + +@interface XPIncomeRecordGoldDetailsNumView() + +@property (nonatomic,strong) UILabel *titleView; +@property (nonatomic,strong) UILabel *numberView; + +@end + +@implementation XPIncomeRecordGoldDetailsNumView + +-(instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if(self){ + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +- (void)setTitle:(NSString *)title{ + _title = title; + _titleView.text = _title; +} +- (void)setNumber:(NSString *)number{ + _number = number; + _numberView.text = _number; +} +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.titleView]; + [self addSubview:self.numberView]; +} +- (void)initSubViewConstraints { + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.left.right.equalTo(self); + make.height.mas_equalTo(kGetScaleWidth(14)); + + }]; + [self.numberView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.left.right.equalTo(self); + make.height.mas_equalTo(kGetScaleWidth(14)); + + }]; +} +#pragma mark -懒加载 +- (UILabel *)titleView { + if (!_titleView) { + _titleView = [[UILabel alloc] init]; + _titleView.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + _titleView.textColor = UIColorFromRGB(0x572714); + } + return _titleView; +} + +- (UILabel *)numberView { + if (!_numberView) { + _numberView = [[UILabel alloc] init]; + _numberView.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + _numberView.textColor =UIColorFromRGB(0x572714); + } + return _numberView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/XPMineChooseGiveDiamondVC.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/XPMineChooseGiveDiamondVC.h new file mode 100644 index 00000000..cbaf5f79 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/XPMineChooseGiveDiamondVC.h @@ -0,0 +1,30 @@ +// +// XPMineChooseGiveDiamondVC.h +// YuMi +// +// Created by YuMi on 2022/10/19. +// + +#import +#import "MvpViewController.h" +#import "XPMineGiveDiamondModel.h" +@class UserInfoModel; +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMineChooseGiveDiamondVCDelegate + +///支付成功 +- (void)xpMineChooseGiveDiamondVCCompleteWithModel:(XPMineGiveDiamondModel *)model; + + + +@end + + +@interface XPMineChooseGiveDiamondVC : MvpViewController +@property (nonatomic,strong) XPMineGiveDiamondModel *giveDiamondModel; +@property (nonatomic,strong) UserInfoModel *userInfo; +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/XPMineChooseGiveDiamondVC.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/XPMineChooseGiveDiamondVC.m new file mode 100644 index 00000000..af1e1497 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/XPMineChooseGiveDiamondVC.m @@ -0,0 +1,267 @@ +// +// XPMineChooseGiveDiamondVC.m +// YuMi +// +// Created by YuMi on 2022/10/19. +// + +#import "XPMineChooseGiveDiamondVC.h" +#import "XPMineChooseGiveDiamondView.h" +#import "XPMineGiveDiamondProtocol.h" +#import "XPMineGiveDiamondPresenter.h" +#import "WalletInfoModel.h" +#import "UserInfoModel.h" +#import "XPMineGiveDiamondPwdView.h" +#import "XPMinePayPwdViewController.h" +#import "XPMineConfirmGiveDiamondView.h" +#import "NSDate+DateUtils.h" +#import "XPMineGiveDiamondPasswordView.h" +#import "GiftInfoModel.h" +#import "ClientConfig.h" +#import "TTPopup.h" +UIKIT_EXTERN NSString * const kGiveDiamondDailyNum; + +@interface XPMineChooseGiveDiamondVC () +@property (nonatomic,strong) XPMineChooseGiveDiamondView *giveDiamondView; +@property (nonatomic,copy) NSString *diamonds; +@property (nonatomic,assign) NSInteger inputDiamonds; +@property (nonatomic,copy) NSString *password; +@property (nonatomic,strong) NSMutableArray *giftList; +///是否有转赠钻石权限 +@property (nonatomic,assign) BOOL isHaveGiveDiamond; +///是否有转赠礼物权限 +@property (nonatomic,assign) BOOL isHaveGiveGift; +@end + +@implementation XPMineChooseGiveDiamondVC +- (XPMineGiveDiamondPresenter *)createPresenter { + return [[XPMineGiveDiamondPresenter alloc] init]; +} +- (void)viewDidLoad { + [super viewDidLoad]; + [self checkHaveGivePermission]; + [self initSubViews]; + [self initSubViewConstraints]; + self.giveDiamondView.giveDiamondModel = self.giveDiamondModel; + self.giveDiamondView.userInfo = self.userInfo; + [self.presenter getUserWalletInfo]; + [self.presenter getPackGiftList]; + + + +} +-(void)dealloc{ + NSLog(@"内存释放了"); +} +#pragma mark -XPMineConfirmGiveDiamondViewDelegate + +///获取背包礼物列表 +- (void)getPacketGiftListSuccess:(NSArray *)giftList{ + [self.giftList addObjectsFromArray:giftList]; + NSInteger count = self.giftList.count % 8 == 0 ? self.giftList.count / 8 : self.giftList.count / 8 + 1; + NSInteger getCount = count * 8 - self.giftList.count; + if(getCount > 0){ + for (int i = 0; i < getCount; i++) { + GiftInfoModel *model = [GiftInfoModel new]; + model.isEmpty = YES; + [self.giftList addObject:model]; + } + } + + [self.giveDiamondView setListData:self.giftList count:count]; +} +///获取背包礼物列表失败 +- (void)getPacketGiftListFail:(NSString *)message{ + +} + + +- (void)xpMineConfirmGiveDiamondViewComplete{ + + + if (self.userInfo.isBindPaymentPwd) { + XPMineGiveDiamondPwdView*pwdView = [[XPMineGiveDiamondPwdView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; + pwdView.delegate = self; + [[UIApplication sharedApplication].keyWindow addSubview:pwdView]; + } else { + + XPMineGiveDiamondPasswordView *passwordView = [[XPMineGiveDiamondPasswordView alloc]initWithFrame:CGRectZero]; + @kWeakify(self); + passwordView.completeBlock = ^(){ + @kStrongify(self); + XPMinePayPwdViewController *vc = [[XPMinePayPwdViewController alloc] init]; + vc.userInfo = self.userInfo; + vc.delegate = self; + [self.navigationController pushViewController:vc animated:YES]; + }; + [TTPopup popupView:passwordView style:TTPopupStyleAlert]; + } + + +} +#pragma mark - XPMineGiveDiamondPwdViewDelegate +- (void)xpMineGiveDiamondPwdViewPwdComplete:(NSString *)pwd{ + self.password = pwd; + [self showLoading]; + [self.presenter confirmActionWithPayWithToUid:self.giveDiamondModel.targetUid diamondNum:@(self.inputDiamonds).stringValue payPwd:self.password]; + +} +#pragma mark - XPMineGiveDiamondProtocol +- (void)getUserWalletInfo:(WalletInfoModel *)balanceInfo{ + [self.giveDiamondView setDiamond:balanceInfo.diamonds]; + self.diamonds = balanceInfo.diamonds; +} + +#pragma mark - XPMinePayPwdViewControllerDelegate + + +-(void)giveGiftSuccess{ + [self hideHUD]; + [self showSuccessToast:YMLocalizedString(@"XPMineChooseGiveDiamondVC6")]; + if(self.delegate && [self.delegate respondsToSelector:@selector(xpMineChooseGiveDiamondVCCompleteWithModel:)]){ + [self.delegate xpMineChooseGiveDiamondVCCompleteWithModel:self.giveDiamondModel]; + } + [self.navigationController popViewControllerAnimated:YES]; +} + +- (void)payPasswordSuccess{ + self.userInfo.isBindPaymentPwd = YES; +} + +-(void)confirmActionWithPay{ + [self hideHUD]; + + NSMutableDictionary *dailyNumDic ; + NSDictionary *getDic = [[NSUserDefaults standardUserDefaults]valueForKey:kGiveDiamondDailyNum]; + if(getDic == nil){ + dailyNumDic = [NSMutableDictionary dictionary]; + }else{ + dailyNumDic = [NSMutableDictionary dictionaryWithDictionary:getDic]; + } + NSString *key = [NSString stringWithFormat:@"%ld-%@",self.userInfo.uid,[NSDate getNowTimeTimestamp]]; + NSInteger dailyNum = 0; + if(dailyNumDic[key] != nil){ + NSInteger getNum = [dailyNumDic[key] integerValue]; + dailyNum = getNum; + } + NSInteger totalCost = dailyNum + self.inputDiamonds; + dailyNumDic[key] = @(totalCost); + [[NSUserDefaults standardUserDefaults]setValue:dailyNumDic forKey:kGiveDiamondDailyNum]; + [[NSUserDefaults standardUserDefaults] synchronize]; + [self showSuccessToast:YMLocalizedString(@"XPMineChooseGiveDiamondVC6")]; + if(self.delegate && [self.delegate respondsToSelector:@selector(xpMineChooseGiveDiamondVCCompleteWithModel:)]){ + [self.delegate xpMineChooseGiveDiamondVCCompleteWithModel:self.giveDiamondModel]; + } + [self.navigationController popViewControllerAnimated:YES]; + + +} +-(void)confirmActionWithText:(NSString *)text{ + [self chooseDiamondsWithText:text]; +} +-(void)confirmActionWithText:(NSString *)text chooseGiftModel:(GiftInfoModel *)chooseGiftModel{ + [self showLoading]; + [self.presenter giveGiftWithToUid:self.giveDiamondModel.targetUid giftId:@(chooseGiftModel.giftId).stringValue giftNum:text]; +} + +-(void)chooseDiamondsWithText:(NSString *)text{ + self.inputDiamonds = [text integerValue]; + NSInteger totalNum = self.inputDiamonds; + ClientConfig *config = [ClientConfig shareConfig]; + double poundage = config.configInfo.giveDiamondRate * totalNum; + NSInteger totalCost = totalNum + poundage; + if(totalCost > [self.diamonds integerValue]){ + [self showErrorToast:YMLocalizedString(@"XPMineChooseGiveDiamondVC5")]; + return; + } + if(self.inputDiamonds > config.configInfo.giveDiamondOnceLimitNum){ + [self showErrorToast:[NSString stringWithFormat:YMLocalizedString(@"XPMineChooseGiveDiamondVC4"),@(config.configInfo.giveDiamondOnceLimitNum)]]; + return; + } + NSMutableDictionary *dailyNumDic = [[NSUserDefaults standardUserDefaults]valueForKey:kGiveDiamondDailyNum]; + if(dailyNumDic != nil){ + NSString *key = [NSString stringWithFormat:@"%ld-%@",self.userInfo.uid,[NSDate getNowTimeTimestamp]]; + NSInteger dailyNum = 0; + if(dailyNumDic[key] != nil){ + dailyNum = [dailyNumDic[key] integerValue]; + } + NSInteger getTotalNum = dailyNum + totalNum; + if(getTotalNum > config.configInfo.giveDiamondDailyNum){ + [self showErrorToast:YMLocalizedString(@"XPMineChooseGiveDiamondVC3")]; + return; + } + } + + XPMineConfirmGiveDiamondView *confirmView = [[XPMineConfirmGiveDiamondView alloc]initWithFrame:CGRectZero]; + confirmView.poundage = poundage; + confirmView.inputDiamonds = self.inputDiamonds; + confirmView.delegate = self; + confirmView.giveDiamondModel = self.giveDiamondModel; + [TTPopup popupView:confirmView style:TTPopupStyleAlert]; +} +#pragma mark- 检查是否有转赠权限 +-(void)checkHaveGivePermission{ + + ClientConfig *config = [ClientConfig shareConfig]; + NSArray *uidList = config.configInfo.giveDiamondErbanNoList; + for (id uid in uidList) { + NSString *getUid = [uid stringValue]; + if([getUid isEqualToString:@(self.userInfo.erbanNo).stringValue]){ + self.isHaveGiveDiamond = YES; + break; + } + } + for (id uid in config.configInfo.giveGiftErbanNoList) { + NSString *getUid = [uid stringValue]; + if([getUid isEqualToString:@(self.userInfo.erbanNo).stringValue]){ + self.isHaveGiveGift = YES; + break; + } + } + if(self.userInfo.userLevelVo.experLevelSeq >= config.configInfo.giveDiamondExperLevel){ + self.isHaveGiveDiamond = YES; + } + if(self.userInfo.userLevelVo.experLevelSeq >= config.configInfo.giveGiftExperLevel){ + + self.isHaveGiveGift = YES; + } +} +#pragma mark - Private Method +- (void)initSubViews { + self.view.backgroundColor = [UIColor whiteColor]; + self.title = YMLocalizedString(@"XPMineChooseGiveDiamondVC0"); + [self.view addSubview:self.giveDiamondView]; +} +- (void)initSubViewConstraints { + + [self.giveDiamondView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.equalTo(self.view); + make.top.mas_equalTo(0); + }]; +} + +#pragma mark -懒加载 +- (XPMineChooseGiveDiamondView *)giveDiamondView{ + if (!_giveDiamondView){ + _giveDiamondView = [[XPMineChooseGiveDiamondView alloc]initWithFrame:CGRectZero isHaveGiveDiamond:self.isHaveGiveDiamond isHaveGiveGift:self.isHaveGiveGift]; + _giveDiamondView.delegate = self; + } + return _giveDiamondView; +} +-(NSMutableArray *)giftList{ + if (!_giftList){ + _giftList = [NSMutableArray array]; + } + return _giftList; +} +/* + #pragma mark - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. + } + */ + +@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/XPMineGiveDiamondDetailsVC.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/XPMineGiveDiamondDetailsVC.h new file mode 100644 index 00000000..263e8a13 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/XPMineGiveDiamondDetailsVC.h @@ -0,0 +1,20 @@ +// +// XPMineGiveDiamondDetailsVC.h +// YuMi +// +// Created by YuMi on 2022/10/31. +// + +#import "MvpViewController.h" +#import "UserInfoModel.h" + + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineGiveDiamondDetailsVC : MvpViewController + +@property (nonatomic,strong) UserInfoModel *userInfo; +@property (nonatomic,copy) NSString *toUid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/XPMineGiveDiamondDetailsVC.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/XPMineGiveDiamondDetailsVC.m new file mode 100644 index 00000000..7eea0212 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/XPMineGiveDiamondDetailsVC.m @@ -0,0 +1,329 @@ +// +// XPMineGiveDiamondDetailsVC.m +// YuMi +// +// Created by YuMi on 2022/10/31. +// + +#import "XPMineGiveDiamondDetailsVC.h" +///Third +#import +#import +#import +#import +///view +#import "XPMineGiveDiamondDetailsView.h" + +#import "XPMineGiveDiamondPresenter.h" + +#import "XPMineGiveDiamondProtocol.h" +#import "DJDKMIMOMColor.h" +#import "ClientConfig.h" +#import "UIImage+Utils.h" + +@interface XPMineGiveDiamondDetailsVC () +///分页标题 +@property (nonatomic, strong) NSArray *titles; +///分页控件 +@property (nonatomic, strong) JXCategoryTitleView *titleView; +///分页lineView +@property (nonatomic, strong) JXCategoryListContainerView *containerView; +///钻石 +@property (nonatomic,strong) XPMineGiveDiamondDetailsView *diamondView; +///礼物 +@property (nonatomic,strong) XPMineGiveDiamondDetailsView *giftView; + +///type,0,钻石,1,礼物 +@property (nonatomic,assign) int type; +///钻石页数 +@property (nonatomic,assign) int diamondPage; +///礼物页数 +@property (nonatomic,assign) int giftPage; +///钻石是否有更多的数据 +@property (nonatomic,assign) BOOL hasNoMoreDiamondData; +///礼物是否有更多的数据 +@property (nonatomic,assign) BOOL hasNoMoreGiftData; + +///是否有转赠钻石权限 +@property (nonatomic,assign) BOOL isHaveGiveDiamond; +///是否有转赠礼物权限 +@property (nonatomic,assign) BOOL isHaveGiveGift; +@end + +@implementation XPMineGiveDiamondDetailsVC +- (XPMineGiveDiamondPresenter *)createPresenter { + return [[XPMineGiveDiamondPresenter alloc] init]; +} +- (void)viewDidLoad { + [super viewDidLoad]; + [self checkHaveGivePermission]; + [self initSubViews]; + [self initHeaderAndFooterRrfresh]; + [self initSubViewConstraints]; + self.diamondPage = 1; + self.giftPage = 1; + + + if(self.isHaveGiveGift == YES && self.isHaveGiveDiamond == NO){ + [self.presenter getExamplesOfRecordWithUid:self.toUid type:1 page:self.giftPage]; + }else{ + [self.presenter getExamplesOfRecordWithUid:self.toUid type:0 page:self.diamondPage]; + } + + +} + + +#pragma mark - Private Method +- (void)initSubViews { + self.view.backgroundColor = [UIColor whiteColor]; + self.title = YMLocalizedString(@"XPMineGiveDiamondDetailsVC0"); + if(self.isHaveGiveDiamond == YES && self.isHaveGiveGift == NO){ + self.type = 0; + [self.view addSubview:self.diamondView]; + }else if (self.isHaveGiveDiamond == NO && self.isHaveGiveGift == YES){ + self.type = 1; + [self.view addSubview:self.giftView]; + }else{ + self.type = 0; + [self.view addSubview:self.titleView]; + [self.view addSubview:self.containerView]; + } + + +} +- (void)initSubViewConstraints { + if(self.isHaveGiveDiamond == YES && self.isHaveGiveGift == NO){ + [self.diamondView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.view); + }]; + }else if (self.isHaveGiveDiamond == NO && self.isHaveGiveGift == YES){ + [self.giftView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.view); + }]; + }else{ + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.top.width.mas_equalTo(self.view); + make.height.mas_equalTo(30); + + }]; + [self.containerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.top.mas_equalTo(self.titleView.mas_bottom).offset(10); + }]; + } + +} +#pragma mark -XPMineGiveDiamondProtocol + +- (void)getexamplesOfRecordWithList:(NSArray *)list state:(int)state{ + if (state == 0) { + if(self.diamondPage == 1){ + self.hasNoMoreDiamondData = NO; + [self.diamondView.tableView.mj_header endRefreshing]; + self.diamondView.listData = [NSMutableArray arrayWithArray:list]; + [self.diamondView.tableView reloadData]; + return; + } + if (list.count > 0) { + [self.diamondView.listData addObjectsFromArray:list]; + [self.diamondView.tableView reloadData]; + self.hasNoMoreDiamondData = NO; + }else{ + self.hasNoMoreDiamondData = YES; + + } + [self.diamondView.tableView.mj_footer endRefreshing]; + return; + } + if(self.giftPage == 1){ + self.hasNoMoreGiftData = NO; + [self.giftView.tableView.mj_header endRefreshing]; + self.giftView.listData = [NSMutableArray arrayWithArray:list]; + [self.giftView.tableView reloadData]; + return; + } + if (list.count > 0) { + [self.giftView.listData addObjectsFromArray:list]; + [self.giftView.tableView reloadData]; + self.hasNoMoreGiftData = NO; + }else{ + self.hasNoMoreGiftData = YES; + + } + [self.self.giftView.tableView.mj_footer endRefreshing]; + +} +-(void)getexamplesOfRecordWithListWithFailState:(int)state{ + if(state == 0){ + [self.diamondView.tableView.mj_header endRefreshing]; + [self.diamondView.tableView.mj_footer endRefreshing]; + return; + } + [self.giftView.tableView.mj_header endRefreshing]; + [self.giftView.tableView.mj_footer endRefreshing]; +} +#pragma mark - 下拉刷新 +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.diamondView.tableView.mj_header = header; + + MJRefreshNormalHeader *giftHeader = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + giftHeader.stateLabel.font = [UIFont systemFontOfSize:10.0]; + giftHeader.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + giftHeader.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + giftHeader.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.giftView.tableView.mj_header = giftHeader; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.diamondView.tableView.mj_footer = footer; + + MJRefreshBackNormalFooter *giftFooter = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + giftFooter.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + giftFooter.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.giftView.tableView.mj_footer = giftFooter; + +} +#pragma mark - 刷新的fangfa +- (void)headerRefresh { + if(self.type == 0){ + self.diamondPage = 1; + [self.presenter getExamplesOfRecordWithUid:self.toUid type:self.type page:self.diamondPage]; + return; + } + + self.giftPage = 1; + [self.presenter getExamplesOfRecordWithUid:self.toUid type:self.type page:self.giftPage]; +} + +- (void)footerRefresh { + if (self.hasNoMoreDiamondData && self.type == 0) { + [self.diamondView.tableView.mj_footer endRefreshing]; + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPMonentsRecommendViewController0")]; + return; + } + if(self.hasNoMoreGiftData && self.type == 1){ + [self.giftView.tableView.mj_footer endRefreshing]; + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPMonentsRecommendViewController0")]; + return; + } + if(self.type == 0){ + self.diamondPage++; + [self.presenter getExamplesOfRecordWithUid:self.toUid type:self.type page:self.diamondPage]; + return; + } + self.giftPage++; + [self.presenter getExamplesOfRecordWithUid:self.toUid type:self.type page:self.giftPage]; +} +#pragma mark- 检查是否有转赠权限 + +-(void)checkHaveGivePermission{ + + ClientConfig *config = [ClientConfig shareConfig]; + NSArray *uidList = config.configInfo.giveDiamondErbanNoList; + for (id uid in uidList) { + NSString *getUid = [uid stringValue]; + if([getUid isEqualToString:@(self.userInfo.erbanNo).stringValue]){ + self.isHaveGiveDiamond = YES; + break; + } + } + for (id uid in config.configInfo.giveGiftErbanNoList) { + NSString *getUid = [uid stringValue]; + if([getUid isEqualToString:@(self.userInfo.erbanNo).stringValue]){ + self.isHaveGiveGift = YES; + break; + } + } + if(self.userInfo.userLevelVo.experLevelSeq >= config.configInfo.giveDiamondExperLevel){ + self.isHaveGiveDiamond = YES; + } + if(self.userInfo.userLevelVo.experLevelSeq >= config.configInfo.giveGiftExperLevel){ + + self.isHaveGiveGift = YES; + } + +} +#pragma mark - JXCategoryViewDelegate +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { + return self.titles.count; +} + +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { + if (index == 0) { + self.type = 0; + return self.diamondView; + } else { + self.type = 1; + if(self.giftView.listData.count == 0){ + [self.presenter getExamplesOfRecordWithUid:self.toUid type:1 page:self.giftPage]; + } + return self.giftView; + } +} + +#pragma mark - 懒加载 +- (JXCategoryTitleView *)titleView { + if (!_titleView) { + _titleView = [[JXCategoryTitleView alloc] init]; + _titleView.delegate = self; + _titleView.titles = self.titles; + _titleView.backgroundColor = [UIColor clearColor]; + _titleView.titleColor = UIColorFromRGB(0x6D6B89); + _titleView.titleSelectedColor = UIColorFromRGB(0x1F1A4E); + _titleView.titleFont = [UIFont systemFontOfSize:kGetScaleWidth(15) weight:UIFontWeightMedium]; + _titleView.titleSelectedFont = [UIFont systemFontOfSize:kGetScaleWidth(15) weight:UIFontWeightMedium]; + _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; + _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; + _titleView.defaultSelectedIndex = 0; + _titleView.cellSpacing = 20; + _titleView.cellWidthIncrement = 5; + _titleView.cellWidth = 60; + _titleView.listContainer = self.containerView; + + JXCategoryIndicatorImageView *lineView = [[JXCategoryIndicatorImageView alloc] init]; + lineView.indicatorImageViewSize = CGSizeMake(16, 3); + lineView.verticalMargin = -1; + lineView.indicatorImageView.image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientMiddleColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(15, 3)]; + lineView.indicatorImageView.layer.masksToBounds = YES; + lineView.indicatorImageView.layer.cornerRadius = 1.5; + _titleView.indicators = @[lineView]; + } + return _titleView; +} + +- (JXCategoryListContainerView *)containerView { + if (!_containerView) { + _containerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; + _containerView.defaultSelectedIndex = 0; + [_containerView.scrollView.panGestureRecognizer requireGestureRecognizerToFail:self.navigationController.interactivePopGestureRecognizer]; + + } + return _containerView; +} + +- (NSArray *)titles { + if (!_titles) { + _titles = @[YMLocalizedString(@"XPMineGiveDiamondDetailsVC1"), YMLocalizedString(@"XPMineGiveDiamondDetailsVC2")]; + } + return _titles; +} +-(XPMineGiveDiamondDetailsView *)diamondView{ + if (!_diamondView){ + _diamondView = [[XPMineGiveDiamondDetailsView alloc]initWithFrame:CGRectZero]; + } + return _diamondView; +} +-(XPMineGiveDiamondDetailsView *)giftView{ + if (!_giftView){ + _giftView = [[XPMineGiveDiamondDetailsView alloc]initWithFrame:CGRectZero]; + } + return _giftView; +} +@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/XPMineGiveDiamondVC.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/XPMineGiveDiamondVC.h new file mode 100644 index 00000000..8fa693f0 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/XPMineGiveDiamondVC.h @@ -0,0 +1,17 @@ +// +// XPMineGiveDiamondVC.h +// YuMi +// +// Created by YuMi on 2022/10/17. +// + +#import +#import "MvpViewController.h" +#import "UserInfoModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineGiveDiamondVC : MvpViewController +@property (nonatomic,strong) UserInfoModel *userInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/XPMineGiveDiamondVC.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/XPMineGiveDiamondVC.m new file mode 100644 index 00000000..1548dc87 --- /dev/null +++ b/YuMi/Modules/YMMine/View/GiveDiamond/View/XPMineGiveDiamondVC.m @@ -0,0 +1,209 @@ +// +// XPMineGiveDiamondVC.m +// YuMi +// +// Created by YuMi on 2022/10/17. +// + +#import "XPMineGiveDiamondVC.h" + +///view +#import "XPMineGiveDiamondSearchView.h" +#import "XPMineGiveDiamondCell.h" +#import "XPMineFriendEmptyTableViewCell.h" +///vc +#import "XPMineChooseGiveDiamondVC.h" +#import "HomeSearchResultModel.h" +#import "XPMineGiveDiamondModel.h" +#import "XPMineGiveDiamondSearchModel.h" +#import "XPMineGiveDiamondDetailsVC.h" + +#import "XPMineGiveDiamondPresenter.h" + +#import "XPMineGiveDiamondProtocol.h" +#import "XPHomeSearchProtocol.h" +#import "DJDKMIMOMColor.h" + +@interface XPMineGiveDiamondVC () +@property (nonatomic,strong) UITableView *tableView; +///搜索 +@property (nonatomic,strong) XPMineGiveDiamondSearchView *searchView; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +@property (nonatomic,strong) UIView *headView; +///搜索的id +@property (nonatomic,copy) NSString *text; +///显示tag +@property (nonatomic,strong) UILabel *tagView; +@end + +@implementation XPMineGiveDiamondVC +- (XPMineGiveDiamondPresenter *)createPresenter { + return [[XPMineGiveDiamondPresenter alloc] init]; +} +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + [self.presenter getGiveDiamondRecord]; +} +- (void)initSubViews { + self.view.backgroundColor = [UIColor whiteColor]; + self.title = YMLocalizedString(@"XPMineGiveDiamondVC0"); + [self.view addSubview:self.searchView]; + [self.view addSubview:self.tableView]; + [self.view addSubview:self.tagView]; + +} + +- (void)initSubViewConstraints { + [self.searchView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.left.right.equalTo(self.view); + make.height.mas_equalTo(kGetScaleWidth(32)); + }]; + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.bottom.mas_equalTo(-kGetScaleWidth(148)); + make.top.mas_equalTo(kGetScaleWidth(32)); + }]; + [self.tagView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(kGetScaleWidth(14)); + make.centerX.equalTo(self.view); + make.bottom.mas_equalTo(-kGetScaleWidth(73)); + }]; +} +#pragma mark -XPMineChooseGiveDiamondVCDelegate +- (void)xpMineChooseGiveDiamondVCCompleteWithModel:(XPMineGiveDiamondModel *)model{ + if(model != nil){ + if(self.datasource.count != 0){ + NSMutableArray *objList = [NSMutableArray array]; + for (XPMineGiveDiamondModel *obj in self.datasource) { + if(![obj.targetErbanNo isEqualToString:model.targetErbanNo]){ + [objList addObject:obj]; + } + } + [self.datasource removeAllObjects]; + [self.datasource addObject:model]; + [self.datasource addObjectsFromArray:objList]; + }else{ + [self.datasource addObject:model]; + } + [self.tableView reloadData]; + } +} +#pragma mark - UITableViewDelegate + +-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ + return self.datasource.count > 0 ? kGetScaleWidth(70) : self.tableView.frame.size.height; + +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ + return self.datasource.count > 0 ? self.datasource.count : 1; +} +-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ + if(self.datasource.count > 0){ + XPMineGiveDiamondCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineGiveDiamondCell class]) forIndexPath:indexPath]; + cell.giveDiamondModel = [self.datasource safeObjectAtIndex1:indexPath.row]; + return cell; + } + XPMineFriendEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineFriendEmptyTableViewCell class])forIndexPath:indexPath] ; + + cell.emptyTitle = YMLocalizedString(@"XPMineGiveDiamondVC3"); + return cell; + +} +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ + if(self.datasource.count < indexPath.row)return; + XPMineGiveDiamondDetailsVC *vc = [[XPMineGiveDiamondDetailsVC alloc]init]; + vc.userInfo = self.userInfo; + XPMineGiveDiamondModel *model = self.datasource[indexPath.row]; + vc.toUid = model.targetUid; + [self.navigationController pushViewController:vc animated:YES]; +} +#pragma mark - XPMineGiveDiamondProtocol +-(void)getGiveDiamondListSuccess:(NSArray *)array{ + self.datasource = [NSMutableArray arrayWithArray:array]; + [self.tableView reloadData]; +} +#pragma mark - XPHomeSearchProtocol + +-(void)searchGivePeopleWihtModel:(XPMineGiveDiamondSearchModel *)model{ + [self hideHUD]; + if(model != nil){ + XPMineGiveDiamondModel *giveModle = [XPMineGiveDiamondModel new]; + giveModle.targetUid = model.uid; + giveModle.targetErbanNo = model.erbanNo; + giveModle.targetNick = model.nick; + giveModle.targetAvatar = model.avatar; + XPMineChooseGiveDiamondVC *vc = [XPMineChooseGiveDiamondVC new]; + vc.giveDiamondModel = giveModle; + vc.delegate = self; + vc.userInfo = self.userInfo; + [self.navigationController pushViewController:vc animated:YES]; + } +} + + +-(void)searchEndWithText:(NSString *)text{ + if(text.length == 0){ + [self showErrorToast:YMLocalizedString(@"XPMineGiveDiamondSearchView1")]; + return; + } + self.text = text; + [self showLoading]; + [self.presenter searchGivePeopleWith:text]; +} +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.showsVerticalScrollIndicator = NO; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + _tableView.tableHeaderView = self.headView; + [_tableView registerClass:[XPMineGiveDiamondCell class] forCellReuseIdentifier:NSStringFromClass([XPMineGiveDiamondCell class])]; + [_tableView registerClass:[XPMineFriendEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineFriendEmptyTableViewCell class])]; + } + return _tableView; +} +- (XPMineGiveDiamondSearchView *)searchView{ + if (!_searchView){ + _searchView = [[XPMineGiveDiamondSearchView alloc]initWithFrame:CGRectZero]; + _searchView.delegate = self; + } + return _searchView; +} +-(UIView *)headView{ + if (!_headView){ + _headView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, kGetScaleWidth(64))]; + UILabel *titleView = [[UILabel alloc]initWithFrame:CGRectMake(kGetScaleWidth(15), kGetScaleWidth(25), KScreenWidth - kGetScaleWidth(30), kGetScaleWidth(19))]; + titleView.text = YMLocalizedString(@"XPMineGiveDiamondVC1"); + titleView.font = [UIFont systemFontOfSize:kGetScaleWidth(16) weight:UIFontWeightMedium]; + titleView.textColor = [DJDKMIMOMColor mainTextColor]; + [_headView addSubview:titleView]; + } + return _headView; +} +-(UILabel *)tagView{ + if (!_tagView){ + _tagView = [UILabel new]; + _tagView.textColor = [DJDKMIMOMColor disableButtonTextColor]; + _tagView.font = [UIFont systemFontOfSize:kGetScaleWidth(12) weight:UIFontWeightRegular]; + _tagView.text = YMLocalizedString(@"XPMineGiveDiamondVC2"); + } + return _tagView; +} +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/YUMIManeChooseGiveDiamondVC.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/YUMIManeChooseGiveDiamondVC.h deleted file mode 100644 index 96d0aa94..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/YUMIManeChooseGiveDiamondVC.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// YUMIManeChooseGiveDiamondVC.h -// YuMi -// -// Created by YuMi on 2022/10/19. -// - -#import -#import "MvpRegardGovernancer.h" -#import "YUMIManeGiveDiamondMatrix.h" -@class ConsumerAbstractMatrix; -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCManeChooseGiveDiamondVCRepresendtation - -- (void)yumiManeConcludeGiveDiamondVewCAccomplishAboutMtowardsrix:(YUMIManeGiveDiamondMatrix *)model; - - - -@end - - -@interface YUMIManeChooseGiveDiamondVC : MvpRegardGovernancer -@property (nonatomic,strong) YUMIManeGiveDiamondMatrix *giveBWSttawberryMatrix; -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/YUMIManeChooseGiveDiamondVC.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/YUMIManeChooseGiveDiamondVC.m deleted file mode 100644 index ca8cc1b3..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/YUMIManeChooseGiveDiamondVC.m +++ /dev/null @@ -1,255 +0,0 @@ -// -// YUMIManeChooseGiveDiamondVC.m -// YuMi -// -// Created by YuMi on 2022/10/19. -// - -#import "YUMIManeChooseGiveDiamondVC.h" -#import "YUMIManeChooseGiveDiamondRegard.h" -#import "FBCManeGiveDiamondCeremony.h" -#import "YUMIManeGiveDiamondExternalizer.h" -#import "RamparatetAbstractMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "YUMIManeGiveDiamondPwordRegard.h" -#import "YUMIManeIntersectPwordRegardGovernancer.h" -#import "YUMIManeConfirmGiveDiamondRegard.h" -#import "NSDate+DateUtils.h" -#import "YUMIManeGiveDiamondCiphercodeRegard.h" -#import "PresentAbstractMatrix.h" -#import "ClientDisposition.h" -#import "MKJPopup.h" -UIKIT_EXTERN NSString * const kGiveDiamondDailyNum; - -@interface YUMIManeChooseGiveDiamondVC () -@property (nonatomic,strong) YUMIManeChooseGiveDiamondRegard *giveBWSttawberryRegard; -@property (nonatomic,copy) NSString *diamonds; -@property (nonatomic,assign) NSInteger introjectionBWSttawberrys; -@property (nonatomic,copy) NSString *password; -@property (nonatomic,strong) NSMutableArray *giftList; -@property (nonatomic,assign) BOOL isHaveGiveBWSttawberry; -@property (nonatomic,assign) BOOL isHaveGivePresent; -@end - -@implementation YUMIManeChooseGiveDiamondVC -- (YUMIManeGiveDiamondExternalizer *)producePresimport { - return [[YUMIManeGiveDiamondExternalizer alloc] init]; -} -- (void)viewDidLoad { - [super viewDidLoad]; - [self examineHaveGivePreconditionion]; - [self initSubViews]; - [self initChildLyRestrictions]; - self.giveBWSttawberryRegard.giveBWSttawberryMatrix = self.giveBWSttawberryMatrix; - self.giveBWSttawberryRegard.userInfo = self.userInfo; - [self.presimport acquireConsumerPocketbookAbstract]; - [self.presimport acquireImpactPresentSttowardsement]; - - - -} --(void)dealloc{ - NSLog(@"内存释放了"); -} -#pragma mark -FBCManeConfirmGiveDiamondRegardRepresendtation - -- (void)acquireShetowardshePresentSttowardsementAccomplishment:(NSArray *)giftList{ - [self.giftList addObjectsFromArray:giftList]; - NSInteger count = self.giftList.count % 8 == 0 ? self.giftList.count / 8 : self.giftList.count / 8 + 1; - NSInteger getCount = count * 8 - self.giftList.count; - if(getCount > 0){ - for (int i = 0; i < getCount; i++) { - PresentAbstractMatrix *model = [PresentAbstractMatrix new]; - model.isEmpty = YES; - [self.giftList addObject:model]; - } - } - - [self.giveBWSttawberryRegard setListData:self.giftList count:count]; -} -- (void)acquireShetowardshePresentSttowardsementFlunk:(NSString *)message{ - -} - - -- (void)yumiManeConfirmGiveDiamondRegardAccomplish{ - - - if (self.userInfo.isBindPaymentPwd) { - YUMIManeGiveDiamondPwordRegard*pwdView = [[YUMIManeGiveDiamondPwordRegard alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; - pwdView.delegate = self; - [[UIApplication sharedApplication].keyWindow addSubview:pwdView]; - } else { - - YUMIManeGiveDiamondCiphercodeRegard *ciphercryptogramRegard = [[YUMIManeGiveDiamondCiphercodeRegard alloc]initWithFrame:CGRectZero]; - @kWeakify(self); - ciphercryptogramRegard.completeBlock = ^(){ - @kStrongify(self); - YUMIManeIntersectPwordRegardGovernancer *vc = [[YUMIManeIntersectPwordRegardGovernancer alloc] init]; - vc.userInfo = self.userInfo; - vc.delegate = self; - [self.navigationController pushViewController:vc animated:YES]; - }; - [MKJPopup popupRegard:ciphercryptogramRegard style:MKJPopupStyleAlert]; - } - - -} -#pragma mark - FBCManeGiveDiamondPwordRegardRepresendtation -- (void)yumiManeGiveDiamondPwordRegardPwordAccomplish:(NSString *)pwd{ - self.password = pwd; - [self EvidenceChambering]; - [self.presimport acknowledgementPerformanceAboutIntersectAboutToCid:self.giveBWSttawberryMatrix.targetUid diamondNum:@(self.introjectionBWSttawberrys).stringValue payPwd:self.password]; - -} -#pragma mark - FBCManeGiveDiamondCeremony -- (void)acquireConsumerPocketbookAbstract:(RamparatetAbstractMatrix *)balanceInfo{ - [self.giveBWSttawberryRegard setStrawberry:balanceInfo.diamonds]; - self.diamonds = balanceInfo.diamonds; -} - -#pragma mark - FBCManePayPwordRegardGovernancerRepresendtation - - --(void)givePresentAccomplishment{ - [self brakeHUD]; - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_MineChooseGiveDiamondVC6")]; - if(self.delegate && [self.delegate respondsToSelector:@selector(yumiManeConcludeGiveDiamondVewCAccomplishAboutMtowardsrix:)]){ - [self.delegate yumiManeConcludeGiveDiamondVewCAccomplishAboutMtowardsrix:self.giveBWSttawberryMatrix]; - } - [self.navigationController popViewControllerAnimated:YES]; -} - -- (void)payCiphercryptogramAccomplishment{ - self.userInfo.isBindPaymentPwd = YES; -} - --(void)acknowledgementPerformanceAboutIntersect{ - [self brakeHUD]; - - NSMutableDictionary *dailyNumDic ; - NSDictionary *getDic = [[NSUserDefaults standardUserDefaults]valueForKey:kGiveDiamondDailyNum]; - if(getDic == nil){ - dailyNumDic = [NSMutableDictionary dictionary]; - }else{ - dailyNumDic = [NSMutableDictionary dictionaryWithDictionary:getDic]; - } - NSString *key = [NSString stringWithFormat:@"%ld-%@",self.userInfo.uid,[NSDate acquireNowIntrtowardsemporalIntrtowardsemporalstamp]]; - NSInteger dailyNum = 0; - if(dailyNumDic[key] != nil){ - NSInteger getNum = [dailyNumDic[key] integerValue]; - dailyNum = getNum; - } - NSInteger totalCost = dailyNum + self.introjectionBWSttawberrys; - dailyNumDic[key] = @(totalCost); - [[NSUserDefaults standardUserDefaults]setValue:dailyNumDic forKey:kGiveDiamondDailyNum]; - [[NSUserDefaults standardUserDefaults] synchronize]; - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_MineChooseGiveDiamondVC6")]; - if(self.delegate && [self.delegate respondsToSelector:@selector(yumiManeConcludeGiveDiamondVewCAccomplishAboutMtowardsrix:)]){ - [self.delegate yumiManeConcludeGiveDiamondVewCAccomplishAboutMtowardsrix:self.giveBWSttawberryMatrix]; - } - [self.navigationController popViewControllerAnimated:YES]; - - -} --(void)acknowledgementPerformanceAboutEssay:(NSString *)text{ - [self concludeDiamondsAboutEssay:text]; -} --(void)acknowledgementPerformanceAboutEssay:(NSString *)text concludePresentMatrix:(PresentAbstractMatrix *)concludePresentMatrix{ - [self EvidenceChambering]; - [self.presimport givePresentAboutToCid:self.giveBWSttawberryMatrix.targetUid giftId:@(concludePresentMatrix.giftId).stringValue giftNum:text]; -} - --(void)concludeDiamondsAboutEssay:(NSString *)text{ - self.introjectionBWSttawberrys = [text integerValue]; - NSInteger totalNum = self.introjectionBWSttawberrys; - ClientDisposition *config = [ClientDisposition partowardsiciptowardsionDisposition]; - double poundage = config.dispositionAbstract.giveDiamondRate * totalNum; - NSInteger totalCost = totalNum + poundage; - if(totalCost > [self.diamonds integerValue]){ - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineChooseGiveDiamondVC5")]; - return; - } - if(self.introjectionBWSttawberrys > config.dispositionAbstract.giveDiamondOnceLimitNum){ - [self EvidenceMistakeToast:[NSString stringWithFormat:YMLocalizedString(@"YUMI_MineChooseGiveDiamondVC4"),@(config.dispositionAbstract.giveDiamondOnceLimitNum)]]; - return; - } - NSMutableDictionary *dailyNumDic = [[NSUserDefaults standardUserDefaults]valueForKey:kGiveDiamondDailyNum]; - if(dailyNumDic != nil){ - NSString *key = [NSString stringWithFormat:@"%ld-%@",self.userInfo.uid,[NSDate acquireNowIntrtowardsemporalIntrtowardsemporalstamp]]; - NSInteger dailyNum = 0; - if(dailyNumDic[key] != nil){ - dailyNum = [dailyNumDic[key] integerValue]; - } - NSInteger getTotalNum = dailyNum + totalNum; - if(getTotalNum > config.dispositionAbstract.giveDiamondDailyNum){ - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineChooseGiveDiamondVC3")]; - return; - } - } - - YUMIManeConfirmGiveDiamondRegard *confirmView = [[YUMIManeConfirmGiveDiamondRegard alloc]initWithFrame:CGRectZero]; - confirmView.poundage = poundage; - confirmView.introjectionBWSttawberrys = self.introjectionBWSttawberrys; - confirmView.delegate = self; - confirmView.giveBWSttawberryMatrix = self.giveBWSttawberryMatrix; - [MKJPopup popupRegard:confirmView style:MKJPopupStyleAlert]; -} -#pragma mark- 检查是否有转赠权限 --(void)examineHaveGivePreconditionion{ - - ClientDisposition *config = [ClientDisposition partowardsiciptowardsionDisposition]; - NSArray *uidList = config.dispositionAbstract.giveDiamondErbanNoList; - for (id uid in uidList) { - NSString *acquireCid = [uid stringValue]; - if([acquireCid isEqualToString:@(self.userInfo.erbanNo).stringValue]){ - self.isHaveGiveBWSttawberry = YES; - break; - } - } - for (id uid in config.dispositionAbstract.giveGiftErbanNoList) { - NSString *acquireCid = [uid stringValue]; - if([acquireCid isEqualToString:@(self.userInfo.erbanNo).stringValue]){ - self.isHaveGivePresent = YES; - break; - } - } - if(self.userInfo.userLevelVo.experLevelSeq >= config.dispositionAbstract.giveDiamondExperLevel){ - self.isHaveGiveBWSttawberry = YES; - } - if(self.userInfo.userLevelVo.experLevelSeq >= config.dispositionAbstract.giveGiftExperLevel){ - - self.isHaveGivePresent = YES; - } -} -#pragma mark - Private Method -- (void)initSubViews { - self.view.backgroundColor = [UIColor whiteColor]; - self.title = YMLocalizedString(@"YUMI_MineChooseGiveDiamondVC0"); - [self.view addSubview:self.giveBWSttawberryRegard]; -} -- (void)initChildLyRestrictions { - - [self.giveBWSttawberryRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.equalTo(self.view); - make.top.mas_equalTo(0); - }]; -} - -#pragma mark -懒加载 -- (YUMIManeChooseGiveDiamondRegard *)giveBWSttawberryRegard{ - if (!_giveBWSttawberryRegard){ - _giveBWSttawberryRegard = [[YUMIManeChooseGiveDiamondRegard alloc]initWithFrame:CGRectZero isHaveGiveBWSttawberry:self.isHaveGiveBWSttawberry isHaveGivePresent:self.isHaveGivePresent]; - _giveBWSttawberryRegard.delegate = self; - } - return _giveBWSttawberryRegard; -} --(NSMutableArray *)giftList{ - if (!_giftList){ - _giftList = [NSMutableArray array]; - } - return _giftList; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/YUMIManeGiveDiamondSpecificsVC.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/YUMIManeGiveDiamondSpecificsVC.h deleted file mode 100644 index f5128c2f..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/YUMIManeGiveDiamondSpecificsVC.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YUMIManeGiveDiamondSpecificsVC.h -// YuMi -// -// Created by YuMi on 2022/10/31. -// - -#import "MvpRegardGovernancer.h" -#import "ConsumerAbstractMatrix.h" - - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeGiveDiamondSpecificsVC : MvpRegardGovernancer - -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@property (nonatomic,copy) NSString *toUid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/YUMIManeGiveDiamondSpecificsVC.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/YUMIManeGiveDiamondSpecificsVC.m deleted file mode 100644 index d2e618e0..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/YUMIManeGiveDiamondSpecificsVC.m +++ /dev/null @@ -1,315 +0,0 @@ -// -// YUMIManeGiveDiamondSpecificsVC.m -// YuMi -// -// Created by YuMi on 2022/10/31. -// - -#import "YUMIManeGiveDiamondSpecificsVC.h" -#import -#import -#import -#import -#import "YUMIManeGiveDiamondSpecificsRegard.h" - -#import "YUMIManeGiveDiamondExternalizer.h" - -#import "FBCManeGiveDiamondCeremony.h" -#import "DJDKMIMOMColor.h" -#import "ClientDisposition.h" -#import "UIImage+Utils.h" - -@interface YUMIManeGiveDiamondSpecificsVC () -@property (nonatomic, strong) NSArray *titles; -@property (nonatomic, strong) JXCategoryTitleView *titleView; -@property (nonatomic, strong) JXCategoryListContainerView *containerView; -@property (nonatomic,strong) YUMIManeGiveDiamondSpecificsRegard *bWSttawberryRegard; -@property (nonatomic,strong) YUMIManeGiveDiamondSpecificsRegard *presentRegard; - -@property (nonatomic,assign) int type; -@property (nonatomic,assign) int strawberryPeriod; -@property (nonatomic,assign) int presentPeriod; -@property (nonatomic,assign) BOOL hasNoFurthaerBWSttawberryAtoloudspeaker; -@property (nonatomic,assign) BOOL hasNoFurthaerPresentAtoloudspeaker; - -@property (nonatomic,assign) BOOL isHaveGiveBWSttawberry; -@property (nonatomic,assign) BOOL isHaveGivePresent; -@end - -@implementation YUMIManeGiveDiamondSpecificsVC -- (YUMIManeGiveDiamondExternalizer *)producePresimport { - return [[YUMIManeGiveDiamondExternalizer alloc] init]; -} -- (void)viewDidLoad { - [super viewDidLoad]; - [self examineHaveGivePreconditionion]; - [self initSubViews]; - [self initIntelligencerGrantedTerminalerRrfresh]; - [self initChildLyRestrictions]; - self.strawberryPeriod = 1; - self.presentPeriod = 1; - - - if(self.isHaveGivePresent == YES && self.isHaveGiveBWSttawberry == NO){ - [self.presimport acquireExamplesHLOfReflectionAboutCid:self.toUid type:1 page:self.presentPeriod]; - }else{ - [self.presimport acquireExamplesHLOfReflectionAboutCid:self.toUid type:0 page:self.strawberryPeriod]; - } - - -} - - -#pragma mark - Private Method -- (void)initSubViews { - self.view.backgroundColor = [UIColor whiteColor]; - self.title = YMLocalizedString(@"YUMI_MineGiveDiamondDetailsVC0"); - if(self.isHaveGiveBWSttawberry == YES && self.isHaveGivePresent == NO){ - self.type = 0; - [self.view addSubview:self.bWSttawberryRegard]; - }else if (self.isHaveGiveBWSttawberry == NO && self.isHaveGivePresent == YES){ - self.type = 1; - [self.view addSubview:self.presentRegard]; - }else{ - self.type = 0; - [self.view addSubview:self.titleView]; - [self.view addSubview:self.containerView]; - } - - -} -- (void)initChildLyRestrictions { - if(self.isHaveGiveBWSttawberry == YES && self.isHaveGivePresent == NO){ - [self.bWSttawberryRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.view); - }]; - }else if (self.isHaveGiveBWSttawberry == NO && self.isHaveGivePresent == YES){ - [self.presentRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.view); - }]; - }else{ - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.top.width.mas_equalTo(self.view); - make.height.mas_equalTo(30); - - }]; - [self.containerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.top.mas_equalTo(self.titleView.mas_bottom).offset(10); - }]; - } - -} -#pragma mark -FBCManeGiveDiamondCeremony - -- (void)acquireexamplesHLOfReflectionAboutSttowardsement:(NSArray *)list state:(int)state{ - if (state == 0) { - if(self.strawberryPeriod == 1){ - self.hasNoFurthaerBWSttawberryAtoloudspeaker = NO; - [self.bWSttawberryRegard.tableView.mj_header endRefreshing]; - self.bWSttawberryRegard.listData = [NSMutableArray arrayWithArray:list]; - [self.bWSttawberryRegard.tableView reloadData]; - return; - } - if (list.count > 0) { - [self.bWSttawberryRegard.listData addObjectsFromArray:list]; - [self.bWSttawberryRegard.tableView reloadData]; - self.hasNoFurthaerBWSttawberryAtoloudspeaker = NO; - }else{ - self.hasNoFurthaerBWSttawberryAtoloudspeaker = YES; - - } - [self.bWSttawberryRegard.tableView.mj_footer endRefreshing]; - return; - } - if(self.presentPeriod == 1){ - self.hasNoFurthaerPresentAtoloudspeaker = NO; - [self.presentRegard.tableView.mj_header endRefreshing]; - self.presentRegard.listData = [NSMutableArray arrayWithArray:list]; - [self.presentRegard.tableView reloadData]; - return; - } - if (list.count > 0) { - [self.presentRegard.listData addObjectsFromArray:list]; - [self.presentRegard.tableView reloadData]; - self.hasNoFurthaerPresentAtoloudspeaker = NO; - }else{ - self.hasNoFurthaerPresentAtoloudspeaker = YES; - - } - [self.self.presentRegard.tableView.mj_footer endRefreshing]; - -} --(void)acquireexamplesHLOfReflectionAboutSttowardsementAboutFlunkDeclare:(int)state{ - if(state == 0){ - [self.bWSttawberryRegard.tableView.mj_header endRefreshing]; - [self.bWSttawberryRegard.tableView.mj_footer endRefreshing]; - return; - } - [self.presentRegard.tableView.mj_header endRefreshing]; - [self.presentRegard.tableView.mj_footer endRefreshing]; -} -#pragma mark - 下拉刷新 -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.bWSttawberryRegard.tableView.mj_header = header; - - MJRefreshNormalHeader *giftHeader = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - giftHeader.stateLabel.font = [UIFont systemFontOfSize:10.0]; - giftHeader.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - giftHeader.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - giftHeader.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.presentRegard.tableView.mj_header = giftHeader; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.bWSttawberryRegard.tableView.mj_footer = footer; - - MJRefreshBackNormalFooter *giftFooter = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - giftFooter.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - giftFooter.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.presentRegard.tableView.mj_footer = giftFooter; - -} -#pragma mark - 刷新的fangfa -- (void)intelligenceerRenovtowardseh { - if(self.type == 0){ - self.strawberryPeriod = 1; - [self.presimport acquireExamplesHLOfReflectionAboutCid:self.toUid type:self.type page:self.strawberryPeriod]; - return; - } - - self.presentPeriod = 1; - [self.presimport acquireExamplesHLOfReflectionAboutCid:self.toUid type:self.type page:self.presentPeriod]; -} - -- (void)footerRenovtowardseh { - if (self.hasNoFurthaerBWSttawberryAtoloudspeaker && self.type == 0) { - [self.bWSttawberryRegard.tableView.mj_footer endRefreshing]; - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Monents_Recommend_View_Controller_0")]; - return; - } - if(self.hasNoFurthaerPresentAtoloudspeaker && self.type == 1){ - [self.presentRegard.tableView.mj_footer endRefreshing]; - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Monents_Recommend_View_Controller_0")]; - return; - } - if(self.type == 0){ - self.strawberryPeriod++; - [self.presimport acquireExamplesHLOfReflectionAboutCid:self.toUid type:self.type page:self.strawberryPeriod]; - return; - } - self.presentPeriod++; - [self.presimport acquireExamplesHLOfReflectionAboutCid:self.toUid type:self.type page:self.presentPeriod]; -} -#pragma mark- 检查是否有转赠权限 - --(void)examineHaveGivePreconditionion{ - - ClientDisposition *config = [ClientDisposition partowardsiciptowardsionDisposition]; - NSArray *uidList = config.dispositionAbstract.giveDiamondErbanNoList; - for (id uid in uidList) { - NSString *acquireCid = [uid stringValue]; - if([acquireCid isEqualToString:@(self.userInfo.erbanNo).stringValue]){ - self.isHaveGiveBWSttawberry = YES; - break; - } - } - for (id uid in config.dispositionAbstract.giveGiftErbanNoList) { - NSString *acquireCid = [uid stringValue]; - if([acquireCid isEqualToString:@(self.userInfo.erbanNo).stringValue]){ - self.isHaveGivePresent = YES; - break; - } - } - if(self.userInfo.userLevelVo.experLevelSeq >= config.dispositionAbstract.giveDiamondExperLevel){ - self.isHaveGiveBWSttawberry = YES; - } - if(self.userInfo.userLevelVo.experLevelSeq >= config.dispositionAbstract.giveGiftExperLevel){ - - self.isHaveGivePresent = YES; - } - -} -#pragma mark - JXCategoryViewDelegate -- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { - return self.titles.count; -} - -- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { - if (index == 0) { - self.type = 0; - return self.bWSttawberryRegard; - } else { - self.type = 1; - if(self.presentRegard.listData.count == 0){ - [self.presimport acquireExamplesHLOfReflectionAboutCid:self.toUid type:1 page:self.presentPeriod]; - } - return self.presentRegard; - } -} - -#pragma mark - 懒加载 -- (JXCategoryTitleView *)titleView { - if (!_titleView) { - _titleView = [[JXCategoryTitleView alloc] init]; - _titleView.delegate = self; - _titleView.titles = self.titles; - _titleView.backgroundColor = [UIColor clearColor]; - _titleView.titleColor = UIColorFromRGB(0x6D6B89); - _titleView.titleSelectedColor = UIColorFromRGB(0x1F1A4E); - _titleView.titleFont = [UIFont systemFontOfSize:kGetScaleWidth(15) weight:UIFontWeightMedium]; - _titleView.titleSelectedFont = [UIFont systemFontOfSize:kGetScaleWidth(15) weight:UIFontWeightMedium]; - _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; - _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; - _titleView.defaultSelectedIndex = 0; - _titleView.cellSpacing = 20; - _titleView.cellWidthIncrement = 5; - _titleView.cellWidth = 60; - _titleView.listContainer = self.containerView; - - JXCategoryIndicatorImageView *burlywoodRegard = [[JXCategoryIndicatorImageView alloc] init]; - burlywoodRegard.indicatorImageViewSize = CGSizeMake(16, 3); - burlywoodRegard.verticalMargin = -1; - burlywoodRegard.indicatorImageView.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityMiddlePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(15, 3)]; - burlywoodRegard.indicatorImageView.layer.masksToBounds = YES; - burlywoodRegard.indicatorImageView.layer.cornerRadius = 1.5; - _titleView.indicators = @[burlywoodRegard]; - } - return _titleView; -} - -- (JXCategoryListContainerView *)containerView { - if (!_containerView) { - _containerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; - _containerView.defaultSelectedIndex = 0; - [_containerView.scrollView.panGestureRecognizer requireGestureRecognizerToFail:self.navigationController.interactivePopGestureRecognizer]; - - } - return _containerView; -} - -- (NSArray *)titles { - if (!_titles) { - _titles = @[YMLocalizedString(@"YUMI_MineGiveDiamondDetailsVC1"), YMLocalizedString(@"YUMI_MineGiveDiamondDetailsVC2")]; - } - return _titles; -} --(YUMIManeGiveDiamondSpecificsRegard *)bWSttawberryRegard{ - if (!_bWSttawberryRegard){ - _bWSttawberryRegard = [[YUMIManeGiveDiamondSpecificsRegard alloc]initWithFrame:CGRectZero]; - } - return _bWSttawberryRegard; -} --(YUMIManeGiveDiamondSpecificsRegard *)presentRegard{ - if (!_presentRegard){ - _presentRegard = [[YUMIManeGiveDiamondSpecificsRegard alloc]initWithFrame:CGRectZero]; - } - return _presentRegard; -} -@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/YUMIManeGiveDiamondVC.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/YUMIManeGiveDiamondVC.h deleted file mode 100644 index ed37c1d0..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/YUMIManeGiveDiamondVC.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YUMIManeGiveDiamondVC.h -// YuMi -// -// Created by YuMi on 2022/10/17. -// - -#import -#import "MvpRegardGovernancer.h" -#import "ConsumerAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeGiveDiamondVC : MvpRegardGovernancer -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/YUMIManeGiveDiamondVC.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/YUMIManeGiveDiamondVC.m deleted file mode 100644 index e43896b7..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/YUMIManeGiveDiamondVC.m +++ /dev/null @@ -1,195 +0,0 @@ -// -// YUMIManeGiveDiamondVC.m -// YuMi -// -// Created by YuMi on 2022/10/17. -// - -#import "YUMIManeGiveDiamondVC.h" - -#import "YUMIManeGiveDiamondHuntforRegard.h" -#import "YUMIManeGiveDiamondElement.h" -#import "YUMIManeAssistantDispossessTabulationRegardElement.h" -#import "YUMIManeChooseGiveDiamondVC.h" -#import "ResidenceHuntforConsequentMatrix.h" -#import "YUMIManeGiveDiamondMatrix.h" -#import "YUMIManeGiveDiamondHuntforMatrix.h" -#import "YUMIManeGiveDiamondSpecificsVC.h" - -#import "YUMIManeGiveDiamondExternalizer.h" - -#import "FBCManeGiveDiamondCeremony.h" -#import "FBCResidenceHuntforCeremony.h" -#import "DJDKMIMOMColor.h" - -@interface YUMIManeGiveDiamondVC () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) YUMIManeGiveDiamondHuntforRegard *huntforRegard; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,strong) UIView *intelligenceRegard; -@property (nonatomic,copy) NSString *text; -@property (nonatomic,strong) UILabel *coupleRegard; -@end - -@implementation YUMIManeGiveDiamondVC -- (YUMIManeGiveDiamondExternalizer *)producePresimport { - return [[YUMIManeGiveDiamondExternalizer alloc] init]; -} -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self.presimport acquireGiveDiamondReflection]; -} -- (void)initSubViews { - self.view.backgroundColor = [UIColor whiteColor]; - self.title = YMLocalizedString(@"YUMI_MineGiveDiamondVC0"); - [self.view addSubview:self.huntforRegard]; - [self.view addSubview:self.tableView]; - [self.view addSubview:self.coupleRegard]; - -} - -- (void)initChildLyRestrictions { - [self.huntforRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.left.right.equalTo(self.view); - make.height.mas_equalTo(kGetScaleWidth(32)); - }]; - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.bottom.mas_equalTo(-kGetScaleWidth(148)); - make.top.mas_equalTo(kGetScaleWidth(32)); - }]; - [self.coupleRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(kGetScaleWidth(14)); - make.centerX.equalTo(self.view); - make.bottom.mas_equalTo(-kGetScaleWidth(73)); - }]; -} -#pragma mark -FBCManeChooseGiveDiamondVCRepresendtation -- (void)yumiManeConcludeGiveDiamondVewCAccomplishAboutMtowardsrix:(YUMIManeGiveDiamondMatrix *)model{ - if(model != nil){ - if(self.datasource.count != 0){ - NSMutableArray *objList = [NSMutableArray array]; - for (YUMIManeGiveDiamondMatrix *obj in self.datasource) { - if(![obj.targetErbanNo isEqualToString:model.targetErbanNo]){ - [objList addObject:obj]; - } - } - [self.datasource removeAllObjects]; - [self.datasource addObject:model]; - [self.datasource addObjectsFromArray:objList]; - }else{ - [self.datasource addObject:model]; - } - [self.tableView reloadData]; - } -} -#pragma mark - UITableViewDelegate - --(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ - return self.datasource.count > 0 ? kGetScaleWidth(70) : self.tableView.frame.size.height; - -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ - return self.datasource.count > 0 ? self.datasource.count : 1; -} --(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ - if(self.datasource.count > 0){ - YUMIManeGiveDiamondElement *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeGiveDiamondElement class]) forIndexPath:indexPath]; - cell.giveBWSttawberryMatrix = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; - } - YUMIManeAssistantDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeAssistantDispossessTabulationRegardElement class])forIndexPath:indexPath] ; - - cell.emptyTitle = YMLocalizedString(@"YUMI_MineGiveDiamondVC3"); - return cell; - -} -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ - if(self.datasource.count < indexPath.row)return; - YUMIManeGiveDiamondSpecificsVC *vc = [[YUMIManeGiveDiamondSpecificsVC alloc]init]; - vc.userInfo = self.userInfo; - YUMIManeGiveDiamondMatrix *model = self.datasource[indexPath.row]; - vc.toUid = model.targetUid; - [self.navigationController pushViewController:vc animated:YES]; -} -#pragma mark - FBCManeGiveDiamondCeremony --(void)acquireGiveDiamondSttowardsementAccomplishment:(NSArray *)array{ - self.datasource = [NSMutableArray arrayWithArray:array]; - [self.tableView reloadData]; -} -#pragma mark - FBCResidenceHuntforCeremony - --(void)huntforGivePeopleWihtMtowardsrix:(YUMIManeGiveDiamondHuntforMatrix *)model{ - [self brakeHUD]; - if(model != nil){ - YUMIManeGiveDiamondMatrix *giveModle = [YUMIManeGiveDiamondMatrix new]; - giveModle.targetUid = model.uid; - giveModle.targetErbanNo = model.erbanNo; - giveModle.targetNick = model.nick; - giveModle.targetAvatar = model.avatar; - YUMIManeChooseGiveDiamondVC *vc = [YUMIManeChooseGiveDiamondVC new]; - vc.giveBWSttawberryMatrix = giveModle; - vc.delegate = self; - vc.userInfo = self.userInfo; - [self.navigationController pushViewController:vc animated:YES]; - } -} - - --(void)huntforConcludeAboutEssay:(NSString *)text{ - if(text.length == 0){ - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineGiveDiamondSearchView1")]; - return; - } - self.text = text; - [self EvidenceChambering]; - [self.presimport huntforGivePeopleAbout:text]; -} -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.showsVerticalScrollIndicator = NO; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - _tableView.tableHeaderView = self.intelligenceRegard; - [_tableView registerClass:[YUMIManeGiveDiamondElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeGiveDiamondElement class])]; - [_tableView registerClass:[YUMIManeAssistantDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeAssistantDispossessTabulationRegardElement class])]; - } - return _tableView; -} -- (YUMIManeGiveDiamondHuntforRegard *)huntforRegard{ - if (!_huntforRegard){ - _huntforRegard = [[YUMIManeGiveDiamondHuntforRegard alloc]initWithFrame:CGRectZero]; - _huntforRegard.delegate = self; - } - return _huntforRegard; -} --(UIView *)intelligenceRegard{ - if (!_intelligenceRegard){ - _intelligenceRegard = [[UIView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, kGetScaleWidth(64))]; - UILabel *titleView = [[UILabel alloc]initWithFrame:CGRectMake(kGetScaleWidth(15), kGetScaleWidth(25), KScreenWidth - kGetScaleWidth(30), kGetScaleWidth(19))]; - titleView.text = YMLocalizedString(@"YUMI_MineGiveDiamondVC1"); - titleView.font = [UIFont systemFontOfSize:kGetScaleWidth(16) weight:UIFontWeightMedium]; - titleView.textColor = [DJDKMIMOMColor mainEssayPrettify]; - [_intelligenceRegard addSubview:titleView]; - } - return _intelligenceRegard; -} --(UILabel *)coupleRegard{ - if (!_coupleRegard){ - _coupleRegard = [UILabel new]; - _coupleRegard.textColor = [DJDKMIMOMColor prohibitionBtutonEssayPrettify]; - _coupleRegard.font = [UIFont systemFontOfSize:kGetScaleWidth(12) weight:UIFontWeightRegular]; - _coupleRegard.text = YMLocalizedString(@"YUMI_MineGiveDiamondVC2"); - } - return _coupleRegard; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/YUMIRevenueReflectionGoldSpecificsIntelligenceRegard.h b/YuMi/Modules/YMMine/View/GiveDiamond/View/YUMIRevenueReflectionGoldSpecificsIntelligenceRegard.h deleted file mode 100644 index b6b3660c..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/YUMIRevenueReflectionGoldSpecificsIntelligenceRegard.h +++ /dev/null @@ -1,52 +0,0 @@ -// -// YUMIRevenueReflectionGoldSpecificsIntelligenceRegard.h -// YuMi -// -// Created by YuMi on 2022/11/24. -// - -#import -#import "YUMIRevenueReflectionGoldSpecificsMatrix.h" - -typedef enum : NSUInteger { - IncomeRecordGold_Diamond, - IncomeRecordGold_Gold, -} IncomeRecordGoldSortingType; - -@protocol FBCIncomeRecordGoldDetailsIntelligenceRegardRepresendtation - --(void)concludeGoldTangerineTelling:(IncomeRecordGoldSortingType)type isAscending:(BOOL)isAscending; - -@end -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIRevenueReflectionGoldSpecificsIntelligenceRegard : UIView -@property (nonatomic,strong) YUMIRevenueReflectionGoldSpecificsMatrix *specificMatrix; -@property (nonatomic,weak) id delegate; - --(void)replacementArrow; - - - -@end - - - - - -@interface YUMIRevenueReflectionGoldSpecificsIntelligenceProvisionRegard : UIView -@property (nonatomic,copy) NSString *title; -@property (nonatomic,strong,readonly) UIButton *ticktackBtuton; -@property (nonatomic,strong,readonly) UIButton *upwardsBtuton; -@property (nonatomic,strong,readonly) UIButton *pubescenceBtuton; -@end - - - - -@interface YUMIRevenueReflectionGoldSpecificsNumRegard : UIView -@property (nonatomic,copy) NSString *title; -@property (nonatomic,copy) NSString *number; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/GiveDiamond/View/YUMIRevenueReflectionGoldSpecificsIntelligenceRegard.m b/YuMi/Modules/YMMine/View/GiveDiamond/View/YUMIRevenueReflectionGoldSpecificsIntelligenceRegard.m deleted file mode 100644 index bbb41df6..00000000 --- a/YuMi/Modules/YMMine/View/GiveDiamond/View/YUMIRevenueReflectionGoldSpecificsIntelligenceRegard.m +++ /dev/null @@ -1,507 +0,0 @@ -// -// YUMIRevenueReflectionGoldSpecificsIntelligenceRegard.m -// YuMi -// -// Created by YuMi on 2022/11/24. -// - -#import "YUMIRevenueReflectionGoldSpecificsIntelligenceRegard.h" -#import "NSString+Utils.h" -@interface YUMIRevenueReflectionGoldSpecificsIntelligenceRegard() -@property (nonatomic,strong) UIImageView *backgroundIndicateRegard; -@property (nonatomic,strong) UILabel *titleView; -@property (nonatomic,strong) YUMIRevenueReflectionGoldSpecificsNumRegard *baseFigureRegard; -@property (nonatomic,strong) YUMIRevenueReflectionGoldSpecificsNumRegard *guildFigureRegard; -@property (nonatomic,strong) YUMIRevenueReflectionGoldSpecificsNumRegard *digitalGoldRegard; -@property (nonatomic,strong) YUMIRevenueReflectionGoldSpecificsNumRegard * digitalExdiversificationRegard; -@property (nonatomic,strong) UILabel *equalSignRegard; -@property (nonatomic,strong) UILabel *accelerateRegard; -@property (nonatomic,strong) UILabel *minusSignRegard; -@property (nonatomic,strong) UIView *backgroundProvisionRegard; -@property (nonatomic,strong) UILabel *chamberRegard; -@property (nonatomic,strong) UILabel *componentRegard; -@property (nonatomic,strong) YUMIRevenueReflectionGoldSpecificsIntelligenceProvisionRegard *bWSttawberryRegard; -@property (nonatomic,strong) UILabel *exdiversificationGoldRegard; -@property (nonatomic,strong) YUMIRevenueReflectionGoldSpecificsIntelligenceProvisionRegard *settlementRegard; - -@end -@implementation YUMIRevenueReflectionGoldSpecificsIntelligenceRegard - --(instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if(self){ - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backgroundIndicateRegard]; - [self.backgroundIndicateRegard addSubview:self.titleView]; - [self.backgroundIndicateRegard addSubview:self.baseFigureRegard]; - [self.backgroundIndicateRegard addSubview:self.guildFigureRegard]; - [self.backgroundIndicateRegard addSubview:self.digitalGoldRegard]; - [self.backgroundIndicateRegard addSubview:self.digitalExdiversificationRegard]; - [self.backgroundIndicateRegard addSubview:self.equalSignRegard]; - [self.backgroundIndicateRegard addSubview:self.accelerateRegard]; - [self.backgroundIndicateRegard addSubview:self.minusSignRegard]; - - - [self addSubview:self.backgroundProvisionRegard]; - [self.backgroundProvisionRegard addSubview:self.chamberRegard]; - [self.backgroundProvisionRegard addSubview:self.componentRegard]; - [self.backgroundProvisionRegard addSubview:self.bWSttawberryRegard]; - [self.backgroundProvisionRegard addSubview:self.exdiversificationGoldRegard]; - [self.backgroundProvisionRegard addSubview:self.settlementRegard]; - -} -- (void)initChildLyRestrictions { - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.equalTo(self).inset(kGetScaleWidth(15)); - make.height.mas_equalTo(kGetScaleWidth(90)); - make.top.mas_equalTo(kGetScaleWidth(0)); - }]; - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(14)); - make.top.mas_equalTo(kGetScaleWidth(12)); - make.height.mas_equalTo(kGetScaleWidth(21)); - }]; - - [self.baseFigureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(14)); - make.height.mas_equalTo(kGetScaleWidth(32)); - make.top.mas_equalTo(kGetScaleWidth(41)); - make.width.mas_greaterThanOrEqualTo(kGetScaleWidth(70)); - }]; - - [self.equalSignRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.equalTo(self.baseFigureRegard.mas_right).mas_offset(kGetScaleWidth(4)); - make.top.equalTo(self.baseFigureRegard); - make.height.width.mas_equalTo(kGetScaleWidth(14)); - }]; - - [self.guildFigureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.equalTo(self.equalSignRegard.mas_right).mas_offset(kGetScaleWidth(4)); - make.height.top.equalTo(self.baseFigureRegard); - make.width.mas_greaterThanOrEqualTo(kGetScaleWidth(40)); - - }]; - [self.accelerateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.top.equalTo(self.equalSignRegard); - make.left.equalTo(self.guildFigureRegard.mas_right).mas_offset(kGetScaleWidth(10)); - }]; - [self.digitalGoldRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.top.equalTo(self.baseFigureRegard); - make.width.mas_greaterThanOrEqualTo(kGetScaleWidth(50)); - make.left.equalTo(self.accelerateRegard.mas_right).mas_offset(kGetScaleWidth(10)); - - }]; - - [self.minusSignRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.top.equalTo(self.equalSignRegard); - make.left.equalTo(self.digitalGoldRegard.mas_right).mas_offset(kGetScaleWidth(10)); - }]; - - [self.digitalExdiversificationRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.top.equalTo(self.baseFigureRegard); - make.width.mas_greaterThanOrEqualTo(kGetScaleWidth(50)); - make.left.equalTo(self.minusSignRegard.mas_right).mas_offset(kGetScaleWidth(10)); - make.right.mas_equalTo(-kGetScaleWidth(14)); - }]; - - - [self.backgroundProvisionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.equalTo(self); - make.height.mas_equalTo(kGetScaleWidth(47)); - make.left.right.equalTo(self).inset(kGetScaleWidth(0)); - }]; - [self.chamberRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(kGetScaleWidth(64)); - make.left.mas_equalTo(kGetScaleWidth(0)); - make.height.mas_equalTo(kGetScaleWidth(17)); - make.centerY.equalTo(self.backgroundProvisionRegard); - }]; - [self.componentRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.equalTo(self.chamberRegard.mas_right); - make.centerY.width.height.equalTo(self.chamberRegard); - }]; - CGFloat width = kGetScaleWidth(247/3); - [self.settlementRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(width); - make.right.equalTo(self.backgroundProvisionRegard); - make.centerY.height.equalTo(self.chamberRegard); - }]; - [self.exdiversificationGoldRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.width.height.equalTo(self.settlementRegard); - make.right.equalTo(self.settlementRegard.mas_left); - }]; - [self.bWSttawberryRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.width.height.equalTo(self.exdiversificationGoldRegard); - make.right.equalTo(self.exdiversificationGoldRegard.mas_left); - }]; - - - -} --(void)setSpecificMatrix:(YUMIRevenueReflectionGoldSpecificsMatrix *)specificMatrix{ - _specificMatrix = specificMatrix; - _baseFigureRegard.number = [NSString acquireDealFigurewithsttri:_specificMatrix.totalRemainGolds]; - _guildFigureRegard.number = [NSString acquireDealFigurewithsttri:_specificMatrix.totalEarnGolds]; - _digitalGoldRegard.number = [NSString acquireDealFigurewithsttri:_specificMatrix.totalGiftGolds]; - _digitalExdiversificationRegard.number = [NSString acquireDealFigurewithsttri:_specificMatrix.totalExchangeGolds]; -} --(void)replacementArrow{ - self.bWSttawberryRegard.upwardsBtuton.selected = YES; - self.bWSttawberryRegard.pubescenceBtuton.selected = NO; - self.settlementRegard.upwardsBtuton.selected = YES; - self.settlementRegard.pubescenceBtuton.selected = NO; -} --(void)clickDiamondPerformance{ - if(self.bWSttawberryRegard.upwardsBtuton.selected == YES){ - self.bWSttawberryRegard.upwardsBtuton.selected = NO; - self.bWSttawberryRegard.pubescenceBtuton.selected = YES; - if(self.delegate && [self.delegate respondsToSelector:@selector(concludeGoldTangerineTelling:isAscending:)]){ - [self.delegate concludeGoldTangerineTelling:IncomeRecordGold_Diamond isAscending:NO]; - } - return; - } - if(self.delegate && [self.delegate respondsToSelector:@selector(concludeGoldTangerineTelling:isAscending:)]){ - [self.delegate concludeGoldTangerineTelling:IncomeRecordGold_Diamond isAscending:YES]; - } - - self.bWSttawberryRegard.upwardsBtuton.selected = YES; - self.bWSttawberryRegard.pubescenceBtuton.selected = NO; -} - --(void)clickGoldPerformance{ - if(self.settlementRegard.upwardsBtuton.selected == YES){ - self.settlementRegard.upwardsBtuton.selected = NO; - self.settlementRegard.pubescenceBtuton.selected = YES; - if(self.delegate && [self.delegate respondsToSelector:@selector(concludeGoldTangerineTelling:isAscending:)]){ - [self.delegate concludeGoldTangerineTelling:IncomeRecordGold_Gold isAscending:NO]; - } - return; - } - if(self.delegate && [self.delegate respondsToSelector:@selector(concludeGoldTangerineTelling:isAscending:)]){ - [self.delegate concludeGoldTangerineTelling:IncomeRecordGold_Gold isAscending:YES]; - } - - self.settlementRegard.upwardsBtuton.selected = YES; - self.settlementRegard.pubescenceBtuton.selected = NO; -} -#pragma mark -懒加载 -- (UIImageView *)backgroundIndicateRegard{ - if (!_backgroundIndicateRegard){ - _backgroundIndicateRegard = [UIImageView new]; - _backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_gold_details_head_background"]; - _backgroundIndicateRegard.userInteractionEnabled = YES; - } - return _backgroundIndicateRegard; -} - -- (UILabel *)titleView { - if (!_titleView) { - _titleView = [[UILabel alloc] init]; - _titleView.font = [UIFont systemFontOfSize:15 weight:UIFontWeightSemibold]; - _titleView.textColor = UIColorFromRGB(0x572714); - _titleView.text = YMLocalizedString(@"YUMI_Income_Record_Gold_Details_Head_View_0"); - _titleView.textAlignment = NSTextAlignmentCenter; - } - return _titleView; -} - - --(UIView *)backgroundProvisionRegard{ - if (!_backgroundProvisionRegard){ - _backgroundProvisionRegard = [UIView new]; - _backgroundProvisionRegard.backgroundColor = UIColorFromRGB(0xF0F5F6); - } - return _backgroundProvisionRegard; -} - -- (UILabel *)chamberRegard { - if (!_chamberRegard) { - _chamberRegard = [[UILabel alloc] init]; - _chamberRegard.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _chamberRegard.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _chamberRegard.text = YMLocalizedString(@"YUMI_Income_Record_Gold_Details_Head_View_2"); - _chamberRegard.textAlignment = NSTextAlignmentCenter; - } - return _chamberRegard; -} - -- (UILabel *)componentRegard { - if (!_componentRegard) { - _componentRegard = [[UILabel alloc] init]; - _componentRegard.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _componentRegard.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _componentRegard.textAlignment = NSTextAlignmentCenter; - _componentRegard.text = YMLocalizedString(@"YUMI_Income_Record_Gold_Details_Head_View_1"); - } - return _componentRegard; -} - --(YUMIRevenueReflectionGoldSpecificsIntelligenceProvisionRegard *)bWSttawberryRegard{ - if (!_bWSttawberryRegard){ - _bWSttawberryRegard = [[YUMIRevenueReflectionGoldSpecificsIntelligenceProvisionRegard alloc]initWithFrame:CGRectZero]; - _bWSttawberryRegard.title = YMLocalizedString(@"YUMI_Income_Record_Gold_Details_Head_View_5"); - [_bWSttawberryRegard.ticktackBtuton addTarget:self action:@selector(clickDiamondPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _bWSttawberryRegard; -} - -- (UILabel *)exdiversificationGoldRegard { - if (!_exdiversificationGoldRegard) { - _exdiversificationGoldRegard = [[UILabel alloc] init]; - _exdiversificationGoldRegard.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _exdiversificationGoldRegard.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _exdiversificationGoldRegard.textAlignment = NSTextAlignmentCenter; - _exdiversificationGoldRegard.text = YMLocalizedString(@"YUMI_Income_Record_Gold_Details_Head_View_3"); - } - return _exdiversificationGoldRegard; -} - --(YUMIRevenueReflectionGoldSpecificsIntelligenceProvisionRegard *)settlementRegard{ - if (!_settlementRegard){ - _settlementRegard = [[YUMIRevenueReflectionGoldSpecificsIntelligenceProvisionRegard alloc]initWithFrame:CGRectZero]; - _settlementRegard.title = YMLocalizedString(@"YUMI_Income_Record_Gold_Details_Head_View_4"); - [_settlementRegard.ticktackBtuton addTarget:self action:@selector(clickGoldPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _settlementRegard; -} - -- (YUMIRevenueReflectionGoldSpecificsNumRegard *)baseFigureRegard{ - if (!_baseFigureRegard){ - _baseFigureRegard = [[YUMIRevenueReflectionGoldSpecificsNumRegard alloc]initWithFrame:CGRectZero]; - _baseFigureRegard.title = YMLocalizedString(@"YUMI_Income_Record_Gold_Details_Head_View_6"); - _baseFigureRegard.number = @"0"; - } - return _baseFigureRegard; -} - -- (YUMIRevenueReflectionGoldSpecificsNumRegard *)guildFigureRegard{ - if (!_guildFigureRegard){ - _guildFigureRegard = [[YUMIRevenueReflectionGoldSpecificsNumRegard alloc]initWithFrame:CGRectZero]; - _guildFigureRegard.title = YMLocalizedString(@"YUMI_Income_Record_Gold_Details_Head_View_7"); - _guildFigureRegard.number = @"0"; - } - return _guildFigureRegard; -} --(YUMIRevenueReflectionGoldSpecificsNumRegard *)digitalGoldRegard{ - if (!_digitalGoldRegard){ - _digitalGoldRegard = [[YUMIRevenueReflectionGoldSpecificsNumRegard alloc]initWithFrame:CGRectZero]; - _digitalGoldRegard.title = YMLocalizedString(@"YUMI_Income_Record_Gold_Details_Head_View_8"); - _digitalGoldRegard.number = @"0"; - } - return _digitalGoldRegard; -} -- (YUMIRevenueReflectionGoldSpecificsNumRegard *)digitalExdiversificationRegard{ - if (!_digitalExdiversificationRegard){ - _digitalExdiversificationRegard = [[YUMIRevenueReflectionGoldSpecificsNumRegard alloc]initWithFrame:CGRectZero]; - _digitalExdiversificationRegard.title = YMLocalizedString(@"YUMI_Income_Record_Gold_Details_Head_View_9"); - _digitalExdiversificationRegard.number = @"0"; - } - return _digitalExdiversificationRegard; -} - - -- (UILabel *)equalSignRegard { - if (!_equalSignRegard) { - _equalSignRegard = [[UILabel alloc] init]; - _equalSignRegard.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - _equalSignRegard.textColor = UIColorFromRGB(0x582815); - _equalSignRegard.text = @"="; - _equalSignRegard.textAlignment = NSTextAlignmentCenter; - } - return _equalSignRegard; -} - - -- (UILabel *)accelerateRegard { - if (!_accelerateRegard) { - _accelerateRegard = [[UILabel alloc] init]; - _accelerateRegard.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - _accelerateRegard.textColor = UIColorFromRGB(0x582815); - _accelerateRegard.text = @"+"; - _accelerateRegard.textAlignment = NSTextAlignmentCenter; - } - return _accelerateRegard; -} - - -- (UILabel *)minusSignRegard { - if (!_minusSignRegard) { - _minusSignRegard = [[UILabel alloc] init]; - _minusSignRegard.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - _minusSignRegard.textColor = UIColorFromRGB(0x582815); - _minusSignRegard.text = @"-"; - _minusSignRegard.textAlignment = NSTextAlignmentCenter; - } - return _minusSignRegard; -} - -@end - - - - -@interface YUMIRevenueReflectionGoldSpecificsIntelligenceProvisionRegard() -@property (nonatomic,strong) UILabel *titleView; -@property (nonatomic,strong) UIButton *upwardsBtuton; -@property (nonatomic,strong) UIButton *pubescenceBtuton; -@property (nonatomic,strong) UIButton *ticktackBtuton; -@end - -@implementation YUMIRevenueReflectionGoldSpecificsIntelligenceProvisionRegard --(instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if(self){ - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.titleView]; - [self addSubview:self.upwardsBtuton]; - [self addSubview:self.pubescenceBtuton]; - [self addSubview:self.ticktackBtuton]; -} -- (void)initChildLyRestrictions { - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.equalTo(self.mas_centerX).mas_offset(-kGetScaleWidth(5.5)); - make.centerY.equalTo(self); - make.height.mas_equalTo(kGetScaleWidth(17)); - }]; - [self.pubescenceBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.equalTo(self.titleView.mas_right).mas_offset(kGetScaleWidth(3)); - make.top.equalTo(self.titleView.mas_top).mas_offset(kGetScaleWidth(4)); - make.width.mas_equalTo(kGetScaleWidth(8)); - make.height.mas_equalTo(kGetScaleWidth(4)); - }]; - [self.upwardsBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.width.height.equalTo(self.pubescenceBtuton); - make.top.equalTo(self.pubescenceBtuton.mas_bottom).mas_offset(kGetScaleWidth(2)); - }]; - [self.ticktackBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self); - }]; -} - - --(void)setTitle:(NSString *)title{ - _title = title; - _titleView.text = _title; -} -#pragma mark -懒加载 - -- (UILabel *)titleView { - if (!_titleView) { - _titleView = [[UILabel alloc] init]; - _titleView.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _titleView.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _titleView.text = YMLocalizedString(@"YUMI_Income_Record_Gold_Details_Head_View_5"); - } - return _titleView; -} - -- (UIButton *)upwardsBtuton{ - if (!_upwardsBtuton){ - _upwardsBtuton = [UIButton new]; - [_upwardsBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_exchange_down_grey"] forState:UIControlStateNormal]; - [_upwardsBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_exchange_down"] forState:UIControlStateSelected]; - - _upwardsBtuton.selected = YES; - } - return _upwardsBtuton; -} -- (UIButton *)pubescenceBtuton{ - if (!_pubescenceBtuton){ - _pubescenceBtuton = [UIButton new]; - [_pubescenceBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_exchange_up_grey"] forState:UIControlStateNormal]; - [_pubescenceBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_exchange_up"] forState:UIControlStateSelected]; - - - _pubescenceBtuton.selected = NO; - } - return _pubescenceBtuton; -} -- (UIButton *)ticktackBtuton{ - if (!_ticktackBtuton){ - _ticktackBtuton = [UIButton new]; - } - return _ticktackBtuton; -} -@end - - - - - - -@interface YUMIRevenueReflectionGoldSpecificsNumRegard() - -@property (nonatomic,strong) UILabel *titleView; -@property (nonatomic,strong) UILabel *digitalRegard; - -@end - -@implementation YUMIRevenueReflectionGoldSpecificsNumRegard - --(instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if(self){ - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -- (void)setTitle:(NSString *)title{ - _title = title; - _titleView.text = _title; -} -- (void)setNumber:(NSString *)number{ - _number = number; - _digitalRegard.text = _number; -} -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.titleView]; - [self addSubview:self.digitalRegard]; -} -- (void)initChildLyRestrictions { - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.left.right.equalTo(self); - make.height.mas_equalTo(kGetScaleWidth(14)); - - }]; - [self.digitalRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.left.right.equalTo(self); - make.height.mas_equalTo(kGetScaleWidth(14)); - - }]; -} -#pragma mark -懒加载 -- (UILabel *)titleView { - if (!_titleView) { - _titleView = [[UILabel alloc] init]; - _titleView.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - _titleView.textColor = UIColorFromRGB(0x572714); - } - return _titleView; -} - -- (UILabel *)digitalRegard { - if (!_digitalRegard) { - _digitalRegard = [[UILabel alloc] init]; - _digitalRegard.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - _digitalRegard.textColor =UIColorFromRGB(0x572714); - } - return _digitalRegard; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Api/Api+Guild.h b/YuMi/Modules/YMMine/View/Guild/Api/Api+Guild.h index 04cadd8a..49417221 100644 --- a/YuMi/Modules/YMMine/View/Guild/Api/Api+Guild.h +++ b/YuMi/Modules/YMMine/View/Guild/Api/Api+Guild.h @@ -15,65 +15,201 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (Guild) -+ (void)acquireCollectiveSpecificAbstract:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; +/// 获取家族详情 +/// @param completion 完成 +/// @param uid 族长的uid ++ (void)getClanDetailInfo:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; -+ (void)acquireChamberSttowardsementInCollective:(HttpRequestHelperCompletion)completion clanId:(NSString *)clanId; +/// 获取公会中房间列表 +/// @param completion 完成 +/// @param clanId 公会的id ++ (void)getRoomListInClan:(HttpRequestHelperCompletion)completion clanId:(NSString *)clanId; -+ (void)acquireCollectiveComponentSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize; +/// 公会成员列表 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param page 当前的页数 +/// @param pageSize 每页多少个 ++ (void)getClanMemberList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize; -+ (void)acquireUnionComponentSttowardsement:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId page:(NSString *)page pageSize:(NSString *)pageSize; +/// 房间成员列表 +/// @param completion 完成 +/// @param hallId 用户的uid +/// @param page 当前的页数 +/// @param pageSize 每页多少个 ++ (void)getGuildMemberList:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId page:(NSString *)page pageSize:(NSString *)pageSize; -+ (void)huntforCollectiveComponentSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize queryStr:(NSString *)queryStr; +/// 公会成员列表搜索某人 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param page 当前的页数 +/// @param pageSize 每页多少个 +/// @param queryStr 搜索的关键字 ++ (void)searchClanMemberList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize queryStr:(NSString *)queryStr; -+ (void)refurbishUnionChamberConstitute:(HttpRequestHelperCompletion)completion hallName:(NSString *)hallName hallId:(NSString *)hallId uid:(NSString *)uid; +/// 更新房间的名称 +/// @param completion 完成 +/// @param hallName 公会的名称 +/// @param hallId 公会的id ++ (void)updateGuildRoomName:(HttpRequestHelperCompletion)completion hallName:(NSString *)hallName hallId:(NSString *)hallId uid:(NSString *)uid; -+ (void)acquireUnionChamberTowardstesttowardsion:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId uid:(NSString *)uid; +/// 获取公会房间成员权限 +/// @param completion 完成 +/// @param hallId 公会的id +/// @param uid 用户的uid ++ (void)getGuildRoomAuth:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId uid:(NSString *)uid; -+ (void)unionHuntforConsumerImplementtowardsion:(HttpRequestHelperCompletion)completion key:(NSString *)key type:(NSString *)type page:(NSString *)page pageSize:(NSString *)pageSize; +/// 搜索 +/// @param completion 完成 +/// @param key 关键字 +/// @param type 类型 1 房间 2 用户 +/// @param page 多少页 +/// @param pageSize 每页多少个 ++ (void)guildSearchUserCompletion:(HttpRequestHelperCompletion)completion key:(NSString *)key type:(NSString *)type page:(NSString *)page pageSize:(NSString *)pageSize; -+ (void)transltowardseUnionComponentImplementtowardsion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid targetUid:(NSString *)targetUid hallId:(NSString *)hallId; +/// 移除公会成员 +/// @param completion 完成 +/// @param uid uid +/// @param targetUid 移除的人的uid +/// @param hallId 公会的id ++ (void)removeGuildMemberCompletion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid targetUid:(NSString *)targetUid hallId:(NSString *)hallId; -+ (void)centiretyforComponentImplementtowardsion:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId uid:(NSString *)uid targetUid:(NSString *)targetUid; +/// 邀请用户加入公会 +/// @param completion 完成 +/// @param hallId 公会的id +/// @param uid 用户的uid +/// @param targetUid 目标用户的uid ++ (void)inviteMemberCompletion:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId uid:(NSString *)uid targetUid:(NSString *)targetUid; -+ (void)acquireUnionChamberExecutiveImplementtowardsion:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId page:(NSString *)page pageSize:(NSString *)pageSize; +/// 获取公会房间管理列表 +/// @param completion 完成 +/// @param hallId 公会的id +/// @param page 当前的页数 +/// @param pageSize 一页多少个 ++ (void)getGuildRoomManagerCompletion:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId page:(NSString *)page pageSize:(NSString *)pageSize; -+ (void)unionChamberSetExecutiveImplementtowardsion:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId uid:(NSString *)uid targetUid:(NSString *)targetUid; +/// 设置房间管理 +/// @param completion 完成 +/// @param hallId 公会的id +/// @param uid 用户的uid +/// @param targetUid 目标用户的uid ++ (void)guildRoomSetManagerCompletion:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId uid:(NSString *)uid targetUid:(NSString *)targetUid; -+ (void)unionChamberRevoctowardsionExecutiveImplementtowardsion:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId uid:(NSString *)uid targetUid:(NSString *)targetUid; +/// 取消设置房间管理 +/// @param completion 完成 +/// @param hallId 公会的id +/// @param uid 用户的uid +/// @param targetUid 目标用户的uid ++ (void)guildRoomCancelManagerCompletion:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId uid:(NSString *)uid targetUid:(NSString *)targetUid; -+ (void)unionExecutiveTowardstesttowardsionImplementtowardsion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid managerUid:(NSString *)managerUid; +/// 公会管理权限 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param managerUid 管理的uid ++ (void)guildManagerAuthCompletion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid managerUid:(NSString *)managerUid; -+ (void)setUnionExecutiveTowardstesttowardsionImplementtowardsion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid managerUid:(NSString *)managerUid hallId:(NSString *)hallId authStr:(NSString *)authStr; +/// 设置公会管理权限 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param managerUid 管理的uid +/// @param authStr 权限的字段 ++ (void)setGuildManagerAuthCompletion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid managerUid:(NSString *)managerUid hallId:(NSString *)hallId authStr:(NSString *)authStr; -+ (void)quitUnionChamber:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; +/// 退出房间 +/// @param completion 完成 +/// @param uid 自己的UID ++ (void)quitGuildRoom:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; -+ (void)componentAplictowardsionlyCorridor:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId uid:(NSString *)uid; +/// 申请加入公会房间 +/// @param completion 完成 +/// @param hallId 公会的id +/// @param uid 要加入用户的uid ++ (void)memberApplyHall:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId uid:(NSString *)uid; -+ (void)acquireCollectiveRevenueReflection:(HttpRequestHelperCompletion)completion uid:(NSString *)uid clanId:(NSString *)clanId startTime:(NSString *)startTime endTime:(NSString *)endTime; +/// 家族收入列表 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param clanId 家族的id +/// @param startTime 开始时间 +/// @param endTime 结束时间 ++ (void)getClanIncomeRecord:(HttpRequestHelperCompletion)completion uid:(NSString *)uid clanId:(NSString *)clanId startTime:(NSString *)startTime endTime:(NSString *)endTime; -+ (void)acquireUnionRevenueReflection:(HttpRequestHelperCompletion)completion uid:(NSString *)uid hallId:(NSString *)hallId startIntratemporalBWStt:(NSString *)startIntratemporalBWStt endIntratemporalBWStt:(NSString *)endIntratemporalBWStt; +/// 公会收入列表 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param hallId 家族的id +/// @param startTimeStr 开始时间 +/// @param endTimeStr 结束时间 ++ (void)getGuildIncomeRecord:(HttpRequestHelperCompletion)completion uid:(NSString *)uid hallId:(NSString *)hallId startTimeStr:(NSString *)startTimeStr endTimeStr:(NSString *)endTimeStr; -+ (void)acquireCollectiveSingleChamberRevenueReflection:(HttpRequestHelperCompletion)completion uid:(NSString *)uid clanId:(NSString *)clanId startTime:(NSString *)startTime endTime:(NSString *)endTime; +/// 家族个播收入列表 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param clanId 家族的id +/// @param startTime 开始时间 +/// @param endTime 结束时间 ++ (void)getClanSingleRoomIncomeRecord:(HttpRequestHelperCompletion)completion uid:(NSString *)uid clanId:(NSString *)clanId startTime:(NSString *)startTime endTime:(NSString *)endTime; -+ (void)acquireCorridorSingleChamberRevenueReflection:(HttpRequestHelperCompletion)completion uid:(NSString *)uid clanId:(NSString *)hallId startTime:(NSString *)startTime endTime:(NSString *)endTime; +/// 公会个播收入列表 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param hallId 公会的id +/// @param startTime 开始时间 +/// @param endTime 结束时间 ++ (void)getHallSingleRoomIncomeRecord:(HttpRequestHelperCompletion)completion uid:(NSString *)uid clanId:(NSString *)hallId startTime:(NSString *)startTime endTime:(NSString *)endTime; -+ (void)acquireCorridorRevenueSpecific:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId memberId:(NSString *)memberId uid:(NSString *)uid startIntratemporalBWStt:(NSString *)startIntratemporalBWStt endIntratemporalBWStt:(NSString *)endIntratemporalBWStt; +/// 收入明细 +/// @param completion 完成 +/// @param hallId 公会的ID +/// @param memberId 查询用户的uid +/// @param uid 用户的id +/// @param startTimeStr 开始时间 +/// @param endTimeStr 结束时间 ++ (void)getHallIncomeDetail:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId memberId:(NSString *)memberId uid:(NSString *)uid startTimeStr:(NSString *)startTimeStr endTimeStr:(NSString *)endTimeStr; #pragma mark - 超管 -+ (void)acquireCorridorSenstowardsionalManagementExecutiveChamberSttowardsement:(HttpRequestHelperCompletion)completion clanId:(NSString *)clanId uid:(NSString *)uid; +/// 获取公会超管管理房间列表 +/// @param completion 完成 +/// @param clanId 公会的id +/// @param uid 用户的uid ++ (void)getHallSuperAdminManagerRoomList:(HttpRequestHelperCompletion)completion clanId:(NSString *)clanId uid:(NSString *)uid; -+ (void)setSenstowardsionalManagementExecutiveChamber:(HttpRequestHelperCompletion)completion roomUids:(NSString *)roomUids uid:(NSString *)uid; +/// 超管管理公会房间 +/// @param completion 完成 +/// @param roomUids 管理的房间的uid +/// @param uid 用户的uid ++ (void)setSuperAdminManagerRoom:(HttpRequestHelperCompletion)completion roomUids:(NSString *)roomUids uid:(NSString *)uid; -+ (void)acquireCollectiveSenstowardsionalManagementSttowardsement:(HttpRequestHelperCompletion)completion clanId:(NSString *)clanId; +/// 获取家族超管列表 +/// @param completion 完成 +/// @param clanId 家族de id ++ (void)getClanSuperAdminList:(HttpRequestHelperCompletion)completion clanId:(NSString *)clanId; -+ (void)collectiveTransltowardseSenstowardsionalManagement:(HttpRequestHelperCompletion)completion targetUid:(NSString *)targetUid; +/// 移除超管 +/// @param completion 完成 +/// @param targetUid 移除的人的uid ++ (void)clanRemoveSuperAdmin:(HttpRequestHelperCompletion)completion targetUid:(NSString *)targetUid; -+ (void)huntforUnionSenstowardsionalManagement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid erbanNo:(NSString *)erbanNo; +/// 添加公会超管 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param erbanNo 搜索的id ++ (void)searchGuildSuperAdmin:(HttpRequestHelperCompletion)completion uid:(NSString *)uid erbanNo:(NSString *)erbanNo; -+(void)acquireCollectiveChamberGoldsSttowardsement:(HttpRequestHelperCompletion)completion startTime:(NSString *)startTime endTime:(NSString *)endTime; -+(void)acquireCollectiveChamberComponentTowardstesttowardsionoritySttowardsement:(HttpRequestHelperCompletion)completion; +/// 房主金币明细 +/// @param completion 完成 +/// @param startTime 开始时间 +/// @param endTime 结束时间 ++(void)getClanRoomGoldsList:(HttpRequestHelperCompletion)completion startTime:(NSString *)startTime endTime:(NSString *)endTime; +///房主获取兑换权限列表 ++(void)getClanRoomMemberAuthorityList:(HttpRequestHelperCompletion)completion; -+(void)requisitionMasterDisableRrEnablecomponentExdiversifictowardsionRights:(HttpRequestHelperCompletion)completion status:(NSString *)status targetUid:(NSString *)targetUid; -+(void)demandCorridorBtutonDeclareAboutCorridorId:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId; +/// 开启或关闭兑换会员权限 +/// @param completion 完成 +/// @param status 0=关闭,1=开启 +/// @param targetUid 成员id ++(void)requestMasterDisableRrEnablememberExchangeRights:(HttpRequestHelperCompletion)completion status:(NSString *)status targetUid:(NSString *)targetUid; +///获取加入房间 ++(void)applyHallBtnStateWithHallId:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Api/Api+Guild.m b/YuMi/Modules/YMMine/View/Guild/Api/Api+Guild.m index 8db83823..1ca873cf 100644 --- a/YuMi/Modules/YMMine/View/Guild/Api/Api+Guild.m +++ b/YuMi/Modules/YMMine/View/Guild/Api/Api+Guild.m @@ -6,162 +6,264 @@ // #import "Api+Guild.h" -#import + @implementation Api (Guild) -+ (void)acquireCollectiveSpecificAbstract:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"Y2xhbi9nZXRVc2VySGFsbEFuZENsYW4="];///clan/getUserHallAndClan - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil]; +/// 获取家族详情 +/// @param completion 完成 +/// @param uid 族长的uid ++ (void)getClanDetailInfo:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { + [self makeRequest:@"clan/getUserHallAndClan" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil]; } -+ (void)acquireChamberSttowardsementInCollective:(HttpRequestHelperCompletion)completion clanId:(NSString *)clanId { - NSString * fang = [NSString stringFromBase64String:@"Y2xhbi9saXN0SGFsbA=="];///clan/listHall - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,clanId, nil]; +/// 获取公会中房间列表 +/// @param completion 完成 +/// @param clanId 公会的id ++ (void)getRoomListInClan:(HttpRequestHelperCompletion)completion clanId:(NSString *)clanId { + [self makeRequest:@"clan/listHall" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,clanId, nil]; } -+ (void)acquireCollectiveComponentSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize { - NSString * fang = [NSString stringFromBase64String:@"Y2xhbi9saXN0TWVtYmVy"];///clan/listMember - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, page, pageSize,nil]; +/// 公会成员列表 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param page 当前的页数 +/// @param pageSize 每页多少个 ++ (void)getClanMemberList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize { + [self makeRequest:@"clan/listMember" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, page, pageSize,nil]; } -+ (void)acquireUnionComponentSttowardsement:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId page:(NSString *)page pageSize:(NSString *)pageSize { - NSString * fang = [NSString stringFromBase64String:@"aGFsbC9nZXRBbGxNZW1iZXJz"];///hall/getAllMembers - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, hallId, page, pageSize,nil]; +/// 房间成员列表 +/// @param completion 完成 +/// @param hallId 用户的uid +/// @param page 当前的页数 +/// @param pageSize 每页多少个 ++ (void)getGuildMemberList:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId page:(NSString *)page pageSize:(NSString *)pageSize { + [self makeRequest:@"hall/getAllMembers" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, hallId, page, pageSize,nil]; } -+ (void)huntforCollectiveComponentSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize queryStr:(NSString *)queryStr { - NSString * fang = [NSString stringFromBase64String:@"Y2xhbi9saXN0TWVtYmVy"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, page, pageSize, queryStr,nil]; +/// 公会成员列表搜索某人 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param page 当前的页数 +/// @param pageSize 每页多少个 +/// @param queryStr 搜索的关键字 ++ (void)searchClanMemberList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize queryStr:(NSString *)queryStr { + [self makeRequest:@"clan/listMember" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, page, pageSize, queryStr,nil]; } -+ (void)refurbishUnionChamberConstitute:(HttpRequestHelperCompletion)completion hallName:(NSString *)hallName hallId:(NSString *)hallId uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"aGFsbC91cGRhdGVIYWxsTmFtZQ=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, hallName, hallId, uid, nil]; +/// 更新房间的名称 +/// @param completion 完成 +/// @param hallName 公会的名称 +/// @param hallId 公会的id ++ (void)updateGuildRoomName:(HttpRequestHelperCompletion)completion hallName:(NSString *)hallName hallId:(NSString *)hallId uid:(NSString *)uid { + [self makeRequest:@"hall/updateHallName" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, hallName, hallId, uid, nil]; } -+ (void)acquireUnionChamberTowardstesttowardsion:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"aGFsbEF1dGgvZ2V0SGFsbEF1dGhz"];/// - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, hallId, uid, nil]; +/// 获取公会房间成员权限 +/// @param completion 完成 +/// @param hallId 公会的id +/// @param uid 用户的uid ++ (void)getGuildRoomAuth:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId uid:(NSString *)uid { + [self makeRequest:@"hallAuth/getHallAuths" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, hallId, uid, nil]; } -+ (void)unionHuntforConsumerImplementtowardsion:(HttpRequestHelperCompletion)completion key:(NSString *)key type:(NSString *)type page:(NSString *)page pageSize:(NSString *)pageSize { - NSString * fang = [NSString stringFromBase64String:@"c2VhcmNoL3Jvb20="];/// - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, key, type, page, pageSize, nil]; +/// 搜索 +/// @param completion 完成 +/// @param key 关键字 +/// @param type 类型 1 房间 2 用户 +/// @param page 多少页 +/// @param pageSize 每页多少个 ++ (void)guildSearchUserCompletion:(HttpRequestHelperCompletion)completion key:(NSString *)key type:(NSString *)type page:(NSString *)page pageSize:(NSString *)pageSize { + [self makeRequest:@"search/room" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, key, type, page, pageSize, nil]; } -+ (void)transltowardseUnionComponentImplementtowardsion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid targetUid:(NSString *)targetUid hallId:(NSString *)hallId { - NSString * fang = [NSString stringFromBase64String:@"aGFsbC9yZW1vdmU="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid,targetUid, hallId, nil]; +/// 移除公会成员 +/// @param completion 完成 +/// @param uid uid +/// @param targetUid 移除的人的uid +/// @param hallId 公会的id ++ (void)removeGuildMemberCompletion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid targetUid:(NSString *)targetUid hallId:(NSString *)hallId { + [self makeRequest:@"hall/remove" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid,targetUid, hallId, nil]; } -+ (void)centiretyforComponentImplementtowardsion:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId uid:(NSString *)uid targetUid:(NSString *)targetUid { - NSString * fang = [NSString stringFromBase64String:@"aGFsbC9pbnZpdGU="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, hallId, uid, targetUid, nil]; +/// 邀请用户加入公会 +/// @param completion 完成 +/// @param hallId 公会的id +/// @param uid 用户的uid +/// @param targetUid 目标用户的uid ++ (void)inviteMemberCompletion:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId uid:(NSString *)uid targetUid:(NSString *)targetUid { + [self makeRequest:@"hall/invite" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, hallId, uid, targetUid, nil]; } -+ (void)acquireUnionChamberExecutiveImplementtowardsion:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId page:(NSString *)page pageSize:(NSString *)pageSize { - NSString * fang = [NSString stringFromBase64String:@"aGFsbC9nZXRIYWxsTWFuYWdlcg=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, hallId, page, pageSize, nil]; +/// 获取公会房间管理列表 +/// @param completion 完成 +/// @param hallId 公会的id +/// @param page 当前的页数 +/// @param pageSize 一页多少个 ++ (void)getGuildRoomManagerCompletion:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId page:(NSString *)page pageSize:(NSString *)pageSize { + [self makeRequest:@"hall/getHallManager" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, hallId, page, pageSize, nil]; } -+ (void)unionChamberSetExecutiveImplementtowardsion:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId uid:(NSString *)uid targetUid:(NSString *)targetUid { - NSString * fang = [NSString stringFromBase64String:@"aGFsbC9zZXRNYW5hZ2Vy"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, hallId, uid, targetUid, nil]; +/// 设置房间管理 +/// @param completion 完成 +/// @param hallId 公会的id +/// @param uid 用户的uid +/// @param targetUid 目标用户的uid ++ (void)guildRoomSetManagerCompletion:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId uid:(NSString *)uid targetUid:(NSString *)targetUid { + [self makeRequest:@"hall/setManager" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, hallId, uid, targetUid, nil]; } -+ (void)unionChamberRevoctowardsionExecutiveImplementtowardsion:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId uid:(NSString *)uid targetUid:(NSString *)targetUid { - NSString * fang = [NSString stringFromBase64String:@"aGFsbC9yZW1vdmVNYW5hZ2Vy"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, hallId, uid, targetUid, nil]; +/// 取消设置房间管理 +/// @param completion 完成 +/// @param hallId 公会的id +/// @param uid 用户的uid +/// @param targetUid 目标用户的uid ++ (void)guildRoomCancelManagerCompletion:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId uid:(NSString *)uid targetUid:(NSString *)targetUid { + [self makeRequest:@"hall/removeManager" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, hallId, uid, targetUid, nil]; } -+ (void)unionExecutiveTowardstesttowardsionImplementtowardsion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid managerUid:(NSString *)managerUid { - NSString * fang = [NSString stringFromBase64String:@"aGFsbEF1dGgvZ2V0SGFsbE1hbmFnZXJBdXRocw=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, managerUid, nil]; +/// 公会管理权限 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param managerUid 管理的uid ++ (void)guildManagerAuthCompletion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid managerUid:(NSString *)managerUid { + [self makeRequest:@"hallAuth/getHallManagerAuths" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, managerUid, nil]; } -+ (void)setUnionExecutiveTowardstesttowardsionImplementtowardsion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid managerUid:(NSString *)managerUid hallId:(NSString *)hallId authStr:(NSString *)authStr { - NSString * fang = [NSString stringFromBase64String:@"aGFsbEF1dGgvc2V0SGFsbE1hbmFnZXJBdXRocw=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, managerUid, hallId,authStr, nil]; +/// 设置公会管理权限 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param managerUid 管理的uid +/// @param authStr 权限的字段 ++ (void)setGuildManagerAuthCompletion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid managerUid:(NSString *)managerUid hallId:(NSString *)hallId authStr:(NSString *)authStr { + [self makeRequest:@"hallAuth/setHallManagerAuths" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, managerUid, hallId,authStr, nil]; } -+ (void)quitUnionChamber:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"aGFsbC9xdWl0"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, nil]; +/// 退出房间 +/// @param completion 完成 +/// @param uid 自己的UID ++ (void)quitGuildRoom:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { + [self makeRequest:@"hall/quit" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, nil]; } -+ (void)componentAplictowardsionlyCorridor:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"aGFsbC9hcHBseQ=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion,__FUNCTION__, hallId, uid, nil]; +/// 申请加入公会房间 +/// @param completion 完成 +/// @param hallId 公会的id +/// @param uid 要加入用户的uid ++ (void)memberApplyHall:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId uid:(NSString *)uid { + [self makeRequest:@"hall/apply" method:HttpRequestHelperMethodPOST completion:completion,__FUNCTION__, hallId, uid, nil]; } #pragma mark - 收入统计 -+ (void)acquireCollectiveRevenueReflection:(HttpRequestHelperCompletion)completion uid:(NSString *)uid clanId:(NSString *)clanId startTime:(NSString *)startTime endTime:(NSString *)endTime { - NSString * fang = [NSString stringFromBase64String:@"Y2xhbi9pbmNvbWUvdG90YWxMaXN0"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, clanId, startTime, endTime, nil]; +/// 家族收入列表 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param clanId 家族的id +/// @param startTime 开始时间 +/// @param endTime 结束时间 ++ (void)getClanIncomeRecord:(HttpRequestHelperCompletion)completion uid:(NSString *)uid clanId:(NSString *)clanId startTime:(NSString *)startTime endTime:(NSString *)endTime { + [self makeRequest:@"clan/income/totalList" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, clanId, startTime, endTime, nil]; } -+ (void)acquireUnionRevenueReflection:(HttpRequestHelperCompletion)completion uid:(NSString *)uid hallId:(NSString *)hallId startIntratemporalBWStt:(NSString *)startIntratemporalBWStt endIntratemporalBWStt:(NSString *)endIntratemporalBWStt { - NSString * fang = [NSString stringFromBase64String:@"aW5jb21lL2luY29tZVRvdGFs"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, hallId, startIntratemporalBWStt, endIntratemporalBWStt, nil]; +/// 公会收入列表 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param hallId 家族的id +/// @param startTimeStr 开始时间 +/// @param endTimeStr 结束时间 ++ (void)getGuildIncomeRecord:(HttpRequestHelperCompletion)completion uid:(NSString *)uid hallId:(NSString *)hallId startTimeStr:(NSString *)startTimeStr endTimeStr:(NSString *)endTimeStr { + [self makeRequest:@"income/incomeTotal" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, hallId, startTimeStr, endTimeStr, nil]; } -+ (void)acquireCollectiveSingleChamberRevenueReflection:(HttpRequestHelperCompletion)completion uid:(NSString *)uid clanId:(NSString *)clanId startTime:(NSString *)startTime endTime:(NSString *)endTime { - NSString * fang = [NSString stringFromBase64String:@"aW5jb21lL3NpbmdsZXJvb20vaW5jb21lVG90YWxWMg=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, clanId, startTime, endTime, nil]; +/// 家族个播收入列表 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param clanId 家族的id +/// @param startTime 开始时间 +/// @param endTime 结束时间 ++ (void)getClanSingleRoomIncomeRecord:(HttpRequestHelperCompletion)completion uid:(NSString *)uid clanId:(NSString *)clanId startTime:(NSString *)startTime endTime:(NSString *)endTime { + [self makeRequest:@"income/singleroom/incomeTotalV2" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, clanId, startTime, endTime, nil]; } -+ (void)acquireCorridorSingleChamberRevenueReflection:(HttpRequestHelperCompletion)completion uid:(NSString *)uid clanId:(NSString *)clanId startTime:(NSString *)startTime endTime:(NSString *)endTime { - NSString * fang = [NSString stringFromBase64String:@"Y2xhbi9pbmNvbWUvaGFsbE1lbWJlclRvdGFsTGlzdA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid,clanId, startTime, endTime, nil]; +/// 公会个播收入列表 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param hallId 公会的id +/// @param startTime 开始时间 +/// @param endTime 结束时间 ++ (void)getHallSingleRoomIncomeRecord:(HttpRequestHelperCompletion)completion uid:(NSString *)uid clanId:(NSString *)clanId startTime:(NSString *)startTime endTime:(NSString *)endTime { + [self makeRequest:@"clan/income/hallMemberTotalList" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid,clanId, startTime, endTime, nil]; } -+ (void)acquireCorridorRevenueSpecific:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId memberId:(NSString *)memberId uid:(NSString *)uid startIntratemporalBWStt:(NSString *)startIntratemporalBWStt endIntratemporalBWStt:(NSString *)endIntratemporalBWStt { - NSString * fang = [NSString stringFromBase64String:@"aW5jb21lL2luY29tZURldGFpbA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,hallId,memberId, uid, startIntratemporalBWStt, endIntratemporalBWStt, nil]; +/// 收入明细 +/// @param completion 完成 +/// @param hallId 公会的ID +/// @param memberId 查询用户的uid +/// @param uid 用户的id +/// @param startTimeStr 开始时间 +/// @param endTimeStr 结束时间 ++ (void)getHallIncomeDetail:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId memberId:(NSString *)memberId uid:(NSString *)uid startTimeStr:(NSString *)startTimeStr endTimeStr:(NSString *)endTimeStr { + [self makeRequest:@"income/incomeDetail" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,hallId,memberId, uid, startTimeStr, endTimeStr, nil]; } #pragma mark - 超管 -+ (void)acquireCorridorSenstowardsionalManagementExecutiveChamberSttowardsement:(HttpRequestHelperCompletion)completion clanId:(NSString *)clanId uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"aGFsbC9zdXBlck1hbmFnZXIvbGlzdEhhbGxJbkNsYW4="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, clanId, uid, nil]; +/// 获取公会超管管理房间列表 +/// @param completion 完成 +/// @param clanId 公会的id +/// @param uid 用户的uid ++ (void)getHallSuperAdminManagerRoomList:(HttpRequestHelperCompletion)completion clanId:(NSString *)clanId uid:(NSString *)uid { + [self makeRequest:@"hall/superManager/listHallInClan" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, clanId, uid, nil]; } -+ (void)setSenstowardsionalManagementExecutiveChamber:(HttpRequestHelperCompletion)completion roomUids:(NSString *)roomUids uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"aGFsbC9zdXBlck1hbmFnZXIvc2V0U3VwZXJNYW5hZ2U="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUids, uid, nil]; +/// 超管管理公会房间 +/// @param completion 完成 +/// @param roomUids 管理的房间的uid +/// @param uid 用户的uid ++ (void)setSuperAdminManagerRoom:(HttpRequestHelperCompletion)completion roomUids:(NSString *)roomUids uid:(NSString *)uid { + [self makeRequest:@"hall/superManager/setSuperManage" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUids, uid, nil]; } -+ (void)acquireCollectiveSenstowardsionalManagementSttowardsement:(HttpRequestHelperCompletion)completion clanId:(NSString *)clanId { - NSString * fang = [NSString stringFromBase64String:@"aGFsbC9zdXBlck1hbmFnZXIvbGlzdFN1cGVyTWFuYWdlSW5DbGFu"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, clanId, nil]; +/// 获取家族超管列表 +/// @param completion 完成 +/// @param clanId 家族de id ++ (void)getClanSuperAdminList:(HttpRequestHelperCompletion)completion clanId:(NSString *)clanId { + [self makeRequest:@"hall/superManager/listSuperManageInClan" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, clanId, nil]; } -+ (void)collectiveTransltowardseSenstowardsionalManagement:(HttpRequestHelperCompletion)completion targetUid:(NSString *)targetUid { - NSString * fang = [NSString stringFromBase64String:@"aGFsbC9zdXBlck1hbmFnZXIvcmVtb3Zl"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, targetUid,nil]; +/// 移除超管 +/// @param completion 完成 +/// @param targetUid 移除的人的uid ++ (void)clanRemoveSuperAdmin:(HttpRequestHelperCompletion)completion targetUid:(NSString *)targetUid { + [self makeRequest:@"hall/superManager/remove" method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, targetUid,nil]; } -+ (void)huntforUnionSenstowardsionalManagement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid erbanNo:(NSString *)erbanNo { - NSString * fang = [NSString stringFromBase64String:@"aGFsbC9zdXBlck1hbmFnZXIvc2VhcmNo"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, erbanNo, nil]; +/// 添加公会超管 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param erbanNo 搜索的id ++ (void)searchGuildSuperAdmin:(HttpRequestHelperCompletion)completion uid:(NSString *)uid erbanNo:(NSString *)erbanNo { + [self makeRequest:@"hall/superManager/search" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, erbanNo, nil]; } -+(void)acquireCollectiveChamberGoldsSttowardsement:(HttpRequestHelperCompletion)completion startTime:(NSString *)startTime endTime:(NSString *)endTime{ - NSString * fang = [NSString stringFromBase64String:@"Y2xhbkdvbGRGbG93L2hhbGxNZW1iZXJUb3RhbExpc3Q="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, startTime, endTime, nil]; +/// 房主金币明细 +/// @param completion 完成 +/// @param startTime 开始时间 +/// @param endTime 结束时间 ++(void)getClanRoomGoldsList:(HttpRequestHelperCompletion)completion startTime:(NSString *)startTime endTime:(NSString *)endTime{ + [self makeRequest:@"clanGoldFlow/hallMemberTotalList" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, startTime, endTime, nil]; } -+(void)acquireCollectiveChamberComponentTowardstesttowardsionoritySttowardsement:(HttpRequestHelperCompletion)completion{ - NSString * fang = [NSString stringFromBase64String:@"Y2xhbi9tZW1iZXJFeGNoYW5nZUF1dGgvbGlzdA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; +///房主获取兑换权限列表 ++(void)getClanRoomMemberAuthorityList:(HttpRequestHelperCompletion)completion{ + [self makeRequest:@"clan/memberExchangeAuth/list" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; } -+(void)requisitionMasterDisableRrEnablecomponentExdiversifictowardsionRights:(HttpRequestHelperCompletion)completion status:(NSString *)status targetUid:(NSString *)targetUid{ - NSString * fang = [NSString stringFromBase64String:@"Y2xhbi9tZW1iZXJFeGNoYW5nZUF1dGgvb3BlcmF0ZQ=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,status,targetUid,nil]; +///加入房间 ++(void)requestMasterDisableRrEnablememberExchangeRights:(HttpRequestHelperCompletion)completion status:(NSString *)status targetUid:(NSString *)targetUid{ + [self makeRequest:@"clan/memberExchangeAuth/operate" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,status,targetUid,nil]; } -+(void)demandCorridorBtutonDeclareAboutCorridorId:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId{ - NSString * fang = [NSString stringFromBase64String:@"aGFsbC9nZXRBcHBseUJ0blN0YXR1cw=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,hallId,nil]; +///获取加入房间 ++(void)applyHallBtnStateWithHallId:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId{ + [self makeRequest:@"hall/getApplyBtnStatus" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,hallId,nil]; } @end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/ClanDetailInfoModel.h b/YuMi/Modules/YMMine/View/Guild/Model/ClanDetailInfoModel.h new file mode 100644 index 00000000..0949eceb --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/ClanDetailInfoModel.h @@ -0,0 +1,22 @@ +// +// ClanDetailInfoModel.h +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import +#import "ClanInfoModel.h" +#import "GuildInfoModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface ClanDetailInfoModel : NSObject +///家族信息 +@property (nonatomic,strong) ClanInfoModel *clan; +///公会信息 +@property (nonatomic,strong) GuildInfoModel *hall; +///当前用户是否是公会超管 +@property (nonatomic, assign) BOOL manageHall; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/ClanDetailInfoModel.m b/YuMi/Modules/YMMine/View/Guild/Model/ClanDetailInfoModel.m new file mode 100644 index 00000000..6301323f --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/ClanDetailInfoModel.m @@ -0,0 +1,12 @@ +// +// ClanDetailInfoModel.m +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import "ClanDetailInfoModel.h" + +@implementation ClanDetailInfoModel + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/ClanInfoModel.h b/YuMi/Modules/YMMine/View/Guild/Model/ClanInfoModel.h new file mode 100644 index 00000000..2811285a --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/ClanInfoModel.h @@ -0,0 +1,34 @@ +// +// ClanInfoModel.h +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface ClanInfoModel : NSObject +///家族id +@property (nonatomic, copy) NSString *cid; +/// 族长 uid +@property (nonatomic, copy) NSString *elderUid; +/// 族长音游号 +@property (nonatomic, copy) NSString *elderErbanNo; +/// 族长 名称 +@property (nonatomic, copy) NSString *elderName; +/// 家族 名称 +@property (nonatomic, copy) NSString *name; +///家族头像 +@property (nonatomic, copy) NSString *avatar; +///是否是家族族长 +@property (nonatomic, assign) BOOL userIsElder; +///家族等级图片 +@property (nonatomic, copy) NSString *levelIcon; +///是否有开通会员兑换权限的功能 +@property (nonatomic,assign) BOOL elderHasExchangeManagerAuth; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/ClanInfoModel.m b/YuMi/Modules/YMMine/View/Guild/Model/ClanInfoModel.m new file mode 100644 index 00000000..4714bd5b --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/ClanInfoModel.m @@ -0,0 +1,15 @@ +// +// ClanInfoModel.m +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import "ClanInfoModel.h" + +@implementation ClanInfoModel + ++ (NSDictionary *)replacedKeyFromPropertyName { + return @{@"cid":@"id"}; +} +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/ClanMemberDetailInfoModel.h b/YuMi/Modules/YMMine/View/Guild/Model/ClanMemberDetailInfoModel.h new file mode 100644 index 00000000..fd4d6bc6 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/ClanMemberDetailInfoModel.h @@ -0,0 +1,43 @@ +// +// ClanMemberInfoModel.h +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import +#import "YUMINNNN.h" +#import "GuildInfoModel.h" +NS_ASSUME_NONNULL_BEGIN + +@class ClanMemberInfoModel; +@interface ClanMemberDetailInfoModel : NSObject +///总的个数 +@property (nonatomic,assign) NSInteger count; +///用户的实体 +@property (nonatomic,strong) NSArray *members; +@end + +@interface ClanMemberInfoModel : NSObject +///头像 +@property (nonatomic,copy) NSString *avatar; +///平台id +@property (nonatomic,copy) NSString *erbanNo; +///性别 +@property (nonatomic,assign) GenderType gender; +///公会名称 +@property (nonatomic, copy) NSString *hallName; +///昵称 +@property (nonatomic,copy) NSString *nick; +///类型 +@property (nonatomic,assign) GuildRoleType roleType; +///用户的uid +@property (nonatomic,copy) NSString *uid; +//用户等级 +@property (nonatomic, copy) NSString *experUrl; +///魅力等级 +@property (nonatomic, copy) NSString *charmUrl; +@end + + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/ClanMemberDetailInfoModel.m b/YuMi/Modules/YMMine/View/Guild/Model/ClanMemberDetailInfoModel.m new file mode 100644 index 00000000..a712df63 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/ClanMemberDetailInfoModel.m @@ -0,0 +1,25 @@ +// +// ClanMemberInfoModel.m +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import "ClanMemberDetailInfoModel.h" + +@implementation ClanMemberDetailInfoModel ++ (NSDictionary *)objectClassInArray { + return @{@"members": ClanMemberInfoModel.class}; +} +@end + + +@implementation ClanMemberInfoModel + ++ (NSDictionary *)replacedKeyFromPropertyName { + return @{@"experUrl":@"userLevelVo.experUrl", + @"charmUrl":@"userLevelVo.charmUrl" + }; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/CollectiveAbstractMatrix.h b/YuMi/Modules/YMMine/View/Guild/Model/CollectiveAbstractMatrix.h deleted file mode 100644 index 9c168c6b..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/CollectiveAbstractMatrix.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// CollectiveAbstractMatrix.h -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface CollectiveAbstractMatrix : NSObject -@property (nonatomic, copy) NSString *cid; -@property (nonatomic, copy) NSString *elderUid; -@property (nonatomic, copy) NSString *elderErbanNo; -@property (nonatomic, copy) NSString *elderName; -@property (nonatomic, copy) NSString *name; -@property (nonatomic, copy) NSString *avatar; -@property (nonatomic, assign) BOOL userIsElder; -@property (nonatomic, copy) NSString *levelIcon; -@property (nonatomic,assign) BOOL elderHasExchangeManagerAuth; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/CollectiveAbstractMatrix.m b/YuMi/Modules/YMMine/View/Guild/Model/CollectiveAbstractMatrix.m deleted file mode 100644 index 01893f27..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/CollectiveAbstractMatrix.m +++ /dev/null @@ -1,15 +0,0 @@ -// -// CollectiveAbstractMatrix.m -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import "CollectiveAbstractMatrix.h" - -@implementation CollectiveAbstractMatrix - -+ (NSDictionary *)replacedDigitalByvirtueofMaintainertyConstitute { - return @{@"cid":@"id"}; -} -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/CollectiveComponentSpecificAbstractMatrix.h b/YuMi/Modules/YMMine/View/Guild/Model/CollectiveComponentSpecificAbstractMatrix.h deleted file mode 100644 index e76f413d..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/CollectiveComponentSpecificAbstractMatrix.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// CollectiveComponentAbstractMatrix.h -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import -#import "YUMINNNN.h" -#import "UnionAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@class CollectiveComponentAbstractMatrix; -@interface CollectiveComponentSpecificAbstractMatrix : NSObject -@property (nonatomic,assign) NSInteger count; -@property (nonatomic,strong) NSArray *members; -@end - -@interface CollectiveComponentAbstractMatrix : NSObject -@property (nonatomic,copy) NSString *avatar; -@property (nonatomic,copy) NSString *erbanNo; -@property (nonatomic,assign) GenderGenre gender; -@property (nonatomic, copy) NSString *hallName; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,assign) UnionRoleGenre roleType; -@property (nonatomic,copy) NSString *uid; -@property (nonatomic, copy) NSString *experUrl; -@property (nonatomic, copy) NSString *charmUrl; -@end - - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/CollectiveComponentSpecificAbstractMatrix.m b/YuMi/Modules/YMMine/View/Guild/Model/CollectiveComponentSpecificAbstractMatrix.m deleted file mode 100644 index a980c55a..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/CollectiveComponentSpecificAbstractMatrix.m +++ /dev/null @@ -1,25 +0,0 @@ -// -// CollectiveComponentAbstractMatrix.m -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import "CollectiveComponentSpecificAbstractMatrix.h" - -@implementation CollectiveComponentSpecificAbstractMatrix -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{@"members": CollectiveComponentAbstractMatrix.class}; -} -@end - - -@implementation CollectiveComponentAbstractMatrix - -+ (NSDictionary *)replacedDigitalByvirtueofMaintainertyConstitute { - return @{@"experUrl":@"userLevelVo.experUrl", - @"charmUrl":@"userLevelVo.charmUrl" - }; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/CollectiveSpecificAbstractMatrix.h b/YuMi/Modules/YMMine/View/Guild/Model/CollectiveSpecificAbstractMatrix.h deleted file mode 100644 index 0fd16d64..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/CollectiveSpecificAbstractMatrix.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// CollectiveSpecificAbstractMatrix.h -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import -#import "CollectiveAbstractMatrix.h" -#import "UnionAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@interface CollectiveSpecificAbstractMatrix : NSObject -@property (nonatomic,strong) CollectiveAbstractMatrix *clan; -@property (nonatomic,strong) UnionAbstractMatrix *hall; -@property (nonatomic, assign) BOOL manageHall; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/CollectiveSpecificAbstractMatrix.m b/YuMi/Modules/YMMine/View/Guild/Model/CollectiveSpecificAbstractMatrix.m deleted file mode 100644 index fb830d3d..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/CollectiveSpecificAbstractMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// CollectiveSpecificAbstractMatrix.m -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import "CollectiveSpecificAbstractMatrix.h" - -@implementation CollectiveSpecificAbstractMatrix - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/GuildAuthModel.h b/YuMi/Modules/YMMine/View/Guild/Model/GuildAuthModel.h new file mode 100644 index 00000000..c4e15fa1 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/GuildAuthModel.h @@ -0,0 +1,24 @@ +// +// GuildAuthModel.h +// YuMi +// +// Created by YuMi on 2022/4/8. +// 公会房间权限 + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface GuildAuthModel : NSObject +///标题 +@property (nonatomic, copy) NSString *name; +///描述 +@property (nonatomic, copy) NSString *des; +///授权码字段 +@property (nonatomic, copy) NSString *code; +///开关状态 staus为0表示未拥有此权限,status为1表示拥有此权限 +@property (nonatomic, assign) NSInteger status; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/GuildAuthModel.m b/YuMi/Modules/YMMine/View/Guild/Model/GuildAuthModel.m new file mode 100644 index 00000000..f21a99e8 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/GuildAuthModel.m @@ -0,0 +1,14 @@ +// +// GuildAuthModel.m +// YuMi +// +// Created by YuMi on 2022/4/8. +// + +#import "GuildAuthModel.h" + +@implementation GuildAuthModel ++ (NSDictionary *)replacedKeyFromPropertyName { + return @{@"des":@"description"}; +} +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/GuildInfoModel.h b/YuMi/Modules/YMMine/View/Guild/Model/GuildInfoModel.h new file mode 100644 index 00000000..a2b54980 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/GuildInfoModel.h @@ -0,0 +1,46 @@ +// +// GuildInfoModel.h +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, GuildRoleType) { + ///会长 + GuildRoleType_Owner = 1, + ///管理 + GuildRoleType_Manager, + ///普通成员 + GuildRoleType_Normal, + ///族长 + GuildRoleType_Elder, + ///组长 房主 + GuildRoleType_Elder_Owner, + ///超管 + GuildRoleType_Super_Admin +}; + +@interface GuildInfoModel : NSObject +///模厅id +@property (nonatomic, copy) NSString *hallId; +/// 模厅名称 +@property (nonatomic, copy) NSString *hallName; +///角色类型 +@property (nonatomic, assign) GuildRoleType roleType; +/// 厅主的 uid +@property (nonatomic, copy) NSString *ownerUid; +/// 厅主的 音游号 +@property (nonatomic, copy) NSString *ownerErbanNo; +/// 模厅名称 +@property (nonatomic, copy) NSString *ownerNick; +/// 模厅头像 +@property (nonatomic, copy) NSString *ownerAvatar; +/// 模厅成员数量 +@property (nonatomic, strong) NSNumber *memberCount; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/GuildInfoModel.m b/YuMi/Modules/YMMine/View/Guild/Model/GuildInfoModel.m new file mode 100644 index 00000000..f01b7bc2 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/GuildInfoModel.m @@ -0,0 +1,12 @@ +// +// GuildInfoModel.m +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import "GuildInfoModel.h" + +@implementation GuildInfoModel + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/GuildMessageModel.h b/YuMi/Modules/YMMine/View/Guild/Model/GuildMessageModel.h new file mode 100644 index 00000000..159f8fe5 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/GuildMessageModel.h @@ -0,0 +1,78 @@ +// +// GuildMessageModel.h +// YuMi +// +// Created by YuMi on 2022/4/18. +// 公会消息的模型 + +#import + +NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(NSInteger, MessageGuildState) { + ///未处理 + MessageGuildState_Untreated = 1, + ///同意 + MessageGuildState_Agree, + ///拒绝 + MessageGuildState_Reject, + ///已过期 + MessageGuildState_OutData, + ///已处理 + MessageGuildState_Processed, +}; + +@class GuildMessageLayoutModel, GuildMessageRequestModel, GuildMessageLayoutInfoModel; +@interface GuildMessageModel : NSObject + +@property (nonatomic,assign) MessageGuildState msgStatus; +///请求的时候需要的参数 +@property (nonatomic,strong) GuildMessageRequestModel *params; +///约束 +@property (nonatomic,strong) GuildMessageLayoutModel *layout; +///请求所需要用到的接口名称 +@property (strong, nonatomic) NSString *url; +///处理人 +@property (nonatomic,copy) NSString *approverNick; +///处理人的uid +@property (nonatomic,copy) NSString *approverUid; +/// 目前就跳转公会房间 类型的话 合并了代码之后在搞 +@property (nonatomic,assign) NSInteger routerType; +///公会的id +@property (nonatomic,assign) NSInteger routerValue; +@end + + +///约束的 +@interface GuildMessageLayoutModel : NSObject +///显示的标题 +@property (nonatomic,strong) GuildMessageLayoutInfoModel *title; +///显示的时间 +@property (nonatomic,strong) GuildMessageLayoutInfoModel *time; +///显示的内容 +@property (nonatomic,strong) NSArray *contents; +@end + + +@interface GuildMessageLayoutInfoModel : NSObject +///显示内容 +@property (strong, nonatomic) NSString *content; +///字体大小 +@property (nonatomic, assign) CGFloat fontSize; +///字体的颜色 +@property (strong, nonatomic) NSString *fontColor; +///是否是粗体 +@property (nonatomic,assign) BOOL fontBold; +///跳转的类型 +@property (assign, nonatomic) NSInteger routertype; +///类型的地址 +@property (strong, nonatomic) NSString *routerValue; +@end + +@interface GuildMessageRequestModel : NSObject +///家族的id +@property (nonatomic,copy) NSString *familyId; +///用户的id +@property (nonatomic,copy) NSString *inviteId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/GuildMessageModel.m b/YuMi/Modules/YMMine/View/Guild/Model/GuildMessageModel.m new file mode 100644 index 00000000..3d09884e --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/GuildMessageModel.m @@ -0,0 +1,32 @@ +// +// GuildMessageModel.m +// YuMi +// +// Created by YuMi on 2022/4/18. +// + +#import "GuildMessageModel.h" + +@implementation GuildMessageModel + +@end + + +@implementation GuildMessageLayoutModel + ++ (NSDictionary *)objectClassInArray { + return @{@"contents":GuildMessageLayoutInfoModel.class}; +} + +@end + +@implementation GuildMessageLayoutInfoModel + +@end + + +@implementation GuildMessageRequestModel + + + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/GuildSearchUserInfoModel.h b/YuMi/Modules/YMMine/View/Guild/Model/GuildSearchUserInfoModel.h new file mode 100644 index 00000000..55d83d01 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/GuildSearchUserInfoModel.h @@ -0,0 +1,31 @@ +// +// GuildSearchUserInfoModel.h +// YuMi +// +// Created by YuMi on 2022/4/8. +// 搜索平台成员 + +#import +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +@interface GuildSearchUserInfoModel : NSObject +///用户的uid +@property (nonatomic,copy) NSString *uid; +///头像 +@property (nonatomic,copy) NSString *avatar; +///昵称 +@property (nonatomic,copy) NSString *nick; +///性别 +@property (nonatomic,assign) GenderType gender; +///平台号 +@property (nonatomic,copy) NSString *erbanNo; +///按钮状态 0=不显示,4=可邀请,5=待通过,6=通过申请 +@property (nonatomic,assign) int hallBtnStatus; +/// integer($int64)当 hallBtnStatus=6 时,对应的申请记录Id +@property (nonatomic,assign) NSInteger hallRecordId; +///公会会话id +@property (nonatomic,copy) NSString *hallMessageUid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/GuildSearchUserInfoModel.m b/YuMi/Modules/YMMine/View/Guild/Model/GuildSearchUserInfoModel.m new file mode 100644 index 00000000..19279be3 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/GuildSearchUserInfoModel.m @@ -0,0 +1,12 @@ +// +// GuildSearchUserInfoModel.m +// YuMi +// +// Created by YuMi on 2022/4/8. +// + +#import "GuildSearchUserInfoModel.h" + +@implementation GuildSearchUserInfoModel + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/Income/GuildIncomeDetailModel.h b/YuMi/Modules/YMMine/View/Guild/Model/Income/GuildIncomeDetailModel.h new file mode 100644 index 00000000..22cbec71 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/Income/GuildIncomeDetailModel.h @@ -0,0 +1,25 @@ +// +// GuildIncomeDetailModel.h +// YuMi +// +// Created by YuMi on 2022/4/12. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface GuildIncomeDetailModel : NSObject +///礼物名称 +@property (nonatomic,copy) NSString *giftName; +///礼物价值 +@property (nonatomic,copy) NSString *goldPrice; +///礼物图片 +@property (nonatomic,copy) NSString *picUrl; +///礼物个数 +@property (nonatomic,copy) NSString *giftNum; +///礼物id +@property (nonatomic,copy) NSString *giftId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/Income/GuildIncomeDetailModel.m b/YuMi/Modules/YMMine/View/Guild/Model/Income/GuildIncomeDetailModel.m new file mode 100644 index 00000000..e1e55eac --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/Income/GuildIncomeDetailModel.m @@ -0,0 +1,12 @@ +// +// GuildIncomeDetailModel.m +// YuMi +// +// Created by YuMi on 2022/4/12. +// + +#import "GuildIncomeDetailModel.h" + +@implementation GuildIncomeDetailModel + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/Income/GuildIncomeRecordModel.h b/YuMi/Modules/YMMine/View/Guild/Model/Income/GuildIncomeRecordModel.h new file mode 100644 index 00000000..6d1419df --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/Income/GuildIncomeRecordModel.h @@ -0,0 +1,37 @@ +// +// GuildIncomeRecordModel.h +// YuMi +// +// Created by YuMi on 2022/4/11. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class GuildIncomeRecordUserInfoModel; +@interface GuildIncomeRecordModel : NSObject +///总的价值 +@property (nonatomic,copy) NSString *total; +/// +@property (nonatomic,strong) NSArray *income; + +@end + +@interface GuildIncomeRecordUserInfoModel : NSObject +///公会的头像 +@property (nonatomic,copy) NSString *hallAvatar; +///公会的昵称 +@property (nonatomic,copy) NSString *hallName; +///房间流水 +@property (nonatomic,copy) NSString * roomIncome; +///房间流水 +@property (nonatomic,copy) NSString * normalGiftIncome; +///房间流水 +@property (nonatomic,copy) NSString * bagIncome; +///新用户送礼人数 +@property (nonatomic, copy) NSString *userSendGiftNum; +///送礼人数 +@property (nonatomic, copy) NSString *giftUv; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/Income/GuildIncomeRecordModel.m b/YuMi/Modules/YMMine/View/Guild/Model/Income/GuildIncomeRecordModel.m new file mode 100644 index 00000000..5c87dea0 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/Income/GuildIncomeRecordModel.m @@ -0,0 +1,24 @@ +// +// GuildIncomeRecordModel.m +// YuMi +// +// Created by YuMi on 2022/4/11. +// + +#import "GuildIncomeRecordModel.h" + +@implementation GuildIncomeRecordModel ++ (NSDictionary *)objectClassInArray { + return @{@"income":GuildIncomeRecordUserInfoModel.class}; +} +@end + + +@implementation GuildIncomeRecordUserInfoModel + ++ (NSDictionary *)replacedKeyFromPropertyName { + return @{@"userSendGiftNum": @"newUserSendGiftNum" + }; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/Income/GuildPersonIncomeRecordModel.h b/YuMi/Modules/YMMine/View/Guild/Model/Income/GuildPersonIncomeRecordModel.h new file mode 100644 index 00000000..75b5d6c9 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/Income/GuildPersonIncomeRecordModel.h @@ -0,0 +1,56 @@ +// +// GuildPersonIncomeRecordModel.h +// YuMi +// +// Created by YuMi on 2022/4/11. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class GuildPersonIncomeUserInfoModel; +@interface GuildPersonIncomeRecordModel : NSObject +///总共的价值 +@property (nonatomic,copy) NSString *total; +///数据源 +@property (nonatomic,strong) NSArray *vos; +@property (nonatomic,copy) NSArray *memberIncome; +///个播数据 +@property (nonatomic,strong) NSArray *incomes; +///个播收入查询 +@property (nonatomic,copy) NSString *totalDiamond; +@end + + +@interface GuildPersonIncomeUserInfoModel : NSObject + + +@property (nonatomic,copy) NSString *uid; +@property (nonatomic,copy) NSString *income; +@property (nonatomic,copy) NSString *hallId; +@property (nonatomic,copy) NSString *hallOwnerUid; +@property (nonatomic,copy) NSString *hallAvatar; +@property (nonatomic,copy) NSString *hallName; +@property (nonatomic,copy) NSString *total; + + +///排名 +@property (nonatomic,copy) NSString *rowNum; +///接收者的uid +@property (nonatomic,copy) NSString *reciveUid; +///总的价值 +@property (nonatomic,copy) NSString *totalGoldNum; +///头像 +@property (nonatomic,copy) NSString *avatar; +///昵称 +@property (nonatomic,copy) NSString *nick; +///平台id +@property (nonatomic,copy) NSString *erbanNo; +#pragma mark - 个播收入查询 +///个播收入 +@property (nonatomic,copy) NSString *anchorDiamondNum; +///房间收入 +@property (nonatomic,copy) NSString *roomDiamondNum; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/Income/GuildPersonIncomeRecordModel.m b/YuMi/Modules/YMMine/View/Guild/Model/Income/GuildPersonIncomeRecordModel.m new file mode 100644 index 00000000..2e27c9b1 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/Income/GuildPersonIncomeRecordModel.m @@ -0,0 +1,26 @@ +// +// GuildPersonIncomeRecordModel.m +// YuMi +// +// Created by YuMi on 2022/4/11. +// + +#import "GuildPersonIncomeRecordModel.h" + +@implementation GuildPersonIncomeRecordModel + ++ (NSDictionary *)objectClassInArray { + return @{@"vos":GuildPersonIncomeUserInfoModel.class, + @"incomes":GuildPersonIncomeUserInfoModel.class, + @"memberIncome":GuildPersonIncomeUserInfoModel.class + }; +} + +@end + + +@implementation GuildPersonIncomeUserInfoModel + + + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/Income/UnionFeatureRevenueReflectionMatrix.h b/YuMi/Modules/YMMine/View/Guild/Model/Income/UnionFeatureRevenueReflectionMatrix.h deleted file mode 100644 index 692b4518..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/Income/UnionFeatureRevenueReflectionMatrix.h +++ /dev/null @@ -1,44 +0,0 @@ -// -// UnionFeatureRevenueReflectionMatrix.h -// YuMi -// -// Created by YuMi on 2022/4/11. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class UnionFeatureRevenueConsumerAbstractMatrix; -@interface UnionFeatureRevenueReflectionMatrix : NSObject -@property (nonatomic,copy) NSString *total; -@property (nonatomic,strong) NSArray *vos; -@property (nonatomic,copy) NSArray *memberIncome; -@property (nonatomic,strong) NSArray *incomes; -@property (nonatomic,copy) NSString *totalDiamond; -@end - - -@interface UnionFeatureRevenueConsumerAbstractMatrix : NSObject - - -@property (nonatomic,copy) NSString *uid; -@property (nonatomic,copy) NSString *income; -@property (nonatomic,copy) NSString *hallId; -@property (nonatomic,copy) NSString *hallOwnerUid; -@property (nonatomic,copy) NSString *hallAvatar; -@property (nonatomic,copy) NSString *hallName; -@property (nonatomic,copy) NSString *total; - - -@property (nonatomic,copy) NSString *rowNum; -@property (nonatomic,copy) NSString *reciveUid; -@property (nonatomic,copy) NSString *totalGoldNum; -@property (nonatomic,copy) NSString *avatar; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,copy) NSString *erbanNo; -#pragma mark - 个播收入查询 -@property (nonatomic,copy) NSString *anchorDiamondNum; -@property (nonatomic,copy) NSString *roomDiamondNum; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/Income/UnionFeatureRevenueReflectionMatrix.m b/YuMi/Modules/YMMine/View/Guild/Model/Income/UnionFeatureRevenueReflectionMatrix.m deleted file mode 100644 index a2be6378..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/Income/UnionFeatureRevenueReflectionMatrix.m +++ /dev/null @@ -1,26 +0,0 @@ -// -// UnionFeatureRevenueReflectionMatrix.m -// YuMi -// -// Created by YuMi on 2022/4/11. -// - -#import "UnionFeatureRevenueReflectionMatrix.h" - -@implementation UnionFeatureRevenueReflectionMatrix - -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{@"vos":UnionFeatureRevenueConsumerAbstractMatrix.class, - @"incomes":UnionFeatureRevenueConsumerAbstractMatrix.class, - @"memberIncome":UnionFeatureRevenueConsumerAbstractMatrix.class - }; -} - -@end - - -@implementation UnionFeatureRevenueConsumerAbstractMatrix - - - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/Income/UnionRevenueReflectionMatrix.h b/YuMi/Modules/YMMine/View/Guild/Model/Income/UnionRevenueReflectionMatrix.h deleted file mode 100644 index 214f3dd6..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/Income/UnionRevenueReflectionMatrix.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// UnionRevenueReflectionMatrix.h -// YuMi -// -// Created by YuMi on 2022/4/11. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class UnionRevenueReflectionConsumerAbstractMatrix; -@interface UnionRevenueReflectionMatrix : NSObject -@property (nonatomic,copy) NSString *total; -@property (nonatomic,strong) NSArray *income; - -@end - -@interface UnionRevenueReflectionConsumerAbstractMatrix : NSObject -@property (nonatomic,copy) NSString *hallAvatar; -@property (nonatomic,copy) NSString *hallName; -@property (nonatomic,copy) NSString * roomIncome; -@property (nonatomic,copy) NSString * normalGiftIncome; -@property (nonatomic,copy) NSString * bagIncome; -@property (nonatomic, copy) NSString *userSendGiftNum; -@property (nonatomic, copy) NSString *giftUv; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/Income/UnionRevenueReflectionMatrix.m b/YuMi/Modules/YMMine/View/Guild/Model/Income/UnionRevenueReflectionMatrix.m deleted file mode 100644 index 655807c5..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/Income/UnionRevenueReflectionMatrix.m +++ /dev/null @@ -1,24 +0,0 @@ -// -// UnionRevenueReflectionMatrix.m -// YuMi -// -// Created by YuMi on 2022/4/11. -// - -#import "UnionRevenueReflectionMatrix.h" - -@implementation UnionRevenueReflectionMatrix -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{@"income":UnionRevenueReflectionConsumerAbstractMatrix.class}; -} -@end - - -@implementation UnionRevenueReflectionConsumerAbstractMatrix - -+ (NSDictionary *)replacedDigitalByvirtueofMaintainertyConstitute { - return @{@"userSendGiftNum": @"newUserSendGiftNum" - }; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/Income/UnionRevenueSpecificMatrix.h b/YuMi/Modules/YMMine/View/Guild/Model/Income/UnionRevenueSpecificMatrix.h deleted file mode 100644 index bb268818..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/Income/UnionRevenueSpecificMatrix.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// UnionRevenueSpecificMatrix.h -// YuMi -// -// Created by YuMi on 2022/4/12. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface UnionRevenueSpecificMatrix : NSObject -@property (nonatomic,copy) NSString *giftName; -@property (nonatomic,copy) NSString *goldPrice; -@property (nonatomic,copy) NSString *picUrl; -@property (nonatomic,copy) NSString *giftNum; -@property (nonatomic,copy) NSString *giftId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/Income/UnionRevenueSpecificMatrix.m b/YuMi/Modules/YMMine/View/Guild/Model/Income/UnionRevenueSpecificMatrix.m deleted file mode 100644 index ab799d2a..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/Income/UnionRevenueSpecificMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// UnionRevenueSpecificMatrix.m -// YuMi -// -// Created by YuMi on 2022/4/12. -// - -#import "UnionRevenueSpecificMatrix.h" - -@implementation UnionRevenueSpecificMatrix - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/GuildRoomInfoModel.h b/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/GuildRoomInfoModel.h new file mode 100644 index 00000000..ac165343 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/GuildRoomInfoModel.h @@ -0,0 +1,26 @@ +// +// GuildRoomInfoModel.h +// YuMi +// +// Created by YuMi on 2022/4/13. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface GuildRoomInfoModel : NSObject +@property (nonatomic,copy) NSString *hallRoomId; +///公会房间uid +@property (nonatomic,copy) NSString *hallRoomUid; +///公会房间头像 +@property (nonatomic,copy) NSString *hallAvatar; +///公会房间名字 +@property (nonatomic,copy) NSString *hallName; +///是否已经管理 +@property (nonatomic,assign) BOOL hasManage; +///房间的uid 公会超管设置返回的这个 +@property (nonatomic,copy) NSString *roomUid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/GuildRoomInfoModel.m b/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/GuildRoomInfoModel.m new file mode 100644 index 00000000..f3d2b699 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/GuildRoomInfoModel.m @@ -0,0 +1,12 @@ +// +// GuildRoomInfoModel.m +// YuMi +// +// Created by YuMi on 2022/4/13. +// + +#import "GuildRoomInfoModel.h" + +@implementation GuildRoomInfoModel + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/GuildSearchSuperAdminModel.h b/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/GuildSearchSuperAdminModel.h new file mode 100644 index 00000000..0becdb19 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/GuildSearchSuperAdminModel.h @@ -0,0 +1,26 @@ +// +// GuildSearchSuperAdminModel.h +// YuMi +// +// Created by YuMi on 2022/4/13. +// +#import +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +@interface GuildSearchSuperAdminModel : NSObject +///用户的uid +@property (nonatomic,copy) NSString *uid; +///平台id +@property (nonatomic,copy) NSString *erbanNo; +///昵称 +@property (nonatomic,copy) NSString *nick; +///头像 +@property (nonatomic,copy) NSString *avatar; +///性别 +@property (nonatomic,assign) GenderType gender; +///是否已经是超管 +@property (nonatomic,assign) BOOL hasSet; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/GuildSearchSuperAdminModel.m b/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/GuildSearchSuperAdminModel.m new file mode 100644 index 00000000..5dbbda65 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/GuildSearchSuperAdminModel.m @@ -0,0 +1,12 @@ +// +// GuildSearchSuperAdminModel.m +// YuMi +// +// Created by YuMi on 2022/4/13. +// + +#import "GuildSearchSuperAdminModel.h" + +@implementation GuildSearchSuperAdminModel + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/GuildSuperAdminInfoModel.h b/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/GuildSuperAdminInfoModel.h new file mode 100644 index 00000000..13f3c59d --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/GuildSuperAdminInfoModel.h @@ -0,0 +1,26 @@ +// +// GuildSuperAdminInfoModel.h +// YuMi +// +// Created by YuMi on 2022/4/13. +// + +#import +#import "GuildRoomInfoModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface GuildSuperAdminInfoModel : NSObject +///uid +@property (nonatomic,copy) NSString *uid; +///平台id +@property (nonatomic,copy) NSString *erbanNo; +///头像 +@property (nonatomic,copy) NSString *avatar; +///昵称 +@property (nonatomic,copy) NSString *nick; +///管理的房间列表 +@property (nonatomic,strong) NSArray *roomList; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/GuildSuperAdminInfoModel.m b/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/GuildSuperAdminInfoModel.m new file mode 100644 index 00000000..0626d4d4 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/GuildSuperAdminInfoModel.m @@ -0,0 +1,14 @@ +// +// GuildSuperAdminInfoModel.m +// YuMi +// +// Created by YuMi on 2022/4/13. +// + +#import "GuildSuperAdminInfoModel.h" + +@implementation GuildSuperAdminInfoModel ++ (NSDictionary *)objectClassInArray { + return @{@"roomList": GuildRoomInfoModel.class}; +} +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/UnionChamberAbstractMatrix.h b/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/UnionChamberAbstractMatrix.h deleted file mode 100644 index fbdad43c..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/UnionChamberAbstractMatrix.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// UnionChamberAbstractMatrix.h -// YuMi -// -// Created by YuMi on 2022/4/13. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface UnionChamberAbstractMatrix : NSObject -@property (nonatomic,copy) NSString *hallRoomId; -@property (nonatomic,copy) NSString *hallRoomUid; -@property (nonatomic,copy) NSString *hallAvatar; -@property (nonatomic,copy) NSString *hallName; -@property (nonatomic,assign) BOOL hasManage; -@property (nonatomic,copy) NSString *roomUid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/UnionChamberAbstractMatrix.m b/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/UnionChamberAbstractMatrix.m deleted file mode 100644 index 0f769123..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/UnionChamberAbstractMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// UnionChamberAbstractMatrix.m -// YuMi -// -// Created by YuMi on 2022/4/13. -// - -#import "UnionChamberAbstractMatrix.h" - -@implementation UnionChamberAbstractMatrix - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/UnionHuntforSensationalManagementMatrix.h b/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/UnionHuntforSensationalManagementMatrix.h deleted file mode 100644 index 1563fc13..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/UnionHuntforSensationalManagementMatrix.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// UnionHuntforSensationalManagementMatrix.h -// YuMi -// -// Created by YuMi on 2022/4/13. -// -#import -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -@interface UnionHuntforSensationalManagementMatrix : NSObject -@property (nonatomic,copy) NSString *uid; -@property (nonatomic,copy) NSString *erbanNo; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,copy) NSString *avatar; -@property (nonatomic,assign) GenderGenre gender; -@property (nonatomic,assign) BOOL hasSet; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/UnionHuntforSensationalManagementMatrix.m b/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/UnionHuntforSensationalManagementMatrix.m deleted file mode 100644 index 61775032..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/UnionHuntforSensationalManagementMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// UnionHuntforSensationalManagementMatrix.m -// YuMi -// -// Created by YuMi on 2022/4/13. -// - -#import "UnionHuntforSensationalManagementMatrix.h" - -@implementation UnionHuntforSensationalManagementMatrix - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/UnionSensationalManagementAbstractMatrix.h b/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/UnionSensationalManagementAbstractMatrix.h deleted file mode 100644 index a9b98433..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/UnionSensationalManagementAbstractMatrix.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// UnionSensationalManagementAbstractMatrix.h -// YuMi -// -// Created by YuMi on 2022/4/13. -// - -#import -#import "UnionChamberAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@interface UnionSensationalManagementAbstractMatrix : NSObject -@property (nonatomic,copy) NSString *uid; -@property (nonatomic,copy) NSString *erbanNo; -@property (nonatomic,copy) NSString *avatar; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,strong) NSArray *roomList; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/UnionSensationalManagementAbstractMatrix.m b/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/UnionSensationalManagementAbstractMatrix.m deleted file mode 100644 index 89ebe675..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/SuperAdmin/UnionSensationalManagementAbstractMatrix.m +++ /dev/null @@ -1,14 +0,0 @@ -// -// UnionSensationalManagementAbstractMatrix.m -// YuMi -// -// Created by YuMi on 2022/4/13. -// - -#import "UnionSensationalManagementAbstractMatrix.h" - -@implementation UnionSensationalManagementAbstractMatrix -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{@"roomList": UnionChamberAbstractMatrix.class}; -} -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/UnionAbstractMatrix.h b/YuMi/Modules/YMMine/View/Guild/Model/UnionAbstractMatrix.h deleted file mode 100644 index b3f0e9f4..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/UnionAbstractMatrix.h +++ /dev/null @@ -1,38 +0,0 @@ -// -// UnionAbstractMatrix.h -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, UnionRoleGenre) { - - UnionRoleGenre_Owner = 1, - - UnionRoleGenre_Manager, - - UnionRoleGenre_Normal, - - UnionRoleGenre_Elder, - - UnionRoleGenre_Elder_Owner, - - UnionRoleGenre_Super_Admin -}; - -@interface UnionAbstractMatrix : NSObject -@property (nonatomic, copy) NSString *hallId; -@property (nonatomic, copy) NSString *hallName; -@property (nonatomic, assign) UnionRoleGenre roleType; -@property (nonatomic, copy) NSString *ownerUid; -@property (nonatomic, copy) NSString *ownerErbanNo; -@property (nonatomic, copy) NSString *ownerNick; -@property (nonatomic, copy) NSString *ownerAvatar; -@property (nonatomic, strong) NSNumber *memberCount; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/UnionAbstractMatrix.m b/YuMi/Modules/YMMine/View/Guild/Model/UnionAbstractMatrix.m deleted file mode 100644 index bac0688e..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/UnionAbstractMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// UnionAbstractMatrix.m -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import "UnionAbstractMatrix.h" - -@implementation UnionAbstractMatrix - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/UnionAuthMatrix.h b/YuMi/Modules/YMMine/View/Guild/Model/UnionAuthMatrix.h deleted file mode 100644 index f1519b92..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/UnionAuthMatrix.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// UnionAuthMatrix.h -// YuMi -// -// Created by YuMi on 2022/4/8. -// 公会房间权限 - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface UnionAuthMatrix : NSObject -@property (nonatomic, copy) NSString *name; -@property (nonatomic, copy) NSString *des; -@property (nonatomic, copy) NSString *code; -@property (nonatomic, assign) NSInteger status; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/UnionAuthMatrix.m b/YuMi/Modules/YMMine/View/Guild/Model/UnionAuthMatrix.m deleted file mode 100644 index 78616aae..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/UnionAuthMatrix.m +++ /dev/null @@ -1,14 +0,0 @@ -// -// UnionAuthMatrix.m -// YuMi -// -// Created by YuMi on 2022/4/8. -// - -#import "UnionAuthMatrix.h" - -@implementation UnionAuthMatrix -+ (NSDictionary *)replacedDigitalByvirtueofMaintainertyConstitute { - return @{@"des":@"description"}; -} -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/UnionCommunicationMatrix.h b/YuMi/Modules/YMMine/View/Guild/Model/UnionCommunicationMatrix.h deleted file mode 100644 index f1821e5b..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/UnionCommunicationMatrix.h +++ /dev/null @@ -1,59 +0,0 @@ -// -// UnionCommunicationMatrix.h -// YuMi -// -// Created by YuMi on 2022/4/18. -// 公会消息的模型 - -#import - -NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSInteger, CommunicationUnionDeclare) { - - CommunicationUnionDeclare_Untreated = 1, - - CommunicationUnionDeclare_Agree, - - CommunicationUnionDeclare_Reject, - - CommunicationUnionDeclare_OutData, - - CommunicationUnionDeclare_Processed, -}; - -@class UnionCommunicationProgrammingMatrix, UnionCommunicationRequestMatrix, UnionCommunicationProgrammingAbstractMatrix; -@interface UnionCommunicationMatrix : NSObject - -@property (nonatomic,assign) CommunicationUnionDeclare msgStatus; -@property (nonatomic,strong) UnionCommunicationRequestMatrix *params; -@property (nonatomic,strong) UnionCommunicationProgrammingMatrix *layout; -@property (strong, nonatomic) NSString *url; -@property (nonatomic,copy) NSString *approverNick; -@property (nonatomic,copy) NSString *approverUid; -@property (nonatomic,assign) NSInteger routerType; -@property (nonatomic,assign) NSInteger routerValue; -@end - - -@interface UnionCommunicationProgrammingMatrix : NSObject -@property (nonatomic,strong) UnionCommunicationProgrammingAbstractMatrix *title; -@property (nonatomic,strong) UnionCommunicationProgrammingAbstractMatrix *time; -@property (nonatomic,strong) NSArray *contents; -@end - - -@interface UnionCommunicationProgrammingAbstractMatrix : NSObject -@property (strong, nonatomic) NSString *content; -@property (nonatomic, assign) CGFloat fontSize; -@property (strong, nonatomic) NSString *fontColor; -@property (nonatomic,assign) BOOL fontBold; -@property (assign, nonatomic) NSInteger routertype; -@property (strong, nonatomic) NSString *routerValue; -@end - -@interface UnionCommunicationRequestMatrix : NSObject -@property (nonatomic,copy) NSString *familyId; -@property (nonatomic,copy) NSString *inviteId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/UnionCommunicationMatrix.m b/YuMi/Modules/YMMine/View/Guild/Model/UnionCommunicationMatrix.m deleted file mode 100644 index 88f0522c..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/UnionCommunicationMatrix.m +++ /dev/null @@ -1,32 +0,0 @@ -// -// UnionCommunicationMatrix.m -// YuMi -// -// Created by YuMi on 2022/4/18. -// - -#import "UnionCommunicationMatrix.h" - -@implementation UnionCommunicationMatrix - -@end - - -@implementation UnionCommunicationProgrammingMatrix - -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{@"contents":UnionCommunicationProgrammingAbstractMatrix.class}; -} - -@end - -@implementation UnionCommunicationProgrammingAbstractMatrix - -@end - - -@implementation UnionCommunicationRequestMatrix - - - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/UnionHuntforConsumerAbstractMatrix.h b/YuMi/Modules/YMMine/View/Guild/Model/UnionHuntforConsumerAbstractMatrix.h deleted file mode 100644 index 6ba91a52..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/UnionHuntforConsumerAbstractMatrix.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// UnionHuntforConsumerAbstractMatrix.h -// YuMi -// -// Created by YuMi on 2022/4/8. -// 搜索平台成员 - -#import -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -@interface UnionHuntforConsumerAbstractMatrix : NSObject -@property (nonatomic,copy) NSString *uid; -@property (nonatomic,copy) NSString *avatar; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,assign) GenderGenre gender; -@property (nonatomic,copy) NSString *erbanNo; -@property (nonatomic,assign) int hallBtnStatus; -@property (nonatomic,assign) NSInteger hallRecordId; -@property (nonatomic,copy) NSString *hallMessageUid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/UnionHuntforConsumerAbstractMatrix.m b/YuMi/Modules/YMMine/View/Guild/Model/UnionHuntforConsumerAbstractMatrix.m deleted file mode 100644 index 3aea1a6f..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/UnionHuntforConsumerAbstractMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// UnionHuntforConsumerAbstractMatrix.m -// YuMi -// -// Created by YuMi on 2022/4/8. -// - -#import "UnionHuntforConsumerAbstractMatrix.h" - -@implementation UnionHuntforConsumerAbstractMatrix - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/XPMineGuildListModel.h b/YuMi/Modules/YMMine/View/Guild/Model/XPMineGuildListModel.h new file mode 100644 index 00000000..dc420196 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/XPMineGuildListModel.h @@ -0,0 +1,51 @@ +// +// XPMineGuildListModel.h +// YuMi +// +// Created by YuMi on 2023/6/30. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineGuildListModel : NSObject +///公会id +@property (nonatomic,assign) NSInteger clanId; +///公会长id +@property (nonatomic,assign) NSInteger clanElderUid; +/// 公会头像 +@property (nonatomic,copy) NSString *avatar; +/// 公会收入 +@property (nonatomic,assign) NSInteger income; +///公会等级 +@property (nonatomic,assign) NSInteger level; +///公会名 +@property (nonatomic,copy) NSString *name; +///公会等级图标 +@property (nonatomic,copy) NSString *levelIcon; +///0=不显示 1=可申请 2=已申请 +@property (nonatomic,assign) int applyBtnStatus; +///按钮状态 0=不显示,4=可邀请,5=待通过,6=通过申请 +@property (nonatomic,assign) int hallBtnStatus; +/// integer($int64)当 hallBtnStatus=6 时,对应的申请记录Id +@property (nonatomic,assign) NSInteger hallRecordId; +///公会会话id +@property (nonatomic,copy) NSString *hallMessageUid; +/// +@property (nonatomic,assign) NSInteger recordId; + +/*房间*/ + +///房间id +@property (nonatomic,assign) NSInteger hallId; + +/// 房间头像 +@property (nonatomic,copy) NSString *ownerAvatar; +@property (nonatomic,assign) NSInteger ownerUid; +@property (nonatomic,assign) NSInteger ownerErbanNo; +///房间名 +@property (nonatomic,copy) NSString *hallName; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/XPMineGuildListModel.m b/YuMi/Modules/YMMine/View/Guild/Model/XPMineGuildListModel.m new file mode 100644 index 00000000..62aa5850 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Model/XPMineGuildListModel.m @@ -0,0 +1,12 @@ +// +// XPMineGuildListModel.m +// YuMi +// +// Created by YuMi on 2023/6/30. +// + +#import "XPMineGuildListModel.h" + +@implementation XPMineGuildListModel + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Model/YUMIManeUnionStatementMatrix.h b/YuMi/Modules/YMMine/View/Guild/Model/YUMIManeUnionStatementMatrix.h deleted file mode 100644 index 3a902628..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/YUMIManeUnionStatementMatrix.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// YUMIManeUnionStatementMatrix.h -// YuMi -// -// Created by YuMi on 2023/6/30. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeUnionStatementMatrix : NSObject -@property (nonatomic,assign) NSInteger clanId; -@property (nonatomic,assign) NSInteger clanElderUid; -@property (nonatomic,copy) NSString *avatar; -@property (nonatomic,assign) NSInteger income; -@property (nonatomic,assign) NSInteger level; -@property (nonatomic,copy) NSString *name; -@property (nonatomic,copy) NSString *levelIcon; -@property (nonatomic,assign) int applyBtnStatus; -@property (nonatomic,assign) int hallBtnStatus; -@property (nonatomic,assign) NSInteger hallRecordId; -@property (nonatomic,copy) NSString *hallMessageUid; -@property (nonatomic,assign) NSInteger recordId; - - - -@property (nonatomic,assign) NSInteger hallId; - -@property (nonatomic,copy) NSString *ownerAvatar; -@property (nonatomic,assign) NSInteger ownerUid; -@property (nonatomic,assign) NSInteger ownerErbanNo; -@property (nonatomic,copy) NSString *hallName; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Model/YUMIManeUnionStatementMatrix.m b/YuMi/Modules/YMMine/View/Guild/Model/YUMIManeUnionStatementMatrix.m deleted file mode 100644 index c9d9644c..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Model/YUMIManeUnionStatementMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YUMIManeUnionStatementMatrix.m -// YuMi -// -// Created by YuMi on 2023/6/30. -// - -#import "YUMIManeUnionStatementMatrix.h" - -@implementation YUMIManeUnionStatementMatrix - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Income/XPGuildIncomeDetailPresenter.h b/YuMi/Modules/YMMine/View/Guild/Presenter/Income/XPGuildIncomeDetailPresenter.h new file mode 100644 index 00000000..64e9fa1b --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Presenter/Income/XPGuildIncomeDetailPresenter.h @@ -0,0 +1,16 @@ +// +// XPGuildIncomeDetailPresenter.h +// YuMi +// +// Created by YuMi on 2022/4/12. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPGuildIncomeDetailPresenter : BaseMvpPresenter +- (void)getUserIncomeDetailList:(NSString *)hallId memberId:(NSString *)memberId startTimeStr:(NSString *)startTimeStr endTimeStr:(NSString *)endTimeStr; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Income/XPGuildIncomeDetailPresenter.m b/YuMi/Modules/YMMine/View/Guild/Presenter/Income/XPGuildIncomeDetailPresenter.m new file mode 100644 index 00000000..fb2528ab --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Presenter/Income/XPGuildIncomeDetailPresenter.m @@ -0,0 +1,26 @@ +// +// XPGuildIncomeDetailPresenter.m +// YuMi +// +// Created by YuMi on 2022/4/12. +// + +#import "XPGuildIncomeDetailPresenter.h" +#import "Api+Guild.h" +#import "GuildIncomeDetailModel.h" +#import "XPGuildIncomeDetailProtocol.h" +#import "AccountInfoStorage.h" +@implementation XPGuildIncomeDetailPresenter + + +- (void)getUserIncomeDetailList:(NSString *)hallId memberId:(NSString *)memberId startTimeStr:(NSString *)startTimeStr endTimeStr:(NSString *)endTimeStr { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api getHallIncomeDetail:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [GuildIncomeDetailModel modelsWithArray:data.data]; + [[self getView] getUserIncomeDetailListSuccess:array]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getUserIncomeDetailListFail:msg]; + }] hallId:hallId memberId:memberId uid:uid startTimeStr:startTimeStr endTimeStr:endTimeStr]; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Income/XPGuildIncomePresenter.h b/YuMi/Modules/YMMine/View/Guild/Presenter/Income/XPGuildIncomePresenter.h new file mode 100644 index 00000000..3fe408b9 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Presenter/Income/XPGuildIncomePresenter.h @@ -0,0 +1,35 @@ +// +// XPGuildIncomePresenter.h +// YuMi +// +// Created by YuMi on 2022/4/11. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPGuildIncomePresenter : BaseMvpPresenter +/// 获取家族所有的收入记录 +/// @param clanId 家族的id +/// @param startTime 开始时间 +/// @param endTime 结束时间 +- (void)getClanTotalIncome:(NSString *)clanId startTime:(NSString *)startTime endTime:(NSString *)endTime; +/// 获取公会所有的收入记录 +/// @param hallId 公会的id +/// @param startTime 开始时间 +/// @param endTime 结束时间 +- (void)getHallTotalIncome:(NSString *)hallId startTime:(NSString *)startTime endTime:(NSString *)endTime; +/// 获取家族所有个播的收入记录 +/// @param clanId 家族的id +/// @param startTime 开始时间 +/// @param endTime 结束时间 +- (void)getClanAnchorTotalIncome:(NSString *)clanId startTime:(NSString *)startTime endTime:(NSString *)endTime; +/// 获取公会所有个播的收入记录 +/// @param hallId 家族的id +/// @param startTime 开始时间 +/// @param endTime 结束时间 +- (void)getHallAnchorTotalIncome:(NSString *)clanId startTime:(NSString *)startTime endTime:(NSString *)endTime; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Income/XPGuildIncomePresenter.m b/YuMi/Modules/YMMine/View/Guild/Presenter/Income/XPGuildIncomePresenter.m new file mode 100644 index 00000000..f76ecd5c --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Presenter/Income/XPGuildIncomePresenter.m @@ -0,0 +1,74 @@ +// +// XPGuildIncomePresenter.m +// YuMi +// +// Created by YuMi on 2022/4/11. +// + +#import "XPGuildIncomePresenter.h" +#import "Api+Guild.h" +#import "AccountInfoStorage.h" +#import "GuildIncomeRecordModel.h" +#import "GuildPersonIncomeRecordModel.h" +#import "XPGuildIncomeProtocol.h" + +@implementation XPGuildIncomePresenter + + +/// 获取家族所有的收入记录 +/// @param clanId 家族的id +/// @param startTime 开始时间 +/// @param endTime 结束时间 +- (void)getClanTotalIncome:(NSString *)clanId startTime:(NSString *)startTime endTime:(NSString *)endTime { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api getClanIncomeRecord:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + GuildIncomeRecordModel * incomeModel = [GuildIncomeRecordModel modelWithDictionary:data.data]; + [[self getView] getClanTotalIncomeScuess:incomeModel]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getClanTotalIncomeFail:msg]; + }] uid:uid clanId:clanId startTime:startTime endTime:endTime]; +} + +/// 获取公会所有的收入记录 +/// @param hallId 公会的id +/// @param startTime 开始时间 +/// @param endTime 结束时间 +- (void)getHallTotalIncome:(NSString *)hallId startTime:(NSString *)startTime endTime:(NSString *)endTime { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api getGuildIncomeRecord:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + GuildPersonIncomeRecordModel * incomeModel = [GuildPersonIncomeRecordModel modelWithDictionary:data.data]; + [[self getView] getHallTotalIncomeScuess:incomeModel]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getHallTotalIncomeFail:msg]; + }] uid:uid hallId:hallId startTimeStr:startTime endTimeStr:endTime]; +} + +/// 获取家族所有个播的收入记录 +/// @param clanId 家族的id +/// @param startTime 开始时间 +/// @param endTime 结束时间 +- (void)getClanAnchorTotalIncome:(NSString *)clanId startTime:(NSString *)startTime endTime:(NSString *)endTime { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api getClanSingleRoomIncomeRecord:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + GuildPersonIncomeRecordModel * incomeModel = [GuildPersonIncomeRecordModel modelWithDictionary:data.data]; + [[self getView] getClanAnchorTotalIncomeSuccess:incomeModel]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getClanAnchorTotalIncomeFail:msg]; + }] uid:uid clanId:clanId startTime:startTime endTime:endTime]; +} + +/// 获取公会所有个播的收入记录 +/// @param clanId 家族的id +/// @param startTime 开始时间 +/// @param endTime 结束时间 +- (void)getHallAnchorTotalIncome:(NSString *)clanId startTime:(NSString *)startTime endTime:(NSString *)endTime { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api getHallSingleRoomIncomeRecord:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + GuildPersonIncomeRecordModel * incomeModel = [GuildPersonIncomeRecordModel modelWithDictionary:data.data]; + [[self getView] getHallAnchorTotalIncomeSuccess:incomeModel]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getHallAnchorTotalIncomeFail:msg]; + }] uid:uid clanId:clanId startTime:startTime endTime:endTime]; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Income/YUMIUnionRevenueExternalizer.h b/YuMi/Modules/YMMine/View/Guild/Presenter/Income/YUMIUnionRevenueExternalizer.h deleted file mode 100644 index f4820b1f..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Presenter/Income/YUMIUnionRevenueExternalizer.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YUMIUnionRevenueExternalizer.h -// YuMi -// -// Created by YuMi on 2022/4/11. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIUnionRevenueExternalizer : BaseMvpExternalizer -- (void)acquireCollectiveGeneralRevenue:(NSString *)clanId startTime:(NSString *)startTime endTime:(NSString *)endTime; -- (void)acquireCorridorGeneralRevenue:(NSString *)hallId startTime:(NSString *)startTime endTime:(NSString *)endTime; -- (void)acquireCollectiveKellegGeneralRevenue:(NSString *)clanId startTime:(NSString *)startTime endTime:(NSString *)endTime; -- (void)acquireCorridorKellegGeneralRevenue:(NSString *)clanId startTime:(NSString *)startTime endTime:(NSString *)endTime; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Income/YUMIUnionRevenueExternalizer.m b/YuMi/Modules/YMMine/View/Guild/Presenter/Income/YUMIUnionRevenueExternalizer.m deleted file mode 100644 index bc8b07f7..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Presenter/Income/YUMIUnionRevenueExternalizer.m +++ /dev/null @@ -1,58 +0,0 @@ -// -// YUMIUnionRevenueExternalizer.m -// YuMi -// -// Created by YuMi on 2022/4/11. -// - -#import "YUMIUnionRevenueExternalizer.h" -#import "Api+Guild.h" -#import "AccountAbstractStorage.h" -#import "UnionRevenueReflectionMatrix.h" -#import "UnionFeatureRevenueReflectionMatrix.h" -#import "FBCUnionIncomeCeremony.h" - -@implementation YUMIUnionRevenueExternalizer - - -- (void)acquireCollectiveGeneralRevenue:(NSString *)clanId startTime:(NSString *)startTime endTime:(NSString *)endTime { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api acquireCollectiveRevenueReflection:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - UnionRevenueReflectionMatrix * incomeModel = [UnionRevenueReflectionMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireCollectiveGeneralRevenueScuess:incomeModel]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireCollectiveGeneralRevenueFlunk:msg]; - }] uid:uid clanId:clanId startTime:startTime endTime:endTime]; -} - -- (void)acquireCorridorGeneralRevenue:(NSString *)hallId startTime:(NSString *)startTime endTime:(NSString *)endTime { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api acquireUnionRevenueReflection:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - UnionFeatureRevenueReflectionMatrix * incomeModel = [UnionFeatureRevenueReflectionMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireCorridorGeneralRevenueScuess:incomeModel]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireCorridorGeneralRevenueFlunk:msg]; - }] uid:uid hallId:hallId startIntratemporalBWStt:startTime endIntratemporalBWStt:endTime]; -} - -- (void)acquireCollectiveKellegGeneralRevenue:(NSString *)clanId startTime:(NSString *)startTime endTime:(NSString *)endTime { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api acquireCollectiveSingleChamberRevenueReflection:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - UnionFeatureRevenueReflectionMatrix * incomeModel = [UnionFeatureRevenueReflectionMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireCollectiveKellegGeneralRevenueAccomplishment:incomeModel]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireCollectiveKellegGeneralRevenueFlunk:msg]; - }] uid:uid clanId:clanId startTime:startTime endTime:endTime]; -} - -- (void)acquireCorridorKellegGeneralRevenue:(NSString *)clanId startTime:(NSString *)startTime endTime:(NSString *)endTime { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api acquireCorridorSingleChamberRevenueReflection:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - UnionFeatureRevenueReflectionMatrix * incomeModel = [UnionFeatureRevenueReflectionMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireCorridorKellegGeneralRevenueAccomplishment:incomeModel]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireCorridorKellegGeneralRevenueFlunk:msg]; - }] uid:uid clanId:clanId startTime:startTime endTime:endTime]; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Income/YUMIUnionRevenueSpecificExternalizer.h b/YuMi/Modules/YMMine/View/Guild/Presenter/Income/YUMIUnionRevenueSpecificExternalizer.h deleted file mode 100644 index 06e90da3..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Presenter/Income/YUMIUnionRevenueSpecificExternalizer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIUnionRevenueSpecificExternalizer.h -// YuMi -// -// Created by YuMi on 2022/4/12. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIUnionRevenueSpecificExternalizer : BaseMvpExternalizer -- (void)acquireConsumerRevenueSpecificSttowardsement:(NSString *)hallId memberId:(NSString *)memberId startIntratemporalBWStt:(NSString *)startIntratemporalBWStt endIntratemporalBWStt:(NSString *)endIntratemporalBWStt; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Income/YUMIUnionRevenueSpecificExternalizer.m b/YuMi/Modules/YMMine/View/Guild/Presenter/Income/YUMIUnionRevenueSpecificExternalizer.m deleted file mode 100644 index 6789cd4f..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Presenter/Income/YUMIUnionRevenueSpecificExternalizer.m +++ /dev/null @@ -1,26 +0,0 @@ -// -// YUMIUnionRevenueSpecificExternalizer.m -// YuMi -// -// Created by YuMi on 2022/4/12. -// - -#import "YUMIUnionRevenueSpecificExternalizer.h" -#import "Api+Guild.h" -#import "UnionRevenueSpecificMatrix.h" -#import "FBCUnionIncomeDetailCeremony.h" -#import "AccountAbstractStorage.h" -@implementation YUMIUnionRevenueSpecificExternalizer - - -- (void)acquireConsumerRevenueSpecificSttowardsement:(NSString *)hallId memberId:(NSString *)memberId startIntratemporalBWStt:(NSString *)startIntratemporalBWStt endIntratemporalBWStt:(NSString *)endIntratemporalBWStt { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api acquireCorridorRevenueSpecific:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [UnionRevenueSpecificMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireConsumerRevenueSpecificSttowardsementAccomplishment:array]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireConsumerRevenueSpecificSttowardsementFlunk:msg]; - }] hallId:hallId memberId:memberId uid:uid startIntratemporalBWStt:startIntratemporalBWStt endIntratemporalBWStt:endIntratemporalBWStt]; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPGuildManagerPerPresenter.h b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPGuildManagerPerPresenter.h new file mode 100644 index 00000000..6bbef490 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPGuildManagerPerPresenter.h @@ -0,0 +1,25 @@ +// +// XPGuildManagerPerPesenter.h +// YuMi +// +// Created by YuMi on 2022/4/8. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPGuildManagerPerPresenter : BaseMvpPresenter + +/// 获取房间管理权限 +/// @param managerUid 管理uid +- (void)getGuildRoomManagerPermiss:(NSString *)managerUid; + +/// 更新公会房间管理的权限 +/// @param hallId 公会的id +/// @param managerUid 管理的uid +/// @param authStr 更新的权限 +- (void)updateGuildRoomManagerPermiss:(NSString *)hallId managerUid:(NSString *)managerUid authStr:(NSString *)authStr; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPGuildManagerPerPresenter.m b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPGuildManagerPerPresenter.m new file mode 100644 index 00000000..1e063143 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPGuildManagerPerPresenter.m @@ -0,0 +1,40 @@ +// +// XPGuildManagerPerPesenter.m +// YuMi +// +// Created by YuMi on 2022/4/8. +// + +#import "XPGuildManagerPerPresenter.h" +#import "Api+Guild.h" +#import "AccountInfoStorage.h" +#import "GuildAuthModel.h" +#import "XPGuildManagerPerProtocol.h" + + +@implementation XPGuildManagerPerPresenter + + +/// 获取房间管理权限 +/// @param managerUid 管理uid +- (void)getGuildRoomManagerPermiss:(NSString *)managerUid { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api guildManagerAuthCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [GuildAuthModel modelsWithArray:data.data]; + [[self getView] getGuildRoomManagerPermissSuccess:array]; + }] uid:uid managerUid:managerUid]; +} + + +/// 更新公会房间管理的权限 +/// @param hallId 公会的id +/// @param managerUid 管理的uid +/// @param authStr 更新的权限 +- (void)updateGuildRoomManagerPermiss:(NSString *)hallId managerUid:(NSString *)managerUid authStr:(NSString *)authStr{ + NSString * uid = [AccountInfoStorage instance].getUid; + [Api setGuildManagerAuthCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] updateGuildRoomManagerPermissSuccess]; + }] uid:uid managerUid:managerUid hallId:hallId authStr:authStr]; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPGuildMangerListPresenter.h b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPGuildMangerListPresenter.h new file mode 100644 index 00000000..2f3d5ded --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPGuildMangerListPresenter.h @@ -0,0 +1,21 @@ +// +// XPGuildMangerListPresenter.h +// YuMi +// +// Created by YuMi on 2022/4/8. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPGuildMangerListPresenter : BaseMvpPresenter +/// 获取公会管理列表 +/// @param hallId 公会的id +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +/// @param state 0下拉 1 上啦 +- (void)getGuildRoomManagerList:(NSString *)hallId page:(int)page pageSize:(int)pageSize state:(int)state; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPGuildMangerListPresenter.m b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPGuildMangerListPresenter.m new file mode 100644 index 00000000..b6c5ef6a --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPGuildMangerListPresenter.m @@ -0,0 +1,31 @@ +// +// XPGuildMangerListPresenter.m +// YuMi +// +// Created by YuMi on 2022/4/8. +// + +#import "XPGuildMangerListPresenter.h" +#import "XPGuildManagerListProtocol.h" +#import "Api+Guild.h" +#import "ClanMemberDetailInfoModel.h" + +@implementation XPGuildMangerListPresenter + +/// 获取公会管理列表 +/// @param hallId 公会的id +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +/// @param state 0下拉 1 上啦 +- (void)getGuildRoomManagerList:(NSString *)hallId page:(int)page pageSize:(int)pageSize state:(int)state{ + NSString * pageStr = [NSString stringWithFormat:@"%d", page]; + NSString * pageSizeStr = [NSString stringWithFormat:@"%d", pageSize]; + [Api getGuildRoomManagerCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + ClanMemberDetailInfoModel * info = [ClanMemberDetailInfoModel modelWithDictionary:data.data]; + [[self getView] getGuildRoomManagerListSuccess:info state:state]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getGuildRoomManagerListFail:msg state:state]; + }] hallId:hallId page:pageStr pageSize:pageSizeStr]; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPGuildRemoveMemberPresenter.h b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPGuildRemoveMemberPresenter.h new file mode 100644 index 00000000..1f7c947d --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPGuildRemoveMemberPresenter.h @@ -0,0 +1,25 @@ +// +// XPGuildRemoveMemberPresenter.h +// YuMi +// +// Created by YuMi on 2022/4/8. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPGuildRemoveMemberPresenter : BaseMvpPresenter +/// 获取公会成员列表 +/// @param hallId 公会id +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +/// @param state 状态 +- (void)getGuildMemberList:(NSString *)hallId page:(int)page pageSize:(NSInteger)pageSize state:(int)state; +/// 移除公会成员 +/// @param targetUid 目标用户的uid +/// @param hallId 公会的id +- (void)removeGuildMember:(NSString *)targetUid hallId:(NSString *)hallId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPGuildRemoveMemberPresenter.m b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPGuildRemoveMemberPresenter.m new file mode 100644 index 00000000..bd6594c1 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPGuildRemoveMemberPresenter.m @@ -0,0 +1,42 @@ +// +// XPGuildRemoveMemberPresenter.m +// YuMi +// +// Created by YuMi on 2022/4/8. +// + +#import "XPGuildRemoveMemberPresenter.h" +#import "AccountInfoStorage.h" +#import "ClanMemberDetailInfoModel.h" +#import "Api+Guild.h" +#import "XPGuildRemoveMemberProtocol.h" + +@implementation XPGuildRemoveMemberPresenter +/// 获取公会成员列表 +/// @param hallId 公会id +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +/// @param state 状态 +- (void)getGuildMemberList:(NSString *)hallId page:(int)page pageSize:(NSInteger)pageSize state:(int)state { + NSString * pageStr = [NSString stringWithFormat:@"%d", page]; + NSString * pageSizeStr = [NSString stringWithFormat:@"%ld", pageSize]; + [Api getGuildMemberList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + ClanMemberDetailInfoModel * memberInfo = [ClanMemberDetailInfoModel modelWithDictionary:data.data]; + [[self getView] getGuildMemberListSuccess:memberInfo state:state]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getGuildMemberListFail:msg state:state]; + }] hallId:hallId page:pageStr pageSize:pageSizeStr]; +} + + +/// 移除公会成员 +/// @param targetUid 目标用户的uid +/// @param hallId 公会的id +- (void)removeGuildMember:(NSString *)targetUid hallId:(NSString *)hallId { + NSString *uid = [AccountInfoStorage instance].getUid; + [Api removeGuildMemberCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] removeGuildMemberSuccess]; + } showLoading:YES] uid:uid targetUid:targetUid hallId:hallId]; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPGuildSetNamePresenter.h b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPGuildSetNamePresenter.h new file mode 100644 index 00000000..3e5979df --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPGuildSetNamePresenter.h @@ -0,0 +1,17 @@ +// +// XPGuildSetNamePresenter.h +// YuMi +// +// Created by YuMi on 2022/4/7. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPGuildSetNamePresenter : BaseMvpPresenter + +- (void)updateGuildRoomName:(NSString *)roomName hallId:(NSString *)hallId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPGuildSetNamePresenter.m b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPGuildSetNamePresenter.m new file mode 100644 index 00000000..5356d943 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPGuildSetNamePresenter.m @@ -0,0 +1,22 @@ +// +// XPGuildSetNamePresenter.m +// YuMi +// +// Created by YuMi on 2022/4/7. +// + +#import "XPGuildSetNamePresenter.h" +#import "AccountInfoStorage.h" +#import "Api+Guild.h" +#import "XPGuildSetNameProtocol.h" + +@implementation XPGuildSetNamePresenter + +- (void)updateGuildRoomName:(NSString *)roomName hallId:(NSString *)hallId { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api updateGuildRoomName:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] updateGuildRoomNameSuccess]; + } showLoading:YES] hallName:roomName hallId:hallId uid:uid]; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPMineManagerSetPresenter.h b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPMineManagerSetPresenter.h new file mode 100644 index 00000000..d59366b8 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPMineManagerSetPresenter.h @@ -0,0 +1,30 @@ +// +// XPMineManagerSetPresenter.h +// YuMi +// +// Created by YuMi on 2022/4/8. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineManagerSetPresenter : BaseMvpPresenter +/// 获取公会成员列表 +/// @param hallId 公会id +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +/// @param state 状态 +- (void)getGuildMemberList:(NSString *)hallId page:(int)page pageSize:(NSInteger)pageSize state:(int)state; +/// 设置管理员 +/// @param targetUid 目标用户的uid +/// @param hallId 公会的id +- (void)guildRoomAddManager:(NSString *)targetUid hallId:(NSString *)hallId; + +/// 移除管理员 +/// @param targetUid 目标用户的uid +/// @param hallId 公会的id +- (void)guildRoomRemoveManager:(NSString *)targetUid hallId:(NSString *)hallId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPMineManagerSetPresenter.m b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPMineManagerSetPresenter.m new file mode 100644 index 00000000..8fcc6a2b --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/XPMineManagerSetPresenter.m @@ -0,0 +1,52 @@ +// +// XPMineManagerSetPresenter.m +// YuMi +// +// Created by YuMi on 2022/4/8. +// + +#import "XPMineManagerSetPresenter.h" +#import "Api+Guild.h" +#import "ClanMemberDetailInfoModel.h" +#import "XPGuildSetManagerProtocol.h" +#import "AccountInfoStorage.h" + +@implementation XPMineManagerSetPresenter + +/// 获取公会成员列表 +/// @param hallId 公会id +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +/// @param state 状态 +- (void)getGuildMemberList:(NSString *)hallId page:(int)page pageSize:(NSInteger)pageSize state:(int)state { + NSString * pageStr = [NSString stringWithFormat:@"%d", page]; + NSString * pageSizeStr = [NSString stringWithFormat:@"%ld", pageSize]; + [Api getGuildMemberList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + ClanMemberDetailInfoModel * memberInfo = [ClanMemberDetailInfoModel modelWithDictionary:data.data]; + [[self getView] getGuildMemberListSuccess:memberInfo state:state]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getGuildMemberListFail:msg state:state]; + }] hallId:hallId page:pageStr pageSize:pageSizeStr]; +} + +/// 设置管理员 +/// @param targetUid 目标用户的uid +/// @param hallId 公会的id +- (void)guildRoomAddManager:(NSString *)targetUid hallId:(NSString *)hallId { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api guildRoomSetManagerCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] guildRoomAddManagerSuccess:targetUid]; + } showLoading:YES] hallId:hallId uid:uid targetUid:targetUid]; +} + +/// 移除管理员 +/// @param targetUid 目标用户的uid +/// @param hallId 公会的id +- (void)guildRoomRemoveManager:(NSString *)targetUid hallId:(NSString *)hallId { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api guildRoomCancelManagerCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] guildRoomRemoveManagerSuccess:targetUid]; + } showLoading:YES] hallId:hallId uid:uid targetUid:targetUid]; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIManeExecutiveSetExternalizer.h b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIManeExecutiveSetExternalizer.h deleted file mode 100644 index 28798c25..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIManeExecutiveSetExternalizer.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YUMIManeExecutiveSetExternalizer.h -// YuMi -// -// Created by YuMi on 2022/4/8. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeExecutiveSetExternalizer : BaseMvpExternalizer -- (void)acquireUnionComponentSttowardsement:(NSString *)hallId page:(int)page pageSize:(NSInteger)pageSize state:(int)state; -- (void)unionChamberAccelertowardseExecutive:(NSString *)targetUid hallId:(NSString *)hallId; - -- (void)unionChamberTransltowardseExecutive:(NSString *)targetUid hallId:(NSString *)hallId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIManeExecutiveSetExternalizer.m b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIManeExecutiveSetExternalizer.m deleted file mode 100644 index 2b5eb40c..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIManeExecutiveSetExternalizer.m +++ /dev/null @@ -1,41 +0,0 @@ -// -// YUMIManeExecutiveSetExternalizer.m -// YuMi -// -// Created by YuMi on 2022/4/8. -// - -#import "YUMIManeExecutiveSetExternalizer.h" -#import "Api+Guild.h" -#import "CollectiveComponentSpecificAbstractMatrix.h" -#import "FBCUnionSetExecutiveCeremony.h" -#import "AccountAbstractStorage.h" - -@implementation YUMIManeExecutiveSetExternalizer - -- (void)acquireUnionComponentSttowardsement:(NSString *)hallId page:(int)page pageSize:(NSInteger)pageSize state:(int)state { - NSString * pageStr = [NSString stringWithFormat:@"%d", page]; - NSString * pageSizeStr = [NSString stringWithFormat:@"%ld", pageSize]; - [Api acquireUnionComponentSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - CollectiveComponentSpecificAbstractMatrix * componentAbstract = [CollectiveComponentSpecificAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireUnionComponentSttowardsementAccomplishment:componentAbstract state:state]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireUnionComponentSttowardsementFlunk:msg state:state]; - }] hallId:hallId page:pageStr pageSize:pageSizeStr]; -} - -- (void)unionChamberAccelertowardseExecutive:(NSString *)targetUid hallId:(NSString *)hallId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api unionChamberSetExecutiveImplementtowardsion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] unionChamberAccelertowardseExecutiveAccomplishment:targetUid]; - } EvidenceChambering:YES] hallId:hallId uid:uid targetUid:targetUid]; -} - -- (void)unionChamberTransltowardseExecutive:(NSString *)targetUid hallId:(NSString *)hallId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api unionChamberRevoctowardsionExecutiveImplementtowardsion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] unionChamberTransltowardseExecutiveAccomplishment:targetUid]; - } EvidenceChambering:YES] hallId:hallId uid:uid targetUid:targetUid]; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIUnionExecutivePerExternalizer.h b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIUnionExecutivePerExternalizer.h deleted file mode 100644 index 93b4fbf9..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIUnionExecutivePerExternalizer.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// XPGuildManagerPerPesenter.h -// YuMi -// -// Created by YuMi on 2022/4/8. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIUnionExecutivePerExternalizer : BaseMvpExternalizer - -- (void)acquireUnionChamberExecutivePrecondition:(NSString *)managerUid; - -- (void)refurbishUnionChamberExecutivePrecondition:(NSString *)hallId managerUid:(NSString *)managerUid authStr:(NSString *)authStr; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIUnionExecutivePerExternalizer.m b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIUnionExecutivePerExternalizer.m deleted file mode 100644 index b51c8e1a..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIUnionExecutivePerExternalizer.m +++ /dev/null @@ -1,34 +0,0 @@ -// -// XPGuildManagerPerPesenter.m -// YuMi -// -// Created by YuMi on 2022/4/8. -// - -#import "YUMIUnionExecutivePerExternalizer.h" -#import "Api+Guild.h" -#import "AccountAbstractStorage.h" -#import "UnionAuthMatrix.h" -#import "FBCUnionExecutivePerCeremony.h" - - -@implementation YUMIUnionExecutivePerExternalizer - - -- (void)acquireUnionChamberExecutivePrecondition:(NSString *)managerUid { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api unionExecutiveTowardstesttowardsionImplementtowardsion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [UnionAuthMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireUnionChamberExecutivePreconditionAccomplishment:array]; - }] uid:uid managerUid:managerUid]; -} - - -- (void)refurbishUnionChamberExecutivePrecondition:(NSString *)hallId managerUid:(NSString *)managerUid authStr:(NSString *)authStr{ - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api setUnionExecutiveTowardstesttowardsionImplementtowardsion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] refurbishUnionChamberExecutivePreconditionAccomplishment]; - }] uid:uid managerUid:managerUid hallId:hallId authStr:authStr]; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIUnionMangerStatementExternalizer.h b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIUnionMangerStatementExternalizer.h deleted file mode 100644 index 76b7294d..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIUnionMangerStatementExternalizer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIUnionMangerStatementExternalizer.h -// YuMi -// -// Created by YuMi on 2022/4/8. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIUnionMangerStatementExternalizer : BaseMvpExternalizer -- (void)acquireUnionChamberExecutiveSttowardsement:(NSString *)hallId page:(int)page pageSize:(int)pageSize state:(int)state; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIUnionMangerStatementExternalizer.m b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIUnionMangerStatementExternalizer.m deleted file mode 100644 index 0935ddd7..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIUnionMangerStatementExternalizer.m +++ /dev/null @@ -1,26 +0,0 @@ -// -// YUMIUnionMangerStatementExternalizer.m -// YuMi -// -// Created by YuMi on 2022/4/8. -// - -#import "YUMIUnionMangerStatementExternalizer.h" -#import "FBCUnionExecutiveStatementCeremony.h" -#import "Api+Guild.h" -#import "CollectiveComponentSpecificAbstractMatrix.h" - -@implementation YUMIUnionMangerStatementExternalizer - -- (void)acquireUnionChamberExecutiveSttowardsement:(NSString *)hallId page:(int)page pageSize:(int)pageSize state:(int)state{ - NSString * pageStr = [NSString stringWithFormat:@"%d", page]; - NSString * pageSizeStr = [NSString stringWithFormat:@"%d", pageSize]; - [Api acquireUnionChamberExecutiveImplementtowardsion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - CollectiveComponentSpecificAbstractMatrix * info = [CollectiveComponentSpecificAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireUnionChamberExecutiveSttowardsementAccomplishment:info state:state]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireUnionChamberExecutiveSttowardsementFlunk:msg state:state]; - }] hallId:hallId page:pageStr pageSize:pageSizeStr]; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIUnionRemoveComponentExternalizer.h b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIUnionRemoveComponentExternalizer.h deleted file mode 100644 index 8c211306..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIUnionRemoveComponentExternalizer.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YUMIUnionRemoveComponentExternalizer.h -// YuMi -// -// Created by YuMi on 2022/4/8. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIUnionRemoveComponentExternalizer : BaseMvpExternalizer -- (void)acquireUnionComponentSttowardsement:(NSString *)hallId page:(int)page pageSize:(NSInteger)pageSize state:(int)state; -- (void)transltowardseUnionComponent:(NSString *)targetUid hallId:(NSString *)hallId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIUnionRemoveComponentExternalizer.m b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIUnionRemoveComponentExternalizer.m deleted file mode 100644 index 6dd6b2b7..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIUnionRemoveComponentExternalizer.m +++ /dev/null @@ -1,34 +0,0 @@ -// -// YUMIUnionRemoveComponentExternalizer.m -// YuMi -// -// Created by YuMi on 2022/4/8. -// - -#import "YUMIUnionRemoveComponentExternalizer.h" -#import "AccountAbstractStorage.h" -#import "CollectiveComponentSpecificAbstractMatrix.h" -#import "Api+Guild.h" -#import "FBCUnionRemoveMemberCeremony.h" - -@implementation YUMIUnionRemoveComponentExternalizer -- (void)acquireUnionComponentSttowardsement:(NSString *)hallId page:(int)page pageSize:(NSInteger)pageSize state:(int)state { - NSString * pageStr = [NSString stringWithFormat:@"%d", page]; - NSString * pageSizeStr = [NSString stringWithFormat:@"%ld", pageSize]; - [Api acquireUnionComponentSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - CollectiveComponentSpecificAbstractMatrix * componentAbstract = [CollectiveComponentSpecificAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireUnionComponentSttowardsementAccomplishment:componentAbstract state:state]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireUnionComponentSttowardsementFlunk:msg state:state]; - }] hallId:hallId page:pageStr pageSize:pageSizeStr]; -} - - -- (void)transltowardseUnionComponent:(NSString *)targetUid hallId:(NSString *)hallId { - NSString *uid = [AccountAbstractStorage instance].acquireCid; - [Api transltowardseUnionComponentImplementtowardsion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] transltowardseUnionComponentAccomplishment]; - } EvidenceChambering:YES] uid:uid targetUid:targetUid hallId:hallId]; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIUnionSetNameExternalizer.h b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIUnionSetNameExternalizer.h deleted file mode 100644 index 8c7ccdbc..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIUnionSetNameExternalizer.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YUMIUnionSetNameExternalizer.h -// YuMi -// -// Created by YuMi on 2022/4/7. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIUnionSetNameExternalizer : BaseMvpExternalizer - -- (void)refurbishUnionChamberConstitute:(NSString *)roomName hallId:(NSString *)hallId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIUnionSetNameExternalizer.m b/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIUnionSetNameExternalizer.m deleted file mode 100644 index b3135034..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Presenter/Setting/YUMIUnionSetNameExternalizer.m +++ /dev/null @@ -1,22 +0,0 @@ -// -// YUMIUnionSetNameExternalizer.m -// YuMi -// -// Created by YuMi on 2022/4/7. -// - -#import "YUMIUnionSetNameExternalizer.h" -#import "AccountAbstractStorage.h" -#import "Api+Guild.h" -#import "FBCUnionSetNameCeremony.h" - -@implementation YUMIUnionSetNameExternalizer - -- (void)refurbishUnionChamberConstitute:(NSString *)roomName hallId:(NSString *)hallId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api refurbishUnionChamberConstitute:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] refurbishUnionChamberConstituteAccomplishment]; - } EvidenceChambering:YES] hallName:roomName hallId:hallId uid:uid]; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/SuperAdmin/XPSuperAdminManagerRoomPresenter.h b/YuMi/Modules/YMMine/View/Guild/Presenter/SuperAdmin/XPSuperAdminManagerRoomPresenter.h new file mode 100644 index 00000000..06254798 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Presenter/SuperAdmin/XPSuperAdminManagerRoomPresenter.h @@ -0,0 +1,25 @@ +// +// XPSuperAdminManagerRoomPresenter.h +// YuMi +// +// Created by YuMi on 2022/4/13. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPSuperAdminManagerRoomPresenter : BaseMvpPresenter + +/// 获取公会所有的房间列表 +/// @param clanId 家族id +/// @param targetUid 目标用户的uid +- (void)getGuildRoomList:(NSString *)clanId targetUid:(NSString *)targetUid; + +/// 公会超管设置管理的房间 +/// @param array 房间的uid +/// @param targetUid 目标用户的uid +- (void)guildSuperAdminManagerRoomList:(NSArray *)array targetUid:(NSString *)targetUid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/SuperAdmin/XPSuperAdminManagerRoomPresenter.m b/YuMi/Modules/YMMine/View/Guild/Presenter/SuperAdmin/XPSuperAdminManagerRoomPresenter.m new file mode 100644 index 00000000..db62b945 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Presenter/SuperAdmin/XPSuperAdminManagerRoomPresenter.m @@ -0,0 +1,36 @@ +// +// XPSuperAdminManagerRoomPresenter.m +// YuMi +// +// Created by YuMi on 2022/4/13. +// + +#import "XPSuperAdminManagerRoomPresenter.h" +#import "Api+Guild.h" +#import "GuildRoomInfoModel.h" +#import "XPSuperAdminManagerRoomProtocol.h" + +@implementation XPSuperAdminManagerRoomPresenter + +/// 获取公会所有的房间列表 +/// @param clanId 家族id +/// @param targetUid 目标用户的uid +- (void)getGuildRoomList:(NSString *)clanId targetUid:(NSString *)targetUid { + [Api getHallSuperAdminManagerRoomList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [GuildRoomInfoModel modelsWithArray:data.data]; + [[self getView] getGuildRoomListSuccess:array]; + }] clanId:clanId uid:targetUid]; +} + +/// 公会超管设置管理的房间 +/// @param array 房间的uid +/// @param targetUid 目标用户的uid +- (void)guildSuperAdminManagerRoomList:(NSArray *)array targetUid:(NSString *)targetUid { + NSString * roomUids = @""; + roomUids = [array componentsJoinedByString:@","]; + [Api setSuperAdminManagerRoom:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] guildSuperAdminManagerRoomListSuccess]; + } showLoading:YES] roomUids:roomUids uid:targetUid]; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/SuperAdmin/XPSuperAdminSetPresenter.h b/YuMi/Modules/YMMine/View/Guild/Presenter/SuperAdmin/XPSuperAdminSetPresenter.h new file mode 100644 index 00000000..99ae6e98 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Presenter/SuperAdmin/XPSuperAdminSetPresenter.h @@ -0,0 +1,24 @@ +// +// XPSuperAdminSetPresenter.h +// YuMi +// +// Created by YuMi on 2022/4/13. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPSuperAdminSetPresenter : BaseMvpPresenter + +/// 获取家族超管 +/// @param clanId 家族id +- (void)getClanSuperAdminList:(NSString *)clanId; + + +/// 移除超管 +/// @param targetUid 目标用户的uid +- (void)removeSuperAdmin:(NSString *)targetUid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/SuperAdmin/XPSuperAdminSetPresenter.m b/YuMi/Modules/YMMine/View/Guild/Presenter/SuperAdmin/XPSuperAdminSetPresenter.m new file mode 100644 index 00000000..71b5ef9d --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Presenter/SuperAdmin/XPSuperAdminSetPresenter.m @@ -0,0 +1,33 @@ +// +// XPSuperAdminSetPresenter.m +// YuMi +// +// Created by YuMi on 2022/4/13. +// + +#import "XPSuperAdminSetPresenter.h" +#import "Api+Guild.h" +#import "GuildSuperAdminInfoModel.h" +#import "XPSuperAdminSetProtocol.h" + +@implementation XPSuperAdminSetPresenter + +/// 获取家族超管 +/// @param clanId 家族id +- (void)getClanSuperAdminList:(NSString *)clanId { + [Api getClanSuperAdminList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [GuildSuperAdminInfoModel modelsWithArray:data.data]; + [[self getView] getClanSuperAdminListSuccess:array]; + }] clanId:clanId]; +} + + +/// 移除超管 +/// @param targetUid 目标用户的uid +- (void)removeSuperAdmin:(NSString *)targetUid { + [Api clanRemoveSuperAdmin:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] removeSuperAdminSuccess:targetUid]; + }showLoading:YES] targetUid:targetUid]; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/SuperAdmin/YUMISensationalManagementExecutiveChamberExternalizer.h b/YuMi/Modules/YMMine/View/Guild/Presenter/SuperAdmin/YUMISensationalManagementExecutiveChamberExternalizer.h deleted file mode 100644 index 11b0235c..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Presenter/SuperAdmin/YUMISensationalManagementExecutiveChamberExternalizer.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YUMISensationalManagementExecutiveChamberExternalizer.h -// YuMi -// -// Created by YuMi on 2022/4/13. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISensationalManagementExecutiveChamberExternalizer : BaseMvpExternalizer - -- (void)acquireUnionChamberSttowardsement:(NSString *)clanId targetUid:(NSString *)targetUid; - -- (void)unionSenstowardsionalManagementExecutiveChamberSttowardsement:(NSArray *)array targetUid:(NSString *)targetUid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/SuperAdmin/YUMISensationalManagementExecutiveChamberExternalizer.m b/YuMi/Modules/YMMine/View/Guild/Presenter/SuperAdmin/YUMISensationalManagementExecutiveChamberExternalizer.m deleted file mode 100644 index 7234f1bb..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Presenter/SuperAdmin/YUMISensationalManagementExecutiveChamberExternalizer.m +++ /dev/null @@ -1,30 +0,0 @@ -// -// YUMISensationalManagementExecutiveChamberExternalizer.m -// YuMi -// -// Created by YuMi on 2022/4/13. -// - -#import "YUMISensationalManagementExecutiveChamberExternalizer.h" -#import "Api+Guild.h" -#import "UnionChamberAbstractMatrix.h" -#import "FBCSensationalManagementExecutiveChamberCeremony.h" - -@implementation YUMISensationalManagementExecutiveChamberExternalizer - -- (void)acquireUnionChamberSttowardsement:(NSString *)clanId targetUid:(NSString *)targetUid { - [Api acquireCorridorSenstowardsionalManagementExecutiveChamberSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [UnionChamberAbstractMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireUnionChamberSttowardsementAccomplishment:array]; - }] clanId:clanId uid:targetUid]; -} - -- (void)unionSenstowardsionalManagementExecutiveChamberSttowardsement:(NSArray *)array targetUid:(NSString *)targetUid { - NSString * roomUids = @""; - roomUids = [array componentsJoinedByString:@","]; - [Api setSenstowardsionalManagementExecutiveChamber:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] unionSenstowardsionalManagementExecutiveChamberSttowardsementAccomplishment]; - } EvidenceChambering:YES] roomUids:roomUids uid:targetUid]; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/SuperAdmin/YUMISensationalManagementSetExternalizer.h b/YuMi/Modules/YMMine/View/Guild/Presenter/SuperAdmin/YUMISensationalManagementSetExternalizer.h deleted file mode 100644 index 8d79313a..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Presenter/SuperAdmin/YUMISensationalManagementSetExternalizer.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YUMISensationalManagementSetExternalizer.h -// YuMi -// -// Created by YuMi on 2022/4/13. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISensationalManagementSetExternalizer : BaseMvpExternalizer - -- (void)acquireCollectiveSenstowardsionalManagementSttowardsement:(NSString *)clanId; - - -- (void)transltowardseSenstowardsionalManagement:(NSString *)targetUid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/SuperAdmin/YUMISensationalManagementSetExternalizer.m b/YuMi/Modules/YMMine/View/Guild/Presenter/SuperAdmin/YUMISensationalManagementSetExternalizer.m deleted file mode 100644 index 3620330e..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Presenter/SuperAdmin/YUMISensationalManagementSetExternalizer.m +++ /dev/null @@ -1,29 +0,0 @@ -// -// YUMISensationalManagementSetExternalizer.m -// YuMi -// -// Created by YuMi on 2022/4/13. -// - -#import "YUMISensationalManagementSetExternalizer.h" -#import "Api+Guild.h" -#import "UnionSensationalManagementAbstractMatrix.h" -#import "FBCSensationalManagementSetCeremony.h" - -@implementation YUMISensationalManagementSetExternalizer - -- (void)acquireCollectiveSenstowardsionalManagementSttowardsement:(NSString *)clanId { - [Api acquireCollectiveSenstowardsionalManagementSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [UnionSensationalManagementAbstractMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireCollectiveSenstowardsionalManagementSttowardsementAccomplishment:array]; - }] clanId:clanId]; -} - - -- (void)transltowardseSenstowardsionalManagement:(NSString *)targetUid { - [Api collectiveTransltowardseSenstowardsionalManagement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] transltowardseSenstowardsionalManagementAccomplishment:targetUid]; - }EvidenceChambering:YES] targetUid:targetUid]; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/XPClanPresenter.h b/YuMi/Modules/YMMine/View/Guild/Presenter/XPClanPresenter.h new file mode 100644 index 00000000..99523dfa --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Presenter/XPClanPresenter.h @@ -0,0 +1,34 @@ +// +// XPClanPresenter.h +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN +@class XPMineExchangeAuthorityModel; + +@interface XPClanPresenter : BaseMvpPresenter +/// 获取会长和当前用户家族详细的信息 +/// @param uid 用户的uid +- (void)getClanDetailInfo:(NSString *)uid currentUserUid:(NSString *)currentUserUid; +/// 获取家族成员的列表 +/// @param uid 族长的uid +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +- (void)getClanMemberList:(NSString *)uid page:(int)page pageSize:(NSInteger)pageSize state:(int)state; + +/// 获取当前家族房间的列表 +/// @param clanId 族长的id +- (void)getClanRoomList:(NSString *)clanId; +///房主金币明细 +-(void)getClanRoomGoldList:(NSString *)startTime endTime:(NSString *)endTime; +///房主获取兑换权限列表 +-(void)getClanRoomMemberAuthorityList; +///关闭或开启会员兑换权限 +-(void)masterDisableRrEnablememberExchangeRights:(NSString *)status targetUid:(NSString *)targetUid model:(XPMineExchangeAuthorityModel *)model; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/XPClanPresenter.m b/YuMi/Modules/YMMine/View/Guild/Presenter/XPClanPresenter.m new file mode 100644 index 00000000..c0202e92 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Presenter/XPClanPresenter.m @@ -0,0 +1,91 @@ +// +// XPClanPresenter.m +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import "XPClanPresenter.h" +#import +#import "XPClanProtocol.h" +#import "Api+Guild.h" +#import "ClanDetailInfoModel.h" +#import "ClanMemberDetailInfoModel.h" +#import "XPIncomeRecordGoldDetailsModel.h" +#import "XPMineExchangeAuthorityModel.h" + +@implementation XPClanPresenter + +/// 获取会长和当前用户家族详细的信息 +/// @param uid 用户的uid +- (void)getClanDetailInfo:(NSString *)uid currentUserUid:(NSString *)currentUserUid { + RACSubject* owner = [RACSubject subject]; + RACSubject* currentUser = [RACSubject subject]; + + [[RACSignal combineLatest:@[owner, currentUser] reduce:^id(ClanDetailInfoModel* ownerClanInfo, ClanDetailInfoModel* currentUserClanInfo){ + [[self getView] getClanDetailInfoSuccess:ownerClanInfo currentUserClanInfo:currentUserClanInfo]; + return nil; + }] subscribeError:^(NSError * _Nullable error) { + + }]; + + [Api getClanDetailInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + ClanDetailInfoModel * clanDetailInfo = [ClanDetailInfoModel modelWithDictionary:data.data]; + [currentUser sendNext:clanDetailInfo]; + [currentUser sendCompleted]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [currentUser sendNext:nil]; + [currentUser sendCompleted]; + }] uid:currentUserUid]; + + [Api getClanDetailInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + ClanDetailInfoModel * clanDetailInfo = [ClanDetailInfoModel modelWithDictionary:data.data]; + [owner sendNext:clanDetailInfo]; + [owner sendCompleted]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [owner sendNext:nil]; + [owner sendCompleted]; + }] uid:uid]; +} + +/// 获取家族成员的列表 +/// @param uid 族长的uid +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +- (void)getClanMemberList:(NSString *)uid page:(int)page pageSize:(NSInteger)pageSize state:(int)state { + NSString * pageStr = [NSString stringWithFormat:@"%d", page]; + NSString * pageSizeStr = [NSString stringWithFormat:@"%ld", pageSize]; + [Api getClanMemberList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + ClanMemberDetailInfoModel * model= [ClanMemberDetailInfoModel modelWithDictionary:data.data]; + [[self getView] getClanMemberListSuccess:model state:state]; + }] uid:uid page:pageStr pageSize:pageSizeStr]; +} + +/// 获取当前家族房间的列表 +/// @param clanId 族长的id +- (void)getClanRoomList:(NSString *)clanId { + [Api getRoomListInClan:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [GuildInfoModel modelsWithArray:data.data]; + [[self getView] getClanRoomListSuccess:array]; + }] clanId:clanId]; +} +-(void)getClanRoomGoldList:(NSString *)startTime endTime:(NSString *)endTime{ + [Api getClanRoomGoldsList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + XPIncomeRecordGoldDetailsModel *model = [XPIncomeRecordGoldDetailsModel modelWithDictionary:data.data]; + [[self getView]getClanRoomGoldsListSuccess:model]; + }] startTime:startTime endTime:endTime]; +} +///房主获取兑换权限列表 +-(void)getClanRoomMemberAuthorityList{ + [Api getClanRoomMemberAuthorityList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray *list = [XPMineExchangeAuthorityModel modelsWithArray:data.data]; + [[self getView]getClanRoomMemberAuthorityListSuccess:list]; + }showLoading:YES errorToast:YES]]; +} +///关闭或开启会员兑换权限 +-(void)masterDisableRrEnablememberExchangeRights:(NSString *)status targetUid:(NSString *)targetUid model:(XPMineExchangeAuthorityModel *)model{ + [Api requestMasterDisableRrEnablememberExchangeRights:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView]getExchangeAuthorityResultSuccess:model status:status]; + }showLoading:YES errorToast:YES] status:status targetUid:targetUid]; +} +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/XPGuildPresenter.h b/YuMi/Modules/YMMine/View/Guild/Presenter/XPGuildPresenter.h new file mode 100644 index 00000000..44eb908e --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Presenter/XPGuildPresenter.h @@ -0,0 +1,41 @@ +// +// XPGuildPresenter.h +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPGuildPresenter : BaseMvpPresenter +/// 获取公会成员列表 +/// @param hallId 公会id +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +/// @param state 状态 +- (void)getGuildMemberList:(NSString *)hallId page:(int)page pageSize:(NSInteger)pageSize state:(int)state; + +/// 获取会长和当前用户家族详细的信息 +/// @param uid 用户的uid +- (void)getClanDetailInfo:(NSString *)uid currentUserUid:(NSString *)currentUserUid; + +/// 获取当前房间操作的权限 +/// @param hallId 完成 +- (void)getUserInGuildRoomAuth:(NSString *)hallId; + +/// 邀请用户加入公会 +/// @param targetUid 邀请的用户id +/// @param hallId 公会的id +- (void)inviteMember:(NSString *)targetUid hallId:(NSString *)hallId; + +/// 退出公会房间 +- (void)quitGuildRoom; +///加入房间 +-(void)applyHallWithHallId:(NSString *)hallId; +///加入房间按钮状态 +-(void)applyHallBtnStateWithHallId:(NSString *)hallId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/XPGuildPresenter.m b/YuMi/Modules/YMMine/View/Guild/Presenter/XPGuildPresenter.m new file mode 100644 index 00000000..8f86e96d --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Presenter/XPGuildPresenter.m @@ -0,0 +1,113 @@ +// +// XPGuildPresenter.m +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import "XPGuildPresenter.h" +#import +#import "Api+Guild.h" +#import "AccountInfoStorage.h" +#import "ClanMemberDetailInfoModel.h" +#import "ClanDetailInfoModel.h" +#import "XPGuildProtocol.h" +#import "GuildAuthModel.h" +#import "XPMineGuildListModel.h" + +@implementation XPGuildPresenter + + +/// 获取公会成员列表 +/// @param hallId 公会id +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +/// @param state 状态 +- (void)getGuildMemberList:(NSString *)hallId page:(int)page pageSize:(NSInteger)pageSize state:(int)state { + NSString * pageStr = [NSString stringWithFormat:@"%d", page]; + NSString * pageSizeStr = [NSString stringWithFormat:@"%ld", pageSize]; + [Api getGuildMemberList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + ClanMemberDetailInfoModel * memberInfo = [ClanMemberDetailInfoModel modelWithDictionary:data.data]; + [[self getView] getGuildMemberListSuccess:memberInfo state:state]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getGuildMemberListFail:msg state:state]; + }] hallId:hallId page:pageStr pageSize:pageSizeStr]; +} + +/// 获取会长和当前用户家族详细的信息 +/// @param uid 用户的uid +- (void)getClanDetailInfo:(NSString *)uid currentUserUid:(NSString *)currentUserUid { + RACSubject* owner = [RACSubject subject]; + RACSubject* currentUser = [RACSubject subject]; + + [[RACSignal combineLatest:@[owner, currentUser] reduce:^id(ClanDetailInfoModel* ownerClanInfo, ClanDetailInfoModel* currentUserClanInfo){ + [[self getView] getClanDetailInfoSuccess:ownerClanInfo currentUserClanInfo:currentUserClanInfo]; + return nil; + }] subscribeError:^(NSError * _Nullable error) { + + }]; + + [Api getClanDetailInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + ClanDetailInfoModel * clanDetailInfo = [ClanDetailInfoModel modelWithDictionary:data.data]; + [currentUser sendNext:clanDetailInfo]; + [currentUser sendCompleted]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [currentUser sendNext:nil]; + [currentUser sendCompleted]; + }] uid:currentUserUid]; + + [Api getClanDetailInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + ClanDetailInfoModel * clanDetailInfo = [ClanDetailInfoModel modelWithDictionary:data.data]; + [owner sendNext:clanDetailInfo]; + [owner sendCompleted]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [owner sendNext:nil]; + [owner sendCompleted]; + }] uid:uid]; +} + +/// 获取当前房间操作的权限 +/// @param hallId 完成 +- (void)getUserInGuildRoomAuth:(NSString *)hallId { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api getGuildRoomAuth:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [GuildAuthModel modelsWithArray:data.data]; + [[self getView] getUserInGuildRoomAuthSuccess:array]; + }] hallId:hallId uid:uid]; +} + +/// 邀请用户加入公会 +/// @param targetUid 邀请的用户id +/// @param hallId 公会的id +- (void)inviteMember:(NSString *)targetUid hallId:(NSString *)hallId { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api inviteMemberCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] inviteMemeberSuccessWithTargetUid:targetUid]; + } showLoading:YES] hallId:hallId uid:uid targetUid:targetUid]; +} + +/// 退出公会房间 +- (void)quitGuildRoom { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api quitGuildRoom:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] quitGuildRoomSuccess]; + } showLoading:YES] uid:uid]; +} +///加入房间 +-(void)applyHallWithHallId:(NSString *)hallId{ + NSString *uid = [AccountInfoStorage instance].getUid; + [Api memberApplyHall:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView]applyHallSuccess]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView]applyHallFail]; + }showLoading:YES] hallId:hallId uid:uid]; +} +-(void)applyHallBtnStateWithHallId:(NSString *)hallId{ + [Api applyHallBtnStateWithHallId:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + XPMineGuildListModel *model = [XPMineGuildListModel modelWithDictionary:data.data]; + [[self getView]applyHallBtnStateSuccess:model]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + + } showLoading:NO errorToast:NO] hallId:hallId]; +} +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/XPGuildSearchPresenter.h b/YuMi/Modules/YMMine/View/Guild/Presenter/XPGuildSearchPresenter.h new file mode 100644 index 00000000..c1894123 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Presenter/XPGuildSearchPresenter.h @@ -0,0 +1,27 @@ +// +// XPGuildSearchPresenter.h +// YuMi +// +// Created by YuMi on 2022/4/7. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPGuildSearchPresenter : BaseMvpPresenter +/// 搜索家族成员 +/// @param uid 族长的uid +/// @param key 搜索的关键词 +- (void)searchClanMemberList:(NSString *)uid key:(NSString *)key; + +/// 公会添加成员 搜索用户 +/// @param key 搜索的关键词 +- (void)guildAddMemberSearch:(NSString *)key; + +/// 添加公会超管 +/// @param key 搜索的id +- (void)searchGuildSuperAdmin:(NSString *)key; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/XPGuildSearchPresenter.m b/YuMi/Modules/YMMine/View/Guild/Presenter/XPGuildSearchPresenter.m new file mode 100644 index 00000000..4fbd8352 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Presenter/XPGuildSearchPresenter.m @@ -0,0 +1,54 @@ +// +// XPGuildSearchPresenter.m +// YuMi +// +// Created by YuMi on 2022/4/7. +// + +#import "XPGuildSearchPresenter.h" +#import "Api+Guild.h" +#import "XPGuildSearchProtocol.h" +#import "ClanMemberDetailInfoModel.h" +#import "GuildSearchUserInfoModel.h" +#import "GuildSearchSuperAdminModel.h" +#import "AccountInfoStorage.h" +@implementation XPGuildSearchPresenter + +/// 搜索家族成员 +/// @param uid 族长的uid +/// @param key 搜索的关键词 +- (void)searchClanMemberList:(NSString *)uid key:(NSString *)key { + NSString * pageStr = @"1"; + NSString * pageSizeStr = @"50"; + [Api searchClanMemberList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + ClanMemberDetailInfoModel * memberInfo = [ClanMemberDetailInfoModel modelWithDictionary:data.data]; + [[self getView] searchClanMemberListSuccess:memberInfo.members]; + } showLoading:YES] uid:uid page:pageStr pageSize:pageSizeStr queryStr:key]; +} + + +/// 公会添加成员 搜索用户 +/// @param key 搜索的关键词 +- (void)guildAddMemberSearch:(NSString *)key { + [Api guildSearchUserCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [GuildSearchUserInfoModel modelsWithArray:data.data]; + [[self getView] guildAddMemberSearchSuccess:array]; + } showLoading:YES] key:key type:@"2" page:@"1" pageSize:@"50"]; +} + +/// 添加公会超管 +/// @param key 搜索的id +- (void)searchGuildSuperAdmin:(NSString *)key { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api searchGuildSuperAdmin:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + GuildSearchSuperAdminModel * info = [GuildSearchSuperAdminModel modelWithDictionary:data.data]; + if (info) { + [[self getView] searchGuildSuperAdminSuccess:@[info]]; + } else { + [[self getView] searchGuildSuperAdminSuccess:@[]]; + } + } showLoading:YES] uid:uid erbanNo:key]; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/XPMineGuildPresenter.h b/YuMi/Modules/YMMine/View/Guild/Presenter/XPMineGuildPresenter.h new file mode 100644 index 00000000..50833308 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Presenter/XPMineGuildPresenter.h @@ -0,0 +1,23 @@ +// +// XPMineGuildPresenter.h +// YuMi +// +// Created by YuMi on 2022/10/12. +// + +#import +#import "BaseMvpPresenter.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineGuildPresenter : BaseMvpPresenter +///請求公會列表 +-(void)getGuildListData; +///请示公会房间 +-(void)getRoomListData; +///申请公会 +-(void)applyClanWithClanId:(NSString *)clanId; +///申请房间 +-(void)applyHallWithHallId:(NSString *)hallId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/XPMineGuildPresenter.m b/YuMi/Modules/YMMine/View/Guild/Presenter/XPMineGuildPresenter.m new file mode 100644 index 00000000..74748d7e --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Presenter/XPMineGuildPresenter.m @@ -0,0 +1,51 @@ +// +// XPMineGuildPresenter.m +// YuMi +// +// Created by YuMi on 2022/10/12. +// + +#import "XPMineGuildPresenter.h" +///Api +#import "Api+Mine.h" +#import "Api+Guild.h" +#import "AccountInfoStorage.h" +///Model +#import "XPMineGuildListModel.h" +///Protocol +#import "XPMineGuildProtocol.h" +@implementation XPMineGuildPresenter +- (id)getView { + return ((id) [super getView]); +} +///請求公會列表 +-(void)getGuildListData{ + [Api requestMineGuildList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + NSArray *array = [XPMineGuildListModel modelsWithArray:data.data]; + [[self getView]onGetMineGuildListSuccess:array]; + }]; +} +-(void)getRoomListData{ + [Api requestMineRoomList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + NSArray *array = [XPMineGuildListModel modelsWithArray:data.data]; + [[self getView]onGetMineRoomListSuccess:array]; + }]; +} +-(void)applyClanWithClanId:(NSString *)clanId{ + NSString *uid = [AccountInfoStorage instance].getUid; + + [Api applyClanWith:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView]applyClanSuccess]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView]applyClanFail]; + }] uid:uid clanId:clanId]; +} +-(void)applyHallWithHallId:(NSString *)hallId{ + NSString *uid = [AccountInfoStorage instance].getUid; + [Api memberApplyHall:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView]applyHallSuccess]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView]applyHallFail]; + }] hallId:hallId uid:uid]; +} +@end diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/YUMICollectiveExternalizer.h b/YuMi/Modules/YMMine/View/Guild/Presenter/YUMICollectiveExternalizer.h deleted file mode 100644 index 25a229c7..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Presenter/YUMICollectiveExternalizer.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YUMICollectiveExternalizer.h -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN -@class YUMIManeExchangeAuthorityMatrix; - -@interface YUMICollectiveExternalizer : BaseMvpExternalizer -- (void)acquireCollectiveSpecificAbstract:(NSString *)uid currentUserUid:(NSString *)currentUserUid; -- (void)acquireCollectiveComponentSttowardsement:(NSString *)uid page:(int)page pageSize:(NSInteger)pageSize state:(int)state; - -- (void)acquireCollectiveChamberSttowardsement:(NSString *)clanId; --(void)acquireCollectiveChamberGoldSttowardsement:(NSString *)startTime endTime:(NSString *)endTime; --(void)acquireCollectiveChamberComponentTowardstesttowardsionoritySttowardsement; --(void)masterDisableRrEnablecomponentExdiversifictowardsionRights:(NSString *)status targetUid:(NSString *)targetUid model:(YUMIManeExchangeAuthorityMatrix *)model; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/YUMICollectiveExternalizer.m b/YuMi/Modules/YMMine/View/Guild/Presenter/YUMICollectiveExternalizer.m deleted file mode 100644 index cd3dcfc6..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Presenter/YUMICollectiveExternalizer.m +++ /dev/null @@ -1,81 +0,0 @@ -// -// YUMICollectiveExternalizer.m -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import "YUMICollectiveExternalizer.h" -#import -#import "FBCCollectiveCeremony.h" -#import "Api+Guild.h" -#import "CollectiveSpecificAbstractMatrix.h" -#import "CollectiveComponentSpecificAbstractMatrix.h" -#import "YUMIRevenueReflectionGoldSpecificsMatrix.h" -#import "YUMIManeExchangeAuthorityMatrix.h" - -@implementation YUMICollectiveExternalizer - -- (void)acquireCollectiveSpecificAbstract:(NSString *)uid currentUserUid:(NSString *)currentUserUid { - RACSubject* owner = [RACSubject subject]; - RACSubject* currentUser = [RACSubject subject]; - - [[RACSignal combineLatest:@[owner, currentUser] reduce:^id(CollectiveSpecificAbstractMatrix* ownerClanInfo, CollectiveSpecificAbstractMatrix* universalConsumerCollectiveAbstract){ - [[self acquireRegard] acquireCollectiveSpecificAbstractAccomplishment:ownerClanInfo universalConsumerCollectiveAbstract:universalConsumerCollectiveAbstract]; - return nil; - }] subscribeError:^(NSError * _Nullable error) { - - }]; - - [Api acquireCollectiveSpecificAbstract:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - CollectiveSpecificAbstractMatrix * collectiveSpecificAbstract = [CollectiveSpecificAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [currentUser sendNext:collectiveSpecificAbstract]; - [currentUser sendCompleted]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [currentUser sendNext:nil]; - [currentUser sendCompleted]; - }] uid:currentUserUid]; - - [Api acquireCollectiveSpecificAbstract:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - CollectiveSpecificAbstractMatrix * collectiveSpecificAbstract = [CollectiveSpecificAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [owner sendNext:collectiveSpecificAbstract]; - [owner sendCompleted]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [owner sendNext:nil]; - [owner sendCompleted]; - }] uid:uid]; -} - -- (void)acquireCollectiveComponentSttowardsement:(NSString *)uid page:(int)page pageSize:(NSInteger)pageSize state:(int)state { - NSString * pageStr = [NSString stringWithFormat:@"%d", page]; - NSString * pageSizeStr = [NSString stringWithFormat:@"%ld", pageSize]; - [Api acquireCollectiveComponentSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - CollectiveComponentSpecificAbstractMatrix * model= [CollectiveComponentSpecificAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireCollectiveComponentSttowardsementAccomplishment:model state:state]; - }] uid:uid page:pageStr pageSize:pageSizeStr]; -} - -- (void)acquireCollectiveChamberSttowardsement:(NSString *)clanId { - [Api acquireChamberSttowardsementInCollective:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [UnionAbstractMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireCollectiveChamberSttowardsementAccomplishment:array]; - }] clanId:clanId]; -} --(void)acquireCollectiveChamberGoldSttowardsement:(NSString *)startTime endTime:(NSString *)endTime{ - [Api acquireCollectiveChamberGoldsSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - YUMIRevenueReflectionGoldSpecificsMatrix *model = [YUMIRevenueReflectionGoldSpecificsMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard]acquireCollectiveChamberGoldsSttowardsementAccomplishment:model]; - }] startTime:startTime endTime:endTime]; -} --(void)acquireCollectiveChamberComponentTowardstesttowardsionoritySttowardsement{ - [Api acquireCollectiveChamberComponentTowardstesttowardsionoritySttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray *list = [YUMIManeExchangeAuthorityMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard]acquireCollectiveChamberComponentTowardstesttowardsionoritySttowardsementAccomplishment:list]; - }EvidenceChambering:YES errorToast:YES]]; -} --(void)masterDisableRrEnablecomponentExdiversifictowardsionRights:(NSString *)status targetUid:(NSString *)targetUid model:(YUMIManeExchangeAuthorityMatrix *)model{ - [Api requisitionMasterDisableRrEnablecomponentExdiversifictowardsionRights:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard]acquireExdiversifictowardsionTowardstesttowardsionorityConsequentAccomplishment:model status:status]; - }EvidenceChambering:YES errorToast:YES] status:status targetUid:targetUid]; -} -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/YUMIManeUnionExternalizer.h b/YuMi/Modules/YMMine/View/Guild/Presenter/YUMIManeUnionExternalizer.h deleted file mode 100644 index 2f579ccc..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Presenter/YUMIManeUnionExternalizer.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YUMIManeUnionExternalizer.h -// YuMi -// -// Created by YuMi on 2022/10/12. -// - -#import -#import "BaseMvpExternalizer.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeUnionExternalizer : BaseMvpExternalizer --(void)acquireUnionSttowardsementTowardsoloudspeaker; --(void)acquireChamberSttowardsementTowardsoloudspeaker; --(void)demandCollectiveAboutCollectiveId:(NSString *)clanId; --(void)demandCorridorAboutCorridorId:(NSString *)hallId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/YUMIManeUnionExternalizer.m b/YuMi/Modules/YMMine/View/Guild/Presenter/YUMIManeUnionExternalizer.m deleted file mode 100644 index 46922b75..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Presenter/YUMIManeUnionExternalizer.m +++ /dev/null @@ -1,47 +0,0 @@ -// -// YUMIManeUnionExternalizer.m -// YuMi -// -// Created by YuMi on 2022/10/12. -// - -#import "YUMIManeUnionExternalizer.h" -#import "Api+Mine.h" -#import "Api+Guild.h" -#import "AccountAbstractStorage.h" -#import "YUMIManeUnionStatementMatrix.h" -#import "FBCManeUnionCeremony.h" -@implementation YUMIManeUnionExternalizer -- (id)acquireRegard { - return ((id) [super acquireRegard]); -} --(void)acquireUnionSttowardsementTowardsoloudspeaker{ - [Api requisitionManeUnionSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - NSArray *array = [YUMIManeUnionStatementMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard]dwellEarnManeUnionSttowardsementAccomplishment:array]; - }]; -} --(void)acquireChamberSttowardsementTowardsoloudspeaker{ - [Api requisitionManeChamberSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - NSArray *array = [YUMIManeUnionStatementMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard]dwellEarnManeChamberSttowardsementAccomplishment:array]; - }]; -} --(void)demandCollectiveAboutCollectiveId:(NSString *)clanId{ - NSString *uid = [AccountAbstractStorage instance].acquireCid; - - [Api demandCollectiveAbout:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard]demandCollectiveAccomplishment]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard]demandCollectiveFlunk]; - }] uid:uid clanId:clanId]; -} --(void)demandCorridorAboutCorridorId:(NSString *)hallId{ - NSString *uid = [AccountAbstractStorage instance].acquireCid; - [Api componentAplictowardsionlyCorridor:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard]demandCorridorAccomplishment]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard]demandCorridorFlunk]; - }] hallId:hallId uid:uid]; -} -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/YUMIUnionExternalizer.h b/YuMi/Modules/YMMine/View/Guild/Presenter/YUMIUnionExternalizer.h deleted file mode 100644 index a354119e..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Presenter/YUMIUnionExternalizer.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YUMIUnionExternalizer.h -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIUnionExternalizer : BaseMvpExternalizer -- (void)acquireUnionComponentSttowardsement:(NSString *)hallId page:(int)page pageSize:(NSInteger)pageSize state:(int)state; - -- (void)acquireCollectiveSpecificAbstract:(NSString *)uid currentUserUid:(NSString *)currentUserUid; - -- (void)acquireConsumerInUnionChamberTowardstesttowardsion:(NSString *)hallId; - -- (void)centiretyforComponent:(NSString *)targetUid hallId:(NSString *)hallId; - -- (void)quitUnionChamber; --(void)demandCorridorAboutCorridorId:(NSString *)hallId; --(void)demandCorridorBtutonDeclareAboutCorridorId:(NSString *)hallId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/YUMIUnionExternalizer.m b/YuMi/Modules/YMMine/View/Guild/Presenter/YUMIUnionExternalizer.m deleted file mode 100644 index bbdeabc0..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Presenter/YUMIUnionExternalizer.m +++ /dev/null @@ -1,99 +0,0 @@ -// -// YUMIUnionExternalizer.m -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import "YUMIUnionExternalizer.h" -#import -#import "Api+Guild.h" -#import "AccountAbstractStorage.h" -#import "CollectiveComponentSpecificAbstractMatrix.h" -#import "CollectiveSpecificAbstractMatrix.h" -#import "FBCUnionCeremony.h" -#import "UnionAuthMatrix.h" -#import "YUMIManeUnionStatementMatrix.h" - -@implementation YUMIUnionExternalizer - - -- (void)acquireUnionComponentSttowardsement:(NSString *)hallId page:(int)page pageSize:(NSInteger)pageSize state:(int)state { - NSString * pageStr = [NSString stringWithFormat:@"%d", page]; - NSString * pageSizeStr = [NSString stringWithFormat:@"%ld", pageSize]; - [Api acquireUnionComponentSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - CollectiveComponentSpecificAbstractMatrix * componentAbstract = [CollectiveComponentSpecificAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireUnionComponentSttowardsementAccomplishment:componentAbstract state:state]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireUnionComponentSttowardsementFlunk:msg state:state]; - }] hallId:hallId page:pageStr pageSize:pageSizeStr]; -} - -- (void)acquireCollectiveSpecificAbstract:(NSString *)uid currentUserUid:(NSString *)currentUserUid { - RACSubject* owner = [RACSubject subject]; - RACSubject* currentUser = [RACSubject subject]; - - [[RACSignal combineLatest:@[owner, currentUser] reduce:^id(CollectiveSpecificAbstractMatrix* ownerClanInfo, CollectiveSpecificAbstractMatrix* universalConsumerCollectiveAbstract){ - [[self acquireRegard] acquireCollectiveSpecificAbstractAccomplishment:ownerClanInfo universalConsumerCollectiveAbstract:universalConsumerCollectiveAbstract]; - return nil; - }] subscribeError:^(NSError * _Nullable error) { - - }]; - - [Api acquireCollectiveSpecificAbstract:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - CollectiveSpecificAbstractMatrix * collectiveSpecificAbstract = [CollectiveSpecificAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [currentUser sendNext:collectiveSpecificAbstract]; - [currentUser sendCompleted]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [currentUser sendNext:nil]; - [currentUser sendCompleted]; - }] uid:currentUserUid]; - - [Api acquireCollectiveSpecificAbstract:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - CollectiveSpecificAbstractMatrix * collectiveSpecificAbstract = [CollectiveSpecificAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [owner sendNext:collectiveSpecificAbstract]; - [owner sendCompleted]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [owner sendNext:nil]; - [owner sendCompleted]; - }] uid:uid]; -} - -- (void)acquireConsumerInUnionChamberTowardstesttowardsion:(NSString *)hallId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api acquireUnionChamberTowardstesttowardsion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [UnionAuthMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireConsumerInUnionChamberTowardstesttowardsionAccomplishment:array]; - }] hallId:hallId uid:uid]; -} - -- (void)centiretyforComponent:(NSString *)targetUid hallId:(NSString *)hallId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api centiretyforComponentImplementtowardsion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] centiretyforMemeberAccomplishmentAboutTaracquireCid:targetUid]; - } EvidenceChambering:YES] hallId:hallId uid:uid targetUid:targetUid]; -} - -- (void)quitUnionChamber { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api quitUnionChamber:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] quitUnionChamberAccomplishment]; - } EvidenceChambering:YES] uid:uid]; -} --(void)demandCorridorAboutCorridorId:(NSString *)hallId{ - NSString *uid = [AccountAbstractStorage instance].acquireCid; - [Api componentAplictowardsionlyCorridor:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard]demandCorridorAccomplishment]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard]demandCorridorFlunk]; - }EvidenceChambering:YES] hallId:hallId uid:uid]; -} --(void)demandCorridorBtutonDeclareAboutCorridorId:(NSString *)hallId{ - [Api demandCorridorBtutonDeclareAboutCorridorId:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - YUMIManeUnionStatementMatrix *model = [YUMIManeUnionStatementMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard]demandCorridorBtutonDeclareAccomplishment:model]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - - } EvidenceChambering:NO errorToast:NO] hallId:hallId]; -} -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/YUMIUnionHuntforExternalizer.h b/YuMi/Modules/YMMine/View/Guild/Presenter/YUMIUnionHuntforExternalizer.h deleted file mode 100644 index 3486f178..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Presenter/YUMIUnionHuntforExternalizer.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YUMIUnionHuntforExternalizer.h -// YuMi -// -// Created by YuMi on 2022/4/7. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIUnionHuntforExternalizer : BaseMvpExternalizer -- (void)huntforCollectiveComponentSttowardsement:(NSString *)uid key:(NSString *)key; - -- (void)unionAccelertowardseComponentHuntfor:(NSString *)key; - -- (void)huntforUnionSenstowardsionalManagement:(NSString *)key; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Presenter/YUMIUnionHuntforExternalizer.m b/YuMi/Modules/YMMine/View/Guild/Presenter/YUMIUnionHuntforExternalizer.m deleted file mode 100644 index 49c2a94d..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Presenter/YUMIUnionHuntforExternalizer.m +++ /dev/null @@ -1,47 +0,0 @@ -// -// YUMIUnionHuntforExternalizer.m -// YuMi -// -// Created by YuMi on 2022/4/7. -// - -#import "YUMIUnionHuntforExternalizer.h" -#import "Api+Guild.h" -#import "FBCUnionHuntforCeremony.h" -#import "CollectiveComponentSpecificAbstractMatrix.h" -#import "UnionHuntforConsumerAbstractMatrix.h" -#import "UnionHuntforSensationalManagementMatrix.h" -#import "AccountAbstractStorage.h" -@implementation YUMIUnionHuntforExternalizer - -- (void)huntforCollectiveComponentSttowardsement:(NSString *)uid key:(NSString *)key { - NSString * pageStr = @"1"; - NSString * pageSizeStr = @"50"; - [Api huntforCollectiveComponentSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - CollectiveComponentSpecificAbstractMatrix * componentAbstract = [CollectiveComponentSpecificAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] huntforCollectiveComponentSttowardsementAccomplishment:componentAbstract.members]; - } EvidenceChambering:YES] uid:uid page:pageStr pageSize:pageSizeStr queryStr:key]; -} - - -- (void)unionAccelertowardseComponentHuntfor:(NSString *)key { - [Api unionHuntforConsumerImplementtowardsion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [UnionHuntforConsumerAbstractMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] unionAccelertowardseComponentHuntforAccomplishment:array]; - } EvidenceChambering:YES] key:key type:@"2" page:@"1" pageSize:@"50"]; -} - -- (void)huntforUnionSenstowardsionalManagement:(NSString *)key { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api huntforUnionSenstowardsionalManagement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - UnionHuntforSensationalManagementMatrix * info = [UnionHuntforSensationalManagementMatrix mtowardsrixAboutImpactbasket:data.data]; - if (info) { - [[self acquireRegard] huntforUnionSenstowardsionalManagementAccomplishment:@[info]]; - } else { - [[self acquireRegard] huntforUnionSenstowardsionalManagementAccomplishment:@[]]; - } - } EvidenceChambering:YES] uid:uid erbanNo:key]; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/Protocol/FBCCollectiveCeremony.h b/YuMi/Modules/YMMine/View/Guild/Protocol/FBCCollectiveCeremony.h deleted file mode 100644 index 58908026..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Protocol/FBCCollectiveCeremony.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// FBCCollectiveCeremony.h -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import -#import "CollectiveSpecificAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN -@class CollectiveSpecificAbstractMatrix, CollectiveComponentSpecificAbstractMatrix,YUMIRevenueReflectionGoldSpecificsMatrix,YUMIManeExchangeAuthorityMatrix,YUMIManeExchangeAuthorityMatrix; -@protocol FBCCollectiveCeremony -@optional -- (void)acquireCollectiveSpecificAbstractAccomplishment:(CollectiveSpecificAbstractMatrix *)collectiveSpecificAbstract universalConsumerCollectiveAbstract:(CollectiveSpecificAbstractMatrix *)universalConsumerCollectiveAbstract; -- (void)acquireCollectiveComponentSttowardsementAccomplishment:(CollectiveComponentSpecificAbstractMatrix *)componentAbstract state:(int)state; -- (void)acquireCollectiveChamberSttowardsementAccomplishment:(NSArray *)array; --(void)acquireCollectiveChamberGoldsSttowardsementAccomplishment:(YUMIRevenueReflectionGoldSpecificsMatrix *)model; --(void)acquireCollectiveChamberComponentTowardstesttowardsionoritySttowardsementAccomplishment:(NSArray *)list; --(void)acquireExdiversifictowardsionTowardstesttowardsionorityConsequentAccomplishment:(YUMIManeExchangeAuthorityMatrix *)model status:(NSString *)status; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Protocol/FBCManeUnionCeremony.h b/YuMi/Modules/YMMine/View/Guild/Protocol/FBCManeUnionCeremony.h deleted file mode 100644 index 2455e052..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Protocol/FBCManeUnionCeremony.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// FBCManeUnionCeremony.h -// YuMi -// -// Created by YuMi on 2022/10/12. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class YUMIManeUnionStatementMatrix; - -@protocol FBCManeUnionCeremony --(void)dwellEarnManeUnionSttowardsementAccomplishment:(NSArray *)list; --(void)dwellEarnManeChamberSttowardsementAccomplishment:(NSArray *)list; --(void)demandCollectiveAccomplishment; --(void)demandCollectiveFlunk; - --(void)demandCorridorAccomplishment; --(void)demandCorridorFlunk; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Protocol/FBCUnionCeremony.h b/YuMi/Modules/YMMine/View/Guild/Protocol/FBCUnionCeremony.h deleted file mode 100644 index de45ec6c..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Protocol/FBCUnionCeremony.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// FBCUnionCeremony.h -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class CollectiveComponentSpecificAbstractMatrix,CollectiveSpecificAbstractMatrix,YUMIManeUnionStatementMatrix; -@protocol FBCUnionCeremony - -- (void)acquireUnionComponentSttowardsementAccomplishment:(CollectiveComponentSpecificAbstractMatrix *)componentAbstract state:(int)state; -- (void)acquireUnionComponentSttowardsementFlunk:(NSString *)msg state:(int)state; - -- (void)acquireCollectiveSpecificAbstractAccomplishment:(CollectiveSpecificAbstractMatrix *)collectiveSpecificAbstract universalConsumerCollectiveAbstract:(CollectiveSpecificAbstractMatrix *)universalConsumerCollectiveAbstract; -- (void)acquireConsumerInUnionChamberTowardstesttowardsionAccomplishment:(NSArray *)attestationStatement; -- (void)centiretyforMemeberAccomplishmentAboutTaracquireCid:(NSString *)targetUid; -- (void)quitUnionChamberAccomplishment; --(void)demandCorridorAccomplishment; --(void)demandCorridorFlunk; --(void)demandCorridorBtutonDeclareAccomplishment:(YUMIManeUnionStatementMatrix *)model; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Protocol/FBCUnionHuntforCeremony.h b/YuMi/Modules/YMMine/View/Guild/Protocol/FBCUnionHuntforCeremony.h deleted file mode 100644 index e488939e..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Protocol/FBCUnionHuntforCeremony.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// FBCUnionHuntforCeremony.h -// YuMi -// -// Created by YuMi on 2022/4/7. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCUnionHuntforCeremony - -- (void)huntforCollectiveComponentSttowardsementAccomplishment:(NSArray *)memberList; -- (void)unionAccelertowardseComponentHuntforAccomplishment:(NSArray *)memberList; -- (void)huntforUnionSenstowardsionalManagementAccomplishment:(NSArray *)memberList; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Protocol/Income/FBCUnionIncomeCeremony.h b/YuMi/Modules/YMMine/View/Guild/Protocol/Income/FBCUnionIncomeCeremony.h deleted file mode 100644 index 4c03737c..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Protocol/Income/FBCUnionIncomeCeremony.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// FBCUnionIncomeCeremony.h -// YuMi -// -// Created by YuMi on 2022/4/11. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class UnionRevenueReflectionMatrix, UnionFeatureRevenueReflectionMatrix; -@protocol FBCUnionIncomeCeremony - -- (void)acquireCollectiveGeneralRevenueScuess:(UnionRevenueReflectionMatrix *)incomeInfo; -- (void)acquireCollectiveGeneralRevenueFlunk:(NSString *)msg; -- (void)acquireCorridorGeneralRevenueScuess:(UnionFeatureRevenueReflectionMatrix *)incomeInfo; -- (void)acquireCorridorGeneralRevenueFlunk:(NSString *)msg; -- (void)acquireCollectiveKellegGeneralRevenueAccomplishment:(UnionFeatureRevenueReflectionMatrix *)incomeInfo; -- (void)acquireCollectiveKellegGeneralRevenueFlunk:(NSString *)msg; -- (void)acquireCorridorKellegGeneralRevenueAccomplishment:(UnionFeatureRevenueReflectionMatrix *)incomeInfo; -- (void)acquireCorridorKellegGeneralRevenueFlunk:(NSString *)msg; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Protocol/Income/FBCUnionIncomeDetailCeremony.h b/YuMi/Modules/YMMine/View/Guild/Protocol/Income/FBCUnionIncomeDetailCeremony.h deleted file mode 100644 index 44e49a10..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Protocol/Income/FBCUnionIncomeDetailCeremony.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// FBCUnionIncomeDetailCeremony.h -// YuMi -// -// Created by YuMi on 2022/4/12. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCUnionIncomeDetailCeremony - -- (void)acquireConsumerRevenueSpecificSttowardsementAccomplishment:(NSArray *)array; -- (void)acquireConsumerRevenueSpecificSttowardsementFlunk:(NSString *)msg; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Protocol/Income/XPGuildIncomeDetailProtocol.h b/YuMi/Modules/YMMine/View/Guild/Protocol/Income/XPGuildIncomeDetailProtocol.h new file mode 100644 index 00000000..0ded643b --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Protocol/Income/XPGuildIncomeDetailProtocol.h @@ -0,0 +1,19 @@ +// +// XPGuildIncomeDetailProtocol.h +// YuMi +// +// Created by YuMi on 2022/4/12. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPGuildIncomeDetailProtocol + +- (void)getUserIncomeDetailListSuccess:(NSArray *)array; +- (void)getUserIncomeDetailListFail:(NSString *)msg; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Protocol/Income/XPGuildIncomeProtocol.h b/YuMi/Modules/YMMine/View/Guild/Protocol/Income/XPGuildIncomeProtocol.h new file mode 100644 index 00000000..76fae179 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Protocol/Income/XPGuildIncomeProtocol.h @@ -0,0 +1,32 @@ +// +// XPGuildIncomeProtocol.h +// YuMi +// +// Created by YuMi on 2022/4/11. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class GuildIncomeRecordModel, GuildPersonIncomeRecordModel; +@protocol XPGuildIncomeProtocol + +///获取家族所有的收入记录成功 +- (void)getClanTotalIncomeScuess:(GuildIncomeRecordModel *)incomeInfo; +///获取家族所有的收入记录失败 +- (void)getClanTotalIncomeFail:(NSString *)msg; +///获取公会所有成员收入记录 +- (void)getHallTotalIncomeScuess:(GuildPersonIncomeRecordModel *)incomeInfo; +///获取公会所有成员收入失败 +- (void)getHallTotalIncomeFail:(NSString *)msg; +///获取家族所有个播收入成功 +- (void)getClanAnchorTotalIncomeSuccess:(GuildPersonIncomeRecordModel *)incomeInfo; +///获取家族所有个播收入失败 +- (void)getClanAnchorTotalIncomeFail:(NSString *)msg; +///获取公会所有个播收入成功 +- (void)getHallAnchorTotalIncomeSuccess:(GuildPersonIncomeRecordModel *)incomeInfo; +///获取公会所有个播收入失败 +- (void)getHallAnchorTotalIncomeFail:(NSString *)msg; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/FBCUnionExecutivePerCeremony.h b/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/FBCUnionExecutivePerCeremony.h deleted file mode 100644 index 6ee3d934..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/FBCUnionExecutivePerCeremony.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// FBCUnionExecutivePerCeremony.h -// YuMi -// -// Created by YuMi on 2022/4/8. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCUnionExecutivePerCeremony - -- (void)acquireUnionChamberExecutivePreconditionAccomplishment:(NSArray *)array; - -- (void)refurbishUnionChamberExecutivePreconditionAccomplishment; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/FBCUnionExecutiveStatementCeremony.h b/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/FBCUnionExecutiveStatementCeremony.h deleted file mode 100644 index 3c04954c..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/FBCUnionExecutiveStatementCeremony.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// FBCUnionExecutiveStatementCeremony.h -// YuMi -// -// Created by YuMi on 2022/4/8. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class CollectiveComponentSpecificAbstractMatrix; -@protocol FBCUnionExecutiveStatementCeremony - -- (void)acquireUnionChamberExecutiveSttowardsementAccomplishment:(CollectiveComponentSpecificAbstractMatrix *)componentAbstract state:(int)state; -- (void)acquireUnionChamberExecutiveSttowardsementFlunk:(NSString *)msg state:(int)state; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/FBCUnionRemoveMemberCeremony.h b/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/FBCUnionRemoveMemberCeremony.h deleted file mode 100644 index 1dfd0c8e..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/FBCUnionRemoveMemberCeremony.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// FBCUnionRemoveMemberCeremony.h -// YuMi -// -// Created by YuMi on 2022/4/8. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCUnionRemoveMemberCeremony -- (void)acquireUnionComponentSttowardsementAccomplishment:(CollectiveComponentSpecificAbstractMatrix *)componentAbstract state:(int)state; -- (void)acquireUnionComponentSttowardsementFlunk:(NSString *)msg state:(int)state; - -- (void)transltowardseUnionComponentAccomplishment; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/FBCUnionSetExecutiveCeremony.h b/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/FBCUnionSetExecutiveCeremony.h deleted file mode 100644 index 48ba76f0..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/FBCUnionSetExecutiveCeremony.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// FBCUnionSetExecutiveCeremony.h -// YuMi -// -// Created by YuMi on 2022/4/8. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCUnionSetExecutiveCeremony -- (void)acquireUnionComponentSttowardsementAccomplishment:(CollectiveComponentSpecificAbstractMatrix *)componentAbstract state:(int)state; -- (void)acquireUnionComponentSttowardsementFlunk:(NSString *)msg state:(int)state; - -- (void)unionChamberAccelertowardseExecutiveAccomplishment:(NSString *)targetUid; -- (void)unionChamberTransltowardseExecutiveAccomplishment:(NSString *)targetUid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/FBCUnionSetNameCeremony.h b/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/FBCUnionSetNameCeremony.h deleted file mode 100644 index 0b978861..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/FBCUnionSetNameCeremony.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// FBCUnionSetNameCeremony.h -// YuMi -// -// Created by YuMi on 2022/4/7. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCUnionSetNameCeremony - -- (void)refurbishUnionChamberConstituteAccomplishment; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/XPGuildManagerListProtocol.h b/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/XPGuildManagerListProtocol.h new file mode 100644 index 00000000..ce6a68b9 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/XPGuildManagerListProtocol.h @@ -0,0 +1,18 @@ +// +// XPGuildManagerListProtocol.h +// YuMi +// +// Created by YuMi on 2022/4/8. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class ClanMemberDetailInfoModel; +@protocol XPGuildManagerListProtocol + +- (void)getGuildRoomManagerListSuccess:(ClanMemberDetailInfoModel *)memberInfo state:(int)state; +- (void)getGuildRoomManagerListFail:(NSString *)msg state:(int)state; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/XPGuildManagerPerProtocol.h b/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/XPGuildManagerPerProtocol.h new file mode 100644 index 00000000..3bc991af --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/XPGuildManagerPerProtocol.h @@ -0,0 +1,22 @@ +// +// XPGuildManagerPerProtocol.h +// YuMi +// +// Created by YuMi on 2022/4/8. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPGuildManagerPerProtocol + +///获取房间管理权限列表成功 +- (void)getGuildRoomManagerPermissSuccess:(NSArray *)array; + +///更新权限成功 +- (void)updateGuildRoomManagerPermissSuccess; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/XPGuildRemoveMemberProtocol.h b/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/XPGuildRemoveMemberProtocol.h new file mode 100644 index 00000000..e592015a --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/XPGuildRemoveMemberProtocol.h @@ -0,0 +1,20 @@ +// +// XPGuildRemoveMemberProtocol.h +// YuMi +// +// Created by YuMi on 2022/4/8. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPGuildRemoveMemberProtocol +- (void)getGuildMemberListSuccess:(ClanMemberDetailInfoModel *)memberInfo state:(int)state; +- (void)getGuildMemberListFail:(NSString *)msg state:(int)state; + +///移除公会成员成功 +- (void)removeGuildMemberSuccess; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/XPGuildSetManagerProtocol.h b/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/XPGuildSetManagerProtocol.h new file mode 100644 index 00000000..e2c6fc16 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/XPGuildSetManagerProtocol.h @@ -0,0 +1,22 @@ +// +// XPGuildSetManagerProtocol.h +// YuMi +// +// Created by YuMi on 2022/4/8. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPGuildSetManagerProtocol +- (void)getGuildMemberListSuccess:(ClanMemberDetailInfoModel *)memberInfo state:(int)state; +- (void)getGuildMemberListFail:(NSString *)msg state:(int)state; + +/// 添加管理成功 +- (void)guildRoomAddManagerSuccess:(NSString *)targetUid; +/// 移除管理成功 +- (void)guildRoomRemoveManagerSuccess:(NSString *)targetUid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/XPGuildSetNameProtocol.h b/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/XPGuildSetNameProtocol.h new file mode 100644 index 00000000..7aa2d310 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Protocol/Setting/XPGuildSetNameProtocol.h @@ -0,0 +1,18 @@ +// +// XPGuildSetNameProtocol.h +// YuMi +// +// Created by YuMi on 2022/4/7. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPGuildSetNameProtocol + +- (void)updateGuildRoomNameSuccess; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Protocol/SuperAdmin/FBCSensationalManagementExecutiveChamberCeremony.h b/YuMi/Modules/YMMine/View/Guild/Protocol/SuperAdmin/FBCSensationalManagementExecutiveChamberCeremony.h deleted file mode 100644 index 130d6698..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Protocol/SuperAdmin/FBCSensationalManagementExecutiveChamberCeremony.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// FBCSensationalManagementExecutiveChamberCeremony.h -// YuMi -// -// Created by YuMi on 2022/4/13. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCSensationalManagementExecutiveChamberCeremony - -- (void)acquireUnionChamberSttowardsementAccomplishment:(NSArray *)array; -- (void)unionSenstowardsionalManagementExecutiveChamberSttowardsementAccomplishment; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Protocol/SuperAdmin/FBCSensationalManagementSetCeremony.h b/YuMi/Modules/YMMine/View/Guild/Protocol/SuperAdmin/FBCSensationalManagementSetCeremony.h deleted file mode 100644 index 163a362a..00000000 --- a/YuMi/Modules/YMMine/View/Guild/Protocol/SuperAdmin/FBCSensationalManagementSetCeremony.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// FBCSensationalManagementSetCeremony.h -// YuMi -// -// Created by YuMi on 2022/4/13. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCSensationalManagementSetCeremony - -- (void)acquireCollectiveSenstowardsionalManagementSttowardsementAccomplishment:(NSArray *)list; -- (void)transltowardseSenstowardsionalManagementAccomplishment:(NSString *)uid; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Protocol/SuperAdmin/XPSuperAdminManagerRoomProtocol.h b/YuMi/Modules/YMMine/View/Guild/Protocol/SuperAdmin/XPSuperAdminManagerRoomProtocol.h new file mode 100644 index 00000000..c6a9cabf --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Protocol/SuperAdmin/XPSuperAdminManagerRoomProtocol.h @@ -0,0 +1,21 @@ +// +// XPSuperAdminManagerRoomProtocol.h +// YuMi +// +// Created by YuMi on 2022/4/13. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPSuperAdminManagerRoomProtocol + +///获取公会房间列表成功 +- (void)getGuildRoomListSuccess:(NSArray *)array; +///设置房间管理管理的房间成功 +- (void)guildSuperAdminManagerRoomListSuccess; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Protocol/SuperAdmin/XPSuperAdminSetProtocol.h b/YuMi/Modules/YMMine/View/Guild/Protocol/SuperAdmin/XPSuperAdminSetProtocol.h new file mode 100644 index 00000000..62317ec3 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Protocol/SuperAdmin/XPSuperAdminSetProtocol.h @@ -0,0 +1,21 @@ +// +// XPSuperAdminSetProtocol.h +// YuMi +// +// Created by YuMi on 2022/4/13. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPSuperAdminSetProtocol + +///获取家族超管成功 +- (void)getClanSuperAdminListSuccess:(NSArray *)list; +///移除超管成功 +- (void)removeSuperAdminSuccess:(NSString *)uid; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Protocol/XPClanProtocol.h b/YuMi/Modules/YMMine/View/Guild/Protocol/XPClanProtocol.h new file mode 100644 index 00000000..067bd16b --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Protocol/XPClanProtocol.h @@ -0,0 +1,28 @@ +// +// XPClanProtocol.h +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import +#import "ClanDetailInfoModel.h" +NS_ASSUME_NONNULL_BEGIN +@class ClanDetailInfoModel, ClanMemberDetailInfoModel,XPIncomeRecordGoldDetailsModel,XPMineExchangeAuthorityModel,XPMineExchangeAuthorityModel; +@protocol XPClanProtocol +@optional +///获取家族详情成功 +- (void)getClanDetailInfoSuccess:(ClanDetailInfoModel *)clanDetailInfo currentUserClanInfo:(ClanDetailInfoModel *)currentUserClanInfo; +///获取公会成员列表成功 +- (void)getClanMemberListSuccess:(ClanMemberDetailInfoModel *)memberInfo state:(int)state; +///获取公会房间的列表 +- (void)getClanRoomListSuccess:(NSArray *)array; +///获取公会房间房主金币明细 +-(void)getClanRoomGoldsListSuccess:(XPIncomeRecordGoldDetailsModel *)model; +///获取房主兑换权限列表 +-(void)getClanRoomMemberAuthorityListSuccess:(NSArray *)list; +///开启或关闭兑换会员 +-(void)getExchangeAuthorityResultSuccess:(XPMineExchangeAuthorityModel *)model status:(NSString *)status; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Protocol/XPGuildProtocol.h b/YuMi/Modules/YMMine/View/Guild/Protocol/XPGuildProtocol.h new file mode 100644 index 00000000..35a75dda --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Protocol/XPGuildProtocol.h @@ -0,0 +1,33 @@ +// +// XPGuildProtocol.h +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class ClanMemberDetailInfoModel,ClanDetailInfoModel,XPMineGuildListModel; +@protocol XPGuildProtocol + +- (void)getGuildMemberListSuccess:(ClanMemberDetailInfoModel *)memberInfo state:(int)state; +- (void)getGuildMemberListFail:(NSString *)msg state:(int)state; + +///获取家族详情成功 +- (void)getClanDetailInfoSuccess:(ClanDetailInfoModel *)clanDetailInfo currentUserClanInfo:(ClanDetailInfoModel *)currentUserClanInfo; +///获取用户在公会房间权限成功 +- (void)getUserInGuildRoomAuthSuccess:(NSArray *)authList; +///邀请成功 +- (void)inviteMemeberSuccessWithTargetUid:(NSString *)targetUid; +///退出公会成功 +- (void)quitGuildRoomSuccess; +///加入房间成功 +-(void)applyHallSuccess; +///加入房间失败 +-(void)applyHallFail; +///获取加入房间成功 +-(void)applyHallBtnStateSuccess:(XPMineGuildListModel *)model; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Protocol/XPGuildSearchProtocol.h b/YuMi/Modules/YMMine/View/Guild/Protocol/XPGuildSearchProtocol.h new file mode 100644 index 00000000..2eb02e65 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Protocol/XPGuildSearchProtocol.h @@ -0,0 +1,22 @@ +// +// XPGuildSearchProtocol.h +// YuMi +// +// Created by YuMi on 2022/4/7. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPGuildSearchProtocol + +///搜索公会成员成功 +- (void)searchClanMemberListSuccess:(NSArray *)memberList; +///公会添加成员 搜索用户 +- (void)guildAddMemberSearchSuccess:(NSArray *)memberList; +///搜索添加公会超管 +- (void)searchGuildSuperAdminSuccess:(NSArray *)memberList; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/Protocol/XPMineGuildProtocol.h b/YuMi/Modules/YMMine/View/Guild/Protocol/XPMineGuildProtocol.h new file mode 100644 index 00000000..a19870bf --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/Protocol/XPMineGuildProtocol.h @@ -0,0 +1,32 @@ +// +// XPMineGuildProtocol.h +// YuMi +// +// Created by YuMi on 2022/10/12. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class XPMineGuildListModel; + +@protocol XPMineGuildProtocol +///获取公会列表 +-(void)onGetMineGuildListSuccess:(NSArray *)list; +///获取公会房间列表 +-(void)onGetMineRoomListSuccess:(NSArray *)list; +///申请加入公会成功 +-(void)applyClanSuccess; +///申请加入公会失败 +-(void)applyClanFail; + +///申请加入房间成功 +-(void)applyHallSuccess; +///申请加入房间失败 +-(void)applyHallFail; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/XPMineExchangeAuthorityCell.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/XPMineExchangeAuthorityCell.h new file mode 100644 index 00000000..2fb73dd1 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/XPMineExchangeAuthorityCell.h @@ -0,0 +1,27 @@ +// +// XPMineExchangeAuthorityCell.h +// YuMi +// +// Created by YuMi on 2023/2/13. +// + +#import +#import "XPMineExchangeAuthorityModel.h" +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMineExchangeAuthorityCellDelegate + +-(void)openExchangeAuthoritySwiftStatus:(NSString *)status model:(XPMineExchangeAuthorityModel *)model; + +@end + + + +@interface XPMineExchangeAuthorityCell : UITableViewCell +///数据源 +@property (nonatomic,strong) XPMineExchangeAuthorityModel *authorityModel; +/// +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/XPMineExchangeAuthorityCell.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/XPMineExchangeAuthorityCell.m new file mode 100644 index 00000000..0794aa69 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/XPMineExchangeAuthorityCell.m @@ -0,0 +1,352 @@ +// +// XPMineExchangeAuthorityCell.m +// YuMi +// +// Created by YuMi on 2023/2/13. +// + +#import "XPMineExchangeAuthorityCell.h" +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +@interface XPMineExchangeAuthorityCell() +///头像 +@property (nonatomic,strong) NetImageView *headView; +///昵称 +@property (nonatomic,strong) UILabel *nameView; +///昵称的容器 +@property (nonatomic,strong) UIStackView *nickStackView; +///性别 +@property (nonatomic,strong) UIImageView *sexImageView; +///魅力等级 +@property (nonatomic,strong) NetImageView *charmImageView; +///等级 +@property (nonatomic,strong) NetImageView *experImageView; +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///id +@property (nonatomic,strong) UILabel *idView; +///第一个分割线 +@property (nonatomic,strong) UIView *firstLineView; +///房间名 +@property (nonatomic,strong) UILabel *roomView; +///第二个分割线 +@property (nonatomic,strong) UIView *secondLineView; +///金币数量 +@property (nonatomic,strong) UILabel *goldView; +///兑换按钮 +@property (nonatomic,strong) UIButton *exchangeBtn; +///分割线 +@property (nonatomic,strong) UIView *lineView; +@end +@implementation XPMineExchangeAuthorityCell +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.contentView.backgroundColor = [UIColor whiteColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.headView]; + [self.contentView addSubview:self.nickStackView]; + [self.contentView addSubview:self.stackView]; + [self.contentView addSubview:self.exchangeBtn]; + [self.contentView addSubview:self.lineView]; + [self.contentView addSubview:self.firstLineView]; + [self.contentView addSubview:self.secondLineView]; + + [self.nickStackView addArrangedSubview:self.nameView]; + [self.nickStackView addArrangedSubview:self.sexImageView]; + [self.nickStackView addArrangedSubview:self.experImageView]; + [self.nickStackView addArrangedSubview:self.charmImageView]; + + [self.stackView addArrangedSubview:self.idView]; + [self.stackView addArrangedSubview:self.roomView]; + [self.stackView addArrangedSubview:self.goldView]; +} +- (void)initSubViewConstraints { + [self.headView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(12)); + make.width.height.mas_equalTo(kGetScaleWidth(50)); + make.centerY.equalTo(self.contentView); + }]; + [self.exchangeBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-kGetScaleWidth(12)); + make.width.mas_equalTo(kGetScaleWidth(68)); + make.height.mas_equalTo(kGetScaleWidth(24)); + make.centerY.equalTo(self.contentView); + }]; + + [self.nickStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(70)); + make.top.mas_equalTo(kGetScaleWidth(21)); + make.height.mas_equalTo(kGetScaleWidth(17)); + make.width.mas_lessThanOrEqualTo(kGetScaleWidth(215)); + }]; + [self.sexImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(2)); + make.height.width.mas_equalTo(kGetScaleWidth(14)); + make.bottom.mas_equalTo(0); + }]; + [self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(kGetScaleWidth(22)); + }]; + [self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(kGetScaleWidth(22)); + }]; + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.nameView); + make.right.mas_equalTo(-kGetScaleWidth(90)); + make.top.mas_equalTo(kGetScaleWidth(45)); + make.height.mas_equalTo(kGetScaleWidth(14)); + }]; + [self.goldView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_greaterThanOrEqualTo(10); + }]; + [self.firstLineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.idView.mas_right).mas_offset(kGetScaleWidth(3)); + make.centerY.equalTo(self.idView); + make.width.mas_equalTo(kGetScaleWidth(1)); + make.height.mas_equalTo(kGetScaleWidth(8)); + }]; + + [self.secondLineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.roomView.mas_right).mas_offset(kGetScaleWidth(3)); + make.centerY.equalTo(self.roomView); + make.width.mas_equalTo(kGetScaleWidth(1)); + make.height.mas_equalTo(kGetScaleWidth(8)); + }]; + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.equalTo(self.contentView); + make.height.mas_equalTo(kGetScaleWidth(1)); + }]; +} +-(void)setAuthorityModel:(XPMineExchangeAuthorityModel *)authorityModel{ + _authorityModel = authorityModel; + _headView.imageUrl = _authorityModel.avatar; + _idView.text = [NSString stringWithFormat:@"ID:%ld",_authorityModel.erbanNo]; + NSString * hallName = _authorityModel.hallName; + if (hallName.length > 5) { + hallName = [NSString stringWithFormat:@"%@...", [hallName substringToIndex:5]]; + } + _roomView.text = hallName; + _exchangeBtn.selected = _authorityModel.exchangeAuthStatus == 0; + _goldView.text = [NSString stringWithFormat:YMLocalizedString(@"XPMineExchangeAuthorityCell2"),_authorityModel.golds]; + NSString * nick = _authorityModel.nick; + if (nick.length > 8) { + nick = [NSString stringWithFormat:@"%@...", [nick substringToIndex:8]]; + } + _nameView.text = nick; + self.sexImageView.image = _authorityModel.gender == GenderType_Female ? [UIImage imageNamed:@"common_female"] : [UIImage imageNamed:@"common_male"]; + if (_authorityModel.userLevelVo.experUrl) { + if (self.experImageView.state == NetImageStateLoaded) { + self.experImageView.imageUrl = _authorityModel.userLevelVo.experUrl; + CGFloat kImageScale = self.experImageView.image.size.width / self.experImageView.image.size.height; + CGFloat imageWidth = 17 * kImageScale; + [self.experImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(imageWidth); + }]; + } else { + @kWeakify(self); + [self.experImageView loadImageWithUrl:_authorityModel.userLevelVo.experUrl completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) { + @kStrongify(self); + self.experImageView.image = image; + CGFloat kImageScale = image.size.width / image.size.height; + CGFloat imageWidth = 17 * kImageScale; + [self.experImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(imageWidth); + }]; + }]; + } + } + self.experImageView.hidden = _authorityModel.userLevelVo.experUrl.length <= 0; + + if (_authorityModel.userLevelVo.charmUrl) { + if (self.charmImageView.state == NetImageStateLoaded) { + self.charmImageView.imageUrl = _authorityModel.userLevelVo.charmUrl; + CGFloat kImageScale = self.charmImageView.image.size.width / self.charmImageView.image.size.height; + CGFloat imageWidth = 17 * kImageScale; + [self.charmImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(imageWidth); + }]; + } else { + @kWeakify(self); + [self.charmImageView loadImageWithUrl:_authorityModel.userLevelVo.charmUrl completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) { + @kStrongify(self); + self.charmImageView.image = image; + CGFloat kImageScale = image.size.width / image.size.height; + CGFloat imageWidth = 17 * kImageScale; + [self.charmImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(imageWidth); + }]; + }]; + } + } + self.charmImageView.hidden = _authorityModel.userLevelVo.charmUrl.length <= 0; +} +-(void)exchangeAction{ + if(self.delegate && [self.delegate respondsToSelector:@selector(openExchangeAuthoritySwiftStatus:model:)]){ + [self.delegate openExchangeAuthoritySwiftStatus:self.exchangeBtn.selected ? @"1":@"0" model:self.authorityModel]; + } +} +#pragma mark -懒加载 +- (NetImageView *)headView{ + if (!_headView){ + NetImageConfig *config = [NetImageConfig new]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _headView = [[NetImageView alloc]initWithConfig:config]; + _headView.layer.cornerRadius = kGetScaleWidth(25); + _headView.layer.masksToBounds = YES; + } + return _headView; +} + +- (UILabel *)nameView { + if (!_nameView) { + _nameView = [[UILabel alloc] init]; + _nameView.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + _nameView.textColor = UIColorFromRGB(0x1F1B4F); + } + return _nameView; +} + +-(UIStackView *)stackView{ + if (!_stackView){ + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = kGetScaleWidth(7); + } + return _stackView; +} + +- (UILabel *)idView { + if (!_idView) { + _idView = [[UILabel alloc] init]; + _idView.font = [UIFont systemFontOfSize:10]; + _idView.textColor = UIColorFromRGB(0x6D6B89); + } + return _idView; +} + +-(UIView *)firstLineView{ + if (!_firstLineView){ + _firstLineView = [UIView new]; + _firstLineView.backgroundColor = UIColorFromRGB(0xD8D8D8); + } + return _firstLineView; +} + +- (UILabel *)roomView { + if (!_roomView) { + _roomView = [[UILabel alloc] init]; + _roomView.font = [UIFont systemFontOfSize:10]; + _roomView.textColor = UIColorFromRGB(0x6D6B89); + } + return _roomView; +} + +-(UIView *)secondLineView{ + if (!_secondLineView){ + _secondLineView = [UIView new]; + _secondLineView.backgroundColor = UIColorFromRGB(0xD8D8D8); + } + return _secondLineView; +} + +- (UILabel *)goldView { + if (!_goldView) { + _goldView = [[UILabel alloc] init]; + _goldView.font = [UIFont systemFontOfSize:10]; + _goldView.textColor = UIColorFromRGB(0x6D6B89); + } + return _goldView; +} + +-(UIButton *)exchangeBtn{ + if (!_exchangeBtn){ + _exchangeBtn = [UIButton new]; + _exchangeBtn.titleLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightMedium]; + UIImage *normalImage = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(68), kGetScaleWidth(24))]; + [_exchangeBtn setBackgroundImage:normalImage forState:UIControlStateNormal]; + [_exchangeBtn setTitle:YMLocalizedString(@"XPMineExchangeAuthorityCell1") forState:UIControlStateNormal]; + [_exchangeBtn setTitleColor:UIColorFromRGB(0xB3B3C3) forState:UIControlStateNormal]; + + UIImage *selectedImage = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientMiddleColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(68), kGetScaleWidth(24))]; + [_exchangeBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; + [_exchangeBtn setBackgroundImage:selectedImage forState:UIControlStateSelected]; + [_exchangeBtn setTitle:YMLocalizedString(@"XPMineExchangeAuthorityCell0") forState:UIControlStateSelected]; + _exchangeBtn.layer.cornerRadius = kGetScaleWidth(12); + _exchangeBtn.layer.masksToBounds = YES; + [_exchangeBtn addTarget:self action:@selector(exchangeAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _exchangeBtn; +} +-(UIView *)lineView{ + if (!_lineView){ + _lineView = [UIView new]; + _lineView.backgroundColor = UIColorFromRGB(0xF3F5FA); + } + return _lineView; +} +- (UIImageView *)sexImageView { + if (!_sexImageView) { + _sexImageView = [[UIImageView alloc] init]; + _sexImageView.userInteractionEnabled = YES; + } + return _sexImageView; +} + +- (NetImageView *)experImageView { + if (!_experImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserCardLevel; + _experImageView = [[NetImageView alloc] initWithConfig:config]; + _experImageView.userInteractionEnabled = YES; + _experImageView.hidden = YES; + _experImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _experImageView; +} + +- (NetImageView *)charmImageView { + if (!_charmImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserCardLevel; + _charmImageView = [[NetImageView alloc] initWithConfig:config]; + _charmImageView.userInteractionEnabled = YES; + _charmImageView.hidden = YES; + _charmImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _charmImageView; +} +- (UIStackView *)nickStackView { + if (!_nickStackView) { + _nickStackView = [[UIStackView alloc] init]; + _nickStackView.axis = UILayoutConstraintAxisHorizontal; + _nickStackView.distribution = UIStackViewDistributionFill; + _nickStackView.alignment = UIStackViewAlignmentFill; + _nickStackView.spacing = kGetScaleWidth(5); + } + return _nickStackView; +} +- (void)awakeFromNib { + [super awakeFromNib]; + // Initialization code +} + +- (void)setSelected:(BOOL)selected animated:(BOOL)animated { + [super setSelected:selected animated:animated]; + + // Configure the view for the selected state +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/XPMineExchangeAuthorityFooderView.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/XPMineExchangeAuthorityFooderView.h new file mode 100644 index 00000000..d0cad0da --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/XPMineExchangeAuthorityFooderView.h @@ -0,0 +1,17 @@ +// +// XPMineExchangeAuthorityFooderView.h +// YuMi +// +// Created by YuMi on 2023/2/13. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineExchangeAuthorityFooderView : UITableViewHeaderFooterView +/// +@property (nonatomic,copy) NSString *title; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/XPMineExchangeAuthorityFooderView.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/XPMineExchangeAuthorityFooderView.m new file mode 100644 index 00000000..81ac98e3 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/XPMineExchangeAuthorityFooderView.m @@ -0,0 +1,54 @@ +// +// XPMineExchangeAuthorityFooderView.m +// YuMi +// +// Created by YuMi on 2023/2/13. +// + +#import "XPMineExchangeAuthorityFooderView.h" +///Third +#import +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +@interface XPMineExchangeAuthorityFooderView() +///标题 +@property (nonatomic,strong) UILabel *titleView; +@end +@implementation XPMineExchangeAuthorityFooderView + +-(instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier{ + self = [super initWithReuseIdentifier:reuseIdentifier]; + if(self){ + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.contentView.backgroundColor = UIColorFromRGB(0xF3F5FA); + [self.contentView addSubview:self.titleView]; +} +- (void)initSubViewConstraints { + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.equalTo(self.contentView); + }]; +} +-(void)setTitle:(NSString *)title{ + _title = title; + _titleView.text = _title; + +} +#pragma mark -懒加载 +- (UILabel *)titleView { + if (!_titleView) { + _titleView = [[UILabel alloc] init]; + _titleView.font = [UIFont systemFontOfSize:12]; + _titleView.textColor = [DJDKMIMOMColor disableButtonTextColor]; + _titleView.text = YMLocalizedString(@"XPMineExchangeAuthorityFooderView0"); + } + return _titleView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/XPMineExchangeAuthorityHeadView.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/XPMineExchangeAuthorityHeadView.h new file mode 100644 index 00000000..cd0cd64e --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/XPMineExchangeAuthorityHeadView.h @@ -0,0 +1,17 @@ +// +// XPMineExchangeAuthorityHeadView.h +// YuMi +// +// Created by YuMi on 2023/2/13. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineExchangeAuthorityHeadView : UITableViewHeaderFooterView +/// +@property (nonatomic,copy) NSString *title; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/XPMineExchangeAuthorityHeadView.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/XPMineExchangeAuthorityHeadView.m new file mode 100644 index 00000000..42740b9f --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/XPMineExchangeAuthorityHeadView.m @@ -0,0 +1,51 @@ +// +// XPMineExchangeAuthorityHeadView.m +// YuMi +// +// Created by YuMi on 2023/2/13. +// + +#import "XPMineExchangeAuthorityHeadView.h" +///Third +#import +#import "DJDKMIMOMColor.h" +@interface XPMineExchangeAuthorityHeadView() +///标题 +@property (nonatomic,strong) UILabel *titleView; +@end +@implementation XPMineExchangeAuthorityHeadView + +-(instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier{ + self = [super initWithReuseIdentifier:reuseIdentifier]; + if(self){ + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.contentView.backgroundColor = UIColorFromRGB(0xECE4FF); + [self.contentView addSubview:self.titleView]; +} +- (void)initSubViewConstraints { + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(15)); + make.centerY.equalTo(self.contentView); + }]; +} +-(void)setTitle:(NSString *)title{ + _title = title; + _titleView.text = _title; +} +#pragma mark -懒加载 +- (UILabel *)titleView { + if (!_titleView) { + _titleView = [[UILabel alloc] init]; + _titleView.font = [UIFont systemFontOfSize:15]; + _titleView.textColor = UIColorFromRGB(0x6D6B89); + } + return _titleView; +} +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/XPMinePromptWindow.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/XPMinePromptWindow.h new file mode 100644 index 00000000..6ceead17 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/XPMinePromptWindow.h @@ -0,0 +1,20 @@ +// +// XPMinePromptWindow.h +// YuMi +// +// Created by YuMi on 2023/2/13. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef void(^ConfirmHandler)(void); + +@interface XPMinePromptWindow : UIView +@property (nonatomic,copy) ConfirmHandler confirmHandler; +/// +@property (nonatomic,copy) NSString * name; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/XPMinePromptWindow.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/XPMinePromptWindow.m new file mode 100644 index 00000000..46a8ecae --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/XPMinePromptWindow.m @@ -0,0 +1,169 @@ +// +// XPMinePromptWindow.m +// YuMi +// +// Created by YuMi on 2023/2/13. +// + +#import "XPMinePromptWindow.h" +///Third +#import +#import "DJDKMIMOMColor.h" +#import "TTPopup.h" +#import "UIImage+Utils.h" +#import "UIView+Corner.h" +#import "YUMIMacroUitls.h" +@interface XPMinePromptWindow() +///背景 +@property (nonatomic,strong) UIView *bgView; +///标题 +@property (nonatomic,strong) UILabel *titleView; +///内容 +@property (nonatomic,strong) UILabel *messageView; + +///取消 +@property (nonatomic,strong) UIButton *cancelBtn; +///确认 +@property (nonatomic,strong) UIButton *confirmBtn; +///返回 +@property (nonatomic,strong) UIButton *backBtn; +@end +@implementation XPMinePromptWindow + +-(instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if(self){ + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +-(void)setName:(NSString *)name{ + _name = name; + NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; + UIImage *iconImage = [UIImage imageNamed:@"mine_guild_warning"]; + attachment.bounds = CGRectMake(0, roundf(_messageView.font.capHeight - kGetScaleWidth(16))/2.f, kGetScaleWidth(16), kGetScaleWidth(16)); + attachment.image = iconImage; + NSString *getName = [NSString stringWithFormat:YMLocalizedString(@"XPMinePromptWindow1"),_name]; + NSMutableAttributedString *textAtt = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@" %@",getName] attributes:@{NSForegroundColorAttributeName:UIColorFromRGB(0x1F1B4F),NSFontAttributeName:[UIFont systemFontOfSize:14]}]; + [textAtt setAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14],NSForegroundColorAttributeName:UIColorFromRGB(0x9168FA)} range:[textAtt.string rangeOfString:_name]]; + [textAtt insertAttributedString:[NSMutableAttributedString attributedStringWithAttachment:attachment] atIndex:0]; + _messageView.attributedText = textAtt; +} +-(void)backAction{ + [TTPopup dismiss]; +} +-(void)confirmAction{ + if(self.confirmHandler){ + self.confirmHandler(); + } + [self backAction]; +} +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.bgView]; + [self.bgView addSubview:self.backBtn]; + [self.bgView addSubview:self.titleView]; + [self.bgView addSubview:self.messageView]; + [self.bgView addSubview:self.cancelBtn]; + [self.bgView addSubview:self.confirmBtn]; +} +- (void)initSubViewConstraints { + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(kGetScaleWidth(310)); + make.height.mas_equalTo(kGetScaleWidth(196)); + make.center.equalTo(self); + }]; + [self.backBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(kGetScaleWidth(22)); + make.top.mas_equalTo(kGetScaleWidth(10)); + make.right.mas_equalTo(-kGetScaleWidth(15)); + }]; + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(25)); + make.centerX.equalTo(self.bgView); + }]; + + [self.messageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(67)); + make.right.mas_equalTo(-kGetScaleWidth(20)); + make.left.mas_equalTo(kGetScaleWidth(20)); + }]; + + + [self.cancelBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(kGetScaleWidth(110)); + make.height.mas_equalTo(kGetScaleWidth(37)); + make.left.mas_equalTo(kGetScaleWidth(31)); + make.top.mas_equalTo(kGetScaleWidth(129)); + }]; + [self.confirmBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.top.equalTo(self.cancelBtn); + make.right.mas_equalTo(-kGetScaleWidth(31)); + }]; +} +#pragma mark -懒加载 +- (UIView *)bgView{ + if (!_bgView){ + _bgView = [UIView new]; + [_bgView setCornerWithLeftTopCorner:kGetScaleWidth(12) rightTopCorner:kGetScaleWidth(12) bottomLeftCorner:kGetScaleWidth(12) bottomRightCorner:kGetScaleWidth(12) size:CGSizeMake(kGetScaleWidth(310), kGetScaleWidth(196))]; + _bgView.backgroundColor = [UIColor whiteColor]; + } + return _bgView; +} +-(UIButton *)backBtn{ + if (!_backBtn){ + _backBtn = [UIButton new]; + [_backBtn setBackgroundImage:[UIImage imageNamed:@"mine_guild_close"] forState:UIControlStateNormal]; + [_backBtn addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _backBtn; +} + + +- (UILabel *)titleView { + if (!_titleView) { + _titleView = [[UILabel alloc] init]; + _titleView.font = [UIFont systemFontOfSize:17 weight:UIFontWeightMedium]; + _titleView.textColor = UIColorFromRGB(0x1F1B4F); + _titleView.text = YMLocalizedString(@"XPMinePromptWindow0"); + } + return _titleView; +} + +-(UILabel *)messageView{ + if (!_messageView){ + _messageView = [UILabel new]; + _messageView.textAlignment = NSTextAlignmentCenter; + _messageView.numberOfLines = 0; + _messageView.font = [UIFont systemFontOfSize:14]; + + } + return _messageView; +} +-(UIButton *)cancelBtn{ + if (!_cancelBtn){ + _cancelBtn = [UIButton new]; + [_cancelBtn setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateNormal]; + [_cancelBtn setTitle:YMLocalizedString(@"XPMinePromptWindow2") forState:UIControlStateNormal]; + _cancelBtn.backgroundColor = UIColorFromRGB(0xE6E6F0); + _cancelBtn.layer.cornerRadius = kGetScaleWidth(37)/2; + _cancelBtn.layer.masksToBounds = YES; + [_cancelBtn addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _cancelBtn; +} +-(UIButton *)confirmBtn{ + if (!_confirmBtn){ + _confirmBtn = [UIButton new]; + [_confirmBtn setTitle:YMLocalizedString(@"XPMinePromptWindow3") forState:UIControlStateNormal]; + _confirmBtn.layer.cornerRadius = kGetScaleWidth(37)/2; + _confirmBtn.layer.masksToBounds = YES; + UIImage *image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientMiddleColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(110), kGetScaleWidth(37))]; + [_confirmBtn setBackgroundImage:image forState:UIControlStateNormal]; + [_confirmBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_confirmBtn addTarget:self action:@selector(confirmAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _confirmBtn; +} +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/YUMIManeExchangeAuthorityElement.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/YUMIManeExchangeAuthorityElement.h deleted file mode 100644 index bca3ccef..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/YUMIManeExchangeAuthorityElement.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YUMIManeExchangeAuthorityElement.h -// YuMi -// -// Created by YuMi on 2023/2/13. -// - -#import -#import "YUMIManeExchangeAuthorityMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCManeExchangeAuthorityElementRepresendtation - --(void)unfoildExdiversifictowardsionTowardstesttowardsionoritySwiftPosition:(NSString *)status model:(YUMIManeExchangeAuthorityMatrix *)model; - -@end - - - -@interface YUMIManeExchangeAuthorityElement : UITableViewCell -@property (nonatomic,strong) YUMIManeExchangeAuthorityMatrix *attestationorityMatrix; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/YUMIManeExchangeAuthorityElement.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/YUMIManeExchangeAuthorityElement.m deleted file mode 100644 index 6362a689..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/YUMIManeExchangeAuthorityElement.m +++ /dev/null @@ -1,338 +0,0 @@ -// -// YUMIManeExchangeAuthorityElement.m -// YuMi -// -// Created by YuMi on 2023/2/13. -// - -#import "YUMIManeExchangeAuthorityElement.h" -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -@interface YUMIManeExchangeAuthorityElement() -@property (nonatomic,strong) NetIndicateRegard *intelligenceRegard; -@property (nonatomic,strong) UILabel *constituteRegard; -@property (nonatomic,strong) UIStackView *monicerHierarchyRegard; -@property (nonatomic,strong) UIImageView *seaxualityIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *fascinationIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *experIndicateRegard; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UILabel *idRegard; -@property (nonatomic,strong) UIView *thresholdBurlywoodRegard; -@property (nonatomic,strong) UILabel *chamberRegard; -@property (nonatomic,strong) UIView *instantBurlywoodRegard; -@property (nonatomic,strong) UILabel *goldRegard; -@property (nonatomic,strong) UIButton *exdiversificationBtuton; -@property (nonatomic,strong) UIView *burlywoodRegard; -@end -@implementation YUMIManeExchangeAuthorityElement -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.contentView.backgroundColor = [UIColor whiteColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.intelligenceRegard]; - [self.contentView addSubview:self.monicerHierarchyRegard]; - [self.contentView addSubview:self.stackView]; - [self.contentView addSubview:self.exdiversificationBtuton]; - [self.contentView addSubview:self.burlywoodRegard]; - [self.contentView addSubview:self.thresholdBurlywoodRegard]; - [self.contentView addSubview:self.instantBurlywoodRegard]; - - [self.monicerHierarchyRegard addArrangedSubview:self.constituteRegard]; - [self.monicerHierarchyRegard addArrangedSubview:self.seaxualityIndicateRegard]; - [self.monicerHierarchyRegard addArrangedSubview:self.experIndicateRegard]; - [self.monicerHierarchyRegard addArrangedSubview:self.fascinationIndicateRegard]; - - [self.stackView addArrangedSubview:self.idRegard]; - [self.stackView addArrangedSubview:self.chamberRegard]; - [self.stackView addArrangedSubview:self.goldRegard]; -} -- (void)initChildLyRestrictions { - [self.intelligenceRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(12)); - make.width.height.mas_equalTo(kGetScaleWidth(50)); - make.centerY.equalTo(self.contentView); - }]; - [self.exdiversificationBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-kGetScaleWidth(12)); - make.width.mas_equalTo(kGetScaleWidth(68)); - make.height.mas_equalTo(kGetScaleWidth(24)); - make.centerY.equalTo(self.contentView); - }]; - - [self.monicerHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(70)); - make.top.mas_equalTo(kGetScaleWidth(21)); - make.height.mas_equalTo(kGetScaleWidth(17)); - make.width.mas_lessThanOrEqualTo(kGetScaleWidth(215)); - }]; - [self.seaxualityIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(2)); - make.height.width.mas_equalTo(kGetScaleWidth(14)); - make.bottom.mas_equalTo(0); - }]; - [self.experIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(kGetScaleWidth(22)); - }]; - [self.fascinationIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(kGetScaleWidth(22)); - }]; - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.equalTo(self.constituteRegard); - make.right.mas_equalTo(-kGetScaleWidth(90)); - make.top.mas_equalTo(kGetScaleWidth(45)); - make.height.mas_equalTo(kGetScaleWidth(14)); - }]; - [self.goldRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_greaterThanOrEqualTo(10); - }]; - [self.thresholdBurlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.equalTo(self.idRegard.mas_right).mas_offset(kGetScaleWidth(3)); - make.centerY.equalTo(self.idRegard); - make.width.mas_equalTo(kGetScaleWidth(1)); - make.height.mas_equalTo(kGetScaleWidth(8)); - }]; - - [self.instantBurlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.equalTo(self.chamberRegard.mas_right).mas_offset(kGetScaleWidth(3)); - make.centerY.equalTo(self.chamberRegard); - make.width.mas_equalTo(kGetScaleWidth(1)); - make.height.mas_equalTo(kGetScaleWidth(8)); - }]; - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.equalTo(self.contentView); - make.height.mas_equalTo(kGetScaleWidth(1)); - }]; -} --(void)setAttestationorityMatrix:(YUMIManeExchangeAuthorityMatrix *)attestationorityMatrix{ - _attestationorityMatrix = attestationorityMatrix; - _intelligenceRegard.imageUrl = _attestationorityMatrix.avatar; - _idRegard.text = [NSString stringWithFormat:@"ID:%ld",_attestationorityMatrix.erbanNo]; - NSString * hallName = _attestationorityMatrix.hallName; - if (hallName.length > 5) { - hallName = [NSString stringWithFormat:@"%@...", [hallName substringToIndex:5]]; - } - _chamberRegard.text = hallName; - _exdiversificationBtuton.selected = _attestationorityMatrix.exchangeAuthStatus == 0; - _goldRegard.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_MineExchangeAuthorityCell2"),_attestationorityMatrix.golds]; - NSString * nick = _attestationorityMatrix.nick; - if (nick.length > 8) { - nick = [NSString stringWithFormat:@"%@...", [nick substringToIndex:8]]; - } - _constituteRegard.text = nick; - self.seaxualityIndicateRegard.image = _attestationorityMatrix.gender == GenderGenre_Female ? [UIImage imageNamed:@"yumi_same_female"] : [UIImage imageNamed:@"yumi_same_male"]; - if (_attestationorityMatrix.userLevelVo.experUrl) { - if (self.experIndicateRegard.state == NetImageDeclareLoaded) { - self.experIndicateRegard.imageUrl = _attestationorityMatrix.userLevelVo.experUrl; - CGFloat kImageScale = self.experIndicateRegard.image.size.width / self.experIndicateRegard.image.size.height; - CGFloat imageWidth = 17 * kImageScale; - [self.experIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(imageWidth); - }]; - } else { - @kWeakify(self); - [self.experIndicateRegard chamberIndictowardseAboutWeebsite:_attestationorityMatrix.userLevelVo.experUrl completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) { - @kStrongify(self); - self.experIndicateRegard.image = image; - CGFloat kImageScale = image.size.width / image.size.height; - CGFloat imageWidth = 17 * kImageScale; - [self.experIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(imageWidth); - }]; - }]; - } - } - self.experIndicateRegard.hidden = _attestationorityMatrix.userLevelVo.experUrl.length <= 0; - - if (_attestationorityMatrix.userLevelVo.charmUrl) { - if (self.fascinationIndicateRegard.state == NetImageDeclareLoaded) { - self.fascinationIndicateRegard.imageUrl = _attestationorityMatrix.userLevelVo.charmUrl; - CGFloat kImageScale = self.fascinationIndicateRegard.image.size.width / self.fascinationIndicateRegard.image.size.height; - CGFloat imageWidth = 17 * kImageScale; - [self.fascinationIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(imageWidth); - }]; - } else { - @kWeakify(self); - [self.fascinationIndicateRegard chamberIndictowardseAboutWeebsite:_attestationorityMatrix.userLevelVo.charmUrl completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) { - @kStrongify(self); - self.fascinationIndicateRegard.image = image; - CGFloat kImageScale = image.size.width / image.size.height; - CGFloat imageWidth = 17 * kImageScale; - [self.fascinationIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(imageWidth); - }]; - }]; - } - } - self.fascinationIndicateRegard.hidden = _attestationorityMatrix.userLevelVo.charmUrl.length <= 0; -} --(void)exdiversifictowardsionPerformance{ - if(self.delegate && [self.delegate respondsToSelector:@selector(unfoildExdiversifictowardsionTowardstesttowardsionoritySwiftPosition:model:)]){ - [self.delegate unfoildExdiversifictowardsionTowardstesttowardsionoritySwiftPosition:self.exdiversificationBtuton.selected ? @"1":@"0" model:self.attestationorityMatrix]; - } -} -#pragma mark -懒加载 -- (NetIndicateRegard *)intelligenceRegard{ - if (!_intelligenceRegard){ - NetIndicateDisposition *config = [NetIndicateDisposition new]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceRegard = [[NetIndicateRegard alloc]initWithConfig:config]; - _intelligenceRegard.layer.cornerRadius = kGetScaleWidth(25); - _intelligenceRegard.layer.masksToBounds = YES; - } - return _intelligenceRegard; -} - -- (UILabel *)constituteRegard { - if (!_constituteRegard) { - _constituteRegard = [[UILabel alloc] init]; - _constituteRegard.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - _constituteRegard.textColor = UIColorFromRGB(0x1F1B4F); - } - return _constituteRegard; -} - --(UIStackView *)stackView{ - if (!_stackView){ - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = kGetScaleWidth(7); - } - return _stackView; -} - -- (UILabel *)idRegard { - if (!_idRegard) { - _idRegard = [[UILabel alloc] init]; - _idRegard.font = [UIFont systemFontOfSize:10]; - _idRegard.textColor = UIColorFromRGB(0x6D6B89); - } - return _idRegard; -} - --(UIView *)thresholdBurlywoodRegard{ - if (!_thresholdBurlywoodRegard){ - _thresholdBurlywoodRegard = [UIView new]; - _thresholdBurlywoodRegard.backgroundColor = UIColorFromRGB(0xD8D8D8); - } - return _thresholdBurlywoodRegard; -} - -- (UILabel *)chamberRegard { - if (!_chamberRegard) { - _chamberRegard = [[UILabel alloc] init]; - _chamberRegard.font = [UIFont systemFontOfSize:10]; - _chamberRegard.textColor = UIColorFromRGB(0x6D6B89); - } - return _chamberRegard; -} - --(UIView *)instantBurlywoodRegard{ - if (!_instantBurlywoodRegard){ - _instantBurlywoodRegard = [UIView new]; - _instantBurlywoodRegard.backgroundColor = UIColorFromRGB(0xD8D8D8); - } - return _instantBurlywoodRegard; -} - -- (UILabel *)goldRegard { - if (!_goldRegard) { - _goldRegard = [[UILabel alloc] init]; - _goldRegard.font = [UIFont systemFontOfSize:10]; - _goldRegard.textColor = UIColorFromRGB(0x6D6B89); - } - return _goldRegard; -} - --(UIButton *)exdiversificationBtuton{ - if (!_exdiversificationBtuton){ - _exdiversificationBtuton = [UIButton new]; - _exdiversificationBtuton.titleLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightMedium]; - UIImage *normalImage = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(kGetScaleWidth(68), kGetScaleWidth(24))]; - [_exdiversificationBtuton setBackgroundImage:normalImage forState:UIControlStateNormal]; - [_exdiversificationBtuton setTitle:YMLocalizedString(@"YUMI_MineExchangeAuthorityCell1") forState:UIControlStateNormal]; - [_exdiversificationBtuton setTitleColor:UIColorFromRGB(0xB3B3C3) forState:UIControlStateNormal]; - - UIImage *selectedImage = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityMiddlePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(kGetScaleWidth(68), kGetScaleWidth(24))]; - [_exdiversificationBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; - [_exdiversificationBtuton setBackgroundImage:selectedImage forState:UIControlStateSelected]; - [_exdiversificationBtuton setTitle:YMLocalizedString(@"YUMI_MineExchangeAuthorityCell0") forState:UIControlStateSelected]; - _exdiversificationBtuton.layer.cornerRadius = kGetScaleWidth(12); - _exdiversificationBtuton.layer.masksToBounds = YES; - [_exdiversificationBtuton addTarget:self action:@selector(exdiversifictowardsionPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _exdiversificationBtuton; -} --(UIView *)burlywoodRegard{ - if (!_burlywoodRegard){ - _burlywoodRegard = [UIView new]; - _burlywoodRegard.backgroundColor = UIColorFromRGB(0xF3F5FA); - } - return _burlywoodRegard; -} -- (UIImageView *)seaxualityIndicateRegard { - if (!_seaxualityIndicateRegard) { - _seaxualityIndicateRegard = [[UIImageView alloc] init]; - _seaxualityIndicateRegard.userInteractionEnabled = YES; - } - return _seaxualityIndicateRegard; -} - -- (NetIndicateRegard *)experIndicateRegard { - if (!_experIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.imageType = ImageGenreUserCardLevel; - _experIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _experIndicateRegard.userInteractionEnabled = YES; - _experIndicateRegard.hidden = YES; - _experIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _experIndicateRegard; -} - -- (NetIndicateRegard *)fascinationIndicateRegard { - if (!_fascinationIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.imageType = ImageGenreUserCardLevel; - _fascinationIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _fascinationIndicateRegard.userInteractionEnabled = YES; - _fascinationIndicateRegard.hidden = YES; - _fascinationIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _fascinationIndicateRegard; -} -- (UIStackView *)monicerHierarchyRegard { - if (!_monicerHierarchyRegard) { - _monicerHierarchyRegard = [[UIStackView alloc] init]; - _monicerHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _monicerHierarchyRegard.distribution = UIStackViewDistributionFill; - _monicerHierarchyRegard.alignment = UIStackViewAlignmentFill; - _monicerHierarchyRegard.spacing = kGetScaleWidth(5); - } - return _monicerHierarchyRegard; -} -- (void)awakeFromNib { - [super awakeFromNib]; - -} - -- (void)setSelected:(BOOL)selected animated:(BOOL)animated { - [super setSelected:selected animated:animated]; - - -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/YUMIManeExchangeAuthorityFooderRegard.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/YUMIManeExchangeAuthorityFooderRegard.h deleted file mode 100644 index ea06079f..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/YUMIManeExchangeAuthorityFooderRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIManeExchangeAuthorityFooderRegard.h -// YuMi -// -// Created by YuMi on 2023/2/13. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeExchangeAuthorityFooderRegard : UITableViewHeaderFooterView -@property (nonatomic,copy) NSString *title; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/YUMIManeExchangeAuthorityFooderRegard.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/YUMIManeExchangeAuthorityFooderRegard.m deleted file mode 100644 index a9554248..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/YUMIManeExchangeAuthorityFooderRegard.m +++ /dev/null @@ -1,52 +0,0 @@ -// -// YUMIManeExchangeAuthorityFooderRegard.m -// YuMi -// -// Created by YuMi on 2023/2/13. -// - -#import "YUMIManeExchangeAuthorityFooderRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -@interface YUMIManeExchangeAuthorityFooderRegard() -@property (nonatomic,strong) UILabel *titleView; -@end -@implementation YUMIManeExchangeAuthorityFooderRegard - --(instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier{ - self = [super initWithReuseIdentifier:reuseIdentifier]; - if(self){ - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.contentView.backgroundColor = UIColorFromRGB(0xF3F5FA); - [self.contentView addSubview:self.titleView]; -} -- (void)initChildLyRestrictions { - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.equalTo(self.contentView); - }]; -} --(void)setTitle:(NSString *)title{ - _title = title; - _titleView.text = _title; - -} -#pragma mark -懒加载 -- (UILabel *)titleView { - if (!_titleView) { - _titleView = [[UILabel alloc] init]; - _titleView.font = [UIFont systemFontOfSize:12]; - _titleView.textColor = [DJDKMIMOMColor prohibitionBtutonEssayPrettify]; - _titleView.text = YMLocalizedString(@"YUMI_MineExchangeAuthorityFooderView0"); - } - return _titleView; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/YUMIManeExchangeAuthorityIntelligenceRegard.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/YUMIManeExchangeAuthorityIntelligenceRegard.h deleted file mode 100644 index 057fdac1..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/YUMIManeExchangeAuthorityIntelligenceRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIManeExchangeAuthorityIntelligenceRegard.h -// YuMi -// -// Created by YuMi on 2023/2/13. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeExchangeAuthorityIntelligenceRegard : UITableViewHeaderFooterView -@property (nonatomic,copy) NSString *title; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/YUMIManeExchangeAuthorityIntelligenceRegard.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/YUMIManeExchangeAuthorityIntelligenceRegard.m deleted file mode 100644 index 593d9d7e..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/YUMIManeExchangeAuthorityIntelligenceRegard.m +++ /dev/null @@ -1,49 +0,0 @@ -// -// YUMIManeExchangeAuthorityIntelligenceRegard.m -// YuMi -// -// Created by YuMi on 2023/2/13. -// - -#import "YUMIManeExchangeAuthorityIntelligenceRegard.h" -#import -#import "DJDKMIMOMColor.h" -@interface YUMIManeExchangeAuthorityIntelligenceRegard() -@property (nonatomic,strong) UILabel *titleView; -@end -@implementation YUMIManeExchangeAuthorityIntelligenceRegard - --(instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier{ - self = [super initWithReuseIdentifier:reuseIdentifier]; - if(self){ - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.contentView.backgroundColor = UIColorFromRGB(0xECE4FF); - [self.contentView addSubview:self.titleView]; -} -- (void)initChildLyRestrictions { - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(15)); - make.centerY.equalTo(self.contentView); - }]; -} --(void)setTitle:(NSString *)title{ - _title = title; - _titleView.text = _title; -} -#pragma mark -懒加载 -- (UILabel *)titleView { - if (!_titleView) { - _titleView = [[UILabel alloc] init]; - _titleView.font = [UIFont systemFontOfSize:15]; - _titleView.textColor = UIColorFromRGB(0x6D6B89); - } - return _titleView; -} -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/YUMIManePromptWindow.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/YUMIManePromptWindow.h deleted file mode 100644 index 2608246e..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/YUMIManePromptWindow.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YUMIManePromptWindow.h -// YuMi -// -// Created by YuMi on 2023/2/13. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef void(^ConfirmHandler)(void); - -@interface YUMIManePromptWindow : UIView -@property (nonatomic,copy) ConfirmHandler acknowledgementHandler; -@property (nonatomic,copy) NSString * name; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/YUMIManePromptWindow.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/YUMIManePromptWindow.m deleted file mode 100644 index 1b32be14..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/ExchangeAuthority/YUMIManePromptWindow.m +++ /dev/null @@ -1,162 +0,0 @@ -// -// YUMIManePromptWindow.m -// YuMi -// -// Created by YuMi on 2023/2/13. -// - -#import "YUMIManePromptWindow.h" -#import -#import "DJDKMIMOMColor.h" -#import "MKJPopup.h" -#import "UIImage+Utils.h" -#import "UIView+Corner.h" -#import "YUMIMacroUitls.h" -@interface YUMIManePromptWindow() -@property (nonatomic,strong) UIView *backgroundRegard; -@property (nonatomic,strong) UILabel *titleView; -@property (nonatomic,strong) UILabel *communicationRegard; - -@property (nonatomic,strong) UIButton *revocationBtuton; -@property (nonatomic,strong) UIButton *confirmBtn; -@property (nonatomic,strong) UIButton *encourageBtuton; -@end -@implementation YUMIManePromptWindow - --(instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if(self){ - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} --(void)setName:(NSString *)name{ - _name = name; - NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; - UIImage *iconImage = [UIImage imageNamed:@"yumi_center_guild_warning"]; - attachment.bounds = CGRectMake(0, roundf(_communicationRegard.font.capHeight - kGetScaleWidth(16))/2.f, kGetScaleWidth(16), kGetScaleWidth(16)); - attachment.image = iconImage; - NSString *getName = [NSString stringWithFormat:YMLocalizedString(@"YUMI_MinePromptWindow1"),_name]; - NSMutableAttributedString *textAtt = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@" %@",getName] attributes:@{NSForegroundColorAttributeName:UIColorFromRGB(0x1F1B4F),NSFontAttributeName:[UIFont systemFontOfSize:14]}]; - [textAtt setAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14],NSForegroundColorAttributeName:UIColorFromRGB(0x9168FA)} range:[textAtt.string rangeOfString:_name]]; - [textAtt insertAttributedString:[NSMutableAttributedString attributedStringWithAttachment:attachment] atIndex:0]; - _communicationRegard.attributedText = textAtt; -} --(void)backAction{ - [MKJPopup dismiss]; -} --(void)acknowledgementPerformance{ - if(self.acknowledgementHandler){ - self.acknowledgementHandler(); - } - [self backAction]; -} -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backgroundRegard]; - [self.backgroundRegard addSubview:self.encourageBtuton]; - [self.backgroundRegard addSubview:self.titleView]; - [self.backgroundRegard addSubview:self.communicationRegard]; - [self.backgroundRegard addSubview:self.revocationBtuton]; - [self.backgroundRegard addSubview:self.confirmBtn]; -} -- (void)initChildLyRestrictions { - [self.backgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(kGetScaleWidth(310)); - make.height.mas_equalTo(kGetScaleWidth(196)); - make.center.equalTo(self); - }]; - [self.encourageBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(kGetScaleWidth(22)); - make.top.mas_equalTo(kGetScaleWidth(10)); - make.right.mas_equalTo(-kGetScaleWidth(15)); - }]; - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(25)); - make.centerX.equalTo(self.backgroundRegard); - }]; - - [self.communicationRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(67)); - make.right.mas_equalTo(-kGetScaleWidth(20)); - make.left.mas_equalTo(kGetScaleWidth(20)); - }]; - - - [self.revocationBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(kGetScaleWidth(110)); - make.height.mas_equalTo(kGetScaleWidth(37)); - make.left.mas_equalTo(kGetScaleWidth(31)); - make.top.mas_equalTo(kGetScaleWidth(129)); - }]; - [self.confirmBtn mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.top.equalTo(self.revocationBtuton); - make.right.mas_equalTo(-kGetScaleWidth(31)); - }]; -} -#pragma mark -懒加载 -- (UIView *)backgroundRegard{ - if (!_backgroundRegard){ - _backgroundRegard = [UIView new]; - [_backgroundRegard setMonopolizeAboutContraryApexMonopolize:kGetScaleWidth(12) rightTopCorner:kGetScaleWidth(12) bottomLeftCorner:kGetScaleWidth(12) bottomRightCorner:kGetScaleWidth(12) size:CGSizeMake(kGetScaleWidth(310), kGetScaleWidth(196))]; - _backgroundRegard.backgroundColor = [UIColor whiteColor]; - } - return _backgroundRegard; -} --(UIButton *)encourageBtuton{ - if (!_encourageBtuton){ - _encourageBtuton = [UIButton new]; - [_encourageBtuton setBackgroundImage:[UIImage imageNamed:@"mine_guild_close"] forState:UIControlStateNormal]; - [_encourageBtuton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside]; - } - return _encourageBtuton; -} - - -- (UILabel *)titleView { - if (!_titleView) { - _titleView = [[UILabel alloc] init]; - _titleView.font = [UIFont systemFontOfSize:17 weight:UIFontWeightMedium]; - _titleView.textColor = UIColorFromRGB(0x1F1B4F); - _titleView.text = YMLocalizedString(@"YUMI_MinePromptWindow0"); - } - return _titleView; -} - --(UILabel *)communicationRegard{ - if (!_communicationRegard){ - _communicationRegard = [UILabel new]; - _communicationRegard.textAlignment = NSTextAlignmentCenter; - _communicationRegard.numberOfLines = 0; - _communicationRegard.font = [UIFont systemFontOfSize:14]; - - } - return _communicationRegard; -} --(UIButton *)revocationBtuton{ - if (!_revocationBtuton){ - _revocationBtuton = [UIButton new]; - [_revocationBtuton setTitleColor:[DJDKMIMOMColor prohibitionBtutonEssayPrettify] forState:UIControlStateNormal]; - [_revocationBtuton setTitle:YMLocalizedString(@"YUMI_MinePromptWindow2") forState:UIControlStateNormal]; - _revocationBtuton.backgroundColor = UIColorFromRGB(0xE6E6F0); - _revocationBtuton.layer.cornerRadius = kGetScaleWidth(37)/2; - _revocationBtuton.layer.masksToBounds = YES; - [_revocationBtuton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside]; - } - return _revocationBtuton; -} --(UIButton *)confirmBtn{ - if (!_confirmBtn){ - _confirmBtn = [UIButton new]; - [_confirmBtn setTitle:YMLocalizedString(@"YUMI_MinePromptWindow3") forState:UIControlStateNormal]; - _confirmBtn.layer.cornerRadius = kGetScaleWidth(37)/2; - _confirmBtn.layer.masksToBounds = YES; - UIImage *image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityMiddlePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(kGetScaleWidth(110), kGetScaleWidth(37))]; - [_confirmBtn setBackgroundImage:image forState:UIControlStateNormal]; - [_confirmBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [_confirmBtn addTarget:self action:@selector(acknowledgementPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _confirmBtn; -} -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/GuildList/XPMineGuildListCell.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/GuildList/XPMineGuildListCell.h new file mode 100644 index 00000000..80cd332c --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/GuildList/XPMineGuildListCell.h @@ -0,0 +1,28 @@ +// +// XPMineGuildListCell.h +// YuMi +// +// Created by YuMi on 2022/10/11. +// + +#import +#import "XPMineGuildListModel.h" + +NS_ASSUME_NONNULL_BEGIN +@protocol XPMineGuildListCellDelegate + +-(void)applyActionWithModel:(id)guildModel; + +@end + +@interface XPMineGuildListCell : UITableViewCell +@property(nonatomic,strong)XPMineGuildListModel *guildModel; +@property(nonatomic,strong)XPMineGuildListModel *hallModel; +@property (nonatomic,assign) NSInteger rankNum; +@property (nonatomic,weak) id delegate; +@property (nonatomic,assign) BOOL isFromHall; +-(void)setApplyBtnType:(BOOL)is; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/GuildList/XPMineGuildListCell.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/GuildList/XPMineGuildListCell.m new file mode 100644 index 00000000..9dd4f7fc --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/GuildList/XPMineGuildListCell.m @@ -0,0 +1,327 @@ +// +// XPMineGuildListCell.m +// YuMi +// +// Created by YuMi on 2022/10/11. +// + +#import "XPMineGuildListCell.h" +///Third +#import +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "NetImageView.h" +#import "XNDJTDDLoadingTool.h" +@interface XPMineGuildListCell() +///名次icon +@property (nonatomic,strong) UIImageView *rankingIcon; +///名次title +@property (nonatomic,strong) UILabel *rankingTilte; +///公會 名 +@property (nonatomic,strong) UILabel *nameLabel; +///房间id +@property (nonatomic,strong) UILabel *roomIdLabel; +///公會標識 +@property (nonatomic,strong) NetImageView *guildIcon; +///公會頭像 +@property (nonatomic,strong) NetImageView *headIcon; +///申请按钮 +@property (nonatomic,strong) UIButton *applyBtn; +@end + +@implementation XPMineGuildListCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.selectionStyle = UITableViewCellSelectionStyleNone; + self.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.rankingIcon]; + [self.contentView addSubview:self.rankingTilte]; + [self.contentView addSubview:self.headIcon]; + [self.contentView addSubview:self.nameLabel]; + [self.contentView addSubview:self.roomIdLabel]; + [self.contentView addSubview:self.guildIcon]; + [self.contentView addSubview:self.applyBtn]; +} +- (void)initSubViewConstraints { + [self.rankingIcon mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(kGetScaleWidth(22)); + make.left.mas_equalTo(kGetScaleWidth(12)); + make.centerY.equalTo(self.contentView); + }]; + [self.headIcon mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(kGetScaleWidth(40)); + make.left.equalTo(self.rankingIcon.mas_right).mas_offset(kGetScaleWidth(10)); + make.centerY.equalTo(self.contentView); + }]; + [self.rankingTilte mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.equalTo(self.headIcon); + make.centerX.equalTo(self.rankingIcon); + }]; + + [self.guildIcon mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(kGetScaleWidth(29)); + make.right.mas_equalTo(-kGetScaleWidth(91)); + make.centerY.equalTo(self.contentView); + }]; + [self.applyBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(kGetScaleWidth(70)); + make.height.mas_equalTo(kGetScaleWidth(25)); + make.centerY.equalTo(self.contentView); + make.right.mas_equalTo(-kGetScaleWidth(15)); + }]; +} +-(void)setApplyBtnType:(BOOL)is{ + if(self.guildModel == nil){ + switch (_hallModel.hallBtnStatus) { + case 0: + { + _applyBtn.hidden = YES; + break; + } + case 1: + { + [_applyBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _applyBtn.backgroundColor = [UIColor clearColor]; + [_applyBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_applyBtn setTitle:YMLocalizedString(@"XPMineGuildListCell0") forState:UIControlStateNormal]; + _applyBtn.hidden = NO; + break; + } + case 2: + { + [_applyBtn setTitle:YMLocalizedString(@"XPMineGuildListCell5") forState:UIControlStateNormal]; + _applyBtn.backgroundColor = UIColorFromRGB(0xE6E6F0); + [_applyBtn setTitleColor:UIColorFromRGB(0xB3B3C3) forState:UIControlStateNormal]; + [_applyBtn setBackgroundImage:nil forState:UIControlStateNormal]; + _applyBtn.hidden = NO; + break; + } + case 3: + { + [_applyBtn setTitle:YMLocalizedString(@"XPMineGuildListCell6") forState:UIControlStateNormal]; + _applyBtn.backgroundColor = UIColorFromRGB(0xFFBC51); + [_applyBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_applyBtn setBackgroundImage:nil forState:UIControlStateNormal]; + _applyBtn.hidden = NO; + break; + } + default: + break; + } + + + + return; + } + self.applyBtn.selected = is; +} + +-(void)applyAction{ + + if(self.guildModel == nil){ + if(self.delegate && [self.delegate respondsToSelector:@selector(applyActionWithModel:)]){ + [self.delegate applyActionWithModel:self.hallModel]; + } + + return; + + } + if(self.guildModel.applyBtnStatus == 0)return; + if(self.guildModel.applyBtnStatus == 2){ + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPMineGuildListCell2")]; + return; + } + if(self.delegate && [self.delegate respondsToSelector:@selector(applyActionWithModel:)]){ + [self.delegate applyActionWithModel:self.guildModel]; + + } + +} +-(void)setHallModel:(XPMineGuildListModel *)hallModel{ + _hallModel = hallModel; + _headIcon.imageUrl = _hallModel.ownerAvatar; + _nameLabel.text = _hallModel.hallName; + _guildIcon.hidden = YES; + _roomIdLabel.hidden = NO; + _roomIdLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPMineGuildListCell3"),_hallModel.ownerErbanNo]; + [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.equalTo(self.headIcon.mas_centerY).mas_offset(-kGetScaleWidth(3.5)); + make.left.equalTo(self.headIcon.mas_right).mas_offset(kGetScaleWidth(8)); + make.right.mas_equalTo(-kGetScaleWidth(130)); + + }]; + [self.roomIdLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.equalTo(self.nameLabel); + make.top.equalTo(self.nameLabel.mas_bottom).mas_offset(kGetScaleWidth(7)); + make.height.mas_equalTo(kGetScaleWidth(14)); + }]; + + + switch (_hallModel.hallBtnStatus) { + case 0: + { + _applyBtn.hidden = YES; + break; + } + case 1: + { + [_applyBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _applyBtn.backgroundColor = [UIColor clearColor]; + [_applyBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_applyBtn setTitle:YMLocalizedString(@"XPMineGuildListCell0") forState:UIControlStateNormal]; + _applyBtn.hidden = NO; + break; + } + case 2: + { + [_applyBtn setTitle:YMLocalizedString(@"XPMineGuildListCell5") forState:UIControlStateNormal]; + _applyBtn.backgroundColor = UIColorFromRGB(0xE6E6F0); + [_applyBtn setTitleColor:UIColorFromRGB(0xB3B3C3) forState:UIControlStateNormal]; + [_applyBtn setBackgroundImage:nil forState:UIControlStateNormal]; + _applyBtn.hidden = NO; + break; + } + case 3: + { + [_applyBtn setTitle:YMLocalizedString(@"XPMineGuildListCell6") forState:UIControlStateNormal]; + _applyBtn.backgroundColor = UIColorFromRGB(0xFFBC51); + [_applyBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_applyBtn setBackgroundImage:nil forState:UIControlStateNormal]; + _applyBtn.hidden = NO; + break; + } + default: + break; + } + + + +} +-(void)setGuildModel:(XPMineGuildListModel *)guildModel{ + _guildModel = guildModel; + _headIcon.imageUrl = _guildModel.avatar; + _nameLabel.text = _guildModel.name; + _guildIcon.imageUrl = _guildModel.levelIcon; + self.applyBtn.hidden = NO; + _roomIdLabel.hidden = YES; + [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.equalTo(self.headIcon); + make.left.equalTo(self.headIcon.mas_right).mas_offset(kGetScaleWidth(8)); + make.right.mas_equalTo(-kGetScaleWidth(130)); + + }]; + + if(_guildModel.applyBtnStatus == 0){ + self.applyBtn.hidden = YES; + [_guildIcon mas_updateConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-kGetScaleWidth(15)); + }]; + return; + } + self.applyBtn.selected = _guildModel.applyBtnStatus == 1; +} +-(void)setIsFromHall:(BOOL)isFromHall{ + _isFromHall = isFromHall; + if(_isFromHall == YES){ + self.applyBtn.hidden = YES; + [self.guildIcon mas_updateConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-kGetScaleWidth(15)); + }]; + } + +} +-(void)setRankNum:(NSInteger)rankNum{ + _rankNum = rankNum; + if (_rankNum < 3){ + _rankingIcon.hidden = NO; + _rankingTilte.hidden = YES; + _rankingIcon.image = [UIImage imageNamed:@[@"mine_guild_list_one",@"mine_guild_list_two",@"mine_guild_list_three"][_rankNum]]; + }else{ + _rankingIcon.hidden = YES; + _rankingTilte.hidden = NO; + _rankingTilte.text = [NSString stringWithFormat:@"%ld",_rankNum+1]; + } +} +-(UIImageView *)rankingIcon{ + if (!_rankingIcon){ + _rankingIcon = [UIImageView new]; + } + return _rankingIcon; +} +- (UILabel *)rankingTilte{ + if (!_rankingTilte){ + _rankingTilte = [UILabel new]; + _rankingTilte.font = [UIFont systemFontOfSize:16 weight:UIFontWeightBold]; + _rankingTilte.textColor = UIColorFromRGB(0x1F1A4E); + } + return _rankingTilte; +} +- (UILabel *)nameLabel{ + if (!_nameLabel){ + _nameLabel = [UILabel new]; + _nameLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + _nameLabel.textColor = UIColorFromRGB(0x1F1A4E); + } + return _nameLabel; +} +-(NetImageView *)guildIcon{ + if (!_guildIcon){ + _guildIcon = [[NetImageView alloc]init]; + } + return _guildIcon; +} +- (NetImageView *)headIcon{ + if (!_headIcon){ + NetImageConfig *config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _headIcon = [[NetImageView alloc]initWithConfig:config]; + _headIcon.layer.cornerRadius = kGetScaleWidth(20); + _headIcon.layer.masksToBounds = YES; + } + return _headIcon; +} +-(UIButton *)applyBtn{ + if (!_applyBtn){ + + UIImage *chooseImage = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientMiddleColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(70), kGetScaleWidth(25))]; + UIImage *noChooseImage = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(70), kGetScaleWidth(25))]; + _applyBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_applyBtn setTitle:YMLocalizedString(@"XPMineGuildListCell1") forState:UIControlStateNormal]; + _applyBtn.titleLabel.font = [UIFont systemFontOfSize:12]; + [_applyBtn setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; + [_applyBtn setBackgroundImage:chooseImage forState:UIControlStateSelected]; + [_applyBtn setBackgroundImage:noChooseImage forState:UIControlStateNormal]; + [_applyBtn setTitle:YMLocalizedString(@"XPMineGuildListCell0") forState:UIControlStateSelected]; + [_applyBtn setTitle:YMLocalizedString(@"XPMineGuildListCell1") forState:UIControlStateNormal]; + + [_applyBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; + [_applyBtn setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; + [_applyBtn addTarget:self action:@selector(applyAction) forControlEvents:UIControlEventTouchUpInside]; + _applyBtn.layer.cornerRadius = kGetScaleWidth(25)/2; + _applyBtn.layer.masksToBounds = YES; + + } + return _applyBtn; +} + + +- (UILabel *)roomIdLabel { + if (!_roomIdLabel) { + _roomIdLabel = [[UILabel alloc] init]; + _roomIdLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _roomIdLabel.textColor = [DJDKMIMOMColor disableButtonTextColor]; + } + return _roomIdLabel; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/GuildList/YUMIManeUnionStatementElement.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/GuildList/YUMIManeUnionStatementElement.h deleted file mode 100644 index dcb1d3b1..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/GuildList/YUMIManeUnionStatementElement.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// YUMIManeUnionStatementElement.h -// YuMi -// -// Created by YuMi on 2022/10/11. -// - -#import -#import "YUMIManeUnionStatementMatrix.h" - -NS_ASSUME_NONNULL_BEGIN -@protocol FBCManeUnionStatementElementRepresendtation - --(void)demandPerformanceAboutMtowardsrix:(id)guildMatrix; - -@end - -@interface YUMIManeUnionStatementElement : UITableViewCell -@property(nonatomic,strong)YUMIManeUnionStatementMatrix *guildMatrix; -@property(nonatomic,strong)YUMIManeUnionStatementMatrix *hentiretyMatrix; -@property (nonatomic,assign) NSInteger rateFigure; -@property (nonatomic,weak) id delegate; -@property (nonatomic,assign) BOOL isFromCorridor; --(void)setAplictowardsionlyBtutonGenre:(BOOL)is; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/GuildList/YUMIManeUnionStatementElement.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/GuildList/YUMIManeUnionStatementElement.m deleted file mode 100644 index ca9667a4..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/GuildList/YUMIManeUnionStatementElement.m +++ /dev/null @@ -1,319 +0,0 @@ -// -// YUMIManeUnionStatementElement.m -// YuMi -// -// Created by YuMi on 2022/10/11. -// - -#import "YUMIManeUnionStatementElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "NetIndicateRegard.h" -#import "XNDJTBWGLoadingTool.h" -@interface YUMIManeUnionStatementElement() -@property (nonatomic,strong) UIImageView *rateingFigure; -@property (nonatomic,strong) UILabel *rateingTilte; -@property (nonatomic,strong) UILabel *constituteSequencignation; -@property (nonatomic,strong) UILabel *chamberIdSequencignation; -@property (nonatomic,strong) NetIndicateRegard *guildFigure; -@property (nonatomic,strong) NetIndicateRegard *intelligenceFigure; -@property (nonatomic,strong) UIButton *applyBtuton; -@end - -@implementation YUMIManeUnionStatementElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.selectionStyle = UITableViewCellSelectionStyleNone; - self.backgroundColor = [UIColor clearColor]; - [self.contentView addSubview:self.rateingFigure]; - [self.contentView addSubview:self.rateingTilte]; - [self.contentView addSubview:self.intelligenceFigure]; - [self.contentView addSubview:self.constituteSequencignation]; - [self.contentView addSubview:self.chamberIdSequencignation]; - [self.contentView addSubview:self.guildFigure]; - [self.contentView addSubview:self.applyBtuton]; -} -- (void)initChildLyRestrictions { - [self.rateingFigure mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(kGetScaleWidth(22)); - make.left.mas_equalTo(kGetScaleWidth(12)); - make.centerY.equalTo(self.contentView); - }]; - [self.intelligenceFigure mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(kGetScaleWidth(40)); - make.left.equalTo(self.rateingFigure.mas_right).mas_offset(kGetScaleWidth(10)); - make.centerY.equalTo(self.contentView); - }]; - [self.rateingTilte mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.equalTo(self.intelligenceFigure); - make.centerX.equalTo(self.rateingFigure); - }]; - - [self.guildFigure mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(kGetScaleWidth(29)); - make.right.mas_equalTo(-kGetScaleWidth(91)); - make.centerY.equalTo(self.contentView); - }]; - [self.applyBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(kGetScaleWidth(70)); - make.height.mas_equalTo(kGetScaleWidth(25)); - make.centerY.equalTo(self.contentView); - make.right.mas_equalTo(-kGetScaleWidth(15)); - }]; -} --(void)setAplictowardsionlyBtutonGenre:(BOOL)is{ - if(self.guildMatrix == nil){ - switch (_hentiretyMatrix.hallBtnStatus) { - case 0: - { - _applyBtuton.hidden = YES; - break; - } - case 1: - { - [_applyBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _applyBtuton.backgroundColor = [UIColor clearColor]; - [_applyBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [_applyBtuton setTitle:YMLocalizedString(@"YUMI_MineGuildListCell0") forState:UIControlStateNormal]; - _applyBtuton.hidden = NO; - break; - } - case 2: - { - [_applyBtuton setTitle:YMLocalizedString(@"YUMI_MineGuildListCell5") forState:UIControlStateNormal]; - _applyBtuton.backgroundColor = UIColorFromRGB(0xE6E6F0); - [_applyBtuton setTitleColor:UIColorFromRGB(0xB3B3C3) forState:UIControlStateNormal]; - [_applyBtuton setBackgroundImage:nil forState:UIControlStateNormal]; - _applyBtuton.hidden = NO; - break; - } - case 3: - { - [_applyBtuton setTitle:YMLocalizedString(@"YUMI_MineGuildListCell6") forState:UIControlStateNormal]; - _applyBtuton.backgroundColor = UIColorFromRGB(0xFFBC51); - [_applyBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [_applyBtuton setBackgroundImage:nil forState:UIControlStateNormal]; - _applyBtuton.hidden = NO; - break; - } - default: - break; - } - - - - return; - } - self.applyBtuton.selected = is; -} - --(void)demandPerformance{ - - if(self.guildMatrix == nil){ - if(self.delegate && [self.delegate respondsToSelector:@selector(demandPerformanceAboutMtowardsrix:)]){ - [self.delegate demandPerformanceAboutMtowardsrix:self.hentiretyMatrix]; - } - - return; - - } - if(self.guildMatrix.applyBtnStatus == 0)return; - if(self.guildMatrix.applyBtnStatus == 2){ - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_MineGuildListCell2")]; - return; - } - if(self.delegate && [self.delegate respondsToSelector:@selector(demandPerformanceAboutMtowardsrix:)]){ - [self.delegate demandPerformanceAboutMtowardsrix:self.guildMatrix]; - - } - -} --(void)setHentiretyMatrix:(YUMIManeUnionStatementMatrix *)hentiretyMatrix{ - _hentiretyMatrix = hentiretyMatrix; - _intelligenceFigure.imageUrl = _hentiretyMatrix.ownerAvatar; - _constituteSequencignation.text = _hentiretyMatrix.hallName; - _guildFigure.hidden = YES; - _chamberIdSequencignation.hidden = NO; - _chamberIdSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_MineGuildListCell3"),_hentiretyMatrix.ownerErbanNo]; - [self.constituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.equalTo(self.intelligenceFigure.mas_centerY).mas_offset(-kGetScaleWidth(3.5)); - make.left.equalTo(self.intelligenceFigure.mas_right).mas_offset(kGetScaleWidth(8)); - make.right.mas_equalTo(-kGetScaleWidth(130)); - - }]; - [self.chamberIdSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.equalTo(self.constituteSequencignation); - make.top.equalTo(self.constituteSequencignation.mas_bottom).mas_offset(kGetScaleWidth(7)); - make.height.mas_equalTo(kGetScaleWidth(14)); - }]; - - - switch (_hentiretyMatrix.hallBtnStatus) { - case 0: - { - _applyBtuton.hidden = YES; - break; - } - case 1: - { - [_applyBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _applyBtuton.backgroundColor = [UIColor clearColor]; - [_applyBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [_applyBtuton setTitle:YMLocalizedString(@"YUMI_MineGuildListCell0") forState:UIControlStateNormal]; - _applyBtuton.hidden = NO; - break; - } - case 2: - { - [_applyBtuton setTitle:YMLocalizedString(@"YUMI_MineGuildListCell5") forState:UIControlStateNormal]; - _applyBtuton.backgroundColor = UIColorFromRGB(0xE6E6F0); - [_applyBtuton setTitleColor:UIColorFromRGB(0xB3B3C3) forState:UIControlStateNormal]; - [_applyBtuton setBackgroundImage:nil forState:UIControlStateNormal]; - _applyBtuton.hidden = NO; - break; - } - case 3: - { - [_applyBtuton setTitle:YMLocalizedString(@"YUMI_MineGuildListCell6") forState:UIControlStateNormal]; - _applyBtuton.backgroundColor = UIColorFromRGB(0xFFBC51); - [_applyBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [_applyBtuton setBackgroundImage:nil forState:UIControlStateNormal]; - _applyBtuton.hidden = NO; - break; - } - default: - break; - } - - - -} --(void)setGuildMatrix:(YUMIManeUnionStatementMatrix *)guildMatrix{ - _guildMatrix = guildMatrix; - _intelligenceFigure.imageUrl = _guildMatrix.avatar; - _constituteSequencignation.text = _guildMatrix.name; - _guildFigure.imageUrl = _guildMatrix.levelIcon; - self.applyBtuton.hidden = NO; - _chamberIdSequencignation.hidden = YES; - [self.constituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.equalTo(self.intelligenceFigure); - make.left.equalTo(self.intelligenceFigure.mas_right).mas_offset(kGetScaleWidth(8)); - make.right.mas_equalTo(-kGetScaleWidth(130)); - - }]; - - if(_guildMatrix.applyBtnStatus == 0){ - self.applyBtuton.hidden = YES; - [_guildFigure mas_updateConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-kGetScaleWidth(15)); - }]; - return; - } - self.applyBtuton.selected = _guildMatrix.applyBtnStatus == 1; -} --(void)setIsFromCorridor:(BOOL)isFromCorridor{ - _isFromCorridor = isFromCorridor; - if(_isFromCorridor == YES){ - self.applyBtuton.hidden = YES; - [self.guildFigure mas_updateConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-kGetScaleWidth(15)); - }]; - } - -} --(void)setRateFigure:(NSInteger)rateFigure{ - _rateFigure = rateFigure; - if (_rateFigure < 3){ - _rateingFigure.hidden = NO; - _rateingTilte.hidden = YES; - _rateingFigure.image = [UIImage imageNamed:@[@"yumi_center_guild_list_one",@"yumi_center_guild_list_two",@"yumi_center_guild_list_three"][_rateFigure]]; - }else{ - _rateingFigure.hidden = YES; - _rateingTilte.hidden = NO; - _rateingTilte.text = [NSString stringWithFormat:@"%ld",_rateFigure+1]; - } -} --(UIImageView *)rateingFigure{ - if (!_rateingFigure){ - _rateingFigure = [UIImageView new]; - } - return _rateingFigure; -} -- (UILabel *)rateingTilte{ - if (!_rateingTilte){ - _rateingTilte = [UILabel new]; - _rateingTilte.font = [UIFont systemFontOfSize:16 weight:UIFontWeightBold]; - _rateingTilte.textColor = UIColorFromRGB(0x1F1A4E); - } - return _rateingTilte; -} -- (UILabel *)constituteSequencignation{ - if (!_constituteSequencignation){ - _constituteSequencignation = [UILabel new]; - _constituteSequencignation.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - _constituteSequencignation.textColor = UIColorFromRGB(0x1F1A4E); - } - return _constituteSequencignation; -} --(NetIndicateRegard *)guildFigure{ - if (!_guildFigure){ - _guildFigure = [[NetIndicateRegard alloc]init]; - } - return _guildFigure; -} -- (NetIndicateRegard *)intelligenceFigure{ - if (!_intelligenceFigure){ - NetIndicateDisposition *config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceFigure = [[NetIndicateRegard alloc]initWithConfig:config]; - _intelligenceFigure.layer.cornerRadius = kGetScaleWidth(20); - _intelligenceFigure.layer.masksToBounds = YES; - } - return _intelligenceFigure; -} --(UIButton *)applyBtuton{ - if (!_applyBtuton){ - - UIImage *chooseImage = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityMiddlePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(kGetScaleWidth(70), kGetScaleWidth(25))]; - UIImage *noChooseImage = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(kGetScaleWidth(70), kGetScaleWidth(25))]; - _applyBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_applyBtuton setTitle:YMLocalizedString(@"YUMI_MineGuildListCell1") forState:UIControlStateNormal]; - _applyBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_applyBtuton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; - [_applyBtuton setBackgroundImage:chooseImage forState:UIControlStateSelected]; - [_applyBtuton setBackgroundImage:noChooseImage forState:UIControlStateNormal]; - [_applyBtuton setTitle:YMLocalizedString(@"YUMI_MineGuildListCell0") forState:UIControlStateSelected]; - [_applyBtuton setTitle:YMLocalizedString(@"YUMI_MineGuildListCell1") forState:UIControlStateNormal]; - - [_applyBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; - [_applyBtuton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; - [_applyBtuton addTarget:self action:@selector(demandPerformance) forControlEvents:UIControlEventTouchUpInside]; - _applyBtuton.layer.cornerRadius = kGetScaleWidth(25)/2; - _applyBtuton.layer.masksToBounds = YES; - - } - return _applyBtuton; -} - - -- (UILabel *)chamberIdSequencignation { - if (!_chamberIdSequencignation) { - _chamberIdSequencignation = [[UILabel alloc] init]; - _chamberIdSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _chamberIdSequencignation.textColor = [DJDKMIMOMColor prohibitionBtutonEssayPrettify]; - } - return _chamberIdSequencignation; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildIncomeDetailCollectionViewCell.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildIncomeDetailCollectionViewCell.h new file mode 100644 index 00000000..09e3e332 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildIncomeDetailCollectionViewCell.h @@ -0,0 +1,17 @@ +// +// XPGuildIncomeDetailCollectionViewCell.h +// YuMi +// +// Created by YuMi on 2022/4/12. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class GuildIncomeDetailModel; +@interface XPGuildIncomeDetailCollectionViewCell : UICollectionViewCell + +@property (nonatomic,strong) GuildIncomeDetailModel *incomeDetailInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildIncomeDetailCollectionViewCell.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildIncomeDetailCollectionViewCell.m new file mode 100644 index 00000000..8b951494 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildIncomeDetailCollectionViewCell.m @@ -0,0 +1,153 @@ +// +// XPGuildIncomeDetailCollectionViewCell.m +// YuMi +// +// Created by YuMi on 2022/4/12. +// + +#import "XPGuildIncomeDetailCollectionViewCell.h" +///Third +#import +///Tool +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" +///Model +#import "GuildIncomeDetailModel.h" + +@interface XPGuildIncomeDetailCollectionViewCell () +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///礼物名称 +@property (nonatomic,strong) UILabel *giftNameLabel; +///礼物个数 +@property (nonatomic,strong) UILabel *numberLabel; +///价值的容器 +@property (nonatomic,strong) UIStackView *priceStackView; +///钻石 +@property (nonatomic,strong) UILabel *diamondLabel; +///礼物价值 +@property (nonatomic,strong) UILabel *giftPriceLabel; + +@end + +@implementation XPGuildIncomeDetailCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method + +- (void)initSubViews { + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.giftNameLabel]; + [self.contentView addSubview:self.priceStackView]; + [self.contentView addSubview:self.numberLabel]; + + [self.priceStackView addArrangedSubview:self.giftPriceLabel]; + [self.priceStackView addArrangedSubview:self.diamondLabel]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(7); + make.left.right.mas_equalTo(self).inset(18); + make.height.mas_equalTo(self.avatarImageView.mas_width); + }]; + + [self.giftNameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.avatarImageView.mas_bottom).offset(5); + make.centerX.mas_equalTo(self.contentView); + }]; + + [self.priceStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.giftNameLabel.mas_bottom).offset(2); + make.centerX.mas_equalTo(self.contentView); + }]; + + [self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.giftPriceLabel.mas_bottom).offset(2); + make.centerX.mas_equalTo(self.contentView); + }]; +} + +#pragma mark - Getters And Setters +- (void)setIncomeDetailInfo:(GuildIncomeDetailModel *)incomeDetailInfo { + _incomeDetailInfo = incomeDetailInfo; + if (_incomeDetailInfo) { + self.avatarImageView.imageUrl = _incomeDetailInfo.picUrl; + self.giftNameLabel.text = _incomeDetailInfo.giftName; + self.giftPriceLabel.text = _incomeDetailInfo.goldPrice; + self.numberLabel.text = [NSString stringWithFormat:@"X%@", _incomeDetailInfo.giftNum]; + } +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 38/2; + _avatarImageView.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + } + return _avatarImageView; +} + +- (UILabel *)giftNameLabel { + if (!_giftNameLabel) { + _giftNameLabel = [[UILabel alloc] init]; + _giftNameLabel.font = [UIFont systemFontOfSize:14]; + _giftNameLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _giftNameLabel; +} + +- (UILabel *)giftPriceLabel { + if (!_giftPriceLabel) { + _giftPriceLabel = [[UILabel alloc] init]; + _giftPriceLabel.font = [UIFont systemFontOfSize:13]; + _giftPriceLabel.textColor = [DJDKMIMOMColor appMainColor]; + } + return _giftPriceLabel; +} + +- (UIStackView *)priceStackView { + if (!_priceStackView) { + _priceStackView = [[UIStackView alloc] init]; + _priceStackView.axis = UILayoutConstraintAxisHorizontal; + _priceStackView.distribution = UIStackViewDistributionFill; + _priceStackView.alignment = UIStackViewAlignmentFill; + _priceStackView.spacing = 2; + } + return _priceStackView; +} + + +- (UILabel *)diamondLabel { + if (!_diamondLabel) { + _diamondLabel = [[UILabel alloc] init]; + _diamondLabel.text = YMLocalizedString(@"XPGuildIncomeDetailCollectionViewCell0"); + _diamondLabel.font = [UIFont systemFontOfSize:13]; + _diamondLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _diamondLabel; +} + +- (UILabel *)numberLabel { + if (!_numberLabel) { + _numberLabel = [[UILabel alloc] init]; + _numberLabel.font = [UIFont systemFontOfSize:13]; + _numberLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _numberLabel; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildIncomeRecordTableViewCell.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildIncomeRecordTableViewCell.h new file mode 100644 index 00000000..34318cca --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildIncomeRecordTableViewCell.h @@ -0,0 +1,19 @@ +// +// XPGuildIncomeRecordTableViewCell.h +// YuMi +// +// Created by YuMi on 2022/4/11. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class GuildIncomeRecordUserInfoModel; +@interface XPGuildIncomeRecordTableViewCell : UITableViewCell +///用户信息 +@property (nonatomic,strong) GuildIncomeRecordUserInfoModel *userInfo; +///排名 +@property (nonatomic,assign) NSInteger rankNumber; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildIncomeRecordTableViewCell.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildIncomeRecordTableViewCell.m new file mode 100644 index 00000000..ebe9a110 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildIncomeRecordTableViewCell.m @@ -0,0 +1,423 @@ +// +// XPGuildIncomeRecordTableViewCell.m +// YuMi +// +// Created by YuMi on 2022/4/11. +// + +#import "XPGuildIncomeRecordTableViewCell.h" +///Third +#import +///Tool +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" + +#import "NSString+Utils.h" +///Model +#import "GuildIncomeRecordModel.h" + +@interface XPGuildIncomeRecordTableViewCell () +///总的容器 +@property (nonatomic,strong) UIStackView *stackView; +///右边收入容器 +@property (nonatomic, strong) UIStackView *incomeContentStackView; +///收入的容器 +@property (nonatomic,strong) UIStackView *incomStackView; +///收礼容器 +@property (nonatomic, strong) UIStackView *giftStackView; +///排名 +@property (nonatomic,strong) UILabel *rankLabel; +///头像的容器 +@property (nonatomic,strong) UIStackView *avatarView; +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///id +@property (nonatomic,strong) UILabel *idLabel; +///房间流水容器 +@property (nonatomic,strong) UIStackView *roomIncomeStackView; +///房间流水 +@property (nonatomic,strong) UILabel *roomIncomeLabel; +///房间流水金币 +@property (nonatomic,strong) UILabel *roomIncomeCoinLabel; +///普通礼物流水容器 +@property (nonatomic,strong) UIStackView *normalGiftStackView; +///普通礼物 +@property (nonatomic,strong) UILabel *normalGiftLabel; +///普通礼物金币 +@property (nonatomic,strong) UILabel *normalGiftcoinLabel; +///背包礼物流水容器 +@property (nonatomic,strong) UIStackView *packGiftStackView; +///背包礼物流水 +@property (nonatomic,strong) UILabel *packGiftLabel; +///背包礼物金币 +@property (nonatomic,strong) UILabel *packGiftCoinLabel; +///送礼人数容器 +@property (nonatomic, strong) UIStackView *sendGiftCountStackView; +///送礼人数金币 +@property (nonatomic, strong) UILabel *sendGiftCountCoinLabel; +///送礼人数 +@property (nonatomic, strong) UILabel *sendGiftCountLabel; +///新用户送礼人数容器 +@property (nonatomic, strong) UIStackView *NewUserGiftCountStackView; +///新送礼人数金币 +@property (nonatomic, strong) UILabel *NewUserGiftCountCoinLabel; +///新送礼人数 +@property (nonatomic, strong) UILabel *NewUserGiftCountLabel; + +@end + +@implementation XPGuildIncomeRecordTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.stackView]; + + [self.stackView addArrangedSubview:self.rankLabel]; + [self.stackView addArrangedSubview:self.avatarView]; + [self.stackView addArrangedSubview:self.incomeContentStackView]; + + [self.avatarView addArrangedSubview:self.avatarImageView]; + [self.avatarView addArrangedSubview:self.idLabel]; + + [self.incomeContentStackView addArrangedSubview:self.incomStackView]; + [self.incomeContentStackView addArrangedSubview:self.giftStackView]; + + [self.incomStackView addArrangedSubview:self.roomIncomeStackView]; + [self.incomStackView addArrangedSubview:self.normalGiftStackView]; + [self.incomStackView addArrangedSubview:self.packGiftStackView]; + + [self.roomIncomeStackView addArrangedSubview:self.roomIncomeCoinLabel]; + [self.roomIncomeStackView addArrangedSubview:self.roomIncomeLabel]; + + [self.normalGiftStackView addArrangedSubview:self.normalGiftcoinLabel]; + [self.normalGiftStackView addArrangedSubview:self.normalGiftLabel]; + + [self.packGiftStackView addArrangedSubview:self.packGiftCoinLabel]; + [self.packGiftStackView addArrangedSubview:self.packGiftLabel]; + + [self.giftStackView addArrangedSubview:self.sendGiftCountStackView]; + [self.giftStackView addArrangedSubview:self.NewUserGiftCountStackView]; + UILabel *emptyView = [UILabel new]; + [self.giftStackView addArrangedSubview:emptyView]; + [emptyView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_greaterThanOrEqualTo(10); + }]; + + [self.sendGiftCountStackView addArrangedSubview:self.sendGiftCountCoinLabel]; + [self.sendGiftCountStackView addArrangedSubview:self.sendGiftCountLabel]; + [self.NewUserGiftCountStackView addArrangedSubview:self.NewUserGiftCountCoinLabel]; + [self.NewUserGiftCountStackView addArrangedSubview:self.NewUserGiftCountLabel]; +} + +- (void)initSubViewConstraints { + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.bottom.mas_equalTo(self.contentView); + }]; + + [self.rankLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(52); + make.height.mas_equalTo(50); + }]; + + [self.avatarView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(50); + make.height.mas_equalTo(65); + }]; + + [self.incomeContentStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(self.stackView); + }]; + + [self.incomStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(self.incomeContentStackView); + }]; + [self.giftStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(self.incomeContentStackView); + }]; + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(50); + }]; +} + +#pragma mark - Getters And Setters +- (void)setRankNumber:(NSInteger)rankNumber { + _rankNumber = rankNumber; + self.rankLabel.text = [NSString stringWithFormat:@"%ld", _rankNumber+1]; +} + +- (void)setUserInfo:(GuildIncomeRecordUserInfoModel *)userInfo { + _userInfo = userInfo; + if (_userInfo) { + self.avatarImageView.imageUrl = _userInfo.hallAvatar; + self.idLabel.text = _userInfo.hallName; + self.roomIncomeCoinLabel.text = [NSString stringWithFormat:@"+%@", [NSString getDealNumwithstring:_userInfo.roomIncome]]; + self.normalGiftcoinLabel.text = [NSString stringWithFormat:@"+%@", [NSString getDealNumwithstring:_userInfo.normalGiftIncome]]; + self.packGiftCoinLabel.text = [NSString stringWithFormat:@"+%@", [NSString getDealNumwithstring:_userInfo.bagIncome]]; + self.sendGiftCountCoinLabel.text = [NSString stringWithFormat:@"+%@", [NSString getDealNumwithstring:_userInfo.giftUv]]; + self.NewUserGiftCountCoinLabel.text = [NSString stringWithFormat:@"+%@", [NSString getDealNumwithstring:_userInfo.userSendGiftNum]]; + } +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentCenter; + _stackView.spacing = 10; + } + return _stackView; +} + +- (UILabel *)rankLabel { + if (!_rankLabel) { + _rankLabel = [[UILabel alloc] init]; + _rankLabel.font = [UIFont systemFontOfSize:15]; + _rankLabel.text = @"1"; + _rankLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _rankLabel.textAlignment = NSTextAlignmentCenter; + } + return _rankLabel; +} + +- (UIStackView *)avatarView { + if (!_avatarView) { + _avatarView = [[UIStackView alloc] init]; + _avatarView.axis = UILayoutConstraintAxisVertical; + _avatarView.distribution = UIStackViewDistributionFillProportionally; + _avatarView.alignment = UIStackViewAlignmentFill; + _avatarView.spacing = 3; + } + return _avatarView; +} + + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 8; + } + return _avatarImageView; +} +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.font = [UIFont systemFontOfSize:11]; + _idLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _idLabel.textAlignment = NSTextAlignmentCenter; + } + return _idLabel; +} + +- (UIStackView *)incomeContentStackView { + if (!_incomeContentStackView) { + _incomeContentStackView = [[UIStackView alloc] init]; + _incomeContentStackView.axis = UILayoutConstraintAxisVertical; + _incomeContentStackView.distribution = UIStackViewDistributionFillEqually; + _incomeContentStackView.alignment = UIStackViewAlignmentCenter; + _incomeContentStackView.spacing = 0; + } + return _incomeContentStackView; +} + + +- (UIStackView *)giftStackView { + if (!_giftStackView) { + _giftStackView = [[UIStackView alloc] init]; + _giftStackView.axis = UILayoutConstraintAxisHorizontal; + _giftStackView.distribution = UIStackViewDistributionFillEqually; + _giftStackView.alignment = UIStackViewAlignmentCenter; + _giftStackView.spacing = 10; + } + return _giftStackView; +} + + +- (UIStackView *)incomStackView { + if (!_incomStackView) { + _incomStackView = [[UIStackView alloc] init]; + _incomStackView.axis = UILayoutConstraintAxisHorizontal; + _incomStackView.distribution = UIStackViewDistributionFillEqually; + _incomStackView.alignment = UIStackViewAlignmentCenter; + _incomStackView.spacing = 10; + } + return _incomStackView; +} + +- (UIStackView *)roomIncomeStackView { + if (!_roomIncomeStackView) { + _roomIncomeStackView = [[UIStackView alloc] init]; + _roomIncomeStackView.axis = UILayoutConstraintAxisVertical; + _roomIncomeStackView.distribution = UIStackViewDistributionFill; + _roomIncomeStackView.alignment = UIStackViewAlignmentFill; + _roomIncomeStackView.spacing = 3; + } + return _roomIncomeStackView; +} + +- (UILabel *)roomIncomeLabel { + if (!_roomIncomeLabel) { + _roomIncomeLabel = [[UILabel alloc] init]; + _roomIncomeLabel.text = YMLocalizedString(@"XPGuildIncomeRecordTableViewCell0"); + _roomIncomeLabel.font = [UIFont systemFontOfSize:12]; + _roomIncomeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _roomIncomeLabel.textAlignment = NSTextAlignmentCenter; + } + return _roomIncomeLabel; +} + +- (UILabel *)roomIncomeCoinLabel { + if (!_roomIncomeCoinLabel) { + _roomIncomeCoinLabel = [[UILabel alloc] init]; + _roomIncomeCoinLabel.font = [UIFont boldSystemFontOfSize:12]; + _roomIncomeCoinLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _roomIncomeCoinLabel.textAlignment = NSTextAlignmentCenter; + } + return _roomIncomeCoinLabel; +} + + +- (UIStackView *)normalGiftStackView { + if (!_normalGiftStackView) { + _normalGiftStackView = [[UIStackView alloc] init]; + _normalGiftStackView.axis = UILayoutConstraintAxisVertical; + _normalGiftStackView.distribution = UIStackViewDistributionFill; + _normalGiftStackView.alignment = UIStackViewAlignmentFill; + _normalGiftStackView.spacing = 3; + } + return _normalGiftStackView; +} + +- (UILabel *)normalGiftLabel { + if (!_normalGiftLabel) { + _normalGiftLabel = [[UILabel alloc] init]; + _normalGiftLabel.text = YMLocalizedString(@"XPGuildIncomeRecordTableViewCell1"); + _normalGiftLabel.font = [UIFont systemFontOfSize:12]; + _normalGiftLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _normalGiftLabel.textAlignment = NSTextAlignmentCenter; + } + return _normalGiftLabel; +} + +- (UILabel *)normalGiftcoinLabel { + if (!_normalGiftcoinLabel) { + _normalGiftcoinLabel = [[UILabel alloc] init]; + _normalGiftcoinLabel.font = [UIFont boldSystemFontOfSize:12]; + _normalGiftcoinLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _normalGiftcoinLabel.textAlignment = NSTextAlignmentCenter; + } + return _normalGiftcoinLabel; +} + + +- (UIStackView *)packGiftStackView { + if (!_packGiftStackView) { + _packGiftStackView = [[UIStackView alloc] init]; + _packGiftStackView.axis = UILayoutConstraintAxisVertical; + _packGiftStackView.distribution = UIStackViewDistributionFill; + _packGiftStackView.alignment = UIStackViewAlignmentFill; + _packGiftStackView.spacing = 3; + } + return _packGiftStackView; +} + +- (UILabel *)packGiftLabel { + if (!_packGiftLabel) { + _packGiftLabel = [[UILabel alloc] init]; + _packGiftLabel.text = YMLocalizedString(@"XPGuildIncomeRecordTableViewCell2"); + _packGiftLabel.font = [UIFont systemFontOfSize:12]; + _packGiftLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _packGiftLabel.textAlignment = NSTextAlignmentCenter; + } + return _packGiftLabel; +} + +- (UILabel *)packGiftCoinLabel { + if (!_packGiftCoinLabel) { + _packGiftCoinLabel = [[UILabel alloc] init]; + _packGiftCoinLabel.font = [UIFont boldSystemFontOfSize:12]; + _packGiftCoinLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _packGiftCoinLabel.textAlignment = NSTextAlignmentCenter; + } + return _packGiftCoinLabel; +} + +- (UIStackView *)sendGiftCountStackView { + if (!_sendGiftCountStackView) { + _sendGiftCountStackView = [[UIStackView alloc] init]; + _sendGiftCountStackView.axis = UILayoutConstraintAxisVertical; + _sendGiftCountStackView.distribution = UIStackViewDistributionFill; + _sendGiftCountStackView.alignment = UIStackViewAlignmentFill; + _sendGiftCountStackView.spacing = 3; + } + return _sendGiftCountStackView; +} + +- (UILabel *)sendGiftCountLabel { + if (!_sendGiftCountLabel) { + _sendGiftCountLabel = [[UILabel alloc] init]; + _sendGiftCountLabel.text = YMLocalizedString(@"XPGuildIncomeRecordTableViewCell3"); + _sendGiftCountLabel.font = [UIFont systemFontOfSize:12]; + _sendGiftCountLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _sendGiftCountLabel.textAlignment = NSTextAlignmentCenter; + } + return _sendGiftCountLabel; +} + +- (UILabel *)sendGiftCountCoinLabel { + if (!_sendGiftCountCoinLabel) { + _sendGiftCountCoinLabel = [[UILabel alloc] init]; + _sendGiftCountCoinLabel.font = [UIFont boldSystemFontOfSize:12]; + _sendGiftCountCoinLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _sendGiftCountCoinLabel.textAlignment = NSTextAlignmentCenter; + } + return _sendGiftCountCoinLabel; +} + +- (UIStackView *)NewUserGiftCountStackView { + if (!_NewUserGiftCountStackView) { + _NewUserGiftCountStackView = [[UIStackView alloc] init]; + _NewUserGiftCountStackView.axis = UILayoutConstraintAxisVertical; + _NewUserGiftCountStackView.distribution = UIStackViewDistributionFill; + _NewUserGiftCountStackView.alignment = UIStackViewAlignmentFill; + _NewUserGiftCountStackView.spacing = 3; + } + return _NewUserGiftCountStackView; +} + +- (UILabel *)NewUserGiftCountLabel { + if (!_NewUserGiftCountLabel) { + _NewUserGiftCountLabel = [[UILabel alloc] init]; + _NewUserGiftCountLabel.text = YMLocalizedString(@"XPGuildIncomeRecordTableViewCell4"); + _NewUserGiftCountLabel.font = [UIFont systemFontOfSize:12]; + _NewUserGiftCountLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _NewUserGiftCountLabel.textAlignment = NSTextAlignmentCenter; + } + return _NewUserGiftCountLabel; +} + +- (UILabel *)NewUserGiftCountCoinLabel { + if (!_NewUserGiftCountCoinLabel) { + _NewUserGiftCountCoinLabel = [[UILabel alloc] init]; + _NewUserGiftCountCoinLabel.font = [UIFont boldSystemFontOfSize:12]; + _NewUserGiftCountCoinLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _NewUserGiftCountCoinLabel.textAlignment = NSTextAlignmentCenter; + } + return _NewUserGiftCountCoinLabel; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildPersonIncomeTableViewCell.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildPersonIncomeTableViewCell.h new file mode 100644 index 00000000..7f6f436c --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildPersonIncomeTableViewCell.h @@ -0,0 +1,17 @@ +// +// XPGuildPersonIncomeTableViewCell.h +// YuMi +// +// Created by YuMi on 2022/4/11. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class GuildPersonIncomeUserInfoModel; +@interface XPGuildPersonIncomeTableViewCell : UITableViewCell +///用户信息 +@property (nonatomic,strong) GuildPersonIncomeUserInfoModel *userInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildPersonIncomeTableViewCell.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildPersonIncomeTableViewCell.m new file mode 100644 index 00000000..d9f9e4a3 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildPersonIncomeTableViewCell.m @@ -0,0 +1,184 @@ +// +// XPGuildPersonIncomeTableViewCell.m +// YuMi +// +// Created by YuMi on 2022/4/11. +// + +#import "XPGuildPersonIncomeTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" + +#import "NSString+Utils.h" +///Model +#import "GuildPersonIncomeRecordModel.h" + +@interface XPGuildPersonIncomeTableViewCell () + +///排名 +@property (nonatomic,strong) UILabel *rankLabel; +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; + + +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///显示id +@property (nonatomic,strong) UILabel *idLabel; + +///显示收入 +@property (nonatomic,strong) UILabel *incomeLabel; +///箭头 +@property (nonatomic,strong) UIButton *arrowImageView; +@end + +@implementation XPGuildPersonIncomeTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.rankLabel]; + [self.contentView addSubview:self.avatarImageView]; + + [self.contentView addSubview:self.nickLabel]; + [self.contentView addSubview:self.idLabel]; + + [self.contentView addSubview:self.incomeLabel]; + [self.contentView addSubview:self.arrowImageView]; + + +} + +- (void)initSubViewConstraints { + + [self.rankLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(54), kGetScaleWidth(17))); + make.left.mas_equalTo(kGetScaleWidth(0)); + make.centerY.equalTo(self.contentView); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(kGetScaleWidth(35)); + make.centerY.equalTo(self.contentView); + make.left.equalTo(self.rankLabel.mas_right).mas_offset(kGetScaleWidth(6)); + }]; + + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(101)); + make.top.equalTo(self.avatarImageView); + make.width.mas_equalTo(kGetScaleWidth(120)); + make.height.mas_equalTo(kGetScaleWidth(14)); + }]; + + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.equalTo(self.nickLabel); + make.centerX.equalTo(self.nickLabel); + make.height.mas_equalTo(kGetScaleWidth(14)); + make.top.equalTo(self.nickLabel.mas_bottom).mas_offset(kGetScaleWidth(7)); + }]; + [self.arrowImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(kGetScaleWidth(20)); + make.right.mas_equalTo(-kGetScaleWidth(12)); + make.centerY.equalTo(self.contentView); + }]; + [self.incomeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-kGetScaleWidth(38)); + make.centerY.equalTo(self.contentView); + make.width.height.mas_equalTo(kGetScaleWidth(116)); + }]; + + +} + +#pragma mark - Getters And Setters +- (void)setUserInfo:(GuildPersonIncomeUserInfoModel *)userInfo { + _userInfo = userInfo; + if (_userInfo) { + self.rankLabel.text = _userInfo.rowNum; + self.avatarImageView.imageUrl = _userInfo.avatar; + self.nickLabel.text = _userInfo.nick; + self.idLabel.text = [NSString stringWithFormat:@"ID:%@", _userInfo.erbanNo]; + self.incomeLabel.text = [NSString getDealNumwithstring:_userInfo.totalGoldNum]; + } +} + + + +- (UILabel *)rankLabel { + if (!_rankLabel) { + _rankLabel = [[UILabel alloc] init]; + _rankLabel.text = @"1"; + _rankLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightSemibold]; + _rankLabel.textAlignment = NSTextAlignmentCenter; + _rankLabel.textColor = [DJDKMIMOMColor inputTextColor]; + } + return _rankLabel; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = kGetScaleWidth(35)/2; + } + return _avatarImageView; +} + + + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _nickLabel.textColor = [DJDKMIMOMColor inputTextColor]; + _nickLabel.textAlignment = NSTextAlignmentCenter; + } + return _nickLabel; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.font = [UIFont systemFontOfSize:12]; + _idLabel.textAlignment = NSTextAlignmentCenter; + _idLabel.textColor = [DJDKMIMOMColor disableButtonTextColor]; + } + return _idLabel; +} + +- (UILabel *)incomeLabel { + if (!_incomeLabel) { + _incomeLabel = [[UILabel alloc] init]; + _incomeLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + _incomeLabel.textColor = [DJDKMIMOMColor inputTextColor]; + _incomeLabel.textAlignment = NSTextAlignmentCenter; + } + return _incomeLabel; +} + +- (UIButton *)arrowImageView { + if (!_arrowImageView) { + _arrowImageView = [[UIButton alloc] init]; + [_arrowImageView setImage:[UIImage imageNamed:@"room_setting_arrow"] forState:UIControlStateNormal]; + } + return _arrowImageView; +} + + + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildSingleRoomIncomeTableViewCell.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildSingleRoomIncomeTableViewCell.h new file mode 100644 index 00000000..f13ebb9c --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildSingleRoomIncomeTableViewCell.h @@ -0,0 +1,18 @@ +// +// XPGuildSingleRoomIncomeTableViewCell.h +// YuMi +// +// Created by YuMi on 2022/4/11. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class GuildPersonIncomeUserInfoModel; +@interface XPGuildSingleRoomIncomeTableViewCell : UITableViewCell +@property (nonatomic,strong) GuildPersonIncomeUserInfoModel *userInfo; +///排名 +@property (nonatomic,assign) NSInteger rankNumber; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildSingleRoomIncomeTableViewCell.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildSingleRoomIncomeTableViewCell.m new file mode 100644 index 00000000..02501202 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/XPGuildSingleRoomIncomeTableViewCell.m @@ -0,0 +1,199 @@ +// +// XPGuildSingleRoomIncomeTableViewCell.m +// YuMi +// +// Created by YuMi on 2022/4/11. +// 个播收入 + +#import "XPGuildSingleRoomIncomeTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" + +#import "NSString+Utils.h" +///Model +#import "GuildPersonIncomeRecordModel.h" + +@interface XPGuildSingleRoomIncomeTableViewCell () + +///排名 +@property (nonatomic,strong) UILabel *rankLabel; +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///厅头像 +@property (nonatomic,strong) NetImageView *hallAvatarImageView; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; +@property (nonatomic,strong) UILabel *hallNickView; + +///房间收入 +@property (nonatomic,strong) UILabel *roomIncomeLabel; +///分割线 +@property (nonatomic,strong) UIView *lineView; +@end + +@implementation XPGuildSingleRoomIncomeTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.rankLabel]; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.nickLabel]; + [self.contentView addSubview:self.roomIncomeLabel]; + [self.contentView addSubview:self.hallAvatarImageView]; + [self.contentView addSubview:self.hallNickView]; + [self.contentView addSubview:self.lineView]; +} + +- (void)initSubViewConstraints { + + [self.rankLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(0)); + make.width.mas_equalTo(kGetScaleWidth(48)); + make.centerY.equalTo(self.contentView); + }]; + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(kGetScaleWidth(35)); + make.centerY.equalTo(self.contentView); + make.left.mas_equalTo(kGetScaleWidth(50)); + }]; + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.equalTo(self.avatarImageView); + make.top.equalTo(self.avatarImageView.mas_bottom).mas_offset(kGetScaleWidth(6)); + make.width.mas_equalTo(kGetScaleWidth(56)); + }]; + [self.hallNickView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-kGetScaleWidth(5)); + make.centerY.equalTo(self.contentView); + make.left.equalTo(self.hallAvatarImageView.mas_right).mas_offset(kGetScaleWidth(6)); + + }]; + [self.hallAvatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.width.mas_equalTo(kGetScaleWidth(35)); + make.centerY.equalTo(self.contentView); +// make.right.equalTo(self.hallNickView.mas_left).mas_offset(-kGetScaleWidth(6)); + make.left.equalTo(self.contentView).mas_offset(kGetScaleWidth(260)); + }]; + [self.roomIncomeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(97)); + make.centerY.equalTo(self.contentView); + make.right.equalTo(self.hallAvatarImageView.mas_left).mas_offset(-kGetScaleWidth(5)); + make.width.mas_greaterThanOrEqualTo(10); + }]; + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.equalTo(self.contentView); + make.left.equalTo(self.rankLabel); + make.right.equalTo(self.hallNickView); + make.height.mas_equalTo(kGetScaleWidth(1)); + }]; + +} + +#pragma mark - Getters And Setters +- (void)setUserInfo:(GuildPersonIncomeUserInfoModel *)userInfo { + _userInfo = userInfo; + if (_userInfo) { + self.avatarImageView.imageUrl = _userInfo.avatar; + self.nickLabel.text = _userInfo.nick; + self.hallAvatarImageView.imageUrl = _userInfo.hallAvatar; + self.hallNickView.text = _userInfo.hallName; + self.roomIncomeLabel.text = _userInfo.income; + } +} + +- (void)setRankNumber:(NSInteger)rankNumber { + _rankNumber = rankNumber; + self.rankLabel.text = [NSString stringWithFormat:@"%ld", _rankNumber+1]; +} + + + +- (UILabel *)rankLabel { + if (!_rankLabel) { + _rankLabel = [[UILabel alloc] init]; + _rankLabel.text = @"1"; + _rankLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; + _rankLabel.textAlignment = NSTextAlignmentCenter; + _rankLabel.textColor = [DJDKMIMOMColor inputTextColor]; + } + return _rankLabel; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = kGetScaleWidth(35)/2; + } + return _avatarImageView; +} + + + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:12]; + _nickLabel.textColor = [DJDKMIMOMColor inputTextColor]; + _nickLabel.textAlignment = NSTextAlignmentCenter; + } + return _nickLabel; +} + + + + +- (UILabel *)roomIncomeLabel { + if (!_roomIncomeLabel) { + _roomIncomeLabel = [[UILabel alloc] init]; + _roomIncomeLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _roomIncomeLabel.textColor = [DJDKMIMOMColor inputTextColor]; + _roomIncomeLabel.textAlignment = NSTextAlignmentLeft; + } + return _roomIncomeLabel; +} + +- (NetImageView *)hallAvatarImageView{ + if (!_hallAvatarImageView){ + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _hallAvatarImageView = [[NetImageView alloc] initWithConfig:config]; + _hallAvatarImageView.layer.masksToBounds = YES; + _hallAvatarImageView.layer.cornerRadius = kGetScaleWidth(5); + } + return _hallAvatarImageView; +} + +- (UILabel *)hallNickView { + if (!_hallNickView) { + _hallNickView = [[UILabel alloc] init]; + _hallNickView.font = [UIFont systemFontOfSize:13]; + _hallNickView.textColor = [DJDKMIMOMColor inputTextColor]; + } + return _hallNickView; +} + +- (UIView *)lineView{ + if (!_lineView){ + _lineView = [UIView new]; + _lineView.backgroundColor = UIColorFromRGB(0xF7F7F7); + } + return _lineView; +} +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/YUMIUnionFeatureRevenueTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/YUMIUnionFeatureRevenueTabulationRegardElement.h deleted file mode 100644 index fb890027..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/YUMIUnionFeatureRevenueTabulationRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIUnionFeatureRevenueTabulationRegardElement.h -// YuMi -// -// Created by YuMi on 2022/4/11. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class UnionFeatureRevenueConsumerAbstractMatrix; -@interface YUMIUnionFeatureRevenueTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) UnionFeatureRevenueConsumerAbstractMatrix *userInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/YUMIUnionFeatureRevenueTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/YUMIUnionFeatureRevenueTabulationRegardElement.m deleted file mode 100644 index 753e7bb0..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/YUMIUnionFeatureRevenueTabulationRegardElement.m +++ /dev/null @@ -1,175 +0,0 @@ -// -// YUMIUnionFeatureRevenueTabulationRegardElement.m -// YuMi -// -// Created by YuMi on 2022/4/11. -// - -#import "YUMIUnionFeatureRevenueTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" - -#import "NSString+Utils.h" -#import "UnionFeatureRevenueReflectionMatrix.h" - -@interface YUMIUnionFeatureRevenueTabulationRegardElement () - -@property (nonatomic,strong) UILabel *rateSequencignation; -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; - - -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UILabel *idSequencignation; - -@property (nonatomic,strong) UILabel *revenueSequencignation; -@property (nonatomic,strong) UIButton *arrowIndicateRegard; -@end - -@implementation YUMIUnionFeatureRevenueTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.rateSequencignation]; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - - [self.contentView addSubview:self.monicerSequencignation]; - [self.contentView addSubview:self.idSequencignation]; - - [self.contentView addSubview:self.revenueSequencignation]; - [self.contentView addSubview:self.arrowIndicateRegard]; - - -} - -- (void)initChildLyRestrictions { - - [self.rateSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(54), kGetScaleWidth(17))); - make.left.mas_equalTo(kGetScaleWidth(0)); - make.centerY.equalTo(self.contentView); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(kGetScaleWidth(35)); - make.centerY.equalTo(self.contentView); - make.left.equalTo(self.rateSequencignation.mas_right).mas_offset(kGetScaleWidth(6)); - }]; - - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(101)); - make.top.equalTo(self.intelligenceportraitIndicateRegard); - make.width.mas_equalTo(kGetScaleWidth(120)); - make.height.mas_equalTo(kGetScaleWidth(14)); - }]; - - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.equalTo(self.monicerSequencignation); - make.centerX.equalTo(self.monicerSequencignation); - make.height.mas_equalTo(kGetScaleWidth(14)); - make.top.equalTo(self.monicerSequencignation.mas_bottom).mas_offset(kGetScaleWidth(7)); - }]; - [self.arrowIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(kGetScaleWidth(20)); - make.right.mas_equalTo(-kGetScaleWidth(12)); - make.centerY.equalTo(self.contentView); - }]; - [self.revenueSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-kGetScaleWidth(38)); - make.centerY.equalTo(self.contentView); - make.width.height.mas_equalTo(kGetScaleWidth(116)); - }]; - - -} - -#pragma mark - Getters And Setters -- (void)setUserInfo:(UnionFeatureRevenueConsumerAbstractMatrix *)userInfo { - _userInfo = userInfo; - if (_userInfo) { - self.rateSequencignation.text = _userInfo.rowNum; - self.intelligenceportraitIndicateRegard.imageUrl = _userInfo.avatar; - self.monicerSequencignation.text = _userInfo.nick; - self.idSequencignation.text = [NSString stringWithFormat:@"ID:%@", _userInfo.erbanNo]; - self.revenueSequencignation.text = [NSString acquireDealFigurewithsttri:_userInfo.totalGoldNum]; - } -} - - - -- (UILabel *)rateSequencignation { - if (!_rateSequencignation) { - _rateSequencignation = [[UILabel alloc] init]; - _rateSequencignation.text = @"1"; - _rateSequencignation.font = [UIFont systemFontOfSize:15 weight:UIFontWeightSemibold]; - _rateSequencignation.textAlignment = NSTextAlignmentCenter; - _rateSequencignation.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - } - return _rateSequencignation; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = kGetScaleWidth(35)/2; - } - return _intelligenceportraitIndicateRegard; -} - - - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _monicerSequencignation.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _monicerSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _monicerSequencignation; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.font = [UIFont systemFontOfSize:12]; - _idSequencignation.textAlignment = NSTextAlignmentCenter; - _idSequencignation.textColor = [DJDKMIMOMColor prohibitionBtutonEssayPrettify]; - } - return _idSequencignation; -} - -- (UILabel *)revenueSequencignation { - if (!_revenueSequencignation) { - _revenueSequencignation = [[UILabel alloc] init]; - _revenueSequencignation.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - _revenueSequencignation.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _revenueSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _revenueSequencignation; -} - -- (UIButton *)arrowIndicateRegard { - if (!_arrowIndicateRegard) { - _arrowIndicateRegard = [[UIButton alloc] init]; - [_arrowIndicateRegard setImage:[UIImage imageNamed:@"yumi_scope_setting_arrow"] forState:UIControlStateNormal]; - } - return _arrowIndicateRegard; -} - - - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/YUMIUnionRevenueReflectionTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/YUMIUnionRevenueReflectionTabulationRegardElement.h deleted file mode 100644 index da1d1c72..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/YUMIUnionRevenueReflectionTabulationRegardElement.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YUMIUnionRevenueReflectionTabulationRegardElement.h -// YuMi -// -// Created by YuMi on 2022/4/11. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class UnionRevenueReflectionConsumerAbstractMatrix; -@interface YUMIUnionRevenueReflectionTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) UnionRevenueReflectionConsumerAbstractMatrix *userInfo; -@property (nonatomic,assign) NSInteger rateDigital; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/YUMIUnionRevenueReflectionTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/YUMIUnionRevenueReflectionTabulationRegardElement.m deleted file mode 100644 index e2640f16..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/YUMIUnionRevenueReflectionTabulationRegardElement.m +++ /dev/null @@ -1,397 +0,0 @@ -// -// YUMIUnionRevenueReflectionTabulationRegardElement.m -// YuMi -// -// Created by YuMi on 2022/4/11. -// - -#import "YUMIUnionRevenueReflectionTabulationRegardElement.h" -#import -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" - -#import "NSString+Utils.h" -#import "UnionRevenueReflectionMatrix.h" - -@interface YUMIUnionRevenueReflectionTabulationRegardElement () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic, strong) UIStackView *revenueSatisfperformanceHierarchyRegard; -@property (nonatomic,strong) UIStackView *incomHierarchyRegard; -@property (nonatomic, strong) UIStackView *presentHierarchyRegard; -@property (nonatomic,strong) UILabel *rateSequencignation; -@property (nonatomic,strong) UIStackView *intelligenceportraitRegard; -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *idSequencignation; -@property (nonatomic,strong) UIStackView *chamberRevenueHierarchyRegard; -@property (nonatomic,strong) UILabel *chamberRevenueSequencignation; -@property (nonatomic,strong) UILabel *chamberRevenueTangerineSequencignation; -@property (nonatomic,strong) UIStackView *ordinaryPresentHierarchyRegard; -@property (nonatomic,strong) UILabel *ordinaryPresentSequencignation; -@property (nonatomic,strong) UILabel *ordinaryPresenttangerineSequencignation; -@property (nonatomic,strong) UIStackView *impactPresentHierarchyRegard; -@property (nonatomic,strong) UILabel *impactPresentSequencignation; -@property (nonatomic,strong) UILabel *impactPresentTangerineSequencignation; -@property (nonatomic, strong) UIStackView *dischargePresentComputationHierarchyRegard; -@property (nonatomic, strong) UILabel *dischargePresentComputationTangerineSequencignation; -@property (nonatomic, strong) UILabel *dischargePresentComputationSequencignation; -@property (nonatomic, strong) UIStackView *NewUserGiftCountStackView; -@property (nonatomic, strong) UILabel *NewUserGiftCountCoinLabel; -@property (nonatomic, strong) UILabel *NewUserGiftCountLabel; - -@end - -@implementation YUMIUnionRevenueReflectionTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.stackView]; - - [self.stackView addArrangedSubview:self.rateSequencignation]; - [self.stackView addArrangedSubview:self.intelligenceportraitRegard]; - [self.stackView addArrangedSubview:self.revenueSatisfperformanceHierarchyRegard]; - - [self.intelligenceportraitRegard addArrangedSubview:self.intelligenceportraitIndicateRegard]; - [self.intelligenceportraitRegard addArrangedSubview:self.idSequencignation]; - - [self.revenueSatisfperformanceHierarchyRegard addArrangedSubview:self.incomHierarchyRegard]; - [self.revenueSatisfperformanceHierarchyRegard addArrangedSubview:self.presentHierarchyRegard]; - - [self.incomHierarchyRegard addArrangedSubview:self.chamberRevenueHierarchyRegard]; - [self.incomHierarchyRegard addArrangedSubview:self.ordinaryPresentHierarchyRegard]; - [self.incomHierarchyRegard addArrangedSubview:self.impactPresentHierarchyRegard]; - - [self.chamberRevenueHierarchyRegard addArrangedSubview:self.chamberRevenueTangerineSequencignation]; - [self.chamberRevenueHierarchyRegard addArrangedSubview:self.chamberRevenueSequencignation]; - - [self.ordinaryPresentHierarchyRegard addArrangedSubview:self.ordinaryPresenttangerineSequencignation]; - [self.ordinaryPresentHierarchyRegard addArrangedSubview:self.ordinaryPresentSequencignation]; - - [self.impactPresentHierarchyRegard addArrangedSubview:self.impactPresentTangerineSequencignation]; - [self.impactPresentHierarchyRegard addArrangedSubview:self.impactPresentSequencignation]; - - [self.presentHierarchyRegard addArrangedSubview:self.dischargePresentComputationHierarchyRegard]; - [self.presentHierarchyRegard addArrangedSubview:self.NewUserGiftCountStackView]; - UILabel *emptyView = [UILabel new]; - [self.presentHierarchyRegard addArrangedSubview:emptyView]; - [emptyView mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_greaterThanOrEqualTo(10); - }]; - - [self.dischargePresentComputationHierarchyRegard addArrangedSubview:self.dischargePresentComputationTangerineSequencignation]; - [self.dischargePresentComputationHierarchyRegard addArrangedSubview:self.dischargePresentComputationSequencignation]; - [self.NewUserGiftCountStackView addArrangedSubview:self.NewUserGiftCountCoinLabel]; - [self.NewUserGiftCountStackView addArrangedSubview:self.NewUserGiftCountLabel]; -} - -- (void)initChildLyRestrictions { - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.bottom.mas_equalTo(self.contentView); - }]; - - [self.rateSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(52); - make.height.mas_equalTo(50); - }]; - - [self.intelligenceportraitRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(50); - make.height.mas_equalTo(65); - }]; - - [self.revenueSatisfperformanceHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(self.stackView); - }]; - - [self.incomHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(self.revenueSatisfperformanceHierarchyRegard); - }]; - [self.presentHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(self.revenueSatisfperformanceHierarchyRegard); - }]; - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(50); - }]; -} - -#pragma mark - Getters And Setters -- (void)setRateDigital:(NSInteger)rateDigital { - _rateDigital = rateDigital; - self.rateSequencignation.text = [NSString stringWithFormat:@"%ld", _rateDigital+1]; -} - -- (void)setUserInfo:(UnionRevenueReflectionConsumerAbstractMatrix *)userInfo { - _userInfo = userInfo; - if (_userInfo) { - self.intelligenceportraitIndicateRegard.imageUrl = _userInfo.hallAvatar; - self.idSequencignation.text = _userInfo.hallName; - self.chamberRevenueTangerineSequencignation.text = [NSString stringWithFormat:@"+%@", [NSString acquireDealFigurewithsttri:_userInfo.roomIncome]]; - self.ordinaryPresenttangerineSequencignation.text = [NSString stringWithFormat:@"+%@", [NSString acquireDealFigurewithsttri:_userInfo.normalGiftIncome]]; - self.impactPresentTangerineSequencignation.text = [NSString stringWithFormat:@"+%@", [NSString acquireDealFigurewithsttri:_userInfo.bagIncome]]; - self.dischargePresentComputationTangerineSequencignation.text = [NSString stringWithFormat:@"+%@", [NSString acquireDealFigurewithsttri:_userInfo.giftUv]]; - self.NewUserGiftCountCoinLabel.text = [NSString stringWithFormat:@"+%@", [NSString acquireDealFigurewithsttri:_userInfo.userSendGiftNum]]; - } -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentCenter; - _stackView.spacing = 10; - } - return _stackView; -} - -- (UILabel *)rateSequencignation { - if (!_rateSequencignation) { - _rateSequencignation = [[UILabel alloc] init]; - _rateSequencignation.font = [UIFont systemFontOfSize:15]; - _rateSequencignation.text = @"1"; - _rateSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _rateSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _rateSequencignation; -} - -- (UIStackView *)intelligenceportraitRegard { - if (!_intelligenceportraitRegard) { - _intelligenceportraitRegard = [[UIStackView alloc] init]; - _intelligenceportraitRegard.axis = UILayoutConstraintAxisVertical; - _intelligenceportraitRegard.distribution = UIStackViewDistributionFillProportionally; - _intelligenceportraitRegard.alignment = UIStackViewAlignmentFill; - _intelligenceportraitRegard.spacing = 3; - } - return _intelligenceportraitRegard; -} - - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 8; - } - return _intelligenceportraitIndicateRegard; -} -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.font = [UIFont systemFontOfSize:11]; - _idSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _idSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _idSequencignation; -} - -- (UIStackView *)revenueSatisfperformanceHierarchyRegard { - if (!_revenueSatisfperformanceHierarchyRegard) { - _revenueSatisfperformanceHierarchyRegard = [[UIStackView alloc] init]; - _revenueSatisfperformanceHierarchyRegard.axis = UILayoutConstraintAxisVertical; - _revenueSatisfperformanceHierarchyRegard.distribution = UIStackViewDistributionFillEqually; - _revenueSatisfperformanceHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _revenueSatisfperformanceHierarchyRegard.spacing = 0; - } - return _revenueSatisfperformanceHierarchyRegard; -} - - -- (UIStackView *)presentHierarchyRegard { - if (!_presentHierarchyRegard) { - _presentHierarchyRegard = [[UIStackView alloc] init]; - _presentHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _presentHierarchyRegard.distribution = UIStackViewDistributionFillEqually; - _presentHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _presentHierarchyRegard.spacing = 10; - } - return _presentHierarchyRegard; -} - - -- (UIStackView *)incomHierarchyRegard { - if (!_incomHierarchyRegard) { - _incomHierarchyRegard = [[UIStackView alloc] init]; - _incomHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _incomHierarchyRegard.distribution = UIStackViewDistributionFillEqually; - _incomHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _incomHierarchyRegard.spacing = 10; - } - return _incomHierarchyRegard; -} - -- (UIStackView *)chamberRevenueHierarchyRegard { - if (!_chamberRevenueHierarchyRegard) { - _chamberRevenueHierarchyRegard = [[UIStackView alloc] init]; - _chamberRevenueHierarchyRegard.axis = UILayoutConstraintAxisVertical; - _chamberRevenueHierarchyRegard.distribution = UIStackViewDistributionFill; - _chamberRevenueHierarchyRegard.alignment = UIStackViewAlignmentFill; - _chamberRevenueHierarchyRegard.spacing = 3; - } - return _chamberRevenueHierarchyRegard; -} - -- (UILabel *)chamberRevenueSequencignation { - if (!_chamberRevenueSequencignation) { - _chamberRevenueSequencignation = [[UILabel alloc] init]; - _chamberRevenueSequencignation.text = YMLocalizedString(@"YUMI_Guild_Income_Record_Table_View_Cell_0"); - _chamberRevenueSequencignation.font = [UIFont systemFontOfSize:12]; - _chamberRevenueSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _chamberRevenueSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _chamberRevenueSequencignation; -} - -- (UILabel *)chamberRevenueTangerineSequencignation { - if (!_chamberRevenueTangerineSequencignation) { - _chamberRevenueTangerineSequencignation = [[UILabel alloc] init]; - _chamberRevenueTangerineSequencignation.font = [UIFont boldSystemFontOfSize:12]; - _chamberRevenueTangerineSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _chamberRevenueTangerineSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _chamberRevenueTangerineSequencignation; -} - - -- (UIStackView *)ordinaryPresentHierarchyRegard { - if (!_ordinaryPresentHierarchyRegard) { - _ordinaryPresentHierarchyRegard = [[UIStackView alloc] init]; - _ordinaryPresentHierarchyRegard.axis = UILayoutConstraintAxisVertical; - _ordinaryPresentHierarchyRegard.distribution = UIStackViewDistributionFill; - _ordinaryPresentHierarchyRegard.alignment = UIStackViewAlignmentFill; - _ordinaryPresentHierarchyRegard.spacing = 3; - } - return _ordinaryPresentHierarchyRegard; -} - -- (UILabel *)ordinaryPresentSequencignation { - if (!_ordinaryPresentSequencignation) { - _ordinaryPresentSequencignation = [[UILabel alloc] init]; - _ordinaryPresentSequencignation.text = YMLocalizedString(@"YUMI_Guild_Income_Record_Table_View_Cell_1"); - _ordinaryPresentSequencignation.font = [UIFont systemFontOfSize:12]; - _ordinaryPresentSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _ordinaryPresentSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _ordinaryPresentSequencignation; -} - -- (UILabel *)ordinaryPresenttangerineSequencignation { - if (!_ordinaryPresenttangerineSequencignation) { - _ordinaryPresenttangerineSequencignation = [[UILabel alloc] init]; - _ordinaryPresenttangerineSequencignation.font = [UIFont boldSystemFontOfSize:12]; - _ordinaryPresenttangerineSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _ordinaryPresenttangerineSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _ordinaryPresenttangerineSequencignation; -} - - -- (UIStackView *)impactPresentHierarchyRegard { - if (!_impactPresentHierarchyRegard) { - _impactPresentHierarchyRegard = [[UIStackView alloc] init]; - _impactPresentHierarchyRegard.axis = UILayoutConstraintAxisVertical; - _impactPresentHierarchyRegard.distribution = UIStackViewDistributionFill; - _impactPresentHierarchyRegard.alignment = UIStackViewAlignmentFill; - _impactPresentHierarchyRegard.spacing = 3; - } - return _impactPresentHierarchyRegard; -} - -- (UILabel *)impactPresentSequencignation { - if (!_impactPresentSequencignation) { - _impactPresentSequencignation = [[UILabel alloc] init]; - _impactPresentSequencignation.text = YMLocalizedString(@"YUMI_Guild_Income_Record_Table_View_Cell_2"); - _impactPresentSequencignation.font = [UIFont systemFontOfSize:12]; - _impactPresentSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _impactPresentSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _impactPresentSequencignation; -} - -- (UILabel *)impactPresentTangerineSequencignation { - if (!_impactPresentTangerineSequencignation) { - _impactPresentTangerineSequencignation = [[UILabel alloc] init]; - _impactPresentTangerineSequencignation.font = [UIFont boldSystemFontOfSize:12]; - _impactPresentTangerineSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _impactPresentTangerineSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _impactPresentTangerineSequencignation; -} - -- (UIStackView *)dischargePresentComputationHierarchyRegard { - if (!_dischargePresentComputationHierarchyRegard) { - _dischargePresentComputationHierarchyRegard = [[UIStackView alloc] init]; - _dischargePresentComputationHierarchyRegard.axis = UILayoutConstraintAxisVertical; - _dischargePresentComputationHierarchyRegard.distribution = UIStackViewDistributionFill; - _dischargePresentComputationHierarchyRegard.alignment = UIStackViewAlignmentFill; - _dischargePresentComputationHierarchyRegard.spacing = 3; - } - return _dischargePresentComputationHierarchyRegard; -} - -- (UILabel *)dischargePresentComputationSequencignation { - if (!_dischargePresentComputationSequencignation) { - _dischargePresentComputationSequencignation = [[UILabel alloc] init]; - _dischargePresentComputationSequencignation.text = YMLocalizedString(@"YUMI_Guild_Income_Record_Table_View_Cell_3"); - _dischargePresentComputationSequencignation.font = [UIFont systemFontOfSize:12]; - _dischargePresentComputationSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _dischargePresentComputationSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _dischargePresentComputationSequencignation; -} - -- (UILabel *)dischargePresentComputationTangerineSequencignation { - if (!_dischargePresentComputationTangerineSequencignation) { - _dischargePresentComputationTangerineSequencignation = [[UILabel alloc] init]; - _dischargePresentComputationTangerineSequencignation.font = [UIFont boldSystemFontOfSize:12]; - _dischargePresentComputationTangerineSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _dischargePresentComputationTangerineSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _dischargePresentComputationTangerineSequencignation; -} - -- (UIStackView *)NewUserGiftCountStackView { - if (!_NewUserGiftCountStackView) { - _NewUserGiftCountStackView = [[UIStackView alloc] init]; - _NewUserGiftCountStackView.axis = UILayoutConstraintAxisVertical; - _NewUserGiftCountStackView.distribution = UIStackViewDistributionFill; - _NewUserGiftCountStackView.alignment = UIStackViewAlignmentFill; - _NewUserGiftCountStackView.spacing = 3; - } - return _NewUserGiftCountStackView; -} - -- (UILabel *)NewUserGiftCountLabel { - if (!_NewUserGiftCountLabel) { - _NewUserGiftCountLabel = [[UILabel alloc] init]; - _NewUserGiftCountLabel.text = YMLocalizedString(@"YUMI_Guild_Income_Record_Table_View_Cell_4"); - _NewUserGiftCountLabel.font = [UIFont systemFontOfSize:12]; - _NewUserGiftCountLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _NewUserGiftCountLabel.textAlignment = NSTextAlignmentCenter; - } - return _NewUserGiftCountLabel; -} - -- (UILabel *)NewUserGiftCountCoinLabel { - if (!_NewUserGiftCountCoinLabel) { - _NewUserGiftCountCoinLabel = [[UILabel alloc] init]; - _NewUserGiftCountCoinLabel.font = [UIFont boldSystemFontOfSize:12]; - _NewUserGiftCountCoinLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _NewUserGiftCountCoinLabel.textAlignment = NSTextAlignmentCenter; - } - return _NewUserGiftCountCoinLabel; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/YUMIUnionRevenueSpecificAssembletionRegardElement.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/YUMIUnionRevenueSpecificAssembletionRegardElement.h deleted file mode 100644 index 1581fa85..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/YUMIUnionRevenueSpecificAssembletionRegardElement.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YUMIUnionRevenueSpecificAssembletionRegardElement.h -// YuMi -// -// Created by YuMi on 2022/4/12. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class UnionRevenueSpecificMatrix; -@interface YUMIUnionRevenueSpecificAssembletionRegardElement : UICollectionViewCell - -@property (nonatomic,strong) UnionRevenueSpecificMatrix *revenueSpecificAbstract; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/YUMIUnionRevenueSpecificAssembletionRegardElement.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/YUMIUnionRevenueSpecificAssembletionRegardElement.m deleted file mode 100644 index 2845b1bb..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/YUMIUnionRevenueSpecificAssembletionRegardElement.m +++ /dev/null @@ -1,144 +0,0 @@ -// -// YUMIUnionRevenueSpecificAssembletionRegardElement.m -// YuMi -// -// Created by YuMi on 2022/4/12. -// - -#import "YUMIUnionRevenueSpecificAssembletionRegardElement.h" -#import -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "UnionRevenueSpecificMatrix.h" - -@interface YUMIUnionRevenueSpecificAssembletionRegardElement () -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *presentConstituteSequencignation; -@property (nonatomic,strong) UILabel *numberLabel; -@property (nonatomic,strong) UIStackView *valencyHierarchyRegard; -@property (nonatomic,strong) UILabel *bWSttawberrySequencignation; -@property (nonatomic,strong) UILabel *presentValencySequencignation; - -@end - -@implementation YUMIUnionRevenueSpecificAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method - -- (void)initSubViews { - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.presentConstituteSequencignation]; - [self.contentView addSubview:self.valencyHierarchyRegard]; - [self.contentView addSubview:self.numberLabel]; - - [self.valencyHierarchyRegard addArrangedSubview:self.presentValencySequencignation]; - [self.valencyHierarchyRegard addArrangedSubview:self.bWSttawberrySequencignation]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(7); - make.left.right.mas_equalTo(self).inset(18); - make.height.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_width); - }]; - - [self.presentConstituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_bottom).offset(5); - make.centerX.mas_equalTo(self.contentView); - }]; - - [self.valencyHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.presentConstituteSequencignation.mas_bottom).offset(2); - make.centerX.mas_equalTo(self.contentView); - }]; - - [self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.presentValencySequencignation.mas_bottom).offset(2); - make.centerX.mas_equalTo(self.contentView); - }]; -} - -#pragma mark - Getters And Setters -- (void)setRevenueSpecificAbstract:(UnionRevenueSpecificMatrix *)revenueSpecificAbstract { - _revenueSpecificAbstract = revenueSpecificAbstract; - if (_revenueSpecificAbstract) { - self.intelligenceportraitIndicateRegard.imageUrl = _revenueSpecificAbstract.picUrl; - self.presentConstituteSequencignation.text = _revenueSpecificAbstract.giftName; - self.presentValencySequencignation.text = _revenueSpecificAbstract.goldPrice; - self.numberLabel.text = [NSString stringWithFormat:@"X%@", _revenueSpecificAbstract.giftNum]; - } -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 38/2; - _intelligenceportraitIndicateRegard.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)presentConstituteSequencignation { - if (!_presentConstituteSequencignation) { - _presentConstituteSequencignation = [[UILabel alloc] init]; - _presentConstituteSequencignation.font = [UIFont systemFontOfSize:14]; - _presentConstituteSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _presentConstituteSequencignation; -} - -- (UILabel *)presentValencySequencignation { - if (!_presentValencySequencignation) { - _presentValencySequencignation = [[UILabel alloc] init]; - _presentValencySequencignation.font = [UIFont systemFontOfSize:13]; - _presentValencySequencignation.textColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - } - return _presentValencySequencignation; -} - -- (UIStackView *)valencyHierarchyRegard { - if (!_valencyHierarchyRegard) { - _valencyHierarchyRegard = [[UIStackView alloc] init]; - _valencyHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _valencyHierarchyRegard.distribution = UIStackViewDistributionFill; - _valencyHierarchyRegard.alignment = UIStackViewAlignmentFill; - _valencyHierarchyRegard.spacing = 2; - } - return _valencyHierarchyRegard; -} - - -- (UILabel *)bWSttawberrySequencignation { - if (!_bWSttawberrySequencignation) { - _bWSttawberrySequencignation = [[UILabel alloc] init]; - _bWSttawberrySequencignation.text = YMLocalizedString(@"YUMI_Guild_Income_Detail_Collection_View_Cell_0"); - _bWSttawberrySequencignation.font = [UIFont systemFontOfSize:13]; - _bWSttawberrySequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _bWSttawberrySequencignation; -} - -- (UILabel *)numberLabel { - if (!_numberLabel) { - _numberLabel = [[UILabel alloc] init]; - _numberLabel.font = [UIFont systemFontOfSize:13]; - _numberLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _numberLabel; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/YUMIUnionSingleChamberRevenueTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/YUMIUnionSingleChamberRevenueTabulationRegardElement.h deleted file mode 100644 index 38bdc808..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/YUMIUnionSingleChamberRevenueTabulationRegardElement.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YUMIUnionSingleChamberRevenueTabulationRegardElement.h -// YuMi -// -// Created by YuMi on 2022/4/11. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class UnionFeatureRevenueConsumerAbstractMatrix; -@interface YUMIUnionSingleChamberRevenueTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) UnionFeatureRevenueConsumerAbstractMatrix *userInfo; -@property (nonatomic,assign) NSInteger rateDigital; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/YUMIUnionSingleChamberRevenueTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/YUMIUnionSingleChamberRevenueTabulationRegardElement.m deleted file mode 100644 index 6bb311a4..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/Income/YUMIUnionSingleChamberRevenueTabulationRegardElement.m +++ /dev/null @@ -1,189 +0,0 @@ -// -// YUMIUnionSingleChamberRevenueTabulationRegardElement.m -// YuMi -// -// Created by YuMi on 2022/4/11. -// 个播收入 - -#import "YUMIUnionSingleChamberRevenueTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" - -#import "NSString+Utils.h" -#import "UnionFeatureRevenueReflectionMatrix.h" - -@interface YUMIUnionSingleChamberRevenueTabulationRegardElement () - -@property (nonatomic,strong) UILabel *rateSequencignation; -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *corridorIntelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UILabel *corridorMonicerRegard; - -@property (nonatomic,strong) UILabel *chamberRevenueSequencignation; -@property (nonatomic,strong) UIView *burlywoodRegard; -@end - -@implementation YUMIUnionSingleChamberRevenueTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.rateSequencignation]; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.monicerSequencignation]; - [self.contentView addSubview:self.chamberRevenueSequencignation]; - [self.contentView addSubview:self.corridorIntelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.corridorMonicerRegard]; - [self.contentView addSubview:self.burlywoodRegard]; -} - -- (void)initChildLyRestrictions { - - [self.rateSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(0)); - make.width.mas_equalTo(kGetScaleWidth(48)); - make.centerY.equalTo(self.contentView); - }]; - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(kGetScaleWidth(35)); - make.centerY.equalTo(self.contentView); - make.left.mas_equalTo(kGetScaleWidth(50)); - }]; - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.equalTo(self.intelligenceportraitIndicateRegard); - make.top.equalTo(self.intelligenceportraitIndicateRegard.mas_bottom).mas_offset(kGetScaleWidth(6)); - make.width.mas_equalTo(kGetScaleWidth(56)); - }]; - [self.corridorMonicerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-kGetScaleWidth(5)); - make.centerY.equalTo(self.contentView); - make.left.equalTo(self.corridorIntelligenceportraitIndicateRegard.mas_right).mas_offset(kGetScaleWidth(6)); - - }]; - [self.corridorIntelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.width.mas_equalTo(kGetScaleWidth(35)); - make.centerY.equalTo(self.contentView); - make.left.equalTo(self.contentView).mas_offset(kGetScaleWidth(260)); - }]; - [self.chamberRevenueSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(97)); - make.centerY.equalTo(self.contentView); - make.right.equalTo(self.corridorIntelligenceportraitIndicateRegard.mas_left).mas_offset(-kGetScaleWidth(5)); - make.width.mas_greaterThanOrEqualTo(10); - }]; - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.equalTo(self.contentView); - make.left.equalTo(self.rateSequencignation); - make.right.equalTo(self.corridorMonicerRegard); - make.height.mas_equalTo(kGetScaleWidth(1)); - }]; - -} - -#pragma mark - Getters And Setters -- (void)setUserInfo:(UnionFeatureRevenueConsumerAbstractMatrix *)userInfo { - _userInfo = userInfo; - if (_userInfo) { - self.intelligenceportraitIndicateRegard.imageUrl = _userInfo.avatar; - self.monicerSequencignation.text = _userInfo.nick; - self.corridorIntelligenceportraitIndicateRegard.imageUrl = _userInfo.hallAvatar; - self.corridorMonicerRegard.text = _userInfo.hallName; - self.chamberRevenueSequencignation.text = _userInfo.income; - } -} - -- (void)setRateDigital:(NSInteger)rateDigital { - _rateDigital = rateDigital; - self.rateSequencignation.text = [NSString stringWithFormat:@"%ld", _rateDigital+1]; -} - - - -- (UILabel *)rateSequencignation { - if (!_rateSequencignation) { - _rateSequencignation = [[UILabel alloc] init]; - _rateSequencignation.text = @"1"; - _rateSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; - _rateSequencignation.textAlignment = NSTextAlignmentCenter; - _rateSequencignation.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - } - return _rateSequencignation; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = kGetScaleWidth(35)/2; - } - return _intelligenceportraitIndicateRegard; -} - - - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:12]; - _monicerSequencignation.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _monicerSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _monicerSequencignation; -} - - - - -- (UILabel *)chamberRevenueSequencignation { - if (!_chamberRevenueSequencignation) { - _chamberRevenueSequencignation = [[UILabel alloc] init]; - _chamberRevenueSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _chamberRevenueSequencignation.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _chamberRevenueSequencignation.textAlignment = NSTextAlignmentLeft; - } - return _chamberRevenueSequencignation; -} - -- (NetIndicateRegard *)corridorIntelligenceportraitIndicateRegard{ - if (!_corridorIntelligenceportraitIndicateRegard){ - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _corridorIntelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _corridorIntelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _corridorIntelligenceportraitIndicateRegard.layer.cornerRadius = kGetScaleWidth(5); - } - return _corridorIntelligenceportraitIndicateRegard; -} - -- (UILabel *)corridorMonicerRegard { - if (!_corridorMonicerRegard) { - _corridorMonicerRegard = [[UILabel alloc] init]; - _corridorMonicerRegard.font = [UIFont systemFontOfSize:13]; - _corridorMonicerRegard.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - } - return _corridorMonicerRegard; -} - -- (UIView *)burlywoodRegard{ - if (!_burlywoodRegard){ - _burlywoodRegard = [UIView new]; - _burlywoodRegard.backgroundColor = UIColorFromRGB(0xF7F7F7); - } - return _burlywoodRegard; -} -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/Setting/XPMineGuildManagerPerTableViewCell.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/Setting/XPMineGuildManagerPerTableViewCell.h new file mode 100644 index 00000000..9e2ca188 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/Setting/XPMineGuildManagerPerTableViewCell.h @@ -0,0 +1,25 @@ +// +// XPMineGuildManagerPerTableViewCell.h +// YuMi +// +// Created by YuMi on 2022/4/8. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class GuildAuthModel; +@protocol XPMineGuildManagerPerTableViewCellDelegate + +///开关 +- (void)xPMineGuildManagerPerTableViewCell:(UISwitch *)onswitch authInfo:(GuildAuthModel *)authInfo; + +@end + +@interface XPMineGuildManagerPerTableViewCell : UITableViewCell +///代理 +@property (nonatomic,weak) id delegate; +@property (nonatomic,strong) GuildAuthModel * authInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/Setting/XPMineGuildManagerPerTableViewCell.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/Setting/XPMineGuildManagerPerTableViewCell.m new file mode 100644 index 00000000..8d29b9bd --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/Setting/XPMineGuildManagerPerTableViewCell.m @@ -0,0 +1,119 @@ +// +// XPMineGuildManagerPerTableViewCell.m +// YuMi +// +// Created by YuMi on 2022/4/8. +// + +#import "XPMineGuildManagerPerTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +///Model +#import "GuildAuthModel.h" + +@interface XPMineGuildManagerPerTableViewCell () +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///标题 +@property (nonatomic,strong) UILabel *titleLabel; +///副标题 +@property (nonatomic,strong) UILabel *subTitleLabel; +///开关 +@property (nonatomic,strong) UISwitch *onswitch; +@end + +@implementation XPMineGuildManagerPerTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.stackView]; + [self.contentView addSubview:self.onswitch]; + + [self.stackView addArrangedSubview:self.titleLabel]; + [self.stackView addArrangedSubview:self.subTitleLabel]; +} + +- (void)initSubViewConstraints { + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.contentView).offset(15); + make.centerY.mas_equalTo(self.contentView); + }]; + + [self.onswitch mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.contentView).offset(-15); + make.centerY.mas_equalTo(self.contentView); + make.width.mas_equalTo(44); + make.height.mas_equalTo(24); + }]; +} + +#pragma mark - Event Response +- (void)onswitchChange:(UISwitch *)on { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineGuildManagerPerTableViewCell:authInfo:)]) { + [self.delegate xPMineGuildManagerPerTableViewCell:on authInfo:self.authInfo]; + } +} + +#pragma mark - Getters And Setters +- (void)setAuthInfo:(GuildAuthModel *)authInfo { + _authInfo = authInfo; + if (_authInfo) { + self.titleLabel.text = _authInfo.name; + self.subTitleLabel.text = _authInfo.des; + self.titleLabel.hidden = _authInfo.name.length <= 0; + self.subTitleLabel.hidden = _authInfo.des.length <= 0; + self.onswitch.on = _authInfo.status; + } +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 5; + } + return _stackView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:15]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +- (UILabel *)subTitleLabel { + if (!_subTitleLabel) { + _subTitleLabel = [[UILabel alloc] init]; + _subTitleLabel.font = [UIFont systemFontOfSize:13]; + _subTitleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _subTitleLabel; +} + +- (UISwitch *)onswitch { + if (!_onswitch) { + _onswitch = [[UISwitch alloc] init]; + _onswitch.onTintColor = [DJDKMIMOMColor appMainColor]; + [_onswitch addTarget:self action:@selector(onswitchChange:) forControlEvents:UIControlEventValueChanged]; + } + return _onswitch; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/Setting/YUMIManeUnionExecutivePerTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/Setting/YUMIManeUnionExecutivePerTabulationRegardElement.h deleted file mode 100644 index 27d7c2e1..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/Setting/YUMIManeUnionExecutivePerTabulationRegardElement.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YUMIManeUnionExecutivePerTabulationRegardElement.h -// YuMi -// -// Created by YuMi on 2022/4/8. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class UnionAuthMatrix; -@protocol FBCManeUnionExecutivePerTabulationViweElementRepresendtation - -- (void)fBCManeUnionExecutivePerTarbsultowardsionViweElement:(UISwitch *)onswitch attestationAbstract:(UnionAuthMatrix *)attestationAbstract; - -@end - -@interface YUMIManeUnionExecutivePerTabulationRegardElement : UITableViewCell -@property (nonatomic,weak) id delegate; -@property (nonatomic,strong) UnionAuthMatrix * attestationAbstract; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/Setting/YUMIManeUnionExecutivePerTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/Setting/YUMIManeUnionExecutivePerTabulationRegardElement.m deleted file mode 100644 index 5c67577d..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/Setting/YUMIManeUnionExecutivePerTabulationRegardElement.m +++ /dev/null @@ -1,112 +0,0 @@ -// -// YUMIManeUnionExecutivePerTabulationRegardElement.m -// YuMi -// -// Created by YuMi on 2022/4/8. -// - -#import "YUMIManeUnionExecutivePerTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "UnionAuthMatrix.h" - -@interface YUMIManeUnionExecutivePerTabulationRegardElement () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UILabel *subChampionSequencignation; -@property (nonatomic,strong) UISwitch *onswitch; -@end - -@implementation YUMIManeUnionExecutivePerTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.stackView]; - [self.contentView addSubview:self.onswitch]; - - [self.stackView addArrangedSubview:self.titleLabel]; - [self.stackView addArrangedSubview:self.subChampionSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.contentView).offset(15); - make.centerY.mas_equalTo(self.contentView); - }]; - - [self.onswitch mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.contentView).offset(-15); - make.centerY.mas_equalTo(self.contentView); - make.width.mas_equalTo(44); - make.height.mas_equalTo(24); - }]; -} - -#pragma mark - Event Response -- (void)onswopDiversifictowardsion:(UISwitch *)on { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeUnionExecutivePerTarbsultowardsionViweElement:attestationAbstract:)]) { - [self.delegate fBCManeUnionExecutivePerTarbsultowardsionViweElement:on attestationAbstract:self.attestationAbstract]; - } -} - -#pragma mark - Getters And Setters -- (void)setAttestationAbstract:(UnionAuthMatrix *)attestationAbstract { - _attestationAbstract = attestationAbstract; - if (_attestationAbstract) { - self.titleLabel.text = _attestationAbstract.name; - self.subChampionSequencignation.text = _attestationAbstract.des; - self.titleLabel.hidden = _attestationAbstract.name.length <= 0; - self.subChampionSequencignation.hidden = _attestationAbstract.des.length <= 0; - self.onswitch.on = _attestationAbstract.status; - } -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 5; - } - return _stackView; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:15]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -- (UILabel *)subChampionSequencignation { - if (!_subChampionSequencignation) { - _subChampionSequencignation = [[UILabel alloc] init]; - _subChampionSequencignation.font = [UIFont systemFontOfSize:13]; - _subChampionSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _subChampionSequencignation; -} - -- (UISwitch *)onswitch { - if (!_onswitch) { - _onswitch = [[UISwitch alloc] init]; - _onswitch.onTintColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - [_onswitch addTarget:self action:@selector(onswopDiversifictowardsion:) forControlEvents:UIControlEventValueChanged]; - } - return _onswitch; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildChooseManagerRoomTableViewCell.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildChooseManagerRoomTableViewCell.h new file mode 100644 index 00000000..0389b9e4 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildChooseManagerRoomTableViewCell.h @@ -0,0 +1,27 @@ +// +// XPGuildChooseManagerRoomTableViewCell.h +// YuMi +// +// Created by YuMi on 2022/4/13. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class GuildRoomInfoModel, XPGuildChooseManagerRoomTableViewCell; + +@protocol XPGuildChooseManagerRoomTableViewCellDelegate + +- (void)xPGuildChooseManagerRoomTableViewCell:(XPGuildChooseManagerRoomTableViewCell *)view didChooseInfo:(GuildRoomInfoModel *)roomInfo; + +@end + +@interface XPGuildChooseManagerRoomTableViewCell : UITableViewCell + +///代理 +@property (nonatomic,weak) id delegate; + +@property (nonatomic,strong) GuildRoomInfoModel *roomInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildChooseManagerRoomTableViewCell.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildChooseManagerRoomTableViewCell.m new file mode 100644 index 00000000..831389ce --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildChooseManagerRoomTableViewCell.m @@ -0,0 +1,155 @@ +// +// XPGuildChooseManagerRoomTableViewCell.m +// YuMi +// +// Created by YuMi on 2022/4/13. +// + +#import "XPGuildChooseManagerRoomTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +///Model +#import "GuildRoomInfoModel.h" + +@interface XPGuildChooseManagerRoomTableViewCell () +///背景 +@property (nonatomic,strong) UIView * backView; +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///id +@property (nonatomic,strong) UILabel *idLabel; +///是否选择 +@property (nonatomic,strong) UIButton *chooseButton; +@end + +@implementation XPGuildChooseManagerRoomTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.backView]; + + [self.backView addSubview:self.avatarImageView]; + [self.backView addSubview:self.nickLabel]; + [self.backView addSubview:self.idLabel]; + [self.backView addSubview:self.chooseButton]; +} + +- (void)initSubViewConstraints { + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + make.top.mas_equalTo(self.contentView); + make.bottom.mas_equalTo(self.contentView).offset(-15); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backView).offset(10); + make.centerY.mas_equalTo(self.backView); + make.size.mas_equalTo(CGSizeMake(53, 53)); + }]; + + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.backView.mas_centerY).offset(-2); + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(8); + make.right.mas_lessThanOrEqualTo(self.chooseButton.mas_left).offset(-5); + }]; + + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.avatarImageView.mas_centerY).offset(2); + make.left.mas_equalTo(self.nickLabel); + }]; + + [self.chooseButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(30, 30)); + make.centerY.mas_equalTo(self.backView); + make.right.mas_equalTo(self.backView).offset(-10); + }]; +} + +#pragma mark - Event Response +- (void)chooseButtonAction:(UIButton *)sender { + sender.selected = !sender.selected; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGuildChooseManagerRoomTableViewCell:didChooseInfo:)]) { + [self.delegate xPGuildChooseManagerRoomTableViewCell:self didChooseInfo:self.roomInfo]; + } +} + +#pragma mark - Getters And Setters +- (void)setRoomInfo:(GuildRoomInfoModel *)roomInfo { + _roomInfo = roomInfo; + if (_roomInfo) { + self.avatarImageView.imageUrl = _roomInfo.hallAvatar; + self.nickLabel.text = _roomInfo.hallName; + self.idLabel.text = [NSString stringWithFormat:@"ID:%@", _roomInfo.hallRoomId]; + self.chooseButton.selected = _roomInfo.hasManage; + } +} + +- (UIView *)backView { + if (!_backView) { + _backView = [[UIView alloc] init]; + _backView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _backView.layer.masksToBounds = YES; + _backView.layer.cornerRadius = 10; + } + return _backView; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 53.0/2.0; + _avatarImageView.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + } + return _avatarImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:18]; + _nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _nickLabel; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.font = [UIFont systemFontOfSize:12]; + _idLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _idLabel; +} + +- (UIButton *)chooseButton { + if (!_chooseButton) { + _chooseButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_chooseButton setImage:[UIImage imageNamed:@"mine_guild_guild_manager_normal"] forState:UIControlStateNormal]; + [_chooseButton setImage:[UIImage imageNamed:@"mine_guild_guild_manager_select"] forState:UIControlStateSelected]; + [_chooseButton addTarget:self action:@selector(chooseButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _chooseButton; +} + + + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildSearchSuperAdminTableViewCell.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildSearchSuperAdminTableViewCell.h new file mode 100644 index 00000000..5eb16ed3 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildSearchSuperAdminTableViewCell.h @@ -0,0 +1,23 @@ +// +// XPGuildSearchSuperAdminTableViewCell.h +// YuMi +// +// Created by YuMi on 2022/4/13. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class GuildSearchSuperAdminModel, XPGuildSearchSuperAdminTableViewCell; +@protocol XPGuildSearchSuperAdminTableViewCellDelegate + +- (void)xPGuildSearchSuperAdminTableViewCell:(XPGuildSearchSuperAdminTableViewCell *)cell didSelectInfo:(GuildSearchSuperAdminModel *)userInfo; + +@end +@interface XPGuildSearchSuperAdminTableViewCell : UITableViewCell +///代理 +@property (nonatomic,weak) id delegate; +@property (nonatomic,strong) GuildSearchSuperAdminModel *userInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildSearchSuperAdminTableViewCell.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildSearchSuperAdminTableViewCell.m new file mode 100644 index 00000000..7a1089f0 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildSearchSuperAdminTableViewCell.m @@ -0,0 +1,172 @@ +// +// XPGuildSearchSuperAdminTableViewCell.m +// YuMi +// +// Created by YuMi on 2022/4/13. +// + +#import "XPGuildSearchSuperAdminTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "UIImage+Utils.h" +///Model +#import "GuildSearchSuperAdminModel.h" + +@interface XPGuildSearchSuperAdminTableViewCell () +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///性别 +@property (nonatomic,strong) UIImageView *sexImageView; +///id +@property (nonatomic,strong) UILabel *idLabel; +///设置超管 +@property (nonatomic,strong) UIButton *superAdminButton; +@end + +@implementation XPGuildSearchSuperAdminTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.nickLabel]; + [self.contentView addSubview:self.sexImageView]; + [self.contentView addSubview:self.idLabel]; + [self.contentView addSubview:self.superAdminButton]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.contentView); + make.left.mas_equalTo(self.contentView).offset(15); + make.width.height.mas_equalTo(50); + }]; + + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.avatarImageView.mas_centerY).offset(-3); + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(6); + }]; + + [self.sexImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.nickLabel.mas_centerY); + make.left.mas_equalTo(self.nickLabel.mas_right).mas_offset(3); + make.height.width.mas_equalTo(18); + }]; + + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.avatarImageView.mas_centerY).offset(2); + make.left.mas_equalTo(self.nickLabel.mas_left); + }]; + + [self.superAdminButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.contentView).offset(-15); + make.width.mas_equalTo(90); + make.height.mas_equalTo(30); + make.centerY.mas_equalTo(self.contentView); + }]; +} + +#pragma mark - Event Response +- (void)superAdminButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGuildSearchSuperAdminTableViewCell:didSelectInfo:)]) { + [self.delegate xPGuildSearchSuperAdminTableViewCell:self didSelectInfo:self.userInfo]; + } +} + +#pragma mark - Getters And Setters +- (void)setUserInfo:(GuildSearchSuperAdminModel *)userInfo { + _userInfo = userInfo; + if (_userInfo) { + self.avatarImageView.imageUrl = _userInfo.avatar; + NSString * nick = _userInfo.nick; + if (nick.length > 8) { + nick = [nick substringToIndex:8]; + } + self.nickLabel.text = nick; + self.sexImageView.image = _userInfo.gender == GenderType_Female ? [UIImage imageNamed:@"common_female"] : [UIImage imageNamed:@"common_male"]; + self.idLabel.text = [NSString stringWithFormat:@"%@", _userInfo.erbanNo]; + self.superAdminButton.enabled = !_userInfo.hasSet; + if(self.superAdminButton.enabled == NO){ + [self.superAdminButton mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(110); + }]; + }else{ + [self.superAdminButton mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(90); + }]; + } + } +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 25; + _avatarImageView.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + _avatarImageView.layer.borderWidth = 1; + } + return _avatarImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:18]; + _nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _nickLabel; +} + +- (UIImageView *)sexImageView { + if (!_sexImageView) { + _sexImageView = [[UIImageView alloc] init]; + _sexImageView.userInteractionEnabled = YES; + } + return _sexImageView; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.font = [UIFont systemFontOfSize:12]; + _idLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _idLabel; +} + +- (UIButton *)superAdminButton { + if (!_superAdminButton) { + _superAdminButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_superAdminButton setTitle:YMLocalizedString(@"XPGuildSearchSuperAdminTableViewCell0") forState:UIControlStateNormal]; + [_superAdminButton setTitle:YMLocalizedString(@"XPGuildSearchSuperAdminTableViewCell1") forState:UIControlStateDisabled]; + [_superAdminButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_superAdminButton setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateSelected]; + _superAdminButton.titleLabel.font = [UIFont systemFontOfSize:14]; + [_superAdminButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _superAdminButton.layer.masksToBounds = YES; + _superAdminButton.layer.cornerRadius = 15; + [_superAdminButton addTarget:self action:@selector(superAdminButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _superAdminButton; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildSuperAdminRoomCollectionViewCell.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildSuperAdminRoomCollectionViewCell.h new file mode 100644 index 00000000..23d9902f --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildSuperAdminRoomCollectionViewCell.h @@ -0,0 +1,16 @@ +// +// XPGuildSuperAdminRoomCollectionViewCell.h +// YuMi +// +// Created by YuMi on 2022/4/13. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class GuildRoomInfoModel; +@interface XPGuildSuperAdminRoomCollectionViewCell : UICollectionViewCell +@property (nonatomic,strong) GuildRoomInfoModel *roomInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildSuperAdminRoomCollectionViewCell.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildSuperAdminRoomCollectionViewCell.m new file mode 100644 index 00000000..3639daf1 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildSuperAdminRoomCollectionViewCell.m @@ -0,0 +1,86 @@ +// +// XPGuildSuperAdminRoomCollectionViewCell.m +// YuMi +// +// Created by YuMi on 2022/4/13. +// + +#import "XPGuildSuperAdminRoomCollectionViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +///Model +#import "GuildRoomInfoModel.h" + +@interface XPGuildSuperAdminRoomCollectionViewCell () +///显示头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///显示id +@property (nonatomic,strong) UILabel *idLabel; +@end + +@implementation XPGuildSuperAdminRoomCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.idLabel]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.contentView); + make.centerX.mas_equalTo(self.contentView); + make.width.height.mas_equalTo(60); + }]; + + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.avatarImageView.mas_bottom).offset(6); + make.right.left.mas_equalTo(self.contentView); + }]; +} +#pragma mark - Getters And Setters +- (void)setRoomInfo:(GuildRoomInfoModel *)roomInfo { + _roomInfo = roomInfo; + if (_roomInfo) { + self.avatarImageView.imageUrl = _roomInfo.hallAvatar; + self.idLabel.text = _roomInfo.hallName; + } +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 10; + } + return _avatarImageView; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.font = [UIFont systemFontOfSize:13]; + _idLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _idLabel.textAlignment = NSTextAlignmentCenter; + } + return _idLabel; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildSuperAdminSetTableViewCell.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildSuperAdminSetTableViewCell.h new file mode 100644 index 00000000..fc80f3a8 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildSuperAdminSetTableViewCell.h @@ -0,0 +1,23 @@ +// +// XPGuildSuperAdminSetTableViewCell.h +// YuMi +// +// Created by YuMi on 2022/4/13. +// + +#import +#import "XPGuildSuperAdminMenuView.h" +NS_ASSUME_NONNULL_BEGIN +@class GuildSuperAdminInfoModel, XPGuildSuperAdminSetTableViewCell; +@protocol XPGuildSuperAdminSetTableViewCellDelegate + +- (void)xPGuildSuperAdminSetTableViewCell:(GuildSuperAdminInfoModel *)managerInfo didChooseType:(GuildSuperAdminMenuType)menuType; + +@end +@interface XPGuildSuperAdminSetTableViewCell : UITableViewCell +@property (nonatomic,strong) GuildSuperAdminInfoModel *managerInfo; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildSuperAdminSetTableViewCell.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildSuperAdminSetTableViewCell.m new file mode 100644 index 00000000..b50fea86 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/XPGuildSuperAdminSetTableViewCell.m @@ -0,0 +1,250 @@ +// +// XPGuildSuperAdminSetTableViewCell.m +// YuMi +// +// Created by YuMi on 2022/4/13. +// + +#import "XPGuildSuperAdminSetTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +///Tool +#import "NetImageView.h" +///Model +#import "GuildSuperAdminInfoModel.h" +///View +#import "XPGuildSuperAdminRoomCollectionViewCell.h" + + +@interface XPGuildSuperAdminSetTableViewCell () +///背景色 +@property (nonatomic,strong) UIView * backView; +///个人信息的容器 +@property (nonatomic,strong) UIView * managerInfoView; +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///显示昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///id +@property (nonatomic,strong) UILabel *idLabel; +///更多操作按钮 +@property (nonatomic,strong) UIButton *moreButton; +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///菜单 +@property (nonatomic,strong) XPGuildSuperAdminMenuView *menuView; +///列表 +@property (nonatomic,strong) UICollectionView *collectionView; +@end + +@implementation XPGuildSuperAdminSetTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.backView]; + + [self.backView addSubview:self.managerInfoView]; + [self.backView addSubview:self.titleLabel]; + [self.backView addSubview:self.collectionView]; + [self.backView addSubview:self.menuView]; + + [self.managerInfoView addSubview:self.avatarImageView]; + [self.managerInfoView addSubview:self.nickLabel]; + [self.managerInfoView addSubview:self.idLabel]; + [self.managerInfoView addSubview:self.moreButton]; +} + +- (void)initSubViewConstraints { + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + make.top.mas_equalTo(self.contentView); + make.bottom.mas_equalTo(self.contentView).offset(-15); + }]; + + [self.managerInfoView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.backView); + make.height.mas_equalTo(74); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(64, 64)); + make.left.top.mas_equalTo(self.managerInfoView).offset(10); + }]; + + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.avatarImageView); + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(6); + make.right.mas_lessThanOrEqualTo(self.moreButton.mas_left).offset(-5); + }]; + + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nickLabel); + make.top.mas_equalTo(self.nickLabel.mas_bottom).offset(6); + }]; + + [self.moreButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.backView).offset(-5); + make.top.mas_equalTo(self.backView).offset(10); + make.width.height.mas_equalTo(30); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backView).offset(10); + make.top.mas_equalTo(self.managerInfoView.mas_bottom).offset(15); + }]; + + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.backView); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(6); + }]; + + [self.menuView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.backView).offset(-5); + make.top.mas_equalTo(self.moreButton.mas_bottom).offset(0); + }]; +} + +#pragma mark - UICollectionViewCellDelegate And UICollectionViewDatasource +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.managerInfo.roomList.count; +} + +-(__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPGuildSuperAdminRoomCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPGuildSuperAdminRoomCollectionViewCell class]) forIndexPath:indexPath]; + GuildRoomInfoModel * roomInfo = [self.managerInfo.roomList safeObjectAtIndex1:indexPath.row]; + cell.roomInfo = roomInfo; + return cell; +} + +#pragma mark - XPGuildSuperAdminMenuViewDelegate +- (void)xPGuildSuperAdminMenuView:(XPGuildSuperAdminMenuView *)view didClickType:(GuildSuperAdminMenuType)memuType { + self.menuView.hidden = YES; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGuildSuperAdminSetTableViewCell:didChooseType:)]) { + [self.delegate xPGuildSuperAdminSetTableViewCell:self.managerInfo didChooseType:memuType]; + } +} + +#pragma mark - Event Response +- (void)moreButtonButtonAction:(UIButton *)sender { + self.menuView.hidden = !self.menuView.hidden; +} + +#pragma mark - Getters And Setters +- (void)setManagerInfo:(GuildSuperAdminInfoModel *)managerInfo { + _managerInfo = managerInfo; + if (_managerInfo) { + self.avatarImageView.imageUrl = _managerInfo.avatar; + self.nickLabel.text= _managerInfo.nick; + self.idLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPGuildSuperAdminSetTableViewCell0"), _managerInfo.erbanNo]; + [self.collectionView reloadData]; + } +} + +- (UIView *)backView { + if (!_backView) { + _backView = [[UIView alloc] init]; + _backView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _backView.layer.masksToBounds = YES; + _backView.layer.cornerRadius = 10; + } + return _backView; +} + +- (UIView *)managerInfoView { + if (!_managerInfoView) { + _managerInfoView = [[UIView alloc] init]; + _managerInfoView.backgroundColor = [UIColor clearColor]; + } + return _managerInfoView; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 64/2; + _avatarImageView.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + _avatarImageView.layer.borderWidth = 1; + } + return _avatarImageView; +} +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:18]; + _nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _nickLabel; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.font = [UIFont systemFontOfSize:12]; + _idLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _idLabel; +} + +- (UIButton *)moreButton { + if (!_moreButton) { + _moreButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_moreButton setImage:[UIImage imageNamed:@"mine_guild_super_admin_more"] forState:UIControlStateNormal]; + [_moreButton setImage:[UIImage imageNamed:@"mine_guild_super_admin_more"] forState:UIControlStateSelected]; + [_moreButton addTarget:self action:@selector(moreButtonButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _moreButton; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPGuildSuperAdminSetTableViewCell1"); + _titleLabel.font = [UIFont systemFontOfSize:14]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +- (UICollectionView *)collectionView{ + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + layout.minimumLineSpacing = 10; + layout.itemSize = CGSizeMake(60, 80); + layout.sectionInset = UIEdgeInsetsMake(0, 10, 0, 10); + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.backgroundColor = [UIColor whiteColor]; + [_collectionView registerClass:[XPGuildSuperAdminRoomCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPGuildSuperAdminRoomCollectionViewCell class])]; + } + return _collectionView; +} + +- (XPGuildSuperAdminMenuView *)menuView { + if (!_menuView) { + _menuView = [[XPGuildSuperAdminMenuView alloc] init]; + _menuView.delegate = self; + _menuView.hidden = YES; + } + return _menuView; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/YUMIUnionChooseExecutiveChamberTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/YUMIUnionChooseExecutiveChamberTabulationRegardElement.h deleted file mode 100644 index 08f77810..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/YUMIUnionChooseExecutiveChamberTabulationRegardElement.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YUMIUnionChooseExecutiveChamberTabulationRegardElement.h -// YuMi -// -// Created by YuMi on 2022/4/13. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class UnionChamberAbstractMatrix, YUMIUnionChooseExecutiveChamberTabulationRegardElement; - -@protocol FBCUnionChooseExecutiveChamberTabulationViweElementRepresendtation - -- (void)yUMIUnionConcludeExecutiveChamberTarbsultowardsionViweElement:(YUMIUnionChooseExecutiveChamberTabulationRegardElement *)view didChooseInfo:(UnionChamberAbstractMatrix *)roomInfo; - -@end - -@interface YUMIUnionChooseExecutiveChamberTabulationRegardElement : UITableViewCell - -@property (nonatomic,weak) id delegate; - -@property (nonatomic,strong) UnionChamberAbstractMatrix *roomInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/YUMIUnionChooseExecutiveChamberTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/YUMIUnionChooseExecutiveChamberTabulationRegardElement.m deleted file mode 100644 index 0d86a75b..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/YUMIUnionChooseExecutiveChamberTabulationRegardElement.m +++ /dev/null @@ -1,147 +0,0 @@ -// -// YUMIUnionChooseExecutiveChamberTabulationRegardElement.m -// YuMi -// -// Created by YuMi on 2022/4/13. -// - -#import "YUMIUnionChooseExecutiveChamberTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "UnionChamberAbstractMatrix.h" - -@interface YUMIUnionChooseExecutiveChamberTabulationRegardElement () -@property (nonatomic,strong) UIView * encourageRegard; -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UILabel *idSequencignation; -@property (nonatomic,strong) UIButton *concludeBtuton; -@end - -@implementation YUMIUnionChooseExecutiveChamberTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.encourageRegard]; - - [self.encourageRegard addSubview:self.intelligenceportraitIndicateRegard]; - [self.encourageRegard addSubview:self.monicerSequencignation]; - [self.encourageRegard addSubview:self.idSequencignation]; - [self.encourageRegard addSubview:self.concludeBtuton]; -} - -- (void)initChildLyRestrictions { - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(15); - make.top.mas_equalTo(self.contentView); - make.bottom.mas_equalTo(self.contentView).offset(-15); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageRegard).offset(10); - make.centerY.mas_equalTo(self.encourageRegard); - make.size.mas_equalTo(CGSizeMake(53, 53)); - }]; - - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.encourageRegard.mas_centerY).offset(-2); - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(8); - make.right.mas_lessThanOrEqualTo(self.concludeBtuton.mas_left).offset(-5); - }]; - - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(2); - make.left.mas_equalTo(self.monicerSequencignation); - }]; - - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(30, 30)); - make.centerY.mas_equalTo(self.encourageRegard); - make.right.mas_equalTo(self.encourageRegard).offset(-10); - }]; -} - -#pragma mark - Event Response -- (void)concludeBtutonPerformance:(UIButton *)sender { - sender.selected = !sender.selected; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIUnionConcludeExecutiveChamberTarbsultowardsionViweElement:didChooseInfo:)]) { - [self.delegate yUMIUnionConcludeExecutiveChamberTarbsultowardsionViweElement:self didChooseInfo:self.roomInfo]; - } -} - -#pragma mark - Getters And Setters -- (void)setRoomInfo:(UnionChamberAbstractMatrix *)roomInfo { - _roomInfo = roomInfo; - if (_roomInfo) { - self.intelligenceportraitIndicateRegard.imageUrl = _roomInfo.hallAvatar; - self.monicerSequencignation.text = _roomInfo.hallName; - self.idSequencignation.text = [NSString stringWithFormat:@"ID:%@", _roomInfo.hallRoomId]; - self.concludeBtuton.selected = _roomInfo.hasManage; - } -} - -- (UIView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIView alloc] init]; - _encourageRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _encourageRegard.layer.masksToBounds = YES; - _encourageRegard.layer.cornerRadius = 10; - } - return _encourageRegard; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 53.0/2.0; - _intelligenceportraitIndicateRegard.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:18]; - _monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _monicerSequencignation; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.font = [UIFont systemFontOfSize:12]; - _idSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _idSequencignation; -} - -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_center_guild_guild_manager_normal"] forState:UIControlStateNormal]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_center_guild_guild_manager_select"] forState:UIControlStateSelected]; - [_concludeBtuton addTarget:self action:@selector(concludeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _concludeBtuton; -} - - - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/YUMIUnionHuntforSensationalManagementTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/YUMIUnionHuntforSensationalManagementTabulationRegardElement.h deleted file mode 100644 index cfe96ad1..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/YUMIUnionHuntforSensationalManagementTabulationRegardElement.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YUMIUnionHuntforSensationalManagementTabulationRegardElement.h -// YuMi -// -// Created by YuMi on 2022/4/13. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class UnionHuntforSensationalManagementMatrix, YUMIUnionHuntforSensationalManagementTabulationRegardElement; -@protocol FBCUnionHuntforSensationalManagementTabulationViweElementRepresendtation - -- (void)yUMIUnionHuntforSenstowardsionalManagementTarbsultowardsionViweElement:(YUMIUnionHuntforSensationalManagementTabulationRegardElement *)cell didSelectInfo:(UnionHuntforSensationalManagementMatrix *)userInfo; - -@end -@interface YUMIUnionHuntforSensationalManagementTabulationRegardElement : UITableViewCell -@property (nonatomic,weak) id delegate; -@property (nonatomic,strong) UnionHuntforSensationalManagementMatrix *userInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/YUMIUnionHuntforSensationalManagementTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/YUMIUnionHuntforSensationalManagementTabulationRegardElement.m deleted file mode 100644 index 6466a776..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/YUMIUnionHuntforSensationalManagementTabulationRegardElement.m +++ /dev/null @@ -1,164 +0,0 @@ -// -// YUMIUnionHuntforSensationalManagementTabulationRegardElement.m -// YuMi -// -// Created by YuMi on 2022/4/13. -// - -#import "YUMIUnionHuntforSensationalManagementTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "UIImage+Utils.h" -#import "UnionHuntforSensationalManagementMatrix.h" - -@interface YUMIUnionHuntforSensationalManagementTabulationRegardElement () -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UIImageView *seaxualityIndicateRegard; -@property (nonatomic,strong) UILabel *idSequencignation; -@property (nonatomic,strong) UIButton *sensationalManagementBtuton; -@end - -@implementation YUMIUnionHuntforSensationalManagementTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.monicerSequencignation]; - [self.contentView addSubview:self.seaxualityIndicateRegard]; - [self.contentView addSubview:self.idSequencignation]; - [self.contentView addSubview:self.sensationalManagementBtuton]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.contentView); - make.left.mas_equalTo(self.contentView).offset(15); - make.width.height.mas_equalTo(50); - }]; - - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(-3); - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(6); - }]; - - [self.seaxualityIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.monicerSequencignation.mas_centerY); - make.left.mas_equalTo(self.monicerSequencignation.mas_right).mas_offset(3); - make.height.width.mas_equalTo(18); - }]; - - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(2); - make.left.mas_equalTo(self.monicerSequencignation.mas_left); - }]; - - [self.sensationalManagementBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.contentView).offset(-15); - make.width.mas_equalTo(90); - make.height.mas_equalTo(30); - make.centerY.mas_equalTo(self.contentView); - }]; -} - -#pragma mark - Event Response -- (void)senstowardsionalManagementBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIUnionHuntforSenstowardsionalManagementTarbsultowardsionViweElement:didSelectInfo:)]) { - [self.delegate yUMIUnionHuntforSenstowardsionalManagementTarbsultowardsionViweElement:self didSelectInfo:self.userInfo]; - } -} - -#pragma mark - Getters And Setters -- (void)setUserInfo:(UnionHuntforSensationalManagementMatrix *)userInfo { - _userInfo = userInfo; - if (_userInfo) { - self.intelligenceportraitIndicateRegard.imageUrl = _userInfo.avatar; - NSString * nick = _userInfo.nick; - if (nick.length > 8) { - nick = [nick substringToIndex:8]; - } - self.monicerSequencignation.text = nick; - self.seaxualityIndicateRegard.image = _userInfo.gender == GenderGenre_Female ? [UIImage imageNamed:@"yumi_same_female"] : [UIImage imageNamed:@"yumi_same_male"]; - self.idSequencignation.text = [NSString stringWithFormat:@"%@", _userInfo.erbanNo]; - self.sensationalManagementBtuton.enabled = !_userInfo.hasSet; - if(self.sensationalManagementBtuton.enabled == NO){ - [self.sensationalManagementBtuton mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(110); - }]; - }else{ - [self.sensationalManagementBtuton mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(90); - }]; - } - } -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 25; - _intelligenceportraitIndicateRegard.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - _intelligenceportraitIndicateRegard.layer.borderWidth = 1; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:18]; - _monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _monicerSequencignation; -} - -- (UIImageView *)seaxualityIndicateRegard { - if (!_seaxualityIndicateRegard) { - _seaxualityIndicateRegard = [[UIImageView alloc] init]; - _seaxualityIndicateRegard.userInteractionEnabled = YES; - } - return _seaxualityIndicateRegard; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.font = [UIFont systemFontOfSize:12]; - _idSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _idSequencignation; -} - -- (UIButton *)sensationalManagementBtuton { - if (!_sensationalManagementBtuton) { - _sensationalManagementBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_sensationalManagementBtuton setTitle:YMLocalizedString(@"YUMI_Guild_Search_Super_Admin_Table_View_Cell_0") forState:UIControlStateNormal]; - [_sensationalManagementBtuton setTitle:YMLocalizedString(@"YUMI_Guild_Search_Super_Admin_Table_View_Cell_1") forState:UIControlStateDisabled]; - [_sensationalManagementBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [_sensationalManagementBtuton setTitleColor:[DJDKMIMOMColor prohibitionBtutonEssayPrettify] forState:UIControlStateSelected]; - _sensationalManagementBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - [_sensationalManagementBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _sensationalManagementBtuton.layer.masksToBounds = YES; - _sensationalManagementBtuton.layer.cornerRadius = 15; - [_sensationalManagementBtuton addTarget:self action:@selector(senstowardsionalManagementBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _sensationalManagementBtuton; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/YUMIUnionSensationalManagementChamberAssembletionRegardElement.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/YUMIUnionSensationalManagementChamberAssembletionRegardElement.h deleted file mode 100644 index 37cfc5c7..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/YUMIUnionSensationalManagementChamberAssembletionRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIUnionSensationalManagementChamberAssembletionRegardElement.h -// YuMi -// -// Created by YuMi on 2022/4/13. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class UnionChamberAbstractMatrix; -@interface YUMIUnionSensationalManagementChamberAssembletionRegardElement : UICollectionViewCell -@property (nonatomic,strong) UnionChamberAbstractMatrix *roomInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/YUMIUnionSensationalManagementChamberAssembletionRegardElement.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/YUMIUnionSensationalManagementChamberAssembletionRegardElement.m deleted file mode 100644 index ced135e3..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/YUMIUnionSensationalManagementChamberAssembletionRegardElement.m +++ /dev/null @@ -1,81 +0,0 @@ -// -// YUMIUnionSensationalManagementChamberAssembletionRegardElement.m -// YuMi -// -// Created by YuMi on 2022/4/13. -// - -#import "YUMIUnionSensationalManagementChamberAssembletionRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "UnionChamberAbstractMatrix.h" - -@interface YUMIUnionSensationalManagementChamberAssembletionRegardElement () -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *idSequencignation; -@end - -@implementation YUMIUnionSensationalManagementChamberAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.idSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.contentView); - make.centerX.mas_equalTo(self.contentView); - make.width.height.mas_equalTo(60); - }]; - - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_bottom).offset(6); - make.right.left.mas_equalTo(self.contentView); - }]; -} -#pragma mark - Getters And Setters -- (void)setRoomInfo:(UnionChamberAbstractMatrix *)roomInfo { - _roomInfo = roomInfo; - if (_roomInfo) { - self.intelligenceportraitIndicateRegard.imageUrl = _roomInfo.hallAvatar; - self.idSequencignation.text = _roomInfo.hallName; - } -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 10; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.font = [UIFont systemFontOfSize:13]; - _idSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _idSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _idSequencignation; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/YUMIUnionSensationalManagementSetTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/YUMIUnionSensationalManagementSetTabulationRegardElement.h deleted file mode 100644 index ceff2393..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/YUMIUnionSensationalManagementSetTabulationRegardElement.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YUMIUnionSensationalManagementSetTabulationRegardElement.h -// YuMi -// -// Created by YuMi on 2022/4/13. -// - -#import -#import "YUMIUnionSensationalManagementParrotRegard.h" -NS_ASSUME_NONNULL_BEGIN -@class UnionSensationalManagementAbstractMatrix, YUMIUnionSensationalManagementSetTabulationRegardElement; -@protocol FBCUnionSensationalManagementSetTabulationViweElementRepresendtation - -- (void)yUMIUnionSenstowardsionalManagementSetTarbsultowardsionViweElement:(UnionSensationalManagementAbstractMatrix *)executiveAbstract didChooseType:(UnionSuperAdminParrotGenre)menuType; - -@end -@interface YUMIUnionSensationalManagementSetTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) UnionSensationalManagementAbstractMatrix *executiveAbstract; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/YUMIUnionSensationalManagementSetTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/YUMIUnionSensationalManagementSetTabulationRegardElement.m deleted file mode 100644 index ecf15087..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/SuperAdmin/YUMIUnionSensationalManagementSetTabulationRegardElement.m +++ /dev/null @@ -1,236 +0,0 @@ -// -// YUMIUnionSensationalManagementSetTabulationRegardElement.m -// YuMi -// -// Created by YuMi on 2022/4/13. -// - -#import "YUMIUnionSensationalManagementSetTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "UnionSensationalManagementAbstractMatrix.h" -#import "YUMIUnionSensationalManagementChamberAssembletionRegardElement.h" - - -@interface YUMIUnionSensationalManagementSetTabulationRegardElement () -@property (nonatomic,strong) UIView * encourageRegard; -@property (nonatomic,strong) UIView * executiveAbstractRegard; -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UILabel *idSequencignation; -@property (nonatomic,strong) UIButton *furthaerBtuton; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) YUMIUnionSensationalManagementParrotRegard *parrotRegard; -@property (nonatomic,strong) UICollectionView *collectionView; -@end - -@implementation YUMIUnionSensationalManagementSetTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.encourageRegard]; - - [self.encourageRegard addSubview:self.executiveAbstractRegard]; - [self.encourageRegard addSubview:self.titleLabel]; - [self.encourageRegard addSubview:self.collectionView]; - [self.encourageRegard addSubview:self.parrotRegard]; - - [self.executiveAbstractRegard addSubview:self.intelligenceportraitIndicateRegard]; - [self.executiveAbstractRegard addSubview:self.monicerSequencignation]; - [self.executiveAbstractRegard addSubview:self.idSequencignation]; - [self.executiveAbstractRegard addSubview:self.furthaerBtuton]; -} - -- (void)initChildLyRestrictions { - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(15); - make.top.mas_equalTo(self.contentView); - make.bottom.mas_equalTo(self.contentView).offset(-15); - }]; - - [self.executiveAbstractRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.encourageRegard); - make.height.mas_equalTo(74); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(64, 64)); - make.left.top.mas_equalTo(self.executiveAbstractRegard).offset(10); - }]; - - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(6); - make.right.mas_lessThanOrEqualTo(self.furthaerBtuton.mas_left).offset(-5); - }]; - - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.monicerSequencignation); - make.top.mas_equalTo(self.monicerSequencignation.mas_bottom).offset(6); - }]; - - [self.furthaerBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.encourageRegard).offset(-5); - make.top.mas_equalTo(self.encourageRegard).offset(10); - make.width.height.mas_equalTo(30); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageRegard).offset(10); - make.top.mas_equalTo(self.executiveAbstractRegard.mas_bottom).offset(15); - }]; - - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.encourageRegard); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(6); - }]; - - [self.parrotRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.encourageRegard).offset(-5); - make.top.mas_equalTo(self.furthaerBtuton.mas_bottom).offset(0); - }]; -} - -#pragma mark - UICollectionViewCellDelegate And UICollectionViewDatasource -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.executiveAbstract.roomList.count; -} - --(__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMIUnionSensationalManagementChamberAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIUnionSensationalManagementChamberAssembletionRegardElement class]) forIndexPath:indexPath]; - UnionChamberAbstractMatrix * roomInfo = [self.executiveAbstract.roomList secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.roomInfo = roomInfo; - return cell; -} - -#pragma mark - FBCUnionSensationalManagementMenuRegardRepresendtation -- (void)yUMIUnionSenstowardsionalManagementParrotRegard:(YUMIUnionSensationalManagementParrotRegard *)view didClickType:(UnionSuperAdminParrotGenre)memuType { - self.parrotRegard.hidden = YES; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIUnionSenstowardsionalManagementSetTarbsultowardsionViweElement:didChooseType:)]) { - [self.delegate yUMIUnionSenstowardsionalManagementSetTarbsultowardsionViweElement:self.executiveAbstract didChooseType:memuType]; - } -} - -#pragma mark - Event Response -- (void)furthaerBtutonBtutonPerformance:(UIButton *)sender { - self.parrotRegard.hidden = !self.parrotRegard.hidden; -} - -#pragma mark - Getters And Setters -- (void)setExecutiveAbstract:(UnionSensationalManagementAbstractMatrix *)executiveAbstract { - _executiveAbstract = executiveAbstract; - if (_executiveAbstract) { - self.intelligenceportraitIndicateRegard.imageUrl = _executiveAbstract.avatar; - self.monicerSequencignation.text= _executiveAbstract.nick; - self.idSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Guild_Super_Admin_Set_Table_View_Cell_0"), _executiveAbstract.erbanNo]; - [self.collectionView reloadData]; - } -} - -- (UIView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIView alloc] init]; - _encourageRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _encourageRegard.layer.masksToBounds = YES; - _encourageRegard.layer.cornerRadius = 10; - } - return _encourageRegard; -} - -- (UIView *)executiveAbstractRegard { - if (!_executiveAbstractRegard) { - _executiveAbstractRegard = [[UIView alloc] init]; - _executiveAbstractRegard.backgroundColor = [UIColor clearColor]; - } - return _executiveAbstractRegard; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 64/2; - _intelligenceportraitIndicateRegard.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - _intelligenceportraitIndicateRegard.layer.borderWidth = 1; - } - return _intelligenceportraitIndicateRegard; -} -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:18]; - _monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _monicerSequencignation; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.font = [UIFont systemFontOfSize:12]; - _idSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _idSequencignation; -} - -- (UIButton *)furthaerBtuton { - if (!_furthaerBtuton) { - _furthaerBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_furthaerBtuton setImage:[UIImage imageNamed:@"yumi_center_guild_super_admin_more"] forState:UIControlStateNormal]; - [_furthaerBtuton setImage:[UIImage imageNamed:@"yumi_center_guild_super_admin_more"] forState:UIControlStateSelected]; - [_furthaerBtuton addTarget:self action:@selector(furthaerBtutonBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _furthaerBtuton; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Guild_Super_Admin_Set_Table_View_Cell_1"); - _titleLabel.font = [UIFont systemFontOfSize:14]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -- (UICollectionView *)collectionView{ - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; - layout.minimumLineSpacing = 10; - layout.itemSize = CGSizeMake(60, 80); - layout.sectionInset = UIEdgeInsetsMake(0, 10, 0, 10); - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.backgroundColor = [UIColor whiteColor]; - [_collectionView registerClass:[YUMIUnionSensationalManagementChamberAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIUnionSensationalManagementChamberAssembletionRegardElement class])]; - } - return _collectionView; -} - -- (YUMIUnionSensationalManagementParrotRegard *)parrotRegard { - if (!_parrotRegard) { - _parrotRegard = [[YUMIUnionSensationalManagementParrotRegard alloc] init]; - _parrotRegard.delegate = self; - _parrotRegard.hidden = YES; - } - return _parrotRegard; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/XPClanMemberTableViewCell.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/XPClanMemberTableViewCell.h new file mode 100644 index 00000000..fc6cc875 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/XPClanMemberTableViewCell.h @@ -0,0 +1,38 @@ +// +// XPClanMemberTableViewCell.h +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import +#import "ClanMemberDetailInfoModel.h" +NS_ASSUME_NONNULL_BEGIN +@class XPClanMemberTableViewCell; + +typedef NS_ENUM(NSInteger, ClanMemberTableViewCellType) { + ClanMemberTableViewCellType_Normal = 0, + ///移除公会成员 + ClanMemberTableViewCellType_Remove_Member, + ///高管设置 + ClanMemberTableViewCellType_Manager_Set, + ///增减高管 + ClanMemberTableViewCellType_Manager_Add_Remove, +}; + +@protocol XPClanMemberTableViewCellDelegate +///点击了某个人 +- (void)xPClanMemberTableViewCell:(XPClanMemberTableViewCell *)view didClickUser:(ClanMemberInfoModel *)userinfo; + +@end + +@interface XPClanMemberTableViewCell : UITableViewCell +///代理 +@property (nonatomic,weak) id delegate; +@property (nonatomic,assign) ClanMemberTableViewCellType cellType; +///是否是最后的一个 +@property (nonatomic,assign) BOOL isLast; +@property (nonatomic,strong) ClanMemberInfoModel *memberInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/XPClanMemberTableViewCell.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/XPClanMemberTableViewCell.m new file mode 100644 index 00000000..921c870c --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/XPClanMemberTableViewCell.m @@ -0,0 +1,469 @@ +// +// XPClanMemberTableViewCell.m +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import "XPClanMemberTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "UIImage+Utils.h" +#import "UIButton+EnlargeTouchArea.h" +///Model +#import "ClanMemberDetailInfoModel.h" + +@interface XPClanMemberTableViewCell () +///背景色 +@property (nonatomic,strong) UIView * backView; +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///头像的边框 +@property (nonatomic,strong) UIImageView *avatarBorderView; +///角色 +@property (nonatomic,strong) UIButton *roleButon; +///昵称的容器 +@property (nonatomic,strong) UIStackView *nickStackView; +///x姓名 +@property (nonatomic,strong) UILabel *nickLabel; +///id +@property (nonatomic,strong) UILabel *idLabel; +///性别 +@property (nonatomic,strong) UIImageView *sexImageView; +///魅力等级 +@property (nonatomic,strong) NetImageView *charmImageView; +///等级 +@property (nonatomic,strong) NetImageView *experImageView; +///所属公会 +@property (nonatomic,strong) UILabel *guildNickLabel; +@property (nonatomic,strong) CAShapeLayer *shapeLayer; +///右边按钮的 +@property (nonatomic,strong) UIButton *rightButton; +@end + +@implementation XPClanMemberTableViewCell +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.backView]; + [self.backView addSubview:self.avatarBorderView]; + [self.backView addSubview:self.avatarImageView]; + [self.backView addSubview:self.roleButon]; + [self.backView addSubview:self.nickStackView]; + [self.backView addSubview:self.idLabel]; + [self.backView addSubview:self.guildNickLabel]; + [self.backView addSubview:self.rightButton]; + + [self.nickStackView addArrangedSubview:self.nickLabel]; + [self.nickStackView addArrangedSubview:self.sexImageView]; + [self.nickStackView addArrangedSubview:self.experImageView]; + [self.nickStackView addArrangedSubview:self.charmImageView]; +} + +- (void)initSubViewConstraints { + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + make.top.bottom.mas_equalTo(self.contentView); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(54, 54)); + make.centerY.mas_equalTo(self.contentView); + make.left.mas_equalTo(self.backView).offset(9); + }]; + + [self.avatarBorderView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(57, 57)); + make.center.mas_equalTo(self.avatarImageView); + }]; + + [self.roleButon mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(17); + make.width.mas_equalTo(28); + make.bottom.mas_equalTo(self.avatarBorderView); + make.centerX.mas_equalTo(self.avatarImageView); + }]; + [self.sexImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(2); + make.height.width.mas_equalTo(18); + make.bottom.mas_equalTo(0); + }]; + [self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(24); + }]; + + [self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(24); + }]; + + [self.nickStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(6); + make.height.mas_equalTo(20); + make.bottom.mas_equalTo(self.avatarImageView.mas_centerY).offset(-3); + }]; + + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nickLabel); + make.top.mas_equalTo(self.avatarImageView.mas_centerY).offset(3); + }]; + + [self.guildNickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.backView).offset(-15); + make.centerY.mas_equalTo(self.idLabel); + }]; + + [self.rightButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20, 20)); + make.centerY.mas_equalTo(self.backView); + make.right.mas_equalTo(self.backView).offset(-15); + }]; +} + +#pragma mark - Event Response +- (void)rightButtonAction:(UIButton *)sender { + sender.selected = !sender.selected; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPClanMemberTableViewCell:didClickUser:)]) { + [self.delegate xPClanMemberTableViewCell:self didClickUser:self.memberInfo]; + } +} + +#pragma mark - Getters And Setters +- (void)setMemberInfo:(ClanMemberInfoModel *)memberInfo { + _memberInfo = memberInfo; + if (_memberInfo) { + self.avatarImageView.imageUrl = _memberInfo.avatar; + NSString * nick = _memberInfo.nick; + if (nick.length > 8) { + nick = [NSString stringWithFormat:@"%@...", [nick substringToIndex:8]]; + } + self.nickLabel.text = nick; + self.sexImageView.image = _memberInfo.gender == GenderType_Female ? [UIImage imageNamed:@"common_female"] : [UIImage imageNamed:@"common_male"]; + if (_memberInfo.experUrl) { + if (self.experImageView.state == NetImageStateLoaded) { + self.experImageView.imageUrl = _memberInfo.experUrl; + CGFloat kImageScale = self.experImageView.image.size.width / self.experImageView.image.size.height; + CGFloat imageWidth = 20 * kImageScale; + [self.experImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(imageWidth); + }]; + } else { + @kWeakify(self); + [self.experImageView loadImageWithUrl:_memberInfo.experUrl completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) { + @kStrongify(self); + self.experImageView.image = image; + CGFloat kImageScale = image.size.width / image.size.height; + CGFloat imageWidth = 20 * kImageScale; + [self.experImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(imageWidth); + }]; + }]; + } + } + self.experImageView.hidden = _memberInfo.experUrl.length <= 0; + + if (_memberInfo.charmUrl) { + if (self.charmImageView.state == NetImageStateLoaded) { + self.charmImageView.imageUrl = _memberInfo.charmUrl; + CGFloat kImageScale = self.charmImageView.image.size.width / self.charmImageView.image.size.height; + CGFloat imageWidth = 20 * kImageScale; + [self.charmImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(imageWidth); + }]; + } else { + @kWeakify(self); + [self.charmImageView loadImageWithUrl:_memberInfo.charmUrl completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) { + @kStrongify(self); + self.charmImageView.image = image; + CGFloat kImageScale = image.size.width / image.size.height; + CGFloat imageWidth = 20 * kImageScale; + [self.charmImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(imageWidth); + }]; + }]; + } + } + self.charmImageView.hidden = _memberInfo.charmUrl.length <= 0; + self.idLabel.text = [NSString stringWithFormat:@"ID:%@", _memberInfo.erbanNo]; + NSString * hallName = _memberInfo.hallName; + if (hallName.length > 5) { + hallName = [NSString stringWithFormat:@"%@...", [hallName substringToIndex:5]]; + } + self.guildNickLabel.text = hallName; + UIColor * avatarBoderColor; + UIColor * roleGradStartColor; + UIColor * roleGradEndColor; + NSString * roleTitle; + CGFloat roleWidth = 45; + switch (_memberInfo.roleType) { + case GuildRoleType_Elder: + roleTitle = YMLocalizedString(@"XPClanMemberTableViewCell0"); + avatarBoderColor = UIColorFromRGB(0xFFD755); + roleGradStartColor = UIColorFromRGB(0xFF5357); + roleGradEndColor = UIColorFromRGB(0xFFC919); + roleWidth= 45; + break; + case GuildRoleType_Elder_Owner: + roleTitle = YMLocalizedString(@"XPClanMemberTableViewCell1"); + avatarBoderColor = UIColorFromRGB(0xFFD755); + roleGradStartColor = UIColorFromRGB(0xFF5357); + roleGradEndColor = UIColorFromRGB(0xFFC919); + roleWidth = 66; + break; + case GuildRoleType_Owner: + roleTitle = YMLocalizedString(@"XPClanMemberTableViewCell2"); + avatarBoderColor = UIColorFromRGB(0xF86868); + roleGradEndColor = UIColorFromRGB(0xF86868); + roleGradStartColor = UIColorFromRGB(0xF6A945); + roleWidth = 45; + break; + case GuildRoleType_Normal: + roleTitle = @""; + break; + case GuildRoleType_Manager: + roleTitle = YMLocalizedString(@"XPClanMemberTableViewCell3"); + avatarBoderColor = UIColorFromRGB(0x248CFE); + roleGradStartColor = UIColorFromRGB(0x5092FE); + roleGradEndColor = UIColorFromRGB(0x6A10B5); + roleWidth = 58; + break; + case GuildRoleType_Super_Admin: + roleTitle = YMLocalizedString(@"XPClanMemberTableViewCell4"); + avatarBoderColor = UIColorFromRGB(0x7727E4); + roleGradStartColor = UIColorFromRGB(0x5092FE); + roleGradEndColor = UIColorFromRGB(0x6A10B5); + roleWidth = 58; + break; + + default: + break; + } + if (roleTitle.length > 0) { + self.roleButon.hidden = NO; + self.avatarBorderView.hidden = NO; + [self.roleButon setTitle:roleTitle forState:UIControlStateNormal]; + self.avatarBorderView.layer.borderColor = avatarBoderColor.CGColor; + [self.roleButon setBackgroundImage:[UIImage gradientColorImageFromColors:@[roleGradStartColor, roleGradEndColor] gradientType:GradientTypeUpleftToLowright imgSize:CGSizeMake(roleWidth, 17)] forState:UIControlStateNormal]; + [self.roleButon mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(roleWidth); + }]; + } else { + self.avatarBorderView.hidden = YES; + self.roleButon.hidden = YES; + } + + if (_memberInfo.roleType == GuildRoleType_Owner || _memberInfo.roleType == GuildRoleType_Elder_Owner || _memberInfo.roleType == GuildRoleType_Super_Admin) { + self.rightButton.hidden = YES; + } + + if (_cellType == ClanMemberTableViewCellType_Manager_Add_Remove) { + self.rightButton.selected = _memberInfo.roleType == GuildRoleType_Manager; + } + } +} + +- (void)setCellType:(ClanMemberTableViewCellType)cellType { + _cellType = cellType; + switch (_cellType) { + case ClanMemberTableViewCellType_Normal: + { + [self.backView mas_updateConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + }]; + self.rightButton.hidden = YES; + } + break; + case ClanMemberTableViewCellType_Remove_Member: + { + [self.backView mas_updateConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(0); + }]; + self.rightButton.hidden = NO; + [self.rightButton setImage:[UIImage imageNamed:@"mine_guild_guild_remove_member"] forState:UIControlStateNormal]; + [self.rightButton setImage:[UIImage imageNamed:@"mine_guild_guild_remove_member"] forState:UIControlStateSelected]; + } + break; + case ClanMemberTableViewCellType_Manager_Set: + { + [self.backView mas_updateConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(0); + }]; + self.rightButton.hidden = NO; + [self.rightButton setImage:[UIImage imageNamed:@"room_setting_arrow"] forState:UIControlStateNormal]; + [self.rightButton setImage:[UIImage imageNamed:@"room_setting_arrow"] forState:UIControlStateSelected]; + } + break; + case ClanMemberTableViewCellType_Manager_Add_Remove: + { + [self.backView mas_updateConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(0); + }]; + self.rightButton.hidden = NO; + self.backView.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; + [self.rightButton setImage:[UIImage imageNamed:@"mine_guild_guild_manager_normal"] forState:UIControlStateNormal]; + [self.rightButton setImage:[UIImage imageNamed:@"mine_guild_guild_manager_select"] forState:UIControlStateSelected]; + } + break; + default: + break; + } +} + +- (void)setIsLast:(BOOL)isLast { + _isLast = isLast; + if (_isLast) { + self.backView.layer.mask = self.shapeLayer; + } else { + self.backView.layer.mask = nil; + } +} + +- (UIView *)backView { + if (!_backView) { + _backView = [[UIView alloc] init]; + _backView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _backView.layer.masksToBounds = YES; + } + return _backView; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 54/2; + _avatarImageView.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + } + return _avatarImageView; +} + +- (UIButton *)roleButon { + if (!_roleButon) { + _roleButon = [UIButton buttonWithType:UIButtonTypeCustom]; + [_roleButon setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _roleButon.titleLabel.font = [UIFont systemFontOfSize:12]; + _roleButon.layer.masksToBounds = YES; + _roleButon.layer.cornerRadius = 17.0 / 2.0; + } + return _roleButon; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.font = [UIFont systemFontOfSize:12]; + _idLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _idLabel; +} + +- (UIStackView *)nickStackView { + if (!_nickStackView) { + _nickStackView = [[UIStackView alloc] init]; + _nickStackView.axis = UILayoutConstraintAxisHorizontal; + _nickStackView.distribution = UIStackViewDistributionFill; + _nickStackView.alignment = UIStackViewAlignmentFill; + _nickStackView.spacing = 7; + } + return _nickStackView; +} + + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:18]; + _nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _nickLabel; +} + +- (UIImageView *)sexImageView { + if (!_sexImageView) { + _sexImageView = [[UIImageView alloc] init]; + _sexImageView.userInteractionEnabled = YES; + } + return _sexImageView; +} + +- (NetImageView *)experImageView { + if (!_experImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserCardLevel; + _experImageView = [[NetImageView alloc] initWithConfig:config]; + _experImageView.userInteractionEnabled = YES; + _experImageView.hidden = YES; + _experImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _experImageView; +} + +- (NetImageView *)charmImageView { + if (!_charmImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserCardLevel; + _charmImageView = [[NetImageView alloc] initWithConfig:config]; + _charmImageView.userInteractionEnabled = YES; + _charmImageView.hidden = YES; + _charmImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _charmImageView; +} + +- (UILabel *)guildNickLabel { + if (!_guildNickLabel) { + _guildNickLabel = [[UILabel alloc] init]; + _guildNickLabel.font = [UIFont systemFontOfSize:13]; + _guildNickLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _guildNickLabel; +} + +- (UIImageView *)avatarBorderView { + if (!_avatarBorderView) { + _avatarBorderView = [[UIImageView alloc] init]; + _avatarBorderView.userInteractionEnabled = YES; + _avatarBorderView.layer.masksToBounds = YES; + _avatarBorderView.layer.cornerRadius = 57 / 2; + _avatarBorderView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _avatarBorderView.layer.borderWidth = 1; + } + return _avatarBorderView; +} + +- (CAShapeLayer *)shapeLayer { + if (!_shapeLayer) { + _shapeLayer = [CAShapeLayer layer]; + _shapeLayer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth - 15 * 2, 66) byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(12, 12)].CGPath; + } + return _shapeLayer; +} + + +- (UIButton *)rightButton { + if (!_rightButton) { + _rightButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_rightButton addTarget:self action:@selector(rightButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_rightButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + } + return _rightButton; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/XPClanRoomCollectionViewCell.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/XPClanRoomCollectionViewCell.h new file mode 100644 index 00000000..497da28c --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/XPClanRoomCollectionViewCell.h @@ -0,0 +1,16 @@ +// +// XPClanRoomCollectionViewCell.h +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class GuildInfoModel; +@interface XPClanRoomCollectionViewCell : UICollectionViewCell +@property (nonatomic,strong) GuildInfoModel *guildInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/XPClanRoomCollectionViewCell.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/XPClanRoomCollectionViewCell.m new file mode 100644 index 00000000..0b54b652 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/XPClanRoomCollectionViewCell.m @@ -0,0 +1,86 @@ +// +// XPClanRoomCollectionViewCell.m +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import "XPClanRoomCollectionViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "UIImage+Utils.h" +///Model +#import "GuildInfoModel.h" + +@interface XPClanRoomCollectionViewCell () +///房间头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///标题 +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPClanRoomCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.mas_equalTo(self.contentView); + make.height.mas_equalTo(60); + make.width.mas_equalTo(60); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.avatarImageView.mas_bottom).offset(6); + }]; +} + +#pragma mark - Getters And Setters +- (void)setGuildInfo:(GuildInfoModel *)guildInfo { + _guildInfo = guildInfo; + if (_guildInfo) { + self.avatarImageView.imageUrl = _guildInfo.ownerAvatar; + self.titleLabel.text = _guildInfo.hallName; + } +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.contentMode = UIViewContentModeScaleAspectFill; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 8; + } + return _avatarImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.font = [UIFont systemFontOfSize:13]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/XPGuildEmptyCollectionViewCell.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/XPGuildEmptyCollectionViewCell.h new file mode 100644 index 00000000..1a5d4d88 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/XPGuildEmptyCollectionViewCell.h @@ -0,0 +1,17 @@ +// +// XPGuildEmptyCollectionViewCell.h +// YuMi +// +// Created by YuMi on 2022/4/12. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPGuildEmptyCollectionViewCell : UICollectionViewCell +-(void)setConstraints; +-(void)setTitle:(NSString *)title; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/XPGuildEmptyCollectionViewCell.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/XPGuildEmptyCollectionViewCell.m new file mode 100644 index 00000000..0b609481 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/XPGuildEmptyCollectionViewCell.m @@ -0,0 +1,79 @@ +// +// XPGuildEmptyCollectionViewCell.m +// YuMi +// +// Created by YuMi on 2022/4/12. +// + +#import "XPGuildEmptyCollectionViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImageConstant.h" + +@interface XPGuildEmptyCollectionViewCell () +@property (nonatomic,strong) UIImageView *emptyImageView; +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPGuildEmptyCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +-(void)setTitle:(NSString *)title{ + _titleLabel.text = title; +} +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.emptyImageView]; + [self.contentView addSubview:self.titleLabel]; +} +-(void)setConstraints{ + [self.emptyImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.contentView).offset(kGetScaleWidth(90)); + }]; +} +- (void)initSubViewConstraints { + [self.emptyImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.contentView).offset(150); + make.size.mas_equalTo(CGSizeMake(100, 100)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.emptyImageView.mas_bottom).offset(20); + make.left.right.mas_equalTo(self.contentView); + }]; +} +#pragma mark - Getters And Setters +- (UIImageView *)emptyImageView { + if (!_emptyImageView) { + _emptyImageView = [[UIImageView alloc] init]; + _emptyImageView.userInteractionEnabled = YES; + _emptyImageView.image = [UIImageConstant defalutEmptyPlaceholder]; + _emptyImageView.layer.masksToBounds = YES; + _emptyImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _emptyImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPGuildEmptyCollectionViewCell0"); + _titleLabel.font = [UIFont systemFontOfSize:16]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/XPMineGuildEmptyTableViewCell.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/XPMineGuildEmptyTableViewCell.h new file mode 100644 index 00000000..26a5581c --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/XPMineGuildEmptyTableViewCell.h @@ -0,0 +1,16 @@ +// +// XPMineGuildEmptyTableViewCell.h +// YuMi +// +// Created by YuMi on 2022/4/7. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineGuildEmptyTableViewCell : UITableViewCell +@property (nonatomic,copy) NSString *emptyTitle; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/XPMineGuildEmptyTableViewCell.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/XPMineGuildEmptyTableViewCell.m new file mode 100644 index 00000000..88aa3020 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/XPMineGuildEmptyTableViewCell.m @@ -0,0 +1,78 @@ +// +// XPMineGuildEmptyTableViewCell.m +// YuMi +// +// Created by YuMi on 2022/4/7. +// + +#import "XPMineGuildEmptyTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImageConstant.h" + +@interface XPMineGuildEmptyTableViewCell () +@property (nonatomic,strong) UIImageView *emptyImageView; +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPMineGuildEmptyTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.emptyImageView]; + [self.contentView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.emptyImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.contentView).offset(150); + make.centerX.mas_equalTo(self.contentView); + make.size.mas_equalTo(CGSizeMake(200, 200)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.emptyImageView.mas_bottom).offset(20); + make.left.right.mas_equalTo(self.contentView); + }]; +} +#pragma mark - Getters And Setters +- (void)setEmptyTitle:(NSString *)emptyTitle { + _emptyTitle = emptyTitle; + if (_emptyTitle) { + self.titleLabel.text = _emptyTitle; + } +} + +- (UIImageView *)emptyImageView { + if (!_emptyImageView) { + _emptyImageView = [[UIImageView alloc] init]; + _emptyImageView.userInteractionEnabled = YES; + _emptyImageView.image = [UIImageConstant defalutEmptyPlaceholder]; + _emptyImageView.layer.masksToBounds = YES; + _emptyImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _emptyImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPMineGuildEmptyTableViewCell0"); + _titleLabel.font = [UIFont systemFontOfSize:16]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _titleLabel; +} +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/XPMineGuildSearchMemberTableViewCell.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/XPMineGuildSearchMemberTableViewCell.h new file mode 100644 index 00000000..9150a109 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/XPMineGuildSearchMemberTableViewCell.h @@ -0,0 +1,24 @@ +// +// XPMineGuildSearchMemberTableViewCell.h +// YuMi +// +// Created by YuMi on 2022/4/8. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class GuildSearchUserInfoModel, XPMineGuildSearchMemberTableViewCell; +@protocol XPMineGuildSearchMemberTableViewCellDelegate + +- (void)xPMineGuildSearchMemberTableViewCell:(XPMineGuildSearchMemberTableViewCell *)view didSelectInfo:(GuildSearchUserInfoModel *)userInfo; + +@end +@interface XPMineGuildSearchMemberTableViewCell : UITableViewCell +///用户信息 +@property (nonatomic,strong) GuildSearchUserInfoModel *userInfo; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/XPMineGuildSearchMemberTableViewCell.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/XPMineGuildSearchMemberTableViewCell.m new file mode 100644 index 00000000..efcac901 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Cell/XPMineGuildSearchMemberTableViewCell.m @@ -0,0 +1,209 @@ +// +// XPMineGuildSearchMemberTableViewCell.m +// YuMi +// +// Created by YuMi on 2022/4/8. +// + +#import "XPMineGuildSearchMemberTableViewCell.h" +///Third +#import +///Tool +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +///Model +#import "GuildSearchUserInfoModel.h" +UIKIT_EXTERN NSString *kInviteMemeberSuccess; +@interface XPMineGuildSearchMemberTableViewCell () +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///显示性别 +@property (nonatomic,strong) UIImageView *sexImageView; +///显示id +@property (nonatomic,strong) UILabel *idLabel; +///邀请 +@property (nonatomic,strong) UIButton *inviteButton; + +@end + +@implementation XPMineGuildSearchMemberTableViewCell +-(void)dealloc{ + [[NSNotificationCenter defaultCenter]removeObserver:self]; +} +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.nickLabel]; + [self.contentView addSubview:self.sexImageView]; + [self.contentView addSubview:self.idLabel]; + [self.contentView addSubview:self.inviteButton]; + [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(inviteMemeberSuccess:) name:kInviteMemeberSuccess object:nil]; +} +-(void)inviteMemeberSuccess:(NSNotification *)not{ + NSString *targetUid = not.object; + if([targetUid isEqualToString:self.userInfo.uid]){ + self.userInfo.hallBtnStatus = 5; + [self.inviteButton setTitle:YMLocalizedString(@"XPMineGuildSearchMemberTableViewCell2") forState:UIControlStateNormal]; + self.inviteButton.backgroundColor = UIColorFromRGB(0xE6E6F0); + [self.inviteButton setTitleColor:UIColorFromRGB(0xB3B3C3) forState:UIControlStateNormal]; + [self.inviteButton setBackgroundImage:nil forState:UIControlStateNormal]; + self.inviteButton.hidden = NO; + } +} +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(50, 50)); + make.centerY.mas_equalTo(self.contentView); + make.left.mas_equalTo(self.contentView).offset(12); + }]; + + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(8); + make.height.mas_equalTo(17); + make.top.mas_equalTo(21); + }]; + + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nickLabel); + make.top.mas_equalTo(45); + make.height.mas_equalTo(14); + }]; + + [self.sexImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nickLabel.mas_right).offset(6); + make.centerY.mas_equalTo(self.nickLabel); + make.size.mas_equalTo(CGSizeMake(14, 14)); + }]; + + [self.inviteButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(83, 30)); + make.centerY.mas_equalTo(self.contentView); + make.right.mas_equalTo(self.contentView).offset(-15); + }]; + + +} + +#pragma mark - Event Response +- (void)inviteButtonAction:(UIButton *)sender { + if(self.userInfo.hallBtnStatus == 5)return; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineGuildSearchMemberTableViewCell:didSelectInfo:)]) { + [self.delegate xPMineGuildSearchMemberTableViewCell:self didSelectInfo:self.userInfo]; + } +} + +#pragma mark - Getters And Setters +- (void)setUserInfo:(GuildSearchUserInfoModel *)userInfo { + _userInfo = userInfo; + if (_userInfo) { + self.avatarImageView.imageUrl = _userInfo.avatar; + self.sexImageView.image = _userInfo.gender == GenderType_Female ? [UIImage imageNamed:@"common_female"] : [UIImage imageNamed:@"common_male"]; + self.nickLabel.text = _userInfo.nick; + self.idLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPMineGuildSearchMemberTableViewCell0"), _userInfo.erbanNo]; + switch (_userInfo.hallBtnStatus) { + case 0: + { + _inviteButton.hidden = YES; + break; + } + case 4: + { + [_inviteButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _inviteButton.backgroundColor = [UIColor clearColor]; + [_inviteButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_inviteButton setTitle:YMLocalizedString(@"XPMineGuildSearchMemberTableViewCell1") forState:UIControlStateNormal]; + _inviteButton.hidden = NO; + break; + } + case 5: + { + [_inviteButton setTitle:YMLocalizedString(@"XPMineGuildSearchMemberTableViewCell3") forState:UIControlStateNormal]; + _inviteButton.backgroundColor = UIColorFromRGB(0xE6E6F0); + [_inviteButton setTitleColor:UIColorFromRGB(0xB3B3C3) forState:UIControlStateNormal]; + [_inviteButton setBackgroundImage:nil forState:UIControlStateNormal]; + _inviteButton.hidden = NO; + break; + } + case 6: + { + [_inviteButton setTitle:YMLocalizedString(@"XPMineGuildSearchMemberTableViewCell2") forState:UIControlStateNormal]; + _inviteButton.backgroundColor = UIColorFromRGB(0xFFBC51); + [_inviteButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_inviteButton setBackgroundImage:nil forState:UIControlStateNormal]; + _inviteButton.hidden = NO; + break; + } + default: + break; + } + } +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 25; + _avatarImageView.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + } + return _avatarImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:15]; + _nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _nickLabel; +} + +- (UIImageView *)sexImageView { + if (!_sexImageView) { + _sexImageView = [[UIImageView alloc] init]; + _sexImageView.userInteractionEnabled = YES; + } + return _sexImageView; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.font = [UIFont systemFontOfSize:10]; + _idLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _idLabel; +} + +- (UIButton *)inviteButton { + if (!_inviteButton) { + _inviteButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_inviteButton setTitle:YMLocalizedString(@"XPMineGuildSearchMemberTableViewCell1") forState:UIControlStateNormal]; + [_inviteButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _inviteButton.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + [_inviteButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _inviteButton.layer.masksToBounds = YES; + _inviteButton.layer.cornerRadius = 15; + [_inviteButton addTarget:self action:@selector(inviteButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _inviteButton; +} + + + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMICollectiveChamberAssembletionRegardElement.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMICollectiveChamberAssembletionRegardElement.h deleted file mode 100644 index da998849..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMICollectiveChamberAssembletionRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMICollectiveChamberAssembletionRegardElement.h -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class UnionAbstractMatrix; -@interface YUMICollectiveChamberAssembletionRegardElement : UICollectionViewCell -@property (nonatomic,strong) UnionAbstractMatrix *guildInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMICollectiveChamberAssembletionRegardElement.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMICollectiveChamberAssembletionRegardElement.m deleted file mode 100644 index 0dda9beb..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMICollectiveChamberAssembletionRegardElement.m +++ /dev/null @@ -1,81 +0,0 @@ -// -// YUMICollectiveChamberAssembletionRegardElement.m -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import "YUMICollectiveChamberAssembletionRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "UIImage+Utils.h" -#import "UnionAbstractMatrix.h" - -@interface YUMICollectiveChamberAssembletionRegardElement () -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@end - -@implementation YUMICollectiveChamberAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.top.mas_equalTo(self.contentView); - make.height.mas_equalTo(60); - make.width.mas_equalTo(60); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_bottom).offset(6); - }]; -} - -#pragma mark - Getters And Setters -- (void)setGuildInfo:(UnionAbstractMatrix *)guildInfo { - _guildInfo = guildInfo; - if (_guildInfo) { - self.intelligenceportraitIndicateRegard.imageUrl = _guildInfo.ownerAvatar; - self.titleLabel.text = _guildInfo.hallName; - } -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 8; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.font = [UIFont systemFontOfSize:13]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMICollectiveComponentTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMICollectiveComponentTabulationRegardElement.h deleted file mode 100644 index ef3ceb24..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMICollectiveComponentTabulationRegardElement.h +++ /dev/null @@ -1,35 +0,0 @@ -// -// YUMICollectiveComponentTabulationRegardElement.h -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import -#import "CollectiveComponentSpecificAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN -@class YUMICollectiveComponentTabulationRegardElement; - -typedef NS_ENUM(NSInteger, ClanMemberTableRegardCellGenre) { - ClanMemberTableRegardCellGenre_Normal = 0, - - ClanMemberTableRegardCellGenre_Remove_Member, - - ClanMemberTableRegardCellGenre_Manager_Set, - - ClanMemberTableRegardCellGenre_Manager_Add_Remove, -}; - -@protocol FBCCollectiveMemberTabulationViweElementRepresendtation -- (void)yUMICollectiveComponentTarbsultowardsionViweElement:(YUMICollectiveComponentTabulationRegardElement *)view didClickUser:(CollectiveComponentAbstractMatrix *)userinfo; - -@end - -@interface YUMICollectiveComponentTabulationRegardElement : UITableViewCell -@property (nonatomic,weak) id delegate; -@property (nonatomic,assign) ClanMemberTableRegardCellGenre cellType; -@property (nonatomic,assign) BOOL isRecent; -@property (nonatomic,strong) CollectiveComponentAbstractMatrix *componentAbstract; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMICollectiveComponentTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMICollectiveComponentTabulationRegardElement.m deleted file mode 100644 index 9465abd9..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMICollectiveComponentTabulationRegardElement.m +++ /dev/null @@ -1,454 +0,0 @@ -// -// YUMICollectiveComponentTabulationRegardElement.m -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import "YUMICollectiveComponentTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "UIImage+Utils.h" -#import "UIButton+EnlargeTouchArea.h" -#import "CollectiveComponentSpecificAbstractMatrix.h" - -@interface YUMICollectiveComponentTabulationRegardElement () -@property (nonatomic,strong) UIView * encourageRegard; -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UIImageView *intelligenceportraitBorderRegard; -@property (nonatomic,strong) UIButton *roleBtuton; -@property (nonatomic,strong) UIStackView *monicerHierarchyRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UILabel *idSequencignation; -@property (nonatomic,strong) UIImageView *seaxualityIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *fascinationIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *experIndicateRegard; -@property (nonatomic,strong) UILabel *guildMonicerSequencignation; -@property (nonatomic,strong) CAShapeLayer *shapeLayer; -@property (nonatomic,strong) UIButton *rightButton; -@end - -@implementation YUMICollectiveComponentTabulationRegardElement -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.encourageRegard]; - [self.encourageRegard addSubview:self.intelligenceportraitBorderRegard]; - [self.encourageRegard addSubview:self.intelligenceportraitIndicateRegard]; - [self.encourageRegard addSubview:self.roleBtuton]; - [self.encourageRegard addSubview:self.monicerHierarchyRegard]; - [self.encourageRegard addSubview:self.idSequencignation]; - [self.encourageRegard addSubview:self.guildMonicerSequencignation]; - [self.encourageRegard addSubview:self.rightButton]; - - [self.monicerHierarchyRegard addArrangedSubview:self.monicerSequencignation]; - [self.monicerHierarchyRegard addArrangedSubview:self.seaxualityIndicateRegard]; - [self.monicerHierarchyRegard addArrangedSubview:self.experIndicateRegard]; - [self.monicerHierarchyRegard addArrangedSubview:self.fascinationIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(15); - make.top.bottom.mas_equalTo(self.contentView); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(54, 54)); - make.centerY.mas_equalTo(self.contentView); - make.left.mas_equalTo(self.encourageRegard).offset(9); - }]; - - [self.intelligenceportraitBorderRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(57, 57)); - make.center.mas_equalTo(self.intelligenceportraitIndicateRegard); - }]; - - [self.roleBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(17); - make.width.mas_equalTo(28); - make.bottom.mas_equalTo(self.intelligenceportraitBorderRegard); - make.centerX.mas_equalTo(self.intelligenceportraitIndicateRegard); - }]; - [self.seaxualityIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(2); - make.height.width.mas_equalTo(18); - make.bottom.mas_equalTo(0); - }]; - [self.experIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(24); - }]; - - [self.fascinationIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(24); - }]; - - [self.monicerHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(6); - make.height.mas_equalTo(20); - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(-3); - }]; - - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.monicerSequencignation); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(3); - }]; - - [self.guildMonicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.encourageRegard).offset(-15); - make.centerY.mas_equalTo(self.idSequencignation); - }]; - - [self.rightButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20, 20)); - make.centerY.mas_equalTo(self.encourageRegard); - make.right.mas_equalTo(self.encourageRegard).offset(-15); - }]; -} - -#pragma mark - Event Response -- (void)rectifyBtutonPerformance:(UIButton *)sender { - sender.selected = !sender.selected; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMICollectiveComponentTarbsultowardsionViweElement:didClickUser:)]) { - [self.delegate yUMICollectiveComponentTarbsultowardsionViweElement:self didClickUser:self.componentAbstract]; - } -} - -#pragma mark - Getters And Setters -- (void)setComponentAbstract:(CollectiveComponentAbstractMatrix *)componentAbstract { - _componentAbstract = componentAbstract; - if (_componentAbstract) { - self.intelligenceportraitIndicateRegard.imageUrl = _componentAbstract.avatar; - NSString * nick = _componentAbstract.nick; - if (nick.length > 8) { - nick = [NSString stringWithFormat:@"%@...", [nick substringToIndex:8]]; - } - self.monicerSequencignation.text = nick; - self.seaxualityIndicateRegard.image = _componentAbstract.gender == GenderGenre_Female ? [UIImage imageNamed:@"yumi_same_female"] : [UIImage imageNamed:@"yumi_same_male"]; - if (_componentAbstract.experUrl) { - if (self.experIndicateRegard.state == NetImageDeclareLoaded) { - self.experIndicateRegard.imageUrl = _componentAbstract.experUrl; - CGFloat kImageScale = self.experIndicateRegard.image.size.width / self.experIndicateRegard.image.size.height; - CGFloat imageWidth = 20 * kImageScale; - [self.experIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(imageWidth); - }]; - } else { - @kWeakify(self); - [self.experIndicateRegard chamberIndictowardseAboutWeebsite:_componentAbstract.experUrl completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) { - @kStrongify(self); - self.experIndicateRegard.image = image; - CGFloat kImageScale = image.size.width / image.size.height; - CGFloat imageWidth = 20 * kImageScale; - [self.experIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(imageWidth); - }]; - }]; - } - } - self.experIndicateRegard.hidden = _componentAbstract.experUrl.length <= 0; - - if (_componentAbstract.charmUrl) { - if (self.fascinationIndicateRegard.state == NetImageDeclareLoaded) { - self.fascinationIndicateRegard.imageUrl = _componentAbstract.charmUrl; - CGFloat kImageScale = self.fascinationIndicateRegard.image.size.width / self.fascinationIndicateRegard.image.size.height; - CGFloat imageWidth = 20 * kImageScale; - [self.fascinationIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(imageWidth); - }]; - } else { - @kWeakify(self); - [self.fascinationIndicateRegard chamberIndictowardseAboutWeebsite:_componentAbstract.charmUrl completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) { - @kStrongify(self); - self.fascinationIndicateRegard.image = image; - CGFloat kImageScale = image.size.width / image.size.height; - CGFloat imageWidth = 20 * kImageScale; - [self.fascinationIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(imageWidth); - }]; - }]; - } - } - self.fascinationIndicateRegard.hidden = _componentAbstract.charmUrl.length <= 0; - self.idSequencignation.text = [NSString stringWithFormat:@"ID:%@", _componentAbstract.erbanNo]; - NSString * hallName = _componentAbstract.hallName; - if (hallName.length > 5) { - hallName = [NSString stringWithFormat:@"%@...", [hallName substringToIndex:5]]; - } - self.guildMonicerSequencignation.text = hallName; - UIColor * avatarBoderColor; - UIColor * roleGradStartColor; - UIColor * roleGradEndColor; - NSString * roleTitle; - CGFloat roleWidth = 45; - switch (_componentAbstract.roleType) { - case UnionRoleGenre_Elder: - roleTitle = YMLocalizedString(@"YUMI_Clan_Member_Table_View_Cell_0"); - avatarBoderColor = UIColorFromRGB(0xFFD755); - roleGradStartColor = UIColorFromRGB(0xFF5357); - roleGradEndColor = UIColorFromRGB(0xFFC919); - roleWidth= 45; - break; - case UnionRoleGenre_Elder_Owner: - roleTitle = YMLocalizedString(@"YUMI_Clan_Member_Table_View_Cell_1"); - avatarBoderColor = UIColorFromRGB(0xFFD755); - roleGradStartColor = UIColorFromRGB(0xFF5357); - roleGradEndColor = UIColorFromRGB(0xFFC919); - roleWidth = 66; - break; - case UnionRoleGenre_Owner: - roleTitle = YMLocalizedString(@"YUMI_Clan_Member_Table_View_Cell_2"); - avatarBoderColor = UIColorFromRGB(0xF86868); - roleGradEndColor = UIColorFromRGB(0xF86868); - roleGradStartColor = UIColorFromRGB(0xF6A945); - roleWidth = 45; - break; - case UnionRoleGenre_Normal: - roleTitle = @""; - break; - case UnionRoleGenre_Manager: - roleTitle = YMLocalizedString(@"YUMI_Clan_Member_Table_View_Cell_3"); - avatarBoderColor = UIColorFromRGB(0x248CFE); - roleGradStartColor = UIColorFromRGB(0x5092FE); - roleGradEndColor = UIColorFromRGB(0x6A10B5); - roleWidth = 58; - break; - case UnionRoleGenre_Super_Admin: - roleTitle = YMLocalizedString(@"YUMI_Clan_Member_Table_View_Cell_4"); - avatarBoderColor = UIColorFromRGB(0x7727E4); - roleGradStartColor = UIColorFromRGB(0x5092FE); - roleGradEndColor = UIColorFromRGB(0x6A10B5); - roleWidth = 58; - break; - - default: - break; - } - if (roleTitle.length > 0) { - self.roleBtuton.hidden = NO; - self.intelligenceportraitBorderRegard.hidden = NO; - [self.roleBtuton setTitle:roleTitle forState:UIControlStateNormal]; - self.intelligenceportraitBorderRegard.layer.borderColor = avatarBoderColor.CGColor; - [self.roleBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[roleGradStartColor, roleGradEndColor] gradientType:GradientGenreUpleftToLowright imgSize:CGSizeMake(roleWidth, 17)] forState:UIControlStateNormal]; - [self.roleBtuton mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(roleWidth); - }]; - } else { - self.intelligenceportraitBorderRegard.hidden = YES; - self.roleBtuton.hidden = YES; - } - - if (_componentAbstract.roleType == UnionRoleGenre_Owner || _componentAbstract.roleType == UnionRoleGenre_Elder_Owner || _componentAbstract.roleType == UnionRoleGenre_Super_Admin) { - self.rightButton.hidden = YES; - } - - if (_cellType == ClanMemberTableRegardCellGenre_Manager_Add_Remove) { - self.rightButton.selected = _componentAbstract.roleType == UnionRoleGenre_Manager; - } - } -} - -- (void)setCellType:(ClanMemberTableRegardCellGenre)cellType { - _cellType = cellType; - switch (_cellType) { - case ClanMemberTableRegardCellGenre_Normal: - { - [self.encourageRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(15); - }]; - self.rightButton.hidden = YES; - } - break; - case ClanMemberTableRegardCellGenre_Remove_Member: - { - [self.encourageRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(0); - }]; - self.rightButton.hidden = NO; - [self.rightButton setImage:[UIImage imageNamed:@"yumi_center_guild_guild_remove_member"] forState:UIControlStateNormal]; - [self.rightButton setImage:[UIImage imageNamed:@"yumi_center_guild_guild_remove_member"] forState:UIControlStateSelected]; - } - break; - case ClanMemberTableRegardCellGenre_Manager_Set: - { - [self.encourageRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(0); - }]; - self.rightButton.hidden = NO; - [self.rightButton setImage:[UIImage imageNamed:@"yumi_scope_setting_arrow"] forState:UIControlStateNormal]; - [self.rightButton setImage:[UIImage imageNamed:@"yumi_scope_setting_arrow"] forState:UIControlStateSelected]; - } - break; - case ClanMemberTableRegardCellGenre_Manager_Add_Remove: - { - [self.encourageRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(0); - }]; - self.rightButton.hidden = NO; - self.encourageRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]; - [self.rightButton setImage:[UIImage imageNamed:@"yumi_center_guild_guild_manager_normal"] forState:UIControlStateNormal]; - [self.rightButton setImage:[UIImage imageNamed:@"yumi_center_guild_guild_manager_select"] forState:UIControlStateSelected]; - } - break; - default: - break; - } -} - -- (void)setIsRecent:(BOOL)isRecent { - _isRecent = isRecent; - if (_isRecent) { - self.encourageRegard.layer.mask = self.shapeLayer; - } else { - self.encourageRegard.layer.mask = nil; - } -} - -- (UIView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIView alloc] init]; - _encourageRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _encourageRegard.layer.masksToBounds = YES; - } - return _encourageRegard; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 54/2; - _intelligenceportraitIndicateRegard.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - } - return _intelligenceportraitIndicateRegard; -} - -- (UIButton *)roleBtuton { - if (!_roleBtuton) { - _roleBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_roleBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _roleBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - _roleBtuton.layer.masksToBounds = YES; - _roleBtuton.layer.cornerRadius = 17.0 / 2.0; - } - return _roleBtuton; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.font = [UIFont systemFontOfSize:12]; - _idSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _idSequencignation; -} - -- (UIStackView *)monicerHierarchyRegard { - if (!_monicerHierarchyRegard) { - _monicerHierarchyRegard = [[UIStackView alloc] init]; - _monicerHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _monicerHierarchyRegard.distribution = UIStackViewDistributionFill; - _monicerHierarchyRegard.alignment = UIStackViewAlignmentFill; - _monicerHierarchyRegard.spacing = 7; - } - return _monicerHierarchyRegard; -} - - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:18]; - _monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _monicerSequencignation; -} - -- (UIImageView *)seaxualityIndicateRegard { - if (!_seaxualityIndicateRegard) { - _seaxualityIndicateRegard = [[UIImageView alloc] init]; - _seaxualityIndicateRegard.userInteractionEnabled = YES; - } - return _seaxualityIndicateRegard; -} - -- (NetIndicateRegard *)experIndicateRegard { - if (!_experIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.imageType = ImageGenreUserCardLevel; - _experIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _experIndicateRegard.userInteractionEnabled = YES; - _experIndicateRegard.hidden = YES; - _experIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _experIndicateRegard; -} - -- (NetIndicateRegard *)fascinationIndicateRegard { - if (!_fascinationIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.imageType = ImageGenreUserCardLevel; - _fascinationIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _fascinationIndicateRegard.userInteractionEnabled = YES; - _fascinationIndicateRegard.hidden = YES; - _fascinationIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _fascinationIndicateRegard; -} - -- (UILabel *)guildMonicerSequencignation { - if (!_guildMonicerSequencignation) { - _guildMonicerSequencignation = [[UILabel alloc] init]; - _guildMonicerSequencignation.font = [UIFont systemFontOfSize:13]; - _guildMonicerSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _guildMonicerSequencignation; -} - -- (UIImageView *)intelligenceportraitBorderRegard { - if (!_intelligenceportraitBorderRegard) { - _intelligenceportraitBorderRegard = [[UIImageView alloc] init]; - _intelligenceportraitBorderRegard.userInteractionEnabled = YES; - _intelligenceportraitBorderRegard.layer.masksToBounds = YES; - _intelligenceportraitBorderRegard.layer.cornerRadius = 57 / 2; - _intelligenceportraitBorderRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _intelligenceportraitBorderRegard.layer.borderWidth = 1; - } - return _intelligenceportraitBorderRegard; -} - -- (CAShapeLayer *)shapeLayer { - if (!_shapeLayer) { - _shapeLayer = [CAShapeLayer layer]; - _shapeLayer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth - 15 * 2, 66) byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(12, 12)].CGPath; - } - return _shapeLayer; -} - - -- (UIButton *)rightButton { - if (!_rightButton) { - _rightButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_rightButton addTarget:self action:@selector(rectifyBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_rightButton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:10]; - } - return _rightButton; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMIManeUnionDispossessTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMIManeUnionDispossessTabulationRegardElement.h deleted file mode 100644 index 7486b2ee..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMIManeUnionDispossessTabulationRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIManeUnionDispossessTabulationRegardElement.h -// YuMi -// -// Created by YuMi on 2022/4/7. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeUnionDispossessTabulationRegardElement : UITableViewCell -@property (nonatomic,copy) NSString *emptyTitle; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMIManeUnionDispossessTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMIManeUnionDispossessTabulationRegardElement.m deleted file mode 100644 index 6c9f57ae..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMIManeUnionDispossessTabulationRegardElement.m +++ /dev/null @@ -1,76 +0,0 @@ -// -// YUMIManeUnionDispossessTabulationRegardElement.m -// YuMi -// -// Created by YuMi on 2022/4/7. -// - -#import "YUMIManeUnionDispossessTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIIndicateConstant.h" - -@interface YUMIManeUnionDispossessTabulationRegardElement () -@property (nonatomic,strong) UIImageView *dispossessIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@end - -@implementation YUMIManeUnionDispossessTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.dispossessIndicateRegard]; - [self.contentView addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.dispossessIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.contentView).offset(150); - make.centerX.mas_equalTo(self.contentView); - make.size.mas_equalTo(CGSizeMake(200, 200)); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.dispossessIndicateRegard.mas_bottom).offset(20); - make.left.right.mas_equalTo(self.contentView); - }]; -} -#pragma mark - Getters And Setters -- (void)setEmptyTitle:(NSString *)emptyTitle { - _emptyTitle = emptyTitle; - if (_emptyTitle) { - self.titleLabel.text = _emptyTitle; - } -} - -- (UIImageView *)dispossessIndicateRegard { - if (!_dispossessIndicateRegard) { - _dispossessIndicateRegard = [[UIImageView alloc] init]; - _dispossessIndicateRegard.userInteractionEnabled = YES; - _dispossessIndicateRegard.image = [UIIndicateConstant defalutDispossessDepapossessor]; - _dispossessIndicateRegard.layer.masksToBounds = YES; - _dispossessIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _dispossessIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_MineGuildEmptyTableViewCell0"); - _titleLabel.font = [UIFont systemFontOfSize:16]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _titleLabel; -} -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMIManeUnionHuntforComponentTabulationRegardElement.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMIManeUnionHuntforComponentTabulationRegardElement.h deleted file mode 100644 index 3c400119..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMIManeUnionHuntforComponentTabulationRegardElement.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YUMIManeUnionHuntforComponentTabulationRegardElement.h -// YuMi -// -// Created by YuMi on 2022/4/8. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class UnionHuntforConsumerAbstractMatrix, YUMIManeUnionHuntforComponentTabulationRegardElement; -@protocol FBCManeUnionHuntforMemberTabulationViweElementRepresendtation - -- (void)fBCManeUnionHuntforComponentTarbsultowardsionViweElement:(YUMIManeUnionHuntforComponentTabulationRegardElement *)view didSelectInfo:(UnionHuntforConsumerAbstractMatrix *)userInfo; - -@end -@interface YUMIManeUnionHuntforComponentTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) UnionHuntforConsumerAbstractMatrix *userInfo; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMIManeUnionHuntforComponentTabulationRegardElement.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMIManeUnionHuntforComponentTabulationRegardElement.m deleted file mode 100644 index 01134ad6..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMIManeUnionHuntforComponentTabulationRegardElement.m +++ /dev/null @@ -1,201 +0,0 @@ -// -// YUMIManeUnionHuntforComponentTabulationRegardElement.m -// YuMi -// -// Created by YuMi on 2022/4/8. -// - -#import "YUMIManeUnionHuntforComponentTabulationRegardElement.h" -#import -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "UnionHuntforConsumerAbstractMatrix.h" -UIKIT_EXTERN NSString *kInviteMemeberSuccess; -@interface YUMIManeUnionHuntforComponentTabulationRegardElement () -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UIImageView *seaxualityIndicateRegard; -@property (nonatomic,strong) UILabel *idSequencignation; -@property (nonatomic,strong) UIButton *centiretyforBtuton; - -@end - -@implementation YUMIManeUnionHuntforComponentTabulationRegardElement --(void)dealloc{ - [[NSNotificationCenter defaultCenter]removeObserver:self]; -} -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.monicerSequencignation]; - [self.contentView addSubview:self.seaxualityIndicateRegard]; - [self.contentView addSubview:self.idSequencignation]; - [self.contentView addSubview:self.centiretyforBtuton]; - [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(centiretyforMemeberAccomplishment:) name:kInviteMemeberSuccess object:nil]; -} --(void)centiretyforMemeberAccomplishment:(NSNotification *)not{ - NSString *targetUid = not.object; - if([targetUid isEqualToString:self.userInfo.uid]){ - self.userInfo.hallBtnStatus = 5; - [self.centiretyforBtuton setTitle:YMLocalizedString(@"YUMI_MineGuildSearchMemberTableViewCell2") forState:UIControlStateNormal]; - self.centiretyforBtuton.backgroundColor = UIColorFromRGB(0xE6E6F0); - [self.centiretyforBtuton setTitleColor:UIColorFromRGB(0xB3B3C3) forState:UIControlStateNormal]; - [self.centiretyforBtuton setBackgroundImage:nil forState:UIControlStateNormal]; - self.centiretyforBtuton.hidden = NO; - } -} -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(50, 50)); - make.centerY.mas_equalTo(self.contentView); - make.left.mas_equalTo(self.contentView).offset(12); - }]; - - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(8); - make.height.mas_equalTo(17); - make.top.mas_equalTo(21); - }]; - - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.monicerSequencignation); - make.top.mas_equalTo(45); - make.height.mas_equalTo(14); - }]; - - [self.seaxualityIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.monicerSequencignation.mas_right).offset(6); - make.centerY.mas_equalTo(self.monicerSequencignation); - make.size.mas_equalTo(CGSizeMake(14, 14)); - }]; - - [self.centiretyforBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(83, 30)); - make.centerY.mas_equalTo(self.contentView); - make.right.mas_equalTo(self.contentView).offset(-15); - }]; - - -} - -#pragma mark - Event Response -- (void)centiretyforBtutonPerformance:(UIButton *)sender { - if(self.userInfo.hallBtnStatus == 5)return; - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeUnionHuntforComponentTarbsultowardsionViweElement:didSelectInfo:)]) { - [self.delegate fBCManeUnionHuntforComponentTarbsultowardsionViweElement:self didSelectInfo:self.userInfo]; - } -} - -#pragma mark - Getters And Setters -- (void)setUserInfo:(UnionHuntforConsumerAbstractMatrix *)userInfo { - _userInfo = userInfo; - if (_userInfo) { - self.intelligenceportraitIndicateRegard.imageUrl = _userInfo.avatar; - self.seaxualityIndicateRegard.image = _userInfo.gender == GenderGenre_Female ? [UIImage imageNamed:@"yumi_same_female"] : [UIImage imageNamed:@"yumi_same_male"]; - self.monicerSequencignation.text = _userInfo.nick; - self.idSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_MineGuildSearchMemberTableViewCell0"), _userInfo.erbanNo]; - switch (_userInfo.hallBtnStatus) { - case 0: - { - _centiretyforBtuton.hidden = YES; - break; - } - case 4: - { - [_centiretyforBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _centiretyforBtuton.backgroundColor = [UIColor clearColor]; - [_centiretyforBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [_centiretyforBtuton setTitle:YMLocalizedString(@"YUMI_MineGuildSearchMemberTableViewCell1") forState:UIControlStateNormal]; - _centiretyforBtuton.hidden = NO; - break; - } - case 5: - { - [_centiretyforBtuton setTitle:YMLocalizedString(@"YUMI_MineGuildSearchMemberTableViewCell3") forState:UIControlStateNormal]; - _centiretyforBtuton.backgroundColor = UIColorFromRGB(0xE6E6F0); - [_centiretyforBtuton setTitleColor:UIColorFromRGB(0xB3B3C3) forState:UIControlStateNormal]; - [_centiretyforBtuton setBackgroundImage:nil forState:UIControlStateNormal]; - _centiretyforBtuton.hidden = NO; - break; - } - case 6: - { - [_centiretyforBtuton setTitle:YMLocalizedString(@"YUMI_MineGuildSearchMemberTableViewCell2") forState:UIControlStateNormal]; - _centiretyforBtuton.backgroundColor = UIColorFromRGB(0xFFBC51); - [_centiretyforBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [_centiretyforBtuton setBackgroundImage:nil forState:UIControlStateNormal]; - _centiretyforBtuton.hidden = NO; - break; - } - default: - break; - } - } -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 25; - _intelligenceportraitIndicateRegard.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:15]; - _monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _monicerSequencignation; -} - -- (UIImageView *)seaxualityIndicateRegard { - if (!_seaxualityIndicateRegard) { - _seaxualityIndicateRegard = [[UIImageView alloc] init]; - _seaxualityIndicateRegard.userInteractionEnabled = YES; - } - return _seaxualityIndicateRegard; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.font = [UIFont systemFontOfSize:10]; - _idSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _idSequencignation; -} - -- (UIButton *)centiretyforBtuton { - if (!_centiretyforBtuton) { - _centiretyforBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_centiretyforBtuton setTitle:YMLocalizedString(@"YUMI_MineGuildSearchMemberTableViewCell1") forState:UIControlStateNormal]; - [_centiretyforBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _centiretyforBtuton.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - [_centiretyforBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _centiretyforBtuton.layer.masksToBounds = YES; - _centiretyforBtuton.layer.cornerRadius = 15; - [_centiretyforBtuton addTarget:self action:@selector(centiretyforBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _centiretyforBtuton; -} - - - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMIUnionDispossessAssembletionRegardElement.h b/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMIUnionDispossessAssembletionRegardElement.h deleted file mode 100644 index 3cb09037..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMIUnionDispossessAssembletionRegardElement.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YUMIUnionDispossessAssembletionRegardElement.h -// YuMi -// -// Created by YuMi on 2022/4/12. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIUnionDispossessAssembletionRegardElement : UICollectionViewCell --(void)setConstraints; --(void)setTitle:(NSString *)title; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMIUnionDispossessAssembletionRegardElement.m b/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMIUnionDispossessAssembletionRegardElement.m deleted file mode 100644 index bebd6c85..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Cell/YUMIUnionDispossessAssembletionRegardElement.m +++ /dev/null @@ -1,77 +0,0 @@ -// -// YUMIUnionDispossessAssembletionRegardElement.m -// YuMi -// -// Created by YuMi on 2022/4/12. -// - -#import "YUMIUnionDispossessAssembletionRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIIndicateConstant.h" - -@interface YUMIUnionDispossessAssembletionRegardElement () -@property (nonatomic,strong) UIImageView *dispossessIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@end - -@implementation YUMIUnionDispossessAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} --(void)setTitle:(NSString *)title{ - _titleLabel.text = title; -} -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.dispossessIndicateRegard]; - [self.contentView addSubview:self.titleLabel]; -} --(void)setConstraints{ - [self.dispossessIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.contentView).offset(kGetScaleWidth(90)); - }]; -} -- (void)initChildLyRestrictions { - [self.dispossessIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.contentView).offset(150); - make.size.mas_equalTo(CGSizeMake(100, 100)); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.dispossessIndicateRegard.mas_bottom).offset(20); - make.left.right.mas_equalTo(self.contentView); - }]; -} -#pragma mark - Getters And Setters -- (UIImageView *)dispossessIndicateRegard { - if (!_dispossessIndicateRegard) { - _dispossessIndicateRegard = [[UIImageView alloc] init]; - _dispossessIndicateRegard.userInteractionEnabled = YES; - _dispossessIndicateRegard.image = [UIIndicateConstant defalutDispossessDepapossessor]; - _dispossessIndicateRegard.layer.masksToBounds = YES; - _dispossessIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _dispossessIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Guild_Empty_Collection_View_Cell_0"); - _titleLabel.font = [UIFont systemFontOfSize:16]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineAnchorIncomeStatisViewController.h b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineAnchorIncomeStatisViewController.h new file mode 100644 index 00000000..a56cb0a0 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineAnchorIncomeStatisViewController.h @@ -0,0 +1,17 @@ +// +// XPMineAnchorIncomeStatisViewController.h +// YuMi +// +// Created by YuMi on 2022/4/11. +// + +#import "BaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineAnchorIncomeStatisViewController : BaseViewController +///家族的id +@property (nonatomic,copy) NSString *clanId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineAnchorIncomeStatisViewController.m b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineAnchorIncomeStatisViewController.m new file mode 100644 index 00000000..c2166c06 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineAnchorIncomeStatisViewController.m @@ -0,0 +1,148 @@ +// +// XPMineAnchorIncomeStatisViewController.m +// YuMi +// +// Created by YuMi on 2022/4/11. +// 家族个播收入统计 + +#import "XPMineAnchorIncomeStatisViewController.h" +///Third +#import +#import +#import +#import +///Tool + +#import "DJDKMIMOMColor.h" +///View +#import "XPMineGuildIncomeRecordViewController.h" + +@interface XPMineAnchorIncomeStatisViewController () +///分页标题 +@property (nonatomic, strong) NSArray *titles; +///分页控件 +@property (nonatomic, strong) JXCategoryTitleView *titleView; +///分页lineView +@property (nonatomic, strong) JXCategoryListContainerView *contentView; +///日 +@property (nonatomic,strong) XPMineGuildIncomeRecordViewController *dayRecordVC; +///周 +@property (nonatomic,strong) XPMineGuildIncomeRecordViewController *weekRecordVC; +@end + +@implementation XPMineAnchorIncomeStatisViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + self.title = YMLocalizedString(@"XPMineAnchorIncomeStatisViewController0"); + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.titleView]; + [self.view addSubview:self.contentView]; +} + +- (void)initSubViewConstraints { + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.view).offset(10); + make.left.right.mas_equalTo(self.view); + make.height.mas_equalTo(30); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.titleView.mas_bottom); + make.left.right.bottom.mas_equalTo(self.view); + }]; +} + +#pragma mark - JXCategoryViewDelegate +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { + return self.titles.count; +} + +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { + if (index == 0) { + return self.dayRecordVC; + } else { + return self.weekRecordVC; + } +} + +- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { + if (index == 0) { + self.dayRecordVC.timeType = GuildIncomeRecrdTimeType_Day; + } else { + self.weekRecordVC.timeType = GuildIncomeRecrdTimeType_Week; + } +} + +#pragma mark - Getters And Setters +- (void)setClanId:(NSString *)clanId { + _clanId = clanId; + self.dayRecordVC.clanId = _clanId; + self.weekRecordVC.clanId = _clanId; + self.dayRecordVC.timeType = GuildIncomeRecrdTimeType_Day; +} + +- (JXCategoryTitleView *)titleView { + if (!_titleView) { + _titleView = [[JXCategoryTitleView alloc] init]; + _titleView.delegate = self; + _titleView.titles = self.titles; + _titleView.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; + _titleView.titleColor = [DJDKMIMOMColor secondTextColor]; + _titleView.titleSelectedColor = [DJDKMIMOMColor mainTextColor]; + _titleView.titleFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; + _titleView.titleSelectedFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; + _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; + _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; + _titleView.defaultSelectedIndex = 0; + _titleView.cellSpacing = 5; + _titleView.cellWidthIncrement = 5; + _titleView.listContainer = self.contentView; + + JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init]; + lineView.indicatorColor = [DJDKMIMOMColor appMainColor]; + lineView.indicatorWidth = 8.f; + lineView.indicatorHeight = 4.f; + lineView.indicatorCornerRadius = 2.f; + _titleView.indicators = @[lineView]; + } + return _titleView; +} + +- (JXCategoryListContainerView *)contentView { + if (!_contentView) { + _contentView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; + _contentView.defaultSelectedIndex = 0; + } + return _contentView; +} + +- (NSArray *)titles { + if (!_titles) { + _titles = @[YMLocalizedString(@"XPMineAnchorIncomeStatisViewController1"), YMLocalizedString(@"XPMineAnchorIncomeStatisViewController2")]; + } + return _titles; +} + +- (XPMineGuildIncomeRecordViewController *)dayRecordVC { + if (!_dayRecordVC) { + _dayRecordVC = [[XPMineGuildIncomeRecordViewController alloc] init]; + _dayRecordVC.incomeType = GuildIncomeType_Anchor; + } + return _dayRecordVC; +} + +- (XPMineGuildIncomeRecordViewController *)weekRecordVC { + if (!_weekRecordVC) { + _weekRecordVC = [[XPMineGuildIncomeRecordViewController alloc] init]; + _weekRecordVC.incomeType = GuildIncomeType_Anchor; + } + return _weekRecordVC; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineClanIncomeStatisViewController.h b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineClanIncomeStatisViewController.h new file mode 100644 index 00000000..facfd287 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineClanIncomeStatisViewController.h @@ -0,0 +1,17 @@ +// +// XPMineClanStatisViewController.h +// YuMi +// +// Created by YuMi on 2022/4/11. +// 家族收入统计 + +#import "BaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineClanIncomeStatisViewController : BaseViewController +///家族的id +@property (nonatomic,copy) NSString *clanId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineClanIncomeStatisViewController.m b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineClanIncomeStatisViewController.m new file mode 100644 index 00000000..86d52906 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineClanIncomeStatisViewController.m @@ -0,0 +1,163 @@ +// +// XPMineClanStatisViewController.m +// YuMi +// +// Created by YuMi on 2022/4/11. +// + +#import "XPMineClanIncomeStatisViewController.h" +///Third +#import +#import +#import +#import +///Tool + +#import "DJDKMIMOMColor.h" +///View +#import "XPMineGuildIncomeRecordViewController.h" + +@interface XPMineClanIncomeStatisViewController () +///分页标题 +@property (nonatomic, strong) NSArray *titles; +///分页控件 +@property (nonatomic, strong) JXCategoryTitleView *titleView; +///分页lineView +@property (nonatomic, strong) JXCategoryListContainerView *contentView; +///日 +@property (nonatomic,strong) XPMineGuildIncomeRecordViewController *dayRecordVC; +///周 +@property (nonatomic,strong) XPMineGuildIncomeRecordViewController *weekRecordVC; +///月 +@property (nonatomic,strong) XPMineGuildIncomeRecordViewController *mouthRecordVC; +@end + +@implementation XPMineClanIncomeStatisViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + self.title = YMLocalizedString(@"XPMineClanIncomeStatisViewController0"); + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.titleView]; + [self.view addSubview:self.contentView]; +} + +- (void)initSubViewConstraints { + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.view).offset(10); + make.left.right.mas_equalTo(self.view); + make.height.mas_equalTo(30); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.titleView.mas_bottom); + make.left.right.bottom.mas_equalTo(self.view); + }]; +} + +#pragma mark - JXCategoryViewDelegate +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { + return self.titles.count; +} + +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { + if (index == 0) { + return self.dayRecordVC; + } else if(index == 1) { + return self.weekRecordVC; + } else { + return self.mouthRecordVC; + } +} + +- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { + if (index == 0) { + self.dayRecordVC.timeType = GuildIncomeRecrdTimeType_Day; + } else if(index == 1) { + self.weekRecordVC.timeType = GuildIncomeRecrdTimeType_Week; + } else { + self.mouthRecordVC.timeType = GuildIncomeRecrdTimeType_Mouth; + } +} + +#pragma mark - Getters And Setters +- (void)setClanId:(NSString *)clanId { + _clanId = clanId; + self.dayRecordVC.guidId = _clanId; + self.weekRecordVC.guidId = _clanId; + self.mouthRecordVC.guidId = _clanId; + self.dayRecordVC.timeType = GuildIncomeRecrdTimeType_Day; +} + +- (JXCategoryTitleView *)titleView { + if (!_titleView) { + _titleView = [[JXCategoryTitleView alloc] init]; + _titleView.delegate = self; + _titleView.titles = self.titles; + _titleView.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; + _titleView.titleColor = [DJDKMIMOMColor secondTextColor]; + _titleView.titleSelectedColor = [DJDKMIMOMColor mainTextColor]; + _titleView.titleFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; + _titleView.titleSelectedFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; + _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; + _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; + _titleView.defaultSelectedIndex = 0; + _titleView.cellSpacing = 5; + _titleView.cellWidthIncrement = 5; + _titleView.listContainer = self.contentView; + + JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init]; + lineView.indicatorColor = [DJDKMIMOMColor appMainColor]; + lineView.indicatorWidth = 8.f; + lineView.indicatorHeight = 4.f; + lineView.indicatorCornerRadius = 2.f; + _titleView.indicators = @[lineView]; + } + return _titleView; +} + +- (JXCategoryListContainerView *)contentView { + if (!_contentView) { + _contentView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; + _contentView.defaultSelectedIndex = 0; + } + return _contentView; +} + +- (NSArray *)titles { + if (!_titles) { + _titles = @[YMLocalizedString(@"XPMineClanIncomeStatisViewController1"), YMLocalizedString(@"XPMineClanIncomeStatisViewController2"), YMLocalizedString(@"XPMineClanIncomeStatisViewController3")]; + } + return _titles; +} + +- (XPMineGuildIncomeRecordViewController *)dayRecordVC { + if (!_dayRecordVC) { + _dayRecordVC = [[XPMineGuildIncomeRecordViewController alloc] init]; + _dayRecordVC.incomeType = GuildIncomeType_Clan; + } + return _dayRecordVC; +} + +- (XPMineGuildIncomeRecordViewController *)weekRecordVC { + if (!_weekRecordVC) { + _weekRecordVC = [[XPMineGuildIncomeRecordViewController alloc] init]; + _weekRecordVC.incomeType = GuildIncomeType_Clan; + } + return _weekRecordVC; +} + +- (XPMineGuildIncomeRecordViewController *)mouthRecordVC { + if (!_mouthRecordVC) { + _mouthRecordVC = [[XPMineGuildIncomeRecordViewController alloc] init]; + _mouthRecordVC.incomeType = GuildIncomeType_Clan; + } + return _mouthRecordVC; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGoldIncomeRecordVC.h b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGoldIncomeRecordVC.h new file mode 100644 index 00000000..e0073d6d --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGoldIncomeRecordVC.h @@ -0,0 +1,16 @@ +// +// XPMineGoldIncomeRecordVC.h +// YuMi +// +// Created by YuMi on 2022/12/16. +// + +#import "MvpViewController.h" +#import +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineGoldIncomeRecordVC : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGoldIncomeRecordVC.m b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGoldIncomeRecordVC.m new file mode 100644 index 00000000..cd9cae03 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGoldIncomeRecordVC.m @@ -0,0 +1,287 @@ +// +// XPMineGoldIncomeRecordVC.m +// YuMi +// +// Created by YuMi on 2022/12/16. +// + +#import "XPMineGoldIncomeRecordVC.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "PLTimeUtil.h" +#import "TTPopup.h" +#import "NSDate+DateUtils.h" + +///Model +#import "GuildIncomeRecordModel.h" +#import "GuildPersonIncomeRecordModel.h" +///View +#import "XPGuildIncomeRecordTableViewCell.h" +#import "XPGuildPersonIncomeTableViewCell.h" +#import "XPMineGuildEmptyTableViewCell.h" +#import "XPIncomeRecordGoldDetailsCell.h" +#import "XPGuildIncomeSectionView.h" +#import "XPGuildAnchorIncomeSectionView.h" +#import "XPGuildIncomeHeaderView.h" +#import "XPGuildTimePickView.h" +#import "XPGuildTimeMonthPickerView.h" +#import "XPGoldIncomeSectionView.h" +#import "XPMineGuildIncomeDetailViewController.h" +//#import "XPIncomeRecordGoldDetailsPickViewView.h" + +///P +#import "XPClanPresenter.h" +#import "XPClanProtocol.h" + +@interface XPMineGoldIncomeRecordVC () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///头部的view +@property (nonatomic,strong) XPGuildIncomeHeaderView *headerView; +///数据 +@property (nonatomic,strong) NSArray *datasource; +///结束的时间 +@property (nonatomic,strong) NSDate *endDate; +///开始的时间 +@property (nonatomic,strong) NSDate *startDate; +///当前选择的时间 +@property (nonatomic,strong) NSDate *currentDate; +///选择年月 +@property (nonatomic,strong) XPGuildTimeMonthPickerView *monthPickerView; +///开始的时间戳 +@property (nonatomic,copy) NSString *startTimeStr; +///结束的时间戳 +@property (nonatomic,copy) NSString *endTimeStr; +///头视图 +@property (nonatomic,strong) XPGoldIncomeSectionView *sectionView; +///排序类型,1,钻石排序,2,可结算金币 +@property (nonatomic,assign) int type; +@property (nonatomic,strong) UIView *foodView; +@end + +@implementation XPMineGoldIncomeRecordVC +- (__kindof id)createPresenter { + return [[XPClanPresenter alloc] init]; +} +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + self.type = 1; + [self weekDayWithCurrentDate:[NSDate date]]; + self.startTimeStr = [PLTimeUtil getYYMMDDWithDate:self.startDate]; + self.endTimeStr = [PLTimeUtil getYYMMDDWithDate:self.endDate]; + self.headerView.timeType = GuildIncomeRecrdTimeType_Week; + [self.headerView configHeaderView:self.startDate endTime:self.endDate]; + [self.presenter getClanRoomGoldList:self.startTimeStr endTime:self.endTimeStr]; +} + + + + +#pragma mark- XPClanProtocol +- (void)getClanRoomGoldsListSuccess:(XPIncomeRecordGoldDetailsModel *)model{ + self.headerView.totalIncome = model.total; + if(self.type == 1){ + NSArray *list = [model.hallMember sortedArrayUsingComparator:^NSComparisonResult(XPIncomeRecordGoldDetailItemModel * _Nonnull obj1, XPIncomeRecordGoldDetailItemModel * _Nonnull obj2) { + return obj1.giftDiamonds.integerValue < obj2.giftDiamonds.integerValue; + }]; + self.datasource = list; + }else{ + NSArray *list = [model.hallMember sortedArrayUsingComparator:^NSComparisonResult(XPIncomeRecordGoldDetailItemModel * _Nonnull obj1, XPIncomeRecordGoldDetailItemModel * _Nonnull obj2) { + return obj1.remainGolds.integerValue < obj2.remainGolds.integerValue; + }]; + self.datasource = list; + } + + [self.tableView reloadData]; +} +- (void)weekDayWithCurrentDate:(NSDate *)date { + NSCalendar * calendar = [NSCalendar currentCalendar]; // 指定日历的算法 + NSDateComponents *comps = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitWeekday | NSCalendarUnitDay fromDate:date]; + // 获取今天是周几 + // 1 是周日,2是周一 3.以此类推 + NSInteger weekDay = [comps weekday]; + // 获取几天是几号 + NSInteger day = [comps day]; + long firstDiff,lastDiff; + if (weekDay == 1){ + firstDiff = -6; + lastDiff = 0; + } else { + firstDiff = -(weekDay - 2); + lastDiff = 8 - weekDay; + } + // 在当前日期(去掉时分秒)基础上加上差的天数 + NSDateComponents *baseDayComp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:date]; + //获取周一日期 + [baseDayComp setDay:day + firstDiff]; + NSDate *firstDayOfWeek = [calendar dateFromComponents:baseDayComp]; + self.startDate = firstDayOfWeek; + //获取周末日期 + [baseDayComp setDay:day + lastDiff]; + NSDate *lastDayOfWeek = [calendar dateFromComponents:baseDayComp]; + self.endDate = lastDayOfWeek; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.view.backgroundColor = [UIColor whiteColor]; + [self.view addSubview:self.headerView]; + [self.view addSubview:self.sectionView]; + [self.view addSubview:self.tableView]; +} +- (void)initSubViewConstraints { + [self.headerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.view); + make.right.mas_equalTo(self.view); + make.top.mas_equalTo(self.view); + make.height.mas_equalTo(kGetScaleWidth(124)); + }]; + + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.top.mas_equalTo(self.sectionView.mas_bottom); + }]; +} +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return self.datasource.count > 0 ? kGetScaleWidth(71) : 400; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if(self.datasource.count > 0){ + XPIncomeRecordGoldDetailsCell * cell = [tableView dequeueReusableCellWithIdentifier:@"XPIncomeRecordGoldDetailsCellWithClan" forIndexPath:indexPath]; + cell.detailModel = self.datasource[indexPath.row]; + cell.path = indexPath.row; + return cell; + } + XPMineGuildEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineGuildEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineGuildEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineGuildEmptyTableViewCell class])]; + } + return cell; +} +- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ + if(self.datasource.count > 0){ + return kGetScaleWidth(108); + } + return 0; +} +-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{ + if(self.datasource.count > 0){ + return self.foodView; + } + + return nil; + +} +#pragma mark- XPGoldIncomeSectionViewDelegate + +- (void)chooseGoldCoinOrder:(int)type isAscending:(BOOL)isAscending{ + if(type == 1){ + self.type = 1; + NSArray *list = [self.datasource sortedArrayUsingComparator:^NSComparisonResult(XPIncomeRecordGoldDetailItemModel * _Nonnull obj1, XPIncomeRecordGoldDetailItemModel * _Nonnull obj2) { + if(isAscending == YES){ + return obj2.giftDiamonds.integerValue > obj1.giftDiamonds.integerValue; + } + return obj1.giftDiamonds.integerValue > obj2.giftDiamonds.integerValue; + }]; + self.datasource = [NSMutableArray arrayWithArray:list]; + [self.tableView reloadData]; + return; + } + self.type = 2; + NSArray *list = [self.datasource sortedArrayUsingComparator:^NSComparisonResult(XPIncomeRecordGoldDetailItemModel * _Nonnull obj1, XPIncomeRecordGoldDetailItemModel * _Nonnull obj2) { + if(isAscending == YES){ + return obj2.remainGolds.integerValue > obj1.remainGolds.integerValue; + } + return obj1.remainGolds.integerValue > obj2.remainGolds.integerValue; + }]; + self.datasource = [NSMutableArray arrayWithArray:list]; + [self.tableView reloadData]; +} + +#pragma mark - XPGuildIncomeHeaderViewDelegate +- (void)xPGuildIncomeHeaderView:(XPGuildIncomeHeaderView *)view didChooseTime:(UIButton *)sender { +// XPIncomeRecordGoldDetailsPickViewView *pickViewView = [[XPIncomeRecordGoldDetailsPickViewView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight) curDate:self.startDate]; +// pickViewView.delegate = self; +// [kWindow addSubview:pickViewView]; +} +- (void)didClickSureActionWtihStartDate:(NSDate *)startDate endDate:(NSDate *)endDate{ + self.startTimeStr = [PLTimeUtil getYYMMDDWithDate:startDate]; + self.endTimeStr = [PLTimeUtil getYYMMDDWithDate:endDate]; + [self.headerView configHeaderView:startDate endTime:endDate]; + [self.presenter getClanRoomGoldList:self.startTimeStr endTime:self.endTimeStr]; +} + +#pragma mark - JXCategoryListContentViewDelegate +- (UIView *)listView { + return self.view; +} + +#pragma mark - Getters And Setters + +//去掉UItableview headerview黏性 +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + CGFloat sectionHeaderHeight = 37; + if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) { + scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0); + } else if (scrollView.contentOffset.y>=sectionHeaderHeight) { + scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0); + } +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPMineGuildEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineGuildEmptyTableViewCell class])]; + [_tableView registerClass:[XPIncomeRecordGoldDetailsCell class] forCellReuseIdentifier:@"XPIncomeRecordGoldDetailsCellWithClan"]; + } + return _tableView; +} + +- (XPGuildIncomeHeaderView *)headerView { + if (!_headerView) { + _headerView = [[XPGuildIncomeHeaderView alloc] init]; + _headerView.backgroundColor = [UIColor whiteColor]; + _headerView.delegate = self; + } + return _headerView; +} + +- (XPGoldIncomeSectionView *)sectionView{ + if (!_sectionView){ + _sectionView = [[XPGoldIncomeSectionView alloc]initWithFrame:CGRectMake(0, kGetScaleWidth(124), KScreenWidth, kGetScaleWidth(47))]; + _sectionView.delegate = self; + } + return _sectionView; +} +- (UIView *)foodView{ + if (!_foodView){ + _foodView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, kGetScaleWidth(108))]; + UILabel *titleView = [[UILabel alloc] init]; + titleView.text = YMLocalizedString(@"XPMineGoldIncomeRecordVC0"); + titleView.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + titleView.textColor = [DJDKMIMOMColor disableButtonTextColor]; + titleView.textAlignment = NSTextAlignmentCenter; + titleView.frame = _foodView.bounds; + [_foodView addSubview:titleView]; + } + return _foodView; +} +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGuildIncomeDetailViewController.h b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGuildIncomeDetailViewController.h new file mode 100644 index 00000000..f6315586 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGuildIncomeDetailViewController.h @@ -0,0 +1,20 @@ +// +// XPMineGuildIncomeDetailViewController.h +// YuMi +// +// Created by YuMi on 2022/4/12. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN +@class GuildPersonIncomeUserInfoModel; +@interface XPMineGuildIncomeDetailViewController : MvpViewController +@property (nonatomic,copy) NSString *hallId; +@property (nonatomic,copy) NSString *startTime; +@property (nonatomic,copy) NSString *endTime; +///用户的x信息 +@property (nonatomic,strong) GuildPersonIncomeUserInfoModel *memberInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGuildIncomeDetailViewController.m b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGuildIncomeDetailViewController.m new file mode 100644 index 00000000..df6f89bb --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGuildIncomeDetailViewController.m @@ -0,0 +1,174 @@ +// +// XPMineGuildIncomeDetailViewController.m +// YuMi +// +// Created by YuMi on 2022/4/12. +// + +#import "XPMineGuildIncomeDetailViewController.h" +///Third +#import +#import +///Tool +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" + +///Model +#import "GuildPersonIncomeRecordModel.h" +///View +#import "XPGuildIncomeDetailCollectionViewCell.h" +#import "XPGuildEmptyCollectionViewCell.h" +///P +#import "XPGuildIncomeDetailPresenter.h" +#import "XPGuildIncomeDetailProtocol.h" + +@interface XPMineGuildIncomeDetailViewController () +///显示头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///显示昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///列表 +@property (nonatomic,strong) UICollectionView *collectionView; +///数据 +@property (nonatomic,strong) NSArray *datasouce; +@end + +@implementation XPMineGuildIncomeDetailViewController + +- (__kindof id)createPresenter { + return [[XPGuildIncomeDetailPresenter alloc] init];; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + [self initHeaderAndFooterRrfresh]; +} + +#pragma mark - 刷新 +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.collectionView.mj_header = header; + + [self headerRefresh]; +} + +- (void)headerRefresh { + if (self.endTime.length <=0) { + self.endTime = @""; + } + [self.presenter getUserIncomeDetailList:self.hallId memberId:self.memberInfo.reciveUid startTimeStr:self.startTime endTimeStr:self.endTime]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMineGuildIncomeDetailViewController0"); + [self.view addSubview:self.avatarImageView]; + [self.view addSubview:self.nickLabel]; + [self.view addSubview:self.collectionView]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(40, 40)); + make.left.mas_equalTo(self.view).offset(15); + make.top.mas_equalTo(self.view).offset(18); + }]; + + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.avatarImageView); + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(10); + }]; + + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.top.mas_equalTo(self.avatarImageView.mas_bottom).offset(2); + }]; +} + +#pragma mark - UICOllectionViewDelegate And UICollectionViewDatasource +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.datasouce.count > 0? self.datasouce.count : 1; +} + +-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + CGFloat itemWidth = (KScreenWidth - 10 * 2) / 3.0; + return self.datasouce.count > 0 ? CGSizeMake(itemWidth, itemWidth + 50) : CGSizeMake(KScreenWidth, 500); +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasouce.count > 0) { + XPGuildIncomeDetailCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPGuildIncomeDetailCollectionViewCell class]) forIndexPath:indexPath]; + cell.incomeDetailInfo= [self.datasouce safeObjectAtIndex1:indexPath.row]; + return cell; + } + + XPGuildEmptyCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPGuildEmptyCollectionViewCell class]) forIndexPath:indexPath]; + return cell; +} + +#pragma mark - XPGuildIncomeDetailProtocol +- (void)getUserIncomeDetailListSuccess:(NSArray *)array { + [self.collectionView.mj_header endRefreshing]; + self.datasouce = array; + [self.collectionView reloadData]; +} + +- (void)getUserIncomeDetailListFail:(nonnull NSString *)msg { + [self.collectionView.mj_header endRefreshing]; +} + + +#pragma mark - Getters And Setters +- (void)setMemberInfo:(GuildPersonIncomeUserInfoModel *)memberInfo { + _memberInfo = memberInfo; + if (_memberInfo) { + self.avatarImageView.imageUrl = _memberInfo.avatar; + self.nickLabel.text = _memberInfo.nick; + } +} + +- (UICollectionView *)collectionView{ + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.minimumLineSpacing = 10; + layout.minimumInteritemSpacing = 10; + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.backgroundColor = [UIColor clearColor]; + [_collectionView registerClass:[XPGuildIncomeDetailCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPGuildIncomeDetailCollectionViewCell class])]; + [_collectionView registerClass:[XPGuildEmptyCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPGuildEmptyCollectionViewCell class])]; + } + return _collectionView; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 40/2; + } + return _avatarImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.text = YMLocalizedString(@"XPMineGuildIncomeDetailViewController1"); + _nickLabel.font = [UIFont systemFontOfSize:15]; + _nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _nickLabel; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGuildIncomeRecordViewController.h b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGuildIncomeRecordViewController.h new file mode 100644 index 00000000..31692fb2 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGuildIncomeRecordViewController.h @@ -0,0 +1,41 @@ +// +// XPMineGuildIncomeRecordViewController.h +// YuMi +// +// Created by YuMi on 2022/4/11. +// + +#import "MvpViewController.h" +#import +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, GuildIncomeRecrdTimeType) { + ///每日 + GuildIncomeRecrdTimeType_Day = 1, + ///每周 + GuildIncomeRecrdTimeType_Week, + ///每月 + GuildIncomeRecrdTimeType_Mouth, +}; + +typedef NS_ENUM(NSInteger, GuildIncomeType) { + ///家族收入 + GuildIncomeType_Clan = 1, + ///公会收入 + GuildIncomeType_Hall, + ///个播 + GuildIncomeType_Anchor, +}; + +@interface XPMineGuildIncomeRecordViewController : MvpViewController +///时间的类型 +@property (nonatomic,assign) GuildIncomeRecrdTimeType timeType; +///收入类型 +@property (nonatomic,assign) GuildIncomeType incomeType; +///公会的id 或者是家族的id +@property (nonatomic,copy) NSString *guidId; +///个播的时候 传入一个家族的id +@property (nonatomic,copy) NSString *clanId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGuildIncomeRecordViewController.m b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGuildIncomeRecordViewController.m new file mode 100644 index 00000000..6a104d87 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGuildIncomeRecordViewController.m @@ -0,0 +1,460 @@ +// +// XPMineGuildIncomeRecordViewController.m +// YuMi +// +// Created by YuMi on 2022/4/11. +// + +#import "XPMineGuildIncomeRecordViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "PLTimeUtil.h" +#import "TTPopup.h" +#import "NSDate+DateUtils.h" + +///Model +#import "GuildIncomeRecordModel.h" +#import "GuildPersonIncomeRecordModel.h" +///View +#import "XPGuildIncomeRecordTableViewCell.h" +#import "XPGuildPersonIncomeTableViewCell.h" +#import "XPMineGuildEmptyTableViewCell.h" +#import "XPGuildSingleRoomIncomeTableViewCell.h" +#import "XPGuildIncomeSectionView.h" +#import "XPGuildAnchorIncomeSectionView.h" +#import "XPGuildIncomeHeaderView.h" +#import "XPGuildTimePickView.h" +#import "XPGuildTimeMonthPickerView.h" +#import "XPMineGuildIncomeDetailViewController.h" +///P +#import "XPGuildIncomePresenter.h" +#import "XPGuildIncomeProtocol.h" +@interface XPMineGuildIncomeRecordViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///头部的view +@property (nonatomic,strong) XPGuildIncomeHeaderView *headerView; +///数据 +@property (nonatomic,strong) NSArray *datasource; +///结束的时间 +@property (nonatomic,strong) NSDate *endDate; +///开始的时间 +@property (nonatomic,strong) NSDate *startDate; +///当前选择的时间 +@property (nonatomic,strong) NSDate *currentDate; +///选择年月 +@property (nonatomic,strong) XPGuildTimeMonthPickerView *monthPickerView; +///开始的时间戳 +@property (nonatomic,copy) NSString *startTimeStr; +///结束的时间戳 +@property (nonatomic,copy) NSString *endTimeStr; +@property (nonatomic,strong) UIView *foodView; +@end + +@implementation XPMineGuildIncomeRecordViewController + +- (__kindof id)createPresenter { + return [[XPGuildIncomePresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initHeaderAndFooterRrfresh]; +} + +- (void)viewDidLayoutSubviews { + [super viewDidLayoutSubviews]; + [self initSubViewConstraints]; +} + +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; +} + +- (void)headerRefresh { + if (self.incomeType == GuildIncomeType_Clan) { + [self.presenter getClanTotalIncome:self.guidId startTime:self.startTimeStr endTime:self.endTimeStr]; + } else if(self.incomeType == GuildIncomeType_Hall) { + [self.presenter getHallTotalIncome:self.guidId startTime:self.startTimeStr endTime:self.endTimeStr]; + } else { + if (self.clanId.length > 0) { + [self.presenter getClanAnchorTotalIncome:self.clanId startTime:self.startTimeStr endTime:self.endTimeStr]; + } else { + [self.presenter getHallAnchorTotalIncome:self.guidId startTime:self.startTimeStr endTime:self.endTimeStr]; + } + } +} +#pragma mark - Private Method +- (void)initSubViews { + self.view.backgroundColor = [UIColor whiteColor]; + [self.view addSubview:self.headerView]; + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.headerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.view); + make.right.mas_equalTo(self.view); + make.top.mas_equalTo(self.view); + make.height.mas_equalTo(kGetScaleWidth(124)); + }]; + + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.top.mas_equalTo(self.headerView.mas_bottom); + }]; +} + +///获取当前时间 的一个月之后的时间 +- (void)monthWithCurrentDate:(NSDate *)newDate { + if (newDate == nil) { + newDate = [NSDate date]; + } + double interval = 0; + NSDate *beginDate = nil; + NSDate *endDate = nil; + NSCalendar *calendar = [NSCalendar currentCalendar]; + [calendar setFirstWeekday:2];//设定周一为周首日 + BOOL ok = [calendar rangeOfUnit:NSCalendarUnitMonth startDate:&beginDate interval:&interval forDate:newDate]; + if (ok) { + endDate = [beginDate dateByAddingTimeInterval:interval-1]; + } else { + return; + } + self.startDate = beginDate; + self.endDate = endDate; +} + +- (void)weekDayWithCurrentDate:(NSDate *)date { + NSCalendar * calendar = [NSCalendar currentCalendar]; // 指定日历的算法 + NSDateComponents *comps = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitWeekday | NSCalendarUnitDay fromDate:date]; + // 获取今天是周几 + // 1 是周日,2是周一 3.以此类推 + NSInteger weekDay = [comps weekday]; + // 获取几天是几号 + NSInteger day = [comps day]; + long firstDiff,lastDiff; + if (weekDay == 1){ + firstDiff = -6; + lastDiff = 0; + } else { + firstDiff = -(weekDay - 2); + lastDiff = 8 - weekDay; + } + // 在当前日期(去掉时分秒)基础上加上差的天数 + NSDateComponents *baseDayComp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:date]; + //获取周一日期 + [baseDayComp setDay:day + firstDiff]; + NSDate *firstDayOfWeek = [calendar dateFromComponents:baseDayComp]; + self.startDate = firstDayOfWeek; + //获取周末日期 + [baseDayComp setDay:day + lastDiff]; + NSDate *lastDayOfWeek = [calendar dateFromComponents:baseDayComp]; + self.endDate = lastDayOfWeek; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return self.datasource.count > 0 ? kGetScaleWidth(71) : 400; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + if (self.incomeType == GuildIncomeType_Clan) { + XPGuildIncomeRecordTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPGuildIncomeRecordTableViewCell class])]; + if (cell == nil) { + cell = [[XPGuildIncomeRecordTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPGuildIncomeRecordTableViewCell class])]; + } + cell.rankNumber = indexPath.row; + cell.userInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + return cell; + } else if(self.incomeType == GuildIncomeType_Hall) { + XPGuildPersonIncomeTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPGuildPersonIncomeTableViewCell class])]; + if (cell == nil) { + cell = [[XPGuildPersonIncomeTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPGuildPersonIncomeTableViewCell class])]; + } + cell.userInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + return cell; + } else if(self.incomeType == GuildIncomeType_Anchor) { + XPGuildSingleRoomIncomeTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPGuildSingleRoomIncomeTableViewCell class])]; + if (cell == nil) { + cell = [[XPGuildSingleRoomIncomeTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPGuildSingleRoomIncomeTableViewCell class])]; + } + + cell.userInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.rankNumber = indexPath.row; + return cell; + } + } + XPMineGuildEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineGuildEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineGuildEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineGuildEmptyTableViewCell class])]; + } + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { + return kGetScaleWidth(47); +} + +- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { + if (section == 0) { + if (self.incomeType == GuildIncomeType_Clan || self.incomeType == GuildIncomeType_Hall) { + XPGuildIncomeSectionView * sectionView = [[XPGuildIncomeSectionView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 37)]; + sectionView.incomeType = self.incomeType; + return sectionView; + } else { + XPGuildAnchorIncomeSectionView * sectionView = [[XPGuildAnchorIncomeSectionView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 37)]; + return sectionView; + } + } + return [UIView new]; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ + if(self.datasource.count > 0){ + return kGetScaleWidth(108); + } + return 0.01f; +} +-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{ + if(self.datasource.count > 0){ + return self.foodView; + } + + return nil; + +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.incomeType == GuildIncomeType_Hall) { + if (self.datasource.count > 0) { + GuildPersonIncomeUserInfoModel * memberInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + XPMineGuildIncomeDetailViewController * incomeDetailVC = [[XPMineGuildIncomeDetailViewController alloc] init]; + incomeDetailVC.hallId = self.guidId; + incomeDetailVC.startTime = self.startTimeStr; + incomeDetailVC.endTime = self.endTimeStr; + incomeDetailVC.memberInfo = memberInfo; + [self.navigationController pushViewController:incomeDetailVC animated:YES]; + } + + } +} + +#pragma mark - XPGuildIncomeHeaderViewDelegate +- (void)xPGuildIncomeHeaderView:(XPGuildIncomeHeaderView *)view didChooseTime:(UIButton *)sender { + if (self.timeType == GuildIncomeRecrdTimeType_Mouth) { + [self.monthPickerView setDate:[NSDate date] animated:YES]; + [self.monthPickerView show]; + } else { + XPGuildTimePickView * timeView = [[XPGuildTimePickView alloc] init]; + timeView.currentDate = [NSDate date]; + timeView.pickDateType = self.timeType == GuildIncomeRecrdTimeType_Week ? XPGuildTimePickTypeWeek : XPGuildTimePickTypeDay; + timeView.delegate = self; + [TTPopup popupView:timeView style:TTPopupStyleActionSheet]; + } +} + +#pragma mark - XPGuildTimeMonthPickerViewDelegate +- (void)datePicker:(XPGuildTimeMonthPickerView *)datePicker didCancel:(UIButton *)sender { + [TTPopup dismiss]; +} + +- (void)datePicker:(XPGuildTimeMonthPickerView *)dataPicker didSelectedDate:(NSDate *)date { + [TTPopup dismiss]; + [self monthWithCurrentDate:date]; + self.startTimeStr = [PLTimeUtil getYYMMDDWithDate:date]; + self.endTimeStr = [PLTimeUtil getYYMMDDWithDate:self.endDate]; + [self.headerView configHeaderView:date endTime:nil]; + [self headerRefresh]; +} + +#pragma mark -XPGuildTimePickViewDelegate +- (void)xPGuildTimePickView:(XPGuildTimePickView *)view didClickCancel:(UIButton *)sender { + [TTPopup dismiss]; +} + +- (void)xPGuildTimePickView:(XPGuildTimePickView *)view didClickSure:(UIButton *)sender { + [TTPopup dismiss]; + if (self.timeType == GuildIncomeRecrdTimeType_Week) { + self.startTimeStr = [PLTimeUtil getYYMMDDWithDate:view.startDate]; + self.endTimeStr = [PLTimeUtil getYYMMDDWithDate:view.endDate]; + [self.headerView configHeaderView:view.startDate endTime:view.endDate]; + } else { + self.startTimeStr = [PLTimeUtil getYYMMDDWithDate:view.startDate]; + self.endTimeStr = [PLTimeUtil getYYMMDDWithDate:view.endDate];; + [self.headerView configHeaderView:view.startDate endTime:view.endDate]; + } + [self headerRefresh]; +} + +#pragma mark - XPGuildIncomeProtocol +- (void)getClanTotalIncomeScuess:(GuildIncomeRecordModel *)incomeInfo { + [self.tableView.mj_header endRefreshing]; + self.headerView.totalIncome = incomeInfo.total; + self.datasource = incomeInfo.income; + [self.tableView reloadData]; +} + +- (void)getClanTotalIncomeFail:(NSString *)msg { + [self.tableView.mj_header endRefreshing]; +} + +- (void)getHallTotalIncomeScuess:(GuildPersonIncomeRecordModel *)incomeInfo { + [self.tableView.mj_header endRefreshing]; + self.headerView.totalIncome = incomeInfo.total; + self.datasource = incomeInfo.vos; + [self.tableView reloadData]; +} + +- (void)getHallTotalIncomeFail:(NSString *)msg { + [self.tableView.mj_header endRefreshing]; +} + +- (void)getClanAnchorTotalIncomeSuccess:(GuildPersonIncomeRecordModel *)incomeInfo { + [self.tableView.mj_header endRefreshing]; + self.headerView.totalIncome = incomeInfo.totalDiamond; + self.datasource = incomeInfo.incomes; + [self.tableView reloadData]; +} + +- (void)getClanAnchorTotalIncomeFail:(NSString *)msg { + [self.tableView.mj_header endRefreshing]; +} + +- (void)getHallAnchorTotalIncomeSuccess:(GuildPersonIncomeRecordModel *)incomeInfo { + [self.tableView.mj_header endRefreshing]; + self.headerView.totalIncome = incomeInfo.totalDiamond; + self.datasource = incomeInfo.incomes; + [self.tableView reloadData]; +} + +- (void)getHallAnchorTotalIncomeFail:(NSString *)msg { + [self.tableView.mj_header endRefreshing]; +} + +#pragma mark - JXCategoryListContentViewDelegate +- (UIView *)listView { + return self.view; +} + +#pragma mark - Getters And Setters +- (void)setTimeType:(GuildIncomeRecrdTimeType)timeType { + _timeType = timeType; + switch (_timeType) { + case GuildIncomeRecrdTimeType_Day: + self.startDate = [NSDate date]; + self.endDate = [NSDate date]; + self.startTimeStr = [PLTimeUtil getYYMMDDWithDate:self.startDate]; + self.endTimeStr = [PLTimeUtil getYYMMDDWithDate:self.startDate]; + break; + case GuildIncomeRecrdTimeType_Week: + [self weekDayWithCurrentDate:[NSDate date]]; + self.startTimeStr = [PLTimeUtil getYYMMDDWithDate:self.startDate]; + self.endTimeStr = [PLTimeUtil getYYMMDDWithDate:self.endDate]; + break; + case GuildIncomeRecrdTimeType_Mouth: + [self monthWithCurrentDate:[NSDate date]]; + self.startTimeStr = [PLTimeUtil getYYMMDDWithDate:self.startDate]; + self.endTimeStr = [PLTimeUtil getYYMMDDWithDate:self.endDate]; + break; + default: + break; + } + self.headerView.timeType = timeType; + [self.headerView configHeaderView:self.startDate endTime:self.endDate]; + [self headerRefresh]; +} + +//去掉UItableview headerview黏性 +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + CGFloat sectionHeaderHeight = 37; + if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) { + scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0); + } else if (scrollView.contentOffset.y>=sectionHeaderHeight) { + scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0); + } +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPGuildIncomeRecordTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPGuildIncomeRecordTableViewCell class])]; + [_tableView registerClass:[XPGuildPersonIncomeTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPGuildPersonIncomeTableViewCell class])]; + [_tableView registerClass:[XPMineGuildEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineGuildEmptyTableViewCell class])]; + [_tableView registerClass:[XPGuildSingleRoomIncomeTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPGuildSingleRoomIncomeTableViewCell class])]; + } + return _tableView; +} + +- (XPGuildIncomeHeaderView *)headerView { + if (!_headerView) { + _headerView = [[XPGuildIncomeHeaderView alloc] init]; + _headerView.backgroundColor = [UIColor whiteColor]; + _headerView.delegate = self; + } + return _headerView; +} + +- (XPGuildTimeMonthPickerView *)monthPickerView { + if (!_monthPickerView) { + _monthPickerView = [[XPGuildTimeMonthPickerView alloc] initWithSuperView:self.view]; + _monthPickerView.delegate = self; + _monthPickerView.datePickerMode = HooDatePickerModeYearAndMonth; + [_monthPickerView setTintColor:UIColorFromRGB(0x999999)];//设置主色 + [_monthPickerView setHighlightColor:UIColorFromRGB(0x333333)]; + NSDate * date = [NSDate date]; + NSDateComponents *comps = nil; comps = [[NSCalendar sharedCalendar] components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitMonth fromDate:date]; + NSDateComponents *adcomps = [[NSDateComponents alloc] init]; + [adcomps setYear:-15]; + [adcomps setMonth:0]; + [adcomps setDay:0]; + NSDate *minDate = [[NSCalendar sharedCalendar] dateByAddingComponents:adcomps toDate:date options:0]; + + NSDateComponents *maxcomps = [[NSDateComponents alloc] init]; + [maxcomps setYear:15]; + [maxcomps setMonth:0]; + [maxcomps setDay:0]; + NSDate *maxDate = [[NSCalendar sharedCalendar] dateByAddingComponents:maxcomps toDate:date options:0]; + _monthPickerView.minimumDate = minDate; + _monthPickerView.maximumDate = maxDate; + + } + return _monthPickerView; +} +- (UIView *)foodView{ + if (!_foodView){ + _foodView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, kGetScaleWidth(108))]; + UILabel *titleView = [[UILabel alloc] init]; + titleView.text = YMLocalizedString(@"XPMineGoldIncomeRecordVC0"); + titleView.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + titleView.textColor = [DJDKMIMOMColor disableButtonTextColor]; + titleView.textAlignment = NSTextAlignmentCenter; + titleView.frame = _foodView.bounds; + [_foodView addSubview:titleView]; + } + return _foodView; +} +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGuildIncomeStatisViewController.h b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGuildIncomeStatisViewController.h new file mode 100644 index 00000000..81791bc8 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGuildIncomeStatisViewController.h @@ -0,0 +1,18 @@ +// +// XPMineGuildIncomeStatisViewController.h +// YuMi +// +// Created by YuMi on 2022/4/11. +// 家族收入统计 + +#import "BaseViewController.h" +#import +#import +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineGuildIncomeStatisViewController : BaseViewController +///公会的id +@property (nonatomic,copy) NSString *hallId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGuildIncomeStatisViewController.m b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGuildIncomeStatisViewController.m new file mode 100644 index 00000000..1919e8cf --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineGuildIncomeStatisViewController.m @@ -0,0 +1,166 @@ +// +// XPMineGuildIncomeStatisViewController.m +// YuMi +// +// Created by YuMi on 2022/4/11. +// 公会收入统计 + +#import "XPMineGuildIncomeStatisViewController.h" +///Third +#import +#import +#import +#import +///Tool +#import "UIImage+Utils.h" +#import "DJDKMIMOMColor.h" +///View +#import "XPMineGuildIncomeRecordViewController.h" +#import "XPMineGoldIncomeRecordVC.h" + +@interface XPMineGuildIncomeStatisViewController () +///分页标题 +@property (nonatomic, strong) NSArray *titles; +///分页控件 +@property (nonatomic, strong) JXCategoryTitleView *titleView; +///分页lineView +@property (nonatomic, strong) JXCategoryListContainerView *contentView; +///日 +@property (nonatomic,strong) XPMineGuildIncomeRecordViewController *dayRecordVC; +///周 +@property (nonatomic,strong) XPMineGuildIncomeRecordViewController *weekRecordVC; +///金币明细 +@property (nonatomic,strong) XPMineGoldIncomeRecordVC *goldIncomeVC; + +@end + +@implementation XPMineGuildIncomeStatisViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + self.view.backgroundColor = [UIColor whiteColor]; + self.title = YMLocalizedString(@"XPMineGuildIncomeStatisViewController0"); + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.titleView]; + [self.view addSubview:self.contentView]; +} + +- (void)initSubViewConstraints { + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.view).offset(10); + make.left.right.mas_equalTo(self.view); + make.height.mas_equalTo(30); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.titleView.mas_bottom); + make.left.right.bottom.mas_equalTo(self.view); + }]; +} + +#pragma mark - JXCategoryViewDelegate +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { + return self.titles.count; +} + +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { + if (index == 0) { + return self.dayRecordVC; + } else if(index == 1){ + return self.weekRecordVC; + }else{ + return self.goldIncomeVC; + } +} + +- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { + if (index == 0) { + self.dayRecordVC.timeType = GuildIncomeRecrdTimeType_Day; + } else if(index == 1){ + self.weekRecordVC.timeType = GuildIncomeRecrdTimeType_Week; + }else{ + + } +} + +#pragma mark - Getters And Setters +- (void)setHallId:(NSString *)hallId { + _hallId = hallId; + self.dayRecordVC.guidId = _hallId; + self.weekRecordVC.guidId = _hallId; + self.dayRecordVC.timeType = GuildIncomeRecrdTimeType_Day; +} + +- (JXCategoryTitleView *)titleView { + if (!_titleView) { + _titleView = [[JXCategoryTitleView alloc] init]; + _titleView.delegate = self; + _titleView.titles = self.titles; + _titleView.backgroundColor = [UIColor whiteColor]; + _titleView.titleColor = [DJDKMIMOMColor secondTextColor]; + _titleView.titleSelectedColor = [DJDKMIMOMColor mainTextColor]; + _titleView.titleFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; + _titleView.titleSelectedFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; + _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; + _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; + _titleView.defaultSelectedIndex = 0; + _titleView.cellSpacing = 5; + _titleView.cellWidthIncrement = 5; + _titleView.listContainer = self.contentView; + + JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init]; + UIImage *image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientMiddleColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(16, 3)]; + lineView.indicatorColor = [UIColor colorWithPatternImage:image]; + lineView.indicatorWidth = 16.f; + lineView.indicatorHeight = 3.f; + lineView.indicatorCornerRadius = 1.5f; + _titleView.indicators = @[lineView]; + + } + return _titleView; +} + +- (JXCategoryListContainerView *)contentView { + if (!_contentView) { + _contentView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; + _contentView.defaultSelectedIndex = 0; + _contentView.backgroundColor = [UIColor whiteColor]; + } + return _contentView; +} + +- (NSArray *)titles { + if (!_titles) { + _titles = @[YMLocalizedString(@"XPMineGuildIncomeStatisViewController1"), YMLocalizedString(@"XPMineGuildIncomeStatisViewController2"), YMLocalizedString(@"XPMineGuildIncomeStatisViewController3")]; + } + return _titles; +} + +- (XPMineGuildIncomeRecordViewController *)dayRecordVC { + if (!_dayRecordVC) { + _dayRecordVC = [[XPMineGuildIncomeRecordViewController alloc] init]; + _dayRecordVC.incomeType = GuildIncomeType_Hall; + } + return _dayRecordVC; +} +- (XPMineGoldIncomeRecordVC *)goldIncomeVC{ + if (!_goldIncomeVC){ + _goldIncomeVC = [XPMineGoldIncomeRecordVC new]; + } + return _goldIncomeVC; +} +- (XPMineGuildIncomeRecordViewController *)weekRecordVC { + if (!_weekRecordVC) { + _weekRecordVC = [[XPMineGuildIncomeRecordViewController alloc] init]; + _weekRecordVC.incomeType = GuildIncomeType_Hall; + } + return _weekRecordVC; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineHallAnchorIncomeStatisViewController.h b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineHallAnchorIncomeStatisViewController.h new file mode 100644 index 00000000..cd756c06 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineHallAnchorIncomeStatisViewController.h @@ -0,0 +1,16 @@ +// +// XPMineHallAnchorIncomeStatisViewController.h +// YuMi +// +// Created by YuMi on 2022/4/12. +// + +#import "BaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineHallAnchorIncomeStatisViewController : BaseViewController +@property (nonatomic,copy) NSString *hallId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineHallAnchorIncomeStatisViewController.m b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineHallAnchorIncomeStatisViewController.m new file mode 100644 index 00000000..f311e81e --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineHallAnchorIncomeStatisViewController.m @@ -0,0 +1,148 @@ +// +// XPMineHallAnchorIncomeStatisViewController.m +// YuMi +// +// Created by YuMi on 2022/4/12. +// + +#import "XPMineHallAnchorIncomeStatisViewController.h" +///Third +#import +#import +#import +#import +///Tool + +#import "DJDKMIMOMColor.h" +///View +#import "XPMineGuildIncomeRecordViewController.h" + +@interface XPMineHallAnchorIncomeStatisViewController () +///分页标题 +@property (nonatomic, strong) NSArray *titles; +///分页控件 +@property (nonatomic, strong) JXCategoryTitleView *titleView; +///分页lineView +@property (nonatomic, strong) JXCategoryListContainerView *contentView; +///日 +@property (nonatomic,strong) XPMineGuildIncomeRecordViewController *dayRecordVC; +///周 +@property (nonatomic,strong) XPMineGuildIncomeRecordViewController *weekRecordVC; +@end + +@implementation XPMineHallAnchorIncomeStatisViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + self.title = YMLocalizedString(@"XPMineHallAnchorIncomeStatisViewController0"); + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.titleView]; + [self.view addSubview:self.contentView]; +} + +- (void)initSubViewConstraints { + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.view).offset(10); + make.left.right.mas_equalTo(self.view); + make.height.mas_equalTo(30); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.titleView.mas_bottom); + make.left.right.bottom.mas_equalTo(self.view); + }]; +} + +#pragma mark - JXCategoryViewDelegate +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { + return self.titles.count; +} + +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { + if (index == 0) { + return self.dayRecordVC; + } else { + return self.weekRecordVC; + } +} + +- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { + if (index == 0) { + self.dayRecordVC.timeType = GuildIncomeRecrdTimeType_Day; + } else { + self.weekRecordVC.timeType = GuildIncomeRecrdTimeType_Week; + } +} + +#pragma mark - Getters And Setters +- (void)setHallId:(NSString *)hallId { + _hallId = hallId; + self.dayRecordVC.guidId = _hallId; + self.weekRecordVC.guidId = _hallId; + self.dayRecordVC.timeType = GuildIncomeRecrdTimeType_Day; +} + +- (JXCategoryTitleView *)titleView { + if (!_titleView) { + _titleView = [[JXCategoryTitleView alloc] init]; + _titleView.delegate = self; + _titleView.titles = self.titles; + _titleView.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; + _titleView.titleColor = [DJDKMIMOMColor secondTextColor]; + _titleView.titleSelectedColor = [DJDKMIMOMColor mainTextColor]; + _titleView.titleFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; + _titleView.titleSelectedFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; + _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; + _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; + _titleView.defaultSelectedIndex = 0; + _titleView.cellSpacing = 5; + _titleView.cellWidthIncrement = 5; + _titleView.listContainer = self.contentView; + + JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init]; + lineView.indicatorColor = [DJDKMIMOMColor appMainColor]; + lineView.indicatorWidth = 8.f; + lineView.indicatorHeight = 4.f; + lineView.indicatorCornerRadius = 2.f; + _titleView.indicators = @[lineView]; + } + return _titleView; +} + +- (JXCategoryListContainerView *)contentView { + if (!_contentView) { + _contentView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; + _contentView.defaultSelectedIndex = 0; + } + return _contentView; +} + +- (NSArray *)titles { + if (!_titles) { + _titles = @[YMLocalizedString(@"XPMineHallAnchorIncomeStatisViewController1"), YMLocalizedString(@"XPMineHallAnchorIncomeStatisViewController2")]; + } + return _titles; +} + +- (XPMineGuildIncomeRecordViewController *)dayRecordVC { + if (!_dayRecordVC) { + _dayRecordVC = [[XPMineGuildIncomeRecordViewController alloc] init]; + _dayRecordVC.incomeType = GuildIncomeType_Anchor; + } + return _dayRecordVC; +} + +- (XPMineGuildIncomeRecordViewController *)weekRecordVC { + if (!_weekRecordVC) { + _weekRecordVC = [[XPMineGuildIncomeRecordViewController alloc] init]; + _weekRecordVC.incomeType = GuildIncomeType_Anchor; + } + return _weekRecordVC; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineMainIncomeStatisViewController.h b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineMainIncomeStatisViewController.h new file mode 100644 index 00000000..a6bba8e2 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineMainIncomeStatisViewController.h @@ -0,0 +1,16 @@ +// +// XPMineMainIncomeStatisViewController.h +// YuMi +// +// Created by YuMi on 2022/11/4. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineMainIncomeStatisViewController : MvpViewController +@property (nonatomic,copy) NSString *clanId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineMainIncomeStatisViewController.m b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineMainIncomeStatisViewController.m new file mode 100644 index 00000000..bf6ebc52 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPMineMainIncomeStatisViewController.m @@ -0,0 +1,153 @@ +// +// XPMineMainIncomeStatisViewController.m +// YuMi +// +// Created by YuMi on 2022/11/4. +// + +#import "XPMineMainIncomeStatisViewController.h" +///Third + +#import +#import +#import +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" + +#import "XPNewMineGuildIncomeRecordViewController.h" + +@interface XPMineMainIncomeStatisViewController () + +///分页标题 +@property (nonatomic, strong) NSArray *titles; +///分页控件 +@property (nonatomic, strong) JXCategoryTitleView *titleView; +///分页lineView +@property (nonatomic, strong) JXCategoryListContainerView *contentView; +///公会收入 +@property (nonatomic,strong) XPNewMineGuildIncomeRecordViewController *clanIncomeVC; +///主播收入 +@property (nonatomic,strong) XPNewMineGuildIncomeRecordViewController *anchorncomeVC; + +@end + +@implementation XPMineMainIncomeStatisViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + self.title = YMLocalizedString(@"XPMineClanIncomeStatisViewController0"); + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.view.backgroundColor = [UIColor whiteColor]; + [self.view addSubview:self.titleView]; + [self.view addSubview:self.contentView]; +} + +- (void)initSubViewConstraints { + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.view).offset(10); + make.left.right.mas_equalTo(self.view); + make.height.mas_equalTo(30); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.titleView.mas_bottom); + make.left.right.bottom.mas_equalTo(self.view); + }]; +} + +#pragma mark - JXCategoryViewDelegate +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { + return self.titles.count; +} + +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { + if (index == 0) { + return self.clanIncomeVC; + } else { + return self.anchorncomeVC; + } +} + +- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { + +} + +#pragma mark - Getters And Setters +- (void)setClanId:(NSString *)clanId { + _clanId = clanId; + self.clanIncomeVC.guidId = _clanId; + self.anchorncomeVC.guidId = _clanId; + + self.clanIncomeVC.timeType = NewGuildIncomeRecrdTimeType_Day; + self.anchorncomeVC.timeType = NewGuildIncomeRecrdTimeType_Day; +} + +- (JXCategoryTitleView *)titleView { + if (!_titleView) { + _titleView = [[JXCategoryTitleView alloc] init]; + _titleView.delegate = self; + _titleView.titles = self.titles; + _titleView.backgroundColor = [UIColor whiteColor]; + _titleView.titleColor = [DJDKMIMOMColor secondTextColor]; + _titleView.titleSelectedColor = [DJDKMIMOMColor mainTextColor]; + _titleView.titleFont = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + _titleView.titleSelectedFont = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; + _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; + _titleView.defaultSelectedIndex = 0; + _titleView.cellSpacing = 5; + _titleView.cellWidthIncrement = 5; + _titleView.listContainer = self.contentView; + + JXCategoryIndicatorImageView *lineView = [[JXCategoryIndicatorImageView alloc] init]; + lineView.indicatorImageViewSize = CGSizeMake(16, 3); + lineView.verticalMargin = 0; + lineView.indicatorImageView.image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientMiddleColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(16, 3)]; + lineView.indicatorImageView.layer.masksToBounds = YES; + lineView.indicatorImageView.layer.cornerRadius = 1.5; + _titleView.indicators = @[lineView]; + } + return _titleView; +} + +- (JXCategoryListContainerView *)contentView { + if (!_contentView) { + _contentView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; + _contentView.defaultSelectedIndex = 0; + } + return _contentView; +} + +- (NSArray *)titles { + if (!_titles) { + _titles = @[YMLocalizedString(@"XPMineMainIncomeStatisViewController0"), YMLocalizedString(@"XPMineMainIncomeStatisViewController1")]; + } + return _titles; +} + +- (XPNewMineGuildIncomeRecordViewController *)clanIncomeVC { + if (!_clanIncomeVC) { + _clanIncomeVC = [[XPNewMineGuildIncomeRecordViewController alloc] init]; + _clanIncomeVC.incomeType = NewGuildIncomeType_Clan; + } + return _clanIncomeVC; +} + +- (XPNewMineGuildIncomeRecordViewController *)anchorncomeVC { + if (!_anchorncomeVC) { + _anchorncomeVC = [[XPNewMineGuildIncomeRecordViewController alloc] init]; + _anchorncomeVC.incomeType = NewGuildIncomeType_Anchor; + } + return _anchorncomeVC; +} + + + + + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPNewMineGuildIncomeRecordViewController.h b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPNewMineGuildIncomeRecordViewController.h new file mode 100644 index 00000000..7739fc3f --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPNewMineGuildIncomeRecordViewController.h @@ -0,0 +1,39 @@ +// +// XPNewMineGuildIncomeRecordViewController.h +// YuMi +// +// Created by YuMi on 2022/11/9. +// + +#import "MvpViewController.h" +#import +NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(NSInteger, NewGuildIncomeRecrdTimeType) { + ///每日 + NewGuildIncomeRecrdTimeType_Day = 1, + ///每周 + NewGuildIncomeRecrdTimeType_Week, + ///每月 + NewGuildIncomeRecrdTimeType_Mouth, +}; + +typedef NS_ENUM(NSInteger, NewGuildIncomeType) { + ///家族收入 + NewGuildIncomeType_Clan = 1, + ///公会收入 + NewGuildIncomeType_Hall, + ///个播 + NewGuildIncomeType_Anchor, +}; +@interface XPNewMineGuildIncomeRecordViewController : MvpViewController +///时间的类型 +@property (nonatomic,assign) NewGuildIncomeRecrdTimeType timeType; +///收入类型 +@property (nonatomic,assign) NewGuildIncomeType incomeType; +///公会的id 或者是家族的id +@property (nonatomic,copy) NSString *guidId; +///个播的时候 传入一个家族的id +@property (nonatomic,copy) NSString *clanId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPNewMineGuildIncomeRecordViewController.m b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPNewMineGuildIncomeRecordViewController.m new file mode 100644 index 00000000..d1c11f5f --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/XPNewMineGuildIncomeRecordViewController.m @@ -0,0 +1,467 @@ +// +// XPNewMineGuildIncomeRecordViewController.m +// YuMi +// +// Created by YuMi on 2022/11/9. +// +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "PLTimeUtil.h" +#import "TTPopup.h" +#import "NSDate+DateUtils.h" + +///Model +#import "GuildIncomeRecordModel.h" +#import "GuildPersonIncomeRecordModel.h" +///View +#import "XPGuildIncomeRecordTableViewCell.h" +#import "XPGuildPersonIncomeTableViewCell.h" +#import "XPMineGuildEmptyTableViewCell.h" +#import "XPGuildSingleRoomIncomeTableViewCell.h" +#import "XPGuildIncomeSectionView.h" +#import "XPGuildAnchorIncomeSectionView.h" +#import "XPNewGuildIncomeHeaderView.h" +#import "XPNewGuildTimePickView.h" +#import "XPGuildTimeMonthPickerView.h" +#import "XPMineGuildIncomeDetailViewController.h" +///P +#import "XPGuildIncomePresenter.h" +#import "XPGuildIncomeProtocol.h" +#import "XPNewMineGuildIncomeRecordViewController.h" + +@interface XPNewMineGuildIncomeRecordViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///头部的view +@property (nonatomic,strong) XPNewGuildIncomeHeaderView *headerView; +///数据 +@property (nonatomic,strong) NSArray *datasource; +///结束的时间 +@property (nonatomic,strong) NSDate *endDate; +///开始的时间 +@property (nonatomic,strong) NSDate *startDate; +///当前选择的时间 +@property (nonatomic,strong) NSDate *currentDate; +///选择年月 +@property (nonatomic,strong) XPGuildTimeMonthPickerView *monthPickerView; +///开始的时间戳 +@property (nonatomic,copy) NSString *startTimeStr; +///结束的时间戳 +@property (nonatomic,copy) NSString *endTimeStr; +@end + +@implementation XPNewMineGuildIncomeRecordViewController + +- (__kindof id)createPresenter { + return [[XPGuildIncomePresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initHeaderAndFooterRrfresh]; + if(self.incomeType == NewGuildIncomeType_Anchor){ + [self headerRefresh]; + } +} + +- (void)viewDidLayoutSubviews { + [super viewDidLayoutSubviews]; + [self initSubViewConstraints]; +} + +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; +} + +- (void)headerRefresh { + if (self.incomeType == NewGuildIncomeType_Clan) { + [self.presenter getClanTotalIncome:self.guidId startTime:self.startTimeStr endTime:self.endTimeStr]; + } else if(self.incomeType == NewGuildIncomeType_Hall) { + [self.presenter getHallTotalIncome:self.guidId startTime:self.startTimeStr endTime:self.endTimeStr]; + } else { +// if (self.clanId.length > 0) { +// [self.presenter getClanAnchorTotalIncome:self.clanId startTime:self.startTimeStr endTime:self.endTimeStr]; +// } else { + [self.presenter getHallAnchorTotalIncome:self.guidId startTime:self.startTimeStr endTime:self.endTimeStr]; +// } + + + } +} + +#pragma mark - Private Method +- (void)initSubViews { + self.view.backgroundColor = [UIColor whiteColor]; + [self.view addSubview:self.headerView]; + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.headerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.view); + make.right.mas_equalTo(self.view); + make.top.mas_equalTo(self.view).offset(10); + make.height.mas_equalTo(100); + }]; + + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.top.mas_equalTo(self.headerView.mas_bottom); + }]; +} + +///获取当前时间 的一个月之后的时间 +- (void)monthWithCurrentDate:(NSDate *)newDate { + if (newDate == nil) { + newDate = [NSDate date]; + } + double interval = 0; + NSDate *beginDate = nil; + NSDate *endDate = nil; + NSCalendar *calendar = [NSCalendar currentCalendar]; + [calendar setFirstWeekday:2];//设定周一为周首日 + BOOL ok = [calendar rangeOfUnit:NSCalendarUnitMonth startDate:&beginDate interval:&interval forDate:newDate]; + if (ok) { + endDate = [beginDate dateByAddingTimeInterval:interval-1]; + } else { + return; + } + self.startDate = beginDate; + self.endDate = endDate; +} + +- (void)weekDayWithCurrentDate:(NSDate *)date { + NSCalendar * calendar = [NSCalendar currentCalendar]; // 指定日历的算法 + NSDateComponents *comps = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitWeekday | NSCalendarUnitDay fromDate:date]; + // 获取今天是周几 + // 1 是周日,2是周一 3.以此类推 + NSInteger weekDay = [comps weekday]; + // 获取几天是几号 + NSInteger day = [comps day]; + long firstDiff,lastDiff; + if (weekDay == 1){ + firstDiff = -6; + lastDiff = 0; + } else { + firstDiff = -(weekDay - 2); + lastDiff = 8 - weekDay; + } + // 在当前日期(去掉时分秒)基础上加上差的天数 + NSDateComponents *baseDayComp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:date]; + //获取周一日期 + [baseDayComp setDay:day + firstDiff]; + NSDate *firstDayOfWeek = [calendar dateFromComponents:baseDayComp]; + self.startDate = firstDayOfWeek; + //获取周末日期 + [baseDayComp setDay:day + lastDiff]; + NSDate *lastDayOfWeek = [calendar dateFromComponents:baseDayComp]; + self.endDate = lastDayOfWeek; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if(self.incomeType == NewGuildIncomeType_Anchor){ + return self.datasource.count > 0 ? kGetScaleWidth(93) : 400; + } + return self.datasource.count > 0 ? 90 : 400; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + if (self.incomeType == NewGuildIncomeType_Clan) { + XPGuildIncomeRecordTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPGuildIncomeRecordTableViewCell class])]; + if (cell == nil) { + cell = [[XPGuildIncomeRecordTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPGuildIncomeRecordTableViewCell class])]; + } + cell.rankNumber = indexPath.row; + cell.userInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + return cell; + } else if(self.incomeType == NewGuildIncomeType_Hall) { + XPGuildPersonIncomeTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPGuildPersonIncomeTableViewCell class])]; + if (cell == nil) { + cell = [[XPGuildPersonIncomeTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPGuildPersonIncomeTableViewCell class])]; + } + cell.userInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + return cell; + } else if(self.incomeType == NewGuildIncomeType_Anchor) { + XPGuildSingleRoomIncomeTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPGuildSingleRoomIncomeTableViewCell class])]; + if (cell == nil) { + cell = [[XPGuildSingleRoomIncomeTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPGuildSingleRoomIncomeTableViewCell class])]; + } + + cell.userInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.rankNumber = indexPath.row; + return cell; + } + } + XPMineGuildEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineGuildEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineGuildEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineGuildEmptyTableViewCell class])]; + } + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { + + return 47; +} + +- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { + if (section == 0) { + if (self.incomeType == NewGuildIncomeType_Clan || self.incomeType == NewGuildIncomeType_Hall) { + + if(self.incomeType == NewGuildIncomeType_Clan){ + XPGuildIncomeSectionView * newSectionView = [[XPGuildIncomeSectionView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 47) right:124]; + newSectionView.incomeType = GuildIncomeType_Clan; + + return newSectionView; + } + XPGuildIncomeSectionView * sectionView = [[XPGuildIncomeSectionView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 47)]; + + GuildIncomeType type; + if (self.incomeType == NewGuildIncomeType_Hall){ + type = GuildIncomeType_Hall; + }else{ + type = GuildIncomeType_Anchor; + } + sectionView.incomeType = type ; + return sectionView; + } else { + XPGuildAnchorIncomeSectionView * sectionView = [[XPGuildAnchorIncomeSectionView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 47)]; + sectionView.isHost = YES; + return sectionView; + } + } + return [UIView new]; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ + return 0.01f; +} + +- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{ + return [[UIView alloc]init]; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.incomeType == NewGuildIncomeType_Hall) { + if (self.datasource.count > 0) { + GuildPersonIncomeUserInfoModel * memberInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + XPMineGuildIncomeDetailViewController * incomeDetailVC = [[XPMineGuildIncomeDetailViewController alloc] init]; + incomeDetailVC.hallId = self.guidId; + incomeDetailVC.startTime = self.startTimeStr; + incomeDetailVC.endTime = self.endTimeStr; + incomeDetailVC.memberInfo = memberInfo; + [self.navigationController pushViewController:incomeDetailVC animated:YES]; + } + + } +} + +#pragma mark - XPGuildIncomeHeaderViewDelegate +- (void)xPNewGuildIncomeHeaderView:(XPNewGuildIncomeHeaderView *)view didChooseTime:(UIButton *)sender { + if (self.timeType == NewGuildIncomeRecrdTimeType_Mouth) { + [self.monthPickerView setDate:[NSDate date] animated:YES]; + [self.monthPickerView show]; + } else { + XPNewGuildTimePickView * timeView = [[XPNewGuildTimePickView alloc] init]; + timeView.currentDate = [NSDate date]; + timeView.pickDateType = self.timeType == NewGuildIncomeRecrdTimeType_Week ? XPNewGuildTimePickTypeWeek : XPNewGuildTimePickTypeDay; + timeView.delegate = self; + [TTPopup popupView:timeView style:TTPopupStyleActionSheet]; + } +} + +#pragma mark - XPGuildTimeMonthPickerViewDelegate +- (void)datePicker:(XPGuildTimeMonthPickerView *)datePicker didCancel:(UIButton *)sender { + [TTPopup dismiss]; +} + +- (void)datePicker:(XPGuildTimeMonthPickerView *)dataPicker didSelectedDate:(NSDate *)date { + [TTPopup dismiss]; + [self monthWithCurrentDate:date]; + self.startTimeStr = [PLTimeUtil getYYMMDDWithDate:date]; + self.endTimeStr = [PLTimeUtil getYYMMDDWithDate:self.endDate]; + [self.headerView configHeaderView:date endTime:nil]; + [self headerRefresh]; +} + +#pragma mark -XPGuildTimePickViewDelegate +- (void)xPNewGuildTimePickView:(XPNewGuildTimePickView *)view didClickCancel:(UIButton *)sender { + [TTPopup dismiss]; +} + +- (void)xPNewGuildTimePickView:(XPNewGuildTimePickView *)view didClickSure:(UIButton *)sender { + [TTPopup dismiss]; + if (self.timeType == NewGuildIncomeRecrdTimeType_Week) { + self.startTimeStr = [PLTimeUtil getYYMMDDWithDate:view.startDate]; + self.endTimeStr = [PLTimeUtil getYYMMDDWithDate:view.endDate]; + [self.headerView configHeaderView:view.startDate endTime:view.endDate]; + } else { + self.startTimeStr = [PLTimeUtil getYYMMDDWithDate:view.startDate]; + self.endTimeStr = [PLTimeUtil getYYMMDDWithDate:view.endDate];; + [self.headerView configHeaderView:view.startDate endTime:view.endDate]; + } + [self headerRefresh]; +} + +#pragma mark - XPGuildIncomeProtocol +- (void)getClanTotalIncomeScuess:(GuildIncomeRecordModel *)incomeInfo { + [self.tableView.mj_header endRefreshing]; + self.headerView.totalIncome = incomeInfo.total; + self.datasource = incomeInfo.income; + [self.tableView reloadData]; +} + +- (void)getClanTotalIncomeFail:(NSString *)msg { + [self.tableView.mj_header endRefreshing]; +} + +- (void)getHallTotalIncomeScuess:(GuildPersonIncomeRecordModel *)incomeInfo { + [self.tableView.mj_header endRefreshing]; + self.headerView.totalIncome = incomeInfo.total; + self.datasource = incomeInfo.vos; + [self.tableView reloadData]; +} + +- (void)getHallTotalIncomeFail:(NSString *)msg { + [self.tableView.mj_header endRefreshing]; +} + +- (void)getClanAnchorTotalIncomeSuccess:(GuildPersonIncomeRecordModel *)incomeInfo { + [self.tableView.mj_header endRefreshing]; + self.headerView.totalIncome = incomeInfo.totalDiamond; + self.datasource = incomeInfo.incomes; + [self.tableView reloadData]; + +} + +- (void)getClanAnchorTotalIncomeFail:(NSString *)msg { + [self.tableView.mj_header endRefreshing]; +} + +- (void)getHallAnchorTotalIncomeSuccess:(GuildPersonIncomeRecordModel *)incomeInfo { + [self.tableView.mj_header endRefreshing]; + self.headerView.totalIncome = incomeInfo.total; + self.datasource = incomeInfo.memberIncome; + [self.tableView reloadData]; +} + +- (void)getHallAnchorTotalIncomeFail:(NSString *)msg { + [self.tableView.mj_header endRefreshing]; +} + +#pragma mark - JXCategoryListContentViewDelegate +- (UIView *)listView { + return self.view; +} + +#pragma mark - Getters And Setters +- (void)setTimeType:(NewGuildIncomeRecrdTimeType)timeType { + _timeType = timeType; + switch (_timeType) { + case NewGuildIncomeRecrdTimeType_Day: + self.startDate = [NSDate date]; + self.endDate = [NSDate date]; + self.startTimeStr = [PLTimeUtil getYYMMDDWithDate:self.startDate]; + self.endTimeStr = [PLTimeUtil getYYMMDDWithDate:self.startDate]; + break; + case NewGuildIncomeRecrdTimeType_Week: + [self weekDayWithCurrentDate:[NSDate date]]; + self.startTimeStr = [PLTimeUtil getYYMMDDWithDate:self.startDate]; + self.endTimeStr = [PLTimeUtil getYYMMDDWithDate:self.endDate]; + break; + case NewGuildIncomeRecrdTimeType_Mouth: + [self monthWithCurrentDate:[NSDate date]]; + self.startTimeStr = [PLTimeUtil getYYMMDDWithDate:self.startDate]; + self.endTimeStr = [PLTimeUtil getYYMMDDWithDate:self.endDate]; + break; + default: + break; + } + self.headerView.timeType = timeType; + [self.headerView configHeaderView:self.startDate endTime:self.endDate]; + if(self.incomeType == NewGuildIncomeType_Anchor){ + return; + } + [self headerRefresh]; +} + +//去掉UItableview headerview黏性 +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + CGFloat sectionHeaderHeight = 37; + if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) { + scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0); + } else if (scrollView.contentOffset.y>=sectionHeaderHeight) { + scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0); + } +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor whiteColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPGuildIncomeRecordTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPGuildIncomeRecordTableViewCell class])]; + [_tableView registerClass:[XPGuildPersonIncomeTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPGuildPersonIncomeTableViewCell class])]; + [_tableView registerClass:[XPMineGuildEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineGuildEmptyTableViewCell class])]; + [_tableView registerClass:[XPGuildSingleRoomIncomeTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPGuildSingleRoomIncomeTableViewCell class])]; + } + return _tableView; +} + +- (XPNewGuildIncomeHeaderView *)headerView { + if (!_headerView) { + _headerView = [[XPNewGuildIncomeHeaderView alloc] init]; + _headerView.delegate = self; + } + return _headerView; +} + +- (XPGuildTimeMonthPickerView *)monthPickerView { + if (!_monthPickerView) { + _monthPickerView = [[XPGuildTimeMonthPickerView alloc] initWithSuperView:self.view]; + _monthPickerView.delegate = self; + _monthPickerView.datePickerMode = HooDatePickerModeYearAndMonth; + [_monthPickerView setTintColor:UIColorFromRGB(0x999999)];//设置主色 + [_monthPickerView setHighlightColor:UIColorFromRGB(0x333333)]; + NSDate * date = [NSDate date]; + NSDateComponents *comps = nil; comps = [[NSCalendar sharedCalendar] components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitMonth fromDate:date]; + NSDateComponents *adcomps = [[NSDateComponents alloc] init]; + [adcomps setYear:-15]; + [adcomps setMonth:0]; + [adcomps setDay:0]; + NSDate *minDate = [[NSCalendar sharedCalendar] dateByAddingComponents:adcomps toDate:date options:0]; + + NSDateComponents *maxcomps = [[NSDateComponents alloc] init]; + [maxcomps setYear:15]; + [maxcomps setMonth:0]; + [maxcomps setDay:0]; + NSDate *maxDate = [[NSCalendar sharedCalendar] dateByAddingComponents:maxcomps toDate:date options:0]; + _monthPickerView.minimumDate = minDate; + _monthPickerView.maximumDate = maxDate; + + } + return _monthPickerView; +} +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeCollectiveRevenueStatsticsRegardGovernancer.h b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeCollectiveRevenueStatsticsRegardGovernancer.h deleted file mode 100644 index f6a5684f..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeCollectiveRevenueStatsticsRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMI_MineClanStatisViewController.h -// YuMi -// -// Created by YuMi on 2022/4/11. -// 家族收入统计 - -#import "BaseRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeCollectiveRevenueStatsticsRegardGovernancer : BaseRegardGovernancer -@property (nonatomic,copy) NSString *clanId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeCollectiveRevenueStatsticsRegardGovernancer.m b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeCollectiveRevenueStatsticsRegardGovernancer.m deleted file mode 100644 index 756c1d97..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeCollectiveRevenueStatsticsRegardGovernancer.m +++ /dev/null @@ -1,154 +0,0 @@ -// -// YUMI_MineClanStatisViewController.m -// YuMi -// -// Created by YuMi on 2022/4/11. -// - -#import "YUMIManeCollectiveRevenueStatsticsRegardGovernancer.h" -#import -#import -#import -#import - -#import "DJDKMIMOMColor.h" -#import "YUMIManeUnionRevenueReflectionRegardGovernancer.h" - -@interface YUMIManeCollectiveRevenueStatsticsRegardGovernancer () -@property (nonatomic, strong) NSArray *titles; -@property (nonatomic, strong) JXCategoryTitleView *titleView; -@property (nonatomic, strong) JXCategoryListContainerView *contentView; -@property (nonatomic,strong) YUMIManeUnionRevenueReflectionRegardGovernancer *dayReflectionVewC; -@property (nonatomic,strong) YUMIManeUnionRevenueReflectionRegardGovernancer *zhouReflectionVewC; -@property (nonatomic,strong) YUMIManeUnionRevenueReflectionRegardGovernancer *mouthReflectionVewC; -@end - -@implementation YUMIManeCollectiveRevenueStatsticsRegardGovernancer - -- (void)viewDidLoad { - [super viewDidLoad]; - self.title = YMLocalizedString(@"YUMI_MineClanIncomeStatisViewController0"); - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.titleView]; - [self.view addSubview:self.contentView]; -} - -- (void)initChildLyRestrictions { - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.view).offset(10); - make.left.right.mas_equalTo(self.view); - make.height.mas_equalTo(30); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.titleView.mas_bottom); - make.left.right.bottom.mas_equalTo(self.view); - }]; -} - -#pragma mark - JXCategoryViewDelegate -- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { - return self.titles.count; -} - -- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { - if (index == 0) { - return self.dayReflectionVewC; - } else if(index == 1) { - return self.zhouReflectionVewC; - } else { - return self.mouthReflectionVewC; - } -} - -- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { - if (index == 0) { - self.dayReflectionVewC.intratemporalGenre = UnionIncomeRecrdTimeGenre_Day; - } else if(index == 1) { - self.zhouReflectionVewC.intratemporalGenre = UnionIncomeRecrdTimeGenre_Week; - } else { - self.mouthReflectionVewC.intratemporalGenre = UnionIncomeRecrdTimeGenre_Mouth; - } -} - -#pragma mark - Getters And Setters -- (void)setClanId:(NSString *)clanId { - _clanId = clanId; - self.dayReflectionVewC.characteristicId = _clanId; - self.zhouReflectionVewC.characteristicId = _clanId; - self.mouthReflectionVewC.characteristicId = _clanId; - self.dayReflectionVewC.intratemporalGenre = UnionIncomeRecrdTimeGenre_Day; -} - -- (JXCategoryTitleView *)titleView { - if (!_titleView) { - _titleView = [[JXCategoryTitleView alloc] init]; - _titleView.delegate = self; - _titleView.titles = self.titles; - _titleView.backgroundColor = [DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]; - _titleView.titleColor = [DJDKMIMOMColor instantEssayPrettify]; - _titleView.titleSelectedColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleView.titleFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; - _titleView.titleSelectedFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; - _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; - _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; - _titleView.defaultSelectedIndex = 0; - _titleView.cellSpacing = 5; - _titleView.cellWidthIncrement = 5; - _titleView.listContainer = self.contentView; - - JXCategoryIndicatorLineView *burlywoodRegard = [[JXCategoryIndicatorLineView alloc] init]; - burlywoodRegard.indicatorColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - burlywoodRegard.indicatorWidth = 8.f; - burlywoodRegard.indicatorHeight = 4.f; - burlywoodRegard.indicatorCornerRadius = 2.f; - _titleView.indicators = @[burlywoodRegard]; - } - return _titleView; -} - -- (JXCategoryListContainerView *)contentView { - if (!_contentView) { - _contentView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; - _contentView.defaultSelectedIndex = 0; - } - return _contentView; -} - -- (NSArray *)titles { - if (!_titles) { - _titles = @[YMLocalizedString(@"YUMI_MineClanIncomeStatisViewController1"), YMLocalizedString(@"YUMI_MineClanIncomeStatisViewController2"), YMLocalizedString(@"YUMI_MineClanIncomeStatisViewController3")]; - } - return _titles; -} - -- (YUMIManeUnionRevenueReflectionRegardGovernancer *)dayReflectionVewC { - if (!_dayReflectionVewC) { - _dayReflectionVewC = [[YUMIManeUnionRevenueReflectionRegardGovernancer alloc] init]; - _dayReflectionVewC.revenueGenre = UnionIncomeGenre_Clan; - } - return _dayReflectionVewC; -} - -- (YUMIManeUnionRevenueReflectionRegardGovernancer *)zhouReflectionVewC { - if (!_zhouReflectionVewC) { - _zhouReflectionVewC = [[YUMIManeUnionRevenueReflectionRegardGovernancer alloc] init]; - _zhouReflectionVewC.revenueGenre = UnionIncomeGenre_Clan; - } - return _zhouReflectionVewC; -} - -- (YUMIManeUnionRevenueReflectionRegardGovernancer *)mouthReflectionVewC { - if (!_mouthReflectionVewC) { - _mouthReflectionVewC = [[YUMIManeUnionRevenueReflectionRegardGovernancer alloc] init]; - _mouthReflectionVewC.revenueGenre = UnionIncomeGenre_Clan; - } - return _mouthReflectionVewC; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeGoldRevenueReflectionVC.h b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeGoldRevenueReflectionVC.h deleted file mode 100644 index c6b1e23a..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeGoldRevenueReflectionVC.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIManeGoldRevenueReflectionVC.h -// YuMi -// -// Created by YuMi on 2022/12/16. -// - -#import "MvpRegardGovernancer.h" -#import -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeGoldRevenueReflectionVC : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeGoldRevenueReflectionVC.m b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeGoldRevenueReflectionVC.m deleted file mode 100644 index 2100b0b2..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeGoldRevenueReflectionVC.m +++ /dev/null @@ -1,266 +0,0 @@ -// -// YUMIManeGoldRevenueReflectionVC.m -// YuMi -// -// Created by YuMi on 2022/12/16. -// - -#import "YUMIManeGoldRevenueReflectionVC.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "PLIntratemporalUtil.h" -#import "MKJPopup.h" -#import "NSDate+DateUtils.h" - -#import "UnionRevenueReflectionMatrix.h" -#import "UnionFeatureRevenueReflectionMatrix.h" -#import "YUMIUnionRevenueReflectionTabulationRegardElement.h" -#import "YUMIUnionFeatureRevenueTabulationRegardElement.h" -#import "YUMIManeUnionDispossessTabulationRegardElement.h" -#import "YUMIRevenueReflectionGoldSpecificsElement.h" -#import "YUMIUnionRevenueDivisionRegard.h" -#import "YUMIUnionKellegRevenueDivisionRegard.h" -#import "YUMIUnionRevenueIntelligencerRegard.h" -#import "YUMIUnionIntratemporalPickRegard.h" -#import "YUMIUnionIntratemporalMonthPickerRegard.h" -#import "YUMIGoldRevenueDivisionRegard.h" -#import "YUMIManeUnionRevenueSpecificRegardGovernancer.h" - -#import "YUMICollectiveExternalizer.h" -#import "FBCCollectiveCeremony.h" - -@interface YUMIManeGoldRevenueReflectionVC () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) YUMIUnionRevenueIntelligencerRegard *intelligenceerRegard; -@property (nonatomic,strong) NSArray *datasource; -@property (nonatomic,strong) NSDate *endDate; -@property (nonatomic,strong) NSDate *startDate; -@property (nonatomic,strong) NSDate *currentDate; -@property (nonatomic,strong) YUMIUnionIntratemporalMonthPickerRegard *monthExtracterRegard; -@property (nonatomic,copy) NSString *startIntratemporalBWStt; -@property (nonatomic,copy) NSString *endIntratemporalBWStt; -@property (nonatomic,strong) YUMIGoldRevenueDivisionRegard *sectionRegard; -@property (nonatomic,assign) int type; -@property (nonatomic,strong) UIView *foodRegard; -@end - -@implementation YUMIManeGoldRevenueReflectionVC -- (__kindof id)producePresimport { - return [[YUMICollectiveExternalizer alloc] init]; -} -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - self.type = 1; - [self weekSeasonAboutUniversalEngagement:[NSDate date]]; - self.startIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:self.startDate]; - self.endIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:self.endDate]; - self.intelligenceerRegard.intratemporalGenre = UnionIncomeRecrdTimeGenre_Week; - [self.intelligenceerRegard prohibitipositionIntelligencerRegard:self.startDate endTime:self.endDate]; - [self.presimport acquireCollectiveChamberGoldSttowardsement:self.startIntratemporalBWStt endTime:self.endIntratemporalBWStt]; -} - - - - -#pragma mark- FBCCollectiveCeremony -- (void)acquireCollectiveChamberGoldsSttowardsementAccomplishment:(YUMIRevenueReflectionGoldSpecificsMatrix *)model{ - self.intelligenceerRegard.generalRevenue = model.total; - if(self.type == 1){ - NSArray *list = [model.hallMember sortedArrayUsingComparator:^NSComparisonResult(YUMIRevenueReflectionGoldSpecificProvisionMatrix * _Nonnull obj1, YUMIRevenueReflectionGoldSpecificProvisionMatrix * _Nonnull obj2) { - return obj1.giftDiamonds.integerValue < obj2.giftDiamonds.integerValue; - }]; - self.datasource = list; - }else{ - NSArray *list = [model.hallMember sortedArrayUsingComparator:^NSComparisonResult(YUMIRevenueReflectionGoldSpecificProvisionMatrix * _Nonnull obj1, YUMIRevenueReflectionGoldSpecificProvisionMatrix * _Nonnull obj2) { - return obj1.remainGolds.integerValue < obj2.remainGolds.integerValue; - }]; - self.datasource = list; - } - - [self.tableView reloadData]; -} -- (void)weekSeasonAboutUniversalEngagement:(NSDate *)date { - NSCalendar * calendar = [NSCalendar currentCalendar]; - NSDateComponents *comps = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitWeekday | NSCalendarUnitDay fromDate:date]; - - - NSInteger weekDay = [comps weekday]; - - NSInteger day = [comps day]; - long firstDiff,lastDiff; - if (weekDay == 1){ - firstDiff = -6; - lastDiff = 0; - } else { - firstDiff = -(weekDay - 2); - lastDiff = 8 - weekDay; - } - - NSDateComponents *baseDayComp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:date]; - - [baseDayComp setDay:day + firstDiff]; - NSDate *firstDayOfWeek = [calendar dateFromComponents:baseDayComp]; - self.startDate = firstDayOfWeek; - - [baseDayComp setDay:day + lastDiff]; - NSDate *lastDayOfWeek = [calendar dateFromComponents:baseDayComp]; - self.endDate = lastDayOfWeek; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.view.backgroundColor = [UIColor whiteColor]; - [self.view addSubview:self.intelligenceerRegard]; - [self.view addSubview:self.sectionRegard]; - [self.view addSubview:self.tableView]; -} -- (void)initChildLyRestrictions { - [self.intelligenceerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.view); - make.right.mas_equalTo(self.view); - make.top.mas_equalTo(self.view); - make.height.mas_equalTo(kGetScaleWidth(124)); - }]; - - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.top.mas_equalTo(self.sectionRegard.mas_bottom); - }]; -} -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return self.datasource.count > 0 ? kGetScaleWidth(71) : 400; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if(self.datasource.count > 0){ - YUMIRevenueReflectionGoldSpecificsElement * cell = [tableView dequeueReusableCellWithIdentifier:@"XPIncomeRecordGoldDetailsCellWithClan" forIndexPath:indexPath]; - cell.specificMatrix = self.datasource[indexPath.row]; - cell.path = indexPath.row; - return cell; - } - YUMIManeUnionDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeUnionDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeUnionDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeUnionDispossessTabulationRegardElement class])]; - } - return cell; -} -- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ - if(self.datasource.count > 0){ - return kGetScaleWidth(108); - } - return 0; -} --(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{ - if(self.datasource.count > 0){ - return self.foodRegard; - } - - return nil; - -} -#pragma mark- FBCGoldIncomeSectionRegardRepresendtation - -- (void)concludeGoldTangerineTelling:(int)type isAscending:(BOOL)isAscending{ - if(type == 1){ - self.type = 1; - NSArray *list = [self.datasource sortedArrayUsingComparator:^NSComparisonResult(YUMIRevenueReflectionGoldSpecificProvisionMatrix * _Nonnull obj1, YUMIRevenueReflectionGoldSpecificProvisionMatrix * _Nonnull obj2) { - if(isAscending == YES){ - return obj2.giftDiamonds.integerValue > obj1.giftDiamonds.integerValue; - } - return obj1.giftDiamonds.integerValue > obj2.giftDiamonds.integerValue; - }]; - self.datasource = [NSMutableArray arrayWithArray:list]; - [self.tableView reloadData]; - return; - } - self.type = 2; - NSArray *list = [self.datasource sortedArrayUsingComparator:^NSComparisonResult(YUMIRevenueReflectionGoldSpecificProvisionMatrix * _Nonnull obj1, YUMIRevenueReflectionGoldSpecificProvisionMatrix * _Nonnull obj2) { - if(isAscending == YES){ - return obj2.remainGolds.integerValue > obj1.remainGolds.integerValue; - } - return obj1.remainGolds.integerValue > obj2.remainGolds.integerValue; - }]; - self.datasource = [NSMutableArray arrayWithArray:list]; - [self.tableView reloadData]; -} - -#pragma mark - FBCUnionIncomeIntelligencerRegardRepresendtation -- (void)yUMIUnionRevenueIntelligencerRegard:(YUMIUnionRevenueIntelligencerRegard *)view didChooseTime:(UIButton *)sender { -} -- (void)didTicktackSurePerformanceWtihInititowardseEngagement:(NSDate *)startDate endDate:(NSDate *)endDate{ - self.startIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:startDate]; - self.endIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:endDate]; - [self.intelligenceerRegard prohibitipositionIntelligencerRegard:startDate endTime:endDate]; - [self.presimport acquireCollectiveChamberGoldSttowardsement:self.startIntratemporalBWStt endTime:self.endIntratemporalBWStt]; -} - -#pragma mark - JXCategoryListContentViewDelegate -- (UIView *)listView { - return self.view; -} - -#pragma mark - Getters And Setters - -- (void)scrollViewDidScroll:(UIScrollView *)scrollView { - CGFloat sectionHeaderHeight = 37; - if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) { - scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0); - } else if (scrollView.contentOffset.y>=sectionHeaderHeight) { - scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0); - } -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIManeUnionDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeUnionDispossessTabulationRegardElement class])]; - [_tableView registerClass:[YUMIRevenueReflectionGoldSpecificsElement class] forCellReuseIdentifier:@"XPIncomeRecordGoldDetailsCellWithClan"]; - } - return _tableView; -} - -- (YUMIUnionRevenueIntelligencerRegard *)intelligenceerRegard { - if (!_intelligenceerRegard) { - _intelligenceerRegard = [[YUMIUnionRevenueIntelligencerRegard alloc] init]; - _intelligenceerRegard.backgroundColor = [UIColor whiteColor]; - _intelligenceerRegard.delegate = self; - } - return _intelligenceerRegard; -} - -- (YUMIGoldRevenueDivisionRegard *)sectionRegard{ - if (!_sectionRegard){ - _sectionRegard = [[YUMIGoldRevenueDivisionRegard alloc]initWithFrame:CGRectMake(0, kGetScaleWidth(124), KScreenWidth, kGetScaleWidth(47))]; - _sectionRegard.delegate = self; - } - return _sectionRegard; -} -- (UIView *)foodRegard{ - if (!_foodRegard){ - _foodRegard = [[UIView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, kGetScaleWidth(108))]; - UILabel *titleView = [[UILabel alloc] init]; - titleView.text = YMLocalizedString(@"YUMI_MineGoldIncomeRecordVC0"); - titleView.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - titleView.textColor = [DJDKMIMOMColor prohibitionBtutonEssayPrettify]; - titleView.textAlignment = NSTextAlignmentCenter; - titleView.frame = _foodRegard.bounds; - [_foodRegard addSubview:titleView]; - } - return _foodRegard; -} -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeHallKellegRevenueStatsticsRegardGovernancer.h b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeHallKellegRevenueStatsticsRegardGovernancer.h deleted file mode 100644 index 97fdd3da..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeHallKellegRevenueStatsticsRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIManeHallKellegRevenueStatsticsRegardGovernancer.h -// YuMi -// -// Created by YuMi on 2022/4/12. -// - -#import "BaseRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeHallKellegRevenueStatsticsRegardGovernancer : BaseRegardGovernancer -@property (nonatomic,copy) NSString *hallId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeHallKellegRevenueStatsticsRegardGovernancer.m b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeHallKellegRevenueStatsticsRegardGovernancer.m deleted file mode 100644 index ba09e5ec..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeHallKellegRevenueStatsticsRegardGovernancer.m +++ /dev/null @@ -1,140 +0,0 @@ -// -// YUMIManeHallKellegRevenueStatsticsRegardGovernancer.m -// YuMi -// -// Created by YuMi on 2022/4/12. -// - -#import "YUMIManeHallKellegRevenueStatsticsRegardGovernancer.h" -#import -#import -#import -#import - -#import "DJDKMIMOMColor.h" -#import "YUMIManeUnionRevenueReflectionRegardGovernancer.h" - -@interface YUMIManeHallKellegRevenueStatsticsRegardGovernancer () -@property (nonatomic, strong) NSArray *titles; -@property (nonatomic, strong) JXCategoryTitleView *titleView; -@property (nonatomic, strong) JXCategoryListContainerView *contentView; -@property (nonatomic,strong) YUMIManeUnionRevenueReflectionRegardGovernancer *dayReflectionVewC; -@property (nonatomic,strong) YUMIManeUnionRevenueReflectionRegardGovernancer *zhouReflectionVewC; -@end - -@implementation YUMIManeHallKellegRevenueStatsticsRegardGovernancer - -- (void)viewDidLoad { - [super viewDidLoad]; - self.title = YMLocalizedString(@"YUMI_MineHallAnchorIncomeStatisViewController0"); - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.titleView]; - [self.view addSubview:self.contentView]; -} - -- (void)initChildLyRestrictions { - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.view).offset(10); - make.left.right.mas_equalTo(self.view); - make.height.mas_equalTo(30); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.titleView.mas_bottom); - make.left.right.bottom.mas_equalTo(self.view); - }]; -} - -#pragma mark - JXCategoryViewDelegate -- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { - return self.titles.count; -} - -- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { - if (index == 0) { - return self.dayReflectionVewC; - } else { - return self.zhouReflectionVewC; - } -} - -- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { - if (index == 0) { - self.dayReflectionVewC.intratemporalGenre = UnionIncomeRecrdTimeGenre_Day; - } else { - self.zhouReflectionVewC.intratemporalGenre = UnionIncomeRecrdTimeGenre_Week; - } -} - -#pragma mark - Getters And Setters -- (void)setHallId:(NSString *)hallId { - _hallId = hallId; - self.dayReflectionVewC.characteristicId = _hallId; - self.zhouReflectionVewC.characteristicId = _hallId; - self.dayReflectionVewC.intratemporalGenre = UnionIncomeRecrdTimeGenre_Day; -} - -- (JXCategoryTitleView *)titleView { - if (!_titleView) { - _titleView = [[JXCategoryTitleView alloc] init]; - _titleView.delegate = self; - _titleView.titles = self.titles; - _titleView.backgroundColor = [DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]; - _titleView.titleColor = [DJDKMIMOMColor instantEssayPrettify]; - _titleView.titleSelectedColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleView.titleFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; - _titleView.titleSelectedFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; - _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; - _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; - _titleView.defaultSelectedIndex = 0; - _titleView.cellSpacing = 5; - _titleView.cellWidthIncrement = 5; - _titleView.listContainer = self.contentView; - - JXCategoryIndicatorLineView *burlywoodRegard = [[JXCategoryIndicatorLineView alloc] init]; - burlywoodRegard.indicatorColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - burlywoodRegard.indicatorWidth = 8.f; - burlywoodRegard.indicatorHeight = 4.f; - burlywoodRegard.indicatorCornerRadius = 2.f; - _titleView.indicators = @[burlywoodRegard]; - } - return _titleView; -} - -- (JXCategoryListContainerView *)contentView { - if (!_contentView) { - _contentView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; - _contentView.defaultSelectedIndex = 0; - } - return _contentView; -} - -- (NSArray *)titles { - if (!_titles) { - _titles = @[YMLocalizedString(@"YUMI_MineHallAnchorIncomeStatisViewController1"), YMLocalizedString(@"YUMI_MineHallAnchorIncomeStatisViewController2")]; - } - return _titles; -} - -- (YUMIManeUnionRevenueReflectionRegardGovernancer *)dayReflectionVewC { - if (!_dayReflectionVewC) { - _dayReflectionVewC = [[YUMIManeUnionRevenueReflectionRegardGovernancer alloc] init]; - _dayReflectionVewC.revenueGenre = UnionIncomeGenre_Anchor; - } - return _dayReflectionVewC; -} - -- (YUMIManeUnionRevenueReflectionRegardGovernancer *)zhouReflectionVewC { - if (!_zhouReflectionVewC) { - _zhouReflectionVewC = [[YUMIManeUnionRevenueReflectionRegardGovernancer alloc] init]; - _zhouReflectionVewC.revenueGenre = UnionIncomeGenre_Anchor; - } - return _zhouReflectionVewC; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeKellegRevenueStatsticsRegardGovernancer.h b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeKellegRevenueStatsticsRegardGovernancer.h deleted file mode 100644 index 38d3ecb6..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeKellegRevenueStatsticsRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIManeKellegRevenueStatsticsRegardGovernancer.h -// YuMi -// -// Created by YuMi on 2022/4/11. -// - -#import "BaseRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeKellegRevenueStatsticsRegardGovernancer : BaseRegardGovernancer -@property (nonatomic,copy) NSString *clanId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeKellegRevenueStatsticsRegardGovernancer.m b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeKellegRevenueStatsticsRegardGovernancer.m deleted file mode 100644 index fb09af0b..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeKellegRevenueStatsticsRegardGovernancer.m +++ /dev/null @@ -1,140 +0,0 @@ -// -// YUMIManeKellegRevenueStatsticsRegardGovernancer.m -// YuMi -// -// Created by YuMi on 2022/4/11. -// 家族个播收入统计 - -#import "YUMIManeKellegRevenueStatsticsRegardGovernancer.h" -#import -#import -#import -#import - -#import "DJDKMIMOMColor.h" -#import "YUMIManeUnionRevenueReflectionRegardGovernancer.h" - -@interface YUMIManeKellegRevenueStatsticsRegardGovernancer () -@property (nonatomic, strong) NSArray *titles; -@property (nonatomic, strong) JXCategoryTitleView *titleView; -@property (nonatomic, strong) JXCategoryListContainerView *contentView; -@property (nonatomic,strong) YUMIManeUnionRevenueReflectionRegardGovernancer *dayReflectionVewC; -@property (nonatomic,strong) YUMIManeUnionRevenueReflectionRegardGovernancer *zhouReflectionVewC; -@end - -@implementation YUMIManeKellegRevenueStatsticsRegardGovernancer - -- (void)viewDidLoad { - [super viewDidLoad]; - self.title = YMLocalizedString(@"YUMI_MineAnchorIncomeStatisViewController0"); - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.titleView]; - [self.view addSubview:self.contentView]; -} - -- (void)initChildLyRestrictions { - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.view).offset(10); - make.left.right.mas_equalTo(self.view); - make.height.mas_equalTo(30); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.titleView.mas_bottom); - make.left.right.bottom.mas_equalTo(self.view); - }]; -} - -#pragma mark - JXCategoryViewDelegate -- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { - return self.titles.count; -} - -- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { - if (index == 0) { - return self.dayReflectionVewC; - } else { - return self.zhouReflectionVewC; - } -} - -- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { - if (index == 0) { - self.dayReflectionVewC.intratemporalGenre = UnionIncomeRecrdTimeGenre_Day; - } else { - self.zhouReflectionVewC.intratemporalGenre = UnionIncomeRecrdTimeGenre_Week; - } -} - -#pragma mark - Getters And Setters -- (void)setClanId:(NSString *)clanId { - _clanId = clanId; - self.dayReflectionVewC.clanId = _clanId; - self.zhouReflectionVewC.clanId = _clanId; - self.dayReflectionVewC.intratemporalGenre = UnionIncomeRecrdTimeGenre_Day; -} - -- (JXCategoryTitleView *)titleView { - if (!_titleView) { - _titleView = [[JXCategoryTitleView alloc] init]; - _titleView.delegate = self; - _titleView.titles = self.titles; - _titleView.backgroundColor = [DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]; - _titleView.titleColor = [DJDKMIMOMColor instantEssayPrettify]; - _titleView.titleSelectedColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleView.titleFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; - _titleView.titleSelectedFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; - _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; - _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; - _titleView.defaultSelectedIndex = 0; - _titleView.cellSpacing = 5; - _titleView.cellWidthIncrement = 5; - _titleView.listContainer = self.contentView; - - JXCategoryIndicatorLineView *burlywoodRegard = [[JXCategoryIndicatorLineView alloc] init]; - burlywoodRegard.indicatorColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - burlywoodRegard.indicatorWidth = 8.f; - burlywoodRegard.indicatorHeight = 4.f; - burlywoodRegard.indicatorCornerRadius = 2.f; - _titleView.indicators = @[burlywoodRegard]; - } - return _titleView; -} - -- (JXCategoryListContainerView *)contentView { - if (!_contentView) { - _contentView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; - _contentView.defaultSelectedIndex = 0; - } - return _contentView; -} - -- (NSArray *)titles { - if (!_titles) { - _titles = @[YMLocalizedString(@"YUMI_MineAnchorIncomeStatisViewController1"), YMLocalizedString(@"YUMI_MineAnchorIncomeStatisViewController2")]; - } - return _titles; -} - -- (YUMIManeUnionRevenueReflectionRegardGovernancer *)dayReflectionVewC { - if (!_dayReflectionVewC) { - _dayReflectionVewC = [[YUMIManeUnionRevenueReflectionRegardGovernancer alloc] init]; - _dayReflectionVewC.revenueGenre = UnionIncomeGenre_Anchor; - } - return _dayReflectionVewC; -} - -- (YUMIManeUnionRevenueReflectionRegardGovernancer *)zhouReflectionVewC { - if (!_zhouReflectionVewC) { - _zhouReflectionVewC = [[YUMIManeUnionRevenueReflectionRegardGovernancer alloc] init]; - _zhouReflectionVewC.revenueGenre = UnionIncomeGenre_Anchor; - } - return _zhouReflectionVewC; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeMainRevenueStatsticsRegardGovernancer.h b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeMainRevenueStatsticsRegardGovernancer.h deleted file mode 100644 index e1ae4d22..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeMainRevenueStatsticsRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIManeMainRevenueStatsticsRegardGovernancer.h -// YuMi -// -// Created by YuMi on 2022/11/4. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeMainRevenueStatsticsRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,copy) NSString *clanId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeMainRevenueStatsticsRegardGovernancer.m b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeMainRevenueStatsticsRegardGovernancer.m deleted file mode 100644 index 80484f61..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeMainRevenueStatsticsRegardGovernancer.m +++ /dev/null @@ -1,147 +0,0 @@ -// -// YUMIManeMainRevenueStatsticsRegardGovernancer.m -// YuMi -// -// Created by YuMi on 2022/11/4. -// - -#import "YUMIManeMainRevenueStatsticsRegardGovernancer.h" - -#import -#import -#import -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" - -#import "YUMIStrangeManeUnionRevenueReflectionRegardGovernancer.h" - -@interface YUMIManeMainRevenueStatsticsRegardGovernancer () - -@property (nonatomic, strong) NSArray *titles; -@property (nonatomic, strong) JXCategoryTitleView *titleView; -@property (nonatomic, strong) JXCategoryListContainerView *contentView; -@property (nonatomic,strong) YUMIStrangeManeUnionRevenueReflectionRegardGovernancer *collectiveRevenueVewC; -@property (nonatomic,strong) YUMIStrangeManeUnionRevenueReflectionRegardGovernancer *kellegncomeVewC; - -@end - -@implementation YUMIManeMainRevenueStatsticsRegardGovernancer - -- (void)viewDidLoad { - [super viewDidLoad]; - self.title = YMLocalizedString(@"YUMI_MineClanIncomeStatisViewController0"); - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.view.backgroundColor = [UIColor whiteColor]; - [self.view addSubview:self.titleView]; - [self.view addSubview:self.contentView]; -} - -- (void)initChildLyRestrictions { - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.view).offset(10); - make.left.right.mas_equalTo(self.view); - make.height.mas_equalTo(30); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.titleView.mas_bottom); - make.left.right.bottom.mas_equalTo(self.view); - }]; -} - -#pragma mark - JXCategoryViewDelegate -- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { - return self.titles.count; -} - -- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { - if (index == 0) { - return self.collectiveRevenueVewC; - } else { - return self.kellegncomeVewC; - } -} - -- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { - -} - -#pragma mark - Getters And Setters -- (void)setClanId:(NSString *)clanId { - _clanId = clanId; - self.collectiveRevenueVewC.characteristicId = _clanId; - self.kellegncomeVewC.characteristicId = _clanId; - - self.collectiveRevenueVewC.intratemporalGenre = NewUnionIncomeRecrdTimeGenre_Day; - self.kellegncomeVewC.intratemporalGenre = NewUnionIncomeRecrdTimeGenre_Day; -} - -- (JXCategoryTitleView *)titleView { - if (!_titleView) { - _titleView = [[JXCategoryTitleView alloc] init]; - _titleView.delegate = self; - _titleView.titles = self.titles; - _titleView.backgroundColor = [UIColor whiteColor]; - _titleView.titleColor = [DJDKMIMOMColor instantEssayPrettify]; - _titleView.titleSelectedColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleView.titleFont = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - _titleView.titleSelectedFont = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; - _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; - _titleView.defaultSelectedIndex = 0; - _titleView.cellSpacing = 5; - _titleView.cellWidthIncrement = 5; - _titleView.listContainer = self.contentView; - - JXCategoryIndicatorImageView *burlywoodRegard = [[JXCategoryIndicatorImageView alloc] init]; - burlywoodRegard.indicatorImageViewSize = CGSizeMake(16, 3); - burlywoodRegard.verticalMargin = 0; - burlywoodRegard.indicatorImageView.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityMiddlePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(16, 3)]; - burlywoodRegard.indicatorImageView.layer.masksToBounds = YES; - burlywoodRegard.indicatorImageView.layer.cornerRadius = 1.5; - _titleView.indicators = @[burlywoodRegard]; - } - return _titleView; -} - -- (JXCategoryListContainerView *)contentView { - if (!_contentView) { - _contentView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; - _contentView.defaultSelectedIndex = 0; - } - return _contentView; -} - -- (NSArray *)titles { - if (!_titles) { - _titles = @[YMLocalizedString(@"YUMI_MineMainIncomeStatisViewController0"), YMLocalizedString(@"YUMI_MineMainIncomeStatisViewController1")]; - } - return _titles; -} - -- (YUMIStrangeManeUnionRevenueReflectionRegardGovernancer *)collectiveRevenueVewC { - if (!_collectiveRevenueVewC) { - _collectiveRevenueVewC = [[YUMIStrangeManeUnionRevenueReflectionRegardGovernancer alloc] init]; - _collectiveRevenueVewC.revenueGenre = NewUnionIncomeGenre_Clan; - } - return _collectiveRevenueVewC; -} - -- (YUMIStrangeManeUnionRevenueReflectionRegardGovernancer *)kellegncomeVewC { - if (!_kellegncomeVewC) { - _kellegncomeVewC = [[YUMIStrangeManeUnionRevenueReflectionRegardGovernancer alloc] init]; - _kellegncomeVewC.revenueGenre = NewUnionIncomeGenre_Anchor; - } - return _kellegncomeVewC; -} - - - - - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeUnionRevenueReflectionRegardGovernancer.h b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeUnionRevenueReflectionRegardGovernancer.h deleted file mode 100644 index 5350b2c0..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeUnionRevenueReflectionRegardGovernancer.h +++ /dev/null @@ -1,37 +0,0 @@ -// -// YUMIManeUnionRevenueReflectionRegardGovernancer.h -// YuMi -// -// Created by YuMi on 2022/4/11. -// - -#import "MvpRegardGovernancer.h" -#import -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, UnionIncomeRecrdTimeGenre) { - - UnionIncomeRecrdTimeGenre_Day = 1, - - UnionIncomeRecrdTimeGenre_Week, - - UnionIncomeRecrdTimeGenre_Mouth, -}; - -typedef NS_ENUM(NSInteger, UnionIncomeGenre) { - - UnionIncomeGenre_Clan = 1, - - UnionIncomeGenre_Hall, - - UnionIncomeGenre_Anchor, -}; - -@interface YUMIManeUnionRevenueReflectionRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,assign) UnionIncomeRecrdTimeGenre intratemporalGenre; -@property (nonatomic,assign) UnionIncomeGenre revenueGenre; -@property (nonatomic,copy) NSString *characteristicId; -@property (nonatomic,copy) NSString *clanId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeUnionRevenueReflectionRegardGovernancer.m b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeUnionRevenueReflectionRegardGovernancer.m deleted file mode 100644 index 800bc7cf..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeUnionRevenueReflectionRegardGovernancer.m +++ /dev/null @@ -1,444 +0,0 @@ -// -// YUMIManeUnionRevenueReflectionRegardGovernancer.m -// YuMi -// -// Created by YuMi on 2022/4/11. -// - -#import "YUMIManeUnionRevenueReflectionRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "PLIntratemporalUtil.h" -#import "MKJPopup.h" -#import "NSDate+DateUtils.h" - -#import "UnionRevenueReflectionMatrix.h" -#import "UnionFeatureRevenueReflectionMatrix.h" -#import "YUMIUnionRevenueReflectionTabulationRegardElement.h" -#import "YUMIUnionFeatureRevenueTabulationRegardElement.h" -#import "YUMIManeUnionDispossessTabulationRegardElement.h" -#import "YUMIUnionSingleChamberRevenueTabulationRegardElement.h" -#import "YUMIUnionRevenueDivisionRegard.h" -#import "YUMIUnionKellegRevenueDivisionRegard.h" -#import "YUMIUnionRevenueIntelligencerRegard.h" -#import "YUMIUnionIntratemporalPickRegard.h" -#import "YUMIUnionIntratemporalMonthPickerRegard.h" -#import "YUMIManeUnionRevenueSpecificRegardGovernancer.h" -#import "YUMIUnionRevenueExternalizer.h" -#import "FBCUnionIncomeCeremony.h" -@interface YUMIManeUnionRevenueReflectionRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) YUMIUnionRevenueIntelligencerRegard *intelligenceerRegard; -@property (nonatomic,strong) NSArray *datasource; -@property (nonatomic,strong) NSDate *endDate; -@property (nonatomic,strong) NSDate *startDate; -@property (nonatomic,strong) NSDate *currentDate; -@property (nonatomic,strong) YUMIUnionIntratemporalMonthPickerRegard *monthExtracterRegard; -@property (nonatomic,copy) NSString *startIntratemporalBWStt; -@property (nonatomic,copy) NSString *endIntratemporalBWStt; -@property (nonatomic,strong) UIView *foodRegard; -@end - -@implementation YUMIManeUnionRevenueReflectionRegardGovernancer - -- (__kindof id)producePresimport { - return [[YUMIUnionRevenueExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initIntelligencerGrantedTerminalerRrfresh]; -} - -- (void)viewDidLayoutSubviews { - [super viewDidLayoutSubviews]; - [self initChildLyRestrictions]; -} - -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; -} - -- (void)intelligenceerRenovtowardseh { - if (self.revenueGenre == UnionIncomeGenre_Clan) { - [self.presimport acquireCollectiveGeneralRevenue:self.characteristicId startTime:self.startIntratemporalBWStt endTime:self.endIntratemporalBWStt]; - } else if(self.revenueGenre == UnionIncomeGenre_Hall) { - [self.presimport acquireCorridorGeneralRevenue:self.characteristicId startTime:self.startIntratemporalBWStt endTime:self.endIntratemporalBWStt]; - } else { - if (self.clanId.length > 0) { - [self.presimport acquireCollectiveKellegGeneralRevenue:self.clanId startTime:self.startIntratemporalBWStt endTime:self.endIntratemporalBWStt]; - } else { - [self.presimport acquireCorridorKellegGeneralRevenue:self.characteristicId startTime:self.startIntratemporalBWStt endTime:self.endIntratemporalBWStt]; - } - } -} -#pragma mark - Private Method -- (void)initSubViews { - self.view.backgroundColor = [UIColor whiteColor]; - [self.view addSubview:self.intelligenceerRegard]; - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.view); - make.right.mas_equalTo(self.view); - make.top.mas_equalTo(self.view); - make.height.mas_equalTo(kGetScaleWidth(124)); - }]; - - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.top.mas_equalTo(self.intelligenceerRegard.mas_bottom); - }]; -} - -- (void)monthAboutUniversalEngagement:(NSDate *)newDate { - if (newDate == nil) { - newDate = [NSDate date]; - } - double interval = 0; - NSDate *beginDate = nil; - NSDate *endDate = nil; - NSCalendar *calendar = [NSCalendar currentCalendar]; - [calendar setFirstWeekday:2]; - BOOL ok = [calendar rangeOfUnit:NSCalendarUnitMonth startDate:&beginDate interval:&interval forDate:newDate]; - if (ok) { - endDate = [beginDate dateByAddingTimeInterval:interval-1]; - } else { - return; - } - self.startDate = beginDate; - self.endDate = endDate; -} - -- (void)weekSeasonAboutUniversalEngagement:(NSDate *)date { - NSCalendar * calendar = [NSCalendar currentCalendar]; - NSDateComponents *comps = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitWeekday | NSCalendarUnitDay fromDate:date]; - - - NSInteger weekDay = [comps weekday]; - - NSInteger day = [comps day]; - long firstDiff,lastDiff; - if (weekDay == 1){ - firstDiff = -6; - lastDiff = 0; - } else { - firstDiff = -(weekDay - 2); - lastDiff = 8 - weekDay; - } - - NSDateComponents *baseDayComp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:date]; - - [baseDayComp setDay:day + firstDiff]; - NSDate *firstDayOfWeek = [calendar dateFromComponents:baseDayComp]; - self.startDate = firstDayOfWeek; - - [baseDayComp setDay:day + lastDiff]; - NSDate *lastDayOfWeek = [calendar dateFromComponents:baseDayComp]; - self.endDate = lastDayOfWeek; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return self.datasource.count > 0 ? kGetScaleWidth(71) : 400; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - if (self.revenueGenre == UnionIncomeGenre_Clan) { - YUMIUnionRevenueReflectionTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIUnionRevenueReflectionTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIUnionRevenueReflectionTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIUnionRevenueReflectionTabulationRegardElement class])]; - } - cell.rateDigital = indexPath.row; - cell.userInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; - } else if(self.revenueGenre == UnionIncomeGenre_Hall) { - YUMIUnionFeatureRevenueTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIUnionFeatureRevenueTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIUnionFeatureRevenueTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIUnionFeatureRevenueTabulationRegardElement class])]; - } - cell.userInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; - } else if(self.revenueGenre == UnionIncomeGenre_Anchor) { - YUMIUnionSingleChamberRevenueTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIUnionSingleChamberRevenueTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIUnionSingleChamberRevenueTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIUnionSingleChamberRevenueTabulationRegardElement class])]; - } - - cell.userInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.rateDigital = indexPath.row; - return cell; - } - } - YUMIManeUnionDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeUnionDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeUnionDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeUnionDispossessTabulationRegardElement class])]; - } - return cell; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { - return kGetScaleWidth(47); -} - -- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { - if (section == 0) { - if (self.revenueGenre == UnionIncomeGenre_Clan || self.revenueGenre == UnionIncomeGenre_Hall) { - YUMIUnionRevenueDivisionRegard * sectionRegard = [[YUMIUnionRevenueDivisionRegard alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 37)]; - sectionRegard.revenueGenre = self.revenueGenre; - return sectionRegard; - } else { - YUMIUnionKellegRevenueDivisionRegard * sectionRegard = [[YUMIUnionKellegRevenueDivisionRegard alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 37)]; - return sectionRegard; - } - } - return [UIView new]; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ - if(self.datasource.count > 0){ - return kGetScaleWidth(108); - } - return 0.01f; -} --(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{ - if(self.datasource.count > 0){ - return self.foodRegard; - } - - return nil; - -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.revenueGenre == UnionIncomeGenre_Hall) { - if (self.datasource.count > 0) { - UnionFeatureRevenueConsumerAbstractMatrix * componentAbstract = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - YUMIManeUnionRevenueSpecificRegardGovernancer * incomeDetailVC = [[YUMIManeUnionRevenueSpecificRegardGovernancer alloc] init]; - incomeDetailVC.hallId = self.characteristicId; - incomeDetailVC.startTime = self.startIntratemporalBWStt; - incomeDetailVC.endTime = self.endIntratemporalBWStt; - incomeDetailVC.componentAbstract = componentAbstract; - [self.navigationController pushViewController:incomeDetailVC animated:YES]; - } - - } -} - -#pragma mark - FBCUnionIncomeIntelligencerRegardRepresendtation -- (void)yUMIUnionRevenueIntelligencerRegard:(YUMIUnionRevenueIntelligencerRegard *)view didChooseTime:(UIButton *)sender { - if (self.intratemporalGenre == UnionIncomeRecrdTimeGenre_Mouth) { - [self.monthExtracterRegard setDate:[NSDate date] animated:YES]; - [self.monthExtracterRegard show]; - } else { - YUMIUnionIntratemporalPickRegard * intratemporalRegard = [[YUMIUnionIntratemporalPickRegard alloc] init]; - intratemporalRegard.currentDate = [NSDate date]; - intratemporalRegard.extractEngagementGenre = self.intratemporalGenre == UnionIncomeRecrdTimeGenre_Week ? YUMIUnionTimePickGenreWeek : YUMIUnionTimePickGenreDay; - intratemporalRegard.delegate = self; - [MKJPopup popupRegard:intratemporalRegard style:MKJPopupStyleActionSheet]; - } -} - -#pragma mark - FBCUnionTimeMonthPickerRegardRepresendtation -- (void)datePicker:(YUMIUnionIntratemporalMonthPickerRegard *)datePicker didCancel:(UIButton *)sender { - [MKJPopup dismiss]; -} - -- (void)datePicker:(YUMIUnionIntratemporalMonthPickerRegard *)dataPicker didSelectedDate:(NSDate *)date { - [MKJPopup dismiss]; - [self monthAboutUniversalEngagement:date]; - self.startIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:date]; - self.endIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:self.endDate]; - [self.intelligenceerRegard prohibitipositionIntelligencerRegard:date endTime:nil]; - [self intelligenceerRenovtowardseh]; -} - -#pragma mark -FBCUnionTimePickRegardRepresendtation -- (void)yUMIUnionIntrtowardsemporalExtractRegard:(YUMIUnionIntratemporalPickRegard *)view didTicktackRevoctowardsion:(UIButton *)sender { - [MKJPopup dismiss]; -} - -- (void)yUMIUnionIntrtowardsemporalExtractRegard:(YUMIUnionIntratemporalPickRegard *)view didClickSure:(UIButton *)sender { - [MKJPopup dismiss]; - if (self.intratemporalGenre == UnionIncomeRecrdTimeGenre_Week) { - self.startIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:view.startDate]; - self.endIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:view.endDate]; - [self.intelligenceerRegard prohibitipositionIntelligencerRegard:view.startDate endTime:view.endDate]; - } else { - self.startIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:view.startDate]; - self.endIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:view.endDate];; - [self.intelligenceerRegard prohibitipositionIntelligencerRegard:view.startDate endTime:view.endDate]; - } - [self intelligenceerRenovtowardseh]; -} - -#pragma mark - FBCUnionIncomeCeremony -- (void)acquireCollectiveGeneralRevenueScuess:(UnionRevenueReflectionMatrix *)incomeInfo { - [self.tableView.mj_header endRefreshing]; - self.intelligenceerRegard.generalRevenue = incomeInfo.total; - self.datasource = incomeInfo.income; - [self.tableView reloadData]; -} - -- (void)acquireCollectiveGeneralRevenueFlunk:(NSString *)msg { - [self.tableView.mj_header endRefreshing]; -} - -- (void)acquireCorridorGeneralRevenueScuess:(UnionFeatureRevenueReflectionMatrix *)incomeInfo { - [self.tableView.mj_header endRefreshing]; - self.intelligenceerRegard.generalRevenue = incomeInfo.total; - self.datasource = incomeInfo.vos; - [self.tableView reloadData]; -} - -- (void)acquireCorridorGeneralRevenueFlunk:(NSString *)msg { - [self.tableView.mj_header endRefreshing]; -} - -- (void)acquireCollectiveKellegGeneralRevenueAccomplishment:(UnionFeatureRevenueReflectionMatrix *)incomeInfo { - [self.tableView.mj_header endRefreshing]; - self.intelligenceerRegard.generalRevenue = incomeInfo.totalDiamond; - self.datasource = incomeInfo.incomes; - [self.tableView reloadData]; -} - -- (void)acquireCollectiveKellegGeneralRevenueFlunk:(NSString *)msg { - [self.tableView.mj_header endRefreshing]; -} - -- (void)acquireCorridorKellegGeneralRevenueAccomplishment:(UnionFeatureRevenueReflectionMatrix *)incomeInfo { - [self.tableView.mj_header endRefreshing]; - self.intelligenceerRegard.generalRevenue = incomeInfo.totalDiamond; - self.datasource = incomeInfo.incomes; - [self.tableView reloadData]; -} - -- (void)acquireCorridorKellegGeneralRevenueFlunk:(NSString *)msg { - [self.tableView.mj_header endRefreshing]; -} - -#pragma mark - JXCategoryListContentViewDelegate -- (UIView *)listView { - return self.view; -} - -#pragma mark - Getters And Setters -- (void)setIntratemporalGenre:(UnionIncomeRecrdTimeGenre)intratemporalGenre { - _intratemporalGenre = intratemporalGenre; - switch (_intratemporalGenre) { - case UnionIncomeRecrdTimeGenre_Day: - self.startDate = [NSDate date]; - self.endDate = [NSDate date]; - self.startIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:self.startDate]; - self.endIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:self.startDate]; - break; - case UnionIncomeRecrdTimeGenre_Week: - [self weekSeasonAboutUniversalEngagement:[NSDate date]]; - self.startIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:self.startDate]; - self.endIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:self.endDate]; - break; - case UnionIncomeRecrdTimeGenre_Mouth: - [self monthAboutUniversalEngagement:[NSDate date]]; - self.startIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:self.startDate]; - self.endIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:self.endDate]; - break; - default: - break; - } - self.intelligenceerRegard.intratemporalGenre = intratemporalGenre; - [self.intelligenceerRegard prohibitipositionIntelligencerRegard:self.startDate endTime:self.endDate]; - [self intelligenceerRenovtowardseh]; -} - -- (void)scrollViewDidScroll:(UIScrollView *)scrollView { - CGFloat sectionHeaderHeight = 37; - if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) { - scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0); - } else if (scrollView.contentOffset.y>=sectionHeaderHeight) { - scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0); - } -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIUnionRevenueReflectionTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIUnionRevenueReflectionTabulationRegardElement class])]; - [_tableView registerClass:[YUMIUnionFeatureRevenueTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIUnionFeatureRevenueTabulationRegardElement class])]; - [_tableView registerClass:[YUMIManeUnionDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeUnionDispossessTabulationRegardElement class])]; - [_tableView registerClass:[YUMIUnionSingleChamberRevenueTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIUnionSingleChamberRevenueTabulationRegardElement class])]; - } - return _tableView; -} - -- (YUMIUnionRevenueIntelligencerRegard *)intelligenceerRegard { - if (!_intelligenceerRegard) { - _intelligenceerRegard = [[YUMIUnionRevenueIntelligencerRegard alloc] init]; - _intelligenceerRegard.backgroundColor = [UIColor whiteColor]; - _intelligenceerRegard.delegate = self; - } - return _intelligenceerRegard; -} - -- (YUMIUnionIntratemporalMonthPickerRegard *)monthExtracterRegard { - if (!_monthExtracterRegard) { - _monthExtracterRegard = [[YUMIUnionIntratemporalMonthPickerRegard alloc] initAboutSenstowardsionalRegard:self.view]; - _monthExtracterRegard.delegate = self; - _monthExtracterRegard.datePickerMode = HooDatePickerModeYearAndMonth; - [_monthExtracterRegard setTintColor:UIColorFromRGB(0x999999)]; - [_monthExtracterRegard setHighlightPrettify:UIColorFromRGB(0x333333)]; - NSDate * date = [NSDate date]; - NSDateComponents *comps = nil; comps = [[NSCalendar partowardsiciptowardsiondCalconcludear] components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitMonth fromDate:date]; - NSDateComponents *adcomps = [[NSDateComponents alloc] init]; - [adcomps setYear:-15]; - [adcomps setMonth:0]; - [adcomps setDay:0]; - NSDate *minDate = [[NSCalendar partowardsiciptowardsiondCalconcludear] dateByAddingComponents:adcomps toDate:date options:0]; - - NSDateComponents *maxcomps = [[NSDateComponents alloc] init]; - [maxcomps setYear:15]; - [maxcomps setMonth:0]; - [maxcomps setDay:0]; - NSDate *maxDate = [[NSCalendar partowardsiciptowardsiondCalconcludear] dateByAddingComponents:maxcomps toDate:date options:0]; - _monthExtracterRegard.minimumDate = minDate; - _monthExtracterRegard.maximumDate = maxDate; - - } - return _monthExtracterRegard; -} -- (UIView *)foodRegard{ - if (!_foodRegard){ - _foodRegard = [[UIView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, kGetScaleWidth(108))]; - UILabel *titleView = [[UILabel alloc] init]; - titleView.text = YMLocalizedString(@"YUMI_MineGoldIncomeRecordVC0"); - titleView.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - titleView.textColor = [DJDKMIMOMColor prohibitionBtutonEssayPrettify]; - titleView.textAlignment = NSTextAlignmentCenter; - titleView.frame = _foodRegard.bounds; - [_foodRegard addSubview:titleView]; - } - return _foodRegard; -} -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeUnionRevenueSpecificRegardGovernancer.h b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeUnionRevenueSpecificRegardGovernancer.h deleted file mode 100644 index 21efc2f8..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeUnionRevenueSpecificRegardGovernancer.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YUMIManeUnionRevenueSpecificRegardGovernancer.h -// YuMi -// -// Created by YuMi on 2022/4/12. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN -@class UnionFeatureRevenueConsumerAbstractMatrix; -@interface YUMIManeUnionRevenueSpecificRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,copy) NSString *hallId; -@property (nonatomic,copy) NSString *startTime; -@property (nonatomic,copy) NSString *endTime; -@property (nonatomic,strong) UnionFeatureRevenueConsumerAbstractMatrix *componentAbstract; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeUnionRevenueSpecificRegardGovernancer.m b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeUnionRevenueSpecificRegardGovernancer.m deleted file mode 100644 index e51b51da..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeUnionRevenueSpecificRegardGovernancer.m +++ /dev/null @@ -1,165 +0,0 @@ -// -// YUMIManeUnionRevenueSpecificRegardGovernancer.m -// YuMi -// -// Created by YuMi on 2022/4/12. -// - -#import "YUMIManeUnionRevenueSpecificRegardGovernancer.h" -#import -#import -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" - -#import "UnionFeatureRevenueReflectionMatrix.h" -#import "YUMIUnionRevenueSpecificAssembletionRegardElement.h" -#import "YUMIUnionDispossessAssembletionRegardElement.h" -#import "YUMIUnionRevenueSpecificExternalizer.h" -#import "FBCUnionIncomeDetailCeremony.h" - -@interface YUMIManeUnionRevenueSpecificRegardGovernancer () -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UICollectionView *collectionView; -@property (nonatomic,strong) NSArray *atoloudspeakersouce; -@end - -@implementation YUMIManeUnionRevenueSpecificRegardGovernancer - -- (__kindof id)producePresimport { - return [[YUMIUnionRevenueSpecificExternalizer alloc] init];; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self initIntelligencerGrantedTerminalerRrfresh]; -} - -#pragma mark - 刷新 -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.collectionView.mj_header = header; - - [self intelligenceerRenovtowardseh]; -} - -- (void)intelligenceerRenovtowardseh { - if (self.endTime.length <=0) { - self.endTime = @""; - } - [self.presimport acquireConsumerRevenueSpecificSttowardsement:self.hallId memberId:self.componentAbstract.reciveUid startIntratemporalBWStt:self.startTime endIntratemporalBWStt:self.endTime]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_MineGuildIncomeDetailViewController0"); - [self.view addSubview:self.intelligenceportraitIndicateRegard]; - [self.view addSubview:self.monicerSequencignation]; - [self.view addSubview:self.collectionView]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(40, 40)); - make.left.mas_equalTo(self.view).offset(15); - make.top.mas_equalTo(self.view).offset(18); - }]; - - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(10); - }]; - - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_bottom).offset(2); - }]; -} - -#pragma mark - UICOllectionViewDelegate And UICollectionViewDatasource -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.atoloudspeakersouce.count > 0? self.atoloudspeakersouce.count : 1; -} - --(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { - CGFloat itemWidth = (KScreenWidth - 10 * 2) / 3.0; - return self.atoloudspeakersouce.count > 0 ? CGSizeMake(itemWidth, itemWidth + 50) : CGSizeMake(KScreenWidth, 500); -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - if (self.atoloudspeakersouce.count > 0) { - YUMIUnionRevenueSpecificAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIUnionRevenueSpecificAssembletionRegardElement class]) forIndexPath:indexPath]; - cell.revenueSpecificAbstract= [self.atoloudspeakersouce secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; - } - - YUMIUnionDispossessAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIUnionDispossessAssembletionRegardElement class]) forIndexPath:indexPath]; - return cell; -} - -#pragma mark - FBCUnionIncomeDetailCeremony -- (void)acquireConsumerRevenueSpecificSttowardsementAccomplishment:(NSArray *)array { - [self.collectionView.mj_header endRefreshing]; - self.atoloudspeakersouce = array; - [self.collectionView reloadData]; -} - -- (void)acquireConsumerRevenueSpecificSttowardsementFlunk:(nonnull NSString *)msg { - [self.collectionView.mj_header endRefreshing]; -} - - -#pragma mark - Getters And Setters -- (void)setComponentAbstract:(UnionFeatureRevenueConsumerAbstractMatrix *)componentAbstract { - _componentAbstract = componentAbstract; - if (_componentAbstract) { - self.intelligenceportraitIndicateRegard.imageUrl = _componentAbstract.avatar; - self.monicerSequencignation.text = _componentAbstract.nick; - } -} - -- (UICollectionView *)collectionView{ - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.minimumLineSpacing = 10; - layout.minimumInteritemSpacing = 10; - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.backgroundColor = [UIColor clearColor]; - [_collectionView registerClass:[YUMIUnionRevenueSpecificAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIUnionRevenueSpecificAssembletionRegardElement class])]; - [_collectionView registerClass:[YUMIUnionDispossessAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIUnionDispossessAssembletionRegardElement class])]; - } - return _collectionView; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 40/2; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.text = YMLocalizedString(@"YUMI_MineGuildIncomeDetailViewController1"); - _monicerSequencignation.font = [UIFont systemFontOfSize:15]; - _monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _monicerSequencignation; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeUnionRevenueStatsticsRegardGovernancer.h b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeUnionRevenueStatsticsRegardGovernancer.h deleted file mode 100644 index 5c83dd3f..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeUnionRevenueStatsticsRegardGovernancer.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YUMIManeUnionRevenueStatsticsRegardGovernancer.h -// YuMi -// -// Created by YuMi on 2022/4/11. -// 家族收入统计 - -#import "BaseRegardGovernancer.h" -#import -#import -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeUnionRevenueStatsticsRegardGovernancer : BaseRegardGovernancer -@property (nonatomic,copy) NSString *hallId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeUnionRevenueStatsticsRegardGovernancer.m b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeUnionRevenueStatsticsRegardGovernancer.m deleted file mode 100644 index c0ca0f6a..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIManeUnionRevenueStatsticsRegardGovernancer.m +++ /dev/null @@ -1,157 +0,0 @@ -// -// YUMIManeUnionRevenueStatsticsRegardGovernancer.m -// YuMi -// -// Created by YuMi on 2022/4/11. -// 公会收入统计 - -#import "YUMIManeUnionRevenueStatsticsRegardGovernancer.h" -#import -#import -#import -#import -#import "UIImage+Utils.h" -#import "DJDKMIMOMColor.h" -#import "YUMIManeUnionRevenueReflectionRegardGovernancer.h" -#import "YUMIManeGoldRevenueReflectionVC.h" - -@interface YUMIManeUnionRevenueStatsticsRegardGovernancer () -@property (nonatomic, strong) NSArray *titles; -@property (nonatomic, strong) JXCategoryTitleView *titleView; -@property (nonatomic, strong) JXCategoryListContainerView *contentView; -@property (nonatomic,strong) YUMIManeUnionRevenueReflectionRegardGovernancer *dayReflectionVewC; -@property (nonatomic,strong) YUMIManeUnionRevenueReflectionRegardGovernancer *zhouReflectionVewC; -@property (nonatomic,strong) YUMIManeGoldRevenueReflectionVC *goldRevenueVewC; - -@end - -@implementation YUMIManeUnionRevenueStatsticsRegardGovernancer - -- (void)viewDidLoad { - [super viewDidLoad]; - self.view.backgroundColor = [UIColor whiteColor]; - self.title = YMLocalizedString(@"YUMI_MineGuildIncomeStatisViewController0"); - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.titleView]; - [self.view addSubview:self.contentView]; -} - -- (void)initChildLyRestrictions { - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.view).offset(10); - make.left.right.mas_equalTo(self.view); - make.height.mas_equalTo(30); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.titleView.mas_bottom); - make.left.right.bottom.mas_equalTo(self.view); - }]; -} - -#pragma mark - JXCategoryViewDelegate -- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { - return self.titles.count; -} - -- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { - if (index == 0) { - return self.dayReflectionVewC; - } else if(index == 1){ - return self.zhouReflectionVewC; - }else{ - return self.goldRevenueVewC; - } -} - -- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { - if (index == 0) { - self.dayReflectionVewC.intratemporalGenre = UnionIncomeRecrdTimeGenre_Day; - } else if(index == 1){ - self.zhouReflectionVewC.intratemporalGenre = UnionIncomeRecrdTimeGenre_Week; - }else{ - - } -} - -#pragma mark - Getters And Setters -- (void)setHallId:(NSString *)hallId { - _hallId = hallId; - self.dayReflectionVewC.characteristicId = _hallId; - self.zhouReflectionVewC.characteristicId = _hallId; - self.dayReflectionVewC.intratemporalGenre = UnionIncomeRecrdTimeGenre_Day; -} - -- (JXCategoryTitleView *)titleView { - if (!_titleView) { - _titleView = [[JXCategoryTitleView alloc] init]; - _titleView.delegate = self; - _titleView.titles = self.titles; - _titleView.backgroundColor = [UIColor whiteColor]; - _titleView.titleColor = [DJDKMIMOMColor instantEssayPrettify]; - _titleView.titleSelectedColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleView.titleFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; - _titleView.titleSelectedFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; - _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; - _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; - _titleView.defaultSelectedIndex = 0; - _titleView.cellSpacing = 5; - _titleView.cellWidthIncrement = 5; - _titleView.listContainer = self.contentView; - - JXCategoryIndicatorLineView *burlywoodRegard = [[JXCategoryIndicatorLineView alloc] init]; - UIImage *image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityMiddlePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(16, 3)]; - burlywoodRegard.indicatorColor = [UIColor colorWithPatternImage:image]; - burlywoodRegard.indicatorWidth = 16.f; - burlywoodRegard.indicatorHeight = 3.f; - burlywoodRegard.indicatorCornerRadius = 1.5f; - _titleView.indicators = @[burlywoodRegard]; - - } - return _titleView; -} - -- (JXCategoryListContainerView *)contentView { - if (!_contentView) { - _contentView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; - _contentView.defaultSelectedIndex = 0; - _contentView.backgroundColor = [UIColor whiteColor]; - } - return _contentView; -} - -- (NSArray *)titles { - if (!_titles) { - _titles = @[YMLocalizedString(@"YUMI_MineGuildIncomeStatisViewController1"), YMLocalizedString(@"YUMI_MineGuildIncomeStatisViewController2"), YMLocalizedString(@"YUMI_MineGuildIncomeStatisViewController3")]; - } - return _titles; -} - -- (YUMIManeUnionRevenueReflectionRegardGovernancer *)dayReflectionVewC { - if (!_dayReflectionVewC) { - _dayReflectionVewC = [[YUMIManeUnionRevenueReflectionRegardGovernancer alloc] init]; - _dayReflectionVewC.revenueGenre = UnionIncomeGenre_Hall; - } - return _dayReflectionVewC; -} -- (YUMIManeGoldRevenueReflectionVC *)goldRevenueVewC{ - if (!_goldRevenueVewC){ - _goldRevenueVewC = [YUMIManeGoldRevenueReflectionVC new]; - } - return _goldRevenueVewC; -} -- (YUMIManeUnionRevenueReflectionRegardGovernancer *)zhouReflectionVewC { - if (!_zhouReflectionVewC) { - _zhouReflectionVewC = [[YUMIManeUnionRevenueReflectionRegardGovernancer alloc] init]; - _zhouReflectionVewC.revenueGenre = UnionIncomeGenre_Hall; - } - return _zhouReflectionVewC; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIStrangeManeUnionRevenueReflectionRegardGovernancer.h b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIStrangeManeUnionRevenueReflectionRegardGovernancer.h deleted file mode 100644 index cbbe4970..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIStrangeManeUnionRevenueReflectionRegardGovernancer.h +++ /dev/null @@ -1,35 +0,0 @@ -// -// YUMIStrangeManeUnionRevenueReflectionRegardGovernancer.h -// YuMi -// -// Created by YuMi on 2022/11/9. -// - -#import "MvpRegardGovernancer.h" -#import -NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSInteger, NewUnionIncomeRecrdTimeGenre) { - - NewUnionIncomeRecrdTimeGenre_Day = 1, - - NewUnionIncomeRecrdTimeGenre_Week, - - NewUnionIncomeRecrdTimeGenre_Mouth, -}; - -typedef NS_ENUM(NSInteger, NewUnionIncomeGenre) { - - NewUnionIncomeGenre_Clan = 1, - - NewUnionIncomeGenre_Hall, - - NewUnionIncomeGenre_Anchor, -}; -@interface YUMIStrangeManeUnionRevenueReflectionRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,assign) NewUnionIncomeRecrdTimeGenre intratemporalGenre; -@property (nonatomic,assign) NewUnionIncomeGenre revenueGenre; -@property (nonatomic,copy) NSString *characteristicId; -@property (nonatomic,copy) NSString *clanId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIStrangeManeUnionRevenueReflectionRegardGovernancer.m b/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIStrangeManeUnionRevenueReflectionRegardGovernancer.m deleted file mode 100644 index 3bd1af9a..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/IncomeStatis/YUMIStrangeManeUnionRevenueReflectionRegardGovernancer.m +++ /dev/null @@ -1,448 +0,0 @@ -// -// YUMIStrangeManeUnionRevenueReflectionRegardGovernancer.m -// YuMi -// -// Created by YuMi on 2022/11/9. -// -///Third -#import -#import -#import "DJDKMIMOMColor.h" -#import "PLIntratemporalUtil.h" -#import "MKJPopup.h" -#import "NSDate+DateUtils.h" - -#import "UnionRevenueReflectionMatrix.h" -#import "UnionFeatureRevenueReflectionMatrix.h" -#import "YUMIUnionRevenueReflectionTabulationRegardElement.h" -#import "YUMIUnionFeatureRevenueTabulationRegardElement.h" -#import "YUMIManeUnionDispossessTabulationRegardElement.h" -#import "YUMIUnionSingleChamberRevenueTabulationRegardElement.h" -#import "YUMIUnionRevenueDivisionRegard.h" -#import "YUMIUnionKellegRevenueDivisionRegard.h" -#import "YUMIStrangeUnionRevenueIntelligencerRegard.h" -#import "YUMIStrangeUnionIntratemporalPickRegard.h" -#import "YUMIUnionIntratemporalMonthPickerRegard.h" -#import "YUMIManeUnionRevenueSpecificRegardGovernancer.h" -#import "YUMIUnionRevenueExternalizer.h" -#import "FBCUnionIncomeCeremony.h" -#import "YUMIStrangeManeUnionRevenueReflectionRegardGovernancer.h" - -@interface YUMIStrangeManeUnionRevenueReflectionRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) YUMIStrangeUnionRevenueIntelligencerRegard *intelligenceerRegard; -@property (nonatomic,strong) NSArray *datasource; -@property (nonatomic,strong) NSDate *endDate; -@property (nonatomic,strong) NSDate *startDate; -@property (nonatomic,strong) NSDate *currentDate; -@property (nonatomic,strong) YUMIUnionIntratemporalMonthPickerRegard *monthExtracterRegard; -@property (nonatomic,copy) NSString *startIntratemporalBWStt; -@property (nonatomic,copy) NSString *endIntratemporalBWStt; -@end - -@implementation YUMIStrangeManeUnionRevenueReflectionRegardGovernancer - -- (__kindof id)producePresimport { - return [[YUMIUnionRevenueExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initIntelligencerGrantedTerminalerRrfresh]; - if(self.revenueGenre == NewUnionIncomeGenre_Anchor){ - [self intelligenceerRenovtowardseh]; - } -} - -- (void)viewDidLayoutSubviews { - [super viewDidLayoutSubviews]; - [self initChildLyRestrictions]; -} - -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; -} - -- (void)intelligenceerRenovtowardseh { - if (self.revenueGenre == NewUnionIncomeGenre_Clan) { - [self.presimport acquireCollectiveGeneralRevenue:self.characteristicId startTime:self.startIntratemporalBWStt endTime:self.endIntratemporalBWStt]; - } else if(self.revenueGenre == NewUnionIncomeGenre_Hall) { - [self.presimport acquireCorridorGeneralRevenue:self.characteristicId startTime:self.startIntratemporalBWStt endTime:self.endIntratemporalBWStt]; - } else { - [self.presimport acquireCorridorKellegGeneralRevenue:self.characteristicId startTime:self.startIntratemporalBWStt endTime:self.endIntratemporalBWStt]; - - - } -} - -#pragma mark - Private Method -- (void)initSubViews { - self.view.backgroundColor = [UIColor whiteColor]; - [self.view addSubview:self.intelligenceerRegard]; - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.view); - make.right.mas_equalTo(self.view); - make.top.mas_equalTo(self.view).offset(10); - make.height.mas_equalTo(100); - }]; - - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.top.mas_equalTo(self.intelligenceerRegard.mas_bottom); - }]; -} - -- (void)monthAboutUniversalEngagement:(NSDate *)newDate { - if (newDate == nil) { - newDate = [NSDate date]; - } - double interval = 0; - NSDate *beginDate = nil; - NSDate *endDate = nil; - NSCalendar *calendar = [NSCalendar currentCalendar]; - [calendar setFirstWeekday:2]; - BOOL ok = [calendar rangeOfUnit:NSCalendarUnitMonth startDate:&beginDate interval:&interval forDate:newDate]; - if (ok) { - endDate = [beginDate dateByAddingTimeInterval:interval-1]; - } else { - return; - } - self.startDate = beginDate; - self.endDate = endDate; -} - -- (void)weekSeasonAboutUniversalEngagement:(NSDate *)date { - NSCalendar * calendar = [NSCalendar currentCalendar]; - NSDateComponents *comps = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitWeekday | NSCalendarUnitDay fromDate:date]; - - - NSInteger weekDay = [comps weekday]; - - NSInteger day = [comps day]; - long firstDiff,lastDiff; - if (weekDay == 1){ - firstDiff = -6; - lastDiff = 0; - } else { - firstDiff = -(weekDay - 2); - lastDiff = 8 - weekDay; - } - - NSDateComponents *baseDayComp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:date]; - - [baseDayComp setDay:day + firstDiff]; - NSDate *firstDayOfWeek = [calendar dateFromComponents:baseDayComp]; - self.startDate = firstDayOfWeek; - - [baseDayComp setDay:day + lastDiff]; - NSDate *lastDayOfWeek = [calendar dateFromComponents:baseDayComp]; - self.endDate = lastDayOfWeek; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if(self.revenueGenre == NewUnionIncomeGenre_Anchor){ - return self.datasource.count > 0 ? kGetScaleWidth(93) : 400; - } - return self.datasource.count > 0 ? 90 : 400; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - if (self.revenueGenre == NewUnionIncomeGenre_Clan) { - YUMIUnionRevenueReflectionTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIUnionRevenueReflectionTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIUnionRevenueReflectionTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIUnionRevenueReflectionTabulationRegardElement class])]; - } - cell.rateDigital = indexPath.row; - cell.userInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; - } else if(self.revenueGenre == NewUnionIncomeGenre_Hall) { - YUMIUnionFeatureRevenueTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIUnionFeatureRevenueTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIUnionFeatureRevenueTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIUnionFeatureRevenueTabulationRegardElement class])]; - } - cell.userInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; - } else if(self.revenueGenre == NewUnionIncomeGenre_Anchor) { - YUMIUnionSingleChamberRevenueTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIUnionSingleChamberRevenueTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIUnionSingleChamberRevenueTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIUnionSingleChamberRevenueTabulationRegardElement class])]; - } - - cell.userInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.rateDigital = indexPath.row; - return cell; - } - } - YUMIManeUnionDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeUnionDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeUnionDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeUnionDispossessTabulationRegardElement class])]; - } - return cell; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { - - return 47; -} - -- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { - if (section == 0) { - if (self.revenueGenre == NewUnionIncomeGenre_Clan || self.revenueGenre == NewUnionIncomeGenre_Hall) { - - if(self.revenueGenre == NewUnionIncomeGenre_Clan){ - YUMIUnionRevenueDivisionRegard * newSectionView = [[YUMIUnionRevenueDivisionRegard alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 47) right:124]; - newSectionView.revenueGenre = UnionIncomeGenre_Clan; - - return newSectionView; - } - YUMIUnionRevenueDivisionRegard * sectionRegard = [[YUMIUnionRevenueDivisionRegard alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 47)]; - - UnionIncomeGenre type; - if (self.revenueGenre == NewUnionIncomeGenre_Hall){ - type = UnionIncomeGenre_Hall; - }else{ - type = UnionIncomeGenre_Anchor; - } - sectionRegard.revenueGenre = type ; - return sectionRegard; - } else { - YUMIUnionKellegRevenueDivisionRegard * sectionRegard = [[YUMIUnionKellegRevenueDivisionRegard alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 47)]; - sectionRegard.isHost = YES; - return sectionRegard; - } - } - return [UIView new]; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ - return 0.01f; -} - -- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{ - return [[UIView alloc]init]; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.revenueGenre == NewUnionIncomeGenre_Hall) { - if (self.datasource.count > 0) { - UnionFeatureRevenueConsumerAbstractMatrix * componentAbstract = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - YUMIManeUnionRevenueSpecificRegardGovernancer * incomeDetailVC = [[YUMIManeUnionRevenueSpecificRegardGovernancer alloc] init]; - incomeDetailVC.hallId = self.characteristicId; - incomeDetailVC.startTime = self.startIntratemporalBWStt; - incomeDetailVC.endTime = self.endIntratemporalBWStt; - incomeDetailVC.componentAbstract = componentAbstract; - [self.navigationController pushViewController:incomeDetailVC animated:YES]; - } - - } -} - -#pragma mark - FBCUnionIncomeIntelligencerRegardRepresendtation -- (void)yUMIStrangeUnionRevenueIntelligencerRegard:(YUMIStrangeUnionRevenueIntelligencerRegard *)view didChooseTime:(UIButton *)sender { - if (self.intratemporalGenre == NewUnionIncomeRecrdTimeGenre_Mouth) { - [self.monthExtracterRegard setDate:[NSDate date] animated:YES]; - [self.monthExtracterRegard show]; - } else { - YUMIStrangeUnionIntratemporalPickRegard * intratemporalRegard = [[YUMIStrangeUnionIntratemporalPickRegard alloc] init]; - intratemporalRegard.currentDate = [NSDate date]; - intratemporalRegard.extractEngagementGenre = self.intratemporalGenre == NewUnionIncomeRecrdTimeGenre_Week ? YUMINewUnionTimePickGenreWeek : YUMINewUnionTimePickGenreDay; - intratemporalRegard.delegate = self; - [MKJPopup popupRegard:intratemporalRegard style:MKJPopupStyleActionSheet]; - } -} - -#pragma mark - FBCUnionTimeMonthPickerRegardRepresendtation -- (void)datePicker:(YUMIUnionIntratemporalMonthPickerRegard *)datePicker didCancel:(UIButton *)sender { - [MKJPopup dismiss]; -} - -- (void)datePicker:(YUMIUnionIntratemporalMonthPickerRegard *)dataPicker didSelectedDate:(NSDate *)date { - [MKJPopup dismiss]; - [self monthAboutUniversalEngagement:date]; - self.startIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:date]; - self.endIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:self.endDate]; - [self.intelligenceerRegard prohibitipositionIntelligencerRegard:date endTime:nil]; - [self intelligenceerRenovtowardseh]; -} - -#pragma mark -FBCUnionTimePickRegardRepresendtation -- (void)yUMIStrangeUnionIntrtowardsemporalExtractRegard:(YUMIStrangeUnionIntratemporalPickRegard *)view didTicktackRevoctowardsion:(UIButton *)sender { - [MKJPopup dismiss]; -} - -- (void)yUMIStrangeUnionIntrtowardsemporalExtractRegard:(YUMIStrangeUnionIntratemporalPickRegard *)view didClickSure:(UIButton *)sender { - [MKJPopup dismiss]; - if (self.intratemporalGenre == NewUnionIncomeRecrdTimeGenre_Week) { - self.startIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:view.startDate]; - self.endIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:view.endDate]; - [self.intelligenceerRegard prohibitipositionIntelligencerRegard:view.startDate endTime:view.endDate]; - } else { - self.startIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:view.startDate]; - self.endIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:view.endDate];; - [self.intelligenceerRegard prohibitipositionIntelligencerRegard:view.startDate endTime:view.endDate]; - } - [self intelligenceerRenovtowardseh]; -} - -#pragma mark - FBCUnionIncomeCeremony -- (void)acquireCollectiveGeneralRevenueScuess:(UnionRevenueReflectionMatrix *)incomeInfo { - [self.tableView.mj_header endRefreshing]; - self.intelligenceerRegard.generalRevenue = incomeInfo.total; - self.datasource = incomeInfo.income; - [self.tableView reloadData]; -} - -- (void)acquireCollectiveGeneralRevenueFlunk:(NSString *)msg { - [self.tableView.mj_header endRefreshing]; -} - -- (void)acquireCorridorGeneralRevenueScuess:(UnionFeatureRevenueReflectionMatrix *)incomeInfo { - [self.tableView.mj_header endRefreshing]; - self.intelligenceerRegard.generalRevenue = incomeInfo.total; - self.datasource = incomeInfo.vos; - [self.tableView reloadData]; -} - -- (void)acquireCorridorGeneralRevenueFlunk:(NSString *)msg { - [self.tableView.mj_header endRefreshing]; -} - -- (void)acquireCollectiveKellegGeneralRevenueAccomplishment:(UnionFeatureRevenueReflectionMatrix *)incomeInfo { - [self.tableView.mj_header endRefreshing]; - self.intelligenceerRegard.generalRevenue = incomeInfo.totalDiamond; - self.datasource = incomeInfo.incomes; - [self.tableView reloadData]; - -} - -- (void)acquireCollectiveKellegGeneralRevenueFlunk:(NSString *)msg { - [self.tableView.mj_header endRefreshing]; -} - -- (void)acquireCorridorKellegGeneralRevenueAccomplishment:(UnionFeatureRevenueReflectionMatrix *)incomeInfo { - [self.tableView.mj_header endRefreshing]; - self.intelligenceerRegard.generalRevenue = incomeInfo.total; - self.datasource = incomeInfo.memberIncome; - [self.tableView reloadData]; -} - -- (void)acquireCorridorKellegGeneralRevenueFlunk:(NSString *)msg { - [self.tableView.mj_header endRefreshing]; -} - -#pragma mark - JXCategoryListContentViewDelegate -- (UIView *)listView { - return self.view; -} - -#pragma mark - Getters And Setters -- (void)setIntratemporalGenre:(NewUnionIncomeRecrdTimeGenre)intratemporalGenre { - _intratemporalGenre = intratemporalGenre; - switch (_intratemporalGenre) { - case NewUnionIncomeRecrdTimeGenre_Day: - self.startDate = [NSDate date]; - self.endDate = [NSDate date]; - self.startIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:self.startDate]; - self.endIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:self.startDate]; - break; - case NewUnionIncomeRecrdTimeGenre_Week: - [self weekSeasonAboutUniversalEngagement:[NSDate date]]; - self.startIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:self.startDate]; - self.endIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:self.endDate]; - break; - case NewUnionIncomeRecrdTimeGenre_Mouth: - [self monthAboutUniversalEngagement:[NSDate date]]; - self.startIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:self.startDate]; - self.endIntratemporalBWStt = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:self.endDate]; - break; - default: - break; - } - self.intelligenceerRegard.intratemporalGenre = intratemporalGenre; - [self.intelligenceerRegard prohibitipositionIntelligencerRegard:self.startDate endTime:self.endDate]; - if(self.revenueGenre == NewUnionIncomeGenre_Anchor){ - return; - } - [self intelligenceerRenovtowardseh]; -} - -- (void)scrollViewDidScroll:(UIScrollView *)scrollView { - CGFloat sectionHeaderHeight = 37; - if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) { - scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0); - } else if (scrollView.contentOffset.y>=sectionHeaderHeight) { - scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0); - } -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor whiteColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIUnionRevenueReflectionTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIUnionRevenueReflectionTabulationRegardElement class])]; - [_tableView registerClass:[YUMIUnionFeatureRevenueTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIUnionFeatureRevenueTabulationRegardElement class])]; - [_tableView registerClass:[YUMIManeUnionDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeUnionDispossessTabulationRegardElement class])]; - [_tableView registerClass:[YUMIUnionSingleChamberRevenueTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIUnionSingleChamberRevenueTabulationRegardElement class])]; - } - return _tableView; -} - -- (YUMIStrangeUnionRevenueIntelligencerRegard *)intelligenceerRegard { - if (!_intelligenceerRegard) { - _intelligenceerRegard = [[YUMIStrangeUnionRevenueIntelligencerRegard alloc] init]; - _intelligenceerRegard.delegate = self; - } - return _intelligenceerRegard; -} - -- (YUMIUnionIntratemporalMonthPickerRegard *)monthExtracterRegard { - if (!_monthExtracterRegard) { - _monthExtracterRegard = [[YUMIUnionIntratemporalMonthPickerRegard alloc] initAboutSenstowardsionalRegard:self.view]; - _monthExtracterRegard.delegate = self; - _monthExtracterRegard.datePickerMode = HooDatePickerModeYearAndMonth; - [_monthExtracterRegard setTintColor:UIColorFromRGB(0x999999)]; - [_monthExtracterRegard setHighlightPrettify:UIColorFromRGB(0x333333)]; - NSDate * date = [NSDate date]; - NSDateComponents *comps = nil; comps = [[NSCalendar partowardsiciptowardsiondCalconcludear] components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitMonth fromDate:date]; - NSDateComponents *adcomps = [[NSDateComponents alloc] init]; - [adcomps setYear:-15]; - [adcomps setMonth:0]; - [adcomps setDay:0]; - NSDate *minDate = [[NSCalendar partowardsiciptowardsiondCalconcludear] dateByAddingComponents:adcomps toDate:date options:0]; - - NSDateComponents *maxcomps = [[NSDateComponents alloc] init]; - [maxcomps setYear:15]; - [maxcomps setMonth:0]; - [maxcomps setDay:0]; - NSDate *maxDate = [[NSCalendar partowardsiciptowardsiondCalconcludear] dateByAddingComponents:maxcomps toDate:date options:0]; - _monthExtracterRegard.minimumDate = minDate; - _monthExtracterRegard.maximumDate = maxDate; - - } - return _monthExtracterRegard; -} -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildManagerPerViewController.h b/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildManagerPerViewController.h new file mode 100644 index 00000000..d8f618f2 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildManagerPerViewController.h @@ -0,0 +1,19 @@ +// +// XPMineGuildManagerPerViewController.h +// YuMi +// +// Created by YuMi on 2022/4/8. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN +@class ClanMemberInfoModel; +@interface XPMineGuildManagerPerViewController : MvpViewController +///公会de ID +@property (nonatomic,copy) NSString *guildId; +///管理员的信息 +@property (nonatomic,strong) ClanMemberInfoModel *managerInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildManagerPerViewController.m b/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildManagerPerViewController.m new file mode 100644 index 00000000..5f235fcd --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildManagerPerViewController.m @@ -0,0 +1,321 @@ +// +// XPMineGuildManagerPerViewController.m +// YuMi +// +// Created by YuMi on 2022/4/8. +// 管理权限 + +#import "XPMineGuildManagerPerViewController.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" + +#import "NetImageView.h" +#import "TTPopup.h" +///Model +#import "ClanMemberDetailInfoModel.h" +#import "GuildAuthModel.h" +///View +#import "XPMineGuildManagerPerTableViewCell.h" +///P +#import "XPGuildManagerPerPresenter.h" +#import "XPGuildManagerPerProtocol.h" +@interface XPMineGuildManagerPerViewController () +///导航啦 +@property (nonatomic,strong) UIView * navView; +///返回按钮 +@property (nonatomic,strong) UIButton *backButton; +///标题 +@property (nonatomic,strong) UILabel *titleLabel; +///完成 +@property (nonatomic,strong) UIButton *completionButton; +///列表 +@property (nonatomic,strong) UITableView *tableView; +///用户信息 +@property (nonatomic,strong) UIView * contentView; +///用户头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///用户昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///数据源 +@property (nonatomic,strong) NSArray *datasource; +///权限的数组 +@property (nonatomic,strong) NSMutableArray *authArray; +///改变的数组 +@property (nonatomic,strong) NSMutableArray *changeArray; +@end + +@implementation XPMineGuildManagerPerViewController + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (__kindof id)createPresenter { + return [[XPGuildManagerPerPresenter alloc] init];; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + [self.presenter getGuildRoomManagerPermiss:self.managerInfo.uid]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.titleLabel.text = YMLocalizedString(@"XPMineGuildManagerPerViewController0"); + [self.view addSubview:self.navView]; + [self.view addSubview:self.contentView]; + [self.view addSubview:self.tableView]; + + [self.navView addSubview:self.backButton]; + [self.navView addSubview:self.titleLabel]; + [self.navView addSubview:self.completionButton]; + + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.nickLabel]; +} + +- (void)initSubViewConstraints { + [self.navView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.height.mas_equalTo(kNavigationHeight); + }]; + + [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.view).mas_offset(10); + make.top.mas_equalTo(statusbarHeight); + make.height.width.mas_equalTo(44); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.navView); + make.centerY.mas_equalTo(self.backButton); + }]; + + [self.completionButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.navView).offset(-15); + make.centerY.mas_equalTo(self.backButton); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.navView.mas_bottom); + make.left.right.mas_equalTo(self.view); + make.height.mas_equalTo(50); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(40, 40)); + make.left.mas_equalTo(self.contentView).offset(15); + make.top.mas_equalTo(self.contentView).offset(10); + }]; + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.avatarImageView); + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(10); + }]; + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.top.mas_equalTo(self.contentView.mas_bottom); + }]; + + +} + + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 70; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + XPMineGuildManagerPerTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineGuildManagerPerTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineGuildManagerPerTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineGuildManagerPerTableViewCell class])]; + } + GuildAuthModel * authInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.authInfo = authInfo; + cell.delegate = self; + if (authInfo.status) { + if (![self.authArray containsObject:authInfo.code]) { + [self.authArray addObject:authInfo.code]; + } + } else { + if ([self.authArray containsObject:authInfo.code]) { + [self.authArray removeObject:authInfo.code]; + } + } + return cell; +} + +#pragma mark - XPMineGuildManagerPerTableViewCellDelegate +- (void)xPMineGuildManagerPerTableViewCell:(UISwitch *)onswitch authInfo:(GuildAuthModel *)authInfo { + if (onswitch.on) { + if (![self.authArray containsObject:authInfo.code]) { + [self.authArray addObject:authInfo.code]; + } + + if (![self.changeArray containsObject:authInfo.code]) { + [self.changeArray addObject:authInfo.code]; + } + + } else { + if ([self.authArray containsObject:authInfo.code]) { + [self.authArray removeObject:authInfo.code]; + } + + if ([self.changeArray containsObject:authInfo.code]) { + [self.changeArray removeObject:authInfo.code]; + } + } +} + +#pragma mark - ClanMemberDetailInfoModel +- (void)getGuildRoomManagerPermissSuccess:(NSArray *)array { + self.datasource = array; + [self.tableView reloadData]; +} + +- (void)updateGuildRoomManagerPermissSuccess { + [self showSuccessToast:YMLocalizedString(@"XPMineGuildManagerPerViewController1")]; + [self.navigationController popViewControllerAnimated:YES]; +} + +#pragma mark - Event Response +- (void)completionButtonAction:(UIButton *)sender { + if (self.authArray.count > 0) { + NSString *authStr = [[self.authArray componentsJoinedByString:@","] stringByAppendingString:@","]; + [self.presenter updateGuildRoomManagerPermiss:self.guildId managerUid:self.managerInfo.uid authStr:authStr]; + } else { + [self.presenter updateGuildRoomManagerPermiss:self.guildId managerUid:self.managerInfo.uid authStr:@""]; + } +} + +- (void)backButtonAction:(UIButton *)sender { + if (self.changeArray.count == 0) { + [self.navigationController popViewControllerAnimated:YES]; + return; + } + + [TTPopup alertWithMessage:YMLocalizedString(@"XPMineGuildManagerPerViewController2") confirmHandler:^{ + [self.navigationController popViewControllerAnimated:YES]; + } cancelHandler:^{ + }]; +} + +#pragma mark - Getters And Setters +- (void)setManagerInfo:(ClanMemberInfoModel *)managerInfo { + _managerInfo = managerInfo; + if (_managerInfo) { + self.avatarImageView.imageUrl = _managerInfo.avatar; + self.nickLabel.text = _managerInfo.nick; + } +} + +- (UIView *)contentView { + if (!_contentView) { + _contentView = [[UIView alloc] init]; + _contentView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + } + return _contentView; +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + _tableView.scrollEnabled = NO; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPMineGuildManagerPerTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineGuildManagerPerTableViewCell class])]; + } + return _tableView; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 20; + } + return _avatarImageView; +} + +- (UILabel *)nickLabel{ + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _nickLabel.font = [UIFont systemFontOfSize:15.f]; + } + return _nickLabel; +} + +- (UIView *)navView { + if (!_navView) { + _navView = [[UIView alloc] init]; + _navView.backgroundColor = [UIColor whiteColor]; + } + return _navView; +} + +- (UIButton *)backButton { + if (!_backButton) { + _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateNormal]; + _backButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; + [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _backButton; +} + + +- (UIButton *)completionButton { + if (!_completionButton) { + _completionButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_completionButton setTitle:YMLocalizedString(@"XPMineGuildManagerPerViewController3") forState:UIControlStateNormal]; + [_completionButton setTitleColor:[DJDKMIMOMColor appMainColor] forState:UIControlStateNormal]; + _completionButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_completionButton addTarget:self action:@selector(completionButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _completionButton; +} + + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.font = [UIFont boldSystemFontOfSize:18]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +- (NSMutableArray *)authArray { + if (!_authArray) { + _authArray = [NSMutableArray array]; + } + return _authArray; +} + +- (NSMutableArray *)changeArray { + if (!_changeArray) { + _changeArray = [NSMutableArray array]; + } + return _changeArray; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildManagerSetViewController.h b/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildManagerSetViewController.h new file mode 100644 index 00000000..fd792090 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildManagerSetViewController.h @@ -0,0 +1,16 @@ +// +// XPMineGuildManagerSetViewController.h +// YuMi +// +// Created by YuMi on 2022/4/8. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineGuildManagerSetViewController : MvpViewController +@property (nonatomic,copy) NSString *guildId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildManagerSetViewController.m b/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildManagerSetViewController.m new file mode 100644 index 00000000..41a77f27 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildManagerSetViewController.m @@ -0,0 +1,270 @@ +// +// XPMineGuildManagerSetViewController.m +// YuMi +// +// Created by YuMi on 2022/4/8. +// + +#import "XPMineGuildManagerSetViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "TTPopup.h" +///View +#import "XPClanMemberTableViewCell.h" +///P +#import "XPMineManagerSetPresenter.h" +#import "XPGuildSetManagerProtocol.h" + + +@interface XPMineGuildManagerSetViewController () +@property (nonatomic,strong) UIView * topView; +///已选择的人数 +@property (nonatomic,strong) UILabel *chooseLabel; +///列表 +@property (nonatomic,strong) UITableView *tableView; +///当前的页数 +@property (nonatomic,assign) int page; +///是否有更多数据 +@property (nonatomic,assign) BOOL hasNoMoreData; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +///管理的数量 +@property (nonatomic,assign) int managerNumber; +@end + +@implementation XPMineGuildManagerSetViewController + +- (__kindof id)createPresenter { + return [[XPMineManagerSetPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + [self initHeaderAndFooterRrfresh]; +} + +#pragma mark - 下拉刷新 +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; + [self headerRefresh]; +} + +#pragma mark - 刷新的fangfa +- (void)headerRefresh { + if (self.guildId.length <= 0) { + [self showErrorToast:YMLocalizedString(@"XPMineGuildManagerSetViewController0")]; + [self.navigationController popViewControllerAnimated:YES]; + return; + } + self.page = 1; + [self.presenter getGuildMemberList:self.guildId page:self.page pageSize:20 state:0]; +} + +- (void)footerRefresh { + if (self.guildId.length <= 0) { + [self showErrorToast:YMLocalizedString(@"XPMineGuildManagerSetViewController1")]; + [self.navigationController popViewControllerAnimated:YES]; + return; + } + + if (self.hasNoMoreData) { + [self showErrorToast:YMLocalizedString(@"XPMineGuildManagerSetViewController2")]; + [self.tableView.mj_footer endRefreshing]; + return; + } + self.page++; + [self.presenter getGuildMemberList:self.guildId page:self.page pageSize:20 state:1]; +} + + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMineGuildManagerSetViewController3"); + [self.view addSubview:self.topView]; + [self.view addSubview:self.tableView]; + [self.topView addSubview:self.chooseLabel]; +} + +- (void)initSubViewConstraints { + [self.topView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(20); + make.left.right.top.mas_equalTo(self.view); + }]; + + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.topView.mas_bottom); + make.left.right.bottom.mas_equalTo(self.view); + }]; + + [self.chooseLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.topView).offset(15); + make.centerY.mas_equalTo(self.topView); + }]; +} + +- (void)guildRoomManagerAddOrRemove:(ClanMemberInfoModel *)memberInfo { + if (memberInfo) { + NSMutableArray *array = [NSMutableArray array]; + TTAlertMessageAttributedConfig * alertConfig = [[TTAlertMessageAttributedConfig alloc] init]; + alertConfig.text = memberInfo.nick; + alertConfig.color = [DJDKMIMOMColor appMainColor]; + alertConfig.font = [UIFont systemFontOfSize:15]; + [array addObject:alertConfig]; + NSString * title; + if (memberInfo.roleType == GuildRoleType_Manager) { + title = [NSString stringWithFormat:YMLocalizedString(@"XPMineGuildManagerSetViewController4"), memberInfo.nick]; + } else { + title = [NSString stringWithFormat:YMLocalizedString(@"XPMineGuildManagerSetViewController5"), memberInfo.nick]; + } + TTAlertConfig * config = [[TTAlertConfig alloc] init]; + config.title = YMLocalizedString(@"XPMineGuildManagerSetViewController6"); + config.message = title; + config.messageAttributedConfig = array; + [TTPopup alertWithConfig:config confirmHandler:^{ + if (memberInfo.roleType == GuildRoleType_Manager) { + [self.presenter guildRoomRemoveManager:memberInfo.uid hallId:self.guildId]; + } else { + [self.presenter guildRoomAddManager:memberInfo.uid hallId:self.guildId]; + } + } cancelHandler:^{ + + }]; + } +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + XPClanMemberTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPClanMemberTableViewCell class])]; + if (cell == nil) { + cell = [[XPClanMemberTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPClanMemberTableViewCell class])]; + } + cell.delegate = self; + cell.cellType = ClanMemberTableViewCellType_Manager_Add_Remove; + ClanMemberInfoModel * memberInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + if (memberInfo.roleType == GuildRoleType_Manager) { + self.managerNumber += 1; + } + cell.memberInfo = memberInfo; + self.chooseLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPMineGuildManagerSetViewController7"), self.managerNumber]; + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 66; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; +} + +#pragma mark - XPClanMemberTableViewCellDelegate +- (void)xPClanMemberTableViewCell:(XPClanMemberTableViewCell *)view didClickUser:(ClanMemberInfoModel *)userinfo { + [self guildRoomManagerAddOrRemove:userinfo]; +} + +#pragma mark -XPGuildRemoveMemberProtolcol +- (void)getGuildMemberListSuccess:(ClanMemberDetailInfoModel *)memberInfo state:(int)state { + if (state == 0) { + self.hasNoMoreData = NO; + [self.datasource removeAllObjects]; + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } + + if (memberInfo.members.count > 0) { + [self.datasource addObjectsFromArray:memberInfo.members]; + } else { + self.hasNoMoreData = YES; + } + [self.tableView reloadData]; +} + +- (void)getGuildMemberListFail:(NSString *)msg state:(int)state { + if (state == 0) { + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } +} + +- (void)guildRoomAddManagerSuccess:(NSString *)targetUid { + [self.datasource enumerateObjectsUsingBlock:^(ClanMemberInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.uid == targetUid) { + obj.roleType = GuildRoleType_Manager; + *stop = YES; + } + }]; + [self.tableView reloadData]; +} +- (void)guildRoomRemoveManagerSuccess:(NSString *)targetUid { + self.managerNumber -= 1; + [self.datasource enumerateObjectsUsingBlock:^(ClanMemberInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.uid == targetUid) { + obj.roleType = GuildRoleType_Normal; + *stop = YES; + } + }]; + [self.tableView reloadData]; +} +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + _tableView.showsVerticalScrollIndicator = NO; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPClanMemberTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPClanMemberTableViewCell class])]; + } + return _tableView; +} + +- (UIView *)topView { + if (!_topView) { + _topView = [[UIView alloc] init]; + _topView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + } + return _topView; +} + +- (UILabel *)chooseLabel { + if (!_chooseLabel) { + _chooseLabel = [[UILabel alloc] init]; + _chooseLabel.font = [UIFont systemFontOfSize:12]; + _chooseLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _chooseLabel; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildRemoveMemberViewController.h b/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildRemoveMemberViewController.h new file mode 100644 index 00000000..1d783e13 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildRemoveMemberViewController.h @@ -0,0 +1,17 @@ +// +// XPMineGuildRemoveMemberViewController.h +// YuMi +// +// Created by YuMi on 2022/4/8. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineGuildRemoveMemberViewController : MvpViewController +///公会id +@property (nonatomic,copy) NSString *guildId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildRemoveMemberViewController.m b/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildRemoveMemberViewController.m new file mode 100644 index 00000000..9fc5f120 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildRemoveMemberViewController.m @@ -0,0 +1,215 @@ +// +// XPMineGuildRemoveMemberViewController.m +// YuMi +// +// Created by YuMi on 2022/4/8. +// + +#import "XPMineGuildRemoveMemberViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "TTPopup.h" +///View +#import "XPClanMemberTableViewCell.h" +#import "XPMineGuildEmptyTableViewCell.h" +#import "XPMineUserInfoViewController.h" +///P +#import "XPGuildRemoveMemberPresenter.h" +#import "XPGuildRemoveMemberProtocol.h" + + +@interface XPMineGuildRemoveMemberViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///当前的页数 +@property (nonatomic,assign) int page; +///是否有更多数据 +@property (nonatomic,assign) BOOL hasNoMoreData; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +@end + +@implementation XPMineGuildRemoveMemberViewController + +- (__kindof id)createPresenter { + return [[XPGuildRemoveMemberPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + [self initHeaderAndFooterRrfresh]; +} + +#pragma mark - 下拉刷新 +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; + [self headerRefresh]; +} + +#pragma mark - 刷新的fangfa +- (void)headerRefresh { + if (self.guildId.length <= 0) { + [self showErrorToast:YMLocalizedString(@"XPMineGuildRemoveMemberViewController0")]; + [self.navigationController popViewControllerAnimated:YES]; + return; + } + self.page = 1; + [self.presenter getGuildMemberList:self.guildId page:self.page pageSize:20 state:0]; +} + +- (void)footerRefresh { + if (self.guildId.length <= 0) { + [self showErrorToast:YMLocalizedString(@"XPMineGuildRemoveMemberViewController1")]; + [self.navigationController popViewControllerAnimated:YES]; + return; + } + + if (self.hasNoMoreData) { + [self showErrorToast:YMLocalizedString(@"XPMineGuildRemoveMemberViewController2")]; + [self.tableView.mj_footer endRefreshing]; + return; + } + self.page++; + [self.presenter getGuildMemberList:self.guildId page:self.page pageSize:20 state:1]; +} + + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMineGuildRemoveMemberViewController3"); + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +- (void)removeGuildMemberAlert:(ClanMemberInfoModel *)memberInfo { + NSMutableArray *array = [NSMutableArray array]; + TTAlertMessageAttributedConfig * alertConfig = [[TTAlertMessageAttributedConfig alloc] init]; + alertConfig.text = memberInfo.nick; + alertConfig.color = [DJDKMIMOMColor appMainColor]; + alertConfig.font = [UIFont systemFontOfSize:15]; + [array addObject:alertConfig]; + NSString * title; + if (memberInfo.roleType == GuildRoleType_Manager) { + title = [NSString stringWithFormat:YMLocalizedString(@"XPMineGuildRemoveMemberViewController4"), memberInfo.nick]; + } else { + title = [NSString stringWithFormat:YMLocalizedString(@"XPMineGuildRemoveMemberViewController5"), memberInfo.nick]; + } + TTAlertConfig * config = [[TTAlertConfig alloc] init]; + config.message = title; + config.messageAttributedConfig = array; + [TTPopup alertWithConfig:config confirmHandler:^{ + [self.presenter removeGuildMember:memberInfo.uid hallId:self.guildId]; + } cancelHandler:^{ + + }]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + XPClanMemberTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPClanMemberTableViewCell class])]; + if (cell == nil) { + cell = [[XPClanMemberTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPClanMemberTableViewCell class])]; + } + cell.delegate = self; + cell.cellType = ClanMemberTableViewCellType_Remove_Member; + ClanMemberInfoModel * memberInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.memberInfo = memberInfo; + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 66; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + ClanMemberInfoModel * memberInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + XPMineUserInfoViewController * mineUserVC = [[XPMineUserInfoViewController alloc] init]; + mineUserVC.uid = memberInfo.uid.integerValue; + [self.navigationController pushViewController:mineUserVC animated:YES]; + } +} +#pragma mark - XPClanMemberTableViewCellDelegate +- (void)xPClanMemberTableViewCell:(XPClanMemberTableViewCell *)view didClickUser:(ClanMemberInfoModel *)userinfo { + [self removeGuildMemberAlert:userinfo]; +} + +#pragma mark -XPGuildRemoveMemberProtolcol +- (void)getGuildMemberListSuccess:(ClanMemberDetailInfoModel *)memberInfo state:(int)state { + if (state == 0) { + self.hasNoMoreData = NO; + [self.datasource removeAllObjects]; + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } + + if (memberInfo.members.count > 0) { + [self.datasource addObjectsFromArray:memberInfo.members]; + } else { + self.hasNoMoreData = YES; + } + [self.tableView reloadData]; +} + +- (void)getGuildMemberListFail:(NSString *)msg state:(int)state { + if (state == 0) { + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } +} + +- (void)removeGuildMemberSuccess { + [self headerRefresh]; +} +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + _tableView.showsVerticalScrollIndicator = NO; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPClanMemberTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPClanMemberTableViewCell class])]; + } + return _tableView; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildSetNameViewController.h b/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildSetNameViewController.h new file mode 100644 index 00000000..d20edad7 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildSetNameViewController.h @@ -0,0 +1,19 @@ +// +// XPMineGuildSetNameViewController.h +// YuMi +// +// Created by YuMi on 2022/4/7. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineGuildSetNameViewController : MvpViewController +///公会的id +@property (nonatomic,copy) NSString *hallId; +///房间名 +@property (nonatomic,copy) NSString *roomName; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildSetNameViewController.m b/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildSetNameViewController.m new file mode 100644 index 00000000..df9b24e9 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineGuildSetNameViewController.m @@ -0,0 +1,164 @@ +// +// XPMineGuildSetNameViewController.m +// YuMi +// +// Created by YuMi on 2022/4/7. +// + +#import "XPMineGuildSetNameViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +///P +#import "XPGuildSetNamePresenter.h" +#import "XPGuildSetNameProtocol.h" + +@interface XPMineGuildSetNameViewController () +///容器 +@property (nonatomic, strong) UIView *containView; +///房间名 +@property (nonatomic, strong) UITextField *nameTextField; +///描述的问题 +@property (nonatomic,strong) YYLabel *descriptionLabel; +@end + +@implementation XPMineGuildSetNameViewController + +- (__kindof id)createPresenter { + return [[XPGuildSetNamePresenter alloc] init];; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + [self.nameTextField resignFirstResponder]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMineGuildSetNameViewController0"); + [self.view addSubview:self.containView]; + [self.view addSubview:self.descriptionLabel]; + [self.containView addSubview:self.nameTextField]; + [self addNavigationItemWithTitles:@[YMLocalizedString(@"XPMineGuildSetNameViewController1")] titleColor:[DJDKMIMOMColor appMainColor] isLeft:NO target:self action:@selector(completionBtnAction:) tags:nil]; +} + +- (void)initSubViewConstraints { + [self.containView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(20); + make.left.mas_equalTo(self.view).offset(15); + make.right.mas_equalTo(self.view).offset(-15); + make.height.mas_equalTo(40); + }]; + [self.nameTextField mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.containView); + make.left.mas_equalTo(self.containView).offset(5); + make.right.mas_equalTo(self.containView); + make.height.mas_equalTo(40); + }]; + + [self.descriptionLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.containView); + make.top.mas_equalTo(self.containView.mas_bottom).offset(5); + }]; +} + +// 昵称规则过滤 +- (void)nickTextRuleFilter:(UITextField *)textField{ + NSString *toBeString = textField.text; + NSString *lang = [self.nameTextField.textInputMode primaryLanguage]; + if ([lang isEqualToString:@"zh-Hans"]){// 简体中文输入 + //获取高亮部分 + UITextRange *selectedRange = [self.nameTextField markedTextRange]; + UITextPosition *position = [self.nameTextField positionFromPosition:selectedRange.start offset:0]; + // 没有高亮选择的字,则对已输入的文字进行字数统计和限制 + if (!position){ + if (toBeString.length > 15){ + [self showErrorToast:YMLocalizedString(@"XPMineGuildSetNameViewController2")]; + NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:15]; + if (rangeIndex.length == 1){ + self.nameTextField.text = [toBeString substringToIndex:15]; + }else{ + NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, 15)]; + self.nameTextField.text = [toBeString substringWithRange:rangeRange]; + } + } + } + }else{ // 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况 + if (toBeString.length > 15){ + [self showErrorToast:YMLocalizedString(@"XPMineGuildSetNameViewController3")]; + NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:15]; + if (rangeIndex.length == 1){ + self.nameTextField.text = [toBeString substringToIndex:15]; + }else{ + NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, 15)]; + self.nameTextField.text = [toBeString substringWithRange:rangeRange]; + } + } + } +} + +#pragma mark - XPGuildSetNameProtocol +- (void)updateGuildRoomNameSuccess { + [self.navigationController popViewControllerAnimated:YES]; +} + +#pragma mark - Event Response +- (void)completionBtnAction:(UIButton *)sender { + if (self.nameTextField.text.length <= 0) { + [self showErrorToast:YMLocalizedString(@"XPMineGuildSetNameViewController4")]; + return; + } + [self.presenter updateGuildRoomName:self.nameTextField.text hallId:self.hallId]; +} +#pragma mark - getter && setter +- (void)setRoomName:(NSString *)roomName { + _roomName = roomName; + self.nameTextField.text = _roomName; +} + +- (UIView *)containView { + if (!_containView) { + _containView = [[UIView alloc] init]; + _containView.layer.cornerRadius = 5; + _containView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + } + return _containView; +} + +- (UITextField *)nameTextField { + if (!_nameTextField) { + _nameTextField = [[UITextField alloc] init]; + _nameTextField.clearButtonMode = UITextFieldViewModeAlways; + _nameTextField.font = [UIFont systemFontOfSize:14]; + _nameTextField.textColor = [DJDKMIMOMColor mainTextColor]; + _nameTextField.tintColor = [DJDKMIMOMColor mainTextColor]; + [_nameTextField addTarget:self action:@selector(nickTextRuleFilter:) forControlEvents:UIControlEventEditingChanged]; + } + return _nameTextField; +} + +- (YYLabel *)descriptionLabel { + if (!_descriptionLabel) { + _descriptionLabel = [[YYLabel alloc] init]; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + UIImageView *imaveView = [[UIImageView alloc]init]; + imaveView.image = [UIImage imageNamed:@"mine_guild_manager_edit_name_logo"]; + imaveView.bounds = CGRectMake(0, 0, 16, 16); + NSMutableAttributedString * attrString = [NSMutableAttributedString yy_attachmentStringWithContent:imaveView contentMode:UIViewContentModeScaleAspectFit attachmentSize:CGSizeMake(imaveView.frame.size.width, imaveView.frame.size.height) alignToFont:[UIFont systemFontOfSize:15.0] alignment:YYTextVerticalAlignmentCenter]; + + NSMutableAttributedString * titleAttribute = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPMineGuildSetNameViewController5") attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14],NSForegroundColorAttributeName:[DJDKMIMOMColor mainTextColor]}]; + [attribute appendAttributedString:attrString]; + [attribute appendAttributedString:titleAttribute]; + _descriptionLabel.attributedText = attribute; + } + return _descriptionLabel; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineMangerListViewController.h b/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineMangerListViewController.h new file mode 100644 index 00000000..9accf14f --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineMangerListViewController.h @@ -0,0 +1,16 @@ +// +// XPMineMangerListViewController.h +// YuMi +// +// Created by YuMi on 2022/4/8. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineMangerListViewController : MvpViewController +@property (nonatomic,copy) NSString *guildId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineMangerListViewController.m b/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineMangerListViewController.m new file mode 100644 index 00000000..6b6104ac --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/Setting/XPMineMangerListViewController.m @@ -0,0 +1,210 @@ +// +// XPMineMangerListViewController.m +// YuMi +// +// Created by YuMi on 2022/4/8. +// 高管列表 + +#import "XPMineMangerListViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" + +///View +#import "XPClanMemberTableViewCell.h" +#import "XPMineGuildEmptyTableViewCell.h" +#import "XPMineGuildManagerSetViewController.h" +#import "XPMineGuildManagerPerViewController.h" +///P +#import "XPGuildMangerListPresenter.h" +#import "XPGuildManagerListProtocol.h" + +@interface XPMineMangerListViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///当前的页数 +@property (nonatomic,assign) int page; +///是否有更多数据 +@property (nonatomic,assign) BOOL hasNoMoreData; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +@end + +@implementation XPMineMangerListViewController + +- (__kindof id)createPresenter { + return [[XPGuildMangerListPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + [self initHeaderAndFooterRrfresh]; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + if (self.guildId.length > 0) { + [self headerRefresh]; + } +} + +#pragma mark - 下拉刷新 +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; +} + +#pragma mark - 刷新的fangfa +- (void)headerRefresh { + if (self.guildId.length <= 0) { + [self showErrorToast:YMLocalizedString(@"XPMineMangerListViewController0")]; + [self.navigationController popViewControllerAnimated:YES]; + return; + } + self.page = 1; + [self.presenter getGuildRoomManagerList:self.guildId page:self.page pageSize:20 state:0]; +} + +- (void)footerRefresh { + if (self.guildId.length <= 0) { + [self showErrorToast:YMLocalizedString(@"XPMineMangerListViewController1")]; + [self.navigationController popViewControllerAnimated:YES]; + return; + } + + if (self.hasNoMoreData) { + [self showErrorToast:YMLocalizedString(@"XPMineMangerListViewController2")]; + [self.tableView.mj_footer endRefreshing]; + return; + } + self.page++; + [self.presenter getGuildRoomManagerList:self.guildId page:self.page pageSize:20 state:1]; +} + + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMineMangerListViewController3"); + [self.view addSubview:self.tableView]; + [self addNavigationItemWithImageNames:@[@"mine_guild_guild_manager_set"] isLeft:NO target:self action:@selector(rightButtonAction:) tags:nil]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPClanMemberTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPClanMemberTableViewCell class])]; + if (cell == nil) { + cell = [[XPClanMemberTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPClanMemberTableViewCell class])]; + } + cell.cellType = ClanMemberTableViewCellType_Manager_Set; + ClanMemberInfoModel * memberInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.memberInfo = memberInfo; + return cell; + } + + XPMineGuildEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineGuildEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineGuildEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineGuildEmptyTableViewCell class])]; + } + cell.emptyTitle = YMLocalizedString(@"XPMineMangerListViewController4"); + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return self.datasource.count > 0 ? 66 : (KScreenHeight - kNavigationHeight); +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + ClanMemberInfoModel * memberInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + XPMineGuildManagerPerViewController * managerAuthVC = [[XPMineGuildManagerPerViewController alloc] init]; + managerAuthVC.guildId = self.guildId; + managerAuthVC.managerInfo = memberInfo; + [self.navigationController pushViewController:managerAuthVC animated:YES]; + } +} + +#pragma mark -XPGuildRemoveMemberProtolcol +- (void)getGuildRoomManagerListSuccess:(ClanMemberDetailInfoModel *)memberInfo state:(int)state { + if (state == 0) { + self.hasNoMoreData = NO; + [self.datasource removeAllObjects]; + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } + + if (memberInfo.members.count > 0) { + [self.datasource addObjectsFromArray:memberInfo.members]; + } else { + self.hasNoMoreData = YES; + } + [self.tableView reloadData]; +} + +- (void)getGuildRoomManagerListFail:(NSString *)msg state:(int)state{ + if (state == 0) { + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } +} + +#pragma mark - Event Response +- (void)rightButtonAction:(UIButton *)sender { + XPMineGuildManagerSetViewController * managerSetVC = [[XPMineGuildManagerSetViewController alloc] init]; + managerSetVC.guildId = self.guildId; + [self.navigationController pushViewController:managerSetVC animated:YES]; +} + +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + _tableView.showsVerticalScrollIndicator = NO; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPClanMemberTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPClanMemberTableViewCell class])]; + [_tableView registerClass:[XPMineGuildEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineGuildEmptyTableViewCell class])]; + } + return _tableView; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeMangerStatementRegardGovernancer.h b/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeMangerStatementRegardGovernancer.h deleted file mode 100644 index 8577e3e0..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeMangerStatementRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIManeMangerStatementRegardGovernancer.h -// YuMi -// -// Created by YuMi on 2022/4/8. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeMangerStatementRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,copy) NSString *instituteId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeMangerStatementRegardGovernancer.m b/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeMangerStatementRegardGovernancer.m deleted file mode 100644 index 07302419..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeMangerStatementRegardGovernancer.m +++ /dev/null @@ -1,202 +0,0 @@ -// -// YUMIManeMangerStatementRegardGovernancer.m -// YuMi -// -// Created by YuMi on 2022/4/8. -// 高管列表 - -#import "YUMIManeMangerStatementRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" - -#import "YUMICollectiveComponentTabulationRegardElement.h" -#import "YUMIManeUnionDispossessTabulationRegardElement.h" -#import "YUMIManeUnionExecutiveSetRegardGovernancer.h" -#import "YUMIManeUnionExecutivePerRegardGovernancer.h" -#import "YUMIUnionMangerStatementExternalizer.h" -#import "FBCUnionExecutiveStatementCeremony.h" - -@interface YUMIManeMangerStatementRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,assign) int page; -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; -@property (nonatomic,strong) NSMutableArray *datasource; -@end - -@implementation YUMIManeMangerStatementRegardGovernancer - -- (__kindof id)producePresimport { - return [[YUMIUnionMangerStatementExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self initIntelligencerGrantedTerminalerRrfresh]; -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - if (self.instituteId.length > 0) { - [self intelligenceerRenovtowardseh]; - } -} - -#pragma mark - 下拉刷新 -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; -} - -#pragma mark - 刷新的fangfa -- (void)intelligenceerRenovtowardseh { - if (self.instituteId.length <= 0) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineMangerListViewController0")]; - [self.navigationController popViewControllerAnimated:YES]; - return; - } - self.page = 1; - [self.presimport acquireUnionChamberExecutiveSttowardsement:self.instituteId page:self.page pageSize:20 state:0]; -} - -- (void)footerRenovtowardseh { - if (self.instituteId.length <= 0) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineMangerListViewController1")]; - [self.navigationController popViewControllerAnimated:YES]; - return; - } - - if (self.hasNoFurthaerAtoloudspeaker) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineMangerListViewController2")]; - [self.tableView.mj_footer endRefreshing]; - return; - } - self.page++; - [self.presimport acquireUnionChamberExecutiveSttowardsement:self.instituteId page:self.page pageSize:20 state:1]; -} - - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_MineMangerListViewController3"); - [self.view addSubview:self.tableView]; - [self accelertowardseBreeadcrumbProvisionAboutIndictowardseSaluttowardsion:@[@"mine_guild_guild_manager_set"] isContrary:NO target:self action:@selector(rectifyBtutonPerformance:) tags:nil]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMICollectiveComponentTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMICollectiveComponentTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMICollectiveComponentTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMICollectiveComponentTabulationRegardElement class])]; - } - cell.cellType = ClanMemberTableRegardCellGenre_Manager_Set; - CollectiveComponentAbstractMatrix * componentAbstract = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.componentAbstract = componentAbstract; - return cell; - } - - YUMIManeUnionDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeUnionDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeUnionDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeUnionDispossessTabulationRegardElement class])]; - } - cell.emptyTitle = YMLocalizedString(@"YUMI_MineMangerListViewController4"); - return cell; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return self.datasource.count > 0 ? 66 : (KScreenHeight - kNavigationHeight); -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.datasource.count > 0) { - CollectiveComponentAbstractMatrix * componentAbstract = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - YUMIManeUnionExecutivePerRegardGovernancer * managerAuthVC = [[YUMIManeUnionExecutivePerRegardGovernancer alloc] init]; - managerAuthVC.instituteId = self.instituteId; - managerAuthVC.executiveAbstract = componentAbstract; - [self.navigationController pushViewController:managerAuthVC animated:YES]; - } -} - -#pragma mark -XPGuildRemoveMemberProtolcol -- (void)acquireUnionChamberExecutiveSttowardsementAccomplishment:(CollectiveComponentSpecificAbstractMatrix *)componentAbstract state:(int)state { - if (state == 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - [self.datasource removeAllObjects]; - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } - - if (componentAbstract.members.count > 0) { - [self.datasource addObjectsFromArray:componentAbstract.members]; - } else { - self.hasNoFurthaerAtoloudspeaker = YES; - } - [self.tableView reloadData]; -} - -- (void)acquireUnionChamberExecutiveSttowardsementFlunk:(NSString *)msg state:(int)state{ - if (state == 0) { - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } -} - -#pragma mark - Event Response -- (void)rectifyBtutonPerformance:(UIButton *)sender { - YUMIManeUnionExecutiveSetRegardGovernancer * managerSetVC = [[YUMIManeUnionExecutiveSetRegardGovernancer alloc] init]; - managerSetVC.instituteId = self.instituteId; - [self.navigationController pushViewController:managerSetVC animated:YES]; -} - -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - _tableView.showsVerticalScrollIndicator = NO; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMICollectiveComponentTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMICollectiveComponentTabulationRegardElement class])]; - [_tableView registerClass:[YUMIManeUnionDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeUnionDispossessTabulationRegardElement class])]; - } - return _tableView; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeUnionExecutivePerRegardGovernancer.h b/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeUnionExecutivePerRegardGovernancer.h deleted file mode 100644 index ff974df8..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeUnionExecutivePerRegardGovernancer.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YUMIManeUnionExecutivePerRegardGovernancer.h -// YuMi -// -// Created by YuMi on 2022/4/8. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN -@class CollectiveComponentAbstractMatrix; -@interface YUMIManeUnionExecutivePerRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,copy) NSString *instituteId; -@property (nonatomic,strong) CollectiveComponentAbstractMatrix *executiveAbstract; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeUnionExecutivePerRegardGovernancer.m b/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeUnionExecutivePerRegardGovernancer.m deleted file mode 100644 index bae29b14..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeUnionExecutivePerRegardGovernancer.m +++ /dev/null @@ -1,305 +0,0 @@ -// -// YUMIManeUnionExecutivePerRegardGovernancer.m -// YuMi -// -// Created by YuMi on 2022/4/8. -// 管理权限 - -#import "YUMIManeUnionExecutivePerRegardGovernancer.h" -#import -#import "DJDKMIMOMColor.h" - -#import "NetIndicateRegard.h" -#import "MKJPopup.h" -#import "CollectiveComponentSpecificAbstractMatrix.h" -#import "UnionAuthMatrix.h" -#import "YUMIManeUnionExecutivePerTabulationRegardElement.h" -#import "YUMIUnionExecutivePerExternalizer.h" -#import "FBCUnionExecutivePerCeremony.h" -@interface YUMIManeUnionExecutivePerRegardGovernancer () -@property (nonatomic,strong) UIView * nevRegard; -@property (nonatomic,strong) UIButton *backButton; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UIButton *completionBtuton; -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) UIView * contentView; -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) NSArray *datasource; -@property (nonatomic,strong) NSMutableArray *attestationGarment; -@property (nonatomic,strong) NSMutableArray *diversificationGarment; -@end - -@implementation YUMIManeUnionExecutivePerRegardGovernancer - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (__kindof id)producePresimport { - return [[YUMIUnionExecutivePerExternalizer alloc] init];; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self.presimport acquireUnionChamberExecutivePrecondition:self.executiveAbstract.uid]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.titleLabel.text = YMLocalizedString(@"YUMI_MineGuildManagerPerViewController0"); - [self.view addSubview:self.nevRegard]; - [self.view addSubview:self.contentView]; - [self.view addSubview:self.tableView]; - - [self.nevRegard addSubview:self.backButton]; - [self.nevRegard addSubview:self.titleLabel]; - [self.nevRegard addSubview:self.completionBtuton]; - - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.monicerSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.nevRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.height.mas_equalTo(kNavigationHeight); - }]; - - [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.view).mas_offset(10); - make.top.mas_equalTo(statusbarHeight); - make.height.width.mas_equalTo(44); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.nevRegard); - make.centerY.mas_equalTo(self.backButton); - }]; - - [self.completionBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.nevRegard).offset(-15); - make.centerY.mas_equalTo(self.backButton); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.nevRegard.mas_bottom); - make.left.right.mas_equalTo(self.view); - make.height.mas_equalTo(50); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(40, 40)); - make.left.mas_equalTo(self.contentView).offset(15); - make.top.mas_equalTo(self.contentView).offset(10); - }]; - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(10); - }]; - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.top.mas_equalTo(self.contentView.mas_bottom); - }]; - - -} - - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 70; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - YUMIManeUnionExecutivePerTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeUnionExecutivePerTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeUnionExecutivePerTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeUnionExecutivePerTabulationRegardElement class])]; - } - UnionAuthMatrix * attestationAbstract = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.attestationAbstract = attestationAbstract; - cell.delegate = self; - if (attestationAbstract.status) { - if (![self.attestationGarment containsObject:attestationAbstract.code]) { - [self.attestationGarment addObject:attestationAbstract.code]; - } - } else { - if ([self.attestationGarment containsObject:attestationAbstract.code]) { - [self.attestationGarment removeObject:attestationAbstract.code]; - } - } - return cell; -} - -#pragma mark - FBCManeUnionExecutivePerTabulationViweElementRepresendtation -- (void)fBCManeUnionExecutivePerTarbsultowardsionViweElement:(UISwitch *)onswitch attestationAbstract:(UnionAuthMatrix *)attestationAbstract { - if (onswitch.on) { - if (![self.attestationGarment containsObject:attestationAbstract.code]) { - [self.attestationGarment addObject:attestationAbstract.code]; - } - - if (![self.diversificationGarment containsObject:attestationAbstract.code]) { - [self.diversificationGarment addObject:attestationAbstract.code]; - } - - } else { - if ([self.attestationGarment containsObject:attestationAbstract.code]) { - [self.attestationGarment removeObject:attestationAbstract.code]; - } - - if ([self.diversificationGarment containsObject:attestationAbstract.code]) { - [self.diversificationGarment removeObject:attestationAbstract.code]; - } - } -} - -#pragma mark - CollectiveComponentSpecificAbstractMatrix -- (void)acquireUnionChamberExecutivePreconditionAccomplishment:(NSArray *)array { - self.datasource = array; - [self.tableView reloadData]; -} - -- (void)refurbishUnionChamberExecutivePreconditionAccomplishment { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_MineGuildManagerPerViewController1")]; - [self.navigationController popViewControllerAnimated:YES]; -} - -#pragma mark - Event Response -- (void)implementtowardsionBtutonPerformance:(UIButton *)sender { - if (self.attestationGarment.count > 0) { - NSString *authStr = [[self.attestationGarment componentsJoinedByString:@","] stringByAppendingString:@","]; - [self.presimport refurbishUnionChamberExecutivePrecondition:self.instituteId managerUid:self.executiveAbstract.uid authStr:authStr]; - } else { - [self.presimport refurbishUnionChamberExecutivePrecondition:self.instituteId managerUid:self.executiveAbstract.uid authStr:@""]; - } -} - -- (void)encourageBtutonPerformance:(UIButton *)sender { - if (self.diversificationGarment.count == 0) { - [self.navigationController popViewControllerAnimated:YES]; - return; - } - - [MKJPopup precautiousAboutCommunictowardsion:YMLocalizedString(@"YUMI_MineGuildManagerPerViewController2") acknowledgementHandler:^{ - [self.navigationController popViewControllerAnimated:YES]; - } cancelHandler:^{ - }]; -} - -#pragma mark - Getters And Setters -- (void)setExecutiveAbstract:(CollectiveComponentAbstractMatrix *)executiveAbstract { - _executiveAbstract = executiveAbstract; - if (_executiveAbstract) { - self.intelligenceportraitIndicateRegard.imageUrl = _executiveAbstract.avatar; - self.monicerSequencignation.text = _executiveAbstract.nick; - } -} - -- (UIView *)contentView { - if (!_contentView) { - _contentView = [[UIView alloc] init]; - _contentView.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - } - return _contentView; -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - _tableView.scrollEnabled = NO; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIManeUnionExecutivePerTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeUnionExecutivePerTabulationRegardElement class])]; - } - return _tableView; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 20; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)monicerSequencignation{ - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _monicerSequencignation.font = [UIFont systemFontOfSize:15.f]; - } - return _monicerSequencignation; -} - -- (UIView *)nevRegard { - if (!_nevRegard) { - _nevRegard = [[UIView alloc] init]; - _nevRegard.backgroundColor = [UIColor whiteColor]; - } - return _nevRegard; -} - -- (UIButton *)backButton { - if (!_backButton) { - _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backButton setImage:[UIImage imageNamed:@"yumi_same_title_back"] forState:UIControlStateNormal]; - _backButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; - [_backButton addTarget:self action:@selector(encourageBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _backButton; -} - - -- (UIButton *)completionBtuton { - if (!_completionBtuton) { - _completionBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_completionBtuton setTitle:YMLocalizedString(@"YUMI_MineGuildManagerPerViewController3") forState:UIControlStateNormal]; - [_completionBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionMainPrettify] forState:UIControlStateNormal]; - _completionBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_completionBtuton addTarget:self action:@selector(implementtowardsionBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _completionBtuton; -} - - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.font = [UIFont boldSystemFontOfSize:18]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -- (NSMutableArray *)attestationGarment { - if (!_attestationGarment) { - _attestationGarment = [NSMutableArray array]; - } - return _attestationGarment; -} - -- (NSMutableArray *)diversificationGarment { - if (!_diversificationGarment) { - _diversificationGarment = [NSMutableArray array]; - } - return _diversificationGarment; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeUnionExecutiveSetRegardGovernancer.h b/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeUnionExecutiveSetRegardGovernancer.h deleted file mode 100644 index 4dcc9b31..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeUnionExecutiveSetRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIManeUnionExecutiveSetRegardGovernancer.h -// YuMi -// -// Created by YuMi on 2022/4/8. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeUnionExecutiveSetRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,copy) NSString *instituteId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeUnionExecutiveSetRegardGovernancer.m b/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeUnionExecutiveSetRegardGovernancer.m deleted file mode 100644 index 1e684885..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeUnionExecutiveSetRegardGovernancer.m +++ /dev/null @@ -1,260 +0,0 @@ -// -// YUMIManeUnionExecutiveSetRegardGovernancer.m -// YuMi -// -// Created by YuMi on 2022/4/8. -// - -#import "YUMIManeUnionExecutiveSetRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "MKJPopup.h" -#import "YUMICollectiveComponentTabulationRegardElement.h" -#import "YUMIManeExecutiveSetExternalizer.h" -#import "FBCUnionSetExecutiveCeremony.h" - - -@interface YUMIManeUnionExecutiveSetRegardGovernancer () -@property (nonatomic,strong) UIView * apexRegard; -@property (nonatomic,strong) UILabel *concludeSequencignation; -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,assign) int page; -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,assign) int executiveDigital; -@end - -@implementation YUMIManeUnionExecutiveSetRegardGovernancer - -- (__kindof id)producePresimport { - return [[YUMIManeExecutiveSetExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self initIntelligencerGrantedTerminalerRrfresh]; -} - -#pragma mark - 下拉刷新 -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - [self intelligenceerRenovtowardseh]; -} - -#pragma mark - 刷新的fangfa -- (void)intelligenceerRenovtowardseh { - if (self.instituteId.length <= 0) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineGuildManagerSetViewController0")]; - [self.navigationController popViewControllerAnimated:YES]; - return; - } - self.page = 1; - [self.presimport acquireUnionComponentSttowardsement:self.instituteId page:self.page pageSize:20 state:0]; -} - -- (void)footerRenovtowardseh { - if (self.instituteId.length <= 0) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineGuildManagerSetViewController1")]; - [self.navigationController popViewControllerAnimated:YES]; - return; - } - - if (self.hasNoFurthaerAtoloudspeaker) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineGuildManagerSetViewController2")]; - [self.tableView.mj_footer endRefreshing]; - return; - } - self.page++; - [self.presimport acquireUnionComponentSttowardsement:self.instituteId page:self.page pageSize:20 state:1]; -} - - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_MineGuildManagerSetViewController3"); - [self.view addSubview:self.apexRegard]; - [self.view addSubview:self.tableView]; - [self.apexRegard addSubview:self.concludeSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.apexRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(20); - make.left.right.top.mas_equalTo(self.view); - }]; - - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.apexRegard.mas_bottom); - make.left.right.bottom.mas_equalTo(self.view); - }]; - - [self.concludeSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.apexRegard).offset(15); - make.centerY.mas_equalTo(self.apexRegard); - }]; -} - -- (void)unionChamberExecutiveAccelertowardseOrTransltowardse:(CollectiveComponentAbstractMatrix *)componentAbstract { - if (componentAbstract) { - NSMutableArray *array = [NSMutableArray array]; - MKJPrecautiousCommunicationAttributedDisposition * alertConfig = [[MKJPrecautiousCommunicationAttributedDisposition alloc] init]; - alertConfig.text = componentAbstract.nick; - alertConfig.color = [DJDKMIMOMColor aplictowardsionMainPrettify]; - alertConfig.font = [UIFont systemFontOfSize:15]; - [array addObject:alertConfig]; - NSString * title; - if (componentAbstract.roleType == UnionRoleGenre_Manager) { - title = [NSString stringWithFormat:YMLocalizedString(@"YUMI_MineGuildManagerSetViewController4"), componentAbstract.nick]; - } else { - title = [NSString stringWithFormat:YMLocalizedString(@"YUMI_MineGuildManagerSetViewController5"), componentAbstract.nick]; - } - MKJPrecautiousDisposition * config = [[MKJPrecautiousDisposition alloc] init]; - config.title = YMLocalizedString(@"YUMI_MineGuildManagerSetViewController6"); - config.message = title; - config.communicationAttributedDisposition = array; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - if (componentAbstract.roleType == UnionRoleGenre_Manager) { - [self.presimport unionChamberTransltowardseExecutive:componentAbstract.uid hallId:self.instituteId]; - } else { - [self.presimport unionChamberAccelertowardseExecutive:componentAbstract.uid hallId:self.instituteId]; - } - } cancelHandler:^{ - - }]; - } -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - YUMICollectiveComponentTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMICollectiveComponentTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMICollectiveComponentTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMICollectiveComponentTabulationRegardElement class])]; - } - cell.delegate = self; - cell.cellType = ClanMemberTableRegardCellGenre_Manager_Add_Remove; - CollectiveComponentAbstractMatrix * componentAbstract = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (componentAbstract.roleType == UnionRoleGenre_Manager) { - self.executiveDigital += 1; - } - cell.componentAbstract = componentAbstract; - self.concludeSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_MineGuildManagerSetViewController7"), self.executiveDigital]; - return cell; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 66; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; -} - -#pragma mark - FBCCollectiveMemberTabulationViweElementRepresendtation -- (void)yUMICollectiveComponentTarbsultowardsionViweElement:(YUMICollectiveComponentTabulationRegardElement *)view didClickUser:(CollectiveComponentAbstractMatrix *)userinfo { - [self unionChamberExecutiveAccelertowardseOrTransltowardse:userinfo]; -} - -#pragma mark -XPGuildRemoveMemberProtolcol -- (void)acquireUnionComponentSttowardsementAccomplishment:(CollectiveComponentSpecificAbstractMatrix *)componentAbstract state:(int)state { - if (state == 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - [self.datasource removeAllObjects]; - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } - - if (componentAbstract.members.count > 0) { - [self.datasource addObjectsFromArray:componentAbstract.members]; - } else { - self.hasNoFurthaerAtoloudspeaker = YES; - } - [self.tableView reloadData]; -} - -- (void)acquireUnionComponentSttowardsementFlunk:(NSString *)msg state:(int)state { - if (state == 0) { - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } -} - -- (void)unionChamberAccelertowardseExecutiveAccomplishment:(NSString *)targetUid { - [self.datasource enumerateObjectsUsingBlock:^(CollectiveComponentAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.uid == targetUid) { - obj.roleType = UnionRoleGenre_Manager; - *stop = YES; - } - }]; - [self.tableView reloadData]; -} -- (void)unionChamberTransltowardseExecutiveAccomplishment:(NSString *)targetUid { - self.executiveDigital -= 1; - [self.datasource enumerateObjectsUsingBlock:^(CollectiveComponentAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.uid == targetUid) { - obj.roleType = UnionRoleGenre_Normal; - *stop = YES; - } - }]; - [self.tableView reloadData]; -} -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - _tableView.showsVerticalScrollIndicator = NO; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMICollectiveComponentTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMICollectiveComponentTabulationRegardElement class])]; - } - return _tableView; -} - -- (UIView *)apexRegard { - if (!_apexRegard) { - _apexRegard = [[UIView alloc] init]; - _apexRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - } - return _apexRegard; -} - -- (UILabel *)concludeSequencignation { - if (!_concludeSequencignation) { - _concludeSequencignation = [[UILabel alloc] init]; - _concludeSequencignation.font = [UIFont systemFontOfSize:12]; - _concludeSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _concludeSequencignation; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeUnionRemoveComponentRegardGovernancer.h b/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeUnionRemoveComponentRegardGovernancer.h deleted file mode 100644 index 8ab78a6a..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeUnionRemoveComponentRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIManeUnionRemoveComponentRegardGovernancer.h -// YuMi -// -// Created by YuMi on 2022/4/8. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeUnionRemoveComponentRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,copy) NSString *instituteId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeUnionRemoveComponentRegardGovernancer.m b/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeUnionRemoveComponentRegardGovernancer.m deleted file mode 100644 index 134421a1..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeUnionRemoveComponentRegardGovernancer.m +++ /dev/null @@ -1,207 +0,0 @@ -// -// YUMIManeUnionRemoveComponentRegardGovernancer.m -// YuMi -// -// Created by YuMi on 2022/4/8. -// - -#import "YUMIManeUnionRemoveComponentRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "MKJPopup.h" -#import "YUMICollectiveComponentTabulationRegardElement.h" -#import "YUMIManeUnionDispossessTabulationRegardElement.h" -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -#import "YUMIUnionRemoveComponentExternalizer.h" -#import "FBCUnionRemoveMemberCeremony.h" - - -@interface YUMIManeUnionRemoveComponentRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,assign) int page; -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; -@property (nonatomic,strong) NSMutableArray *datasource; -@end - -@implementation YUMIManeUnionRemoveComponentRegardGovernancer - -- (__kindof id)producePresimport { - return [[YUMIUnionRemoveComponentExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self initIntelligencerGrantedTerminalerRrfresh]; -} - -#pragma mark - 下拉刷新 -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - [self intelligenceerRenovtowardseh]; -} - -#pragma mark - 刷新的fangfa -- (void)intelligenceerRenovtowardseh { - if (self.instituteId.length <= 0) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineGuildRemoveMemberViewController0")]; - [self.navigationController popViewControllerAnimated:YES]; - return; - } - self.page = 1; - [self.presimport acquireUnionComponentSttowardsement:self.instituteId page:self.page pageSize:20 state:0]; -} - -- (void)footerRenovtowardseh { - if (self.instituteId.length <= 0) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineGuildRemoveMemberViewController1")]; - [self.navigationController popViewControllerAnimated:YES]; - return; - } - - if (self.hasNoFurthaerAtoloudspeaker) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineGuildRemoveMemberViewController2")]; - [self.tableView.mj_footer endRefreshing]; - return; - } - self.page++; - [self.presimport acquireUnionComponentSttowardsement:self.instituteId page:self.page pageSize:20 state:1]; -} - - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_MineGuildRemoveMemberViewController3"); - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -- (void)transltowardseUnionComponentPrecautious:(CollectiveComponentAbstractMatrix *)componentAbstract { - NSMutableArray *array = [NSMutableArray array]; - MKJPrecautiousCommunicationAttributedDisposition * alertConfig = [[MKJPrecautiousCommunicationAttributedDisposition alloc] init]; - alertConfig.text = componentAbstract.nick; - alertConfig.color = [DJDKMIMOMColor aplictowardsionMainPrettify]; - alertConfig.font = [UIFont systemFontOfSize:15]; - [array addObject:alertConfig]; - NSString * title; - if (componentAbstract.roleType == UnionRoleGenre_Manager) { - title = [NSString stringWithFormat:YMLocalizedString(@"YUMI_MineGuildRemoveMemberViewController4"), componentAbstract.nick]; - } else { - title = [NSString stringWithFormat:YMLocalizedString(@"YUMI_MineGuildRemoveMemberViewController5"), componentAbstract.nick]; - } - MKJPrecautiousDisposition * config = [[MKJPrecautiousDisposition alloc] init]; - config.message = title; - config.communicationAttributedDisposition = array; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [self.presimport transltowardseUnionComponent:componentAbstract.uid hallId:self.instituteId]; - } cancelHandler:^{ - - }]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - YUMICollectiveComponentTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMICollectiveComponentTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMICollectiveComponentTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMICollectiveComponentTabulationRegardElement class])]; - } - cell.delegate = self; - cell.cellType = ClanMemberTableRegardCellGenre_Remove_Member; - CollectiveComponentAbstractMatrix * componentAbstract = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.componentAbstract = componentAbstract; - return cell; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 66; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.datasource.count > 0) { - CollectiveComponentAbstractMatrix * componentAbstract = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - YUMIManeConsumerAbstractRegardGovernancer * mineUserVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - mineUserVC.uid = componentAbstract.uid.integerValue; - [self.navigationController pushViewController:mineUserVC animated:YES]; - } -} -#pragma mark - FBCCollectiveMemberTabulationViweElementRepresendtation -- (void)yUMICollectiveComponentTarbsultowardsionViweElement:(YUMICollectiveComponentTabulationRegardElement *)view didClickUser:(CollectiveComponentAbstractMatrix *)userinfo { - [self transltowardseUnionComponentPrecautious:userinfo]; -} - -#pragma mark -XPGuildRemoveMemberProtolcol -- (void)acquireUnionComponentSttowardsementAccomplishment:(CollectiveComponentSpecificAbstractMatrix *)componentAbstract state:(int)state { - if (state == 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - [self.datasource removeAllObjects]; - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } - - if (componentAbstract.members.count > 0) { - [self.datasource addObjectsFromArray:componentAbstract.members]; - } else { - self.hasNoFurthaerAtoloudspeaker = YES; - } - [self.tableView reloadData]; -} - -- (void)acquireUnionComponentSttowardsementFlunk:(NSString *)msg state:(int)state { - if (state == 0) { - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } -} - -- (void)transltowardseUnionComponentAccomplishment { - [self intelligenceerRenovtowardseh]; -} -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - _tableView.showsVerticalScrollIndicator = NO; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMICollectiveComponentTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMICollectiveComponentTabulationRegardElement class])]; - } - return _tableView; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeUnionSetNameRegardGovernancer.h b/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeUnionSetNameRegardGovernancer.h deleted file mode 100644 index c75f8317..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeUnionSetNameRegardGovernancer.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YUMIManeUnionSetNameRegardGovernancer.h -// YuMi -// -// Created by YuMi on 2022/4/7. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeUnionSetNameRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,copy) NSString *hallId; -@property (nonatomic,copy) NSString *roomName; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeUnionSetNameRegardGovernancer.m b/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeUnionSetNameRegardGovernancer.m deleted file mode 100644 index 0e3a3ff6..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/Setting/YUMIManeUnionSetNameRegardGovernancer.m +++ /dev/null @@ -1,157 +0,0 @@ -// -// YUMIManeUnionSetNameRegardGovernancer.m -// YuMi -// -// Created by YuMi on 2022/4/7. -// - -#import "YUMIManeUnionSetNameRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIUnionSetNameExternalizer.h" -#import "FBCUnionSetNameCeremony.h" - -@interface YUMIManeUnionSetNameRegardGovernancer () -@property (nonatomic, strong) UIView *accommoengagementRegard; -@property (nonatomic, strong) UITextField *constituteEssayUniverse; -@property (nonatomic,strong) YYLabel *sequenceriptionSequencignation; -@end - -@implementation YUMIManeUnionSetNameRegardGovernancer - -- (__kindof id)producePresimport { - return [[YUMIUnionSetNameExternalizer alloc] init];; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { - [self.constituteEssayUniverse resignFirstResponder]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_MineGuildSetNameViewController0"); - [self.view addSubview:self.accommoengagementRegard]; - [self.view addSubview:self.sequenceriptionSequencignation]; - [self.accommoengagementRegard addSubview:self.constituteEssayUniverse]; - [self accelertowardseBreeadcrumbProvisionAboutChampions:@[YMLocalizedString(@"YUMI_MineGuildSetNameViewController1")] titleColor:[DJDKMIMOMColor aplictowardsionMainPrettify] isContrary:NO target:self action:@selector(implementtowardsionBtutonPerformance:) tags:nil]; -} - -- (void)initChildLyRestrictions { - [self.accommoengagementRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(20); - make.left.mas_equalTo(self.view).offset(15); - make.right.mas_equalTo(self.view).offset(-15); - make.height.mas_equalTo(40); - }]; - [self.constituteEssayUniverse mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.accommoengagementRegard); - make.left.mas_equalTo(self.accommoengagementRegard).offset(5); - make.right.mas_equalTo(self.accommoengagementRegard); - make.height.mas_equalTo(40); - }]; - - [self.sequenceriptionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.accommoengagementRegard); - make.top.mas_equalTo(self.accommoengagementRegard.mas_bottom).offset(5); - }]; -} - -- (void)monicerEssayPreadominantFilter:(UITextField *)essayUniverse{ - NSString *toBeString = essayUniverse.text; - NSString *lang = [self.constituteEssayUniverse.textInputMode primaryLanguage]; - if ([lang isEqualToString:@"zh-Hans"]){ - - UITextRange *selectedRange = [self.constituteEssayUniverse markedTextRange]; - UITextPosition *position = [self.constituteEssayUniverse positionFromPosition:selectedRange.start offset:0]; - - if (!position){ - if (toBeString.length > 15){ - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineGuildSetNameViewController2")]; - NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:15]; - if (rangeIndex.length == 1){ - self.constituteEssayUniverse.text = [toBeString substringToIndex:15]; - }else{ - NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, 15)]; - self.constituteEssayUniverse.text = [toBeString substringWithRange:rangeRange]; - } - } - } - }else{ - if (toBeString.length > 15){ - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineGuildSetNameViewController3")]; - NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:15]; - if (rangeIndex.length == 1){ - self.constituteEssayUniverse.text = [toBeString substringToIndex:15]; - }else{ - NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, 15)]; - self.constituteEssayUniverse.text = [toBeString substringWithRange:rangeRange]; - } - } - } -} - -#pragma mark - FBCUnionSetNameCeremony -- (void)refurbishUnionChamberConstituteAccomplishment { - [self.navigationController popViewControllerAnimated:YES]; -} - -#pragma mark - Event Response -- (void)implementtowardsionBtutonPerformance:(UIButton *)sender { - if (self.constituteEssayUniverse.text.length <= 0) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineGuildSetNameViewController4")]; - return; - } - [self.presimport refurbishUnionChamberConstitute:self.constituteEssayUniverse.text hallId:self.hallId]; -} -#pragma mark - getter && setter -- (void)setRoomName:(NSString *)roomName { - _roomName = roomName; - self.constituteEssayUniverse.text = _roomName; -} - -- (UIView *)accommoengagementRegard { - if (!_accommoengagementRegard) { - _accommoengagementRegard = [[UIView alloc] init]; - _accommoengagementRegard.layer.cornerRadius = 5; - _accommoengagementRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - } - return _accommoengagementRegard; -} - -- (UITextField *)constituteEssayUniverse { - if (!_constituteEssayUniverse) { - _constituteEssayUniverse = [[UITextField alloc] init]; - _constituteEssayUniverse.clearButtonMode = UITextFieldViewModeAlways; - _constituteEssayUniverse.font = [UIFont systemFontOfSize:14]; - _constituteEssayUniverse.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _constituteEssayUniverse.tintColor = [DJDKMIMOMColor mainEssayPrettify]; - [_constituteEssayUniverse addTarget:self action:@selector(monicerEssayPreadominantFilter:) forControlEvents:UIControlEventEditingChanged]; - } - return _constituteEssayUniverse; -} - -- (YYLabel *)sequenceriptionSequencignation { - if (!_sequenceriptionSequencignation) { - _sequenceriptionSequencignation = [[YYLabel alloc] init]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - UIImageView *imaveView = [[UIImageView alloc]init]; - imaveView.image = [UIImage imageNamed:@"yumi_center_guild_manager_edit_name_logo"]; - imaveView.bounds = CGRectMake(0, 0, 16, 16); - NSMutableAttributedString * attrString = [NSMutableAttributedString yy_attachmentStringWithContent:imaveView contentMode:UIViewContentModeScaleAspectFit attachmentSize:CGSizeMake(imaveView.frame.size.width, imaveView.frame.size.height) alignToFont:[UIFont systemFontOfSize:15.0] alignment:YYTextVerticalAlignmentCenter]; - - NSMutableAttributedString * titleAttribute = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"YUMI_MineGuildSetNameViewController5") attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14],NSForegroundColorAttributeName:[DJDKMIMOMColor mainEssayPrettify]}]; - [attribute appendAttributedString:attrString]; - [attribute appendAttributedString:titleAttribute]; - _sequenceriptionSequencignation.attributedText = attribute; - } - return _sequenceriptionSequencignation; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPClanMenuView.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPClanMenuView.h new file mode 100644 index 00000000..4bd525eb --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPClanMenuView.h @@ -0,0 +1,19 @@ +// +// XPClanMenuView.h +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPClanMenuView : UIView +///显示图片的名称 +@property (nonatomic,copy) NSString * imageName; +///显示标题 +@property (nonatomic,copy) NSString *title; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPClanMenuView.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPClanMenuView.m new file mode 100644 index 00000000..e1687325 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPClanMenuView.m @@ -0,0 +1,82 @@ +// +// XPClanMenuView.m +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import "XPClanMenuView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" + +@interface XPClanMenuView () +///显示背景图 +@property (nonatomic,strong) UIImageView *logoImageView; +///显示名字 +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPClanMenuView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.logoImageView]; + [self addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.logoImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self); + + }]; +} +#pragma mark - Getters And Setters +- (void)setImageName:(NSString *)imageName { + _imageName = imageName; + if (_imageName) { + self.logoImageView.image = [UIImage imageNamed:_imageName]; + } +} + +- (void)setTitle:(NSString *)title { + _title = title; + if (_title.length > 0) { + self.titleLabel.text = _title; + } +} + +- (UIImageView *)logoImageView { + if (!_logoImageView) { + _logoImageView = [[UIImageView alloc] init]; + _logoImageView.userInteractionEnabled = YES; + } + return _logoImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + _titleLabel.textColor = [UIColor whiteColor]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPClanSectionView.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPClanSectionView.h new file mode 100644 index 00000000..b583d484 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPClanSectionView.h @@ -0,0 +1,32 @@ +// +// XPClanSectionView.h +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPClanSectionView; +@protocol XPClanSectionViewDelegate +@optional +///点击了搜索按钮 +- (void)xPClanSectionView:(XPClanSectionView *)view didClickSearch:(UIButton *)sender; +///点击了管理按钮 +- (void)xPClanSectionView:(XPClanSectionView *)view didClickManager:(UIButton *)sender; +@end +@interface XPClanSectionView : UIView +///代理 +@property (nonatomic,weak) id delegate; +///顶部是否切圆角 +@property (nonatomic,assign) BOOL isTopCor; +///显示标题 +@property (nonatomic,copy) NSString *title; +///隐藏搜索 默认隐藏 +@property (nonatomic,assign) BOOL isHiddenSearch; +///隐藏管理 默认隐藏 +@property (nonatomic,assign) BOOL isHiddenManager; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPClanSectionView.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPClanSectionView.m new file mode 100644 index 00000000..e5e6b8dd --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPClanSectionView.m @@ -0,0 +1,166 @@ +// +// XPClanSectionView.m +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import "XPClanSectionView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" + + +@interface XPClanSectionView () +///显示背景色 +@property (nonatomic,strong) UIView * backView; +///标题 +@property (nonatomic,strong) UILabel *titleLabel; +///更多权限 +@property (nonatomic,strong) UIStackView *moreStackView; +///搜索 +@property (nonatomic,strong) UIButton *searchButton; +///管理 +@property (nonatomic,strong) UIButton *managerButton; +@end + +@implementation XPClanSectionView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + [self addSubview:self.backView]; + [self.backView addSubview:self.titleLabel]; + [self.backView addSubview:self.moreStackView]; + + [self.moreStackView addArrangedSubview:self.searchButton]; + [self.moreStackView addArrangedSubview:self.managerButton]; +} + +- (void)initSubViewConstraints { + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self).inset(15); + make.top.bottom.mas_equalTo(self); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backView).offset(15); + make.top.mas_equalTo(self.backView).offset(10); + }]; + + [self.moreStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.backView).offset(-15); + make.centerY.mas_equalTo(self.titleLabel); + }]; + + [self.searchButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(22); + }]; + + [self.managerButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(22); + }]; +} +#pragma mark - Event Response +- (void)searchButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPClanSectionView:didClickSearch:)]) { + [self.delegate xPClanSectionView:self didClickSearch:sender]; + } +} + +- (void)managerButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPClanSectionView:didClickManager:)]) { + [self.delegate xPClanSectionView:self didClickManager:sender]; + } +} + +#pragma mark - Getters And Setters +- (void)setTitle:(NSString *)title { + _title = title; + if (_title.length > 0) { + self.titleLabel.text = _title; + } +} + +- (void)setIsTopCor:(BOOL)isTopCor { + _isTopCor = isTopCor; + if (_isTopCor) { + CAShapeLayer * layer = [CAShapeLayer layer]; + layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth - 30, 37) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)].CGPath; + self.backView.layer.mask = layer; + } +} + +- (void)setIsHiddenSearch:(BOOL)isHiddenSearch { + _isHiddenSearch = isHiddenSearch; + self.searchButton.hidden= _isHiddenSearch; +} + +- (void)setIsHiddenManager:(BOOL)isHiddenManager { + _isHiddenManager = isHiddenManager; + self.managerButton.hidden = _isHiddenManager; +} + +- (UIView *)backView { + if (!_backView) { + _backView = [[UIView alloc] init]; + _backView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _backView.layer.masksToBounds = YES; + } + return _backView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:15]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +- (UIStackView *)moreStackView { + if (!_moreStackView) { + _moreStackView = [[UIStackView alloc] init]; + _moreStackView.axis = UILayoutConstraintAxisHorizontal; + _moreStackView.distribution = UIStackViewDistributionFill; + _moreStackView.alignment = UIStackViewAlignmentFill; + _moreStackView.spacing = 10; + } + return _moreStackView; +} + +- (UIButton *)searchButton { + if (!_searchButton) { + _searchButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_searchButton setImage:[UIImage imageNamed:@"home_search_input_search"] forState:UIControlStateNormal]; + [_searchButton setImage:[UIImage imageNamed:@"home_search_input_search"] forState:UIControlStateSelected]; + [_searchButton addTarget:self action:@selector(searchButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _searchButton.hidden = YES; + } + return _searchButton; +} + +- (UIButton *)managerButton { + if (!_managerButton) { + _managerButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_managerButton setImage:[UIImage imageNamed:@"mine_guild_guild_section_manager"] forState:UIControlStateNormal]; + [_managerButton setImage:[UIImage imageNamed:@"mine_guild_guild_section_manager"] forState:UIControlStateSelected]; + [_managerButton addTarget:self action:@selector(managerButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _managerButton.hidden = YES; + } + return _managerButton; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGoldIncomeSectionView.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGoldIncomeSectionView.h new file mode 100644 index 00000000..4999b9ab --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGoldIncomeSectionView.h @@ -0,0 +1,20 @@ +// +// XPGoldIncomeSectionView.h +// YuMi +// +// Created by YuMi on 2022/12/16. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@protocol XPGoldIncomeSectionViewDelegate + +-(void)chooseGoldCoinOrder:(int)type isAscending:(BOOL)isAscending; + +@end +@interface XPGoldIncomeSectionView : UIView +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGoldIncomeSectionView.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGoldIncomeSectionView.m new file mode 100644 index 00000000..37662d6e --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGoldIncomeSectionView.m @@ -0,0 +1,178 @@ +// +// XPGoldIncomeSectionView.m +// YuMi +// +// Created by YuMi on 2022/12/16. +// + +#import "XPGoldIncomeSectionView.h" +#import "XPIncomeRecordGoldDetailsHeadView.h" +@interface XPGoldIncomeSectionView() +///底部item +@property (nonatomic,strong) UIView *bgItemView; +///房间 +@property (nonatomic,strong) UILabel *roomView; +///成员 +@property (nonatomic,strong) UILabel *memberView; +///钻石流水 +@property (nonatomic,strong) XPIncomeRecordGoldDetailsHeadItemView *diamondView; +///金币收益 +@property (nonatomic,strong) UILabel *exchangeGoldView; +///可结算金币 +@property (nonatomic,strong) XPIncomeRecordGoldDetailsHeadItemView *settlementView; +@end +@implementation XPGoldIncomeSectionView + +-(instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if(self){ + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + + + [self addSubview:self.bgItemView]; + [self.bgItemView addSubview:self.roomView]; + [self.bgItemView addSubview:self.memberView]; + [self.bgItemView addSubview:self.diamondView]; + [self.bgItemView addSubview:self.exchangeGoldView]; + [self.bgItemView addSubview:self.settlementView]; +} +- (void)initSubViewConstraints { + + + [self.bgItemView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.equalTo(self); + make.height.mas_equalTo(kGetScaleWidth(47)); + make.left.right.equalTo(self).inset(kGetScaleWidth(0)); + }]; + [self.roomView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(kGetScaleWidth(50)); + make.left.mas_equalTo(kGetScaleWidth(0)); + make.height.mas_equalTo(kGetScaleWidth(17)); + make.centerY.equalTo(self.bgItemView); + }]; + [self.memberView mas_makeConstraints:^(MASConstraintMaker *make) { + + make.left.mas_equalTo(kGetScaleWidth(50)); + make.width.mas_equalTo(kGetScaleWidth(48)); + make.centerY.height.equalTo(self.roomView); + }]; + CGFloat width = kGetScaleWidth(277/3); + [self.settlementView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(width); + make.right.equalTo(self.bgItemView); + make.centerY.height.equalTo(self.roomView); + }]; + [self.exchangeGoldView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.width.height.equalTo(self.settlementView); + make.right.equalTo(self.settlementView.mas_left); + }]; + [self.diamondView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.width.height.equalTo(self.exchangeGoldView); + make.right.equalTo(self.exchangeGoldView.mas_left); + }]; + + +} + + +-(void)clickDiamondAction{ + + if(self.diamondView.upBtn.selected == YES){ + self.diamondView.upBtn.selected = NO; + self.diamondView.downBtn.selected = YES; + if(self.delegate && [self.delegate respondsToSelector:@selector(chooseGoldCoinOrder:isAscending:)]){ + [self.delegate chooseGoldCoinOrder:1 isAscending:NO]; + } + return; + } + + if(self.delegate && [self.delegate respondsToSelector:@selector(chooseGoldCoinOrder:isAscending:)]){ + [self.delegate chooseGoldCoinOrder:1 isAscending:YES]; + } + self.diamondView.upBtn.selected = YES; + self.diamondView.downBtn.selected = NO; +} +-(void)clickGoldAction{ + + if(self.settlementView.upBtn.selected == YES){ + self.settlementView.upBtn.selected = NO; + self.settlementView.downBtn.selected = YES; + if(self.delegate && [self.delegate respondsToSelector:@selector(chooseGoldCoinOrder:isAscending:)]){ + [self.delegate chooseGoldCoinOrder:1 isAscending:NO]; + } + return; + } + + if(self.delegate && [self.delegate respondsToSelector:@selector(chooseGoldCoinOrder:isAscending:)]){ + [self.delegate chooseGoldCoinOrder:1 isAscending:YES]; + } + self.settlementView.upBtn.selected = YES; + self.settlementView.downBtn.selected = NO; +} +#pragma mark -懒加载 + +-(UIView *)bgItemView{ + if (!_bgItemView){ + _bgItemView = [UIView new]; + _bgItemView.backgroundColor = UIColorFromRGB(0xF0F5F6); + } + return _bgItemView; +} + +- (UILabel *)roomView { + if (!_roomView) { + _roomView = [[UILabel alloc] init]; + _roomView.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _roomView.textColor = [DJDKMIMOMColor inputTextColor]; + _roomView.text = YMLocalizedString(@"XPGoldIncomeSectionView0"); + } + return _roomView; +} + +- (UILabel *)memberView { + if (!_memberView) { + _memberView = [[UILabel alloc] init]; + _memberView.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _memberView.textColor = [DJDKMIMOMColor inputTextColor]; + _memberView.text = YMLocalizedString(@"XPIncomeRecordGoldDetailsHeadView1"); + } + return _memberView; +} + +-(XPIncomeRecordGoldDetailsHeadItemView *)diamondView{ + if (!_diamondView){ + _diamondView = [[XPIncomeRecordGoldDetailsHeadItemView alloc]initWithFrame:CGRectZero]; + _diamondView.title = YMLocalizedString(@"XPIncomeRecordGoldDetailsHeadView5"); + [_diamondView.clickBtn addTarget:self action:@selector(clickDiamondAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _diamondView; +} + +- (UILabel *)exchangeGoldView { + if (!_exchangeGoldView) { + _exchangeGoldView = [[UILabel alloc] init]; + _exchangeGoldView.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _exchangeGoldView.textColor = [DJDKMIMOMColor inputTextColor]; + _exchangeGoldView.text = YMLocalizedString(@"XPIncomeRecordGoldDetailsHeadView3"); + } + return _exchangeGoldView; +} + + +-(XPIncomeRecordGoldDetailsHeadItemView *)settlementView{ + if (!_settlementView){ + _settlementView = [[XPIncomeRecordGoldDetailsHeadItemView alloc]initWithFrame:CGRectZero]; + _settlementView.title = YMLocalizedString(@"XPIncomeRecordGoldDetailsHeadView4"); + [_settlementView.clickBtn addTarget:self action:@selector(clickGoldAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _settlementView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildAnchorIncomeSectionView.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildAnchorIncomeSectionView.h new file mode 100644 index 00000000..d4780921 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildAnchorIncomeSectionView.h @@ -0,0 +1,16 @@ +// +// XPGuildAnchorIncomeSectionView.h +// YuMi +// +// Created by YuMi on 2022/4/24. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPGuildAnchorIncomeSectionView : UIView +@property (nonatomic,assign) BOOL isHost; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildAnchorIncomeSectionView.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildAnchorIncomeSectionView.m new file mode 100644 index 00000000..97391ab2 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildAnchorIncomeSectionView.m @@ -0,0 +1,193 @@ +// +// XPGuildAnchorIncomeSectionView.m +// YuMi +// +// Created by YuMi on 2022/4/24. +// + +#import "XPGuildAnchorIncomeSectionView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" + + +@interface XPGuildAnchorIncomeSectionView () +///rongqi +@property (nonatomic,strong) UIStackView *stackView; +///排名 +@property (nonatomic,strong) UILabel *rankLabel; +///昵称 +@property (nonatomic,strong) UILabel *avatarLabel; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///房间/头像 +@property (nonatomic,strong) UILabel *roomLabel; +///收入 +@property (nonatomic,strong) UILabel *incomeLabel; +///主播收入 +@property (nonatomic,strong) UILabel *hostIncomeLabel; +///所属厅 +@property (nonatomic,strong) UILabel *hallLabel; + + + + +@end + +@implementation XPGuildAnchorIncomeSectionView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { +// self.backgroundColor = [UIColor clearColor]; + self.backgroundColor = UIColorFromRGB(0xF0F5F6); + [self addSubview:self.stackView]; + [self.stackView addArrangedSubview:self.rankLabel]; + [self.stackView addArrangedSubview:self.avatarLabel]; + [self.stackView addArrangedSubview:self.nickLabel]; + [self.stackView addArrangedSubview:self.roomLabel]; + [self.stackView addArrangedSubview:self.incomeLabel]; + + [self addSubview:self.hallLabel]; + [self addSubview:self.hostIncomeLabel]; + +} + +- (void)initSubViewConstraints { + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self); + make.size.mas_equalTo(CGSizeMake(KScreenWidth, 30)); + }]; + + [self.rankLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(52); + }]; + + [self.avatarLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(45); + }]; + + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(90); + }]; + + [self.roomLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo((KScreenWidth - 52 - 45 - 90 - 10 * 4)/ 2); + }]; + + [self.hostIncomeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + + make.height.mas_equalTo(kGetScaleWidth(14)); + make.centerY.equalTo(self); + make.left.mas_equalTo(kGetScaleWidth(97)); + }]; + [self.hallLabel mas_makeConstraints:^(MASConstraintMaker *make) { + + make.height.mas_equalTo(kGetScaleWidth(14)); + make.centerY.equalTo(self); + make.left.mas_equalTo(kGetScaleWidth(260)); + }]; +} +-(void)setIsHost:(BOOL)isHost{ + _isHost = isHost; + + self.stackView.hidden = _isHost; + self.hostIncomeLabel.hidden = !isHost; + self.hallLabel.hidden = !isHost; +} +#pragma mark - Getters And Setters +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 10; + } + return _stackView; +} + +- (UILabel *)rankLabel { + if (!_rankLabel) { + _rankLabel = [[UILabel alloc] init]; + _rankLabel.text = YMLocalizedString(@"XPGuildAnchorIncomeSectionView0"); + _rankLabel.font = [UIFont systemFontOfSize:12]; + _rankLabel.textColor = [DJDKMIMOMColor textThirdColor]; + _rankLabel.textAlignment = NSTextAlignmentCenter; + } + return _rankLabel; +} + +- (UILabel *)avatarLabel { + if (!_avatarLabel) { + _avatarLabel = [[UILabel alloc] init]; + _avatarLabel.text = YMLocalizedString(@"XPGuildAnchorIncomeSectionView1"); + _avatarLabel.font = [UIFont systemFontOfSize:12]; + _avatarLabel.textColor = [DJDKMIMOMColor textThirdColor]; + _avatarLabel.textAlignment = NSTextAlignmentCenter; + } + return _avatarLabel; +} + +- (UILabel *)roomLabel { + if (!_roomLabel) { + _roomLabel = [[UILabel alloc] init]; + _roomLabel.text = YMLocalizedString(@"XPGuildAnchorIncomeSectionView2"); + _roomLabel.font = [UIFont systemFontOfSize:12]; + _roomLabel.textColor = [DJDKMIMOMColor textThirdColor]; + _roomLabel.textAlignment = NSTextAlignmentLeft; + } + return _roomLabel; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.text = YMLocalizedString(@"XPGuildAnchorIncomeSectionView3"); + _nickLabel.font = [UIFont systemFontOfSize:12]; + _nickLabel.textColor = [DJDKMIMOMColor textThirdColor]; + _nickLabel.textAlignment = NSTextAlignmentLeft; + } + return _nickLabel; +} + +- (UILabel *)incomeLabel { + if (!_incomeLabel) { + _incomeLabel = [[UILabel alloc] init]; + _incomeLabel.text = YMLocalizedString(@"XPGuildAnchorIncomeSectionView4"); + _incomeLabel.font = [UIFont systemFontOfSize:12]; + _incomeLabel.textColor = [DJDKMIMOMColor textThirdColor]; + _incomeLabel.textAlignment = NSTextAlignmentLeft; + } + return _incomeLabel; +} + +- (UILabel *)hostIncomeLabel { + if (!_hostIncomeLabel) { + _hostIncomeLabel = [[UILabel alloc] init]; + _hostIncomeLabel.font = [UIFont systemFontOfSize:12]; + _hostIncomeLabel.textColor =UIColorFromRGB(0x1F1A4E); + _hostIncomeLabel.text = YMLocalizedString(@"XPGuildAnchorIncomeSectionView2"); + } + return _hostIncomeLabel; +} + +- (UILabel *)hallLabel { + if (!_hallLabel) { + _hallLabel = [[UILabel alloc] init]; + _hallLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _hallLabel.textColor = UIColorFromRGB(0x1F1A4E); + _hallLabel.text = YMLocalizedString(@"XPGuildAnchorIncomeSectionView6"); + } + return _hallLabel; +} +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildHeaderView.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildHeaderView.h new file mode 100644 index 00000000..197f4634 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildHeaderView.h @@ -0,0 +1,40 @@ +// +// XPGuildHeaderView.h +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class ClanDetailInfoModel, XPGuildHeaderView, GuildInfoModel; + +typedef NS_ENUM(NSInteger, GuildHeaderMenuType) { + ///公会流水 + GuildHeaderMenuType_Hall_Income = 1, +///兑换权限设置 + GuildHeaderMenuType_Exchange_Authority = 2, + ///超管 + GuildHeaderMenuType_Super_Admin, +}; + +@protocol XPGuildHeaderViewDelegate +///选择了族长 +- (void)xPGuildHeaderView:(XPGuildHeaderView *)view dicSelectOwner:(ClanDetailInfoModel *)guildInfo; +///选择了公会的某个房间 +- (void)xPGuildHeaderView:(XPGuildHeaderView *)view dicSelectGuild:(GuildInfoModel *)guildInfo; +///菜单栏的点击 +- (void)xPGuildHeaderView:(XPGuildHeaderView *)view dicTapMenuItem:(GuildHeaderMenuType)menuType; +@end + +@interface XPGuildHeaderView : UIView +///家族信息 +@property (nonatomic,strong) ClanDetailInfoModel *clanInfo; +///家族房间列表 +@property (nonatomic,strong) NSArray *clanRoomList; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildHeaderView.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildHeaderView.m new file mode 100644 index 00000000..75bae294 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildHeaderView.m @@ -0,0 +1,401 @@ +// +// XPGuildHeaderView.m +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import "XPGuildHeaderView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "NSArray+Safe.h" +#import "AccountInfoStorage.h" +///Model +#import "ClanDetailInfoModel.h" +///View +#import "XPClanMenuView.h" +#import "XPClanRoomCollectionViewCell.h" +@interface XPGuildHeaderView () +///背景图 +@property (nonatomic,strong) UIImageView *backImageView; +///最外面的容器 +@property (nonatomic,strong) UIStackView *stackView; +///用户信息 +@property (nonatomic,strong) UIView * userInfoView; +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///公会名称 +@property (nonatomic,strong) UILabel *clanNameLabel; +///Pekoid +@property (nonatomic,strong) UILabel *daeIdLabel; +///房间数量 +@property (nonatomic,strong) UILabel *roomNumberLabel; +///家族等级 +@property (nonatomic,strong) NetImageView *clanLevelImageView; +///容器 +@property (nonatomic,strong) UIStackView *menuStackView; +///查看流水 +@property (nonatomic,strong) XPClanMenuView *incomeView; +///超管设置 +@property (nonatomic,strong) XPClanMenuView *superAdminSetView; +///兑换权限设置 +@property (nonatomic,strong) XPClanMenuView *anchorIncomeView; +///公会房间的容器 +@property (nonatomic,strong) UIView * clanRoomView; +///公会房间多少个 +@property (nonatomic,strong) UILabel *numberLabel; +///列表 +@property (nonatomic,strong) UICollectionView *collectionView; +@end + +@implementation XPGuildHeaderView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + [self addSubview:self.backImageView]; + [self addSubview:self.stackView]; + + [self.userInfoView addSubview:self.avatarImageView]; + [self.userInfoView addSubview:self.clanNameLabel]; + [self.userInfoView addSubview:self.daeIdLabel]; + [self.userInfoView addSubview:self.roomNumberLabel]; + [self.userInfoView addSubview:self.clanLevelImageView]; + + [self.stackView addArrangedSubview:self.userInfoView]; + [self.stackView addArrangedSubview:self.menuStackView]; + [self.stackView addArrangedSubview:self.clanRoomView]; + + [self.menuStackView addArrangedSubview:self.incomeView]; + [self.menuStackView addArrangedSubview:self.superAdminSetView]; + [self.menuStackView addArrangedSubview:self.anchorIncomeView]; + + [self.clanRoomView addSubview:self.numberLabel]; + [self.clanRoomView addSubview:self.collectionView]; + +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth); + make.bottom.mas_equalTo(self.stackView.mas_bottom).offset(15); + }]; + + CGFloat kBackScale = 274.0 / 375.0; + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self); + make.height.mas_equalTo(KScreenWidth * kBackScale); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self).inset(15); + make.top.mas_equalTo(self); + }]; + + [self.userInfoView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(179 * kScreenScale); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(64), kGetScaleWidth(64))); + make.left.mas_equalTo(self.userInfoView); + make.top.mas_equalTo(self.userInfoView).offset(108 * kScreenScale); + }]; + + [self.clanNameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(6); + make.top.mas_equalTo(self.avatarImageView); + make.right.mas_lessThanOrEqualTo(self.clanLevelImageView); + }]; + + [self.daeIdLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.clanNameLabel); + make.top.mas_equalTo(self.clanNameLabel.mas_bottom).offset(6); + }]; + + [self.roomNumberLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.clanNameLabel); + make.top.mas_equalTo(self.daeIdLabel.mas_bottom).offset(6); + }]; + + [self.clanLevelImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(60, 60)); + make.centerY.mas_equalTo(self.avatarImageView); + make.right.mas_equalTo(self).offset(-35); + }]; + + CGFloat kMenuScale = 52.0 / 112.0; + CGFloat kMenuItemWidth = (CGFloat)(KScreenWidth - 15 * 2 - 6 * 2) / 3.0; + [self.menuStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(kMenuItemWidth * kMenuScale); + }]; + + [self.clanRoomView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(130); + }]; + + [self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.clanRoomView).offset(9); + make.top.mas_equalTo(self.clanRoomView).offset(10); + }]; + + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.clanRoomView).inset(9); + make.top.mas_equalTo(self.numberLabel.mas_bottom).offset(3); + make.bottom.mas_equalTo(self.clanRoomView); + }]; +} + +#pragma mark - UICollectionViewDelegate +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.clanRoomList.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPClanRoomCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([ XPClanRoomCollectionViewCell class]) forIndexPath:indexPath]; + cell.guildInfo = [self.clanRoomList safeObjectAtIndex1:indexPath.row]; + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + + [collectionView deselectItemAtIndexPath:indexPath animated:YES]; + if (self.clanRoomList.count > 0) { + GuildInfoModel * guildInfo = [self.clanRoomList safeObjectAtIndex1:indexPath.row]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGuildHeaderView:dicSelectGuild:)]) { + [self.delegate xPGuildHeaderView:self dicSelectGuild:guildInfo]; + } + } +} + +#pragma mark - Event Response +- (void)menuViewTapRecognizer:(UITapGestureRecognizer *)tap { + UIView * view = tap.view; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGuildHeaderView:dicTapMenuItem:)]) { + [self.delegate xPGuildHeaderView:self dicTapMenuItem:view.tag]; + } +} + +- (void)tapOwnerUserInfoView:(UITapGestureRecognizer *)tap { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGuildHeaderView:dicSelectOwner:)]) { + [self.delegate xPGuildHeaderView:self dicSelectOwner:self.clanInfo]; + } +} + +#pragma mark - Getters And Setters +- (void)setClanInfo:(ClanDetailInfoModel *)clanInfo { + _clanInfo = clanInfo; + if (_clanInfo) { + self.avatarImageView.imageUrl = _clanInfo.clan.avatar; + NSString * elderName = _clanInfo.clan.elderName; + if (elderName.length > 8) { + elderName = [elderName substringToIndex:8]; + } + _anchorIncomeView.hidden = YES; + if(_anchorIncomeView.hidden == YES){ + _incomeView.imageName = @"mine_guild_clan_header_income_bg_two"; + _superAdminSetView.imageName = @"mine_guild_clan_header_superadmin_set_bg_two"; + } + self.clanNameLabel.text = elderName; + self.daeIdLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPGuildHeaderView0"), _clanInfo.clan.elderErbanNo]; + self.clanLevelImageView.imageUrl = _clanInfo.clan.levelIcon; + if (_clanInfo.clan.elderUid.integerValue == [AccountInfoStorage instance].getUid.integerValue) { + self.menuStackView.hidden = NO; + } else { + self.menuStackView.hidden = YES; + } + } +} + +- (void)setClanRoomList:(NSArray *)clanRoomList { + _clanRoomList = clanRoomList; + if (_clanRoomList.count > 0) { + self.roomNumberLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPGuildHeaderView1"), _clanRoomList.count]; + self.clanRoomView.hidden = NO; + } else { + self.clanRoomView.hidden = YES; + self.roomNumberLabel.text = YMLocalizedString(@"XPGuildHeaderView2"); + } + self.numberLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPGuildHeaderView3"), clanRoomList.count]; + [self.collectionView reloadData]; +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.image = [UIImage imageNamed:@"mine_guild_clan_header_bg"]; + } + return _backImageView; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 15; + } + return _stackView; +} + +- (UIView *)userInfoView { + if (!_userInfoView) { + _userInfoView = [[UIView alloc] init]; + _userInfoView.backgroundColor = [UIColor clearColor]; + UITapGestureRecognizer * tap= [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapOwnerUserInfoView:)]; + [_userInfoView addGestureRecognizer:tap]; + } + return _userInfoView; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = kGetScaleWidth(32); + _avatarImageView.layer.borderWidth = 2; + _avatarImageView.layer.borderColor = UIColorFromRGB(0xC6C6E9).CGColor; + } + return _avatarImageView; +} + +- (UILabel *)clanNameLabel { + if (!_clanNameLabel) { + _clanNameLabel = [[UILabel alloc] init]; + _clanNameLabel.font = [UIFont systemFontOfSize:18]; + _clanNameLabel.textColor = [UIColor whiteColor]; + } + return _clanNameLabel; +} + +- (UILabel *)daeIdLabel { + if (!_daeIdLabel) { + _daeIdLabel = [[UILabel alloc] init]; + _daeIdLabel.font = [UIFont systemFontOfSize:12]; + _daeIdLabel.textColor = UIColorFromRGB(0xC6C6E9); + } + return _daeIdLabel; +} + +- (UILabel *)roomNumberLabel { + if (!_roomNumberLabel) { + _roomNumberLabel = [[UILabel alloc] init]; + _roomNumberLabel.font = [UIFont systemFontOfSize:12]; + _roomNumberLabel.textColor = UIColorFromRGB(0xC6C6E9); + } + return _roomNumberLabel; +} + +- (NetImageView *)clanLevelImageView { + if (!_clanLevelImageView) { + _clanLevelImageView = [[NetImageView alloc] init]; + } + return _clanLevelImageView; +} + +- (UIStackView *)menuStackView { + if (!_menuStackView) { + _menuStackView = [[UIStackView alloc] init]; + _menuStackView.axis = UILayoutConstraintAxisHorizontal; + _menuStackView.distribution = UIStackViewDistributionFillEqually; + _menuStackView.alignment = UIStackViewAlignmentFill; + _menuStackView.spacing = 6; + _menuStackView.hidden = YES; + } + return _menuStackView; +} + + +- (XPClanMenuView *)incomeView { + if (!_incomeView) { + _incomeView = [[XPClanMenuView alloc] init]; + _incomeView.title = YMLocalizedString(@"XPGuildHeaderView4"); + _incomeView.imageName = @"mine_guild_clan_header_income_bg"; + _incomeView.tag = GuildHeaderMenuType_Hall_Income; + UITapGestureRecognizer * tap= [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(menuViewTapRecognizer:)]; + [_incomeView addGestureRecognizer:tap]; + } + return _incomeView; +} + +- (XPClanMenuView *)anchorIncomeView { + if (!_anchorIncomeView) { + _anchorIncomeView = [[XPClanMenuView alloc] init]; + _anchorIncomeView.title = YMLocalizedString(@"XPGuildHeaderView5"); + _anchorIncomeView.imageName = @"mine_guild_clan_header_anchor_income_bg"; + _anchorIncomeView.tag = GuildHeaderMenuType_Exchange_Authority; + UITapGestureRecognizer * tap= [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(menuViewTapRecognizer:)]; + [_anchorIncomeView addGestureRecognizer:tap]; + _anchorIncomeView.hidden = YES; + + } + return _anchorIncomeView; +} + +- (XPClanMenuView *)superAdminSetView { + if (!_superAdminSetView) { + _superAdminSetView = [[XPClanMenuView alloc] init]; + _superAdminSetView.title = YMLocalizedString(@"XPGuildHeaderView6"); + _superAdminSetView.imageName = @"mine_guild_clan_header_superadmin_set_bg"; + _superAdminSetView.tag = GuildHeaderMenuType_Super_Admin; + UITapGestureRecognizer * tap= [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(menuViewTapRecognizer:)]; + [_superAdminSetView addGestureRecognizer:tap]; + } + return _superAdminSetView; +} + +- (UIView *)clanRoomView { + if (!_clanRoomView) { + _clanRoomView = [[UIView alloc] init]; + _clanRoomView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _clanRoomView.layer.masksToBounds = YES; + _clanRoomView.layer.cornerRadius = 10; + } + return _clanRoomView; +} + +- (UILabel *)numberLabel { + if (!_numberLabel) { + _numberLabel = [[UILabel alloc] init]; + _numberLabel.text = YMLocalizedString(@"XPGuildHeaderView7"); + _numberLabel.font = [UIFont systemFontOfSize:14]; + _numberLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _numberLabel; +} + +- (UICollectionView *)collectionView{ + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + layout.minimumLineSpacing = 10; + layout.itemSize = CGSizeMake(60, 80); + layout.minimumInteritemSpacing = 0; + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.backgroundColor = [UIColor clearColor]; + [_collectionView registerClass:[XPClanRoomCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPClanRoomCollectionViewCell class])]; + } + return _collectionView; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildIncomeHeaderView.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildIncomeHeaderView.h new file mode 100644 index 00000000..e16008ed --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildIncomeHeaderView.h @@ -0,0 +1,31 @@ +// +// XPGuildIncomeHeaderView.h +// YuMi +// +// Created by YuMi on 2022/4/11. +// + +#import +#import "XPMineGuildIncomeRecordViewController.h" +NS_ASSUME_NONNULL_BEGIN +@class XPGuildIncomeHeaderView; +@protocol XPGuildIncomeHeaderViewDelegate + +///选择日期 +- (void)xPGuildIncomeHeaderView:(XPGuildIncomeHeaderView *)view didChooseTime:(UIButton *)sender; + +@end + +@interface XPGuildIncomeHeaderView : UIView +///代理 +@property (nonatomic,weak) id delegate; +///显示 +@property (nonatomic,assign) GuildIncomeRecrdTimeType timeType; + +@property (nonatomic,copy) NSString *totalIncome; + +- (void)configHeaderView:(NSDate *)startDate endTime:(NSDate * _Nullable)endDate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildIncomeHeaderView.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildIncomeHeaderView.m new file mode 100644 index 00000000..4b676e81 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildIncomeHeaderView.m @@ -0,0 +1,278 @@ +// +// XPGuildIncomeHeaderView.m +// YuMi +// +// Created by YuMi on 2022/4/11. +// + +#import "XPGuildIncomeHeaderView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" + +#import "NSString+Utils.h" +#import "UIButton+EnlargeTouchArea.h" +@interface XPGuildIncomeHeaderView () +///显示背景 +@property (nonatomic,strong) UIImageView *backImageView; +///显示哪一年 +@property (nonatomic,strong) UILabel *yearLabel; + +///开始时间 +@property (nonatomic,strong) UILabel *startLabel; +///结束时间 +@property (nonatomic,strong) UILabel *endLabel; +///每日 +@property (nonatomic,strong) UILabel *dayLabel; + +///箭头 +@property (nonatomic,strong) UIButton *arrowButton; +///分割线 +@property (nonatomic,strong) UIView * lineView; +///总收入 +@property (nonatomic,strong) UILabel *totalLabel; +///金币 +@property (nonatomic,strong) UILabel *coinLabel; +///时间格式 +@property (nonatomic,strong) NSDateFormatter *formatter; +@end + +@implementation XPGuildIncomeHeaderView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Public Method +- (void)configHeaderView:(NSDate *)startDate endTime:(NSDate * _Nullable)endDate { + [self.formatter setDateFormat:YMLocalizedString(@"App_Common_Year")]; + NSString *currentYear = [self.formatter stringFromDate:startDate]; + self.yearLabel.text = currentYear; + if (self.timeType == GuildIncomeRecrdTimeType_Day) { + [self.formatter setDateFormat:YMLocalizedString(@"XPGuildIncomeHeaderView0")]; + NSString * currentDay = [self.formatter stringFromDate:startDate]; + self.dayLabel.text = currentDay; + } else if(self.timeType == GuildIncomeRecrdTimeType_Week) { + [self.formatter setDateFormat:YMLocalizedString(@"XPGuildIncomeHeaderView1")]; + NSString * currentDay = [self.formatter stringFromDate:startDate]; + self.startLabel.text = currentDay; + + NSString * endDayStr = [self.formatter stringFromDate:endDate]; + self.endLabel.text = endDayStr; + } else { + [self.formatter setDateFormat:YMLocalizedString(@"XPGuildIncomeHeaderView5")]; + NSString * currentDay = [self.formatter stringFromDate:startDate]; + self.startLabel.text = currentDay; + } +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; + [self addSubview:self.backImageView]; + + [self.backImageView addSubview:self.yearLabel]; + [self.backImageView addSubview:self.dayLabel]; + [self.backImageView addSubview:self.startLabel]; + [self.backImageView addSubview:self.endLabel]; + [self.backImageView addSubview:self.arrowButton]; + [self.backImageView addSubview:self.lineView]; + [self.backImageView addSubview:self.totalLabel]; + [self.backImageView addSubview:self.coinLabel]; + + +} + +- (void)initSubViewConstraints { + + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(15)); + make.left.right.equalTo(self).inset(kGetScaleWidth(15)); + make.height.mas_equalTo(kGetScaleWidth(90)); + }]; + + [self.yearLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(18)); + make.left.mas_equalTo(kGetScaleWidth(20)); + make.height.mas_equalTo(kGetScaleWidth(12)); + }]; + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(kGetScaleWidth(0.5)); + make.height.mas_equalTo(kGetScaleWidth(49)); + make.centerY.equalTo(self.backImageView); + make.left.mas_equalTo(kGetScaleWidth(119)); + }]; + [self.arrowButton mas_makeConstraints:^(MASConstraintMaker *make) { + + make.top.mas_equalTo(kGetScaleWidth(54)); + make.width.height.mas_equalTo(kGetScaleWidth(20)); + make.right.equalTo(self.lineView.mas_left).mas_offset(-kGetScaleWidth(19)); + }]; + [self.dayLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.equalTo(self.arrowButton.mas_left).mas_offset(-kGetScaleWidth(1)); + make.height.mas_equalTo(kGetScaleWidth(17)); + make.top.mas_equalTo(kGetScaleWidth(56)); + }]; + + + [self.startLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.equalTo(self.arrowButton.mas_left).mas_offset(-kGetScaleWidth(1)); + make.top.mas_equalTo(kGetScaleWidth(44)); + make.height.mas_equalTo(kGetScaleWidth(17)); + }]; + [self.endLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.equalTo(self.arrowButton.mas_left).mas_offset(-kGetScaleWidth(1)); + make.top.mas_equalTo(kGetScaleWidth(65)); + make.height.mas_equalTo(kGetScaleWidth(17)); + }]; + + + [self.totalLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(18)); + make.left.mas_equalTo(kGetScaleWidth(140)); + make.height.mas_equalTo(kGetScaleWidth(12)); + }]; + + [self.coinLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.totalLabel); + make.centerY.mas_equalTo(self.arrowButton); + }]; +} + +#pragma mark - Event Response +- (void)arrowButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGuildIncomeHeaderView:didChooseTime:)]) { + [self.delegate xPGuildIncomeHeaderView:self didChooseTime:sender]; + } +} + +#pragma mark - Getters And Setters +- (void)setTotalIncome:(NSString *)totalIncome { + _totalIncome = totalIncome; + if (_totalIncome == nil) { + _totalIncome = @"0"; + } + NSString * title = [NSString stringWithFormat:YMLocalizedString(@"XPGuildIncomeHeaderView2"), [NSString getDealNumwithstring:_totalIncome]]; + self.coinLabel.text = title; +} + +- (void)setTimeType:(GuildIncomeRecrdTimeType)timeType { + _timeType = timeType; + switch (_timeType) { + case GuildIncomeRecrdTimeType_Day: + self.dayLabel.hidden = NO; + self.endLabel.hidden = YES; + self.startLabel.hidden = YES; + break; + case GuildIncomeRecrdTimeType_Week: + self.dayLabel.hidden = YES; + self.endLabel.hidden = NO; + self.startLabel.hidden = NO; + break; + case GuildIncomeRecrdTimeType_Mouth: + self.dayLabel.hidden = NO; + self.endLabel.hidden = YES; + self.startLabel.hidden = YES; + break; + default: + break; + } +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.image = [UIImage imageNamed:@"mine_guild_income_header_bg"]; + } + return _backImageView; +} + +- (UILabel *)yearLabel { + if (!_yearLabel) { + _yearLabel = [[UILabel alloc] init]; + _yearLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightMedium]; + _yearLabel.textColor = [UIColor colorWithWhite:1 alpha:0.8]; + } + return _yearLabel; +} + +- (UILabel *)dayLabel { + if (!_dayLabel) { + _dayLabel = [[UILabel alloc] init]; + _dayLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _dayLabel.textColor = [UIColor whiteColor]; + } + return _dayLabel; +} + +- (UILabel *)startLabel { + if (!_startLabel) { + _startLabel = [[UILabel alloc] init]; + _startLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _startLabel.textColor = [UIColor whiteColor]; + } + return _startLabel; +} + +- (UILabel *)endLabel { + if (!_endLabel) { + _endLabel = [[UILabel alloc] init]; + _endLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _endLabel.textColor = [UIColor whiteColor]; + } + return _endLabel; +} + +- (UIButton *)arrowButton { + if (!_arrowButton) { + _arrowButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_arrowButton setBackgroundImage:[UIImage imageNamed:@"mine_guild_income_record_arrow"] forState:UIControlStateNormal]; + [_arrowButton setBackgroundImage:[UIImage imageNamed:@"mine_guild_income_record_arrow"] forState:UIControlStateSelected]; + [_arrowButton addTarget:self action:@selector(arrowButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_arrowButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + } + return _arrowButton; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [UIColor whiteColor]; + } + return _lineView; +} + +- (UILabel *)totalLabel { + if (!_totalLabel) { + _totalLabel = [[UILabel alloc] init]; + _totalLabel.text = YMLocalizedString(@"XPGuildIncomeHeaderView4"); + _totalLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightMedium]; + _totalLabel.textColor = [UIColor whiteColor]; + } + return _totalLabel; +} + +- (UILabel *)coinLabel { + if (!_coinLabel) { + _coinLabel = [[UILabel alloc] init]; + _coinLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; + _coinLabel.textColor = [UIColor whiteColor]; + } + return _coinLabel; +} + +- (NSDateFormatter *)formatter { + if (!_formatter) { + _formatter = [[NSDateFormatter alloc] init]; + } + return _formatter; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildIncomeSectionView.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildIncomeSectionView.h new file mode 100644 index 00000000..0178ccd6 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildIncomeSectionView.h @@ -0,0 +1,19 @@ +// +// XPGuildIncomeSectionView.h +// YuMi +// +// Created by YuMi on 2022/4/11. +// + +#import +#import "XPMineGuildIncomeRecordViewController.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPGuildIncomeSectionView : UIView +///收入类型 +@property (nonatomic,assign) GuildIncomeType incomeType; + +- (instancetype)initWithFrame:(CGRect)frame right:(CGFloat)right; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildIncomeSectionView.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildIncomeSectionView.m new file mode 100644 index 00000000..e7d0c5a6 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildIncomeSectionView.m @@ -0,0 +1,160 @@ +// +// XPGuildIncomeSectionView.m +// YuMi +// +// Created by YuMi on 2022/4/11. +// + +#import "XPGuildIncomeSectionView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" + + +@interface XPGuildIncomeSectionView () + +///排名 +@property (nonatomic,strong) UILabel *rankLabel; +///房间/头像 +@property (nonatomic,strong) UILabel *roomLabel; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///收入 +@property (nonatomic,strong) UILabel *incomeLabel; +@property (nonatomic,assign) CGFloat right; +@end + +@implementation XPGuildIncomeSectionView +- (instancetype)initWithFrame:(CGRect)frame right:(CGFloat)right{ + self = [super initWithFrame:frame]; + if (self) { + self.right = right; + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = UIColorFromRGB(0xF0F5F6); + + [self addSubview:self.rankLabel]; + [self addSubview:self.roomLabel]; + [self addSubview:self.nickLabel]; + [self addSubview:self.incomeLabel]; +} + +- (void)initSubViewConstraints { + + + [self.rankLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(kGetScaleWidth(54)); + make.left.mas_equalTo(kGetScaleWidth(0)); + make.top.bottom.equalTo(self); + }]; + + [self.roomLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(kGetScaleWidth(47)); + make.left.mas_equalTo(kGetScaleWidth(54)); + make.top.bottom.equalTo(self); + }]; + + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.roomLabel.mas_right); + make.width.mas_equalTo(kGetScaleWidth(120)); + make.top.bottom.equalTo(self); + }]; + CGFloat width = self.right > 0 ? self.right : 38; + [self.incomeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.bottom.equalTo(self); + if(self.right <= 0){ + make.left.equalTo(self.nickLabel.mas_right); + } + make.right.mas_equalTo(-kGetScaleWidth(width)); + }]; +} + +#pragma mark - Getters And Setters +- (void)setIncomeType:(GuildIncomeType)incomeType { + _incomeType = incomeType; + switch (_incomeType) { + case GuildIncomeType_Clan: + case GuildIncomeType_Anchor: + { + self.nickLabel.hidden = YES; + self.roomLabel.text = YMLocalizedString(@"XPGuildIncomeSectionView0"); + self.incomeLabel.textAlignment = NSTextAlignmentCenter; + } + break; + case GuildIncomeType_Hall: + { + self.nickLabel.hidden = NO; + self.roomLabel.text = YMLocalizedString(@"XPGuildIncomeSectionView1"); + self.incomeLabel.textAlignment = NSTextAlignmentCenter; + } + break; + default: + break; + } +} + + + +- (UILabel *)rankLabel { + if (!_rankLabel) { + _rankLabel = [[UILabel alloc] init]; + _rankLabel.text = YMLocalizedString(@"XPGuildIncomeSectionView2"); + _rankLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _rankLabel.textColor = [DJDKMIMOMColor inputTextColor]; + _rankLabel.textAlignment = NSTextAlignmentCenter; + } + return _rankLabel; +} + +- (UILabel *)roomLabel { + if (!_roomLabel) { + _roomLabel = [[UILabel alloc] init]; + _roomLabel.text = YMLocalizedString(@"XPGuildIncomeSectionView3"); + _roomLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _roomLabel.textColor = [DJDKMIMOMColor inputTextColor]; + _roomLabel.textAlignment = NSTextAlignmentCenter; + } + return _roomLabel; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.text = YMLocalizedString(@"XPGuildIncomeSectionView4"); + _nickLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _nickLabel.textColor = [DJDKMIMOMColor inputTextColor]; + _nickLabel.textAlignment = NSTextAlignmentCenter; + _nickLabel.hidden = YES; + } + return _nickLabel; +} + +- (UILabel *)incomeLabel { + if (!_incomeLabel) { + _incomeLabel = [[UILabel alloc] init]; + _incomeLabel.text = YMLocalizedString(@"XPGuildIncomeSectionView5"); + _incomeLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _incomeLabel.textColor = [DJDKMIMOMColor inputTextColor]; + _incomeLabel.textAlignment = NSTextAlignmentCenter; + } + return _incomeLabel; +} + + + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildSearchNavView.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildSearchNavView.h new file mode 100644 index 00000000..843acb69 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildSearchNavView.h @@ -0,0 +1,29 @@ +// +// XPGuildSearchNavView.h +// YuMi +// +// Created by YuMi on 2022/4/7. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class XPGuildSearchNavView; +@protocol XPGuildSearchNavViewDelegate +//点击了返回 +- (void)xPGuildSearchNavView:(XPGuildSearchNavView *)view didClickBack:(UIButton *)sender; +///点击了搜索 +- (void)xPGuildSearchNavView:(XPGuildSearchNavView *)view didClickSearch:(UIButton *)sender; +@end + +@interface XPGuildSearchNavView : UIView +///输入框 +@property (nonatomic,strong,readonly) UITextField *searchTextField; +///代理 +@property (nonatomic,weak) id delegate; +///占位文字 +@property (nonatomic,copy) NSString *placeHolder; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildSearchNavView.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildSearchNavView.m new file mode 100644 index 00000000..1368b24b --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildSearchNavView.m @@ -0,0 +1,178 @@ +// +// XPGuildSearchNavView.m +// YuMi +// +// Created by YuMi on 2022/4/7. +// + +#import "XPGuildSearchNavView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" + +#import "UIButton+EnlargeTouchArea.h" +@interface XPGuildSearchNavView () +///返回 +@property (nonatomic,strong) UIButton *backButton; +///输入框背景 +@property (nonatomic,strong) UIView * inputBackView; +///搜索logo +@property (nonatomic,strong) UIImageView *searchImageView; +///输入框 +@property (nonatomic,strong) UITextField *searchTextField; +///取消 +@property (nonatomic,strong) UIButton *cancleButton; + +@end + + +@implementation XPGuildSearchNavView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + + + + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor whiteColor]; + [self addSubview:self.backButton]; + [self addSubview:self.inputBackView]; + [self addSubview:self.cancleButton]; + + [self.inputBackView addSubview:self.searchImageView]; + [self.inputBackView addSubview:self.searchTextField]; +} + +- (void)initSubViewConstraints { + [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(22, 22)); + make.left.mas_equalTo(self).offset(8); + make.centerY.mas_equalTo(self.inputBackView); + }]; + + [self.inputBackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(-8); + make.left.mas_equalTo(self.backButton.mas_right).offset(5); + make.right.mas_equalTo(self.cancleButton.mas_left).offset(-13); + make.height.mas_equalTo(30); + }]; + + [self.cancleButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self).offset(-15); + make.centerY.mas_equalTo(self.inputBackView); + make.height.mas_equalTo(30); + }]; + + [self.searchImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(22, 22)); + make.centerY.mas_equalTo(self.inputBackView); + make.left.mas_equalTo(self.inputBackView).offset(13); + }]; + + [self.searchTextField mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.searchImageView.mas_right).mas_offset(4); + make.top.bottom.mas_equalTo(self.inputBackView); + make.right.mas_equalTo(-13); + }]; +} + +#pragma mark - UITextFieldDelegate +- (BOOL)textFieldShouldReturn:(UITextField *)textField { + [self cancleButtonAction:self.cancleButton]; + return YES; +} + + +#pragma mark - Event Response +- (void)cancleButtonAction:(UIButton *)sender { + [self.searchTextField resignFirstResponder]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGuildSearchNavView:didClickSearch:)]) { + [self.delegate xPGuildSearchNavView:self didClickSearch:sender]; + } +} + +- (void)backButtonAction:(UIButton *)sender { + [self.searchTextField resignFirstResponder]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGuildSearchNavView:didClickBack:)]) { + [self.delegate xPGuildSearchNavView:self didClickBack:sender]; + } +} + +#pragma mark - Getters And Setters +- (void)setPlaceHolder:(NSString *)placeHolder { + _placeHolder= placeHolder; + if (_placeHolder) { + _searchTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:_placeHolder attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:13], NSForegroundColorAttributeName : [DJDKMIMOMColor secondTextColor]}]; + } +} + +- (UIButton *)backButton { + if (!_backButton) { + _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateNormal]; + [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateSelected]; + [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_backButton setEnlargeEdgeWithTop:10 right:5 bottom:10 left:8]; + } + return _backButton; +} + +- (UIView *)inputBackView { + if (!_inputBackView) { + _inputBackView = [[UIView alloc] init]; + _inputBackView.backgroundColor = UIColorFromRGB(0xF3F5FA); + _inputBackView.layer.masksToBounds = YES; + _inputBackView.layer.cornerRadius = 15; + } + return _inputBackView; +} + +- (UIImageView *)searchImageView { + if (!_searchImageView) { + _searchImageView = [[UIImageView alloc] init]; + _searchImageView.userInteractionEnabled = YES; + _searchImageView.image = [UIImage imageNamed:@"home_search_input_search2"]; + } + return _searchImageView; +} + +- (UITextField *)searchTextField { + if (!_searchTextField) { + _searchTextField = [[UITextField alloc] init]; + _searchTextField.tintColor = [DJDKMIMOMColor secondTextColor]; + _searchTextField.textColor = [DJDKMIMOMColor mainTextColor]; + _searchTextField.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; + _searchTextField.font = [UIFont systemFontOfSize:13]; + NSString *placeholder = [NSString stringWithFormat:YMLocalizedString(@"XPGuildSearchNavView0"), AppName]; + _searchTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholder attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:13], NSForegroundColorAttributeName : [DJDKMIMOMColor secondTextColor]}]; + _searchTextField.clearButtonMode = UITextFieldViewModeWhileEditing; + _searchTextField.returnKeyType = UIReturnKeySearch; + _searchTextField.delegate = self; + _searchTextField.enablesReturnKeyAutomatically = YES; + } + return _searchTextField; +} + +- (UIButton *)cancleButton { + if (!_cancleButton) { + _cancleButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_cancleButton setTitle:YMLocalizedString(@"XPGuildSearchNavView1") forState:UIControlStateNormal]; + [_cancleButton setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateNormal]; + _cancleButton.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; + [_cancleButton addTarget:self action:@selector(cancleButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_cancleButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:0]; + } + return _cancleButton; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildSuperAdminMenuView.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildSuperAdminMenuView.h new file mode 100644 index 00000000..de8be4da --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildSuperAdminMenuView.h @@ -0,0 +1,29 @@ +// +// XPGuildSuperAdminMenuView.h +// YuMi +// +// Created by YuMi on 2022/4/13. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(NSInteger, GuildSuperAdminMenuType) { + ///设置管理的房间 + GuildSuperAdminMenuType_Set_Manager_Room =1, + ///移除管理 + GuildSuperAdminMenuType_Remove_Super_Admnin +}; + +@class XPGuildSuperAdminMenuView; +@protocol XPGuildSuperAdminMenuViewDelegate + +- (void)xPGuildSuperAdminMenuView:(XPGuildSuperAdminMenuView *)view didClickType:(GuildSuperAdminMenuType)memuType; + +@end +@interface XPGuildSuperAdminMenuView : UIView +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildSuperAdminMenuView.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildSuperAdminMenuView.m new file mode 100644 index 00000000..6acaafb9 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildSuperAdminMenuView.m @@ -0,0 +1,139 @@ +// +// XPGuildSuperAdminMenuView.m +// YuMi +// +// Created by YuMi on 2022/4/13. +// + +#import "XPGuildSuperAdminMenuView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" + +@interface XPGuildSuperAdminMenuView () +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///设置管理的房间 +@property (nonatomic,strong) UIButton *managerRoomButton; +///分割线 +@property (nonatomic,strong) UIView *lineView; +///移除超管身份 +@property (nonatomic,strong) UIButton *removeButton; + +@end + +@implementation XPGuildSuperAdminMenuView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +- (void)drawRect:(CGRect)rect { + CGFloat startX = self.frame.size.width - 20; + + CGContextRef context = UIGraphicsGetCurrentContext(); + CGContextBeginPath(context);//标记 + CGContextMoveToPoint(context, startX, 5); + CGContextAddLineToPoint(context, startX + 5, 0); + CGContextAddLineToPoint(context, startX + 10, 5); + CGContextClosePath(context); + [UIColorFromRGB(0x3C3C3C) setFill]; + [UIColorFromRGB(0x3C3C3C) setStroke]; + CGContextDrawPath(context, kCGPathFillStroke); +} + +#pragma mark - Private Method + +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + [self addSubview:self.stackView]; + + [self.stackView addArrangedSubview:self.managerRoomButton]; + [self.stackView addArrangedSubview:self.lineView]; + [self.stackView addArrangedSubview:self.removeButton]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(110); + make.height.mas_equalTo(66); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self); + make.top.mas_equalTo(self).offset(5); + }]; + + [self.managerRoomButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(30); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(1); + }]; +} + +#pragma mark - Event Response + +- (void)managerRoomButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGuildSuperAdminMenuView:didClickType:)]) { + [self.delegate xPGuildSuperAdminMenuView:self didClickType:sender.tag]; + } +} + +#pragma mark - Getters And Setters +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 0; + _stackView.layer.masksToBounds = YES; + _stackView.layer.cornerRadius = 8; + } + return _stackView; +} + +- (UIButton *)managerRoomButton { + if (!_managerRoomButton) { + _managerRoomButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_managerRoomButton setTitle:YMLocalizedString(@"XPGuildSuperAdminMenuView0") forState:UIControlStateNormal]; + [_managerRoomButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _managerRoomButton.titleLabel.font = [UIFont systemFontOfSize:12]; + _managerRoomButton.backgroundColor = UIColorFromRGB(0x3C3C3C); + _managerRoomButton.tag = GuildSuperAdminMenuType_Set_Manager_Room; + [_managerRoomButton addTarget:self action:@selector(managerRoomButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _managerRoomButton; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [UIColor whiteColor]; + } + return _lineView; +} + +- (UIButton *)removeButton { + if (!_removeButton) { + _removeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_removeButton setTitle:YMLocalizedString(@"XPGuildSuperAdminMenuView1") forState:UIControlStateNormal]; + [_removeButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _removeButton.titleLabel.font = [UIFont systemFontOfSize:12]; + _removeButton.backgroundColor = UIColorFromRGB(0x3C3C3C); + _removeButton.tag = GuildSuperAdminMenuType_Remove_Super_Admnin; + [_removeButton addTarget:self action:@selector(managerRoomButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _removeButton; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildTimeMonthPickerView.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildTimeMonthPickerView.h new file mode 100644 index 00000000..076ed1e0 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildTimeMonthPickerView.h @@ -0,0 +1,78 @@ +// +// XPGuildTimeMouthPickerView.h +// YuMi +// +// Created by YuMi on 2022/4/12. +// + +#import +#import "NSDate+DateUtils.h" + +typedef NS_ENUM(NSInteger,HooDatePickerMode) { + HooDatePickerModeTime, // Displays hour, minute, and optionally AM/PM designation depending on the locale setting (e.g. 6 | 53 | PM) + HooDatePickerModeDate, // Displays month, day, and year depending on the locale setting (e.g. November | 15 | 2007) + HooDatePickerModeDateAndTime, // Displays date, hour, minute, and optionally AM/PM designation depending on the locale setting (e.g. Wed Nov 15 | 6 | 53 | PM) + HooDatePickerModeYearAndMonth // Displays Year, Month, designation depending on the locale setting (e.g. November | 2007) +}; + +@class XPGuildTimeMonthPickerView; + +@protocol XPGuildTimeMonthPickerViewDelegate +@optional +- (void)datePicker:(XPGuildTimeMonthPickerView *)datePicker dateDidChange:(NSDate *)date; +- (void)datePicker:(XPGuildTimeMonthPickerView *)datePicker didCancel:(UIButton *)sender; +- (void)datePicker:(XPGuildTimeMonthPickerView *)dataPicker didSelectedDate:(NSDate *)date; +@end + +@interface XPGuildTimeMonthPickerView : UIControl +/** + * Title on the top of HooDatePicker + */ +@property (nonatomic, copy) NSString *title; + +@property (nonatomic, strong) NSDate *date; +/** + * specify min/max date range. default is nil. When min > max, the values are ignored. + */ +@property (nonatomic, strong) NSDate *minimumDate; + +@property (nonatomic, strong) NSDate *maximumDate; +/** + * default is HooDatePickerModeDate. setting nil returns to default + */ +@property (nonatomic, assign) HooDatePickerMode datePickerMode; +/** + * default is [NSLocale currentLocale]. setting nil returns to default + */ +@property(nonatomic,strong) NSLocale *locale; +/** + * default is [NSCalendar currentCalendar]. setting nil returns to default + */ +@property(nonatomic,copy) NSCalendar *calendar; +/** + * default is nil. use current time zone or time zone from calendar + */ +@property(nonatomic,strong) NSTimeZone *timeZone; +/** + * read only property, indicate in datepicker is open. + */ +@property(nonatomic,readonly) BOOL isOpen; + +@property (nonatomic, weak) id delegate; + +- (instancetype)initWithSuperView:(UIView*)superView; + +- (instancetype)initDatePickerMode:(HooDatePickerMode)datePickerMode andAddToSuperView:(UIView *)superView; + +- (instancetype)initDatePickerMode:(HooDatePickerMode)datePickerMode minDate:(NSDate *)minimumDate maxMamDate:(NSDate *)maximumDate andAddToSuperView:(UIView *)superView; +- (instancetype)initNoBackBtnWithSuperView:(UIView*)superView; +- (void)setDate:(NSDate *)date animated:(BOOL)animated; + +- (void)setTintColor:(UIColor *)tintColor; + +- (void)setHighlightColor:(UIColor *)highlightColor; + +- (void)show; +-(void)showView; +- (void)dismiss; +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildTimeMonthPickerView.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildTimeMonthPickerView.m new file mode 100644 index 00000000..e829aa0f --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildTimeMonthPickerView.m @@ -0,0 +1,1729 @@ +// +// XPGuildTimeMouthPickerView.m +// YuMi +// +// Created by YuMi on 2022/4/12. +// + +#import "XPGuildTimeMonthPickerView.h" +#import "DJDKMIMOMColor.h" + +extern NSString *const kDateFormatYYYYMMDD; + +// Constants sizes : +static CGFloat const kHooDatePickerHeight = 260.0f; + + + +static CGFloat const kHooDatePickerButtonHeaderWidth = 40.0f; + +static CGFloat const kHooDatePickerHeaderBottomMargin = 1.0f; + +static CGFloat const kHooDatePickerScrollViewDaysWidth = 90.0f; + +static CGFloat const kHooDatePickerScrollViewMonthWidth = 140.0f; + +static CGFloat const kHooDatePickerScrollViewDateWidth = 165.0f; + +static CGFloat const kHooDatePickerScrollViewLeftMargin = 1.0f; + +static CGFloat const kHooDatePickerScrollViewItemHeight = 45.0f; + +static CGFloat const kHooDatePickerLineWidth = 0.5f; + +static CGFloat const kHooDatePickerLineMargin = 15.0f; + +static CGFloat const kHooDatePickerPadding = 15.0f; + +// Constants times : +static CGFloat const kHooDatePickerAnimationDuration = 0.4f; + +// Constants fonts +#define kHooDatePickerTitleFont [UIFont systemFontOfSize:18.0] +#define kHooDatePickerLabelFont [UIFont systemFontOfSize:18.0] +#define kHooDatePickerLabelSelectedFont [UIFont systemFontOfSize:20.0]; + +// Constants colors : +#define kHooDatePickerHighlightColor [UIColor colorWithRed:255.0/255.0 green:180.0/255.0 blue:18.0/255.0 alpha:1.0] + +typedef NS_ENUM(NSInteger,ScrollViewTagValue) { + ScrollViewTagValue_DAYS = 1, + ScrollViewTagValue_MONTHS = 2, + ScrollViewTagValue_YEARS = 3, + ScrollViewTagValue_HOURS = 4, + ScrollViewTagValue_MINUTES = 5, + ScrollViewTagValue_SECONDS = 6, + ScrollViewTagValue_DATES = 7, + +}; + +@interface XPGuildTimeMonthPickerView () { + // Lines : + UIView *_lineDaysTop, *_lineDaysBottom, *_lineMonthsTop, *_lineMonthsBottom, *_lineYearsTop,*_lineYearsBottom, *_lineDatesTop, *_lineDatesBottom, *_lineHoursTop, *_lineHoursBottom, *_lineMinutesTop, *_lineMinutesBottom, *_lineSecondsTop, *_lineSecondsBottom; + + // Labels : + NSMutableArray *_labelsDays, *_labelsMonths, *_labelsYears, *_labelsDates, *_labelsHours, *_labelsMinutes, *_labelsSeconds; + + // Date and time selected : + NSInteger _selectedDay, _selectedMonth, _selectedYear, _selectedDate, _selectedHour, _selectedMinute, _selectedSecond; + + // First init flag : + BOOL _isInitialized; + NSInteger _minYear; + +} + +// Data of years, months, days, dates, hours, minutes, seconds +@property (nonatomic, strong) NSMutableArray *years, *months, *days, *dates, *hours, *minutes, *seconds; + +// ScrollView for Years, Months, days ,Dates ,Hours ,Minute ,Seconds +@property (nonatomic, strong) UIScrollView *scrollViewYears, *scrollViewMonths, *scrollViewDays, *scrollViewDates, *scrollViewHours, *scrollViewMinutes,*scrollViewSeconds; + +@property (nonatomic, weak) UIView *superView; +@property (nonatomic,assign) CGFloat kHooDatePickerHeaderHeight; +@property (nonatomic, copy) UIView *dimBackgroundView; + +@property (nonatomic, strong) UILabel *titleLabel; + +@property (nonatomic, strong) UIView *headerView; + +@property (nonatomic, strong) UIColor *tintColor; + +@property (nonatomic, strong) UIColor *highlightColor; + +@property (nonatomic, strong) NSDateFormatter *dateFormatter; + +@end + +@implementation XPGuildTimeMonthPickerView + + +#pragma mark - Initializers + + + +- (instancetype)initNoBackBtnWithSuperView:(UIView*)superView { + + if (self = [super initWithFrame:CGRectMake(0.0, 139, superView.frame.size.width, 216)]) { + self.kHooDatePickerHeaderHeight = 0; + _datePickerMode = HooDatePickerModeDate; + [superView addSubview:self]; + _superView = superView; + _minYear = 1900; + self.tintColor = [UIColor whiteColor]; + self.highlightColor = kHooDatePickerHighlightColor; + [self setupControl]; + } + return self; +} + + + +- (instancetype)initWithSuperView:(UIView*)superView { + + + if (self = [super initWithFrame:CGRectMake(0.0, superView.frame.size.height, superView.frame.size.width, kHooDatePickerHeight)]) { + self.kHooDatePickerHeaderHeight = 44; + _datePickerMode = HooDatePickerModeDate; + [superView addSubview:self]; + _superView = superView; + _minYear = 1900; + self.tintColor = [UIColor whiteColor]; + self.highlightColor = kHooDatePickerHighlightColor; + [self addSubview:self.headerView]; + [self setupControl]; + } + return self; +} + +- (instancetype)initDatePickerMode:(HooDatePickerMode)datePickerMode andAddToSuperView:(UIView *)superView { + if (self = [super initWithFrame:CGRectMake(0.0, superView.frame.size.height, superView.frame.size.width, kHooDatePickerHeight)]) { + self.kHooDatePickerHeaderHeight = 44; + _datePickerMode = datePickerMode; + [superView addSubview:self]; + _superView = superView; + _minYear = 1900; + self.tintColor = [UIColor whiteColor]; + self.highlightColor = kHooDatePickerHighlightColor; +// [self addSubview:self.headerView]; + [self setupControl]; + } + return self; +} + +- (instancetype)initDatePickerMode:(HooDatePickerMode)datePickerMode minDate:(NSDate *)minimumDate maxMamDate:(NSDate *)maximumDate andAddToSuperView:(UIView *)superView { + if (self = [super initWithFrame:CGRectMake(0.0, superView.frame.size.height, superView.frame.size.width, kHooDatePickerHeight)]) { + self.kHooDatePickerHeaderHeight = 44; + _datePickerMode = datePickerMode; + [superView addSubview:self]; + _superView = superView; + _minYear = 1900; + if (maximumDate) { + _maximumDate = maximumDate; + } + if (minimumDate) { + _minimumDate = minimumDate; + + NSDateComponents* componentsMin = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:_minimumDate]; + NSInteger yearMin = [componentsMin year]; + _minYear = yearMin; + } + self.tintColor = [UIColor whiteColor]; + self.highlightColor = kHooDatePickerHighlightColor; +// [self addSubview:self.headerView]; + [self setupControl]; + } + return self; +} + +- (void)setupControl { + + // Set parent View : + self.hidden = YES; + + // Clear old selectors + [self removeSelectorYears]; + [self removeSelectorMonths]; + [self removeSelectorDays]; + [self removeSelectorHours]; + [self removeSelectorMinutes]; + [self removeSelectorSeconds]; + + // Generate collections days, months, years, hours, minutes and seconds : + _years = [self getYears]; + _days = [self getDaysInMonth:[NSDate date]]; + if (self.datePickerMode == HooDatePickerModeDateAndTime) { + _dates = [self getDates]; + } + + // Background : + self.backgroundColor = [UIColor whiteColor]; + + // Date Selectors : + if (self.datePickerMode == HooDatePickerModeDate) { + [self buildSelectorYearsOffsetX:0.0 andWidth:kHooDatePickerScrollViewMonthWidth]; + [self buildSelectorMonthsOffsetX:(_scrollViewYears.frame.size.width + kHooDatePickerScrollViewLeftMargin) andWidth:kHooDatePickerScrollViewDaysWidth]; + [self buildSelectorDaysOffsetX:(_scrollViewMonths.frame.origin.x + _scrollViewMonths.frame.size.width + kHooDatePickerScrollViewLeftMargin) andWidth:(self.frame.size.width - (_scrollViewMonths.frame.origin.x + _scrollViewMonths.frame.size.width + kHooDatePickerScrollViewLeftMargin))]; + } + + // Time Selectors : + if (self.datePickerMode == HooDatePickerModeTime) { + [self buildSelectorHoursOffsetX:0.0 andWidth:((self.frame.size.width / 3.0) - kHooDatePickerScrollViewLeftMargin)]; + [self buildSelectorMinutesOffsetX:(self.frame.size.width / 3.0) andWidth:((self.frame.size.width / 3.0) - kHooDatePickerScrollViewLeftMargin)]; + [self buildSelectorSecondsOffsetX:((self.frame.size.width / 3.0) * 2.0) andWidth:(self.frame.size.width / 3.0)]; + } + + // Date & Time Selectors : + if (self.datePickerMode == HooDatePickerModeDateAndTime) { + [self buildSelectorDatesOffsetX:0.0 andWidth:kHooDatePickerScrollViewDateWidth]; + [self buildSelectorHoursOffsetX:(kHooDatePickerScrollViewDateWidth + kHooDatePickerScrollViewLeftMargin) andWidth:(((self.frame.size.width - kHooDatePickerScrollViewDateWidth) / 2.0) - kHooDatePickerScrollViewLeftMargin)]; + [self buildSelectorMinutesOffsetX:(kHooDatePickerScrollViewDateWidth + kHooDatePickerScrollViewLeftMargin + ((self.frame.size.width - kHooDatePickerScrollViewDateWidth) / 2.0)) andWidth:(((self.frame.size.width - kHooDatePickerScrollViewDateWidth) / 2.0) - kHooDatePickerScrollViewLeftMargin)]; + } + + if (self.datePickerMode == HooDatePickerModeYearAndMonth) { + [self buildSelectorYearsOffsetX:0.0 andWidth:self.frame.size.width * 0.5]; + [self buildSelectorMonthsOffsetX:(_scrollViewYears.frame.size.width + kHooDatePickerScrollViewLeftMargin) andWidth:self.frame.size.width * 0.5]; + + } + + // Defaut Date selected : + [self setDate:[NSDate date] animated:NO]; +} + + +#pragma mark - Build Selector Days + +- (void)buildSelectorDaysOffsetX:(CGFloat)x andWidth:(CGFloat)width { + + // ScrollView Days : + _scrollViewDays = [[UIScrollView alloc] initWithFrame:CGRectMake(x, self.kHooDatePickerHeaderHeight + kHooDatePickerHeaderBottomMargin, width, self.frame.size.height - self.kHooDatePickerHeaderHeight - kHooDatePickerHeaderBottomMargin)]; + _scrollViewDays.tag = ScrollViewTagValue_DAYS; + _scrollViewDays.delegate = self; + _scrollViewDays.backgroundColor = [UIColor whiteColor]; + _scrollViewDays.showsHorizontalScrollIndicator = NO; + _scrollViewDays.showsVerticalScrollIndicator = NO; + [self addSubview:_scrollViewDays]; + + _lineDaysTop = [[UIView alloc] initWithFrame:CGRectMake(_scrollViewDays.frame.origin.x + kHooDatePickerLineMargin, _scrollViewDays.frame.origin.y + (_scrollViewDays.frame.size.height / 2) - (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; + _lineDaysTop.backgroundColor = [UIColor clearColor]; + [self addSubview:_lineDaysTop]; + + _lineDaysBottom = [[UIView alloc] initWithFrame:CGRectMake(_scrollViewDays.frame.origin.x + kHooDatePickerLineMargin, _scrollViewDays.frame.origin.y + (_scrollViewDays.frame.size.height / 2) + (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; + _lineDaysBottom.backgroundColor = [UIColor clearColor]; + [self addSubview:_lineDaysBottom]; + + // Update ScrollView Data + [self buildSelectorLabelsDays]; + + UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestureDaysCaptured:)]; + singleTap.numberOfTapsRequired = 1; + singleTap.numberOfTouchesRequired = 1; + [_scrollViewDays addGestureRecognizer:singleTap]; +} + +- (void)buildSelectorLabelsDays { + + CGFloat offsetContentScrollView = (_scrollViewYears.frame.size.height - kHooDatePickerScrollViewItemHeight) / 2.0; + + if (_labelsDays && _labelsDays.count > 0) { + for (UILabel *label in _labelsDays) { + [label removeFromSuperview]; + } + } + + _labelsDays = [[NSMutableArray alloc] init]; + + for (int i = 0; i < _days.count; i++) { + + NSString *day = (NSString*)[_days safeObjectAtIndex1:i]; + + UILabel *labelDay = [[UILabel alloc] initWithFrame:CGRectMake(0, (i * kHooDatePickerScrollViewItemHeight) + offsetContentScrollView, _scrollViewDays.frame.size.width, kHooDatePickerScrollViewItemHeight)]; + labelDay.text = day; + labelDay.font = kHooDatePickerLabelFont; + labelDay.textAlignment = NSTextAlignmentCenter; + labelDay.textColor = self.tintColor; + labelDay.backgroundColor = [UIColor redColor]; + + [_labelsDays addObject:labelDay]; + [_scrollViewDays addSubview:labelDay]; + } + + _scrollViewDays.contentSize = CGSizeMake(_scrollViewDays.frame.size.width, (kHooDatePickerScrollViewItemHeight * _days.count) + (offsetContentScrollView * 2)); +} + +- (void)removeSelectorDays { + + if (_scrollViewDays) { + [_scrollViewDays removeFromSuperview]; + _scrollViewDays = nil; + } + if (_lineDaysTop) { + [_lineDaysTop removeFromSuperview]; + _lineDaysTop = nil; + } + if (_lineDaysBottom) { + [_lineDaysBottom removeFromSuperview]; + _lineDaysBottom = nil; + } +} + +#pragma mark - Build Selector Months + +- (void)buildSelectorMonthsOffsetX:(CGFloat)x andWidth:(CGFloat)width { + + // ScrollView Months + + _scrollViewMonths = [[UIScrollView alloc] initWithFrame:CGRectMake(x, self.kHooDatePickerHeaderHeight + kHooDatePickerHeaderBottomMargin, width, self.frame.size.height - self.kHooDatePickerHeaderHeight - kHooDatePickerHeaderBottomMargin)]; + _scrollViewMonths.tag = ScrollViewTagValue_MONTHS; + _scrollViewMonths.delegate = self; + _scrollViewMonths.backgroundColor = [UIColor whiteColor]; + _scrollViewMonths.showsHorizontalScrollIndicator = NO; + _scrollViewMonths.showsVerticalScrollIndicator = NO; + [self addSubview:_scrollViewMonths]; + + _lineMonthsTop = [[UIView alloc] initWithFrame:CGRectMake(_scrollViewMonths.frame.origin.x + kHooDatePickerLineMargin, _scrollViewMonths.frame.origin.y + (_scrollViewMonths.frame.size.height / 2) - (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; + _lineMonthsTop.backgroundColor = [UIColor clearColor]; + [self addSubview:_lineMonthsTop]; + + _lineMonthsBottom = [[UIView alloc] initWithFrame:CGRectMake(_scrollViewMonths.frame.origin.x + kHooDatePickerLineMargin, _scrollViewMonths.frame.origin.y + (_scrollViewMonths.frame.size.height / 2) + (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; + _lineMonthsBottom.backgroundColor = [UIColor clearColor]; + [self addSubview:_lineMonthsBottom]; + + + // Update ScrollView Data + [self buildSelectorLabelsMonths]; + + UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestureMonthsCaptured:)]; + singleTap.numberOfTapsRequired = 1; + singleTap.numberOfTouchesRequired = 1; + [_scrollViewMonths addGestureRecognizer:singleTap]; +} + +- (void)buildSelectorLabelsMonths { + + CGFloat offsetContentScrollView = (_scrollViewYears.frame.size.height - kHooDatePickerScrollViewItemHeight) / 2.0; + + if (_labelsMonths && _labelsMonths.count > 0) { + for (UILabel *label in _labelsMonths) { + [label removeFromSuperview]; + } + } + + _labelsMonths = [[NSMutableArray alloc] init]; + + for (int i = 0; i < self.months.count; i++) { + + NSString *day = (NSString*)[self.months safeObjectAtIndex1:i]; + + UILabel *labelDay = [[UILabel alloc] initWithFrame:CGRectMake(0.0, (i * kHooDatePickerScrollViewItemHeight) + offsetContentScrollView, _scrollViewMonths.frame.size.width, kHooDatePickerScrollViewItemHeight)]; + labelDay.text = day; + labelDay.font = kHooDatePickerLabelFont; + labelDay.textAlignment = NSTextAlignmentCenter; + labelDay.textColor = self.tintColor; + labelDay.backgroundColor = [UIColor clearColor]; + + [_labelsMonths addObject:labelDay]; + [_scrollViewMonths addSubview:labelDay]; + } + + _scrollViewMonths.contentSize = CGSizeMake(_scrollViewMonths.frame.size.width, (kHooDatePickerScrollViewItemHeight * self.months.count) + (offsetContentScrollView * 2)); +} + +- (void)removeSelectorMonths { + + if (_scrollViewMonths) { + [_scrollViewMonths removeFromSuperview]; + _scrollViewMonths = nil; + } + if (_lineMonthsTop) { + [_lineMonthsTop removeFromSuperview]; + _lineMonthsTop = nil; + } + if (_lineMonthsBottom) { + [_lineMonthsBottom removeFromSuperview]; + _lineMonthsBottom = nil; + } +} + +#pragma mark - Build Selector Years + +- (void)buildSelectorYearsOffsetX:(CGFloat)x andWidth:(CGFloat)width { + + // ScrollView Years + + _scrollViewYears = [[UIScrollView alloc] initWithFrame:CGRectMake(x, self.kHooDatePickerHeaderHeight + kHooDatePickerHeaderBottomMargin, width, self.frame.size.height - self.kHooDatePickerHeaderHeight - kHooDatePickerHeaderBottomMargin)]; + _scrollViewYears.tag = ScrollViewTagValue_YEARS; + _scrollViewYears.delegate = self; + _scrollViewYears.backgroundColor = [UIColor whiteColor]; + _scrollViewYears.showsHorizontalScrollIndicator = NO; + _scrollViewYears.showsVerticalScrollIndicator = NO; + [self addSubview:_scrollViewYears]; + + _lineYearsTop = [[UIView alloc] initWithFrame:CGRectMake(_scrollViewYears.frame.origin.x + kHooDatePickerLineMargin, _scrollViewYears.frame.origin.y + (_scrollViewYears.frame.size.height / 2) - (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; + _lineYearsTop.backgroundColor = [UIColor clearColor]; + [self addSubview:_lineYearsTop]; + + _lineYearsBottom = [[UIView alloc] initWithFrame:CGRectMake(_scrollViewYears.frame.origin.x + kHooDatePickerLineMargin, _scrollViewYears.frame.origin.y + (_scrollViewYears.frame.size.height / 2) + (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; + _lineYearsBottom.backgroundColor = [UIColor clearColor]; +// [self addSubview:_lineYearsBottom]; + + // Update ScrollView Data + [self buildSelectorLabelsYears]; + + UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestureYearsCaptured:)]; + singleTap.numberOfTapsRequired = 1; + singleTap.numberOfTouchesRequired = 1; + [_scrollViewYears addGestureRecognizer:singleTap]; +} + +- (void)buildSelectorLabelsYears { + + CGFloat offsetContentScrollView = (_scrollViewYears.frame.size.height - kHooDatePickerScrollViewItemHeight) / 2.0; + + if (_labelsYears && _labelsYears.count > 0) { + for (UILabel *label in _labelsYears) { + [label removeFromSuperview]; + } + } + + _labelsYears = [[NSMutableArray alloc] init]; + + for (int i = 0; i < _years.count; i++) { + + NSString *day = (NSString*)[_years safeObjectAtIndex1:i]; + + UILabel *labelDay = [[UILabel alloc] initWithFrame:CGRectMake(0.0, (i * kHooDatePickerScrollViewItemHeight) + offsetContentScrollView, _scrollViewYears.frame.size.width, kHooDatePickerScrollViewItemHeight)]; + labelDay.text = day; + labelDay.font = kHooDatePickerLabelFont; + labelDay.textAlignment = NSTextAlignmentCenter; + labelDay.textColor = self.tintColor; + labelDay.backgroundColor = [UIColor clearColor]; + + [_labelsYears addObject:labelDay]; + [_scrollViewYears addSubview:labelDay]; + } + + _scrollViewYears.contentSize = CGSizeMake(_scrollViewYears.frame.size.width, (kHooDatePickerScrollViewItemHeight * _years.count) + (offsetContentScrollView * 2)); +} + +- (void)removeSelectorYears { + + if (_scrollViewYears) { + [_scrollViewYears removeFromSuperview]; + _scrollViewYears = nil; + } + if (_lineYearsTop) { + [_lineYearsTop removeFromSuperview]; + _lineYearsTop = nil; + } + if (_lineYearsBottom) { + [_lineYearsBottom removeFromSuperview]; + _lineYearsBottom = nil; + } +} + +#pragma mark - Build Selector Dates + +- (void)buildSelectorDatesOffsetX:(CGFloat)x andWidth:(CGFloat)width { + + // ScrollView Dates + _scrollViewDates = [[UIScrollView alloc] initWithFrame:CGRectMake(x, self.kHooDatePickerHeaderHeight + kHooDatePickerHeaderBottomMargin, width, self.frame.size.height - self.kHooDatePickerHeaderHeight - kHooDatePickerHeaderBottomMargin)]; + _scrollViewDates.tag = ScrollViewTagValue_DATES; + _scrollViewDates.delegate = self; + _scrollViewDates.backgroundColor = [UIColor whiteColor]; + _scrollViewDates.showsHorizontalScrollIndicator = NO; + _scrollViewDates.showsVerticalScrollIndicator = NO; + [self addSubview:_scrollViewDates]; + + _lineDatesTop = [[UIView alloc] initWithFrame:CGRectMake(_scrollViewDates.frame.origin.x + kHooDatePickerLineMargin, _scrollViewDates.frame.origin.y + (_scrollViewDates.frame.size.height / 2) - (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; + _lineDatesTop.backgroundColor = [UIColor clearColor]; + [self addSubview:_lineDatesTop]; + + _lineDatesBottom = [[UIView alloc] initWithFrame:CGRectMake(_scrollViewDates.frame.origin.x + kHooDatePickerLineMargin, _scrollViewDates.frame.origin.y + (_scrollViewDates.frame.size.height / 2) + (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; + _lineDatesBottom.backgroundColor = [UIColor clearColor]; + [self addSubview:_lineDatesBottom]; + + // Update ScrollView Data + [self buildSelectorLabelsDates]; + + UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestureDatesCaptured:)]; + singleTap.numberOfTapsRequired = 1; + singleTap.numberOfTouchesRequired = 1; + [_scrollViewDates addGestureRecognizer:singleTap]; +} + +- (void)buildSelectorLabelsDates { + + CGFloat offsetContentScrollView = (_scrollViewDates.frame.size.height - kHooDatePickerScrollViewItemHeight) / 2.0; + + if (_labelsDates && _labelsDates.count > 0) { + for (UILabel *label in _labelsDates) { + [label removeFromSuperview]; + } + } + + _labelsDates = [[NSMutableArray alloc] init]; + + NSDateFormatter *dateFormatter = self.dateFormatter; + [dateFormatter setCalendar:self.calendar]; + [dateFormatter setTimeZone:self.timeZone]; + [dateFormatter setDateFormat:[NSString stringWithFormat:@"MMMdd%@ EEE", YMLocalizedString(@"App_Commont_Day")]]; + + for (int i = 0; i < _dates.count; i++) { + + NSDate *date = [_dates safeObjectAtIndex1:i]; + + NSString *hour = [dateFormatter stringFromDate:date]; + + UILabel *labelDate = [[UILabel alloc] initWithFrame:CGRectMake(0, (i * kHooDatePickerScrollViewItemHeight) + offsetContentScrollView, _scrollViewDates.frame.size.width, kHooDatePickerScrollViewItemHeight)]; + labelDate.text = hour; + labelDate.font = kHooDatePickerLabelFont; + labelDate.textAlignment = NSTextAlignmentCenter; + labelDate.textColor = self.tintColor; + labelDate.backgroundColor = [UIColor clearColor]; + + [_labelsDates addObject:labelDate]; + [_scrollViewDates addSubview:labelDate]; + } + + _scrollViewDates.contentSize = CGSizeMake(_scrollViewDates.frame.size.width, (kHooDatePickerScrollViewItemHeight * _dates.count) + (offsetContentScrollView * 2)); +} + +- (void)removeSelectorDates { + + if (_scrollViewDates) { + [_scrollViewDates removeFromSuperview]; + _scrollViewDates = nil; + } + if (_lineDatesTop) { + [_lineDatesTop removeFromSuperview]; + _lineDatesTop = nil; + } + if (_lineDatesBottom) { + [_lineDatesBottom removeFromSuperview]; + _lineDatesBottom = nil; + } +} + +#pragma mark - Build Selector Hours + +- (void)buildSelectorHoursOffsetX:(CGFloat)x andWidth:(CGFloat)width { + + // ScrollView Hours : + _scrollViewHours = [[UIScrollView alloc] initWithFrame:CGRectMake(x, self.kHooDatePickerHeaderHeight + kHooDatePickerHeaderBottomMargin, width, self.frame.size.height - self.kHooDatePickerHeaderHeight - kHooDatePickerHeaderBottomMargin)]; + _scrollViewHours.tag = ScrollViewTagValue_HOURS; + _scrollViewHours.delegate = self; + _scrollViewHours.backgroundColor = [UIColor whiteColor]; + _scrollViewHours.showsHorizontalScrollIndicator = NO; + _scrollViewHours.showsVerticalScrollIndicator = NO; + [self addSubview:_scrollViewHours]; + + _lineHoursTop = [[UIView alloc] initWithFrame:CGRectMake(_scrollViewHours.frame.origin.x + kHooDatePickerLineMargin, _scrollViewHours.frame.origin.y + (_scrollViewHours.frame.size.height / 2) - (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; + _lineHoursTop.backgroundColor = [UIColor clearColor]; + [self addSubview:_lineHoursTop]; + + _lineHoursBottom = [[UIView alloc] initWithFrame:CGRectMake(_scrollViewHours.frame.origin.x + kHooDatePickerLineMargin, _scrollViewHours.frame.origin.y + (_scrollViewHours.frame.size.height / 2) + (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; + _lineHoursBottom.backgroundColor = [UIColor clearColor]; + [self addSubview:_lineHoursBottom]; + + // Update ScrollView Data + [self buildSelectorLabelsHours]; + + UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestureHoursCaptured:)]; + singleTap.numberOfTapsRequired = 1; + singleTap.numberOfTouchesRequired = 1; + [_scrollViewHours addGestureRecognizer:singleTap]; +} + +- (void)buildSelectorLabelsHours { + + CGFloat offsetContentScrollView = (_scrollViewHours.frame.size.height - kHooDatePickerScrollViewItemHeight) / 2.0; + + if (_labelsHours && _labelsHours.count > 0) { + for (UILabel *label in _labelsHours) { + [label removeFromSuperview]; + } + } + + _labelsHours = [[NSMutableArray alloc] init]; + + for (int i = 0; i < self.hours.count; i++) { + + NSString *hour = (NSString*)[self.hours safeObjectAtIndex1:i]; + + UILabel *labelHour = [[UILabel alloc] initWithFrame:CGRectMake(0, (i * kHooDatePickerScrollViewItemHeight) + offsetContentScrollView, _scrollViewHours.frame.size.width, kHooDatePickerScrollViewItemHeight)]; + labelHour.text = hour; + labelHour.font = kHooDatePickerLabelFont; + labelHour.textAlignment = NSTextAlignmentCenter; + labelHour.textColor = self.tintColor; + labelHour.backgroundColor = [UIColor clearColor]; + + [_labelsHours addObject:labelHour]; + [_scrollViewHours addSubview:labelHour]; + } + + _scrollViewHours.contentSize = CGSizeMake(_scrollViewHours.frame.size.width, (kHooDatePickerScrollViewItemHeight * self.hours.count) + (offsetContentScrollView * 2)); +} + +- (void)removeSelectorHours { + + if (_scrollViewHours) { + [_scrollViewHours removeFromSuperview]; + _scrollViewHours = nil; + } + if (_lineHoursTop) { + [_lineHoursTop removeFromSuperview]; + _lineHoursTop = nil; + } + if (_lineHoursBottom) { + [_lineHoursBottom removeFromSuperview]; + _lineHoursBottom = nil; + } +} + +#pragma mark - Build Selector Minutes + +- (void)buildSelectorMinutesOffsetX:(CGFloat)x andWidth:(CGFloat)width { + + // ScrollView Minutes : + _scrollViewMinutes = [[UIScrollView alloc] initWithFrame:CGRectMake(x, self.kHooDatePickerHeaderHeight + kHooDatePickerHeaderBottomMargin, width, self.frame.size.height - self.kHooDatePickerHeaderHeight - kHooDatePickerHeaderBottomMargin)]; + _scrollViewMinutes.tag = ScrollViewTagValue_MINUTES; + _scrollViewMinutes.delegate = self; + _scrollViewMinutes.backgroundColor = [UIColor whiteColor]; + _scrollViewMinutes.showsHorizontalScrollIndicator = NO; + _scrollViewMinutes.showsVerticalScrollIndicator = NO; + [self addSubview:_scrollViewMinutes]; + + _lineMinutesTop = [[UIView alloc] initWithFrame:CGRectMake(_scrollViewMinutes.frame.origin.x + kHooDatePickerLineMargin, _scrollViewMinutes.frame.origin.y + (_scrollViewMinutes.frame.size.height / 2) - (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; + _lineMinutesTop.backgroundColor = [UIColor clearColor]; + [self addSubview:_lineMinutesTop]; + + _lineMinutesBottom = [[UIView alloc] initWithFrame:CGRectMake(_scrollViewMinutes.frame.origin.x + kHooDatePickerLineMargin, _scrollViewMinutes.frame.origin.y + (_scrollViewMinutes.frame.size.height / 2) + (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; + _lineMinutesBottom.backgroundColor = [UIColor clearColor]; + [self addSubview:_lineMinutesBottom]; + + // Update ScrollView Data + [self buildSelectorLabelsMinutes]; + + UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestureMinutesCaptured:)]; + singleTap.numberOfTapsRequired = 1; + singleTap.numberOfTouchesRequired = 1; + [_scrollViewMinutes addGestureRecognizer:singleTap]; +} + +- (void)buildSelectorLabelsMinutes { + + CGFloat offsetContentScrollView = (_scrollViewMinutes.frame.size.height - kHooDatePickerScrollViewItemHeight) / 2.0; + + if (_labelsMinutes && _labelsMinutes.count > 0) { + for (UILabel *label in _labelsMinutes) { + [label removeFromSuperview]; + } + } + + _labelsMinutes = [[NSMutableArray alloc] init]; + + for (int i = 0; i < self.minutes.count; i++) { + + NSString *minute = (NSString*)[self.minutes safeObjectAtIndex1:i]; + + UILabel *labelMinute = [[UILabel alloc] initWithFrame:CGRectMake(0, (i * kHooDatePickerScrollViewItemHeight) + offsetContentScrollView, _scrollViewMinutes.frame.size.width, kHooDatePickerScrollViewItemHeight)]; + labelMinute.text = minute; + labelMinute.font = kHooDatePickerLabelFont; + labelMinute.textAlignment = NSTextAlignmentCenter; + labelMinute.textColor = self.tintColor; + labelMinute.backgroundColor = [UIColor clearColor]; + + [_labelsMinutes addObject:labelMinute]; + [_scrollViewMinutes addSubview:labelMinute]; + } + + _scrollViewMinutes.contentSize = CGSizeMake(_scrollViewMinutes.frame.size.width, (kHooDatePickerScrollViewItemHeight * self.minutes.count) + (offsetContentScrollView * 2)); +} + +- (void)removeSelectorMinutes { + + if (_scrollViewMinutes) { + [_scrollViewMinutes removeFromSuperview]; + _scrollViewMinutes = nil; + } + if (_lineMinutesTop) { + [_lineMinutesTop removeFromSuperview]; + _lineMinutesTop = nil; + } + if (_lineMinutesBottom) { + [_lineMinutesBottom removeFromSuperview]; + _lineMinutesBottom = nil; + } +} + +#pragma mark - Build Selector Seconds + +- (void)buildSelectorSecondsOffsetX:(CGFloat)x andWidth:(CGFloat)width { + + // ScrollView Seconds : + _scrollViewSeconds = [[UIScrollView alloc] initWithFrame:CGRectMake(x, self.kHooDatePickerHeaderHeight + kHooDatePickerHeaderBottomMargin, width, self.frame.size.height - self.kHooDatePickerHeaderHeight - kHooDatePickerHeaderBottomMargin)]; + _scrollViewSeconds.tag = ScrollViewTagValue_SECONDS; + _scrollViewSeconds.delegate = self; + _scrollViewSeconds.backgroundColor = [UIColor whiteColor]; + _scrollViewSeconds.showsHorizontalScrollIndicator = NO; + _scrollViewSeconds.showsVerticalScrollIndicator = NO; + [self addSubview:_scrollViewSeconds]; + + _lineSecondsTop = [[UIView alloc] initWithFrame:CGRectMake(_scrollViewSeconds.frame.origin.x + kHooDatePickerLineMargin, _scrollViewSeconds.frame.origin.y + (_scrollViewSeconds.frame.size.height / 2) - (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; + _lineSecondsTop.backgroundColor = [UIColor clearColor]; + [self addSubview:_lineSecondsTop]; + + _lineSecondsBottom = [[UIView alloc] initWithFrame:CGRectMake(_scrollViewSeconds.frame.origin.x + kHooDatePickerLineMargin, _scrollViewSeconds.frame.origin.y + (_scrollViewSeconds.frame.size.height / 2) + (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; + _lineSecondsBottom.backgroundColor = [UIColor clearColor]; + [self addSubview:_lineSecondsBottom]; + + // Update ScrollView Data + [self buildSelectorLabelsSeconds]; + + UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestureSecondsCaptured:)]; + singleTap.numberOfTapsRequired = 1; + singleTap.numberOfTouchesRequired = 1; + [_scrollViewSeconds addGestureRecognizer:singleTap]; +} + +- (void)buildSelectorLabelsSeconds { + + CGFloat offsetContentScrollView = (_scrollViewSeconds.frame.size.height - kHooDatePickerScrollViewItemHeight) / 2.0; + + if (_labelsSeconds && _labelsSeconds.count > 0) { + for (UILabel *label in _labelsSeconds) { + [label removeFromSuperview]; + } + } + + _labelsSeconds = [[NSMutableArray alloc] init]; + + for (int i = 0; i < self.seconds.count; i++) { + + NSString *second = (NSString*)[self.seconds safeObjectAtIndex1:i]; + + UILabel *labelSecond = [[UILabel alloc] initWithFrame:CGRectMake(0, (i * kHooDatePickerScrollViewItemHeight) + offsetContentScrollView, _scrollViewSeconds.frame.size.width, kHooDatePickerScrollViewItemHeight)]; + labelSecond.text = second; + labelSecond.font = kHooDatePickerLabelFont; + labelSecond.textAlignment = NSTextAlignmentCenter; + labelSecond.textColor = self.tintColor; + labelSecond.backgroundColor = [UIColor clearColor]; + + [_labelsSeconds addObject:labelSecond]; + [_scrollViewSeconds addSubview:labelSecond]; + } + + _scrollViewSeconds.contentSize = CGSizeMake(_scrollViewSeconds.frame.size.width, (kHooDatePickerScrollViewItemHeight * self.seconds.count) + (offsetContentScrollView * 2)); +} + +- (void)removeSelectorSeconds { + + if (_scrollViewSeconds) { + [_scrollViewSeconds removeFromSuperview]; + _scrollViewSeconds = nil; + } + if (_lineSecondsTop) { + [_lineSecondsTop removeFromSuperview]; + _lineSecondsTop = nil; + } + if (_lineSecondsBottom) { + [_lineSecondsBottom removeFromSuperview]; + _lineSecondsBottom = nil; + } +} + +#pragma mark - Actions + +- (void)actionButtonCancel:(UIButton *)sender { + + [self dismiss]; + + if ([self.delegate respondsToSelector:@selector(datePicker:didCancel:)]) { + [self.delegate datePicker:self didCancel:sender]; + } +} + +- (void)actionButtonValid:(UIButton *)sender { + + [self dismiss]; + + if ([self.delegate respondsToSelector:@selector(datePicker:didSelectedDate:)]) { + [self.delegate datePicker:self didSelectedDate:[self getDate]]; + } +} + +#pragma mark - Show and Dismiss +-(void)showView{ + if (!_superView) return; + + if (self.hidden == YES) { + self.hidden = NO; + } + + if (_isInitialized == NO) { + self.frame = CGRectMake(self.frame.origin.x, _superView.frame.size.height, self.frame.size.width, self.frame.size.height); + _isInitialized = YES; + } + + [self.superView insertSubview:self.dimBackgroundView belowSubview:self]; + + if (self.datePickerMode == HooDatePickerModeDate || self.datePickerMode == HooDatePickerModeDateAndTime) { + + int indexDays = [self getIndexForScrollViewPosition:_scrollViewDays]; + [self highlightLabelInArray:_labelsDays atIndex:indexDays]; + + int indexMonths = [self getIndexForScrollViewPosition:_scrollViewMonths]; + [self highlightLabelInArray:_labelsMonths atIndex:indexMonths]; + + int indexYears = [self getIndexForScrollViewPosition:_scrollViewYears]; + [self highlightLabelInArray:_labelsYears atIndex:indexYears]; + } + + if (self.datePickerMode == HooDatePickerModeTime || self.datePickerMode == HooDatePickerModeDateAndTime) { + + int indexHours = [self getIndexForScrollViewPosition:_scrollViewHours]; + [self highlightLabelInArray:_labelsHours atIndex:indexHours]; + + int indexMinutes = [self getIndexForScrollViewPosition:_scrollViewMinutes]; + [self highlightLabelInArray:_labelsMinutes atIndex:indexMinutes]; + + int indexSeconds = [self getIndexForScrollViewPosition:_scrollViewSeconds]; + [self highlightLabelInArray:_labelsSeconds atIndex:indexSeconds]; + } + + if (self.datePickerMode == HooDatePickerModeYearAndMonth) { + int indexMonths = [self getIndexForScrollViewPosition:_scrollViewMonths]; + [self highlightLabelInArray:_labelsMonths atIndex:indexMonths]; + + int indexYears = [self getIndexForScrollViewPosition:_scrollViewYears]; + [self highlightLabelInArray:_labelsYears atIndex:indexYears]; + } + self.frame = CGRectMake(self.frame.origin.x, 139, self.frame.size.width, 216); + _isOpen = YES; + [self.dimBackgroundView removeFromSuperview]; + self.dimBackgroundView = nil; +} +-(void)show { + + if (!_superView) return; + + if (self.hidden == YES) { + self.hidden = NO; + } + + if (_isInitialized == NO) { + self.frame = CGRectMake(self.frame.origin.x, _superView.frame.size.height, self.frame.size.width, self.frame.size.height); + _isInitialized = YES; + } + + [self.superView insertSubview:self.dimBackgroundView belowSubview:self]; + + if (self.datePickerMode == HooDatePickerModeDate || self.datePickerMode == HooDatePickerModeDateAndTime) { + + int indexDays = [self getIndexForScrollViewPosition:_scrollViewDays]; + [self highlightLabelInArray:_labelsDays atIndex:indexDays]; + + int indexMonths = [self getIndexForScrollViewPosition:_scrollViewMonths]; + [self highlightLabelInArray:_labelsMonths atIndex:indexMonths]; + + int indexYears = [self getIndexForScrollViewPosition:_scrollViewYears]; + [self highlightLabelInArray:_labelsYears atIndex:indexYears]; + } + + if (self.datePickerMode == HooDatePickerModeTime || self.datePickerMode == HooDatePickerModeDateAndTime) { + + int indexHours = [self getIndexForScrollViewPosition:_scrollViewHours]; + [self highlightLabelInArray:_labelsHours atIndex:indexHours]; + + int indexMinutes = [self getIndexForScrollViewPosition:_scrollViewMinutes]; + [self highlightLabelInArray:_labelsMinutes atIndex:indexMinutes]; + + int indexSeconds = [self getIndexForScrollViewPosition:_scrollViewSeconds]; + [self highlightLabelInArray:_labelsSeconds atIndex:indexSeconds]; + } + + if (self.datePickerMode == HooDatePickerModeYearAndMonth) { + int indexMonths = [self getIndexForScrollViewPosition:_scrollViewMonths]; + [self highlightLabelInArray:_labelsMonths atIndex:indexMonths]; + + int indexYears = [self getIndexForScrollViewPosition:_scrollViewYears]; + [self highlightLabelInArray:_labelsYears atIndex:indexYears]; + } + + [UIView animateWithDuration:kHooDatePickerAnimationDuration delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ + self.frame = CGRectMake(self.frame.origin.x, _superView.frame.size.height - kHooDatePickerHeight, self.frame.size.width, self.frame.size.height); + } completion:^(BOOL finished) { + _isOpen = YES; + + }]; +} + +-(void)dismiss { + + if (!_superView) return; + [UIView animateWithDuration:kHooDatePickerAnimationDuration delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ + self.frame = CGRectMake(self.frame.origin.x, _superView.frame.size.height, self.frame.size.width, self.frame.size.height); + self.dimBackgroundView.alpha = 0.0; + } completion:^(BOOL finished) { + _isOpen = NO; + [self.dimBackgroundView removeFromSuperview]; + self.dimBackgroundView = nil; + }]; +} + +#pragma mark - DatePicker Mode + +- (void)setDatePickerMode:(HooDatePickerMode)mode { + _datePickerMode = mode; + [self setupControl]; +} + +#pragma mark - Collections + +- (NSMutableArray*)getYears { + + NSMutableArray *years = [[NSMutableArray alloc] init]; + + NSInteger yearMin = 0; + + if (self.minimumDate) { + NSDateComponents* componentsMin = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:self.minimumDate]; + yearMin = [componentsMin year]; + } else { + yearMin = _minYear; + } + + NSInteger yearMax = 0; + NSDateComponents* componentsMax = nil; + + if (self.maximumDate) { + componentsMax = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:self.maximumDate]; + yearMax = [componentsMax year]; + } else { + componentsMax = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:[NSDate date]]; + yearMax = [componentsMax year]; + } + + for (NSInteger i = yearMin; i <= yearMax; i++) { + + [years addObject:[NSString stringWithFormat:@"%ld\u5e74", (long)i]]; + } + + return years; +} + +- (NSMutableArray*)getDates { + NSMutableArray *dates = [[NSMutableArray alloc] init]; + + if (self.minimumDate && self.maximumDate) { + NSInteger days = [self.minimumDate daysBetween:self.maximumDate]; + for (NSInteger i = 0; i < days; i++) { + NSDate *date = [self.minimumDate dateByAddingDays:i]; + if ([date daysBetween: self.maximumDate] >= 0) { + [dates addObject:date]; + } + } + } else { + + NSDateComponents* currentComponents = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:[NSDate date]]; + NSInteger currentYear = [currentComponents year]; + + NSDateComponents *dateComponents = [[NSDateComponents alloc] init]; + [dateComponents setCalendar:self.calendar]; + [dateComponents setTimeZone:self.timeZone]; + [dateComponents setDay:1]; + [dateComponents setMonth:1]; + [dateComponents setHour:0]; + [dateComponents setMinute:0]; + [dateComponents setSecond:0]; + [dateComponents setYear:currentYear]; + + NSDateComponents *maxComponents = [[NSDateComponents alloc] init]; + [maxComponents setCalendar:self.calendar]; + [maxComponents setTimeZone:self.timeZone]; + [maxComponents setDay:1]; + [maxComponents setMonth:1]; + [maxComponents setHour:0]; + [maxComponents setMinute:0]; + [maxComponents setSecond:0]; + [maxComponents setYear:currentYear + 1]; + + NSDate *yearMin = [dateComponents date]; + NSDate *yearMax = [maxComponents date]; + + NSInteger timestampMin = [yearMin timeIntervalSince1970]; + NSInteger timestampMax = [yearMax timeIntervalSince1970]; + + while (timestampMin < timestampMax) { + + NSDate *date = [NSDate dateWithTimeIntervalSince1970:timestampMin]; + + [dates addObject:date]; + + timestampMin += 1 * 24 * 60 * 60; + } + } + + return dates; +} + +- (NSMutableArray*)getDaysInMonth:(NSDate*)date { + + if (date == nil) date = [NSDate date]; + + NSRange daysRange = [self.calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:date]; + + NSMutableArray *days = [[NSMutableArray alloc] init]; + + for (int i = 1; i <= daysRange.length; i++) { + + [days addObject:[NSString stringWithFormat:@"%d%@", i, YMLocalizedString(@"App_Commont_Day")]]; + } + + return days; +} + +#pragma mark - UIScrollView Delegate + +- (void)singleTapGestureDaysCaptured:(UITapGestureRecognizer *)gesture { + + CGPoint touchPoint = [gesture locationInView:self]; + CGFloat touchY = touchPoint.y; + + if (touchY < (_lineDaysTop.frame.origin.y)) { + + if (_selectedDay > 1) { + _selectedDay -= 1; + [self setScrollView:_scrollViewDays atIndex:(_selectedDay - 1) animated:YES]; + } + + } else if (touchY > (_lineDaysBottom.frame.origin.y)) { + + if (_selectedDay < _days.count) { + _selectedDay += 1; + [self setScrollView:_scrollViewDays atIndex:(_selectedDay - 1) animated:YES]; + } + } +} + +- (void)singleTapGestureMonthsCaptured:(UITapGestureRecognizer *)gesture { + + CGPoint touchPoint = [gesture locationInView:self]; + CGFloat touchY = touchPoint.y; + + if (touchY < (_lineMonthsTop.frame.origin.y)) { + + if (_selectedMonth > 1) { + _selectedMonth -= 1; + [self setScrollView:_scrollViewMonths atIndex:(_selectedMonth - 1) animated:YES]; + } + + } else if (touchY > (_lineMonthsBottom.frame.origin.y)) { + + if (_selectedMonth < self.months.count) { + _selectedMonth += 1; + [self setScrollView:_scrollViewMonths atIndex:(_selectedMonth - 1) animated:YES]; + } + } +} + +- (void)singleTapGestureYearsCaptured:(UITapGestureRecognizer *)gesture { + + CGPoint touchPoint = [gesture locationInView:self]; + CGFloat touchY = touchPoint.y; + + NSInteger minYear = _minYear; + + if (touchY < (_lineYearsTop.frame.origin.y)) { + + if (_selectedYear > minYear) { + _selectedYear -= 1; + [self setScrollView:_scrollViewYears atIndex:(_selectedYear - minYear) animated:YES]; + } + + } else if (touchY > (_lineYearsBottom.frame.origin.y)) { + + if (_selectedYear < (_years.count + (minYear - 1))) { + _selectedYear += 1; + [self setScrollView:_scrollViewYears atIndex:(_selectedYear - minYear) animated:YES]; + } + } +} + + +- (void)singleTapGestureDatesCaptured:(UITapGestureRecognizer *)gesture { + + CGPoint touchPoint = [gesture locationInView:self]; + CGFloat touchY = touchPoint.y; + + if (touchY < (_lineDatesTop.frame.origin.y)) { + + if (_selectedDate > 0) { + _selectedDate -= 1; + [self setScrollView:_scrollViewDates atIndex:_selectedDate animated:YES]; + } + + } else if (touchY > (_lineDatesBottom.frame.origin.y)) { + + if (_selectedDate < _dates.count - 1) { + _selectedDate += 1; + [self setScrollView:_scrollViewDates atIndex:_selectedDate animated:YES]; + } + } +} + +- (void)singleTapGestureHoursCaptured:(UITapGestureRecognizer *)gesture { + + CGPoint touchPoint = [gesture locationInView:self]; + CGFloat touchY = touchPoint.y; + + if (touchY < (_lineHoursTop.frame.origin.y)) { + + if (_selectedHour > 0) { + _selectedHour -= 1; + [self setScrollView:_scrollViewHours atIndex:_selectedHour animated:YES]; + } + + } else if (touchY > (_lineHoursBottom.frame.origin.y)) { + + if (_selectedHour < self.hours.count - 1) { + _selectedHour += 1; + [self setScrollView:_scrollViewHours atIndex:_selectedHour animated:YES]; + } + } +} + +- (void)singleTapGestureMinutesCaptured:(UITapGestureRecognizer *)gesture { + + CGPoint touchPoint = [gesture locationInView:self]; + CGFloat touchY = touchPoint.y; + + if (touchY < (_lineMinutesTop.frame.origin.y)) { + + if (_selectedMinute > 0) { + _selectedMinute -= 1; + [self setScrollView:_scrollViewMinutes atIndex:_selectedMinute animated:YES]; + } + + } else if (touchY > (_lineMinutesBottom.frame.origin.y)) { + + if (_selectedMinute < self.minutes.count - 1) { + _selectedMinute += 1; + [self setScrollView:_scrollViewMinutes atIndex:_selectedMinute animated:YES]; + } + } +} + +- (void)singleTapGestureSecondsCaptured:(UITapGestureRecognizer *)gesture { + + CGPoint touchPoint = [gesture locationInView:self]; + CGFloat touchY = touchPoint.y; + + if (touchY < (_lineSecondsTop.frame.origin.y)) { + + if (_selectedSecond > 0) { + _selectedSecond -= 1; + [self setScrollView:_scrollViewSeconds atIndex:_selectedSecond animated:YES]; + } + + } else if (touchY > (_lineSecondsBottom.frame.origin.y)) { + + if (_selectedSecond < self.seconds.count - 1) { + _selectedSecond += 1; + [self setScrollView:_scrollViewSeconds atIndex:_selectedSecond animated:YES]; + } + } +} + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + + int index = [self getIndexForScrollViewPosition:scrollView]; + + [self updateSelectedDateAtIndex:index forScrollView:scrollView]; + + if (scrollView.tag == ScrollViewTagValue_DAYS) { + [self highlightLabelInArray:_labelsDays atIndex:index]; + } else if (scrollView.tag == ScrollViewTagValue_MONTHS) { + [self highlightLabelInArray:_labelsMonths atIndex:index]; + } else if (scrollView.tag == ScrollViewTagValue_YEARS) { + [self highlightLabelInArray:_labelsYears atIndex:index]; + } else if (scrollView.tag == ScrollViewTagValue_HOURS) { + [self highlightLabelInArray:_labelsHours atIndex:index]; + } else if (scrollView.tag == ScrollViewTagValue_MINUTES) { + [self highlightLabelInArray:_labelsMinutes atIndex:index]; + } else if (scrollView.tag == ScrollViewTagValue_SECONDS) { + [self highlightLabelInArray:_labelsSeconds atIndex:index]; + } else if (scrollView.tag == ScrollViewTagValue_DATES) { + [self highlightLabelInArray:_labelsDates atIndex:index]; + } +} + +- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { + + int index = [self getIndexForScrollViewPosition:scrollView]; + + [self updateSelectedDateAtIndex:index forScrollView:scrollView]; + + [self setScrollView:scrollView atIndex:index animated:YES]; + + NSDate *selectedDate = [self getDate]; + if (self.datePickerMode != HooDatePickerModeDateAndTime && self.datePickerMode != HooDatePickerModeTime) { + if ([selectedDate compare:self.minimumDate] == NSOrderedAscending) { + [self setDate:self.minimumDate animated:YES]; + } + + if ([selectedDate compare:self.maximumDate] == NSOrderedDescending) { + [self setDate:self.maximumDate animated:YES]; + } + } + if ([self.delegate respondsToSelector:@selector(datePicker:dateDidChange:)]) { + [self.delegate datePicker:self dateDidChange:selectedDate]; + } +} + +- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { + + int index = [self getIndexForScrollViewPosition:scrollView]; + + [self updateSelectedDateAtIndex:index forScrollView:scrollView]; + + [self setScrollView:scrollView atIndex:index animated:YES]; + + NSDate *selectedDate = [self getDate]; + if (self.datePickerMode != HooDatePickerModeDateAndTime && self.datePickerMode != HooDatePickerModeTime) { + if ([selectedDate compare:self.minimumDate] == NSOrderedAscending) { + [self setDate:self.minimumDate animated:YES]; + return; + } + + if ([selectedDate compare:self.maximumDate] == NSOrderedDescending) { + [self setDate:self.maximumDate animated:YES]; + return; + } + } + + if ([self.delegate respondsToSelector:@selector(datePicker:dateDidChange:)]) { + [self.delegate datePicker:self dateDidChange:selectedDate]; + } +} + +- (void)updateSelectedDateAtIndex:(int)index forScrollView:(UIScrollView*)scrollView { + + if (scrollView.tag == ScrollViewTagValue_DAYS) { + _selectedDay = index + 1; // 1 to 31 + } else if (scrollView.tag == ScrollViewTagValue_MONTHS) { + + _selectedMonth = index + 1; // 1 to 12 + + // Updates days : + [self updateNumberOfDays]; + + } else if (scrollView.tag == ScrollViewTagValue_YEARS) { + + _selectedYear = _minYear + index; + + // Updates days : + [self updateNumberOfDays]; + + } else if (scrollView.tag == ScrollViewTagValue_HOURS) { + _selectedHour = index; // 0 to 23 + } else if (scrollView.tag == ScrollViewTagValue_MINUTES) { + _selectedMinute = index; // 0 to 59 + } else if (scrollView.tag == ScrollViewTagValue_SECONDS) { + _selectedSecond = index; // 0 to 59 + } else if (scrollView.tag == ScrollViewTagValue_DATES) { + _selectedDate = index; + } +} + +- (void)updateNumberOfDays { + + // Updates days : + NSDate *date = [self convertToDateDay:1 month:_selectedMonth year:_selectedYear hours:_selectedHour minutes:_selectedMinute seconds:_selectedSecond]; + + if (!date) return; + + NSMutableArray *newDays = [self getDaysInMonth:date]; + + if (newDays.count != _days.count) { + + _days = newDays; + + [self buildSelectorLabelsDays]; + + if (_selectedDay > _days.count) { + _selectedDay = _days.count; + } + + [self highlightLabelInArray:_labelsDays atIndex:_selectedDay - 1]; + } +} + +- (int)getIndexForScrollViewPosition:(UIScrollView *)scrollView { + + CGFloat offsetContentScrollView = (scrollView.frame.size.height - kHooDatePickerScrollViewItemHeight) / 2.0; + CGFloat offetY = scrollView.contentOffset.y; + CGFloat index = floorf((offetY + offsetContentScrollView) / kHooDatePickerScrollViewItemHeight); + index = (index - 1); + return index; +} + +- (void)setScrollView:(UIScrollView*)scrollView atIndex:(NSInteger)index animated:(BOOL)animated { + + if (!scrollView) return; + + if (animated) { + [UIView beginAnimations:@"ScrollViewAnimation" context:nil]; + [UIView setAnimationDelegate:self]; + [UIView setAnimationDuration:kHooDatePickerAnimationDuration]; + [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; + } + + scrollView.contentOffset = CGPointMake(0.0, (index * kHooDatePickerScrollViewItemHeight)); + + if (animated) { + [UIView commitAnimations]; + } + + if (self.delegate != nil && [self.delegate respondsToSelector:@selector(datePicker:dateDidChange:)]) { + [self.delegate datePicker:self dateDidChange:[self getDate]]; + } +} + +- (void)highlightLabelInArray:(NSMutableArray*)labels atIndex:(NSInteger)index { + if (!labels) return; + if (index > labels.count) return; + if (index < 0) return; + + for (int i = 0; i < labels.count; i++) { + UILabel *label = (UILabel *)[labels safeObjectAtIndex1:i]; + if (i != index) { + label.textColor = self.tintColor; + label.font = kHooDatePickerLabelFont; + } else { + label.textColor = self.highlightColor; + label.font = kHooDatePickerLabelSelectedFont; + } + } +} + +#pragma mark - Date + +- (void) setDate:(NSDate *)date animated:(BOOL)animated { + + if (!date) return; + NSDateComponents* components = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond fromDate:date]; + + _selectedDay = [components day]; + _selectedMonth = [components month]; + _selectedYear = [components year]; + _selectedHour = [components hour]; + /** + * only show mininute 00 10 20 ~ 50 in hotel tour edit order for flight pick up + */ + if (self.datePickerMode != HooDatePickerModeDateAndTime) { + _selectedMinute = [components minute]; + } + _selectedSecond = [components second]; + + if (self.datePickerMode == HooDatePickerModeDateAndTime) { + if (self.minimumDate) { + [self setScrollView:_scrollViewDates atIndex:[date daysBetween:self.minimumDate] - 1 animated:animated]; + } else { + [self setScrollView:_scrollViewDates atIndex:(_selectedDay - 1) animated:animated]; + } + + } + + if (self.datePickerMode == HooDatePickerModeDate) { + [self setScrollView:_scrollViewYears atIndex:(_selectedYear - _minYear) animated:animated]; + [self setScrollView:_scrollViewMonths atIndex:(_selectedMonth - 1) animated:animated]; + [self setScrollView:_scrollViewDays atIndex:(_selectedDay - 1) animated:animated]; + + + } + + if (self.datePickerMode == HooDatePickerModeTime || self.datePickerMode == HooDatePickerModeDateAndTime) { + [self setScrollView:_scrollViewHours atIndex:_selectedHour animated:animated]; + [self setScrollView:_scrollViewMinutes atIndex:_selectedMinute animated:animated]; + [self setScrollView:_scrollViewSeconds atIndex:_selectedSecond animated:animated]; + } + + if (self.datePickerMode == HooDatePickerModeYearAndMonth) { + [self setScrollView:_scrollViewMonths atIndex:(_selectedMonth - 1) animated:animated]; + [self setScrollView:_scrollViewYears atIndex:(_selectedYear - _minYear) animated:animated]; + } + + if (self.delegate != nil && [self.delegate respondsToSelector:@selector(datePicker:dateDidChange:)]) { + [self.delegate datePicker:self dateDidChange:[self getDate]]; + } +} + +- (NSDate*)convertToDateDay:(NSInteger)day month:(NSInteger)month year:(NSInteger)year hours:(NSInteger)hours minutes:(NSInteger)minutes seconds:(NSInteger)seconds { + + NSMutableString *dateString = [[NSMutableString alloc] init]; + + NSDateFormatter *dateFormatter = self.dateFormatter; + if (self.timeZone) [dateFormatter setTimeZone:self.timeZone]; + [dateFormatter setLocale:self.locale]; + + // Date Mode : + if (self.datePickerMode == HooDatePickerModeDate) { + + if (day < 10) { + [dateString appendFormat:@"0%ld-", (long)day]; + } else { + [dateString appendFormat:@"%ld-", (long)day]; + } + + if (month < 10) { + [dateString appendFormat:@"0%ld-", (long)month]; + } else { + [dateString appendFormat:@"%ld-", (long)month]; + } + + [dateString appendFormat:@"%ld", (long)year]; + + [dateFormatter setDateFormat:@"dd-MM-yyyy"]; + } + + // Time Mode : + if (self.datePickerMode == HooDatePickerModeTime) { + + NSDateComponents* components = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:[NSDate date]]; + + NSInteger nowDay = [components day]; + NSInteger nowMonth = [components month]; + NSInteger nowYear = [components year]; + + if (nowDay < 10) { + [dateString appendFormat:@"0%ld-", (long)nowDay]; + } else { + [dateString appendFormat:@"%ld-", (long)nowDay]; + } + + if (nowMonth < 10) { + [dateString appendFormat:@"0%ld-", (long)nowMonth]; + } else { + [dateString appendFormat:@"%ld-", (long)nowMonth]; + } + + [dateString appendFormat:@"%ld", (long)nowYear]; + + if (hours < 10) { + [dateString appendFormat:@" 0%ld:", (long)hours]; + } else { + [dateString appendFormat:@" %ld:", (long)hours]; + } + + if (minutes < 10) { + [dateString appendFormat:@"0%ld:", (long)minutes]; + } else { + [dateString appendFormat:@"%ld:", (long)minutes]; + } + + if (seconds < 10) { + [dateString appendFormat:@"0%ld", (long)seconds]; + } else { + [dateString appendFormat:@"%ld", (long)seconds]; + } + + [dateFormatter setDateFormat:@"dd-MM-yyyy HH:mm:ss"]; + } + + // Date and Time Mode : + if (self.datePickerMode == HooDatePickerModeDateAndTime) { + + if (day < 10) { + [dateString appendFormat:@"0%ld-", (long)day]; + } else { + [dateString appendFormat:@"%ld-", (long)day]; + } + + if (month < 10) { + [dateString appendFormat:@"0%ld-", (long)month]; + } else { + [dateString appendFormat:@"%ld-", (long)month]; + } + + [dateString appendFormat:@"%ld", (long)year]; + + if (hours < 10) { + [dateString appendFormat:@" 0%ld:", (long)hours]; + } else { + [dateString appendFormat:@" %ld:", (long)hours]; + } + + if (minutes < 10) { + [dateString appendFormat:@"0%ld:", (long)minutes]; + } else { + [dateString appendFormat:@"%ld:", (long)minutes]; + } + + [dateString appendString:@"00"]; + + [dateFormatter setDateFormat:@"dd-MM-yyyy HH:mm:ss"]; + } + + if (self.datePickerMode == HooDatePickerModeYearAndMonth) { + + if (month < 10) { + [dateString appendFormat:@"0%ld-", (long)month]; + } else { + [dateString appendFormat:@"%ld-", (long)month]; + } + + [dateString appendFormat:@"%ld", (long)year]; + + [dateFormatter setDateFormat:@"MM-yyyy"]; + } + + return [dateFormatter dateFromString:dateString]; +} + +- (NSDate*)convertToDate:(NSInteger)days hours:(NSInteger)hours minutes:(NSInteger)minutes seconds:(NSInteger)seconds { + + NSDate *date = [self.minimumDate dateByAddingDays:days]; + + NSMutableString *dateString = [[NSMutableString alloc] initWithString:[date stringForFormat:@"dd-MM-yyyy"]]; + + NSDateFormatter *dateFormatter = self.dateFormatter; + if (self.timeZone) [dateFormatter setTimeZone:self.timeZone]; + [dateFormatter setLocale:self.locale]; + + + if (hours < 10) { + [dateString appendFormat:@" 0%ld:", (long)hours]; + } else { + [dateString appendFormat:@" %ld:", (long)hours]; + } + /** + * only show mininute 00 10 20 ~ 50 in hotel tour edit order for flight pick up + */ + + if (!minutes) { + [dateString appendFormat:@"0%ld:", (long)minutes]; + } else { + [dateString appendFormat:@"%ld:", (long)minutes * 10]; + } + + [dateString appendString:@"00"]; + + [dateFormatter setDateFormat:@"dd-MM-yyyy HH:mm:ss"]; + return [dateFormatter dateFromString:dateString]; +} + +- (NSDate*)getDate { + if (self.datePickerMode == HooDatePickerModeDateAndTime) { + return [self convertToDate:_selectedDate hours:_selectedHour minutes:_selectedMinute seconds:_selectedSecond]; + } + return [self convertToDateDay:_selectedDay month:_selectedMonth year:_selectedYear hours:_selectedHour minutes:_selectedMinute seconds:_selectedSecond]; +} + + + +#pragma mark - Getters and Setters + +- (UIView *)dimBackgroundView { + if(!_dimBackgroundView) { + _dimBackgroundView = [[UIView alloc] initWithFrame:self.superView.bounds]; + [_dimBackgroundView setTranslatesAutoresizingMaskIntoConstraints:YES]; + _dimBackgroundView.backgroundColor = [UIColor clearColor]; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismiss)]; + [_dimBackgroundView addGestureRecognizer:tap]; + } + return _dimBackgroundView; +} + +- (UIView *)headerView { + if (!_headerView) { + _headerView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.frame.size.width, self.kHooDatePickerHeaderHeight)]; + // Button Cancel + UIButton *cancelButton = [[UIButton alloc] initWithFrame:CGRectMake(kHooDatePickerPadding, 0.0, kHooDatePickerButtonHeaderWidth, self.kHooDatePickerHeaderHeight)]; + [cancelButton setTitle:YMLocalizedString(@"XPGuildTimeMonthPickerView2") forState:UIControlStateNormal]; + [cancelButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + [cancelButton addTarget:self action:@selector(actionButtonCancel:) forControlEvents:UIControlEventTouchUpInside]; + cancelButton.titleLabel.font = [UIFont systemFontOfSize:14]; + [_headerView addSubview:cancelButton]; + + // Button confirm + UIButton *sureButton = [[UIButton alloc] initWithFrame:CGRectMake(self.frame.size.width - kHooDatePickerButtonHeaderWidth - kHooDatePickerPadding, 0.0, kHooDatePickerButtonHeaderWidth, self.kHooDatePickerHeaderHeight)]; + [sureButton setTitle:YMLocalizedString(@"XPGuildTimeMonthPickerView3") forState:UIControlStateNormal]; + [sureButton setTitleColor:[DJDKMIMOMColor appMainColor] forState:UIControlStateNormal]; + [sureButton addTarget:self action:@selector(actionButtonValid:) forControlEvents:UIControlEventTouchUpInside]; + sureButton.titleLabel.font = [UIFont systemFontOfSize:14]; + [_headerView addSubview:sureButton]; + } + return _headerView; +} + +- (NSDateFormatter *)dateFormatter { + if (!_dateFormatter) { + NSDateFormatter *dateFormatter = [NSDate shareDateFormatter]; + _dateFormatter = dateFormatter; + } + _dateFormatter.dateFormat = kDateFormatYYYYMMDD; + + return _dateFormatter; +} + +- (NSCalendar *)calendar { + if (!_calendar) { + _calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; + _calendar.timeZone = self.timeZone; + _calendar.locale = self.locale; + } + return _calendar; +} + +- (NSMutableArray *)months { + NSMutableArray *months = [[NSMutableArray alloc] init]; + for (int monthNumber = 1; monthNumber <= 12; monthNumber++) { + NSString *dateString = [NSString stringWithFormat: @"%d", monthNumber]; + NSDateFormatter* dateFormatter = self.dateFormatter; + if (self.timeZone) [dateFormatter setTimeZone:self.timeZone]; + [dateFormatter setLocale:self.locale]; + [dateFormatter setDateFormat:@"MM"]; + NSDate* myDate = [dateFormatter dateFromString:dateString]; + + NSDateFormatter *formatter = self.dateFormatter; + if (self.timeZone) [dateFormatter setTimeZone:self.timeZone]; + [dateFormatter setLocale:self.locale]; + [formatter setDateFormat:@"MMM"]; + NSString *stringFromDate = [formatter stringFromDate:myDate]; + + [months addObject:stringFromDate]; + } + _months = months; + return _months; +} + +- (NSMutableArray*)hours { + if (!_hours) { + NSMutableArray *hours = [[NSMutableArray alloc] init]; + + for (int i = 0; i < 24; i++) { + if (i < 10) { + [hours addObject:[NSString stringWithFormat:@"0%d%@", i, YMLocalizedString(@"App_Commont_Hour")]]; + } else { + [hours addObject:[NSString stringWithFormat:@"%d%@", i, YMLocalizedString(@"App_Commont_Hour")]]; + } + } + _hours = hours; + } + return _hours; +} + +- (NSMutableArray*)minutes { + if (!_minutes) { + NSMutableArray *minutes = [[NSMutableArray alloc] init]; + /** + * only show mininute 00 10 20 ~ 50 in hotel tour edit order for flight pick up + */ + for (int i = 0; i < 6; i++) { + if (!i) { + [minutes addObject:[NSString stringWithFormat:@"%d0%@", i, YMLocalizedString(@"App_Commont_Minute")]]; + } else { + [minutes addObject:[NSString stringWithFormat:@"%d%@", i * 10, YMLocalizedString(@"App_Commont_Minute")]]; + } + + } + _minutes = minutes; + } + return _minutes; +} + +- (NSMutableArray*)seconds { + if (!_seconds) { + + NSMutableArray *seconds = [[NSMutableArray alloc] init]; + + for (int i = 0; i < 60; i++) { + if (i < 10) { + [seconds addObject:[NSString stringWithFormat:@"0%d", i]]; + } else { + [seconds addObject:[NSString stringWithFormat:@"%d", i]]; + } + } + _seconds = seconds; + } + return _seconds; +} +- (NSTimeZone *)timeZone { + if (!_timeZone) { + _timeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"]; + } + return _timeZone; +} + +- (NSLocale *)locale { + if (!_locale) { + _locale = [NSLocale localeWithLocaleIdentifier:@"zh_CN"]; + } + return _locale; +} + +- (void)setTintColor:(UIColor *)tintColor { + _tintColor = tintColor; + [self setupControl]; +} + +- (void)setHighlightColor:(UIColor *)highlightColor { + _highlightColor = highlightColor; + [self setupControl]; +} + +- (void)setMinimumDate:(NSDate*)date { + _minimumDate = date; + NSDateComponents* componentsMin = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:_minimumDate]; + NSInteger yearMin = [componentsMin year]; + _minYear = yearMin; + [self setupControl]; +} + +- (void)setMaximumDate:(NSDate*)date { + _maximumDate = date; + [self setupControl]; +} +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildTimePickView.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildTimePickView.h new file mode 100644 index 00000000..c2fd2a29 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildTimePickView.h @@ -0,0 +1,40 @@ +// +// XPGuildTimePickView.h +// YuMi +// +// Created by YuMi on 2022/4/12. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSUInteger, XPGuildTimePickType) { + XPGuildTimePickTypeDay,///按日 + XPGuildTimePickTypeWeek,///按周 +}; + +@class XPGuildTimePickView; +@protocol XPGuildTimePickViewDelegate + +///点了确认按钮 +- (void)xPGuildTimePickView:(XPGuildTimePickView *)view didClickSure:(UIButton *)sender; +///点了取消按钮 +- (void)xPGuildTimePickView:(XPGuildTimePickView *)view didClickCancel:(UIButton *)sender; +@end + +@interface XPGuildTimePickView : UIView +///是否是选择两个日期 +@property (nonatomic, assign) XPGuildTimePickType pickDateType; +///代理 +@property (nonatomic,weak) id delegate; +///当前的时间 +@property (nonatomic,strong) NSDate *currentDate; +///开始的时间 +@property (nonatomic,strong, readonly) NSDate *startDate; +///结束的时间 +@property (nonatomic,strong, readonly) NSDate *endDate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildTimePickView.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildTimePickView.m new file mode 100644 index 00000000..24911ffe --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPGuildTimePickView.m @@ -0,0 +1,407 @@ +// +// XPGuildTimePickView.m +// YuMi +// +// Created by YuMi on 2022/4/12. +// + +#import "XPGuildTimePickView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" + +#import "XNDJTDDLoadingTool.h" + +@interface XPGuildTimePickView () +///背景 +@property (nonatomic, strong) UIImageView *bgImageView; +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///顶部的view +@property (nonatomic,strong) UIView * toolView; +///取消 +@property (nonatomic,strong) UIButton *cancleButton; +///确定 +@property (nonatomic,strong) UIButton *sureButton; +///时间间隔 +@property (nonatomic,strong) UIView * intervalView; +///开始时间 +@property (nonatomic,strong) UIButton *startButton; +///至 +@property (nonatomic,strong) UILabel *titleLabel; +///结束的时间 +@property (nonatomic,strong) UIButton *endButton; +///时间选择器 +@property (nonatomic, strong) UIDatePicker *datePicker; +///样式 +@property (nonatomic, strong) NSDateFormatter *dateFormatter; +/// +@property (nonatomic, strong) NSCalendar *calendar; +///开始的时间 +@property (nonatomic,strong) NSDate *startDate; +///结束的时间 +@property (nonatomic,strong) NSDate *endDate; +@end + +@implementation XPGuildTimePickView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.bgImageView]; + [self addSubview:self.stackView]; + [self.stackView addArrangedSubview:self.toolView]; + [self.stackView addArrangedSubview:self.intervalView]; + [self.stackView addArrangedSubview:self.datePicker]; + [self.toolView addSubview:self.cancleButton]; + [self.toolView addSubview:self.sureButton]; + + [self.intervalView addSubview:self.startButton]; + [self.intervalView addSubview:self.titleLabel]; + [self.intervalView addSubview:self.endButton]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth); + make.bottom.mas_equalTo(self.stackView); + }]; + + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self); + make.top.mas_equalTo(8); + }]; + + [self.toolView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(44); + }]; + + [self.intervalView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(30); + }]; + + [self.datePicker mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(220); + }]; + [self.cancleButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.toolView); + make.left.mas_equalTo(self.toolView).mas_offset(8); + make.height.mas_equalTo(30); + make.width.mas_equalTo(50); + }]; + [self.sureButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.toolView).mas_offset(-8); + make.width.height.centerY.mas_equalTo(self.cancleButton); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(40); + make.centerX.top.bottom.mas_equalTo(self.intervalView); + }]; + + [self.startButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.intervalView); + make.right.mas_equalTo(self.titleLabel.mas_left); + make.top.bottom.mas_equalTo(self.intervalView); + }]; + + [self.endButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.intervalView); + make.left.mas_equalTo(self.titleLabel.mas_right); + make.top.bottom.mas_equalTo(self.intervalView); + }]; +} + +- (void)weekDayWithCurrentDate:(NSDate *)date { + NSCalendar * calendar = [NSCalendar currentCalendar]; // 指定日历的算法 + NSDateComponents *comps = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitWeekday | NSCalendarUnitDay fromDate:date]; + // 获取今天是周几 + // 1 是周日,2是周一 3.以此类推 + NSInteger weekDay = [comps weekday]; + // 获取几天是几号 + NSInteger day = [comps day]; + long firstDiff,lastDiff; + if (weekDay == 1){ + firstDiff = -6; + lastDiff = 0; + } else { + firstDiff = -(weekDay - 2); + lastDiff = 8 - weekDay; + } + // 在当前日期(去掉时分秒)基础上加上差的天数 + NSDateComponents *baseDayComp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:date]; + //获取周一日期 + [baseDayComp setDay:day + firstDiff]; + NSDate *firstDayOfWeek = [calendar dateFromComponents:baseDayComp]; + self.startDate = firstDayOfWeek; + //获取周末日期 + [baseDayComp setDay:day + lastDiff]; + NSDate *lastDayOfWeek = [calendar dateFromComponents:baseDayComp]; + self.endDate = lastDayOfWeek; +} + +#pragma mark - Event +- (void)onClickCancelButton:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGuildTimePickView:didClickCancel:)]) { + [self.delegate xPGuildTimePickView:self didClickCancel:sender]; + } +} + +- (void)onClickSureButton:(UIButton *)sender { + if (self.pickDateType == XPGuildTimePickTypeWeek) { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGuildTimePickView:didClickSure:)]) { + [self.delegate xPGuildTimePickView:self didClickSure:sender]; + } + } else { + NSDateComponents *delta = [[NSCalendar currentCalendar] components:NSCalendarUnitDay fromDate:self.startDate toDate:self.endDate options:0]; + if ([self.startDate compare:[NSDate date]] == NSOrderedDescending) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPGuildTimePickView0")]; + return; + } else if ([self.endDate compare:[NSDate date]] == NSOrderedDescending) {//结束日期大于当前日期 + self.endDate = [NSDate date]; + } else if ([self.startDate compare:self.endDate] == NSOrderedDescending) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPGuildTimePickView1")]; + return; + } else if (delta.day > 180) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPGuildTimePickView2")]; + return; + } + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGuildTimePickView:didClickSure:)]) { + [self.delegate xPGuildTimePickView:self didClickSure:sender]; + } + } +} + +- (void)datePickerValueChange:(UIDatePicker *)datepick { + if (self.pickDateType == XPGuildTimePickTypeWeek) { + [self weekDayWithCurrentDate:datepick.date]; + NSString *startDateStr = [self.dateFormatter stringFromDate:self.startDate]; + NSString *endDateStr = [self.dateFormatter stringFromDate:self.endDate]; + [self.startButton setTitle:startDateStr forState:UIControlStateNormal]; + [self.endButton setTitle:endDateStr forState:UIControlStateNormal]; + } else { + NSString *dateStr = [self.dateFormatter stringFromDate:datepick.date]; + if (self.startButton.isSelected) {//修改开始日期 + self.startDate = datepick.date; + [self.startButton setTitle:dateStr forState:UIControlStateNormal]; + if ([self.startDate compare:self.endDate] == NSOrderedDescending) {//开始日期大于结束日期,修改结束日期 + self.endDate = datepick.date; + [self.endButton setTitle:dateStr forState:UIControlStateNormal]; + } + } else {//修改结束日期 + if ([self.startDate compare:datepick.date] == NSOrderedDescending) {//开始日期大于结束日期 + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPGuildTimePickView3")]; + dateStr = [self.dateFormatter stringFromDate:self.startDate]; + self.endDate = self.startDate; + [self.endButton setTitle:dateStr forState:UIControlStateNormal]; + self.datePicker.date = self.startDate; + } else { + self.endDate = datepick.date; + [self.endButton setTitle:dateStr forState:UIControlStateNormal]; + } + } + } +} + +- (void)onClickStartButton:(UIButton *)sender { + self.startButton.selected = YES; + self.endButton.selected = NO; + self.datePicker.date = self.startDate; + self.startButton.titleLabel.font = [UIFont systemFontOfSize:20 weight:UIFontWeightMedium]; + self.endButton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; +} + +- (void)onClickEndButton:(UIButton *)sender { + self.startButton.selected = NO; + self.endButton.selected = YES; + self.datePicker.date = self.endDate; + self.startButton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; + self.endButton.titleLabel.font = [UIFont systemFontOfSize:20 weight:UIFontWeightMedium]; +} + +#pragma mark - Getters And Setters +- (void)setCurrentDate:(NSDate *)currentDate { + _currentDate = currentDate; + if (_currentDate) { + NSDateComponents *comps = nil; comps = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitMonth fromDate:_currentDate]; + NSDateComponents *adcomps = [[NSDateComponents alloc] init]; + [adcomps setYear:-25]; + [adcomps setMonth:0]; + [adcomps setDay:0]; + NSDate *minDate = [self.calendar dateByAddingComponents:adcomps toDate:_currentDate options:0]; + + NSDateComponents *maxcomps = [[NSDateComponents alloc] init]; + [maxcomps setYear:25]; + [maxcomps setMonth:0]; + [maxcomps setDay:0]; + NSDate *maxDate = [self.calendar dateByAddingComponents:maxcomps toDate:_currentDate options:0]; + self.datePicker.minimumDate = minDate; + self.datePicker.maximumDate = maxDate; + self.datePicker.date = _currentDate; + } +} + +- (void)setPickDateType:(XPGuildTimePickType)pickDateType { + _pickDateType = pickDateType; + if (pickDateType == XPGuildTimePickTypeWeek) { + [self weekDayWithCurrentDate:_currentDate]; + NSString *startDateStr = [self.dateFormatter stringFromDate:self.startDate]; + NSString *endDateStr = [self.dateFormatter stringFromDate:self.endDate]; + [self.startButton setTitle:startDateStr forState:UIControlStateNormal]; + [self.endButton setTitle:endDateStr forState:UIControlStateNormal]; + self.startButton.userInteractionEnabled = NO; + self.endButton.userInteractionEnabled = NO; + } else{ + self.startButton.selected = YES; + NSString *dateStr = [self.dateFormatter stringFromDate:self.currentDate]; + [self.startButton setTitle:dateStr forState:UIControlStateNormal]; + [self.endButton setTitle:dateStr forState:UIControlStateNormal]; + [self.startButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateSelected]; + [self.startButton setTitleColor:[DJDKMIMOMColor textThirdColor] forState:UIControlStateNormal]; + self.startButton.titleLabel.font = [UIFont systemFontOfSize:20 weight:UIFontWeightMedium]; + [self.endButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateSelected]; + [self.endButton setTitleColor:[DJDKMIMOMColor textThirdColor] forState:UIControlStateNormal]; + self.endButton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; + self.startDate = _currentDate; + self.endDate = _currentDate; + } +} + + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 0; + } + return _stackView; +} + +- (UIView *)toolView { + if (!_toolView) { + _toolView = [[UIView alloc] init]; + _toolView.backgroundColor = [UIColor clearColor]; + } + return _toolView; +} + +- (UIView *)intervalView { + if (!_intervalView) { + _intervalView = [[UIView alloc] init]; + _intervalView.backgroundColor = [UIColor clearColor]; + } + return _intervalView; +} + + +- (UIButton *)cancleButton { + if (!_cancleButton) { + _cancleButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_cancleButton setTitle:YMLocalizedString(@"XPGuildTimePickView4") forState:UIControlStateNormal]; + [_cancleButton addTarget:self action:@selector(onClickCancelButton:) forControlEvents:UIControlEventTouchUpInside]; + _cancleButton.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + [_cancleButton setTitleColor:[DJDKMIMOMColor textThirdColor] forState:UIControlStateNormal]; + } + return _cancleButton; +} + +- (UIButton *)sureButton { + if (!_sureButton) { + _sureButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_sureButton setTitle:YMLocalizedString(@"XPGuildTimePickView5") forState:UIControlStateNormal]; + [_sureButton addTarget:self action:@selector(onClickSureButton:) forControlEvents:UIControlEventTouchUpInside]; + _sureButton.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + [_sureButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + } + return _sureButton; +} + +- (NSDateFormatter *)dateFormatter { + if (!_dateFormatter) { + _dateFormatter = [[NSDateFormatter alloc] init]; + _dateFormatter.dateFormat = @"YYYY-MM-dd"; + } + return _dateFormatter; +} + +- (UIDatePicker *)datePicker { + if (!_datePicker){ + _datePicker = [[UIDatePicker alloc] init]; + _datePicker.datePickerMode = UIDatePickerModeDate; + if (@available(iOS 13.4, *)) { + _datePicker.preferredDatePickerStyle = UIDatePickerStyleWheels; + } + if (@available(iOS 13.0, *)) { + _datePicker.overrideUserInterfaceStyle = UIUserInterfaceStyleLight; + } + [_datePicker addTarget:self action:@selector(datePickerValueChange:) forControlEvents:UIControlEventValueChanged]; + } + return _datePicker; +} + +- (UIButton *)startButton { + if (!_startButton) { + _startButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_startButton addTarget:self action:@selector(onClickStartButton:) forControlEvents:UIControlEventTouchUpInside]; + _startButton.titleLabel.font = [UIFont systemFontOfSize:14]; + [_startButton setTitleColor:[DJDKMIMOMColor textThirdColor] forState:UIControlStateNormal]; + [_startButton setTitleColor:[DJDKMIMOMColor appMainColor] forState:UIControlStateSelected]; + [_startButton.titleLabel sizeToFit]; + } + return _startButton; +} + +- (UIButton *)endButton { + if (!_endButton) { + _endButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_endButton addTarget:self action:@selector(onClickEndButton:) forControlEvents:UIControlEventTouchUpInside]; + _endButton.titleLabel.font = [UIFont systemFontOfSize:14]; + [_endButton setTitleColor:[DJDKMIMOMColor textThirdColor] forState:UIControlStateNormal]; + [_endButton setTitleColor:[DJDKMIMOMColor appMainColor] forState:UIControlStateSelected]; + _endButton.titleLabel.textAlignment = NSTextAlignmentRight; + } + return _endButton; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"App_Common_To"); + _titleLabel.font = [UIFont systemFontOfSize:15]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _titleLabel; +} + +- (NSCalendar *)calendar { + if (!_calendar) { + _calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; + } + return _calendar; +} + +- (UIImageView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[UIImageView alloc] init]; + _bgImageView.image = [UIImage imageNamed:@"mine_guild_income_datePicker_bg"]; + } + return _bgImageView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPMineGiveDiamondSearchView.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPMineGiveDiamondSearchView.h new file mode 100644 index 00000000..0ab846a9 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPMineGiveDiamondSearchView.h @@ -0,0 +1,17 @@ +// +// XPMineGiveDiamondSearchView.h +// YuMi +// +// Created by YuMi on 2023/6/30. +// + +#import +#import "XPMineGiveDiamondProtocol.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineGiveDiamondSearchView : UIView +@property (nonatomic,assign) BOOL isSearchHall; +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPMineGiveDiamondSearchView.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPMineGiveDiamondSearchView.m new file mode 100644 index 00000000..abc9b690 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPMineGiveDiamondSearchView.m @@ -0,0 +1,105 @@ +// +// XPMineGiveDiamondSearchView.m +// YuMi +// +// Created by YuMi on 2023/6/30. +// + +#import "XPMineGiveDiamondSearchView.h" +@interface XPMineGiveDiamondSearchView() +///背景 +@property (nonatomic,strong)UIImageView *bgView; +///搜索输入 +@property (nonatomic,strong) UITextField *textField; +///搜索btn +@property (nonatomic,strong) UIButton *searchBtn; + +@end +@implementation XPMineGiveDiamondSearchView + +-(instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if(self){ + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + [self addSubview:self.bgView]; + [self.bgView addSubview:self.textField]; + [self.bgView addSubview:self.searchBtn]; +} +- (void)initSubViewConstraints { + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(15)); + make.right.mas_equalTo(-kGetScaleWidth(15)); + make.top.equalTo(self); + make.height.mas_equalTo(kGetScaleWidth(32)); + }]; + [self.textField mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.bottom.equalTo(self.bgView); + make.left.mas_equalTo(kGetScaleWidth(10)); + make.right.mas_equalTo(-kGetScaleWidth(76)); + }]; + [self.searchBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-kGetScaleWidth(3)); + make.centerY.equalTo(self.bgView); + make.width.mas_equalTo(kGetScaleWidth(66)); + make.height.mas_equalTo(kGetScaleWidth(26)); + }]; +} + +-(void)searchAction{ + [self.textField resignFirstResponder]; + if(self.delegate && [self.delegate respondsToSelector:@selector(searchEndWithText:)]){ + [self.delegate searchEndWithText:self.textField.text]; + } +} +-(void)setIsSearchHall:(BOOL)isSearchHall{ + _isSearchHall = isSearchHall; + if(_isSearchHall == YES){ + _textField.keyboardType = UIKeyboardTypeDefault; + _textField.attributedPlaceholder = [[NSMutableAttributedString alloc]initWithString:YMLocalizedString(@"XPMineGiveDiamondSearchView3") attributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor secondTextColor],NSFontAttributeName:[UIFont systemFontOfSize:14 weight:UIFontWeightRegular]}]; + } +} +#pragma mark -懒加载 +- (UIImageView *)bgView{ + if (!_bgView){ + _bgView = [UIImageView new]; + _bgView.userInteractionEnabled = YES; + _bgView.image = [UIImage imageNamed:@"mine_give_diamond_search"]; + } + return _bgView; +} +-(UITextField *)textField{ + if (!_textField){ + _textField = [[UITextField alloc]initWithFrame:CGRectZero]; + _textField.keyboardType = UIKeyboardTypeNumberPad; + _textField.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _textField.textColor = [DJDKMIMOMColor mainTextColor]; + _textField.attributedPlaceholder = [[NSMutableAttributedString alloc]initWithString:YMLocalizedString(@"XPMineGiveDiamondSearchView1") attributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor secondTextColor],NSFontAttributeName:[UIFont systemFontOfSize:14 weight:UIFontWeightRegular]}]; + + } + return _textField; +} +-(UIButton *)searchBtn{ + if (!_searchBtn){ + _searchBtn = [UIButton new]; + UIImage *image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientMiddleColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(66), kGetScaleWidth(26))]; + [_searchBtn setBackgroundImage:image forState:UIControlStateNormal]; + [_searchBtn setTitle:YMLocalizedString(@"XPMineGiveDiamondSearchView0") forState:UIControlStateNormal]; + [_searchBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _searchBtn.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; + _searchBtn.layer.cornerRadius = kGetScaleWidth(26) / 2; + _searchBtn.layer.masksToBounds = YES; + + [_searchBtn addTarget:self action:@selector(searchAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _searchBtn; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPNewGuildIncomeHeaderView.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPNewGuildIncomeHeaderView.h new file mode 100644 index 00000000..c17800dc --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPNewGuildIncomeHeaderView.h @@ -0,0 +1,29 @@ +// +// XPNewGuildIncomeHeaderView.h +// YuMi +// +// Created by YuMi on 2022/11/9. +// + +#import +#import "XPNewMineGuildIncomeRecordViewController.h" +NS_ASSUME_NONNULL_BEGIN +@class XPNewGuildIncomeHeaderView; +@protocol XPNewGuildIncomeHeaderViewDelegate + +///选择日期 +- (void)xPNewGuildIncomeHeaderView:(XPNewGuildIncomeHeaderView *)view didChooseTime:(UIButton *)sender; + +@end +@interface XPNewGuildIncomeHeaderView : UIView +///代理 +@property (nonatomic,weak) id delegate; +///显示 +@property (nonatomic,assign) NewGuildIncomeRecrdTimeType timeType; + +@property (nonatomic,copy) NSString *totalIncome; + +- (void)configHeaderView:(NSDate *)startDate endTime:(NSDate * _Nullable)endDate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPNewGuildIncomeHeaderView.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPNewGuildIncomeHeaderView.m new file mode 100644 index 00000000..10800c42 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPNewGuildIncomeHeaderView.m @@ -0,0 +1,262 @@ +// +// XPNewGuildIncomeHeaderView.m +// YuMi +// +// Created by YuMi on 2022/11/9. +// +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" + +#import "NSString+Utils.h" +#import "UIView+Corner.h" +#import "UIImage+Utils.h" +#import "UIButton+EnlargeTouchArea.h" +#import "XPNewGuildIncomeHeaderView.h" +@interface XPNewGuildIncomeHeaderView() +///显示背景 +@property (nonatomic,strong) UIImageView *backImageView; +///显示哪一年 +@property (nonatomic,strong) UILabel *yearLabel; +///开始时间 +@property (nonatomic,strong) UILabel *startLabel; +///结束时间 +@property (nonatomic,strong) UILabel *endLabel; +///箭头 +@property (nonatomic,strong) UIButton *arrowButton; +///分割线 +@property (nonatomic,strong) UIView * lineView; +///总收入 +@property (nonatomic,strong) UILabel *totalLabel; +///金币 +@property (nonatomic,strong) UILabel *coinLabel; +@property (nonatomic,strong) NSDateFormatter *formatter; +@end +@implementation XPNewGuildIncomeHeaderView +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Public Method +- (void)configHeaderView:(NSDate *)startDate endTime:(NSDate * _Nullable)endDate { + [self.formatter setDateFormat:YMLocalizedString(@"App_Common_Year")]; + NSString *currentYear = [self.formatter stringFromDate:startDate]; + self.yearLabel.text = currentYear; + if (self.timeType == NewGuildIncomeRecrdTimeType_Day) { + [self.formatter setDateFormat:YMLocalizedString(@"XPGuildIncomeHeaderView0")]; + NSString * currentDay = [self.formatter stringFromDate:startDate]; + self.startLabel.text = currentDay; + NSString * endDayStr = [self.formatter stringFromDate:endDate]; + self.endLabel.text = endDayStr; + } else if(self.timeType == NewGuildIncomeRecrdTimeType_Week) { + [self.formatter setDateFormat:YMLocalizedString(@"XPGuildIncomeHeaderView1")]; + NSString * currentDay = [self.formatter stringFromDate:startDate]; + self.startLabel.text = currentDay; + + NSString * endDayStr = [self.formatter stringFromDate:endDate]; + self.endLabel.text = endDayStr; + } else { + [self.formatter setDateFormat:YMLocalizedString(@"XPGuildIncomeHeaderView5")]; + NSString * currentDay = [self.formatter stringFromDate:startDate]; + self.startLabel.text = currentDay; + } +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor whiteColor]; + [self.backImageView setCornerWithLeftTopCorner:kGetScaleWidth(10) rightTopCorner:kGetScaleWidth(10) bottomLeftCorner:kGetScaleWidth(10) bottomRightCorner:kGetScaleWidth(10) size:CGSizeMake(kGetScaleWidth(345), kGetScaleWidth(75))]; + [self addSubview:self.backImageView]; + [self.backImageView addSubview:self.yearLabel]; + [self.backImageView addSubview:self.startLabel]; + [self.backImageView addSubview:self.endLabel]; + [self.backImageView addSubview:self.arrowButton]; + [self.backImageView addSubview:self.lineView]; + [self.backImageView addSubview:self.totalLabel]; + [self.backImageView addSubview:self.coinLabel]; + + +} + +- (void)initSubViewConstraints { + + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + + make.left.mas_equalTo(kGetScaleWidth(15)); + make.right.mas_equalTo(-kGetScaleWidth(15)); + make.height.mas_equalTo(kGetScaleWidth(75)); + make.top.mas_equalTo(self); + }]; + + [self.yearLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(14)); + make.top.mas_equalTo(kGetScaleWidth(10)); + make.height.mas_equalTo(kGetScaleWidth(12)); + }]; + + [self.startLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.yearLabel); + make.top.mas_equalTo(kGetScaleWidth(28)); + make.height.mas_equalTo(kGetScaleWidth(17)); + + + }]; + [self.endLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.width.height.equalTo(self.startLabel); + make.top.equalTo(self.startLabel.mas_bottom).mas_offset(kGetScaleWidth(2)); + }]; + [self.arrowButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.startLabel.mas_right).offset(1); + make.centerY.mas_equalTo(self.lineView); + make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(20), kGetScaleWidth(20))); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(1), kGetScaleWidth(49))); + make.bottom.mas_equalTo(self.backImageView).offset(-kGetScaleWidth(13)); + make.left.equalTo(self.arrowButton.mas_right).mas_offset(kGetScaleWidth(9)); + }]; + + [self.totalLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backImageView.mas_left).offset(kGetScaleWidth(127)); + make.top.mas_equalTo(kGetScaleWidth(28)); + make.height.mas_equalTo(kGetScaleWidth(12)); + }]; + + [self.coinLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.totalLabel); + make.top.mas_equalTo(kGetScaleWidth(46)); + make.height.mas_equalTo(kGetScaleWidth(17)); + make.right.mas_equalTo(-kGetScaleWidth(14)); + }]; +} + +#pragma mark - Event Response +- (void)arrowButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPNewGuildIncomeHeaderView:didChooseTime:)]) { + [self.delegate xPNewGuildIncomeHeaderView:self didChooseTime:sender]; + } +} + +#pragma mark - Getters And Setters +- (void)setTotalIncome:(NSString *)totalIncome { + _totalIncome = totalIncome; + if (_totalIncome == nil) { + _totalIncome = @"0"; + } + NSString * title = [NSString stringWithFormat:YMLocalizedString(@"XPGuildIncomeHeaderView2"), [NSString getDealNumwithstring:_totalIncome]]; + NSRange range = [title rangeOfString:YMLocalizedString(@"XPGuildIncomeHeaderView3")]; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:23],NSForegroundColorAttributeName:[UIColor whiteColor]}]; + [attribute addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:18] range:range]; + self.coinLabel.attributedText = attribute; +} + +- (void)setTimeType:(NewGuildIncomeRecrdTimeType)timeType { + _timeType = timeType; + switch (_timeType) { + case NewGuildIncomeRecrdTimeType_Day: + self.endLabel.hidden = NO; + break; + case NewGuildIncomeRecrdTimeType_Week: + self.endLabel.hidden = NO; + break; + case NewGuildIncomeRecrdTimeType_Mouth: + self.endLabel.hidden = YES; + break; + default: + break; + } +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + UIImage *image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0x2B4658),UIColorFromRGB(0x363E45)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(345), kGetScaleWidth(75))]; + _backImageView.image = image; + } + return _backImageView; +} + +- (UILabel *)yearLabel { + if (!_yearLabel) { + _yearLabel = [[UILabel alloc] init]; + _yearLabel.font = [UIFont systemFontOfSize:10]; + _yearLabel.textColor = [UIColor colorWithWhite:1 alpha:0.8]; + } + return _yearLabel; +} + + + +- (UILabel *)startLabel { + if (!_startLabel) { + _startLabel = [[UILabel alloc] init]; + _startLabel.font = [UIFont systemFontOfSize:14]; + _startLabel.textColor = [UIColor whiteColor]; + } + return _startLabel; +} + +- (UILabel *)endLabel { + if (!_endLabel) { + _endLabel = [[UILabel alloc] init]; + _endLabel.font = [UIFont systemFontOfSize:14]; + _endLabel.textColor = [UIColor whiteColor]; + } + return _endLabel; +} + +- (UIButton *)arrowButton { + if (!_arrowButton) { + _arrowButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_arrowButton setImage:[UIImage imageNamed:@"mine_guild_income_record_arrow"] forState:UIControlStateNormal]; + [_arrowButton setImage:[UIImage imageNamed:@"mine_guild_income_record_arrow"] forState:UIControlStateSelected]; + [_arrowButton addTarget:self action:@selector(arrowButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_arrowButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + } + return _arrowButton; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [UIColor colorWithWhite:1 alpha:0.1]; + } + return _lineView; +} + +- (UILabel *)totalLabel { + if (!_totalLabel) { + _totalLabel = [[UILabel alloc] init]; + _totalLabel.text = YMLocalizedString(@"XPGuildIncomeHeaderView4"); + _totalLabel.font = [UIFont systemFontOfSize:11]; + _totalLabel.textColor = [UIColor whiteColor]; + } + return _totalLabel; +} + +- (UILabel *)coinLabel { + if (!_coinLabel) { + _coinLabel = [[UILabel alloc] init]; + _coinLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + _coinLabel.text = @"0"; + _coinLabel.textColor = [UIColor whiteColor]; + } + return _coinLabel; +} + +- (NSDateFormatter *)formatter { + if (!_formatter) { + _formatter = [[NSDateFormatter alloc] init]; + } + return _formatter; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPNewGuildTimePickView.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPNewGuildTimePickView.h new file mode 100644 index 00000000..6a94f1b0 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPNewGuildTimePickView.h @@ -0,0 +1,42 @@ +// +// XPNewGuildTimePickView.h +// YuMi +// +// Created by YuMi on 2022/11/9. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(NSUInteger, XPNewGuildTimePickType) { + XPNewGuildTimePickTypeDay,///按日 + XPNewGuildTimePickTypeWeek,///按周 + XPNewGuildTimePickTypeMonth,///按月 +}; + +@class XPNewGuildTimePickView; +@protocol XPNewGuildTimePickViewDelegate + +///点了确认按钮 +- (void)xPNewGuildTimePickView:(XPNewGuildTimePickView *)view didClickSure:(UIButton *)sender; +///点了取消按钮 +- (void)xPNewGuildTimePickView:(XPNewGuildTimePickView *)view didClickCancel:(UIButton *)sender; +@end +@interface XPNewGuildTimePickView : UIView + +///隐藏日,周,月按钮 +@property (nonatomic,assign) BOOL hiddenBtn; + +///是否是选择两个日期 +@property (nonatomic, assign) XPNewGuildTimePickType pickDateType; +///代理 +@property (nonatomic,weak) id delegate; +///当前的时间 +@property (nonatomic,strong) NSDate *currentDate; +///开始的时间 +@property (nonatomic,strong, readonly) NSDate *startDate; +///结束的时间 +@property (nonatomic,strong, readonly) NSDate *endDate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPNewGuildTimePickView.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPNewGuildTimePickView.m new file mode 100644 index 00000000..d062faa6 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SubViews/XPNewGuildTimePickView.m @@ -0,0 +1,687 @@ +// +// XPNewGuildTimePickView.m +// YuMi +// +// Created by YuMi on 2022/11/9. +// + +#import "XPNewGuildTimePickView.h" +///Third +#import +#import "PLTimeUtil.h" +///Tool +#import "DJDKMIMOMColor.h" +#import "UIView+Corner.h" +#import "UIImage+Utils.h" + +#import "XNDJTDDLoadingTool.h" +#import "XPGuildTimeMonthPickerView.h" +@interface XPNewGuildTimePickView() +///背景 +@property (nonatomic, strong) UIImageView *bgImageView; +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///顶部的view +@property (nonatomic,strong) UIView * toolView; +///取消 +@property (nonatomic,strong) UIButton *cancleButton; +///确定 +@property (nonatomic,strong) UIButton *sureButton; + + +///日 +@property (nonatomic,strong) UIButton *dayBtn; +///周 +@property (nonatomic,strong) UIButton *weekBtn; +///月 +@property (nonatomic,strong) UIButton *monthBtn; + + +///时间间隔 +@property (nonatomic,strong) UIView * intervalView; +///开始时间 +@property (nonatomic,strong) UIButton *startButton; +///至 +@property (nonatomic,strong) UILabel *titleLabel; +///结束的时间 +@property (nonatomic,strong) UIButton *endButton; +///时间选择器 +@property (nonatomic, strong) UIDatePicker *datePicker; +///样式 +@property (nonatomic, strong) NSDateFormatter *dateFormatter; +/// +@property (nonatomic, strong) NSCalendar *calendar; +///开始的时间 +@property (nonatomic,strong) NSDate *startDate; +///结束的时间 +@property (nonatomic,strong) NSDate *endDate; + +///距离当前时间三个月的时间 +@property (nonatomic,strong) NSDate *threeMinStartDate; +@property (nonatomic,strong) NSDate *threeMinEndDate; +@property (nonatomic,strong) NSDate *threeMaxStartDate; +@property (nonatomic,strong) NSDate *threeMaxEndDate; +///选择年月 +@property (nonatomic,strong) XPGuildTimeMonthPickerView *monthPickerView; +@end +@implementation XPNewGuildTimePickView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +-(void)setHiddenBtn:(BOOL)hiddenBtn{ + _hiddenBtn = hiddenBtn; + self.dayBtn.hidden = YES; + self.weekBtn.hidden = YES; + self.monthBtn.hidden = YES; + [self.toolView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(59); + }]; + +} +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.bgImageView]; + [self addSubview:self.stackView]; + [self.stackView addArrangedSubview:self.toolView]; + [self.stackView addArrangedSubview:self.intervalView]; + [self.stackView addArrangedSubview:self.datePicker]; + [self.toolView addSubview:self.cancleButton]; + [self.toolView addSubview:self.sureButton]; + [self.toolView addSubview:self.dayBtn]; + [self.toolView addSubview:self.weekBtn]; + [self.toolView addSubview:self.monthBtn]; + + + + [self.intervalView addSubview:self.startButton]; + [self.intervalView addSubview:self.titleLabel]; + [self.intervalView addSubview:self.endButton]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth); + make.bottom.mas_equalTo(self.stackView); + }]; + + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self); + make.top.mas_equalTo(8); + }]; + + [self.toolView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(83); + }]; + + + + [self.intervalView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(56); + }]; + + [self.datePicker mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(220); + }]; + [self.cancleButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(20); + make.left.mas_equalTo(self.toolView).mas_offset(15); + make.height.mas_equalTo(19); + make.width.mas_equalTo(35); + }]; + [self.sureButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.toolView).mas_offset(-15); + make.width.height.centerY.mas_equalTo(self.cancleButton); + }]; + + [self.dayBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(68); + make.height.mas_equalTo(24); + make.left.mas_equalTo(32); + make.top.mas_equalTo(59); + }]; + [self.weekBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.equalTo(self.toolView); + make.width.height.top.equalTo(self.dayBtn); + }]; + [self.monthBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.top.equalTo(self.dayBtn); + make.right.mas_equalTo(-32); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(40); + make.centerX.top.bottom.mas_equalTo(self.intervalView); + }]; + + [self.startButton mas_makeConstraints:^(MASConstraintMaker *make) { + + make.right.mas_equalTo(self.titleLabel.mas_left); + make.top.bottom.mas_equalTo(self.intervalView); + }]; + + [self.endButton mas_makeConstraints:^(MASConstraintMaker *make) { + + make.left.mas_equalTo(self.titleLabel.mas_right); + make.top.bottom.mas_equalTo(self.intervalView); + }]; +} +- (void)layoutSubviews{ + [super layoutSubviews]; + [self.bgImageView setCornerWithLeftTopCorner:18 rightTopCorner:18 bottomLeftCorner:0 bottomRightCorner:0 size:self.bgImageView.frame.size]; + +} +- (void)weekDayWithCurrentDate:(NSDate *)date { + NSCalendar * calendar = [NSCalendar currentCalendar]; // 指定日历的算法 + + NSDateComponents *comps = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitWeekday | NSCalendarUnitDay fromDate:date]; + // 获取今天是周几 + // 1 是周日,2是周一 3.以此类推 + NSInteger weekDay = [comps weekday]; + // 获取几天是几号 + NSInteger day = [comps day]; + long firstDiff,lastDiff; + if (weekDay == 1){ + firstDiff = -6; + lastDiff = 0; + } else { + firstDiff = -(weekDay - 2); + lastDiff = 8 - weekDay; + } + // 在当前日期(去掉时分秒)基础上加上差的天数 + NSDateComponents *baseDayComp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:date]; + //获取周一日期 + [baseDayComp setDay:day + firstDiff]; + NSDate *firstDayOfWeek = [calendar dateFromComponents:baseDayComp]; + self.startDate = firstDayOfWeek; + //获取周末日期 + [baseDayComp setDay:day + lastDiff]; + NSDate *lastDayOfWeek = [calendar dateFromComponents:baseDayComp]; + self.endDate = lastDayOfWeek; + + //获取距离当前三个月日期 + if(self.threeMinStartDate == nil){ + [baseDayComp setDay:day + firstDiff - 3 * 4 * 7]; + self.threeMinStartDate = [calendar dateFromComponents:baseDayComp]; + [baseDayComp setDay:day + lastDiff - 3 * 4 * 7]; + self.threeMinEndDate = [calendar dateFromComponents:baseDayComp]; + [baseDayComp setDay:day + firstDiff ]; + self.threeMaxStartDate = [calendar dateFromComponents:baseDayComp]; + [baseDayComp setDay:day + lastDiff ]; + self.threeMaxEndDate = [calendar dateFromComponents:baseDayComp]; + } + + + +} +- (void)datePicker:(XPGuildTimeMonthPickerView *)datePicker dateDidChange:(NSDate *)date{ + if(self.pickDateType != XPNewGuildTimePickTypeMonth)return; + [self.startButton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; + [self.startButton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateSelected]; + [self.endButton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; + [self.endButton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateSelected]; + [self monthWithCurrentDate:date]; + NSString *startDateStr = [PLTimeUtil getYYMMDDWithDate:date]; + NSString *endDateStr = [PLTimeUtil getYYMMDDWithDate:self.endDate]; + [self.startButton setTitle:startDateStr forState:UIControlStateSelected]; + [self.endButton setTitle:endDateStr forState:UIControlStateSelected]; +} +///获取当前时间 的一个月之后的时间 +- (void)monthWithCurrentDate:(NSDate *)newDate { + if (newDate == nil) { + newDate = [NSDate date]; + } + double interval = 0; + NSDate *beginDate = nil; + NSDate *endDate = nil; + NSCalendar *calendar = [NSCalendar currentCalendar]; + [calendar setFirstWeekday:2];//设定周一为周首日 + BOOL ok = [calendar rangeOfUnit:NSCalendarUnitMonth startDate:&beginDate interval:&interval forDate:newDate]; + if (ok) { + endDate = [beginDate dateByAddingTimeInterval:interval-1]; + } else { + return; + } + self.startDate = beginDate; + self.endDate = endDate; +} +#pragma mark - Event +- (void)onClickCancelButton:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPNewGuildTimePickView:didClickCancel:)]) { + [self.delegate xPNewGuildTimePickView:self didClickCancel:sender]; + } +} + +- (void)onClickSureButton:(UIButton *)sender { + if (self.pickDateType == XPNewGuildTimePickTypeWeek) { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPNewGuildTimePickView:didClickSure:)]) { + [self.delegate xPNewGuildTimePickView:self didClickSure:sender]; + } + } else { + NSDateComponents *delta = [[NSCalendar currentCalendar] components:NSCalendarUnitDay fromDate:self.startDate toDate:self.endDate options:0]; + if ([self.startDate compare:[NSDate date]] == NSOrderedDescending) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPGuildTimePickView0")]; + return; + } else if ([self.endDate compare:[NSDate date]] == NSOrderedDescending) {//结束日期大于当前日期 + self.endDate = [NSDate date]; + } else if ([self.startDate compare:self.endDate] == NSOrderedDescending) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPGuildTimePickView1")]; + return; + } else if (delta.day > 180) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPGuildTimePickView2")]; + return; + } + if (self.delegate && [self.delegate respondsToSelector:@selector(xPNewGuildTimePickView:didClickSure:)]) { + [self.delegate xPNewGuildTimePickView:self didClickSure:sender]; + } + } +} + +- (void)datePickerValueChange:(UIDatePicker *)datepick { + [self.startButton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; + [self.startButton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateSelected]; + [self.endButton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; + [self.endButton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateSelected]; + if(self.pickDateType == XPNewGuildTimePickTypeDay){ + // NSString *dateStr = [self.dateFormatter stringFromDate:datepick.date]; + // self.startDate = datepick.date; + // [self.startButton setTitle:dateStr forState:UIControlStateSelected]; + // self.endDate = datepick.date; + // [self.endButton setTitle:dateStr forState:UIControlStateSelected]; + [self.startButton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; + [self.startButton setTitleColor:[DJDKMIMOMColor inputTextColor] forState:UIControlStateSelected]; + [self.endButton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; + [self.endButton setTitleColor:[DJDKMIMOMColor inputTextColor] forState:UIControlStateSelected]; + NSString *dateStr = [self.dateFormatter stringFromDate:datepick.date]; + + if (self.startButton.isSelected) {//修改开始日期 + self.startDate = datepick.date; + [self.startButton setTitle:dateStr forState:UIControlStateNormal]; + [self.startButton setTitle:dateStr forState:UIControlStateSelected]; + if ([self.startDate compare:self.endDate] == NSOrderedDescending) {//开始日期大于结束日期,修改结束日期 + self.endDate = datepick.date; + [self.endButton setTitle:dateStr forState:UIControlStateNormal]; + [self.endButton setTitle:dateStr forState:UIControlStateSelected]; + } + } else {//修改结束日期 + if ([self.startDate compare:datepick.date] == NSOrderedDescending) {//开始日期大于结束日期 + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPGuildTimePickView3")]; + dateStr = [self.dateFormatter stringFromDate:self.startDate]; + self.endDate = self.startDate; + [self.endButton setTitle:dateStr forState:UIControlStateNormal]; + [self.endButton setTitle:dateStr forState:UIControlStateSelected]; + self.datePicker.date = self.startDate; + } else { + self.endDate = datepick.date; + [self.endButton setTitle:dateStr forState:UIControlStateNormal]; + [self.endButton setTitle:dateStr forState:UIControlStateSelected]; + } + } + + + }else if (self.pickDateType == XPNewGuildTimePickTypeWeek) { + [self weekDayWithCurrentDate:datepick.date]; + if(self.hiddenBtn == YES){ + + NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; + [formatter setDateFormat:@"yyyy-MM-dd"]; + NSDate *resDate; + +#ifdef DEBUG + resDate = [formatter dateFromString:@"2022-09-05"]; +#else + resDate = [formatter dateFromString:@"2022-12-05"]; +#endif + if([self.startDate compare:resDate] == NSOrderedAscending){ + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPGuildTimePickView6")]; + NSString *startDateStr = [self.dateFormatter stringFromDate:resDate]; + NSString *endDateStr = [self.dateFormatter stringFromDate:self.threeMinEndDate]; + [self.startButton setTitle:startDateStr forState:UIControlStateSelected]; + [self.endButton setTitle:endDateStr forState:UIControlStateSelected]; + self.datePicker.date = resDate; + return; + }else if([self.startDate compare:self.threeMinStartDate] == NSOrderedAscending){ + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPGuildTimePickView6")]; + NSString *startDateStr = [self.dateFormatter stringFromDate:self.threeMinStartDate]; + NSString *endDateStr = [self.dateFormatter stringFromDate:self.threeMinEndDate]; + [self.startButton setTitle:startDateStr forState:UIControlStateSelected]; + [self.endButton setTitle:endDateStr forState:UIControlStateSelected]; + self.datePicker.date = self.threeMinStartDate; + return; + }else if ([self.startDate compare:self.threeMaxStartDate] == NSOrderedDescending){ + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPGuildTimePickView6")]; + NSString *startDateStr = [self.dateFormatter stringFromDate:self.threeMaxStartDate]; + NSString *endDateStr = [self.dateFormatter stringFromDate:self.threeMaxEndDate]; + [self.startButton setTitle:startDateStr forState:UIControlStateSelected]; + [self.endButton setTitle:endDateStr forState:UIControlStateSelected]; + self.datePicker.date = self.threeMaxStartDate; + return; + } + } + NSString *startDateStr = [self.dateFormatter stringFromDate:self.startDate]; + NSString *endDateStr = [self.dateFormatter stringFromDate:self.endDate]; + [self.startButton setTitle:startDateStr forState:UIControlStateSelected]; + [self.endButton setTitle:endDateStr forState:UIControlStateSelected]; + + + } +} + +- (void)onClickStartButton:(UIButton *)sender { + if(self.pickDateType != XPNewGuildTimePickTypeDay)return; + self.startButton.selected = YES; + self.endButton.selected = NO; + self.datePicker.date = self.startDate; +} + +- (void)onClickEndButton:(UIButton *)sender { + if(self.pickDateType != XPNewGuildTimePickTypeDay)return; + self.startButton.selected = NO; + self.endButton.selected = YES; + self.datePicker.date = self.endDate; + +} +-(void)clickDayAction{ + self.dayBtn.selected = YES; + self.weekBtn.selected = NO; + self.monthBtn.selected = NO; + + + self.datePicker.date = self.startDate; + self.monthPickerView.hidden = YES; + self.pickDateType = XPNewGuildTimePickTypeDay; +} +-(void)clickWeekAction{ + self.dayBtn.selected = NO; + self.weekBtn.selected = YES; + self.monthBtn.selected = NO; + + self.pickDateType = XPNewGuildTimePickTypeWeek; + self.datePicker.date = self.startDate; + self.monthPickerView.hidden = YES; + +} +-(void)clickMonthAction{ + self.dayBtn.selected = NO; + self.weekBtn.selected = NO; + self.monthBtn.selected = YES; + self.pickDateType = XPNewGuildTimePickTypeMonth; + + + [self.monthPickerView showView]; + [self.monthPickerView setDate:[NSDate date] animated:YES]; + +} +#pragma mark - Getters And Setters +- (void)setCurrentDate:(NSDate *)currentDate { + _currentDate = currentDate; + if (_currentDate) { + NSDateComponents *comps = nil; comps = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitMonth fromDate:_currentDate]; + NSDateComponents *adcomps = [[NSDateComponents alloc] init]; + [adcomps setYear:-25]; + [adcomps setMonth:0]; + [adcomps setDay:0]; + NSDate *minDate = [self.calendar dateByAddingComponents:adcomps toDate:_currentDate options:0]; + + NSDateComponents *maxcomps = [[NSDateComponents alloc] init]; + [maxcomps setYear:25]; + [maxcomps setMonth:0]; + [maxcomps setDay:0]; + NSDate *maxDate = [self.calendar dateByAddingComponents:maxcomps toDate:_currentDate options:0]; + self.datePicker.minimumDate = minDate; + self.datePicker.maximumDate = maxDate; + self.datePicker.date = _currentDate; + } +} + +- (void)setPickDateType:(XPNewGuildTimePickType)pickDateType { + _pickDateType = pickDateType; + [self.startButton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; + [self.startButton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateSelected]; + [self.endButton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; + [self.endButton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateSelected]; + if(pickDateType == XPNewGuildTimePickTypeDay){ + [self.startButton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; + [self.startButton setTitleColor:[DJDKMIMOMColor inputTextColor] forState:UIControlStateSelected]; + [self.endButton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; + [self.endButton setTitleColor:[DJDKMIMOMColor inputTextColor] forState:UIControlStateSelected]; + self.startButton.selected = YES; + self.endButton.selected = NO; + NSString *dateStr = [self.dateFormatter stringFromDate:self.currentDate]; + [self.startButton setTitle:dateStr forState:UIControlStateNormal]; + [self.startButton setTitle:dateStr forState:UIControlStateSelected]; + [self.endButton setTitle:dateStr forState:UIControlStateNormal]; + [self.endButton setTitle:dateStr forState:UIControlStateSelected]; + self.startDate = _currentDate; + self.endDate = _currentDate; + }else if (pickDateType == XPNewGuildTimePickTypeWeek) { + [self weekDayWithCurrentDate:self.currentDate]; + NSString *startDateStr = [self.dateFormatter stringFromDate:self.startDate]; + NSString *endDateStr = [self.dateFormatter stringFromDate:self.endDate]; + [self.startButton setTitle:startDateStr forState:UIControlStateSelected]; + [self.endButton setTitle:endDateStr forState:UIControlStateSelected]; + self.startButton.selected = YES; + self.endButton.selected = YES; + }else{ + [self monthWithCurrentDate:self.startDate]; + NSString *startDateStr = [PLTimeUtil getYYMMDDWithDate:self.startDate]; + NSString *endDateStr = [PLTimeUtil getYYMMDDWithDate:self.endDate]; + [self.startButton setTitle:startDateStr forState:UIControlStateSelected]; + [self.endButton setTitle:endDateStr forState:UIControlStateSelected]; + self.startButton.selected = YES; + self.endButton.selected = YES; + } +} + + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 0; + } + return _stackView; +} + +- (UIView *)toolView { + if (!_toolView) { + _toolView = [[UIView alloc] init]; + _toolView.backgroundColor = [UIColor clearColor]; + } + return _toolView; +} + +- (UIView *)intervalView { + if (!_intervalView) { + _intervalView = [[UIView alloc] init]; + _intervalView.backgroundColor = [UIColor clearColor]; + } + return _intervalView; +} + + +- (UIButton *)cancleButton { + if (!_cancleButton) { + _cancleButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_cancleButton setTitle:YMLocalizedString(@"XPGuildTimePickView4") forState:UIControlStateNormal]; + [_cancleButton addTarget:self action:@selector(onClickCancelButton:) forControlEvents:UIControlEventTouchUpInside]; + _cancleButton.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + [_cancleButton setTitleColor:[DJDKMIMOMColor textThirdColor] forState:UIControlStateNormal]; + } + return _cancleButton; +} + +- (UIButton *)sureButton { + if (!_sureButton) { + _sureButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_sureButton setTitle:YMLocalizedString(@"XPGuildTimePickView5") forState:UIControlStateNormal]; + [_sureButton addTarget:self action:@selector(onClickSureButton:) forControlEvents:UIControlEventTouchUpInside]; + _sureButton.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + [_sureButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + } + return _sureButton; +} + +- (NSDateFormatter *)dateFormatter { + if (!_dateFormatter) { + _dateFormatter = [[NSDateFormatter alloc] init]; + _dateFormatter.dateFormat = @"YYYY-MM-dd"; + } + return _dateFormatter; +} + +- (UIDatePicker *)datePicker { + if (!_datePicker){ + _datePicker = [[UIDatePicker alloc] init]; + _datePicker.datePickerMode = UIDatePickerModeDate; + + if (@available(iOS 13.4, *)) { + _datePicker.preferredDatePickerStyle = UIDatePickerStyleWheels; + } + if (@available(iOS 13.0, *)) { + _datePicker.overrideUserInterfaceStyle = UIUserInterfaceStyleLight; + } + [_datePicker addTarget:self action:@selector(datePickerValueChange:) forControlEvents:UIControlEventValueChanged]; + } + return _datePicker; +} + +- (UIButton *)startButton { + if (!_startButton) { + _startButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_startButton addTarget:self action:@selector(onClickStartButton:) forControlEvents:UIControlEventTouchUpInside]; + _startButton.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; + [_startButton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; + [_startButton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateSelected]; + [_startButton.titleLabel sizeToFit]; + _startButton.selected = YES; + } + return _startButton; +} + +- (UIButton *)endButton { + if (!_endButton) { + _endButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_endButton addTarget:self action:@selector(onClickEndButton:) forControlEvents:UIControlEventTouchUpInside]; + _endButton.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; + [_endButton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; + [_endButton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateSelected]; + _endButton.titleLabel.textAlignment = NSTextAlignmentRight; + _endButton.selected = YES; + } + return _endButton; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"App_Common_To"); + _titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.textColor = UIColorFromRGB(0x6D6B89); + } + return _titleLabel; +} + +- (NSCalendar *)calendar { + if (!_calendar) { + _calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; + } + return _calendar; +} + +- (UIImageView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[UIImageView alloc] init]; + _bgImageView.backgroundColor = [UIColor whiteColor]; + + // _bgImageView.image = [UIImage imageNamed:@"mine_guild_income_datePicker_bg"]; + } + return _bgImageView; +} +- (UIButton *)dayBtn{ + if (!_dayBtn){ + _dayBtn = [UIButton new]; + _dayBtn.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; + [_dayBtn setTitle:YMLocalizedString(@"App_Commont_Days") forState:UIControlStateNormal]; + [_dayBtn setTitleColor:UIColorFromRGB(0xB3B3C3) forState:UIControlStateNormal]; + [_dayBtn setTitleColor:DJDKMIMOMColor.appMainColor forState:UIControlStateSelected]; + UIImage *chooseImage = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xCCF8F9),UIColorFromRGB(0xDEE4FF),UIColorFromRGB(0xEEDCFF)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(68,24)]; + UIImage *noChooseImage = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(68,24)]; + [_dayBtn setBackgroundImage:chooseImage forState:UIControlStateSelected]; + [_dayBtn setBackgroundImage:noChooseImage forState:UIControlStateNormal]; + _dayBtn.selected = YES; + [_dayBtn setCornerWithLeftTopCorner:3 rightTopCorner:3 bottomLeftCorner:3 bottomRightCorner:3 size:CGSizeMake(68,24)]; + [_dayBtn addTarget:self action:@selector(clickDayAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _dayBtn; +} +- (UIButton *)weekBtn{ + if (!_weekBtn){ + _weekBtn = [UIButton new]; + _weekBtn.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; + [_weekBtn setTitle:YMLocalizedString(@"App_Commont_Week") forState:UIControlStateNormal]; + [_weekBtn setTitleColor:UIColorFromRGB(0xB3B3C3) forState:UIControlStateNormal]; + [_weekBtn setTitleColor:DJDKMIMOMColor.appMainColor forState:UIControlStateSelected]; + UIImage *chooseImage = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xCCF8F9),UIColorFromRGB(0xDEE4FF),UIColorFromRGB(0xEEDCFF)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(68,24)]; + UIImage *noChooseImage = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(68,24)]; + [_weekBtn setBackgroundImage:chooseImage forState:UIControlStateSelected]; + [_weekBtn setBackgroundImage:noChooseImage forState:UIControlStateNormal]; + [_weekBtn setCornerWithLeftTopCorner:3 rightTopCorner:3 bottomLeftCorner:3 bottomRightCorner:3 size:CGSizeMake(68,24)]; + [_weekBtn addTarget:self action:@selector(clickWeekAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _weekBtn; +} +- (UIButton *)monthBtn{ + if (!_monthBtn){ + _monthBtn = [UIButton new]; + _monthBtn.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; + [_monthBtn setTitle:YMLocalizedString(@"App_Commont_Month") forState:UIControlStateNormal]; + [_monthBtn setTitleColor:UIColorFromRGB(0xB3B3C3) forState:UIControlStateNormal]; + [_monthBtn setTitleColor:DJDKMIMOMColor.appMainColor forState:UIControlStateSelected]; + UIImage *chooseImage = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xCCF8F9),UIColorFromRGB(0xDEE4FF),UIColorFromRGB(0xEEDCFF)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(68,24)]; + UIImage *noChooseImage = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(68,24)]; + [_monthBtn setBackgroundImage:chooseImage forState:UIControlStateSelected]; + [_monthBtn setBackgroundImage:noChooseImage forState:UIControlStateNormal]; + [_monthBtn setCornerWithLeftTopCorner:3 rightTopCorner:3 bottomLeftCorner:3 bottomRightCorner:3 size:CGSizeMake(68,24)]; + [_monthBtn addTarget:self action:@selector(clickMonthAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _monthBtn; +} +- (XPGuildTimeMonthPickerView *)monthPickerView { + if (!_monthPickerView) { + _monthPickerView = [[XPGuildTimeMonthPickerView alloc] initNoBackBtnWithSuperView:self]; + _monthPickerView.delegate = self; + _monthPickerView.datePickerMode = HooDatePickerModeYearAndMonth; + [_monthPickerView setTintColor:UIColorFromRGB(0x999999)];//设置主色 + [_monthPickerView setHighlightColor:UIColorFromRGB(0x333333)]; + NSDate * date = [NSDate date]; + NSDateComponents *comps = nil; comps = [[NSCalendar sharedCalendar] components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitMonth fromDate:date]; + NSDateComponents *adcomps = [[NSDateComponents alloc] init]; + [adcomps setYear:-15]; + [adcomps setMonth:0]; + [adcomps setDay:0]; + NSDate *minDate = [[NSCalendar sharedCalendar] dateByAddingComponents:adcomps toDate:date options:0]; + + NSDateComponents *maxcomps = [[NSDateComponents alloc] init]; + [maxcomps setYear:15]; + [maxcomps setMonth:0]; + [maxcomps setDay:0]; + NSDate *maxDate = [[NSCalendar sharedCalendar] dateByAddingComponents:maxcomps toDate:date options:0]; + _monthPickerView.minimumDate = minDate; + _monthPickerView.maximumDate = maxDate; + + } + return _monthPickerView; +} +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMICollectiveDivisionRegard.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMICollectiveDivisionRegard.h deleted file mode 100644 index 09ab40b1..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMICollectiveDivisionRegard.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YUMICollectiveDivisionRegard.h -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMICollectiveDivisionRegard; -@protocol FBCCollectiveSectionRegardRepresendtation -@optional -- (void)yUMICollectiveSectionRegard:(YUMICollectiveDivisionRegard *)view didClickSearch:(UIButton *)sender; -- (void)yUMICollectiveSectionRegard:(YUMICollectiveDivisionRegard *)view didClickManager:(UIButton *)sender; -@end -@interface YUMICollectiveDivisionRegard : UIView -@property (nonatomic,weak) id delegate; -@property (nonatomic,assign) BOOL isApexCor; -@property (nonatomic,copy) NSString *title; -@property (nonatomic,assign) BOOL isVeiledHuntfor; -@property (nonatomic,assign) BOOL isVeiledExecutive; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMICollectiveDivisionRegard.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMICollectiveDivisionRegard.m deleted file mode 100644 index b876c2bb..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMICollectiveDivisionRegard.m +++ /dev/null @@ -1,159 +0,0 @@ -// -// YUMICollectiveDivisionRegard.m -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import "YUMICollectiveDivisionRegard.h" -#import -#import "DJDKMIMOMColor.h" - - -@interface YUMICollectiveDivisionRegard () -@property (nonatomic,strong) UIView * encourageRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UIStackView *furthaerHierarchyRegard; -@property (nonatomic,strong) UIButton *huntforBtuton; -@property (nonatomic,strong) UIButton *executiveBtuton; -@end - -@implementation YUMICollectiveDivisionRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - [self addSubview:self.encourageRegard]; - [self.encourageRegard addSubview:self.titleLabel]; - [self.encourageRegard addSubview:self.furthaerHierarchyRegard]; - - [self.furthaerHierarchyRegard addArrangedSubview:self.huntforBtuton]; - [self.furthaerHierarchyRegard addArrangedSubview:self.executiveBtuton]; -} - -- (void)initChildLyRestrictions { - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self).inset(15); - make.top.bottom.mas_equalTo(self); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageRegard).offset(15); - make.top.mas_equalTo(self.encourageRegard).offset(10); - }]; - - [self.furthaerHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.encourageRegard).offset(-15); - make.centerY.mas_equalTo(self.titleLabel); - }]; - - [self.huntforBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(22); - }]; - - [self.executiveBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(22); - }]; -} -#pragma mark - Event Response -- (void)huntforBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMICollectiveSectionRegard:didClickSearch:)]) { - [self.delegate yUMICollectiveSectionRegard:self didClickSearch:sender]; - } -} - -- (void)executiveBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMICollectiveSectionRegard:didClickManager:)]) { - [self.delegate yUMICollectiveSectionRegard:self didClickManager:sender]; - } -} - -#pragma mark - Getters And Setters -- (void)setTitle:(NSString *)title { - _title = title; - if (_title.length > 0) { - self.titleLabel.text = _title; - } -} - -- (void)setIsApexCor:(BOOL)isApexCor { - _isApexCor = isApexCor; - if (_isApexCor) { - CAShapeLayer * layer = [CAShapeLayer layer]; - layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth - 30, 37) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)].CGPath; - self.encourageRegard.layer.mask = layer; - } -} - -- (void)setIsVeiledHuntfor:(BOOL)isVeiledHuntfor { - _isVeiledHuntfor = isVeiledHuntfor; - self.huntforBtuton.hidden= _isVeiledHuntfor; -} - -- (void)setIsVeiledExecutive:(BOOL)isVeiledExecutive { - _isVeiledExecutive = isVeiledExecutive; - self.executiveBtuton.hidden = _isVeiledExecutive; -} - -- (UIView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIView alloc] init]; - _encourageRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _encourageRegard.layer.masksToBounds = YES; - } - return _encourageRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:15]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -- (UIStackView *)furthaerHierarchyRegard { - if (!_furthaerHierarchyRegard) { - _furthaerHierarchyRegard = [[UIStackView alloc] init]; - _furthaerHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _furthaerHierarchyRegard.distribution = UIStackViewDistributionFill; - _furthaerHierarchyRegard.alignment = UIStackViewAlignmentFill; - _furthaerHierarchyRegard.spacing = 10; - } - return _furthaerHierarchyRegard; -} - -- (UIButton *)huntforBtuton { - if (!_huntforBtuton) { - _huntforBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_huntforBtuton setImage:[UIImage imageNamed:@"yumi_main_search_input_search"] forState:UIControlStateNormal]; - [_huntforBtuton setImage:[UIImage imageNamed:@"yumi_main_search_input_search"] forState:UIControlStateSelected]; - [_huntforBtuton addTarget:self action:@selector(huntforBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _huntforBtuton.hidden = YES; - } - return _huntforBtuton; -} - -- (UIButton *)executiveBtuton { - if (!_executiveBtuton) { - _executiveBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_executiveBtuton setImage:[UIImage imageNamed:@"yumi_center_guild_guild_section_manager"] forState:UIControlStateNormal]; - [_executiveBtuton setImage:[UIImage imageNamed:@"yumi_center_guild_guild_section_manager"] forState:UIControlStateSelected]; - [_executiveBtuton addTarget:self action:@selector(executiveBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _executiveBtuton.hidden = YES; - } - return _executiveBtuton; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMICollectiveParrotRegard.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMICollectiveParrotRegard.h deleted file mode 100644 index 83f009f3..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMICollectiveParrotRegard.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YUMICollectiveParrotRegard.h -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMICollectiveParrotRegard : UIView -@property (nonatomic,copy) NSString * imageName; -@property (nonatomic,copy) NSString *title; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMICollectiveParrotRegard.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMICollectiveParrotRegard.m deleted file mode 100644 index c845d445..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMICollectiveParrotRegard.m +++ /dev/null @@ -1,78 +0,0 @@ -// -// YUMICollectiveParrotRegard.m -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import "YUMICollectiveParrotRegard.h" -#import -#import "DJDKMIMOMColor.h" - -@interface YUMICollectiveParrotRegard () -@property (nonatomic,strong) UIImageView *brandIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@end - -@implementation YUMICollectiveParrotRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.brandIndicateRegard]; - [self addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.brandIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self); - - }]; -} -#pragma mark - Getters And Setters -- (void)setImageName:(NSString *)imageName { - _imageName = imageName; - if (_imageName) { - self.brandIndicateRegard.image = [UIImage imageNamed:_imageName]; - } -} - -- (void)setTitle:(NSString *)title { - _title = title; - if (_title.length > 0) { - self.titleLabel.text = _title; - } -} - -- (UIImageView *)brandIndicateRegard { - if (!_brandIndicateRegard) { - _brandIndicateRegard = [[UIImageView alloc] init]; - _brandIndicateRegard.userInteractionEnabled = YES; - } - return _brandIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - _titleLabel.textColor = [UIColor whiteColor]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIGoldRevenueDivisionRegard.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIGoldRevenueDivisionRegard.h deleted file mode 100644 index d8169ac0..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIGoldRevenueDivisionRegard.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YUMIGoldRevenueDivisionRegard.h -// YuMi -// -// Created by YuMi on 2022/12/16. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@protocol FBCGoldIncomeSectionRegardRepresendtation - --(void)concludeGoldTangerineTelling:(int)type isAscending:(BOOL)isAscending; - -@end -@interface YUMIGoldRevenueDivisionRegard : UIView -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIGoldRevenueDivisionRegard.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIGoldRevenueDivisionRegard.m deleted file mode 100644 index 6366ae60..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIGoldRevenueDivisionRegard.m +++ /dev/null @@ -1,172 +0,0 @@ -// -// YUMIGoldRevenueDivisionRegard.m -// YuMi -// -// Created by YuMi on 2022/12/16. -// - -#import "YUMIGoldRevenueDivisionRegard.h" -#import "YUMIRevenueReflectionGoldSpecificsIntelligenceRegard.h" -@interface YUMIGoldRevenueDivisionRegard() -@property (nonatomic,strong) UIView *backgroundProvisionRegard; -@property (nonatomic,strong) UILabel *chamberRegard; -@property (nonatomic,strong) UILabel *componentRegard; -@property (nonatomic,strong) YUMIRevenueReflectionGoldSpecificsIntelligenceProvisionRegard *bWSttawberryRegard; -@property (nonatomic,strong) UILabel *exdiversificationGoldRegard; -@property (nonatomic,strong) YUMIRevenueReflectionGoldSpecificsIntelligenceProvisionRegard *settlementRegard; -@end -@implementation YUMIGoldRevenueDivisionRegard - --(instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if(self){ - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - - - [self addSubview:self.backgroundProvisionRegard]; - [self.backgroundProvisionRegard addSubview:self.chamberRegard]; - [self.backgroundProvisionRegard addSubview:self.componentRegard]; - [self.backgroundProvisionRegard addSubview:self.bWSttawberryRegard]; - [self.backgroundProvisionRegard addSubview:self.exdiversificationGoldRegard]; - [self.backgroundProvisionRegard addSubview:self.settlementRegard]; -} -- (void)initChildLyRestrictions { - - - [self.backgroundProvisionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.equalTo(self); - make.height.mas_equalTo(kGetScaleWidth(47)); - make.left.right.equalTo(self).inset(kGetScaleWidth(0)); - }]; - [self.chamberRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(kGetScaleWidth(50)); - make.left.mas_equalTo(kGetScaleWidth(0)); - make.height.mas_equalTo(kGetScaleWidth(17)); - make.centerY.equalTo(self.backgroundProvisionRegard); - }]; - [self.componentRegard mas_makeConstraints:^(MASConstraintMaker *make) { - - make.left.mas_equalTo(kGetScaleWidth(50)); - make.width.mas_equalTo(kGetScaleWidth(48)); - make.centerY.height.equalTo(self.chamberRegard); - }]; - CGFloat width = kGetScaleWidth(277/3); - [self.settlementRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(width); - make.right.equalTo(self.backgroundProvisionRegard); - make.centerY.height.equalTo(self.chamberRegard); - }]; - [self.exdiversificationGoldRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.width.height.equalTo(self.settlementRegard); - make.right.equalTo(self.settlementRegard.mas_left); - }]; - [self.bWSttawberryRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.width.height.equalTo(self.exdiversificationGoldRegard); - make.right.equalTo(self.exdiversificationGoldRegard.mas_left); - }]; - - -} - - --(void)clickDiamondPerformance{ - - if(self.bWSttawberryRegard.upwardsBtuton.selected == YES){ - self.bWSttawberryRegard.upwardsBtuton.selected = NO; - self.bWSttawberryRegard.pubescenceBtuton.selected = YES; - if(self.delegate && [self.delegate respondsToSelector:@selector(concludeGoldTangerineTelling:isAscending:)]){ - [self.delegate concludeGoldTangerineTelling:1 isAscending:NO]; - } - return; - } - - if(self.delegate && [self.delegate respondsToSelector:@selector(concludeGoldTangerineTelling:isAscending:)]){ - [self.delegate concludeGoldTangerineTelling:1 isAscending:YES]; - } - self.bWSttawberryRegard.upwardsBtuton.selected = YES; - self.bWSttawberryRegard.pubescenceBtuton.selected = NO; -} --(void)clickGoldPerformance{ - - if(self.settlementRegard.upwardsBtuton.selected == YES){ - self.settlementRegard.upwardsBtuton.selected = NO; - self.settlementRegard.pubescenceBtuton.selected = YES; - if(self.delegate && [self.delegate respondsToSelector:@selector(concludeGoldTangerineTelling:isAscending:)]){ - [self.delegate concludeGoldTangerineTelling:1 isAscending:NO]; - } - return; - } - - if(self.delegate && [self.delegate respondsToSelector:@selector(concludeGoldTangerineTelling:isAscending:)]){ - [self.delegate concludeGoldTangerineTelling:1 isAscending:YES]; - } - self.settlementRegard.upwardsBtuton.selected = YES; - self.settlementRegard.pubescenceBtuton.selected = NO; -} -#pragma mark -懒加载 - --(UIView *)backgroundProvisionRegard{ - if (!_backgroundProvisionRegard){ - _backgroundProvisionRegard = [UIView new]; - _backgroundProvisionRegard.backgroundColor = UIColorFromRGB(0xF0F5F6); - } - return _backgroundProvisionRegard; -} - -- (UILabel *)chamberRegard { - if (!_chamberRegard) { - _chamberRegard = [[UILabel alloc] init]; - _chamberRegard.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _chamberRegard.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _chamberRegard.text = YMLocalizedString(@"XPGoldIncomeSectionView0"); - } - return _chamberRegard; -} - -- (UILabel *)componentRegard { - if (!_componentRegard) { - _componentRegard = [[UILabel alloc] init]; - _componentRegard.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _componentRegard.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _componentRegard.text = YMLocalizedString(@"YUMI_Income_Record_Gold_Details_Head_View_1"); - } - return _componentRegard; -} - --(YUMIRevenueReflectionGoldSpecificsIntelligenceProvisionRegard *)bWSttawberryRegard{ - if (!_bWSttawberryRegard){ - _bWSttawberryRegard = [[YUMIRevenueReflectionGoldSpecificsIntelligenceProvisionRegard alloc]initWithFrame:CGRectZero]; - _bWSttawberryRegard.title = YMLocalizedString(@"YUMI_Income_Record_Gold_Details_Head_View_5"); - [_bWSttawberryRegard.ticktackBtuton addTarget:self action:@selector(clickDiamondPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _bWSttawberryRegard; -} - -- (UILabel *)exdiversificationGoldRegard { - if (!_exdiversificationGoldRegard) { - _exdiversificationGoldRegard = [[UILabel alloc] init]; - _exdiversificationGoldRegard.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _exdiversificationGoldRegard.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _exdiversificationGoldRegard.text = YMLocalizedString(@"YUMI_Income_Record_Gold_Details_Head_View_3"); - } - return _exdiversificationGoldRegard; -} - - --(YUMIRevenueReflectionGoldSpecificsIntelligenceProvisionRegard *)settlementRegard{ - if (!_settlementRegard){ - _settlementRegard = [[YUMIRevenueReflectionGoldSpecificsIntelligenceProvisionRegard alloc]initWithFrame:CGRectZero]; - _settlementRegard.title = YMLocalizedString(@"YUMI_Income_Record_Gold_Details_Head_View_4"); - [_settlementRegard.ticktackBtuton addTarget:self action:@selector(clickGoldPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _settlementRegard; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIManeGiveDiamondHuntforRegard.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIManeGiveDiamondHuntforRegard.h deleted file mode 100644 index 89318887..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIManeGiveDiamondHuntforRegard.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YUMIManeGiveDiamondHuntforRegard.h -// YuMi -// -// Created by YuMi on 2023/6/30. -// - -#import -#import "FBCManeGiveDiamondCeremony.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeGiveDiamondHuntforRegard : UIView -@property (nonatomic,assign) BOOL isHuntforCorridor; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIManeGiveDiamondHuntforRegard.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIManeGiveDiamondHuntforRegard.m deleted file mode 100644 index 65369148..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIManeGiveDiamondHuntforRegard.m +++ /dev/null @@ -1,102 +0,0 @@ -// -// YUMIManeGiveDiamondHuntforRegard.m -// YuMi -// -// Created by YuMi on 2023/6/30. -// - -#import "YUMIManeGiveDiamondHuntforRegard.h" -@interface YUMIManeGiveDiamondHuntforRegard() -@property (nonatomic,strong)UIImageView *backgroundRegard; -@property (nonatomic,strong) UITextField *essayUniverse; -@property (nonatomic,strong) UIButton *huntforBtuton; - -@end -@implementation YUMIManeGiveDiamondHuntforRegard - --(instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if(self){ - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - [self addSubview:self.backgroundRegard]; - [self.backgroundRegard addSubview:self.essayUniverse]; - [self.backgroundRegard addSubview:self.huntforBtuton]; -} -- (void)initChildLyRestrictions { - [self.backgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(15)); - make.right.mas_equalTo(-kGetScaleWidth(15)); - make.top.equalTo(self); - make.height.mas_equalTo(kGetScaleWidth(32)); - }]; - [self.essayUniverse mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.bottom.equalTo(self.backgroundRegard); - make.left.mas_equalTo(kGetScaleWidth(10)); - make.right.mas_equalTo(-kGetScaleWidth(76)); - }]; - [self.huntforBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-kGetScaleWidth(3)); - make.centerY.equalTo(self.backgroundRegard); - make.width.mas_equalTo(kGetScaleWidth(66)); - make.height.mas_equalTo(kGetScaleWidth(26)); - }]; -} - --(void)huntforPerformance{ - [self.essayUniverse resignFirstResponder]; - if(self.delegate && [self.delegate respondsToSelector:@selector(huntforConcludeAboutEssay:)]){ - [self.delegate huntforConcludeAboutEssay:self.essayUniverse.text]; - } -} --(void)setIsHuntforCorridor:(BOOL)isHuntforCorridor{ - _isHuntforCorridor = isHuntforCorridor; - if(_isHuntforCorridor == YES){ - _essayUniverse.keyboardType = UIKeyboardTypeDefault; - _essayUniverse.attributedPlaceholder = [[NSMutableAttributedString alloc]initWithString:YMLocalizedString(@"YUMI_MineGiveDiamondSearchView3") attributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor instantEssayPrettify],NSFontAttributeName:[UIFont systemFontOfSize:14 weight:UIFontWeightRegular]}]; - } -} -#pragma mark -懒加载 -- (UIImageView *)backgroundRegard{ - if (!_backgroundRegard){ - _backgroundRegard = [UIImageView new]; - _backgroundRegard.userInteractionEnabled = YES; - _backgroundRegard.image = [UIImage imageNamed:@"mine_give_diamond_search"]; - } - return _backgroundRegard; -} --(UITextField *)essayUniverse{ - if (!_essayUniverse){ - _essayUniverse = [[UITextField alloc]initWithFrame:CGRectZero]; - _essayUniverse.keyboardType = UIKeyboardTypeNumberPad; - _essayUniverse.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _essayUniverse.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _essayUniverse.attributedPlaceholder = [[NSMutableAttributedString alloc]initWithString:YMLocalizedString(@"YUMI_MineGiveDiamondSearchView1") attributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor instantEssayPrettify],NSFontAttributeName:[UIFont systemFontOfSize:14 weight:UIFontWeightRegular]}]; - - } - return _essayUniverse; -} --(UIButton *)huntforBtuton{ - if (!_huntforBtuton){ - _huntforBtuton = [UIButton new]; - UIImage *image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityMiddlePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(kGetScaleWidth(66), kGetScaleWidth(26))]; - [_huntforBtuton setBackgroundImage:image forState:UIControlStateNormal]; - [_huntforBtuton setTitle:YMLocalizedString(@"YUMI_MineGiveDiamondSearchView0") forState:UIControlStateNormal]; - [_huntforBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _huntforBtuton.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; - _huntforBtuton.layer.cornerRadius = kGetScaleWidth(26) / 2; - _huntforBtuton.layer.masksToBounds = YES; - - [_huntforBtuton addTarget:self action:@selector(huntforPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _huntforBtuton; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIStrangeUnionIntratemporalPickRegard.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIStrangeUnionIntratemporalPickRegard.h deleted file mode 100644 index a77b9ae5..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIStrangeUnionIntratemporalPickRegard.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// YUMIStrangeUnionIntratemporalPickRegard.h -// YuMi -// -// Created by YuMi on 2022/11/9. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSUInteger, YUMINewUnionTimePickGenre) { - YUMINewUnionTimePickGenreDay, - YUMINewUnionTimePickGenreWeek, - YUMINewUnionTimePickGenreMonth, -}; - -@class YUMIStrangeUnionIntratemporalPickRegard; -@protocol FBCStrangeUnionTimePickRegardRepresendtation - -- (void)yUMIStrangeUnionIntrtowardsemporalExtractRegard:(YUMIStrangeUnionIntratemporalPickRegard *)view didClickSure:(UIButton *)sender; -- (void)yUMIStrangeUnionIntrtowardsemporalExtractRegard:(YUMIStrangeUnionIntratemporalPickRegard *)view didTicktackRevoctowardsion:(UIButton *)sender; -@end -@interface YUMIStrangeUnionIntratemporalPickRegard : UIView - -@property (nonatomic,assign) BOOL veiledBtuton; - -@property (nonatomic, assign) YUMINewUnionTimePickGenre extractEngagementGenre; -@property (nonatomic,weak) id delegate; -@property (nonatomic,strong) NSDate *currentDate; -@property (nonatomic,strong, readonly) NSDate *startDate; -@property (nonatomic,strong, readonly) NSDate *endDate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIStrangeUnionIntratemporalPickRegard.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIStrangeUnionIntratemporalPickRegard.m deleted file mode 100644 index ff6387da..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIStrangeUnionIntratemporalPickRegard.m +++ /dev/null @@ -1,665 +0,0 @@ -// -// YUMIStrangeUnionIntratemporalPickRegard.m -// YuMi -// -// Created by YuMi on 2022/11/9. -// - -#import "YUMIStrangeUnionIntratemporalPickRegard.h" -#import -#import "PLIntratemporalUtil.h" -#import "DJDKMIMOMColor.h" -#import "UIView+Corner.h" -#import "UIImage+Utils.h" - -#import "XNDJTBWGLoadingTool.h" -#import "YUMIUnionIntratemporalMonthPickerRegard.h" -@interface YUMIStrangeUnionIntratemporalPickRegard() -@property (nonatomic, strong) UIImageView *backgroundIndicateRegard; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UIView * utensilRegard; -@property (nonatomic,strong) UIButton *cancleBtuton; -@property (nonatomic,strong) UIButton *sureBtuton; - - -@property (nonatomic,strong) UIButton *dayBtuton; -@property (nonatomic,strong) UIButton *zhouBtuton; -@property (nonatomic,strong) UIButton *monthBtuton; - - -@property (nonatomic,strong) UIView * separationRegard; -@property (nonatomic,strong) UIButton *satellitetBtuton; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UIButton *endBtuton; -@property (nonatomic, strong) UIDatePicker *datePicker; -@property (nonatomic, strong) NSDateFormatter *engagementInitialiser; -@property (nonatomic, strong) NSCalendar *calendar; -@property (nonatomic,strong) NSDate *startDate; -@property (nonatomic,strong) NSDate *endDate; - -@property (nonatomic,strong) NSDate *threeMinSatellitetEngagement; -@property (nonatomic,strong) NSDate *threeMinEndEngagement; -@property (nonatomic,strong) NSDate *threeLargestSatellitetEngagement; -@property (nonatomic,strong) NSDate *threeLargestEndEngagement; -@property (nonatomic,strong) YUMIUnionIntratemporalMonthPickerRegard *monthExtracterRegard; -@end -@implementation YUMIStrangeUnionIntratemporalPickRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} --(void)setVeiledBtuton:(BOOL)veiledBtuton{ - _veiledBtuton = veiledBtuton; - self.dayBtuton.hidden = YES; - self.zhouBtuton.hidden = YES; - self.monthBtuton.hidden = YES; - [self.utensilRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(59); - }]; - -} -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backgroundIndicateRegard]; - [self addSubview:self.stackView]; - [self.stackView addArrangedSubview:self.utensilRegard]; - [self.stackView addArrangedSubview:self.separationRegard]; - [self.stackView addArrangedSubview:self.datePicker]; - [self.utensilRegard addSubview:self.cancleBtuton]; - [self.utensilRegard addSubview:self.sureBtuton]; - [self.utensilRegard addSubview:self.dayBtuton]; - [self.utensilRegard addSubview:self.zhouBtuton]; - [self.utensilRegard addSubview:self.monthBtuton]; - - - - [self.separationRegard addSubview:self.satellitetBtuton]; - [self.separationRegard addSubview:self.titleLabel]; - [self.separationRegard addSubview:self.endBtuton]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth); - make.bottom.mas_equalTo(self.stackView); - }]; - - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(0); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self); - make.top.mas_equalTo(8); - }]; - - [self.utensilRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(83); - }]; - - - - [self.separationRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(56); - }]; - - [self.datePicker mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(220); - }]; - [self.cancleBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(20); - make.left.mas_equalTo(self.utensilRegard).mas_offset(15); - make.height.mas_equalTo(19); - make.width.mas_equalTo(35); - }]; - [self.sureBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.utensilRegard).mas_offset(-15); - make.width.height.centerY.mas_equalTo(self.cancleBtuton); - }]; - - [self.dayBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(68); - make.height.mas_equalTo(24); - make.left.mas_equalTo(32); - make.top.mas_equalTo(59); - }]; - [self.zhouBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.equalTo(self.utensilRegard); - make.width.height.top.equalTo(self.dayBtuton); - }]; - [self.monthBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.top.equalTo(self.dayBtuton); - make.right.mas_equalTo(-32); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(40); - make.centerX.top.bottom.mas_equalTo(self.separationRegard); - }]; - - [self.satellitetBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - - make.right.mas_equalTo(self.titleLabel.mas_left); - make.top.bottom.mas_equalTo(self.separationRegard); - }]; - - [self.endBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - - make.left.mas_equalTo(self.titleLabel.mas_right); - make.top.bottom.mas_equalTo(self.separationRegard); - }]; -} -- (void)layoutSubviews{ - [super layoutSubviews]; - [self.backgroundIndicateRegard setMonopolizeAboutContraryApexMonopolize:18 rightTopCorner:18 bottomLeftCorner:0 bottomRightCorner:0 size:self.backgroundIndicateRegard.frame.size]; - -} -- (void)weekSeasonAboutUniversalEngagement:(NSDate *)date { - NSCalendar * calendar = [NSCalendar currentCalendar]; - - NSDateComponents *comps = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitWeekday | NSCalendarUnitDay fromDate:date]; - - - NSInteger weekDay = [comps weekday]; - - NSInteger day = [comps day]; - long firstDiff,lastDiff; - if (weekDay == 1){ - firstDiff = -6; - lastDiff = 0; - } else { - firstDiff = -(weekDay - 2); - lastDiff = 8 - weekDay; - } - - NSDateComponents *baseDayComp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:date]; - - [baseDayComp setDay:day + firstDiff]; - NSDate *firstDayOfWeek = [calendar dateFromComponents:baseDayComp]; - self.startDate = firstDayOfWeek; - - [baseDayComp setDay:day + lastDiff]; - NSDate *lastDayOfWeek = [calendar dateFromComponents:baseDayComp]; - self.endDate = lastDayOfWeek; - - - if(self.threeMinSatellitetEngagement == nil){ - [baseDayComp setDay:day + firstDiff - 3 * 4 * 7]; - self.threeMinSatellitetEngagement = [calendar dateFromComponents:baseDayComp]; - [baseDayComp setDay:day + lastDiff - 3 * 4 * 7]; - self.threeMinEndEngagement = [calendar dateFromComponents:baseDayComp]; - [baseDayComp setDay:day + firstDiff ]; - self.threeLargestSatellitetEngagement = [calendar dateFromComponents:baseDayComp]; - [baseDayComp setDay:day + lastDiff ]; - self.threeLargestEndEngagement = [calendar dateFromComponents:baseDayComp]; - } - - - -} -- (void)datePicker:(YUMIUnionIntratemporalMonthPickerRegard *)datePicker dateDidChange:(NSDate *)date{ - if(self.extractEngagementGenre != YUMINewUnionTimePickGenreMonth)return; - [self.satellitetBtuton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; - [self.satellitetBtuton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateSelected]; - [self.endBtuton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; - [self.endBtuton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateSelected]; - [self monthAboutUniversalEngagement:date]; - NSString *startDateStr = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:date]; - NSString *endDateStr = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:self.endDate]; - [self.satellitetBtuton setTitle:startDateStr forState:UIControlStateSelected]; - [self.endBtuton setTitle:endDateStr forState:UIControlStateSelected]; -} -- (void)monthAboutUniversalEngagement:(NSDate *)newDate { - if (newDate == nil) { - newDate = [NSDate date]; - } - double interval = 0; - NSDate *beginDate = nil; - NSDate *endDate = nil; - NSCalendar *calendar = [NSCalendar currentCalendar]; - [calendar setFirstWeekday:2]; - BOOL ok = [calendar rangeOfUnit:NSCalendarUnitMonth startDate:&beginDate interval:&interval forDate:newDate]; - if (ok) { - endDate = [beginDate dateByAddingTimeInterval:interval-1]; - } else { - return; - } - self.startDate = beginDate; - self.endDate = endDate; -} -#pragma mark - Event -- (void)onTicktackRevoctowardsionBtuton:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIStrangeUnionIntrtowardsemporalExtractRegard:didTicktackRevoctowardsion:)]) { - [self.delegate yUMIStrangeUnionIntrtowardsemporalExtractRegard:self didTicktackRevoctowardsion:sender]; - } -} - -- (void)onTicktackSureBtuton:(UIButton *)sender { - if (self.extractEngagementGenre == YUMINewUnionTimePickGenreWeek) { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIStrangeUnionIntrtowardsemporalExtractRegard:didClickSure:)]) { - [self.delegate yUMIStrangeUnionIntrtowardsemporalExtractRegard:self didClickSure:sender]; - } - } else { - NSDateComponents *delta = [[NSCalendar currentCalendar] components:NSCalendarUnitDay fromDate:self.startDate toDate:self.endDate options:0]; - if ([self.startDate compare:[NSDate date]] == NSOrderedDescending) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Guild_Time_Pick_View_0")]; - return; - } else if ([self.endDate compare:[NSDate date]] == NSOrderedDescending) { - self.endDate = [NSDate date]; - } else if ([self.startDate compare:self.endDate] == NSOrderedDescending) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Guild_Time_Pick_View_1")]; - return; - } else if (delta.day > 180) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Guild_Time_Pick_View_2")]; - return; - } - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIStrangeUnionIntrtowardsemporalExtractRegard:didClickSure:)]) { - [self.delegate yUMIStrangeUnionIntrtowardsemporalExtractRegard:self didClickSure:sender]; - } - } -} - -- (void)engagementExtracterBWSttessDiversifictowardsion:(UIDatePicker *)datepick { - [self.satellitetBtuton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; - [self.satellitetBtuton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateSelected]; - [self.endBtuton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; - [self.endBtuton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateSelected]; - if(self.extractEngagementGenre == YUMINewUnionTimePickGenreDay){ - - - - - - [self.satellitetBtuton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; - [self.satellitetBtuton setTitleColor:[DJDKMIMOMColor introjectionEssayPrettify] forState:UIControlStateSelected]; - [self.endBtuton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; - [self.endBtuton setTitleColor:[DJDKMIMOMColor introjectionEssayPrettify] forState:UIControlStateSelected]; - NSString *dateStr = [self.engagementInitialiser stringFromDate:datepick.date]; - - if (self.satellitetBtuton.isSelected) { - self.startDate = datepick.date; - [self.satellitetBtuton setTitle:dateStr forState:UIControlStateNormal]; - [self.satellitetBtuton setTitle:dateStr forState:UIControlStateSelected]; - if ([self.startDate compare:self.endDate] == NSOrderedDescending) { - self.endDate = datepick.date; - [self.endBtuton setTitle:dateStr forState:UIControlStateNormal]; - [self.endBtuton setTitle:dateStr forState:UIControlStateSelected]; - } - } else { - if ([self.startDate compare:datepick.date] == NSOrderedDescending) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Guild_Time_Pick_View_3")]; - dateStr = [self.engagementInitialiser stringFromDate:self.startDate]; - self.endDate = self.startDate; - [self.endBtuton setTitle:dateStr forState:UIControlStateNormal]; - [self.endBtuton setTitle:dateStr forState:UIControlStateSelected]; - self.datePicker.date = self.startDate; - } else { - self.endDate = datepick.date; - [self.endBtuton setTitle:dateStr forState:UIControlStateNormal]; - [self.endBtuton setTitle:dateStr forState:UIControlStateSelected]; - } - } - - - }else if (self.extractEngagementGenre == YUMINewUnionTimePickGenreWeek) { - [self weekSeasonAboutUniversalEngagement:datepick.date]; - if(self.veiledBtuton == YES){ - - NSDateFormatter *initialiser = [[NSDateFormatter alloc]init]; - [initialiser setDateFormat:@"yyyy-MM-dd"]; - NSDate *resDate; - -#ifdef DEBUG - resDate = [initialiser dateFromString:@"2022-09-05"]; -#else - resDate = [initialiser dateFromString:@"2022-12-05"]; -#endif - if([self.startDate compare:resDate] == NSOrderedAscending){ - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Guild_Time_Pick_View_6")]; - NSString *startDateStr = [self.engagementInitialiser stringFromDate:resDate]; - NSString *endDateStr = [self.engagementInitialiser stringFromDate:self.threeMinEndEngagement]; - [self.satellitetBtuton setTitle:startDateStr forState:UIControlStateSelected]; - [self.endBtuton setTitle:endDateStr forState:UIControlStateSelected]; - self.datePicker.date = resDate; - return; - }else if([self.startDate compare:self.threeMinSatellitetEngagement] == NSOrderedAscending){ - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Guild_Time_Pick_View_6")]; - NSString *startDateStr = [self.engagementInitialiser stringFromDate:self.threeMinSatellitetEngagement]; - NSString *endDateStr = [self.engagementInitialiser stringFromDate:self.threeMinEndEngagement]; - [self.satellitetBtuton setTitle:startDateStr forState:UIControlStateSelected]; - [self.endBtuton setTitle:endDateStr forState:UIControlStateSelected]; - self.datePicker.date = self.threeMinSatellitetEngagement; - return; - }else if ([self.startDate compare:self.threeLargestSatellitetEngagement] == NSOrderedDescending){ - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Guild_Time_Pick_View_6")]; - NSString *startDateStr = [self.engagementInitialiser stringFromDate:self.threeLargestSatellitetEngagement]; - NSString *endDateStr = [self.engagementInitialiser stringFromDate:self.threeLargestEndEngagement]; - [self.satellitetBtuton setTitle:startDateStr forState:UIControlStateSelected]; - [self.endBtuton setTitle:endDateStr forState:UIControlStateSelected]; - self.datePicker.date = self.threeLargestSatellitetEngagement; - return; - } - } - NSString *startDateStr = [self.engagementInitialiser stringFromDate:self.startDate]; - NSString *endDateStr = [self.engagementInitialiser stringFromDate:self.endDate]; - [self.satellitetBtuton setTitle:startDateStr forState:UIControlStateSelected]; - [self.endBtuton setTitle:endDateStr forState:UIControlStateSelected]; - - - } -} - -- (void)onTicktackInititowardseBtuton:(UIButton *)sender { - if(self.extractEngagementGenre != YUMINewUnionTimePickGenreDay)return; - self.satellitetBtuton.selected = YES; - self.endBtuton.selected = NO; - self.datePicker.date = self.startDate; -} - -- (void)onTicktackConcludeBtuton:(UIButton *)sender { - if(self.extractEngagementGenre != YUMINewUnionTimePickGenreDay)return; - self.satellitetBtuton.selected = NO; - self.endBtuton.selected = YES; - self.datePicker.date = self.endDate; - -} --(void)clickSeasonPerformance{ - self.dayBtuton.selected = YES; - self.zhouBtuton.selected = NO; - self.monthBtuton.selected = NO; - - - self.datePicker.date = self.startDate; - self.monthExtracterRegard.hidden = YES; - self.extractEngagementGenre = YUMINewUnionTimePickGenreDay; -} --(void)clickZhouPerformance{ - self.dayBtuton.selected = NO; - self.zhouBtuton.selected = YES; - self.monthBtuton.selected = NO; - - self.extractEngagementGenre = YUMINewUnionTimePickGenreWeek; - self.datePicker.date = self.startDate; - self.monthExtracterRegard.hidden = YES; - -} --(void)clickDianaPerformance{ - self.dayBtuton.selected = NO; - self.zhouBtuton.selected = NO; - self.monthBtuton.selected = YES; - self.extractEngagementGenre = YUMINewUnionTimePickGenreMonth; - - - [self.monthExtracterRegard showView]; - [self.monthExtracterRegard setDate:[NSDate date] animated:YES]; - -} -#pragma mark - Getters And Setters -- (void)setCurrentDate:(NSDate *)currentDate { - _currentDate = currentDate; - if (_currentDate) { - NSDateComponents *comps = nil; comps = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitMonth fromDate:_currentDate]; - NSDateComponents *adcomps = [[NSDateComponents alloc] init]; - [adcomps setYear:-25]; - [adcomps setMonth:0]; - [adcomps setDay:0]; - NSDate *minDate = [self.calendar dateByAddingComponents:adcomps toDate:_currentDate options:0]; - - NSDateComponents *maxcomps = [[NSDateComponents alloc] init]; - [maxcomps setYear:25]; - [maxcomps setMonth:0]; - [maxcomps setDay:0]; - NSDate *maxDate = [self.calendar dateByAddingComponents:maxcomps toDate:_currentDate options:0]; - self.datePicker.minimumDate = minDate; - self.datePicker.maximumDate = maxDate; - self.datePicker.date = _currentDate; - } -} - -- (void)setExtractEngagementGenre:(YUMINewUnionTimePickGenre)extractEngagementGenre { - _extractEngagementGenre = extractEngagementGenre; - [self.satellitetBtuton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; - [self.satellitetBtuton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateSelected]; - [self.endBtuton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; - [self.endBtuton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateSelected]; - if(extractEngagementGenre == YUMINewUnionTimePickGenreDay){ - [self.satellitetBtuton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; - [self.satellitetBtuton setTitleColor:[DJDKMIMOMColor introjectionEssayPrettify] forState:UIControlStateSelected]; - [self.endBtuton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; - [self.endBtuton setTitleColor:[DJDKMIMOMColor introjectionEssayPrettify] forState:UIControlStateSelected]; - self.satellitetBtuton.selected = YES; - self.endBtuton.selected = NO; - NSString *dateStr = [self.engagementInitialiser stringFromDate:self.currentDate]; - [self.satellitetBtuton setTitle:dateStr forState:UIControlStateNormal]; - [self.satellitetBtuton setTitle:dateStr forState:UIControlStateSelected]; - [self.endBtuton setTitle:dateStr forState:UIControlStateNormal]; - [self.endBtuton setTitle:dateStr forState:UIControlStateSelected]; - self.startDate = _currentDate; - self.endDate = _currentDate; - }else if (extractEngagementGenre == YUMINewUnionTimePickGenreWeek) { - [self weekSeasonAboutUniversalEngagement:self.currentDate]; - NSString *startDateStr = [self.engagementInitialiser stringFromDate:self.startDate]; - NSString *endDateStr = [self.engagementInitialiser stringFromDate:self.endDate]; - [self.satellitetBtuton setTitle:startDateStr forState:UIControlStateSelected]; - [self.endBtuton setTitle:endDateStr forState:UIControlStateSelected]; - self.satellitetBtuton.selected = YES; - self.endBtuton.selected = YES; - }else{ - [self monthAboutUniversalEngagement:self.startDate]; - NSString *startDateStr = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:self.startDate]; - NSString *endDateStr = [PLIntratemporalUtil acquireYYMMDDAboutEngagement:self.endDate]; - [self.satellitetBtuton setTitle:startDateStr forState:UIControlStateSelected]; - [self.endBtuton setTitle:endDateStr forState:UIControlStateSelected]; - self.satellitetBtuton.selected = YES; - self.endBtuton.selected = YES; - } -} - - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 0; - } - return _stackView; -} - -- (UIView *)utensilRegard { - if (!_utensilRegard) { - _utensilRegard = [[UIView alloc] init]; - _utensilRegard.backgroundColor = [UIColor clearColor]; - } - return _utensilRegard; -} - -- (UIView *)separationRegard { - if (!_separationRegard) { - _separationRegard = [[UIView alloc] init]; - _separationRegard.backgroundColor = [UIColor clearColor]; - } - return _separationRegard; -} - - -- (UIButton *)cancleBtuton { - if (!_cancleBtuton) { - _cancleBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_cancleBtuton setTitle:YMLocalizedString(@"YUMI_Guild_Time_Pick_View_4") forState:UIControlStateNormal]; - [_cancleBtuton addTarget:self action:@selector(onTicktackRevoctowardsionBtuton:) forControlEvents:UIControlEventTouchUpInside]; - _cancleBtuton.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; - [_cancleBtuton setTitleColor:[DJDKMIMOMColor essayTertiusPrettify] forState:UIControlStateNormal]; - } - return _cancleBtuton; -} - -- (UIButton *)sureBtuton { - if (!_sureBtuton) { - _sureBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_sureBtuton setTitle:YMLocalizedString(@"YUMI_Guild_Time_Pick_View_5") forState:UIControlStateNormal]; - [_sureBtuton addTarget:self action:@selector(onTicktackSureBtuton:) forControlEvents:UIControlEventTouchUpInside]; - _sureBtuton.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; - [_sureBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateNormal]; - } - return _sureBtuton; -} - -- (NSDateFormatter *)engagementInitialiser { - if (!_engagementInitialiser) { - _engagementInitialiser = [[NSDateFormatter alloc] init]; - _engagementInitialiser.dateFormat = @"YYYY-MM-dd"; - } - return _engagementInitialiser; -} - -- (UIDatePicker *)datePicker { - if (!_datePicker){ - _datePicker = [[UIDatePicker alloc] init]; - _datePicker.datePickerMode = UIDatePickerModeDate; - - if (@available(iOS 13.4, *)) { - _datePicker.preferredDatePickerStyle = UIDatePickerStyleWheels; - } - if (@available(iOS 13.0, *)) { - _datePicker.overrideUserInterfaceStyle = UIUserInterfaceStyleLight; - } - [_datePicker addTarget:self action:@selector(engagementExtracterBWSttessDiversifictowardsion:) forControlEvents:UIControlEventValueChanged]; - } - return _datePicker; -} - -- (UIButton *)satellitetBtuton { - if (!_satellitetBtuton) { - _satellitetBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_satellitetBtuton addTarget:self action:@selector(onTicktackInititowardseBtuton:) forControlEvents:UIControlEventTouchUpInside]; - _satellitetBtuton.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; - [_satellitetBtuton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; - [_satellitetBtuton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateSelected]; - [_satellitetBtuton.titleLabel sizeToFit]; - _satellitetBtuton.selected = YES; - } - return _satellitetBtuton; -} - -- (UIButton *)endBtuton { - if (!_endBtuton) { - _endBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_endBtuton addTarget:self action:@selector(onTicktackConcludeBtuton:) forControlEvents:UIControlEventTouchUpInside]; - _endBtuton.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; - [_endBtuton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; - [_endBtuton setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateSelected]; - _endBtuton.titleLabel.textAlignment = NSTextAlignmentRight; - _endBtuton.selected = YES; - } - return _endBtuton; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"App_Common_To"); - _titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.textColor = UIColorFromRGB(0x6D6B89); - } - return _titleLabel; -} - -- (NSCalendar *)calendar { - if (!_calendar) { - _calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; - } - return _calendar; -} - -- (UIImageView *)backgroundIndicateRegard { - if (!_backgroundIndicateRegard) { - _backgroundIndicateRegard = [[UIImageView alloc] init]; - _backgroundIndicateRegard.backgroundColor = [UIColor whiteColor]; - - - } - return _backgroundIndicateRegard; -} -- (UIButton *)dayBtuton{ - if (!_dayBtuton){ - _dayBtuton = [UIButton new]; - _dayBtuton.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; - [_dayBtuton setTitle:YMLocalizedString(@"App_Commont_Days") forState:UIControlStateNormal]; - [_dayBtuton setTitleColor:UIColorFromRGB(0xB3B3C3) forState:UIControlStateNormal]; - [_dayBtuton setTitleColor:DJDKMIMOMColor.aplictowardsionMainPrettify forState:UIControlStateSelected]; - UIImage *chooseImage = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xCCF8F9),UIColorFromRGB(0xDEE4FF),UIColorFromRGB(0xEEDCFF)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(68,24)]; - UIImage *noChooseImage = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(68,24)]; - [_dayBtuton setBackgroundImage:chooseImage forState:UIControlStateSelected]; - [_dayBtuton setBackgroundImage:noChooseImage forState:UIControlStateNormal]; - _dayBtuton.selected = YES; - [_dayBtuton setMonopolizeAboutContraryApexMonopolize:3 rightTopCorner:3 bottomLeftCorner:3 bottomRightCorner:3 size:CGSizeMake(68,24)]; - [_dayBtuton addTarget:self action:@selector(clickSeasonPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _dayBtuton; -} -- (UIButton *)zhouBtuton{ - if (!_zhouBtuton){ - _zhouBtuton = [UIButton new]; - _zhouBtuton.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; - [_zhouBtuton setTitle:YMLocalizedString(@"App_Commont_Week") forState:UIControlStateNormal]; - [_zhouBtuton setTitleColor:UIColorFromRGB(0xB3B3C3) forState:UIControlStateNormal]; - [_zhouBtuton setTitleColor:DJDKMIMOMColor.aplictowardsionMainPrettify forState:UIControlStateSelected]; - UIImage *chooseImage = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xCCF8F9),UIColorFromRGB(0xDEE4FF),UIColorFromRGB(0xEEDCFF)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(68,24)]; - UIImage *noChooseImage = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(68,24)]; - [_zhouBtuton setBackgroundImage:chooseImage forState:UIControlStateSelected]; - [_zhouBtuton setBackgroundImage:noChooseImage forState:UIControlStateNormal]; - [_zhouBtuton setMonopolizeAboutContraryApexMonopolize:3 rightTopCorner:3 bottomLeftCorner:3 bottomRightCorner:3 size:CGSizeMake(68,24)]; - [_zhouBtuton addTarget:self action:@selector(clickZhouPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _zhouBtuton; -} -- (UIButton *)monthBtuton{ - if (!_monthBtuton){ - _monthBtuton = [UIButton new]; - _monthBtuton.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; - [_monthBtuton setTitle:YMLocalizedString(@"App_Commont_Month") forState:UIControlStateNormal]; - [_monthBtuton setTitleColor:UIColorFromRGB(0xB3B3C3) forState:UIControlStateNormal]; - [_monthBtuton setTitleColor:DJDKMIMOMColor.aplictowardsionMainPrettify forState:UIControlStateSelected]; - UIImage *chooseImage = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xCCF8F9),UIColorFromRGB(0xDEE4FF),UIColorFromRGB(0xEEDCFF)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(68,24)]; - UIImage *noChooseImage = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0),UIColorFromRGB(0xE6E6F0)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(68,24)]; - [_monthBtuton setBackgroundImage:chooseImage forState:UIControlStateSelected]; - [_monthBtuton setBackgroundImage:noChooseImage forState:UIControlStateNormal]; - [_monthBtuton setMonopolizeAboutContraryApexMonopolize:3 rightTopCorner:3 bottomLeftCorner:3 bottomRightCorner:3 size:CGSizeMake(68,24)]; - [_monthBtuton addTarget:self action:@selector(clickDianaPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _monthBtuton; -} -- (YUMIUnionIntratemporalMonthPickerRegard *)monthExtracterRegard { - if (!_monthExtracterRegard) { - _monthExtracterRegard = [[YUMIUnionIntratemporalMonthPickerRegard alloc] initNoEncourageBtutonAboutSenstowardsionalRegard:self]; - _monthExtracterRegard.delegate = self; - _monthExtracterRegard.datePickerMode = HooDatePickerModeYearAndMonth; - [_monthExtracterRegard setTintColor:UIColorFromRGB(0x999999)]; - [_monthExtracterRegard setHighlightPrettify:UIColorFromRGB(0x333333)]; - NSDate * date = [NSDate date]; - NSDateComponents *comps = nil; comps = [[NSCalendar partowardsiciptowardsiondCalconcludear] components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitMonth fromDate:date]; - NSDateComponents *adcomps = [[NSDateComponents alloc] init]; - [adcomps setYear:-15]; - [adcomps setMonth:0]; - [adcomps setDay:0]; - NSDate *minDate = [[NSCalendar partowardsiciptowardsiondCalconcludear] dateByAddingComponents:adcomps toDate:date options:0]; - - NSDateComponents *maxcomps = [[NSDateComponents alloc] init]; - [maxcomps setYear:15]; - [maxcomps setMonth:0]; - [maxcomps setDay:0]; - NSDate *maxDate = [[NSCalendar partowardsiciptowardsiondCalconcludear] dateByAddingComponents:maxcomps toDate:date options:0]; - _monthExtracterRegard.minimumDate = minDate; - _monthExtracterRegard.maximumDate = maxDate; - - } - return _monthExtracterRegard; -} -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIStrangeUnionRevenueIntelligencerRegard.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIStrangeUnionRevenueIntelligencerRegard.h deleted file mode 100644 index f176dd0d..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIStrangeUnionRevenueIntelligencerRegard.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YUMIStrangeUnionRevenueIntelligencerRegard.h -// YuMi -// -// Created by YuMi on 2022/11/9. -// - -#import -#import "YUMIStrangeManeUnionRevenueReflectionRegardGovernancer.h" -NS_ASSUME_NONNULL_BEGIN -@class YUMIStrangeUnionRevenueIntelligencerRegard; -@protocol FBCStrangeUnionIncomeIntelligencerRegardRepresendtation - -- (void)yUMIStrangeUnionRevenueIntelligencerRegard:(YUMIStrangeUnionRevenueIntelligencerRegard *)view didChooseTime:(UIButton *)sender; - -@end -@interface YUMIStrangeUnionRevenueIntelligencerRegard : UIView -@property (nonatomic,weak) id delegate; -@property (nonatomic,assign) NewUnionIncomeRecrdTimeGenre intratemporalGenre; - -@property (nonatomic,copy) NSString *generalRevenue; - -- (void)prohibitipositionIntelligencerRegard:(NSDate *)startDate endTime:(NSDate * _Nullable)endDate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIStrangeUnionRevenueIntelligencerRegard.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIStrangeUnionRevenueIntelligencerRegard.m deleted file mode 100644 index b4c9735a..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIStrangeUnionRevenueIntelligencerRegard.m +++ /dev/null @@ -1,253 +0,0 @@ -// -// YUMIStrangeUnionRevenueIntelligencerRegard.m -// YuMi -// -// Created by YuMi on 2022/11/9. -// -///Third -#import -#import "DJDKMIMOMColor.h" - -#import "NSString+Utils.h" -#import "UIView+Corner.h" -#import "UIImage+Utils.h" -#import "UIButton+EnlargeTouchArea.h" -#import "YUMIStrangeUnionRevenueIntelligencerRegard.h" -@interface YUMIStrangeUnionRevenueIntelligencerRegard() -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) UILabel *yearSequencignation; -@property (nonatomic,strong) UILabel *satellitetSequencignation; -@property (nonatomic,strong) UILabel *endSequencignation; -@property (nonatomic,strong) UIButton *arrowBtuton; -@property (nonatomic,strong) UIView * burlywoodRegard; -@property (nonatomic,strong) UILabel *generalSequencignation; -@property (nonatomic,strong) UILabel *tangerineSequencignation; -@property (nonatomic,strong) NSDateFormatter *initialiser; -@end -@implementation YUMIStrangeUnionRevenueIntelligencerRegard -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Public Method -- (void)prohibitipositionIntelligencerRegard:(NSDate *)startDate endTime:(NSDate * _Nullable)endDate { - [self.initialiser setDateFormat:YMLocalizedString(@"App_Common_Year")]; - NSString *currentYear = [self.initialiser stringFromDate:startDate]; - self.yearSequencignation.text = currentYear; - if (self.intratemporalGenre == NewUnionIncomeRecrdTimeGenre_Day) { - [self.initialiser setDateFormat:YMLocalizedString(@"YUMI_Guild_Income_Header_View_0")]; - NSString * currentDay = [self.initialiser stringFromDate:startDate]; - self.satellitetSequencignation.text = currentDay; - NSString * endDayStr = [self.initialiser stringFromDate:endDate]; - self.endSequencignation.text = endDayStr; - } else if(self.intratemporalGenre == NewUnionIncomeRecrdTimeGenre_Week) { - [self.initialiser setDateFormat:YMLocalizedString(@"YUMI_Guild_Income_Header_View_1")]; - NSString * currentDay = [self.initialiser stringFromDate:startDate]; - self.satellitetSequencignation.text = currentDay; - - NSString * endDayStr = [self.initialiser stringFromDate:endDate]; - self.endSequencignation.text = endDayStr; - } else { - [self.initialiser setDateFormat:YMLocalizedString(@"YUMI_Guild_Income_Header_View_5")]; - NSString * currentDay = [self.initialiser stringFromDate:startDate]; - self.satellitetSequencignation.text = currentDay; - } -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor whiteColor]; - [self.encourageIndicateRegard setMonopolizeAboutContraryApexMonopolize:kGetScaleWidth(10) rightTopCorner:kGetScaleWidth(10) bottomLeftCorner:kGetScaleWidth(10) bottomRightCorner:kGetScaleWidth(10) size:CGSizeMake(kGetScaleWidth(345), kGetScaleWidth(75))]; - [self addSubview:self.encourageIndicateRegard]; - [self.encourageIndicateRegard addSubview:self.yearSequencignation]; - [self.encourageIndicateRegard addSubview:self.satellitetSequencignation]; - [self.encourageIndicateRegard addSubview:self.endSequencignation]; - [self.encourageIndicateRegard addSubview:self.arrowBtuton]; - [self.encourageIndicateRegard addSubview:self.burlywoodRegard]; - [self.encourageIndicateRegard addSubview:self.generalSequencignation]; - [self.encourageIndicateRegard addSubview:self.tangerineSequencignation]; - - -} - -- (void)initChildLyRestrictions { - - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - - make.left.mas_equalTo(kGetScaleWidth(15)); - make.right.mas_equalTo(-kGetScaleWidth(15)); - make.height.mas_equalTo(kGetScaleWidth(75)); - make.top.mas_equalTo(self); - }]; - - [self.yearSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(14)); - make.top.mas_equalTo(kGetScaleWidth(10)); - make.height.mas_equalTo(kGetScaleWidth(12)); - }]; - - [self.satellitetSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.yearSequencignation); - make.top.mas_equalTo(kGetScaleWidth(28)); - make.height.mas_equalTo(kGetScaleWidth(17)); - - - }]; - [self.endSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.width.height.equalTo(self.satellitetSequencignation); - make.top.equalTo(self.satellitetSequencignation.mas_bottom).mas_offset(kGetScaleWidth(2)); - }]; - [self.arrowBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.satellitetSequencignation.mas_right).offset(1); - make.centerY.mas_equalTo(self.burlywoodRegard); - make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(20), kGetScaleWidth(20))); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(1), kGetScaleWidth(49))); - make.bottom.mas_equalTo(self.encourageIndicateRegard).offset(-kGetScaleWidth(13)); - make.left.equalTo(self.arrowBtuton.mas_right).mas_offset(kGetScaleWidth(9)); - }]; - - [self.generalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageIndicateRegard.mas_left).offset(kGetScaleWidth(127)); - make.top.mas_equalTo(kGetScaleWidth(28)); - make.height.mas_equalTo(kGetScaleWidth(12)); - }]; - - [self.tangerineSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.generalSequencignation); - make.top.mas_equalTo(kGetScaleWidth(46)); - make.height.mas_equalTo(kGetScaleWidth(17)); - make.right.mas_equalTo(-kGetScaleWidth(14)); - }]; -} - -#pragma mark - Event Response -- (void)arrowBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIStrangeUnionRevenueIntelligencerRegard:didChooseTime:)]) { - [self.delegate yUMIStrangeUnionRevenueIntelligencerRegard:self didChooseTime:sender]; - } -} - -#pragma mark - Getters And Setters -- (void)setGeneralRevenue:(NSString *)generalRevenue { - _generalRevenue = generalRevenue; - if (_generalRevenue == nil) { - _generalRevenue = @"0"; - } - NSString * title = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Guild_Income_Header_View_2"), [NSString acquireDealFigurewithsttri:_generalRevenue]]; - NSRange range = [title rangeOfString:YMLocalizedString(@"YUMI_Guild_Income_Header_View_3")]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:23],NSForegroundColorAttributeName:[UIColor whiteColor]}]; - [attribute addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:18] range:range]; - self.tangerineSequencignation.attributedText = attribute; -} - -- (void)setIntratemporalGenre:(NewUnionIncomeRecrdTimeGenre)intratemporalGenre { - _intratemporalGenre = intratemporalGenre; - switch (_intratemporalGenre) { - case NewUnionIncomeRecrdTimeGenre_Day: - self.endSequencignation.hidden = NO; - break; - case NewUnionIncomeRecrdTimeGenre_Week: - self.endSequencignation.hidden = NO; - break; - case NewUnionIncomeRecrdTimeGenre_Mouth: - self.endSequencignation.hidden = YES; - break; - default: - break; - } -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - UIImage *image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0x2B4658),UIColorFromRGB(0x363E45)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(kGetScaleWidth(345), kGetScaleWidth(75))]; - _encourageIndicateRegard.image = image; - } - return _encourageIndicateRegard; -} - -- (UILabel *)yearSequencignation { - if (!_yearSequencignation) { - _yearSequencignation = [[UILabel alloc] init]; - _yearSequencignation.font = [UIFont systemFontOfSize:10]; - _yearSequencignation.textColor = [UIColor colorWithWhite:1 alpha:0.8]; - } - return _yearSequencignation; -} - - - -- (UILabel *)satellitetSequencignation { - if (!_satellitetSequencignation) { - _satellitetSequencignation = [[UILabel alloc] init]; - _satellitetSequencignation.font = [UIFont systemFontOfSize:14]; - _satellitetSequencignation.textColor = [UIColor whiteColor]; - } - return _satellitetSequencignation; -} - -- (UILabel *)endSequencignation { - if (!_endSequencignation) { - _endSequencignation = [[UILabel alloc] init]; - _endSequencignation.font = [UIFont systemFontOfSize:14]; - _endSequencignation.textColor = [UIColor whiteColor]; - } - return _endSequencignation; -} - -- (UIButton *)arrowBtuton { - if (!_arrowBtuton) { - _arrowBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_arrowBtuton setImage:[UIImage imageNamed:@"yumi_center_guild_income_record_arrow"] forState:UIControlStateNormal]; - [_arrowBtuton setImage:[UIImage imageNamed:@"yumi_center_guild_income_record_arrow"] forState:UIControlStateSelected]; - [_arrowBtuton addTarget:self action:@selector(arrowBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_arrowBtuton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:10]; - } - return _arrowBtuton; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [UIColor colorWithWhite:1 alpha:0.1]; - } - return _burlywoodRegard; -} - -- (UILabel *)generalSequencignation { - if (!_generalSequencignation) { - _generalSequencignation = [[UILabel alloc] init]; - _generalSequencignation.text = YMLocalizedString(@"YUMI_Guild_Income_Header_View_4"); - _generalSequencignation.font = [UIFont systemFontOfSize:11]; - _generalSequencignation.textColor = [UIColor whiteColor]; - } - return _generalSequencignation; -} - -- (UILabel *)tangerineSequencignation { - if (!_tangerineSequencignation) { - _tangerineSequencignation = [[UILabel alloc] init]; - _tangerineSequencignation.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; - _tangerineSequencignation.text = @"0"; - _tangerineSequencignation.textColor = [UIColor whiteColor]; - } - return _tangerineSequencignation; -} - -- (NSDateFormatter *)initialiser { - if (!_initialiser) { - _initialiser = [[NSDateFormatter alloc] init]; - } - return _initialiser; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionHuntforNevRegard.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionHuntforNevRegard.h deleted file mode 100644 index d91a2fbe..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionHuntforNevRegard.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YUMIUnionHuntforNevRegard.h -// YuMi -// -// Created by YuMi on 2022/4/7. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class YUMIUnionHuntforNevRegard; -@protocol FBCUnionHuntforNevRegardRepresendtation -- (void)yUMIUnionHuntforNevRegard:(YUMIUnionHuntforNevRegard *)view didClickBack:(UIButton *)sender; -- (void)yUMIUnionHuntforNevRegard:(YUMIUnionHuntforNevRegard *)view didClickSearch:(UIButton *)sender; -@end - -@interface YUMIUnionHuntforNevRegard : UIView -@property (nonatomic,strong,readonly) UITextField *searchTextField; -@property (nonatomic,weak) id delegate; -@property (nonatomic,copy) NSString *deparatmentMaintainrietary; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionHuntforNevRegard.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionHuntforNevRegard.m deleted file mode 100644 index ae9e63d4..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionHuntforNevRegard.m +++ /dev/null @@ -1,171 +0,0 @@ -// -// YUMIUnionHuntforNevRegard.m -// YuMi -// -// Created by YuMi on 2022/4/7. -// - -#import "YUMIUnionHuntforNevRegard.h" -#import -#import "DJDKMIMOMColor.h" - -#import "UIButton+EnlargeTouchArea.h" -@interface YUMIUnionHuntforNevRegard () -@property (nonatomic,strong) UIButton *backButton; -@property (nonatomic,strong) UIView * introjectionEncourageRegard; -@property (nonatomic,strong) UIImageView *huntforIndicateRegard; -@property (nonatomic,strong) UITextField *searchTextField; -@property (nonatomic,strong) UIButton *cancleBtuton; - -@end - - -@implementation YUMIUnionHuntforNevRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - - - - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor whiteColor]; - [self addSubview:self.backButton]; - [self addSubview:self.introjectionEncourageRegard]; - [self addSubview:self.cancleBtuton]; - - [self.introjectionEncourageRegard addSubview:self.huntforIndicateRegard]; - [self.introjectionEncourageRegard addSubview:self.searchTextField]; -} - -- (void)initChildLyRestrictions { - [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(22, 22)); - make.left.mas_equalTo(self).offset(8); - make.centerY.mas_equalTo(self.introjectionEncourageRegard); - }]; - - [self.introjectionEncourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(-8); - make.left.mas_equalTo(self.backButton.mas_right).offset(5); - make.right.mas_equalTo(self.cancleBtuton.mas_left).offset(-13); - make.height.mas_equalTo(30); - }]; - - [self.cancleBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self).offset(-15); - make.centerY.mas_equalTo(self.introjectionEncourageRegard); - make.height.mas_equalTo(30); - }]; - - [self.huntforIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(22, 22)); - make.centerY.mas_equalTo(self.introjectionEncourageRegard); - make.left.mas_equalTo(self.introjectionEncourageRegard).offset(13); - }]; - - [self.searchTextField mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.huntforIndicateRegard.mas_right).mas_offset(4); - make.top.bottom.mas_equalTo(self.introjectionEncourageRegard); - make.right.mas_equalTo(-13); - }]; -} - -#pragma mark - UITextFieldDelegate -- (BOOL)textFieldShouldReturn:(UITextField *)essayUniverse { - [self cancleBtutonPerformance:self.cancleBtuton]; - return YES; -} - - -#pragma mark - Event Response -- (void)cancleBtutonPerformance:(UIButton *)sender { - [self.searchTextField resignFirstResponder]; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIUnionHuntforNevRegard:didClickSearch:)]) { - [self.delegate yUMIUnionHuntforNevRegard:self didClickSearch:sender]; - } -} - -- (void)encourageBtutonPerformance:(UIButton *)sender { - [self.searchTextField resignFirstResponder]; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIUnionHuntforNevRegard:didClickBack:)]) { - [self.delegate yUMIUnionHuntforNevRegard:self didClickBack:sender]; - } -} - -#pragma mark - Getters And Setters -- (void)setDeparatmentMaintainrietary:(NSString *)deparatmentMaintainrietary { - _deparatmentMaintainrietary= deparatmentMaintainrietary; - if (_deparatmentMaintainrietary) { - _searchTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:_deparatmentMaintainrietary attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:13], NSForegroundColorAttributeName : [DJDKMIMOMColor instantEssayPrettify]}]; - } -} - -- (UIButton *)backButton { - if (!_backButton) { - _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backButton setImage:[UIImage imageNamed:@"yumi_same_title_back"] forState:UIControlStateNormal]; - [_backButton setImage:[UIImage imageNamed:@"yumi_same_title_back"] forState:UIControlStateSelected]; - [_backButton addTarget:self action:@selector(encourageBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_backButton setEnlargeEdgeAboutApex:10 right:5 bottom:10 left:8]; - } - return _backButton; -} - -- (UIView *)introjectionEncourageRegard { - if (!_introjectionEncourageRegard) { - _introjectionEncourageRegard = [[UIView alloc] init]; - _introjectionEncourageRegard.backgroundColor = UIColorFromRGB(0xF3F5FA); - _introjectionEncourageRegard.layer.masksToBounds = YES; - _introjectionEncourageRegard.layer.cornerRadius = 15; - } - return _introjectionEncourageRegard; -} - -- (UIImageView *)huntforIndicateRegard { - if (!_huntforIndicateRegard) { - _huntforIndicateRegard = [[UIImageView alloc] init]; - _huntforIndicateRegard.userInteractionEnabled = YES; - _huntforIndicateRegard.image = [UIImage imageNamed:@"home_search_input_search2"]; - } - return _huntforIndicateRegard; -} - -- (UITextField *)searchTextField { - if (!_searchTextField) { - _searchTextField = [[UITextField alloc] init]; - _searchTextField.tintColor = [DJDKMIMOMColor instantEssayPrettify]; - _searchTextField.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _searchTextField.backgroundColor = [DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]; - _searchTextField.font = [UIFont systemFontOfSize:13]; - NSString *placeholder = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Guild_Search_Nav_View_0"), AppName]; - _searchTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholder attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:13], NSForegroundColorAttributeName : [DJDKMIMOMColor instantEssayPrettify]}]; - _searchTextField.clearButtonMode = UITextFieldViewModeWhileEditing; - _searchTextField.returnKeyType = UIReturnKeySearch; - _searchTextField.delegate = self; - _searchTextField.enablesReturnKeyAutomatically = YES; - } - return _searchTextField; -} - -- (UIButton *)cancleBtuton { - if (!_cancleBtuton) { - _cancleBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_cancleBtuton setTitle:YMLocalizedString(@"YUMI_Guild_Search_Nav_View_1") forState:UIControlStateNormal]; - [_cancleBtuton setTitleColor:[DJDKMIMOMColor instantEssayPrettify] forState:UIControlStateNormal]; - _cancleBtuton.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; - [_cancleBtuton addTarget:self action:@selector(cancleBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_cancleBtuton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:0]; - } - return _cancleBtuton; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionIntelligencerRegard.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionIntelligencerRegard.h deleted file mode 100644 index 7842e4d2..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionIntelligencerRegard.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// YUMIUnionIntelligencerRegard.h -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class CollectiveSpecificAbstractMatrix, YUMIUnionIntelligencerRegard, UnionAbstractMatrix; - -typedef NS_ENUM(NSInteger, UnionHeaderParrotGenre) { - - UnionHeaderParrotGenre_Hall_Income = 1, - UnionHeaderParrotGenre_Exchange_Authority = 2, - - UnionHeaderParrotGenre_Super_Admin, -}; - -@protocol FBCUnionIntelligencerRegardRepresendtation -- (void)yUMIUnionIntelligencerRegard:(YUMIUnionIntelligencerRegard *)view dicSelectOwner:(CollectiveSpecificAbstractMatrix *)guildInfo; -- (void)yUMIUnionIntelligencerRegard:(YUMIUnionIntelligencerRegard *)view dicSelectGuild:(UnionAbstractMatrix *)guildInfo; -- (void)yUMIUnionIntelligencerRegard:(YUMIUnionIntelligencerRegard *)view dicTapMenuItem:(UnionHeaderParrotGenre)menuType; -@end - -@interface YUMIUnionIntelligencerRegard : UIView -@property (nonatomic,strong) CollectiveSpecificAbstractMatrix *collectiveAbstract; -@property (nonatomic,strong) NSArray *collectiveChamberStatement; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionIntelligencerRegard.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionIntelligencerRegard.m deleted file mode 100644 index 260ec1a3..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionIntelligencerRegard.m +++ /dev/null @@ -1,382 +0,0 @@ -// -// YUMIUnionIntelligencerRegard.m -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import "YUMIUnionIntelligencerRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "NSArray+Safe.h" -#import "AccountAbstractStorage.h" -#import "CollectiveSpecificAbstractMatrix.h" -#import "YUMICollectiveParrotRegard.h" -#import "YUMICollectiveChamberAssembletionRegardElement.h" -@interface YUMIUnionIntelligencerRegard () -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UIView * consumerAbstractRegard; -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *collectiveConstituteSequencignation; -@property (nonatomic,strong) UILabel *daeIdSequencignation; -@property (nonatomic,strong) UILabel *chamberDigitalSequencignation; -@property (nonatomic,strong) NetIndicateRegard *collectivePrototypeIndicateRegard; -@property (nonatomic,strong) UIStackView *parrotHierarchyRegard; -@property (nonatomic,strong) YUMICollectiveParrotRegard *revenueRegard; -@property (nonatomic,strong) YUMICollectiveParrotRegard *sensationalManagementSetRegard; -@property (nonatomic,strong) YUMICollectiveParrotRegard *kellegRevenueRegard; -@property (nonatomic,strong) UIView * collectiveChamberRegard; -@property (nonatomic,strong) UILabel *numberLabel; -@property (nonatomic,strong) UICollectionView *collectionView; -@end - -@implementation YUMIUnionIntelligencerRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - [self addSubview:self.encourageIndicateRegard]; - [self addSubview:self.stackView]; - - [self.consumerAbstractRegard addSubview:self.intelligenceportraitIndicateRegard]; - [self.consumerAbstractRegard addSubview:self.collectiveConstituteSequencignation]; - [self.consumerAbstractRegard addSubview:self.daeIdSequencignation]; - [self.consumerAbstractRegard addSubview:self.chamberDigitalSequencignation]; - [self.consumerAbstractRegard addSubview:self.collectivePrototypeIndicateRegard]; - - [self.stackView addArrangedSubview:self.consumerAbstractRegard]; - [self.stackView addArrangedSubview:self.parrotHierarchyRegard]; - [self.stackView addArrangedSubview:self.collectiveChamberRegard]; - - [self.parrotHierarchyRegard addArrangedSubview:self.revenueRegard]; - [self.parrotHierarchyRegard addArrangedSubview:self.sensationalManagementSetRegard]; - [self.parrotHierarchyRegard addArrangedSubview:self.kellegRevenueRegard]; - - [self.collectiveChamberRegard addSubview:self.numberLabel]; - [self.collectiveChamberRegard addSubview:self.collectionView]; - -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth); - make.bottom.mas_equalTo(self.stackView.mas_bottom).offset(15); - }]; - - CGFloat kBackScale = 274.0 / 375.0; - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.height.mas_equalTo(KScreenWidth * kBackScale); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self).inset(15); - make.top.mas_equalTo(self); - }]; - - [self.consumerAbstractRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(179 * kScreenScale); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(64), kGetScaleWidth(64))); - make.left.mas_equalTo(self.consumerAbstractRegard); - make.top.mas_equalTo(self.consumerAbstractRegard).offset(108 * kScreenScale); - }]; - - [self.collectiveConstituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(6); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.right.mas_lessThanOrEqualTo(self.collectivePrototypeIndicateRegard); - }]; - - [self.daeIdSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.collectiveConstituteSequencignation); - make.top.mas_equalTo(self.collectiveConstituteSequencignation.mas_bottom).offset(6); - }]; - - [self.chamberDigitalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.collectiveConstituteSequencignation); - make.top.mas_equalTo(self.daeIdSequencignation.mas_bottom).offset(6); - }]; - - [self.collectivePrototypeIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(60, 60)); - make.centerY.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.right.mas_equalTo(self).offset(-35); - }]; - - CGFloat kMenuScale = 52.0 / 112.0; - CGFloat kMenuItemWidth = (CGFloat)(KScreenWidth - 15 * 2 - 6 * 2) / 3.0; - [self.parrotHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(kMenuItemWidth * kMenuScale); - }]; - - [self.collectiveChamberRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(130); - }]; - - [self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.collectiveChamberRegard).offset(9); - make.top.mas_equalTo(self.collectiveChamberRegard).offset(10); - }]; - - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.collectiveChamberRegard).inset(9); - make.top.mas_equalTo(self.numberLabel.mas_bottom).offset(3); - make.bottom.mas_equalTo(self.collectiveChamberRegard); - }]; -} - -#pragma mark - UICollectionViewDelegate -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.collectiveChamberStatement.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMICollectiveChamberAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([ YUMICollectiveChamberAssembletionRegardElement class]) forIndexPath:indexPath]; - cell.guildInfo = [self.collectiveChamberStatement secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - - [collectionView deselectItemAtIndexPath:indexPath animated:YES]; - if (self.collectiveChamberStatement.count > 0) { - UnionAbstractMatrix * guildInfo = [self.collectiveChamberStatement secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIUnionIntelligencerRegard:dicSelectGuild:)]) { - [self.delegate yUMIUnionIntelligencerRegard:self dicSelectGuild:guildInfo]; - } - } -} - -#pragma mark - Event Response -- (void)parrotRegardBetowardsRecognition:(UITapGestureRecognizer *)tap { - UIView * view = tap.view; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIUnionIntelligencerRegard:dicTapMenuItem:)]) { - [self.delegate yUMIUnionIntelligencerRegard:self dicTapMenuItem:view.tag]; - } -} - -- (void)betowardsOwnerConsumerAbstractRegard:(UITapGestureRecognizer *)tap { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIUnionIntelligencerRegard:dicSelectOwner:)]) { - [self.delegate yUMIUnionIntelligencerRegard:self dicSelectOwner:self.collectiveAbstract]; - } -} - -#pragma mark - Getters And Setters -- (void)setCollectiveAbstract:(CollectiveSpecificAbstractMatrix *)collectiveAbstract { - _collectiveAbstract = collectiveAbstract; - if (_collectiveAbstract) { - self.intelligenceportraitIndicateRegard.imageUrl = _collectiveAbstract.clan.avatar; - NSString * elderName = _collectiveAbstract.clan.elderName; - if (elderName.length > 8) { - elderName = [elderName substringToIndex:8]; - } - _kellegRevenueRegard.hidden = !_collectiveAbstract.clan.elderHasExchangeManagerAuth; - if(_kellegRevenueRegard.hidden == YES){ - _revenueRegard.imageName = @"mine_guild_clan_header_income_bg_two"; - _sensationalManagementSetRegard.imageName = @"mine_guild_clan_header_superadmin_set_bg_two"; - } - self.collectiveConstituteSequencignation.text = elderName; - self.daeIdSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Guild_Header_View_0"), _collectiveAbstract.clan.elderErbanNo]; - self.collectivePrototypeIndicateRegard.imageUrl = _collectiveAbstract.clan.levelIcon; - if (_collectiveAbstract.clan.elderUid.integerValue == [AccountAbstractStorage instance].acquireCid.integerValue) { - self.parrotHierarchyRegard.hidden = NO; - } else { - self.parrotHierarchyRegard.hidden = YES; - } - } -} - -- (void)setCollectiveChamberStatement:(NSArray *)collectiveChamberStatement { - _collectiveChamberStatement = collectiveChamberStatement; - if (_collectiveChamberStatement.count > 0) { - self.chamberDigitalSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Guild_Header_View_1"), _collectiveChamberStatement.count]; - self.collectiveChamberRegard.hidden = NO; - } else { - self.collectiveChamberRegard.hidden = YES; - self.chamberDigitalSequencignation.text = YMLocalizedString(@"YUMI_Guild_Header_View_2"); - } - self.numberLabel.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Guild_Header_View_3"), collectiveChamberStatement.count]; - [self.collectionView reloadData]; -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_center_guild_clan_header_background"]; - } - return _encourageIndicateRegard; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 15; - } - return _stackView; -} - -- (UIView *)consumerAbstractRegard { - if (!_consumerAbstractRegard) { - _consumerAbstractRegard = [[UIView alloc] init]; - _consumerAbstractRegard.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap= [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsOwnerConsumerAbstractRegard:)]; - [_consumerAbstractRegard addGestureRecognizer:tap]; - } - return _consumerAbstractRegard; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = kGetScaleWidth(32); - _intelligenceportraitIndicateRegard.layer.borderWidth = 2; - _intelligenceportraitIndicateRegard.layer.borderColor = UIColorFromRGB(0xC6C6E9).CGColor; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)collectiveConstituteSequencignation { - if (!_collectiveConstituteSequencignation) { - _collectiveConstituteSequencignation = [[UILabel alloc] init]; - _collectiveConstituteSequencignation.font = [UIFont systemFontOfSize:18]; - _collectiveConstituteSequencignation.textColor = [UIColor whiteColor]; - } - return _collectiveConstituteSequencignation; -} - -- (UILabel *)daeIdSequencignation { - if (!_daeIdSequencignation) { - _daeIdSequencignation = [[UILabel alloc] init]; - _daeIdSequencignation.font = [UIFont systemFontOfSize:12]; - _daeIdSequencignation.textColor = UIColorFromRGB(0xC6C6E9); - } - return _daeIdSequencignation; -} - -- (UILabel *)chamberDigitalSequencignation { - if (!_chamberDigitalSequencignation) { - _chamberDigitalSequencignation = [[UILabel alloc] init]; - _chamberDigitalSequencignation.font = [UIFont systemFontOfSize:12]; - _chamberDigitalSequencignation.textColor = UIColorFromRGB(0xC6C6E9); - } - return _chamberDigitalSequencignation; -} - -- (NetIndicateRegard *)collectivePrototypeIndicateRegard { - if (!_collectivePrototypeIndicateRegard) { - _collectivePrototypeIndicateRegard = [[NetIndicateRegard alloc] init]; - } - return _collectivePrototypeIndicateRegard; -} - -- (UIStackView *)parrotHierarchyRegard { - if (!_parrotHierarchyRegard) { - _parrotHierarchyRegard = [[UIStackView alloc] init]; - _parrotHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _parrotHierarchyRegard.distribution = UIStackViewDistributionFillEqually; - _parrotHierarchyRegard.alignment = UIStackViewAlignmentFill; - _parrotHierarchyRegard.spacing = 6; - _parrotHierarchyRegard.hidden = YES; - } - return _parrotHierarchyRegard; -} - - -- (YUMICollectiveParrotRegard *)revenueRegard { - if (!_revenueRegard) { - _revenueRegard = [[YUMICollectiveParrotRegard alloc] init]; - _revenueRegard.title = YMLocalizedString(@"YUMI_Guild_Header_View_4"); - _revenueRegard.imageName = @"mine_guild_clan_header_income_bg"; - _revenueRegard.tag = UnionHeaderParrotGenre_Hall_Income; - UITapGestureRecognizer * tap= [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(parrotRegardBetowardsRecognition:)]; - [_revenueRegard addGestureRecognizer:tap]; - } - return _revenueRegard; -} - -- (YUMICollectiveParrotRegard *)kellegRevenueRegard { - if (!_kellegRevenueRegard) { - _kellegRevenueRegard = [[YUMICollectiveParrotRegard alloc] init]; - _kellegRevenueRegard.title = YMLocalizedString(@"YUMI_Guild_Header_View_5"); - _kellegRevenueRegard.imageName = @"mine_guild_clan_header_anchor_income_bg"; - _kellegRevenueRegard.tag = UnionHeaderParrotGenre_Exchange_Authority; - UITapGestureRecognizer * tap= [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(parrotRegardBetowardsRecognition:)]; - [_kellegRevenueRegard addGestureRecognizer:tap]; - _kellegRevenueRegard.hidden = YES; - - } - return _kellegRevenueRegard; -} - -- (YUMICollectiveParrotRegard *)sensationalManagementSetRegard { - if (!_sensationalManagementSetRegard) { - _sensationalManagementSetRegard = [[YUMICollectiveParrotRegard alloc] init]; - _sensationalManagementSetRegard.title = YMLocalizedString(@"YUMI_Guild_Header_View_6"); - _sensationalManagementSetRegard.imageName = @"mine_guild_clan_header_superadmin_set_bg"; - _sensationalManagementSetRegard.tag = UnionHeaderParrotGenre_Super_Admin; - UITapGestureRecognizer * tap= [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(parrotRegardBetowardsRecognition:)]; - [_sensationalManagementSetRegard addGestureRecognizer:tap]; - } - return _sensationalManagementSetRegard; -} - -- (UIView *)collectiveChamberRegard { - if (!_collectiveChamberRegard) { - _collectiveChamberRegard = [[UIView alloc] init]; - _collectiveChamberRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _collectiveChamberRegard.layer.masksToBounds = YES; - _collectiveChamberRegard.layer.cornerRadius = 10; - } - return _collectiveChamberRegard; -} - -- (UILabel *)numberLabel { - if (!_numberLabel) { - _numberLabel = [[UILabel alloc] init]; - _numberLabel.text = YMLocalizedString(@"YUMI_Guild_Header_View_7"); - _numberLabel.font = [UIFont systemFontOfSize:14]; - _numberLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _numberLabel; -} - -- (UICollectionView *)collectionView{ - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; - layout.minimumLineSpacing = 10; - layout.itemSize = CGSizeMake(60, 80); - layout.minimumInteritemSpacing = 0; - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.backgroundColor = [UIColor clearColor]; - [_collectionView registerClass:[YUMICollectiveChamberAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMICollectiveChamberAssembletionRegardElement class])]; - } - return _collectionView; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionIntratemporalMonthPickerRegard.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionIntratemporalMonthPickerRegard.h deleted file mode 100644 index c60c4cba..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionIntratemporalMonthPickerRegard.h +++ /dev/null @@ -1,64 +0,0 @@ -// -// XPGuildTimeMouthPickerView.h -// YuMi -// -// Created by YuMi on 2022/4/12. -// - -#import -#import "NSDate+DateUtils.h" - -typedef NS_ENUM(NSInteger,HooDatePickerMode) { - HooDatePickerModeTime, - HooDatePickerModeDate, - HooDatePickerModeDateAndTime, - HooDatePickerModeYearAndMonth -}; - -@class YUMIUnionIntratemporalMonthPickerRegard; - -@protocol FBCUnionTimeMonthPickerRegardRepresendtation -@optional -- (void)datePicker:(YUMIUnionIntratemporalMonthPickerRegard *)datePicker dateDidChange:(NSDate *)date; -- (void)datePicker:(YUMIUnionIntratemporalMonthPickerRegard *)datePicker didCancel:(UIButton *)sender; -- (void)datePicker:(YUMIUnionIntratemporalMonthPickerRegard *)dataPicker didSelectedDate:(NSDate *)date; -@end - -@interface YUMIUnionIntratemporalMonthPickerRegard : UIControl - -@property (nonatomic, copy) NSString *title; - -@property (nonatomic, strong) NSDate *date; - -@property (nonatomic, strong) NSDate *minimumDate; - -@property (nonatomic, strong) NSDate *maximumDate; - -@property (nonatomic, assign) HooDatePickerMode datePickerMode; - -@property(nonatomic,strong) NSLocale *locale; - -@property(nonatomic,copy) NSCalendar *calendar; - -@property(nonatomic,strong) NSTimeZone *timeZone; - -@property(nonatomic,readonly) BOOL isOpen; - -@property (nonatomic, weak) id delegate; - -- (instancetype)initAboutSenstowardsionalRegard:(UIView*)superView; - -- (instancetype)initEngagementExtracterManner:(HooDatePickerMode)datePickerMode andAddToSuperView:(UIView *)superView; - -- (instancetype)initEngagementExtracterManner:(HooDatePickerMode)datePickerMode minDate:(NSDate *)minimumDate maxMamDate:(NSDate *)maximumDate andAddToSuperView:(UIView *)superView; -- (instancetype)initNoEncourageBtutonAboutSenstowardsionalRegard:(UIView*)superView; -- (void)setDate:(NSDate *)date animated:(BOOL)animated; - -- (void)setTintColor:(UIColor *)tintColor; - -- (void)setHighlightPrettify:(UIColor *)highlightPrettify; - -- (void)show; --(void)showView; -- (void)dismiss; -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionIntratemporalMonthPickerRegard.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionIntratemporalMonthPickerRegard.m deleted file mode 100644 index b088a7f4..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionIntratemporalMonthPickerRegard.m +++ /dev/null @@ -1,1714 +0,0 @@ -// -// XPGuildTimeMouthPickerView.m -// YuMi -// -// Created by YuMi on 2022/4/12. -// - -#import "YUMIUnionIntratemporalMonthPickerRegard.h" -#import "DJDKMIMOMColor.h" - -extern NSString *const kDateFormatYYYYMMDD; - -static CGFloat const kHooDatePickerHeight = 260.0f; - - - -static CGFloat const kHooDatePickerButtonHeaderWidth = 40.0f; - -static CGFloat const kHooDatePickerHeaderBottomMargin = 1.0f; - -static CGFloat const kHooDatePickerScrollViewDaysWidth = 90.0f; - -static CGFloat const kHooDatePickerScrollViewMonthWidth = 140.0f; - -static CGFloat const kHooDatePickerScrollViewDateWidth = 165.0f; - -static CGFloat const kHooDatePickerScrollViewLeftMargin = 1.0f; - -static CGFloat const kHooDatePickerScrollViewItemHeight = 45.0f; - -static CGFloat const kHooDatePickerLineWidth = 0.5f; - -static CGFloat const kHooDatePickerLineMargin = 15.0f; - -static CGFloat const kHooDatePickerPadding = 15.0f; - -static CGFloat const kHooDatePickerAnimationDuration = 0.4f; - -#define kHooDatePickerTitleFont [UIFont systemFontOfSize:18.0] -#define kHooDatePickerLabelFont [UIFont systemFontOfSize:18.0] -#define kHooDatePickerLabelSelectedFont [UIFont systemFontOfSize:20.0]; - -#define kHooDatePickerHighlightColor [UIColor colorWithRed:255.0/255.0 green:180.0/255.0 blue:18.0/255.0 alpha:1.0] - -typedef NS_ENUM(NSInteger,ScrollRegardTagValue) { - ScrollRegardTagValue_DAYS = 1, - ScrollRegardTagValue_MONTHS = 2, - ScrollRegardTagValue_YEARS = 3, - ScrollRegardTagValue_HOURS = 4, - ScrollRegardTagValue_MINUTES = 5, - ScrollRegardTagValue_SECONDS = 6, - ScrollRegardTagValue_DATES = 7, - -}; - -@interface YUMIUnionIntratemporalMonthPickerRegard () { - - UIView *_lineDaysTop, *_lineDaysBottom, *_lineMonthsTop, *_lineMonthsBottom, *_lineYearsTop,*_lineYearsBottom, *_lineDatesTop, *_lineDatesBottom, *_lineHoursTop, *_lineHoursBottom, *_lineMinutesTop, *_lineMinutesBottom, *_lineSecondsTop, *_lineSecondsBottom; - - - NSMutableArray *_labelsDays, *_labelsMonths, *_labelsYears, *_labelsDates, *_labelsHours, *_labelsMinutes, *_labelsSeconds; - - - NSInteger _selectedDay, _selectedMonth, _selectedYear, _selectedDate, _selectedHour, _selectedMinute, _selectedSecond; - - - BOOL _isInitialized; - NSInteger _minYear; - -} - -@property (nonatomic, strong) NSMutableArray *century, *months, *days, *dates, *hours, *minutes, *seconds; - -@property (nonatomic, strong) UIScrollView *trundleRegardCentury, *scrollViewMonths, *scrollViewDays, *scrollViewDates, *scrollViewHours, *scrollViewMinutes,*trundleRegardInstants; - -@property (nonatomic, weak) UIView *superView; -@property (nonatomic,assign) CGFloat kHooEngagementExtracterIntelligenceerAltitude; -@property (nonatomic, copy) UIView *dimEncouragegroundRegard; - -@property (nonatomic, strong) UILabel *titleLabel; - -@property (nonatomic, strong) UIView *intelligenceerRegard; - -@property (nonatomic, strong) UIColor *tintColor; - -@property (nonatomic, strong) UIColor *highlightPrettify; - -@property (nonatomic, strong) NSDateFormatter *engagementInitialiser; - -@end - -@implementation YUMIUnionIntratemporalMonthPickerRegard - - -#pragma mark - Initializers - - - -- (instancetype)initNoEncourageBtutonAboutSenstowardsionalRegard:(UIView*)superView { - - if (self = [super initWithFrame:CGRectMake(0.0, 139, superView.frame.size.width, 216)]) { - self.kHooEngagementExtracterIntelligenceerAltitude = 0; - _datePickerMode = HooDatePickerModeDate; - [superView addSubview:self]; - _superView = superView; - _minYear = 1900; - self.tintColor = [UIColor whiteColor]; - self.highlightPrettify = kHooDatePickerHighlightColor; - [self setupControl]; - } - return self; -} - - - -- (instancetype)initAboutSenstowardsionalRegard:(UIView*)superView { - - - if (self = [super initWithFrame:CGRectMake(0.0, superView.frame.size.height, superView.frame.size.width, kHooDatePickerHeight)]) { - self.kHooEngagementExtracterIntelligenceerAltitude = 44; - _datePickerMode = HooDatePickerModeDate; - [superView addSubview:self]; - _superView = superView; - _minYear = 1900; - self.tintColor = [UIColor whiteColor]; - self.highlightPrettify = kHooDatePickerHighlightColor; - [self addSubview:self.intelligenceerRegard]; - [self setupControl]; - } - return self; -} - -- (instancetype)initEngagementExtracterManner:(HooDatePickerMode)datePickerMode andAddToSuperView:(UIView *)superView { - if (self = [super initWithFrame:CGRectMake(0.0, superView.frame.size.height, superView.frame.size.width, kHooDatePickerHeight)]) { - self.kHooEngagementExtracterIntelligenceerAltitude = 44; - _datePickerMode = datePickerMode; - [superView addSubview:self]; - _superView = superView; - _minYear = 1900; - self.tintColor = [UIColor whiteColor]; - self.highlightPrettify = kHooDatePickerHighlightColor; - [self setupControl]; - } - return self; -} - -- (instancetype)initEngagementExtracterManner:(HooDatePickerMode)datePickerMode minDate:(NSDate *)minimumDate maxMamDate:(NSDate *)maximumDate andAddToSuperView:(UIView *)superView { - if (self = [super initWithFrame:CGRectMake(0.0, superView.frame.size.height, superView.frame.size.width, kHooDatePickerHeight)]) { - self.kHooEngagementExtracterIntelligenceerAltitude = 44; - _datePickerMode = datePickerMode; - [superView addSubview:self]; - _superView = superView; - _minYear = 1900; - if (maximumDate) { - _maximumDate = maximumDate; - } - if (minimumDate) { - _minimumDate = minimumDate; - - NSDateComponents* componentsMin = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:_minimumDate]; - NSInteger yearMin = [componentsMin year]; - _minYear = yearMin; - } - self.tintColor = [UIColor whiteColor]; - self.highlightPrettify = kHooDatePickerHighlightColor; - [self setupControl]; - } - return self; -} - -- (void)setupControl { - - - self.hidden = YES; - - - [self transltowardseChoseneAnnmus]; - [self transltowardseChoseneDianas]; - [self transltowardseChoseneSeasons]; - [self transltowardseChoseneStundes]; - [self transltowardseChosenePennys]; - [self transltowardseChoseneInstants]; - - - _century = [self acquireAnnmus]; - _days = [self acquireSeasonsInDiana:[NSDate date]]; - if (self.datePickerMode == HooDatePickerModeDateAndTime) { - _dates = [self acquireEngagements]; - } - - - self.backgroundColor = [UIColor whiteColor]; - - - if (self.datePickerMode == HooDatePickerModeDate) { - [self establishChoseneAnnmusComputtowardsioneractX:0.0 andExtents:kHooDatePickerScrollViewMonthWidth]; - [self establishChoseneDianasComputtowardsioneractX:(_trundleRegardCentury.frame.size.width + kHooDatePickerScrollViewLeftMargin) andExtents:kHooDatePickerScrollViewDaysWidth]; - [self establishChoseneSeasonsComputtowardsioneractX:(_scrollViewMonths.frame.origin.x + _scrollViewMonths.frame.size.width + kHooDatePickerScrollViewLeftMargin) andExtents:(self.frame.size.width - (_scrollViewMonths.frame.origin.x + _scrollViewMonths.frame.size.width + kHooDatePickerScrollViewLeftMargin))]; - } - - - if (self.datePickerMode == HooDatePickerModeTime) { - [self establishChoseneStundesComputtowardsioneractX:0.0 andExtents:((self.frame.size.width / 3.0) - kHooDatePickerScrollViewLeftMargin)]; - [self establishChosenePennysComputtowardsioneractX:(self.frame.size.width / 3.0) andExtents:((self.frame.size.width / 3.0) - kHooDatePickerScrollViewLeftMargin)]; - [self establishChoseneInstantsComputtowardsioneractX:((self.frame.size.width / 3.0) * 2.0) andExtents:(self.frame.size.width / 3.0)]; - } - - - if (self.datePickerMode == HooDatePickerModeDateAndTime) { - [self establishChoseneEngagementsComputtowardsioneractX:0.0 andExtents:kHooDatePickerScrollViewDateWidth]; - [self establishChoseneStundesComputtowardsioneractX:(kHooDatePickerScrollViewDateWidth + kHooDatePickerScrollViewLeftMargin) andExtents:(((self.frame.size.width - kHooDatePickerScrollViewDateWidth) / 2.0) - kHooDatePickerScrollViewLeftMargin)]; - [self establishChosenePennysComputtowardsioneractX:(kHooDatePickerScrollViewDateWidth + kHooDatePickerScrollViewLeftMargin + ((self.frame.size.width - kHooDatePickerScrollViewDateWidth) / 2.0)) andExtents:(((self.frame.size.width - kHooDatePickerScrollViewDateWidth) / 2.0) - kHooDatePickerScrollViewLeftMargin)]; - } - - if (self.datePickerMode == HooDatePickerModeYearAndMonth) { - [self establishChoseneAnnmusComputtowardsioneractX:0.0 andExtents:self.frame.size.width * 0.5]; - [self establishChoseneDianasComputtowardsioneractX:(_trundleRegardCentury.frame.size.width + kHooDatePickerScrollViewLeftMargin) andExtents:self.frame.size.width * 0.5]; - - } - - - [self setDate:[NSDate date] animated:NO]; -} - - -#pragma mark - Build Selector Days - -- (void)establishChoseneSeasonsComputtowardsioneractX:(CGFloat)x andExtents:(CGFloat)width { - - - _scrollViewDays = [[UIScrollView alloc] initWithFrame:CGRectMake(x, self.kHooEngagementExtracterIntelligenceerAltitude + kHooDatePickerHeaderBottomMargin, width, self.frame.size.height - self.kHooEngagementExtracterIntelligenceerAltitude - kHooDatePickerHeaderBottomMargin)]; - _scrollViewDays.tag = ScrollRegardTagValue_DAYS; - _scrollViewDays.delegate = self; - _scrollViewDays.backgroundColor = [UIColor whiteColor]; - _scrollViewDays.showsHorizontalScrollIndicator = NO; - _scrollViewDays.showsVerticalScrollIndicator = NO; - [self addSubview:_scrollViewDays]; - - _lineDaysTop = [[UIView alloc] initWithFrame:CGRectMake(_scrollViewDays.frame.origin.x + kHooDatePickerLineMargin, _scrollViewDays.frame.origin.y + (_scrollViewDays.frame.size.height / 2) - (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; - _lineDaysTop.backgroundColor = [UIColor clearColor]; - [self addSubview:_lineDaysTop]; - - _lineDaysBottom = [[UIView alloc] initWithFrame:CGRectMake(_scrollViewDays.frame.origin.x + kHooDatePickerLineMargin, _scrollViewDays.frame.origin.y + (_scrollViewDays.frame.size.height / 2) + (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; - _lineDaysBottom.backgroundColor = [UIColor clearColor]; - [self addSubview:_lineDaysBottom]; - - - [self establishChoseneSequencigntowardsionsSeasons]; - - UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(unrequitedBetowardsMotionSeasonsTraplictowardsioned:)]; - singleTap.numberOfTapsRequired = 1; - singleTap.numberOfTouchesRequired = 1; - [_scrollViewDays addGestureRecognizer:singleTap]; -} - -- (void)establishChoseneSequencigntowardsionsSeasons { - - CGFloat offsetContentScrollView = (_trundleRegardCentury.frame.size.height - kHooDatePickerScrollViewItemHeight) / 2.0; - - if (_labelsDays && _labelsDays.count > 0) { - for (UILabel *label in _labelsDays) { - [label removeFromSuperview]; - } - } - - _labelsDays = [[NSMutableArray alloc] init]; - - for (int i = 0; i < _days.count; i++) { - - NSString *day = (NSString*)[_days secureGroalTowardsIndictowardsrix1:i]; - - UILabel *labelDay = [[UILabel alloc] initWithFrame:CGRectMake(0, (i * kHooDatePickerScrollViewItemHeight) + offsetContentScrollView, _scrollViewDays.frame.size.width, kHooDatePickerScrollViewItemHeight)]; - labelDay.text = day; - labelDay.font = kHooDatePickerLabelFont; - labelDay.textAlignment = NSTextAlignmentCenter; - labelDay.textColor = self.tintColor; - labelDay.backgroundColor = [UIColor redColor]; - - [_labelsDays addObject:labelDay]; - [_scrollViewDays addSubview:labelDay]; - } - - _scrollViewDays.contentSize = CGSizeMake(_scrollViewDays.frame.size.width, (kHooDatePickerScrollViewItemHeight * _days.count) + (offsetContentScrollView * 2)); -} - -- (void)transltowardseChoseneSeasons { - - if (_scrollViewDays) { - [_scrollViewDays removeFromSuperview]; - _scrollViewDays = nil; - } - if (_lineDaysTop) { - [_lineDaysTop removeFromSuperview]; - _lineDaysTop = nil; - } - if (_lineDaysBottom) { - [_lineDaysBottom removeFromSuperview]; - _lineDaysBottom = nil; - } -} - -#pragma mark - Build Selector Months - -- (void)establishChoseneDianasComputtowardsioneractX:(CGFloat)x andExtents:(CGFloat)width { - - - - _scrollViewMonths = [[UIScrollView alloc] initWithFrame:CGRectMake(x, self.kHooEngagementExtracterIntelligenceerAltitude + kHooDatePickerHeaderBottomMargin, width, self.frame.size.height - self.kHooEngagementExtracterIntelligenceerAltitude - kHooDatePickerHeaderBottomMargin)]; - _scrollViewMonths.tag = ScrollRegardTagValue_MONTHS; - _scrollViewMonths.delegate = self; - _scrollViewMonths.backgroundColor = [UIColor whiteColor]; - _scrollViewMonths.showsHorizontalScrollIndicator = NO; - _scrollViewMonths.showsVerticalScrollIndicator = NO; - [self addSubview:_scrollViewMonths]; - - _lineMonthsTop = [[UIView alloc] initWithFrame:CGRectMake(_scrollViewMonths.frame.origin.x + kHooDatePickerLineMargin, _scrollViewMonths.frame.origin.y + (_scrollViewMonths.frame.size.height / 2) - (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; - _lineMonthsTop.backgroundColor = [UIColor clearColor]; - [self addSubview:_lineMonthsTop]; - - _lineMonthsBottom = [[UIView alloc] initWithFrame:CGRectMake(_scrollViewMonths.frame.origin.x + kHooDatePickerLineMargin, _scrollViewMonths.frame.origin.y + (_scrollViewMonths.frame.size.height / 2) + (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; - _lineMonthsBottom.backgroundColor = [UIColor clearColor]; - [self addSubview:_lineMonthsBottom]; - - - - [self establishChoseneSequencigntowardsionsDianas]; - - UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(unrequitedBetowardsMotionDianasTraplictowardsioned:)]; - singleTap.numberOfTapsRequired = 1; - singleTap.numberOfTouchesRequired = 1; - [_scrollViewMonths addGestureRecognizer:singleTap]; -} - -- (void)establishChoseneSequencigntowardsionsDianas { - - CGFloat offsetContentScrollView = (_trundleRegardCentury.frame.size.height - kHooDatePickerScrollViewItemHeight) / 2.0; - - if (_labelsMonths && _labelsMonths.count > 0) { - for (UILabel *label in _labelsMonths) { - [label removeFromSuperview]; - } - } - - _labelsMonths = [[NSMutableArray alloc] init]; - - for (int i = 0; i < self.months.count; i++) { - - NSString *day = (NSString*)[self.months secureGroalTowardsIndictowardsrix1:i]; - - UILabel *labelDay = [[UILabel alloc] initWithFrame:CGRectMake(0.0, (i * kHooDatePickerScrollViewItemHeight) + offsetContentScrollView, _scrollViewMonths.frame.size.width, kHooDatePickerScrollViewItemHeight)]; - labelDay.text = day; - labelDay.font = kHooDatePickerLabelFont; - labelDay.textAlignment = NSTextAlignmentCenter; - labelDay.textColor = self.tintColor; - labelDay.backgroundColor = [UIColor clearColor]; - - [_labelsMonths addObject:labelDay]; - [_scrollViewMonths addSubview:labelDay]; - } - - _scrollViewMonths.contentSize = CGSizeMake(_scrollViewMonths.frame.size.width, (kHooDatePickerScrollViewItemHeight * self.months.count) + (offsetContentScrollView * 2)); -} - -- (void)transltowardseChoseneDianas { - - if (_scrollViewMonths) { - [_scrollViewMonths removeFromSuperview]; - _scrollViewMonths = nil; - } - if (_lineMonthsTop) { - [_lineMonthsTop removeFromSuperview]; - _lineMonthsTop = nil; - } - if (_lineMonthsBottom) { - [_lineMonthsBottom removeFromSuperview]; - _lineMonthsBottom = nil; - } -} - -#pragma mark - Build Selector Years - -- (void)establishChoseneAnnmusComputtowardsioneractX:(CGFloat)x andExtents:(CGFloat)width { - - - - _trundleRegardCentury = [[UIScrollView alloc] initWithFrame:CGRectMake(x, self.kHooEngagementExtracterIntelligenceerAltitude + kHooDatePickerHeaderBottomMargin, width, self.frame.size.height - self.kHooEngagementExtracterIntelligenceerAltitude - kHooDatePickerHeaderBottomMargin)]; - _trundleRegardCentury.tag = ScrollRegardTagValue_YEARS; - _trundleRegardCentury.delegate = self; - _trundleRegardCentury.backgroundColor = [UIColor whiteColor]; - _trundleRegardCentury.showsHorizontalScrollIndicator = NO; - _trundleRegardCentury.showsVerticalScrollIndicator = NO; - [self addSubview:_trundleRegardCentury]; - - _lineYearsTop = [[UIView alloc] initWithFrame:CGRectMake(_trundleRegardCentury.frame.origin.x + kHooDatePickerLineMargin, _trundleRegardCentury.frame.origin.y + (_trundleRegardCentury.frame.size.height / 2) - (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; - _lineYearsTop.backgroundColor = [UIColor clearColor]; - [self addSubview:_lineYearsTop]; - - _lineYearsBottom = [[UIView alloc] initWithFrame:CGRectMake(_trundleRegardCentury.frame.origin.x + kHooDatePickerLineMargin, _trundleRegardCentury.frame.origin.y + (_trundleRegardCentury.frame.size.height / 2) + (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; - _lineYearsBottom.backgroundColor = [UIColor clearColor]; - - - [self establishChoseneSequencigntowardsionsAnnmus]; - - UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(unrequitedBetowardsMotionAnnmusTraplictowardsioned:)]; - singleTap.numberOfTapsRequired = 1; - singleTap.numberOfTouchesRequired = 1; - [_trundleRegardCentury addGestureRecognizer:singleTap]; -} - -- (void)establishChoseneSequencigntowardsionsAnnmus { - - CGFloat offsetContentScrollView = (_trundleRegardCentury.frame.size.height - kHooDatePickerScrollViewItemHeight) / 2.0; - - if (_labelsYears && _labelsYears.count > 0) { - for (UILabel *label in _labelsYears) { - [label removeFromSuperview]; - } - } - - _labelsYears = [[NSMutableArray alloc] init]; - - for (int i = 0; i < _century.count; i++) { - - NSString *day = (NSString*)[_century secureGroalTowardsIndictowardsrix1:i]; - - UILabel *labelDay = [[UILabel alloc] initWithFrame:CGRectMake(0.0, (i * kHooDatePickerScrollViewItemHeight) + offsetContentScrollView, _trundleRegardCentury.frame.size.width, kHooDatePickerScrollViewItemHeight)]; - labelDay.text = day; - labelDay.font = kHooDatePickerLabelFont; - labelDay.textAlignment = NSTextAlignmentCenter; - labelDay.textColor = self.tintColor; - labelDay.backgroundColor = [UIColor clearColor]; - - [_labelsYears addObject:labelDay]; - [_trundleRegardCentury addSubview:labelDay]; - } - - _trundleRegardCentury.contentSize = CGSizeMake(_trundleRegardCentury.frame.size.width, (kHooDatePickerScrollViewItemHeight * _century.count) + (offsetContentScrollView * 2)); -} - -- (void)transltowardseChoseneAnnmus { - - if (_trundleRegardCentury) { - [_trundleRegardCentury removeFromSuperview]; - _trundleRegardCentury = nil; - } - if (_lineYearsTop) { - [_lineYearsTop removeFromSuperview]; - _lineYearsTop = nil; - } - if (_lineYearsBottom) { - [_lineYearsBottom removeFromSuperview]; - _lineYearsBottom = nil; - } -} - -#pragma mark - Build Selector Dates - -- (void)establishChoseneEngagementsComputtowardsioneractX:(CGFloat)x andExtents:(CGFloat)width { - - - _scrollViewDates = [[UIScrollView alloc] initWithFrame:CGRectMake(x, self.kHooEngagementExtracterIntelligenceerAltitude + kHooDatePickerHeaderBottomMargin, width, self.frame.size.height - self.kHooEngagementExtracterIntelligenceerAltitude - kHooDatePickerHeaderBottomMargin)]; - _scrollViewDates.tag = ScrollRegardTagValue_DATES; - _scrollViewDates.delegate = self; - _scrollViewDates.backgroundColor = [UIColor whiteColor]; - _scrollViewDates.showsHorizontalScrollIndicator = NO; - _scrollViewDates.showsVerticalScrollIndicator = NO; - [self addSubview:_scrollViewDates]; - - _lineDatesTop = [[UIView alloc] initWithFrame:CGRectMake(_scrollViewDates.frame.origin.x + kHooDatePickerLineMargin, _scrollViewDates.frame.origin.y + (_scrollViewDates.frame.size.height / 2) - (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; - _lineDatesTop.backgroundColor = [UIColor clearColor]; - [self addSubview:_lineDatesTop]; - - _lineDatesBottom = [[UIView alloc] initWithFrame:CGRectMake(_scrollViewDates.frame.origin.x + kHooDatePickerLineMargin, _scrollViewDates.frame.origin.y + (_scrollViewDates.frame.size.height / 2) + (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; - _lineDatesBottom.backgroundColor = [UIColor clearColor]; - [self addSubview:_lineDatesBottom]; - - - [self establishChoseneSequencigntowardsionsEngagements]; - - UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(unrequitedBetowardsMotionEngagementsTraplictowardsioned:)]; - singleTap.numberOfTapsRequired = 1; - singleTap.numberOfTouchesRequired = 1; - [_scrollViewDates addGestureRecognizer:singleTap]; -} - -- (void)establishChoseneSequencigntowardsionsEngagements { - - CGFloat offsetContentScrollView = (_scrollViewDates.frame.size.height - kHooDatePickerScrollViewItemHeight) / 2.0; - - if (_labelsDates && _labelsDates.count > 0) { - for (UILabel *label in _labelsDates) { - [label removeFromSuperview]; - } - } - - _labelsDates = [[NSMutableArray alloc] init]; - - NSDateFormatter *engagementInitialiser = self.engagementInitialiser; - [engagementInitialiser setCalendar:self.calendar]; - [engagementInitialiser setTimeZone:self.timeZone]; - [engagementInitialiser setDateFormat:[NSString stringWithFormat:@"MMMdd%@ EEE", YMLocalizedString(@"App_Commont_Day")]]; - - for (int i = 0; i < _dates.count; i++) { - - NSDate *date = [_dates secureGroalTowardsIndictowardsrix1:i]; - - NSString *hour = [engagementInitialiser stringFromDate:date]; - - UILabel *labelDate = [[UILabel alloc] initWithFrame:CGRectMake(0, (i * kHooDatePickerScrollViewItemHeight) + offsetContentScrollView, _scrollViewDates.frame.size.width, kHooDatePickerScrollViewItemHeight)]; - labelDate.text = hour; - labelDate.font = kHooDatePickerLabelFont; - labelDate.textAlignment = NSTextAlignmentCenter; - labelDate.textColor = self.tintColor; - labelDate.backgroundColor = [UIColor clearColor]; - - [_labelsDates addObject:labelDate]; - [_scrollViewDates addSubview:labelDate]; - } - - _scrollViewDates.contentSize = CGSizeMake(_scrollViewDates.frame.size.width, (kHooDatePickerScrollViewItemHeight * _dates.count) + (offsetContentScrollView * 2)); -} - -- (void)transltowardseChoseneEngagements { - - if (_scrollViewDates) { - [_scrollViewDates removeFromSuperview]; - _scrollViewDates = nil; - } - if (_lineDatesTop) { - [_lineDatesTop removeFromSuperview]; - _lineDatesTop = nil; - } - if (_lineDatesBottom) { - [_lineDatesBottom removeFromSuperview]; - _lineDatesBottom = nil; - } -} - -#pragma mark - Build Selector Hours - -- (void)establishChoseneStundesComputtowardsioneractX:(CGFloat)x andExtents:(CGFloat)width { - - - _scrollViewHours = [[UIScrollView alloc] initWithFrame:CGRectMake(x, self.kHooEngagementExtracterIntelligenceerAltitude + kHooDatePickerHeaderBottomMargin, width, self.frame.size.height - self.kHooEngagementExtracterIntelligenceerAltitude - kHooDatePickerHeaderBottomMargin)]; - _scrollViewHours.tag = ScrollRegardTagValue_HOURS; - _scrollViewHours.delegate = self; - _scrollViewHours.backgroundColor = [UIColor whiteColor]; - _scrollViewHours.showsHorizontalScrollIndicator = NO; - _scrollViewHours.showsVerticalScrollIndicator = NO; - [self addSubview:_scrollViewHours]; - - _lineHoursTop = [[UIView alloc] initWithFrame:CGRectMake(_scrollViewHours.frame.origin.x + kHooDatePickerLineMargin, _scrollViewHours.frame.origin.y + (_scrollViewHours.frame.size.height / 2) - (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; - _lineHoursTop.backgroundColor = [UIColor clearColor]; - [self addSubview:_lineHoursTop]; - - _lineHoursBottom = [[UIView alloc] initWithFrame:CGRectMake(_scrollViewHours.frame.origin.x + kHooDatePickerLineMargin, _scrollViewHours.frame.origin.y + (_scrollViewHours.frame.size.height / 2) + (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; - _lineHoursBottom.backgroundColor = [UIColor clearColor]; - [self addSubview:_lineHoursBottom]; - - - [self establishChoseneSequencigntowardsionsStundes]; - - UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(unrequitedBetowardsMotionStundesTraplictowardsioned:)]; - singleTap.numberOfTapsRequired = 1; - singleTap.numberOfTouchesRequired = 1; - [_scrollViewHours addGestureRecognizer:singleTap]; -} - -- (void)establishChoseneSequencigntowardsionsStundes { - - CGFloat offsetContentScrollView = (_scrollViewHours.frame.size.height - kHooDatePickerScrollViewItemHeight) / 2.0; - - if (_labelsHours && _labelsHours.count > 0) { - for (UILabel *label in _labelsHours) { - [label removeFromSuperview]; - } - } - - _labelsHours = [[NSMutableArray alloc] init]; - - for (int i = 0; i < self.hours.count; i++) { - - NSString *hour = (NSString*)[self.hours secureGroalTowardsIndictowardsrix1:i]; - - UILabel *labelHour = [[UILabel alloc] initWithFrame:CGRectMake(0, (i * kHooDatePickerScrollViewItemHeight) + offsetContentScrollView, _scrollViewHours.frame.size.width, kHooDatePickerScrollViewItemHeight)]; - labelHour.text = hour; - labelHour.font = kHooDatePickerLabelFont; - labelHour.textAlignment = NSTextAlignmentCenter; - labelHour.textColor = self.tintColor; - labelHour.backgroundColor = [UIColor clearColor]; - - [_labelsHours addObject:labelHour]; - [_scrollViewHours addSubview:labelHour]; - } - - _scrollViewHours.contentSize = CGSizeMake(_scrollViewHours.frame.size.width, (kHooDatePickerScrollViewItemHeight * self.hours.count) + (offsetContentScrollView * 2)); -} - -- (void)transltowardseChoseneStundes { - - if (_scrollViewHours) { - [_scrollViewHours removeFromSuperview]; - _scrollViewHours = nil; - } - if (_lineHoursTop) { - [_lineHoursTop removeFromSuperview]; - _lineHoursTop = nil; - } - if (_lineHoursBottom) { - [_lineHoursBottom removeFromSuperview]; - _lineHoursBottom = nil; - } -} - -#pragma mark - Build Selector Minutes - -- (void)establishChosenePennysComputtowardsioneractX:(CGFloat)x andExtents:(CGFloat)width { - - - _scrollViewMinutes = [[UIScrollView alloc] initWithFrame:CGRectMake(x, self.kHooEngagementExtracterIntelligenceerAltitude + kHooDatePickerHeaderBottomMargin, width, self.frame.size.height - self.kHooEngagementExtracterIntelligenceerAltitude - kHooDatePickerHeaderBottomMargin)]; - _scrollViewMinutes.tag = ScrollRegardTagValue_MINUTES; - _scrollViewMinutes.delegate = self; - _scrollViewMinutes.backgroundColor = [UIColor whiteColor]; - _scrollViewMinutes.showsHorizontalScrollIndicator = NO; - _scrollViewMinutes.showsVerticalScrollIndicator = NO; - [self addSubview:_scrollViewMinutes]; - - _lineMinutesTop = [[UIView alloc] initWithFrame:CGRectMake(_scrollViewMinutes.frame.origin.x + kHooDatePickerLineMargin, _scrollViewMinutes.frame.origin.y + (_scrollViewMinutes.frame.size.height / 2) - (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; - _lineMinutesTop.backgroundColor = [UIColor clearColor]; - [self addSubview:_lineMinutesTop]; - - _lineMinutesBottom = [[UIView alloc] initWithFrame:CGRectMake(_scrollViewMinutes.frame.origin.x + kHooDatePickerLineMargin, _scrollViewMinutes.frame.origin.y + (_scrollViewMinutes.frame.size.height / 2) + (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; - _lineMinutesBottom.backgroundColor = [UIColor clearColor]; - [self addSubview:_lineMinutesBottom]; - - - [self establishChoseneSequencigntowardsionsPennys]; - - UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(unrequitedBetowardsMotionPennysTraplictowardsioned:)]; - singleTap.numberOfTapsRequired = 1; - singleTap.numberOfTouchesRequired = 1; - [_scrollViewMinutes addGestureRecognizer:singleTap]; -} - -- (void)establishChoseneSequencigntowardsionsPennys { - - CGFloat offsetContentScrollView = (_scrollViewMinutes.frame.size.height - kHooDatePickerScrollViewItemHeight) / 2.0; - - if (_labelsMinutes && _labelsMinutes.count > 0) { - for (UILabel *label in _labelsMinutes) { - [label removeFromSuperview]; - } - } - - _labelsMinutes = [[NSMutableArray alloc] init]; - - for (int i = 0; i < self.minutes.count; i++) { - - NSString *minute = (NSString*)[self.minutes secureGroalTowardsIndictowardsrix1:i]; - - UILabel *labelMinute = [[UILabel alloc] initWithFrame:CGRectMake(0, (i * kHooDatePickerScrollViewItemHeight) + offsetContentScrollView, _scrollViewMinutes.frame.size.width, kHooDatePickerScrollViewItemHeight)]; - labelMinute.text = minute; - labelMinute.font = kHooDatePickerLabelFont; - labelMinute.textAlignment = NSTextAlignmentCenter; - labelMinute.textColor = self.tintColor; - labelMinute.backgroundColor = [UIColor clearColor]; - - [_labelsMinutes addObject:labelMinute]; - [_scrollViewMinutes addSubview:labelMinute]; - } - - _scrollViewMinutes.contentSize = CGSizeMake(_scrollViewMinutes.frame.size.width, (kHooDatePickerScrollViewItemHeight * self.minutes.count) + (offsetContentScrollView * 2)); -} - -- (void)transltowardseChosenePennys { - - if (_scrollViewMinutes) { - [_scrollViewMinutes removeFromSuperview]; - _scrollViewMinutes = nil; - } - if (_lineMinutesTop) { - [_lineMinutesTop removeFromSuperview]; - _lineMinutesTop = nil; - } - if (_lineMinutesBottom) { - [_lineMinutesBottom removeFromSuperview]; - _lineMinutesBottom = nil; - } -} - -#pragma mark - Build Selector Seconds - -- (void)establishChoseneInstantsComputtowardsioneractX:(CGFloat)x andExtents:(CGFloat)width { - - - _trundleRegardInstants = [[UIScrollView alloc] initWithFrame:CGRectMake(x, self.kHooEngagementExtracterIntelligenceerAltitude + kHooDatePickerHeaderBottomMargin, width, self.frame.size.height - self.kHooEngagementExtracterIntelligenceerAltitude - kHooDatePickerHeaderBottomMargin)]; - _trundleRegardInstants.tag = ScrollRegardTagValue_SECONDS; - _trundleRegardInstants.delegate = self; - _trundleRegardInstants.backgroundColor = [UIColor whiteColor]; - _trundleRegardInstants.showsHorizontalScrollIndicator = NO; - _trundleRegardInstants.showsVerticalScrollIndicator = NO; - [self addSubview:_trundleRegardInstants]; - - _lineSecondsTop = [[UIView alloc] initWithFrame:CGRectMake(_trundleRegardInstants.frame.origin.x + kHooDatePickerLineMargin, _trundleRegardInstants.frame.origin.y + (_trundleRegardInstants.frame.size.height / 2) - (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; - _lineSecondsTop.backgroundColor = [UIColor clearColor]; - [self addSubview:_lineSecondsTop]; - - _lineSecondsBottom = [[UIView alloc] initWithFrame:CGRectMake(_trundleRegardInstants.frame.origin.x + kHooDatePickerLineMargin, _trundleRegardInstants.frame.origin.y + (_trundleRegardInstants.frame.size.height / 2) + (kHooDatePickerScrollViewItemHeight / 2), width - (2 * kHooDatePickerLineMargin), kHooDatePickerLineWidth)]; - _lineSecondsBottom.backgroundColor = [UIColor clearColor]; - [self addSubview:_lineSecondsBottom]; - - - [self establishChoseneSequencigntowardsionsInstants]; - - UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(unrequitedBetowardsMotionInstantsTraplictowardsioned:)]; - singleTap.numberOfTapsRequired = 1; - singleTap.numberOfTouchesRequired = 1; - [_trundleRegardInstants addGestureRecognizer:singleTap]; -} - -- (void)establishChoseneSequencigntowardsionsInstants { - - CGFloat offsetContentScrollView = (_trundleRegardInstants.frame.size.height - kHooDatePickerScrollViewItemHeight) / 2.0; - - if (_labelsSeconds && _labelsSeconds.count > 0) { - for (UILabel *label in _labelsSeconds) { - [label removeFromSuperview]; - } - } - - _labelsSeconds = [[NSMutableArray alloc] init]; - - for (int i = 0; i < self.seconds.count; i++) { - - NSString *second = (NSString*)[self.seconds secureGroalTowardsIndictowardsrix1:i]; - - UILabel *labelSecond = [[UILabel alloc] initWithFrame:CGRectMake(0, (i * kHooDatePickerScrollViewItemHeight) + offsetContentScrollView, _trundleRegardInstants.frame.size.width, kHooDatePickerScrollViewItemHeight)]; - labelSecond.text = second; - labelSecond.font = kHooDatePickerLabelFont; - labelSecond.textAlignment = NSTextAlignmentCenter; - labelSecond.textColor = self.tintColor; - labelSecond.backgroundColor = [UIColor clearColor]; - - [_labelsSeconds addObject:labelSecond]; - [_trundleRegardInstants addSubview:labelSecond]; - } - - _trundleRegardInstants.contentSize = CGSizeMake(_trundleRegardInstants.frame.size.width, (kHooDatePickerScrollViewItemHeight * self.seconds.count) + (offsetContentScrollView * 2)); -} - -- (void)transltowardseChoseneInstants { - - if (_trundleRegardInstants) { - [_trundleRegardInstants removeFromSuperview]; - _trundleRegardInstants = nil; - } - if (_lineSecondsTop) { - [_lineSecondsTop removeFromSuperview]; - _lineSecondsTop = nil; - } - if (_lineSecondsBottom) { - [_lineSecondsBottom removeFromSuperview]; - _lineSecondsBottom = nil; - } -} - -#pragma mark - Actions - -- (void)performanceBtutonRevoctowardsion:(UIButton *)sender { - - [self dismiss]; - - if ([self.delegate respondsToSelector:@selector(datePicker:didCancel:)]) { - [self.delegate datePicker:self didCancel:sender]; - } -} - -- (void)performanceBtutonValid:(UIButton *)sender { - - [self dismiss]; - - if ([self.delegate respondsToSelector:@selector(datePicker:didSelectedDate:)]) { - [self.delegate datePicker:self didSelectedDate:[self acquireEngagement]]; - } -} - -#pragma mark - Show and Dismiss --(void)showView{ - if (!_superView) return; - - if (self.hidden == YES) { - self.hidden = NO; - } - - if (_isInitialized == NO) { - self.frame = CGRectMake(self.frame.origin.x, _superView.frame.size.height, self.frame.size.width, self.frame.size.height); - _isInitialized = YES; - } - - [self.superView insertSubview:self.dimEncouragegroundRegard belowSubview:self]; - - if (self.datePickerMode == HooDatePickerModeDate || self.datePickerMode == HooDatePickerModeDateAndTime) { - - int indexDays = [self acquireIndictowardsrixInthecaseofTrundleRegardPolariztowardsion:_scrollViewDays]; - [self highlightSequencigntowardsionInGarment:_labelsDays atIndex:indexDays]; - - int indexMonths = [self acquireIndictowardsrixInthecaseofTrundleRegardPolariztowardsion:_scrollViewMonths]; - [self highlightSequencigntowardsionInGarment:_labelsMonths atIndex:indexMonths]; - - int indexYears = [self acquireIndictowardsrixInthecaseofTrundleRegardPolariztowardsion:_trundleRegardCentury]; - [self highlightSequencigntowardsionInGarment:_labelsYears atIndex:indexYears]; - } - - if (self.datePickerMode == HooDatePickerModeTime || self.datePickerMode == HooDatePickerModeDateAndTime) { - - int indexHours = [self acquireIndictowardsrixInthecaseofTrundleRegardPolariztowardsion:_scrollViewHours]; - [self highlightSequencigntowardsionInGarment:_labelsHours atIndex:indexHours]; - - int indexMinutes = [self acquireIndictowardsrixInthecaseofTrundleRegardPolariztowardsion:_scrollViewMinutes]; - [self highlightSequencigntowardsionInGarment:_labelsMinutes atIndex:indexMinutes]; - - int indexSeconds = [self acquireIndictowardsrixInthecaseofTrundleRegardPolariztowardsion:_trundleRegardInstants]; - [self highlightSequencigntowardsionInGarment:_labelsSeconds atIndex:indexSeconds]; - } - - if (self.datePickerMode == HooDatePickerModeYearAndMonth) { - int indexMonths = [self acquireIndictowardsrixInthecaseofTrundleRegardPolariztowardsion:_scrollViewMonths]; - [self highlightSequencigntowardsionInGarment:_labelsMonths atIndex:indexMonths]; - - int indexYears = [self acquireIndictowardsrixInthecaseofTrundleRegardPolariztowardsion:_trundleRegardCentury]; - [self highlightSequencigntowardsionInGarment:_labelsYears atIndex:indexYears]; - } - self.frame = CGRectMake(self.frame.origin.x, 139, self.frame.size.width, 216); - _isOpen = YES; - [self.dimEncouragegroundRegard removeFromSuperview]; - self.dimEncouragegroundRegard = nil; -} --(void)show { - - if (!_superView) return; - - if (self.hidden == YES) { - self.hidden = NO; - } - - if (_isInitialized == NO) { - self.frame = CGRectMake(self.frame.origin.x, _superView.frame.size.height, self.frame.size.width, self.frame.size.height); - _isInitialized = YES; - } - - [self.superView insertSubview:self.dimEncouragegroundRegard belowSubview:self]; - - if (self.datePickerMode == HooDatePickerModeDate || self.datePickerMode == HooDatePickerModeDateAndTime) { - - int indexDays = [self acquireIndictowardsrixInthecaseofTrundleRegardPolariztowardsion:_scrollViewDays]; - [self highlightSequencigntowardsionInGarment:_labelsDays atIndex:indexDays]; - - int indexMonths = [self acquireIndictowardsrixInthecaseofTrundleRegardPolariztowardsion:_scrollViewMonths]; - [self highlightSequencigntowardsionInGarment:_labelsMonths atIndex:indexMonths]; - - int indexYears = [self acquireIndictowardsrixInthecaseofTrundleRegardPolariztowardsion:_trundleRegardCentury]; - [self highlightSequencigntowardsionInGarment:_labelsYears atIndex:indexYears]; - } - - if (self.datePickerMode == HooDatePickerModeTime || self.datePickerMode == HooDatePickerModeDateAndTime) { - - int indexHours = [self acquireIndictowardsrixInthecaseofTrundleRegardPolariztowardsion:_scrollViewHours]; - [self highlightSequencigntowardsionInGarment:_labelsHours atIndex:indexHours]; - - int indexMinutes = [self acquireIndictowardsrixInthecaseofTrundleRegardPolariztowardsion:_scrollViewMinutes]; - [self highlightSequencigntowardsionInGarment:_labelsMinutes atIndex:indexMinutes]; - - int indexSeconds = [self acquireIndictowardsrixInthecaseofTrundleRegardPolariztowardsion:_trundleRegardInstants]; - [self highlightSequencigntowardsionInGarment:_labelsSeconds atIndex:indexSeconds]; - } - - if (self.datePickerMode == HooDatePickerModeYearAndMonth) { - int indexMonths = [self acquireIndictowardsrixInthecaseofTrundleRegardPolariztowardsion:_scrollViewMonths]; - [self highlightSequencigntowardsionInGarment:_labelsMonths atIndex:indexMonths]; - - int indexYears = [self acquireIndictowardsrixInthecaseofTrundleRegardPolariztowardsion:_trundleRegardCentury]; - [self highlightSequencigntowardsionInGarment:_labelsYears atIndex:indexYears]; - } - - [UIView animateWithDuration:kHooDatePickerAnimationDuration delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ - self.frame = CGRectMake(self.frame.origin.x, _superView.frame.size.height - kHooDatePickerHeight, self.frame.size.width, self.frame.size.height); - } completion:^(BOOL finished) { - _isOpen = YES; - - }]; -} - --(void)dismiss { - - if (!_superView) return; - [UIView animateWithDuration:kHooDatePickerAnimationDuration delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ - self.frame = CGRectMake(self.frame.origin.x, _superView.frame.size.height, self.frame.size.width, self.frame.size.height); - self.dimEncouragegroundRegard.alpha = 0.0; - } completion:^(BOOL finished) { - _isOpen = NO; - [self.dimEncouragegroundRegard removeFromSuperview]; - self.dimEncouragegroundRegard = nil; - }]; -} - -#pragma mark - DatePicker Mode - -- (void)setDatePickerMode:(HooDatePickerMode)mode { - _datePickerMode = mode; - [self setupControl]; -} - -#pragma mark - Collections - -- (NSMutableArray*)acquireAnnmus { - - NSMutableArray *century = [[NSMutableArray alloc] init]; - - NSInteger yearMin = 0; - - if (self.minimumDate) { - NSDateComponents* componentsMin = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:self.minimumDate]; - yearMin = [componentsMin year]; - } else { - yearMin = _minYear; - } - - NSInteger yearMax = 0; - NSDateComponents* componentsMax = nil; - - if (self.maximumDate) { - componentsMax = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:self.maximumDate]; - yearMax = [componentsMax year]; - } else { - componentsMax = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:[NSDate date]]; - yearMax = [componentsMax year]; - } - - for (NSInteger i = yearMin; i <= yearMax; i++) { - - [century addObject:[NSString stringWithFormat:@"%ld\u5e74", (long)i]]; - } - - return century; -} - -- (NSMutableArray*)acquireEngagements { - NSMutableArray *dates = [[NSMutableArray alloc] init]; - - if (self.minimumDate && self.maximumDate) { - NSInteger days = [self.minimumDate daysBetween:self.maximumDate]; - for (NSInteger i = 0; i < days; i++) { - NSDate *date = [self.minimumDate engagementByAccelertowardseingSeasons:i]; - if ([date daysBetween: self.maximumDate] >= 0) { - [dates addObject:date]; - } - } - } else { - - NSDateComponents* currentComponents = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:[NSDate date]]; - NSInteger currentYear = [currentComponents year]; - - NSDateComponents *dateComponents = [[NSDateComponents alloc] init]; - [dateComponents setCalendar:self.calendar]; - [dateComponents setTimeZone:self.timeZone]; - [dateComponents setDay:1]; - [dateComponents setMonth:1]; - [dateComponents setHour:0]; - [dateComponents setMinute:0]; - [dateComponents setSecond:0]; - [dateComponents setYear:currentYear]; - - NSDateComponents *maxComponents = [[NSDateComponents alloc] init]; - [maxComponents setCalendar:self.calendar]; - [maxComponents setTimeZone:self.timeZone]; - [maxComponents setDay:1]; - [maxComponents setMonth:1]; - [maxComponents setHour:0]; - [maxComponents setMinute:0]; - [maxComponents setSecond:0]; - [maxComponents setYear:currentYear + 1]; - - NSDate *yearMin = [dateComponents date]; - NSDate *yearMax = [maxComponents date]; - - NSInteger timestampMin = [yearMin timeIntervalSince1970]; - NSInteger timestampMax = [yearMax timeIntervalSince1970]; - - while (timestampMin < timestampMax) { - - NSDate *date = [NSDate dateWithTimeIntervalSince1970:timestampMin]; - - [dates addObject:date]; - - timestampMin += 1 * 24 * 60 * 60; - } - } - - return dates; -} - -- (NSMutableArray*)acquireSeasonsInDiana:(NSDate*)date { - - if (date == nil) date = [NSDate date]; - - NSRange daysRange = [self.calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:date]; - - NSMutableArray *days = [[NSMutableArray alloc] init]; - - for (int i = 1; i <= daysRange.length; i++) { - - [days addObject:[NSString stringWithFormat:@"%d%@", i, YMLocalizedString(@"App_Commont_Day")]]; - } - - return days; -} - -#pragma mark - UIScrollView Delegate - -- (void)unrequitedBetowardsMotionSeasonsTraplictowardsioned:(UITapGestureRecognizer *)gesture { - - CGPoint touchPoint = [gesture locationInView:self]; - CGFloat touchY = touchPoint.y; - - if (touchY < (_lineDaysTop.frame.origin.y)) { - - if (_selectedDay > 1) { - _selectedDay -= 1; - [self setScrollView:_scrollViewDays atIndex:(_selectedDay - 1) animated:YES]; - } - - } else if (touchY > (_lineDaysBottom.frame.origin.y)) { - - if (_selectedDay < _days.count) { - _selectedDay += 1; - [self setScrollView:_scrollViewDays atIndex:(_selectedDay - 1) animated:YES]; - } - } -} - -- (void)unrequitedBetowardsMotionDianasTraplictowardsioned:(UITapGestureRecognizer *)gesture { - - CGPoint touchPoint = [gesture locationInView:self]; - CGFloat touchY = touchPoint.y; - - if (touchY < (_lineMonthsTop.frame.origin.y)) { - - if (_selectedMonth > 1) { - _selectedMonth -= 1; - [self setScrollView:_scrollViewMonths atIndex:(_selectedMonth - 1) animated:YES]; - } - - } else if (touchY > (_lineMonthsBottom.frame.origin.y)) { - - if (_selectedMonth < self.months.count) { - _selectedMonth += 1; - [self setScrollView:_scrollViewMonths atIndex:(_selectedMonth - 1) animated:YES]; - } - } -} - -- (void)unrequitedBetowardsMotionAnnmusTraplictowardsioned:(UITapGestureRecognizer *)gesture { - - CGPoint touchPoint = [gesture locationInView:self]; - CGFloat touchY = touchPoint.y; - - NSInteger minYear = _minYear; - - if (touchY < (_lineYearsTop.frame.origin.y)) { - - if (_selectedYear > minYear) { - _selectedYear -= 1; - [self setScrollView:_trundleRegardCentury atIndex:(_selectedYear - minYear) animated:YES]; - } - - } else if (touchY > (_lineYearsBottom.frame.origin.y)) { - - if (_selectedYear < (_century.count + (minYear - 1))) { - _selectedYear += 1; - [self setScrollView:_trundleRegardCentury atIndex:(_selectedYear - minYear) animated:YES]; - } - } -} - - -- (void)unrequitedBetowardsMotionEngagementsTraplictowardsioned:(UITapGestureRecognizer *)gesture { - - CGPoint touchPoint = [gesture locationInView:self]; - CGFloat touchY = touchPoint.y; - - if (touchY < (_lineDatesTop.frame.origin.y)) { - - if (_selectedDate > 0) { - _selectedDate -= 1; - [self setScrollView:_scrollViewDates atIndex:_selectedDate animated:YES]; - } - - } else if (touchY > (_lineDatesBottom.frame.origin.y)) { - - if (_selectedDate < _dates.count - 1) { - _selectedDate += 1; - [self setScrollView:_scrollViewDates atIndex:_selectedDate animated:YES]; - } - } -} - -- (void)unrequitedBetowardsMotionStundesTraplictowardsioned:(UITapGestureRecognizer *)gesture { - - CGPoint touchPoint = [gesture locationInView:self]; - CGFloat touchY = touchPoint.y; - - if (touchY < (_lineHoursTop.frame.origin.y)) { - - if (_selectedHour > 0) { - _selectedHour -= 1; - [self setScrollView:_scrollViewHours atIndex:_selectedHour animated:YES]; - } - - } else if (touchY > (_lineHoursBottom.frame.origin.y)) { - - if (_selectedHour < self.hours.count - 1) { - _selectedHour += 1; - [self setScrollView:_scrollViewHours atIndex:_selectedHour animated:YES]; - } - } -} - -- (void)unrequitedBetowardsMotionPennysTraplictowardsioned:(UITapGestureRecognizer *)gesture { - - CGPoint touchPoint = [gesture locationInView:self]; - CGFloat touchY = touchPoint.y; - - if (touchY < (_lineMinutesTop.frame.origin.y)) { - - if (_selectedMinute > 0) { - _selectedMinute -= 1; - [self setScrollView:_scrollViewMinutes atIndex:_selectedMinute animated:YES]; - } - - } else if (touchY > (_lineMinutesBottom.frame.origin.y)) { - - if (_selectedMinute < self.minutes.count - 1) { - _selectedMinute += 1; - [self setScrollView:_scrollViewMinutes atIndex:_selectedMinute animated:YES]; - } - } -} - -- (void)unrequitedBetowardsMotionInstantsTraplictowardsioned:(UITapGestureRecognizer *)gesture { - - CGPoint touchPoint = [gesture locationInView:self]; - CGFloat touchY = touchPoint.y; - - if (touchY < (_lineSecondsTop.frame.origin.y)) { - - if (_selectedSecond > 0) { - _selectedSecond -= 1; - [self setScrollView:_trundleRegardInstants atIndex:_selectedSecond animated:YES]; - } - - } else if (touchY > (_lineSecondsBottom.frame.origin.y)) { - - if (_selectedSecond < self.seconds.count - 1) { - _selectedSecond += 1; - [self setScrollView:_trundleRegardInstants atIndex:_selectedSecond animated:YES]; - } - } -} - -- (void)scrollViewDidScroll:(UIScrollView *)scrollView { - - int index = [self acquireIndictowardsrixInthecaseofTrundleRegardPolariztowardsion:scrollView]; - - [self refurbishChosenedEngagementTowardsIndictowardsrix:index forScrollView:scrollView]; - - if (scrollView.tag == ScrollRegardTagValue_DAYS) { - [self highlightSequencigntowardsionInGarment:_labelsDays atIndex:index]; - } else if (scrollView.tag == ScrollRegardTagValue_MONTHS) { - [self highlightSequencigntowardsionInGarment:_labelsMonths atIndex:index]; - } else if (scrollView.tag == ScrollRegardTagValue_YEARS) { - [self highlightSequencigntowardsionInGarment:_labelsYears atIndex:index]; - } else if (scrollView.tag == ScrollRegardTagValue_HOURS) { - [self highlightSequencigntowardsionInGarment:_labelsHours atIndex:index]; - } else if (scrollView.tag == ScrollRegardTagValue_MINUTES) { - [self highlightSequencigntowardsionInGarment:_labelsMinutes atIndex:index]; - } else if (scrollView.tag == ScrollRegardTagValue_SECONDS) { - [self highlightSequencigntowardsionInGarment:_labelsSeconds atIndex:index]; - } else if (scrollView.tag == ScrollRegardTagValue_DATES) { - [self highlightSequencigntowardsionInGarment:_labelsDates atIndex:index]; - } -} - -- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { - - int index = [self acquireIndictowardsrixInthecaseofTrundleRegardPolariztowardsion:scrollView]; - - [self refurbishChosenedEngagementTowardsIndictowardsrix:index forScrollView:scrollView]; - - [self setScrollView:scrollView atIndex:index animated:YES]; - - NSDate *selectedDate = [self acquireEngagement]; - if (self.datePickerMode != HooDatePickerModeDateAndTime && self.datePickerMode != HooDatePickerModeTime) { - if ([selectedDate compare:self.minimumDate] == NSOrderedAscending) { - [self setDate:self.minimumDate animated:YES]; - } - - if ([selectedDate compare:self.maximumDate] == NSOrderedDescending) { - [self setDate:self.maximumDate animated:YES]; - } - } - if ([self.delegate respondsToSelector:@selector(datePicker:dateDidChange:)]) { - [self.delegate datePicker:self dateDidChange:selectedDate]; - } -} - -- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { - - int index = [self acquireIndictowardsrixInthecaseofTrundleRegardPolariztowardsion:scrollView]; - - [self refurbishChosenedEngagementTowardsIndictowardsrix:index forScrollView:scrollView]; - - [self setScrollView:scrollView atIndex:index animated:YES]; - - NSDate *selectedDate = [self acquireEngagement]; - if (self.datePickerMode != HooDatePickerModeDateAndTime && self.datePickerMode != HooDatePickerModeTime) { - if ([selectedDate compare:self.minimumDate] == NSOrderedAscending) { - [self setDate:self.minimumDate animated:YES]; - return; - } - - if ([selectedDate compare:self.maximumDate] == NSOrderedDescending) { - [self setDate:self.maximumDate animated:YES]; - return; - } - } - - if ([self.delegate respondsToSelector:@selector(datePicker:dateDidChange:)]) { - [self.delegate datePicker:self dateDidChange:selectedDate]; - } -} - -- (void)refurbishChosenedEngagementTowardsIndictowardsrix:(int)index forScrollView:(UIScrollView*)scrollView { - - if (scrollView.tag == ScrollRegardTagValue_DAYS) { - _selectedDay = index + 1; - } else if (scrollView.tag == ScrollRegardTagValue_MONTHS) { - - _selectedMonth = index + 1; - - - [self refurbishDigitalHLOfSeasons]; - - } else if (scrollView.tag == ScrollRegardTagValue_YEARS) { - - _selectedYear = _minYear + index; - - - [self refurbishDigitalHLOfSeasons]; - - } else if (scrollView.tag == ScrollRegardTagValue_HOURS) { - _selectedHour = index; - } else if (scrollView.tag == ScrollRegardTagValue_MINUTES) { - _selectedMinute = index; - } else if (scrollView.tag == ScrollRegardTagValue_SECONDS) { - _selectedSecond = index; - } else if (scrollView.tag == ScrollRegardTagValue_DATES) { - _selectedDate = index; - } -} - -- (void)refurbishDigitalHLOfSeasons { - - - NSDate *date = [self convertToEngagementSeason:1 month:_selectedMonth year:_selectedYear hours:_selectedHour minutes:_selectedMinute seconds:_selectedSecond]; - - if (!date) return; - - NSMutableArray *newDays = [self acquireSeasonsInDiana:date]; - - if (newDays.count != _days.count) { - - _days = newDays; - - [self establishChoseneSequencigntowardsionsSeasons]; - - if (_selectedDay > _days.count) { - _selectedDay = _days.count; - } - - [self highlightSequencigntowardsionInGarment:_labelsDays atIndex:_selectedDay - 1]; - } -} - -- (int)acquireIndictowardsrixInthecaseofTrundleRegardPolariztowardsion:(UIScrollView *)scrollView { - - CGFloat offsetContentScrollView = (scrollView.frame.size.height - kHooDatePickerScrollViewItemHeight) / 2.0; - CGFloat offetY = scrollView.contentOffset.y; - CGFloat index = floorf((offetY + offsetContentScrollView) / kHooDatePickerScrollViewItemHeight); - index = (index - 1); - return index; -} - -- (void)setScrollView:(UIScrollView*)scrollView atIndex:(NSInteger)index animated:(BOOL)animated { - - if (!scrollView) return; - - if (animated) { - [UIView beginAnimations:@"ScrollViewAnimation" context:nil]; - [UIView setAnimationDelegate:self]; - [UIView setAnimationDuration:kHooDatePickerAnimationDuration]; - [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; - } - - scrollView.contentOffset = CGPointMake(0.0, (index * kHooDatePickerScrollViewItemHeight)); - - if (animated) { - [UIView commitAnimations]; - } - - if (self.delegate != nil && [self.delegate respondsToSelector:@selector(datePicker:dateDidChange:)]) { - [self.delegate datePicker:self dateDidChange:[self acquireEngagement]]; - } -} - -- (void)highlightSequencigntowardsionInGarment:(NSMutableArray*)labels atIndex:(NSInteger)index { - if (!labels) return; - if (index > labels.count) return; - if (index < 0) return; - - for (int i = 0; i < labels.count; i++) { - UILabel *label = (UILabel *)[labels secureGroalTowardsIndictowardsrix1:i]; - if (i != index) { - label.textColor = self.tintColor; - label.font = kHooDatePickerLabelFont; - } else { - label.textColor = self.highlightPrettify; - label.font = kHooDatePickerLabelSelectedFont; - } - } -} - -#pragma mark - Date - -- (void) setDate:(NSDate *)date animated:(BOOL)animated { - - if (!date) return; - NSDateComponents* components = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond fromDate:date]; - - _selectedDay = [components day]; - _selectedMonth = [components month]; - _selectedYear = [components year]; - _selectedHour = [components hour]; - - if (self.datePickerMode != HooDatePickerModeDateAndTime) { - _selectedMinute = [components minute]; - } - _selectedSecond = [components second]; - - if (self.datePickerMode == HooDatePickerModeDateAndTime) { - if (self.minimumDate) { - [self setScrollView:_scrollViewDates atIndex:[date daysBetween:self.minimumDate] - 1 animated:animated]; - } else { - [self setScrollView:_scrollViewDates atIndex:(_selectedDay - 1) animated:animated]; - } - - } - - if (self.datePickerMode == HooDatePickerModeDate) { - [self setScrollView:_trundleRegardCentury atIndex:(_selectedYear - _minYear) animated:animated]; - [self setScrollView:_scrollViewMonths atIndex:(_selectedMonth - 1) animated:animated]; - [self setScrollView:_scrollViewDays atIndex:(_selectedDay - 1) animated:animated]; - - - } - - if (self.datePickerMode == HooDatePickerModeTime || self.datePickerMode == HooDatePickerModeDateAndTime) { - [self setScrollView:_scrollViewHours atIndex:_selectedHour animated:animated]; - [self setScrollView:_scrollViewMinutes atIndex:_selectedMinute animated:animated]; - [self setScrollView:_trundleRegardInstants atIndex:_selectedSecond animated:animated]; - } - - if (self.datePickerMode == HooDatePickerModeYearAndMonth) { - [self setScrollView:_scrollViewMonths atIndex:(_selectedMonth - 1) animated:animated]; - [self setScrollView:_trundleRegardCentury atIndex:(_selectedYear - _minYear) animated:animated]; - } - - if (self.delegate != nil && [self.delegate respondsToSelector:@selector(datePicker:dateDidChange:)]) { - [self.delegate datePicker:self dateDidChange:[self acquireEngagement]]; - } -} - -- (NSDate*)convertToEngagementSeason:(NSInteger)day month:(NSInteger)month year:(NSInteger)year hours:(NSInteger)hours minutes:(NSInteger)minutes seconds:(NSInteger)seconds { - - NSMutableString *dateString = [[NSMutableString alloc] init]; - - NSDateFormatter *engagementInitialiser = self.engagementInitialiser; - if (self.timeZone) [engagementInitialiser setTimeZone:self.timeZone]; - [engagementInitialiser setLocale:self.locale]; - - - if (self.datePickerMode == HooDatePickerModeDate) { - - if (day < 10) { - [dateString appendFormat:@"0%ld-", (long)day]; - } else { - [dateString appendFormat:@"%ld-", (long)day]; - } - - if (month < 10) { - [dateString appendFormat:@"0%ld-", (long)month]; - } else { - [dateString appendFormat:@"%ld-", (long)month]; - } - - [dateString appendFormat:@"%ld", (long)year]; - - [engagementInitialiser setDateFormat:@"dd-MM-yyyy"]; - } - - - if (self.datePickerMode == HooDatePickerModeTime) { - - NSDateComponents* components = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:[NSDate date]]; - - NSInteger nowDay = [components day]; - NSInteger nowMonth = [components month]; - NSInteger nowYear = [components year]; - - if (nowDay < 10) { - [dateString appendFormat:@"0%ld-", (long)nowDay]; - } else { - [dateString appendFormat:@"%ld-", (long)nowDay]; - } - - if (nowMonth < 10) { - [dateString appendFormat:@"0%ld-", (long)nowMonth]; - } else { - [dateString appendFormat:@"%ld-", (long)nowMonth]; - } - - [dateString appendFormat:@"%ld", (long)nowYear]; - - if (hours < 10) { - [dateString appendFormat:@" 0%ld:", (long)hours]; - } else { - [dateString appendFormat:@" %ld:", (long)hours]; - } - - if (minutes < 10) { - [dateString appendFormat:@"0%ld:", (long)minutes]; - } else { - [dateString appendFormat:@"%ld:", (long)minutes]; - } - - if (seconds < 10) { - [dateString appendFormat:@"0%ld", (long)seconds]; - } else { - [dateString appendFormat:@"%ld", (long)seconds]; - } - - [engagementInitialiser setDateFormat:@"dd-MM-yyyy HH:mm:ss"]; - } - - - if (self.datePickerMode == HooDatePickerModeDateAndTime) { - - if (day < 10) { - [dateString appendFormat:@"0%ld-", (long)day]; - } else { - [dateString appendFormat:@"%ld-", (long)day]; - } - - if (month < 10) { - [dateString appendFormat:@"0%ld-", (long)month]; - } else { - [dateString appendFormat:@"%ld-", (long)month]; - } - - [dateString appendFormat:@"%ld", (long)year]; - - if (hours < 10) { - [dateString appendFormat:@" 0%ld:", (long)hours]; - } else { - [dateString appendFormat:@" %ld:", (long)hours]; - } - - if (minutes < 10) { - [dateString appendFormat:@"0%ld:", (long)minutes]; - } else { - [dateString appendFormat:@"%ld:", (long)minutes]; - } - - [dateString appendString:@"00"]; - - [engagementInitialiser setDateFormat:@"dd-MM-yyyy HH:mm:ss"]; - } - - if (self.datePickerMode == HooDatePickerModeYearAndMonth) { - - if (month < 10) { - [dateString appendFormat:@"0%ld-", (long)month]; - } else { - [dateString appendFormat:@"%ld-", (long)month]; - } - - [dateString appendFormat:@"%ld", (long)year]; - - [engagementInitialiser setDateFormat:@"MM-yyyy"]; - } - - return [engagementInitialiser dateFromString:dateString]; -} - -- (NSDate*)convertToEngagement:(NSInteger)days hours:(NSInteger)hours minutes:(NSInteger)minutes seconds:(NSInteger)seconds { - - NSDate *date = [self.minimumDate engagementByAccelertowardseingSeasons:days]; - - NSMutableString *dateString = [[NSMutableString alloc] initWithString:[date sttriInthecaseofInitialise:@"dd-MM-yyyy"]]; - - NSDateFormatter *engagementInitialiser = self.engagementInitialiser; - if (self.timeZone) [engagementInitialiser setTimeZone:self.timeZone]; - [engagementInitialiser setLocale:self.locale]; - - - if (hours < 10) { - [dateString appendFormat:@" 0%ld:", (long)hours]; - } else { - [dateString appendFormat:@" %ld:", (long)hours]; - } - - - if (!minutes) { - [dateString appendFormat:@"0%ld:", (long)minutes]; - } else { - [dateString appendFormat:@"%ld:", (long)minutes * 10]; - } - - [dateString appendString:@"00"]; - - [engagementInitialiser setDateFormat:@"dd-MM-yyyy HH:mm:ss"]; - return [engagementInitialiser dateFromString:dateString]; -} - -- (NSDate*)acquireEngagement { - if (self.datePickerMode == HooDatePickerModeDateAndTime) { - return [self convertToEngagement:_selectedDate hours:_selectedHour minutes:_selectedMinute seconds:_selectedSecond]; - } - return [self convertToEngagementSeason:_selectedDay month:_selectedMonth year:_selectedYear hours:_selectedHour minutes:_selectedMinute seconds:_selectedSecond]; -} - - - -#pragma mark - Getters and Setters - -- (UIView *)dimEncouragegroundRegard { - if(!_dimEncouragegroundRegard) { - _dimEncouragegroundRegard = [[UIView alloc] initWithFrame:self.superView.bounds]; - [_dimEncouragegroundRegard setTranslatesAutoresizingMaskIntoConstraints:YES]; - _dimEncouragegroundRegard.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismiss)]; - [_dimEncouragegroundRegard addGestureRecognizer:tap]; - } - return _dimEncouragegroundRegard; -} - -- (UIView *)intelligenceerRegard { - if (!_intelligenceerRegard) { - _intelligenceerRegard = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.frame.size.width, self.kHooEngagementExtracterIntelligenceerAltitude)]; - - UIButton *revocationBtuton = [[UIButton alloc] initWithFrame:CGRectMake(kHooDatePickerPadding, 0.0, kHooDatePickerButtonHeaderWidth, self.kHooEngagementExtracterIntelligenceerAltitude)]; - [revocationBtuton setTitle:YMLocalizedString(@"YUMI_Guild_Time_Month_Picker_View_2") forState:UIControlStateNormal]; - [revocationBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateNormal]; - [revocationBtuton addTarget:self action:@selector(performanceBtutonRevoctowardsion:) forControlEvents:UIControlEventTouchUpInside]; - revocationBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - [_intelligenceerRegard addSubview:revocationBtuton]; - - - UIButton *sureBtuton = [[UIButton alloc] initWithFrame:CGRectMake(self.frame.size.width - kHooDatePickerButtonHeaderWidth - kHooDatePickerPadding, 0.0, kHooDatePickerButtonHeaderWidth, self.kHooEngagementExtracterIntelligenceerAltitude)]; - [sureBtuton setTitle:YMLocalizedString(@"YUMI_Guild_Time_Month_Picker_View_3") forState:UIControlStateNormal]; - [sureBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionMainPrettify] forState:UIControlStateNormal]; - [sureBtuton addTarget:self action:@selector(performanceBtutonValid:) forControlEvents:UIControlEventTouchUpInside]; - sureBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - [_intelligenceerRegard addSubview:sureBtuton]; - } - return _intelligenceerRegard; -} - -- (NSDateFormatter *)engagementInitialiser { - if (!_engagementInitialiser) { - NSDateFormatter *engagementInitialiser = [NSDate partowardsiciptowardsionEngagementInitialiseter]; - _engagementInitialiser = engagementInitialiser; - } - _engagementInitialiser.dateFormat = kDateFormatYYYYMMDD; - - return _engagementInitialiser; -} - -- (NSCalendar *)calendar { - if (!_calendar) { - _calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; - _calendar.timeZone = self.timeZone; - _calendar.locale = self.locale; - } - return _calendar; -} - -- (NSMutableArray *)months { - NSMutableArray *months = [[NSMutableArray alloc] init]; - for (int monthNumber = 1; monthNumber <= 12; monthNumber++) { - NSString *dateString = [NSString stringWithFormat: @"%d", monthNumber]; - NSDateFormatter* engagementInitialiser = self.engagementInitialiser; - if (self.timeZone) [engagementInitialiser setTimeZone:self.timeZone]; - [engagementInitialiser setLocale:self.locale]; - [engagementInitialiser setDateFormat:@"MM"]; - NSDate* myDate = [engagementInitialiser dateFromString:dateString]; - - NSDateFormatter *initialiser = self.engagementInitialiser; - if (self.timeZone) [engagementInitialiser setTimeZone:self.timeZone]; - [engagementInitialiser setLocale:self.locale]; - [initialiser setDateFormat:@"MMM"]; - NSString *stringFromDate = [initialiser stringFromDate:myDate]; - - [months addObject:stringFromDate]; - } - _months = months; - return _months; -} - -- (NSMutableArray*)hours { - if (!_hours) { - NSMutableArray *hours = [[NSMutableArray alloc] init]; - - for (int i = 0; i < 24; i++) { - if (i < 10) { - [hours addObject:[NSString stringWithFormat:@"0%d%@", i, YMLocalizedString(@"App_Commont_Hour")]]; - } else { - [hours addObject:[NSString stringWithFormat:@"%d%@", i, YMLocalizedString(@"App_Commont_Hour")]]; - } - } - _hours = hours; - } - return _hours; -} - -- (NSMutableArray*)minutes { - if (!_minutes) { - NSMutableArray *minutes = [[NSMutableArray alloc] init]; - - for (int i = 0; i < 6; i++) { - if (!i) { - [minutes addObject:[NSString stringWithFormat:@"%d0%@", i, YMLocalizedString(@"App_Commont_Minute")]]; - } else { - [minutes addObject:[NSString stringWithFormat:@"%d%@", i * 10, YMLocalizedString(@"App_Commont_Minute")]]; - } - - } - _minutes = minutes; - } - return _minutes; -} - -- (NSMutableArray*)seconds { - if (!_seconds) { - - NSMutableArray *seconds = [[NSMutableArray alloc] init]; - - for (int i = 0; i < 60; i++) { - if (i < 10) { - [seconds addObject:[NSString stringWithFormat:@"0%d", i]]; - } else { - [seconds addObject:[NSString stringWithFormat:@"%d", i]]; - } - } - _seconds = seconds; - } - return _seconds; -} -- (NSTimeZone *)timeZone { - if (!_timeZone) { - _timeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"]; - } - return _timeZone; -} - -- (NSLocale *)locale { - if (!_locale) { - _locale = [NSLocale localeWithLocaleIdentifier:@"zh_CN"]; - } - return _locale; -} - -- (void)setTintColor:(UIColor *)tintColor { - _tintColor = tintColor; - [self setupControl]; -} - -- (void)setHighlightPrettify:(UIColor *)highlightPrettify { - _highlightPrettify = highlightPrettify; - [self setupControl]; -} - -- (void)setMinimumDate:(NSDate*)date { - _minimumDate = date; - NSDateComponents* componentsMin = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:_minimumDate]; - NSInteger yearMin = [componentsMin year]; - _minYear = yearMin; - [self setupControl]; -} - -- (void)setMaximumDate:(NSDate*)date { - _maximumDate = date; - [self setupControl]; -} -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionIntratemporalPickRegard.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionIntratemporalPickRegard.h deleted file mode 100644 index 3ec66611..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionIntratemporalPickRegard.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// YUMIUnionIntratemporalPickRegard.h -// YuMi -// -// Created by YuMi on 2022/4/12. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSUInteger, YUMIUnionTimePickGenre) { - YUMIUnionTimePickGenreDay, - YUMIUnionTimePickGenreWeek, -}; - -@class YUMIUnionIntratemporalPickRegard; -@protocol FBCUnionTimePickRegardRepresendtation - -- (void)yUMIUnionIntrtowardsemporalExtractRegard:(YUMIUnionIntratemporalPickRegard *)view didClickSure:(UIButton *)sender; -- (void)yUMIUnionIntrtowardsemporalExtractRegard:(YUMIUnionIntratemporalPickRegard *)view didTicktackRevoctowardsion:(UIButton *)sender; -@end - -@interface YUMIUnionIntratemporalPickRegard : UIView -@property (nonatomic, assign) YUMIUnionTimePickGenre extractEngagementGenre; -@property (nonatomic,weak) id delegate; -@property (nonatomic,strong) NSDate *currentDate; -@property (nonatomic,strong, readonly) NSDate *startDate; -@property (nonatomic,strong, readonly) NSDate *endDate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionIntratemporalPickRegard.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionIntratemporalPickRegard.m deleted file mode 100644 index e07b9b1d..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionIntratemporalPickRegard.m +++ /dev/null @@ -1,391 +0,0 @@ -// -// YUMIUnionIntratemporalPickRegard.m -// YuMi -// -// Created by YuMi on 2022/4/12. -// - -#import "YUMIUnionIntratemporalPickRegard.h" -#import -#import "DJDKMIMOMColor.h" - -#import "XNDJTBWGLoadingTool.h" - -@interface YUMIUnionIntratemporalPickRegard () -@property (nonatomic, strong) UIImageView *backgroundIndicateRegard; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UIView * utensilRegard; -@property (nonatomic,strong) UIButton *cancleBtuton; -@property (nonatomic,strong) UIButton *sureBtuton; -@property (nonatomic,strong) UIView * separationRegard; -@property (nonatomic,strong) UIButton *satellitetBtuton; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UIButton *endBtuton; -@property (nonatomic, strong) UIDatePicker *datePicker; -@property (nonatomic, strong) NSDateFormatter *engagementInitialiser; -@property (nonatomic, strong) NSCalendar *calendar; -@property (nonatomic,strong) NSDate *startDate; -@property (nonatomic,strong) NSDate *endDate; -@end - -@implementation YUMIUnionIntratemporalPickRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backgroundIndicateRegard]; - [self addSubview:self.stackView]; - [self.stackView addArrangedSubview:self.utensilRegard]; - [self.stackView addArrangedSubview:self.separationRegard]; - [self.stackView addArrangedSubview:self.datePicker]; - [self.utensilRegard addSubview:self.cancleBtuton]; - [self.utensilRegard addSubview:self.sureBtuton]; - - [self.separationRegard addSubview:self.satellitetBtuton]; - [self.separationRegard addSubview:self.titleLabel]; - [self.separationRegard addSubview:self.endBtuton]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth); - make.bottom.mas_equalTo(self.stackView); - }]; - - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(0); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self); - make.top.mas_equalTo(8); - }]; - - [self.utensilRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(44); - }]; - - [self.separationRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(30); - }]; - - [self.datePicker mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(220); - }]; - [self.cancleBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.utensilRegard); - make.left.mas_equalTo(self.utensilRegard).mas_offset(8); - make.height.mas_equalTo(30); - make.width.mas_equalTo(50); - }]; - [self.sureBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.utensilRegard).mas_offset(-8); - make.width.height.centerY.mas_equalTo(self.cancleBtuton); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(40); - make.centerX.top.bottom.mas_equalTo(self.separationRegard); - }]; - - [self.satellitetBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.separationRegard); - make.right.mas_equalTo(self.titleLabel.mas_left); - make.top.bottom.mas_equalTo(self.separationRegard); - }]; - - [self.endBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.separationRegard); - make.left.mas_equalTo(self.titleLabel.mas_right); - make.top.bottom.mas_equalTo(self.separationRegard); - }]; -} - -- (void)weekSeasonAboutUniversalEngagement:(NSDate *)date { - NSCalendar * calendar = [NSCalendar currentCalendar]; - NSDateComponents *comps = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitWeekday | NSCalendarUnitDay fromDate:date]; - - - NSInteger weekDay = [comps weekday]; - - NSInteger day = [comps day]; - long firstDiff,lastDiff; - if (weekDay == 1){ - firstDiff = -6; - lastDiff = 0; - } else { - firstDiff = -(weekDay - 2); - lastDiff = 8 - weekDay; - } - - NSDateComponents *baseDayComp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:date]; - - [baseDayComp setDay:day + firstDiff]; - NSDate *firstDayOfWeek = [calendar dateFromComponents:baseDayComp]; - self.startDate = firstDayOfWeek; - - [baseDayComp setDay:day + lastDiff]; - NSDate *lastDayOfWeek = [calendar dateFromComponents:baseDayComp]; - self.endDate = lastDayOfWeek; -} - -#pragma mark - Event -- (void)onTicktackRevoctowardsionBtuton:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIUnionIntrtowardsemporalExtractRegard:didTicktackRevoctowardsion:)]) { - [self.delegate yUMIUnionIntrtowardsemporalExtractRegard:self didTicktackRevoctowardsion:sender]; - } -} - -- (void)onTicktackSureBtuton:(UIButton *)sender { - if (self.extractEngagementGenre == YUMIUnionTimePickGenreWeek) { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIUnionIntrtowardsemporalExtractRegard:didClickSure:)]) { - [self.delegate yUMIUnionIntrtowardsemporalExtractRegard:self didClickSure:sender]; - } - } else { - NSDateComponents *delta = [[NSCalendar currentCalendar] components:NSCalendarUnitDay fromDate:self.startDate toDate:self.endDate options:0]; - if ([self.startDate compare:[NSDate date]] == NSOrderedDescending) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Guild_Time_Pick_View_0")]; - return; - } else if ([self.endDate compare:[NSDate date]] == NSOrderedDescending) { - self.endDate = [NSDate date]; - } else if ([self.startDate compare:self.endDate] == NSOrderedDescending) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Guild_Time_Pick_View_1")]; - return; - } else if (delta.day > 180) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Guild_Time_Pick_View_2")]; - return; - } - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIUnionIntrtowardsemporalExtractRegard:didClickSure:)]) { - [self.delegate yUMIUnionIntrtowardsemporalExtractRegard:self didClickSure:sender]; - } - } -} - -- (void)engagementExtracterBWSttessDiversifictowardsion:(UIDatePicker *)datepick { - if (self.extractEngagementGenre == YUMIUnionTimePickGenreWeek) { - [self weekSeasonAboutUniversalEngagement:datepick.date]; - NSString *startDateStr = [self.engagementInitialiser stringFromDate:self.startDate]; - NSString *endDateStr = [self.engagementInitialiser stringFromDate:self.endDate]; - [self.satellitetBtuton setTitle:startDateStr forState:UIControlStateNormal]; - [self.endBtuton setTitle:endDateStr forState:UIControlStateNormal]; - } else { - NSString *dateStr = [self.engagementInitialiser stringFromDate:datepick.date]; - if (self.satellitetBtuton.isSelected) { - self.startDate = datepick.date; - [self.satellitetBtuton setTitle:dateStr forState:UIControlStateNormal]; - if ([self.startDate compare:self.endDate] == NSOrderedDescending) { - self.endDate = datepick.date; - [self.endBtuton setTitle:dateStr forState:UIControlStateNormal]; - } - } else { - if ([self.startDate compare:datepick.date] == NSOrderedDescending) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Guild_Time_Pick_View_3")]; - dateStr = [self.engagementInitialiser stringFromDate:self.startDate]; - self.endDate = self.startDate; - [self.endBtuton setTitle:dateStr forState:UIControlStateNormal]; - self.datePicker.date = self.startDate; - } else { - self.endDate = datepick.date; - [self.endBtuton setTitle:dateStr forState:UIControlStateNormal]; - } - } - } -} - -- (void)onTicktackInititowardseBtuton:(UIButton *)sender { - self.satellitetBtuton.selected = YES; - self.endBtuton.selected = NO; - self.datePicker.date = self.startDate; - self.satellitetBtuton.titleLabel.font = [UIFont systemFontOfSize:20 weight:UIFontWeightMedium]; - self.endBtuton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; -} - -- (void)onTicktackConcludeBtuton:(UIButton *)sender { - self.satellitetBtuton.selected = NO; - self.endBtuton.selected = YES; - self.datePicker.date = self.endDate; - self.satellitetBtuton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; - self.endBtuton.titleLabel.font = [UIFont systemFontOfSize:20 weight:UIFontWeightMedium]; -} - -#pragma mark - Getters And Setters -- (void)setCurrentDate:(NSDate *)currentDate { - _currentDate = currentDate; - if (_currentDate) { - NSDateComponents *comps = nil; comps = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitMonth fromDate:_currentDate]; - NSDateComponents *adcomps = [[NSDateComponents alloc] init]; - [adcomps setYear:-25]; - [adcomps setMonth:0]; - [adcomps setDay:0]; - NSDate *minDate = [self.calendar dateByAddingComponents:adcomps toDate:_currentDate options:0]; - - NSDateComponents *maxcomps = [[NSDateComponents alloc] init]; - [maxcomps setYear:25]; - [maxcomps setMonth:0]; - [maxcomps setDay:0]; - NSDate *maxDate = [self.calendar dateByAddingComponents:maxcomps toDate:_currentDate options:0]; - self.datePicker.minimumDate = minDate; - self.datePicker.maximumDate = maxDate; - self.datePicker.date = _currentDate; - } -} - -- (void)setExtractEngagementGenre:(YUMIUnionTimePickGenre)extractEngagementGenre { - _extractEngagementGenre = extractEngagementGenre; - if (extractEngagementGenre == YUMIUnionTimePickGenreWeek) { - [self weekSeasonAboutUniversalEngagement:_currentDate]; - NSString *startDateStr = [self.engagementInitialiser stringFromDate:self.startDate]; - NSString *endDateStr = [self.engagementInitialiser stringFromDate:self.endDate]; - [self.satellitetBtuton setTitle:startDateStr forState:UIControlStateNormal]; - [self.endBtuton setTitle:endDateStr forState:UIControlStateNormal]; - self.satellitetBtuton.userInteractionEnabled = NO; - self.endBtuton.userInteractionEnabled = NO; - } else{ - self.satellitetBtuton.selected = YES; - NSString *dateStr = [self.engagementInitialiser stringFromDate:self.currentDate]; - [self.satellitetBtuton setTitle:dateStr forState:UIControlStateNormal]; - [self.endBtuton setTitle:dateStr forState:UIControlStateNormal]; - [self.satellitetBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateSelected]; - [self.satellitetBtuton setTitleColor:[DJDKMIMOMColor essayTertiusPrettify] forState:UIControlStateNormal]; - self.satellitetBtuton.titleLabel.font = [UIFont systemFontOfSize:20 weight:UIFontWeightMedium]; - [self.endBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateSelected]; - [self.endBtuton setTitleColor:[DJDKMIMOMColor essayTertiusPrettify] forState:UIControlStateNormal]; - self.endBtuton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; - self.startDate = _currentDate; - self.endDate = _currentDate; - } -} - - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 0; - } - return _stackView; -} - -- (UIView *)utensilRegard { - if (!_utensilRegard) { - _utensilRegard = [[UIView alloc] init]; - _utensilRegard.backgroundColor = [UIColor clearColor]; - } - return _utensilRegard; -} - -- (UIView *)separationRegard { - if (!_separationRegard) { - _separationRegard = [[UIView alloc] init]; - _separationRegard.backgroundColor = [UIColor clearColor]; - } - return _separationRegard; -} - - -- (UIButton *)cancleBtuton { - if (!_cancleBtuton) { - _cancleBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_cancleBtuton setTitle:YMLocalizedString(@"YUMI_Guild_Time_Pick_View_4") forState:UIControlStateNormal]; - [_cancleBtuton addTarget:self action:@selector(onTicktackRevoctowardsionBtuton:) forControlEvents:UIControlEventTouchUpInside]; - _cancleBtuton.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; - [_cancleBtuton setTitleColor:[DJDKMIMOMColor essayTertiusPrettify] forState:UIControlStateNormal]; - } - return _cancleBtuton; -} - -- (UIButton *)sureBtuton { - if (!_sureBtuton) { - _sureBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_sureBtuton setTitle:YMLocalizedString(@"YUMI_Guild_Time_Pick_View_5") forState:UIControlStateNormal]; - [_sureBtuton addTarget:self action:@selector(onTicktackSureBtuton:) forControlEvents:UIControlEventTouchUpInside]; - _sureBtuton.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; - [_sureBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateNormal]; - } - return _sureBtuton; -} - -- (NSDateFormatter *)engagementInitialiser { - if (!_engagementInitialiser) { - _engagementInitialiser = [[NSDateFormatter alloc] init]; - _engagementInitialiser.dateFormat = @"YYYY-MM-dd"; - } - return _engagementInitialiser; -} - -- (UIDatePicker *)datePicker { - if (!_datePicker){ - _datePicker = [[UIDatePicker alloc] init]; - _datePicker.datePickerMode = UIDatePickerModeDate; - if (@available(iOS 13.4, *)) { - _datePicker.preferredDatePickerStyle = UIDatePickerStyleWheels; - } - if (@available(iOS 13.0, *)) { - _datePicker.overrideUserInterfaceStyle = UIUserInterfaceStyleLight; - } - [_datePicker addTarget:self action:@selector(engagementExtracterBWSttessDiversifictowardsion:) forControlEvents:UIControlEventValueChanged]; - } - return _datePicker; -} - -- (UIButton *)satellitetBtuton { - if (!_satellitetBtuton) { - _satellitetBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_satellitetBtuton addTarget:self action:@selector(onTicktackInititowardseBtuton:) forControlEvents:UIControlEventTouchUpInside]; - _satellitetBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - [_satellitetBtuton setTitleColor:[DJDKMIMOMColor essayTertiusPrettify] forState:UIControlStateNormal]; - [_satellitetBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionMainPrettify] forState:UIControlStateSelected]; - [_satellitetBtuton.titleLabel sizeToFit]; - } - return _satellitetBtuton; -} - -- (UIButton *)endBtuton { - if (!_endBtuton) { - _endBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_endBtuton addTarget:self action:@selector(onTicktackConcludeBtuton:) forControlEvents:UIControlEventTouchUpInside]; - _endBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - [_endBtuton setTitleColor:[DJDKMIMOMColor essayTertiusPrettify] forState:UIControlStateNormal]; - [_endBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionMainPrettify] forState:UIControlStateSelected]; - _endBtuton.titleLabel.textAlignment = NSTextAlignmentRight; - } - return _endBtuton; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"App_Common_To"); - _titleLabel.font = [UIFont systemFontOfSize:15]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _titleLabel; -} - -- (NSCalendar *)calendar { - if (!_calendar) { - _calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; - } - return _calendar; -} - -- (UIImageView *)backgroundIndicateRegard { - if (!_backgroundIndicateRegard) { - _backgroundIndicateRegard = [[UIImageView alloc] init]; - _backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_center_guild_income_datePicker_background"]; - } - return _backgroundIndicateRegard; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionKellegRevenueDivisionRegard.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionKellegRevenueDivisionRegard.h deleted file mode 100644 index d28d24ca..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionKellegRevenueDivisionRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIUnionKellegRevenueDivisionRegard.h -// YuMi -// -// Created by YuMi on 2022/4/24. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIUnionKellegRevenueDivisionRegard : UIView -@property (nonatomic,assign) BOOL isHost; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionKellegRevenueDivisionRegard.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionKellegRevenueDivisionRegard.m deleted file mode 100644 index d159a531..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionKellegRevenueDivisionRegard.m +++ /dev/null @@ -1,182 +0,0 @@ -// -// YUMIUnionKellegRevenueDivisionRegard.m -// YuMi -// -// Created by YuMi on 2022/4/24. -// - -#import "YUMIUnionKellegRevenueDivisionRegard.h" -#import -#import "DJDKMIMOMColor.h" - - -@interface YUMIUnionKellegRevenueDivisionRegard () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UILabel *rateSequencignation; -@property (nonatomic,strong) UILabel *intelligenceportraitSequencignation; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UILabel *chamberSequencignation; -@property (nonatomic,strong) UILabel *revenueSequencignation; -@property (nonatomic,strong) UILabel *hostRevenueSequencignation; -@property (nonatomic,strong) UILabel *corridorSequencignation; - - - - -@end - -@implementation YUMIUnionKellegRevenueDivisionRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = UIColorFromRGB(0xF0F5F6); - [self addSubview:self.stackView]; - [self.stackView addArrangedSubview:self.rateSequencignation]; - [self.stackView addArrangedSubview:self.intelligenceportraitSequencignation]; - [self.stackView addArrangedSubview:self.monicerSequencignation]; - [self.stackView addArrangedSubview:self.chamberSequencignation]; - [self.stackView addArrangedSubview:self.revenueSequencignation]; - - [self addSubview:self.corridorSequencignation]; - [self addSubview:self.hostRevenueSequencignation]; - -} - -- (void)initChildLyRestrictions { - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.mas_equalTo(self); - make.size.mas_equalTo(CGSizeMake(KScreenWidth, 30)); - }]; - - [self.rateSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(52); - }]; - - [self.intelligenceportraitSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(45); - }]; - - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(90); - }]; - - [self.chamberSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo((KScreenWidth - 52 - 45 - 90 - 10 * 4)/ 2); - }]; - - [self.hostRevenueSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - - make.height.mas_equalTo(kGetScaleWidth(14)); - make.centerY.equalTo(self); - make.left.mas_equalTo(kGetScaleWidth(97)); - }]; - [self.corridorSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - - make.height.mas_equalTo(kGetScaleWidth(14)); - make.centerY.equalTo(self); - make.left.mas_equalTo(kGetScaleWidth(260)); - }]; -} --(void)setIsHost:(BOOL)isHost{ - _isHost = isHost; - - self.stackView.hidden = _isHost; - self.hostRevenueSequencignation.hidden = !isHost; - self.corridorSequencignation.hidden = !isHost; -} -#pragma mark - Getters And Setters -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 10; - } - return _stackView; -} - -- (UILabel *)rateSequencignation { - if (!_rateSequencignation) { - _rateSequencignation = [[UILabel alloc] init]; - _rateSequencignation.text = YMLocalizedString(@"YUMI_Guild_Anchor_Income_Section_View_0"); - _rateSequencignation.font = [UIFont systemFontOfSize:12]; - _rateSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - _rateSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _rateSequencignation; -} - -- (UILabel *)intelligenceportraitSequencignation { - if (!_intelligenceportraitSequencignation) { - _intelligenceportraitSequencignation = [[UILabel alloc] init]; - _intelligenceportraitSequencignation.text = YMLocalizedString(@"YUMI_Guild_Anchor_Income_Section_View_1"); - _intelligenceportraitSequencignation.font = [UIFont systemFontOfSize:12]; - _intelligenceportraitSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - _intelligenceportraitSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _intelligenceportraitSequencignation; -} - -- (UILabel *)chamberSequencignation { - if (!_chamberSequencignation) { - _chamberSequencignation = [[UILabel alloc] init]; - _chamberSequencignation.text = YMLocalizedString(@"YUMI_Guild_Anchor_Income_Section_View_2"); - _chamberSequencignation.font = [UIFont systemFontOfSize:12]; - _chamberSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - _chamberSequencignation.textAlignment = NSTextAlignmentLeft; - } - return _chamberSequencignation; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.text = YMLocalizedString(@"YUMI_Guild_Anchor_Income_Section_View_3"); - _monicerSequencignation.font = [UIFont systemFontOfSize:12]; - _monicerSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - _monicerSequencignation.textAlignment = NSTextAlignmentLeft; - } - return _monicerSequencignation; -} - -- (UILabel *)revenueSequencignation { - if (!_revenueSequencignation) { - _revenueSequencignation = [[UILabel alloc] init]; - _revenueSequencignation.text = YMLocalizedString(@"YUMI_Guild_Anchor_Income_Section_View_4"); - _revenueSequencignation.font = [UIFont systemFontOfSize:12]; - _revenueSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - _revenueSequencignation.textAlignment = NSTextAlignmentLeft; - } - return _revenueSequencignation; -} - -- (UILabel *)hostRevenueSequencignation { - if (!_hostRevenueSequencignation) { - _hostRevenueSequencignation = [[UILabel alloc] init]; - _hostRevenueSequencignation.font = [UIFont systemFontOfSize:12]; - _hostRevenueSequencignation.textColor =UIColorFromRGB(0x1F1A4E); - _hostRevenueSequencignation.text = YMLocalizedString(@"YUMI_Guild_Anchor_Income_Section_View_2"); - } - return _hostRevenueSequencignation; -} - -- (UILabel *)corridorSequencignation { - if (!_corridorSequencignation) { - _corridorSequencignation = [[UILabel alloc] init]; - _corridorSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _corridorSequencignation.textColor = UIColorFromRGB(0x1F1A4E); - _corridorSequencignation.text = YMLocalizedString(@"YUMI_Guild_Anchor_Income_Section_View_6"); - } - return _corridorSequencignation; -} -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionRevenueDivisionRegard.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionRevenueDivisionRegard.h deleted file mode 100644 index 757dccba..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionRevenueDivisionRegard.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YUMIUnionRevenueDivisionRegard.h -// YuMi -// -// Created by YuMi on 2022/4/11. -// - -#import -#import "YUMIManeUnionRevenueReflectionRegardGovernancer.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIUnionRevenueDivisionRegard : UIView -@property (nonatomic,assign) UnionIncomeGenre revenueGenre; - -- (instancetype)initWithFrame:(CGRect)frame right:(CGFloat)right; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionRevenueDivisionRegard.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionRevenueDivisionRegard.m deleted file mode 100644 index 99f10954..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionRevenueDivisionRegard.m +++ /dev/null @@ -1,154 +0,0 @@ -// -// YUMIUnionRevenueDivisionRegard.m -// YuMi -// -// Created by YuMi on 2022/4/11. -// - -#import "YUMIUnionRevenueDivisionRegard.h" -#import -#import "DJDKMIMOMColor.h" - - -@interface YUMIUnionRevenueDivisionRegard () - -@property (nonatomic,strong) UILabel *rateSequencignation; -@property (nonatomic,strong) UILabel *chamberSequencignation; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UILabel *revenueSequencignation; -@property (nonatomic,assign) CGFloat right; -@end - -@implementation YUMIUnionRevenueDivisionRegard -- (instancetype)initWithFrame:(CGRect)frame right:(CGFloat)right{ - self = [super initWithFrame:frame]; - if (self) { - self.right = right; - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = UIColorFromRGB(0xF0F5F6); - - [self addSubview:self.rateSequencignation]; - [self addSubview:self.chamberSequencignation]; - [self addSubview:self.monicerSequencignation]; - [self addSubview:self.revenueSequencignation]; -} - -- (void)initChildLyRestrictions { - - - [self.rateSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(kGetScaleWidth(54)); - make.left.mas_equalTo(kGetScaleWidth(0)); - make.top.bottom.equalTo(self); - }]; - - [self.chamberSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(kGetScaleWidth(47)); - make.left.mas_equalTo(kGetScaleWidth(54)); - make.top.bottom.equalTo(self); - }]; - - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.equalTo(self.chamberSequencignation.mas_right); - make.width.mas_equalTo(kGetScaleWidth(120)); - make.top.bottom.equalTo(self); - }]; - CGFloat width = self.right > 0 ? self.right : 38; - [self.revenueSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.bottom.equalTo(self); - if(self.right <= 0){ - make.left.equalTo(self.monicerSequencignation.mas_right); - } - make.right.mas_equalTo(-kGetScaleWidth(width)); - }]; -} - -#pragma mark - Getters And Setters -- (void)setRevenueGenre:(UnionIncomeGenre)revenueGenre { - _revenueGenre = revenueGenre; - switch (_revenueGenre) { - case UnionIncomeGenre_Clan: - case UnionIncomeGenre_Anchor: - { - self.monicerSequencignation.hidden = YES; - self.chamberSequencignation.text = YMLocalizedString(@"YUMI_Guild_Income_Section_View_0"); - self.revenueSequencignation.textAlignment = NSTextAlignmentCenter; - } - break; - case UnionIncomeGenre_Hall: - { - self.monicerSequencignation.hidden = NO; - self.chamberSequencignation.text = YMLocalizedString(@"YUMI_Guild_Income_Section_View_1"); - self.revenueSequencignation.textAlignment = NSTextAlignmentCenter; - } - break; - default: - break; - } -} - - - -- (UILabel *)rateSequencignation { - if (!_rateSequencignation) { - _rateSequencignation = [[UILabel alloc] init]; - _rateSequencignation.text = YMLocalizedString(@"YUMI_Guild_Income_Section_View_2"); - _rateSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _rateSequencignation.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _rateSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _rateSequencignation; -} - -- (UILabel *)chamberSequencignation { - if (!_chamberSequencignation) { - _chamberSequencignation = [[UILabel alloc] init]; - _chamberSequencignation.text = YMLocalizedString(@"YUMI_Guild_Income_Section_View_3"); - _chamberSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _chamberSequencignation.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _chamberSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _chamberSequencignation; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.text = YMLocalizedString(@"YUMI_Guild_Income_Section_View_4"); - _monicerSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _monicerSequencignation.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _monicerSequencignation.textAlignment = NSTextAlignmentCenter; - _monicerSequencignation.hidden = YES; - } - return _monicerSequencignation; -} - -- (UILabel *)revenueSequencignation { - if (!_revenueSequencignation) { - _revenueSequencignation = [[UILabel alloc] init]; - _revenueSequencignation.text = YMLocalizedString(@"YUMI_Guild_Income_Section_View_5"); - _revenueSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _revenueSequencignation.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _revenueSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _revenueSequencignation; -} - - - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionRevenueIntelligencerRegard.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionRevenueIntelligencerRegard.h deleted file mode 100644 index 5a110bda..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionRevenueIntelligencerRegard.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// YUMIUnionRevenueIntelligencerRegard.h -// YuMi -// -// Created by YuMi on 2022/4/11. -// - -#import -#import "YUMIManeUnionRevenueReflectionRegardGovernancer.h" -NS_ASSUME_NONNULL_BEGIN -@class YUMIUnionRevenueIntelligencerRegard; -@protocol FBCUnionIncomeIntelligencerRegardRepresendtation - -- (void)yUMIUnionRevenueIntelligencerRegard:(YUMIUnionRevenueIntelligencerRegard *)view didChooseTime:(UIButton *)sender; - -@end - -@interface YUMIUnionRevenueIntelligencerRegard : UIView -@property (nonatomic,weak) id delegate; -@property (nonatomic,assign) UnionIncomeRecrdTimeGenre intratemporalGenre; - -@property (nonatomic,copy) NSString *generalRevenue; - -- (void)prohibitipositionIntelligencerRegard:(NSDate *)startDate endTime:(NSDate * _Nullable)endDate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionRevenueIntelligencerRegard.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionRevenueIntelligencerRegard.m deleted file mode 100644 index 5d409ad9..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionRevenueIntelligencerRegard.m +++ /dev/null @@ -1,266 +0,0 @@ -// -// YUMIUnionRevenueIntelligencerRegard.m -// YuMi -// -// Created by YuMi on 2022/4/11. -// - -#import "YUMIUnionRevenueIntelligencerRegard.h" -#import -#import "DJDKMIMOMColor.h" - -#import "NSString+Utils.h" -#import "UIButton+EnlargeTouchArea.h" -@interface YUMIUnionRevenueIntelligencerRegard () -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) UILabel *yearSequencignation; - -@property (nonatomic,strong) UILabel *satellitetSequencignation; -@property (nonatomic,strong) UILabel *endSequencignation; -@property (nonatomic,strong) UILabel *daySequencignation; - -@property (nonatomic,strong) UIButton *arrowBtuton; -@property (nonatomic,strong) UIView * burlywoodRegard; -@property (nonatomic,strong) UILabel *generalSequencignation; -@property (nonatomic,strong) UILabel *tangerineSequencignation; -@property (nonatomic,strong) NSDateFormatter *initialiser; -@end - -@implementation YUMIUnionRevenueIntelligencerRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Public Method -- (void)prohibitipositionIntelligencerRegard:(NSDate *)startDate endTime:(NSDate * _Nullable)endDate { - [self.initialiser setDateFormat:YMLocalizedString(@"App_Common_Year")]; - NSString *currentYear = [self.initialiser stringFromDate:startDate]; - self.yearSequencignation.text = currentYear; - if (self.intratemporalGenre == UnionIncomeRecrdTimeGenre_Day) { - [self.initialiser setDateFormat:YMLocalizedString(@"YUMI_Guild_Income_Header_View_0")]; - NSString * currentDay = [self.initialiser stringFromDate:startDate]; - self.daySequencignation.text = currentDay; - } else if(self.intratemporalGenre == UnionIncomeRecrdTimeGenre_Week) { - [self.initialiser setDateFormat:YMLocalizedString(@"YUMI_Guild_Income_Header_View_1")]; - NSString * currentDay = [self.initialiser stringFromDate:startDate]; - self.satellitetSequencignation.text = currentDay; - - NSString * endDayStr = [self.initialiser stringFromDate:endDate]; - self.endSequencignation.text = endDayStr; - } else { - [self.initialiser setDateFormat:YMLocalizedString(@"YUMI_Guild_Income_Header_View_5")]; - NSString * currentDay = [self.initialiser stringFromDate:startDate]; - self.satellitetSequencignation.text = currentDay; - } -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]; - [self addSubview:self.encourageIndicateRegard]; - - [self.encourageIndicateRegard addSubview:self.yearSequencignation]; - [self.encourageIndicateRegard addSubview:self.daySequencignation]; - [self.encourageIndicateRegard addSubview:self.satellitetSequencignation]; - [self.encourageIndicateRegard addSubview:self.endSequencignation]; - [self.encourageIndicateRegard addSubview:self.arrowBtuton]; - [self.encourageIndicateRegard addSubview:self.burlywoodRegard]; - [self.encourageIndicateRegard addSubview:self.generalSequencignation]; - [self.encourageIndicateRegard addSubview:self.tangerineSequencignation]; - - -} - -- (void)initChildLyRestrictions { - - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(15)); - make.left.right.equalTo(self).inset(kGetScaleWidth(15)); - make.height.mas_equalTo(kGetScaleWidth(90)); - }]; - - [self.yearSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(18)); - make.left.mas_equalTo(kGetScaleWidth(20)); - make.height.mas_equalTo(kGetScaleWidth(12)); - }]; - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(kGetScaleWidth(0.5)); - make.height.mas_equalTo(kGetScaleWidth(49)); - make.centerY.equalTo(self.encourageIndicateRegard); - make.left.mas_equalTo(kGetScaleWidth(119)); - }]; - [self.arrowBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - - make.top.mas_equalTo(kGetScaleWidth(54)); - make.width.height.mas_equalTo(kGetScaleWidth(20)); - make.right.equalTo(self.burlywoodRegard.mas_left).mas_offset(-kGetScaleWidth(19)); - }]; - [self.daySequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.equalTo(self.arrowBtuton.mas_left).mas_offset(-kGetScaleWidth(1)); - make.height.mas_equalTo(kGetScaleWidth(17)); - make.top.mas_equalTo(kGetScaleWidth(56)); - }]; - - - [self.satellitetSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.equalTo(self.arrowBtuton.mas_left).mas_offset(-kGetScaleWidth(1)); - make.top.mas_equalTo(kGetScaleWidth(44)); - make.height.mas_equalTo(kGetScaleWidth(17)); - }]; - [self.endSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.equalTo(self.arrowBtuton.mas_left).mas_offset(-kGetScaleWidth(1)); - make.top.mas_equalTo(kGetScaleWidth(65)); - make.height.mas_equalTo(kGetScaleWidth(17)); - }]; - - - [self.generalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(18)); - make.left.mas_equalTo(kGetScaleWidth(140)); - make.height.mas_equalTo(kGetScaleWidth(12)); - }]; - - [self.tangerineSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.generalSequencignation); - make.centerY.mas_equalTo(self.arrowBtuton); - }]; -} - -#pragma mark - Event Response -- (void)arrowBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIUnionRevenueIntelligencerRegard:didChooseTime:)]) { - [self.delegate yUMIUnionRevenueIntelligencerRegard:self didChooseTime:sender]; - } -} - -#pragma mark - Getters And Setters -- (void)setGeneralRevenue:(NSString *)generalRevenue { - _generalRevenue = generalRevenue; - if (_generalRevenue == nil) { - _generalRevenue = @"0"; - } - NSString * title = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Guild_Income_Header_View_2"), [NSString acquireDealFigurewithsttri:_generalRevenue]]; - self.tangerineSequencignation.text = title; -} - -- (void)setIntratemporalGenre:(UnionIncomeRecrdTimeGenre)intratemporalGenre { - _intratemporalGenre = intratemporalGenre; - switch (_intratemporalGenre) { - case UnionIncomeRecrdTimeGenre_Day: - self.daySequencignation.hidden = NO; - self.endSequencignation.hidden = YES; - self.satellitetSequencignation.hidden = YES; - break; - case UnionIncomeRecrdTimeGenre_Week: - self.daySequencignation.hidden = YES; - self.endSequencignation.hidden = NO; - self.satellitetSequencignation.hidden = NO; - break; - case UnionIncomeRecrdTimeGenre_Mouth: - self.daySequencignation.hidden = NO; - self.endSequencignation.hidden = YES; - self.satellitetSequencignation.hidden = YES; - break; - default: - break; - } -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_center_guild_income_header_background"]; - } - return _encourageIndicateRegard; -} - -- (UILabel *)yearSequencignation { - if (!_yearSequencignation) { - _yearSequencignation = [[UILabel alloc] init]; - _yearSequencignation.font = [UIFont systemFontOfSize:13 weight:UIFontWeightMedium]; - _yearSequencignation.textColor = [UIColor colorWithWhite:1 alpha:0.8]; - } - return _yearSequencignation; -} - -- (UILabel *)daySequencignation { - if (!_daySequencignation) { - _daySequencignation = [[UILabel alloc] init]; - _daySequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _daySequencignation.textColor = [UIColor whiteColor]; - } - return _daySequencignation; -} - -- (UILabel *)satellitetSequencignation { - if (!_satellitetSequencignation) { - _satellitetSequencignation = [[UILabel alloc] init]; - _satellitetSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _satellitetSequencignation.textColor = [UIColor whiteColor]; - } - return _satellitetSequencignation; -} - -- (UILabel *)endSequencignation { - if (!_endSequencignation) { - _endSequencignation = [[UILabel alloc] init]; - _endSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _endSequencignation.textColor = [UIColor whiteColor]; - } - return _endSequencignation; -} - -- (UIButton *)arrowBtuton { - if (!_arrowBtuton) { - _arrowBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_arrowBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_center_guild_income_record_arrow"] forState:UIControlStateNormal]; - [_arrowBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_center_guild_income_record_arrow"] forState:UIControlStateSelected]; - [_arrowBtuton addTarget:self action:@selector(arrowBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_arrowBtuton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:10]; - } - return _arrowBtuton; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [UIColor whiteColor]; - } - return _burlywoodRegard; -} - -- (UILabel *)generalSequencignation { - if (!_generalSequencignation) { - _generalSequencignation = [[UILabel alloc] init]; - _generalSequencignation.text = YMLocalizedString(@"YUMI_Guild_Income_Header_View_4"); - _generalSequencignation.font = [UIFont systemFontOfSize:13 weight:UIFontWeightMedium]; - _generalSequencignation.textColor = [UIColor whiteColor]; - } - return _generalSequencignation; -} - -- (UILabel *)tangerineSequencignation { - if (!_tangerineSequencignation) { - _tangerineSequencignation = [[UILabel alloc] init]; - _tangerineSequencignation.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; - _tangerineSequencignation.textColor = [UIColor whiteColor]; - } - return _tangerineSequencignation; -} - -- (NSDateFormatter *)initialiser { - if (!_initialiser) { - _initialiser = [[NSDateFormatter alloc] init]; - } - return _initialiser; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionSensationalManagementParrotRegard.h b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionSensationalManagementParrotRegard.h deleted file mode 100644 index 1e1834d0..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionSensationalManagementParrotRegard.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// YUMIUnionSensationalManagementParrotRegard.h -// YuMi -// -// Created by YuMi on 2022/4/13. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSInteger, UnionSuperAdminParrotGenre) { - - UnionSuperAdminParrotGenre_Set_Manager_Room =1, - - UnionSuperAdminParrotGenre_Remove_Super_Admnin -}; - -@class YUMIUnionSensationalManagementParrotRegard; -@protocol FBCUnionSensationalManagementMenuRegardRepresendtation - -- (void)yUMIUnionSenstowardsionalManagementParrotRegard:(YUMIUnionSensationalManagementParrotRegard *)view didClickType:(UnionSuperAdminParrotGenre)memuType; - -@end -@interface YUMIUnionSensationalManagementParrotRegard : UIView -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionSensationalManagementParrotRegard.m b/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionSensationalManagementParrotRegard.m deleted file mode 100644 index 21f9fdb4..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SubViews/YUMIUnionSensationalManagementParrotRegard.m +++ /dev/null @@ -1,133 +0,0 @@ -// -// YUMIUnionSensationalManagementParrotRegard.m -// YuMi -// -// Created by YuMi on 2022/4/13. -// - -#import "YUMIUnionSensationalManagementParrotRegard.h" -#import -#import "DJDKMIMOMColor.h" - -@interface YUMIUnionSensationalManagementParrotRegard () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UIButton *executiveChamberBtuton; -@property (nonatomic,strong) UIView *burlywoodRegard; -@property (nonatomic,strong) UIButton *removeBtuton; - -@end - -@implementation YUMIUnionSensationalManagementParrotRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -- (void)drawRect:(CGRect)rect { - CGFloat startX = self.frame.size.width - 20; - - CGContextRef context = UIGraphicsGetCurrentContext(); - CGContextBeginPath(context); - CGContextMoveToPoint(context, startX, 5); - CGContextAddLineToPoint(context, startX + 5, 0); - CGContextAddLineToPoint(context, startX + 10, 5); - CGContextClosePath(context); - [UIColorFromRGB(0x3C3C3C) setFill]; - [UIColorFromRGB(0x3C3C3C) setStroke]; - CGContextDrawPath(context, kCGPathFillStroke); -} - -#pragma mark - Private Method - -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - [self addSubview:self.stackView]; - - [self.stackView addArrangedSubview:self.executiveChamberBtuton]; - [self.stackView addArrangedSubview:self.burlywoodRegard]; - [self.stackView addArrangedSubview:self.removeBtuton]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(110); - make.height.mas_equalTo(66); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self); - make.top.mas_equalTo(self).offset(5); - }]; - - [self.executiveChamberBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(30); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(1); - }]; -} - -#pragma mark - Event Response - -- (void)executiveChamberBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIUnionSenstowardsionalManagementParrotRegard:didClickType:)]) { - [self.delegate yUMIUnionSenstowardsionalManagementParrotRegard:self didClickType:sender.tag]; - } -} - -#pragma mark - Getters And Setters -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 0; - _stackView.layer.masksToBounds = YES; - _stackView.layer.cornerRadius = 8; - } - return _stackView; -} - -- (UIButton *)executiveChamberBtuton { - if (!_executiveChamberBtuton) { - _executiveChamberBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_executiveChamberBtuton setTitle:YMLocalizedString(@"YUMI_Guild_Super_Admin_Menu_View_0") forState:UIControlStateNormal]; - [_executiveChamberBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _executiveChamberBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - _executiveChamberBtuton.backgroundColor = UIColorFromRGB(0x3C3C3C); - _executiveChamberBtuton.tag = UnionSuperAdminParrotGenre_Set_Manager_Room; - [_executiveChamberBtuton addTarget:self action:@selector(executiveChamberBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _executiveChamberBtuton; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [UIColor whiteColor]; - } - return _burlywoodRegard; -} - -- (UIButton *)removeBtuton { - if (!_removeBtuton) { - _removeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_removeBtuton setTitle:YMLocalizedString(@"YUMI_Guild_Super_Admin_Menu_View_1") forState:UIControlStateNormal]; - [_removeBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _removeBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - _removeBtuton.backgroundColor = UIColorFromRGB(0x3C3C3C); - _removeBtuton.tag = UnionSuperAdminParrotGenre_Remove_Super_Admnin; - [_removeBtuton addTarget:self action:@selector(executiveChamberBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _removeBtuton; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/XPMineGuildChooseManagerViewController.h b/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/XPMineGuildChooseManagerViewController.h new file mode 100644 index 00000000..fd7654ff --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/XPMineGuildChooseManagerViewController.h @@ -0,0 +1,19 @@ +// +// XPMineGuildChooseManagerViewController.h +// YuMi +// +// Created by YuMi on 2022/4/13. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineGuildChooseManagerViewController : MvpViewController +///家族id +@property (nonatomic,copy) NSString *clanId; +///管理员的iuid +@property (nonatomic,copy) NSString *targetUid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/XPMineGuildChooseManagerViewController.m b/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/XPMineGuildChooseManagerViewController.m new file mode 100644 index 00000000..efbb7799 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/XPMineGuildChooseManagerViewController.m @@ -0,0 +1,253 @@ +// +// XPMineGuildChooseManagerViewController.m +// YuMi +// +// Created by YuMi on 2022/4/13. +// + +#import "XPMineGuildChooseManagerViewController.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" + +#import "TTPopup.h" +#import "UIImage+Utils.h" +///Model +#import "GuildRoomInfoModel.h" +///View +#import "XPGuildChooseManagerRoomTableViewCell.h" +///P +#import "XPSuperAdminManagerRoomPresenter.h" +#import "XPSuperAdminManagerRoomProtocol.h" + +@interface XPMineGuildChooseManagerViewController () +///导航啦 +@property (nonatomic,strong) UIView * navView; +///返回按钮 +@property (nonatomic,strong) UIButton *backButton; +///标题 +@property (nonatomic,strong) UILabel *titleLabel; +///列表 +@property (nonatomic,strong) UITableView *tableView; +///确定按钮 +@property (nonatomic,strong) UIButton * sureButton; +///数据源 +@property (nonatomic,strong) NSArray *datasource; +///选中房间 +@property (nonatomic,strong) NSMutableArray *chooseArray; +///发生改变的数据 +@property (nonatomic,strong) NSMutableArray *changeArray; +@end + +@implementation XPMineGuildChooseManagerViewController + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (__kindof id)createPresenter { + return [[XPSuperAdminManagerRoomPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self.presenter getGuildRoomList:self.clanId targetUid:self.targetUid]; + [self initSubViews]; + [self initSubViewConstraints]; +} +#pragma mark - Private Method +- (void)initSubViews { + self.titleLabel.text = YMLocalizedString(@"XPMineGuildChooseManagerViewController0"); + [self.view addSubview:self.navView]; + [self.view addSubview:self.tableView]; + [self.view addSubview:self.sureButton]; + + [self.navView addSubview:self.backButton]; + [self.navView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.navView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.height.mas_equalTo(kNavigationHeight); + }]; + + [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.view).mas_offset(10); + make.top.mas_equalTo(statusbarHeight); + make.height.width.mas_equalTo(44); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.navView); + make.centerY.mas_equalTo(self.backButton); + }]; + + + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.top.mas_equalTo(self.navView.mas_bottom); + }]; + + [self.sureButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view).inset(47); + make.height.mas_equalTo(44); + make.bottom.mas_equalTo(self.view).offset(-kSafeAreaBottomHeight - 20); + }]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + XPGuildChooseManagerRoomTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPGuildChooseManagerRoomTableViewCell class])]; + if (cell == nil) { + cell = [[XPGuildChooseManagerRoomTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPGuildChooseManagerRoomTableViewCell class])]; + } + cell.delegate = self; + GuildRoomInfoModel* roomInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.roomInfo = roomInfo; + if (roomInfo.hasManage) { + if (![self.chooseArray containsObject:roomInfo.hallRoomUid]) { + [self.chooseArray addObject:roomInfo.hallRoomUid]; + } + } else { + if ([self.chooseArray containsObject:roomInfo.hallRoomUid]) { + [self.chooseArray removeObject:roomInfo.hallRoomUid]; + } + } + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 88; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; +} + +#pragma mark - XPGuildChooseManagerRoomTableViewCellDelegate +- (void)xPGuildChooseManagerRoomTableViewCell:(XPGuildChooseManagerRoomTableViewCell *)view didChooseInfo:(GuildRoomInfoModel *)roomInfo { + roomInfo.hasManage = !roomInfo.hasManage; + [self.tableView reloadData]; + + if (roomInfo.hasManage) { + if (![self.changeArray containsObject:roomInfo.hallRoomUid]) { + [self.changeArray addObject:roomInfo.hallRoomUid]; + } + } else { + if ([self.changeArray containsObject:roomInfo.hallRoomUid]) { + [self.changeArray removeObject:roomInfo.hallRoomUid]; + } + } +} + +#pragma mark - XPSuperAdminManagerRoomProtocol +- (void)getGuildRoomListSuccess:(NSArray *)array { + self.datasource = array; + [self.tableView reloadData]; +} + +- (void)guildSuperAdminManagerRoomListSuccess { + [self showSuccessToast:YMLocalizedString(@"XPMineGuildChooseManagerViewController1")]; + [self.navigationController popViewControllerAnimated:YES]; +} + +#pragma mark - Event Response +- (void)backButtonAction:(UIButton *)sender { + if (self.changeArray.count <=0) { + [self.navigationController popViewControllerAnimated:YES]; + return; + } + [TTPopup alertWithMessage:YMLocalizedString(@"XPMineGuildChooseManagerViewController2") confirmHandler:^{ + [self.navigationController popViewControllerAnimated:YES]; + } cancelHandler:^{ + + }]; +} + +- (void)sureButtonAction:(UIButton *)sender { + [self.presenter guildSuperAdminManagerRoomList:self.chooseArray.copy targetUid:self.targetUid]; +} + +#pragma mark - Getters And Setters +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.font = [UIFont boldSystemFontOfSize:18]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +- (UIView *)navView { + if (!_navView) { + _navView = [[UIView alloc] init]; + _navView.backgroundColor = [UIColor whiteColor]; + } + return _navView; +} + +- (UIButton *)backButton { + if (!_backButton) { + _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateNormal]; + _backButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; + [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _backButton; +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + UIView * headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 15)]; + headerView.backgroundColor = [UIColor clearColor]; + _tableView.tableHeaderView = headerView; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPGuildChooseManagerRoomTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPGuildChooseManagerRoomTableViewCell class])]; + } + return _tableView; +} + +- (UIButton *)sureButton { + if (!_sureButton) { + _sureButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_sureButton setTitle:YMLocalizedString(@"XPMineGuildChooseManagerViewController3") forState:UIControlStateNormal]; + [_sureButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + _sureButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_sureButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _sureButton.layer.masksToBounds = YES; + _sureButton.layer.cornerRadius = 20; + [_sureButton addTarget:self action:@selector(sureButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _sureButton; +} + +- (NSMutableArray *)chooseArray { + if (!_chooseArray) { + _chooseArray = [NSMutableArray array]; + } + return _chooseArray; +} + +- (NSMutableArray *)changeArray { + if (!_changeArray) { + _changeArray = [NSMutableArray array]; + } + return _changeArray; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/XPMineGuildSuperAdminSetViewController.h b/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/XPMineGuildSuperAdminSetViewController.h new file mode 100644 index 00000000..9f83120a --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/XPMineGuildSuperAdminSetViewController.h @@ -0,0 +1,17 @@ +// +// XPGuildSuperAdminSetViewController.h +// YuMi +// +// Created by YuMi on 2022/4/13. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineGuildSuperAdminSetViewController : MvpViewController +///家族的ID +@property (nonatomic,copy) NSString *clanId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/XPMineGuildSuperAdminSetViewController.m b/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/XPMineGuildSuperAdminSetViewController.m new file mode 100644 index 00000000..79b136df --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/XPMineGuildSuperAdminSetViewController.m @@ -0,0 +1,208 @@ +// +// XPGuildSuperAdminSetViewController.m +// YuMi +// +// Created by YuMi on 2022/4/13. +// + +#import "XPMineGuildSuperAdminSetViewController.h" +///Third +#import +///Tool +#import "UIImage+Utils.h" +#import "DJDKMIMOMColor.h" + +#import "TTPopup.h" +///Model +#import "GuildSuperAdminInfoModel.h" +///View +#import "XPGuildSuperAdminSetTableViewCell.h" +#import "XPMineGuildEmptyTableViewCell.h" +#import "XPMineGuildChooseManagerViewController.h" +#import "XPMineGuildSearchViewController.h" +///P +#import "XPSuperAdminSetPresenter.h" +#import "XPSuperAdminSetProtocol.h" + +@interface XPMineGuildSuperAdminSetViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///添加公会超管 +@property (nonatomic,strong) UIButton *addManagerButton; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +@end + +@implementation XPMineGuildSuperAdminSetViewController + +- (__kindof id)createPresenter { + return [[XPSuperAdminSetPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [self.presenter getClanSuperAdminList:self.clanId]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMineGuildSuperAdminSetViewController0"); + [self.view addSubview:self.tableView]; + [self.view addSubview:self.addManagerButton]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.addManagerButton.mas_top); + }]; + + [self.addManagerButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view).inset(47); + make.height.mas_equalTo(40); + make.bottom.mas_equalTo(self.view.mas_safeAreaLayoutGuideBottom).offset(-20); + }]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPGuildSuperAdminSetTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPGuildSuperAdminSetTableViewCell class])]; + if (cell == nil) { + cell = [[XPGuildSuperAdminSetTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPGuildSuperAdminSetTableViewCell class])]; + } + cell.delegate = self; + GuildSuperAdminInfoModel * info= [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.managerInfo = info; + return cell; + } + + XPMineGuildEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineGuildEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineGuildEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineGuildEmptyTableViewCell class])]; + } + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return self.datasource.count > 0 ? 220 : 500; +} + +#pragma mark - XPGuildSuperAdminSetTableViewCellDelegate +- (void)xPGuildSuperAdminSetTableViewCell:(GuildSuperAdminInfoModel *)managerInfo didChooseType:(GuildSuperAdminMenuType)menuType { + switch (menuType) { + case GuildSuperAdminMenuType_Set_Manager_Room: + { + XPMineGuildChooseManagerViewController * managerRoomVC = [[XPMineGuildChooseManagerViewController alloc] init]; + managerRoomVC.clanId = self.clanId; + managerRoomVC.targetUid = managerInfo.uid; + [self.navigationController pushViewController:managerRoomVC animated:YES]; + } + break; + case GuildSuperAdminMenuType_Remove_Super_Admnin: + { + NSString * title = [NSString stringWithFormat:YMLocalizedString(@"XPMineGuildSuperAdminSetViewController1"), managerInfo.nick]; + TTAlertConfig * config = [[TTAlertConfig alloc] init]; + config.message = title; + TTAlertMessageAttributedConfig * attributeConfig = [[TTAlertMessageAttributedConfig alloc] init]; + attributeConfig.text = managerInfo.nick; + attributeConfig.color = [DJDKMIMOMColor appMainColor]; + config.messageAttributedConfig = @[attributeConfig]; + [TTPopup alertWithConfig:config confirmHandler:^{ + [self.presenter removeSuperAdmin:managerInfo.uid]; + } cancelHandler:^{ + + }]; + } + break; + default: + break; + } +} + +#pragma mark - XPSuperAdminSetProtocol +- (void)getClanSuperAdminListSuccess:(NSArray *)list { + [self.datasource removeAllObjects]; + [self.datasource addObjectsFromArray:list]; + [self.tableView reloadData]; +} + +- (void)removeSuperAdminSuccess:(NSString *)uid { + __block GuildSuperAdminInfoModel * removeItem; + [self.datasource enumerateObjectsUsingBlock:^(GuildSuperAdminInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.uid.integerValue == uid.integerValue) { + removeItem = obj; + *stop = YES; + } + }]; + + if (removeItem) { + [self.datasource removeObject:removeItem]; + [self.tableView reloadData]; + } +} + + +#pragma mark - Event Response +- (void)addManagerButtonAction:(UIButton *)sender { + XPMineGuildSearchViewController * searchVC = [[XPMineGuildSearchViewController alloc] init]; + searchVC.searchType = GuildSearchType_Clan_Add_Super_Admin; + searchVC.modalPresentationStyle = UIModalPresentationOverFullScreen; + searchVC.clanOwnerUid = self.clanId; + [self.navigationController presentViewController:searchVC animated:YES completion:nil]; +} + +#pragma mark - Getters And Setters +- (UIButton *)addManagerButton { + if (!_addManagerButton) { + _addManagerButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_addManagerButton setTitle:YMLocalizedString(@"XPMineGuildSuperAdminSetViewController2") forState:UIControlStateNormal]; + [_addManagerButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + _addManagerButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_addManagerButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _addManagerButton.layer.masksToBounds = YES; + _addManagerButton.layer.cornerRadius = 20; + [_addManagerButton addTarget:self action:@selector(addManagerButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _addManagerButton; +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + UIView * headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 15)]; + headerView.backgroundColor = [UIColor clearColor]; + _tableView.tableHeaderView = headerView; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPGuildSuperAdminSetTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPGuildSuperAdminSetTableViewCell class])]; + [_tableView registerClass:[XPMineGuildEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineGuildEmptyTableViewCell class])]; + } + return _tableView; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/YUMIManeUnionChooseExecutiveRegardGovernancer.h b/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/YUMIManeUnionChooseExecutiveRegardGovernancer.h deleted file mode 100644 index 79cdd37f..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/YUMIManeUnionChooseExecutiveRegardGovernancer.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YUMIManeUnionChooseExecutiveRegardGovernancer.h -// YuMi -// -// Created by YuMi on 2022/4/13. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeUnionChooseExecutiveRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,copy) NSString *clanId; -@property (nonatomic,copy) NSString *targetUid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/YUMIManeUnionChooseExecutiveRegardGovernancer.m b/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/YUMIManeUnionChooseExecutiveRegardGovernancer.m deleted file mode 100644 index 01076c4a..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/YUMIManeUnionChooseExecutiveRegardGovernancer.m +++ /dev/null @@ -1,240 +0,0 @@ -// -// YUMIManeUnionChooseExecutiveRegardGovernancer.m -// YuMi -// -// Created by YuMi on 2022/4/13. -// - -#import "YUMIManeUnionChooseExecutiveRegardGovernancer.h" -#import -#import "DJDKMIMOMColor.h" - -#import "MKJPopup.h" -#import "UIImage+Utils.h" -#import "UnionChamberAbstractMatrix.h" -#import "YUMIUnionChooseExecutiveChamberTabulationRegardElement.h" -#import "YUMISensationalManagementExecutiveChamberExternalizer.h" -#import "FBCSensationalManagementExecutiveChamberCeremony.h" - -@interface YUMIManeUnionChooseExecutiveRegardGovernancer () -@property (nonatomic,strong) UIView * nevRegard; -@property (nonatomic,strong) UIButton *backButton; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) UIButton * sureBtuton; -@property (nonatomic,strong) NSArray *datasource; -@property (nonatomic,strong) NSMutableArray *concludeGarment; -@property (nonatomic,strong) NSMutableArray *diversificationGarment; -@end - -@implementation YUMIManeUnionChooseExecutiveRegardGovernancer - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (__kindof id)producePresimport { - return [[YUMISensationalManagementExecutiveChamberExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self.presimport acquireUnionChamberSttowardsement:self.clanId targetUid:self.targetUid]; - [self initSubViews]; - [self initChildLyRestrictions]; -} -#pragma mark - Private Method -- (void)initSubViews { - self.titleLabel.text = YMLocalizedString(@"YUMI_MineGuildChooseManagerViewController0"); - [self.view addSubview:self.nevRegard]; - [self.view addSubview:self.tableView]; - [self.view addSubview:self.sureBtuton]; - - [self.nevRegard addSubview:self.backButton]; - [self.nevRegard addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.nevRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.height.mas_equalTo(kNavigationHeight); - }]; - - [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.view).mas_offset(10); - make.top.mas_equalTo(statusbarHeight); - make.height.width.mas_equalTo(44); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.nevRegard); - make.centerY.mas_equalTo(self.backButton); - }]; - - - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.top.mas_equalTo(self.nevRegard.mas_bottom); - }]; - - [self.sureBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view).inset(47); - make.height.mas_equalTo(44); - make.bottom.mas_equalTo(self.view).offset(-kSafeAreaBottomHeight - 20); - }]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - YUMIUnionChooseExecutiveChamberTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIUnionChooseExecutiveChamberTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIUnionChooseExecutiveChamberTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIUnionChooseExecutiveChamberTabulationRegardElement class])]; - } - cell.delegate = self; - UnionChamberAbstractMatrix* roomInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.roomInfo = roomInfo; - if (roomInfo.hasManage) { - if (![self.concludeGarment containsObject:roomInfo.hallRoomUid]) { - [self.concludeGarment addObject:roomInfo.hallRoomUid]; - } - } else { - if ([self.concludeGarment containsObject:roomInfo.hallRoomUid]) { - [self.concludeGarment removeObject:roomInfo.hallRoomUid]; - } - } - return cell; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 88; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; -} - -#pragma mark - FBCUnionChooseExecutiveChamberTabulationViweElementRepresendtation -- (void)yUMIUnionConcludeExecutiveChamberTarbsultowardsionViweElement:(YUMIUnionChooseExecutiveChamberTabulationRegardElement *)view didChooseInfo:(UnionChamberAbstractMatrix *)roomInfo { - roomInfo.hasManage = !roomInfo.hasManage; - [self.tableView reloadData]; - - if (roomInfo.hasManage) { - if (![self.diversificationGarment containsObject:roomInfo.hallRoomUid]) { - [self.diversificationGarment addObject:roomInfo.hallRoomUid]; - } - } else { - if ([self.diversificationGarment containsObject:roomInfo.hallRoomUid]) { - [self.diversificationGarment removeObject:roomInfo.hallRoomUid]; - } - } -} - -#pragma mark - FBCSensationalManagementExecutiveChamberCeremony -- (void)acquireUnionChamberSttowardsementAccomplishment:(NSArray *)array { - self.datasource = array; - [self.tableView reloadData]; -} - -- (void)unionSenstowardsionalManagementExecutiveChamberSttowardsementAccomplishment { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_MineGuildChooseManagerViewController1")]; - [self.navigationController popViewControllerAnimated:YES]; -} - -#pragma mark - Event Response -- (void)encourageBtutonPerformance:(UIButton *)sender { - if (self.diversificationGarment.count <=0) { - [self.navigationController popViewControllerAnimated:YES]; - return; - } - [MKJPopup precautiousAboutCommunictowardsion:YMLocalizedString(@"YUMI_MineGuildChooseManagerViewController2") acknowledgementHandler:^{ - [self.navigationController popViewControllerAnimated:YES]; - } cancelHandler:^{ - - }]; -} - -- (void)sureBtutonPerformance:(UIButton *)sender { - [self.presimport unionSenstowardsionalManagementExecutiveChamberSttowardsement:self.concludeGarment.copy targetUid:self.targetUid]; -} - -#pragma mark - Getters And Setters -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.font = [UIFont boldSystemFontOfSize:18]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -- (UIView *)nevRegard { - if (!_nevRegard) { - _nevRegard = [[UIView alloc] init]; - _nevRegard.backgroundColor = [UIColor whiteColor]; - } - return _nevRegard; -} - -- (UIButton *)backButton { - if (!_backButton) { - _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backButton setImage:[UIImage imageNamed:@"yumi_same_title_back"] forState:UIControlStateNormal]; - _backButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; - [_backButton addTarget:self action:@selector(encourageBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _backButton; -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - UIView * intelligenceerRegard = [[UIView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 15)]; - intelligenceerRegard.backgroundColor = [UIColor clearColor]; - _tableView.tableHeaderView = intelligenceerRegard; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIUnionChooseExecutiveChamberTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIUnionChooseExecutiveChamberTabulationRegardElement class])]; - } - return _tableView; -} - -- (UIButton *)sureBtuton { - if (!_sureBtuton) { - _sureBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_sureBtuton setTitle:YMLocalizedString(@"YUMI_MineGuildChooseManagerViewController3") forState:UIControlStateNormal]; - [_sureBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - _sureBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_sureBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _sureBtuton.layer.masksToBounds = YES; - _sureBtuton.layer.cornerRadius = 20; - [_sureBtuton addTarget:self action:@selector(sureBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _sureBtuton; -} - -- (NSMutableArray *)concludeGarment { - if (!_concludeGarment) { - _concludeGarment = [NSMutableArray array]; - } - return _concludeGarment; -} - -- (NSMutableArray *)diversificationGarment { - if (!_diversificationGarment) { - _diversificationGarment = [NSMutableArray array]; - } - return _diversificationGarment; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/YUMIManeUnionSensationalManagementSetRegardGovernancer.h b/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/YUMIManeUnionSensationalManagementSetRegardGovernancer.h deleted file mode 100644 index aef77d96..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/YUMIManeUnionSensationalManagementSetRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// XPGuildSuperAdminSetViewController.h -// YuMi -// -// Created by YuMi on 2022/4/13. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeUnionSensationalManagementSetRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,copy) NSString *clanId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/YUMIManeUnionSensationalManagementSetRegardGovernancer.m b/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/YUMIManeUnionSensationalManagementSetRegardGovernancer.m deleted file mode 100644 index 9e7922d2..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/SuperAdmin/YUMIManeUnionSensationalManagementSetRegardGovernancer.m +++ /dev/null @@ -1,200 +0,0 @@ -// -// XPGuildSuperAdminSetViewController.m -// YuMi -// -// Created by YuMi on 2022/4/13. -// - -#import "YUMIManeUnionSensationalManagementSetRegardGovernancer.h" -#import -#import "UIImage+Utils.h" -#import "DJDKMIMOMColor.h" - -#import "MKJPopup.h" -#import "UnionSensationalManagementAbstractMatrix.h" -#import "YUMIUnionSensationalManagementSetTabulationRegardElement.h" -#import "YUMIManeUnionDispossessTabulationRegardElement.h" -#import "YUMIManeUnionChooseExecutiveRegardGovernancer.h" -#import "YUMIManeUnionHuntforRegardGovernancer.h" -#import "YUMISensationalManagementSetExternalizer.h" -#import "FBCSensationalManagementSetCeremony.h" - -@interface YUMIManeUnionSensationalManagementSetRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) UIButton *accelerateExecutiveBtuton; -@property (nonatomic,strong) NSMutableArray *datasource; -@end - -@implementation YUMIManeUnionSensationalManagementSetRegardGovernancer - -- (__kindof id)producePresimport { - return [[YUMISensationalManagementSetExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - [self.presimport acquireCollectiveSenstowardsionalManagementSttowardsement:self.clanId]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_MineGuildSuperAdminSetViewController0"); - [self.view addSubview:self.tableView]; - [self.view addSubview:self.accelerateExecutiveBtuton]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.accelerateExecutiveBtuton.mas_top); - }]; - - [self.accelerateExecutiveBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view).inset(47); - make.height.mas_equalTo(40); - make.bottom.mas_equalTo(self.view.mas_safeAreaLayoutGuideBottom).offset(-20); - }]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMIUnionSensationalManagementSetTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIUnionSensationalManagementSetTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIUnionSensationalManagementSetTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIUnionSensationalManagementSetTabulationRegardElement class])]; - } - cell.delegate = self; - UnionSensationalManagementAbstractMatrix * info= [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.executiveAbstract = info; - return cell; - } - - YUMIManeUnionDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeUnionDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeUnionDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeUnionDispossessTabulationRegardElement class])]; - } - return cell; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return self.datasource.count > 0 ? 220 : 500; -} - -#pragma mark - FBCUnionSensationalManagementSetTabulationViweElementRepresendtation -- (void)yUMIUnionSenstowardsionalManagementSetTarbsultowardsionViweElement:(UnionSensationalManagementAbstractMatrix *)executiveAbstract didChooseType:(UnionSuperAdminParrotGenre)menuType { - switch (menuType) { - case UnionSuperAdminParrotGenre_Set_Manager_Room: - { - YUMIManeUnionChooseExecutiveRegardGovernancer * managerRoomVC = [[YUMIManeUnionChooseExecutiveRegardGovernancer alloc] init]; - managerRoomVC.clanId = self.clanId; - managerRoomVC.targetUid = executiveAbstract.uid; - [self.navigationController pushViewController:managerRoomVC animated:YES]; - } - break; - case UnionSuperAdminParrotGenre_Remove_Super_Admnin: - { - NSString * title = [NSString stringWithFormat:YMLocalizedString(@"YUMI_MineGuildSuperAdminSetViewController1"), executiveAbstract.nick]; - MKJPrecautiousDisposition * config = [[MKJPrecautiousDisposition alloc] init]; - config.message = title; - MKJPrecautiousCommunicationAttributedDisposition * attributeConfig = [[MKJPrecautiousCommunicationAttributedDisposition alloc] init]; - attributeConfig.text = executiveAbstract.nick; - attributeConfig.color = [DJDKMIMOMColor aplictowardsionMainPrettify]; - config.communicationAttributedDisposition = @[attributeConfig]; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [self.presimport transltowardseSenstowardsionalManagement:executiveAbstract.uid]; - } cancelHandler:^{ - - }]; - } - break; - default: - break; - } -} - -#pragma mark - FBCSensationalManagementSetCeremony -- (void)acquireCollectiveSenstowardsionalManagementSttowardsementAccomplishment:(NSArray *)list { - [self.datasource removeAllObjects]; - [self.datasource addObjectsFromArray:list]; - [self.tableView reloadData]; -} - -- (void)transltowardseSenstowardsionalManagementAccomplishment:(NSString *)uid { - __block UnionSensationalManagementAbstractMatrix * removeItem; - [self.datasource enumerateObjectsUsingBlock:^(UnionSensationalManagementAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.uid.integerValue == uid.integerValue) { - removeItem = obj; - *stop = YES; - } - }]; - - if (removeItem) { - [self.datasource removeObject:removeItem]; - [self.tableView reloadData]; - } -} - - -#pragma mark - Event Response -- (void)accelertowardseExecutiveBtutonPerformance:(UIButton *)sender { - YUMIManeUnionHuntforRegardGovernancer * searchVC = [[YUMIManeUnionHuntforRegardGovernancer alloc] init]; - searchVC.searchType = UnionSearchGenre_Clan_Add_Super_Admin; - searchVC.modalPresentationStyle = UIModalPresentationOverFullScreen; - searchVC.collectiveMaintainrietaryCid = self.clanId; - [self.navigationController presentViewController:searchVC animated:YES completion:nil]; -} - -#pragma mark - Getters And Setters -- (UIButton *)accelerateExecutiveBtuton { - if (!_accelerateExecutiveBtuton) { - _accelerateExecutiveBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_accelerateExecutiveBtuton setTitle:YMLocalizedString(@"YUMI_MineGuildSuperAdminSetViewController2") forState:UIControlStateNormal]; - [_accelerateExecutiveBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - _accelerateExecutiveBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_accelerateExecutiveBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _accelerateExecutiveBtuton.layer.masksToBounds = YES; - _accelerateExecutiveBtuton.layer.cornerRadius = 20; - [_accelerateExecutiveBtuton addTarget:self action:@selector(accelertowardseExecutiveBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _accelerateExecutiveBtuton; -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - UIView * intelligenceerRegard = [[UIView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 15)]; - intelligenceerRegard.backgroundColor = [UIColor clearColor]; - _tableView.tableHeaderView = intelligenceerRegard; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIUnionSensationalManagementSetTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIUnionSensationalManagementSetTabulationRegardElement class])]; - [_tableView registerClass:[YUMIManeUnionDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeUnionDispossessTabulationRegardElement class])]; - } - return _tableView; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/XPMineClanViewController.h b/YuMi/Modules/YMMine/View/Guild/View/XPMineClanViewController.h new file mode 100644 index 00000000..2bb6eb4b --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/XPMineClanViewController.h @@ -0,0 +1,17 @@ +// +// XPMineClanViewController.h +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN +@class ClanDetailInfoModel; +@interface XPMineClanViewController : MvpViewController +///组长的Uid +@property (nonatomic,copy) NSString *uid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/XPMineClanViewController.m b/YuMi/Modules/YMMine/View/Guild/View/XPMineClanViewController.m new file mode 100644 index 00000000..936399c2 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/XPMineClanViewController.m @@ -0,0 +1,352 @@ +// +// XPMineClanViewController.m +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import "XPMineClanViewController.h" +///Third +#import +#import +///Tool + +#import "DJDKMIMOMColor.h" +#import "AccountInfoStorage.h" +///Model +#import "ClanDetailInfoModel.h" +#import "ClanMemberDetailInfoModel.h" +///View +#import "XPClanMemberTableViewCell.h" +#import "XPGuildHeaderView.h" +#import "XPClanSectionView.h" +#import "XPMineGuildViewController.h" +#import "XPMineGuildSearchViewController.h" +#import "XPMineClanIncomeStatisViewController.h" +#import "XPMineAnchorIncomeStatisViewController.h" +#import "XPMineGuildSuperAdminSetViewController.h" +#import "XPMineUserInfoViewController.h" +#import "XPMineMainIncomeStatisViewController.h" +#import "XPMineExchangeAuthorityVC.h" +///P +#import "XPClanPresenter.h" +#import "XPClanProtocol.h" + +@interface XPMineClanViewController () +///顶部视图 +@property (nonatomic,strong) XPGuildHeaderView *headerView; +///导航栏 +@property (nonatomic,strong) UIView * navView; +///返回按钮 +@property (nonatomic,strong) UIButton *backButton; +///标题 +@property (nonatomic,strong) UILabel *titleLabel; +///列表 +@property (nonatomic,strong) UITableView *tableView; +///当前页数 +@property (nonatomic,assign) int page; +///是否有更多的数据 +@property (nonatomic,assign) BOOL hasNoMoreData; +///家族信息详情 +@property (nonatomic,strong) ClanDetailInfoModel *clanDetailInfo; +///成员详情的列表 +@property (nonatomic,strong) ClanMemberDetailInfoModel *memberDetailInfo; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +///区头 +@property (nonatomic,strong) XPClanSectionView *sectionView; +///是否请求了数据 +@property (nonatomic,assign) BOOL isRequest; +@end + +@implementation XPMineClanViewController + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (XPClanPresenter *)createPresenter { + return [[XPClanPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + [self initHeaderAndFooterRrfresh]; +} +#pragma mark - 下拉刷新 +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; + + [self headerRefresh]; +} + +#pragma mark - 刷新的fangfa +- (void)headerRefresh { + self.page = 1; + [self.presenter getClanDetailInfo:self.uid currentUserUid:[AccountInfoStorage instance].getUid]; + [self.presenter getClanMemberList:self.uid page:self.page pageSize:20 state:0]; +} + +- (void)footerRefresh { + if (self.hasNoMoreData) { + [self showErrorToast:YMLocalizedString(@"XPMineClanViewController0")]; + [self.tableView.mj_footer endRefreshing]; + return; + } + self.page++; + [self.presenter getClanMemberList:self.uid page:self.page pageSize:20 state:1]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.tableView]; + [self.view addSubview:self.navView]; + [self.navView addSubview:self.backButton]; + [self.navView addSubview:self.titleLabel]; + self.tableView.tableHeaderView = self.headerView; +} + +- (void)initSubViewConstraints { + [self.navView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.height.mas_equalTo(kNavigationHeight); + }]; + + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.view); + }]; + + [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.view).mas_offset(10); + make.top.mas_equalTo(statusbarHeight); + make.height.width.mas_equalTo(44); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.navView); + make.centerY.mas_equalTo(self.backButton); + }]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + XPClanMemberTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPClanMemberTableViewCell class])]; + if (cell == nil) { + cell = [[XPClanMemberTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPClanMemberTableViewCell class])]; + } + cell.cellType = ClanMemberTableViewCellType_Normal; + ClanMemberInfoModel * memberInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.isLast = (self.datasource.count -1) == indexPath.row; + cell.memberInfo = memberInfo; + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 66; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { + return 37; +} + +- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { + if (section == 0 && self.isRequest) { + if (self.sectionView == nil) { + XPClanSectionView * sectionView = [[XPClanSectionView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 37)]; + sectionView.isTopCor = YES; + sectionView.delegate = self; + self.sectionView = sectionView; + } + self.sectionView.title = [NSString stringWithFormat:YMLocalizedString(@"XPMineClanViewController1"), self.datasource.count]; + return self.sectionView; + } + return [UIView new]; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ + return 0.01f; +} + +- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{ + return [[UIView alloc]init]; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + ClanMemberInfoModel * memberInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init]; + userInfoVC.uid = memberInfo.uid.integerValue; + [self.navigationController pushViewController:userInfoVC animated:YES]; + } +} + +#pragma mark - XPClanSectionViewDelegate +- (void)xPClanSectionView:(XPClanSectionView *)view didClickSearch:(UIButton *)sender { + XPMineGuildSearchViewController * searchVC = [[XPMineGuildSearchViewController alloc] init]; + searchVC.modalPresentationStyle = UIModalPresentationOverFullScreen; + searchVC.searchType = GuildSearchType_Clan_All_Member; + searchVC.clanOwnerUid = self.clanDetailInfo.clan.elderUid; + [self.navigationController presentViewController:searchVC animated:YES completion:nil]; +} + +#pragma mark -XPClanProtocol +- (void)getClanDetailInfoSuccess:(ClanDetailInfoModel *)clanDetailInfo currentUserClanInfo:(nonnull ClanDetailInfoModel *)currentUserClanInfo{ + if ([currentUserClanInfo.clan.elderUid isEqualToString:clanDetailInfo.clan.elderUid]) { + self.sectionView.isHiddenSearch = NO; + } + self.clanDetailInfo = clanDetailInfo; + self.headerView.clanInfo = clanDetailInfo; + self.titleLabel.text = clanDetailInfo.clan.name; + [self.presenter getClanRoomList:clanDetailInfo.clan.cid]; +} + +- (void)getClanMemberListSuccess:(ClanMemberDetailInfoModel *)memberInfo state:(int)state { + self.isRequest = YES; + if (state == 0) { + self.hasNoMoreData = NO; + [self.datasource removeAllObjects]; + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } + + if (memberInfo.members.count > 0) { + [self.datasource addObjectsFromArray:memberInfo.members]; + } else { + self.hasNoMoreData = YES; + } + [self.tableView reloadData]; +} + +- (void)getClanRoomListSuccess:(NSArray *)array { + self.headerView.clanRoomList = array; +} + +#pragma mark - XPGuildHeaderViewDelegate +- (void)xPGuildHeaderView:(XPGuildHeaderView *)view dicSelectGuild:(GuildInfoModel *)guildInfo { + XPMineGuildViewController * guildVC = [[XPMineGuildViewController alloc] init]; + guildVC.ownerUid = guildInfo.ownerUid; + guildVC.guildId = guildInfo.hallId; + [self.navigationController pushViewController:guildVC animated:YES]; +} + +- (void)xPGuildHeaderView:(XPGuildHeaderView *)view dicSelectOwner:(ClanDetailInfoModel *)guildInfo { + XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init]; + userInfoVC.uid = guildInfo.clan.elderUid.integerValue; + [self.navigationController pushViewController:userInfoVC animated:YES]; +} + +- (void)xPGuildHeaderView:(XPGuildHeaderView *)view dicTapMenuItem:(GuildHeaderMenuType)menuType { + switch (menuType) { + case GuildHeaderMenuType_Hall_Income: + { + XPMineMainIncomeStatisViewController * clanIncomeVC = [[XPMineMainIncomeStatisViewController alloc] init]; + clanIncomeVC.clanId = self.clanDetailInfo.clan.cid; + [self.navigationController pushViewController:clanIncomeVC animated:YES]; + } + break; + case GuildHeaderMenuType_Exchange_Authority: + { + XPMineExchangeAuthorityVC* clanIncomeVC = [[XPMineExchangeAuthorityVC alloc] init]; + [self.navigationController pushViewController:clanIncomeVC animated:YES]; + } + break; + case GuildHeaderMenuType_Super_Admin: + { + XPMineGuildSuperAdminSetViewController * superAdminVC = [[XPMineGuildSuperAdminSetViewController alloc] init]; + superAdminVC.clanId = self.clanDetailInfo.clan.cid; + [self.navigationController pushViewController:superAdminVC animated:YES]; + } + break; + default: + break; + } +} + +#pragma mark - Event Response +- (void)backButtonAction:(UIButton *)sender { + [self.navigationController popViewControllerAnimated:YES]; +} + +#pragma mark - Getters And Setters +- (UIView *)navView { + if (!_navView) { + _navView = [[UIView alloc] init]; + _navView.backgroundColor = [UIColor clearColor]; + } + return _navView; +} + +- (UIButton *)backButton { + if (!_backButton) { + _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_backButton setImage:[UIImage imageNamed:@"home_search_white_back"] forState:UIControlStateNormal]; + [_backButton setImage:[UIImage imageNamed:@"home_search_white_back"] forState:UIControlStateSelected]; + [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _backButton; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.font = [UIFont systemFontOfSize:17]; + _titleLabel.textColor = [UIColor whiteColor]; + } + return _titleLabel; +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + UIView *footView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 20)]; + footView.backgroundColor = [UIColor clearColor]; + _tableView.tableFooterView = footView; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + _tableView.showsVerticalScrollIndicator = NO; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPClanMemberTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPClanMemberTableViewCell class])]; + } + return _tableView; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + +- (XPGuildHeaderView *)headerView { + if (!_headerView) { + _headerView = [[XPGuildHeaderView alloc] init]; + _headerView.delegate = self; + } + return _headerView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/XPMineExchangeAuthorityVC.h b/YuMi/Modules/YMMine/View/Guild/View/XPMineExchangeAuthorityVC.h new file mode 100644 index 00000000..5472674a --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/XPMineExchangeAuthorityVC.h @@ -0,0 +1,16 @@ +// +// XPMineExchangeAuthorityVC.h +// YuMi +// +// Created by YuMi on 2023/2/13. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineExchangeAuthorityVC : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/XPMineExchangeAuthorityVC.m b/YuMi/Modules/YMMine/View/Guild/View/XPMineExchangeAuthorityVC.m new file mode 100644 index 00000000..770e8903 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/XPMineExchangeAuthorityVC.m @@ -0,0 +1,168 @@ +// +// XPMineExchangeAuthorityVC.m +// YuMi +// +// Created by YuMi on 2023/2/13. +// + +#import "XPMineExchangeAuthorityVC.h" +///view +#import "XPMineExchangeAuthorityCell.h" +#import "XPMineExchangeAuthorityFooderView.h" +#import "XPMineExchangeAuthorityHeadView.h" +#import "XPMinePromptWindow.h" +#import "TTPopup.h" +#import "DJDKMIMOMColor.h" +///model +#import "XPMineExchangeAuthorityModel.h" +///Presenter +#import "XPClanPresenter.h" +#import "XPClanProtocol.h" +@interface XPMineExchangeAuthorityVC () +/// +@property (nonatomic,strong) UITableView *tableView; +/// +@property (nonatomic,strong) NSMutableArray *dataList; +@end + +@implementation XPMineExchangeAuthorityVC +- (XPClanPresenter *)createPresenter { + return [[XPClanPresenter alloc] init]; +} +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + [self.presenter getClanRoomMemberAuthorityList]; + +} +#pragma mark - Private Method +- (void)initSubViews { + self.dataList = [NSMutableArray array]; + self.title = YMLocalizedString(@"XPMineExchangeAuthorityVC0"); + [self.view addSubview:self.tableView]; +} +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.view); + }]; +} +#pragma mark -获取房主兑换权限列表 +-(void)getClanRoomMemberAuthorityListSuccess:(NSArray *)list{ + NSMutableArray *openList = [NSMutableArray array]; + NSMutableArray *closeList = [NSMutableArray array]; + for (XPMineExchangeAuthorityModel *model in list) { + if(model.exchangeAuthStatus == 0){ + [openList addObject:model]; + }else{ + [closeList addObject:model]; + } + } + NSArray * getOpenList = [openList sortedArrayUsingComparator:^NSComparisonResult(XPMineExchangeAuthorityModel * obj1, XPMineExchangeAuthorityModel * obj2) { + NSComparisonResult result = obj1.golds < obj2.golds; + return result; + }]; + NSArray *getcloseList = [closeList sortedArrayUsingComparator:^NSComparisonResult(XPMineExchangeAuthorityModel * obj1, XPMineExchangeAuthorityModel * obj2) { + NSComparisonResult result = obj1.golds < obj2.golds; + return result; + }]; + [self.dataList addObject:[getOpenList mutableCopy]]; + [self.dataList addObject:[getcloseList mutableCopy]]; + [self.tableView reloadData]; +} +- (void)getExchangeAuthorityResultSuccess:(XPMineExchangeAuthorityModel *)model status:(NSString *)status{ + [self showSuccessToast:status.intValue == 0 ? YMLocalizedString(@"XPMineExchangeAuthorityVC3"):YMLocalizedString(@"XPMineExchangeAuthorityVC4") ]; + NSMutableArray *openList = self.dataList.firstObject; + NSMutableArray *closeList = self.dataList.lastObject; + model.exchangeAuthStatus = status.intValue; + if([status isEqualToString:@"1"]){ + [closeList addObject:model]; + [openList removeObject:model]; + }else{ + [closeList removeObject:model]; + [openList addObject:model]; + } + NSArray *getOpenList = [openList sortedArrayUsingComparator:^NSComparisonResult(XPMineExchangeAuthorityModel * obj1, XPMineExchangeAuthorityModel * obj2) { + NSComparisonResult result = obj1.golds < obj2.golds; + return result; + }]; + + NSArray *getcloseList = [closeList sortedArrayUsingComparator:^NSComparisonResult(XPMineExchangeAuthorityModel * obj1, XPMineExchangeAuthorityModel * obj2) { + NSComparisonResult result = obj1.golds < obj2.golds; + return result; + }]; + self.dataList[0] = [getOpenList mutableCopy]; + self.dataList[1] = [getcloseList mutableCopy]; + [self.tableView reloadData]; +} + +#pragma mark -XPMineExchangeAuthorityCellDelegate +-(void)openExchangeAuthoritySwiftStatus:(NSString *)status model:(XPMineExchangeAuthorityModel *)model{ + if([status isEqualToString:@"0"]){ + XPMinePromptWindow *window = [[XPMinePromptWindow alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; + window.name = model.nick; + @kWeakify(self); + window.confirmHandler = ^(){ + @kStrongify(self); + [self.presenter masterDisableRrEnablememberExchangeRights:status targetUid:model.uid model:model]; + }; + [TTPopup popupView:window style:TTPopupStyleAlert]; + return; + } + [self.presenter masterDisableRrEnablememberExchangeRights:status targetUid:model.uid model:model]; +} +#pragma mark -UITableViewDelegate,UITableViewDataSource +-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ + return self.dataList.count; +} +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ + return [self.dataList[section]count]; +} +-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ + XPMineExchangeAuthorityCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineExchangeAuthorityCell class]) forIndexPath:indexPath]; + if(indexPath.section < self.dataList.count){ + if(indexPath.row < [self.dataList[indexPath.section]count]){ + XPMineExchangeAuthorityModel *model = self.dataList[indexPath.section][indexPath.row]; + cell.authorityModel = model; + } + } + cell.delegate = self; + return cell; +} +-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ + return kGetScaleWidth(32); +} +-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ + return kGetScaleWidth(45); +} +-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{ + + XPMineExchangeAuthorityHeadView *headerView = [tableView dequeueReusableHeaderFooterViewWithIdentifier:NSStringFromClass([XPMineExchangeAuthorityHeadView class])]; + headerView.title = section == 0 ? YMLocalizedString(@"XPMineExchangeAuthorityVC1"):YMLocalizedString(@"XPMineExchangeAuthorityVC2"); + return headerView; +} +- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{ + XPMineExchangeAuthorityFooderView *fooderView = [tableView dequeueReusableHeaderFooterViewWithIdentifier:NSStringFromClass([XPMineExchangeAuthorityFooderView class])]; + fooderView.title = section == 0 ? YMLocalizedString(@"XPMineExchangeAuthorityFooderView0"):YMLocalizedString(@"XPMineExchangeAuthorityFooderView1"); + return fooderView; +} +#pragma mark -懒加载 +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = UIColorFromRGB(0xF3F5FA); + _tableView.rowHeight = kGetScaleWidth(80); + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPMineExchangeAuthorityHeadView class] forHeaderFooterViewReuseIdentifier:NSStringFromClass([XPMineExchangeAuthorityHeadView class])]; + [_tableView registerClass:[XPMineExchangeAuthorityFooderView class] forHeaderFooterViewReuseIdentifier:NSStringFromClass([XPMineExchangeAuthorityFooderView class])]; + [_tableView registerClass:[XPMineExchangeAuthorityCell class] forCellReuseIdentifier:NSStringFromClass([XPMineExchangeAuthorityCell class])]; + } + return _tableView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildListVC.h b/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildListVC.h new file mode 100644 index 00000000..52d02b93 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildListVC.h @@ -0,0 +1,19 @@ +// +// XPMineGuildListVC.h +// YuMi +// +// Created by YuMi on 2022/10/11. +// + +#import +#import "MvpViewController.h" +#import +#import +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineGuildListVC : MvpViewController +@property (nonatomic,assign) int type;//0,公会,1,房间 +@property (nonatomic,assign) BOOL isFromHall; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildListVC.m b/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildListVC.m new file mode 100644 index 00000000..2ae0ecd2 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildListVC.m @@ -0,0 +1,276 @@ +// +// XPMineGuildListVC.m +// YuMi +// +// Created by YuMi on 2022/10/11. +// + +#import "XPMineGuildListVC.h" +#import "XPMineGuildPresenter.h" +#import "XPMineGuildProtocol.h" +#import "XPMineGuildListCell.h" +#import "XPMineFriendEmptyTableViewCell.h" +#import "XPMineClanViewController.h" +#import "XPMineGuildViewController.h" +#import "XPMineGiveDiamondSearchView.h" +#import "SessionViewController.h" +@interface XPMineGuildListVC () +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSMutableArray *dataList; +///搜索 +@property (nonatomic,strong) XPMineGiveDiamondSearchView *searchView; +///搜索数据源 +@property (nonatomic,strong) NSMutableArray * searchList; + +///申请model +@property (nonatomic,strong) XPMineGuildListModel *applyModel; +@property (nonatomic, copy) void(^scrollCallback)(UIScrollView *scrollView); +@end + +@implementation XPMineGuildListVC +- (XPMineGuildPresenter *)createPresenter { + return [[XPMineGuildPresenter alloc] init];; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self showLoading]; + if(self.type == 0){ + + [self.presenter getGuildListData]; + }else{ + [self.presenter getRoomListData]; + } + + [self initSubViews]; + [self initSubViewConstraints]; + +} +#pragma mark - JXCategoryListContentViewDelegate +- (UIView *)listView { + return self.view; +} +- (UIScrollView *)listScrollView { + return self.tableView; +} +- (void)listViewDidScrollCallback:(void (^)(UIScrollView *))callback { + self.scrollCallback = callback; +} + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + if (self.scrollCallback){ + self.scrollCallback(scrollView); + } + +} + +#pragma mark - Private Method +- (void)initSubViews { + self.view.backgroundColor = [UIColor whiteColor]; + self.title = YMLocalizedString(@"XPMineGuildListVC0"); + if(self.type == 1){ + [self.view addSubview:self.searchView]; + + } + [self.view addSubview:self.tableView]; + self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + if (@available(iOS 15.0, *)) {//移除iOS15列表头默认增加的22高度 + self.tableView.sectionHeaderTopPadding = 0; + } + +} +- (void)initSubViewConstraints { + if(self.type == 1){ + + [self.searchView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(0); + make.right.mas_equalTo(0); + make.height.mas_equalTo(kGetScaleWidth(32)); + make.top.mas_equalTo(kGetScaleWidth(10)); + }]; + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.equalTo(self.view); + make.top.equalTo(self.searchView.mas_bottom).mas_offset(kGetScaleWidth(16)); + }]; + + return; + } + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.view); + }]; +} + +#pragma mark -XPMineGiveDiamondProtocol +- (void)searchEndWithText:(NSString *)text{ + if(text.length == 0){ + self.dataList = [NSMutableArray arrayWithArray:self.searchList]; + [self.tableView reloadData]; + return; + } + [self.dataList removeAllObjects]; + for (XPMineGuildListModel *model in self.searchList) { + NSString *ownerUid = [NSString stringWithFormat:@"%ld",model.ownerErbanNo]; + if([model.hallName containsString:text] || [ownerUid containsString:text] ){ + [self.dataList addObject:model]; + } + } + if(self.dataList.count == 0){ + [self showErrorToast:YMLocalizedString(@"XPMineGuildListVC3")]; + } + [self.tableView reloadData]; +} +#pragma mark -XPMineGuildProtocol +-(void)onGetMineRoomListSuccess:(NSArray *)list{ + self.searchList = [NSMutableArray arrayWithArray:list]; + self.dataList = [NSMutableArray arrayWithArray:list]; + [self.tableView reloadData]; + [self hideHUD]; +} +-(void)onGetMineGuildListSuccess:(NSArray *)list{ + self.dataList = [NSMutableArray arrayWithArray:list]; + [self.tableView reloadData]; + [self hideHUD]; +} +-(void)applyClanSuccess{ + + [self hideHUD]; + [self showSuccessToast:YMLocalizedString(@"XPMineGuildListVC2")]; + if(self.applyModel == nil)return; + NSInteger index = [self.dataList indexOfObject:self.applyModel]; + self.applyModel.applyBtnStatus = 2; + XPMineGuildListCell *cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0]]; + [cell setApplyBtnType:NO]; +} +- (void)applyClanFail{ + [self hideHUD]; +} +///申请加入房间成功 +-(void)applyHallSuccess{ + [self hideHUD]; + [self showSuccessToast:YMLocalizedString(@"XPMineGuildListVC4")]; + if(self.applyModel == nil)return; + NSInteger index = [self.dataList indexOfObject:self.applyModel]; + self.applyModel.hallBtnStatus = 2; + XPMineGuildListCell *cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0]]; + [cell setApplyBtnType:NO]; +} +///申请加入房间失败 +-(void)applyHallFail{ + [self hideHUD]; +} +#pragma mark -XPMineGuildListCellDelegate +- (void)applyActionWithModel:(XPMineGuildListModel *)guildModel{ + if(self.type == 0){ + self.applyModel = guildModel; + [self.presenter applyClanWithClanId:@(guildModel.clanId).stringValue]; + [self showLoading]; + return; + } + + if(guildModel.hallBtnStatus == 3){ + SessionViewController * sessionVC = [[SessionViewController alloc] initWithSession:[NIMSession session:guildModel.hallMessageUid type:NIMSessionTypeP2P]]; + sessionVC.isUser = YES; + sessionVC.recordId = guildModel.hallRecordId; + [self.navigationController pushViewController:sessionVC animated:YES]; + + return; + } + if(guildModel.hallBtnStatus == 1){ + self.applyModel = guildModel; + [self.presenter applyHallWithHallId:@(guildModel.hallId).stringValue]; + [self showLoading]; + } + +} +#pragma mark -UITableViewDelegate + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.dataList.count > 0 ? self.dataList.count : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return self.dataList.count > 0 ? kGetScaleWidth(58) : (KScreenHeight - kNavigationHeight) ; +} + +-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ + if (self.dataList.count > 0){ + XPMineGuildListCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineGuildListCell class]) forIndexPath:indexPath]; + cell.rankNum = indexPath.row; + if(cell.delegate == nil){ + cell.delegate = self; + } + if(self.type == 0){ + cell.guildModel = self.dataList[indexPath.row]; + }else{ + XPMineGuildListModel*hallModel = self.dataList[indexPath.row]; + cell.hallModel = hallModel; + cell.isFromHall = self.isFromHall; + } + return cell; + } + XPMineFriendEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineFriendEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineFriendEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineFriendEmptyTableViewCell class])]; + } + cell.emptyTitle = self.type == 0 ? YMLocalizedString(@"XPMineGuildListVC1") : YMLocalizedString(@"XPMineGuildListVC3"); + return cell; +} +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ + if(self.dataList.count == 0)return; + XPMineGuildListModel *guildModel = self.dataList[indexPath.row]; + + if(self.type == 0){ + XPMineClanViewController * clanVC = [[XPMineClanViewController alloc] init]; + clanVC.uid = @(guildModel.clanElderUid).stringValue; + [self.navigationController pushViewController:clanVC animated:YES]; + return; + } + XPMineGuildViewController * hallVC = [[XPMineGuildViewController alloc] init]; + hallVC.ownerUid = @(guildModel.ownerUid).stringValue; + hallVC.guildId = @(guildModel.hallId).stringValue; + [self.navigationController pushViewController:hallVC animated:YES]; +} +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.showsVerticalScrollIndicator = NO; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;; + [_tableView registerClass:[XPMineGuildListCell class] forCellReuseIdentifier:NSStringFromClass([XPMineGuildListCell class])]; + [_tableView registerClass:[XPMineFriendEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineFriendEmptyTableViewCell class])]; + + _tableView.backgroundColor = [UIColor whiteColor]; + + } + return _tableView; +} +- (XPMineGiveDiamondSearchView *)searchView{ + if (!_searchView){ + _searchView = [[XPMineGiveDiamondSearchView alloc]initWithFrame:CGRectZero]; + _searchView.delegate = self; + _searchView.isSearchHall = YES; + } + return _searchView; +} +- (NSMutableArray *)dataList{ + if (!_dataList){ + _dataList = [NSMutableArray array]; + } + return _dataList; +} +/* + #pragma mark - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. + } + */ + + + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildSearchViewController.h b/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildSearchViewController.h new file mode 100644 index 00000000..a3706130 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildSearchViewController.h @@ -0,0 +1,40 @@ +// +// XPMineGuildSearchViewController.h +// YuMi +// +// Created by YuMi on 2022/4/7. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN +@class XPMineGuildSearchViewController, ClanMemberInfoModel, GuildSearchUserInfoModel, GuildSearchSuperAdminModel; +typedef NS_ENUM(NSInteger, GuildSearchType) { + GuildSearchType_Clan_All_Member = 1, + ///公会增加新成员 + GuildSearchType_Guild_Add_Member, + ///家族设置超级管理员 + GuildSearchType_Clan_Add_Super_Admin, +}; + +@protocol XPMineGuildSearchViewControllerDelegate +@optional +///选中了某个用户 +- (void)xPMineGuildSearchViewController:(XPMineGuildSearchViewController *)viewController chooseUserInfo:(ClanMemberInfoModel *)memberInfo; +///邀请用户加入公会 +- (void)xPMineGuildSearchViewController:(XPMineGuildSearchViewController *)viewController inviteUserInfo:(GuildSearchUserInfoModel *)userInfo; +///邀请用户成为管理员 +- (void)xPMineGuildSearchViewController:(XPMineGuildSearchViewController *)viewController superAdminInfo:(GuildSearchSuperAdminModel *)superAdminInfo; +@end + +@interface XPMineGuildSearchViewController : MvpViewController +///代理 +@property (nonatomic,weak) id delegate; +///族长的uid +@property (nonatomic,copy) NSString *clanOwnerUid; +///搜索的类型 +@property (nonatomic,assign) GuildSearchType searchType; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildSearchViewController.m b/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildSearchViewController.m new file mode 100644 index 00000000..b4cf5f5a --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildSearchViewController.m @@ -0,0 +1,301 @@ +// +// XPMineGuildSearchViewController.m +// YuMi +// +// Created by YuMi on 2022/4/7. +// + +#import "XPMineGuildSearchViewController.h" +///Third +#import +///Tool + +#import "DJDKMIMOMColor.h" +#import "TTPopup.h" +///Model +#import "ClanMemberDetailInfoModel.h" +#import "GuildSearchUserInfoModel.h" +#import "GuildSearchSuperAdminModel.h" +///View +#import "XPGuildSearchNavView.h" +#import "XPClanMemberTableViewCell.h" +#import "XPMineGuildEmptyTableViewCell.h" +#import "XPMineGuildSearchMemberTableViewCell.h" +#import "XPGuildSearchSuperAdminTableViewCell.h" +#import "XPMineUserInfoViewController.h" +#import "XPMineGuildChooseManagerViewController.h" +#import "SessionViewController.h" +///P +#import "XPGuildSearchPresenter.h" +#import "XPGuildSearchProtocol.h" + + +@interface XPMineGuildSearchViewController () +///导航栏 +@property (nonatomic,strong) XPGuildSearchNavView *navView; +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSArray *datasource; +@end + +@implementation XPMineGuildSearchViewController +- (BOOL)isHiddenNavBar { + return YES; +} +- (__kindof id)createPresenter { + return [[XPGuildSearchPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; +} +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + [self.view endEditing:YES]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.navView]; + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.navView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.height.mas_equalTo(kNavigationHeight); + }]; + + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.top.mas_equalTo(self.navView.mas_bottom); + }]; +} +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + if (self.searchType == GuildSearchType_Clan_All_Member) { + return 66; + } else if(self.searchType == GuildSearchType_Guild_Add_Member) { + return 80; + } else if(self.searchType == GuildSearchType_Clan_Add_Super_Admin) { + return 70; + } + return 0; + } + + return (KScreenHeight - kNavigationHeight); +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0 ) { + if (self.searchType == GuildSearchType_Clan_All_Member) { + XPClanMemberTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPClanMemberTableViewCell class])]; + if (cell == nil) { + cell = [[XPClanMemberTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPClanMemberTableViewCell class])]; + } + cell.cellType = ClanMemberTableViewCellType_Normal; + ClanMemberInfoModel * memberInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.memberInfo = memberInfo; + return cell; + }else if(self.searchType == GuildSearchType_Guild_Add_Member) { + XPMineGuildSearchMemberTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineGuildSearchMemberTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineGuildSearchMemberTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineGuildSearchMemberTableViewCell class])]; + } + cell.delegate = self; + GuildSearchUserInfoModel * userInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.userInfo = userInfo; + return cell; + } else if(self.searchType == GuildSearchType_Clan_Add_Super_Admin) { + XPGuildSearchSuperAdminTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPGuildSearchSuperAdminTableViewCell class])]; + if (cell == nil) { + cell = [[XPGuildSearchSuperAdminTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPGuildSearchSuperAdminTableViewCell class])]; + } + cell.delegate = self; + GuildSearchSuperAdminModel * userInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.userInfo = userInfo; + return cell; + } + } + XPMineGuildEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineGuildEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineGuildEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineGuildEmptyTableViewCell class])]; + } + switch (self.searchType) { + case GuildSearchType_Clan_All_Member: + cell.emptyTitle = YMLocalizedString(@"XPMineGuildSearchViewController0"); + break; + + default: + break; + } + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + switch (self.searchType) { + case GuildSearchType_Clan_All_Member: + { + ClanMemberInfoModel * memberInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init]; + userInfoVC.uid = memberInfo.uid.integerValue; + [((UINavigationController *)self.presentingViewController) pushViewController:userInfoVC animated:YES]; + [self dismissViewControllerAnimated:NO completion:nil]; + } + break; + case GuildSearchType_Guild_Add_Member: + { + GuildSearchUserInfoModel * userInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init]; + userInfoVC.uid = userInfo.uid.integerValue; + [((UINavigationController *)self.presentingViewController) pushViewController:userInfoVC animated:YES]; + [self dismissViewControllerAnimated:NO completion:nil]; + } + break; + default: + break; + } + } +} + +#pragma mark - XPClanMemberTableViewCellDelegate +- (void)xPClanMemberTableViewCell:(XPClanMemberTableViewCell *)view didClickUser:(ClanMemberInfoModel *)userinfo { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineGuildSearchViewController:chooseUserInfo:)]) { + [self.delegate xPMineGuildSearchViewController:self chooseUserInfo:userinfo]; + } +} + +#pragma mark - XPMineGuildSearchMemberTableViewCellDelegate +- (void)xPMineGuildSearchMemberTableViewCell:(XPMineGuildSearchMemberTableViewCell *)view didSelectInfo:(GuildSearchUserInfoModel *)userInfo { + if(userInfo.hallBtnStatus == 6){ + SessionViewController * sessionVC = [[SessionViewController alloc] initWithSession:[NIMSession session:userInfo.hallMessageUid type:NIMSessionTypeP2P]]; + sessionVC.recordId = userInfo.hallRecordId; + [self.navigationController pushViewController:sessionVC animated:YES]; + return; + } + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineGuildSearchViewController:inviteUserInfo:)]) { + [self.delegate xPMineGuildSearchViewController:self inviteUserInfo:userInfo]; + } +} + +#pragma mark - XPGuildSearchNavView +- (void)xPGuildSearchNavView:(XPGuildSearchNavView *)view didClickBack:(UIButton *)sender { + [self.navigationController popViewControllerAnimated:YES]; +} + +- (void)xPGuildSearchNavView:(XPGuildSearchNavView *)view didClickSearch:(UIButton *)sender { + NSString * key = view.searchTextField.text; + if (key.length <= 0) { + [self showErrorToast:YMLocalizedString(@"XPMineGuildSearchViewController1")]; + return; + } + switch (self.searchType) { + case GuildSearchType_Clan_All_Member: + [self.presenter searchClanMemberList:self.clanOwnerUid key:key]; + break; + case GuildSearchType_Guild_Add_Member: + [self.presenter guildAddMemberSearch:key]; + break; + case GuildSearchType_Clan_Add_Super_Admin: + [self.presenter searchGuildSuperAdmin:key]; + break; + default: + break; + } +} + +#pragma mark - XPGuildSearchSuperAdminTableViewCellDelegate +- (void)xPGuildSearchSuperAdminTableViewCell:(XPGuildSearchSuperAdminTableViewCell *)cell didSelectInfo:(GuildSearchSuperAdminModel *)userInfo { + if (userInfo && !userInfo.hasSet) { + + NSString * message = [NSString stringWithFormat:YMLocalizedString(@"XPMineGuildSearchViewController2"), userInfo.nick, userInfo.erbanNo]; + TTAlertConfig * config =[[TTAlertConfig alloc] init]; + config.message = message; + + TTAlertMessageAttributedConfig * nickAttribute = [[TTAlertMessageAttributedConfig alloc] init]; + nickAttribute.text = userInfo.nick; + nickAttribute.color = [DJDKMIMOMColor appMainColor]; + + TTAlertMessageAttributedConfig * idAttribute = [[TTAlertMessageAttributedConfig alloc] init]; + idAttribute.text = userInfo.erbanNo; + idAttribute.color = [DJDKMIMOMColor appMainColor]; + config.messageAttributedConfig = @[nickAttribute, idAttribute]; + [TTPopup alertWithConfig:config confirmHandler:^{ + XPMineGuildChooseManagerViewController * managerRoomVC = [[XPMineGuildChooseManagerViewController alloc] init]; + managerRoomVC.clanId = self.clanOwnerUid; + managerRoomVC.targetUid = userInfo.uid; + [(UINavigationController *)self.presentingViewController pushViewController:managerRoomVC animated:YES]; + [self dismissViewControllerAnimated:YES completion:nil]; + } cancelHandler:^{ + + }]; + } +} + +#pragma mark - XPGuildSearchProtocol +- (void)searchClanMemberListSuccess:(NSArray *)memberList { + self.datasource = memberList; + [self.tableView reloadData]; +} + +- (void)guildAddMemberSearchSuccess:(NSArray *)memberList { + self.datasource = memberList; + [self.tableView reloadData]; +} + +- (void)searchGuildSuperAdminSuccess:(NSArray *)memberList { + self.datasource = memberList; + [self.tableView reloadData]; +} + +#pragma mark - Getters And Setters +- (void)setSearchType:(GuildSearchType)searchType { + _searchType = searchType; + switch (_searchType) { + case GuildSearchType_Clan_Add_Super_Admin: + self.navView.searchTextField.keyboardType = UIKeyboardTypeNumberPad; + self.navView.placeHolder = YMLocalizedString(@"XPMineGuildSearchViewController3"); + break; + + default: + break; + } +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPClanMemberTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPClanMemberTableViewCell class])]; + [_tableView registerClass:[XPMineGuildSearchMemberTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineGuildSearchMemberTableViewCell class])]; + [_tableView registerClass:[XPGuildSearchSuperAdminTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPGuildSearchSuperAdminTableViewCell class])]; + } + return _tableView; +} + +- (XPGuildSearchNavView *)navView { + if (!_navView) { + _navView = [[XPGuildSearchNavView alloc] init]; + _navView.delegate = self; + } + return _navView; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildViewController.h b/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildViewController.h new file mode 100644 index 00000000..34c83056 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildViewController.h @@ -0,0 +1,17 @@ +// +// XPMineGuildViewController.h +// YuMi +// +// Created by YuMi on 2022/4/6. +// + +#import "MvpViewController.h" +NS_ASSUME_NONNULL_BEGIN +@interface XPMineGuildViewController : MvpViewController +@property (nonatomic,strong) NSString *ownerUid; +@property (nonatomic,strong) NSString *guildId; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildViewController.m b/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildViewController.m new file mode 100644 index 00000000..a8eba90f --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildViewController.m @@ -0,0 +1,853 @@ +// +// XPMineGuildViewController.m +// YuMi +// +// Created by YuMi on 2022/4/6. +// 公会主页 + +#import "XPMineGuildViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "AccountInfoStorage.h" +#import "TTPopup.h" +#import "UIImage+Utils.h" +#import "XNDJTDDLoadingTool.h" +///Model +#import "ClanDetailInfoModel.h" +#import "ClanMemberDetailInfoModel.h" +#import "GuildAuthModel.h" +#import "GuildSearchUserInfoModel.h" +#import "XPMineGuildListModel.h" +///View +#import "XPClanMemberTableViewCell.h" +#import "XPClanSectionView.h" +#import "XPMineGuildSetNameViewController.h" +#import "XPMineGuildSearchViewController.h" +#import "XPMineGuildRemoveMemberViewController.h" +#import "XPMineMangerListViewController.h" +#import "XPMineGuildIncomeStatisViewController.h" +#import "XPMineHallAnchorIncomeStatisViewController.h" +#import "XPMineUserInfoViewController.h" +#import "XPMineMainGuildListVC.h" +#import "SessionViewController.h" +///P +#import "XPGuildPresenter.h" +#import "XPGuildProtocol.h" + +UIKIT_EXTERN NSString *kInviteMemeberSuccess; + +@interface XPMineGuildViewController () +///导航栏 +@property (nonatomic,strong) UIView * navView; +///返回按钮 +@property (nonatomic,strong) UIButton *backButton; +///标题 +@property (nonatomic,strong) UILabel *titleLabel; +/// +@property (nonatomic,strong) UIStackView *rightStackView; +///编辑公会名称 +@property (nonatomic,strong) UIButton *editButton; +///退出房间 +@property (nonatomic,strong) UIButton *exitButton; +///列表 +@property (nonatomic,strong) UITableView *tableView; +///顶部视图 +@property (nonatomic,strong) UIView * headerView; +///显示头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///显示id +@property (nonatomic,strong) UILabel *idLabel; +///背景图 +@property (nonatomic,strong) NetImageView *backImageView; +///显示一个蒙层 +@property (nonatomic,strong) UIImageView *shadowImageView; +///当前页数 +@property (nonatomic,assign) int page; +///是否有更多的数据 +@property (nonatomic,assign) BOOL hasNoMoreData; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +///区头 +@property (nonatomic,strong) XPClanSectionView *sectionView; +///家族信息 +@property (nonatomic,strong) ClanDetailInfoModel *clanDetailInfo; +///当前用户的家族信息 +@property (nonatomic,strong) ClanDetailInfoModel *currentUserClanInfo; +///权限 +@property (nonatomic,strong) NSArray *authList; +///管理权限的列表 +@property (nonatomic,strong) NSArray *managerAuthList; + +///加入公会 +@property (nonatomic,strong) TTActionSheetConfig *addGuildItem; + +///添加成员 +@property (nonatomic,strong) TTActionSheetConfig *addMemberItem; +///移除成员 +@property (nonatomic,strong) TTActionSheetConfig *removeMemberItem; +///成员收入 +@property (nonatomic,strong) TTActionSheetConfig *memberIncomeItem; +///主播收入 +@property (nonatomic,strong) TTActionSheetConfig *singleIncomeItem; +///管理设置 +@property (nonatomic,strong) TTActionSheetConfig *managerSetItem; +///加入房间 +@property (nonatomic,strong) UIView *addRoomView; +/// +@property (nonatomic,strong) XPMineGuildListModel *stateModel; +@end + +@implementation XPMineGuildViewController + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (XPGuildPresenter *)createPresenter { + return [[XPGuildPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + [self initHeaderAndFooterRrfresh]; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [self headerRefresh]; +} +#pragma mark - 下拉刷新 +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; +} + +#pragma mark - 刷新的fangfa +- (void)headerRefresh { + if (self.guildId.length <= 0 || self.ownerUid.length <= 0) { + [self showErrorToast:YMLocalizedString(@"XPMineGuildViewController0")]; + [self.navigationController popViewControllerAnimated:YES]; + return; + } + self.page = 1; + [self.presenter applyHallBtnStateWithHallId:self.guildId]; + [self.presenter getClanDetailInfo:self.ownerUid currentUserUid:[AccountInfoStorage instance].getUid]; + [self.presenter getGuildMemberList:self.guildId page:self.page pageSize:20 state:0]; +} + +- (void)footerRefresh { + if (self.guildId.length <= 0 || self.ownerUid.length <= 0) { + [self showErrorToast:YMLocalizedString(@"XPMineGuildViewController1")]; + [self.navigationController popViewControllerAnimated:YES]; + return; + } + + if (self.hasNoMoreData) { + [self showErrorToast:YMLocalizedString(@"XPMineGuildViewController2")]; + [self.tableView.mj_footer endRefreshing]; + return; + } + self.page++; + [self.presenter getGuildMemberList:self.guildId page:self.page pageSize:20 state:1]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.backImageView]; + [self.view addSubview:self.shadowImageView]; + [self.view addSubview:self.tableView]; + + + + [self.view addSubview:self.navView]; + [self.navView addSubview:self.backButton]; + [self.navView addSubview:self.titleLabel]; + [self.navView addSubview:self.rightStackView]; + + [self.backImageView addSubview:self.shadowImageView]; + + [self.rightStackView addArrangedSubview:self.exitButton]; + [self.rightStackView addArrangedSubview:self.editButton]; + + [self.headerView addSubview:self.avatarImageView]; + [self.headerView addSubview:self.idLabel]; + self.headerView.frame = CGRectMake(0, 0, KScreenWidth, 174 + kSafeAreaTopHeight); + self.tableView.tableHeaderView = self.headerView; + + + [self.view addSubview:self.addRoomView]; + @kWeakify(self); + self.addMemberItem.clickAction = ^{ + @kStrongify(self); + XPMineGuildSearchViewController * searchVC = [[XPMineGuildSearchViewController alloc] init]; + searchVC.modalPresentationStyle = UIModalPresentationOverFullScreen; + searchVC.searchType = GuildSearchType_Guild_Add_Member; + searchVC.delegate = self; + [self.navigationController pushViewController:searchVC animated:YES]; + }; + + self.removeMemberItem.clickAction = ^{ + @kStrongify(self); + XPMineGuildRemoveMemberViewController * removeVC = [[XPMineGuildRemoveMemberViewController alloc] init]; + removeVC.guildId = self.clanDetailInfo.hall.hallId; + [self.navigationController pushViewController:removeVC animated:YES]; + }; + + self.memberIncomeItem.clickAction = ^{ + @kStrongify(self); + XPMineGuildIncomeStatisViewController * personIncomeVC = [[XPMineGuildIncomeStatisViewController alloc] init]; + personIncomeVC.hallId = self.clanDetailInfo.hall.hallId; + [self.navigationController pushViewController:personIncomeVC animated:YES]; + }; + + self.singleIncomeItem.clickAction = ^{ + @kStrongify(self); + XPMineHallAnchorIncomeStatisViewController * managerList = [[XPMineHallAnchorIncomeStatisViewController alloc] init]; + managerList.hallId = self.clanDetailInfo.hall.hallId; + [self.navigationController pushViewController:managerList animated:YES]; + }; + self.addGuildItem.clickAction = ^{ + @kStrongify(self); + XPMineMainGuildListVC *vc = [XPMineMainGuildListVC new]; + vc.isFromHall = YES; + [self.navigationController pushViewController:vc animated:YES]; + }; + self.managerSetItem.clickAction = ^{ + @kStrongify(self); + XPMineMangerListViewController * managerList = [[XPMineMangerListViewController alloc] init]; + managerList.guildId = self.clanDetailInfo.hall.hallId; + [self.navigationController pushViewController:managerList animated:YES]; + }; + +} + +- (void)initSubViewConstraints { + [self.navView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.height.mas_equalTo(kNavigationHeight); + }]; + + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.view); + }]; + [self.addRoomView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(kGetScaleWidth(98)); + make.left.right.bottom.equalTo(self.view); + + }]; + + [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.view).mas_offset(10); + make.top.mas_equalTo(statusbarHeight); + make.height.width.mas_equalTo(44); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backButton.mas_right); + make.right.mas_equalTo(self.rightStackView.mas_left); + make.centerY.mas_equalTo(self.backButton); + }]; + + [self.rightStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.navView).offset(-15); + make.centerY.mas_equalTo(self.backButton); + }]; + + [self.exitButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(70); + make.height.mas_equalTo(22); + }]; + + [self.editButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(22); + make.height.mas_equalTo(22); + }]; + + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.height.mas_equalTo(250); + }]; + + [self.shadowImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.backImageView); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(70, 70)); + make.centerX.mas_equalTo(self.headerView); + make.top.mas_equalTo(self.headerView).offset(66 + kSafeAreaTopHeight); + }]; + + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.headerView); + make.top.mas_equalTo(self.avatarImageView.mas_bottom).offset(10); + }]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + XPClanMemberTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPClanMemberTableViewCell class])]; + if (cell == nil) { + cell = [[XPClanMemberTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPClanMemberTableViewCell class])]; + } + cell.cellType = ClanMemberTableViewCellType_Normal; + ClanMemberInfoModel * memberInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.isLast = (self.datasource.count -1) == indexPath.row; + cell.memberInfo = memberInfo; + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 66; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { + return self.datasource.count > 0 ? 37 : 0.1; +} + +- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { + if (section == 0) { + if (self.sectionView == nil) { + XPClanSectionView * sectionView = [[XPClanSectionView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 37)]; + sectionView.delegate = self; + sectionView.isTopCor = YES; + self.sectionView = sectionView; + } + return self.sectionView; + } + return [UIView new]; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ + return 0.01f; +} + +- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{ + return [[UIView alloc]init]; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + ClanMemberInfoModel * memberInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init]; + userInfoVC.uid = memberInfo.uid.integerValue; + [self.navigationController pushViewController:userInfoVC animated:YES]; + } +} + +#pragma mark - XPMineGuildSearchViewControllerDelegate +- (void)xPMineGuildSearchViewController:(XPMineGuildSearchViewController *)viewController inviteUserInfo:(GuildSearchUserInfoModel *)userInfo { + if (userInfo && userInfo.uid.length > 0) { + NSString * title = [NSString stringWithFormat:YMLocalizedString(@"XPMineGuildViewController3"), userInfo.nick,self.clanDetailInfo.hall.hallName]; + TTAlertMessageAttributedConfig * inviteAlertConfig = [[TTAlertMessageAttributedConfig alloc] init]; + inviteAlertConfig.text = userInfo.nick; + inviteAlertConfig.color = [DJDKMIMOMColor appMainColor]; + inviteAlertConfig.font = [UIFont systemFontOfSize:15]; + + TTAlertMessageAttributedConfig * hallNameAlertConfig = [[TTAlertMessageAttributedConfig alloc] init]; + hallNameAlertConfig.text = self.clanDetailInfo.hall.hallName; + hallNameAlertConfig.color = [DJDKMIMOMColor appMainColor]; + hallNameAlertConfig.font = [UIFont systemFontOfSize:15]; + + NSArray * array = @[inviteAlertConfig, hallNameAlertConfig]; + TTAlertConfig * alerconfig= [[TTAlertConfig alloc] init]; + alerconfig.message = title; + alerconfig.messageAttributedConfig = array; + alerconfig.title = YMLocalizedString(@"XPMineGuildViewController4"); + [TTPopup alertWithConfig:alerconfig confirmHandler:^{ + [self.presenter inviteMember:userInfo.uid hallId:self.clanDetailInfo.hall.hallId]; + } cancelHandler:^{ + + }]; + } +} + +#pragma mark - XPClanSectionView +- (void)xPClanSectionView:(XPClanSectionView *)view didClickSearch:(UIButton *)sender { + XPMineGuildSearchViewController * searchVC = [[XPMineGuildSearchViewController alloc] init]; + searchVC.modalPresentationStyle = UIModalPresentationOverFullScreen; + searchVC.searchType = GuildSearchType_Clan_All_Member; + searchVC.clanOwnerUid = self.clanDetailInfo.hall.ownerUid; + [self.navigationController presentViewController:searchVC animated:YES completion:nil]; +} + +- (void)xPClanSectionView:(XPClanSectionView *)view didClickManager:(UIButton *)sender { + if (self.managerAuthList.count > 0) { + [TTPopup actionSheetWithItems:self.managerAuthList]; + } +} + +#pragma mark -XPClanProtocol +- (void)applyHallBtnStateSuccess:(XPMineGuildListModel *)model{ + self.stateModel = model; + [self setApplyBut:self.stateModel.hallBtnStatus]; +} +-(void)applyHallSuccess{ + self.stateModel.hallBtnStatus = 2; + [self setApplyBut:self.stateModel.hallBtnStatus]; + [self showSuccessToast:YMLocalizedString(@"XPMineGuildListVC4")]; +} +-(void)applyHallFail{ + +} +- (void)getGuildMemberListSuccess:(ClanMemberDetailInfoModel *)memberInfo state:(int)state { + self.sectionView.title = [NSString stringWithFormat:YMLocalizedString(@"XPMineGuildViewController5"), memberInfo.count]; + if (state == 0) { + self.hasNoMoreData = NO; + [self.datasource removeAllObjects]; + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } + + if (memberInfo.members.count > 0) { + [self.datasource addObjectsFromArray:memberInfo.members]; + } else { + self.hasNoMoreData = YES; + } + [self.tableView reloadData]; +} + +- (void)getGuildMemberListFail:(NSString *)msg state:(int)state { + if (state == 0) { + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } +} + +- (void)getClanDetailInfoSuccess:(ClanDetailInfoModel *)clanDetailInfo currentUserClanInfo:(ClanDetailInfoModel *)currentUserClanInfo { + self.clanDetailInfo = clanDetailInfo; + self.currentUserClanInfo = currentUserClanInfo; + self.avatarImageView.imageUrl = clanDetailInfo.hall.ownerAvatar; + self.idLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPMineGuildViewController6"),clanDetailInfo.hall.ownerErbanNo]; + self.backImageView.imageUrl = clanDetailInfo.hall.ownerAvatar; + self.titleLabel.text = clanDetailInfo.hall.hallName; + if (clanDetailInfo.manageHall) { + self.sectionView.isHiddenSearch = NO; + self.editButton.hidden = NO; + self.exitButton.hidden = YES; + self.sectionView.isHiddenManager = NO; + ///请求权限 + [self.presenter getUserInGuildRoomAuth:self.guildId]; + } else { + if ([clanDetailInfo.hall.hallId isEqualToString:currentUserClanInfo.hall.hallId]) { + self.sectionView.isHiddenSearch = NO; + GuildInfoModel * hallInfo = currentUserClanInfo.hall; + if (hallInfo.roleType == GuildRoleType_Super_Admin || hallInfo.roleType == GuildRoleType_Owner) { + self.editButton.hidden = NO; + self.exitButton.hidden = YES; + self.sectionView.isHiddenManager = NO; + ///请求权限 + [self.presenter getUserInGuildRoomAuth:self.guildId]; + } else if(hallInfo.roleType == GuildRoleType_Manager){ + self.editButton.hidden = YES; + self.exitButton.hidden = NO; + [self.presenter getUserInGuildRoomAuth:self.guildId]; + } else { + self.sectionView.isHiddenManager = YES; + self.editButton.hidden = YES; + self.exitButton.hidden = NO; + } + } else { + self.sectionView.isHiddenSearch = YES; + self.editButton.hidden = YES; + self.exitButton.hidden = YES; + } + } +} + +- (void)getUserInGuildRoomAuthSuccess:(NSArray *)authList { + self.authList = authList; + NSMutableArray * array = [NSMutableArray array]; + if ([self.clanDetailInfo.hall.hallId isEqualToString:self.currentUserClanInfo.hall.hallId] ) { + GuildInfoModel * hallInfo = self.currentUserClanInfo.hall; + if(hallInfo.roleType == GuildRoleType_Owner && self.currentUserClanInfo.clan.cid == nil) { + self.addGuildItem.title = YMLocalizedString(@"XPMineGuildViewController12"); + [array addObject:self.addGuildItem]; + } + + } + [self.authList enumerateObjectsUsingBlock:^(GuildAuthModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (![obj.code isEqualToString:@"hall_build"]&& ![obj.code isEqualToString:@"hall_exit"] && ![obj.code isEqualToString:@"guild_income"] && obj.status == 1) { + if ([obj.code isEqualToString:@"member_join_manager"]) { + self.addMemberItem.title = obj.name; + [array addObject:self.addMemberItem]; + } else if ([obj.code isEqualToString:@"member_exit_manager"]) { + self.removeMemberItem.title = obj.name; + [array addObject:self.removeMemberItem]; + }else if ([obj.code isEqualToString:@"look_hall_income"]) { + self.memberIncomeItem.title = obj.name; + [array addObject:self.memberIncomeItem]; + }else if ([obj.code isEqualToString:@"single_room_income"]) { + self.singleIncomeItem.title = obj.name; + [array addObject:self.singleIncomeItem]; + }else if ([obj.code isEqualToString:@"hall_manager_set"]) { + self.managerSetItem.title = obj.name; + [array addObject:self.managerSetItem]; + } + } + }]; + self.managerAuthList = array.copy; + self.sectionView.isHiddenManager = self.managerAuthList.count <= 0; +} + +- (void)inviteMemeberSuccessWithTargetUid:(NSString *)targetUid { + [[NSNotificationCenter defaultCenter]postNotificationName:kInviteMemeberSuccess object:targetUid]; + [self showSuccessToast:YMLocalizedString(@"XPMineGuildViewController7")]; +} + +- (void)quitGuildRoomSuccess { + [self showSuccessToast:YMLocalizedString(@"XPMineGuildViewController8")]; +} + +#pragma mark - Event Response +- (void)backButtonAction:(UIButton *)sender { + [self.navigationController popViewControllerAnimated:YES]; +} +-(void)addRoomAction{ + if(self.stateModel.hallBtnStatus == 2)return; + if(self.stateModel.hallBtnStatus == 3){ + SessionViewController * sessionVC = [[SessionViewController alloc] initWithSession:[NIMSession session:self.stateModel.hallMessageUid type:NIMSessionTypeP2P]]; + sessionVC.isUser = YES; + sessionVC.recordId = self.stateModel.recordId; + [self.navigationController pushViewController:sessionVC animated:YES]; + return; + } + [self.presenter applyHallWithHallId:self.guildId]; +} +- (void)exitButtonAction:(UIButton *)sender { + TTAlertConfig * config = [[TTAlertConfig alloc] init]; + NSString * highlight = YMLocalizedString(@"XPMineGuildViewController9"); + NSString * message = [NSString stringWithFormat:YMLocalizedString(@"XPMineGuildViewController10"), highlight]; + config.message = message; + TTAlertMessageAttributedConfig * attribute = [[TTAlertMessageAttributedConfig alloc] init]; + attribute.text = highlight; + attribute.color = [DJDKMIMOMColor appMainColor]; + config.messageAttributedConfig = @[attribute]; + [TTPopup alertWithConfig:config confirmHandler:^{ + [self.presenter quitGuildRoom]; + } cancelHandler:^{ + + }]; +} + +- (void)editButtonAction:(UIButton *)sender { + if (self.clanDetailInfo.hall && self.clanDetailInfo.hall.hallId.length > 0) { + XPMineGuildSetNameViewController * setNameVC = [[XPMineGuildSetNameViewController alloc] init]; + setNameVC.roomName = self.clanDetailInfo.hall.hallName; + setNameVC.hallId = self.clanDetailInfo.hall.hallId; + [self.navigationController pushViewController:setNameVC animated:YES]; + } +} + +- (void)didTapRecognizer { + XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init]; + userInfoVC.uid = self.clanDetailInfo.hall.ownerUid.integerValue; + [self.navigationController pushViewController:userInfoVC animated:YES]; +} +///复制id +-(void)copyNameAction{ + [XNDJTDDLoadingTool showSuccessWithMessage:YMLocalizedString(@"XPMineUserInfoHeaderView3")]; + UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; + pasteboard.string = self.clanDetailInfo.hall.ownerErbanNo; +} + +///设置申请bug +-(void)setApplyBut:(int)status{ + UIButton *addRoomBtn = (UIButton *)[self.addRoomView viewWithTag:200001]; + switch (status) { + case 0: + { + self.addRoomView.hidden = YES; + break; + } + case 1: + { + [addRoomBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + addRoomBtn.backgroundColor = [UIColor clearColor]; + NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; + UIImage *iconImage = [UIImage imageNamed:@"mine_guild_add_room"]; + attachment.bounds = CGRectMake(0, roundf(addRoomBtn.titleLabel.font.capHeight - kGetScaleWidth(12))/2.f, kGetScaleWidth(12), kGetScaleWidth(12)); + attachment.image = iconImage; + NSMutableAttributedString *textAtt = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@" %@",YMLocalizedString(@"XPMineClanViewController2")] attributes:@{NSForegroundColorAttributeName:[UIColor whiteColor],NSFontAttributeName:[UIFont systemFontOfSize:16]}]; + [textAtt insertAttributedString:[NSMutableAttributedString attributedStringWithAttachment:attachment] atIndex:0]; + [addRoomBtn setAttributedTitle:textAtt forState:UIControlStateNormal]; + + + self.addRoomView.hidden = NO; + break; + } + case 2: + { + addRoomBtn.backgroundColor = UIColorFromRGB(0xE6E6F0); + [addRoomBtn setBackgroundImage:nil forState:UIControlStateNormal]; + NSMutableAttributedString *textAtt = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@" %@",YMLocalizedString(@"XPMineGuildListCell5")] attributes:@{NSForegroundColorAttributeName:UIColorFromRGB(0xB3B3C3),NSFontAttributeName:[UIFont systemFontOfSize:16]}]; + [addRoomBtn setAttributedTitle:textAtt forState:UIControlStateNormal]; + + + self.addRoomView.hidden = NO; + break; + } + case 3: + { + addRoomBtn.backgroundColor = UIColorFromRGB(0xFFBC51); + [addRoomBtn setBackgroundImage:nil forState:UIControlStateNormal]; + NSMutableAttributedString *textAtt = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@" %@",YMLocalizedString(@"XPMineGuildListCell6")] attributes:@{NSForegroundColorAttributeName:[UIColor whiteColor],NSFontAttributeName:[UIFont systemFontOfSize:16]}]; + [addRoomBtn setAttributedTitle:textAtt forState:UIControlStateNormal]; + self.addRoomView.hidden = NO; + break; + } + default: + break; + } +} +#pragma mark - Getters And Setters + +- (UIView *)navView { + if (!_navView) { + _navView = [[UIView alloc] init]; + _navView.backgroundColor = [UIColor clearColor]; + } + return _navView; +} + +- (UIButton *)backButton { + if (!_backButton) { + _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_backButton setImage:[UIImage imageNamed:@"home_search_white_back"] forState:UIControlStateNormal]; + [_backButton setImage:[UIImage imageNamed:@"home_search_white_back"] forState:UIControlStateSelected]; + [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _backButton; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.font = [UIFont systemFontOfSize:17]; + _titleLabel.textColor = [UIColor whiteColor]; + } + return _titleLabel; +} + +- (UIStackView *)rightStackView { + if (!_rightStackView) { + _rightStackView = [[UIStackView alloc] init]; + _rightStackView.axis = UILayoutConstraintAxisHorizontal; + _rightStackView.distribution = UIStackViewDistributionFill; + _rightStackView.alignment = UIStackViewAlignmentCenter; + _rightStackView.spacing = 0; + } + return _rightStackView; +} + +- (UIButton *)exitButton { + if (!_exitButton) { + _exitButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_exitButton setTitle:YMLocalizedString(@"XPMineGuildViewController11") forState:UIControlStateNormal]; + [_exitButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _exitButton.titleLabel.font = [UIFont systemFontOfSize:16]; + _exitButton.hidden = YES; + [_exitButton addTarget:self action:@selector(exitButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _exitButton; +} + +- (UIButton *)editButton { + if (!_editButton) { + _editButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_editButton setImage:[UIImage imageNamed:@"mine_guild_guild_edit"] forState:UIControlStateNormal]; + [_editButton setImage:[UIImage imageNamed:@"mine_guild_guild_edit"] forState:UIControlStateSelected]; + [_editButton addTarget:self action:@selector(editButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _editButton.hidden = YES; + } + return _editButton; +} + +- (UIView *)headerView { + if (!_headerView) { + _headerView = [[UIView alloc] init]; + _headerView.backgroundColor = [UIColor clearColor]; + } + return _headerView; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 70/2; + _avatarImageView.userInteractionEnabled = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapRecognizer)]; + [_avatarImageView addGestureRecognizer:tap]; + } + return _avatarImageView; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.font = [UIFont systemFontOfSize:13]; + _idLabel.textColor = [UIColor whiteColor]; + _idLabel.textAlignment = NSTextAlignmentCenter; + _idLabel.userInteractionEnabled = YES; + UILongPressGestureRecognizer *longPress = [[ UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(copyNameAction)]; + longPress.minimumPressDuration = 1; + [_idLabel addGestureRecognizer:longPress]; + } + return _idLabel; +} + +- (NetImageView *)backImageView { + if (!_backImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + _backImageView = [[NetImageView alloc] initWithConfig:config]; + _backImageView.contentMode = UIViewContentModeScaleAspectFill; + _backImageView.layer.masksToBounds = YES; + _backImageView.userInteractionEnabled = YES; + } + return _backImageView; +} + +- (UIImageView *)shadowImageView { + if (!_shadowImageView) { + _shadowImageView = [[UIImageView alloc] init]; + _shadowImageView.userInteractionEnabled = YES; + _shadowImageView.image = [UIImage imageNamed:@"mine_guild_guild_header_bg"]; + } + return _shadowImageView; +} + + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; + _tableView.delegate = self; + _tableView.dataSource = self; + UIView * footView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, kGetScaleWidth(98))]; + footView.backgroundColor = [UIColor clearColor]; + _tableView.tableFooterView = footView; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + _tableView.showsVerticalScrollIndicator = NO; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPClanMemberTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPClanMemberTableViewCell class])]; + } + return _tableView; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + +- (TTActionSheetConfig *)addMemberItem { + if (!_addMemberItem) { + _addMemberItem = [[TTActionSheetConfig alloc] init]; + _addMemberItem.titleColor = [DJDKMIMOMColor alertTitleColor]; + } + return _addMemberItem; +} + +- (TTActionSheetConfig *)removeMemberItem { + if (!_removeMemberItem) { + _removeMemberItem = [[TTActionSheetConfig alloc] init]; + _removeMemberItem.titleColor = [DJDKMIMOMColor alertTitleColor]; + } + return _removeMemberItem; +} + +- (TTActionSheetConfig *)memberIncomeItem { + if (!_memberIncomeItem) { + _memberIncomeItem = [[TTActionSheetConfig alloc] init]; + _memberIncomeItem.titleColor = [DJDKMIMOMColor alertTitleColor]; + } + return _memberIncomeItem; +} + +- (TTActionSheetConfig *)singleIncomeItem { + if (!_singleIncomeItem) { + _singleIncomeItem = [[TTActionSheetConfig alloc] init]; + _singleIncomeItem.titleColor = [DJDKMIMOMColor alertTitleColor]; + } + return _singleIncomeItem; +} +-(TTActionSheetConfig *)addGuildItem{ + if (!_addGuildItem){ + _addGuildItem = [[TTActionSheetConfig alloc] init]; + _addGuildItem.titleColor = [DJDKMIMOMColor alertTitleColor]; + } + return _addGuildItem; +} +- (TTActionSheetConfig *)managerSetItem { + if (!_managerSetItem) { + _managerSetItem = [[TTActionSheetConfig alloc] init]; + _managerSetItem.titleColor = [DJDKMIMOMColor alertTitleColor]; + } + return _managerSetItem; +} +- (UIView *)addRoomView{ + if (!_addRoomView){ + _addRoomView = [UIView new]; + _addRoomView.backgroundColor = [UIColor clearColor]; + _addRoomView.hidden = YES; + UIButton *addRoomBtn = [UIButton new]; + addRoomBtn.tag = 200001; + addRoomBtn.titleLabel.font = [UIFont systemFontOfSize:16]; + UIImage *image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientMiddleColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(345, 46)]; + [addRoomBtn addTarget:self action:@selector(addRoomAction) forControlEvents:UIControlEventTouchUpInside]; + [addRoomBtn setBackgroundImage:image forState:UIControlStateNormal]; + addRoomBtn.layer.cornerRadius = kGetScaleWidth(23); + addRoomBtn.layer.masksToBounds = YES; + NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; + UIImage *iconImage = [UIImage imageNamed:@"mine_guild_add_room"]; + attachment.bounds = CGRectMake(0, roundf(addRoomBtn.titleLabel.font.capHeight - kGetScaleWidth(12))/2.f, kGetScaleWidth(12), kGetScaleWidth(12)); + attachment.image = iconImage; + NSMutableAttributedString *textAtt = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@" %@",YMLocalizedString(@"XPMineClanViewController2")] attributes:@{NSForegroundColorAttributeName:[UIColor whiteColor],NSFontAttributeName:[UIFont systemFontOfSize:16]}]; + [textAtt insertAttributedString:[NSMutableAttributedString attributedStringWithAttachment:attachment] atIndex:0]; + [addRoomBtn setAttributedTitle:textAtt forState:UIControlStateNormal]; + [_addRoomView addSubview:addRoomBtn]; + [addRoomBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-kGetScaleWidth(58)); + make.left.mas_equalTo(kGetScaleWidth(58)); + make.top.mas_equalTo(kGetScaleWidth(9)); + make.height.mas_equalTo(kGetScaleWidth(46)); + }]; + + } + return _addRoomView; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/XPMineMainGuildListVC.h b/YuMi/Modules/YMMine/View/Guild/View/XPMineMainGuildListVC.h new file mode 100644 index 00000000..9ecafe34 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/XPMineMainGuildListVC.h @@ -0,0 +1,18 @@ +// +// XPMineMainGuildListVC.h +// YuMi +// +// Created by YuMi on 2022/11/3. +// + +#import +#import +#import +#import "MvpViewController.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineMainGuildListVC : MvpViewController +@property (nonatomic,assign) BOOL isFromHall; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/XPMineMainGuildListVC.m b/YuMi/Modules/YMMine/View/Guild/View/XPMineMainGuildListVC.m new file mode 100644 index 00000000..6b338951 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Guild/View/XPMineMainGuildListVC.m @@ -0,0 +1,153 @@ +// +// XPMineMainGuildListVC.m +// YuMi +// +// Created by YuMi on 2022/11/3. +// +#import +#import +#import +#import "XPMineMainGuildListVC.h" +#import "XPMineGuildListVC.h" +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "YUMIMacroUitls.h" +///Third +#import +@interface XPMineMainGuildListVC() +@property (nonatomic, strong) JXCategoryTitleView *titleView; +@property (nonatomic, strong) JXCategoryIndicatorImageView *lineView; +@property (nonatomic, strong) JXPagerView *pagingView; +@property (nonatomic,strong) UIView *headView; +@property (nonatomic, strong) NSArray *titles; +//公会 +@property (nonatomic,strong) XPMineGuildListVC *gulidVC; +//房间 +@property (nonatomic,strong) XPMineGuildListVC *roomVC; +@end + +@implementation XPMineMainGuildListVC + + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + +} +#pragma mark - Private Method +- (void)initSubViews { + self.view.backgroundColor = [UIColor whiteColor]; + self.title = YMLocalizedString(@"XPMineGuildListVC0"); + self.headView = [UIView new]; + [self.view addSubview:self.pagingView]; + +} +- (void)initSubViewConstraints { + [self.pagingView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.view); + }]; +} + +#pragma mark - JXCategoryViewDelegate +- (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView { + return 0; +} +- (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView { + return self.headView; +} +- (NSUInteger)heightForPinSectionHeaderInPagerView:(JXPagerView *)pagerView { + return kGetScaleWidth(44); +} + +- (UIView *)viewForPinSectionHeaderInPagerView:(JXPagerView *)pagerView { + return self.titleView; +} + +- (NSInteger)numberOfListsInPagerView:(JXPagerView *)pagerView { + return self.titles.count; +} + + +- (id)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index { + UIViewController *viewController; + if (index == 0) { + return self.gulidVC; + } else{ + return self.roomVC; + } + + + return (id )viewController; +} +#pragma mark - 懒加载 +- (NSArray *)titles { + if (!_titles) { + _titles = @[YMLocalizedString(@"XPMineMainGuildListVC0"), YMLocalizedString(@"XPMineMainGuildListVC1")]; + } + return _titles; +} + +- (JXCategoryTitleView *)titleView { + if (!_titleView) { + _titleView = [[JXCategoryTitleView alloc] init]; + _titleView.delegate = self; + _titleView.backgroundColor = [UIColor clearColor]; + _titleView.titleColor = UIColorFromRGB(0x6D6B89); + _titleView.titleSelectedColor = UIColorFromRGB(0x1F1A4E); + _titleView.titleFont = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + _titleView.titleSelectedFont = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; + _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; + _titleView.defaultSelectedIndex = 0; + _titleView.averageCellSpacingEnabled = NO; + + _titleView.cellWidth = KScreenWidth / 2 - 20 ; + _titleView.contentEdgeInsetLeft = 0; + _titleView.contentEdgeInsetRight = 0; + _titleView.titles = self.titles; + _titleView.listContainer = (id)self.pagingView.listContainerView; + + JXCategoryIndicatorImageView *lineView = [[JXCategoryIndicatorImageView alloc] init]; + lineView.indicatorImageViewSize = CGSizeMake(16, 3); + lineView.verticalMargin = 10; + lineView.indicatorImageView.image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientMiddleColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(16, 3)]; + lineView.indicatorImageView.layer.masksToBounds = YES; + lineView.indicatorImageView.layer.cornerRadius = 1.5; + _titleView.indicators = @[lineView]; + } + return _titleView; +} + +- (JXPagerView *)pagingView { + if (!_pagingView) { + _pagingView = [[JXPagerView alloc] initWithDelegate:self listContainerType:0]; + _pagingView.backgroundColor = [UIColor clearColor]; + _pagingView.listContainerView.backgroundColor = [UIColor clearColor]; + _pagingView.mainTableView.backgroundColor = [UIColor clearColor]; + _pagingView.listContainerView.listCellBackgroundColor = UIColor.clearColor; + _pagingView.mainTableView.gestureDelegate = self; + _pagingView.pinSectionHeaderVerticalOffset = 0; + + [_pagingView.mainTableView.panGestureRecognizer requireGestureRecognizerToFail:self.navigationController.interactivePopGestureRecognizer]; + } + return _pagingView; +} +-(XPMineGuildListVC *)gulidVC{ + if (!_gulidVC){ + _gulidVC = [[XPMineGuildListVC alloc]init]; + _gulidVC.type = 0; + _gulidVC.isFromHall = self.isFromHall; + } + return _gulidVC; +} +-(XPMineGuildListVC *)roomVC{ + if (!_roomVC){ + _roomVC = [[XPMineGuildListVC alloc]init]; + _roomVC.type = 1; + _roomVC.isFromHall = self.isFromHall; + + } + return _roomVC; +} +@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/YUMIManeCollectiveRegardGovernancer.h b/YuMi/Modules/YMMine/View/Guild/View/YUMIManeCollectiveRegardGovernancer.h deleted file mode 100644 index c074ad05..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/YUMIManeCollectiveRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIManeCollectiveRegardGovernancer.h -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN -@class CollectiveSpecificAbstractMatrix; -@interface YUMIManeCollectiveRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,copy) NSString *uid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/YUMIManeCollectiveRegardGovernancer.m b/YuMi/Modules/YMMine/View/Guild/View/YUMIManeCollectiveRegardGovernancer.m deleted file mode 100644 index d17d4b28..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/YUMIManeCollectiveRegardGovernancer.m +++ /dev/null @@ -1,335 +0,0 @@ -// -// YUMIManeCollectiveRegardGovernancer.m -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import "YUMIManeCollectiveRegardGovernancer.h" -#import -#import - -#import "DJDKMIMOMColor.h" -#import "AccountAbstractStorage.h" -#import "CollectiveSpecificAbstractMatrix.h" -#import "CollectiveComponentSpecificAbstractMatrix.h" -#import "YUMICollectiveComponentTabulationRegardElement.h" -#import "YUMIUnionIntelligencerRegard.h" -#import "YUMICollectiveDivisionRegard.h" -#import "YUMIManeUnionRegardGovernancer.h" -#import "YUMIManeUnionHuntforRegardGovernancer.h" -#import "YUMIManeCollectiveRevenueStatsticsRegardGovernancer.h" -#import "YUMIManeKellegRevenueStatsticsRegardGovernancer.h" -#import "YUMIManeUnionSensationalManagementSetRegardGovernancer.h" -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -#import "YUMIManeMainRevenueStatsticsRegardGovernancer.h" -#import "YUMIManeExchangeAuthorityVC.h" -#import "YUMICollectiveExternalizer.h" -#import "FBCCollectiveCeremony.h" - -@interface YUMIManeCollectiveRegardGovernancer () -@property (nonatomic,strong) YUMIUnionIntelligencerRegard *intelligenceerRegard; -@property (nonatomic,strong) UIView * nevRegard; -@property (nonatomic,strong) UIButton *backButton; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,assign) int page; -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; -@property (nonatomic,strong) CollectiveSpecificAbstractMatrix *collectiveSpecificAbstract; -@property (nonatomic,strong) CollectiveComponentSpecificAbstractMatrix *componentSpecificAbstract; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,strong) YUMICollectiveDivisionRegard *sectionRegard; -@property (nonatomic,assign) BOOL isDemand; -@end - -@implementation YUMIManeCollectiveRegardGovernancer - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (YUMICollectiveExternalizer *)producePresimport { - return [[YUMICollectiveExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self initIntelligencerGrantedTerminalerRrfresh]; -} -#pragma mark - 下拉刷新 -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - - [self intelligenceerRenovtowardseh]; -} - -#pragma mark - 刷新的fangfa -- (void)intelligenceerRenovtowardseh { - self.page = 1; - [self.presimport acquireCollectiveSpecificAbstract:self.uid currentUserUid:[AccountAbstractStorage instance].acquireCid]; - [self.presimport acquireCollectiveComponentSttowardsement:self.uid page:self.page pageSize:20 state:0]; -} - -- (void)footerRenovtowardseh { - if (self.hasNoFurthaerAtoloudspeaker) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineClanViewController0")]; - [self.tableView.mj_footer endRefreshing]; - return; - } - self.page++; - [self.presimport acquireCollectiveComponentSttowardsement:self.uid page:self.page pageSize:20 state:1]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.tableView]; - [self.view addSubview:self.nevRegard]; - [self.nevRegard addSubview:self.backButton]; - [self.nevRegard addSubview:self.titleLabel]; - self.tableView.tableHeaderView = self.intelligenceerRegard; -} - -- (void)initChildLyRestrictions { - [self.nevRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.height.mas_equalTo(kNavigationHeight); - }]; - - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.view); - }]; - - [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.view).mas_offset(10); - make.top.mas_equalTo(statusbarHeight); - make.height.width.mas_equalTo(44); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.nevRegard); - make.centerY.mas_equalTo(self.backButton); - }]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - YUMICollectiveComponentTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMICollectiveComponentTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMICollectiveComponentTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMICollectiveComponentTabulationRegardElement class])]; - } - cell.cellType = ClanMemberTableRegardCellGenre_Normal; - CollectiveComponentAbstractMatrix * componentAbstract = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.isRecent = (self.datasource.count -1) == indexPath.row; - cell.componentAbstract = componentAbstract; - return cell; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 66; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { - return 37; -} - -- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { - if (section == 0 && self.isDemand) { - if (self.sectionRegard == nil) { - YUMICollectiveDivisionRegard * sectionRegard = [[YUMICollectiveDivisionRegard alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 37)]; - sectionRegard.isApexCor = YES; - sectionRegard.delegate = self; - self.sectionRegard = sectionRegard; - } - self.sectionRegard.title = [NSString stringWithFormat:YMLocalizedString(@"YUMI_MineClanViewController1"), self.datasource.count]; - return self.sectionRegard; - } - return [UIView new]; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ - return 0.01f; -} - -- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{ - return [[UIView alloc]init]; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.datasource.count > 0) { - CollectiveComponentAbstractMatrix * componentAbstract = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - YUMIManeConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = componentAbstract.uid.integerValue; - [self.navigationController pushViewController:userInfoVC animated:YES]; - } -} - -#pragma mark - FBCCollectiveSectionRegardRepresendtation -- (void)yUMICollectiveSectionRegard:(YUMICollectiveDivisionRegard *)view didClickSearch:(UIButton *)sender { - YUMIManeUnionHuntforRegardGovernancer * searchVC = [[YUMIManeUnionHuntforRegardGovernancer alloc] init]; - searchVC.modalPresentationStyle = UIModalPresentationOverFullScreen; - searchVC.searchType = UnionSearchGenre_Clan_All_Member; - searchVC.collectiveMaintainrietaryCid = self.collectiveSpecificAbstract.clan.elderUid; - [self.navigationController presentViewController:searchVC animated:YES completion:nil]; -} - -#pragma mark -FBCCollectiveCeremony -- (void)acquireCollectiveSpecificAbstractAccomplishment:(CollectiveSpecificAbstractMatrix *)collectiveSpecificAbstract universalConsumerCollectiveAbstract:(nonnull CollectiveSpecificAbstractMatrix *)universalConsumerCollectiveAbstract{ - if ([universalConsumerCollectiveAbstract.clan.elderUid isEqualToString:collectiveSpecificAbstract.clan.elderUid]) { - self.sectionRegard.isVeiledHuntfor = NO; - } - self.collectiveSpecificAbstract = collectiveSpecificAbstract; - self.intelligenceerRegard.collectiveAbstract = collectiveSpecificAbstract; - self.titleLabel.text = collectiveSpecificAbstract.clan.name; - [self.presimport acquireCollectiveChamberSttowardsement:collectiveSpecificAbstract.clan.cid]; -} - -- (void)acquireCollectiveComponentSttowardsementAccomplishment:(CollectiveComponentSpecificAbstractMatrix *)componentAbstract state:(int)state { - self.isDemand = YES; - if (state == 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - [self.datasource removeAllObjects]; - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } - - if (componentAbstract.members.count > 0) { - [self.datasource addObjectsFromArray:componentAbstract.members]; - } else { - self.hasNoFurthaerAtoloudspeaker = YES; - } - [self.tableView reloadData]; -} - -- (void)acquireCollectiveChamberSttowardsementAccomplishment:(NSArray *)array { - self.intelligenceerRegard.collectiveChamberStatement = array; -} - -#pragma mark - FBCUnionIntelligencerRegardRepresendtation -- (void)yUMIUnionIntelligencerRegard:(YUMIUnionIntelligencerRegard *)view dicSelectGuild:(UnionAbstractMatrix *)guildInfo { - YUMIManeUnionRegardGovernancer * guildVC = [[YUMIManeUnionRegardGovernancer alloc] init]; - guildVC.ownerUid = guildInfo.ownerUid; - guildVC.instituteId = guildInfo.hallId; - [self.navigationController pushViewController:guildVC animated:YES]; -} - -- (void)yUMIUnionIntelligencerRegard:(YUMIUnionIntelligencerRegard *)view dicSelectOwner:(CollectiveSpecificAbstractMatrix *)guildInfo { - YUMIManeConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = guildInfo.clan.elderUid.integerValue; - [self.navigationController pushViewController:userInfoVC animated:YES]; -} - -- (void)yUMIUnionIntelligencerRegard:(YUMIUnionIntelligencerRegard *)view dicTapMenuItem:(UnionHeaderParrotGenre)menuType { - switch (menuType) { - case UnionHeaderParrotGenre_Hall_Income: - { - YUMIManeMainRevenueStatsticsRegardGovernancer * collectiveRevenueVewC = [[YUMIManeMainRevenueStatsticsRegardGovernancer alloc] init]; - collectiveRevenueVewC.clanId = self.collectiveSpecificAbstract.clan.cid; - [self.navigationController pushViewController:collectiveRevenueVewC animated:YES]; - } - break; - case UnionHeaderParrotGenre_Exchange_Authority: - { - YUMIManeExchangeAuthorityVC* collectiveRevenueVewC = [[YUMIManeExchangeAuthorityVC alloc] init]; - [self.navigationController pushViewController:collectiveRevenueVewC animated:YES]; - } - break; - case UnionHeaderParrotGenre_Super_Admin: - { - YUMIManeUnionSensationalManagementSetRegardGovernancer * superAdminVC = [[YUMIManeUnionSensationalManagementSetRegardGovernancer alloc] init]; - superAdminVC.clanId = self.collectiveSpecificAbstract.clan.cid; - [self.navigationController pushViewController:superAdminVC animated:YES]; - } - break; - default: - break; - } -} - -#pragma mark - Event Response -- (void)encourageBtutonPerformance:(UIButton *)sender { - [self.navigationController popViewControllerAnimated:YES]; -} - -#pragma mark - Getters And Setters -- (UIView *)nevRegard { - if (!_nevRegard) { - _nevRegard = [[UIView alloc] init]; - _nevRegard.backgroundColor = [UIColor clearColor]; - } - return _nevRegard; -} - -- (UIButton *)backButton { - if (!_backButton) { - _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backButton setImage:[UIImage imageNamed:@"yumi_main_search_white_back"] forState:UIControlStateNormal]; - [_backButton setImage:[UIImage imageNamed:@"yumi_main_search_white_back"] forState:UIControlStateSelected]; - [_backButton addTarget:self action:@selector(encourageBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _backButton; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.font = [UIFont systemFontOfSize:17]; - _titleLabel.textColor = [UIColor whiteColor]; - } - return _titleLabel; -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - UIView *footView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 20)]; - footView.backgroundColor = [UIColor clearColor]; - _tableView.tableFooterView = footView; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - _tableView.showsVerticalScrollIndicator = NO; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMICollectiveComponentTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMICollectiveComponentTabulationRegardElement class])]; - } - return _tableView; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - -- (YUMIUnionIntelligencerRegard *)intelligenceerRegard { - if (!_intelligenceerRegard) { - _intelligenceerRegard = [[YUMIUnionIntelligencerRegard alloc] init]; - _intelligenceerRegard.delegate = self; - } - return _intelligenceerRegard; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/YUMIManeExchangeAuthorityVC.h b/YuMi/Modules/YMMine/View/Guild/View/YUMIManeExchangeAuthorityVC.h deleted file mode 100644 index dbf84f4f..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/YUMIManeExchangeAuthorityVC.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIManeExchangeAuthorityVC.h -// YuMi -// -// Created by YuMi on 2023/2/13. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeExchangeAuthorityVC : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/YUMIManeExchangeAuthorityVC.m b/YuMi/Modules/YMMine/View/Guild/View/YUMIManeExchangeAuthorityVC.m deleted file mode 100644 index 3c966c2c..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/YUMIManeExchangeAuthorityVC.m +++ /dev/null @@ -1,163 +0,0 @@ -// -// YUMIManeExchangeAuthorityVC.m -// YuMi -// -// Created by YuMi on 2023/2/13. -// - -#import "YUMIManeExchangeAuthorityVC.h" -#import "YUMIManeExchangeAuthorityElement.h" -#import "YUMIManeExchangeAuthorityFooderRegard.h" -#import "YUMIManeExchangeAuthorityIntelligenceRegard.h" -#import "YUMIManePromptWindow.h" -#import "MKJPopup.h" -#import "DJDKMIMOMColor.h" -#import "YUMIManeExchangeAuthorityMatrix.h" -#import "YUMICollectiveExternalizer.h" -#import "FBCCollectiveCeremony.h" -@interface YUMIManeExchangeAuthorityVC () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *dataList; -@end - -@implementation YUMIManeExchangeAuthorityVC -- (YUMICollectiveExternalizer *)producePresimport { - return [[YUMICollectiveExternalizer alloc] init]; -} -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self.presimport acquireCollectiveChamberComponentTowardstesttowardsionoritySttowardsement]; - -} -#pragma mark - Private Method -- (void)initSubViews { - self.dataList = [NSMutableArray array]; - self.title = YMLocalizedString(@"YUMI_MineExchangeAuthorityVC0"); - [self.view addSubview:self.tableView]; -} -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.view); - }]; -} -#pragma mark -获取房主兑换权限列表 --(void)acquireCollectiveChamberComponentTowardstesttowardsionoritySttowardsementAccomplishment:(NSArray *)list{ - NSMutableArray *openList = [NSMutableArray array]; - NSMutableArray *closeList = [NSMutableArray array]; - for (YUMIManeExchangeAuthorityMatrix *model in list) { - if(model.exchangeAuthStatus == 0){ - [openList addObject:model]; - }else{ - [closeList addObject:model]; - } - } - NSArray * getOpenList = [openList sortedArrayUsingComparator:^NSComparisonResult(YUMIManeExchangeAuthorityMatrix * obj1, YUMIManeExchangeAuthorityMatrix * obj2) { - NSComparisonResult result = obj1.golds < obj2.golds; - return result; - }]; - NSArray *getcloseList = [closeList sortedArrayUsingComparator:^NSComparisonResult(YUMIManeExchangeAuthorityMatrix * obj1, YUMIManeExchangeAuthorityMatrix * obj2) { - NSComparisonResult result = obj1.golds < obj2.golds; - return result; - }]; - [self.dataList addObject:[getOpenList mutableCopy]]; - [self.dataList addObject:[getcloseList mutableCopy]]; - [self.tableView reloadData]; -} -- (void)acquireExdiversifictowardsionTowardstesttowardsionorityConsequentAccomplishment:(YUMIManeExchangeAuthorityMatrix *)model status:(NSString *)status{ - [self EvidenceAccomplishmentToast:status.intValue == 0 ? YMLocalizedString(@"YUMI_MineExchangeAuthorityVC3"):YMLocalizedString(@"YUMI_MineExchangeAuthorityVC4") ]; - NSMutableArray *openList = self.dataList.firstObject; - NSMutableArray *closeList = self.dataList.lastObject; - model.exchangeAuthStatus = status.intValue; - if([status isEqualToString:@"1"]){ - [closeList addObject:model]; - [openList removeObject:model]; - }else{ - [closeList removeObject:model]; - [openList addObject:model]; - } - NSArray *getOpenList = [openList sortedArrayUsingComparator:^NSComparisonResult(YUMIManeExchangeAuthorityMatrix * obj1, YUMIManeExchangeAuthorityMatrix * obj2) { - NSComparisonResult result = obj1.golds < obj2.golds; - return result; - }]; - - NSArray *getcloseList = [closeList sortedArrayUsingComparator:^NSComparisonResult(YUMIManeExchangeAuthorityMatrix * obj1, YUMIManeExchangeAuthorityMatrix * obj2) { - NSComparisonResult result = obj1.golds < obj2.golds; - return result; - }]; - self.dataList[0] = [getOpenList mutableCopy]; - self.dataList[1] = [getcloseList mutableCopy]; - [self.tableView reloadData]; -} - -#pragma mark -FBCManeExchangeAuthorityElementRepresendtation --(void)unfoildExdiversifictowardsionTowardstesttowardsionoritySwiftPosition:(NSString *)status model:(YUMIManeExchangeAuthorityMatrix *)model{ - if([status isEqualToString:@"0"]){ - YUMIManePromptWindow *window = [[YUMIManePromptWindow alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; - window.name = model.nick; - @kWeakify(self); - window.acknowledgementHandler = ^(){ - @kStrongify(self); - [self.presimport masterDisableRrEnablecomponentExdiversifictowardsionRights:status targetUid:model.uid model:model]; - }; - [MKJPopup popupRegard:window style:MKJPopupStyleAlert]; - return; - } - [self.presimport masterDisableRrEnablecomponentExdiversifictowardsionRights:status targetUid:model.uid model:model]; -} -#pragma mark -UITableViewDelegate,UITableViewDataSource --(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ - return self.dataList.count; -} -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ - return [self.dataList[section]count]; -} --(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ - YUMIManeExchangeAuthorityElement *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeExchangeAuthorityElement class]) forIndexPath:indexPath]; - if(indexPath.section < self.dataList.count){ - if(indexPath.row < [self.dataList[indexPath.section]count]){ - YUMIManeExchangeAuthorityMatrix *model = self.dataList[indexPath.section][indexPath.row]; - cell.attestationorityMatrix = model; - } - } - cell.delegate = self; - return cell; -} --(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ - return kGetScaleWidth(32); -} --(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ - return kGetScaleWidth(45); -} --(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{ - - YUMIManeExchangeAuthorityIntelligenceRegard *intelligenceerRegard = [tableView dequeueReusableHeaderFooterViewWithIdentifier:NSStringFromClass([YUMIManeExchangeAuthorityIntelligenceRegard class])]; - intelligenceerRegard.title = section == 0 ? YMLocalizedString(@"YUMI_MineExchangeAuthorityVC1"):YMLocalizedString(@"YUMI_MineExchangeAuthorityVC2"); - return intelligenceerRegard; -} -- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{ - YUMIManeExchangeAuthorityFooderRegard *fooderView = [tableView dequeueReusableHeaderFooterViewWithIdentifier:NSStringFromClass([YUMIManeExchangeAuthorityFooderRegard class])]; - fooderView.title = section == 0 ? YMLocalizedString(@"YUMI_MineExchangeAuthorityFooderView0"):YMLocalizedString(@"YUMI_MineExchangeAuthorityFooderView1"); - return fooderView; -} -#pragma mark -懒加载 -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = UIColorFromRGB(0xF3F5FA); - _tableView.rowHeight = kGetScaleWidth(80); - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIManeExchangeAuthorityIntelligenceRegard class] forHeaderFooterViewReuseIdentifier:NSStringFromClass([YUMIManeExchangeAuthorityIntelligenceRegard class])]; - [_tableView registerClass:[YUMIManeExchangeAuthorityFooderRegard class] forHeaderFooterViewReuseIdentifier:NSStringFromClass([YUMIManeExchangeAuthorityFooderRegard class])]; - [_tableView registerClass:[YUMIManeExchangeAuthorityElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeExchangeAuthorityElement class])]; - } - return _tableView; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/YUMIManeMainUnionStatementVC.h b/YuMi/Modules/YMMine/View/Guild/View/YUMIManeMainUnionStatementVC.h deleted file mode 100644 index 6e3dfc66..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/YUMIManeMainUnionStatementVC.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YUMIManeMainUnionStatementVC.h -// YuMi -// -// Created by YuMi on 2022/11/3. -// - -#import -#import -#import -#import "MvpRegardGovernancer.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeMainUnionStatementVC : MvpRegardGovernancer -@property (nonatomic,assign) BOOL isFromCorridor; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/YUMIManeMainUnionStatementVC.m b/YuMi/Modules/YMMine/View/Guild/View/YUMIManeMainUnionStatementVC.m deleted file mode 100644 index 5263ef79..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/YUMIManeMainUnionStatementVC.m +++ /dev/null @@ -1,150 +0,0 @@ -// -// YUMIManeMainUnionStatementVC.m -// YuMi -// -// Created by YuMi on 2022/11/3. -// -#import -#import -#import -#import "YUMIManeMainUnionStatementVC.h" -#import "YUMIManeUnionStatementVC.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "YUMIMacroUitls.h" -#import -@interface YUMIManeMainUnionStatementVC() -@property (nonatomic, strong) JXCategoryTitleView *titleView; -@property (nonatomic, strong) JXCategoryIndicatorImageView *burlywoodRegard; -@property (nonatomic, strong) JXPagerView *pagingRegard; -@property (nonatomic,strong) UIView *intelligenceRegard; -@property (nonatomic, strong) NSArray *titles; -@property (nonatomic,strong) YUMIManeUnionStatementVC *gulidVewC; -@property (nonatomic,strong) YUMIManeUnionStatementVC *chamberVewC; -@end - -@implementation YUMIManeMainUnionStatementVC - - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - -} -#pragma mark - Private Method -- (void)initSubViews { - self.view.backgroundColor = [UIColor whiteColor]; - self.title = YMLocalizedString(@"YUMI_MineGuildListVC0"); - self.intelligenceRegard = [UIView new]; - [self.view addSubview:self.pagingRegard]; - -} -- (void)initChildLyRestrictions { - [self.pagingRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.view); - }]; -} - -#pragma mark - JXCategoryViewDelegate -- (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView { - return 0; -} -- (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView { - return self.intelligenceRegard; -} -- (NSUInteger)heightForPinSectionHeaderInPagerView:(JXPagerView *)pagerView { - return kGetScaleWidth(44); -} - -- (UIView *)viewForPinSectionHeaderInPagerView:(JXPagerView *)pagerView { - return self.titleView; -} - -- (NSInteger)numberOfListsInPagerView:(JXPagerView *)pagerView { - return self.titles.count; -} - - -- (id)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index { - UIViewController *viewController; - if (index == 0) { - return self.gulidVewC; - } else{ - return self.chamberVewC; - } - - - return (id )viewController; -} -#pragma mark - 懒加载 -- (NSArray *)titles { - if (!_titles) { - _titles = @[YMLocalizedString(@"YUMI_MineMainGuildListVC0"), YMLocalizedString(@"YUMI_MineMainGuildListVC1")]; - } - return _titles; -} - -- (JXCategoryTitleView *)titleView { - if (!_titleView) { - _titleView = [[JXCategoryTitleView alloc] init]; - _titleView.delegate = self; - _titleView.backgroundColor = [UIColor clearColor]; - _titleView.titleColor = UIColorFromRGB(0x6D6B89); - _titleView.titleSelectedColor = UIColorFromRGB(0x1F1A4E); - _titleView.titleFont = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - _titleView.titleSelectedFont = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; - _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; - _titleView.defaultSelectedIndex = 0; - _titleView.averageCellSpacingEnabled = NO; - - _titleView.cellWidth = KScreenWidth / 2 - 20 ; - _titleView.contentEdgeInsetLeft = 0; - _titleView.contentEdgeInsetRight = 0; - _titleView.titles = self.titles; - _titleView.listContainer = (id)self.pagingRegard.listContainerView; - - JXCategoryIndicatorImageView *burlywoodRegard = [[JXCategoryIndicatorImageView alloc] init]; - burlywoodRegard.indicatorImageViewSize = CGSizeMake(16, 3); - burlywoodRegard.verticalMargin = 10; - burlywoodRegard.indicatorImageView.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityMiddlePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(16, 3)]; - burlywoodRegard.indicatorImageView.layer.masksToBounds = YES; - burlywoodRegard.indicatorImageView.layer.cornerRadius = 1.5; - _titleView.indicators = @[burlywoodRegard]; - } - return _titleView; -} - -- (JXPagerView *)pagingRegard { - if (!_pagingRegard) { - _pagingRegard = [[JXPagerView alloc] initWithDelegate:self listContainerType:0]; - _pagingRegard.backgroundColor = [UIColor clearColor]; - _pagingRegard.listContainerView.backgroundColor = [UIColor clearColor]; - _pagingRegard.mainTableView.backgroundColor = [UIColor clearColor]; - _pagingRegard.listContainerView.listCellBackgroundColor = UIColor.clearColor; - _pagingRegard.mainTableView.gestureDelegate = self; - _pagingRegard.pinSectionHeaderVerticalOffset = 0; - - [_pagingRegard.mainTableView.panGestureRecognizer requireGestureRecognizerToFail:self.navigationController.interactivePopGestureRecognizer]; - } - return _pagingRegard; -} --(YUMIManeUnionStatementVC *)gulidVewC{ - if (!_gulidVewC){ - _gulidVewC = [[YUMIManeUnionStatementVC alloc]init]; - _gulidVewC.type = 0; - _gulidVewC.isFromCorridor = self.isFromCorridor; - } - return _gulidVewC; -} --(YUMIManeUnionStatementVC *)chamberVewC{ - if (!_chamberVewC){ - _chamberVewC = [[YUMIManeUnionStatementVC alloc]init]; - _chamberVewC.type = 1; - _chamberVewC.isFromCorridor = self.isFromCorridor; - - } - return _chamberVewC; -} -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/YUMIManeUnionHuntforRegardGovernancer.h b/YuMi/Modules/YMMine/View/Guild/View/YUMIManeUnionHuntforRegardGovernancer.h deleted file mode 100644 index 43af5baf..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/YUMIManeUnionHuntforRegardGovernancer.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// YUMIManeUnionHuntforRegardGovernancer.h -// YuMi -// -// Created by YuMi on 2022/4/7. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN -@class YUMIManeUnionHuntforRegardGovernancer, CollectiveComponentAbstractMatrix, UnionHuntforConsumerAbstractMatrix, UnionHuntforSensationalManagementMatrix; -typedef NS_ENUM(NSInteger, UnionSearchGenre) { - UnionSearchGenre_Clan_All_Member = 1, - - UnionSearchGenre_Guild_Add_Member, - - UnionSearchGenre_Clan_Add_Super_Admin, -}; - -@protocol FBCManeUnionHuntforRegardGovernancerRepresendtation -@optional -- (void)fBCManeUnionHuntforRegardGovernancer:(YUMIManeUnionHuntforRegardGovernancer *)viewController chooseUserInfo:(CollectiveComponentAbstractMatrix *)componentAbstract; -- (void)fBCManeUnionHuntforRegardGovernancer:(YUMIManeUnionHuntforRegardGovernancer *)viewController inviteUserInfo:(UnionHuntforConsumerAbstractMatrix *)userInfo; -- (void)fBCManeUnionHuntforRegardGovernancer:(YUMIManeUnionHuntforRegardGovernancer *)viewController superAdminInfo:(UnionHuntforSensationalManagementMatrix *)superAdminInfo; -@end - -@interface YUMIManeUnionHuntforRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,weak) id delegate; -@property (nonatomic,copy) NSString *collectiveMaintainrietaryCid; -@property (nonatomic,assign) UnionSearchGenre searchType; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/YUMIManeUnionHuntforRegardGovernancer.m b/YuMi/Modules/YMMine/View/Guild/View/YUMIManeUnionHuntforRegardGovernancer.m deleted file mode 100644 index 6c63a592..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/YUMIManeUnionHuntforRegardGovernancer.m +++ /dev/null @@ -1,293 +0,0 @@ -// -// YUMIManeUnionHuntforRegardGovernancer.m -// YuMi -// -// Created by YuMi on 2022/4/7. -// - -#import "YUMIManeUnionHuntforRegardGovernancer.h" -#import - -#import "DJDKMIMOMColor.h" -#import "MKJPopup.h" -#import "CollectiveComponentSpecificAbstractMatrix.h" -#import "UnionHuntforConsumerAbstractMatrix.h" -#import "UnionHuntforSensationalManagementMatrix.h" -#import "YUMIUnionHuntforNevRegard.h" -#import "YUMICollectiveComponentTabulationRegardElement.h" -#import "YUMIManeUnionDispossessTabulationRegardElement.h" -#import "YUMIManeUnionHuntforComponentTabulationRegardElement.h" -#import "YUMIUnionHuntforSensationalManagementTabulationRegardElement.h" -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -#import "YUMIManeUnionChooseExecutiveRegardGovernancer.h" -#import "InterlocutionRegardGovernancer.h" -#import "YUMIUnionHuntforExternalizer.h" -#import "FBCUnionHuntforCeremony.h" - - -@interface YUMIManeUnionHuntforRegardGovernancer () -@property (nonatomic,strong) YUMIUnionHuntforNevRegard *nevRegard; -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSArray *datasource; -@end - -@implementation YUMIManeUnionHuntforRegardGovernancer -- (BOOL)isVeiledNevObstacle { - return YES; -} -- (__kindof id)producePresimport { - return [[YUMIUnionHuntforExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; -} -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { - [self.view endEditing:YES]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.nevRegard]; - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.nevRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.height.mas_equalTo(kNavigationHeight); - }]; - - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.top.mas_equalTo(self.nevRegard.mas_bottom); - }]; -} -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - if (self.searchType == UnionSearchGenre_Clan_All_Member) { - return 66; - } else if(self.searchType == UnionSearchGenre_Guild_Add_Member) { - return 80; - } else if(self.searchType == UnionSearchGenre_Clan_Add_Super_Admin) { - return 70; - } - return 0; - } - - return (KScreenHeight - kNavigationHeight); -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0 ) { - if (self.searchType == UnionSearchGenre_Clan_All_Member) { - YUMICollectiveComponentTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMICollectiveComponentTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMICollectiveComponentTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMICollectiveComponentTabulationRegardElement class])]; - } - cell.cellType = ClanMemberTableRegardCellGenre_Normal; - CollectiveComponentAbstractMatrix * componentAbstract = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.componentAbstract = componentAbstract; - return cell; - }else if(self.searchType == UnionSearchGenre_Guild_Add_Member) { - YUMIManeUnionHuntforComponentTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeUnionHuntforComponentTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeUnionHuntforComponentTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeUnionHuntforComponentTabulationRegardElement class])]; - } - cell.delegate = self; - UnionHuntforConsumerAbstractMatrix * userInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.userInfo = userInfo; - return cell; - } else if(self.searchType == UnionSearchGenre_Clan_Add_Super_Admin) { - YUMIUnionHuntforSensationalManagementTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIUnionHuntforSensationalManagementTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIUnionHuntforSensationalManagementTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIUnionHuntforSensationalManagementTabulationRegardElement class])]; - } - cell.delegate = self; - UnionHuntforSensationalManagementMatrix * userInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.userInfo = userInfo; - return cell; - } - } - YUMIManeUnionDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeUnionDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeUnionDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeUnionDispossessTabulationRegardElement class])]; - } - switch (self.searchType) { - case UnionSearchGenre_Clan_All_Member: - cell.emptyTitle = YMLocalizedString(@"YUMI_MineGuildSearchViewController0"); - break; - - default: - break; - } - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.datasource.count > 0) { - switch (self.searchType) { - case UnionSearchGenre_Clan_All_Member: - { - CollectiveComponentAbstractMatrix * componentAbstract = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - YUMIManeConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = componentAbstract.uid.integerValue; - [((UINavigationController *)self.presentingViewController) pushViewController:userInfoVC animated:YES]; - [self dismissViewControllerAnimated:NO completion:nil]; - } - break; - case UnionSearchGenre_Guild_Add_Member: - { - UnionHuntforConsumerAbstractMatrix * userInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - YUMIManeConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = userInfo.uid.integerValue; - [((UINavigationController *)self.presentingViewController) pushViewController:userInfoVC animated:YES]; - [self dismissViewControllerAnimated:NO completion:nil]; - } - break; - default: - break; - } - } -} - -#pragma mark - FBCCollectiveMemberTabulationViweElementRepresendtation -- (void)yUMICollectiveComponentTarbsultowardsionViweElement:(YUMICollectiveComponentTabulationRegardElement *)view didClickUser:(CollectiveComponentAbstractMatrix *)userinfo { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeUnionHuntforRegardGovernancer:chooseUserInfo:)]) { - [self.delegate fBCManeUnionHuntforRegardGovernancer:self chooseUserInfo:userinfo]; - } -} - -#pragma mark - FBCManeUnionHuntforMemberTabulationViweElementRepresendtation -- (void)fBCManeUnionHuntforComponentTarbsultowardsionViweElement:(YUMIManeUnionHuntforComponentTabulationRegardElement *)view didSelectInfo:(UnionHuntforConsumerAbstractMatrix *)userInfo { - if(userInfo.hallBtnStatus == 6){ - InterlocutionRegardGovernancer * sessionVC = [[InterlocutionRegardGovernancer alloc] initWithSession:[NIMSession session:userInfo.hallMessageUid type:NIMSessionTypeP2P]]; - sessionVC.recordId = userInfo.hallRecordId; - [self.navigationController pushViewController:sessionVC animated:YES]; - return; - } - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeUnionHuntforRegardGovernancer:inviteUserInfo:)]) { - [self.delegate fBCManeUnionHuntforRegardGovernancer:self inviteUserInfo:userInfo]; - } -} - -#pragma mark - YUMIUnionHuntforNevRegard -- (void)yUMIUnionHuntforNevRegard:(YUMIUnionHuntforNevRegard *)view didClickBack:(UIButton *)sender { - [self.navigationController popViewControllerAnimated:YES]; -} - -- (void)yUMIUnionHuntforNevRegard:(YUMIUnionHuntforNevRegard *)view didClickSearch:(UIButton *)sender { - NSString * key = view.searchTextField.text; - if (key.length <= 0) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineGuildSearchViewController1")]; - return; - } - switch (self.searchType) { - case UnionSearchGenre_Clan_All_Member: - [self.presimport huntforCollectiveComponentSttowardsement:self.collectiveMaintainrietaryCid key:key]; - break; - case UnionSearchGenre_Guild_Add_Member: - [self.presimport unionAccelertowardseComponentHuntfor:key]; - break; - case UnionSearchGenre_Clan_Add_Super_Admin: - [self.presimport huntforUnionSenstowardsionalManagement:key]; - break; - default: - break; - } -} - -#pragma mark - FBCUnionHuntforSensationalManagementTabulationViweElementRepresendtation -- (void)yUMIUnionHuntforSenstowardsionalManagementTarbsultowardsionViweElement:(YUMIUnionHuntforSensationalManagementTabulationRegardElement *)cell didSelectInfo:(UnionHuntforSensationalManagementMatrix *)userInfo { - if (userInfo && !userInfo.hasSet) { - - NSString * message = [NSString stringWithFormat:YMLocalizedString(@"YUMI_MineGuildSearchViewController2"), userInfo.nick, userInfo.erbanNo]; - MKJPrecautiousDisposition * config =[[MKJPrecautiousDisposition alloc] init]; - config.message = message; - - MKJPrecautiousCommunicationAttributedDisposition * nickAttribute = [[MKJPrecautiousCommunicationAttributedDisposition alloc] init]; - nickAttribute.text = userInfo.nick; - nickAttribute.color = [DJDKMIMOMColor aplictowardsionMainPrettify]; - - MKJPrecautiousCommunicationAttributedDisposition * idAttribute = [[MKJPrecautiousCommunicationAttributedDisposition alloc] init]; - idAttribute.text = userInfo.erbanNo; - idAttribute.color = [DJDKMIMOMColor aplictowardsionMainPrettify]; - config.communicationAttributedDisposition = @[nickAttribute, idAttribute]; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - YUMIManeUnionChooseExecutiveRegardGovernancer * managerRoomVC = [[YUMIManeUnionChooseExecutiveRegardGovernancer alloc] init]; - managerRoomVC.clanId = self.collectiveMaintainrietaryCid; - managerRoomVC.targetUid = userInfo.uid; - [(UINavigationController *)self.presentingViewController pushViewController:managerRoomVC animated:YES]; - [self dismissViewControllerAnimated:YES completion:nil]; - } cancelHandler:^{ - - }]; - } -} - -#pragma mark - FBCUnionHuntforCeremony -- (void)huntforCollectiveComponentSttowardsementAccomplishment:(NSArray *)memberList { - self.datasource = memberList; - [self.tableView reloadData]; -} - -- (void)unionAccelertowardseComponentHuntforAccomplishment:(NSArray *)memberList { - self.datasource = memberList; - [self.tableView reloadData]; -} - -- (void)huntforUnionSenstowardsionalManagementAccomplishment:(NSArray *)memberList { - self.datasource = memberList; - [self.tableView reloadData]; -} - -#pragma mark - Getters And Setters -- (void)setSearchType:(UnionSearchGenre)searchType { - _searchType = searchType; - switch (_searchType) { - case UnionSearchGenre_Clan_Add_Super_Admin: - self.nevRegard.searchTextField.keyboardType = UIKeyboardTypeNumberPad; - self.nevRegard.deparatmentMaintainrietary = YMLocalizedString(@"YUMI_MineGuildSearchViewController3"); - break; - - default: - break; - } -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMICollectiveComponentTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMICollectiveComponentTabulationRegardElement class])]; - [_tableView registerClass:[YUMIManeUnionHuntforComponentTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeUnionHuntforComponentTabulationRegardElement class])]; - [_tableView registerClass:[YUMIUnionHuntforSensationalManagementTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIUnionHuntforSensationalManagementTabulationRegardElement class])]; - } - return _tableView; -} - -- (YUMIUnionHuntforNevRegard *)nevRegard { - if (!_nevRegard) { - _nevRegard = [[YUMIUnionHuntforNevRegard alloc] init]; - _nevRegard.delegate = self; - } - return _nevRegard; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/YUMIManeUnionRegardGovernancer.h b/YuMi/Modules/YMMine/View/Guild/View/YUMIManeUnionRegardGovernancer.h deleted file mode 100644 index 0b55cd6c..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/YUMIManeUnionRegardGovernancer.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YUMIManeUnionRegardGovernancer.h -// YuMi -// -// Created by YuMi on 2022/4/6. -// - -#import "MvpRegardGovernancer.h" -NS_ASSUME_NONNULL_BEGIN -@interface YUMIManeUnionRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,strong) NSString *ownerUid; -@property (nonatomic,strong) NSString *instituteId; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/YUMIManeUnionRegardGovernancer.m b/YuMi/Modules/YMMine/View/Guild/View/YUMIManeUnionRegardGovernancer.m deleted file mode 100644 index 0951b9c2..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/YUMIManeUnionRegardGovernancer.m +++ /dev/null @@ -1,818 +0,0 @@ -// -// YUMIManeUnionRegardGovernancer.m -// YuMi -// -// Created by YuMi on 2022/4/6. -// 公会主页 - -#import "YUMIManeUnionRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "AccountAbstractStorage.h" -#import "MKJPopup.h" -#import "UIImage+Utils.h" -#import "XNDJTBWGLoadingTool.h" -#import "CollectiveSpecificAbstractMatrix.h" -#import "CollectiveComponentSpecificAbstractMatrix.h" -#import "UnionAuthMatrix.h" -#import "UnionHuntforConsumerAbstractMatrix.h" -#import "YUMIManeUnionStatementMatrix.h" -#import "YUMICollectiveComponentTabulationRegardElement.h" -#import "YUMICollectiveDivisionRegard.h" -#import "YUMIManeUnionSetNameRegardGovernancer.h" -#import "YUMIManeUnionHuntforRegardGovernancer.h" -#import "YUMIManeUnionRemoveComponentRegardGovernancer.h" -#import "YUMIManeMangerStatementRegardGovernancer.h" -#import "YUMIManeUnionRevenueStatsticsRegardGovernancer.h" -#import "YUMIManeHallKellegRevenueStatsticsRegardGovernancer.h" -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -#import "YUMIManeMainUnionStatementVC.h" -#import "InterlocutionRegardGovernancer.h" -#import "YUMIUnionExternalizer.h" -#import "FBCUnionCeremony.h" - -UIKIT_EXTERN NSString *kInviteMemeberSuccess; - -@interface YUMIManeUnionRegardGovernancer () -@property (nonatomic,strong) UIView * nevRegard; -@property (nonatomic,strong) UIButton *backButton; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UIStackView *rectifyHierarchyRegard; -@property (nonatomic,strong) UIButton *compileBtuton; -@property (nonatomic,strong) UIButton *exitBtuton; -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) UIView * intelligenceerRegard; -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *idSequencignation; -@property (nonatomic,strong) NetIndicateRegard *encourageIndicateRegard; -@property (nonatomic,strong) UIImageView *spossessowIndicateRegard; -@property (nonatomic,assign) int page; -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,strong) YUMICollectiveDivisionRegard *sectionRegard; -@property (nonatomic,strong) CollectiveSpecificAbstractMatrix *collectiveSpecificAbstract; -@property (nonatomic,strong) CollectiveSpecificAbstractMatrix *universalConsumerCollectiveAbstract; -@property (nonatomic,strong) NSArray *attestationStatement; -@property (nonatomic,strong) NSArray *executiveAttestationStatement; - -@property (nonatomic,strong) MKJActionSheetDisposition *accelerateGuildProvision; - -@property (nonatomic,strong) MKJActionSheetDisposition *accelerateComponentProvision; -@property (nonatomic,strong) MKJActionSheetDisposition *removeComponentProvision; -@property (nonatomic,strong) MKJActionSheetDisposition *componentRevenueProvision; -@property (nonatomic,strong) MKJActionSheetDisposition *singleRevenueProvision; -@property (nonatomic,strong) MKJActionSheetDisposition *executiveSetProvision; -@property (nonatomic,strong) UIView *accelerateChamberRegard; -@property (nonatomic,strong) YUMIManeUnionStatementMatrix *declareMatrix; -@end - -@implementation YUMIManeUnionRegardGovernancer - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (YUMIUnionExternalizer *)producePresimport { - return [[YUMIUnionExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self initIntelligencerGrantedTerminalerRrfresh]; -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - [self intelligenceerRenovtowardseh]; -} -#pragma mark - 下拉刷新 -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; -} - -#pragma mark - 刷新的fangfa -- (void)intelligenceerRenovtowardseh { - if (self.instituteId.length <= 0 || self.ownerUid.length <= 0) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineGuildViewController0")]; - [self.navigationController popViewControllerAnimated:YES]; - return; - } - self.page = 1; - [self.presimport demandCorridorBtutonDeclareAboutCorridorId:self.instituteId]; - [self.presimport acquireCollectiveSpecificAbstract:self.ownerUid currentUserUid:[AccountAbstractStorage instance].acquireCid]; - [self.presimport acquireUnionComponentSttowardsement:self.instituteId page:self.page pageSize:20 state:0]; -} - -- (void)footerRenovtowardseh { - if (self.instituteId.length <= 0 || self.ownerUid.length <= 0) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineGuildViewController1")]; - [self.navigationController popViewControllerAnimated:YES]; - return; - } - - if (self.hasNoFurthaerAtoloudspeaker) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineGuildViewController2")]; - [self.tableView.mj_footer endRefreshing]; - return; - } - self.page++; - [self.presimport acquireUnionComponentSttowardsement:self.instituteId page:self.page pageSize:20 state:1]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.encourageIndicateRegard]; - [self.view addSubview:self.spossessowIndicateRegard]; - [self.view addSubview:self.tableView]; - - - - [self.view addSubview:self.nevRegard]; - [self.nevRegard addSubview:self.backButton]; - [self.nevRegard addSubview:self.titleLabel]; - [self.nevRegard addSubview:self.rectifyHierarchyRegard]; - - [self.encourageIndicateRegard addSubview:self.spossessowIndicateRegard]; - - [self.rectifyHierarchyRegard addArrangedSubview:self.exitBtuton]; - [self.rectifyHierarchyRegard addArrangedSubview:self.compileBtuton]; - - [self.intelligenceerRegard addSubview:self.intelligenceportraitIndicateRegard]; - [self.intelligenceerRegard addSubview:self.idSequencignation]; - self.intelligenceerRegard.frame = CGRectMake(0, 0, KScreenWidth, 174 + kSafeAreaTopHeight); - self.tableView.tableHeaderView = self.intelligenceerRegard; - - - [self.view addSubview:self.accelerateChamberRegard]; - @kWeakify(self); - self.accelerateComponentProvision.ticktackPerformance = ^{ - @kStrongify(self); - YUMIManeUnionHuntforRegardGovernancer * searchVC = [[YUMIManeUnionHuntforRegardGovernancer alloc] init]; - searchVC.modalPresentationStyle = UIModalPresentationOverFullScreen; - searchVC.searchType = UnionSearchGenre_Guild_Add_Member; - searchVC.delegate = self; - [self.navigationController pushViewController:searchVC animated:YES]; - }; - - self.removeComponentProvision.ticktackPerformance = ^{ - @kStrongify(self); - YUMIManeUnionRemoveComponentRegardGovernancer * removeVC = [[YUMIManeUnionRemoveComponentRegardGovernancer alloc] init]; - removeVC.instituteId = self.collectiveSpecificAbstract.hall.hallId; - [self.navigationController pushViewController:removeVC animated:YES]; - }; - - self.componentRevenueProvision.ticktackPerformance = ^{ - @kStrongify(self); - YUMIManeUnionRevenueStatsticsRegardGovernancer * personIncomeVC = [[YUMIManeUnionRevenueStatsticsRegardGovernancer alloc] init]; - personIncomeVC.hallId = self.collectiveSpecificAbstract.hall.hallId; - [self.navigationController pushViewController:personIncomeVC animated:YES]; - }; - - self.singleRevenueProvision.ticktackPerformance = ^{ - @kStrongify(self); - YUMIManeHallKellegRevenueStatsticsRegardGovernancer * managerList = [[YUMIManeHallKellegRevenueStatsticsRegardGovernancer alloc] init]; - managerList.hallId = self.collectiveSpecificAbstract.hall.hallId; - [self.navigationController pushViewController:managerList animated:YES]; - }; - self.accelerateGuildProvision.ticktackPerformance = ^{ - @kStrongify(self); - YUMIManeMainUnionStatementVC *vc = [YUMIManeMainUnionStatementVC new]; - vc.isFromCorridor = YES; - [self.navigationController pushViewController:vc animated:YES]; - }; - self.executiveSetProvision.ticktackPerformance = ^{ - @kStrongify(self); - YUMIManeMangerStatementRegardGovernancer * managerList = [[YUMIManeMangerStatementRegardGovernancer alloc] init]; - managerList.instituteId = self.collectiveSpecificAbstract.hall.hallId; - [self.navigationController pushViewController:managerList animated:YES]; - }; - -} - -- (void)initChildLyRestrictions { - [self.nevRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.height.mas_equalTo(kNavigationHeight); - }]; - - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.view); - }]; - [self.accelerateChamberRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(kGetScaleWidth(98)); - make.left.right.bottom.equalTo(self.view); - - }]; - - [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.view).mas_offset(10); - make.top.mas_equalTo(statusbarHeight); - make.height.width.mas_equalTo(44); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.backButton.mas_right); - make.right.mas_equalTo(self.rectifyHierarchyRegard.mas_left); - make.centerY.mas_equalTo(self.backButton); - }]; - - [self.rectifyHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.nevRegard).offset(-15); - make.centerY.mas_equalTo(self.backButton); - }]; - - [self.exitBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(70); - make.height.mas_equalTo(22); - }]; - - [self.compileBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(22); - make.height.mas_equalTo(22); - }]; - - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.height.mas_equalTo(250); - }]; - - [self.spossessowIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.encourageIndicateRegard); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(70, 70)); - make.centerX.mas_equalTo(self.intelligenceerRegard); - make.top.mas_equalTo(self.intelligenceerRegard).offset(66 + kSafeAreaTopHeight); - }]; - - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.intelligenceerRegard); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_bottom).offset(10); - }]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - YUMICollectiveComponentTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMICollectiveComponentTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMICollectiveComponentTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMICollectiveComponentTabulationRegardElement class])]; - } - cell.cellType = ClanMemberTableRegardCellGenre_Normal; - CollectiveComponentAbstractMatrix * componentAbstract = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.isRecent = (self.datasource.count -1) == indexPath.row; - cell.componentAbstract = componentAbstract; - return cell; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 66; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { - return self.datasource.count > 0 ? 37 : 0.1; -} - -- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { - if (section == 0) { - if (self.sectionRegard == nil) { - YUMICollectiveDivisionRegard * sectionRegard = [[YUMICollectiveDivisionRegard alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 37)]; - sectionRegard.delegate = self; - sectionRegard.isApexCor = YES; - self.sectionRegard = sectionRegard; - } - return self.sectionRegard; - } - return [UIView new]; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ - return 0.01f; -} - -- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{ - return [[UIView alloc]init]; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.datasource.count > 0) { - CollectiveComponentAbstractMatrix * componentAbstract = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - YUMIManeConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = componentAbstract.uid.integerValue; - [self.navigationController pushViewController:userInfoVC animated:YES]; - } -} - -#pragma mark - FBCManeUnionHuntforRegardGovernancerRepresendtation -- (void)fBCManeUnionHuntforRegardGovernancer:(YUMIManeUnionHuntforRegardGovernancer *)viewController inviteUserInfo:(UnionHuntforConsumerAbstractMatrix *)userInfo { - if (userInfo && userInfo.uid.length > 0) { - NSString * title = [NSString stringWithFormat:YMLocalizedString(@"YUMI_MineGuildViewController3"), userInfo.nick,self.collectiveSpecificAbstract.hall.hallName]; - MKJPrecautiousCommunicationAttributedDisposition * inviteAlertConfig = [[MKJPrecautiousCommunicationAttributedDisposition alloc] init]; - inviteAlertConfig.text = userInfo.nick; - inviteAlertConfig.color = [DJDKMIMOMColor aplictowardsionMainPrettify]; - inviteAlertConfig.font = [UIFont systemFontOfSize:15]; - - MKJPrecautiousCommunicationAttributedDisposition * hallNameAlertConfig = [[MKJPrecautiousCommunicationAttributedDisposition alloc] init]; - hallNameAlertConfig.text = self.collectiveSpecificAbstract.hall.hallName; - hallNameAlertConfig.color = [DJDKMIMOMColor aplictowardsionMainPrettify]; - hallNameAlertConfig.font = [UIFont systemFontOfSize:15]; - - NSArray * array = @[inviteAlertConfig, hallNameAlertConfig]; - MKJPrecautiousDisposition * alerconfig= [[MKJPrecautiousDisposition alloc] init]; - alerconfig.message = title; - alerconfig.communicationAttributedDisposition = array; - alerconfig.title = YMLocalizedString(@"YUMI_MineGuildViewController4"); - [MKJPopup precautiousAboutDisposition:alerconfig acknowledgementHandler:^{ - [self.presimport centiretyforComponent:userInfo.uid hallId:self.collectiveSpecificAbstract.hall.hallId]; - } cancelHandler:^{ - - }]; - } -} - -#pragma mark - YUMICollectiveDivisionRegard -- (void)yUMICollectiveSectionRegard:(YUMICollectiveDivisionRegard *)view didClickSearch:(UIButton *)sender { - YUMIManeUnionHuntforRegardGovernancer * searchVC = [[YUMIManeUnionHuntforRegardGovernancer alloc] init]; - searchVC.modalPresentationStyle = UIModalPresentationOverFullScreen; - searchVC.searchType = UnionSearchGenre_Clan_All_Member; - searchVC.collectiveMaintainrietaryCid = self.collectiveSpecificAbstract.hall.ownerUid; - [self.navigationController presentViewController:searchVC animated:YES completion:nil]; -} - -- (void)yUMICollectiveSectionRegard:(YUMICollectiveDivisionRegard *)view didClickManager:(UIButton *)sender { - if (self.executiveAttestationStatement.count > 0) { - [MKJPopup performanceSheetAboutProvisions:self.executiveAttestationStatement]; - } -} - -#pragma mark -FBCCollectiveCeremony -- (void)demandCorridorBtutonDeclareAccomplishment:(YUMIManeUnionStatementMatrix *)model{ - self.declareMatrix = model; - [self setAplictowardsionlyBut:self.declareMatrix.hallBtnStatus]; -} --(void)demandCorridorAccomplishment{ - self.declareMatrix.hallBtnStatus = 2; - [self setAplictowardsionlyBut:self.declareMatrix.hallBtnStatus]; - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_MineGuildListVC4")]; -} --(void)demandCorridorFlunk{ - -} -- (void)acquireUnionComponentSttowardsementAccomplishment:(CollectiveComponentSpecificAbstractMatrix *)componentAbstract state:(int)state { - self.sectionRegard.title = [NSString stringWithFormat:YMLocalizedString(@"YUMI_MineGuildViewController5"), componentAbstract.count]; - if (state == 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - [self.datasource removeAllObjects]; - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } - - if (componentAbstract.members.count > 0) { - [self.datasource addObjectsFromArray:componentAbstract.members]; - } else { - self.hasNoFurthaerAtoloudspeaker = YES; - } - [self.tableView reloadData]; -} - -- (void)acquireUnionComponentSttowardsementFlunk:(NSString *)msg state:(int)state { - if (state == 0) { - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } -} - -- (void)acquireCollectiveSpecificAbstractAccomplishment:(CollectiveSpecificAbstractMatrix *)collectiveSpecificAbstract universalConsumerCollectiveAbstract:(CollectiveSpecificAbstractMatrix *)universalConsumerCollectiveAbstract { - self.collectiveSpecificAbstract = collectiveSpecificAbstract; - self.universalConsumerCollectiveAbstract = universalConsumerCollectiveAbstract; - self.intelligenceportraitIndicateRegard.imageUrl = collectiveSpecificAbstract.hall.ownerAvatar; - self.idSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_MineGuildViewController6"),collectiveSpecificAbstract.hall.ownerErbanNo]; - self.encourageIndicateRegard.imageUrl = collectiveSpecificAbstract.hall.ownerAvatar; - self.titleLabel.text = collectiveSpecificAbstract.hall.hallName; - if (collectiveSpecificAbstract.manageHall) { - self.sectionRegard.isVeiledHuntfor = NO; - self.compileBtuton.hidden = NO; - self.exitBtuton.hidden = YES; - self.sectionRegard.isVeiledExecutive = NO; - - [self.presimport acquireConsumerInUnionChamberTowardstesttowardsion:self.instituteId]; - } else { - if ([collectiveSpecificAbstract.hall.hallId isEqualToString:universalConsumerCollectiveAbstract.hall.hallId]) { - self.sectionRegard.isVeiledHuntfor = NO; - UnionAbstractMatrix * hallInfo = universalConsumerCollectiveAbstract.hall; - if (hallInfo.roleType == UnionRoleGenre_Super_Admin || hallInfo.roleType == UnionRoleGenre_Owner) { - self.compileBtuton.hidden = NO; - self.exitBtuton.hidden = YES; - self.sectionRegard.isVeiledExecutive = NO; - - [self.presimport acquireConsumerInUnionChamberTowardstesttowardsion:self.instituteId]; - } else if(hallInfo.roleType == UnionRoleGenre_Manager){ - self.compileBtuton.hidden = YES; - self.exitBtuton.hidden = NO; - [self.presimport acquireConsumerInUnionChamberTowardstesttowardsion:self.instituteId]; - } else { - self.sectionRegard.isVeiledExecutive = YES; - self.compileBtuton.hidden = YES; - self.exitBtuton.hidden = NO; - } - } else { - self.sectionRegard.isVeiledHuntfor = YES; - self.compileBtuton.hidden = YES; - self.exitBtuton.hidden = YES; - } - } -} - -- (void)acquireConsumerInUnionChamberTowardstesttowardsionAccomplishment:(NSArray *)attestationStatement { - self.attestationStatement = attestationStatement; - NSMutableArray * array = [NSMutableArray array]; - if ([self.collectiveSpecificAbstract.hall.hallId isEqualToString:self.universalConsumerCollectiveAbstract.hall.hallId] ) { - UnionAbstractMatrix * hallInfo = self.universalConsumerCollectiveAbstract.hall; - if(hallInfo.roleType == UnionRoleGenre_Owner && self.universalConsumerCollectiveAbstract.clan.cid == nil) { - self.accelerateGuildProvision.title = YMLocalizedString(@"YUMI_MineGuildViewController12"); - [array addObject:self.accelerateGuildProvision]; - } - - } - [self.attestationStatement enumerateObjectsUsingBlock:^(UnionAuthMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (![obj.code isEqualToString:@"hall_build"]&& ![obj.code isEqualToString:@"hall_exit"] && ![obj.code isEqualToString:@"guild_income"] && obj.status == 1) { - if ([obj.code isEqualToString:@"member_join_manager"]) { - self.accelerateComponentProvision.title = obj.name; - [array addObject:self.accelerateComponentProvision]; - } else if ([obj.code isEqualToString:@"member_exit_manager"]) { - self.removeComponentProvision.title = obj.name; - [array addObject:self.removeComponentProvision]; - }else if ([obj.code isEqualToString:@"look_hall_income"]) { - self.componentRevenueProvision.title = obj.name; - [array addObject:self.componentRevenueProvision]; - }else if ([obj.code isEqualToString:@"single_room_income"]) { - self.singleRevenueProvision.title = obj.name; - [array addObject:self.singleRevenueProvision]; - }else if ([obj.code isEqualToString:@"hall_manager_set"]) { - self.executiveSetProvision.title = obj.name; - [array addObject:self.executiveSetProvision]; - } - } - }]; - self.executiveAttestationStatement = array.copy; - self.sectionRegard.isVeiledExecutive = self.executiveAttestationStatement.count <= 0; -} - -- (void)centiretyforMemeberAccomplishmentAboutTaracquireCid:(NSString *)targetUid { - [[NSNotificationCenter defaultCenter]postNotificationName:kInviteMemeberSuccess object:targetUid]; - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_MineGuildViewController7")]; -} - -- (void)quitUnionChamberAccomplishment { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_MineGuildViewController8")]; -} - -#pragma mark - Event Response -- (void)encourageBtutonPerformance:(UIButton *)sender { - [self.navigationController popViewControllerAnimated:YES]; -} --(void)accelertowardseChamberPerformance{ - if(self.declareMatrix.hallBtnStatus == 2)return; - if(self.declareMatrix.hallBtnStatus == 3){ - InterlocutionRegardGovernancer * sessionVC = [[InterlocutionRegardGovernancer alloc] initWithSession:[NIMSession session:self.declareMatrix.hallMessageUid type:NIMSessionTypeP2P]]; - sessionVC.isConsumer = YES; - sessionVC.recordId = self.declareMatrix.recordId; - [self.navigationController pushViewController:sessionVC animated:YES]; - return; - } - [self.presimport demandCorridorAboutCorridorId:self.instituteId]; -} -- (void)routeBtutonPerformance:(UIButton *)sender { - MKJPrecautiousDisposition * config = [[MKJPrecautiousDisposition alloc] init]; - NSString * highlight = YMLocalizedString(@"YUMI_MineGuildViewController9"); - NSString * message = [NSString stringWithFormat:YMLocalizedString(@"YUMI_MineGuildViewController10"), highlight]; - config.message = message; - MKJPrecautiousCommunicationAttributedDisposition * attribute = [[MKJPrecautiousCommunicationAttributedDisposition alloc] init]; - attribute.text = highlight; - attribute.color = [DJDKMIMOMColor aplictowardsionMainPrettify]; - config.communicationAttributedDisposition = @[attribute]; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [self.presimport quitUnionChamber]; - } cancelHandler:^{ - - }]; -} - -- (void)compileBtutonPerformance:(UIButton *)sender { - if (self.collectiveSpecificAbstract.hall && self.collectiveSpecificAbstract.hall.hallId.length > 0) { - YUMIManeUnionSetNameRegardGovernancer * setNameVC = [[YUMIManeUnionSetNameRegardGovernancer alloc] init]; - setNameVC.roomName = self.collectiveSpecificAbstract.hall.hallName; - setNameVC.hallId = self.collectiveSpecificAbstract.hall.hallId; - [self.navigationController pushViewController:setNameVC animated:YES]; - } -} - -- (void)didBetowardsRecognition { - YUMIManeConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = self.collectiveSpecificAbstract.hall.ownerUid.integerValue; - [self.navigationController pushViewController:userInfoVC animated:YES]; -} --(void)copyConstitutePerformance{ - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:YMLocalizedString(@"YUMI_Mine_User_Info_Header_View_3")]; - UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; - pasteboard.string = self.collectiveSpecificAbstract.hall.ownerErbanNo; -} - --(void)setAplictowardsionlyBut:(int)status{ - UIButton *addRoomBtn = (UIButton *)[self.accelerateChamberRegard viewWithTag:200001]; - switch (status) { - case 0: - { - self.accelerateChamberRegard.hidden = YES; - break; - } - case 1: - { - [addRoomBtn setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - addRoomBtn.backgroundColor = [UIColor clearColor]; - NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; - UIImage *iconImage = [UIImage imageNamed:@"yumi_center_guild_add_room"]; - attachment.bounds = CGRectMake(0, roundf(addRoomBtn.titleLabel.font.capHeight - kGetScaleWidth(12))/2.f, kGetScaleWidth(12), kGetScaleWidth(12)); - attachment.image = iconImage; - NSMutableAttributedString *textAtt = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@" %@",YMLocalizedString(@"YUMI_MineClanViewController2")] attributes:@{NSForegroundColorAttributeName:[UIColor whiteColor],NSFontAttributeName:[UIFont systemFontOfSize:16]}]; - [textAtt insertAttributedString:[NSMutableAttributedString attributedStringWithAttachment:attachment] atIndex:0]; - [addRoomBtn setAttributedTitle:textAtt forState:UIControlStateNormal]; - - - self.accelerateChamberRegard.hidden = NO; - break; - } - case 2: - { - addRoomBtn.backgroundColor = UIColorFromRGB(0xE6E6F0); - [addRoomBtn setBackgroundImage:nil forState:UIControlStateNormal]; - NSMutableAttributedString *textAtt = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@" %@",YMLocalizedString(@"YUMI_MineGuildListCell5")] attributes:@{NSForegroundColorAttributeName:UIColorFromRGB(0xB3B3C3),NSFontAttributeName:[UIFont systemFontOfSize:16]}]; - [addRoomBtn setAttributedTitle:textAtt forState:UIControlStateNormal]; - - - self.accelerateChamberRegard.hidden = NO; - break; - } - case 3: - { - addRoomBtn.backgroundColor = UIColorFromRGB(0xFFBC51); - [addRoomBtn setBackgroundImage:nil forState:UIControlStateNormal]; - NSMutableAttributedString *textAtt = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@" %@",YMLocalizedString(@"YUMI_MineGuildListCell6")] attributes:@{NSForegroundColorAttributeName:[UIColor whiteColor],NSFontAttributeName:[UIFont systemFontOfSize:16]}]; - [addRoomBtn setAttributedTitle:textAtt forState:UIControlStateNormal]; - self.accelerateChamberRegard.hidden = NO; - break; - } - default: - break; - } -} -#pragma mark - Getters And Setters - -- (UIView *)nevRegard { - if (!_nevRegard) { - _nevRegard = [[UIView alloc] init]; - _nevRegard.backgroundColor = [UIColor clearColor]; - } - return _nevRegard; -} - -- (UIButton *)backButton { - if (!_backButton) { - _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backButton setImage:[UIImage imageNamed:@"yumi_main_search_white_back"] forState:UIControlStateNormal]; - [_backButton setImage:[UIImage imageNamed:@"yumi_main_search_white_back"] forState:UIControlStateSelected]; - [_backButton addTarget:self action:@selector(encourageBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _backButton; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.font = [UIFont systemFontOfSize:17]; - _titleLabel.textColor = [UIColor whiteColor]; - } - return _titleLabel; -} - -- (UIStackView *)rectifyHierarchyRegard { - if (!_rectifyHierarchyRegard) { - _rectifyHierarchyRegard = [[UIStackView alloc] init]; - _rectifyHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _rectifyHierarchyRegard.distribution = UIStackViewDistributionFill; - _rectifyHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _rectifyHierarchyRegard.spacing = 0; - } - return _rectifyHierarchyRegard; -} - -- (UIButton *)exitBtuton { - if (!_exitBtuton) { - _exitBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_exitBtuton setTitle:YMLocalizedString(@"YUMI_MineGuildViewController11") forState:UIControlStateNormal]; - [_exitBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _exitBtuton.titleLabel.font = [UIFont systemFontOfSize:16]; - _exitBtuton.hidden = YES; - [_exitBtuton addTarget:self action:@selector(routeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _exitBtuton; -} - -- (UIButton *)compileBtuton { - if (!_compileBtuton) { - _compileBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_compileBtuton setImage:[UIImage imageNamed:@"yumi_center_guild_guild_edit"] forState:UIControlStateNormal]; - [_compileBtuton setImage:[UIImage imageNamed:@"yumi_center_guild_guild_edit"] forState:UIControlStateSelected]; - [_compileBtuton addTarget:self action:@selector(compileBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _compileBtuton.hidden = YES; - } - return _compileBtuton; -} - -- (UIView *)intelligenceerRegard { - if (!_intelligenceerRegard) { - _intelligenceerRegard = [[UIView alloc] init]; - _intelligenceerRegard.backgroundColor = [UIColor clearColor]; - } - return _intelligenceerRegard; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 70/2; - _intelligenceportraitIndicateRegard.userInteractionEnabled = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didBetowardsRecognition)]; - [_intelligenceportraitIndicateRegard addGestureRecognizer:tap]; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.font = [UIFont systemFontOfSize:13]; - _idSequencignation.textColor = [UIColor whiteColor]; - _idSequencignation.textAlignment = NSTextAlignmentCenter; - _idSequencignation.userInteractionEnabled = YES; - UILongPressGestureRecognizer *longPress = [[ UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(copyConstitutePerformance)]; - longPress.minimumPressDuration = 1; - [_idSequencignation addGestureRecognizer:longPress]; - } - return _idSequencignation; -} - -- (NetIndicateRegard *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - _encourageIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _encourageIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _encourageIndicateRegard.layer.masksToBounds = YES; - _encourageIndicateRegard.userInteractionEnabled = YES; - } - return _encourageIndicateRegard; -} - -- (UIImageView *)spossessowIndicateRegard { - if (!_spossessowIndicateRegard) { - _spossessowIndicateRegard = [[UIImageView alloc] init]; - _spossessowIndicateRegard.userInteractionEnabled = YES; - _spossessowIndicateRegard.image = [UIImage imageNamed:@"yumi_center_guild_guild_header_background"]; - } - return _spossessowIndicateRegard; -} - - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; - _tableView.delegate = self; - _tableView.dataSource = self; - UIView * footView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, kGetScaleWidth(98))]; - footView.backgroundColor = [UIColor clearColor]; - _tableView.tableFooterView = footView; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - _tableView.showsVerticalScrollIndicator = NO; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMICollectiveComponentTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMICollectiveComponentTabulationRegardElement class])]; - } - return _tableView; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - -- (MKJActionSheetDisposition *)accelerateComponentProvision { - if (!_accelerateComponentProvision) { - _accelerateComponentProvision = [[MKJActionSheetDisposition alloc] init]; - _accelerateComponentProvision.titleColor = [DJDKMIMOMColor precautiousChampionPrettify]; - } - return _accelerateComponentProvision; -} - -- (MKJActionSheetDisposition *)removeComponentProvision { - if (!_removeComponentProvision) { - _removeComponentProvision = [[MKJActionSheetDisposition alloc] init]; - _removeComponentProvision.titleColor = [DJDKMIMOMColor precautiousChampionPrettify]; - } - return _removeComponentProvision; -} - -- (MKJActionSheetDisposition *)componentRevenueProvision { - if (!_componentRevenueProvision) { - _componentRevenueProvision = [[MKJActionSheetDisposition alloc] init]; - _componentRevenueProvision.titleColor = [DJDKMIMOMColor precautiousChampionPrettify]; - } - return _componentRevenueProvision; -} - -- (MKJActionSheetDisposition *)singleRevenueProvision { - if (!_singleRevenueProvision) { - _singleRevenueProvision = [[MKJActionSheetDisposition alloc] init]; - _singleRevenueProvision.titleColor = [DJDKMIMOMColor precautiousChampionPrettify]; - } - return _singleRevenueProvision; -} --(MKJActionSheetDisposition *)accelerateGuildProvision{ - if (!_accelerateGuildProvision){ - _accelerateGuildProvision = [[MKJActionSheetDisposition alloc] init]; - _accelerateGuildProvision.titleColor = [DJDKMIMOMColor precautiousChampionPrettify]; - } - return _accelerateGuildProvision; -} -- (MKJActionSheetDisposition *)executiveSetProvision { - if (!_executiveSetProvision) { - _executiveSetProvision = [[MKJActionSheetDisposition alloc] init]; - _executiveSetProvision.titleColor = [DJDKMIMOMColor precautiousChampionPrettify]; - } - return _executiveSetProvision; -} -- (UIView *)accelerateChamberRegard{ - if (!_accelerateChamberRegard){ - _accelerateChamberRegard = [UIView new]; - _accelerateChamberRegard.backgroundColor = [UIColor clearColor]; - _accelerateChamberRegard.hidden = YES; - UIButton *addRoomBtn = [UIButton new]; - addRoomBtn.tag = 200001; - addRoomBtn.titleLabel.font = [UIFont systemFontOfSize:16]; - UIImage *image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityMiddlePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(345, 46)]; - [addRoomBtn addTarget:self action:@selector(accelertowardseChamberPerformance) forControlEvents:UIControlEventTouchUpInside]; - [addRoomBtn setBackgroundImage:image forState:UIControlStateNormal]; - addRoomBtn.layer.cornerRadius = kGetScaleWidth(23); - addRoomBtn.layer.masksToBounds = YES; - NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; - UIImage *iconImage = [UIImage imageNamed:@"yumi_center_guild_add_room"]; - attachment.bounds = CGRectMake(0, roundf(addRoomBtn.titleLabel.font.capHeight - kGetScaleWidth(12))/2.f, kGetScaleWidth(12), kGetScaleWidth(12)); - attachment.image = iconImage; - NSMutableAttributedString *textAtt = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@" %@",YMLocalizedString(@"YUMI_MineClanViewController2")] attributes:@{NSForegroundColorAttributeName:[UIColor whiteColor],NSFontAttributeName:[UIFont systemFontOfSize:16]}]; - [textAtt insertAttributedString:[NSMutableAttributedString attributedStringWithAttachment:attachment] atIndex:0]; - [addRoomBtn setAttributedTitle:textAtt forState:UIControlStateNormal]; - [_accelerateChamberRegard addSubview:addRoomBtn]; - [addRoomBtn mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-kGetScaleWidth(58)); - make.left.mas_equalTo(kGetScaleWidth(58)); - make.top.mas_equalTo(kGetScaleWidth(9)); - make.height.mas_equalTo(kGetScaleWidth(46)); - }]; - - } - return _accelerateChamberRegard; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/Guild/View/YUMIManeUnionStatementVC.h b/YuMi/Modules/YMMine/View/Guild/View/YUMIManeUnionStatementVC.h deleted file mode 100644 index a92ed071..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/YUMIManeUnionStatementVC.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YUMIManeUnionStatementVC.h -// YuMi -// -// Created by YuMi on 2022/10/11. -// - -#import -#import "MvpRegardGovernancer.h" -#import -#import -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeUnionStatementVC : MvpRegardGovernancer -@property (nonatomic,assign) int type; -@property (nonatomic,assign) BOOL isFromCorridor; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Guild/View/YUMIManeUnionStatementVC.m b/YuMi/Modules/YMMine/View/Guild/View/YUMIManeUnionStatementVC.m deleted file mode 100644 index e4e02d77..00000000 --- a/YuMi/Modules/YMMine/View/Guild/View/YUMIManeUnionStatementVC.m +++ /dev/null @@ -1,262 +0,0 @@ -// -// YUMIManeUnionStatementVC.m -// YuMi -// -// Created by YuMi on 2022/10/11. -// - -#import "YUMIManeUnionStatementVC.h" -#import "YUMIManeUnionExternalizer.h" -#import "FBCManeUnionCeremony.h" -#import "YUMIManeUnionStatementElement.h" -#import "YUMIManeAssistantDispossessTabulationRegardElement.h" -#import "YUMIManeCollectiveRegardGovernancer.h" -#import "YUMIManeUnionRegardGovernancer.h" -#import "YUMIManeGiveDiamondHuntforRegard.h" -#import "InterlocutionRegardGovernancer.h" -@interface YUMIManeUnionStatementVC () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *dataList; -@property (nonatomic,strong) YUMIManeGiveDiamondHuntforRegard *huntforRegard; -@property (nonatomic,strong) NSMutableArray * huntforStatement; - -@property (nonatomic,strong) YUMIManeUnionStatementMatrix *applyMatrix; -@property (nonatomic, copy) void(^scrollCallback)(UIScrollView *scrollView); -@end - -@implementation YUMIManeUnionStatementVC -- (YUMIManeUnionExternalizer *)producePresimport { - return [[YUMIManeUnionExternalizer alloc] init];; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self EvidenceChambering]; - if(self.type == 0){ - - [self.presimport acquireUnionSttowardsementTowardsoloudspeaker]; - }else{ - [self.presimport acquireChamberSttowardsementTowardsoloudspeaker]; - } - - [self initSubViews]; - [self initChildLyRestrictions]; - -} -#pragma mark - JXCategoryListContentViewDelegate -- (UIView *)listView { - return self.view; -} -- (UIScrollView *)listScrollView { - return self.tableView; -} -- (void)listViewDidScrollCallback:(void (^)(UIScrollView *))callback { - self.scrollCallback = callback; -} - -- (void)scrollViewDidScroll:(UIScrollView *)scrollView { - if (self.scrollCallback){ - self.scrollCallback(scrollView); - } - -} - -#pragma mark - Private Method -- (void)initSubViews { - self.view.backgroundColor = [UIColor whiteColor]; - self.title = YMLocalizedString(@"YUMI_MineGuildListVC0"); - if(self.type == 1){ - [self.view addSubview:self.huntforRegard]; - - } - [self.view addSubview:self.tableView]; - self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - if (@available(iOS 15.0, *)) { - self.tableView.sectionHeaderTopPadding = 0; - } - -} -- (void)initChildLyRestrictions { - if(self.type == 1){ - - [self.huntforRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(0); - make.right.mas_equalTo(0); - make.height.mas_equalTo(kGetScaleWidth(32)); - make.top.mas_equalTo(kGetScaleWidth(10)); - }]; - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.equalTo(self.view); - make.top.equalTo(self.huntforRegard.mas_bottom).mas_offset(kGetScaleWidth(16)); - }]; - - return; - } - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.view); - }]; -} - -#pragma mark -FBCManeGiveDiamondCeremony -- (void)huntforConcludeAboutEssay:(NSString *)text{ - if(text.length == 0){ - self.dataList = [NSMutableArray arrayWithArray:self.huntforStatement]; - [self.tableView reloadData]; - return; - } - [self.dataList removeAllObjects]; - for (YUMIManeUnionStatementMatrix *model in self.huntforStatement) { - NSString *ownerUid = [NSString stringWithFormat:@"%ld",model.ownerErbanNo]; - if([model.hallName containsString:text] || [ownerUid containsString:text] ){ - [self.dataList addObject:model]; - } - } - if(self.dataList.count == 0){ - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineGuildListVC3")]; - } - [self.tableView reloadData]; -} -#pragma mark -FBCManeUnionCeremony --(void)dwellEarnManeChamberSttowardsementAccomplishment:(NSArray *)list{ - self.huntforStatement = [NSMutableArray arrayWithArray:list]; - self.dataList = [NSMutableArray arrayWithArray:list]; - [self.tableView reloadData]; - [self brakeHUD]; -} --(void)dwellEarnManeUnionSttowardsementAccomplishment:(NSArray *)list{ - self.dataList = [NSMutableArray arrayWithArray:list]; - [self.tableView reloadData]; - [self brakeHUD]; -} --(void)demandCollectiveAccomplishment{ - - [self brakeHUD]; - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_MineGuildListVC2")]; - if(self.applyMatrix == nil)return; - NSInteger index = [self.dataList indexOfObject:self.applyMatrix]; - self.applyMatrix.applyBtnStatus = 2; - YUMIManeUnionStatementElement *cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0]]; - [cell setAplictowardsionlyBtutonGenre:NO]; -} -- (void)demandCollectiveFlunk{ - [self brakeHUD]; -} --(void)demandCorridorAccomplishment{ - [self brakeHUD]; - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_MineGuildListVC4")]; - if(self.applyMatrix == nil)return; - NSInteger index = [self.dataList indexOfObject:self.applyMatrix]; - self.applyMatrix.hallBtnStatus = 2; - YUMIManeUnionStatementElement *cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0]]; - [cell setAplictowardsionlyBtutonGenre:NO]; -} --(void)demandCorridorFlunk{ - [self brakeHUD]; -} -#pragma mark -FBCManeUnionStatementElementRepresendtation -- (void)demandPerformanceAboutMtowardsrix:(YUMIManeUnionStatementMatrix *)guildMatrix{ - if(self.type == 0){ - self.applyMatrix = guildMatrix; - [self.presimport demandCollectiveAboutCollectiveId:@(guildMatrix.clanId).stringValue]; - [self EvidenceChambering]; - return; - } - - if(guildMatrix.hallBtnStatus == 3){ - InterlocutionRegardGovernancer * sessionVC = [[InterlocutionRegardGovernancer alloc] initWithSession:[NIMSession session:guildMatrix.hallMessageUid type:NIMSessionTypeP2P]]; - sessionVC.isConsumer = YES; - sessionVC.recordId = guildMatrix.hallRecordId; - [self.navigationController pushViewController:sessionVC animated:YES]; - - return; - } - if(guildMatrix.hallBtnStatus == 1){ - self.applyMatrix = guildMatrix; - [self.presimport demandCorridorAboutCorridorId:@(guildMatrix.hallId).stringValue]; - [self EvidenceChambering]; - } - -} -#pragma mark -UITableViewDelegate - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.dataList.count > 0 ? self.dataList.count : 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return self.dataList.count > 0 ? kGetScaleWidth(58) : (KScreenHeight - kNavigationHeight) ; -} - --(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ - if (self.dataList.count > 0){ - YUMIManeUnionStatementElement *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeUnionStatementElement class]) forIndexPath:indexPath]; - cell.rateFigure = indexPath.row; - if(cell.delegate == nil){ - cell.delegate = self; - } - if(self.type == 0){ - cell.guildMatrix = self.dataList[indexPath.row]; - }else{ - YUMIManeUnionStatementMatrix*hentiretyMatrix = self.dataList[indexPath.row]; - cell.hentiretyMatrix = hentiretyMatrix; - cell.isFromCorridor = self.isFromCorridor; - } - return cell; - } - YUMIManeAssistantDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeAssistantDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeAssistantDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeAssistantDispossessTabulationRegardElement class])]; - } - cell.emptyTitle = self.type == 0 ? YMLocalizedString(@"YUMI_MineGuildListVC1") : YMLocalizedString(@"YUMI_MineGuildListVC3"); - return cell; -} -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ - if(self.dataList.count == 0)return; - YUMIManeUnionStatementMatrix *guildMatrix = self.dataList[indexPath.row]; - - if(self.type == 0){ - YUMIManeCollectiveRegardGovernancer * clanVC = [[YUMIManeCollectiveRegardGovernancer alloc] init]; - clanVC.uid = @(guildMatrix.clanElderUid).stringValue; - [self.navigationController pushViewController:clanVC animated:YES]; - return; - } - YUMIManeUnionRegardGovernancer * hallVC = [[YUMIManeUnionRegardGovernancer alloc] init]; - hallVC.ownerUid = @(guildMatrix.ownerUid).stringValue; - hallVC.instituteId = @(guildMatrix.hallId).stringValue; - [self.navigationController pushViewController:hallVC animated:YES]; -} -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.showsVerticalScrollIndicator = NO; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;; - [_tableView registerClass:[YUMIManeUnionStatementElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeUnionStatementElement class])]; - [_tableView registerClass:[YUMIManeAssistantDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeAssistantDispossessTabulationRegardElement class])]; - - _tableView.backgroundColor = [UIColor whiteColor]; - - } - return _tableView; -} -- (YUMIManeGiveDiamondHuntforRegard *)huntforRegard{ - if (!_huntforRegard){ - _huntforRegard = [[YUMIManeGiveDiamondHuntforRegard alloc]initWithFrame:CGRectZero]; - _huntforRegard.delegate = self; - _huntforRegard.isHuntforCorridor = YES; - } - return _huntforRegard; -} -- (NSMutableArray *)dataList{ - if (!_dataList){ - _dataList = [NSMutableArray array]; - } - return _dataList; -} - - - - -@end diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/Presenter/XPIncomeRecordPresent.h b/YuMi/Modules/YMMine/View/IncomeRecord/Presenter/XPIncomeRecordPresent.h new file mode 100644 index 00000000..dcb4cd59 --- /dev/null +++ b/YuMi/Modules/YMMine/View/IncomeRecord/Presenter/XPIncomeRecordPresent.h @@ -0,0 +1,24 @@ +// +// XPIncomeRecordPresent.h +// YuMi +// +// Created by YuMi on 2022/11/17. +// + +#import +#import "BaseMvpPresenter.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPIncomeRecordPresent : BaseMvpPresenter +///获取收益记录 +-(void)requestRecordIncome; +///获取兑换钻石 +-(void)getExchangeDiamondInformation; +///确认兑换钻石 +-(void)confirmExchangeDiamondWithGoldNum:(NSString *)goldNum diamondNum:(NSString *)diamondNum currency:(NSString *)currency; +///金币明细 +-(void)getGoldDetailsDataWithStartTime:(NSString *)startTime endTime:(NSString *)endTime; +-(void)requestQueryWithRoomType; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/Presenter/XPIncomeRecordPresent.m b/YuMi/Modules/YMMine/View/IncomeRecord/Presenter/XPIncomeRecordPresent.m new file mode 100644 index 00000000..9f8f08b0 --- /dev/null +++ b/YuMi/Modules/YMMine/View/IncomeRecord/Presenter/XPIncomeRecordPresent.m @@ -0,0 +1,63 @@ +// +// XPIncomeRecordPresent.m +// YuMi +// +// Created by YuMi on 2022/11/17. +// + +#import "XPIncomeRecordPresent.h" +///Api +#import "Api+Mine.h" +///tool +#import "DESEncrypt.h" +///Protocol +#import "XPIncomeRecordProtocol.h" +///model +#import "XPIncomeRecordModel.h" +#import "XPExchangeDiamondsModel.h" +#import "XPBindExtractInfoModel.h" +#import "XPWithdrawAccountModel.h" +#import "XPIncomeRecordGoldDetailsModel.h" +@implementation XPIncomeRecordPresent +- (id)getView { + return ((id) [super getView]); +} +-(void)requestQueryWithRoomType{ + [Api requestQueryWithRoomType:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + XPIncomeRecordModel *model = [XPIncomeRecordModel modelWithDictionary:data.data]; + [[self getView]getRecordIncomeSuccess:model]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView]requestQueryWithRoomTypeFail]; + } showLoading:NO errorToast:NO]]; +} +-(void)requestRecordIncome{ + + [Api requestRecordIncome:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + XPIncomeRecordModel *model = [XPIncomeRecordModel modelWithDictionary:data.data]; + [[self getView]getRecordIncomeSuccess:model]; + } showLoading:YES]]; + + +} +-(void)getExchangeDiamondInformation{ + [Api getExchangeDiamondInformation:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + XPExchangeDiamondsModel *model = [XPExchangeDiamondsModel modelWithDictionary:data.data]; + [[self getView]getExchangeDiamondInformation:model]; + } showLoading:YES]]; +} +-(void)confirmExchangeDiamondWithGoldNum:(NSString *)goldNum diamondNum:(NSString *)diamondNum currency:(NSString *)currency{ + [Api confirmExchangeDiamond:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView]confirmExchangeDiamondSuccessWithDiamondNum:diamondNum goldNum:goldNum]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView]confirmExchangeDiamondFail]; + } showLoading:YES errorToast:YES] goldNum:goldNum diamondNum:diamondNum currency:currency]; + +} + +-(void)getGoldDetailsDataWithStartTime:(NSString *)startTime endTime:(NSString *)endTime{ + [Api getGoldDetailsData:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + XPIncomeRecordGoldDetailsModel *model = [XPIncomeRecordGoldDetailsModel modelWithDictionary:data.data]; + [[self getView]getGoldDetailsDataSuccess:model]; + } showLoading:YES errorToast:YES] startTime:startTime endTime:endTime]; +} +@end diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/Presenter/YUMIRevenueReflectionExternalize.h b/YuMi/Modules/YMMine/View/IncomeRecord/Presenter/YUMIRevenueReflectionExternalize.h deleted file mode 100644 index f06d2b15..00000000 --- a/YuMi/Modules/YMMine/View/IncomeRecord/Presenter/YUMIRevenueReflectionExternalize.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YUMIRevenueReflectionExternalize.h -// YuMi -// -// Created by YuMi on 2022/11/17. -// - -#import -#import "BaseMvpExternalizer.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIRevenueReflectionExternalize : BaseMvpExternalizer --(void)requisitionReflectionRevenue; --(void)acquireExdiversifictowardsionDiamondAbstractrmtowardsion; --(void)acknowledgementExdiversifictowardsionDiamondAboutGoldFigure:(NSString *)goldNum diamondNum:(NSString *)diamondNum currency:(NSString *)currency; --(void)acquireGoldSpecificsTowardsoloudspeakerAboutInititowardseIntrtowardsemporal:(NSString *)startTime endTime:(NSString *)endTime; --(void)requisitionQueryAboutChamberGenre; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/Presenter/YUMIRevenueReflectionExternalize.m b/YuMi/Modules/YMMine/View/IncomeRecord/Presenter/YUMIRevenueReflectionExternalize.m deleted file mode 100644 index 820013a2..00000000 --- a/YuMi/Modules/YMMine/View/IncomeRecord/Presenter/YUMIRevenueReflectionExternalize.m +++ /dev/null @@ -1,59 +0,0 @@ -// -// YUMIRevenueReflectionExternalize.m -// YuMi -// -// Created by YuMi on 2022/11/17. -// - -#import "YUMIRevenueReflectionExternalize.h" -#import "Api+Mine.h" -#import "DESEncrypt.h" -#import "FBCIncomeRecordCeremony.h" -#import "YUMIRevenueReflectionMatrix.h" -#import "YUMIExchangeDiamondsMatrix.h" -#import "YUMIDilemmaExtractAbstractMatrix.h" -#import "YUMIWithdrawAccountMatrix.h" -#import "YUMIRevenueReflectionGoldSpecificsMatrix.h" -@implementation YUMIRevenueReflectionExternalize -- (id)acquireRegard { - return ((id) [super acquireRegard]); -} --(void)requisitionQueryAboutChamberGenre{ - [Api requisitionQueryAboutChamberGenre:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - YUMIRevenueReflectionMatrix *model = [YUMIRevenueReflectionMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard]acquireReflectionRevenueAccomplishment:model]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard]requisitionQueryAboutChamberGenreFlunk]; - } EvidenceChambering:NO errorToast:NO]]; -} --(void)requisitionReflectionRevenue{ - - [Api requisitionReflectionRevenue:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - YUMIRevenueReflectionMatrix *model = [YUMIRevenueReflectionMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard]acquireReflectionRevenueAccomplishment:model]; - } EvidenceChambering:YES]]; - - -} --(void)acquireExdiversifictowardsionDiamondAbstractrmtowardsion{ - [Api acquireExdiversifictowardsionDiamondAbstractrmtowardsion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - YUMIExchangeDiamondsMatrix *model = [YUMIExchangeDiamondsMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard]acquireExdiversifictowardsionDiamondAbstractrmtowardsion:model]; - } EvidenceChambering:YES]]; -} --(void)acknowledgementExdiversifictowardsionDiamondAboutGoldFigure:(NSString *)goldNum diamondNum:(NSString *)diamondNum currency:(NSString *)currency{ - [Api acknowledgementExdiversifictowardsionDiamond:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard]acknowledgementExdiversifictowardsionDiamondAccomplishmentAboutDiamondFigure:diamondNum goldNum:goldNum]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard]acknowledgementExdiversifictowardsionDiamondFlunk]; - } EvidenceChambering:YES errorToast:YES] goldNum:goldNum diamondNum:diamondNum currency:currency]; - -} - --(void)acquireGoldSpecificsTowardsoloudspeakerAboutInititowardseIntrtowardsemporal:(NSString *)startTime endTime:(NSString *)endTime{ - [Api acquireGoldSpecificsTowardsoloudspeaker:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - YUMIRevenueReflectionGoldSpecificsMatrix *model = [YUMIRevenueReflectionGoldSpecificsMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard]acquireGoldSpecificsTowardsoloudspeakerAccomplishment:model]; - } EvidenceChambering:YES errorToast:YES] startTime:startTime endTime:endTime]; -} -@end diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/Protocol/FBCIncomeRecordCeremony.h b/YuMi/Modules/YMMine/View/IncomeRecord/Protocol/FBCIncomeRecordCeremony.h deleted file mode 100644 index ff1261e1..00000000 --- a/YuMi/Modules/YMMine/View/IncomeRecord/Protocol/FBCIncomeRecordCeremony.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// FBCIncomeRecordCeremony.h -// YuMi -// -// Created by YuMi on 2022/11/17. -// - -#import -@class YUMIRevenueReflectionMatrix,YUMIExchangeDiamondsMatrix,YUMIDilemmaExtractAbstractMatrix,YUMIWithdrawAccountMatrix,YUMIRevenueReflectionGoldSpecificsMatrix; -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCIncomeRecordCeremony -@optional --(void)acquireReflectionRevenueAccomplishment:(YUMIRevenueReflectionMatrix *)model; --(void)acquireExdiversifictowardsionDiamondAbstractrmtowardsion:(YUMIExchangeDiamondsMatrix *)model; --(void)acknowledgementExdiversifictowardsionDiamondAccomplishmentAboutDiamondFigure:(NSString *)diamondNum goldNum:(NSString *)goldNum ; --(void)acknowledgementExdiversifictowardsionDiamondFlunk; --(void)acquireGoldSpecificsTowardsoloudspeakerAccomplishment:(YUMIRevenueReflectionGoldSpecificsMatrix *)specificMatrix; --(void)requisitionQueryAboutChamberGenreAccomplishment:(NSInteger)type; --(void)requisitionQueryAboutChamberGenreFlunk; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/Protocol/XPIncomeRecordProtocol.h b/YuMi/Modules/YMMine/View/IncomeRecord/Protocol/XPIncomeRecordProtocol.h new file mode 100644 index 00000000..35605487 --- /dev/null +++ b/YuMi/Modules/YMMine/View/IncomeRecord/Protocol/XPIncomeRecordProtocol.h @@ -0,0 +1,30 @@ +// +// XPIncomeRecordProtocol.h +// YuMi +// +// Created by YuMi on 2022/11/17. +// + +#import +@class XPIncomeRecordModel,XPExchangeDiamondsModel,XPBindExtractInfoModel,XPWithdrawAccountModel,XPIncomeRecordGoldDetailsModel; +NS_ASSUME_NONNULL_BEGIN + +@protocol XPIncomeRecordProtocol +@optional +///收益记录成功 +-(void)getRecordIncomeSuccess:(XPIncomeRecordModel *)model; +///获取兑换钻石信息成功 +-(void)getExchangeDiamondInformation:(XPExchangeDiamondsModel *)model; +///确认兑换成功 +-(void)confirmExchangeDiamondSuccessWithDiamondNum:(NSString *)diamondNum goldNum:(NSString *)goldNum ; +///确认兑换失败 +-(void)confirmExchangeDiamondFail; +///金币明细 +-(void)getGoldDetailsDataSuccess:(XPIncomeRecordGoldDetailsModel *)detailModel; +///请求是否是个播房,type=4为是 +-(void)requestQueryWithRoomTypeSuccess:(NSInteger)type; +///请求是否是个播房失败 +-(void)requestQueryWithRoomTypeFail; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPExchangeDiamondsVC.h b/YuMi/Modules/YMMine/View/IncomeRecord/XPExchangeDiamondsVC.h new file mode 100644 index 00000000..85a2f42a --- /dev/null +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPExchangeDiamondsVC.h @@ -0,0 +1,24 @@ +// +// XPExchangeDiamondsVC.h +// YuMi +// +// Created by YuMi on 2022/11/17. +// + +#import "MvpViewController.h" +#import "XPExchangeDiamondsModel.h" + +@protocol XPExchangeDiamondsVCDelegate + +-(void)confirmExchangeDiamondsWithDiamondSuccess:(NSString *)diamond gold:(NSString *)gold; + +@end + +NS_ASSUME_NONNULL_BEGIN + +@interface XPExchangeDiamondsVC : MvpViewController +@property (nonatomic,strong) XPExchangeDiamondsModel *model; +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPExchangeDiamondsVC.m b/YuMi/Modules/YMMine/View/IncomeRecord/XPExchangeDiamondsVC.m new file mode 100644 index 00000000..92fef6a1 --- /dev/null +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPExchangeDiamondsVC.m @@ -0,0 +1,98 @@ +// +// XPExchangeDiamondsVC.m +// YuMi +// +// Created by YuMi on 2022/11/17. +// + +#import "XPExchangeDiamondsVC.h" +///Third +#import +///view +#import "XPExchangeDiamondsView.h" +#import "XPMineConfirmGiveDiamondView.h" +#import "TTPopup.h" +///Present +#import "XPIncomeRecordPresent.h" +///Protocol +#import "XPIncomeRecordProtocol.h" +///model +#import "XPExchangeDiamondsModel.h" + +@interface XPExchangeDiamondsVC () +@property (nonatomic,strong) XPExchangeDiamondsView *exchangeView; +@property (nonatomic,copy) NSString *diamond; +@property (nonatomic,copy) NSString *gold; +@end + +@implementation XPExchangeDiamondsVC +- (XPIncomeRecordPresent *)createPresenter { + return [[XPIncomeRecordPresent alloc] init]; +} +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + if(self.model != nil){ + self.exchangeView.model = self.model; + return; + } + [self showLoading]; + [self.presenter getExchangeDiamondInformation]; +} +#pragma mark - XPIncomeRecordProtocol +-(void)getExchangeDiamondInformation:(XPExchangeDiamondsModel *)model{ + [self hideHUD]; + self.model = model; + self.exchangeView.model = self.model; +} +- (void)confirmExchangeDiamondSuccessWithDiamondNum:(NSString *)diamondNum goldNum:(NSString *)goldNum{ + [self hideHUD]; + if(self.delegate && [self.delegate respondsToSelector:@selector(confirmExchangeDiamondsWithDiamondSuccess:gold:)]){ + [self.delegate confirmExchangeDiamondsWithDiamondSuccess:diamondNum gold:goldNum]; + } + [self showSuccessToast:YMLocalizedString(@"XPExchangeDiamondsView5")]; + [self.navigationController popViewControllerAnimated:YES]; +} +- (void)confirmExchangeDiamondFail{ + [self.presenter getExchangeDiamondInformation]; +} +#pragma mark - XPMineConfirmGiveDiamondViewDelegate +- (void)xpMineConfirmGiveDiamondViewComplete{ + [self showLoading]; + [self.presenter confirmExchangeDiamondWithGoldNum:self.gold diamondNum:self.diamond currency:@"1"]; +} +#pragma mark - XPExchangeDiamondsViewDelegate +-(void)confirmExchangeDiamondsWithDiamond:(NSString *)diamond gold:(NSString *)gold currency:(NSString *)currency{ + self.diamond = diamond; + self.gold = [NSString stringWithFormat:@"%.0f",ceilf(diamond.doubleValue / self.model.rate)]; + XPMineConfirmGiveDiamondView *confirmView = [[XPMineConfirmGiveDiamondView alloc]initWithFrame:CGRectZero]; + confirmView.type = 2; + confirmView.goldNum = self.gold.integerValue; + confirmView.inputDiamonds = self.diamond.integerValue; + confirmView.delegate = self; + [TTPopup popupView:confirmView style:TTPopupStyleAlert]; +} +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPExchangeDiamondsView0"); + [self.view addSubview:self.exchangeView]; + + +} +- (void)initSubViewConstraints { + [self.exchangeView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.view); + }]; +} +#pragma mark -懒加载 +- (XPExchangeDiamondsView *)exchangeView{ + if (!_exchangeView){ + _exchangeView = [[XPExchangeDiamondsView alloc]initWithFrame:CGRectZero]; + _exchangeView.delegate = self; + } + return _exchangeView; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPExchangeDiamondsView.h b/YuMi/Modules/YMMine/View/IncomeRecord/XPExchangeDiamondsView.h new file mode 100644 index 00000000..e71d863b --- /dev/null +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPExchangeDiamondsView.h @@ -0,0 +1,49 @@ +// +// XPExchangeDiamondsView.h +// YuMi +// +// Created by YuMi on 2022/11/17. +// + +#import +#import "XPIncomeRecordView.h" +#import "XPExchangeDiamondsModel.h" +NS_ASSUME_NONNULL_BEGIN + + +@protocol XPExchangeDiamondsViewDelegate + +-(void)confirmExchangeDiamondsWithDiamond:(NSString *)diamond gold:(NSString *)gold currency:(NSString *)currency; + +@end + + +typedef void(^ExchangeDiamondsItemViewHandle)(NSString *goldNum,NSString *diamondNum); + +@interface XPExchangeDiamondsView : UIView +@property (nonatomic,weak) id delegate; +@property (nonatomic,strong) XPExchangeDiamondsModel *model; + +@end + + + + + + + +/*******************************************************华丽分割线***************************************************************/ + +@interface XPExchangeDiamondsItemView : UIView + +@property (nonatomic,copy) ExchangeDiamondsItemViewHandle inputCounthandle; + +@property (nonatomic,copy) NSString *text; +@property (nonatomic,strong) XPExchangeDiamondsModel *model; +@property (nonatomic,copy) NSString *count; +-(instancetype)initWithFrame:(CGRect)frame type:(IncomeRecordViewType)type; +-(void)resignResponder; +@end + + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPExchangeDiamondsView.m b/YuMi/Modules/YMMine/View/IncomeRecord/XPExchangeDiamondsView.m new file mode 100644 index 00000000..3b5c667f --- /dev/null +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPExchangeDiamondsView.m @@ -0,0 +1,337 @@ +// +// XPExchangeDiamondsView.m +// YuMi +// +// Created by YuMi on 2022/11/17. +// + +#import "XPExchangeDiamondsView.h" +///Third +#import +#import "XPTextField.h" +#import "XNDJTDDLoadingTool.h" +#import "UIView+Corner.h" +@interface XPExchangeDiamondsView() +@property (nonatomic,strong) XPExchangeDiamondsItemView *myGoldView; +@property (nonatomic,strong) XPExchangeDiamondsItemView *myDiamondsView; +@property (nonatomic,strong) UIButton *confirmBtn; +///金币数 +@property (nonatomic,copy) NSString *goldNum; +///钻石数 +@property (nonatomic,copy) NSString *diamondNum; +@property (nonatomic,assign) IncomeRecordViewType chooseType; +@end +@implementation XPExchangeDiamondsView + +-(instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if(self){ + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + [self addSubview:self.myGoldView]; + [self addSubview:self.myDiamondsView]; + [self addSubview:self.confirmBtn]; + + + @kWeakify(self) + self.myGoldView.inputCounthandle = ^(NSString *_Nonnull goldNum,NSString *_Nonnull diamondNum) { + @kStrongify(self) + if(goldNum.integerValue == 0 && diamondNum.integerValue == 0){ + self.confirmBtn.enabled = NO; + self.myGoldView.text = @""; + self.myDiamondsView.text = @""; + return; + } + self.chooseType = IncomeRecord_Gold; + self.confirmBtn.enabled = YES; + self.goldNum = goldNum; + self.diamondNum = diamondNum; + self.myDiamondsView.count = diamondNum; + + }; + self.myDiamondsView.inputCounthandle = ^(NSString *_Nonnull goldNum,NSString *_Nonnull diamondNum) { + @kStrongify(self) + if(goldNum.integerValue == 0 && diamondNum.integerValue == 0){ + self.confirmBtn.enabled = NO; + self.myGoldView.text = @""; + self.myDiamondsView.text = @""; + + return; + } + self.confirmBtn.enabled = YES; + self.goldNum = goldNum; + self.diamondNum = diamondNum; + self.myGoldView.count = goldNum; + self.chooseType = IncomeRecord_Diamond; + + }; + +} +- (void)initSubViewConstraints { + + [self.myGoldView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(15)); + make.left.mas_equalTo(kGetScaleWidth(15)); + make.right.mas_equalTo(-kGetScaleWidth(15)); + make.height.mas_equalTo(kGetScaleWidth(116)); + }]; + [self.myDiamondsView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.height.equalTo(self.myGoldView); + make.top.equalTo(self.myGoldView.mas_bottom); + }]; + [self.confirmBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(296)); + make.width.mas_equalTo(kGetScaleWidth(345)); + make.height.mas_equalTo(kGetScaleWidth(46)); + make.centerX.equalTo(self); + }]; +} +-(void)setModel:(XPExchangeDiamondsModel *)model{ + _model = model; + _myGoldView.model = _model; + _myDiamondsView.model = _model; +} +-(void)confirmAction{ + if( self.model.golds < self.goldNum.doubleValue){ + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPExchangeDiamondsView2")]; + return; + } + if(self.diamondNum.doubleValue < self.model.minDiamonds){ + [XNDJTDDLoadingTool showErrorWithMessage:[NSString stringWithFormat:YMLocalizedString(@"XPExchangeDiamondsView3"),self.model.minDiamonds]]; + return; + } + if(self.diamondNum.doubleValue > self.model.maxDiamonds){ + [XNDJTDDLoadingTool showErrorWithMessage:[NSString stringWithFormat:YMLocalizedString(@"XPExchangeDiamondsView4"),self.model.maxDiamonds]]; + return; + } + [self.myGoldView resignResponder]; + [self.myDiamondsView resignResponder]; + if(self.delegate && [self.delegate respondsToSelector:@selector(confirmExchangeDiamondsWithDiamond:gold:currency:)]){ + [self.delegate confirmExchangeDiamondsWithDiamond:self.diamondNum gold:self.goldNum currency:self.chooseType == IncomeRecord_Diamond ? @"1" : @"3"]; + } +} +#pragma mark -懒加载 +- (XPExchangeDiamondsItemView *)myGoldView{ + if (!_myGoldView){ + _myGoldView = [[XPExchangeDiamondsItemView alloc]initWithFrame:CGRectZero type:IncomeRecord_Gold]; + [_myGoldView setCornerWithLeftTopCorner:kGetScaleWidth(14) rightTopCorner:kGetScaleWidth(14) bottomLeftCorner:0 bottomRightCorner:0 size:CGSizeMake(kGetScaleWidth(345), kGetScaleWidth(116))]; + } + return _myGoldView; +} + +-(XPExchangeDiamondsItemView *)myDiamondsView{ + if (!_myDiamondsView){ + _myDiamondsView = [[XPExchangeDiamondsItemView alloc]initWithFrame:CGRectZero type:IncomeRecord_Diamond]; + [_myDiamondsView setCornerWithLeftTopCorner:0 rightTopCorner:0 bottomLeftCorner:kGetScaleWidth(14) bottomRightCorner:kGetScaleWidth(14) size:CGSizeMake(kGetScaleWidth(345), kGetScaleWidth(116))]; + } + return _myDiamondsView; +} +-(UIButton *)confirmBtn{ + if (!_confirmBtn){ + UIImage *image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientMiddleColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(345), kGetScaleWidth(46))]; + _confirmBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_confirmBtn setTitle:YMLocalizedString(@"XPExchangeDiamondsView1") forState:UIControlStateNormal]; + _confirmBtn.titleLabel.font = [UIFont systemFontOfSize:16]; + [_confirmBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _confirmBtn.layer.cornerRadius = kGetScaleWidth(23); + _confirmBtn.layer.masksToBounds = YES; + _confirmBtn.enabled = NO; + [_confirmBtn setBackgroundImage:image forState:UIControlStateNormal]; + [_confirmBtn addTarget:self action:@selector(confirmAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _confirmBtn; +} +@end + + + +/*******************************************************华丽分割线***************************************************************/ +@interface XPExchangeDiamondsItemView() +///我的数量 +@property (nonatomic,strong) UILabel *titleNumView; +///背景 +@property (nonatomic,strong) UIImageView *bgImageView; +///图标 +@property (nonatomic,strong) UIButton *iconView; +///兑换数量 +@property (nonatomic,strong) XPTextField *numberView; +///箭头 +@property (nonatomic,strong) UIButton *arrowView; +@property (nonatomic,assign) IncomeRecordViewType type; + +@end + +@implementation XPExchangeDiamondsItemView + +-(instancetype)initWithFrame:(CGRect)frame type:(IncomeRecordViewType)type{ + self = [super initWithFrame:frame]; + if(self){ + self.type = type; + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor whiteColor]; + [self addSubview:self.titleNumView]; + [self addSubview:self.bgImageView]; + [self addSubview:self.arrowView]; + [self.bgImageView addSubview:self.iconView]; + [self.bgImageView addSubview:self.numberView]; +} +- (void)initSubViewConstraints { + [self.titleNumView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(15)); + make.top.mas_equalTo(kGetScaleWidth(16)); + make.height.mas_equalTo(kGetScaleWidth(20)); + make.right.mas_equalTo(-kGetScaleWidth(73)); + }]; + [self.arrowView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(kGetScaleWidth(30)); + make.height.mas_equalTo(kGetScaleWidth(30)); + make.right.mas_equalTo(-kGetScaleWidth(38)); + make.centerY.equalTo(self.titleNumView); + }]; + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(14)); + make.right.mas_equalTo(-kGetScaleWidth(14)); + make.top.mas_equalTo(kGetScaleWidth(48)); + make.height.mas_equalTo(kGetScaleWidth(52)); + }]; + [self.iconView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(kGetScaleWidth(40)); + make.height.mas_equalTo(kGetScaleWidth(40)); + make.left.mas_equalTo(kGetScaleWidth(10)); + make.centerY.equalTo(self.bgImageView); + }]; + [self.numberView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.bottom.equalTo(self.bgImageView); + make.right.mas_equalTo(-kGetScaleWidth(12)); + make.left.equalTo(self.iconView.mas_right).mas_offset(5); + }]; +} +#pragma mark - 赋值 +-(void)setModel:(XPExchangeDiamondsModel *)model{ + _model = model; + if(self.type == IncomeRecord_Diamond){ + _titleNumView.text = [NSString stringWithFormat:YMLocalizedString(@"XPExchangeDiamondsItemView0"),@(_model.diamonds)]; + NSString *diamondNum = [NSString stringWithFormat:@"%ld",_model.minDiamonds];; + NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc]initWithString:diamondNum attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16 weight:UIFontWeightMedium],NSForegroundColorAttributeName:UIColorFromRGB(0xACB8D9)}]; + _numberView.attributedPlaceholder = attStr; + + }else{ + NSString *goldNum = [NSString stringWithFormat:@"%.0f",ceilf(_model.minDiamonds / _model.rate)]; + NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc]initWithString:goldNum attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16 weight:UIFontWeightMedium],NSForegroundColorAttributeName:UIColorFromRGB(0xACB8D9)}]; + _numberView.attributedPlaceholder = attStr; + _titleNumView.text = [NSString stringWithFormat:YMLocalizedString(@"XPExchangeDiamondsItemView1"),_model.golds]; + } + +} + +-(void)resignResponder{ + [_numberView resignFirstResponder]; +} +-(void)setText:(NSString *)text{ + _text = text; + _numberView.text = _text; + +} +-(void)setCount:(NSString *)count{ + _count = count; + _numberView.text = _count; +} +-(void)textFieldDidChange:(UITextField *)textField{ + if (textField.text.length == 0){ + if(self.inputCounthandle){ + self.inputCounthandle(@"0", @"0"); + } + return; + + } + NSInteger count = textField.text.integerValue; + if(self.type == IncomeRecord_Diamond){ + NSString *goldNum = [NSString stringWithFormat:@"%.0f",ceilf(count / _model.rate)]; + if(self.inputCounthandle){ + self.inputCounthandle(goldNum, textField.text); + } + return; + } + NSString *diamondNum = [NSString stringWithFormat:@"%.0f",floorf(count * _model.rate)]; + if(self.inputCounthandle){ + self.inputCounthandle(textField.text,diamondNum); + } + +} +#pragma mark -懒加载 + +- (UILabel *)titleNumView { + if (!_titleNumView) { + _titleNumView = [[UILabel alloc] init]; + _titleNumView.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + _titleNumView.textColor =[DJDKMIMOMColor inputTextColor]; + NSString *title = self.type == IncomeRecord_Diamond ? YMLocalizedString(@"XPExchangeDiamondsItemView0"): YMLocalizedString(@"XPExchangeDiamondsItemView1"); + _titleNumView.text = [NSString stringWithFormat:title,@"0"]; + } + return _titleNumView; +} + +- (UIImageView *)bgImageView{ + if (!_bgImageView){ + _bgImageView = [UIImageView new]; + if(self.type == IncomeRecord_Gold){ + _bgImageView.image = [UIImage gradientColorImageFromColors:@[ UIColorFromRGB(0xDCE6FD),UIColorFromRGB(0xD8E3FE)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(317), kGetScaleWidth(52))]; + }else{ + _bgImageView.image = [UIImage gradientColorImageFromColors:@[ UIColorFromRGB(0xFEECD2),UIColorFromRGB(0xFFDE90)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(317), kGetScaleWidth(52))]; + } + [_bgImageView setCornerWithLeftTopCorner:kGetScaleWidth(8) rightTopCorner:kGetScaleWidth(8) bottomLeftCorner:kGetScaleWidth(8) bottomRightCorner:kGetScaleWidth(8) size:CGSizeMake(kGetScaleWidth(317), kGetScaleWidth(52))]; + _bgImageView.userInteractionEnabled = YES; + + } + return _bgImageView; +} +-(UIButton *)iconView{ + if (!_iconView){ + UIImage *image = self.type == IncomeRecord_Diamond ? [UIImage imageNamed:@"exchange_diamonds_icon"] : [UIImage imageNamed:@"exchange_diamonds_icon"]; + _iconView = [UIButton buttonWithType:UIButtonTypeCustom]; + _iconView.backgroundColor = [UIColor whiteColor]; + _iconView.layer.cornerRadius = kGetScaleWidth(20); + _iconView.layer.masksToBounds = YES; + [_iconView setImage:image forState:UIControlStateNormal]; + } + return _iconView; +} + +- (XPTextField *)numberView{ + if (!_numberView){ + _numberView = [[XPTextField alloc]initWithFrame:CGRectZero]; + _numberView.keyboardType = UIKeyboardTypeNumberPad; + _numberView.isValidation = YES; + NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc]initWithString:@"0" attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16 weight:UIFontWeightMedium],NSForegroundColorAttributeName:UIColorFromRGB(0xACB8D9)}]; + _numberView.attributedPlaceholder = attStr; + _numberView.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + _numberView.textColor = [DJDKMIMOMColor inputTextColor]; + _numberView.textAlignment = NSTextAlignmentRight; + [_numberView addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; + } + return _numberView; +} +-(UIButton *)arrowView{ + if (!_arrowView){ + _arrowView = [UIButton new]; + [_arrowView setImage:[UIImage imageNamed:@"exchange_diamonds_arrow"] forState:UIControlStateNormal]; + _arrowView.hidden = self.type == IncomeRecord_Gold; + } + return _arrowView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPGoldDetailsChooseRoomCell.h b/YuMi/Modules/YMMine/View/IncomeRecord/XPGoldDetailsChooseRoomCell.h new file mode 100644 index 00000000..3748b85f --- /dev/null +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPGoldDetailsChooseRoomCell.h @@ -0,0 +1,17 @@ +// +// XPGoldDetailsChooseRoomCell.h +// YuMi +// +// Created by YuMi on 2022/12/15. +// + +#import +#import "XPIncomeRecordGoldDetailsModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPGoldDetailsChooseRoomCell : UITableViewCell +@property (nonatomic,strong) XPIncomeRecordGoldDetailItemModel *model; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPGoldDetailsChooseRoomCell.m b/YuMi/Modules/YMMine/View/IncomeRecord/XPGoldDetailsChooseRoomCell.m new file mode 100644 index 00000000..fd79710c --- /dev/null +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPGoldDetailsChooseRoomCell.m @@ -0,0 +1,70 @@ +// +// XPGoldDetailsChooseRoomCell.m +// YuMi +// +// Created by YuMi on 2022/12/15. +// + +#import "XPGoldDetailsChooseRoomCell.h" +#import "NetImageView.h" +#import "UIView+Corner.h" +@interface XPGoldDetailsChooseRoomCell() +@property (nonatomic,strong) NetImageView *headImage; +@property (nonatomic,strong) UILabel *nameView; +@end +@implementation XPGoldDetailsChooseRoomCell +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +- (void)setModel:(XPIncomeRecordGoldDetailItemModel *)model{ + _model = model; + _headImage.imageUrl = _model.ownerAvatar; + _nameView.text = _model.hallName; +} +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor whiteColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.headImage]; + [self.contentView addSubview:self.nameView]; + +} +- (void)initSubViewConstraints { + [self.headImage mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(kGetScaleWidth(34)); + make.top.mas_equalTo(kGetScaleWidth(12)); + make.centerX.equalTo(self.contentView); + }]; + [self.nameView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(kGetScaleWidth(14)); + make.left.right.equalTo(self.contentView).inset(kGetScaleWidth(5)); + + make.top.mas_equalTo(kGetScaleWidth(52)); + }]; +} +#pragma mark -懒加载 +- (NetImageView *)headImage{ + if (!_headImage){ + NetImageConfig *config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _headImage = [[NetImageView alloc]initWithConfig:config]; + [_headImage setCornerWithLeftTopCorner:kGetScaleWidth(6) rightTopCorner:kGetScaleWidth(6) bottomLeftCorner:kGetScaleWidth(6) bottomRightCorner:kGetScaleWidth(6) size:CGSizeMake(kGetScaleWidth(34), kGetScaleWidth(34))]; + } + return _headImage; +} + +- (UILabel *)nameView { + if (!_nameView) { + _nameView = [[UILabel alloc] init]; + _nameView.font = [UIFont systemFontOfSize:10]; + _nameView.textColor = [DJDKMIMOMColor inputTextColor]; + _nameView.textAlignment = NSTextAlignmentCenter; + } + return _nameView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPGoldDetailsChooseRoomView.h b/YuMi/Modules/YMMine/View/IncomeRecord/XPGoldDetailsChooseRoomView.h new file mode 100644 index 00000000..7c8f9446 --- /dev/null +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPGoldDetailsChooseRoomView.h @@ -0,0 +1,25 @@ +// +// XPGoldDetailsChooseRoomView.h +// YuMi +// +// Created by YuMi on 2022/11/24. +// + +#import +#import "XPIncomeRecordGoldDetailsModel.h" +NS_ASSUME_NONNULL_BEGIN + +@protocol XPGoldDetailsChooseRoomViewDelegate + +-(void)chooseBelongRoomWithModel:(XPIncomeRecordGoldDetailItemModel *)model; + +@end + + +@interface XPGoldDetailsChooseRoomView : UIView +@property (nonatomic,strong) XPIncomeRecordGoldDetailsModel *detailModel; +@property (nonatomic,weak) id delegate; +@property (nonatomic,assign) BOOL isReset; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPGoldDetailsChooseRoomView.m b/YuMi/Modules/YMMine/View/IncomeRecord/XPGoldDetailsChooseRoomView.m new file mode 100644 index 00000000..4155450b --- /dev/null +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPGoldDetailsChooseRoomView.m @@ -0,0 +1,82 @@ +// +// XPGoldDetailsChooseRoomView.m +// YuMi +// +// Created by YuMi on 2022/11/24. +// + +#import "XPGoldDetailsChooseRoomView.h" +#import "XPGoldDetailsChooseRoomCell.h" +@interface XPGoldDetailsChooseRoomView() +@property (nonatomic,strong) UITableView *tableView; +@property (nonatomic,strong) NSMutableArray *modelList; +@property (nonatomic,strong) NSIndexPath *path; +@end +@implementation XPGoldDetailsChooseRoomView + +-(instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if(self){ + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +-(void)setDetailModel:(XPIncomeRecordGoldDetailsModel *)detailModel{ + _detailModel = detailModel; + _modelList = [NSMutableArray arrayWithArray:_detailModel.hallVoList]; + [_tableView reloadData]; +} +#pragma mark - Private Method +- (void)initSubViews { + self.path = [NSIndexPath indexPathForRow:0 inSection:0]; + self.backgroundColor = [UIColor whiteColor]; + [self addSubview:self.tableView]; + + +} +- (void)setIsReset:(BOOL)isReset{ + _isReset = isReset; + self.path = [NSIndexPath indexPathForRow:0 inSection:0]; + [self.tableView reloadData]; +} +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self); + }]; +} +-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ + return _modelList.count; +} +-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ + XPGoldDetailsChooseRoomCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPGoldDetailsChooseRoomCell class]) forIndexPath:indexPath]; + cell.model = self.modelList[indexPath.row]; + cell.contentView.backgroundColor = self.path.row == indexPath.row ? [UIColor whiteColor] :UIColorFromRGB(0xF0F5F6); + return cell; +} +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ + if(self.delegate && [self.delegate respondsToSelector:@selector(chooseBelongRoomWithModel:)]){ + [self.delegate chooseBelongRoomWithModel:self.modelList[indexPath.row]]; + } + self.path = indexPath; + [self.tableView reloadData]; +} +#pragma mark -懒加载 +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.rowHeight = kGetScaleWidth(78); + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPGoldDetailsChooseRoomCell class] forCellReuseIdentifier:NSStringFromClass([XPGoldDetailsChooseRoomCell class])]; + + } + return _tableView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordGoldDetailsPickViewView.h b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordGoldDetailsPickViewView.h new file mode 100644 index 00000000..a478d198 --- /dev/null +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordGoldDetailsPickViewView.h @@ -0,0 +1,36 @@ +// +// XPIncomeRecordGoldDetailsPickViewView.h +// YuMi +// +// Created by YuMi on 2022/11/28. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPIncomeRecordGoldDetailsPickViewViewDelegate + +///点了确认按钮 +- (void)didClickSureActionWtihStartDate:(NSDate *)startDate endDate:(NSDate *)endDate; + +@end + +@interface XPIncomeRecordGoldDetailsPickViewView : UIView +///当前的时间 +@property (nonatomic,strong) NSDate *currentDate; +@property (nonatomic,weak) id delegate; +-(instancetype)initWithFrame:(CGRect)frame curDate:(NSDate *)date; +@end + + + + +@interface DatePickerView : UIView + +@property(nonatomic,assign)CGFloat leftWidth; +@property(nonatomic,strong)UIView *lineView; +@property(nonatomic,strong) UILabel *titleLab; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordGoldDetailsPickViewView.m b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordGoldDetailsPickViewView.m new file mode 100644 index 00000000..daa0589b --- /dev/null +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordGoldDetailsPickViewView.m @@ -0,0 +1,445 @@ +// +// XPIncomeRecordGoldDetailsPickViewView.m +// YuMi +// +// Created by YuMi on 2022/11/28. +// + +#import "XPIncomeRecordGoldDetailsPickViewView.h" +#import "NSDate+DateUtils.h" +#import "UIView+Corner.h" +@interface XPIncomeRecordGoldDetailsPickViewView() +@property (nonatomic,strong) UIView *bgView; +@property (nonatomic,strong) UIButton *cancelBtn; +@property (nonatomic,strong) UIButton *confirmBtn; +@property (nonatomic,strong) UILabel *titleView; +@property (strong, nonatomic) UIPickerView *pickerView; +@property (nonatomic,strong)NSMutableArray * selDateArray; +@property (nonatomic,strong)NSMutableArray * dataArray;//数据源 +@property (nonatomic,strong)NSDateComponents * components;//时间结构体、可计算时间间隔、获取年月日时分、 +///开始的时间 +@property (nonatomic,strong) NSDate *startDate; +///结束的时间 +@property (nonatomic,strong) NSDate *endDate; +@property (nonatomic,copy) NSArray *yearArr; + +///距离当前时间三个月的时间 +@property (nonatomic,strong) NSDate *threeMinStartDate; +@property (nonatomic,strong) NSDate *threeMinEndDate; +@property (nonatomic,strong) NSDate *threeMaxStartDate; +@property (nonatomic,strong) NSDate *threeMaxEndDate; +@property (nonatomic,assign) BOOL isHaveEffectiveDate; + + +@end +@implementation XPIncomeRecordGoldDetailsPickViewView + +-(instancetype)initWithFrame:(CGRect)frame curDate:(NSDate *)date{ + self = [super initWithFrame:frame]; + if(self){ + [self initSubViews]; + [self initSubViewConstraints]; + [self weekDayWithCurrentDate:date]; + [self initDate:date]; + self.currentDate = date; + + } + return self; +} + +#pragma mark - Private Method + +- (void)initSubViews { + self.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5]; + [self addSubview:self.bgView]; + [self.bgView addSubview:self.cancelBtn]; + [self.bgView addSubview:self.confirmBtn]; + [self.bgView addSubview:self.titleView]; + [self.bgView addSubview:self.pickerView]; +} +- (void)initSubViewConstraints { + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.equalTo(self).inset(kGetScaleWidth(0)); + make.height.mas_equalTo(kGetScaleWidth(302)); + }]; + [self.cancelBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(15)); + make.top.mas_equalTo(kGetScaleWidth(20)); + make.width.mas_equalTo(kGetScaleWidth(35)); + make.height.mas_equalTo(kGetScaleWidth(20)); + + }]; + [self.confirmBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(20)); + make.right.mas_equalTo(-kGetScaleWidth(15)); + }]; + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(59)); + make.centerX.equalTo(self.bgView); + + }]; + [self.pickerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(80)); + make.left.right.bottom.equalTo(self.bgView).inset(kGetScaleWidth(0)); + + }]; + +} +-(void)initDate:(NSDate *)date{ + + self.yearArr = @[YMLocalizedString(@"XPIncomeRecordGoldDetailsPickViewView3") ,YMLocalizedString(@"XPIncomeRecordGoldDetailsPickViewView4"),YMLocalizedString(@"XPIncomeRecordGoldDetailsPickViewView5")]; + _selDateArray = [[NSMutableArray alloc]init]; + NSCalendar * calender = [NSCalendar currentCalendar]; + _components = [calender components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute fromDate:[NSDate date]]; + NSArray * timeArr = [[NSArray alloc]init]; + NSTimeInterval startTimeNum = [self.startDate timeIntervalSince1970] ; + NSString *timeStr = [NSDate timestampSwitchTime:startTimeNum andFormatter:@"yyyy-MM-dd"]; + NSTimeInterval endTimeNum = [self.endDate timeIntervalSince1970] ; + NSString *endTime = [NSDate timestampSwitchTime:endTimeNum andFormatter:@"yyyy-MM-dd"]; + self.titleView.text = [NSString stringWithFormat:@"%@ %@ %@",timeStr,YMLocalizedString(@"XPIncomeRecordGoldDetailsPickViewView2"),endTime]; + [self judgeDateIsHaveEffective]; + if (timeStr) { + timeArr = [self receiveTime:timeStr]; + } + if (timeArr.count == 3) {//需要显示传入的时间 + + _dataArray = [self dataSourceArrayWithMonth:self.components.month year:self.components.year]; + _selDateArray = [timeArr mutableCopy]; + + for (int i = 0; i < 3; i++) { + + [_pickerView selectRow: [_dataArray[i] indexOfObject:_selDateArray[i]] inComponent:i animated:YES]; + } + } +} +-(void)judgeDateIsHaveEffective{ + NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; + [formatter setDateFormat:@"yyyy-MM-dd"]; + NSDate *resDate; +#ifdef DEBUG + resDate = [formatter dateFromString:@"2022-09-05"]; +#else + resDate = [formatter dateFromString:@"2022-12-05"]; +#endif + if([self.startDate compare:resDate] == NSOrderedAscending){ + self.isHaveEffectiveDate = NO; + }else if([self.startDate compare:self.threeMinStartDate] == NSOrderedAscending){ + self.isHaveEffectiveDate = NO; + }else if ([self.startDate compare:self.threeMaxStartDate] == NSOrderedDescending){ + self.isHaveEffectiveDate = NO; + }else{ + self.isHaveEffectiveDate = YES; + } + +} +- (void)weekDayWithCurrentDate:(NSDate *)date { + NSCalendar * calendar = [NSCalendar currentCalendar]; // 指定日历的算法 + NSDateComponents *comps = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitWeekday | NSCalendarUnitDay fromDate:date]; + // 获取今天是周几 + // 1 是周日,2是周一 3.以此类推 + NSInteger weekDay = [comps weekday]; + // 获取几天是几号 + NSInteger day = [comps day]; + long firstDiff,lastDiff; + if (weekDay == 1){ + firstDiff = -6; + lastDiff = 0; + } else { + firstDiff = -(weekDay - 2); + lastDiff = 8 - weekDay; + } + // 在当前日期(去掉时分秒)基础上加上差的天数 + NSDateComponents *baseDayComp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:date]; + //获取周一日期 + [baseDayComp setDay:day + firstDiff]; + NSDate *firstDayOfWeek = [calendar dateFromComponents:baseDayComp]; + self.startDate = firstDayOfWeek; + //获取周末日期 + [baseDayComp setDay:day + lastDiff]; + NSDate *lastDayOfWeek = [calendar dateFromComponents:baseDayComp]; + self.endDate = lastDayOfWeek; + + //获取距离当前三个月日期 + if(self.threeMinStartDate == nil){ + [baseDayComp setDay:day + firstDiff - 3 * 4 * 7 ]; + self.threeMinStartDate = [calendar dateFromComponents:baseDayComp]; + [baseDayComp setDay:day + lastDiff - 3 * 4 * 7 ]; + self.threeMinEndDate = [calendar dateFromComponents:baseDayComp]; + [baseDayComp setDay:day + firstDiff]; + self.threeMaxStartDate = [calendar dateFromComponents:baseDayComp]; + [baseDayComp setDay:day + lastDiff]; + self.threeMaxEndDate = [calendar dateFromComponents:baseDayComp]; + } + + + +} +-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{ + + return 3; +} + +-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{ + + return [_dataArray[component] count]; +} + +-(CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component{ + + return KScreenWidth / 3; +} +-(CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component{ + return 48; +} + +-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{ + [self changeSpearatorLineColor]; + DatePickerView *lab = (DatePickerView *)view; + if (!lab) { + lab = [[DatePickerView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth/3, 48)]; + } + + + lab.lineView.hidden = YES; + if ([_selDateArray[component] isEqualToString: self.dataArray[component][row]] ) { + + lab.lineView.hidden = component == 2; + lab.titleLab.font = [UIFont systemFontOfSize:20 weight:UIFontWeightSemibold]; + lab.titleLab.textColor = self.isHaveEffectiveDate ? [DJDKMIMOMColor inputTextColor] : [DJDKMIMOMColor disableButtonTextColor]; + lab.titleLab.text= [NSString stringWithFormat:@"%@%@",self.selDateArray[component],self.yearArr[component]]; + + }else{ + lab.titleLab.font = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; + lab.titleLab.textColor = [DJDKMIMOMColor disableButtonTextColor]; + lab.titleLab.text = [NSString stringWithFormat:@"%@%@",self.dataArray[component][row],self.yearArr[component]]; + } + + + + return lab; +} + +-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{ + ///选择时间后,要重置日期数据源 + if(component == 0){ + self.dataArray = [self dataSourceArrayWithMonth:[_selDateArray[1]integerValue] year:[self.dataArray[component][row]integerValue]]; + + }else if (component == 1){ + self.dataArray = [self dataSourceArrayWithMonth:[self.dataArray[component][row]integerValue] year:[_selDateArray[0]integerValue]]; + } + ///防止选择最大月份时,再选择最小月份日期出错,如,润年选择2月29日,再选择非润年,导致非润年出现2月29日 + if([[self.dataArray[2] lastObject]integerValue] < [_selDateArray[2]integerValue]){ + _selDateArray[2] = [self.dataArray[2] lastObject]; + } + + + [_selDateArray replaceObjectAtIndex:component withObject:self.dataArray[component][row]]; + NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; + [formatter setDateFormat:@"yyyy-MM-dd"]; + NSString *date = [NSString stringWithFormat:@"%@-%@-%@",_selDateArray[0],_selDateArray[1],_selDateArray[2]]; + NSDate *resDate = [formatter dateFromString:date]; + [self weekDayWithCurrentDate:resDate]; + [self judgeDateIsHaveEffective]; + NSTimeInterval startTimeNum = [self.startDate timeIntervalSince1970] ; + NSString *timeStr = [NSDate timestampSwitchTime:startTimeNum andFormatter:@"yyyy-MM-dd"]; + NSTimeInterval endTimeNum = [self.endDate timeIntervalSince1970] ; + NSString *endTime = [NSDate timestampSwitchTime:endTimeNum andFormatter:@"yyyy-MM-dd"]; + self.titleView.text = [NSString stringWithFormat:@"%@ %@ %@",timeStr,YMLocalizedString(@"XPIncomeRecordGoldDetailsPickViewView2"),endTime]; + [pickerView reloadAllComponents]; + +} + +#pragma mark - 改变分割线的颜色 +- (void)changeSpearatorLineColor { + + for(UIView *speartorView in _pickerView.subviews) { + + if (speartorView.frame.size.height < 80) {//找出当前的 View + /// 背景 + speartorView.backgroundColor = [UIColor whiteColor]; + // 添加分割线 (判断只添加一次 滑动不断刷新) + + + speartorView.backgroundColor = [UIColor clearColor]; + }else{ + speartorView.backgroundColor = [UIColor clearColor]; + } + } +} + +//分解传来需要显示的时间 +-(NSArray *)receiveTime:(NSString *)timeStr{ + + NSArray * timeArray = [timeStr componentsSeparatedByString:@"-"]; + NSMutableArray * timeArr = [[NSMutableArray alloc]init]; + for (int i = 0; i + +@protocol XPIncomeRecordGoldDetailsTimeViewDelegate + +-(void)chooseTime; + +@end + + +NS_ASSUME_NONNULL_BEGIN + +@interface XPIncomeRecordGoldDetailsTimeView : UIView +@property (nonatomic,weak) id delegate; +@property (nonatomic,copy) NSString *time; +@property (nonatomic,strong,readonly) UIButton *minusBtn; +@property (nonatomic,strong,readonly) UIButton *addBtn; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordGoldDetailsTimeView.m b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordGoldDetailsTimeView.m new file mode 100644 index 00000000..a2f7c10f --- /dev/null +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordGoldDetailsTimeView.m @@ -0,0 +1,85 @@ +// +// XPIncomeRecordGoldDetailsTimeView.m +// YuMi +// +// Created by YuMi on 2022/11/24. +// + +#import "XPIncomeRecordGoldDetailsTimeView.h" +@interface XPIncomeRecordGoldDetailsTimeView() +@property (nonatomic,strong) UIButton *minusBtn; +@property (nonatomic,strong) UIButton *addBtn; +@property (nonatomic,strong) UILabel *timeView; + +@end + +@implementation XPIncomeRecordGoldDetailsTimeView + +-(instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if(self){ + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +-(void)setTime:(NSString *)time{ + _time = time; + _timeView.text = _time; +} +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = UIColorFromRGB(0xF4F0FE); + [self addSubview:self.minusBtn]; + [self addSubview:self.timeView]; + [self addSubview:self.addBtn]; +} +- (void)initSubViewConstraints { + + [self.timeView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.equalTo(self); + }]; + [self.minusBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(kGetScaleWidth(24)); + make.centerY.equalTo(self); + make.right.equalTo(self.timeView.mas_left).mas_offset(-kGetScaleWidth(20)); + }]; + [self.addBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.centerY.equalTo(self.minusBtn); + make.left.equalTo(self.timeView.mas_right).mas_offset(kGetScaleWidth(20)); + }]; +} +-(void)chooseTimeAction{ + if(self.delegate && [self.delegate respondsToSelector:@selector(chooseTime)]){ + [self.delegate chooseTime]; + } +} +#pragma mark -懒加载 +- (UIButton *)minusBtn{ + if (!_minusBtn){ + _minusBtn = [UIButton new]; + [_minusBtn setImage:[UIImage imageNamed:@"gold_details_minus"] forState:UIControlStateNormal]; + } + return _minusBtn; +} +-(UIButton *)addBtn{ + if (!_addBtn){ + _addBtn = [UIButton new]; + [_addBtn setImage:[UIImage imageNamed:@"gold_details_add"] forState:UIControlStateNormal]; + } + return _addBtn; +} + +- (UILabel *)timeView { + if (!_timeView) { + _timeView = [[UILabel alloc] init]; + _timeView.font = [UIFont systemFontOfSize:15]; + _timeView.textColor = UIColorFromRGB(0x6D6B89); + _timeView.textAlignment = NSTextAlignmentCenter; + _timeView.userInteractionEnabled = YES; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(chooseTimeAction)]; + [_timeView addGestureRecognizer:tap]; + } + return _timeView; +} +@end diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordGoldDetailsVC.h b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordGoldDetailsVC.h new file mode 100644 index 00000000..a97c95d6 --- /dev/null +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordGoldDetailsVC.h @@ -0,0 +1,15 @@ +// +// XPIncomeRecordGoldDetailsVC.h +// YuMi +// +// Created by YuMi on 2022/11/24. +// +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPIncomeRecordGoldDetailsVC : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordGoldDetailsVC.m b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordGoldDetailsVC.m new file mode 100644 index 00000000..71020569 --- /dev/null +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordGoldDetailsVC.m @@ -0,0 +1,147 @@ +// +// XPIncomeRecordGoldDetailsVC.m +// YuMi +// +// Created by YuMi on 2022/11/24. +// + +#import "XPIncomeRecordGoldDetailsVC.h" +///vc +#import "XPIncomeRecordGoldDetailsView.h" +///Present +#import "XPIncomeRecordPresent.h" +///model +#import "XPIncomeRecordGoldDetailsModel.h" +#import "NSDate+DateUtils.h" +@interface XPIncomeRecordGoldDetailsVC () +@property (nonatomic,strong) XPIncomeRecordGoldDetailsView *goldDetailsView; +@property (nonatomic,strong) XPIncomeRecordGoldDetailsModel *detailModel; +///开始的时间 +@property (nonatomic,strong) NSDate *startDate; +///结束的时间 +@property (nonatomic,strong) NSDate *endDate; +///开始的时间 +@property (nonatomic,copy) NSString *startTime; +///结束的时间 +@property (nonatomic,copy) NSString *endDateTime; +@end + +@implementation XPIncomeRecordGoldDetailsVC +- (XPIncomeRecordPresent *)createPresenter { + return [[XPIncomeRecordPresent alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + [self weekDayWithCurrentDate:[NSDate date] type:0]; + [self getCurTime]; +} +-(void)getGoldDetailsDataSuccess:(XPIncomeRecordGoldDetailsModel *)detailModel{ + [self hideHUD]; + self.detailModel = detailModel; + _goldDetailsView.detailModel = _detailModel; +} +-(void)getCurTime{ + NSTimeInterval startTimeNum = [self.startDate timeIntervalSince1970] ; + NSTimeInterval endTimeNum = [self.endDate timeIntervalSince1970] ; + NSString *startTime = [NSDate timestampSwitchTime:startTimeNum andFormatter:@"yyyy-MM-dd"]; + NSString *endTime = [NSDate timestampSwitchTime:endTimeNum andFormatter:@"yyyy-MM-dd"]; + self.startTime = startTime; + self.endDateTime = endTime; + self.goldDetailsView.startDate = self.startDate; + self.goldDetailsView.endDate = self.endDate; + self.goldDetailsView.time = [NSString stringWithFormat:@"%@ %@ %@",startTime,YMLocalizedString(@"XPIncomeRecordGoldDetailsVC1"),endTime]; + [self.presenter getGoldDetailsDataWithStartTime:startTime endTime:endTime]; + +} +- (void)weekDayWithCurrentDate:(NSDate *)date type:(int)type{ + + NSCalendar * calendar = [NSCalendar currentCalendar]; // 指定日历的算法 + NSDateComponents *comps = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitWeekday | NSCalendarUnitDay fromDate:date]; + // 获取今天是周几 + // 1 是周日,2是周一 3.以此类推 + NSInteger weekDay = [comps weekday]; + // 获取几天是几号 + NSInteger day = [comps day]; + ///type,1,当前周期,1,3,下一个周期,0,2,上一个周期 + NSInteger getDay = 0; + if(type == 1){ + getDay = 0; + }else if (type == 3){ + getDay = -7; + }else if (type == 2){ + getDay = 7; + } + long firstDiff,lastDiff; + if (weekDay == 1){ + firstDiff = -6; + lastDiff = 0; + } else { + firstDiff = -(weekDay - 2) ; + lastDiff = 8 - weekDay ; + } + // 在当前日期(去掉时分秒)基础上加上差的天数 + NSDateComponents *baseDayComp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:date]; + //获取周一日期 + [baseDayComp setDay:day + firstDiff - getDay]; + NSDate *firstDayOfWeek = [calendar dateFromComponents:baseDayComp]; + self.startDate = firstDayOfWeek; + //获取周末日期 + [baseDayComp setDay:day + lastDiff - getDay]; + NSDate *lastDayOfWeek = [calendar dateFromComponents:baseDayComp]; + self.endDate = lastDayOfWeek; + if(self.goldDetailsView.curDate == nil){ + [baseDayComp setDay:day + lastDiff]; + self.goldDetailsView.curDate = [calendar dateFromComponents:baseDayComp]; + + } + +} +#pragma mark - XPIncomeRecordGoldDetailsViewDelegate +-(void)didClickSureWithStartDate:(NSDate *)startDate endDate:(NSDate *)endDate type:(int)type{ + switch (type) { + case 1: + { + [self weekDayWithCurrentDate:startDate type:1]; + [self getCurTime]; + break; + } + case 2: + { + [self weekDayWithCurrentDate:startDate type:2]; + [self getCurTime]; + break; + } + + default: + { + [self weekDayWithCurrentDate:startDate type:3]; + [self getCurTime]; + break; + } + } +} +#pragma mark - Private Method +- (void)initSubViews { + self.view.backgroundColor = [UIColor whiteColor]; + self.title = YMLocalizedString(@"XPIncomeRecordGoldDetailsVC0"); + [self.view addSubview:self.goldDetailsView]; +} +- (void)initSubViewConstraints { + [self.goldDetailsView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.left.right.bottom.equalTo(self.view); + + }]; +} +#pragma mark -懒加载 +- (XPIncomeRecordGoldDetailsView *)goldDetailsView{ + if (!_goldDetailsView){ + _goldDetailsView = [[XPIncomeRecordGoldDetailsView alloc]initWithFrame:CGRectZero]; + _goldDetailsView.delegate = self; + } + return _goldDetailsView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordGoldDetailsView.h b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordGoldDetailsView.h new file mode 100644 index 00000000..43ed07e0 --- /dev/null +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordGoldDetailsView.h @@ -0,0 +1,39 @@ +// +// XPIncomeRecordGoldDetailsView.h +// YuMi +// +// Created by YuMi on 2022/11/24. +// + +#import +#import "XPIncomeRecordGoldDetailsModel.h" +NS_ASSUME_NONNULL_BEGIN + +@protocol XPIncomeRecordGoldDetailsViewDelegate + +///type,1,选择时间,2,选择上一个周期时间,3,选择下一个周期时间 +-(void)didClickSureWithStartDate:(NSDate *)startDate endDate:(NSDate *)endDate type:(int)type; + +@end + + +@interface XPIncomeRecordGoldDetailsView : UIView +@property (nonatomic,strong) XPIncomeRecordGoldDetailsModel *detailModel; + +///最长周期日期 +@property (nonatomic,strong) NSDate *curDate; + +///开始的时间 +@property (nonatomic,copy) NSString *startTime; +///结束的时间 +@property (nonatomic,copy) NSString *endDateTime; +///开始的时间 +@property (nonatomic,strong) NSDate *startDate; +///结束的时间 +@property (nonatomic,strong) NSDate *endDate; +///时间 +@property (nonatomic,copy) NSString *time; +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordGoldDetailsView.m b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordGoldDetailsView.m new file mode 100644 index 00000000..a8c583ba --- /dev/null +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordGoldDetailsView.m @@ -0,0 +1,313 @@ +// +// XPIncomeRecordGoldDetailsView.m +// YuMi +// +// Created by YuMi on 2022/11/24. +// + +#import "XPIncomeRecordGoldDetailsView.h" +///view +#import "XPIncomeRecordGoldDetailsHeadView.h" +#import "XPIncomeRecordGoldDetailsCell.h" +#import "XPIncomeRecordGoldDetailsTimeView.h" +#import "XPGoldDetailsChooseRoomView.h" +#import "XPMineVisitorEmptyTableViewCell.h" +#import "XPNewGuildTimePickView.h" +#import "XPIncomeRecordGoldDetailsPickViewView.h" +#import "NSString+Utils.h" +#import "TTPopup.h" +#import "NSObject+MJExtension.h" +@interface XPIncomeRecordGoldDetailsView() +@property (nonatomic,strong)XPIncomeRecordGoldDetailsTimeView *timeView; +@property (nonatomic,strong) XPIncomeRecordGoldDetailsHeadView *headView; +@property (nonatomic,strong) UITableView *tableView; +@property (nonatomic,strong) UILabel *totalView; +@property (nonatomic,copy) NSArray *modelList; +@property (nonatomic,strong) XPGoldDetailsChooseRoomView *chooseView; +@property (nonatomic,assign) IncomeRecordGoldSortingType sortingType; +@property (nonatomic,strong) NSMutableArray *originalArray; +@end +@implementation XPIncomeRecordGoldDetailsView + + +-(instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if(self){ + + [self initSubViews]; + [self initSubViewConstraints]; + self.sortingType = IncomeRecordGold_Diamond; + + } + return self; +} +-(void)setTime:(NSString *)time{ + _time = time; + _timeView.time = time; + NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; + [formatter setDateFormat:@"yyyy-MM-dd"]; + NSDate *resDate; +#ifdef DEBUG + resDate = [formatter dateFromString:@"2022-09-05"]; +#else + resDate = [formatter dateFromString:@"2022-12-05"]; +#endif + if ([self.startDate compare:resDate] == NSOrderedAscending) { + _timeView.minusBtn.enabled = NO; + }else{ + _timeView.minusBtn.enabled = YES; + } + if ([self.endDate compare:resDate] == NSOrderedAscending) { + _timeView.addBtn.enabled = NO; + }else{ + if ([self.startDate compare:self.curDate] == NSOrderedDescending || [self.endDate compare:self.curDate] == NSOrderedSame) { + _timeView.addBtn.enabled = NO; + }else{ + _timeView.addBtn.enabled = YES; + } + } + +} +#pragma mark - Private Method +- (void)initSubViews { + + [self addSubview:self.timeView]; + [self addSubview:self.headView]; + [self addSubview:self.totalView]; + [self addSubview:self.tableView]; + [self addSubview:self.chooseView]; + +} + +- (void)initSubViewConstraints { + + + [self.timeView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.equalTo(self); + make.height.mas_equalTo(kGetScaleWidth(47)); + }]; + [self.headView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(65)); + make.right.left.equalTo(self); + make.height.mas_equalTo(kGetScaleWidth(153)); + + }]; + [self.chooseView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(kGetScaleWidth(64)); + make.left.mas_equalTo(kGetScaleWidth(0)); + make.top.equalTo(self.headView.mas_bottom); + make.bottom.equalTo(self); + }]; + [self.totalView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.chooseView.mas_right); + make.right.equalTo(self); + make.bottom.equalTo(self).mas_equalTo(- kGetScaleWidth(66)); + }]; + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.equalTo(self); + make.bottom.equalTo(self.totalView.mas_top).mas_offset(-kGetScaleWidth(10)); + make.top.equalTo(self.headView.mas_bottom); + make.left.mas_equalTo(kGetScaleWidth(64)); + }]; + + + +} +-(void)setDetailModel:(XPIncomeRecordGoldDetailsModel *)detailModel{ + _detailModel = detailModel; + _headView.detailModel = _detailModel; + _chooseView.detailModel = _detailModel; + NSMutableArray *modelList = [NSMutableArray array]; + if(_detailModel.hallVoList.count == 0){ + _modelList = modelList; + [_tableView reloadData]; + return; + } + XPIncomeRecordGoldDetailItemModel *chooseModel = _detailModel.hallVoList.firstObject; + NSDictionary *memberObj = _detailModel.hallMemberMap[chooseModel.hallId]; + _totalView.attributedText = [self getTotalAttWtihNum:[NSString stringWithFormat:@"%@",memberObj[@"total"] ?: @"0"]]; + NSArray *itemList = memberObj[@"hallMember"]; + if(itemList != nil){ + NSArray *itemModelList = [XPIncomeRecordGoldDetailItemModel modelsWithArray:itemList]; + NSArray *list = [itemModelList sortedArrayUsingComparator:^NSComparisonResult(XPIncomeRecordGoldDetailItemModel * _Nonnull obj1, XPIncomeRecordGoldDetailItemModel * _Nonnull obj2) { + return obj1.giftDiamonds.integerValue < obj2.giftDiamonds.integerValue; + }]; + modelList = [NSMutableArray arrayWithArray:list]; + } + _modelList = modelList; + [_tableView reloadData]; +} + +#pragma mark - XPIncomeRecordGoldDetailsTimeViewDelegate +-(void)chooseTime{ + XPIncomeRecordGoldDetailsPickViewView *view = [[XPIncomeRecordGoldDetailsPickViewView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight) curDate:self.startDate]; + view.delegate = self; + [[UIApplication sharedApplication].keyWindow addSubview:view]; + +} +#pragma mark - XPNewGuildTimePickViewDelegate +///点了确认按钮 +- (void)xPNewGuildTimePickView:(XPNewGuildTimePickView *)view didClickSure:(UIButton *)sender{ + [TTPopup dismiss]; + self.chooseView.isReset = YES; + if(self.delegate && [self.delegate respondsToSelector:@selector(didClickSureWithStartDate:endDate:type:)]){ + [self.delegate didClickSureWithStartDate:view.startDate endDate:view.endDate type:1]; + } +} +- (void)didClickSureActionWtihStartDate:(NSDate *)startDate endDate:(NSDate *)endDate{ + + self.chooseView.isReset = YES; + if(self.delegate && [self.delegate respondsToSelector:@selector(didClickSureWithStartDate:endDate:type:)]){ + [self.delegate didClickSureWithStartDate:startDate endDate:endDate type:1]; + } +} +///点了取消按钮 +- (void)xPNewGuildTimePickView:(XPNewGuildTimePickView *)view didClickCancel:(UIButton *)sender{ + [TTPopup dismiss]; +} +#pragma mark - XPGoldDetailsChooseRoomViewDelegate +-(void)chooseBelongRoomWithModel:(XPIncomeRecordGoldDetailItemModel *)model{ + [self.headView resetArrow]; + NSMutableArray *modelList = [NSMutableArray array]; + NSDictionary *memberObj = self.detailModel.hallMemberMap[model.hallId]; + self.totalView.attributedText = [self getTotalAttWtihNum:[NSString stringWithFormat:@"%@",memberObj[@"total"]?:@"0"]]; + NSArray *itemList = memberObj[@"hallMember"]; + if(itemList != nil){ + NSArray *itemModelList = [XPIncomeRecordGoldDetailItemModel modelsWithArray:itemList]; + NSArray *list = [itemModelList sortedArrayUsingComparator:^NSComparisonResult(XPIncomeRecordGoldDetailItemModel * _Nonnull obj1, XPIncomeRecordGoldDetailItemModel * _Nonnull obj2) { + return obj1.giftDiamonds.integerValue < obj2.giftDiamonds.integerValue; + }]; + modelList = [NSMutableArray arrayWithArray:list]; + + } + + self.modelList = modelList; + [self.tableView reloadData]; + +} +-(NSMutableAttributedString *)getTotalAttWtihNum:(NSString *)total{ + NSString *getTotal = [NSString stringWithFormat:YMLocalizedString(@"XPIncomeRecordGoldDetailsView1"),[NSString getDealNumwithstring:total]]; + NSMutableAttributedString *totalAtt = [[NSMutableAttributedString alloc]initWithString:getTotal attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14 weight:UIFontWeightMedium],NSForegroundColorAttributeName:[DJDKMIMOMColor inputTextColor]}]; + [totalAtt addAttributes:@{NSForegroundColorAttributeName:UIColorFromRGB(0xDE9F0C)} range:[getTotal rangeOfString:[NSString getDealNumwithstring:total]]]; + return totalAtt; +} +#pragma mark - XPIncomeRecordGoldDetailsCellDelegate + +- (void)chooseGoldCoinOrder:(IncomeRecordGoldSortingType)type isAscending:(BOOL)isAscending{ + self.sortingType = type; + if(type == IncomeRecordGold_Diamond){ + NSArray *list = [self.modelList sortedArrayUsingComparator:^NSComparisonResult(XPIncomeRecordGoldDetailItemModel * _Nonnull obj1, XPIncomeRecordGoldDetailItemModel * _Nonnull obj2) { + if(isAscending == YES){ + return obj2.giftDiamonds.integerValue > obj1.giftDiamonds.integerValue; + } + return obj1.giftDiamonds.integerValue > obj2.giftDiamonds.integerValue; + }]; + self.modelList = [NSMutableArray arrayWithArray:list]; + [self.tableView reloadData]; + return; + } + NSArray *list = [self.modelList sortedArrayUsingComparator:^NSComparisonResult(XPIncomeRecordGoldDetailItemModel * _Nonnull obj1, XPIncomeRecordGoldDetailItemModel * _Nonnull obj2) { + if(isAscending == YES){ + return obj2.remainGolds.integerValue > obj1.remainGolds.integerValue; + } + return obj1.remainGolds.integerValue > obj2.remainGolds.integerValue; + }]; + self.modelList = [NSMutableArray arrayWithArray:list]; + [self.tableView reloadData]; + + +} +#pragma mark - UITableViewDelegate,UITableViewDataSource +-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ + return self.modelList.count > 0 ? self.modelList.count : 1; +} +-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ + if(self.modelList.count > 0){ + return kGetScaleWidth(78); + } + return kGetScaleWidth(400); +} +-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ + if(self.modelList.count > 0){ + XPIncomeRecordGoldDetailsCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPIncomeRecordGoldDetailsCell class]) forIndexPath:indexPath]; + cell.detailModel = self.modelList[indexPath.row]; + + return cell; + } + + XPMineVisitorEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineVisitorEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineVisitorEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineVisitorEmptyTableViewCell class])]; + } + cell.emptyTitle = YMLocalizedString(@"XPIncomeRecordGoldDetailsView0"); + [cell.emptyImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(150)); + }]; + return cell; +} +-(void)minusTimeAction{ + self.chooseView.isReset = YES; + if(self.delegate && [self.delegate respondsToSelector:@selector(didClickSureWithStartDate:endDate:type:)]){ + [self.delegate didClickSureWithStartDate:self.startDate endDate:self.endDate type:2]; + } + +} +-(void)addTimeAction{ + self.chooseView.isReset = YES; + if(self.delegate && [self.delegate respondsToSelector:@selector(didClickSureWithStartDate:endDate:type:)]){ + [self.delegate didClickSureWithStartDate:self.startDate endDate:self.endDate type:3]; + } +} +#pragma mark -懒加载 +- (XPIncomeRecordGoldDetailsTimeView *)timeView{ + if (!_timeView){ + _timeView = [[XPIncomeRecordGoldDetailsTimeView alloc]initWithFrame:CGRectZero]; + _timeView.delegate = self; + [_timeView.minusBtn addTarget:self action:@selector(minusTimeAction) forControlEvents:UIControlEventTouchUpInside]; + [_timeView.addBtn addTarget:self action:@selector(addTimeAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _timeView; +} +- (XPIncomeRecordGoldDetailsHeadView *)headView{ + if (!_headView){ + _headView = [[XPIncomeRecordGoldDetailsHeadView alloc]initWithFrame:CGRectZero]; + _headView.delegate = self; + } + return _headView; +} +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPIncomeRecordGoldDetailsCell class] forCellReuseIdentifier:NSStringFromClass([XPIncomeRecordGoldDetailsCell class])]; + [_tableView registerClass:[XPMineVisitorEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineVisitorEmptyTableViewCell class])]; + + } + return _tableView; +} +- (XPGoldDetailsChooseRoomView *)chooseView{ + if (!_chooseView){ + _chooseView = [[XPGoldDetailsChooseRoomView alloc]initWithFrame:CGRectZero]; + _chooseView.delegate = self; + _chooseView.backgroundColor = UIColorFromRGB(0xF0F5F6); + } + return _chooseView; +} + +- (UILabel *)totalView { + if (!_totalView) { + _totalView = [[UILabel alloc] init]; + _totalView.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _totalView.textColor = [DJDKMIMOMColor inputTextColor]; + } + return _totalView; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordVC.h b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordVC.h new file mode 100644 index 00000000..1e9d2815 --- /dev/null +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordVC.h @@ -0,0 +1,20 @@ +// +// XPIncomeRecordVC.h +// YuMi +// +// Created by YuMi on 2022/11/17. +// + +#import "MvpViewController.h" +#import "ClanDetailInfoModel.h" +#import "UserInfoModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPIncomeRecordVC : MvpViewController +///家族信息 +@property (nonatomic,strong) ClanDetailInfoModel *clanInfo; +///个人信息 +@property (nonatomic,strong) UserInfoModel *userInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordVC.m b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordVC.m new file mode 100644 index 00000000..0371d32a --- /dev/null +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordVC.m @@ -0,0 +1,172 @@ +// +// XPIncomeRecordVC.m +// YuMi +// +// Created by YuMi on 2022/11/17. +// + +#import "XPIncomeRecordVC.h" +///view +#import "XPIncomeRecordView.h" +///vc +#import "XPWebViewController.h" +#import "XPExchangeDiamondsVC.h" +#import "XPIncomeRecordGoldDetailsVC.h" +#import "XPIAPRechargeViewController.h" +///Present +#import "XPIncomeRecordPresent.h" +///Protocol +#import "XPIncomeRecordProtocol.h" +///model +#import "XPIncomeRecordModel.h" +///tool +#import "AccountInfoStorage.h" +#import "YUMIHtmlUrl.h" + +@interface XPIncomeRecordVC () +///钻石 +@property (nonatomic,strong) XPIncomeRecordView *diamondView; +///金币 +@property (nonatomic,strong) XPIncomeRecordView *goldView; +///model +@property (nonatomic,strong) XPIncomeRecordModel *recordModel; +@end + +@implementation XPIncomeRecordVC + +- (XPIncomeRecordPresent *)createPresenter { + return [[XPIncomeRecordPresent alloc] init]; +} +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + [self showLoading]; + [self.presenter requestQueryWithRoomType]; + +} +#pragma mark - Private Method +- (void)initSubViews { + self.view.backgroundColor = [UIColor whiteColor]; + self.title = YMLocalizedString(@"XPIncomeRecordVC0"); + [self.view addSubview:self.diamondView]; + [self.view addSubview:self.goldView]; + self.goldView.isClanPresident = YES; + +} +- (void)initSubViewConstraints { + [self.diamondView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(18)); + make.left.right.equalTo(self.view).inset(kGetScaleWidth(15)); + make.height.mas_equalTo(kGetScaleWidth(144)); + }]; + [self.goldView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.equalTo(self.diamondView); + make.top.equalTo(self.diamondView.mas_bottom).mas_offset(kGetScaleWidth(20)); + make.height.mas_equalTo(!self.goldView.isClanPresident ? kGetScaleWidth( 144) : kGetScaleWidth(90)); + }]; +} +#pragma mark - XPExchangeDiamondsVCDelegate +-(void)confirmExchangeDiamondsWithDiamondSuccess:(NSString *)diamond gold:(NSString *)gold{ + self.recordModel.diamonds = self.recordModel.diamonds + diamond.doubleValue; + self.recordModel.golds = self.recordModel.golds - gold.doubleValue; + NSString *diamondNum = [NSString stringWithFormat:@"%.0f",self.recordModel.diamonds]; + NSString *goldNum = [NSString stringWithFormat:@"%.2f",self.recordModel.golds]; + self.diamondView.number = diamondNum; + self.goldView.number = goldNum; +} +#pragma mark - XPIncomeRecordProtocol +- (void)requestQueryWithRoomTypeFail{ + self.goldView.hidden = NO; +} +-(void)getExchangeDiamondInformation:(XPExchangeDiamondsModel *)model{ + [self hideHUD]; + XPExchangeDiamondsVC *exchangeVC = [XPExchangeDiamondsVC new]; + exchangeVC.model = model; + exchangeVC.delegate = self; + [self.navigationController pushViewController:exchangeVC animated:YES]; +} +-(void)getRecordIncomeSuccess:(XPIncomeRecordModel *)model{ + [self hideHUD]; + self.recordModel = model; + self.goldView.hidden = self.recordModel.roomType == 4; + self.diamondView.number = @(model.diamonds).stringValue; + self.goldView.number = [NSString stringWithFormat:@"%.2f",model.golds]; + NSString * myUid = [AccountInfoStorage instance].getUid; + if(![self.clanInfo.clan.elderUid isEqualToString:myUid]){ + self.goldView.isClanPresident = !self.recordModel.hasGoldExchangeAuth; + if(self.recordModel.hasGoldExchangeAuth == YES){ + [self.goldView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(kGetScaleWidth( 144)); + }]; + } + } + + +} + +#pragma mark - XPIncomeRecordViewDelegate +-(void)clickHandleWithType:(IncomeRecordViewClickType)type{ + switch (type) { + case ClickType_Diamond_Detail: + { + XPWebViewController * webVC =[[XPWebViewController alloc] init]; + webVC.url = URLWithType(kMineEarningsRecord); + [self.navigationController pushViewController:webVC animated:YES]; + break; + } + case ClickType_Diamond_Pay: + { + XPIAPRechargeViewController * webVC =[[XPIAPRechargeViewController alloc] init]; + [self.navigationController pushViewController:webVC animated:YES]; + break; + } + case ClickType_Gold_Exchangel: + { + if(self.recordModel.isClan == NO){ + XPExchangeDiamondsVC *exchangeVC = [XPExchangeDiamondsVC new]; + exchangeVC.delegate = self; + [self.navigationController pushViewController:exchangeVC animated:YES]; + return; + } + [self showLoading]; + [self.presenter getExchangeDiamondInformation]; + + + break; + } + default: + { + XPIncomeRecordGoldDetailsVC *goldDetailVC = [XPIncomeRecordGoldDetailsVC new]; + [self.navigationController pushViewController:goldDetailVC animated:YES]; + break; + } + } +} +#pragma mark -懒加载 +- (XPIncomeRecordView *)diamondView{ + if (!_diamondView){ + _diamondView = [[XPIncomeRecordView alloc]initWithFrame:CGRectZero type:IncomeRecord_Diamond]; + _diamondView.delegate = self; + } + return _diamondView; +} +- (XPIncomeRecordView *)goldView{ + if (!_goldView){ + _goldView = [[XPIncomeRecordView alloc]initWithFrame:CGRectZero type:IncomeRecord_Gold]; + _goldView.delegate = self; + _goldView.hidden = YES; + } + return _goldView; +} +/* + #pragma mark - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + - (void)prexpareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. + } + */ + +@end diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordView.h b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordView.h new file mode 100644 index 00000000..47eeafc5 --- /dev/null +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordView.h @@ -0,0 +1,39 @@ +// +// XPIncomeRecordView.h +// YuMi +// +// Created by YuMi on 2022/11/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef enum : NSUInteger { + IncomeRecord_Diamond,///钻石 + IncomeRecord_Gold///金币 +} IncomeRecordViewType; + +typedef enum : NSUInteger { + ClickType_Diamond_Detail,///钻石明细 + ClickType_Diamond_Pay,///钻石充值 + ClickType_Gold_Detail,///金币明细 + ClickType_Gold_Exchangel,///金币兑换 +} IncomeRecordViewClickType; + + +@protocol XPIncomeRecordViewDelegate + +-(void)clickHandleWithType:(IncomeRecordViewClickType)type; + +@end + +@interface XPIncomeRecordView : UIView +@property (nonatomic,copy) NSString *number; +@property (nonatomic,assign) BOOL isClanPresident; +@property (nonatomic,weak) id delegate; + +-(instancetype)initWithFrame:(CGRect)frame type:(IncomeRecordViewType)type; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordView.m b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordView.m new file mode 100644 index 00000000..a45e1d59 --- /dev/null +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordView.m @@ -0,0 +1,217 @@ +// +// XPIncomeRecordView.m +// YuMi +// +// Created by YuMi on 2022/11/17. +// + +#import "XPIncomeRecordView.h" +#import "UIView+Corner.h" +@interface XPIncomeRecordView() + +/// 背景 +@property (nonatomic,strong) UIImageView *bgImageView; +///标题 +@property (nonatomic,strong) UILabel *titleView; +///明细 +@property (nonatomic,strong) UIButton *detailView; + +///数量 +@property (nonatomic,strong) UILabel *numberView; +///点击btn容器 +@property (nonatomic,strong) UIStackView *btnStackView; +///充值 +@property (nonatomic,strong) UIButton *payBtn; +///兑换 +@property (nonatomic,strong) UIButton *exchangeBtn; + +@property (nonatomic,assign) IncomeRecordViewType type; +@end +@implementation XPIncomeRecordView +-(instancetype)initWithFrame:(CGRect)frame type:(IncomeRecordViewType)type{ + self = [super initWithFrame:frame]; + if(self){ + self.type = type; + [self initSubViews]; + [self initSubViewConstraints]; + + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.bgImageView]; + [self.bgImageView addSubview:self.titleView]; + [self.bgImageView addSubview:self.detailView]; + [self.bgImageView addSubview:self.numberView]; + [self.bgImageView addSubview:self.btnStackView]; + [self.btnStackView addArrangedSubview:self.payBtn]; + [self.btnStackView addArrangedSubview:self.exchangeBtn]; + +} +- (void)initSubViewConstraints { + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self); + }]; + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(17)); + make.left.mas_equalTo(kGetScaleWidth(20)); + make.height.mas_equalTo(kGetScaleWidth(20)); + }]; + [self.detailView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-kGetScaleWidth(20)); + make.height.mas_equalTo(kGetScaleWidth(18)); + make.width.mas_equalTo(kGetScaleWidth(45)); + make.centerY.equalTo(self.titleView); + }]; + + [self.numberView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.titleView); + make.top.mas_equalTo(kGetScaleWidth(49)); + make.height.mas_equalTo(kGetScaleWidth(20)); + make.right.mas_equalTo(-kGetScaleWidth(20)); + }]; + [self.btnStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.equalTo(self.bgImageView).inset(kGetScaleWidth(20)); + make.height.mas_equalTo(kGetScaleWidth(40)); + make.top.mas_equalTo(kGetScaleWidth(86)); + }]; + [self.payBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(kGetScaleWidth(40)); + }]; + [self.exchangeBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(kGetScaleWidth(40)); + }]; +} +-(void)setNumber:(NSString *)number{ + _number = number; + _numberView.text = _number; +} +-(void)setIsClanPresident:(BOOL)isClanPresident{ + _isClanPresident = isClanPresident; + _exchangeBtn.hidden = _isClanPresident; + _detailView.hidden = !_isClanPresident; +} +#pragma mark - btnClick +-(void)clickDetailViewAction{ + if(self.type == IncomeRecord_Diamond){ + [self clickDiamondDetailAction]; + return; + } + [self clickGoldDetailAction]; +} +///钻石明细 +-(void)clickDiamondDetailAction{ + if(self.delegate && [self.delegate respondsToSelector:@selector(clickHandleWithType:)]){ + [self.delegate clickHandleWithType:ClickType_Diamond_Detail]; + } +} +///钻石充值 +-(void)clickDiamondPayAction{ + if(self.delegate && [self.delegate respondsToSelector:@selector(clickHandleWithType:)]){ + [self.delegate clickHandleWithType:ClickType_Diamond_Pay]; + } +} +///金币明细 +-(void)clickGoldDetailAction{ + if(self.delegate && [self.delegate respondsToSelector:@selector(clickHandleWithType:)]){ + [self.delegate clickHandleWithType:ClickType_Gold_Detail]; + } +} +///金币兑换 +-(void)clickGoldExchangelAction{ + if(self.delegate && [self.delegate respondsToSelector:@selector(clickHandleWithType:)]){ + [self.delegate clickHandleWithType:ClickType_Gold_Exchangel]; + } +} + +#pragma mark - 懒加载 +- (UIImageView *)bgImageView{ + if (!_bgImageView){ + _bgImageView = [UIImageView new]; + _bgImageView.userInteractionEnabled = YES; + _bgImageView.contentMode = UIViewContentModeScaleAspectFill; + _bgImageView.layer.cornerRadius = 10.f; + _bgImageView.clipsToBounds = YES; + _bgImageView.image = self.type == IncomeRecord_Diamond ? [UIImage imageNamed:@"income_record_diamond_bg"]: [UIImage imageNamed:@"income_record_gold_bg"]; + } + return _bgImageView; +} + +- (UILabel *)titleView { + if (!_titleView) { + _titleView = [[UILabel alloc] init]; + _titleView.font = [UIFont systemFontOfSize:20 weight:UIFontWeightMedium]; + _titleView.textColor = self.type == IncomeRecord_Diamond ? UIColorFromRGB(0x1B1558) : UIColorFromRGB(0x572714); + _titleView.text = self.type == IncomeRecord_Diamond ? YMLocalizedString(@"XPIncomeRecordView4"):YMLocalizedString(@"XPIncomeRecordView5"); + } + return _titleView; +} + +-(UIButton *)detailView{ + if (!_detailView){ + _detailView = [UIButton new]; + [_detailView setTitle:YMLocalizedString(@"XPIncomeRecordView0") forState:UIControlStateNormal]; + [_detailView setTitleColor:self.type == IncomeRecord_Diamond ? UIColorFromRGB(0x1B1558):UIColorFromRGB(0x582815) forState:UIControlStateNormal]; + _detailView.titleLabel.font = [UIFont systemFontOfSize:13]; + _detailView.imageEdgeInsets = UIEdgeInsetsMake(0, kGetScaleWidth(40), 0, 0); + _detailView.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0); + [_detailView setImage:self.type == IncomeRecord_Diamond ? [UIImage imageNamed:@"income_record_arrow_1"]: [UIImage imageNamed:@"income_record_arrow_2"] forState:UIControlStateNormal]; + [_detailView addTarget:self action:@selector(clickDetailViewAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _detailView; +} + + +- (UILabel *)numberView { + if (!_numberView) { + _numberView = [[UILabel alloc] init]; + _numberView.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; + _numberView.textColor = self.type == IncomeRecord_Diamond ? UIColorFromRGB(0x1B1558) : UIColorFromRGB(0x572714); + _numberView.text = @"0"; + } + return _numberView; +} + +- (UIStackView *)btnStackView{ + if (!_btnStackView){ + _btnStackView = [[UIStackView alloc] init]; + _btnStackView.axis = UILayoutConstraintAxisHorizontal; + _btnStackView.distribution = UIStackViewDistributionFillEqually; + _btnStackView.alignment = UIStackViewAlignmentFill; + _btnStackView.spacing = kGetScaleWidth(13); + } + return _btnStackView; +} +- (UIButton *)payBtn{ + if (!_payBtn){ + _payBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_payBtn setTitle:YMLocalizedString(@"XPIncomeRecordView1") forState:UIControlStateNormal]; + _payBtn.backgroundColor = UIColorFromRGB(0xB1BFFA); + [_payBtn setTitleColor:UIColorFromRGB(0x130C4F) forState:UIControlStateNormal]; + _payBtn.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + _payBtn.layer.cornerRadius = kGetScaleWidth(20); + _payBtn.layer.masksToBounds = YES; + _payBtn.hidden = self.type == IncomeRecord_Gold; + [_payBtn addTarget:self action:@selector(clickDiamondPayAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _payBtn; +} + +-(UIButton *)exchangeBtn{ + if (!_exchangeBtn){ + _exchangeBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_exchangeBtn setTitle:YMLocalizedString(@"XPIncomeRecordView2") forState:UIControlStateNormal]; + [_exchangeBtn setTitleColor:UIColorFromRGB(0x93570B) forState:UIControlStateNormal]; + _exchangeBtn.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + _exchangeBtn.hidden = self.type == IncomeRecord_Diamond; + _exchangeBtn.layer.cornerRadius = kGetScaleWidth(20); + _exchangeBtn.layer.masksToBounds = YES; + _exchangeBtn.layer.borderWidth = 1; + _exchangeBtn.layer.borderColor = UIColorFromRGB(0x93570B).CGColor; + [_exchangeBtn addTarget:self action:@selector(clickGoldExchangelAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _exchangeBtn; +} +@end diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPTextField.h b/YuMi/Modules/YMMine/View/IncomeRecord/XPTextField.h new file mode 100644 index 00000000..999f38ae --- /dev/null +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPTextField.h @@ -0,0 +1,17 @@ +// +// XPTextField.h +// YuMi +// +// Created by YuMi on 2023/7/3. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPTextField : UITextField +@property (nonatomic,assign) BOOL isValidation; +@property (nonatomic,copy) NSString *regular; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPTextField.m b/YuMi/Modules/YMMine/View/IncomeRecord/XPTextField.m new file mode 100644 index 00000000..29b1b753 --- /dev/null +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPTextField.m @@ -0,0 +1,59 @@ +// +// XPTextField.m +// YuMi +// +// Created by YuMi on 2023/7/3. +// + +#import "XPTextField.h" +@interface XPTextField() + +@end +@implementation XPTextField + + +-(instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if(self){ + self.delegate = self; + } + return self; +} + +- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { + if(self.isValidation == NO){ + return YES; + } + return [self validateNumber:string]; +} + +- (BOOL)validateNumber:(NSString*)number { + BOOL res = YES; + NSCharacterSet* tmpSet = [NSCharacterSet characterSetWithCharactersInString:self.regular]; + int i = 0; + while (i < number.length) { + NSString * string = [number substringWithRange:NSMakeRange(i, 1)]; + NSRange range = [string rangeOfCharacterFromSet:tmpSet]; + if (range.length == 0) { + res = NO; + break; + } + i++; + } + return res; +} + +- (NSString *)regular{ + if (!_regular){ + _regular = @"0123456789"; + } + return _regular; +} +- (BOOL)isValidation{ + if (!_isValidation){ + _isValidation = NO; + } + return _isValidation; +} + +@end diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIEssayField.h b/YuMi/Modules/YMMine/View/IncomeRecord/YUMIEssayField.h deleted file mode 100644 index f0badde5..00000000 --- a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIEssayField.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YUMIEssayField.h -// YuMi -// -// Created by YuMi on 2023/7/3. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIEssayField : UITextField -@property (nonatomic,assign) BOOL isValidation; -@property (nonatomic,copy) NSString *regular; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIEssayField.m b/YuMi/Modules/YMMine/View/IncomeRecord/YUMIEssayField.m deleted file mode 100644 index e09d68e0..00000000 --- a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIEssayField.m +++ /dev/null @@ -1,59 +0,0 @@ -// -// YUMIEssayField.m -// YuMi -// -// Created by YuMi on 2023/7/3. -// - -#import "YUMIEssayField.h" -@interface YUMIEssayField() - -@end -@implementation YUMIEssayField - - --(instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if(self){ - self.delegate = self; - } - return self; -} - -- (BOOL)essayUniverse:(UITextField *)essayUniverse shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { - if(self.isValidation == NO){ - return YES; - } - return [self valiengagementDigital:string]; -} - -- (BOOL)valiengagementDigital:(NSString*)number { - BOOL res = YES; - NSCharacterSet* tmpSet = [NSCharacterSet characterSetWithCharactersInString:self.regular]; - int i = 0; - while (i < number.length) { - NSString * string = [number substringWithRange:NSMakeRange(i, 1)]; - NSRange range = [string rangeOfCharacterFromSet:tmpSet]; - if (range.length == 0) { - res = NO; - break; - } - i++; - } - return res; -} - -- (NSString *)regular{ - if (!_regular){ - _regular = @"0123456789"; - } - return _regular; -} -- (BOOL)isValidation{ - if (!_isValidation){ - _isValidation = NO; - } - return _isValidation; -} - -@end diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIExchangeDiamondsRegard.h b/YuMi/Modules/YMMine/View/IncomeRecord/YUMIExchangeDiamondsRegard.h deleted file mode 100644 index de28ac78..00000000 --- a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIExchangeDiamondsRegard.h +++ /dev/null @@ -1,49 +0,0 @@ -// -// YUMIExchangeDiamondsRegard.h -// YuMi -// -// Created by YuMi on 2022/11/17. -// - -#import -#import "YUMIRevenueReflectionRegard.h" -#import "YUMIExchangeDiamondsMatrix.h" -NS_ASSUME_NONNULL_BEGIN - - -@protocol FBCExchangeDiamondsRegardRepresendtation - --(void)acknowledgementExdiversifictowardsionDiamondsAboutDiamond:(NSString *)strawberry gold:(NSString *)gold currency:(NSString *)currency; - -@end - - -typedef void(^ExchangeDiamondsItemViewHandle)(NSString *goldNum,NSString *diamondNum); - -@interface YUMIExchangeDiamondsRegard : UIView -@property (nonatomic,weak) id delegate; -@property (nonatomic,strong) YUMIExchangeDiamondsMatrix *model; - -@end - - - - - - - - - -@interface YUMIExchangeDiamondsProvisionRegard : UIView - -@property (nonatomic,copy) ExchangeDiamondsItemViewHandle introjectionComputationhandle; - -@property (nonatomic,copy) NSString *text; -@property (nonatomic,strong) YUMIExchangeDiamondsMatrix *model; -@property (nonatomic,copy) NSString *count; --(instancetype)initWithFrame:(CGRect)frame type:(IncomeRecordViewType)type; --(void)resignResponder; -@end - - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIExchangeDiamondsRegard.m b/YuMi/Modules/YMMine/View/IncomeRecord/YUMIExchangeDiamondsRegard.m deleted file mode 100644 index 6cc59111..00000000 --- a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIExchangeDiamondsRegard.m +++ /dev/null @@ -1,329 +0,0 @@ -// -// YUMIExchangeDiamondsRegard.m -// YuMi -// -// Created by YuMi on 2022/11/17. -// - -#import "YUMIExchangeDiamondsRegard.h" -#import -#import "YUMIEssayField.h" -#import "XNDJTBWGLoadingTool.h" -#import "UIView+Corner.h" -@interface YUMIExchangeDiamondsRegard() -@property (nonatomic,strong) YUMIExchangeDiamondsProvisionRegard *mieyGoldRegard; -@property (nonatomic,strong) YUMIExchangeDiamondsProvisionRegard *mieyBWSttawberrysRegard; -@property (nonatomic,strong) UIButton *confirmBtn; -@property (nonatomic,copy) NSString *goldNum; -@property (nonatomic,copy) NSString *diamondNum; -@property (nonatomic,assign) IncomeRecordViewType concludeGenre; -@end -@implementation YUMIExchangeDiamondsRegard - --(instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if(self){ - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - [self addSubview:self.mieyGoldRegard]; - [self addSubview:self.mieyBWSttawberrysRegard]; - [self addSubview:self.confirmBtn]; - - - @kWeakify(self) - self.mieyGoldRegard.introjectionComputationhandle = ^(NSString *_Nonnull goldNum,NSString *_Nonnull diamondNum) { - @kStrongify(self) - if(goldNum.integerValue == 0 && diamondNum.integerValue == 0){ - self.confirmBtn.enabled = NO; - self.mieyGoldRegard.text = @""; - self.mieyBWSttawberrysRegard.text = @""; - return; - } - self.concludeGenre = IncomeRecord_Gold; - self.confirmBtn.enabled = YES; - self.goldNum = goldNum; - self.diamondNum = diamondNum; - self.mieyBWSttawberrysRegard.count = diamondNum; - - }; - self.mieyBWSttawberrysRegard.introjectionComputationhandle = ^(NSString *_Nonnull goldNum,NSString *_Nonnull diamondNum) { - @kStrongify(self) - if(goldNum.integerValue == 0 && diamondNum.integerValue == 0){ - self.confirmBtn.enabled = NO; - self.mieyGoldRegard.text = @""; - self.mieyBWSttawberrysRegard.text = @""; - - return; - } - self.confirmBtn.enabled = YES; - self.goldNum = goldNum; - self.diamondNum = diamondNum; - self.mieyGoldRegard.count = goldNum; - self.concludeGenre = IncomeRecord_Diamond; - - }; - -} -- (void)initChildLyRestrictions { - - [self.mieyGoldRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(15)); - make.left.mas_equalTo(kGetScaleWidth(15)); - make.right.mas_equalTo(-kGetScaleWidth(15)); - make.height.mas_equalTo(kGetScaleWidth(116)); - }]; - [self.mieyBWSttawberrysRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.height.equalTo(self.mieyGoldRegard); - make.top.equalTo(self.mieyGoldRegard.mas_bottom); - }]; - [self.confirmBtn mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(296)); - make.width.mas_equalTo(kGetScaleWidth(345)); - make.height.mas_equalTo(kGetScaleWidth(46)); - make.centerX.equalTo(self); - }]; -} --(void)setModel:(YUMIExchangeDiamondsMatrix *)model{ - _model = model; - _mieyGoldRegard.model = _model; - _mieyBWSttawberrysRegard.model = _model; -} --(void)acknowledgementPerformance{ - if( self.model.golds < self.goldNum.doubleValue){ - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Exchange_Diamonds_View_2")]; - return; - } - if(self.diamondNum.doubleValue < self.model.minDiamonds){ - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:[NSString stringWithFormat:YMLocalizedString(@"YUMI_Exchange_Diamonds_View_3"),self.model.minDiamonds]]; - return; - } - if(self.diamondNum.doubleValue > self.model.maxDiamonds){ - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:[NSString stringWithFormat:YMLocalizedString(@"YUMI_Exchange_Diamonds_View_4"),self.model.maxDiamonds]]; - return; - } - [self.mieyGoldRegard resignResponder]; - [self.mieyBWSttawberrysRegard resignResponder]; - if(self.delegate && [self.delegate respondsToSelector:@selector(acknowledgementExdiversifictowardsionDiamondsAboutDiamond:gold:currency:)]){ - [self.delegate acknowledgementExdiversifictowardsionDiamondsAboutDiamond:self.diamondNum gold:self.goldNum currency:self.concludeGenre == IncomeRecord_Diamond ? @"1" : @"3"]; - } -} -#pragma mark -懒加载 -- (YUMIExchangeDiamondsProvisionRegard *)mieyGoldRegard{ - if (!_mieyGoldRegard){ - _mieyGoldRegard = [[YUMIExchangeDiamondsProvisionRegard alloc]initWithFrame:CGRectZero type:IncomeRecord_Gold]; - [_mieyGoldRegard setMonopolizeAboutContraryApexMonopolize:kGetScaleWidth(14) rightTopCorner:kGetScaleWidth(14) bottomLeftCorner:0 bottomRightCorner:0 size:CGSizeMake(kGetScaleWidth(345), kGetScaleWidth(116))]; - } - return _mieyGoldRegard; -} - --(YUMIExchangeDiamondsProvisionRegard *)mieyBWSttawberrysRegard{ - if (!_mieyBWSttawberrysRegard){ - _mieyBWSttawberrysRegard = [[YUMIExchangeDiamondsProvisionRegard alloc]initWithFrame:CGRectZero type:IncomeRecord_Diamond]; - [_mieyBWSttawberrysRegard setMonopolizeAboutContraryApexMonopolize:0 rightTopCorner:0 bottomLeftCorner:kGetScaleWidth(14) bottomRightCorner:kGetScaleWidth(14) size:CGSizeMake(kGetScaleWidth(345), kGetScaleWidth(116))]; - } - return _mieyBWSttawberrysRegard; -} --(UIButton *)confirmBtn{ - if (!_confirmBtn){ - UIImage *image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityMiddlePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(kGetScaleWidth(345), kGetScaleWidth(46))]; - _confirmBtn = [UIButton buttonWithType:UIButtonTypeCustom]; - [_confirmBtn setTitle:YMLocalizedString(@"YUMI_Exchange_Diamonds_View_1") forState:UIControlStateNormal]; - _confirmBtn.titleLabel.font = [UIFont systemFontOfSize:16]; - [_confirmBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _confirmBtn.layer.cornerRadius = kGetScaleWidth(23); - _confirmBtn.layer.masksToBounds = YES; - _confirmBtn.enabled = NO; - [_confirmBtn setBackgroundImage:image forState:UIControlStateNormal]; - [_confirmBtn addTarget:self action:@selector(acknowledgementPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _confirmBtn; -} -@end - - - - -@interface YUMIExchangeDiamondsProvisionRegard() -@property (nonatomic,strong) UILabel *championFigureRegard; -@property (nonatomic,strong) UIImageView *backgroundIndicateRegard; -@property (nonatomic,strong) UIButton *figureRegard; -@property (nonatomic,strong) YUMIEssayField *digitalRegard; -@property (nonatomic,strong) UIButton *arrowView; -@property (nonatomic,assign) IncomeRecordViewType type; - -@end - -@implementation YUMIExchangeDiamondsProvisionRegard - --(instancetype)initWithFrame:(CGRect)frame type:(IncomeRecordViewType)type{ - self = [super initWithFrame:frame]; - if(self){ - self.type = type; - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor whiteColor]; - [self addSubview:self.championFigureRegard]; - [self addSubview:self.backgroundIndicateRegard]; - [self addSubview:self.arrowView]; - [self.backgroundIndicateRegard addSubview:self.figureRegard]; - [self.backgroundIndicateRegard addSubview:self.digitalRegard]; -} -- (void)initChildLyRestrictions { - [self.championFigureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(15)); - make.top.mas_equalTo(kGetScaleWidth(16)); - make.height.mas_equalTo(kGetScaleWidth(20)); - make.right.mas_equalTo(-kGetScaleWidth(73)); - }]; - [self.arrowView mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(kGetScaleWidth(30)); - make.height.mas_equalTo(kGetScaleWidth(30)); - make.right.mas_equalTo(-kGetScaleWidth(38)); - make.centerY.equalTo(self.championFigureRegard); - }]; - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(14)); - make.right.mas_equalTo(-kGetScaleWidth(14)); - make.top.mas_equalTo(kGetScaleWidth(48)); - make.height.mas_equalTo(kGetScaleWidth(52)); - }]; - [self.figureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(kGetScaleWidth(40)); - make.height.mas_equalTo(kGetScaleWidth(40)); - make.left.mas_equalTo(kGetScaleWidth(10)); - make.centerY.equalTo(self.backgroundIndicateRegard); - }]; - [self.digitalRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.bottom.equalTo(self.backgroundIndicateRegard); - make.right.mas_equalTo(-kGetScaleWidth(12)); - make.left.equalTo(self.figureRegard.mas_right).mas_offset(5); - }]; -} -#pragma mark - 赋值 --(void)setModel:(YUMIExchangeDiamondsMatrix *)model{ - _model = model; - if(self.type == IncomeRecord_Diamond){ - _championFigureRegard.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Exchange_Diamonds_Item_View_0"),@(_model.diamonds)]; - NSString *diamondNum = [NSString stringWithFormat:@"%ld",_model.minDiamonds];; - NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc]initWithString:diamondNum attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16 weight:UIFontWeightMedium],NSForegroundColorAttributeName:UIColorFromRGB(0xACB8D9)}]; - _digitalRegard.attributedPlaceholder = attStr; - - }else{ - NSString *goldNum = [NSString stringWithFormat:@"%.0f",ceilf(_model.minDiamonds / _model.rate)]; - NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc]initWithString:goldNum attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16 weight:UIFontWeightMedium],NSForegroundColorAttributeName:UIColorFromRGB(0xACB8D9)}]; - _digitalRegard.attributedPlaceholder = attStr; - _championFigureRegard.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Exchange_Diamonds_Item_View_1"),_model.golds]; - } - -} - --(void)resignResponder{ - [_digitalRegard resignFirstResponder]; -} --(void)setText:(NSString *)text{ - _text = text; - _digitalRegard.text = _text; - -} --(void)setCount:(NSString *)count{ - _count = count; - _digitalRegard.text = _count; -} --(void)essayUniverseDidDiversifictowardsion:(UITextField *)essayUniverse{ - if (essayUniverse.text.length == 0){ - if(self.introjectionComputationhandle){ - self.introjectionComputationhandle(@"0", @"0"); - } - return; - - } - NSInteger count = essayUniverse.text.integerValue; - if(self.type == IncomeRecord_Diamond){ - NSString *goldNum = [NSString stringWithFormat:@"%.0f",ceilf(count / _model.rate)]; - if(self.introjectionComputationhandle){ - self.introjectionComputationhandle(goldNum, essayUniverse.text); - } - return; - } - NSString *diamondNum = [NSString stringWithFormat:@"%.0f",floorf(count * _model.rate)]; - if(self.introjectionComputationhandle){ - self.introjectionComputationhandle(essayUniverse.text,diamondNum); - } - -} -#pragma mark -懒加载 - -- (UILabel *)championFigureRegard { - if (!_championFigureRegard) { - _championFigureRegard = [[UILabel alloc] init]; - _championFigureRegard.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; - _championFigureRegard.textColor =[DJDKMIMOMColor introjectionEssayPrettify]; - NSString *title = self.type == IncomeRecord_Diamond ? YMLocalizedString(@"YUMI_Exchange_Diamonds_Item_View_0"): YMLocalizedString(@"YUMI_Exchange_Diamonds_Item_View_1"); - _championFigureRegard.text = [NSString stringWithFormat:title,@"0"]; - } - return _championFigureRegard; -} - -- (UIImageView *)backgroundIndicateRegard{ - if (!_backgroundIndicateRegard){ - _backgroundIndicateRegard = [UIImageView new]; - if(self.type == IncomeRecord_Gold){ - _backgroundIndicateRegard.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[ UIColorFromRGB(0xDCE6FD),UIColorFromRGB(0xD8E3FE)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(kGetScaleWidth(317), kGetScaleWidth(52))]; - }else{ - _backgroundIndicateRegard.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[ UIColorFromRGB(0xFEECD2),UIColorFromRGB(0xFFDE90)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(kGetScaleWidth(317), kGetScaleWidth(52))]; - } - [_backgroundIndicateRegard setMonopolizeAboutContraryApexMonopolize:kGetScaleWidth(8) rightTopCorner:kGetScaleWidth(8) bottomLeftCorner:kGetScaleWidth(8) bottomRightCorner:kGetScaleWidth(8) size:CGSizeMake(kGetScaleWidth(317), kGetScaleWidth(52))]; - _backgroundIndicateRegard.userInteractionEnabled = YES; - - } - return _backgroundIndicateRegard; -} --(UIButton *)figureRegard{ - if (!_figureRegard){ - UIImage *image = self.type == IncomeRecord_Diamond ? [UIImage imageNamed:@"yumi_exchange_diamonds_pic"] : [UIImage imageNamed:@"yumi_exchange_diamonds_pic"]; - _figureRegard = [UIButton buttonWithType:UIButtonTypeCustom]; - _figureRegard.backgroundColor = [UIColor whiteColor]; - _figureRegard.layer.cornerRadius = kGetScaleWidth(20); - _figureRegard.layer.masksToBounds = YES; - [_figureRegard setImage:image forState:UIControlStateNormal]; - } - return _figureRegard; -} - -- (YUMIEssayField *)digitalRegard{ - if (!_digitalRegard){ - _digitalRegard = [[YUMIEssayField alloc]initWithFrame:CGRectZero]; - _digitalRegard.keyboardType = UIKeyboardTypeNumberPad; - _digitalRegard.isValidation = YES; - NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc]initWithString:@"0" attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16 weight:UIFontWeightMedium],NSForegroundColorAttributeName:UIColorFromRGB(0xACB8D9)}]; - _digitalRegard.attributedPlaceholder = attStr; - _digitalRegard.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; - _digitalRegard.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _digitalRegard.textAlignment = NSTextAlignmentRight; - [_digitalRegard addTarget:self action:@selector(essayUniverseDidDiversifictowardsion:) forControlEvents:UIControlEventEditingChanged]; - } - return _digitalRegard; -} --(UIButton *)arrowView{ - if (!_arrowView){ - _arrowView = [UIButton new]; - [_arrowView setImage:[UIImage imageNamed:@"yumi_exchange_diamonds_arrow"] forState:UIControlStateNormal]; - _arrowView.hidden = self.type == IncomeRecord_Gold; - } - return _arrowView; -} - -@end diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIExchangeDiamondsVC.h b/YuMi/Modules/YMMine/View/IncomeRecord/YUMIExchangeDiamondsVC.h deleted file mode 100644 index b382c217..00000000 --- a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIExchangeDiamondsVC.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YUMIExchangeDiamondsVC.h -// YuMi -// -// Created by YuMi on 2022/11/17. -// - -#import "MvpRegardGovernancer.h" -#import "YUMIExchangeDiamondsMatrix.h" - -@protocol FBCExchangeDiamondsVCRepresendtation - --(void)acknowledgementExdiversifictowardsionDiamondsAboutDiamondAccomplishment:(NSString *)strawberry gold:(NSString *)gold; - -@end - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIExchangeDiamondsVC : MvpRegardGovernancer -@property (nonatomic,strong) YUMIExchangeDiamondsMatrix *model; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIExchangeDiamondsVC.m b/YuMi/Modules/YMMine/View/IncomeRecord/YUMIExchangeDiamondsVC.m deleted file mode 100644 index d9c791be..00000000 --- a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIExchangeDiamondsVC.m +++ /dev/null @@ -1,93 +0,0 @@ -// -// YUMIExchangeDiamondsVC.m -// YuMi -// -// Created by YuMi on 2022/11/17. -// - -#import "YUMIExchangeDiamondsVC.h" -#import -#import "YUMIExchangeDiamondsRegard.h" -#import "YUMIManeConfirmGiveDiamondRegard.h" -#import "MKJPopup.h" -#import "YUMIRevenueReflectionExternalize.h" -#import "FBCIncomeRecordCeremony.h" -#import "YUMIExchangeDiamondsMatrix.h" - -@interface YUMIExchangeDiamondsVC () -@property (nonatomic,strong) YUMIExchangeDiamondsRegard *exdiversificationRegard; -@property (nonatomic,copy) NSString *strawberry; -@property (nonatomic,copy) NSString *gold; -@end - -@implementation YUMIExchangeDiamondsVC -- (YUMIRevenueReflectionExternalize *)producePresimport { - return [[YUMIRevenueReflectionExternalize alloc] init]; -} -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - if(self.model != nil){ - self.exdiversificationRegard.model = self.model; - return; - } - [self EvidenceChambering]; - [self.presimport acquireExdiversifictowardsionDiamondAbstractrmtowardsion]; -} -#pragma mark - FBCIncomeRecordCeremony --(void)acquireExdiversifictowardsionDiamondAbstractrmtowardsion:(YUMIExchangeDiamondsMatrix *)model{ - [self brakeHUD]; - self.model = model; - self.exdiversificationRegard.model = self.model; -} -- (void)acknowledgementExdiversifictowardsionDiamondAccomplishmentAboutDiamondFigure:(NSString *)diamondNum goldNum:(NSString *)goldNum{ - [self brakeHUD]; - if(self.delegate && [self.delegate respondsToSelector:@selector(acknowledgementExdiversifictowardsionDiamondsAboutDiamondAccomplishment:gold:)]){ - [self.delegate acknowledgementExdiversifictowardsionDiamondsAboutDiamondAccomplishment:diamondNum gold:goldNum]; - } - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Exchange_Diamonds_View_5")]; - [self.navigationController popViewControllerAnimated:YES]; -} -- (void)acknowledgementExdiversifictowardsionDiamondFlunk{ - [self.presimport acquireExdiversifictowardsionDiamondAbstractrmtowardsion]; -} -#pragma mark - FBCManeConfirmGiveDiamondRegardRepresendtation -- (void)yumiManeConfirmGiveDiamondRegardAccomplish{ - [self EvidenceChambering]; - [self.presimport acknowledgementExdiversifictowardsionDiamondAboutGoldFigure:self.gold diamondNum:self.strawberry currency:@"1"]; -} -#pragma mark - FBCExchangeDiamondsRegardRepresendtation --(void)acknowledgementExdiversifictowardsionDiamondsAboutDiamond:(NSString *)strawberry gold:(NSString *)gold currency:(NSString *)currency{ - self.strawberry = strawberry; - self.gold = [NSString stringWithFormat:@"%.0f",ceilf(strawberry.doubleValue / self.model.rate)]; - YUMIManeConfirmGiveDiamondRegard *confirmView = [[YUMIManeConfirmGiveDiamondRegard alloc]initWithFrame:CGRectZero]; - confirmView.type = 2; - confirmView.goldNum = self.gold.integerValue; - confirmView.introjectionBWSttawberrys = self.strawberry.integerValue; - confirmView.delegate = self; - [MKJPopup popupRegard:confirmView style:MKJPopupStyleAlert]; -} -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Exchange_Diamonds_View_0"); - [self.view addSubview:self.exdiversificationRegard]; - - -} -- (void)initChildLyRestrictions { - [self.exdiversificationRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.view); - }]; -} -#pragma mark -懒加载 -- (YUMIExchangeDiamondsRegard *)exdiversificationRegard{ - if (!_exdiversificationRegard){ - _exdiversificationRegard = [[YUMIExchangeDiamondsRegard alloc]initWithFrame:CGRectZero]; - _exdiversificationRegard.delegate = self; - } - return _exdiversificationRegard; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIGoldSpecificsChooseChamberElement.h b/YuMi/Modules/YMMine/View/IncomeRecord/YUMIGoldSpecificsChooseChamberElement.h deleted file mode 100644 index 466617ad..00000000 --- a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIGoldSpecificsChooseChamberElement.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YUMIGoldSpecificsChooseChamberElement.h -// YuMi -// -// Created by YuMi on 2022/12/15. -// - -#import -#import "YUMIRevenueReflectionGoldSpecificsMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIGoldSpecificsChooseChamberElement : UITableViewCell -@property (nonatomic,strong) YUMIRevenueReflectionGoldSpecificProvisionMatrix *model; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIGoldSpecificsChooseChamberElement.m b/YuMi/Modules/YMMine/View/IncomeRecord/YUMIGoldSpecificsChooseChamberElement.m deleted file mode 100644 index 13936bd4..00000000 --- a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIGoldSpecificsChooseChamberElement.m +++ /dev/null @@ -1,70 +0,0 @@ -// -// YUMIGoldSpecificsChooseChamberElement.m -// YuMi -// -// Created by YuMi on 2022/12/15. -// - -#import "YUMIGoldSpecificsChooseChamberElement.h" -#import "NetIndicateRegard.h" -#import "UIView+Corner.h" -@interface YUMIGoldSpecificsChooseChamberElement() -@property (nonatomic,strong) NetIndicateRegard *intelligenceIndicate; -@property (nonatomic,strong) UILabel *constituteRegard; -@end -@implementation YUMIGoldSpecificsChooseChamberElement -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -- (void)setModel:(YUMIRevenueReflectionGoldSpecificProvisionMatrix *)model{ - _model = model; - _intelligenceIndicate.imageUrl = _model.ownerAvatar; - _constituteRegard.text = _model.hallName; -} -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor whiteColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.intelligenceIndicate]; - [self.contentView addSubview:self.constituteRegard]; - -} -- (void)initChildLyRestrictions { - [self.intelligenceIndicate mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(kGetScaleWidth(34)); - make.top.mas_equalTo(kGetScaleWidth(12)); - make.centerX.equalTo(self.contentView); - }]; - [self.constituteRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(kGetScaleWidth(14)); - make.left.right.equalTo(self.contentView).inset(kGetScaleWidth(5)); - - make.top.mas_equalTo(kGetScaleWidth(52)); - }]; -} -#pragma mark -懒加载 -- (NetIndicateRegard *)intelligenceIndicate{ - if (!_intelligenceIndicate){ - NetIndicateDisposition *config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceIndicate = [[NetIndicateRegard alloc]initWithConfig:config]; - [_intelligenceIndicate setMonopolizeAboutContraryApexMonopolize:kGetScaleWidth(6) rightTopCorner:kGetScaleWidth(6) bottomLeftCorner:kGetScaleWidth(6) bottomRightCorner:kGetScaleWidth(6) size:CGSizeMake(kGetScaleWidth(34), kGetScaleWidth(34))]; - } - return _intelligenceIndicate; -} - -- (UILabel *)constituteRegard { - if (!_constituteRegard) { - _constituteRegard = [[UILabel alloc] init]; - _constituteRegard.font = [UIFont systemFontOfSize:10]; - _constituteRegard.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - _constituteRegard.textAlignment = NSTextAlignmentCenter; - } - return _constituteRegard; -} - -@end diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIGoldSpecificsChooseChamberRegard.h b/YuMi/Modules/YMMine/View/IncomeRecord/YUMIGoldSpecificsChooseChamberRegard.h deleted file mode 100644 index 777e2b4b..00000000 --- a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIGoldSpecificsChooseChamberRegard.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YUMIGoldSpecificsChooseChamberRegard.h -// YuMi -// -// Created by YuMi on 2022/11/24. -// - -#import -#import "YUMIRevenueReflectionGoldSpecificsMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCGoldDetailsChooseChamberRegardRepresendtation - --(void)concludeBelongChamberAboutMtowardsrix:(YUMIRevenueReflectionGoldSpecificProvisionMatrix *)model; - -@end - - -@interface YUMIGoldSpecificsChooseChamberRegard : UIView -@property (nonatomic,strong) YUMIRevenueReflectionGoldSpecificsMatrix *specificMatrix; -@property (nonatomic,weak) id delegate; -@property (nonatomic,assign) BOOL isReset; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIGoldSpecificsChooseChamberRegard.m b/YuMi/Modules/YMMine/View/IncomeRecord/YUMIGoldSpecificsChooseChamberRegard.m deleted file mode 100644 index c22a420f..00000000 --- a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIGoldSpecificsChooseChamberRegard.m +++ /dev/null @@ -1,82 +0,0 @@ -// -// YUMIGoldSpecificsChooseChamberRegard.m -// YuMi -// -// Created by YuMi on 2022/11/24. -// - -#import "YUMIGoldSpecificsChooseChamberRegard.h" -#import "YUMIGoldSpecificsChooseChamberElement.h" -@interface YUMIGoldSpecificsChooseChamberRegard() -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *matrixStatement; -@property (nonatomic,strong) NSIndexPath *path; -@end -@implementation YUMIGoldSpecificsChooseChamberRegard - --(instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if(self){ - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} --(void)setSpecificMatrix:(YUMIRevenueReflectionGoldSpecificsMatrix *)specificMatrix{ - _specificMatrix = specificMatrix; - _matrixStatement = [NSMutableArray arrayWithArray:_specificMatrix.hallVoList]; - [_tableView reloadData]; -} -#pragma mark - Private Method -- (void)initSubViews { - self.path = [NSIndexPath indexPathForRow:0 inSection:0]; - self.backgroundColor = [UIColor whiteColor]; - [self addSubview:self.tableView]; - - -} -- (void)setIsReset:(BOOL)isReset{ - _isReset = isReset; - self.path = [NSIndexPath indexPathForRow:0 inSection:0]; - [self.tableView reloadData]; -} -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self); - }]; -} --(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ - return _matrixStatement.count; -} --(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ - YUMIGoldSpecificsChooseChamberElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIGoldSpecificsChooseChamberElement class]) forIndexPath:indexPath]; - cell.model = self.matrixStatement[indexPath.row]; - cell.contentView.backgroundColor = self.path.row == indexPath.row ? [UIColor whiteColor] :UIColorFromRGB(0xF0F5F6); - return cell; -} -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ - if(self.delegate && [self.delegate respondsToSelector:@selector(concludeBelongChamberAboutMtowardsrix:)]){ - [self.delegate concludeBelongChamberAboutMtowardsrix:self.matrixStatement[indexPath.row]]; - } - self.path = indexPath; - [self.tableView reloadData]; -} -#pragma mark -懒加载 -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.rowHeight = kGetScaleWidth(78); - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIGoldSpecificsChooseChamberElement class] forCellReuseIdentifier:NSStringFromClass([YUMIGoldSpecificsChooseChamberElement class])]; - - } - return _tableView; -} - -@end diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionGoldSpecificsIntratemporalRegard.h b/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionGoldSpecificsIntratemporalRegard.h deleted file mode 100644 index 2839ce86..00000000 --- a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionGoldSpecificsIntratemporalRegard.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YUMIRevenueReflectionGoldSpecificsIntratemporalRegard.h -// YuMi -// -// Created by YuMi on 2022/11/24. -// - -#import - -@protocol FBCIncomeRecordGoldDetailsTimeRegardRepresendtation - --(void)concludeIntrtowardsemporal; - -@end - - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIRevenueReflectionGoldSpecificsIntratemporalRegard : UIView -@property (nonatomic,weak) id delegate; -@property (nonatomic,copy) NSString *time; -@property (nonatomic,strong,readonly) UIButton *minusBtuton; -@property (nonatomic,strong,readonly) UIButton *accelerateBtuton; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionGoldSpecificsIntratemporalRegard.m b/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionGoldSpecificsIntratemporalRegard.m deleted file mode 100644 index 5e90e675..00000000 --- a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionGoldSpecificsIntratemporalRegard.m +++ /dev/null @@ -1,85 +0,0 @@ -// -// YUMIRevenueReflectionGoldSpecificsIntratemporalRegard.m -// YuMi -// -// Created by YuMi on 2022/11/24. -// - -#import "YUMIRevenueReflectionGoldSpecificsIntratemporalRegard.h" -@interface YUMIRevenueReflectionGoldSpecificsIntratemporalRegard() -@property (nonatomic,strong) UIButton *minusBtuton; -@property (nonatomic,strong) UIButton *accelerateBtuton; -@property (nonatomic,strong) UILabel *intratemporalRegard; - -@end - -@implementation YUMIRevenueReflectionGoldSpecificsIntratemporalRegard - --(instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if(self){ - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} --(void)setTime:(NSString *)time{ - _time = time; - _intratemporalRegard.text = _time; -} -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = UIColorFromRGB(0xF4F0FE); - [self addSubview:self.minusBtuton]; - [self addSubview:self.intratemporalRegard]; - [self addSubview:self.accelerateBtuton]; -} -- (void)initChildLyRestrictions { - - [self.intratemporalRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.equalTo(self); - }]; - [self.minusBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(kGetScaleWidth(24)); - make.centerY.equalTo(self); - make.right.equalTo(self.intratemporalRegard.mas_left).mas_offset(-kGetScaleWidth(20)); - }]; - [self.accelerateBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.centerY.equalTo(self.minusBtuton); - make.left.equalTo(self.intratemporalRegard.mas_right).mas_offset(kGetScaleWidth(20)); - }]; -} --(void)concludeIntrtowardsemporalPerformance{ - if(self.delegate && [self.delegate respondsToSelector:@selector(concludeIntrtowardsemporal)]){ - [self.delegate concludeIntrtowardsemporal]; - } -} -#pragma mark -懒加载 -- (UIButton *)minusBtuton{ - if (!_minusBtuton){ - _minusBtuton = [UIButton new]; - [_minusBtuton setImage:[UIImage imageNamed:@"yumi_gold_details_minus"] forState:UIControlStateNormal]; - } - return _minusBtuton; -} --(UIButton *)accelerateBtuton{ - if (!_accelerateBtuton){ - _accelerateBtuton = [UIButton new]; - [_accelerateBtuton setImage:[UIImage imageNamed:@"yumi_gold_details_add"] forState:UIControlStateNormal]; - } - return _accelerateBtuton; -} - -- (UILabel *)intratemporalRegard { - if (!_intratemporalRegard) { - _intratemporalRegard = [[UILabel alloc] init]; - _intratemporalRegard.font = [UIFont systemFontOfSize:15]; - _intratemporalRegard.textColor = UIColorFromRGB(0x6D6B89); - _intratemporalRegard.textAlignment = NSTextAlignmentCenter; - _intratemporalRegard.userInteractionEnabled = YES; - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(concludeIntrtowardsemporalPerformance)]; - [_intratemporalRegard addGestureRecognizer:tap]; - } - return _intratemporalRegard; -} -@end diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionGoldSpecificsPickRegardRegard.h b/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionGoldSpecificsPickRegardRegard.h deleted file mode 100644 index d4fda1a7..00000000 --- a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionGoldSpecificsPickRegardRegard.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// YUMIRevenueReflectionGoldSpecificsPickRegardRegard.h -// YuMi -// -// Created by YuMi on 2022/11/28. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCIncomeRecordGoldDetailsPickRegardRegardRepresendtation - -- (void)didTicktackSurePerformanceWtihInititowardseEngagement:(NSDate *)startDate endDate:(NSDate *)endDate; - -@end - -@interface YUMIRevenueReflectionGoldSpecificsPickRegardRegard : UIView -@property (nonatomic,strong) NSDate *currentDate; -@property (nonatomic,weak) id delegate; --(instancetype)initWithFrame:(CGRect)frame curEngagement:(NSDate *)date; -@end - - - - -@interface DatePickerRegard : UIView - -@property(nonatomic,assign)CGFloat leftExtents; -@property(nonatomic,strong)UIView *burlywoodRegard; -@property(nonatomic,strong) UILabel *championLab; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionGoldSpecificsPickRegardRegard.m b/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionGoldSpecificsPickRegardRegard.m deleted file mode 100644 index 9b21cfca..00000000 --- a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionGoldSpecificsPickRegardRegard.m +++ /dev/null @@ -1,439 +0,0 @@ -// -// YUMIRevenueReflectionGoldSpecificsPickRegardRegard.m -// YuMi -// -// Created by YuMi on 2022/11/28. -// - -#import "YUMIRevenueReflectionGoldSpecificsPickRegardRegard.h" -#import "NSDate+DateUtils.h" -#import "UIView+Corner.h" -@interface YUMIRevenueReflectionGoldSpecificsPickRegardRegard() -@property (nonatomic,strong) UIView *backgroundRegard; -@property (nonatomic,strong) UIButton *revocationBtuton; -@property (nonatomic,strong) UIButton *confirmBtn; -@property (nonatomic,strong) UILabel *titleView; -@property (strong, nonatomic) UIPickerView *pickerView; -@property (nonatomic,strong)NSMutableArray * selEngagementGarment; -@property (nonatomic,strong)NSMutableArray * atoloudspeakerGarment; -@property (nonatomic,strong)NSDateComponents * components; -@property (nonatomic,strong) NSDate *startDate; -@property (nonatomic,strong) NSDate *endDate; -@property (nonatomic,copy) NSArray *yearArr; - -@property (nonatomic,strong) NSDate *threeMinSatellitetEngagement; -@property (nonatomic,strong) NSDate *threeMinEndEngagement; -@property (nonatomic,strong) NSDate *threeLargestSatellitetEngagement; -@property (nonatomic,strong) NSDate *threeLargestEndEngagement; -@property (nonatomic,assign) BOOL isHaveImpressioniveEngagement; - - -@end -@implementation YUMIRevenueReflectionGoldSpecificsPickRegardRegard - --(instancetype)initWithFrame:(CGRect)frame curEngagement:(NSDate *)date{ - self = [super initWithFrame:frame]; - if(self){ - [self initSubViews]; - [self initChildLyRestrictions]; - [self weekSeasonAboutUniversalEngagement:date]; - [self initEngagement:date]; - self.currentDate = date; - - } - return self; -} - -#pragma mark - Private Method - -- (void)initSubViews { - self.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5]; - [self addSubview:self.backgroundRegard]; - [self.backgroundRegard addSubview:self.revocationBtuton]; - [self.backgroundRegard addSubview:self.confirmBtn]; - [self.backgroundRegard addSubview:self.titleView]; - [self.backgroundRegard addSubview:self.pickerView]; -} -- (void)initChildLyRestrictions { - [self.backgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.equalTo(self).inset(kGetScaleWidth(0)); - make.height.mas_equalTo(kGetScaleWidth(302)); - }]; - [self.revocationBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(15)); - make.top.mas_equalTo(kGetScaleWidth(20)); - make.width.mas_equalTo(kGetScaleWidth(35)); - make.height.mas_equalTo(kGetScaleWidth(20)); - - }]; - [self.confirmBtn mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(20)); - make.right.mas_equalTo(-kGetScaleWidth(15)); - }]; - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(59)); - make.centerX.equalTo(self.backgroundRegard); - - }]; - [self.pickerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(80)); - make.left.right.bottom.equalTo(self.backgroundRegard).inset(kGetScaleWidth(0)); - - }]; - -} --(void)initEngagement:(NSDate *)date{ - - self.yearArr = @[YMLocalizedString(@"YUMI_Income_Record_Gold_Details_Pick_View_View_3") ,YMLocalizedString(@"YUMI_Income_Record_Gold_Details_Pick_View_View_4"),YMLocalizedString(@"YUMI_Income_Record_Gold_Details_Pick_View_View_5")]; - _selEngagementGarment = [[NSMutableArray alloc]init]; - NSCalendar * calender = [NSCalendar currentCalendar]; - _components = [calender components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute fromDate:[NSDate date]]; - NSArray * timeArr = [[NSArray alloc]init]; - NSTimeInterval startTimeNum = [self.startDate timeIntervalSince1970] ; - NSString *timeStr = [NSDate intrtowardsemporalstampSwopIntrtowardsemporal:startTimeNum andFormatter:@"yyyy-MM-dd"]; - NSTimeInterval endTimeNum = [self.endDate timeIntervalSince1970] ; - NSString *endTime = [NSDate intrtowardsemporalstampSwopIntrtowardsemporal:endTimeNum andFormatter:@"yyyy-MM-dd"]; - self.titleView.text = [NSString stringWithFormat:@"%@ %@ %@",timeStr,YMLocalizedString(@"YUMI_Income_Record_Gold_Details_Pick_View_View_2"),endTime]; - [self judgeEngagementIsHaveImpressionive]; - if (timeStr) { - timeArr = [self achieveIntrtowardsemporal:timeStr]; - } - if (timeArr.count == 3) { - - _atoloudspeakerGarment = [self dtowardsaProvenienceGarmentAboutDiana:self.components.month year:self.components.year]; - _selEngagementGarment = [timeArr mutableCopy]; - - for (int i = 0; i < 3; i++) { - - [_pickerView selectRow: [_atoloudspeakerGarment[i] indexOfObject:_selEngagementGarment[i]] inComponent:i animated:YES]; - } - } -} --(void)judgeEngagementIsHaveImpressionive{ - NSDateFormatter *initialiser = [[NSDateFormatter alloc]init]; - [initialiser setDateFormat:@"yyyy-MM-dd"]; - NSDate *resDate; -#ifdef DEBUG - resDate = [initialiser dateFromString:@"2022-09-05"]; -#else - resDate = [initialiser dateFromString:@"2022-12-05"]; -#endif - if([self.startDate compare:resDate] == NSOrderedAscending){ - self.isHaveImpressioniveEngagement = NO; - }else if([self.startDate compare:self.threeMinSatellitetEngagement] == NSOrderedAscending){ - self.isHaveImpressioniveEngagement = NO; - }else if ([self.startDate compare:self.threeLargestSatellitetEngagement] == NSOrderedDescending){ - self.isHaveImpressioniveEngagement = NO; - }else{ - self.isHaveImpressioniveEngagement = YES; - } - -} -- (void)weekSeasonAboutUniversalEngagement:(NSDate *)date { - NSCalendar * calendar = [NSCalendar currentCalendar]; - NSDateComponents *comps = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitWeekday | NSCalendarUnitDay fromDate:date]; - - - NSInteger weekDay = [comps weekday]; - - NSInteger day = [comps day]; - long firstDiff,lastDiff; - if (weekDay == 1){ - firstDiff = -6; - lastDiff = 0; - } else { - firstDiff = -(weekDay - 2); - lastDiff = 8 - weekDay; - } - - NSDateComponents *baseDayComp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:date]; - - [baseDayComp setDay:day + firstDiff]; - NSDate *firstDayOfWeek = [calendar dateFromComponents:baseDayComp]; - self.startDate = firstDayOfWeek; - - [baseDayComp setDay:day + lastDiff]; - NSDate *lastDayOfWeek = [calendar dateFromComponents:baseDayComp]; - self.endDate = lastDayOfWeek; - - - if(self.threeMinSatellitetEngagement == nil){ - [baseDayComp setDay:day + firstDiff - 3 * 4 * 7 ]; - self.threeMinSatellitetEngagement = [calendar dateFromComponents:baseDayComp]; - [baseDayComp setDay:day + lastDiff - 3 * 4 * 7 ]; - self.threeMinEndEngagement = [calendar dateFromComponents:baseDayComp]; - [baseDayComp setDay:day + firstDiff]; - self.threeLargestSatellitetEngagement = [calendar dateFromComponents:baseDayComp]; - [baseDayComp setDay:day + lastDiff]; - self.threeLargestEndEngagement = [calendar dateFromComponents:baseDayComp]; - } - - - -} --(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{ - - return 3; -} - --(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{ - - return [_atoloudspeakerGarment[component] count]; -} - --(CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component{ - - return KScreenWidth / 3; -} --(CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component{ - return 48; -} - --(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{ - [self diversifictowardsionSpeartowardsorBurlywoodPrettify]; - DatePickerRegard *lab = (DatePickerRegard *)view; - if (!lab) { - lab = [[DatePickerRegard alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth/3, 48)]; - } - - - lab.burlywoodRegard.hidden = YES; - if ([_selEngagementGarment[component] isEqualToString: self.atoloudspeakerGarment[component][row]] ) { - - lab.burlywoodRegard.hidden = component == 2; - lab.championLab.font = [UIFont systemFontOfSize:20 weight:UIFontWeightSemibold]; - lab.championLab.textColor = self.isHaveImpressioniveEngagement ? [DJDKMIMOMColor introjectionEssayPrettify] : [DJDKMIMOMColor prohibitionBtutonEssayPrettify]; - lab.championLab.text= [NSString stringWithFormat:@"%@%@",self.selEngagementGarment[component],self.yearArr[component]]; - - }else{ - lab.championLab.font = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; - lab.championLab.textColor = [DJDKMIMOMColor prohibitionBtutonEssayPrettify]; - lab.championLab.text = [NSString stringWithFormat:@"%@%@",self.atoloudspeakerGarment[component][row],self.yearArr[component]]; - } - - - - return lab; -} - --(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{ - - if(component == 0){ - self.atoloudspeakerGarment = [self dtowardsaProvenienceGarmentAboutDiana:[_selEngagementGarment[1]integerValue] year:[self.atoloudspeakerGarment[component][row]integerValue]]; - - }else if (component == 1){ - self.atoloudspeakerGarment = [self dtowardsaProvenienceGarmentAboutDiana:[self.atoloudspeakerGarment[component][row]integerValue] year:[_selEngagementGarment[0]integerValue]]; - } - - if([[self.atoloudspeakerGarment[2] lastObject]integerValue] < [_selEngagementGarment[2]integerValue]){ - _selEngagementGarment[2] = [self.atoloudspeakerGarment[2] lastObject]; - } - - - [_selEngagementGarment replaceObjectAtIndex:component withObject:self.atoloudspeakerGarment[component][row]]; - NSDateFormatter *initialiser = [[NSDateFormatter alloc]init]; - [initialiser setDateFormat:@"yyyy-MM-dd"]; - NSString *date = [NSString stringWithFormat:@"%@-%@-%@",_selEngagementGarment[0],_selEngagementGarment[1],_selEngagementGarment[2]]; - NSDate *resDate = [initialiser dateFromString:date]; - [self weekSeasonAboutUniversalEngagement:resDate]; - [self judgeEngagementIsHaveImpressionive]; - NSTimeInterval startTimeNum = [self.startDate timeIntervalSince1970] ; - NSString *timeStr = [NSDate intrtowardsemporalstampSwopIntrtowardsemporal:startTimeNum andFormatter:@"yyyy-MM-dd"]; - NSTimeInterval endTimeNum = [self.endDate timeIntervalSince1970] ; - NSString *endTime = [NSDate intrtowardsemporalstampSwopIntrtowardsemporal:endTimeNum andFormatter:@"yyyy-MM-dd"]; - self.titleView.text = [NSString stringWithFormat:@"%@ %@ %@",timeStr,YMLocalizedString(@"YUMI_Income_Record_Gold_Details_Pick_View_View_2"),endTime]; - [pickerView reloadAllComponents]; - -} - -#pragma mark - 改变分割线的颜色 -- (void)diversifictowardsionSpeartowardsorBurlywoodPrettify { - - for(UIView *speartorView in _pickerView.subviews) { - - if (speartorView.frame.size.height < 80) { - - speartorView.backgroundColor = [UIColor whiteColor]; - - - - speartorView.backgroundColor = [UIColor clearColor]; - }else{ - speartorView.backgroundColor = [UIColor clearColor]; - } - } -} - --(NSArray *)achieveIntrtowardsemporal:(NSString *)timeStr{ - - NSArray * timeArray = [timeStr componentsSeparatedByString:@"-"]; - NSMutableArray * timeArr = [[NSMutableArray alloc]init]; - for (int i = 0; i -#import "YUMIRevenueReflectionGoldSpecificsMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCIncomeRecordGoldDetailsRegardRepresendtation - --(void)didTicktackSureAboutInititowardseEngagement:(NSDate *)startDate endDate:(NSDate *)endDate type:(int)type; - -@end - - -@interface YUMIRevenueReflectionGoldSpecificsRegard : UIView -@property (nonatomic,strong) YUMIRevenueReflectionGoldSpecificsMatrix *specificMatrix; - -@property (nonatomic,strong) NSDate *curEngagement; - -@property (nonatomic,copy) NSString *startTime; -@property (nonatomic,copy) NSString *endEngagementIntratemporal; -@property (nonatomic,strong) NSDate *startDate; -@property (nonatomic,strong) NSDate *endDate; -@property (nonatomic,copy) NSString *time; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionGoldSpecificsRegard.m b/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionGoldSpecificsRegard.m deleted file mode 100644 index ece13767..00000000 --- a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionGoldSpecificsRegard.m +++ /dev/null @@ -1,310 +0,0 @@ -// -// YUMIRevenueReflectionGoldSpecificsRegard.m -// YuMi -// -// Created by YuMi on 2022/11/24. -// - -#import "YUMIRevenueReflectionGoldSpecificsRegard.h" -#import "YUMIRevenueReflectionGoldSpecificsIntelligenceRegard.h" -#import "YUMIRevenueReflectionGoldSpecificsElement.h" -#import "YUMIRevenueReflectionGoldSpecificsIntratemporalRegard.h" -#import "YUMIGoldSpecificsChooseChamberRegard.h" -#import "YUMIManeVacationerDispossessTabulationRegardElement.h" -#import "YUMIStrangeUnionIntratemporalPickRegard.h" -#import "YUMIRevenueReflectionGoldSpecificsPickRegardRegard.h" -#import "NSString+Utils.h" -#import "MKJPopup.h" -#import "NSObject+MJExtension.h" -@interface YUMIRevenueReflectionGoldSpecificsRegard() -@property (nonatomic,strong)YUMIRevenueReflectionGoldSpecificsIntratemporalRegard *intratemporalRegard; -@property (nonatomic,strong) YUMIRevenueReflectionGoldSpecificsIntelligenceRegard *intelligenceRegard; -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) UILabel *generalRegard; -@property (nonatomic,copy) NSArray *matrixStatement; -@property (nonatomic,strong) YUMIGoldSpecificsChooseChamberRegard *concludeRegard; -@property (nonatomic,assign) IncomeRecordGoldSortingType sortingGenre; -@property (nonatomic,strong) NSMutableArray *derivationalGarment; -@end -@implementation YUMIRevenueReflectionGoldSpecificsRegard - - --(instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if(self){ - - [self initSubViews]; - [self initChildLyRestrictions]; - self.sortingGenre = IncomeRecordGold_Diamond; - - } - return self; -} --(void)setTime:(NSString *)time{ - _time = time; - _intratemporalRegard.time = time; - NSDateFormatter *initialiser = [[NSDateFormatter alloc]init]; - [initialiser setDateFormat:@"yyyy-MM-dd"]; - NSDate *resDate; -#ifdef DEBUG - resDate = [initialiser dateFromString:@"2022-09-05"]; -#else - resDate = [initialiser dateFromString:@"2022-12-05"]; -#endif - if ([self.startDate compare:resDate] == NSOrderedAscending) { - _intratemporalRegard.minusBtuton.enabled = NO; - }else{ - _intratemporalRegard.minusBtuton.enabled = YES; - } - if ([self.endDate compare:resDate] == NSOrderedAscending) { - _intratemporalRegard.accelerateBtuton.enabled = NO; - }else{ - if ([self.startDate compare:self.curEngagement] == NSOrderedDescending || [self.endDate compare:self.curEngagement] == NSOrderedSame) { - _intratemporalRegard.accelerateBtuton.enabled = NO; - }else{ - _intratemporalRegard.accelerateBtuton.enabled = YES; - } - } - -} -#pragma mark - Private Method -- (void)initSubViews { - - [self addSubview:self.intratemporalRegard]; - [self addSubview:self.intelligenceRegard]; - [self addSubview:self.generalRegard]; - [self addSubview:self.tableView]; - [self addSubview:self.concludeRegard]; - -} - -- (void)initChildLyRestrictions { - - - [self.intratemporalRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.equalTo(self); - make.height.mas_equalTo(kGetScaleWidth(47)); - }]; - [self.intelligenceRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(65)); - make.right.left.equalTo(self); - make.height.mas_equalTo(kGetScaleWidth(153)); - - }]; - [self.concludeRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(kGetScaleWidth(64)); - make.left.mas_equalTo(kGetScaleWidth(0)); - make.top.equalTo(self.intelligenceRegard.mas_bottom); - make.bottom.equalTo(self); - }]; - [self.generalRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.equalTo(self.concludeRegard.mas_right); - make.right.equalTo(self); - make.bottom.equalTo(self).mas_equalTo(- kGetScaleWidth(66)); - }]; - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.equalTo(self); - make.bottom.equalTo(self.generalRegard.mas_top).mas_offset(-kGetScaleWidth(10)); - make.top.equalTo(self.intelligenceRegard.mas_bottom); - make.left.mas_equalTo(kGetScaleWidth(64)); - }]; - - - -} --(void)setSpecificMatrix:(YUMIRevenueReflectionGoldSpecificsMatrix *)specificMatrix{ - _specificMatrix = specificMatrix; - _intelligenceRegard.specificMatrix = _specificMatrix; - _concludeRegard.specificMatrix = _specificMatrix; - NSMutableArray *matrixStatement = [NSMutableArray array]; - if(_specificMatrix.hallVoList.count == 0){ - _matrixStatement = matrixStatement; - [_tableView reloadData]; - return; - } - YUMIRevenueReflectionGoldSpecificProvisionMatrix *chooseModel = _specificMatrix.hallVoList.firstObject; - NSDictionary *memberObj = _specificMatrix.hallMemberMap[chooseModel.hallId]; - _generalRegard.attributedText = [self acquireGeneralTowardstWtihFigure:[NSString stringWithFormat:@"%@",memberObj[@"total"] ?: @"0"]]; - NSArray *itemList = memberObj[@"hallMember"]; - if(itemList != nil){ - NSArray *itemModelList = [YUMIRevenueReflectionGoldSpecificProvisionMatrix mtowardsrixsAboutGarment:itemList]; - NSArray *list = [itemModelList sortedArrayUsingComparator:^NSComparisonResult(YUMIRevenueReflectionGoldSpecificProvisionMatrix * _Nonnull obj1, YUMIRevenueReflectionGoldSpecificProvisionMatrix * _Nonnull obj2) { - return obj1.giftDiamonds.integerValue < obj2.giftDiamonds.integerValue; - }]; - matrixStatement = [NSMutableArray arrayWithArray:list]; - } - _matrixStatement = matrixStatement; - [_tableView reloadData]; -} - -#pragma mark - FBCIncomeRecordGoldDetailsTimeRegardRepresendtation --(void)concludeIntrtowardsemporal{ - YUMIRevenueReflectionGoldSpecificsPickRegardRegard *view = [[YUMIRevenueReflectionGoldSpecificsPickRegardRegard alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight) curEngagement:self.startDate]; - view.delegate = self; - [[UIApplication sharedApplication].keyWindow addSubview:view]; - -} -#pragma mark - FBCStrangeUnionTimePickRegardRepresendtation -- (void)yUMIStrangeUnionIntrtowardsemporalExtractRegard:(YUMIStrangeUnionIntratemporalPickRegard *)view didClickSure:(UIButton *)sender{ - [MKJPopup dismiss]; - self.concludeRegard.isReset = YES; - if(self.delegate && [self.delegate respondsToSelector:@selector(didTicktackSureAboutInititowardseEngagement:endDate:type:)]){ - [self.delegate didTicktackSureAboutInititowardseEngagement:view.startDate endDate:view.endDate type:1]; - } -} -- (void)didTicktackSurePerformanceWtihInititowardseEngagement:(NSDate *)startDate endDate:(NSDate *)endDate{ - - self.concludeRegard.isReset = YES; - if(self.delegate && [self.delegate respondsToSelector:@selector(didTicktackSureAboutInititowardseEngagement:endDate:type:)]){ - [self.delegate didTicktackSureAboutInititowardseEngagement:startDate endDate:endDate type:1]; - } -} -- (void)yUMIStrangeUnionIntrtowardsemporalExtractRegard:(YUMIStrangeUnionIntratemporalPickRegard *)view didTicktackRevoctowardsion:(UIButton *)sender{ - [MKJPopup dismiss]; -} -#pragma mark - FBCGoldDetailsChooseChamberRegardRepresendtation --(void)concludeBelongChamberAboutMtowardsrix:(YUMIRevenueReflectionGoldSpecificProvisionMatrix *)model{ - [self.intelligenceRegard replacementArrow]; - NSMutableArray *matrixStatement = [NSMutableArray array]; - NSDictionary *memberObj = self.specificMatrix.hallMemberMap[model.hallId]; - self.generalRegard.attributedText = [self acquireGeneralTowardstWtihFigure:[NSString stringWithFormat:@"%@",memberObj[@"total"]?:@"0"]]; - NSArray *itemList = memberObj[@"hallMember"]; - if(itemList != nil){ - NSArray *itemModelList = [YUMIRevenueReflectionGoldSpecificProvisionMatrix mtowardsrixsAboutGarment:itemList]; - NSArray *list = [itemModelList sortedArrayUsingComparator:^NSComparisonResult(YUMIRevenueReflectionGoldSpecificProvisionMatrix * _Nonnull obj1, YUMIRevenueReflectionGoldSpecificProvisionMatrix * _Nonnull obj2) { - return obj1.giftDiamonds.integerValue < obj2.giftDiamonds.integerValue; - }]; - matrixStatement = [NSMutableArray arrayWithArray:list]; - - } - - self.matrixStatement = matrixStatement; - [self.tableView reloadData]; - -} --(NSMutableAttributedString *)acquireGeneralTowardstWtihFigure:(NSString *)total{ - NSString *getTotal = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Income_Record_Gold_Details_View_1"),[NSString acquireDealFigurewithsttri:total]]; - NSMutableAttributedString *totalAtt = [[NSMutableAttributedString alloc]initWithString:getTotal attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14 weight:UIFontWeightMedium],NSForegroundColorAttributeName:[DJDKMIMOMColor introjectionEssayPrettify]}]; - [totalAtt addAttributes:@{NSForegroundColorAttributeName:UIColorFromRGB(0xDE9F0C)} range:[getTotal rangeOfString:[NSString acquireDealFigurewithsttri:total]]]; - return totalAtt; -} -#pragma mark - XPIncomeRecordGoldDetailsCellDelegate - -- (void)concludeGoldTangerineTelling:(IncomeRecordGoldSortingType)type isAscending:(BOOL)isAscending{ - self.sortingGenre = type; - if(type == IncomeRecordGold_Diamond){ - NSArray *list = [self.matrixStatement sortedArrayUsingComparator:^NSComparisonResult(YUMIRevenueReflectionGoldSpecificProvisionMatrix * _Nonnull obj1, YUMIRevenueReflectionGoldSpecificProvisionMatrix * _Nonnull obj2) { - if(isAscending == YES){ - return obj2.giftDiamonds.integerValue > obj1.giftDiamonds.integerValue; - } - return obj1.giftDiamonds.integerValue > obj2.giftDiamonds.integerValue; - }]; - self.matrixStatement = [NSMutableArray arrayWithArray:list]; - [self.tableView reloadData]; - return; - } - NSArray *list = [self.matrixStatement sortedArrayUsingComparator:^NSComparisonResult(YUMIRevenueReflectionGoldSpecificProvisionMatrix * _Nonnull obj1, YUMIRevenueReflectionGoldSpecificProvisionMatrix * _Nonnull obj2) { - if(isAscending == YES){ - return obj2.remainGolds.integerValue > obj1.remainGolds.integerValue; - } - return obj1.remainGolds.integerValue > obj2.remainGolds.integerValue; - }]; - self.matrixStatement = [NSMutableArray arrayWithArray:list]; - [self.tableView reloadData]; - - -} -#pragma mark - UITableViewDelegate,UITableViewDataSource --(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ - return self.matrixStatement.count > 0 ? self.matrixStatement.count : 1; -} --(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ - if(self.matrixStatement.count > 0){ - return kGetScaleWidth(78); - } - return kGetScaleWidth(400); -} --(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ - if(self.matrixStatement.count > 0){ - YUMIRevenueReflectionGoldSpecificsElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIRevenueReflectionGoldSpecificsElement class]) forIndexPath:indexPath]; - cell.specificMatrix = self.matrixStatement[indexPath.row]; - - return cell; - } - - YUMIManeVacationerDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeVacationerDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeVacationerDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeVacationerDispossessTabulationRegardElement class])]; - } - cell.emptyTitle = YMLocalizedString(@"YUMI_Income_Record_Gold_Details_View_0"); - [cell.dispossessIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(150)); - }]; - return cell; -} --(void)minusIntrtowardsemporalPerformance{ - self.concludeRegard.isReset = YES; - if(self.delegate && [self.delegate respondsToSelector:@selector(didTicktackSureAboutInititowardseEngagement:endDate:type:)]){ - [self.delegate didTicktackSureAboutInititowardseEngagement:self.startDate endDate:self.endDate type:2]; - } - -} --(void)accelertowardseIntrtowardsemporalPerformance{ - self.concludeRegard.isReset = YES; - if(self.delegate && [self.delegate respondsToSelector:@selector(didTicktackSureAboutInititowardseEngagement:endDate:type:)]){ - [self.delegate didTicktackSureAboutInititowardseEngagement:self.startDate endDate:self.endDate type:3]; - } -} -#pragma mark -懒加载 -- (YUMIRevenueReflectionGoldSpecificsIntratemporalRegard *)intratemporalRegard{ - if (!_intratemporalRegard){ - _intratemporalRegard = [[YUMIRevenueReflectionGoldSpecificsIntratemporalRegard alloc]initWithFrame:CGRectZero]; - _intratemporalRegard.delegate = self; - [_intratemporalRegard.minusBtuton addTarget:self action:@selector(minusIntrtowardsemporalPerformance) forControlEvents:UIControlEventTouchUpInside]; - [_intratemporalRegard.accelerateBtuton addTarget:self action:@selector(accelertowardseIntrtowardsemporalPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _intratemporalRegard; -} -- (YUMIRevenueReflectionGoldSpecificsIntelligenceRegard *)intelligenceRegard{ - if (!_intelligenceRegard){ - _intelligenceRegard = [[YUMIRevenueReflectionGoldSpecificsIntelligenceRegard alloc]initWithFrame:CGRectZero]; - _intelligenceRegard.delegate = self; - } - return _intelligenceRegard; -} -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIRevenueReflectionGoldSpecificsElement class] forCellReuseIdentifier:NSStringFromClass([YUMIRevenueReflectionGoldSpecificsElement class])]; - [_tableView registerClass:[YUMIManeVacationerDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeVacationerDispossessTabulationRegardElement class])]; - - } - return _tableView; -} -- (YUMIGoldSpecificsChooseChamberRegard *)concludeRegard{ - if (!_concludeRegard){ - _concludeRegard = [[YUMIGoldSpecificsChooseChamberRegard alloc]initWithFrame:CGRectZero]; - _concludeRegard.delegate = self; - _concludeRegard.backgroundColor = UIColorFromRGB(0xF0F5F6); - } - return _concludeRegard; -} - -- (UILabel *)generalRegard { - if (!_generalRegard) { - _generalRegard = [[UILabel alloc] init]; - _generalRegard.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _generalRegard.textColor = [DJDKMIMOMColor introjectionEssayPrettify]; - } - return _generalRegard; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionGoldSpecificsVC.h b/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionGoldSpecificsVC.h deleted file mode 100644 index b25ad522..00000000 --- a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionGoldSpecificsVC.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// YUMIRevenueReflectionGoldSpecificsVC.h -// YuMi -// -// Created by YuMi on 2022/11/24. -// -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIRevenueReflectionGoldSpecificsVC : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionGoldSpecificsVC.m b/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionGoldSpecificsVC.m deleted file mode 100644 index 2878d053..00000000 --- a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionGoldSpecificsVC.m +++ /dev/null @@ -1,140 +0,0 @@ -// -// YUMIRevenueReflectionGoldSpecificsVC.m -// YuMi -// -// Created by YuMi on 2022/11/24. -// - -#import "YUMIRevenueReflectionGoldSpecificsVC.h" -#import "YUMIRevenueReflectionGoldSpecificsRegard.h" -#import "YUMIRevenueReflectionExternalize.h" -#import "YUMIRevenueReflectionGoldSpecificsMatrix.h" -#import "NSDate+DateUtils.h" -@interface YUMIRevenueReflectionGoldSpecificsVC () -@property (nonatomic,strong) YUMIRevenueReflectionGoldSpecificsRegard *goldSpecificsRegard; -@property (nonatomic,strong) YUMIRevenueReflectionGoldSpecificsMatrix *specificMatrix; -@property (nonatomic,strong) NSDate *startDate; -@property (nonatomic,strong) NSDate *endDate; -@property (nonatomic,copy) NSString *startTime; -@property (nonatomic,copy) NSString *endEngagementIntratemporal; -@end - -@implementation YUMIRevenueReflectionGoldSpecificsVC -- (YUMIRevenueReflectionExternalize *)producePresimport { - return [[YUMIRevenueReflectionExternalize alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self weekSeasonAboutUniversalEngagement:[NSDate date] type:0]; - [self acquireCurIntrtowardsemporal]; -} --(void)acquireGoldSpecificsTowardsoloudspeakerAccomplishment:(YUMIRevenueReflectionGoldSpecificsMatrix *)specificMatrix{ - [self brakeHUD]; - self.specificMatrix = specificMatrix; - _goldSpecificsRegard.specificMatrix = _specificMatrix; -} --(void)acquireCurIntrtowardsemporal{ - NSTimeInterval startTimeNum = [self.startDate timeIntervalSince1970] ; - NSTimeInterval endTimeNum = [self.endDate timeIntervalSince1970] ; - NSString *startTime = [NSDate intrtowardsemporalstampSwopIntrtowardsemporal:startTimeNum andFormatter:@"yyyy-MM-dd"]; - NSString *endTime = [NSDate intrtowardsemporalstampSwopIntrtowardsemporal:endTimeNum andFormatter:@"yyyy-MM-dd"]; - self.startTime = startTime; - self.endEngagementIntratemporal = endTime; - self.goldSpecificsRegard.startDate = self.startDate; - self.goldSpecificsRegard.endDate = self.endDate; - self.goldSpecificsRegard.time = [NSString stringWithFormat:@"%@ %@ %@",startTime,YMLocalizedString(@"YUMI_Income_Record_Gold_Details_VC_1"),endTime]; - [self.presimport acquireGoldSpecificsTowardsoloudspeakerAboutInititowardseIntrtowardsemporal:startTime endTime:endTime]; - -} -- (void)weekSeasonAboutUniversalEngagement:(NSDate *)date type:(int)type{ - - NSCalendar * calendar = [NSCalendar currentCalendar]; - NSDateComponents *comps = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitWeekday | NSCalendarUnitDay fromDate:date]; - - - NSInteger weekDay = [comps weekday]; - - NSInteger day = [comps day]; - - NSInteger acquireSeason = 0; - if(type == 1){ - acquireSeason = 0; - }else if (type == 3){ - acquireSeason = -7; - }else if (type == 2){ - acquireSeason = 7; - } - long firstDiff,lastDiff; - if (weekDay == 1){ - firstDiff = -6; - lastDiff = 0; - } else { - firstDiff = -(weekDay - 2) ; - lastDiff = 8 - weekDay ; - } - - NSDateComponents *baseDayComp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:date]; - - [baseDayComp setDay:day + firstDiff - acquireSeason]; - NSDate *firstDayOfWeek = [calendar dateFromComponents:baseDayComp]; - self.startDate = firstDayOfWeek; - - [baseDayComp setDay:day + lastDiff - acquireSeason]; - NSDate *lastDayOfWeek = [calendar dateFromComponents:baseDayComp]; - self.endDate = lastDayOfWeek; - if(self.goldSpecificsRegard.curEngagement == nil){ - [baseDayComp setDay:day + lastDiff]; - self.goldSpecificsRegard.curEngagement = [calendar dateFromComponents:baseDayComp]; - - } - -} -#pragma mark - FBCIncomeRecordGoldDetailsRegardRepresendtation --(void)didTicktackSureAboutInititowardseEngagement:(NSDate *)startDate endDate:(NSDate *)endDate type:(int)type{ - switch (type) { - case 1: - { - [self weekSeasonAboutUniversalEngagement:startDate type:1]; - [self acquireCurIntrtowardsemporal]; - break; - } - case 2: - { - [self weekSeasonAboutUniversalEngagement:startDate type:2]; - [self acquireCurIntrtowardsemporal]; - break; - } - - default: - { - [self weekSeasonAboutUniversalEngagement:startDate type:3]; - [self acquireCurIntrtowardsemporal]; - break; - } - } -} -#pragma mark - Private Method -- (void)initSubViews { - self.view.backgroundColor = [UIColor whiteColor]; - self.title = YMLocalizedString(@"YUMI_Income_Record_Gold_Details_VC_0"); - [self.view addSubview:self.goldSpecificsRegard]; -} -- (void)initChildLyRestrictions { - [self.goldSpecificsRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.left.right.bottom.equalTo(self.view); - - }]; -} -#pragma mark -懒加载 -- (YUMIRevenueReflectionGoldSpecificsRegard *)goldSpecificsRegard{ - if (!_goldSpecificsRegard){ - _goldSpecificsRegard = [[YUMIRevenueReflectionGoldSpecificsRegard alloc]initWithFrame:CGRectZero]; - _goldSpecificsRegard.delegate = self; - } - return _goldSpecificsRegard; -} - -@end diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionRegard.h b/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionRegard.h deleted file mode 100644 index 06ae94b7..00000000 --- a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionRegard.h +++ /dev/null @@ -1,39 +0,0 @@ -// -// YUMIRevenueReflectionRegard.h -// YuMi -// -// Created by YuMi on 2022/11/17. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef enum : NSUInteger { - IncomeRecord_Diamond, - IncomeRecord_Gold -} IncomeRecordViewType; - -typedef enum : NSUInteger { - ClickType_Diamond_Detail, - ClickType_Diamond_Pay, - ClickType_Gold_Detail, - ClickType_Gold_Exchangel, -} IncomeRecordViewClickType; - - -@protocol FBCIncomeRecordRegardRepresendtation - --(void)clickShankAboutGenre:(IncomeRecordViewClickType)type; - -@end - -@interface YUMIRevenueReflectionRegard : UIView -@property (nonatomic,copy) NSString *number; -@property (nonatomic,assign) BOOL isCollectivePresident; -@property (nonatomic,weak) id delegate; - --(instancetype)initWithFrame:(CGRect)frame type:(IncomeRecordViewType)type; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionRegard.m b/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionRegard.m deleted file mode 100644 index bff8fc35..00000000 --- a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionRegard.m +++ /dev/null @@ -1,206 +0,0 @@ -// -// YUMIRevenueReflectionRegard.m -// YuMi -// -// Created by YuMi on 2022/11/17. -// - -#import "YUMIRevenueReflectionRegard.h" -#import "UIView+Corner.h" -@interface YUMIRevenueReflectionRegard() - -@property (nonatomic,strong) UIImageView *backgroundIndicateRegard; -@property (nonatomic,strong) UILabel *titleView; -@property (nonatomic,strong) UIButton *specificRegard; - -@property (nonatomic,strong) UILabel *digitalRegard; -@property (nonatomic,strong) UIStackView *btutonHierarchyRegard; -@property (nonatomic,strong) UIButton *payBtuton; -@property (nonatomic,strong) UIButton *exdiversificationBtuton; - -@property (nonatomic,assign) IncomeRecordViewType type; -@end -@implementation YUMIRevenueReflectionRegard --(instancetype)initWithFrame:(CGRect)frame type:(IncomeRecordViewType)type{ - self = [super initWithFrame:frame]; - if(self){ - self.type = type; - [self initSubViews]; - [self initChildLyRestrictions]; - - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backgroundIndicateRegard]; - [self.backgroundIndicateRegard addSubview:self.titleView]; - [self.backgroundIndicateRegard addSubview:self.specificRegard]; - [self.backgroundIndicateRegard addSubview:self.digitalRegard]; - [self.backgroundIndicateRegard addSubview:self.btutonHierarchyRegard]; - [self.btutonHierarchyRegard addArrangedSubview:self.payBtuton]; - [self.btutonHierarchyRegard addArrangedSubview:self.exdiversificationBtuton]; - -} -- (void)initChildLyRestrictions { - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self); - }]; - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(17)); - make.left.mas_equalTo(kGetScaleWidth(20)); - make.height.mas_equalTo(kGetScaleWidth(20)); - }]; - [self.specificRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-kGetScaleWidth(20)); - make.height.mas_equalTo(kGetScaleWidth(18)); - make.width.mas_equalTo(kGetScaleWidth(45)); - make.centerY.equalTo(self.titleView); - }]; - - [self.digitalRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.equalTo(self.titleView); - make.top.mas_equalTo(kGetScaleWidth(49)); - make.height.mas_equalTo(kGetScaleWidth(20)); - make.right.mas_equalTo(-kGetScaleWidth(20)); - }]; - [self.btutonHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.equalTo(self.backgroundIndicateRegard).inset(kGetScaleWidth(20)); - make.height.mas_equalTo(kGetScaleWidth(40)); - make.top.mas_equalTo(kGetScaleWidth(86)); - }]; - [self.payBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(kGetScaleWidth(40)); - }]; - [self.exdiversificationBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(kGetScaleWidth(40)); - }]; -} --(void)setNumber:(NSString *)number{ - _number = number; - _digitalRegard.text = _number; -} --(void)setIsCollectivePresident:(BOOL)isCollectivePresident{ - _isCollectivePresident = isCollectivePresident; - _exdiversificationBtuton.hidden = _isCollectivePresident; - _specificRegard.hidden = !_isCollectivePresident; -} -#pragma mark - btnClick --(void)clickSpecificRegardPerformance{ - if(self.type == IncomeRecord_Diamond){ - [self clickDiamondSpecificPerformance]; - return; - } - [self clickGoldSpecificPerformance]; -} --(void)clickDiamondSpecificPerformance{ - if(self.delegate && [self.delegate respondsToSelector:@selector(clickShankAboutGenre:)]){ - [self.delegate clickShankAboutGenre:ClickType_Diamond_Detail]; - } -} --(void)clickDiamondIntersectPerformance{ - if(self.delegate && [self.delegate respondsToSelector:@selector(clickShankAboutGenre:)]){ - [self.delegate clickShankAboutGenre:ClickType_Diamond_Pay]; - } -} --(void)clickGoldSpecificPerformance{ - if(self.delegate && [self.delegate respondsToSelector:@selector(clickShankAboutGenre:)]){ - [self.delegate clickShankAboutGenre:ClickType_Gold_Detail]; - } -} --(void)clickGoldExdiversifictowardsionlPerformance{ - if(self.delegate && [self.delegate respondsToSelector:@selector(clickShankAboutGenre:)]){ - [self.delegate clickShankAboutGenre:ClickType_Gold_Exchangel]; - } -} - -#pragma mark - 懒加载 -- (UIImageView *)backgroundIndicateRegard{ - if (!_backgroundIndicateRegard){ - _backgroundIndicateRegard = [UIImageView new]; - _backgroundIndicateRegard.userInteractionEnabled = YES; - _backgroundIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _backgroundIndicateRegard.layer.cornerRadius = 10.f; - _backgroundIndicateRegard.clipsToBounds = YES; - _backgroundIndicateRegard.image = self.type == IncomeRecord_Diamond ? [UIImage imageNamed:@"yumi_income_record_diamond_background"]: [UIImage imageNamed:@"yumi_income_record_gold_background"]; - } - return _backgroundIndicateRegard; -} - -- (UILabel *)titleView { - if (!_titleView) { - _titleView = [[UILabel alloc] init]; - _titleView.font = [UIFont systemFontOfSize:20 weight:UIFontWeightMedium]; - _titleView.textColor = self.type == IncomeRecord_Diamond ? UIColorFromRGB(0x1B1558) : UIColorFromRGB(0x572714); - _titleView.text = self.type == IncomeRecord_Diamond ? YMLocalizedString(@"YUMI_Income_Record_View_4"):YMLocalizedString(@"YUMI_Income_Record_View_5"); - } - return _titleView; -} - --(UIButton *)specificRegard{ - if (!_specificRegard){ - _specificRegard = [UIButton new]; - [_specificRegard setTitle:YMLocalizedString(@"YUMI_Income_Record_View_0") forState:UIControlStateNormal]; - [_specificRegard setTitleColor:self.type == IncomeRecord_Diamond ? UIColorFromRGB(0x1B1558):UIColorFromRGB(0x582815) forState:UIControlStateNormal]; - _specificRegard.titleLabel.font = [UIFont systemFontOfSize:13]; - _specificRegard.imageEdgeInsets = UIEdgeInsetsMake(0, kGetScaleWidth(40), 0, 0); - _specificRegard.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0); - [_specificRegard setImage:self.type == IncomeRecord_Diamond ? [UIImage imageNamed:@"yumi_income_record_arrow_1"]: [UIImage imageNamed:@"yumi_income_record_arrow_2"] forState:UIControlStateNormal]; - [_specificRegard addTarget:self action:@selector(clickSpecificRegardPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _specificRegard; -} - - -- (UILabel *)digitalRegard { - if (!_digitalRegard) { - _digitalRegard = [[UILabel alloc] init]; - _digitalRegard.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; - _digitalRegard.textColor = self.type == IncomeRecord_Diamond ? UIColorFromRGB(0x1B1558) : UIColorFromRGB(0x572714); - _digitalRegard.text = @"0"; - } - return _digitalRegard; -} - -- (UIStackView *)btutonHierarchyRegard{ - if (!_btutonHierarchyRegard){ - _btutonHierarchyRegard = [[UIStackView alloc] init]; - _btutonHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _btutonHierarchyRegard.distribution = UIStackViewDistributionFillEqually; - _btutonHierarchyRegard.alignment = UIStackViewAlignmentFill; - _btutonHierarchyRegard.spacing = kGetScaleWidth(13); - } - return _btutonHierarchyRegard; -} -- (UIButton *)payBtuton{ - if (!_payBtuton){ - _payBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_payBtuton setTitle:YMLocalizedString(@"YUMI_Income_Record_View_1") forState:UIControlStateNormal]; - _payBtuton.backgroundColor = UIColorFromRGB(0xB1BFFA); - [_payBtuton setTitleColor:UIColorFromRGB(0x130C4F) forState:UIControlStateNormal]; - _payBtuton.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; - _payBtuton.layer.cornerRadius = kGetScaleWidth(20); - _payBtuton.layer.masksToBounds = YES; - _payBtuton.hidden = self.type == IncomeRecord_Gold; - [_payBtuton addTarget:self action:@selector(clickDiamondIntersectPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _payBtuton; -} - --(UIButton *)exdiversificationBtuton{ - if (!_exdiversificationBtuton){ - _exdiversificationBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_exdiversificationBtuton setTitle:YMLocalizedString(@"YUMI_Income_Record_View_2") forState:UIControlStateNormal]; - [_exdiversificationBtuton setTitleColor:UIColorFromRGB(0x93570B) forState:UIControlStateNormal]; - _exdiversificationBtuton.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; - _exdiversificationBtuton.hidden = self.type == IncomeRecord_Diamond; - _exdiversificationBtuton.layer.cornerRadius = kGetScaleWidth(20); - _exdiversificationBtuton.layer.masksToBounds = YES; - _exdiversificationBtuton.layer.borderWidth = 1; - _exdiversificationBtuton.layer.borderColor = UIColorFromRGB(0x93570B).CGColor; - [_exdiversificationBtuton addTarget:self action:@selector(clickGoldExdiversifictowardsionlPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _exdiversificationBtuton; -} -@end diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionVC.h b/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionVC.h deleted file mode 100644 index e015e575..00000000 --- a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionVC.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YUMIRevenueReflectionVC.h -// YuMi -// -// Created by YuMi on 2022/11/17. -// - -#import "MvpRegardGovernancer.h" -#import "CollectiveSpecificAbstractMatrix.h" -#import "ConsumerAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIRevenueReflectionVC : MvpRegardGovernancer -@property (nonatomic,strong) CollectiveSpecificAbstractMatrix *collectiveAbstract; -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionVC.m b/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionVC.m deleted file mode 100644 index d3ebc441..00000000 --- a/YuMi/Modules/YMMine/View/IncomeRecord/YUMIRevenueReflectionVC.m +++ /dev/null @@ -1,155 +0,0 @@ -// -// YUMIRevenueReflectionVC.m -// YuMi -// -// Created by YuMi on 2022/11/17. -// - -#import "YUMIRevenueReflectionVC.h" -#import "YUMIRevenueReflectionRegard.h" -#import "YUMITissueRegardGovernancer.h" -#import "YUMIExchangeDiamondsVC.h" -#import "YUMIRevenueReflectionGoldSpecificsVC.h" -#import "YUMIIAPReindictRegardGovernancer.h" -#import "YUMIRevenueReflectionExternalize.h" -#import "FBCIncomeRecordCeremony.h" -#import "YUMIRevenueReflectionMatrix.h" -#import "AccountAbstractStorage.h" -#import "YUMIHtmlUrl.h" - -@interface YUMIRevenueReflectionVC () -@property (nonatomic,strong) YUMIRevenueReflectionRegard *bWSttawberryRegard; -@property (nonatomic,strong) YUMIRevenueReflectionRegard *goldRegard; -@property (nonatomic,strong) YUMIRevenueReflectionMatrix *reflectionMatrix; -@end - -@implementation YUMIRevenueReflectionVC - -- (YUMIRevenueReflectionExternalize *)producePresimport { - return [[YUMIRevenueReflectionExternalize alloc] init]; -} -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self EvidenceChambering]; - [self.presimport requisitionQueryAboutChamberGenre]; - -} -#pragma mark - Private Method -- (void)initSubViews { - self.view.backgroundColor = [UIColor whiteColor]; - self.title = YMLocalizedString(@"YUMI_Income_Record_VC_0"); - [self.view addSubview:self.bWSttawberryRegard]; - [self.view addSubview:self.goldRegard]; - self.goldRegard.isCollectivePresident = YES; - -} -- (void)initChildLyRestrictions { - [self.bWSttawberryRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(18)); - make.left.right.equalTo(self.view).inset(kGetScaleWidth(15)); - make.height.mas_equalTo(kGetScaleWidth(144)); - }]; - [self.goldRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.equalTo(self.bWSttawberryRegard); - make.top.equalTo(self.bWSttawberryRegard.mas_bottom).mas_offset(kGetScaleWidth(20)); - make.height.mas_equalTo(!self.goldRegard.isCollectivePresident ? kGetScaleWidth( 144) : kGetScaleWidth(90)); - }]; -} -#pragma mark - FBCExchangeDiamondsVCRepresendtation --(void)acknowledgementExdiversifictowardsionDiamondsAboutDiamondAccomplishment:(NSString *)strawberry gold:(NSString *)gold{ - self.reflectionMatrix.diamonds = self.reflectionMatrix.diamonds + strawberry.doubleValue; - self.reflectionMatrix.golds = self.reflectionMatrix.golds - gold.doubleValue; - NSString *diamondNum = [NSString stringWithFormat:@"%.0f",self.reflectionMatrix.diamonds]; - NSString *goldNum = [NSString stringWithFormat:@"%.2f",self.reflectionMatrix.golds]; - self.bWSttawberryRegard.number = diamondNum; - self.goldRegard.number = goldNum; -} -#pragma mark - FBCIncomeRecordCeremony -- (void)requisitionQueryAboutChamberGenreFlunk{ - self.goldRegard.hidden = NO; -} --(void)acquireExdiversifictowardsionDiamondAbstractrmtowardsion:(YUMIExchangeDiamondsMatrix *)model{ - [self brakeHUD]; - YUMIExchangeDiamondsVC *exchangeVC = [YUMIExchangeDiamondsVC new]; - exchangeVC.model = model; - exchangeVC.delegate = self; - [self.navigationController pushViewController:exchangeVC animated:YES]; -} --(void)acquireReflectionRevenueAccomplishment:(YUMIRevenueReflectionMatrix *)model{ - [self brakeHUD]; - self.reflectionMatrix = model; - self.goldRegard.hidden = self.reflectionMatrix.roomType == 4; - self.bWSttawberryRegard.number = @(model.diamonds).stringValue; - self.goldRegard.number = [NSString stringWithFormat:@"%.2f",model.golds]; - NSString * myUid = [AccountAbstractStorage instance].acquireCid; - if(![self.collectiveAbstract.clan.elderUid isEqualToString:myUid]){ - self.goldRegard.isCollectivePresident = !self.reflectionMatrix.hasGoldExchangeAuth; - if(self.reflectionMatrix.hasGoldExchangeAuth == YES){ - [self.goldRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(kGetScaleWidth( 144)); - }]; - } - } - - -} - -#pragma mark - FBCIncomeRecordRegardRepresendtation --(void)clickShankAboutGenre:(IncomeRecordViewClickType)type{ - switch (type) { - case ClickType_Diamond_Detail: - { - YUMITissueRegardGovernancer * webVewC =[[YUMITissueRegardGovernancer alloc] init]; - webVewC.url = URLWithType(kMineEarningsRecord); - [self.navigationController pushViewController:webVewC animated:YES]; - break; - } - case ClickType_Diamond_Pay: - { - YUMIIAPReindictRegardGovernancer * webVewC =[[YUMIIAPReindictRegardGovernancer alloc] init]; - [self.navigationController pushViewController:webVewC animated:YES]; - break; - } - case ClickType_Gold_Exchangel: - { - if(self.reflectionMatrix.isClan == NO){ - YUMIExchangeDiamondsVC *exchangeVC = [YUMIExchangeDiamondsVC new]; - exchangeVC.delegate = self; - [self.navigationController pushViewController:exchangeVC animated:YES]; - return; - } - [self EvidenceChambering]; - [self.presimport acquireExdiversifictowardsionDiamondAbstractrmtowardsion]; - - - break; - } - default: - { - YUMIRevenueReflectionGoldSpecificsVC *goldDetailVC = [YUMIRevenueReflectionGoldSpecificsVC new]; - [self.navigationController pushViewController:goldDetailVC animated:YES]; - break; - } - } -} -#pragma mark -懒加载 -- (YUMIRevenueReflectionRegard *)bWSttawberryRegard{ - if (!_bWSttawberryRegard){ - _bWSttawberryRegard = [[YUMIRevenueReflectionRegard alloc]initWithFrame:CGRectZero type:IncomeRecord_Diamond]; - _bWSttawberryRegard.delegate = self; - } - return _bWSttawberryRegard; -} -- (YUMIRevenueReflectionRegard *)goldRegard{ - if (!_goldRegard){ - _goldRegard = [[YUMIRevenueReflectionRegard alloc]initWithFrame:CGRectZero type:IncomeRecord_Gold]; - _goldRegard.delegate = self; - _goldRegard.hidden = YES; - } - return _goldRegard; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineSimpleUserInfoHeaderView.h b/YuMi/Modules/YMMine/View/MineInfo/XPMineSimpleUserInfoHeaderView.h new file mode 100644 index 00000000..d4a32c19 --- /dev/null +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineSimpleUserInfoHeaderView.h @@ -0,0 +1,33 @@ +// +// YMMineSimpleUserInfoHeaderView.h +// YUMI +// +// Created by XY on 2023/2/21. +// + +#import + +@class UserInfoModel; +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMineSimpleUserInfoHeaderViewDelegate +/// 点击了更多礼物 +- (void)headerViewMoreGiftAction; +/// 点击了直播中 +- (void)headerViewOnlineAction:(NSString *)roomUid; + +@end + +@interface XPMineSimpleUserInfoHeaderView : UIView + +/// 用户信息 +@property (nonatomic,strong) UserInfoModel *userInfo; + +///当前查看用户是否在直播 +@property (nonatomic,copy) NSString *roomUid; + +@property (nonatomic,weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineSimpleUserInfoHeaderView.m b/YuMi/Modules/YMMine/View/MineInfo/XPMineSimpleUserInfoHeaderView.m new file mode 100644 index 00000000..95f49037 --- /dev/null +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineSimpleUserInfoHeaderView.m @@ -0,0 +1,465 @@ +// +// YMMineSimpleUserInfoHeaderView.m +// YUMI +// +// Created by XY on 2023/2/21. +// + +#import "XPMineSimpleUserInfoHeaderView.h" +#import "NetImageView.h" +#import +#import "DJDKMIMOMColor.h" +#import +#import +#import + +///Tool +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "UIImageConstant.h" +#import "UIButton+EnlargeTouchArea.h" +#import "UIImage+Utils.h" + +///View +#import "XPMineUserInfoGiftView.h" + +#import "UserGiftWallInfoModel.h" +#import "UserInfoModel.h" + + +@interface XPMineSimpleUserInfoHeaderView() + +/// 背景图 +@property (nonatomic, strong) NetImageView *bgImageView; +/// 毛玻璃 +@property (nonatomic, strong) UIVisualEffectView *effectView; +/// 昵称 +@property (nonatomic, strong) UILabel *nicknameLabel; +/// ID +@property (nonatomic, strong) UILabel *idLabel; +/// 头像 +@property (nonatomic, strong) NetImageView *avatarImageView; +/// 个人简介 +@property (nonatomic, strong) UILabel *introduceLabel; +/// 粉丝 +@property (nonatomic, strong) UILabel *fansLabel; +/// 直播中 +@property (nonatomic,strong) UIButton *onlineBtn; + +// ---------- 礼物部分 + +///背景 +@property (nonatomic,strong) UIImageView * backImageView; +///灰色背景 +@property (nonatomic,strong) UIView *giftBgView; +///显示更多 +@property (nonatomic,strong) UIButton *arrowButton; +///标题 +@property (nonatomic,strong) UILabel *titleLabel; +///分页标题 +@property (nonatomic, strong) NSArray *titles; +///分页控件 +@property (nonatomic, strong) JXCategoryTitleView *titleView; +///分页lineView +@property (nonatomic, strong) JXCategoryListContainerView *containerView; +///普通礼物 +@property (nonatomic,strong) XPMineUserInfoGiftView *normalGiftView; +///幸运礼物 +@property (nonatomic,strong) XPMineUserInfoGiftView *luckyGiftView; +///动态 +@property (nonatomic,strong) UILabel *dynamicLabel; + +///礼物墙中的礼物 +@property (nonatomic,strong) NSArray *userGiftWall; +///礼物墙中的幸运礼物礼物 +@property (nonatomic,strong) NSArray *userLuckyBagGiftWall; + +@end + +@implementation XPMineSimpleUserInfoHeaderView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self createUI]; + } + return self; +} + +- (void)createUI { + [self addSubview:self.bgImageView]; + [self.bgImageView addSubview:self.effectView]; + [self addSubview:self.nicknameLabel]; + [self addSubview:self.idLabel]; + [self addSubview:self.avatarImageView]; + [self addSubview:self.introduceLabel]; + [self addSubview:self.fansLabel]; + [self addSubview:self.onlineBtn]; + + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.left.right.mas_equalTo(0); + make.height.mas_equalTo(260); + }]; + [self.effectView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.bgImageView); + }]; + [self.nicknameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.avatarImageView).offset(-5); + make.left.mas_equalTo(16); + make.right.mas_equalTo(self.avatarImageView.mas_left).offset(-5); + }]; + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.nicknameLabel.mas_bottom).offset(2); + make.left.mas_equalTo(self.nicknameLabel); + make.right.mas_equalTo(self.nicknameLabel); + }]; + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.bgImageView); + make.right.mas_equalTo(-16); + make.width.height.mas_equalTo(86); + }]; + [self.fansLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.avatarImageView.mas_bottom).offset(16); + make.centerX.mas_equalTo(self.avatarImageView); + make.width.mas_equalTo(self.avatarImageView); + }]; + [self.introduceLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nicknameLabel); + make.top.mas_equalTo(self.fansLabel); + make.right.mas_equalTo(self.avatarImageView.mas_left).offset(-10); + }]; + [self.onlineBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(0); + make.bottom.mas_equalTo(self.nicknameLabel.mas_top).offset(-12); + make.width.mas_equalTo(56); + make.height.mas_equalTo(24); + }]; + + // 礼物部分 + + [self addSubview:self.backImageView]; + [self.backImageView addSubview:self.titleLabel]; + [self.backImageView addSubview:self.giftBgView]; + [self.backImageView addSubview:self.arrowButton]; + [self.giftBgView addSubview:self.titleView]; + [self.giftBgView addSubview:self.containerView]; + [self.backImageView addSubview:self.dynamicLabel]; + + CGFloat itemHeight = 65; + CGFloat topHeight = 100; + CGFloat bottomHeight = 45; + CGFloat giftHeight = itemHeight * 3 + 10 * 3 + topHeight + bottomHeight; + + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(0); + make.top.mas_equalTo(self.bgImageView.mas_bottom).offset(-20); + make.height.mas_equalTo(giftHeight); + }]; + + [self.giftBgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(16); + make.right.mas_equalTo(-16); + make.top.mas_equalTo(47); + make.height.mas_equalTo(281); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backImageView).offset(16); + make.top.mas_equalTo(self.backImageView).offset(16); + }]; + + [self.arrowButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(13, 22)); + make.centerY.mas_equalTo(self.titleLabel); + make.right.mas_equalTo(self.backImageView).offset(-15); + }]; + + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.giftBgView); + make.width.mas_equalTo(90 * 2 + 20); + make.height.mas_equalTo(50); + make.top.mas_equalTo(0); + }]; + + [self.containerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(0); + make.top.mas_equalTo(self.titleView.mas_bottom).offset(8); + make.bottom.mas_equalTo(0); + }]; + + [self.dynamicLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.titleLabel); + make.top.mas_equalTo(self.giftBgView.mas_bottom).offset(20); + }]; + +} + +- (void)setUserInfo:(UserInfoModel *)userInfo { + _userInfo = userInfo; + if (_userInfo) { + self.idLabel.text = [NSString stringWithFormat:@"ID:%ld", (long)_userInfo.erbanNo]; + self.nicknameLabel.text = _userInfo.nick.length > 0 ? _userInfo.nick : @""; + self.avatarImageView.imageUrl = userInfo.avatar; + self.bgImageView.imageUrl = userInfo.avatar; + self.introduceLabel.text = _userInfo.userDesc.length > 0 ? _userInfo.userDesc : YMLocalizedString(@"XPMineSimpleUserInfoHeaderView0"); + self.fansLabel.text =[NSString stringWithFormat:@"粉丝:%ld", _userInfo.fansNum]; + + self.userGiftWall = self.userInfo.userGiftWall; + self.userLuckyBagGiftWall = self.userInfo.userLuckyBagGiftWall; + } +} + +- (void)setRoomUid:(NSString *)roomUid { + _roomUid = roomUid; + self.onlineBtn.hidden = _roomUid.length <= 0; +} + +#pragma mark - JXCategoryViewDelegate +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { + return self.titles.count; +} + +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { + if (index == 0) { + return self.normalGiftView; + } else { + return self.luckyGiftView; + } +} +#pragma mark - Event Response +- (void)arrowButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(headerViewMoreGiftAction)]) { + [self.delegate headerViewMoreGiftAction]; + } +} + +- (void)onlineBtnAction { + if (self.delegate && [self.delegate respondsToSelector:@selector(headerViewOnlineAction:)]) { + [self.delegate headerViewOnlineAction:self.roomUid]; + } +} + +#pragma mark - Getters And Setters +- (void)setUserGiftWall:(NSArray *)userGiftWall { + _userGiftWall = userGiftWall; + if (_userGiftWall.count > 12) { + NSMutableArray * array = [_userGiftWall mutableCopy]; + _userGiftWall = [array subarrayWithRange:NSMakeRange(0, 12)]; + } + self.normalGiftView.datasource = _userGiftWall; +} + +- (void)setUserLuckyBagGiftWall:(NSArray *)userLuckyBagGiftWall { + _userLuckyBagGiftWall = userLuckyBagGiftWall; + if (_userLuckyBagGiftWall.count > 12) { + NSMutableArray * array = [_userLuckyBagGiftWall mutableCopy]; + _userLuckyBagGiftWall = [array subarrayWithRange:NSMakeRange(0, 12)]; + } + self.luckyGiftView.datasource = _userLuckyBagGiftWall; +} + + +#pragma mark - 懒加载 + +- (NetImageView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[NetImageView alloc] init]; + _bgImageView.contentMode = UIViewContentModeScaleAspectFill; + _bgImageView.clipsToBounds = YES; + } + return _bgImageView; +} + +- (UIVisualEffectView *)effectView { + if (!_effectView) { + UIBlurEffect *blur = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; + _effectView = [[UIVisualEffectView alloc] initWithEffect:blur]; + _effectView.alpha = 0.9; + } + return _effectView; +} + +- (UILabel *)nicknameLabel { + if (!_nicknameLabel) { + _nicknameLabel = [[UILabel alloc] init]; + _nicknameLabel.textColor = UIColor.whiteColor; + _nicknameLabel.font = [UIFont systemFontOfSize:20 weight:UIFontWeightMedium]; + } + return _nicknameLabel; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.textColor = [UIColor.whiteColor colorWithAlphaComponent:0.4]; + _idLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; + } + return _idLabel; +} + +- (UILabel *)introduceLabel { + if (!_introduceLabel) { + _introduceLabel = [[UILabel alloc] init]; + _introduceLabel.textColor = UIColor.whiteColor; + _introduceLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightRegular]; + _introduceLabel.numberOfLines = 2; + } + return _introduceLabel; +} + +- (UILabel *)fansLabel { + if (!_fansLabel) { + _fansLabel = [[UILabel alloc] init]; + _fansLabel.textColor = UIColor.whiteColor; + _fansLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightRegular]; + _fansLabel.textAlignment = NSTextAlignmentCenter; + } + return _fansLabel; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.userInteractionEnabled = YES; + _avatarImageView.contentMode = UIViewContentModeScaleAspectFill; + _avatarImageView.layer.borderWidth = 2; + _avatarImageView.layer.borderColor = [UIColor.whiteColor colorWithAlphaComponent:0.4].CGColor; + _avatarImageView.layer.cornerRadius = 86/2; + _avatarImageView.clipsToBounds = YES; + + } + return _avatarImageView; +} + +- (UIButton *)onlineBtn { + if(!_onlineBtn) { + _onlineBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_onlineBtn setTitle:YMLocalizedString(@"XPMineSimpleUserInfoHeaderView2") forState:UIControlStateNormal]; + [_onlineBtn setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; + _onlineBtn.titleLabel.font = [UIFont systemFontOfSize:12]; + [_onlineBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _onlineBtn.layer.masksToBounds = YES; + _onlineBtn.layer.cornerRadius = 24/2; + _onlineBtn.layer.maskedCorners = kCALayerMaxXMinYCorner | kCALayerMaxXMaxYCorner; + [_onlineBtn addTarget:self action:@selector(onlineBtnAction) forControlEvents:UIControlEventTouchUpInside]; + _onlineBtn.hidden = YES; + } + return _onlineBtn; +} + +#pragma mark - 礼物部分 + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.layer.cornerRadius = 20; + _backImageView.layer.maskedCorners = kCALayerMinXMinYCorner | kCALayerMaxXMinYCorner; + _backImageView.backgroundColor =[DJDKMIMOMColor appCellBackgroundColor]; + } + return _backImageView; +} + +- (UIView *)giftBgView { + if (!_giftBgView) { + _giftBgView = [[UIView alloc] init]; + _giftBgView.backgroundColor = UIColorFromRGB(0xF6F7F9); + _giftBgView.layer.cornerRadius = 12; + } + return _giftBgView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPMineSimpleUserInfoHeaderView3"); + _titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +- (UIButton *)arrowButton { + if (!_arrowButton) { + _arrowButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_arrowButton setImage:[UIImage imageNamed:@"room_setting_arrow"] forState:UIControlStateNormal]; + [_arrowButton setImage:[UIImage imageNamed:@"room_setting_arrow"] forState:UIControlStateSelected]; + [_arrowButton addTarget:self action:@selector(arrowButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_arrowButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + } + return _arrowButton; +} + +- (JXCategoryTitleView *)titleView { + if (!_titleView) { + _titleView = [[JXCategoryTitleView alloc] init]; + _titleView.delegate = self; + _titleView.titles = self.titles; + _titleView.backgroundColor = [UIColor clearColor]; + _titleView.titleColor = [DJDKMIMOMColor secondTextColor]; + _titleView.titleSelectedColor = [DJDKMIMOMColor appMainColor]; + _titleView.titleFont = [UIFont systemFontOfSize:14]; + _titleView.titleSelectedFont = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; + _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; + _titleView.defaultSelectedIndex = 0; + _titleView.cellSpacing = 20; + _titleView.cellWidthIncrement = 5; + _titleView.cellWidth = 60; + _titleView.listContainer = self.containerView; + +// JXCategoryIndicatorImageView *lineView = [[JXCategoryIndicatorImageView alloc] init]; +// lineView.indicatorImageViewSize = CGSizeMake(60, 8); +// lineView.verticalMargin = 6; +// lineView.indicatorImageView.image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFFC000), UIColorFromRGB(0xFFD15A)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(60, 8)]; +// lineView.indicatorImageView.layer.masksToBounds = YES; +// lineView.indicatorImageView.layer.cornerRadius = 6; +// _titleView.indicators = @[lineView]; + } + return _titleView; +} + +- (JXCategoryListContainerView *)containerView { + if (!_containerView) { + _containerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; + _containerView.defaultSelectedIndex = 0; + _containerView.scrollView.tag = 1009; + } + return _containerView; +} + +- (NSArray *)titles { + if (!_titles) { + _titles = @[@"普通礼物", YMLocalizedString(@"XPMineSimpleUserInfoHeaderView5")]; + } + return _titles; +} + +- (XPMineUserInfoGiftView *)normalGiftView { + if (!_normalGiftView) { + _normalGiftView = [[XPMineUserInfoGiftView alloc] init]; + } + return _normalGiftView; +} + +- (XPMineUserInfoGiftView *)luckyGiftView { + if (!_luckyGiftView) { + _luckyGiftView = [[XPMineUserInfoGiftView alloc] init]; + } + return _luckyGiftView; +} + +- (UILabel *)dynamicLabel { + if (!_dynamicLabel) { + _dynamicLabel = [[UILabel alloc] init]; + _dynamicLabel.text = YMLocalizedString(@"XPMineSimpleUserInfoHeaderView6"); + _dynamicLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; + _dynamicLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _dynamicLabel; +} + +@end diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineSimpleUserInfoViewController.h b/YuMi/Modules/YMMine/View/MineInfo/XPMineSimpleUserInfoViewController.h new file mode 100644 index 00000000..6e5a1eb0 --- /dev/null +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineSimpleUserInfoViewController.h @@ -0,0 +1,19 @@ +// +// YMMineSimpleUserInfoViewController.h +// YUMI +// +// Created by XY on 2023/2/21. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineSimpleUserInfoViewController : MvpViewController + +///用户的id +@property (nonatomic,assign) NSInteger uid; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineSimpleUserInfoViewController.m b/YuMi/Modules/YMMine/View/MineInfo/XPMineSimpleUserInfoViewController.m new file mode 100644 index 00000000..d8e1ad3a --- /dev/null +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineSimpleUserInfoViewController.m @@ -0,0 +1,406 @@ +// +// YMMineSimpleUserInfoViewController.m +// YUMI +// +// Created by XY on 2023/2/21. +// + +#import "XPMineSimpleUserInfoViewController.h" +#import "YUMIMacroUitls.h" +#import +#import +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "AccountInfoStorage.h" +#import "TTPopup.h" +#import "YUMIHtmlUrl.h" +#import "XPSkillCardPlayerManager.h" +#import "UIImage+Utils.h" +#import "YUMIConstant.h" +#import "NIMMessageUtils.h" +#import "NSArray+Safe.h" +#import "ClientConfig.h" +#import "XNDJTDDLoadingTool.h" + +#import "MonentsListInfoModel.h" +#import "MineSkillCardListInfoModel.h" +#import "UserInfoModel.h" + +///P +#import "XPMineUserInfoPresenter.h" +#import "XPMineUserInfoProtocol.h" +#import "RoomHostDelegate.h" +///View +#import "XPMomentListCollectionViewCell.h" +#import "XPMineUserInfoCustomNavView.h" +#import "XPMineSimpleUserInfoHeaderView.h" +///VC +#import "XPMineUserInfoEditViewController.h" +#import "XPWebViewController.h" +#import "SessionViewController.h" +#import "XPRoomViewController.h" +#import "XPMineUserDataViewController.h" +#import "XPMonentsMineViewController.h" +#import "XPMonentsDetailViewController.h" +#import "XPMomentsSimpleDetailViewController.h" +#import "XPMineUserInfoGiftWallViewController.h" + +#define kHeaderViewHeight 615 + +@interface XPMineSimpleUserInfoViewController () + +@property (nonatomic, strong) UICollectionView *collectionView; +///头部视图 +@property (nonatomic, strong) XPMineSimpleUserInfoHeaderView *headerView; +///自定义的导航栏 +@property (nonatomic,strong) XPMineUserInfoCustomNavView *navView; +///用户信息 +@property (nonatomic,strong) UserInfoModel *userInfo; +///底部的容器 +@property (nonatomic,strong) UIStackView *bottomStackView; +///私聊 +@property (nonatomic,strong) UIButton *chatButton; +///关注 +@property (nonatomic,strong) UIButton *attentionButton; + +@end + +@implementation XPMineSimpleUserInfoViewController + +- (XPMineUserInfoPresenter *)createPresenter { + return [[XPMineUserInfoPresenter alloc] init]; +} + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self createUI]; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + if (self.uid > 0) { + [self initHttpRequest]; + } +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + +} + +- (void)createUI { + [self.view addSubview:self.collectionView]; + [self.collectionView addSubview:self.headerView]; + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(0); + make.left.right.mas_equalTo(0); + make.bottom.mas_equalTo(0); + }]; + + [self.view addSubview:self.navView]; + [self.navView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.height.mas_equalTo(kNavigationHeight); + }]; + + if (self.uid != [AccountInfoStorage instance].getUid.integerValue) { + [self.view addSubview:self.chatButton]; + [self.chatButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.view); + make.height.mas_equalTo(36); + make.width.mas_equalTo(100); + make.bottom.mas_equalTo(self.view).offset(-kSafeAreaBottomHeight - 15); + }]; + } +} + +- (void)initHttpRequest { + NSString *uid = [NSString stringWithFormat:@"%ld", self.uid]; + ///请求目标用户的个人信息 +// [self.presenter getUserInfoWithUid:uid]; + [self.presenter getUserAttentionState:uid]; + + //获取用户详细信息 跟随进房目前使用的这个接口 + [self.presenter getUserDetailInfoWithUid:uid]; + + NSString * myUid = [AccountInfoStorage instance].getUid; + ///上传访问记录 + if (![uid isEqualToString:myUid]) { + ///请求我自己的个人信息 +// [self.presenter getUserInfoWithUid:myUid]; + } +} + +#pragma mark - 拉黑 移除黑名单 +- (void)showRightNavHandle { + NSMutableArray *array = [NSMutableArray array]; + NSString *uid = [NSString stringWithFormat:@"%ld",self.uid]; + TTActionSheetConfig *report = [TTActionSheetConfig normalTitle:YMLocalizedString(@"XPMineSimpleUserInfoViewController0") clickAction:^{ + if ([ClientConfig shareConfig].canOpen) { + XPWebViewController *vc = [[XPWebViewController alloc]init]; + NSString *urlstr = [NSString stringWithFormat:@"%@?reportUid=%@&source=PERSONAL",URLWithType(kReportRoomURL),uid]; + vc.url = urlstr; + [self.navigationController pushViewController:vc animated:YES]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPMineSimpleUserInfoViewController1")]; + } + }]; + + TTActionSheetConfig *black = [TTActionSheetConfig normalTitle:YMLocalizedString(@"XPMineSimpleUserInfoViewController2") clickAction:^{ + [self addOrRemoveBlack:NO uid:uid]; + }]; + + [array addObjectsFromArray:@[report, black]]; + + BOOL isInBlackList = [[NIMSDK sharedSDK].userManager isUserInBlackList:uid] || [NIMMessageUtils isOfficalAccount:[NSString stringWithFormat:@"%ld", self.uid]]; + if (isInBlackList) { + [array removeObject:black]; + } + [TTPopup actionSheetWithItems:array]; +} + + +//加入黑名单 +- (void)addOrRemoveBlack:(BOOL)isRemove uid:(NSString *)uid { + NSString *title; + NSString *message; + if (isRemove) { + title = YMLocalizedString(@"XPMineSimpleUserInfoViewController3"); + message = YMLocalizedString(@"XPMineSimpleUserInfoViewController4"); + }else{ + title = YMLocalizedString(@"XPMineSimpleUserInfoViewController5"); + message = YMLocalizedString(@"XPMineSimpleUserInfoViewController6"); + } + + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.title = title; + config.message = message; + + [TTPopup alertWithConfig:config confirmHandler:^{ + if (isRemove) { + [[NIMSDK sharedSDK].userManager removeFromBlackBlackList:uid completion:^(NSError * _Nullable error) { + if (error == nil) { + [self showSuccessToast:YMLocalizedString(@"XPMineSimpleUserInfoViewController7")]; + } + }]; + } else { + [[NIMSDK sharedSDK].userManager addToBlackList:uid completion:^(NSError * _Nullable error) { + if (error == nil) { + [self showSuccessToast:YMLocalizedString(@"XPMineSimpleUserInfoViewController8")]; + } + }]; + } + } cancelHandler:^{ + }]; +} + +#pragma mark - XPMineCustomNavViewDelegate +- (void)xPMineCustomNavView:(XPMineUserInfoCustomNavView *)view didClickEditButton:(UIButton *)sender { + if (sender.isSelected) {///自己看自己的 去修改资料 + XPMineUserInfoEditViewController * editVC = [[XPMineUserInfoEditViewController alloc] init]; + [self.navigationController pushViewController:editVC animated:YES]; + } else { + [self showRightNavHandle]; + } +} + +- (void)xPMineCustomNavView:(XPMineUserInfoCustomNavView *)view didClickBackButton:(UIButton *)sender { + [self.navigationController popViewControllerAnimated:YES]; +} + +#pragma mark - XPMineSimpleUserInfoHeaderViewDelegate +/// 更多了礼物 +- (void)headerViewMoreGiftAction { + if (self.uid > 0) { + XPMineUserInfoGiftWallViewController * giftWallVC = [[XPMineUserInfoGiftWallViewController alloc] init]; + giftWallVC.userUid = [NSString stringWithFormat:@"%ld", self.uid]; + [self.navigationController pushViewController:giftWallVC animated:YES]; + } +} + +/// 点击了直播中 +- (void)headerViewOnlineAction:(NSString *)roomUid { + if (roomUid.length > 0 ) { + //退出原来的房间 如果有的话 TODO 总感觉这种处理不太优雅 进房入口多了 怎么办 进房需要整合 + [self.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj isKindOfClass:[XPRoomViewController class]]) { + [self.navigationController popToRootViewControllerAnimated:NO]; + XPRoomViewController * rooomVC = obj; + [rooomVC exitRoom]; + *stop = YES; + } + }]; + [XPRoomViewController openRoom:roomUid viewController:self]; + } +} + +#pragma mark - XPMineUserInfoProtocol +- (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo { + if (userInfo.uid == self.uid) { + self.userInfo = userInfo; +// self.headView.userInfo = userInfo; + } else { + if (!userInfo.userVipInfoVO.lookHomepageHide) { + NSString * uid = [NSString stringWithFormat:@"%ld", self.uid]; + [self.presenter visitUser:uid]; + } + } +} + +- (void)ongetDetailInfoSuccess:(UserInfoModel *)userInfo { + self.userInfo = userInfo; + self.headerView.userInfo = userInfo; + self.headerView.roomUid = userInfo.roomUid; + [self.collectionView reloadData]; +// self.userDataVC.userInfo = userInfo; +// self.monentsVC.dynamicInfo = userInfo.dynamicInfo; + +} + +- (void)getAttentionStateSuccess:(BOOL)status { + self.attentionButton.selected = status; +} + +- (void)attentionUserSuccess:(BOOL)status { + self.attentionButton.selected = status; +} + + +#pragma mark - Event Response +- (void)chatButtonAction:(UIButton *)sender { + NSString * sessionId = [NSString stringWithFormat:@"%ld",self.uid]; + NIMSession * session = [NIMSession session:sessionId type:NIMSessionTypeP2P]; + SessionViewController * sessionVC = [[SessionViewController alloc] initWithSession:session]; + [self.navigationController pushViewController:sessionVC animated:YES]; +} + +- (void)attentionButtonAction:(UIButton *)sender { + NSString *uid = [NSString stringWithFormat:@"%ld", self.uid]; + [self.presenter attentionUser:uid state:!sender.selected]; +} + + +#pragma mark - UICollectionView + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.userInfo.dynamicInfo.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPMomentListCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass(XPMomentListCollectionViewCell.self) forIndexPath:indexPath]; + MonentsInfoModel * monentsInfo = [self.userInfo.dynamicInfo safeObjectAtIndex1:indexPath.row]; + cell.monentsInfo = monentsInfo; + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + if (self.userInfo.dynamicInfo.count > 0) { + + if ([ClientConfig shareConfig].canOpen) { + XPMonentsDetailViewController * detailVC = [[XPMonentsDetailViewController alloc] init]; + MonentsInfoModel * monentsInfo = [self.userInfo.dynamicInfo safeObjectAtIndex1:indexPath.row]; + detailVC.monentsInfo = monentsInfo; + [self.navigationController pushViewController:detailVC animated:YES]; + }else{ + XPMomentsSimpleDetailViewController * detailVC = [[XPMomentsSimpleDetailViewController alloc] init]; + MonentsInfoModel * monentsInfo = [self.userInfo.dynamicInfo safeObjectAtIndex1:indexPath.row]; + detailVC.monentsInfo = monentsInfo; + [self.navigationController pushViewController:detailVC animated:YES]; + } + } +} + +#pragma mark - 懒加载 + +- (UICollectionView *)collectionView { + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.scrollDirection = UICollectionViewScrollDirectionVertical; + CGFloat width = (KScreenWidth - 16 -13 -16)/2.0; + CGFloat height = 220.0/165.0*width; + layout.itemSize = CGSizeMake(width, height); + layout.minimumLineSpacing = 12.0; + layout.minimumInteritemSpacing = 13.0; + layout.sectionInset = UIEdgeInsetsMake(12, 16, 12, 16); + + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.backgroundColor = UIColor.whiteColor; + _collectionView.alwaysBounceVertical = YES; + [_collectionView registerClass:[XPMomentListCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass(XPMomentListCollectionViewCell.self)]; + _collectionView.delegate = self; + _collectionView.dataSource = self; + _collectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + + _collectionView.contentInset = UIEdgeInsetsMake(kHeaderViewHeight, 0, 0, 0); + + } + return _collectionView; +} + +- (XPMineSimpleUserInfoHeaderView *)headerView { + if (!_headerView) { + _headerView = [[XPMineSimpleUserInfoHeaderView alloc] init]; + _headerView.frame = CGRectMake(0, -kHeaderViewHeight, KScreenWidth, kHeaderViewHeight); + _headerView.delegate = self; + } + return _headerView; +} + +- (XPMineUserInfoCustomNavView *)navView { + if (!_navView) { + _navView = [[XPMineUserInfoCustomNavView alloc] init]; + _navView.delegate = self; + } + return _navView; +} + +- (UIStackView *)bottomStackView { + if (!_bottomStackView) { + _bottomStackView = [[UIStackView alloc] init]; + _bottomStackView.axis = UILayoutConstraintAxisHorizontal; + _bottomStackView.distribution = UIStackViewDistributionFillEqually; + _bottomStackView.alignment = UIStackViewAlignmentFill; + _bottomStackView.spacing = 25; + } + return _bottomStackView; +} + +- (UIButton *)chatButton { + if (!_chatButton) { + _chatButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_chatButton setTitle:YMLocalizedString(@"XPMineSimpleUserInfoViewController9") forState:UIControlStateNormal]; + [_chatButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + _chatButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_chatButton setBackgroundColor:[DJDKMIMOMColor appMainColor]]; + _chatButton.layer.masksToBounds = YES; + _chatButton.layer.cornerRadius = 36/2; + [_chatButton addTarget:self action:@selector(chatButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _chatButton; +} + +- (UIButton *)attentionButton { + if (!_attentionButton) { + _attentionButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_attentionButton setTitle:YMLocalizedString(@"XPMineSimpleUserInfoViewController10") forState:UIControlStateNormal]; + [_attentionButton setTitle:YMLocalizedString(@"XPMineSimpleUserInfoViewController11") forState:UIControlStateSelected]; + [_attentionButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_attentionButton setTitleColor:[DJDKMIMOMColor cancelButtonTextColor] forState:UIControlStateSelected]; + [_attentionButton setImage:[UIImage imageNamed:@"mine_user_info_bottom_attention_normal"] forState:UIControlStateNormal]; + [_attentionButton setImage:[UIImage imageNamed:@"mine_user_info_bottom_attention_select"] forState:UIControlStateSelected]; + _attentionButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_attentionButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_attentionButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor cancelButtonGradientStartColor], [DJDKMIMOMColor cancelButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateSelected]; + _attentionButton.layer.masksToBounds = YES; + _attentionButton.layer.cornerRadius = 36/2; + _attentionButton.hidden = YES; + [_attentionButton addTarget:self action:@selector(attentionButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _attentionButton; +} + +@end diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineUserDataViewController.h b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserDataViewController.h new file mode 100644 index 00000000..d8ca64c4 --- /dev/null +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserDataViewController.h @@ -0,0 +1,18 @@ +// +// YMMineUserDataViewController.h +// YUMI +// +// Created by YUMI on 2022/4/14. +// + +#import "MvpViewController.h" +#import +NS_ASSUME_NONNULL_BEGIN +@class UserInfoModel, MineSkillCardListInfoModel, XPMineUserDataViewController; +@interface XPMineUserDataViewController : MvpViewController +@property (nonatomic,copy) NSString *userUid; +///用户信息 +@property (nonatomic,strong) UserInfoModel *userInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineUserDataViewController.m b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserDataViewController.m new file mode 100644 index 00000000..009bbc7b --- /dev/null +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserDataViewController.m @@ -0,0 +1,246 @@ +// +// YMMineUserDataViewController.m +// YUMI +// +// Created by YUMI on 2022/4/14. +// + +#import "XPMineUserDataViewController.h" +///Third +#import +///Tool +#import "AccountInfoStorage.h" +#import "YUMIMacroUitls.h" +#import "TTPopup.h" +#import "DJDKMIMOMColor.h" +#import "YUMIHtmlUrl.h" +///View +#import "XPMineDataClanTableViewCell.h" +#import "XPMineDataGiftTableViewCell.h" +///Model +#import "ClanDetailInfoModel.h" +#import "UserInfoModel.h" +///P +#import "XPMineUserDataPresenter.h" +#import "XPMineUserDataProtocol.h" +///View +#import "XPMineUserInfoGiftWallViewController.h" +#import "XPMineClanViewController.h" +#import "XPMineGuildViewController.h" +#import "XPWebViewController.h" +@interface XPMineUserDataViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///家族信息 +@property (nonatomic,strong) ClanDetailInfoModel *clanDetailInfo; +///是否折叠 +@property (nonatomic,assign) BOOL isFold; +@property (nonatomic, copy) void(^scrollCallback)(UIScrollView *scrollView); +///是否展示加入家族房间 +@property (nonatomic,assign) BOOL isShowEnterClan; +@end + +@implementation XPMineUserDataViewController + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (__kindof id)createPresenter { + return [[XPMineUserDataPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initHettpRequest]; + [self initSubViews]; + [self initSubViewConstraints]; +} +#pragma mark - Http +- (void)initHettpRequest { + self.isFold = YES; + self.isShowEnterClan = NO; + [self.presenter getClanDetailInfo:self.userUid currentUserUid:[AccountInfoStorage instance].getUid]; +} +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +///实名认证弹窗 +- (void)showRealNameAuthenticationTipsAlertView { + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.message = YMLocalizedString(@"XPMineUserDataViewController0"); + config.messageLineSpacing = 4; + config.confirmButtonConfig.title = YMLocalizedString(@"XPMineUserDataViewController1"); + config.confirmButtonConfig.titleColor = UIColor.whiteColor; + config.confirmButtonConfig.backgroundColor = [DJDKMIMOMColor appMainColor]; + + TTAlertMessageAttributedConfig *nameAttrConf = [[TTAlertMessageAttributedConfig alloc] init]; + nameAttrConf.text = YMLocalizedString(@"XPMineUserDataViewController2"); + nameAttrConf.color = [DJDKMIMOMColor appMainColor]; + config.messageAttributedConfig = @[nameAttrConf]; + + [TTPopup alertWithConfig:config confirmHandler:^{ + + } cancelHandler:^{ + }]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 2; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + if (section == 0) { + return (self.clanDetailInfo.clan.elderUid.length > 0 || self.clanDetailInfo.hall.ownerUid.length > 0) ? 1 : 0; + } else { + return 1; + } +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if(indexPath.section == 0) { + CGFloat itemHeigh = 40 + 15; + if (self.clanDetailInfo.clan.elderUid.length > 0) { + if (self.clanDetailInfo.hall.ownerUid.length > 0) { + return self.isFold ? (itemHeigh + 68) : (itemHeigh + 68 + 60); + }else { + return (itemHeigh + 60); + } + }else { + if (self.clanDetailInfo.hall.ownerUid.length > 0) { + return (itemHeigh + 60); + } else { + return 0; + } + } + } else { + CGFloat itemHeight = 65; + CGFloat topHeight = 100; + return itemHeight * 3 + 10 * 3 + topHeight + 25; + } +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if(indexPath.section == 0) { + XPMineDataClanTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineDataClanTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineDataClanTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineDataClanTableViewCell class])]; + } + cell.isShowEnterHall = self.isShowEnterClan; + cell.delegate = self; + cell.clanInfo = self.clanDetailInfo; + return cell; + } else { + XPMineDataGiftTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineDataGiftTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineDataGiftTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineDataGiftTableViewCell class])]; + } + cell.delegate = self; + cell.userGiftWall = self.userInfo.userGiftWall; + cell.userLuckyBagGiftWall = self.userInfo.userLuckyBagGiftWall; + return cell; + } +} + +#pragma mark - XPMineDataClanTableViewCellDelegate +- (void)xPMineDataClanTableViewCell:(XPMineDataClanTableViewCell *)view didClickFold:(UIButton *)sender { + self.isFold = !sender.selected; + [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone]; +} + +- (void)xPMineDataClanTableViewCell:(XPMineDataClanTableViewCell *)view didClickEnter:(ClanDetailInfoModel *)clanInfo { + [self.presenter getUserInfo:[AccountInfoStorage instance].getUid success:^(UserInfoModel * _Nonnull info) { + if (info.isCertified) { + [self.presenter memberApplyHall:clanInfo.hall.hallId]; + } else { + [self showRealNameAuthenticationTipsAlertView]; + } + }]; +} + +- (void)xPMineDataClanTableViewCell:(XPMineDataClanTableViewCell *)view didClickClanView:(ClanDetailInfoModel *)clanInfo { + XPMineClanViewController * clanVC = [[XPMineClanViewController alloc] init]; + clanVC.uid = self.clanDetailInfo.clan.elderUid; + [self.navigationController pushViewController:clanVC animated:YES]; +} + +- (void)xPMineDataClanTableViewCell:(XPMineDataClanTableViewCell *)view didClickHallView:(ClanDetailInfoModel *)clanInfo { + XPMineGuildViewController * hallVC = [[XPMineGuildViewController alloc] init]; + hallVC.ownerUid = clanInfo.hall.ownerUid; + hallVC.guildId = clanInfo.hall.hallId; + [self.navigationController pushViewController:hallVC animated:YES]; +} + +#pragma mark - XPMineDataGiftTableViewCellDelegate +- (void)xPMineDataGiftTableViewCell:(XPMineDataGiftTableViewCell *)view didClickMore:(UIButton *)sender { + XPMineUserInfoGiftWallViewController * giftWallVC = [[XPMineUserInfoGiftWallViewController alloc] init]; + giftWallVC.userUid = self.userUid; + [self.navigationController pushViewController:giftWallVC animated:YES]; +} + +#pragma mark - JXPagingViewListViewDelegate +- (UIView *)listView { + return self.view; +} + +- (UIScrollView *)listScrollView { + return self.tableView; +} + +- (void)listViewDidScrollCallback:(void (^)(UIScrollView *))callback { + self.scrollCallback = callback; +} + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + self.scrollCallback(scrollView); +} + +#pragma mark - XPMineUserDataProtocol +- (void)getClanDetailInfoSuccess:(ClanDetailInfoModel *)clanDetailInfo currentUserClanInfo:(ClanDetailInfoModel *)currentUserClanInfo { + self.clanDetailInfo = clanDetailInfo; + if (currentUserClanInfo.clan.elderUid.length <=0 || currentUserClanInfo.hall.ownerUid.length <=0) { + self.isShowEnterClan = YES; + } else { + self.isShowEnterClan = NO; + } + [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone]; +} + +- (void)memberApplyHallSuccess { + [self showSuccessToast:YMLocalizedString(@"XPMineUserDataViewController3")]; +} + +#pragma mark - Getters And Setters +- (void)setUserInfo:(UserInfoModel *)userInfo { + _userInfo = userInfo; + [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationNone]; +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPMineDataGiftTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineDataGiftTableViewCell class])]; + [_tableView registerClass:[XPMineDataClanTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineDataClanTableViewCell class])]; + } + return _tableView; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoAlbumViewController.h b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoAlbumViewController.h new file mode 100644 index 00000000..5505acc9 --- /dev/null +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoAlbumViewController.h @@ -0,0 +1,16 @@ +// +// YMMineUserInfoAlbumViewController.h +// YUMI +// +// Created by YUMI on 2021/9/24. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineUserInfoAlbumViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoAlbumViewController.m b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoAlbumViewController.m new file mode 100644 index 00000000..d4ddd3bd --- /dev/null +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoAlbumViewController.m @@ -0,0 +1,268 @@ +// +// YMMineUserInfoAlbumViewController.m +// YUMI +// +// Created by YUMI on 2021/9/24. +// + +#import "XPMineUserInfoAlbumViewController.h" +///Third +#import +#import +#import "SDPhotoBrowser.h" +#import "UIImageConstant.h" +#import "TTPopup.h" +#import "YYUtility.h" +///Tool +#import "DJDKMIMOMColor.h" +#import "NSArray+Safe.h" +///Model +#import "UserInfoModel.h" +///View +#import "XPMineUserInfoAlbumCollectionViewCell.h" +///P +#import "XPMineUserInfolbumPresenter.h" +#import "XPMineUserInfoAlbumProtocol.h" + +@interface XPMineUserInfoAlbumViewController () +///列表 +@property (nonatomic,strong) UICollectionView *collectionView; +///数据源 +@property (nonatomic,strong) NSArray *datasource; +///完成 +@property (nonatomic,strong) UIButton *complectButton; +///是否编辑 +@property (nonatomic,assign) BOOL isEdit; +@end + +@implementation XPMineUserInfoAlbumViewController + +- (XPMineUserInfolbumPresenter*)createPresenter { + return [[XPMineUserInfolbumPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self loadUserInfo]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMineUserInfoAlbumViewController0"); + ///添加完成按钮 + [self addNavigationItemWithItems:@[self.complectButton] isLeft:NO]; + [self.view addSubview:self.collectionView]; +} + +- (void)initSubViewConstraints { + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +- (void)loadUserInfo { + [self.presenter getUserInfo]; +} + +/// 取消编辑 +- (void)cancelEditing { + self.complectButton.selected = NO; + self.isEdit = NO; + [self.collectionView reloadData]; +} + +#pragma mark - 选择图片 +- (void)showPhotoView { + @weakify(self); + TTActionSheetConfig *cameraConfig = [TTActionSheetConfig normalTitle:YMLocalizedString(@"XPMineUserInfoAlbumViewController1") clickAction:^{ + [YYUtility checkCameraAvailable:^{ + @strongify(self); + UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; + imagePicker.delegate = self; + imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; + imagePicker.allowsEditing = YES; + [self presentViewController:imagePicker animated:YES completion:NULL]; + } denied:^{ + @strongify(self); + [self showNotPhoto:@"相机不可用" content:YMLocalizedString(@"XPMineUserInfoAlbumViewController3")]; + } restriction:^{ + @strongify(self); + [self showNotPhoto:@"相机不可用" content:YMLocalizedString(@"XPMineUserInfoAlbumViewController5")]; + }]; + }]; + + TTActionSheetConfig *photoLibrayConfig = [TTActionSheetConfig normalTitle:YMLocalizedString(@"XPMineUserInfoAlbumViewController6") clickAction:^{ + [YYUtility checkAssetsLibrayAvailable:^{ + @strongify(self); + UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; + imagePicker.modalPresentationCapturesStatusBarAppearance = YES; + imagePicker.delegate = self; + imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; + imagePicker.allowsEditing = YES; + [self presentViewController:imagePicker animated:YES completion:NULL]; + } denied:^{ + @strongify(self); + [self showNotPhoto:@"相册不可用" content:YMLocalizedString(@"XPMineUserInfoAlbumViewController8")]; + } restriction:^{ + @strongify(self); + [self showNotPhoto:@"相册不可用" content:YMLocalizedString(@"XPMineUserInfoAlbumViewController10")]; + }]; + }]; + + [TTPopup actionSheetWithItems:@[cameraConfig, photoLibrayConfig]]; +} + +- (void)showNotPhoto:(NSString *)title content:(NSString *)content{ + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.title = title; + config.message = content; + [TTPopup alertWithConfig:config confirmHandler:^{ + NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; + if ([[UIApplication sharedApplication] canOpenURL:url]) { + [[UIApplication sharedApplication] openURL:url]; + } + } cancelHandler:^{ + }]; +} + +#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.datasource.count + 1; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPMineUserInfoAlbumCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPMineUserInfoAlbumCollectionViewCell class]) forIndexPath:indexPath]; + cell.delegate = self; + if (indexPath.row == 0) { + cell.addImageName = @"mine_user_info_album_add"; + cell.isEdit = NO; + } else { + if (self.datasource.count > 0) { + cell.photo = [self.datasource safeObjectAtIndex1:indexPath.row - 1]; + cell.isEdit = self.isEdit; + } + } + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + [collectionView deselectItemAtIndexPath:indexPath animated:YES]; + if (indexPath.row == 0) { + if (self.datasource.count < 8) { + [self showPhotoView]; + [self cancelEditing]; + }else{ + [self showErrorToast:YMLocalizedString(@"XPMineUserInfoAlbumViewController11")]; + } + }else { + if (!self.isEditing) { + SDPhotoBrowser *browser = [[SDPhotoBrowser alloc]init]; + browser.sourceImagesContainerView = self.collectionView; + browser.delegate = self; + browser.imageCount = self.datasource.count; + browser.currentImageIndex = indexPath.item - 1; + browser.isHaveUserAdd = YES; + [browser show]; + } + } +} + +#pragma mark - XPMineUserInfoAlbumCollectionViewCellDelegate +- (void)xPMineUserInfoAlbumCollectionViewCell:(XPMineUserInfoAlbumCollectionViewCell *)cell didDeleteItem:(UserPhoto *)photo { + TTAlertConfig * config = [[TTAlertConfig alloc] init]; + config.title = YMLocalizedString(@"XPMineUserInfoAlbumViewController12"); + config.message = @"是否需要删除?"; + [TTPopup alertWithConfig:config confirmHandler:^{ + [self.presenter deleteImageUrlFromServerWithPid:photo.pid]; + } cancelHandler:^{ + + }]; +} + +#pragma mark - SDPhotoBrowserDelegate +- (UIImage *)photoBrowser:(SDPhotoBrowser *)browser placeholderImageForIndex:(NSInteger)index { + return [UIImageConstant defaultAvatarPlaceholder]; +} + +- (NSURL *)photoBrowser:(SDPhotoBrowser *)browser highQualityImageURLForIndex:(NSInteger)index { + return [NSURL URLWithString:self.datasource[index].photoUrl]; +} +#pragma mark - UIImagePickerControllerDelegate +- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { + + [picker dismissViewControllerAnimated:YES completion:^{ + UIImage *selectedPhoto = [info objectForKey:UIImagePickerControllerOriginalImage]; + if (selectedPhoto) { + if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) { + UIImageWriteToSavedPhotosAlbum(selectedPhoto, nil, nil, nil); + } + [self.presenter uploadAlbumImage:selectedPhoto]; + } + }]; +} + +- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { + [picker dismissViewControllerAnimated:YES completion:^{ + + }]; +} + +#pragma mark - XPMineUserInfoAlbumProtocol +- (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo { + self.datasource = userInfo.privatePhoto; + [self.collectionView reloadData]; +} +///上传第三方服务器 +- (void)uploadAlbumImageToThirdSuccess:(NSString *)url { + [self.presenter uploadUserAlbumWithUrlStr:url]; +} +///上传自己服务器 +- (void)uploadUserAlbumSuccess { + [self.presenter getUserInfo]; + [self showSuccessToast:YMLocalizedString(@"XPMineUserInfoAlbumViewController14")]; +} + +- (void)deleteUserAlbumSuccess { + [self.presenter getUserInfo]; + [self showSuccessToast:YMLocalizedString(@"XPMineUserInfoAlbumViewController15")]; +} +#pragma mark - Event Response +- (void)complectButtonAction:(UIButton *)sender { + sender.selected = !sender.selected; + self.isEdit = sender.selected; + [self.collectionView reloadData]; +} + +#pragma mark - Getters And Setters +- (UICollectionView *)collectionView{ + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.sectionInset = UIEdgeInsetsMake(10, 10, 10, 10); + layout.itemSize = CGSizeMake((self.view.frame.size.width - 50) / 3, (self.view.frame.size.width - 50) / 3); + layout.minimumLineSpacing = 15; + layout.minimumInteritemSpacing = 15; + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.backgroundColor = [UIColor clearColor]; + [_collectionView registerClass:[XPMineUserInfoAlbumCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPMineUserInfoAlbumCollectionViewCell class])]; + } + return _collectionView; +} + +- (UIButton *)complectButton { + if (!_complectButton) { + _complectButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_complectButton setTitle:YMLocalizedString(@"XPMineUserInfoAlbumViewController16") forState:UIControlStateNormal]; + [_complectButton setTitle:YMLocalizedString(@"XPMineUserInfoAlbumViewController17") forState:UIControlStateSelected]; + [_complectButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + [_complectButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateSelected]; + _complectButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_complectButton addTarget:self action:@selector(complectButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _complectButton; +} + +@end diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoDesViewController.h b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoDesViewController.h new file mode 100644 index 00000000..6f632f7f --- /dev/null +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoDesViewController.h @@ -0,0 +1,25 @@ +// +// YMMineUserInfoDesViewController.h +// YUMI +// +// Created by YUMI on 2021/9/23. +// + +#import "BaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN +@class XPMineUserInfoDesViewController; +@protocol XPMineUserInfoDesViewControllerDelegate + +////更新用户介绍 +- (void)xPMineUserInfoDesViewController:(XPMineUserInfoDesViewController *)viewController updateUserDes:(NSString *)userDes; + +@end +@interface XPMineUserInfoDesViewController : BaseViewController +///用户签名 +@property (nonatomic,strong) NSString *userDesc; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoDesViewController.m b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoDesViewController.m new file mode 100644 index 00000000..61c7661e --- /dev/null +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoDesViewController.m @@ -0,0 +1,168 @@ +// +// YMMineUserInfoDesViewController.m +// YUMI +// +// Created by YUMI on 2021/9/23. +// + +#import "XPMineUserInfoDesViewController.h" +///Third +#import +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +///Model +#import "UserInfoModel.h" + +static NSInteger maxCount = 60; + +@interface XPMineUserInfoDesViewController () +///容器 +@property (nonatomic, strong) UIView *containView; +///输入框 +@property (nonatomic, strong) SZTextView *useDescTextView; +///清除按钮 +@property (nonatomic, strong) UIButton *clearBtn; +///完成按钮 +@property (nonatomic, strong) UIButton *completionBtn; +///显示输入的个数 +@property (nonatomic, strong) UILabel *limitLabel;// + + +@end + + + +@implementation XPMineUserInfoDesViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + self.title = YMLocalizedString(@"XPMineUserInfoDesViewController0"); + [self initSubViews]; + [self initSubViewConstraints]; + [self initEvents]; + +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + [self.view endEditing:YES]; +} + +#pragma mark - Private Method +- (void)initSubViews { + UIBarButtonItem *completeItem = [[UIBarButtonItem alloc] initWithCustomView:self.completionBtn]; + self.navigationItem.rightBarButtonItem = completeItem; + [self.view addSubview:self.containView]; + [self.containView addSubview:self.useDescTextView]; + [self.containView addSubview:self.clearBtn]; + [self.view addSubview:self.limitLabel]; + self.useDescTextView.text = self.userDesc; + self.limitLabel.text = [NSString stringWithFormat:@"%ld",(maxCount - self.userDesc.length)]; + self.limitLabel.textColor = self.userDesc.length > 0 ? [DJDKMIMOMColor mainTextColor] : [DJDKMIMOMColor secondTextColor]; + self.completionBtn.enabled = self.useDescTextView.text.length > 0; +} + +- (void)initSubViewConstraints { + [self.containView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(20); + make.left.mas_equalTo(self.view).offset(15); + make.right.mas_equalTo(self.view).offset(-15); + make.height.mas_equalTo(137); + }]; + [self.useDescTextView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.mas_equalTo(self.containView).offset(10); + make.bottom.mas_equalTo(self.containView).offset(-10); + make.right.mas_equalTo(self.clearBtn.mas_left).offset(-5); + }]; + [self.clearBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.containView).offset(10); + make.right.mas_equalTo(self.containView).offset(-10); + }]; + [self.limitLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.containView.mas_bottom).offset(5); + make.right.mas_equalTo(self.containView); + }]; +} + +- (void)initEvents { + @weakify(self); + RAC(self.completionBtn, enabled) = [RACSignal combineLatest:@[self.useDescTextView.rac_textSignal] reduce:^id _Nonnull(NSString *text){ + @strongify(self); + self.limitLabel.text = [NSString stringWithFormat:@"%ld",(maxCount - text.length)]; + if (text.length > maxCount) { + [self showErrorToast:[NSString stringWithFormat:YMLocalizedString(@"XPMineUserInfoDesViewController1"), maxCount]]; + } + return @(text.length > 0 && text.length <= maxCount); + }]; +} +#pragma mark - Event Response +- (void)completionBtnAction:(UIButton *)sender { + [self.navigationController popViewControllerAnimated:YES]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineUserInfoDesViewController:updateUserDes:)]) { + [self.delegate xPMineUserInfoDesViewController:self updateUserDes:self.useDescTextView.text]; + } +} + +- (void)clearBtnAction:(UIButton *)sender { + self.useDescTextView.text = @""; + self.completionBtn.enabled = NO; + self.limitLabel.text = [NSString stringWithFormat:@"%ld",(maxCount - self.useDescTextView.text.length)]; +} + +#pragma mark - getter && setter +- (UIView *)containView { + if (!_containView) { + _containView = [[UIView alloc] init]; + _containView.layer.cornerRadius = 5; + _containView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + } + return _containView; +} + +- (SZTextView *)useDescTextView { + if (!_useDescTextView) { + _useDescTextView = [[SZTextView alloc] init]; + _useDescTextView.delegate = self; + _useDescTextView.placeholder = @"填写自我介绍,可以让别人更了解你哦~"; + _useDescTextView.placeholderTextColor = [DJDKMIMOMColor secondTextColor]; + _useDescTextView.font = [UIFont systemFontOfSize:14]; + _useDescTextView.textColor = [DJDKMIMOMColor mainTextColor]; + _useDescTextView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + } + return _useDescTextView; +} + +- (UIButton *)completionBtn { + if (!_completionBtn) { + _completionBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_completionBtn setTitle:YMLocalizedString(@"XPMineUserInfoDesViewController3") forState:UIControlStateNormal]; + [_completionBtn setFrame:CGRectMake(0, 0, 50, 30)]; + [_completionBtn setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + [_completionBtn setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateDisabled]; + [_completionBtn.titleLabel setFont:[UIFont systemFontOfSize:13]]; + [_completionBtn addTarget:self action:@selector(completionBtnAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _completionBtn; +} + +- (UILabel *)limitLabel { + if (!_limitLabel) { + _limitLabel = [[UILabel alloc] init]; + _limitLabel.font = [UIFont systemFontOfSize:14]; + _limitLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _limitLabel.text = @"60"; + } + return _limitLabel; +} + +- (UIButton *)clearBtn { + if (!_clearBtn) { + _clearBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_clearBtn setImage:[UIImage imageNamed:@"mine_user_info_edit_clear"] forState:UIControlStateNormal]; + [_clearBtn addTarget:self action:@selector(clearBtnAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _clearBtn; +} + +@end diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoEditViewController.h b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoEditViewController.h new file mode 100644 index 00000000..b33e0a6d --- /dev/null +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoEditViewController.h @@ -0,0 +1,15 @@ +// +// YMMineUserInfoEditViewController.h +// YUMI +// +// Created by YUMI on 2021/9/23. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN +@interface XPMineUserInfoEditViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoEditViewController.m b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoEditViewController.m new file mode 100644 index 00000000..fbb7e148 --- /dev/null +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoEditViewController.m @@ -0,0 +1,298 @@ +// +// YMMineUserInfoEditViewController.m +// YUMI +// +// Created by YUMI on 2021/9/23. +// + +#import "XPMineUserInfoEditViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "TTPopup.h" +#import "YYUtility.h" +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" +///Model +#import "XPMineUserInfoEditModel.h" +#import "UserInfoModel.h" +///View +#import "XPMineUserInfoEditTableViewCell.h" +#import "XPMineUserInfoDateView.h" +///P +#import "XPMineUserInfoEditProtocol.h" +#import "XPMineUserInfoEditPresenter.h" +///VC +#import "XPMineUserInfoNickViewController.h" +#import "XPMineUserInfoDesViewController.h" +#import "XPMineUserInfoAlbumViewController.h" + +@interface XPMineUserInfoEditViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSArray *datasouce; +/// 日期选择器 +@property (nonatomic,strong) XPMineUserInfoDateView *dateView; +///用户信息 +@property (nonatomic,strong) UserInfoModel *userInfo; +@end + +@implementation XPMineUserInfoEditViewController + +- (XPMineUserInfoEditPresenter *)createPresenter { + return [[XPMineUserInfoEditPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [self.presenter getUserInfo]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMineUserInfoEditViewController0"); + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +- (void)showPhotoView { + @weakify(self); + TTActionSheetConfig *cameraConfig = [TTActionSheetConfig normalTitle:YMLocalizedString(@"XPMineUserInfoEditViewController1") clickAction:^{ + [YYUtility checkCameraAvailable:^{ + @strongify(self); + UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; + imagePicker.delegate = self; + imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; + imagePicker.allowsEditing = YES; + [self presentViewController:imagePicker animated:YES completion:NULL]; + } denied:^{ + @strongify(self); + [self showNotPhoto:@"相机不可用" content:YMLocalizedString(@"XPMineUserInfoEditViewController3")]; + } restriction:^{ + @strongify(self); + [self showNotPhoto:@"相机不可用" content:YMLocalizedString(@"XPMineUserInfoEditViewController5")]; + }]; + }]; + + TTActionSheetConfig *photoLibrayConfig = [TTActionSheetConfig normalTitle:YMLocalizedString(@"XPMineUserInfoEditViewController6") clickAction:^{ + [YYUtility checkAssetsLibrayAvailable:^{ + @strongify(self); + UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; + imagePicker.modalPresentationCapturesStatusBarAppearance = YES; + imagePicker.delegate = self; + imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; + imagePicker.allowsEditing = YES; + [self presentViewController:imagePicker animated:YES completion:NULL]; + } denied:^{ + @strongify(self); + [self showNotPhoto:@"相册不可用" content:YMLocalizedString(@"XPMineUserInfoEditViewController8")]; + } restriction:^{ + @strongify(self); + [self showNotPhoto:@"相册不可用" content:YMLocalizedString(@"XPMineUserInfoEditViewController10")]; + }]; + }]; + + [TTPopup actionSheetWithItems:@[cameraConfig, photoLibrayConfig]]; +} + +- (void)showNotPhoto:(NSString *)title content:(NSString *)content { + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.title = title; + config.message = content; + + [TTPopup alertWithConfig:config confirmHandler:^{ + NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; + if ([[UIApplication sharedApplication] canOpenURL:url]) { + [[UIApplication sharedApplication] openURL:url]; + } + } cancelHandler:^{ + }]; +} + +- (void)showDatePickerView { + self.dateView.time = self.userInfo.birth/1000; + [TTPopup popupView:self.dateView style:TTPopupStyleActionSheet]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasouce.count; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + XPMineUserInfoEditModel * model = [self.datasouce safeObjectAtIndex1:indexPath.row]; + if (model.type == XPMineUserInfoEditType_Avatar) { + return 60; + } else { + return 50; + } +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + XPMineUserInfoEditTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineUserInfoEditTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineUserInfoEditTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineUserInfoEditTableViewCell class])]; + } + XPMineUserInfoEditModel * model = [self.datasouce safeObjectAtIndex1:indexPath.row]; + cell.itmeModel = model; + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + XPMineUserInfoEditModel * model = [self.datasouce safeObjectAtIndex1:indexPath.row]; + switch (model.type) { + case XPMineUserInfoEditType_Nick: + { + XPMineUserInfoNickViewController * nickVC = [[XPMineUserInfoNickViewController alloc] init]; + nickVC.delegate = self; + nickVC.nick = self.userInfo.nick; + [self.navigationController pushViewController:nickVC animated:YES]; + } + break; + case XPMineUserInfoEditType_Avatar: { + if (self.userInfo.isReview) { + [self showErrorToast:YMLocalizedString(@"XPMineUserInfoEditViewController11")]; + } else { + [self showPhotoView]; + } + } + break; + case XPMineUserInfoEditType_Birth: + [self showDatePickerView]; + break; + case XPMineUserInfoEditType_UseDes: + { + XPMineUserInfoDesViewController * desVC = [[XPMineUserInfoDesViewController alloc] init]; + desVC.delegate = self; + desVC.userDesc = self.userInfo.userDesc; + [self.navigationController pushViewController:desVC animated:YES]; + } + break; + case XPMineUserInfoEditType_Photo: + { + XPMineUserInfoAlbumViewController * albumVC = [[XPMineUserInfoAlbumViewController alloc] init]; + [self.navigationController pushViewController:albumVC animated:YES]; + } + break; + + default: + break; + } +} + +#pragma mark - UIImagePickerControllerDelegate +- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info +{ + UIImage *selectedPhoto = [info objectForKey:UIImagePickerControllerEditedImage]; + if (selectedPhoto) { + if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) { + UIImageWriteToSavedPhotosAlbum(selectedPhoto, nil, nil, nil); + } + [self.presenter uploadAvatar:selectedPhoto]; + } + [picker dismissViewControllerAnimated:YES completion:^{}]; +} + +- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{ + [picker dismissViewControllerAnimated:YES completion:^{ + }]; +} + +#pragma mark - XPMineUserInfoDateViewDelegate +- (void)xPMineUserInfoDateView:(XPMineUserInfoDateView *)view didClickSureButton:(NSString *)dateStr{ + [TTPopup dismiss]; + if (dateStr.length > 0) { + [self.presenter complectionInfoWithAvatar:nil nick:nil birth:dateStr userDesc:nil]; + } +} + +- (void)xPMineUserInfoDateView:(XPMineUserInfoDateView *)view didClickCancleButton:(UIButton *)sender { + [TTPopup dismiss]; +} + +#pragma mark - XPMineUserInfoNickViewControllerDelegate +- (void)xPMineUserInfoNickViewController:(XPMineUserInfoNickViewController *)viewController updateNick:(NSString *)nick { + if (nick.length > 0) { + [self.presenter complectionInfoWithAvatar:nil nick:nick birth:nil userDesc:nil]; + } +} +#pragma mark - XPMineUserInfoDesViewControllerDelegate +- (void)xPMineUserInfoDesViewController:(XPMineUserInfoDesViewController *)viewController updateUserDes:(NSString *)userDes { + if (userDes.length > 0) { + [self.presenter complectionInfoWithAvatar:nil nick:nil birth:nil userDesc:userDes]; + } +} + +#pragma mark - XPMineUserInfoEditProtocol +- (void)getUserInfoEditDataSourceSuccess:(NSArray *)array { + self.datasouce = array; + [self.tableView reloadData]; +} + +- (void)completeUserInfoSuccess:(UserInfoModel *)userInfo { + if (userInfo.isReview) { + [self showSuccessToast:YMLocalizedString(@"XPMineUserInfoEditViewController12")]; + dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)); + dispatch_after(delayTime, dispatch_get_main_queue(), ^{ + [self.presenter getUserInfo]; + }); + } else { + [self showSuccessToast:YMLocalizedString(@"XPMineUserInfoEditViewController13")]; + [self.presenter getUserInfo]; + } +} + +- (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo { + self.userInfo = userInfo; + [self.presenter getUserInfoEditDataSourceWithUserInfo:self.userInfo]; +} + +- (void)uploadImageSuccess:(NSString *)url { + [self.presenter complectionInfoWithAvatar:url nick:nil birth:nil userDesc:nil]; +} +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.tableHeaderView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPMineUserInfoEditTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineUserInfoEditTableViewCell class])]; + } + return _tableView; +} + +- (XPMineUserInfoDateView *)dateView { + if (!_dateView) { + _dateView = [[XPMineUserInfoDateView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 216+kSafeAreaBottomHeight+54)]; + _dateView.delegate = self; + } + return _dateView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoGiftWallSubViewController.h b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoGiftWallSubViewController.h new file mode 100644 index 00000000..5dc4eab2 --- /dev/null +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoGiftWallSubViewController.h @@ -0,0 +1,24 @@ +// +// YMMineUserInfoGiftWalllSubViewController.h +// YUMI +// +// Created by YUMI on 2022/6/15. +// + +#import "MvpViewController.h" +#import +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, GiftWallViewType) { + ///普通礼物 + GiftWallViewType_Normal = 1, + ///幸运礼物 + GiftWallViewType_Lucky = 2, +}; + +@interface XPMineUserInfoGiftWallSubViewController : MvpViewController +@property (nonatomic,assign) GiftWallViewType type; +@property (nonatomic,copy) NSString *userUid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoGiftWallSubViewController.m b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoGiftWallSubViewController.m new file mode 100644 index 00000000..75363a88 --- /dev/null +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoGiftWallSubViewController.m @@ -0,0 +1,101 @@ +// +// YMMineUserInfoGiftWalllSubViewController.m +// YUMI +// +// Created by YUMI on 2022/6/15. +// + +#import "XPMineUserInfoGiftWallSubViewController.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" +///View +#import "XPMineUserInfoGiftWallCollectionViewCell.h" +#import "XPGuildEmptyCollectionViewCell.h" +///P +#import "XPMineUserInfoGiftWallPresenter.h" +#import "XPMineUserInfoGiftWallProtocol.h" + +@interface XPMineUserInfoGiftWallSubViewController () +///列表 +@property (nonatomic,strong) UICollectionView *collectionView; +@property (nonatomic,strong) NSArray *datasource; +@end + +@implementation XPMineUserInfoGiftWallSubViewController + +- (__kindof id)createPresenter { + return [[XPMineUserInfoGiftWallPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self.presenter getUserGiftWall:self.userUid giftType:self.type]; + [self initSubViews]; + [self initSubViewConstraints]; +} +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.collectionView]; +} + +- (void)initSubViewConstraints { + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + return self.datasource.count > 0 ? CGSizeMake(74, 120) : CGSizeMake(KScreenWidth, 500); +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPMineUserInfoGiftWallCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPMineUserInfoGiftWallCollectionViewCell class]) forIndexPath:indexPath]; + UserGiftWallInfoModel * giftInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.giftInfo = giftInfo; + return cell; + + } + XPGuildEmptyCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPGuildEmptyCollectionViewCell class]) forIndexPath:indexPath]; + return cell; +} + +#pragma mark - JXCategoryListContentViewDelegate +- (UIView *)listView { + return self.view; +} + +#pragma mark - XPMineUserInfoGiftWallProtocol +- (void)getUserGiftWallSuccess:(NSArray *)giftList { + self.datasource = giftList; + [self.collectionView reloadData]; +} + +#pragma mark - Getters And Setters +- (UICollectionView *)collectionView{ + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.sectionInset = UIEdgeInsetsMake(15, 15, 15, 15); + layout.minimumInteritemSpacing = (CGFloat)(KScreenWidth - 15 * 2 -74* 4 - 5) / 3.0; + layout.minimumLineSpacing = 30; + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.backgroundColor = [UIColor clearColor]; + [_collectionView registerClass:[XPMineUserInfoGiftWallCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPMineUserInfoGiftWallCollectionViewCell class])]; + [_collectionView registerClass:[XPGuildEmptyCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPGuildEmptyCollectionViewCell class])]; + } + return _collectionView; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoGiftWallViewController.h b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoGiftWallViewController.h new file mode 100644 index 00000000..698aaf8d --- /dev/null +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoGiftWallViewController.h @@ -0,0 +1,16 @@ +// +// YMMineGiftWallViewController.h +// YUMI +// +// Created by YUMI on 2022/4/14. +// + +#import "BaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineUserInfoGiftWallViewController : BaseViewController +@property (nonatomic,copy) NSString *userUid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoGiftWallViewController.m b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoGiftWallViewController.m new file mode 100644 index 00000000..86446de1 --- /dev/null +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoGiftWallViewController.m @@ -0,0 +1,147 @@ +// +// YMMineGiftWallViewController.m +// YUMI +// +// Created by YUMI on 2022/4/14. +// + +#import "XPMineUserInfoGiftWallViewController.h" +///Third +#import +#import +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "UIImage+Utils.h" +///View +#import "XPMineUserInfoGiftWallSubViewController.h" + + +@interface XPMineUserInfoGiftWallViewController () +///分页标题 +@property (nonatomic, strong) NSArray *titles; +///分页控件 +@property (nonatomic, strong) JXCategoryTitleView *titleView; +///分页lineView +@property (nonatomic, strong) JXCategoryListContainerView *containerView; +///普通礼物 +@property (nonatomic,strong) XPMineUserInfoGiftWallSubViewController *normalGiftVC; +///幸运礼物 +@property (nonatomic,strong) XPMineUserInfoGiftWallSubViewController *luckyGiftVC; +@end + +@implementation XPMineUserInfoGiftWallViewController +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; +} +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMineUserInfoGiftWallViewController0"); + [self.view addSubview:self.titleView]; + [self.view addSubview:self.containerView]; +} + +- (void)initSubViewConstraints { + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.view); + make.width.mas_equalTo(100 * 2 + 20); + make.height.mas_equalTo(30); + make.top.mas_equalTo(self.view).offset(10); + }]; + + [self.containerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.top.mas_equalTo(self.titleView.mas_bottom).offset(10); + }]; +} + +#pragma mark - JXCategoryViewDelegate +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { + return self.titles.count; +} + +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { + if (index == 0) { + return self.normalGiftVC; + } else { + return self.luckyGiftVC; + } +} + +- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { + // 侧滑手势处理 + self.navigationController.interactivePopGestureRecognizer.enabled = (index == 0); +} + +#pragma mark - Getters And Setters +- (void)setUserUid:(NSString *)userUid { + _userUid = userUid; + self.normalGiftVC.userUid = _userUid; + self.luckyGiftVC.userUid = _userUid; +} + +- (JXCategoryTitleView *)titleView { + if (!_titleView) { + _titleView = [[JXCategoryTitleView alloc] init]; + _titleView.delegate = self; + _titleView.titles = self.titles; + _titleView.backgroundColor = [UIColor clearColor]; + _titleView.titleColor = [DJDKMIMOMColor secondTextColor]; + _titleView.titleSelectedColor = [DJDKMIMOMColor mainTextColor]; + _titleView.titleFont = [UIFont systemFontOfSize:12]; + _titleView.titleSelectedFont = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; + _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; + _titleView.defaultSelectedIndex = 0; + _titleView.cellSpacing = 20; + _titleView.cellWidthIncrement = 5; + _titleView.cellWidth = 60; + _titleView.listContainer = self.containerView; + + JXCategoryIndicatorImageView *lineView = [[JXCategoryIndicatorImageView alloc] init]; + lineView.indicatorImageViewSize = CGSizeMake(60, 8); + lineView.verticalMargin = 6; + lineView.indicatorImageView.image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFFC000), UIColorFromRGB(0xFFD15A)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(60, 8)]; + lineView.indicatorImageView.layer.masksToBounds = YES; + lineView.indicatorImageView.layer.cornerRadius = 4; + _titleView.indicators = @[lineView]; + } + return _titleView; +} + +- (JXCategoryListContainerView *)containerView { + if (!_containerView) { + _containerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; + _containerView.defaultSelectedIndex = 0; + } + return _containerView; +} + +- (NSArray *)titles { + if (!_titles) { + _titles = @[@"普通礼物", YMLocalizedString(@"XPMineUserInfoGiftWallViewController2")]; + } + return _titles; +} + +- (XPMineUserInfoGiftWallSubViewController *)normalGiftVC { + if (!_normalGiftVC) { + _normalGiftVC = [[XPMineUserInfoGiftWallSubViewController alloc] init]; + _normalGiftVC.type = GiftWallViewType_Normal; + } + return _normalGiftVC; +} + +- (XPMineUserInfoGiftWallSubViewController *)luckyGiftVC { + if (!_luckyGiftVC) { + _luckyGiftVC = [[XPMineUserInfoGiftWallSubViewController alloc] init]; + _luckyGiftVC.type = GiftWallViewType_Lucky; + } + return _luckyGiftVC; +} + +@end diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoNickViewController.h b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoNickViewController.h new file mode 100644 index 00000000..c43f2be7 --- /dev/null +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoNickViewController.h @@ -0,0 +1,24 @@ +// +// YMMineUserInfoNickViewController.h +// YUMI +// +// Created by YUMI on 2021/9/23. +// + +#import "BaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN +@class XPMineUserInfoNickViewController; +@protocol XPMineUserInfoNickViewControllerDelegate +///更新用户名 +- (void)xPMineUserInfoNickViewController:(XPMineUserInfoNickViewController *)viewController updateNick:(NSString *)nick; +@end + +@interface XPMineUserInfoNickViewController : BaseViewController +///用户名字 +@property (nonatomic,strong) NSString *nick; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoNickViewController.m b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoNickViewController.m new file mode 100644 index 00000000..0a5304e8 --- /dev/null +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoNickViewController.m @@ -0,0 +1,164 @@ +// +// YMMineUserInfoNickViewController.m +// YUMI +// +// Created by YUMI on 2021/9/23. +// + +#import "XPMineUserInfoNickViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +///Tool +#import "UserInfoModel.h" + +static NSInteger maxCount = 15; + +@interface XPMineUserInfoNickViewController () +@property (nonatomic, strong) UIView *containView;// +@property (nonatomic, strong) UITextField *nickTextField;// +@property (nonatomic, strong) UIButton *completionBtn;// +@property (nonatomic, strong) UILabel *limitLabel;// +@end + +@implementation XPMineUserInfoNickViewController +- (void)viewDidLoad { + [super viewDidLoad]; + [self setEvents]; + [self setUpUI]; + [self initSubViewConstraints]; + +} + +#pragma mark -UI +- (void)setUpUI { + self.title = YMLocalizedString(@"XPMineUserInfoNickViewController0"); + UIBarButtonItem *completeItem = [[UIBarButtonItem alloc] initWithCustomView:self.completionBtn]; + self.navigationItem.rightBarButtonItem = completeItem; + [self.view addSubview:self.containView]; + [self.containView addSubview:self.nickTextField]; + [self.view addSubview:self.limitLabel]; + self.nickTextField.text = self.nick; + self.limitLabel.text = [NSString stringWithFormat:@"%ld", (long)(maxCount - self.nick.length)]; +} + +- (void)initSubViewConstraints { + [self.containView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(20); + make.left.mas_equalTo(self.view).offset(15); + make.right.mas_equalTo(self.view).offset(-15); + make.height.mas_equalTo(35); + }]; + [self.nickTextField mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.containView); + make.left.mas_equalTo(self.containView).offset(5); + make.right.mas_equalTo(self.containView); + make.height.mas_equalTo(35); + }]; + [self.limitLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.nickTextField.mas_bottom).offset(8); + make.right.mas_equalTo(self.nickTextField); + }]; +} + +- (void)setEvents { + @weakify(self) + [self.nickTextField.rac_textSignal subscribeNext:^(NSString * _Nullable x) { + @strongify(self); + [self nickTextRuleFilter:x]; + self.limitLabel.text = [NSString stringWithFormat:@"%ld", (long)(maxCount - self.nickTextField.text.length)]; + }]; + RAC(self.completionBtn, enabled) = [RACSignal combineLatest:@[self.nickTextField.rac_textSignal] reduce:^id _Nonnull(NSString *text){ + return @(text.length > 0 && text.length <= maxCount); + }]; +} + +// 昵称规则过滤 +- (void)nickTextRuleFilter:(NSString *)nickTitle{ + NSString *toBeString = nickTitle; + NSString *lang = [self.nickTextField.textInputMode primaryLanguage]; + if ([lang isEqualToString:@"zh-Hans"]){// 简体中文输入 + //获取高亮部分 + UITextRange *selectedRange = [self.nickTextField markedTextRange]; + UITextPosition *position = [self.nickTextField positionFromPosition:selectedRange.start offset:0]; + // 没有高亮选择的字,则对已输入的文字进行字数统计和限制 + if (!position){ + if (toBeString.length > 15){ + [self showErrorToast:YMLocalizedString(@"XPMineUserInfoNickViewController1")]; + NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:15]; + if (rangeIndex.length == 1){ + self.nickTextField.text = [toBeString substringToIndex:15]; + }else{ + NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, 15)]; + self.nickTextField.text = [toBeString substringWithRange:rangeRange]; + } + } + } + }else{ // 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况 + if (toBeString.length > 15){ + [self showErrorToast:YMLocalizedString(@"XPMineUserInfoNickViewController2")]; + NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:15]; + if (rangeIndex.length == 1){ + self.nickTextField.text = [toBeString substringToIndex:15]; + }else{ + NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, 15)]; + self.nickTextField.text = [toBeString substringWithRange:rangeRange]; + } + } + } +} +#pragma mark - Event Response +- (void)completionBtnAction:(UIButton *)sender { + [self.navigationController popViewControllerAnimated:YES]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineUserInfoNickViewController:updateNick:)]) { + [self.delegate xPMineUserInfoNickViewController:self updateNick:self.nickTextField.text]; + } +} +#pragma mark - getter && setter +- (UIView *)containView { + if (!_containView) { + _containView = [[UIView alloc] init]; + _containView.layer.cornerRadius = 5; + _containView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + } + return _containView; +} + +- (UITextField *)nickTextField { + if (!_nickTextField) { + _nickTextField = [[UITextField alloc] init]; + _nickTextField.clearButtonMode = UITextFieldViewModeAlways; + _nickTextField.font = [UIFont systemFontOfSize:14]; + _nickTextField.textColor = [DJDKMIMOMColor mainTextColor]; + _nickTextField.layer.cornerRadius = 5; + } + return _nickTextField; +} + +- (UIButton *)completionBtn { + if (!_completionBtn) { + _completionBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_completionBtn setFrame:CGRectMake(0, 0, 50, 30)]; + [_completionBtn setTitle:YMLocalizedString(@"XPMineUserInfoNickViewController3") forState:UIControlStateNormal]; + [_completionBtn setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + [_completionBtn setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateDisabled]; + _completionBtn.titleLabel.font = [UIFont systemFontOfSize:13]; + [_completionBtn addTarget:self action:@selector(completionBtnAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _completionBtn; +} + +- (UILabel *)limitLabel { + if (!_limitLabel) { + _limitLabel = [[UILabel alloc] init]; + _limitLabel.font = [UIFont systemFontOfSize:14]; + _limitLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _limitLabel.text = @"0/15"; + } + return _limitLabel; +} + +@end diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoViewController.h b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoViewController.h new file mode 100644 index 00000000..cc5b4936 --- /dev/null +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoViewController.h @@ -0,0 +1,17 @@ +// +// MineInfoViewController.h +// YUMI +// +// Created by YUMI on 2021/9/22. +// + +#import "MvpViewController.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineUserInfoViewController : MvpViewController +///用户的id +@property (nonatomic,assign) NSInteger uid; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoViewController.m b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoViewController.m new file mode 100644 index 00000000..80398c1b --- /dev/null +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoViewController.m @@ -0,0 +1,493 @@ +// +// MineInfoViewController.m +// YUMI +// +// Created by YUMI on 2021/9/22. +// + +#import "XPMineUserInfoViewController.h" +///Third +#import +#import +#import +#import +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "AccountInfoStorage.h" +#import "TTPopup.h" +#import "YUMIHtmlUrl.h" +#import "XPSkillCardPlayerManager.h" +#import "UIImage+Utils.h" +#import "YUMIConstant.h" +#import "NIMMessageUtils.h" +#import "ClientConfig.h" +#import "XNDJTDDLoadingTool.h" +///Model +#import "MineSkillCardListInfoModel.h" +#import "UserInfoModel.h" +///View +#import "XPMineUserInfoTableViewCell.h" +#import "XPMineUserInfoHeaderView.h" +#import "XPMineUserInfoCustomNavView.h" +#import "XPMineUserInfoVoiceCardView.h" +///P +#import "XPMineUserInfoPresenter.h" +#import "XPMineUserInfoProtocol.h" +#import "RoomHostDelegate.h" +///VC +#import "XPMineUserInfoEditViewController.h" +#import "XPWebViewController.h" +#import "SessionViewController.h" +#import "XPRoomViewController.h" +#import "XPMineUserDataViewController.h" +#import "XPMonentsMineViewController.h" + +@interface XPMineUserInfoViewController () +@property (nonatomic, strong) JXCategoryTitleView *titleView; +@property (nonatomic, strong) JXCategoryIndicatorImageView *lineView; +@property (nonatomic, strong) JXPagerView *pagingView; +@property (nonatomic, strong) NSArray *titles; +///头部视图 +@property (nonatomic,strong) XPMineUserInfoHeaderView *headView; +///自定义的导航栏 +@property (nonatomic,strong) XPMineUserInfoCustomNavView *navView; +///用户信息 +@property (nonatomic,strong) UserInfoModel *userInfo; +///底部的容器 +@property (nonatomic,strong) UIStackView *bottomStackView; +///私聊 +@property (nonatomic,strong) UIButton *chatButton; +///关注 +@property (nonatomic,strong) UIButton *attentionButton; +///资料 +@property (nonatomic,strong) XPMineUserDataViewController *userDataVC; +///动态 +@property (nonatomic,strong) XPMonentsMineViewController *monentsVC; +///声音秀 +@property (nonatomic,strong) XPMineUserInfoVoiceCardView *voiceView; +@end + +@implementation XPMineUserInfoViewController + +- (XPMineUserInfoPresenter *)createPresenter { + return [[XPMineUserInfoPresenter alloc] init]; +} + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + if (self.uid > 0) { + [self initHttpRequest]; + } +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + if (self.voiceView.isPlaying) { + [[XPSkillCardPlayerManager shareInstance] stopMusic]; + } +} + +- (void)viewDidLayoutSubviews { + [super viewDidLayoutSubviews]; + self.pagingView.frame = self.view.bounds; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.pagingView]; + [self.view addSubview:self.navView]; + [self.view addSubview:self.voiceView]; + if (self.uid != [AccountInfoStorage instance].getUid.integerValue) { + [self.view addSubview:self.bottomStackView]; + [self.bottomStackView addArrangedSubview:self.chatButton]; + [self.bottomStackView addArrangedSubview:self.attentionButton]; + + [self.bottomStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view).inset(25); + make.height.mas_equalTo(36); + make.bottom.mas_equalTo(self.view).offset(-kSafeAreaBottomHeight - 15); + }]; + } +} + +- (void)initSubViewConstraints { + [self.navView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.height.mas_equalTo(kNavigationHeight); + }]; + + [self.voiceView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.view); + make.top.mas_equalTo(self.view.mas_safeAreaLayoutGuideTop).offset(176); + make.size.mas_equalTo(CGSizeMake(65, 25)); + }]; +} + +- (void)initHttpRequest { + NSString *uid = [NSString stringWithFormat:@"%ld", self.uid]; + + ///请求目标用户的个人信息 + [self.presenter getUserInfoWithUid:uid]; + + [self.presenter getUserAttentionState:uid]; + + //获取用户详细信息 跟随进房目前使用的这个接口 + [self.presenter getUserDetailInfoWithUid:uid]; + + NSString * myUid = [AccountInfoStorage instance].getUid; + ///上传访问记录 + if (![uid isEqualToString:myUid]) { + ///请求我自己的个人信息 + [self.presenter getUserInfoWithUid:myUid]; + } +} + +#pragma mark - 拉黑 移除黑名单 +- (void)showRightNavHandle { + NSMutableArray *array = [NSMutableArray array]; + NSString *uid = [NSString stringWithFormat:@"%ld",self.uid]; + TTActionSheetConfig *report = [TTActionSheetConfig normalTitle:YMLocalizedString(@"XPMineUserInfoViewController0") clickAction:^{ + if ([ClientConfig shareConfig].canOpen) { + XPWebViewController *vc = [[XPWebViewController alloc]init]; + NSString *urlstr = [NSString stringWithFormat:@"%@?reportUid=%@&source=PERSONAL",URLWithType(kReportRoomURL),uid]; + vc.url = urlstr; + [self.navigationController pushViewController:vc animated:YES]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPMineUserInfoViewController1")]; + } + + }]; + + TTActionSheetConfig *black = [TTActionSheetConfig normalTitle:YMLocalizedString(@"XPMineUserInfoViewController2") clickAction:^{ + [self addOrRemoveBlack:NO uid:uid]; + }]; + + [array addObjectsFromArray:@[report, black]]; + + BOOL isInBlackList = [[NIMSDK sharedSDK].userManager isUserInBlackList:uid] || [NIMMessageUtils isOfficalAccount:[NSString stringWithFormat:@"%ld", self.uid]]; + if (isInBlackList) { + [array removeObject:black]; + } + [TTPopup actionSheetWithItems:array]; +} + + +//加入黑名单 +- (void)addOrRemoveBlack:(BOOL)isRemove uid:(NSString *)uid { + NSString *title; + NSString *message; + if (isRemove) { + title = YMLocalizedString(@"XPMineUserInfoViewController3"); + message = YMLocalizedString(@"XPMineUserInfoViewController4"); + }else{ + title = YMLocalizedString(@"XPMineUserInfoViewController5"); + message = YMLocalizedString(@"XPMineUserInfoViewController6"); + } + + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.title = title; + config.message = message; + + [TTPopup alertWithConfig:config confirmHandler:^{ + if (isRemove) { + [[NIMSDK sharedSDK].userManager removeFromBlackBlackList:uid completion:^(NSError * _Nullable error) { + if (error == nil) { + [self showSuccessToast:YMLocalizedString(@"XPMineUserInfoViewController7")]; + } + }]; + } else { + [[NIMSDK sharedSDK].userManager addToBlackList:uid completion:^(NSError * _Nullable error) { + if (error == nil) { + [self showSuccessToast:YMLocalizedString(@"XPMineUserInfoViewController8")]; + } + }]; + } + } cancelHandler:^{ + }]; +} + +#pragma mark - JXCategoryViewDelegate +- (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView { + return 440; +} + +- (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView { + return self.headView; +} + +- (NSUInteger)heightForPinSectionHeaderInPagerView:(JXPagerView *)pagerView { + return 50; +} + +- (UIView *)viewForPinSectionHeaderInPagerView:(JXPagerView *)pagerView { + return self.titleView; +} + +- (NSInteger)numberOfListsInPagerView:(JXPagerView *)pagerView { + return self.titles.count; +} + +- (id)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index { + UIViewController *viewController; + if (index == 0) { + return self.userDataVC; + } else { + return self.monentsVC; + } + return (id )viewController; +} + +#pragma mark - JXPagerMainTableViewGestureDelegate +- (BOOL)mainTableViewGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { + ///1000是外部的scrollView 1001是人气主播中的collectionView + if (otherGestureRecognizer.view.tag == 1005 || otherGestureRecognizer.view.tag == 1009) { + return NO; + } + return [gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] && [otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]; +} + +#pragma mark - XPMineCustomNavViewDelegate +- (void)xPMineCustomNavView:(XPMineUserInfoCustomNavView *)view didClickEditButton:(UIButton *)sender { + if (sender.isSelected) {///自己看自己的 去修改资料 + XPMineUserInfoEditViewController * editVC = [[XPMineUserInfoEditViewController alloc] init]; + [self.navigationController pushViewController:editVC animated:YES]; + } else { + [self showRightNavHandle]; + } +} + +- (void)xPMineCustomNavView:(XPMineUserInfoCustomNavView *)view didClickBackButton:(UIButton *)sender { + [self.navigationController popViewControllerAnimated:YES]; +} + +#pragma mark - XPMineUserInfoHeaderViewDelegate +- (void)xPMineUserInfoHeaderView:(XPMineUserInfoHeaderView *)view didClickGoToRoom:(NSString *)roomUid { + if (roomUid.length > 0 ) { + //退出原来的房间 如果有的话 TODO 总感觉这种处理不太优雅 进房入口多了 怎么办 进房需要整合 + [self.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj isKindOfClass:[XPRoomViewController class]]) { + [self.navigationController popToRootViewControllerAnimated:NO]; + XPRoomViewController * rooomVC = obj; + [rooomVC exitRoom]; + *stop = YES; + } + }]; + [XPRoomViewController openRoom:roomUid viewController:self]; + } +} + +#pragma mark - XPMineUserDataViewControllerDelegate +- (void)xPMineUserDataViewController:(XPMineUserDataViewController *)viewController didGetVoiceSuccess:(MineSkillCardListInfoModel *)voiceCard { + if (voiceCard && [voiceCard.cardId isEqualToString:@"8"]) { + self.voiceView.hidden = NO; + self.voiceView.voiceInfo = voiceCard; + } else { + self.voiceView.hidden = YES; + } +} + +#pragma mark - XPMineUserInfoProtocol +- (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo { + if (userInfo.uid == self.uid) { + self.userInfo = userInfo; + self.headView.userInfo = userInfo; + } else { + if (!userInfo.userVipInfoVO.lookHomepageHide) { + NSString * uid = [NSString stringWithFormat:@"%ld", self.uid]; + [self.presenter visitUser:uid]; + } + } +} + +- (void)ongetDetailInfoSuccess:(UserInfoModel *)userInfo { + self.userDataVC.userInfo = userInfo; + self.monentsVC.dynamicInfo = userInfo.dynamicInfo; + self.headView.roomUid = userInfo.roomUid; +} + +- (void)getAttentionStateSuccess:(BOOL)status { + self.attentionButton.selected = status; +} + +- (void)attentionUserSuccess:(BOOL)status { + self.attentionButton.selected = status; +} + +#pragma mark - Event Response +- (void)chatButtonAction:(UIButton *)sender { + NSString * sessionId = [NSString stringWithFormat:@"%ld",self.uid]; + NIMSession * session = [NIMSession session:sessionId type:NIMSessionTypeP2P]; + SessionViewController * sessionVC = [[SessionViewController alloc] initWithSession:session]; + [self.navigationController pushViewController:sessionVC animated:YES]; +} + +- (void)attentionButtonAction:(UIButton *)sender { + NSString *uid = [NSString stringWithFormat:@"%ld", self.uid]; + [self.presenter attentionUser:uid state:!sender.selected]; +} + +#pragma mark - Getters And Setters +- (void)setUid:(NSInteger)uid { + _uid = uid; + if (_uid > 0) { + if (_uid == [AccountInfoStorage instance].getUid.integerValue) { + [self.navView.editButton setTitle:YMLocalizedString(@"XPMineUserInfoViewController9") forState:UIControlStateNormal]; + [self.navView.editButton setImage:[UIImage new] forState:UIControlStateNormal]; + } else { + [self.navView.editButton setTitle:@"" forState:UIControlStateNormal]; + [self.navView.editButton setImage:[UIImage imageNamed:@"mine_user_info_edit"] forState:UIControlStateNormal]; + } + self.navView.editButton.selected = _uid == [AccountInfoStorage instance].getUid.integerValue; + NSString * uidStr = [NSString stringWithFormat:@"%ld", uid]; + self.userDataVC.userUid = uidStr; + [self.presenter getUserInfoWithUid:uidStr]; + } +} + + +- (XPMineUserInfoHeaderView *)headView { + if (!_headView) { + _headView = [[XPMineUserInfoHeaderView alloc] init]; + _headView.delegate = self; + } + return _headView; +} + +- (XPMineUserInfoCustomNavView *)navView { + if (!_navView) { + _navView = [[XPMineUserInfoCustomNavView alloc] init]; + _navView.delegate = self; + } + return _navView; +} + +- (UIStackView *)bottomStackView { + if (!_bottomStackView) { + _bottomStackView = [[UIStackView alloc] init]; + _bottomStackView.axis = UILayoutConstraintAxisHorizontal; + _bottomStackView.distribution = UIStackViewDistributionFillEqually; + _bottomStackView.alignment = UIStackViewAlignmentFill; + _bottomStackView.spacing = 25; + } + return _bottomStackView; +} + +- (UIButton *)chatButton { + if (!_chatButton) { + _chatButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_chatButton setTitle:YMLocalizedString(@"XPMineUserInfoViewController10") forState:UIControlStateNormal]; + [_chatButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_chatButton setImage:[UIImage imageNamed:@"mine_user_info_bottom_chat"] forState:UIControlStateNormal]; + _chatButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_chatButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _chatButton.layer.masksToBounds = YES; + _chatButton.layer.cornerRadius = 36/2; + [_chatButton addTarget:self action:@selector(chatButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _chatButton; +} + +- (UIButton *)attentionButton { + if (!_attentionButton) { + _attentionButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_attentionButton setTitle:YMLocalizedString(@"XPMineUserInfoViewController11") forState:UIControlStateNormal]; + [_attentionButton setTitle:YMLocalizedString(@"XPMineUserInfoViewController12") forState:UIControlStateSelected]; + [_attentionButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_attentionButton setTitleColor:[DJDKMIMOMColor cancelButtonTextColor] forState:UIControlStateSelected]; + [_attentionButton setImage:[UIImage imageNamed:@"mine_user_info_bottom_attention_normal"] forState:UIControlStateNormal]; + [_attentionButton setImage:[UIImage imageNamed:@"mine_user_info_bottom_attention_select"] forState:UIControlStateSelected]; + _attentionButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_attentionButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_attentionButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor cancelButtonGradientStartColor], [DJDKMIMOMColor cancelButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateSelected]; + _attentionButton.layer.masksToBounds = YES; + _attentionButton.layer.cornerRadius = 36/2; + [_attentionButton addTarget:self action:@selector(attentionButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _attentionButton; +} + +- (JXCategoryTitleView *)titleView { + if (!_titleView) { + _titleView = [[JXCategoryTitleView alloc] init]; + _titleView.delegate = self; + _titleView.backgroundColor = [UIColor clearColor]; + _titleView.titleColor = [DJDKMIMOMColor textThirdColor]; + _titleView.titleSelectedColor = [DJDKMIMOMColor mainTextColor]; + _titleView.titleFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:12]; + _titleView.titleSelectedFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; + _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; + _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; + _titleView.defaultSelectedIndex = 0; + _titleView.averageCellSpacingEnabled = NO; + _titleView.contentEdgeInsetLeft = 20; + _titleView.titles = self.titles; + _titleView.cellSpacing = 20; + _titleView.titles = self.titles; + _titleView.listContainer = (id)self.pagingView.listContainerView; + + JXCategoryIndicatorImageView *lineView = [[JXCategoryIndicatorImageView alloc] init]; + lineView.indicatorImageViewSize = CGSizeMake(16, 6); + lineView.verticalMargin = 7; + lineView.indicatorImageView.layer.masksToBounds = YES; + lineView.indicatorImageView.layer.cornerRadius = 3; + lineView.indicatorImageView.image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFFC000), UIColorFromRGB(0xFFF9DB)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(16, 6)]; + _titleView.indicators = @[lineView]; + } + return _titleView; +} + +- (JXPagerView *)pagingView { + if (!_pagingView) { + _pagingView = [[JXPagerView alloc] initWithDelegate:self]; + _pagingView.backgroundColor = [UIColor clearColor]; + _pagingView.listContainerView.backgroundColor = [UIColor clearColor]; + _pagingView.mainTableView.backgroundColor = [UIColor clearColor]; + _pagingView.listContainerView.listCellBackgroundColor = UIColor.clearColor; + _pagingView.mainTableView.gestureDelegate = self; + } + return _pagingView; +} + +- (NSArray *)titles { + if (!_titles) { + _titles = @[YMLocalizedString(@"XPMineUserInfoViewController13"), YMLocalizedString(@"XPMineUserInfoViewController14")]; + } + return _titles; +} + +- (XPMineUserDataViewController *)userDataVC { + if (!_userDataVC) { + _userDataVC = [[XPMineUserDataViewController alloc] init]; + } + return _userDataVC; +} +- (XPMineUserInfoVoiceCardView *)voiceView { + if (!_voiceView) { + _voiceView = [[XPMineUserInfoVoiceCardView alloc] init]; + _voiceView.hidden = YES; + } + return _voiceView; +} + +- (XPMonentsMineViewController *)monentsVC { + if (!_monentsVC) { + _monentsVC = [[XPMonentsMineViewController alloc] init]; + } + return _monentsVC; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractAlbumRegardGovernancer.h b/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractAlbumRegardGovernancer.h deleted file mode 100644 index 0ae03355..00000000 --- a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractAlbumRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineUserInfoAlbumViewController.h -// YUMI -// -// Created by YUMI on 2021/9/24. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeConsumerAbstractAlbumRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractAlbumRegardGovernancer.m b/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractAlbumRegardGovernancer.m deleted file mode 100644 index ddf551aa..00000000 --- a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractAlbumRegardGovernancer.m +++ /dev/null @@ -1,256 +0,0 @@ -// -// YMMineUserInfoAlbumViewController.m -// YUMI -// -// Created by YUMI on 2021/9/24. -// - -#import "YUMIManeConsumerAbstractAlbumRegardGovernancer.h" -#import -#import -#import "SDAppearanceBrowser.h" -#import "UIIndicateConstant.h" -#import "MKJPopup.h" -#import "YYUtility.h" -#import "DJDKMIMOMColor.h" -#import "NSArray+Safe.h" -#import "ConsumerAbstractMatrix.h" -#import "YUMIManeConsumerAbstractAlbumAssembletionRegardElement.h" -#import "YUMIManeConsumerAbstractlbumExternalizer.h" -#import "FBCManeConsumerAbstractAlbumCeremony.h" - -@interface YUMIManeConsumerAbstractAlbumRegardGovernancer () -@property (nonatomic,strong) UICollectionView *collectionView; -@property (nonatomic,strong) NSArray *datasource; -@property (nonatomic,strong) UIButton *complectBtuton; -@property (nonatomic,assign) BOOL isCompile; -@end - -@implementation YUMIManeConsumerAbstractAlbumRegardGovernancer - -- (YUMIManeConsumerAbstractlbumExternalizer*)producePresimport { - return [[YUMIManeConsumerAbstractlbumExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self chamberConsumerAbstract]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Mine_User_Info_Album_View_Controller_0"); - - [self accelertowardseBreeadcrumbProvisionAboutProvisions:@[self.complectBtuton] isContrary:NO]; - [self.view addSubview:self.collectionView]; -} - -- (void)initChildLyRestrictions { - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -- (void)chamberConsumerAbstract { - [self.presimport getUserInfo]; -} - -- (void)cancelEditing { - self.complectBtuton.selected = NO; - self.isCompile = NO; - [self.collectionView reloadData]; -} - -#pragma mark - 选择图片 -- (void)EvidenceAplictowardsionearanceRegard { - @weakify(self); - MKJActionSheetDisposition *cameraConfig = [MKJActionSheetDisposition normalTitle:YMLocalizedString(@"YUMI_Mine_User_Info_Album_View_Controller_1") ticktackPerformance:^{ - [YYUtility examineCameraAvailable:^{ - @strongify(self); - UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; - imagePicker.delegate = self; - imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; - imagePicker.allowsEditing = YES; - [self presentViewController:imagePicker animated:YES completion:NULL]; - } denied:^{ - @strongify(self); - [self EvidenceNgtowardsAplictowardsionearance:@"相机不可用" content:YMLocalizedString(@"YUMI_Mine_User_Info_Album_View_Controller_3")]; - } restriction:^{ - @strongify(self); - [self EvidenceNgtowardsAplictowardsionearance:@"相机不可用" content:YMLocalizedString(@"YUMI_Mine_User_Info_Album_View_Controller_5")]; - }]; - }]; - - MKJActionSheetDisposition *photoLibrayConfig = [MKJActionSheetDisposition normalTitle:YMLocalizedString(@"YUMI_Mine_User_Info_Album_View_Controller_6") ticktackPerformance:^{ - [YYUtility examineAssetsLibrayAvailable:^{ - @strongify(self); - UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; - imagePicker.modalPresentationCapturesStatusBarAppearance = YES; - imagePicker.delegate = self; - imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; - imagePicker.allowsEditing = YES; - [self presentViewController:imagePicker animated:YES completion:NULL]; - } denied:^{ - @strongify(self); - [self EvidenceNgtowardsAplictowardsionearance:@"相册不可用" content:YMLocalizedString(@"YUMI_Mine_User_Info_Album_View_Controller_8")]; - } restriction:^{ - @strongify(self); - [self EvidenceNgtowardsAplictowardsionearance:@"相册不可用" content:YMLocalizedString(@"YUMI_Mine_User_Info_Album_View_Controller_10")]; - }]; - }]; - - [MKJPopup performanceSheetAboutProvisions:@[cameraConfig, photoLibrayConfig]]; -} - -- (void)EvidenceNgtowardsAplictowardsionearance:(NSString *)title content:(NSString *)content{ - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.title = title; - config.message = content; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; - if ([[UIApplication sharedApplication] canOpenURL:url]) { - [[UIApplication sharedApplication] openURL:url]; - } - } cancelHandler:^{ - }]; -} - -#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.datasource.count + 1; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMIManeConsumerAbstractAlbumAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIManeConsumerAbstractAlbumAssembletionRegardElement class]) forIndexPath:indexPath]; - cell.delegate = self; - if (indexPath.row == 0) { - cell.accelerateIndicateConstitute = @"mine_user_info_album_add"; - cell.isCompile = NO; - } else { - if (self.datasource.count > 0) { - cell.appearance = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row - 1]; - cell.isCompile = self.isCompile; - } - } - return cell; -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - [collectionView deselectItemAtIndexPath:indexPath animated:YES]; - if (indexPath.row == 0) { - if (self.datasource.count < 8) { - [self EvidenceAplictowardsionearanceRegard]; - [self cancelEditing]; - }else{ - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Mine_User_Info_Album_View_Controller_11")]; - } - }else { - if (!self.isEditing) { - SDAppearanceBrowser *browser = [[SDAppearanceBrowser alloc]init]; - browser.sourceIndicatesAccommoengagementdRegard = self.collectionView; - browser.delegate = self; - browser.indicateComputation = self.datasource.count; - browser.universalIndicateIndicatrix = indexPath.item - 1; - browser.isHaveConsumerAccelerate = YES; - [browser show]; - } - } -} - -#pragma mark - FBCManeConsumerAbstractAlbumAssembletionRegardElementRepresendtation -- (void)fBCManeConsumerAbstractBrochureAssembletionRegardElement:(YUMIManeConsumerAbstractAlbumAssembletionRegardElement *)cell didDeleteItem:(ConsumerAppearance *)appearance { - MKJPrecautiousDisposition * config = [[MKJPrecautiousDisposition alloc] init]; - config.title = YMLocalizedString(@"YUMI_Mine_User_Info_Album_View_Controller_12"); - config.message = @"是否需要删除?"; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [self.presimport representtowardsionIndictowardseWeebsiteByvirtueofWeeblogicAboutPid:appearance.pid]; - } cancelHandler:^{ - - }]; -} - -#pragma mark - SDPhotoBrowserRepresendtation -- (UIImage *)aplictowardsionearanceBrowser:(SDAppearanceBrowser *)browser placeholderIndictowardseInthecaseofIndictowardsrix:(NSInteger)index { - return [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; -} - -- (NSURL *)aplictowardsionearanceBrowser:(SDAppearanceBrowser *)browser highQualityIndictowardseWEEBSITEInthecaseofIndictowardsrix:(NSInteger)index { - return [NSURL URLWithString:self.datasource[index].photoUrl]; -} -#pragma mark - UIImagePickerControllerDelegate -- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { - - [picker dismissViewControllerAnimated:YES completion:^{ - UIImage *selectedPhoto = [info objectForKey:UIImagePickerControllerOriginalImage]; - if (selectedPhoto) { - if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) { - UIImageWriteToSavedPhotosAlbum(selectedPhoto, nil, nil, nil); - } - [self.presimport upburdenBrochureIndictowardse:selectedPhoto]; - } - }]; -} - -- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { - [picker dismissViewControllerAnimated:YES completion:^{ - - }]; -} - -#pragma mark - FBCManeConsumerAbstractAlbumCeremony -- (void)dwellEarnConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo { - self.datasource = userInfo.privatePhoto; - [self.collectionView reloadData]; -} -- (void)upburdenBrochureIndictowardseToTertiusAccomplishment:(NSString *)url { - [self.presimport upburdenConsumerBrochureAboutWeebsiteBWStt:url]; -} -- (void)upburdenConsumerBrochureAccomplishment { - [self.presimport getUserInfo]; - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Mine_User_Info_Album_View_Controller_14")]; -} - -- (void)representtowardsionConsumerBrochureAccomplishment { - [self.presimport getUserInfo]; - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Mine_User_Info_Album_View_Controller_15")]; -} -#pragma mark - Event Response -- (void)complectBtutonPerformance:(UIButton *)sender { - sender.selected = !sender.selected; - self.isCompile = sender.selected; - [self.collectionView reloadData]; -} - -#pragma mark - Getters And Setters -- (UICollectionView *)collectionView{ - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.sectionInset = UIEdgeInsetsMake(10, 10, 10, 10); - layout.itemSize = CGSizeMake((self.view.frame.size.width - 50) / 3, (self.view.frame.size.width - 50) / 3); - layout.minimumLineSpacing = 15; - layout.minimumInteritemSpacing = 15; - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.backgroundColor = [UIColor clearColor]; - [_collectionView registerClass:[YUMIManeConsumerAbstractAlbumAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIManeConsumerAbstractAlbumAssembletionRegardElement class])]; - } - return _collectionView; -} - -- (UIButton *)complectBtuton { - if (!_complectBtuton) { - _complectBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_complectBtuton setTitle:YMLocalizedString(@"YUMI_Mine_User_Info_Album_View_Controller_16") forState:UIControlStateNormal]; - [_complectBtuton setTitle:YMLocalizedString(@"YUMI_Mine_User_Info_Album_View_Controller_17") forState:UIControlStateSelected]; - [_complectBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateNormal]; - [_complectBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateSelected]; - _complectBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_complectBtuton addTarget:self action:@selector(complectBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _complectBtuton; -} - -@end diff --git a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractCompileRegardGovernancer.h b/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractCompileRegardGovernancer.h deleted file mode 100644 index 3e650d81..00000000 --- a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractCompileRegardGovernancer.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// YMMineUserInfoEditViewController.h -// YUMI -// -// Created by YUMI on 2021/9/23. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN -@interface YUMIManeConsumerAbstractCompileRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractCompileRegardGovernancer.m b/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractCompileRegardGovernancer.m deleted file mode 100644 index cd1a9d87..00000000 --- a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractCompileRegardGovernancer.m +++ /dev/null @@ -1,288 +0,0 @@ -// -// YMMineUserInfoEditViewController.m -// YUMI -// -// Created by YUMI on 2021/9/23. -// - -#import "YUMIManeConsumerAbstractCompileRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "MKJPopup.h" -#import "YYUtility.h" -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "YUMIManeConsumerAbstractCompileMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "YUMIManeConsumerAbstractCompileTabulationRegardElement.h" -#import "YUMIManeConsumerAbstractDateRegard.h" -#import "FBCManeConsumerAbstractEditCeremony.h" -#import "YUMIManeConsumerAbstractCompileExternalizer.h" -#import "YUMIManeConsumerAbstractNickRegardGovernancer.h" -#import "YUMIManeConsumerAbstractDesRegardGovernancer.h" -#import "YUMIManeConsumerAbstractAlbumRegardGovernancer.h" - -@interface YUMIManeConsumerAbstractCompileRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSArray *atoloudspeakersouce; -@property (nonatomic,strong) YUMIManeConsumerAbstractDateRegard *engagementRegard; -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@end - -@implementation YUMIManeConsumerAbstractCompileRegardGovernancer - -- (YUMIManeConsumerAbstractCompileExternalizer *)producePresimport { - return [[YUMIManeConsumerAbstractCompileExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - [self.presimport getUserInfo]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Mine_User_Info_Edit_View_Controller_0"); - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -- (void)EvidenceAplictowardsionearanceRegard { - @weakify(self); - MKJActionSheetDisposition *cameraConfig = [MKJActionSheetDisposition normalTitle:YMLocalizedString(@"YUMI_Mine_User_Info_Edit_View_Controller_1") ticktackPerformance:^{ - [YYUtility examineCameraAvailable:^{ - @strongify(self); - UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; - imagePicker.delegate = self; - imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; - imagePicker.allowsEditing = YES; - [self presentViewController:imagePicker animated:YES completion:NULL]; - } denied:^{ - @strongify(self); - [self EvidenceNgtowardsAplictowardsionearance:@"相机不可用" content:YMLocalizedString(@"YUMI_Mine_User_Info_Edit_View_Controller_3")]; - } restriction:^{ - @strongify(self); - [self EvidenceNgtowardsAplictowardsionearance:@"相机不可用" content:YMLocalizedString(@"YUMI_Mine_User_Info_Edit_View_Controller_5")]; - }]; - }]; - - MKJActionSheetDisposition *photoLibrayConfig = [MKJActionSheetDisposition normalTitle:YMLocalizedString(@"YUMI_Mine_User_Info_Edit_View_Controller_6") ticktackPerformance:^{ - [YYUtility examineAssetsLibrayAvailable:^{ - @strongify(self); - UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; - imagePicker.modalPresentationCapturesStatusBarAppearance = YES; - imagePicker.delegate = self; - imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; - imagePicker.allowsEditing = YES; - [self presentViewController:imagePicker animated:YES completion:NULL]; - } denied:^{ - @strongify(self); - [self EvidenceNgtowardsAplictowardsionearance:@"相册不可用" content:YMLocalizedString(@"YUMI_Mine_User_Info_Edit_View_Controller_8")]; - } restriction:^{ - @strongify(self); - [self EvidenceNgtowardsAplictowardsionearance:@"相册不可用" content:YMLocalizedString(@"YUMI_Mine_User_Info_Edit_View_Controller_10")]; - }]; - }]; - - [MKJPopup performanceSheetAboutProvisions:@[cameraConfig, photoLibrayConfig]]; -} - -- (void)EvidenceNgtowardsAplictowardsionearance:(NSString *)title content:(NSString *)content { - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.title = title; - config.message = content; - - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; - if ([[UIApplication sharedApplication] canOpenURL:url]) { - [[UIApplication sharedApplication] openURL:url]; - } - } cancelHandler:^{ - }]; -} - -- (void)EvidenceEngagementExtracterRegard { - self.engagementRegard.time = self.userInfo.birth/1000; - [MKJPopup popupRegard:self.engagementRegard style:MKJPopupStyleActionSheet]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return 1; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.atoloudspeakersouce.count; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - YUMIManeConsumerAbstractCompileMatrix * model = [self.atoloudspeakersouce secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (model.type == YUMIManeConsumerAbstractEditGenre_Avatar) { - return 60; - } else { - return 50; - } -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - YUMIManeConsumerAbstractCompileTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeConsumerAbstractCompileTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeConsumerAbstractCompileTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeConsumerAbstractCompileTabulationRegardElement class])]; - } - YUMIManeConsumerAbstractCompileMatrix * model = [self.atoloudspeakersouce secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.itmeMatrix = model; - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - YUMIManeConsumerAbstractCompileMatrix * model = [self.atoloudspeakersouce secureGroalTowardsIndictowardsrix1:indexPath.row]; - switch (model.type) { - case YUMIManeConsumerAbstractEditGenre_Nick: - { - YUMIManeConsumerAbstractNickRegardGovernancer * nickVC = [[YUMIManeConsumerAbstractNickRegardGovernancer alloc] init]; - nickVC.delegate = self; - nickVC.nick = self.userInfo.nick; - [self.navigationController pushViewController:nickVC animated:YES]; - } - break; - case YUMIManeConsumerAbstractEditGenre_Avatar: { - if (self.userInfo.isReview) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Mine_User_Info_Edit_View_Controller_11")]; - } else { - [self EvidenceAplictowardsionearanceRegard]; - } - } - break; - case YUMIManeConsumerAbstractEditGenre_Birth: - [self EvidenceEngagementExtracterRegard]; - break; - case YUMIManeConsumerAbstractEditGenre_UseDes: - { - YUMIManeConsumerAbstractDesRegardGovernancer * desVC = [[YUMIManeConsumerAbstractDesRegardGovernancer alloc] init]; - desVC.delegate = self; - desVC.userDesc = self.userInfo.userDesc; - [self.navigationController pushViewController:desVC animated:YES]; - } - break; - case YUMIManeConsumerAbstractEditGenre_Photo: - { - YUMIManeConsumerAbstractAlbumRegardGovernancer * albumVC = [[YUMIManeConsumerAbstractAlbumRegardGovernancer alloc] init]; - [self.navigationController pushViewController:albumVC animated:YES]; - } - break; - - default: - break; - } -} - -#pragma mark - UIImagePickerControllerDelegate -- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info -{ - UIImage *selectedPhoto = [info objectForKey:UIImagePickerControllerEditedImage]; - if (selectedPhoto) { - if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) { - UIImageWriteToSavedPhotosAlbum(selectedPhoto, nil, nil, nil); - } - [self.presimport upburdenIntelligenceportrait:selectedPhoto]; - } - [picker dismissViewControllerAnimated:YES completion:^{}]; -} - -- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{ - [picker dismissViewControllerAnimated:YES completion:^{ - }]; -} - -#pragma mark - FBCManeConsumerAbstractDateRegardRepresendtation -- (void)fBCManeConsumerAbstractEngagementRegard:(YUMIManeConsumerAbstractDateRegard *)view didClickSureButton:(NSString *)dateStr{ - [MKJPopup dismiss]; - if (dateStr.length > 0) { - [self.presimport complectionAbstractAboutIntelligenceportrait:nil nick:nil birth:dateStr userDesc:nil]; - } -} - -- (void)fBCManeConsumerAbstractEngagementRegard:(YUMIManeConsumerAbstractDateRegard *)view didClickCancleButton:(UIButton *)sender { - [MKJPopup dismiss]; -} - -#pragma mark - FBCManeConsumerAbstractNickRegardGovernancerRepresendtation -- (void)fBCManeConsumerAbstractMonicerRegardGovernancer:(YUMIManeConsumerAbstractNickRegardGovernancer *)viewController updateNick:(NSString *)nick { - if (nick.length > 0) { - [self.presimport complectionAbstractAboutIntelligenceportrait:nil nick:nick birth:nil userDesc:nil]; - } -} -#pragma mark - FBCManeConsumerAbstractDesRegardGovernancerRepresendtation -- (void)fBCManeConsumerAbstractSequencRegardGovernancer:(YUMIManeConsumerAbstractDesRegardGovernancer *)viewController updateUserDes:(NSString *)userDes { - if (userDes.length > 0) { - [self.presimport complectionAbstractAboutIntelligenceportrait:nil nick:nil birth:nil userDesc:userDes]; - } -} - -#pragma mark - FBCManeConsumerAbstractEditCeremony -- (void)acquireConsumerAbstractCompileTowardsoloudspeakerProvenienceAccomplishment:(NSArray *)array { - self.atoloudspeakersouce = array; - [self.tableView reloadData]; -} - -- (void)accomplishConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo { - if (userInfo.isReview) { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Mine_User_Info_Edit_View_Controller_12")]; - dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)); - dispatch_after(delayTime, dispatch_get_main_queue(), ^{ - [self.presimport getUserInfo]; - }); - } else { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Mine_User_Info_Edit_View_Controller_13")]; - [self.presimport getUserInfo]; - } -} - -- (void)dwellEarnConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo { - self.userInfo = userInfo; - [self.presimport acquireConsumerAbstractCompileTowardsoloudspeakerProvenienceAboutConsumerAbstract:self.userInfo]; -} - -- (void)upburdenIndictowardseAccomplishment:(NSString *)url { - [self.presimport complectionAbstractAboutIntelligenceportrait:url nick:nil birth:nil userDesc:nil]; -} -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.tableHeaderView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIManeConsumerAbstractCompileTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeConsumerAbstractCompileTabulationRegardElement class])]; - } - return _tableView; -} - -- (YUMIManeConsumerAbstractDateRegard *)engagementRegard { - if (!_engagementRegard) { - _engagementRegard = [[YUMIManeConsumerAbstractDateRegard alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 216+kSafeAreaBottomHeight+54)]; - _engagementRegard.delegate = self; - } - return _engagementRegard; -} - -@end diff --git a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractDesRegardGovernancer.h b/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractDesRegardGovernancer.h deleted file mode 100644 index c53771dd..00000000 --- a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractDesRegardGovernancer.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMMineUserInfoDesViewController.h -// YUMI -// -// Created by YUMI on 2021/9/23. -// - -#import "BaseRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN -@class YUMIManeConsumerAbstractDesRegardGovernancer; -@protocol FBCManeConsumerAbstractDesRegardGovernancerRepresendtation - -- (void)fBCManeConsumerAbstractSequencRegardGovernancer:(YUMIManeConsumerAbstractDesRegardGovernancer *)viewController updateUserDes:(NSString *)userDes; - -@end -@interface YUMIManeConsumerAbstractDesRegardGovernancer : BaseRegardGovernancer -@property (nonatomic,strong) NSString *userDesc; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractDesRegardGovernancer.m b/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractDesRegardGovernancer.m deleted file mode 100644 index acd3d2d4..00000000 --- a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractDesRegardGovernancer.m +++ /dev/null @@ -1,160 +0,0 @@ -// -// YMMineUserInfoDesViewController.m -// YUMI -// -// Created by YUMI on 2021/9/23. -// - -#import "YUMIManeConsumerAbstractDesRegardGovernancer.h" -#import -#import -#import -#import "DJDKMIMOMColor.h" -#import "ConsumerAbstractMatrix.h" - -static NSInteger maxCount = 60; - -@interface YUMIManeConsumerAbstractDesRegardGovernancer () -@property (nonatomic, strong) UIView *accommoengagementRegard; -@property (nonatomic, strong) SZTextView *useSequenceEssayRegard; -@property (nonatomic, strong) UIButton *distinctBtuton; -@property (nonatomic, strong) UIButton *completionBtuton; -@property (nonatomic, strong) UILabel *restrictionSequencignation; - - -@end - - - -@implementation YUMIManeConsumerAbstractDesRegardGovernancer - -- (void)viewDidLoad { - [super viewDidLoad]; - self.title = YMLocalizedString(@"YUMI_Mine_User_Info_Des_View_Controller_0"); - [self initSubViews]; - [self initChildLyRestrictions]; - [self initOccurrences]; - -} - -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { - [self.view endEditing:YES]; -} - -#pragma mark - Private Method -- (void)initSubViews { - UIBarButtonItem *completeItem = [[UIBarButtonItem alloc] initWithCustomView:self.completionBtuton]; - self.navigationItem.rightBarButtonItem = completeItem; - [self.view addSubview:self.accommoengagementRegard]; - [self.accommoengagementRegard addSubview:self.useSequenceEssayRegard]; - [self.accommoengagementRegard addSubview:self.distinctBtuton]; - [self.view addSubview:self.restrictionSequencignation]; - self.useSequenceEssayRegard.text = self.userDesc; - self.restrictionSequencignation.text = [NSString stringWithFormat:@"%ld",(maxCount - self.userDesc.length)]; - self.restrictionSequencignation.textColor = self.userDesc.length > 0 ? [DJDKMIMOMColor mainEssayPrettify] : [DJDKMIMOMColor instantEssayPrettify]; - self.completionBtuton.enabled = self.useSequenceEssayRegard.text.length > 0; -} - -- (void)initChildLyRestrictions { - [self.accommoengagementRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(20); - make.left.mas_equalTo(self.view).offset(15); - make.right.mas_equalTo(self.view).offset(-15); - make.height.mas_equalTo(137); - }]; - [self.useSequenceEssayRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.top.mas_equalTo(self.accommoengagementRegard).offset(10); - make.bottom.mas_equalTo(self.accommoengagementRegard).offset(-10); - make.right.mas_equalTo(self.distinctBtuton.mas_left).offset(-5); - }]; - [self.distinctBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.accommoengagementRegard).offset(10); - make.right.mas_equalTo(self.accommoengagementRegard).offset(-10); - }]; - [self.restrictionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.accommoengagementRegard.mas_bottom).offset(5); - make.right.mas_equalTo(self.accommoengagementRegard); - }]; -} - -- (void)initOccurrences { - @weakify(self); - RAC(self.completionBtuton, enabled) = [RACSignal combineLatest:@[self.useSequenceEssayRegard.rac_textSignal] reduce:^id _Nonnull(NSString *text){ - @strongify(self); - self.restrictionSequencignation.text = [NSString stringWithFormat:@"%ld",(maxCount - text.length)]; - if (text.length > maxCount) { - [self EvidenceMistakeToast:[NSString stringWithFormat:YMLocalizedString(@"YUMI_Mine_User_Info_Des_View_Controller_1"), maxCount]]; - } - return @(text.length > 0 && text.length <= maxCount); - }]; -} -#pragma mark - Event Response -- (void)implementtowardsionBtutonPerformance:(UIButton *)sender { - [self.navigationController popViewControllerAnimated:YES]; - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeConsumerAbstractSequencRegardGovernancer:updateUserDes:)]) { - [self.delegate fBCManeConsumerAbstractSequencRegardGovernancer:self updateUserDes:self.useSequenceEssayRegard.text]; - } -} - -- (void)prohibititinctBtutonPerformance:(UIButton *)sender { - self.useSequenceEssayRegard.text = @""; - self.completionBtuton.enabled = NO; - self.restrictionSequencignation.text = [NSString stringWithFormat:@"%ld",(maxCount - self.useSequenceEssayRegard.text.length)]; -} - -#pragma mark - getter && setter -- (UIView *)accommoengagementRegard { - if (!_accommoengagementRegard) { - _accommoengagementRegard = [[UIView alloc] init]; - _accommoengagementRegard.layer.cornerRadius = 5; - _accommoengagementRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - } - return _accommoengagementRegard; -} - -- (SZTextView *)useSequenceEssayRegard { - if (!_useSequenceEssayRegard) { - _useSequenceEssayRegard = [[SZTextView alloc] init]; - _useSequenceEssayRegard.delegate = self; - _useSequenceEssayRegard.placeholder = @"填写自我介绍,可以让别人更了解你哦~"; - _useSequenceEssayRegard.placeholderTextColor = [DJDKMIMOMColor instantEssayPrettify]; - _useSequenceEssayRegard.font = [UIFont systemFontOfSize:14]; - _useSequenceEssayRegard.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _useSequenceEssayRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - } - return _useSequenceEssayRegard; -} - -- (UIButton *)completionBtuton { - if (!_completionBtuton) { - _completionBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_completionBtuton setTitle:YMLocalizedString(@"YUMI_Mine_User_Info_Des_View_Controller_3") forState:UIControlStateNormal]; - [_completionBtuton setFrame:CGRectMake(0, 0, 50, 30)]; - [_completionBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateNormal]; - [_completionBtuton setTitleColor:[DJDKMIMOMColor prohibitionBtutonEssayPrettify] forState:UIControlStateDisabled]; - [_completionBtuton.titleLabel setFont:[UIFont systemFontOfSize:13]]; - [_completionBtuton addTarget:self action:@selector(implementtowardsionBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _completionBtuton; -} - -- (UILabel *)restrictionSequencignation { - if (!_restrictionSequencignation) { - _restrictionSequencignation = [[UILabel alloc] init]; - _restrictionSequencignation.font = [UIFont systemFontOfSize:14]; - _restrictionSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _restrictionSequencignation.text = @"60"; - } - return _restrictionSequencignation; -} - -- (UIButton *)distinctBtuton { - if (!_distinctBtuton) { - _distinctBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_distinctBtuton setImage:[UIImage imageNamed:@"yumi_center_user_gen_edit_clear"] forState:UIControlStateNormal]; - [_distinctBtuton addTarget:self action:@selector(prohibititinctBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _distinctBtuton; -} - -@end diff --git a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractNickRegardGovernancer.h b/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractNickRegardGovernancer.h deleted file mode 100644 index a3e2ccad..00000000 --- a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractNickRegardGovernancer.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMMineUserInfoNickViewController.h -// YUMI -// -// Created by YUMI on 2021/9/23. -// - -#import "BaseRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN -@class YUMIManeConsumerAbstractNickRegardGovernancer; -@protocol FBCManeConsumerAbstractNickRegardGovernancerRepresendtation -- (void)fBCManeConsumerAbstractMonicerRegardGovernancer:(YUMIManeConsumerAbstractNickRegardGovernancer *)viewController updateNick:(NSString *)nick; -@end - -@interface YUMIManeConsumerAbstractNickRegardGovernancer : BaseRegardGovernancer -@property (nonatomic,strong) NSString *nick; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractNickRegardGovernancer.m b/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractNickRegardGovernancer.m deleted file mode 100644 index a4f2a9cd..00000000 --- a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractNickRegardGovernancer.m +++ /dev/null @@ -1,160 +0,0 @@ -// -// YMMineUserInfoNickViewController.m -// YUMI -// -// Created by YUMI on 2021/9/23. -// - -#import "YUMIManeConsumerAbstractNickRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "ConsumerAbstractMatrix.h" - -static NSInteger maxCount = 15; - -@interface YUMIManeConsumerAbstractNickRegardGovernancer () -@property (nonatomic, strong) UIView *accommoengagementRegard; -@property (nonatomic, strong) UITextField *monicerEssayUniverse; -@property (nonatomic, strong) UIButton *completionBtuton; -@property (nonatomic, strong) UILabel *restrictionSequencignation; -@end - -@implementation YUMIManeConsumerAbstractNickRegardGovernancer -- (void)viewDidLoad { - [super viewDidLoad]; - [self setEvents]; - [self setUpwardsUI]; - [self initChildLyRestrictions]; - -} - -#pragma mark -UI -- (void)setUpwardsUI { - self.title = YMLocalizedString(@"YUMI_Mine_User_Info_Nick_View_Controller_0"); - UIBarButtonItem *completeItem = [[UIBarButtonItem alloc] initWithCustomView:self.completionBtuton]; - self.navigationItem.rightBarButtonItem = completeItem; - [self.view addSubview:self.accommoengagementRegard]; - [self.accommoengagementRegard addSubview:self.monicerEssayUniverse]; - [self.view addSubview:self.restrictionSequencignation]; - self.monicerEssayUniverse.text = self.nick; - self.restrictionSequencignation.text = [NSString stringWithFormat:@"%ld", (long)(maxCount - self.nick.length)]; -} - -- (void)initChildLyRestrictions { - [self.accommoengagementRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(20); - make.left.mas_equalTo(self.view).offset(15); - make.right.mas_equalTo(self.view).offset(-15); - make.height.mas_equalTo(35); - }]; - [self.monicerEssayUniverse mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.accommoengagementRegard); - make.left.mas_equalTo(self.accommoengagementRegard).offset(5); - make.right.mas_equalTo(self.accommoengagementRegard); - make.height.mas_equalTo(35); - }]; - [self.restrictionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.monicerEssayUniverse.mas_bottom).offset(8); - make.right.mas_equalTo(self.monicerEssayUniverse); - }]; -} - -- (void)setEvents { - @weakify(self) - [self.monicerEssayUniverse.rac_textSignal subscribeNext:^(NSString * _Nullable x) { - @strongify(self); - [self monicerEssayPreadominantFilter:x]; - self.restrictionSequencignation.text = [NSString stringWithFormat:@"%ld", (long)(maxCount - self.monicerEssayUniverse.text.length)]; - }]; - RAC(self.completionBtuton, enabled) = [RACSignal combineLatest:@[self.monicerEssayUniverse.rac_textSignal] reduce:^id _Nonnull(NSString *text){ - return @(text.length > 0 && text.length <= maxCount); - }]; -} - -- (void)monicerEssayPreadominantFilter:(NSString *)nickTitle{ - NSString *toBeString = nickTitle; - NSString *lang = [self.monicerEssayUniverse.textInputMode primaryLanguage]; - if ([lang isEqualToString:@"zh-Hans"]){ - - UITextRange *selectedRange = [self.monicerEssayUniverse markedTextRange]; - UITextPosition *position = [self.monicerEssayUniverse positionFromPosition:selectedRange.start offset:0]; - - if (!position){ - if (toBeString.length > 15){ - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Mine_User_Info_Nick_View_Controller_1")]; - NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:15]; - if (rangeIndex.length == 1){ - self.monicerEssayUniverse.text = [toBeString substringToIndex:15]; - }else{ - NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, 15)]; - self.monicerEssayUniverse.text = [toBeString substringWithRange:rangeRange]; - } - } - } - }else{ - if (toBeString.length > 15){ - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Mine_User_Info_Nick_View_Controller_2")]; - NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:15]; - if (rangeIndex.length == 1){ - self.monicerEssayUniverse.text = [toBeString substringToIndex:15]; - }else{ - NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, 15)]; - self.monicerEssayUniverse.text = [toBeString substringWithRange:rangeRange]; - } - } - } -} -#pragma mark - Event Response -- (void)implementtowardsionBtutonPerformance:(UIButton *)sender { - [self.navigationController popViewControllerAnimated:YES]; - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeConsumerAbstractMonicerRegardGovernancer:updateNick:)]) { - [self.delegate fBCManeConsumerAbstractMonicerRegardGovernancer:self updateNick:self.monicerEssayUniverse.text]; - } -} -#pragma mark - getter && setter -- (UIView *)accommoengagementRegard { - if (!_accommoengagementRegard) { - _accommoengagementRegard = [[UIView alloc] init]; - _accommoengagementRegard.layer.cornerRadius = 5; - _accommoengagementRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - } - return _accommoengagementRegard; -} - -- (UITextField *)monicerEssayUniverse { - if (!_monicerEssayUniverse) { - _monicerEssayUniverse = [[UITextField alloc] init]; - _monicerEssayUniverse.clearButtonMode = UITextFieldViewModeAlways; - _monicerEssayUniverse.font = [UIFont systemFontOfSize:14]; - _monicerEssayUniverse.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _monicerEssayUniverse.layer.cornerRadius = 5; - } - return _monicerEssayUniverse; -} - -- (UIButton *)completionBtuton { - if (!_completionBtuton) { - _completionBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_completionBtuton setFrame:CGRectMake(0, 0, 50, 30)]; - [_completionBtuton setTitle:YMLocalizedString(@"YUMI_Mine_User_Info_Nick_View_Controller_3") forState:UIControlStateNormal]; - [_completionBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateNormal]; - [_completionBtuton setTitleColor:[DJDKMIMOMColor prohibitionBtutonEssayPrettify] forState:UIControlStateDisabled]; - _completionBtuton.titleLabel.font = [UIFont systemFontOfSize:13]; - [_completionBtuton addTarget:self action:@selector(implementtowardsionBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _completionBtuton; -} - -- (UILabel *)restrictionSequencignation { - if (!_restrictionSequencignation) { - _restrictionSequencignation = [[UILabel alloc] init]; - _restrictionSequencignation.font = [UIFont systemFontOfSize:14]; - _restrictionSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _restrictionSequencignation.text = @"0/15"; - } - return _restrictionSequencignation; -} - -@end diff --git a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractPresentRamparatMetroRegardGovernancer.h b/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractPresentRamparatMetroRegardGovernancer.h deleted file mode 100644 index 2e9a1584..00000000 --- a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractPresentRamparatMetroRegardGovernancer.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YMMineUserInfoGiftWalllSubViewController.h -// YUMI -// -// Created by YUMI on 2022/6/15. -// - -#import "MvpRegardGovernancer.h" -#import -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, PresentWallRegardGenre) { - - PresentWallRegardGenre_Normal = 1, - - PresentWallRegardGenre_Lucky = 2, -}; - -@interface YUMIManeConsumerAbstractPresentRamparatMetroRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,assign) PresentWallRegardGenre type; -@property (nonatomic,copy) NSString *consumerCid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractPresentRamparatMetroRegardGovernancer.m b/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractPresentRamparatMetroRegardGovernancer.m deleted file mode 100644 index 661e790f..00000000 --- a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractPresentRamparatMetroRegardGovernancer.m +++ /dev/null @@ -1,96 +0,0 @@ -// -// YMMineUserInfoGiftWalllSubViewController.m -// YUMI -// -// Created by YUMI on 2022/6/15. -// - -#import "YUMIManeConsumerAbstractPresentRamparatMetroRegardGovernancer.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "YUMIManeConsumerAbstractPresentRamparatAssembletionRegardElement.h" -#import "YUMIUnionDispossessAssembletionRegardElement.h" -#import "YUMIManeConsumerAbstractPresentRamparatExternalizer.h" -#import "FBCManeConsumerAbstractPresentWallCeremony.h" - -@interface YUMIManeConsumerAbstractPresentRamparatMetroRegardGovernancer () -@property (nonatomic,strong) UICollectionView *collectionView; -@property (nonatomic,strong) NSArray *datasource; -@end - -@implementation YUMIManeConsumerAbstractPresentRamparatMetroRegardGovernancer - -- (__kindof id)producePresimport { - return [[YUMIManeConsumerAbstractPresentRamparatExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self.presimport acquireConsumerPresentRampartowards:self.consumerCid giftType:self.type]; - [self initSubViews]; - [self initChildLyRestrictions]; -} -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.collectionView]; -} - -- (void)initChildLyRestrictions { - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { - return self.datasource.count > 0 ? CGSizeMake(74, 120) : CGSizeMake(KScreenWidth, 500); -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMIManeConsumerAbstractPresentRamparatAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIManeConsumerAbstractPresentRamparatAssembletionRegardElement class]) forIndexPath:indexPath]; - ConsumerPresentRamparatAbstractMatrix * giftInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.giftInfo = giftInfo; - return cell; - - } - YUMIUnionDispossessAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIUnionDispossessAssembletionRegardElement class]) forIndexPath:indexPath]; - return cell; -} - -#pragma mark - JXCategoryListContentViewDelegate -- (UIView *)listView { - return self.view; -} - -#pragma mark - FBCManeConsumerAbstractPresentWallCeremony -- (void)acquireConsumerPresentRampartowardsAccomplishment:(NSArray *)giftList { - self.datasource = giftList; - [self.collectionView reloadData]; -} - -#pragma mark - Getters And Setters -- (UICollectionView *)collectionView{ - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.sectionInset = UIEdgeInsetsMake(15, 15, 15, 15); - layout.minimumInteritemSpacing = (CGFloat)(KScreenWidth - 15 * 2 -74* 4 - 5) / 3.0; - layout.minimumLineSpacing = 30; - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.backgroundColor = [UIColor clearColor]; - [_collectionView registerClass:[YUMIManeConsumerAbstractPresentRamparatAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIManeConsumerAbstractPresentRamparatAssembletionRegardElement class])]; - [_collectionView registerClass:[YUMIUnionDispossessAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIUnionDispossessAssembletionRegardElement class])]; - } - return _collectionView; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractPresentRamparatRegardGovernancer.h b/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractPresentRamparatRegardGovernancer.h deleted file mode 100644 index b88e0333..00000000 --- a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractPresentRamparatRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineGiftWallViewController.h -// YUMI -// -// Created by YUMI on 2022/4/14. -// - -#import "BaseRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeConsumerAbstractPresentRamparatRegardGovernancer : BaseRegardGovernancer -@property (nonatomic,copy) NSString *consumerCid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractPresentRamparatRegardGovernancer.m b/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractPresentRamparatRegardGovernancer.m deleted file mode 100644 index 2b5bf56a..00000000 --- a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractPresentRamparatRegardGovernancer.m +++ /dev/null @@ -1,139 +0,0 @@ -// -// YMMineGiftWallViewController.m -// YUMI -// -// Created by YUMI on 2022/4/14. -// - -#import "YUMIManeConsumerAbstractPresentRamparatRegardGovernancer.h" -#import -#import -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "UIImage+Utils.h" -#import "YUMIManeConsumerAbstractPresentRamparatMetroRegardGovernancer.h" - - -@interface YUMIManeConsumerAbstractPresentRamparatRegardGovernancer () -@property (nonatomic, strong) NSArray *titles; -@property (nonatomic, strong) JXCategoryTitleView *titleView; -@property (nonatomic, strong) JXCategoryListContainerView *containerView; -@property (nonatomic,strong) YUMIManeConsumerAbstractPresentRamparatMetroRegardGovernancer *ordinaryPresentVewC; -@property (nonatomic,strong) YUMIManeConsumerAbstractPresentRamparatMetroRegardGovernancer *fortunatePresentVewC; -@end - -@implementation YUMIManeConsumerAbstractPresentRamparatRegardGovernancer -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; -} -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Mine_User_Info_Gift_Wall_View_Controller_0"); - [self.view addSubview:self.titleView]; - [self.view addSubview:self.containerView]; -} - -- (void)initChildLyRestrictions { - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.view); - make.width.mas_equalTo(100 * 2 + 20); - make.height.mas_equalTo(30); - make.top.mas_equalTo(self.view).offset(10); - }]; - - [self.containerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.top.mas_equalTo(self.titleView.mas_bottom).offset(10); - }]; -} - -#pragma mark - JXCategoryViewDelegate -- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { - return self.titles.count; -} - -- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { - if (index == 0) { - return self.ordinaryPresentVewC; - } else { - return self.fortunatePresentVewC; - } -} - -- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { - - self.navigationController.interactivePopGestureRecognizer.enabled = (index == 0); -} - -#pragma mark - Getters And Setters -- (void)setConsumerCid:(NSString *)consumerCid { - _consumerCid = consumerCid; - self.ordinaryPresentVewC.consumerCid = _consumerCid; - self.fortunatePresentVewC.consumerCid = _consumerCid; -} - -- (JXCategoryTitleView *)titleView { - if (!_titleView) { - _titleView = [[JXCategoryTitleView alloc] init]; - _titleView.delegate = self; - _titleView.titles = self.titles; - _titleView.backgroundColor = [UIColor clearColor]; - _titleView.titleColor = [DJDKMIMOMColor instantEssayPrettify]; - _titleView.titleSelectedColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleView.titleFont = [UIFont systemFontOfSize:12]; - _titleView.titleSelectedFont = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; - _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; - _titleView.defaultSelectedIndex = 0; - _titleView.cellSpacing = 20; - _titleView.cellWidthIncrement = 5; - _titleView.cellWidth = 60; - _titleView.listContainer = self.containerView; - - JXCategoryIndicatorImageView *burlywoodRegard = [[JXCategoryIndicatorImageView alloc] init]; - burlywoodRegard.indicatorImageViewSize = CGSizeMake(60, 8); - burlywoodRegard.verticalMargin = 6; - burlywoodRegard.indicatorImageView.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFFC000), UIColorFromRGB(0xFFD15A)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(60, 8)]; - burlywoodRegard.indicatorImageView.layer.masksToBounds = YES; - burlywoodRegard.indicatorImageView.layer.cornerRadius = 4; - _titleView.indicators = @[burlywoodRegard]; - } - return _titleView; -} - -- (JXCategoryListContainerView *)containerView { - if (!_containerView) { - _containerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; - _containerView.defaultSelectedIndex = 0; - } - return _containerView; -} - -- (NSArray *)titles { - if (!_titles) { - _titles = @[@"普通礼物", YMLocalizedString(@"YUMI_Mine_User_Info_Gift_Wall_View_Controller_2")]; - } - return _titles; -} - -- (YUMIManeConsumerAbstractPresentRamparatMetroRegardGovernancer *)ordinaryPresentVewC { - if (!_ordinaryPresentVewC) { - _ordinaryPresentVewC = [[YUMIManeConsumerAbstractPresentRamparatMetroRegardGovernancer alloc] init]; - _ordinaryPresentVewC.type = PresentWallRegardGenre_Normal; - } - return _ordinaryPresentVewC; -} - -- (YUMIManeConsumerAbstractPresentRamparatMetroRegardGovernancer *)fortunatePresentVewC { - if (!_fortunatePresentVewC) { - _fortunatePresentVewC = [[YUMIManeConsumerAbstractPresentRamparatMetroRegardGovernancer alloc] init]; - _fortunatePresentVewC.type = PresentWallRegardGenre_Lucky; - } - return _fortunatePresentVewC; -} - -@end diff --git a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractRegardGovernancer.h b/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractRegardGovernancer.h deleted file mode 100644 index c0190e38..00000000 --- a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// MineInfoViewController.h -// YUMI -// -// Created by YUMI on 2021/9/22. -// - -#import "MvpRegardGovernancer.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeConsumerAbstractRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,assign) NSInteger uid; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractRegardGovernancer.m b/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractRegardGovernancer.m deleted file mode 100644 index 19897498..00000000 --- a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAbstractRegardGovernancer.m +++ /dev/null @@ -1,480 +0,0 @@ -// -// MineInfoViewController.m -// YUMI -// -// Created by YUMI on 2021/9/22. -// - -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -#import -#import -#import -#import -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "AccountAbstractStorage.h" -#import "MKJPopup.h" -#import "YUMIHtmlUrl.h" -#import "YUMICommunicationSolitaireDisporterExecutive.h" -#import "UIImage+Utils.h" -#import "YUMIConstant.h" -#import "NEMCCommunicationUtils.h" -#import "ClientDisposition.h" -#import "XNDJTBWGLoadingTool.h" -#import "ManeCommunicationSolitaireStatementAbstractMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "YUMIManeConsumerAbstractTabulationRegardElement.h" -#import "YUMIManeConsumerAbstractIntelligencerRegard.h" -#import "YUMIManeConsumerAbstractCustomNevRegard.h" -#import "YUMIManeConsumerAbstractReputationSolitaireRegard.h" -#import "YUMIManeConsumerAbstractExternalizer.h" -#import "FBCManeConsumerAbstractCeremony.h" -#import "ChamberHostRepresendtation.h" -#import "YUMIManeConsumerAbstractCompileRegardGovernancer.h" -#import "YUMITissueRegardGovernancer.h" -#import "InterlocutionRegardGovernancer.h" -#import "YUMIChamberRegardGovernancer.h" -#import "YUMIManeConsumerAtomicRegardGovernancer.h" -#import "YUMISeparationsManeRegardGovernancer.h" - -@interface YUMIManeConsumerAbstractRegardGovernancer () -@property (nonatomic, strong) JXCategoryTitleView *titleView; -@property (nonatomic, strong) JXCategoryIndicatorImageView *burlywoodRegard; -@property (nonatomic, strong) JXPagerView *pagingRegard; -@property (nonatomic, strong) NSArray *titles; -@property (nonatomic,strong) YUMIManeConsumerAbstractIntelligencerRegard *intelligenceRegard; -@property (nonatomic,strong) YUMIManeConsumerAbstractCustomNevRegard *nevRegard; -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@property (nonatomic,strong) UIStackView *extremeHierarchyRegard; -@property (nonatomic,strong) UIButton *chinwagBtuton; -@property (nonatomic,strong) UIButton *considerationBtuton; -@property (nonatomic,strong) YUMIManeConsumerAtomicRegardGovernancer *consumerAtoloudspeakerVewC; -@property (nonatomic,strong) YUMISeparationsManeRegardGovernancer *reminiscenceVewC; -@property (nonatomic,strong) YUMIManeConsumerAbstractReputationSolitaireRegard *reputationRegard; -@end - -@implementation YUMIManeConsumerAbstractRegardGovernancer - -- (YUMIManeConsumerAbstractExternalizer *)producePresimport { - return [[YUMIManeConsumerAbstractExternalizer alloc] init]; -} - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - if (self.uid > 0) { - [self initHyperessayDemand]; - } -} - -- (void)viewWillDisappear:(BOOL)animated { - [super viewWillDisappear:animated]; - if (self.reputationRegard.isPlaying) { - [[YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance] suspeindManual]; - } -} - -- (void)viewDidLayoutSubviews { - [super viewDidLayoutSubviews]; - self.pagingRegard.frame = self.view.bounds; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.pagingRegard]; - [self.view addSubview:self.nevRegard]; - [self.view addSubview:self.reputationRegard]; - if (self.uid != [AccountAbstractStorage instance].acquireCid.integerValue) { - [self.view addSubview:self.extremeHierarchyRegard]; - [self.extremeHierarchyRegard addArrangedSubview:self.chinwagBtuton]; - [self.extremeHierarchyRegard addArrangedSubview:self.considerationBtuton]; - - [self.extremeHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view).inset(25); - make.height.mas_equalTo(36); - make.bottom.mas_equalTo(self.view).offset(-kSafeAreaBottomHeight - 15); - }]; - } -} - -- (void)initChildLyRestrictions { - [self.nevRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.height.mas_equalTo(kNavigationHeight); - }]; - - [self.reputationRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.view); - make.top.mas_equalTo(self.view.mas_safeAreaLayoutGuideTop).offset(176); - make.size.mas_equalTo(CGSizeMake(65, 25)); - }]; -} - -- (void)initHyperessayDemand { - NSString *uid = [NSString stringWithFormat:@"%ld", self.uid]; - - - [self.presimport acquireConsumerAbstractAboutCid:uid]; - - [self.presimport acquireConsumerConsidertowardsionDeclare:uid]; - - - [self.presimport acquireConsumerSpecificAbstractAboutCid:uid]; - - NSString * myUid = [AccountAbstractStorage instance].acquireCid; - - if (![uid isEqualToString:myUid]) { - - [self.presimport acquireConsumerAbstractAboutCid:myUid]; - } -} - -#pragma mark - 拉黑 移除黑名单 -- (void)EvidenceRightNevShank { - NSMutableArray *array = [NSMutableArray array]; - NSString *uid = [NSString stringWithFormat:@"%ld",self.uid]; - MKJActionSheetDisposition *report = [MKJActionSheetDisposition normalTitle:YMLocalizedString(@"YUMI_Mine_User_Info_View_Controller_0") ticktackPerformance:^{ - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMITissueRegardGovernancer *vc = [[YUMITissueRegardGovernancer alloc]init]; - NSString *urlstr = [NSString stringWithFormat:@"%@?reportUid=%@&source=PERSONAL",URLWithType(kReportRoomURL),uid]; - vc.url = urlstr; - [self.navigationController pushViewController:vc animated:YES]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Mine_User_Info_View_Controller_1")]; - } - - }]; - - MKJActionSheetDisposition *black = [MKJActionSheetDisposition normalTitle:YMLocalizedString(@"YUMI_Mine_User_Info_View_Controller_2") ticktackPerformance:^{ - [self accelertowardseOrTransltowardseDenigrtowardse:NO uid:uid]; - }]; - - [array addObjectsFromArray:@[report, black]]; - - BOOL isInBlackList = [[NIMSDK sharedSDK].userManager isUserInBlackList:uid] || [NEMCCommunicationUtils isHLOfficalSequenceription:[NSString stringWithFormat:@"%ld", self.uid]]; - if (isInBlackList) { - [array removeObject:black]; - } - [MKJPopup performanceSheetAboutProvisions:array]; -} - - -- (void)accelertowardseOrTransltowardseDenigrtowardse:(BOOL)isRemove uid:(NSString *)uid { - NSString *title; - NSString *message; - if (isRemove) { - title = YMLocalizedString(@"YUMI_Mine_User_Info_View_Controller_3"); - message = YMLocalizedString(@"YUMI_Mine_User_Info_View_Controller_4"); - }else{ - title = YMLocalizedString(@"YUMI_Mine_User_Info_View_Controller_5"); - message = YMLocalizedString(@"YUMI_Mine_User_Info_View_Controller_6"); - } - - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.title = title; - config.message = message; - - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - if (isRemove) { - [[NIMSDK sharedSDK].userManager removeFromBlackBlackList:uid completion:^(NSError * _Nullable error) { - if (error == nil) { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Mine_User_Info_View_Controller_7")]; - } - }]; - } else { - [[NIMSDK sharedSDK].userManager addToBlackList:uid completion:^(NSError * _Nullable error) { - if (error == nil) { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Mine_User_Info_View_Controller_8")]; - } - }]; - } - } cancelHandler:^{ - }]; -} - -#pragma mark - JXCategoryViewDelegate -- (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView { - return 440; -} - -- (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView { - return self.intelligenceRegard; -} - -- (NSUInteger)heightForPinSectionHeaderInPagerView:(JXPagerView *)pagerView { - return 50; -} - -- (UIView *)viewForPinSectionHeaderInPagerView:(JXPagerView *)pagerView { - return self.titleView; -} - -- (NSInteger)numberOfListsInPagerView:(JXPagerView *)pagerView { - return self.titles.count; -} - - -- (id)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index { - UIViewController *viewController; - if (index == 0) { - return self.consumerAtoloudspeakerVewC; - } else { - return self.reminiscenceVewC; - } - return (id )viewController; -} - -#pragma mark - JXPagerMainTableViewGestureDelegate -- (BOOL)mainTableViewGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { - - if (otherGestureRecognizer.view.tag == 1005 || otherGestureRecognizer.view.tag == 1009) { - return NO; - } - return [gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] && [otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]; -} - -#pragma mark - FBCManeCustomNevRegardRepresendtation -- (void)fBCManeIndividualityNevRegard:(YUMIManeConsumerAbstractCustomNevRegard *)view didClickEditButton:(UIButton *)sender { - if (sender.isSelected) { - YUMIManeConsumerAbstractCompileRegardGovernancer * editVC = [[YUMIManeConsumerAbstractCompileRegardGovernancer alloc] init]; - [self.navigationController pushViewController:editVC animated:YES]; - } else { - [self EvidenceRightNevShank]; - } -} - -- (void)fBCManeIndividualityNevRegard:(YUMIManeConsumerAbstractCustomNevRegard *)view didClickBackButton:(UIButton *)sender { - [self.navigationController popViewControllerAnimated:YES]; -} - -#pragma mark - FBCManeConsumerAbstractIntelligencerRegardRepresendtation -- (void)fBCManeConsumerAbstractIntelligencerRegard:(YUMIManeConsumerAbstractIntelligencerRegard *)view didClickGoToRoom:(NSString *)roomUid { - if (roomUid.length > 0 ) { - - [self.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj isKindOfClass:[YUMIChamberRegardGovernancer class]]) { - [self.navigationController popToRootViewControllerAnimated:NO]; - YUMIChamberRegardGovernancer * rooomVC = obj; - [rooomVC exitRoom]; - *stop = YES; - } - }]; - [YUMIChamberRegardGovernancer unfoildChamber:roomUid viewController:self]; - } -} - -#pragma mark - YUMI_MineUserDataViewControllerDelegate -- (void)fBCManeConsumerTowardsoloudspeakerRegardGovernancer:(YUMIManeConsumerAtomicRegardGovernancer *)viewController didGetVoiceSuccess:(ManeCommunicationSolitaireStatementAbstractMatrix *)voiceCard { - if (voiceCard && [voiceCard.cardId isEqualToString:@"8"]) { - self.reputationRegard.hidden = NO; - self.reputationRegard.reputationAbstract = voiceCard; - } else { - self.reputationRegard.hidden = YES; - } -} - -#pragma mark - FBCManeConsumerAbstractCeremony -- (void)dwellEarnConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo { - if (userInfo.uid == self.uid) { - self.userInfo = userInfo; - self.intelligenceRegard.userInfo = userInfo; - } else { - if (!userInfo.userVipInfoVO.lookHomepageHide) { - NSString * uid = [NSString stringWithFormat:@"%ld", self.uid]; - [self.presimport visitConsumer:uid]; - } - } -} - -- (void)onacquireSpecificAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo { - self.consumerAtoloudspeakerVewC.userInfo = userInfo; - self.reminiscenceVewC.dynamicInfo = userInfo.dynamicInfo; - self.intelligenceRegard.roomUid = userInfo.roomUid; -} - -- (void)acquireConsidertowardsionDeclareAccomplishment:(BOOL)status { - self.considerationBtuton.selected = status; -} - -- (void)considertowardsionConsumerAccomplishment:(BOOL)status { - self.considerationBtuton.selected = status; -} - -#pragma mark - Event Response -- (void)chinwagBtutonPerformance:(UIButton *)sender { - NSString * sessionId = [NSString stringWithFormat:@"%ld",self.uid]; - NIMSession * session = [NIMSession session:sessionId type:NIMSessionTypeP2P]; - InterlocutionRegardGovernancer * sessionVC = [[InterlocutionRegardGovernancer alloc] initWithSession:session]; - [self.navigationController pushViewController:sessionVC animated:YES]; -} - -- (void)considertowardsionBtutonPerformance:(UIButton *)sender { - NSString *uid = [NSString stringWithFormat:@"%ld", self.uid]; - [self.presimport considertowardsionConsumer:uid state:!sender.selected]; -} - -#pragma mark - Getters And Setters -- (void)setUid:(NSInteger)uid { - _uid = uid; - if (_uid > 0) { - if (_uid == [AccountAbstractStorage instance].acquireCid.integerValue) { - [self.nevRegard.compileBtuton setTitle:YMLocalizedString(@"YUMI_Mine_User_Info_View_Controller_9") forState:UIControlStateNormal]; - [self.nevRegard.compileBtuton setImage:[UIImage new] forState:UIControlStateNormal]; - } else { - [self.nevRegard.compileBtuton setTitle:@"" forState:UIControlStateNormal]; - [self.nevRegard.compileBtuton setImage:[UIImage imageNamed:@"yumi_center_user_gen_edit"] forState:UIControlStateNormal]; - } - self.nevRegard.compileBtuton.selected = _uid == [AccountAbstractStorage instance].acquireCid.integerValue; - NSString * uidStr = [NSString stringWithFormat:@"%ld", uid]; - self.consumerAtoloudspeakerVewC.consumerCid = uidStr; - [self.presimport acquireConsumerAbstractAboutCid:uidStr]; - } -} - - -- (YUMIManeConsumerAbstractIntelligencerRegard *)intelligenceRegard { - if (!_intelligenceRegard) { - _intelligenceRegard = [[YUMIManeConsumerAbstractIntelligencerRegard alloc] init]; - _intelligenceRegard.delegate = self; - } - return _intelligenceRegard; -} - -- (YUMIManeConsumerAbstractCustomNevRegard *)nevRegard { - if (!_nevRegard) { - _nevRegard = [[YUMIManeConsumerAbstractCustomNevRegard alloc] init]; - _nevRegard.delegate = self; - } - return _nevRegard; -} - -- (UIStackView *)extremeHierarchyRegard { - if (!_extremeHierarchyRegard) { - _extremeHierarchyRegard = [[UIStackView alloc] init]; - _extremeHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _extremeHierarchyRegard.distribution = UIStackViewDistributionFillEqually; - _extremeHierarchyRegard.alignment = UIStackViewAlignmentFill; - _extremeHierarchyRegard.spacing = 25; - } - return _extremeHierarchyRegard; -} - -- (UIButton *)chinwagBtuton { - if (!_chinwagBtuton) { - _chinwagBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_chinwagBtuton setTitle:YMLocalizedString(@"YUMI_Mine_User_Info_View_Controller_10") forState:UIControlStateNormal]; - [_chinwagBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_chinwagBtuton setImage:[UIImage imageNamed:@"yumi_center_user_gen_bottom_chat"] forState:UIControlStateNormal]; - _chinwagBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_chinwagBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _chinwagBtuton.layer.masksToBounds = YES; - _chinwagBtuton.layer.cornerRadius = 36/2; - [_chinwagBtuton addTarget:self action:@selector(chinwagBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _chinwagBtuton; -} - -- (UIButton *)considerationBtuton { - if (!_considerationBtuton) { - _considerationBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_considerationBtuton setTitle:YMLocalizedString(@"YUMI_Mine_User_Info_View_Controller_11") forState:UIControlStateNormal]; - [_considerationBtuton setTitle:YMLocalizedString(@"YUMI_Mine_User_Info_View_Controller_12") forState:UIControlStateSelected]; - [_considerationBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_considerationBtuton setTitleColor:[DJDKMIMOMColor revoctowardsionBtutonEssayPrettify] forState:UIControlStateSelected]; - [_considerationBtuton setImage:[UIImage imageNamed:@"yumi_center_user_gen_bottom_attention_normal"] forState:UIControlStateNormal]; - [_considerationBtuton setImage:[UIImage imageNamed:@"yumi_center_user_gen_bottom_attention_select"] forState:UIControlStateSelected]; - _considerationBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_considerationBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_considerationBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor revoctowardsionBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor revoctowardsionBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateSelected]; - _considerationBtuton.layer.masksToBounds = YES; - _considerationBtuton.layer.cornerRadius = 36/2; - [_considerationBtuton addTarget:self action:@selector(considertowardsionBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _considerationBtuton; -} - -- (JXCategoryTitleView *)titleView { - if (!_titleView) { - _titleView = [[JXCategoryTitleView alloc] init]; - _titleView.delegate = self; - _titleView.backgroundColor = [UIColor clearColor]; - _titleView.titleColor = [DJDKMIMOMColor essayTertiusPrettify]; - _titleView.titleSelectedColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleView.titleFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:12]; - _titleView.titleSelectedFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; - _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; - _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; - _titleView.defaultSelectedIndex = 0; - _titleView.averageCellSpacingEnabled = NO; - _titleView.contentEdgeInsetLeft = 20; - _titleView.titles = self.titles; - _titleView.cellSpacing = 20; - _titleView.titles = self.titles; - _titleView.listContainer = (id)self.pagingRegard.listContainerView; - - JXCategoryIndicatorImageView *burlywoodRegard = [[JXCategoryIndicatorImageView alloc] init]; - burlywoodRegard.indicatorImageViewSize = CGSizeMake(16, 6); - burlywoodRegard.verticalMargin = 7; - burlywoodRegard.indicatorImageView.layer.masksToBounds = YES; - burlywoodRegard.indicatorImageView.layer.cornerRadius = 3; - burlywoodRegard.indicatorImageView.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFFC000), UIColorFromRGB(0xFFF9DB)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(16, 6)]; - _titleView.indicators = @[burlywoodRegard]; - } - return _titleView; -} - -- (JXPagerView *)pagingRegard { - if (!_pagingRegard) { - _pagingRegard = [[JXPagerView alloc] initWithDelegate:self]; - _pagingRegard.backgroundColor = [UIColor clearColor]; - _pagingRegard.listContainerView.backgroundColor = [UIColor clearColor]; - _pagingRegard.mainTableView.backgroundColor = [UIColor clearColor]; - _pagingRegard.listContainerView.listCellBackgroundColor = UIColor.clearColor; - _pagingRegard.mainTableView.gestureDelegate = self; - } - return _pagingRegard; -} - -- (NSArray *)titles { - if (!_titles) { - _titles = @[YMLocalizedString(@"YUMI_Mine_User_Info_View_Controller_13"), YMLocalizedString(@"YUMI_Mine_User_Info_View_Controller_14")]; - } - return _titles; -} - -- (YUMIManeConsumerAtomicRegardGovernancer *)consumerAtoloudspeakerVewC { - if (!_consumerAtoloudspeakerVewC) { - _consumerAtoloudspeakerVewC = [[YUMIManeConsumerAtomicRegardGovernancer alloc] init]; - } - return _consumerAtoloudspeakerVewC; -} -- (YUMIManeConsumerAbstractReputationSolitaireRegard *)reputationRegard { - if (!_reputationRegard) { - _reputationRegard = [[YUMIManeConsumerAbstractReputationSolitaireRegard alloc] init]; - _reputationRegard.hidden = YES; - } - return _reputationRegard; -} - -- (YUMISeparationsManeRegardGovernancer *)reminiscenceVewC { - if (!_reminiscenceVewC) { - _reminiscenceVewC = [[YUMISeparationsManeRegardGovernancer alloc] init]; - } - return _reminiscenceVewC; -} - - - - -@end diff --git a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAtomicRegardGovernancer.h b/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAtomicRegardGovernancer.h deleted file mode 100644 index 131420f0..00000000 --- a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAtomicRegardGovernancer.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMMineUserDataViewController.h -// YUMI -// -// Created by YUMI on 2022/4/14. -// - -#import "MvpRegardGovernancer.h" -#import -NS_ASSUME_NONNULL_BEGIN -@class ConsumerAbstractMatrix, ManeCommunicationSolitaireStatementAbstractMatrix, YUMIManeConsumerAtomicRegardGovernancer; -@interface YUMIManeConsumerAtomicRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,copy) NSString *consumerCid; -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAtomicRegardGovernancer.m b/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAtomicRegardGovernancer.m deleted file mode 100644 index 04059eaa..00000000 --- a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeConsumerAtomicRegardGovernancer.m +++ /dev/null @@ -1,235 +0,0 @@ -// -// YMMineUserDataViewController.m -// YUMI -// -// Created by YUMI on 2022/4/14. -// - -#import "YUMIManeConsumerAtomicRegardGovernancer.h" -#import -#import "AccountAbstractStorage.h" -#import "YUMIMacroUitls.h" -#import "MKJPopup.h" -#import "DJDKMIMOMColor.h" -#import "YUMIHtmlUrl.h" -#import "YUMIManeAtomicCollectiveTabulationRegardElement.h" -#import "YUMIManeAtomicPresentTabulationRegardElement.h" -#import "CollectiveSpecificAbstractMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "YUMIManeConsumerAtomicExternalizer.h" -#import "FBCManeConsumerAtomicCeremony.h" -#import "YUMIManeConsumerAbstractPresentRamparatRegardGovernancer.h" -#import "YUMIManeCollectiveRegardGovernancer.h" -#import "YUMIManeUnionRegardGovernancer.h" -#import "YUMITissueRegardGovernancer.h" -@interface YUMIManeConsumerAtomicRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) CollectiveSpecificAbstractMatrix *collectiveSpecificAbstract; -@property (nonatomic,assign) BOOL isFold; -@property (nonatomic, copy) void(^scrollCallback)(UIScrollView *scrollView); -@property (nonatomic,assign) BOOL isExhibitImportCollective; -@end - -@implementation YUMIManeConsumerAtomicRegardGovernancer - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (__kindof id)producePresimport { - return [[YUMIManeConsumerAtomicExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initHettpDemand]; - [self initSubViews]; - [self initChildLyRestrictions]; -} -#pragma mark - Http -- (void)initHettpDemand { - self.isFold = YES; - self.isExhibitImportCollective = NO; - [self.presimport acquireCollectiveSpecificAbstract:self.consumerCid currentUserUid:[AccountAbstractStorage instance].acquireCid]; -} -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -- (void)EvidenceRealConstituteTowardstesttowardsionentictowardsionPromptsPrecautiousRegard { - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.message = YMLocalizedString(@"YUMI_Mine_User_Data_View_Controller_0"); - config.communicationBurlywoodIntervacuum = 4; - config.acknowledgementBtutonDisposition.title = YMLocalizedString(@"YUMI_Mine_User_Data_View_Controller_1"); - config.acknowledgementBtutonDisposition.titleColor = UIColor.whiteColor; - config.acknowledgementBtutonDisposition.backgroundColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - - MKJPrecautiousCommunicationAttributedDisposition *nameAttrConf = [[MKJPrecautiousCommunicationAttributedDisposition alloc] init]; - nameAttrConf.text = YMLocalizedString(@"YUMI_Mine_User_Data_View_Controller_2"); - nameAttrConf.color = [DJDKMIMOMColor aplictowardsionMainPrettify]; - config.communicationAttributedDisposition = @[nameAttrConf]; - - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - - } cancelHandler:^{ - }]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return 2; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - if (section == 0) { - return (self.collectiveSpecificAbstract.clan.elderUid.length > 0 || self.collectiveSpecificAbstract.hall.ownerUid.length > 0) ? 1 : 0; - } else { - return 1; - } -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if(indexPath.section == 0) { - CGFloat itemHeigh = 40 + 15; - if (self.collectiveSpecificAbstract.clan.elderUid.length > 0) { - if (self.collectiveSpecificAbstract.hall.ownerUid.length > 0) { - return self.isFold ? (itemHeigh + 68) : (itemHeigh + 68 + 60); - }else { - return (itemHeigh + 60); - } - }else { - if (self.collectiveSpecificAbstract.hall.ownerUid.length > 0) { - return (itemHeigh + 60); - } else { - return 0; - } - } - } else { - CGFloat itemAltitude = 65; - CGFloat topHeight = 100; - return itemAltitude * 3 + 10 * 3 + topHeight + 25; - } -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if(indexPath.section == 0) { - YUMIManeAtomicCollectiveTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeAtomicCollectiveTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeAtomicCollectiveTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeAtomicCollectiveTabulationRegardElement class])]; - } - cell.isExhibitImportCorridor = self.isExhibitImportCollective; - cell.delegate = self; - cell.collectiveAbstract = self.collectiveSpecificAbstract; - return cell; - } else { - YUMIManeAtomicPresentTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeAtomicPresentTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeAtomicPresentTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeAtomicPresentTabulationRegardElement class])]; - } - cell.delegate = self; - cell.userGiftWall = self.userInfo.userGiftWall; - cell.userLuckyBagGiftWall = self.userInfo.userLuckyBagGiftWall; - return cell; - } -} - -#pragma mark - FBCManeAtomicCollectiveTabulationViweElementRepresendtation -- (void)fBCManeTowardsoloudspeakerCollectiveTarbsultowardsionViweElement:(YUMIManeAtomicCollectiveTabulationRegardElement *)view didClickFold:(UIButton *)sender { - self.isFold = !sender.selected; - [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone]; -} - -- (void)fBCManeTowardsoloudspeakerCollectiveTarbsultowardsionViweElement:(YUMIManeAtomicCollectiveTabulationRegardElement *)view didClickEnter:(CollectiveSpecificAbstractMatrix *)collectiveAbstract { - [self.presimport getUserInfo:[AccountAbstractStorage instance].acquireCid success:^(ConsumerAbstractMatrix * _Nonnull info) { - if (info.isCertified) { - [self.presimport componentAplictowardsionlyCorridor:collectiveAbstract.hall.hallId]; - } else { - [self EvidenceRealConstituteTowardstesttowardsionentictowardsionPromptsPrecautiousRegard]; - } - }]; -} - -- (void)fBCManeTowardsoloudspeakerCollectiveTarbsultowardsionViweElement:(YUMIManeAtomicCollectiveTabulationRegardElement *)view didClickClanView:(CollectiveSpecificAbstractMatrix *)collectiveAbstract { - YUMIManeCollectiveRegardGovernancer * clanVC = [[YUMIManeCollectiveRegardGovernancer alloc] init]; - clanVC.uid = self.collectiveSpecificAbstract.clan.elderUid; - [self.navigationController pushViewController:clanVC animated:YES]; -} - -- (void)fBCManeTowardsoloudspeakerCollectiveTarbsultowardsionViweElement:(YUMIManeAtomicCollectiveTabulationRegardElement *)view didClickHallView:(CollectiveSpecificAbstractMatrix *)collectiveAbstract { - YUMIManeUnionRegardGovernancer * hallVC = [[YUMIManeUnionRegardGovernancer alloc] init]; - hallVC.ownerUid = collectiveAbstract.hall.ownerUid; - hallVC.instituteId = collectiveAbstract.hall.hallId; - [self.navigationController pushViewController:hallVC animated:YES]; -} - -#pragma mark - FBCManeAtomicPresentTabulationViweElementRepresendtation -- (void)fBCManeTowardsoloudspeakerPresentTarbsultowardsionViweElement:(YUMIManeAtomicPresentTabulationRegardElement *)view didClickMore:(UIButton *)sender { - YUMIManeConsumerAbstractPresentRamparatRegardGovernancer * giftWallVC = [[YUMIManeConsumerAbstractPresentRamparatRegardGovernancer alloc] init]; - giftWallVC.consumerCid = self.consumerCid; - [self.navigationController pushViewController:giftWallVC animated:YES]; -} - -#pragma mark - JXPagingViewListViewDelegate -- (UIView *)listView { - return self.view; -} - -- (UIScrollView *)listScrollView { - return self.tableView; -} - -- (void)listViewDidScrollCallback:(void (^)(UIScrollView *))callback { - self.scrollCallback = callback; -} - -- (void)scrollViewDidScroll:(UIScrollView *)scrollView { - self.scrollCallback(scrollView); -} - -#pragma mark - FBCManeConsumerAtomicCeremony -- (void)acquireCollectiveSpecificAbstractAccomplishment:(CollectiveSpecificAbstractMatrix *)collectiveSpecificAbstract universalConsumerCollectiveAbstract:(CollectiveSpecificAbstractMatrix *)universalConsumerCollectiveAbstract { - self.collectiveSpecificAbstract = collectiveSpecificAbstract; - if (universalConsumerCollectiveAbstract.clan.elderUid.length <=0 || universalConsumerCollectiveAbstract.hall.ownerUid.length <=0) { - self.isExhibitImportCollective = YES; - } else { - self.isExhibitImportCollective = NO; - } - [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone]; -} - -- (void)componentAplictowardsionlyCorridorAccomplishment { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Mine_User_Data_View_Controller_3")]; -} - -#pragma mark - Getters And Setters -- (void)setUserInfo:(ConsumerAbstractMatrix *)userInfo { - _userInfo = userInfo; - [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationNone]; -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIManeAtomicPresentTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeAtomicPresentTabulationRegardElement class])]; - [_tableView registerClass:[YUMIManeAtomicCollectiveTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeAtomicCollectiveTabulationRegardElement class])]; - } - return _tableView; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeSimpleConsumerAbstractIntelligencerRegard.h b/YuMi/Modules/YMMine/View/MineInfo/YUMIManeSimpleConsumerAbstractIntelligencerRegard.h deleted file mode 100644 index 71ed267c..00000000 --- a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeSimpleConsumerAbstractIntelligencerRegard.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// YMMineSimpleUserInfoHeaderView.h -// YUMI -// -// Created by XY on 2023/2/21. -// - -#import - -@class ConsumerAbstractMatrix; -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCManeSimpleConsumerAbstractIntelligencerRegardRepresendtation -- (void)intelligenceerRegardFurthaerPresentPerformance; -- (void)intelligenceerRegardOnlinePerformance:(NSString *)roomUid; - -@end - -@interface YUMIManeSimpleConsumerAbstractIntelligencerRegard : UIView - -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; - -@property (nonatomic,copy) NSString *roomUid; - -@property (nonatomic,weak) id delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeSimpleConsumerAbstractIntelligencerRegard.m b/YuMi/Modules/YMMine/View/MineInfo/YUMIManeSimpleConsumerAbstractIntelligencerRegard.m deleted file mode 100644 index 2f6f37c9..00000000 --- a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeSimpleConsumerAbstractIntelligencerRegard.m +++ /dev/null @@ -1,435 +0,0 @@ -// -// YMMineSimpleUserInfoHeaderView.m -// YUMI -// -// Created by XY on 2023/2/21. -// - -#import "YUMIManeSimpleConsumerAbstractIntelligencerRegard.h" -#import "NetIndicateRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import -#import -#import - -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "UIIndicateConstant.h" -#import "UIButton+EnlargeTouchArea.h" -#import "UIImage+Utils.h" - -#import "YUMIManeConsumerAbstractPresentRegard.h" - -#import "ConsumerPresentRamparatAbstractMatrix.h" -#import "ConsumerAbstractMatrix.h" - - -@interface YUMIManeSimpleConsumerAbstractIntelligencerRegard() - -@property (nonatomic, strong) NetIndicateRegard *backgroundIndicateRegard; -@property (nonatomic, strong) UIVisualEffectView *impressionRegard; -@property (nonatomic, strong) UILabel *monicerconstituteSequencignation; -@property (nonatomic, strong) UILabel *idSequencignation; -@property (nonatomic, strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic, strong) UILabel *introduceSequencignation; -@property (nonatomic, strong) UILabel *fanaticsSequencignation; -@property (nonatomic,strong) UIButton *onlineBtuton; - - -@property (nonatomic,strong) UIImageView * encourageIndicateRegard; -@property (nonatomic,strong) UIView *presentBackgroundRegard; -@property (nonatomic,strong) UIButton *arrowBtuton; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic, strong) NSArray *titles; -@property (nonatomic, strong) JXCategoryTitleView *titleView; -@property (nonatomic, strong) JXCategoryListContainerView *containerView; -@property (nonatomic,strong) YUMIManeConsumerAbstractPresentRegard *ordinaryPresentRegard; -@property (nonatomic,strong) YUMIManeConsumerAbstractPresentRegard *fortunatePresentRegard; -@property (nonatomic,strong) UILabel *dynaloudspeakerSequencignation; - -@property (nonatomic,strong) NSArray *userGiftWall; -@property (nonatomic,strong) NSArray *userLuckyBagGiftWall; - -@end - -@implementation YUMIManeSimpleConsumerAbstractIntelligencerRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self produceUI]; - } - return self; -} - -- (void)produceUI { - [self addSubview:self.backgroundIndicateRegard]; - [self.backgroundIndicateRegard addSubview:self.impressionRegard]; - [self addSubview:self.monicerconstituteSequencignation]; - [self addSubview:self.idSequencignation]; - [self addSubview:self.intelligenceportraitIndicateRegard]; - [self addSubview:self.introduceSequencignation]; - [self addSubview:self.fanaticsSequencignation]; - [self addSubview:self.onlineBtuton]; - - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.left.right.mas_equalTo(0); - make.height.mas_equalTo(260); - }]; - [self.impressionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.backgroundIndicateRegard); - }]; - [self.monicerconstituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.intelligenceportraitIndicateRegard).offset(-5); - make.left.mas_equalTo(16); - make.right.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_left).offset(-5); - }]; - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.monicerconstituteSequencignation.mas_bottom).offset(2); - make.left.mas_equalTo(self.monicerconstituteSequencignation); - make.right.mas_equalTo(self.monicerconstituteSequencignation); - }]; - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.backgroundIndicateRegard); - make.right.mas_equalTo(-16); - make.width.height.mas_equalTo(86); - }]; - [self.fanaticsSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_bottom).offset(16); - make.centerX.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.width.mas_equalTo(self.intelligenceportraitIndicateRegard); - }]; - [self.introduceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.monicerconstituteSequencignation); - make.top.mas_equalTo(self.fanaticsSequencignation); - make.right.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_left).offset(-10); - }]; - [self.onlineBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(0); - make.bottom.mas_equalTo(self.monicerconstituteSequencignation.mas_top).offset(-12); - make.width.mas_equalTo(56); - make.height.mas_equalTo(24); - }]; - - - - [self addSubview:self.encourageIndicateRegard]; - [self.encourageIndicateRegard addSubview:self.titleLabel]; - [self.encourageIndicateRegard addSubview:self.presentBackgroundRegard]; - [self.encourageIndicateRegard addSubview:self.arrowBtuton]; - [self.presentBackgroundRegard addSubview:self.titleView]; - [self.presentBackgroundRegard addSubview:self.containerView]; - [self.encourageIndicateRegard addSubview:self.dynaloudspeakerSequencignation]; - - CGFloat itemAltitude = 65; - CGFloat topHeight = 100; - CGFloat bottomHeight = 45; - CGFloat giftHeight = itemAltitude * 3 + 10 * 3 + topHeight + bottomHeight; - - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(0); - make.top.mas_equalTo(self.backgroundIndicateRegard.mas_bottom).offset(-20); - make.height.mas_equalTo(giftHeight); - }]; - - [self.presentBackgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(16); - make.right.mas_equalTo(-16); - make.top.mas_equalTo(47); - make.height.mas_equalTo(281); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageIndicateRegard).offset(16); - make.top.mas_equalTo(self.encourageIndicateRegard).offset(16); - }]; - - [self.arrowBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(13, 22)); - make.centerY.mas_equalTo(self.titleLabel); - make.right.mas_equalTo(self.encourageIndicateRegard).offset(-15); - }]; - - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.presentBackgroundRegard); - make.width.mas_equalTo(90 * 2 + 20); - make.height.mas_equalTo(50); - make.top.mas_equalTo(0); - }]; - - [self.containerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(0); - make.top.mas_equalTo(self.titleView.mas_bottom).offset(8); - make.bottom.mas_equalTo(0); - }]; - - [self.dynaloudspeakerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.titleLabel); - make.top.mas_equalTo(self.presentBackgroundRegard.mas_bottom).offset(20); - }]; - -} - -- (void)setUserInfo:(ConsumerAbstractMatrix *)userInfo { - _userInfo = userInfo; - if (_userInfo) { - self.idSequencignation.text = [NSString stringWithFormat:@"ID:%ld", (long)_userInfo.erbanNo]; - self.monicerconstituteSequencignation.text = _userInfo.nick.length > 0 ? _userInfo.nick : @""; - self.intelligenceportraitIndicateRegard.imageUrl = userInfo.avatar; - self.backgroundIndicateRegard.imageUrl = userInfo.avatar; - self.introduceSequencignation.text = _userInfo.userDesc.length > 0 ? _userInfo.userDesc : YMLocalizedString(@"YUMI_Mine_Simple_User_Info_Header_View_0"); - self.fanaticsSequencignation.text =[NSString stringWithFormat:@"粉丝:%ld", _userInfo.fansNum]; - - self.userGiftWall = self.userInfo.userGiftWall; - self.userLuckyBagGiftWall = self.userInfo.userLuckyBagGiftWall; - } -} - -- (void)setRoomUid:(NSString *)roomUid { - _roomUid = roomUid; - self.onlineBtuton.hidden = _roomUid.length <= 0; -} - -#pragma mark - JXCategoryViewDelegate -- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { - return self.titles.count; -} - -- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { - if (index == 0) { - return self.ordinaryPresentRegard; - } else { - return self.fortunatePresentRegard; - } -} -#pragma mark - Event Response -- (void)arrowBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(intelligenceerRegardFurthaerPresentPerformance)]) { - [self.delegate intelligenceerRegardFurthaerPresentPerformance]; - } -} - -- (void)onlineBtutonPerformance { - if (self.delegate && [self.delegate respondsToSelector:@selector(intelligenceerRegardOnlinePerformance:)]) { - [self.delegate intelligenceerRegardOnlinePerformance:self.roomUid]; - } -} - -#pragma mark - Getters And Setters -- (void)setUserGiftWall:(NSArray *)userGiftWall { - _userGiftWall = userGiftWall; - if (_userGiftWall.count > 12) { - NSMutableArray * array = [_userGiftWall mutableCopy]; - _userGiftWall = [array subarrayWithRange:NSMakeRange(0, 12)]; - } - self.ordinaryPresentRegard.datasource = _userGiftWall; -} - -- (void)setUserLuckyBagGiftWall:(NSArray *)userLuckyBagGiftWall { - _userLuckyBagGiftWall = userLuckyBagGiftWall; - if (_userLuckyBagGiftWall.count > 12) { - NSMutableArray * array = [_userLuckyBagGiftWall mutableCopy]; - _userLuckyBagGiftWall = [array subarrayWithRange:NSMakeRange(0, 12)]; - } - self.fortunatePresentRegard.datasource = _userLuckyBagGiftWall; -} - - -#pragma mark - 懒加载 - -- (NetIndicateRegard *)backgroundIndicateRegard { - if (!_backgroundIndicateRegard) { - _backgroundIndicateRegard = [[NetIndicateRegard alloc] init]; - _backgroundIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _backgroundIndicateRegard.clipsToBounds = YES; - } - return _backgroundIndicateRegard; -} - -- (UIVisualEffectView *)impressionRegard { - if (!_impressionRegard) { - UIBlurEffect *blur = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; - _impressionRegard = [[UIVisualEffectView alloc] initWithEffect:blur]; - _impressionRegard.alpha = 0.9; - } - return _impressionRegard; -} - -- (UILabel *)monicerconstituteSequencignation { - if (!_monicerconstituteSequencignation) { - _monicerconstituteSequencignation = [[UILabel alloc] init]; - _monicerconstituteSequencignation.textColor = UIColor.whiteColor; - _monicerconstituteSequencignation.font = [UIFont systemFontOfSize:20 weight:UIFontWeightMedium]; - } - return _monicerconstituteSequencignation; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.textColor = [UIColor.whiteColor colorWithAlphaComponent:0.4]; - _idSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; - } - return _idSequencignation; -} - -- (UILabel *)introduceSequencignation { - if (!_introduceSequencignation) { - _introduceSequencignation = [[UILabel alloc] init]; - _introduceSequencignation.textColor = UIColor.whiteColor; - _introduceSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightRegular]; - _introduceSequencignation.numberOfLines = 2; - } - return _introduceSequencignation; -} - -- (UILabel *)fanaticsSequencignation { - if (!_fanaticsSequencignation) { - _fanaticsSequencignation = [[UILabel alloc] init]; - _fanaticsSequencignation.textColor = UIColor.whiteColor; - _fanaticsSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightRegular]; - _fanaticsSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _fanaticsSequencignation; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.userInteractionEnabled = YES; - _intelligenceportraitIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _intelligenceportraitIndicateRegard.layer.borderWidth = 2; - _intelligenceportraitIndicateRegard.layer.borderColor = [UIColor.whiteColor colorWithAlphaComponent:0.4].CGColor; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 86/2; - _intelligenceportraitIndicateRegard.clipsToBounds = YES; - - } - return _intelligenceportraitIndicateRegard; -} - -- (UIButton *)onlineBtuton { - if(!_onlineBtuton) { - _onlineBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_onlineBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Simple_User_Info_Header_View_2") forState:UIControlStateNormal]; - [_onlineBtuton setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; - _onlineBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_onlineBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _onlineBtuton.layer.masksToBounds = YES; - _onlineBtuton.layer.cornerRadius = 24/2; - _onlineBtuton.layer.maskedCorners = kCALayerMaxXMinYCorner | kCALayerMaxXMaxYCorner; - [_onlineBtuton addTarget:self action:@selector(onlineBtutonPerformance) forControlEvents:UIControlEventTouchUpInside]; - _onlineBtuton.hidden = YES; - } - return _onlineBtuton; -} - -#pragma mark - 礼物部分 - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - _encourageIndicateRegard.layer.cornerRadius = 20; - _encourageIndicateRegard.layer.maskedCorners = kCALayerMinXMinYCorner | kCALayerMaxXMinYCorner; - _encourageIndicateRegard.backgroundColor =[DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - } - return _encourageIndicateRegard; -} - -- (UIView *)presentBackgroundRegard { - if (!_presentBackgroundRegard) { - _presentBackgroundRegard = [[UIView alloc] init]; - _presentBackgroundRegard.backgroundColor = UIColorFromRGB(0xF6F7F9); - _presentBackgroundRegard.layer.cornerRadius = 12; - } - return _presentBackgroundRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Mine_Simple_User_Info_Header_View_3"); - _titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -- (UIButton *)arrowBtuton { - if (!_arrowBtuton) { - _arrowBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_arrowBtuton setImage:[UIImage imageNamed:@"yumi_scope_setting_arrow"] forState:UIControlStateNormal]; - [_arrowBtuton setImage:[UIImage imageNamed:@"yumi_scope_setting_arrow"] forState:UIControlStateSelected]; - [_arrowBtuton addTarget:self action:@selector(arrowBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_arrowBtuton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:10]; - } - return _arrowBtuton; -} - -- (JXCategoryTitleView *)titleView { - if (!_titleView) { - _titleView = [[JXCategoryTitleView alloc] init]; - _titleView.delegate = self; - _titleView.titles = self.titles; - _titleView.backgroundColor = [UIColor clearColor]; - _titleView.titleColor = [DJDKMIMOMColor instantEssayPrettify]; - _titleView.titleSelectedColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - _titleView.titleFont = [UIFont systemFontOfSize:14]; - _titleView.titleSelectedFont = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; - _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; - _titleView.defaultSelectedIndex = 0; - _titleView.cellSpacing = 20; - _titleView.cellWidthIncrement = 5; - _titleView.cellWidth = 60; - _titleView.listContainer = self.containerView; - - } - return _titleView; -} - -- (JXCategoryListContainerView *)containerView { - if (!_containerView) { - _containerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; - _containerView.defaultSelectedIndex = 0; - _containerView.scrollView.tag = 1009; - } - return _containerView; -} - -- (NSArray *)titles { - if (!_titles) { - _titles = @[@"普通礼物", YMLocalizedString(@"YUMI_Mine_Simple_User_Info_Header_View_5")]; - } - return _titles; -} - -- (YUMIManeConsumerAbstractPresentRegard *)ordinaryPresentRegard { - if (!_ordinaryPresentRegard) { - _ordinaryPresentRegard = [[YUMIManeConsumerAbstractPresentRegard alloc] init]; - } - return _ordinaryPresentRegard; -} - -- (YUMIManeConsumerAbstractPresentRegard *)fortunatePresentRegard { - if (!_fortunatePresentRegard) { - _fortunatePresentRegard = [[YUMIManeConsumerAbstractPresentRegard alloc] init]; - } - return _fortunatePresentRegard; -} - -- (UILabel *)dynaloudspeakerSequencignation { - if (!_dynaloudspeakerSequencignation) { - _dynaloudspeakerSequencignation = [[UILabel alloc] init]; - _dynaloudspeakerSequencignation.text = YMLocalizedString(@"YUMI_Mine_Simple_User_Info_Header_View_6"); - _dynaloudspeakerSequencignation.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; - _dynaloudspeakerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _dynaloudspeakerSequencignation; -} - -@end diff --git a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeSimpleConsumerAbstractRegardGovernancer.h b/YuMi/Modules/YMMine/View/MineInfo/YUMIManeSimpleConsumerAbstractRegardGovernancer.h deleted file mode 100644 index fab75044..00000000 --- a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeSimpleConsumerAbstractRegardGovernancer.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMMineSimpleUserInfoViewController.h -// YUMI -// -// Created by XY on 2023/2/21. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeSimpleConsumerAbstractRegardGovernancer : MvpRegardGovernancer - -@property (nonatomic,assign) NSInteger uid; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeSimpleConsumerAbstractRegardGovernancer.m b/YuMi/Modules/YMMine/View/MineInfo/YUMIManeSimpleConsumerAbstractRegardGovernancer.m deleted file mode 100644 index 90dcc923..00000000 --- a/YuMi/Modules/YMMine/View/MineInfo/YUMIManeSimpleConsumerAbstractRegardGovernancer.m +++ /dev/null @@ -1,389 +0,0 @@ -// -// YMMineSimpleUserInfoViewController.m -// YUMI -// -// Created by XY on 2023/2/21. -// - -#import "YUMIManeSimpleConsumerAbstractRegardGovernancer.h" -#import "YUMIMacroUitls.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "AccountAbstractStorage.h" -#import "MKJPopup.h" -#import "YUMIHtmlUrl.h" -#import "YUMICommunicationSolitaireDisporterExecutive.h" -#import "UIImage+Utils.h" -#import "YUMIConstant.h" -#import "NEMCCommunicationUtils.h" -#import "NSArray+Safe.h" -#import "ClientDisposition.h" -#import "XNDJTBWGLoadingTool.h" - -#import "SeparationsStatementAbstractMatrix.h" -#import "ManeCommunicationSolitaireStatementAbstractMatrix.h" -#import "ConsumerAbstractMatrix.h" - -#import "YUMIManeConsumerAbstractExternalizer.h" -#import "FBCManeConsumerAbstractCeremony.h" -#import "ChamberHostRepresendtation.h" -#import "YUMIMomentStatementAssembletionRegardElement.h" -#import "YUMIManeConsumerAbstractCustomNevRegard.h" -#import "YUMIManeSimpleConsumerAbstractIntelligencerRegard.h" -#import "YUMIManeConsumerAbstractCompileRegardGovernancer.h" -#import "YUMITissueRegardGovernancer.h" -#import "InterlocutionRegardGovernancer.h" -#import "YUMIChamberRegardGovernancer.h" -#import "YUMIManeConsumerAtomicRegardGovernancer.h" -#import "YUMISeparationsManeRegardGovernancer.h" -#import "YUMISeparationsSpecificRegardGovernancer.h" -#import "YUMIMomentsSimpleSpecificRegardGovernancer.h" -#import "YUMIManeConsumerAbstractPresentRamparatRegardGovernancer.h" - -#define kHeaderViewHeight 615 - -@interface YUMIManeSimpleConsumerAbstractRegardGovernancer () - -@property (nonatomic, strong) UICollectionView *collectionView; -@property (nonatomic, strong) YUMIManeSimpleConsumerAbstractIntelligencerRegard *intelligenceerRegard; -@property (nonatomic,strong) YUMIManeConsumerAbstractCustomNevRegard *nevRegard; -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@property (nonatomic,strong) UIStackView *extremeHierarchyRegard; -@property (nonatomic,strong) UIButton *chinwagBtuton; -@property (nonatomic,strong) UIButton *considerationBtuton; - -@end - -@implementation YUMIManeSimpleConsumerAbstractRegardGovernancer - -- (YUMIManeConsumerAbstractExternalizer *)producePresimport { - return [[YUMIManeConsumerAbstractExternalizer alloc] init]; -} - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self produceUI]; -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - if (self.uid > 0) { - [self initHyperessayDemand]; - } -} - -- (void)viewWillDisappear:(BOOL)animated { - [super viewWillDisappear:animated]; - -} - -- (void)produceUI { - [self.view addSubview:self.collectionView]; - [self.collectionView addSubview:self.intelligenceerRegard]; - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(0); - make.left.right.mas_equalTo(0); - make.bottom.mas_equalTo(0); - }]; - - [self.view addSubview:self.nevRegard]; - [self.nevRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.height.mas_equalTo(kNavigationHeight); - }]; - - if (self.uid != [AccountAbstractStorage instance].acquireCid.integerValue) { - [self.view addSubview:self.chinwagBtuton]; - [self.chinwagBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.view); - make.height.mas_equalTo(36); - make.width.mas_equalTo(100); - make.bottom.mas_equalTo(self.view).offset(-kSafeAreaBottomHeight - 15); - }]; - } -} - -- (void)initHyperessayDemand { - NSString *uid = [NSString stringWithFormat:@"%ld", self.uid]; - - [self.presimport acquireConsumerConsidertowardsionDeclare:uid]; - - - [self.presimport acquireConsumerSpecificAbstractAboutCid:uid]; - - NSString * myUid = [AccountAbstractStorage instance].acquireCid; - - if (![uid isEqualToString:myUid]) { - - } -} - -#pragma mark - 拉黑 移除黑名单 -- (void)EvidenceRightNevShank { - NSMutableArray *array = [NSMutableArray array]; - NSString *uid = [NSString stringWithFormat:@"%ld",self.uid]; - MKJActionSheetDisposition *report = [MKJActionSheetDisposition normalTitle:YMLocalizedString(@"YUMI_Mine_Simple_User_Info_View_Controller_0") ticktackPerformance:^{ - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMITissueRegardGovernancer *vc = [[YUMITissueRegardGovernancer alloc]init]; - NSString *urlstr = [NSString stringWithFormat:@"%@?reportUid=%@&source=PERSONAL",URLWithType(kReportRoomURL),uid]; - vc.url = urlstr; - [self.navigationController pushViewController:vc animated:YES]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Mine_Simple_User_Info_View_Controller_1")]; - } - }]; - - MKJActionSheetDisposition *black = [MKJActionSheetDisposition normalTitle:YMLocalizedString(@"YUMI_Mine_Simple_User_Info_View_Controller_2") ticktackPerformance:^{ - [self accelertowardseOrTransltowardseDenigrtowardse:NO uid:uid]; - }]; - - [array addObjectsFromArray:@[report, black]]; - - BOOL isInBlackList = [[NIMSDK sharedSDK].userManager isUserInBlackList:uid] || [NEMCCommunicationUtils isHLOfficalSequenceription:[NSString stringWithFormat:@"%ld", self.uid]]; - if (isInBlackList) { - [array removeObject:black]; - } - [MKJPopup performanceSheetAboutProvisions:array]; -} - - -- (void)accelertowardseOrTransltowardseDenigrtowardse:(BOOL)isRemove uid:(NSString *)uid { - NSString *title; - NSString *message; - if (isRemove) { - title = YMLocalizedString(@"YUMI_Mine_Simple_User_Info_View_Controller_3"); - message = YMLocalizedString(@"YUMI_Mine_Simple_User_Info_View_Controller_4"); - }else{ - title = YMLocalizedString(@"YUMI_Mine_Simple_User_Info_View_Controller_5"); - message = YMLocalizedString(@"YUMI_Mine_Simple_User_Info_View_Controller_6"); - } - - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.title = title; - config.message = message; - - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - if (isRemove) { - [[NIMSDK sharedSDK].userManager removeFromBlackBlackList:uid completion:^(NSError * _Nullable error) { - if (error == nil) { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Mine_Simple_User_Info_View_Controller_7")]; - } - }]; - } else { - [[NIMSDK sharedSDK].userManager addToBlackList:uid completion:^(NSError * _Nullable error) { - if (error == nil) { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Mine_Simple_User_Info_View_Controller_8")]; - } - }]; - } - } cancelHandler:^{ - }]; -} - -#pragma mark - FBCManeCustomNevRegardRepresendtation -- (void)fBCManeIndividualityNevRegard:(YUMIManeConsumerAbstractCustomNevRegard *)view didClickEditButton:(UIButton *)sender { - if (sender.isSelected) { - YUMIManeConsumerAbstractCompileRegardGovernancer * editVC = [[YUMIManeConsumerAbstractCompileRegardGovernancer alloc] init]; - [self.navigationController pushViewController:editVC animated:YES]; - } else { - [self EvidenceRightNevShank]; - } -} - -- (void)fBCManeIndividualityNevRegard:(YUMIManeConsumerAbstractCustomNevRegard *)view didClickBackButton:(UIButton *)sender { - [self.navigationController popViewControllerAnimated:YES]; -} - -#pragma mark - FBCManeSimpleConsumerAbstractIntelligencerRegardRepresendtation -- (void)intelligenceerRegardFurthaerPresentPerformance { - if (self.uid > 0) { - YUMIManeConsumerAbstractPresentRamparatRegardGovernancer * giftWallVC = [[YUMIManeConsumerAbstractPresentRamparatRegardGovernancer alloc] init]; - giftWallVC.consumerCid = [NSString stringWithFormat:@"%ld", self.uid]; - [self.navigationController pushViewController:giftWallVC animated:YES]; - } -} - -- (void)intelligenceerRegardOnlinePerformance:(NSString *)roomUid { - if (roomUid.length > 0 ) { - - [self.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj isKindOfClass:[YUMIChamberRegardGovernancer class]]) { - [self.navigationController popToRootViewControllerAnimated:NO]; - YUMIChamberRegardGovernancer * rooomVC = obj; - [rooomVC exitRoom]; - *stop = YES; - } - }]; - [YUMIChamberRegardGovernancer unfoildChamber:roomUid viewController:self]; - } -} - -#pragma mark - FBCManeConsumerAbstractCeremony -- (void)dwellEarnConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo { - if (userInfo.uid == self.uid) { - self.userInfo = userInfo; - } else { - if (!userInfo.userVipInfoVO.lookHomepageHide) { - NSString * uid = [NSString stringWithFormat:@"%ld", self.uid]; - [self.presimport visitConsumer:uid]; - } - } -} - -- (void)onacquireSpecificAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo { - self.userInfo = userInfo; - self.intelligenceerRegard.userInfo = userInfo; - self.intelligenceerRegard.roomUid = userInfo.roomUid; - [self.collectionView reloadData]; - -} - -- (void)acquireConsidertowardsionDeclareAccomplishment:(BOOL)status { - self.considerationBtuton.selected = status; -} - -- (void)considertowardsionConsumerAccomplishment:(BOOL)status { - self.considerationBtuton.selected = status; -} - - -#pragma mark - Event Response -- (void)chinwagBtutonPerformance:(UIButton *)sender { - NSString * sessionId = [NSString stringWithFormat:@"%ld",self.uid]; - NIMSession * session = [NIMSession session:sessionId type:NIMSessionTypeP2P]; - InterlocutionRegardGovernancer * sessionVC = [[InterlocutionRegardGovernancer alloc] initWithSession:session]; - [self.navigationController pushViewController:sessionVC animated:YES]; -} - -- (void)considertowardsionBtutonPerformance:(UIButton *)sender { - NSString *uid = [NSString stringWithFormat:@"%ld", self.uid]; - [self.presimport considertowardsionConsumer:uid state:!sender.selected]; -} - - -#pragma mark - UICollectionView - -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.userInfo.dynamicInfo.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMIMomentStatementAssembletionRegardElement *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass(YUMIMomentStatementAssembletionRegardElement.self) forIndexPath:indexPath]; - SeparationsAbstractMatrix * monentsInfo = [self.userInfo.dynamicInfo secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.monentsInfo = monentsInfo; - return cell; -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - if (self.userInfo.dynamicInfo.count > 0) { - - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMISeparationsSpecificRegardGovernancer * detailVC = [[YUMISeparationsSpecificRegardGovernancer alloc] init]; - SeparationsAbstractMatrix * monentsInfo = [self.userInfo.dynamicInfo secureGroalTowardsIndictowardsrix1:indexPath.row]; - detailVC.monentsInfo = monentsInfo; - [self.navigationController pushViewController:detailVC animated:YES]; - }else{ - YUMIMomentsSimpleSpecificRegardGovernancer * detailVC = [[YUMIMomentsSimpleSpecificRegardGovernancer alloc] init]; - SeparationsAbstractMatrix * monentsInfo = [self.userInfo.dynamicInfo secureGroalTowardsIndictowardsrix1:indexPath.row]; - detailVC.monentsInfo = monentsInfo; - [self.navigationController pushViewController:detailVC animated:YES]; - } - } -} - -#pragma mark - 懒加载 - -- (UICollectionView *)collectionView { - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.scrollDirection = UICollectionViewScrollDirectionVertical; - CGFloat width = (KScreenWidth - 16 -13 -16)/2.0; - CGFloat height = 220.0/165.0*width; - layout.itemSize = CGSizeMake(width, height); - layout.minimumLineSpacing = 12.0; - layout.minimumInteritemSpacing = 13.0; - layout.sectionInset = UIEdgeInsetsMake(12, 16, 12, 16); - - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.backgroundColor = UIColor.whiteColor; - _collectionView.alwaysBounceVertical = YES; - [_collectionView registerClass:[YUMIMomentStatementAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass(YUMIMomentStatementAssembletionRegardElement.self)]; - _collectionView.delegate = self; - _collectionView.dataSource = self; - _collectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - - _collectionView.contentInset = UIEdgeInsetsMake(kHeaderViewHeight, 0, 0, 0); - - } - return _collectionView; -} - -- (YUMIManeSimpleConsumerAbstractIntelligencerRegard *)intelligenceerRegard { - if (!_intelligenceerRegard) { - _intelligenceerRegard = [[YUMIManeSimpleConsumerAbstractIntelligencerRegard alloc] init]; - _intelligenceerRegard.frame = CGRectMake(0, -kHeaderViewHeight, KScreenWidth, kHeaderViewHeight); - _intelligenceerRegard.delegate = self; - } - return _intelligenceerRegard; -} - -- (YUMIManeConsumerAbstractCustomNevRegard *)nevRegard { - if (!_nevRegard) { - _nevRegard = [[YUMIManeConsumerAbstractCustomNevRegard alloc] init]; - _nevRegard.delegate = self; - } - return _nevRegard; -} - -- (UIStackView *)extremeHierarchyRegard { - if (!_extremeHierarchyRegard) { - _extremeHierarchyRegard = [[UIStackView alloc] init]; - _extremeHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _extremeHierarchyRegard.distribution = UIStackViewDistributionFillEqually; - _extremeHierarchyRegard.alignment = UIStackViewAlignmentFill; - _extremeHierarchyRegard.spacing = 25; - } - return _extremeHierarchyRegard; -} - -- (UIButton *)chinwagBtuton { - if (!_chinwagBtuton) { - _chinwagBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_chinwagBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Simple_User_Info_View_Controller_9") forState:UIControlStateNormal]; - [_chinwagBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - _chinwagBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_chinwagBtuton setBackgroundColor:[DJDKMIMOMColor aplictowardsionMainPrettify]]; - _chinwagBtuton.layer.masksToBounds = YES; - _chinwagBtuton.layer.cornerRadius = 36/2; - [_chinwagBtuton addTarget:self action:@selector(chinwagBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _chinwagBtuton; -} - -- (UIButton *)considerationBtuton { - if (!_considerationBtuton) { - _considerationBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_considerationBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Simple_User_Info_View_Controller_10") forState:UIControlStateNormal]; - [_considerationBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Simple_User_Info_View_Controller_11") forState:UIControlStateSelected]; - [_considerationBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_considerationBtuton setTitleColor:[DJDKMIMOMColor revoctowardsionBtutonEssayPrettify] forState:UIControlStateSelected]; - [_considerationBtuton setImage:[UIImage imageNamed:@"yumi_center_user_gen_bottom_attention_normal"] forState:UIControlStateNormal]; - [_considerationBtuton setImage:[UIImage imageNamed:@"yumi_center_user_gen_bottom_attention_select"] forState:UIControlStateSelected]; - _considerationBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_considerationBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_considerationBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor revoctowardsionBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor revoctowardsionBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateSelected]; - _considerationBtuton.layer.masksToBounds = YES; - _considerationBtuton.layer.cornerRadius = 36/2; - _considerationBtuton.hidden = YES; - [_considerationBtuton addTarget:self action:@selector(considertowardsionBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _considerationBtuton; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Noble/Api/Api+NobleCenter.h b/YuMi/Modules/YMMine/View/Noble/Api/Api+NobleCenter.h new file mode 100644 index 00000000..b01800df --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/Api/Api+NobleCenter.h @@ -0,0 +1,51 @@ +// +// Api+NobleCenter.h +// xplan-ios +// +// Created by GreenLand on 2021/12/28. +// + +#import "Api.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface Api (NobleCenter) + +/// 贵族中心等级列表 +/// @param completion 完成 ++ (void)nobleCenterLevelList:(HttpRequestHelperCompletion)completion; + +///获取开通贵族产品列表 ++ (void)getChargeList:(HttpRequestHelperCompletion)completion channelType:(NSString *)channelType; + +/// 苹果下单 +/// @param completion 完成 +/// @param chargeProdId 充值id +/// @param uid 用户的uid +/// @param roomUid 房间的Uid +/// @param ticket ticket +/// @param deviceInfo uuid +/// @param clientIp ip地址 ++ (void)requestNobleIAPRecharge:(HttpRequestHelperCompletion)completion + chargeProdId:(NSString *)chargeProdId + uid:(NSString *)uid + roomUid:(NSString *)roomUid + ticket:(NSString *)ticket + deviceInfo:(NSString *)deviceInfo + clientIp:(NSString *)clientIp; + +/// 一键还原装扮 +/// @param completion 完成 ++ (void)requestRecoveryDress:(HttpRequestHelperCompletion)completion; + +/// 开关隐身进房 +/// @param complection 完成回调 +/// @param open 是否打开 ++ (void)changeEnterHidCompletion:(HttpRequestHelperCompletion)complection open:(NSString *)open; +/// 使用钻石开通贵族 +/// @param complection 完成回调 +/// @param roomUid 房主的uid ++(void)openWithDiamond:(HttpRequestHelperCompletion)complection roomUid:(NSString *)roomUid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Noble/Api/Api+NobleCenter.m b/YuMi/Modules/YMMine/View/Noble/Api/Api+NobleCenter.m new file mode 100644 index 00000000..adeabccd --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/Api/Api+NobleCenter.m @@ -0,0 +1,66 @@ +// +// Api+NobleCenter.m +// xplan-ios +// +// Created by GreenLand on 2021/12/28. +// + +#import "Api+NobleCenter.h" + +@implementation Api (NobleCenter) + +/// 贵族中心等级列表 +/// @param completion 完成 ++ (void)nobleCenterLevelList:(HttpRequestHelperCompletion)completion { + [self makeRequest:@"vip/getVipPageInfo" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; +} + +///获取开通贵族产品列表 ++ (void)getChargeList:(HttpRequestHelperCompletion)completion channelType:(NSString *)channelType { + [self makeRequest:@"chargeprod/listV2" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, channelType, nil]; +} + +/// 苹果下单 +/// @param completion 完成 +/// @param chargeProdId 充值id +/// @param uid 用户的uid +/// @param roomUid 房间的Uid +/// @param ticket ticket +/// @param deviceInfo uuid +/// @param clientIp ip地址 ++ (void)requestNobleIAPRecharge:(HttpRequestHelperCompletion)completion + chargeProdId:(NSString *)chargeProdId + uid:(NSString *)uid + roomUid:(NSString *)roomUid + ticket:(NSString *)ticket + deviceInfo:(NSString *)deviceInfo + clientIp:(NSString *)clientIp { + if (!roomUid) { + roomUid = NULL; + } + [self makeRequest:@"order/placeV2" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,chargeProdId, uid, roomUid, ticket, deviceInfo, clientIp, nil]; +} + +/// 一键还原装扮 +/// @param completion 完成 ++ (void)requestRecoveryDress:(HttpRequestHelperCompletion)completion { + [self makeRequest:@"vip/recoveryDress" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; +} + +/// 开关隐身进房 +/// @param complection 完成回调 +/// @param open 是否打开 ++ (void)changeEnterHidCompletion:(HttpRequestHelperCompletion)complection open:(NSString *)open { + [self makeRequest:@"vip/changeInvisibleInRoom" method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__,open, nil]; +} +/// 使用钻石开通贵族 +/// @param complection 完成回调 +/// @param roomUid 房主的uid ++(void)openWithDiamond:(HttpRequestHelperCompletion)complection roomUid:(NSString *)roomUid { + NSMutableDictionary * dic = [NSMutableDictionary dictionary]; + if (roomUid.length > 0) { + [dic setValue:roomUid forKey:@"roomUid"]; + } + [HttpRequestHelper request:@"vip/openWithDiamond" method:HttpRequestHelperMethodPOST params:dic completion:complection]; +} +@end diff --git a/YuMi/Modules/YMMine/View/Noble/Model/NobleAuthInfo.h b/YuMi/Modules/YMMine/View/Noble/Model/NobleAuthInfo.h new file mode 100644 index 00000000..b25829c7 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/Model/NobleAuthInfo.h @@ -0,0 +1,36 @@ +// +// NobleAuthInfo.h +// xplan-ios +// +// Created by GreenLand on 2022/1/3. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface NobleAuthInfo : NSObject + +///特权短描述 +@property (nonatomic, copy) NSString *authDesc; +///特权icon +@property (nonatomic, copy) NSString *authIcon; +///特权长描述 +@property (nonatomic, copy) NSString *authIntro; +///特权名称 +@property (nonatomic, copy) NSString *authName; + +///特权类型:1. 铭牌 2. 头饰 3. 座驾 4. 礼物 5.资料卡 6. 财富值经验加成 7.表情 8.麦序光圈 9.麦位昵称颜色 10. 好友红名 11.房间小喇叭 12.进场特效 13 隐身进房 +@property (nonatomic, assign) NSInteger authType; +///描述图片 +@property (nonatomic, copy) NSString *descPic; +///id +@property (nonatomic, assign) NSInteger id; +///seq +@property (nonatomic, assign) NSInteger seq; +///status +@property (nonatomic, assign) NSInteger status; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Noble/Model/NobleAuthInfo.m b/YuMi/Modules/YMMine/View/Noble/Model/NobleAuthInfo.m new file mode 100644 index 00000000..2f06fae6 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/Model/NobleAuthInfo.m @@ -0,0 +1,12 @@ +// +// NobleAuthInfo.m +// xplan-ios +// +// Created by GreenLand on 2022/1/3. +// + +#import "NobleAuthInfo.h" + +@implementation NobleAuthInfo + +@end diff --git a/YuMi/Modules/YMMine/View/Noble/Model/NobleCenterModel.h b/YuMi/Modules/YMMine/View/Noble/Model/NobleCenterModel.h new file mode 100644 index 00000000..9dc7d08b --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/Model/NobleCenterModel.h @@ -0,0 +1,31 @@ +// +// NobleCenterModel.h +// xplan-ios +// +// Created by GreenLand on 2022/1/3. +// + +#import +#import "NobleAuthInfo.h" +#import "NobleInfo.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface NobleCenterModel : NSObject + +///用户当前贵族等级 +@property (nonatomic, assign) NSInteger currLevel; +///用户当前权力值 +@property (nonatomic, assign) NSInteger currScore; +///贵族到期剩余秒数 +@property (nonatomic, assign) NSInteger remainSeconds; +///贵族权限信息列表 +@property (nonatomic, strong) NSArray *vipAuthInfos; +///贵族信息列表 +@property (nonatomic, strong) NSArray *vipInfos; +///当前是否为最高等级 +@property (nonatomic, assign) BOOL isMaxLevel; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Noble/Model/NobleCenterModel.m b/YuMi/Modules/YMMine/View/Noble/Model/NobleCenterModel.m new file mode 100644 index 00000000..bac20a85 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/Model/NobleCenterModel.m @@ -0,0 +1,18 @@ +// +// NobleCenterModel.m +// xplan-ios +// +// Created by GreenLand on 2022/1/3. +// + +#import "NobleCenterModel.h" + +@implementation NobleCenterModel + ++ (NSDictionary *)objectClassInArray { + return @{@"vipAuthInfos": NobleAuthInfo.class, + @"vipInfos": NobleInfo.class + }; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Noble/Model/NobleInfo.h b/YuMi/Modules/YMMine/View/Noble/Model/NobleInfo.h new file mode 100644 index 00000000..d6744d95 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/Model/NobleInfo.h @@ -0,0 +1,35 @@ +// +// NobleInfo.h +// xplan-ios +// +// Created by GreenLand on 2022/1/3. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface NobleInfo : NSObject + +///是否敬请期待:1. 否 2.是 +@property (nonatomic, assign) NSInteger comingSoon; +///贵族保级值 +@property (nonatomic, assign) NSInteger levelKeepScore; +///贵族升级值 +@property (nonatomic, assign) NSInteger levelUpScore; + +@property (nonatomic, copy) NSString *ownAuthTypeStr; +///有用的权限type列表 +@property (nonatomic, copy) NSArray *ownAuthTypes; +///贵族icon +@property (nonatomic, copy) NSString *vipIcon; +///贵族等级 +@property (nonatomic, assign) NSInteger vipLevel; +///贵族logo +@property (nonatomic, copy) NSString *vipLogo; +///贵族名称 +@property (nonatomic, copy) NSString *vipName; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Noble/Model/NobleInfo.m b/YuMi/Modules/YMMine/View/Noble/Model/NobleInfo.m new file mode 100644 index 00000000..780db54d --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/Model/NobleInfo.m @@ -0,0 +1,12 @@ +// +// NobleInfo.m +// xplan-ios +// +// Created by GreenLand on 2022/1/3. +// + +#import "NobleInfo.h" + +@implementation NobleInfo + +@end diff --git a/YuMi/Modules/YMMine/View/Noble/Model/NobleLevelUpModel.h b/YuMi/Modules/YMMine/View/Noble/Model/NobleLevelUpModel.h new file mode 100644 index 00000000..e2cd61dd --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/Model/NobleLevelUpModel.h @@ -0,0 +1,31 @@ +// +// NobleLevelUpModel.h +// xplan-ios +// +// Created by GreenLand on 2022/1/7. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface NobleLevelUpModel : NSObject + +///用户昵称 +@property (nonatomic, strong) NSString *nick; +///UID +@property (nonatomic, assign) long long uid; +///贵族等级 +@property (nonatomic, assign) NSInteger vipLevel; +///贵族名称 +@property (nonatomic, strong) NSString *vipName; + +@property (nonatomic, copy) NSString *floatPic; +///头像 +@property (nonatomic, copy) NSString *vipIcon; +///贵族logo动图 +@property (nonatomic, copy) NSString *vipLogo; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Noble/Model/NobleLevelUpModel.m b/YuMi/Modules/YMMine/View/Noble/Model/NobleLevelUpModel.m new file mode 100644 index 00000000..b12a1558 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/Model/NobleLevelUpModel.m @@ -0,0 +1,12 @@ +// +// NobleLevelUpModel.m +// xplan-ios +// +// Created by GreenLand on 2022/1/7. +// + +#import "NobleLevelUpModel.h" + +@implementation NobleLevelUpModel + +@end diff --git a/YuMi/Modules/YMMine/View/Noble/Model/NobleRechargeModel.h b/YuMi/Modules/YMMine/View/Noble/Model/NobleRechargeModel.h new file mode 100644 index 00000000..9ab2ff2e --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/Model/NobleRechargeModel.h @@ -0,0 +1,22 @@ +// +// NobleRechargeModel.h +// xplan-ios +// +// Created by GreenLand on 2022/1/4. +// + +#import +#import "RechargeListModel.h" + +NS_ASSUME_NONNULL_BEGIN + + +@interface NobleRechargeModel : NSObject + +@property (nonatomic, strong) NSArray *list; +@property (nonatomic, assign) NSInteger defaultPayH5; +@property (nonatomic, assign) NSInteger defaultPay; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Noble/Model/NobleRechargeModel.m b/YuMi/Modules/YMMine/View/Noble/Model/NobleRechargeModel.m new file mode 100644 index 00000000..57aac878 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/Model/NobleRechargeModel.m @@ -0,0 +1,17 @@ +// +// NobleRechargeModel.m +// xplan-ios +// +// Created by GreenLand on 2022/1/4. +// + +#import "NobleRechargeModel.h" + +@implementation NobleRechargeModel + ++ (NSDictionary *)objectClassInArray { + return @{@"list": RechargeListModel.class + }; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Noble/Presenter/XPNobleCenterPresenter.h b/YuMi/Modules/YMMine/View/Noble/Presenter/XPNobleCenterPresenter.h new file mode 100644 index 00000000..9fa37b68 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/Presenter/XPNobleCenterPresenter.h @@ -0,0 +1,46 @@ +// +// XPNobleCenterPresenter.h +// xplan-ios +// +// Created by GreenLand on 2022/1/3. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPNobleCenterPresenter : BaseMvpPresenter + +/// 获取贵族中心数据 +- (void)getNobleCenterInfo; + +/// 获取用户信息 +- (void)getUserInfo; + +///获取贵族充值产品列表 +- (void)getNobleChargeProductListWithChannelType:(NSString *)channelType; + +/// 生成贵族充值的订单 +/// @param chargeProdId 苹果服务器的充值 的id +- (void)requestNobleIAPRechargeOrderWithChargeProdId:(NSString *)chargeProdId roomUid:(NSString *)roomUid ; + +/// 充值成功二次验证 +/// @param receipt 凭据 +/// @param orderId 订单编号 +/// @param transcationId 商品id +- (void)checkReceiptWithData:(NSString *)receipt orderId:(NSString *)orderId transcationId:(NSString *)transcationId; + +/// 批量验证内购掉单 +/// @param transcations 凭据的数组 +- (void)checkTranscationIds:(NSArray *)transcations; + +/// 切换隐身进房 +/// @param enterHide 隐身进房 +- (void)changeEnterHide:(BOOL)enterHide; +/// 使用钻石开通贵族 + +/// @param roomUid 房主的uid +- (void)openVipWithDiamondRoomUid:(NSString *)roomUid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Noble/Presenter/XPNobleCenterPresenter.m b/YuMi/Modules/YMMine/View/Noble/Presenter/XPNobleCenterPresenter.m new file mode 100644 index 00000000..b8311052 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/Presenter/XPNobleCenterPresenter.m @@ -0,0 +1,107 @@ +// +// XPNobleCenterPresenter.m +// xplan-ios +// +// Created by GreenLand on 2022/1/3. +// + +#import "XPNobleCenterPresenter.h" + +///Api +#import "Api+NobleCenter.h" +#import "Api+Mine.h" +///Tool +#import "AccountInfoStorage.h" +#import "YYUtility.h" +///Model +#import "NobleCenterModel.h" +#import "UserInfoModel.h" +#import "NobleRechargeModel.h" +///P +#import "XPNobleCenterProtocol.h" + +@implementation XPNobleCenterPresenter + +/// 获取贵族中心数据 +- (void)getNobleCenterInfo { + [Api nobleCenterLevelList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NobleCenterModel *model = [NobleCenterModel modelWithDictionary:data.data]; + [[self getView] getNobleCenterInfoSuccess:model]; + }]]; +} + +// 获取用户信息 +- (void)getUserInfo { + NSString * uid = [[AccountInfoStorage instance] getUid]; + [Api getUserInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + UserInfoModel * infoModel = [UserInfoModel modelWithDictionary:data.data]; + [[self getView] onGetUserInfoSuccess:infoModel]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + + }] uid:uid]; +} + +///获取贵族充值产品列表 +- (void)getNobleChargeProductListWithChannelType:(NSString *)channelType { + [Api getChargeList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NobleRechargeModel *model = [NobleRechargeModel modelWithDictionary:data.data]; + [[self getView] onGetNobleRechargeDataSuccess:model]; + }] channelType:channelType]; +} + +/// 生成贵族充值的订单 +/// @param chargeProdId 苹果服务器的充值 的id +- (void)requestNobleIAPRechargeOrderWithChargeProdId:(NSString *)chargeProdId roomUid:(NSString *)roomUid { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + NSString * deviceInfo = [YYUtility deviceID]; + NSString * clientIp= [YYUtility ipAddress]; + [Api requestNobleIAPRecharge:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSString *orderId = (NSString *)data.data[@"recordId"]; + [[self getView] requestIAPRechargeOrderSuccess:orderId chargeProdId:chargeProdId]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] requestIAPRechargeOrderFail:msg code:code]; + } errorToast:YES] chargeProdId:chargeProdId uid:uid roomUid:roomUid ticket:ticket deviceInfo:deviceInfo clientIp:clientIp]; +} + +/// 充值成功二次验证 +/// @param receipt 凭据 +/// @param orderId 订单编号 +/// @param transcationId 商品id +- (void)checkReceiptWithData:(NSString *)receipt orderId:(NSString *)orderId transcationId:(NSString *)transcationId { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + [Api checkReceipt:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] checkReceiptSuccess:transcationId]; + } showLoading:YES] receipt:receipt chooseEnv:@"true" chargeRecordId:orderId transcationId:transcationId uid:uid ticket:ticket]; +} + +/// 批量验证内购掉单 +/// @param transcations 凭据的数组 +- (void)checkTranscationIds:(NSArray *)transcations { + NSString * transcationIdStr = [transcations toJSONString]; + [Api requestCheckTranscationIds:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] checkTranscationIdsSuccess]; + }] transcationIdStr:transcationIdStr]; +} + +/// 切换隐身进房 +/// @param enterHide 隐身进房 +- (void)changeEnterHide:(BOOL)enterHide { + [Api changeEnterHidCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] changeEnterHideSuccess]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] changeEnterHideFail]; + }] open:[NSString stringWithFormat:@"%d", enterHide]]; +} +/// 使用钻石开通贵族 + +/// @param roomUid 房主的uid +- (void)openVipWithDiamondRoomUid:(NSString *)roomUid { + [Api openWithDiamond:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] openVipWithDiamondSuccess]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] openVipWithDiamondFail]; + }showLoading:YES errorToast:YES] roomUid:roomUid]; +} +@end diff --git a/YuMi/Modules/YMMine/View/Noble/Protocol/XPNobleCenterProtocol.h b/YuMi/Modules/YMMine/View/Noble/Protocol/XPNobleCenterProtocol.h new file mode 100644 index 00000000..9b6f89f2 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/Protocol/XPNobleCenterProtocol.h @@ -0,0 +1,41 @@ +// +// XPNobleCenterProtocol.h +// xplan-ios +// +// Created by GreenLand on 2021/12/28. +// + +#import + +@class NobleCenterModel, UserInfoModel, NobleRechargeModel; +@protocol XPNobleCenterProtocol +@optional +///获取贵族信息成功 +- (void)getNobleCenterInfoSuccess:(NobleCenterModel *)model; + +///获取用户信息成功 +- (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo; + +///获取贵族充值信息成功 +- (void)onGetNobleRechargeDataSuccess:(NobleRechargeModel *)rechargeInfo; + +///请求充值id的状态成功 +- (void)requestIAPRechargeOrderSuccess:(NSString *)orderId chargeProdId:(NSString *)chargeProdId; +///请求充值账单失败 +- (void)requestIAPRechargeOrderFail:(NSString *)message code:(NSInteger)code; + +///二次校验成功 +- (void)checkReceiptSuccess:(NSString *)transcationId; + +///批量验证凭据成功 +- (void)checkTranscationIdsSuccess; + +///开关隐身进房成功 +- (void)changeEnterHideSuccess; +///开关隐身进房失败 +- (void)changeEnterHideFail; +///钻石开通会员成功 +-(void)openVipWithDiamondSuccess; +///钻石开通会员失败 +-(void)openVipWithDiamondFail; +@end diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleAuthorityDescView.h b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleAuthorityDescView.h new file mode 100644 index 00000000..0fcd324d --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleAuthorityDescView.h @@ -0,0 +1,19 @@ +// +// XPNobleAuthorityDescView.h +// xplan-ios +// +// Created by GreenLand on 2022/1/5. +// 贵族权限说明弹窗 + +#import +#import "NobleAuthInfo.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPNobleAuthorityDescView : UIView + +@property (nonatomic, strong) NobleAuthInfo *vipInfo; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleAuthorityDescView.m b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleAuthorityDescView.m new file mode 100644 index 00000000..5188ac79 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleAuthorityDescView.m @@ -0,0 +1,112 @@ +// +// XPNobleAuthorityDescView.m +// xplan-ios +// +// Created by GreenLand on 2022/1/5. +// + +#import "XPNobleAuthorityDescView.h" +///tool +#import "ThemeColor+NobleCenter.h" +///third +#import +#import "TTPopup.h" +#import "NetImageView.h" + +@interface XPNobleAuthorityDescView () + +///背景 +@property (nonatomic, strong) UIImageView *bgImageView; +///icon +@property (nonatomic, strong) NetImageView *iconImageView; +///标题 +@property (nonatomic, strong) UILabel *titleLabel; +///描述 +@property (nonatomic, strong) UITextView *descView; +///关闭按钮 +@property (nonatomic, strong) UIButton *closeButton; + +@end + +@implementation XPNobleAuthorityDescView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initViews]; + [self initConstraints]; + } + return self; +} + +#pragma mark - layout +- (void)initViews { + self.bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"noble_time_popBg"]]; + [self addSubview:self.bgImageView]; + self.iconImageView = [[NetImageView alloc] init]; + self.iconImageView.contentMode = UIViewContentModeScaleAspectFit; + [self addSubview:self.iconImageView]; + + self.titleLabel = [[UILabel alloc] init]; + self.titleLabel.text = @""; + self.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; + self.titleLabel.textColor = [DJDKMIMOMColor hightNobleLightTextColor]; + [self addSubview:self.titleLabel]; + + self.descView = [[UITextView alloc] init]; + self.descView.editable = NO; + self.descView.backgroundColor = [UIColor clearColor]; + self.descView.text = @""; + self.descView.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; + self.descView.textColor = [DJDKMIMOMColor hightNobleLightTextColor]; + self.descView.textAlignment = NSTextAlignmentCenter; + [self addSubview:self.descView]; + + self.closeButton = [[UIButton alloc] init]; + [self.closeButton setBackgroundImage:[UIImage imageNamed:@"noble_time_close"] forState:UIControlStateNormal]; + [self addSubview:self.closeButton]; + [self.closeButton addTarget:self action:@selector(onCloseButtonClick:) forControlEvents:UIControlEventTouchUpInside]; +} + +- (void)initConstraints { + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; + + [self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(41); + make.leading.trailing.mas_equalTo(self.bgImageView).inset(24); + make.height.mas_equalTo(115); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.iconImageView.mas_bottom).mas_offset(19); + make.centerX.mas_equalTo(0); + make.height.mas_equalTo(18); + }]; + + [self.descView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(8); + make.centerX.mas_equalTo(0); + make.bottom.mas_equalTo(-24); + make.leading.trailing.mas_equalTo(self.bgImageView).inset(12); + }]; + + [self.closeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(8); + make.trailing.mas_equalTo(-8); + make.width.height.mas_equalTo(22); + }]; +} + +#pragma mark - events +- (void)onCloseButtonClick:(UIButton *)button { + [TTPopup dismiss]; +} + +- (void)setVipInfo:(NobleAuthInfo *)vipInfo { + self.titleLabel.text = vipInfo.authName; + self.descView.text = vipInfo.authIntro; + self.iconImageView.imageUrl = vipInfo.descPic; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterEmptyView.h b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterEmptyView.h new file mode 100644 index 00000000..9c15dd11 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterEmptyView.h @@ -0,0 +1,18 @@ +// +// XPNobleCenterEmptyView.h +// xplan-ios +// +// Created by GreenLand on 2022/1/5. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPNobleCenterEmptyView : UIView + +@property (nonatomic, copy) NSString *emptyImageStr; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterEmptyView.m b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterEmptyView.m new file mode 100644 index 00000000..bde593bf --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterEmptyView.m @@ -0,0 +1,82 @@ +// +// XPNobleCenterEmptyView.m +// xplan-ios +// +// Created by GreenLand on 2022/1/5. +// + +#import "XPNobleCenterEmptyView.h" +#import "ThemeColor+NobleCenter.h" +///Third +#import +//#import "NetImageView.h" +//SVGA动画播放 +#import "SVGA.h" + + +@interface XPNobleCenterEmptyView() + +@property (nonatomic, strong) SVGAImageView *imageView; +@property (nonatomic, strong) UILabel *descLabel; +@property (strong, nonatomic) SVGAParser *parser; + + +@end + +@implementation XPNobleCenterEmptyView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initViews]; + [self initConstraints]; + } + return self; +} + +- (void)setEmptyImageStr:(NSString *)emptyImageStr { + @kWeakify(self); + [self.parser parseWithURL:[NSURL URLWithString:emptyImageStr] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { + @kStrongify(self); + self.imageView.loops = INT_MAX; + self.imageView.clearsAfterStop = NO; + self.imageView.videoItem = videoItem; + [self.imageView startAnimation]; + } failureBlock:^(NSError * _Nullable error) { + }]; +} + +#pragma mark - layout +- (void)initViews { + self.imageView = [[SVGAImageView alloc] init]; + [self addSubview:self.imageView]; + + self.descLabel = [[UILabel alloc] init]; + self.descLabel.text = YMLocalizedString(@"XPNobleCenterEmptyView0"); + self.descLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + self.descLabel.textColor = [DJDKMIMOMColor hightNobleLightTextColor]; + [self addSubview:self.descLabel]; +} + +- (void)initConstraints { + [self.imageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(110); + make.centerX.mas_equalTo(0); + make.width.mas_equalTo(260); + make.height.mas_equalTo(180); + }]; + + [self.descLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.imageView.mas_bottom).offset(14); + make.centerX.mas_equalTo(0); + }]; +} + +- (SVGAParser *)parser { + if (!_parser) { + _parser = [[SVGAParser alloc]init]; + } + return _parser; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterEntranceView.h b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterEntranceView.h new file mode 100644 index 00000000..e012e535 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterEntranceView.h @@ -0,0 +1,21 @@ +// +// XPNobleCenterEntranceView.h +// xplan-ios +// +// Created by GreenLand on 2022/1/6. +// + +#import +#import "UserVipInfoVo.h" +#import "NobleCenterModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPNobleCenterEntranceView : UIView + +@property (nonatomic, strong) UserVipInfoVo *vipInfo; +@property (nonatomic, strong) NobleCenterModel *nobleInfo; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterEntranceView.m b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterEntranceView.m new file mode 100644 index 00000000..057d5865 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterEntranceView.m @@ -0,0 +1,236 @@ +// +// XPNobleCenterEntranceView.m +// xplan-ios +// +// Created by GreenLand on 2022/1/6. +// + +#import "XPNobleCenterEntranceView.h" +#import + +#import "NetImageView.h" +#import "UIImage+Utils.h" + + +@interface XPNobleCenterEntranceView () + +@property (nonatomic, strong) UIImageView *bgImageView; +/// +@property (nonatomic,strong) NetImageView *nobleIconImage; +@property (nonatomic, strong) UILabel *titleLabel; +@property (nonatomic, strong) UILabel *descLabel; +@property (nonatomic, strong) UIImageView *arrowImageView; +///底层进度条 +@property (nonatomic, strong) UIView *backProgressView; +///当前进度条 +@property (nonatomic, strong) UIImageView *currentProgressView; +///下一等级 +@property (nonatomic, strong) UILabel *nextLevelLabel; + +@end + +@implementation XPNobleCenterEntranceView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.bgImageView]; + [self addSubview:self.titleLabel]; + [self addSubview:self.descLabel]; + [self addSubview:self.backProgressView]; + [self addSubview:self.arrowImageView]; + [self.backProgressView addSubview:self.currentProgressView]; + [self.backProgressView addSubview:self.nextLevelLabel]; +} + +- (void)initSubViewConstraints { + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(16); + make.leading.mas_equalTo(16); + make.trailing.mas_equalTo(0); + make.height.mas_equalTo(18); + }]; + [self.descLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(2); + make.leading.mas_equalTo(16); + make.trailing.mas_lessThanOrEqualTo(0); + }]; + + [self.backProgressView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.mas_equalTo(self).inset(12); + make.height.mas_equalTo(10); + make.bottom.mas_equalTo(-5); + }]; + [self.currentProgressView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.top.bottom.mas_equalTo(self.backProgressView); + make.width.mas_equalTo(0); + }]; + [self.nextLevelLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.trailing.mas_equalTo(-4); + make.centerY.mas_equalTo(self.backProgressView); + }]; + [self.arrowImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(4); + make.height.mas_equalTo(6); + make.leading.equalTo(self.descLabel.mas_trailing).mas_offset(3); + make.centerY.equalTo(self.descLabel); + }]; +} + +- (void)setVipInfo:(UserVipInfoVo *)vipInfo { + _vipInfo = vipInfo; + if (vipInfo) { + [self addSubview:self.nobleIconImage]; + self.nobleIconImage.imageUrl = vipInfo.vipIcon; + self.titleLabel.text = vipInfo.vipName; + self.titleLabel.textColor = UIColorFromRGB(0x403077); + self.bgImageView.image = [UIImage imageNamed:@"mine_noble_entrance_hadNoble"]; + [self.nobleIconImage mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(12); + make.top.mas_equalTo(9); + make.size.mas_equalTo(CGSizeMake(40, 35)); + }]; + [self.titleLabel mas_remakeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(self.nobleIconImage.mas_trailing).mas_offset(4); + make.top.mas_equalTo(9); + make.trailing.mas_equalTo(0); + make.height.mas_equalTo(22); + }]; + [self.descLabel mas_remakeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(self.titleLabel); + make.top.mas_equalTo(self.titleLabel.mas_bottom); + make.trailing.mas_lessThanOrEqualTo(-16); + }]; + [self setNobleInfoData:self.nobleInfo]; + } +} +-(void)setNobleInfoData:(NobleCenterModel *)nobleInfo{ + if (self.vipInfo) { + self.backProgressView.hidden = NO; + self.arrowImageView.hidden = YES; + NSInteger distanceValue = 0; + NSInteger saveScore = 0; + NSInteger nextScore = 0; + NSString *nextLevelName = @""; + BOOL hadNextLevel = YES;//标记 + for (NobleInfo *info in nobleInfo.vipInfos) { + if (info.vipLevel == nobleInfo.currLevel) { + saveScore = info.levelKeepScore; + nextScore = info.levelUpScore; + distanceValue = info.levelUpScore - nobleInfo.currScore; + } + if (info.vipLevel > nobleInfo.currLevel && hadNextLevel) { + hadNextLevel = NO; + nextLevelName = info.vipName; + } + } + NSString *value = [NSString getDealNumwithstring:@(distanceValue).stringValue]; + self.descLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPNobleCenterEntranceView0"), value]; + self.descLabel.textColor = UIColorFromRGB(0x5E4D98); + self.nextLevelLabel.text = nextLevelName; + + CGFloat margin = self.backProgressView.frame.size.width * (nobleInfo.currScore * 1.0 / (nextScore > 0 ? nextScore : 1)); + [self.currentProgressView mas_updateConstraints:^(MASConstraintMaker *make) { + make.trailing.mas_equalTo(self.backProgressView.mas_leading).mas_offset(margin); + }]; + } else { + self.backProgressView.hidden = YES; + self.arrowImageView.hidden = NO; + } +} + + +#pragma mark - Getters And Setters +- (UIImageView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"mine_noble_entrance_noNoble"] ]; + _bgImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _bgImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + _titleLabel.textColor = UIColorFromRGB(0x93570B); + _titleLabel.text = YMLocalizedString(@"XPNobleCenterEntranceView1"); + } + return _titleLabel; +} + +- (UILabel *)descLabel { + if (!_descLabel) { + _descLabel = [[UILabel alloc] init]; + _descLabel.font = [UIFont systemFontOfSize:9 weight:UIFontWeightRegular]; + _descLabel.textColor = UIColorFromRGB(0xAA6F29); + _descLabel.text = YMLocalizedString(@"XPNobleCenterEntranceView2"); + _descLabel.adjustsFontSizeToFitWidth = YES; + } + return _descLabel; +} + + +- (NetImageView *)nobleIconImage { + if (!_nobleIconImage) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + _nobleIconImage = [[NetImageView alloc] initWithConfig:config]; + _nobleIconImage.contentMode = UIViewContentModeScaleAspectFill; + } + return _nobleIconImage; +} + +- (UIView *)backProgressView { + if (!_backProgressView) { + _backProgressView = [[UIView alloc] init]; + _backProgressView.backgroundColor = UIColorFromRGB(0x7F5DFF); + _backProgressView.layer.cornerRadius = 5; + _backProgressView.layer.masksToBounds = YES; + _backProgressView.hidden = YES; + } + return _backProgressView; +} + +- (UIImageView *)currentProgressView { + if (!_currentProgressView) { + _currentProgressView = [[UIImageView alloc] init]; + UIImage *image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFFFFFF),UIColorFromRGB(0xFFFFFF)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)]; + _currentProgressView.image = image; + _currentProgressView.layer.cornerRadius = 5; + _currentProgressView.layer.masksToBounds = YES; + } + return _currentProgressView; +} + +- (UILabel *)nextLevelLabel { + if (!_nextLevelLabel) { + _nextLevelLabel = [[UILabel alloc] init]; + _nextLevelLabel.font = [UIFont systemFontOfSize:8]; + _nextLevelLabel.textColor = [UIColor whiteColor]; + _nextLevelLabel.hidden = YES; + } + return _nextLevelLabel; +} +-(UIImageView *)arrowImageView{ + if (!_arrowImageView){ + _arrowImageView = [UIImageView new]; + _arrowImageView.image = [UIImage imageNamed:@"mine_head_noble_arrow"] ; + } + return _arrowImageView; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterMyNobleView.h b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterMyNobleView.h new file mode 100644 index 00000000..986b5baa --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterMyNobleView.h @@ -0,0 +1,20 @@ +// +// XPNobleCenterMyNobleView.h +// xplan-ios +// +// Created by GreenLand on 2022/1/4. +// + +#import +#import "NobleCenterModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPNobleCenterMyNobleView : UIView + +///总数据 +@property (nonatomic, strong) NobleCenterModel *model; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterMyNobleView.m b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterMyNobleView.m new file mode 100644 index 00000000..65c910ce --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterMyNobleView.m @@ -0,0 +1,342 @@ +// +// XPNobleCenterMyNobleView.m +// xplan-ios +// +// Created by GreenLand on 2022/1/4. +// + +#import "XPNobleCenterMyNobleView.h" +#import +///Third +#import +///Tool +#import "ThemeColor+NobleCenter.h" +#import "UIImage+Utils.h" +#import "TTPopup.h" +#import "XPNobleCenterResidueView.h" + +@interface XPNobleCenterMyNobleView () + +///顶部view +@property (nonatomic, strong) UIView *topView; +///等级详情 +@property (nonatomic, strong) YYLabel *nobleLabel; +///时间帮助按钮 +@property (nonatomic, strong) UIButton *timeDescButton; +///权力值图标 +@property (nonatomic, strong) UIImageView *privilegeIconImage; +///底层进度条 +@property (nonatomic, strong) UIView *backProgressView; +///当前进度条 +@property (nonatomic, strong) UIImageView *currentProgressView; +///进度条圆标 +@property (nonatomic, strong) UIImageView *indicateImageView; +///保级值箭头 +@property (nonatomic, strong) UIImageView *safeLevelImageView; +///当前权力值 +@property (nonatomic, strong) UILabel *currentValueLabel; +///保级权力值 +@property (nonatomic, strong) UILabel *safeValueLabel; +///升级权力值 +@property (nonatomic, strong) UILabel *upGradeValueLabel; + +@end + +@implementation XPNobleCenterMyNobleView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = UIColorFromRGB(0x252014); + [self addSubview:self.topView]; + [self.topView addSubview:self.nobleLabel]; + [self.topView addSubview:self.timeDescButton]; + [self addSubview:self.privilegeIconImage]; + [self addSubview:self.backProgressView]; + [self.backProgressView addSubview:self.currentProgressView]; + [self addSubview:self.indicateImageView]; + [self addSubview:self.safeLevelImageView]; + [self addSubview:self.currentValueLabel]; + [self addSubview:self.safeValueLabel]; + [self addSubview:self.upGradeValueLabel]; +} + +- (void)initSubViewConstraints { + [self.topView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.leading.trailing.mas_equalTo(0); + make.height.mas_greaterThanOrEqualTo(36); + }]; + CGFloat width = KScreenWidth - 29 - 15; + [self.nobleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(15); + make.top.bottom.equalTo(self.topView); + make.width.mas_lessThanOrEqualTo(width); + }]; + [self.timeDescButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.topView); + make.leading.mas_equalTo(self.nobleLabel.mas_trailing).mas_offset(3); + make.width.height.mas_equalTo(14); + }]; + [self.privilegeIconImage mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(14); + make.top.mas_equalTo(self.topView.mas_bottom).mas_offset(24); + make.width.mas_equalTo(50); + make.height.mas_equalTo(16); + }]; + [self.backProgressView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.privilegeIconImage); + make.leading.mas_equalTo(self.privilegeIconImage.mas_trailing).mas_offset(12); + make.trailing.mas_equalTo(-14); + make.height.mas_equalTo(12); + }]; + [self.currentProgressView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.top.bottom.mas_equalTo(self.backProgressView); + make.trailing.mas_equalTo(self.indicateImageView.mas_centerX); + }]; + + [self.indicateImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.backProgressView); + make.width.height.mas_equalTo(18); + make.centerX.mas_equalTo(self.backProgressView.mas_leading).mas_offset(2); + }]; + + [self.currentValueLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.indicateImageView).priorityMedium(); + make.top.mas_equalTo(self.backProgressView.mas_bottom).mas_offset(5); + make.trailing.mas_lessThanOrEqualTo(-12).priorityHigh(); + }]; + [self.safeValueLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.safeLevelImageView.mas_top).mas_offset(-2); + make.height.mas_equalTo(10); + }]; + + [self.safeLevelImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.backProgressView.mas_top).mas_offset(2); + make.centerX.mas_equalTo(self.safeValueLabel); + make.width.height.mas_equalTo(8); + }]; + [self.upGradeValueLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.safeValueLabel); + make.trailing.mas_equalTo(self.backProgressView); + }]; +} + +#pragma mark - private +- (NSMutableAttributedString *)createNobleStringWithModel:(NobleCenterModel *)model { + NSMutableAttributedString *string = [[NSMutableAttributedString alloc] init]; + [string appendAttributedString:[self createAttribute:YMLocalizedString(@"XPNobleCenterMyNobleView0") color:[DJDKMIMOMColor normalNobleTextColor]]]; + NSString *levelName = @""; + NSInteger distanceValue = 0; + NSString *nextLevelName = @""; + NSInteger saveScore = 0; + NSInteger nextSecore = 0; + BOOL hadNextLevel = YES;//标记 + for (NobleInfo *info in model.vipInfos) { + if (info.vipLevel == model.currLevel) { + levelName = info.vipName; + saveScore = info.levelKeepScore; + nextSecore = info.levelUpScore; + distanceValue = info.levelUpScore - model.currScore; + } + if (info.vipLevel > model.currLevel && hadNextLevel) { + hadNextLevel = NO; + nextLevelName = info.vipName; + } + } + NSAttributedString *levelStr = [[NSAttributedString alloc] initWithString:levelName attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:[DJDKMIMOMColor hightNobleLightTextColor]}]; + [string appendAttributedString:levelStr]; + if (model.isMaxLevel) { + [string appendAttributedString:[self createAttribute:YMLocalizedString(@"XPNobleCenterMyNobleView1") color:[DJDKMIMOMColor normalNobleTextColor]]]; + } else { + [string appendAttributedString:[self createAttribute:YMLocalizedString(@"XPNobleCenterMyNobleView2") color:[DJDKMIMOMColor normalNobleTextColor]]]; + NSAttributedString *distanceStr = [[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@"%zd", distanceValue] attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13], NSForegroundColorAttributeName:[DJDKMIMOMColor hightNobleLightTextColor]}]; + [string appendAttributedString:distanceStr]; + [string appendAttributedString:[self createAttribute:YMLocalizedString(@"XPNobleCenterMyNobleView3") color:[DJDKMIMOMColor normalNobleTextColor]]]; + [string appendAttributedString:[self createAttribute:nextLevelName color:[DJDKMIMOMColor normalNobleTextColor]]]; + } + [string appendAttributedString:[self createAttribute:YMLocalizedString(@"XPNobleCenterMyNobleView4") color:[DJDKMIMOMColor normalNobleTextColor]]]; + + NSAttributedString *countTimeStr = [[NSAttributedString alloc] initWithString:[self cacularTimeWithSecond:model.remainSeconds] attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13], NSForegroundColorAttributeName:[DJDKMIMOMColor hightNobleLightTextColor]}]; + [string appendAttributedString:countTimeStr]; + + NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; + attachment.bounds = CGRectMake(0, 0, 10, 12); + attachment.image = [UIImage imageNamed:@"noble_indicate_icon"]; + NSAttributedString * starAttribute = [NSMutableAttributedString attributedStringWithAttachment:(NSTextAttachment *)attachment]; + [string appendAttributedString:starAttribute]; + + return string; +} + +- (NSAttributedString *)createAttribute:(NSString * )text color:(UIColor *)color { + NSDictionary * attribute = @{NSFontAttributeName:[UIFont systemFontOfSize:10], NSForegroundColorAttributeName:color}; + NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:text attributes:attribute]; + return attr; +} + +- (NSString *)cacularTimeWithSecond:(long long)second { + long long minSecond = 60; + long long hourSecond = minSecond * 60; + long long daySecond = hourSecond * 24; + + NSString *day = @""; + NSString *hour = @""; + if (second > daySecond) { + day = [NSString stringWithFormat:@"%lld%@", second / daySecond, YMLocalizedString(@"App_Commont_Day")]; + if (second % daySecond > hourSecond) { + hour = [NSString stringWithFormat:YMLocalizedString(@"XPNobleCenterMyNobleView5"), (second % daySecond) / hourSecond]; + return [NSString stringWithFormat:@"%@%@", day, hour]; + }else { + return day; + } + } else if (second > hourSecond) { + return hour = [NSString stringWithFormat:YMLocalizedString(@"XPNobleCenterMyNobleView6"), second / hourSecond]; + } else { + return YMLocalizedString(@"XPNobleCenterMyNobleView7"); + } +} + #pragma mark - events +- (void)onTimeButtonClick:(UIButton *)button { + XPNobleCenterResidueView *alertView = [[XPNobleCenterResidueView alloc] initWithFrame:CGRectMake(0, 0, 300, 286)]; + TTPopupService * config = [[TTPopupService alloc] init]; + config.shouldDismissOnBackgroundTouch = NO; + config.contentView = alertView; + [TTPopup popupWithConfig:config]; +} + +#pragma mark - Getters And Setters +- (void)setModel:(NobleCenterModel *)model { + _model = model; + self.nobleLabel.attributedText = [self createNobleStringWithModel:model]; + NSInteger safeScore = 0; + NSInteger nextScore = 0; + for (NobleInfo *info in model.vipInfos) { + if (info.vipLevel == model.currLevel) { + safeScore = info.levelKeepScore; + nextScore = info.levelUpScore; + } + } + self.safeValueLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPNobleCenterMyNobleView8"), safeScore]; + self.upGradeValueLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPNobleCenterMyNobleView9"), nextScore]; + self.currentValueLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPNobleCenterMyNobleView10"), model.currScore]; + CGFloat margin = self.backProgressView.frame.size.width * (model.currScore * 1.0 / nextScore); + [self.indicateImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.backProgressView.mas_leading).mas_offset(margin); + }]; + CGFloat safeMargin = self.backProgressView.frame.size.width * (safeScore * 1.0 / nextScore); + [self.safeValueLabel mas_updateConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.backProgressView.mas_leading).mas_offset(safeMargin); + }]; + self.upGradeValueLabel.hidden = model.isMaxLevel; +} + +- (UIView *)topView { + if (!_topView) { + _topView = [[UIView alloc] init]; + _topView.backgroundColor = UIColorFromRGB(0x302B20); + } + return _topView; +} +- (YYLabel *)nobleLabel { + if (!_nobleLabel) { + _nobleLabel = [[YYLabel alloc] init]; + _nobleLabel.textAlignment = NSTextAlignmentCenter; + _nobleLabel.numberOfLines = 0; + } + return _nobleLabel; +} + +- (UIImageView *)privilegeIconImage { + if (!_privilegeIconImage) { + _privilegeIconImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"noble_privilege_icon"]]; + } + return _privilegeIconImage; +} + +- (UIView *)backProgressView { + if (!_backProgressView) { + _backProgressView = [[UIView alloc] init]; + _backProgressView.backgroundColor = UIColorFromRGB(0x443A24); + _backProgressView.layer.cornerRadius = 6; + _backProgressView.layer.masksToBounds = YES; + _backProgressView.layer.borderColor = UIColorFromRGB(0xB49158).CGColor; + _backProgressView.layer.borderWidth = 0.5; + } + return _backProgressView; +} +- (UIImageView *)currentProgressView { + if (!_currentProgressView) { + _currentProgressView = [[UIImageView alloc] init]; + UIImage *image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xF2B04E),UIColorFromRGB(0xFFE5BA)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(12, 12)]; + _currentProgressView.image = image; + } + return _currentProgressView; +} + +- (UIImageView *)indicateImageView { + if (!_indicateImageView) { + _indicateImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"noble_indicate_icon"]]; + } + return _indicateImageView; +} + +- (UIImageView *)safeLevelImageView { + if (!_safeLevelImageView) { + _safeLevelImageView = [[UIImageView alloc] init]; + _safeLevelImageView.image = [UIImage imageNamed:@"noble_safe_level_arrow"]; + } + return _safeLevelImageView; +} + + +- (UILabel *)currentValueLabel { + if (!_currentValueLabel) { + _currentValueLabel = [[UILabel alloc] init]; + _currentValueLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; +// _currentValueLabel.textAlignment = NSTextAlignmentCenter; + _currentValueLabel.text = @"0"; + _currentValueLabel.textColor = [DJDKMIMOMColor hightNobleLightTextColor]; + } + return _currentValueLabel; +} + +- (UILabel *)safeValueLabel { + if (!_safeValueLabel) { + _safeValueLabel = [[UILabel alloc] init]; + _safeValueLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _safeValueLabel.textAlignment = NSTextAlignmentCenter; + _safeValueLabel.text = @"0"; + _safeValueLabel.textColor = [DJDKMIMOMColor normalNobleTextColor]; + } + return _safeValueLabel; +} + +- (UILabel *)upGradeValueLabel { + if (!_upGradeValueLabel) { + _upGradeValueLabel = [[UILabel alloc] init]; + _upGradeValueLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _upGradeValueLabel.textAlignment = NSTextAlignmentCenter; + _upGradeValueLabel.text = @"0"; + _upGradeValueLabel.textColor = [DJDKMIMOMColor normalNobleTextColor]; + } + return _upGradeValueLabel; +} + +- (UIButton *)timeDescButton { + if (!_timeDescButton) { + _timeDescButton = [[UIButton alloc] init]; + [_timeDescButton setBackgroundImage:[UIImage imageNamed:@"noble_time_help"] forState:UIControlStateNormal]; + [_timeDescButton addTarget:self action:@selector(onTimeButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + } + return _timeDescButton; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterNavView.h b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterNavView.h new file mode 100644 index 00000000..3615f1b2 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterNavView.h @@ -0,0 +1,34 @@ +// +// XPNobleCenterNavView.h +// xplan-ios +// +// Created by GreenLand on 2022/1/3. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class XPNobleCenterNavView; +@protocol XPNobleCenterNavViewDelegate + +///点击了返回按钮 +- (void)xPNobleCenterNavView:(XPNobleCenterNavView *)view didClickBackButton:(UIButton *)sender; +///点击了帮助按钮 +- (void)xPNobleCenterNavView:(XPNobleCenterNavView *)view didClickHelpButton:(UIButton *)sender; +///点击了设置按钮 +- (void)xPNobleCenterNavView:(XPNobleCenterNavView *)view didClickSettingButton:(UIButton *)sender; + +@end + + +@interface XPNobleCenterNavView : UIView + +///代理 +@property (nonatomic,weak) id delegate; +///是否隐藏设置按钮 +@property (nonatomic, assign) BOOL hideSettingBtn; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterNavView.m b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterNavView.m new file mode 100644 index 00000000..4cf9765f --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterNavView.m @@ -0,0 +1,133 @@ +// +// XPNobleCenterNavView.m +// xplan-ios +// +// Created by GreenLand on 2022/1/3. +// + +#import "XPNobleCenterNavView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIButton+EnlargeTouchArea.h" + + +@interface XPNobleCenterNavView () +///返回按钮 +@property (nonatomic,strong) UIButton *backButton; +///显示文本 +@property (nonatomic,strong) UILabel *titleLabel; +///帮助按钮 +@property (nonatomic, strong) UIButton *helpButton; +///设置按钮 +@property (nonatomic, strong) UIButton *settingButton; +@end + +@implementation XPNobleCenterNavView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Response +- (void)backButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPNobleCenterNavView:didClickBackButton:)]) { + [self.delegate xPNobleCenterNavView:self didClickBackButton:sender]; + } +} +- (void)helpButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPNobleCenterNavView:didClickHelpButton:)]) { + [self.delegate xPNobleCenterNavView:self didClickHelpButton:sender]; + } +} + +- (void)settingButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPNobleCenterNavView:didClickSettingButton:)]) { + [self.delegate xPNobleCenterNavView:self didClickSettingButton:sender]; + } +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + [self addSubview:self.backButton]; + [self addSubview:self.titleLabel]; + [self addSubview:self.helpButton]; + [self addSubview:self.settingButton]; +} + +- (void)initSubViewConstraints { + [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(15); + make.centerY.equalTo(self.mas_bottom).mas_offset(-22); + }]; + [self.helpButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.trailing.mas_equalTo(-15); + make.centerY.equalTo(self.mas_bottom).mas_offset(-22); + }]; + [self.settingButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.trailing.mas_equalTo(self.helpButton.mas_leading).mas_offset(-8); + make.centerY.equalTo(self.mas_bottom).mas_offset(-22); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.centerY.equalTo(self.mas_bottom).mas_offset(-22); + }]; +} + +- (void)setHideSettingBtn:(BOOL)hideSettingBtn { + self.settingButton.hidden = hideSettingBtn; +} + +#pragma mark - Getters And Setters +- (UIButton *)backButton { + if (!_backButton) { + _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_backButton setImage:[UIImage imageNamed:@"home_search_white_back"] forState:UIControlStateNormal]; + _backButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; + [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_backButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + } + return _backButton; +} + +- (UIButton *)helpButton { + if (!_helpButton) { + _helpButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_helpButton setImage:[UIImage imageNamed:@"noble_nav_help"] forState:UIControlStateNormal]; + _helpButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; + [_helpButton addTarget:self action:@selector(helpButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_helpButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + } + return _helpButton; +} + +- (UIButton *)settingButton { + if (!_settingButton) { + _settingButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_settingButton setImage:[UIImage imageNamed:@"noble_nav_setting"] forState:UIControlStateNormal]; + _settingButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; + [_settingButton addTarget:self action:@selector(settingButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_settingButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + } + return _settingButton; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; + _titleLabel.text = YMLocalizedString(@"XPNobleCenterNavView0"); + _titleLabel.textColor = [UIColor whiteColor]; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterPayCell.h b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterPayCell.h new file mode 100644 index 00000000..ddf64cc4 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterPayCell.h @@ -0,0 +1,19 @@ +// +// XPNobleCenterPayCell.h +// YuMi +// +// Created by duoban on 2023/7/12. +// + +#import + + +NS_ASSUME_NONNULL_BEGIN + +@interface XPNobleCenterPayCell : UITableViewCell +@property(nonatomic,copy) UIImage *iconImage; +@property(nonatomic,copy) NSMutableAttributedString *titleAtt; +@property(nonatomic,assign) BOOL isChoose; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterPayCell.m b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterPayCell.m new file mode 100644 index 00000000..d4e71726 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterPayCell.m @@ -0,0 +1,96 @@ +// +// XPNobleCenterPayCell.m +// YuMi +// +// Created by duoban on 2023/7/12. +// + +#import "XPNobleCenterPayCell.h" +@interface XPNobleCenterPayCell() +@property(nonatomic,strong) UIImageView *iconView; +@property(nonatomic,strong) UILabel *titleView; +@property(nonatomic,strong) UIButton *selectBtn; +@end +@implementation XPNobleCenterPayCell +-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{ + self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; + if(self){ + [self installUI]; + [self installConstraints]; + } + return self; +} + +-(void)installUI{ + self.backgroundColor = [UIColor whiteColor]; + self.contentView.backgroundColor = [UIColor whiteColor]; + [self.contentView addSubview:self.iconView]; + [self.contentView addSubview:self.titleView]; + [self.contentView addSubview:self.selectBtn]; +} +-(void)installConstraints{ + [self.iconView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(28); + make.leading.mas_equalTo(40); + make.centerY.equalTo(self.contentView); + }]; + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.equalTo(self.contentView); + make.leading.equalTo(self.iconView.mas_trailing).mas_offset(10); + }]; + [self.selectBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(20); + make.centerY.equalTo(self.contentView); + make.trailing.mas_equalTo(-38); + }]; +} +-(void)setIconImage:(UIImage *)iconImage{ + _iconImage = iconImage; + _iconView.image = iconImage; +} +-(void)setTitleAtt:(NSMutableAttributedString *)titleAtt{ + _titleAtt = titleAtt; + _titleView.attributedText = _titleAtt; +} +-(void)setIsChoose:(BOOL)isChoose{ + _isChoose = isChoose; + self.selectBtn.selected = _isChoose; +} + +#pragma mark - 懒加载 +- (UIImageView *)iconView{ + if(!_iconView){ + _iconView = [UIImageView new]; + } + return _iconView; +} +-(UILabel *)titleView{ + if(!_titleView){ + _titleView = [UILabel new]; + _titleView.font = [UIFont systemFontOfSize:16 weight:UIFontWeightBold]; + _titleView.textColor = UIColorFromRGB(0x1F1B4F); + } + return _titleView; +} +- (UIButton *)selectBtn{ + if(!_selectBtn){ + _selectBtn = [UIButton new]; + [_selectBtn setImage:kImage(@"mine_noble_center_pay_select") forState:UIControlStateSelected]; + [_selectBtn setImage:kImage(@"mine_noble_center_pay_no_select") forState:UIControlStateNormal]; + [_selectBtn setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + _selectBtn.userInteractionEnabled = NO; + } + return _selectBtn; +} +- (void)awakeFromNib { + [super awakeFromNib]; + // Initialization code +} + +- (void)setSelected:(BOOL)selected animated:(BOOL)animated { + [super setSelected:selected animated:animated]; + + // Configure the view for the selected state +} + +@end diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterPayView.h b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterPayView.h new file mode 100644 index 00000000..a33606c1 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterPayView.h @@ -0,0 +1,29 @@ +// +// XPNobleCenterPayView.h +// YuMi +// +// Created by duoban on 2023/7/12. +// + +#import +typedef enum : NSUInteger { + NobleCenterPayType_diamond, + NobleCenterPayType_Apple, + +} NobleCenterPayType; + +@protocol XPNobleCenterPayViewDelegate + +-(void)payWithType:(NobleCenterPayType)type; + +@end + +NS_ASSUME_NONNULL_BEGIN + +@interface XPNobleCenterPayView : UIView +//钻石数量 +@property(nonatomic, copy)NSString *diamonds; +@property(nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterPayView.m b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterPayView.m new file mode 100644 index 00000000..fabce18f --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterPayView.m @@ -0,0 +1,192 @@ +// +// XPNobleCenterPayView.m +// YuMi +// +// Created by duoban on 2023/7/12. +// + +#import "XPNobleCenterPayView.h" +#import "XPNobleCenterPayCell.h" + + + + +@interface XPNobleCenterPayView() +@property(nonatomic,strong) UIView *bgView; +@property(nonatomic,strong) UITableView *tableView; +@property(nonatomic,strong) UILabel *titleView; +@property(nonatomic,strong) UILabel *diamondNumView; +@property(nonatomic,strong) UILabel *diamondNumTitle; +@property(nonatomic,strong) UIButton *payBtn; +@property(nonatomic,copy) NSArray *listData; +@property(nonatomic,strong) NSIndexPath *path; +@property(nonatomic,strong) UIButton *backBtn; +@property(nonatomic,assign) NobleCenterPayType type; +@end +@implementation XPNobleCenterPayView + +-(instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if(self){ + [self installUI]; + [self installConstraints]; + } + return self; +} +-(void)installUI{ + self.path = [NSIndexPath indexPathForRow:0 inSection:0]; + self.type = NobleCenterPayType_diamond; + self.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5]; + [self addSubview:self.backBtn]; + [self addSubview:self.bgView]; + [self.bgView addSubview:self.titleView]; + [self.bgView addSubview:self.diamondNumView]; + [self.bgView addSubview:self.diamondNumTitle]; + [self.bgView addSubview:self.tableView]; + [self.bgView addSubview:self.payBtn]; +} +-(void)installConstraints{ + [self.backBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self); + }]; + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.trailing.leading.bottom.equalTo(self); + make.height.mas_equalTo(487); + }]; + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(24); + make.centerX.equalTo(self.bgView); + }]; + [self.diamondNumView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(76); + make.centerX.equalTo(self.bgView); + }]; + [self.diamondNumTitle mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(108); + make.centerX.equalTo(self.bgView); + }]; + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(138); + make.leading.trailing.equalTo(self); + make.bottom.mas_equalTo(-124); + }]; + [self.payBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(-58); + make.width.mas_equalTo(303); + make.height.mas_equalTo(48); + make.centerX.equalTo(self.bgView); + }]; +} +-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ + return self.listData.count; +} +-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ + XPNobleCenterPayCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPNobleCenterPayCell class]) forIndexPath:indexPath]; + cell.isChoose = indexPath.row == self.path.row; + cell.iconImage = indexPath.row == 0 ? kImage( @"mine_noble_center__diamond") : kImage(@"mine_noble_center_apple"); + NSString *num = [NSString stringWithFormat:@"(2990%@)",YMLocalizedString(@"XPNobleCenterPayView1")]; + NSString *text = indexPath.row == 0 ? [NSString stringWithFormat:@"%@%@",self.listData[indexPath.row],num] : self.listData[indexPath.row]; + + NSMutableAttributedString *titleAtt = [[NSMutableAttributedString alloc]initWithString:text attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16 weight:UIFontWeightSemibold],NSForegroundColorAttributeName:UIColorFromRGB(0x1F1B4F)}]; + if(indexPath.row == 0){ + [titleAtt addAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12 weight:UIFontWeightRegular],NSForegroundColorAttributeName:UIColorFromRGB(0x8A8CAB)} range:[text rangeOfString:num]]; + } + cell.titleAtt = titleAtt; + return cell; +} +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ + self.path = indexPath; + self.type = indexPath.row == 0 ? NobleCenterPayType_diamond : NobleCenterPayType_Apple; + [self.tableView reloadData]; +} +-(void)backAction{ + [self removeFromSuperview]; +} +-(void)setDiamonds:(NSString *)diamonds{ + _diamonds = diamonds; + self.diamondNumView.text = _diamonds; +} +-(void)payBtnAction{ + [self backAction]; + if(self.delegate && [self.delegate respondsToSelector:@selector(payWithType:)]){ + [self.delegate payWithType:self.type]; + } +} +#pragma mark - 懒加载 +- (UIView *)bgView{ + if(!_bgView){ + _bgView = [UIView new]; + _bgView.backgroundColor = [UIColor whiteColor]; + [_bgView setCornerWithLeftTopCorner:28 rightTopCorner:28 bottomLeftCorner:0 bottomRightCorner:0 size:CGSizeMake(KScreenWidth, 487)]; + } + return _bgView; +} +- (UILabel *)titleView{ + if(!_titleView){ + _titleView = [UILabel new]; + _titleView.text = YMLocalizedString(@"XPNobleCenterPayView0"); + _titleView.font = [UIFont systemFontOfSize:18 weight:UIFontWeightSemibold]; + _titleView.textColor = UIColorFromRGB(0x1F1B4F); + } + return _titleView; +} +- (UILabel *)diamondNumView{ + if(!_diamondNumView){ + _diamondNumView = [UILabel new]; + _diamondNumView.text = @"0"; + _diamondNumView.font = [UIFont systemFontOfSize:28 weight:UIFontWeightSemibold]; + _diamondNumView.textColor = UIColorFromRGB(0x9168FA); + } + return _diamondNumView; +} +- (UILabel *)diamondNumTitle{ + if(!_diamondNumTitle){ + _diamondNumTitle = [UILabel new]; + _diamondNumTitle.text = YMLocalizedString(@"XPNobleCenterPayView1");; + _diamondNumTitle.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; + _diamondNumTitle.textColor = UIColorFromRGB(0x8A8CAB); + } + return _diamondNumTitle; +} +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.rowHeight = 56; + + _tableView.backgroundColor = [UIColor whiteColor]; + [_tableView registerClass:[XPNobleCenterPayCell class] forCellReuseIdentifier:NSStringFromClass([XPNobleCenterPayCell class])]; + } + return _tableView; +} +- (UIButton *)payBtn{ + if(!_payBtn){ + _payBtn = [UIButton new]; + [_payBtn setTitle:YMLocalizedString(@"XPNobleCenterPayView3") forState:UIControlStateNormal]; + [_payBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _payBtn.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + _payBtn.layer.cornerRadius = 24; + _payBtn.layer.masksToBounds = YES; + UIImage *image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0x5AECFA),UIColorFromRGB(0x9DB4FF),UIColorFromRGB(0xCF70FF)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(303, 48)]; + [_payBtn setBackgroundImage:image forState:UIControlStateNormal]; + [_payBtn addTarget:self action:@selector(payBtnAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _payBtn; +} +- (NSArray *)listData{ + if(!_listData){ + _listData = @[YMLocalizedString(@"XPNobleCenterPayView2"),@"Apple Pay"]; + } + return _listData; +} +- (UIButton *)backBtn{ + if(!_backBtn){ + _backBtn = [UIButton new]; + [_backBtn addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _backBtn; +} +@end diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterResidueView.h b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterResidueView.h new file mode 100644 index 00000000..41c86b32 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterResidueView.h @@ -0,0 +1,16 @@ +// +// XPNobleCenterResidueView.h +// xplan-ios +// +// Created by GreenLand on 2022/1/5. +// 剩余时间说明弹窗 + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPNobleCenterResidueView : UIView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterResidueView.m b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterResidueView.m new file mode 100644 index 00000000..98486d42 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterResidueView.m @@ -0,0 +1,92 @@ +// +// XPNobleCenterResidueView.m +// xplan-ios +// +// Created by GreenLand on 2022/1/5. +// + +#import "XPNobleCenterResidueView.h" +#import "ThemeColor+NobleCenter.h" +///Third +#import +#import "TTPopup.h" + +@interface XPNobleCenterResidueView() + +@property (nonatomic, strong) UIImageView *bgImageView; + +@property (nonatomic, strong) UILabel *titleLabel; + +@property (nonatomic, strong) UITextView *descView; + +@property (nonatomic, strong) UIButton *closeButton; + +@end + +@implementation XPNobleCenterResidueView + + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initViews]; + [self initConstraints]; + } + return self; +} + +#pragma mark - layout +- (void)initViews { + self.bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"noble_time_popBg"]]; + [self addSubview:self.bgImageView]; + + self.titleLabel = [[UILabel alloc] init]; + self.titleLabel.text = YMLocalizedString(@"XPNobleCenterResidueView0"); + self.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; + self.titleLabel.textColor = [DJDKMIMOMColor hightNobleLightTextColor]; + [self addSubview:self.titleLabel]; + + self.descView = [[UITextView alloc] init]; + self.descView.userInteractionEnabled = NO; + self.descView.backgroundColor = [UIColor clearColor]; + self.descView.text = YMLocalizedString(@"XPNobleCenterResidueView1"); + self.descView.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; + self.descView.textColor = [DJDKMIMOMColor hightNobleLightTextColor]; + [self addSubview:self.descView]; + + self.closeButton = [[UIButton alloc] init]; + [self.closeButton setBackgroundImage:[UIImage imageNamed:@"noble_time_close"] forState:UIControlStateNormal]; + [self addSubview:self.closeButton]; + [self.closeButton addTarget:self action:@selector(onCloseButtonClick:) forControlEvents:UIControlEventTouchUpInside]; +} + +- (void)onCloseButtonClick:(UIButton *)button { + [TTPopup dismiss]; +} + +- (void)initConstraints { + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(24); + make.centerX.mas_equalTo(0); + make.height.mas_equalTo(18); + }]; + + [self.descView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(16); + make.centerX.mas_equalTo(0); + make.bottom.mas_equalTo(-22); + make.leading.trailing.mas_equalTo(self.bgImageView).inset(13); + }]; + + [self.closeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(8); + make.trailing.mas_equalTo(-8); + make.width.height.mas_equalTo(22); + }]; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterTableHeadView.h b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterTableHeadView.h new file mode 100644 index 00000000..5053519b --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterTableHeadView.h @@ -0,0 +1,28 @@ +// +// XPNobleCenterTableHeadView.h +// xplan-ios +// +// Created by GreenLand on 2022/1/4. +// + +#import +#import "NobleCenterModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPNobleCenterTableHeadView : UIView + +@property (nonatomic, strong) NobleInfo *vipInfo; + +///用户是否为当前等级 +@property (nonatomic, assign) BOOL isCurrentLevel; + +///当前权力值 +@property (nonatomic, assign) NSInteger currentScore; + +///当前用户是否开通了贵族 +@property (nonatomic, assign) BOOL isOpenNoble; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterTableHeadView.m b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterTableHeadView.m new file mode 100644 index 00000000..7162fa78 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleCenterTableHeadView.m @@ -0,0 +1,177 @@ +// +// XPNobleCenterTableHeadView.m +// xplan-ios +// +// Created by GreenLand on 2022/1/4. +// + + +#import "XPNobleCenterTableHeadView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" + +//SVGA动画播放 +#import "SVGA.h" + +@interface XPNobleCenterTableHeadView () + +///贵族图标 +//@property (nonatomic, strong) NetImageView *iconImageView; +///贵族logo +@property (nonatomic, strong) SVGAImageView *svgDisplayView; +///我的等级图标 +@property (nonatomic, strong) UIImageView *myLevelImageView; +///当前权力值 +@property (nonatomic, strong) UILabel *currentValueLabel; +///尚未开通贵族 +@property (nonatomic, strong) UILabel *noOpenNobleLabel; + +@property (strong, nonatomic) SVGAParser *parser; + +@end + +@implementation XPNobleCenterTableHeadView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + [self addSubview:self.svgDisplayView]; + [self addSubview:self.myLevelImageView]; + [self addSubview:self.currentValueLabel]; + [self addSubview:self.noOpenNobleLabel]; +} + +- (void)initSubViewConstraints { + CGFloat topMargin = 0; + if (kStatusBarHeight > 20) { + topMargin = KScreenWidth > 375 ? 12 : 0; + } else { + topMargin = KScreenWidth > 375 ? 32 : 12; + } + [self.svgDisplayView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(topMargin); + make.centerX.mas_equalTo(self); + make.width.mas_equalTo(260); + make.height.mas_equalTo(155); + }]; + [self.noOpenNobleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.height.mas_equalTo(17); + make.bottom.mas_equalTo(self.currentValueLabel.mas_top).mas_offset(-3); + }]; + [self.myLevelImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.bottom.mas_equalTo(self.currentValueLabel.mas_top).mas_offset(-3); + make.width.mas_equalTo(300); + make.height.mas_equalTo(22); + }]; + [self.currentValueLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.height.mas_equalTo(14); + make.bottom.mas_equalTo(-16); + }]; +} + +#pragma mark - Getters And Setters + +- (void)setVipInfo:(NobleInfo *)vipInfo { + @kWeakify(self); + [self.parser parseWithURL:[NSURL URLWithString:vipInfo.vipLogo] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { + @kStrongify(self); + self.svgDisplayView.loops = INT_MAX; + self.svgDisplayView.clearsAfterStop = NO; + self.svgDisplayView.videoItem = videoItem; + [self.svgDisplayView startAnimation]; + } failureBlock:^(NSError * _Nullable error) { + }]; +} + +- (void)setIsOpenNoble:(BOOL)isOpenNoble { + _isOpenNoble = isOpenNoble; +} + +- (void)setIsCurrentLevel:(BOOL)isCurrentLevel { + _isCurrentLevel = isCurrentLevel; + if (isCurrentLevel) { + self.noOpenNobleLabel.hidden = YES; + self.myLevelImageView.hidden = NO; + self.currentValueLabel.hidden = NO; + } else { + if (self.isOpenNoble) { + self.noOpenNobleLabel.hidden = YES; + self.myLevelImageView.hidden = YES; + self.currentValueLabel.hidden = YES; + } else { + self.noOpenNobleLabel.hidden = NO; + self.myLevelImageView.hidden = YES; + self.currentValueLabel.hidden = YES; + } + } +} + +- (void)setCurrentScore:(NSInteger)currentScore { + _currentScore = currentScore; + if (self.isCurrentLevel) { + self.currentValueLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPNobleCenterTableHeadView0"), currentScore]; + } +} + +- (SVGAImageView *)svgDisplayView { + if (!_svgDisplayView) { + _svgDisplayView = [[SVGAImageView alloc] init]; + _svgDisplayView.contentMode = UIViewContentModeScaleAspectFit; + } + return _svgDisplayView; +} + +- (UILabel *)noOpenNobleLabel { + if (!_noOpenNobleLabel) { + _noOpenNobleLabel = [[UILabel alloc] init]; + _noOpenNobleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _noOpenNobleLabel.textAlignment = NSTextAlignmentCenter; + _noOpenNobleLabel.text = YMLocalizedString(@"XPNobleCenterTableHeadView1"); + _noOpenNobleLabel.textColor = UIColorFromRGB(0xB59862); + } + return _noOpenNobleLabel; +} + +- (UIImageView *)myLevelImageView { + if (!_myLevelImageView) { + _myLevelImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"noble_myLevel_head"]]; + _myLevelImageView.contentMode = UIViewContentModeScaleAspectFit; + _myLevelImageView.hidden = YES; + } + return _myLevelImageView; +} + +- (UILabel *)currentValueLabel { + if (!_currentValueLabel) { + _currentValueLabel = [[UILabel alloc] init]; + _currentValueLabel.textAlignment = NSTextAlignmentCenter; + _currentValueLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + _currentValueLabel.text = YMLocalizedString(@"XPNobleCenterTableHeadView2"); + _currentValueLabel.textColor = UIColorFromRGB(0xFFE7CF); + _currentValueLabel.hidden = YES; + } + return _currentValueLabel; +} + +- (SVGAParser *)parser { + if (!_parser) { + _parser = [[SVGAParser alloc]init]; + } + return _parser; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNoblePrivilegeCell.h b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNoblePrivilegeCell.h new file mode 100644 index 00000000..3cc73c57 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNoblePrivilegeCell.h @@ -0,0 +1,21 @@ +// +// XPNoblePrivilegeCell.h +// xplan-ios +// +// Created by GreenLand on 2022/1/4. +// + +#import +#import "NobleAuthInfo.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPNoblePrivilegeCell : UICollectionViewCell + +@property (nonatomic, strong) NobleAuthInfo *vipInfo; +///是否是当前等级能点亮的 +@property (nonatomic, assign) BOOL isOwn; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNoblePrivilegeCell.m b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNoblePrivilegeCell.m new file mode 100644 index 00000000..edd0a0a0 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNoblePrivilegeCell.m @@ -0,0 +1,111 @@ +// +// XPNoblePrivilegeCell.m +// xplan-ios +// +// Created by GreenLand on 2022/1/4. +// + +#import "XPNoblePrivilegeCell.h" +///Third +#import +///Tool +#import "ThemeColor+NobleCenter.h" + +#import "NetImageView.h" + +@interface XPNoblePrivilegeCell() + +///特权icon +@property (nonatomic, strong) NetImageView *iconImageView; +///特权名称 +@property (nonatomic, strong) UILabel *privilegeLabel; +///特权描述 +@property (nonatomic, strong) UILabel *descLabel; + +@end + +@implementation XPNoblePrivilegeCell + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.iconImageView]; + [self.contentView addSubview:self.privilegeLabel]; + [self.contentView addSubview:self.descLabel]; + +} + +- (void)initSubViewConstraints { + [self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(0); + make.centerX.mas_equalTo(self); + make.width.height.mas_equalTo(46); + }]; + [self.privilegeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self.iconImageView.mas_bottom).mas_offset(7); + make.height.mas_equalTo(14); + }]; + [self.descLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self.privilegeLabel.mas_bottom).mas_offset(4); + make.height.mas_equalTo(14); + make.leading.mas_equalTo(4); + }]; +} + +#pragma mark - Getters And Setters +- (void)setVipInfo:(NobleAuthInfo *)vipInfo { + _vipInfo = vipInfo; + self.iconImageView.imageUrl = vipInfo.authIcon; + self.privilegeLabel.text = vipInfo.authName; + self.descLabel.text = vipInfo.authDesc; + if (self.isOwn) { + self.iconImageView.alpha = 1; + self.privilegeLabel.textColor = [DJDKMIMOMColor hightNobleLightTextColor]; + self.descLabel.textColor = [DJDKMIMOMColor normalNobleTextColor]; + } else { + self.iconImageView.alpha = 0.5; + self.privilegeLabel.textColor = [DJDKMIMOMColor noContainTitleTextColor]; + self.descLabel.textColor = [DJDKMIMOMColor noContainDescTextColor]; + } +} + +- (NetImageView *)iconImageView { + if (!_iconImageView) { + _iconImageView = [[NetImageView alloc] init]; + _iconImageView.layer.cornerRadius = 23; + _iconImageView.layer.masksToBounds = YES; + } + return _iconImageView; +} + +- (UILabel *)privilegeLabel { + if (!_privilegeLabel) { + _privilegeLabel = [[UILabel alloc] init]; + _privilegeLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; + _privilegeLabel.textAlignment = NSTextAlignmentCenter; + _privilegeLabel.textColor = [DJDKMIMOMColor hightNobleLightTextColor]; + } + return _privilegeLabel; +} + +- (UILabel *)descLabel { + if (!_descLabel) { + _descLabel = [[UILabel alloc] init]; + _descLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightRegular]; + _descLabel.textAlignment = NSTextAlignmentCenter; + _descLabel.textColor = [DJDKMIMOMColor normalNobleTextColor]; + } + return _descLabel; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNoblePrivilegeContentCell.h b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNoblePrivilegeContentCell.h new file mode 100644 index 00000000..2cfdeeb6 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNoblePrivilegeContentCell.h @@ -0,0 +1,21 @@ +// +// XPNoblePrivilegeContentCell.h +// xplan-ios +// +// Created by GreenLand on 2022/1/4. +// + +#import +#import "NobleCenterModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPNoblePrivilegeContentCell : UITableViewCell + +@property (nonatomic, strong) NobleInfo *vipInfo; + +@property (nonatomic, strong) NSMutableArray *vipAuthInfos; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNoblePrivilegeContentCell.m b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNoblePrivilegeContentCell.m new file mode 100644 index 00000000..0996bc27 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNoblePrivilegeContentCell.m @@ -0,0 +1,136 @@ +// +// XPNoblePrivilegeContentCell.m +// xplan-ios +// +// Created by GreenLand on 2022/1/4. +// + +#import "XPNoblePrivilegeContentCell.h" +///Third +#import +#import "TTPopup.h" +///Tool +#import "DJDKMIMOMColor.h" + +///View +#import "XPNoblePrivilegeCell.h" +#import "XPNobleAuthorityDescView.h" + +@interface XPNoblePrivilegeContentCell() + +@property (nonatomic, strong) UIImageView *bgImageView; +///已有特权数量 +@property (nonatomic, strong) UILabel *privilegeLabel; + +@property (nonatomic, strong) UICollectionView *collectionView; + +@property (nonatomic, strong) NSMutableArray *dataArray; + +@end + +@implementation XPNoblePrivilegeContentCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.layer.masksToBounds = YES; + self.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.bgImageView]; + [self.contentView addSubview:self.privilegeLabel]; + [self.contentView addSubview:self.collectionView]; + self.contentView.backgroundColor = [UIColor clearColor]; +} + +- (void)initSubViewConstraints { + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; + [self.privilegeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(60); + make.height.mas_equalTo(16); + }]; + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(90); + make.leading.trailing.bottom.mas_equalTo(0); + }]; +} + +#pragma mark - UICollectionViewDataSource +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.vipAuthInfos.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPNoblePrivilegeCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass(XPNoblePrivilegeCell.class) forIndexPath:indexPath]; + NobleAuthInfo *info = [self.vipAuthInfos safeObjectAtIndex1:indexPath.row]; + if ([self.vipInfo.ownAuthTypes containsObject:@(info.authType)]) { + cell.isOwn = YES; + } + cell.vipInfo = info; + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + NobleAuthInfo *info = [self.vipAuthInfos safeObjectAtIndex1:indexPath.row]; + XPNobleAuthorityDescView *alertView = [[XPNobleAuthorityDescView alloc] initWithFrame:CGRectMake(0, 0, 300, 286)]; + alertView.vipInfo = info; + TTPopupService * config = [[TTPopupService alloc] init]; + config.maskBackgroundAlpha = 0.6; + config.contentView = alertView; + [TTPopup popupWithConfig:config]; +} + +#pragma mark - Getters And Setters +- (void)setVipAuthInfos:(NSMutableArray *)vipAuthInfos { + _vipAuthInfos = [NSMutableArray arrayWithArray:vipAuthInfos]; + self.privilegeLabel.text = [NSString stringWithFormat:@"%zd/%zd", self.vipInfo.ownAuthTypes.count, self.vipAuthInfos.count]; + [self.collectionView reloadData]; +} + +- (void)setVipInfo:(NobleInfo *)vipInfo { + _vipInfo = vipInfo; +} + +- (UIImageView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"noble_privilege_list_bg"]]; + _bgImageView.contentMode = UIViewContentModeScaleToFill; + } + return _bgImageView; +} + +- (UILabel *)privilegeLabel { + if (!_privilegeLabel) { + _privilegeLabel = [[UILabel alloc] init]; + _privilegeLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; + _privilegeLabel.textAlignment = NSTextAlignmentCenter; + _privilegeLabel.textColor = UIColorFromRGB(0xFFE7CF); + _privilegeLabel.text = @"0/12"; + } + return _privilegeLabel; +} + +- (UICollectionView *)collectionView { + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.itemSize = CGSizeMake(KScreenWidth / 3, 105); + layout.minimumLineSpacing = 0; + layout.minimumInteritemSpacing = 0; + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + [_collectionView registerClass:XPNoblePrivilegeCell.class forCellWithReuseIdentifier:NSStringFromClass(XPNoblePrivilegeCell.class)]; + _collectionView.backgroundColor = [UIColor clearColor]; + } + return _collectionView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleSettingNavView.h b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleSettingNavView.h new file mode 100644 index 00000000..afedd244 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleSettingNavView.h @@ -0,0 +1,27 @@ +// +// XPNobleSettingNavView.h +// xplan-ios +// +// Created by GreenLand on 2022/4/26. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class XPNobleSettingNavView; +@protocol XPNobleSettingNavViewDelegate + +///点击了返回按钮 +- (void)xPNobleSettingNavView:(XPNobleSettingNavView *)view didClickBackButton:(UIButton *)sender; + +@end + +@interface XPNobleSettingNavView : UIView + +///代理 +@property (nonatomic,weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleSettingNavView.m b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleSettingNavView.m new file mode 100644 index 00000000..86164bb7 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleSettingNavView.m @@ -0,0 +1,83 @@ +// +// XPNobleSettingNavView.m +// xplan-ios +// +// Created by GreenLand on 2022/4/26. +// + +#import "XPNobleSettingNavView.h" +///Third +#import +///Tool + +#import "UIButton+EnlargeTouchArea.h" + + +@interface XPNobleSettingNavView () +///返回按钮 +@property (nonatomic,strong) UIButton *backButton; +///显示文本 +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPNobleSettingNavView + + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Response +- (void)backButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPNobleSettingNavView:didClickBackButton:)]) { + [self.delegate xPNobleSettingNavView:self didClickBackButton:sender]; + } +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + [self addSubview:self.backButton]; + [self addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(15); + make.centerY.equalTo(self.mas_bottom).mas_offset(-22); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.centerY.equalTo(self.mas_bottom).mas_offset(-22); + }]; +} + +#pragma mark - Getters And Setters +- (UIButton *)backButton { + if (!_backButton) { + _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_backButton setImage:[UIImage imageNamed:@"home_search_white_back"] forState:UIControlStateNormal]; + _backButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; + [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_backButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + } + return _backButton; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; + _titleLabel.text = YMLocalizedString(@"XPNobleSettingNavView0"); + _titleLabel.textColor = [UIColor whiteColor]; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleUpgradeLevelView.h b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleUpgradeLevelView.h new file mode 100644 index 00000000..fe61c641 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleUpgradeLevelView.h @@ -0,0 +1,19 @@ +// +// XPNobleUpgradeLevelView.h +// xplan-ios +// +// Created by GreenLand on 2022/1/6. +// 贵族等级提升view + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class NobleLevelUpModel; +@interface XPNobleUpgradeLevelView : UIView + +@property (nonatomic, strong) NobleLevelUpModel *levelUpInfo; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleUpgradeLevelView.m b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleUpgradeLevelView.m new file mode 100644 index 00000000..3f5b3a8d --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/XPNobleUpgradeLevelView.m @@ -0,0 +1,212 @@ +// +// XPNobleUpgradeLevelView.m +// xplan-ios +// +// Created by GreenLand on 2022/1/6. +// + +#import "XPNobleUpgradeLevelView.h" +///tool +#import "ThemeColor+NobleCenter.h" +#import "Api+NobleCenter.h" + +//SVGA动画播放 +#import "SVGA.h" +///third +#import +#import "TTPopup.h" +#import "NetImageView.h" +///model +#import "NobleLevelUpModel.h" +///View +#import "XCCurrentVCStackManager.h" +#import "XPNobleCenterViewController.h" + +@interface XPNobleUpgradeLevelView () + +///背景 +@property (nonatomic, strong) UIImageView *bgImageView; +///贵族logo +@property (nonatomic, strong) SVGAImageView *svgDisplayView; +///主标题 +@property (nonatomic, strong) UILabel *titleLabel; +///等级提升标题 +@property (nonatomic, strong) UILabel *subTitleLabel; +///关闭按钮 +@property (nonatomic, strong) UIButton *closeButton; +///前往贵族中心 +@property (nonatomic, strong) UIButton *jumpButton; + +@property (strong, nonatomic) SVGAParser *parser; +///保留原有装扮 +@property (nonatomic, strong) UIButton *keepOriginalButton; +///佩戴高等级装扮 +@property (nonatomic, strong) UIButton *dressHighLevelButton; + +@end + +@implementation XPNobleUpgradeLevelView + + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initViews]; + [self initConstraints]; + } + return self; +} + +#pragma mark - layout +- (void)initViews { + self.bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"noble_time_popBg"]]; + [self addSubview:self.bgImageView]; + + self.titleLabel = [[UILabel alloc] init]; + self.titleLabel.text = YMLocalizedString(@"XPNobleUpgradeLevelView0"); + self.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; + self.titleLabel.textColor = [DJDKMIMOMColor hightNobleLightTextColor]; + [self addSubview:self.titleLabel]; + + [self addSubview:self.svgDisplayView]; + + self.subTitleLabel = [[UILabel alloc] init]; + self.subTitleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; + self.subTitleLabel.textColor = [DJDKMIMOMColor hightNobleLightTextColor]; + self.subTitleLabel.numberOfLines = 0; + self.subTitleLabel.textAlignment = NSTextAlignmentCenter; + [self addSubview:self.subTitleLabel]; + + self.closeButton = [[UIButton alloc] init]; + [self.closeButton setBackgroundImage:[UIImage imageNamed:@"noble_time_close"] forState:UIControlStateNormal]; + [self addSubview:self.closeButton]; + [self.closeButton addTarget:self action:@selector(onCloseButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + + self.keepOriginalButton = [[UIButton alloc] init]; + [self.keepOriginalButton setBackgroundImage:[UIImage imageNamed:@"noble_upgrade_keepBtn"] forState:UIControlStateNormal]; + [self.keepOriginalButton setTitle:YMLocalizedString(@"XPNobleUpgradeLevelView1") forState:UIControlStateNormal]; + self.keepOriginalButton.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + [self.keepOriginalButton setTitleColor:[DJDKMIMOMColor hightNobleLightTextColor] forState:UIControlStateNormal]; + [self.keepOriginalButton addTarget:self action:@selector(onKeepButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + [self addSubview:self.keepOriginalButton]; + + self.dressHighLevelButton = [[UIButton alloc] init]; + [self.dressHighLevelButton setBackgroundImage:[UIImage imageNamed:@"noble_upgrade_dressBtn"] forState:UIControlStateNormal]; + [self.dressHighLevelButton setTitle:YMLocalizedString(@"XPNobleUpgradeLevelView2") forState:UIControlStateNormal]; + self.dressHighLevelButton.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + [self.dressHighLevelButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + [self.dressHighLevelButton addTarget:self action:@selector(onDressButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + [self addSubview:self.dressHighLevelButton]; + + self.jumpButton = [[UIButton alloc] init]; + [self.jumpButton setBackgroundImage:[UIImage imageNamed:@"noble_upgrade_jumpBtn"] forState:UIControlStateNormal]; + [self.jumpButton setTitle:YMLocalizedString(@"XPNobleUpgradeLevelView3") forState:UIControlStateNormal]; + self.jumpButton.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + [self.jumpButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + [self.jumpButton addTarget:self action:@selector(onJumpButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + [self addSubview:self.jumpButton]; +} + +- (void)initConstraints { + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.top.trailing.mas_equalTo(0); + make.height.mas_equalTo(285); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(23); + make.centerX.mas_equalTo(0); + make.height.mas_equalTo(18); + }]; + [self.svgDisplayView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.titleLabel.mas_bottom); + make.centerX.mas_equalTo(self.bgImageView); + make.width.mas_equalTo(182); + make.height.mas_equalTo(126); + }]; + + [self.subTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.svgDisplayView.mas_bottom); + make.centerX.mas_equalTo(self.bgImageView); + make.height.mas_equalTo(44); + make.leading.mas_equalTo(self.bgImageView).mas_offset(15); + }]; + + [self.keepOriginalButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.subTitleLabel.mas_bottom).mas_offset(14); + make.width.mas_equalTo(130); + make.height.mas_equalTo(44); + make.trailing.mas_equalTo(self.mas_centerX).mas_offset(-4); + }]; + + [self.dressHighLevelButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.keepOriginalButton); + make.width.mas_equalTo(130); + make.height.mas_equalTo(44); + make.leading.mas_equalTo(self.mas_centerX).mas_offset(4); + }]; + + [self.jumpButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.bgImageView.mas_bottom).mas_offset(22); + make.centerX.mas_equalTo(0); + make.width.mas_equalTo(204); + make.height.mas_equalTo(44); + }]; + [self.closeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(8); + make.trailing.mas_equalTo(-8); + make.width.height.mas_equalTo(22); + }]; +} + +#pragma mark - events +- (void)onCloseButtonClick:(UIButton *)button { + [TTPopup dismiss]; +} + +- (void)onJumpButtonClick:(UIButton *)button { + [TTPopup dismiss]; + XPNobleCenterViewController * nobleVC = [[XPNobleCenterViewController alloc] initWithRoomUid:nil]; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:nobleVC animated:YES]; +} + +- (void)onKeepButtonClick:(UIButton *)button { + [Api requestRecoveryDress:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + [TTPopup dismiss]; + }]; +} + +- (void)onDressButtonClick:(UIButton *)button { + [TTPopup dismiss]; +} + +- (void)setLevelUpInfo:(NobleLevelUpModel *)levelUpInfo { + self.subTitleLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPNobleUpgradeLevelView4"), levelUpInfo.vipName]; + @kWeakify(self); + [self.parser parseWithURL:[NSURL URLWithString:levelUpInfo.vipLogo] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { + @kStrongify(self); + self.svgDisplayView.loops = INT_MAX; + self.svgDisplayView.clearsAfterStop = NO; + self.svgDisplayView.videoItem = videoItem; + [self.svgDisplayView startAnimation]; + } failureBlock:^(NSError * _Nullable error) { + }]; +} + +- (SVGAImageView *)svgDisplayView { + if (!_svgDisplayView) { + _svgDisplayView = [[SVGAImageView alloc] init]; + _svgDisplayView.contentMode = UIViewContentModeScaleAspectFit; + } + return _svgDisplayView; +} + +- (SVGAParser *)parser { + if (!_parser) { + _parser = [[SVGAParser alloc]init]; + } + return _parser; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Noble/View/ThemeColor+NobleCenter.h b/YuMi/Modules/YMMine/View/Noble/View/ThemeColor+NobleCenter.h new file mode 100644 index 00000000..ec9d3720 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/ThemeColor+NobleCenter.h @@ -0,0 +1,31 @@ +// +// ThemeColorNobleCenter.h +// xplan-ios +// +// Created by GreenLand on 2022/1/5. +// + +#import "DJDKMIMOMColor.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface DJDKMIMOMColor (NobleCenter) + +///普通文字颜色(0xBC9E66) ++ (UIColor *)normalNobleTextColor; + +///高亮文字颜色(0xFFE3AF) ++ (UIColor *)hightNobleLightTextColor; + +///贵族特权未点亮标题颜色(0x9F8052) ++ (UIColor *)noContainTitleTextColor; + +///贵族特权未点亮短描述颜色(0x8B7245) ++ (UIColor *)noContainDescTextColor; + +///贵族设置背景颜色(0x232017) ++ (UIColor *)nobleSettingBgColor; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Noble/View/ThemeColor+NobleCenter.m b/YuMi/Modules/YMMine/View/Noble/View/ThemeColor+NobleCenter.m new file mode 100644 index 00000000..0e69914b --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/ThemeColor+NobleCenter.m @@ -0,0 +1,37 @@ +// +// ThemeColorNobleCenter.m +// xplan-ios +// +// Created by GreenLand on 2022/1/5. +// + +#import "ThemeColor+NobleCenter.h" + +@implementation DJDKMIMOMColor (NobleCenter) + +///普通文字颜色(0xBC9E66) ++ (UIColor *)normalNobleTextColor { + return UIColorFromRGB(0xBC9E66); +} + +///高亮文字颜色(0xFFE3AF) ++ (UIColor *)hightNobleLightTextColor { + return UIColorFromRGB(0xFFE3AF); +} + +///贵族特权未点亮标题颜色(0x9F8052) ++ (UIColor *)noContainTitleTextColor { + return UIColorFromRGB(0x9F8052); +} + +///贵族特权未点亮短描述颜色(0x8B7245) ++ (UIColor *)noContainDescTextColor { + return UIColorFromRGB(0x8B7245); +} + +///贵族设置背景颜色(0x232017) ++ (UIColor *)nobleSettingBgColor { + return UIColorFromRGB(0x232017); +} + +@end diff --git a/YuMi/Modules/YMMine/View/Noble/View/XPNobleCenterListViewController.h b/YuMi/Modules/YMMine/View/Noble/View/XPNobleCenterListViewController.h new file mode 100644 index 00000000..7d6e6591 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/XPNobleCenterListViewController.h @@ -0,0 +1,28 @@ +// +// XPNobleCenterListViewController.h +// xplan-ios +// +// Created by GreenLand on 2021/12/28. +// + +#import "MvpViewController.h" +#import +#import "NobleCenterModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPNobleCenterListViewController : MvpViewController + +@property (nonatomic, strong) NobleInfo *vipInfo; + +@property (nonatomic, strong) NSMutableArray *vipAuthInfos; +///用户是否为当前等级 +@property (nonatomic, assign) BOOL isCurrentLevel; +///当前权力值 +@property (nonatomic, assign) NSInteger currentScore; +///当前用户是否开通了贵族 +@property (nonatomic, assign) BOOL isOpenNoble; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Noble/View/XPNobleCenterListViewController.m b/YuMi/Modules/YMMine/View/Noble/View/XPNobleCenterListViewController.m new file mode 100644 index 00000000..5e611fbd --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/XPNobleCenterListViewController.m @@ -0,0 +1,162 @@ +// +// XPNobleCenterListViewController.m +// xplan-ios +// +// Created by GreenLand on 2021/12/28. +// + +#import "XPNobleCenterListViewController.h" +///Third +#import +///Tool + +///View +#import "XPNobleCenterTableHeadView.h" +#import "XPNoblePrivilegeContentCell.h" +#import "XPNobleCenterEmptyView.h" +///P +#import "XPNobleCenterProtocol.h" + +@interface XPNobleCenterListViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +//@property (nonatomic,strong) NSArray *datasource; +///列表头view +@property (nonatomic, strong) XPNobleCenterTableHeadView *headView; + +@property (nonatomic, strong) UIImageView *bgImageView; + +@end + +@implementation XPNobleCenterListViewController + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.view.backgroundColor = [UIColor clearColor]; + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +#pragma mark - JXCategoryListContentViewDelegate +- (UIView *)listView { + return self.view; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.vipInfo.comingSoon == 2 ? 0 : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + NSInteger itemCount = self.vipAuthInfos.count; + CGFloat lineCount = (itemCount % 3 == 0) ? itemCount / 3 : (itemCount / 3 + 1); + CGFloat itemHeight = 105; + CGFloat bottomHeight = kSafeAreaBottomHeight + 44 + 5; + return 90 + lineCount * itemHeight + bottomHeight; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + XPNoblePrivilegeContentCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPNoblePrivilegeContentCell class])]; + cell.selectionStyle = UITableViewCellSelectionStyleNone; + cell.vipInfo = self.vipInfo; + cell.vipAuthInfos = self.vipAuthInfos; + return cell; +} + +#pragma mark - Getters And Setters +- (void)setVipInfo:(NobleInfo *)vipInfo { + _vipInfo = vipInfo; + if (vipInfo.comingSoon == 2) {//敬请期待 + self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectZero]; + XPNobleCenterEmptyView *emptyView = [[XPNobleCenterEmptyView alloc] initWithFrame:self.tableView.bounds]; + emptyView.emptyImageStr = vipInfo.vipLogo; + self.tableView.backgroundView = emptyView; + } else { + self.headView.vipInfo = vipInfo; + self.tableView.tableHeaderView = self.headView; + } + [self.tableView reloadData]; +} + +- (void)setVipAuthInfos:(NSMutableArray *)vipAuthInfos { + _vipAuthInfos = [NSMutableArray arrayWithArray:vipAuthInfos]; + [self.tableView reloadData]; +} + +- (void)setIsCurrentLevel:(BOOL)isCurrentLevel { + _isCurrentLevel = isCurrentLevel; + self.headView.isCurrentLevel = isCurrentLevel; +} + +- (void)setCurrentScore:(NSInteger)currentScore { + _currentScore = currentScore; + self.headView.currentScore = currentScore; +} + +- (void)setIsOpenNoble:(BOOL)isOpenNoble { + _isOpenNoble = isOpenNoble; + self.headView.isOpenNoble = isOpenNoble; + if (isOpenNoble) { + [self.tableView setContentInset:UIEdgeInsetsMake(0, 0, 36, 0)]; + } +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + _tableView.bounces = NO; + [_tableView registerClass:[XPNoblePrivilegeContentCell class] forCellReuseIdentifier:NSStringFromClass([XPNoblePrivilegeContentCell class])]; + } + return _tableView; +} + +- (XPNobleCenterTableHeadView *)headView { + if (!_headView) { + CGFloat height; + if (kStatusBarHeight > 20) { + height = KScreenWidth > 375 ? 220 : 195; + } else { + height = KScreenWidth > 375 ? 240 : 210; + } + _headView = [[XPNobleCenterTableHeadView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, height)]; + } + return _headView; +} + +- (UIImageView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"noble_privilege_list_bg"]]; + } + return _bgImageView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Noble/View/XPNobleCenterViewController.h b/YuMi/Modules/YMMine/View/Noble/View/XPNobleCenterViewController.h new file mode 100644 index 00000000..ed574be3 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/XPNobleCenterViewController.h @@ -0,0 +1,19 @@ +// +// XPNobleCenterViewController.h +// xplan-ios +// +// Created by GreenLand on 2021/12/28. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPNobleCenterViewController : MvpViewController + +///通过roomUid初始化(从房间进入) +- (instancetype)initWithRoomUid:(NSInteger)roomUid; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Noble/View/XPNobleCenterViewController.m b/YuMi/Modules/YMMine/View/Noble/View/XPNobleCenterViewController.m new file mode 100644 index 00000000..aad90d46 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/XPNobleCenterViewController.m @@ -0,0 +1,559 @@ +// +// XPNobleCenterViewController.m +// xplan-ios +// +// Created by GreenLand on 2021/12/28. +// + +#import "XPNobleCenterViewController.h" +///Third +#import +#import +#import +#import +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "ThemeColor+NobleCenter.h" +#import "Api+NobleCenter.h" + +#import "XPIAPHelper.h" +#import "RechargeStorage.h" +#import "AccountInfoStorage.h" +#import "UIImage+Utils.h" +#import "TTPopup.h" +#import "StatisticsServiceHelper.h" +///View +#import "XPNobleCenterListViewController.h" +#import "XPNobleCenterNavView.h" +#import "XPNobleCenterMyNobleView.h" +#import "XPWebViewController.h" +#import "XPNobleSettingViewController.h" +#import "XPSkillCardPlayerManager.h" +///P +#import "XPNobleCenterPresenter.h" +#import "Api+Gift.h" +///model +#import "NobleCenterModel.h" +#import "UserInfoModel.h" +#import "NobleRechargeModel.h" +#import "AttachmentModel.h" +#import "WalletInfoModel.h" +#import "XPNobleCenterPayView.h" +#import "XPNobleCenterProtocol.h" +#import "XPIAPRechargeViewController.h" +@interface XPNobleCenterViewController () +///分页标题 +@property (nonatomic, strong) NSArray *titles; +///分页控件 +@property (nonatomic, strong) JXCategoryTitleView *titleView; +///分页lineView +@property (nonatomic, strong) JXCategoryListContainerView *lineView; +///头饰 +@property (nonatomic,strong) XPNobleCenterListViewController *nobleListView; +///头部背景图 +@property (nonatomic, strong) UIImageView *headBGImgeView; + +@property (nonatomic, strong) XPNobleCenterNavView *navView; + +///总数据 +@property (nonatomic, strong) NobleCenterModel *model; +///用户信息 +@property (nonatomic, strong) UserInfoModel *userInfo; +///开通贵族 +@property (nonatomic, strong) UILabel *openNobleButton; +/// +@property (nonatomic,strong) UIImageView *openNobleView; +@property (nonatomic,strong) UIImageView *openNobleIconView; +///当前用户贵族信息-开通了贵族才显示 +@property (nonatomic, strong) XPNobleCenterMyNobleView *myNobleView; +///更新用户信息 +@property (nonatomic, assign) BOOL needUpdateUserInfo; + +///充值----- +@property (nonatomic, strong) NobleRechargeModel *rechargeModel; +///订单编号 +@property (nonatomic,copy) NSString *orderId; +///房间UID +@property (nonatomic, assign) NSInteger roomUid; +@property (nonatomic,strong) WalletInfoModel * infoModel; +@property(nonatomic,strong) UIButton *rankBtn; +@end + +@implementation XPNobleCenterViewController + +///通过roomUid初始化(从房间进入) +- (instancetype)initWithRoomUid:(NSInteger)roomUid { + if (self = [super init]) { + self.roomUid = roomUid; + } + return self;; +} + +- (void)dealloc { + [XPIAPHelper shareHelper].delegate = nil; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + + [XPIAPHelper shareHelper].delegate = self; + [[NIMSDK sharedSDK].systemNotificationManager addDelegate:self]; + [self requestHttp]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [self hideNavigationBar]; + if (self.needUpdateUserInfo) { + [self.presenter getUserInfo]; + } + if([XPSkillCardPlayerManager shareInstance].isInRoom == YES && [XPSkillCardPlayerManager shareInstance].isInRoomFirstRecharge == NO){ + [XPSkillCardPlayerManager shareInstance].isInRoomFirstRecharge = YES; + } +} + +- (XPNobleCenterPresenter *)createPresenter { + return [[XPNobleCenterPresenter alloc] init]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.view.backgroundColor = UIColorFromRGB(0x221E13); + [self.view addSubview:self.headBGImgeView]; + [self.view addSubview:self.navView]; + [self.view addSubview:self.titleView]; + [self.view addSubview:self.lineView]; + [self.view addSubview:self.openNobleView]; + [self.view addSubview:self.myNobleView]; + [self.openNobleView addSubview:self.openNobleIconView]; + [self.openNobleView addSubview:self.openNobleButton]; + [self.view addSubview:self.rankBtn]; +} + +- (void)initSubViewConstraints { + CGFloat height = KScreenWidth * 410 / 375.0; + [self.headBGImgeView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.top.trailing.mas_equalTo(self.view); + make.height.mas_equalTo(height); + }]; + + [self.navView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.top.mas_equalTo(self.view); + make.height.mas_equalTo(kNavigationHeight); + }]; + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.mas_equalTo(self.view); + make.height.mas_equalTo(40); + make.top.mas_equalTo(self.navView.mas_bottom); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.bottom.mas_equalTo(self.view); + make.top.mas_equalTo(self.titleView.mas_bottom); + }]; + [self.openNobleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.view); + make.bottom.mas_equalTo(-kSafeAreaBottomHeight - 5); + make.width.mas_equalTo(300); + make.height.mas_equalTo(44); + }]; + [self.openNobleButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_lessThanOrEqualTo(258); + make.centerX.equalTo(self.openNobleView); + make.top.bottom.equalTo(self.openNobleView); + }]; + [self.myNobleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(91+kSafeAreaBottomHeight); + make.leading.bottom.trailing.mas_equalTo(0); + }]; + [self.openNobleIconView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(20); + make.centerY.equalTo(self.openNobleView); + make.trailing.equalTo(self.openNobleButton.mas_leading).mas_offset(-2); + + }]; + [self.rankBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(57); + make.height.mas_equalTo(24); + make.trailing.mas_equalTo(-24); + make.top.mas_equalTo(139); + }]; + +} +#pragma mark - XPNobleCenterPayViewDelegate +- (void)payWithType:(NobleCenterPayType)type{ + if(type == NobleCenterPayType_diamond){ + if(self.infoModel.diamonds.integerValue < 2990){ + TTAlertConfig *config = [[TTAlertConfig alloc]init]; + config.message = YMLocalizedString(@"XPNobleCenterViewController3"); + config.actionStyle = TTAlertActionBothStyle; + [TTPopup alertWithConfig:config showBorder:NO confirmHandler:^{ + + XPIAPRechargeViewController * webVC =[[XPIAPRechargeViewController alloc] init]; + [self.navigationController pushViewController:webVC animated:YES]; + } cancelHandler:^{ + + }]; + return; + } + NSString *roomUid = self.roomUid > 0 ? @(self.roomUid).stringValue : @(self.userInfo.uid).stringValue; + [self.presenter openVipWithDiamondRoomUid:roomUid]; + return; + } + if(self.rechargeModel.list.count == 0)return; + [self showLoading]; + RechargeListModel *rechargeModel = [self.rechargeModel.list safeObjectAtIndex1:0]; + [self.presenter requestNobleIAPRechargeOrderWithChargeProdId:rechargeModel.chargeProdId roomUid:self.roomUid ? [NSString stringWithFormat:@"%zd", self.roomUid] : nil]; +} +-(void)openVipWithDiamondSuccess{ + [self requestHttp]; +} +-(void)openVipWithDiamondFail{ + +} +///请求贵族中心数据 +- (void)requestHttp { + [self.presenter getUserInfo]; + [self checkTranscationIds]; + [self.presenter getNobleChargeProductListWithChannelType:@"9"]; + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + [Api getUserWalletInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if(code == 200){ + WalletInfoModel * model = [WalletInfoModel modelWithDictionary:data.data]; + self.infoModel = model; + } + } uid:uid ticket:ticket]; +} + +///批量验证 +- (void)checkTranscationIds { + NSString * uid = [AccountInfoStorage instance].getUid; + NSArray * array = [RechargeStorage getAllReciptsWithUid:uid]; + if (array.count > 0) { + [self.presenter checkTranscationIds:array]; + } +} + +#pragma mark - XPNobleCenterProtocol +///获取用户信息成功 +- (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo { + self.userInfo = userInfo; + self.needUpdateUserInfo = NO; + [self.presenter getNobleCenterInfo]; +} + +- (void)getNobleCenterInfoSuccess:(NobleCenterModel *)model { + self.model = model; + __block NSMutableArray *names = [NSMutableArray array]; + NSInteger defaultSelectIndex = 0; + for (int index = 0; index < model.vipInfos.count; index++) { + NobleInfo *tagInfo = [model.vipInfos safeObjectAtIndex1:index]; + [names addObject:tagInfo.vipName]; + if (tagInfo.vipLevel == model.currLevel) { + defaultSelectIndex = index; + } + } + self.titles = names.copy; + self.titleView.titles = self.titles; + self.openNobleView.hidden = self.userInfo.userVipInfoVO.vipLevel; + self.myNobleView.hidden = !self.userInfo.userVipInfoVO.vipLevel; + if (self.userInfo.userVipInfoVO) { + self.myNobleView.model = model; + } + self.titleView.defaultSelectedIndex = defaultSelectIndex; + [self.titleView reloadData]; + [self.lineView reloadData]; + self.navView.hideSettingBtn = self.model.currLevel < 9; +} + +///获取贵族充值信息成功 +- (void)onGetNobleRechargeDataSuccess:(NobleRechargeModel *)rechargeInfo { + self.rechargeModel = rechargeInfo; + if (self.rechargeModel.list.count == 0)return; + RechargeListModel *rechargeModel = [self.rechargeModel.list safeObjectAtIndex1:0]; + NSString *title = [NSString stringWithFormat:YMLocalizedString(@"XPNobleCenterViewController0"), rechargeModel.money]; + self.openNobleButton.text = title; +} + +///请求充值id的状态成功 +- (void)requestIAPRechargeOrderSuccess:(NSString *)orderId chargeProdId:(NSString *)chargeProdId { + if (orderId.length > 0) { + self.orderId = orderId; + [[XPIAPHelper shareHelper] buyAppProductWithAppProductId:chargeProdId]; + } else { + [self hideHUD]; + } +} +///请求充值账单失败 +- (void)requestIAPRechargeOrderFail:(NSString *)message code:(NSInteger)code { + [self hideHUD]; + [self showErrorToast:message]; +} + +///二次校验成功 +- (void)checkReceiptSuccess:(NSString *)transcationId { + [self deleteRechageReciptWithTransactionIdentifier:transcationId]; + self.orderId = nil; + //5秒之后如果没有收到开通成功的云信消息,则请求一次用户信息 + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + if (!self.userInfo.userVipInfoVO) { + ///刷新一下用户的信息 + [self.presenter getUserInfo]; + } + }); +} + +///删除本地保存的 +- (void)deleteRechageReciptWithTransactionIdentifier:(NSString *)transactionIdentifier { + NSString * uid = [AccountInfoStorage instance].getUid; + BOOL deleteSuccess = [RechargeStorage delegateTranscationId:transactionIdentifier uid:uid]; + if (deleteSuccess) { +#warning to do 保存失败 需要埋点 + } +} + +- (void)checkTranscationIdsSuccess { + NSString * uid = [AccountInfoStorage instance].getUid; + [RechargeStorage delegateAllTranscationIdsWithUid:uid]; +} +-(void)rankAction{ + XPWebViewController * webVC =[[XPWebViewController alloc] init]; + webVC.url = URLWithType(kNobleRankURL); + [self.navigationController pushViewController:webVC animated:YES]; +} +#pragma mark - XPIAPHelperDelegate +///当前充值的状态 +- (void)rechargeProcessStatus:(PaymentStatus)status { + [self hideHUD]; + if (status == PaymentStatus_Purchased) { + [self showLoading]; + } else if (status == PaymentStatus_Purchasing) { + [self showLoading]; + } else if (status == PaymentStatus_Failed) { + [self showErrorToast:YMLocalizedString(@"XPNobleCenterViewController1")]; + } else if (status == PaymentStatus_Deferred) { + [self showErrorToast:YMLocalizedString(@"XPNobleCenterViewController2")]; + } +} + +///充值成功回调id +- (void)rechargeSuccess:(NSString *)transactionIdentifier { + ///保存唯一凭证 + [self saveRechageReciptWithTransactionIdentifier:transactionIdentifier]; + NSData *receiptData = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]]; + NSString * receipt = [MF_Base64Codec base64StringFromData:receiptData]; + ///二次验证 + [self.presenter checkReceiptWithData:receipt orderId:self.orderId transcationId:transactionIdentifier]; +} + +///充值成功之后保存订单到钥匙串 +- (void)saveRechageReciptWithTransactionIdentifier:(NSString *)transactionIdentifier { + NSData *receipt = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]]; + NSString *encodeStr = [receipt base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed]; + NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; + [dictionary setObject:transactionIdentifier forKey:@"transcationId"]; + [dictionary setObject:encodeStr forKey:@"recipt"]; + [dictionary setObject:self.orderId forKey:@"orderId"]; + NSString *reciptJson = [dictionary toJSONString]; + NSString * uid = [AccountInfoStorage instance].getUid; + BOOL saveSuccess = [RechargeStorage saveTranscationId:transactionIdentifier recipt:reciptJson uid:uid]; + if (!saveSuccess) { +#warning to do 保存失败 需要埋点 + } +} + + +#pragma mark - JXCategoryViewDelegate +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { + return self.titles.count; +} + +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { + XPNobleCenterListViewController *VC = [[XPNobleCenterListViewController alloc] init]; + VC.isOpenNoble = self.userInfo.userVipInfoVO.vipLevel; + NobleInfo *vipInfo = [self.model.vipInfos safeObjectAtIndex1:index]; + VC.vipInfo = vipInfo; + if (vipInfo.comingSoon != 2) { + VC.vipAuthInfos = [[NSMutableArray alloc]initWithArray:self.model.vipAuthInfos]; + VC.isCurrentLevel = self.userInfo.userVipInfoVO.vipLevel == vipInfo.vipLevel; + VC.currentScore = self.model.currScore; + } + return VC; +} + +// 点击选中或者滚动选中都会调用该方法。适用于只关心选中事件,不关心具体是点击还是滚动选中的。 +- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { + // 侧滑手势处理 + self.navigationController.interactivePopGestureRecognizer.enabled = (index == 0); +} + +#pragma mark -NIMSystemNotificationManagerDelegate +- (void)onReceiveCustomSystemNotification:(NIMCustomSystemNotification *)notification { + if (notification.receiverType == NIMSessionTypeP2P) { + if (notification.content != nil) { + NSData *jsonData = [notification.content dataUsingEncoding:NSUTF8StringEncoding]; + NSError *err; + NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err]; + if(err) { + NSLog(@"json解析失败:%@",err); + return; + } + if ([dic[@"first"] intValue] == CustomMessageType_Noble_VIP && [dic[@"second"] intValue] == Custom_Message_Sub_Open_Noble_Success) { // 开通贵族成功 + [self.presenter getUserInfo]; + } + } + } +} + +#pragma mark - XPNobleCenterNavViewDelegate +- (void)xPNobleCenterNavView:(XPNobleCenterNavView *)view didClickBackButton:(UIButton *)sender { + [self.navigationController popViewControllerAnimated:YES]; +} + +- (void)xPNobleCenterNavView:(XPNobleCenterNavView *)view didClickHelpButton:(UIButton *)sender { + XPWebViewController * webVC =[[XPWebViewController alloc] init]; + webVC.url = URLWithType(kNobleRuleURL); + [self.navigationController pushViewController:webVC animated:YES]; +} + +- (void)xPNobleCenterNavView:(XPNobleCenterNavView *)view didClickSettingButton:(UIButton *)sender { + XPNobleSettingViewController * settingVC =[[XPNobleSettingViewController alloc] init]; + settingVC.enterHide = self.userInfo.userVipInfoVO.enterHide; + settingVC.didUpdateEnterHideBlock = ^{ + self.needUpdateUserInfo = YES; + }; + [self.navigationController pushViewController:settingVC animated:YES]; +} + +#pragma mark - events +- (void)onOpenNobleButtonClick { + + XPNobleCenterPayView *payView = [[XPNobleCenterPayView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; + payView.diamonds = self.infoModel.diamonds; + payView.delegate = self; + [self.view addSubview:payView]; + + +} + +#pragma mark - Getters And Setters +- (JXCategoryTitleView *)titleView { + if (!_titleView) { + _titleView = [[JXCategoryTitleView alloc] init]; + _titleView.delegate = self; + _titleView.titles = self.titles; + _titleView.titleColor = [DJDKMIMOMColor normalNobleTextColor]; + _titleView.titleSelectedColor = [DJDKMIMOMColor hightNobleLightTextColor]; + _titleView.titleFont = [UIFont systemFontOfSize:14]; + _titleView.titleSelectedFont = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; + _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; + _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; + _titleView.defaultSelectedIndex = 0; + _titleView.listContainer = self.lineView; + + JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init]; + lineView.indicatorWidth = 26; + lineView.indicatorHeight = 3; + lineView.indicatorColor = UIColorFromRGB(0xFFD3A8); + lineView.verticalMargin = 0; + _titleView.indicators = @[lineView]; + } + return _titleView; +} + +- (JXCategoryListContainerView *)lineView { + if (!_lineView) { + _lineView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; + _lineView.scrollView.backgroundColor = [UIColor clearColor]; + _lineView.defaultSelectedIndex = 0; + _lineView.scrollView.scrollEnabled = NO; + } + return _lineView; +} + +- (NSArray *)titles { + if (!_titles) { + _titles = @[]; + } + return _titles; +} + +- (XPNobleCenterListViewController *)nobleListView { + if (!_nobleListView) { + _nobleListView = [[XPNobleCenterListViewController alloc] init]; + } + return _nobleListView; +} + +- (UIImageView *)headBGImgeView { + if (!_headBGImgeView) { + _headBGImgeView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"nobleCenter_head_bg"]]; + _headBGImgeView.contentMode = UIViewContentModeScaleAspectFit; + } + return _headBGImgeView; +} + +- (XPNobleCenterNavView *)navView { + if (!_navView) { + _navView = [[XPNobleCenterNavView alloc] init]; + _navView.delegate = self; + } + return _navView; +} + +- (UILabel *)openNobleButton { + if (!_openNobleButton) { + NSString *title = [NSString stringWithFormat:YMLocalizedString(@"XPNobleCenterViewController0"), @"2.99"]; + _openNobleButton = [UILabel new]; + _openNobleButton.text = title; + _openNobleButton.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + _openNobleButton.textColor = [DJDKMIMOMColor mainTextColor]; + _openNobleButton.numberOfLines = 0; + _openNobleButton.textAlignment = NSTextAlignmentCenter; + + } + return _openNobleButton; +} +- (UIImageView *)openNobleView{ + if (!_openNobleView){ + _openNobleView = [UIImageView new]; + _openNobleView.image = kImage(@"noble_open_btn_bg"); + _openNobleView.userInteractionEnabled = YES; + _openNobleView.hidden = YES; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(onOpenNobleButtonClick)]; + [_openNobleView addGestureRecognizer:tap]; + } + return _openNobleView; +} +-(UIImageView *)openNobleIconView{ + if (!_openNobleIconView){ + _openNobleIconView = [UIImageView new]; + _openNobleIconView.image = kImage(@"noble_open_btn"); + } + return _openNobleIconView; +} +- (XPNobleCenterMyNobleView *)myNobleView { + if (!_myNobleView) { + _myNobleView = [[XPNobleCenterMyNobleView alloc] init]; + _myNobleView.hidden = YES; + } + return _myNobleView; +} +- (UIButton *)rankBtn{ + if(!_rankBtn){ + _rankBtn = [UIButton new]; + [_rankBtn setBackgroundImage:kImage(@"mine_noble_center_rank") forState:UIControlStateNormal]; + [_rankBtn addTarget:self action:@selector(rankAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _rankBtn; +} +@end diff --git a/YuMi/Modules/YMMine/View/Noble/View/XPNobleSettingViewController.h b/YuMi/Modules/YMMine/View/Noble/View/XPNobleSettingViewController.h new file mode 100644 index 00000000..31c3e6e7 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/XPNobleSettingViewController.h @@ -0,0 +1,20 @@ +// +// XPNobleSettingViewController.h +// xplan-ios +// +// Created by GreenLand on 2022/4/26. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPNobleSettingViewController : MvpViewController + +@property (nonatomic, assign) BOOL enterHide; + +@property (nonatomic, copy) void(^didUpdateEnterHideBlock)(void); + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Noble/View/XPNobleSettingViewController.m b/YuMi/Modules/YMMine/View/Noble/View/XPNobleSettingViewController.m new file mode 100644 index 00000000..20df3f46 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/XPNobleSettingViewController.m @@ -0,0 +1,130 @@ +// +// XPNobleSettingViewController.m +// xplan-ios +// +// Created by GreenLand on 2022/4/26. +// + +#import "XPNobleSettingViewController.h" +#import "XPNobleSettingNavView.h" +///Tool +#import "ThemeColor+NobleCenter.h" + +#import "UIButton+EnlargeTouchArea.h" +///Third +#import +///P +#import "XPNobleCenterPresenter.h" +#import "XPNobleCenterProtocol.h" + +@interface XPNobleSettingViewController () + +@property (nonatomic, strong) XPNobleSettingNavView *navView; +///标题 +@property (nonatomic, strong) UILabel *label; +///开关 +//@property (nonatomic, strong) UIButton *switchButton; +@property (nonatomic, strong) UISwitch *switchButton; + +@end + +@implementation XPNobleSettingViewController + +- (XPNobleCenterPresenter *)createPresenter { + return [[XPNobleCenterPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + self.title = YMLocalizedString(@"XPNobleSettingViewController0"); + self.view.backgroundColor = [DJDKMIMOMColor nobleSettingBgColor]; + [self initSubView]; + [self initSubViewConstraints]; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent; +} +- (BOOL)isHiddenNavBar { + return YES; +} + +- (void)initSubView { + [self.view addSubview:self.navView]; + [self.view addSubview:self.label]; + [self.view addSubview:self.switchButton]; +} + +- (void)initSubViewConstraints { + [self.navView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.top.mas_equalTo(self.view); + make.height.mas_equalTo(kNavigationHeight); + }]; + [self.label mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kNavigationHeight+16); + make.leading.mas_equalTo(15); + make.height.mas_equalTo(21); + }]; + [self.switchButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.label); + make.trailing.mas_equalTo(-15); + }]; +} + +#pragma mark - XPNobleCenterProtocol +- (void)changeEnterHideSuccess { + self.enterHide = !self.enterHide; + if (self.didUpdateEnterHideBlock) { + self.didUpdateEnterHideBlock(); + } +} + +- (void)changeEnterHideFail { + self.switchButton.on = self.enterHide; +} + +#pragma mark - XPNobleSettingNavViewDelegate +///点击了返回按钮 +- (void)xPNobleSettingNavView:(XPNobleSettingNavView *)view didClickBackButton:(UIButton *)sender { + [self.navigationController popViewControllerAnimated:YES]; +} + +- (void)switchDidChange:(UISwitch *)switchButton { + [self.presenter changeEnterHide:switchButton.isOn]; +} + +#pragma mark - getter and setter +- (void)setEnterHide:(BOOL)enterHide { + _enterHide = enterHide; + self.switchButton.on = enterHide; +} + +- (XPNobleSettingNavView *)navView { + if (!_navView) { + _navView = [[XPNobleSettingNavView alloc] init]; + _navView.delegate = self; + } + return _navView; +} + +- (UILabel *)label { + if (!_label) { + _label = [[UILabel alloc] init]; + _label.text = YMLocalizedString(@"XPNobleSettingViewController1"); + _label.textColor = [UIColor whiteColor]; + _label.font = [UIFont systemFontOfSize:15]; + } + return _label; +} + +- (UISwitch *)switchButton { + if (!_switchButton) { + _switchButton = [[UISwitch alloc] init]; + _switchButton.tintColor = UIColorRGBAlpha(0xFFE3AF, 0.4); + _switchButton.onTintColor = UIColorFromRGB(0xFFE3AF); + [_switchButton addTarget:self action:@selector(switchDidChange:) forControlEvents:UIControlEventValueChanged]; + } + return _switchButton; +} +@end diff --git a/YuMi/Modules/YMMine/View/Recharge/XPIAPRechargeCollectionViewCell.h b/YuMi/Modules/YMMine/View/Recharge/XPIAPRechargeCollectionViewCell.h new file mode 100644 index 00000000..7349397e --- /dev/null +++ b/YuMi/Modules/YMMine/View/Recharge/XPIAPRechargeCollectionViewCell.h @@ -0,0 +1,21 @@ +// +// YMIAPRechargeCollectionViewCell.h +// YUMI +// +// Created by XY on 2023/2/21. +// + +#import + +@class RechargeListModel; +NS_ASSUME_NONNULL_BEGIN + +@interface XPIAPRechargeCollectionViewCell : UICollectionViewCell + +@property (nonatomic, strong) RechargeListModel *rechargeModel; + +@property (nonatomic, assign) BOOL selectedStyle; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Recharge/XPIAPRechargeCollectionViewCell.m b/YuMi/Modules/YMMine/View/Recharge/XPIAPRechargeCollectionViewCell.m new file mode 100644 index 00000000..c5627e63 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Recharge/XPIAPRechargeCollectionViewCell.m @@ -0,0 +1,136 @@ +// +// YMIAPRechargeCollectionViewCell.m +// YUMI +// +// Created by XY on 2023/2/21. +// + +#import "XPIAPRechargeCollectionViewCell.h" +#import "DJDKMIMOMColor.h" +#import + +#import "RechargeListModel.h" + +@interface XPIAPRechargeCollectionViewCell() + +/// 背景 +@property (nonatomic, strong) UIView *bgView; +/// 选中背景 +@property (nonatomic, strong) UIView *selectedBgView; +/// 价格 +@property (nonatomic, strong) UILabel *priceLabel; +/// 💎 +@property (nonatomic, strong) UIImageView *iconImageView; +/// 数量 +@property (nonatomic, strong) UILabel *numLabel; + +@end + +@implementation XPIAPRechargeCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self createUI]; + } + return self; +} + +- (void)createUI { + [self.contentView addSubview:self.bgView]; + [self.contentView addSubview:self.selectedBgView]; + [self.contentView addSubview:self.priceLabel]; + [self.contentView addSubview:self.iconImageView]; + [self.contentView addSubview:self.numLabel]; + + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.contentView); + }]; + [self.selectedBgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.bgView); + }]; + [self.priceLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(10); + make.left.mas_equalTo(4); + make.right.mas_equalTo(-4); + }]; + [self.numLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.contentView).offset(8); + make.top.mas_equalTo(self.priceLabel.mas_bottom).offset(5); + make.left.mas_greaterThanOrEqualTo(18); + }]; + [self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.numLabel); + make.width.height.mas_equalTo(14); + make.right.mas_equalTo(self.numLabel.mas_left).offset(-4); + }]; +} + +- (void)setRechargeModel:(RechargeListModel *)rechargeModel { + _rechargeModel = rechargeModel; + NSMutableAttributedString *priceStr = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"¥%.2f",rechargeModel.money.floatValue]]; + [priceStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:8] range:NSMakeRange(0, 1)]; + self.priceLabel.attributedText = priceStr; + NSCharacterSet* nonDigits =[[NSCharacterSet decimalDigitCharacterSet] invertedSet]; + int remainSecond = [[rechargeModel.prodName stringByTrimmingCharactersInSet:nonDigits] intValue]; + self.numLabel.text = [NSString stringWithFormat:@"%d",remainSecond]; +} + +- (void)setSelectedStyle:(BOOL)selectedStyle { + _selectedStyle = selectedStyle; + self.selectedBgView.hidden = !selectedStyle; +} + +#pragma mark - 懒加载 + +- (UIView *)bgView { + if (!_bgView) { + _bgView = [[UIView alloc] init]; + _bgView.backgroundColor = UIColor.whiteColor; + _bgView.layer.cornerRadius = 5; + } + return _bgView; +} + +- (UIView *)selectedBgView { + if (!_selectedBgView) { + _selectedBgView = [[UIView alloc] init]; + _selectedBgView.backgroundColor = [[DJDKMIMOMColor appMainColor] colorWithAlphaComponent:0.1]; + _selectedBgView.layer.cornerRadius = 5; + _selectedBgView.layer.borderWidth = 1; + _selectedBgView.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + _selectedBgView.hidden = YES; + } + return _selectedBgView; +} + +- (UILabel *)priceLabel { + if (!_priceLabel) { + _priceLabel = [[UILabel alloc] init]; + _priceLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _priceLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + _priceLabel.textAlignment = NSTextAlignmentCenter; + } + return _priceLabel; +} + +- (UIImageView *)iconImageView { + if (!_iconImageView) { + _iconImageView = [[UIImageView alloc] init]; + _iconImageView.contentMode = UIViewContentModeScaleAspectFit; + _iconImageView.image = [UIImage imageNamed:@"mine_recharge_diamond"]; + } + return _iconImageView; +} + +- (UILabel *)numLabel { + if (!_numLabel) { + _numLabel = [[UILabel alloc] init]; + _numLabel.textColor = [DJDKMIMOMColor textThirdColor]; + _numLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightRegular]; + _numLabel.textAlignment = NSTextAlignmentCenter; + } + return _numLabel; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Recharge/XPIAPRechargeHeaderView.h b/YuMi/Modules/YMMine/View/Recharge/XPIAPRechargeHeaderView.h new file mode 100644 index 00000000..d276da2b --- /dev/null +++ b/YuMi/Modules/YMMine/View/Recharge/XPIAPRechargeHeaderView.h @@ -0,0 +1,20 @@ +// +// YMIAPRechargeHeaderView.h +// YUMI +// +// Created by XY on 2023/2/21. +// + +#import + +@class WalletInfoModel; +NS_ASSUME_NONNULL_BEGIN + +@interface XPIAPRechargeHeaderView : UIView + +///钱包信息 +@property (nonatomic,strong) WalletInfoModel *walletInfo; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Recharge/XPIAPRechargeHeaderView.m b/YuMi/Modules/YMMine/View/Recharge/XPIAPRechargeHeaderView.m new file mode 100644 index 00000000..a109fbaa --- /dev/null +++ b/YuMi/Modules/YMMine/View/Recharge/XPIAPRechargeHeaderView.m @@ -0,0 +1,95 @@ +// +// YMIAPRechargeHeaderView.m +// YUMI +// +// Created by XY on 2023/2/21. +// + +#import "XPIAPRechargeHeaderView.h" +#import +#import "YUMIMacroUitls.h" + +#import "WalletInfoModel.h" + +@interface XPIAPRechargeHeaderView() + +/// 背景图 +@property (nonatomic, strong) UIImageView *bgImageView; +/// 余额文字 +@property (nonatomic, strong) UILabel *balanceTextLabel; +/// 余额 +@property (nonatomic, strong) UILabel *balanceLabel; + +@end + +@implementation XPIAPRechargeHeaderView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self createUI]; + } + return self; +} + +- (void)createUI { + [self addSubview:self.bgImageView]; + [self addSubview:self.balanceTextLabel]; + [self addSubview:self.balanceLabel]; + + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(0); + make.left.right.mas_equalTo(0); + make.height.mas_equalTo(220.0/375.0*KScreenWidth); + }]; + [self.balanceLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(-20); + make.left.mas_equalTo(16); + make.right.mas_equalTo(-16); + }]; + [self.balanceTextLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.balanceLabel.mas_top).offset(-4); + make.centerX.mas_equalTo(self); + }]; +} + +- (void)setWalletInfo:(WalletInfoModel *)walletInfo { + _walletInfo = walletInfo; + if (_walletInfo) { + self.balanceLabel.text = walletInfo.diamonds; + } +} + +#pragma mark - 懒加载 + +- (UIImageView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[UIImageView alloc] init]; + _bgImageView.image = [UIImage imageNamed:@"mine_recharge_bg"]; + } + return _bgImageView; +} + +- (UILabel *)balanceTextLabel { + if (!_balanceTextLabel) { + _balanceTextLabel = [[UILabel alloc] init]; + _balanceTextLabel.textColor = UIColor.whiteColor; + _balanceTextLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _balanceTextLabel.text = YMLocalizedString(@"XPIAPRechargeHeaderView0"); + } + return _balanceTextLabel; +} + +- (UILabel *)balanceLabel { + if (!_balanceLabel) { + _balanceLabel = [[UILabel alloc] init]; + _balanceLabel.textColor = UIColor.whiteColor; + _balanceLabel.font = [UIFont systemFontOfSize:64 weight:UIFontWeightMedium]; + _balanceLabel.textAlignment = NSTextAlignmentCenter; + _balanceLabel.text = @"0"; + _balanceLabel.adjustsFontSizeToFitWidth = YES; + } + return _balanceLabel; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Recharge/XPIAPRechargeViewController.h b/YuMi/Modules/YMMine/View/Recharge/XPIAPRechargeViewController.h new file mode 100644 index 00000000..7291d095 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Recharge/XPIAPRechargeViewController.h @@ -0,0 +1,16 @@ +// +// YMIAPRechargeViewController.h +// YUMI +// +// Created by XY on 2023/2/21. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPIAPRechargeViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Recharge/XPIAPRechargeViewController.m b/YuMi/Modules/YMMine/View/Recharge/XPIAPRechargeViewController.m new file mode 100644 index 00000000..7232813b --- /dev/null +++ b/YuMi/Modules/YMMine/View/Recharge/XPIAPRechargeViewController.m @@ -0,0 +1,417 @@ +// +// YMIAPRechargeViewController.m +// YUMI +// +// Created by XY on 2023/2/21. +// + +#import "XPIAPRechargeViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "YUMIHtmlUrl.h" +#import "XPIAPHelper.h" +#import "RechargeStorage.h" +#import "AccountInfoStorage.h" +#import "NSObject+MJExtension.h" +#import "NSArray+Safe.h" +#import "UIImage+Utils.h" +///Model +#import "RechargeListModel.h" +///View +#import "XPIAPRechargeHeaderView.h" +#import "XPIAPRechargeCollectionViewCell.h" +#import "XPMineRechargeNavView.h" +///P +#import "XPMineRechargePresenter.h" +#import "XPMineRechargeProtocol.h" +///VC +#import "XPWebViewController.h" + +#define kHeaderViewHeight 220.0/375.0*KScreenWidth + +@interface XPIAPRechargeViewController () + +@property (nonatomic, strong) UICollectionView *collectionView; +/// 头部 +@property (nonatomic, strong) XPIAPRechargeHeaderView *headerView; +/// 充值按钮 +@property (nonatomic, strong) UIButton *rechargeBtn; +/// +@property (nonatomic,strong) UIStackView *stackView; +///同意 +@property (nonatomic,strong) UILabel *agreeLabel; +///充值协议 +@property (nonatomic,strong) UIButton *protcoloButton; +/// 联系 +@property (nonatomic,strong) UILabel *contactLabel; +/// 返回 +@property (nonatomic,strong) UIButton *backBtn; +/// 标题 +@property (nonatomic,strong) UILabel *titleLabel; +@property (nonatomic,strong) UILabel *tipslainiLable; +/// 数据源 +@property (nonatomic, strong) NSArray *dataSource; +/// 选中下标 +@property (nonatomic, assign) NSInteger selectedIndex; + +/// 订单编号 +@property (nonatomic,copy) NSString *orderId; + +@end + +@implementation XPIAPRechargeViewController + +- (void)dealloc { + [XPIAPHelper shareHelper].delegate = nil; +} + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (UIStatusBarStyle)preferredStatusBarStyle { + return UIStatusBarStyleLightContent; +} + +- (XPMineRechargePresenter *)createPresenter { + return [[XPMineRechargePresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self createUI]; + [self initHttpData]; + + [XPIAPHelper shareHelper].delegate = self; +} + +- (void)createUI { + [self.view addSubview:self.headerView]; + [self.view addSubview:self.collectionView]; + [self.view addSubview:self.tipslainiLable]; + [self.view addSubview:self.rechargeBtn]; + [self.view addSubview:self.stackView]; + [self.view addSubview:self.titleLabel]; + [self.view addSubview:self.backBtn]; + + [self.stackView addArrangedSubview:self.agreeLabel]; + [self.stackView addArrangedSubview:self.protcoloButton]; + + [self.headerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(0); + make.height.mas_equalTo(kHeaderViewHeight); + }]; + + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.headerView.mas_bottom); + make.left.right.mas_equalTo(0); + make.height.mas_equalTo(160); + }]; + [self.tipslainiLable mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.collectionView.mas_bottom).offset(20); + make.left.mas_equalTo(40); + make.right.mas_equalTo(-40); + }]; + [self.rechargeBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(16); + make.right.mas_equalTo(-16); + make.height.mas_equalTo(48); + make.bottom.mas_equalTo(-140); + }]; + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.view); + make.top.mas_equalTo(self.rechargeBtn.mas_bottom).offset(28); + }]; + + [self.tipslainiLable mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view).inset(40); + make.top.mas_equalTo(self.collectionView.mas_bottom).offset(20); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kStatusBarHeight); + make.height.mas_equalTo(44); + make.centerX.mas_equalTo(self.view); + }]; + [self.backBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(0); + make.top.mas_equalTo(kStatusBarHeight); + make.width.height.mas_equalTo(44); + }]; +} + +- (void)initHttpData { + [self getRechargeList]; + [self getUserWalletBalanceInfo]; + [self checkTranscationIds]; +} + +/// 返回 +- (void)backBtnAction { + [self.navigationController popViewControllerAnimated:YES]; +} + +/// 点击充值按钮 +- (void)rechargeBtnAction { + RechargeListModel *model = [self.dataSource safeObjectAtIndex1:self.selectedIndex]; + if (model.chargeProdId) { + [self showLoading]; + [self.presenter requestIAPRechargeOrderWithChargeProdId:model.chargeProdId]; + } +} + +- (void)protcoloButtonAction:(UIButton *)sender { + XPWebViewController * webVC= [[XPWebViewController alloc] init]; + webVC.url = URLWithType(kRechargePrivacyURL); + [self.navigationController pushViewController:webVC animated:YES]; +} + +- (void)getRechargeList { + [self.presenter requestRechargeListWithChannel:@"8"]; +} + +- (void)getUserWalletBalanceInfo { + [self.presenter getUserWalletInfo]; +} + +///批量验证 +- (void)checkTranscationIds { + NSString * uid = [AccountInfoStorage instance].getUid; + NSArray * array = [RechargeStorage getAllReciptsWithUid:uid]; + if (array.count > 0) { + [self.presenter checkTranscationIds:array]; + } +} + +///充值成功之后保存订单到钥匙串 +- (void)saveRechageReciptWithTransactionIdentifier:(NSString *)transactionIdentifier { + NSData *receipt = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]]; + NSString *encodeStr = [receipt base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed]; + NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; + [dictionary setObject:transactionIdentifier forKey:@"transcationId"]; + [dictionary setObject:encodeStr forKey:@"recipt"]; + [dictionary setObject:self.orderId forKey:@"orderId"]; + NSString *reciptJson = [dictionary toJSONString]; + NSString * uid = [AccountInfoStorage instance].getUid; + BOOL saveSuccess = [RechargeStorage saveTranscationId:transactionIdentifier recipt:reciptJson uid:uid]; + if (!saveSuccess) { +#warning to do 保存失败 需要埋点 + } +} + +///删除本地保存的 +- (void)deleteRechageReciptWithTransactionIdentifier:(NSString *)transactionIdentifier { + NSString * uid = [AccountInfoStorage instance].getUid; + BOOL deleteSuccess = [RechargeStorage delegateTranscationId:transactionIdentifier uid:uid]; + if (deleteSuccess) { +#warning to do 保存失败 需要埋点 + } +} + +#pragma mark - XPMineRechargeNavViewDelegate +- (void)xPMineRechargeNavView:(XPMineRechargeNavView *)view didClickBackButton:(UIButton *)sender { + [self.navigationController popViewControllerAnimated:YES]; +} + +#pragma mark - XPIAPHelperDelegate +///当前充值的状态 +- (void)rechargeProcessStatus:(PaymentStatus)status { + [self hideHUD]; + if (status == PaymentStatus_Purchased) { + [self showLoading]; + } else if (status == PaymentStatus_Purchasing) { + [self showLoading]; + } else if (status == PaymentStatus_Failed) { + [self showErrorToast:YMLocalizedString(@"XPIAPRechargeViewController0")]; + } else if (status == PaymentStatus_Deferred) { + [self showErrorToast:YMLocalizedString(@"XPIAPRechargeViewController1")]; + } +} + +///充值成功回调id +- (void)rechargeSuccess:(NSString *)transactionIdentifier { + ///保存唯一凭证 + [self saveRechageReciptWithTransactionIdentifier:transactionIdentifier]; + NSData *receiptData = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]]; + NSString * receipt = [MF_Base64Codec base64StringFromData:receiptData]; + ///二次验证 + [self.presenter checkReceiptWithData:receipt orderId:self.orderId transcationId:transactionIdentifier]; +} + +#pragma mark - XPMineRechargeProtocol +- (void)requestRechargeListSucccess:(NSArray *)list { + self.dataSource = list; + [self.collectionView reloadData]; +} + +- (void)requestIAPRechargeOrderSuccess:(NSString *)orderId chargeProdId:(NSString *)chargeProdId { + if (orderId.length > 0) { + self.orderId = orderId; + [[XPIAPHelper shareHelper] buyAppProductWithAppProductId:chargeProdId]; + } +} + +- (void)requestIAPRechargeOrderFail { + ///获取订单失败 +} + +///二次验证成功 +- (void)checkReceiptSuccess:(NSString *)transcationId { + [self deleteRechageReciptWithTransactionIdentifier:transcationId]; + ///刷新一下用户的💎 + [self getUserWalletBalanceInfo]; + self.orderId = nil; +} + +- (void)getUserWalletInfo:(WalletInfoModel *)balanceInfo { + self.headerView.walletInfo = balanceInfo; +} + +- (void)checkTranscationIdsSuccess { + NSString * uid = [AccountInfoStorage instance].getUid; + [RechargeStorage delegateAllTranscationIdsWithUid:uid]; +} + +#pragma mark - UICollectionViewDelegate + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.dataSource.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPIAPRechargeCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass(XPIAPRechargeCollectionViewCell.self) forIndexPath:indexPath]; + cell.rechargeModel = [self.dataSource safeObjectAtIndex1:indexPath.item]; + cell.selectedStyle = self.selectedIndex == indexPath.item; + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + self.selectedIndex = indexPath.item; + [collectionView reloadData]; +} + +#pragma mark - 懒加载 + +- (UICollectionView *)collectionView { + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.scrollDirection = UICollectionViewScrollDirectionVertical; + CGFloat width = 108; + CGFloat height = 65; + layout.itemSize = CGSizeMake(width, height); + layout.minimumLineSpacing = 10.0; + layout.minimumInteritemSpacing = 8.0; + layout.sectionInset = UIEdgeInsetsMake(20, 16, 16, 16); + + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.backgroundColor = UIColor.clearColor; + _collectionView.alwaysBounceVertical = YES; + [_collectionView registerClass:[XPIAPRechargeCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass(XPIAPRechargeCollectionViewCell.self)]; + _collectionView.delegate = self; + _collectionView.dataSource = self; + _collectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + +// _collectionView.contentInset = UIEdgeInsetsMake(kHeaderViewHeight, 0, 0, 0); + + } + return _collectionView; +} + +- (XPIAPRechargeHeaderView *)headerView { + if (!_headerView) { + _headerView = [[XPIAPRechargeHeaderView alloc] init]; + } + return _headerView; +} + +- (UIButton *)rechargeBtn { + if (!_rechargeBtn) { + _rechargeBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_rechargeBtn setTitle:YMLocalizedString(@"XPIAPRechargeViewController2") forState:UIControlStateNormal]; + [_rechargeBtn setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; + _rechargeBtn.titleLabel.font = [UIFont systemFontOfSize:16]; + [_rechargeBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _rechargeBtn.layer.cornerRadius = 48/2; + _rechargeBtn.clipsToBounds = YES; + [_rechargeBtn addTarget:self action:@selector(rechargeBtnAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _rechargeBtn; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 2; + } + return _stackView; +} + +- (UIButton *)protcoloButton { + if (!_protcoloButton) { + _protcoloButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_protcoloButton setTitle:@"《用户充值协议》" forState:UIControlStateNormal]; + [_protcoloButton setTitleColor:[DJDKMIMOMColor appMainColor] forState:UIControlStateNormal]; + _protcoloButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_protcoloButton addTarget:self action:@selector(protcoloButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _protcoloButton; +} +- (UILabel *)agreeLabel { + if (!_agreeLabel) { + _agreeLabel = [[UILabel alloc] init]; + _agreeLabel.text = YMLocalizedString(@"XPIAPRechargeViewController4"); + _agreeLabel.font = [UIFont systemFontOfSize:12]; + _agreeLabel.textColor = [DJDKMIMOMColor textThirdColor]; + } + return _agreeLabel; +} + +- (UILabel *)contactLabel { + if (!_contactLabel) { + _contactLabel = [[UILabel alloc] init]; + _contactLabel.text = @"如有任何问题请咨询客服,Piko号:88001"; + _contactLabel.font = [UIFont systemFontOfSize:12]; + _contactLabel.textColor = [DJDKMIMOMColor appMainColor]; + } + return _contactLabel; +} + +- (UIButton *)backBtn { + if (!_backBtn) { + _backBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_backBtn setImage:[UIImage imageNamed:@"room_info_back"] forState:UIControlStateNormal]; + [_backBtn addTarget:self action:@selector(backBtnAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _backBtn; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPIAPRechargeViewController6"); + _titleLabel.textColor = UIColor.whiteColor; + _titleLabel.font = [UIFont systemFontOfSize:17 weight:UIFontWeightMedium]; + } + return _titleLabel; +} + +- (UILabel *)tipslainiLable { + if (!_tipslainiLable) { + _tipslainiLable = [[UILabel alloc] init]; + _tipslainiLable.font = [UIFont systemFontOfSize:14]; + _tipslainiLable.textColor = [DJDKMIMOMColor colorWithHexString:@"#878B9C"]; + _tipslainiLable.text = YMLocalizedString(@"XPIAPRechargeViewController7"); + _tipslainiLable.numberOfLines = 2; + _tipslainiLable.textAlignment = NSTextAlignmentCenter; + } + return _tipslainiLable; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Recharge/XPMineRechargeViewController.h b/YuMi/Modules/YMMine/View/Recharge/XPMineRechargeViewController.h new file mode 100644 index 00000000..cbccd4e5 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Recharge/XPMineRechargeViewController.h @@ -0,0 +1,16 @@ +// +// YMMineRechargeViewController.h +// YUMI +// +// Created by YUMI on 2021/9/24. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineRechargeViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Recharge/XPMineRechargeViewController.m b/YuMi/Modules/YMMine/View/Recharge/XPMineRechargeViewController.m new file mode 100644 index 00000000..50d6e9cd --- /dev/null +++ b/YuMi/Modules/YMMine/View/Recharge/XPMineRechargeViewController.m @@ -0,0 +1,311 @@ +// +// YMMineRechargeViewController.m +// YUMI +// +// Created by YUMI on 2021/9/24. +// + +#import "XPMineRechargeViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "YUMIHtmlUrl.h" +#import "XPIAPHelper.h" +#import "RechargeStorage.h" +#import "AccountInfoStorage.h" +#import "NSObject+MJExtension.h" +#import "NSArray+Safe.h" +///Model +#import "RechargeListModel.h" +///View +#import "XPMineRechageHeadView.h" +#import "XPMineRechargeTableViewCell.h" +#import "XPMineRechargeNavView.h" +///P +#import "XPMineRechargePresenter.h" +#import "XPMineRechargeProtocol.h" +///VC +#import "XPWebViewController.h" + +@interface XPMineRechargeViewController () +///数据源 +@property (nonatomic,strong) NSArray *datasource; +///列表 +@property (nonatomic,strong) UITableView *tableView; +/// +@property (nonatomic,strong) XPMineRechageHeadView *headeView; +///订单编号 +@property (nonatomic,copy) NSString *orderId; +///导航栏 +@property (nonatomic,strong) XPMineRechargeNavView *navView; +/// +@property (nonatomic,strong) UIStackView *stackView; +///同意 +@property (nonatomic,strong) UILabel *agreeLabel; +///充值协议 +@property (nonatomic,strong) UIButton *protcoloButton; +@end + +@implementation XPMineRechargeViewController + +- (void)dealloc { + [XPIAPHelper shareHelper].delegate = nil; +} + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (XPMineRechargePresenter *)createPresenter { + return [[XPMineRechargePresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initHttpData]; + [self initSubViews]; + [self initSubViewConstraints]; +} +#pragma mark - Response +- (void)protcoloButtonAction:(UIButton *)sender { + XPWebViewController * webVC= [[XPWebViewController alloc] init]; + webVC.url = URLWithType(kRechargePrivacyURL); + [self.navigationController pushViewController:webVC animated:YES]; +} +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.tableView]; + [self.view addSubview:self.navView]; + [self.view addSubview:self.stackView]; + + [self.stackView addArrangedSubview:self.agreeLabel]; + [self.stackView addArrangedSubview:self.protcoloButton]; + self.tableView.tableHeaderView = self.headeView; + + [XPIAPHelper shareHelper].delegate = self; + self.automaticallyAdjustsScrollViewInsets = NO; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.view).offset(-20 - kSafeAreaBottomHeight); + }]; + + [self.navView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.height.mas_equalTo(kNavigationHeight); + }]; +} + +- (void)initHttpData { + [self getRechargeList]; + [self getUserWalletBalanceInfo]; + [self checkTranscationIds]; +} + +- (void)getRechargeList { + [self.presenter requestRechargeListWithChannel:@"8"]; +} + +- (void)getUserWalletBalanceInfo { + [self.presenter getUserWalletInfo]; +} + +///批量验证 +- (void)checkTranscationIds { + NSString * uid = [AccountInfoStorage instance].getUid; + NSArray * array = [RechargeStorage getAllReciptsWithUid:uid]; + if (array.count > 0) { + [self.presenter checkTranscationIds:array]; + } +} + +///充值成功之后保存订单到钥匙串 +- (void)saveRechageReciptWithTransactionIdentifier:(NSString *)transactionIdentifier { + NSData *receipt = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]]; + NSString *encodeStr = [receipt base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed]; + NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; + [dictionary setObject:transactionIdentifier forKey:@"transcationId"]; + [dictionary setObject:encodeStr forKey:@"recipt"]; + [dictionary setObject:self.orderId forKey:@"orderId"]; + NSString *reciptJson = [dictionary toJSONString]; + NSString * uid = [AccountInfoStorage instance].getUid; + BOOL saveSuccess = [RechargeStorage saveTranscationId:transactionIdentifier recipt:reciptJson uid:uid]; + if (!saveSuccess) { +#warning to do 保存失败 需要埋点 + } +} + +///删除本地保存的 +- (void)deleteRechageReciptWithTransactionIdentifier:(NSString *)transactionIdentifier { + NSString * uid = [AccountInfoStorage instance].getUid; + BOOL deleteSuccess = [RechargeStorage delegateTranscationId:transactionIdentifier uid:uid]; + if (deleteSuccess) { +#warning to do 保存失败 需要埋点 + } +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + XPMineRechargeTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineRechargeTableViewCell class]) forIndexPath:indexPath]; + cell.listModel = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.delegate = self; + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 65; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ + [tableView deselectRowAtIndexPath:indexPath animated:true]; +} + +#pragma mark - XPMineRechargeTableViewCellDelegate +- (void)xPMineRechargeTableViewCell:(XPMineRechargeTableViewCell *)cell didSelectItem:(RechargeListModel *)listModel { + if (listModel.chargeProdId) { + [self showLoading]; + [self.presenter requestIAPRechargeOrderWithChargeProdId:listModel.chargeProdId]; + } +} + +#pragma mark - XPMineRechargeNavViewDelegate +- (void)xPMineRechargeNavView:(XPMineRechargeNavView *)view didClickBackButton:(UIButton *)sender { + [self.navigationController popViewControllerAnimated:YES]; +} + +#pragma mark - XPIAPHelperDelegate +///当前充值的状态 +- (void)rechargeProcessStatus:(PaymentStatus)status { + [self hideHUD]; + if (status == PaymentStatus_Purchased) { + [self showLoading]; + } else if (status == PaymentStatus_Purchasing) { + [self showLoading]; + } else if (status == PaymentStatus_Failed) { + [self showErrorToast:YMLocalizedString(@"XPMineRechargeViewController0")]; + } else if (status == PaymentStatus_Deferred) { + [self showErrorToast:YMLocalizedString(@"XPMineRechargeViewController1")]; + } +} + +///充值成功回调id +- (void)rechargeSuccess:(NSString *)transactionIdentifier { + ///保存唯一凭证 + [self saveRechageReciptWithTransactionIdentifier:transactionIdentifier]; + NSData *receiptData = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]]; + NSString * receipt = [MF_Base64Codec base64StringFromData:receiptData]; + ///二次验证 + [self.presenter checkReceiptWithData:receipt orderId:self.orderId transcationId:transactionIdentifier]; +} + +#pragma mark - XPMineRechargeProtocol +- (void)requestRechargeListSucccess:(NSArray *)list { + self.datasource = list; + [self.tableView reloadData]; +} + +- (void)requestIAPRechargeOrderSuccess:(NSString *)orderId chargeProdId:(NSString *)chargeProdId { + if (orderId.length > 0) { + self.orderId = orderId; + [[XPIAPHelper shareHelper] buyAppProductWithAppProductId:chargeProdId]; + } +} + +- (void)requestIAPRechargeOrderFail { + ///获取订单失败 +} + +///二次验证成功 +- (void)checkReceiptSuccess:(NSString *)transcationId { + [self deleteRechageReciptWithTransactionIdentifier:transcationId]; + ///刷新一下用户的💎 + [self getUserWalletBalanceInfo]; + self.orderId = nil; +} + +- (void)getUserWalletInfo:(WalletInfoModel *)balanceInfo { + self.headeView.walletInfo = balanceInfo; +} + +- (void)checkTranscationIdsSuccess { + NSString * uid = [AccountInfoStorage instance].getUid; + [RechargeStorage delegateAllTranscationIdsWithUid:uid]; +} +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPMineRechargeTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineRechargeTableViewCell class])]; + } + return _tableView; +} + +- (XPMineRechageHeadView *)headeView { + if (!_headeView) { + _headeView = [[XPMineRechageHeadView alloc] init]; + } + return _headeView; +} + + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 2; + } + return _stackView; +} + +- (UIButton *)protcoloButton { + if (!_protcoloButton) { + _protcoloButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_protcoloButton setTitle:@"《用户充值协议》" forState:UIControlStateNormal]; + [_protcoloButton setTitleColor:[DJDKMIMOMColor appMainColor] forState:UIControlStateNormal]; + _protcoloButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_protcoloButton addTarget:self action:@selector(protcoloButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _protcoloButton; +} +- (UILabel *)agreeLabel { + if (!_agreeLabel) { + _agreeLabel = [[UILabel alloc] init]; + _agreeLabel.text = YMLocalizedString(@"XPMineRechargeViewController3"); + _agreeLabel.font = [UIFont systemFontOfSize:12]; + _agreeLabel.textColor = [DJDKMIMOMColor textThirdColor]; + } + return _agreeLabel; +} + +- (XPMineRechargeNavView *)navView { + if (!_navView) { + _navView = [[XPMineRechargeNavView alloc] init]; + _navView.delegate = self; + } + return _navView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Recharge/YUMIIAPReindictAssembletionRegardElement.h b/YuMi/Modules/YMMine/View/Recharge/YUMIIAPReindictAssembletionRegardElement.h deleted file mode 100644 index 2178ec12..00000000 --- a/YuMi/Modules/YMMine/View/Recharge/YUMIIAPReindictAssembletionRegardElement.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMIAPRechargeCollectionViewCell.h -// YUMI -// -// Created by XY on 2023/2/21. -// - -#import - -@class ReindictStatementMatrix; -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIIAPReindictAssembletionRegardElement : UICollectionViewCell - -@property (nonatomic, strong) ReindictStatementMatrix *reindictMatrix; - -@property (nonatomic, assign) BOOL chosenedStyle; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Recharge/YUMIIAPReindictAssembletionRegardElement.m b/YuMi/Modules/YMMine/View/Recharge/YUMIIAPReindictAssembletionRegardElement.m deleted file mode 100644 index cad2c24a..00000000 --- a/YuMi/Modules/YMMine/View/Recharge/YUMIIAPReindictAssembletionRegardElement.m +++ /dev/null @@ -1,131 +0,0 @@ -// -// YMIAPRechargeCollectionViewCell.m -// YUMI -// -// Created by XY on 2023/2/21. -// - -#import "YUMIIAPReindictAssembletionRegardElement.h" -#import "DJDKMIMOMColor.h" -#import - -#import "ReindictStatementMatrix.h" - -@interface YUMIIAPReindictAssembletionRegardElement() - -@property (nonatomic, strong) UIView *backgroundRegard; -@property (nonatomic, strong) UIView *chosenedBackgroundRegard; -@property (nonatomic, strong) UILabel *valencySequencignation; -@property (nonatomic, strong) UIImageView *figureIndicateRegard; -@property (nonatomic, strong) UILabel *figureSequencignation; - -@end - -@implementation YUMIIAPReindictAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self produceUI]; - } - return self; -} - -- (void)produceUI { - [self.contentView addSubview:self.backgroundRegard]; - [self.contentView addSubview:self.chosenedBackgroundRegard]; - [self.contentView addSubview:self.valencySequencignation]; - [self.contentView addSubview:self.figureIndicateRegard]; - [self.contentView addSubview:self.figureSequencignation]; - - [self.backgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.contentView); - }]; - [self.chosenedBackgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.backgroundRegard); - }]; - [self.valencySequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(10); - make.left.mas_equalTo(4); - make.right.mas_equalTo(-4); - }]; - [self.figureSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.contentView).offset(8); - make.top.mas_equalTo(self.valencySequencignation.mas_bottom).offset(5); - make.left.mas_greaterThanOrEqualTo(18); - }]; - [self.figureIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.figureSequencignation); - make.width.height.mas_equalTo(14); - make.right.mas_equalTo(self.figureSequencignation.mas_left).offset(-4); - }]; -} - -- (void)setReindictMatrix:(ReindictStatementMatrix *)reindictMatrix { - _reindictMatrix = reindictMatrix; - NSMutableAttributedString *priceStr = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"¥%.2f",reindictMatrix.money.floatValue]]; - [priceStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:8] range:NSMakeRange(0, 1)]; - self.valencySequencignation.attributedText = priceStr; - NSCharacterSet* nonDigits =[[NSCharacterSet decimalDigitCharacterSet] invertedSet]; - int remainSecond = [[reindictMatrix.prodName stringByTrimmingCharactersInSet:nonDigits] intValue]; - self.figureSequencignation.text = [NSString stringWithFormat:@"%d",remainSecond]; -} - -- (void)setChosenedStyle:(BOOL)chosenedStyle { - _chosenedStyle = chosenedStyle; - self.chosenedBackgroundRegard.hidden = !chosenedStyle; -} - -#pragma mark - 懒加载 - -- (UIView *)backgroundRegard { - if (!_backgroundRegard) { - _backgroundRegard = [[UIView alloc] init]; - _backgroundRegard.backgroundColor = UIColor.whiteColor; - _backgroundRegard.layer.cornerRadius = 5; - } - return _backgroundRegard; -} - -- (UIView *)chosenedBackgroundRegard { - if (!_chosenedBackgroundRegard) { - _chosenedBackgroundRegard = [[UIView alloc] init]; - _chosenedBackgroundRegard.backgroundColor = [[DJDKMIMOMColor aplictowardsionMainPrettify] colorWithAlphaComponent:0.1]; - _chosenedBackgroundRegard.layer.cornerRadius = 5; - _chosenedBackgroundRegard.layer.borderWidth = 1; - _chosenedBackgroundRegard.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - _chosenedBackgroundRegard.hidden = YES; - } - return _chosenedBackgroundRegard; -} - -- (UILabel *)valencySequencignation { - if (!_valencySequencignation) { - _valencySequencignation = [[UILabel alloc] init]; - _valencySequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _valencySequencignation.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; - _valencySequencignation.textAlignment = NSTextAlignmentCenter; - } - return _valencySequencignation; -} - -- (UIImageView *)figureIndicateRegard { - if (!_figureIndicateRegard) { - _figureIndicateRegard = [[UIImageView alloc] init]; - _figureIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - _figureIndicateRegard.image = [UIImage imageNamed:@"yumi_center_recharge_diamond"]; - } - return _figureIndicateRegard; -} - -- (UILabel *)figureSequencignation { - if (!_figureSequencignation) { - _figureSequencignation = [[UILabel alloc] init]; - _figureSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - _figureSequencignation.font = [UIFont systemFontOfSize:10 weight:UIFontWeightRegular]; - _figureSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _figureSequencignation; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Recharge/YUMIIAPReindictIntelligencerRegard.h b/YuMi/Modules/YMMine/View/Recharge/YUMIIAPReindictIntelligencerRegard.h deleted file mode 100644 index 3b7549eb..00000000 --- a/YuMi/Modules/YMMine/View/Recharge/YUMIIAPReindictIntelligencerRegard.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMIAPRechargeHeaderView.h -// YUMI -// -// Created by XY on 2023/2/21. -// - -#import - -@class RamparatetAbstractMatrix; -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIIAPReindictIntelligencerRegard : UIView - -@property (nonatomic,strong) RamparatetAbstractMatrix *wentiretyetAbstract; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Recharge/YUMIIAPReindictIntelligencerRegard.m b/YuMi/Modules/YMMine/View/Recharge/YUMIIAPReindictIntelligencerRegard.m deleted file mode 100644 index 5e05a5b6..00000000 --- a/YuMi/Modules/YMMine/View/Recharge/YUMIIAPReindictIntelligencerRegard.m +++ /dev/null @@ -1,92 +0,0 @@ -// -// YMIAPRechargeHeaderView.m -// YUMI -// -// Created by XY on 2023/2/21. -// - -#import "YUMIIAPReindictIntelligencerRegard.h" -#import -#import "YUMIMacroUitls.h" - -#import "RamparatetAbstractMatrix.h" - -@interface YUMIIAPReindictIntelligencerRegard() - -@property (nonatomic, strong) UIImageView *backgroundIndicateRegard; -@property (nonatomic, strong) UILabel *balanceEssaySequencignation; -@property (nonatomic, strong) UILabel *balanceSequencignation; - -@end - -@implementation YUMIIAPReindictIntelligencerRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self produceUI]; - } - return self; -} - -- (void)produceUI { - [self addSubview:self.backgroundIndicateRegard]; - [self addSubview:self.balanceEssaySequencignation]; - [self addSubview:self.balanceSequencignation]; - - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(0); - make.left.right.mas_equalTo(0); - make.height.mas_equalTo(220.0/375.0*KScreenWidth); - }]; - [self.balanceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(-20); - make.left.mas_equalTo(16); - make.right.mas_equalTo(-16); - }]; - [self.balanceEssaySequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.balanceSequencignation.mas_top).offset(-4); - make.centerX.mas_equalTo(self); - }]; -} - -- (void)setWentiretyetAbstract:(RamparatetAbstractMatrix *)wentiretyetAbstract { - _wentiretyetAbstract = wentiretyetAbstract; - if (_wentiretyetAbstract) { - self.balanceSequencignation.text = wentiretyetAbstract.diamonds; - } -} - -#pragma mark - 懒加载 - -- (UIImageView *)backgroundIndicateRegard { - if (!_backgroundIndicateRegard) { - _backgroundIndicateRegard = [[UIImageView alloc] init]; - _backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_center_recharge_background"]; - } - return _backgroundIndicateRegard; -} - -- (UILabel *)balanceEssaySequencignation { - if (!_balanceEssaySequencignation) { - _balanceEssaySequencignation = [[UILabel alloc] init]; - _balanceEssaySequencignation.textColor = UIColor.whiteColor; - _balanceEssaySequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _balanceEssaySequencignation.text = YMLocalizedString(@"XPIAP_Recharge_Header_View_0"); - } - return _balanceEssaySequencignation; -} - -- (UILabel *)balanceSequencignation { - if (!_balanceSequencignation) { - _balanceSequencignation = [[UILabel alloc] init]; - _balanceSequencignation.textColor = UIColor.whiteColor; - _balanceSequencignation.font = [UIFont systemFontOfSize:64 weight:UIFontWeightMedium]; - _balanceSequencignation.textAlignment = NSTextAlignmentCenter; - _balanceSequencignation.text = @"0"; - _balanceSequencignation.adjustsFontSizeToFitWidth = YES; - } - return _balanceSequencignation; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Recharge/YUMIIAPReindictRegardGovernancer.h b/YuMi/Modules/YMMine/View/Recharge/YUMIIAPReindictRegardGovernancer.h deleted file mode 100644 index 4883b2ca..00000000 --- a/YuMi/Modules/YMMine/View/Recharge/YUMIIAPReindictRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMIAPRechargeViewController.h -// YUMI -// -// Created by XY on 2023/2/21. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIIAPReindictRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Recharge/YUMIIAPReindictRegardGovernancer.m b/YuMi/Modules/YMMine/View/Recharge/YUMIIAPReindictRegardGovernancer.m deleted file mode 100644 index 98b83a55..00000000 --- a/YuMi/Modules/YMMine/View/Recharge/YUMIIAPReindictRegardGovernancer.m +++ /dev/null @@ -1,391 +0,0 @@ -// -// YMIAPRechargeViewController.m -// YUMI -// -// Created by XY on 2023/2/21. -// - -#import "YUMIIAPReindictRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "YUMIHtmlUrl.h" -#import "YUMIIAPFacilitater.h" -#import "ReindictStorage.h" -#import "AccountAbstractStorage.h" -#import "NSObject+MJExtension.h" -#import "NSArray+Safe.h" -#import "UIImage+Utils.h" -#import "ReindictStatementMatrix.h" -#import "YUMIIAPReindictIntelligencerRegard.h" -#import "YUMIIAPReindictAssembletionRegardElement.h" -#import "YUMIManeReindictNevRegard.h" -#import "YUMIManeReindictExternalizer.h" -#import "FBCManeReindictCeremony.h" -#import "YUMITissueRegardGovernancer.h" - -#define kHeaderViewHeight 220.0/375.0*KScreenWidth - -@interface YUMIIAPReindictRegardGovernancer () - -@property (nonatomic, strong) UICollectionView *collectionView; -@property (nonatomic, strong) YUMIIAPReindictIntelligencerRegard *intelligenceerRegard; -@property (nonatomic, strong) UIButton *reindictBtuton; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UILabel *agreeSequencignation; -@property (nonatomic,strong) UIButton *protcoloBtuton; -@property (nonatomic,strong) UILabel *contactSequencignation; -@property (nonatomic,strong) UIButton *encourageBtuton; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UILabel *promptslainiSequencigntion; -@property (nonatomic, strong) NSArray *dataSource; -@property (nonatomic, assign) NSInteger selectedIndex; - -@property (nonatomic,copy) NSString *indentId; - -@end - -@implementation YUMIIAPReindictRegardGovernancer - -- (void)dealloc { - [YUMIIAPFacilitater partowardsiciptowardsionFacilittowardseer].delegate = nil; -} - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (UIStatusBarStyle)preferredStatusBarStyle { - return UIStatusBarStyleLightContent; -} - -- (YUMIManeReindictExternalizer *)producePresimport { - return [[YUMIManeReindictExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self produceUI]; - [self initHyperessayTowardsoloudspeaker]; - - [YUMIIAPFacilitater partowardsiciptowardsionFacilittowardseer].delegate = self; -} - -- (void)produceUI { - [self.view addSubview:self.intelligenceerRegard]; - [self.view addSubview:self.collectionView]; - [self.view addSubview:self.promptslainiSequencigntion]; - [self.view addSubview:self.reindictBtuton]; - [self.view addSubview:self.stackView]; - [self.view addSubview:self.titleLabel]; - [self.view addSubview:self.encourageBtuton]; - - [self.stackView addArrangedSubview:self.agreeSequencignation]; - [self.stackView addArrangedSubview:self.protcoloBtuton]; - - [self.intelligenceerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(0); - make.height.mas_equalTo(kHeaderViewHeight); - }]; - - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.intelligenceerRegard.mas_bottom); - make.left.right.mas_equalTo(0); - make.height.mas_equalTo(160); - }]; - [self.promptslainiSequencigntion mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.collectionView.mas_bottom).offset(20); - make.left.mas_equalTo(40); - make.right.mas_equalTo(-40); - }]; - [self.reindictBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(16); - make.right.mas_equalTo(-16); - make.height.mas_equalTo(48); - make.bottom.mas_equalTo(-140); - }]; - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.view); - make.top.mas_equalTo(self.reindictBtuton.mas_bottom).offset(28); - }]; - - [self.promptslainiSequencigntion mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view).inset(40); - make.top.mas_equalTo(self.collectionView.mas_bottom).offset(20); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kStatusBarHeight); - make.height.mas_equalTo(44); - make.centerX.mas_equalTo(self.view); - }]; - [self.encourageBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(0); - make.top.mas_equalTo(kStatusBarHeight); - make.width.height.mas_equalTo(44); - }]; -} - -- (void)initHyperessayTowardsoloudspeaker { - [self acquireReindictSttowardsement]; - [self acquireConsumerPocketbookBalanceAbstract]; - [self examineSplconcludeidIdents]; -} - -- (void)encourageBtutonPerformance { - [self.navigationController popViewControllerAnimated:YES]; -} - -- (void)reindictBtutonPerformance { - ReindictStatementMatrix *model = [self.dataSource secureGroalTowardsIndictowardsrix1:self.selectedIndex]; - if (model.chargeProdId) { - [self EvidenceChambering]; - [self.presimport requisitionPCQReindictTellingAboutInstructionProdId:model.chargeProdId]; - } -} - -- (void)protcoloBtutonPerformance:(UIButton *)sender { - YUMITissueRegardGovernancer * webVewC= [[YUMITissueRegardGovernancer alloc] init]; - webVewC.url = URLWithType(kRechargePrivacyURL); - [self.navigationController pushViewController:webVewC animated:YES]; -} - -- (void)acquireReindictSttowardsement { - [self.presimport requisitionReindictSttowardsementAboutNarrow:@"8"]; -} - -- (void)acquireConsumerPocketbookBalanceAbstract { - [self.presimport acquireConsumerPocketbookAbstract]; -} - -- (void)examineSplconcludeidIdents { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSArray * array = [ReindictStorage acquireEntiretyReciptsAboutCid:uid]; - if (array.count > 0) { - [self.presimport examineSplconcludeidIdents:array]; - } -} - -- (void)preserveRechageReciptAboutTransperformanceAplictowardsionraiser:(NSString *)transactionIdentifier { - NSData *receipt = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]]; - NSString *encodeStr = [receipt base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed]; - NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; - [dictionary setObject:transactionIdentifier forKey:@"transcationId"]; - [dictionary setObject:encodeStr forKey:@"recipt"]; - [dictionary setObject:self.indentId forKey:@"orderId"]; - NSString *reciptJson = [dictionary toJSONBWSttr]; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - BOOL saveSuccess = [ReindictStorage preserveSplconcludeidId:transactionIdentifier recipt:reciptJson uid:uid]; - if (!saveSuccess) { -#warning to do 保存失败 需要埋点 - } -} - -- (void)representtowardsionRechageReciptAboutTransperformanceAplictowardsionraiser:(NSString *)transactionIdentifier { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - BOOL deleteSuccess = [ReindictStorage delegtowardseSplconcludeidId:transactionIdentifier uid:uid]; - if (deleteSuccess) { -#warning to do 保存失败 需要埋点 - } -} - -#pragma mark - FBCManeReindictNevRegardRepresendtation -- (void)fBCManeReindictNevRegard:(YUMIManeReindictNevRegard *)view didClickBackButton:(UIButton *)sender { - [self.navigationController popViewControllerAnimated:YES]; -} - -#pragma mark - FBCIAPHelperRepresendtation -- (void)reindictProcessPosition:(PaymentStatus)status { - [self brakeHUD]; - if (status == PaymentStatus_Purchased) { - [self EvidenceChambering]; - } else if (status == PaymentStatus_Purchasing) { - [self EvidenceChambering]; - } else if (status == PaymentStatus_Failed) { - [self EvidenceMistakeToast:YMLocalizedString(@"XPIAP_Recharge_View_Controller_0")]; - } else if (status == PaymentStatus_Deferred) { - [self EvidenceMistakeToast:YMLocalizedString(@"XPIAP_Recharge_View_Controller_1")]; - } -} - -- (void)reindictAccomplishment:(NSString *)transactionIdentifier { - - [self preserveRechageReciptAboutTransperformanceAplictowardsionraiser:transactionIdentifier]; - NSData *receiptData = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]]; - NSString * receipt = [MF_Base64Codec base64StringFromData:receiptData]; - - [self.presimport examineReceiptAboutTowardsoloudspeaker:receipt indentId:self.indentId transcationId:transactionIdentifier]; -} - -#pragma mark - FBCManeReindictCeremony -- (void)requisitionReindictSttowardsementSucccess:(NSArray *)list { - self.dataSource = list; - [self.collectionView reloadData]; -} - -- (void)requisitionPCQReindictTellingAccomplishment:(NSString *)indentId chargeProdId:(NSString *)chargeProdId { - if (indentId.length > 0) { - self.indentId = indentId; - [[YUMIIAPFacilitater partowardsiciptowardsionFacilittowardseer] acquireAplictowardsionProductAboutAplictowardsionProductId:chargeProdId]; - } -} - -- (void)requisitionPCQReindictTellingFlunk { - -} - -- (void)examineReceiptAccomplishment:(NSString *)transcationId { - [self representtowardsionRechageReciptAboutTransperformanceAplictowardsionraiser:transcationId]; - - [self acquireConsumerPocketbookBalanceAbstract]; - self.indentId = nil; -} - -- (void)acquireConsumerPocketbookAbstract:(RamparatetAbstractMatrix *)balanceInfo { - self.intelligenceerRegard.wentiretyetAbstract = balanceInfo; -} - -- (void)examineSplconcludeidIdentsAccomplishment { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [ReindictStorage delegtowardseEntiretySplconcludeidIdentsAboutCid:uid]; -} - -#pragma mark - UICollectionViewDelegate - -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.dataSource.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMIIAPReindictAssembletionRegardElement *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass(YUMIIAPReindictAssembletionRegardElement.self) forIndexPath:indexPath]; - cell.reindictMatrix = [self.dataSource secureGroalTowardsIndictowardsrix1:indexPath.item]; - cell.chosenedStyle = self.selectedIndex == indexPath.item; - return cell; -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - self.selectedIndex = indexPath.item; - [collectionView reloadData]; -} - -#pragma mark - 懒加载 - -- (UICollectionView *)collectionView { - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.scrollDirection = UICollectionViewScrollDirectionVertical; - CGFloat width = 108; - CGFloat height = 65; - layout.itemSize = CGSizeMake(width, height); - layout.minimumLineSpacing = 10.0; - layout.minimumInteritemSpacing = 8.0; - layout.sectionInset = UIEdgeInsetsMake(20, 16, 16, 16); - - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.backgroundColor = UIColor.clearColor; - _collectionView.alwaysBounceVertical = YES; - [_collectionView registerClass:[YUMIIAPReindictAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass(YUMIIAPReindictAssembletionRegardElement.self)]; - _collectionView.delegate = self; - _collectionView.dataSource = self; - _collectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - - - } - return _collectionView; -} - -- (YUMIIAPReindictIntelligencerRegard *)intelligenceerRegard { - if (!_intelligenceerRegard) { - _intelligenceerRegard = [[YUMIIAPReindictIntelligencerRegard alloc] init]; - } - return _intelligenceerRegard; -} - -- (UIButton *)reindictBtuton { - if (!_reindictBtuton) { - _reindictBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_reindictBtuton setTitle:YMLocalizedString(@"XPIAP_Recharge_View_Controller_2") forState:UIControlStateNormal]; - [_reindictBtuton setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; - _reindictBtuton.titleLabel.font = [UIFont systemFontOfSize:16]; - [_reindictBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _reindictBtuton.layer.cornerRadius = 48/2; - _reindictBtuton.clipsToBounds = YES; - [_reindictBtuton addTarget:self action:@selector(reindictBtutonPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _reindictBtuton; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 2; - } - return _stackView; -} - -- (UIButton *)protcoloBtuton { - if (!_protcoloBtuton) { - _protcoloBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_protcoloBtuton setTitle:@"《用户充值协议》" forState:UIControlStateNormal]; - [_protcoloBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionMainPrettify] forState:UIControlStateNormal]; - _protcoloBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_protcoloBtuton addTarget:self action:@selector(protcoloBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _protcoloBtuton; -} -- (UILabel *)agreeSequencignation { - if (!_agreeSequencignation) { - _agreeSequencignation = [[UILabel alloc] init]; - _agreeSequencignation.text = YMLocalizedString(@"XPIAP_Recharge_View_Controller_4"); - _agreeSequencignation.font = [UIFont systemFontOfSize:12]; - _agreeSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - } - return _agreeSequencignation; -} - -- (UILabel *)contactSequencignation { - if (!_contactSequencignation) { - _contactSequencignation = [[UILabel alloc] init]; - _contactSequencignation.text = @"如有任何问题请咨询客服,Piko号:88001"; - _contactSequencignation.font = [UIFont systemFontOfSize:12]; - _contactSequencignation.textColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - } - return _contactSequencignation; -} - -- (UIButton *)encourageBtuton { - if (!_encourageBtuton) { - _encourageBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_encourageBtuton setImage:[UIImage imageNamed:@"yumi_scope_gen_back"] forState:UIControlStateNormal]; - [_encourageBtuton addTarget:self action:@selector(encourageBtutonPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _encourageBtuton; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"XPIAP_Recharge_View_Controller_6"); - _titleLabel.textColor = UIColor.whiteColor; - _titleLabel.font = [UIFont systemFontOfSize:17 weight:UIFontWeightMedium]; - } - return _titleLabel; -} - -- (UILabel *)promptslainiSequencigntion { - if (!_promptslainiSequencigntion) { - _promptslainiSequencigntion = [[UILabel alloc] init]; - _promptslainiSequencigntion.font = [UIFont systemFontOfSize:14]; - _promptslainiSequencigntion.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#878B9C"]; - _promptslainiSequencigntion.text = YMLocalizedString(@"XPIAP_Recharge_View_Controller_7"); - _promptslainiSequencigntion.numberOfLines = 2; - _promptslainiSequencigntion.textAlignment = NSTextAlignmentCenter; - } - return _promptslainiSequencigntion; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Recharge/YUMIManeReindictRegardGovernancer.h b/YuMi/Modules/YMMine/View/Recharge/YUMIManeReindictRegardGovernancer.h deleted file mode 100644 index 8e8681bb..00000000 --- a/YuMi/Modules/YMMine/View/Recharge/YUMIManeReindictRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineRechargeViewController.h -// YUMI -// -// Created by YUMI on 2021/9/24. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeReindictRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Recharge/YUMIManeReindictRegardGovernancer.m b/YuMi/Modules/YMMine/View/Recharge/YUMIManeReindictRegardGovernancer.m deleted file mode 100644 index 38751780..00000000 --- a/YuMi/Modules/YMMine/View/Recharge/YUMIManeReindictRegardGovernancer.m +++ /dev/null @@ -1,291 +0,0 @@ -// -// YMMineRechargeViewController.m -// YUMI -// -// Created by YUMI on 2021/9/24. -// - -#import "YUMIManeReindictRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "YUMIHtmlUrl.h" -#import "YUMIIAPFacilitater.h" -#import "ReindictStorage.h" -#import "AccountAbstractStorage.h" -#import "NSObject+MJExtension.h" -#import "NSArray+Safe.h" -#import "ReindictStatementMatrix.h" -#import "YUMIManeRechageIntelligenceRegard.h" -#import "YUMIManeReindictTabulationRegardElement.h" -#import "YUMIManeReindictNevRegard.h" -#import "YUMIManeReindictExternalizer.h" -#import "FBCManeReindictCeremony.h" -#import "YUMITissueRegardGovernancer.h" - -@interface YUMIManeReindictRegardGovernancer () -@property (nonatomic,strong) NSArray *datasource; -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) YUMIManeRechageIntelligenceRegard *intelligenceeRegard; -@property (nonatomic,copy) NSString *indentId; -@property (nonatomic,strong) YUMIManeReindictNevRegard *nevRegard; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UILabel *agreeSequencignation; -@property (nonatomic,strong) UIButton *protcoloBtuton; -@end - -@implementation YUMIManeReindictRegardGovernancer - -- (void)dealloc { - [YUMIIAPFacilitater partowardsiciptowardsionFacilittowardseer].delegate = nil; -} - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (YUMIManeReindictExternalizer *)producePresimport { - return [[YUMIManeReindictExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initHyperessayTowardsoloudspeaker]; - [self initSubViews]; - [self initChildLyRestrictions]; -} -#pragma mark - Response -- (void)protcoloBtutonPerformance:(UIButton *)sender { - YUMITissueRegardGovernancer * webVewC= [[YUMITissueRegardGovernancer alloc] init]; - webVewC.url = URLWithType(kRechargePrivacyURL); - [self.navigationController pushViewController:webVewC animated:YES]; -} -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.tableView]; - [self.view addSubview:self.nevRegard]; - [self.view addSubview:self.stackView]; - - [self.stackView addArrangedSubview:self.agreeSequencignation]; - [self.stackView addArrangedSubview:self.protcoloBtuton]; - self.tableView.tableHeaderView = self.intelligenceeRegard; - - [YUMIIAPFacilitater partowardsiciptowardsionFacilittowardseer].delegate = self; - self.automaticallyAdjustsScrollViewInsets = NO; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.view).offset(-20 - kSafeAreaBottomHeight); - }]; - - [self.nevRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.height.mas_equalTo(kNavigationHeight); - }]; -} - -- (void)initHyperessayTowardsoloudspeaker { - [self acquireReindictSttowardsement]; - [self acquireConsumerPocketbookBalanceAbstract]; - [self examineSplconcludeidIdents]; -} - -- (void)acquireReindictSttowardsement { - [self.presimport requisitionReindictSttowardsementAboutNarrow:@"8"]; -} - -- (void)acquireConsumerPocketbookBalanceAbstract { - [self.presimport acquireConsumerPocketbookAbstract]; -} - -- (void)examineSplconcludeidIdents { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSArray * array = [ReindictStorage acquireEntiretyReciptsAboutCid:uid]; - if (array.count > 0) { - [self.presimport examineSplconcludeidIdents:array]; - } -} - -- (void)preserveRechageReciptAboutTransperformanceAplictowardsionraiser:(NSString *)transactionIdentifier { - NSData *receipt = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]]; - NSString *encodeStr = [receipt base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed]; - NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; - [dictionary setObject:transactionIdentifier forKey:@"transcationId"]; - [dictionary setObject:encodeStr forKey:@"recipt"]; - [dictionary setObject:self.indentId forKey:@"orderId"]; - NSString *reciptJson = [dictionary toJSONBWSttr]; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - BOOL saveSuccess = [ReindictStorage preserveSplconcludeidId:transactionIdentifier recipt:reciptJson uid:uid]; - if (!saveSuccess) { -#warning to do 保存失败 需要埋点 - } -} - -- (void)representtowardsionRechageReciptAboutTransperformanceAplictowardsionraiser:(NSString *)transactionIdentifier { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - BOOL deleteSuccess = [ReindictStorage delegtowardseSplconcludeidId:transactionIdentifier uid:uid]; - if (deleteSuccess) { -#warning to do 保存失败 需要埋点 - } -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - YUMIManeReindictTabulationRegardElement *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeReindictTabulationRegardElement class]) forIndexPath:indexPath]; - cell.listMatrix = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.delegate = self; - return cell; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 65; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ - [tableView deselectRowAtIndexPath:indexPath animated:true]; -} - -#pragma mark - FBCManeReindictTabulationViweElementRepresendtation -- (void)fBCManeReindictTarbsultowardsionViweElement:(YUMIManeReindictTabulationRegardElement *)cell didSelectItem:(ReindictStatementMatrix *)listMatrix { - if (listMatrix.chargeProdId) { - [self EvidenceChambering]; - [self.presimport requisitionPCQReindictTellingAboutInstructionProdId:listMatrix.chargeProdId]; - } -} - -#pragma mark - FBCManeReindictNevRegardRepresendtation -- (void)fBCManeReindictNevRegard:(YUMIManeReindictNevRegard *)view didClickBackButton:(UIButton *)sender { - [self.navigationController popViewControllerAnimated:YES]; -} - -#pragma mark - FBCIAPHelperRepresendtation -- (void)reindictProcessPosition:(PaymentStatus)status { - [self brakeHUD]; - if (status == PaymentStatus_Purchased) { - [self EvidenceChambering]; - } else if (status == PaymentStatus_Purchasing) { - [self EvidenceChambering]; - } else if (status == PaymentStatus_Failed) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Mine_Recharge_View_Controller_0")]; - } else if (status == PaymentStatus_Deferred) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Mine_Recharge_View_Controller_1")]; - } -} - -- (void)reindictAccomplishment:(NSString *)transactionIdentifier { - - [self preserveRechageReciptAboutTransperformanceAplictowardsionraiser:transactionIdentifier]; - NSData *receiptData = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]]; - NSString * receipt = [MF_Base64Codec base64StringFromData:receiptData]; - - [self.presimport examineReceiptAboutTowardsoloudspeaker:receipt indentId:self.indentId transcationId:transactionIdentifier]; -} - -#pragma mark - FBCManeReindictCeremony -- (void)requisitionReindictSttowardsementSucccess:(NSArray *)list { - self.datasource = list; - [self.tableView reloadData]; -} - -- (void)requisitionPCQReindictTellingAccomplishment:(NSString *)indentId chargeProdId:(NSString *)chargeProdId { - if (indentId.length > 0) { - self.indentId = indentId; - [[YUMIIAPFacilitater partowardsiciptowardsionFacilittowardseer] acquireAplictowardsionProductAboutAplictowardsionProductId:chargeProdId]; - } -} - -- (void)requisitionPCQReindictTellingFlunk { - -} - -- (void)examineReceiptAccomplishment:(NSString *)transcationId { - [self representtowardsionRechageReciptAboutTransperformanceAplictowardsionraiser:transcationId]; - - [self acquireConsumerPocketbookBalanceAbstract]; - self.indentId = nil; -} - -- (void)acquireConsumerPocketbookAbstract:(RamparatetAbstractMatrix *)balanceInfo { - self.intelligenceeRegard.wentiretyetAbstract = balanceInfo; -} - -- (void)examineSplconcludeidIdentsAccomplishment { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [ReindictStorage delegtowardseEntiretySplconcludeidIdentsAboutCid:uid]; -} -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIManeReindictTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeReindictTabulationRegardElement class])]; - } - return _tableView; -} - -- (YUMIManeRechageIntelligenceRegard *)intelligenceeRegard { - if (!_intelligenceeRegard) { - _intelligenceeRegard = [[YUMIManeRechageIntelligenceRegard alloc] init]; - } - return _intelligenceeRegard; -} - - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 2; - } - return _stackView; -} - -- (UIButton *)protcoloBtuton { - if (!_protcoloBtuton) { - _protcoloBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_protcoloBtuton setTitle:@"《用户充值协议》" forState:UIControlStateNormal]; - [_protcoloBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionMainPrettify] forState:UIControlStateNormal]; - _protcoloBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_protcoloBtuton addTarget:self action:@selector(protcoloBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _protcoloBtuton; -} -- (UILabel *)agreeSequencignation { - if (!_agreeSequencignation) { - _agreeSequencignation = [[UILabel alloc] init]; - _agreeSequencignation.text = YMLocalizedString(@"YUMI_Mine_Recharge_View_Controller_3"); - _agreeSequencignation.font = [UIFont systemFontOfSize:12]; - _agreeSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - } - return _agreeSequencignation; -} - -- (YUMIManeReindictNevRegard *)nevRegard { - if (!_nevRegard) { - _nevRegard = [[YUMIManeReindictNevRegard alloc] init]; - _nevRegard.delegate = self; - } - return _nevRegard; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineAboutUsViewController.h b/YuMi/Modules/YMMine/View/Setting/XPMineAboutUsViewController.h new file mode 100644 index 00000000..3e94a1ff --- /dev/null +++ b/YuMi/Modules/YMMine/View/Setting/XPMineAboutUsViewController.h @@ -0,0 +1,16 @@ +// +// YMMineAboutUsViewController.h +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import "BaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineAboutUsViewController : BaseViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineAboutUsViewController.m b/YuMi/Modules/YMMine/View/Setting/XPMineAboutUsViewController.m new file mode 100644 index 00000000..e5148a8c --- /dev/null +++ b/YuMi/Modules/YMMine/View/Setting/XPMineAboutUsViewController.m @@ -0,0 +1,95 @@ +// +// YMMineAboutUsViewController.m +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import "XPMineAboutUsViewController.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YYUtility.h" +#import "YUMIMacroUitls.h" + +#import "XPVendorCallViewController.h" + + +@interface XPMineAboutUsViewController () +@property (nonatomic, strong) UIImageView *iconImageView;//图标 +@property (strong, nonatomic) UILabel *versionLabel;//版本 +@property (strong , nonatomic) UILabel *nameLabel; +@end + +@implementation XPMineAboutUsViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + self.title = [NSString stringWithFormat:@"关于%@",AppName]; + [self initSubViews]; + [self makeConstriants]; + + // 调用一下三方库 + XPVendorCallViewController *callVC = [[XPVendorCallViewController alloc] init]; + [callVC vendorCall]; + +} + +- (void)initSubViews { + [self.view addSubview:self.versionLabel]; + [self.view addSubview:self.iconImageView]; + [self.view addSubview:self.nameLabel]; +} + +- (void)makeConstriants { + [self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.view); + make.top.mas_equalTo(kNavigationHeight+60); + }]; + [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.view); + make.top.mas_equalTo(self.iconImageView.mas_bottom).offset(5); + }]; + [self.versionLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.nameLabel.mas_bottom).offset(5); + make.centerX.mas_equalTo(self.view); + }]; +} + + +#pragma mark - Getter && Setter + +- (UIImageView *)iconImageView { + if (!_iconImageView) { + _iconImageView = [[UIImageView alloc] init]; + _iconImageView.image = [UIImage imageNamed:@"ming_setting_about_us"]; + _iconImageView.layer.cornerRadius = 12; + _iconImageView.layer.masksToBounds = YES; + } + return _iconImageView; +} + + +- (UILabel *)versionLabel { + if (!_versionLabel) { + _versionLabel = [[UILabel alloc] init]; + _versionLabel.font = [UIFont systemFontOfSize:12]; + _versionLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _versionLabel.text = [NSString stringWithFormat:@"V%@",[YYUtility appVersion]]; + } + return _versionLabel; +} + +- (UILabel *)nameLabel { + if (!_nameLabel) { + _nameLabel = [[UILabel alloc] init]; + _nameLabel.text = AppName; + _nameLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _nameLabel.font = [UIFont systemFontOfSize:17]; + } + return _nameLabel; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineBlackListViewController.h b/YuMi/Modules/YMMine/View/Setting/XPMineBlackListViewController.h new file mode 100644 index 00000000..2e45e04f --- /dev/null +++ b/YuMi/Modules/YMMine/View/Setting/XPMineBlackListViewController.h @@ -0,0 +1,16 @@ +// +// YMMineBlackListViewController.h +// YUMI +// +// Created by YUMI on 2022/4/25. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineBlackListViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineBlackListViewController.m b/YuMi/Modules/YMMine/View/Setting/XPMineBlackListViewController.m new file mode 100644 index 00000000..5f4e3b47 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Setting/XPMineBlackListViewController.m @@ -0,0 +1,138 @@ +// +// YMMineBlackListViewController.m +// YUMI +// +// Created by YUMI on 2022/4/25. +// + +#import "XPMineBlackListViewController.h" +///Third +#import +#import +#import "XPMineBlackListTableViewCell.h" +#import "XPMineFriendEmptyTableViewCell.h" +#import "NSArray+Safe.h" +///Model +#import "UserInfoModel.h" +///P +#import "XPMineBlackListPresenter.h" +#import "XPMineBlackListProtocol.h" + +@interface XPMineBlackListViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +/// +@property (nonatomic,strong) NSMutableArray *datasource; +@end + +@implementation XPMineBlackListViewController + +- (__kindof id)createPresenter { + return [[XPMineBlackListPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + NSArray *array = [[NIMSDK sharedSDK].userManager myBlackList]; + if (array.count > 0) { + NSMutableArray * uids = [NSMutableArray array]; + for (int i = 0; i< array.count; i++) { + NIMUser * user = [array safeObjectAtIndex1:i]; + [uids addObject:user.userId]; + } + [self.presenter getUserListInfo:uids]; + } + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMineBlackListViewController0"); + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return self.datasource.count > 0 ? 60 : 500; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPMineBlackListTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineBlackListTableViewCell class])]; + cell.userInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + return cell; + } + XPMineFriendEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineFriendEmptyTableViewCell class])]; + return cell; +} + +- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{ + if (self.datasource.count > 0) { + return UITableViewCellEditingStyleDelete; + } + return UITableViewCellEditingStyleNone; +} + +-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{ + return YMLocalizedString(@"XPMineBlackListViewController1"); +} + +-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{ + if (editingStyle ==UITableViewCellEditingStyleDelete){ + if (self.datasource.count > 0) { + UserInfoModel *userInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + [[NIMSDK sharedSDK].userManager removeFromBlackBlackList:[NSString stringWithFormat:@"%ld", userInfo.uid] completion:^(NSError * _Nullable error) { + if (error == nil) { + [self.datasource removeObject:userInfo]; + [self.tableView reloadData]; + } + }]; + } + + } +} + +#pragma mark - XPMineBlackListPrototcol +- (void)getUserListInfoSuccess:(NSArray *)array { + [self.datasource addObjectsFromArray:array]; + [self.tableView reloadData]; +} + +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPMineBlackListTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineBlackListTableViewCell class])]; + [_tableView registerClass:[XPMineFriendEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineFriendEmptyTableViewCell class])]; + } + return _tableView; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + + + +@end diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineFeedbackViewController.h b/YuMi/Modules/YMMine/View/Setting/XPMineFeedbackViewController.h new file mode 100644 index 00000000..66dc3225 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Setting/XPMineFeedbackViewController.h @@ -0,0 +1,16 @@ +// +// YMMineFeedbackViewController.h +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineFeedbackViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineFeedbackViewController.m b/YuMi/Modules/YMMine/View/Setting/XPMineFeedbackViewController.m new file mode 100644 index 00000000..1b0da2c8 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Setting/XPMineFeedbackViewController.m @@ -0,0 +1,172 @@ +// +// YMMineFeedbackViewController.m +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import "XPMineFeedbackViewController.h" +///Third +#import +#import +#import +///Tool +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +///P +#import "XPMineFeedbackProtocol.h" +#import "XPMineFeedbackPresenter.h" + +@interface XPMineFeedbackViewController () +///小红点 +@property (nonatomic, strong) UIView *pointView; +///内容 +@property (nonatomic, strong) UILabel *titleLabel; +///输入反馈的内容 +@property (nonatomic, strong) SZTextView *contentTextView; +///微信或者qq +@property (nonatomic, strong) UITextField *contactField; +///提交 +@property (nonatomic, strong) UIButton *submitBtn; + +@end + +@implementation XPMineFeedbackViewController + +- (XPMineFeedbackPresenter *)createPresenter { + return [[XPMineFeedbackPresenter alloc] init];; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + self.title = YMLocalizedString(@"XPMineFeedbackViewController0"); + [self initSubviews]; + [self makeConstriants]; +} + +#pragma mark - Private Method +- (void)initSubviews { + [self.view addSubview:self.pointView]; + [self.view addSubview:self.titleLabel]; + [self.view addSubview:self.contentTextView]; + [self.view addSubview:self.contactField]; + [self.view addSubview:self.submitBtn]; + +} + +- (void)makeConstriants { + [self.pointView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.view).offset(15); + make.top.mas_equalTo(17); + make.height.width.mas_equalTo(7); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.pointView.mas_right).offset(4); + make.centerY.mas_equalTo(self.pointView); + }]; + [self.contentTextView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.pointView.mas_bottom).offset(20); + make.left.mas_equalTo(self.view).offset(15); + make.right.mas_equalTo(self.view).offset(-15); + make.height.mas_equalTo(154); + }]; + [self.contactField mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.contentTextView.mas_bottom).offset(10); + make.left.right.mas_equalTo(self.contentTextView); + make.height.mas_equalTo(35); + }]; + [self.submitBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.contactField.mas_bottom).offset(45); + make.centerX.mas_equalTo(self.view); + make.height.mas_equalTo(45); + make.width.mas_equalTo(310); + }]; +} + +- (void)initEvents { + RAC(self.submitBtn, enabled) = [RACSignal combineLatest:@[self.contentTextView.rac_textSignal, self.contactField.rac_textSignal] reduce:^id _Nonnull(NSString *content, NSString * contact){ + return @(content.length > 0 && contact.length > 0); + }]; +} + +#pragma mark - FeedbackCoreClient +- (void)saveFeedbackSuccess { + [self showSuccessToast:[NSString stringWithFormat:@"感谢您的宝贵意见,让我们共同营造更好的%@", AppName]]; + [self.navigationController popViewControllerAnimated:YES]; +} +#pragma mark - Event Response +- (void)submitBtnAction:(UIButton *)sender { + [self.presenter saveFeedBackWith:self.contentTextView.text contact:self.contactField.text]; +} + +#pragma mark - Getter && Setter + +- (UIView *)pointView { + if (!_pointView) { + _pointView = [[UIView alloc] init]; + _pointView.backgroundColor = UIColorFromRGB(0xF944A1); + _pointView.layer.masksToBounds = YES; + _pointView.layer.cornerRadius = 3.5; + } + return _pointView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPMineFeedbackViewController2"); + _titleLabel.font = [UIFont systemFontOfSize:15]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + + +- (SZTextView *)contentTextView { + if (!_contentTextView) { + _contentTextView = [[SZTextView alloc] init]; + NSString * placeholder = @"请详细描述您所遇到的问题与情况,感谢您提出宝贵的意见。"; + _contentTextView.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholder attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:14], NSForegroundColorAttributeName : [DJDKMIMOMColor secondTextColor]}]; + _contentTextView.textColor = [DJDKMIMOMColor mainTextColor]; + _contentTextView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _contentTextView.font = [UIFont systemFontOfSize:14]; + _contentTextView.layer.cornerRadius = 3; + } + return _contentTextView; +} + +- (UITextField *)contactField { + if (!_contactField) { + _contactField = [[UITextField alloc] init]; + NSString * placeholder = YMLocalizedString(@"XPMineFeedbackViewController4"); + _contactField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholder attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:14], NSForegroundColorAttributeName : [DJDKMIMOMColor secondTextColor]}]; + _contactField.font = [UIFont systemFontOfSize:14]; + _contactField.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _contactField.textColor = [DJDKMIMOMColor mainTextColor]; + _contactField.layer.cornerRadius = 3; + _contactField.leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 8, 0)]; + _contactField.leftViewMode = UITextFieldViewModeAlways; + } + return _contactField; +} + +- (UIButton *)submitBtn { + if (!_submitBtn) { + _submitBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + _submitBtn.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; + [_submitBtn setTitle:YMLocalizedString(@"XPMineFeedbackViewController5") forState:UIControlStateNormal]; + [_submitBtn setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_submitBtn setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateDisabled]; + _submitBtn.layer.masksToBounds = YES; + _submitBtn.layer.cornerRadius = 45/2; + [_submitBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_submitBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor disableButtonColor], [DJDKMIMOMColor disableButtonColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; + _submitBtn.enabled = NO; + [_submitBtn addTarget:self action:@selector(submitBtnAction:) forControlEvents:UIControlEventTouchUpInside]; + + } + return _submitBtn; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineLoginPasswordViewController.h b/YuMi/Modules/YMMine/View/Setting/XPMineLoginPasswordViewController.h new file mode 100644 index 00000000..fe849ffc --- /dev/null +++ b/YuMi/Modules/YMMine/View/Setting/XPMineLoginPasswordViewController.h @@ -0,0 +1,21 @@ +// +// YMMineLoginPasswordViewController.h +// YUMI +// +// Created by YUMI on 2022/4/25. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + + +@class UserInfoModel; +@interface XPMineLoginPasswordViewController : MvpViewController +/// +@property (nonatomic,strong) UserInfoModel *userInfo; +///是否是修改密码 +@property (nonatomic,assign) BOOL isModifiPwd; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineLoginPasswordViewController.m b/YuMi/Modules/YMMine/View/Setting/XPMineLoginPasswordViewController.m new file mode 100644 index 00000000..8f482a94 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Setting/XPMineLoginPasswordViewController.m @@ -0,0 +1,243 @@ +// +// YMMineLoginPasswordViewController.m +// YUMI +// +// Created by YUMI on 2022/4/25. +// + +#import "XPMineLoginPasswordViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIButton+EnlargeTouchArea.h" +#import "UIImage+Utils.h" +///Model +#import "UserInfoModel.h" +///View +#import "XPMineModifPayPwdView.h" +///P +#import "XPMineLoginPasswordPresenter.h" +#import "XPMineLoginPasswordProtocol.h" +///VC +#import "XPMineSettingViewController.h" +#import "XPMineResetLoginPwdViewController.h" + +@interface XPMineLoginPasswordViewController () +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///当前的密码 +@property (nonatomic,strong) XPMineModifPayPwdView *currentPwdView; +///新密码 +@property (nonatomic,strong) XPMineModifPayPwdView *newsPwdView; +///检查密码 +@property (nonatomic,strong) XPMineModifPayPwdView *checkPwdView; +///忘记密码 +@property (nonatomic, strong) UIButton *forgetButton; +///提交 +@property (nonatomic, strong) UIButton *submitButton; +///限制的提示 +@property (nonatomic,strong) UILabel *limitLabel; +///旧密码 +@property (nonatomic,copy) NSString *currentPwd; +///新密码 +@property (nonatomic,copy) NSString *newsPwd; +///检查密码 +@property (nonatomic,copy) NSString *checkPwd; +@end + +@implementation XPMineLoginPasswordViewController + +- (XPMineLoginPasswordPresenter *)createPresenter { + return [[XPMineLoginPasswordPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.stackView]; + [self.view addSubview:self.limitLabel]; + [self.view addSubview:self.forgetButton]; + [self.view addSubview:self.submitButton]; + [self.stackView addArrangedSubview:self.currentPwdView]; + [self.stackView addArrangedSubview:self.newsPwdView]; + [self.stackView addArrangedSubview:self.checkPwdView]; +} + +- (void)initSubViewConstraints { + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + }]; + + [self.limitLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.view).offset(15); + make.top.mas_equalTo(self.stackView.mas_bottom).offset(10); + }]; + + [self.forgetButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.view).offset(-15); + make.top.mas_equalTo(self.submitButton.mas_bottom).offset(15); + }]; + [self.submitButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.limitLabel.mas_bottom).offset(20); + make.right.mas_equalTo(self.view).offset(-32); + make.left.mas_equalTo(self.view).offset(32); + make.height.mas_equalTo(45); + }]; +} + +#pragma mark - XPMineLoginPasswordProtocol +- (void)setLoginPasswordSuccess { + [self showSuccessToast:YMLocalizedString(@"XPMineLoginPasswordViewController0")]; + [self.navigationController popViewControllerAnimated:YES]; +} + +- (void)modifyLoginPasswordSuccess { + [self showSuccessToast:YMLocalizedString(@"XPMineLoginPasswordViewController1")]; + [self.navigationController popViewControllerAnimated:YES]; +} + +#pragma mark - Event Response +- (void)forgetButtonAction:(UIButton *)sender { + XPMineResetLoginPwdViewController * VC= [[XPMineResetLoginPwdViewController alloc] init]; + VC.userInfo = self.userInfo; + [self.navigationController pushViewController:VC animated:YES]; +} + +- (void)submitButtonAction:(UIButton *)sender { + if (![self.newsPwdView.contentTextField.text isEqualToString:self.checkPwdView.contentTextField.text]) { + [self showErrorToast:YMLocalizedString(@"XPMineLoginPasswordViewController2")]; + return; + } + if (self.isModifiPwd) { + [self.presenter modifyLoginPassword:self.userInfo.phone newPwd:self.newsPwd pwd:self.currentPwd]; + } else { + [self.presenter setLoginPassword:self.userInfo.phone newPwd:self.newsPwd]; + } +} + +- (void)textFieldDidChange:(UITextField *)textfield { + if (textfield == self.currentPwdView.contentTextField) { + self.currentPwd = textfield.text; + } else if (textfield == self.newsPwdView.contentTextField) { + self.newsPwd = textfield.text; + } else { + self.checkPwd = textfield.text; + } + + if (self.isModifiPwd) { + if (self.currentPwd.length >= 6 && self.newsPwd.length >= 6 && self.checkPwd.length >= 6) { + self.submitButton.enabled = YES; + } else { + self.submitButton.enabled = NO; + } + } else { + if (self.newsPwd.length >= 6 && self.checkPwd.length >= 6) { + self.submitButton.enabled = YES; + } else { + self.submitButton.enabled = NO; + } + } +} + +#pragma mark - Getters And Setters +- (void)setIsModifiPwd:(BOOL)isModifiPwd { + _isModifiPwd = isModifiPwd; + if (_isModifiPwd) { + self.currentPwdView.hidden = NO; + self.currentPwdView.placeholder = YMLocalizedString(@"XPMineLoginPasswordViewController3"); + self.newsPwdView.placeholder = YMLocalizedString(@"XPMineLoginPasswordViewController4"); + self.checkPwdView.placeholder = YMLocalizedString(@"XPMineLoginPasswordViewController5"); + self.title = YMLocalizedString(@"XPMineLoginPasswordViewController6"); + } else { + self.currentPwdView.hidden = YES; + self.newsPwdView.placeholder = YMLocalizedString(@"XPMineLoginPasswordViewController7"); + self.checkPwdView.placeholder = YMLocalizedString(@"XPMineLoginPasswordViewController8"); + self.forgetButton.hidden = YES; + self.title = YMLocalizedString(@"XPMineLoginPasswordViewController9"); + } + self.currentPwdView.hidden = !_isModifiPwd; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 0; + } + return _stackView; +} + +- (XPMineModifPayPwdView *)currentPwdView { + if (!_currentPwdView) { + _currentPwdView = [[XPMineModifPayPwdView alloc] init]; + [_currentPwdView.contentTextField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; + _currentPwdView.hidden = YES; + } + return _currentPwdView; +} + +- (XPMineModifPayPwdView *)newsPwdView { + if (!_newsPwdView) { + _newsPwdView = [[XPMineModifPayPwdView alloc] init]; + [_newsPwdView.contentTextField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; + } + return _newsPwdView; +} + +- (XPMineModifPayPwdView *)checkPwdView { + if (!_checkPwdView) { + _checkPwdView = [[XPMineModifPayPwdView alloc] init]; + [_checkPwdView.contentTextField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; + } + return _checkPwdView; +} + +- (UIButton *)submitButton { + if (!_submitButton) { + _submitButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_submitButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_submitButton setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateDisabled]; + [_submitButton setTitle:YMLocalizedString(@"XPMineLoginPasswordViewController10") forState:UIControlStateNormal]; + _submitButton.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; + _submitButton.layer.masksToBounds = YES; + _submitButton.layer.cornerRadius = 45/2; + _submitButton.enabled = YES; + [_submitButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_submitButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor disableButtonColor], [DJDKMIMOMColor disableButtonColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; + [_submitButton addTarget:self action:@selector(submitButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _submitButton; +} + +- (UIButton *)forgetButton { + if (!_forgetButton) { + _forgetButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_forgetButton setEnlargeEdgeWithTop:5 right:5 bottom:5 left:5]; + [_forgetButton setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateNormal]; + [_forgetButton setTitle:@"忘记密码?" forState:UIControlStateNormal]; + _forgetButton.titleLabel.font = [UIFont systemFontOfSize:13]; + [_forgetButton addTarget:self action:@selector(forgetButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _forgetButton; +} + +- (UILabel *)limitLabel { + if (!_limitLabel) { + _limitLabel = [[UILabel alloc] init]; + _limitLabel.font = [UIFont systemFontOfSize:13]; + _limitLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _limitLabel.text = @"密码必须使用6-16个字符内的数字和英文字母组合哦!"; + } + return _limitLabel; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineModifPayPwdViewController.h b/YuMi/Modules/YMMine/View/Setting/XPMineModifPayPwdViewController.h new file mode 100644 index 00000000..07cfc9a4 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Setting/XPMineModifPayPwdViewController.h @@ -0,0 +1,17 @@ +// +// YMMineModifPayPwdViewController.h +// YUMI +// +// Created by YUMI on 2021/9/18. +// 修改支付密码 + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN +@class UserInfoModel; +@interface XPMineModifPayPwdViewController : MvpViewController +///用户信息 +@property (nonatomic,strong) UserInfoModel *userInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineModifPayPwdViewController.m b/YuMi/Modules/YMMine/View/Setting/XPMineModifPayPwdViewController.m new file mode 100644 index 00000000..4eac4411 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Setting/XPMineModifPayPwdViewController.m @@ -0,0 +1,198 @@ +// +// YMMineModifPayPwdViewController.m +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import "XPMineModifPayPwdViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIButton+EnlargeTouchArea.h" +#import "UIImage+Utils.h" +///View +#import "XPMineModifPayPwdView.h" +///P +#import "XPMineModifPayPwdPresenter.h" +#import "XPMineModifPayProtocol.h" +///VC +#import "XPMineSettingViewController.h" +#import "XPMineVerifIdentityViewController.h" + +@interface XPMineModifPayPwdViewController () +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///当前的密码 +@property (nonatomic,strong) XPMineModifPayPwdView *currentPwdView; +///新密码 +@property (nonatomic,strong) XPMineModifPayPwdView *newsPwdView; +///检查密码 +@property (nonatomic,strong) XPMineModifPayPwdView *checkPwdView; +///忘记密码 +@property (nonatomic, strong) UIButton *forgetBtn; +///提交 +@property (nonatomic, strong) UIButton *submitBtn; +@end + +@implementation XPMineModifPayPwdViewController + +- (XPMineModifPayPwdPresenter *)createPresenter { + return [[XPMineModifPayPwdPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + [self initEvents]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMineModifPayPwdViewController0"); + [self.view addSubview:self.stackView]; + [self.view addSubview:self.forgetBtn]; + [self.view addSubview:self.submitBtn]; + [self.stackView addArrangedSubview:self.currentPwdView]; + [self.stackView addArrangedSubview:self.newsPwdView]; + [self.stackView addArrangedSubview:self.checkPwdView]; +} + +- (void)initSubViewConstraints { + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + }]; + + [self.forgetBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.view).offset(-32); + make.top.mas_equalTo(self.stackView.mas_bottom).offset(8); + }]; + [self.submitBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.stackView.mas_bottom).offset(45); + make.right.mas_equalTo(self.view).offset(-32); + make.left.mas_equalTo(self.view).offset(32); + make.height.mas_equalTo(45); + }]; +} + +- (void)initEvents { + RAC(self.submitBtn, enabled) = [RACSignal combineLatest:@[self.currentPwdView.contentTextField.rac_textSignal, self.newsPwdView.contentTextField.rac_textSignal, self.checkPwdView.contentTextField.rac_textSignal] reduce:^id _Nonnull(NSString *currentPassword, NSString *newsPassword, NSString *checkPassword){ + return @(currentPassword.length == 6 && newsPassword.length == 6 && checkPassword.length == 6); + }]; +} +///判断一个字符串是纯数字 +- (BOOL)isPureNum:(NSString *)text { + if (!text) { + return NO; + } + NSScanner *scan = [NSScanner scannerWithString:text]; + int val; + return [scan scanInt:&val] && [scan isAtEnd]; +} + + +#pragma mark - XPMineModifPayProtocol +- (void)modifPayPasswordSuccess { + [self showSuccessToast:YMLocalizedString(@"XPMineModifPayPwdViewController1")]; + for (UIViewController *VC in self.navigationController.viewControllers) { + if ([VC isKindOfClass:[XPMineSettingViewController class]]) { + [self.navigationController popToViewController:VC animated:YES]; + return; + } + } + [self.navigationController popViewControllerAnimated:YES]; +} + +#pragma mark - Event Response +- (void)forgetBtnAction:(UIButton *)sender { + XPMineVerifIdentityViewController * VC= [[XPMineVerifIdentityViewController alloc] init]; + VC.userInfo = self.userInfo; + [self.navigationController pushViewController:VC animated:YES]; +} + +- (void)submitBtnAction:(UIButton *)sender { + if (![self.newsPwdView.contentTextField.text isEqual:self.checkPwdView.contentTextField.text]) { + [self showErrorToast:YMLocalizedString(@"XPMineModifPayPwdViewController2")]; + return; + } + + if (![self isPureNum:self.checkPwdView.contentTextField.text] || ![self isPureNum:self.newsPwdView.contentTextField.text]) { + [self showErrorToast:YMLocalizedString(@"XPMineModifPayPwdViewController3")]; + return; + } + + [self.presenter modifyPaymentPasswordWitholdPassword:self.currentPwdView.contentTextField.text newPassword:self.newsPwdView.contentTextField.text]; +} + +#pragma mark - Getters And Setters +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 0; + } + return _stackView; +} + +- (XPMineModifPayPwdView *)currentPwdView { + if (!_currentPwdView) { + _currentPwdView = [[XPMineModifPayPwdView alloc] init]; + _currentPwdView.placeholder = YMLocalizedString(@"XPMineModifPayPwdViewController4"); + _currentPwdView.contentTextField.keyboardType = UIKeyboardTypeNumberPad; + } + return _currentPwdView; +} + +- (XPMineModifPayPwdView *)newsPwdView { + if (!_newsPwdView) { + _newsPwdView = [[XPMineModifPayPwdView alloc] init]; + _newsPwdView.placeholder = YMLocalizedString(@"XPMineModifPayPwdViewController5"); + _newsPwdView.contentTextField.keyboardType = UIKeyboardTypeNumberPad; + } + return _newsPwdView; +} + +- (XPMineModifPayPwdView *)checkPwdView { + if (!_checkPwdView) { + _checkPwdView = [[XPMineModifPayPwdView alloc] init]; + _checkPwdView.placeholder = YMLocalizedString(@"XPMineModifPayPwdViewController6"); + _checkPwdView.contentTextField.keyboardType = UIKeyboardTypeNumberPad; + } + return _checkPwdView; +} + +- (UIButton *)submitBtn { + if (!_submitBtn) { + _submitBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_submitBtn setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_submitBtn setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateDisabled]; + [_submitBtn setTitle:YMLocalizedString(@"XPMineModifPayPwdViewController7") forState:UIControlStateNormal]; + _submitBtn.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; + _submitBtn.layer.masksToBounds = YES; + _submitBtn.layer.cornerRadius = 45/2; + _submitBtn.enabled = YES; + [_submitBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_submitBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor disableButtonColor], [DJDKMIMOMColor disableButtonColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; + [_submitBtn addTarget:self action:@selector(submitBtnAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _submitBtn; +} + +- (UIButton *)forgetBtn { + if (!_forgetBtn) { + _forgetBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_forgetBtn setEnlargeEdgeWithTop:5 right:5 bottom:5 left:5]; + [_forgetBtn setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateNormal]; + [_forgetBtn setTitle:@"忘记密码?" forState:UIControlStateNormal]; + _forgetBtn.titleLabel.font = [UIFont systemFontOfSize:13]; + [_forgetBtn addTarget:self action:@selector(forgetBtnAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _forgetBtn; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineNotificaViewController.h b/YuMi/Modules/YMMine/View/Setting/XPMineNotificaViewController.h new file mode 100644 index 00000000..a5795cd0 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Setting/XPMineNotificaViewController.h @@ -0,0 +1,16 @@ +// +// YMMineNotificaViewController.h +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineNotificaViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineNotificaViewController.m b/YuMi/Modules/YMMine/View/Setting/XPMineNotificaViewController.m new file mode 100644 index 00000000..a72dd09f --- /dev/null +++ b/YuMi/Modules/YMMine/View/Setting/XPMineNotificaViewController.m @@ -0,0 +1,164 @@ +// +// YMMineNotificaViewController.m +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import "XPMineNotificaViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" +///Model +#import "XPMineNotificationItemModel.h" +///View +#import "XPMineNotificationTableViewCell.h" +///P +#import "XPMineNotificaProtocol.h" +#import "XPMineNotificaPresenter.h" + +@interface XPMineNotificaViewController () + +@property (nonatomic, strong) NSArray *dataModelArray; +/// +@property (nonatomic,strong) UITableView *tableView; +@end + +@implementation XPMineNotificaViewController + +- (XPMineNotificaPresenter *)createPresenter { + return [[XPMineNotificaPresenter alloc] init]; +} + +#pragma mark - Life Cycle +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [self.presenter requestUserInfoNotifyStatus]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMineNotificaViewController0"); + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.top.mas_equalTo(0); + }]; +} + +/// 获取系统通知权限 +- (BOOL)systemNotify { +#warning to do 需要实现的 + /* + SecretarySystemUIDs *uids = GetCore(ImFriendCore).secretarySystemUIDs; + if (uids == nil) { + //uid为空时,获取、缓存 + [GetCore(ImFriendCore) requestSecretarySystemUIDsWithCompletion:nil]; + return NO; + } + + BOOL secretaryNotify = [GetCore(ImFriendCore) notifyForNewMsg:uids.secretaryUid]; + BOOL systemNotify = [GetCore(ImFriendCore) notifyForNewMsg:uids.systemMessageUid]; + + return secretaryNotify && systemNotify; + */ + return YES; +} + +#pragma mark - UITableViewDelegate +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.dataModelArray.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + XPMineNotificationItemModel *item = [self.dataModelArray safeObjectAtIndex1:indexPath.row]; + XPMineNotificationTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineNotificationTableViewCell class]) forIndexPath:indexPath]; + cell.delegate = self; + cell.itemModel = item; + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 70; +} + + +#pragma mark - Private +/// 获取手机推送权限 ++ (void)mobilePushAuthority:(void(^)(BOOL isAuthority))authority { + + if (@available(iOS 10.0, *)) { + [[UNUserNotificationCenter currentNotificationCenter] getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) { + + BOOL permission = settings.authorizationStatus == UNAuthorizationStatusAuthorized; + dispatch_async(dispatch_get_main_queue(), ^{ + !authority ?: authority(permission); + }); + }]; + } else { + BOOL permission = [[UIApplication sharedApplication] currentUserNotificationSettings].types != UIUserNotificationTypeNone; + !authority ?: authority(permission); + } +} + + + +#pragma mark - XPMineNotificationTableViewCell +- (void)xPMineNotificationTableViewCell:(XPMineNotificationTableViewCell *)cell switchStatus:(BOOL)status { + NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; + self.dataModelArray[indexPath.row].notification = status; + if (indexPath.row == 0) { + [self.presenter updateUserInfoSystemNotify:status]; + } else { + [self.presenter updateBroadCastNotify:status]; + } + /* + if (!status) { +#warning to do 弹框 +// [TTPopup alertWithMessage:@"您未开启推送通知权限,请前往设置" confirmHandler:^{ +// [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]; +// } cancelHandler:^{ +// +// }]; + self.dataModelArray[0].notification = NO; + [self.tableView reloadData]; + return; + } + //iOS端只上传给服务器统计,暂无业务操作关系 + [self.presenter updateUserInfoSystemNotify:status]; + */ +} + +#pragma mark - XPMineNotificaProtocol +- (void)requestUserInfoNotifyStatusSuccess:(NSArray *)array { + self.dataModelArray = array; + [self.tableView reloadData]; +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.showsVerticalScrollIndicator = NO; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + [_tableView registerClass:[XPMineNotificationTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineNotificationTableViewCell class])]; + _tableView.backgroundColor = [UIColor clearColor]; + } + return _tableView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Setting/XPMinePayPwdViewController.h b/YuMi/Modules/YMMine/View/Setting/XPMinePayPwdViewController.h new file mode 100644 index 00000000..2bf22143 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Setting/XPMinePayPwdViewController.h @@ -0,0 +1,31 @@ +// +// YMMinePayPwdViewController.h +// YUMI +// +// Created by YUMI on 2021/9/18. +//设置支付密码(初次) 重置支付密码 + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(NSUInteger, PayPasswordType) { + PayPasswordType_Set,///设置支付密码 + PayPasswordType_Reset,///重置支付密码 +}; + +@protocol XPMinePayPwdViewControllerDelegate + +-(void)payPasswordSuccess; + +@end + +@class UserInfoModel; +@interface XPMinePayPwdViewController : MvpViewController +/// +@property (nonatomic,assign) PayPasswordType type; +///用户信息 +@property (nonatomic,strong) UserInfoModel *userInfo; +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Setting/XPMinePayPwdViewController.m b/YuMi/Modules/YMMine/View/Setting/XPMinePayPwdViewController.m new file mode 100644 index 00000000..c99373a1 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Setting/XPMinePayPwdViewController.m @@ -0,0 +1,229 @@ +// +// YMMinePayPwdViewController.m +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import "XPMinePayPwdViewController.h" +///Third +#import +#import +///Tool +#import "UIImage+Utils.h" +#import "DJDKMIMOMColor.h" +#import "CountDownHelper.h" +///Model +#import "UserInfoModel.h" +///View +#import "XPMineModifPayPwdView.h" +#import "XPMineSettingViewController.h" +///P +#import "XPMinePayPwdPresenter.h" +#import "XPMinePayPwdProtocol.h" + +@interface XPMinePayPwdViewController () +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///设置支付密码 +@property (nonatomic, strong) XPMineModifPayPwdView *pwdInputView; +///再次输入支付密码 +@property (nonatomic, strong) XPMineModifPayPwdView *repeatPwdInputView; +/////请输入验证码 +//@property (nonatomic, strong) XPMinePayPwdInputView *verificationCodeInputView; +///提交按钮 +@property (nonatomic, strong) UIButton *submitButton; +@property (nonatomic, strong) UILabel *tipsLabel; +@end + +@implementation XPMinePayPwdViewController + +- (void)dealloc { + +} + +- (XPMinePayPwdPresenter *)createPresenter { + return [[XPMinePayPwdPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubviews]; + + self.title = YMLocalizedString(@"XPMinePayPwdViewController0"); + + +} + +- (void)initSubviews { + self.view.backgroundColor = [UIColor whiteColor]; + [self.view addSubview:self.stackView]; + [self.view addSubview:self.submitButton]; + [self.stackView addArrangedSubview:self.pwdInputView]; + [self.stackView addArrangedSubview:self.repeatPwdInputView]; + + + + [self makeConstriants]; +} + +- (void)makeConstriants { + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(30); + make.left.right.mas_equalTo(self.view); + }]; + + + [self.submitButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(275); + make.right.mas_equalTo(self.view).offset(-15); + make.left.mas_equalTo(self.view).offset(15); + make.height.mas_equalTo(46); + }]; + + +} + + + + +- (void)setPayPasswordSuccess { + NSString *message = YMLocalizedString(@"XPMinePayPwdViewController3"); + [self showSuccessToast:message]; + if(self.delegate && [self.delegate respondsToSelector:@selector(payPasswordSuccess)]){ + [self.delegate payPasswordSuccess]; + } + @weakify(self) + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + @strongify(self) + for (UIViewController *VC in self.navigationController.viewControllers) { + if ([VC isKindOfClass:[XPMineSettingViewController class]]) { + [self.navigationController popToViewController:VC animated:YES]; + return; + } + } + [self.navigationController popViewControllerAnimated:YES]; + }); +} + + + +#pragma mark - event +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + [self.view endEditing:YES]; +} + +- (void)onClickSubmitButton { + [self.view endEditing:YES]; + NSString *pwd = self.pwdInputView.contentTextField.text; + NSString *repeatPwd = self.repeatPwdInputView.contentTextField.text; +// +// +// // 位数校验 + if (pwd.length != 6) { + NSString *msg = YMLocalizedString(@"XPMinePayPwdViewController4"); + [self showErrorToast:msg]; + return; + } +// +// // 纯数字校验 + if (![self isPureNum:pwd]) { + NSString *msg = YMLocalizedString(@"XPMinePayPwdViewController5"); + [self showErrorToast:msg]; + return; + } +// +// // 重复密码校验 + if (![pwd isEqualToString:repeatPwd]) { + [self showErrorToast:YMLocalizedString(@"XPMinePayPwdViewController6")]; + return; + } + + + + //设置密码 + [self.presenter setPayPassword:pwd ]; +} + +#pragma mark - Private +/** 判断一个字符串是纯数字 */ +- (BOOL)isPureNum:(NSString *)text { + if (!text) { + return NO; + } + + NSScanner *scan = [NSScanner scannerWithString:text]; + int val; + return [scan scanInt:&val] && [scan isAtEnd]; +} + +- (NSString *)phoneNumber { + return self.userInfo.phone; +} + +#pragma mark - Getter && Setter +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 25; + } + return _stackView; +} +- (XPMineModifPayPwdView *)pwdInputView { + if (!_pwdInputView) { + _pwdInputView = [[XPMineModifPayPwdView alloc] init]; + _pwdInputView.placeholder = YMLocalizedString(@"XPMinePayPwdViewController10"); + _pwdInputView.contentTextField.keyboardType = UIKeyboardTypeNumberPad; + } + return _pwdInputView; +} + +- (XPMineModifPayPwdView *)repeatPwdInputView { + if (!_repeatPwdInputView) { + _repeatPwdInputView = [[XPMineModifPayPwdView alloc] init]; + _repeatPwdInputView.placeholder = YMLocalizedString(@"XPMinePayPwdViewController11"); + _repeatPwdInputView.contentTextField.keyboardType = UIKeyboardTypeNumberPad; + + } + return _repeatPwdInputView; +} + + + +- (UIButton *)submitButton { + if (!_submitButton) { + _submitButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_submitButton setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateDisabled]; + [_submitButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_submitButton setTitle:YMLocalizedString(@"XPMineModifPayPwdViewController7") forState:UIControlStateNormal]; + _submitButton.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightRegular]; + _submitButton.layer.masksToBounds = YES; + _submitButton.layer.cornerRadius = 45/2; + _submitButton.enabled = YES; + [_submitButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor disableButtonColor], [DJDKMIMOMColor disableButtonColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; + [_submitButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientMiddleColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_submitButton addTarget:self action:@selector(onClickSubmitButton) forControlEvents:UIControlEventTouchUpInside]; + } + return _submitButton; +} + +- (UILabel *)tipsLabel { + if (!_tipsLabel) { + _tipsLabel = [[UILabel alloc] init]; + _tipsLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _tipsLabel.font = [UIFont systemFontOfSize:13]; + _tipsLabel.numberOfLines = 0; + _tipsLabel.hidden = YES; + NSString *phonePrefix = [[self phoneNumber] substringToIndex:3]; + NSString *phoneSuffix = [[self phoneNumber] substringFromIndex:7]; + _tipsLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPMinePayPwdViewController9"), phonePrefix, phoneSuffix]; + } + return _tipsLabel; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineResetLoginPwdViewController.h b/YuMi/Modules/YMMine/View/Setting/XPMineResetLoginPwdViewController.h new file mode 100644 index 00000000..3f127046 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Setting/XPMineResetLoginPwdViewController.h @@ -0,0 +1,17 @@ +// +// YMMineResetLoginPwdViewController.h +// YUMI +// +// Created by YUMI on 2022/5/5. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN +@class UserInfoModel; +@interface XPMineResetLoginPwdViewController : MvpViewController +///用户信息 +@property (nonatomic,strong) UserInfoModel *userInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineResetLoginPwdViewController.m b/YuMi/Modules/YMMine/View/Setting/XPMineResetLoginPwdViewController.m new file mode 100644 index 00000000..5eb668c5 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Setting/XPMineResetLoginPwdViewController.m @@ -0,0 +1,199 @@ +// +// YMMineResetLoginPwdViewController.m +// YUMI +// +// Created by YUMI on 2022/5/5. +// + +#import "XPMineResetLoginPwdViewController.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "CountDownHelper.h" +#import "YUMIMacroUitls.h" +#import "UIImage+Utils.h" +///Model +#import "UserInfoModel.h" +///View +#import "XPMineVerifIdentityView.h" +#import "XPMineModifPayPwdView.h" +///P +#import "XPMineResetLoginPwdPresenter.h" +#import "XPMineResetLoginPwdProtocol.h" + +@interface XPMineResetLoginPwdViewController () +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///手机号 +@property (nonatomic,strong) XPMineVerifIdentityView *phoneView; +///验证码 +@property (nonatomic,strong) XPMineVerifIdentityView *smsCodeView; +///当前密码 +@property (nonatomic,strong) XPMineModifPayPwdView *currentPwdView; +///下一步 +@property (nonatomic,strong) UIButton *nextButton; +@end + +@implementation XPMineResetLoginPwdViewController + +- (void)deallocm { + [[CountDownHelper shareHelper] stopCountDown]; +} + +- (XPMineResetLoginPwdPresenter *)createPresenter { + return [[XPMineResetLoginPwdPresenter alloc] init];; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + [self initEvents]; +} + +- (void)viewDidDisappear:(BOOL)animated { + [super viewDidDisappear:animated]; + [[CountDownHelper shareHelper] stopCountDown]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMineResetLoginPwdViewController0"); + self.phoneView.contentTextField.text = self.userInfo.phone; + self.phoneView.contentTextField.enabled = self.userInfo.phone.length > 0; + [CountDownHelper shareHelper].delegate = self; + [self.view addSubview:self.stackView]; + [self.view addSubview:self.nextButton]; + + [self.stackView addArrangedSubview:self.phoneView]; + [self.stackView addArrangedSubview:self.smsCodeView]; + [self.stackView addArrangedSubview:self.currentPwdView]; +} + +- (void)initSubViewConstraints { + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + }]; + + [self.nextButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.stackView.mas_bottom).offset(45); + make.right.mas_equalTo(self.view).offset(-32); + make.left.mas_equalTo(self.view).offset(32); + make.height.mas_equalTo(45); + }]; +} + +- (void)initEvents { + @kWeakify(self); + self.smsCodeView.smsCodeBlock = ^(UIButton * _Nonnull sender) { + @kStrongify(self); + if (self.phoneView.contentTextField.text.length > 0) { + [self.presenter phoneSmsCode:self.phoneView.contentTextField.text type:GetSmsType_Reset_Password phoneAreaCode:@""]; + } else { + [self showErrorToast:YMLocalizedString(@"XPMineResetLoginPwdViewController1")]; + } + }; +} +#pragma mark - XPMineVerifIdentityProtocol +- (void)phoneSmsCodeSuccess { + self.smsCodeView.smsCodeButton.enabled = NO; + [self showSuccessToast:YMLocalizedString(@"XPMineResetLoginPwdViewController2")]; + [[CountDownHelper shareHelper] openCountdownWithTime:60]; +} + +- (void)resetLoginPasswordSuccess { + [self showErrorToast:YMLocalizedString(@"XPMineResetLoginPwdViewController3")]; + [self.presenter logoutCurrentAccount]; +} + +- (void)logoutCurrentAccountSuccess { + [self.navigationController popToRootViewControllerAnimated:NO]; +} + + +#pragma mark - CountDownHelperDelegate +///倒计时进行中 +- (void)onCountdownOpen:(int)time { + [self.smsCodeView.smsCodeButton setTitle:[NSString stringWithFormat:YMLocalizedString(@"XPMineResetLoginPwdViewController4"), time] forState:UIControlStateDisabled]; +} +///倒计时结束 +- (void)onCountdownFinish { + self.smsCodeView.smsCodeButton.enabled= YES; + [self.smsCodeView.smsCodeButton setTitle:YMLocalizedString(@"XPMineResetLoginPwdViewController5") forState:UIControlStateNormal]; +} + +#pragma mark - Event Response +- (void)nextButtonAction:(UIButton *)sender { + [self.presenter resetLoginPassword:self.userInfo.phone smsCode:self.smsCodeView.contentTextField.text newPwd:self.currentPwdView.contentTextField.text]; +} + +- (void)textFieldDidChange:(UITextField *)textFiled { + if (self.phoneView.contentTextField.text.length > 0 && self.smsCodeView.contentTextField.text.length > 0 && self.currentPwdView.contentTextField.text.length >= 6) { + self.nextButton.enabled = YES; + } else { + self.nextButton.enabled = NO; + } +} + +#pragma mark - Getters And Setters +- (UIButton *)nextButton { + if (!_nextButton) { + _nextButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_nextButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_nextButton setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateDisabled]; + [_nextButton setTitle:YMLocalizedString(@"XPMineResetLoginPwdViewController6") forState:UIControlStateNormal]; + _nextButton.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; + _nextButton.layer.masksToBounds = YES; + _nextButton.layer.cornerRadius = 45/2; + _nextButton.enabled = NO; + [_nextButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_nextButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor disableButtonColor], [DJDKMIMOMColor disableButtonColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; + [_nextButton addTarget:self action:@selector(nextButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _nextButton; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 0; + } + return _stackView; +} + +- (XPMineVerifIdentityView *)phoneView { + if (!_phoneView) { + _phoneView = [[XPMineVerifIdentityView alloc] init]; + _phoneView.type = XPMineVerifIdentityType_Phone; + _phoneView.placeholder = YMLocalizedString(@"XPMineResetLoginPwdViewController7"); + _phoneView.contentTextField.secureTextEntry = NO; + _phoneView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + } + return _phoneView; +} + +- (XPMineVerifIdentityView *)smsCodeView { + if (!_smsCodeView) { + _smsCodeView = [[XPMineVerifIdentityView alloc] init]; + _smsCodeView.type = XPMineVerifIdentityType_Sms; + _smsCodeView.placeholder = YMLocalizedString(@"XPMineResetLoginPwdViewController8"); + _smsCodeView.contentTextField.secureTextEntry = NO; + _smsCodeView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + } + return _smsCodeView; +} + +- (XPMineModifPayPwdView *)currentPwdView { + if (!_currentPwdView) { + _currentPwdView = [[XPMineModifPayPwdView alloc] init]; + _currentPwdView.placeholder = YMLocalizedString(@"XPMineResetLoginPwdViewController9"); + [_currentPwdView.contentTextField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; + } + return _currentPwdView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineResetPayPwdViewController.h b/YuMi/Modules/YMMine/View/Setting/XPMineResetPayPwdViewController.h new file mode 100644 index 00000000..48ba5a11 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Setting/XPMineResetPayPwdViewController.h @@ -0,0 +1,16 @@ +// +// YMMineResetPayPwdViewController.h +// YUMI +// +// Created by YUMI on 2021/9/18. +// 重设支付密码 + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineResetPayPwdViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineResetPayPwdViewController.m b/YuMi/Modules/YMMine/View/Setting/XPMineResetPayPwdViewController.m new file mode 100644 index 00000000..49386227 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Setting/XPMineResetPayPwdViewController.m @@ -0,0 +1,140 @@ +// +// YMMineResetPayPwdViewController.m +// YUMI +// +// Created by YUMI on 2021/9/18. +// 重置支付密码 + +#import "XPMineResetPayPwdViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +///View +#import "XPMineModifPayPwdView.h" +///P +#import "XPMineResetPayPasswordPresenter.h" +#import "XPMineResetPayPasswordProtocol.h" +///VC +#import "XPMineSettingViewController.h" + +@interface XPMineResetPayPwdViewController () +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///新的密码 +@property (nonatomic,strong) XPMineModifPayPwdView *passwordView; +///校验 +@property (nonatomic,strong) XPMineModifPayPwdView *verificationCodeInputView; +/// +@property (nonatomic,strong) UIButton *submitButton; +@end + +@implementation XPMineResetPayPwdViewController + +- (XPMineResetPayPasswordPresenter *)createPresenter { + return [[XPMineResetPayPasswordPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + [self initEvents]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMineResetPayPwdViewController0"); + [self.view addSubview:self.stackView]; + [self.view addSubview:self.submitButton]; + + [self.stackView addArrangedSubview:self.passwordView]; + [self.stackView addArrangedSubview:self.verificationCodeInputView]; +} + +- (void)initSubViewConstraints { + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + }]; + + [self.submitButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.stackView.mas_bottom).offset(45); + make.right.left.mas_equalTo(self.view).inset(32); + make.height.mas_equalTo(45); + }]; +} + +- (void)initEvents { + @weakify(self); + RAC(self.submitButton, enabled) = [RACSignal combineLatest:@[self.passwordView.contentTextField.rac_textSignal, self.verificationCodeInputView.contentTextField.rac_textSignal] reduce:^id _Nonnull(NSString *password, NSString *checkPassword){ + return @(password.length == 6 && checkPassword.length == 6); + }]; +} + +#pragma mark - XPMineResetPayPasswordProtocol +- (void)resetPayPasswordSuccess { + [self showErrorToast:YMLocalizedString(@"XPMineResetPayPwdViewController1")]; + for (UIViewController *VC in self.navigationController.viewControllers) { + if ([VC isKindOfClass:[XPMineSettingViewController class]]) { + [self.navigationController popToViewController:VC animated:YES]; + return; + } + } + [self.navigationController popViewControllerAnimated:YES]; +} +#pragma mark - Event Response +- (void)submitButtonAction:(UIButton *)sender { + if (![self.passwordView.contentTextField.text isEqual:self.verificationCodeInputView.contentTextField.text]) { + [self showErrorToast:YMLocalizedString(@"XPMineResetPayPwdViewController2")]; + } + [self.presenter resetPayPassword:self.passwordView.contentTextField.text phone:@"" veriftCode:@""]; +} + +#pragma mark - Getters And Setters +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 0; + } + return _stackView; +} + +- (XPMineModifPayPwdView *)passwordView { + if (!_passwordView) { + _passwordView = [[XPMineModifPayPwdView alloc] init]; + _passwordView.placeholder = YMLocalizedString(@"XPMineResetPayPwdViewController3"); + } + return _passwordView; +} + +- (XPMineModifPayPwdView *)verificationCodeInputView { + if (!_verificationCodeInputView) { + _verificationCodeInputView = [[XPMineModifPayPwdView alloc] init]; + _verificationCodeInputView.placeholder = YMLocalizedString(@"XPMineResetPayPwdViewController4"); + } + return _verificationCodeInputView; +} + +- (UIButton *)submitButton { + if (!_submitButton) { + _submitButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_submitButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_submitButton setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateDisabled]; + [_submitButton setTitle:YMLocalizedString(@"XPMineResetPayPwdViewController5") forState:UIControlStateNormal]; + _submitButton.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; + _submitButton.layer.masksToBounds = YES; + _submitButton.layer.cornerRadius = 45/2; + _submitButton.enabled = NO; + [_submitButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_submitButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor disableButtonColor], [DJDKMIMOMColor disableButtonColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; + [_submitButton addTarget:self action:@selector(submitButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _submitButton; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineSettingViewController.h b/YuMi/Modules/YMMine/View/Setting/XPMineSettingViewController.h new file mode 100644 index 00000000..324c9e77 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Setting/XPMineSettingViewController.h @@ -0,0 +1,17 @@ +// +// YMMineSettingViewController.h +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN +@class UserInfoModel; +@interface XPMineSettingViewController : MvpViewController +///用户信息 +@property (nonatomic,strong) UserInfoModel *userInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineSettingViewController.m b/YuMi/Modules/YMMine/View/Setting/XPMineSettingViewController.m new file mode 100644 index 00000000..8899f41f --- /dev/null +++ b/YuMi/Modules/YMMine/View/Setting/XPMineSettingViewController.m @@ -0,0 +1,373 @@ +// +// YMMineSettingViewController.m +// YUMI +// +// Created by YUMI on 2021/9/17. +// + +#import "XPMineSettingViewController.h" +///Third +#import +#import +#import "SDWebImageManager.h" +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" +#import "YUMIHtmlUrl.h" +#import "YYUtility.h" +#import "ClientConfig.h" +///Model +#import "XPMineSettingItemModel.h" +#import "UserInfoModel.h" +#import "XPVersionUpdateModel.h" +///View +#import "XPMineSettingTableViewCell.h" +#import "TTAlertConfig.h" +#import "TTPopup.h" +#import "XPUpgradeView.h" +///P +#import "XPMineSettingPresent.h" +#import "XPMineSettingProtocol.h" +///VC +#import "XPMineAboutUsViewController.h" +#import "XPMineFeedbackViewController.h" +#import "XPMineNotificaViewController.h" +#import "XPMinePayPwdViewController.h" +#import "XPMineModifPayPwdViewController.h" +#import "XPPrivacyViewController.h" +#import "XPMineLoginPasswordViewController.h" +#import "XPMineBlackListViewController.h" +///不同模块的VC +#import "XPWebViewController.h" +#import "XPLoginVerifBindPhoneViewController.h" +#import "XPLoginBindPhoneResultViewController.h" + + +@interface XPMineSettingViewController () +/// +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSArray *> *datasource; +///退出登录 +@property (nonatomic,strong) UIButton *logoutButton; +///底部的试图 +@property (strong, nonatomic) UIView *footerView; +@end + +@implementation XPMineSettingViewController +- (XPMineSettingPresent *)createPresenter { + return [[XPMineSettingPresent alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + [self.presenter getMineSettingDataSourceWith:self.userInfo]; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + ///每次都需要刷新一个userinfo + [self.presenter getUserInfo]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMineSettingViewController0"); + [self.view addSubview:self.tableView]; + [self.footerView addSubview:self.logoutButton]; + self.tableView.tableFooterView = self.footerView; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.top.mas_equalTo(0); + }]; +} + +- (void)pushViewControllerWithType:(XPMineSettingItemType)type { + switch (type) { + case XPMineSettingItemType_Phone: + { + // 绑定手机 + if (self.userInfo.isBindPhone) { // 如果已经绑定 + XPLoginBindPhoneResultViewController *vc = [[XPLoginBindPhoneResultViewController alloc] init]; + vc.userInfo = _userInfo; + [self.navigationController pushViewController:vc animated:YES]; + }else { + XPLoginVerifBindPhoneViewController *vc = [[XPLoginVerifBindPhoneViewController alloc] init]; + vc.bindingPhoneNumType = XPBindingPhoneNumTypeNormal; + vc.userInfo = _userInfo; + [self.navigationController pushViewController:vc animated:YES]; + } + } + break; + case XPMineSettingItemType_Pay_Password: + { + if (!self.userInfo.isBindPhone) { + [self showErrorToast:@"请先绑定手机号码哦~"]; + return; + } + //支付密码 + if (self.userInfo.isBindPaymentPwd) { + XPMineModifPayPwdViewController *vc = [[XPMineModifPayPwdViewController alloc] init]; + vc.userInfo = self.userInfo; + [self.navigationController pushViewController:vc animated:YES]; + } else { + XPMinePayPwdViewController *vc = [[XPMinePayPwdViewController alloc] init]; + vc.userInfo = self.userInfo; + [self.navigationController pushViewController:vc animated:YES]; + } + } + break; + case XPMineSettingItemType_Login_Password: + { + if (!self.userInfo.isBindPhone) { + XPLoginVerifBindPhoneViewController *vc = [[XPLoginVerifBindPhoneViewController alloc] init]; + vc.bindingPhoneNumType = XPBindingPhoneNumTypeNormal; + vc.userInfo = _userInfo; + [self.navigationController pushViewController:vc animated:YES]; + return; + } + //支付密码 + if (self.userInfo.isBindPasswd) { + XPMineLoginPasswordViewController *vc = [[XPMineLoginPasswordViewController alloc] init]; + vc.userInfo = self.userInfo; + vc.isModifiPwd = YES; + [self.navigationController pushViewController:vc animated:YES]; + } else { + XPMineLoginPasswordViewController *vc = [[XPMineLoginPasswordViewController alloc] init]; + vc.userInfo = self.userInfo; + vc.isModifiPwd = NO; + [self.navigationController pushViewController:vc animated:YES]; + } + } + break; + case XPMineSettingItemType_Black_Manager: + { + XPMineBlackListViewController * blackMangerVC = [[XPMineBlackListViewController alloc] init]; + [self.navigationController pushViewController:blackMangerVC animated:YES]; + } + break; + case XPMineSettingItemType_Notification_Remind: + { + XPMineNotificaViewController * notiVC = [[XPMineNotificaViewController alloc] init]; + [self.navigationController pushViewController:notiVC animated:YES]; + } + break; + case XPMineSettingItemType_Permission: + { + XPPrivacyViewController * pvc = [[XPPrivacyViewController alloc] init]; + [self.navigationController pushViewController:pvc animated:YES]; + } + break; + case XPMineSettingItemType_Helper: + { + [self pushWebViewWIthUrl:URLWithType(kFAQURL)]; + } + break; + case XPMineSettingItemType_Feedback: + { + XPMineFeedbackViewController * feedbackVC = [[XPMineFeedbackViewController alloc] init]; + [self.navigationController pushViewController:feedbackVC animated:YES]; + } + break; + case XPMineSettingItemType_Clear_Memory: + { + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.title = YMLocalizedString(@"XPMineSettingViewController2"); + config.message = @"要清除缓存吗?"; + [TTPopup alertWithConfig:config confirmHandler:^{ + NSSet *websiteDataTypes = [WKWebsiteDataStore allWebsiteDataTypes]; + NSDate *dateFrom = [NSDate dateWithTimeIntervalSince1970:0]; + @weakify(self); + [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:websiteDataTypes modifiedSince:dateFrom completionHandler:^{ + @strongify(self); + [self showSuccessToast:YMLocalizedString(@"XPMineSettingViewController4")]; + }]; + [[SDWebImageManager sharedManager].imageCache clearWithCacheType:SDImageCacheTypeAll completion:nil]; + } cancelHandler:^{ + }]; + } + break; + case XPMineSettingItemType_About_Us: + { + XPMineAboutUsViewController * aboutusVC = [[XPMineAboutUsViewController alloc] init]; + [self.navigationController pushViewController:aboutusVC animated:YES]; + } + break; + case XPMineSettingItemType_CheckUpdate: + { + [self showLoading]; + [self.presenter getVersionUpdate]; + } + break; + case XPMineSettingItemType_Delete_Account: { + + if ([ClientConfig shareConfig].canOpen) { + [self pushWebViewWIthUrl:URLWithType(kAccountlogoutURL)]; + } else { + [self pushWebViewWIthUrl:@"youmi/modules/logOff/index.html"]; + } + } + break; + default: + break; + } +} + +- (void)pushWebViewWIthUrl:(NSString *)url { + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + webVC.url = url; + [self.navigationController pushViewController:webVC animated:YES]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 45; +} + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return self.datasource.count; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource[section].count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + XPMineSettingTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineSettingTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineSettingTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineSettingTableViewCell class])]; + } + NSArray * array = [self.datasource safeObjectAtIndex1:indexPath.section]; + XPMineSettingItemModel * model = [array safeObjectAtIndex1:indexPath.row]; + cell.itemModel = model; + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { + if (section != 0) { + return 15; + } + return 0.01f; +} + +- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { + UIView * view = [[UIView alloc] init]; + view.frame = CGRectMake(0, 0, KScreenWidth, 15); + view.backgroundColor = [UIColor clearColor]; + return view; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { + return 0.01f; +} + +- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { + UIView * view = [[UIView alloc] init]; + view.frame = CGRectMake(0, 0, KScreenWidth, 0.01f); + view.backgroundColor = [UIColor clearColor]; + return view; +} + + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + XPMineSettingItemModel * model = [[self.datasource safeObjectAtIndex1:indexPath.section] safeObjectAtIndex1:indexPath.row]; + [self pushViewControllerWithType:model.type]; + } +} +#pragma mark - XPMineSettingProtocol +- (void)getMineSettingDatasourceSuccess:(NSArray *)array { + self.datasource = array; + [self.tableView reloadData]; +} + +- (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo { + self.userInfo = userInfo; + [self.presenter getMineSettingDataSourceWith:userInfo]; +} + +- (void)logoutCurrentAccountSuccess { + [self.navigationController popToRootViewControllerAnimated:NO]; +} + +- (void)getVersionUpdateFail{ + [self hideHUD]; +} +///版本更新 +-(void)getVersionUpdate:(XPVersionUpdateModel *)model{ + [self hideHUD]; + if(model.updateVersion.length == 0){ + [self showErrorToast:YMLocalizedString(@"XPMineSettingViewController5")]; + return; + } + NSString *appVersion = [YYUtility appVersion]; + NSString *updateVersion = model.updateVersion; + NSComparisonResult result = [appVersion compare:updateVersion options:NSNumericSearch]; + if(result == NSOrderedSame || result == NSOrderedDescending){ + [self showErrorToast:YMLocalizedString(@"XPMineSettingViewController6")]; + return; + } + XPUpgradeView *view = [[XPUpgradeView alloc] init]; + view.versionModel = model; + TTPopupService * service = [[TTPopupService alloc] init]; + service.contentView = view; + service.shouldDismissOnBackgroundTouch = NO; + [TTPopup popupWithConfig:service]; +} + +#pragma mark - Event Response +- (void)logoutButtonAction:(UIButton *)sender { + [self.presenter logoutCurrentAccount]; +} + +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.showsVerticalScrollIndicator = NO; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + [_tableView registerClass:[XPMineSettingTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineSettingTableViewCell class])]; + } + return _tableView; +} + +- (UIView *)footerView { + if (!_footerView) { + _footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 168)]; + } + return _footerView; +} + +- (UIButton *)logoutButton { + if (!_logoutButton) { + _logoutButton = [UIButton buttonWithType:UIButtonTypeCustom]; + _logoutButton.frame = CGRectMake(32, 40, KScreenWidth - 32* 2, 50); + _logoutButton.layer.masksToBounds = YES; + _logoutButton.layer.cornerRadius = 50/2; + _logoutButton.titleLabel.font = [UIFont systemFontOfSize:16]; + [_logoutButton addTarget:self action:@selector(logoutButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + if ([ClientConfig shareConfig].canOpen) { + [_logoutButton setTitle:YMLocalizedString(@"XPMineSettingViewController7") forState:UIControlStateNormal]; + _logoutButton.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + [_logoutButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + }else{ + [_logoutButton setTitle:YMLocalizedString(@"XPMineSettingViewController8") forState:UIControlStateNormal]; + _logoutButton.backgroundColor = UIColorFromRGB(0xCED3D8); + [_logoutButton setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; + } + } + return _logoutButton; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineVerifIdentityViewController.h b/YuMi/Modules/YMMine/View/Setting/XPMineVerifIdentityViewController.h new file mode 100644 index 00000000..4795dbcb --- /dev/null +++ b/YuMi/Modules/YMMine/View/Setting/XPMineVerifIdentityViewController.h @@ -0,0 +1,17 @@ +// +// YMMineVerifIdentityViewController.h +// YUMI +// +// Created by YUMI on 2021/9/18. +// 验证身份 + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN +@class UserInfoModel; +@interface XPMineVerifIdentityViewController : MvpViewController +///用户信息 +@property (nonatomic,strong) UserInfoModel *userInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineVerifIdentityViewController.m b/YuMi/Modules/YMMine/View/Setting/XPMineVerifIdentityViewController.m new file mode 100644 index 00000000..f3912c0f --- /dev/null +++ b/YuMi/Modules/YMMine/View/Setting/XPMineVerifIdentityViewController.m @@ -0,0 +1,177 @@ +// +// YMMineVerifIdentityViewController.m +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import "XPMineVerifIdentityViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "CountDownHelper.h" +#import "UIImage+Utils.h" +///Model +#import "UserInfoModel.h" +///View +#import "XPMineVerifIdentityView.h" +///P +#import "XPMineVerifIdentityPresenter.h" +#import "XPMineVerifIdentityProtocol.h" +///VC +#import "XPMineResetPayPwdViewController.h" + +@interface XPMineVerifIdentityViewController () +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///手机号 +@property (nonatomic,strong) XPMineVerifIdentityView *phoneView; +///验证码 +@property (nonatomic,strong) XPMineVerifIdentityView *smsCodeView; +///下一步 +@property (nonatomic,strong) UIButton *nextButton; +@end + +@implementation XPMineVerifIdentityViewController +- (void)dealloc { + [[CountDownHelper shareHelper] stopCountDown]; +} +- (XPMineVerifIdentityPresenter *)createPresenter { + return [[XPMineVerifIdentityPresenter alloc] init];; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + [self initEvents]; +} + +- (void)viewDidDisappear:(BOOL)animated { + [super viewDidDisappear:animated]; + [[CountDownHelper shareHelper] stopCountDown]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMineVerifIdentityViewController0"); + self.phoneView.contentTextField.text = self.userInfo.phone; + self.phoneView.contentTextField.enabled = self.userInfo.phone.length > 0; + [CountDownHelper shareHelper].delegate = self; + [self.view addSubview:self.stackView]; + [self.view addSubview:self.nextButton]; + + [self.stackView addArrangedSubview:self.phoneView]; + [self.stackView addArrangedSubview:self.smsCodeView]; +} + +- (void)initSubViewConstraints { + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + }]; + + [self.nextButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.stackView.mas_bottom).offset(45); + make.right.mas_equalTo(self.view).offset(-32); + make.left.mas_equalTo(self.view).offset(32); + make.height.mas_equalTo(45); + }]; +} + +- (void)initEvents { + @weakify(self); + RAC(self.nextButton, enabled) = [RACSignal combineLatest:@[self.phoneView.contentTextField.rac_textSignal, self.smsCodeView.contentTextField.rac_textSignal] reduce:^id _Nonnull(NSString *phone, NSString * code){ + return @(phone.length > 0 && code.length > 0); + }]; + + self.smsCodeView.smsCodeBlock = ^(UIButton * _Nonnull sender) { + @strongify(self); + if (self.phoneView.contentTextField.text.length > 0) { + [self.presenter phoneSmsCode:self.phoneView.contentTextField.text type:GetSmsType_Unbind_Phone phoneAreaCode:@""]; + } else { + [self showErrorToast:YMLocalizedString(@"XPMineVerifIdentityViewController1")]; + } + }; +} +#pragma mark - XPMineVerifIdentityProtocol +- (void)phoneSmsCodeSuccess { + self.smsCodeView.smsCodeButton.enabled = NO; + [self showSuccessToast:YMLocalizedString(@"XPMineVerifIdentityViewController2")]; + [[CountDownHelper shareHelper] openCountdownWithTime:60]; +} + +- (void)checkMoblieCodeWithMoblieSuccess { + [self showErrorToast:YMLocalizedString(@"XPMineVerifIdentityViewController3")]; + [[CountDownHelper shareHelper] stopCountDown]; + XPMineResetPayPwdViewController * vc = [[XPMineResetPayPwdViewController alloc] init]; + [self.navigationController pushViewController:vc animated:YES]; +} + +#pragma mark - CountDownHelperDelegate +///倒计时进行中 +- (void)onCountdownOpen:(int)time { + [self.smsCodeView.smsCodeButton setTitle:[NSString stringWithFormat:YMLocalizedString(@"XPMineVerifIdentityViewController4"), time] forState:UIControlStateDisabled]; +} +///倒计时结束 +- (void)onCountdownFinish { + self.smsCodeView.smsCodeButton.enabled= YES; + [self.smsCodeView.smsCodeButton setTitle:YMLocalizedString(@"XPMineVerifIdentityViewController5") forState:UIControlStateNormal]; +} + +#pragma mark - Event Response +- (void)nextButtonAction:(UIButton *)sender { + [self.presenter checkMoblieCodeWithMoblie:self.phoneView.contentTextField.text code:self.smsCodeView.contentTextField.text]; +} + +#pragma mark - Getters And Setters +- (UIButton *)nextButton { + if (!_nextButton) { + _nextButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_nextButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_nextButton setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateDisabled]; + [_nextButton setTitle:YMLocalizedString(@"XPMineVerifIdentityViewController6") forState:UIControlStateNormal]; + _nextButton.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; + _nextButton.layer.masksToBounds = YES; + _nextButton.layer.cornerRadius = 45/2; + _nextButton.enabled = NO; + [_nextButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_nextButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor disableButtonColor], [DJDKMIMOMColor disableButtonColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; + [_nextButton addTarget:self action:@selector(nextButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _nextButton; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 0; + } + return _stackView; +} + +- (XPMineVerifIdentityView *)phoneView { + if (!_phoneView) { + _phoneView = [[XPMineVerifIdentityView alloc] init]; + _phoneView.type = XPMineVerifIdentityType_Phone; + _phoneView.placeholder = YMLocalizedString(@"XPMineVerifIdentityViewController7"); + _phoneView.contentTextField.secureTextEntry = NO; + } + return _phoneView; +} + +- (XPMineVerifIdentityView *)smsCodeView { + if (!_smsCodeView) { + _smsCodeView = [[XPMineVerifIdentityView alloc] init]; + _smsCodeView.type = XPMineVerifIdentityType_Sms; + _smsCodeView.placeholder = YMLocalizedString(@"XPMineVerifIdentityViewController8"); + _smsCodeView.contentTextField.secureTextEntry = NO; + } + return _smsCodeView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/Setting/XPVendorCallViewController.h b/YuMi/Modules/YMMine/View/Setting/XPVendorCallViewController.h new file mode 100644 index 00000000..edd3eb34 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Setting/XPVendorCallViewController.h @@ -0,0 +1,19 @@ +// +// YMVendorCallViewController.h +// YUMI +// +// Created by XY on 2023/2/15. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPVendorCallViewController : MvpViewController + +- (void)vendorCall; + +@end + +NS_ASSUME_NONNULL_END + diff --git a/YuMi/Modules/YMMine/View/Setting/XPVendorCallViewController.m b/YuMi/Modules/YMMine/View/Setting/XPVendorCallViewController.m new file mode 100644 index 00000000..575e3146 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Setting/XPVendorCallViewController.m @@ -0,0 +1,48 @@ +// +// YMVendorCallViewController.m +// YUMI +// +// Created by XY on 2023/2/15. +// + +#import "XPVendorCallViewController.h" +#import +#import +#import +#import +#import + +@interface XPVendorCallViewController () + +@end + +@implementation XPVendorCallViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + +} + +- (void)vendorCall { + WMZDropMenuParam *param =MenuParam().wMainRadiusSet(0); + WMZDropDownMenu *menu = [[WMZDropDownMenu alloc] initWithFrame:CGRectMake(0, Menu_NavigationBar, Menu_Width, 40) withParam:param]; + [self.view addSubview:menu]; + + ZLCollectionViewHorzontalLayout *layout = [[ZLCollectionViewHorzontalLayout alloc] init]; + layout.scrollDirection = UICollectionViewScrollDirectionVertical; + + [[TABAnimated sharedAnimated] initWithOnlySkeleton]; + [TABAnimated sharedAnimated].openLog = NO; + + [LottieAnimationView animateWithDuration:1 animations:^{ + + }]; + + WXSDKInstance *instance = [[WXSDKInstance alloc] init]; + instance.isMainContainerStack = NO; + +} + + + +@end diff --git a/YuMi/Modules/YMMine/View/Setting/YUMIManeAboutUsRegardGovernancer.h b/YuMi/Modules/YMMine/View/Setting/YUMIManeAboutUsRegardGovernancer.h deleted file mode 100644 index 9765059d..00000000 --- a/YuMi/Modules/YMMine/View/Setting/YUMIManeAboutUsRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineAboutUsViewController.h -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import "BaseRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeAboutUsRegardGovernancer : BaseRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Setting/YUMIManeAboutUsRegardGovernancer.m b/YuMi/Modules/YMMine/View/Setting/YUMIManeAboutUsRegardGovernancer.m deleted file mode 100644 index 016e11c8..00000000 --- a/YuMi/Modules/YMMine/View/Setting/YUMIManeAboutUsRegardGovernancer.m +++ /dev/null @@ -1,93 +0,0 @@ -// -// YMMineAboutUsViewController.m -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import "YUMIManeAboutUsRegardGovernancer.h" -#import -#import "DJDKMIMOMColor.h" -#import "YYUtility.h" -#import "YUMIMacroUitls.h" - -#import "YUMIVendorCallRegardGovernancer.h" - - -@interface YUMIManeAboutUsRegardGovernancer () -@property (nonatomic, strong) UIImageView *figureIndicateRegard; -@property (strong, nonatomic) UILabel *versionSequencignation; -@property (strong , nonatomic) UILabel *constituteSequencignation; -@end - -@implementation YUMIManeAboutUsRegardGovernancer - -- (void)viewDidLoad { - [super viewDidLoad]; - self.title = [NSString stringWithFormat:@"关于%@",AppName]; - [self initSubViews]; - [self manufactureConstriants]; - - - YUMIVendorCallRegardGovernancer *callVC = [[YUMIVendorCallRegardGovernancer alloc] init]; - [callVC vconcludeorCentirety]; - -} - -- (void)initSubViews { - [self.view addSubview:self.versionSequencignation]; - [self.view addSubview:self.figureIndicateRegard]; - [self.view addSubview:self.constituteSequencignation]; -} - -- (void)manufactureConstriants { - [self.figureIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.view); - make.top.mas_equalTo(kNavigationHeight+60); - }]; - [self.constituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.view); - make.top.mas_equalTo(self.figureIndicateRegard.mas_bottom).offset(5); - }]; - [self.versionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.constituteSequencignation.mas_bottom).offset(5); - make.centerX.mas_equalTo(self.view); - }]; -} - - -#pragma mark - Getter && Setter - -- (UIImageView *)figureIndicateRegard { - if (!_figureIndicateRegard) { - _figureIndicateRegard = [[UIImageView alloc] init]; - _figureIndicateRegard.image = [UIImage imageNamed:@"yumi_ming_setting_about_us"]; - _figureIndicateRegard.layer.cornerRadius = 12; - _figureIndicateRegard.layer.masksToBounds = YES; - } - return _figureIndicateRegard; -} - - -- (UILabel *)versionSequencignation { - if (!_versionSequencignation) { - _versionSequencignation = [[UILabel alloc] init]; - _versionSequencignation.font = [UIFont systemFontOfSize:12]; - _versionSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _versionSequencignation.text = [NSString stringWithFormat:@"V%@",[YYUtility appVersion]]; - } - return _versionSequencignation; -} - -- (UILabel *)constituteSequencignation { - if (!_constituteSequencignation) { - _constituteSequencignation = [[UILabel alloc] init]; - _constituteSequencignation.text = AppName; - _constituteSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _constituteSequencignation.font = [UIFont systemFontOfSize:17]; - } - return _constituteSequencignation; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/Setting/YUMIManeBlackStatementRegardGovernancer.h b/YuMi/Modules/YMMine/View/Setting/YUMIManeBlackStatementRegardGovernancer.h deleted file mode 100644 index 70f02668..00000000 --- a/YuMi/Modules/YMMine/View/Setting/YUMIManeBlackStatementRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineBlackListViewController.h -// YUMI -// -// Created by YUMI on 2022/4/25. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeBlackStatementRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Setting/YUMIManeBlackStatementRegardGovernancer.m b/YuMi/Modules/YMMine/View/Setting/YUMIManeBlackStatementRegardGovernancer.m deleted file mode 100644 index d3a07095..00000000 --- a/YuMi/Modules/YMMine/View/Setting/YUMIManeBlackStatementRegardGovernancer.m +++ /dev/null @@ -1,133 +0,0 @@ -// -// YMMineBlackListViewController.m -// YUMI -// -// Created by YUMI on 2022/4/25. -// - -#import "YUMIManeBlackStatementRegardGovernancer.h" -#import -#import -#import "YUMIManeBlackStatementTabulationRegardElement.h" -#import "YUMIManeAssistantDispossessTabulationRegardElement.h" -#import "NSArray+Safe.h" -#import "ConsumerAbstractMatrix.h" -#import "YUMIManeBlackStatementExternalizer.h" -#import "FBCManeBlackStatementCeremony.h" - -@interface YUMIManeBlackStatementRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *datasource; -@end - -@implementation YUMIManeBlackStatementRegardGovernancer - -- (__kindof id)producePresimport { - return [[YUMIManeBlackStatementExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - NSArray *array = [[NIMSDK sharedSDK].userManager myBlackList]; - if (array.count > 0) { - NSMutableArray * uids = [NSMutableArray array]; - for (int i = 0; i< array.count; i++) { - NIMUser * user = [array secureGroalTowardsIndictowardsrix1:i]; - [uids addObject:user.userId]; - } - [self.presimport acquireConsumerSttowardsementAbstract:uids]; - } - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Mine_Black_List_View_Controller_0"); - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return self.datasource.count > 0 ? 60 : 500; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMIManeBlackStatementTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeBlackStatementTabulationRegardElement class])]; - cell.userInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; - } - YUMIManeAssistantDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeAssistantDispossessTabulationRegardElement class])]; - return cell; -} - -- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{ - if (self.datasource.count > 0) { - return UITableViewCellEditingStyleDelete; - } - return UITableViewCellEditingStyleNone; -} - --(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{ - return YMLocalizedString(@"YUMI_Mine_Black_List_View_Controller_1"); -} - --(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{ - if (editingStyle ==UITableViewCellEditingStyleDelete){ - if (self.datasource.count > 0) { - ConsumerAbstractMatrix *userInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - [[NIMSDK sharedSDK].userManager removeFromBlackBlackList:[NSString stringWithFormat:@"%ld", userInfo.uid] completion:^(NSError * _Nullable error) { - if (error == nil) { - [self.datasource removeObject:userInfo]; - [self.tableView reloadData]; - } - }]; - } - - } -} - -#pragma mark - YUMI_MineBlackListPrototcol -- (void)acquireConsumerSttowardsementAbstractAccomplishment:(NSArray *)array { - [self.datasource addObjectsFromArray:array]; - [self.tableView reloadData]; -} - -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIManeBlackStatementTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeBlackStatementTabulationRegardElement class])]; - [_tableView registerClass:[YUMIManeAssistantDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeAssistantDispossessTabulationRegardElement class])]; - } - return _tableView; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - - - -@end diff --git a/YuMi/Modules/YMMine/View/Setting/YUMIManeFeedbackRegardGovernancer.h b/YuMi/Modules/YMMine/View/Setting/YUMIManeFeedbackRegardGovernancer.h deleted file mode 100644 index efdb49bd..00000000 --- a/YuMi/Modules/YMMine/View/Setting/YUMIManeFeedbackRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineFeedbackViewController.h -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeFeedbackRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Setting/YUMIManeFeedbackRegardGovernancer.m b/YuMi/Modules/YMMine/View/Setting/YUMIManeFeedbackRegardGovernancer.m deleted file mode 100644 index 7df8d1b8..00000000 --- a/YuMi/Modules/YMMine/View/Setting/YUMIManeFeedbackRegardGovernancer.m +++ /dev/null @@ -1,164 +0,0 @@ -// -// YMMineFeedbackViewController.m -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import "YUMIManeFeedbackRegardGovernancer.h" -#import -#import -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "FBCManeFeedbackCeremony.h" -#import "YUMIManeFeedbackExternalizer.h" - -@interface YUMIManeFeedbackRegardGovernancer () -@property (nonatomic, strong) UIView *speckRegard; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) SZTextView *satisfperformanceEssayRegard; -@property (nonatomic, strong) UITextField *contactUniverse; -@property (nonatomic, strong) UIButton *submitBtuton; - -@end - -@implementation YUMIManeFeedbackRegardGovernancer - -- (YUMIManeFeedbackExternalizer *)producePresimport { - return [[YUMIManeFeedbackExternalizer alloc] init];; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - self.title = YMLocalizedString(@"YUMI_Mine_Feedback_View_Controller_0"); - [self initSubviews]; - [self manufactureConstriants]; -} - -#pragma mark - Private Method -- (void)initSubviews { - [self.view addSubview:self.speckRegard]; - [self.view addSubview:self.titleLabel]; - [self.view addSubview:self.satisfperformanceEssayRegard]; - [self.view addSubview:self.contactUniverse]; - [self.view addSubview:self.submitBtuton]; - -} - -- (void)manufactureConstriants { - [self.speckRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.view).offset(15); - make.top.mas_equalTo(17); - make.height.width.mas_equalTo(7); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.speckRegard.mas_right).offset(4); - make.centerY.mas_equalTo(self.speckRegard); - }]; - [self.satisfperformanceEssayRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.speckRegard.mas_bottom).offset(20); - make.left.mas_equalTo(self.view).offset(15); - make.right.mas_equalTo(self.view).offset(-15); - make.height.mas_equalTo(154); - }]; - [self.contactUniverse mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.satisfperformanceEssayRegard.mas_bottom).offset(10); - make.left.right.mas_equalTo(self.satisfperformanceEssayRegard); - make.height.mas_equalTo(35); - }]; - [self.submitBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.contactUniverse.mas_bottom).offset(45); - make.centerX.mas_equalTo(self.view); - make.height.mas_equalTo(45); - make.width.mas_equalTo(310); - }]; -} - -- (void)initOccurrences { - RAC(self.submitBtuton, enabled) = [RACSignal combineLatest:@[self.satisfperformanceEssayRegard.rac_textSignal, self.contactUniverse.rac_textSignal] reduce:^id _Nonnull(NSString *content, NSString * contact){ - return @(content.length > 0 && contact.length > 0); - }]; -} - -#pragma mark - FeedbackCoreClient -- (void)preserveFeedencourageAccomplishment { - [self EvidenceAccomplishmentToast:[NSString stringWithFormat:@"感谢您的宝贵意见,让我们共同营造更好的%@", AppName]]; - [self.navigationController popViewControllerAnimated:YES]; -} -#pragma mark - Event Response -- (void)advoctowardseBtutonPerformance:(UIButton *)sender { - [self.presimport preserveFeedEncourageAbout:self.satisfperformanceEssayRegard.text contact:self.contactUniverse.text]; -} - -#pragma mark - Getter && Setter - -- (UIView *)speckRegard { - if (!_speckRegard) { - _speckRegard = [[UIView alloc] init]; - _speckRegard.backgroundColor = UIColorFromRGB(0xF944A1); - _speckRegard.layer.masksToBounds = YES; - _speckRegard.layer.cornerRadius = 3.5; - } - return _speckRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Mine_Feedback_View_Controller_2"); - _titleLabel.font = [UIFont systemFontOfSize:15]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - - -- (SZTextView *)satisfperformanceEssayRegard { - if (!_satisfperformanceEssayRegard) { - _satisfperformanceEssayRegard = [[SZTextView alloc] init]; - NSString * placeholder = @"请详细描述您所遇到的问题与情况,感谢您提出宝贵的意见。"; - _satisfperformanceEssayRegard.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholder attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:14], NSForegroundColorAttributeName : [DJDKMIMOMColor instantEssayPrettify]}]; - _satisfperformanceEssayRegard.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _satisfperformanceEssayRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _satisfperformanceEssayRegard.font = [UIFont systemFontOfSize:14]; - _satisfperformanceEssayRegard.layer.cornerRadius = 3; - } - return _satisfperformanceEssayRegard; -} - -- (UITextField *)contactUniverse { - if (!_contactUniverse) { - _contactUniverse = [[UITextField alloc] init]; - NSString * placeholder = YMLocalizedString(@"YUMI_Mine_Feedback_View_Controller_4"); - _contactUniverse.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholder attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:14], NSForegroundColorAttributeName : [DJDKMIMOMColor instantEssayPrettify]}]; - _contactUniverse.font = [UIFont systemFontOfSize:14]; - _contactUniverse.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _contactUniverse.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _contactUniverse.layer.cornerRadius = 3; - _contactUniverse.leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 8, 0)]; - _contactUniverse.leftViewMode = UITextFieldViewModeAlways; - } - return _contactUniverse; -} - -- (UIButton *)submitBtuton { - if (!_submitBtuton) { - _submitBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - _submitBtuton.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; - [_submitBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Feedback_View_Controller_5") forState:UIControlStateNormal]; - [_submitBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_submitBtuton setTitleColor:[DJDKMIMOMColor prohibitionBtutonEssayPrettify] forState:UIControlStateDisabled]; - _submitBtuton.layer.masksToBounds = YES; - _submitBtuton.layer.cornerRadius = 45/2; - [_submitBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_submitBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor prohibitionBtutonPrettify], [DJDKMIMOMColor prohibitionBtutonPrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; - _submitBtuton.enabled = NO; - [_submitBtuton addTarget:self action:@selector(advoctowardseBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - - } - return _submitBtuton; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Setting/YUMIManeInstanllingRegardGovernancer.h b/YuMi/Modules/YMMine/View/Setting/YUMIManeInstanllingRegardGovernancer.h deleted file mode 100644 index faea3f29..00000000 --- a/YuMi/Modules/YMMine/View/Setting/YUMIManeInstanllingRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineSettingViewController.h -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN -@class ConsumerAbstractMatrix; -@interface YUMIManeInstanllingRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Setting/YUMIManeInstanllingRegardGovernancer.m b/YuMi/Modules/YMMine/View/Setting/YUMIManeInstanllingRegardGovernancer.m deleted file mode 100644 index 56e81ba4..00000000 --- a/YuMi/Modules/YMMine/View/Setting/YUMIManeInstanllingRegardGovernancer.m +++ /dev/null @@ -1,361 +0,0 @@ -// -// YMMineSettingViewController.m -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import "YUMIManeInstanllingRegardGovernancer.h" -#import -#import -#import "SDWebImageManager.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "YUMIHtmlUrl.h" -#import "YYUtility.h" -#import "ClientDisposition.h" -#import "YUMIManeInstanllingProvisionMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "YUMIVersionRefurbishMatrix.h" -#import "YUMIManeInstanllingTabulationRegardElement.h" -#import "MKJPrecautiousDisposition.h" -#import "MKJPopup.h" -#import "YUMIAscensionRegard.h" -#import "YUMIManeInstanllingExternalize.h" -#import "FBCManeInstanllingCeremony.h" -#import "YUMIManeAboutUsRegardGovernancer.h" -#import "YUMIManeFeedbackRegardGovernancer.h" -#import "YUMIManeNotificaRegardGovernancer.h" -#import "YUMIManeIntersectPwordRegardGovernancer.h" -#import "YUMIManeModifIntersectPwordRegardGovernancer.h" -#import "YUMIPrivacyRegardGovernancer.h" -#import "YUMIManeSurmountCiphercodeRegardGovernancer.h" -#import "YUMIManeBlackStatementRegardGovernancer.h" -#import "YUMITissueRegardGovernancer.h" -#import "YUMISurmountValidationDilemmaMobileRegardGovernancer.h" -#import "YUMISurmountDilemmaMobileConsequentRegardGovernancer.h" - - -@interface YUMIManeInstanllingRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSArray *> *datasource; -@property (nonatomic,strong) UIButton *brandutBtuton; -@property (strong, nonatomic) UIView *footerRegard; -@end - -@implementation YUMIManeInstanllingRegardGovernancer -- (YUMIManeInstanllingExternalize *)producePresimport { - return [[YUMIManeInstanllingExternalize alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self.presimport acquireManeInstanllingTowardsoloudspeakerProvenienceAbout:self.userInfo]; -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - - [self.presimport getUserInfo]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Mine_Setting_View_Controller_0"); - [self.view addSubview:self.tableView]; - [self.footerRegard addSubview:self.brandutBtuton]; - self.tableView.tableFooterView = self.footerRegard; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.top.mas_equalTo(0); - }]; -} - -- (void)pushRegardGovernancerAboutGenre:(YUMIManeInstanllingProvisionGenre)type { - switch (type) { - case YUMIManeInstanllingProvisionGenre_Phone: - { - - if (self.userInfo.isBindPhone) { - YUMISurmountDilemmaMobileConsequentRegardGovernancer *vc = [[YUMISurmountDilemmaMobileConsequentRegardGovernancer alloc] init]; - vc.userInfo = _userInfo; - [self.navigationController pushViewController:vc animated:YES]; - }else { - YUMISurmountValidationDilemmaMobileRegardGovernancer *vc = [[YUMISurmountValidationDilemmaMobileRegardGovernancer alloc] init]; - vc.bindingMobileFigureGenre = XPBindingPhoneNumTypeNormal; - vc.userInfo = _userInfo; - [self.navigationController pushViewController:vc animated:YES]; - } - } - break; - case YUMIManeInstanllingProvisionGenre_Pay_Password: - { - if (!self.userInfo.isBindPhone) { - [self EvidenceMistakeToast:@"请先绑定手机号码哦~"]; - return; - } - - if (self.userInfo.isBindPaymentPwd) { - YUMIManeModifIntersectPwordRegardGovernancer *vc = [[YUMIManeModifIntersectPwordRegardGovernancer alloc] init]; - vc.userInfo = self.userInfo; - [self.navigationController pushViewController:vc animated:YES]; - } else { - YUMIManeIntersectPwordRegardGovernancer *vc = [[YUMIManeIntersectPwordRegardGovernancer alloc] init]; - vc.userInfo = self.userInfo; - [self.navigationController pushViewController:vc animated:YES]; - } - } - break; - case YUMIManeInstanllingProvisionGenre_Login_Password: - { - if (!self.userInfo.isBindPhone) { - YUMISurmountValidationDilemmaMobileRegardGovernancer *vc = [[YUMISurmountValidationDilemmaMobileRegardGovernancer alloc] init]; - vc.bindingMobileFigureGenre = XPBindingPhoneNumTypeNormal; - vc.userInfo = _userInfo; - [self.navigationController pushViewController:vc animated:YES]; - return; - } - - if (self.userInfo.isBindPasswd) { - YUMIManeSurmountCiphercodeRegardGovernancer *vc = [[YUMIManeSurmountCiphercodeRegardGovernancer alloc] init]; - vc.userInfo = self.userInfo; - vc.isModifiPword = YES; - [self.navigationController pushViewController:vc animated:YES]; - } else { - YUMIManeSurmountCiphercodeRegardGovernancer *vc = [[YUMIManeSurmountCiphercodeRegardGovernancer alloc] init]; - vc.userInfo = self.userInfo; - vc.isModifiPword = NO; - [self.navigationController pushViewController:vc animated:YES]; - } - } - break; - case YUMIManeInstanllingProvisionGenre_Black_Manager: - { - YUMIManeBlackStatementRegardGovernancer * blackMangerVC = [[YUMIManeBlackStatementRegardGovernancer alloc] init]; - [self.navigationController pushViewController:blackMangerVC animated:YES]; - } - break; - case YUMIManeInstanllingProvisionGenre_Notification_Remind: - { - YUMIManeNotificaRegardGovernancer * notiVC = [[YUMIManeNotificaRegardGovernancer alloc] init]; - [self.navigationController pushViewController:notiVC animated:YES]; - } - break; - case YUMIManeInstanllingProvisionGenre_Permission: - { - YUMIPrivacyRegardGovernancer * pvc = [[YUMIPrivacyRegardGovernancer alloc] init]; - [self.navigationController pushViewController:pvc animated:YES]; - } - break; - case YUMIManeInstanllingProvisionGenre_Helper: - { - [self pushTissueRegardWIthWeebsite:URLWithType(kFAQURL)]; - } - break; - case YUMIManeInstanllingProvisionGenre_Feedback: - { - YUMIManeFeedbackRegardGovernancer * feedbackVC = [[YUMIManeFeedbackRegardGovernancer alloc] init]; - [self.navigationController pushViewController:feedbackVC animated:YES]; - } - break; - case YUMIManeInstanllingProvisionGenre_Clear_Memory: - { - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.title = YMLocalizedString(@"YUMI_Mine_Setting_View_Controller_2"); - config.message = @"要清除缓存吗?"; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - NSSet *websiteDataTypes = [WKWebsiteDataStore allWebsiteDataTypes]; - NSDate *dateFrom = [NSDate dateWithTimeIntervalSince1970:0]; - @weakify(self); - [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:websiteDataTypes modifiedSince:dateFrom completionHandler:^{ - @strongify(self); - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Mine_Setting_View_Controller_4")]; - }]; - [[SDWebImageManager sharedManager].imageCache clearWithCacheType:SDImageCacheTypeAll completion:nil]; - } cancelHandler:^{ - }]; - } - break; - case YUMIManeInstanllingProvisionGenre_About_Us: - { - YUMIManeAboutUsRegardGovernancer * aboutusVC = [[YUMIManeAboutUsRegardGovernancer alloc] init]; - [self.navigationController pushViewController:aboutusVC animated:YES]; - } - break; - case YUMIManeInstanllingProvisionGenre_CheckUpdate: - { - [self EvidenceChambering]; - [self.presimport acquireReleaseRefurbish]; - } - break; - case YUMIManeInstanllingProvisionGenre_Delete_Account: { - - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - [self pushTissueRegardWIthWeebsite:URLWithType(kAccountlogoutURL)]; - } else { - [self pushTissueRegardWIthWeebsite:@"youmi/modules/logOff/index.html"]; - } - } - break; - default: - break; - } -} - -- (void)pushTissueRegardWIthWeebsite:(NSString *)url { - YUMITissueRegardGovernancer * webVewC = [[YUMITissueRegardGovernancer alloc] init]; - webVewC.url = url; - [self.navigationController pushViewController:webVewC animated:YES]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 45; -} - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return self.datasource.count; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource[section].count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - YUMIManeInstanllingTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeInstanllingTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeInstanllingTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeInstanllingTabulationRegardElement class])]; - } - NSArray * array = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.section]; - YUMIManeInstanllingProvisionMatrix * model = [array secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.itemMatrix = model; - return cell; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { - if (section != 0) { - return 15; - } - return 0.01f; -} - -- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { - UIView * view = [[UIView alloc] init]; - view.frame = CGRectMake(0, 0, KScreenWidth, 15); - view.backgroundColor = [UIColor clearColor]; - return view; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { - return 0.01f; -} - -- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { - UIView * view = [[UIView alloc] init]; - view.frame = CGRectMake(0, 0, KScreenWidth, 0.01f); - view.backgroundColor = [UIColor clearColor]; - return view; -} - - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.datasource.count > 0) { - YUMIManeInstanllingProvisionMatrix * model = [[self.datasource secureGroalTowardsIndictowardsrix1:indexPath.section] secureGroalTowardsIndictowardsrix1:indexPath.row]; - [self pushRegardGovernancerAboutGenre:model.type]; - } -} -#pragma mark - FBCManeInstanllingCeremony -- (void)acquireManeInstanllingTowardsoloudspeakersourceAccomplishment:(NSArray *)array { - self.datasource = array; - [self.tableView reloadData]; -} - -- (void)dwellEarnConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo { - self.userInfo = userInfo; - [self.presimport acquireManeInstanllingTowardsoloudspeakerProvenienceAbout:userInfo]; -} - -- (void)revoctowardsionledUniversalSequenceriptionAccomplishment { - [self.navigationController popToRootViewControllerAnimated:NO]; -} - -- (void)acquireReleaseRefurbishFlunk{ - [self brakeHUD]; -} --(void)acquireReleaseRefurbish:(YUMIVersionRefurbishMatrix *)model{ - [self brakeHUD]; - if(model.updateVersion.length == 0){ - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Mine_Setting_View_Controller_5")]; - return; - } - NSString *appVersion = [YYUtility appVersion]; - NSString *updateVersion = model.updateVersion; - NSComparisonResult result = [appVersion compare:updateVersion options:NSNumericSearch]; - if(result == NSOrderedSame || result == NSOrderedDescending){ - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Mine_Setting_View_Controller_6")]; - return; - } - YUMIAscensionRegard *view = [[YUMIAscensionRegard alloc] init]; - view.versionMatrix = model; - MKJPopupServing * service = [[MKJPopupServing alloc] init]; - service.contentView = view; - service.shouldDismissOnBackgroundTouch = NO; - [MKJPopup popupAboutDisposition:service]; -} - -#pragma mark - Event Response -- (void)revoctowardsionledBtutonPerformance:(UIButton *)sender { - [self.presimport revoctowardsionledUniversalSequenceription]; -} - -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.showsVerticalScrollIndicator = NO; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - [_tableView registerClass:[YUMIManeInstanllingTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeInstanllingTabulationRegardElement class])]; - } - return _tableView; -} - -- (UIView *)footerRegard { - if (!_footerRegard) { - _footerRegard = [[UIView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 168)]; - } - return _footerRegard; -} - -- (UIButton *)brandutBtuton { - if (!_brandutBtuton) { - _brandutBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - _brandutBtuton.frame = CGRectMake(32, 40, KScreenWidth - 32* 2, 50); - _brandutBtuton.layer.masksToBounds = YES; - _brandutBtuton.layer.cornerRadius = 50/2; - _brandutBtuton.titleLabel.font = [UIFont systemFontOfSize:16]; - [_brandutBtuton addTarget:self action:@selector(revoctowardsionledBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - [_brandutBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Setting_View_Controller_7") forState:UIControlStateNormal]; - _brandutBtuton.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - [_brandutBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateNormal]; - }else{ - [_brandutBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Setting_View_Controller_8") forState:UIControlStateNormal]; - _brandutBtuton.backgroundColor = UIColorFromRGB(0xCED3D8); - [_brandutBtuton setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; - } - } - return _brandutBtuton; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Setting/YUMIManeIntersectPwordRegardGovernancer.h b/YuMi/Modules/YMMine/View/Setting/YUMIManeIntersectPwordRegardGovernancer.h deleted file mode 100644 index 48762a53..00000000 --- a/YuMi/Modules/YMMine/View/Setting/YUMIManeIntersectPwordRegardGovernancer.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// YMMinePayPwdViewController.h -// YUMI -// -// Created by YUMI on 2021/9/18. -//设置支付密码(初次) 重置支付密码 - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSUInteger, PayPasswordGenre) { - PayPasswordGenre_Set, - PayPasswordGenre_Reset, -}; - -@protocol FBCManePayPwordRegardGovernancerRepresendtation - --(void)payCiphercryptogramAccomplishment; - -@end - -@class ConsumerAbstractMatrix; -@interface YUMIManeIntersectPwordRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,assign) PayPasswordGenre type; -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Setting/YUMIManeIntersectPwordRegardGovernancer.m b/YuMi/Modules/YMMine/View/Setting/YUMIManeIntersectPwordRegardGovernancer.m deleted file mode 100644 index e2dbdfb9..00000000 --- a/YuMi/Modules/YMMine/View/Setting/YUMIManeIntersectPwordRegardGovernancer.m +++ /dev/null @@ -1,211 +0,0 @@ -// -// YMMinePayPwdViewController.m -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import "YUMIManeIntersectPwordRegardGovernancer.h" -#import -#import -#import "UIImage+Utils.h" -#import "DJDKMIMOMColor.h" -#import "ComputationDownFacilitater.h" -#import "ConsumerAbstractMatrix.h" -#import "YUMIManeModifIntersectPwordRegard.h" -#import "YUMIManeInstanllingRegardGovernancer.h" -#import "YUMIManeIntersectPwordExternalizer.h" -#import "FBCManePayPwordCeremony.h" - -@interface YUMIManeIntersectPwordRegardGovernancer () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic, strong) YUMIManeModifIntersectPwordRegard *pwordIntrojectionRegard; -@property (nonatomic, strong) YUMIManeModifIntersectPwordRegard *repeatPwordIntrojectionRegard; -@property (nonatomic, strong) UIButton *submitBtuton; -@property (nonatomic, strong) UILabel *promptsSequencignation; -@end - -@implementation YUMIManeIntersectPwordRegardGovernancer - -- (void)dealloc { - -} - -- (YUMIManeIntersectPwordExternalizer *)producePresimport { - return [[YUMIManeIntersectPwordExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubviews]; - - self.title = YMLocalizedString(@"YUMI_Mine_Pay_Pwd_View_Controller_0"); - - -} - -- (void)initSubviews { - self.view.backgroundColor = [UIColor whiteColor]; - [self.view addSubview:self.stackView]; - [self.view addSubview:self.submitBtuton]; - [self.stackView addArrangedSubview:self.pwordIntrojectionRegard]; - [self.stackView addArrangedSubview:self.repeatPwordIntrojectionRegard]; - - - - [self manufactureConstriants]; -} - -- (void)manufactureConstriants { - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(30); - make.left.right.mas_equalTo(self.view); - }]; - - - [self.submitBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(275); - make.right.mas_equalTo(self.view).offset(-15); - make.left.mas_equalTo(self.view).offset(15); - make.height.mas_equalTo(46); - }]; - - -} - - - - -- (void)setIntersectCiphercryptogramAccomplishment { - NSString *message = YMLocalizedString(@"YUMI_Mine_Pay_Pwd_View_Controller_3"); - [self EvidenceAccomplishmentToast:message]; - if(self.delegate && [self.delegate respondsToSelector:@selector(payCiphercryptogramAccomplishment)]){ - [self.delegate payCiphercryptogramAccomplishment]; - } - @weakify(self) - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - @strongify(self) - for (UIViewController *VC in self.navigationController.viewControllers) { - if ([VC isKindOfClass:[YUMIManeInstanllingRegardGovernancer class]]) { - [self.navigationController popToViewController:VC animated:YES]; - return; - } - } - [self.navigationController popViewControllerAnimated:YES]; - }); -} - - - -#pragma mark - event -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { - [self.view endEditing:YES]; -} - -- (void)onTicktackMetromitBtuton { - [self.view endEditing:YES]; - NSString *pwd = self.pwordIntrojectionRegard.satisfperformanceEssayUniverse.text; - NSString *repeatPwd = self.repeatPwordIntrojectionRegard.satisfperformanceEssayUniverse.text; - if (pwd.length != 6) { - NSString *msg = YMLocalizedString(@"YUMI_Mine_Pay_Pwd_View_Controller_4"); - [self EvidenceMistakeToast:msg]; - return; - } - if (![self isPureFigure:pwd]) { - NSString *msg = YMLocalizedString(@"YUMI_Mine_Pay_Pwd_View_Controller_5"); - [self EvidenceMistakeToast:msg]; - return; - } - if (![pwd isEqualToString:repeatPwd]) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Mine_Pay_Pwd_View_Controller_6")]; - return; - } - - - - - [self.presimport setIntersectCiphercryptogram:pwd ]; -} - -#pragma mark - Private - -- (BOOL)isPureFigure:(NSString *)text { - if (!text) { - return NO; - } - - NSScanner *scan = [NSScanner scannerWithString:text]; - int val; - return [scan scanInt:&val] && [scan isAtEnd]; -} - -- (NSString *)phoneNumber { - return self.userInfo.phone; -} - -#pragma mark - Getter && Setter -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 25; - } - return _stackView; -} -- (YUMIManeModifIntersectPwordRegard *)pwordIntrojectionRegard { - if (!_pwordIntrojectionRegard) { - _pwordIntrojectionRegard = [[YUMIManeModifIntersectPwordRegard alloc] init]; - _pwordIntrojectionRegard.placeholder = YMLocalizedString(@"YUMI_Mine_Pay_Pwd_View_Controller_10"); - _pwordIntrojectionRegard.satisfperformanceEssayUniverse.keyboardType = UIKeyboardTypeNumberPad; - } - return _pwordIntrojectionRegard; -} - -- (YUMIManeModifIntersectPwordRegard *)repeatPwordIntrojectionRegard { - if (!_repeatPwordIntrojectionRegard) { - _repeatPwordIntrojectionRegard = [[YUMIManeModifIntersectPwordRegard alloc] init]; - _repeatPwordIntrojectionRegard.placeholder = YMLocalizedString(@"YUMI_Mine_Pay_Pwd_View_Controller_11"); - _repeatPwordIntrojectionRegard.satisfperformanceEssayUniverse.keyboardType = UIKeyboardTypeNumberPad; - - } - return _repeatPwordIntrojectionRegard; -} - - - -- (UIButton *)submitBtuton { - if (!_submitBtuton) { - _submitBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_submitBtuton setTitleColor:[DJDKMIMOMColor prohibitionBtutonEssayPrettify] forState:UIControlStateDisabled]; - [_submitBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [_submitBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Modif_Pay_Pwd_View_Controller_7") forState:UIControlStateNormal]; - _submitBtuton.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightRegular]; - _submitBtuton.layer.masksToBounds = YES; - _submitBtuton.layer.cornerRadius = 45/2; - _submitBtuton.enabled = YES; - [_submitBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor prohibitionBtutonPrettify], [DJDKMIMOMColor prohibitionBtutonPrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; - [_submitBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityMiddlePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_submitBtuton addTarget:self action:@selector(onTicktackMetromitBtuton) forControlEvents:UIControlEventTouchUpInside]; - } - return _submitBtuton; -} - -- (UILabel *)promptsSequencignation { - if (!_promptsSequencignation) { - _promptsSequencignation = [[UILabel alloc] init]; - _promptsSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _promptsSequencignation.font = [UIFont systemFontOfSize:13]; - _promptsSequencignation.numberOfLines = 0; - _promptsSequencignation.hidden = YES; - NSString *phonePrefix = [[self phoneNumber] substringToIndex:3]; - NSString *phoneSuffix = [[self phoneNumber] substringFromIndex:7]; - _promptsSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Mine_Pay_Pwd_View_Controller_9"), phonePrefix, phoneSuffix]; - } - return _promptsSequencignation; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/Setting/YUMIManeModifIntersectPwordRegardGovernancer.h b/YuMi/Modules/YMMine/View/Setting/YUMIManeModifIntersectPwordRegardGovernancer.h deleted file mode 100644 index 614685f8..00000000 --- a/YuMi/Modules/YMMine/View/Setting/YUMIManeModifIntersectPwordRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineModifPayPwdViewController.h -// YUMI -// -// Created by YUMI on 2021/9/18. -// 修改支付密码 - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN -@class ConsumerAbstractMatrix; -@interface YUMIManeModifIntersectPwordRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Setting/YUMIManeModifIntersectPwordRegardGovernancer.m b/YuMi/Modules/YMMine/View/Setting/YUMIManeModifIntersectPwordRegardGovernancer.m deleted file mode 100644 index 2329ec26..00000000 --- a/YuMi/Modules/YMMine/View/Setting/YUMIManeModifIntersectPwordRegardGovernancer.m +++ /dev/null @@ -1,186 +0,0 @@ -// -// YMMineModifPayPwdViewController.m -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import "YUMIManeModifIntersectPwordRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "UIButton+EnlargeTouchArea.h" -#import "UIImage+Utils.h" -#import "YUMIManeModifIntersectPwordRegard.h" -#import "YUMIManeModifIntersectPwordExternalizer.h" -#import "FBCManeModifPayCeremony.h" -#import "YUMIManeInstanllingRegardGovernancer.h" -#import "YUMIManeValidationIdentityRegardGovernancer.h" - -@interface YUMIManeModifIntersectPwordRegardGovernancer () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) YUMIManeModifIntersectPwordRegard *universalPwordRegard; -@property (nonatomic,strong) YUMIManeModifIntersectPwordRegard *strangesPwordRegard; -@property (nonatomic,strong) YUMIManeModifIntersectPwordRegard *examinePwordRegard; -@property (nonatomic, strong) UIButton *forgetBtuton; -@property (nonatomic, strong) UIButton *submitBtuton; -@end - -@implementation YUMIManeModifIntersectPwordRegardGovernancer - -- (YUMIManeModifIntersectPwordExternalizer *)producePresimport { - return [[YUMIManeModifIntersectPwordExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self initOccurrences]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Mine_Modif_Pay_Pwd_View_Controller_0"); - [self.view addSubview:self.stackView]; - [self.view addSubview:self.forgetBtuton]; - [self.view addSubview:self.submitBtuton]; - [self.stackView addArrangedSubview:self.universalPwordRegard]; - [self.stackView addArrangedSubview:self.strangesPwordRegard]; - [self.stackView addArrangedSubview:self.examinePwordRegard]; -} - -- (void)initChildLyRestrictions { - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - }]; - - [self.forgetBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.view).offset(-32); - make.top.mas_equalTo(self.stackView.mas_bottom).offset(8); - }]; - [self.submitBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.stackView.mas_bottom).offset(45); - make.right.mas_equalTo(self.view).offset(-32); - make.left.mas_equalTo(self.view).offset(32); - make.height.mas_equalTo(45); - }]; -} - -- (void)initOccurrences { - RAC(self.submitBtuton, enabled) = [RACSignal combineLatest:@[self.universalPwordRegard.satisfperformanceEssayUniverse.rac_textSignal, self.strangesPwordRegard.satisfperformanceEssayUniverse.rac_textSignal, self.examinePwordRegard.satisfperformanceEssayUniverse.rac_textSignal] reduce:^id _Nonnull(NSString *currentPassword, NSString *newsPassword, NSString *checkPassword){ - return @(currentPassword.length == 6 && newsPassword.length == 6 && checkPassword.length == 6); - }]; -} -- (BOOL)isPureFigure:(NSString *)text { - if (!text) { - return NO; - } - NSScanner *scan = [NSScanner scannerWithString:text]; - int val; - return [scan scanInt:&val] && [scan isAtEnd]; -} - - -#pragma mark - FBCManeModifPayCeremony -- (void)modifIntersectCiphercryptogramAccomplishment { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Mine_Modif_Pay_Pwd_View_Controller_1")]; - for (UIViewController *VC in self.navigationController.viewControllers) { - if ([VC isKindOfClass:[YUMIManeInstanllingRegardGovernancer class]]) { - [self.navigationController popToViewController:VC animated:YES]; - return; - } - } - [self.navigationController popViewControllerAnimated:YES]; -} - -#pragma mark - Event Response -- (void)SpongeoutBtutonPerformance:(UIButton *)sender { - YUMIManeValidationIdentityRegardGovernancer * VC= [[YUMIManeValidationIdentityRegardGovernancer alloc] init]; - VC.userInfo = self.userInfo; - [self.navigationController pushViewController:VC animated:YES]; -} - -- (void)advoctowardseBtutonPerformance:(UIButton *)sender { - if (![self.strangesPwordRegard.satisfperformanceEssayUniverse.text isEqual:self.examinePwordRegard.satisfperformanceEssayUniverse.text]) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Mine_Modif_Pay_Pwd_View_Controller_2")]; - return; - } - - if (![self isPureFigure:self.examinePwordRegard.satisfperformanceEssayUniverse.text] || ![self isPureFigure:self.strangesPwordRegard.satisfperformanceEssayUniverse.text]) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Mine_Modif_Pay_Pwd_View_Controller_3")]; - return; - } - - [self.presimport decortowardseIntersectmentCiphercryptogramAboutoldCiphercryptogram:self.universalPwordRegard.satisfperformanceEssayUniverse.text newPassword:self.strangesPwordRegard.satisfperformanceEssayUniverse.text]; -} - -#pragma mark - Getters And Setters -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 0; - } - return _stackView; -} - -- (YUMIManeModifIntersectPwordRegard *)universalPwordRegard { - if (!_universalPwordRegard) { - _universalPwordRegard = [[YUMIManeModifIntersectPwordRegard alloc] init]; - _universalPwordRegard.placeholder = YMLocalizedString(@"YUMI_Mine_Modif_Pay_Pwd_View_Controller_4"); - _universalPwordRegard.satisfperformanceEssayUniverse.keyboardType = UIKeyboardTypeNumberPad; - } - return _universalPwordRegard; -} - -- (YUMIManeModifIntersectPwordRegard *)strangesPwordRegard { - if (!_strangesPwordRegard) { - _strangesPwordRegard = [[YUMIManeModifIntersectPwordRegard alloc] init]; - _strangesPwordRegard.placeholder = YMLocalizedString(@"YUMI_Mine_Modif_Pay_Pwd_View_Controller_5"); - _strangesPwordRegard.satisfperformanceEssayUniverse.keyboardType = UIKeyboardTypeNumberPad; - } - return _strangesPwordRegard; -} - -- (YUMIManeModifIntersectPwordRegard *)examinePwordRegard { - if (!_examinePwordRegard) { - _examinePwordRegard = [[YUMIManeModifIntersectPwordRegard alloc] init]; - _examinePwordRegard.placeholder = YMLocalizedString(@"YUMI_Mine_Modif_Pay_Pwd_View_Controller_6"); - _examinePwordRegard.satisfperformanceEssayUniverse.keyboardType = UIKeyboardTypeNumberPad; - } - return _examinePwordRegard; -} - -- (UIButton *)submitBtuton { - if (!_submitBtuton) { - _submitBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_submitBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_submitBtuton setTitleColor:[DJDKMIMOMColor prohibitionBtutonEssayPrettify] forState:UIControlStateDisabled]; - [_submitBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Modif_Pay_Pwd_View_Controller_7") forState:UIControlStateNormal]; - _submitBtuton.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; - _submitBtuton.layer.masksToBounds = YES; - _submitBtuton.layer.cornerRadius = 45/2; - _submitBtuton.enabled = YES; - [_submitBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_submitBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor prohibitionBtutonPrettify], [DJDKMIMOMColor prohibitionBtutonPrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; - [_submitBtuton addTarget:self action:@selector(advoctowardseBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _submitBtuton; -} - -- (UIButton *)forgetBtuton { - if (!_forgetBtuton) { - _forgetBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_forgetBtuton setEnlargeEdgeAboutApex:5 right:5 bottom:5 left:5]; - [_forgetBtuton setTitleColor:[DJDKMIMOMColor instantEssayPrettify] forState:UIControlStateNormal]; - [_forgetBtuton setTitle:@"忘记密码?" forState:UIControlStateNormal]; - _forgetBtuton.titleLabel.font = [UIFont systemFontOfSize:13]; - [_forgetBtuton addTarget:self action:@selector(SpongeoutBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _forgetBtuton; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Setting/YUMIManeNotificaRegardGovernancer.h b/YuMi/Modules/YMMine/View/Setting/YUMIManeNotificaRegardGovernancer.h deleted file mode 100644 index 3435bf46..00000000 --- a/YuMi/Modules/YMMine/View/Setting/YUMIManeNotificaRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineNotificaViewController.h -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeNotificaRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Setting/YUMIManeNotificaRegardGovernancer.m b/YuMi/Modules/YMMine/View/Setting/YUMIManeNotificaRegardGovernancer.m deleted file mode 100644 index 434ce396..00000000 --- a/YuMi/Modules/YMMine/View/Setting/YUMIManeNotificaRegardGovernancer.m +++ /dev/null @@ -1,130 +0,0 @@ -// -// YMMineNotificaViewController.m -// YUMI -// -// Created by YUMI on 2021/9/17. -// - -#import "YUMIManeNotificaRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "YUMIManeNotificationProvisionMatrix.h" -#import "YUMIManeNotificationTabulationRegardElement.h" -#import "FBCManeNotificaCeremony.h" -#import "YUMIManeNotificaExternalizer.h" - -@interface YUMIManeNotificaRegardGovernancer () - -@property (nonatomic, strong) NSArray *atoloudspeakerMatrixGarment; -@property (nonatomic,strong) UITableView *tableView; -@end - -@implementation YUMIManeNotificaRegardGovernancer - -- (YUMIManeNotificaExternalizer *)producePresimport { - return [[YUMIManeNotificaExternalizer alloc] init]; -} - -#pragma mark - Life Cycle -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - [self.presimport requisitionConsumerAbstractInfformPosition]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Mine_Notifica_View_Controller_0"); - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.top.mas_equalTo(0); - }]; -} - -- (BOOL)systemInfform { -#warning to do 需要实现的 - - return YES; -} - -#pragma mark - UITableViewDelegate -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.atoloudspeakerMatrixGarment.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - YUMIManeNotificationProvisionMatrix *item = [self.atoloudspeakerMatrixGarment secureGroalTowardsIndictowardsrix1:indexPath.row]; - YUMIManeNotificationTabulationRegardElement *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeNotificationTabulationRegardElement class]) forIndexPath:indexPath]; - cell.delegate = self; - cell.itemMatrix = item; - return cell; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 70; -} - - -#pragma mark - Private -+ (void)mobilePushTowardstesttowardsionority:(void(^)(BOOL isAuthority))authority { - - if (@available(iOS 10.0, *)) { - [[UNUserNotificationCenter currentNotificationCenter] getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) { - - BOOL permission = settings.authorizationStatus == UNAuthorizationStatusAuthorized; - dispatch_async(dispatch_get_main_queue(), ^{ - !authority ?: authority(permission); - }); - }]; - } else { - BOOL permission = [[UIApplication sharedApplication] currentUserNotificationSettings].types != UIUserNotificationTypeNone; - !authority ?: authority(permission); - } -} - - - -#pragma mark - YUMIManeNotificationTabulationRegardElement -- (void)fBCManeCircularTarbsultowardsionViweElement:(YUMIManeNotificationTabulationRegardElement *)cell switchStatus:(BOOL)status { - NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; - self.atoloudspeakerMatrixGarment[indexPath.row].notification = status; - if (indexPath.row == 0) { - [self.presimport refurbishConsumerAbstractSystemInfform:status]; - } else { - [self.presimport refurbishBroadCastInfform:status]; - } - -} - -#pragma mark - FBCManeNotificaCeremony -- (void)requisitionConsumerAbstractInfformPositionAccomplishment:(NSArray *)array { - self.atoloudspeakerMatrixGarment = array; - [self.tableView reloadData]; -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.showsVerticalScrollIndicator = NO; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - [_tableView registerClass:[YUMIManeNotificationTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeNotificationTabulationRegardElement class])]; - _tableView.backgroundColor = [UIColor clearColor]; - } - return _tableView; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Setting/YUMIManeReassociationIntersectPwordRegardGovernancer.h b/YuMi/Modules/YMMine/View/Setting/YUMIManeReassociationIntersectPwordRegardGovernancer.h deleted file mode 100644 index 4b7fe6d0..00000000 --- a/YuMi/Modules/YMMine/View/Setting/YUMIManeReassociationIntersectPwordRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineResetPayPwdViewController.h -// YUMI -// -// Created by YUMI on 2021/9/18. -// 重设支付密码 - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeReassociationIntersectPwordRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Setting/YUMIManeReassociationIntersectPwordRegardGovernancer.m b/YuMi/Modules/YMMine/View/Setting/YUMIManeReassociationIntersectPwordRegardGovernancer.m deleted file mode 100644 index 1dfd83ba..00000000 --- a/YuMi/Modules/YMMine/View/Setting/YUMIManeReassociationIntersectPwordRegardGovernancer.m +++ /dev/null @@ -1,131 +0,0 @@ -// -// YMMineResetPayPwdViewController.m -// YUMI -// -// Created by YUMI on 2021/9/18. -// 重置支付密码 - -#import "YUMIManeReassociationIntersectPwordRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "YUMIManeModifIntersectPwordRegard.h" -#import "YUMIManeReassociationIntersectCiphercodeExternalizer.h" -#import "FBCManeResetPayCiphercodeCeremony.h" -#import "YUMIManeInstanllingRegardGovernancer.h" - -@interface YUMIManeReassociationIntersectPwordRegardGovernancer () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) YUMIManeModifIntersectPwordRegard *ciphercryptogramRegard; -@property (nonatomic,strong) YUMIManeModifIntersectPwordRegard *verificationCryptogramIntrojectionRegard; -@property (nonatomic,strong) UIButton *submitBtuton; -@end - -@implementation YUMIManeReassociationIntersectPwordRegardGovernancer - -- (YUMIManeReassociationIntersectCiphercodeExternalizer *)producePresimport { - return [[YUMIManeReassociationIntersectCiphercodeExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self initOccurrences]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Mine_Reset_Pay_Pwd_View_Controller_0"); - [self.view addSubview:self.stackView]; - [self.view addSubview:self.submitBtuton]; - - [self.stackView addArrangedSubview:self.ciphercryptogramRegard]; - [self.stackView addArrangedSubview:self.verificationCryptogramIntrojectionRegard]; -} - -- (void)initChildLyRestrictions { - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - }]; - - [self.submitBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.stackView.mas_bottom).offset(45); - make.right.left.mas_equalTo(self.view).inset(32); - make.height.mas_equalTo(45); - }]; -} - -- (void)initOccurrences { - @weakify(self); - RAC(self.submitBtuton, enabled) = [RACSignal combineLatest:@[self.ciphercryptogramRegard.satisfperformanceEssayUniverse.rac_textSignal, self.verificationCryptogramIntrojectionRegard.satisfperformanceEssayUniverse.rac_textSignal] reduce:^id _Nonnull(NSString *password, NSString *checkPassword){ - return @(password.length == 6 && checkPassword.length == 6); - }]; -} - -#pragma mark - FBCManeResetPayCiphercodeCeremony -- (void)replacementIntersectCiphercryptogramAccomplishment { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Mine_Reset_Pay_Pwd_View_Controller_1")]; - for (UIViewController *VC in self.navigationController.viewControllers) { - if ([VC isKindOfClass:[YUMIManeInstanllingRegardGovernancer class]]) { - [self.navigationController popToViewController:VC animated:YES]; - return; - } - } - [self.navigationController popViewControllerAnimated:YES]; -} -#pragma mark - Event Response -- (void)advoctowardseBtutonPerformance:(UIButton *)sender { - if (![self.ciphercryptogramRegard.satisfperformanceEssayUniverse.text isEqual:self.verificationCryptogramIntrojectionRegard.satisfperformanceEssayUniverse.text]) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Mine_Reset_Pay_Pwd_View_Controller_2")]; - } - [self.presimport replacementIntersectCiphercryptogram:self.ciphercryptogramRegard.satisfperformanceEssayUniverse.text phone:@"" veriftCode:@""]; -} - -#pragma mark - Getters And Setters -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 0; - } - return _stackView; -} - -- (YUMIManeModifIntersectPwordRegard *)ciphercryptogramRegard { - if (!_ciphercryptogramRegard) { - _ciphercryptogramRegard = [[YUMIManeModifIntersectPwordRegard alloc] init]; - _ciphercryptogramRegard.placeholder = YMLocalizedString(@"YUMI_Mine_Reset_Pay_Pwd_View_Controller_3"); - } - return _ciphercryptogramRegard; -} - -- (YUMIManeModifIntersectPwordRegard *)verificationCryptogramIntrojectionRegard { - if (!_verificationCryptogramIntrojectionRegard) { - _verificationCryptogramIntrojectionRegard = [[YUMIManeModifIntersectPwordRegard alloc] init]; - _verificationCryptogramIntrojectionRegard.placeholder = YMLocalizedString(@"YUMI_Mine_Reset_Pay_Pwd_View_Controller_4"); - } - return _verificationCryptogramIntrojectionRegard; -} - -- (UIButton *)submitBtuton { - if (!_submitBtuton) { - _submitBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_submitBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_submitBtuton setTitleColor:[DJDKMIMOMColor prohibitionBtutonEssayPrettify] forState:UIControlStateDisabled]; - [_submitBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Reset_Pay_Pwd_View_Controller_5") forState:UIControlStateNormal]; - _submitBtuton.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; - _submitBtuton.layer.masksToBounds = YES; - _submitBtuton.layer.cornerRadius = 45/2; - _submitBtuton.enabled = NO; - [_submitBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_submitBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor prohibitionBtutonPrettify], [DJDKMIMOMColor prohibitionBtutonPrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; - [_submitBtuton addTarget:self action:@selector(advoctowardseBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _submitBtuton; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Setting/YUMIManeReassociationSurmountPwordRegardGovernancer.h b/YuMi/Modules/YMMine/View/Setting/YUMIManeReassociationSurmountPwordRegardGovernancer.h deleted file mode 100644 index d91e55dd..00000000 --- a/YuMi/Modules/YMMine/View/Setting/YUMIManeReassociationSurmountPwordRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineResetLoginPwdViewController.h -// YUMI -// -// Created by YUMI on 2022/5/5. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN -@class ConsumerAbstractMatrix; -@interface YUMIManeReassociationSurmountPwordRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Setting/YUMIManeReassociationSurmountPwordRegardGovernancer.m b/YuMi/Modules/YMMine/View/Setting/YUMIManeReassociationSurmountPwordRegardGovernancer.m deleted file mode 100644 index ec259311..00000000 --- a/YuMi/Modules/YMMine/View/Setting/YUMIManeReassociationSurmountPwordRegardGovernancer.m +++ /dev/null @@ -1,187 +0,0 @@ -// -// YMMineResetLoginPwdViewController.m -// YUMI -// -// Created by YUMI on 2022/5/5. -// - -#import "YUMIManeReassociationSurmountPwordRegardGovernancer.h" -#import -#import "DJDKMIMOMColor.h" -#import "ComputationDownFacilitater.h" -#import "YUMIMacroUitls.h" -#import "UIImage+Utils.h" -#import "ConsumerAbstractMatrix.h" -#import "YUMIManeValidationIdentityRegard.h" -#import "YUMIManeModifIntersectPwordRegard.h" -#import "YUMIManeReassociationSurmountPwordExternalizer.h" -#import "FBCManeResetSurmountPwordCeremony.h" - -@interface YUMIManeReassociationSurmountPwordRegardGovernancer () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) YUMIManeValidationIdentityRegard *mobileRegard; -@property (nonatomic,strong) YUMIManeValidationIdentityRegard *smsCryptogramRegard; -@property (nonatomic,strong) YUMIManeModifIntersectPwordRegard *universalPwordRegard; -@property (nonatomic,strong) UIButton *nextBtuton; -@end - -@implementation YUMIManeReassociationSurmountPwordRegardGovernancer - -- (void)castlelocm { - [[ComputationDownFacilitater partowardsiciptowardsionFacilittowardseer] suspeindComputtowardsionPubescence]; -} - -- (YUMIManeReassociationSurmountPwordExternalizer *)producePresimport { - return [[YUMIManeReassociationSurmountPwordExternalizer alloc] init];; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self initOccurrences]; -} - -- (void)viewDidDisappear:(BOOL)animated { - [super viewDidDisappear:animated]; - [[ComputationDownFacilitater partowardsiciptowardsionFacilittowardseer] suspeindComputtowardsionPubescence]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Mine_ResetLoginPwdViewController0"); - self.mobileRegard.satisfperformanceEssayUniverse.text = self.userInfo.phone; - self.mobileRegard.satisfperformanceEssayUniverse.enabled = self.userInfo.phone.length > 0; - [ComputationDownFacilitater partowardsiciptowardsionFacilittowardseer].delegate = self; - [self.view addSubview:self.stackView]; - [self.view addSubview:self.nextBtuton]; - - [self.stackView addArrangedSubview:self.mobileRegard]; - [self.stackView addArrangedSubview:self.smsCryptogramRegard]; - [self.stackView addArrangedSubview:self.universalPwordRegard]; -} - -- (void)initChildLyRestrictions { - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - }]; - - [self.nextBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.stackView.mas_bottom).offset(45); - make.right.mas_equalTo(self.view).offset(-32); - make.left.mas_equalTo(self.view).offset(32); - make.height.mas_equalTo(45); - }]; -} - -- (void)initOccurrences { - @kWeakify(self); - self.smsCryptogramRegard.smsCryptogramDiscourage = ^(UIButton * _Nonnull sender) { - @kStrongify(self); - if (self.mobileRegard.satisfperformanceEssayUniverse.text.length > 0) { - [self.presimport mobileSmsCryptogram:self.mobileRegard.satisfperformanceEssayUniverse.text type:GetSmsGenre_Reset_Password phoneAreaCode:@""]; - } else { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Mine_ResetLoginPwdViewController1")]; - } - }; -} -#pragma mark - FBCManeVerifIdentityCeremony -- (void)mobileSmsCryptogramAccomplishment { - self.smsCryptogramRegard.smsCryptogramBtuton.enabled = NO; - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Mine_ResetLoginPwdViewController2")]; - [[ComputationDownFacilitater partowardsiciptowardsionFacilittowardseer] unfoildComputtowardsiondownAboutIntrtowardsemporal:60]; -} - -- (void)replacementSurmountCiphercryptogramAccomplishment { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Mine_ResetLoginPwdViewController3")]; - [self.presimport revoctowardsionledUniversalSequenceription]; -} - -- (void)revoctowardsionledUniversalSequenceriptionAccomplishment { - [self.navigationController popToRootViewControllerAnimated:NO]; -} - - -#pragma mark - CountDownHelperRepresendtation -- (void)onComputtowardsiondownUnfoild:(int)time { - [self.smsCryptogramRegard.smsCryptogramBtuton setTitle:[NSString stringWithFormat:YMLocalizedString(@"YUMI_Mine_ResetLoginPwdViewController4"), time] forState:UIControlStateDisabled]; -} -- (void)onComputtowardsiondownAccomplish { - self.smsCryptogramRegard.smsCryptogramBtuton.enabled= YES; - [self.smsCryptogramRegard.smsCryptogramBtuton setTitle:YMLocalizedString(@"YUMI_Mine_ResetLoginPwdViewController5") forState:UIControlStateNormal]; -} - -#pragma mark - Event Response -- (void)ltowardsterBtutonPerformance:(UIButton *)sender { - [self.presimport replacementSurmountCiphercryptogram:self.userInfo.phone smsCode:self.smsCryptogramRegard.satisfperformanceEssayUniverse.text newPwd:self.universalPwordRegard.satisfperformanceEssayUniverse.text]; -} - -- (void)essayUniverseDidDiversifictowardsion:(UITextField *)essayAccurated { - if (self.mobileRegard.satisfperformanceEssayUniverse.text.length > 0 && self.smsCryptogramRegard.satisfperformanceEssayUniverse.text.length > 0 && self.universalPwordRegard.satisfperformanceEssayUniverse.text.length >= 6) { - self.nextBtuton.enabled = YES; - } else { - self.nextBtuton.enabled = NO; - } -} - -#pragma mark - Getters And Setters -- (UIButton *)nextBtuton { - if (!_nextBtuton) { - _nextBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_nextBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_nextBtuton setTitleColor:[DJDKMIMOMColor prohibitionBtutonEssayPrettify] forState:UIControlStateDisabled]; - [_nextBtuton setTitle:YMLocalizedString(@"YUMI_Mine_ResetLoginPwdViewController6") forState:UIControlStateNormal]; - _nextBtuton.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; - _nextBtuton.layer.masksToBounds = YES; - _nextBtuton.layer.cornerRadius = 45/2; - _nextBtuton.enabled = NO; - [_nextBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_nextBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor prohibitionBtutonPrettify], [DJDKMIMOMColor prohibitionBtutonPrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; - [_nextBtuton addTarget:self action:@selector(ltowardsterBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _nextBtuton; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 0; - } - return _stackView; -} - -- (YUMIManeValidationIdentityRegard *)mobileRegard { - if (!_mobileRegard) { - _mobileRegard = [[YUMIManeValidationIdentityRegard alloc] init]; - _mobileRegard.type = YUMI_MineVerifIdentityType_Phone; - _mobileRegard.placeholder = YMLocalizedString(@"YUMI_Mine_ResetLoginPwdViewController7"); - _mobileRegard.satisfperformanceEssayUniverse.secureTextEntry = NO; - _mobileRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - } - return _mobileRegard; -} - -- (YUMIManeValidationIdentityRegard *)smsCryptogramRegard { - if (!_smsCryptogramRegard) { - _smsCryptogramRegard = [[YUMIManeValidationIdentityRegard alloc] init]; - _smsCryptogramRegard.type = YUMI_MineVerifIdentityType_Sms; - _smsCryptogramRegard.placeholder = YMLocalizedString(@"YUMI_Mine_ResetLoginPwdViewController8"); - _smsCryptogramRegard.satisfperformanceEssayUniverse.secureTextEntry = NO; - _smsCryptogramRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - } - return _smsCryptogramRegard; -} - -- (YUMIManeModifIntersectPwordRegard *)universalPwordRegard { - if (!_universalPwordRegard) { - _universalPwordRegard = [[YUMIManeModifIntersectPwordRegard alloc] init]; - _universalPwordRegard.placeholder = YMLocalizedString(@"YUMI_Mine_ResetLoginPwdViewController9"); - [_universalPwordRegard.satisfperformanceEssayUniverse addTarget:self action:@selector(essayUniverseDidDiversifictowardsion:) forControlEvents:UIControlEventEditingChanged]; - } - return _universalPwordRegard; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Setting/YUMIManeSurmountCiphercodeRegardGovernancer.h b/YuMi/Modules/YMMine/View/Setting/YUMIManeSurmountCiphercodeRegardGovernancer.h deleted file mode 100644 index 717f881a..00000000 --- a/YuMi/Modules/YMMine/View/Setting/YUMIManeSurmountCiphercodeRegardGovernancer.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMMineLoginPasswordViewController.h -// YUMI -// -// Created by YUMI on 2022/4/25. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - - -@class ConsumerAbstractMatrix; -@interface YUMIManeSurmountCiphercodeRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@property (nonatomic,assign) BOOL isModifiPword; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Setting/YUMIManeSurmountCiphercodeRegardGovernancer.m b/YuMi/Modules/YMMine/View/Setting/YUMIManeSurmountCiphercodeRegardGovernancer.m deleted file mode 100644 index 86195516..00000000 --- a/YuMi/Modules/YMMine/View/Setting/YUMIManeSurmountCiphercodeRegardGovernancer.m +++ /dev/null @@ -1,227 +0,0 @@ -// -// YMMineLoginPasswordViewController.m -// YUMI -// -// Created by YUMI on 2022/4/25. -// - -#import "YUMIManeSurmountCiphercodeRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "UIButton+EnlargeTouchArea.h" -#import "UIImage+Utils.h" -#import "ConsumerAbstractMatrix.h" -#import "YUMIManeModifIntersectPwordRegard.h" -#import "YUMIManeSurmountCiphercodeExternalizer.h" -#import "FBCManeSurmountCiphercodeCeremony.h" -#import "YUMIManeInstanllingRegardGovernancer.h" -#import "YUMIManeReassociationSurmountPwordRegardGovernancer.h" - -@interface YUMIManeSurmountCiphercodeRegardGovernancer () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) YUMIManeModifIntersectPwordRegard *universalPwordRegard; -@property (nonatomic,strong) YUMIManeModifIntersectPwordRegard *strangesPwordRegard; -@property (nonatomic,strong) YUMIManeModifIntersectPwordRegard *examinePwordRegard; -@property (nonatomic, strong) UIButton *forgetBtuton; -@property (nonatomic, strong) UIButton *submitBtuton; -@property (nonatomic,strong) UILabel *restrictionSequencignation; -@property (nonatomic,copy) NSString *universalPword; -@property (nonatomic,copy) NSString *newsPword; -@property (nonatomic,copy) NSString *examinePword; -@end - -@implementation YUMIManeSurmountCiphercodeRegardGovernancer - -- (YUMIManeSurmountCiphercodeExternalizer *)producePresimport { - return [[YUMIManeSurmountCiphercodeExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.stackView]; - [self.view addSubview:self.restrictionSequencignation]; - [self.view addSubview:self.forgetBtuton]; - [self.view addSubview:self.submitBtuton]; - [self.stackView addArrangedSubview:self.universalPwordRegard]; - [self.stackView addArrangedSubview:self.strangesPwordRegard]; - [self.stackView addArrangedSubview:self.examinePwordRegard]; -} - -- (void)initChildLyRestrictions { - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - }]; - - [self.restrictionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.view).offset(15); - make.top.mas_equalTo(self.stackView.mas_bottom).offset(10); - }]; - - [self.forgetBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.view).offset(-15); - make.top.mas_equalTo(self.submitBtuton.mas_bottom).offset(15); - }]; - [self.submitBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.restrictionSequencignation.mas_bottom).offset(20); - make.right.mas_equalTo(self.view).offset(-32); - make.left.mas_equalTo(self.view).offset(32); - make.height.mas_equalTo(45); - }]; -} - -#pragma mark - FBCManeSurmountCiphercodeCeremony -- (void)setSurmountCiphercryptogramAccomplishment { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_MineLoginPasswordViewController0")]; - [self.navigationController popViewControllerAnimated:YES]; -} - -- (void)decortowardseSurmountCiphercryptogramAccomplishment { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_MineLoginPasswordViewController1")]; - [self.navigationController popViewControllerAnimated:YES]; -} - -#pragma mark - Event Response -- (void)SpongeoutBtutonPerformance:(UIButton *)sender { - YUMIManeReassociationSurmountPwordRegardGovernancer * VC= [[YUMIManeReassociationSurmountPwordRegardGovernancer alloc] init]; - VC.userInfo = self.userInfo; - [self.navigationController pushViewController:VC animated:YES]; -} - -- (void)advoctowardseBtutonPerformance:(UIButton *)sender { - if (![self.strangesPwordRegard.satisfperformanceEssayUniverse.text isEqualToString:self.examinePwordRegard.satisfperformanceEssayUniverse.text]) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineLoginPasswordViewController2")]; - return; - } - if (self.isModifiPword) { - [self.presimport decortowardseSurmountCiphercryptogram:self.userInfo.phone newPwd:self.newsPword pwd:self.universalPword]; - } else { - [self.presimport setSurmountCiphercryptogram:self.userInfo.phone newPwd:self.newsPword]; - } -} - -- (void)essayUniverseDidDiversifictowardsion:(UITextField *)textfield { - if (textfield == self.universalPwordRegard.satisfperformanceEssayUniverse) { - self.universalPword = textfield.text; - } else if (textfield == self.strangesPwordRegard.satisfperformanceEssayUniverse) { - self.newsPword = textfield.text; - } else { - self.examinePword = textfield.text; - } - - if (self.isModifiPword) { - if (self.universalPword.length >= 6 && self.newsPword.length >= 6 && self.examinePword.length >= 6) { - self.submitBtuton.enabled = YES; - } else { - self.submitBtuton.enabled = NO; - } - } else { - if (self.newsPword.length >= 6 && self.examinePword.length >= 6) { - self.submitBtuton.enabled = YES; - } else { - self.submitBtuton.enabled = NO; - } - } -} - -#pragma mark - Getters And Setters -- (void)setIsModifiPword:(BOOL)isModifiPword { - _isModifiPword = isModifiPword; - if (_isModifiPword) { - self.universalPwordRegard.hidden = NO; - self.universalPwordRegard.placeholder = YMLocalizedString(@"YUMI_MineLoginPasswordViewController3"); - self.strangesPwordRegard.placeholder = YMLocalizedString(@"YUMI_MineLoginPasswordViewController4"); - self.examinePwordRegard.placeholder = YMLocalizedString(@"YUMI_MineLoginPasswordViewController5"); - self.title = YMLocalizedString(@"YUMI_MineLoginPasswordViewController6"); - } else { - self.universalPwordRegard.hidden = YES; - self.strangesPwordRegard.placeholder = YMLocalizedString(@"YUMI_MineLoginPasswordViewController7"); - self.examinePwordRegard.placeholder = YMLocalizedString(@"YUMI_MineLoginPasswordViewController8"); - self.forgetBtuton.hidden = YES; - self.title = YMLocalizedString(@"YUMI_MineLoginPasswordViewController9"); - } - self.universalPwordRegard.hidden = !_isModifiPword; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 0; - } - return _stackView; -} - -- (YUMIManeModifIntersectPwordRegard *)universalPwordRegard { - if (!_universalPwordRegard) { - _universalPwordRegard = [[YUMIManeModifIntersectPwordRegard alloc] init]; - [_universalPwordRegard.satisfperformanceEssayUniverse addTarget:self action:@selector(essayUniverseDidDiversifictowardsion:) forControlEvents:UIControlEventEditingChanged]; - _universalPwordRegard.hidden = YES; - } - return _universalPwordRegard; -} - -- (YUMIManeModifIntersectPwordRegard *)strangesPwordRegard { - if (!_strangesPwordRegard) { - _strangesPwordRegard = [[YUMIManeModifIntersectPwordRegard alloc] init]; - [_strangesPwordRegard.satisfperformanceEssayUniverse addTarget:self action:@selector(essayUniverseDidDiversifictowardsion:) forControlEvents:UIControlEventEditingChanged]; - } - return _strangesPwordRegard; -} - -- (YUMIManeModifIntersectPwordRegard *)examinePwordRegard { - if (!_examinePwordRegard) { - _examinePwordRegard = [[YUMIManeModifIntersectPwordRegard alloc] init]; - [_examinePwordRegard.satisfperformanceEssayUniverse addTarget:self action:@selector(essayUniverseDidDiversifictowardsion:) forControlEvents:UIControlEventEditingChanged]; - } - return _examinePwordRegard; -} - -- (UIButton *)submitBtuton { - if (!_submitBtuton) { - _submitBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_submitBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_submitBtuton setTitleColor:[DJDKMIMOMColor prohibitionBtutonEssayPrettify] forState:UIControlStateDisabled]; - [_submitBtuton setTitle:YMLocalizedString(@"YUMI_MineLoginPasswordViewController10") forState:UIControlStateNormal]; - _submitBtuton.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; - _submitBtuton.layer.masksToBounds = YES; - _submitBtuton.layer.cornerRadius = 45/2; - _submitBtuton.enabled = YES; - [_submitBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_submitBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor prohibitionBtutonPrettify], [DJDKMIMOMColor prohibitionBtutonPrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; - [_submitBtuton addTarget:self action:@selector(advoctowardseBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _submitBtuton; -} - -- (UIButton *)forgetBtuton { - if (!_forgetBtuton) { - _forgetBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_forgetBtuton setEnlargeEdgeAboutApex:5 right:5 bottom:5 left:5]; - [_forgetBtuton setTitleColor:[DJDKMIMOMColor instantEssayPrettify] forState:UIControlStateNormal]; - [_forgetBtuton setTitle:@"忘记密码?" forState:UIControlStateNormal]; - _forgetBtuton.titleLabel.font = [UIFont systemFontOfSize:13]; - [_forgetBtuton addTarget:self action:@selector(SpongeoutBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _forgetBtuton; -} - -- (UILabel *)restrictionSequencignation { - if (!_restrictionSequencignation) { - _restrictionSequencignation = [[UILabel alloc] init]; - _restrictionSequencignation.font = [UIFont systemFontOfSize:13]; - _restrictionSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _restrictionSequencignation.text = @"密码必须使用6-16个字符内的数字和英文字母组合哦!"; - } - return _restrictionSequencignation; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Setting/YUMIManeValidationIdentityRegardGovernancer.h b/YuMi/Modules/YMMine/View/Setting/YUMIManeValidationIdentityRegardGovernancer.h deleted file mode 100644 index 50911f47..00000000 --- a/YuMi/Modules/YMMine/View/Setting/YUMIManeValidationIdentityRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineVerifIdentityViewController.h -// YUMI -// -// Created by YUMI on 2021/9/18. -// 验证身份 - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN -@class ConsumerAbstractMatrix; -@interface YUMIManeValidationIdentityRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Setting/YUMIManeValidationIdentityRegardGovernancer.m b/YuMi/Modules/YMMine/View/Setting/YUMIManeValidationIdentityRegardGovernancer.m deleted file mode 100644 index 2da3dfb5..00000000 --- a/YuMi/Modules/YMMine/View/Setting/YUMIManeValidationIdentityRegardGovernancer.m +++ /dev/null @@ -1,165 +0,0 @@ -// -// YMMineVerifIdentityViewController.m -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import "YUMIManeValidationIdentityRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "ComputationDownFacilitater.h" -#import "UIImage+Utils.h" -#import "ConsumerAbstractMatrix.h" -#import "YUMIManeValidationIdentityRegard.h" -#import "YUMIManeValidationIdentityExternalizer.h" -#import "FBCManeVerifIdentityCeremony.h" -#import "YUMIManeReassociationIntersectPwordRegardGovernancer.h" - -@interface YUMIManeValidationIdentityRegardGovernancer () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) YUMIManeValidationIdentityRegard *mobileRegard; -@property (nonatomic,strong) YUMIManeValidationIdentityRegard *smsCryptogramRegard; -@property (nonatomic,strong) UIButton *nextBtuton; -@end - -@implementation YUMIManeValidationIdentityRegardGovernancer -- (void)dealloc { - [[ComputationDownFacilitater partowardsiciptowardsionFacilittowardseer] suspeindComputtowardsionPubescence]; -} -- (YUMIManeValidationIdentityExternalizer *)producePresimport { - return [[YUMIManeValidationIdentityExternalizer alloc] init];; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self initOccurrences]; -} - -- (void)viewDidDisappear:(BOOL)animated { - [super viewDidDisappear:animated]; - [[ComputationDownFacilitater partowardsiciptowardsionFacilittowardseer] suspeindComputtowardsionPubescence]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_MineVerifIdentityViewController0"); - self.mobileRegard.satisfperformanceEssayUniverse.text = self.userInfo.phone; - self.mobileRegard.satisfperformanceEssayUniverse.enabled = self.userInfo.phone.length > 0; - [ComputationDownFacilitater partowardsiciptowardsionFacilittowardseer].delegate = self; - [self.view addSubview:self.stackView]; - [self.view addSubview:self.nextBtuton]; - - [self.stackView addArrangedSubview:self.mobileRegard]; - [self.stackView addArrangedSubview:self.smsCryptogramRegard]; -} - -- (void)initChildLyRestrictions { - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - }]; - - [self.nextBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.stackView.mas_bottom).offset(45); - make.right.mas_equalTo(self.view).offset(-32); - make.left.mas_equalTo(self.view).offset(32); - make.height.mas_equalTo(45); - }]; -} - -- (void)initOccurrences { - @weakify(self); - RAC(self.nextBtuton, enabled) = [RACSignal combineLatest:@[self.mobileRegard.satisfperformanceEssayUniverse.rac_textSignal, self.smsCryptogramRegard.satisfperformanceEssayUniverse.rac_textSignal] reduce:^id _Nonnull(NSString *phone, NSString * code){ - return @(phone.length > 0 && code.length > 0); - }]; - - self.smsCryptogramRegard.smsCryptogramDiscourage = ^(UIButton * _Nonnull sender) { - @strongify(self); - if (self.mobileRegard.satisfperformanceEssayUniverse.text.length > 0) { - [self.presimport mobileSmsCryptogram:self.mobileRegard.satisfperformanceEssayUniverse.text type:GetSmsGenre_Unbind_Phone phoneAreaCode:@""]; - } else { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineVerifIdentityViewController1")]; - } - }; -} -#pragma mark - FBCManeVerifIdentityCeremony -- (void)mobileSmsCryptogramAccomplishment { - self.smsCryptogramRegard.smsCryptogramBtuton.enabled = NO; - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_MineVerifIdentityViewController2")]; - [[ComputationDownFacilitater partowardsiciptowardsionFacilittowardseer] unfoildComputtowardsiondownAboutIntrtowardsemporal:60]; -} - -- (void)examineAplictowardsionartowardsusCryptogramAboutAplictowardsionartowardsusAccomplishment { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineVerifIdentityViewController3")]; - [[ComputationDownFacilitater partowardsiciptowardsionFacilittowardseer] suspeindComputtowardsionPubescence]; - YUMIManeReassociationIntersectPwordRegardGovernancer * vc = [[YUMIManeReassociationIntersectPwordRegardGovernancer alloc] init]; - [self.navigationController pushViewController:vc animated:YES]; -} - -#pragma mark - CountDownHelperRepresendtation -- (void)onComputtowardsiondownUnfoild:(int)time { - [self.smsCryptogramRegard.smsCryptogramBtuton setTitle:[NSString stringWithFormat:YMLocalizedString(@"YUMI_MineVerifIdentityViewController4"), time] forState:UIControlStateDisabled]; -} -- (void)onComputtowardsiondownAccomplish { - self.smsCryptogramRegard.smsCryptogramBtuton.enabled= YES; - [self.smsCryptogramRegard.smsCryptogramBtuton setTitle:YMLocalizedString(@"YUMI_MineVerifIdentityViewController5") forState:UIControlStateNormal]; -} - -#pragma mark - Event Response -- (void)ltowardsterBtutonPerformance:(UIButton *)sender { - [self.presimport examineAplictowardsionartowardsusCryptogramAboutAplictowardsionartowardsus:self.mobileRegard.satisfperformanceEssayUniverse.text code:self.smsCryptogramRegard.satisfperformanceEssayUniverse.text]; -} - -#pragma mark - Getters And Setters -- (UIButton *)nextBtuton { - if (!_nextBtuton) { - _nextBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_nextBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_nextBtuton setTitleColor:[DJDKMIMOMColor prohibitionBtutonEssayPrettify] forState:UIControlStateDisabled]; - [_nextBtuton setTitle:YMLocalizedString(@"YUMI_MineVerifIdentityViewController6") forState:UIControlStateNormal]; - _nextBtuton.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; - _nextBtuton.layer.masksToBounds = YES; - _nextBtuton.layer.cornerRadius = 45/2; - _nextBtuton.enabled = NO; - [_nextBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_nextBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor prohibitionBtutonPrettify], [DJDKMIMOMColor prohibitionBtutonPrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; - [_nextBtuton addTarget:self action:@selector(ltowardsterBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _nextBtuton; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 0; - } - return _stackView; -} - -- (YUMIManeValidationIdentityRegard *)mobileRegard { - if (!_mobileRegard) { - _mobileRegard = [[YUMIManeValidationIdentityRegard alloc] init]; - _mobileRegard.type = YUMI_MineVerifIdentityType_Phone; - _mobileRegard.placeholder = YMLocalizedString(@"YUMI_MineVerifIdentityViewController7"); - _mobileRegard.satisfperformanceEssayUniverse.secureTextEntry = NO; - } - return _mobileRegard; -} - -- (YUMIManeValidationIdentityRegard *)smsCryptogramRegard { - if (!_smsCryptogramRegard) { - _smsCryptogramRegard = [[YUMIManeValidationIdentityRegard alloc] init]; - _smsCryptogramRegard.type = YUMI_MineVerifIdentityType_Sms; - _smsCryptogramRegard.placeholder = YMLocalizedString(@"YUMI_MineVerifIdentityViewController8"); - _smsCryptogramRegard.satisfperformanceEssayUniverse.secureTextEntry = NO; - } - return _smsCryptogramRegard; -} - -@end diff --git a/YuMi/Modules/YMMine/View/Setting/YUMIVendorCallRegardGovernancer.h b/YuMi/Modules/YMMine/View/Setting/YUMIVendorCallRegardGovernancer.h deleted file mode 100644 index 08666650..00000000 --- a/YuMi/Modules/YMMine/View/Setting/YUMIVendorCallRegardGovernancer.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMVendorCallViewController.h -// YUMI -// -// Created by XY on 2023/2/15. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIVendorCallRegardGovernancer : MvpRegardGovernancer - -- (void)vconcludeorCentirety; - -@end - -NS_ASSUME_NONNULL_END - diff --git a/YuMi/Modules/YMMine/View/Setting/YUMIVendorCallRegardGovernancer.m b/YuMi/Modules/YMMine/View/Setting/YUMIVendorCallRegardGovernancer.m deleted file mode 100644 index 6adc5d20..00000000 --- a/YuMi/Modules/YMMine/View/Setting/YUMIVendorCallRegardGovernancer.m +++ /dev/null @@ -1,48 +0,0 @@ -// -// YMVendorCallViewController.m -// YUMI -// -// Created by XY on 2023/2/15. -// - -#import "YUMIVendorCallRegardGovernancer.h" -#import -#import -#import -#import -#import - -@interface YUMIVendorCallRegardGovernancer () - -@end - -@implementation YUMIVendorCallRegardGovernancer - -- (void)viewDidLoad { - [super viewDidLoad]; - -} - -- (void)vconcludeorCentirety { - WMZDropMenuParam *param =MenuParam().wMainRadiusSet(0); - WMZDropDownMenu *menu = [[WMZDropDownMenu alloc] initWithFrame:CGRectMake(0, Menu_NavigationBar, Menu_Width, 40) withParam:param]; - [self.view addSubview:menu]; - - ZLCollectionViewHorzontalLayout *layout = [[ZLCollectionViewHorzontalLayout alloc] init]; - layout.scrollDirection = UICollectionViewScrollDirectionVertical; - - [[TABAnimated sharedAnimated] initWithOnlySkeleton]; - [TABAnimated sharedAnimated].openLog = NO; - - [LottieAnimationView animateWithDuration:1 animations:^{ - - }]; - - WXSDKInstance *instance = [[WXSDKInstance alloc] init]; - instance.isMainContainerStack = NO; - -} - - - -@end diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoCustomNavView.h b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoCustomNavView.h new file mode 100644 index 00000000..d973851a --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoCustomNavView.h @@ -0,0 +1,27 @@ +// +// YMMineCustomNavView.h +// YUMI +// +// Created by YUMI on 2021/9/23. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPMineUserInfoCustomNavView; +@protocol XPMineCustomNavViewDelegate +///点击了编辑的按钮 +- (void)xPMineCustomNavView:(XPMineUserInfoCustomNavView *)view didClickEditButton:(UIButton *)sender; +///点击了返回按钮 +- (void)xPMineCustomNavView:(XPMineUserInfoCustomNavView *)view didClickBackButton:(UIButton *)sender; +@end +@interface XPMineUserInfoCustomNavView : UIView +///代理 +@property (nonatomic,weak) id delegate; +///显示文本 +@property (nonatomic,strong,readonly) UILabel *titleLabel; +///编辑按钮 +@property (nonatomic,strong,readonly) UIButton *editButton; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoCustomNavView.m b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoCustomNavView.m new file mode 100644 index 00000000..d3c7b877 --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoCustomNavView.m @@ -0,0 +1,106 @@ +// +// YMMineCustomNavView.m +// YUMI +// +// Created by YUMI on 2021/9/23. +// + +#import "XPMineUserInfoCustomNavView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIButton+EnlargeTouchArea.h" + +@interface XPMineUserInfoCustomNavView () +///返回按钮 +@property (nonatomic,strong) UIButton *backButton; +///显示文本 +@property (nonatomic,strong) UILabel *titleLabel; +///编辑按钮 +@property (nonatomic,strong) UIButton *editButton; +@end + +@implementation XPMineUserInfoCustomNavView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Response +- (void)editButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineCustomNavView:didClickEditButton:)]) { + [self.delegate xPMineCustomNavView:self didClickEditButton:sender]; + } +} + +- (void)backButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineCustomNavView:didClickBackButton:)]) { + [self.delegate xPMineCustomNavView:self didClickBackButton:sender]; + } +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + [self addSubview:self.backButton]; + [self addSubview:self.titleLabel]; + [self addSubview:self.editButton]; +} + +- (void)initSubViewConstraints { + [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(15); + make.centerY.equalTo(self.mas_bottom).mas_offset(-22); + }]; + + [self.editButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-15); + make.centerY.equalTo(self.mas_bottom).mas_offset(-22); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.centerY.equalTo(self.mas_bottom).mas_offset(-22); + }]; +} + +#pragma mark - Getters And Setters +- (UIButton *)backButton { + if (!_backButton) { + _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateNormal]; + _backButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; + [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_backButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + } + return _backButton; +} + +- (UIButton *)editButton { + if (!_editButton) { + _editButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_editButton setImage:[UIImage imageNamed:@"mine_user_info_edit"] forState:UIControlStateNormal]; + _editButton.titleLabel.font = [UIFont systemFontOfSize:16]; + [_editButton setTitleColor:[DJDKMIMOMColor alertTitleColor] forState:UIControlStateNormal]; + [_editButton addTarget:self action:@selector(editButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_editButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + } + return _editButton; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.font = [UIFont systemFontOfSize:15]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoDateView.h b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoDateView.h new file mode 100644 index 00000000..7a3eb339 --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoDateView.h @@ -0,0 +1,26 @@ +// +// YMMineUserInfoDateView.h +// YUMI +// +// Created by YUMI on 2021/9/23. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPMineUserInfoDateView; +@protocol XPMineUserInfoDateViewDelegate +///取消 +- (void)xPMineUserInfoDateView:(XPMineUserInfoDateView *)view didClickCancleButton:(UIButton *)sender; +///确定 +- (void)xPMineUserInfoDateView:(XPMineUserInfoDateView *)view didClickSureButton:(NSString *)dateStr; +@end + +@interface XPMineUserInfoDateView : UIView +// 设置当前日期 时间戳 +@property (nonatomic, assign) NSTimeInterval time;// +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoDateView.m b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoDateView.m new file mode 100644 index 00000000..15c9931b --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoDateView.m @@ -0,0 +1,133 @@ +// +// YMMineUserInfoDateView.m +// YUMI +// +// Created by YUMI on 2021/9/23. +// + +#import "XPMineUserInfoDateView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" + +@interface XPMineUserInfoDateView () +/// +@property (nonatomic,strong) UIButton *cancleButton; +/// +@property (nonatomic,strong) UIButton *sureButton; +/// +@property (nonatomic, strong) UIDatePicker *datePicker; +///样式 +@property (nonatomic, strong) NSDateFormatter *dateFormatter; +@end + +@implementation XPMineUserInfoDateView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor whiteColor]; + [self addSubview:self.cancleButton]; + [self addSubview:self.sureButton]; + [self addSubview:self.datePicker]; +} + +- (void)initSubViewConstraints { + [self.datePicker mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self); + make.bottom.mas_equalTo(self); + make.top.mas_equalTo(self.cancleButton.mas_bottom); + }]; + [self.cancleButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.mas_equalTo(self); + make.height.mas_equalTo(30); + make.width.mas_equalTo(50); + }]; + [self.sureButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self); + make.width.height.centerY.mas_equalTo(self.cancleButton); + }]; +} + +#pragma mark - Event +- (void)onClickCancelButton:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineUserInfoDateView:didClickCancleButton:)]) { + [self.delegate xPMineUserInfoDateView:self didClickCancleButton:sender]; + } +} + +- (void)onClickSureButton:(UIButton *)sender { + NSDate * date = self.datePicker.date; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineUserInfoDateView:didClickSureButton:)]) { + NSTimeZone *timeZone= [NSTimeZone systemTimeZone]; + NSInteger seconds= [timeZone secondsFromGMTForDate:date]; + NSDate *newDate= [date dateByAddingTimeInterval:seconds]; + NSString *dateStr = [self.dateFormatter stringFromDate:newDate]; + [self.delegate xPMineUserInfoDateView:self didClickSureButton:dateStr]; + } +} + +#pragma mark - Getters And Setters +- (void)setTime:(NSTimeInterval)time { + _time = time; + NSDate *date = [NSDate dateWithTimeIntervalSince1970:time]; + self.datePicker.date = date; +} +- (UIButton *)cancleButton { + if (!_cancleButton) { + _cancleButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_cancleButton setTitle:YMLocalizedString(@"XPMineUserInfoDateView0") forState:UIControlStateNormal]; + [_cancleButton addTarget:self action:@selector(onClickCancelButton:) forControlEvents:UIControlEventTouchUpInside]; + _cancleButton.titleLabel.font = [UIFont systemFontOfSize:14]; + [_cancleButton setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateNormal]; + } + return _cancleButton; +} + +- (UIButton *)sureButton { + if (!_sureButton) { + _sureButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_sureButton setTitle:YMLocalizedString(@"XPMineUserInfoDateView1") forState:UIControlStateNormal]; + [_sureButton addTarget:self action:@selector(onClickSureButton:) forControlEvents:UIControlEventTouchUpInside]; + _sureButton.titleLabel.font = [UIFont systemFontOfSize:14]; + [_sureButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; + } + return _sureButton; +} + +- (NSDateFormatter *)dateFormatter { + if (!_dateFormatter) { + _dateFormatter = [[NSDateFormatter alloc] init]; + _dateFormatter.dateFormat = @"yyyy-MM-dd"; + } + return _dateFormatter; +} + +- (UIDatePicker *)datePicker { + if (!_datePicker){ + _datePicker = [[UIDatePicker alloc] init]; + _datePicker.datePickerMode = UIDatePickerModeDate; + NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]; + _datePicker.locale = locale; + _datePicker.layer.cornerRadius = 5; + _datePicker.layer.masksToBounds = YES; + if (@available(iOS 13.4, *)) { + _datePicker.preferredDatePickerStyle = UIDatePickerStyleWheels; + } + NSDate *date = [self.dateFormatter dateFromString:@"2000-07-01"]; + _datePicker.date = date; + _datePicker.backgroundColor = [UIColor whiteColor]; + } + return _datePicker; +} + +@end diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoGiftView.h b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoGiftView.h new file mode 100644 index 00000000..386df812 --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoGiftView.h @@ -0,0 +1,17 @@ +// +// YMMineUserInfoGiftView.h +// YUMI +// +// Created by YUMI on 2022/6/15. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineUserInfoGiftView : UIView +@property (nonatomic,strong) NSArray *datasource; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoGiftView.m b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoGiftView.m new file mode 100644 index 00000000..6aa2d681 --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoGiftView.m @@ -0,0 +1,96 @@ +// +// YMMineUserInfoGiftView.m +// YUMI +// +// Created by YUMI on 2022/6/15. +// + +#import "XPMineUserInfoGiftView.h" +///Third +#import +///Tool +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" +///View +#import "XPMineDataGiftCollectionViewCell.h" +#import "XPMineUserInfoEmptyCollectionViewCell.h" + +@interface XPMineUserInfoGiftView () +///列表 +@property (nonatomic,strong) UICollectionView *collectionView; +@end + +@implementation XPMineUserInfoGiftView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + [self addSubview:self.collectionView]; +} + +- (void)initSubViewConstraints { + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; +} +#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + return self.datasource.count > 0? CGSizeMake(51, 65) : CGSizeMake(KScreenWidth - 30, 65 * 3 + 30); +} + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPMineDataGiftCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPMineDataGiftCollectionViewCell class]) forIndexPath:indexPath]; + cell.giftInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + return cell; + } + + XPMineUserInfoEmptyCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPMineUserInfoEmptyCollectionViewCell class]) forIndexPath:indexPath]; + cell.isGiftWall = YES; + return cell; +} +#pragma mark - JXCategoryListContentViewDelegate +- (UIView *)listView { + return self; +} + +#pragma mark - Getters And Setters +- (void)setDatasource:(NSArray *)datasource { + _datasource = datasource; + [self.collectionView reloadData]; +} + +- (UICollectionView *)collectionView{ + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.minimumInteritemSpacing = (KScreenWidth - 15 *2 - 10 * 2 -51 * 5) / 3.0;; + layout.minimumLineSpacing = 10; + layout.sectionInset = UIEdgeInsetsMake(0, 10, 0, 10); + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.scrollEnabled = NO; + _collectionView.backgroundColor = [UIColor clearColor]; + [_collectionView registerClass:[XPMineDataGiftCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPMineDataGiftCollectionViewCell class])]; + [_collectionView registerClass:[XPMineUserInfoEmptyCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPMineUserInfoEmptyCollectionViewCell class])]; + + } + return _collectionView; +} + + + +@end diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.h b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.h new file mode 100644 index 00000000..afdc177f --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.h @@ -0,0 +1,28 @@ +// +// YMMineHeaderView.h +// YUMI +// +// Created by YUMI on 2021/9/22. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class UserInfoModel, SDCycleScrollView,XPMineUserInfoHeaderView; +@protocol XPMineUserInfoHeaderViewDelegate + +- (void)xPMineUserInfoHeaderView:(XPMineUserInfoHeaderView *)view didClickGoToRoom:(NSString *)roomUid; + +@end + +@interface XPMineUserInfoHeaderView : UIView +@property (nonatomic,strong) UserInfoModel *userInfo; +///轮播图 +@property (nonatomic,strong, readonly) SDCycleScrollView *cycleScrollView; +///代理 +@property (nonatomic,weak) id delegate; +///当前查看用户是否在直播 +@property (nonatomic,copy) NSString *roomUid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.m b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.m new file mode 100644 index 00000000..6198edea --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.m @@ -0,0 +1,711 @@ +// +// YMMineHeaderView.m +// YUMI +// +// Created by YUMI on 2021/9/22. +// + +#import "XPMineUserInfoHeaderView.h" +///Third +#import +#import +#import "SDPhotoBrowser.h" +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "UIImage+ImageEffects.h" +#import "UIImage+Utils.h" +#import "NetImageView.h" +#import "NSArray+Safe.h" +#import "XNDJTDDLoadingTool.h" +#import "StatisticsServiceHelper.h" +///Model +#import "UserInfoModel.h" + +@interface XPMineUserInfoHeaderView () +///轮播图 +@property (nonatomic,strong) SDCycleScrollView *cycleScrollView; +///覆盖的view +@property (nonatomic,strong) UIImageView * coverImageView; +///显示当前的页数 +@property (nonatomic,strong) UIButton *pageButton; +///审核中图标 +@property (nonatomic,strong) UIImageView *reviewIcon; +///图片数组 +@property (nonatomic,strong) NSArray *imageUrls; +///用户的头像和相册 +@property (nonatomic,strong) NSMutableArray *userPhtotArray; +///用户信息 +@property (nonatomic,strong) UIView * userInfoView; +///用户信息的背景 +@property (nonatomic,strong) UIImageView *usershadowImageView; +///贵族等级icon +@property (nonatomic,strong) NetImageView *nobleImageView; +@property (nonatomic,strong) UIStackView *nickStackView; +///名字 +@property (nonatomic,strong) UILabel *nameLabel; +///sex +@property (nonatomic,strong) UIImageView *sexImageView; +///正在直播中 +@property (nonatomic,strong) UIButton *onlineButton; +/// +@property (nonatomic,strong) UIStackView *idStackView; +///靓号 +@property (nonatomic,strong) UIImageView *beautifulImageViw; +///id +@property (nonatomic,strong) UILabel *idLabel; +///空白的占位图 +@property (nonatomic,strong) UIView * spaceView; +///复制ID +@property (nonatomic,strong) UIImageView *copysIdImageView; +///粉丝数 +@property (nonatomic,strong) UILabel *fansNumLabel; +///魅力等级 等级 铭牌 +@property (nonatomic,strong) UIStackView *tagStackView; +///魅力等级 +@property (nonatomic,strong) NetImageView *charmImageView; +///贵族icon +@property (nonatomic, strong) NetImageView *nobleIconImageView; +///等级 +@property (nonatomic,strong) NetImageView *experImageView; +///铭牌的容器 +@property (nonatomic,strong) UIView * namePlateView; +///铭牌图片 +@property (nonatomic,strong) NetImageView *nameplateImageView; +///铭牌文字 +@property (nonatomic,strong) UILabel *nameplateLabel; +///新用户 +@property (nonatomic,strong) UIImageView *newUserImageView; +///官方的 +@property (nonatomic,strong) UIImageView *officalImageView; +///签名的背景 +@property (nonatomic,strong) UIView * signBackView; +///签名 +@property (nonatomic,strong) UILabel *signLabel; +///分割线 +@property (nonatomic,strong) UIView * lineView; +///头像的 +@property (nonatomic,strong) UserPhoto *avatarPhoto; +@end + +@implementation XPMineUserInfoHeaderView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.cycleScrollView]; + [self addSubview:self.coverImageView]; + [self addSubview:self.reviewIcon]; + [self addSubview:self.userInfoView]; + + [self.userInfoView addSubview:self.usershadowImageView]; + [self.userInfoView addSubview:self.signBackView]; + [self.userInfoView addSubview:self.lineView]; + + [self.usershadowImageView addSubview:self.nickStackView]; + [self.usershadowImageView addSubview:self.idStackView]; + [self.usershadowImageView addSubview:self.tagStackView]; + [self.usershadowImageView addSubview:self.pageButton]; + [self.usershadowImageView addSubview:self.nobleImageView]; + + [self.nickStackView addArrangedSubview:self.nameLabel]; + [self.nickStackView addArrangedSubview:self.sexImageView]; + [self.nickStackView addArrangedSubview:self.onlineButton]; + + [self.idStackView addArrangedSubview:self.beautifulImageViw]; + [self.idStackView addArrangedSubview:self.idLabel]; + [self.idStackView addArrangedSubview:self.copysIdImageView]; + [self.idStackView addArrangedSubview:self.spaceView]; + [self.idStackView addArrangedSubview:self.fansNumLabel]; + + + ///用户信息中的标签 + [self.tagStackView addArrangedSubview:self.newUserImageView]; + [self.tagStackView addArrangedSubview:self.officalImageView]; + [self.tagStackView addArrangedSubview:self.experImageView]; + [self.tagStackView addArrangedSubview:self.charmImageView]; + [self.tagStackView addArrangedSubview:self.namePlateView]; + ///铭牌 + [self.namePlateView addSubview:self.nameplateImageView]; + [self.namePlateView addSubview:self.nameplateLabel]; + + [self.signBackView addSubview:self.signLabel]; +} + +- (void)initSubViewConstraints { + [self.cycleScrollView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self); + make.height.mas_equalTo(375); + }]; + + [self.coverImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.cycleScrollView); + }]; + + [self.reviewIcon mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.right.mas_equalTo(self); + make.width.mas_equalTo(85); + make.height.mas_equalTo(50); + }]; + + [self.userInfoView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self); + make.bottom.mas_equalTo(self); + make.height.mas_equalTo(210); + }]; + + [self.usershadowImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.userInfoView); + make.height.mas_equalTo(146); + }]; + + [self.pageButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-15); + make.width.mas_equalTo(35); + make.height.mas_equalTo(16); + make.bottom.mas_equalTo(self.signBackView.mas_top).offset(-13); + }]; + + [self.signBackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(79); + make.left.right.mas_equalTo(self.userInfoView); + make.top.mas_equalTo(self.usershadowImageView.mas_bottom).offset(-15); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.userInfoView).inset(15); + make.bottom.mas_equalTo(self.userInfoView); + make.height.mas_equalTo(1); + }]; + + [self.nobleImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.usershadowImageView).offset(15); + make.top.mas_equalTo(self.usershadowImageView).offset(50); + make.width.height.mas_equalTo(20); + }]; + [self.nickStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nobleImageView.mas_right).mas_offset(5); + make.centerY.mas_equalTo(self.nobleImageView); + }]; + + [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(20); + }]; + + [self.sexImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(15, 15)); + }]; + + [self.onlineButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(55, 18)); + }]; + + [self.idStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nobleImageView); + make.top.mas_equalTo(self.nickStackView.mas_bottom).offset(5); + }]; + + [self.beautifulImageViw mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(15, 15)); + }]; + + [self.copysIdImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(14, 14)); + }]; + + [self.spaceView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(12); + make.height.mas_equalTo(15); + }]; + + [self.tagStackView mas_makeConstraints:^(MASConstraintMaker *make) { +// make.left.mas_equalTo(self.usershadowImageView).offset(15); + make.left.mas_equalTo(self.nobleImageView); + make.top.mas_equalTo(self.beautifulImageViw.mas_bottom).offset(5); + make.height.mas_equalTo(25); + }]; + + [self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(25); + }]; + + [self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(25); + }]; + + [self.newUserImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(20); + }]; + + [self.officalImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(20); + }]; + + [self.namePlateView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(20); + make.width.mas_equalTo(self.nameplateImageView.mas_width); + }]; + + + [self.nameplateImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(20); + make.width.mas_equalTo(60); + make.left.top.mas_equalTo(self.namePlateView); + }]; + + [self.nameplateLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.bottom.mas_equalTo(self.nameplateImageView); + make.right.mas_equalTo(self.namePlateView).offset(-2); + }]; + + [self.signLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.signBackView).offset(10); + make.top.mas_equalTo(self.signBackView).offset(23); + }]; +} + +#pragma mark - SDPhotoBrowserDelegate +- (NSURL *)photoBrowser:(SDPhotoBrowser *)browser highQualityImageURLForIndex:(NSInteger)index { + NSString * photoUrl = [self.imageUrls safeObjectAtIndex1:index]; + return [NSURL URLWithString:photoUrl]; +} + +- (UIImage *)photoBrowser:(SDPhotoBrowser *)browser placeholderImageForIndex:(NSInteger)index { + return [UIImageConstant defalutBannerPlaceholder]; +} + +#pragma mark - SDCycleScrollViewDelegate +-(void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didScrollToIndex:(NSInteger)index { + [self.pageButton setTitle:[NSString stringWithFormat:@"%ld/%lu",(index + 1), (unsigned long)self.imageUrls.count] forState:UIControlStateNormal]; + UserPhoto * photo = [self.userPhtotArray safeObjectAtIndex1:index]; + self.reviewIcon.hidden = !photo.isReview; +} + +// 轮播图点击 +- (void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didSelectItemAtIndex:(NSInteger)index { + NSInteger count = self.imageUrls.count; + SDPhotoBrowser *browser = [[SDPhotoBrowser alloc]init]; + browser.sourceImagesContainerView = self.cycleScrollView; + browser.delegate = self; + browser.imageCount = count; + browser.currentImageIndex = index; + browser.isMe = NO; + [browser show]; +} + +#pragma mark - Event Response +- (void)onlineButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineUserInfoHeaderView:didClickGoToRoom:)]) { + [self.delegate xPMineUserInfoHeaderView:self didClickGoToRoom:self.roomUid]; + } +} + +- (void)copysIdRecognizer { + [UIPasteboard generalPasteboard].string = [NSString stringWithFormat:@"%ld", self.userInfo.erbanNo]; + [XNDJTDDLoadingTool showSuccessWithMessage:YMLocalizedString(@"XPMineUserInfoHeaderView0")]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventID_mydata_copyid_click]; +} +#pragma mark - Getters And Setters +- (void)setUserInfo:(UserInfoModel *)userInfo { + _userInfo = userInfo; + if (_userInfo) { + self.nameLabel.text = _userInfo.nick; + self.idLabel.text = [NSString stringWithFormat:@"ID:%ld", (long)_userInfo.erbanNo]; + self.signLabel.text = _userInfo.userDesc.length > 0 ? _userInfo.userDesc : YMLocalizedString(@"XPMineUserInfoHeaderView1"); + self.fansNumLabel.text =[NSString stringWithFormat:YMLocalizedString(@"XPMineUserInfoHeaderView2"), _userInfo.fansNum]; + self.sexImageView.image = userInfo.gender == GenderType_Female ? [UIImage imageNamed:@"common_female"] : [UIImage imageNamed:@"common_male"]; + self.officalImageView.hidden = userInfo.defUser != UserLevelType_Offical; + self.beautifulImageViw.hidden = !userInfo.hasPrettyErbanNo; + self.newUserImageView.hidden = !userInfo.newUser; + self.nobleImageView.imageUrl = userInfo.userVipInfoVO.vipIcon; + UIImage *nobleImage = self.nobleImageView.image; + if (nobleImage) { + CGFloat scale = nobleImage.size.width / nobleImage.size.height; + [self.nobleImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20* scale, 20)); + }]; + [self.nickStackView mas_updateConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nobleImageView.mas_right).mas_offset(5); + }]; + } else { + [self.nobleImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(0, 20)); + }]; + [self.nickStackView mas_updateConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nobleImageView.mas_right); + }]; + } + if (userInfo.userLevelVo.experUrl) { + self.experImageView.imageUrl = userInfo.userLevelVo.experUrl; + } + self.experImageView.hidden = userInfo.userLevelVo.experUrl.length <= 0; + + if (userInfo.userLevelVo.charmUrl) { + self.charmImageView.imageUrl = userInfo.userLevelVo.charmUrl; + } + self.charmImageView.hidden = userInfo.userLevelVo.charmUrl.length <= 0; + + if (userInfo.nameplateWord.length>0 && userInfo.nameplatePic.length>0) { + self.nameplateImageView.imageUrl = userInfo.nameplatePic; + self.nameplateLabel.text = userInfo.nameplateWord; + self.namePlateView.hidden = NO; + } else { + self.namePlateView.hidden = YES; + } + [self.userPhtotArray removeAllObjects]; + self.copysIdImageView.hidden = NO; + // 轮播图 + NSMutableArray * imageUrls = [NSMutableArray array]; + if (userInfo.avatar) { + [imageUrls addObject:userInfo.avatar]; + if (![self.userPhtotArray containsObject:self.avatarPhoto]) { + [self.userPhtotArray addObject:self.avatarPhoto]; + } + self.avatarPhoto.isReview = userInfo.isReview; + self.avatarPhoto.photoUrl = userInfo.avatar; + } + if (self.userInfo.privatePhoto.count > 0) { + for (int i = 0; i < self.userInfo.privatePhoto.count; i++) { + UserPhoto * photo = [self.userInfo.privatePhoto safeObjectAtIndex1:i]; + if (photo.photoUrl.length > 0) { + [self.userPhtotArray addObject:photo]; + [imageUrls addObject:photo.photoUrl]; + } + } + } + + if (imageUrls.count > 0) { + self.imageUrls = imageUrls; + self.cycleScrollView.imageURLStringsGroup = imageUrls; + [self.pageButton setTitle:[NSString stringWithFormat:@"1/%lu",(unsigned long)imageUrls.count] forState:UIControlStateNormal];; + // 要初始化一下当前的审核状态 + self.reviewIcon.hidden = ![self.userPhtotArray objectAtIndex:0].isReview; + } + } +} + +- (void)setRoomUid:(NSString *)roomUid { + _roomUid = roomUid; + self.onlineButton.hidden = _roomUid.length <= 0; +} + +- (UIImageView *)coverImageView { + if (!_coverImageView) { + _coverImageView = [[UIImageView alloc] init]; + _coverImageView.userInteractionEnabled = NO; + _coverImageView.image = [UIImage imageNamed:@"mine_userinfo_header_shadow_bg"]; + } + return _coverImageView; +} + +- (UIView *)userInfoView { + if (!_userInfoView) { + _userInfoView = [[UIView alloc] init]; + _userInfoView.backgroundColor = [UIColor clearColor]; + _userInfoView.layer.masksToBounds = YES; + _userInfoView.layer.cornerRadius = 12; + } + return _userInfoView; +} + +- (UIImageView *)usershadowImageView { + if (!_usershadowImageView) { + _usershadowImageView = [[UIImageView alloc] init]; + _usershadowImageView.userInteractionEnabled = YES; + } + return _usershadowImageView; +} + +- (NetImageView *)nobleImageView { + if (!_nobleImageView) { + _nobleImageView = [[NetImageView alloc] init]; + } + return _nobleImageView; +} + +- (UIStackView *)nickStackView { + if (!_nickStackView) { + _nickStackView = [[UIStackView alloc] init]; + _nickStackView.axis = UILayoutConstraintAxisHorizontal; + _nickStackView.distribution = UIStackViewDistributionFill; + _nickStackView.alignment = UIStackViewAlignmentCenter; + _nickStackView.spacing = 10; + } + return _nickStackView; +} + +- (UILabel *)nameLabel { + if (!_nameLabel) { + _nameLabel = [[UILabel alloc] init]; + _nameLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:15]; + _nameLabel.textColor = [UIColor whiteColor]; + } + return _nameLabel; +} + +- (UIImageView *)sexImageView { + if (!_sexImageView) { + _sexImageView = [[UIImageView alloc] init]; + _sexImageView.userInteractionEnabled = YES; + } + return _sexImageView; +} + +- (UIStackView *)idStackView { + if (!_idStackView) { + _idStackView = [[UIStackView alloc] init]; + _idStackView.axis = UILayoutConstraintAxisHorizontal; + _idStackView.distribution = UIStackViewDistributionFill; + _idStackView.alignment = UIStackViewAlignmentCenter; + _idStackView.spacing = 3; + } + return _idStackView; +} + +- (UIImageView *)beautifulImageViw { + if (!_beautifulImageViw) { + _beautifulImageViw = [[UIImageView alloc] init]; + _beautifulImageViw.userInteractionEnabled = YES; + _beautifulImageViw.image = [UIImage imageNamed:@"common_icon_beautiful"]; + } + return _beautifulImageViw; +} + +- (UILabel *)fansNumLabel { + if (!_fansNumLabel) { + _fansNumLabel = [[UILabel alloc] init]; + _fansNumLabel.font = [UIFont systemFontOfSize:12]; + _fansNumLabel.textColor = [UIColor whiteColor]; + } + return _fansNumLabel; +} + +- (UIView *)spaceView { + if (!_spaceView) { + _spaceView = [[UIView alloc] init]; + _spaceView.backgroundColor = [UIColor clearColor]; + } + return _spaceView; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.font = [UIFont systemFontOfSize:11]; + _idLabel.textColor = [UIColor whiteColor]; + _idLabel.userInteractionEnabled = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(copysIdRecognizer)]; + [_idLabel addGestureRecognizer:tap]; + } + return _idLabel; +} + +- (UIButton *)onlineButton { + if (!_onlineButton) { + _onlineButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_onlineButton setTitle:YMLocalizedString(@"XPMineUserInfoHeaderView3") forState:UIControlStateNormal]; + [_onlineButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + _onlineButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_onlineButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _onlineButton.layer.masksToBounds = YES; + _onlineButton.layer.cornerRadius = 10; + [_onlineButton addTarget:self action:@selector(onlineButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _onlineButton; +} + +- (SDCycleScrollView *)cycleScrollView { + if (!_cycleScrollView) { + _cycleScrollView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectZero delegate:self placeholderImage:[UIImageConstant defalutBannerPlaceholder]]; + _cycleScrollView.backgroundColor = [UIColor clearColor]; + _cycleScrollView.bannerImageViewContentMode = UIViewContentModeScaleAspectFill; + _cycleScrollView.pageControlStyle = SDCycleScrollViewPageContolStyleNone; + _cycleScrollView.autoScroll = NO; + } + return _cycleScrollView; +} + +- (UIButton *)pageButton { + if (!_pageButton) { + _pageButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_pageButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _pageButton.titleLabel.font = [UIFont systemFontOfSize:10]; + [_pageButton setBackgroundImage:[UIImage imageNamed:@"mine_user_info_header_page_bg"] forState:UIControlStateNormal]; + } + return _pageButton; +} + + +- (UIImageView *)reviewIcon { + if (!_reviewIcon) { + _reviewIcon = [[UIImageView alloc] init]; + _reviewIcon.image = [UIImage imageNamed:@"mine_album_reviewing"]; + _reviewIcon.hidden = YES; + } + return _reviewIcon; +} + +- (UIStackView *)tagStackView { + if (!_tagStackView) { + _tagStackView = [[UIStackView alloc] init]; + _tagStackView.axis = UILayoutConstraintAxisHorizontal; + _tagStackView.distribution = UIStackViewDistributionFill; + _tagStackView.alignment = UIStackViewAlignmentCenter; + _tagStackView.spacing = 2; + } + return _tagStackView; +} +- (NetImageView *)experImageView { + if (!_experImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserCardLevel; + _experImageView = [[NetImageView alloc] initWithConfig:config]; + _experImageView.userInteractionEnabled = YES; + _experImageView.hidden = YES; + _experImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _experImageView; +} + +- (NetImageView *)charmImageView { + if (!_charmImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserCardLevel; + _charmImageView = [[NetImageView alloc] initWithConfig:config]; + _charmImageView.userInteractionEnabled = YES; + _charmImageView.hidden = YES; + _charmImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _charmImageView; +} + +- (NetImageView *)nobleIconImageView { + if (!_nobleIconImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserCardLevel; + _nobleIconImageView = [[NetImageView alloc] initWithConfig:config]; + _nobleIconImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _nobleIconImageView; +} + +- (UIView *)namePlateView { + if (!_namePlateView) { + _namePlateView = [[UIView alloc] init]; + _namePlateView.backgroundColor = [UIColor clearColor]; + _namePlateView.hidden = YES; + } + return _namePlateView; +} + +- (NetImageView *)nameplateImageView { + if (!_nameplateImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserCardLevel; + _nameplateImageView = [[NetImageView alloc] initWithConfig:config]; + _nameplateImageView.userInteractionEnabled = YES; + _nameplateImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _nameplateImageView; +} + +- (UILabel *)nameplateLabel { + if (!_nameplateLabel) { + _nameplateLabel = [[UILabel alloc] init]; + _nameplateLabel.font = [UIFont systemFontOfSize:10]; + _nameplateLabel.textAlignment = NSTextAlignmentCenter; + _nameplateLabel.textColor = [UIColor whiteColor]; + } + return _nameplateLabel; +} + +- (UIImageView *)newUserImageView { + if (!_newUserImageView) { + _newUserImageView = [[UIImageView alloc] init]; + _newUserImageView.userInteractionEnabled = YES; + _newUserImageView.image = [UIImage imageNamed:@"common_new_user"]; + _newUserImageView.hidden = YES; + } + return _newUserImageView; +} + +- (UIImageView *)officalImageView { + if (!_officalImageView) { + _officalImageView = [[UIImageView alloc] init]; + _officalImageView.userInteractionEnabled = YES; + _officalImageView.image = [UIImage imageNamed:@"common_offical"]; + _officalImageView.hidden = YES; + } + return _officalImageView; +} + +- (UIView *)signBackView { + if (!_signBackView) { + _signBackView = [[UIView alloc] init]; + _signBackView.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; + CAShapeLayer * layer = [CAShapeLayer layer]; + layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, 79) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)].CGPath; + _signBackView.layer.mask = layer; + } + return _signBackView; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _lineView; +} + +- (UILabel *)signLabel { + if (!_signLabel) { + _signLabel = [[UILabel alloc] init]; + _signLabel.font = [UIFont systemFontOfSize:12];; + _signLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _signLabel.numberOfLines = 2; + } + return _signLabel; +} + + +- (NSMutableArray *)userPhtotArray { + if (!_userPhtotArray) { + _userPhtotArray = [NSMutableArray array]; + } + return _userPhtotArray; +} + +- (UserPhoto *)avatarPhoto { + if (!_avatarPhoto) { + _avatarPhoto = [[UserPhoto alloc] init]; + } + return _avatarPhoto; +} + +- (UIImageView *)copysIdImageView { + if (!_copysIdImageView) { + _copysIdImageView = [[UIImageView alloc] init]; + _copysIdImageView.userInteractionEnabled = YES; + _copysIdImageView.image = [UIImage imageNamed:@"mine_user_id_copy_white"]; + _copysIdImageView.hidden = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(copysIdRecognizer)]; + [_copysIdImageView addGestureRecognizer:tap]; + } + return _copysIdImageView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoVoiceCardView.h b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoVoiceCardView.h new file mode 100644 index 00000000..277245fa --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoVoiceCardView.h @@ -0,0 +1,18 @@ +// +// YMMineUserInfoVoiceCardView.h +// YUMI +// +// Created by YUMI on 2022/4/15. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class MineSkillCardListInfoModel; +@interface XPMineUserInfoVoiceCardView : UIView +///播放完成 +@property (nonatomic,assign, readonly) BOOL isPlaying; +@property (nonatomic,strong) MineSkillCardListInfoModel *voiceInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoVoiceCardView.m b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoVoiceCardView.m new file mode 100644 index 00000000..554065ac --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoVoiceCardView.m @@ -0,0 +1,195 @@ +// +// YMMineUserInfoVoiceCardView.m +// YUMI +// +// Created by YUMI on 2022/4/15. +// + +#import "XPMineUserInfoVoiceCardView.h" +///Third +#import +#import +///Tool +#import "UIImage+Utils.h" +#import "UIButton+EnlargeTouchArea.h" +#import "DJDKMIMOMColor.h" +#import "NSArray+Safe.h" +///Model +#import "MineSkillCardListInfoModel.h" +#import "XPSkillCardPlayerManager.h" + +@interface XPMineUserInfoVoiceCardView () +///背景 +@property (nonatomic,strong) UIImageView *backImaegView; +///播放 +@property (nonatomic,strong) UIButton *playButton; +///音符 +@property (nonatomic,strong) UIImageView *noteImaegView; +///播放完成 +@property (nonatomic,assign) BOOL isPlaying; +@end + +@implementation XPMineUserInfoVoiceCardView + +- (void)dealloc { + self.isPlaying = NO; + [self.noteImaegView stopAnimating]; +} + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backImaegView]; + [self.backImaegView addSubview:self.playButton]; + [self.backImaegView addSubview:self.noteImaegView]; +} + +- (void)initSubViewConstraints { + [self.backImaegView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.bottom.mas_equalTo(self); + make.right.mas_equalTo(self).offset(13); + }]; + + [self.playButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(15, 15)); + make.left.mas_equalTo(self.backImaegView).offset(6); + make.centerY.mas_equalTo(self.backImaegView); + }]; + + [self.noteImaegView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(60, 20)); + make.centerY.mas_equalTo(self.backImaegView); + make.left.mas_equalTo(self.playButton.mas_right).offset(7); + }]; +} + +- (void)playButtonAction:(UIButton *)sender { + sender.selected = !sender.selected; + if (!self.isPlaying) { + if(self.voiceInfo.propVals.count) { +// NSString *fileName = [[self.voiceInfo.name componentsSeparatedByString:@"/"] lastObject]; + NSString * url = [self.voiceInfo.propVals safeObjectAtIndex1:0]; + NSArray * nameArray = [url componentsSeparatedByString:@"/"]; + NSString * fileName = @"daeplay"; + if (nameArray.count > 0) { + fileName = nameArray.lastObject; + } + + NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"mineSkillCardVoice"]; + NSString *fullPath = [filePath stringByAppendingPathComponent:fileName]; + NSLog(@"下载的路径:%@", fullPath); + if ([[NSFileManager defaultManager] fileExistsAtPath:fullPath]) { + self.isPlaying = YES; + sender.selected = YES; + [self.noteImaegView startAnimating]; + [[XPSkillCardPlayerManager shareInstance] playerVoiceWithPath:fullPath completionBlock:^{ + self.isPlaying = NO; + [self.noteImaegView stopAnimating]; + sender.selected = NO; + self.noteImaegView.image = [UIImage imageNamed:@"mine_voice_shengyin_32"]; + [[XPSkillCardPlayerManager shareInstance] stopMusic]; + }]; + } else { + if (![[NSFileManager defaultManager] fileExistsAtPath:fullPath]) { + NSFileManager *fileMgr = [[NSFileManager alloc] init]; + NSError * error; + [fileMgr createDirectoryAtPath:filePath withIntermediateDirectories:YES attributes:nil error:&error]; + NSLog(@"%@", error.description); + } + [self downloadAudioWithFileName:fileName musicUrl:url completion:^(BOOL isSuccess, NSString *editAudioPath) { + self.isPlaying = YES; + sender.selected = YES; + [self.noteImaegView startAnimating]; + [[XPSkillCardPlayerManager shareInstance] playerVoiceWithPath:editAudioPath completionBlock:^{ + self.isPlaying = NO; + sender.selected = NO; + [self.noteImaegView stopAnimating]; + self.noteImaegView.image = [UIImage imageNamed:@"mine_voice_shengyin_32"]; + [[XPSkillCardPlayerManager shareInstance] stopMusic]; + }]; + }]; + } + } + } else { + self.isPlaying = NO; + sender.selected = NO; + [self.noteImaegView stopAnimating]; + self.noteImaegView.image = [UIImage imageNamed:@"mine_voice_shengyin_32"]; + [[XPSkillCardPlayerManager shareInstance] stopMusic]; + } +} + +- (void)downloadAudioWithFileName:(NSString *)fileName musicUrl:(NSString *)musicUrl completion:(void (^) (BOOL isSuccess, NSString *editAudioPath))completion { + AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; + NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:musicUrl]]; + NSURLSessionDownloadTask *download = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) { + } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) { + NSString *filePath = [[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"mineSkillCardVoice"] stringByAppendingPathComponent:fileName]; + return [NSURL fileURLWithPath:filePath]; + } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) { + if (!error) { + completion(YES, filePath.path); + } else { + completion(NO, nil); + } + }]; + [download resume]; +} +#pragma mark - Getters And Setters +- (UIImageView *)backImaegView { + if (!_backImaegView) { + _backImaegView = [[UIImageView alloc] init]; + _backImaegView.userInteractionEnabled = YES; + _backImaegView.image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xF8F8F4), UIColorFromRGB(0xE7FBFD)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(77, 25)]; + _backImaegView.layer.masksToBounds = YES; + _backImaegView.layer.cornerRadius = 25/2; + } + return _backImaegView; +} + +- (UIButton *)playButton { + if (!_playButton) { + _playButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_playButton setImage:[UIImage imageNamed:@"mine_user_info_skill_card_voice_play"] forState:UIControlStateNormal]; + [_playButton setImage:[UIImage imageNamed:@"mine_user_info_skill_card_voice_pause"] forState:UIControlStateSelected]; + [_playButton addTarget:self action:@selector(playButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_playButton setEnlargeEdgeWithTop:8 right:10 bottom:8 left:10]; + } + return _playButton; +} + +- (UIImageView *)noteImaegView { + if (!_noteImaegView) { + _noteImaegView = [[UIImageView alloc] init]; + _noteImaegView.userInteractionEnabled = YES; + _noteImaegView.image = [UIImage imageNamed:@"mine_voice_shengyin_32"]; + NSMutableArray * array = [NSMutableArray array]; + for (int i = 0 ; i< 40; i++) { + UIImage * image; + if ( i < 10) { + image = [UIImage imageNamed:[NSString stringWithFormat:@"mine_voice_shengyin_0%d", i]]; + } else { + image = [UIImage imageNamed:[NSString stringWithFormat:@"mine_voice_shengyin_%d", i]]; + } + if (image) { + [array addObject:image]; + } + + } + _noteImaegView.animationImages = array; + _noteImaegView.animationDuration = 1.2; + _noteImaegView.animationRepeatCount = HUGE; + } + return _noteImaegView; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractCustomNevRegard.h b/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractCustomNevRegard.h deleted file mode 100644 index fa65200d..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractCustomNevRegard.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMMineCustomNavView.h -// YUMI -// -// Created by YUMI on 2021/9/23. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIManeConsumerAbstractCustomNevRegard; -@protocol FBCManeCustomNevRegardRepresendtation -- (void)fBCManeIndividualityNevRegard:(YUMIManeConsumerAbstractCustomNevRegard *)view didClickEditButton:(UIButton *)sender; -- (void)fBCManeIndividualityNevRegard:(YUMIManeConsumerAbstractCustomNevRegard *)view didClickBackButton:(UIButton *)sender; -@end -@interface YUMIManeConsumerAbstractCustomNevRegard : UIView -@property (nonatomic,weak) id delegate; -@property (nonatomic,strong,readonly) UILabel *titleLabel; -@property (nonatomic,strong,readonly) UIButton *compileBtuton; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractCustomNevRegard.m b/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractCustomNevRegard.m deleted file mode 100644 index a0660e1b..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractCustomNevRegard.m +++ /dev/null @@ -1,101 +0,0 @@ -// -// YMMineCustomNavView.m -// YUMI -// -// Created by YUMI on 2021/9/23. -// - -#import "YUMIManeConsumerAbstractCustomNevRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIButton+EnlargeTouchArea.h" - -@interface YUMIManeConsumerAbstractCustomNevRegard () -@property (nonatomic,strong) UIButton *backButton; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UIButton *compileBtuton; -@end - -@implementation YUMIManeConsumerAbstractCustomNevRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Response -- (void)compileBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeIndividualityNevRegard:didClickEditButton:)]) { - [self.delegate fBCManeIndividualityNevRegard:self didClickEditButton:sender]; - } -} - -- (void)encourageBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeIndividualityNevRegard:didClickBackButton:)]) { - [self.delegate fBCManeIndividualityNevRegard:self didClickBackButton:sender]; - } -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - [self addSubview:self.backButton]; - [self addSubview:self.titleLabel]; - [self addSubview:self.compileBtuton]; -} - -- (void)initChildLyRestrictions { - [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(15); - make.centerY.equalTo(self.mas_bottom).mas_offset(-22); - }]; - - [self.compileBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-15); - make.centerY.equalTo(self.mas_bottom).mas_offset(-22); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.centerY.equalTo(self.mas_bottom).mas_offset(-22); - }]; -} - -#pragma mark - Getters And Setters -- (UIButton *)backButton { - if (!_backButton) { - _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backButton setImage:[UIImage imageNamed:@"yumi_same_title_back"] forState:UIControlStateNormal]; - _backButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; - [_backButton addTarget:self action:@selector(encourageBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_backButton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:10]; - } - return _backButton; -} - -- (UIButton *)compileBtuton { - if (!_compileBtuton) { - _compileBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_compileBtuton setImage:[UIImage imageNamed:@"yumi_center_user_gen_edit"] forState:UIControlStateNormal]; - _compileBtuton.titleLabel.font = [UIFont systemFontOfSize:16]; - [_compileBtuton setTitleColor:[DJDKMIMOMColor precautiousChampionPrettify] forState:UIControlStateNormal]; - [_compileBtuton addTarget:self action:@selector(compileBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_compileBtuton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:10]; - } - return _compileBtuton; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.font = [UIFont systemFontOfSize:15]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractDateRegard.h b/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractDateRegard.h deleted file mode 100644 index 236ad345..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractDateRegard.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMMineUserInfoDateView.h -// YUMI -// -// Created by YUMI on 2021/9/23. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIManeConsumerAbstractDateRegard; -@protocol FBCManeConsumerAbstractDateRegardRepresendtation -- (void)fBCManeConsumerAbstractEngagementRegard:(YUMIManeConsumerAbstractDateRegard *)view didClickCancleButton:(UIButton *)sender; -- (void)fBCManeConsumerAbstractEngagementRegard:(YUMIManeConsumerAbstractDateRegard *)view didClickSureButton:(NSString *)dateStr; -@end - -@interface YUMIManeConsumerAbstractDateRegard : UIView -@property (nonatomic, assign) NSTimeInterval time; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractDateRegard.m b/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractDateRegard.m deleted file mode 100644 index 1f4c7eae..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractDateRegard.m +++ /dev/null @@ -1,127 +0,0 @@ -// -// YMMineUserInfoDateView.m -// YUMI -// -// Created by YUMI on 2021/9/23. -// - -#import "YUMIManeConsumerAbstractDateRegard.h" -#import -#import "DJDKMIMOMColor.h" - -@interface YUMIManeConsumerAbstractDateRegard () -@property (nonatomic,strong) UIButton *cancleBtuton; -@property (nonatomic,strong) UIButton *sureBtuton; -@property (nonatomic, strong) UIDatePicker *datePicker; -@property (nonatomic, strong) NSDateFormatter *engagementInitialiser; -@end - -@implementation YUMIManeConsumerAbstractDateRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor whiteColor]; - [self addSubview:self.cancleBtuton]; - [self addSubview:self.sureBtuton]; - [self addSubview:self.datePicker]; -} - -- (void)initChildLyRestrictions { - [self.datePicker mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self); - make.bottom.mas_equalTo(self); - make.top.mas_equalTo(self.cancleBtuton.mas_bottom); - }]; - [self.cancleBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.top.mas_equalTo(self); - make.height.mas_equalTo(30); - make.width.mas_equalTo(50); - }]; - [self.sureBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self); - make.width.height.centerY.mas_equalTo(self.cancleBtuton); - }]; -} - -#pragma mark - Event -- (void)onTicktackRevoctowardsionBtuton:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeConsumerAbstractEngagementRegard:didClickCancleButton:)]) { - [self.delegate fBCManeConsumerAbstractEngagementRegard:self didClickCancleButton:sender]; - } -} - -- (void)onTicktackSureBtuton:(UIButton *)sender { - NSDate * date = self.datePicker.date; - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeConsumerAbstractEngagementRegard:didClickSureButton:)]) { - NSTimeZone *timeZone= [NSTimeZone systemTimeZone]; - NSInteger seconds= [timeZone secondsFromGMTForDate:date]; - NSDate *newDate= [date dateByAddingTimeInterval:seconds]; - NSString *dateStr = [self.engagementInitialiser stringFromDate:newDate]; - [self.delegate fBCManeConsumerAbstractEngagementRegard:self didClickSureButton:dateStr]; - } -} - -#pragma mark - Getters And Setters -- (void)setTime:(NSTimeInterval)time { - _time = time; - NSDate *date = [NSDate dateWithTimeIntervalSince1970:time]; - self.datePicker.date = date; -} -- (UIButton *)cancleBtuton { - if (!_cancleBtuton) { - _cancleBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_cancleBtuton setTitle:YMLocalizedString(@"YUMI_Mine_User_Info_Date_View_0") forState:UIControlStateNormal]; - [_cancleBtuton addTarget:self action:@selector(onTicktackRevoctowardsionBtuton:) forControlEvents:UIControlEventTouchUpInside]; - _cancleBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - [_cancleBtuton setTitleColor:[DJDKMIMOMColor instantEssayPrettify] forState:UIControlStateNormal]; - } - return _cancleBtuton; -} - -- (UIButton *)sureBtuton { - if (!_sureBtuton) { - _sureBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_sureBtuton setTitle:YMLocalizedString(@"YUMI_Mine_User_Info_Date_View_1") forState:UIControlStateNormal]; - [_sureBtuton addTarget:self action:@selector(onTicktackSureBtuton:) forControlEvents:UIControlEventTouchUpInside]; - _sureBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - [_sureBtuton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; - } - return _sureBtuton; -} - -- (NSDateFormatter *)engagementInitialiser { - if (!_engagementInitialiser) { - _engagementInitialiser = [[NSDateFormatter alloc] init]; - _engagementInitialiser.dateFormat = @"yyyy-MM-dd"; - } - return _engagementInitialiser; -} - -- (UIDatePicker *)datePicker { - if (!_datePicker){ - _datePicker = [[UIDatePicker alloc] init]; - _datePicker.datePickerMode = UIDatePickerModeDate; - NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]; - _datePicker.locale = locale; - _datePicker.layer.cornerRadius = 5; - _datePicker.layer.masksToBounds = YES; - if (@available(iOS 13.4, *)) { - _datePicker.preferredDatePickerStyle = UIDatePickerStyleWheels; - } - NSDate *date = [self.engagementInitialiser dateFromString:@"2000-07-01"]; - _datePicker.date = date; - _datePicker.backgroundColor = [UIColor whiteColor]; - } - return _datePicker; -} - -@end diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractIntelligencerRegard.h b/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractIntelligencerRegard.h deleted file mode 100644 index ac279033..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractIntelligencerRegard.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YMMineHeaderView.h -// YUMI -// -// Created by YUMI on 2021/9/22. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ConsumerAbstractMatrix, SDCycleScrollView,YUMIManeConsumerAbstractIntelligencerRegard; -@protocol FBCManeConsumerAbstractIntelligencerRegardRepresendtation - -- (void)fBCManeConsumerAbstractIntelligencerRegard:(YUMIManeConsumerAbstractIntelligencerRegard *)view didClickGoToRoom:(NSString *)roomUid; - -@end - -@interface YUMIManeConsumerAbstractIntelligencerRegard : UIView -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@property (nonatomic,strong, readonly) SDCycleScrollView *cycleTrundleRegard; -@property (nonatomic,weak) id delegate; -@property (nonatomic,copy) NSString *roomUid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractIntelligencerRegard.m b/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractIntelligencerRegard.m deleted file mode 100644 index aa1c23dd..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractIntelligencerRegard.m +++ /dev/null @@ -1,675 +0,0 @@ -// -// YMMineHeaderView.m -// YUMI -// -// Created by YUMI on 2021/9/22. -// - -#import "YUMIManeConsumerAbstractIntelligencerRegard.h" -#import -#import -#import "SDAppearanceBrowser.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "UIImage+ImageEffects.h" -#import "UIImage+Utils.h" -#import "NetIndicateRegard.h" -#import "NSArray+Safe.h" -#import "XNDJTBWGLoadingTool.h" -#import "StatsticsticsServingFacilitater.h" -#import "ConsumerAbstractMatrix.h" - -@interface YUMIManeConsumerAbstractIntelligencerRegard () -@property (nonatomic,strong) SDCycleScrollView *cycleTrundleRegard; -@property (nonatomic,strong) UIImageView * enshroudIndicateRegard; -@property (nonatomic,strong) UIButton *periodBtuton; -@property (nonatomic,strong) UIImageView *reviewFigure; -@property (nonatomic,strong) NSArray *indicateUrls; -@property (nonatomic,strong) NSMutableArray *consumerPhtotGarment; -@property (nonatomic,strong) UIView * consumerAbstractRegard; -@property (nonatomic,strong) UIImageView *consumerspossessowIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *magnificentIndicateRegard; -@property (nonatomic,strong) UIStackView *monicerHierarchyRegard; -@property (nonatomic,strong) UILabel *constituteSequencignation; -@property (nonatomic,strong) UIImageView *seaxualityIndicateRegard; -@property (nonatomic,strong) UIButton *onlineBtuton; -@property (nonatomic,strong) UIStackView *idHierarchyRegard; -@property (nonatomic,strong) UIImageView *beautifulIndicateViw; -@property (nonatomic,strong) UILabel *idSequencignation; -@property (nonatomic,strong) UIView * vacuumRegard; -@property (nonatomic,strong) UIImageView *copysIdIndicateRegard; -@property (nonatomic,strong) UILabel *fanaticsFigureSequencignation; -@property (nonatomic,strong) UIStackView *coupleHierarchyRegard; -@property (nonatomic,strong) NetIndicateRegard *fascinationIndicateRegard; -@property (nonatomic, strong) NetIndicateRegard *magnificentFigureIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *experIndicateRegard; -@property (nonatomic,strong) UIView * constituteWoodentrayRegard; -@property (nonatomic,strong) NetIndicateRegard *materialIndicateRegard; -@property (nonatomic,strong) UILabel *materialSequencignation; -@property (nonatomic,strong) UIImageView *strangeConsumerIndicateRegard; -@property (nonatomic,strong) UIImageView *officalIndicateRegard; -@property (nonatomic,strong) UIView * signEncourageRegard; -@property (nonatomic,strong) UILabel *signSequencignation; -@property (nonatomic,strong) UIView * burlywoodRegard; -@property (nonatomic,strong) ConsumerAppearance *intelligenceportraitAppearance; -@end - -@implementation YUMIManeConsumerAbstractIntelligencerRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.cycleTrundleRegard]; - [self addSubview:self.enshroudIndicateRegard]; - [self addSubview:self.reviewFigure]; - [self addSubview:self.consumerAbstractRegard]; - - [self.consumerAbstractRegard addSubview:self.consumerspossessowIndicateRegard]; - [self.consumerAbstractRegard addSubview:self.signEncourageRegard]; - [self.consumerAbstractRegard addSubview:self.burlywoodRegard]; - - [self.consumerspossessowIndicateRegard addSubview:self.monicerHierarchyRegard]; - [self.consumerspossessowIndicateRegard addSubview:self.idHierarchyRegard]; - [self.consumerspossessowIndicateRegard addSubview:self.coupleHierarchyRegard]; - [self.consumerspossessowIndicateRegard addSubview:self.periodBtuton]; - [self.consumerspossessowIndicateRegard addSubview:self.magnificentIndicateRegard]; - - [self.monicerHierarchyRegard addArrangedSubview:self.constituteSequencignation]; - [self.monicerHierarchyRegard addArrangedSubview:self.seaxualityIndicateRegard]; - [self.monicerHierarchyRegard addArrangedSubview:self.onlineBtuton]; - - [self.idHierarchyRegard addArrangedSubview:self.beautifulIndicateViw]; - [self.idHierarchyRegard addArrangedSubview:self.idSequencignation]; - [self.idHierarchyRegard addArrangedSubview:self.copysIdIndicateRegard]; - [self.idHierarchyRegard addArrangedSubview:self.vacuumRegard]; - [self.idHierarchyRegard addArrangedSubview:self.fanaticsFigureSequencignation]; - - - - [self.coupleHierarchyRegard addArrangedSubview:self.strangeConsumerIndicateRegard]; - [self.coupleHierarchyRegard addArrangedSubview:self.officalIndicateRegard]; - [self.coupleHierarchyRegard addArrangedSubview:self.experIndicateRegard]; - [self.coupleHierarchyRegard addArrangedSubview:self.fascinationIndicateRegard]; - [self.coupleHierarchyRegard addArrangedSubview:self.constituteWoodentrayRegard]; - - [self.constituteWoodentrayRegard addSubview:self.materialIndicateRegard]; - [self.constituteWoodentrayRegard addSubview:self.materialSequencignation]; - - [self.signEncourageRegard addSubview:self.signSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.cycleTrundleRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.height.mas_equalTo(375); - }]; - - [self.enshroudIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.cycleTrundleRegard); - }]; - - [self.reviewFigure mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.right.mas_equalTo(self); - make.width.mas_equalTo(85); - make.height.mas_equalTo(50); - }]; - - [self.consumerAbstractRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self); - make.bottom.mas_equalTo(self); - make.height.mas_equalTo(210); - }]; - - [self.consumerspossessowIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.consumerAbstractRegard); - make.height.mas_equalTo(146); - }]; - - [self.periodBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-15); - make.width.mas_equalTo(35); - make.height.mas_equalTo(16); - make.bottom.mas_equalTo(self.signEncourageRegard.mas_top).offset(-13); - }]; - - [self.signEncourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(79); - make.left.right.mas_equalTo(self.consumerAbstractRegard); - make.top.mas_equalTo(self.consumerspossessowIndicateRegard.mas_bottom).offset(-15); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.consumerAbstractRegard).inset(15); - make.bottom.mas_equalTo(self.consumerAbstractRegard); - make.height.mas_equalTo(1); - }]; - - [self.magnificentIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.consumerspossessowIndicateRegard).offset(15); - make.top.mas_equalTo(self.consumerspossessowIndicateRegard).offset(50); - make.width.height.mas_equalTo(20); - }]; - [self.monicerHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.magnificentIndicateRegard.mas_right).mas_offset(5); - make.centerY.mas_equalTo(self.magnificentIndicateRegard); - }]; - - [self.constituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(20); - }]; - - [self.seaxualityIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(15, 15)); - }]; - - [self.onlineBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(55, 18)); - }]; - - [self.idHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.magnificentIndicateRegard); - make.top.mas_equalTo(self.monicerHierarchyRegard.mas_bottom).offset(5); - }]; - - [self.beautifulIndicateViw mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(15, 15)); - }]; - - [self.copysIdIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(14, 14)); - }]; - - [self.vacuumRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(12); - make.height.mas_equalTo(15); - }]; - - [self.coupleHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.magnificentIndicateRegard); - make.top.mas_equalTo(self.beautifulIndicateViw.mas_bottom).offset(5); - make.height.mas_equalTo(25); - }]; - - [self.experIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(25); - }]; - - [self.fascinationIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(25); - }]; - - [self.strangeConsumerIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(20); - }]; - - [self.officalIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(20); - }]; - - [self.constituteWoodentrayRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(20); - make.width.mas_equalTo(self.materialIndicateRegard.mas_width); - }]; - - - [self.materialIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(20); - make.width.mas_equalTo(60); - make.left.top.mas_equalTo(self.constituteWoodentrayRegard); - }]; - - [self.materialSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.bottom.mas_equalTo(self.materialIndicateRegard); - make.right.mas_equalTo(self.constituteWoodentrayRegard).offset(-2); - }]; - - [self.signSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.signEncourageRegard).offset(10); - make.top.mas_equalTo(self.signEncourageRegard).offset(23); - }]; -} - -#pragma mark - SDPhotoBrowserRepresendtation -- (NSURL *)aplictowardsionearanceBrowser:(SDAppearanceBrowser *)browser highQualityIndictowardseWEEBSITEInthecaseofIndictowardsrix:(NSInteger)index { - NSString * photoUrl = [self.indicateUrls secureGroalTowardsIndictowardsrix1:index]; - return [NSURL URLWithString:photoUrl]; -} - -- (UIImage *)aplictowardsionearanceBrowser:(SDAppearanceBrowser *)browser placeholderIndictowardseInthecaseofIndictowardsrix:(NSInteger)index { - return [UIIndicateConstant defalutOriflammeDepapossessor]; -} - -#pragma mark - SDCycleScrollViewDelegate --(void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didScrollToIndex:(NSInteger)index { - [self.periodBtuton setTitle:[NSString stringWithFormat:@"%ld/%lu",(index + 1), (unsigned long)self.indicateUrls.count] forState:UIControlStateNormal]; - ConsumerAppearance * appearance = [self.consumerPhtotGarment secureGroalTowardsIndictowardsrix1:index]; - self.reviewFigure.hidden = !appearance.isReview; -} - -- (void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didSelectItemAtIndex:(NSInteger)index { - NSInteger count = self.indicateUrls.count; - SDAppearanceBrowser *browser = [[SDAppearanceBrowser alloc]init]; - browser.sourceIndicatesAccommoengagementdRegard = self.cycleTrundleRegard; - browser.delegate = self; - browser.indicateComputation = count; - browser.universalIndicateIndicatrix = index; - browser.isMe = NO; - [browser show]; -} - -#pragma mark - Event Response -- (void)onlineBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeConsumerAbstractIntelligencerRegard:didClickGoToRoom:)]) { - [self.delegate fBCManeConsumerAbstractIntelligencerRegard:self didClickGoToRoom:self.roomUid]; - } -} - -- (void)copysIdRecognition { - [UIPasteboard generalPasteboard].string = [NSString stringWithFormat:@"%ld", self.userInfo.erbanNo]; - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:YMLocalizedString(@"YUMI_Mine_User_Info_Header_View_0")]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventID_mydata_copyid_click]; -} -#pragma mark - Getters And Setters -- (void)setUserInfo:(ConsumerAbstractMatrix *)userInfo { - _userInfo = userInfo; - if (_userInfo) { - self.constituteSequencignation.text = _userInfo.nick; - self.idSequencignation.text = [NSString stringWithFormat:@"ID:%ld", (long)_userInfo.erbanNo]; - self.signSequencignation.text = _userInfo.userDesc.length > 0 ? _userInfo.userDesc : YMLocalizedString(@"YUMI_Mine_User_Info_Header_View_1"); - self.fanaticsFigureSequencignation.text =[NSString stringWithFormat:YMLocalizedString(@"YUMI_Mine_User_Info_Header_View_2"), _userInfo.fansNum]; - self.seaxualityIndicateRegard.image = userInfo.gender == GenderGenre_Female ? [UIImage imageNamed:@"yumi_same_female"] : [UIImage imageNamed:@"yumi_same_male"]; - self.officalIndicateRegard.hidden = userInfo.defUser != ConsumerPrototypeGenre_Offical; - self.beautifulIndicateViw.hidden = !userInfo.hasPrettyErbanNo; - self.strangeConsumerIndicateRegard.hidden = !userInfo.newUser; - self.magnificentIndicateRegard.imageUrl = userInfo.userVipInfoVO.vipIcon; - UIImage *nobleImage = self.magnificentIndicateRegard.image; - if (nobleImage) { - CGFloat scale = nobleImage.size.width / nobleImage.size.height; - [self.magnificentIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20* scale, 20)); - }]; - [self.monicerHierarchyRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.magnificentIndicateRegard.mas_right).mas_offset(5); - }]; - } else { - [self.magnificentIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(0, 20)); - }]; - [self.monicerHierarchyRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.magnificentIndicateRegard.mas_right); - }]; - } - if (userInfo.userLevelVo.experUrl) { - self.experIndicateRegard.imageUrl = userInfo.userLevelVo.experUrl; - } - self.experIndicateRegard.hidden = userInfo.userLevelVo.experUrl.length <= 0; - - if (userInfo.userLevelVo.charmUrl) { - self.fascinationIndicateRegard.imageUrl = userInfo.userLevelVo.charmUrl; - } - self.fascinationIndicateRegard.hidden = userInfo.userLevelVo.charmUrl.length <= 0; - - if (userInfo.nameplateWord.length>0 && userInfo.nameplatePic.length>0) { - self.materialIndicateRegard.imageUrl = userInfo.nameplatePic; - self.materialSequencignation.text = userInfo.nameplateWord; - self.constituteWoodentrayRegard.hidden = NO; - } else { - self.constituteWoodentrayRegard.hidden = YES; - } - [self.consumerPhtotGarment removeAllObjects]; - self.copysIdIndicateRegard.hidden = NO; - - NSMutableArray * indicateUrls = [NSMutableArray array]; - if (userInfo.avatar) { - [indicateUrls addObject:userInfo.avatar]; - if (![self.consumerPhtotGarment containsObject:self.intelligenceportraitAppearance]) { - [self.consumerPhtotGarment addObject:self.intelligenceportraitAppearance]; - } - self.intelligenceportraitAppearance.isReview = userInfo.isReview; - self.intelligenceportraitAppearance.photoUrl = userInfo.avatar; - } - if (self.userInfo.privatePhoto.count > 0) { - for (int i = 0; i < self.userInfo.privatePhoto.count; i++) { - ConsumerAppearance * appearance = [self.userInfo.privatePhoto secureGroalTowardsIndictowardsrix1:i]; - if (appearance.photoUrl.length > 0) { - [self.consumerPhtotGarment addObject:appearance]; - [indicateUrls addObject:appearance.photoUrl]; - } - } - } - - if (indicateUrls.count > 0) { - self.indicateUrls = indicateUrls; - self.cycleTrundleRegard.imageURLStringsGroup = indicateUrls; - [self.periodBtuton setTitle:[NSString stringWithFormat:@"1/%lu",(unsigned long)indicateUrls.count] forState:UIControlStateNormal];; - - self.reviewFigure.hidden = ![self.consumerPhtotGarment objectAtIndex:0].isReview; - } - } -} - -- (void)setRoomUid:(NSString *)roomUid { - _roomUid = roomUid; - self.onlineBtuton.hidden = _roomUid.length <= 0; -} - -- (UIImageView *)enshroudIndicateRegard { - if (!_enshroudIndicateRegard) { - _enshroudIndicateRegard = [[UIImageView alloc] init]; - _enshroudIndicateRegard.userInteractionEnabled = NO; - _enshroudIndicateRegard.image = [UIImage imageNamed:@"yumi_center_usergen_header_shadow_background"]; - } - return _enshroudIndicateRegard; -} - -- (UIView *)consumerAbstractRegard { - if (!_consumerAbstractRegard) { - _consumerAbstractRegard = [[UIView alloc] init]; - _consumerAbstractRegard.backgroundColor = [UIColor clearColor]; - _consumerAbstractRegard.layer.masksToBounds = YES; - _consumerAbstractRegard.layer.cornerRadius = 12; - } - return _consumerAbstractRegard; -} - -- (UIImageView *)consumerspossessowIndicateRegard { - if (!_consumerspossessowIndicateRegard) { - _consumerspossessowIndicateRegard = [[UIImageView alloc] init]; - _consumerspossessowIndicateRegard.userInteractionEnabled = YES; - } - return _consumerspossessowIndicateRegard; -} - -- (NetIndicateRegard *)magnificentIndicateRegard { - if (!_magnificentIndicateRegard) { - _magnificentIndicateRegard = [[NetIndicateRegard alloc] init]; - } - return _magnificentIndicateRegard; -} - -- (UIStackView *)monicerHierarchyRegard { - if (!_monicerHierarchyRegard) { - _monicerHierarchyRegard = [[UIStackView alloc] init]; - _monicerHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _monicerHierarchyRegard.distribution = UIStackViewDistributionFill; - _monicerHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _monicerHierarchyRegard.spacing = 10; - } - return _monicerHierarchyRegard; -} - -- (UILabel *)constituteSequencignation { - if (!_constituteSequencignation) { - _constituteSequencignation = [[UILabel alloc] init]; - _constituteSequencignation.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:15]; - _constituteSequencignation.textColor = [UIColor whiteColor]; - } - return _constituteSequencignation; -} - -- (UIImageView *)seaxualityIndicateRegard { - if (!_seaxualityIndicateRegard) { - _seaxualityIndicateRegard = [[UIImageView alloc] init]; - _seaxualityIndicateRegard.userInteractionEnabled = YES; - } - return _seaxualityIndicateRegard; -} - -- (UIStackView *)idHierarchyRegard { - if (!_idHierarchyRegard) { - _idHierarchyRegard = [[UIStackView alloc] init]; - _idHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _idHierarchyRegard.distribution = UIStackViewDistributionFill; - _idHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _idHierarchyRegard.spacing = 3; - } - return _idHierarchyRegard; -} - -- (UIImageView *)beautifulIndicateViw { - if (!_beautifulIndicateViw) { - _beautifulIndicateViw = [[UIImageView alloc] init]; - _beautifulIndicateViw.userInteractionEnabled = YES; - _beautifulIndicateViw.image = [UIImage imageNamed:@"yumi_same_pic_beautiful"]; - } - return _beautifulIndicateViw; -} - -- (UILabel *)fanaticsFigureSequencignation { - if (!_fanaticsFigureSequencignation) { - _fanaticsFigureSequencignation = [[UILabel alloc] init]; - _fanaticsFigureSequencignation.font = [UIFont systemFontOfSize:12]; - _fanaticsFigureSequencignation.textColor = [UIColor whiteColor]; - } - return _fanaticsFigureSequencignation; -} - -- (UIView *)vacuumRegard { - if (!_vacuumRegard) { - _vacuumRegard = [[UIView alloc] init]; - _vacuumRegard.backgroundColor = [UIColor clearColor]; - } - return _vacuumRegard; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.font = [UIFont systemFontOfSize:11]; - _idSequencignation.textColor = [UIColor whiteColor]; - _idSequencignation.userInteractionEnabled = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(copysIdRecognition)]; - [_idSequencignation addGestureRecognizer:tap]; - } - return _idSequencignation; -} - -- (UIButton *)onlineBtuton { - if (!_onlineBtuton) { - _onlineBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_onlineBtuton setTitle:YMLocalizedString(@"YUMI_Mine_User_Info_Header_View_3") forState:UIControlStateNormal]; - [_onlineBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - _onlineBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_onlineBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _onlineBtuton.layer.masksToBounds = YES; - _onlineBtuton.layer.cornerRadius = 10; - [_onlineBtuton addTarget:self action:@selector(onlineBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _onlineBtuton; -} - -- (SDCycleScrollView *)cycleTrundleRegard { - if (!_cycleTrundleRegard) { - _cycleTrundleRegard = [SDCycleScrollView cycleScrollViewWithFrame:CGRectZero delegate:self placeholderImage:[UIIndicateConstant defalutOriflammeDepapossessor]]; - _cycleTrundleRegard.backgroundColor = [UIColor clearColor]; - _cycleTrundleRegard.bannerImageViewContentMode = UIViewContentModeScaleAspectFill; - _cycleTrundleRegard.pageControlStyle = SDCycleScrollViewPageContolStyleNone; - _cycleTrundleRegard.autoScroll = NO; - } - return _cycleTrundleRegard; -} - -- (UIButton *)periodBtuton { - if (!_periodBtuton) { - _periodBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_periodBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _periodBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - [_periodBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_center_user_gen_header_page_background"] forState:UIControlStateNormal]; - } - return _periodBtuton; -} - - -- (UIImageView *)reviewFigure { - if (!_reviewFigure) { - _reviewFigure = [[UIImageView alloc] init]; - _reviewFigure.image = [UIImage imageNamed:@"yumi_center_album_reviewing"]; - _reviewFigure.hidden = YES; - } - return _reviewFigure; -} - -- (UIStackView *)coupleHierarchyRegard { - if (!_coupleHierarchyRegard) { - _coupleHierarchyRegard = [[UIStackView alloc] init]; - _coupleHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _coupleHierarchyRegard.distribution = UIStackViewDistributionFill; - _coupleHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _coupleHierarchyRegard.spacing = 2; - } - return _coupleHierarchyRegard; -} -- (NetIndicateRegard *)experIndicateRegard { - if (!_experIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.imageType = ImageGenreUserCardLevel; - _experIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _experIndicateRegard.userInteractionEnabled = YES; - _experIndicateRegard.hidden = YES; - _experIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _experIndicateRegard; -} - -- (NetIndicateRegard *)fascinationIndicateRegard { - if (!_fascinationIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.imageType = ImageGenreUserCardLevel; - _fascinationIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _fascinationIndicateRegard.userInteractionEnabled = YES; - _fascinationIndicateRegard.hidden = YES; - _fascinationIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _fascinationIndicateRegard; -} - -- (NetIndicateRegard *)magnificentFigureIndicateRegard { - if (!_magnificentFigureIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.imageType = ImageGenreUserCardLevel; - _magnificentFigureIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _magnificentFigureIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _magnificentFigureIndicateRegard; -} - -- (UIView *)constituteWoodentrayRegard { - if (!_constituteWoodentrayRegard) { - _constituteWoodentrayRegard = [[UIView alloc] init]; - _constituteWoodentrayRegard.backgroundColor = [UIColor clearColor]; - _constituteWoodentrayRegard.hidden = YES; - } - return _constituteWoodentrayRegard; -} - -- (NetIndicateRegard *)materialIndicateRegard { - if (!_materialIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.imageType = ImageGenreUserCardLevel; - _materialIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _materialIndicateRegard.userInteractionEnabled = YES; - _materialIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _materialIndicateRegard; -} - -- (UILabel *)materialSequencignation { - if (!_materialSequencignation) { - _materialSequencignation = [[UILabel alloc] init]; - _materialSequencignation.font = [UIFont systemFontOfSize:10]; - _materialSequencignation.textAlignment = NSTextAlignmentCenter; - _materialSequencignation.textColor = [UIColor whiteColor]; - } - return _materialSequencignation; -} - -- (UIImageView *)strangeConsumerIndicateRegard { - if (!_strangeConsumerIndicateRegard) { - _strangeConsumerIndicateRegard = [[UIImageView alloc] init]; - _strangeConsumerIndicateRegard.userInteractionEnabled = YES; - _strangeConsumerIndicateRegard.image = [UIImage imageNamed:@"yumi_same_new_user"]; - _strangeConsumerIndicateRegard.hidden = YES; - } - return _strangeConsumerIndicateRegard; -} - -- (UIImageView *)officalIndicateRegard { - if (!_officalIndicateRegard) { - _officalIndicateRegard = [[UIImageView alloc] init]; - _officalIndicateRegard.userInteractionEnabled = YES; - _officalIndicateRegard.image = [UIImage imageNamed:@"yumi_same_offical"]; - _officalIndicateRegard.hidden = YES; - } - return _officalIndicateRegard; -} - -- (UIView *)signEncourageRegard { - if (!_signEncourageRegard) { - _signEncourageRegard = [[UIView alloc] init]; - _signEncourageRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]; - CAShapeLayer * layer = [CAShapeLayer layer]; - layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, 79) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)].CGPath; - _signEncourageRegard.layer.mask = layer; - } - return _signEncourageRegard; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _burlywoodRegard; -} - -- (UILabel *)signSequencignation { - if (!_signSequencignation) { - _signSequencignation = [[UILabel alloc] init]; - _signSequencignation.font = [UIFont systemFontOfSize:12];; - _signSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _signSequencignation.numberOfLines = 2; - } - return _signSequencignation; -} - - -- (NSMutableArray *)consumerPhtotGarment { - if (!_consumerPhtotGarment) { - _consumerPhtotGarment = [NSMutableArray array]; - } - return _consumerPhtotGarment; -} - -- (ConsumerAppearance *)intelligenceportraitAppearance { - if (!_intelligenceportraitAppearance) { - _intelligenceportraitAppearance = [[ConsumerAppearance alloc] init]; - } - return _intelligenceportraitAppearance; -} - -- (UIImageView *)copysIdIndicateRegard { - if (!_copysIdIndicateRegard) { - _copysIdIndicateRegard = [[UIImageView alloc] init]; - _copysIdIndicateRegard.userInteractionEnabled = YES; - _copysIdIndicateRegard.image = [UIImage imageNamed:@"yumi_center_user_id_copy_white"]; - _copysIdIndicateRegard.hidden = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(copysIdRecognition)]; - [_copysIdIndicateRegard addGestureRecognizer:tap]; - } - return _copysIdIndicateRegard; -} - -@end diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractPresentRegard.h b/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractPresentRegard.h deleted file mode 100644 index 0f5de109..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractPresentRegard.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMMineUserInfoGiftView.h -// YUMI -// -// Created by YUMI on 2022/6/15. -// - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeConsumerAbstractPresentRegard : UIView -@property (nonatomic,strong) NSArray *datasource; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractPresentRegard.m b/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractPresentRegard.m deleted file mode 100644 index 9cc5a1b1..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractPresentRegard.m +++ /dev/null @@ -1,92 +0,0 @@ -// -// YMMineUserInfoGiftView.m -// YUMI -// -// Created by YUMI on 2022/6/15. -// - -#import "YUMIManeConsumerAbstractPresentRegard.h" -#import -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "YUMIManeAtomicPresentAssembletionRegardElement.h" -#import "YUMIManeConsumerAbstractDispossessAssembletionRegardElement.h" - -@interface YUMIManeConsumerAbstractPresentRegard () -@property (nonatomic,strong) UICollectionView *collectionView; -@end - -@implementation YUMIManeConsumerAbstractPresentRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - [self addSubview:self.collectionView]; -} - -- (void)initChildLyRestrictions { - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; -} -#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource -- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { - return self.datasource.count > 0? CGSizeMake(51, 65) : CGSizeMake(KScreenWidth - 30, 65 * 3 + 30); -} - -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMIManeAtomicPresentAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIManeAtomicPresentAssembletionRegardElement class]) forIndexPath:indexPath]; - cell.giftInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; - } - - YUMIManeConsumerAbstractDispossessAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIManeConsumerAbstractDispossessAssembletionRegardElement class]) forIndexPath:indexPath]; - cell.isPresentWentirety = YES; - return cell; -} -#pragma mark - JXCategoryListContentViewDelegate -- (UIView *)listView { - return self; -} - -#pragma mark - Getters And Setters -- (void)setDatasource:(NSArray *)datasource { - _datasource = datasource; - [self.collectionView reloadData]; -} - -- (UICollectionView *)collectionView{ - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.minimumInteritemSpacing = (KScreenWidth - 15 *2 - 10 * 2 -51 * 5) / 3.0;; - layout.minimumLineSpacing = 10; - layout.sectionInset = UIEdgeInsetsMake(0, 10, 0, 10); - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.scrollEnabled = NO; - _collectionView.backgroundColor = [UIColor clearColor]; - [_collectionView registerClass:[YUMIManeAtomicPresentAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIManeAtomicPresentAssembletionRegardElement class])]; - [_collectionView registerClass:[YUMIManeConsumerAbstractDispossessAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIManeConsumerAbstractDispossessAssembletionRegardElement class])]; - - } - return _collectionView; -} - - - -@end diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractReputationSolitaireRegard.h b/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractReputationSolitaireRegard.h deleted file mode 100644 index 6fe6f69e..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractReputationSolitaireRegard.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMMineUserInfoVoiceCardView.h -// YUMI -// -// Created by YUMI on 2022/4/15. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ManeCommunicationSolitaireStatementAbstractMatrix; -@interface YUMIManeConsumerAbstractReputationSolitaireRegard : UIView -@property (nonatomic,assign, readonly) BOOL isPlaying; -@property (nonatomic,strong) ManeCommunicationSolitaireStatementAbstractMatrix *reputationAbstract; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractReputationSolitaireRegard.m b/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractReputationSolitaireRegard.m deleted file mode 100644 index 98286ef6..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/MineInfo/YUMIManeConsumerAbstractReputationSolitaireRegard.m +++ /dev/null @@ -1,187 +0,0 @@ -// -// YMMineUserInfoVoiceCardView.m -// YUMI -// -// Created by YUMI on 2022/4/15. -// - -#import "YUMIManeConsumerAbstractReputationSolitaireRegard.h" -#import -#import -#import "UIImage+Utils.h" -#import "UIButton+EnlargeTouchArea.h" -#import "DJDKMIMOMColor.h" -#import "NSArray+Safe.h" -#import "ManeCommunicationSolitaireStatementAbstractMatrix.h" -#import "YUMICommunicationSolitaireDisporterExecutive.h" - -@interface YUMIManeConsumerAbstractReputationSolitaireRegard () -@property (nonatomic,strong) UIImageView *encourageIndicteRegard; -@property (nonatomic,strong) UIButton *playButton; -@property (nonatomic,strong) UIImageView *bookIndicteRegard; -@property (nonatomic,assign) BOOL isPlaying; -@end - -@implementation YUMIManeConsumerAbstractReputationSolitaireRegard - -- (void)dealloc { - self.isPlaying = NO; - [self.bookIndicteRegard stopAnimating]; -} - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.encourageIndicteRegard]; - [self.encourageIndicteRegard addSubview:self.playButton]; - [self.encourageIndicteRegard addSubview:self.bookIndicteRegard]; -} - -- (void)initChildLyRestrictions { - [self.encourageIndicteRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.top.bottom.mas_equalTo(self); - make.right.mas_equalTo(self).offset(13); - }]; - - [self.playButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(15, 15)); - make.left.mas_equalTo(self.encourageIndicteRegard).offset(6); - make.centerY.mas_equalTo(self.encourageIndicteRegard); - }]; - - [self.bookIndicteRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(60, 20)); - make.centerY.mas_equalTo(self.encourageIndicteRegard); - make.left.mas_equalTo(self.playButton.mas_right).offset(7); - }]; -} - -- (void)prohibitiportBtutonPerformance:(UIButton *)sender { - sender.selected = !sender.selected; - if (!self.isPlaying) { - if(self.reputationAbstract.propVals.count) { - NSString * url = [self.reputationAbstract.propVals secureGroalTowardsIndictowardsrix1:0]; - NSArray * nameArray = [url componentsSeparatedByString:@"/"]; - NSString * fileName = @"daeplay"; - if (nameArray.count > 0) { - fileName = nameArray.lastObject; - } - - NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"mineSkillCardVoice"]; - NSString *fullPath = [filePath stringByAppendingPathComponent:fileName]; - NSLog(@"下载的路径:%@", fullPath); - if ([[NSFileManager defaultManager] fileExistsAtPath:fullPath]) { - self.isPlaying = YES; - sender.selected = YES; - [self.bookIndicteRegard startAnimating]; - [[YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance] prohibitiporterReputtowardsionAboutRoute:fullPath completionBlock:^{ - self.isPlaying = NO; - [self.bookIndicteRegard stopAnimating]; - sender.selected = NO; - self.bookIndicteRegard.image = [UIImage imageNamed:@"yumi_center_voice_shengyin_32"]; - [[YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance] suspeindManual]; - }]; - } else { - if (![[NSFileManager defaultManager] fileExistsAtPath:fullPath]) { - NSFileManager *fileMgr = [[NSFileManager alloc] init]; - NSError * error; - [fileMgr createDirectoryAtPath:filePath withIntermediateDirectories:YES attributes:nil error:&error]; - NSLog(@"%@", error.description); - } - [self downchamberVocalmusicAboutAccurtowardseConstitute:fileName musicUrl:url completion:^(BOOL isSuccess, NSString *editAudioPath) { - self.isPlaying = YES; - sender.selected = YES; - [self.bookIndicteRegard startAnimating]; - [[YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance] prohibitiporterReputtowardsionAboutRoute:editAudioPath completionBlock:^{ - self.isPlaying = NO; - sender.selected = NO; - [self.bookIndicteRegard stopAnimating]; - self.bookIndicteRegard.image = [UIImage imageNamed:@"yumi_center_voice_shengyin_32"]; - [[YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance] suspeindManual]; - }]; - }]; - } - } - } else { - self.isPlaying = NO; - sender.selected = NO; - [self.bookIndicteRegard stopAnimating]; - self.bookIndicteRegard.image = [UIImage imageNamed:@"yumi_center_voice_shengyin_32"]; - [[YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance] suspeindManual]; - } -} - -- (void)downchamberVocalmusicAboutAccurtowardseConstitute:(NSString *)fileName musicUrl:(NSString *)musicUrl completion:(void (^) (BOOL isSuccess, NSString *editAudioPath))completion { - AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; - NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:musicUrl]]; - NSURLSessionDownloadTask *download = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) { - } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) { - NSString *filePath = [[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"mineSkillCardVoice"] stringByAppendingPathComponent:fileName]; - return [NSURL fileURLWithPath:filePath]; - } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) { - if (!error) { - completion(YES, filePath.path); - } else { - completion(NO, nil); - } - }]; - [download resume]; -} -#pragma mark - Getters And Setters -- (UIImageView *)encourageIndicteRegard { - if (!_encourageIndicteRegard) { - _encourageIndicteRegard = [[UIImageView alloc] init]; - _encourageIndicteRegard.userInteractionEnabled = YES; - _encourageIndicteRegard.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xF8F8F4), UIColorFromRGB(0xE7FBFD)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(77, 25)]; - _encourageIndicteRegard.layer.masksToBounds = YES; - _encourageIndicteRegard.layer.cornerRadius = 25/2; - } - return _encourageIndicteRegard; -} - -- (UIButton *)playButton { - if (!_playButton) { - _playButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_playButton setImage:[UIImage imageNamed:@"yumi_center_user_gen_skill_card_voice_play"] forState:UIControlStateNormal]; - [_playButton setImage:[UIImage imageNamed:@"yumi_center_user_gen_skill_card_voice_pause"] forState:UIControlStateSelected]; - [_playButton addTarget:self action:@selector(prohibitiportBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_playButton setEnlargeEdgeAboutApex:8 right:10 bottom:8 left:10]; - } - return _playButton; -} - -- (UIImageView *)bookIndicteRegard { - if (!_bookIndicteRegard) { - _bookIndicteRegard = [[UIImageView alloc] init]; - _bookIndicteRegard.userInteractionEnabled = YES; - _bookIndicteRegard.image = [UIImage imageNamed:@"yumi_center_voice_shengyin_32"]; - NSMutableArray * array = [NSMutableArray array]; - for (int i = 0 ; i< 40; i++) { - UIImage * image; - if ( i < 10) { - image = [UIImage imageNamed:[NSString stringWithFormat:@"mine_voice_shengyin_0%d", i]]; - } else { - image = [UIImage imageNamed:[NSString stringWithFormat:@"mine_voice_shengyin_%d", i]]; - } - if (image) { - [array addObject:image]; - } - - } - _bookIndicteRegard.animationImages = array; - _bookIndicteRegard.animationDuration = 1.2; - _bookIndicteRegard.animationRepeatCount = HUGE; - } - return _bookIndicteRegard; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/SubViews/PINoblemanCenterView.h b/YuMi/Modules/YMMine/View/SubViews/PINoblemanCenterView.h deleted file mode 100644 index 5e9f2879..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/PINoblemanCenterView.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// PINoblemanCenterView.h -// YuMi -// -// Created by duoban on 2023/7/7. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface PINoblemanCenterView : UIView - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/PINoblemanCenterView.m b/YuMi/Modules/YMMine/View/SubViews/PINoblemanCenterView.m deleted file mode 100644 index 611db64a..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/PINoblemanCenterView.m +++ /dev/null @@ -1,152 +0,0 @@ -// -// PINoblemanCenterView.m -// YuMi -// -// Created by duoban on 2023/7/7. -// - -#import "PINoblemanCenterView.h" -@interface PINoblemanCenterView() -@property (nonatomic, strong) UIImageView *bgImageView; -@property (nonatomic,strong) NetIndicateRegard *nobleIconImage; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UILabel *descLabel; -@property (nonatomic, strong) UIImageView *arrowImageView; -@property (nonatomic, strong) UIView *backProgressView; -@property (nonatomic, strong) UIImageView *currentProgressView; -@property (nonatomic, strong) UILabel *nextLevelLabel; -@end -@implementation PINoblemanCenterView - --(instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if(self){ - [self installUI]; - [self installConstraints]; - } - return self; -} --(void)installUI{ - [self addSubview:self.bgImageView]; - [self addSubview:self.titleLabel]; - [self addSubview:self.descLabel]; - [self addSubview:self.backProgressView]; - [self addSubview:self.arrowImageView]; - [self.backProgressView addSubview:self.currentProgressView]; - [self.backProgressView addSubview:self.nextLevelLabel]; -} --(void)installConstraints{ - [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(0); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(16); - make.leading.mas_equalTo(16); - make.trailing.mas_equalTo(0); - make.height.mas_equalTo(18); - }]; - [self.descLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(2); - make.leading.mas_equalTo(16); - make.trailing.mas_lessThanOrEqualTo(-16); - }]; - - [self.backProgressView mas_makeConstraints:^(MASConstraintMaker *make) { - make.leading.trailing.mas_equalTo(self).inset(12); - make.height.mas_equalTo(10); - make.bottom.mas_equalTo(-5); - }]; - [self.currentProgressView mas_makeConstraints:^(MASConstraintMaker *make) { - make.leading.top.bottom.mas_equalTo(self.backProgressView); - make.width.mas_equalTo(0); - }]; - [self.nextLevelLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.trailing.mas_equalTo(-4); - make.centerY.mas_equalTo(self.backProgressView); - }]; - [self.arrowImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(4); - make.height.mas_equalTo(6); - make.leading.equalTo(self.descLabel.mas_trailing).mas_offset(3); - make.centerY.equalTo(self.descLabel); - }]; -} -#pragma mark - 懒加载 -- (UIImageView *)bgImageView { - if (!_bgImageView) { - _bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pi_mine_noble_entrance_noNoble"]]; - _bgImageView.contentMode = UIViewContentModeScaleAspectFit; - } - return _bgImageView; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - _titleLabel.textColor = UIColorFromRGB(0x93570B); - _titleLabel.text = YMLocalizedString(@"PINoblemanCenterView1"); - } - return _titleLabel; -} - -- (UILabel *)descLabel { - if (!_descLabel) { - _descLabel = [[UILabel alloc] init]; - _descLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightRegular]; - _descLabel.textColor = UIColorFromRGB(0xAA6F29); - _descLabel.text = YMLocalizedString(@"PINoblemanCenterView2"); - _descLabel.numberOfLines = 0; - } - return _descLabel; -} - -- (NetIndicateRegard*)nobleIconImage { - if (!_nobleIconImage) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - _nobleIconImage = [[NetIndicateRegard alloc] initWithConfig:config]; - _nobleIconImage.contentMode = UIViewContentModeScaleAspectFill; - } - return _nobleIconImage; -} - -- (UIView *)backProgressView { - if (!_backProgressView) { - _backProgressView = [[UIView alloc] init]; - _backProgressView.backgroundColor = UIColorFromRGB(0x7F5DFF); - _backProgressView.layer.cornerRadius = 5; - _backProgressView.layer.masksToBounds = YES; - _backProgressView.hidden = YES; - } - return _backProgressView; -} - -- (UIImageView *)currentProgressView { - if (!_currentProgressView) { - _currentProgressView = [[UIImageView alloc] init]; - UIImage *image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFFFFFF),UIColorFromRGB(0xFFFFFF)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)]; - _currentProgressView.image = image; - _currentProgressView.layer.cornerRadius = 5; - _currentProgressView.layer.masksToBounds = YES; - } - return _currentProgressView; -} - -- (UILabel *)nextLevelLabel { - if (!_nextLevelLabel) { - _nextLevelLabel = [[UILabel alloc] init]; - _nextLevelLabel.font = [UIFont systemFontOfSize:8]; - _nextLevelLabel.textColor = [UIColor whiteColor]; - _nextLevelLabel.hidden = YES; - } - return _nextLevelLabel; -} --(UIImageView *)arrowImageView{ - if (!_arrowImageView){ - _arrowImageView = [UIImageView new]; - _arrowImageView.image = [UIImage imageNamed:@"pi_mine_head_noble_arrow"]; - } - return _arrowImageView; -} -@end diff --git a/YuMi/Modules/YMMine/View/SubViews/Recharge/XPMineRechageHeadView.h b/YuMi/Modules/YMMine/View/SubViews/Recharge/XPMineRechageHeadView.h new file mode 100644 index 00000000..abd3b7e6 --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/Recharge/XPMineRechageHeadView.h @@ -0,0 +1,17 @@ +// +// YMMineRechageHeadView.h +// YUMI +// +// Created by YUMI on 2021/9/24. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class WalletInfoModel; +@interface XPMineRechageHeadView : UIView +///钱包信息 +@property (nonatomic,strong) WalletInfoModel *walletInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/Recharge/XPMineRechageHeadView.m b/YuMi/Modules/YMMine/View/SubViews/Recharge/XPMineRechageHeadView.m new file mode 100644 index 00000000..def68cf6 --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/Recharge/XPMineRechageHeadView.m @@ -0,0 +1,138 @@ +// +// YMMineRechageHeadView.m +// YUMI +// +// Created by YUMI on 2021/9/24. +// + +#import "XPMineRechageHeadView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +///Model +#import "WalletInfoModel.h" + +@interface XPMineRechageHeadView () +///大的背景 +@property (nonatomic,strong) UIImageView *backImageView; +///底部的背景 +@property (nonatomic,strong) UIImageView *bottomBackImg; +///显示钻石图标 +@property (nonatomic,strong) UIImageView *coinImageView; +///显示我的钻石 +@property (nonatomic,strong) UILabel *coinLabel; +///显示钻石数 +@property (nonatomic,strong) UILabel *amountLabel; + +@end + + +@implementation XPMineRechageHeadView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initView]; + [self initContrations]; + } + return self; +} + +#pragma mark - Private Method +- (void)initView { + [self addSubview:self.backImageView]; + [self.backImageView addSubview:self.bottomBackImg]; + [self.bottomBackImg addSubview:self.coinImageView]; + [self.bottomBackImg addSubview:self.coinLabel]; + [self.bottomBackImg addSubview:self.amountLabel]; +} + +- (void)initContrations { + self.frame = CGRectMake(0, 0, KScreenWidth, 190 + kSafeAreaTopHeight); + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + [self.bottomBackImg mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.backImageView); + make.height.mas_equalTo(110); + }]; + + [self.coinImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(21, 21)); + make.top.mas_equalTo(self.bottomBackImg).offset(23); + make.right.mas_equalTo(self.coinLabel.mas_left).offset(-4); + }]; + + [self.coinLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.coinImageView); + make.centerX.mas_equalTo(self.bottomBackImg.mas_centerX).offset(12); + }]; + + [self.amountLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.bottomBackImg); + make.top.mas_equalTo(self.coinImageView.mas_bottom).offset(1); + }]; +} + +#pragma mark - Getters And Setters +- (void)setWalletInfo:(WalletInfoModel *)walletInfo { + _walletInfo = walletInfo; + if (_walletInfo) { + self.amountLabel.text = walletInfo.diamonds; + } +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.image = [UIImage imageNamed:@"mine_recharge_header_bg"]; + _backImageView.layer.masksToBounds = YES; + _backImageView.contentMode = UIViewContentModeScaleAspectFill; + } + return _backImageView; +} + +- (UIImageView *)bottomBackImg { + if (!_bottomBackImg) { + _bottomBackImg = [[UIImageView alloc] init]; + _bottomBackImg.userInteractionEnabled = YES; + _bottomBackImg.image = [UIImage imageNamed:@"mine_recharge_coin_bg"]; + _bottomBackImg.layer.masksToBounds = YES; + _bottomBackImg.contentMode = UIViewContentModeScaleAspectFit; + } + return _bottomBackImg; +} + +- (UIImageView *)coinImageView { + if (!_coinImageView) { + _coinImageView = [[UIImageView alloc] init]; + _coinImageView.userInteractionEnabled = YES; + _coinImageView.image = [UIImage imageNamed:@"common_diamond"]; + } + return _coinImageView; +} + +- (UILabel *)coinLabel { + if (!_coinLabel) { + _coinLabel = [[UILabel alloc] init]; + _coinLabel.text = YMLocalizedString(@"XPMineRechageHeadView0"); + _coinLabel.font = [UIFont systemFontOfSize:13]; + _coinLabel.textColor = [UIColor whiteColor]; + } + return _coinLabel; +} + +- (UILabel *)amountLabel { + if (!_amountLabel) { + _amountLabel = [[UILabel alloc] init]; + _amountLabel.font = [UIFont boldSystemFontOfSize:36]; + _amountLabel.textColor = [DJDKMIMOMColor appMainColor]; + _amountLabel.textAlignment = NSTextAlignmentCenter; + } + return _amountLabel; +} + +@end diff --git a/YuMi/Modules/YMMine/View/SubViews/Recharge/XPMineRechargeNavView.h b/YuMi/Modules/YMMine/View/SubViews/Recharge/XPMineRechargeNavView.h new file mode 100644 index 00000000..383c9e7b --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/Recharge/XPMineRechargeNavView.h @@ -0,0 +1,21 @@ +// +// YMMineRechargeNavView.h +// YUMI +// +// Created by YUMI on 2021/9/26. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPMineRechargeNavView; +@protocol XPMineRechargeNavViewDelegate +///点击了返回按钮 +- (void)xPMineRechargeNavView:(XPMineRechargeNavView *)view didClickBackButton:(UIButton *)sender; +@end +@interface XPMineRechargeNavView : UIView +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/Recharge/XPMineRechargeNavView.m b/YuMi/Modules/YMMine/View/SubViews/Recharge/XPMineRechargeNavView.m new file mode 100644 index 00000000..8d900d5d --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/Recharge/XPMineRechargeNavView.m @@ -0,0 +1,82 @@ +// +// YMMineRechargeNavView.m +// YUMI +// +// Created by YUMI on 2021/9/26. +// + +#import "XPMineRechargeNavView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIButton+EnlargeTouchArea.h" + +@interface XPMineRechargeNavView () +///返回按钮 +@property (nonatomic,strong) UIButton *backButton; +///显示文本 +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPMineRechargeNavView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Response +- (void)backButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineRechargeNavView:didClickBackButton:)]) { + [self.delegate xPMineRechargeNavView:self didClickBackButton:sender]; + } +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + [self addSubview:self.backButton]; + [self addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(15); + make.centerY.equalTo(self.mas_bottom).mas_offset(-22); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.centerY.equalTo(self.mas_bottom).mas_offset(-22); + }]; +} + +#pragma mark - Getters And Setters +- (UIButton *)backButton { + if (!_backButton) { + _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_backButton setImage:[UIImage imageNamed:@"home_search_white_back"] forState:UIControlStateNormal]; + _backButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; + [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_backButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + } + return _backButton; +} + + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.font = [UIFont systemFontOfSize:15]; + _titleLabel.text = YMLocalizedString(@"XPMineRechargeNavView0"); + _titleLabel.textColor = [UIColor whiteColor]; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMMine/View/SubViews/Recharge/YUMIManeRechageIntelligenceRegard.h b/YuMi/Modules/YMMine/View/SubViews/Recharge/YUMIManeRechageIntelligenceRegard.h deleted file mode 100644 index dcf44dd7..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/Recharge/YUMIManeRechageIntelligenceRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineRechageHeadView.h -// YUMI -// -// Created by YUMI on 2021/9/24. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class RamparatetAbstractMatrix; -@interface YUMIManeRechageIntelligenceRegard : UIView -@property (nonatomic,strong) RamparatetAbstractMatrix *wentiretyetAbstract; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/Recharge/YUMIManeRechageIntelligenceRegard.m b/YuMi/Modules/YMMine/View/SubViews/Recharge/YUMIManeRechageIntelligenceRegard.m deleted file mode 100644 index 067bbced..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/Recharge/YUMIManeRechageIntelligenceRegard.m +++ /dev/null @@ -1,130 +0,0 @@ -// -// YMMineRechageHeadView.m -// YUMI -// -// Created by YUMI on 2021/9/24. -// - -#import "YUMIManeRechageIntelligenceRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "RamparatetAbstractMatrix.h" - -@interface YUMIManeRechageIntelligenceRegard () -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) UIImageView *extremeEncourageIndi; -@property (nonatomic,strong) UIImageView *tangerineIndicateRegard; -@property (nonatomic,strong) UILabel *tangerineSequencignation; -@property (nonatomic,strong) UILabel *amountSequencignation; - -@end - - -@implementation YUMIManeRechageIntelligenceRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initRegard]; - [self initContrtowardsions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initRegard { - [self addSubview:self.encourageIndicateRegard]; - [self.encourageIndicateRegard addSubview:self.extremeEncourageIndi]; - [self.extremeEncourageIndi addSubview:self.tangerineIndicateRegard]; - [self.extremeEncourageIndi addSubview:self.tangerineSequencignation]; - [self.extremeEncourageIndi addSubview:self.amountSequencignation]; -} - -- (void)initContrtowardsions { - self.frame = CGRectMake(0, 0, KScreenWidth, 190 + kSafeAreaTopHeight); - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.extremeEncourageIndi mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.encourageIndicateRegard); - make.height.mas_equalTo(110); - }]; - - [self.tangerineIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(21, 21)); - make.top.mas_equalTo(self.extremeEncourageIndi).offset(23); - make.right.mas_equalTo(self.tangerineSequencignation.mas_left).offset(-4); - }]; - - [self.tangerineSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.tangerineIndicateRegard); - make.centerX.mas_equalTo(self.extremeEncourageIndi.mas_centerX).offset(12); - }]; - - [self.amountSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.extremeEncourageIndi); - make.top.mas_equalTo(self.tangerineIndicateRegard.mas_bottom).offset(1); - }]; -} - -#pragma mark - Getters And Setters -- (void)setWentiretyetAbstract:(RamparatetAbstractMatrix *)wentiretyetAbstract { - _wentiretyetAbstract = wentiretyetAbstract; - if (_wentiretyetAbstract) { - self.amountSequencignation.text = wentiretyetAbstract.diamonds; - } -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_center_recharge_header_background"]; - _encourageIndicateRegard.layer.masksToBounds = YES; - _encourageIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _encourageIndicateRegard; -} - -- (UIImageView *)extremeEncourageIndi { - if (!_extremeEncourageIndi) { - _extremeEncourageIndi = [[UIImageView alloc] init]; - _extremeEncourageIndi.userInteractionEnabled = YES; - _extremeEncourageIndi.image = [UIImage imageNamed:@"yumi_center_recharge_coin_background"]; - _extremeEncourageIndi.layer.masksToBounds = YES; - _extremeEncourageIndi.contentMode = UIViewContentModeScaleAspectFit; - } - return _extremeEncourageIndi; -} - -- (UIImageView *)tangerineIndicateRegard { - if (!_tangerineIndicateRegard) { - _tangerineIndicateRegard = [[UIImageView alloc] init]; - _tangerineIndicateRegard.userInteractionEnabled = YES; - _tangerineIndicateRegard.image = [UIImage imageNamed:@"yumi_same_diamond"]; - } - return _tangerineIndicateRegard; -} - -- (UILabel *)tangerineSequencignation { - if (!_tangerineSequencignation) { - _tangerineSequencignation = [[UILabel alloc] init]; - _tangerineSequencignation.text = YMLocalizedString(@"YUMI_Mine_Rechage_Head_View_0"); - _tangerineSequencignation.font = [UIFont systemFontOfSize:13]; - _tangerineSequencignation.textColor = [UIColor whiteColor]; - } - return _tangerineSequencignation; -} - -- (UILabel *)amountSequencignation { - if (!_amountSequencignation) { - _amountSequencignation = [[UILabel alloc] init]; - _amountSequencignation.font = [UIFont boldSystemFontOfSize:36]; - _amountSequencignation.textColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - _amountSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _amountSequencignation; -} - -@end diff --git a/YuMi/Modules/YMMine/View/SubViews/Recharge/YUMIManeReindictNevRegard.h b/YuMi/Modules/YMMine/View/SubViews/Recharge/YUMIManeReindictNevRegard.h deleted file mode 100644 index 39087e02..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/Recharge/YUMIManeReindictNevRegard.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMMineRechargeNavView.h -// YUMI -// -// Created by YUMI on 2021/9/26. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIManeReindictNevRegard; -@protocol FBCManeReindictNevRegardRepresendtation -- (void)fBCManeReindictNevRegard:(YUMIManeReindictNevRegard *)view didClickBackButton:(UIButton *)sender; -@end -@interface YUMIManeReindictNevRegard : UIView -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/Recharge/YUMIManeReindictNevRegard.m b/YuMi/Modules/YMMine/View/SubViews/Recharge/YUMIManeReindictNevRegard.m deleted file mode 100644 index 89815cbb..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/Recharge/YUMIManeReindictNevRegard.m +++ /dev/null @@ -1,78 +0,0 @@ -// -// YMMineRechargeNavView.m -// YUMI -// -// Created by YUMI on 2021/9/26. -// - -#import "YUMIManeReindictNevRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIButton+EnlargeTouchArea.h" - -@interface YUMIManeReindictNevRegard () -@property (nonatomic,strong) UIButton *backButton; -@property (nonatomic,strong) UILabel *titleLabel; -@end - -@implementation YUMIManeReindictNevRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Response -- (void)encourageBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCManeReindictNevRegard:didClickBackButton:)]) { - [self.delegate fBCManeReindictNevRegard:self didClickBackButton:sender]; - } -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - [self addSubview:self.backButton]; - [self addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(15); - make.centerY.equalTo(self.mas_bottom).mas_offset(-22); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.centerY.equalTo(self.mas_bottom).mas_offset(-22); - }]; -} - -#pragma mark - Getters And Setters -- (UIButton *)backButton { - if (!_backButton) { - _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backButton setImage:[UIImage imageNamed:@"yumi_main_search_white_back"] forState:UIControlStateNormal]; - _backButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; - [_backButton addTarget:self action:@selector(encourageBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_backButton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:10]; - } - return _backButton; -} - - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.font = [UIFont systemFontOfSize:15]; - _titleLabel.text = YMLocalizedString(@"YUMI_Mine_Recharge_Nav_View_0"); - _titleLabel.textColor = [UIColor whiteColor]; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMMine/View/SubViews/XPFootPrintNavView.h b/YuMi/Modules/YMMine/View/SubViews/XPFootPrintNavView.h new file mode 100644 index 00000000..df872991 --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/XPFootPrintNavView.h @@ -0,0 +1,29 @@ +// +// YMFootPrintNavView.h +// YUMI +// +// Created by YUMI on 2022/7/26. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class XPFootPrintNavView; +@protocol XPFootPrintNavViewDelegate + +///点击了返回按钮 +- (void)xPFootPrintNavView:(XPFootPrintNavView *)view didClickBackButton:(UIButton *)sender; +///点击了清除按钮 +- (void)xPFootPrintNavView:(XPFootPrintNavView *)view didClickClearButton:(UIButton *)sender; + +@end + +@interface XPFootPrintNavView : UIView + +///代理 +@property (nonatomic,weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/XPFootPrintNavView.m b/YuMi/Modules/YMMine/View/SubViews/XPFootPrintNavView.m new file mode 100644 index 00000000..5d307247 --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/XPFootPrintNavView.m @@ -0,0 +1,109 @@ +// +// YMFootPrintNavView.m +// YUMI +// +// Created by YUMI on 2022/7/26. +// + +#import "XPFootPrintNavView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIButton+EnlargeTouchArea.h" + +@interface XPFootPrintNavView () + +///返回按钮 +@property (nonatomic,strong) UIButton *backButton; +///显示文本 +@property (nonatomic,strong) UILabel *titleLabel; +///设置按钮 +@property (nonatomic, strong) UIButton *settingButton; + +@end + + +@implementation XPFootPrintNavView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Response +- (void)backButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPFootPrintNavView:didClickBackButton:)]) { + [self.delegate xPFootPrintNavView:self didClickBackButton:sender]; + } +} + +- (void)clearButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPFootPrintNavView:didClickClearButton:)]) { + [self.delegate xPFootPrintNavView:self didClickClearButton:sender]; + } +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + [self addSubview:self.backButton]; + [self addSubview:self.titleLabel]; + [self addSubview:self.settingButton]; +} + +- (void)initSubViewConstraints { + [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(15); + make.centerY.equalTo(self.mas_bottom).mas_offset(-22); + }]; + [self.settingButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-15); + make.centerY.equalTo(self.mas_bottom).mas_offset(-22); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.centerY.equalTo(self.mas_bottom).mas_offset(-22); + }]; +} + +#pragma mark - Getters And Setters +- (UIButton *)backButton { + if (!_backButton) { + _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateNormal]; + _backButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; + [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_backButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + } + return _backButton; +} + +- (UIButton *)settingButton { + if (!_settingButton) { + _settingButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_settingButton setTitle:YMLocalizedString(@"XPFootPrintNavView0") forState:UIControlStateNormal]; + _settingButton.titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + [_settingButton setTitleColor:[DJDKMIMOMColor textThirdColor] forState:UIControlStateNormal]; + [_settingButton addTarget:self action:@selector(clearButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_settingButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + } + return _settingButton; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; + _titleLabel.text = YMLocalizedString(@"XPFootPrintNavView1"); + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMMine/View/SubViews/XPMineAccountView.h b/YuMi/Modules/YMMine/View/SubViews/XPMineAccountView.h new file mode 100644 index 00000000..35d2aff2 --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/XPMineAccountView.h @@ -0,0 +1,18 @@ +// +// YMMineAccountView.h +// YUMI +// +// Created by YUMI on 2022/7/22. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineAccountView : UIView + +@property (nonatomic, copy) NSString *diamonds; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/XPMineAccountView.m b/YuMi/Modules/YMMine/View/SubViews/XPMineAccountView.m new file mode 100644 index 00000000..2c51fe05 --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/XPMineAccountView.m @@ -0,0 +1,92 @@ +// +// YMMineAccountView.m +// YUMI +// +// Created by YUMI on 2022/7/22. +// + +#import "XPMineAccountView.h" +#import +#import "DJDKMIMOMColor.h" + +@interface XPMineAccountView () + +@property (nonatomic, strong) UIImageView *bgImageView; +@property (nonatomic, strong) UILabel *coinLabel; +@property (nonatomic, strong) UILabel *descLabel; + +@end + +@implementation XPMineAccountView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.bgImageView]; + [self addSubview:self.coinLabel]; + [self addSubview:self.descLabel]; +} + +- (void)initSubViewConstraints { + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; + + [self.coinLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(13); + make.left.mas_equalTo(14); + make.right.mas_equalTo(0); + make.height.mas_equalTo(24); + }]; + [self.descLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.coinLabel); + make.top.mas_equalTo(self.coinLabel.mas_bottom); + make.height.mas_equalTo(14); + }]; +} + +- (void)setDiamonds:(NSString *)diamonds { + self.coinLabel.text = diamonds; +} + +#pragma mark - Getters And Setters +- (UIImageView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"mine_head_account_bg"]]; + _bgImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _bgImageView; +} + +- (UILabel *)descLabel { + if (!_descLabel) { + _descLabel = [[UILabel alloc] init]; + _descLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + _descLabel.textColor = UIColorRGBAlpha(0x000000, 0.3); + _descLabel.text = YMLocalizedString(@"XPMineAccountView0"); + } + return _descLabel; +} + + +- (UILabel *)coinLabel { + if (!_coinLabel) { + _coinLabel = [[UILabel alloc] init]; + _coinLabel.font = [UIFont systemFontOfSize:20 weight:UIFontWeightBold]; + _coinLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _coinLabel; +} + + + +@end diff --git a/YuMi/Modules/YMMine/View/SubViews/XPMineFriendNumberView.h b/YuMi/Modules/YMMine/View/SubViews/XPMineFriendNumberView.h new file mode 100644 index 00000000..daabdfbf --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/XPMineFriendNumberView.h @@ -0,0 +1,25 @@ +// +// YMMineFriendNumberView.h +// YUMI +// +// Created by YUMI on 2021/12/21. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineFriendNumberView : UIView + +///显示数量 +@property (nonatomic,copy) NSString *number; +///显示标题 +@property (nonatomic,copy) NSString *title; +///是否为访客记录 +@property (nonatomic, assign) BOOL isVisitor; +///访客角标 +@property (nonatomic, assign) NSInteger visitorNum; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/XPMineFriendNumberView.m b/YuMi/Modules/YMMine/View/SubViews/XPMineFriendNumberView.m new file mode 100644 index 00000000..7b5daf1d --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/XPMineFriendNumberView.m @@ -0,0 +1,151 @@ +// +// YMMineFriendNumberView.m +// YUMI +// +// Created by YUMI on 2021/12/21. +// + +#import "XPMineFriendNumberView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import + +@interface XPMineFriendNumberView () +///显示个数 +@property (nonatomic,strong) UILabel *numberLabel; +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +//访客记录未读数量 +@property (nonatomic, strong) UILabel *unReadLabel; + +@end + +@implementation XPMineFriendNumberView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.numberLabel]; + [self addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.titleLabel.mas_bottom); + }]; + + [self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self); + make.centerX.mas_equalTo(self); + make.height.mas_equalTo(24); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.numberLabel.mas_bottom).offset(4); + make.left.right.mas_equalTo(self); + }]; +} + +- (NSAttributedString *)attributedStringWithLineSpace:(CGFloat)lineSpace str:(NSString *)str{ + NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] init]; + NSMutableAttributedString *title = [[NSMutableAttributedString alloc] initWithString:str attributes:@{NSForegroundColorAttributeName : UIColorFromRGB(0xffffff), NSFontAttributeName: [UIFont systemFontOfSize:11]}]; + [attributedString appendAttributedString:title]; + attributedString.yy_alignment = NSTextAlignmentCenter; + return attributedString; +} + +- (CGFloat)getWidthWithContent:(NSString *)content height:(CGFloat)height font:(CGFloat)font{ + + CGRect rect = [content boundingRectWithSize:CGSizeMake(999, height) + options:NSStringDrawingUsesLineFragmentOrigin + attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:font]} + context:nil]; + return rect.size.width; +} + +#pragma mark - Getters And Setters +- (void)setTitle:(NSString *)title { + self.titleLabel.text = title; +} + +- (void)setNumber:(NSString *)number { + self.numberLabel.text = number; +} + +- (void)setIsVisitor:(BOOL)isVisitor { + if (isVisitor) { + [self addSubview:self.unReadLabel]; + [self.unReadLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.numberLabel.mas_right).mas_offset(5); + make.height.mas_equalTo(15); + make.width.mas_equalTo(15); + make.top.mas_equalTo(self.numberLabel); + }]; + } +} + +- (void)setVisitorNum:(NSInteger)visitorNum { + if (visitorNum > 0) { + self.unReadLabel.hidden = NO; + self.unReadLabel.attributedText = [self attributedStringWithLineSpace:10 str:[NSString stringWithFormat:@"%zd", visitorNum]]; + CGFloat width = [self getWidthWithContent:[NSString stringWithFormat:@"%zd", visitorNum] height:15 font:11]; + if (visitorNum < 10) { + width = 7; + } + [self.unReadLabel mas_remakeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.numberLabel.mas_right).mas_offset(5); + make.width.mas_equalTo(width + 8); + make.top.mas_equalTo(self.numberLabel); + make.height.mas_equalTo(15); + }]; + } else { + self.unReadLabel.hidden = YES; + } +} + +- (UILabel *)numberLabel { + if (!_numberLabel) { + _numberLabel = [[UILabel alloc] init]; + _numberLabel.font = [UIFont boldSystemFontOfSize:20]; + _numberLabel.textAlignment = NSTextAlignmentCenter; + _numberLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _numberLabel; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _titleLabel.textColor = [DJDKMIMOMColor textThirdColor]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} + +- (UILabel *)unReadLabel { + if (!_unReadLabel) { + _unReadLabel = [[UILabel alloc] init]; + _unReadLabel.font = [UIFont systemFontOfSize:11]; + _unReadLabel.textColor = [UIColor whiteColor]; + _unReadLabel.backgroundColor = UIColorFromRGB(0xFF5B55); + _unReadLabel.layer.cornerRadius = 7.5; + _unReadLabel.layer.masksToBounds = YES; + _unReadLabel.textAlignment = NSTextAlignmentCenter; + [_unReadLabel sizeToFit]; + _unReadLabel.hidden = YES; + } + return _unReadLabel ; +} + +@end diff --git a/YuMi/Modules/YMMine/View/SubViews/XPMineHeadView.h b/YuMi/Modules/YMMine/View/SubViews/XPMineHeadView.h new file mode 100644 index 00000000..acdd29a9 --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/XPMineHeadView.h @@ -0,0 +1,41 @@ +// +// YMMineHeadView.h +// YUMI +// +// Created by YUMI on 2021/9/16. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +typedef void(^CompletionHandler)(NSMutableAttributedString *); +@class UserInfoModel,XPMineHeadView, WalletInfoModel,NobleCenterModel; +@protocol XPMineHeadViewDelegate +///点击了头像 +- (void)xPMineHeadView:(XPMineHeadView *)view didClickAvatar:(UserInfoModel *)info; +///点击了关注 +- (void)xpMineHeadViewClickAttention; +///点击了粉丝 +- (void)xpMineHeadViewClickFans; +///点击了账户中心 +- (void)xpMineHeadViewClickAcount; +///点击了贵族中心 +- (void)xPMineHeadViewCliekNobleCenter; +@end +@interface XPMineHeadView : UIView +///用户信息 +@property (nonatomic,strong) UserInfoModel *userInfo; +@property (nonatomic, strong) WalletInfoModel *walletInfo; +@property (nonatomic, strong) NobleCenterModel *nobleInfo; +///代理 +@property (nonatomic,assign) id delegate; +///访客未读数量 +@property (nonatomic, assign) NSInteger visitorUnReadCount; + +///当装扮铭牌时,我的页面中不需要显示铭牌标识 +- (void)creatNameplateLevleAttribute:(UserInfoModel *)userInfo complete:(CompletionHandler)complete; +///id +- (NSMutableAttributedString *)creatNameplateIdLabelAttribute:(UserInfoModel *)userInfo ; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/XPMineHeadView.m b/YuMi/Modules/YMMine/View/SubViews/XPMineHeadView.m new file mode 100644 index 00000000..73cef8bb --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/XPMineHeadView.m @@ -0,0 +1,585 @@ +// +// XPMineHeadView.m +// YuMi +// +// Created by YuMi on 2021/9/16. +// + +#import "XPMineHeadView.h" +///Third +#import +#import +///Tool +#import "UIImage+Utils.h" +#import "DJDKMIMOMColor.h" +///View +#import "NetImageView.h" +#import "XPNobleCenterEntranceView.h" +#import "UIImage+Utils.h" +#import "XPMineFriendNumberView.h" +#import "XPMineAccountView.h" +///Model +#import "UserInfoModel.h" +#import "WalletInfoModel.h" + +@interface XPMineHeadView () +///头像 +@property (nonatomic,strong) NetImageView * avatarImageView; +///name的容器 +@property (nonatomic,strong) UIStackView *nameStackView; +///贵族等级icon +@property (nonatomic,strong) NetImageView *nobleImageView; +///名字 +@property (nonatomic,strong) UILabel *nameLabel; +///id 的容器 +@property (nonatomic,strong) UIStackView *idStackView; +///id +@property (nonatomic,strong) UILabel *idLabel; +///性别 +@property (nonatomic,strong) UIImageView *sexImageView; +///显示等级 +@property (nonatomic,strong) YYLabel *levelLabel; +///关注、粉丝的容器 +@property (nonatomic,strong) UIStackView *attentionStackView; +///关注 +@property (nonatomic,strong) XPMineFriendNumberView *attentionView; +///粉丝 +@property (nonatomic,strong) XPMineFriendNumberView *fansView; +///账户中心 +@property (nonatomic, strong) XPMineAccountView *accountView; +///贵族中心 +@property (nonatomic, strong) XPNobleCenterEntranceView *nobleEntranceView; +//审核View +@property (nonatomic,strong) UIImageView *reviewView; +@end + +@implementation XPMineHeadView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + [self addSubview:self.avatarImageView]; + [self addSubview:self.nobleImageView]; + [self addSubview:self.nameStackView]; + [self addSubview:self.idStackView]; + [self.nameStackView addArrangedSubview:self.nameLabel]; + [self.idStackView addArrangedSubview:self.idLabel]; + [self.idStackView addArrangedSubview:self.sexImageView]; + [self addSubview:self.levelLabel]; + + [self addSubview:self.attentionStackView]; + [self.attentionStackView addArrangedSubview:self.attentionView]; + [self.attentionStackView addArrangedSubview:self.fansView]; + + [self addSubview:self.accountView]; + [self addSubview:self.nobleEntranceView]; + [self.avatarImageView addSubview:self.reviewView]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAvatarImageView)]; + [self.avatarImageView addGestureRecognizer:tap]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(74, 74)); + make.leading.mas_equalTo(self).offset(15); + make.top.mas_equalTo(self).offset(49 + kStatusBarHeight); + }]; + + [self.nobleImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(12); + make.top.mas_equalTo(self.avatarImageView).mas_offset(4); + make.width.height.mas_equalTo(20); + }]; + + [self.nameStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.nobleImageView); + make.left.mas_equalTo(self.nobleImageView.mas_right).mas_offset(5); + make.height.mas_equalTo(16); + make.right.mas_equalTo(-15); + }]; + + [self.idStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nobleImageView); + make.top.mas_equalTo(self.nameStackView.mas_bottom).offset(13); + make.height.mas_equalTo(16); + }]; + + [self.levelLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nobleImageView); + make.top.mas_equalTo(self.idStackView.mas_bottom).offset(5); + }]; + + [self.attentionStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.avatarImageView).mas_offset(37); + make.height.mas_equalTo(40); + + make.width.mas_equalTo(108); + make.right.mas_equalTo(0); + }]; + CGFloat width = (KScreenWidth - 30) / 4; + CGFloat height = 45; + [self.attentionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(54, 34)); + }]; + + [self.fansView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(54, 34)); + }]; + + + width = (KScreenWidth - 30 - 13) * 0.5; + height = width * 60 / 166; + [self.accountView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.avatarImageView.mas_bottom).mas_offset(23); + make.size.mas_equalTo(CGSizeMake(width, height)); + make.left.mas_equalTo(15); + }]; + [self.nobleEntranceView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.accountView); + make.size.mas_equalTo(CGSizeMake(width, height)); + make.trailing.mas_equalTo(-15); + }]; + [self.reviewView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.equalTo(self.avatarImageView); + make.height.mas_equalTo(20); + }]; +} + +#pragma mark - Action +- (void)tapAvatarImageView { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineHeadView:didClickAvatar:)]) { + [self.delegate xPMineHeadView:self didClickAvatar:self.userInfo]; + } +} + +///粉丝 +- (void)tapFansRecognizer { + if (self.delegate && [self.delegate respondsToSelector:@selector(xpMineHeadViewClickFans)]) { + [self.delegate xpMineHeadViewClickFans]; + } +} +///关注 +- (void)tapAttentionRecognizer { + if (self.delegate && [self.delegate respondsToSelector:@selector(xpMineHeadViewClickAttention)]) { + [self.delegate xpMineHeadViewClickAttention]; + } +} +///账号中心 +- (void)tapAccountrecognizer { + if (self.delegate && [self.delegate respondsToSelector:@selector(xpMineHeadViewClickAcount)]) { + [self.delegate xpMineHeadViewClickAcount]; + } +} +///贵族中心 +- (void)tapNobleCenterrecognizer { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineHeadViewCliekNobleCenter)]) { + [self.delegate xPMineHeadViewCliekNobleCenter]; + } +} + +#pragma mark - NSMutableAttributedString +-(NSInteger) getMonth:(long )time +{ + NSDate *date = [NSDate dateWithTimeIntervalSince1970:time/1000]; + NSCalendar* calendar = [NSCalendar currentCalendar]; + NSDateComponents* components = [calendar components:NSCalendarUnitMonth fromDate:date]; + NSInteger month = components.month; + return month; +} + +- (NSInteger) getDay:(long) time +{ + NSDate *date = [NSDate dateWithTimeIntervalSince1970:time/1000]; + NSCalendar* calendar = [NSCalendar currentCalendar]; + NSDateComponents* components = [calendar components:NSCalendarUnitDay fromDate:date]; + NSInteger day = components.day; + return day; +} + +- (NSString *)calculateConstellationWithMonth:(long)time +{ + NSString *astroString = YMLocalizedString(@"XPMineHeadView0"); + NSString *astroFormat = @"102123444543"; + NSString *result; + + NSInteger month = [self getMonth:time]; + NSInteger day = [self getDay:time]; + + if (month<1 || month>12 || day<1 || day>31){ + return YMLocalizedString(@"XPMineHeadView1"); + } + + if(month==2 && day>29) + { + return YMLocalizedString(@"XPMineHeadView2"); + }else if(month==4 || month==6 || month==9 || month==11) { + if (day>30) { + return YMLocalizedString(@"XPMineHeadView3"); + } + } + + result=[NSString stringWithFormat:@"%@",[astroString substringWithRange:NSMakeRange(month*2-(day < [[astroFormat substringWithRange:NSMakeRange((month-1), 1)] intValue] - (-19))*2,2)]]; + + return [NSString stringWithFormat:YMLocalizedString(@"XPMineHeadView6"),result]; +} + +/// 生成一个图片的富文本 +/// @param imageUrl 网络图片的地址 +- (NSMutableAttributedString *)createUrlImageAttribute:(NSString *)imageUrl { + NetImageConfig *config = [[NetImageConfig alloc]init]; + ///先这样吧 + config.autoLoad = YES; + NetImageView *imageView = [[NetImageView alloc]initWithUrl:imageUrl config:config]; + UIImage* image = imageView.image; + if (image) { + CGFloat height = image.size.height > 0 ? image.size.height : 1; + CGFloat scale = image.size.width / height ; + imageView.bounds = CGRectMake(0, 0, 20 * scale, 20); + } else { + NSURL *imgUrl = [NSURL URLWithString:imageUrl]; + UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; + CGFloat height = myImage.size.height > 0 ? myImage.size.height : 1; + CGFloat scale = myImage.size.width / height; + imageView.bounds = CGRectMake(0, 0, 20 * scale, 20); + } + imageView.layer.masksToBounds = YES; + imageView.contentMode = UIViewContentModeScaleAspectFit; + NSMutableAttributedString * attrString = [NSMutableAttributedString yy_attachmentStringWithContent:imageView contentMode:UIViewContentModeScaleAspectFit attachmentSize:CGSizeMake(imageView.bounds.size.width, imageView.bounds.size.height) alignToFont:[UIFont systemFontOfSize:15.0] alignment:YYTextVerticalAlignmentCenter]; + return attrString; +} + +/// 占位的富文本 +/// @param width 需要的间隙 +- (NSMutableAttributedString *)createSapceAttribute:(CGFloat)width { + UIView *spaceView = [[UIView alloc]init]; + spaceView.backgroundColor = [UIColor clearColor]; + spaceView.bounds = CGRectMake(0, 0, width, 10); + NSMutableAttributedString * attribute = [NSMutableAttributedString yy_attachmentStringWithContent:spaceView contentMode:UIViewContentModeScaleAspectFit attachmentSize:CGSizeMake(spaceView.frame.size.width, spaceView.frame.size.height) alignToFont:[UIFont systemFontOfSize:15.0] alignment:YYTextVerticalAlignmentCenter]; + return attribute; +} + +//dateLabel +- (NSMutableAttributedString *)makeDateLabel:(long)birth{ + NSString *dateStr = [NSString stringWithFormat:@" %@ ",[self calculateConstellationWithMonth:birth]]; + UIButton *dataButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [dataButton setTitle:dateStr forState:UIControlStateNormal]; + dataButton.titleLabel.font = [UIFont boldSystemFontOfSize:10]; + [dataButton setTitleColor:UIColorFromRGB(0xFFFFFF) forState:UIControlStateNormal]; + dataButton.frame = CGRectMake(0, 0, 45, 17); + dataButton.layer.masksToBounds = YES; + dataButton.layer.cornerRadius = 17/2; + [dataButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + NSMutableAttributedString * dateLabelString = [NSMutableAttributedString yy_attachmentStringWithContent:dataButton contentMode:UIViewContentModeScaleAspectFit attachmentSize:CGSizeMake(dataButton.frame.size.width, dataButton.frame.size.height) alignToFont:[UIFont systemFontOfSize:11] alignment:YYTextVerticalAlignmentCenter]; + return dateLabelString; +} + +///铭牌 +- (NSMutableAttributedString *)createNameplateAttibute:(NSString *)tagName image:(NSString *)imageName textFont:(UIFont *)textFont { + NetImageConfig *config = [[NetImageConfig alloc]init]; + ///先这样吧 + config.autoLoad = YES; + NetImageView *imageView = [[NetImageView alloc]initWithUrl:imageName config:config]; + UIImage* image = imageView.image; + if (image) { + CGFloat scale = image.size.width / (image.size.height > 0 ? image.size.height : 1); + imageView.bounds = CGRectMake(0, 0, 20 * scale, 20); + } else { + NSURL *imgUrl = [NSURL URLWithString:imageName]; + UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; + CGFloat scale = myImage.size.width / (myImage.size.height > 0 ? myImage.size.height : 1); + if (scale == 0) { + imageView.bounds = CGRectMake(0, 0, 60, 20); + }else { + imageView.bounds = CGRectMake(0, 0, 20 * scale, 20); + } + } + imageView.contentMode = UIViewContentModeScaleAspectFit; + // 铭牌文字 + UILabel *label = [[UILabel alloc] init]; + label.textAlignment = NSTextAlignmentCenter; + label.font = [UIFont boldSystemFontOfSize:12]; + label.adjustsFontSizeToFitWidth = YES; + label.textColor = UIColor.whiteColor; + label.text = tagName; + [imageView addSubview:label]; + [label mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(27); + make.right.mas_equalTo(-8); + make.centerY.mas_equalTo(0); + }]; + NSMutableAttributedString *string = [NSMutableAttributedString yy_attachmentStringWithContent:imageView contentMode:UIViewContentModeScaleAspectFit attachmentSize:imageView.bounds.size alignToFont:[UIFont boldSystemFontOfSize:12] alignment:YYTextVerticalAlignmentCenter]; + return string; +} +//复制id +-(void)copyNameAction{ + [XNDJTDDLoadingTool showSuccessWithMessage:YMLocalizedString(@"XPMineHeadView8")]; + UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; + pasteboard. string = [NSString stringWithFormat:@"%ld", (long)_userInfo.erbanNo]; + +} +- (NSMutableAttributedString *)creatNameplateIdLabelAttribute:(UserInfoModel *)userInfo{ + + UIFont *font = [UIFont systemFontOfSize:14]; + NSString *text = [NSString stringWithFormat:@"ID:%ld", (long)userInfo.erbanNo]; + NSMutableAttributedString *textAtt = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@"%@ ",text] attributes:@{NSForegroundColorAttributeName:UIColorFromRGB(0x6D6B89)}]; + NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; + UIImage *iconImage = [UIImage imageNamed:@"user_card_copy_id1"];; + attachment.bounds = CGRectMake(0, roundf(font.capHeight - iconImage.size.height)/2.f, iconImage.size.width, iconImage.size.height); + attachment.image = iconImage; + [textAtt insertAttributedString:[NSMutableAttributedString attributedStringWithAttachment:attachment] atIndex:textAtt.length]; + return textAtt; + + +} +///当装扮铭牌时,我的页面中不需要显示铭牌标识 +- (void)creatNameplateLevleAttribute:(UserInfoModel *)userInfo complete:(nonnull CompletionHandler)complete{ + NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] init]; + if (!userInfo) { + if(complete){ + complete(attributedString); + } + return; + } + + + //主播认证 + if (userInfo.nameplateWord.length > 0 && userInfo.nameplatePic.length>0) { + [self createNameplateAttibute:userInfo.nameplateWord image:userInfo.nameplatePic textFont:[UIFont systemFontOfSize:9]]; + [attributedString appendAttributedString:[self createSapceAttribute:2]]; + } + + // userRank 用户级别 + if (userInfo.userLevelVo.experUrl) { + [attributedString appendAttributedString:[self createUrlImageAttribute:userInfo.userLevelVo.experUrl]]; + [attributedString appendAttributedString:[self createSapceAttribute:2]]; + } + + //charmRank 魅力等级 + if (userInfo.userLevelVo.charmUrl) { + [attributedString appendAttributedString:[self createUrlImageAttribute:userInfo.userLevelVo.charmUrl]]; + [attributedString appendAttributedString:[self createSapceAttribute:2]]; + } + + // constellation 星座 + if (userInfo.birth) { + [attributedString appendAttributedString:[self makeDateLabel:userInfo.birth]]; + } + + if(complete){ + complete(attributedString); + } + + + + + + +} + + +#pragma mark - Getters And Setters +- (void)setUserInfo:(UserInfoModel *)userInfo { + _userInfo = userInfo; + if (_userInfo) { + self.idLabel.attributedText = userInfo.idAtt; + self.nameLabel.text = _userInfo.nick.length > 0 ? _userInfo.nick : @""; + self.avatarImageView.imageUrl = userInfo.avatar; + if (userInfo.isReview) { + self.reviewView.hidden = NO; + } else { + self.reviewView.hidden = YES; + self.avatarImageView.imageUrl = userInfo.avatar; + } + self.nobleImageView.imageUrl = userInfo.userVipInfoVO.vipIcon; + UIImage *nobleImage = self.nobleImageView.image; + if (nobleImage) { + CGFloat scale = nobleImage.size.width / nobleImage.size.height; + [self.nobleImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20* scale, 20)); + }]; + [self.nameStackView mas_updateConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nobleImageView.mas_right).mas_offset(5); + }]; + } else { + [self.nobleImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(0, 20)); + }]; + [self.nameStackView mas_updateConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nobleImageView.mas_right); + }]; + } + NSString * sexName; + if (userInfo.gender == GenderType_Male) { + sexName = @"common_male"; + } else { + sexName = @"common_female"; + } + self.sexImageView.image = [UIImage imageNamed:sexName]; + self.levelLabel.attributedText = _userInfo.levelAtt; + self.fansView.number = [NSString stringWithFormat:@"%ld",_userInfo.fansNum]; + self.attentionView.number = [NSString stringWithFormat:@"%ld",_userInfo.followNum]; + self.nobleEntranceView.vipInfo = userInfo.userVipInfoVO; + } +} + +- (void)setWalletInfo:(WalletInfoModel *)walletInfo { + self.accountView.diamonds = walletInfo.diamonds; +} +- (void)setNobleInfo:(NobleCenterModel *)nobleInfo { + self.nobleEntranceView.nobleInfo = nobleInfo; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.userInteractionEnabled = YES; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 37; + } + return _avatarImageView; +} + +- (UIStackView *)nameStackView { + if (!_nameStackView) { + _nameStackView = [[UIStackView alloc] init]; + _nameStackView.axis = UILayoutConstraintAxisHorizontal; + _nameStackView.distribution = UIStackViewDistributionFill; + _nameStackView.alignment = UIStackViewAlignmentCenter; + _nameStackView.spacing = 5; + } + return _nameStackView; +} + +- (NetImageView *)nobleImageView { + if (!_nobleImageView) { + _nobleImageView = [[NetImageView alloc] init]; + } + return _nobleImageView; +} + +- (UILabel *)nameLabel { + if (!_nameLabel) { + _nameLabel = [[UILabel alloc] init]; + _nameLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; + _nameLabel.textColor = [DJDKMIMOMColor colorWithHexString:@"#1F1A4E"]; + } + return _nameLabel; +} + +- (UIStackView *)idStackView { + if (!_idStackView) { + _idStackView = [[UIStackView alloc] init]; + _idStackView.axis = UILayoutConstraintAxisHorizontal; + _idStackView.distribution = UIStackViewDistributionFill; + _idStackView.alignment = UIStackViewAlignmentCenter; + _idStackView.spacing = 5; + } + return _idStackView; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.font = [UIFont systemFontOfSize:14]; + _idLabel.textColor = UIColorFromRGB(0x6D6B89); + _idLabel.userInteractionEnabled = YES; + UITapGestureRecognizer *longPress = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(copyNameAction)]; + [_idLabel addGestureRecognizer:longPress]; + } + return _idLabel; +} + +- (UIImageView *)sexImageView { + if (!_sexImageView) { + _sexImageView = [[UIImageView alloc] init]; + _sexImageView.userInteractionEnabled = YES; + } + return _sexImageView; +} + +- (YYLabel *)levelLabel { + if (!_levelLabel) { + _levelLabel = [[YYLabel alloc] init]; + _levelLabel.preferredMaxLayoutWidth = KScreenWidth - 88; + } + return _levelLabel; +} + +- (UIStackView *)attentionStackView { + if (!_attentionStackView) { + _attentionStackView = [[UIStackView alloc] init]; + _attentionStackView.axis = UILayoutConstraintAxisHorizontal; + _attentionStackView.distribution = UIStackViewDistributionFill; + _attentionStackView.alignment = UIStackViewAlignmentFill; + } + return _attentionStackView; +} + +- (XPMineFriendNumberView *)attentionView { + if (!_attentionView) { + _attentionView = [[XPMineFriendNumberView alloc] init]; + _attentionView.title = YMLocalizedString(@"XPMineHeadView4"); + _attentionView.number = @"0"; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAttentionRecognizer)]; + [_attentionView addGestureRecognizer:tap]; + } + return _attentionView; +} + +- (XPMineFriendNumberView *)fansView { + if (!_fansView) { + _fansView = [[XPMineFriendNumberView alloc] init]; + _fansView.title = YMLocalizedString(@"XPMineHeadView5"); + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapFansRecognizer)]; + [_fansView addGestureRecognizer:tap]; + } + return _fansView; +} + +- (XPMineAccountView *)accountView { + if (!_accountView) { + _accountView = [[XPMineAccountView alloc] init]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAccountrecognizer)]; + [_accountView addGestureRecognizer:tap]; + } + return _accountView; +} +- (XPNobleCenterEntranceView *)nobleEntranceView { + if (!_nobleEntranceView) { + _nobleEntranceView = [[XPNobleCenterEntranceView alloc] init]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapNobleCenterrecognizer)]; + [_nobleEntranceView addGestureRecognizer:tap]; + } + return _nobleEntranceView; +} +- (UIImageView *)reviewView{ + if (!_reviewView){ + _reviewView = [UIImageView new]; + _reviewView.hidden = YES; + _reviewView.image = [UIImage imageNamed:@"mine_avatar_reviewing"]; + UILabel *titleView = [[UILabel alloc] init]; + titleView.text = YMLocalizedString(@"XPMineHeadView7"); + titleView.font = [UIFont systemFontOfSize:11 weight:UIFontWeightRegular]; + titleView.textColor = [UIColor whiteColor]; + titleView.textAlignment = NSTextAlignmentCenter; + [_reviewView addSubview:titleView]; + [titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(_reviewView); + }]; + } + return _reviewView; +} +@end diff --git a/YuMi/Modules/YMMine/View/SubViews/XPMineModifPayPwdView.h b/YuMi/Modules/YMMine/View/SubViews/XPMineModifPayPwdView.h new file mode 100644 index 00000000..af21e2bd --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/XPMineModifPayPwdView.h @@ -0,0 +1,19 @@ +// +// YMMineModifPayPwdView.h +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineModifPayPwdView : UIView +///输入框 +@property (nonatomic,strong, readonly) UITextField *contentTextField; +///占位 +@property (nonatomic,copy) NSString *placeholder; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/XPMineModifPayPwdView.m b/YuMi/Modules/YMMine/View/SubViews/XPMineModifPayPwdView.m new file mode 100644 index 00000000..cb3e5fbf --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/XPMineModifPayPwdView.m @@ -0,0 +1,115 @@ +// +// YMMineModifPayPwdView.m +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import "XPMineModifPayPwdView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIButton+EnlargeTouchArea.h" + +@interface XPMineModifPayPwdView () +///输入框 +@property (nonatomic,strong) UITextField *contentTextField; +///控制显示或者隐藏 +@property (nonatomic,strong) UIButton *commandButton; +///分割线 +@property (nonatomic,strong) UIView * partLineView; +@end + +@implementation XPMineModifPayPwdView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Response +- (void)onClickHiddenBtn:(UIButton *)btn { + btn.selected = !btn.selected; + self.contentTextField.secureTextEntry = !self.contentTextField.secureTextEntry; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + [self addSubview:self.contentTextField]; + [self addSubview:self.commandButton]; + [self addSubview:self.partLineView]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(50); + }]; + + [self.contentTextField mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self).offset(15); + make.top.bottom.mas_equalTo(self); + }]; + + [self.commandButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self).offset(-32); + make.centerY.mas_equalTo(self.contentTextField); + make.left.mas_equalTo(self.contentTextField.mas_right).offset(10); + }]; + + [self.partLineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self).offset(5); + make.right.mas_equalTo(self).offset(-5); + make.bottom.mas_equalTo(self); + make.height.mas_equalTo(0.5); + }]; +} + +#pragma mark - Getters And Setters +- (void)setPlaceholder:(NSString *)placeholder { + _placeholder = placeholder; + self.contentTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholder attributes:@{NSFontAttributeName : self.contentTextField.font, NSForegroundColorAttributeName : [DJDKMIMOMColor secondTextColor]}]; +} + + +- (UIView *)partLineView { + if (!_partLineView) { + _partLineView = [[UIView alloc] init]; + _partLineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _partLineView; +} + +- (UITextField *)contentTextField { + if (!_contentTextField) { + _contentTextField = [[UITextField alloc] init]; + _contentTextField.secureTextEntry = YES; + _contentTextField.font = [UIFont systemFontOfSize:13]; + _contentTextField.textColor = [DJDKMIMOMColor mainTextColor]; + _contentTextField.tintColor = [DJDKMIMOMColor appMainColor]; + } + return _contentTextField; +} + +- (UIButton *)commandButton { + if (!_commandButton) { + _commandButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_commandButton setEnlargeEdgeWithTop:20 right:20 bottom:20 left:20]; + [_commandButton addTarget:self action:@selector(onClickHiddenBtn:) forControlEvents:UIControlEventTouchUpInside]; + [_commandButton setImage:[UIImage imageNamed:@"mine_setting_modif_pay_pwd_hidden"] forState:UIControlStateNormal]; + [_commandButton setImage:[UIImage imageNamed:@"mine_setting_modif_pay_pwd_show"] forState:UIControlStateSelected]; + _commandButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_commandButton setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + } + return _commandButton; +} + + + +@end diff --git a/YuMi/Modules/YMMine/View/SubViews/XPMineNewUserRechargeView.h b/YuMi/Modules/YMMine/View/SubViews/XPMineNewUserRechargeView.h new file mode 100644 index 00000000..4349742e --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/XPMineNewUserRechargeView.h @@ -0,0 +1,18 @@ +// +// YMMineNewUserRechargeView.h +// YUMI +// +// Created by YUMI on 2022/7/28. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineNewUserRechargeView : UIView + +@property (nonatomic, assign) long endTime; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/XPMineNewUserRechargeView.m b/YuMi/Modules/YMMine/View/SubViews/XPMineNewUserRechargeView.m new file mode 100644 index 00000000..464b34a0 --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/XPMineNewUserRechargeView.m @@ -0,0 +1,169 @@ +// +// YMMineNewUserRechargeView.m +// YUMI +// +// Created by YUMI on 2022/7/28. +// + +#import "XPMineNewUserRechargeView.h" +///Third +#import +///Tool +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "Timestamp.h" +///View + +@interface XPMineNewUserRechargeView () +///底部的底图 +@property (nonatomic,strong) UIImageView *backImageView; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; + +@end + +@implementation XPMineNewUserRechargeView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initEvents]; + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backImageView]; + [self.backImageView addSubview:self.nickLabel]; +} + +- (void)initSubViewConstraints { + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(0); + make.right.mas_equalTo(-6); + make.bottom.mas_equalTo(-2); + make.height.mas_equalTo(14); + }]; +} + +- (void)initEvents { + UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(roomMiniTag:)]; + pan.delaysTouchesBegan = YES; + [self addGestureRecognizer:pan]; +} + +#pragma mark - events +- (void)roomMiniTag:(UIPanGestureRecognizer*)p { + UIWindow *appWindow = [UIApplication sharedApplication].delegate.window; + CGPoint panPoint = [p locationInView:appWindow]; + if (p.state == UIGestureRecognizerStateBegan) { + self.alpha = 1; + } else if(p.state == UIGestureRecognizerStateChanged) { + self.center = CGPointMake(panPoint.x, panPoint.y); + } else if(p.state == UIGestureRecognizerStateEnded + || p.state == UIGestureRecognizerStateCancelled) { + self.alpha = 1; + CGFloat touchWidth = self.frame.size.width; + CGFloat touchHeight = self.frame.size.height; + CGFloat screenWidth = [[UIScreen mainScreen] bounds].size.width; + CGFloat screenHeight = [[UIScreen mainScreen] bounds].size.height; + // fabs 是取绝对值的意思 + CGFloat left = fabs(panPoint.x); + CGFloat right = fabs(screenWidth - left); + CGFloat top = fabs(panPoint.y); + CGFloat bottom = fabs(screenHeight - top); + CGFloat minSpace = 0; + minSpace = MIN(MIN(MIN(top, left), bottom), right); + CGPoint newCenter; + CGFloat targetY = 0; + //校正Y + if (panPoint.y < 15 + touchHeight / 2.0) { + targetY = 15 + touchHeight / 2.0; + }else if (panPoint.y > (screenHeight - touchHeight / 2.0 - 15)) { + targetY = screenHeight - touchHeight / 2.0 - 15; + }else{ + targetY = panPoint.y; + } + + if (minSpace == left) { + newCenter = CGPointMake(touchWidth/2.0, targetY); + }else if (minSpace == right) { + newCenter = CGPointMake(touchWidth/2.0, targetY); + }else if (minSpace == top) { + newCenter = CGPointMake(touchWidth/2.0, touchWidth / 3); + }else { + newCenter = CGPointMake(touchWidth/2.0, screenHeight - touchWidth / 3); + } + [UIView animateWithDuration:0.25 animations:^{ + if (newCenter.y + self.frame.size.height / 2 > KScreenHeight - kSafeAreaBottomHeight - 44) { + self.center = CGPointMake(newCenter.x, KScreenHeight - self.frame.size.height / 2 - kSafeAreaBottomHeight - 44); + }else { + self.center = newCenter; + } + }]; + } +} + +#pragma mark - Getters And Setters +- (void)setEndTime:(long)endTime { + _endTime = endTime; + [Timestamp getInternetDateWithSuccess:^(NSTimeInterval timeInterval) { + timeInterval = timeInterval * 1000; + long aTime = (endTime - timeInterval) / 1000; + [self countTimeWithTime:aTime]; + } failure:^(NSError * _Nonnull error) { + NSDate *datenow = [NSDate date];//现在时间 + long time2 = (long)([datenow timeIntervalSince1970]*1000); + long aTime = (endTime - time2) / 1000; + [self countTimeWithTime:aTime]; + }]; +} + +- (void)countTimeWithTime:(long)time { + NSInteger minute; + NSInteger hour; + NSInteger day = time / 24 / 3600; + time = time - day * 24 * 3600; + hour = time / 3600; + time = time - hour * 3600; + minute = time / 60; + if (day > 0) { + if (hour > 0) { + self.nickLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPMineNewUserRechargeView0"), day, hour, minute]; + } else { + self.nickLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPMineNewUserRechargeView1"), day, minute]; + } + } else { + if (hour > 0) { + self.nickLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPMineNewUserRechargeView2"), hour, minute]; + } else { + self.nickLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPMineNewUserRechargeView3"), minute]; + } + } +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.image = [UIImage imageNamed:@"NewUserRecharge_entrance_bg"]; + } + return _backImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:8 weight:UIFontWeightMedium]; + _nickLabel.textColor = [UIColor whiteColor]; + _nickLabel.textAlignment = NSTextAlignmentCenter; + } + return _nickLabel; +} + +@end diff --git a/YuMi/Modules/YMMine/View/SubViews/XPMinePayPwdInputView.h b/YuMi/Modules/YMMine/View/SubViews/XPMinePayPwdInputView.h new file mode 100644 index 00000000..83bb8585 --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/XPMinePayPwdInputView.h @@ -0,0 +1,39 @@ +// +// YMMinePayPwdInputView.h +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +///输入框类型 +///TTPayPwdInputViewTypePwd-密码 +///TTPayPwdInputViewTypeRepeatPwd-重复密码 +///TTPayPwdInputViewTypeVerification-验证码 +typedef NS_ENUM(NSInteger, XPPayPwdInputViewType) { + XPPayPwdInputViewTypePwd, + XPPayPwdInputViewTypeRepeatPwd, + XPPayPwdInputViewTypeVerification +}; + +@interface XPMinePayPwdInputView : UIView + +@property (nonatomic, assign) XPPayPwdInputViewType type;//输入框类型 + +@property (nonatomic, copy) void (^fetchVerificationHandler)(void);//获取验证码 + +/// 获取当前文本框内容 +- (NSString *)contentText; + +/// 验证码倒计时更新 +/// @param seconds 秒数 +- (void)verificationCountdownUpdate:(NSInteger)seconds; + +/// 验证码倒计时结束 +- (void)verificationCountdownFinish; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/XPMinePayPwdInputView.m b/YuMi/Modules/YMMine/View/SubViews/XPMinePayPwdInputView.m new file mode 100644 index 00000000..b90657ea --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/XPMinePayPwdInputView.m @@ -0,0 +1,202 @@ +// +// YMMinePayPwdInputView.m +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import "XPMinePayPwdInputView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIButton+EnlargeTouchArea.h" +@interface XPMinePayPwdInputView() +///分割线 +@property (nonatomic, strong) UIView *lineView; +///输入框 +@property (nonatomic, strong) UITextField *contentTextField; +///状态按钮(隐藏显示密码、获取验证码、倒计时) +@property (nonatomic, strong) UIButton *statusButton; +///是否密文显示 +@property (nonatomic, assign) BOOL isSecurity; +///内容长度限制 +@property (nonatomic, assign) int contentLimit; +///键盘类型 +@property (nonatomic, assign) UIKeyboardType keyboardType; +///提示文本 +@property (nonatomic, strong) NSString *placeholder; + +@end + + +@implementation XPMinePayPwdInputView + +- (instancetype)init { + if (self = [super init]) { + [self initSubviews]; + } + return self; +} + +- (void)initSubviews { + self.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + [self addSubview:self.contentTextField]; + [self addSubview:self.statusButton]; + [self addSubview:self.lineView]; + [self makeConstriants]; +} + +- (void)makeConstriants { + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self).inset(25); + make.bottom.mas_equalTo(0); + make.height.mas_equalTo(0.5); + }]; + + [self.statusButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.lineView); + make.bottom.mas_equalTo(-10); + }]; + + [self.contentTextField mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.statusButton); + make.left.mas_equalTo(self.lineView); + make.right.mas_equalTo(self.statusButton.mas_left).offset(-10); + make.height.mas_equalTo(44); + }]; +} + +#pragma mark - Event + +- (void)edingtingChange { + if (self.contentLimit && self.contentTextField.text.length > self.contentLimit) { + self.contentTextField.text = [self.contentTextField.text substringToIndex:self.contentLimit]; + } +} + +- (void)onClickStatusButton:(UIButton *)sender { + if (self.type == XPPayPwdInputViewTypeVerification) { + !self.fetchVerificationHandler ?: self.fetchVerificationHandler(); + return; + } + + sender.selected = !sender.selected; + self.isSecurity = !sender.selected; +} + +#pragma mark - Public +- (NSString *)contentText { + return self.contentTextField.text; +} + +/// 验证码倒计时更新 +/// @param seconds 秒数 +- (void)verificationCountdownUpdate:(NSInteger)seconds { + if (self.type == XPPayPwdInputViewTypeVerification) { + [self.statusButton setTitle:[NSString stringWithFormat:YMLocalizedString(@"XPMinePayPwdInputView0"), (long)seconds] forState:UIControlStateNormal]; + [self.statusButton setEnabled:NO]; + [self.statusButton setTitleColor:[DJDKMIMOMColor appMainColor] forState:UIControlStateNormal]; + } +} + +/// 验证码倒计时结束 +- (void)verificationCountdownFinish { + if (self.type == XPPayPwdInputViewTypeVerification) { + [self.statusButton setTitle:YMLocalizedString(@"XPMinePayPwdInputView1") forState:UIControlStateNormal]; + [self.statusButton setEnabled:YES]; + [self.statusButton setTitleColor:[DJDKMIMOMColor appMainColor] forState:UIControlStateNormal]; + } +} + +#pragma mark - Getters And Setters +- (void)setType:(XPPayPwdInputViewType)type { + _type = type; + + switch (type) { + case XPPayPwdInputViewTypePwd: + { + self.contentLimit = 6; + self.isSecurity = YES; + self.keyboardType = UIKeyboardTypeNumberPad; + self.placeholder = [NSString stringWithFormat:YMLocalizedString(@"XPMinePayPwdInputView2")]; + } + break; + case XPPayPwdInputViewTypeRepeatPwd: + { + self.contentLimit = 6; + self.isSecurity = YES; + self.keyboardType = UIKeyboardTypeNumberPad; + self.placeholder = [NSString stringWithFormat:YMLocalizedString(@"XPMinePayPwdInputView3")]; + } + break; + case XPPayPwdInputViewTypeVerification: + { + self.contentLimit = 5; + self.isSecurity = NO; + self.keyboardType = UIKeyboardTypeNumberPad; + self.placeholder = YMLocalizedString(@"XPMinePayPwdInputView4"); + + [self.statusButton setTitle:YMLocalizedString(@"XPMinePayPwdInputView5") forState:UIControlStateNormal]; + [self.statusButton setTitleColor:[DJDKMIMOMColor appMainColor] forState:UIControlStateNormal]; + [self.statusButton setImage:nil forState:UIControlStateNormal]; + [self.statusButton setImage:nil forState:UIControlStateSelected]; + } + break; + default: + break; + } +} + +- (void)setIsSecurity:(BOOL)isSecurity { + _isSecurity = isSecurity; + + self.statusButton.selected = !isSecurity; + self.contentTextField.secureTextEntry = isSecurity; +} + +- (void)setPlaceholder:(NSString *)placeholder { + _placeholder = placeholder; + self.contentTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholder attributes:@{NSFontAttributeName : self.contentTextField.font, NSForegroundColorAttributeName : [DJDKMIMOMColor secondTextColor]}]; +} + +- (void)setKeyboardType:(UIKeyboardType)keyboardType { + _keyboardType = keyboardType; + self.contentTextField.keyboardType = keyboardType; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _lineView; +} + +- (UITextField *)contentTextField { + if (!_contentTextField) { + _contentTextField = [[UITextField alloc] init]; + _contentTextField.secureTextEntry = YES; + _contentTextField.font = [UIFont systemFontOfSize:13]; + _contentTextField.textColor = [DJDKMIMOMColor mainTextColor]; + [_contentTextField addTarget:self action:@selector(edingtingChange) forControlEvents:UIControlEventEditingChanged]; + } + return _contentTextField; +} + +- (UIButton *)statusButton { + if (!_statusButton) { + _statusButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_statusButton addTarget:self action:@selector(onClickStatusButton:) forControlEvents:UIControlEventTouchUpInside]; + [_statusButton setImage:[UIImage imageNamed:@"mine_setting_pay_password_hidden"] forState:UIControlStateNormal]; + [_statusButton setImage:[UIImage imageNamed:@"mine_setting_pay_password_show"] forState:UIControlStateSelected]; + _statusButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_statusButton setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + [_statusButton setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + [_statusButton setEnlargeEdgeWithTop:8 right:8 bottom:8 left:8]; + } + return _statusButton; +} + +@end diff --git a/YuMi/Modules/YMMine/View/SubViews/XPMineVerifIdentityView.h b/YuMi/Modules/YMMine/View/SubViews/XPMineVerifIdentityView.h new file mode 100644 index 00000000..28eab8c5 --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/XPMineVerifIdentityView.h @@ -0,0 +1,30 @@ +// +// YMMineVerifIdentityView.h +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSUInteger,XPMineVerifIdentityType ) { + XPMineVerifIdentityType_Phone, ///手机号 + XPMineVerifIdentityType_Sms,///验证码 +}; +typedef void(^VerifIdentitySmsCodeBlock)(UIButton *sender); +@interface XPMineVerifIdentityView : UIView +///输入框 +@property (nonatomic, strong, readonly) UITextField *contentTextField; +///发送验证码 +@property (nonatomic, strong, readonly) UIButton *smsCodeButton; +///点击了smsCode +@property (nonatomic,copy) VerifIdentitySmsCodeBlock smsCodeBlock; +/// +@property (nonatomic,assign) XPMineVerifIdentityType type; +///占位 +@property (nonatomic, strong) NSString *placeholder; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/XPMineVerifIdentityView.m b/YuMi/Modules/YMMine/View/SubViews/XPMineVerifIdentityView.m new file mode 100644 index 00000000..458f47a5 --- /dev/null +++ b/YuMi/Modules/YMMine/View/SubViews/XPMineVerifIdentityView.m @@ -0,0 +1,127 @@ +// +// YMMineVerifIdentityView.m +// YUMI +// +// Created by YUMI on 2021/9/18. +// + +#import "XPMineVerifIdentityView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" + +@interface XPMineVerifIdentityView () +/// +@property (nonatomic,strong) UIStackView *stackView; +///分割线 +@property (nonatomic, strong) UIView *lineView; +///输入框 +@property (nonatomic, strong) UITextField *contentTextField; +///发送验证码 +@property (nonatomic, strong) UIButton *smsCodeButton; +@end + +@implementation XPMineVerifIdentityView + + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Response +- (void)smsCodeButtonAction:(UIButton *)sender { + if (self.smsCodeBlock) { + self.smsCodeBlock(sender); + } +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.stackView]; + [self addSubview:self.lineView]; + + [self.stackView addArrangedSubview:self.contentTextField]; + [self.stackView addArrangedSubview:self.smsCodeButton]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(50); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self).offset(15); + make.right.mas_equalTo(self).offset(-32); + make.top.bottom.mas_equalTo(self); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self).offset(5); + make.right.mas_equalTo(self).offset(-5); + make.bottom.mas_equalTo(self); + make.height.mas_equalTo(1); + }]; +} + +#pragma mark - Getters And Setters +- (void)setType:(XPMineVerifIdentityType)type { + _type = type; + switch (_type) { + case XPMineVerifIdentityType_Phone: + self.smsCodeButton.hidden = YES; + break; + default: + break; + } +} + +- (void)setPlaceholder:(NSString *)placeholder { + _placeholder = placeholder; + self.contentTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholder attributes:@{NSFontAttributeName : self.contentTextField.font, NSForegroundColorAttributeName : [DJDKMIMOMColor secondTextColor]}]; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentCenter; + _stackView.spacing = 10; + } + return _stackView; +} + +- (UITextField *)contentTextField { + if (!_contentTextField) { + _contentTextField = [[UITextField alloc] init]; + _contentTextField.secureTextEntry = YES; + _contentTextField.font = [UIFont systemFontOfSize:13]; + _contentTextField.textColor = [DJDKMIMOMColor mainTextColor]; + _contentTextField.tintColor = [DJDKMIMOMColor appMainColor]; + } + return _contentTextField; +} + +- (UIButton *)smsCodeButton { + if (!_smsCodeButton) { + _smsCodeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_smsCodeButton setTitle:YMLocalizedString(@"XPMineVerifIdentityView0") forState:UIControlStateNormal]; + [_smsCodeButton setTitleColor:[DJDKMIMOMColor appMainColor] forState:UIControlStateNormal]; + [_smsCodeButton setTitleColor:[DJDKMIMOMColor appEmphasizeColor] forState:UIControlStateDisabled]; + _smsCodeButton.titleLabel.font = [UIFont systemFontOfSize:12]; + _smsCodeButton.layer.masksToBounds = YES; + _smsCodeButton.layer.cornerRadius = 10; + [_smsCodeButton addTarget:self action:@selector(smsCodeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_smsCodeButton setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + } + return _smsCodeButton; +} + +@end diff --git a/YuMi/Modules/YMMine/View/SubViews/YUMIManeAccountRegard.h b/YuMi/Modules/YMMine/View/SubViews/YUMIManeAccountRegard.h deleted file mode 100644 index 11430649..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/YUMIManeAccountRegard.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMMineAccountView.h -// YUMI -// -// Created by YUMI on 2022/7/22. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeAccountRegard : UIView - -@property (nonatomic, copy) NSString *diamonds; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/YUMIManeAccountRegard.m b/YuMi/Modules/YMMine/View/SubViews/YUMIManeAccountRegard.m deleted file mode 100644 index 97662e2b..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/YUMIManeAccountRegard.m +++ /dev/null @@ -1,92 +0,0 @@ -// -// YMMineAccountView.m -// YUMI -// -// Created by YUMI on 2022/7/22. -// - -#import "YUMIManeAccountRegard.h" -#import -#import "DJDKMIMOMColor.h" - -@interface YUMIManeAccountRegard () - -@property (nonatomic, strong) UIImageView *backgroundIndicateRegard; -@property (nonatomic, strong) UILabel *tangerineSequencignation; -@property (nonatomic, strong) UILabel *sequenceSequencignation; - -@end - -@implementation YUMIManeAccountRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backgroundIndicateRegard]; - [self addSubview:self.tangerineSequencignation]; - [self addSubview:self.sequenceSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(0); - }]; - - [self.tangerineSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(13); - make.left.mas_equalTo(14); - make.right.mas_equalTo(0); - make.height.mas_equalTo(24); - }]; - [self.sequenceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.tangerineSequencignation); - make.top.mas_equalTo(self.tangerineSequencignation.mas_bottom); - make.height.mas_equalTo(14); - }]; -} - -- (void)setDiamonds:(NSString *)diamonds { - self.tangerineSequencignation.text = diamonds; -} - -#pragma mark - Getters And Setters -- (UIImageView *)backgroundIndicateRegard { - if (!_backgroundIndicateRegard) { - _backgroundIndicateRegard = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yumi_center_head_account_background"]]; - _backgroundIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _backgroundIndicateRegard; -} - -- (UILabel *)sequenceSequencignation { - if (!_sequenceSequencignation) { - _sequenceSequencignation = [[UILabel alloc] init]; - _sequenceSequencignation.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - _sequenceSequencignation.textColor = UIColorRGBAlpha(0x000000, 0.3); - _sequenceSequencignation.text = YMLocalizedString(@"YUMI_Mine_Account_View_0"); - } - return _sequenceSequencignation; -} - - -- (UILabel *)tangerineSequencignation { - if (!_tangerineSequencignation) { - _tangerineSequencignation = [[UILabel alloc] init]; - _tangerineSequencignation.font = [UIFont systemFontOfSize:20 weight:UIFontWeightBold]; - _tangerineSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _tangerineSequencignation; -} - - - -@end diff --git a/YuMi/Modules/YMMine/View/SubViews/YUMIManeAssistantNumberRegard.h b/YuMi/Modules/YMMine/View/SubViews/YUMIManeAssistantNumberRegard.h deleted file mode 100644 index 1d0476fb..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/YUMIManeAssistantNumberRegard.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMMineFriendNumberView.h -// YUMI -// -// Created by YUMI on 2021/12/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeAssistantNumberRegard : UIView - -@property (nonatomic,copy) NSString *number; -@property (nonatomic,copy) NSString *title; -@property (nonatomic, assign) BOOL isVacationer; -@property (nonatomic, assign) NSInteger vacationerFigure; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/YUMIManeAssistantNumberRegard.m b/YuMi/Modules/YMMine/View/SubViews/YUMIManeAssistantNumberRegard.m deleted file mode 100644 index 168a8eb3..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/YUMIManeAssistantNumberRegard.m +++ /dev/null @@ -1,146 +0,0 @@ -// -// YMMineFriendNumberView.m -// YUMI -// -// Created by YUMI on 2021/12/21. -// - -#import "YUMIManeAssistantNumberRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import - -@interface YUMIManeAssistantNumberRegard () -@property (nonatomic,strong) UILabel *numberLabel; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic, strong) UILabel *unLireSequencignation; - -@end - -@implementation YUMIManeAssistantNumberRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.numberLabel]; - [self addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.titleLabel.mas_bottom); - }]; - - [self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self); - make.centerX.mas_equalTo(self); - make.height.mas_equalTo(24); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.numberLabel.mas_bottom).offset(4); - make.left.right.mas_equalTo(self); - }]; -} - -- (NSAttributedString *)towardstributedBWSttrAboutBurlywoodSpace:(CGFloat)lineSpace str:(NSString *)str{ - NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] init]; - NSMutableAttributedString *title = [[NSMutableAttributedString alloc] initWithString:str attributes:@{NSForegroundColorAttributeName : UIColorFromRGB(0xffffff), NSFontAttributeName: [UIFont systemFontOfSize:11]}]; - [attributedString appendAttributedString:title]; - attributedString.yy_alignment = NSTextAlignmentCenter; - return attributedString; -} - -- (CGFloat)acquireExtentsAboutStowardsisfperformance:(NSString *)content height:(CGFloat)height font:(CGFloat)font{ - - CGRect rect = [content boundingRectWithSize:CGSizeMake(999, height) - options:NSStringDrawingUsesLineFragmentOrigin - attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:font]} - context:nil]; - return rect.size.width; -} - -#pragma mark - Getters And Setters -- (void)setTitle:(NSString *)title { - self.titleLabel.text = title; -} - -- (void)setNumber:(NSString *)number { - self.numberLabel.text = number; -} - -- (void)setIsVacationer:(BOOL)isVacationer { - if (isVacationer) { - [self addSubview:self.unLireSequencignation]; - [self.unLireSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.numberLabel.mas_right).mas_offset(5); - make.height.mas_equalTo(15); - make.width.mas_equalTo(15); - make.top.mas_equalTo(self.numberLabel); - }]; - } -} - -- (void)setVacationerFigure:(NSInteger)vacationerFigure { - if (vacationerFigure > 0) { - self.unLireSequencignation.hidden = NO; - self.unLireSequencignation.attributedText = [self towardstributedBWSttrAboutBurlywoodSpace:10 str:[NSString stringWithFormat:@"%zd", vacationerFigure]]; - CGFloat width = [self acquireExtentsAboutStowardsisfperformance:[NSString stringWithFormat:@"%zd", vacationerFigure] height:15 font:11]; - if (vacationerFigure < 10) { - width = 7; - } - [self.unLireSequencignation mas_remakeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.numberLabel.mas_right).mas_offset(5); - make.width.mas_equalTo(width + 8); - make.top.mas_equalTo(self.numberLabel); - make.height.mas_equalTo(15); - }]; - } else { - self.unLireSequencignation.hidden = YES; - } -} - -- (UILabel *)numberLabel { - if (!_numberLabel) { - _numberLabel = [[UILabel alloc] init]; - _numberLabel.font = [UIFont boldSystemFontOfSize:20]; - _numberLabel.textAlignment = NSTextAlignmentCenter; - _numberLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _numberLabel; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _titleLabel.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} - -- (UILabel *)unLireSequencignation { - if (!_unLireSequencignation) { - _unLireSequencignation = [[UILabel alloc] init]; - _unLireSequencignation.font = [UIFont systemFontOfSize:11]; - _unLireSequencignation.textColor = [UIColor whiteColor]; - _unLireSequencignation.backgroundColor = UIColorFromRGB(0xFF5B55); - _unLireSequencignation.layer.cornerRadius = 7.5; - _unLireSequencignation.layer.masksToBounds = YES; - _unLireSequencignation.textAlignment = NSTextAlignmentCenter; - [_unLireSequencignation sizeToFit]; - _unLireSequencignation.hidden = YES; - } - return _unLireSequencignation ; -} - -@end diff --git a/YuMi/Modules/YMMine/View/SubViews/YUMIManeIntelligenceRegard.h b/YuMi/Modules/YMMine/View/SubViews/YUMIManeIntelligenceRegard.h deleted file mode 100644 index 2918494b..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/YUMIManeIntelligenceRegard.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// YMMineHeadView.h -// YUMI -// -// Created by YUMI on 2021/9/16. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -typedef void(^CompletionHandler)(NSMutableAttributedString *); -@class ConsumerAbstractMatrix,YUMIManeIntelligenceRegard, RamparatetAbstractMatrix; -@protocol FBCManeIntelligenceRegardRepresendtation -- (void)yUMIManeIntelligenceRegard:(YUMIManeIntelligenceRegard *)view didClickAvatar:(ConsumerAbstractMatrix *)info; -- (void)yumiManeIntelligenceRegardTicktackConsidertowardsion; -- (void)yumiManeIntelligenceRegardTicktackFantowardsics; -- (void)yumiManeIntelligenceRegardTicktackAcomputtowardsion; -@end -@interface YUMIManeIntelligenceRegard : UIView -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@property (nonatomic, strong) RamparatetAbstractMatrix *wentiretyetAbstract; -@property (nonatomic,assign) id delegate; -@property (nonatomic, assign) NSInteger vacationerUnLireComputation; - -- (void)cretowardsMtowardserialProttypeIdiosyncracy:(ConsumerAbstractMatrix *)userInfo complete:(CompletionHandler)complete; -- (NSMutableAttributedString *)cretowardsMtowardserialIdSequencigntowardsionIdiosyncracy:(ConsumerAbstractMatrix *)userInfo ; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/YUMIManeIntelligenceRegard.m b/YuMi/Modules/YMMine/View/SubViews/YUMIManeIntelligenceRegard.m deleted file mode 100644 index 8ac7aed9..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/YUMIManeIntelligenceRegard.m +++ /dev/null @@ -1,530 +0,0 @@ -// -// YUMIManeIntelligenceRegard.m -// YuMi -// -// Created by YuMi on 2021/9/16. -// - -#import "YUMIManeIntelligenceRegard.h" -#import -#import -#import "UIImage+Utils.h" -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "UIImage+Utils.h" -#import "YUMIManeAssistantNumberRegard.h" -#import "YUMIManeAccountRegard.h" -#import "ConsumerAbstractMatrix.h" -#import "RamparatetAbstractMatrix.h" - -@interface YUMIManeIntelligenceRegard () -@property (nonatomic,strong) NetIndicateRegard * intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UIStackView *constituteHierarchyRegard; -@property (nonatomic,strong) NetIndicateRegard *magnificentIndicateRegard; -@property (nonatomic,strong) UILabel *constituteSequencignation; -@property (nonatomic,strong) UIStackView *idHierarchyRegard; -@property (nonatomic,strong) UILabel *idSequencignation; -@property (nonatomic,strong) UIImageView *seaxualityIndicateRegard; -@property (nonatomic,strong) YYLabel *prototypeSequencignation; -@property (nonatomic,strong) UIStackView *considerationHierarchyRegard; -@property (nonatomic,strong) YUMIManeAssistantNumberRegard *considerationRegard; -@property (nonatomic,strong) YUMIManeAssistantNumberRegard *fanaticsRegard; -@property (nonatomic, strong) YUMIManeAccountRegard *accomputationRegard; -@property (nonatomic,strong) UIImageView *reviewRegard; -@end - -@implementation YUMIManeIntelligenceRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - [self addSubview:self.intelligenceportraitIndicateRegard]; - [self addSubview:self.magnificentIndicateRegard]; - [self addSubview:self.constituteHierarchyRegard]; - [self addSubview:self.idHierarchyRegard]; - [self.constituteHierarchyRegard addArrangedSubview:self.constituteSequencignation]; - [self.idHierarchyRegard addArrangedSubview:self.idSequencignation]; - [self.idHierarchyRegard addArrangedSubview:self.seaxualityIndicateRegard]; - [self addSubview:self.prototypeSequencignation]; - - [self addSubview:self.considerationHierarchyRegard]; - [self.considerationHierarchyRegard addArrangedSubview:self.considerationRegard]; - [self.considerationHierarchyRegard addArrangedSubview:self.fanaticsRegard]; - - [self addSubview:self.accomputationRegard]; - [self.intelligenceportraitIndicateRegard addSubview:self.reviewRegard]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsIntelligenceportraitIndictowardseRegard)]; - [self.intelligenceportraitIndicateRegard addGestureRecognizer:tap]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(74, 74)); - make.leading.mas_equalTo(self).offset(15); - make.top.mas_equalTo(self).offset(49 + kStatusBarHeight); - }]; - - [self.magnificentIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(12); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard).mas_offset(4); - make.width.height.mas_equalTo(20); - }]; - - [self.constituteHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.magnificentIndicateRegard); - make.left.mas_equalTo(self.magnificentIndicateRegard.mas_right).mas_offset(5); - make.height.mas_equalTo(16); - make.right.mas_equalTo(-15); - }]; - - [self.idHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.magnificentIndicateRegard); - make.top.mas_equalTo(self.constituteHierarchyRegard.mas_bottom).offset(13); - make.height.mas_equalTo(16); - }]; - - [self.prototypeSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.magnificentIndicateRegard); - make.top.mas_equalTo(self.idHierarchyRegard.mas_bottom).offset(5); - }]; - - [self.considerationHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard).mas_offset(37); - make.height.mas_equalTo(40); - - make.width.mas_equalTo(108); - make.right.mas_equalTo(0); - }]; - CGFloat width = (KScreenWidth - 30) / 4; - CGFloat height = 45; - [self.considerationRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(54, 34)); - }]; - - [self.fanaticsRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(54, 34)); - }]; - - - width = (KScreenWidth - 30 - 13) * 0.5; - height = width * 60 / 166; - [self.accomputationRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.intelligenceportraitIndicateRegard.mas_bottom).mas_offset(23); - make.size.mas_equalTo(CGSizeMake(width, height)); - make.left.mas_equalTo(15); - }]; - [self.reviewRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.equalTo(self.intelligenceportraitIndicateRegard); - make.height.mas_equalTo(20); - }]; -} - -#pragma mark - Action -- (void)betowardsIntelligenceportraitIndictowardseRegard { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIManeIntelligenceRegard:didClickAvatar:)]) { - [self.delegate yUMIManeIntelligenceRegard:self didClickAvatar:self.userInfo]; - } -} - -- (void)betowardsFantowardsicsRecognition { - if (self.delegate && [self.delegate respondsToSelector:@selector(yumiManeIntelligenceRegardTicktackFantowardsics)]) { - [self.delegate yumiManeIntelligenceRegardTicktackFantowardsics]; - } -} -- (void)betowardsConsidertowardsionRecognition { - if (self.delegate && [self.delegate respondsToSelector:@selector(yumiManeIntelligenceRegardTicktackConsidertowardsion)]) { - [self.delegate yumiManeIntelligenceRegardTicktackConsidertowardsion]; - } -} -- (void)betowardsSequenceriptionrecognizer { - if (self.delegate && [self.delegate respondsToSelector:@selector(yumiManeIntelligenceRegardTicktackAcomputtowardsion)]) { - [self.delegate yumiManeIntelligenceRegardTicktackAcomputtowardsion]; - } -} -#pragma mark - NSMutableAttributedString --(NSInteger) acquireDiana:(long )time -{ - NSDate *date = [NSDate dateWithTimeIntervalSince1970:time/1000]; - NSCalendar* calendar = [NSCalendar currentCalendar]; - NSDateComponents* components = [calendar components:NSCalendarUnitMonth fromDate:date]; - NSInteger month = components.month; - return month; -} - -- (NSInteger) acquireSeason:(long) time -{ - NSDate *date = [NSDate dateWithTimeIntervalSince1970:time/1000]; - NSCalendar* calendar = [NSCalendar currentCalendar]; - NSDateComponents* components = [calendar components:NSCalendarUnitDay fromDate:date]; - NSInteger day = components.day; - return day; -} - -- (NSString *)calcultowardseConstelltowardsionAboutDiana:(long)time -{ - NSString *astroString = YMLocalizedString(@"YUMI_Mine_Head_View_0"); - NSString *astroFormat = @"102123444543"; - NSString *result; - - NSInteger month = [self acquireDiana:time]; - NSInteger day = [self acquireSeason:time]; - - if (month<1 || month>12 || day<1 || day>31){ - return YMLocalizedString(@"YUMI_Mine_Head_View_1"); - } - - if(month==2 && day>29) - { - return YMLocalizedString(@"YUMI_Mine_Head_View_2"); - }else if(month==4 || month==6 || month==9 || month==11) { - if (day>30) { - return YMLocalizedString(@"YUMI_Mine_Head_View_3"); - } - } - - result=[NSString stringWithFormat:@"%@",[astroString substringWithRange:NSMakeRange(month*2-(day < [[astroFormat substringWithRange:NSMakeRange((month-1), 1)] intValue] - (-19))*2,2)]]; - - return [NSString stringWithFormat:YMLocalizedString(@"YUMI_Mine_Head_View_6"),result]; -} - -- (NSMutableAttributedString *)produceWeebsiteIndictowardseIdiosyncracy:(NSString *)imageUrl { - NetIndicateDisposition *config = [[NetIndicateDisposition alloc]init]; - - config.autoChamber = YES; - NetIndicateRegard *imageView = [[NetIndicateRegard alloc]initWithUrl:imageUrl config:config]; - UIImage* image = imageView.image; - if (image) { - CGFloat height = image.size.height > 0 ? image.size.height : 1; - CGFloat scale = image.size.width / height ; - imageView.bounds = CGRectMake(0, 0, 20 * scale, 20); - } else { - NSURL *imgUrl = [NSURL URLWithString:imageUrl]; - UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; - CGFloat height = myImage.size.height > 0 ? myImage.size.height : 1; - CGFloat scale = myImage.size.width / height; - imageView.bounds = CGRectMake(0, 0, 20 * scale, 20); - } - imageView.layer.masksToBounds = YES; - imageView.contentMode = UIViewContentModeScaleAspectFit; - NSMutableAttributedString * attrString = [NSMutableAttributedString yy_attachmentStringWithContent:imageView contentMode:UIViewContentModeScaleAspectFit attachmentSize:CGSizeMake(imageView.bounds.size.width, imageView.bounds.size.height) alignToFont:[UIFont systemFontOfSize:15.0] alignment:YYTextVerticalAlignmentCenter]; - return attrString; -} - -- (NSMutableAttributedString *)produceSapceIdiosyncracy:(CGFloat)width { - UIView *vacuumRegard = [[UIView alloc]init]; - vacuumRegard.backgroundColor = [UIColor clearColor]; - vacuumRegard.bounds = CGRectMake(0, 0, width, 10); - NSMutableAttributedString * attribute = [NSMutableAttributedString yy_attachmentStringWithContent:vacuumRegard contentMode:UIViewContentModeScaleAspectFit attachmentSize:CGSizeMake(vacuumRegard.frame.size.width, vacuumRegard.frame.size.height) alignToFont:[UIFont systemFontOfSize:15.0] alignment:YYTextVerticalAlignmentCenter]; - return attribute; -} - -- (NSMutableAttributedString *)manufactureEngagementSequencigntowardsion:(long)birth{ - NSString *dateStr = [NSString stringWithFormat:@" %@ ",[self calcultowardseConstelltowardsionAboutDiana:birth]]; - UIButton *dataButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [dataButton setTitle:dateStr forState:UIControlStateNormal]; - dataButton.titleLabel.font = [UIFont boldSystemFontOfSize:10]; - [dataButton setTitleColor:UIColorFromRGB(0xFFFFFF) forState:UIControlStateNormal]; - dataButton.frame = CGRectMake(0, 0, 45, 17); - dataButton.layer.masksToBounds = YES; - dataButton.layer.cornerRadius = 17/2; - [dataButton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - NSMutableAttributedString * dateLabelString = [NSMutableAttributedString yy_attachmentStringWithContent:dataButton contentMode:UIViewContentModeScaleAspectFit attachmentSize:CGSizeMake(dataButton.frame.size.width, dataButton.frame.size.height) alignToFont:[UIFont systemFontOfSize:11] alignment:YYTextVerticalAlignmentCenter]; - return dateLabelString; -} - -- (NSMutableAttributedString *)produceMtowardserialTowardstibute:(NSString *)tagName image:(NSString *)imageName textFont:(UIFont *)textFont { - NetIndicateDisposition *config = [[NetIndicateDisposition alloc]init]; - - config.autoChamber = YES; - NetIndicateRegard *imageView = [[NetIndicateRegard alloc]initWithUrl:imageName config:config]; - UIImage* image = imageView.image; - if (image) { - CGFloat scale = image.size.width / (image.size.height > 0 ? image.size.height : 1); - imageView.bounds = CGRectMake(0, 0, 20 * scale, 20); - } else { - NSURL *imgUrl = [NSURL URLWithString:imageName]; - UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; - CGFloat scale = myImage.size.width / (myImage.size.height > 0 ? myImage.size.height : 1); - if (scale == 0) { - imageView.bounds = CGRectMake(0, 0, 60, 20); - }else { - imageView.bounds = CGRectMake(0, 0, 20 * scale, 20); - } - } - imageView.contentMode = UIViewContentModeScaleAspectFit; - - UILabel *label = [[UILabel alloc] init]; - label.textAlignment = NSTextAlignmentCenter; - label.font = [UIFont boldSystemFontOfSize:12]; - label.adjustsFontSizeToFitWidth = YES; - label.textColor = UIColor.whiteColor; - label.text = tagName; - [imageView addSubview:label]; - [label mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(27); - make.right.mas_equalTo(-8); - make.centerY.mas_equalTo(0); - }]; - NSMutableAttributedString *string = [NSMutableAttributedString yy_attachmentStringWithContent:imageView contentMode:UIViewContentModeScaleAspectFit attachmentSize:imageView.bounds.size alignToFont:[UIFont boldSystemFontOfSize:12] alignment:YYTextVerticalAlignmentCenter]; - return string; -} --(void)copyConstitutePerformance{ - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:YMLocalizedString(@"YUMI_Mine_Head_View_8")]; - UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; - pasteboard. string = [NSString stringWithFormat:@"%ld", (long)_userInfo.erbanNo]; - -} -- (NSMutableAttributedString *)cretowardsMtowardserialIdSequencigntowardsionIdiosyncracy:(ConsumerAbstractMatrix *)userInfo{ - - UIFont *font = [UIFont systemFontOfSize:14]; - NSString *text = [NSString stringWithFormat:@"ID:%ld", (long)userInfo.erbanNo]; - NSMutableAttributedString *textAtt = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@"%@ ",text] attributes:@{NSForegroundColorAttributeName:UIColorFromRGB(0x6D6B89)}]; - NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; - UIImage *iconImage = [UIImage imageNamed:@"user_card_copy_id1"];; - attachment.bounds = CGRectMake(0, roundf(font.capHeight - iconImage.size.height)/2.f, iconImage.size.width, iconImage.size.height); - attachment.image = iconImage; - [textAtt insertAttributedString:[NSMutableAttributedString attributedStringWithAttachment:attachment] atIndex:textAtt.length]; - return textAtt; - - -} -- (void)cretowardsMtowardserialProttypeIdiosyncracy:(ConsumerAbstractMatrix *)userInfo complete:(nonnull CompletionHandler)complete{ - NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] init]; - if (!userInfo) { - if(complete){ - complete(attributedString); - } - return; - } - - - - if (userInfo.nameplateWord.length > 0 && userInfo.nameplatePic.length>0) { - [self produceMtowardserialTowardstibute:userInfo.nameplateWord image:userInfo.nameplatePic textFont:[UIFont systemFontOfSize:9]]; - [attributedString appendAttributedString:[self produceSapceIdiosyncracy:2]]; - } - - - if (userInfo.userLevelVo.experUrl) { - [attributedString appendAttributedString:[self produceWeebsiteIndictowardseIdiosyncracy:userInfo.userLevelVo.experUrl]]; - [attributedString appendAttributedString:[self produceSapceIdiosyncracy:2]]; - } - - - if (userInfo.userLevelVo.charmUrl) { - [attributedString appendAttributedString:[self produceWeebsiteIndictowardseIdiosyncracy:userInfo.userLevelVo.charmUrl]]; - [attributedString appendAttributedString:[self produceSapceIdiosyncracy:2]]; - } - - - if (userInfo.birth) { - [attributedString appendAttributedString:[self manufactureEngagementSequencigntowardsion:userInfo.birth]]; - } - - if(complete){ - complete(attributedString); - } - - - - - -} - - -#pragma mark - Getters And Setters -- (void)setUserInfo:(ConsumerAbstractMatrix *)userInfo { - _userInfo = userInfo; - if (_userInfo) { - self.idSequencignation.attributedText = userInfo.idAtt; - self.constituteSequencignation.text = _userInfo.nick.length > 0 ? _userInfo.nick : @""; - self.intelligenceportraitIndicateRegard.imageUrl = userInfo.avatar; - if (userInfo.isReview) { - self.reviewRegard.hidden = NO; - } else { - self.reviewRegard.hidden = YES; - self.intelligenceportraitIndicateRegard.imageUrl = userInfo.avatar; - } - self.magnificentIndicateRegard.imageUrl = userInfo.userVipInfoVO.vipIcon; - UIImage *nobleImage = self.magnificentIndicateRegard.image; - if (nobleImage) { - CGFloat scale = nobleImage.size.width / nobleImage.size.height; - [self.magnificentIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20* scale, 20)); - }]; - [self.constituteHierarchyRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.magnificentIndicateRegard.mas_right).mas_offset(5); - }]; - } else { - [self.magnificentIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(0, 20)); - }]; - [self.constituteHierarchyRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.magnificentIndicateRegard.mas_right); - }]; - } - NSString * sexName; - if (userInfo.gender == GenderGenre_Male) { - sexName = @"common_male"; - } else { - sexName = @"common_female"; - } - self.seaxualityIndicateRegard.image = [UIImage imageNamed:sexName]; - self.prototypeSequencignation.attributedText = _userInfo.levelAtt; - self.fanaticsRegard.number = [NSString stringWithFormat:@"%ld",_userInfo.fansNum]; - self.considerationRegard.number = [NSString stringWithFormat:@"%ld",_userInfo.followNum]; - } -} - -- (void)setWentiretyetAbstract:(RamparatetAbstractMatrix *)wentiretyetAbstract { - self.accomputationRegard.diamonds = wentiretyetAbstract.diamonds; -} - - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.userInteractionEnabled = YES; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 37; - } - return _intelligenceportraitIndicateRegard; -} - -- (UIStackView *)constituteHierarchyRegard { - if (!_constituteHierarchyRegard) { - _constituteHierarchyRegard = [[UIStackView alloc] init]; - _constituteHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _constituteHierarchyRegard.distribution = UIStackViewDistributionFill; - _constituteHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _constituteHierarchyRegard.spacing = 5; - } - return _constituteHierarchyRegard; -} - -- (NetIndicateRegard *)magnificentIndicateRegard { - if (!_magnificentIndicateRegard) { - _magnificentIndicateRegard = [[NetIndicateRegard alloc] init]; - } - return _magnificentIndicateRegard; -} - -- (UILabel *)constituteSequencignation { - if (!_constituteSequencignation) { - _constituteSequencignation = [[UILabel alloc] init]; - _constituteSequencignation.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; - _constituteSequencignation.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#1F1A4E"]; - } - return _constituteSequencignation; -} - -- (UIStackView *)idHierarchyRegard { - if (!_idHierarchyRegard) { - _idHierarchyRegard = [[UIStackView alloc] init]; - _idHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _idHierarchyRegard.distribution = UIStackViewDistributionFill; - _idHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _idHierarchyRegard.spacing = 5; - } - return _idHierarchyRegard; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.font = [UIFont systemFontOfSize:14]; - _idSequencignation.textColor = UIColorFromRGB(0x6D6B89); - _idSequencignation.userInteractionEnabled = YES; - UITapGestureRecognizer *longPress = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(copyConstitutePerformance)]; - [_idSequencignation addGestureRecognizer:longPress]; - } - return _idSequencignation; -} - -- (UIImageView *)seaxualityIndicateRegard { - if (!_seaxualityIndicateRegard) { - _seaxualityIndicateRegard = [[UIImageView alloc] init]; - _seaxualityIndicateRegard.userInteractionEnabled = YES; - } - return _seaxualityIndicateRegard; -} - -- (YYLabel *)prototypeSequencignation { - if (!_prototypeSequencignation) { - _prototypeSequencignation = [[YYLabel alloc] init]; - _prototypeSequencignation.preferredMaxLayoutWidth = KScreenWidth - 88; - } - return _prototypeSequencignation; -} - -- (UIStackView *)considerationHierarchyRegard { - if (!_considerationHierarchyRegard) { - _considerationHierarchyRegard = [[UIStackView alloc] init]; - _considerationHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _considerationHierarchyRegard.distribution = UIStackViewDistributionFill; - _considerationHierarchyRegard.alignment = UIStackViewAlignmentFill; - } - return _considerationHierarchyRegard; -} - -- (YUMIManeAssistantNumberRegard *)considerationRegard { - if (!_considerationRegard) { - _considerationRegard = [[YUMIManeAssistantNumberRegard alloc] init]; - _considerationRegard.title = YMLocalizedString(@"YUMI_Mine_Head_View_4"); - _considerationRegard.number = @"0"; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsConsidertowardsionRecognition)]; - [_considerationRegard addGestureRecognizer:tap]; - } - return _considerationRegard; -} - -- (YUMIManeAssistantNumberRegard *)fanaticsRegard { - if (!_fanaticsRegard) { - _fanaticsRegard = [[YUMIManeAssistantNumberRegard alloc] init]; - _fanaticsRegard.title = YMLocalizedString(@"YUMI_Mine_Head_View_5"); - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsFantowardsicsRecognition)]; - [_fanaticsRegard addGestureRecognizer:tap]; - } - return _fanaticsRegard; -} - -- (YUMIManeAccountRegard *)accomputationRegard { - if (!_accomputationRegard) { - _accomputationRegard = [[YUMIManeAccountRegard alloc] init]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsSequenceriptionrecognizer)]; - [_accomputationRegard addGestureRecognizer:tap]; - } - return _accomputationRegard; -} - -- (UIImageView *)reviewRegard{ - if (!_reviewRegard){ - _reviewRegard = [UIImageView new]; - _reviewRegard.hidden = YES; - _reviewRegard.image = [UIImage imageNamed:@"yumi_center_avatar_reviewing"]; - UILabel *titleView = [[UILabel alloc] init]; - titleView.text = YMLocalizedString(@"YUMI_Mine_Head_View_7"); - titleView.font = [UIFont systemFontOfSize:11 weight:UIFontWeightRegular]; - titleView.textColor = [UIColor whiteColor]; - titleView.textAlignment = NSTextAlignmentCenter; - [_reviewRegard addSubview:titleView]; - [titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(_reviewRegard); - }]; - } - return _reviewRegard; -} -@end diff --git a/YuMi/Modules/YMMine/View/SubViews/YUMIManeIntersectPwordIntrojectionRegard.h b/YuMi/Modules/YMMine/View/SubViews/YUMIManeIntersectPwordIntrojectionRegard.h deleted file mode 100644 index 68dc983e..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/YUMIManeIntersectPwordIntrojectionRegard.h +++ /dev/null @@ -1,31 +0,0 @@ -// -// YMMinePayPwdInputView.h -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, YUMIPayPwdIntrojectionRegardGenre) { - YUMIPayPwdIntrojectionRegardGenrePwd, - YUMIPayPwdIntrojectionRegardGenreRepeatPwd, - YUMIPayPwdIntrojectionRegardGenreVerification -}; - -@interface YUMIManeIntersectPwordIntrojectionRegard : UIView - -@property (nonatomic, assign) YUMIPayPwdIntrojectionRegardGenre type; - -@property (nonatomic, copy) void (^fetchVerificationHandler)(void); - -- (NSString *)contentText; - -- (void)verifictowardsionComputtowardsiondownRefurbish:(NSInteger)seconds; - -- (void)verifictowardsionComputtowardsiondownAccomplish; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/YUMIManeIntersectPwordIntrojectionRegard.m b/YuMi/Modules/YMMine/View/SubViews/YUMIManeIntersectPwordIntrojectionRegard.m deleted file mode 100644 index 20e54542..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/YUMIManeIntersectPwordIntrojectionRegard.m +++ /dev/null @@ -1,190 +0,0 @@ -// -// YMMinePayPwdInputView.m -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import "YUMIManeIntersectPwordIntrojectionRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIButton+EnlargeTouchArea.h" -@interface YUMIManeIntersectPwordIntrojectionRegard() -@property (nonatomic, strong) UIView *burlywoodRegard; -@property (nonatomic, strong) UITextField *satisfperformanceEssayUniverse; -@property (nonatomic, strong) UIButton *positionBtuton; -@property (nonatomic, assign) BOOL isAssurance; -@property (nonatomic, assign) int satisfperformanceRestriction; -@property (nonatomic, assign) UIKeyboardType keyboardType; -@property (nonatomic, strong) NSString *placeholder; - -@end - - -@implementation YUMIManeIntersectPwordIntrojectionRegard - -- (instancetype)init { - if (self = [super init]) { - [self initSubviews]; - } - return self; -} - -- (void)initSubviews { - self.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - [self addSubview:self.satisfperformanceEssayUniverse]; - [self addSubview:self.positionBtuton]; - [self addSubview:self.burlywoodRegard]; - [self manufactureConstriants]; -} - -- (void)manufactureConstriants { - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self).inset(25); - make.bottom.mas_equalTo(0); - make.height.mas_equalTo(0.5); - }]; - - [self.positionBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.burlywoodRegard); - make.bottom.mas_equalTo(-10); - }]; - - [self.satisfperformanceEssayUniverse mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.positionBtuton); - make.left.mas_equalTo(self.burlywoodRegard); - make.right.mas_equalTo(self.positionBtuton.mas_left).offset(-10); - make.height.mas_equalTo(44); - }]; -} - -#pragma mark - Event - -- (void)edingtingDiversifictowardsion { - if (self.satisfperformanceRestriction && self.satisfperformanceEssayUniverse.text.length > self.satisfperformanceRestriction) { - self.satisfperformanceEssayUniverse.text = [self.satisfperformanceEssayUniverse.text substringToIndex:self.satisfperformanceRestriction]; - } -} - -- (void)onTicktackPositionBtuton:(UIButton *)sender { - if (self.type == YUMIPayPwdIntrojectionRegardGenreVerification) { - !self.fetchVerificationHandler ?: self.fetchVerificationHandler(); - return; - } - - sender.selected = !sender.selected; - self.isAssurance = !sender.selected; -} - -#pragma mark - Public -- (NSString *)contentText { - return self.satisfperformanceEssayUniverse.text; -} - -- (void)verifictowardsionComputtowardsiondownRefurbish:(NSInteger)seconds { - if (self.type == YUMIPayPwdIntrojectionRegardGenreVerification) { - [self.positionBtuton setTitle:[NSString stringWithFormat:YMLocalizedString(@"YUMI_Mine_Pay_Pwd_Input_View_0"), (long)seconds] forState:UIControlStateNormal]; - [self.positionBtuton setEnabled:NO]; - [self.positionBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionMainPrettify] forState:UIControlStateNormal]; - } -} - -- (void)verifictowardsionComputtowardsiondownAccomplish { - if (self.type == YUMIPayPwdIntrojectionRegardGenreVerification) { - [self.positionBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Pay_Pwd_Input_View_1") forState:UIControlStateNormal]; - [self.positionBtuton setEnabled:YES]; - [self.positionBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionMainPrettify] forState:UIControlStateNormal]; - } -} - -#pragma mark - Getters And Setters -- (void)setType:(YUMIPayPwdIntrojectionRegardGenre)type { - _type = type; - - switch (type) { - case YUMIPayPwdIntrojectionRegardGenrePwd: - { - self.satisfperformanceRestriction = 6; - self.isAssurance = YES; - self.keyboardType = UIKeyboardTypeNumberPad; - self.placeholder = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Mine_Pay_Pwd_Input_View_2")]; - } - break; - case YUMIPayPwdIntrojectionRegardGenreRepeatPwd: - { - self.satisfperformanceRestriction = 6; - self.isAssurance = YES; - self.keyboardType = UIKeyboardTypeNumberPad; - self.placeholder = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Mine_Pay_Pwd_Input_View_3")]; - } - break; - case YUMIPayPwdIntrojectionRegardGenreVerification: - { - self.satisfperformanceRestriction = 5; - self.isAssurance = NO; - self.keyboardType = UIKeyboardTypeNumberPad; - self.placeholder = YMLocalizedString(@"YUMI_Mine_Pay_Pwd_Input_View_4"); - - [self.positionBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Pay_Pwd_Input_View_5") forState:UIControlStateNormal]; - [self.positionBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionMainPrettify] forState:UIControlStateNormal]; - [self.positionBtuton setImage:nil forState:UIControlStateNormal]; - [self.positionBtuton setImage:nil forState:UIControlStateSelected]; - } - break; - default: - break; - } -} - -- (void)setIsAssurance:(BOOL)isAssurance { - _isAssurance = isAssurance; - - self.positionBtuton.selected = !isAssurance; - self.satisfperformanceEssayUniverse.secureTextEntry = isAssurance; -} - -- (void)setPlaceholder:(NSString *)placeholder { - _placeholder = placeholder; - self.satisfperformanceEssayUniverse.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholder attributes:@{NSFontAttributeName : self.satisfperformanceEssayUniverse.font, NSForegroundColorAttributeName : [DJDKMIMOMColor instantEssayPrettify]}]; -} - -- (void)setKeyboardType:(UIKeyboardType)keyboardType { - _keyboardType = keyboardType; - self.satisfperformanceEssayUniverse.keyboardType = keyboardType; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _burlywoodRegard; -} - -- (UITextField *)satisfperformanceEssayUniverse { - if (!_satisfperformanceEssayUniverse) { - _satisfperformanceEssayUniverse = [[UITextField alloc] init]; - _satisfperformanceEssayUniverse.secureTextEntry = YES; - _satisfperformanceEssayUniverse.font = [UIFont systemFontOfSize:13]; - _satisfperformanceEssayUniverse.textColor = [DJDKMIMOMColor mainEssayPrettify]; - [_satisfperformanceEssayUniverse addTarget:self action:@selector(edingtingDiversifictowardsion) forControlEvents:UIControlEventEditingChanged]; - } - return _satisfperformanceEssayUniverse; -} - -- (UIButton *)positionBtuton { - if (!_positionBtuton) { - _positionBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_positionBtuton addTarget:self action:@selector(onTicktackPositionBtuton:) forControlEvents:UIControlEventTouchUpInside]; - [_positionBtuton setImage:[UIImage imageNamed:@"yumi_center_setting_pay_password_hidden"] forState:UIControlStateNormal]; - [_positionBtuton setImage:[UIImage imageNamed:@"yumi_center_setting_pay_password_show"] forState:UIControlStateSelected]; - _positionBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_positionBtuton setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - [_positionBtuton setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - [_positionBtuton setEnlargeEdgeAboutApex:8 right:8 bottom:8 left:8]; - } - return _positionBtuton; -} - -@end diff --git a/YuMi/Modules/YMMine/View/SubViews/YUMIManeModifIntersectPwordRegard.h b/YuMi/Modules/YMMine/View/SubViews/YUMIManeModifIntersectPwordRegard.h deleted file mode 100644 index 95efccec..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/YUMIManeModifIntersectPwordRegard.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMMineModifPayPwdView.h -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeModifIntersectPwordRegard : UIView -@property (nonatomic,strong, readonly) UITextField *satisfperformanceEssayUniverse; -@property (nonatomic,copy) NSString *placeholder; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/YUMIManeModifIntersectPwordRegard.m b/YuMi/Modules/YMMine/View/SubViews/YUMIManeModifIntersectPwordRegard.m deleted file mode 100644 index eb6b46f0..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/YUMIManeModifIntersectPwordRegard.m +++ /dev/null @@ -1,110 +0,0 @@ -// -// YMMineModifPayPwdView.m -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import "YUMIManeModifIntersectPwordRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIButton+EnlargeTouchArea.h" - -@interface YUMIManeModifIntersectPwordRegard () -@property (nonatomic,strong) UITextField *satisfperformanceEssayUniverse; -@property (nonatomic,strong) UIButton *commandBtuton; -@property (nonatomic,strong) UIView * partBurlywoodRegard; -@end - -@implementation YUMIManeModifIntersectPwordRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Response -- (void)onTicktackVeiledBtuton:(UIButton *)btn { - btn.selected = !btn.selected; - self.satisfperformanceEssayUniverse.secureTextEntry = !self.satisfperformanceEssayUniverse.secureTextEntry; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - [self addSubview:self.satisfperformanceEssayUniverse]; - [self addSubview:self.commandBtuton]; - [self addSubview:self.partBurlywoodRegard]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(50); - }]; - - [self.satisfperformanceEssayUniverse mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self).offset(15); - make.top.bottom.mas_equalTo(self); - }]; - - [self.commandBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self).offset(-32); - make.centerY.mas_equalTo(self.satisfperformanceEssayUniverse); - make.left.mas_equalTo(self.satisfperformanceEssayUniverse.mas_right).offset(10); - }]; - - [self.partBurlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self).offset(5); - make.right.mas_equalTo(self).offset(-5); - make.bottom.mas_equalTo(self); - make.height.mas_equalTo(0.5); - }]; -} - -#pragma mark - Getters And Setters -- (void)setPlaceholder:(NSString *)placeholder { - _placeholder = placeholder; - self.satisfperformanceEssayUniverse.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholder attributes:@{NSFontAttributeName : self.satisfperformanceEssayUniverse.font, NSForegroundColorAttributeName : [DJDKMIMOMColor instantEssayPrettify]}]; -} - - -- (UIView *)partBurlywoodRegard { - if (!_partBurlywoodRegard) { - _partBurlywoodRegard = [[UIView alloc] init]; - _partBurlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _partBurlywoodRegard; -} - -- (UITextField *)satisfperformanceEssayUniverse { - if (!_satisfperformanceEssayUniverse) { - _satisfperformanceEssayUniverse = [[UITextField alloc] init]; - _satisfperformanceEssayUniverse.secureTextEntry = YES; - _satisfperformanceEssayUniverse.font = [UIFont systemFontOfSize:13]; - _satisfperformanceEssayUniverse.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _satisfperformanceEssayUniverse.tintColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - } - return _satisfperformanceEssayUniverse; -} - -- (UIButton *)commandBtuton { - if (!_commandBtuton) { - _commandBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_commandBtuton setEnlargeEdgeAboutApex:20 right:20 bottom:20 left:20]; - [_commandBtuton addTarget:self action:@selector(onTicktackVeiledBtuton:) forControlEvents:UIControlEventTouchUpInside]; - [_commandBtuton setImage:[UIImage imageNamed:@"yumi_center_setting_modif_pay_pwd_hidden"] forState:UIControlStateNormal]; - [_commandBtuton setImage:[UIImage imageNamed:@"yumi_center_setting_modif_pay_pwd_show"] forState:UIControlStateSelected]; - _commandBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_commandBtuton setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - } - return _commandBtuton; -} - - - -@end diff --git a/YuMi/Modules/YMMine/View/SubViews/YUMIManeStrangeConsumerReindictRegard.h b/YuMi/Modules/YMMine/View/SubViews/YUMIManeStrangeConsumerReindictRegard.h deleted file mode 100644 index bbb99e4d..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/YUMIManeStrangeConsumerReindictRegard.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMMineNewUserRechargeView.h -// YUMI -// -// Created by YUMI on 2022/7/28. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeStrangeConsumerReindictRegard : UIView - -@property (nonatomic, assign) long endTime; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/YUMIManeStrangeConsumerReindictRegard.m b/YuMi/Modules/YMMine/View/SubViews/YUMIManeStrangeConsumerReindictRegard.m deleted file mode 100644 index a2b04797..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/YUMIManeStrangeConsumerReindictRegard.m +++ /dev/null @@ -1,164 +0,0 @@ -// -// YMMineNewUserRechargeView.m -// YUMI -// -// Created by YUMI on 2022/7/28. -// - -#import "YUMIManeStrangeConsumerReindictRegard.h" -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "Intratemporalstamp.h" - -@interface YUMIManeStrangeConsumerReindictRegard () -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; - -@end - -@implementation YUMIManeStrangeConsumerReindictRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initOccurrences]; - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.encourageIndicateRegard]; - [self.encourageIndicateRegard addSubview:self.monicerSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(0); - make.right.mas_equalTo(-6); - make.bottom.mas_equalTo(-2); - make.height.mas_equalTo(14); - }]; -} - -- (void)initOccurrences { - UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(chamberRoadliceCouple:)]; - pan.delaysTouchesBegan = YES; - [self addGestureRecognizer:pan]; -} - -#pragma mark - events -- (void)chamberRoadliceCouple:(UIPanGestureRecognizer*)p { - UIWindow *appWindow = [UIApplication sharedApplication].delegate.window; - CGPoint panSpeck = [p locationInView:appWindow]; - if (p.state == UIGestureRecognizerStateBegan) { - self.alpha = 1; - } else if(p.state == UIGestureRecognizerStateChanged) { - self.center = CGPointMake(panSpeck.x, panSpeck.y); - } else if(p.state == UIGestureRecognizerStateEnded - || p.state == UIGestureRecognizerStateCancelled) { - self.alpha = 1; - CGFloat touchWidth = self.frame.size.width; - CGFloat touchHeight = self.frame.size.height; - CGFloat screenWidth = [[UIScreen mainScreen] bounds].size.width; - CGFloat screenHeight = [[UIScreen mainScreen] bounds].size.height; - - CGFloat left = fabs(panSpeck.x); - CGFloat right = fabs(screenWidth - left); - CGFloat top = fabs(panSpeck.y); - CGFloat bottom = fabs(screenHeight - top); - CGFloat minSpace = 0; - minSpace = MIN(MIN(MIN(top, left), bottom), right); - CGPoint newCenter; - CGFloat targetY = 0; - - if (panSpeck.y < 15 + touchHeight / 2.0) { - targetY = 15 + touchHeight / 2.0; - }else if (panSpeck.y > (screenHeight - touchHeight / 2.0 - 15)) { - targetY = screenHeight - touchHeight / 2.0 - 15; - }else{ - targetY = panSpeck.y; - } - - if (minSpace == left) { - newCenter = CGPointMake(touchWidth/2.0, targetY); - }else if (minSpace == right) { - newCenter = CGPointMake(touchWidth/2.0, targetY); - }else if (minSpace == top) { - newCenter = CGPointMake(touchWidth/2.0, touchWidth / 3); - }else { - newCenter = CGPointMake(touchWidth/2.0, screenHeight - touchWidth / 3); - } - [UIView animateWithDuration:0.25 animations:^{ - if (newCenter.y + self.frame.size.height / 2 > KScreenHeight - kSafeAreaBottomHeight - 44) { - self.center = CGPointMake(newCenter.x, KScreenHeight - self.frame.size.height / 2 - kSafeAreaBottomHeight - 44); - }else { - self.center = newCenter; - } - }]; - } -} - -#pragma mark - Getters And Setters -- (void)setEndTime:(long)endTime { - _endTime = endTime; - [Intratemporalstamp acquireInternetEngagementAboutAccomplishment:^(NSTimeInterval timeInterval) { - timeInterval = timeInterval * 1000; - long aTime = (endTime - timeInterval) / 1000; - [self computtowardsionIntrtowardsemporalAboutIntrtowardsemporal:aTime]; - } failure:^(NSError * _Nonnull error) { - NSDate *datenow = [NSDate date]; - long time2 = (long)([datenow timeIntervalSince1970]*1000); - long aTime = (endTime - time2) / 1000; - [self computtowardsionIntrtowardsemporalAboutIntrtowardsemporal:aTime]; - }]; -} - -- (void)computtowardsionIntrtowardsemporalAboutIntrtowardsemporal:(long)time { - NSInteger minute; - NSInteger hour; - NSInteger day = time / 24 / 3600; - time = time - day * 24 * 3600; - hour = time / 3600; - time = time - hour * 3600; - minute = time / 60; - if (day > 0) { - if (hour > 0) { - self.monicerSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Mine_New_User_Recharge_View_0"), day, hour, minute]; - } else { - self.monicerSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Mine_New_User_Recharge_View_1"), day, minute]; - } - } else { - if (hour > 0) { - self.monicerSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Mine_New_User_Recharge_View_2"), hour, minute]; - } else { - self.monicerSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Mine_New_User_Recharge_View_3"), minute]; - } - } -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_NewUserRecharge_entrance_background"]; - } - return _encourageIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:8 weight:UIFontWeightMedium]; - _monicerSequencignation.textColor = [UIColor whiteColor]; - _monicerSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _monicerSequencignation; -} - -@end diff --git a/YuMi/Modules/YMMine/View/SubViews/YUMIManeValidationIdentityRegard.h b/YuMi/Modules/YMMine/View/SubViews/YUMIManeValidationIdentityRegard.h deleted file mode 100644 index 5429a551..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/YUMIManeValidationIdentityRegard.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YMMineVerifIdentityView.h -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSUInteger,YUMI_MineVerifIdentityType ) { - YUMI_MineVerifIdentityType_Phone, - YUMI_MineVerifIdentityType_Sms, -}; -typedef void(^VerifIdentitySmsCodeBlock)(UIButton *sender); -@interface YUMIManeValidationIdentityRegard : UIView -@property (nonatomic, strong, readonly) UITextField *satisfperformanceEssayUniverse; -@property (nonatomic, strong, readonly) UIButton *smsCryptogramBtuton; -@property (nonatomic,copy) VerifIdentitySmsCodeBlock smsCryptogramDiscourage; -@property (nonatomic,assign) YUMI_MineVerifIdentityType type; -@property (nonatomic, strong) NSString *placeholder; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/YUMIManeValidationIdentityRegard.m b/YuMi/Modules/YMMine/View/SubViews/YUMIManeValidationIdentityRegard.m deleted file mode 100644 index 034d5c13..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/YUMIManeValidationIdentityRegard.m +++ /dev/null @@ -1,121 +0,0 @@ -// -// YMMineVerifIdentityView.m -// YUMI -// -// Created by YUMI on 2021/9/18. -// - -#import "YUMIManeValidationIdentityRegard.h" -#import -#import "DJDKMIMOMColor.h" - -@interface YUMIManeValidationIdentityRegard () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic, strong) UIView *burlywoodRegard; -@property (nonatomic, strong) UITextField *satisfperformanceEssayUniverse; -@property (nonatomic, strong) UIButton *smsCryptogramBtuton; -@end - -@implementation YUMIManeValidationIdentityRegard - - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Response -- (void)smsCryptogramBtutonPerformance:(UIButton *)sender { - if (self.smsCryptogramDiscourage) { - self.smsCryptogramDiscourage(sender); - } -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.stackView]; - [self addSubview:self.burlywoodRegard]; - - [self.stackView addArrangedSubview:self.satisfperformanceEssayUniverse]; - [self.stackView addArrangedSubview:self.smsCryptogramBtuton]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(50); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self).offset(15); - make.right.mas_equalTo(self).offset(-32); - make.top.bottom.mas_equalTo(self); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self).offset(5); - make.right.mas_equalTo(self).offset(-5); - make.bottom.mas_equalTo(self); - make.height.mas_equalTo(1); - }]; -} - -#pragma mark - Getters And Setters -- (void)setType:(YUMI_MineVerifIdentityType)type { - _type = type; - switch (_type) { - case YUMI_MineVerifIdentityType_Phone: - self.smsCryptogramBtuton.hidden = YES; - break; - default: - break; - } -} - -- (void)setPlaceholder:(NSString *)placeholder { - _placeholder = placeholder; - self.satisfperformanceEssayUniverse.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholder attributes:@{NSFontAttributeName : self.satisfperformanceEssayUniverse.font, NSForegroundColorAttributeName : [DJDKMIMOMColor instantEssayPrettify]}]; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentCenter; - _stackView.spacing = 10; - } - return _stackView; -} - -- (UITextField *)satisfperformanceEssayUniverse { - if (!_satisfperformanceEssayUniverse) { - _satisfperformanceEssayUniverse = [[UITextField alloc] init]; - _satisfperformanceEssayUniverse.secureTextEntry = YES; - _satisfperformanceEssayUniverse.font = [UIFont systemFontOfSize:13]; - _satisfperformanceEssayUniverse.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _satisfperformanceEssayUniverse.tintColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - } - return _satisfperformanceEssayUniverse; -} - -- (UIButton *)smsCryptogramBtuton { - if (!_smsCryptogramBtuton) { - _smsCryptogramBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_smsCryptogramBtuton setTitle:YMLocalizedString(@"YUMI_Mine_Verif_Identity_View_0") forState:UIControlStateNormal]; - [_smsCryptogramBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionMainPrettify] forState:UIControlStateNormal]; - [_smsCryptogramBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionUnderlinePrettify] forState:UIControlStateDisabled]; - _smsCryptogramBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - _smsCryptogramBtuton.layer.masksToBounds = YES; - _smsCryptogramBtuton.layer.cornerRadius = 10; - [_smsCryptogramBtuton addTarget:self action:@selector(smsCryptogramBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_smsCryptogramBtuton setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - } - return _smsCryptogramBtuton; -} - -@end diff --git a/YuMi/Modules/YMMine/View/SubViews/YUMITerminalImpressionNevRegard.h b/YuMi/Modules/YMMine/View/SubViews/YUMITerminalImpressionNevRegard.h deleted file mode 100644 index 62311a72..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/YUMITerminalImpressionNevRegard.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YMFootPrintNavView.h -// YUMI -// -// Created by YUMI on 2022/7/26. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class YUMITerminalImpressionNevRegard; -@protocol FBCFootPrintNevRegardRepresendtation - -- (void)yUMITerminalImpressionNevRegard:(YUMITerminalImpressionNevRegard *)view didClickBackButton:(UIButton *)sender; -- (void)yUMITerminalImpressionNevRegard:(YUMITerminalImpressionNevRegard *)view didClickClearButton:(UIButton *)sender; - -@end - -@interface YUMITerminalImpressionNevRegard : UIView - -@property (nonatomic,weak) id delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/SubViews/YUMITerminalImpressionNevRegard.m b/YuMi/Modules/YMMine/View/SubViews/YUMITerminalImpressionNevRegard.m deleted file mode 100644 index 4bddc82a..00000000 --- a/YuMi/Modules/YMMine/View/SubViews/YUMITerminalImpressionNevRegard.m +++ /dev/null @@ -1,104 +0,0 @@ -// -// YMFootPrintNavView.m -// YUMI -// -// Created by YUMI on 2022/7/26. -// - -#import "YUMITerminalImpressionNevRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIButton+EnlargeTouchArea.h" - -@interface YUMITerminalImpressionNevRegard () - -@property (nonatomic,strong) UIButton *backButton; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic, strong) UIButton *instanllingBtuton; - -@end - - -@implementation YUMITerminalImpressionNevRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Response -- (void)encourageBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMITerminalImpressionNevRegard:didClickBackButton:)]) { - [self.delegate yUMITerminalImpressionNevRegard:self didClickBackButton:sender]; - } -} - -- (void)prohibititinctBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMITerminalImpressionNevRegard:didClickClearButton:)]) { - [self.delegate yUMITerminalImpressionNevRegard:self didClickClearButton:sender]; - } -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - [self addSubview:self.backButton]; - [self addSubview:self.titleLabel]; - [self addSubview:self.instanllingBtuton]; -} - -- (void)initChildLyRestrictions { - [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(15); - make.centerY.equalTo(self.mas_bottom).mas_offset(-22); - }]; - [self.instanllingBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-15); - make.centerY.equalTo(self.mas_bottom).mas_offset(-22); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.centerY.equalTo(self.mas_bottom).mas_offset(-22); - }]; -} - -#pragma mark - Getters And Setters -- (UIButton *)backButton { - if (!_backButton) { - _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backButton setImage:[UIImage imageNamed:@"yumi_same_title_back"] forState:UIControlStateNormal]; - _backButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; - [_backButton addTarget:self action:@selector(encourageBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_backButton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:10]; - } - return _backButton; -} - -- (UIButton *)instanllingBtuton { - if (!_instanllingBtuton) { - _instanllingBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_instanllingBtuton setTitle:YMLocalizedString(@"YUMI_Foot_Print_Nav_View_0") forState:UIControlStateNormal]; - _instanllingBtuton.titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - [_instanllingBtuton setTitleColor:[DJDKMIMOMColor essayTertiusPrettify] forState:UIControlStateNormal]; - [_instanllingBtuton addTarget:self action:@selector(prohibititinctBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_instanllingBtuton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:10]; - } - return _instanllingBtuton; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; - _titleLabel.text = YMLocalizedString(@"YUMI_Foot_Print_Nav_View_1"); - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMMine/View/XPButton.h b/YuMi/Modules/YMMine/View/XPButton.h new file mode 100644 index 00000000..ab0cf30e --- /dev/null +++ b/YuMi/Modules/YMMine/View/XPButton.h @@ -0,0 +1,43 @@ +// +// YMButton.h +// YUMI +// +// Created by XY on 2023/2/21. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSUInteger, XPButtonStyle){ + XPButtonImageLeft = 0, //图片在左 + XPButtonImageRight = 1, //图片在右 + XPButtonImageTop = 2, //图片在上 + XPButtonImageBottom = 3, //图片在下 +}; + +@interface XPButton : UIButton + +/** + 图片的位置,上、下、左、右,默认是图片居左 + */ +@property (nonatomic, assign) XPButtonStyle buttonStyle; + +/** + 文字与图片之间的间距,默认是0 + */ +@property (nonatomic, assign) CGFloat padding; + +/** + 创建button + + @param buttonType button的类型 + @param space 图片距离button的边距,如果图片比较大的,此时有效果; + 如果图片比较小,没有效果,默认居中; + @return button + */ ++ (id)buttonWithType:(UIButtonType)buttonType withSpace:(CGFloat)space; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/XPButton.m b/YuMi/Modules/YMMine/View/XPButton.m new file mode 100644 index 00000000..ff4ab3be --- /dev/null +++ b/YuMi/Modules/YMMine/View/XPButton.m @@ -0,0 +1,80 @@ +// +// YMButton.m +// YUMI +// +// Created by XY on 2023/2/21. +// + +#import "XPButton.h" + +@interface XPButton() + +/** + 图片距离上下的距离 + */ +@property (nonatomic, assign) CGFloat space; + +@end + +@implementation XPButton + ++ (id)buttonWithType:(UIButtonType)buttonType withSpace:(CGFloat)space { + XPButton *button = [super buttonWithType:buttonType]; + button.space = space; + return button; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + //文案的宽度 + CGFloat labelWidth = self.titleLabel.frame.size.width; + //文案的高度 + CGFloat labelHeight = self.titleLabel.frame.size.height; + //button的image + UIImage *image = self.imageView.image; + + switch (self.buttonStyle) { + case XPButtonImageLeft: { + //设置后的image显示的高度 + CGFloat imageHeight = self.frame.size.height - (2 * self.space); + //文案和图片居中显示时距离两边的距离 + CGFloat edgeSpace = (self.frame.size.width - imageHeight - labelWidth - self.padding) / 2; + self.imageEdgeInsets = UIEdgeInsetsMake(self.space, edgeSpace, self.space, edgeSpace + labelWidth + self.padding); + self.titleEdgeInsets = UIEdgeInsetsMake(0, -image.size.width + imageHeight + self.padding, 0, 0); + } + break; + case XPButtonImageRight: { + //设置后的image显示的高度 + CGFloat imageHeight = self.frame.size.height - (2 * self.space); + //文案和图片居中显示时距离两边的距离 + CGFloat edgeSpace = (self.frame.size.width - imageHeight - labelWidth - self.padding) / 2; + self.imageEdgeInsets = UIEdgeInsetsMake(self.space, edgeSpace + labelWidth + self.padding, self.space, edgeSpace); + self.titleEdgeInsets = UIEdgeInsetsMake(0, -image.size.width - self.padding - imageHeight, 0, 0); + } + break; + case XPButtonImageTop: { + //设置后的image显示的高度 + CGFloat imageHeight = self.frame.size.height - (2 * self.space) - labelHeight - self.padding; + if (imageHeight > image.size.height) { + imageHeight = image.size.height; + } + self.imageEdgeInsets = UIEdgeInsetsMake(self.space, (self.frame.size.width - imageHeight) / 2, self.space + labelHeight + self.padding, (self.frame.size.width - imageHeight) / 2); + self.titleEdgeInsets = UIEdgeInsetsMake(self.space + imageHeight + self.padding, -image.size.width, self.space, 0); + } + break; + case XPButtonImageBottom: { + //设置后的image显示的高度 + CGFloat imageHeight = self.frame.size.height - (2 * self.space) - labelHeight - self.padding; + if (imageHeight > image.size.height) { + imageHeight = image.size.height; + } + self.imageEdgeInsets = UIEdgeInsetsMake(self.space + labelHeight + self.padding, (self.frame.size.width - imageHeight) / 2, self.space, (self.frame.size.width - imageHeight) / 2); + self.titleEdgeInsets = UIEdgeInsetsMake(self.space, -image.size.width, self.padding + imageHeight + self.space, 0); + } + break; + default: + break; + } +} + +@end diff --git a/YuMi/Modules/YMMine/View/XPMineCollectRoomListViewController.h b/YuMi/Modules/YMMine/View/XPMineCollectRoomListViewController.h new file mode 100644 index 00000000..6fa44aea --- /dev/null +++ b/YuMi/Modules/YMMine/View/XPMineCollectRoomListViewController.h @@ -0,0 +1,16 @@ +// +// YMMineCollectRoomListViewController.h +// YUMI +// +// Created by YUMI on 2022/7/27. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineCollectRoomListViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/XPMineCollectRoomListViewController.m b/YuMi/Modules/YMMine/View/XPMineCollectRoomListViewController.m new file mode 100644 index 00000000..3844138d --- /dev/null +++ b/YuMi/Modules/YMMine/View/XPMineCollectRoomListViewController.m @@ -0,0 +1,342 @@ +// +// YMMineCollectRoomListViewController.m +// YUMI +// +// Created by YUMI on 2022/7/27. +// + +#import "XPMineCollectRoomListViewController.h" +///Third +#import +#import +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "UIImage+Utils.h" +#import "StatisticsServiceHelper.h" +///Model +#import "HomeCollectRoomModel.h" +///View +#import "XPHomeCollectRoomTableViewCell.h" +#import "XPMineVisitorEmptyTableViewCell.h" +///P +#import "XPMineCollectRoomListPresenter.h" +#import "XPMineCollectRoomListProtocol.h" +///VC +#import "XPRoomViewController.h" +#import "XPMineCollectPartyRoomViewController.h" + +///记录最后选中的tab +static NSString *lastSelectTab = @"lastSelectTab"; + +@interface XPMineCollectRoomListViewController () + +@property (nonatomic, strong) JXCategoryListContainerView *listContainerView; +///标题 +@property (nonatomic,strong) NSArray *titles; +///滑块 +@property (nonatomic,strong) JXCategoryTitleView *titleView; + +@property (nonatomic,strong) XPMineCollectPartyRoomViewController *partyVC; +///个播房的 +@property (nonatomic, strong) XPMineCollectPartyRoomViewController *anchorRoomListVC; + +///更多数据 +@property (nonatomic,assign) BOOL hasNoMoreData; +///底部编辑容器 +@property (nonatomic, strong) UIView *bottomView; +///全选按钮 +@property (nonatomic, strong) UIButton *allSelectBtn; +///删除按钮 +@property (nonatomic, strong) UIButton *deleteBtn; +///管理 +@property (nonatomic, strong) UIButton *managerBtn; + +@end + +@implementation XPMineCollectRoomListViewController + +- (XPMineCollectRoomListPresenter *)createPresenter { + return [[XPMineCollectRoomListPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + [self addNavigationItemWithItems:@[self.managerBtn] isLeft:NO]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventcollection_editbutton_show]; +} + +- (void)managerBtnAction:(UIButton *)sender { + sender.selected = !sender.isSelected; + if (sender.isSelected) {//开始编辑 + self.partyVC.isEdit = YES; + self.anchorRoomListVC.isEdit = YES; + self.bottomView.hidden = NO; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventcollection_editbutton_click]; + } else {//完成编辑 + self.bottomView.hidden = YES; + self.allSelectBtn.selected = NO; + self.partyVC.isEdit = NO; + self.anchorRoomListVC.isEdit = NO; + self.allSelectBtn.selected = NO; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventcollection_editbutton_complete_click]; + } +} + +#pragma mark - JXCategoryListContainerViewDelegate +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { + return self.titles.count; +} + +// 根据下标 index 返回对应遵守并实现 `JXCategoryListContentViewDelegate` 协议的列表实例 +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { + if (index == 0) { + return self.partyVC; + }else if (index == 1) { + return self.anchorRoomListVC; + } + return nil; +} + +#pragma mark - JXCategoryViewDelegate +- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { + //记录最后选中的index + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + [defaults setObject:@(index) forKey:lastSelectTab]; + [defaults synchronize]; + + self.managerBtn.selected = NO; + self.allSelectBtn.selected = NO; + self.bottomView.hidden = YES; + self.partyVC.isEdit = NO; + self.anchorRoomListVC.isEdit = NO; +} + +#pragma mark - XPMineCollectRoomListProtocol +- (void)deleteCollectRoomSuccess { + [self showSuccessToast:YMLocalizedString(@"XPMineCollectRoomListViewController0")]; + if (self.titleView.selectedIndex == 0) { + [self.partyVC headerRefresh]; + } else { + [self.anchorRoomListVC headerRefresh]; + } + self.allSelectBtn.selected = NO; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMineCollectRoomListViewController1"); + [self.view addSubview:self.titleView]; + [self.view addSubview:self.listContainerView]; + [self.view addSubview:self.bottomView]; + [self.bottomView addSubview:self.allSelectBtn]; + [self.bottomView addSubview:self.deleteBtn]; +} + +- (void)initSubViewConstraints { + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.view); + make.width.mas_equalTo(180); + make.top.mas_equalTo(0); + make.height.mas_equalTo(44); + }]; + [self.listContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.top.mas_equalTo(self.titleView.mas_bottom); + }]; + [self.bottomView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(64+kSafeAreaBottomHeight); + make.left.bottom.right.mas_equalTo(0); + }]; + [self.allSelectBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(64); + make.height.mas_equalTo(22); + make.left.mas_equalTo(15); + make.top.mas_equalTo(18); + }]; + [self.deleteBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-15); + make.centerY.mas_equalTo(self.allSelectBtn); + make.size.mas_equalTo(CGSizeMake(72, 24)); + }]; +} + +#pragma mark - action +- (void)allSelectBtnAction:(UIButton *)sender { + sender.selected = !sender.selected; + if (self.titleView.selectedIndex == 0) { + self.partyVC.isSelectAll = sender.selected; + } else { + self.anchorRoomListVC.isSelectAll = sender.selected; + } + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventcollection_selectall_click]; +} + +- (void)deleteBtnAction:(UIButton *)sender { + if (self.titleView.selectedIndex == 0) { + NSMutableArray *roomUidsArray = [NSMutableArray array]; + for (HomeCollectRoomModel *model in self.partyVC.datasource) { + if (model.isSelected) { + [roomUidsArray addObject:model.roomUid]; + } + } + if (roomUidsArray.count) { + NSString *roomUids = [roomUidsArray componentsJoinedByString:@","]; + [self.presenter deletecollectRoomWithRoomUids:roomUids]; + } else { + [self showErrorToast:YMLocalizedString(@"XPMineCollectRoomListViewController2")]; + } + } else { + NSMutableArray *roomUidsArray = [NSMutableArray array]; + for (HomeCollectRoomModel *model in self.anchorRoomListVC.datasource) { + if (model.isSelected) { + [roomUidsArray addObject:model.roomUid]; + } + } + if (roomUidsArray.count) { + NSString *roomUids = [roomUidsArray componentsJoinedByString:@","]; + [self.presenter deletecollectRoomWithRoomUids:roomUids]; + } else { + [self showErrorToast:YMLocalizedString(@"XPMineCollectRoomListViewController3")]; + } + } + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventcollection_delete_click]; +} + +#pragma mark XPMineCollectPartyRoomViewControllerDelegate +///全选 +- (void)xPMineCollectPartyRoomViewControllerSelectAll:(BOOL)selectAll { + self.allSelectBtn.selected = selectAll; +} + +#pragma mark - Getters And Setters +- (UIView *)bottomView { + if (!_bottomView) { + _bottomView = [[UIView alloc] init]; + _bottomView.backgroundColor = [UIColor whiteColor]; + _bottomView.hidden = YES; + UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, 64+kSafeAreaBottomHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(8, 8)]; + CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; + maskLayer.frame = CGRectMake(0, 0, KScreenWidth, 64+kSafeAreaBottomHeight); + maskLayer.path = maskPath.CGPath; + _bottomView.layer.mask = maskLayer; + } + return _bottomView; +} + +- (UIButton *)allSelectBtn { + if (!_allSelectBtn) { + UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; + button.titleLabel.font = [UIFont systemFontOfSize:16]; + [button addTarget:self action:@selector(allSelectBtnAction:) forControlEvents:UIControlEventTouchUpInside]; + [button setTitle:YMLocalizedString(@"XPMineCollectRoomListViewController4") forState:UIControlStateNormal]; + [button setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + [button setImage:[UIImage imageNamed:@"collect_room_edit_normal"] forState:UIControlStateNormal]; + [button setImage:[UIImage imageNamed:@"collect_room_edit_selected"] forState:UIControlStateSelected]; + _allSelectBtn = button; + } + return _allSelectBtn; +} + +- (UIButton *)managerBtn { + if (!_managerBtn) { + UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; + button.titleLabel.font = [UIFont systemFontOfSize:13]; + [button addTarget:self action:@selector(managerBtnAction:) forControlEvents:UIControlEventTouchUpInside]; + [button setTitle:YMLocalizedString(@"XPMineCollectRoomListViewController5") forState:UIControlStateNormal]; + [button setTitle:YMLocalizedString(@"XPMineCollectRoomListViewController6") forState:UIControlStateSelected]; + [button setTitleColor:UIColorFromRGB(0x999999) forState:UIControlStateNormal]; + _managerBtn = button; + } + return _managerBtn; +} + +- (UIButton *)deleteBtn { + if (!_deleteBtn) { + UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; + button.titleLabel.font = [UIFont systemFontOfSize:14]; + [button addTarget:self action:@selector(deleteBtnAction:) forControlEvents:UIControlEventTouchUpInside]; + [button setTitle:YMLocalizedString(@"XPMineCollectRoomListViewController7") forState:UIControlStateNormal]; + [button setTitleColor:UIColorFromRGB(0xFB486A) forState:UIControlStateNormal]; + button.layer.cornerRadius = 12; + button.layer.masksToBounds = YES; + button.layer.borderWidth = 1; + button.layer.borderColor = UIColorFromRGB(0xFB486A).CGColor; + _deleteBtn = button; + } + return _deleteBtn; +} + +#pragma mark - Getters And Setters +- (JXCategoryListContainerView *)listContainerView { + if (!_listContainerView) { + _listContainerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; + _listContainerView.scrollView.scrollEnabled = YES; + _listContainerView.scrollView.tag = 1000; + _listContainerView.listCellBackgroundColor = [UIColor clearColor]; + } + return _listContainerView; +} + +- (XPMineCollectPartyRoomViewController *)partyVC { + if (!_partyVC) { + _partyVC = [[XPMineCollectPartyRoomViewController alloc] init]; + _partyVC.type = MineCollectRoomTypeParty; + _partyVC.delegate = self; + } + return _partyVC; +} + +- (XPMineCollectPartyRoomViewController *)anchorRoomListVC { + if (!_anchorRoomListVC) { + _anchorRoomListVC = [[XPMineCollectPartyRoomViewController alloc] init]; + _anchorRoomListVC.type = MineCollectRoomTypeAnchor; + _anchorRoomListVC.delegate = self; + } + return _anchorRoomListVC; +} + +- (NSArray *)titles { + if (!_titles) { + _titles = @[YMLocalizedString(@"XPMineCollectRoomListViewController8")]; + } + return _titles; +} + +- (JXCategoryTitleView *)titleView { + if (!_titleView) { + _titleView = [[JXCategoryTitleView alloc] initWithFrame:CGRectZero]; + _titleView.backgroundColor =[UIColor clearColor]; + _titleView.titleColor = [DJDKMIMOMColor secondTextColor]; + _titleView.titleSelectedColor = [DJDKMIMOMColor mainTextColor]; + _titleView.titleFont = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; + _titleView.titleSelectedFont = [UIFont systemFontOfSize:14 weight:UIFontWeightHeavy]; + _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; + _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; + _titleView.averageCellSpacingEnabled = YES; + _titleView.listContainer = self.listContainerView; + _titleView.titles = self.titles; + _titleView.delegate = self; + + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSNumber *index = [defaults objectForKey:lastSelectTab]; + _titleView.defaultSelectedIndex = index.intValue; + + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventcollection_entry eventAttributes:@{@"defaultTab" : self.titles[index.intValue]}]; + + JXCategoryIndicatorImageView *lineView = [[JXCategoryIndicatorImageView alloc] init]; + lineView.indicatorImageViewSize = CGSizeMake(50, 8); + lineView.verticalMargin = 12; + lineView.indicatorImageView.image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0x5BC8F8),UIColorFromRGB(0x66D9D9)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(50, 8)]; + lineView.indicatorImageView.layer.masksToBounds = YES; + lineView.indicatorImageView.layer.cornerRadius = 4; + _titleView.indicators = @[lineView]; + } + return _titleView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/XPMineFansTeamViewController.h b/YuMi/Modules/YMMine/View/XPMineFansTeamViewController.h new file mode 100644 index 00000000..a127c64b --- /dev/null +++ b/YuMi/Modules/YMMine/View/XPMineFansTeamViewController.h @@ -0,0 +1,16 @@ +// +// YMMineFansTeamViewController.h +// YUMI +// +// Created by YUMI on 2022/4/8. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineFansTeamViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/XPMineFansTeamViewController.m b/YuMi/Modules/YMMine/View/XPMineFansTeamViewController.m new file mode 100644 index 00000000..ea0a3fa7 --- /dev/null +++ b/YuMi/Modules/YMMine/View/XPMineFansTeamViewController.m @@ -0,0 +1,142 @@ +// +// YMMineFansTeamViewController.m +// YUMI +// +// Created by YUMI on 2022/4/8. +// + +#import "XPMineFansTeamViewController.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NSArray+Safe.h" +#import "ClientConfig.h" +///Model +#import "XPMineAnchorFansTeamModel.h" +///View +#import "XPMineAnchorFansTeamTableViewCell.h" +#import "XPMineVisitorEmptyTableViewCell.h" +///P +#import "XPMineFansTeamPresenter.h" +#import "XPMineAnchorFansTeamProtocol.h" +///VC +#import "XPMineUserInfoViewController.h" +#import "XPMineSimpleUserInfoViewController.h" +#import "SessionViewController.h" + +@interface XPMineFansTeamViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +///当前页数 +@property (nonatomic,assign) int page; +///更多数据 +@property (nonatomic,assign) BOOL hasNoMoreData; +@end + +@implementation XPMineFansTeamViewController + +- (XPMineFansTeamPresenter *)createPresenter { + return [[XPMineFansTeamPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + [self.presenter getAnchorFansTeamList:self.page pageSize:100 state:0]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMineFansTeamViewController0"); + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +#pragma mark - XPMineAnchorFansTeamProtocol +- (void)getAnchorFansTeamListSuccess:(NSArray *)array state:(int)state { + [self.datasource addObjectsFromArray:array]; + [self.tableView reloadData]; +} + +- (void)getAnchorFansTeamListFail:(int)state { + [self.tableView reloadData]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPMineAnchorFansTeamTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineAnchorFansTeamTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineAnchorFansTeamTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineAnchorFansTeamTableViewCell class])]; + } + cell.item = [self.datasource safeObjectAtIndex1:indexPath.row]; + return cell; + } + + XPMineVisitorEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineVisitorEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineVisitorEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineVisitorEmptyTableViewCell class])]; + } + cell.emptyTitle = YMLocalizedString(@"XPMineFansTeamViewController1"); + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + XPMineAnchorFansTeamModel *item = [self.datasource safeObjectAtIndex1:indexPath.row]; + + if ([ClientConfig shareConfig].canOpen) { + XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init]; + userInfoVC.uid = item.teamUid; + [self.navigationController pushViewController:userInfoVC animated:YES]; + }else{ + XPMineSimpleUserInfoViewController * userInfoVC = [[XPMineSimpleUserInfoViewController alloc] init]; + userInfoVC.uid = item.teamUid; + [self.navigationController pushViewController:userInfoVC animated:YES]; + } +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return self.datasource.count > 0 ? 56 : 400; +} + +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + _tableView.rowHeight = 56; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPMineVisitorEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineVisitorEmptyTableViewCell class])]; + [_tableView registerClass:[XPMineAnchorFansTeamTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineAnchorFansTeamTableViewCell class])]; + } + return _tableView; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + + +@end diff --git a/YuMi/Modules/YMMine/View/XPMineFootPrintViewController.h b/YuMi/Modules/YMMine/View/XPMineFootPrintViewController.h new file mode 100644 index 00000000..69328c87 --- /dev/null +++ b/YuMi/Modules/YMMine/View/XPMineFootPrintViewController.h @@ -0,0 +1,16 @@ +// +// YMMineFootPrintViewController.h +// YUMI +// +// Created by YUMI on 2022/7/26. +// 足迹/进房记录 + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineFootPrintViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/XPMineFootPrintViewController.m b/YuMi/Modules/YMMine/View/XPMineFootPrintViewController.m new file mode 100644 index 00000000..8dec0243 --- /dev/null +++ b/YuMi/Modules/YMMine/View/XPMineFootPrintViewController.m @@ -0,0 +1,248 @@ +// +// YMMineFootPrintViewController.m +// YUMI +// +// Created by YUMI on 2022/7/26. +// + +#import "XPMineFootPrintViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" +///Model +#import "XPMineFootPrintModel.h" +///View +#import "XPMineFootPrintTableViewCell.h" +#import "XPMineVisitorEmptyTableViewCell.h" +#import "XPFootPrintNavView.h" +///P +#import "XPMineFootPrintPresenter.h" +#import "XPMineFootPrintProtocol.h" +///VC +#import "XPRoomViewController.h" + +@interface XPMineFootPrintViewController() + +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +///当前页数 +@property (nonatomic,assign) int page; +///更多数据 +@property (nonatomic,assign) BOOL hasNoMoreData; +@property (nonatomic, strong) XPFootPrintNavView *navView; + +@end + +@implementation XPMineFootPrintViewController + +- (XPMineFootPrintPresenter *)createPresenter { + return [[XPMineFootPrintPresenter alloc] init]; +} + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initHeaderAndFooterRrfresh]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - 下拉刷新 +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; + + [self headerRefresh]; +} + +#pragma mark - 刷新的fangfa +- (void)headerRefresh { + self.page = 1; + [self.presenter getFootPrintListWithPage:self.page pageSize:20 state:0]; +} + +- (void)footerRefresh { + if (self.hasNoMoreData) { + [self showErrorToast:YMLocalizedString(@"XPMineFootPrintViewController0")]; + return; + } + self.page++; + [self.presenter getFootPrintListWithPage:self.page pageSize:20 state:1]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.navView]; + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.navView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.height.mas_equalTo(kNavigationHeight); + }]; + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.top.mas_equalTo(self.navView.mas_bottom); + }]; +} + +#pragma mark - XPMineFootPrintProtocol +- (void)getFootPrintListSuccess:(NSArray *)array state:(int)state { + if (state == 0) { + [self.datasource removeAllObjects]; + [self.tableView.mj_header endRefreshing]; + } + [self.tableView.mj_footer endRefreshing]; + if (array.count > 0) { + self.hasNoMoreData = NO; + [self.datasource addObjectsFromArray:array]; + } else { + self.hasNoMoreData = YES; + [self.tableView.mj_footer endRefreshingWithNoMoreData]; + } + [self.tableView reloadData]; +} + +- (void)getFootPrintListFail:(int)state { + if (state == 0) { + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } +} + +///清除进房记录成功 +- (void)cleanFootPrintSuccess { + [self showSuccessToast:YMLocalizedString(@"XPMineFootPrintViewController1")]; + [self headerRefresh]; +} + +- (void)collectRoomSuccess { + [self showSuccessToast:YMLocalizedString(@"XPMineFootPrintViewController2")]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPMineFootPrintTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineFootPrintTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineFootPrintTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineFootPrintTableViewCell class])]; + } + cell.item = [self.datasource safeObjectAtIndex1:indexPath.row]; + return cell; + } + + XPMineVisitorEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineVisitorEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineVisitorEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineVisitorEmptyTableViewCell class])]; + } + cell.emptyTitle = YMLocalizedString(@"XPMineFootPrintViewController3"); + return cell; +} + +- (UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath API_AVAILABLE(ios(11.0)){ + [tableView setEditing:NO animated:YES]; + __weak typeof(self) weakSelf = self; + UIContextualAction *deleteAction = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleDestructive title:YMLocalizedString(@"XPMineFootPrintViewController4") handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) { + XPMineFootPrintModel *item = [weakSelf.datasource safeObjectAtIndex1:indexPath.row]; + [weakSelf.presenter cleanFootPrint:item.roomUid]; + completionHandler(true); + }]; + UIContextualAction *collectAction = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleNormal title:YMLocalizedString(@"XPMineFootPrintViewController5") handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) { + XPMineFootPrintModel *item = [weakSelf.datasource safeObjectAtIndex1:indexPath.row]; + [weakSelf.presenter collectRoomWithRoomUid:item.roomUid]; + completionHandler(true); + }]; + deleteAction.backgroundColor = [DJDKMIMOMColor textThirdColor]; + collectAction.backgroundColor = UIColorFromRGB(0xFFA027); + UISwipeActionsConfiguration *actions = [UISwipeActionsConfiguration configurationWithActions:@[collectAction, deleteAction]]; + actions.performsFirstActionWithFullSwipe = NO; + return actions; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count == 0) { + return 85; + } else { + return 66; + } +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPMineFootPrintModel *model = [self.datasource safeObjectAtIndex1:indexPath.row]; + if (model.roomUid.integerValue > 0) { + [XPRoomViewController openRoom:model.roomUid viewController:self]; + } + } +} + +#pragma mark - XPFootPrintNavViewDelegate +///点击了返回按钮 +- (void)xPFootPrintNavView:(XPFootPrintNavView *)view didClickBackButton:(UIButton *)sender { + [self.navigationController popViewControllerAnimated:YES]; +} + +///点击了清除按钮 +- (void)xPFootPrintNavView:(XPFootPrintNavView *)view didClickClearButton:(UIButton *)sender { + [self.presenter cleanFootPrint:nil]; +} + +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + _tableView.rowHeight = 65; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPMineVisitorEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineVisitorEmptyTableViewCell class])]; + [_tableView registerClass:[XPMineFootPrintTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineFootPrintTableViewCell class])]; + } + return _tableView; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + +- (XPFootPrintNavView *)navView { + if (!_navView) { + _navView = [[XPFootPrintNavView alloc] init]; + _navView.delegate = self; + } + return _navView; +} + +@end diff --git a/YuMi/Modules/YMMine/View/XPMineItemTableViewCell.h b/YuMi/Modules/YMMine/View/XPMineItemTableViewCell.h new file mode 100644 index 00000000..937db63e --- /dev/null +++ b/YuMi/Modules/YMMine/View/XPMineItemTableViewCell.h @@ -0,0 +1,21 @@ +// +// YMMineItemTableViewCell.h +// YUMI +// +// Created by XY on 2023/2/20. +// + +#import + +@class XPMineItemModel; +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineItemTableViewCell : UITableViewCell + +@property (nonatomic, strong) XPMineItemModel *itemModel; + +- (void)setCornerTop:(BOOL)isTop bottom:(BOOL)isBottom; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/XPMineItemTableViewCell.m b/YuMi/Modules/YMMine/View/XPMineItemTableViewCell.m new file mode 100644 index 00000000..a1c9c065 --- /dev/null +++ b/YuMi/Modules/YMMine/View/XPMineItemTableViewCell.m @@ -0,0 +1,195 @@ +// +// YMMineItemTableViewCell.m +// YUMI +// +// Created by XY on 2023/2/20. +// + +#import "XPMineItemTableViewCell.h" +#import "NetImageView.h" +#import +#import "DJDKMIMOMColor.h" +#import "UIView+Corner.h" +#import "YUMIMacroUitls.h" + +#import "XPMineItemModel.h" + +@interface XPMineItemTableViewCell() + +/// 容器 +@property (nonatomic, strong) UIView *containerView; +/// 图标 +@property (nonatomic, strong) NetImageView *iconImageView; +/// 标题 +@property (nonatomic, strong) UILabel *titleLabel; +/// 箭头 +@property (nonatomic, strong) UIImageView *arrowImageView; +/// 虚线 +@property (nonatomic, strong) UIView *dashLineView; +@property (nonatomic, strong) CAShapeLayer *shapeLayer; + +@end + +@implementation XPMineItemTableViewCell + +- (void)awakeFromNib { + [super awakeFromNib]; + // Initialization code +} + +- (void)setSelected:(BOOL)selected animated:(BOOL)animated { + [super setSelected:selected animated:animated]; + + // Configure the view for the selected state +} + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; + if (self) { + self.selectionStyle = UITableViewCellSelectionStyleNone; + self.backgroundColor = UIColor.clearColor; + self.contentView.backgroundColor = UIColor.clearColor; + [self createUI]; + } + return self; +} + +- (void)createUI { + [self.contentView addSubview:self.containerView]; + [self.containerView addSubview:self.iconImageView]; + [self.containerView addSubview:self.titleLabel]; + [self.containerView addSubview:self.arrowImageView]; + [self.containerView addSubview:self.dashLineView]; + + [self.containerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(16); + make.right.mas_equalTo(-16); + make.top.bottom.mas_equalTo(0); + }]; + [self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(12); + make.centerY.mas_equalTo(self.containerView); + make.width.height.mas_equalTo(40); + }]; + [self.arrowImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(0); + make.width.mas_equalTo(40); + make.height.mas_equalTo(12); + make.centerY.mas_equalTo(self.containerView); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.iconImageView.mas_right).offset(2); + make.right.mas_equalTo(self.arrowImageView.mas_left).offset(-2); + make.centerY.mas_equalTo(self.containerView); + }]; + [self.dashLineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(22); + make.right.mas_equalTo(-8); + make.height.mas_equalTo(1); + make.bottom.mas_equalTo(0); + }]; + +} + +- (void)layoutSubviews { + [super layoutSubviews]; + if (self.shapeLayer.superlayer == nil && self.dashLineView.frame.size.width > 0) { + [self addDashLineLength:5 lineSpacing:5 lineColor:[UIColorFromRGB(0x939BA3) colorWithAlphaComponent:0.3]]; + } +} + +- (void)addDashLineLength:(int)lineLength lineSpacing:(int)lineSpacing lineColor:(UIColor *)lineColor { + [self.shapeLayer setBounds:self.dashLineView.bounds]; + [self.shapeLayer setPosition:CGPointMake(CGRectGetWidth(self.dashLineView.frame) / 2, CGRectGetHeight(self.dashLineView.frame))]; + [self.shapeLayer setFillColor:[UIColor clearColor].CGColor]; + [self.shapeLayer setStrokeColor:lineColor.CGColor]; + [self.shapeLayer setLineWidth:CGRectGetHeight(self.dashLineView.frame)]; + [self.shapeLayer setLineJoin:kCALineJoinRound]; + [self.shapeLayer setLineDashPattern:[NSArray arrayWithObjects:[NSNumber numberWithInt:lineLength], [NSNumber numberWithInt:lineSpacing], nil]]; + // 设置路径 + CGMutablePathRef path = CGPathCreateMutable(); + CGPathMoveToPoint(path, NULL, 0, 0); + CGPathAddLineToPoint(path, NULL,CGRectGetWidth(self.dashLineView.frame), 0); + [self.shapeLayer setPath:path]; + CGPathRelease(path); + // 把绘制好的虚线添加上来 + [self.dashLineView.layer addSublayer:self.shapeLayer]; +} + +- (void)setCornerTop:(BOOL)isTop bottom:(BOOL)isBottom { + if (isTop == NO && isBottom == NO) { + self.containerView.layer.cornerRadius = 0; + self.dashLineView.hidden = NO; + return; + } + if (isTop) { + self.containerView.layer.cornerRadius = 20.0; + self.containerView.layer.maskedCorners = kCALayerMinXMinYCorner | kCALayerMaxXMinYCorner; + self.dashLineView.hidden = NO; + return; + } + if (isBottom) { + self.containerView.layer.cornerRadius = 20.0; + self.containerView.layer.maskedCorners = kCALayerMinXMaxYCorner | kCALayerMaxXMaxYCorner; + self.dashLineView.hidden = YES; + return; + } +} + +- (void)setItemModel:(XPMineItemModel *)itemModel { + _itemModel = itemModel; + self.iconImageView.image = [UIImage imageNamed:itemModel.itemImageName]; + self.titleLabel.text = itemModel.itemName; +} + +#pragma mark - 懒加载 + +- (UIView *)containerView { + if (!_containerView) { + _containerView = [[UIView alloc] init]; + _containerView.backgroundColor = UIColor.whiteColor; + } + return _containerView; +} + +- (NetImageView *)iconImageView { + if (!_iconImageView) { + _iconImageView = [[NetImageView alloc] init]; + _iconImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _iconImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _titleLabel.font = [UIFont systemFontOfSize:12]; + } + return _titleLabel; +} + +- (UIImageView *)arrowImageView { + if (!_arrowImageView) { + _arrowImageView = [[UIImageView alloc] init]; + _arrowImageView.image = [UIImage imageNamed:@"common_right_arrow"]; + _arrowImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _arrowImageView; +} + +- (UIView *)dashLineView { + if (!_dashLineView) { + _dashLineView = [[UIView alloc] init]; + } + return _dashLineView; +} + +- (CAShapeLayer *)shapeLayer { + if (!_shapeLayer) { + _shapeLayer = [CAShapeLayer layer]; + } + return _shapeLayer; +} + +@end diff --git a/YuMi/Modules/YMMine/View/XPMineViewController.h b/YuMi/Modules/YMMine/View/XPMineViewController.h new file mode 100644 index 00000000..b7b196e1 --- /dev/null +++ b/YuMi/Modules/YMMine/View/XPMineViewController.h @@ -0,0 +1,16 @@ +// +// YMMineViewController.h +// YUMI +// +// Created by YUMI on 2021/9/16. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/XPMineViewController.m b/YuMi/Modules/YMMine/View/XPMineViewController.m new file mode 100644 index 00000000..2b90f5f1 --- /dev/null +++ b/YuMi/Modules/YMMine/View/XPMineViewController.m @@ -0,0 +1,677 @@ +// +// XPMineViewController.m +// YuMi +// +// Created by YuMi on 2021/9/16. +// + +#import "XPMineViewController.h" +///Third +#import +///Tool +#import "TTPopup.h" +#import "YUMIHtmlUrl.h" +#import "UIButton+EnlargeTouchArea.h" +#import "StatisticsServiceHelper.h" +#import "YUMIConstant.h" +#import "Api+Room.h" +#import "Api+RoomSetting.h" +#import "AccountInfoStorage.h" +#import "ClientConfig.h" +///Model +#import "XPMineItemModel.h" +#import "UserInfoModel.h" +#import "XPMineVisitorUnReadModel.h" +#import "ClanDetailInfoModel.h" +#import "HomeBannerInfoModel.h" +#import "XPMineFuntionItemModel.h" +#import "WalletInfoModel.h" +///P +#import "XPMineProtocol.h" +#import "XPMinePresent.h" +///View +#import "XPMineHeadItemTableViewCell.h" +#import "XPMineHeadView.h" +#import "XPHomeBannerTableViewCell.h" +#import "XPMineNewUserRechargeView.h" +#import "XPMineTheGuildCell.h" +#import "XPMinePersonalCenterCell.h" +#import "XPMineListCell.h" +///VC +#import "XPMineSettingViewController.h" +#import "XPMineUserInfoViewController.h" +#import "XPMineRechargeViewController.h" +#import "XPWebViewController.h" +#import "XPRoomViewController.h" +#import "XPMineDressUpViewController.h" +#import "XPDressUpShopViewController.h" +#import "XPMineFansViewController.h" +#import "XPMineAttentionViewController.h" +#import "XPMineVisitorViewController.h" +#import "XPMineFansTeamViewController.h" +#import "XPMineClanViewController.h" +#import "XPMineGuildViewController.h" +#import "XPMineFootPrintViewController.h" +#import "XPMineCollectRoomListViewController.h" +#import "XPMineMainGuildListVC.h" +#import "XPMineGiveDiamondVC.h" +#import "XPIAPRechargeViewController.h" +#import "XPIncomeRecordVC.h" +#import "XPNobleCenterViewController.h" +UIKIT_EXTERN NSString *kRequestRicket; + +@interface XPMineViewController () +///顶部背景 +@property (nonatomic, strong) UIView *bgImageView; + +@property (nonatomic,strong) UITableView *tableView; +///个人功能 +@property (nonatomic, strong) NSMutableArray *functionArray; +///banner列表 +@property (nonatomic, strong) NSMutableArray *bannerArray; +///头部 +@property (nonatomic,strong) XPMineHeadView *headView; +///用户信息 +@property (nonatomic,strong) UserInfoModel *userInfo; +///家族信息 +@property (nonatomic,strong) ClanDetailInfoModel *clanInfo; +///我的公会 +@property (nonatomic,strong) XPMineItemModel *guildItemModel; +///转赠钻石权限 +@property(nonatomic,assign)BOOL isHavePermission; +///点击我的房间时,防止出现多次点击 +@property (nonatomic,assign) BOOL isRefreshRoomInfo; +///是否正在请示数据,防止过多请求 +@property (nonatomic,assign) BOOL isRequestData; +@end + +@implementation XPMineViewController + + +- (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (XPMinePresent *)createPresenter { + return [[XPMinePresent alloc] init];; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventusercenter_recharge_card_show]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventusercenter_noble_card_show]; + + +} + +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + if([AccountInfoStorage instance].isRequestRicket == YES)return; + [self.presenter getUserInfo]; +} + +#pragma mark- 检查是否有转赠钻石权限 + +-(void)checkHaveGiveDiamondsPermission{ + ClientConfig *config = [ClientConfig shareConfig]; + NSArray *uidList = config.configInfo.giveDiamondErbanNoList; + for (id uid in uidList) { + NSString *getUid = [uid stringValue]; + if([getUid isEqualToString:@(self.userInfo.erbanNo).stringValue]){ + self.isHavePermission = YES; + break; + } + } + if(self.isHavePermission == YES)return; + for (id uid in config.configInfo.giveGiftErbanNoList) { + NSString *getUid = [uid stringValue]; + if([getUid isEqualToString:@(self.userInfo.erbanNo).stringValue]){ + self.isHavePermission = YES; + break; + } + } + if(self.isHavePermission == YES)return; + if(self.userInfo.userLevelVo.experLevelSeq >= config.configInfo.giveDiamondExperLevel){ + self.isHavePermission = YES; + return; + } + if(self.userInfo.userLevelVo.experLevelSeq >= config.configInfo.giveGiftExperLevel){ + self.isHavePermission = YES; + } +} + +#pragma mark - Response +- (void)settingButtonAction { + XPMineSettingViewController * settingVC = [[XPMineSettingViewController alloc] init]; + settingVC.userInfo = self.userInfo; + [self.navigationController pushViewController:settingVC animated:YES]; +} + +#pragma mark - Private Method +- (void)initSubViews { + XPMineFuntionItemModel *setItem = [XPMineFuntionItemModel new]; + setItem.centerName = YMLocalizedString(@"XPMineSettingViewController0"); + setItem.centerPic = @"mineview_set"; + setItem.skipType = XPMineItemType_My_Set; + [self.functionArray addObject:setItem]; + + [self.view addSubview:self.bgImageView]; + [self.view addSubview:self.tableView]; + // [self.view addSubview:self.settingButton]; + self.tableView.tableHeaderView = self.headView; + if (@available(iOS 15.0, *)) {//移除iOS15列表头默认增加的22高度 + self.tableView.sectionHeaderTopPadding = 0; + } + [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(requestRicketSuccess:) name:kRequestRicket object:nil]; +} +-(void)requestRicketSuccess:(NSNotification *)not{ + if([not.object isKindOfClass:[NSDictionary class]])return; + BOOL is = [not.object boolValue]; + if(is == YES){ + [self.presenter getUserInfo]; + } +} +- (void)initSubViewConstraints { + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(0); + }]; + + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.view); + make.left.right.bottom.mas_equalTo(self.view); + }]; +} + +- (void)pushViewControllerWithType:(NSInteger)type functionItem:(XPMineFuntionItemModel *)item { + switch (type) { + case XPMineItemType_My_Set:{ + [self settingButtonAction]; + break; + } + case XPMineItemType_Match_Relevance_Account: + [self pushWebViewWIthUrl:item.centerUrl]; + break; + case XPMineItemType_Foot_Print: + { + XPMineFootPrintViewController *vc = [[XPMineFootPrintViewController alloc] init]; + [self.navigationController pushViewController:vc animated:YES]; + } + break; + + case XPMineItemType_Account: + { + // XPMineRechargeViewController * rechargeVC + [self pushThirdPartyPayVC]; + } + break; + case XPMineItemType_Personinfo: + { + XPMineUserInfoViewController * infoVC = [[XPMineUserInfoViewController alloc] init]; + infoVC.uid = self.userInfo.uid; + [self.navigationController pushViewController:infoVC animated:YES]; + } + break; + case XPMineItemType_My_Room: + { + NSString* roomUid = [NSString stringWithFormat:@"%ld", (long)self.userInfo.uid]; + [XPRoomViewController openRoom:roomUid viewController:self]; + } + break; + case XPMineItemType_Collect_Room://收藏房间 + { + XPMineCollectRoomListViewController *collectVC = [[XPMineCollectRoomListViewController alloc] init]; + [self.navigationController pushViewController:collectVC animated:YES]; + } + break; + case XPMineItemType_My_Dressup: + { + XPMineDressUpViewController * dressUpVC = [[XPMineDressUpViewController alloc] init]; + [self.navigationController pushViewController:dressUpVC animated:YES]; + } + break; + case XPMineItemType_DressUp_Market: + { + XPDressUpShopViewController *dressUpShopVc = [[XPDressUpShopViewController alloc] init]; + [self.navigationController pushViewController:dressUpShopVc animated:YES]; + } + break; + case XPMineItemType_Fans_List: + { + XPMineFansViewController * fansVC = [[XPMineFansViewController alloc] init]; + fansVC.view.backgroundColor = [UIColor whiteColor]; + [self.navigationController pushViewController:fansVC animated:YES]; + } + break; + case XPMineItemType_Attention_List: + { + XPMineAttentionViewController * attentionVC = [[XPMineAttentionViewController alloc] init]; + [self.navigationController pushViewController:attentionVC animated:YES]; + } + break; + case XPMineItemType_Visitor: + { + self.headView.visitorUnReadCount = 0; + XPMineVisitorViewController *visitorVC = [[XPMineVisitorViewController alloc] init]; + [self.navigationController pushViewController:visitorVC animated:YES]; + } + break; + case XPMineItemType_Noble_Center: + { + XPNobleCenterViewController *nobleCenterVC = [[XPNobleCenterViewController alloc] init]; + [self.navigationController pushViewController:nobleCenterVC animated:YES]; + } + break; + case XPMineItemType_FansTeam: { + XPMineFansTeamViewController *fansTeamVc = [[XPMineFansTeamViewController alloc] init]; + [self.navigationController pushViewController:fansTeamVc animated:YES]; + } + break; + case XPMineItemType_My_Guild: + { + if (self.clanInfo.clan.elderUid.length > 0) { + XPMineClanViewController * clanVC = [[XPMineClanViewController alloc] init]; + clanVC.uid = [NSString stringWithFormat:@"%ld", self.userInfo.uid]; + [self.navigationController pushViewController:clanVC animated:YES]; + } else if(self.clanInfo.hall.hallId.length > 0) { + XPMineGuildViewController * guildVC = [[XPMineGuildViewController alloc] init]; + guildVC.ownerUid = self.clanInfo.hall.ownerUid; + guildVC.guildId = self.clanInfo.hall.hallId; + [self.navigationController pushViewController:guildVC animated:YES]; + } + + } + break; + default: + break; + } +} + + +- (void)pushWebViewWIthUrl:(NSString *)url { + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + webVC.url = url; + [self.navigationController pushViewController:webVC animated:YES]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 3; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + if (section == 2){ + return self.functionArray.count; + } + return 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (indexPath.section == 0) { + return 44; + + }else if (indexPath.section == 1) { + return self.isHavePermission ? 134 : 99; + } + return 60; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (indexPath.section == 0) { + + XPMineTheGuildCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineTheGuildCell class])]; + cell.clanInfo = self.clanInfo; + + return cell; + }else if (indexPath.section == 1) { + XPMinePersonalCenterCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMinePersonalCenterCell class])]; + cell.isHaveGiveDiamond = self.isHavePermission; + @kWeakify(self) + cell.clickAction = ^(int type){ + @kStrongify(self) + if (type == 0){ + [self pushMyRoomVC]; + } else if (type == 1){ + [self pushEarningsRecordVC]; + }else{ + [self pushGiveDiamondVC]; + } + }; + + cell.selectionStyle = UITableViewCellSelectionStyleNone; + return cell; + } else { + XPMineListCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineListCell class])]; + if (indexPath.row == 0 && self.functionArray.count > 1){ + [cell setCornerWithIsTop:YES isBottom:NO]; + }else if (indexPath.row == self.functionArray.count-1){ + if(self.functionArray.count == 1){ + [cell setCornerWithIsTop:YES isBottom:YES]; + }else{ + [cell setCornerWithIsTop:NO isBottom:YES]; + } + }else{ + [cell setCornerWithIsTop:NO isBottom:NO]; + } + + XPMineFuntionItemModel *model = self.functionArray[indexPath.row]; + cell.itemModel = model; + return cell; + } +} + +- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { + return 16; +} + +- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { + UIView * view = [[UIView alloc] init]; + view.backgroundColor = [UIColor clearColor]; + return view; +} +-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ + if (indexPath.section == 0){ + if( self.clanInfo.clan.elderUid > 0){ + XPMineClanViewController * clanVC = [[XPMineClanViewController alloc] init]; + clanVC.uid = self.clanInfo.clan.elderUid; + [self.navigationController pushViewController:clanVC animated:YES]; + return; + }else { + if(self.clanInfo.hall.ownerUid > 0){ + XPMineGuildViewController * hallVC = [[XPMineGuildViewController alloc] init]; + hallVC.ownerUid = self.clanInfo.hall.ownerUid; + hallVC.guildId = self.clanInfo.hall.hallId; + [self.navigationController pushViewController:hallVC animated:YES]; + return; + } + } + XPMineMainGuildListVC *gulidListVC = [XPMineMainGuildListVC new]; + [self.navigationController pushViewController:gulidListVC animated:YES]; + + return; + } + if (indexPath.section != 2)return; + XPMineFuntionItemModel *item = self.functionArray[indexPath.row]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventusercenter_function_click eventAttributes:@{@"functionName" : item.centerName}]; + [self pushViewControllerWithType:item.skipType functionItem:item]; +} +///转赠钻石 +-(void)pushGiveDiamondVC{ + XPMineGiveDiamondVC *giveDiamondVC = [[XPMineGiveDiamondVC alloc]init]; + giveDiamondVC.userInfo = self.userInfo; + [self.navigationController pushViewController:giveDiamondVC animated:YES]; +} +///点击充值 +-(void)pushThirdPartyPayVC{ + XPIAPRechargeViewController * webVC =[[XPIAPRechargeViewController alloc] init]; + [self.navigationController pushViewController:webVC animated:YES]; +} +///点击收益记录 +-(void)pushEarningsRecordVC{ + + XPIncomeRecordVC *incomeRecordVC = [XPIncomeRecordVC new]; + incomeRecordVC.clanInfo = self.clanInfo; + incomeRecordVC.userInfo = self.userInfo; + [self.navigationController pushViewController:incomeRecordVC animated:YES]; + +} +///点击我的房间 +-(void)pushMyRoomVC{ + if(self.isRefreshRoomInfo == YES)return; + self.isRefreshRoomInfo = YES; + NSString* roomUid = [NSString stringWithFormat:@"%ld", (long)self.userInfo.uid]; + [XPRoomViewController openRoom:roomUid viewController:self]; +} +#pragma mark - XPMineHeadViewDelegate +///点击头像 +- (void)xPMineHeadView:(XPMineHeadView *)view didClickAvatar:(UserInfoModel *)info { + [self pushViewControllerWithType:XPMineItemType_Personinfo functionItem:nil]; +} + +///点击了粉丝 +- (void)xpMineHeadViewClickFans { + [self pushViewControllerWithType:XPMineItemType_Fans_List functionItem:nil]; +} + +///点击了关注 +- (void)xpMineHeadViewClickAttention { + [self pushViewControllerWithType:XPMineItemType_Attention_List functionItem:nil]; +} + +///点击了技能卡 +- (void)xpMineHeadViewClickSkillCard { + [self pushViewControllerWithType:XPMineItemType_Skill_Card functionItem:nil]; +} + + +///点击了账户中心 +- (void)xpMineHeadViewClickAcount { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventusercenter_recharge_card_click]; + [self pushViewControllerWithType:XPMineItemType_Account functionItem:nil]; +} + +///点击了贵族中心 +- (void)xPMineHeadViewCliekNobleCenter { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventvipEntranceMeClick]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventusercenter_noble_card_click]; + [self pushViewControllerWithType:XPMineItemType_Noble_Center functionItem:nil]; +} + +#pragma mark - XPMineProtocol +///获取个人中心功能 +- (void)onGetMineFuntionItemSuccess:(NSArray *)items WithGroup:(nonnull dispatch_group_t)group{ + [self.functionArray removeAllObjects]; + [self.functionArray addObjectsFromArray:items]; + [self.functionArray enumerateObjectsUsingBlock:^(XPMineFuntionItemModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.skipType == XPMineItemType_CP || obj.skipType == XPMineItemType_My_Room) { + [self.functionArray removeObject:obj]; + } + }]; + NSMutableArray *array = [NSMutableArray array]; + for (XPMineFuntionItemModel *item in self.functionArray) { + [array addObject:item.centerName]; + } + NSString *trackName = [array componentsJoinedByString:@","]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventusercenter_function_show eventAttributes:@{@"functionName" : trackName}]; + dispatch_group_leave(group); +} +- (void)onGetMineFuntionItemFailWithGroup:(dispatch_group_t)group{ + dispatch_group_leave(group); +} + +///获取个人中心banner +- (void)onGetPersonalBannerListSuccess:(NSArray *)items WithGroup:(nonnull dispatch_group_t)group{ + [self.bannerArray removeAllObjects]; + [self.bannerArray addObjectsFromArray:items]; + dispatch_group_leave(group); + NSMutableArray *array = [NSMutableArray array]; + for (HomeBannerInfoModel *item in self.bannerArray) { + [array addObject:item.bannerId]; + } + NSString *trackName = [array componentsJoinedByString:@","]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventusercenter_banner_show eventAttributes:@{@"bannerId" : trackName}]; +} +-(void)onGetPersonalBannerListFailWithGroup:(dispatch_group_t)group{ + dispatch_group_leave(group); +} + +- (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo { + + @synchronized (self.presenter) { + ///防止重新注册时,获取到用户信息不全,调用接口时401 + if (!userInfo.isBindPhone && [ClientConfig shareConfig].iosPhoneBind) { + return; + } + if (userInfo.nick == nil || userInfo.avatar == nil ) { + return; + } + if(self.isRequestData == YES){ + return; + } + self.isRequestData = YES; + // 全局变量group + dispatch_group_t group =dispatch_group_create(); + // 并行队列 + dispatch_queue_t queue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0); + + dispatch_group_enter(group); + dispatch_group_async(group, queue, ^{ + [self.presenter getClanDetailInfoWithGroup:group]; + }); + + dispatch_group_enter(group); + dispatch_group_async(group, queue, ^{ + [self.presenter getUserWalletInfoWithGroup:group]; + }); + dispatch_group_enter(group); + dispatch_group_async(group, queue, ^{ + [self.presenter getPersonItemListWithGroup:group]; + }); + + dispatch_group_enter(group); + dispatch_group_async(group, queue, ^{ + [self.presenter getMineBannerListWithGroup:group]; + }); + dispatch_group_enter(group); + dispatch_group_async(group, queue, ^{ + [self.presenter getNobleInfoWithGroup:group]; + }); + dispatch_group_notify(group,dispatch_get_main_queue(), ^{ + self.isRequestData = NO; + self.userInfo = userInfo; + [self checkHaveGiveDiamondsPermission]; + userInfo.idAtt = [self.headView creatNameplateIdLabelAttribute:userInfo]; + [self.headView creatNameplateLevleAttribute:userInfo complete:^(NSMutableAttributedString *textAtt) { + userInfo.levelAtt = textAtt; + self.headView.userInfo = userInfo; + }]; + [self.tableView reloadData]; + }); + } +} + +- (void)getUserWalletInfo:(WalletInfoModel *)balanceInfo WithGroup:(nonnull dispatch_group_t)group{ + self.headView.walletInfo = balanceInfo; + dispatch_group_leave(group); +} +- (void)getUserWalletInfoFailWithGroup:(dispatch_group_t)group{ + dispatch_group_leave(group); +} +///获取贵族信息成功 +- (void)getNobleCenterInfoSuccess:(NobleCenterModel *)model WithGroup:(nonnull dispatch_group_t)group { + self.headView.nobleInfo = model; + dispatch_group_leave(group); +} +-(void)getNobleCenterInfoFailWithGroup:(dispatch_group_t)group{ + dispatch_group_leave(group); +} +///获取家族信息成功 +- (void)onGetClanDetailInfoSuccess:(ClanDetailInfoModel *)clanInfo WithGroup:(nonnull dispatch_group_t)group{ + self.clanInfo = clanInfo; + dispatch_group_leave(group); +} +- (void)onGetClanDetailInfofailWithGroup:(dispatch_group_t)group{ + dispatch_group_leave(group); +} +#pragma mark - XPMineHeadItemTableViewCellDelegate +- (void)xPMineHeadItemTableViewCell:(XPMineHeadItemTableViewCell *)cell didSelectItem:(XPMineFuntionItemModel *)item { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventusercenter_function_click eventAttributes:@{@"functionName" : item.centerName}]; + [self pushViewControllerWithType:item.skipType functionItem:item]; +} + +#pragma mark - XPHomeBannerTableViewCellDelegate +///点击了某个banner +- (void)xPHomeBannerTableViewCell:(XPHomeBannerTableViewCell *)view didClickBanner:(HomeBannerInfoModel *)info { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventusercenter_banner_click eventAttributes:@{@"bannerId" : info.bannerId}]; + switch (info.skipType) { + case HomeBannerInfoSkipType_Room: + { + if (info.skipUri.length > 0) { + [XPRoomViewController openRoom:info.skipUri viewController:self]; + } + } + break; + case HomeBannerInfoSkipType_Web: + { + XPWebViewController *vc = [[XPWebViewController alloc]init]; + vc.url = info.skipUri; + [self.navigationController pushViewController:vc animated:YES]; + } + break; + default: + break; + } +} + + +#pragma mark - NSNotification +- (void)onVisitorUnReadCountUpdate:(NSNotification *)noti { + XPMineVisitorUnReadModel *model = (XPMineVisitorUnReadModel *)noti.object; + self.headView.visitorUnReadCount = model.visitNum; +} +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.showsVerticalScrollIndicator = NO; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;; + [_tableView registerClass:[XPMineTheGuildCell class] forCellReuseIdentifier:NSStringFromClass([XPMineTheGuildCell class])]; + [_tableView registerClass:[XPMinePersonalCenterCell class] forCellReuseIdentifier:NSStringFromClass([XPMinePersonalCenterCell class])]; + [_tableView registerClass:[XPMineListCell class] forCellReuseIdentifier:NSStringFromClass([XPMineListCell class])]; + _tableView.backgroundColor = [UIColor clearColor]; + } + return _tableView; +} + +- (XPMineHeadView *)headView { + if (!_headView) { + CGFloat height = (KScreenWidth - 30 - 13) * 0.5 * 60 / 166; + _headView = [[XPMineHeadView alloc] initWithFrame:CGRectMake(0, 0,KScreenWidth , 146 + height + kStatusBarHeight)]; + _headView.delegate = self; + } + return _headView; +} + +- (UIView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"mine_head_bg"]]; + _bgImageView.contentMode = UIViewContentModeScaleAspectFill; + } + return _bgImageView; +} + +- (NSMutableArray *)functionArray { + if (!_functionArray) { + _functionArray = [NSMutableArray array]; + } + return _functionArray; +} + +- (NSMutableArray *)bannerArray { + if (!_bannerArray) { + _bannerArray = [NSMutableArray array]; + } + return _bannerArray; +} + +-(UserInfoModel *)userInfo{ + if(!_userInfo){ + _userInfo = [UserInfoModel new]; + _userInfo.uid = [[AccountInfoStorage instance].getUid integerValue]; + } + return _userInfo; +} +@end diff --git a/YuMi/Modules/YMMine/View/XPMineVisitorViewController.h b/YuMi/Modules/YMMine/View/XPMineVisitorViewController.h new file mode 100644 index 00000000..0a354fd8 --- /dev/null +++ b/YuMi/Modules/YMMine/View/XPMineVisitorViewController.h @@ -0,0 +1,16 @@ +// +// YMMineVisitorViewController.h +// YUMI +// +// Created by YUMI on 2022/1/26. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineVisitorViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/XPMineVisitorViewController.m b/YuMi/Modules/YMMine/View/XPMineVisitorViewController.m new file mode 100644 index 00000000..7327ab51 --- /dev/null +++ b/YuMi/Modules/YMMine/View/XPMineVisitorViewController.m @@ -0,0 +1,207 @@ +// +// YMMineVisitorViewController.m +// YUMI +// +// Created by YUMI on 2022/1/26. +// + +#import "XPMineVisitorViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NSArray+Safe.h" +#import "ClientConfig.h" +///Model +#import "XPMineVisitorItemModel.h" +///View +#import "XPMineVisitorTableViewCell.h" +#import "XPMineVisitorEmptyTableViewCell.h" +///P +#import "XPMineVisitorPresenter.h" +#import "XPMineVisitorProtocol.h" +///VC +#import "XPMineUserInfoViewController.h" +#import "XPMineSimpleUserInfoViewController.h" +#import "SessionViewController.h" + +@interface XPMineVisitorViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +///当前页数 +@property (nonatomic,assign) int page; +///更多数据 +@property (nonatomic,assign) BOOL hasNoMoreData; +@end + +@implementation XPMineVisitorViewController + +- (XPMineVisitorPresenter *)createPresenter { + return [[XPMineVisitorPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initHeaderAndFooterRrfresh]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - 下拉刷新 +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; + + [self headerRefresh]; +} + +#pragma mark - 刷新的fangfa +- (void)headerRefresh { + self.page = 1; + [self.presenter getVisitorList:self.page pageSize:20 state:0]; +} + +- (void)footerRefresh { + if (self.hasNoMoreData) { + [self showErrorToast:YMLocalizedString(@"XPMineVisitorViewController0")]; + return; + } + self.page++; + [self.presenter getVisitorList:self.page pageSize:20 state:1]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMineVisitorViewController1"); + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +#pragma mark - XPMineVisitorProtocol +- (void)onGetVisitorListSuccess:(NSArray *)array state:(int)state { + if (state == 0) { + [self.datasource removeAllObjects]; + [self.tableView.mj_header endRefreshing]; + } + [self.tableView.mj_footer endRefreshing]; + if (array.count > 0) { + self.hasNoMoreData = NO; + [self.datasource addObjectsFromArray:array]; + } else { + self.hasNoMoreData = YES; + [self.tableView.mj_footer endRefreshingWithNoMoreData]; + } + [self.tableView reloadData]; +} + +- (void)getVisitorListFail:(int)state { + if (state == 0) { + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPMineVisitorTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineVisitorTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineVisitorTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineVisitorTableViewCell class])]; + } + cell.isFirstItem = indexPath.row == 0; + cell.isLastItem = indexPath.row == self.datasource.count - 1; + cell.delegate = self; + cell.item = [self.datasource safeObjectAtIndex1:indexPath.row]; + return cell; + } + + XPMineVisitorEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineVisitorEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineVisitorEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineVisitorEmptyTableViewCell class])]; + } + cell.emptyTitle = YMLocalizedString(@"XPMineVisitorViewController2"); + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (indexPath.row == 0) { + return 85; + } else { + return 70; + } +} + +#pragma mark - TTVisitorRecordCellDelegate +- (void)onAvatarClick:(XPMineVisitorTableViewCell *)cell { + NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; + XPMineVisitorItemModel *item = [self.datasource safeObjectAtIndex1:indexPath.row]; + + if ([ClientConfig shareConfig].canOpen) { + XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init]; + userInfoVC.uid = item.uid; + [self.navigationController pushViewController:userInfoVC animated:YES]; + }else{ + XPMineSimpleUserInfoViewController * userInfoVC = [[XPMineSimpleUserInfoViewController alloc] init]; + userInfoVC.uid = item.uid; + [self.navigationController pushViewController:userInfoVC animated:YES]; + } +} + +- (void)onChatClick:(XPMineVisitorTableViewCell *)cell { + NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; + XPMineVisitorItemModel *item = [self.datasource safeObjectAtIndex1:indexPath.row]; + NSString * sessionId = [NSString stringWithFormat:@"%lld",item.uid]; + NIMSession * session = [NIMSession session:sessionId type:NIMSessionTypeP2P]; + SessionViewController * sessionVC = [[SessionViewController alloc] initWithSession:session]; + [self.navigationController pushViewController:sessionVC animated:YES]; +} + +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + _tableView.rowHeight = 65; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPMineVisitorEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineVisitorEmptyTableViewCell class])]; + [_tableView registerClass:[XPMineVisitorTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineVisitorTableViewCell class])]; + } + return _tableView; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + +@end diff --git a/YuMi/Modules/YMMine/View/XPPermissionsViewController.h b/YuMi/Modules/YMMine/View/XPPermissionsViewController.h new file mode 100644 index 00000000..ba63cce1 --- /dev/null +++ b/YuMi/Modules/YMMine/View/XPPermissionsViewController.h @@ -0,0 +1,16 @@ +// +// YMPermissionsViewController.h +// YUMI +// +// Created by zu on 2021/12/28. +// + +#import "BaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPPermissionsViewController : BaseViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/XPPermissionsViewController.m b/YuMi/Modules/YMMine/View/XPPermissionsViewController.m new file mode 100644 index 00000000..25c085af --- /dev/null +++ b/YuMi/Modules/YMMine/View/XPPermissionsViewController.m @@ -0,0 +1,293 @@ +// +// YMPermissionsViewController.m +// YUMI +// +// Created by zu on 2021/12/28. +// + +#import "XPPermissionsViewController.h" +#import +#import +#import +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "NSArray+Safe.h" + +@interface XPPermissionCell : UITableViewCell + +@property (nonatomic, strong) UIImageView * icon; +@property (nonatomic, strong) UILabel * name; +@property (nonatomic, strong) UILabel * tip; + +@end + +@implementation XPPermissionCell + +- (instancetype)init { + if (self == [super init]) { + self.selectionStyle = UITableViewCellSelectionStyleNone; + self.backgroundColor = UIColor.clearColor; + [self.contentView addSubview:self.icon]; + [self.contentView addSubview:self.name]; + [self.contentView addSubview:self.tip]; + self.contentView.backgroundColor = DJDKMIMOMColor.appCellBackgroundColor; + self.contentView.layer.masksToBounds = YES; + self.contentView.layer.cornerRadius = 8; + [self.icon mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.contentView); + make.left.mas_equalTo(self.contentView).offset(15); + }]; + [self.name mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.icon.mas_right).offset(8); + make.top.mas_equalTo(self.contentView).offset(16); + }]; + [self.tip mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.icon.mas_right).offset(8); + make.bottom.mas_equalTo(self.contentView).offset(-16); + }]; + } + return self; +} + +- (UIImageView *)icon { + if (!_icon) { + _icon = [[UIImageView alloc] init]; + } + return _icon; +} + +- (UILabel *)name { + if (!_name) { + _name = [[UILabel alloc] init]; + _name.textColor = DJDKMIMOMColor.mainTextColor; + _name.font = [UIFont systemFontOfSize:14]; + } + return _name; +} + +- (UILabel *)tip { + if (!_tip) { + _tip = [[UILabel alloc] init]; + _tip.textColor = DJDKMIMOMColor.secondTextColor; + _tip.font = [UIFont systemFontOfSize:13]; + } + return _tip; +} + +@end + +@interface XPPermissionsViewController () + +@property (nonatomic,strong) UITableView * tableView; + +@property (nonatomic, strong) NSMutableArray * permissionIcons; +@property (nonatomic, strong) NSMutableArray * permissionNames; +@property (nonatomic, strong) NSMutableArray * permissionTips; + +@property (nonatomic, strong) UIView * empty; +@property (nonatomic, strong) UIImageView * emptyImage; +@property (nonatomic, strong) UILabel * emptyTip; + +@property (nonatomic, strong) UIView * footer; +@property (nonatomic, strong) UILabel * footerTip; +@property (nonatomic, strong) UIButton * gotoSetting; + +@end + +@implementation XPPermissionsViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + self.title = YMLocalizedString(@"XPPermissionsViewController0"); + [self.empty addSubview:self.emptyImage]; + [self.empty addSubview:self.emptyTip]; + [self.view addSubview:self.tableView]; + [self.footer addSubview:self.footerTip]; + [self.footer addSubview:self.gotoSetting]; + [self.view addSubview:self.footer]; +} + +- (void)viewDidLayoutSubviews { + [super viewDidLayoutSubviews]; + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.right.bottom.mas_equalTo(self.view).insets(UIEdgeInsetsMake(16, 16, 16, 16)); + }]; + [self.emptyImage mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.empty); + make.top.mas_equalTo(self.empty).offset(200); + make.size.mas_equalTo(CGSizeMake(100, 100)); + }]; + [self.emptyTip mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.empty); + make.top.mas_equalTo(self.emptyImage.mas_bottom).offset(16); + }]; + [self.footer mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.view).offset(-kSafeAreaBottomHeight); + make.height.mas_equalTo(100); + }]; + [self.footerTip mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.footer); + make.top.mas_equalTo(self.footer).offset(24); + }]; + [self.gotoSetting mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.footer); + make.top.mas_equalTo(self.footerTip.mas_bottom).offset(40); + }]; +} + +- (void)viewWillAppear:(BOOL)animated { + PHAuthorizationStatus phStatus = [PHPhotoLibrary authorizationStatus]; + if (phStatus == PHAuthorizationStatusAuthorized) { + [self.permissionNames addObject:YMLocalizedString(@"XPPermissionsViewController1")]; + [self.permissionTips addObject:YMLocalizedString(@"XPPermissionsViewController2")]; + [self.permissionIcons addObject:@"mine_setting_permission_album"]; + } + + AVAuthorizationStatus microPhoneStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio]; + if (microPhoneStatus == AVAuthorizationStatusAuthorized) { + [self.permissionNames addObject:YMLocalizedString(@"XPPermissionsViewController3")]; + [self.permissionTips addObject:YMLocalizedString(@"XPPermissionsViewController4")]; + [self.permissionIcons addObject:@"mine_setting_permission_voice"]; + } + + AVAuthorizationStatus cameraStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo]; + if (cameraStatus == AVAuthorizationStatusAuthorized) { + [self.permissionNames addObject:YMLocalizedString(@"XPPermissionsViewController5")]; + [self.permissionTips addObject:YMLocalizedString(@"XPPermissionsViewController6")]; + [self.permissionIcons addObject:@"mine_setting_permission_camera"]; + } +} + +- (void)gotoSettingClick:(UIButton *)sender { + NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; + if ([[UIApplication sharedApplication] canOpenURL:url]) { + [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil]; + } +} + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + tableView.backgroundView = self.permissionNames.count == 0 ? self.empty : nil; + return self.permissionNames.count; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { + if (section == 0) { + return 0.001f; + } + return 16.f; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 70.f; +} + +-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { + UIView *view = [[UIView alloc] init]; + view.backgroundColor = [UIColor clearColor]; + return view; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + NSInteger section = indexPath.section; + XPPermissionCell * cell = [[XPPermissionCell alloc] init]; + cell.icon.image = [UIImage imageNamed:[self.permissionIcons safeObjectAtIndex1:section]]; + cell.name.text = [self.permissionNames safeObjectAtIndex1:section]; + cell.tip.text = [self.permissionTips safeObjectAtIndex1:section]; + return cell; +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.showsVerticalScrollIndicator = NO; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + [_tableView registerClass:[XPPermissionCell class] forCellReuseIdentifier:NSStringFromClass([XPPermissionCell class])]; + } + return _tableView; +} + +- (NSMutableArray *)permissionIcons { + if (!_permissionIcons) { + _permissionIcons = [[NSMutableArray alloc] init]; + } + return _permissionIcons; +} + +- (NSMutableArray *)permissionNames { + if (!_permissionNames) { + _permissionNames = [[NSMutableArray alloc] init]; + } + return _permissionNames; +} + +- (NSMutableArray *)permissionTips { + if (!_permissionTips) { + _permissionTips = [[NSMutableArray alloc] init]; + } + return _permissionTips; +} + +- (UIView *)empty { + if (!_empty) { + _empty = [[UIView alloc] init]; + } + return _empty; +} + +- (UIImageView *)emptyImage { + if (!_emptyImage) { + _emptyImage = [[UIImageView alloc] init]; + _emptyImage.contentMode = UIViewContentModeScaleAspectFit; + _emptyImage.image = [UIImage imageNamed:@"common_empty"]; + } + return _emptyImage; +} + +- (UILabel *)emptyTip { + if (!_emptyTip) { + _emptyTip = [[UILabel alloc] init]; + _emptyTip.textColor = DJDKMIMOMColor.secondTextColor; + _emptyTip.font = [UIFont systemFontOfSize:12]; + _emptyTip.text = YMLocalizedString(@"XPPermissionsViewController7"); + } + return _emptyTip; +} + +- (UIView *)footer { + if (!_footer) { + _footer = [[UIView alloc] init]; + } + return _footer; +} + +- (UILabel *)footerTip { + if (!_footerTip) { + _footerTip = [[UILabel alloc] init]; + _footerTip.textColor = DJDKMIMOMColor.mainTextColor; + _footerTip.font = [UIFont systemFontOfSize:12]; + _footerTip.text = @"—— 仅展示能查询到的已授权系统权限 ——"; + } + return _footerTip; +} + +- (UIButton *)gotoSetting { + if (!_gotoSetting) { + _gotoSetting = [UIButton buttonWithType:UIButtonTypeCustom]; + [_gotoSetting setTitle:@"前往系统设置>" forState:UIControlStateNormal]; + [_gotoSetting setTitleColor:DJDKMIMOMColor.appMainColor forState:UIControlStateNormal]; + _gotoSetting.titleLabel.font = [UIFont systemFontOfSize:14]; + _gotoSetting.titleLabel.adjustsFontSizeToFitWidth = YES; + [_gotoSetting addTarget:self action:@selector(gotoSettingClick:) forControlEvents:UIControlEventTouchUpInside]; + } + return _gotoSetting; +} + +@end diff --git a/YuMi/Modules/YMMine/View/XPPrivacyViewController.h b/YuMi/Modules/YMMine/View/XPPrivacyViewController.h new file mode 100644 index 00000000..9465b622 --- /dev/null +++ b/YuMi/Modules/YMMine/View/XPPrivacyViewController.h @@ -0,0 +1,16 @@ +// +// YMPrivacyViewController.h +// YUMI +// +// Created by zu on 2021/12/28. +// + +#import "BaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPPrivacyViewController : BaseViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/XPPrivacyViewController.m b/YuMi/Modules/YMMine/View/XPPrivacyViewController.m new file mode 100644 index 00000000..e8f224bb --- /dev/null +++ b/YuMi/Modules/YMMine/View/XPPrivacyViewController.m @@ -0,0 +1,163 @@ +// +// YMPrivacyViewController.m +// YUMI +// +// Created by zu on 2021/12/28. +// + +#import "XPPrivacyViewController.h" +#import +#import "XPMineSettingTableViewCell.h" +#import "XPMineSettingItemModel.h" +#import "XPWebViewController.h" +#import "XPPermissionsViewController.h" +#import "YUMIHtmlUrl.h" +#import "NSArray+Safe.h" + +@interface XPPrivacyViewController () + +@property (nonatomic, strong) UITableView * tableView; + +@property (nonatomic, strong) NSArray * datasource; + +@end + +@implementation XPPrivacyViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + self.title = YMLocalizedString(@"XPPrivacyViewController0"); + [self.view addSubview:self.tableView]; + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.top.mas_equalTo(0); + }]; +} + +- (void)pushWebViewWIthUrl:(NSString *)url { + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + webVC.url = url; + [self.navigationController pushViewController:webVC animated:YES]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 45; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + XPMineSettingTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineSettingTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineSettingTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineSettingTableViewCell class])]; + } + + cell.itemModel = [self.datasource safeObjectAtIndex1:indexPath.row]; + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + switch (indexPath.row) { + case 0: + { + XPPermissionsViewController * pvc = [[XPPermissionsViewController alloc] init]; + [self.navigationController pushViewController:pvc animated:YES]; + } + break; + case 1: + [self pushWebViewWIthUrl:URLWithType(kPrivacyURL)]; + break; + case 2: + [self pushWebViewWIthUrl:URLWithType(kPrivacySDKURL)]; + break; + case 3: + [self pushWebViewWIthUrl:URLWithType(kPrivacyPersonalURL)]; + break; + case 4: + [self pushWebViewWIthUrl:URLWithType(kPrivacyDeviceURL)]; + break; + case 5: + [self pushWebViewWIthUrl:URLWithType(kUserRechargeAgrURL)]; + break; + case 6: + [self pushWebViewWIthUrl:URLWithType(kUserRegiServiceAgrURL)]; + break; + case 7: + [self pushWebViewWIthUrl:URLWithType(kLiveServiceAgrURL)]; + break; + case 8: + [self pushWebViewWIthUrl:URLWithType(kCommunitySpecURL)]; + break; + case 9: + [self pushWebViewWIthUrl:URLWithType(kAccountlogoutAgrURL)]; + break; + default: + break; + } +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.showsVerticalScrollIndicator = NO; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + [_tableView registerClass:[XPMineSettingTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineSettingTableViewCell class])]; + } + return _tableView; +} + +- (NSArray *)datasource { + if (!_datasource) { + XPMineSettingItemModel * sysPermission = [[XPMineSettingItemModel alloc] init]; + sysPermission.title = YMLocalizedString(@"XPPrivacyViewController1"); + sysPermission.subTitle = @""; + + XPMineSettingItemModel * privacy = [[XPMineSettingItemModel alloc] init]; + privacy.title = YMLocalizedString(@"XPPrivacyViewController2"); + privacy.subTitle = @""; + + XPMineSettingItemModel * sdk = [[XPMineSettingItemModel alloc] init]; + sdk.title = YMLocalizedString(@"XPPrivacyViewController3"); + sdk.subTitle = @""; + + XPMineSettingItemModel * personalInfo = [[XPMineSettingItemModel alloc] init]; + personalInfo.title = YMLocalizedString(@"XPPrivacyViewController4"); + personalInfo.subTitle = @""; + + XPMineSettingItemModel * permissionList = [[XPMineSettingItemModel alloc] init]; + permissionList.title = YMLocalizedString(@"XPPrivacyViewController5"); + permissionList.subTitle = @""; + + XPMineSettingItemModel * userChargeProtocol = [[XPMineSettingItemModel alloc] init]; + userChargeProtocol.title = YMLocalizedString(@"XPPrivacyViewController6"); + userChargeProtocol.subTitle = @""; + + XPMineSettingItemModel *userRegistProtocol = [[XPMineSettingItemModel alloc] init]; + userRegistProtocol.title = YMLocalizedString(@"XPPrivacyViewController7"); + userRegistProtocol.subTitle = @""; + + XPMineSettingItemModel * liveServiceProtocol = [[XPMineSettingItemModel alloc] init]; + liveServiceProtocol.title = YMLocalizedString(@"XPPrivacyViewController8"); + liveServiceProtocol.subTitle = @""; + + XPMineSettingItemModel * communitySpec = [[XPMineSettingItemModel alloc] init]; + communitySpec.title = YMLocalizedString(@"XPPrivacyViewController9"); + communitySpec.subTitle = @""; + + XPMineSettingItemModel * accountLogout = [[XPMineSettingItemModel alloc] init]; + accountLogout.title = YMLocalizedString(@"XPPrivacyViewController10"); + accountLogout.subTitle = @""; + + _datasource = @[sysPermission, privacy, sdk, personalInfo, permissionList, userChargeProtocol, userRegistProtocol, liveServiceProtocol, communitySpec,accountLogout]; + } + return _datasource; +} + +@end diff --git a/YuMi/Modules/YMMine/View/XPSimpleMineHeaderView.h b/YuMi/Modules/YMMine/View/XPSimpleMineHeaderView.h new file mode 100644 index 00000000..6694ba46 --- /dev/null +++ b/YuMi/Modules/YMMine/View/XPSimpleMineHeaderView.h @@ -0,0 +1,29 @@ +// +// YMSimpleMineHeaderView.h +// YUMI +// +// Created by XY on 2023/2/20. +// + +#import +#import "XPMineItemModel.h" + +@class UserInfoModel; + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPSimpleMineHeaderViewDelegate + +- (void)headerViewBtnActionType:(XPMineItemType)itemType; + +@end + +@interface XPSimpleMineHeaderView : UIView +/// 用户信息 +@property (nonatomic,strong) UserInfoModel *userInfo; + +@property (nonatomic, weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/XPSimpleMineHeaderView.m b/YuMi/Modules/YMMine/View/XPSimpleMineHeaderView.m new file mode 100644 index 00000000..51cd56db --- /dev/null +++ b/YuMi/Modules/YMMine/View/XPSimpleMineHeaderView.m @@ -0,0 +1,356 @@ +// +// YMSimpleMineHeaderView.m +// YUMI +// +// Created by XY on 2023/2/20. +// + +#import "XPSimpleMineHeaderView.h" +#import "NetImageView.h" +#import +#import "DJDKMIMOMColor.h" +#import "XPButton.h" + +/// M +#import "UserInfoModel.h" + +@interface XPSimpleMineHeaderView() + +/// 背景图 +@property (nonatomic, strong) NetImageView *bgImageView; +/// 毛玻璃 +@property (nonatomic, strong) UIVisualEffectView *effectView; +/// 昵称 +@property (nonatomic, strong) UILabel *nicknameLabel; +/// ID +@property (nonatomic, strong) UILabel *idLabel; +/// 头像 +@property (nonatomic, strong) NetImageView *avatarImageView; +/// 关注、粉丝、访客、浏览 +@property (nonatomic, strong) UIStackView *numStackView; +@property (nonatomic, strong) UIButton *attentionBtn; +@property (nonatomic, strong) UIButton *fansBtn; +@property (nonatomic, strong) UIButton *visitorBtn; +@property (nonatomic, strong) UIButton *browseBtn; +/// 钱包、房间、收藏、等级 +@property (nonatomic, strong) UIStackView *funcStackView; +@property (nonatomic, strong) XPButton *walletBtn; +@property (nonatomic, strong) XPButton *roomBtn; +@property (nonatomic, strong) XPButton *collectionBtn; +@property (nonatomic, strong) XPButton *gradeBtn; + +@end + +@implementation XPSimpleMineHeaderView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self createUI]; + } + return self; +} + +- (void)createUI { + [self addSubview:self.bgImageView]; + [self.bgImageView addSubview:self.effectView]; + [self addSubview:self.nicknameLabel]; + [self addSubview:self.idLabel]; + [self addSubview:self.avatarImageView]; + [self addSubview:self.numStackView]; + [self.numStackView addArrangedSubview:self.attentionBtn]; + [self.numStackView addArrangedSubview:self.fansBtn]; + [self.numStackView addArrangedSubview:self.visitorBtn]; + [self.numStackView addArrangedSubview:self.browseBtn]; + [self addSubview:self.funcStackView]; + [self.funcStackView addArrangedSubview:self.walletBtn]; + [self.funcStackView addArrangedSubview:self.roomBtn]; + [self.funcStackView addArrangedSubview:self.collectionBtn]; + [self.funcStackView addArrangedSubview:self.gradeBtn]; + + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.left.right.mas_equalTo(0); + make.height.mas_equalTo(260); + }]; + [self.effectView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.bgImageView); + }]; + [self.nicknameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.avatarImageView).offset(-5); + make.left.mas_equalTo(16); + make.right.mas_equalTo(self.avatarImageView.mas_left).offset(-5); + }]; + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.nicknameLabel.mas_bottom).offset(2); + make.left.mas_equalTo(self.nicknameLabel); + make.right.mas_equalTo(self.nicknameLabel); + }]; + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.bgImageView); + make.right.mas_equalTo(-16); + make.width.height.mas_equalTo(86); + }]; + [self.numStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(16); + make.right.mas_equalTo(-16); + make.bottom.mas_equalTo(self.funcStackView.mas_top).offset(-10); + make.height.mas_equalTo(30); + }]; + [self.funcStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(16); + make.right.mas_equalTo(-16); + make.centerY.mas_equalTo(self.bgImageView.mas_bottom); + make.height.mas_equalTo(70); + }]; + +} + +- (void)setUserInfo:(UserInfoModel *)userInfo { + _userInfo = userInfo; + if (_userInfo) { + self.idLabel.text = [NSString stringWithFormat:@"ID:%ld", (long)_userInfo.erbanNo]; + self.nicknameLabel.text = _userInfo.nick.length > 0 ? _userInfo.nick : @""; + self.avatarImageView.imageUrl = userInfo.avatar; + self.bgImageView.imageUrl = userInfo.avatar; + + NSString *attent = YMLocalizedString(@"XPSimpleMineHeaderView0"); + NSString *attentStr = [NSString stringWithFormat:@"%@%ld",attent,_userInfo.followNum]; + NSMutableAttributedString *attentAttrStr = [[NSMutableAttributedString alloc] initWithString:attentStr]; + [attentAttrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:16 weight:UIFontWeightMedium] range:NSMakeRange(attent.length, attentStr.length-attent.length)]; + [self.attentionBtn setAttributedTitle:attentAttrStr forState:UIControlStateNormal]; + + NSString *fans = YMLocalizedString(@"XPSimpleMineHeaderView1"); + NSString *fansStr = [NSString stringWithFormat:@"%@%ld",fans,_userInfo.fansNum]; + NSMutableAttributedString *fansAttrStr = [[NSMutableAttributedString alloc] initWithString:fansStr]; + [fansAttrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:16 weight:UIFontWeightMedium] range:NSMakeRange(fans.length, fansStr.length-fans.length)]; + [self.fansBtn setAttributedTitle:fansAttrStr forState:UIControlStateNormal]; + + NSString *visitor = YMLocalizedString(@"XPSimpleMineHeaderView2"); + NSString *visitorStr = [NSString stringWithFormat:@"%@%ld",visitor,_userInfo.visitNum]; + NSMutableAttributedString *visitorAttrStr = [[NSMutableAttributedString alloc] initWithString:visitorStr]; + [visitorAttrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:16 weight:UIFontWeightMedium] range:NSMakeRange(visitor.length, visitorStr.length-visitor.length)]; + [self.visitorBtn setAttributedTitle:visitorAttrStr forState:UIControlStateNormal]; + + NSString *browse = YMLocalizedString(@"XPSimpleMineHeaderView3"); + NSString *browseStr = [NSString stringWithFormat:@"%@%ld",browse,_userInfo.inRoomNum]; + NSMutableAttributedString *browseAttrStr = [[NSMutableAttributedString alloc] initWithString:browseStr]; + [browseAttrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:16 weight:UIFontWeightMedium] range:NSMakeRange(browse.length, browseStr.length-browse.length)]; + [self.browseBtn setAttributedTitle:browseAttrStr forState:UIControlStateNormal]; + + } +} + +- (void)btnAction:(UIButton *)button { + if (self.delegate && [self.delegate respondsToSelector:@selector(headerViewBtnActionType:)]) { + XPMineItemType itemType = -INT_MAX; + if (button == self.attentionBtn) { + itemType = XPMineItemType_Attention_List; + }else if (button == self.fansBtn) { + itemType = XPMineItemType_Fans_List; + }else if (button == self.visitorBtn) { + itemType = XPMineItemType_Visitor; + }else if (button == self.browseBtn) { + itemType = XPMineItemType_Foot_Print; + }else if (button == self.walletBtn) { + itemType = XPMineItemType_Account; + }else if (button == self.roomBtn) { + itemType = XPMineItemType_My_Room; + }else if (button == self.collectionBtn) { + itemType = XPMineItemType_Collect_Room; + }else if (button == self.gradeBtn) { + itemType = -1; //我的等级 + } + [self.delegate headerViewBtnActionType:itemType]; + } +} + +/// 点击头像 +- (void)tapAvatarImageView { + if (self.delegate && [self.delegate respondsToSelector:@selector(headerViewBtnActionType:)]) { + [self.delegate headerViewBtnActionType:XPMineItemType_Personinfo]; + } +} + +#pragma mark - 懒加载 + +- (NetImageView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[NetImageView alloc] init]; + _bgImageView.contentMode = UIViewContentModeScaleAspectFill; + _bgImageView.clipsToBounds = YES; + } + return _bgImageView; +} + +- (UIVisualEffectView *)effectView { + if (!_effectView) { + UIBlurEffect *blur = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; + _effectView = [[UIVisualEffectView alloc] initWithEffect:blur]; + _effectView.alpha = 0.9; + } + return _effectView; +} + +- (UILabel *)nicknameLabel { + if (!_nicknameLabel) { + _nicknameLabel = [[UILabel alloc] init]; + _nicknameLabel.textColor = UIColor.whiteColor; + _nicknameLabel.font = [UIFont systemFontOfSize:20 weight:UIFontWeightMedium]; + } + return _nicknameLabel; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.textColor = [UIColor.whiteColor colorWithAlphaComponent:0.4]; + _idLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; + } + return _idLabel; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.userInteractionEnabled = YES; + _avatarImageView.contentMode = UIViewContentModeScaleAspectFill; + _avatarImageView.layer.borderWidth = 2; + _avatarImageView.layer.borderColor = [UIColor.whiteColor colorWithAlphaComponent:0.4].CGColor; + _avatarImageView.layer.cornerRadius = 86/2; + _avatarImageView.clipsToBounds = YES; + + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAvatarImageView)]; + [_avatarImageView addGestureRecognizer:tap]; + } + return _avatarImageView; +} + +- (UIStackView *)numStackView { + if (!_numStackView) { + _numStackView = [[UIStackView alloc] init]; + _numStackView.axis = UILayoutConstraintAxisHorizontal; + _numStackView.distribution = UIStackViewDistributionFillEqually; + _numStackView.alignment = UIStackViewAlignmentFill; + _numStackView.spacing = 2; + } + return _numStackView; +} + +- (UIButton *)attentionBtn { + if (!_attentionBtn) { + _attentionBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_attentionBtn setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; + _attentionBtn.titleLabel.font = [UIFont systemFontOfSize:10]; + _attentionBtn.hidden = YES; + [_attentionBtn addTarget:self action:@selector(btnAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _attentionBtn; +} + +- (UIButton *)fansBtn { + if (!_fansBtn) { + _fansBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_fansBtn setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; + _fansBtn.titleLabel.font = [UIFont systemFontOfSize:10]; + _fansBtn.hidden = YES; + [_fansBtn addTarget:self action:@selector(btnAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _fansBtn; +} + +- (UIButton *)visitorBtn { + if (!_visitorBtn) { + _visitorBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_visitorBtn setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; + _visitorBtn.titleLabel.font = [UIFont systemFontOfSize:10]; + [_visitorBtn addTarget:self action:@selector(btnAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _visitorBtn; +} + +- (UIButton *)browseBtn { + if (!_browseBtn) { + _browseBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_browseBtn setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; + _browseBtn.titleLabel.font = [UIFont systemFontOfSize:10]; + [_browseBtn addTarget:self action:@selector(btnAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _browseBtn; +} + +- (UIStackView *)funcStackView { + if (!_funcStackView) { + _funcStackView = [[UIStackView alloc] init]; + _funcStackView.axis = UILayoutConstraintAxisHorizontal; + _funcStackView.distribution = UIStackViewDistributionFillEqually; + _funcStackView.alignment = UIStackViewAlignmentFill; + _funcStackView.spacing = 2; + _funcStackView.backgroundColor = UIColor.whiteColor; + _funcStackView.layer.cornerRadius = 20; + _funcStackView.clipsToBounds = YES; + } + return _funcStackView; +} + +- (XPButton *)walletBtn { + if (!_walletBtn) { + _walletBtn = [XPButton buttonWithType:UIButtonTypeCustom]; + [_walletBtn setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + _walletBtn.titleLabel.font = [UIFont systemFontOfSize:10]; + [_walletBtn setTitle:YMLocalizedString(@"XPSimpleMineHeaderView4") forState:UIControlStateNormal]; + [_walletBtn setImage:[UIImage imageNamed:@"mine_wallet"] forState:UIControlStateNormal]; + [_walletBtn addTarget:self action:@selector(btnAction:) forControlEvents:UIControlEventTouchUpInside]; + _walletBtn.buttonStyle = XPButtonImageTop; + _walletBtn.padding = 4; + + } + return _walletBtn; +} + +- (XPButton *)roomBtn { + if (!_roomBtn) { + _roomBtn = [XPButton buttonWithType:UIButtonTypeCustom]; + [_roomBtn setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + _roomBtn.titleLabel.font = [UIFont systemFontOfSize:10]; + [_roomBtn setTitle:YMLocalizedString(@"XPSimpleMineHeaderView5") forState:UIControlStateNormal]; + [_roomBtn setImage:[UIImage imageNamed:@"mine_room"] forState:UIControlStateNormal]; + [_roomBtn addTarget:self action:@selector(btnAction:) forControlEvents:UIControlEventTouchUpInside]; + _roomBtn.buttonStyle = XPButtonImageTop; + _roomBtn.padding = 4; + } + return _roomBtn; +} + +- (XPButton *)collectionBtn { + if (!_collectionBtn) { + _collectionBtn = [XPButton buttonWithType:UIButtonTypeCustom]; + [_collectionBtn setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + _collectionBtn.titleLabel.font = [UIFont systemFontOfSize:10]; + [_collectionBtn setTitle:YMLocalizedString(@"XPSimpleMineHeaderView6") forState:UIControlStateNormal]; + [_collectionBtn setImage:[UIImage imageNamed:@"mine_collection"] forState:UIControlStateNormal]; + [_collectionBtn addTarget:self action:@selector(btnAction:) forControlEvents:UIControlEventTouchUpInside]; + _collectionBtn.buttonStyle = XPButtonImageTop; + _collectionBtn.padding = 4; + } + return _collectionBtn; +} + +- (XPButton *)gradeBtn { + if (!_gradeBtn) { + _gradeBtn = [XPButton buttonWithType:UIButtonTypeCustom]; + [_gradeBtn setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + _gradeBtn.titleLabel.font = [UIFont systemFontOfSize:10]; + [_gradeBtn setTitle:YMLocalizedString(@"XPSimpleMineHeaderView7") forState:UIControlStateNormal]; + [_gradeBtn setImage:[UIImage imageNamed:@"mine_grade"] forState:UIControlStateNormal]; + [_gradeBtn addTarget:self action:@selector(btnAction:) forControlEvents:UIControlEventTouchUpInside]; + _gradeBtn.buttonStyle = XPButtonImageTop ; + _gradeBtn.hidden = YES; + _gradeBtn.padding = 4; + } + return _gradeBtn; +} + +@end diff --git a/YuMi/Modules/YMMine/View/XPSimpleMineViewController.h b/YuMi/Modules/YMMine/View/XPSimpleMineViewController.h new file mode 100644 index 00000000..207a96f6 --- /dev/null +++ b/YuMi/Modules/YMMine/View/XPSimpleMineViewController.h @@ -0,0 +1,16 @@ +// +// YMSimpleMineViewController.h +// YUMI +// +// Created by XY on 2023/2/20. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPSimpleMineViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/XPSimpleMineViewController.m b/YuMi/Modules/YMMine/View/XPSimpleMineViewController.m new file mode 100644 index 00000000..57599f01 --- /dev/null +++ b/YuMi/Modules/YMMine/View/XPSimpleMineViewController.m @@ -0,0 +1,504 @@ +// +// YMSimpleMineViewController.m +// YUMI +// +// Created by XY on 2023/2/20. +// + +#import "XPSimpleMineViewController.h" +///Third +#import +///Tool +#import "TTPopup.h" +#import "YUMIMacroUitls.h" +#import "YUMIHtmlUrl.h" +#import "UIButton+EnlargeTouchArea.h" +#import "StatisticsServiceHelper.h" +#import "YUMIConstant.h" +#import "Api+Room.h" +#import "Api+RoomSetting.h" +#import "AccountInfoStorage.h" +#import "ClientConfig.h" +#import "NSMutableDictionary+Saft.h" +#import "DJDKMIMOMColor.h" +#import "ClientConfig.h" +///Model +#import "XPMineItemModel.h" +#import "UserInfoModel.h" +#import "XPMineVisitorUnReadModel.h" +#import "ClanDetailInfoModel.h" +#import "HomeBannerInfoModel.h" +#import "XPMineFuntionItemModel.h" +#import "WalletInfoModel.h" +///P +#import "XPMineProtocol.h" +#import "XPMinePresent.h" +///View +#import "XPMineHeadItemTableViewCell.h" +#import "XPSimpleMineHeaderView.h" +#import "XPHomeBannerTableViewCell.h" +#import "XPMineNewUserRechargeView.h" +#import "XPMineItemTableViewCell.h" +///VC +#import "XPMineSettingViewController.h" +#import "XPMineUserInfoViewController.h" +#import "XPMineSimpleUserInfoViewController.h" +#import "XPMineRechargeViewController.h" +#import "XPIAPRechargeViewController.h" +#import "XPWebViewController.h" +#import "XPRoomViewController.h" +#import "XPMineDressUpViewController.h" +#import "XPDressUpShopViewController.h" +#import "XPMineFansViewController.h" +#import "XPMineAttentionViewController.h" +#import "XPMineVisitorViewController.h" +#import "XPMineFansTeamViewController.h" +#import "XPMineClanViewController.h" +#import "XPMineGuildViewController.h" +#import "XPMineFootPrintViewController.h" +#import "XPMineCollectRoomListViewController.h" +#import "XPMineFeedbackViewController.h" +#import "XPMineSimpleUserInfoViewController.h" +#import "XPIAPRechargeViewController.h" + +@interface XPSimpleMineViewController () + +@property (nonatomic, strong) UITableView *tableView; +@property (nonatomic, strong) XPSimpleMineHeaderView *headerView; + +///用户信息 +@property (nonatomic,strong) UserInfoModel *userInfo; +///家族信息 +@property (nonatomic,strong) ClanDetailInfoModel *clanInfo; +///我的公会 +@property (nonatomic,strong) XPMineItemModel *guildItemModel; +///banner列表 +@property (nonatomic, strong) NSMutableArray *bannerArray; + +@property (nonatomic, strong) NSArray *sectionArray0; +@property (nonatomic, strong) NSArray *sectionArray1; + +@end + +@implementation XPSimpleMineViewController + +- (XPMinePresent *)createPresenter { + return [[XPMinePresent alloc] init];; +} + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (UIStatusBarStyle)preferredStatusBarStyle { + return UIStatusBarStyleLightContent; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self createUI]; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + +} + +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + [self.presenter getUserInfo]; +} + +- (void)createUI { + self.tableView.tableHeaderView = self.headerView; + [self.view addSubview:self.tableView]; + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +- (void)openMyRoom { + NSString* roomUid = [NSString stringWithFormat:@"%ld", (long)self.userInfo.uid]; + [XPRoomViewController openRoom:roomUid viewController:self]; +} + +#pragma mark - XPSimpleMineHeaderViewDelegate + +- (void)headerViewBtnActionType:(XPMineItemType)itemType { + switch (itemType) { + case XPMineItemType_Match_Relevance_Account: + + break; + case XPMineItemType_Foot_Print: + { + XPMineFootPrintViewController *vc = [[XPMineFootPrintViewController alloc] init]; + [self.navigationController pushViewController:vc animated:YES]; + } + break; + case XPMineItemType_Account: + { +// XPMineRechargeViewController * rechargeVC = [[XPMineRechargeViewController alloc] init]; + XPIAPRechargeViewController *rechargeVC = [[XPIAPRechargeViewController alloc] init]; + [self.navigationController pushViewController:rechargeVC animated:YES]; + } + break; + case XPMineItemType_Personinfo: + { + + if ([ClientConfig shareConfig].canOpen) { + XPMineUserInfoViewController * infoVC = [[XPMineUserInfoViewController alloc] init]; + infoVC.uid = self.userInfo.uid; + [self.navigationController pushViewController:infoVC animated:YES]; + }else{ + XPMineSimpleUserInfoViewController * infoVC = [[XPMineSimpleUserInfoViewController alloc] init]; + infoVC.uid = self.userInfo.uid; + [self.navigationController pushViewController:infoVC animated:YES]; + } + } + break; + case XPMineItemType_My_Room: + { + [self openMyRoom]; + } + break; + case XPMineItemType_Collect_Room://收藏房间 + { + XPMineCollectRoomListViewController *collectVC = [[XPMineCollectRoomListViewController alloc] init]; + [self.navigationController pushViewController:collectVC animated:YES]; + } + break; + case XPMineItemType_My_Dressup: + { + XPMineDressUpViewController * dressUpVC = [[XPMineDressUpViewController alloc] init]; + [self.navigationController pushViewController:dressUpVC animated:YES]; + } + break; + case XPMineItemType_DressUp_Market: + { + XPDressUpShopViewController *dressUpShopVc = [[XPDressUpShopViewController alloc] init]; + [self.navigationController pushViewController:dressUpShopVc animated:YES]; + } + break; + case XPMineItemType_Fans_List: + { + XPMineFansViewController * fansVC = [[XPMineFansViewController alloc] init]; + [self.navigationController pushViewController:fansVC animated:YES]; + } + break; + case XPMineItemType_Attention_List: + { + XPMineAttentionViewController * attentionVC = [[XPMineAttentionViewController alloc] init]; + [self.navigationController pushViewController:attentionVC animated:YES]; + } + break; + case XPMineItemType_Visitor: + { + XPMineVisitorViewController *visitorVC = [[XPMineVisitorViewController alloc] init]; + [self.navigationController pushViewController:visitorVC animated:YES]; + } + break; + case XPMineItemType_FansTeam: { + XPMineFansTeamViewController *fansTeamVc = [[XPMineFansTeamViewController alloc] init]; + [self.navigationController pushViewController:fansTeamVc animated:YES]; + } + break; + case XPMineItemType_My_Guild: + { + if (self.clanInfo.clan.elderUid.length > 0) { + XPMineClanViewController * clanVC = [[XPMineClanViewController alloc] init]; + clanVC.uid = [NSString stringWithFormat:@"%ld", self.userInfo.uid]; + [self.navigationController pushViewController:clanVC animated:YES]; + } else if(self.clanInfo.hall.hallId.length > 0) { + XPMineGuildViewController * guildVC = [[XPMineGuildViewController alloc] init]; + guildVC.ownerUid = self.clanInfo.hall.ownerUid; + guildVC.guildId = self.clanInfo.hall.hallId; + [self.navigationController pushViewController:guildVC animated:YES]; + }else{ + [self showErrorToast:YMLocalizedString(@"XPSimpleMineViewController0")]; + } + } + break; + case -1: { // 我的等级 + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + webVC.url = URLWithType(kUserLevelURL); + [self.navigationController pushViewController:webVC animated:YES]; + } + break; + case -2: { // 意见反馈 + XPMineFeedbackViewController * feedbackVC = [[XPMineFeedbackViewController alloc] init]; + [self.navigationController pushViewController:feedbackVC animated:YES]; + } + break; + case -3: { // 设置 + XPMineSettingViewController * settingVC = [[XPMineSettingViewController alloc] init]; + settingVC.userInfo = self.userInfo; + [self.navigationController pushViewController:settingVC animated:YES]; + } + break; + default: + break; + } +} + +#pragma mark - XPMineProtocol + +- (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo { + ///防止重新注册时,获取到用户信息不全,调用接口时401 + if (!userInfo.isBindPhone && [ClientConfig shareConfig].iosPhoneBind) { + return; + } + if (userInfo.nick == nil || userInfo.avatar == nil) { + return; + } + self.userInfo = userInfo; + self.headerView.userInfo = userInfo; + [self.tableView reloadData]; + // 全局变量group + dispatch_group_t group =dispatch_group_create(); + // 并行队列 + dispatch_queue_t queue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0); + dispatch_group_enter(group); + dispatch_group_async(group, queue, ^{ + [self.presenter getMineBannerListWithGroup:group]; + }); + + dispatch_group_enter(group); + dispatch_group_async(group, queue, ^{ + [self.presenter getClanDetailInfoWithGroup:group]; + }); + + dispatch_group_notify(group,dispatch_get_main_queue(), ^{ + [self.tableView reloadData]; + }); + +} + +///获取家族信息成功 +- (void)onGetClanDetailInfoSuccess:(ClanDetailInfoModel *)clanInfo WithGroup:(nonnull dispatch_group_t)group{ + self.clanInfo = clanInfo; + dispatch_group_leave(group); + [self.tableView reloadData]; +} + +- (void)onGetClanDetailInfofailWithGroup:(dispatch_group_t)group { + dispatch_group_leave(group); +} + +///获取个人中心banner +- (void)onGetPersonalBannerListSuccess:(NSArray *)items WithGroup:(nonnull dispatch_group_t)group { + dispatch_group_leave(group); + [self.bannerArray removeAllObjects]; + [self.bannerArray addObjectsFromArray:items]; + [self.tableView reloadData]; + NSMutableArray *array = [NSMutableArray array]; + for (HomeBannerInfoModel *item in self.bannerArray) { + [array addObject:item.bannerId]; + } + NSString *trackName = [array componentsJoinedByString:@","]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventusercenter_banner_show eventAttributes:@{@"bannerId" : trackName}]; +} + +- (void)onGetPersonalBannerListFailWithGroup:(dispatch_group_t)group { + dispatch_group_leave(group); +} + +#pragma mark - XPHomeBannerTableViewCellDelegate +///点击了某个banner +- (void)xPHomeBannerTableViewCell:(XPHomeBannerTableViewCell *)view didClickBanner:(HomeBannerInfoModel *)info { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventusercenter_banner_click eventAttributes:@{@"bannerId" : info.bannerId}]; + switch (info.skipType) { + case HomeBannerInfoSkipType_Room: + { + if (info.skipUri.length > 0) { + [XPRoomViewController openRoom:info.skipUri viewController:self]; + } + } + break; + case HomeBannerInfoSkipType_Web: + { + XPWebViewController *vc = [[XPWebViewController alloc]init]; + vc.url = info.skipUri; + [self.navigationController pushViewController:vc animated:YES]; + } + break; + default: + break; + } +} + + +#pragma mark - TableViewDelegate + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + if (self.userInfo) { + return 3; + } + return 0; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + if (section == 0) { + return 0; + }else if (section == 1) { + return self.sectionArray1.count; + }else if (section == 2) { + return 1; + } + return 0; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (indexPath.section == 0) { + return 64; + } else if (indexPath.section == 1) { + return 64; + } else { + return 80; + } +} + +- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { + if (section == 0) { + return 0.01; + } + return 13; +} + +- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { + return UIView.new; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { + return 0.01; +} + +- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { + return UIView.new; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (indexPath.section == 0) { + XPMineItemTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineItemTableViewCell class])]; + XPMineItemModel *itemModel = self.sectionArray0[indexPath.row]; + cell.itemModel = itemModel; + if (indexPath.row == 0) { + [cell setCornerTop:YES bottom:NO]; + }else if (indexPath.row == self.sectionArray0.count -1) { + [cell setCornerTop:NO bottom:YES]; + }else{ + [cell setCornerTop:NO bottom:NO]; + } + return cell; + }else if (indexPath.section == 1) { + XPMineItemTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineItemTableViewCell class])]; + XPMineItemModel *itemModel = self.sectionArray1[indexPath.row]; + cell.itemModel = itemModel; + if (indexPath.row == 0) { + [cell setCornerTop:YES bottom:NO]; + }else if (indexPath.row == self.sectionArray1.count -1) { + [cell setCornerTop:NO bottom:YES]; + }else{ + [cell setCornerTop:NO bottom:NO]; + } + return cell; + }else if (indexPath.section == 2) { + XPHomeBannerTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPHomeBannerTableViewCell class])]; + if (cell == nil) { + cell = [[XPHomeBannerTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPHomeBannerTableViewCell class])]; + } + cell.isMineViewBanner = YES; + if (self.bannerArray.count) { + cell.bannerList = self.bannerArray; + } + cell.delegate = self; + cell.selectionStyle = UITableViewCellSelectionStyleNone; + return cell; + } + return UITableViewCell.new; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + if (indexPath.section == 0) { + XPMineItemModel *item = self.sectionArray0[indexPath.row]; + [self headerViewBtnActionType:item.type]; + }else if (indexPath.section == 1) { + XPMineItemModel *item = self.sectionArray1[indexPath.row]; + [self headerViewBtnActionType:item.type]; + } +} + +#pragma mark - 懒加载 + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.showsVerticalScrollIndicator = NO; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor colorWithWhite:0.95 alpha:1]; + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + [_tableView registerClass:[XPMineItemTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineItemTableViewCell class])]; + [_tableView registerClass:[XPHomeBannerTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPHomeBannerTableViewCell class])]; + _tableView.contentInset = UIEdgeInsetsMake(0, 0, 100, 0); + } + return _tableView; +} + +- (XPSimpleMineHeaderView *)headerView { + if (!_headerView) { + _headerView = [[XPSimpleMineHeaderView alloc] init]; + _headerView.frame = CGRectMake(0, 0, self.view.bounds.size.width, 313); + _headerView.delegate = self; + } + return _headerView; +} + +- (NSArray *)sectionArray0 { + if (!_sectionArray0) { + XPMineItemModel *model0 = [[XPMineItemModel alloc] init]; + model0.itemImageName = @"mine_union"; + model0.itemName = YMLocalizedString(@"XPSimpleMineViewController1"); + model0.type = XPMineItemType_My_Guild; + + XPMineItemModel *model1 = [[XPMineItemModel alloc] init]; + model1.itemImageName = @"mine_dress"; + model1.itemName = YMLocalizedString(@"XPSimpleMineViewController2"); + model1.type = XPMineItemType_DressUp_Market; + + XPMineItemModel *model2 = [[XPMineItemModel alloc] init]; + model2.itemImageName = @"mine_fans"; + model2.itemName = YMLocalizedString(@"XPSimpleMineViewController3"); + model2.type = XPMineItemType_FansTeam; + _sectionArray0 = @[model0, model1, model2]; + } + return _sectionArray0; +} + +- (NSArray *)sectionArray1 { + if (!_sectionArray1) { + + + XPMineItemModel *model1 = [[XPMineItemModel alloc] init]; + model1.itemImageName = @"mine_feedback"; + model1.itemName = YMLocalizedString(@"XPSimpleMineViewController5"); + model1.type = -2; + + XPMineItemModel *model2 = [[XPMineItemModel alloc] init]; + model2.itemImageName = @"mine_setting"; + model2.itemName = YMLocalizedString(@"XPSimpleMineViewController6"); + model2.type = -3; + + _sectionArray1 = @[ model1, model2]; + } + return _sectionArray1; +} + +- (NSMutableArray *)bannerArray { + if (!_bannerArray) { + _bannerArray = [NSMutableArray array]; + } + return _bannerArray; +} + +@end diff --git a/YuMi/Modules/YMMine/View/YUMIButton.h b/YuMi/Modules/YMMine/View/YUMIButton.h deleted file mode 100644 index 7620faa6..00000000 --- a/YuMi/Modules/YMMine/View/YUMIButton.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// YMButton.h -// YUMI -// -// Created by XY on 2023/2/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSUInteger, YUMIButtonStyle){ - XPButtonImageLeft = 0, - XPButtonImageRight = 1, - XPButtonImageTop = 2, - XPButtonImageBottom = 3, -}; - -@interface YUMIButton : UIButton - - -@property (nonatomic, assign) YUMIButtonStyle buttonStyle; - - -@property (nonatomic, assign) CGFloat padding; - - -+ (id)buttonWithType:(UIButtonType)buttonType withSpace:(CGFloat)vacuum; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/YUMIButton.m b/YuMi/Modules/YMMine/View/YUMIButton.m deleted file mode 100644 index 283f051c..00000000 --- a/YuMi/Modules/YMMine/View/YUMIButton.m +++ /dev/null @@ -1,78 +0,0 @@ -// -// YMButton.m -// YUMI -// -// Created by XY on 2023/2/21. -// - -#import "YUMIButton.h" - -@interface YUMIButton() - - -@property (nonatomic, assign) CGFloat vacuum; - -@end - -@implementation YUMIButton - -+ (id)buttonWithType:(UIButtonType)buttonType withSpace:(CGFloat)vacuum { - YUMIButton *button = [super buttonWithType:buttonType]; - button.vacuum = vacuum; - return button; -} - -- (void)layoutSubviews { - [super layoutSubviews]; - - CGFloat labelWidth = self.titleLabel.frame.size.width; - - CGFloat labelHeight = self.titleLabel.frame.size.height; - - UIImage *image = self.imageView.image; - - switch (self.buttonStyle) { - case XPButtonImageLeft: { - - CGFloat imageHeight = self.frame.size.height - (2 * self.vacuum); - - CGFloat edgeSpace = (self.frame.size.width - imageHeight - labelWidth - self.padding) / 2; - self.imageEdgeInsets = UIEdgeInsetsMake(self.vacuum, edgeSpace, self.vacuum, edgeSpace + labelWidth + self.padding); - self.titleEdgeInsets = UIEdgeInsetsMake(0, -image.size.width + imageHeight + self.padding, 0, 0); - } - break; - case XPButtonImageRight: { - - CGFloat imageHeight = self.frame.size.height - (2 * self.vacuum); - - CGFloat edgeSpace = (self.frame.size.width - imageHeight - labelWidth - self.padding) / 2; - self.imageEdgeInsets = UIEdgeInsetsMake(self.vacuum, edgeSpace + labelWidth + self.padding, self.vacuum, edgeSpace); - self.titleEdgeInsets = UIEdgeInsetsMake(0, -image.size.width - self.padding - imageHeight, 0, 0); - } - break; - case XPButtonImageTop: { - - CGFloat imageHeight = self.frame.size.height - (2 * self.vacuum) - labelHeight - self.padding; - if (imageHeight > image.size.height) { - imageHeight = image.size.height; - } - self.imageEdgeInsets = UIEdgeInsetsMake(self.vacuum, (self.frame.size.width - imageHeight) / 2, self.vacuum + labelHeight + self.padding, (self.frame.size.width - imageHeight) / 2); - self.titleEdgeInsets = UIEdgeInsetsMake(self.vacuum + imageHeight + self.padding, -image.size.width, self.vacuum, 0); - } - break; - case XPButtonImageBottom: { - - CGFloat imageHeight = self.frame.size.height - (2 * self.vacuum) - labelHeight - self.padding; - if (imageHeight > image.size.height) { - imageHeight = image.size.height; - } - self.imageEdgeInsets = UIEdgeInsetsMake(self.vacuum + labelHeight + self.padding, (self.frame.size.width - imageHeight) / 2, self.vacuum, (self.frame.size.width - imageHeight) / 2); - self.titleEdgeInsets = UIEdgeInsetsMake(self.vacuum, -image.size.width, self.padding + imageHeight + self.vacuum, 0); - } - break; - default: - break; - } -} - -@end diff --git a/YuMi/Modules/YMMine/View/YUMIManeAssembleChamberStatementRegardGovernancer.h b/YuMi/Modules/YMMine/View/YUMIManeAssembleChamberStatementRegardGovernancer.h deleted file mode 100644 index f1237e1b..00000000 --- a/YuMi/Modules/YMMine/View/YUMIManeAssembleChamberStatementRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineCollectRoomListViewController.h -// YUMI -// -// Created by YUMI on 2022/7/27. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeAssembleChamberStatementRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/YUMIManeAssembleChamberStatementRegardGovernancer.m b/YuMi/Modules/YMMine/View/YUMIManeAssembleChamberStatementRegardGovernancer.m deleted file mode 100644 index 986b14cb..00000000 --- a/YuMi/Modules/YMMine/View/YUMIManeAssembleChamberStatementRegardGovernancer.m +++ /dev/null @@ -1,325 +0,0 @@ -// -// YMMineCollectRoomListViewController.m -// YUMI -// -// Created by YUMI on 2022/7/27. -// - -#import "YUMIManeAssembleChamberStatementRegardGovernancer.h" -#import -#import -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "UIImage+Utils.h" -#import "StatsticsticsServingFacilitater.h" -#import "ResidenceAssembleChamberMatrix.h" -#import "YUMIResidenceAssembleChamberTabulationRegardElement.h" -#import "YUMIManeVacationerDispossessTabulationRegardElement.h" -#import "YUMIManeAssembleChamberStatementExternalizer.h" -#import "FBCManeCollectChamberStatementCeremony.h" -#import "YUMIChamberRegardGovernancer.h" -#import "YUMIManeAssembleParatiesChamberRegardGovernancer.h" - -static NSString *lastSelectTab = @"lastSelectTab"; - -@interface YUMIManeAssembleChamberStatementRegardGovernancer () - -@property (nonatomic, strong) JXCategoryListContainerView *listContainerView; -@property (nonatomic,strong) NSArray *titles; -@property (nonatomic,strong) JXCategoryTitleView *titleView; - -@property (nonatomic,strong) YUMIManeAssembleParatiesChamberRegardGovernancer *partyVewC; -@property (nonatomic, strong) YUMIManeAssembleParatiesChamberRegardGovernancer *kellegChamberStatementVewC; - -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; -@property (nonatomic, strong) UIView *bottomView; -@property (nonatomic, strong) UIButton *entiretyChosenBtuton; -@property (nonatomic, strong) UIButton *representationBtuton; -@property (nonatomic, strong) UIButton *executiveBtuton; - -@end - -@implementation YUMIManeAssembleChamberStatementRegardGovernancer - -- (YUMIManeAssembleChamberStatementExternalizer *)producePresimport { - return [[YUMIManeAssembleChamberStatementExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self accelertowardseBreeadcrumbProvisionAboutProvisions:@[self.executiveBtuton] isContrary:NO]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventcollection_editbutton_show]; -} - -- (void)executiveBtutonPerformance:(UIButton *)sender { - sender.selected = !sender.isSelected; - if (sender.isSelected) { - self.partyVewC.isCompile = YES; - self.kellegChamberStatementVewC.isCompile = YES; - self.bottomView.hidden = NO; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventcollection_editbutton_click]; - } else { - self.bottomView.hidden = YES; - self.entiretyChosenBtuton.selected = NO; - self.partyVewC.isCompile = NO; - self.kellegChamberStatementVewC.isCompile = NO; - self.entiretyChosenBtuton.selected = NO; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventcollection_editbutton_complete_click]; - } -} - -#pragma mark - JXCategoryListContainerViewDelegate -- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { - return self.titles.count; -} - -- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { - if (index == 0) { - return self.partyVewC; - }else if (index == 1) { - return self.kellegChamberStatementVewC; - } - return nil; -} - -#pragma mark - JXCategoryViewDelegate -- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { - - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - [defaults setObject:@(index) forKey:lastSelectTab]; - [defaults synchronize]; - - self.executiveBtuton.selected = NO; - self.entiretyChosenBtuton.selected = NO; - self.bottomView.hidden = YES; - self.partyVewC.isCompile = NO; - self.kellegChamberStatementVewC.isCompile = NO; -} - -#pragma mark - FBCManeCollectChamberStatementCeremony -- (void)representtowardsionAssembleChamberAccomplishment { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_MineCollectRoomListViewController0")]; - if (self.titleView.selectedIndex == 0) { - [self.partyVewC intelligenceerRenovtowardseh]; - } else { - [self.kellegChamberStatementVewC intelligenceerRenovtowardseh]; - } - self.entiretyChosenBtuton.selected = NO; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_MineCollectRoomListViewController1"); - [self.view addSubview:self.titleView]; - [self.view addSubview:self.listContainerView]; - [self.view addSubview:self.bottomView]; - [self.bottomView addSubview:self.entiretyChosenBtuton]; - [self.bottomView addSubview:self.representationBtuton]; -} - -- (void)initChildLyRestrictions { - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.view); - make.width.mas_equalTo(180); - make.top.mas_equalTo(0); - make.height.mas_equalTo(44); - }]; - [self.listContainerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.top.mas_equalTo(self.titleView.mas_bottom); - }]; - [self.bottomView mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(64+kSafeAreaBottomHeight); - make.left.bottom.right.mas_equalTo(0); - }]; - [self.entiretyChosenBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(64); - make.height.mas_equalTo(22); - make.left.mas_equalTo(15); - make.top.mas_equalTo(18); - }]; - [self.representationBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-15); - make.centerY.mas_equalTo(self.entiretyChosenBtuton); - make.size.mas_equalTo(CGSizeMake(72, 24)); - }]; -} - -#pragma mark - action -- (void)entiretyChosenBtutonPerformance:(UIButton *)sender { - sender.selected = !sender.selected; - if (self.titleView.selectedIndex == 0) { - self.partyVewC.isChosenEntirety = sender.selected; - } else { - self.kellegChamberStatementVewC.isChosenEntirety = sender.selected; - } - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventcollection_selectall_click]; -} - -- (void)representtowardsionBtutonPerformance:(UIButton *)sender { - if (self.titleView.selectedIndex == 0) { - NSMutableArray *roomUidsArray = [NSMutableArray array]; - for (ResidenceAssembleChamberMatrix *model in self.partyVewC.datasource) { - if (model.isSelected) { - [roomUidsArray addObject:model.roomUid]; - } - } - if (roomUidsArray.count) { - NSString *roomUids = [roomUidsArray componentsJoinedByString:@","]; - [self.presimport representtowardsionassembleChamberAboutChamberCids:roomUids]; - } else { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineCollectRoomListViewController2")]; - } - } else { - NSMutableArray *roomUidsArray = [NSMutableArray array]; - for (ResidenceAssembleChamberMatrix *model in self.kellegChamberStatementVewC.datasource) { - if (model.isSelected) { - [roomUidsArray addObject:model.roomUid]; - } - } - if (roomUidsArray.count) { - NSString *roomUids = [roomUidsArray componentsJoinedByString:@","]; - [self.presimport representtowardsionassembleChamberAboutChamberCids:roomUids]; - } else { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineCollectRoomListViewController3")]; - } - } - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventcollection_delete_click]; -} - -#pragma mark FBCManeCollectPartyChamberRegardGovernancerRepresendtation -- (void)fBCManeAssemblePartyChamberRegardGovernancerChosenEntirety:(BOOL)selectAll { - self.entiretyChosenBtuton.selected = selectAll; -} - -#pragma mark - Getters And Setters -- (UIView *)bottomView { - if (!_bottomView) { - _bottomView = [[UIView alloc] init]; - _bottomView.backgroundColor = [UIColor whiteColor]; - _bottomView.hidden = YES; - UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, 64+kSafeAreaBottomHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(8, 8)]; - CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; - maskLayer.frame = CGRectMake(0, 0, KScreenWidth, 64+kSafeAreaBottomHeight); - maskLayer.path = maskPath.CGPath; - _bottomView.layer.mask = maskLayer; - } - return _bottomView; -} - -- (UIButton *)entiretyChosenBtuton { - if (!_entiretyChosenBtuton) { - UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; - button.titleLabel.font = [UIFont systemFontOfSize:16]; - [button addTarget:self action:@selector(entiretyChosenBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [button setTitle:YMLocalizedString(@"YUMI_MineCollectRoomListViewController4") forState:UIControlStateNormal]; - [button setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateNormal]; - [button setImage:[UIImage imageNamed:@"yumi_collect_scope_edit_normal"] forState:UIControlStateNormal]; - [button setImage:[UIImage imageNamed:@"yumi_collect_scope_edit_selected"] forState:UIControlStateSelected]; - _entiretyChosenBtuton = button; - } - return _entiretyChosenBtuton; -} - -- (UIButton *)executiveBtuton { - if (!_executiveBtuton) { - UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; - button.titleLabel.font = [UIFont systemFontOfSize:13]; - [button addTarget:self action:@selector(executiveBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [button setTitle:YMLocalizedString(@"YUMI_MineCollectRoomListViewController5") forState:UIControlStateNormal]; - [button setTitle:YMLocalizedString(@"YUMI_MineCollectRoomListViewController6") forState:UIControlStateSelected]; - [button setTitleColor:UIColorFromRGB(0x999999) forState:UIControlStateNormal]; - _executiveBtuton = button; - } - return _executiveBtuton; -} - -- (UIButton *)representationBtuton { - if (!_representationBtuton) { - UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; - button.titleLabel.font = [UIFont systemFontOfSize:14]; - [button addTarget:self action:@selector(representtowardsionBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [button setTitle:YMLocalizedString(@"YUMI_MineCollectRoomListViewController7") forState:UIControlStateNormal]; - [button setTitleColor:UIColorFromRGB(0xFB486A) forState:UIControlStateNormal]; - button.layer.cornerRadius = 12; - button.layer.masksToBounds = YES; - button.layer.borderWidth = 1; - button.layer.borderColor = UIColorFromRGB(0xFB486A).CGColor; - _representationBtuton = button; - } - return _representationBtuton; -} - -#pragma mark - Getters And Setters -- (JXCategoryListContainerView *)listContainerView { - if (!_listContainerView) { - _listContainerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; - _listContainerView.scrollView.scrollEnabled = YES; - _listContainerView.scrollView.tag = 1000; - _listContainerView.listCellBackgroundColor = [UIColor clearColor]; - } - return _listContainerView; -} - -- (YUMIManeAssembleParatiesChamberRegardGovernancer *)partyVewC { - if (!_partyVewC) { - _partyVewC = [[YUMIManeAssembleParatiesChamberRegardGovernancer alloc] init]; - _partyVewC.type = ManeCollectChamberGenreParty; - _partyVewC.delegate = self; - } - return _partyVewC; -} - -- (YUMIManeAssembleParatiesChamberRegardGovernancer *)kellegChamberStatementVewC { - if (!_kellegChamberStatementVewC) { - _kellegChamberStatementVewC = [[YUMIManeAssembleParatiesChamberRegardGovernancer alloc] init]; - _kellegChamberStatementVewC.type = ManeCollectChamberGenreAnchor; - _kellegChamberStatementVewC.delegate = self; - } - return _kellegChamberStatementVewC; -} - -- (NSArray *)titles { - if (!_titles) { - _titles = @[YMLocalizedString(@"YUMI_MineCollectRoomListViewController8")]; - } - return _titles; -} - -- (JXCategoryTitleView *)titleView { - if (!_titleView) { - _titleView = [[JXCategoryTitleView alloc] initWithFrame:CGRectZero]; - _titleView.backgroundColor =[UIColor clearColor]; - _titleView.titleColor = [DJDKMIMOMColor instantEssayPrettify]; - _titleView.titleSelectedColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleView.titleFont = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; - _titleView.titleSelectedFont = [UIFont systemFontOfSize:14 weight:UIFontWeightHeavy]; - _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; - _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; - _titleView.averageCellSpacingEnabled = YES; - _titleView.listContainer = self.listContainerView; - _titleView.titles = self.titles; - _titleView.delegate = self; - - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - NSNumber *index = [defaults objectForKey:lastSelectTab]; - _titleView.defaultSelectedIndex = index.intValue; - - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventcollection_entry eventAttributes:@{@"defaultTab" : self.titles[index.intValue]}]; - - JXCategoryIndicatorImageView *burlywoodRegard = [[JXCategoryIndicatorImageView alloc] init]; - burlywoodRegard.indicatorImageViewSize = CGSizeMake(50, 8); - burlywoodRegard.verticalMargin = 12; - burlywoodRegard.indicatorImageView.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0x5BC8F8),UIColorFromRGB(0x66D9D9)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(50, 8)]; - burlywoodRegard.indicatorImageView.layer.masksToBounds = YES; - burlywoodRegard.indicatorImageView.layer.cornerRadius = 4; - _titleView.indicators = @[burlywoodRegard]; - } - return _titleView; -} - -@end diff --git a/YuMi/Modules/YMMine/View/YUMIManeFanaticsSquadRegardGovernancer.h b/YuMi/Modules/YMMine/View/YUMIManeFanaticsSquadRegardGovernancer.h deleted file mode 100644 index 3038d3c1..00000000 --- a/YuMi/Modules/YMMine/View/YUMIManeFanaticsSquadRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineFansTeamViewController.h -// YUMI -// -// Created by YUMI on 2022/4/8. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeFanaticsSquadRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/YUMIManeFanaticsSquadRegardGovernancer.m b/YuMi/Modules/YMMine/View/YUMIManeFanaticsSquadRegardGovernancer.m deleted file mode 100644 index 88226cc7..00000000 --- a/YuMi/Modules/YMMine/View/YUMIManeFanaticsSquadRegardGovernancer.m +++ /dev/null @@ -1,132 +0,0 @@ -// -// YMMineFansTeamViewController.m -// YUMI -// -// Created by YUMI on 2022/4/8. -// - -#import "YUMIManeFanaticsSquadRegardGovernancer.h" -#import -#import "DJDKMIMOMColor.h" -#import "NSArray+Safe.h" -#import "ClientDisposition.h" -#import "YUMIManeKellegFanaticsSquadMatrix.h" -#import "YUMIManeKellegFanaticsSquadTabulationRegardElement.h" -#import "YUMIManeVacationerDispossessTabulationRegardElement.h" -#import "YUMIManeFanaticsSquadExternalizer.h" -#import "FBCManeKellegFanaticsTeamCeremony.h" -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -#import "YUMIManeSimpleConsumerAbstractRegardGovernancer.h" -#import "InterlocutionRegardGovernancer.h" - -@interface YUMIManeFanaticsSquadRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,assign) int page; -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; -@end - -@implementation YUMIManeFanaticsSquadRegardGovernancer - -- (YUMIManeFanaticsSquadExternalizer *)producePresimport { - return [[YUMIManeFanaticsSquadExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self.presimport acquireKellegFantowardsicsSquadSttowardsement:self.page pageSize:100 state:0]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Mine_Fans_Team_View_Controller_0"); - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -#pragma mark - FBCManeKellegFanaticsTeamCeremony -- (void)acquireKellegFantowardsicsSquadSttowardsementAccomplishment:(NSArray *)array state:(int)state { - [self.datasource addObjectsFromArray:array]; - [self.tableView reloadData]; -} - -- (void)acquireKellegFantowardsicsSquadSttowardsementFlunk:(int)state { - [self.tableView reloadData]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMIManeKellegFanaticsSquadTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeKellegFanaticsSquadTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeKellegFanaticsSquadTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeKellegFanaticsSquadTabulationRegardElement class])]; - } - cell.item = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; - } - - YUMIManeVacationerDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeVacationerDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeVacationerDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeVacationerDispossessTabulationRegardElement class])]; - } - cell.emptyTitle = YMLocalizedString(@"YUMI_Mine_Fans_Team_View_Controller_1"); - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - YUMIManeKellegFanaticsSquadMatrix *item = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMIManeConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = item.teamUid; - [self.navigationController pushViewController:userInfoVC animated:YES]; - }else{ - YUMIManeSimpleConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeSimpleConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = item.teamUid; - [self.navigationController pushViewController:userInfoVC animated:YES]; - } -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return self.datasource.count > 0 ? 56 : 400; -} - -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - _tableView.rowHeight = 56; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIManeVacationerDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeVacationerDispossessTabulationRegardElement class])]; - [_tableView registerClass:[YUMIManeKellegFanaticsSquadTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeKellegFanaticsSquadTabulationRegardElement class])]; - } - return _tableView; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - - -@end diff --git a/YuMi/Modules/YMMine/View/YUMIManeProvisionTabulationRegardElement.h b/YuMi/Modules/YMMine/View/YUMIManeProvisionTabulationRegardElement.h deleted file mode 100644 index 53810114..00000000 --- a/YuMi/Modules/YMMine/View/YUMIManeProvisionTabulationRegardElement.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMMineItemTableViewCell.h -// YUMI -// -// Created by XY on 2023/2/20. -// - -#import - -@class YUMIManeProvisionMatrix; -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeProvisionTabulationRegardElement : UITableViewCell - -@property (nonatomic, strong) YUMIManeProvisionMatrix *itemMatrix; - -- (void)setMonopolizeApex:(BOOL)isApex bottom:(BOOL)isExtreme; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/YUMIManeProvisionTabulationRegardElement.m b/YuMi/Modules/YMMine/View/YUMIManeProvisionTabulationRegardElement.m deleted file mode 100644 index 4c432484..00000000 --- a/YuMi/Modules/YMMine/View/YUMIManeProvisionTabulationRegardElement.m +++ /dev/null @@ -1,190 +0,0 @@ -// -// YMMineItemTableViewCell.m -// YUMI -// -// Created by XY on 2023/2/20. -// - -#import "YUMIManeProvisionTabulationRegardElement.h" -#import "NetIndicateRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIView+Corner.h" -#import "YUMIMacroUitls.h" - -#import "YUMIManeProvisionMatrix.h" - -@interface YUMIManeProvisionTabulationRegardElement() - -@property (nonatomic, strong) UIView *containerView; -@property (nonatomic, strong) NetIndicateRegard *figureIndicateRegard; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UIImageView *arrowIndicateRegard; -@property (nonatomic, strong) UIView *dashBurlywoodRegard; -@property (nonatomic, strong) CAShapeLayer *shapeLayer; - -@end - -@implementation YUMIManeProvisionTabulationRegardElement - -- (void)awakeFromNib { - [super awakeFromNib]; - -} - -- (void)setSelected:(BOOL)selected animated:(BOOL)animated { - [super setSelected:selected animated:animated]; - - -} - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; - if (self) { - self.selectionStyle = UITableViewCellSelectionStyleNone; - self.backgroundColor = UIColor.clearColor; - self.contentView.backgroundColor = UIColor.clearColor; - [self produceUI]; - } - return self; -} - -- (void)produceUI { - [self.contentView addSubview:self.containerView]; - [self.containerView addSubview:self.figureIndicateRegard]; - [self.containerView addSubview:self.titleLabel]; - [self.containerView addSubview:self.arrowIndicateRegard]; - [self.containerView addSubview:self.dashBurlywoodRegard]; - - [self.containerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(16); - make.right.mas_equalTo(-16); - make.top.bottom.mas_equalTo(0); - }]; - [self.figureIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(12); - make.centerY.mas_equalTo(self.containerView); - make.width.height.mas_equalTo(40); - }]; - [self.arrowIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(0); - make.width.mas_equalTo(40); - make.height.mas_equalTo(12); - make.centerY.mas_equalTo(self.containerView); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.figureIndicateRegard.mas_right).offset(2); - make.right.mas_equalTo(self.arrowIndicateRegard.mas_left).offset(-2); - make.centerY.mas_equalTo(self.containerView); - }]; - [self.dashBurlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(22); - make.right.mas_equalTo(-8); - make.height.mas_equalTo(1); - make.bottom.mas_equalTo(0); - }]; - -} - -- (void)layoutSubviews { - [super layoutSubviews]; - if (self.shapeLayer.superlayer == nil && self.dashBurlywoodRegard.frame.size.width > 0) { - [self accelertowardseDashBurlywoodLength:5 lineSpacing:5 lineColor:[UIColorFromRGB(0x939BA3) colorWithAlphaComponent:0.3]]; - } -} - -- (void)accelertowardseDashBurlywoodLength:(int)lineLength lineSpacing:(int)lineSpacing lineColor:(UIColor *)lineColor { - [self.shapeLayer setBounds:self.dashBurlywoodRegard.bounds]; - [self.shapeLayer setPosition:CGPointMake(CGRectGetWidth(self.dashBurlywoodRegard.frame) / 2, CGRectGetHeight(self.dashBurlywoodRegard.frame))]; - [self.shapeLayer setFillColor:[UIColor clearColor].CGColor]; - [self.shapeLayer setStrokeColor:lineColor.CGColor]; - [self.shapeLayer setLineWidth:CGRectGetHeight(self.dashBurlywoodRegard.frame)]; - [self.shapeLayer setLineJoin:kCALineJoinRound]; - [self.shapeLayer setLineDashPattern:[NSArray arrayWithObjects:[NSNumber numberWithInt:lineLength], [NSNumber numberWithInt:lineSpacing], nil]]; - - CGMutablePathRef path = CGPathCreateMutable(); - CGPathMoveToPoint(path, NULL, 0, 0); - CGPathAddLineToPoint(path, NULL,CGRectGetWidth(self.dashBurlywoodRegard.frame), 0); - [self.shapeLayer setPath:path]; - CGPathRelease(path); - - [self.dashBurlywoodRegard.layer addSublayer:self.shapeLayer]; -} - -- (void)setMonopolizeApex:(BOOL)isApex bottom:(BOOL)isExtreme { - if (isApex == NO && isExtreme == NO) { - self.containerView.layer.cornerRadius = 0; - self.dashBurlywoodRegard.hidden = NO; - return; - } - if (isApex) { - self.containerView.layer.cornerRadius = 20.0; - self.containerView.layer.maskedCorners = kCALayerMinXMinYCorner | kCALayerMaxXMinYCorner; - self.dashBurlywoodRegard.hidden = NO; - return; - } - if (isExtreme) { - self.containerView.layer.cornerRadius = 20.0; - self.containerView.layer.maskedCorners = kCALayerMinXMaxYCorner | kCALayerMaxXMaxYCorner; - self.dashBurlywoodRegard.hidden = YES; - return; - } -} - -- (void)setItemMatrix:(YUMIManeProvisionMatrix *)itemMatrix { - _itemMatrix = itemMatrix; - self.figureIndicateRegard.image = [UIImage imageNamed:itemMatrix.itemImageName]; - self.titleLabel.text = itemMatrix.itemName; -} - -#pragma mark - 懒加载 - -- (UIView *)containerView { - if (!_containerView) { - _containerView = [[UIView alloc] init]; - _containerView.backgroundColor = UIColor.whiteColor; - } - return _containerView; -} - -- (NetIndicateRegard *)figureIndicateRegard { - if (!_figureIndicateRegard) { - _figureIndicateRegard = [[NetIndicateRegard alloc] init]; - _figureIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _figureIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _titleLabel.font = [UIFont systemFontOfSize:12]; - } - return _titleLabel; -} - -- (UIImageView *)arrowIndicateRegard { - if (!_arrowIndicateRegard) { - _arrowIndicateRegard = [[UIImageView alloc] init]; - _arrowIndicateRegard.image = [UIImage imageNamed:@"yumi_same_right_arrow"]; - _arrowIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _arrowIndicateRegard; -} - -- (UIView *)dashBurlywoodRegard { - if (!_dashBurlywoodRegard) { - _dashBurlywoodRegard = [[UIView alloc] init]; - } - return _dashBurlywoodRegard; -} - -- (CAShapeLayer *)shapeLayer { - if (!_shapeLayer) { - _shapeLayer = [CAShapeLayer layer]; - } - return _shapeLayer; -} - -@end diff --git a/YuMi/Modules/YMMine/View/YUMIManeRegardGovernancer.h b/YuMi/Modules/YMMine/View/YUMIManeRegardGovernancer.h deleted file mode 100644 index 4522d653..00000000 --- a/YuMi/Modules/YMMine/View/YUMIManeRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineViewController.h -// YUMI -// -// Created by YUMI on 2021/9/16. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/YUMIManeRegardGovernancer.m b/YuMi/Modules/YMMine/View/YUMIManeRegardGovernancer.m deleted file mode 100644 index 3df3d4f7..00000000 --- a/YuMi/Modules/YMMine/View/YUMIManeRegardGovernancer.m +++ /dev/null @@ -1,631 +0,0 @@ -// -// YUMIManeRegardGovernancer.m -// YuMi -// -// Created by YuMi on 2021/9/16. -// - -#import "YUMIManeRegardGovernancer.h" -#import -#import "MKJPopup.h" -#import "YUMIHtmlUrl.h" -#import "UIButton+EnlargeTouchArea.h" -#import "StatsticsticsServingFacilitater.h" -#import "YUMIConstant.h" -#import "Api+Room.h" -#import "Api+RoomSetting.h" -#import "AccountAbstractStorage.h" -#import "ClientDisposition.h" -#import "YUMIManeProvisionMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "YUMIManeVacationerUnReadMatrix.h" -#import "CollectiveSpecificAbstractMatrix.h" -#import "ResidenceOriflammeAbstractMatrix.h" -#import "YUMIManeFuntionProvisionMatrix.h" -#import "RamparatetAbstractMatrix.h" -#import "FBCManeCeremony.h" -#import "YUMIManeExternalize.h" -#import "YUMIManeIntelligenceProvisionTabulationRegardElement.h" -#import "YUMIManeIntelligenceRegard.h" -#import "YUMIResidenceOriflammeTabulationRegardElement.h" -#import "YUMIManeStrangeConsumerReindictRegard.h" -#import "YUMIManeTheUnionElement.h" -#import "YUMIManeFeaturealConcentrateElement.h" -#import "YUMIManeStatementElement.h" -#import "YUMIManeInstanllingRegardGovernancer.h" -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -#import "YUMIManeReindictRegardGovernancer.h" -#import "YUMITissueRegardGovernancer.h" -#import "YUMIChamberRegardGovernancer.h" -#import "YUMIManePretendUpwardsRegardGovernancer.h" -#import "YUMIPretendUpwardsProcurementRegardGovernancer.h" -#import "YUMIManeFanaticsRegardGovernancer.h" -#import "YUMIManeConsiderationRegardGovernancer.h" -#import "YUMIManeVacationerRegardGovernancer.h" -#import "YUMIManeFanaticsSquadRegardGovernancer.h" -#import "YUMIManeCollectiveRegardGovernancer.h" -#import "YUMIManeUnionRegardGovernancer.h" -#import "YUMIManeTerminalImpressionRegardGovernancer.h" -#import "YUMIManeAssembleChamberStatementRegardGovernancer.h" -#import "YUMIManeMainUnionStatementVC.h" -#import "YUMIManeGiveDiamondVC.h" -#import "YUMIIAPReindictRegardGovernancer.h" -#import "YUMIRevenueReflectionVC.h" - -UIKIT_EXTERN NSString *kRequestRicket; - -@interface YUMIManeRegardGovernancer () -@property (nonatomic, strong) UIView *backgroundIndicateRegard; - -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic, strong) NSMutableArray *functionGarment; -@property (nonatomic, strong) NSMutableArray *oriflammeGarment; -@property (nonatomic,strong) YUMIManeIntelligenceRegard *intelligenceRegard; -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@property (nonatomic,strong) CollectiveSpecificAbstractMatrix *collectiveAbstract; -@property (nonatomic,strong) YUMIManeProvisionMatrix *guildProvisionMatrix; -@property(nonatomic,assign)BOOL isHavePermission; -@property (nonatomic,assign) BOOL isRefreshChamberAbstract; -@property (nonatomic,assign) BOOL isDemandAtoloudspeaker; -@end - -@implementation YUMIManeRegardGovernancer - - -- (void)dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (YUMIManeExternalize *)producePresimport { - return [[YUMIManeExternalize alloc] init];; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventusercenter_recharge_card_show]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventusercenter_noble_card_show]; - - -} - -- (void)viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; - if([AccountAbstractStorage instance].isRequestRicket == YES)return; - [self.presimport getUserInfo]; -} - -#pragma mark- 检查是否有转赠钻石权限 - --(void)examineHaveGiveDiamondsPreconditionion{ - ClientDisposition *config = [ClientDisposition partowardsiciptowardsionDisposition]; - NSArray *uidList = config.dispositionAbstract.giveDiamondErbanNoList; - for (id uid in uidList) { - NSString *acquireCid = [uid stringValue]; - if([acquireCid isEqualToString:@(self.userInfo.erbanNo).stringValue]){ - self.isHavePermission = YES; - break; - } - } - if(self.isHavePermission == YES)return; - for (id uid in config.dispositionAbstract.giveGiftErbanNoList) { - NSString *acquireCid = [uid stringValue]; - if([acquireCid isEqualToString:@(self.userInfo.erbanNo).stringValue]){ - self.isHavePermission = YES; - break; - } - } - if(self.isHavePermission == YES)return; - if(self.userInfo.userLevelVo.experLevelSeq >= config.dispositionAbstract.giveDiamondExperLevel){ - self.isHavePermission = YES; - return; - } - if(self.userInfo.userLevelVo.experLevelSeq >= config.dispositionAbstract.giveGiftExperLevel){ - self.isHavePermission = YES; - } -} - -#pragma mark - Response -- (void)settingBtutonPerformance { - YUMIManeInstanllingRegardGovernancer * settingVC = [[YUMIManeInstanllingRegardGovernancer alloc] init]; - settingVC.userInfo = self.userInfo; - [self.navigationController pushViewController:settingVC animated:YES]; -} - -#pragma mark - Private Method -- (void)initSubViews { - YUMIManeFuntionProvisionMatrix *setItem = [YUMIManeFuntionProvisionMatrix new]; - setItem.centerName = YMLocalizedString(@"YUMI_Mine_Setting_View_Controller_0"); - setItem.centerPic = @"mineview_set"; - setItem.skipType = YUMIManeProvisionGenre_My_Set; - [self.functionGarment addObject:setItem]; - - [self.view addSubview:self.backgroundIndicateRegard]; - [self.view addSubview:self.tableView]; - - self.tableView.tableHeaderView = self.intelligenceRegard; - if (@available(iOS 15.0, *)) { - self.tableView.sectionHeaderTopPadding = 0; - } - [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(requisitionRicketAccomplishment:) name:kRequestRicket object:nil]; -} --(void)requisitionRicketAccomplishment:(NSNotification *)not{ - if([not.object isKindOfClass:[NSDictionary class]])return; - BOOL is = [not.object boolValue]; - if(is == YES){ - [self.presimport getUserInfo]; - } -} -- (void)initChildLyRestrictions { - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(0); - }]; - - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.view); - make.left.right.bottom.mas_equalTo(self.view); - }]; -} - -- (void)pushRegardGovernancerAboutGenre:(NSInteger)type functionItem:(YUMIManeFuntionProvisionMatrix *)item { - switch (type) { - case YUMIManeProvisionGenre_My_Set:{ - [self settingBtutonPerformance]; - break; - } - case YUMIManeProvisionGenre_Match_Relevance_Account: - [self pushTissueRegardWIthWeebsite:item.centerUrl]; - break; - case YUMIManeProvisionGenre_Foot_Print: - { - YUMIManeTerminalImpressionRegardGovernancer *vc = [[YUMIManeTerminalImpressionRegardGovernancer alloc] init]; - [self.navigationController pushViewController:vc animated:YES]; - } - break; - - case YUMIManeProvisionGenre_Account: - { - - [self pushTertiusPartyIntersectVewC]; - } - break; - case YUMIManeProvisionGenre_Personinfo: - { - YUMIManeConsumerAbstractRegardGovernancer * infoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - infoVC.uid = self.userInfo.uid; - [self.navigationController pushViewController:infoVC animated:YES]; - } - break; - case YUMIManeProvisionGenre_My_Room: - { - NSString* roomUid = [NSString stringWithFormat:@"%ld", (long)self.userInfo.uid]; - [YUMIChamberRegardGovernancer unfoildChamber:roomUid viewController:self]; - } - break; - case YUMIManeProvisionGenre_Collect_Room: - { - YUMIManeAssembleChamberStatementRegardGovernancer *collectVC = [[YUMIManeAssembleChamberStatementRegardGovernancer alloc] init]; - [self.navigationController pushViewController:collectVC animated:YES]; - } - break; - case YUMIManeProvisionGenre_My_Dressup: - { - YUMIManePretendUpwardsRegardGovernancer * dressUpVC = [[YUMIManePretendUpwardsRegardGovernancer alloc] init]; - [self.navigationController pushViewController:dressUpVC animated:YES]; - } - break; - case YUMIManeProvisionGenre_DressUp_Market: - { - YUMIPretendUpwardsProcurementRegardGovernancer *dressUpShopVc = [[YUMIPretendUpwardsProcurementRegardGovernancer alloc] init]; - [self.navigationController pushViewController:dressUpShopVc animated:YES]; - } - break; - case YUMIManeProvisionGenre_Fans_List: - { - YUMIManeFanaticsRegardGovernancer * fanaticsVewC = [[YUMIManeFanaticsRegardGovernancer alloc] init]; - fanaticsVewC.view.backgroundColor = [UIColor whiteColor]; - [self.navigationController pushViewController:fanaticsVewC animated:YES]; - } - break; - case YUMIManeProvisionGenre_Attention_List: - { - YUMIManeConsiderationRegardGovernancer * considerationVewC = [[YUMIManeConsiderationRegardGovernancer alloc] init]; - [self.navigationController pushViewController:considerationVewC animated:YES]; - } - break; - case YUMIManeProvisionGenre_Visitor: - { - self.intelligenceRegard.vacationerUnLireComputation = 0; - YUMIManeVacationerRegardGovernancer *visitorVC = [[YUMIManeVacationerRegardGovernancer alloc] init]; - [self.navigationController pushViewController:visitorVC animated:YES]; - } - break; - case YUMIManeProvisionGenre_FansTeam: { - YUMIManeFanaticsSquadRegardGovernancer *fansTeamVc = [[YUMIManeFanaticsSquadRegardGovernancer alloc] init]; - [self.navigationController pushViewController:fansTeamVc animated:YES]; - } - break; - case YUMIManeProvisionGenre_My_Guild: - { - if (self.collectiveAbstract.clan.elderUid.length > 0) { - YUMIManeCollectiveRegardGovernancer * clanVC = [[YUMIManeCollectiveRegardGovernancer alloc] init]; - clanVC.uid = [NSString stringWithFormat:@"%ld", self.userInfo.uid]; - [self.navigationController pushViewController:clanVC animated:YES]; - } else if(self.collectiveAbstract.hall.hallId.length > 0) { - YUMIManeUnionRegardGovernancer * guildVC = [[YUMIManeUnionRegardGovernancer alloc] init]; - guildVC.ownerUid = self.collectiveAbstract.hall.ownerUid; - guildVC.instituteId = self.collectiveAbstract.hall.hallId; - [self.navigationController pushViewController:guildVC animated:YES]; - } - - } - break; - default: - break; - } -} - - -- (void)pushTissueRegardWIthWeebsite:(NSString *)url { - YUMITissueRegardGovernancer * webVewC = [[YUMITissueRegardGovernancer alloc] init]; - webVewC.url = url; - [self.navigationController pushViewController:webVewC animated:YES]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return 3; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - if (section == 2){ - return self.functionGarment.count; - } - return 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (indexPath.section == 0) { - return 44; - - }else if (indexPath.section == 1) { - return self.isHavePermission ? 134 : 99; - } - return 60; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (indexPath.section == 0) { - - YUMIManeTheUnionElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeTheUnionElement class])]; - cell.collectiveAbstract = self.collectiveAbstract; - - return cell; - }else if (indexPath.section == 1) { - YUMIManeFeaturealConcentrateElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeFeaturealConcentrateElement class])]; - cell.isHaveGiveBWSttawberry = self.isHavePermission; - @kWeakify(self) - cell.ticktackPerformance = ^(int type){ - @kStrongify(self) - if (type == 0){ - [self pushMieyChamberVewC]; - } else if (type == 1){ - [self pushEarningsReflectionVewC]; - }else{ - [self pushGiveDiamondVewC]; - } - }; - - cell.selectionStyle = UITableViewCellSelectionStyleNone; - return cell; - } else { - YUMIManeStatementElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeStatementElement class])]; - if (indexPath.row == 0 && self.functionGarment.count > 1){ - [cell setMonopolizeAboutIsApex:YES isExtreme:NO]; - }else if (indexPath.row == self.functionGarment.count-1){ - if(self.functionGarment.count == 1){ - [cell setMonopolizeAboutIsApex:YES isExtreme:YES]; - }else{ - [cell setMonopolizeAboutIsApex:NO isExtreme:YES]; - } - }else{ - [cell setMonopolizeAboutIsApex:NO isExtreme:NO]; - } - - YUMIManeFuntionProvisionMatrix *model = self.functionGarment[indexPath.row]; - cell.itemMatrix = model; - return cell; - } -} - -- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { - return 16; -} - -- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { - UIView * view = [[UIView alloc] init]; - view.backgroundColor = [UIColor clearColor]; - return view; -} --(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ - if (indexPath.section == 0){ - if( self.collectiveAbstract.clan.elderUid > 0){ - YUMIManeCollectiveRegardGovernancer * clanVC = [[YUMIManeCollectiveRegardGovernancer alloc] init]; - clanVC.uid = self.collectiveAbstract.clan.elderUid; - [self.navigationController pushViewController:clanVC animated:YES]; - return; - }else { - if(self.collectiveAbstract.hall.ownerUid > 0){ - YUMIManeUnionRegardGovernancer * hallVC = [[YUMIManeUnionRegardGovernancer alloc] init]; - hallVC.ownerUid = self.collectiveAbstract.hall.ownerUid; - hallVC.instituteId = self.collectiveAbstract.hall.hallId; - [self.navigationController pushViewController:hallVC animated:YES]; - return; - } - } - YUMIManeMainUnionStatementVC *gulidListVC = [YUMIManeMainUnionStatementVC new]; - [self.navigationController pushViewController:gulidListVC animated:YES]; - - return; - } - if (indexPath.section != 2)return; - YUMIManeFuntionProvisionMatrix *item = self.functionGarment[indexPath.row]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventusercenter_function_click eventAttributes:@{@"functionName" : item.centerName}]; - [self pushRegardGovernancerAboutGenre:item.skipType functionItem:item]; -} --(void)pushGiveDiamondVewC{ - YUMIManeGiveDiamondVC *giveDiamondVC = [[YUMIManeGiveDiamondVC alloc]init]; - giveDiamondVC.userInfo = self.userInfo; - [self.navigationController pushViewController:giveDiamondVC animated:YES]; -} --(void)pushTertiusPartyIntersectVewC{ - YUMIIAPReindictRegardGovernancer * webVewC =[[YUMIIAPReindictRegardGovernancer alloc] init]; - [self.navigationController pushViewController:webVewC animated:YES]; -} --(void)pushEarningsReflectionVewC{ - - YUMIRevenueReflectionVC *incomeRecordVC = [YUMIRevenueReflectionVC new]; - incomeRecordVC.collectiveAbstract = self.collectiveAbstract; - incomeRecordVC.userInfo = self.userInfo; - [self.navigationController pushViewController:incomeRecordVC animated:YES]; - -} --(void)pushMieyChamberVewC{ - if(self.isRefreshChamberAbstract == YES)return; - self.isRefreshChamberAbstract = YES; - NSString* roomUid = [NSString stringWithFormat:@"%ld", (long)self.userInfo.uid]; - [YUMIChamberRegardGovernancer unfoildChamber:roomUid viewController:self]; -} -#pragma mark - FBCManeIntelligenceRegardRepresendtation -- (void)yUMIManeIntelligenceRegard:(YUMIManeIntelligenceRegard *)view didClickAvatar:(ConsumerAbstractMatrix *)info { - [self pushRegardGovernancerAboutGenre:YUMIManeProvisionGenre_Personinfo functionItem:nil]; -} - -- (void)yumiManeIntelligenceRegardTicktackFantowardsics { - [self pushRegardGovernancerAboutGenre:YUMIManeProvisionGenre_Fans_List functionItem:nil]; -} - -- (void)yumiManeIntelligenceRegardTicktackConsidertowardsion { - [self pushRegardGovernancerAboutGenre:YUMIManeProvisionGenre_Attention_List functionItem:nil]; -} - -- (void)yumiManeIntelligenceRegardTicktackCommunictowardsionSolitaire { - [self pushRegardGovernancerAboutGenre:YUMIManeProvisionGenre_Skill_Card functionItem:nil]; -} - - -- (void)yumiManeIntelligenceRegardTicktackAcomputtowardsion { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventusercenter_recharge_card_click]; - [self pushRegardGovernancerAboutGenre:YUMIManeProvisionGenre_Account functionItem:nil]; -} - -- (void)yUMIManeIntelligenceRegardCliekMagnificentConcentrtowardse { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventvipEntranceMeClick]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventusercenter_noble_card_click]; - [self pushRegardGovernancerAboutGenre:YUMIManeProvisionGenre_Noble_Center functionItem:nil]; -} - -#pragma mark - FBCManeCeremony -- (void)dwellEarnManeFuntionProvisionAccomplishment:(NSArray *)items WithGroup:(nonnull dispatch_group_t)group{ - [self.functionGarment removeAllObjects]; - [self.functionGarment addObjectsFromArray:items]; - [self.functionGarment enumerateObjectsUsingBlock:^(YUMIManeFuntionProvisionMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.skipType == YUMIManeProvisionGenre_CP || obj.skipType == YUMIManeProvisionGenre_My_Room) { - [self.functionGarment removeObject:obj]; - } - }]; - NSMutableArray *array = [NSMutableArray array]; - for (YUMIManeFuntionProvisionMatrix *item in self.functionGarment) { - [array addObject:item.centerName]; - } - NSString *trackName = [array componentsJoinedByString:@","]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventusercenter_function_show eventAttributes:@{@"functionName" : trackName}]; - dispatch_group_leave(group); -} -- (void)dwellEarnManeFuntionProvisionFlunkAboutGroup:(dispatch_group_t)group{ - dispatch_group_leave(group); -} - -- (void)dwellEarnsubjectiveOriflammeSttowardsementAccomplishment:(NSArray *)items WithGroup:(nonnull dispatch_group_t)group{ - [self.oriflammeGarment removeAllObjects]; - [self.oriflammeGarment addObjectsFromArray:items]; - dispatch_group_leave(group); - NSMutableArray *array = [NSMutableArray array]; - for (ResidenceOriflammeAbstractMatrix *item in self.oriflammeGarment) { - [array addObject:item.bannerId]; - } - NSString *trackName = [array componentsJoinedByString:@","]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventusercenter_banner_show eventAttributes:@{@"bannerId" : trackName}]; -} --(void)dwellEarnsubjectiveOriflammeSttowardsementFlunkAboutGroup:(dispatch_group_t)group{ - dispatch_group_leave(group); -} - -- (void)dwellEarnConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo { - - @synchronized (self.presimport) { - - if (!userInfo.isBindPhone && [ClientDisposition partowardsiciptowardsionDisposition].iosMobileBind) { - return; - } - if (userInfo.nick == nil || userInfo.avatar == nil ) { - return; - } - if(self.isDemandAtoloudspeaker == YES){ - return; - } - self.isDemandAtoloudspeaker = YES; - - dispatch_group_t group =dispatch_group_create(); - - dispatch_queue_t queue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0); - - dispatch_group_enter(group); - dispatch_group_async(group, queue, ^{ - [self.presimport acquireCollectiveSpecificAbstractAboutGroup:group]; - }); - - dispatch_group_enter(group); - dispatch_group_async(group, queue, ^{ - [self.presimport acquireConsumerPocketbookAbstractAboutGroup:group]; - }); - dispatch_group_enter(group); - dispatch_group_async(group, queue, ^{ - [self.presimport acquireFetowardsureProvisionSttowardsementAboutGroup:group]; - }); - - dispatch_group_enter(group); - dispatch_group_async(group, queue, ^{ - [self.presimport acquireManeOriflammeSttowardsementAboutGroup:group]; - }); - - dispatch_group_notify(group,dispatch_get_main_queue(), ^{ - self.isDemandAtoloudspeaker = NO; - self.userInfo = userInfo; - [self examineHaveGiveDiamondsPreconditionion]; - userInfo.idAtt = [self.intelligenceRegard cretowardsMtowardserialIdSequencigntowardsionIdiosyncracy:userInfo]; - [self.intelligenceRegard cretowardsMtowardserialProttypeIdiosyncracy:userInfo complete:^(NSMutableAttributedString *textAtt) { - userInfo.levelAtt = textAtt; - self.intelligenceRegard.userInfo = userInfo; - }]; - [self.tableView reloadData]; - }); - } -} - -- (void)acquireConsumerPocketbookAbstract:(RamparatetAbstractMatrix *)balanceInfo WithGroup:(nonnull dispatch_group_t)group{ - self.intelligenceRegard.wentiretyetAbstract = balanceInfo; - dispatch_group_leave(group); -} -- (void)acquireConsumerPocketbookAbstractFlunkAboutGroup:(dispatch_group_t)group{ - dispatch_group_leave(group); -} - -- (void)dwellEarnCollectiveSpecificAbstractAccomplishment:(CollectiveSpecificAbstractMatrix *)collectiveAbstract WithGroup:(nonnull dispatch_group_t)group{ - self.collectiveAbstract = collectiveAbstract; - dispatch_group_leave(group); -} -- (void)dwellEarnCollectiveSpecificAbstractflunkAboutGroup:(dispatch_group_t)group{ - dispatch_group_leave(group); -} -#pragma mark - FBCManeIntelligenceItemTabulationViweElementRepresendtation -- (void)yUMIManeIntelligenceProvisionTarbsultowardsionViweElement:(YUMIManeIntelligenceProvisionTabulationRegardElement *)cell didSelectItem:(YUMIManeFuntionProvisionMatrix *)item { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventusercenter_function_click eventAttributes:@{@"functionName" : item.centerName}]; - [self pushRegardGovernancerAboutGenre:item.skipType functionItem:item]; -} - -#pragma mark - FBCResidenceBannerTabulationViweElementRepresendtation -- (void)fBCHoutilizeOriflammeTarbsultowardsionViweElement:(YUMIResidenceOriflammeTabulationRegardElement *)view didClickBanner:(ResidenceOriflammeAbstractMatrix *)info { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventusercenter_banner_click eventAttributes:@{@"bannerId" : info.bannerId}]; - switch (info.skipType) { - case HomeBannerAbstractSkipGenre_Room: - { - if (info.skipUri.length > 0) { - [YUMIChamberRegardGovernancer unfoildChamber:info.skipUri viewController:self]; - } - } - break; - case HomeBannerAbstractSkipGenre_Web: - { - YUMITissueRegardGovernancer *vc = [[YUMITissueRegardGovernancer alloc]init]; - vc.url = info.skipUri; - [self.navigationController pushViewController:vc animated:YES]; - } - break; - default: - break; - } -} - - -#pragma mark - NSNotification -- (void)onVactowardsionerUnLireComputtowardsionRefurbish:(NSNotification *)noti { - YUMIManeVacationerUnReadMatrix *model = (YUMIManeVacationerUnReadMatrix *)noti.object; - self.intelligenceRegard.vacationerUnLireComputation = model.visitNum; -} -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.showsVerticalScrollIndicator = NO; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;; - [_tableView registerClass:[YUMIManeTheUnionElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeTheUnionElement class])]; - [_tableView registerClass:[YUMIManeFeaturealConcentrateElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeFeaturealConcentrateElement class])]; - [_tableView registerClass:[YUMIManeStatementElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeStatementElement class])]; - _tableView.backgroundColor = [UIColor clearColor]; - } - return _tableView; -} - -- (YUMIManeIntelligenceRegard *)intelligenceRegard { - if (!_intelligenceRegard) { - CGFloat height = (KScreenWidth - 30 - 13) * 0.5 * 60 / 166; - _intelligenceRegard = [[YUMIManeIntelligenceRegard alloc] initWithFrame:CGRectMake(0, 0,KScreenWidth , 146 + height + kStatusBarHeight)]; - _intelligenceRegard.delegate = self; - } - return _intelligenceRegard; -} - -- (UIView *)backgroundIndicateRegard { - if (!_backgroundIndicateRegard) { - _backgroundIndicateRegard = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yumi_center_head_background"]]; - _backgroundIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _backgroundIndicateRegard; -} - -- (NSMutableArray *)functionGarment { - if (!_functionGarment) { - _functionGarment = [NSMutableArray array]; - } - return _functionGarment; -} - -- (NSMutableArray *)oriflammeGarment { - if (!_oriflammeGarment) { - _oriflammeGarment = [NSMutableArray array]; - } - return _oriflammeGarment; -} - --(ConsumerAbstractMatrix *)userInfo{ - if(!_userInfo){ - _userInfo = [ConsumerAbstractMatrix new]; - _userInfo.uid = [[AccountAbstractStorage instance].acquireCid integerValue]; - } - return _userInfo; -} -@end diff --git a/YuMi/Modules/YMMine/View/YUMIManeTerminalImpressionRegardGovernancer.h b/YuMi/Modules/YMMine/View/YUMIManeTerminalImpressionRegardGovernancer.h deleted file mode 100644 index 62aaf5e4..00000000 --- a/YuMi/Modules/YMMine/View/YUMIManeTerminalImpressionRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineFootPrintViewController.h -// YUMI -// -// Created by YUMI on 2022/7/26. -// 足迹/进房记录 - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeTerminalImpressionRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/YUMIManeTerminalImpressionRegardGovernancer.m b/YuMi/Modules/YMMine/View/YUMIManeTerminalImpressionRegardGovernancer.m deleted file mode 100644 index df3ba0c6..00000000 --- a/YuMi/Modules/YMMine/View/YUMIManeTerminalImpressionRegardGovernancer.m +++ /dev/null @@ -1,235 +0,0 @@ -// -// YMMineFootPrintViewController.m -// YUMI -// -// Created by YUMI on 2022/7/26. -// - -#import "YUMIManeTerminalImpressionRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "YUMIManeTerminalImpressionMatrix.h" -#import "YUMIManeTerminalImpressionTabulationRegardElement.h" -#import "YUMIManeVacationerDispossessTabulationRegardElement.h" -#import "YUMITerminalImpressionNevRegard.h" -#import "YUMIManeTerminalImpressionExternalizer.h" -#import "FBCManeFootPrintCeremony.h" -#import "YUMIChamberRegardGovernancer.h" - -@interface YUMIManeTerminalImpressionRegardGovernancer() - -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,assign) int page; -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; -@property (nonatomic, strong) YUMITerminalImpressionNevRegard *nevRegard; - -@end - -@implementation YUMIManeTerminalImpressionRegardGovernancer - -- (YUMIManeTerminalImpressionExternalizer *)producePresimport { - return [[YUMIManeTerminalImpressionExternalizer alloc] init]; -} - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initIntelligencerGrantedTerminalerRrfresh]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - 下拉刷新 -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - - [self intelligenceerRenovtowardseh]; -} - -#pragma mark - 刷新的fangfa -- (void)intelligenceerRenovtowardseh { - self.page = 1; - [self.presimport acquireTerminalImpressionSttowardsementAboutPeriod:self.page pageSize:20 state:0]; -} - -- (void)footerRenovtowardseh { - if (self.hasNoFurthaerAtoloudspeaker) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_MineFootPrintViewController0")]; - return; - } - self.page++; - [self.presimport acquireTerminalImpressionSttowardsementAboutPeriod:self.page pageSize:20 state:1]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.nevRegard]; - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.nevRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.height.mas_equalTo(kNavigationHeight); - }]; - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.top.mas_equalTo(self.nevRegard.mas_bottom); - }]; -} - -#pragma mark - FBCManeFootPrintCeremony -- (void)acquireTerminalImpressionSttowardsementAccomplishment:(NSArray *)array state:(int)state { - if (state == 0) { - [self.datasource removeAllObjects]; - [self.tableView.mj_header endRefreshing]; - } - [self.tableView.mj_footer endRefreshing]; - if (array.count > 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - [self.datasource addObjectsFromArray:array]; - } else { - self.hasNoFurthaerAtoloudspeaker = YES; - [self.tableView.mj_footer endRefreshingWithNoMoreData]; - } - [self.tableView reloadData]; -} - -- (void)acquireTerminalImpressionSttowardsementFlunk:(int)state { - if (state == 0) { - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } -} - -- (void)sanitaryTerminalImpressionAccomplishment { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_MineFootPrintViewController1")]; - [self intelligenceerRenovtowardseh]; -} - -- (void)assembleChamberAccomplishment { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_MineFootPrintViewController2")]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMIManeTerminalImpressionTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeTerminalImpressionTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeTerminalImpressionTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeTerminalImpressionTabulationRegardElement class])]; - } - cell.item = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; - } - - YUMIManeVacationerDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeVacationerDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeVacationerDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeVacationerDispossessTabulationRegardElement class])]; - } - cell.emptyTitle = YMLocalizedString(@"YUMI_MineFootPrintViewController3"); - return cell; -} - -- (UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath API_AVAILABLE(ios(11.0)){ - [tableView setEditing:NO animated:YES]; - __weak typeof(self) weakSelf = self; - UIContextualAction *deleteAction = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleDestructive title:YMLocalizedString(@"YUMI_MineFootPrintViewController4") handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) { - YUMIManeTerminalImpressionMatrix *item = [weakSelf.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - [weakSelf.presimport sanitaryTerminalImpression:item.roomUid]; - completionHandler(true); - }]; - UIContextualAction *collectAction = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleNormal title:YMLocalizedString(@"YUMI_MineFootPrintViewController5") handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) { - YUMIManeTerminalImpressionMatrix *item = [weakSelf.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - [weakSelf.presimport assembleChamberAboutChamberCid:item.roomUid]; - completionHandler(true); - }]; - deleteAction.backgroundColor = [DJDKMIMOMColor essayTertiusPrettify]; - collectAction.backgroundColor = UIColorFromRGB(0xFFA027); - UISwipeActionsConfiguration *actions = [UISwipeActionsConfiguration configurationWithActions:@[collectAction, deleteAction]]; - actions.performsFirstActionWithFullSwipe = NO; - return actions; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count == 0) { - return 85; - } else { - return 66; - } -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMIManeTerminalImpressionMatrix *model = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (model.roomUid.integerValue > 0) { - [YUMIChamberRegardGovernancer unfoildChamber:model.roomUid viewController:self]; - } - } -} - -#pragma mark - FBCFootPrintNevRegardRepresendtation -- (void)yUMITerminalImpressionNevRegard:(YUMITerminalImpressionNevRegard *)view didClickBackButton:(UIButton *)sender { - [self.navigationController popViewControllerAnimated:YES]; -} - -- (void)yUMITerminalImpressionNevRegard:(YUMITerminalImpressionNevRegard *)view didClickClearButton:(UIButton *)sender { - [self.presimport sanitaryTerminalImpression:nil]; -} - -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - _tableView.rowHeight = 65; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIManeVacationerDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeVacationerDispossessTabulationRegardElement class])]; - [_tableView registerClass:[YUMIManeTerminalImpressionTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeTerminalImpressionTabulationRegardElement class])]; - } - return _tableView; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - -- (YUMITerminalImpressionNevRegard *)nevRegard { - if (!_nevRegard) { - _nevRegard = [[YUMITerminalImpressionNevRegard alloc] init]; - _nevRegard.delegate = self; - } - return _nevRegard; -} - -@end diff --git a/YuMi/Modules/YMMine/View/YUMIManeVacationerRegardGovernancer.h b/YuMi/Modules/YMMine/View/YUMIManeVacationerRegardGovernancer.h deleted file mode 100644 index e8ac6d07..00000000 --- a/YuMi/Modules/YMMine/View/YUMIManeVacationerRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMineVisitorViewController.h -// YUMI -// -// Created by YUMI on 2022/1/26. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIManeVacationerRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/YUMIManeVacationerRegardGovernancer.m b/YuMi/Modules/YMMine/View/YUMIManeVacationerRegardGovernancer.m deleted file mode 100644 index b6941a68..00000000 --- a/YuMi/Modules/YMMine/View/YUMIManeVacationerRegardGovernancer.m +++ /dev/null @@ -1,197 +0,0 @@ -// -// YMMineVisitorViewController.m -// YUMI -// -// Created by YUMI on 2022/1/26. -// - -#import "YUMIManeVacationerRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "NSArray+Safe.h" -#import "ClientDisposition.h" -#import "YUMIManeVacationerProvisionMatrix.h" -#import "YUMIManeVacationerTabulationRegardElement.h" -#import "YUMIManeVacationerDispossessTabulationRegardElement.h" -#import "YUMIManeVacationerExternalizer.h" -#import "FBCManeVisitorCeremony.h" -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -#import "YUMIManeSimpleConsumerAbstractRegardGovernancer.h" -#import "InterlocutionRegardGovernancer.h" - -@interface YUMIManeVacationerRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,assign) int page; -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; -@end - -@implementation YUMIManeVacationerRegardGovernancer - -- (YUMIManeVacationerExternalizer *)producePresimport { - return [[YUMIManeVacationerExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initIntelligencerGrantedTerminalerRrfresh]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - 下拉刷新 -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - - [self intelligenceerRenovtowardseh]; -} - -#pragma mark - 刷新的fangfa -- (void)intelligenceerRenovtowardseh { - self.page = 1; - [self.presimport acquireVactowardsionerSttowardsement:self.page pageSize:20 state:0]; -} - -- (void)footerRenovtowardseh { - if (self.hasNoFurthaerAtoloudspeaker) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Mine_Visitor_View_Controller_0")]; - return; - } - self.page++; - [self.presimport acquireVactowardsionerSttowardsement:self.page pageSize:20 state:1]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Mine_Visitor_View_Controller_1"); - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -#pragma mark - FBCManeVisitorCeremony -- (void)dwellEarnVactowardsionerSttowardsementAccomplishment:(NSArray *)array state:(int)state { - if (state == 0) { - [self.datasource removeAllObjects]; - [self.tableView.mj_header endRefreshing]; - } - [self.tableView.mj_footer endRefreshing]; - if (array.count > 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - [self.datasource addObjectsFromArray:array]; - } else { - self.hasNoFurthaerAtoloudspeaker = YES; - [self.tableView.mj_footer endRefreshingWithNoMoreData]; - } - [self.tableView reloadData]; -} - -- (void)acquireVactowardsionerSttowardsementFlunk:(int)state { - if (state == 0) { - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMIManeVacationerTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeVacationerTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeVacationerTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeVacationerTabulationRegardElement class])]; - } - cell.isThresholdProvision = indexPath.row == 0; - cell.isRecentProvision = indexPath.row == self.datasource.count - 1; - cell.delegate = self; - cell.item = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; - } - - YUMIManeVacationerDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeVacationerDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeVacationerDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeVacationerDispossessTabulationRegardElement class])]; - } - cell.emptyTitle = YMLocalizedString(@"YUMI_Mine_Visitor_View_Controller_2"); - return cell; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (indexPath.row == 0) { - return 85; - } else { - return 70; - } -} - -#pragma mark - TTVisitorRecordCellDelegate -- (void)onIntelligenceportraitTicktack:(YUMIManeVacationerTabulationRegardElement *)cell { - NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; - YUMIManeVacationerProvisionMatrix *item = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMIManeConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = item.uid; - [self.navigationController pushViewController:userInfoVC animated:YES]; - }else{ - YUMIManeSimpleConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeSimpleConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = item.uid; - [self.navigationController pushViewController:userInfoVC animated:YES]; - } -} - -- (void)onChinwagTicktack:(YUMIManeVacationerTabulationRegardElement *)cell { - NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; - YUMIManeVacationerProvisionMatrix *item = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - NSString * sessionId = [NSString stringWithFormat:@"%lld",item.uid]; - NIMSession * session = [NIMSession session:sessionId type:NIMSessionTypeP2P]; - InterlocutionRegardGovernancer * sessionVC = [[InterlocutionRegardGovernancer alloc] initWithSession:session]; - [self.navigationController pushViewController:sessionVC animated:YES]; -} - -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - _tableView.rowHeight = 65; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIManeVacationerDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeVacationerDispossessTabulationRegardElement class])]; - [_tableView registerClass:[YUMIManeVacationerTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeVacationerTabulationRegardElement class])]; - } - return _tableView; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - -@end diff --git a/YuMi/Modules/YMMine/View/YUMIPermissionsRegardGovernancer.h b/YuMi/Modules/YMMine/View/YUMIPermissionsRegardGovernancer.h deleted file mode 100644 index b283bff1..00000000 --- a/YuMi/Modules/YMMine/View/YUMIPermissionsRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMPermissionsViewController.h -// YUMI -// -// Created by zu on 2021/12/28. -// - -#import "BaseRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIPermissionsRegardGovernancer : BaseRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/YUMIPermissionsRegardGovernancer.m b/YuMi/Modules/YMMine/View/YUMIPermissionsRegardGovernancer.m deleted file mode 100644 index f796784e..00000000 --- a/YuMi/Modules/YMMine/View/YUMIPermissionsRegardGovernancer.m +++ /dev/null @@ -1,293 +0,0 @@ -// -// YMPermissionsViewController.m -// YUMI -// -// Created by zu on 2021/12/28. -// - -#import "YUMIPermissionsRegardGovernancer.h" -#import -#import -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "NSArray+Safe.h" - -@interface YUMIPermissionElement : UITableViewCell - -@property (nonatomic, strong) UIImageView * icon; -@property (nonatomic, strong) UILabel * name; -@property (nonatomic, strong) UILabel * tip; - -@end - -@implementation YUMIPermissionElement - -- (instancetype)init { - if (self == [super init]) { - self.selectionStyle = UITableViewCellSelectionStyleNone; - self.backgroundColor = UIColor.clearColor; - [self.contentView addSubview:self.icon]; - [self.contentView addSubview:self.name]; - [self.contentView addSubview:self.tip]; - self.contentView.backgroundColor = DJDKMIMOMColor.aplictowardsionElementEncouragegroundPrettify; - self.contentView.layer.masksToBounds = YES; - self.contentView.layer.cornerRadius = 8; - [self.icon mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.contentView); - make.left.mas_equalTo(self.contentView).offset(15); - }]; - [self.name mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.icon.mas_right).offset(8); - make.top.mas_equalTo(self.contentView).offset(16); - }]; - [self.tip mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.icon.mas_right).offset(8); - make.bottom.mas_equalTo(self.contentView).offset(-16); - }]; - } - return self; -} - -- (UIImageView *)icon { - if (!_icon) { - _icon = [[UIImageView alloc] init]; - } - return _icon; -} - -- (UILabel *)name { - if (!_name) { - _name = [[UILabel alloc] init]; - _name.textColor = DJDKMIMOMColor.mainEssayPrettify; - _name.font = [UIFont systemFontOfSize:14]; - } - return _name; -} - -- (UILabel *)tip { - if (!_tip) { - _tip = [[UILabel alloc] init]; - _tip.textColor = DJDKMIMOMColor.instantEssayPrettify; - _tip.font = [UIFont systemFontOfSize:13]; - } - return _tip; -} - -@end - -@interface YUMIPermissionsRegardGovernancer () - -@property (nonatomic,strong) UITableView * tableView; - -@property (nonatomic, strong) NSMutableArray * permissionFigures; -@property (nonatomic, strong) NSMutableArray * permissionSalutation; -@property (nonatomic, strong) NSMutableArray * permissionPrompts; - -@property (nonatomic, strong) UIView * empty; -@property (nonatomic, strong) UIImageView * dispossessIndicate; -@property (nonatomic, strong) UILabel * dispossessPrompt; - -@property (nonatomic, strong) UIView * footer; -@property (nonatomic, strong) UILabel * footerPrompt; -@property (nonatomic, strong) UIButton * gotoInstanlling; - -@end - -@implementation YUMIPermissionsRegardGovernancer - -- (void)viewDidLoad { - [super viewDidLoad]; - self.title = YMLocalizedString(@"YUMI_Permissions_View_Controller_0"); - [self.empty addSubview:self.dispossessIndicate]; - [self.empty addSubview:self.dispossessPrompt]; - [self.view addSubview:self.tableView]; - [self.footer addSubview:self.footerPrompt]; - [self.footer addSubview:self.gotoInstanlling]; - [self.view addSubview:self.footer]; -} - -- (void)viewDidLayoutSubviews { - [super viewDidLayoutSubviews]; - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.top.right.bottom.mas_equalTo(self.view).insets(UIEdgeInsetsMake(16, 16, 16, 16)); - }]; - [self.dispossessIndicate mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.empty); - make.top.mas_equalTo(self.empty).offset(200); - make.size.mas_equalTo(CGSizeMake(100, 100)); - }]; - [self.dispossessPrompt mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.empty); - make.top.mas_equalTo(self.dispossessIndicate.mas_bottom).offset(16); - }]; - [self.footer mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.view).offset(-kSafeAreaBottomHeight); - make.height.mas_equalTo(100); - }]; - [self.footerPrompt mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.footer); - make.top.mas_equalTo(self.footer).offset(24); - }]; - [self.gotoInstanlling mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.footer); - make.top.mas_equalTo(self.footerPrompt.mas_bottom).offset(40); - }]; -} - -- (void)viewWillAppear:(BOOL)animated { - PHAuthorizationStatus phStatus = [PHPhotoLibrary authorizationStatus]; - if (phStatus == PHAuthorizationStatusAuthorized) { - [self.permissionSalutation addObject:YMLocalizedString(@"YUMI_Permissions_View_Controller_1")]; - [self.permissionPrompts addObject:YMLocalizedString(@"YUMI_Permissions_View_Controller_2")]; - [self.permissionFigures addObject:@"mine_setting_permission_album"]; - } - - AVAuthorizationStatus microPhoneStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio]; - if (microPhoneStatus == AVAuthorizationStatusAuthorized) { - [self.permissionSalutation addObject:YMLocalizedString(@"YUMI_Permissions_View_Controller_3")]; - [self.permissionPrompts addObject:YMLocalizedString(@"YUMI_Permissions_View_Controller_4")]; - [self.permissionFigures addObject:@"mine_setting_permission_voice"]; - } - - AVAuthorizationStatus cameraStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo]; - if (cameraStatus == AVAuthorizationStatusAuthorized) { - [self.permissionSalutation addObject:YMLocalizedString(@"YUMI_Permissions_View_Controller_5")]; - [self.permissionPrompts addObject:YMLocalizedString(@"YUMI_Permissions_View_Controller_6")]; - [self.permissionFigures addObject:@"mine_setting_permission_camera"]; - } -} - -- (void)passtoInstanllingTicktack:(UIButton *)sender { - NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; - if ([[UIApplication sharedApplication] canOpenURL:url]) { - [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil]; - } -} - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - tableView.backgroundView = self.permissionSalutation.count == 0 ? self.empty : nil; - return self.permissionSalutation.count; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { - if (section == 0) { - return 0.001f; - } - return 16.f; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 70.f; -} - --(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { - UIView *view = [[UIView alloc] init]; - view.backgroundColor = [UIColor clearColor]; - return view; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - NSInteger section = indexPath.section; - YUMIPermissionElement * cell = [[YUMIPermissionElement alloc] init]; - cell.icon.image = [UIImage imageNamed:[self.permissionFigures secureGroalTowardsIndictowardsrix1:section]]; - cell.name.text = [self.permissionSalutation secureGroalTowardsIndictowardsrix1:section]; - cell.tip.text = [self.permissionPrompts secureGroalTowardsIndictowardsrix1:section]; - return cell; -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.showsVerticalScrollIndicator = NO; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - [_tableView registerClass:[YUMIPermissionElement class] forCellReuseIdentifier:NSStringFromClass([YUMIPermissionElement class])]; - } - return _tableView; -} - -- (NSMutableArray *)permissionFigures { - if (!_permissionFigures) { - _permissionFigures = [[NSMutableArray alloc] init]; - } - return _permissionFigures; -} - -- (NSMutableArray *)permissionSalutation { - if (!_permissionSalutation) { - _permissionSalutation = [[NSMutableArray alloc] init]; - } - return _permissionSalutation; -} - -- (NSMutableArray *)permissionPrompts { - if (!_permissionPrompts) { - _permissionPrompts = [[NSMutableArray alloc] init]; - } - return _permissionPrompts; -} - -- (UIView *)empty { - if (!_empty) { - _empty = [[UIView alloc] init]; - } - return _empty; -} - -- (UIImageView *)dispossessIndicate { - if (!_dispossessIndicate) { - _dispossessIndicate = [[UIImageView alloc] init]; - _dispossessIndicate.contentMode = UIViewContentModeScaleAspectFit; - _dispossessIndicate.image = [UIImage imageNamed:@"yumi_same_empty"]; - } - return _dispossessIndicate; -} - -- (UILabel *)dispossessPrompt { - if (!_dispossessPrompt) { - _dispossessPrompt = [[UILabel alloc] init]; - _dispossessPrompt.textColor = DJDKMIMOMColor.instantEssayPrettify; - _dispossessPrompt.font = [UIFont systemFontOfSize:12]; - _dispossessPrompt.text = YMLocalizedString(@"YUMI_Permissions_View_Controller_7"); - } - return _dispossessPrompt; -} - -- (UIView *)footer { - if (!_footer) { - _footer = [[UIView alloc] init]; - } - return _footer; -} - -- (UILabel *)footerPrompt { - if (!_footerPrompt) { - _footerPrompt = [[UILabel alloc] init]; - _footerPrompt.textColor = DJDKMIMOMColor.mainEssayPrettify; - _footerPrompt.font = [UIFont systemFontOfSize:12]; - _footerPrompt.text = @"—— 仅展示能查询到的已授权系统权限 ——"; - } - return _footerPrompt; -} - -- (UIButton *)gotoInstanlling { - if (!_gotoInstanlling) { - _gotoInstanlling = [UIButton buttonWithType:UIButtonTypeCustom]; - [_gotoInstanlling setTitle:@"前往系统设置>" forState:UIControlStateNormal]; - [_gotoInstanlling setTitleColor:DJDKMIMOMColor.aplictowardsionMainPrettify forState:UIControlStateNormal]; - _gotoInstanlling.titleLabel.font = [UIFont systemFontOfSize:14]; - _gotoInstanlling.titleLabel.adjustsFontSizeToFitWidth = YES; - [_gotoInstanlling addTarget:self action:@selector(passtoInstanllingTicktack:) forControlEvents:UIControlEventTouchUpInside]; - } - return _gotoInstanlling; -} - -@end diff --git a/YuMi/Modules/YMMine/View/YUMIPrivacyRegardGovernancer.h b/YuMi/Modules/YMMine/View/YUMIPrivacyRegardGovernancer.h deleted file mode 100644 index 6570cb92..00000000 --- a/YuMi/Modules/YMMine/View/YUMIPrivacyRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMPrivacyViewController.h -// YUMI -// -// Created by zu on 2021/12/28. -// - -#import "BaseRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIPrivacyRegardGovernancer : BaseRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/YUMIPrivacyRegardGovernancer.m b/YuMi/Modules/YMMine/View/YUMIPrivacyRegardGovernancer.m deleted file mode 100644 index f0fad191..00000000 --- a/YuMi/Modules/YMMine/View/YUMIPrivacyRegardGovernancer.m +++ /dev/null @@ -1,163 +0,0 @@ -// -// YMPrivacyViewController.m -// YUMI -// -// Created by zu on 2021/12/28. -// - -#import "YUMIPrivacyRegardGovernancer.h" -#import -#import "YUMIManeInstanllingTabulationRegardElement.h" -#import "YUMIManeInstanllingProvisionMatrix.h" -#import "YUMITissueRegardGovernancer.h" -#import "YUMIPermissionsRegardGovernancer.h" -#import "YUMIHtmlUrl.h" -#import "NSArray+Safe.h" - -@interface YUMIPrivacyRegardGovernancer () - -@property (nonatomic, strong) UITableView * tableView; - -@property (nonatomic, strong) NSArray * datasource; - -@end - -@implementation YUMIPrivacyRegardGovernancer - -- (void)viewDidLoad { - [super viewDidLoad]; - self.title = YMLocalizedString(@"YUMI_Privacy_View_Controller_0"); - [self.view addSubview:self.tableView]; - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.top.mas_equalTo(0); - }]; -} - -- (void)pushTissueRegardWIthWeebsite:(NSString *)url { - YUMITissueRegardGovernancer * webVewC = [[YUMITissueRegardGovernancer alloc] init]; - webVewC.url = url; - [self.navigationController pushViewController:webVewC animated:YES]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 45; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - YUMIManeInstanllingTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeInstanllingTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIManeInstanllingTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIManeInstanllingTabulationRegardElement class])]; - } - - cell.itemMatrix = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - switch (indexPath.row) { - case 0: - { - YUMIPermissionsRegardGovernancer * pvc = [[YUMIPermissionsRegardGovernancer alloc] init]; - [self.navigationController pushViewController:pvc animated:YES]; - } - break; - case 1: - [self pushTissueRegardWIthWeebsite:URLWithType(kPrivacyURL)]; - break; - case 2: - [self pushTissueRegardWIthWeebsite:URLWithType(kPrivacySDKURL)]; - break; - case 3: - [self pushTissueRegardWIthWeebsite:URLWithType(kPrivacyPersonalURL)]; - break; - case 4: - [self pushTissueRegardWIthWeebsite:URLWithType(kPrivacyDeviceURL)]; - break; - case 5: - [self pushTissueRegardWIthWeebsite:URLWithType(kUserRechargeAgrURL)]; - break; - case 6: - [self pushTissueRegardWIthWeebsite:URLWithType(kUserRegiServiceAgrURL)]; - break; - case 7: - [self pushTissueRegardWIthWeebsite:URLWithType(kLiveServiceAgrURL)]; - break; - case 8: - [self pushTissueRegardWIthWeebsite:URLWithType(kCommunitySpecURL)]; - break; - case 9: - [self pushTissueRegardWIthWeebsite:URLWithType(kAccountlogoutAgrURL)]; - break; - default: - break; - } -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.showsVerticalScrollIndicator = NO; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - [_tableView registerClass:[YUMIManeInstanllingTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeInstanllingTabulationRegardElement class])]; - } - return _tableView; -} - -- (NSArray *)datasource { - if (!_datasource) { - YUMIManeInstanllingProvisionMatrix * sysPermission = [[YUMIManeInstanllingProvisionMatrix alloc] init]; - sysPermission.title = YMLocalizedString(@"YUMI_Privacy_View_Controller_1"); - sysPermission.subTitle = @""; - - YUMIManeInstanllingProvisionMatrix * privacy = [[YUMIManeInstanllingProvisionMatrix alloc] init]; - privacy.title = YMLocalizedString(@"YUMI_Privacy_View_Controller_2"); - privacy.subTitle = @""; - - YUMIManeInstanllingProvisionMatrix * sdk = [[YUMIManeInstanllingProvisionMatrix alloc] init]; - sdk.title = YMLocalizedString(@"YUMI_Privacy_View_Controller_3"); - sdk.subTitle = @""; - - YUMIManeInstanllingProvisionMatrix * personalInfo = [[YUMIManeInstanllingProvisionMatrix alloc] init]; - personalInfo.title = YMLocalizedString(@"YUMI_Privacy_View_Controller_4"); - personalInfo.subTitle = @""; - - YUMIManeInstanllingProvisionMatrix * permissionList = [[YUMIManeInstanllingProvisionMatrix alloc] init]; - permissionList.title = YMLocalizedString(@"YUMI_Privacy_View_Controller_5"); - permissionList.subTitle = @""; - - YUMIManeInstanllingProvisionMatrix * userChargeProtocol = [[YUMIManeInstanllingProvisionMatrix alloc] init]; - userChargeProtocol.title = YMLocalizedString(@"YUMI_Privacy_View_Controller_6"); - userChargeProtocol.subTitle = @""; - - YUMIManeInstanllingProvisionMatrix *userRegistProtocol = [[YUMIManeInstanllingProvisionMatrix alloc] init]; - userRegistProtocol.title = YMLocalizedString(@"YUMI_Privacy_View_Controller_7"); - userRegistProtocol.subTitle = @""; - - YUMIManeInstanllingProvisionMatrix * liveServiceProtocol = [[YUMIManeInstanllingProvisionMatrix alloc] init]; - liveServiceProtocol.title = YMLocalizedString(@"YUMI_Privacy_View_Controller_8"); - liveServiceProtocol.subTitle = @""; - - YUMIManeInstanllingProvisionMatrix * communitySpec = [[YUMIManeInstanllingProvisionMatrix alloc] init]; - communitySpec.title = YMLocalizedString(@"YUMI_Privacy_View_Controller_9"); - communitySpec.subTitle = @""; - - YUMIManeInstanllingProvisionMatrix * accountLogout = [[YUMIManeInstanllingProvisionMatrix alloc] init]; - accountLogout.title = YMLocalizedString(@"YUMI_Privacy_View_Controller_10"); - accountLogout.subTitle = @""; - - _datasource = @[sysPermission, privacy, sdk, personalInfo, permissionList, userChargeProtocol, userRegistProtocol, liveServiceProtocol, communitySpec,accountLogout]; - } - return _datasource; -} - -@end diff --git a/YuMi/Modules/YMMine/View/YUMISimpleManeIntelligencerRegard.h b/YuMi/Modules/YMMine/View/YUMISimpleManeIntelligencerRegard.h deleted file mode 100644 index f136ca6f..00000000 --- a/YuMi/Modules/YMMine/View/YUMISimpleManeIntelligencerRegard.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// YMSimpleMineHeaderView.h -// YUMI -// -// Created by XY on 2023/2/20. -// - -#import -#import "YUMIManeProvisionMatrix.h" - -@class ConsumerAbstractMatrix; - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCSimpleManeIntelligencerRegardRepresendtation - -- (void)intelligenceerRegardBtutonPerformanceGenre:(YUMIManeProvisionGenre)itemType; - -@end - -@interface YUMISimpleManeIntelligencerRegard : UIView -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; - -@property (nonatomic, weak) id delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/YUMISimpleManeIntelligencerRegard.m b/YuMi/Modules/YMMine/View/YUMISimpleManeIntelligencerRegard.m deleted file mode 100644 index 9de4c4a9..00000000 --- a/YuMi/Modules/YMMine/View/YUMISimpleManeIntelligencerRegard.m +++ /dev/null @@ -1,347 +0,0 @@ -// -// YMSimpleMineHeaderView.m -// YUMI -// -// Created by XY on 2023/2/20. -// - -#import "YUMISimpleManeIntelligencerRegard.h" -#import "NetIndicateRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIButton.h" - -#import "ConsumerAbstractMatrix.h" - -@interface YUMISimpleManeIntelligencerRegard() - -@property (nonatomic, strong) NetIndicateRegard *backgroundIndicateRegard; -@property (nonatomic, strong) UIVisualEffectView *impressionRegard; -@property (nonatomic, strong) UILabel *monicerconstituteSequencignation; -@property (nonatomic, strong) UILabel *idSequencignation; -@property (nonatomic, strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic, strong) UIStackView *figureHierarchyRegard; -@property (nonatomic, strong) UIButton *considerationBtuton; -@property (nonatomic, strong) UIButton *fanaticsBtuton; -@property (nonatomic, strong) UIButton *vacationerBtuton; -@property (nonatomic, strong) UIButton *browseBtuton; -@property (nonatomic, strong) UIStackView *funcHierarchyRegard; -@property (nonatomic, strong) YUMIButton *wentiretyetBtuton; -@property (nonatomic, strong) YUMIButton *chamberBtuton; -@property (nonatomic, strong) YUMIButton *assembletionBtuton; -@property (nonatomic, strong) YUMIButton *distinctionBtuton; - -@end - -@implementation YUMISimpleManeIntelligencerRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self produceUI]; - } - return self; -} - -- (void)produceUI { - [self addSubview:self.backgroundIndicateRegard]; - [self.backgroundIndicateRegard addSubview:self.impressionRegard]; - [self addSubview:self.monicerconstituteSequencignation]; - [self addSubview:self.idSequencignation]; - [self addSubview:self.intelligenceportraitIndicateRegard]; - [self addSubview:self.figureHierarchyRegard]; - [self.figureHierarchyRegard addArrangedSubview:self.considerationBtuton]; - [self.figureHierarchyRegard addArrangedSubview:self.fanaticsBtuton]; - [self.figureHierarchyRegard addArrangedSubview:self.vacationerBtuton]; - [self.figureHierarchyRegard addArrangedSubview:self.browseBtuton]; - [self addSubview:self.funcHierarchyRegard]; - [self.funcHierarchyRegard addArrangedSubview:self.wentiretyetBtuton]; - [self.funcHierarchyRegard addArrangedSubview:self.chamberBtuton]; - [self.funcHierarchyRegard addArrangedSubview:self.assembletionBtuton]; - [self.funcHierarchyRegard addArrangedSubview:self.distinctionBtuton]; - - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.left.right.mas_equalTo(0); - make.height.mas_equalTo(260); - }]; - [self.impressionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.backgroundIndicateRegard); - }]; - [self.monicerconstituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.intelligenceportraitIndicateRegard).offset(-5); - make.left.mas_equalTo(16); - make.right.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_left).offset(-5); - }]; - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.monicerconstituteSequencignation.mas_bottom).offset(2); - make.left.mas_equalTo(self.monicerconstituteSequencignation); - make.right.mas_equalTo(self.monicerconstituteSequencignation); - }]; - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.backgroundIndicateRegard); - make.right.mas_equalTo(-16); - make.width.height.mas_equalTo(86); - }]; - [self.figureHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(16); - make.right.mas_equalTo(-16); - make.bottom.mas_equalTo(self.funcHierarchyRegard.mas_top).offset(-10); - make.height.mas_equalTo(30); - }]; - [self.funcHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(16); - make.right.mas_equalTo(-16); - make.centerY.mas_equalTo(self.backgroundIndicateRegard.mas_bottom); - make.height.mas_equalTo(70); - }]; - -} - -- (void)setUserInfo:(ConsumerAbstractMatrix *)userInfo { - _userInfo = userInfo; - if (_userInfo) { - self.idSequencignation.text = [NSString stringWithFormat:@"ID:%ld", (long)_userInfo.erbanNo]; - self.monicerconstituteSequencignation.text = _userInfo.nick.length > 0 ? _userInfo.nick : @""; - self.intelligenceportraitIndicateRegard.imageUrl = userInfo.avatar; - self.backgroundIndicateRegard.imageUrl = userInfo.avatar; - - NSString *attent = YMLocalizedString(@"YUMI_Simple_Mine_Header_View_0"); - NSString *attentStr = [NSString stringWithFormat:@"%@%ld",attent,_userInfo.followNum]; - NSMutableAttributedString *attentAttrStr = [[NSMutableAttributedString alloc] initWithString:attentStr]; - [attentAttrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:16 weight:UIFontWeightMedium] range:NSMakeRange(attent.length, attentStr.length-attent.length)]; - [self.considerationBtuton setAttributedTitle:attentAttrStr forState:UIControlStateNormal]; - - NSString *fans = YMLocalizedString(@"YUMI_Simple_Mine_Header_View_1"); - NSString *fansStr = [NSString stringWithFormat:@"%@%ld",fans,_userInfo.fansNum]; - NSMutableAttributedString *fansAttrStr = [[NSMutableAttributedString alloc] initWithString:fansStr]; - [fansAttrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:16 weight:UIFontWeightMedium] range:NSMakeRange(fans.length, fansStr.length-fans.length)]; - [self.fanaticsBtuton setAttributedTitle:fansAttrStr forState:UIControlStateNormal]; - - NSString *visitor = YMLocalizedString(@"YUMI_Simple_Mine_Header_View_2"); - NSString *visitorStr = [NSString stringWithFormat:@"%@%ld",visitor,_userInfo.visitNum]; - NSMutableAttributedString *visitorAttrStr = [[NSMutableAttributedString alloc] initWithString:visitorStr]; - [visitorAttrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:16 weight:UIFontWeightMedium] range:NSMakeRange(visitor.length, visitorStr.length-visitor.length)]; - [self.vacationerBtuton setAttributedTitle:visitorAttrStr forState:UIControlStateNormal]; - - NSString *browse = YMLocalizedString(@"YUMI_Simple_Mine_Header_View_3"); - NSString *browseStr = [NSString stringWithFormat:@"%@%ld",browse,_userInfo.inRoomNum]; - NSMutableAttributedString *browseAttrStr = [[NSMutableAttributedString alloc] initWithString:browseStr]; - [browseAttrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:16 weight:UIFontWeightMedium] range:NSMakeRange(browse.length, browseStr.length-browse.length)]; - [self.browseBtuton setAttributedTitle:browseAttrStr forState:UIControlStateNormal]; - - } -} - -- (void)btnPerformance:(UIButton *)button { - if (self.delegate && [self.delegate respondsToSelector:@selector(intelligenceerRegardBtutonPerformanceGenre:)]) { - YUMIManeProvisionGenre itemType = -INT_MAX; - if (button == self.considerationBtuton) { - itemType = YUMIManeProvisionGenre_Attention_List; - }else if (button == self.fanaticsBtuton) { - itemType = YUMIManeProvisionGenre_Fans_List; - }else if (button == self.vacationerBtuton) { - itemType = YUMIManeProvisionGenre_Visitor; - }else if (button == self.browseBtuton) { - itemType = YUMIManeProvisionGenre_Foot_Print; - }else if (button == self.wentiretyetBtuton) { - itemType = YUMIManeProvisionGenre_Account; - }else if (button == self.chamberBtuton) { - itemType = YUMIManeProvisionGenre_My_Room; - }else if (button == self.assembletionBtuton) { - itemType = YUMIManeProvisionGenre_Collect_Room; - }else if (button == self.distinctionBtuton) { - itemType = -1; - } - [self.delegate intelligenceerRegardBtutonPerformanceGenre:itemType]; - } -} - -- (void)betowardsIntelligenceportraitIndictowardseRegard { - if (self.delegate && [self.delegate respondsToSelector:@selector(intelligenceerRegardBtutonPerformanceGenre:)]) { - [self.delegate intelligenceerRegardBtutonPerformanceGenre:YUMIManeProvisionGenre_Personinfo]; - } -} - -#pragma mark - 懒加载 - -- (NetIndicateRegard *)backgroundIndicateRegard { - if (!_backgroundIndicateRegard) { - _backgroundIndicateRegard = [[NetIndicateRegard alloc] init]; - _backgroundIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _backgroundIndicateRegard.clipsToBounds = YES; - } - return _backgroundIndicateRegard; -} - -- (UIVisualEffectView *)impressionRegard { - if (!_impressionRegard) { - UIBlurEffect *blur = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; - _impressionRegard = [[UIVisualEffectView alloc] initWithEffect:blur]; - _impressionRegard.alpha = 0.9; - } - return _impressionRegard; -} - -- (UILabel *)monicerconstituteSequencignation { - if (!_monicerconstituteSequencignation) { - _monicerconstituteSequencignation = [[UILabel alloc] init]; - _monicerconstituteSequencignation.textColor = UIColor.whiteColor; - _monicerconstituteSequencignation.font = [UIFont systemFontOfSize:20 weight:UIFontWeightMedium]; - } - return _monicerconstituteSequencignation; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.textColor = [UIColor.whiteColor colorWithAlphaComponent:0.4]; - _idSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; - } - return _idSequencignation; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.userInteractionEnabled = YES; - _intelligenceportraitIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _intelligenceportraitIndicateRegard.layer.borderWidth = 2; - _intelligenceportraitIndicateRegard.layer.borderColor = [UIColor.whiteColor colorWithAlphaComponent:0.4].CGColor; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 86/2; - _intelligenceportraitIndicateRegard.clipsToBounds = YES; - - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsIntelligenceportraitIndictowardseRegard)]; - [_intelligenceportraitIndicateRegard addGestureRecognizer:tap]; - } - return _intelligenceportraitIndicateRegard; -} - -- (UIStackView *)figureHierarchyRegard { - if (!_figureHierarchyRegard) { - _figureHierarchyRegard = [[UIStackView alloc] init]; - _figureHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _figureHierarchyRegard.distribution = UIStackViewDistributionFillEqually; - _figureHierarchyRegard.alignment = UIStackViewAlignmentFill; - _figureHierarchyRegard.spacing = 2; - } - return _figureHierarchyRegard; -} - -- (UIButton *)considerationBtuton { - if (!_considerationBtuton) { - _considerationBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_considerationBtuton setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; - _considerationBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - _considerationBtuton.hidden = YES; - [_considerationBtuton addTarget:self action:@selector(btnPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _considerationBtuton; -} - -- (UIButton *)fanaticsBtuton { - if (!_fanaticsBtuton) { - _fanaticsBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_fanaticsBtuton setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; - _fanaticsBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - _fanaticsBtuton.hidden = YES; - [_fanaticsBtuton addTarget:self action:@selector(btnPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _fanaticsBtuton; -} - -- (UIButton *)vacationerBtuton { - if (!_vacationerBtuton) { - _vacationerBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_vacationerBtuton setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; - _vacationerBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - [_vacationerBtuton addTarget:self action:@selector(btnPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _vacationerBtuton; -} - -- (UIButton *)browseBtuton { - if (!_browseBtuton) { - _browseBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_browseBtuton setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; - _browseBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - [_browseBtuton addTarget:self action:@selector(btnPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _browseBtuton; -} - -- (UIStackView *)funcHierarchyRegard { - if (!_funcHierarchyRegard) { - _funcHierarchyRegard = [[UIStackView alloc] init]; - _funcHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _funcHierarchyRegard.distribution = UIStackViewDistributionFillEqually; - _funcHierarchyRegard.alignment = UIStackViewAlignmentFill; - _funcHierarchyRegard.spacing = 2; - _funcHierarchyRegard.backgroundColor = UIColor.whiteColor; - _funcHierarchyRegard.layer.cornerRadius = 20; - _funcHierarchyRegard.clipsToBounds = YES; - } - return _funcHierarchyRegard; -} - -- (YUMIButton *)wentiretyetBtuton { - if (!_wentiretyetBtuton) { - _wentiretyetBtuton = [YUMIButton buttonWithType:UIButtonTypeCustom]; - [_wentiretyetBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateNormal]; - _wentiretyetBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - [_wentiretyetBtuton setTitle:YMLocalizedString(@"YUMI_Simple_Mine_Header_View_4") forState:UIControlStateNormal]; - [_wentiretyetBtuton setImage:[UIImage imageNamed:@"yumi_center_wallet"] forState:UIControlStateNormal]; - [_wentiretyetBtuton addTarget:self action:@selector(btnPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _wentiretyetBtuton.buttonStyle = XPButtonImageTop; - _wentiretyetBtuton.padding = 4; - - } - return _wentiretyetBtuton; -} - -- (YUMIButton *)chamberBtuton { - if (!_chamberBtuton) { - _chamberBtuton = [YUMIButton buttonWithType:UIButtonTypeCustom]; - [_chamberBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateNormal]; - _chamberBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - [_chamberBtuton setTitle:YMLocalizedString(@"YUMI_Simple_Mine_Header_View_5") forState:UIControlStateNormal]; - [_chamberBtuton setImage:[UIImage imageNamed:@"yumi_center_room"] forState:UIControlStateNormal]; - [_chamberBtuton addTarget:self action:@selector(btnPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _chamberBtuton.buttonStyle = XPButtonImageTop; - _chamberBtuton.padding = 4; - } - return _chamberBtuton; -} - -- (YUMIButton *)assembletionBtuton { - if (!_assembletionBtuton) { - _assembletionBtuton = [YUMIButton buttonWithType:UIButtonTypeCustom]; - [_assembletionBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateNormal]; - _assembletionBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - [_assembletionBtuton setTitle:YMLocalizedString(@"YUMI_Simple_Mine_Header_View_6") forState:UIControlStateNormal]; - [_assembletionBtuton setImage:[UIImage imageNamed:@"yumi_center_collection"] forState:UIControlStateNormal]; - [_assembletionBtuton addTarget:self action:@selector(btnPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _assembletionBtuton.buttonStyle = XPButtonImageTop; - _assembletionBtuton.padding = 4; - } - return _assembletionBtuton; -} - -- (YUMIButton *)distinctionBtuton { - if (!_distinctionBtuton) { - _distinctionBtuton = [YUMIButton buttonWithType:UIButtonTypeCustom]; - [_distinctionBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateNormal]; - _distinctionBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - [_distinctionBtuton setTitle:YMLocalizedString(@"YUMI_Simple_Mine_Header_View_7") forState:UIControlStateNormal]; - [_distinctionBtuton setImage:[UIImage imageNamed:@"yumi_center_grade"] forState:UIControlStateNormal]; - [_distinctionBtuton addTarget:self action:@selector(btnPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _distinctionBtuton.buttonStyle = XPButtonImageTop ; - _distinctionBtuton.hidden = YES; - _distinctionBtuton.padding = 4; - } - return _distinctionBtuton; -} - -@end diff --git a/YuMi/Modules/YMMine/View/YUMISimpleManeRegardGovernancer.h b/YuMi/Modules/YMMine/View/YUMISimpleManeRegardGovernancer.h deleted file mode 100644 index b35d9a3e..00000000 --- a/YuMi/Modules/YMMine/View/YUMISimpleManeRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMSimpleMineViewController.h -// YUMI -// -// Created by XY on 2023/2/20. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISimpleManeRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/YUMISimpleManeRegardGovernancer.m b/YuMi/Modules/YMMine/View/YUMISimpleManeRegardGovernancer.m deleted file mode 100644 index c9fe8b33..00000000 --- a/YuMi/Modules/YMMine/View/YUMISimpleManeRegardGovernancer.m +++ /dev/null @@ -1,490 +0,0 @@ -// -// YMSimpleMineViewController.m -// YUMI -// -// Created by XY on 2023/2/20. -// - -#import "YUMISimpleManeRegardGovernancer.h" -#import -#import "MKJPopup.h" -#import "YUMIMacroUitls.h" -#import "YUMIHtmlUrl.h" -#import "UIButton+EnlargeTouchArea.h" -#import "StatsticsticsServingFacilitater.h" -#import "YUMIConstant.h" -#import "Api+Room.h" -#import "Api+RoomSetting.h" -#import "AccountAbstractStorage.h" -#import "ClientDisposition.h" -#import "NSMutableDictionary+Saft.h" -#import "DJDKMIMOMColor.h" -#import "ClientDisposition.h" -#import "YUMIManeProvisionMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "YUMIManeVacationerUnReadMatrix.h" -#import "CollectiveSpecificAbstractMatrix.h" -#import "ResidenceOriflammeAbstractMatrix.h" -#import "YUMIManeFuntionProvisionMatrix.h" -#import "RamparatetAbstractMatrix.h" -#import "FBCManeCeremony.h" -#import "YUMIManeExternalize.h" -#import "YUMIManeIntelligenceProvisionTabulationRegardElement.h" -#import "YUMISimpleManeIntelligencerRegard.h" -#import "YUMIResidenceOriflammeTabulationRegardElement.h" -#import "YUMIManeStrangeConsumerReindictRegard.h" -#import "YUMIManeProvisionTabulationRegardElement.h" -#import "YUMIManeInstanllingRegardGovernancer.h" -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -#import "YUMIManeSimpleConsumerAbstractRegardGovernancer.h" -#import "YUMIManeReindictRegardGovernancer.h" -#import "YUMIIAPReindictRegardGovernancer.h" -#import "YUMITissueRegardGovernancer.h" -#import "YUMIChamberRegardGovernancer.h" -#import "YUMIManePretendUpwardsRegardGovernancer.h" -#import "YUMIPretendUpwardsProcurementRegardGovernancer.h" -#import "YUMIManeFanaticsRegardGovernancer.h" -#import "YUMIManeConsiderationRegardGovernancer.h" -#import "YUMIManeVacationerRegardGovernancer.h" -#import "YUMIManeFanaticsSquadRegardGovernancer.h" -#import "YUMIManeCollectiveRegardGovernancer.h" -#import "YUMIManeUnionRegardGovernancer.h" -#import "YUMIManeTerminalImpressionRegardGovernancer.h" -#import "YUMIManeAssembleChamberStatementRegardGovernancer.h" -#import "YUMIManeFeedbackRegardGovernancer.h" -#import "YUMIManeSimpleConsumerAbstractRegardGovernancer.h" -#import "YUMIIAPReindictRegardGovernancer.h" - -@interface YUMISimpleManeRegardGovernancer () - -@property (nonatomic, strong) UITableView *tableView; -@property (nonatomic, strong) YUMISimpleManeIntelligencerRegard *intelligenceerRegard; - -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@property (nonatomic,strong) CollectiveSpecificAbstractMatrix *collectiveAbstract; -@property (nonatomic,strong) YUMIManeProvisionMatrix *guildProvisionMatrix; -@property (nonatomic, strong) NSMutableArray *oriflammeGarment; - -@property (nonatomic, strong) NSArray *sectionGarment0; -@property (nonatomic, strong) NSArray *sectionGarment1; - -@end - -@implementation YUMISimpleManeRegardGovernancer - -- (YUMIManeExternalize *)producePresimport { - return [[YUMIManeExternalize alloc] init];; -} - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (UIStatusBarStyle)preferredStatusBarStyle { - return UIStatusBarStyleLightContent; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self produceUI]; -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - -} - -- (void)viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; - [self.presimport getUserInfo]; -} - -- (void)produceUI { - self.tableView.tableHeaderView = self.intelligenceerRegard; - [self.view addSubview:self.tableView]; - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -- (void)unfoildMieyChamber { - NSString* roomUid = [NSString stringWithFormat:@"%ld", (long)self.userInfo.uid]; - [YUMIChamberRegardGovernancer unfoildChamber:roomUid viewController:self]; -} - -#pragma mark - FBCSimpleManeIntelligencerRegardRepresendtation - -- (void)intelligenceerRegardBtutonPerformanceGenre:(YUMIManeProvisionGenre)itemType { - switch (itemType) { - case YUMIManeProvisionGenre_Match_Relevance_Account: - - break; - case YUMIManeProvisionGenre_Foot_Print: - { - YUMIManeTerminalImpressionRegardGovernancer *vc = [[YUMIManeTerminalImpressionRegardGovernancer alloc] init]; - [self.navigationController pushViewController:vc animated:YES]; - } - break; - case YUMIManeProvisionGenre_Account: - { - YUMIIAPReindictRegardGovernancer *rechargeVC = [[YUMIIAPReindictRegardGovernancer alloc] init]; - [self.navigationController pushViewController:rechargeVC animated:YES]; - } - break; - case YUMIManeProvisionGenre_Personinfo: - { - - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMIManeConsumerAbstractRegardGovernancer * infoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - infoVC.uid = self.userInfo.uid; - [self.navigationController pushViewController:infoVC animated:YES]; - }else{ - YUMIManeSimpleConsumerAbstractRegardGovernancer * infoVC = [[YUMIManeSimpleConsumerAbstractRegardGovernancer alloc] init]; - infoVC.uid = self.userInfo.uid; - [self.navigationController pushViewController:infoVC animated:YES]; - } - } - break; - case YUMIManeProvisionGenre_My_Room: - { - [self unfoildMieyChamber]; - } - break; - case YUMIManeProvisionGenre_Collect_Room: - { - YUMIManeAssembleChamberStatementRegardGovernancer *collectVC = [[YUMIManeAssembleChamberStatementRegardGovernancer alloc] init]; - [self.navigationController pushViewController:collectVC animated:YES]; - } - break; - case YUMIManeProvisionGenre_My_Dressup: - { - YUMIManePretendUpwardsRegardGovernancer * dressUpVC = [[YUMIManePretendUpwardsRegardGovernancer alloc] init]; - [self.navigationController pushViewController:dressUpVC animated:YES]; - } - break; - case YUMIManeProvisionGenre_DressUp_Market: - { - YUMIPretendUpwardsProcurementRegardGovernancer *dressUpShopVc = [[YUMIPretendUpwardsProcurementRegardGovernancer alloc] init]; - [self.navigationController pushViewController:dressUpShopVc animated:YES]; - } - break; - case YUMIManeProvisionGenre_Fans_List: - { - YUMIManeFanaticsRegardGovernancer * fanaticsVewC = [[YUMIManeFanaticsRegardGovernancer alloc] init]; - [self.navigationController pushViewController:fanaticsVewC animated:YES]; - } - break; - case YUMIManeProvisionGenre_Attention_List: - { - YUMIManeConsiderationRegardGovernancer * considerationVewC = [[YUMIManeConsiderationRegardGovernancer alloc] init]; - [self.navigationController pushViewController:considerationVewC animated:YES]; - } - break; - case YUMIManeProvisionGenre_Visitor: - { - YUMIManeVacationerRegardGovernancer *visitorVC = [[YUMIManeVacationerRegardGovernancer alloc] init]; - [self.navigationController pushViewController:visitorVC animated:YES]; - } - break; - case YUMIManeProvisionGenre_FansTeam: { - YUMIManeFanaticsSquadRegardGovernancer *fansTeamVc = [[YUMIManeFanaticsSquadRegardGovernancer alloc] init]; - [self.navigationController pushViewController:fansTeamVc animated:YES]; - } - break; - case YUMIManeProvisionGenre_My_Guild: - { - if (self.collectiveAbstract.clan.elderUid.length > 0) { - YUMIManeCollectiveRegardGovernancer * clanVC = [[YUMIManeCollectiveRegardGovernancer alloc] init]; - clanVC.uid = [NSString stringWithFormat:@"%ld", self.userInfo.uid]; - [self.navigationController pushViewController:clanVC animated:YES]; - } else if(self.collectiveAbstract.hall.hallId.length > 0) { - YUMIManeUnionRegardGovernancer * guildVC = [[YUMIManeUnionRegardGovernancer alloc] init]; - guildVC.ownerUid = self.collectiveAbstract.hall.ownerUid; - guildVC.instituteId = self.collectiveAbstract.hall.hallId; - [self.navigationController pushViewController:guildVC animated:YES]; - }else{ - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Simple_Mine_View_Controller_0")]; - } - } - break; - case -1: { - YUMITissueRegardGovernancer * webVewC = [[YUMITissueRegardGovernancer alloc] init]; - webVewC.url = URLWithType(kUserLevelURL); - [self.navigationController pushViewController:webVewC animated:YES]; - } - break; - case -2: { - YUMIManeFeedbackRegardGovernancer * feedbackVC = [[YUMIManeFeedbackRegardGovernancer alloc] init]; - [self.navigationController pushViewController:feedbackVC animated:YES]; - } - break; - case -3: { - YUMIManeInstanllingRegardGovernancer * settingVC = [[YUMIManeInstanllingRegardGovernancer alloc] init]; - settingVC.userInfo = self.userInfo; - [self.navigationController pushViewController:settingVC animated:YES]; - } - break; - default: - break; - } -} - -#pragma mark - FBCManeCeremony - -- (void)dwellEarnConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo { - - if (!userInfo.isBindPhone && [ClientDisposition partowardsiciptowardsionDisposition].iosMobileBind) { - return; - } - if (userInfo.nick == nil || userInfo.avatar == nil) { - return; - } - self.userInfo = userInfo; - self.intelligenceerRegard.userInfo = userInfo; - [self.tableView reloadData]; - - dispatch_group_t group =dispatch_group_create(); - - dispatch_queue_t queue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0); - dispatch_group_enter(group); - dispatch_group_async(group, queue, ^{ - [self.presimport acquireManeOriflammeSttowardsementAboutGroup:group]; - }); - - dispatch_group_enter(group); - dispatch_group_async(group, queue, ^{ - [self.presimport acquireCollectiveSpecificAbstractAboutGroup:group]; - }); - - dispatch_group_notify(group,dispatch_get_main_queue(), ^{ - [self.tableView reloadData]; - }); - -} - -- (void)dwellEarnCollectiveSpecificAbstractAccomplishment:(CollectiveSpecificAbstractMatrix *)collectiveAbstract WithGroup:(nonnull dispatch_group_t)group{ - self.collectiveAbstract = collectiveAbstract; - dispatch_group_leave(group); - [self.tableView reloadData]; -} - -- (void)dwellEarnCollectiveSpecificAbstractflunkAboutGroup:(dispatch_group_t)group { - dispatch_group_leave(group); -} - -- (void)dwellEarnsubjectiveOriflammeSttowardsementAccomplishment:(NSArray *)items WithGroup:(nonnull dispatch_group_t)group { - dispatch_group_leave(group); - [self.oriflammeGarment removeAllObjects]; - [self.oriflammeGarment addObjectsFromArray:items]; - [self.tableView reloadData]; - NSMutableArray *array = [NSMutableArray array]; - for (ResidenceOriflammeAbstractMatrix *item in self.oriflammeGarment) { - [array addObject:item.bannerId]; - } - NSString *trackName = [array componentsJoinedByString:@","]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventusercenter_banner_show eventAttributes:@{@"bannerId" : trackName}]; -} - -- (void)dwellEarnsubjectiveOriflammeSttowardsementFlunkAboutGroup:(dispatch_group_t)group { - dispatch_group_leave(group); -} - -#pragma mark - FBCResidenceBannerTabulationViweElementRepresendtation -- (void)fBCHoutilizeOriflammeTarbsultowardsionViweElement:(YUMIResidenceOriflammeTabulationRegardElement *)view didClickBanner:(ResidenceOriflammeAbstractMatrix *)info { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventusercenter_banner_click eventAttributes:@{@"bannerId" : info.bannerId}]; - switch (info.skipType) { - case HomeBannerAbstractSkipGenre_Room: - { - if (info.skipUri.length > 0) { - [YUMIChamberRegardGovernancer unfoildChamber:info.skipUri viewController:self]; - } - } - break; - case HomeBannerAbstractSkipGenre_Web: - { - YUMITissueRegardGovernancer *vc = [[YUMITissueRegardGovernancer alloc]init]; - vc.url = info.skipUri; - [self.navigationController pushViewController:vc animated:YES]; - } - break; - default: - break; - } -} - - -#pragma mark - TableViewDelegate - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - if (self.userInfo) { - return 3; - } - return 0; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - if (section == 0) { - return 0; - }else if (section == 1) { - return self.sectionGarment1.count; - }else if (section == 2) { - return 1; - } - return 0; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (indexPath.section == 0) { - return 64; - } else if (indexPath.section == 1) { - return 64; - } else { - return 80; - } -} - -- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { - if (section == 0) { - return 0.01; - } - return 13; -} - -- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { - return UIView.new; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { - return 0.01; -} - -- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { - return UIView.new; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (indexPath.section == 0) { - YUMIManeProvisionTabulationRegardElement *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeProvisionTabulationRegardElement class])]; - YUMIManeProvisionMatrix *itemMatrix = self.sectionGarment0[indexPath.row]; - cell.itemMatrix = itemMatrix; - if (indexPath.row == 0) { - [cell setMonopolizeApex:YES bottom:NO]; - }else if (indexPath.row == self.sectionGarment0.count -1) { - [cell setMonopolizeApex:NO bottom:YES]; - }else{ - [cell setMonopolizeApex:NO bottom:NO]; - } - return cell; - }else if (indexPath.section == 1) { - YUMIManeProvisionTabulationRegardElement *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIManeProvisionTabulationRegardElement class])]; - YUMIManeProvisionMatrix *itemMatrix = self.sectionGarment1[indexPath.row]; - cell.itemMatrix = itemMatrix; - if (indexPath.row == 0) { - [cell setMonopolizeApex:YES bottom:NO]; - }else if (indexPath.row == self.sectionGarment1.count -1) { - [cell setMonopolizeApex:NO bottom:YES]; - }else{ - [cell setMonopolizeApex:NO bottom:NO]; - } - return cell; - }else if (indexPath.section == 2) { - YUMIResidenceOriflammeTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIResidenceOriflammeTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIResidenceOriflammeTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIResidenceOriflammeTabulationRegardElement class])]; - } - cell.isManeRegardOriflamme = YES; - if (self.oriflammeGarment.count) { - cell.oriflammeStatement = self.oriflammeGarment; - } - cell.delegate = self; - cell.selectionStyle = UITableViewCellSelectionStyleNone; - return cell; - } - return UITableViewCell.new; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - if (indexPath.section == 0) { - YUMIManeProvisionMatrix *item = self.sectionGarment0[indexPath.row]; - [self intelligenceerRegardBtutonPerformanceGenre:item.type]; - }else if (indexPath.section == 1) { - YUMIManeProvisionMatrix *item = self.sectionGarment1[indexPath.row]; - [self intelligenceerRegardBtutonPerformanceGenre:item.type]; - } -} - -#pragma mark - 懒加载 - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.showsVerticalScrollIndicator = NO; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor colorWithWhite:0.95 alpha:1]; - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - [_tableView registerClass:[YUMIManeProvisionTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIManeProvisionTabulationRegardElement class])]; - [_tableView registerClass:[YUMIResidenceOriflammeTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIResidenceOriflammeTabulationRegardElement class])]; - _tableView.contentInset = UIEdgeInsetsMake(0, 0, 100, 0); - } - return _tableView; -} - -- (YUMISimpleManeIntelligencerRegard *)intelligenceerRegard { - if (!_intelligenceerRegard) { - _intelligenceerRegard = [[YUMISimpleManeIntelligencerRegard alloc] init]; - _intelligenceerRegard.frame = CGRectMake(0, 0, self.view.bounds.size.width, 313); - _intelligenceerRegard.delegate = self; - } - return _intelligenceerRegard; -} - -- (NSArray *)sectionGarment0 { - if (!_sectionGarment0) { - YUMIManeProvisionMatrix *model0 = [[YUMIManeProvisionMatrix alloc] init]; - model0.itemImageName = @"mine_union"; - model0.itemName = YMLocalizedString(@"YUMI_Simple_Mine_View_Controller_1"); - model0.type = YUMIManeProvisionGenre_My_Guild; - - YUMIManeProvisionMatrix *model1 = [[YUMIManeProvisionMatrix alloc] init]; - model1.itemImageName = @"mine_dress"; - model1.itemName = YMLocalizedString(@"YUMI_Simple_Mine_View_Controller_2"); - model1.type = YUMIManeProvisionGenre_DressUp_Market; - - YUMIManeProvisionMatrix *model2 = [[YUMIManeProvisionMatrix alloc] init]; - model2.itemImageName = @"mine_fans"; - model2.itemName = YMLocalizedString(@"YUMI_Simple_Mine_View_Controller_3"); - model2.type = YUMIManeProvisionGenre_FansTeam; - _sectionGarment0 = @[model0, model1, model2]; - } - return _sectionGarment0; -} - -- (NSArray *)sectionGarment1 { - if (!_sectionGarment1) { - - - YUMIManeProvisionMatrix *model1 = [[YUMIManeProvisionMatrix alloc] init]; - model1.itemImageName = @"mine_feedback"; - model1.itemName = YMLocalizedString(@"YUMI_Simple_Mine_View_Controller_5"); - model1.type = -2; - - YUMIManeProvisionMatrix *model2 = [[YUMIManeProvisionMatrix alloc] init]; - model2.itemImageName = @"mine_setting"; - model2.itemName = YMLocalizedString(@"YUMI_Simple_Mine_View_Controller_6"); - model2.type = -3; - - _sectionGarment1 = @[ model1, model2]; - } - return _sectionGarment1; -} - -- (NSMutableArray *)oriflammeGarment { - if (!_oriflammeGarment) { - _oriflammeGarment = [NSMutableArray array]; - } - return _oriflammeGarment; -} - -@end diff --git a/YuMi/Modules/YMMonents/Api/Api+Monents.h b/YuMi/Modules/YMMonents/Api/Api+Monents.h index 1f611090..672edbf3 100644 --- a/YuMi/Modules/YMMonents/Api/Api+Monents.h +++ b/YuMi/Modules/YMMonents/Api/Api+Monents.h @@ -10,48 +10,163 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (Monents) -+ (void)separtowardsionsEncourageSttowardsement:(HttpRequestHelperCompletion)completion page:(NSString *)page pageSize:(NSString *)pageSize types:(NSString *)types; +/// 朋友圈动态推荐列表 +/// @param completion 完成 +/// @param page 当前的页数 +/// @param pageSize 一页的个数 +/// @param types 类型 0,2 ++ (void)monentsRecommendList:(HttpRequestHelperCompletion)completion page:(NSString *)page pageSize:(NSString *)pageSize types:(NSString *)types; -+ (void)separtowardsionsRecentlySttowardsement:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId pageSize:(NSString *)pageSize types:(NSString *)types; +/// 朋友圈动态最新列表 +/// @param completion 完成 +/// @param dynamicId 最新动态的id +/// @param pageSize 一页的个数 +/// @param types 类型 0,2 ++ (void)monentsLatestList:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId pageSize:(NSString *)pageSize types:(NSString *)types; -+ (void)separtowardsionsBWSttralongerSttowardsement:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId pageSize:(NSString *)pageSize types:(NSString *)types; +/// 朋友圈动态关注列表 +/// @param completion 完成 +/// @param dynamicId 最新动态的id +/// @param pageSize 一页的个数 +/// @param types 类型 0,2 ++ (void)monentsFollowerList:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId pageSize:(NSString *)pageSize types:(NSString *)types; -+ (void)separtowardsionsCoactiveSttowardsement:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId pageSize:(NSString *)pageSize uid:(NSString *)uid; +/// 互动消息列表 +/// @param completion 完成 +/// @param dynamicId 动态的id +/// @param pageSize 一页的个数 +/// @param uid 类型 uid ++ (void)monentsInteractiveList:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId pageSize:(NSString *)pageSize uid:(NSString *)uid; -+ (void)separtowardsionsCoactiveDistinct:(HttpRequestHelperCompletion)complection uid:(NSString *)uid; +/// 清空互动消息 +/// @param complection 完成 +/// @param uid 用户的uid ++ (void)monentsInteractiveClear:(HttpRequestHelperCompletion)complection uid:(NSString *)uid; -+ (void)separtowardsionsMotifSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize worldTypeId:(NSString *)worldTypeId; +/// 获取话题列表 +/// @param completion 完成 +/// @param uid uid +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +/// @param worldTypeId 类型0 ++ (void)monentsTopicList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize worldTypeId:(NSString *)worldTypeId; -+ (void)consumerPartowardsiciptowardsionSepartowardsions:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId uid:(NSString *)uid worldId:(NSString *)worldId shareUid:(NSString *)shareUid; +/// 分享动态 +/// @param completion 完成 +/// @param dynamicId 动态的id +/// @param uid 动态发布者的uid +/// @param worldId 动态的话题id +/// @param shareUid 分享者的uid ++ (void)userShareMonents:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId uid:(NSString *)uid worldId:(NSString *)worldId shareUid:(NSString *)shareUid; -+ (void)separtowardsionsSimilar:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId uid:(NSString *)uid status:(NSString *)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId; +/// 点赞动态 +/// @param completion 完成 +/// @param dynamicId 动态的id +/// @param uid 用户的uid +/// @param status 0 取消点赞 1 点赞 +/// @param likedUid 点赞人的uid +/// @param worldId 世界的id ++ (void)monentsLike:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId uid:(NSString *)uid status:(NSString *)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId; -+ (void)separtowardsionsSpecific:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId worldId:(NSString *)worldId uid:(NSString *)uid; +/// 动态详情 +/// @param completion 完成 +/// @param dynamicId 动态的id +/// @param worldId 话题的id +/// @param uid 用户的uid ++ (void)monentsDetail:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId worldId:(NSString *)worldId uid:(NSString *)uid; -+ (void)monentSpecificCommon:(HttpRequestHelperCompletion)completion uid:(NSString *)uid dynamicId:(NSString *)dynamicId content:(NSString *)content; +/// 评论动态 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param dynamicId 动态的id +/// @param content 内容 ++ (void)monentDetailCommon:(HttpRequestHelperCompletion)completion uid:(NSString *)uid dynamicId:(NSString *)dynamicId content:(NSString *)content; -+ (void)replictowardsionSepartowardsionsSpecificCommon:(HttpRequestHelperCompletion)completion uid:(NSString *)uid dynamicId:(NSString *)dynamicId content:(NSString *)content commentId:(NSString *)commentId; +/// 回复评论 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param dynamicId 动态的id +/// @param content 内容 +/// @param commentId 评论的id ++ (void)replyMonentsDetailCommon:(HttpRequestHelperCompletion)completion uid:(NSString *)uid dynamicId:(NSString *)dynamicId content:(NSString *)content commentId:(NSString *)commentId; -+ (void)separtowardsionsJudgementSttowardsement:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId uid:(NSString *)uid pageSize:(NSString *)pageSize timestamp:(NSString *)timestamp; +/// 请求评论列表 +/// @param completion 完成 +/// @param dynamicId 动态id +/// @param uid uid +/// @param pageSize 一页多少个 +/// @param timestamp 上一个评论的时间戳 ++ (void)monentsCommentList:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId uid:(NSString *)uid pageSize:(NSString *)pageSize timestamp:(NSString *)timestamp; -+ (void)separtowardsionsJudgementReplictowardsionSttowardsement:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId uid:(NSString *)uid pageSize:(NSString *)pageSize commentId:(NSString *)commentId timestamp:(NSString *)timestamp; +/// 评论回复列表 +/// @param completion 完成 +/// @param dynamicId 动态id +/// @param uid uid +/// @param pageSize 每页多少个 +/// @param commentId 评论的id +/// @param timestamp 上条回复的时间 ++ (void)monentsCommentReplyList:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId uid:(NSString *)uid pageSize:(NSString *)pageSize commentId:(NSString *)commentId timestamp:(NSString *)timestamp; -+ (void)separtowardsionsMotifSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid type:(NSString *)type page:(NSString *)page; +/// 获取可以选择的话题列表 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param type 类型 +/// @param page 当前的页数 ++ (void)monentsTopicList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid type:(NSString *)type page:(NSString *)page; -+ (void)separtowardsionsPublish:(HttpRequestHelperCompletion)completion uid:(NSString *)uid type:(NSString *)type worldId:(NSString *)worldId content:(NSString *)content resList:(NSArray *)resList; +/// 发布动态 +/// @param completion 完成 +/// @param uid uid +/// @param type 类型 +/// @param worldId 话题的id +/// @param content 内容 +/// @param resList 发布的图片 ++ (void)monentsPublish:(HttpRequestHelperCompletion)completion uid:(NSString *)uid type:(NSString *)type worldId:(NSString *)worldId content:(NSString *)content resList:(NSArray *)resList; -+ (void)separtowardsionsMotifRecentlySttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid dynamicId:(NSString *)dynamicId types:(NSString *)types worldId:(NSString *)worldId pageSize:(NSString *)pageSize; +/// 获取动态话题最新记录 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param dynamicId 下一页动态的id +/// @param types l类型 +/// @param worldId 话题的id +/// @param pageSize 一页多少个 ++ (void)monentsTopicLatestList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid dynamicId:(NSString *)dynamicId types:(NSString *)types worldId:(NSString *)worldId pageSize:(NSString *)pageSize; -+ (void)separtowardsionsMotifEncourageSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid dynamicId:(NSString *)dynamicId types:(NSString *)types worldId:(NSString *)worldId pageSize:(NSString *)pageSize; +/// 获取动态话题推荐记录 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param dynamicId 下一页动态的id +/// @param types l类型 +/// @param worldId 话题的id +/// @param pageSize 一页多少个 ++ (void)monentsTopicRecommendList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid dynamicId:(NSString *)dynamicId types:(NSString *)types worldId:(NSString *)worldId pageSize:(NSString *)pageSize; -+ (void)separtowardsionsMotifSpecificAbstract:(HttpRequestHelperCompletion)completion worldId:(NSString *)worldId uid:(NSString *)uid; +/// 获取动态话题详情 +/// @param completion 完成 +/// @param worldId 话题id +/// @param uid 用户uid ++ (void)monentsTopicDetailInfo:(HttpRequestHelperCompletion)completion worldId:(NSString *)worldId uid:(NSString *)uid; -+ (void)moentsMotifSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize worldTypeId:(NSString *)worldTypeId; +/// 获取动态话题列表 +/// @param completion 完成 +/// @param uid uid +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +/// @param worldTypeId 类型 ++ (void)moentsTopicList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize worldTypeId:(NSString *)worldTypeId; -+ (void)separtowardsionsRepresenttowardsion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid dynamicId:(NSString *)dynamicId worldId:(NSString *)worldId; +/// 删除动态 +/// @param completion 完成 +/// @param uid uid +/// @param dynamicId 动态的id +/// @param worldId 话题的id ++ (void)monentsDelete:(HttpRequestHelperCompletion)completion uid:(NSString *)uid dynamicId:(NSString *)dynamicId worldId:(NSString *)worldId; -+ (void)separtowardsionsUnLireComputtowardsion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; +/// 获取动态没有阅读数 +/// @param completion 完成 +/// @param uid uid ++ (void)monentsUnReadCount:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Api/Api+Monents.m b/YuMi/Modules/YMMonents/Api/Api+Monents.m index 0ae3a2b7..842c68e0 100644 --- a/YuMi/Modules/YMMonents/Api/Api+Monents.m +++ b/YuMi/Modules/YMMonents/Api/Api+Monents.m @@ -11,152 +11,267 @@ #import @implementation Api (Monents) -+ (void)separtowardsionsEncourageSttowardsement:(HttpRequestHelperCompletion)completion page:(NSString *)page pageSize:(NSString *)pageSize types:(NSString *)types { - NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9zcXVhcmUvcmVjb21tZW5kRHluYW1pY3M="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, page, pageSize, types, nil]; +/// 朋友圈动态推荐列表 +/// @param completion 完成 +/// @param page 当前的页数 +/// @param pageSize 一页的个数 +/// @param types 类型 0,2 ++ (void)monentsRecommendList:(HttpRequestHelperCompletion)completion page:(NSString *)page pageSize:(NSString *)pageSize types:(NSString *)types { + NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9zcXVhcmUvcmVjb21tZW5kRHluYW1pY3M="];///dynamic/square/recommendDynamics + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, page, pageSize, types, nil]; } -+ (void)separtowardsionsRecentlySttowardsement:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId pageSize:(NSString *)pageSize types:(NSString *)types { - NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9zcXVhcmUvbGF0ZXN0RHluYW1pY3M="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, dynamicId, pageSize, types, nil]; +/// 朋友圈动态最新列表 +/// @param completion 完成 +/// @param dynamicId 最新动态的id +/// @param pageSize 一页的个数 +/// @param types 类型 0,2 ++ (void)monentsLatestList:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId pageSize:(NSString *)pageSize types:(NSString *)types { + NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9zcXVhcmUvbGF0ZXN0RHluYW1pY3M="];///dynamic/square/latestDynamics + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, dynamicId, pageSize, types, nil]; } -+ (void)separtowardsionsBWSttralongerSttowardsement:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId pageSize:(NSString *)pageSize types:(NSString *)types { - NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9zcXVhcmUvZm9sbG93ZXJEeW5hbWljcw=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, dynamicId, pageSize, types, nil]; +/// 朋友圈动态关注列表 +/// @param completion 完成 +/// @param dynamicId 最新动态的id +/// @param pageSize 一页的个数 +/// @param types 类型 0,2 ++ (void)monentsFollowerList:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId pageSize:(NSString *)pageSize types:(NSString *)types { + NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9zcXVhcmUvZm9sbG93ZXJEeW5hbWljcw=="];///dynamic/square/followerDynamics + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, dynamicId, pageSize, types, nil]; } -+ (void)separtowardsionsCoactiveSttowardsement:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId pageSize:(NSString *)pageSize uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"aW50ZXJhY3RpdmUvbGlzdA=="]; +/// 互动消息列表 +/// @param completion 完成 +/// @param dynamicId 动态的id +/// @param pageSize 一页的个数 +/// @param uid 类型 uid ++ (void)monentsInteractiveList:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId pageSize:(NSString *)pageSize uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"aW50ZXJhY3RpdmUvbGlzdA=="];///interactive/list NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic secureSetGroal:dynamicId forKey:@"id"]; - [dic secureSetGroal:pageSize forKey:@"pageSize"]; - [dic secureSetGroal:uid forKey:@"uid"]; - [HttpRequestFacilitater request:fang method:HttpRequestHelperMethodPOST params:dic completion:completion]; + [dic safeSetObject:dynamicId forKey:@"id"]; + [dic safeSetObject:pageSize forKey:@"pageSize"]; + [dic safeSetObject:uid forKey:@"uid"]; + [HttpRequestHelper request:fang method:HttpRequestHelperMethodPOST params:dic completion:completion]; } -+ (void)separtowardsionsCoactiveDistinct:(HttpRequestHelperCompletion)complection uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"aW50ZXJhY3RpdmUvY2xlYXI="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, uid, nil]; +/// 清空互动消息 +/// @param complection 完成 +/// @param uid 用户的uid ++ (void)monentsInteractiveClear:(HttpRequestHelperCompletion)complection uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"aW50ZXJhY3RpdmUvY2xlYXI="];///interactive/clear + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, uid, nil]; } -+ (void)separtowardsionsMotifSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize worldTypeId:(NSString *)worldTypeId { - NSString * fang = [NSString stringFromBase64String:@"d29ybGQvbGlzdA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, page, pageSize, worldTypeId, nil]; +/// 获取话题列表 +/// @param completion 完成 +/// @param uid uid +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +/// @param worldTypeId 类型0 ++ (void)monentsTopicList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize worldTypeId:(NSString *)worldTypeId { + NSString * fang = [NSString stringFromBase64String:@"d29ybGQvbGlzdA=="];///world/list + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, page, pageSize, worldTypeId, nil]; } -+ (void)consumerPartowardsiciptowardsionSepartowardsions:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId uid:(NSString *)uid worldId:(NSString *)worldId shareUid:(NSString *)shareUid { - NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9zaGFyZQ=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, dynamicId, uid, worldId, shareUid, nil]; +/// 分享动态 +/// @param completion 完成 +/// @param dynamicId 动态的id +/// @param uid 动态发布者的uid +/// @param worldId 动态的话题id +/// @param shareUid 分享者的uid ++ (void)userShareMonents:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId uid:(NSString *)uid worldId:(NSString *)worldId shareUid:(NSString *)shareUid { + NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9zaGFyZQ=="];///dynamic/share + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, dynamicId, uid, worldId, shareUid, nil]; } -+ (void)separtowardsionsSimilar:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId uid:(NSString *)uid status:(NSString *)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId { - NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9saWtl"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, dynamicId, uid, status, likedUid, worldId, nil]; +/// 点赞动态 +/// @param completion 完成 +/// @param dynamicId 动态的id +/// @param uid 用户的uid +/// @param status 0 取消点赞 1 点赞 +/// @param likedUid 点赞人的uid +/// @param worldId 世界的id ++ (void)monentsLike:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId uid:(NSString *)uid status:(NSString *)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId { + NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9saWtl"];///dynamic/like + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, dynamicId, uid, status, likedUid, worldId, nil]; } -+ (void)separtowardsionsSpecific:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId worldId:(NSString *)worldId uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9kZXRhaWw="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, dynamicId, worldId, uid, nil]; +/// 动态详情 +/// @param completion 完成 +/// @param dynamicId 动态的id +/// @param worldId 话题的id +/// @param uid 用户的uid ++ (void)monentsDetail:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId worldId:(NSString *)worldId uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9kZXRhaWw="];///dynamic/detail + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, dynamicId, worldId, uid, nil]; } -+ (void)monentSpecificCommon:(HttpRequestHelperCompletion)completion uid:(NSString *)uid dynamicId:(NSString *)dynamicId content:(NSString *)content { - NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9jb21tZW50L3B1Ymxpc2g="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, dynamicId, content, nil]; +/// 评论动态 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param dynamicId 动态的id +/// @param content 内容 ++ (void)monentDetailCommon:(HttpRequestHelperCompletion)completion uid:(NSString *)uid dynamicId:(NSString *)dynamicId content:(NSString *)content { + NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9jb21tZW50L3B1Ymxpc2g="];///dynamic/comment/publish + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, dynamicId, content, nil]; } -+ (void)replictowardsionSepartowardsionsSpecificCommon:(HttpRequestHelperCompletion)completion uid:(NSString *)uid dynamicId:(NSString *)dynamicId content:(NSString *)content commentId:(NSString *)commentId { - NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9jb21tZW50L3JlcGx5"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, dynamicId, content, commentId, nil]; +/// 回复评论 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param dynamicId 动态的id +/// @param content 内容 +/// @param commentId 评论的id ++ (void)replyMonentsDetailCommon:(HttpRequestHelperCompletion)completion uid:(NSString *)uid dynamicId:(NSString *)dynamicId content:(NSString *)content commentId:(NSString *)commentId { + NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9jb21tZW50L3JlcGx5"];///dynamic/comment/reply + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, dynamicId, content, commentId, nil]; } -+ (void)separtowardsionsJudgementSttowardsement:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId uid:(NSString *)uid pageSize:(NSString *)pageSize timestamp:(NSString *)timestamp { - NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9jb21tZW50L2xpc3Q="]; +/// 请求评论列表 +/// @param completion 完成 +/// @param dynamicId 动态id +/// @param uid uid +/// @param pageSize 一页多少个 +/// @param timestamp 上一个评论的时间戳 ++ (void)monentsCommentList:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId uid:(NSString *)uid pageSize:(NSString *)pageSize timestamp:(NSString *)timestamp { + NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9jb21tZW50L2xpc3Q="];///dynamic/comment/list NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic secureSetGroal:dynamicId forKey:@"dynamicId"]; - [dic secureSetGroal:uid forKey:@"uid"]; - [dic secureSetGroal:pageSize forKey:@"pageSize"]; + [dic safeSetObject:dynamicId forKey:@"dynamicId"]; + [dic safeSetObject:uid forKey:@"uid"]; + [dic safeSetObject:pageSize forKey:@"pageSize"]; if (timestamp.length > 0) { - [dic secureSetGroal:timestamp forKey:@"timestamp"]; + [dic safeSetObject:timestamp forKey:@"timestamp"]; } - [HttpRequestFacilitater request:fang method:HttpRequestHelperMethodGET params:dic completion:completion]; + [HttpRequestHelper request:fang method:HttpRequestHelperMethodGET params:dic completion:completion]; } -+ (void)separtowardsionsJudgementReplictowardsionSttowardsement:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId uid:(NSString *)uid pageSize:(NSString *)pageSize commentId:(NSString *)commentId timestamp:(NSString *)timestamp { - NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9jb21tZW50L3JlcGx5L2xpc3Q="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, dynamicId, uid, pageSize, commentId, timestamp, nil]; +/// 评论回复列表 +/// @param completion 完成 +/// @param dynamicId 动态id +/// @param uid uid +/// @param pageSize 每页多少个 +/// @param commentId 评论的id +/// @param timestamp 上条回复的时间 ++ (void)monentsCommentReplyList:(HttpRequestHelperCompletion)completion dynamicId:(NSString *)dynamicId uid:(NSString *)uid pageSize:(NSString *)pageSize commentId:(NSString *)commentId timestamp:(NSString *)timestamp { + NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9jb21tZW50L3JlcGx5L2xpc3Q="];///dynamic/comment/reply/list + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, dynamicId, uid, pageSize, commentId, timestamp, nil]; } -+ (void)separtowardsionsMotifSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid type:(NSString *)type page:(NSString *)page { - NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9zcXVhcmUvd29ybGQ="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, type, page, nil]; +/// 获取可以选择的话题列表 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param type 类型 +/// @param page 当前的页数 ++ (void)monentsTopicList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid type:(NSString *)type page:(NSString *)page { + NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9zcXVhcmUvd29ybGQ="];///dynamic/square/world + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, type, page, nil]; } -+ (void)separtowardsionsPublish:(HttpRequestHelperCompletion)completion uid:(NSString *)uid type:(NSString *)type worldId:(NSString *)worldId content:(NSString *)content resList:(NSArray *)resList { - NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9zcXVhcmUvcHVibGlzaA=="]; +/// 发布动态 +/// @param completion 完成 +/// @param uid uid +/// @param type 类型 +/// @param worldId 话题的id +/// @param content 内容 +/// @param resList 发布的图片 ++ (void)monentsPublish:(HttpRequestHelperCompletion)completion uid:(NSString *)uid type:(NSString *)type worldId:(NSString *)worldId content:(NSString *)content resList:(NSArray *)resList { + NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9zcXVhcmUvcHVibGlzaA=="];///dynamic/square/publish NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic secureSetGroal:uid forKey:@"uid"]; - [dic secureSetGroal:type forKey:@"type"]; + [dic safeSetObject:uid forKey:@"uid"]; + [dic safeSetObject:type forKey:@"type"]; - [dic secureSetGroal:content.length > 0 ? content : @"" forKey:@"content"]; + [dic safeSetObject:content.length > 0 ? content : @"" forKey:@"content"]; if (worldId.length > 0) { - [dic secureSetGroal:worldId forKey:@"worldId"]; + [dic safeSetObject:worldId forKey:@"worldId"]; } if (resList.count > 0) { - [dic secureSetGroal:resList forKey:@"resList"]; + [dic safeSetObject:resList forKey:@"resList"]; } - [HttpRequestFacilitater postCommunictowardsionSolitaire:fang params:dic.toJSONBWSttr completion:completion]; + [HttpRequestHelper postSkillCard:fang params:dic.toJSONString completion:completion]; } -+ (void)separtowardsionsMotifRecentlySttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid dynamicId:(NSString *)dynamicId types:(NSString *)types worldId:(NSString *)worldId pageSize:(NSString *)pageSize { +/// 获取动态话题最新记录 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param dynamicId 下一页动态的id +/// @param types l类型 +/// @param worldId 话题的id +/// @param pageSize 一页多少个 ++ (void)monentsTopicLatestList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid dynamicId:(NSString *)dynamicId types:(NSString *)types worldId:(NSString *)worldId pageSize:(NSString *)pageSize { NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic secureSetGroal:uid forKey:@"uid"]; - [dic secureSetGroal:types forKey:@"types"]; - [dic secureSetGroal:worldId forKey:@"worldId"]; - [dic secureSetGroal:pageSize forKey:@"pageSize"]; + [dic safeSetObject:uid forKey:@"uid"]; + [dic safeSetObject:types forKey:@"types"]; + [dic safeSetObject:worldId forKey:@"worldId"]; + [dic safeSetObject:pageSize forKey:@"pageSize"]; if (dynamicId.length > 0) { - [dic secureSetGroal:dynamicId forKey:@"dynamicId"]; + [dic safeSetObject:dynamicId forKey:@"dynamicId"]; } - NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9sYXRlc3RMaXN0"]; - [HttpRequestFacilitater request:fang method:HttpRequestHelperMethodPOST params:dic completion:completion]; + NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9sYXRlc3RMaXN0"];///dynamic/latestList + [HttpRequestHelper request:fang method:HttpRequestHelperMethodPOST params:dic completion:completion]; } -+ (void)separtowardsionsMotifEncourageSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid dynamicId:(NSString *)dynamicId types:(NSString *)types worldId:(NSString *)worldId pageSize:(NSString *)pageSize { +/// 获取动态话题推荐记录 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param dynamicId 下一页动态的id +/// @param types l类型 +/// @param worldId 话题的id +/// @param pageSize 一页多少个 ++ (void)monentsTopicRecommendList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid dynamicId:(NSString *)dynamicId types:(NSString *)types worldId:(NSString *)worldId pageSize:(NSString *)pageSize { NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic secureSetGroal:uid forKey:@"uid"]; - [dic secureSetGroal:types forKey:@"types"]; - [dic secureSetGroal:worldId forKey:@"worldId"]; - [dic secureSetGroal:pageSize forKey:@"pageSize"]; + [dic safeSetObject:uid forKey:@"uid"]; + [dic safeSetObject:types forKey:@"types"]; + [dic safeSetObject:worldId forKey:@"worldId"]; + [dic safeSetObject:pageSize forKey:@"pageSize"]; if (dynamicId.length > 0) { - [dic secureSetGroal:dynamicId forKey:@"dynamicId"]; + [dic safeSetObject:dynamicId forKey:@"dynamicId"]; } - NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9saXN0VjI="]; - [HttpRequestFacilitater request:fang method:HttpRequestHelperMethodPOST params:dic completion:completion]; + NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9saXN0VjI="];///dynamic/listV2 + [HttpRequestHelper request:fang method:HttpRequestHelperMethodPOST params:dic completion:completion]; } -+ (void)separtowardsionsMotifSpecificAbstract:(HttpRequestHelperCompletion)completion worldId:(NSString *)worldId uid:(NSString *)uid{ - NSString * fang = [NSString stringFromBase64String:@"d29ybGQvZGV0YWls"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,worldId, uid, nil]; +/// 获取动态话题详情 +/// @param completion 完成 +/// @param worldId 话题id +/// @param uid 用户uid ++ (void)monentsTopicDetailInfo:(HttpRequestHelperCompletion)completion worldId:(NSString *)worldId uid:(NSString *)uid{ + NSString * fang = [NSString stringFromBase64String:@"d29ybGQvZGV0YWls"];///world/detail + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,worldId, uid, nil]; } -+ (void)moentsMotifSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize worldTypeId:(NSString *)worldTypeId { - NSString * fang = [NSString stringFromBase64String:@"d29ybGQvbGlzdA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, page, pageSize, worldTypeId, nil]; +/// 获取动态话题列表 +/// @param completion 完成 +/// @param uid uid +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +/// @param worldTypeId 类型 ++ (void)moentsTopicList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize worldTypeId:(NSString *)worldTypeId { + NSString * fang = [NSString stringFromBase64String:@"d29ybGQvbGlzdA=="];///world/list + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, page, pageSize, worldTypeId, nil]; } -+ (void)separtowardsionsRepresenttowardsion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid dynamicId:(NSString *)dynamicId worldId:(NSString *)worldId { - NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9kZWxldGU="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, dynamicId, worldId, nil]; +/// 删除动态 +/// @param completion 完成 +/// @param uid uid +/// @param dynamicId 动态的id +/// @param worldId 话题的id ++ (void)monentsDelete:(HttpRequestHelperCompletion)completion uid:(NSString *)uid dynamicId:(NSString *)dynamicId worldId:(NSString *)worldId { + NSString * fang = [NSString stringFromBase64String:@"ZHluYW1pYy9kZWxldGU="];///dynamic/delete + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, dynamicId, worldId, nil]; } -+ (void)separtowardsionsUnLireComputtowardsion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"aW50ZXJhY3RpdmUvdW5yZWFkQ291bnQ="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, nil]; +/// 获取动态没有阅读数 +/// @param completion 完成 +/// @param uid uid ++ (void)monentsUnReadCount:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"aW50ZXJhY3RpdmUvdW5yZWFkQ291bnQ="];///interactive/unreadCount + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, nil]; } @end diff --git a/YuMi/Modules/YMMonents/Model/MonentsCommentModel.h b/YuMi/Modules/YMMonents/Model/MonentsCommentModel.h new file mode 100644 index 00000000..5402a1bc --- /dev/null +++ b/YuMi/Modules/YMMonents/Model/MonentsCommentModel.h @@ -0,0 +1,42 @@ +// +// MonentsCommentModel.h +// YUMI +// +// Created by YUMI on 2022/6/22. +// + +#import +#import "MonentsCommentReplyModel.h" +NS_ASSUME_NONNULL_BEGIN +@interface MonentsCommentModel : NSObject +///是否刷新高度 +@property (nonatomic,assign) BOOL isReloadHeight; +///评论的高度 +@property (nonatomic,assign) CGFloat commentRowHeight; +/// 昵称 +@property (nonatomic,copy) NSString *nick; +/// 头像 +@property (nonatomic,copy) NSString *avatar; +/// 用户 uid +@property (nonatomic,copy) NSString *uid; +///评论内容 +@property (nonatomic,copy) NSString *content; +///时间 +@property (nonatomic, copy) NSString *publishTime; +/// 当前评论id +@property (nonatomic, copy) NSString *commentId; +///回复的内容 +@property (nonatomic,strong) MonentsCommentReplyModel *replyInfo; +/// 是否是楼主 +@property (nonatomic, assign) BOOL landLordFlag; +@end + + +@interface MonentsCommentListModel : NSObject +///评论的列表 +@property (nonatomic,strong) NSArray *commentList; +///下一个评论的时间戳 +@property (nonatomic,copy) NSString *nextTimestamp; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Model/MonentsCommentModel.m b/YuMi/Modules/YMMonents/Model/MonentsCommentModel.m new file mode 100644 index 00000000..dff4f1e0 --- /dev/null +++ b/YuMi/Modules/YMMonents/Model/MonentsCommentModel.m @@ -0,0 +1,22 @@ +// +// MonentsCommentModel.m +// YUMI +// +// Created by YUMI on 2022/6/22. +// + +#import "MonentsCommentModel.h" + +@implementation MonentsCommentModel + + +@end + + +@implementation MonentsCommentListModel + ++ (NSDictionary *)objectClassInArray { + return @{@"commentList": MonentsCommentModel.class}; +} + +@end diff --git a/YuMi/Modules/YMMonents/Model/MonentsCommentReplyModel.h b/YuMi/Modules/YMMonents/Model/MonentsCommentReplyModel.h new file mode 100644 index 00000000..78f56026 --- /dev/null +++ b/YuMi/Modules/YMMonents/Model/MonentsCommentReplyModel.h @@ -0,0 +1,51 @@ +// +// MonentsCommentReplyModel.h +// YUMI +// +// Created by YUMI on 2022/6/22. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class MonentsReplyModel; +@interface MonentsCommentReplyModel : NSObject +@property (nonatomic, strong) NSMutableArray *replyList;// 剩余数量 +///剩余多少可以展开 +@property (nonatomic, assign) NSInteger leftCount; +///下一个时间 +@property (nonatomic, copy) NSString *nextTimestamp; +@end + + +@interface MonentsReplyModel : NSObject +///回复的高度 +@property (nonatomic,assign) CGFloat replyRowHeight; +/// 头像 +@property (nonatomic,copy) NSString *avatar; +/// 用户uid +@property (nonatomic,copy) NSString *uid; +/// 用户昵称 +@property (nonatomic,copy) NSString *nick; +/// 回复评论的评论id +@property (nonatomic,copy) NSString *toCommentId; +/// 回复评论的uid +@property (nonatomic,copy) NSString *toUid; +/// 回复评论的昵称 +@property (nonatomic,copy) NSString *toNick; +/// 评论内容 +@property (nonatomic,copy) NSString *content; +/// 发布时间 +@property (nonatomic,copy) NSString *publishTime; +/// 是否是楼主 +@property (nonatomic,assign) BOOL landLordFlag; +/// 回复评论的评论id +@property (nonatomic,copy) NSString *replyId; +///显示的富文本 +@property (nonatomic,strong) NSAttributedString *contentAttribute; + +- (void)createContentAttribute; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Model/MonentsCommentReplyModel.m b/YuMi/Modules/YMMonents/Model/MonentsCommentReplyModel.m new file mode 100644 index 00000000..03f35cd8 --- /dev/null +++ b/YuMi/Modules/YMMonents/Model/MonentsCommentReplyModel.m @@ -0,0 +1,34 @@ +// +// MonentsCommentReplyModel.m +// YUMI +// +// Created by YUMI on 2022/6/22. +// + +#import "MonentsCommentReplyModel.h" +#import "DJDKMIMOMColor.h" +#import "QEmotionHelper.h" + +@implementation MonentsCommentReplyModel ++ (NSDictionary *)objectClassInArray { + return @{@"replyList": MonentsReplyModel.class}; +} +@end + + +@implementation MonentsReplyModel +- (void)createContentAttribute { + if (self.contentAttribute == nil) { + QEmotionHelper *faceManager = [QEmotionHelper sharedEmotionHelper]; + NSString * toNick = [NSString stringWithFormat:@"@%@", _toNick]; + NSString *title = [NSString stringWithFormat:@"%@%@",toNick, _content.length > 0 ? _content : @""]; + NSMutableAttributedString * attribute = [faceManager attributedStringByText:title font:[UIFont systemFontOfSize:15]]; + if ([attribute.string containsString:toNick]) { + NSRange range = [attribute.string rangeOfString:toNick]; + [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor appMainColor] range:range]; + } + self.contentAttribute = attribute; + } +} + +@end diff --git a/YuMi/Modules/YMMonents/Model/MonentsInfoModel.h b/YuMi/Modules/YMMonents/Model/MonentsInfoModel.h new file mode 100644 index 00000000..bdca6aa8 --- /dev/null +++ b/YuMi/Modules/YMMonents/Model/MonentsInfoModel.h @@ -0,0 +1,102 @@ +// +// MonentsInfoModel.h +// YUMI +// +// Created by YUMI on 2022/5/11. +// + +#import +#import "YUMINNNN.h" +#import "UserVipInfoVo.h" +NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(NSInteger, MonentsContentType) { + ///纯文字的 + MonentsContentType_Text = 0, + ///图片 + MonentsContentType_Picture = 2 +}; +@class MonentsPicInfoModel; +@interface MonentsInfoModel : NSObject +///类型 +@property (nonatomic,assign) MonentsContentType type; +///用户的uid +@property (nonatomic,copy) NSString *uid; +///昵称 +@property (nonatomic,copy) NSString *nick; +///身份的类型 +@property (nonatomic,assign) NSInteger defUser; +///是否是新用户 +@property (nonatomic,assign) BOOL newUser; +///性别 +@property (nonatomic,assign) GenderType gender; +///头像 +@property (nonatomic,copy) NSString *avatar; +///年龄 +@property (nonatomic,assign) int age; +///内容 +@property (nonatomic,strong) NSString *content; +///喜欢的次数 +@property (nonatomic,copy) NSString *likeCount; +///我是否已经点赞 +@property (nonatomic, assign) BOOL isLike; +///评论的次数 +@property (nonatomic,copy) NSString *commentCount; +//发布时间 +@property (nonatomic,copy) NSString *publishTime; +///等级 +@property (nonatomic,strong) NSString *experLevelPic; +///魅力等级 +@property (nonatomic,strong) NSString *charmLevelPic; +///是否置顶 +@property (nonatomic,assign) BOOL squareTop; +///贵族信息 +@property (nonatomic, strong) UserVipInfoVo *userVipInfoVO; +///发布的内容 +@property (nonatomic,copy) NSArray *dynamicResList; +///头饰url地址 +@property (nonatomic,copy) NSString *headwearPic; +///头饰url地址 +@property (nonatomic,copy) NSString *headwearEffect; +///是否在直播中 +@property (nonatomic,copy) NSString *inRoomUid; +///显示的标签 +@property (nonatomic,copy) NSArray *labelList; +///铭牌名称 +@property (nonatomic, copy) NSString *nameplateWord; +///铭牌图片 +@property (nonatomic, copy) NSString *nameplatePic; +///话题id +@property (nonatomic, assign) long worldId; +///话题名字 +@property (nonatomic, copy) NSString *worldName; +///动态的id +@property (nonatomic,copy) NSString *dynamicId; +///是否是折叠起来的 +@property (nonatomic,assign) BOOL isFold; +///cell的高度 +@property (nonatomic,assign) CGFloat rowHeight; +///图片的高度 +@property (nonatomic,assign) CGFloat picHeight; +///文本内容的高度 +@property (nonatomic,assign) CGFloat contentHeight; +///显示的内容的富文本 +@property (nonatomic,strong) NSMutableAttributedString *contentAttribute; +///收起的 +@property (nonatomic,strong, nullable) NSMutableAttributedString *foldAttribute; +// 文本行数 +@property (nonatomic, assign) NSInteger numberOfText; +@end + +@interface MonentsPicInfoModel : NSObject +///图片的地址 +@property (nonatomic,copy) NSString * resUrl; +///格式 +@property (nonatomic,copy) NSString *format; +///宽度 +@property (nonatomic,assign) CGFloat width; +///高度 +@property (nonatomic,assign) CGFloat height; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Model/MonentsInfoModel.m b/YuMi/Modules/YMMonents/Model/MonentsInfoModel.m new file mode 100644 index 00000000..0fd0bf7b --- /dev/null +++ b/YuMi/Modules/YMMonents/Model/MonentsInfoModel.m @@ -0,0 +1,28 @@ +// +// MonentsInfoModel.m +// YUMI +// +// Created by YUMI on 2022/5/11. +// + +#import "MonentsInfoModel.h" +#import "NSString+Utils.h" + +@implementation MonentsInfoModel +- (instancetype)init { + if (self = [super init]) { + self.isFold = YES; + } + return self; +} + ++ (NSDictionary *)objectClassInArray { + return @{@"dynamicResList":MonentsPicInfoModel.class}; +} +@end + + +@implementation MonentsPicInfoModel + + +@end diff --git a/YuMi/Modules/YMMonents/Model/MonentsInteractiveModel.h b/YuMi/Modules/YMMonents/Model/MonentsInteractiveModel.h new file mode 100644 index 00000000..f36b7db8 --- /dev/null +++ b/YuMi/Modules/YMMonents/Model/MonentsInteractiveModel.h @@ -0,0 +1,65 @@ +// +// MonentsInteractiveModel.h +// YUMI +// +// Created by YUMI on 2022/5/19. +// + +#import +#import "MonentsInfoModel.h" +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, MonentsInteractiveActionType) { + ///评论 + MonentsInteractiveActionType_Comment = 1, + ///回复 + MonentsInteractiveActionType_Reply, + ///点赞 + MonentsInteractiveActionType_Like, + ///分享 + MonentsInteractiveActionType_Share +}; + +@interface MonentsInteractiveModel : NSObject +///msgType为2时为评论id +@property (nonatomic,assign) NSInteger targetId; +///类型 0:纯文本,2图片, +@property (nonatomic,assign) MonentsContentType type; +///动态内容 +@property (nonatomic,copy) NSString *content; +///性别 +@property (nonatomic,assign) GenderType gender; +///年龄 +@property (nonatomic,assign) NSInteger age; +///动态id +@property (nonatomic,copy) NSString *dynamicId; +///消息id +@property (nonatomic,copy) NSString *msgId; +///用户的uid +@property (nonatomic,assign) NSInteger uid; +///动作类型,1-评论,2-回复,3-点赞,4-分享 +@property (nonatomic,assign) MonentsInteractiveActionType actionType; +///消息,如"赞了你的动态" +@property (nonatomic,copy) NSString *message; +///类型,1-动态,2-评论(回复也算评论) +@property (nonatomic,assign) NSInteger msgType; +///昵称 +@property (nonatomic,copy) NSString *nick; +///头像 +@property (nonatomic,copy) NSString *avatar; +///目标对象uid +@property (nonatomic,copy) NSString *targetUid; +///发布时间 +@property (nonatomic,copy) NSString *publishTime; +///动态发布者uid +@property (nonatomic,copy) NSString *dynamicUid; +///话题id +@property (nonatomic,copy) NSString *worldId; +///话题的名称 +@property (nonatomic,copy) NSString *worldName; +///动态的图片 +@property (nonatomic,strong) MonentsPicInfoModel *dynamicRes; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Model/MonentsInteractiveModel.m b/YuMi/Modules/YMMonents/Model/MonentsInteractiveModel.m new file mode 100644 index 00000000..e7e86ea8 --- /dev/null +++ b/YuMi/Modules/YMMonents/Model/MonentsInteractiveModel.m @@ -0,0 +1,12 @@ +// +// MonentsInteractiveModel.m +// YUMI +// +// Created by YUMI on 2022/5/19. +// + +#import "MonentsInteractiveModel.h" + +@implementation MonentsInteractiveModel + +@end diff --git a/YuMi/Modules/YMMonents/Model/MonentsListInfoModel.h b/YuMi/Modules/YMMonents/Model/MonentsListInfoModel.h new file mode 100644 index 00000000..25608c63 --- /dev/null +++ b/YuMi/Modules/YMMonents/Model/MonentsListInfoModel.h @@ -0,0 +1,19 @@ +// +// MonentsListInfoModel.h +// YUMI +// +// Created by YUMI on 2022/5/18. +// + +#import +#import "MonentsInfoModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface MonentsListInfoModel : NSObject +///列表数据 +@property (nonatomic,strong) NSArray *dynamicList; +///下一个动态的id +@property (nonatomic,copy) NSString *nextDynamicId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Model/MonentsListInfoModel.m b/YuMi/Modules/YMMonents/Model/MonentsListInfoModel.m new file mode 100644 index 00000000..5b02a853 --- /dev/null +++ b/YuMi/Modules/YMMonents/Model/MonentsListInfoModel.m @@ -0,0 +1,16 @@ +// +// MonentsListInfoModel.m +// YUMI +// +// Created by YUMI on 2022/5/18. +// + +#import "MonentsListInfoModel.h" + +@implementation MonentsListInfoModel + ++ (NSDictionary *)objectClassInArray { + return @{@"dynamicList":[MonentsInfoModel class]}; +} + +@end diff --git a/YuMi/Modules/YMMonents/Model/MonentsPicResInfo.h b/YuMi/Modules/YMMonents/Model/MonentsPicResInfo.h new file mode 100644 index 00000000..5d4c8988 --- /dev/null +++ b/YuMi/Modules/YMMonents/Model/MonentsPicResInfo.h @@ -0,0 +1,25 @@ +// +// MonentsPicResInfo.h +// YUMI +// +// Created by YUMI on 2022/8/16. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface MonentsPicResInfo : NSObject +// 图片key +@property (nonatomic, copy) NSString *key; +// 图片url +@property (nonatomic, copy) NSString *path; +// 图片类型 gif, png, jpeg +@property (nonatomic, copy) NSString *format; +// 宽 +@property (nonatomic, assign) CGFloat w; +// 高 +@property (nonatomic, assign) CGFloat h; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Model/MonentsPicResInfo.m b/YuMi/Modules/YMMonents/Model/MonentsPicResInfo.m new file mode 100644 index 00000000..806c4ca8 --- /dev/null +++ b/YuMi/Modules/YMMonents/Model/MonentsPicResInfo.m @@ -0,0 +1,12 @@ +// +// MonentsPicResInfo.m +// YUMI +// +// Created by YUMI on 2022/8/16. +// + +#import "MonentsPicResInfo.h" + +@implementation MonentsPicResInfo + +@end diff --git a/YuMi/Modules/YMMonents/Model/MonentsTopicModel.h b/YuMi/Modules/YMMonents/Model/MonentsTopicModel.h new file mode 100644 index 00000000..2e194061 --- /dev/null +++ b/YuMi/Modules/YMMonents/Model/MonentsTopicModel.h @@ -0,0 +1,30 @@ +// +// MonentsTopicModel.h +// YUMI +// +// Created by YUMI on 2022/5/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface MonentsTopicModel : NSObject +///创建人id +@property (nonatomic, copy) NSString *ownerUid; +///名称 +@property (nonatomic, copy) NSString *name; +//convert from id +@property (nonatomic, copy) NSString *tId; +///封面 +@property (nonatomic, copy) NSString *icon; +///描述 convert from description +@property (nonatomic, copy) NSString *desc; +///id +@property (nonatomic, copy) NSString *worldId; +///名称 +@property (nonatomic, copy) NSString *worldName; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Model/MonentsTopicModel.m b/YuMi/Modules/YMMonents/Model/MonentsTopicModel.m new file mode 100644 index 00000000..33e6ad24 --- /dev/null +++ b/YuMi/Modules/YMMonents/Model/MonentsTopicModel.m @@ -0,0 +1,16 @@ +// +// MonentsTopicModel.m +// YUMI +// +// Created by YUMI on 2022/5/18. +// + +#import "MonentsTopicModel.h" + +@implementation MonentsTopicModel + ++ (NSDictionary *)replacedKeyFromPropertyName { + return @{@"tId":@"id", @"desc":@"description"}; +} + +@end diff --git a/YuMi/Modules/YMMonents/Model/MonentsUnReadModel.h b/YuMi/Modules/YMMonents/Model/MonentsUnReadModel.h new file mode 100644 index 00000000..79680e5b --- /dev/null +++ b/YuMi/Modules/YMMonents/Model/MonentsUnReadModel.h @@ -0,0 +1,25 @@ +// +// MonentsUnReadModel.h +// YUMI +// +// Created by YUMI on 2022/5/19. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface MonentsUnReadModel : NSObject +/// 总计未读消息数 +@property (nonatomic, assign) NSInteger total; +/// 评论未读消息数 +@property (nonatomic, assign) NSInteger comment; +/// 分享未读消息数 +@property (nonatomic, assign) NSInteger share; +/// 回复未读消息数 +@property (nonatomic, assign) NSInteger reply; +/// 点赞未读消息数 +@property (nonatomic, assign) NSInteger like; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Model/MonentsUnReadModel.m b/YuMi/Modules/YMMonents/Model/MonentsUnReadModel.m new file mode 100644 index 00000000..f4202040 --- /dev/null +++ b/YuMi/Modules/YMMonents/Model/MonentsUnReadModel.m @@ -0,0 +1,12 @@ +// +// MonentsUnReadModel.m +// YUMI +// +// Created by YUMI on 2022/5/19. +// + +#import "MonentsUnReadModel.h" + +@implementation MonentsUnReadModel + +@end diff --git a/YuMi/Modules/YMMonents/Model/SeparationsAbstractMatrix.h b/YuMi/Modules/YMMonents/Model/SeparationsAbstractMatrix.h deleted file mode 100644 index 54347136..00000000 --- a/YuMi/Modules/YMMonents/Model/SeparationsAbstractMatrix.h +++ /dev/null @@ -1,64 +0,0 @@ -// -// SeparationsAbstractMatrix.h -// YUMI -// -// Created by YUMI on 2022/5/11. -// - -#import -#import "YUMINNNN.h" -#import "ConsumerVipAbstractVo.h" -NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSInteger, MonentsContentGenre) { - - MonentsContentGenre_Text = 0, - - MonentsContentGenre_Picture = 2 -}; -@class SeparationsPicAbstractMatrix; -@interface SeparationsAbstractMatrix : NSObject -@property (nonatomic,assign) MonentsContentGenre type; -@property (nonatomic,copy) NSString *uid; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,assign) NSInteger defUser; -@property (nonatomic,assign) BOOL newUser; -@property (nonatomic,assign) GenderGenre gender; -@property (nonatomic,copy) NSString *avatar; -@property (nonatomic,assign) int age; -@property (nonatomic,strong) NSString *content; -@property (nonatomic,copy) NSString *likeCount; -@property (nonatomic, assign) BOOL isLike; -@property (nonatomic,copy) NSString *commentCount; -@property (nonatomic,copy) NSString *publishTime; -@property (nonatomic,strong) NSString *experLevelPic; -@property (nonatomic,strong) NSString *charmLevelPic; -@property (nonatomic,assign) BOOL squareTop; -@property (nonatomic, strong) ConsumerVipAbstractVo *userVipInfoVO; -@property (nonatomic,copy) NSArray *dynamicResList; -@property (nonatomic,copy) NSString *headwearPic; -@property (nonatomic,copy) NSString *headwearEffect; -@property (nonatomic,copy) NSString *inRoomUid; -@property (nonatomic,copy) NSArray *labelList; -@property (nonatomic, copy) NSString *nameplateWord; -@property (nonatomic, copy) NSString *nameplatePic; -@property (nonatomic, assign) long worldId; -@property (nonatomic, copy) NSString *worldName; -@property (nonatomic,copy) NSString *dynamicId; -@property (nonatomic,assign) BOOL isFold; -@property (nonatomic,assign) CGFloat rowHeight; -@property (nonatomic,assign) CGFloat picHeight; -@property (nonatomic,assign) CGFloat contentHeight; -@property (nonatomic,strong) NSMutableAttributedString *contentAttribute; -@property (nonatomic,strong, nullable) NSMutableAttributedString *foldAttribute; -@property (nonatomic, assign) NSInteger numberOfText; -@end - -@interface SeparationsPicAbstractMatrix : NSObject -@property (nonatomic,copy) NSString * resUrl; -@property (nonatomic,copy) NSString *format; -@property (nonatomic,assign) CGFloat width; -@property (nonatomic,assign) CGFloat height; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Model/SeparationsAbstractMatrix.m b/YuMi/Modules/YMMonents/Model/SeparationsAbstractMatrix.m deleted file mode 100644 index ddebd6b4..00000000 --- a/YuMi/Modules/YMMonents/Model/SeparationsAbstractMatrix.m +++ /dev/null @@ -1,28 +0,0 @@ -// -// SeparationsAbstractMatrix.m -// YUMI -// -// Created by YUMI on 2022/5/11. -// - -#import "SeparationsAbstractMatrix.h" -#import "NSString+Utils.h" - -@implementation SeparationsAbstractMatrix -- (instancetype)init { - if (self = [super init]) { - self.isFold = YES; - } - return self; -} - -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{@"dynamicResList":SeparationsPicAbstractMatrix.class}; -} -@end - - -@implementation SeparationsPicAbstractMatrix - - -@end diff --git a/YuMi/Modules/YMMonents/Model/SeparationsCoactiveMatrix.h b/YuMi/Modules/YMMonents/Model/SeparationsCoactiveMatrix.h deleted file mode 100644 index 52828ae9..00000000 --- a/YuMi/Modules/YMMonents/Model/SeparationsCoactiveMatrix.h +++ /dev/null @@ -1,46 +0,0 @@ -// -// SeparationsCoactiveMatrix.h -// YUMI -// -// Created by YUMI on 2022/5/19. -// - -#import -#import "SeparationsAbstractMatrix.h" -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, MonentsInteractiveActionGenre) { - - MonentsInteractiveActionGenre_Comment = 1, - - MonentsInteractiveActionGenre_Reply, - - MonentsInteractiveActionGenre_Like, - - MonentsInteractiveActionGenre_Share -}; - -@interface SeparationsCoactiveMatrix : NSObject -@property (nonatomic,assign) NSInteger targetId; -@property (nonatomic,assign) MonentsContentGenre type; -@property (nonatomic,copy) NSString *content; -@property (nonatomic,assign) GenderGenre gender; -@property (nonatomic,assign) NSInteger age; -@property (nonatomic,copy) NSString *dynamicId; -@property (nonatomic,copy) NSString *msgId; -@property (nonatomic,assign) NSInteger uid; -@property (nonatomic,assign) MonentsInteractiveActionGenre actionType; -@property (nonatomic,copy) NSString *message; -@property (nonatomic,assign) NSInteger msgType; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,copy) NSString *avatar; -@property (nonatomic,copy) NSString *targetUid; -@property (nonatomic,copy) NSString *publishTime; -@property (nonatomic,copy) NSString *dynamicUid; -@property (nonatomic,copy) NSString *worldId; -@property (nonatomic,copy) NSString *worldName; -@property (nonatomic,strong) SeparationsPicAbstractMatrix *dynamicRes; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Model/SeparationsCoactiveMatrix.m b/YuMi/Modules/YMMonents/Model/SeparationsCoactiveMatrix.m deleted file mode 100644 index 780d73bf..00000000 --- a/YuMi/Modules/YMMonents/Model/SeparationsCoactiveMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// SeparationsCoactiveMatrix.m -// YUMI -// -// Created by YUMI on 2022/5/19. -// - -#import "SeparationsCoactiveMatrix.h" - -@implementation SeparationsCoactiveMatrix - -@end diff --git a/YuMi/Modules/YMMonents/Model/SeparationsJudgementMatrix.h b/YuMi/Modules/YMMonents/Model/SeparationsJudgementMatrix.h deleted file mode 100644 index 785e9986..00000000 --- a/YuMi/Modules/YMMonents/Model/SeparationsJudgementMatrix.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// SeparationsJudgementMatrix.h -// YUMI -// -// Created by YUMI on 2022/6/22. -// - -#import -#import "SeparationsJudgementReplicationMatrix.h" -NS_ASSUME_NONNULL_BEGIN -@interface SeparationsJudgementMatrix : NSObject -@property (nonatomic,assign) BOOL isReloadHeight; -@property (nonatomic,assign) CGFloat commentRowHeight; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,copy) NSString *avatar; -@property (nonatomic,copy) NSString *uid; -@property (nonatomic,copy) NSString *content; -@property (nonatomic, copy) NSString *publishTime; -@property (nonatomic, copy) NSString *commentId; -@property (nonatomic,strong) SeparationsJudgementReplicationMatrix *replyInfo; -@property (nonatomic, assign) BOOL landLordFlag; -@end - - -@interface SeparationsJudgementStatementMatrix : NSObject -@property (nonatomic,strong) NSArray *commentList; -@property (nonatomic,copy) NSString *nextTimestamp; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Model/SeparationsJudgementMatrix.m b/YuMi/Modules/YMMonents/Model/SeparationsJudgementMatrix.m deleted file mode 100644 index ebc20c4f..00000000 --- a/YuMi/Modules/YMMonents/Model/SeparationsJudgementMatrix.m +++ /dev/null @@ -1,22 +0,0 @@ -// -// SeparationsJudgementMatrix.m -// YUMI -// -// Created by YUMI on 2022/6/22. -// - -#import "SeparationsJudgementMatrix.h" - -@implementation SeparationsJudgementMatrix - - -@end - - -@implementation SeparationsJudgementStatementMatrix - -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{@"commentList": SeparationsJudgementMatrix.class}; -} - -@end diff --git a/YuMi/Modules/YMMonents/Model/SeparationsJudgementReplicationMatrix.h b/YuMi/Modules/YMMonents/Model/SeparationsJudgementReplicationMatrix.h deleted file mode 100644 index 19dfd118..00000000 --- a/YuMi/Modules/YMMonents/Model/SeparationsJudgementReplicationMatrix.h +++ /dev/null @@ -1,37 +0,0 @@ -// -// SeparationsJudgementReplicationMatrix.h -// YUMI -// -// Created by YUMI on 2022/6/22. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class SeparationsReplicationMatrix; -@interface SeparationsJudgementReplicationMatrix : NSObject -@property (nonatomic, strong) NSMutableArray *replyList; -@property (nonatomic, assign) NSInteger leftCount; -@property (nonatomic, copy) NSString *nextTimestamp; -@end - - -@interface SeparationsReplicationMatrix : NSObject -@property (nonatomic,assign) CGFloat replyRowHeight; -@property (nonatomic,copy) NSString *avatar; -@property (nonatomic,copy) NSString *uid; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,copy) NSString *toCommentId; -@property (nonatomic,copy) NSString *toUid; -@property (nonatomic,copy) NSString *toNick; -@property (nonatomic,copy) NSString *content; -@property (nonatomic,copy) NSString *publishTime; -@property (nonatomic,assign) BOOL landLordFlag; -@property (nonatomic,copy) NSString *replyId; -@property (nonatomic,strong) NSAttributedString *contentAttribute; - -- (void)produceStowardsisfperformanceIdiosyncracy; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Model/SeparationsJudgementReplicationMatrix.m b/YuMi/Modules/YMMonents/Model/SeparationsJudgementReplicationMatrix.m deleted file mode 100644 index 462b7230..00000000 --- a/YuMi/Modules/YMMonents/Model/SeparationsJudgementReplicationMatrix.m +++ /dev/null @@ -1,34 +0,0 @@ -// -// SeparationsJudgementReplicationMatrix.m -// YUMI -// -// Created by YUMI on 2022/6/22. -// - -#import "SeparationsJudgementReplicationMatrix.h" -#import "DJDKMIMOMColor.h" -#import "MHTSpiritFacilitater.h" - -@implementation SeparationsJudgementReplicationMatrix -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{@"replyList": SeparationsReplicationMatrix.class}; -} -@end - - -@implementation SeparationsReplicationMatrix -- (void)produceStowardsisfperformanceIdiosyncracy { - if (self.contentAttribute == nil) { - MHTSpiritFacilitater *faceManager = [MHTSpiritFacilitater partowardsiciptowardsiondSenintrtowardsemporalntFacilittowardseer]; - NSString * toNick = [NSString stringWithFormat:@"@%@", _toNick]; - NSString *title = [NSString stringWithFormat:@"%@%@",toNick, _content.length > 0 ? _content : @""]; - NSMutableAttributedString * attribute = [faceManager towardstributedBWSttrByEssay:title font:[UIFont systemFontOfSize:15]]; - if ([attribute.string containsString:toNick]) { - NSRange range = [attribute.string rangeOfString:toNick]; - [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor aplictowardsionMainPrettify] range:range]; - } - self.contentAttribute = attribute; - } -} - -@end diff --git a/YuMi/Modules/YMMonents/Model/SeparationsMotifMatrix.h b/YuMi/Modules/YMMonents/Model/SeparationsMotifMatrix.h deleted file mode 100644 index cadd2f68..00000000 --- a/YuMi/Modules/YMMonents/Model/SeparationsMotifMatrix.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// SeparationsMotifMatrix.h -// YUMI -// -// Created by YUMI on 2022/5/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface SeparationsMotifMatrix : NSObject -@property (nonatomic, copy) NSString *ownerUid; -@property (nonatomic, copy) NSString *name; -@property (nonatomic, copy) NSString *tId; -@property (nonatomic, copy) NSString *icon; -@property (nonatomic, copy) NSString *desc; -@property (nonatomic, copy) NSString *worldId; -@property (nonatomic, copy) NSString *worldName; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Model/SeparationsMotifMatrix.m b/YuMi/Modules/YMMonents/Model/SeparationsMotifMatrix.m deleted file mode 100644 index 8f40a41b..00000000 --- a/YuMi/Modules/YMMonents/Model/SeparationsMotifMatrix.m +++ /dev/null @@ -1,16 +0,0 @@ -// -// SeparationsMotifMatrix.m -// YUMI -// -// Created by YUMI on 2022/5/18. -// - -#import "SeparationsMotifMatrix.h" - -@implementation SeparationsMotifMatrix - -+ (NSDictionary *)replacedDigitalByvirtueofMaintainertyConstitute { - return @{@"tId":@"id", @"desc":@"description"}; -} - -@end diff --git a/YuMi/Modules/YMMonents/Model/SeparationsPicResAbstract.h b/YuMi/Modules/YMMonents/Model/SeparationsPicResAbstract.h deleted file mode 100644 index ff364897..00000000 --- a/YuMi/Modules/YMMonents/Model/SeparationsPicResAbstract.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// SeparationsPicResAbstract.h -// YUMI -// -// Created by YUMI on 2022/8/16. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface SeparationsPicResAbstract : NSObject -@property (nonatomic, copy) NSString *key; -@property (nonatomic, copy) NSString *path; -@property (nonatomic, copy) NSString *format; -@property (nonatomic, assign) CGFloat w; -@property (nonatomic, assign) CGFloat h; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Model/SeparationsPicResAbstract.m b/YuMi/Modules/YMMonents/Model/SeparationsPicResAbstract.m deleted file mode 100644 index 1320ed02..00000000 --- a/YuMi/Modules/YMMonents/Model/SeparationsPicResAbstract.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// SeparationsPicResAbstract.m -// YUMI -// -// Created by YUMI on 2022/8/16. -// - -#import "SeparationsPicResAbstract.h" - -@implementation SeparationsPicResAbstract - -@end diff --git a/YuMi/Modules/YMMonents/Model/SeparationsStatementAbstractMatrix.h b/YuMi/Modules/YMMonents/Model/SeparationsStatementAbstractMatrix.h deleted file mode 100644 index 91741882..00000000 --- a/YuMi/Modules/YMMonents/Model/SeparationsStatementAbstractMatrix.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// SeparationsStatementAbstractMatrix.h -// YUMI -// -// Created by YUMI on 2022/5/18. -// - -#import -#import "SeparationsAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@interface SeparationsStatementAbstractMatrix : NSObject -@property (nonatomic,strong) NSArray *dynamicList; -@property (nonatomic,copy) NSString *nextDynamicId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Model/SeparationsStatementAbstractMatrix.m b/YuMi/Modules/YMMonents/Model/SeparationsStatementAbstractMatrix.m deleted file mode 100644 index 7eef48ca..00000000 --- a/YuMi/Modules/YMMonents/Model/SeparationsStatementAbstractMatrix.m +++ /dev/null @@ -1,16 +0,0 @@ -// -// SeparationsStatementAbstractMatrix.m -// YUMI -// -// Created by YUMI on 2022/5/18. -// - -#import "SeparationsStatementAbstractMatrix.h" - -@implementation SeparationsStatementAbstractMatrix - -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{@"dynamicList":[SeparationsAbstractMatrix class]}; -} - -@end diff --git a/YuMi/Modules/YMMonents/Model/SeparationsUnReadMatrix.h b/YuMi/Modules/YMMonents/Model/SeparationsUnReadMatrix.h deleted file mode 100644 index 0792a0bf..00000000 --- a/YuMi/Modules/YMMonents/Model/SeparationsUnReadMatrix.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// SeparationsUnReadMatrix.h -// YUMI -// -// Created by YUMI on 2022/5/19. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface SeparationsUnReadMatrix : NSObject -@property (nonatomic, assign) NSInteger total; -@property (nonatomic, assign) NSInteger comment; -@property (nonatomic, assign) NSInteger share; -@property (nonatomic, assign) NSInteger reply; -@property (nonatomic, assign) NSInteger like; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Model/SeparationsUnReadMatrix.m b/YuMi/Modules/YMMonents/Model/SeparationsUnReadMatrix.m deleted file mode 100644 index ee8ccd9c..00000000 --- a/YuMi/Modules/YMMonents/Model/SeparationsUnReadMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// SeparationsUnReadMatrix.m -// YUMI -// -// Created by YUMI on 2022/5/19. -// - -#import "SeparationsUnReadMatrix.h" - -@implementation SeparationsUnReadMatrix - -@end diff --git a/YuMi/Modules/YMMonents/Presenter/XPMonentDetailPresenter.h b/YuMi/Modules/YMMonents/Presenter/XPMonentDetailPresenter.h new file mode 100644 index 00000000..290c1b4f --- /dev/null +++ b/YuMi/Modules/YMMonents/Presenter/XPMonentDetailPresenter.h @@ -0,0 +1,48 @@ +// +// YMMonentDetailPresenter.h +// YUMI +// +// Created by YUMI on 2022/6/23. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMonentDetailPresenter : BaseMvpPresenter +/// 获取动态相亲 +/// @param dynamicId 动态ID +- (void)getMonentsDetail:(NSString *)dynamicId; + +- (void)getMonentsCommentList:(NSString *)dynamicId timestamp:(NSString *)timestamp status:(int)state; + +/// 获取评论的回复列表 +/// @param dynamicId 动态id +/// @param commentId 评论id +/// @param timestamp 最后一条评论的时间戳 +- (void)getMonentsCommentReplyList:(NSString *)dynamicId commentId:(NSString *)commentId timestamp:(NSString *)timestamp; + +/// 动态点赞 +/// @param dynamicId 动态id +/// @param status yes 点赞 NO 取消 +/// @param likedUid 点赞人的uid +/// @param worldId 话题的id +- (void)likeMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId; + +/// 删除动态 +/// @param dynamicId 动态id +/// @param worldId 话题id +- (void)deleteMonents:(NSString *)dynamicId worldId:(NSString *)worldId; +/// 评论回复 +/// @param commonId 评论的id +/// @param dynamicId 动态的id +/// @param content 评论的内容 +- (void)replayCommon:(NSString *)commonId dynamicId:(NSString *)dynamicId content:(NSString *)content; + +/// 评论动态 +/// @param dynamicId 动态的id +/// @param content 评论的内容 +- (void)commontMonents:(NSString *)dynamicId content:(NSString *)content; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Presenter/XPMonentDetailPresenter.m b/YuMi/Modules/YMMonents/Presenter/XPMonentDetailPresenter.m new file mode 100644 index 00000000..bd39d626 --- /dev/null +++ b/YuMi/Modules/YMMonents/Presenter/XPMonentDetailPresenter.m @@ -0,0 +1,100 @@ +// +// YMMonentDetailPresenter.m +// YUMI +// +// Created by YUMI on 2022/6/23. +// + +#import "XPMonentDetailPresenter.h" +#import "Api+Monents.h" +#import "AccountInfoStorage.h" +#import "XPMonentsDetailProtocol.h" +#import "MonentsInfoModel.h" +#import "MonentsCommentModel.h" +#import "MonentsCommentReplyModel.h" +@implementation XPMonentDetailPresenter + +/// 获取动态相亲 +/// @param dynamicId 动态ID +- (void)getMonentsDetail:(NSString *)dynamicId { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api monentsDetail:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + MonentsInfoModel * monentsInfo = [MonentsInfoModel modelWithDictionary:data.data]; + [[self getView] getMonentsDetailSuccess:monentsInfo]; + } showLoading:YES] dynamicId:dynamicId worldId:@"" uid:uid]; +} + + +/// 获取评论列表 +/// @param dynamicId 动态id +/// @param timestamp 上一条的时间戳 +/// @param state 状态 +- (void)getMonentsCommentList:(NSString *)dynamicId timestamp:(NSString *)timestamp status:(int)state{ + NSString * uid = [AccountInfoStorage instance].getUid; + [Api monentsCommentList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + MonentsCommentListModel * info = [MonentsCommentListModel modelWithDictionary:data.data]; + [[self getView] getMonentsCommentListSuccess:info state:state]; + }] dynamicId:dynamicId uid:uid pageSize:@"10" timestamp:timestamp]; +} + + +/// 获取评论的回复列表 +/// @param dynamicId 动态id +/// @param commentId 评论id +/// @param timestamp 最后一条评论的时间戳 +- (void)getMonentsCommentReplyList:(NSString *)dynamicId commentId:(NSString *)commentId timestamp:(NSString *)timestamp { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api monentsCommentReplyList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + MonentsCommentReplyModel * replyInfo = [MonentsCommentReplyModel modelWithDictionary:data.data]; + [[self getView] getMonentsCommentReplyListSuccess:replyInfo commentId:commentId]; + }] dynamicId:dynamicId uid:uid pageSize:@"5" commentId:commentId timestamp:timestamp]; +} + +/// 动态点赞 +/// @param dynamicId 动态id +/// @param status yes 点赞 NO 取消 +/// @param likedUid 点赞人的uid +/// @param worldId 话题的id +- (void)likeMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * statusStr = status ? @"1" : @"0"; + [Api monentsLike:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] likeMonentsSuccess:dynamicId status:status]; + } showLoading:YES] dynamicId:dynamicId uid:uid status:statusStr likedUid:likedUid worldId:worldId]; +} + +/// 删除动态 +/// @param dynamicId 动态id +/// @param worldId 话题id +- (void)deleteMonents:(NSString *)dynamicId worldId:(NSString *)worldId { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api monentsDelete:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + [[self getView] deleteMonentsSuccess:dynamicId]; + } uid:uid dynamicId:dynamicId worldId:worldId]; +} + + +/// 评论动态 +/// @param dynamicId 动态的id +/// @param content 评论的内容 +- (void)commontMonents:(NSString *)dynamicId content:(NSString *)content { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api monentDetailCommon:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] commonMonentsSuccess]; + } showLoading:YES] uid:uid dynamicId:dynamicId content:content]; +} + +/// 评论回复 +/// @param commonId 评论的id +/// @param dynamicId 动态的id +/// @param content 评论的内容 +- (void)replayCommon:(NSString *)commonId dynamicId:(NSString *)dynamicId content:(NSString *)content { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api replyMonentsDetailCommon:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] replyMonentsSuccess]; + }] uid:uid dynamicId:dynamicId content:content commentId:commonId]; +} + + + +@end diff --git a/YuMi/Modules/YMMonents/Presenter/XPMonentMinePresenter.h b/YuMi/Modules/YMMonents/Presenter/XPMonentMinePresenter.h new file mode 100644 index 00000000..9f507818 --- /dev/null +++ b/YuMi/Modules/YMMonents/Presenter/XPMonentMinePresenter.h @@ -0,0 +1,26 @@ +// +// YMMonentMinePresenter.h +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMonentMinePresenter : BaseMvpPresenter +/// 动态点赞 +/// @param dynamicId 动态id +/// @param status yes 点赞 NO 取消 +/// @param likedUid 点赞人的uid +/// @param worldId 话题的id +- (void)likeMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId; + +/// 删除动态 +/// @param dynamicId 动态id +/// @param worldId 话题id +- (void)deleteMonents:(NSString *)dynamicId worldId:(NSString *)worldId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Presenter/XPMonentMinePresenter.m b/YuMi/Modules/YMMonents/Presenter/XPMonentMinePresenter.m new file mode 100644 index 00000000..79a740a2 --- /dev/null +++ b/YuMi/Modules/YMMonents/Presenter/XPMonentMinePresenter.m @@ -0,0 +1,38 @@ +// +// YMMonentMinePresenter.m +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import "XPMonentMinePresenter.h" +#import "Api+Monents.h" +#import "XPMonentsMineProtocol.h" +#import "AccountInfoStorage.h" + +@implementation XPMonentMinePresenter + + +/// 动态点赞 +/// @param dynamicId 动态id +/// @param status yes 点赞 NO 取消 +/// @param likedUid 点赞人的uid +/// @param worldId 话题的id +- (void)likeMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * statusStr = status ? @"1" : @"0"; + [Api monentsLike:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] likeMonentsSuccess:dynamicId status:status]; + } showLoading:YES] dynamicId:dynamicId uid:uid status:statusStr likedUid:likedUid worldId:worldId]; +} + +/// 删除动态 +/// @param dynamicId 动态id +/// @param worldId 话题id +- (void)deleteMonents:(NSString *)dynamicId worldId:(NSString *)worldId { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api monentsDelete:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + [[self getView] deleteMonentsSuccess:dynamicId]; + } uid:uid dynamicId:dynamicId worldId:worldId]; +} +@end diff --git a/YuMi/Modules/YMMonents/Presenter/XPMonentsAttentionPresenter.h b/YuMi/Modules/YMMonents/Presenter/XPMonentsAttentionPresenter.h new file mode 100644 index 00000000..234a3931 --- /dev/null +++ b/YuMi/Modules/YMMonents/Presenter/XPMonentsAttentionPresenter.h @@ -0,0 +1,34 @@ +// +// YMMonentsAttentionPresenter.h +// YUMI +// +// Created by YUMI on 2022/5/18. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMonentsAttentionPresenter : BaseMvpPresenter + +/// 获取朋友圈动态推荐列表 +/// @param dynamicId 当前的页数 +/// @param pageSize 一页的个数 +/// @param state 状态 +- (void)getMonentsAttentionListPageSize:(NSInteger)pageSize dynamicId:(NSString *)dynamicId state:(int)state; + +/// 动态点赞 +/// @param dynamicId 动态id +/// @param status yes 点赞 NO 取消 +/// @param likedUid 点赞人的uid +/// @param worldId 话题的id +- (void)likeMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId; + +/// 删除动态 +/// @param dynamicId 动态id +/// @param worldId 话题id +- (void)deleteMonents:(NSString *)dynamicId worldId:(NSString *)worldId; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Presenter/XPMonentsAttentionPresenter.m b/YuMi/Modules/YMMonents/Presenter/XPMonentsAttentionPresenter.m new file mode 100644 index 00000000..d78b88a6 --- /dev/null +++ b/YuMi/Modules/YMMonents/Presenter/XPMonentsAttentionPresenter.m @@ -0,0 +1,56 @@ +// +// YMMonentsAttentionPresenter.m +// YUMI +// +// Created by YUMI on 2022/5/18. +// + +#import "XPMonentsAttentionPresenter.h" +#import "Api+Monents.h" +#import "MonentsListInfoModel.h" +#import "XPMonentsAttentionProtocol.h" +#import "AccountInfoStorage.h" +@implementation XPMonentsAttentionPresenter + +/// 获取朋友圈动态推荐列表 +/// @param dynamicId 当前的页数 +/// @param pageSize 一页的个数 +/// @param state 状态 +- (void)getMonentsAttentionListPageSize:(NSInteger)pageSize dynamicId:(NSString *)dynamicId state:(int)state { + if (dynamicId.integerValue <= 0) { + dynamicId = @""; + } + NSString * pageSizeStr = [NSString stringWithFormat:@"%ld", pageSize]; + [Api monentsFollowerList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + MonentsListInfoModel *listInfo = [MonentsListInfoModel modelWithDictionary:data.data]; + [[self getView] getMonentsAttentionListSuccess:listInfo state:state]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getMonentsAttentionListFail:msg state:state]; + } showLoading:YES] dynamicId:dynamicId pageSize:pageSizeStr types:@"0,2"]; +} + +/// 动态点赞 +/// @param dynamicId 动态id +/// @param status yes 点赞 NO 取消 +/// @param likedUid 点赞人的uid +/// @param worldId 话题的id +- (void)likeMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * statusStr = status ? @"1" : @"0"; + [Api monentsLike:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] likeMonentsSuccess:dynamicId status:status]; + } showLoading:YES] dynamicId:dynamicId uid:uid status:statusStr likedUid:likedUid worldId:worldId]; +} + +/// 删除动态 +/// @param dynamicId 动态id +/// @param worldId 话题id +- (void)deleteMonents:(NSString *)dynamicId worldId:(NSString *)worldId { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api monentsDelete:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + [[self getView] deleteMonentsSuccess:dynamicId]; + } uid:uid dynamicId:dynamicId worldId:worldId]; +} + + +@end diff --git a/YuMi/Modules/YMMonents/Presenter/XPMonentsInteractivePresenter.h b/YuMi/Modules/YMMonents/Presenter/XPMonentsInteractivePresenter.h new file mode 100644 index 00000000..a8fbfc67 --- /dev/null +++ b/YuMi/Modules/YMMonents/Presenter/XPMonentsInteractivePresenter.h @@ -0,0 +1,24 @@ +// +// YMMonentsInteractivePresenter.h +// YUMI +// +// Created by YUMI on 2022/5/18. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMonentsInteractivePresenter : BaseMvpPresenter + +/// 获取互动消息 +/// @param dynamicId 动态的id +/// @param pageSize 一页的个数 +/// @param state 状态 +- (void)getMonentsInteractiveList:(NSString *)dynamicId pageSize:(int)pageSize state:(int)state; + +///清空互动消息 +- (void)clearInteractiveMessage; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Presenter/XPMonentsInteractivePresenter.m b/YuMi/Modules/YMMonents/Presenter/XPMonentsInteractivePresenter.m new file mode 100644 index 00000000..07183055 --- /dev/null +++ b/YuMi/Modules/YMMonents/Presenter/XPMonentsInteractivePresenter.m @@ -0,0 +1,40 @@ +// +// YMMonentsInteractivePresenter.m +// YUMI +// +// Created by YUMI on 2022/5/18. +// + +#import "XPMonentsInteractivePresenter.h" +#import "Api+Monents.h" +#import "XPMonentsInteractiveProtocol.h" +#import "AccountInfoStorage.h" +#import "MonentsInteractiveModel.h" + +@implementation XPMonentsInteractivePresenter + + +/// 获取互动消息 +/// @param dynamicId 动态的id +/// @param pageSize 一页的个数 +/// @param state 状态 +- (void)getMonentsInteractiveList:(NSString *)dynamicId pageSize:(int)pageSize state:(int)state{ + NSString * pageSizeStr = [NSString stringWithFormat:@"%d", pageSize]; + NSString * uid = [AccountInfoStorage instance].getUid; + [Api monentsInteractiveList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [MonentsInteractiveModel modelsWithArray:data.data]; + [[self getView] getMonentsInteractiveListSueccess:array state:state]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getMonentsInteractiveListFail:msg state:state]; + }] dynamicId:dynamicId pageSize:pageSizeStr uid:uid]; +} + +///清空互动消息 +- (void)clearInteractiveMessage { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api monentsInteractiveClear:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] clearInteractiveMessageSuccess]; + } showLoading:YES] uid:uid]; +} + +@end diff --git a/YuMi/Modules/YMMonents/Presenter/XPMonentsLatestPresenter.h b/YuMi/Modules/YMMonents/Presenter/XPMonentsLatestPresenter.h new file mode 100644 index 00000000..187a49c7 --- /dev/null +++ b/YuMi/Modules/YMMonents/Presenter/XPMonentsLatestPresenter.h @@ -0,0 +1,33 @@ +// +// YMMonentsLatestPresenter.h +// YUMI +// +// Created by YUMI on 2022/5/18. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMonentsLatestPresenter : BaseMvpPresenter + +/// 获取朋友圈动态推荐列表 +/// @param dynamicId 当前的页数 +/// @param pageSize 一页的个数 +/// @param state 状态 +- (void)getMonentsLatestListPageSize:(NSInteger)pageSize dynamicId:(NSString *)dynamicId state:(int)state; + +/// 动态点赞 +/// @param dynamicId 动态id +/// @param status yes 点赞 NO 取消 +/// @param likedUid 点赞人的uid +/// @param worldId 话题的id +- (void)likeMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId; + +/// 删除动态 +/// @param dynamicId 动态id +/// @param worldId 话题id +- (void)deleteMonents:(NSString *)dynamicId worldId:(NSString *)worldId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Presenter/XPMonentsLatestPresenter.m b/YuMi/Modules/YMMonents/Presenter/XPMonentsLatestPresenter.m new file mode 100644 index 00000000..7adfa351 --- /dev/null +++ b/YuMi/Modules/YMMonents/Presenter/XPMonentsLatestPresenter.m @@ -0,0 +1,55 @@ +// +// YMMonentsLatestPresenter.m +// YUMI +// +// Created by YUMI on 2022/5/18. +// + +#import "XPMonentsLatestPresenter.h" +#import "Api+Monents.h" +#import "MonentsListInfoModel.h" +#import "XPMonentsLatestProtocol.h" +#import "AccountInfoStorage.h" +@implementation XPMonentsLatestPresenter + +/// 获取朋友圈动态推荐列表 +/// @param dynamicId 当前的页数 +/// @param pageSize 一页的个数 +/// @param state 状态 +- (void)getMonentsLatestListPageSize:(NSInteger)pageSize dynamicId:(NSString *)dynamicId state:(int)state { + if (dynamicId.length <= 0) { + dynamicId = @""; + } + NSString * pageSizeStr = [NSString stringWithFormat:@"%ld", pageSize]; + [Api monentsLatestList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + MonentsListInfoModel *listInfo = [MonentsListInfoModel modelWithDictionary:data.data]; + [[self getView] getMonentsLatestListSuccess:listInfo state:state]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getMonentsLatestListFail:msg state:state]; + } showLoading:YES] dynamicId:dynamicId pageSize:pageSizeStr types:@"0,2"]; +} + +/// 动态点赞 +/// @param dynamicId 动态id +/// @param status yes 点赞 NO 取消 +/// @param likedUid 点赞人的uid +/// @param worldId 话题的id +- (void)likeMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * statusStr = status ? @"1" : @"0"; + [Api monentsLike:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] likeMonentsSuccess:dynamicId status:status]; + } showLoading:YES] dynamicId:dynamicId uid:uid status:statusStr likedUid:likedUid worldId:worldId]; +} + +/// 删除动态 +/// @param dynamicId 动态id +/// @param worldId 话题id +- (void)deleteMonents:(NSString *)dynamicId worldId:(NSString *)worldId { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api monentsDelete:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + [[self getView] deleteMonentsSuccess:dynamicId]; + } uid:uid dynamicId:dynamicId worldId:worldId]; +} + +@end diff --git a/YuMi/Modules/YMMonents/Presenter/XPMonentsLayoutConfig.h b/YuMi/Modules/YMMonents/Presenter/XPMonentsLayoutConfig.h new file mode 100644 index 00000000..d5f3bfc6 --- /dev/null +++ b/YuMi/Modules/YMMonents/Presenter/XPMonentsLayoutConfig.h @@ -0,0 +1,49 @@ +// +// YMMonentsLayoutConfig.h +// YUMI +// +// Created by YUMI on 2022/5/12. +// + +#import +#import "YUMIMacroUitls.h" +NS_ASSUME_NONNULL_BEGIN +#define kMONENTS_CONTENT_LEFT_PADDING 67 +#define kMONENTS_CONTENT_RIGHT_PADDING 36 +#define kMONENTS_CONTENT_MAX_WIDTH (KScreenWidth - kMONENTS_CONTENT_LEFT_PADDING - kMONENTS_CONTENT_RIGHT_PADDING) +#define kMONENTS_PIC_ONE_WIDTH 200 ///只有一个动态图片的高度 +#define kMONENTS_PIC_SPACE 4 ///图片之间的间隙的宽度或者高度 +#define kMONENTS_USER_INFO_HEIGHT 60 ///用户信息的高度 +#define kMONENTS_TOOL_BAR_HEIGHT 58 ///底部操作栏的高度 +#define kMONENTS_CONTENT_SPACAE_HEIGHT 12 /// 每个内容之间下面的间隙的高度 +#define kMONENTS_TEXT_TOPIC_HEIGHT 20 /// 话题的高度 +#define kMONENTS_FOLD_HEIGHT 20 /// 展开 关闭的高度 +#pragma mark - 评论的配置 +#define kMONENTS_COMMENT_LEFT_PADDING 15 ///评论左的间隙 +#define kMONENTS_COMMENT_RIGHT_PADDING 25 ///评论右的间隙 +#define kMONENTS_COMMENT_AVATAR_NICK_PADDING 10 ///头像昵称之间的间隙 +#define KMONENTS_COMMENT_AVATAR_WIDTH 45 ///评论的头像大小 +#define KMONENTS_COMMENT_MAX_WIDTH (KScreenWidth - KMONENTS_COMMENT_AVATAR_WIDTH - kMONENTS_COMMENT_LEFT_PADDING - kMONENTS_COMMENT_RIGHT_PADDING - kMONENTS_COMMENT_AVATAR_NICK_PADDING) ///评论内容的最大宽度 +#pragma mark - 评论回复的配置 +#define KMONENTS_COMMENT_REPLY_AVATAR_WIDTH 30 ///评论回复的头像大小 +#define kMONENTS_COMMENT_REPLY_LEFT_PADDING (kMONENTS_COMMENT_LEFT_PADDING + kMONENTS_COMMENT_RIGHT_PADDING + kMONENTS_COMMENT_AVATAR_NICK_PADDING) ///回复这左边的间隙 +#define KMONENTS_COMMENT_REPLY_MAX_WIDTH (KMONENTS_COMMENT_MAX_WIDTH - KMONENTS_COMMENT_REPLY_AVATAR_WIDTH - kMONENTS_COMMENT_AVATAR_NICK_PADDING) ///评论回复内容的最大宽度 + +#pragma mark - 审核UI配置 +#define kSIMPLE_MONENTS_CONTENT_LEFT_PADDING 16 ///动态内容左边间距 +#define kSIMPLE_MONENTS_CONTENT_RIGHT_PADDING 16 ///动态内容右边间距 +#define kSIMPLE_MONENTS_CONTENT_MAX_WIDTH (KScreenWidth - kSIMPLE_MONENTS_CONTENT_LEFT_PADDING - kSIMPLE_MONENTS_CONTENT_RIGHT_PADDING) ///动态内容最大宽度 + +#define KSIMPLE_MONENTS_COMMENT_AVATAR_WIDTH 40 ///评论的头像大小 + +@class MonentsInfoModel, MonentsCommentModel; +@interface XPMonentsLayoutConfig : NSObject ++ (void)layoutSimpleMonentsModel:(MonentsInfoModel *)monents; ++ (void)layoutMonentsModel:(MonentsInfoModel *)monents; ++ (CGFloat)monentsPicHeight:(MonentsInfoModel *)monents; ++ (CGFloat)monentsContentHeight:(MonentsInfoModel *)monents; +///计算评论的高度 ++ (CGFloat)commentCommentRowHeight:(MonentsCommentModel * )comment; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Presenter/XPMonentsLayoutConfig.m b/YuMi/Modules/YMMonents/Presenter/XPMonentsLayoutConfig.m new file mode 100644 index 00000000..ee3d1cc3 --- /dev/null +++ b/YuMi/Modules/YMMonents/Presenter/XPMonentsLayoutConfig.m @@ -0,0 +1,251 @@ +// +// YMMonentsLayoutConfig.m +// YUMI +// +// Created by YUMI on 2022/5/12. +// + +#import "XPMonentsLayoutConfig.h" +#import +#import "DJDKMIMOMColor.h" +///Model +#import "MonentsInfoModel.h" +#import "MonentsCommentModel.h" +#import "QEmotionHelper.h" + +@implementation XPMonentsLayoutConfig + +#pragma mark - 审核的布局 + ++ (void)layoutSimpleMonentsModel:(MonentsInfoModel *)monents { + CGFloat rowHeight = kMONENTS_CONTENT_SPACAE_HEIGHT; + ///文字内容的高度 + rowHeight += [self simpleMonentsContentHeight:monents]; + ///图片的高度 + rowHeight += [self monentsPicHeight:monents]; + ///如果没有图片的话 间隙就只有一个 + if (monents.type == MonentsContentType_Picture && monents.content.length > 0) { + rowHeight += (kMONENTS_CONTENT_SPACAE_HEIGHT * 2); + }else { + rowHeight += kMONENTS_CONTENT_SPACAE_HEIGHT; + } + ///话题的高度 + rowHeight += kMONENTS_TEXT_TOPIC_HEIGHT; + monents.rowHeight = rowHeight; +} + ++ (CGFloat)simpleMonentsContentHeight:(MonentsInfoModel *)monents { + if (monents.content.length <= 0) { + monents.contentHeight = 0; + return 0; + } + ///计算文本的高度 + if (!monents.contentAttribute) { + NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] init]; + if (monents.squareTop ) {//动态/广场 + NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; + attachment.bounds = CGRectMake(0, 0, 25 * 1.3 ,10 * 1.3); + attachment.image = [UIImage imageNamed:@"monents_info_top"]; + NSAttributedString * starAttribute = [NSMutableAttributedString attributedStringWithAttachment:(NSTextAttachment *)attachment]; + [attributedString insertAttributedString:starAttribute atIndex:0]; + } + [attributedString appendAttributedString:[self creatStrAttrByStr:monents.content attributed:@{NSFontAttributeName : [UIFont systemFontOfSize:15]}]]; + attributedString.yy_lineSpacing = 5; + attributedString.yy_lineBreakMode = NSLineBreakByWordWrapping; + monents.contentAttribute = attributedString; + } + + YYTextContainer *container = [YYTextContainer new]; + container.size = CGSizeMake(kSIMPLE_MONENTS_CONTENT_MAX_WIDTH, CGFLOAT_MAX); + container.maximumNumberOfRows = 0; + YYTextLayout *layout = [YYTextLayout layoutWithContainer:container text:monents.contentAttribute]; + monents.numberOfText = layout.rowCount; + CGFloat foldHeight = 0; + if (layout.rowCount > 6) { + foldHeight = kMONENTS_FOLD_HEIGHT; + NSInteger numberOfLines = monents.isFold ? 6 : 0; + container.maximumNumberOfRows = numberOfLines; + } + YYTextLayout *realLayout = [YYTextLayout layoutWithContainer:container text:monents.contentAttribute]; + CGFloat contentHeight = realLayout.textBoundingSize.height; + monents.contentHeight =contentHeight; + return contentHeight + foldHeight; +} + ++ (CGFloat)simpleMonentsPicHeight:(MonentsInfoModel *)monents { + ///计算图片的高度 + NSInteger picCount = monents.dynamicResList.count; + CGFloat picHeight = 0; + if (picCount == 0) { + picHeight = 0; + } else if(picCount == 1) { + picHeight = kMONENTS_PIC_ONE_WIDTH; + } else if(picCount == 2) { + picHeight = (kSIMPLE_MONENTS_CONTENT_MAX_WIDTH - kMONENTS_PIC_SPACE) / 2; + } else { + if (picCount > 9) { + picCount = 9; + } + CGFloat itemWidth = (kSIMPLE_MONENTS_CONTENT_MAX_WIDTH - kMONENTS_PIC_SPACE * 2) / 3; + NSInteger page = picCount % 3; + NSInteger line = picCount / 3; + if (page == 0) { + picHeight = itemWidth * line + (line -1)* kMONENTS_PIC_SPACE; + } else { + picHeight = itemWidth * (line +1) + line * kMONENTS_PIC_SPACE; + } + } + monents.picHeight = picHeight; + return picHeight; +} + +#pragma mark - 正常的布局 + ++ (void)layoutMonentsModel:(MonentsInfoModel *)monents { + CGFloat rowHeight = kMONENTS_USER_INFO_HEIGHT; + ///用户信息和文字之间的间隙 + rowHeight += kMONENTS_CONTENT_SPACAE_HEIGHT; + ///文字内容的高度 + rowHeight += [self monentsContentHeight:monents]; + ///图片的高度 + rowHeight += [self monentsPicHeight:monents]; + ///如果没有图片的话 间隙就只有一个 + if (monents.type == MonentsContentType_Picture && monents.content.length > 0) { + rowHeight += (kMONENTS_CONTENT_SPACAE_HEIGHT * 2); + }else { + rowHeight += kMONENTS_CONTENT_SPACAE_HEIGHT; + } + ///话题的高度 + rowHeight += kMONENTS_TEXT_TOPIC_HEIGHT; + ///底部操作栏的高度 + rowHeight += kMONENTS_TOOL_BAR_HEIGHT; + monents.rowHeight = rowHeight; +} + ++ (CGFloat)monentsPicHeight:(MonentsInfoModel *)monents { + ///计算图片的高度 + NSInteger picCount = monents.dynamicResList.count; + CGFloat picHeight = 0; + if (picCount == 0) { + picHeight = 0; + } else if(picCount == 1) { + picHeight = kMONENTS_PIC_ONE_WIDTH; + } else if(picCount == 2) { + picHeight = (kMONENTS_CONTENT_MAX_WIDTH - kMONENTS_PIC_SPACE) / 2; + } else { + if (picCount > 9) { + picCount = 9; + } + CGFloat itemWidth = (kMONENTS_CONTENT_MAX_WIDTH - kMONENTS_PIC_SPACE * 2) / 3; + NSInteger page = picCount % 3; + NSInteger line = picCount / 3; + if (page == 0) { + picHeight = itemWidth * line + (line -1)* kMONENTS_PIC_SPACE; + } else { + picHeight = itemWidth * (line +1) + line * kMONENTS_PIC_SPACE; + } + } + monents.picHeight = picHeight; + return picHeight; +} + ++ (CGFloat)monentsContentHeight:(MonentsInfoModel *)monents { + if (monents.content.length <= 0) { + monents.contentHeight = 0; + return 0; + } + ///计算文本的高度 + if (!monents.contentAttribute) { + NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] init]; + if (monents.squareTop ) {//动态/广场 + NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; + attachment.bounds = CGRectMake(0, 0, 25 * 1.3 ,10 * 1.3); + attachment.image = [UIImage imageNamed:@"monents_info_top"]; + NSAttributedString * starAttribute = [NSMutableAttributedString attributedStringWithAttachment:(NSTextAttachment *)attachment]; + [attributedString insertAttributedString:starAttribute atIndex:0]; + } + [attributedString appendAttributedString:[self creatStrAttrByStr:monents.content attributed:@{NSFontAttributeName : [UIFont systemFontOfSize:15]}]]; + attributedString.yy_lineSpacing = 5; + attributedString.yy_lineBreakMode = NSLineBreakByWordWrapping; + monents.contentAttribute = attributedString; + } + + YYTextContainer *container = [YYTextContainer new]; + container.size = CGSizeMake(kMONENTS_CONTENT_MAX_WIDTH, CGFLOAT_MAX); + container.maximumNumberOfRows = 0; + YYTextLayout *layout = [YYTextLayout layoutWithContainer:container text:monents.contentAttribute]; + monents.numberOfText = layout.rowCount; + CGFloat foldHeight = 0; + if (layout.rowCount > 6) { + foldHeight = kMONENTS_FOLD_HEIGHT; + NSInteger numberOfLines = monents.isFold ? 6 : 0; + container.maximumNumberOfRows = numberOfLines; + } + YYTextLayout *realLayout = [YYTextLayout layoutWithContainer:container text:monents.contentAttribute]; + CGFloat contentHeight = realLayout.textBoundingSize.height; + monents.contentHeight =contentHeight; + return contentHeight + foldHeight; +} + ++ (NSMutableAttributedString *)creatStrAttrByStr:(NSString *)str attributed:(NSDictionary *)attribute{ + if (str.length == 0 || !str) { + str = @" "; + } + NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:str attributes:attribute]; + return attr; +} + +///计算评论的高度 ++ (CGFloat)commentCommentRowHeight:(MonentsCommentModel * )comment { + if (comment.commentRowHeight > 0 && !comment.isReloadHeight) { + return comment.commentRowHeight; + } + __block CGFloat rowHeight = 0; + CGFloat commentTopHeight = 10 + 15 + 10;///10顶部的间隙 15 昵称的高度 + ///内容 + QEmotionHelper *faceManager = [QEmotionHelper sharedEmotionHelper]; + NSMutableAttributedString * attribute = [faceManager attributedStringByText:comment.content font:[UIFont systemFontOfSize:15]]; + YYTextContainer *container = [YYTextContainer new]; + container.size = CGSizeMake(KMONENTS_COMMENT_REPLY_MAX_WIDTH, CGFLOAT_MAX); + container.maximumNumberOfRows = 0; + YYTextLayout *realLayout = [YYTextLayout layoutWithContainer:container text:attribute]; + CGFloat commentHeight = realLayout.textBoundingSize.height; + commentHeight = MAX(commentHeight, 15); + rowHeight += commentTopHeight; + rowHeight += commentHeight; + + ///展开剩余的回复 + if (comment.replyInfo.leftCount > 0) { + rowHeight += 44; + } + + if (comment.replyInfo.replyList.count > 0) { + rowHeight += 10 * 2; + } else { + rowHeight += 10; + } + + ///评论的高度 + [comment.replyInfo.replyList enumerateObjectsUsingBlock:^(MonentsReplyModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.content.length > 0) { + [obj createContentAttribute]; + CGFloat replayHeight = 0; + CGFloat commentTopHeight = 10 + 15 + 10;///10顶部的间隙 15 昵称的高度 + CGFloat commentBottomHeight = 10; + YYTextContainer *container = [YYTextContainer new]; + container.size = CGSizeMake(KMONENTS_COMMENT_REPLY_MAX_WIDTH, CGFLOAT_MAX); + container.maximumNumberOfRows = 0; + YYTextLayout *realLayout = [YYTextLayout layoutWithContainer:container text:obj.contentAttribute]; + CGFloat replyContentHeight = realLayout.textBoundingSize.height; + replayHeight += commentTopHeight; + replayHeight += replyContentHeight; + replayHeight += commentBottomHeight; + obj.replyRowHeight = replayHeight; + rowHeight += replayHeight; + } + }]; + comment.commentRowHeight = rowHeight; + return rowHeight; +} + +@end diff --git a/YuMi/Modules/YMMonents/Presenter/XPMonentsPublishPresenter.h b/YuMi/Modules/YMMonents/Presenter/XPMonentsPublishPresenter.h new file mode 100644 index 00000000..113bc43e --- /dev/null +++ b/YuMi/Modules/YMMonents/Presenter/XPMonentsPublishPresenter.h @@ -0,0 +1,16 @@ +// +// YMMonentsPublishPresenter.h +// YUMI +// +// Created by YUMI on 2022/7/1. +// + +#import "BaseMvpPresenter.h" +#import "MonentsInfoModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPMonentsPublishPresenter : BaseMvpPresenter +- (void)publishMonents:(NSString *)worldId type:(MonentsContentType)type content:(NSString *)content resList:(NSArray *)resList; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Presenter/XPMonentsPublishPresenter.m b/YuMi/Modules/YMMonents/Presenter/XPMonentsPublishPresenter.m new file mode 100644 index 00000000..830d5e51 --- /dev/null +++ b/YuMi/Modules/YMMonents/Presenter/XPMonentsPublishPresenter.m @@ -0,0 +1,24 @@ +// +// YMMonentsPublishPresenter.m +// YUMI +// +// Created by YUMI on 2022/7/1. +// + +#import "XPMonentsPublishPresenter.h" +#import "Api+Monents.h" +#import "XPMonentsPublishProtocol.h" +#import "AccountInfoStorage.h" + +@implementation XPMonentsPublishPresenter + +- (void)publishMonents:(NSString *)worldId type:(MonentsContentType)type content:(NSString *)content resList:(NSArray *)resList { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * typeStr = [NSString stringWithFormat:@"%ld", type]; + [Api monentsPublish:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] publishMonentsSuccess]; + } showLoading:YES] uid:uid type:typeStr worldId:worldId content:content resList:resList]; +} + + +@end diff --git a/YuMi/Modules/YMMonents/Presenter/XPMonentsRecommendPresenter.h b/YuMi/Modules/YMMonents/Presenter/XPMonentsRecommendPresenter.h new file mode 100644 index 00000000..ed89597c --- /dev/null +++ b/YuMi/Modules/YMMonents/Presenter/XPMonentsRecommendPresenter.h @@ -0,0 +1,37 @@ +// +// YMMonentsRecommendPresenter.h +// YUMI +// +// Created by YUMI on 2022/5/13. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMonentsRecommendPresenter : BaseMvpPresenter +/// 获取朋友圈动态推荐列表 +/// @param page 当前的页数 +/// @param pageSize 一页的个数 +/// @param state 状态 +- (void)getMonentsRecommendList:(NSInteger)page pageSize:(NSInteger)pageSize state:(int)state; + +/// 获取话题列表 +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +- (void)getMonentsTopicList:(NSInteger)page pageSize:(NSInteger)pageSize; + +/// 动态点赞 +/// @param dynamicId 动态id +/// @param status yes 点赞 NO 取消 +/// @param likedUid 点赞人的uid +/// @param worldId 话题的id +- (void)likeMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId; + +/// 删除动态 +/// @param dynamicId 动态id +/// @param worldId 话题id +- (void)deleteMonents:(NSString *)dynamicId worldId:(NSString *)worldId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Presenter/XPMonentsRecommendPresenter.m b/YuMi/Modules/YMMonents/Presenter/XPMonentsRecommendPresenter.m new file mode 100644 index 00000000..e1683435 --- /dev/null +++ b/YuMi/Modules/YMMonents/Presenter/XPMonentsRecommendPresenter.m @@ -0,0 +1,69 @@ +// +// YMMonentsRecommendPresenter.m +// YUMI +// +// Created by YUMI on 2022/5/13. +// + +#import "XPMonentsRecommendPresenter.h" +#import "AccountInfoStorage.h" +#import "Api+Monents.h" +#import "MonentsTopicModel.h" +#import "MonentsInfoModel.h" +#import "XPMonentsRecommendProtocol.h" +@implementation XPMonentsRecommendPresenter + + +/// 获取朋友圈动态推荐列表 +/// @param page 当前的页数 +/// @param pageSize 一页的个数 +/// @param state 状态 +- (void)getMonentsRecommendList:(NSInteger)page pageSize:(NSInteger)pageSize state:(int)state { + NSString * pageStr = [NSString stringWithFormat:@"%ld", page]; + NSString * pageSizeStr = [NSString stringWithFormat:@"%ld", pageSize]; + [Api monentsRecommendList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray *array = [MonentsInfoModel modelsWithArray:data.data]; + [[self getView] getMonentsRecommendListSuccess:array state:state]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getMonentsRecommendListFail:msg state:state]; + } showLoading:YES] page:pageStr pageSize:pageSizeStr types:@"0,2"]; +} + + +/// 获取话题列表 +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +- (void)getMonentsTopicList:(NSInteger)page pageSize:(NSInteger)pageSize { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * pageStr = [NSString stringWithFormat:@"%ld", page]; + NSString * pageSizeStr = [NSString stringWithFormat:@"%ld", pageSize]; + [Api monentsTopicList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [MonentsTopicModel modelsWithArray:data.data[@"records"]]; + [[self getView] monentsTopicListSuccess:array]; + }] uid:uid page:pageStr pageSize:pageSizeStr worldTypeId:@"1"]; +} + +/// 动态点赞 +/// @param dynamicId 动态id +/// @param status yes 点赞 NO 取消 +/// @param likedUid 点赞人的uid +/// @param worldId 话题的id +- (void)likeMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * statusStr = status ? @"1" : @"0"; + [Api monentsLike:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] likeMonentsSuccess:dynamicId status:status]; + } showLoading:YES] dynamicId:dynamicId uid:uid status:statusStr likedUid:likedUid worldId:worldId]; +} + +/// 删除动态 +/// @param dynamicId 动态id +/// @param worldId 话题id +- (void)deleteMonents:(NSString *)dynamicId worldId:(NSString *)worldId { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api monentsDelete:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + [[self getView] deleteMonentsSuccess:dynamicId]; + } uid:uid dynamicId:dynamicId worldId:worldId]; +} + +@end diff --git a/YuMi/Modules/YMMonents/Presenter/XPMonentsTopicLatestPresenter.h b/YuMi/Modules/YMMonents/Presenter/XPMonentsTopicLatestPresenter.h new file mode 100644 index 00000000..4ff93272 --- /dev/null +++ b/YuMi/Modules/YMMonents/Presenter/XPMonentsTopicLatestPresenter.h @@ -0,0 +1,28 @@ +// +// YMMonentsTopicLatestPresenter.h +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMonentsTopicLatestPresenter : BaseMvpPresenter +- (void)getMonentsTopicLatestList:(NSString *)dynamicId worldId:(NSString *)worldId state:(int)state; + +/// 动态点赞 +/// @param dynamicId 动态id +/// @param status yes 点赞 NO 取消 +/// @param likedUid 点赞人的uid +/// @param worldId 话题的id +- (void)likeMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId; + +/// 删除动态 +/// @param dynamicId 动态id +/// @param worldId 话题id +- (void)deleteMonents:(NSString *)dynamicId worldId:(NSString *)worldId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Presenter/XPMonentsTopicLatestPresenter.m b/YuMi/Modules/YMMonents/Presenter/XPMonentsTopicLatestPresenter.m new file mode 100644 index 00000000..33bd29b0 --- /dev/null +++ b/YuMi/Modules/YMMonents/Presenter/XPMonentsTopicLatestPresenter.m @@ -0,0 +1,48 @@ +// +// YMMonentsTopicLatestPresenter.m +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import "XPMonentsTopicLatestPresenter.h" +#import "Api+Monents.h" +#import "AccountInfoStorage.h" +#import "MonentsListInfoModel.h" +#import "XPMonentsTopicLatestProtocol.h" +@implementation XPMonentsTopicLatestPresenter + +- (void)getMonentsTopicLatestList:(NSString *)dynamicId worldId:(NSString *)worldId state:(int)state { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api monentsTopicLatestList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + MonentsListInfoModel * model = [MonentsListInfoModel modelWithDictionary:data.data]; + [[self getView] getMonentsTopicLatestListSuccess:model state:state]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getMonentsTopicLatestListFail:msg state:state]; + } showLoading:YES] uid:uid dynamicId:dynamicId types:@"0,2" worldId:worldId pageSize:@"20"]; +} + +/// 动态点赞 +/// @param dynamicId 动态id +/// @param status yes 点赞 NO 取消 +/// @param likedUid 点赞人的uid +/// @param worldId 话题的id +- (void)likeMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * statusStr = status ? @"1" : @"0"; + [Api monentsLike:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] likeMonentsSuccess:dynamicId status:status]; + } showLoading:YES] dynamicId:dynamicId uid:uid status:statusStr likedUid:likedUid worldId:worldId]; +} + +/// 删除动态 +/// @param dynamicId 动态id +/// @param worldId 话题id +- (void)deleteMonents:(NSString *)dynamicId worldId:(NSString *)worldId { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api monentsDelete:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + [[self getView] deleteMonentsSuccess:dynamicId]; + } uid:uid dynamicId:dynamicId worldId:worldId]; +} + +@end diff --git a/YuMi/Modules/YMMonents/Presenter/XPMonentsTopicListPresenter.h b/YuMi/Modules/YMMonents/Presenter/XPMonentsTopicListPresenter.h new file mode 100644 index 00000000..a48f2a8b --- /dev/null +++ b/YuMi/Modules/YMMonents/Presenter/XPMonentsTopicListPresenter.h @@ -0,0 +1,21 @@ +// +// YMMonentsTopicListPresenter.h +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMonentsTopicListPresenter : BaseMvpPresenter +- (void)getMoentsTopicList:(int)page pageSize:(int)pageSize state:(int)state; + +/// 删除动态 +/// @param dynamicId 动态id +/// @param worldId 话题id +- (void)deleteMonents:(NSString *)dynamicId worldId:(NSString *)worldId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Presenter/XPMonentsTopicListPresenter.m b/YuMi/Modules/YMMonents/Presenter/XPMonentsTopicListPresenter.m new file mode 100644 index 00000000..0cd6bcd1 --- /dev/null +++ b/YuMi/Modules/YMMonents/Presenter/XPMonentsTopicListPresenter.m @@ -0,0 +1,39 @@ +// +// YMMonentsTopicListPresenter.m +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import "XPMonentsTopicListPresenter.h" +#import "Api+Monents.h" +#import "AccountInfoStorage.h" +#import "MonentsTopicModel.h" +#import "XPMonentsTopicListProtocol.h" + +@implementation XPMonentsTopicListPresenter + +- (void)getMoentsTopicList:(int)page pageSize:(int)pageSize state:(int)state { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * pageStr = [NSString stringWithFormat:@"%d", page]; + NSString * pageSizeStr = [NSString stringWithFormat:@"%d", pageSize]; + [Api moentsTopicList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [MonentsTopicModel modelsWithArray:data.data[@"records"]]; + [[self getView] getMonentsTopicListSuccess:array state:state]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getMoentsTopicFail:msg state:state]; + } showLoading:YES] uid:uid page:pageStr pageSize:pageSizeStr worldTypeId:@"0"]; +} + +/// 删除动态 +/// @param dynamicId 动态id +/// @param worldId 话题id +- (void)deleteMonents:(NSString *)dynamicId worldId:(NSString *)worldId { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api monentsDelete:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + [[self getView] deleteMonentsSuccess:dynamicId]; + } uid:uid dynamicId:dynamicId worldId:worldId]; +} + + +@end diff --git a/YuMi/Modules/YMMonents/Presenter/XPMonentsTopicRecommendPresenter.h b/YuMi/Modules/YMMonents/Presenter/XPMonentsTopicRecommendPresenter.h new file mode 100644 index 00000000..14a5ccf3 --- /dev/null +++ b/YuMi/Modules/YMMonents/Presenter/XPMonentsTopicRecommendPresenter.h @@ -0,0 +1,28 @@ +// +// YMMonentsTopicRecommendPresenter.h +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMonentsTopicRecommendPresenter : BaseMvpPresenter +- (void)getMonentsTopicRecommendList:(NSString *)dynamicId worldId:(NSString *)worldId state:(int)state; + +/// 动态点赞 +/// @param dynamicId 动态id +/// @param status yes 点赞 NO 取消 +/// @param likedUid 点赞人的uid +/// @param worldId 话题的id +- (void)likeMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId; + +/// 删除动态 +/// @param dynamicId 动态id +/// @param worldId 话题id +- (void)deleteMonents:(NSString *)dynamicId worldId:(NSString *)worldId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Presenter/XPMonentsTopicRecommendPresenter.m b/YuMi/Modules/YMMonents/Presenter/XPMonentsTopicRecommendPresenter.m new file mode 100644 index 00000000..47c31995 --- /dev/null +++ b/YuMi/Modules/YMMonents/Presenter/XPMonentsTopicRecommendPresenter.m @@ -0,0 +1,47 @@ +// +// YMMonentsTopicRecommendPresenter.m +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import "XPMonentsTopicRecommendPresenter.h" +#import "Api+Monents.h" +#import "AccountInfoStorage.h" +#import "MonentsListInfoModel.h" +#import "XPMonentsTopicRecommendProtocol.h" +@implementation XPMonentsTopicRecommendPresenter + +- (void)getMonentsTopicRecommendList:(NSString *)dynamicId worldId:(NSString *)worldId state:(int)state { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api monentsTopicRecommendList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + MonentsListInfoModel * model = [MonentsListInfoModel modelWithDictionary:data.data]; + [[self getView] getMonentsTopicRecommendListSuccess:model state:state]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getMonentsTopicRecommendListFail:msg state:state]; + } showLoading:YES] uid:uid dynamicId:dynamicId types:@"0,2" worldId:worldId pageSize:@"20"]; +} + +/// 动态点赞 +/// @param dynamicId 动态id +/// @param status yes 点赞 NO 取消 +/// @param likedUid 点赞人的uid +/// @param worldId 话题的id +- (void)likeMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * statusStr = status ? @"1" : @"0"; + [Api monentsLike:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] likeMonentsSuccess:dynamicId status:status]; + } showLoading:YES] dynamicId:dynamicId uid:uid status:statusStr likedUid:likedUid worldId:worldId]; +} + +/// 删除动态 +/// @param dynamicId 动态id +/// @param worldId 话题id +- (void)deleteMonents:(NSString *)dynamicId worldId:(NSString *)worldId { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api monentsDelete:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + [[self getView] deleteMonentsSuccess:dynamicId]; + } uid:uid dynamicId:dynamicId worldId:worldId]; +} +@end diff --git a/YuMi/Modules/YMMonents/Presenter/YUMISeparationManeExternalizer.h b/YuMi/Modules/YMMonents/Presenter/YUMISeparationManeExternalizer.h deleted file mode 100644 index 08ae7ce9..00000000 --- a/YuMi/Modules/YMMonents/Presenter/YUMISeparationManeExternalizer.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMMonentMinePresenter.h -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISeparationManeExternalizer : BaseMvpExternalizer -- (void)similarMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId; - -- (void)representtowardsionSepartowardsions:(NSString *)dynamicId worldId:(NSString *)worldId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Presenter/YUMISeparationManeExternalizer.m b/YuMi/Modules/YMMonents/Presenter/YUMISeparationManeExternalizer.m deleted file mode 100644 index c9e58133..00000000 --- a/YuMi/Modules/YMMonents/Presenter/YUMISeparationManeExternalizer.m +++ /dev/null @@ -1,30 +0,0 @@ -// -// YMMonentMinePresenter.m -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import "YUMISeparationManeExternalizer.h" -#import "Api+Monents.h" -#import "FBCSeparationsManeCeremony.h" -#import "AccountAbstractStorage.h" - -@implementation YUMISeparationManeExternalizer - - -- (void)similarMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * statusStr = status ? @"1" : @"0"; - [Api separtowardsionsSimilar:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] similarSepartowardsionsAccomplishment:dynamicId status:status]; - } EvidenceChambering:YES] dynamicId:dynamicId uid:uid status:statusStr likedUid:likedUid worldId:worldId]; -} - -- (void)representtowardsionSepartowardsions:(NSString *)dynamicId worldId:(NSString *)worldId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api separtowardsionsRepresenttowardsion:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] representtowardsionSepartowardsionsAccomplishment:dynamicId]; - } uid:uid dynamicId:dynamicId worldId:worldId]; -} -@end diff --git a/YuMi/Modules/YMMonents/Presenter/YUMISeparationSpecificExternalizer.h b/YuMi/Modules/YMMonents/Presenter/YUMISeparationSpecificExternalizer.h deleted file mode 100644 index 79e3aef4..00000000 --- a/YuMi/Modules/YMMonents/Presenter/YUMISeparationSpecificExternalizer.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// YMMonentDetailPresenter.h -// YUMI -// -// Created by YUMI on 2022/6/23. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISeparationSpecificExternalizer : BaseMvpExternalizer -- (void)acquireSepartowardsionsSpecific:(NSString *)dynamicId; - -- (void)acquireSepartowardsionsJudgementSttowardsement:(NSString *)dynamicId timestamp:(NSString *)timestamp status:(int)state; - -- (void)acquireSepartowardsionsJudgementReplictowardsionSttowardsement:(NSString *)dynamicId commentId:(NSString *)commentId timestamp:(NSString *)timestamp; - -- (void)similarMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId; - -- (void)representtowardsionSepartowardsions:(NSString *)dynamicId worldId:(NSString *)worldId; -- (void)reprohibitiportCommon:(NSString *)commonId dynamicId:(NSString *)dynamicId content:(NSString *)content; - -- (void)commontSepartowardsions:(NSString *)dynamicId content:(NSString *)content; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Presenter/YUMISeparationSpecificExternalizer.m b/YuMi/Modules/YMMonents/Presenter/YUMISeparationSpecificExternalizer.m deleted file mode 100644 index e5e822b7..00000000 --- a/YuMi/Modules/YMMonents/Presenter/YUMISeparationSpecificExternalizer.m +++ /dev/null @@ -1,75 +0,0 @@ -// -// YMMonentDetailPresenter.m -// YUMI -// -// Created by YUMI on 2022/6/23. -// - -#import "YUMISeparationSpecificExternalizer.h" -#import "Api+Monents.h" -#import "AccountAbstractStorage.h" -#import "FBCSeparationsDetailCeremony.h" -#import "SeparationsAbstractMatrix.h" -#import "SeparationsJudgementMatrix.h" -#import "SeparationsJudgementReplicationMatrix.h" -@implementation YUMISeparationSpecificExternalizer - -- (void)acquireSepartowardsionsSpecific:(NSString *)dynamicId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api separtowardsionsSpecific:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - SeparationsAbstractMatrix * monentsInfo = [SeparationsAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireSepartowardsionsSpecificAccomplishment:monentsInfo]; - } EvidenceChambering:YES] dynamicId:dynamicId worldId:@"" uid:uid]; -} - - -- (void)acquireSepartowardsionsJudgementSttowardsement:(NSString *)dynamicId timestamp:(NSString *)timestamp status:(int)state{ - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api separtowardsionsJudgementSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - SeparationsJudgementStatementMatrix * info = [SeparationsJudgementStatementMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireSepartowardsionsJudgementSttowardsementAccomplishment:info state:state]; - }] dynamicId:dynamicId uid:uid pageSize:@"10" timestamp:timestamp]; -} - - -- (void)acquireSepartowardsionsJudgementReplictowardsionSttowardsement:(NSString *)dynamicId commentId:(NSString *)commentId timestamp:(NSString *)timestamp { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api separtowardsionsJudgementReplictowardsionSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - SeparationsJudgementReplicationMatrix * replyInfo = [SeparationsJudgementReplicationMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireSepartowardsionsJudgementReplictowardsionSttowardsementAccomplishment:replyInfo commentId:commentId]; - }] dynamicId:dynamicId uid:uid pageSize:@"5" commentId:commentId timestamp:timestamp]; -} - -- (void)similarMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * statusStr = status ? @"1" : @"0"; - [Api separtowardsionsSimilar:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] similarSepartowardsionsAccomplishment:dynamicId status:status]; - } EvidenceChambering:YES] dynamicId:dynamicId uid:uid status:statusStr likedUid:likedUid worldId:worldId]; -} - -- (void)representtowardsionSepartowardsions:(NSString *)dynamicId worldId:(NSString *)worldId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api separtowardsionsRepresenttowardsion:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] representtowardsionSepartowardsionsAccomplishment:dynamicId]; - } uid:uid dynamicId:dynamicId worldId:worldId]; -} - - -- (void)commontSepartowardsions:(NSString *)dynamicId content:(NSString *)content { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api monentSpecificCommon:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] commonSepartowardsionsAccomplishment]; - } EvidenceChambering:YES] uid:uid dynamicId:dynamicId content:content]; -} - -- (void)reprohibitiportCommon:(NSString *)commonId dynamicId:(NSString *)dynamicId content:(NSString *)content { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api replictowardsionSepartowardsionsSpecificCommon:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] replictowardsionSepartowardsionsAccomplishment]; - }] uid:uid dynamicId:dynamicId content:content commentId:commonId]; -} - - - -@end diff --git a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsAnnounceExternalizer.h b/YuMi/Modules/YMMonents/Presenter/YUMISeparationsAnnounceExternalizer.h deleted file mode 100644 index 145b040c..00000000 --- a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsAnnounceExternalizer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMonentsPublishPresenter.h -// YUMI -// -// Created by YUMI on 2022/7/1. -// - -#import "BaseMvpExternalizer.h" -#import "SeparationsAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISeparationsAnnounceExternalizer : BaseMvpExternalizer -- (void)announceSepartowardsions:(NSString *)worldId type:(MonentsContentGenre)type content:(NSString *)content resList:(NSArray *)resList; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsAnnounceExternalizer.m b/YuMi/Modules/YMMonents/Presenter/YUMISeparationsAnnounceExternalizer.m deleted file mode 100644 index 6df3d40b..00000000 --- a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsAnnounceExternalizer.m +++ /dev/null @@ -1,24 +0,0 @@ -// -// YMMonentsPublishPresenter.m -// YUMI -// -// Created by YUMI on 2022/7/1. -// - -#import "YUMISeparationsAnnounceExternalizer.h" -#import "Api+Monents.h" -#import "FBCSeparationsPublishCeremony.h" -#import "AccountAbstractStorage.h" - -@implementation YUMISeparationsAnnounceExternalizer - -- (void)announceSepartowardsions:(NSString *)worldId type:(MonentsContentGenre)type content:(NSString *)content resList:(NSArray *)resList { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * typeStr = [NSString stringWithFormat:@"%ld", type]; - [Api separtowardsionsPublish:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] announceSepartowardsionsAccomplishment]; - } EvidenceChambering:YES] uid:uid type:typeStr worldId:worldId content:content resList:resList]; -} - - -@end diff --git a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsCoactiveExternalizer.h b/YuMi/Modules/YMMonents/Presenter/YUMISeparationsCoactiveExternalizer.h deleted file mode 100644 index b6f0e330..00000000 --- a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsCoactiveExternalizer.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMMonentsInteractivePresenter.h -// YUMI -// -// Created by YUMI on 2022/5/18. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISeparationsCoactiveExternalizer : BaseMvpExternalizer - -- (void)acquireSepartowardsionsCoactiveSttowardsement:(NSString *)dynamicId pageSize:(int)pageSize state:(int)state; - -- (void)prohibititinctCoactiveCommunictowardsion; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsCoactiveExternalizer.m b/YuMi/Modules/YMMonents/Presenter/YUMISeparationsCoactiveExternalizer.m deleted file mode 100644 index 31515d5d..00000000 --- a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsCoactiveExternalizer.m +++ /dev/null @@ -1,35 +0,0 @@ -// -// YMMonentsInteractivePresenter.m -// YUMI -// -// Created by YUMI on 2022/5/18. -// - -#import "YUMISeparationsCoactiveExternalizer.h" -#import "Api+Monents.h" -#import "FBCSeparationsInteractiveCeremony.h" -#import "AccountAbstractStorage.h" -#import "SeparationsCoactiveMatrix.h" - -@implementation YUMISeparationsCoactiveExternalizer - - -- (void)acquireSepartowardsionsCoactiveSttowardsement:(NSString *)dynamicId pageSize:(int)pageSize state:(int)state{ - NSString * pageSizeStr = [NSString stringWithFormat:@"%d", pageSize]; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api separtowardsionsCoactiveSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [SeparationsCoactiveMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireSepartowardsionsCoactiveSttowardsementSueccess:array state:state]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireSepartowardsionsCoactiveSttowardsementFlunk:msg state:state]; - }] dynamicId:dynamicId pageSize:pageSizeStr uid:uid]; -} - -- (void)prohibititinctCoactiveCommunictowardsion { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api separtowardsionsCoactiveDistinct:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] prohibititinctCoactiveCommunictowardsionAccomplishment]; - } EvidenceChambering:YES] uid:uid]; -} - -@end diff --git a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsConsiderationExternalizer.h b/YuMi/Modules/YMMonents/Presenter/YUMISeparationsConsiderationExternalizer.h deleted file mode 100644 index 09761a23..00000000 --- a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsConsiderationExternalizer.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMMonentsAttentionPresenter.h -// YUMI -// -// Created by YUMI on 2022/5/18. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISeparationsConsiderationExternalizer : BaseMvpExternalizer - -- (void)acquireSepartowardsionsConsidertowardsionSttowardsementPeriodDimension:(NSInteger)pageSize dynamicId:(NSString *)dynamicId state:(int)state; - -- (void)similarMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId; - -- (void)representtowardsionSepartowardsions:(NSString *)dynamicId worldId:(NSString *)worldId; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsConsiderationExternalizer.m b/YuMi/Modules/YMMonents/Presenter/YUMISeparationsConsiderationExternalizer.m deleted file mode 100644 index 5d0600dc..00000000 --- a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsConsiderationExternalizer.m +++ /dev/null @@ -1,44 +0,0 @@ -// -// YMMonentsAttentionPresenter.m -// YUMI -// -// Created by YUMI on 2022/5/18. -// - -#import "YUMISeparationsConsiderationExternalizer.h" -#import "Api+Monents.h" -#import "SeparationsStatementAbstractMatrix.h" -#import "FBCSeparationsConsiderationCeremony.h" -#import "AccountAbstractStorage.h" -@implementation YUMISeparationsConsiderationExternalizer - -- (void)acquireSepartowardsionsConsidertowardsionSttowardsementPeriodDimension:(NSInteger)pageSize dynamicId:(NSString *)dynamicId state:(int)state { - if (dynamicId.integerValue <= 0) { - dynamicId = @""; - } - NSString * pageSizeStr = [NSString stringWithFormat:@"%ld", pageSize]; - [Api separtowardsionsBWSttralongerSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - SeparationsStatementAbstractMatrix *listAbstract = [SeparationsStatementAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireSepartowardsionsConsidertowardsionSttowardsementAccomplishment:listAbstract state:state]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireSepartowardsionsConsidertowardsionSttowardsementFlunk:msg state:state]; - } EvidenceChambering:YES] dynamicId:dynamicId pageSize:pageSizeStr types:@"0,2"]; -} - -- (void)similarMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * statusStr = status ? @"1" : @"0"; - [Api separtowardsionsSimilar:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] similarSepartowardsionsAccomplishment:dynamicId status:status]; - } EvidenceChambering:YES] dynamicId:dynamicId uid:uid status:statusStr likedUid:likedUid worldId:worldId]; -} - -- (void)representtowardsionSepartowardsions:(NSString *)dynamicId worldId:(NSString *)worldId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api separtowardsionsRepresenttowardsion:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] representtowardsionSepartowardsionsAccomplishment:dynamicId]; - } uid:uid dynamicId:dynamicId worldId:worldId]; -} - - -@end diff --git a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsEncourageExternalizer.h b/YuMi/Modules/YMMonents/Presenter/YUMISeparationsEncourageExternalizer.h deleted file mode 100644 index e7ca4127..00000000 --- a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsEncourageExternalizer.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMMonentsRecommendPresenter.h -// YUMI -// -// Created by YUMI on 2022/5/13. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISeparationsEncourageExternalizer : BaseMvpExternalizer -- (void)acquireSepartowardsionsEncourageSttowardsement:(NSInteger)page pageSize:(NSInteger)pageSize state:(int)state; - -- (void)acquireSepartowardsionsMotifSttowardsement:(NSInteger)page pageSize:(NSInteger)pageSize; - -- (void)similarMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId; - -- (void)representtowardsionSepartowardsions:(NSString *)dynamicId worldId:(NSString *)worldId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsEncourageExternalizer.m b/YuMi/Modules/YMMonents/Presenter/YUMISeparationsEncourageExternalizer.m deleted file mode 100644 index b8878da9..00000000 --- a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsEncourageExternalizer.m +++ /dev/null @@ -1,54 +0,0 @@ -// -// YMMonentsRecommendPresenter.m -// YUMI -// -// Created by YUMI on 2022/5/13. -// - -#import "YUMISeparationsEncourageExternalizer.h" -#import "AccountAbstractStorage.h" -#import "Api+Monents.h" -#import "SeparationsMotifMatrix.h" -#import "SeparationsAbstractMatrix.h" -#import "FBCSeparationsEncourageCeremony.h" -@implementation YUMISeparationsEncourageExternalizer - - -- (void)acquireSepartowardsionsEncourageSttowardsement:(NSInteger)page pageSize:(NSInteger)pageSize state:(int)state { - NSString * pageStr = [NSString stringWithFormat:@"%ld", page]; - NSString * pageSizeStr = [NSString stringWithFormat:@"%ld", pageSize]; - [Api separtowardsionsEncourageSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray *array = [SeparationsAbstractMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireSepartowardsionsEncourageSttowardsementAccomplishment:array state:state]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireSepartowardsionsEncourageSttowardsementFlunk:msg state:state]; - } EvidenceChambering:YES] page:pageStr pageSize:pageSizeStr types:@"0,2"]; -} - - -- (void)acquireSepartowardsionsMotifSttowardsement:(NSInteger)page pageSize:(NSInteger)pageSize { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * pageStr = [NSString stringWithFormat:@"%ld", page]; - NSString * pageSizeStr = [NSString stringWithFormat:@"%ld", pageSize]; - [Api separtowardsionsMotifSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [SeparationsMotifMatrix mtowardsrixsAboutGarment:data.data[@"records"]]; - [[self acquireRegard] separtowardsionsMotifSttowardsementAccomplishment:array]; - }] uid:uid page:pageStr pageSize:pageSizeStr worldTypeId:@"1"]; -} - -- (void)similarMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * statusStr = status ? @"1" : @"0"; - [Api separtowardsionsSimilar:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] similarSepartowardsionsAccomplishment:dynamicId status:status]; - } EvidenceChambering:YES] dynamicId:dynamicId uid:uid status:statusStr likedUid:likedUid worldId:worldId]; -} - -- (void)representtowardsionSepartowardsions:(NSString *)dynamicId worldId:(NSString *)worldId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api separtowardsionsRepresenttowardsion:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] representtowardsionSepartowardsionsAccomplishment:dynamicId]; - } uid:uid dynamicId:dynamicId worldId:worldId]; -} - -@end diff --git a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsMotifEncourageExternalizer.h b/YuMi/Modules/YMMonents/Presenter/YUMISeparationsMotifEncourageExternalizer.h deleted file mode 100644 index 104d0954..00000000 --- a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsMotifEncourageExternalizer.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YMMonentsTopicRecommendPresenter.h -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISeparationsMotifEncourageExternalizer : BaseMvpExternalizer -- (void)acquireSepartowardsionsMotifEncourageSttowardsement:(NSString *)dynamicId worldId:(NSString *)worldId state:(int)state; - -- (void)similarMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId; - -- (void)representtowardsionSepartowardsions:(NSString *)dynamicId worldId:(NSString *)worldId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsMotifEncourageExternalizer.m b/YuMi/Modules/YMMonents/Presenter/YUMISeparationsMotifEncourageExternalizer.m deleted file mode 100644 index 33e549ba..00000000 --- a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsMotifEncourageExternalizer.m +++ /dev/null @@ -1,39 +0,0 @@ -// -// YMMonentsTopicRecommendPresenter.m -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import "YUMISeparationsMotifEncourageExternalizer.h" -#import "Api+Monents.h" -#import "AccountAbstractStorage.h" -#import "SeparationsStatementAbstractMatrix.h" -#import "FBCSeparationsMotifEncourageCeremony.h" -@implementation YUMISeparationsMotifEncourageExternalizer - -- (void)acquireSepartowardsionsMotifEncourageSttowardsement:(NSString *)dynamicId worldId:(NSString *)worldId state:(int)state { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api separtowardsionsMotifEncourageSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - SeparationsStatementAbstractMatrix * model = [SeparationsStatementAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireSepartowardsionsMotifEncourageSttowardsementAccomplishment:model state:state]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireSepartowardsionsMotifEncourageSttowardsementFlunk:msg state:state]; - } EvidenceChambering:YES] uid:uid dynamicId:dynamicId types:@"0,2" worldId:worldId pageSize:@"20"]; -} - -- (void)similarMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * statusStr = status ? @"1" : @"0"; - [Api separtowardsionsSimilar:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] similarSepartowardsionsAccomplishment:dynamicId status:status]; - } EvidenceChambering:YES] dynamicId:dynamicId uid:uid status:statusStr likedUid:likedUid worldId:worldId]; -} - -- (void)representtowardsionSepartowardsions:(NSString *)dynamicId worldId:(NSString *)worldId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api separtowardsionsRepresenttowardsion:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] representtowardsionSepartowardsionsAccomplishment:dynamicId]; - } uid:uid dynamicId:dynamicId worldId:worldId]; -} -@end diff --git a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsMotifRecentlyExternalizer.h b/YuMi/Modules/YMMonents/Presenter/YUMISeparationsMotifRecentlyExternalizer.h deleted file mode 100644 index 83c530f1..00000000 --- a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsMotifRecentlyExternalizer.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YMMonentsTopicLatestPresenter.h -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISeparationsMotifRecentlyExternalizer : BaseMvpExternalizer -- (void)acquireSepartowardsionsMotifRecentlySttowardsement:(NSString *)dynamicId worldId:(NSString *)worldId state:(int)state; - -- (void)similarMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId; - -- (void)representtowardsionSepartowardsions:(NSString *)dynamicId worldId:(NSString *)worldId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsMotifRecentlyExternalizer.m b/YuMi/Modules/YMMonents/Presenter/YUMISeparationsMotifRecentlyExternalizer.m deleted file mode 100644 index 82aa0c6e..00000000 --- a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsMotifRecentlyExternalizer.m +++ /dev/null @@ -1,40 +0,0 @@ -// -// YMMonentsTopicLatestPresenter.m -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import "YUMISeparationsMotifRecentlyExternalizer.h" -#import "Api+Monents.h" -#import "AccountAbstractStorage.h" -#import "SeparationsStatementAbstractMatrix.h" -#import "FBCSeparationsMotifLatestCeremony.h" -@implementation YUMISeparationsMotifRecentlyExternalizer - -- (void)acquireSepartowardsionsMotifRecentlySttowardsement:(NSString *)dynamicId worldId:(NSString *)worldId state:(int)state { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api separtowardsionsMotifRecentlySttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - SeparationsStatementAbstractMatrix * model = [SeparationsStatementAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireSepartowardsionsMotifRecentlySttowardsementAccomplishment:model state:state]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireSepartowardsionsMotifRecentlySttowardsementFlunk:msg state:state]; - } EvidenceChambering:YES] uid:uid dynamicId:dynamicId types:@"0,2" worldId:worldId pageSize:@"20"]; -} - -- (void)similarMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * statusStr = status ? @"1" : @"0"; - [Api separtowardsionsSimilar:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] similarSepartowardsionsAccomplishment:dynamicId status:status]; - } EvidenceChambering:YES] dynamicId:dynamicId uid:uid status:statusStr likedUid:likedUid worldId:worldId]; -} - -- (void)representtowardsionSepartowardsions:(NSString *)dynamicId worldId:(NSString *)worldId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api separtowardsionsRepresenttowardsion:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] representtowardsionSepartowardsionsAccomplishment:dynamicId]; - } uid:uid dynamicId:dynamicId worldId:worldId]; -} - -@end diff --git a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsMotifStatementExternalizer.h b/YuMi/Modules/YMMonents/Presenter/YUMISeparationsMotifStatementExternalizer.h deleted file mode 100644 index 06dab67e..00000000 --- a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsMotifStatementExternalizer.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMMonentsTopicListPresenter.h -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISeparationsMotifStatementExternalizer : BaseMvpExternalizer -- (void)acquireMoentsMotifSttowardsement:(int)page pageSize:(int)pageSize state:(int)state; - -- (void)representtowardsionSepartowardsions:(NSString *)dynamicId worldId:(NSString *)worldId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsMotifStatementExternalizer.m b/YuMi/Modules/YMMonents/Presenter/YUMISeparationsMotifStatementExternalizer.m deleted file mode 100644 index 67adae2f..00000000 --- a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsMotifStatementExternalizer.m +++ /dev/null @@ -1,36 +0,0 @@ -// -// YMMonentsTopicListPresenter.m -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import "YUMISeparationsMotifStatementExternalizer.h" -#import "Api+Monents.h" -#import "AccountAbstractStorage.h" -#import "SeparationsMotifMatrix.h" -#import "FBCSeparationsMotifStatementCeremony.h" - -@implementation YUMISeparationsMotifStatementExternalizer - -- (void)acquireMoentsMotifSttowardsement:(int)page pageSize:(int)pageSize state:(int)state { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * pageStr = [NSString stringWithFormat:@"%d", page]; - NSString * pageSizeStr = [NSString stringWithFormat:@"%d", pageSize]; - [Api moentsMotifSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [SeparationsMotifMatrix mtowardsrixsAboutGarment:data.data[@"records"]]; - [[self acquireRegard] acquireSepartowardsionsMotifSttowardsementAccomplishment:array state:state]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireMoentsMotifFlunk:msg state:state]; - } EvidenceChambering:YES] uid:uid page:pageStr pageSize:pageSizeStr worldTypeId:@"0"]; -} - -- (void)representtowardsionSepartowardsions:(NSString *)dynamicId worldId:(NSString *)worldId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api separtowardsionsRepresenttowardsion:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] representtowardsionSepartowardsionsAccomplishment:dynamicId]; - } uid:uid dynamicId:dynamicId worldId:worldId]; -} - - -@end diff --git a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsProgrammingDisposition.h b/YuMi/Modules/YMMonents/Presenter/YUMISeparationsProgrammingDisposition.h deleted file mode 100644 index 321a7716..00000000 --- a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsProgrammingDisposition.h +++ /dev/null @@ -1,48 +0,0 @@ -// -// YMMonentsLayoutConfig.h -// YUMI -// -// Created by YUMI on 2022/5/12. -// - -#import -#import "YUMIMacroUitls.h" -NS_ASSUME_NONNULL_BEGIN -#define kMONENTS_CONTENT_LEFT_PADDING 67 -#define kMONENTS_CONTENT_RIGHT_PADDING 36 -#define kMONENTS_CONTENT_MAX_WIDTH (KScreenWidth - kMONENTS_CONTENT_LEFT_PADDING - kMONENTS_CONTENT_RIGHT_PADDING) -#define kMONENTS_PIC_ONE_WIDTH 200 -#define kMONENTS_PIC_SPACE 4 -#define kMONENTS_USER_INFO_HEIGHT 60 -#define kMONENTS_TOOL_BAR_HEIGHT 58 -#define kMONENTS_CONTENT_SPACAE_HEIGHT 12 -#define kMONENTS_TEXT_TOPIC_HEIGHT 20 -#define kMONENTS_FOLD_HEIGHT 20 -#pragma mark - 评论的配置 -#define kMONENTS_COMMENT_LEFT_PADDING 15 -#define kMONENTS_COMMENT_RIGHT_PADDING 25 -#define kMONENTS_COMMENT_AVATAR_NICK_PADDING 10 -#define KMONENTS_COMMENT_AVATAR_WIDTH 45 -#define KMONENTS_COMMENT_MAX_WIDTH (KScreenWidth - KMONENTS_COMMENT_AVATAR_WIDTH - kMONENTS_COMMENT_LEFT_PADDING - kMONENTS_COMMENT_RIGHT_PADDING - kMONENTS_COMMENT_AVATAR_NICK_PADDING) -#pragma mark - 评论回复的配置 -#define KMONENTS_COMMENT_REPLY_AVATAR_WIDTH 30 -#define kMONENTS_COMMENT_REPLY_LEFT_PADDING (kMONENTS_COMMENT_LEFT_PADDING + kMONENTS_COMMENT_RIGHT_PADDING + kMONENTS_COMMENT_AVATAR_NICK_PADDING) -#define KMONENTS_COMMENT_REPLY_MAX_WIDTH (KMONENTS_COMMENT_MAX_WIDTH - KMONENTS_COMMENT_REPLY_AVATAR_WIDTH - kMONENTS_COMMENT_AVATAR_NICK_PADDING) - -#pragma mark - 审核UI配置 -#define kSIMPLE_MONENTS_CONTENT_LEFT_PADDING 16 -#define kSIMPLE_MONENTS_CONTENT_RIGHT_PADDING 16 -#define kSIMPLE_MONENTS_CONTENT_MAX_WIDTH (KScreenWidth - kSIMPLE_MONENTS_CONTENT_LEFT_PADDING - kSIMPLE_MONENTS_CONTENT_RIGHT_PADDING) - -#define KSIMPLE_MONENTS_COMMENT_AVATAR_WIDTH 40 - -@class SeparationsAbstractMatrix, SeparationsJudgementMatrix; -@interface YUMISeparationsProgrammingDisposition : NSObject -+ (void)programmingSimpleSepartowardsionsMtowardsrix:(SeparationsAbstractMatrix *)reminiscence; -+ (void)programmingSepartowardsionsMtowardsrix:(SeparationsAbstractMatrix *)reminiscence; -+ (CGFloat)separtowardsionsGHPiicAltitude:(SeparationsAbstractMatrix *)reminiscence; -+ (CGFloat)separtowardsionsStowardsisfperformanceAltitude:(SeparationsAbstractMatrix *)reminiscence; -+ (CGFloat)judgementJudgementRowAltitude:(SeparationsJudgementMatrix * )comment; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsProgrammingDisposition.m b/YuMi/Modules/YMMonents/Presenter/YUMISeparationsProgrammingDisposition.m deleted file mode 100644 index 472854cd..00000000 --- a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsProgrammingDisposition.m +++ /dev/null @@ -1,249 +0,0 @@ -// -// YMMonentsLayoutConfig.m -// YUMI -// -// Created by YUMI on 2022/5/12. -// - -#import "YUMISeparationsProgrammingDisposition.h" -#import -#import "DJDKMIMOMColor.h" -#import "SeparationsAbstractMatrix.h" -#import "SeparationsJudgementMatrix.h" -#import "MHTSpiritFacilitater.h" - -@implementation YUMISeparationsProgrammingDisposition - -#pragma mark - 审核的布局 - -+ (void)programmingSimpleSepartowardsionsMtowardsrix:(SeparationsAbstractMatrix *)reminiscence { - CGFloat rowHeight = kMONENTS_CONTENT_SPACAE_HEIGHT; - - rowHeight += [self simpleSepartowardsionsStowardsisfperformanceAltitude:reminiscence]; - - rowHeight += [self separtowardsionsGHPiicAltitude:reminiscence]; - - if (reminiscence.type == MonentsContentGenre_Picture && reminiscence.content.length > 0) { - rowHeight += (kMONENTS_CONTENT_SPACAE_HEIGHT * 2); - }else { - rowHeight += kMONENTS_CONTENT_SPACAE_HEIGHT; - } - - rowHeight += kMONENTS_TEXT_TOPIC_HEIGHT; - reminiscence.rowHeight = rowHeight; -} - -+ (CGFloat)simpleSepartowardsionsStowardsisfperformanceAltitude:(SeparationsAbstractMatrix *)reminiscence { - if (reminiscence.content.length <= 0) { - reminiscence.contentHeight = 0; - return 0; - } - - if (!reminiscence.contentAttribute) { - NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] init]; - if (reminiscence.squareTop ) { - NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; - attachment.bounds = CGRectMake(0, 0, 25 * 1.3 ,10 * 1.3); - attachment.image = [UIImage imageNamed:@"yumi_monents_gen_top"]; - NSAttributedString * starAttribute = [NSMutableAttributedString attributedStringWithAttachment:(NSTextAttachment *)attachment]; - [attributedString insertAttributedString:starAttribute atIndex:0]; - } - [attributedString appendAttributedString:[self cretowardsBWSttTowardstrByBWStt:reminiscence.content attributed:@{NSFontAttributeName : [UIFont systemFontOfSize:15]}]]; - attributedString.yy_lineSpacing = 5; - attributedString.yy_lineBreakMode = NSLineBreakByWordWrapping; - reminiscence.contentAttribute = attributedString; - } - - YYTextContainer *container = [YYTextContainer new]; - container.size = CGSizeMake(kSIMPLE_MONENTS_CONTENT_MAX_WIDTH, CGFLOAT_MAX); - container.maximumNumberOfRows = 0; - YYTextLayout *layout = [YYTextLayout layoutWithContainer:container text:reminiscence.contentAttribute]; - reminiscence.numberOfText = layout.rowCount; - CGFloat foldHeight = 0; - if (layout.rowCount > 6) { - foldHeight = kMONENTS_FOLD_HEIGHT; - NSInteger numberOfLines = reminiscence.isFold ? 6 : 0; - container.maximumNumberOfRows = numberOfLines; - } - YYTextLayout *realLayout = [YYTextLayout layoutWithContainer:container text:reminiscence.contentAttribute]; - CGFloat contentHeight = realLayout.textBoundingSize.height; - reminiscence.contentHeight =contentHeight; - return contentHeight + foldHeight; -} - -+ (CGFloat)simpleSepartowardsionsGHPiicAltitude:(SeparationsAbstractMatrix *)reminiscence { - - NSInteger picCount = reminiscence.dynamicResList.count; - CGFloat picHeight = 0; - if (picCount == 0) { - picHeight = 0; - } else if(picCount == 1) { - picHeight = kMONENTS_PIC_ONE_WIDTH; - } else if(picCount == 2) { - picHeight = (kSIMPLE_MONENTS_CONTENT_MAX_WIDTH - kMONENTS_PIC_SPACE) / 2; - } else { - if (picCount > 9) { - picCount = 9; - } - CGFloat itemWidth = (kSIMPLE_MONENTS_CONTENT_MAX_WIDTH - kMONENTS_PIC_SPACE * 2) / 3; - NSInteger page = picCount % 3; - NSInteger line = picCount / 3; - if (page == 0) { - picHeight = itemWidth * line + (line -1)* kMONENTS_PIC_SPACE; - } else { - picHeight = itemWidth * (line +1) + line * kMONENTS_PIC_SPACE; - } - } - reminiscence.picHeight = picHeight; - return picHeight; -} - -#pragma mark - 正常的布局 - -+ (void)programmingSepartowardsionsMtowardsrix:(SeparationsAbstractMatrix *)reminiscence { - CGFloat rowHeight = kMONENTS_USER_INFO_HEIGHT; - - rowHeight += kMONENTS_CONTENT_SPACAE_HEIGHT; - - rowHeight += [self separtowardsionsStowardsisfperformanceAltitude:reminiscence]; - - rowHeight += [self separtowardsionsGHPiicAltitude:reminiscence]; - - if (reminiscence.type == MonentsContentGenre_Picture && reminiscence.content.length > 0) { - rowHeight += (kMONENTS_CONTENT_SPACAE_HEIGHT * 2); - }else { - rowHeight += kMONENTS_CONTENT_SPACAE_HEIGHT; - } - - rowHeight += kMONENTS_TEXT_TOPIC_HEIGHT; - - rowHeight += kMONENTS_TOOL_BAR_HEIGHT; - reminiscence.rowHeight = rowHeight; -} - -+ (CGFloat)separtowardsionsGHPiicAltitude:(SeparationsAbstractMatrix *)reminiscence { - - NSInteger picCount = reminiscence.dynamicResList.count; - CGFloat picHeight = 0; - if (picCount == 0) { - picHeight = 0; - } else if(picCount == 1) { - picHeight = kMONENTS_PIC_ONE_WIDTH; - } else if(picCount == 2) { - picHeight = (kMONENTS_CONTENT_MAX_WIDTH - kMONENTS_PIC_SPACE) / 2; - } else { - if (picCount > 9) { - picCount = 9; - } - CGFloat itemWidth = (kMONENTS_CONTENT_MAX_WIDTH - kMONENTS_PIC_SPACE * 2) / 3; - NSInteger page = picCount % 3; - NSInteger line = picCount / 3; - if (page == 0) { - picHeight = itemWidth * line + (line -1)* kMONENTS_PIC_SPACE; - } else { - picHeight = itemWidth * (line +1) + line * kMONENTS_PIC_SPACE; - } - } - reminiscence.picHeight = picHeight; - return picHeight; -} - -+ (CGFloat)separtowardsionsStowardsisfperformanceAltitude:(SeparationsAbstractMatrix *)reminiscence { - if (reminiscence.content.length <= 0) { - reminiscence.contentHeight = 0; - return 0; - } - - if (!reminiscence.contentAttribute) { - NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] init]; - if (reminiscence.squareTop ) { - NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; - attachment.bounds = CGRectMake(0, 0, 25 * 1.3 ,10 * 1.3); - attachment.image = [UIImage imageNamed:@"yumi_monents_gen_top"]; - NSAttributedString * starAttribute = [NSMutableAttributedString attributedStringWithAttachment:(NSTextAttachment *)attachment]; - [attributedString insertAttributedString:starAttribute atIndex:0]; - } - [attributedString appendAttributedString:[self cretowardsBWSttTowardstrByBWStt:reminiscence.content attributed:@{NSFontAttributeName : [UIFont systemFontOfSize:15]}]]; - attributedString.yy_lineSpacing = 5; - attributedString.yy_lineBreakMode = NSLineBreakByWordWrapping; - reminiscence.contentAttribute = attributedString; - } - - YYTextContainer *container = [YYTextContainer new]; - container.size = CGSizeMake(kMONENTS_CONTENT_MAX_WIDTH, CGFLOAT_MAX); - container.maximumNumberOfRows = 0; - YYTextLayout *layout = [YYTextLayout layoutWithContainer:container text:reminiscence.contentAttribute]; - reminiscence.numberOfText = layout.rowCount; - CGFloat foldHeight = 0; - if (layout.rowCount > 6) { - foldHeight = kMONENTS_FOLD_HEIGHT; - NSInteger numberOfLines = reminiscence.isFold ? 6 : 0; - container.maximumNumberOfRows = numberOfLines; - } - YYTextLayout *realLayout = [YYTextLayout layoutWithContainer:container text:reminiscence.contentAttribute]; - CGFloat contentHeight = realLayout.textBoundingSize.height; - reminiscence.contentHeight =contentHeight; - return contentHeight + foldHeight; -} - -+ (NSMutableAttributedString *)cretowardsBWSttTowardstrByBWStt:(NSString *)str attributed:(NSDictionary *)attribute{ - if (str.length == 0 || !str) { - str = @" "; - } - NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:str attributes:attribute]; - return attr; -} - -+ (CGFloat)judgementJudgementRowAltitude:(SeparationsJudgementMatrix * )comment { - if (comment.commentRowHeight > 0 && !comment.isReloadHeight) { - return comment.commentRowHeight; - } - __block CGFloat rowHeight = 0; - CGFloat commentTopHeight = 10 + 15 + 10; - - MHTSpiritFacilitater *faceManager = [MHTSpiritFacilitater partowardsiciptowardsiondSenintrtowardsemporalntFacilittowardseer]; - NSMutableAttributedString * attribute = [faceManager towardstributedBWSttrByEssay:comment.content font:[UIFont systemFontOfSize:15]]; - YYTextContainer *container = [YYTextContainer new]; - container.size = CGSizeMake(KMONENTS_COMMENT_REPLY_MAX_WIDTH, CGFLOAT_MAX); - container.maximumNumberOfRows = 0; - YYTextLayout *realLayout = [YYTextLayout layoutWithContainer:container text:attribute]; - CGFloat commentHeight = realLayout.textBoundingSize.height; - commentHeight = MAX(commentHeight, 15); - rowHeight += commentTopHeight; - rowHeight += commentHeight; - - - if (comment.replyInfo.leftCount > 0) { - rowHeight += 44; - } - - if (comment.replyInfo.replyList.count > 0) { - rowHeight += 10 * 2; - } else { - rowHeight += 10; - } - - - [comment.replyInfo.replyList enumerateObjectsUsingBlock:^(SeparationsReplicationMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.content.length > 0) { - [obj produceStowardsisfperformanceIdiosyncracy]; - CGFloat replayHeight = 0; - CGFloat commentTopHeight = 10 + 15 + 10; - CGFloat commentBottomHeight = 10; - YYTextContainer *container = [YYTextContainer new]; - container.size = CGSizeMake(KMONENTS_COMMENT_REPLY_MAX_WIDTH, CGFLOAT_MAX); - container.maximumNumberOfRows = 0; - YYTextLayout *realLayout = [YYTextLayout layoutWithContainer:container text:obj.contentAttribute]; - CGFloat replyContentHeight = realLayout.textBoundingSize.height; - replayHeight += commentTopHeight; - replayHeight += replyContentHeight; - replayHeight += commentBottomHeight; - obj.replyRowHeight = replayHeight; - rowHeight += replayHeight; - } - }]; - comment.commentRowHeight = rowHeight; - return rowHeight; -} - -@end diff --git a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsRecentlyExternalizer.h b/YuMi/Modules/YMMonents/Presenter/YUMISeparationsRecentlyExternalizer.h deleted file mode 100644 index b098a1ca..00000000 --- a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsRecentlyExternalizer.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMMonentsLatestPresenter.h -// YUMI -// -// Created by YUMI on 2022/5/18. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISeparationsRecentlyExternalizer : BaseMvpExternalizer - -- (void)acquireSepartowardsionsRecentlySttowardsementPeriodDimension:(NSInteger)pageSize dynamicId:(NSString *)dynamicId state:(int)state; - -- (void)similarMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId; - -- (void)representtowardsionSepartowardsions:(NSString *)dynamicId worldId:(NSString *)worldId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsRecentlyExternalizer.m b/YuMi/Modules/YMMonents/Presenter/YUMISeparationsRecentlyExternalizer.m deleted file mode 100644 index bf2cb0a9..00000000 --- a/YuMi/Modules/YMMonents/Presenter/YUMISeparationsRecentlyExternalizer.m +++ /dev/null @@ -1,43 +0,0 @@ -// -// YMMonentsLatestPresenter.m -// YUMI -// -// Created by YUMI on 2022/5/18. -// - -#import "YUMISeparationsRecentlyExternalizer.h" -#import "Api+Monents.h" -#import "SeparationsStatementAbstractMatrix.h" -#import "FBCSeparationsLatestCeremony.h" -#import "AccountAbstractStorage.h" -@implementation YUMISeparationsRecentlyExternalizer - -- (void)acquireSepartowardsionsRecentlySttowardsementPeriodDimension:(NSInteger)pageSize dynamicId:(NSString *)dynamicId state:(int)state { - if (dynamicId.length <= 0) { - dynamicId = @""; - } - NSString * pageSizeStr = [NSString stringWithFormat:@"%ld", pageSize]; - [Api separtowardsionsRecentlySttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - SeparationsStatementAbstractMatrix *listAbstract = [SeparationsStatementAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireSepartowardsionsRecentlySttowardsementAccomplishment:listAbstract state:state]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireSepartowardsionsRecentlySttowardsementFlunk:msg state:state]; - } EvidenceChambering:YES] dynamicId:dynamicId pageSize:pageSizeStr types:@"0,2"]; -} - -- (void)similarMonent:(NSString *)dynamicId status:(BOOL)status likedUid:(NSString *)likedUid worldId:(NSString *)worldId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * statusStr = status ? @"1" : @"0"; - [Api separtowardsionsSimilar:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] similarSepartowardsionsAccomplishment:dynamicId status:status]; - } EvidenceChambering:YES] dynamicId:dynamicId uid:uid status:statusStr likedUid:likedUid worldId:worldId]; -} - -- (void)representtowardsionSepartowardsions:(NSString *)dynamicId worldId:(NSString *)worldId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api separtowardsionsRepresenttowardsion:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] representtowardsionSepartowardsionsAccomplishment:dynamicId]; - } uid:uid dynamicId:dynamicId worldId:worldId]; -} - -@end diff --git a/YuMi/Modules/YMMonents/Protocol/FBCSeparationsConsiderationCeremony.h b/YuMi/Modules/YMMonents/Protocol/FBCSeparationsConsiderationCeremony.h deleted file mode 100644 index 82831e53..00000000 --- a/YuMi/Modules/YMMonents/Protocol/FBCSeparationsConsiderationCeremony.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMMonentsAttentionProtocol.h -// YUMI -// -// Created by YUMI on 2022/5/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class SeparationsStatementAbstractMatrix; -@protocol FBCSeparationsConsiderationCeremony -- (void)acquireSepartowardsionsConsidertowardsionSttowardsementAccomplishment:(SeparationsStatementAbstractMatrix *)listAbstract state:(int)state; -- (void)acquireSepartowardsionsConsidertowardsionSttowardsementFlunk:(NSString *)msg state:(int)state; - -- (void)similarSepartowardsionsAccomplishment:(NSString *)dynamicId status:(BOOL)status; - -- (void)representtowardsionSepartowardsionsAccomplishment:(NSString *)monentsInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Protocol/FBCSeparationsDetailCeremony.h b/YuMi/Modules/YMMonents/Protocol/FBCSeparationsDetailCeremony.h deleted file mode 100644 index 0a6d1740..00000000 --- a/YuMi/Modules/YMMonents/Protocol/FBCSeparationsDetailCeremony.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YMMonentsDetailProtocol.h -// YUMI -// -// Created by YUMI on 2022/6/23. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class SeparationsAbstractMatrix, SeparationsJudgementStatementMatrix, SeparationsJudgementReplicationMatrix; -@protocol FBCSeparationsDetailCeremony -- (void)acquireSepartowardsionsSpecificAccomplishment:(SeparationsAbstractMatrix *)judgementAbstract; - -- (void)acquireSepartowardsionsJudgementSttowardsementAccomplishment:(SeparationsJudgementStatementMatrix *)replyList state:(int)state; - -- (void)acquireSepartowardsionsJudgementReplictowardsionSttowardsementAccomplishment:(SeparationsJudgementReplicationMatrix *)replyInfo commentId:(NSString *)commentId; - -- (void)similarSepartowardsionsAccomplishment:(NSString *)dynamicId status:(BOOL)status; -- (void)representtowardsionSepartowardsionsAccomplishment:(NSString *)monentsInfo; - -- (void)commonSepartowardsionsAccomplishment; -- (void)replictowardsionSepartowardsionsAccomplishment; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Protocol/FBCSeparationsDetailRegardGovernancerRepresendtation.h b/YuMi/Modules/YMMonents/Protocol/FBCSeparationsDetailRegardGovernancerRepresendtation.h deleted file mode 100644 index 127b089c..00000000 --- a/YuMi/Modules/YMMonents/Protocol/FBCSeparationsDetailRegardGovernancerRepresendtation.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMMonentsDetailViewControllerDelegate.h -// YUMI -// -// Created by XY on 2023/2/22. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCSeparationsDetailRegardGovernancerRepresendtation - -- (void)yUMISepartowardsionsSpecificRegardGovernancer:(UIViewController *)view representtowardsionSepartowardsions:(NSString *)dynamicId; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Protocol/FBCSeparationsEncourageCeremony.h b/YuMi/Modules/YMMonents/Protocol/FBCSeparationsEncourageCeremony.h deleted file mode 100644 index fde7f6fe..00000000 --- a/YuMi/Modules/YMMonents/Protocol/FBCSeparationsEncourageCeremony.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMMonentsRecommendProtocol.h -// YUMI -// -// Created by YUMI on 2022/5/13. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCSeparationsEncourageCeremony - -- (void)acquireSepartowardsionsEncourageSttowardsementAccomplishment:(NSArray *)array state:(int)state; -- (void)acquireSepartowardsionsEncourageSttowardsementFlunk:(NSString *)msg state:(int)state; -- (void)separtowardsionsMotifSttowardsementAccomplishment:(NSArray *)array; -- (void)similarSepartowardsionsAccomplishment:(NSString *)dynamicId status:(BOOL)status; - -- (void)representtowardsionSepartowardsionsAccomplishment:(NSString *)monentsInfo; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Protocol/FBCSeparationsInteractiveCeremony.h b/YuMi/Modules/YMMonents/Protocol/FBCSeparationsInteractiveCeremony.h deleted file mode 100644 index 7eb8fc24..00000000 --- a/YuMi/Modules/YMMonents/Protocol/FBCSeparationsInteractiveCeremony.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMMonentsInteractiveProtocol.h -// YUMI -// -// Created by YUMI on 2022/5/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCSeparationsInteractiveCeremony - -- (void)acquireSepartowardsionsCoactiveSttowardsementSueccess:(NSArray *)array state:(int)state; -- (void)acquireSepartowardsionsCoactiveSttowardsementFlunk:(NSString *)msg state:(int)state; -- (void)prohibititinctCoactiveCommunictowardsionAccomplishment; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Protocol/FBCSeparationsLatestCeremony.h b/YuMi/Modules/YMMonents/Protocol/FBCSeparationsLatestCeremony.h deleted file mode 100644 index 21f61055..00000000 --- a/YuMi/Modules/YMMonents/Protocol/FBCSeparationsLatestCeremony.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YMMonentsLatestProtocol.h -// YUMI -// -// Created by YUMI on 2022/5/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class SeparationsStatementAbstractMatrix; -@protocol FBCSeparationsLatestCeremony -- (void)acquireSepartowardsionsRecentlySttowardsementAccomplishment:(SeparationsStatementAbstractMatrix *)listAbstract state:(int)state; -- (void)acquireSepartowardsionsRecentlySttowardsementFlunk:(NSString *)msg state:(int)state; - -- (void)similarSepartowardsionsAccomplishment:(NSString *)dynamicId status:(BOOL)status; -- (void)representtowardsionSepartowardsionsAccomplishment:(NSString *)monentsInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Protocol/FBCSeparationsManeCeremony.h b/YuMi/Modules/YMMonents/Protocol/FBCSeparationsManeCeremony.h deleted file mode 100644 index 4a0ac460..00000000 --- a/YuMi/Modules/YMMonents/Protocol/FBCSeparationsManeCeremony.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMMonentsMineProtocol.h -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCSeparationsManeCeremony -- (void)similarSepartowardsionsAccomplishment:(NSString *)dynamicId status:(BOOL)status; - -- (void)representtowardsionSepartowardsionsAccomplishment:(NSString *)monentsInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Protocol/FBCSeparationsMotifEncourageCeremony.h b/YuMi/Modules/YMMonents/Protocol/FBCSeparationsMotifEncourageCeremony.h deleted file mode 100644 index cbcf3d15..00000000 --- a/YuMi/Modules/YMMonents/Protocol/FBCSeparationsMotifEncourageCeremony.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMMonentsTopicRecommendProtocol.h -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class SeparationsStatementAbstractMatrix; -@protocol FBCSeparationsMotifEncourageCeremony - -- (void)acquireSepartowardsionsMotifEncourageSttowardsementAccomplishment:(SeparationsStatementAbstractMatrix *)info state:(int)state; - -- (void)acquireSepartowardsionsMotifEncourageSttowardsementFlunk:(NSString *)msg state:(int)state; - -- (void)similarSepartowardsionsAccomplishment:(NSString *)dynamicId status:(BOOL)status; - -- (void)representtowardsionSepartowardsionsAccomplishment:(NSString *)monentsInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Protocol/FBCSeparationsMotifLatestCeremony.h b/YuMi/Modules/YMMonents/Protocol/FBCSeparationsMotifLatestCeremony.h deleted file mode 100644 index 2a7612fa..00000000 --- a/YuMi/Modules/YMMonents/Protocol/FBCSeparationsMotifLatestCeremony.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMMonentsTopicLatestProtocol.h -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class SeparationsStatementAbstractMatrix; -@protocol FBCSeparationsMotifLatestCeremony -- (void)acquireSepartowardsionsMotifRecentlySttowardsementAccomplishment:(SeparationsStatementAbstractMatrix *)info state:(int)state; - -- (void)acquireSepartowardsionsMotifRecentlySttowardsementFlunk:(NSString *)msg state:(int)state; - -- (void)similarSepartowardsionsAccomplishment:(NSString *)dynamicId status:(BOOL)status; - -- (void)representtowardsionSepartowardsionsAccomplishment:(NSString *)monentsInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Protocol/FBCSeparationsMotifStatementCeremony.h b/YuMi/Modules/YMMonents/Protocol/FBCSeparationsMotifStatementCeremony.h deleted file mode 100644 index e71ec80f..00000000 --- a/YuMi/Modules/YMMonents/Protocol/FBCSeparationsMotifStatementCeremony.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YMMonentsTopicListProtocol.h -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCSeparationsMotifStatementCeremony -- (void)acquireSepartowardsionsMotifSttowardsementAccomplishment:(NSArray *)list state:(int)state; - -- (void)acquireMoentsMotifFlunk:(NSString *)message state:(int)state; - -- (void)representtowardsionSepartowardsionsAccomplishment:(NSString *)monentsInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Protocol/FBCSeparationsPublishCeremony.h b/YuMi/Modules/YMMonents/Protocol/FBCSeparationsPublishCeremony.h deleted file mode 100644 index c23d8135..00000000 --- a/YuMi/Modules/YMMonents/Protocol/FBCSeparationsPublishCeremony.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMMonentsPublishProtocol.h -// YUMI -// -// Created by YUMI on 2022/7/1. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCSeparationsPublishCeremony - -- (void)announceSepartowardsionsAccomplishment; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Protocol/XPMonentsAttentionProtocol.h b/YuMi/Modules/YMMonents/Protocol/XPMonentsAttentionProtocol.h new file mode 100644 index 00000000..1c8926d3 --- /dev/null +++ b/YuMi/Modules/YMMonents/Protocol/XPMonentsAttentionProtocol.h @@ -0,0 +1,25 @@ +// +// YMMonentsAttentionProtocol.h +// YUMI +// +// Created by YUMI on 2022/5/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class MonentsListInfoModel; +@protocol XPMonentsAttentionProtocol +///获取最新列表从成功 +- (void)getMonentsAttentionListSuccess:(MonentsListInfoModel *)listInfo state:(int)state; +///获取最新列表失败 +- (void)getMonentsAttentionListFail:(NSString *)msg state:(int)state; + +///点赞/取消动态成功 +- (void)likeMonentsSuccess:(NSString *)dynamicId status:(BOOL)status; + +///删除话题成功 +- (void)deleteMonentsSuccess:(NSString *)monentsInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Protocol/XPMonentsDetailProtocol.h b/YuMi/Modules/YMMonents/Protocol/XPMonentsDetailProtocol.h new file mode 100644 index 00000000..1864a81f --- /dev/null +++ b/YuMi/Modules/YMMonents/Protocol/XPMonentsDetailProtocol.h @@ -0,0 +1,33 @@ +// +// YMMonentsDetailProtocol.h +// YUMI +// +// Created by YUMI on 2022/6/23. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class MonentsInfoModel, MonentsCommentListModel, MonentsCommentReplyModel; +@protocol XPMonentsDetailProtocol +///获取动态详情成功 +- (void)getMonentsDetailSuccess:(MonentsInfoModel *)commentInfo; + +///获取动态 评论的列表 +- (void)getMonentsCommentListSuccess:(MonentsCommentListModel *)replyList state:(int)state; + +///评论回复成功 +- (void)getMonentsCommentReplyListSuccess:(MonentsCommentReplyModel *)replyInfo commentId:(NSString *)commentId; + +///点赞/取消动态成功 +- (void)likeMonentsSuccess:(NSString *)dynamicId status:(BOOL)status; +///删除话题成功 +- (void)deleteMonentsSuccess:(NSString *)monentsInfo; + +///评论动态成功 +- (void)commonMonentsSuccess; +///回复某人评论成功 +- (void)replyMonentsSuccess; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Protocol/XPMonentsDetailViewControllerDelegate.h b/YuMi/Modules/YMMonents/Protocol/XPMonentsDetailViewControllerDelegate.h new file mode 100644 index 00000000..fcc87071 --- /dev/null +++ b/YuMi/Modules/YMMonents/Protocol/XPMonentsDetailViewControllerDelegate.h @@ -0,0 +1,19 @@ +// +// YMMonentsDetailViewControllerDelegate.h +// YUMI +// +// Created by XY on 2023/2/22. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMonentsDetailViewControllerDelegate + +///删除了动态 +- (void)xPMonentsDetailViewController:(UIViewController *)view deleteMonents:(NSString *)dynamicId; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Protocol/XPMonentsInteractiveProtocol.h b/YuMi/Modules/YMMonents/Protocol/XPMonentsInteractiveProtocol.h new file mode 100644 index 00000000..8b9311d8 --- /dev/null +++ b/YuMi/Modules/YMMonents/Protocol/XPMonentsInteractiveProtocol.h @@ -0,0 +1,20 @@ +// +// YMMonentsInteractiveProtocol.h +// YUMI +// +// Created by YUMI on 2022/5/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMonentsInteractiveProtocol + +- (void)getMonentsInteractiveListSueccess:(NSArray *)array state:(int)state; +- (void)getMonentsInteractiveListFail:(NSString *)msg state:(int)state; +///清空互动消息 +- (void)clearInteractiveMessageSuccess; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Protocol/XPMonentsLatestProtocol.h b/YuMi/Modules/YMMonents/Protocol/XPMonentsLatestProtocol.h new file mode 100644 index 00000000..5c86abd3 --- /dev/null +++ b/YuMi/Modules/YMMonents/Protocol/XPMonentsLatestProtocol.h @@ -0,0 +1,24 @@ +// +// YMMonentsLatestProtocol.h +// YUMI +// +// Created by YUMI on 2022/5/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class MonentsListInfoModel; +@protocol XPMonentsLatestProtocol +///获取最新列表从成功 +- (void)getMonentsLatestListSuccess:(MonentsListInfoModel *)listInfo state:(int)state; +///获取最新列表从失败 +- (void)getMonentsLatestListFail:(NSString *)msg state:(int)state; + +///点赞/取消动态成功 +- (void)likeMonentsSuccess:(NSString *)dynamicId status:(BOOL)status; +///删除话题成功 +- (void)deleteMonentsSuccess:(NSString *)monentsInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Protocol/XPMonentsMineProtocol.h b/YuMi/Modules/YMMonents/Protocol/XPMonentsMineProtocol.h new file mode 100644 index 00000000..fdb368c3 --- /dev/null +++ b/YuMi/Modules/YMMonents/Protocol/XPMonentsMineProtocol.h @@ -0,0 +1,20 @@ +// +// YMMonentsMineProtocol.h +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMonentsMineProtocol +///点赞/取消动态成功 +- (void)likeMonentsSuccess:(NSString *)dynamicId status:(BOOL)status; + +///删除话题成功 +- (void)deleteMonentsSuccess:(NSString *)monentsInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Protocol/XPMonentsPublishProtocol.h b/YuMi/Modules/YMMonents/Protocol/XPMonentsPublishProtocol.h new file mode 100644 index 00000000..0993facc --- /dev/null +++ b/YuMi/Modules/YMMonents/Protocol/XPMonentsPublishProtocol.h @@ -0,0 +1,18 @@ +// +// YMMonentsPublishProtocol.h +// YUMI +// +// Created by YUMI on 2022/7/1. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMonentsPublishProtocol + +- (void)publishMonentsSuccess; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Protocol/XPMonentsRecommendProtocol.h b/YuMi/Modules/YMMonents/Protocol/XPMonentsRecommendProtocol.h new file mode 100644 index 00000000..b2d07919 --- /dev/null +++ b/YuMi/Modules/YMMonents/Protocol/XPMonentsRecommendProtocol.h @@ -0,0 +1,28 @@ +// +// YMMonentsRecommendProtocol.h +// YUMI +// +// Created by YUMI on 2022/5/13. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMonentsRecommendProtocol + +///获取推荐列表从成功 +- (void)getMonentsRecommendListSuccess:(NSArray *)array state:(int)state; +///获取推荐列表失败 +- (void)getMonentsRecommendListFail:(NSString *)msg state:(int)state; +///获取话题列表成功 +- (void)monentsTopicListSuccess:(NSArray *)array; +///点赞/取消动态成功 +- (void)likeMonentsSuccess:(NSString *)dynamicId status:(BOOL)status; + +///删除话题成功 +- (void)deleteMonentsSuccess:(NSString *)monentsInfo; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Protocol/XPMonentsTopicLatestProtocol.h b/YuMi/Modules/YMMonents/Protocol/XPMonentsTopicLatestProtocol.h new file mode 100644 index 00000000..b24ee993 --- /dev/null +++ b/YuMi/Modules/YMMonents/Protocol/XPMonentsTopicLatestProtocol.h @@ -0,0 +1,24 @@ +// +// YMMonentsTopicLatestProtocol.h +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class MonentsListInfoModel; +@protocol XPMonentsTopicLatestProtocol +- (void)getMonentsTopicLatestListSuccess:(MonentsListInfoModel *)info state:(int)state; + +- (void)getMonentsTopicLatestListFail:(NSString *)msg state:(int)state; + +///点赞/取消动态成功 +- (void)likeMonentsSuccess:(NSString *)dynamicId status:(BOOL)status; + +///删除话题成功 +- (void)deleteMonentsSuccess:(NSString *)monentsInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Protocol/XPMonentsTopicListProtocol.h b/YuMi/Modules/YMMonents/Protocol/XPMonentsTopicListProtocol.h new file mode 100644 index 00000000..4b506355 --- /dev/null +++ b/YuMi/Modules/YMMonents/Protocol/XPMonentsTopicListProtocol.h @@ -0,0 +1,21 @@ +// +// YMMonentsTopicListProtocol.h +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMonentsTopicListProtocol +- (void)getMonentsTopicListSuccess:(NSArray *)list state:(int)state; + +- (void)getMoentsTopicFail:(NSString *)message state:(int)state; + +///删除话题成功 +- (void)deleteMonentsSuccess:(NSString *)monentsInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/Protocol/XPMonentsTopicRecommendProtocol.h b/YuMi/Modules/YMMonents/Protocol/XPMonentsTopicRecommendProtocol.h new file mode 100644 index 00000000..292c920d --- /dev/null +++ b/YuMi/Modules/YMMonents/Protocol/XPMonentsTopicRecommendProtocol.h @@ -0,0 +1,25 @@ +// +// YMMonentsTopicRecommendProtocol.h +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class MonentsListInfoModel; +@protocol XPMonentsTopicRecommendProtocol + +- (void)getMonentsTopicRecommendListSuccess:(MonentsListInfoModel *)info state:(int)state; + +- (void)getMonentsTopicRecommendListFail:(NSString *)msg state:(int)state; + +///点赞/取消动态成功 +- (void)likeMonentsSuccess:(NSString *)dynamicId status:(BOOL)status; + +///删除话题成功 +- (void)deleteMonentsSuccess:(NSString *)monentsInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/Cell/XPMomentListCollectionViewCell.h b/YuMi/Modules/YMMonents/View/Cell/XPMomentListCollectionViewCell.h new file mode 100644 index 00000000..3781f44a --- /dev/null +++ b/YuMi/Modules/YMMonents/View/Cell/XPMomentListCollectionViewCell.h @@ -0,0 +1,20 @@ +// +// YMMomentListCollectionViewCell.h +// YUMI +// +// Created by XY on 2023/2/16. +// + +#import + +@class MonentsInfoModel; + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMomentListCollectionViewCell : UICollectionViewCell + +@property (nonatomic,strong) MonentsInfoModel *monentsInfo; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/Cell/XPMomentListCollectionViewCell.m b/YuMi/Modules/YMMonents/View/Cell/XPMomentListCollectionViewCell.m new file mode 100644 index 00000000..f2656cd8 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/Cell/XPMomentListCollectionViewCell.m @@ -0,0 +1,161 @@ +// +// YMMomentListCollectionViewCell.m +// YUMI +// +// Created by XY on 2023/2/16. +// + +#import "XPMomentListCollectionViewCell.h" +#import "DJDKMIMOMColor.h" +#import +#import "NetImageView.h" +#import "NSArray+Safe.h" + +#import "MonentsInfoModel.h" + +@interface XPMomentListCollectionViewCell() + +/// 文字底部渐变背景 +@property (nonatomic, strong) CAGradientLayer *bgLayer; +/// 封面图 +@property (nonatomic, strong) NetImageView *coverImageView; +/// 点赞图标 +@property (nonatomic, strong) UIButton *likeBtn; +/// 点赞数量 +@property (nonatomic, strong) UILabel *countLabel; +/// 标题 +@property (nonatomic, strong) UILabel *titleLabel; +/// 头像 +@property (nonatomic, strong) NetImageView *avatarImageView; + +@end + +@implementation XPMomentListCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + self.contentView.layer.cornerRadius = 12; + self.contentView.clipsToBounds = YES; + [self createUI]; + + } + return self; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + self.bgLayer.frame = CGRectMake(0, self.contentView.bounds.size.height-78, self.contentView.bounds.size.width, 78); +} + +- (void)createUI { + [self.contentView addSubview:self.coverImageView]; + [self.contentView.layer addSublayer:self.bgLayer]; + [self.contentView addSubview:self.likeBtn]; + [self.contentView addSubview:self.countLabel]; + [self.contentView addSubview:self.titleLabel]; + [self.contentView addSubview:self.avatarImageView]; + + [self.coverImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.contentView); + }]; + [self.likeBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(8); + make.bottom.mas_equalTo(-12); + make.width.mas_equalTo(14); + make.height.mas_equalTo(14); + }]; + [self.countLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.likeBtn.mas_right).offset(2); + make.centerY.mas_equalTo(self.likeBtn); + make.right.mas_lessThanOrEqualTo(-8); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(8); + make.bottom.mas_equalTo(self.likeBtn.mas_top).offset(-2); + make.right.mas_equalTo(-8); + }]; + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-4); + make.bottom.mas_equalTo(-4); + make.width.height.mas_equalTo(24); + }]; +} + +#pragma mark - Getters And Setters +- (void)setMonentsInfo:(MonentsInfoModel *)monentsInfo { + _monentsInfo = monentsInfo; + if (_monentsInfo) { + if (_monentsInfo.dynamicResList.count > 0) { + MonentsPicInfoModel * picInfo = [_monentsInfo.dynamicResList safeObjectAtIndex1:0]; + self.coverImageView.imageUrl = picInfo.resUrl; + }else{ + self.coverImageView.imageUrl = _monentsInfo.avatar; + } + self.avatarImageView.imageUrl = _monentsInfo.avatar; + self.titleLabel.text = _monentsInfo.content; + self.likeBtn.selected = _monentsInfo.isLike; + self.countLabel.text = _monentsInfo.likeCount.length > 0 ? _monentsInfo.likeCount : @"0"; + } +} + +#pragma mark - 懒加载 + +- (CAGradientLayer *)bgLayer { + if (!_bgLayer) { + _bgLayer = [[CAGradientLayer alloc] init]; + _bgLayer.colors = @[(__bridge id)[UIColor.blackColor colorWithAlphaComponent:0].CGColor, (__bridge id)[UIColor.blackColor colorWithAlphaComponent:0.4].CGColor]; + _bgLayer.locations = @[@0, @1]; + _bgLayer.startPoint = CGPointMake(0.5, 0); + _bgLayer.endPoint = CGPointMake(0.5, 1); + } + return _bgLayer; +} + +- (NetImageView *)coverImageView { + if (!_coverImageView) { + _coverImageView = [[NetImageView alloc] init]; + _coverImageView.contentMode = UIViewContentModeScaleAspectFill; + } + return _coverImageView; +} + +- (UIButton *)likeBtn { + if (!_likeBtn) { + _likeBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_likeBtn setImage:[UIImage imageNamed:@"monents_info_like_count_normal"] forState:UIControlStateNormal]; + [_likeBtn setImage:[UIImage imageNamed:@"monents_info_like_count_select"] forState:UIControlStateSelected]; + } + return _likeBtn; +} + +- (UILabel *)countLabel { + if (!_countLabel) { + _countLabel = [[UILabel alloc] init]; + _countLabel.textColor = UIColor.whiteColor; + _countLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + } + return _countLabel; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textColor = UIColor.whiteColor; + _titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _titleLabel.numberOfLines = 5; + } + return _titleLabel; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + _avatarImageView = [[NetImageView alloc] init]; + _avatarImageView.contentMode = UIViewContentModeScaleAspectFill; + _avatarImageView.layer.cornerRadius = 24/2; + _avatarImageView.clipsToBounds = YES; + } + return _avatarImageView; +} + +@end diff --git a/YuMi/Modules/YMMonents/View/Cell/XPMonentsCommentTableViewCell.h b/YuMi/Modules/YMMonents/View/Cell/XPMonentsCommentTableViewCell.h new file mode 100644 index 00000000..fe47715a --- /dev/null +++ b/YuMi/Modules/YMMonents/View/Cell/XPMonentsCommentTableViewCell.h @@ -0,0 +1,28 @@ +// +// YMMonentsCommentTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/6/22. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class MonentsCommentModel, XPMonentsCommentTableViewCell, MonentsReplyModel; + +@protocol XPMonentsCommentTableViewCellDelegate +///点击了查看更多 +- (void)xPMonentsCommentTableViewCell:(XPMonentsCommentTableViewCell *)view didClickMoreReply:(MonentsCommentModel *)commentInfo; +///点击了某个评论 +- (void)xPMonentsCommentTableViewCell:(XPMonentsCommentTableViewCell *)view didClickCommon:(MonentsReplyModel *)commentInfo; +///点击了头想 +- (void)xPMonentsCommentTableViewCell:(XPMonentsCommentTableViewCell *)view didClickAvatar:(NSString *)commentInfo; +@end + +@interface XPMonentsCommentTableViewCell : UITableViewCell +@property (nonatomic,strong) MonentsCommentModel *commentInfo; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/Cell/XPMonentsCommentTableViewCell.m b/YuMi/Modules/YMMonents/View/Cell/XPMonentsCommentTableViewCell.m new file mode 100644 index 00000000..a05e70a1 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/Cell/XPMonentsCommentTableViewCell.m @@ -0,0 +1,376 @@ +// +// YMMonentsCommentTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/6/22. +// + +#import "XPMonentsCommentTableViewCell.h" +///Third +#import +#import +///Tool +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" +#import "XPMonentsLayoutConfig.h" +#import "NSString+Utils.h" +#import "QEmotionHelper.h" +#import "AccountInfoStorage.h" +#import "NSArray+Safe.h" +///Model +#import "MonentsCommentModel.h" +///View +#import "XPMonentsReplyTableViewCell.h" +#import "XPMonentsReplyMoreTableViewCell.h" + +@interface XPMonentsCommentTableViewCell () +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///评论者 +@property (nonatomic,strong) UIView * commentUserView; +///评论者的头像 +@property (nonatomic,strong) NetImageView *commentAvatarView; +///评论者的昵称 +@property (nonatomic,strong) UILabel *commentNickLabel; +///楼主 +@property (nonatomic,strong) UIImageView *ownerImageView; +///评论的内容 +@property (nonatomic,strong) YYLabel *commentLabel; +///时间 +@property (nonatomic,strong) UILabel *commentDateLabel; +///列表 +@property (nonatomic,strong) UITableView *tableView; +///容器 +@property (nonatomic,strong) UIView * lineContainerView; +///分割线 +@property (nonatomic,strong) UIView * lineView; +///数据源 +@property (nonatomic,strong) NSArray *datasource; +@end + +@implementation XPMonentsCommentTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method + +- (void)initSubViews { + self.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.stackView]; + [self.stackView addArrangedSubview:self.commentUserView]; + [self.stackView addArrangedSubview:self.tableView]; + [self.stackView addArrangedSubview:self.lineContainerView]; + + [self.lineContainerView addSubview:self.lineView]; + + [self.commentUserView addSubview:self.commentAvatarView]; + [self.commentUserView addSubview:self.commentNickLabel]; + [self.commentUserView addSubview:self.ownerImageView]; + [self.commentUserView addSubview:self.commentLabel]; + [self.commentUserView addSubview:self.commentDateLabel]; +} + +- (void)initSubViewConstraints { + if ([self.reuseIdentifier isEqualToString:NSStringFromClass([XPMonentsCommentTableViewCell class])]) { + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.left.mas_equalTo(self.contentView).inset(15); + make.top.bottom.mas_equalTo(self.contentView); + }]; + + [self.lineContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(1); + }]; + + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.commentNickLabel); + make.top.bottom.right.mas_equalTo(self.lineContainerView); + }]; + + [self.commentAvatarView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(KMONENTS_COMMENT_AVATAR_WIDTH, KMONENTS_COMMENT_AVATAR_WIDTH)); + make.left.mas_equalTo(self.commentUserView); + make.top.mas_equalTo(self.commentUserView).offset(10); + }]; + + [self.commentNickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.commentAvatarView.mas_right).offset(10); + make.top.mas_equalTo(self.commentUserView).offset(10); + make.height.mas_equalTo(15); + }]; + + [self.ownerImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(32, 15)); + make.centerY.mas_equalTo(self.commentNickLabel); + make.left.mas_equalTo(self.commentNickLabel.mas_right).offset(5); + }]; + + [self.commentDateLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.commentUserView); + make.centerY.mas_equalTo(self.commentNickLabel); + }]; + + [self.commentLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.commentNickLabel); + make.top.mas_equalTo(self.commentNickLabel.mas_bottom).offset(10); + make.right.mas_equalTo(self.commentUserView).offset(-kMONENTS_COMMENT_RIGHT_PADDING); + }]; + + }else{ + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.left.mas_equalTo(self.contentView).inset(15); + make.top.bottom.mas_equalTo(self.contentView); + }]; + + [self.lineContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(1); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.commentNickLabel); + make.top.bottom.right.mas_equalTo(self.lineContainerView); + }]; + + [self.commentAvatarView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(KMONENTS_COMMENT_AVATAR_WIDTH, KMONENTS_COMMENT_AVATAR_WIDTH)); + make.left.mas_equalTo(self.commentUserView); + make.top.mas_equalTo(self.commentUserView).offset(10); + }]; + + [self.commentNickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.commentAvatarView.mas_right).offset(10); + make.top.mas_equalTo(self.commentUserView).offset(10); + make.height.mas_equalTo(15); + }]; + + [self.ownerImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(32, 15)); + make.centerY.mas_equalTo(self.commentNickLabel); + make.left.mas_equalTo(self.commentNickLabel.mas_right).offset(5); + }]; + + [self.commentDateLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.commentUserView); + make.centerY.mas_equalTo(self.commentNickLabel); + }]; + + [self.commentLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.commentNickLabel); + make.top.mas_equalTo(self.commentNickLabel.mas_bottom).offset(10); + make.right.mas_equalTo(self.commentUserView).offset(-kMONENTS_COMMENT_RIGHT_PADDING); + }]; + } +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 2; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + if (section == 0) { + return self.datasource.count; + } + return self.commentInfo.replyInfo.leftCount > 0 ? 1 : 0; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (indexPath.section == 0) { + MonentsReplyModel * replayinfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + return replayinfo.replyRowHeight; + } + return 44; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (indexPath.section == 0) { + XPMonentsReplyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMonentsReplyTableViewCell class])]; + cell.replyInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.delegate = self; + return cell; + } + XPMonentsReplyMoreTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMonentsReplyMoreTableViewCell class])]; + cell.leftCount = self.commentInfo.replyInfo.leftCount; + cell.delegate = self; + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (indexPath.section == 0 && self.datasource.count > 0) { + MonentsReplyModel * replyInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + if (replyInfo.uid.integerValue != [AccountInfoStorage instance].getUid.integerValue && self.delegate && [self.delegate respondsToSelector:@selector(xPMonentsCommentTableViewCell:didClickCommon:)]) { + [self.delegate xPMonentsCommentTableViewCell:self didClickCommon:replyInfo]; + } + } +} + +#pragma mark - XPMonentsReplyTableViewCellDelegate +- (void)xPMonentsReplyTableViewCell:(XPMonentsReplyTableViewCell *)view didClickAvatar:(MonentsReplyModel *)replyInfo { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMonentsCommentTableViewCell:didClickAvatar:)]) { + [self.delegate xPMonentsCommentTableViewCell:self didClickAvatar:replyInfo.uid]; + } +} + +#pragma mark - XPMonentsReplyMoreTableViewCellDelegate +- (void)xPMonentsReplyMoreTableViewCellDidClickMoreReply:(XPMonentsReplyMoreTableViewCell *)view { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMonentsCommentTableViewCell:didClickMoreReply:)]) { + [self.delegate xPMonentsCommentTableViewCell:self didClickMoreReply:self.commentInfo]; + } +} + +#pragma mark - Event Response +- (void)tapAvatarRecognizer { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMonentsCommentTableViewCell:didClickAvatar:)]) { + [self.delegate xPMonentsCommentTableViewCell:self didClickAvatar:self.commentInfo.uid]; + } +} + +#pragma mark - Getters And Setters +- (void)setCommentInfo:(MonentsCommentModel *)commentInfo { + _commentInfo = commentInfo; + if (_commentInfo) { + self.ownerImageView.hidden = !_commentInfo.landLordFlag; + self.commentAvatarView.imageUrl = _commentInfo.avatar; + NSString * nick = _commentInfo.nick; + if (nick.length > 8) { + nick = [nick substringToIndex:8]; + } + QEmotionHelper *faceManager = [QEmotionHelper sharedEmotionHelper]; + ///内容 + NSMutableAttributedString * attribute = [faceManager attributedStringByText:_commentInfo.content font:[UIFont systemFontOfSize:15]]; + self.commentLabel.attributedText = attribute; + self.commentNickLabel.text = nick; + self.commentDateLabel.text = [NSString stringWithTimeStamp:_commentInfo.publishTime]; + self.tableView.hidden = _commentInfo.replyInfo.replyList.count <=0; + self.datasource = _commentInfo.replyInfo.replyList; + [self.tableView reloadData]; + if (_commentInfo.replyInfo.replyList.count > 0) { + NSString * content = _commentInfo.content.length > 0 ? _commentInfo.content : @""; + CGFloat commentHeight = [content boundingRectWithSize:CGSizeMake(KMONENTS_COMMENT_MAX_WIDTH, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:15]} context:nil].size.height + 5; + commentHeight = MAX(commentHeight, 15); + [self.commentUserView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(commentHeight + 10 + 15 + 10); + }]; + } + + } +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 10; + } + return _stackView; +} + +- (UIView *)commentUserView { + if (!_commentUserView) { + _commentUserView = [[UIView alloc] init]; + _commentUserView.backgroundColor = [UIColor clearColor]; + } + return _commentUserView; +} + +- (NetImageView *)commentAvatarView { + if (!_commentAvatarView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _commentAvatarView = [[NetImageView alloc] initWithConfig:config]; + _commentAvatarView.layer.masksToBounds = YES; + _commentAvatarView.layer.cornerRadius = 45/2.0; + _commentAvatarView.userInteractionEnabled = YES; + UITapGestureRecognizer * tap= [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAvatarRecognizer)]; + [_commentAvatarView addGestureRecognizer:tap]; + } + return _commentAvatarView; +} + +- (UILabel *)commentNickLabel { + if (!_commentNickLabel) { + _commentNickLabel = [[UILabel alloc] init]; + _commentNickLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + _commentNickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + [_commentNickLabel sizeToFit]; + } + return _commentNickLabel; +} + +- (YYLabel *)commentLabel { + if (!_commentLabel) { + _commentLabel = [[YYLabel alloc] init]; + _commentLabel.font = [UIFont systemFontOfSize:15]; + _commentLabel.numberOfLines = 0; + _commentLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _commentLabel.preferredMaxLayoutWidth = KMONENTS_COMMENT_MAX_WIDTH; + } + return _commentLabel; +} + +- (UILabel *)commentDateLabel { + if (!_commentDateLabel) { + _commentDateLabel = [[UILabel alloc] init]; + _commentDateLabel.font = [UIFont systemFontOfSize:12]; + _commentDateLabel.textColor = [DJDKMIMOMColor textThirdColor]; + } + return _commentDateLabel; +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + _tableView.scrollEnabled = NO; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPMonentsReplyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMonentsReplyTableViewCell class])]; + [_tableView registerClass:[XPMonentsReplyMoreTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMonentsReplyMoreTableViewCell class])]; + } + return _tableView; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _lineView; +} + +- (UIView *)lineContainerView { + if (!_lineContainerView) { + _lineContainerView = [[UIView alloc] init]; + _lineContainerView.backgroundColor = [UIColor clearColor]; + } + return _lineContainerView; +} + +- (UIImageView *)ownerImageView { + if (!_ownerImageView) { + _ownerImageView = [[UIImageView alloc] init]; + _ownerImageView.userInteractionEnabled = YES; + _ownerImageView.image = [UIImage imageNamed:@"monents_common_landLordFlag"]; + _ownerImageView.hidden = YES; + } + return _ownerImageView; +} + +@end diff --git a/YuMi/Modules/YMMonents/View/Cell/XPMonentsEmptyTableViewCell.h b/YuMi/Modules/YMMonents/View/Cell/XPMonentsEmptyTableViewCell.h new file mode 100644 index 00000000..e3535711 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/Cell/XPMonentsEmptyTableViewCell.h @@ -0,0 +1,16 @@ +// +// YMMonentsEmptyTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/5/13. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMonentsEmptyTableViewCell : UITableViewCell + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/Cell/XPMonentsEmptyTableViewCell.m b/YuMi/Modules/YMMonents/View/Cell/XPMonentsEmptyTableViewCell.m new file mode 100644 index 00000000..36f5a68e --- /dev/null +++ b/YuMi/Modules/YMMonents/View/Cell/XPMonentsEmptyTableViewCell.m @@ -0,0 +1,72 @@ +// +// YMMonentsEmptyTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/5/13. +// + +#import "XPMonentsEmptyTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImageConstant.h" + +@interface XPMonentsEmptyTableViewCell () +@property (nonatomic,strong) UIImageView *emptyImageView; +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPMonentsEmptyTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.emptyImageView]; + [self.contentView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.emptyImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.contentView).offset(150); + make.centerX.mas_equalTo(self.contentView); + make.size.mas_equalTo(CGSizeMake(200, 200)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.emptyImageView.mas_bottom).offset(20); + make.left.right.mas_equalTo(self.contentView); + }]; +} +#pragma mark - Getters And Setters +- (UIImageView *)emptyImageView { + if (!_emptyImageView) { + _emptyImageView = [[UIImageView alloc] init]; + _emptyImageView.userInteractionEnabled = YES; + _emptyImageView.image = [UIImageConstant defalutEmptyPlaceholder]; + _emptyImageView.layer.masksToBounds = YES; + _emptyImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _emptyImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPMonentsEmptyTableViewCell0"); + _titleLabel.font = [UIFont systemFontOfSize:16]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMMonents/View/Cell/XPMonentsInteractiveTableViewCell.h b/YuMi/Modules/YMMonents/View/Cell/XPMonentsInteractiveTableViewCell.h new file mode 100644 index 00000000..19d475ed --- /dev/null +++ b/YuMi/Modules/YMMonents/View/Cell/XPMonentsInteractiveTableViewCell.h @@ -0,0 +1,16 @@ +// +// YMMonentsInteractiveTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/5/19. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class MonentsInteractiveModel; +@interface XPMonentsInteractiveTableViewCell : UITableViewCell +@property (nonatomic,strong) MonentsInteractiveModel *interactiveInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/Cell/XPMonentsInteractiveTableViewCell.m b/YuMi/Modules/YMMonents/View/Cell/XPMonentsInteractiveTableViewCell.m new file mode 100644 index 00000000..a7974d45 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/Cell/XPMonentsInteractiveTableViewCell.m @@ -0,0 +1,308 @@ +// +// YMMonentsInteractiveTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/5/19. +// + +#import "XPMonentsInteractiveTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "YUMIMacroUitls.h" +#import "UIImage+Utils.h" +///Model +#import "MonentsInteractiveModel.h" + +@interface XPMonentsInteractiveTableViewCell () +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///显示话题 +@property (nonatomic,strong) UIButton *topicButton; +///显示内容 +@property (nonatomic,strong) UIView * infoView; +///显示头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///性别 +@property (nonatomic,strong) UIImageView *sexImageView; +///评论了你 +@property (nonatomic,strong) UILabel *commentLabel; +///赞了动态或者显示评论的内容 +@property (nonatomic,strong) UILabel *contentLabel; +///时间 +@property (nonatomic,strong) UILabel *timeLabel; +///动态的图片 +@property (nonatomic,strong) NetImageView *dynamicImageView; +///动态的内容 +@property (nonatomic,strong) UILabel *dynamicLabel; +///显示分割线 +@property (nonatomic,strong) UIView * lineView; +///时间格式 +@property (nonatomic,strong) NSDateFormatter *dataFormatter; +@end +@implementation XPMonentsInteractiveTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.stackView]; + + [self.stackView addArrangedSubview:self.topicButton]; + [self.stackView addArrangedSubview:self.infoView]; + + + [self.infoView addSubview:self.avatarImageView]; + [self.infoView addSubview:self.nickLabel]; + [self.infoView addSubview:self.sexImageView]; + [self.infoView addSubview:self.commentLabel]; + [self.infoView addSubview:self.contentLabel]; + [self.infoView addSubview:self.timeLabel]; + [self.infoView addSubview:self.dynamicImageView]; + [self.infoView addSubview:self.dynamicLabel]; + [self.infoView addSubview:self.lineView]; +} + +- (void)initSubViewConstraints { + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + make.top.mas_equalTo(self.contentView).offset(10); + make.bottom.mas_equalTo(self.contentView); + }]; + + [self.topicButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(30); + make.width.mas_equalTo(50); + }]; + + [self.infoView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth- 15 * 2); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(44, 44)); + make.left.top.mas_equalTo(self.infoView); + }]; + + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(10); + make.top.mas_equalTo(self.avatarImageView); + }]; + + [self.sexImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(15, 15)); + make.centerY.mas_equalTo(self.nickLabel); + make.left.mas_equalTo(self.nickLabel.mas_right).offset(2); + }]; + + [self.commentLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.nickLabel); + make.left.mas_equalTo(self.sexImageView.mas_right).offset(2); + }]; + + [self.contentLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.nickLabel.mas_bottom).offset(10); + make.left.mas_equalTo(self.nickLabel); + make.right.mas_lessThanOrEqualTo(self.dynamicImageView.mas_left).offset(-5); + }]; + + [self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nickLabel); + make.top.mas_equalTo(self.contentLabel.mas_bottom).offset(10); + }]; + + + [self.dynamicImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(60, 60)); + make.right.mas_equalTo(self.infoView); + make.centerY.mas_equalTo(self.infoView); + }]; + + [self.dynamicLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.right.mas_equalTo(self.dynamicImageView); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nickLabel); + make.right.mas_equalTo(self.infoView); + make.height.mas_equalTo(1); + make.bottom.mas_equalTo(self.infoView); + }]; +} +#pragma mark - Getters And Setters +- (void)setInteractiveInfo:(MonentsInteractiveModel *)interactiveInfo { + _interactiveInfo = interactiveInfo; + if (_interactiveInfo) { + self.topicButton.hidden = _interactiveInfo.worldName.length <=0; + [self.topicButton setTitle:_interactiveInfo.worldName forState:UIControlStateNormal]; + self.avatarImageView.imageUrl = _interactiveInfo.avatar; + NSString * nick = interactiveInfo.nick; + if (nick.length > 6) { + nick = [NSString stringWithFormat:@"%@…", [nick substringToIndex:6]]; + } + self.nickLabel.text = nick.length > 0 ? nick : @""; + self.sexImageView.image = _interactiveInfo.gender == GenderType_Female ? [UIImage imageNamed:@"common_female"] : [UIImage imageNamed:@"common_male"]; + BOOL isComment = _interactiveInfo.actionType == MonentsInteractiveActionType_Comment; + self.commentLabel.text = isComment ? YMLocalizedString(@"XPMonentsInteractiveTableViewCell0") : @""; + BOOL isText = _interactiveInfo.type == MonentsContentType_Text; + self.dynamicImageView.hidden = isText; + self.dynamicLabel.hidden = !isText; + if (isText) { + self.dynamicLabel.text = _interactiveInfo.content; + } else { + self.dynamicImageView.imageUrl = _interactiveInfo.dynamicRes.resUrl; + } + self.contentLabel.text = _interactiveInfo.message; + + NSDate *date = [NSDate dateWithTimeIntervalSince1970:_interactiveInfo.publishTime.floatValue/1000]; + NSString *dateString = [self.dataFormatter stringFromDate:date]; + self.timeLabel.text = dateString; + + CGFloat width = [_interactiveInfo.worldName boundingRectWithSize:CGSizeMake(150,CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12]} context:nil].size.width + 10; + [self.topicButton mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(width); + }]; + } +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentLeading; + _stackView.spacing = 10; + } + return _stackView; +} + +- (UIButton *)topicButton { + if (!_topicButton) { + _topicButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_topicButton setTitle:YMLocalizedString(@"XPMonentsInteractiveTableViewCell1") forState:UIControlStateNormal]; + [_topicButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _topicButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_topicButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _topicButton.layer.masksToBounds = YES; + _topicButton.layer.cornerRadius = 15; + } + return _topicButton; +} + +- (UIView *)infoView { + if (!_infoView) { + _infoView = [[UIView alloc] init]; + _infoView.backgroundColor = [UIColor clearColor]; + } + return _infoView; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 22; + } + return _avatarImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:15]; + _nickLabel.textColor = [DJDKMIMOMColor textThirdColor]; + } + return _nickLabel; +} + +- (UIImageView *)sexImageView { + if (!_sexImageView) { + _sexImageView = [[UIImageView alloc] init]; + _sexImageView.userInteractionEnabled = YES; + } + return _sexImageView; +} + +- (UILabel *)commentLabel { + if (!_commentLabel) { + _commentLabel = [[UILabel alloc] init]; + _commentLabel.font = [UIFont systemFontOfSize:15]; + _commentLabel.textColor = [DJDKMIMOMColor textThirdColor]; + } + return _commentLabel; +} + +- (UILabel *)contentLabel { + if (!_contentLabel) { + _contentLabel = [[UILabel alloc] init]; + _contentLabel.font = [UIFont systemFontOfSize:15]; + _contentLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _contentLabel; +} + +- (UILabel *)timeLabel { + if (!_timeLabel) { + _timeLabel = [[UILabel alloc] init]; + _timeLabel.font = [UIFont systemFontOfSize:12]; + _timeLabel.textColor = [DJDKMIMOMColor textThirdColor]; + } + return _timeLabel; +} + +- (NetImageView *)dynamicImageView { + if (!_dynamicImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _dynamicImageView = [[NetImageView alloc] initWithConfig:config]; + _dynamicImageView.layer.masksToBounds = YES; + _dynamicImageView.layer.cornerRadius = 8; + _dynamicImageView.contentMode = UIViewContentModeScaleAspectFill; + } + return _dynamicImageView; +} + +- (UILabel *)dynamicLabel { + if (!_dynamicLabel) { + _dynamicLabel = [[UILabel alloc] init]; + _dynamicLabel.font = [UIFont systemFontOfSize:12]; + _dynamicLabel.textColor = [DJDKMIMOMColor textThirdColor]; + } + return _dynamicLabel; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _lineView; +} + +- (NSDateFormatter *)dataFormatter { + if (!_dataFormatter) { + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; + [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"]; + _dataFormatter = dateFormatter; + } + return _dataFormatter; +} + + +@end diff --git a/YuMi/Modules/YMMonents/View/Cell/XPMonentsPublishCollectionViewCell.h b/YuMi/Modules/YMMonents/View/Cell/XPMonentsPublishCollectionViewCell.h new file mode 100644 index 00000000..6a085c06 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/Cell/XPMonentsPublishCollectionViewCell.h @@ -0,0 +1,28 @@ +// +// YMMonentsPublishCollectionViewCell.h +// YUMI +// +// Created by YUMI on 2022/7/1. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPMonentsPublishCollectionViewCell; + +@protocol XPMonentsPublishCollectionViewCellDelegate + +- (void)XPMonentsPublishCollectionViewCell:(XPMonentsPublishCollectionViewCell *)view didDeleteItem:(UIImage *)image; + +@end + +@interface XPMonentsPublishCollectionViewCell : UICollectionViewCell +///设置图片 +@property (nonatomic,strong) UIImage *image; +///是否展示删除 +@property (nonatomic,assign) BOOL isShowDelete; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/Cell/XPMonentsPublishCollectionViewCell.m b/YuMi/Modules/YMMonents/View/Cell/XPMonentsPublishCollectionViewCell.m new file mode 100644 index 00000000..7ca5553a --- /dev/null +++ b/YuMi/Modules/YMMonents/View/Cell/XPMonentsPublishCollectionViewCell.m @@ -0,0 +1,92 @@ +// +// YMMonentsPublishCollectionViewCell.m +// YUMI +// +// Created by YUMI on 2022/7/1. +// + +#import "XPMonentsPublishCollectionViewCell.h" +///Third +#import + +@interface XPMonentsPublishCollectionViewCell () +///显示图片 +@property (nonatomic,strong) UIImageView *logoImageView; +///删除 +@property (nonatomic,strong) UIButton *deleteButton; +@end + + +@implementation XPMonentsPublishCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.logoImageView]; + [self.contentView addSubview:self.deleteButton]; +} + +- (void)initSubViewConstraints { + [self.logoImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.contentView); + }]; + + [self.deleteButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20, 20)); + make.right.top.mas_equalTo(self.contentView); + }]; +} + +#pragma mark - Event Response +- (void)deleteButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(XPMonentsPublishCollectionViewCell:didDeleteItem:)]) { + [self.delegate XPMonentsPublishCollectionViewCell:self didDeleteItem:self.image]; + } +} + +#pragma mark - Getters And Setters +- (void)setImage:(UIImage *)image { + _image = image; + if (_image) { + self.logoImageView.image = _image; + } +} + +- (void)setIsShowDelete:(BOOL)isShowDelete { + _isShowDelete = isShowDelete; + self.deleteButton.hidden = !_isShowDelete; +} + +- (UIImageView *)logoImageView { + if (!_logoImageView) { + _logoImageView = [[UIImageView alloc] init]; + _logoImageView.userInteractionEnabled = YES; + _logoImageView.layer.masksToBounds = YES; + _logoImageView.layer.cornerRadius = 10; + _logoImageView.contentMode = UIViewContentModeScaleAspectFill; + _logoImageView.layer.masksToBounds = YES; + } + return _logoImageView; +} + +- (UIButton *)deleteButton { + if (!_deleteButton) { + _deleteButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_deleteButton setImage:[UIImage imageNamed:@"monents_publish_album_delete"] forState:UIControlStateNormal]; + [_deleteButton setImage:[UIImage imageNamed:@"monents_publish_album_delete"] forState:UIControlStateSelected]; + [_deleteButton addTarget:self action:@selector(deleteButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _deleteButton; +} + +@end diff --git a/YuMi/Modules/YMMonents/View/Cell/XPMonentsReplyMoreTableViewCell.h b/YuMi/Modules/YMMonents/View/Cell/XPMonentsReplyMoreTableViewCell.h new file mode 100644 index 00000000..e0105427 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/Cell/XPMonentsReplyMoreTableViewCell.h @@ -0,0 +1,25 @@ +// +// YMMonentsReplyMoreTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/6/23. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPMonentsReplyMoreTableViewCell; +@protocol XPMonentsReplyMoreTableViewCellDelegate + +- (void)xPMonentsReplyMoreTableViewCellDidClickMoreReply:(XPMonentsReplyMoreTableViewCell *)view; + +@end +@interface XPMonentsReplyMoreTableViewCell : UITableViewCell +///代理 +@property (nonatomic,weak) id delegate; + +///剩余的个数 +@property (nonatomic,assign) NSInteger leftCount; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/Cell/XPMonentsReplyMoreTableViewCell.m b/YuMi/Modules/YMMonents/View/Cell/XPMonentsReplyMoreTableViewCell.m new file mode 100644 index 00000000..0ee4b828 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/Cell/XPMonentsReplyMoreTableViewCell.m @@ -0,0 +1,70 @@ +// +// YMMonentsReplyMoreTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/6/23. +// + +#import "XPMonentsReplyMoreTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "XPMonentsLayoutConfig.h" + +@interface XPMonentsReplyMoreTableViewCell () +///查看更多 +@property (nonatomic,strong) UILabel *moreLabel; + +@end +@implementation XPMonentsReplyMoreTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.moreLabel]; +} + +- (void)initSubViewConstraints { + [self.moreLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.top.bottom.mas_equalTo(self.contentView); + make.left.mas_equalTo(self.contentView).offset(kMONENTS_COMMENT_REPLY_LEFT_PADDING + KMONENTS_COMMENT_REPLY_AVATAR_WIDTH + kMONENTS_COMMENT_AVATAR_NICK_PADDING); + }]; +} +#pragma mark - Event Response +- (void)moreLabelTapRecognizer { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMonentsReplyMoreTableViewCellDidClickMoreReply:)]) { + [self.delegate xPMonentsReplyMoreTableViewCellDidClickMoreReply:self]; + } +} +#pragma mark - Getters And Setters +- (void)setLeftCount:(NSInteger)leftCount { + _leftCount = leftCount; + if (_leftCount) { + self.moreLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPMonentsReplyMoreTableViewCell0"), _leftCount]; + } +} + +- (UILabel *)moreLabel { + if (!_moreLabel) { + _moreLabel = [[UILabel alloc] init]; + _moreLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightBold]; + _moreLabel.textColor = [DJDKMIMOMColor appEmphasizeColor]; + _moreLabel.userInteractionEnabled = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(moreLabelTapRecognizer)]; + [_moreLabel addGestureRecognizer:tap]; + } + return _moreLabel; +} + + +@end diff --git a/YuMi/Modules/YMMonents/View/Cell/XPMonentsReplyTableViewCell.h b/YuMi/Modules/YMMonents/View/Cell/XPMonentsReplyTableViewCell.h new file mode 100644 index 00000000..639ea5a5 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/Cell/XPMonentsReplyTableViewCell.h @@ -0,0 +1,24 @@ +// +// YMMonentsReplyTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/6/22. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class MonentsReplyModel, XPMonentsReplyTableViewCell; +@protocol XPMonentsReplyTableViewCellDelegate + +///点击了头像 +- (void)xPMonentsReplyTableViewCell:(XPMonentsReplyTableViewCell *)view didClickAvatar:(MonentsReplyModel *)replyInfo; + +@end +@interface XPMonentsReplyTableViewCell : UITableViewCell +@property (nonatomic,strong) MonentsReplyModel *replyInfo; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/Cell/XPMonentsReplyTableViewCell.m b/YuMi/Modules/YMMonents/View/Cell/XPMonentsReplyTableViewCell.m new file mode 100644 index 00000000..a7e2fe0b --- /dev/null +++ b/YuMi/Modules/YMMonents/View/Cell/XPMonentsReplyTableViewCell.m @@ -0,0 +1,184 @@ +// +// YMMonentsReplyTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/6/22. +// + +#import "XPMonentsReplyTableViewCell.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "YUMIMacroUitls.h" +#import "XPMonentsLayoutConfig.h" +#import "NSString+Utils.h" +#import "QEmotionHelper.h" +///Model +#import "MonentsCommentReplyModel.h" + +@interface XPMonentsReplyTableViewCell () +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///自己的名字 +@property (nonatomic,strong) UILabel *nickLabel; +///房主 +@property (nonatomic,strong) UIImageView *ownerImageView; +///内容 +@property (nonatomic,strong) YYLabel *contentLabel; +///时间 +@property (nonatomic,strong) UILabel *dateLabel; +///分割线 +@property (nonatomic,strong) UIView * lineView; + +@end + +@implementation XPMonentsReplyTableViewCell + + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.nickLabel]; + [self.contentView addSubview:self.ownerImageView]; + [self.contentView addSubview:self.contentLabel]; + [self.contentView addSubview:self.dateLabel]; + [self.contentView addSubview:self.lineView]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(KMONENTS_COMMENT_REPLY_AVATAR_WIDTH, KMONENTS_COMMENT_REPLY_AVATAR_WIDTH)); + make.top.mas_equalTo(self.contentView).offset(10); + make.left.mas_equalTo(self.contentView).offset(kMONENTS_COMMENT_REPLY_LEFT_PADDING); + }]; + + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(kMONENTS_COMMENT_AVATAR_NICK_PADDING); + make.top.mas_equalTo(self.contentView).offset(10); + make.height.mas_equalTo(15); + }]; + + [self.ownerImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(30, 15)); + make.centerY.mas_equalTo(self.nickLabel); + make.left.mas_equalTo(self.nickLabel.mas_right).offset(5); + }]; + + [self.contentLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nickLabel); + make.top.mas_equalTo(self.nickLabel.mas_bottom).offset(10); + make.right.mas_equalTo(self.contentView).offset(-15); + }]; + + [self.dateLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.contentView).offset(-10); + make.centerY.mas_equalTo(self.nickLabel); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nickLabel); + make.right.mas_equalTo(self.contentView).offset(-10); + make.height.mas_equalTo(0.5); + make.bottom.mas_equalTo(self.contentView); + }]; +} + +#pragma mark - Event Response +- (void)tapAvatarImage { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMonentsReplyTableViewCell:didClickAvatar:)]) { + [self.delegate xPMonentsReplyTableViewCell:self didClickAvatar:self.replyInfo]; + } +} + +#pragma mark - Getters And Setters +- (void)setReplyInfo:(MonentsReplyModel *)replyInfo { + _replyInfo = replyInfo; + if (_replyInfo) { + self.avatarImageView.imageUrl = _replyInfo.avatar; + NSString * nick = _replyInfo.nick; + if (nick.length > 8) { + nick = [nick substringToIndex:8]; + } + self.ownerImageView.hidden = !_replyInfo.landLordFlag; + self.nickLabel.text = nick; + self.dateLabel.text = [NSString stringWithTimeStamp:_replyInfo.publishTime]; + self.contentLabel.attributedText = _replyInfo.contentAttribute; + } +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 30/2.0; + _avatarImageView.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + _avatarImageView.userInteractionEnabled = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAvatarImage)]; + [_avatarImageView addGestureRecognizer:tap]; + } + return _avatarImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _nickLabel; +} + +- (YYLabel *)contentLabel { + if (!_contentLabel) { + _contentLabel = [[YYLabel alloc] init]; + _contentLabel.preferredMaxLayoutWidth = KMONENTS_COMMENT_REPLY_MAX_WIDTH; + _contentLabel.numberOfLines = 0; + } + return _contentLabel; +} + +- (UILabel *)dateLabel { + if (!_dateLabel) { + _dateLabel = [[UILabel alloc] init]; + _dateLabel.font = [UIFont systemFontOfSize:12]; + _dateLabel.textColor = [DJDKMIMOMColor textThirdColor]; + } + return _dateLabel; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _lineView; +} + +- (UIImageView *)ownerImageView { + if (!_ownerImageView) { + _ownerImageView = [[UIImageView alloc] init]; + _ownerImageView.userInteractionEnabled = YES; + _ownerImageView.image = [UIImage imageNamed:@"monents_common_landLordFlag"]; + _ownerImageView.hidden = YES; + } + return _ownerImageView; +} + + +@end diff --git a/YuMi/Modules/YMMonents/View/Cell/XPMonentsTableViewCell.h b/YuMi/Modules/YMMonents/View/Cell/XPMonentsTableViewCell.h new file mode 100644 index 00000000..a2671450 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/Cell/XPMonentsTableViewCell.h @@ -0,0 +1,31 @@ +// +// YMMonentsTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/5/11. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class MonentsInfoModel, XPMonentsTableViewCell; + +@protocol XPMonentsTableViewCellDelegate +///点击了点赞 +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClickLike:(MonentsInfoModel *)monentsInfo; +///点击了删除 +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClicDelete:(MonentsInfoModel *)monentsInfo; +@optional +///点击了评论 +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClicCommon:(MonentsInfoModel *)monentsInfo; +///点击了展开 +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClicFold:(MonentsInfoModel *)monentsInfo; +@end + +@interface XPMonentsTableViewCell : UITableViewCell +@property (nonatomic,strong) MonentsInfoModel *monentsInfo; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/Cell/XPMonentsTableViewCell.m b/YuMi/Modules/YMMonents/View/Cell/XPMonentsTableViewCell.m new file mode 100644 index 00000000..2476ba87 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/Cell/XPMonentsTableViewCell.m @@ -0,0 +1,315 @@ +// +// YMMonentsTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/5/11. +// + +#import "XPMonentsTableViewCell.h" +///Third +#import + +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "XPMonentsLayoutConfig.h" +#import "SDPhotoBrowser.h" +#import "XCCurrentVCStackManager.h" +#import "NSArray+Safe.h" +#import "ClientConfig.h" +///Model +#import "MonentsInfoModel.h" +///View +#import "XPMonentsUserInfoView.h" +#import "XPMonentsPhotoView.h" +#import "XPMonentsTooBarView.h" +#import "XPMoentsTopicView.h" +#import "XPMonentsContentView.h" +#import "XPMonentsLayoutConfig.h" +#import "XPMonentTopicContainerViewController.h" +#import "XPMineUserInfoViewController.h" +#import "XPMineSimpleUserInfoViewController.h" +#import "XPRoomViewController.h" +@interface XPMonentsTableViewCell () +///显示颜色的 有的时候stackView 不能显示颜色 +@property (nonatomic,strong) UIView * backView; +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///用户信息 +@property (nonatomic,strong) XPMonentsUserInfoView * userInfoView; +///显示内容的 +@property (nonatomic,strong) XPMonentsContentView *textView; +///图片 +@property (nonatomic,strong) XPMonentsPhotoView *photoView; +///显示底部的操作栏 +@property (nonatomic,strong) XPMonentsTooBarView *toolBarView; +///话题 +@property (nonatomic,strong) XPMoentsTopicView *topicView; + +/// 复用标识,用来区分是审核UI还是正常UI +@property (nonatomic,strong) NSString *identifier; + +@end + +@implementation XPMonentsTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.backView]; + + /// 正常UI + if ([self.reuseIdentifier isEqualToString:NSStringFromClass([XPMonentsTableViewCell class])]){ + [self.backView addSubview:self.userInfoView]; + [self.backView addSubview:self.stackView]; + [self.backView addSubview:self.toolBarView]; + + [self.stackView addArrangedSubview:self.textView]; + [self.stackView addArrangedSubview:self.photoView]; + [self.stackView addArrangedSubview:self.topicView]; + }else{ + /// 审核UI + [self.backView addSubview:self.stackView]; + + [self.stackView addArrangedSubview:self.textView]; + [self.stackView addArrangedSubview:self.photoView]; + [self.stackView addArrangedSubview:self.topicView]; + } +} + +- (void)initSubViewConstraints { + /// 正常UI + if ([self.reuseIdentifier isEqualToString:NSStringFromClass([XPMonentsTableViewCell class])]){ + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.contentView); + }]; + + [self.userInfoView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.backView); + make.height.mas_equalTo(kMONENTS_USER_INFO_HEIGHT); + }]; + + [self.textView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(20); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backView).offset(kMONENTS_CONTENT_LEFT_PADDING); + make.right.mas_equalTo(self.backView).offset(-kMONENTS_CONTENT_RIGHT_PADDING); + make.top.mas_equalTo(self.userInfoView.mas_bottom).offset(kMONENTS_CONTENT_SPACAE_HEIGHT); + }]; + + [self.topicView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(kMONENTS_TEXT_TOPIC_HEIGHT); + }]; + + [self.toolBarView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backView); + make.top.mas_equalTo(self.stackView.mas_bottom); + make.height.mas_equalTo(kMONENTS_TOOL_BAR_HEIGHT); + }]; + }else{ + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.contentView); + }]; + // 审核UI + [self.textView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(20); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backView).offset(kSIMPLE_MONENTS_CONTENT_LEFT_PADDING); + make.right.mas_equalTo(self.backView).offset(-kSIMPLE_MONENTS_CONTENT_RIGHT_PADDING); + make.top.mas_equalTo(self.backView.mas_top).offset(kMONENTS_CONTENT_SPACAE_HEIGHT); + }]; + + [self.topicView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(kMONENTS_TEXT_TOPIC_HEIGHT); + }]; + } +} +#pragma mark - XPMonentsUserInfoViewDelegate +- (void)xPMonentsUserInfoView:(XPMonentsUserInfoView *)view didClickEnterRoom:(MonentsInfoModel *)monents { + if (monents.inRoomUid.integerValue > 0) { + [XPRoomViewController openRoom:monents.inRoomUid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; + } +} + +- (void)xPMonentsUserInfoView:(XPMonentsUserInfoView *)view didClickAvatar:(MonentsInfoModel *)monents { + if ([ClientConfig shareConfig].canOpen) { + XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init]; + userInfoVC.uid = monents.uid.integerValue; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:userInfoVC animated:YES]; + }else{ + XPMineSimpleUserInfoViewController * userInfoVC = [[XPMineSimpleUserInfoViewController alloc] init]; + userInfoVC.uid = monents.uid.integerValue; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:userInfoVC animated:YES]; + } + +} + +#pragma mark - XPMonentsTooBarViewDelegate +- (void)xPMonentsTooBarView:(XPMonentsTooBarView *)view didClickLike:(MonentsInfoModel *)monentsInfo { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMonentsTableViewCell:didClickLike:)]) { + [self.delegate xPMonentsTableViewCell:self didClickLike:monentsInfo]; + } +} + +- (void)xPMonentsTooBarView:(XPMonentsTooBarView *)view didClickDelete:(MonentsInfoModel *)monentsInfo { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMonentsTableViewCell:didClicDelete:)]) { + [self.delegate xPMonentsTableViewCell:self didClicDelete:self.monentsInfo]; + } +} + +- (void)xPMonentsTooBarView:(XPMonentsTooBarView *)view didClickCommon:(MonentsInfoModel *)monentsInfo { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMonentsTableViewCell:didClicCommon:)]) { + [self.delegate xPMonentsTableViewCell:self didClicCommon:self.monentsInfo]; + } +} + +#pragma mark - XPMonentsContentViewDelegate +- (void)xPMonentsContentView:(XPMonentsContentView *)view didClickFold:(MonentsInfoModel *)monentsInfo { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMonentsTableViewCell:didClicFold:)]) { + [self.delegate xPMonentsTableViewCell:self didClicFold:monentsInfo]; + } +} + +#pragma mark - SDPhotoBrowserDelegate +- (NSURL *)photoBrowser:(SDPhotoBrowser *)browser highQualityImageURLForIndex:(NSInteger)index { + MonentsPicInfoModel *picinfo = [self.monentsInfo.dynamicResList safeObjectAtIndex1:index]; + return [NSURL URLWithString:picinfo.resUrl]; +} + +- (UIImage *)photoBrowser:(SDPhotoBrowser *)browser placeholderImageForIndex:(NSInteger)index { + return [UIImageConstant defalutBannerPlaceholder]; +} + +#pragma mark - XPMonentsPhotoViewDelegate +- (void)xPMonentsPhotoView:(XPMonentsPhotoView *)view didClickImage:(NSInteger)index { + NSInteger count = self.monentsInfo.dynamicResList.count; + SDPhotoBrowser *browser = [[SDPhotoBrowser alloc]init]; + browser.sourceImagesContainerView = self; + browser.delegate = self; + browser.imageCount = count; + browser.currentImageIndex = index; + browser.isMe = NO; + [browser show]; +} + +#pragma mark - Event Response +- (void)didTapTopicRecognizer { + if (self.monentsInfo.worldId > 0) { + XPMonentTopicContainerViewController * topicListVC = [[XPMonentTopicContainerViewController alloc] init]; + topicListVC.worldId = [NSString stringWithFormat:@"%ld", self.monentsInfo.worldId]; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:topicListVC animated:YES]; + } +} + +#pragma mark - Getters And Setters +- (void)setMonentsInfo:(MonentsInfoModel *)monentsInfo { + _monentsInfo = monentsInfo; + if (_monentsInfo) { + self.userInfoView.monentsInfo = _monentsInfo; + self.textView.monentsInfo = _monentsInfo; + self.photoView.dynamicResList = _monentsInfo.dynamicResList; + self.topicView.monentsInfo = _monentsInfo; + self.toolBarView.monentsInfo = _monentsInfo; + if (_monentsInfo.type == MonentsContentType_Picture) { + self.photoView.hidden = NO; + CGFloat picHeight = _monentsInfo.picHeight <=0 ? [XPMonentsLayoutConfig monentsPicHeight:_monentsInfo] : _monentsInfo.picHeight; + [self.photoView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(picHeight); + }]; + } else { + self.photoView.hidden = YES; + [self.photoView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(0); + }]; + } + + CGFloat contentHeight = [XPMonentsLayoutConfig monentsContentHeight:_monentsInfo]; + [self.textView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(contentHeight); + }]; + } +} + +- (UIView *)backView { + if (!_backView) { + _backView = [[UIView alloc] init]; + _backView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + } + return _backView; +} + +- (XPMonentsUserInfoView *)userInfoView { + if (!_userInfoView) { + _userInfoView = [[XPMonentsUserInfoView alloc] init]; + _userInfoView.delegate = self; + } + return _userInfoView; +} + +- (XPMonentsPhotoView *)photoView { + if (!_photoView) { + _photoView = [[XPMonentsPhotoView alloc] init]; + _photoView.delegate = self; + } + return _photoView; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = kMONENTS_CONTENT_SPACAE_HEIGHT; + } + return _stackView; +} + +- (XPMonentsContentView *)textView { + if (!_textView) { + _textView = [[XPMonentsContentView alloc] init]; + _textView.delegate = self; + /// 正常UI + if ([self.reuseIdentifier isEqualToString:NSStringFromClass([XPMonentsTableViewCell class])]){ + _textView.isSimple = NO; + }else{ + /// 审核UI + _textView.isSimple = YES; + } + } + return _textView; +} + +- (XPMoentsTopicView *)topicView { + if (!_topicView) { + _topicView = [[XPMoentsTopicView alloc] init]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapTopicRecognizer)]; + [_topicView addGestureRecognizer:tap]; + } + return _topicView; +} + +- (XPMonentsTooBarView *)toolBarView { + if (!_toolBarView) { + _toolBarView = [[XPMonentsTooBarView alloc] init]; + _toolBarView.delegate = self; + } + return _toolBarView; +} + + + +@end diff --git a/YuMi/Modules/YMMonents/View/Cell/XPMonentsTopicCollectionViewCell.h b/YuMi/Modules/YMMonents/View/Cell/XPMonentsTopicCollectionViewCell.h new file mode 100644 index 00000000..a9017295 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/Cell/XPMonentsTopicCollectionViewCell.h @@ -0,0 +1,16 @@ +// +// YMMonentsTopicCollectionViewCell.h +// YUMI +// +// Created by YUMI on 2022/5/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class MonentsTopicModel; +@interface XPMonentsTopicCollectionViewCell : UICollectionViewCell +@property (nonatomic,strong) MonentsTopicModel *topicInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/Cell/XPMonentsTopicCollectionViewCell.m b/YuMi/Modules/YMMonents/View/Cell/XPMonentsTopicCollectionViewCell.m new file mode 100644 index 00000000..c0510cb3 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/Cell/XPMonentsTopicCollectionViewCell.m @@ -0,0 +1,101 @@ +// +// YMMonentsTopicCollectionViewCell.m +// YUMI +// +// Created by YUMI on 2022/5/18. +// + +#import "XPMonentsTopicCollectionViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "NetImageView.h" +///Model +#import "MonentsTopicModel.h" + +@interface XPMonentsTopicCollectionViewCell () + +///背景 +@property (nonatomic,strong) NetImageView *topicImageView; +///显示话题前面的# +@property (nonatomic,strong) UIImageView *iconImageView; +///显示话题 +@property (nonatomic,strong) UILabel *topicLabel; + +@end + +@implementation XPMonentsTopicCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.topicImageView]; + [self.topicImageView addSubview:self.iconImageView]; + [self.topicImageView addSubview:self.topicLabel]; +} + +- (void)initSubViewConstraints { + [self.topicImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.contentView); + }]; + + [self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.topicImageView); + make.height.mas_equalTo(30); + }]; + + [self.topicLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.topicImageView).inset(2); + make.bottom.mas_equalTo(self.topicImageView.mas_bottom).offset(-6); + }]; +} + +#pragma mark - Getters And Setters +- (void)setTopicInfo:(MonentsTopicModel *)topicInfo { + _topicInfo = topicInfo; + if (_topicInfo) { + self.topicLabel.text = [NSString stringWithFormat:@"#%@", _topicInfo.name]; + self.topicImageView.imageUrl = _topicInfo.icon; + } +} + +- (NetImageView *)topicImageView { + if (!_topicImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _topicImageView = [[NetImageView alloc] initWithConfig:config]; + _topicImageView.layer.masksToBounds = YES; + _topicImageView.layer.cornerRadius = 12; + _topicImageView.contentMode = UIViewContentModeScaleAspectFill; + } + return _topicImageView; +} + +- (UIImageView *)iconImageView { + if (!_iconImageView) { + _iconImageView = [[UIImageView alloc] init]; + _iconImageView.userInteractionEnabled = YES; + _iconImageView.image = [UIImage imageNamed:@"home_room_list_shadow_bg"]; + } + return _iconImageView; +} + +- (UILabel *)topicLabel { + if (!_topicLabel) { + _topicLabel = [[UILabel alloc] init]; + _topicLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightBold]; + _topicLabel.textColor = [UIColor whiteColor]; + _topicLabel.textAlignment = NSTextAlignmentCenter; + } + return _topicLabel; +} +@end diff --git a/YuMi/Modules/YMMonents/View/Cell/YUMIMomentStatementAssembletionRegardElement.h b/YuMi/Modules/YMMonents/View/Cell/YUMIMomentStatementAssembletionRegardElement.h deleted file mode 100644 index e3e60d6a..00000000 --- a/YuMi/Modules/YMMonents/View/Cell/YUMIMomentStatementAssembletionRegardElement.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YMMomentListCollectionViewCell.h -// YUMI -// -// Created by XY on 2023/2/16. -// - -#import - -@class SeparationsAbstractMatrix; - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIMomentStatementAssembletionRegardElement : UICollectionViewCell - -@property (nonatomic,strong) SeparationsAbstractMatrix *monentsInfo; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/Cell/YUMIMomentStatementAssembletionRegardElement.m b/YuMi/Modules/YMMonents/View/Cell/YUMIMomentStatementAssembletionRegardElement.m deleted file mode 100644 index 9d40a4ce..00000000 --- a/YuMi/Modules/YMMonents/View/Cell/YUMIMomentStatementAssembletionRegardElement.m +++ /dev/null @@ -1,155 +0,0 @@ -// -// YMMomentListCollectionViewCell.m -// YUMI -// -// Created by XY on 2023/2/16. -// - -#import "YUMIMomentStatementAssembletionRegardElement.h" -#import "DJDKMIMOMColor.h" -#import -#import "NetIndicateRegard.h" -#import "NSArray+Safe.h" - -#import "SeparationsAbstractMatrix.h" - -@interface YUMIMomentStatementAssembletionRegardElement() - -@property (nonatomic, strong) CAGradientLayer *backgroundLayer; -@property (nonatomic, strong) NetIndicateRegard *enshroudIndicateRegard; -@property (nonatomic, strong) UIButton *likeBtuton; -@property (nonatomic, strong) UILabel *computationSequencignation; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) NetIndicateRegard *intelligenceportraitIndicateRegard; - -@end - -@implementation YUMIMomentStatementAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - self.contentView.layer.cornerRadius = 12; - self.contentView.clipsToBounds = YES; - [self produceUI]; - - } - return self; -} - -- (void)layoutSubviews { - [super layoutSubviews]; - self.backgroundLayer.frame = CGRectMake(0, self.contentView.bounds.size.height-78, self.contentView.bounds.size.width, 78); -} - -- (void)produceUI { - [self.contentView addSubview:self.enshroudIndicateRegard]; - [self.contentView.layer addSublayer:self.backgroundLayer]; - [self.contentView addSubview:self.likeBtuton]; - [self.contentView addSubview:self.computationSequencignation]; - [self.contentView addSubview:self.titleLabel]; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - - [self.enshroudIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.contentView); - }]; - [self.likeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(8); - make.bottom.mas_equalTo(-12); - make.width.mas_equalTo(14); - make.height.mas_equalTo(14); - }]; - [self.computationSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.likeBtuton.mas_right).offset(2); - make.centerY.mas_equalTo(self.likeBtuton); - make.right.mas_lessThanOrEqualTo(-8); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(8); - make.bottom.mas_equalTo(self.likeBtuton.mas_top).offset(-2); - make.right.mas_equalTo(-8); - }]; - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-4); - make.bottom.mas_equalTo(-4); - make.width.height.mas_equalTo(24); - }]; -} - -#pragma mark - Getters And Setters -- (void)setMonentsInfo:(SeparationsAbstractMatrix *)monentsInfo { - _monentsInfo = monentsInfo; - if (_monentsInfo) { - if (_monentsInfo.dynamicResList.count > 0) { - SeparationsPicAbstractMatrix * picInfo = [_monentsInfo.dynamicResList secureGroalTowardsIndictowardsrix1:0]; - self.enshroudIndicateRegard.imageUrl = picInfo.resUrl; - }else{ - self.enshroudIndicateRegard.imageUrl = _monentsInfo.avatar; - } - self.intelligenceportraitIndicateRegard.imageUrl = _monentsInfo.avatar; - self.titleLabel.text = _monentsInfo.content; - self.likeBtuton.selected = _monentsInfo.isLike; - self.computationSequencignation.text = _monentsInfo.likeCount.length > 0 ? _monentsInfo.likeCount : @"0"; - } -} - -#pragma mark - 懒加载 - -- (CAGradientLayer *)backgroundLayer { - if (!_backgroundLayer) { - _backgroundLayer = [[CAGradientLayer alloc] init]; - _backgroundLayer.colors = @[(__bridge id)[UIColor.blackColor colorWithAlphaComponent:0].CGColor, (__bridge id)[UIColor.blackColor colorWithAlphaComponent:0.4].CGColor]; - _backgroundLayer.locations = @[@0, @1]; - _backgroundLayer.startPoint = CGPointMake(0.5, 0); - _backgroundLayer.endPoint = CGPointMake(0.5, 1); - } - return _backgroundLayer; -} - -- (NetIndicateRegard *)enshroudIndicateRegard { - if (!_enshroudIndicateRegard) { - _enshroudIndicateRegard = [[NetIndicateRegard alloc] init]; - _enshroudIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _enshroudIndicateRegard; -} - -- (UIButton *)likeBtuton { - if (!_likeBtuton) { - _likeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_likeBtuton setImage:[UIImage imageNamed:@"yumi_monents_gen_like_count_normal"] forState:UIControlStateNormal]; - [_likeBtuton setImage:[UIImage imageNamed:@"yumi_monents_gen_like_count_select"] forState:UIControlStateSelected]; - } - return _likeBtuton; -} - -- (UILabel *)computationSequencignation { - if (!_computationSequencignation) { - _computationSequencignation = [[UILabel alloc] init]; - _computationSequencignation.textColor = UIColor.whiteColor; - _computationSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - } - return _computationSequencignation; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textColor = UIColor.whiteColor; - _titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _titleLabel.numberOfLines = 5; - } - return _titleLabel; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] init]; - _intelligenceportraitIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 24/2; - _intelligenceportraitIndicateRegard.clipsToBounds = YES; - } - return _intelligenceportraitIndicateRegard; -} - -@end diff --git a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsAnnounceAssembletionRegardElement.h b/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsAnnounceAssembletionRegardElement.h deleted file mode 100644 index 1617b930..00000000 --- a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsAnnounceAssembletionRegardElement.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YMMonentsPublishCollectionViewCell.h -// YUMI -// -// Created by YUMI on 2022/7/1. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMISeparationsAnnounceAssembletionRegardElement; - -@protocol FBCSeparationsPublishAssembletionRegardElementRepresendtation - -- (void)YUMISeparationsAnnounceAssembletionRegardElement:(YUMISeparationsAnnounceAssembletionRegardElement *)view didDeleteItem:(UIImage *)image; - -@end - -@interface YUMISeparationsAnnounceAssembletionRegardElement : UICollectionViewCell -@property (nonatomic,strong) UIImage *image; -@property (nonatomic,assign) BOOL isExhibitRepresentation; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsAnnounceAssembletionRegardElement.m b/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsAnnounceAssembletionRegardElement.m deleted file mode 100644 index aabaac42..00000000 --- a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsAnnounceAssembletionRegardElement.m +++ /dev/null @@ -1,89 +0,0 @@ -// -// YMMonentsPublishCollectionViewCell.m -// YUMI -// -// Created by YUMI on 2022/7/1. -// - -#import "YUMISeparationsAnnounceAssembletionRegardElement.h" -#import - -@interface YUMISeparationsAnnounceAssembletionRegardElement () -@property (nonatomic,strong) UIImageView *brandIndicateRegard; -@property (nonatomic,strong) UIButton *representationBtuton; -@end - - -@implementation YUMISeparationsAnnounceAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - [self.contentView addSubview:self.brandIndicateRegard]; - [self.contentView addSubview:self.representationBtuton]; -} - -- (void)initChildLyRestrictions { - [self.brandIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.contentView); - }]; - - [self.representationBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(20, 20)); - make.right.top.mas_equalTo(self.contentView); - }]; -} - -#pragma mark - Event Response -- (void)representtowardsionBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(YUMISeparationsAnnounceAssembletionRegardElement:didDeleteItem:)]) { - [self.delegate YUMISeparationsAnnounceAssembletionRegardElement:self didDeleteItem:self.image]; - } -} - -#pragma mark - Getters And Setters -- (void)setImage:(UIImage *)image { - _image = image; - if (_image) { - self.brandIndicateRegard.image = _image; - } -} - -- (void)setIsExhibitRepresentation:(BOOL)isExhibitRepresentation { - _isExhibitRepresentation = isExhibitRepresentation; - self.representationBtuton.hidden = !_isExhibitRepresentation; -} - -- (UIImageView *)brandIndicateRegard { - if (!_brandIndicateRegard) { - _brandIndicateRegard = [[UIImageView alloc] init]; - _brandIndicateRegard.userInteractionEnabled = YES; - _brandIndicateRegard.layer.masksToBounds = YES; - _brandIndicateRegard.layer.cornerRadius = 10; - _brandIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _brandIndicateRegard.layer.masksToBounds = YES; - } - return _brandIndicateRegard; -} - -- (UIButton *)representationBtuton { - if (!_representationBtuton) { - _representationBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_representationBtuton setImage:[UIImage imageNamed:@"yumi_monents_publish_album_delete"] forState:UIControlStateNormal]; - [_representationBtuton setImage:[UIImage imageNamed:@"yumi_monents_publish_album_delete"] forState:UIControlStateSelected]; - [_representationBtuton addTarget:self action:@selector(representtowardsionBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _representationBtuton; -} - -@end diff --git a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsCoactiveTabulationRegardElement.h b/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsCoactiveTabulationRegardElement.h deleted file mode 100644 index d5e9d756..00000000 --- a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsCoactiveTabulationRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMonentsInteractiveTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/5/19. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class SeparationsCoactiveMatrix; -@interface YUMISeparationsCoactiveTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) SeparationsCoactiveMatrix *interactiveAbstract; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsCoactiveTabulationRegardElement.m b/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsCoactiveTabulationRegardElement.m deleted file mode 100644 index a235903b..00000000 --- a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsCoactiveTabulationRegardElement.m +++ /dev/null @@ -1,292 +0,0 @@ -// -// YMMonentsInteractiveTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/5/19. -// - -#import "YUMISeparationsCoactiveTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "YUMIMacroUitls.h" -#import "UIImage+Utils.h" -#import "SeparationsCoactiveMatrix.h" - -@interface YUMISeparationsCoactiveTabulationRegardElement () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UIButton *motifBtuton; -@property (nonatomic,strong) UIView * abstractRegard; -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UIImageView *seaxualityIndicateRegard; -@property (nonatomic,strong) UILabel *judgementSequencignation; -@property (nonatomic,strong) UILabel *satisfperformanceSequencignation; -@property (nonatomic,strong) UILabel *intratemporalSequencignation; -@property (nonatomic,strong) NetIndicateRegard *dynaloudspeakerIndicateRegard; -@property (nonatomic,strong) UILabel *dynaloudspeakerSequencignation; -@property (nonatomic,strong) UIView * burlywoodRegard; -@property (nonatomic,strong) NSDateFormatter *atoloudspeakerInitialiser; -@end -@implementation YUMISeparationsCoactiveTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.stackView]; - - [self.stackView addArrangedSubview:self.motifBtuton]; - [self.stackView addArrangedSubview:self.abstractRegard]; - - - [self.abstractRegard addSubview:self.intelligenceportraitIndicateRegard]; - [self.abstractRegard addSubview:self.monicerSequencignation]; - [self.abstractRegard addSubview:self.seaxualityIndicateRegard]; - [self.abstractRegard addSubview:self.judgementSequencignation]; - [self.abstractRegard addSubview:self.satisfperformanceSequencignation]; - [self.abstractRegard addSubview:self.intratemporalSequencignation]; - [self.abstractRegard addSubview:self.dynaloudspeakerIndicateRegard]; - [self.abstractRegard addSubview:self.dynaloudspeakerSequencignation]; - [self.abstractRegard addSubview:self.burlywoodRegard]; -} - -- (void)initChildLyRestrictions { - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(15); - make.top.mas_equalTo(self.contentView).offset(10); - make.bottom.mas_equalTo(self.contentView); - }]; - - [self.motifBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(30); - make.width.mas_equalTo(50); - }]; - - [self.abstractRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth- 15 * 2); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(44, 44)); - make.left.top.mas_equalTo(self.abstractRegard); - }]; - - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(10); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard); - }]; - - [self.seaxualityIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(15, 15)); - make.centerY.mas_equalTo(self.monicerSequencignation); - make.left.mas_equalTo(self.monicerSequencignation.mas_right).offset(2); - }]; - - [self.judgementSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.monicerSequencignation); - make.left.mas_equalTo(self.seaxualityIndicateRegard.mas_right).offset(2); - }]; - - [self.satisfperformanceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.monicerSequencignation.mas_bottom).offset(10); - make.left.mas_equalTo(self.monicerSequencignation); - make.right.mas_lessThanOrEqualTo(self.dynaloudspeakerIndicateRegard.mas_left).offset(-5); - }]; - - [self.intratemporalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.monicerSequencignation); - make.top.mas_equalTo(self.satisfperformanceSequencignation.mas_bottom).offset(10); - }]; - - - [self.dynaloudspeakerIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(60, 60)); - make.right.mas_equalTo(self.abstractRegard); - make.centerY.mas_equalTo(self.abstractRegard); - }]; - - [self.dynaloudspeakerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.right.mas_equalTo(self.dynaloudspeakerIndicateRegard); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.monicerSequencignation); - make.right.mas_equalTo(self.abstractRegard); - make.height.mas_equalTo(1); - make.bottom.mas_equalTo(self.abstractRegard); - }]; -} -#pragma mark - Getters And Setters -- (void)setInteractiveAbstract:(SeparationsCoactiveMatrix *)interactiveAbstract { - _interactiveAbstract = interactiveAbstract; - if (_interactiveAbstract) { - self.motifBtuton.hidden = _interactiveAbstract.worldName.length <=0; - [self.motifBtuton setTitle:_interactiveAbstract.worldName forState:UIControlStateNormal]; - self.intelligenceportraitIndicateRegard.imageUrl = _interactiveAbstract.avatar; - NSString * nick = interactiveAbstract.nick; - if (nick.length > 6) { - nick = [NSString stringWithFormat:@"%@…", [nick substringToIndex:6]]; - } - self.monicerSequencignation.text = nick.length > 0 ? nick : @""; - self.seaxualityIndicateRegard.image = _interactiveAbstract.gender == GenderGenre_Female ? [UIImage imageNamed:@"yumi_same_female"] : [UIImage imageNamed:@"yumi_same_male"]; - BOOL isComment = _interactiveAbstract.actionType == MonentsInteractiveActionGenre_Comment; - self.judgementSequencignation.text = isComment ? YMLocalizedString(@"YUMI_Monents_Interactive_Table_View_Cell_0") : @""; - BOOL isText = _interactiveAbstract.type == MonentsContentGenre_Text; - self.dynaloudspeakerIndicateRegard.hidden = isText; - self.dynaloudspeakerSequencignation.hidden = !isText; - if (isText) { - self.dynaloudspeakerSequencignation.text = _interactiveAbstract.content; - } else { - self.dynaloudspeakerIndicateRegard.imageUrl = _interactiveAbstract.dynamicRes.resUrl; - } - self.satisfperformanceSequencignation.text = _interactiveAbstract.message; - - NSDate *date = [NSDate dateWithTimeIntervalSince1970:_interactiveAbstract.publishTime.floatValue/1000]; - NSString *dateString = [self.atoloudspeakerInitialiser stringFromDate:date]; - self.intratemporalSequencignation.text = dateString; - - CGFloat width = [_interactiveAbstract.worldName boundingRectWithSize:CGSizeMake(150,CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12]} context:nil].size.width + 10; - [self.motifBtuton mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(width); - }]; - } -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentLeading; - _stackView.spacing = 10; - } - return _stackView; -} - -- (UIButton *)motifBtuton { - if (!_motifBtuton) { - _motifBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_motifBtuton setTitle:YMLocalizedString(@"YUMI_Monents_Interactive_Table_View_Cell_1") forState:UIControlStateNormal]; - [_motifBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _motifBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_motifBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _motifBtuton.layer.masksToBounds = YES; - _motifBtuton.layer.cornerRadius = 15; - } - return _motifBtuton; -} - -- (UIView *)abstractRegard { - if (!_abstractRegard) { - _abstractRegard = [[UIView alloc] init]; - _abstractRegard.backgroundColor = [UIColor clearColor]; - } - return _abstractRegard; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 22; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:15]; - _monicerSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - } - return _monicerSequencignation; -} - -- (UIImageView *)seaxualityIndicateRegard { - if (!_seaxualityIndicateRegard) { - _seaxualityIndicateRegard = [[UIImageView alloc] init]; - _seaxualityIndicateRegard.userInteractionEnabled = YES; - } - return _seaxualityIndicateRegard; -} - -- (UILabel *)judgementSequencignation { - if (!_judgementSequencignation) { - _judgementSequencignation = [[UILabel alloc] init]; - _judgementSequencignation.font = [UIFont systemFontOfSize:15]; - _judgementSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - } - return _judgementSequencignation; -} - -- (UILabel *)satisfperformanceSequencignation { - if (!_satisfperformanceSequencignation) { - _satisfperformanceSequencignation = [[UILabel alloc] init]; - _satisfperformanceSequencignation.font = [UIFont systemFontOfSize:15]; - _satisfperformanceSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _satisfperformanceSequencignation; -} - -- (UILabel *)intratemporalSequencignation { - if (!_intratemporalSequencignation) { - _intratemporalSequencignation = [[UILabel alloc] init]; - _intratemporalSequencignation.font = [UIFont systemFontOfSize:12]; - _intratemporalSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - } - return _intratemporalSequencignation; -} - -- (NetIndicateRegard *)dynaloudspeakerIndicateRegard { - if (!_dynaloudspeakerIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _dynaloudspeakerIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _dynaloudspeakerIndicateRegard.layer.masksToBounds = YES; - _dynaloudspeakerIndicateRegard.layer.cornerRadius = 8; - _dynaloudspeakerIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _dynaloudspeakerIndicateRegard; -} - -- (UILabel *)dynaloudspeakerSequencignation { - if (!_dynaloudspeakerSequencignation) { - _dynaloudspeakerSequencignation = [[UILabel alloc] init]; - _dynaloudspeakerSequencignation.font = [UIFont systemFontOfSize:12]; - _dynaloudspeakerSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - } - return _dynaloudspeakerSequencignation; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _burlywoodRegard; -} - -- (NSDateFormatter *)atoloudspeakerInitialiser { - if (!_atoloudspeakerInitialiser) { - NSDateFormatter *engagementInitialiser = [[NSDateFormatter alloc] init]; - [engagementInitialiser setDateFormat:@"yyyy-MM-dd HH:mm"]; - _atoloudspeakerInitialiser = engagementInitialiser; - } - return _atoloudspeakerInitialiser; -} - - -@end diff --git a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsDispossessTabulationRegardElement.h b/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsDispossessTabulationRegardElement.h deleted file mode 100644 index 3e060e90..00000000 --- a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsDispossessTabulationRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMonentsEmptyTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/5/13. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISeparationsDispossessTabulationRegardElement : UITableViewCell - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsDispossessTabulationRegardElement.m b/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsDispossessTabulationRegardElement.m deleted file mode 100644 index 3ccd085d..00000000 --- a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsDispossessTabulationRegardElement.m +++ /dev/null @@ -1,70 +0,0 @@ -// -// YMMonentsEmptyTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/5/13. -// - -#import "YUMISeparationsDispossessTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIIndicateConstant.h" - -@interface YUMISeparationsDispossessTabulationRegardElement () -@property (nonatomic,strong) UIImageView *dispossessIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@end - -@implementation YUMISeparationsDispossessTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.dispossessIndicateRegard]; - [self.contentView addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.dispossessIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.contentView).offset(150); - make.centerX.mas_equalTo(self.contentView); - make.size.mas_equalTo(CGSizeMake(200, 200)); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.dispossessIndicateRegard.mas_bottom).offset(20); - make.left.right.mas_equalTo(self.contentView); - }]; -} -#pragma mark - Getters And Setters -- (UIImageView *)dispossessIndicateRegard { - if (!_dispossessIndicateRegard) { - _dispossessIndicateRegard = [[UIImageView alloc] init]; - _dispossessIndicateRegard.userInteractionEnabled = YES; - _dispossessIndicateRegard.image = [UIIndicateConstant defalutDispossessDepapossessor]; - _dispossessIndicateRegard.layer.masksToBounds = YES; - _dispossessIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _dispossessIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Monents_Empty_Table_View_Cell_0"); - _titleLabel.font = [UIFont systemFontOfSize:16]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsJudgementTabulationRegardElement.h b/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsJudgementTabulationRegardElement.h deleted file mode 100644 index 837c6b7f..00000000 --- a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsJudgementTabulationRegardElement.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YMMonentsCommentTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/6/22. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class SeparationsJudgementMatrix, YUMISeparationsJudgementTabulationRegardElement, SeparationsReplicationMatrix; - -@protocol FBCSeparationsCommentTabulationViweElementRepresendtation -- (void)yUMISepartowardsionsJudgementTarbsultowardsionViweElement:(YUMISeparationsJudgementTabulationRegardElement *)view didClickMoreReply:(SeparationsJudgementMatrix *)judgementAbstract; -- (void)yUMISepartowardsionsJudgementTarbsultowardsionViweElement:(YUMISeparationsJudgementTabulationRegardElement *)view didClickCommon:(SeparationsReplicationMatrix *)judgementAbstract; -- (void)yUMISepartowardsionsJudgementTarbsultowardsionViweElement:(YUMISeparationsJudgementTabulationRegardElement *)view didClickAvatar:(NSString *)judgementAbstract; -@end - -@interface YUMISeparationsJudgementTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) SeparationsJudgementMatrix *judgementAbstract; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsJudgementTabulationRegardElement.m b/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsJudgementTabulationRegardElement.m deleted file mode 100644 index ae4e0e25..00000000 --- a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsJudgementTabulationRegardElement.m +++ /dev/null @@ -1,361 +0,0 @@ -// -// YMMonentsCommentTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/6/22. -// - -#import "YUMISeparationsJudgementTabulationRegardElement.h" -#import -#import -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "YUMISeparationsProgrammingDisposition.h" -#import "NSString+Utils.h" -#import "MHTSpiritFacilitater.h" -#import "AccountAbstractStorage.h" -#import "NSArray+Safe.h" -#import "SeparationsJudgementMatrix.h" -#import "YUMISeparationsReplicationTabulationRegardElement.h" -#import "YUMISeparationsReplicationFurthaerTabulationRegardElement.h" - -@interface YUMISeparationsJudgementTabulationRegardElement () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UIView * judgementConsumerRegard; -@property (nonatomic,strong) NetIndicateRegard *judgementIntelligenceportraitRegard; -@property (nonatomic,strong) UILabel *judgementMonicerSequencignation; -@property (nonatomic,strong) UIImageView *maintainrietaryIndicateRegard; -@property (nonatomic,strong) YYLabel *judgementSequencignation; -@property (nonatomic,strong) UILabel *judgementEngagementSequencignation; -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) UIView * burlywoodAccommoengagementdRegard; -@property (nonatomic,strong) UIView * burlywoodRegard; -@property (nonatomic,strong) NSArray *datasource; -@end - -@implementation YUMISeparationsJudgementTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method - -- (void)initSubViews { - self.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.stackView]; - [self.stackView addArrangedSubview:self.judgementConsumerRegard]; - [self.stackView addArrangedSubview:self.tableView]; - [self.stackView addArrangedSubview:self.burlywoodAccommoengagementdRegard]; - - [self.burlywoodAccommoengagementdRegard addSubview:self.burlywoodRegard]; - - [self.judgementConsumerRegard addSubview:self.judgementIntelligenceportraitRegard]; - [self.judgementConsumerRegard addSubview:self.judgementMonicerSequencignation]; - [self.judgementConsumerRegard addSubview:self.maintainrietaryIndicateRegard]; - [self.judgementConsumerRegard addSubview:self.judgementSequencignation]; - [self.judgementConsumerRegard addSubview:self.judgementEngagementSequencignation]; -} - -- (void)initChildLyRestrictions { - if ([self.reuseIdentifier isEqualToString:NSStringFromClass([YUMISeparationsJudgementTabulationRegardElement class])]) { - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.left.mas_equalTo(self.contentView).inset(15); - make.top.bottom.mas_equalTo(self.contentView); - }]; - - [self.burlywoodAccommoengagementdRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(1); - }]; - - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.judgementMonicerSequencignation); - make.top.bottom.right.mas_equalTo(self.burlywoodAccommoengagementdRegard); - }]; - - [self.judgementIntelligenceportraitRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(KMONENTS_COMMENT_AVATAR_WIDTH, KMONENTS_COMMENT_AVATAR_WIDTH)); - make.left.mas_equalTo(self.judgementConsumerRegard); - make.top.mas_equalTo(self.judgementConsumerRegard).offset(10); - }]; - - [self.judgementMonicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.judgementIntelligenceportraitRegard.mas_right).offset(10); - make.top.mas_equalTo(self.judgementConsumerRegard).offset(10); - make.height.mas_equalTo(15); - }]; - - [self.maintainrietaryIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(32, 15)); - make.centerY.mas_equalTo(self.judgementMonicerSequencignation); - make.left.mas_equalTo(self.judgementMonicerSequencignation.mas_right).offset(5); - }]; - - [self.judgementEngagementSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.judgementConsumerRegard); - make.centerY.mas_equalTo(self.judgementMonicerSequencignation); - }]; - - [self.judgementSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.judgementMonicerSequencignation); - make.top.mas_equalTo(self.judgementMonicerSequencignation.mas_bottom).offset(10); - make.right.mas_equalTo(self.judgementConsumerRegard).offset(-kMONENTS_COMMENT_RIGHT_PADDING); - }]; - - }else{ - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.left.mas_equalTo(self.contentView).inset(15); - make.top.bottom.mas_equalTo(self.contentView); - }]; - - [self.burlywoodAccommoengagementdRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(1); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.judgementMonicerSequencignation); - make.top.bottom.right.mas_equalTo(self.burlywoodAccommoengagementdRegard); - }]; - - [self.judgementIntelligenceportraitRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(KMONENTS_COMMENT_AVATAR_WIDTH, KMONENTS_COMMENT_AVATAR_WIDTH)); - make.left.mas_equalTo(self.judgementConsumerRegard); - make.top.mas_equalTo(self.judgementConsumerRegard).offset(10); - }]; - - [self.judgementMonicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.judgementIntelligenceportraitRegard.mas_right).offset(10); - make.top.mas_equalTo(self.judgementConsumerRegard).offset(10); - make.height.mas_equalTo(15); - }]; - - [self.maintainrietaryIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(32, 15)); - make.centerY.mas_equalTo(self.judgementMonicerSequencignation); - make.left.mas_equalTo(self.judgementMonicerSequencignation.mas_right).offset(5); - }]; - - [self.judgementEngagementSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.judgementConsumerRegard); - make.centerY.mas_equalTo(self.judgementMonicerSequencignation); - }]; - - [self.judgementSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.judgementMonicerSequencignation); - make.top.mas_equalTo(self.judgementMonicerSequencignation.mas_bottom).offset(10); - make.right.mas_equalTo(self.judgementConsumerRegard).offset(-kMONENTS_COMMENT_RIGHT_PADDING); - }]; - } -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return 2; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - if (section == 0) { - return self.datasource.count; - } - return self.judgementAbstract.replyInfo.leftCount > 0 ? 1 : 0; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (indexPath.section == 0) { - SeparationsReplicationMatrix * replayinfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return replayinfo.replyRowHeight; - } - return 44; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (indexPath.section == 0) { - YUMISeparationsReplicationTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMISeparationsReplicationTabulationRegardElement class])]; - cell.replyInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.delegate = self; - return cell; - } - YUMISeparationsReplicationFurthaerTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMISeparationsReplicationFurthaerTabulationRegardElement class])]; - cell.leftCount = self.judgementAbstract.replyInfo.leftCount; - cell.delegate = self; - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (indexPath.section == 0 && self.datasource.count > 0) { - SeparationsReplicationMatrix * replyInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (replyInfo.uid.integerValue != [AccountAbstractStorage instance].acquireCid.integerValue && self.delegate && [self.delegate respondsToSelector:@selector(yUMISepartowardsionsJudgementTarbsultowardsionViweElement:didClickCommon:)]) { - [self.delegate yUMISepartowardsionsJudgementTarbsultowardsionViweElement:self didClickCommon:replyInfo]; - } - } -} - -#pragma mark - FBCSeparationsReplyTabulationViweElementRepresendtation -- (void)yUMISepartowardsionsReplictowardsionTarbsultowardsionViweElement:(YUMISeparationsReplicationTabulationRegardElement *)view didClickAvatar:(SeparationsReplicationMatrix *)replyInfo { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMISepartowardsionsJudgementTarbsultowardsionViweElement:didClickAvatar:)]) { - [self.delegate yUMISepartowardsionsJudgementTarbsultowardsionViweElement:self didClickAvatar:replyInfo.uid]; - } -} - -#pragma mark - FBCSeparationsReplyFurthaerTabulationViweElementRepresendtation -- (void)yUMISepartowardsionsReplictowardsionFurthaerTarbsultowardsionViweElementDidTicktackFurthaerReplictowardsion:(YUMISeparationsReplicationFurthaerTabulationRegardElement *)view { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMISepartowardsionsJudgementTarbsultowardsionViweElement:didClickMoreReply:)]) { - [self.delegate yUMISepartowardsionsJudgementTarbsultowardsionViweElement:self didClickMoreReply:self.judgementAbstract]; - } -} - -#pragma mark - Event Response -- (void)betowardsIntelligenceportraitRecognition { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMISepartowardsionsJudgementTarbsultowardsionViweElement:didClickAvatar:)]) { - [self.delegate yUMISepartowardsionsJudgementTarbsultowardsionViweElement:self didClickAvatar:self.judgementAbstract.uid]; - } -} - -#pragma mark - Getters And Setters -- (void)setJudgementAbstract:(SeparationsJudgementMatrix *)judgementAbstract { - _judgementAbstract = judgementAbstract; - if (_judgementAbstract) { - self.maintainrietaryIndicateRegard.hidden = !_judgementAbstract.landLordFlag; - self.judgementIntelligenceportraitRegard.imageUrl = _judgementAbstract.avatar; - NSString * nick = _judgementAbstract.nick; - if (nick.length > 8) { - nick = [nick substringToIndex:8]; - } - MHTSpiritFacilitater *faceManager = [MHTSpiritFacilitater partowardsiciptowardsiondSenintrtowardsemporalntFacilittowardseer]; - - NSMutableAttributedString * attribute = [faceManager towardstributedBWSttrByEssay:_judgementAbstract.content font:[UIFont systemFontOfSize:15]]; - self.judgementSequencignation.attributedText = attribute; - self.judgementMonicerSequencignation.text = nick; - self.judgementEngagementSequencignation.text = [NSString sttriAboutIntrtowardsemporalStamp:_judgementAbstract.publishTime]; - self.tableView.hidden = _judgementAbstract.replyInfo.replyList.count <=0; - self.datasource = _judgementAbstract.replyInfo.replyList; - [self.tableView reloadData]; - if (_judgementAbstract.replyInfo.replyList.count > 0) { - NSString * content = _judgementAbstract.content.length > 0 ? _judgementAbstract.content : @""; - CGFloat commentHeight = [content boundingRectWithSize:CGSizeMake(KMONENTS_COMMENT_MAX_WIDTH, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:15]} context:nil].size.height + 5; - commentHeight = MAX(commentHeight, 15); - [self.judgementConsumerRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(commentHeight + 10 + 15 + 10); - }]; - } - - } -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 10; - } - return _stackView; -} - -- (UIView *)judgementConsumerRegard { - if (!_judgementConsumerRegard) { - _judgementConsumerRegard = [[UIView alloc] init]; - _judgementConsumerRegard.backgroundColor = [UIColor clearColor]; - } - return _judgementConsumerRegard; -} - -- (NetIndicateRegard *)judgementIntelligenceportraitRegard { - if (!_judgementIntelligenceportraitRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _judgementIntelligenceportraitRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _judgementIntelligenceportraitRegard.layer.masksToBounds = YES; - _judgementIntelligenceportraitRegard.layer.cornerRadius = 45/2.0; - _judgementIntelligenceportraitRegard.userInteractionEnabled = YES; - UITapGestureRecognizer * tap= [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsIntelligenceportraitRecognition)]; - [_judgementIntelligenceportraitRegard addGestureRecognizer:tap]; - } - return _judgementIntelligenceportraitRegard; -} - -- (UILabel *)judgementMonicerSequencignation { - if (!_judgementMonicerSequencignation) { - _judgementMonicerSequencignation = [[UILabel alloc] init]; - _judgementMonicerSequencignation.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - _judgementMonicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - [_judgementMonicerSequencignation sizeToFit]; - } - return _judgementMonicerSequencignation; -} - -- (YYLabel *)judgementSequencignation { - if (!_judgementSequencignation) { - _judgementSequencignation = [[YYLabel alloc] init]; - _judgementSequencignation.font = [UIFont systemFontOfSize:15]; - _judgementSequencignation.numberOfLines = 0; - _judgementSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _judgementSequencignation.preferredMaxLayoutWidth = KMONENTS_COMMENT_MAX_WIDTH; - } - return _judgementSequencignation; -} - -- (UILabel *)judgementEngagementSequencignation { - if (!_judgementEngagementSequencignation) { - _judgementEngagementSequencignation = [[UILabel alloc] init]; - _judgementEngagementSequencignation.font = [UIFont systemFontOfSize:12]; - _judgementEngagementSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - } - return _judgementEngagementSequencignation; -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - _tableView.scrollEnabled = NO; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMISeparationsReplicationTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMISeparationsReplicationTabulationRegardElement class])]; - [_tableView registerClass:[YUMISeparationsReplicationFurthaerTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMISeparationsReplicationFurthaerTabulationRegardElement class])]; - } - return _tableView; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _burlywoodRegard; -} - -- (UIView *)burlywoodAccommoengagementdRegard { - if (!_burlywoodAccommoengagementdRegard) { - _burlywoodAccommoengagementdRegard = [[UIView alloc] init]; - _burlywoodAccommoengagementdRegard.backgroundColor = [UIColor clearColor]; - } - return _burlywoodAccommoengagementdRegard; -} - -- (UIImageView *)maintainrietaryIndicateRegard { - if (!_maintainrietaryIndicateRegard) { - _maintainrietaryIndicateRegard = [[UIImageView alloc] init]; - _maintainrietaryIndicateRegard.userInteractionEnabled = YES; - _maintainrietaryIndicateRegard.image = [UIImage imageNamed:@"yumi_monents_same_landLordFlag"]; - _maintainrietaryIndicateRegard.hidden = YES; - } - return _maintainrietaryIndicateRegard; -} - -@end diff --git a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsMotifAssembletionRegardElement.h b/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsMotifAssembletionRegardElement.h deleted file mode 100644 index c294d611..00000000 --- a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsMotifAssembletionRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMonentsTopicCollectionViewCell.h -// YUMI -// -// Created by YUMI on 2022/5/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class SeparationsMotifMatrix; -@interface YUMISeparationsMotifAssembletionRegardElement : UICollectionViewCell -@property (nonatomic,strong) SeparationsMotifMatrix *motifAbstract; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsMotifAssembletionRegardElement.m b/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsMotifAssembletionRegardElement.m deleted file mode 100644 index 918cde0d..00000000 --- a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsMotifAssembletionRegardElement.m +++ /dev/null @@ -1,95 +0,0 @@ -// -// YMMonentsTopicCollectionViewCell.m -// YUMI -// -// Created by YUMI on 2022/5/18. -// - -#import "YUMISeparationsMotifAssembletionRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "NetIndicateRegard.h" -#import "SeparationsMotifMatrix.h" - -@interface YUMISeparationsMotifAssembletionRegardElement () - -@property (nonatomic,strong) NetIndicateRegard *motifIndicateRegard; -@property (nonatomic,strong) UIImageView *figureIndicateRegard; -@property (nonatomic,strong) UILabel *motifSequencignation; - -@end - -@implementation YUMISeparationsMotifAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.motifIndicateRegard]; - [self.motifIndicateRegard addSubview:self.figureIndicateRegard]; - [self.motifIndicateRegard addSubview:self.motifSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.motifIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.contentView); - }]; - - [self.figureIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.motifIndicateRegard); - make.height.mas_equalTo(30); - }]; - - [self.motifSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.motifIndicateRegard).inset(2); - make.bottom.mas_equalTo(self.motifIndicateRegard.mas_bottom).offset(-6); - }]; -} - -#pragma mark - Getters And Setters -- (void)setMotifAbstract:(SeparationsMotifMatrix *)motifAbstract { - _motifAbstract = motifAbstract; - if (_motifAbstract) { - self.motifSequencignation.text = [NSString stringWithFormat:@"#%@", _motifAbstract.name]; - self.motifIndicateRegard.imageUrl = _motifAbstract.icon; - } -} - -- (NetIndicateRegard *)motifIndicateRegard { - if (!_motifIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _motifIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _motifIndicateRegard.layer.masksToBounds = YES; - _motifIndicateRegard.layer.cornerRadius = 12; - _motifIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _motifIndicateRegard; -} - -- (UIImageView *)figureIndicateRegard { - if (!_figureIndicateRegard) { - _figureIndicateRegard = [[UIImageView alloc] init]; - _figureIndicateRegard.userInteractionEnabled = YES; - _figureIndicateRegard.image = [UIImage imageNamed:@"yumi_main_scope_list_shadow_background"]; - } - return _figureIndicateRegard; -} - -- (UILabel *)motifSequencignation { - if (!_motifSequencignation) { - _motifSequencignation = [[UILabel alloc] init]; - _motifSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightBold]; - _motifSequencignation.textColor = [UIColor whiteColor]; - _motifSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _motifSequencignation; -} -@end diff --git a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsReplicationFurthaerTabulationRegardElement.h b/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsReplicationFurthaerTabulationRegardElement.h deleted file mode 100644 index 661460c1..00000000 --- a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsReplicationFurthaerTabulationRegardElement.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMMonentsReplyMoreTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/6/23. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMISeparationsReplicationFurthaerTabulationRegardElement; -@protocol FBCSeparationsReplyFurthaerTabulationViweElementRepresendtation - -- (void)yUMISepartowardsionsReplictowardsionFurthaerTarbsultowardsionViweElementDidTicktackFurthaerReplictowardsion:(YUMISeparationsReplicationFurthaerTabulationRegardElement *)view; - -@end -@interface YUMISeparationsReplicationFurthaerTabulationRegardElement : UITableViewCell -@property (nonatomic,weak) id delegate; - -@property (nonatomic,assign) NSInteger leftCount; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsReplicationFurthaerTabulationRegardElement.m b/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsReplicationFurthaerTabulationRegardElement.m deleted file mode 100644 index 2002deb0..00000000 --- a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsReplicationFurthaerTabulationRegardElement.m +++ /dev/null @@ -1,67 +0,0 @@ -// -// YMMonentsReplyMoreTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/6/23. -// - -#import "YUMISeparationsReplicationFurthaerTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMISeparationsProgrammingDisposition.h" - -@interface YUMISeparationsReplicationFurthaerTabulationRegardElement () -@property (nonatomic,strong) UILabel *furthaerSequencignation; - -@end -@implementation YUMISeparationsReplicationFurthaerTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.furthaerSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.furthaerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.top.bottom.mas_equalTo(self.contentView); - make.left.mas_equalTo(self.contentView).offset(kMONENTS_COMMENT_REPLY_LEFT_PADDING + KMONENTS_COMMENT_REPLY_AVATAR_WIDTH + kMONENTS_COMMENT_AVATAR_NICK_PADDING); - }]; -} -#pragma mark - Event Response -- (void)furthaerSequencigntowardsionBetowardsRecognition { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMISepartowardsionsReplictowardsionFurthaerTarbsultowardsionViweElementDidTicktackFurthaerReplictowardsion:)]) { - [self.delegate yUMISepartowardsionsReplictowardsionFurthaerTarbsultowardsionViweElementDidTicktackFurthaerReplictowardsion:self]; - } -} -#pragma mark - Getters And Setters -- (void)setLeftCount:(NSInteger)leftCount { - _leftCount = leftCount; - if (_leftCount) { - self.furthaerSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Monents_Reply_More_Table_View_Cell_0"), _leftCount]; - } -} - -- (UILabel *)furthaerSequencignation { - if (!_furthaerSequencignation) { - _furthaerSequencignation = [[UILabel alloc] init]; - _furthaerSequencignation.font = [UIFont systemFontOfSize:15 weight:UIFontWeightBold]; - _furthaerSequencignation.textColor = [DJDKMIMOMColor aplictowardsionUnderlinePrettify]; - _furthaerSequencignation.userInteractionEnabled = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(furthaerSequencigntowardsionBetowardsRecognition)]; - [_furthaerSequencignation addGestureRecognizer:tap]; - } - return _furthaerSequencignation; -} - - -@end diff --git a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsReplicationTabulationRegardElement.h b/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsReplicationTabulationRegardElement.h deleted file mode 100644 index a1cd8c0d..00000000 --- a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsReplicationTabulationRegardElement.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMMonentsReplyTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/6/22. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class SeparationsReplicationMatrix, YUMISeparationsReplicationTabulationRegardElement; -@protocol FBCSeparationsReplyTabulationViweElementRepresendtation - -- (void)yUMISepartowardsionsReplictowardsionTarbsultowardsionViweElement:(YUMISeparationsReplicationTabulationRegardElement *)view didClickAvatar:(SeparationsReplicationMatrix *)replyInfo; - -@end -@interface YUMISeparationsReplicationTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) SeparationsReplicationMatrix *replyInfo; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsReplicationTabulationRegardElement.m b/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsReplicationTabulationRegardElement.m deleted file mode 100644 index 986be4df..00000000 --- a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsReplicationTabulationRegardElement.m +++ /dev/null @@ -1,175 +0,0 @@ -// -// YMMonentsReplyTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/6/22. -// - -#import "YUMISeparationsReplicationTabulationRegardElement.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "YUMIMacroUitls.h" -#import "YUMISeparationsProgrammingDisposition.h" -#import "NSString+Utils.h" -#import "MHTSpiritFacilitater.h" -#import "SeparationsJudgementReplicationMatrix.h" - -@interface YUMISeparationsReplicationTabulationRegardElement () -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UIImageView *maintainrietaryIndicateRegard; -@property (nonatomic,strong) YYLabel *satisfperformanceSequencignation; -@property (nonatomic,strong) UILabel *engagementSequencignation; -@property (nonatomic,strong) UIView * burlywoodRegard; - -@end - -@implementation YUMISeparationsReplicationTabulationRegardElement - - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.monicerSequencignation]; - [self.contentView addSubview:self.maintainrietaryIndicateRegard]; - [self.contentView addSubview:self.satisfperformanceSequencignation]; - [self.contentView addSubview:self.engagementSequencignation]; - [self.contentView addSubview:self.burlywoodRegard]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(KMONENTS_COMMENT_REPLY_AVATAR_WIDTH, KMONENTS_COMMENT_REPLY_AVATAR_WIDTH)); - make.top.mas_equalTo(self.contentView).offset(10); - make.left.mas_equalTo(self.contentView).offset(kMONENTS_COMMENT_REPLY_LEFT_PADDING); - }]; - - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(kMONENTS_COMMENT_AVATAR_NICK_PADDING); - make.top.mas_equalTo(self.contentView).offset(10); - make.height.mas_equalTo(15); - }]; - - [self.maintainrietaryIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(30, 15)); - make.centerY.mas_equalTo(self.monicerSequencignation); - make.left.mas_equalTo(self.monicerSequencignation.mas_right).offset(5); - }]; - - [self.satisfperformanceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.monicerSequencignation); - make.top.mas_equalTo(self.monicerSequencignation.mas_bottom).offset(10); - make.right.mas_equalTo(self.contentView).offset(-15); - }]; - - [self.engagementSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.contentView).offset(-10); - make.centerY.mas_equalTo(self.monicerSequencignation); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.monicerSequencignation); - make.right.mas_equalTo(self.contentView).offset(-10); - make.height.mas_equalTo(0.5); - make.bottom.mas_equalTo(self.contentView); - }]; -} - -#pragma mark - Event Response -- (void)betowardsIntelligenceportraitIndictowardse { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMISepartowardsionsReplictowardsionTarbsultowardsionViweElement:didClickAvatar:)]) { - [self.delegate yUMISepartowardsionsReplictowardsionTarbsultowardsionViweElement:self didClickAvatar:self.replyInfo]; - } -} - -#pragma mark - Getters And Setters -- (void)setReplyInfo:(SeparationsReplicationMatrix *)replyInfo { - _replyInfo = replyInfo; - if (_replyInfo) { - self.intelligenceportraitIndicateRegard.imageUrl = _replyInfo.avatar; - NSString * nick = _replyInfo.nick; - if (nick.length > 8) { - nick = [nick substringToIndex:8]; - } - self.maintainrietaryIndicateRegard.hidden = !_replyInfo.landLordFlag; - self.monicerSequencignation.text = nick; - self.engagementSequencignation.text = [NSString sttriAboutIntrtowardsemporalStamp:_replyInfo.publishTime]; - self.satisfperformanceSequencignation.attributedText = _replyInfo.contentAttribute; - } -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 30/2.0; - _intelligenceportraitIndicateRegard.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - _intelligenceportraitIndicateRegard.userInteractionEnabled = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsIntelligenceportraitIndictowardse)]; - [_intelligenceportraitIndicateRegard addGestureRecognizer:tap]; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _monicerSequencignation; -} - -- (YYLabel *)satisfperformanceSequencignation { - if (!_satisfperformanceSequencignation) { - _satisfperformanceSequencignation = [[YYLabel alloc] init]; - _satisfperformanceSequencignation.preferredMaxLayoutWidth = KMONENTS_COMMENT_REPLY_MAX_WIDTH; - _satisfperformanceSequencignation.numberOfLines = 0; - } - return _satisfperformanceSequencignation; -} - -- (UILabel *)engagementSequencignation { - if (!_engagementSequencignation) { - _engagementSequencignation = [[UILabel alloc] init]; - _engagementSequencignation.font = [UIFont systemFontOfSize:12]; - _engagementSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - } - return _engagementSequencignation; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _burlywoodRegard; -} - -- (UIImageView *)maintainrietaryIndicateRegard { - if (!_maintainrietaryIndicateRegard) { - _maintainrietaryIndicateRegard = [[UIImageView alloc] init]; - _maintainrietaryIndicateRegard.userInteractionEnabled = YES; - _maintainrietaryIndicateRegard.image = [UIImage imageNamed:@"yumi_monents_same_landLordFlag"]; - _maintainrietaryIndicateRegard.hidden = YES; - } - return _maintainrietaryIndicateRegard; -} - - -@end diff --git a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsTabulationRegardElement.h b/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsTabulationRegardElement.h deleted file mode 100644 index 1ed69592..00000000 --- a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsTabulationRegardElement.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YMMonentsTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/5/11. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class SeparationsAbstractMatrix, YUMISeparationsTabulationRegardElement; - -@protocol FBCSeparationsTabulationViweElementRepresendtation -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClickLike:(SeparationsAbstractMatrix *)monentsInfo; -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClicDelete:(SeparationsAbstractMatrix *)monentsInfo; -@optional -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClicCommon:(SeparationsAbstractMatrix *)monentsInfo; -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClicFold:(SeparationsAbstractMatrix *)monentsInfo; -@end - -@interface YUMISeparationsTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) SeparationsAbstractMatrix *monentsInfo; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsTabulationRegardElement.m b/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsTabulationRegardElement.m deleted file mode 100644 index d5b63a95..00000000 --- a/YuMi/Modules/YMMonents/View/Cell/YUMISeparationsTabulationRegardElement.m +++ /dev/null @@ -1,303 +0,0 @@ -// -// YMMonentsTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/5/11. -// - -#import "YUMISeparationsTabulationRegardElement.h" -#import - -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "YUMISeparationsProgrammingDisposition.h" -#import "SDAppearanceBrowser.h" -#import "XCCurrentVCStackExecutive.h" -#import "NSArray+Safe.h" -#import "ClientDisposition.h" -#import "SeparationsAbstractMatrix.h" -#import "YUMISeparationsConsumerAbstractRegard.h" -#import "YUMISeparationsAppearanceRegard.h" -#import "YUMISeparationsTooObstacleRegard.h" -#import "YUMISepartionMotifRegard.h" -#import "YUMISeparationsSatisfactionRegard.h" -#import "YUMISeparationsProgrammingDisposition.h" -#import "YUMISeparationMotifAccommodatedRegardGovernancer.h" -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -#import "YUMIManeSimpleConsumerAbstractRegardGovernancer.h" -#import "YUMIChamberRegardGovernancer.h" -@interface YUMISeparationsTabulationRegardElement () -@property (nonatomic,strong) UIView * encourageRegard; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) YUMISeparationsConsumerAbstractRegard * consumerAbstractRegard; -@property (nonatomic,strong) YUMISeparationsSatisfactionRegard *textView; -@property (nonatomic,strong) YUMISeparationsAppearanceRegard *appearanceRegard; -@property (nonatomic,strong) YUMISeparationsTooObstacleRegard *utensilObstacleRegard; -@property (nonatomic,strong) YUMISepartionMotifRegard *motifRegard; - -@property (nonatomic,strong) NSString *identifier; - -@end - -@implementation YUMISeparationsTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.encourageRegard]; - - - if ([self.reuseIdentifier isEqualToString:NSStringFromClass([YUMISeparationsTabulationRegardElement class])]){ - [self.encourageRegard addSubview:self.consumerAbstractRegard]; - [self.encourageRegard addSubview:self.stackView]; - [self.encourageRegard addSubview:self.utensilObstacleRegard]; - - [self.stackView addArrangedSubview:self.textView]; - [self.stackView addArrangedSubview:self.appearanceRegard]; - [self.stackView addArrangedSubview:self.motifRegard]; - }else{ - - [self.encourageRegard addSubview:self.stackView]; - - [self.stackView addArrangedSubview:self.textView]; - [self.stackView addArrangedSubview:self.appearanceRegard]; - [self.stackView addArrangedSubview:self.motifRegard]; - } -} - -- (void)initChildLyRestrictions { - - if ([self.reuseIdentifier isEqualToString:NSStringFromClass([YUMISeparationsTabulationRegardElement class])]){ - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.contentView); - }]; - - [self.consumerAbstractRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.encourageRegard); - make.height.mas_equalTo(kMONENTS_USER_INFO_HEIGHT); - }]; - - [self.textView mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(20); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageRegard).offset(kMONENTS_CONTENT_LEFT_PADDING); - make.right.mas_equalTo(self.encourageRegard).offset(-kMONENTS_CONTENT_RIGHT_PADDING); - make.top.mas_equalTo(self.consumerAbstractRegard.mas_bottom).offset(kMONENTS_CONTENT_SPACAE_HEIGHT); - }]; - - [self.motifRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(kMONENTS_TEXT_TOPIC_HEIGHT); - }]; - - [self.utensilObstacleRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageRegard); - make.top.mas_equalTo(self.stackView.mas_bottom); - make.height.mas_equalTo(kMONENTS_TOOL_BAR_HEIGHT); - }]; - }else{ - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.contentView); - }]; - - [self.textView mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(20); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageRegard).offset(kSIMPLE_MONENTS_CONTENT_LEFT_PADDING); - make.right.mas_equalTo(self.encourageRegard).offset(-kSIMPLE_MONENTS_CONTENT_RIGHT_PADDING); - make.top.mas_equalTo(self.encourageRegard.mas_top).offset(kMONENTS_CONTENT_SPACAE_HEIGHT); - }]; - - [self.motifRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(kMONENTS_TEXT_TOPIC_HEIGHT); - }]; - } -} -#pragma mark - FBCSeparationsConsumerAbstractRegardRepresendtation -- (void)yUMISepartowardsionsConsumerAbstractRegard:(YUMISeparationsConsumerAbstractRegard *)view didTicktackImportChamber:(SeparationsAbstractMatrix *)reminiscence { - if (reminiscence.inRoomUid.integerValue > 0) { - [YUMIChamberRegardGovernancer unfoildChamber:reminiscence.inRoomUid viewController:[XCCurrentVCStackExecutive shareManager].getCurrentVC]; - } -} - -- (void)yUMISepartowardsionsConsumerAbstractRegard:(YUMISeparationsConsumerAbstractRegard *)view didClickAvatar:(SeparationsAbstractMatrix *)reminiscence { - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMIManeConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = reminiscence.uid.integerValue; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:userInfoVC animated:YES]; - }else{ - YUMIManeSimpleConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeSimpleConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = reminiscence.uid.integerValue; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:userInfoVC animated:YES]; - } - -} - -#pragma mark - FBCSeparationsTooObstacleRegardRepresendtation -- (void)yUMISepartowardsionsTooObstacleRegard:(YUMISeparationsTooObstacleRegard *)view didClickLike:(SeparationsAbstractMatrix *)monentsInfo { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMISepartowardsionsTarbsultowardsionViweElement:didClickLike:)]) { - [self.delegate yUMISepartowardsionsTarbsultowardsionViweElement:self didClickLike:monentsInfo]; - } -} - -- (void)yUMISepartowardsionsTooObstacleRegard:(YUMISeparationsTooObstacleRegard *)view didClickDelete:(SeparationsAbstractMatrix *)monentsInfo { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMISepartowardsionsTarbsultowardsionViweElement:didClicDelete:)]) { - [self.delegate yUMISepartowardsionsTarbsultowardsionViweElement:self didClicDelete:self.monentsInfo]; - } -} - -- (void)yUMISepartowardsionsTooObstacleRegard:(YUMISeparationsTooObstacleRegard *)view didClickCommon:(SeparationsAbstractMatrix *)monentsInfo { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMISepartowardsionsTarbsultowardsionViweElement:didClicCommon:)]) { - [self.delegate yUMISepartowardsionsTarbsultowardsionViweElement:self didClicCommon:self.monentsInfo]; - } -} - -#pragma mark - FBCSeparationsContentRegardRepresendtation -- (void)yUMISepartowardsionsStowardsisfperformanceRegard:(YUMISeparationsSatisfactionRegard *)view didClickFold:(SeparationsAbstractMatrix *)monentsInfo { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMISepartowardsionsTarbsultowardsionViweElement:didClicFold:)]) { - [self.delegate yUMISepartowardsionsTarbsultowardsionViweElement:self didClicFold:monentsInfo]; - } -} - -#pragma mark - SDPhotoBrowserRepresendtation -- (NSURL *)aplictowardsionearanceBrowser:(SDAppearanceBrowser *)browser highQualityIndictowardseWEEBSITEInthecaseofIndictowardsrix:(NSInteger)index { - SeparationsPicAbstractMatrix *picinfo = [self.monentsInfo.dynamicResList secureGroalTowardsIndictowardsrix1:index]; - return [NSURL URLWithString:picinfo.resUrl]; -} - -- (UIImage *)aplictowardsionearanceBrowser:(SDAppearanceBrowser *)browser placeholderIndictowardseInthecaseofIndictowardsrix:(NSInteger)index { - return [UIIndicateConstant defalutOriflammeDepapossessor]; -} - -#pragma mark - FBCSeparationsPhotoRegardRepresendtation -- (void)yUMISepartowardsionsAplictowardsionearanceRegard:(YUMISeparationsAppearanceRegard *)view didClickImage:(NSInteger)index { - NSInteger count = self.monentsInfo.dynamicResList.count; - SDAppearanceBrowser *browser = [[SDAppearanceBrowser alloc]init]; - browser.sourceIndicatesAccommoengagementdRegard = self; - browser.delegate = self; - browser.indicateComputation = count; - browser.universalIndicateIndicatrix = index; - browser.isMe = NO; - [browser show]; -} - -#pragma mark - Event Response -- (void)didBetowardsMotifRecognition { - if (self.monentsInfo.worldId > 0) { - YUMISeparationMotifAccommodatedRegardGovernancer * topicListVC = [[YUMISeparationMotifAccommodatedRegardGovernancer alloc] init]; - topicListVC.worldId = [NSString stringWithFormat:@"%ld", self.monentsInfo.worldId]; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:topicListVC animated:YES]; - } -} - -#pragma mark - Getters And Setters -- (void)setMonentsInfo:(SeparationsAbstractMatrix *)monentsInfo { - _monentsInfo = monentsInfo; - if (_monentsInfo) { - self.consumerAbstractRegard.monentsInfo = _monentsInfo; - self.textView.monentsInfo = _monentsInfo; - self.appearanceRegard.dynamicResList = _monentsInfo.dynamicResList; - self.motifRegard.monentsInfo = _monentsInfo; - self.utensilObstacleRegard.monentsInfo = _monentsInfo; - if (_monentsInfo.type == MonentsContentGenre_Picture) { - self.appearanceRegard.hidden = NO; - CGFloat picHeight = _monentsInfo.picHeight <=0 ? [YUMISeparationsProgrammingDisposition separtowardsionsGHPiicAltitude:_monentsInfo] : _monentsInfo.picHeight; - [self.appearanceRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(picHeight); - }]; - } else { - self.appearanceRegard.hidden = YES; - [self.appearanceRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(0); - }]; - } - - CGFloat contentHeight = [YUMISeparationsProgrammingDisposition separtowardsionsStowardsisfperformanceAltitude:_monentsInfo]; - [self.textView mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(contentHeight); - }]; - } -} - -- (UIView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIView alloc] init]; - _encourageRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - } - return _encourageRegard; -} - -- (YUMISeparationsConsumerAbstractRegard *)consumerAbstractRegard { - if (!_consumerAbstractRegard) { - _consumerAbstractRegard = [[YUMISeparationsConsumerAbstractRegard alloc] init]; - _consumerAbstractRegard.delegate = self; - } - return _consumerAbstractRegard; -} - -- (YUMISeparationsAppearanceRegard *)appearanceRegard { - if (!_appearanceRegard) { - _appearanceRegard = [[YUMISeparationsAppearanceRegard alloc] init]; - _appearanceRegard.delegate = self; - } - return _appearanceRegard; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = kMONENTS_CONTENT_SPACAE_HEIGHT; - } - return _stackView; -} - -- (YUMISeparationsSatisfactionRegard *)textView { - if (!_textView) { - _textView = [[YUMISeparationsSatisfactionRegard alloc] init]; - _textView.delegate = self; - - if ([self.reuseIdentifier isEqualToString:NSStringFromClass([YUMISeparationsTabulationRegardElement class])]){ - _textView.isSimple = NO; - }else{ - - _textView.isSimple = YES; - } - } - return _textView; -} - -- (YUMISepartionMotifRegard *)motifRegard { - if (!_motifRegard) { - _motifRegard = [[YUMISepartionMotifRegard alloc] init]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didBetowardsMotifRecognition)]; - [_motifRegard addGestureRecognizer:tap]; - } - return _motifRegard; -} - -- (YUMISeparationsTooObstacleRegard *)utensilObstacleRegard { - if (!_utensilObstacleRegard) { - _utensilObstacleRegard = [[YUMISeparationsTooObstacleRegard alloc] init]; - _utensilObstacleRegard.delegate = self; - } - return _utensilObstacleRegard; -} - - - -@end diff --git a/YuMi/Modules/YMMonents/View/SubViews/XPMoentsTopicListView.h b/YuMi/Modules/YMMonents/View/SubViews/XPMoentsTopicListView.h new file mode 100644 index 00000000..07394659 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/SubViews/XPMoentsTopicListView.h @@ -0,0 +1,22 @@ +// +// YMMoentsTopicListView.h +// YUMI +// +// Created by YUMI on 2022/8/16. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPMoentsTopicListView, MonentsTopicModel; +@protocol XPMoentsTopicListViewDelegate + +- (void)xPMoentsTopicListView:(XPMoentsTopicListView *)view didSelectItem:(MonentsTopicModel *)topicInfo; + +@end +@interface XPMoentsTopicListView : UIView +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/SubViews/XPMoentsTopicListView.m b/YuMi/Modules/YMMonents/View/SubViews/XPMoentsTopicListView.m new file mode 100644 index 00000000..407263ac --- /dev/null +++ b/YuMi/Modules/YMMonents/View/SubViews/XPMoentsTopicListView.m @@ -0,0 +1,263 @@ +// +// YMMoentsTopicListView.m +// YUMI +// +// Created by YUMI on 2022/8/16. +// + +#import "XPMoentsTopicListView.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "Api+Monents.h" +#import "NetImageView.h" +#import "XNDJTDDLoadingTool.h" +#import "AccountInfoStorage.h" +#import "MonentsTopicModel.h" +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" + +@interface XPMoentsTopicListTableViewCell : UITableViewCell +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///标题 +@property (nonatomic,strong) UILabel *nameLabel; +///描述 +@property (nonatomic,strong) UILabel *desLabel; +@property (nonatomic,strong) MonentsTopicModel *topicInfo; +@end + +@implementation XPMoentsTopicListTableViewCell +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = UIColor.clearColor; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.nameLabel]; + [self.contentView addSubview:self.desLabel]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(10); + make.centerY.mas_equalTo(self.contentView); + make.width.mas_equalTo(100); + make.height.mas_equalTo(60); + }]; + + [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.avatarImageView.mas_centerY).offset(-2); + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(10); + make.right.mas_equalTo(-20); + }]; + + [self.desLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.avatarImageView.mas_centerY).offset(2); + make.left.right.mas_equalTo(self.nameLabel); + }]; +} + +#pragma mark - Getters And Setters +- (void)setTopicInfo:(MonentsTopicModel *)topicInfo { + _topicInfo= topicInfo; + if (_topicInfo) { + self.avatarImageView.imageUrl = _topicInfo.icon; + self.nameLabel.text = _topicInfo.worldName; + self.desLabel.text = _topicInfo.desc; + } +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.contentMode = UIViewContentModeScaleAspectFill; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 12; + } + return _avatarImageView; +} + +- (UILabel *)nameLabel { + if (_nameLabel == nil) { + _nameLabel = [[UILabel alloc] init]; + _nameLabel.font = [UIFont systemFontOfSize:15]; + _nameLabel.textColor = DJDKMIMOMColor.mainTextColor; + } + return _nameLabel; +} + +- (UILabel *)desLabel { + if (_desLabel == nil) { + _desLabel = [[UILabel alloc] init]; + _desLabel.font = [UIFont systemFontOfSize:12]; + _desLabel.textColor = DJDKMIMOMColor.secondTextColor; + _desLabel.numberOfLines = 2; + } + return _desLabel; +} + +@end + + +@interface XPMoentsTopicListView () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +@property (nonatomic,assign) int page; +@end + +@implementation XPMoentsTopicListView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initHeaderAndFooterRrfresh]; + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; + + [self headerRefresh]; +} + +- (void)headerRefresh { + self.page = 1; + NSString * pageStr = [NSString stringWithFormat:@"%d", self.page]; + NSString * uid = [AccountInfoStorage instance].getUid; + [Api monentsTopicList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + [self.tableView.mj_header endRefreshing]; + if (code == 200) { + [self.datasource removeAllObjects]; + NSArray * array = [MonentsTopicModel modelsWithArray:data.data]; + [self.datasource addObjectsFromArray:array]; + [self.tableView reloadData]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } uid:uid type:@"0" page:pageStr]; +} + +- (void)footerRefresh { + self.page++; + NSString * pageStr = [NSString stringWithFormat:@"%d", self.page]; + NSString * uid = [AccountInfoStorage instance].getUid; + [Api monentsTopicList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + [self.tableView.mj_footer endRefreshing]; + if (code == 200) { + NSArray * array = [MonentsTopicModel modelsWithArray:data.data]; + if (array.count > 0) { + [self.datasource addObjectsFromArray:array]; + [self.tableView reloadData]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPMoentsTopicListView0")]; + } + + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } uid:uid type:@"0" page:pageStr]; +} + + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor whiteColor]; + self.layer.masksToBounds = YES; + self.layer.cornerRadius = 10; + [self addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(KScreenWidth, 450)); + }]; + + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self); + make.top.mas_equalTo(self).offset(10); + }]; +} + + + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + XPMoentsTopicListTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMoentsTopicListTableViewCell class])]; + if (cell == nil) { + cell = [[XPMoentsTopicListTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMoentsTopicListTableViewCell class])]; + } + cell.topicInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 80; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + MonentsTopicModel * infor = [self.datasource safeObjectAtIndex1:indexPath.row]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMoentsTopicListView:didSelectItem:)]) { + [self.delegate xPMoentsTopicListView:self didSelectItem:infor]; + } + } +} + +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPMoentsTopicListTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMoentsTopicListTableViewCell class])]; + } + return _tableView; +} + + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + +@end diff --git a/YuMi/Modules/YMMonents/View/SubViews/XPMoentsTopicView.h b/YuMi/Modules/YMMonents/View/SubViews/XPMoentsTopicView.h new file mode 100644 index 00000000..2e4d6295 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/SubViews/XPMoentsTopicView.h @@ -0,0 +1,16 @@ +// +// YMMoentsTopicView.h +// YUMI +// +// Created by YUMI on 2022/5/12. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class MonentsInfoModel; +@interface XPMoentsTopicView : UIView +@property (nonatomic,strong) MonentsInfoModel *monentsInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/SubViews/XPMoentsTopicView.m b/YuMi/Modules/YMMonents/View/SubViews/XPMoentsTopicView.m new file mode 100644 index 00000000..690907d2 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/SubViews/XPMoentsTopicView.m @@ -0,0 +1,134 @@ +// +// YMMoentsTopicView.m +// YUMI +// +// Created by YUMI on 2022/5/12. +// + +#import "XPMoentsTopicView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "NSString+Utils.h" +///Model +#import "MonentsInfoModel.h" + +@interface XPMoentsTopicView () +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///背景 +@property (nonatomic,strong) UIImageView *topicImageView; +///显示话题前面的# +@property (nonatomic,strong) UIImageView *iconImageView; +///显示话题 +@property (nonatomic,strong) UILabel *topicLabel; +///显示时间 +@property (nonatomic,strong) UILabel *timeLabel; +@end + +@implementation XPMoentsTopicView +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.stackView]; + [self.stackView addArrangedSubview:self.topicImageView]; + [self.stackView addArrangedSubview:self.timeLabel]; + + [self.topicImageView addSubview:self.iconImageView]; + [self.topicImageView addSubview:self.topicLabel]; +} + +- (void)initSubViewConstraints { + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + [self.topicImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.topicLabel.mas_right).offset(9); + }]; + + [self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.topicImageView).offset(9); + make.size.mas_equalTo(CGSizeMake(20, 20)); + make.centerY.mas_equalTo(self.topicImageView); + }]; + + [self.topicLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.iconImageView.mas_right).offset(4); + make.centerY.mas_equalTo(self.topicImageView); + }]; +} +#pragma mark - Getters And Setters +- (void)setMonentsInfo:(MonentsInfoModel *)monentsInfo { + _monentsInfo = monentsInfo; + if (_monentsInfo) { + if (_monentsInfo.worldId > 0) { + self.topicImageView.hidden = NO; + self.topicLabel.text = _monentsInfo.worldName; + } else { + self.topicImageView.hidden = YES; + } + self.timeLabel.text = [NSString stringWithTimeStamp:_monentsInfo.publishTime]; + } +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 8; + } + return _stackView; +} + +- (UIImageView *)topicImageView { + if (!_topicImageView) { + _topicImageView = [[UIImageView alloc] init]; + _topicImageView.userInteractionEnabled = YES; + _topicImageView.image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFFFCDD), UIColorFromRGB(0xDFF9FF), UIColorFromRGB(0xF4E5FF)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)]; + _topicImageView.layer.masksToBounds = YES; + _topicImageView.layer.cornerRadius = 8; + } + return _topicImageView; +} + +- (UIImageView *)iconImageView { + if (!_iconImageView) { + _iconImageView = [[UIImageView alloc] init]; + _iconImageView.userInteractionEnabled = YES; + _iconImageView.image = [UIImage imageNamed:@"monents_info_topic_icon"]; + } + return _iconImageView; +} + +- (UILabel *)topicLabel { + if (!_topicLabel) { + _topicLabel = [[UILabel alloc] init]; + _topicLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightBold]; + _topicLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _topicLabel; +} + +- (UILabel *)timeLabel { + if (!_timeLabel) { + _timeLabel = [[UILabel alloc] init]; + _timeLabel.font = [UIFont systemFontOfSize:10]; + _timeLabel.textColor = [DJDKMIMOMColor textThirdColor]; + } + return _timeLabel; +} + +@end diff --git a/YuMi/Modules/YMMonents/View/SubViews/XPMonentPublishSuccessView.h b/YuMi/Modules/YMMonents/View/SubViews/XPMonentPublishSuccessView.h new file mode 100644 index 00000000..f952d0e6 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/SubViews/XPMonentPublishSuccessView.h @@ -0,0 +1,16 @@ +// +// YMMonentPublishSuccessView.h +// YUMI +// +// Created by YUMI on 2022/8/16. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMonentPublishSuccessView : UIView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/SubViews/XPMonentPublishSuccessView.m b/YuMi/Modules/YMMonents/View/SubViews/XPMonentPublishSuccessView.m new file mode 100644 index 00000000..7e76c7e5 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/SubViews/XPMonentPublishSuccessView.m @@ -0,0 +1,96 @@ +// +// YMMonentPublishSuccessView.m +// YUMI +// +// Created by YUMI on 2022/8/16. +// + +#import "XPMonentPublishSuccessView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" + +@interface XPMonentPublishSuccessView () +@property (nonatomic, strong) UIImageView *logoImageView; +@property (nonatomic, strong) UILabel *titleLabel; +@property (nonatomic, strong) UILabel *tipsLabel; +@end + +@implementation XPMonentPublishSuccessView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor whiteColor]; + self.layer.masksToBounds = YES; + self.layer.cornerRadius = 10; + [self addSubview:self.logoImageView]; + [self addSubview:self.titleLabel]; + [self addSubview:self.tipsLabel]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(280, 200)); + }]; + + [self.logoImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(20); + make.centerX.mas_equalTo(self); + make.height.width.mas_equalTo(56); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.logoImageView.mas_bottom).offset(20); + make.centerX.mas_equalTo(self); + }]; + + [self.tipsLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self).inset(15); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(20); + }]; +} + +#pragma mark - Getters And Setters +- (UIImageView *)logoImageView { + if (!_logoImageView) { + _logoImageView = [[UIImageView alloc] init]; + _logoImageView.userInteractionEnabled = YES; + _logoImageView.image = [UIImage imageNamed:@"monents_publish_success_icon"]; + } + return _logoImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPMonentPublishSuccessView0"); + _titleLabel.font = [UIFont systemFontOfSize:16]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} + +- (UILabel *)tipsLabel { + if (!_tipsLabel) { + _tipsLabel = [[UILabel alloc] init]; + _tipsLabel.text = @"咻,收到小可爱的动态了呢~\n审核通过后小秘书会帮你发送并通知你哦~"; + _tipsLabel.font = [UIFont systemFontOfSize:13]; + _tipsLabel.numberOfLines = 0; + _tipsLabel.textColor = UIColorFromRGB(0x999999); + _tipsLabel.textAlignment = NSTextAlignmentCenter; + } + return _tipsLabel; +} + + +@end diff --git a/YuMi/Modules/YMMonents/View/SubViews/XPMonentsContentView.h b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsContentView.h new file mode 100644 index 00000000..195d6e52 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsContentView.h @@ -0,0 +1,30 @@ +// +// YMMonentsContentView.h +// YUMI +// +// Created by YUMI on 2022/5/13. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class MonentsInfoModel, XPMonentsContentView; + +@protocol XPMonentsContentViewDelegate + +///点击这折叠 +- (void)xPMonentsContentView:(XPMonentsContentView *)view didClickFold:(MonentsInfoModel *)monentsInfo; + +@end + +@interface XPMonentsContentView : UIView +@property (nonatomic,strong) MonentsInfoModel *monentsInfo; +///代理 +@property (nonatomic,weak) id delegate; + +/// 是否是审核UI +@property (nonatomic,assign) BOOL isSimple; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/SubViews/XPMonentsContentView.m b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsContentView.m new file mode 100644 index 00000000..a15e173e --- /dev/null +++ b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsContentView.m @@ -0,0 +1,173 @@ +// +// YMMonentsContentView.m +// YUMI +// +// Created by YUMI on 2022/5/13. +// + +#import "XPMonentsContentView.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "XPMonentsLayoutConfig.h" +#import "UIButton+EnlargeTouchArea.h" +///Model +#import "MonentsInfoModel.h" +@interface XPMonentsContentView () +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///显示内容 +@property (nonatomic,strong) UILabel *contentLabel; +///折叠的按钮 +@property (nonatomic,strong) UIButton *foldButton; +@end + + +@implementation XPMonentsContentView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.stackView]; + [self.stackView addArrangedSubview:self.contentLabel]; + [self.stackView addArrangedSubview:self.foldButton]; +} + +- (void)initSubViewConstraints { + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + [self.foldButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(kMONENTS_FOLD_HEIGHT); + }]; +} + +- (NSAttributedString *)createMonentsContentAttribute { + NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] init]; + if (self.monentsInfo.squareTop ) {//动态/广场 + NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; + attachment.bounds = CGRectMake(0, 0, 25 * 1.3, 10 * 1.3); + attachment.image = [UIImage imageNamed:@"monents_info_top"]; + NSAttributedString * starAttribute = [NSMutableAttributedString attributedStringWithAttachment:(NSTextAttachment *)attachment]; + [attributedString insertAttributedString:starAttribute atIndex:0]; + } + [attributedString appendAttributedString:[self creatStrAttrByStr:self.monentsInfo.content attributed:@{NSFontAttributeName : [UIFont systemFontOfSize:15]}]]; + attributedString.yy_lineSpacing = 5; + attributedString.yy_lineBreakMode = NSLineBreakByWordWrapping; + return attributedString; +} + +- (NSMutableAttributedString *)creatStrAttrByStr:(NSString *)str attributed:(NSDictionary *)attribute{ + if (str.length == 0 || !str) { + str = @" "; + } + NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:str attributes:attribute]; + return attr; +} + + + +#pragma mark - Event Response +- (void)didClickFoldButton:(UIButton *)sender { + sender.selected = !sender.selected; + self.monentsInfo.isFold = !sender.selected; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMonentsContentView:didClickFold:)]) { + [self.delegate xPMonentsContentView:self didClickFold:self.monentsInfo]; + } +} + +#pragma mark - Getters And Setters + +- (void)setIsSimple:(BOOL)isSimple { + _isSimple = isSimple; + self.contentLabel.preferredMaxLayoutWidth = isSimple ? kSIMPLE_MONENTS_CONTENT_MAX_WIDTH : kMONENTS_CONTENT_MAX_WIDTH; +} + +- (void)setMonentsInfo:(MonentsInfoModel *)monentsInfo { + _monentsInfo = monentsInfo; + if (_monentsInfo) { + self.contentLabel.attributedText = [self createMonentsContentAttribute]; + self.foldButton.selected = !_monentsInfo.isFold; + if (monentsInfo.numberOfText <= 0) { + YYTextContainer *container = [YYTextContainer new]; + container.size = CGSizeMake(self.isSimple ? kSIMPLE_MONENTS_CONTENT_MAX_WIDTH : kMONENTS_CONTENT_MAX_WIDTH, CGFLOAT_MAX); + container.maximumNumberOfRows = 0; + YYTextLayout * layout = [YYTextLayout layoutWithContainer:container text:self.contentLabel.attributedText]; + if (layout.rowCount > 6) { + self.foldButton.hidden = NO; + [self.foldButton mas_remakeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(kMONENTS_FOLD_HEIGHT); + }]; + } else { + self.foldButton.hidden = YES; + [self.foldButton mas_remakeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(0); + }]; + } + } else { + if (monentsInfo.numberOfText > 6) { + self.foldButton.hidden = NO; + [self.foldButton mas_remakeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(kMONENTS_FOLD_HEIGHT); + }]; + } else { + self.foldButton.hidden = YES; + [self.foldButton mas_remakeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(0); + }]; + } + } + } +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentLeading; + _stackView.spacing = 0; + } + return _stackView; +} + +- (UIButton *)foldButton { + if (_foldButton == nil) { + _foldButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_foldButton setTitle:YMLocalizedString(@"XPMonentsContentView0") forState:UIControlStateNormal]; + [_foldButton setTitle:YMLocalizedString(@"XPMonentsContentView1") forState:UIControlStateSelected]; + [_foldButton setTitleColor:UIColorFromRGB(0x34A7FF) forState:UIControlStateNormal]; + [_foldButton setTitleColor:UIColorFromRGB(0x34A7FF) forState:UIControlStateSelected]; + _foldButton.titleLabel.font = [UIFont systemFontOfSize:15]; + _foldButton.hidden = YES; + [_foldButton addTarget:self action:@selector(didClickFoldButton:) forControlEvents:UIControlEventTouchUpInside]; + } + return _foldButton; +} + + +- (UILabel *)contentLabel { + if (!_contentLabel) { + _contentLabel = [[UILabel alloc] init]; + _contentLabel.numberOfLines = 0; + _contentLabel.font = [UIFont systemFontOfSize:15]; + _contentLabel.textColor = UIColorRGBAlpha(0x333333, 1); + _contentLabel.preferredMaxLayoutWidth = kMONENTS_CONTENT_MAX_WIDTH; + _contentLabel.lineBreakMode = NSLineBreakByWordWrapping; + + } + return _contentLabel; +} + +@end diff --git a/YuMi/Modules/YMMonents/View/SubViews/XPMonentsPhotoView.h b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsPhotoView.h new file mode 100644 index 00000000..e365001a --- /dev/null +++ b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsPhotoView.h @@ -0,0 +1,25 @@ +// +// YMMonentsPhotoView.h +// YUMI +// +// Created by YUMI on 2022/5/12. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class MonentsPicInfoModel, XPMonentsPhotoView; +@protocol XPMonentsPhotoViewDelegate + +- (void)xPMonentsPhotoView:(XPMonentsPhotoView *)view didClickImage:(NSInteger)index; + +@end + +@interface XPMonentsPhotoView : UIView +///发布的内容 +@property (nonatomic,copy) NSArray *dynamicResList; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/SubViews/XPMonentsPhotoView.m b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsPhotoView.m new file mode 100644 index 00000000..0d39c9cb --- /dev/null +++ b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsPhotoView.m @@ -0,0 +1,300 @@ +// +// YMMonentsPhotoView.m +// YUMI +// +// Created by YUMI on 2022/5/12. +// + +#import "XPMonentsPhotoView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "XPMonentsLayoutConfig.h" +#import "NSArray+Safe.h" +///Model +#import "MonentsInfoModel.h" + +@interface XPMonentsPhotoView () +///第一个 +@property (nonatomic,strong) NetImageView *firstImageView; +///第二个 +@property (nonatomic,strong) NetImageView *secondImageView; +///第三个 +@property (nonatomic,strong) NetImageView *thirdImageView; +///第四个 +@property (nonatomic,strong) NetImageView *fourthImageView; +///第五个 +@property (nonatomic,strong) NetImageView *fifthImageView; +///第六个 +@property (nonatomic,strong) NetImageView *sixthImageView; +///第七个 +@property (nonatomic,strong) NetImageView *sevenImageView; +///第八个 +@property (nonatomic,strong) NetImageView *eighthImageView; +///第九个 +@property (nonatomic,strong) NetImageView *ninthImageView; +@property (nonatomic,strong) NSArray *subViewArray; +@end + + +@implementation XPMonentsPhotoView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.firstImageView]; + [self addSubview:self.secondImageView]; + [self addSubview:self.thirdImageView]; + [self addSubview:self.fourthImageView]; + [self addSubview:self.fifthImageView]; + [self addSubview:self.sixthImageView]; + [self addSubview:self.sevenImageView]; + [self addSubview:self.eighthImageView]; + [self addSubview:self.ninthImageView]; + self.subViewArray = @[self.firstImageView, self.secondImageView, self.thirdImageView, self.fourthImageView, self.fifthImageView, self.sixthImageView, self.sevenImageView, self.eighthImageView, self.ninthImageView]; +} + +- (void)hiddenAllImageView { + [self.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + obj.hidden = YES; + }]; +} + +#pragma mark - Event Response +- (void)tapImageView:(UITapGestureRecognizer *)tap { + NetImageView * imageView = (NetImageView *)tap.view; + if (imageView.imageUrl.length > 0 && self.delegate && [self.delegate respondsToSelector:@selector(xPMonentsPhotoView:didClickImage:)]) { + [self.delegate xPMonentsPhotoView:self didClickImage:imageView.tag - 1001]; + } +} + + +#pragma mark - Getters And Setters +- (void)setDynamicResList:(NSArray *)dynamicResList { + _dynamicResList = dynamicResList; + [self hiddenAllImageView]; + if (_dynamicResList.count == 0) { + + } else if (_dynamicResList.count == 1) { + self.firstImageView.hidden = NO; + [self.firstImageView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(kMONENTS_PIC_ONE_WIDTH, kMONENTS_PIC_ONE_WIDTH)); + make.left.top.mas_equalTo(self); + }]; + MonentsPicInfoModel * picInfo = [_dynamicResList safeObjectAtIndex1:0]; + self.firstImageView.imageUrl = picInfo.resUrl; + } else if(_dynamicResList.count == 2) { + self.firstImageView.hidden = NO; + CGFloat itemWidth = (kMONENTS_CONTENT_MAX_WIDTH - kMONENTS_PIC_SPACE) / 2; + [self.firstImageView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(itemWidth, itemWidth)); + make.left.top.mas_equalTo(self); + }]; + + MonentsPicInfoModel * picInfo = [_dynamicResList safeObjectAtIndex1:0]; + self.firstImageView.imageUrl = picInfo.resUrl; + + self.secondImageView.hidden = NO; + [self.secondImageView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(itemWidth, itemWidth)); + make.top.mas_equalTo(self); + make.left.mas_equalTo(self.firstImageView.mas_right).offset(kMONENTS_PIC_SPACE); + }]; + + MonentsPicInfoModel * secondPicInfo = [_dynamicResList safeObjectAtIndex1:1]; + self.secondImageView.imageUrl = secondPicInfo.resUrl; + + } else{ + for (int i = 0; i < _dynamicResList.count; i++) { + MonentsPicInfoModel * picInfo = [_dynamicResList safeObjectAtIndex1:i]; + if (i < self.subViewArray.count) { + NetImageView * imageView = [self.subViewArray safeObjectAtIndex1:i]; + imageView.hidden = NO; + imageView.imageUrl = picInfo.resUrl; + } + } + + CGFloat itemWidth = (kMONENTS_CONTENT_MAX_WIDTH - kMONENTS_PIC_SPACE * 2) / 3; + for (int i = 0; i < self.subViewArray.count; i++) { + NSInteger page = i % 3; + NSInteger line = i / 3; + NetImageView * imageView = [self.subViewArray safeObjectAtIndex1:i]; + [imageView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(itemWidth, itemWidth)); + make.left.mas_equalTo(page * (itemWidth + kMONENTS_PIC_SPACE)); + make.top.mas_equalTo(line * (itemWidth + kMONENTS_PIC_SPACE)); + }]; + } + + } +} + +- (NetImageView *)firstImageView { + if (!_firstImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeMonentsPhoto; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _firstImageView = [[NetImageView alloc] initWithConfig:config]; + _firstImageView.layer.masksToBounds = YES; + _firstImageView.layer.cornerRadius = 12; + _firstImageView.contentMode = UIViewContentModeScaleAspectFill; + _firstImageView.tag = 1000 + 1; + _firstImageView.userInteractionEnabled = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapImageView:)]; + [_firstImageView addGestureRecognizer:tap]; + } + return _firstImageView; +} + +- (NetImageView *)secondImageView { + if (!_secondImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeMonentsPhoto; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _secondImageView = [[NetImageView alloc] initWithConfig:config]; + _secondImageView.layer.masksToBounds = YES; + _secondImageView.layer.cornerRadius = 12; + _secondImageView.contentMode = UIViewContentModeScaleAspectFill; + _secondImageView.tag = 1000 + 2; + _secondImageView.userInteractionEnabled = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapImageView:)]; + [_secondImageView addGestureRecognizer:tap]; + } + return _secondImageView; +} + +- (NetImageView *)thirdImageView { + if (!_thirdImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeMonentsPhoto; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _thirdImageView = [[NetImageView alloc] initWithConfig:config]; + _thirdImageView.layer.masksToBounds = YES; + _thirdImageView.layer.cornerRadius = 12; + _thirdImageView.contentMode = UIViewContentModeScaleAspectFill; + _thirdImageView.tag = 1000 + 3; + _thirdImageView.userInteractionEnabled = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapImageView:)]; + [_thirdImageView addGestureRecognizer:tap]; + } + return _thirdImageView; +} + + +- (NetImageView *)fourthImageView { + if (!_fourthImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeMonentsPhoto; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _fourthImageView = [[NetImageView alloc] initWithConfig:config]; + _fourthImageView.layer.masksToBounds = YES; + _fourthImageView.layer.cornerRadius = 12; + _fourthImageView.contentMode = UIViewContentModeScaleAspectFill; + _fourthImageView.tag = 1000 + 4; + _fourthImageView.userInteractionEnabled = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapImageView:)]; + [_fourthImageView addGestureRecognizer:tap]; + + } + return _fourthImageView; +} + +- (NetImageView *)fifthImageView { + if (!_fifthImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeMonentsPhoto; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _fifthImageView = [[NetImageView alloc] initWithConfig:config]; + _fifthImageView.layer.masksToBounds = YES; + _fifthImageView.layer.cornerRadius = 12; + _fifthImageView.contentMode = UIViewContentModeScaleAspectFill; + _fifthImageView.tag = 1000 + 5; + _fifthImageView.userInteractionEnabled = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapImageView:)]; + [_fifthImageView addGestureRecognizer:tap]; + } + return _fifthImageView; +} + + +- (NetImageView *)sixthImageView { + if (!_sixthImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeMonentsPhoto; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _sixthImageView = [[NetImageView alloc] initWithConfig:config]; + _sixthImageView.layer.masksToBounds = YES; + _sixthImageView.layer.cornerRadius = 12; + _sixthImageView.contentMode = UIViewContentModeScaleAspectFill; + _sixthImageView.tag = 1000 + 6; + _sixthImageView.userInteractionEnabled = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapImageView:)]; + [_sixthImageView addGestureRecognizer:tap]; + } + return _sixthImageView; +} + + +- (NetImageView *)sevenImageView { + if (!_sevenImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeMonentsPhoto; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _sevenImageView = [[NetImageView alloc] initWithConfig:config]; + _sevenImageView.layer.masksToBounds = YES; + _sevenImageView.layer.cornerRadius = 12; + _sevenImageView.contentMode = UIViewContentModeScaleAspectFill; + _sevenImageView.tag = 1000 + 7; + _sevenImageView.userInteractionEnabled = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapImageView:)]; + [_sevenImageView addGestureRecognizer:tap]; + } + return _sevenImageView; +} + + +- (NetImageView *)eighthImageView { + if (!_eighthImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeMonentsPhoto; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _eighthImageView = [[NetImageView alloc] initWithConfig:config]; + _eighthImageView.layer.masksToBounds = YES; + _eighthImageView.layer.cornerRadius = 12; + _eighthImageView.contentMode = UIViewContentModeScaleAspectFill; + _eighthImageView.tag = 1000 + 8; + _eighthImageView.userInteractionEnabled = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapImageView:)]; + [_eighthImageView addGestureRecognizer:tap]; + } + return _eighthImageView; +} + + +- (NetImageView *)ninthImageView { + if (!_ninthImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeMonentsPhoto; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _ninthImageView = [[NetImageView alloc] initWithConfig:config]; + _ninthImageView.layer.masksToBounds = YES; + _ninthImageView.layer.cornerRadius = 12; + _ninthImageView.contentMode = UIViewContentModeScaleAspectFill; + _ninthImageView.tag = 1000 + 9; + _ninthImageView.userInteractionEnabled = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapImageView:)]; + [_ninthImageView addGestureRecognizer:tap]; + } + return _ninthImageView; +} + + +@end diff --git a/YuMi/Modules/YMMonents/View/SubViews/XPMonentsPublishTopicView.h b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsPublishTopicView.h new file mode 100644 index 00000000..2839980c --- /dev/null +++ b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsPublishTopicView.h @@ -0,0 +1,27 @@ +// +// YMMonentsPublishTopicView.h +// YUMI +// +// Created by YUMI on 2022/8/16. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPMonentsPublishTopicView, MonentsTopicModel; +@protocol XPMonentsPublishTopicViewDelegate + +///选择了关闭按钮 +- (void)xPMonentsPublishTopicView:(XPMonentsPublishTopicView *)view didClickCloseButton:(UIButton *)sender; +///选择话题 +- (void)xPMonentsPublishTopicView:(XPMonentsPublishTopicView *)view didClickChooseTopic:(UIButton *)sender; + +@end + +@interface XPMonentsPublishTopicView : UIView +///代理 +@property (nonatomic,weak) id delegate; +@property (nonatomic,strong) MonentsTopicModel *topicInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/SubViews/XPMonentsPublishTopicView.m b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsPublishTopicView.m new file mode 100644 index 00000000..38ba8c55 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsPublishTopicView.m @@ -0,0 +1,195 @@ +// +// YMMonentsPublishTopicView.m +// YUMI +// +// Created by YUMI on 2022/8/16. +// + +#import "XPMonentsPublishTopicView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIView+Corner.h" +#import "UIButton+EnlargeTouchArea.h" +///Model +#import "MonentsTopicModel.h" + +@interface XPMonentsPublishTopicView () +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///添加话题 +@property (nonatomic,strong) UIButton *addTopicButton; +///重新选择 +@property (nonatomic,strong) UIButton *againButton; +///话题的view +@property (nonatomic,strong) UIView * topicView; +///显示话题内容 +@property (nonatomic,strong) UILabel *titleLabel; +///关闭按钮 +@property (nonatomic,strong) UIButton *closeButton; +///占位 +@property (nonatomic,strong) UIView * placeView; +@end + +@implementation XPMonentsPublishTopicView +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.stackView]; + [self.stackView addArrangedSubview:self.addTopicButton]; + [self.stackView addArrangedSubview:self.topicView]; + [self.stackView addArrangedSubview:self.placeView]; + [self.stackView addArrangedSubview:self.againButton]; + + [self.topicView addSubview:self.titleLabel]; + [self.topicView addSubview:self.closeButton]; +} + +- (void)initSubViewConstraints { + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self); + make.height.mas_equalTo(20); + make.centerY.mas_equalTo(self); + }]; + + [self.addTopicButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(60); + }]; + + [self.topicView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(120); + }]; + + [self.againButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(60); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.topicView).offset(5); + make.centerY.mas_equalTo(self.topicView); + }]; + + [self.closeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.topicView).offset(-7); + make.size.mas_equalTo(CGSizeMake(18, 18)); + make.centerY.mas_equalTo(self.topicView); + }]; +} + +#pragma mark - Event Response +- (void)addTopicButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMonentsPublishTopicView:didClickChooseTopic:)]) { + [self.delegate xPMonentsPublishTopicView:self didClickChooseTopic:sender]; + } +} + +- (void)closeButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMonentsPublishTopicView:didClickCloseButton:)]) { + [self.delegate xPMonentsPublishTopicView:self didClickCloseButton:sender]; + } +} + +#pragma mark - Getters And Setters +- (void)setTopicInfo:(MonentsTopicModel *)topicInfo { + _topicInfo = topicInfo; + if (_topicInfo) { + self.addTopicButton.hidden = YES; + self.topicView.hidden = NO; + self.againButton.hidden = NO; + self.titleLabel.text = _topicInfo.worldName; + } else { + self.addTopicButton.hidden = NO; + self.topicView.hidden = YES; + self.againButton.hidden= YES; + } +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 0; + } + return _stackView; +} + +- (UIButton *)addTopicButton { + if (!_addTopicButton) { + _addTopicButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_addTopicButton setTitle:YMLocalizedString(@"XPMonentsPublishTopicView0") forState:UIControlStateNormal]; + [_addTopicButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + _addTopicButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_addTopicButton setBackgroundColor:[UIColor whiteColor]]; + _addTopicButton.layer.masksToBounds = YES; + _addTopicButton.layer.cornerRadius = 10; + [_addTopicButton addTarget:self action:@selector(addTopicButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _addTopicButton; +} + +- (UIButton *)againButton { + if (!_againButton) { + _againButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_againButton setTitle:YMLocalizedString(@"XPMonentsPublishTopicView1") forState:UIControlStateNormal]; + [_againButton setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateNormal]; + _againButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_againButton addTarget:self action:@selector(addTopicButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _againButton.hidden = YES; + } + return _againButton; +} + +- (UIView *)topicView { + if (!_topicView) { + _topicView = [[UIView alloc] init]; + _topicView.backgroundColor = [UIColor clearColor]; + _topicView.backgroundColor = [DJDKMIMOMColor appMainColor]; + _topicView.layer.masksToBounds = YES; + _topicView.hidden = YES; + [_topicView setCornerWithLeftTopCorner:10 rightTopCorner:5 bottomLeftCorner:10 bottomRightCorner:10 size:CGSizeMake(120, 20)]; + } + return _topicView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:13]; + _titleLabel.textColor = [UIColor whiteColor]; + } + return _titleLabel; +} + +- (UIButton *)closeButton { + if (!_closeButton) { + _closeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_closeButton setImage:[UIImage imageNamed:@"monents_publish_delete"] forState:UIControlStateNormal]; + [_closeButton setImage:[UIImage imageNamed:@"monents_publish_delete"] forState:UIControlStateSelected]; + [_closeButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + [_closeButton addTarget:self action:@selector(closeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _closeButton; +} + +- (UIView *)placeView { + if (!_placeView) { + _placeView = [[UIView alloc] init]; + _placeView.backgroundColor = [UIColor clearColor]; + } + return _placeView; +} + + + +@end diff --git a/YuMi/Modules/YMMonents/View/SubViews/XPMonentsRecommendHeaderView.h b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsRecommendHeaderView.h new file mode 100644 index 00000000..f8e177d4 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsRecommendHeaderView.h @@ -0,0 +1,28 @@ +// +// YMMonentsRecommendHeaderView.h +// YUMI +// +// Created by YUMI on 2022/5/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class MonentsTopicModel,XPMonentsRecommendHeaderView ; +@protocol XPMonentsRecommendHeaderViewDelegate + +///选中了某个item +- (void)xPMonentsRecommendHeaderView:(XPMonentsRecommendHeaderView *)view didSelectItem:(MonentsTopicModel *)info; + +///查看更多 +- (void)xPMonentsRecommendHeaderView:(XPMonentsRecommendHeaderView *)view didClickMoreTopic:(UIButton *)sender; + +@end + +@interface XPMonentsRecommendHeaderView : UIView +@property (nonatomic,strong) NSArray *topicList; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/SubViews/XPMonentsRecommendHeaderView.m b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsRecommendHeaderView.m new file mode 100644 index 00000000..fe51c695 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsRecommendHeaderView.m @@ -0,0 +1,143 @@ +// +// YMMonentsRecommendHeaderView.m +// YUMI +// +// Created by YUMI on 2022/5/18. +// + +#import "XPMonentsRecommendHeaderView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NSArray+Safe.h" +///Model +#import "MonentsTopicModel.h" +///View +#import "XPMonentsTopicCollectionViewCell.h" + +@interface XPMonentsRecommendHeaderView () +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///显示箭头 +@property (nonatomic,strong) UIButton *arrowButton; +///列表 +@property (nonatomic,strong) UICollectionView *collectionView; + +@end + +@implementation XPMonentsRecommendHeaderView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + [self addSubview:self.titleLabel]; + [self addSubview:self.arrowButton]; + [self addSubview:self.collectionView]; +} + +- (void)initSubViewConstraints { + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self).offset(15); + make.top.mas_equalTo(self).offset(15); + }]; + + [self.arrowButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(11, 20)); + make.centerY.mas_equalTo(self.titleLabel); + make.right.mas_equalTo(self).offset(-15); + }]; + + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(10); + make.height.mas_equalTo(77); + }]; +} + +#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.topicList.count; +} + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + return CGSizeMake(125, 77); +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPMonentsTopicCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPMonentsTopicCollectionViewCell class]) forIndexPath:indexPath]; + cell.topicInfo = [self.topicList safeObjectAtIndex1:indexPath.row]; + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + [collectionView deselectItemAtIndexPath:indexPath animated:YES]; + if (self.topicList.count > 0) { + MonentsTopicModel * topicInfo = [self.topicList safeObjectAtIndex1:indexPath.row]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMonentsRecommendHeaderView:didSelectItem:)]) { + [self.delegate xPMonentsRecommendHeaderView:self didSelectItem:topicInfo]; + } + } +} + +#pragma mark - Event Response +- (void)arrowButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMonentsRecommendHeaderView:didClickMoreTopic:)]) { + [self.delegate xPMonentsRecommendHeaderView:self didClickMoreTopic:sender]; + } +} + +#pragma mark - Getters And Setters +- (void)setTopicList:(NSArray *)topicList { + _topicList = topicList; + [self.collectionView reloadData]; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _titleLabel.text = YMLocalizedString(@"XPMonentsRecommendHeaderView0"); + } + return _titleLabel; +} + +- (UIButton *)arrowButton { + if (!_arrowButton) { + _arrowButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_arrowButton setImage:[UIImage imageNamed:@"room_setting_arrow"] forState:UIControlStateNormal]; + [_arrowButton setImage:[UIImage imageNamed:@"room_setting_arrow"] forState:UIControlStateSelected]; + [_arrowButton addTarget:self action:@selector(arrowButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _arrowButton; +} + +- (UICollectionView *)collectionView{ + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.sectionInset = UIEdgeInsetsMake(0, 15, 0, 0); + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + layout.minimumLineSpacing = 8; + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.backgroundColor = [UIColor clearColor]; + _collectionView.showsHorizontalScrollIndicator = NO; + [_collectionView registerClass:[XPMonentsTopicCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPMonentsTopicCollectionViewCell class])]; + } + return _collectionView; +} + + + +@end diff --git a/YuMi/Modules/YMMonents/View/SubViews/XPMonentsTooBarView.h b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsTooBarView.h new file mode 100644 index 00000000..7948e6af --- /dev/null +++ b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsTooBarView.h @@ -0,0 +1,27 @@ +// +// YMMonentsTooBarView.h +// YUMI +// +// Created by YUMI on 2022/5/12. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class MonentsInfoModel, XPMonentsTooBarView; +@protocol XPMonentsTooBarViewDelegate +///点赞 +- (void)xPMonentsTooBarView:(XPMonentsTooBarView *)view didClickLike:(MonentsInfoModel *)monentsInfo; +///删除 +- (void)xPMonentsTooBarView:(XPMonentsTooBarView *)view didClickDelete:(MonentsInfoModel *)monentsInfo; +///评论 +- (void)xPMonentsTooBarView:(XPMonentsTooBarView *)view didClickCommon:(MonentsInfoModel *)monentsInfo; +@end + +@interface XPMonentsTooBarView : UIView +@property (nonatomic,strong) MonentsInfoModel *monentsInfo; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/SubViews/XPMonentsTooBarView.m b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsTooBarView.m new file mode 100644 index 00000000..e0e99a92 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsTooBarView.m @@ -0,0 +1,313 @@ +// +// YMMonentsTooBarView.m +// YUMI +// +// Created by YUMI on 2022/5/12. +// + +#import "XPMonentsTooBarView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "TTPopup.h" +#import "YUMIHtmlUrl.h" +#import "XPShareView.h" +#import "XNDJTDDLoadingTool.h" +#import "YUMIMacroUitls.h" +#import "YUMIHtmlUrl.h" +#import "AccountInfoStorage.h" +#import "Api+Monents.h" +#import "ClientConfig.h" +///Model +#import "MonentsInfoModel.h" +///View +#import "XPWebViewController.h" +#import "XCCurrentVCStackManager.h" + +@interface XPMonentsTooBarView () +///举报 +@property (nonatomic,strong) UIButton *reportButton; +///喜欢的容器 +@property (nonatomic,strong) UIView * likeView; +///喜欢 +@property (nonatomic,strong) UIButton *likeButton; +///喜欢的个数 +@property (nonatomic,strong) UILabel *likeLabel; +///评论的容器 +@property (nonatomic,strong) UIView * commentView; +///评论 +@property (nonatomic,strong) UIButton *commentButton; +///评论数 +@property (nonatomic,strong) UILabel *commentLabel; +///分享 +@property (nonatomic,strong) UIButton *shareButton; +///分割线 +@property (nonatomic,strong) UIView * lineView; + +@end + +@implementation XPMonentsTooBarView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.reportButton]; + [self addSubview:self.likeView]; + [self addSubview:self.commentView]; + [self addSubview:self.shareButton]; + [self addSubview:self.lineView]; + + [self.likeView addSubview:self.likeButton]; + [self.likeView addSubview:self.likeLabel]; + [self.commentView addSubview:self.commentButton]; + [self.commentView addSubview:self.commentLabel]; +} + +- (void)initSubViewConstraints { + [self.reportButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self).offset(70); + make.top.mas_equalTo(self).offset(24); + make.size.mas_equalTo(CGSizeMake(22, 22)); + }]; + + [self.likeView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.likeButton.mas_left); + make.height.mas_equalTo(22); + make.centerY.mas_equalTo(self.reportButton); + make.right.mas_equalTo(self.commentView.mas_left).offset(-12); + }]; + + [self.likeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.likeView.mas_right).offset(-3); + make.centerY.mas_equalTo(self.likeView); + }]; + + [self.likeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(22, 22)); + make.centerY.mas_equalTo(self.likeView); + make.right.mas_equalTo(self.likeLabel.mas_left).offset(-3); + }]; + + [self.commentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.commentButton.mas_left).offset(-2); + make.height.mas_equalTo(22); + make.centerY.mas_equalTo(self.reportButton); + make.right.mas_equalTo(self.shareButton.mas_left).offset(-12); + }]; + + + [self.commentButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(22, 22)); + make.centerY.mas_equalTo(self.commentView); + make.right.mas_equalTo(self.commentLabel.mas_left).offset(-2); + }]; + + [self.commentLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.commentView.mas_right).offset(-3); + make.centerY.mas_equalTo(self.commentView); + }]; + + [self.shareButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(22, 22)); + make.right.mas_equalTo(self).offset(-32); + make.centerY.mas_equalTo(self.reportButton); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self).inset(16); + make.bottom.mas_equalTo(self); + make.height. mas_equalTo(1); + }]; +} +#pragma mark - Event Response +- (void)commonButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMonentsTooBarView:didClickCommon:)]) { + self.commentButton.userInteractionEnabled = YES; + [self.delegate xPMonentsTooBarView:self didClickCommon:self.monentsInfo]; + } else { + self.commentButton.userInteractionEnabled = NO; + } +} + +- (void)likeButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMonentsTooBarView:didClickLike:)]) { + [self.delegate xPMonentsTooBarView:self didClickLike:self.monentsInfo]; + } +} + +- (void)reportButtonAction:(UIButton *)sender { + TTActionSheetConfig *action; + if (self.monentsInfo.uid.integerValue == [AccountInfoStorage instance].getUid.integerValue) { + action = [TTActionSheetConfig normalTitle:YMLocalizedString(@"XPMonentsTooBarView0") clickAction:^{ + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMonentsTooBarView:didClickDelete:)]) { + [self.delegate xPMonentsTooBarView:self didClickDelete:self.monentsInfo]; + } + }]; + } else { + action = [TTActionSheetConfig normalTitle:YMLocalizedString(@"XPMonentsTooBarView1") clickAction:^{ + if ([ClientConfig shareConfig].canOpen) { + NSString * url= [NSString stringWithFormat:@"%@?reportUid=%@&source=%@", URLWithType(kReportRoomURL),self.monentsInfo.uid, @"WORLDDYNAMIC"]; + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + webVC.url = url; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:webVC animated:YES]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPMonentsTooBarView2")]; + } + + }]; + } + [TTPopup actionSheetWithItems:@[action]]; +} + +- (void)shareButtonAction:(UIButton *)sender { + XPShareItem *friend = [XPShareItem itemWitTag:XPShareItemTagAppFriends title:YMLocalizedString(@"XPMonentsTooBarView3") imageName:@"share_friend" disableImageName:@"share_friend"]; + XPShareItem *cycle = [XPShareItem itemWitTag:XPShareItemTagMoments title:YMLocalizedString(@"XPMonentsTooBarView4") imageName:@"share_wechat_circle_normal" disableImageName:@"share_wechat_circle_disable"]; + XPShareItem *wechat = [XPShareItem itemWitTag:XPShareItemTagWeChat title:YMLocalizedString(@"XPMonentsTooBarView5") imageName:@"share_wechat_normal" disableImageName:@"share_wechat_disable"]; + XPShareItem *qq = [XPShareItem itemWitTag:XPShareItemTagQQ title:YMLocalizedString(@"XPMonentsTooBarView6") imageName:@"share_qq_normal" disableImageName:@"share_qq_disable"]; + XPShareItem *qqzone = [XPShareItem itemWitTag:XPShareItemTagQQZone title:YMLocalizedString(@"XPMonentsTooBarView7") imageName:@"share_qqzone_normal" disableImageName:@"share_qqzone_disable"]; + NSArray * items = @[wechat,cycle, qq, qqzone]; + CGFloat margin = 15; + CGSize itemSize = CGSizeMake((KScreenWidth-2*margin)/4, 65); + XPShareInfoModel * shareInfo = [[XPShareInfoModel alloc] init]; + NSString * title= self.monentsInfo.nick; + if (self.monentsInfo.nick.length > 6) { + title = [title substringToIndex:6]; + } + shareInfo.nick = title; + shareInfo.content = self.monentsInfo.content; + shareInfo.imageUrl = self.monentsInfo.avatar; + shareInfo.shareTitle = [NSString stringWithFormat:YMLocalizedString(@"XPMonentsTooBarView8"), title]; + shareInfo.shareContent = self.monentsInfo.content; + shareInfo.shareImageUrl = self.monentsInfo.avatar; + NSString * uid = [AccountInfoStorage instance].getUid; + NSString *urlStr = [NSString stringWithFormat:@"%@/%@?uid=%@&dynamicId=%@&worldId=%ld",API_HOST_URL, URLWithType(kMonentsShareURL), uid, self.monentsInfo.dynamicId, self.monentsInfo.worldId]; + shareInfo.shareUrl = urlStr; + shareInfo.dynamicId = self.monentsInfo.dynamicId; + shareInfo.uid = self.monentsInfo.uid; + shareInfo.worldId = [NSString stringWithFormat:@"%ld", self.monentsInfo.worldId]; + XPShareView *shareView = [[XPShareView alloc] initWithItems:items itemSize:itemSize shareInfo:shareInfo]; + shareView.delegate = self; + [TTPopup popupView:shareView style:TTPopupStyleActionSheet]; +} + +#pragma mark - #pragma mark - XCShareViewDelegate +- (void)shareView:(XPShareView *)shareView shareFail:(NSString *)message { + [TTPopup dismiss]; + [XNDJTDDLoadingTool showErrorWithMessage:message]; +} + +- (void)shareView:(XPShareView *)shareView didSuccess:(XPShareInfoModel *)shareInfo{ + [Api userShareMonents:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + + } dynamicId:shareInfo.dynamicId uid:shareInfo.uid worldId:shareInfo.worldId shareUid:[AccountInfoStorage instance].getUid]; + [TTPopup dismiss]; +} + +- (void)shareViewDidClickCancel:(XPShareView *)shareView { + [TTPopup dismiss]; +} + +#pragma mark - Getters And Setters +- (void)setMonentsInfo:(MonentsInfoModel *)monentsInfo { + _monentsInfo = monentsInfo; + if (_monentsInfo) { + self.likeButton.selected = _monentsInfo.isLike; + self.likeLabel.text = _monentsInfo.likeCount.length > 0 ? _monentsInfo.likeCount : @"0"; + self.commentLabel.text = _monentsInfo.commentCount.length > 0 ? _monentsInfo.commentCount : @"0"; + } +} + +- (UIView *)likeView { + if (!_likeView) { + _likeView = [[UIView alloc] init]; + _likeView.backgroundColor = [UIColor clearColor]; + } + return _likeView; +} + +- (UIButton *)likeButton { + if (!_likeButton) { + _likeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_likeButton setImage:[UIImage imageNamed:@"monents_info_like_count_normal"] forState:UIControlStateNormal]; + [_likeButton setImage:[UIImage imageNamed:@"monents_info_like_count_select"] forState:UIControlStateSelected]; + [_likeButton addTarget:self action:@selector(likeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _likeButton; +} + +- (UILabel *)likeLabel { + if (!_likeLabel) { + _likeLabel = [[UILabel alloc] init]; + _likeLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _likeLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _likeLabel; +} + + +- (UIView *)commentView { + if (!_commentView) { + _commentView = [[UIView alloc] init]; + _commentView.backgroundColor = [UIColor clearColor]; + } + return _commentView; +} + +- (UIButton *)commentButton { + if (!_commentButton) { + _commentButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_commentButton setImage:[UIImage imageNamed:@"monents_info_comment_count"] forState:UIControlStateNormal]; + [_commentButton setImage:[UIImage imageNamed:@"monents_info_comment_count"] forState:UIControlStateSelected]; + [_commentButton addTarget:self action:@selector(commonButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _commentButton; +} + +- (UILabel *)commentLabel { + if (!_commentLabel) { + _commentLabel = [[UILabel alloc] init]; + _commentLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _commentLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _commentLabel; +} + +- (UIButton *)reportButton { + if (!_reportButton) { + _reportButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_reportButton setImage:[UIImage imageNamed:@"monents_info_like_report"] forState:UIControlStateNormal]; + [_reportButton setImage:[UIImage imageNamed:@"monents_info_like_report"] forState:UIControlStateSelected]; + [_reportButton addTarget:self action:@selector(reportButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _reportButton; +} + +- (UIButton *)shareButton { + if (!_shareButton) { + _shareButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_shareButton setImage:[UIImage imageNamed:@"monents_info_like_share"] forState:UIControlStateNormal]; + [_shareButton setImage:[UIImage imageNamed:@"monents_info_like_share"] forState:UIControlStateSelected]; + _shareButton.hidden = YES; + [_shareButton addTarget:self action:@selector(shareButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _shareButton; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _lineView; +} + +@end diff --git a/YuMi/Modules/YMMonents/View/SubViews/XPMonentsTopicHeaderView.h b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsTopicHeaderView.h new file mode 100644 index 00000000..5a0a2781 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsTopicHeaderView.h @@ -0,0 +1,17 @@ +// +// YMMonentsTopicHeaderView.h +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class MonentsTopicModel; +@interface XPMonentsTopicHeaderView : UIView +/// +@property (nonatomic,strong) MonentsTopicModel *topicInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/SubViews/XPMonentsTopicHeaderView.m b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsTopicHeaderView.m new file mode 100644 index 00000000..b44b4448 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsTopicHeaderView.m @@ -0,0 +1,116 @@ +// +// YMMonentsTopicHeaderView.m +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import "XPMonentsTopicHeaderView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "NetImageView.h" +///Model +#import "MonentsTopicModel.h" + +@interface XPMonentsTopicHeaderView () + +@property (nonatomic,strong) UILabel *titleLabel; +@property (nonatomic,strong) UILabel *descLabel; +@property (nonatomic,strong) NetImageView *logoImageView; +@property (nonatomic,strong) UIView * alphaView; +@end + +@implementation XPMonentsTopicHeaderView + + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.logoImageView]; + [self addSubview:self.alphaView]; + [self addSubview:self.titleLabel]; + [self addSubview:self.descLabel]; + +} + +- (void)initSubViewConstraints { + [self.logoImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + [self.alphaView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self).offset(kNavigationHeight + 10); + make.left.mas_equalTo(self).offset(30); + }]; + + [self.descLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.titleLabel); + make.right.mas_equalTo(self).offset(-10); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(20); + }]; +} + +#pragma mark - Getters And Setters +- (void)setTopicInfo:(MonentsTopicModel *)topicInfo { + _topicInfo = topicInfo; + if (_topicInfo) { + self.logoImageView.imageUrl = _topicInfo.icon; + self.titleLabel.text = _topicInfo.name; + self.descLabel.text = _topicInfo.desc; + } +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:18]; + _titleLabel.textColor = [UIColor whiteColor]; + } + return _titleLabel; +} + +- (UILabel *)descLabel { + if (!_descLabel) { + _descLabel = [[UILabel alloc] init]; + _descLabel.font = [UIFont systemFontOfSize:14]; + _descLabel.textColor = [UIColor whiteColor]; + _descLabel.numberOfLines = 2; + } + return _descLabel; +} + +- (NetImageView *)logoImageView { + if (!_logoImageView) { + _logoImageView = [[NetImageView alloc] init]; + _logoImageView.userInteractionEnabled = YES; + _logoImageView.layer.masksToBounds = YES; + _logoImageView.contentMode = UIViewContentModeScaleAspectFill; + } + return _logoImageView; +} + +- (UIView *)alphaView { + if (!_alphaView) { + _alphaView = [[UIView alloc] init]; + _alphaView.backgroundColor = [UIColor blackColor]; + _alphaView.alpha = 0.5; + } + return _alphaView; +} + +@end diff --git a/YuMi/Modules/YMMonents/View/SubViews/XPMonentsUserInfoView.h b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsUserInfoView.h new file mode 100644 index 00000000..d8852d15 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsUserInfoView.h @@ -0,0 +1,29 @@ +// +// YMMonentsUserInfoView.h +// YUMI +// +// Created by YUMI on 2022/5/12. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class MonentsInfoModel, XPMonentsUserInfoView; +@protocol XPMonentsUserInfoViewDelegate + +///点击了头像 +- (void)xPMonentsUserInfoView:(XPMonentsUserInfoView *)view didClickAvatar:(MonentsInfoModel *)monents; + +///点击了跟随进房 +- (void)xPMonentsUserInfoView:(XPMonentsUserInfoView *)view didClickEnterRoom:(MonentsInfoModel *)monents; + +@end +@interface XPMonentsUserInfoView : UIView +///动态信息 +@property (nonatomic,strong) MonentsInfoModel *monentsInfo; + +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/SubViews/XPMonentsUserInfoView.m b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsUserInfoView.m new file mode 100644 index 00000000..5466f0aa --- /dev/null +++ b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsUserInfoView.m @@ -0,0 +1,467 @@ +// +// YMMonentsUserInfoView.m +// YUMI +// +// Created by YUMI on 2022/5/12. +// + +#import "XPMonentsUserInfoView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "SpriteSheetImageManager.h" +#import "YUMIMacroUitls.h" +///Model +#import "MonentsInfoModel.h" +#import "NSArray+Safe.h" + +@interface XPMonentsUserInfoView () +/// +@property (nonatomic,strong) UIStackView *nickStackView; +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///贵族 +@property (nonatomic, strong) NetImageView *nobleImageView; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///性别 +@property (nonatomic,strong) UIImageView *sexImageView; +///新用户 +@property (nonatomic,strong) UIImageView *newsUserImageView; +///官方的 +@property (nonatomic,strong) UIImageView *officalImageView; +///头饰 +@property (nonatomic,strong) YYAnimatedImageView *headWearImageView; +///头饰播放 +@property (nonatomic, strong) SpriteSheetImageManager *manager; +///用户的等级 +@property (nonatomic,strong) UIStackView *levelStackView; +///魅力等级 +@property (nonatomic,strong) NetImageView *charmImageView; +///等级 +@property (nonatomic,strong) NetImageView *experImageView; +///铭牌的容器 +@property (nonatomic,strong) UIView * namePlateView; +///铭牌图片 +@property (nonatomic,strong) NetImageView *nameplateImageView; +///铭牌文字 +@property (nonatomic,strong) UILabel *nameplateLabel; +///tag的容器 +@property (nonatomic,strong) UIStackView *tagStackView; +///第一个tag +@property (nonatomic,strong) NetImageView *firstTagImageView; +///第二个tag +@property (nonatomic,strong) NetImageView *secondTagImageView; +///第三个tag +@property (nonatomic,strong) NetImageView *thirdTagImageView; +///直播中 +@property (nonatomic,strong) UIButton *onlineButton; +@end +@implementation XPMonentsUserInfoView +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.avatarImageView]; + [self addSubview:self.headWearImageView]; + [self addSubview:self.nickLabel]; + [self addSubview:self.sexImageView]; + [self addSubview:self.tagStackView]; + [self addSubview:self.levelStackView]; + [self addSubview:self.onlineButton]; + + [self.tagStackView addArrangedSubview:self.firstTagImageView]; + [self.tagStackView addArrangedSubview:self.secondTagImageView]; + [self.tagStackView addArrangedSubview:self.thirdTagImageView]; + + [self.levelStackView addArrangedSubview:self.nobleImageView]; + [self.levelStackView addArrangedSubview:self.newsUserImageView]; + [self.levelStackView addArrangedSubview:self.officalImageView]; + [self.levelStackView addArrangedSubview:self.experImageView]; + [self.levelStackView addArrangedSubview:self.charmImageView]; + [self.levelStackView addArrangedSubview:self.namePlateView]; + ///铭牌 + [self.namePlateView addSubview:self.nameplateImageView]; + [self.namePlateView addSubview:self.nameplateLabel]; + +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(40, 40)); + make.left.mas_equalTo(self).offset(15); + make.top.mas_equalTo(self).offset(15); + }]; + + [self.headWearImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self.avatarImageView); + make.width.mas_equalTo(self.avatarImageView.mas_width).multipliedBy(1.2); + make.height.mas_equalTo(self.headWearImageView.mas_width); + }]; + + + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(12); + make.bottom.mas_equalTo(self.avatarImageView.mas_centerY).offset(-2); + }]; + + [self.sexImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(14, 14)); + make.left.mas_equalTo(self.nickLabel.mas_right).offset(4); + make.centerY.mas_equalTo(self.nickLabel); + }]; + + [self.levelStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nickLabel); + make.top.mas_equalTo(self.avatarImageView.mas_centerY).offset(2); + make.height.mas_equalTo(20); + }]; + + [self.nobleImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(20); + }]; + + [self.newsUserImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(20); + }]; + + [self.officalImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(20); + }]; + + [self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(20); + }]; + + [self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(20); + }]; + + [self.namePlateView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(self.nameplateImageView.mas_width); + }]; + + [self.nameplateImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(20); + make.width.mas_equalTo(60); + make.left.top.mas_equalTo(self.namePlateView); + }]; + + [self.nameplateLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.bottom.mas_equalTo(self.nameplateImageView); + make.right.mas_equalTo(self.namePlateView).offset(-2); + }]; + + [self.tagStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self).offset(-15); + make.centerY.mas_equalTo(self.nickLabel); + make.height.mas_equalTo(14); + }]; + + [self.onlineButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(55, 18)); + make.right.mas_equalTo(self.tagStackView); + make.top.mas_equalTo(self.tagStackView.mas_bottom).offset(4); + }]; + + [self.firstTagImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(28); + }]; + + [self.secondTagImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(self.firstTagImageView); + }]; + + [self.thirdTagImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(self.firstTagImageView); + }]; +} + +#pragma mark - Event Response +- (void)onlineButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMonentsUserInfoView:didClickEnterRoom:)]) { + [self.delegate xPMonentsUserInfoView:self didClickEnterRoom:self.monentsInfo]; + } +} + +- (void)didTapAvatarGuest { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMonentsUserInfoView:didClickAvatar:)]) { + [self.delegate xPMonentsUserInfoView:self didClickAvatar:self.monentsInfo]; + } +} + +#pragma mark - Getters And Setters +- (void)setMonentsInfo:(MonentsInfoModel *)monentsInfo { + _monentsInfo = monentsInfo; + if (_monentsInfo) { + self.avatarImageView.imageUrl = _monentsInfo.avatar; + NSString * nick = _monentsInfo.nick; + if (nick.length > 8) { + nick = [NSString stringWithFormat:@"%@…", [nick substringToIndex:8]]; + } + self.nickLabel.text = nick.length > 0 ? nick : @""; + self.sexImageView.image = _monentsInfo.gender == GenderType_Female ? [UIImage imageNamed:@"common_female"] : [UIImage imageNamed:@"common_male"]; + self.officalImageView.hidden = _monentsInfo.defUser != 2; + self.newsUserImageView.hidden = !_monentsInfo.newUser; + self.nobleImageView.hidden = !_monentsInfo.userVipInfoVO; + if (_monentsInfo.experLevelPic) { + self.experImageView.imageUrl = _monentsInfo.experLevelPic; + } + self.experImageView.hidden = _monentsInfo.experLevelPic.length <= 0; + + if (_monentsInfo.charmLevelPic) { + self.charmImageView.imageUrl = _monentsInfo.charmLevelPic; + } + + if (_monentsInfo.userVipInfoVO) { + self.nobleImageView.imageUrl = _monentsInfo.userVipInfoVO.vipIcon; + } + + self.charmImageView.hidden = _monentsInfo.charmLevelPic.length <= 0; + + if (_monentsInfo.nameplateWord.length>0 && _monentsInfo.nameplatePic.length>0) { + self.nameplateImageView.imageUrl = _monentsInfo.nameplatePic; + self.nameplateLabel.text = _monentsInfo.nameplateWord; + self.namePlateView.hidden = NO; + } else { + self.namePlateView.hidden = YES; + } + + + NSString * headwearUrl= _monentsInfo.headwearEffect.length > 0 ? _monentsInfo.headwearEffect : _monentsInfo.headwearPic; + self.headWearImageView.hidden = headwearUrl.length <= 0; + if (headwearUrl.length > 0) { + NSURL *url = [NSURL URLWithString:headwearUrl]; + @kWeakify(self); + [self.manager loadSpriteSheetImageWithURL:url completionBlock:^(YYSpriteSheetImage * _Nullable sprit) { + @kStrongify(self); + self.headWearImageView.image = sprit; + } failureBlock:^(NSError * _Nullable error) { + }]; + } + self.firstTagImageView.hidden = YES; + self.secondTagImageView.hidden = YES; + self.thirdTagImageView.hidden = YES; + for (int i = 0; i< _monentsInfo.labelList.count; i++) { + NSString * imageUrl = [_monentsInfo.labelList safeObjectAtIndex1:i]; + if (i < self.tagStackView.subviews.count) { + NetImageView * image = [self.tagStackView.subviews safeObjectAtIndex1:i]; + image.hidden = NO; + image.imageUrl = imageUrl; + } + } + self.onlineButton.hidden = _monentsInfo.inRoomUid.length <= 0; + } +} + +- (SpriteSheetImageManager *)manager { + if (!_manager) { + _manager = [[SpriteSheetImageManager alloc] init]; + } + return _manager; +} + +- (YYAnimatedImageView *)headWearImageView { + if (!_headWearImageView) { + _headWearImageView = [[YYAnimatedImageView alloc] init]; + _headWearImageView.backgroundColor = [UIColor clearColor]; + _headWearImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _headWearImageView; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserIcon; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.userInteractionEnabled = YES; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 20; + _avatarImageView.contentMode = UIViewContentModeScaleAspectFill; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapAvatarGuest)]; + [_avatarImageView addGestureRecognizer:tap]; + } + return _avatarImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _nickLabel; +} + +- (UIImageView *)sexImageView { + if (!_sexImageView) { + _sexImageView = [[UIImageView alloc] init]; + _sexImageView.userInteractionEnabled = YES; + } + return _sexImageView; +} + +- (UIStackView *)levelStackView { + if (!_levelStackView) { + _levelStackView = [[UIStackView alloc] init]; + _levelStackView.axis = UILayoutConstraintAxisHorizontal; + _levelStackView.distribution = UIStackViewDistributionFill; + _levelStackView.alignment = UIStackViewAlignmentFill; + _levelStackView.spacing = 2; + } + return _levelStackView; +} +- (NetImageView *)experImageView { + if (!_experImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserCardLevel; + _experImageView = [[NetImageView alloc] initWithConfig:config]; + _experImageView.userInteractionEnabled = YES; + _experImageView.hidden = YES; + _experImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _experImageView; +} + +- (NetImageView *)charmImageView { + if (!_charmImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserCardLevel; + _charmImageView = [[NetImageView alloc] initWithConfig:config]; + _charmImageView.userInteractionEnabled = YES; + _charmImageView.hidden = YES; + _charmImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _charmImageView; +} + +- (NetImageView *)nobleImageView { + if (!_nobleImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserCardLevel; + _nobleImageView = [[NetImageView alloc] initWithConfig:config]; + _nobleImageView.userInteractionEnabled = YES; + _nobleImageView.hidden = YES; + _nobleImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _nobleImageView; +} + +- (UIView *)namePlateView { + if (!_namePlateView) { + _namePlateView = [[UIView alloc] init]; + _namePlateView.backgroundColor = [UIColor clearColor]; + _namePlateView.hidden = YES; + } + return _namePlateView; +} + +- (NetImageView *)nameplateImageView { + if (!_nameplateImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserCardLevel; + _nameplateImageView = [[NetImageView alloc] initWithConfig:config]; + _nameplateImageView.userInteractionEnabled = YES; + _nameplateImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _nameplateImageView; +} + +- (UILabel *)nameplateLabel { + if (!_nameplateLabel) { + _nameplateLabel = [[UILabel alloc] init]; + _nameplateLabel.font = [UIFont systemFontOfSize:10]; + _nameplateLabel.textAlignment = NSTextAlignmentCenter; + _nameplateLabel.textColor = [UIColor whiteColor]; + } + return _nameplateLabel; +} + +- (UIImageView *)newsUserImageView { + if (!_newsUserImageView) { + _newsUserImageView = [[UIImageView alloc] init]; + _newsUserImageView.userInteractionEnabled = YES; + _newsUserImageView.image = [UIImage imageNamed:@"common_new_user"]; + _newsUserImageView.hidden = YES; + } + return _newsUserImageView; +} + +- (UIImageView *)officalImageView { + if (!_officalImageView) { + _officalImageView = [[UIImageView alloc] init]; + _officalImageView.userInteractionEnabled = YES; + _officalImageView.image = [UIImage imageNamed:@"common_offical"]; + _officalImageView.hidden = YES; + } + return _officalImageView; +} + +- (UIStackView *)tagStackView { + if (!_tagStackView) { + _tagStackView = [[UIStackView alloc] init]; + _tagStackView.axis = UILayoutConstraintAxisHorizontal; + _tagStackView.distribution = UIStackViewDistributionFill; + _tagStackView.alignment = UIStackViewAlignmentFill; + _tagStackView.spacing = 2; + } + return _tagStackView; +} + +- (NetImageView *)firstTagImageView { + if (!_firstTagImageView) { + _firstTagImageView = [[NetImageView alloc] init]; + _firstTagImageView.hidden = YES; + } + return _firstTagImageView; +} + +- (NetImageView *)secondTagImageView { + if (!_secondTagImageView) { + _secondTagImageView = [[NetImageView alloc] init]; + _secondTagImageView.hidden = YES; + } + return _secondTagImageView; +} + +- (NetImageView *)thirdTagImageView { + if (!_thirdTagImageView) { + _thirdTagImageView = [[NetImageView alloc] init]; + _thirdTagImageView.hidden = YES; + } + return _thirdTagImageView; +} + +- (UIButton *)onlineButton { + if (!_onlineButton) { + _onlineButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_onlineButton setTitle:YMLocalizedString(@"XPMonentsUserInfoView0") forState:UIControlStateNormal]; + [_onlineButton setImage:[UIImage imageNamed:@"home_search_user_online"] forState:UIControlStateNormal]; + [_onlineButton setTitleColor:[DJDKMIMOMColor appEmphasizeColor] forState:UIControlStateNormal]; + _onlineButton.backgroundColor = [UIColor clearColor]; + _onlineButton.titleLabel.font = [UIFont systemFontOfSize:10]; + _onlineButton.layer.masksToBounds = YES; + _onlineButton.layer.cornerRadius = 18/2; + _onlineButton.layer.borderColor = [DJDKMIMOMColor appEmphasizeColor].CGColor; + _onlineButton.layer.borderWidth = 1; + [_onlineButton addTarget:self action:@selector(onlineButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _onlineButton; +} + + +@end diff --git a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationAnnounceSuccessRegard.h b/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationAnnounceSuccessRegard.h deleted file mode 100644 index ff5d07b5..00000000 --- a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationAnnounceSuccessRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMonentPublishSuccessView.h -// YUMI -// -// Created by YUMI on 2022/8/16. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISeparationAnnounceSuccessRegard : UIView - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationAnnounceSuccessRegard.m b/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationAnnounceSuccessRegard.m deleted file mode 100644 index 9da28fa4..00000000 --- a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationAnnounceSuccessRegard.m +++ /dev/null @@ -1,94 +0,0 @@ -// -// YMMonentPublishSuccessView.m -// YUMI -// -// Created by YUMI on 2022/8/16. -// - -#import "YUMISeparationAnnounceSuccessRegard.h" -#import -#import "DJDKMIMOMColor.h" - -@interface YUMISeparationAnnounceSuccessRegard () -@property (nonatomic, strong) UIImageView *brandIndicateRegard; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UILabel *promptsSequencignation; -@end - -@implementation YUMISeparationAnnounceSuccessRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor whiteColor]; - self.layer.masksToBounds = YES; - self.layer.cornerRadius = 10; - [self addSubview:self.brandIndicateRegard]; - [self addSubview:self.titleLabel]; - [self addSubview:self.promptsSequencignation]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(280, 200)); - }]; - - [self.brandIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(20); - make.centerX.mas_equalTo(self); - make.height.width.mas_equalTo(56); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.brandIndicateRegard.mas_bottom).offset(20); - make.centerX.mas_equalTo(self); - }]; - - [self.promptsSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self).inset(15); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(20); - }]; -} - -#pragma mark - Getters And Setters -- (UIImageView *)brandIndicateRegard { - if (!_brandIndicateRegard) { - _brandIndicateRegard = [[UIImageView alloc] init]; - _brandIndicateRegard.userInteractionEnabled = YES; - _brandIndicateRegard.image = [UIImage imageNamed:@"yumi_monents_publish_success_pic"]; - } - return _brandIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Monent_Publish_Success_View_0"); - _titleLabel.font = [UIFont systemFontOfSize:16]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} - -- (UILabel *)promptsSequencignation { - if (!_promptsSequencignation) { - _promptsSequencignation = [[UILabel alloc] init]; - _promptsSequencignation.text = @"咻,收到小可爱的动态了呢~\n审核通过后小秘书会帮你发送并通知你哦~"; - _promptsSequencignation.font = [UIFont systemFontOfSize:13]; - _promptsSequencignation.numberOfLines = 0; - _promptsSequencignation.textColor = UIColorFromRGB(0x999999); - _promptsSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _promptsSequencignation; -} - - -@end diff --git a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsAnnounceMotifRegard.h b/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsAnnounceMotifRegard.h deleted file mode 100644 index 8b6cd731..00000000 --- a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsAnnounceMotifRegard.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YMMonentsPublishTopicView.h -// YUMI -// -// Created by YUMI on 2022/8/16. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMISeparationsAnnounceMotifRegard, SeparationsMotifMatrix; -@protocol FBCSeparationsPublishMotifRegardRepresendtation - -- (void)yUMISepartowardsionsPublishMotifRegard:(YUMISeparationsAnnounceMotifRegard *)view didTicktackConcludeBtuton:(UIButton *)sender; -- (void)yUMISepartowardsionsPublishMotifRegard:(YUMISeparationsAnnounceMotifRegard *)view didClickChooseTopic:(UIButton *)sender; - -@end - -@interface YUMISeparationsAnnounceMotifRegard : UIView -@property (nonatomic,weak) id delegate; -@property (nonatomic,strong) SeparationsMotifMatrix *motifAbstract; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsAnnounceMotifRegard.m b/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsAnnounceMotifRegard.m deleted file mode 100644 index 1dadefde..00000000 --- a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsAnnounceMotifRegard.m +++ /dev/null @@ -1,185 +0,0 @@ -// -// YMMonentsPublishTopicView.m -// YUMI -// -// Created by YUMI on 2022/8/16. -// - -#import "YUMISeparationsAnnounceMotifRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIView+Corner.h" -#import "UIButton+EnlargeTouchArea.h" -#import "SeparationsMotifMatrix.h" - -@interface YUMISeparationsAnnounceMotifRegard () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UIButton *accelerateMotifBtuton; -@property (nonatomic,strong) UIButton *furthaeroverBtuton; -@property (nonatomic,strong) UIView * motifRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UIButton *concludeBtuton; -@property (nonatomic,strong) UIView * deparatmentRegard; -@end - -@implementation YUMISeparationsAnnounceMotifRegard -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.stackView]; - [self.stackView addArrangedSubview:self.accelerateMotifBtuton]; - [self.stackView addArrangedSubview:self.motifRegard]; - [self.stackView addArrangedSubview:self.deparatmentRegard]; - [self.stackView addArrangedSubview:self.furthaeroverBtuton]; - - [self.motifRegard addSubview:self.titleLabel]; - [self.motifRegard addSubview:self.concludeBtuton]; -} - -- (void)initChildLyRestrictions { - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self); - make.height.mas_equalTo(20); - make.centerY.mas_equalTo(self); - }]; - - [self.accelerateMotifBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(60); - }]; - - [self.motifRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(120); - }]; - - [self.furthaeroverBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(60); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.motifRegard).offset(5); - make.centerY.mas_equalTo(self.motifRegard); - }]; - - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.motifRegard).offset(-7); - make.size.mas_equalTo(CGSizeMake(18, 18)); - make.centerY.mas_equalTo(self.motifRegard); - }]; -} - -#pragma mark - Event Response -- (void)accelertowardseMotifBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMISepartowardsionsPublishMotifRegard:didClickChooseTopic:)]) { - [self.delegate yUMISepartowardsionsPublishMotifRegard:self didClickChooseTopic:sender]; - } -} - -- (void)concludeBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMISepartowardsionsPublishMotifRegard:didTicktackConcludeBtuton:)]) { - [self.delegate yUMISepartowardsionsPublishMotifRegard:self didTicktackConcludeBtuton:sender]; - } -} - -#pragma mark - Getters And Setters -- (void)setMotifAbstract:(SeparationsMotifMatrix *)motifAbstract { - _motifAbstract = motifAbstract; - if (_motifAbstract) { - self.accelerateMotifBtuton.hidden = YES; - self.motifRegard.hidden = NO; - self.furthaeroverBtuton.hidden = NO; - self.titleLabel.text = _motifAbstract.worldName; - } else { - self.accelerateMotifBtuton.hidden = NO; - self.motifRegard.hidden = YES; - self.furthaeroverBtuton.hidden= YES; - } -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 0; - } - return _stackView; -} - -- (UIButton *)accelerateMotifBtuton { - if (!_accelerateMotifBtuton) { - _accelerateMotifBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_accelerateMotifBtuton setTitle:YMLocalizedString(@"YUMI_Monents_Publish_Topic_View_0") forState:UIControlStateNormal]; - [_accelerateMotifBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateNormal]; - _accelerateMotifBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_accelerateMotifBtuton setBackgroundColor:[UIColor whiteColor]]; - _accelerateMotifBtuton.layer.masksToBounds = YES; - _accelerateMotifBtuton.layer.cornerRadius = 10; - [_accelerateMotifBtuton addTarget:self action:@selector(accelertowardseMotifBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _accelerateMotifBtuton; -} - -- (UIButton *)furthaeroverBtuton { - if (!_furthaeroverBtuton) { - _furthaeroverBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_furthaeroverBtuton setTitle:YMLocalizedString(@"YUMI_Monents_Publish_Topic_View_1") forState:UIControlStateNormal]; - [_furthaeroverBtuton setTitleColor:[DJDKMIMOMColor instantEssayPrettify] forState:UIControlStateNormal]; - _furthaeroverBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_furthaeroverBtuton addTarget:self action:@selector(accelertowardseMotifBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _furthaeroverBtuton.hidden = YES; - } - return _furthaeroverBtuton; -} - -- (UIView *)motifRegard { - if (!_motifRegard) { - _motifRegard = [[UIView alloc] init]; - _motifRegard.backgroundColor = [UIColor clearColor]; - _motifRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - _motifRegard.layer.masksToBounds = YES; - _motifRegard.hidden = YES; - [_motifRegard setMonopolizeAboutContraryApexMonopolize:10 rightTopCorner:5 bottomLeftCorner:10 bottomRightCorner:10 size:CGSizeMake(120, 20)]; - } - return _motifRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:13]; - _titleLabel.textColor = [UIColor whiteColor]; - } - return _titleLabel; -} - -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_monents_publish_delete"] forState:UIControlStateNormal]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_monents_publish_delete"] forState:UIControlStateSelected]; - [_concludeBtuton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:10]; - [_concludeBtuton addTarget:self action:@selector(concludeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _concludeBtuton; -} - -- (UIView *)deparatmentRegard { - if (!_deparatmentRegard) { - _deparatmentRegard = [[UIView alloc] init]; - _deparatmentRegard.backgroundColor = [UIColor clearColor]; - } - return _deparatmentRegard; -} - - - -@end diff --git a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsAppearanceRegard.h b/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsAppearanceRegard.h deleted file mode 100644 index e7be06c0..00000000 --- a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsAppearanceRegard.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMMonentsPhotoView.h -// YUMI -// -// Created by YUMI on 2022/5/12. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class SeparationsPicAbstractMatrix, YUMISeparationsAppearanceRegard; -@protocol FBCSeparationsPhotoRegardRepresendtation - -- (void)yUMISepartowardsionsAplictowardsionearanceRegard:(YUMISeparationsAppearanceRegard *)view didClickImage:(NSInteger)index; - -@end - -@interface YUMISeparationsAppearanceRegard : UIView -@property (nonatomic,copy) NSArray *dynamicResList; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsAppearanceRegard.m b/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsAppearanceRegard.m deleted file mode 100644 index f009be07..00000000 --- a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsAppearanceRegard.m +++ /dev/null @@ -1,288 +0,0 @@ -// -// YMMonentsPhotoView.m -// YUMI -// -// Created by YUMI on 2022/5/12. -// - -#import "YUMISeparationsAppearanceRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "YUMISeparationsProgrammingDisposition.h" -#import "NSArray+Safe.h" -#import "SeparationsAbstractMatrix.h" - -@interface YUMISeparationsAppearanceRegard () -@property (nonatomic,strong) NetIndicateRegard *thresholdIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *instantIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *tertiusIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *fourthIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *fifthIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *sixthIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *sevenIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *eighthIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *ninthIndicateRegard; -@property (nonatomic,strong) NSArray *subRegardGarment; -@end - - -@implementation YUMISeparationsAppearanceRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.thresholdIndicateRegard]; - [self addSubview:self.instantIndicateRegard]; - [self addSubview:self.tertiusIndicateRegard]; - [self addSubview:self.fourthIndicateRegard]; - [self addSubview:self.fifthIndicateRegard]; - [self addSubview:self.sixthIndicateRegard]; - [self addSubview:self.sevenIndicateRegard]; - [self addSubview:self.eighthIndicateRegard]; - [self addSubview:self.ninthIndicateRegard]; - self.subRegardGarment = @[self.thresholdIndicateRegard, self.instantIndicateRegard, self.tertiusIndicateRegard, self.fourthIndicateRegard, self.fifthIndicateRegard, self.sixthIndicateRegard, self.sevenIndicateRegard, self.eighthIndicateRegard, self.ninthIndicateRegard]; -} - -- (void)hiddenEntiretyIndictowardseRegard { - [self.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - obj.hidden = YES; - }]; -} - -#pragma mark - Event Response -- (void)betowardsIndictowardseRegard:(UITapGestureRecognizer *)tap { - NetIndicateRegard * imageView = (NetIndicateRegard *)tap.view; - if (imageView.imageUrl.length > 0 && self.delegate && [self.delegate respondsToSelector:@selector(yUMISepartowardsionsAplictowardsionearanceRegard:didClickImage:)]) { - [self.delegate yUMISepartowardsionsAplictowardsionearanceRegard:self didClickImage:imageView.tag - 1001]; - } -} - - -#pragma mark - Getters And Setters -- (void)setDynamicResList:(NSArray *)dynamicResList { - _dynamicResList = dynamicResList; - [self hiddenEntiretyIndictowardseRegard]; - if (_dynamicResList.count == 0) { - - } else if (_dynamicResList.count == 1) { - self.thresholdIndicateRegard.hidden = NO; - [self.thresholdIndicateRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(kMONENTS_PIC_ONE_WIDTH, kMONENTS_PIC_ONE_WIDTH)); - make.left.top.mas_equalTo(self); - }]; - SeparationsPicAbstractMatrix * picInfo = [_dynamicResList secureGroalTowardsIndictowardsrix1:0]; - self.thresholdIndicateRegard.imageUrl = picInfo.resUrl; - } else if(_dynamicResList.count == 2) { - self.thresholdIndicateRegard.hidden = NO; - CGFloat itemWidth = (kMONENTS_CONTENT_MAX_WIDTH - kMONENTS_PIC_SPACE) / 2; - [self.thresholdIndicateRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(itemWidth, itemWidth)); - make.left.top.mas_equalTo(self); - }]; - - SeparationsPicAbstractMatrix * picInfo = [_dynamicResList secureGroalTowardsIndictowardsrix1:0]; - self.thresholdIndicateRegard.imageUrl = picInfo.resUrl; - - self.instantIndicateRegard.hidden = NO; - [self.instantIndicateRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(itemWidth, itemWidth)); - make.top.mas_equalTo(self); - make.left.mas_equalTo(self.thresholdIndicateRegard.mas_right).offset(kMONENTS_PIC_SPACE); - }]; - - SeparationsPicAbstractMatrix * secondPicInfo = [_dynamicResList secureGroalTowardsIndictowardsrix1:1]; - self.instantIndicateRegard.imageUrl = secondPicInfo.resUrl; - - } else{ - for (int i = 0; i < _dynamicResList.count; i++) { - SeparationsPicAbstractMatrix * picInfo = [_dynamicResList secureGroalTowardsIndictowardsrix1:i]; - if (i < self.subRegardGarment.count) { - NetIndicateRegard * imageView = [self.subRegardGarment secureGroalTowardsIndictowardsrix1:i]; - imageView.hidden = NO; - imageView.imageUrl = picInfo.resUrl; - } - } - - CGFloat itemWidth = (kMONENTS_CONTENT_MAX_WIDTH - kMONENTS_PIC_SPACE * 2) / 3; - for (int i = 0; i < self.subRegardGarment.count; i++) { - NSInteger page = i % 3; - NSInteger line = i / 3; - NetIndicateRegard * imageView = [self.subRegardGarment secureGroalTowardsIndictowardsrix1:i]; - [imageView mas_remakeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(itemWidth, itemWidth)); - make.left.mas_equalTo(page * (itemWidth + kMONENTS_PIC_SPACE)); - make.top.mas_equalTo(line * (itemWidth + kMONENTS_PIC_SPACE)); - }]; - } - - } -} - -- (NetIndicateRegard *)thresholdIndicateRegard { - if (!_thresholdIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreMonentsPhoto; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _thresholdIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _thresholdIndicateRegard.layer.masksToBounds = YES; - _thresholdIndicateRegard.layer.cornerRadius = 12; - _thresholdIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _thresholdIndicateRegard.tag = 1000 + 1; - _thresholdIndicateRegard.userInteractionEnabled = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsIndictowardseRegard:)]; - [_thresholdIndicateRegard addGestureRecognizer:tap]; - } - return _thresholdIndicateRegard; -} - -- (NetIndicateRegard *)instantIndicateRegard { - if (!_instantIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreMonentsPhoto; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _instantIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _instantIndicateRegard.layer.masksToBounds = YES; - _instantIndicateRegard.layer.cornerRadius = 12; - _instantIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _instantIndicateRegard.tag = 1000 + 2; - _instantIndicateRegard.userInteractionEnabled = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsIndictowardseRegard:)]; - [_instantIndicateRegard addGestureRecognizer:tap]; - } - return _instantIndicateRegard; -} - -- (NetIndicateRegard *)tertiusIndicateRegard { - if (!_tertiusIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreMonentsPhoto; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _tertiusIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _tertiusIndicateRegard.layer.masksToBounds = YES; - _tertiusIndicateRegard.layer.cornerRadius = 12; - _tertiusIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _tertiusIndicateRegard.tag = 1000 + 3; - _tertiusIndicateRegard.userInteractionEnabled = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsIndictowardseRegard:)]; - [_tertiusIndicateRegard addGestureRecognizer:tap]; - } - return _tertiusIndicateRegard; -} - - -- (NetIndicateRegard *)fourthIndicateRegard { - if (!_fourthIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreMonentsPhoto; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _fourthIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _fourthIndicateRegard.layer.masksToBounds = YES; - _fourthIndicateRegard.layer.cornerRadius = 12; - _fourthIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _fourthIndicateRegard.tag = 1000 + 4; - _fourthIndicateRegard.userInteractionEnabled = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsIndictowardseRegard:)]; - [_fourthIndicateRegard addGestureRecognizer:tap]; - - } - return _fourthIndicateRegard; -} - -- (NetIndicateRegard *)fifthIndicateRegard { - if (!_fifthIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreMonentsPhoto; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _fifthIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _fifthIndicateRegard.layer.masksToBounds = YES; - _fifthIndicateRegard.layer.cornerRadius = 12; - _fifthIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _fifthIndicateRegard.tag = 1000 + 5; - _fifthIndicateRegard.userInteractionEnabled = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsIndictowardseRegard:)]; - [_fifthIndicateRegard addGestureRecognizer:tap]; - } - return _fifthIndicateRegard; -} - - -- (NetIndicateRegard *)sixthIndicateRegard { - if (!_sixthIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreMonentsPhoto; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _sixthIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _sixthIndicateRegard.layer.masksToBounds = YES; - _sixthIndicateRegard.layer.cornerRadius = 12; - _sixthIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _sixthIndicateRegard.tag = 1000 + 6; - _sixthIndicateRegard.userInteractionEnabled = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsIndictowardseRegard:)]; - [_sixthIndicateRegard addGestureRecognizer:tap]; - } - return _sixthIndicateRegard; -} - - -- (NetIndicateRegard *)sevenIndicateRegard { - if (!_sevenIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreMonentsPhoto; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _sevenIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _sevenIndicateRegard.layer.masksToBounds = YES; - _sevenIndicateRegard.layer.cornerRadius = 12; - _sevenIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _sevenIndicateRegard.tag = 1000 + 7; - _sevenIndicateRegard.userInteractionEnabled = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsIndictowardseRegard:)]; - [_sevenIndicateRegard addGestureRecognizer:tap]; - } - return _sevenIndicateRegard; -} - - -- (NetIndicateRegard *)eighthIndicateRegard { - if (!_eighthIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreMonentsPhoto; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _eighthIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _eighthIndicateRegard.layer.masksToBounds = YES; - _eighthIndicateRegard.layer.cornerRadius = 12; - _eighthIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _eighthIndicateRegard.tag = 1000 + 8; - _eighthIndicateRegard.userInteractionEnabled = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsIndictowardseRegard:)]; - [_eighthIndicateRegard addGestureRecognizer:tap]; - } - return _eighthIndicateRegard; -} - - -- (NetIndicateRegard *)ninthIndicateRegard { - if (!_ninthIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreMonentsPhoto; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _ninthIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _ninthIndicateRegard.layer.masksToBounds = YES; - _ninthIndicateRegard.layer.cornerRadius = 12; - _ninthIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _ninthIndicateRegard.tag = 1000 + 9; - _ninthIndicateRegard.userInteractionEnabled = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsIndictowardseRegard:)]; - [_ninthIndicateRegard addGestureRecognizer:tap]; - } - return _ninthIndicateRegard; -} - - -@end diff --git a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsConsumerAbstractRegard.h b/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsConsumerAbstractRegard.h deleted file mode 100644 index a74f1213..00000000 --- a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsConsumerAbstractRegard.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YMMonentsUserInfoView.h -// YUMI -// -// Created by YUMI on 2022/5/12. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class SeparationsAbstractMatrix, YUMISeparationsConsumerAbstractRegard; -@protocol FBCSeparationsConsumerAbstractRegardRepresendtation - -- (void)yUMISepartowardsionsConsumerAbstractRegard:(YUMISeparationsConsumerAbstractRegard *)view didClickAvatar:(SeparationsAbstractMatrix *)reminiscence; - -- (void)yUMISepartowardsionsConsumerAbstractRegard:(YUMISeparationsConsumerAbstractRegard *)view didTicktackImportChamber:(SeparationsAbstractMatrix *)reminiscence; - -@end -@interface YUMISeparationsConsumerAbstractRegard : UIView -@property (nonatomic,strong) SeparationsAbstractMatrix *monentsInfo; - -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsConsumerAbstractRegard.m b/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsConsumerAbstractRegard.m deleted file mode 100644 index 019178fd..00000000 --- a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsConsumerAbstractRegard.m +++ /dev/null @@ -1,444 +0,0 @@ -// -// YMMonentsUserInfoView.m -// YUMI -// -// Created by YUMI on 2022/5/12. -// - -#import "YUMISeparationsConsumerAbstractRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "SpriteSheetIndicateExecutive.h" -#import "YUMIMacroUitls.h" -#import "SeparationsAbstractMatrix.h" -#import "NSArray+Safe.h" - -@interface YUMISeparationsConsumerAbstractRegard () -@property (nonatomic,strong) UIStackView *monicerHierarchyRegard; -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic, strong) NetIndicateRegard *magnificentIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UIImageView *seaxualityIndicateRegard; -@property (nonatomic,strong) UIImageView *strangesConsumerIndicateRegard; -@property (nonatomic,strong) UIImageView *officalIndicateRegard; -@property (nonatomic,strong) YYAnimatedImageView *intelligencePenetrateIndicateRegard; -@property (nonatomic, strong) SpriteSheetIndicateExecutive *manager; -@property (nonatomic,strong) UIStackView *prototypeHierarchyRegard; -@property (nonatomic,strong) NetIndicateRegard *fascinationIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *experIndicateRegard; -@property (nonatomic,strong) UIView * constituteWoodentrayRegard; -@property (nonatomic,strong) NetIndicateRegard *materialIndicateRegard; -@property (nonatomic,strong) UILabel *materialSequencignation; -@property (nonatomic,strong) UIStackView *coupleHierarchyRegard; -@property (nonatomic,strong) NetIndicateRegard *thresholdCoupleIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *instantCoupleIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *tertiusCoupleIndicateRegard; -@property (nonatomic,strong) UIButton *onlineBtuton; -@end -@implementation YUMISeparationsConsumerAbstractRegard -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.intelligenceportraitIndicateRegard]; - [self addSubview:self.intelligencePenetrateIndicateRegard]; - [self addSubview:self.monicerSequencignation]; - [self addSubview:self.seaxualityIndicateRegard]; - [self addSubview:self.coupleHierarchyRegard]; - [self addSubview:self.prototypeHierarchyRegard]; - [self addSubview:self.onlineBtuton]; - - [self.coupleHierarchyRegard addArrangedSubview:self.thresholdCoupleIndicateRegard]; - [self.coupleHierarchyRegard addArrangedSubview:self.instantCoupleIndicateRegard]; - [self.coupleHierarchyRegard addArrangedSubview:self.tertiusCoupleIndicateRegard]; - - [self.prototypeHierarchyRegard addArrangedSubview:self.magnificentIndicateRegard]; - [self.prototypeHierarchyRegard addArrangedSubview:self.strangesConsumerIndicateRegard]; - [self.prototypeHierarchyRegard addArrangedSubview:self.officalIndicateRegard]; - [self.prototypeHierarchyRegard addArrangedSubview:self.experIndicateRegard]; - [self.prototypeHierarchyRegard addArrangedSubview:self.fascinationIndicateRegard]; - [self.prototypeHierarchyRegard addArrangedSubview:self.constituteWoodentrayRegard]; - - [self.constituteWoodentrayRegard addSubview:self.materialIndicateRegard]; - [self.constituteWoodentrayRegard addSubview:self.materialSequencignation]; - -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(40, 40)); - make.left.mas_equalTo(self).offset(15); - make.top.mas_equalTo(self).offset(15); - }]; - - [self.intelligencePenetrateIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.width.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_width).multipliedBy(1.2); - make.height.mas_equalTo(self.intelligencePenetrateIndicateRegard.mas_width); - }]; - - - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(12); - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(-2); - }]; - - [self.seaxualityIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(14, 14)); - make.left.mas_equalTo(self.monicerSequencignation.mas_right).offset(4); - make.centerY.mas_equalTo(self.monicerSequencignation); - }]; - - [self.prototypeHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.monicerSequencignation); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(2); - make.height.mas_equalTo(20); - }]; - - [self.magnificentIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(20); - }]; - - [self.strangesConsumerIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(20); - }]; - - [self.officalIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(20); - }]; - - [self.experIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(20); - }]; - - [self.fascinationIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(20); - }]; - - [self.constituteWoodentrayRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(self.materialIndicateRegard.mas_width); - }]; - - [self.materialIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(20); - make.width.mas_equalTo(60); - make.left.top.mas_equalTo(self.constituteWoodentrayRegard); - }]; - - [self.materialSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.bottom.mas_equalTo(self.materialIndicateRegard); - make.right.mas_equalTo(self.constituteWoodentrayRegard).offset(-2); - }]; - - [self.coupleHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self).offset(-15); - make.centerY.mas_equalTo(self.monicerSequencignation); - make.height.mas_equalTo(14); - }]; - - [self.onlineBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(55, 18)); - make.right.mas_equalTo(self.coupleHierarchyRegard); - make.top.mas_equalTo(self.coupleHierarchyRegard.mas_bottom).offset(4); - }]; - - [self.thresholdCoupleIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(28); - }]; - - [self.instantCoupleIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(self.thresholdCoupleIndicateRegard); - }]; - - [self.tertiusCoupleIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(self.thresholdCoupleIndicateRegard); - }]; -} - -#pragma mark - Event Response -- (void)onlineBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMISepartowardsionsConsumerAbstractRegard:didTicktackImportChamber:)]) { - [self.delegate yUMISepartowardsionsConsumerAbstractRegard:self didTicktackImportChamber:self.monentsInfo]; - } -} - -- (void)didBetowardsIntelligenceportraitGuest { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMISepartowardsionsConsumerAbstractRegard:didClickAvatar:)]) { - [self.delegate yUMISepartowardsionsConsumerAbstractRegard:self didClickAvatar:self.monentsInfo]; - } -} - -#pragma mark - Getters And Setters -- (void)setMonentsInfo:(SeparationsAbstractMatrix *)monentsInfo { - _monentsInfo = monentsInfo; - if (_monentsInfo) { - self.intelligenceportraitIndicateRegard.imageUrl = _monentsInfo.avatar; - NSString * nick = _monentsInfo.nick; - if (nick.length > 8) { - nick = [NSString stringWithFormat:@"%@…", [nick substringToIndex:8]]; - } - self.monicerSequencignation.text = nick.length > 0 ? nick : @""; - self.seaxualityIndicateRegard.image = _monentsInfo.gender == GenderGenre_Female ? [UIImage imageNamed:@"yumi_same_female"] : [UIImage imageNamed:@"yumi_same_male"]; - self.officalIndicateRegard.hidden = _monentsInfo.defUser != 2; - self.strangesConsumerIndicateRegard.hidden = !_monentsInfo.newUser; - self.magnificentIndicateRegard.hidden = !_monentsInfo.userVipInfoVO; - if (_monentsInfo.experLevelPic) { - self.experIndicateRegard.imageUrl = _monentsInfo.experLevelPic; - } - self.experIndicateRegard.hidden = _monentsInfo.experLevelPic.length <= 0; - - if (_monentsInfo.charmLevelPic) { - self.fascinationIndicateRegard.imageUrl = _monentsInfo.charmLevelPic; - } - - if (_monentsInfo.userVipInfoVO) { - self.magnificentIndicateRegard.imageUrl = _monentsInfo.userVipInfoVO.vipIcon; - } - - self.fascinationIndicateRegard.hidden = _monentsInfo.charmLevelPic.length <= 0; - - if (_monentsInfo.nameplateWord.length>0 && _monentsInfo.nameplatePic.length>0) { - self.materialIndicateRegard.imageUrl = _monentsInfo.nameplatePic; - self.materialSequencignation.text = _monentsInfo.nameplateWord; - self.constituteWoodentrayRegard.hidden = NO; - } else { - self.constituteWoodentrayRegard.hidden = YES; - } - - - NSString * headwearUrl= _monentsInfo.headwearEffect.length > 0 ? _monentsInfo.headwearEffect : _monentsInfo.headwearPic; - self.intelligencePenetrateIndicateRegard.hidden = headwearUrl.length <= 0; - if (headwearUrl.length > 0) { - NSURL *url = [NSURL URLWithString:headwearUrl]; - @kWeakify(self); - [self.manager chamberSpriteSheetIndictowardseAboutWEEBSITE:url completionBlock:^(YYSpriteSheetImage * _Nullable sprit) { - @kStrongify(self); - self.intelligencePenetrateIndicateRegard.image = sprit; - } failureBlock:^(NSError * _Nullable error) { - }]; - } - self.thresholdCoupleIndicateRegard.hidden = YES; - self.instantCoupleIndicateRegard.hidden = YES; - self.tertiusCoupleIndicateRegard.hidden = YES; - for (int i = 0; i< _monentsInfo.labelList.count; i++) { - NSString * imageUrl = [_monentsInfo.labelList secureGroalTowardsIndictowardsrix1:i]; - if (i < self.coupleHierarchyRegard.subviews.count) { - NetIndicateRegard * image = [self.coupleHierarchyRegard.subviews secureGroalTowardsIndictowardsrix1:i]; - image.hidden = NO; - image.imageUrl = imageUrl; - } - } - self.onlineBtuton.hidden = _monentsInfo.inRoomUid.length <= 0; - } -} - -- (SpriteSheetIndicateExecutive *)manager { - if (!_manager) { - _manager = [[SpriteSheetIndicateExecutive alloc] init]; - } - return _manager; -} - -- (YYAnimatedImageView *)intelligencePenetrateIndicateRegard { - if (!_intelligencePenetrateIndicateRegard) { - _intelligencePenetrateIndicateRegard = [[YYAnimatedImageView alloc] init]; - _intelligencePenetrateIndicateRegard.backgroundColor = [UIColor clearColor]; - _intelligencePenetrateIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _intelligencePenetrateIndicateRegard; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.imageType = ImageGenreUserIcon; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.userInteractionEnabled = YES; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 20; - _intelligenceportraitIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didBetowardsIntelligenceportraitGuest)]; - [_intelligenceportraitIndicateRegard addGestureRecognizer:tap]; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _monicerSequencignation; -} - -- (UIImageView *)seaxualityIndicateRegard { - if (!_seaxualityIndicateRegard) { - _seaxualityIndicateRegard = [[UIImageView alloc] init]; - _seaxualityIndicateRegard.userInteractionEnabled = YES; - } - return _seaxualityIndicateRegard; -} - -- (UIStackView *)prototypeHierarchyRegard { - if (!_prototypeHierarchyRegard) { - _prototypeHierarchyRegard = [[UIStackView alloc] init]; - _prototypeHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _prototypeHierarchyRegard.distribution = UIStackViewDistributionFill; - _prototypeHierarchyRegard.alignment = UIStackViewAlignmentFill; - _prototypeHierarchyRegard.spacing = 2; - } - return _prototypeHierarchyRegard; -} -- (NetIndicateRegard *)experIndicateRegard { - if (!_experIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.imageType = ImageGenreUserCardLevel; - _experIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _experIndicateRegard.userInteractionEnabled = YES; - _experIndicateRegard.hidden = YES; - _experIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _experIndicateRegard; -} - -- (NetIndicateRegard *)fascinationIndicateRegard { - if (!_fascinationIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.imageType = ImageGenreUserCardLevel; - _fascinationIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _fascinationIndicateRegard.userInteractionEnabled = YES; - _fascinationIndicateRegard.hidden = YES; - _fascinationIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _fascinationIndicateRegard; -} - -- (NetIndicateRegard *)magnificentIndicateRegard { - if (!_magnificentIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.imageType = ImageGenreUserCardLevel; - _magnificentIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _magnificentIndicateRegard.userInteractionEnabled = YES; - _magnificentIndicateRegard.hidden = YES; - _magnificentIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _magnificentIndicateRegard; -} - -- (UIView *)constituteWoodentrayRegard { - if (!_constituteWoodentrayRegard) { - _constituteWoodentrayRegard = [[UIView alloc] init]; - _constituteWoodentrayRegard.backgroundColor = [UIColor clearColor]; - _constituteWoodentrayRegard.hidden = YES; - } - return _constituteWoodentrayRegard; -} - -- (NetIndicateRegard *)materialIndicateRegard { - if (!_materialIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.imageType = ImageGenreUserCardLevel; - _materialIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _materialIndicateRegard.userInteractionEnabled = YES; - _materialIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _materialIndicateRegard; -} - -- (UILabel *)materialSequencignation { - if (!_materialSequencignation) { - _materialSequencignation = [[UILabel alloc] init]; - _materialSequencignation.font = [UIFont systemFontOfSize:10]; - _materialSequencignation.textAlignment = NSTextAlignmentCenter; - _materialSequencignation.textColor = [UIColor whiteColor]; - } - return _materialSequencignation; -} - -- (UIImageView *)strangesConsumerIndicateRegard { - if (!_strangesConsumerIndicateRegard) { - _strangesConsumerIndicateRegard = [[UIImageView alloc] init]; - _strangesConsumerIndicateRegard.userInteractionEnabled = YES; - _strangesConsumerIndicateRegard.image = [UIImage imageNamed:@"yumi_same_new_user"]; - _strangesConsumerIndicateRegard.hidden = YES; - } - return _strangesConsumerIndicateRegard; -} - -- (UIImageView *)officalIndicateRegard { - if (!_officalIndicateRegard) { - _officalIndicateRegard = [[UIImageView alloc] init]; - _officalIndicateRegard.userInteractionEnabled = YES; - _officalIndicateRegard.image = [UIImage imageNamed:@"yumi_same_offical"]; - _officalIndicateRegard.hidden = YES; - } - return _officalIndicateRegard; -} - -- (UIStackView *)coupleHierarchyRegard { - if (!_coupleHierarchyRegard) { - _coupleHierarchyRegard = [[UIStackView alloc] init]; - _coupleHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _coupleHierarchyRegard.distribution = UIStackViewDistributionFill; - _coupleHierarchyRegard.alignment = UIStackViewAlignmentFill; - _coupleHierarchyRegard.spacing = 2; - } - return _coupleHierarchyRegard; -} - -- (NetIndicateRegard *)thresholdCoupleIndicateRegard { - if (!_thresholdCoupleIndicateRegard) { - _thresholdCoupleIndicateRegard = [[NetIndicateRegard alloc] init]; - _thresholdCoupleIndicateRegard.hidden = YES; - } - return _thresholdCoupleIndicateRegard; -} - -- (NetIndicateRegard *)instantCoupleIndicateRegard { - if (!_instantCoupleIndicateRegard) { - _instantCoupleIndicateRegard = [[NetIndicateRegard alloc] init]; - _instantCoupleIndicateRegard.hidden = YES; - } - return _instantCoupleIndicateRegard; -} - -- (NetIndicateRegard *)tertiusCoupleIndicateRegard { - if (!_tertiusCoupleIndicateRegard) { - _tertiusCoupleIndicateRegard = [[NetIndicateRegard alloc] init]; - _tertiusCoupleIndicateRegard.hidden = YES; - } - return _tertiusCoupleIndicateRegard; -} - -- (UIButton *)onlineBtuton { - if (!_onlineBtuton) { - _onlineBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_onlineBtuton setTitle:YMLocalizedString(@"YUMI_Monents_User_Info_View_0") forState:UIControlStateNormal]; - [_onlineBtuton setImage:[UIImage imageNamed:@"yumi_main_search_user_online"] forState:UIControlStateNormal]; - [_onlineBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionUnderlinePrettify] forState:UIControlStateNormal]; - _onlineBtuton.backgroundColor = [UIColor clearColor]; - _onlineBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - _onlineBtuton.layer.masksToBounds = YES; - _onlineBtuton.layer.cornerRadius = 18/2; - _onlineBtuton.layer.borderColor = [DJDKMIMOMColor aplictowardsionUnderlinePrettify].CGColor; - _onlineBtuton.layer.borderWidth = 1; - [_onlineBtuton addTarget:self action:@selector(onlineBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _onlineBtuton; -} - - -@end diff --git a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsEncourageIntelligencerRegard.h b/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsEncourageIntelligencerRegard.h deleted file mode 100644 index 7212f7c5..00000000 --- a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsEncourageIntelligencerRegard.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YMMonentsRecommendHeaderView.h -// YUMI -// -// Created by YUMI on 2022/5/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class SeparationsMotifMatrix,YUMISeparationsEncourageIntelligencerRegard ; -@protocol FBCSeparationsEncourageIntelligencerRegardRepresendtation - -- (void)yUMISepartowardsionsEncourageIntelligencerRegard:(YUMISeparationsEncourageIntelligencerRegard *)view didSelectItem:(SeparationsMotifMatrix *)info; - -- (void)yUMISepartowardsionsEncourageIntelligencerRegard:(YUMISeparationsEncourageIntelligencerRegard *)view didClickMoreTopic:(UIButton *)sender; - -@end - -@interface YUMISeparationsEncourageIntelligencerRegard : UIView -@property (nonatomic,strong) NSArray *motifStatement; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsEncourageIntelligencerRegard.m b/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsEncourageIntelligencerRegard.m deleted file mode 100644 index 6d08b297..00000000 --- a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsEncourageIntelligencerRegard.m +++ /dev/null @@ -1,136 +0,0 @@ -// -// YMMonentsRecommendHeaderView.m -// YUMI -// -// Created by YUMI on 2022/5/18. -// - -#import "YUMISeparationsEncourageIntelligencerRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "NSArray+Safe.h" -#import "SeparationsMotifMatrix.h" -#import "YUMISeparationsMotifAssembletionRegardElement.h" - -@interface YUMISeparationsEncourageIntelligencerRegard () -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UIButton *arrowBtuton; -@property (nonatomic,strong) UICollectionView *collectionView; - -@end - -@implementation YUMISeparationsEncourageIntelligencerRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - [self addSubview:self.titleLabel]; - [self addSubview:self.arrowBtuton]; - [self addSubview:self.collectionView]; -} - -- (void)initChildLyRestrictions { - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self).offset(15); - make.top.mas_equalTo(self).offset(15); - }]; - - [self.arrowBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(11, 20)); - make.centerY.mas_equalTo(self.titleLabel); - make.right.mas_equalTo(self).offset(-15); - }]; - - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(10); - make.height.mas_equalTo(77); - }]; -} - -#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.motifStatement.count; -} - -- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { - return CGSizeMake(125, 77); -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMISeparationsMotifAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMISeparationsMotifAssembletionRegardElement class]) forIndexPath:indexPath]; - cell.motifAbstract = [self.motifStatement secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - [collectionView deselectItemAtIndexPath:indexPath animated:YES]; - if (self.motifStatement.count > 0) { - SeparationsMotifMatrix * motifAbstract = [self.motifStatement secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMISepartowardsionsEncourageIntelligencerRegard:didSelectItem:)]) { - [self.delegate yUMISepartowardsionsEncourageIntelligencerRegard:self didSelectItem:motifAbstract]; - } - } -} - -#pragma mark - Event Response -- (void)arrowBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMISepartowardsionsEncourageIntelligencerRegard:didClickMoreTopic:)]) { - [self.delegate yUMISepartowardsionsEncourageIntelligencerRegard:self didClickMoreTopic:sender]; - } -} - -#pragma mark - Getters And Setters -- (void)setMotifStatement:(NSArray *)motifStatement { - _motifStatement = motifStatement; - [self.collectionView reloadData]; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleLabel.text = YMLocalizedString(@"YUMI_Monents_Recommend_Header_View_0"); - } - return _titleLabel; -} - -- (UIButton *)arrowBtuton { - if (!_arrowBtuton) { - _arrowBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_arrowBtuton setImage:[UIImage imageNamed:@"yumi_scope_setting_arrow"] forState:UIControlStateNormal]; - [_arrowBtuton setImage:[UIImage imageNamed:@"yumi_scope_setting_arrow"] forState:UIControlStateSelected]; - [_arrowBtuton addTarget:self action:@selector(arrowBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _arrowBtuton; -} - -- (UICollectionView *)collectionView{ - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.sectionInset = UIEdgeInsetsMake(0, 15, 0, 0); - layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; - layout.minimumLineSpacing = 8; - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.backgroundColor = [UIColor clearColor]; - _collectionView.showsHorizontalScrollIndicator = NO; - [_collectionView registerClass:[YUMISeparationsMotifAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMISeparationsMotifAssembletionRegardElement class])]; - } - return _collectionView; -} - - - -@end diff --git a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsMotifIntelligencerRegard.h b/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsMotifIntelligencerRegard.h deleted file mode 100644 index f11f6e66..00000000 --- a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsMotifIntelligencerRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMonentsTopicHeaderView.h -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class SeparationsMotifMatrix; -@interface YUMISeparationsMotifIntelligencerRegard : UIView -@property (nonatomic,strong) SeparationsMotifMatrix *motifAbstract; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsMotifIntelligencerRegard.m b/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsMotifIntelligencerRegard.m deleted file mode 100644 index 3438ca2f..00000000 --- a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsMotifIntelligencerRegard.m +++ /dev/null @@ -1,113 +0,0 @@ -// -// YMMonentsTopicHeaderView.m -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import "YUMISeparationsMotifIntelligencerRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "NetIndicateRegard.h" -#import "SeparationsMotifMatrix.h" - -@interface YUMISeparationsMotifIntelligencerRegard () - -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UILabel *sequenceSequencignation; -@property (nonatomic,strong) NetIndicateRegard *brandIndicateRegard; -@property (nonatomic,strong) UIView * transparencyRegard; -@end - -@implementation YUMISeparationsMotifIntelligencerRegard - - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.brandIndicateRegard]; - [self addSubview:self.transparencyRegard]; - [self addSubview:self.titleLabel]; - [self addSubview:self.sequenceSequencignation]; - -} - -- (void)initChildLyRestrictions { - [self.brandIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.transparencyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self).offset(kNavigationHeight + 10); - make.left.mas_equalTo(self).offset(30); - }]; - - [self.sequenceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.titleLabel); - make.right.mas_equalTo(self).offset(-10); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(20); - }]; -} - -#pragma mark - Getters And Setters -- (void)setMotifAbstract:(SeparationsMotifMatrix *)motifAbstract { - _motifAbstract = motifAbstract; - if (_motifAbstract) { - self.brandIndicateRegard.imageUrl = _motifAbstract.icon; - self.titleLabel.text = _motifAbstract.name; - self.sequenceSequencignation.text = _motifAbstract.desc; - } -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:18]; - _titleLabel.textColor = [UIColor whiteColor]; - } - return _titleLabel; -} - -- (UILabel *)sequenceSequencignation { - if (!_sequenceSequencignation) { - _sequenceSequencignation = [[UILabel alloc] init]; - _sequenceSequencignation.font = [UIFont systemFontOfSize:14]; - _sequenceSequencignation.textColor = [UIColor whiteColor]; - _sequenceSequencignation.numberOfLines = 2; - } - return _sequenceSequencignation; -} - -- (NetIndicateRegard *)brandIndicateRegard { - if (!_brandIndicateRegard) { - _brandIndicateRegard = [[NetIndicateRegard alloc] init]; - _brandIndicateRegard.userInteractionEnabled = YES; - _brandIndicateRegard.layer.masksToBounds = YES; - _brandIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _brandIndicateRegard; -} - -- (UIView *)transparencyRegard { - if (!_transparencyRegard) { - _transparencyRegard = [[UIView alloc] init]; - _transparencyRegard.backgroundColor = [UIColor blackColor]; - _transparencyRegard.alpha = 0.5; - } - return _transparencyRegard; -} - -@end diff --git a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsSatisfactionRegard.h b/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsSatisfactionRegard.h deleted file mode 100644 index 212a6e33..00000000 --- a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsSatisfactionRegard.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// YMMonentsContentView.h -// YUMI -// -// Created by YUMI on 2022/5/13. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class SeparationsAbstractMatrix, YUMISeparationsSatisfactionRegard; - -@protocol FBCSeparationsContentRegardRepresendtation - -- (void)yUMISepartowardsionsStowardsisfperformanceRegard:(YUMISeparationsSatisfactionRegard *)view didClickFold:(SeparationsAbstractMatrix *)monentsInfo; - -@end - -@interface YUMISeparationsSatisfactionRegard : UIView -@property (nonatomic,strong) SeparationsAbstractMatrix *monentsInfo; -@property (nonatomic,weak) id delegate; - -@property (nonatomic,assign) BOOL isSimple; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsSatisfactionRegard.m b/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsSatisfactionRegard.m deleted file mode 100644 index 79b12cf7..00000000 --- a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsSatisfactionRegard.m +++ /dev/null @@ -1,167 +0,0 @@ -// -// YMMonentsContentView.m -// YUMI -// -// Created by YUMI on 2022/5/13. -// - -#import "YUMISeparationsSatisfactionRegard.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMISeparationsProgrammingDisposition.h" -#import "UIButton+EnlargeTouchArea.h" -#import "SeparationsAbstractMatrix.h" -@interface YUMISeparationsSatisfactionRegard () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UILabel *satisfperformanceSequencignation; -@property (nonatomic,strong) UIButton *foldBtuton; -@end - - -@implementation YUMISeparationsSatisfactionRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.stackView]; - [self.stackView addArrangedSubview:self.satisfperformanceSequencignation]; - [self.stackView addArrangedSubview:self.foldBtuton]; -} - -- (void)initChildLyRestrictions { - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.foldBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(kMONENTS_FOLD_HEIGHT); - }]; -} - -- (NSAttributedString *)produceSepartowardsionsStowardsisfperformanceIdiosyncracy { - NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] init]; - if (self.monentsInfo.squareTop ) { - NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; - attachment.bounds = CGRectMake(0, 0, 25 * 1.3, 10 * 1.3); - attachment.image = [UIImage imageNamed:@"yumi_monents_gen_top"]; - NSAttributedString * starAttribute = [NSMutableAttributedString attributedStringWithAttachment:(NSTextAttachment *)attachment]; - [attributedString insertAttributedString:starAttribute atIndex:0]; - } - [attributedString appendAttributedString:[self cretowardsBWSttTowardstrByBWStt:self.monentsInfo.content attributed:@{NSFontAttributeName : [UIFont systemFontOfSize:15]}]]; - attributedString.yy_lineSpacing = 5; - attributedString.yy_lineBreakMode = NSLineBreakByWordWrapping; - return attributedString; -} - -- (NSMutableAttributedString *)cretowardsBWSttTowardstrByBWStt:(NSString *)str attributed:(NSDictionary *)attribute{ - if (str.length == 0 || !str) { - str = @" "; - } - NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:str attributes:attribute]; - return attr; -} - - - -#pragma mark - Event Response -- (void)didTicktackFoldBtuton:(UIButton *)sender { - sender.selected = !sender.selected; - self.monentsInfo.isFold = !sender.selected; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMISepartowardsionsStowardsisfperformanceRegard:didClickFold:)]) { - [self.delegate yUMISepartowardsionsStowardsisfperformanceRegard:self didClickFold:self.monentsInfo]; - } -} - -#pragma mark - Getters And Setters - -- (void)setIsSimple:(BOOL)isSimple { - _isSimple = isSimple; - self.satisfperformanceSequencignation.preferredMaxLayoutWidth = isSimple ? kSIMPLE_MONENTS_CONTENT_MAX_WIDTH : kMONENTS_CONTENT_MAX_WIDTH; -} - -- (void)setMonentsInfo:(SeparationsAbstractMatrix *)monentsInfo { - _monentsInfo = monentsInfo; - if (_monentsInfo) { - self.satisfperformanceSequencignation.attributedText = [self produceSepartowardsionsStowardsisfperformanceIdiosyncracy]; - self.foldBtuton.selected = !_monentsInfo.isFold; - if (monentsInfo.numberOfText <= 0) { - YYTextContainer *container = [YYTextContainer new]; - container.size = CGSizeMake(self.isSimple ? kSIMPLE_MONENTS_CONTENT_MAX_WIDTH : kMONENTS_CONTENT_MAX_WIDTH, CGFLOAT_MAX); - container.maximumNumberOfRows = 0; - YYTextLayout * layout = [YYTextLayout layoutWithContainer:container text:self.satisfperformanceSequencignation.attributedText]; - if (layout.rowCount > 6) { - self.foldBtuton.hidden = NO; - [self.foldBtuton mas_remakeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(kMONENTS_FOLD_HEIGHT); - }]; - } else { - self.foldBtuton.hidden = YES; - [self.foldBtuton mas_remakeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(0); - }]; - } - } else { - if (monentsInfo.numberOfText > 6) { - self.foldBtuton.hidden = NO; - [self.foldBtuton mas_remakeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(kMONENTS_FOLD_HEIGHT); - }]; - } else { - self.foldBtuton.hidden = YES; - [self.foldBtuton mas_remakeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(0); - }]; - } - } - } -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentLeading; - _stackView.spacing = 0; - } - return _stackView; -} - -- (UIButton *)foldBtuton { - if (_foldBtuton == nil) { - _foldBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_foldBtuton setTitle:YMLocalizedString(@"YUMI_Monents_Content_View_0") forState:UIControlStateNormal]; - [_foldBtuton setTitle:YMLocalizedString(@"YUMI_Monents_Content_View_1") forState:UIControlStateSelected]; - [_foldBtuton setTitleColor:UIColorFromRGB(0x34A7FF) forState:UIControlStateNormal]; - [_foldBtuton setTitleColor:UIColorFromRGB(0x34A7FF) forState:UIControlStateSelected]; - _foldBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - _foldBtuton.hidden = YES; - [_foldBtuton addTarget:self action:@selector(didTicktackFoldBtuton:) forControlEvents:UIControlEventTouchUpInside]; - } - return _foldBtuton; -} - - -- (UILabel *)satisfperformanceSequencignation { - if (!_satisfperformanceSequencignation) { - _satisfperformanceSequencignation = [[UILabel alloc] init]; - _satisfperformanceSequencignation.numberOfLines = 0; - _satisfperformanceSequencignation.font = [UIFont systemFontOfSize:15]; - _satisfperformanceSequencignation.textColor = UIColorRGBAlpha(0x333333, 1); - _satisfperformanceSequencignation.preferredMaxLayoutWidth = kMONENTS_CONTENT_MAX_WIDTH; - _satisfperformanceSequencignation.lineBreakMode = NSLineBreakByWordWrapping; - - } - return _satisfperformanceSequencignation; -} - -@end diff --git a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsTooObstacleRegard.h b/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsTooObstacleRegard.h deleted file mode 100644 index 400fe177..00000000 --- a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsTooObstacleRegard.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMMonentsTooBarView.h -// YUMI -// -// Created by YUMI on 2022/5/12. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class SeparationsAbstractMatrix, YUMISeparationsTooObstacleRegard; -@protocol FBCSeparationsTooObstacleRegardRepresendtation -- (void)yUMISepartowardsionsTooObstacleRegard:(YUMISeparationsTooObstacleRegard *)view didClickLike:(SeparationsAbstractMatrix *)monentsInfo; -- (void)yUMISepartowardsionsTooObstacleRegard:(YUMISeparationsTooObstacleRegard *)view didClickDelete:(SeparationsAbstractMatrix *)monentsInfo; -- (void)yUMISepartowardsionsTooObstacleRegard:(YUMISeparationsTooObstacleRegard *)view didClickCommon:(SeparationsAbstractMatrix *)monentsInfo; -@end - -@interface YUMISeparationsTooObstacleRegard : UIView -@property (nonatomic,strong) SeparationsAbstractMatrix *monentsInfo; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsTooObstacleRegard.m b/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsTooObstacleRegard.m deleted file mode 100644 index 08d447fb..00000000 --- a/YuMi/Modules/YMMonents/View/SubViews/YUMISeparationsTooObstacleRegard.m +++ /dev/null @@ -1,300 +0,0 @@ -// -// YMMonentsTooBarView.m -// YUMI -// -// Created by YUMI on 2022/5/12. -// - -#import "YUMISeparationsTooObstacleRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "MKJPopup.h" -#import "YUMIHtmlUrl.h" -#import "YUMIParaticipationRegard.h" -#import "XNDJTBWGLoadingTool.h" -#import "YUMIMacroUitls.h" -#import "YUMIHtmlUrl.h" -#import "AccountAbstractStorage.h" -#import "Api+Monents.h" -#import "ClientDisposition.h" -#import "SeparationsAbstractMatrix.h" -#import "YUMITissueRegardGovernancer.h" -#import "XCCurrentVCStackExecutive.h" - -@interface YUMISeparationsTooObstacleRegard () -@property (nonatomic,strong) UIButton *reportBtuton; -@property (nonatomic,strong) UIView * likeRegard; -@property (nonatomic,strong) UIButton *likeBtuton; -@property (nonatomic,strong) UILabel *likeSequencignation; -@property (nonatomic,strong) UIView * judgementRegard; -@property (nonatomic,strong) UIButton *judgementBtuton; -@property (nonatomic,strong) UILabel *judgementSequencignation; -@property (nonatomic,strong) UIButton *shareBtuton; -@property (nonatomic,strong) UIView * burlywoodRegard; - -@end - -@implementation YUMISeparationsTooObstacleRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.reportBtuton]; - [self addSubview:self.likeRegard]; - [self addSubview:self.judgementRegard]; - [self addSubview:self.shareBtuton]; - [self addSubview:self.burlywoodRegard]; - - [self.likeRegard addSubview:self.likeBtuton]; - [self.likeRegard addSubview:self.likeSequencignation]; - [self.judgementRegard addSubview:self.judgementBtuton]; - [self.judgementRegard addSubview:self.judgementSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.reportBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self).offset(70); - make.top.mas_equalTo(self).offset(24); - make.size.mas_equalTo(CGSizeMake(22, 22)); - }]; - - [self.likeRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.likeBtuton.mas_left); - make.height.mas_equalTo(22); - make.centerY.mas_equalTo(self.reportBtuton); - make.right.mas_equalTo(self.judgementRegard.mas_left).offset(-12); - }]; - - [self.likeSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.likeRegard.mas_right).offset(-3); - make.centerY.mas_equalTo(self.likeRegard); - }]; - - [self.likeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(22, 22)); - make.centerY.mas_equalTo(self.likeRegard); - make.right.mas_equalTo(self.likeSequencignation.mas_left).offset(-3); - }]; - - [self.judgementRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.judgementBtuton.mas_left).offset(-2); - make.height.mas_equalTo(22); - make.centerY.mas_equalTo(self.reportBtuton); - make.right.mas_equalTo(self.shareBtuton.mas_left).offset(-12); - }]; - - - [self.judgementBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(22, 22)); - make.centerY.mas_equalTo(self.judgementRegard); - make.right.mas_equalTo(self.judgementSequencignation.mas_left).offset(-2); - }]; - - [self.judgementSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.judgementRegard.mas_right).offset(-3); - make.centerY.mas_equalTo(self.judgementRegard); - }]; - - [self.shareBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(22, 22)); - make.right.mas_equalTo(self).offset(-32); - make.centerY.mas_equalTo(self.reportBtuton); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self).inset(16); - make.bottom.mas_equalTo(self); - make.height. mas_equalTo(1); - }]; -} -#pragma mark - Event Response -- (void)commonBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMISepartowardsionsTooObstacleRegard:didClickCommon:)]) { - self.judgementBtuton.userInteractionEnabled = YES; - [self.delegate yUMISepartowardsionsTooObstacleRegard:self didClickCommon:self.monentsInfo]; - } else { - self.judgementBtuton.userInteractionEnabled = NO; - } -} - -- (void)similarBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMISepartowardsionsTooObstacleRegard:didClickLike:)]) { - [self.delegate yUMISepartowardsionsTooObstacleRegard:self didClickLike:self.monentsInfo]; - } -} - -- (void)respondBtutonPerformance:(UIButton *)sender { - MKJActionSheetDisposition *action; - if (self.monentsInfo.uid.integerValue == [AccountAbstractStorage instance].acquireCid.integerValue) { - action = [MKJActionSheetDisposition normalTitle:YMLocalizedString(@"YUMI_Monents_Too_Bar_View_0") ticktackPerformance:^{ - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMISepartowardsionsTooObstacleRegard:didClickDelete:)]) { - [self.delegate yUMISepartowardsionsTooObstacleRegard:self didClickDelete:self.monentsInfo]; - } - }]; - } else { - action = [MKJActionSheetDisposition normalTitle:YMLocalizedString(@"YUMI_Monents_Too_Bar_View_1") ticktackPerformance:^{ - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - NSString * url= [NSString stringWithFormat:@"%@?reportUid=%@&source=%@", URLWithType(kReportRoomURL),self.monentsInfo.uid, @"WORLDDYNAMIC"]; - YUMITissueRegardGovernancer * webVewC = [[YUMITissueRegardGovernancer alloc] init]; - webVewC.url = url; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:webVewC animated:YES]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Monents_Too_Bar_View_2")]; - } - - }]; - } - [MKJPopup performanceSheetAboutProvisions:@[action]]; -} - -- (void)partowardsiciptowardsionBtutonPerformance:(UIButton *)sender { - YUMIParaticipationProvision *friend = [YUMIParaticipationProvision itemWitCouple:XPShareItemTagAppFriends title:YMLocalizedString(@"YUMI_Monents_Too_Bar_View_3") imageName:@"share_friend" disableImageName:@"share_friend"]; - YUMIParaticipationProvision *cycle = [YUMIParaticipationProvision itemWitCouple:XPShareItemTagMoments title:YMLocalizedString(@"YUMI_Monents_Too_Bar_View_4") imageName:@"share_wechat_circle_normal" disableImageName:@"share_wechat_circle_disable"]; - YUMIParaticipationProvision *wechat = [YUMIParaticipationProvision itemWitCouple:XPShareItemTagWeChat title:YMLocalizedString(@"YUMI_Monents_Too_Bar_View_5") imageName:@"share_wechat_normal" disableImageName:@"share_wechat_disable"]; - YUMIParaticipationProvision *qq = [YUMIParaticipationProvision itemWitCouple:XPShareItemTagQQ title:YMLocalizedString(@"YUMI_Monents_Too_Bar_View_6") imageName:@"share_qq_normal" disableImageName:@"share_qq_disable"]; - YUMIParaticipationProvision *qqzone = [YUMIParaticipationProvision itemWitCouple:XPShareItemTagQQZone title:YMLocalizedString(@"YUMI_Monents_Too_Bar_View_7") imageName:@"share_qqzone_normal" disableImageName:@"share_qqzone_disable"]; - NSArray * items = @[wechat,cycle, qq, qqzone]; - CGFloat margin = 15; - CGSize itemSize = CGSizeMake((KScreenWidth-2*margin)/4, 65); - YUMIParaticipationAbstractMatrix * shareInfo = [[YUMIParaticipationAbstractMatrix alloc] init]; - NSString * title= self.monentsInfo.nick; - if (self.monentsInfo.nick.length > 6) { - title = [title substringToIndex:6]; - } - shareInfo.nick = title; - shareInfo.content = self.monentsInfo.content; - shareInfo.imageUrl = self.monentsInfo.avatar; - shareInfo.shareTitle = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Monents_Too_Bar_View_8"), title]; - shareInfo.shareContent = self.monentsInfo.content; - shareInfo.shareImageUrl = self.monentsInfo.avatar; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString *urlStr = [NSString stringWithFormat:@"%@/%@?uid=%@&dynamicId=%@&worldId=%ld",API_HOST_URL, URLWithType(kMonentsShareURL), uid, self.monentsInfo.dynamicId, self.monentsInfo.worldId]; - shareInfo.shareUrl = urlStr; - shareInfo.dynamicId = self.monentsInfo.dynamicId; - shareInfo.uid = self.monentsInfo.uid; - shareInfo.worldId = [NSString stringWithFormat:@"%ld", self.monentsInfo.worldId]; - YUMIParaticipationRegard *partowardsiciptowardsionRegard = [[YUMIParaticipationRegard alloc] initWithItems:items itemSize:itemSize shareInfo:shareInfo]; - partowardsiciptowardsionRegard.delegate = self; - [MKJPopup popupRegard:partowardsiciptowardsionRegard style:MKJPopupStyleActionSheet]; -} - -#pragma mark - #pragma mark - XCShareRegardRepresendtation -- (void)partowardsiciptowardsionRegard:(YUMIParaticipationRegard *)partowardsiciptowardsionRegard shareFail:(NSString *)message { - [MKJPopup dismiss]; - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:message]; -} - -- (void)partowardsiciptowardsionRegard:(YUMIParaticipationRegard *)partowardsiciptowardsionRegard didSuccess:(YUMIParaticipationAbstractMatrix *)shareInfo{ - [Api consumerPartowardsiciptowardsionSepartowardsions:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - - } dynamicId:shareInfo.dynamicId uid:shareInfo.uid worldId:shareInfo.worldId shareUid:[AccountAbstractStorage instance].acquireCid]; - [MKJPopup dismiss]; -} - -- (void)partowardsiciptowardsionRegardDidTicktackRevoctowardsion:(YUMIParaticipationRegard *)partowardsiciptowardsionRegard { - [MKJPopup dismiss]; -} - -#pragma mark - Getters And Setters -- (void)setMonentsInfo:(SeparationsAbstractMatrix *)monentsInfo { - _monentsInfo = monentsInfo; - if (_monentsInfo) { - self.likeBtuton.selected = _monentsInfo.isLike; - self.likeSequencignation.text = _monentsInfo.likeCount.length > 0 ? _monentsInfo.likeCount : @"0"; - self.judgementSequencignation.text = _monentsInfo.commentCount.length > 0 ? _monentsInfo.commentCount : @"0"; - } -} - -- (UIView *)likeRegard { - if (!_likeRegard) { - _likeRegard = [[UIView alloc] init]; - _likeRegard.backgroundColor = [UIColor clearColor]; - } - return _likeRegard; -} - -- (UIButton *)likeBtuton { - if (!_likeBtuton) { - _likeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_likeBtuton setImage:[UIImage imageNamed:@"yumi_monents_gen_like_count_normal"] forState:UIControlStateNormal]; - [_likeBtuton setImage:[UIImage imageNamed:@"yumi_monents_gen_like_count_select"] forState:UIControlStateSelected]; - [_likeBtuton addTarget:self action:@selector(similarBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _likeBtuton; -} - -- (UILabel *)likeSequencignation { - if (!_likeSequencignation) { - _likeSequencignation = [[UILabel alloc] init]; - _likeSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _likeSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _likeSequencignation; -} - - -- (UIView *)judgementRegard { - if (!_judgementRegard) { - _judgementRegard = [[UIView alloc] init]; - _judgementRegard.backgroundColor = [UIColor clearColor]; - } - return _judgementRegard; -} - -- (UIButton *)judgementBtuton { - if (!_judgementBtuton) { - _judgementBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_judgementBtuton setImage:[UIImage imageNamed:@"yumi_monents_gen_comment_count"] forState:UIControlStateNormal]; - [_judgementBtuton setImage:[UIImage imageNamed:@"yumi_monents_gen_comment_count"] forState:UIControlStateSelected]; - [_judgementBtuton addTarget:self action:@selector(commonBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _judgementBtuton; -} - -- (UILabel *)judgementSequencignation { - if (!_judgementSequencignation) { - _judgementSequencignation = [[UILabel alloc] init]; - _judgementSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _judgementSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _judgementSequencignation; -} - -- (UIButton *)reportBtuton { - if (!_reportBtuton) { - _reportBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_reportBtuton setImage:[UIImage imageNamed:@"yumi_monents_gen_like_report"] forState:UIControlStateNormal]; - [_reportBtuton setImage:[UIImage imageNamed:@"yumi_monents_gen_like_report"] forState:UIControlStateSelected]; - [_reportBtuton addTarget:self action:@selector(respondBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _reportBtuton; -} - -- (UIButton *)shareBtuton { - if (!_shareBtuton) { - _shareBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_shareBtuton setImage:[UIImage imageNamed:@"yumi_monents_gen_like_share"] forState:UIControlStateNormal]; - [_shareBtuton setImage:[UIImage imageNamed:@"yumi_monents_gen_like_share"] forState:UIControlStateSelected]; - _shareBtuton.hidden = YES; - [_shareBtuton addTarget:self action:@selector(partowardsiciptowardsionBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _shareBtuton; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _burlywoodRegard; -} - -@end diff --git a/YuMi/Modules/YMMonents/View/SubViews/YUMISepartionMotifRegard.h b/YuMi/Modules/YMMonents/View/SubViews/YUMISepartionMotifRegard.h deleted file mode 100644 index 5300fe73..00000000 --- a/YuMi/Modules/YMMonents/View/SubViews/YUMISepartionMotifRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMoentsTopicView.h -// YUMI -// -// Created by YUMI on 2022/5/12. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class SeparationsAbstractMatrix; -@interface YUMISepartionMotifRegard : UIView -@property (nonatomic,strong) SeparationsAbstractMatrix *monentsInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/SubViews/YUMISepartionMotifRegard.m b/YuMi/Modules/YMMonents/View/SubViews/YUMISepartionMotifRegard.m deleted file mode 100644 index 30522afe..00000000 --- a/YuMi/Modules/YMMonents/View/SubViews/YUMISepartionMotifRegard.m +++ /dev/null @@ -1,126 +0,0 @@ -// -// YMMoentsTopicView.m -// YUMI -// -// Created by YUMI on 2022/5/12. -// - -#import "YUMISepartionMotifRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "NSString+Utils.h" -#import "SeparationsAbstractMatrix.h" - -@interface YUMISepartionMotifRegard () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UIImageView *motifIndicateRegard; -@property (nonatomic,strong) UIImageView *figureIndicateRegard; -@property (nonatomic,strong) UILabel *motifSequencignation; -@property (nonatomic,strong) UILabel *intratemporalSequencignation; -@end - -@implementation YUMISepartionMotifRegard -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.stackView]; - [self.stackView addArrangedSubview:self.motifIndicateRegard]; - [self.stackView addArrangedSubview:self.intratemporalSequencignation]; - - [self.motifIndicateRegard addSubview:self.figureIndicateRegard]; - [self.motifIndicateRegard addSubview:self.motifSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.motifIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.motifSequencignation.mas_right).offset(9); - }]; - - [self.figureIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.motifIndicateRegard).offset(9); - make.size.mas_equalTo(CGSizeMake(20, 20)); - make.centerY.mas_equalTo(self.motifIndicateRegard); - }]; - - [self.motifSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.figureIndicateRegard.mas_right).offset(4); - make.centerY.mas_equalTo(self.motifIndicateRegard); - }]; -} -#pragma mark - Getters And Setters -- (void)setMonentsInfo:(SeparationsAbstractMatrix *)monentsInfo { - _monentsInfo = monentsInfo; - if (_monentsInfo) { - if (_monentsInfo.worldId > 0) { - self.motifIndicateRegard.hidden = NO; - self.motifSequencignation.text = _monentsInfo.worldName; - } else { - self.motifIndicateRegard.hidden = YES; - } - self.intratemporalSequencignation.text = [NSString sttriAboutIntrtowardsemporalStamp:_monentsInfo.publishTime]; - } -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 8; - } - return _stackView; -} - -- (UIImageView *)motifIndicateRegard { - if (!_motifIndicateRegard) { - _motifIndicateRegard = [[UIImageView alloc] init]; - _motifIndicateRegard.userInteractionEnabled = YES; - _motifIndicateRegard.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFFFCDD), UIColorFromRGB(0xDFF9FF), UIColorFromRGB(0xF4E5FF)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)]; - _motifIndicateRegard.layer.masksToBounds = YES; - _motifIndicateRegard.layer.cornerRadius = 8; - } - return _motifIndicateRegard; -} - -- (UIImageView *)figureIndicateRegard { - if (!_figureIndicateRegard) { - _figureIndicateRegard = [[UIImageView alloc] init]; - _figureIndicateRegard.userInteractionEnabled = YES; - _figureIndicateRegard.image = [UIImage imageNamed:@"yumi_monents_gen_topimage_pic"]; - } - return _figureIndicateRegard; -} - -- (UILabel *)motifSequencignation { - if (!_motifSequencignation) { - _motifSequencignation = [[UILabel alloc] init]; - _motifSequencignation.font = [UIFont systemFontOfSize:10 weight:UIFontWeightBold]; - _motifSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _motifSequencignation; -} - -- (UILabel *)intratemporalSequencignation { - if (!_intratemporalSequencignation) { - _intratemporalSequencignation = [[UILabel alloc] init]; - _intratemporalSequencignation.font = [UIFont systemFontOfSize:10]; - _intratemporalSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - } - return _intratemporalSequencignation; -} - -@end diff --git a/YuMi/Modules/YMMonents/View/SubViews/YUMISepartionMotifStatementRegard.h b/YuMi/Modules/YMMonents/View/SubViews/YUMISepartionMotifStatementRegard.h deleted file mode 100644 index 78f1fdc5..00000000 --- a/YuMi/Modules/YMMonents/View/SubViews/YUMISepartionMotifStatementRegard.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMMoentsTopicListView.h -// YUMI -// -// Created by YUMI on 2022/8/16. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMISepartionMotifStatementRegard, SeparationsMotifMatrix; -@protocol FBCMoentsMotifStatementRegardRepresendtation - -- (void)yUMIMoentsMotifSttowardsementRegard:(YUMISepartionMotifStatementRegard *)view didSelectItem:(SeparationsMotifMatrix *)motifAbstract; - -@end -@interface YUMISepartionMotifStatementRegard : UIView -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/SubViews/YUMISepartionMotifStatementRegard.m b/YuMi/Modules/YMMonents/View/SubViews/YUMISepartionMotifStatementRegard.m deleted file mode 100644 index 1d29ec51..00000000 --- a/YuMi/Modules/YMMonents/View/SubViews/YUMISepartionMotifStatementRegard.m +++ /dev/null @@ -1,256 +0,0 @@ -// -// YMMoentsTopicListView.m -// YUMI -// -// Created by YUMI on 2022/8/16. -// - -#import "YUMISepartionMotifStatementRegard.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "Api+Monents.h" -#import "NetIndicateRegard.h" -#import "XNDJTBWGLoadingTool.h" -#import "AccountAbstractStorage.h" -#import "SeparationsMotifMatrix.h" -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" - -@interface YUMISepartionMotifStatementTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *constituteSequencignation; -@property (nonatomic,strong) UILabel *sequencSequencignation; -@property (nonatomic,strong) SeparationsMotifMatrix *motifAbstract; -@end - -@implementation YUMISepartionMotifStatementTabulationRegardElement -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = UIColor.clearColor; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.constituteSequencignation]; - [self.contentView addSubview:self.sequencSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(10); - make.centerY.mas_equalTo(self.contentView); - make.width.mas_equalTo(100); - make.height.mas_equalTo(60); - }]; - - [self.constituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(-2); - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(10); - make.right.mas_equalTo(-20); - }]; - - [self.sequencSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(2); - make.left.right.mas_equalTo(self.constituteSequencignation); - }]; -} - -#pragma mark - Getters And Setters -- (void)setMotifAbstract:(SeparationsMotifMatrix *)motifAbstract { - _motifAbstract= motifAbstract; - if (_motifAbstract) { - self.intelligenceportraitIndicateRegard.imageUrl = _motifAbstract.icon; - self.constituteSequencignation.text = _motifAbstract.worldName; - self.sequencSequencignation.text = _motifAbstract.desc; - } -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 12; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)constituteSequencignation { - if (_constituteSequencignation == nil) { - _constituteSequencignation = [[UILabel alloc] init]; - _constituteSequencignation.font = [UIFont systemFontOfSize:15]; - _constituteSequencignation.textColor = DJDKMIMOMColor.mainEssayPrettify; - } - return _constituteSequencignation; -} - -- (UILabel *)sequencSequencignation { - if (_sequencSequencignation == nil) { - _sequencSequencignation = [[UILabel alloc] init]; - _sequencSequencignation.font = [UIFont systemFontOfSize:12]; - _sequencSequencignation.textColor = DJDKMIMOMColor.instantEssayPrettify; - _sequencSequencignation.numberOfLines = 2; - } - return _sequencSequencignation; -} - -@end - - -@interface YUMISepartionMotifStatementRegard () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,assign) int page; -@end - -@implementation YUMISepartionMotifStatementRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initIntelligencerGrantedTerminalerRrfresh]; - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - - [self intelligenceerRenovtowardseh]; -} - -- (void)intelligenceerRenovtowardseh { - self.page = 1; - NSString * pageStr = [NSString stringWithFormat:@"%d", self.page]; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api separtowardsionsMotifSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - [self.tableView.mj_header endRefreshing]; - if (code == 200) { - [self.datasource removeAllObjects]; - NSArray * array = [SeparationsMotifMatrix mtowardsrixsAboutGarment:data.data]; - [self.datasource addObjectsFromArray:array]; - [self.tableView reloadData]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } uid:uid type:@"0" page:pageStr]; -} - -- (void)footerRenovtowardseh { - self.page++; - NSString * pageStr = [NSString stringWithFormat:@"%d", self.page]; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api separtowardsionsMotifSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - [self.tableView.mj_footer endRefreshing]; - if (code == 200) { - NSArray * array = [SeparationsMotifMatrix mtowardsrixsAboutGarment:data.data]; - if (array.count > 0) { - [self.datasource addObjectsFromArray:array]; - [self.tableView reloadData]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Moents_Topic_List_View_0")]; - } - - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } uid:uid type:@"0" page:pageStr]; -} - - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor whiteColor]; - self.layer.masksToBounds = YES; - self.layer.cornerRadius = 10; - [self addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(KScreenWidth, 450)); - }]; - - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self); - make.top.mas_equalTo(self).offset(10); - }]; -} - - - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - YUMISepartionMotifStatementTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMISepartionMotifStatementTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMISepartionMotifStatementTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMISepartionMotifStatementTabulationRegardElement class])]; - } - cell.motifAbstract = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 80; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.datasource.count > 0) { - SeparationsMotifMatrix * infor = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIMoentsMotifSttowardsementRegard:didSelectItem:)]) { - [self.delegate yUMIMoentsMotifSttowardsementRegard:self didSelectItem:infor]; - } - } -} - -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMISepartionMotifStatementTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMISepartionMotifStatementTabulationRegardElement class])]; - } - return _tableView; -} - - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - -@end diff --git a/YuMi/Modules/YMMonents/View/XPMoentsTopicListViewController.h b/YuMi/Modules/YMMonents/View/XPMoentsTopicListViewController.h new file mode 100644 index 00000000..398a417c --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMoentsTopicListViewController.h @@ -0,0 +1,16 @@ +// +// YMMoentsTopicListViewController.h +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMoentsTopicListViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/XPMoentsTopicListViewController.m b/YuMi/Modules/YMMonents/View/XPMoentsTopicListViewController.m new file mode 100644 index 00000000..116007c1 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMoentsTopicListViewController.m @@ -0,0 +1,166 @@ +// +// YMMoentsTopicListViewController.m +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import "XPMoentsTopicListViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NSArray+Safe.h" +///Model +#import "MonentsTopicModel.h" +///View +#import "XPMonentTopicContainerViewController.h" +///P +#import "XPMonentsTopicListPresenter.h" +#import "XPMonentsTopicListProtocol.h" + +@interface XPMoentsTopicListViewController () +@property (nonatomic,strong) UITableView *tableView; +@property (nonatomic,strong) NSMutableArray *datasource; +@property (nonatomic,assign) int page; +@end + +@implementation XPMoentsTopicListViewController + +- (__kindof id)createPresenter { + return [[XPMonentsTopicListPresenter alloc] init]; +} + + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initHeaderAndFooterRrfresh]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; + + [self headerRefresh]; +} + +- (void)headerRefresh { + self.page = 1; + [self.presenter getMoentsTopicList:self.page pageSize:20 state:0]; +} + +- (void)footerRefresh { + self.page++; + [self.presenter getMoentsTopicList:self.page pageSize:20 state:1]; +} + + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMoentsTopicListViewController0"); + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 50; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([UITableViewCell class])]; + if (cell == nil) { + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([UITableViewCell class])]; + } + MonentsTopicModel * topicModel = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.textLabel.text = [NSString stringWithFormat:@"#%@", topicModel.name]; + cell.textLabel.textColor = [DJDKMIMOMColor mainTextColor]; + cell.textLabel.font = [UIFont systemFontOfSize:13]; + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + MonentsTopicModel * topicModel = [self.datasource safeObjectAtIndex1:indexPath.row]; + XPMonentTopicContainerViewController * topicVC = [[XPMonentTopicContainerViewController alloc] init]; + topicVC.worldId = topicModel.tId; + [self.navigationController pushViewController:topicVC animated:YES]; + } +} + +#pragma mark - XPMonentsTopicListProtocol +- (void)getMonentsTopicListSuccess:(NSArray *)list state:(int)state { + if (state == 0) { + [self.tableView.mj_header endRefreshing]; + [self.datasource removeAllObjects]; + } else { + if (list.count <= 0) { + [self showErrorToast:YMLocalizedString(@"XPMoentsTopicListViewController1")]; + } + [self.tableView.mj_footer endRefreshing]; + } + + if (list.count > 0) { + [self.datasource addObjectsFromArray:list]; + } + + [self.tableView reloadData]; +} + +- (void)getMoentsTopicFail:(NSString *)message state:(int)state { + if (state == 0) { + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } +} + +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:NSStringFromClass([UITableViewCell class])]; + } + return _tableView; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + + + +@end diff --git a/YuMi/Modules/YMMonents/View/XPMomentListViewController.h b/YuMi/Modules/YMMonents/View/XPMomentListViewController.h new file mode 100644 index 00000000..a8918047 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMomentListViewController.h @@ -0,0 +1,16 @@ +// +// YMMomentListViewController.h +// YUMI +// +// Created by XY on 2023/2/16. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMomentListViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/XPMomentListViewController.m b/YuMi/Modules/YMMonents/View/XPMomentListViewController.m new file mode 100644 index 00000000..8bec3cb4 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMomentListViewController.m @@ -0,0 +1,282 @@ +// +// YMMomentListViewController.m +// YUMI +// +// Created by XY on 2023/2/16. +// + +#import "XPMomentListViewController.h" +#import "YUMIMacroUitls.h" +#import +#import +#import "DJDKMIMOMColor.h" +#import "NSArray+Safe.h" +#import "ClientConfig.h" + +#import "MonentsListInfoModel.h" + +#import "XPMomentListCollectionViewCell.h" +#import "XPButton.h" + +#import "XPMonentsLatestPresenter.h" +#import "XPMonentsLatestProtocol.h" + +#import "XPMonentsDetailViewController.h" +#import "XPMonentsPublishViewController.h" +#import "XPMomentsSimpleDetailViewController.h" + +@interface XPMomentListViewController () + +@property (nonatomic, strong) UICollectionView *collectionView; + +/// 自定义导航栏 +@property (nonatomic, strong) UIView *customNav; +@property (nonatomic, strong) UILabel *titleLabel; +/// 发布 +@property (nonatomic, strong) XPButton *publishBtn; + +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +///当前的页数 +@property (nonatomic,assign) NSInteger page; +///是否有更多的数据 +@property (nonatomic,assign) BOOL hasNoMoreData; +///数据信息 +@property (nonatomic,strong) MonentsListInfoModel *listInfo; + +@end + +@implementation XPMomentListViewController + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (__kindof id)createPresenter { + return [[XPMonentsLatestPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self createUI]; + + [self initHeaderAndFooterRrfresh]; +} + +- (void)createUI { + [self.view addSubview:self.customNav]; + [self.customNav addSubview:self.titleLabel]; + [self.view addSubview:self.collectionView]; + [self.view addSubview:self.publishBtn]; + + [self.customNav mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kStatusBarHeight); + make.left.right.mas_equalTo(0); + make.height.mas_equalTo(44); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.customNav); + }]; + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.customNav.mas_bottom); + make.left.right.mas_equalTo(0); + make.bottom.mas_equalTo(0); + }]; + [self.publishBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(-108); + make.right.mas_equalTo(0); + make.width.height.mas_equalTo(70); + }]; +} + +/// 发布 +- (void)publishBtnAction { + XPMonentsPublishViewController * publishVC = [[XPMonentsPublishViewController alloc] init]; + [self.navigationController pushViewController:publishVC animated:YES]; +} + +#pragma mark - 下拉刷新 +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.collectionView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + footer.ignoredScrollViewContentInsetBottom = self.collectionView.contentInset.bottom; + self.collectionView.mj_footer = footer; + + [self headerRefresh]; +} + +#pragma mark - 刷新的fangfa +- (void)headerRefresh { + self.page = 1; + [self.presenter getMonentsLatestListPageSize:20 dynamicId:@"" state:0]; +} + +- (void)footerRefresh { + if (self.hasNoMoreData) { + [self showErrorToast:YMLocalizedString(@"XPMomentListViewController0")]; + [self.collectionView.mj_footer endRefreshing]; + return; + } + self.page++; + [self.presenter getMonentsLatestListPageSize:20 dynamicId:self.listInfo.nextDynamicId state:1]; +} + +#pragma mark - XPMonentsLatestProtocol +- (void)getMonentsLatestListSuccess:(MonentsListInfoModel *)listInfo state:(int)state{ + self.listInfo = listInfo; + if (state == 0) { + [self.datasource removeAllObjects]; + } + if (listInfo.dynamicList.count > 0) { + [self.datasource addObjectsFromArray:listInfo.dynamicList]; + } + + if (state == 0) { + self.hasNoMoreData = NO; + [self.collectionView.mj_header endRefreshing]; + } else { + if (listInfo.dynamicList.count > 0) { + self.hasNoMoreData = NO; + } else { + self.hasNoMoreData = YES; + } + [self.collectionView.mj_footer endRefreshing]; + } + [self.collectionView reloadData]; +} + +- (void)getMonentsLatestListFail:(NSString *)msg state:(int)state { + if (state == 0) { + [self.collectionView.mj_header endRefreshing]; + } else { + [self.collectionView.mj_footer endRefreshing]; + } +} + +#pragma mark - XPMonentsDetailViewControllerDelegate +- (void)xPMonentsDetailViewController:(XPMonentsDetailViewController *)view deleteMonents:(NSString *)dynamicId { + __block MonentsInfoModel * deleteInfo; + [self.datasource enumerateObjectsUsingBlock:^(MonentsInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.dynamicId.integerValue == dynamicId.integerValue) { + deleteInfo = obj; + } + }]; + + if (deleteInfo) { + [self.datasource removeObject:deleteInfo]; + [self.collectionView reloadData]; + } +} + +#pragma mark - UICollectionView + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPMomentListCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass(XPMomentListCollectionViewCell.self) forIndexPath:indexPath]; + MonentsInfoModel * monentsInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.monentsInfo = monentsInfo; + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + + if ([ClientConfig shareConfig].canOpen) { + XPMomentsSimpleDetailViewController *detailVC = [[XPMomentsSimpleDetailViewController alloc] init]; + MonentsInfoModel * monentsInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + detailVC.monentsInfo = monentsInfo; + detailVC.delegate = self; + [self.navigationController pushViewController:detailVC animated:YES]; + }else{ + XPMomentsSimpleDetailViewController * detailVC = [[XPMomentsSimpleDetailViewController alloc] init]; + MonentsInfoModel * monentsInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + detailVC.monentsInfo = monentsInfo; + detailVC.delegate = self; + [self.navigationController pushViewController:detailVC animated:YES]; + } + } +} + +#pragma mark - 懒加载 + +- (UICollectionView *)collectionView { + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.scrollDirection = UICollectionViewScrollDirectionVertical; + CGFloat width = (KScreenWidth - 16 -13 -16)/2.0; + CGFloat height = 220.0/165.0*width; + layout.itemSize = CGSizeMake(width, height); + layout.minimumLineSpacing = 12.0; + layout.minimumInteritemSpacing = 13.0; + layout.sectionInset = UIEdgeInsetsMake(12, 16, 12, 16); + + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.backgroundColor = UIColor.clearColor; + _collectionView.alwaysBounceVertical = YES; + [_collectionView registerClass:[XPMomentListCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass(XPMomentListCollectionViewCell.self)]; + _collectionView.delegate = self; + _collectionView.dataSource = self; + _collectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + + _collectionView.contentInset = UIEdgeInsetsMake(0, 0, 100, 0); + + } + return _collectionView; +} + +- (XPButton *)publishBtn { + if (!_publishBtn) { + _publishBtn = [XPButton buttonWithType:UIButtonTypeCustom]; + _publishBtn.backgroundColor = UIColorFromRGB(0x0C1430); + [_publishBtn setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; + _publishBtn.titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + [_publishBtn setTitle:YMLocalizedString(@"XPMomentListViewController1") forState:UIControlStateNormal]; + [_publishBtn setImage:[UIImage imageNamed:@"moment_camera"] forState:UIControlStateNormal]; + [_publishBtn addTarget:self action:@selector(publishBtnAction) forControlEvents:UIControlEventTouchUpInside]; + _publishBtn.layer.cornerRadius = 70/2; + _publishBtn.clipsToBounds = YES; + _publishBtn.buttonStyle = XPButtonImageTop; + _publishBtn.padding = 4; + } + return _publishBtn; +} + +- (UIView *)customNav { + if (!_customNav) { + _customNav = [[UIView alloc] init]; + _customNav.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; + } + return _customNav; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPMomentListViewController2"); + _titleLabel.backgroundColor = [UIColor clearColor]; + _titleLabel.font = [UIFont systemFontOfSize:18.f weight:UIFontWeightMedium]; + _titleLabel.textColor = DJDKMIMOMColor.mainTextColor; + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + +@end diff --git a/YuMi/Modules/YMMonents/View/XPMomentsSimpleDetailNav.h b/YuMi/Modules/YMMonents/View/XPMomentsSimpleDetailNav.h new file mode 100644 index 00000000..9be27aca --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMomentsSimpleDetailNav.h @@ -0,0 +1,31 @@ +// +// YMMomentsSimpleDetailNav.h +// YUMI +// +// Created by XY on 2023/2/22. +// + +#import + +@class MonentsInfoModel; +NS_ASSUME_NONNULL_BEGIN + +@protocol XPMomentsSimpleDetailNavDelegate +/// 点击了返回 +- (void)momentsSimpleDetailNavBackAction; +/// 点击了头像 +- (void)momentsSimpleDetailNavAvatarAction; +/// 点击了更多 +- (void)momentsSimpleDetailNavMoreAction; + +@end + +@interface XPMomentsSimpleDetailNav : UIView + +@property (strong, nonatomic) MonentsInfoModel *infoModel; + +@property (nonatomic, weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/XPMomentsSimpleDetailNav.m b/YuMi/Modules/YMMonents/View/XPMomentsSimpleDetailNav.m new file mode 100644 index 00000000..8c608bf4 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMomentsSimpleDetailNav.m @@ -0,0 +1,160 @@ +// +// YMMomentsSimpleDetailNav.m +// YUMI +// +// Created by XY on 2023/2/22. +// + +#import "XPMomentsSimpleDetailNav.h" +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" +#import +#import "MonentsInfoModel.h" + +@interface XPMomentsSimpleDetailNav() +/// 返回 +@property (nonatomic, strong) UIButton *backBtn; +/// 头像 +@property (nonatomic, strong) NetImageView *avatarImageView; +/// 昵称 +@property (nonatomic, strong) UILabel *nicknameLabel; +/// ID +@property (nonatomic, strong) UILabel *idLabel; +/// 更多 +@property (nonatomic, strong) UIButton *moreBtn; + +@end + +@implementation XPMomentsSimpleDetailNav + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + self.backgroundColor = UIColor.whiteColor; + [self createUI]; + } + return self; +} + +- (void)createUI { + [self addSubview:self.backBtn]; + [self addSubview:self.avatarImageView]; + [self addSubview:self.nicknameLabel]; + [self addSubview:self.idLabel]; + [self addSubview:self.moreBtn]; + + [self.backBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(0); + make.centerY.mas_equalTo(self); + make.width.height.mas_equalTo(44); + }]; + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backBtn.mas_right); + make.centerY.mas_equalTo(self); + make.width.height.mas_equalTo(30); + }]; + [self.nicknameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.avatarImageView); + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(7); + make.right.lessThanOrEqualTo(self.moreBtn.mas_left).offset(-10); + }]; + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.avatarImageView); + make.left.mas_equalTo(self.nicknameLabel); + make.right.lessThanOrEqualTo(self.moreBtn.mas_left).offset(-10); + }]; + [self.moreBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-8); + make.centerY.mas_equalTo(self); + make.width.height.mas_equalTo(44); + }]; +} + +- (void)setInfoModel:(MonentsInfoModel *)infoModel { + _infoModel = infoModel; + if (_infoModel) { + self.avatarImageView.imageUrl = infoModel.avatar; + NSString * nick = infoModel.nick; + self.nicknameLabel.text = nick.length > 0 ? nick : @""; + self.idLabel.text = [NSString stringWithFormat:@"ID:%@",infoModel.uid]; + } +} + +#pragma mark - Action +/// 返回 +- (void)backBtnAction { + if (self.delegate && [self.delegate respondsToSelector:@selector(momentsSimpleDetailNavBackAction)]) { + [self.delegate momentsSimpleDetailNavBackAction]; + } +} + +/// 点击头像 +- (void)didTapAvatarGuest { + if (self.delegate && [self.delegate respondsToSelector:@selector(momentsSimpleDetailNavAvatarAction)]) { + [self.delegate momentsSimpleDetailNavAvatarAction]; + } +} + +/// 点击更多 +- (void)moreBtnAction { + if (self.delegate && [self.delegate respondsToSelector:@selector(momentsSimpleDetailNavMoreAction)]) { + [self.delegate momentsSimpleDetailNavMoreAction]; + } +} + +#pragma mark - 懒加载 + +- (UIButton *)backBtn { + if (!_backBtn) { + _backBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_backBtn setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateNormal]; + [_backBtn addTarget:self action:@selector(backBtnAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _backBtn; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserIcon; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.userInteractionEnabled = YES; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 30/2; + _avatarImageView.contentMode = UIViewContentModeScaleAspectFill; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapAvatarGuest)]; + [_avatarImageView addGestureRecognizer:tap]; + } + return _avatarImageView; +} + +- (UILabel *)nicknameLabel { + if (!_nicknameLabel) { + _nicknameLabel = [[UILabel alloc] init]; + _nicknameLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _nicknameLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + } + return _nicknameLabel; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.textColor = [DJDKMIMOMColor textThirdColor]; + _idLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightRegular]; + } + return _idLabel; +} + +- (UIButton *)moreBtn { + if (!_moreBtn) { + _moreBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_moreBtn setImage:[UIImage imageNamed:@"monents_info_like_report"] forState:UIControlStateNormal]; + [_moreBtn addTarget:self action:@selector(moreBtnAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _moreBtn; +} + + +@end diff --git a/YuMi/Modules/YMMonents/View/XPMomentsSimpleDetailViewController.h b/YuMi/Modules/YMMonents/View/XPMomentsSimpleDetailViewController.h new file mode 100644 index 00000000..27613869 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMomentsSimpleDetailViewController.h @@ -0,0 +1,23 @@ +// +// YMMomentsSimpleDetailViewController.h +// YUMI +// +// Created by XY on 2023/2/22. +// + +#import "MvpViewController.h" +#import "XPMonentsDetailViewControllerDelegate.h" + +@class MonentsInfoModel; +NS_ASSUME_NONNULL_BEGIN + +@interface XPMomentsSimpleDetailViewController : MvpViewController + +@property (nonatomic,strong) MonentsInfoModel *monentsInfo; + +///代理 +@property (nonatomic,weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/XPMomentsSimpleDetailViewController.m b/YuMi/Modules/YMMonents/View/XPMomentsSimpleDetailViewController.m new file mode 100644 index 00000000..ee2f96cb --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMomentsSimpleDetailViewController.m @@ -0,0 +1,605 @@ +// +// YMMomentsSimpleDetailViewController.m +// YUMI +// +// Created by XY on 2023/2/22. +// + +#import "XPMomentsSimpleDetailViewController.h" + +///Third +#import +#import +///Tool +#import "XPMonentsLayoutConfig.h" +#import "DJDKMIMOMColor.h" +#import "QEmotionHelper.h" +#import "QKeyboardManager.h" +#import "TTPopup.h" +#import "NSArray+Safe.h" +#import "AccountInfoStorage.h" +#import "YUMIHtmlUrl.h" +#import "ClientConfig.h" +#import "XNDJTDDLoadingTool.h" +///Model +#import "MonentsInfoModel.h" +#import "MonentsCommentModel.h" +#import "MonentsCommentReplyModel.h" +///View +#import "XPMonentsTableViewCell.h" +#import "XPMonentsCommentTableViewCell.h" +#import "XPMonentsEmptyTableViewCell.h" +#import "QInputBarView.h" +#import "QKeyboardManager.h" +#import "QEmotionBoardView.h" +#import "XPMineUserInfoViewController.h" +#import "XPMineSimpleUserInfoViewController.h" +#import "XPMomentsSimpleDetailNav.h" +#import "XPWebViewController.h" +///P +#import "XPMonentDetailPresenter.h" +#import "XPMonentsDetailProtocol.h" + +@interface XPMomentsSimpleDetailViewController () + +///导航栏 +@property(nonatomic,strong) XPMomentsSimpleDetailNav *detailNav; +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +///头部view +@property (nonatomic,strong) UIView * sectionView; +///评论的个数 +@property (nonatomic,strong) UILabel *commentLabel; +@property (nonatomic,strong) UIButton *likeBtn; +@property(nonatomic,strong)QInputBarView *inputBarView; +@property(nonatomic,strong)QKeyboardManager *keyboardManager; +///当前选中的评论信息 +@property (nonatomic,strong) NSString *commentId; +@end + +@implementation XPMomentsSimpleDetailViewController + +- (__kindof id)createPresenter { + return [[XPMonentDetailPresenter alloc] init]; +} + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + self.view.backgroundColor = UIColor.whiteColor; + [self initHeaderAndFooterRrfresh]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - 下拉刷新 +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; + + [self headerRefresh]; +} + +- (void)headerRefresh { + [self.presenter getMonentsDetail:self.monentsInfo.dynamicId]; + [self.presenter getMonentsCommentList:self.monentsInfo.dynamicId timestamp:@"" status:0]; +} + +- (void)footerRefresh { + NSString *timestamp = @""; + if (self.datasource.count > 0) { + MonentsCommentModel * commentInfo = [self.datasource lastObject]; + timestamp = commentInfo.publishTime; + } + [self.presenter getMonentsCommentList:self.monentsInfo.dynamicId timestamp:timestamp status:1]; +} + + +#pragma mark - Private Method +- (void)initInputView { + // 初始化输入工具条,frame可以先这样临时设置,下面的addBottomInputBarView方法会重置输入条frame + // 如果你想要自定义输入条View,请参考TextFieldViewController代码 + _inputBarView = [[QInputBarView alloc] initWithFrame:CGRectMake(0,0,self.view.frame.size.width,UIInputBarViewMinHeight)]; + QInputBarViewConfiguration *inputBarViewConfiguration = [QInputBarViewConfiguration defaultInputBarViewConfiguration]; + inputBarViewConfiguration.voiceButtonHidden = YES;//隐藏语音按钮 + inputBarViewConfiguration.extendButtonHidden = YES;//隐藏拓展按钮 + + inputBarViewConfiguration.rightSendButton = self.likeBtn; + inputBarViewConfiguration.emotionButtonHidden = YES; + + [_inputBarView setupWithConfiguration:inputBarViewConfiguration]; + _inputBarView.delegate = self; + + //keyboard管理类,用来管理键盘,各大面板的切换 + _keyboardManager = [[QKeyboardManager alloc] initWithViewController:self]; + _keyboardManager.dataSource = self; + //因为addBottomInputBarView方法会立刻触发delegate,所以这里需要先设置delegate + _keyboardManager.delegate = self; + [_keyboardManager addBottomInputBarView:_inputBarView belowViewController:NO]; + + //把输入框(如果有的话)绑定给管理类 + [_keyboardManager bindTextView:_inputBarView.inputTextView]; + + _inputBarView.inputTextView.placeholder = YMLocalizedString(@"XPMomentsSimpleDetailViewController0"); + _inputBarView.inputTextView.font = [UIFont systemFontOfSize:12]; + + +} + +- (void)sendTextMessage:(NSString *)inputText { + if (inputText.length > 0) { + [_keyboardManager hideAllBoardView]; + if (self.commentId && self.commentId.length > 0) { + [self.presenter replayCommon:self.commentId dynamicId:self.monentsInfo.dynamicId content:inputText]; + } else { + [self.presenter commontMonents:self.monentsInfo.dynamicId content:inputText]; + } + self.inputBarView.inputTextView.text = nil; + } else { + [self showErrorToast:YMLocalizedString(@"XPMomentsSimpleDetailViewController1")]; + } +} + +- (void)initSubViews { + [self.view addSubview:self.detailNav]; + [self.view addSubview:self.tableView]; + [self.sectionView addSubview:self.commentLabel]; + [self initInputView]; +} + +- (void)initSubViewConstraints { + [self.detailNav mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kStatusBarHeight); + make.left.right.mas_equalTo(0); + make.height.mas_equalTo(44); + }]; + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.detailNav.mas_bottom); + make.left.right.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.inputBarView.mas_top); + }]; + + [self.commentLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.sectionView).offset(15); + make.top.mas_equalTo(6); + make.bottom.mas_equalTo(0); + }]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 2; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + if (section == 0) { + return 1; + } + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (indexPath.section == 0) { + [XPMonentsLayoutConfig layoutSimpleMonentsModel:self.monentsInfo]; + return self.monentsInfo.rowHeight+20; + } else if(indexPath.section == 1) { + if (self.datasource.count > 0) { + MonentsCommentModel * commentInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + return [XPMonentsLayoutConfig commentCommentRowHeight:commentInfo]; + } else { + return 400; + } + } + return 0; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { + if (section == 1) { + return 44; + } + return 0.0;; +} + +- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { + NSString *commentText = YMLocalizedString(@"XPMomentsSimpleDetailViewController2"); + NSMutableAttributedString *commentStr = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@%@",commentText,self.monentsInfo.commentCount]]; + [commentStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12 weight:UIFontWeightMedium] range:NSMakeRange(commentText.length, commentStr.length-commentText.length)]; + [commentStr addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor textThirdColor] range:NSMakeRange(commentText.length, commentStr.length-commentText.length)]; + self.commentLabel.attributedText = commentStr; + return self.sectionView; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { + return 0.0f; +} + +- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { + return [UIView new]; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (indexPath.section ==0) { + NSString *identifier = [NSString stringWithFormat:@"%@_Simple",NSStringFromClass([XPMonentsTableViewCell class])]; + XPMonentsTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:identifier]; + cell.delegate = self; + cell.monentsInfo = self.monentsInfo; + return cell; + } else { + if (self.datasource.count > 0) { + XPMonentsCommentTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMonentsCommentTableViewCell class])]; + cell.commentInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.delegate = self; + return cell; + } else { + XPMonentsEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMonentsEmptyTableViewCell class])]; + return cell; + } + } +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (indexPath.section == 1) { + if (self.datasource.count > 0) { + MonentsCommentModel* monent = [self.datasource safeObjectAtIndex1:indexPath.row]; + self.commentId = monent.commentId; + self.inputBarView.inputTextView.placeholder = [NSString stringWithFormat:@"回复: %@", monent.nick]; + [self.inputBarView textViewBecomeFirstResponder]; + } + } +} + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + [_keyboardManager hideAllBoardView]; +} + +// 点赞 +- (void)likeBtnAction { + [self.presenter likeMonent:self.monentsInfo.dynamicId status:!self.monentsInfo.isLike likedUid:self.monentsInfo.uid worldId:[NSString stringWithFormat:@"%ld", self.monentsInfo.worldId]]; +} + +#pragma mark - XPMomentsSimpleDetailNavDelegate +/// 点击返回 +- (void)momentsSimpleDetailNavBackAction { + [self.navigationController popViewControllerAnimated:YES]; +} + +/// 点击头像 +- (void)momentsSimpleDetailNavAvatarAction { + if ([ClientConfig shareConfig].canOpen) { + XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init]; + userInfoVC.uid = self.monentsInfo.uid.integerValue; + [self.navigationController pushViewController:userInfoVC animated:YES]; + }else{ + XPMineSimpleUserInfoViewController * userInfoVC = [[XPMineSimpleUserInfoViewController alloc] init]; + userInfoVC.uid = self.monentsInfo.uid.integerValue; + [self.navigationController pushViewController:userInfoVC animated:YES]; + } +} + +/// 点击更多 +- (void)momentsSimpleDetailNavMoreAction { + TTActionSheetConfig *action; + if (self.monentsInfo.uid.integerValue == [AccountInfoStorage instance].getUid.integerValue) { + action = [TTActionSheetConfig normalTitle:YMLocalizedString(@"XPMomentsSimpleDetailViewController4") clickAction:^{ + [TTPopup alertWithMessage:@"删除后不可恢复\n确定删除该动态吗?" confirmHandler:^{ + [self.presenter deleteMonents:self.monentsInfo.dynamicId worldId:[NSString stringWithFormat:@"%ld", self.monentsInfo.worldId]]; + } cancelHandler:^{ + + }]; + }]; + } else { + action = [TTActionSheetConfig normalTitle:YMLocalizedString(@"XPMomentsSimpleDetailViewController6") clickAction:^{ + if ([ClientConfig shareConfig].canOpen) { + NSString * url= [NSString stringWithFormat:@"%@?reportUid=%@&source=%@", URLWithType(kReportRoomURL),self.monentsInfo.uid, @"WORLDDYNAMIC"]; + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + webVC.url = url; + [self.navigationController pushViewController:webVC animated:YES]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPMomentsSimpleDetailViewController7")]; + } + }]; + } + [TTPopup actionSheetWithItems:@[action]]; +} + +#pragma mark - XPMonentsCommentTableViewCellDelegate +- (void)xPMonentsCommentTableViewCell:(XPMonentsCommentTableViewCell *)view didClickMoreReply:(MonentsCommentModel *)commentInfo { + [self.presenter getMonentsCommentReplyList:self.monentsInfo.dynamicId commentId:commentInfo.commentId timestamp:commentInfo.replyInfo.nextTimestamp]; +} + +- (void)xPMonentsCommentTableViewCell:(XPMonentsCommentTableViewCell *)view didClickCommon:(MonentsReplyModel *)commentInfo { + if (commentInfo) { + self.commentId = commentInfo.replyId; + self.inputBarView.inputTextView.placeholder = [NSString stringWithFormat:@"回复: %@", commentInfo.nick]; + [self.inputBarView textViewBecomeFirstResponder]; + } +} +- (void)xPMonentsCommentTableViewCell:(XPMonentsCommentTableViewCell *)view didClickAvatar:(NSString *)commentInfo { + if ([ClientConfig shareConfig].canOpen) { + XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init]; + userInfoVC.uid = commentInfo.integerValue; + [self.navigationController pushViewController:userInfoVC animated:YES]; + }else{ + XPMineSimpleUserInfoViewController * userInfoVC = [[XPMineSimpleUserInfoViewController alloc] init]; + userInfoVC.uid = commentInfo.integerValue; + [self.navigationController pushViewController:userInfoVC animated:YES]; + } + +} +#pragma mark - XPMonentsTableViewCellDelegate +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClickLike:(MonentsInfoModel *)monentsInfo { + [self.presenter likeMonent:monentsInfo.dynamicId status:!monentsInfo.isLike likedUid:monentsInfo.uid worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; +} + +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClicDelete:(MonentsInfoModel *)monentsInfo { + [TTPopup alertWithMessage:@"删除后不可恢复\n确定删除该动态吗?" confirmHandler:^{ + [self.presenter deleteMonents:monentsInfo.dynamicId worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; + } cancelHandler:^{ + + }]; +} + +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClicCommon:(MonentsInfoModel *)monentsInfo { + if (monentsInfo) { + self.commentId = nil; + self.inputBarView.inputTextView.placeholder = YMLocalizedString(@"XPMomentsSimpleDetailViewController10"); + [self.inputBarView textViewBecomeFirstResponder]; + } +} + +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClicFold:(MonentsInfoModel *)monentsInfo { + self.monentsInfo = monentsInfo; + [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone]; +} + +#pragma mark - InputBoardDataSource +//@return 点加号按钮弹出的拓展面板View,且无需设置frame +- (UIView *)keyboardManagerExtendBoardView:(QKeyboardManager *)keyboardManager { + UIView *boardView = [UIView new]; + boardView.backgroundColor = UIColor.blueColor; + return boardView; +} + +//@return 点表情按钮弹出的表情面板View,且无需设置frame +- (UIView *)keyboardManagerEmotionBoardView:(QKeyboardManager *)keyboardManager { + QEmotionBoardView *emotionView = [[QEmotionBoardView alloc] init]; + QEmotionHelper *faceManager = [QEmotionHelper sharedEmotionHelper]; + emotionView.emotions = faceManager.emotionArray; + emotionView.delegate = self; + if (@available(iOS 11.0, *)) { + NSBundle *bundle = [NSBundle bundleForClass:[self class]]; + emotionView.backgroundColor = [UIColor colorNamed:@"q_input_extend_bg" inBundle:bundle compatibleWithTraitCollection:nil]; + } else { + emotionView.backgroundColor = [UIColor colorWithRed:(246)/255.0f green:(246)/255.0f blue:(246)/255.0f alpha:1]; + } + return emotionView; +} + +//@return 点表情按钮弹出的表情面板View的高度 +- (CGFloat)keyboardManagerEmotionBoardHeight:(QKeyboardManager *)keyboardManager { + return 294; +} + +//@return 点加号按钮弹出的拓展面板View的高度 +- (CGFloat)keyboardManagerExtendBoardHeight:(QKeyboardManager *)keyboardManager { + return 174; +} + +- (QInputBarViewConfiguration *)inputBarViewConfiguration { + //输入条配置,子类可以重写 + QInputBarViewConfiguration *inputBarViewConfiguration = [QInputBarViewConfiguration defaultInputBarViewConfiguration]; + inputBarViewConfiguration.voiceButtonHidden = YES;//隐藏语音按钮 + inputBarViewConfiguration.extendButtonHidden = YES;//隐藏拓展按钮 + return inputBarViewConfiguration; +} + +//点击表情按钮,切换到表情面板 +- (void)inputBarView:(QInputBarView *)inputBarView onEmotionButtonClick:(UIButton *)emotionSwitchButton { + if (emotionSwitchButton.isSelected) { + [_keyboardManager switchToEmotionBoardKeyboard]; + } else { + self.commentId = nil; + _inputBarView.inputTextView.placeholder = YMLocalizedString(@"XPMomentsSimpleDetailViewController11"); + [_inputBarView textViewBecomeFirstResponder]; + } +} + +#pragma mark - QEmotionBoardViewDelegate +/** + * 选中表情时的回调 + * @param index 被选中的表情在`emotions`里的索引 + * @param emotion 被选中的表情对应的`QMUIEmotion`对象 + */ +- (void)emotionView:(QEmotionBoardView *)emotionView didSelectEmotion:(QEmotion *)emotion atIndex:(NSInteger)index { + //把😊插入到输入栏 + [_inputBarView insertEmotion:emotion.displayName]; +} + +// 删除按钮的点击事件回调 +- (void)emotionViewDidSelectDeleteButton:(QEmotionBoardView *)emotionView { + if (![_inputBarView deleteEmotion]){ + //根据当前的光标,这次点击删除按钮并没有删除表情,那么就删除文字 + [_inputBarView.inputTextView deleteBackward]; + } +} + +// 发送按钮的点击事件回调 +- (void)emotionViewDidSelectSendButton:(QEmotionBoardView *)emotionView { + [self sendTextMessage:[_inputBarView textViewInputNormalText]]; +} + + +#pragma mark - +/** + * 点击了系统键盘的发送按钮 + * @param inputNormalText :"害~你好啊[微笑]" + */ +- (void)inputBarView:(QInputBarView *)inputBarView onKeyboardSendClick:(NSString *)inputNormalText { + [self sendTextMessage:inputNormalText]; +} + +#pragma mark - XPMonentsDetailProtocol +- (void)getMonentsDetailSuccess:(MonentsInfoModel *)commentInfo { + self.monentsInfo = commentInfo; + [self.likeBtn setTitle:self.monentsInfo.likeCount forState:UIControlStateNormal]; + self.likeBtn.selected = self.monentsInfo.isLike; + [self.tableView reloadData]; +} + +- (void)getMonentsCommentListSuccess:(MonentsCommentListModel *)commentInfo state:(int)state{ + if (state == 0) { + [self.datasource removeAllObjects]; + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } + + if (commentInfo.commentList.count > 0) { + [self.datasource addObjectsFromArray:commentInfo.commentList]; + } + [self.tableView reloadData]; +} + +- (void)getMonentsCommentReplyListSuccess:(MonentsCommentReplyModel *)replyInfo commentId:(nonnull NSString *)commentId { + if (commentId) { + __block MonentsCommentModel * commentInfo; + [self.datasource enumerateObjectsUsingBlock:^(MonentsCommentModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj.commentId isEqualToString:commentId]) { + commentInfo = obj; + *stop = YES; + } + }]; + + if (commentInfo) { + NSMutableArray * replyList= commentInfo.replyInfo.replyList.mutableCopy; + [replyList addObjectsFromArray:replyInfo.replyList]; + commentInfo.replyInfo.replyList = replyList.copy; + commentInfo.replyInfo.leftCount = replyInfo.leftCount; + commentInfo.replyInfo.nextTimestamp = replyInfo.nextTimestamp; + commentInfo.isReloadHeight = YES; + } + [self.tableView reloadData]; + } +} + +- (void)likeMonentsSuccess:(NSString *)dynamicId status:(BOOL)status { + if ([self.monentsInfo.dynamicId isEqualToString:dynamicId]) { + NSInteger count = self.monentsInfo.likeCount.integerValue; + self.monentsInfo.isLike = status; + if (status) { + count += 1; + } else { + count -= 1; + } + self.monentsInfo.likeCount = [NSString stringWithFormat:@"%ld", count]; + [self.likeBtn setTitle:self.monentsInfo.likeCount forState:UIControlStateNormal]; + self.likeBtn.selected = self.monentsInfo.isLike; + } +} + +- (void)replyMonentsSuccess { + [self.presenter getMonentsCommentList:self.monentsInfo.dynamicId timestamp:@"" status:0]; +} + +- (void)commonMonentsSuccess { + [self.presenter getMonentsCommentList:self.monentsInfo.dynamicId timestamp:@"" status:0]; +} + +- (void)deleteMonentsSuccess:(NSString *)monentsInfo { + [self showSuccessToast:YMLocalizedString(@"XPMomentsSimpleDetailViewController12")]; + [self.navigationController popViewControllerAnimated:YES]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMonentsDetailViewController:deleteMonents:)]) { + [self.delegate xPMonentsDetailViewController:self deleteMonents:self.monentsInfo.dynamicId]; + } +} + + +#pragma mark - Getters And Setters + +- (XPMomentsSimpleDetailNav *)detailNav { + if (!_detailNav) { + _detailNav = [[XPMomentsSimpleDetailNav alloc] init]; + _detailNav.delegate = self; + _detailNav.infoModel = self.monentsInfo; + } + return _detailNav; +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + NSString *identifier = [NSString stringWithFormat:@"%@_Simple",NSStringFromClass([XPMonentsTableViewCell class])]; + [_tableView registerClass:[XPMonentsTableViewCell class] forCellReuseIdentifier:identifier]; + [_tableView registerClass:[XPMonentsCommentTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMonentsCommentTableViewCell class])]; + [_tableView registerClass:[XPMonentsEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMonentsEmptyTableViewCell class])]; + } + return _tableView; +} + +- (UIView *)sectionView { + if (!_sectionView) { + _sectionView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 44)]; + _sectionView.backgroundColor = UIColorFromRGB(0xF6F7F9); + + UIView *whiteView = [[UIView alloc] initWithFrame:CGRectMake(0, 6, _sectionView.bounds.size.width, _sectionView.bounds.size.height-6)]; + whiteView.backgroundColor = UIColor.whiteColor; + [_sectionView addSubview:whiteView]; + } + return _sectionView; +} + +- (UILabel *)commentLabel { + if (!_commentLabel) { + _commentLabel = [[UILabel alloc] init]; + _commentLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + _commentLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _commentLabel; +} + +- (UIButton *)likeBtn { + if (!_likeBtn) { + _likeBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + _likeBtn.frame = CGRectMake(0, 0, 80, 36); + [_likeBtn setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateNormal]; + _likeBtn.titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; +// _likeBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; + [_likeBtn setImage:[UIImage imageNamed:@"monents_info_like_count_normal"] forState:UIControlStateNormal]; + [_likeBtn setImage:[UIImage imageNamed:@"monents_info_like_count_select"] forState:UIControlStateSelected]; + [_likeBtn addTarget:self action:@selector(likeBtnAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _likeBtn; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + +@end diff --git a/YuMi/Modules/YMMonents/View/XPMonentTopicContainerViewController.h b/YuMi/Modules/YMMonents/View/XPMonentTopicContainerViewController.h new file mode 100644 index 00000000..7f39c0bf --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMonentTopicContainerViewController.h @@ -0,0 +1,16 @@ +// +// YMMonentTopicContainerViewController.h +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import "BaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMonentTopicContainerViewController : BaseViewController +@property (nonatomic,copy) NSString *worldId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/XPMonentTopicContainerViewController.m b/YuMi/Modules/YMMonents/View/XPMonentTopicContainerViewController.m new file mode 100644 index 00000000..84fac406 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMonentTopicContainerViewController.m @@ -0,0 +1,235 @@ +// +// YMMonentTopicContainerViewController.m +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import "XPMonentTopicContainerViewController.h" +///Third +#import +#import +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "Api+Monents.h" +#import "AccountInfoStorage.h" +///Model +#import "MonentsTopicModel.h" +///View +#import "XPMonentsTopicRecommondViewController.h" +#import "XPMonentsTopicLatestViewController.h" +#import "XPMonentsTopicHeaderView.h" +#import "XPMonentsPublishViewController.h" + +@interface XPMonentTopicContainerViewController () +@property (nonatomic,strong) JXCategoryTitleView *categoryView; +@property (nonatomic,strong) JXCategoryIndicatorLineView *lineView; +@property (nonatomic,strong) JXPagerListRefreshView *pagerView; +@property (nonatomic,strong) NSArray *titles; +@property (nonatomic,strong) XPMonentsTopicRecommondViewController *recommendVC; +@property (nonatomic,strong) XPMonentsTopicLatestViewController *latestVC; +@property (nonatomic,strong) XPMonentsTopicHeaderView *headerView; +@property (nonatomic,strong) UIButton *backButton; +@property (nonatomic,strong) UIButton *enterTopicButton; +@property (nonatomic,strong) MonentsTopicModel *topicInfo; +@end + +@implementation XPMonentTopicContainerViewController + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self requestTopicDetail]; + [self initSubViews]; +} + +- (void)viewDidLayoutSubviews { + [super viewDidLayoutSubviews]; + self.pagerView.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight - 50); +} + +- (void)initSubViews { + [self.view addSubview:self.pagerView]; + [self.view addSubview:self.backButton]; + [self.view addSubview:self.enterTopicButton]; + + [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.view); + make.top.mas_equalTo(statusbarHeight); + make.height.width.mas_equalTo(44); + }]; + + [self.enterTopicButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(50); + make.left.right.bottom.mas_equalTo(self.view); + }]; +} + +- (void)requestTopicDetail { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api monentsTopicDetailInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + MonentsTopicModel * info = [MonentsTopicModel modelWithDictionary:data.data]; + self.topicInfo = info; + self.headerView.topicInfo = info; + } else if(code == 7903) { + [self.navigationController popViewControllerAnimated:YES]; + } else { + [self showErrorToast:msg]; + } + } worldId:self.worldId uid:uid]; +} + + +#pragma mark - JXPagerViewDelegate +- (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView { + return self.headerView; +} + +- (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView { + return 150 + kNavigationHeight; +} + +- (NSUInteger)heightForPinSectionHeaderInPagerView:(JXPagerView *)pagerView { + return 46; +} + +- (UIView *)viewForPinSectionHeaderInPagerView:(JXPagerView *)pagerView { + return self.categoryView; +} + +- (NSInteger)numberOfListsInPagerView:(JXPagerView *)pagerView { + return self.titles.count; +} + +- (id)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index { + if (index == 0) { + return self.recommendVC; + } else { + return self.latestVC; + } +} + +#pragma mark - Event Response +- (void)backButtonAction:(UIButton *)sender { + [self.navigationController popViewControllerAnimated:YES]; +} + +- (void)enterTopicButtonAction:(UIButton *)sender { + XPMonentsPublishViewController * publishVC = [[XPMonentsPublishViewController alloc] init]; + self.topicInfo.worldName = self.topicInfo.name; + self.topicInfo.worldId = self.topicInfo.tId; + publishVC.topicInfo = self.topicInfo; + [self.navigationController pushViewController:publishVC animated:YES]; + +} + +#pragma mark - Getters And Setters +- (void)setWorldId:(NSString *)worldId { + _worldId = worldId; + self.recommendVC.worldId = _worldId; + self.latestVC.worldId = _worldId; +} + +- (JXCategoryTitleView *)categoryView { + if (!_categoryView) { + _categoryView = [[JXCategoryTitleView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 46)]; + _categoryView.titles = self.titles; + _categoryView.backgroundColor = [UIColor whiteColor]; + _categoryView.delegate = self; + _categoryView.titleSelectedColor = [DJDKMIMOMColor mainTextColor]; + _categoryView.titleColor = [DJDKMIMOMColor secondTextColor]; + _categoryView.titleSelectedFont = [UIFont boldSystemFontOfSize:18]; + _categoryView.titleFont = [UIFont systemFontOfSize:15]; + _categoryView.titleColorGradientEnabled = YES; + _categoryView.titleLabelZoomEnabled = NO; + _categoryView.indicators = @[self.lineView]; + _categoryView.listContainer = (id)self.pagerView.listContainerView; + _categoryView.averageCellSpacingEnabled = NO; + _categoryView.contentEdgeInsetLeft = 20; + _categoryView.contentEdgeInsetRight = 20; + _categoryView.cellSpacing = 30; + + } + return _categoryView; +} + +- (JXCategoryIndicatorLineView *)lineView { + if (!_lineView) { + _lineView = [[JXCategoryIndicatorLineView alloc] init]; + _lineView.indicatorColor = [DJDKMIMOMColor appMainColor]; + _lineView.indicatorWidth = 9; + _lineView.indicatorHeight = 4; + _lineView.verticalMargin = 2; + } + return _lineView; +} + +- (JXPagerListRefreshView *)pagerView { + if (!_pagerView) { + _pagerView = [[JXPagerListRefreshView alloc] initWithDelegate:self]; + _pagerView.listContainerView.scrollView.backgroundColor = UIColor.clearColor; + _pagerView.pinSectionHeaderVerticalOffset = (NSInteger) kNavigationHeight; + } + return _pagerView; +} + +- (NSArray *)titles { + if (!_titles) { + _titles = @[@"推荐", YMLocalizedString(@"XPMonentTopicContainerViewController1")]; + } + return _titles; +} + +- (XPMonentsTopicHeaderView *)headerView { + if (!_headerView) { + _headerView = [[XPMonentsTopicHeaderView alloc] init]; + } + return _headerView; +} + +- (XPMonentsTopicLatestViewController *)latestVC { + if (!_latestVC) { + _latestVC = [[XPMonentsTopicLatestViewController alloc] init]; + } + return _latestVC; +} + +- (XPMonentsTopicRecommondViewController *)recommendVC { + if (!_recommendVC) { + _recommendVC = [[XPMonentsTopicRecommondViewController alloc] init]; + } + return _recommendVC; +} + + +- (UIButton *)backButton { + if (!_backButton) { + _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_backButton setImage:[UIImage imageNamed:@"home_search_white_back"] forState:UIControlStateNormal]; + [_backButton setImage:[UIImage imageNamed:@"home_search_white_back"] forState:UIControlStateSelected]; + [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _backButton; +} + +- (UIButton *)enterTopicButton { + if (!_enterTopicButton) { + _enterTopicButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_enterTopicButton setTitle:YMLocalizedString(@"XPMonentTopicContainerViewController2") forState:UIControlStateNormal]; + [_enterTopicButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _enterTopicButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_enterTopicButton setBackgroundColor:[DJDKMIMOMColor appMainColor]]; + [_enterTopicButton setImage:[UIImage imageNamed:@"monents_topic_camera"] forState:UIControlStateNormal]; + [_enterTopicButton addTarget:self action:@selector(enterTopicButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _enterTopicButton; +} + +@end diff --git a/YuMi/Modules/YMMonents/View/XPMonentsAttentionViewController.h b/YuMi/Modules/YMMonents/View/XPMonentsAttentionViewController.h new file mode 100644 index 00000000..f7ebd095 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMonentsAttentionViewController.h @@ -0,0 +1,16 @@ +// +// YMMonentsAttentionViewController.h +// YUMI +// +// Created by YUMI on 2022/5/18. +// + +#import "MvpViewController.h" +#import +NS_ASSUME_NONNULL_BEGIN + +@interface XPMonentsAttentionViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/XPMonentsAttentionViewController.m b/YuMi/Modules/YMMonents/View/XPMonentsAttentionViewController.m new file mode 100644 index 00000000..e8d856e2 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMonentsAttentionViewController.m @@ -0,0 +1,281 @@ +// +// YMMonentsAttentionViewController.m +// YUMI +// +// Created by YUMI on 2022/5/18. +// + +#import "XPMonentsAttentionViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "XPMonentsLayoutConfig.h" +#import "TTPopup.h" +#import "NSArray+Safe.h" +#import "ClientConfig.h" +///Model +#import "MonentsListInfoModel.h" +///P +#import "XPMonentsAttentionPresenter.h" +#import "XPMonentsAttentionProtocol.h" +///View +#import "XPMonentsTableViewCell.h" +#import "XPMonentsEmptyTableViewCell.h" +#import "XPMonentsDetailViewController.h" +#import "XPMomentsSimpleDetailViewController.h" + +@interface XPMonentsAttentionViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +///当前的页数 +@property (nonatomic,assign) NSInteger page; +///是否有更多的数据 +@property (nonatomic,assign) BOOL hasNoMoreData; +///数据信息 +@property (nonatomic,strong) MonentsListInfoModel *listInfo; +@end + +@implementation XPMonentsAttentionViewController + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (__kindof id)createPresenter { + return [[XPMonentsAttentionPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initHeaderAndFooterRrfresh]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +#pragma mark - 下拉刷新 +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; + + [self headerRefresh]; +} + +#pragma mark - 刷新的fangfa +- (void)headerRefresh { + self.page = 1; + [self.presenter getMonentsAttentionListPageSize:20 dynamicId:@"" state:0]; +} + +- (void)footerRefresh { + if (self.hasNoMoreData) { + [self showErrorToast:YMLocalizedString(@"XPMonentsAttentionViewController0")]; + [self.tableView.mj_footer endRefreshing]; + return; + } + self.page++; + [self.presenter getMonentsAttentionListPageSize:20 dynamicId:self.listInfo.nextDynamicId state:1]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + MonentsInfoModel * monentInfo= [self.datasource safeObjectAtIndex1:indexPath.row]; + [XPMonentsLayoutConfig layoutMonentsModel:monentInfo]; + return monentInfo.rowHeight; + } + return KScreenHeight - kNavigationHeight - 49 - kSafeAreaBottomHeight; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPMonentsTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMonentsTableViewCell class])]; + MonentsInfoModel * monentsInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.delegate = self; + cell.monentsInfo = monentsInfo; + return cell; + } + XPMonentsEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMonentsEmptyTableViewCell class])]; + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + MonentsInfoModel * monentsInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + if ([ClientConfig shareConfig].canOpen) { + XPMonentsDetailViewController * detailVC = [[XPMonentsDetailViewController alloc] init]; + detailVC.monentsInfo = monentsInfo; + detailVC.delegate = self; + [self.navigationController pushViewController:detailVC animated:YES]; + }else{ + XPMomentsSimpleDetailViewController * detailVC = [[XPMomentsSimpleDetailViewController alloc] init]; + detailVC.monentsInfo = monentsInfo; + detailVC.delegate = self; + [self.navigationController pushViewController:detailVC animated:YES]; + } + } +} + +#pragma mark - XPMonentsDetailViewControllerDelegate +- (void)xPMonentsDetailViewController:(XPMonentsDetailViewController *)view deleteMonents:(NSString *)dynamicId { + __block MonentsInfoModel * deleteInfo; + [self.datasource enumerateObjectsUsingBlock:^(MonentsInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.dynamicId.integerValue == dynamicId.integerValue) { + deleteInfo = obj; + } + }]; + + if (deleteInfo) { + [self.datasource removeObject:deleteInfo]; + [self.tableView reloadData]; + } +} + +#pragma mark - XPMonentsTableViewCellDelegate +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClickLike:(MonentsInfoModel *)monentsInfo { + [self.presenter likeMonent:monentsInfo.dynamicId status:!monentsInfo.isLike likedUid:monentsInfo.uid worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; +} + +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClicDelete:(MonentsInfoModel *)monentsInfo { + [TTPopup alertWithMessage:@"删除后不可恢复\n确定删除该动态吗?" confirmHandler:^{ + [self.presenter deleteMonents:monentsInfo.dynamicId worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; + } cancelHandler:^{ + + }]; +} + +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClicFold:(MonentsInfoModel *)monentsInfo { + __block MonentsInfoModel * monentsInfos; + [self.datasource enumerateObjectsUsingBlock:^(MonentsInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.dynamicId.integerValue == monentsInfo.dynamicId.integerValue) { + monentsInfos = obj; + *stop = YES; + } + }]; + if (monentsInfos) { + NSInteger row = [self.datasource indexOfObject:monentsInfo]; + [self.tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:row inSection:0]] withRowAnimation:UITableViewRowAnimationNone]; + } +} + +#pragma mark -JXCategoryListContainerViewDelegate +- (UIView *)listView { + return self.view; +} + +#pragma mark - XPMonentsRecommendProtocol +- (void)getMonentsAttentionListSuccess:(MonentsListInfoModel *)listInfo state:(int)state { + self.listInfo = listInfo; + if (state == 0) { + [self.datasource removeAllObjects]; + } + if (listInfo.dynamicList.count > 0) { + [self.datasource addObjectsFromArray:listInfo.dynamicList]; + } + + if (state == 0) { + self.hasNoMoreData = NO; + [self.tableView.mj_header endRefreshing]; + } else { + if (listInfo.dynamicList.count > 0) { + self.hasNoMoreData = NO; + } else { + self.hasNoMoreData = YES; + } + [self.tableView.mj_footer endRefreshing]; + } + [self.tableView reloadData]; +} + +- (void)getMonentsAttentionListFail:(NSString *)msg state:(int)state { + if (state == 0) { + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } +} + +- (void)likeMonentsSuccess:(NSString *)dynamicId status:(BOOL)status { + [self.datasource enumerateObjectsUsingBlock:^(MonentsInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj.dynamicId isEqualToString:dynamicId]) { + if (status) { + obj.isLike += 1; + } else { + obj.isLike -= 1; + } + *stop = YES; + } + }]; + [self.tableView reloadData]; +} + +- (void)deleteMonentsSuccess:(NSString *)monentsInfo { + [self showSuccessToast:YMLocalizedString(@"XPMonentsAttentionViewController2")]; + __block MonentsInfoModel * deleteInfo; + [self.datasource enumerateObjectsUsingBlock:^(MonentsInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.dynamicId.integerValue == monentsInfo.integerValue) { + deleteInfo = obj; + } + }]; + + if (deleteInfo) { + [self.datasource removeObject:deleteInfo]; + [self.tableView reloadData]; + } +} + +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPMonentsTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMonentsTableViewCell class])]; + [_tableView registerClass:[XPMonentsEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMonentsEmptyTableViewCell class])]; + } + return _tableView; +} + + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} +@end diff --git a/YuMi/Modules/YMMonents/View/XPMonentsDetailViewController.h b/YuMi/Modules/YMMonents/View/XPMonentsDetailViewController.h new file mode 100644 index 00000000..798e0431 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMonentsDetailViewController.h @@ -0,0 +1,26 @@ +// +// YMMonentsDetailViewController.h +// YUMI +// +// Created by YUMI on 2022/6/22. +// + +#import "MvpViewController.h" +#import "XPMonentsDetailViewControllerDelegate.h" + +NS_ASSUME_NONNULL_BEGIN +@class MonentsInfoModel, XPMonentsDetailViewController; +//@protocol XPMonentsDetailViewControllerDelegate +// +/////删除了动态 +//- (void)xPMonentsDetailViewController:(XPMonentsDetailViewController *)view deleteMonents:(NSString *)dynamicId; +// +//@end + +@interface XPMonentsDetailViewController : MvpViewController +@property (nonatomic,strong) MonentsInfoModel *monentsInfo; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/XPMonentsDetailViewController.m b/YuMi/Modules/YMMonents/View/XPMonentsDetailViewController.m new file mode 100644 index 00000000..0929b1ea --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMonentsDetailViewController.m @@ -0,0 +1,486 @@ +// +// YMMonentsDetailViewController.m +// YUMI +// +// Created by YUMI on 2022/6/22. +// + +#import "XPMonentsDetailViewController.h" +///Third +#import +#import +///Tool +#import "XPMonentsLayoutConfig.h" +#import "DJDKMIMOMColor.h" +#import "QEmotionHelper.h" +#import "QKeyboardManager.h" +#import "TTPopup.h" +#import "NSArray+Safe.h" +#import "ClientConfig.h" +///Model +#import "MonentsInfoModel.h" +#import "MonentsCommentModel.h" +#import "MonentsCommentReplyModel.h" +///View +#import "XPMonentsTableViewCell.h" +#import "XPMonentsCommentTableViewCell.h" +#import "XPMonentsEmptyTableViewCell.h" +#import "QInputBarView.h" +#import "QKeyboardManager.h" +#import "QEmotionBoardView.h" +#import "XPMineUserInfoViewController.h" +#import "XPMineSimpleUserInfoViewController.h" +///P +#import "XPMonentDetailPresenter.h" +#import "XPMonentsDetailProtocol.h" + +@interface XPMonentsDetailViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +///头部view +@property (nonatomic,strong) UIView * sectionView; +///评论的个数 +@property (nonatomic,strong) UILabel *commentLabel; +@property(nonatomic,strong)QInputBarView *inputBarView; +@property(nonatomic,strong)QKeyboardManager *keyboardManager; +///当前选中的评论信息 +@property (nonatomic,strong) NSString *commentId; +@end + +@implementation XPMonentsDetailViewController + +- (__kindof id)createPresenter { + return [[XPMonentDetailPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initHeaderAndFooterRrfresh]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - 下拉刷新 +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; + + [self headerRefresh]; +} + +- (void)headerRefresh { + [self.presenter getMonentsDetail:self.monentsInfo.dynamicId]; + [self.presenter getMonentsCommentList:self.monentsInfo.dynamicId timestamp:@"" status:0]; +} + +- (void)footerRefresh { + NSString *timestamp = @""; + if (self.datasource.count > 0) { + MonentsCommentModel * commentInfo = [self.datasource lastObject]; + timestamp = commentInfo.publishTime; + } + [self.presenter getMonentsCommentList:self.monentsInfo.dynamicId timestamp:timestamp status:1]; +} + + +#pragma mark - Private Method +- (void)initInputView { + // 初始化输入工具条,frame可以先这样临时设置,下面的addBottomInputBarView方法会重置输入条frame + // 如果你想要自定义输入条View,请参考TextFieldViewController代码 + _inputBarView = [[QInputBarView alloc] initWithFrame:CGRectMake(0,0,self.view.frame.size.width,UIInputBarViewMinHeight)]; + QInputBarViewConfiguration *inputBarViewConfiguration = [QInputBarViewConfiguration defaultInputBarViewConfiguration]; + inputBarViewConfiguration.voiceButtonHidden = YES;//隐藏语音按钮 + inputBarViewConfiguration.extendButtonHidden = YES;//隐藏拓展按钮 + [_inputBarView setupWithConfiguration:inputBarViewConfiguration]; + _inputBarView.delegate = self; + + //keyboard管理类,用来管理键盘,各大面板的切换 + _keyboardManager = [[QKeyboardManager alloc] initWithViewController:self]; + _keyboardManager.dataSource = self; + //因为addBottomInputBarView方法会立刻触发delegate,所以这里需要先设置delegate + _keyboardManager.delegate = self; + [_keyboardManager addBottomInputBarView:_inputBarView belowViewController:NO]; + + //把输入框(如果有的话)绑定给管理类 + [_keyboardManager bindTextView:_inputBarView.inputTextView]; +} + +- (void)sendTextMessage:(NSString *)inputText { + if (inputText.length > 0) { + [_keyboardManager hideAllBoardView]; + if (self.commentId && self.commentId.length > 0) { + [self.presenter replayCommon:self.commentId dynamicId:self.monentsInfo.dynamicId content:inputText]; + } else { + [self.presenter commontMonents:self.monentsInfo.dynamicId content:inputText]; + } + self.inputBarView.inputTextView.text = nil; + } else { + [self showErrorToast:YMLocalizedString(@"XPMonentsDetailViewController0")]; + } +} + +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMonentsDetailViewController1"); + [self.view addSubview:self.tableView]; + [self.sectionView addSubview:self.commentLabel]; + [self initInputView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.inputBarView.mas_top); + }]; + + [self.commentLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.sectionView).offset(15); + make.centerY.mas_equalTo(self.sectionView); + }]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 2; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + if (section == 0) { + return 1; + } + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (indexPath.section == 0) { + [XPMonentsLayoutConfig layoutMonentsModel:self.monentsInfo]; + return self.monentsInfo.rowHeight; + } else if(indexPath.section == 1) { + if (self.datasource.count > 0) { + MonentsCommentModel * commentInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + return [XPMonentsLayoutConfig commentCommentRowHeight:commentInfo]; + } else { + return 400; + } + } + return 0; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { + if (section == 1) { + return 44; + } + return 0.0;; +} + +- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { + self.commentLabel.text = [NSString stringWithFormat:@"所有评论(%@)", self.monentsInfo.commentCount]; + return self.sectionView; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { + return 0.0f; +} + +- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { + return [UIView new]; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (indexPath.section ==0) { + XPMonentsTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMonentsTableViewCell class])]; + cell.delegate = self; + cell.monentsInfo = self.monentsInfo; + return cell; + } else { + if (self.datasource.count > 0) { + XPMonentsCommentTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMonentsCommentTableViewCell class])]; + cell.commentInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.delegate = self; + return cell; + } else { + XPMonentsEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMonentsEmptyTableViewCell class])]; + return cell; + } + } +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (indexPath.section == 1) { + if (self.datasource.count > 0) { + MonentsCommentModel* monent = [self.datasource safeObjectAtIndex1:indexPath.row]; + self.commentId = monent.commentId; + self.inputBarView.inputTextView.placeholder = [NSString stringWithFormat:@"回复: %@", monent.nick]; + [self.inputBarView textViewBecomeFirstResponder]; + } + } +} + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + [_keyboardManager hideAllBoardView]; +} + +#pragma mark - XPMonentsCommentTableViewCellDelegate +- (void)xPMonentsCommentTableViewCell:(XPMonentsCommentTableViewCell *)view didClickMoreReply:(MonentsCommentModel *)commentInfo { + [self.presenter getMonentsCommentReplyList:self.monentsInfo.dynamicId commentId:commentInfo.commentId timestamp:commentInfo.replyInfo.nextTimestamp]; +} + +- (void)xPMonentsCommentTableViewCell:(XPMonentsCommentTableViewCell *)view didClickCommon:(MonentsReplyModel *)commentInfo { + if (commentInfo) { + self.commentId = commentInfo.replyId; + self.inputBarView.inputTextView.placeholder = [NSString stringWithFormat:@"回复: %@", commentInfo.nick]; + [self.inputBarView textViewBecomeFirstResponder]; + } +} +- (void)xPMonentsCommentTableViewCell:(XPMonentsCommentTableViewCell *)view didClickAvatar:(NSString *)commentInfo { + if ([ClientConfig shareConfig].canOpen) { + XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init]; + userInfoVC.uid = commentInfo.integerValue; + [self.navigationController pushViewController:userInfoVC animated:YES]; + }else{ + XPMineSimpleUserInfoViewController * userInfoVC = [[XPMineSimpleUserInfoViewController alloc] init]; + userInfoVC.uid = commentInfo.integerValue; + [self.navigationController pushViewController:userInfoVC animated:YES]; + } +} +#pragma mark - XPMonentsTableViewCellDelegate +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClickLike:(MonentsInfoModel *)monentsInfo { + [self.presenter likeMonent:monentsInfo.dynamicId status:!monentsInfo.isLike likedUid:monentsInfo.uid worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; +} + +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClicDelete:(MonentsInfoModel *)monentsInfo { + [TTPopup alertWithMessage:@"删除后不可恢复\n确定删除该动态吗?" confirmHandler:^{ + [self.presenter deleteMonents:monentsInfo.dynamicId worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; + } cancelHandler:^{ + + }]; +} + +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClicCommon:(MonentsInfoModel *)monentsInfo { + if (monentsInfo) { + self.commentId = nil; + self.inputBarView.inputTextView.placeholder = YMLocalizedString(@"XPMonentsDetailViewController6"); + [self.inputBarView textViewBecomeFirstResponder]; + } +} + +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClicFold:(MonentsInfoModel *)monentsInfo { + self.monentsInfo = monentsInfo; + [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone]; +} + +#pragma mark - InputBoardDataSource +//@return 点加号按钮弹出的拓展面板View,且无需设置frame +- (UIView *)keyboardManagerExtendBoardView:(QKeyboardManager *)keyboardManager { + UIView *boardView = [UIView new]; + boardView.backgroundColor = UIColor.blueColor; + return boardView; +} + +//@return 点表情按钮弹出的表情面板View,且无需设置frame +- (UIView *)keyboardManagerEmotionBoardView:(QKeyboardManager *)keyboardManager { + QEmotionBoardView *emotionView = [[QEmotionBoardView alloc] init]; + QEmotionHelper *faceManager = [QEmotionHelper sharedEmotionHelper]; + emotionView.emotions = faceManager.emotionArray; + emotionView.delegate = self; + if (@available(iOS 11.0, *)) { + NSBundle *bundle = [NSBundle bundleForClass:[self class]]; + emotionView.backgroundColor = [UIColor colorNamed:@"q_input_extend_bg" inBundle:bundle compatibleWithTraitCollection:nil]; + } else { + emotionView.backgroundColor = [UIColor colorWithRed:(246)/255.0f green:(246)/255.0f blue:(246)/255.0f alpha:1]; + } + return emotionView; +} + +//@return 点表情按钮弹出的表情面板View的高度 +- (CGFloat)keyboardManagerEmotionBoardHeight:(QKeyboardManager *)keyboardManager { + return 294; +} + +//@return 点加号按钮弹出的拓展面板View的高度 +- (CGFloat)keyboardManagerExtendBoardHeight:(QKeyboardManager *)keyboardManager { + return 174; +} + +- (QInputBarViewConfiguration *)inputBarViewConfiguration { + //输入条配置,子类可以重写 + QInputBarViewConfiguration *inputBarViewConfiguration = [QInputBarViewConfiguration defaultInputBarViewConfiguration]; + inputBarViewConfiguration.voiceButtonHidden = YES;//隐藏语音按钮 + inputBarViewConfiguration.extendButtonHidden = YES;//隐藏拓展按钮 + return inputBarViewConfiguration; +} + +//点击表情按钮,切换到表情面板 +- (void)inputBarView:(QInputBarView *)inputBarView onEmotionButtonClick:(UIButton *)emotionSwitchButton { + if (emotionSwitchButton.isSelected) { + [_keyboardManager switchToEmotionBoardKeyboard]; + } else { + self.commentId = nil; + _inputBarView.inputTextView.placeholder = YMLocalizedString(@"XPMonentsDetailViewController7"); + [_inputBarView textViewBecomeFirstResponder]; + } +} + +#pragma mark - QEmotionBoardViewDelegate +/** + * 选中表情时的回调 + * @param index 被选中的表情在`emotions`里的索引 + * @param emotion 被选中的表情对应的`QMUIEmotion`对象 + */ +- (void)emotionView:(QEmotionBoardView *)emotionView didSelectEmotion:(QEmotion *)emotion atIndex:(NSInteger)index { + //把😊插入到输入栏 + [_inputBarView insertEmotion:emotion.displayName]; +} + +// 删除按钮的点击事件回调 +- (void)emotionViewDidSelectDeleteButton:(QEmotionBoardView *)emotionView { + if (![_inputBarView deleteEmotion]){ + //根据当前的光标,这次点击删除按钮并没有删除表情,那么就删除文字 + [_inputBarView.inputTextView deleteBackward]; + } +} + +// 发送按钮的点击事件回调 +- (void)emotionViewDidSelectSendButton:(QEmotionBoardView *)emotionView { + [self sendTextMessage:[_inputBarView textViewInputNormalText]]; +} + + +#pragma mark - +/** + * 点击了系统键盘的发送按钮 + * @param inputNormalText :"害~你好啊[微笑]" + */ +- (void)inputBarView:(QInputBarView *)inputBarView onKeyboardSendClick:(NSString *)inputNormalText { + [self sendTextMessage:inputNormalText]; +} + +#pragma mark - XPMonentsDetailProtocol +- (void)getMonentsDetailSuccess:(MonentsInfoModel *)commentInfo { + self.monentsInfo = commentInfo; + [self.tableView reloadData]; +} + +- (void)getMonentsCommentListSuccess:(MonentsCommentListModel *)commentInfo state:(int)state{ + if (state == 0) { + [self.datasource removeAllObjects]; + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } + + if (commentInfo.commentList.count > 0) { + [self.datasource addObjectsFromArray:commentInfo.commentList]; + } + [self.tableView reloadData]; +} + +- (void)getMonentsCommentReplyListSuccess:(MonentsCommentReplyModel *)replyInfo commentId:(nonnull NSString *)commentId { + if (commentId) { + __block MonentsCommentModel * commentInfo; + [self.datasource enumerateObjectsUsingBlock:^(MonentsCommentModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj.commentId isEqualToString:commentId]) { + commentInfo = obj; + *stop = YES; + } + }]; + + if (commentInfo) { + NSMutableArray * replyList= commentInfo.replyInfo.replyList.mutableCopy; + [replyList addObjectsFromArray:replyInfo.replyList]; + commentInfo.replyInfo.replyList = replyList.copy; + commentInfo.replyInfo.leftCount = replyInfo.leftCount; + commentInfo.replyInfo.nextTimestamp = replyInfo.nextTimestamp; + commentInfo.isReloadHeight = YES; + } + [self.tableView reloadData]; + } +} + +- (void)likeMonentsSuccess:(NSString *)dynamicId status:(BOOL)status { + if ([self.monentsInfo.dynamicId isEqualToString:dynamicId]) { + NSInteger count = self.monentsInfo.likeCount.integerValue; + self.monentsInfo.isLike = status; + if (status) { + count += 1; + } else { + count -= 1; + } + self.monentsInfo.likeCount = [NSString stringWithFormat:@"%ld", count]; + [self.tableView reloadData]; + } +} + +- (void)replyMonentsSuccess { + [self.presenter getMonentsCommentList:self.monentsInfo.dynamicId timestamp:@"" status:0]; +} + +- (void)commonMonentsSuccess { + [self.presenter getMonentsCommentList:self.monentsInfo.dynamicId timestamp:@"" status:0]; +} + +- (void)deleteMonentsSuccess:(NSString *)monentsInfo { + [self showSuccessToast:YMLocalizedString(@"XPMonentsDetailViewController8")]; + [self.navigationController popViewControllerAnimated:YES]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMonentsDetailViewController:deleteMonents:)]) { + [self.delegate xPMonentsDetailViewController:self deleteMonents:self.monentsInfo.dynamicId]; + } +} + + +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPMonentsTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMonentsTableViewCell class])]; + [_tableView registerClass:[XPMonentsCommentTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMonentsCommentTableViewCell class])]; + [_tableView registerClass:[XPMonentsEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMonentsEmptyTableViewCell class])]; + } + return _tableView; +} + +- (UIView *)sectionView { + if (!_sectionView) { + _sectionView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 44)]; + _sectionView.backgroundColor = [UIColor clearColor]; + } + return _sectionView; +} + +- (UILabel *)commentLabel { + if (!_commentLabel) { + _commentLabel = [[UILabel alloc] init]; + _commentLabel.font = [UIFont systemFontOfSize:14]; + _commentLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _commentLabel; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + +@end diff --git a/YuMi/Modules/YMMonents/View/XPMonentsInteractiveViewController.h b/YuMi/Modules/YMMonents/View/XPMonentsInteractiveViewController.h new file mode 100644 index 00000000..f77df9dc --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMonentsInteractiveViewController.h @@ -0,0 +1,16 @@ +// +// YMMonentsInteractiveViewController.h +// YUMI +// +// Created by YUMI on 2022/5/18. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMonentsInteractiveViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/XPMonentsInteractiveViewController.m b/YuMi/Modules/YMMonents/View/XPMonentsInteractiveViewController.m new file mode 100644 index 00000000..8cad7923 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMonentsInteractiveViewController.m @@ -0,0 +1,220 @@ +// +// YMMonentsInteractiveViewController.m +// YUMI +// +// Created by YUMI on 2022/5/18. +// + +#import "XPMonentsInteractiveViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "TTPopup.h" +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" +#import "ClientConfig.h" +///Model +#import "MonentsInteractiveModel.h" +///P +#import "XPMonentsInteractivePresenter.h" +#import "XPMonentsInteractiveProtocol.h" +///View +#import "XPMonentsInteractiveTableViewCell.h" +#import "XPMonentsEmptyTableViewCell.h" +#import "XPMonentsDetailViewController.h" +#import "XPMomentsSimpleDetailViewController.h" + +@interface XPMonentsInteractiveViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +///当前的页数 +@property (nonatomic,assign) NSInteger page; +///是否有更多的数据 +@property (nonatomic,assign) BOOL hasNoMoreData; +@end + +@implementation XPMonentsInteractiveViewController + +- (__kindof id)createPresenter { + return [[XPMonentsInteractivePresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initHeaderAndFooterRrfresh]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPMonentsInteractiveViewController0"); + [self.view addSubview:self.tableView]; + [self addNavigationItemWithImageNames:@[@"monents_interactive_delete_message"] isLeft:NO target:self action:@selector(rightButtonAction:) tags:nil]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +#pragma mark - 下拉刷新 +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; + + [self headerRefresh]; +} + +#pragma mark - 刷新的fangfa +- (void)headerRefresh { + self.page = 1; + [self.presenter getMonentsInteractiveList:@"" pageSize:20 state:0]; +} + +- (void)footerRefresh { + if (self.hasNoMoreData) { + [self showErrorToast:YMLocalizedString(@"XPMonentsInteractiveViewController1")]; + [self.tableView.mj_footer endRefreshing]; + return; + } + self.page++; + NSString * dynamicId = @""; + if (self.datasource.count > 0) { + MonentsInteractiveModel * model = [self.datasource lastObject]; + dynamicId = model.dynamicId; + } + [self.presenter getMonentsInteractiveList:dynamicId pageSize:20 state:1]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + MonentsInteractiveModel * model = [self.datasource safeObjectAtIndex1:indexPath.row]; + return model.worldName.length > 0? 130 : 90; + } + return KScreenHeight - kNavigationHeight; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPMonentsInteractiveTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMonentsInteractiveTableViewCell class])]; + MonentsInteractiveModel * model = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.interactiveInfo = model; + return cell; + } + XPMonentsEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMonentsEmptyTableViewCell class])]; + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + MonentsInteractiveModel * model = [self.datasource safeObjectAtIndex1:indexPath.row]; + MonentsInfoModel * monents = [[MonentsInfoModel alloc] init]; + monents.dynamicId = model.dynamicId; + + if ([ClientConfig shareConfig].canOpen) { + XPMonentsDetailViewController * detailVC = [[XPMonentsDetailViewController alloc] init]; + detailVC.monentsInfo = monents; + [self.navigationController pushViewController:detailVC animated:YES]; + }else{ + XPMomentsSimpleDetailViewController * detailVC = [[XPMomentsSimpleDetailViewController alloc] init]; + detailVC.monentsInfo = monents; + [self.navigationController pushViewController:detailVC animated:YES]; + } + } +} +#pragma mark -JXCategoryListContainerViewDelegate +- (UIView *)listView { + return self.view; +} + +#pragma mark - XPMonentsLatestProtocol +- (void)getMonentsInteractiveListSueccess:(NSArray *)array state:(int)state{ + if (state == 0) { + [self.datasource removeAllObjects]; + } + if (array.count > 0) { + [self.datasource addObjectsFromArray:array]; + } + + if (state == 0) { + self.hasNoMoreData = NO; + [self.tableView.mj_header endRefreshing]; + } else { + if (array.count > 0) { + self.hasNoMoreData = NO; + } else { + self.hasNoMoreData = YES; + } + [self.tableView.mj_footer endRefreshing]; + } + [self.tableView reloadData]; +} + +- (void)getMonentsInteractiveListFail:(NSString *)msg state:(int)state { + if (state == 0) { + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } +} + +- (void)clearInteractiveMessageSuccess { + [self.datasource removeAllObjects]; + [self.tableView reloadData]; +} + +#pragma mark - Event Response +- (void)rightButtonAction:(UIButton *)sender { + [TTPopup alertWithMessage:@"清空后所有互动通知将被删除,确定清空吗?" confirmHandler:^{ + [[self presenter] clearInteractiveMessage]; + } cancelHandler:^{ + }]; +} + +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPMonentsInteractiveTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMonentsInteractiveTableViewCell class])]; + [_tableView registerClass:[XPMonentsEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMonentsEmptyTableViewCell class])]; + } + return _tableView; +} + + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} +@end diff --git a/YuMi/Modules/YMMonents/View/XPMonentsLatestViewController.h b/YuMi/Modules/YMMonents/View/XPMonentsLatestViewController.h new file mode 100644 index 00000000..5669df25 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMonentsLatestViewController.h @@ -0,0 +1,16 @@ +// +// YMMonentsLatestViewController.h +// YUMI +// +// Created by YUMI on 2022/5/18. +// + +#import "MvpViewController.h" +#import +NS_ASSUME_NONNULL_BEGIN + +@interface XPMonentsLatestViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/XPMonentsLatestViewController.m b/YuMi/Modules/YMMonents/View/XPMonentsLatestViewController.m new file mode 100644 index 00000000..3deb52da --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMonentsLatestViewController.m @@ -0,0 +1,288 @@ +// +// YMMonentsLatestViewController.m +// YUMI +// +// Created by YUMI on 2022/5/18. +// + +#import "XPMonentsLatestViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "XPMonentsLayoutConfig.h" +#import "TTPopup.h" +#import "NSArray+Safe.h" +#import "ClientConfig.h" +///Model +#import "MonentsListInfoModel.h" +///P +#import "XPMonentsLatestPresenter.h" +#import "XPMonentsLatestProtocol.h" +///View +#import "XPMonentsTableViewCell.h" +#import "XPMonentsEmptyTableViewCell.h" +#import "XPMonentsDetailViewController.h" +#import "XPMomentsSimpleDetailViewController.h" + +@interface XPMonentsLatestViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +///当前的页数 +@property (nonatomic,assign) NSInteger page; +///是否有更多的数据 +@property (nonatomic,assign) BOOL hasNoMoreData; +///数据信息 +@property (nonatomic,strong) MonentsListInfoModel *listInfo; +@end + +@implementation XPMonentsLatestViewController + +- (void)dealloc { + NSLog(@"你阿宁"); +} + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (__kindof id)createPresenter { + return [[XPMonentsLatestPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initHeaderAndFooterRrfresh]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +#pragma mark - 下拉刷新 +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; + + [self headerRefresh]; +} + +#pragma mark - 刷新的fangfa +- (void)headerRefresh { + self.page = 1; + [self.presenter getMonentsLatestListPageSize:20 dynamicId:@"" state:0]; +} + +- (void)footerRefresh { + if (self.hasNoMoreData) { + [self showErrorToast:YMLocalizedString(@"XPMonentsLatestViewController0")]; + [self.tableView.mj_footer endRefreshing]; + return; + } + self.page++; + [self.presenter getMonentsLatestListPageSize:20 dynamicId:self.listInfo.nextDynamicId state:1]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + MonentsInfoModel * monentInfo= [self.datasource safeObjectAtIndex1:indexPath.row]; + [XPMonentsLayoutConfig layoutMonentsModel:monentInfo]; + return monentInfo.rowHeight; + } + return KScreenHeight - kNavigationHeight - 49 - kSafeAreaBottomHeight; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPMonentsTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMonentsTableViewCell class])]; + MonentsInfoModel * monentsInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.monentsInfo = monentsInfo; + cell.delegate = self; + return cell; + } + XPMonentsEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMonentsEmptyTableViewCell class])]; + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + MonentsInfoModel * monentsInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + + if ([ClientConfig shareConfig].canOpen) { + XPMonentsDetailViewController * detailVC = [[XPMonentsDetailViewController alloc] init]; + detailVC.monentsInfo = monentsInfo; + detailVC.delegate = self; + [self.navigationController pushViewController:detailVC animated:YES]; + }else{ + XPMomentsSimpleDetailViewController * detailVC = [[XPMomentsSimpleDetailViewController alloc] init]; + detailVC.monentsInfo = monentsInfo; + detailVC.delegate = self; + [self.navigationController pushViewController:detailVC animated:YES]; + } + } +} +#pragma mark - XPMonentsDetailViewControllerDelegate +- (void)xPMonentsDetailViewController:(XPMonentsDetailViewController *)view deleteMonents:(NSString *)dynamicId { + __block MonentsInfoModel * deleteInfo; + [self.datasource enumerateObjectsUsingBlock:^(MonentsInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.dynamicId.integerValue == dynamicId.integerValue) { + deleteInfo = obj; + } + }]; + + if (deleteInfo) { + [self.datasource removeObject:deleteInfo]; + [self.tableView reloadData]; + } +} + +#pragma mark - XPMonentsTableViewCellDelegate +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClickLike:(MonentsInfoModel *)monentsInfo { + [self.presenter likeMonent:monentsInfo.dynamicId status:!monentsInfo.isLike likedUid:monentsInfo.uid worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; +} + +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClicDelete:(MonentsInfoModel *)monentsInfo { + [TTPopup alertWithMessage:@"删除后不可恢复\n确定删除该动态吗?" confirmHandler:^{ + [self.presenter deleteMonents:monentsInfo.dynamicId worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; + } cancelHandler:^{ + + }]; +} + +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClicFold:(MonentsInfoModel *)monentsInfo { + __block MonentsInfoModel * monentsInfos; + [self.datasource enumerateObjectsUsingBlock:^(MonentsInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.dynamicId.integerValue == monentsInfo.dynamicId.integerValue) { + monentsInfos = obj; + *stop = YES; + } + }]; + if (monentsInfos) { + NSInteger row = [self.datasource indexOfObject:monentsInfo]; + [self.tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:row inSection:0]] withRowAnimation:UITableViewRowAnimationNone]; + } +} + +#pragma mark -JXCategoryListContainerViewDelegate +- (UIView *)listView { + return self.view; +} + +#pragma mark - XPMonentsLatestProtocol +- (void)getMonentsLatestListSuccess:(MonentsListInfoModel *)listInfo state:(int)state{ + self.listInfo = listInfo; + if (state == 0) { + [self.datasource removeAllObjects]; + } + if (listInfo.dynamicList.count > 0) { + [self.datasource addObjectsFromArray:listInfo.dynamicList]; + } + + if (state == 0) { + self.hasNoMoreData = NO; + [self.tableView.mj_header endRefreshing]; + } else { + if (listInfo.dynamicList.count > 0) { + self.hasNoMoreData = NO; + } else { + self.hasNoMoreData = YES; + } + [self.tableView.mj_footer endRefreshing]; + } + [self.tableView reloadData]; +} + +- (void)getMonentsLatestListFail:(NSString *)msg state:(int)state { + if (state == 0) { + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } +} + +- (void)likeMonentsSuccess:(NSString *)dynamicId status:(BOOL)status { + [self.datasource enumerateObjectsUsingBlock:^(MonentsInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj.dynamicId isEqualToString:dynamicId]) { + NSInteger count = obj.likeCount.integerValue; + obj.isLike = status; + if (status) { + count += 1; + } else { + count -= 1; + } + obj.likeCount = [NSString stringWithFormat:@"%ld", count]; + *stop = YES; + } + }]; + [self.tableView reloadData]; +} + +- (void)deleteMonentsSuccess:(NSString *)monentsInfo { + [self showSuccessToast:YMLocalizedString(@"XPMonentsLatestViewController2")]; + __block MonentsInfoModel * deleteInfo; + [self.datasource enumerateObjectsUsingBlock:^(MonentsInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.dynamicId.integerValue == monentsInfo.integerValue) { + deleteInfo = obj; + } + }]; + + if (deleteInfo) { + [self.datasource removeObject:deleteInfo]; + [self.tableView reloadData]; + } +} + +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPMonentsTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMonentsTableViewCell class])]; + [_tableView registerClass:[XPMonentsEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMonentsEmptyTableViewCell class])]; + } + return _tableView; +} + + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} +@end diff --git a/YuMi/Modules/YMMonents/View/XPMonentsMineViewController.h b/YuMi/Modules/YMMonents/View/XPMonentsMineViewController.h new file mode 100644 index 00000000..729839f4 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMonentsMineViewController.h @@ -0,0 +1,17 @@ +// +// YMMonentsMineViewController.h +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import "MvpViewController.h" +#import +NS_ASSUME_NONNULL_BEGIN +@class MonentsInfoModel; +@interface XPMonentsMineViewController : MvpViewController +@property (nonatomic,strong) NSArray*dynamicInfo; +@property (nonatomic, copy) void(^scrollCallback)(UIScrollView *scrollView); +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/XPMonentsMineViewController.m b/YuMi/Modules/YMMonents/View/XPMonentsMineViewController.m new file mode 100644 index 00000000..636205a7 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMonentsMineViewController.m @@ -0,0 +1,235 @@ +// +// YMMonentsMineViewController.m +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import "XPMonentsMineViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "XPMonentsLayoutConfig.h" +#import "TTPopup.h" +#import "NSArray+Safe.h" +#import "ClientConfig.h" +///Model +#import "MonentsListInfoModel.h" +///P +#import "XPMonentMinePresenter.h" +#import "XPMonentsMineProtocol.h" +///View +#import "XPMonentsTableViewCell.h" +#import "XPMonentsEmptyTableViewCell.h" +#import "XPMonentsDetailViewController.h" +#import "XPMomentsSimpleDetailViewController.h" + +@interface XPMonentsMineViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +///是否有更多的数据 +@property (nonatomic,assign) BOOL hasNoMoreData; +///数据信息 +@property (nonatomic,strong) MonentsListInfoModel *listInfo; +@end + +@implementation XPMonentsMineViewController + +- (__kindof id)createPresenter { + return [[XPMonentMinePresenter alloc] init]; +} + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + MonentsInfoModel * monentInfo= [self.datasource safeObjectAtIndex1:indexPath.row]; + [XPMonentsLayoutConfig layoutMonentsModel:monentInfo]; + return monentInfo.rowHeight; + } + return KScreenHeight - kNavigationHeight - 49 - kSafeAreaBottomHeight; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPMonentsTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMonentsTableViewCell class])]; + MonentsInfoModel * monentsInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.delegate = self; + cell.monentsInfo = monentsInfo; + return cell; + } + XPMonentsEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMonentsEmptyTableViewCell class])]; + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + + if ([ClientConfig shareConfig].canOpen) { + XPMonentsDetailViewController * detailVC = [[XPMonentsDetailViewController alloc] init]; + MonentsInfoModel * monentsInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + detailVC.monentsInfo = monentsInfo; + detailVC.delegate = self; + [self.navigationController pushViewController:detailVC animated:YES]; + }else{ + XPMomentsSimpleDetailViewController * detailVC = [[XPMomentsSimpleDetailViewController alloc] init]; + MonentsInfoModel * monentsInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + detailVC.monentsInfo = monentsInfo; + detailVC.delegate = self; + [self.navigationController pushViewController:detailVC animated:YES]; + } + } +} +#pragma mark - XPMonentsTableViewCellDelegate +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClickLike:(MonentsInfoModel *)monentsInfo { + [self.presenter likeMonent:monentsInfo.dynamicId status:!monentsInfo.isLike likedUid:monentsInfo.uid worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; +} + +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClicDelete:(MonentsInfoModel *)monentsInfo { + [TTPopup alertWithMessage:YMLocalizedString(@"XPMonentsMineViewController2") confirmHandler:^{ + [self.presenter deleteMonents:monentsInfo.dynamicId worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; + } cancelHandler:^{ + + }]; +} + +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClicFold:(MonentsInfoModel *)monentsInfo { + __block MonentsInfoModel * monentsInfos; + [self.datasource enumerateObjectsUsingBlock:^(MonentsInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.dynamicId.integerValue == monentsInfo.dynamicId.integerValue) { + monentsInfos = obj; + *stop = YES; + } + }]; + if (monentsInfos) { + NSInteger row = [self.datasource indexOfObject:monentsInfo]; + [self.tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:row inSection:0]] withRowAnimation:UITableViewRowAnimationNone]; + } +} + +#pragma mark - XPMonentsDetailViewControllerDelegate +- (void)xPMonentsDetailViewController:(XPMonentsDetailViewController *)view deleteMonents:(NSString *)dynamicId { + __block MonentsInfoModel * deleteInfo; + [self.datasource enumerateObjectsUsingBlock:^(MonentsInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.dynamicId.integerValue == dynamicId.integerValue) { + deleteInfo = obj; + } + }]; + + if (deleteInfo) { + [self.datasource removeObject:deleteInfo]; + [self.tableView reloadData]; + } +} + +#pragma mark - XPMonentsMineProtocol +- (void)likeMonentsSuccess:(NSString *)dynamicId status:(BOOL)status { + [self.datasource enumerateObjectsUsingBlock:^(MonentsInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj.dynamicId isEqualToString:dynamicId]) { + if (status) { + obj.isLike += 1; + } else { + obj.isLike -= 1; + } + *stop = YES; + } + }]; + [self.tableView reloadData]; +} + +- (void)deleteMonentsSuccess:(NSString *)monentsInfo { + [self showSuccessToast:YMLocalizedString(@"XPMonentsMineViewController1")]; + __block MonentsInfoModel * deleteInfo; + [self.datasource enumerateObjectsUsingBlock:^(MonentsInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.dynamicId.integerValue == monentsInfo.integerValue) { + deleteInfo = obj; + } + }]; + + if (deleteInfo) { + [self.datasource removeObject:deleteInfo]; + [self.tableView reloadData]; + } +} + + +#pragma mark - JXPagingViewListViewDelegate +- (UIScrollView *)listScrollView { + return self.tableView; +} + +- (void)listViewDidScrollCallback:(void (^)(UIScrollView *))callback { + self.scrollCallback = callback; +} + +- (UIView *)listView { + return self.view; +} + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + self.scrollCallback(scrollView); +} + +#pragma mark - Getters And Setters +- (void)setDynamicInfo:(NSArray *)dynamicInfo { + [self.datasource removeAllObjects]; + [self.datasource addObjectsFromArray:dynamicInfo]; + [self.tableView reloadData]; +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPMonentsTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMonentsTableViewCell class])]; + [_tableView registerClass:[XPMonentsEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMonentsEmptyTableViewCell class])]; + } + return _tableView; +} + + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + +@end diff --git a/YuMi/Modules/YMMonents/View/XPMonentsPublishViewController.h b/YuMi/Modules/YMMonents/View/XPMonentsPublishViewController.h new file mode 100644 index 00000000..a134796d --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMonentsPublishViewController.h @@ -0,0 +1,16 @@ +// +// YMMonentsPublishViewController.h +// YUMI +// +// Created by YUMI on 2022/7/1. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN +@class MonentsTopicModel; +@interface XPMonentsPublishViewController : MvpViewController +@property (nonatomic,strong, nullable) MonentsTopicModel *topicInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/XPMonentsPublishViewController.m b/YuMi/Modules/YMMonents/View/XPMonentsPublishViewController.m new file mode 100644 index 00000000..8f1b11c6 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMonentsPublishViewController.m @@ -0,0 +1,549 @@ +// +// YMMonentsPublishViewController.m +// YUMI +// +// Created by YUMI on 2022/7/1. +// + +#import "XPMonentsPublishViewController.h" +///Third +#import +#import +#import +///Tool +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "Api+Mine.h" +#import "UploadImage.h" +#import "TTPopup.h" +#import "NSArray+Safe.h" +#import "ClientConfig.h" +#import "NSMutableDictionary+Saft.h" +///Model +#import "MonentsTopicModel.h" +#import "MonentsPicResInfo.h" +///View +#import "XPMonentsPublishCollectionViewCell.h" +#import "XPMonentsPublishTopicView.h" +#import "XPMoentsTopicListView.h" +#import "XPMonentPublishSuccessView.h" + +///P +#import "XPMonentsPublishPresenter.h" +#import "XPMonentsPublishProtocol.h" +#define itemWidth (KScreenWidth - 10 * 2 - 15 * 2) / 3.0 // item 宽度 + +@interface XPMonentsPublishViewController () +///显示内容 +@property (nonatomic,strong) UIView * contentView; +///导航栏 +@property (nonatomic,strong) UIView * navView; +///返回按钮 +@property (nonatomic,strong) UIButton *backButton; +///显示文本 +@property (nonatomic,strong) UILabel *titleLabel; +///发布按钮 +@property (nonatomic,strong) UIButton *publishButton; +///显示文本 +@property (nonatomic, strong) SZTextView *textView; +///限制文字 +@property (nonatomic,strong) UILabel *limitLabel; +///分割线 +@property (nonatomic,strong) UIView * lineView; +///列表 +@property (nonatomic,strong) UICollectionView *collectionView; +///添加话题 +@property (nonatomic,strong) XPMonentsPublishTopicView *addTopicView; +///描述 +@property (nonatomic,strong) UILabel *descriptionLabel; +///是否已经编辑过了 +@property (nonatomic,assign) BOOL isEdited; +///添加 +@property (nonatomic,strong) UIImage *addPicImage; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +///图片的源 +@property (nonatomic,strong) NSMutableArray *originAssets; +///图片的上传链接 +@property (nonatomic,strong) NSArray *uploadImageList; +///上传的个数 +@property (nonatomic,assign) int imageCount; +@end + +@implementation XPMonentsPublishViewController + +- (__kindof id)createPresenter { + return [[XPMonentsPublishPresenter alloc] init]; +} + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.navView]; + [self.view addSubview:self.contentView]; + + [self.contentView addSubview:self.textView]; + [self.contentView addSubview:self.limitLabel]; + [self.contentView addSubview:self.lineView]; + [self.contentView addSubview:self.collectionView]; + [self.contentView addSubview:self.addTopicView]; + [self.contentView addSubview:self.descriptionLabel]; + + [self.navView addSubview:self.backButton]; + [self.navView addSubview:self.titleLabel]; + [self.navView addSubview:self.publishButton]; + + [self.datasource addObject:self.addPicImage]; + + self.addTopicView.hidden = ![ClientConfig shareConfig].canOpen; +} + +- (void)initSubViewConstraints { + [self.navView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.height.mas_equalTo(kNavigationHeight); + }]; + + [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.view).mas_offset(10); + make.top.mas_equalTo(statusbarHeight); + make.height.width.mas_equalTo(44); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.navView); + make.centerY.mas_equalTo(self.backButton); + }]; + + [self.publishButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.view).offset(-15); + make.centerY.mas_equalTo(self.titleLabel); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.top.mas_equalTo(self.navView.mas_bottom); + make.bottom.mas_equalTo(self.view); + }]; + + + [self.textView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + make.top.mas_equalTo(self.contentView).offset(10); + make.height.mas_equalTo(150); + }]; + + [self.limitLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.textView.mas_bottom).offset(5); + make.right.mas_equalTo(self.textView); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.limitLabel.mas_bottom).offset(10); + make.left.right.mas_equalTo(self.textView); + make.height.mas_equalTo(1); + }]; + + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + make.top.mas_equalTo(self.lineView.mas_bottom).offset(10); + make.height.mas_equalTo(itemWidth); + }]; + + [self.addTopicView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + make.top.mas_equalTo(self.collectionView.mas_bottom).offset(15); + make.height.mas_equalTo(20); + }]; + + [self.descriptionLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view).inset(20); + make.bottom.mas_equalTo(self.view).offset(-25); + }]; +} + +- (void)uploadAlbumPicList:(NSArray *)array finish:(void(^)(NSArray *list))finish { + dispatch_semaphore_t semaphore = dispatch_semaphore_create(1); + dispatch_queue_t queue = dispatch_get_global_queue(0, 0); + NSMutableArray * dataArray = [NSMutableArray array]; + dispatch_async(queue, ^{ + for (UIImage * image in array) { + dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); + [Api qiniuUpLoadImage:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + NSString *key = data.data[@"key"]; + NSString *token = data.data[@"token"]; + [UploadImage uploadImage:image named:key token:token success:^(NSString * _Nonnull key, NSDictionary * _Nonnull resp) { + dispatch_semaphore_signal(semaphore); + self.imageCount ++; + NSMutableDictionary * dict= [NSMutableDictionary dictionary]; + MonentsPicResInfo * infor = [MonentsPicResInfo modelWithDictionary:resp]; + if (infor.path) { + [dict safeSetObject:infor.path forKey:@"resUrl"]; + } + if (infor.format) { + [dict safeSetObject:infor.format forKey:@"format"]; + } + + if (infor.w) { + [dict safeSetObject:@(infor.w) forKey:@"width"]; + } + + if (infor.h) { + [dict safeSetObject:@(infor.h) forKey:@"height"]; + } + [dataArray addObject:dict]; + if (self.imageCount == array.count) { + dispatch_async(dispatch_get_main_queue(), ^{ + finish(dataArray); + }); + } + + } failure:^(NSNumber * _Nonnull resCode, NSString * _Nonnull message) { + self.imageCount ++; + dispatch_semaphore_signal(semaphore); + }]; + } else { + self.imageCount ++; + dispatch_semaphore_signal(semaphore); + } + }]; + } + }); +} + +#pragma mark - UITextViewDelegate +- (void)textViewDidChange:(UITextView *)textView { + if (textView.text.length > 500) { + [self showErrorToast:YMLocalizedString(@"XPMonentsPublishViewController0")]; + textView.text = [textView.text substringToIndex:500]; + } + self.limitLabel.text = [NSString stringWithFormat:@"%lu/%ld",((unsigned long)textView.text.length), (long)500]; + self.isEdited = textView.text.length > 0; +} + +#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPMonentsPublishCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPMonentsPublishCollectionViewCell class]) forIndexPath:indexPath]; + UIImage * image = [self.datasource safeObjectAtIndex1:indexPath.row]; + if (indexPath.row == (self.datasource.count -1)) { + cell.isShowDelete = self.datasource.count == 9; + } else { + cell.isShowDelete = YES; + } + cell.image = image; + cell.delegate = self; + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + [collectionView deselectItemAtIndexPath:indexPath animated:YES]; + if (indexPath.row == (self.datasource.count -1) && self.datasource.count != 9) { + [self.textView resignFirstResponder]; + TZImagePickerController *imagePickerVc = [[TZImagePickerController alloc] initWithMaxImagesCount:1 delegate:self]; + imagePickerVc.modalPresentationStyle = UIModalPresentationOverFullScreen; + imagePickerVc.allowPickingVideo = NO; + imagePickerVc.allowTakeVideo = NO; + imagePickerVc.maxImagesCount = 9; + imagePickerVc.naviBgColor = [DJDKMIMOMColor appCellBackgroundColor]; + imagePickerVc.naviTitleColor = [DJDKMIMOMColor mainTextColor]; + imagePickerVc.barItemTextColor = [DJDKMIMOMColor mainTextColor]; + imagePickerVc.selectedAssets = self.originAssets; + [self presentViewController:imagePickerVc animated:YES completion:nil]; + } +} + +#pragma mark - XPMonentsPublishCollectionViewCellDelegate +- (void)XPMonentsPublishCollectionViewCell:(XPMonentsPublishCollectionViewCell *)view didDeleteItem:(UIImage *)image { + [TTPopup alertWithMessage:@"确认删除吗?" confirmHandler:^{ + if ([self.datasource containsObject:image]) { + [self.datasource removeObject:image]; + } + NSIndexPath * indexPath = [self.collectionView indexPathForCell:view]; + if (indexPath.row < self.originAssets.count) { + [self.originAssets removeObjectAtIndex:indexPath.row]; + } + + [self.collectionView reloadData]; + if (self.datasource.count > 1) { + self.isEdited = YES; + } else { + self.isEdited = NO; + } + } cancelHandler:^{ + + }]; +} + +# pragma mark - TZImagePickerControllerDelegate +- (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingPhotos:(NSArray *)photos sourceAssets:(NSArray *)assets isSelectOriginalPhoto:(BOOL)isSelectOriginalPhoto infos:(NSArray *)infos { + [self.datasource removeAllObjects]; + [self.originAssets removeAllObjects]; + [self.datasource addObjectsFromArray:photos]; + [self.originAssets addObjectsFromArray:assets]; + if (self.datasource.count >= 9) { + if ([self.datasource containsObject:self.addPicImage]) { + [self.datasource removeObject:self.addPicImage]; + } + } else { + if (![self.datasource containsObject:self.addPicImage]) { + [self.datasource addObject:self.addPicImage]; + } + } + + int page = (int)self.datasource.count / 3; + int scale = self.datasource.count % 3; + CGFloat height; + if (scale == 0) { + height = (itemWidth + 10) * page; + } else { + height = (itemWidth + 10) * (page + 1); + } + + [self.collectionView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(height); + }]; + [self.collectionView reloadData]; + if (self.datasource.count > 1) { + self.isEdited = YES; + } else { + self.isEdited = NO; + } + NSArray * array; + if (self.datasource.count < 9 && self.datasource.count > 1) { + array = [self.datasource subarrayWithRange:NSMakeRange(0, self.datasource.count - 1)]; + } + self.uploadImageList = array; +} + +#pragma mark - XPMonentsPublishTopicViewDelegate +- (void)xPMonentsPublishTopicView:(XPMonentsPublishTopicView *)view didClickCloseButton:(UIButton *)sender { + self.topicInfo = nil; +} + +- (void)xPMonentsPublishTopicView:(XPMonentsPublishTopicView *)view didClickChooseTopic:(UIButton *)sender { + [self.textView resignFirstResponder]; + XPMoentsTopicListView * topicListView = [[XPMoentsTopicListView alloc] init]; + topicListView.delegate = self; + [TTPopup popupView:topicListView style:TTPopupStyleActionSheet]; +} + +#pragma mark - XPMoentsTopicListViewDelegate +- (void)xPMoentsTopicListView:(XPMoentsTopicListView *)view didSelectItem:(MonentsTopicModel *)topicInfo { + [TTPopup dismiss]; + self.topicInfo = topicInfo; +} + +#pragma mark - XPMonentsPublishProtocol +- (void)publishMonentsSuccess { + XPMonentPublishSuccessView * successView = [[XPMonentPublishSuccessView alloc] init]; + TTPopupService *service = [[TTPopupService alloc] init]; + service.contentView = successView; + service.filterIdentifier = NSStringFromClass([XPMonentPublishSuccessView class]); + service.shouldFilterPopup = YES; + service.didFinishDismissHandler = ^(BOOL isDismissOnBackgroundTouch) { + [self.navigationController popViewControllerAnimated:YES]; + }; + [TTPopup popupWithConfig:service]; + + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [TTPopup dismiss]; + [self.navigationController popViewControllerAnimated:YES]; + }); +} +#pragma mark - Event Response +- (void)backButtonAction:(UIButton *)sender { + if (self.isEdited) { + TTAlertConfig * config = [[TTAlertConfig alloc] init]; + config.title = YMLocalizedString(@"XPMonentsPublishViewController2"); + config.message = @"还没有发布哎~确定要返回吗?"; + config.confirmButtonConfig.title = YMLocalizedString(@"XPMonentsPublishViewController4"); + config.cancelButtonConfig.title = YMLocalizedString(@"XPMonentsPublishViewController5"); + [TTPopup alertWithConfig:config confirmHandler:^{ + + } cancelHandler:^{ + [self.navigationController popViewControllerAnimated:YES]; + }]; + } else { + [self.navigationController popViewControllerAnimated:YES]; + } +} + + +- (void)publicButtonAction:(UIButton *)sender { + [self.view endEditing:YES]; + if (self.textView.text.length > 0 || self.uploadImageList.count > 0) { + if (self.uploadImageList.count > 0) { + [self showLoading]; + [self uploadAlbumPicList:self.uploadImageList finish:^(NSArray *list) { + [self hideHUD]; + [self.presenter publishMonents:self.topicInfo.worldId type:MonentsContentType_Picture content:self.textView.text resList:list]; + }]; + } else { + [self.presenter publishMonents:self.topicInfo.worldId type:MonentsContentType_Text content:self.textView.text resList:@[]]; + } + } else { + [self showErrorToast:YMLocalizedString(@"XPMonentsPublishViewController6")]; + } +} + +#pragma mark - Getters And Setters +- (void)setTopicInfo:(MonentsTopicModel *)topicInfo { + _topicInfo = topicInfo; + self.addTopicView.topicInfo = _topicInfo; +} + +- (UIView *)navView { + if (!_navView) { + _navView = [[UIView alloc] init]; + _navView.backgroundColor = [UIColor clearColor]; + } + return _navView; +} + +- (UIButton *)backButton { + if (!_backButton) { + _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateNormal]; + [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateSelected]; + [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _backButton; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.font = [UIFont systemFontOfSize:17]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _titleLabel.text = YMLocalizedString(@"XPMonentsPublishViewController7"); + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} + +- (UIButton *)publishButton { + if (!_publishButton) { + _publishButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_publishButton setTitle:YMLocalizedString(@"XPMonentsPublishViewController8") forState:UIControlStateNormal]; + [_publishButton setTitleColor:[DJDKMIMOMColor appMainColor] forState:UIControlStateNormal]; + _publishButton.titleLabel.font = [UIFont systemFontOfSize:17]; + [_publishButton addTarget:self action:@selector(publicButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _publishButton; +} + +- (UIView *)contentView { + if (!_contentView) { + _contentView = [[UIView alloc] init]; + _contentView.backgroundColor = [UIColor clearColor]; + } + return _contentView; +} + + +- (UICollectionView *)collectionView { + if (!_collectionView) { + UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init]; + flowLayout.minimumInteritemSpacing = 10; + flowLayout.minimumLineSpacing = 10; + flowLayout.sectionInset = UIEdgeInsetsZero; + flowLayout.itemSize = CGSizeMake(itemWidth, itemWidth); + UICollectionView *collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:flowLayout]; + collectionView.delegate = self; + collectionView.dataSource = self; + collectionView.backgroundColor = [UIColor clearColor]; + [collectionView registerClass:XPMonentsPublishCollectionViewCell.class forCellWithReuseIdentifier:NSStringFromClass([XPMonentsPublishCollectionViewCell class])]; + _collectionView = collectionView; + } + return _collectionView; +} + + +- (SZTextView *)textView { + if (!_textView) { + _textView = [[SZTextView alloc] init]; + _textView.textColor = [DJDKMIMOMColor mainTextColor]; + _textView.font = [UIFont systemFontOfSize:15]; + _textView.placeholder = @"记录你此刻生活,分享给有趣的人看..."; + _textView.placeholderTextColor = [DJDKMIMOMColor secondTextColor]; + _textView.backgroundColor = [UIColor clearColor]; + _textView.delegate = self; + } + return _textView; +} + +- (UILabel *)limitLabel { + if (!_limitLabel) { + _limitLabel = [[UILabel alloc] init]; + _limitLabel.text = @"0/500"; + _limitLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _limitLabel.font = [UIFont systemFontOfSize:12]; + _limitLabel.textAlignment = NSTextAlignmentRight; + } + return _limitLabel; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _lineView; +} + +- (UILabel *)descriptionLabel { + if (!_descriptionLabel) { + _descriptionLabel = [[UILabel alloc] init]; + _descriptionLabel.text = @"禁止出现商业广告、微信号码、QQ号码、电话号码, 以及低俗、色情、恐怖、暴力和具有侮辱性语言等内容,违规者封号处理 !"; + _descriptionLabel.font = [UIFont systemFontOfSize:11]; + _descriptionLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _descriptionLabel.numberOfLines = 0; + } + return _descriptionLabel; +} + +- (XPMonentsPublishTopicView *)addTopicView { + if (!_addTopicView) { + _addTopicView = [[XPMonentsPublishTopicView alloc] init]; + _addTopicView.delegate = self; + } + return _addTopicView; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + +- (UIImage *)addPicImage { + if (!_addPicImage) { + _addPicImage = [UIImage imageNamed:@"mine_user_info_album_add"]; + } + return _addPicImage; +} + +- (NSMutableArray *)originAssets { + if (!_originAssets) { + _originAssets = [NSMutableArray array]; + } + return _originAssets; +} +@end diff --git a/YuMi/Modules/YMMonents/View/XPMonentsRecommendViewController.h b/YuMi/Modules/YMMonents/View/XPMonentsRecommendViewController.h new file mode 100644 index 00000000..8af2cc96 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMonentsRecommendViewController.h @@ -0,0 +1,16 @@ +// +// YMMonentsRecommendViewController.h +// YUMI +// +// Created by YUMI on 2022/5/11. +// + +#import "MvpViewController.h" +#import +NS_ASSUME_NONNULL_BEGIN + +@interface XPMonentsRecommendViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/XPMonentsRecommendViewController.m b/YuMi/Modules/YMMonents/View/XPMonentsRecommendViewController.m new file mode 100644 index 00000000..89d761ff --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMonentsRecommendViewController.m @@ -0,0 +1,311 @@ +// +// YMMonentsRecommendViewController.m +// YUMI +// +// Created by YUMI on 2022/5/11. +// + +#import "XPMonentsRecommendViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "XPMonentsLayoutConfig.h" +#import "TTPopup.h" +#import "NSArray+Safe.h" +#import "ClientConfig.h" +///Model +#import "MonentsInfoModel.h" +#import "MonentsTopicModel.h" +///P +#import "XPMonentsRecommendPresenter.h" +#import "XPMonentsRecommendProtocol.h" +///View +#import "XPMonentsTableViewCell.h" +#import "XPMonentsEmptyTableViewCell.h" +#import "XPMonentsRecommendHeaderView.h" +#import "XPMonentsDetailViewController.h" +#import "XPMomentsSimpleDetailViewController.h" +#import "XPMonentTopicContainerViewController.h" +#import "XPMoentsTopicListViewController.h" + +@interface XPMonentsRecommendViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +///当前的页数 +@property (nonatomic,assign) NSInteger page; +///是否有更多的数据 +@property (nonatomic,assign) BOOL hasNoMoreData; +///顶部视图 +@property (nonatomic,strong) XPMonentsRecommendHeaderView *headerView; +@end + +@implementation XPMonentsRecommendViewController + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (__kindof id)createPresenter { + return [[XPMonentsRecommendPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initHeaderAndFooterRrfresh]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.tableView]; + self.tableView.tableHeaderView = self.headerView; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +#pragma mark - 下拉刷新 +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; + + [self headerRefresh]; +} + +#pragma mark - 刷新的fangfa +- (void)headerRefresh { + self.page = 1; + [self.presenter getMonentsRecommendList:self.page pageSize:20 state:0]; + [self.presenter getMonentsTopicList:self.page pageSize:20]; +} + +- (void)footerRefresh { + if (self.hasNoMoreData) { + [self showErrorToast:YMLocalizedString(@"XPMonentsRecommendViewController0")]; + [self.tableView.mj_footer endRefreshing]; + return; + } + self.page++; + [self.presenter getMonentsRecommendList:self.page pageSize:20 state:1]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + MonentsInfoModel * monentInfo= [self.datasource safeObjectAtIndex1:indexPath.row]; + [XPMonentsLayoutConfig layoutMonentsModel:monentInfo]; + return monentInfo.rowHeight; + } + return KScreenHeight - kNavigationHeight - 49 - kSafeAreaBottomHeight; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPMonentsTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMonentsTableViewCell class])]; + MonentsInfoModel * monentsInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.monentsInfo = monentsInfo; + cell.delegate = self; + return cell; + } + XPMonentsEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMonentsEmptyTableViewCell class])]; + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + + MonentsInfoModel * monentsInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + + if ([ClientConfig shareConfig].canOpen) { + XPMonentsDetailViewController * detailVC = [[XPMonentsDetailViewController alloc] init]; + detailVC.monentsInfo = monentsInfo; + detailVC.delegate = self; + [self.navigationController pushViewController:detailVC animated:YES]; + }else{ + XPMomentsSimpleDetailViewController * detailVC = [[XPMomentsSimpleDetailViewController alloc] init]; + detailVC.monentsInfo = monentsInfo; + detailVC.delegate = self; + [self.navigationController pushViewController:detailVC animated:YES]; + } + } +} +#pragma mark - XPMonentsDetailViewControllerDelegate +- (void)xPMonentsDetailViewController:(XPMonentsDetailViewController *)view deleteMonents:(NSString *)dynamicId { + __block MonentsInfoModel * deleteInfo; + [self.datasource enumerateObjectsUsingBlock:^(MonentsInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.dynamicId.integerValue == dynamicId.integerValue) { + deleteInfo = obj; + } + }]; + + if (deleteInfo) { + [self.datasource removeObject:deleteInfo]; + [self.tableView reloadData]; + } +} + +#pragma mark - XPMonentsTableViewCellDelegate +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClickLike:(MonentsInfoModel *)monentsInfo { + [self.presenter likeMonent:monentsInfo.dynamicId status:!monentsInfo.isLike likedUid:monentsInfo.uid worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; +} + +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClicDelete:(MonentsInfoModel *)monentsInfo { + [TTPopup alertWithMessage:@"删除后不可恢复\n确定删除该动态吗?" confirmHandler:^{ + [self.presenter deleteMonents:monentsInfo.dynamicId worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; + } cancelHandler:^{ + + }]; +} + +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClicFold:(MonentsInfoModel *)monentsInfo { + __block MonentsInfoModel * monentsInfos; + [self.datasource enumerateObjectsUsingBlock:^(MonentsInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.dynamicId.integerValue == monentsInfo.dynamicId.integerValue) { + monentsInfos = obj; + *stop = YES; + } + }]; + if (monentsInfos) { + NSInteger row = [self.datasource indexOfObject:monentsInfo]; + [self.tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:row inSection:0]] withRowAnimation:UITableViewRowAnimationNone]; + } +} + +#pragma mark - XPMonentsRecommendHeaderViewDelegate +- (void)xPMonentsRecommendHeaderView:(XPMonentsRecommendHeaderView *)view didSelectItem:(MonentsTopicModel *)info { + XPMonentTopicContainerViewController * topicVC = [[XPMonentTopicContainerViewController alloc] init]; + topicVC.worldId = info.tId; + [self.navigationController pushViewController:topicVC animated:YES]; +} + +- (void)xPMonentsRecommendHeaderView:(XPMonentsRecommendHeaderView *)view didClickMoreTopic:(UIButton *)sender { + XPMoentsTopicListViewController * topicListVC = [[XPMoentsTopicListViewController alloc] init]; + [self.navigationController pushViewController:topicListVC animated:YES]; +} + +#pragma mark -JXCategoryListContainerViewDelegate +- (UIView *)listView { + return self.view; +} + +#pragma mark - XPMonentsRecommendProtocol +- (void)getMonentsRecommendListSuccess:(NSArray *)array state:(int)state { + if (state == 0) { + [self.datasource removeAllObjects]; + } + if (array.count > 0) { + [self.datasource addObjectsFromArray:array]; + } + + if (state == 0) { + self.hasNoMoreData = NO; + [self.tableView.mj_header endRefreshing]; + } else { + if (array.count > 0) { + self.hasNoMoreData = NO; + } else { + self.hasNoMoreData = YES; + } + [self.tableView.mj_footer endRefreshing]; + } + [self.tableView reloadData]; +} + +- (void)getMonentsRecommendListFail:(NSString *)msg state:(int)state { + if (state == 0) { + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } +} + +- (void)monentsTopicListSuccess:(NSArray *)array { + self.headerView.topicList = array; +} + +- (void)likeMonentsSuccess:(NSString *)dynamicId status:(BOOL)status { + [self.datasource enumerateObjectsUsingBlock:^(MonentsInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj.dynamicId isEqualToString:dynamicId]) { + if (status) { + obj.isLike += 1; + } else { + obj.isLike -= 1; + } + *stop = YES; + } + }]; + [self.tableView reloadData]; +} + +- (void)deleteMonentsSuccess:(NSString *)monentsInfo { + [self showSuccessToast:YMLocalizedString(@"XPMonentsRecommendViewController2")]; + __block MonentsInfoModel * deleteInfo; + [self.datasource enumerateObjectsUsingBlock:^(MonentsInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.dynamicId.integerValue == monentsInfo.integerValue) { + deleteInfo = obj; + } + }]; + if (deleteInfo) { + [self.datasource removeObject:deleteInfo]; + [self.tableView reloadData]; + } +} + +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPMonentsTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMonentsTableViewCell class])]; + [_tableView registerClass:[XPMonentsEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMonentsEmptyTableViewCell class])]; + } + return _tableView; +} + + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + +- (XPMonentsRecommendHeaderView *)headerView { + if (!_headerView) { + _headerView = [[XPMonentsRecommendHeaderView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 110)]; + _headerView.delegate = self; + } + return _headerView; +} + +@end diff --git a/YuMi/Modules/YMMonents/View/XPMonentsTopicLatestViewController.h b/YuMi/Modules/YMMonents/View/XPMonentsTopicLatestViewController.h new file mode 100644 index 00000000..0e94600c --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMonentsTopicLatestViewController.h @@ -0,0 +1,17 @@ +// +// YMMonentsTopicLatestViewController.h +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import "MvpViewController.h" +#import +NS_ASSUME_NONNULL_BEGIN + +@interface XPMonentsTopicLatestViewController : MvpViewController +@property (nonatomic,copy) NSString *worldId; +@property (nonatomic, copy) void(^scrollCallback)(UIScrollView *scrollView); +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/XPMonentsTopicLatestViewController.m b/YuMi/Modules/YMMonents/View/XPMonentsTopicLatestViewController.m new file mode 100644 index 00000000..3638bdce --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMonentsTopicLatestViewController.m @@ -0,0 +1,291 @@ +// +// YMMonentsTopicLatestViewController.m +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import "XPMonentsTopicLatestViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "XPMonentsLayoutConfig.h" +#import "TTPopup.h" +#import "NSArray+Safe.h" +#import "ClientConfig.h" +///Model +#import "MonentsListInfoModel.h" +///P +#import "XPMonentsTopicLatestPresenter.h" +#import "XPMonentsTopicLatestProtocol.h" +///View +#import "XPMonentsTableViewCell.h" +#import "XPMonentsEmptyTableViewCell.h" +#import "XPMonentsDetailViewController.h" +#import "XPMomentsSimpleDetailViewController.h" + +@interface XPMonentsTopicLatestViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +///是否有更多的数据 +@property (nonatomic,assign) BOOL hasNoMoreData; +///数据信息 +@property (nonatomic,strong) MonentsListInfoModel *listInfo; +@end + +@implementation XPMonentsTopicLatestViewController + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (__kindof id)createPresenter { + return [[XPMonentsTopicLatestPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initHeaderAndFooterRrfresh]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +#pragma mark - 下拉刷新 +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; + + [self headerRefresh]; +} + +#pragma mark - 刷新的fangfa +- (void)headerRefresh { + [self.presenter getMonentsTopicLatestList:@"" worldId:self.worldId state:0]; +} + +- (void)footerRefresh { + if (self.hasNoMoreData) { + [self showErrorToast:YMLocalizedString(@"XPMonentsTopicLatestViewController0")]; + [self.tableView.mj_footer endRefreshing]; + return; + } + [self.presenter getMonentsTopicLatestList:self.listInfo.nextDynamicId worldId:self.worldId state:1]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + MonentsInfoModel * monentInfo= [self.datasource safeObjectAtIndex1:indexPath.row]; + [XPMonentsLayoutConfig layoutMonentsModel:monentInfo]; + return monentInfo.rowHeight; + } + return KScreenHeight - kNavigationHeight - 49 - kSafeAreaBottomHeight; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPMonentsTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMonentsTableViewCell class])]; + MonentsInfoModel * monentsInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.delegate = self; + cell.monentsInfo = monentsInfo; + return cell; + } + XPMonentsEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMonentsEmptyTableViewCell class])]; + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + + if ([ClientConfig shareConfig].canOpen) { + XPMonentsDetailViewController * detailVC = [[XPMonentsDetailViewController alloc] init]; + MonentsInfoModel * monentsInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + detailVC.monentsInfo = monentsInfo; + detailVC.delegate = self; + [self.navigationController pushViewController:detailVC animated:YES]; + }else{ + XPMomentsSimpleDetailViewController * detailVC = [[XPMomentsSimpleDetailViewController alloc] init]; + MonentsInfoModel * monentsInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + detailVC.monentsInfo = monentsInfo; + detailVC.delegate = self; + [self.navigationController pushViewController:detailVC animated:YES]; + } + } +} +#pragma mark - XPMonentsTableViewCellDelegate +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClickLike:(MonentsInfoModel *)monentsInfo { + [self.presenter likeMonent:monentsInfo.dynamicId status:!monentsInfo.isLike likedUid:monentsInfo.uid worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; +} + +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClicDelete:(MonentsInfoModel *)monentsInfo { + [TTPopup alertWithMessage:@"删除后不可恢复\n确定删除该动态吗?" confirmHandler:^{ + [self.presenter deleteMonents:monentsInfo.dynamicId worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; + } cancelHandler:^{ + + }]; +} + +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClicFold:(MonentsInfoModel *)monentsInfo { + __block MonentsInfoModel * monentsInfos; + [self.datasource enumerateObjectsUsingBlock:^(MonentsInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.dynamicId.integerValue == monentsInfo.dynamicId.integerValue) { + monentsInfos = obj; + *stop = YES; + } + }]; + if (monentsInfos) { + NSInteger row = [self.datasource indexOfObject:monentsInfo]; + [self.tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:row inSection:0]] withRowAnimation:UITableViewRowAnimationNone]; + } +} + +#pragma mark - JXPagingViewListViewDelegate +- (UIScrollView *)listScrollView { + return self.tableView; +} + +- (void)listViewDidScrollCallback:(void (^)(UIScrollView *))callback { + self.scrollCallback = callback; +} + +- (UIView *)listView { + return self.view; +} + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + self.scrollCallback(scrollView); +} + +#pragma mark - XPMonentsDetailViewControllerDelegate +- (void)xPMonentsDetailViewController:(XPMonentsDetailViewController *)view deleteMonents:(NSString *)dynamicId { + __block MonentsInfoModel * deleteInfo; + [self.datasource enumerateObjectsUsingBlock:^(MonentsInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.dynamicId.integerValue == dynamicId.integerValue) { + deleteInfo = obj; + } + }]; + + if (deleteInfo) { + [self.datasource removeObject:deleteInfo]; + [self.tableView reloadData]; + } +} + +#pragma mark - XPMonentsTopicLatestProtocol +- (void)getMonentsTopicLatestListSuccess:(MonentsListInfoModel *)listInfo state:(int)state{ + self.listInfo = listInfo; + if (state == 0) { + [self.datasource removeAllObjects]; + } + if (listInfo.dynamicList.count > 0) { + [self.datasource addObjectsFromArray:listInfo.dynamicList]; + } + + if (state == 0) { + self.hasNoMoreData = NO; + [self.tableView.mj_header endRefreshing]; + } else { + if (listInfo.dynamicList.count > 0) { + self.hasNoMoreData = NO; + } else { + self.hasNoMoreData = YES; + } + [self.tableView.mj_footer endRefreshing]; + } + [self.tableView reloadData]; +} + +- (void)getMonentsTopicLatestListFail:(NSString *)msg state:(int)state { + if (state == 0) { + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } +} + +- (void)likeMonentsSuccess:(NSString *)dynamicId status:(BOOL)status { + [self.datasource enumerateObjectsUsingBlock:^(MonentsInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj.dynamicId isEqualToString:dynamicId]) { + if (status) { + obj.isLike += 1; + } else { + obj.isLike -= 1; + } + *stop = YES; + } + }]; + [self.tableView reloadData]; +} + +- (void)deleteMonentsSuccess:(NSString *)monentsInfo { + [self showSuccessToast:YMLocalizedString(@"XPMonentsTopicLatestViewController2")]; + __block MonentsInfoModel * deleteInfo; + [self.datasource enumerateObjectsUsingBlock:^(MonentsInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.dynamicId.integerValue == monentsInfo.integerValue) { + deleteInfo = obj; + } + }]; + + if (deleteInfo) { + [self.datasource removeObject:deleteInfo]; + [self.tableView reloadData]; + } +} + +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPMonentsTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMonentsTableViewCell class])]; + [_tableView registerClass:[XPMonentsEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMonentsEmptyTableViewCell class])]; + } + return _tableView; +} + + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + +@end diff --git a/YuMi/Modules/YMMonents/View/XPMonentsTopicRecommondViewController.h b/YuMi/Modules/YMMonents/View/XPMonentsTopicRecommondViewController.h new file mode 100644 index 00000000..1589a9c4 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMonentsTopicRecommondViewController.h @@ -0,0 +1,18 @@ +// +// YMMonentsTopicRecommondViewController.h +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import "MvpViewController.h" +#import +NS_ASSUME_NONNULL_BEGIN + +@interface XPMonentsTopicRecommondViewController : MvpViewController +@property (nonatomic,strong) NSString *worldId; + +@property (nonatomic, copy) void(^scrollCallback)(UIScrollView *scrollView); +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/XPMonentsTopicRecommondViewController.m b/YuMi/Modules/YMMonents/View/XPMonentsTopicRecommondViewController.m new file mode 100644 index 00000000..f17096f2 --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMonentsTopicRecommondViewController.m @@ -0,0 +1,291 @@ +// +// YMMonentsTopicRecommondViewController.m +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import "XPMonentsTopicRecommondViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "XPMonentsLayoutConfig.h" +#import "TTPopup.h" +#import "NSArray+Safe.h" +#import "ClientConfig.h" +///Model +#import "MonentsListInfoModel.h" +///P +#import "XPMonentsTopicRecommendPresenter.h" +#import "XPMonentsTopicRecommendProtocol.h" +///View +#import "XPMonentsTableViewCell.h" +#import "XPMonentsEmptyTableViewCell.h" +#import "XPMonentsDetailViewController.h" +#import "XPMomentsSimpleDetailViewController.h" + +@interface XPMonentsTopicRecommondViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +///是否有更多的数据 +@property (nonatomic,assign) BOOL hasNoMoreData; +///数据信息 +@property (nonatomic,strong) MonentsListInfoModel *listInfo; +@end + +@implementation XPMonentsTopicRecommondViewController + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (__kindof id)createPresenter { + return [[XPMonentsTopicRecommendPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initHeaderAndFooterRrfresh]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +#pragma mark - 下拉刷新 +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; + + [self headerRefresh]; +} + +#pragma mark - 刷新的fangfa +- (void)headerRefresh { + [self.presenter getMonentsTopicRecommendList:@"" worldId:self.worldId state:0]; +} + +- (void)footerRefresh { + if (self.hasNoMoreData) { + [self showErrorToast:YMLocalizedString(@"XPMonentsTopicRecommondViewController0")]; + [self.tableView.mj_footer endRefreshing]; + return; + } + [self.presenter getMonentsTopicRecommendList:self.listInfo.nextDynamicId worldId:self.worldId state:1]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + MonentsInfoModel * monentInfo= [self.datasource safeObjectAtIndex1:indexPath.row]; + [XPMonentsLayoutConfig layoutMonentsModel:monentInfo]; + return monentInfo.rowHeight; + } + return KScreenHeight - kNavigationHeight - 49 - kSafeAreaBottomHeight; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPMonentsTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMonentsTableViewCell class])]; + MonentsInfoModel * monentsInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.delegate = self; + cell.monentsInfo = monentsInfo; + return cell; + } + XPMonentsEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMonentsEmptyTableViewCell class])]; + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + + if ([ClientConfig shareConfig].canOpen) { + XPMonentsDetailViewController * detailVC = [[XPMonentsDetailViewController alloc] init]; + MonentsInfoModel * monentsInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + detailVC.monentsInfo = monentsInfo; + detailVC.delegate = self; + [self.navigationController pushViewController:detailVC animated:YES]; + }else{ + XPMomentsSimpleDetailViewController * detailVC = [[XPMomentsSimpleDetailViewController alloc] init]; + MonentsInfoModel * monentsInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + detailVC.monentsInfo = monentsInfo; + detailVC.delegate = self; + [self.navigationController pushViewController:detailVC animated:YES]; + } + } +} + +#pragma mark - XPMonentsDetailViewControllerDelegate +- (void)xPMonentsDetailViewController:(XPMonentsDetailViewController *)view deleteMonents:(NSString *)dynamicId { + __block MonentsInfoModel * deleteInfo; + [self.datasource enumerateObjectsUsingBlock:^(MonentsInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.dynamicId.integerValue == dynamicId.integerValue) { + deleteInfo = obj; + } + }]; + + if (deleteInfo) { + [self.datasource removeObject:deleteInfo]; + [self.tableView reloadData]; + } +} + +#pragma mark - XPMonentsTableViewCellDelegate +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClickLike:(MonentsInfoModel *)monentsInfo { + [self.presenter likeMonent:monentsInfo.dynamicId status:!monentsInfo.isLike likedUid:monentsInfo.uid worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; +} + +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClicDelete:(MonentsInfoModel *)monentsInfo { + [TTPopup alertWithMessage:@"删除后不可恢复\n确定删除该动态吗?" confirmHandler:^{ + [self.presenter deleteMonents:monentsInfo.dynamicId worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; + } cancelHandler:^{ + + }]; +} + +- (void)xPMonentsTableViewCell:(XPMonentsTableViewCell *)view didClicFold:(MonentsInfoModel *)monentsInfo { + __block MonentsInfoModel * monentsInfos; + [self.datasource enumerateObjectsUsingBlock:^(MonentsInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.dynamicId.integerValue == monentsInfo.dynamicId.integerValue) { + monentsInfos = obj; + *stop = YES; + } + }]; + if (monentsInfos) { + NSInteger row = [self.datasource indexOfObject:monentsInfo]; + [self.tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:row inSection:0]] withRowAnimation:UITableViewRowAnimationNone]; + } +} + +#pragma mark - JXPagingViewListViewDelegate +- (UIScrollView *)listScrollView { + return self.tableView; +} + +- (void)listViewDidScrollCallback:(void (^)(UIScrollView *))callback { + self.scrollCallback = callback; +} + +- (UIView *)listView { + return self.view; +} + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + self.scrollCallback(scrollView); +} + +#pragma mark - XPMonentsRecommendProtocol +- (void)getMonentsTopicRecommendListSuccess:(MonentsListInfoModel *)listInfo state:(int)state { + self.listInfo = listInfo; + if (state == 0) { + [self.datasource removeAllObjects]; + } + if (listInfo.dynamicList.count > 0) { + [self.datasource addObjectsFromArray:listInfo.dynamicList]; + } + + if (state == 0) { + self.hasNoMoreData = NO; + [self.tableView.mj_header endRefreshing]; + } else { + if (listInfo.dynamicList.count > 0) { + self.hasNoMoreData = NO; + } else { + self.hasNoMoreData = YES; + } + [self.tableView.mj_footer endRefreshing]; + } + [self.tableView reloadData]; +} + +- (void)getMonentsTopicRecommendListFail:(NSString *)msg state:(int)state { + if (state == 0) { + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } +} + +- (void)likeMonentsSuccess:(NSString *)dynamicId status:(BOOL)status { + [self.datasource enumerateObjectsUsingBlock:^(MonentsInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj.dynamicId isEqualToString:dynamicId]) { + if (status) { + obj.isLike += 1; + } else { + obj.isLike -= 1; + } + *stop = YES; + } + }]; + [self.tableView reloadData]; +} + +- (void)deleteMonentsSuccess:(NSString *)monentsInfo { + [self showSuccessToast:YMLocalizedString(@"XPMonentsTopicRecommondViewController2")]; + __block MonentsInfoModel * deleteInfo; + [self.datasource enumerateObjectsUsingBlock:^(MonentsInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.dynamicId.integerValue == monentsInfo.integerValue) { + deleteInfo = obj; + } + }]; + + if (deleteInfo) { + [self.datasource removeObject:deleteInfo]; + [self.tableView reloadData]; + } +} + +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPMonentsTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMonentsTableViewCell class])]; + [_tableView registerClass:[XPMonentsEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMonentsEmptyTableViewCell class])]; + } + return _tableView; +} + + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} +@end diff --git a/YuMi/Modules/YMMonents/View/XPMonentsViewController.h b/YuMi/Modules/YMMonents/View/XPMonentsViewController.h new file mode 100644 index 00000000..a89500ac --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMonentsViewController.h @@ -0,0 +1,16 @@ +// +// YMMonentsViewController.h +// YUMI +// +// Created by YUMI on 2022/5/11. +// + +#import "BaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMonentsViewController : BaseViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/XPMonentsViewController.m b/YuMi/Modules/YMMonents/View/XPMonentsViewController.m new file mode 100644 index 00000000..eff09e3d --- /dev/null +++ b/YuMi/Modules/YMMonents/View/XPMonentsViewController.m @@ -0,0 +1,279 @@ +// +// YMMonentsViewController.m +// YUMI +// +// Created by YUMI on 2022/5/11. +// + +#import "XPMonentsViewController.h" +///Third +#import +#import +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +///Tool +#import "AttachMentModel.h" +#import "MonentsUnReadModel.h" +///View +#import "XPMonentsRecommendViewController.h" +#import "XPMonentsAttentionViewController.h" +#import "XPMonentsLatestViewController.h" +#import "XPMonentsInteractiveViewController.h" +#import "XPMonentsPublishViewController.h" + +@interface XPMonentsViewController () +///标题 +@property (nonatomic,strong) NSArray *titles; +///导航栏 +@property (nonatomic,strong) UIView * navView; +///显示小红点 +@property (nonatomic,strong) UIView * dotView; +///消息的 +@property (nonatomic,strong) UIButton *messageButton; +///滑块 +@property (nonatomic,strong) JXCategoryTitleView *titleView; +@property (nonatomic, strong) JXCategoryListContainerView *listContainerView; +///发布的按钮 +@property (nonatomic,strong) UIButton *publishButton; +///关注 +@property (nonatomic,strong) XPMonentsAttentionViewController * attentionVC ; +///最新的 +@property (nonatomic,strong) XPMonentsLatestViewController *latestVC; +///推荐 +@property (nonatomic,strong) XPMonentsRecommendViewController * recommendVC; +@end + +@implementation XPMonentsViewController +@synthesize parentMode = _parentMode; + +- (void)dealloc { + [[NIMSDK sharedSDK].systemNotificationManager removeDelegate:self]; +} + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [[NIMSDK sharedSDK].systemNotificationManager addDelegate:self]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.navView]; + [self.view addSubview:self.listContainerView]; + [self.view addSubview:self.publishButton]; + + [self.navView addSubview:self.titleView]; + [self.navView addSubview:self.messageButton]; + [self.navView addSubview:self.dotView]; +} + +- (void)initSubViewConstraints { + [self.navView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.height.mas_equalTo(kNavigationHeight); + }]; + + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.navView); + make.height.mas_equalTo(20); + make.top.mas_equalTo(self.navView).offset(kSafeAreaTopHeight + 40); + }]; + + [self.messageButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.titleView); + make.right.mas_equalTo(self.navView).offset(-15); + make.size.mas_equalTo(CGSizeMake(22, 22)); + }]; + + [self.dotView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(10, 10)); + make.centerY.mas_equalTo(self.messageButton.mas_top); + make.centerX.mas_equalTo(self.messageButton.mas_right); + }]; + + [self.listContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.top.mas_equalTo(self.navView.mas_bottom); + }]; + + [self.publishButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(45, 45)); + make.bottom.mas_equalTo(self.view).offset(-kSafeAreaBottomHeight - 60); + make.right.mas_equalTo(self.view).offset(-25); + }]; +} + +#pragma mark - JXCategoryListContainerViewDelegate +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { + return self.titles.count; +} + +// 根据下标 index 返回对应遵守并实现 `JXCategoryListContentViewDelegate` 协议的列表实例 +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { + UIViewController * list = (UIViewController *)[self.listContainerView.validListDict objectForKey:[NSNumber numberWithInteger:index]]; + if (list) { + return list; + } else { + if (index == 0) { + return self.attentionVC; + }else if (index == 1) { + return self.recommendVC; + } else if(index == 2) { + return self.latestVC; + } + return nil; + } + +} + +#pragma mark -NIMSystemNotificationManagerDelegate +- (void)onReceiveCustomSystemNotification:(NIMCustomSystemNotification *)notification { + if (notification.receiverType == NIMSessionTypeP2P) { + if (notification.content != nil) { + AttachmentModel *attachment = [AttachmentModel modelWithJSON:notification.content]; + if (attachment.first == CustomMessageType_Monents && attachment.second == Custom_Message_Sub_Monents_Unread_Update) { + MonentsUnReadModel * unreadModel = [MonentsUnReadModel modelWithDictionary:attachment.data]; + if (unreadModel.total > 0) { + self.dotView.hidden = NO; + } else { + self.dotView.hidden = YES; + } + [self setTabBarItemBadge:unreadModel.total]; + } + } + } +} + +- (void)setTabBarItemBadge:(NSInteger)value { + if (value > 0) { + if (value > 99) { + [self.tabBarItem setBadgeValue:@"99+"]; + } else { + [self.tabBarItem setBadgeValue:[NSString stringWithFormat:@"%ld", value]]; + } + } else { + [self.tabBarItem setBadgeValue:nil]; + } +} + +#pragma mark - Event Response +- (void)messageButtonAction:(UIButton *)sender { + XPMonentsInteractiveViewController * messageVC = [[XPMonentsInteractiveViewController alloc] init]; + [self.navigationController pushViewController:messageVC animated:YES]; +} + +- (void)publishButtonAction:(UIButton *)sender { + XPMonentsPublishViewController * publishVC = [[XPMonentsPublishViewController alloc] init]; + [self.navigationController pushViewController:publishVC animated:YES]; +} + +#pragma mark - Getters And Setters +- (JXCategoryListContainerView *)listContainerView { + if (!_listContainerView) { + _listContainerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; + _listContainerView.listCellBackgroundColor = [UIColor clearColor]; + } + return _listContainerView; +} + +- (JXCategoryTitleView *)titleView { + if (!_titleView) { + _titleView = [[JXCategoryTitleView alloc] initWithFrame:CGRectZero]; + _titleView.backgroundColor =[UIColor clearColor]; + _titleView.delegate = self; + _titleView.titleColor = [DJDKMIMOMColor secondTextColor]; + _titleView.titleSelectedColor = [DJDKMIMOMColor mainTextColor]; + _titleView.titleFont = [UIFont systemFontOfSize:15 weight:UIFontWeightSemibold]; + _titleView.titleSelectedFont = [UIFont systemFontOfSize:20 weight:UIFontWeightHeavy]; + _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; + _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; + _titleView.averageCellSpacingEnabled = NO; + _titleView.defaultSelectedIndex = 0; + _titleView.cellSpacing = 20; + _titleView.titles = self.titles; + _titleView.listContainer = self.listContainerView; + _titleView.defaultSelectedIndex = 1; + CGFloat itemWidth = [YMLocalizedString(@"XPMonentsViewController0") boundingRectWithSize:CGSizeMake(100, CGFLOAT_MAX) options:NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:20 weight:UIFontWeightHeavy]} context:nil].size.width; + _titleView.cellWidth = itemWidth; + _titleView.contentEdgeInsetLeft = (KScreenWidth - itemWidth * self.titles.count - 20 * (self.titles.count - 1))/ 2; + } + return _titleView; +} + +- (UIView *)navView { + if (!_navView) { + _navView = [[UIView alloc] init]; + _navView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + } + return _navView; +} + +- (NSArray *)titles { + if (!_titles) { + _titles = @[@"关注",@"推荐", YMLocalizedString(@"XPMonentsViewController3")]; + } + return _titles; +} + +- (UIButton *)messageButton { + if (!_messageButton) { + _messageButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_messageButton setImage:[UIImage imageNamed:@"monents_nav_interavtive_message"] forState:UIControlStateNormal]; + [_messageButton setImage:[UIImage imageNamed:@"monents_nav_interavtive_message"] forState:UIControlStateSelected]; + [_messageButton addTarget:self action:@selector(messageButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _messageButton; +} + +- (UIView *)dotView { + if (!_dotView) { + _dotView = [[UIView alloc] init]; + _dotView.backgroundColor = UIColorFromRGB(0xFF2D55); + _dotView.layer.masksToBounds = YES; + _dotView.layer.cornerRadius = 5; + _dotView.hidden = YES; + } + return _dotView; +} + +- (UIButton *)publishButton { + if (!_publishButton) { + _publishButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_publishButton setImage:[UIImage imageNamed:@"monents_publish"] forState:UIControlStateNormal]; + [_publishButton setImage:[UIImage imageNamed:@"monents_publish"] forState:UIControlStateSelected]; + [_publishButton addTarget:self action:@selector(publishButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _publishButton; +} + +- (XPMonentsAttentionViewController *)attentionVC { + if (!_attentionVC) { + XPMonentsAttentionViewController * attentionVC = [[XPMonentsAttentionViewController alloc] init]; + _attentionVC = attentionVC; + } + return _attentionVC; +} + +- (XPMonentsLatestViewController *)latestVC { + if (!_latestVC) { + _latestVC = [[XPMonentsLatestViewController alloc] init]; + } + return _latestVC; +} + +- (XPMonentsRecommendViewController *)recommendVC { + if (!_recommendVC) { + _recommendVC = [[XPMonentsRecommendViewController alloc] init]; + } + return _recommendVC; +} + +@end diff --git a/YuMi/Modules/YMMonents/View/YUMIMomentStatementRegardGovernancer.h b/YuMi/Modules/YMMonents/View/YUMIMomentStatementRegardGovernancer.h deleted file mode 100644 index f71d2793..00000000 --- a/YuMi/Modules/YMMonents/View/YUMIMomentStatementRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMomentListViewController.h -// YUMI -// -// Created by XY on 2023/2/16. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIMomentStatementRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/YUMIMomentStatementRegardGovernancer.m b/YuMi/Modules/YMMonents/View/YUMIMomentStatementRegardGovernancer.m deleted file mode 100644 index de30d1e4..00000000 --- a/YuMi/Modules/YMMonents/View/YUMIMomentStatementRegardGovernancer.m +++ /dev/null @@ -1,275 +0,0 @@ -// -// YMMomentListViewController.m -// YUMI -// -// Created by XY on 2023/2/16. -// - -#import "YUMIMomentStatementRegardGovernancer.h" -#import "YUMIMacroUitls.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "NSArray+Safe.h" -#import "ClientDisposition.h" - -#import "SeparationsStatementAbstractMatrix.h" - -#import "YUMIMomentStatementAssembletionRegardElement.h" -#import "YUMIButton.h" - -#import "YUMISeparationsRecentlyExternalizer.h" -#import "FBCSeparationsLatestCeremony.h" - -#import "YUMISeparationsSpecificRegardGovernancer.h" -#import "YUMISeparationsAnnounceRegardGovernancer.h" -#import "YUMIMomentsSimpleSpecificRegardGovernancer.h" - -@interface YUMIMomentStatementRegardGovernancer () - -@property (nonatomic, strong) UICollectionView *collectionView; - -@property (nonatomic, strong) UIView *customNev; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) YUMIButton *publishBtuton; - -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,assign) NSInteger page; -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; -@property (nonatomic,strong) SeparationsStatementAbstractMatrix *listAbstract; - -@end - -@implementation YUMIMomentStatementRegardGovernancer - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (__kindof id)producePresimport { - return [[YUMISeparationsRecentlyExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self produceUI]; - - [self initIntelligencerGrantedTerminalerRrfresh]; -} - -- (void)produceUI { - [self.view addSubview:self.customNev]; - [self.customNev addSubview:self.titleLabel]; - [self.view addSubview:self.collectionView]; - [self.view addSubview:self.publishBtuton]; - - [self.customNev mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kStatusBarHeight); - make.left.right.mas_equalTo(0); - make.height.mas_equalTo(44); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.customNev); - }]; - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.customNev.mas_bottom); - make.left.right.mas_equalTo(0); - make.bottom.mas_equalTo(0); - }]; - [self.publishBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(-108); - make.right.mas_equalTo(0); - make.width.height.mas_equalTo(70); - }]; -} - -- (void)announceBtutonPerformance { - YUMISeparationsAnnounceRegardGovernancer * publishVC = [[YUMISeparationsAnnounceRegardGovernancer alloc] init]; - [self.navigationController pushViewController:publishVC animated:YES]; -} - -#pragma mark - 下拉刷新 -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.collectionView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - footer.ignoredScrollViewContentInsetBottom = self.collectionView.contentInset.bottom; - self.collectionView.mj_footer = footer; - - [self intelligenceerRenovtowardseh]; -} - -#pragma mark - 刷新的fangfa -- (void)intelligenceerRenovtowardseh { - self.page = 1; - [self.presimport acquireSepartowardsionsRecentlySttowardsementPeriodDimension:20 dynamicId:@"" state:0]; -} - -- (void)footerRenovtowardseh { - if (self.hasNoFurthaerAtoloudspeaker) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Moment_List_View_Controller_0")]; - [self.collectionView.mj_footer endRefreshing]; - return; - } - self.page++; - [self.presimport acquireSepartowardsionsRecentlySttowardsementPeriodDimension:20 dynamicId:self.listAbstract.nextDynamicId state:1]; -} - -#pragma mark - FBCSeparationsLatestCeremony -- (void)acquireSepartowardsionsRecentlySttowardsementAccomplishment:(SeparationsStatementAbstractMatrix *)listAbstract state:(int)state{ - self.listAbstract = listAbstract; - if (state == 0) { - [self.datasource removeAllObjects]; - } - if (listAbstract.dynamicList.count > 0) { - [self.datasource addObjectsFromArray:listAbstract.dynamicList]; - } - - if (state == 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - [self.collectionView.mj_header endRefreshing]; - } else { - if (listAbstract.dynamicList.count > 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - } else { - self.hasNoFurthaerAtoloudspeaker = YES; - } - [self.collectionView.mj_footer endRefreshing]; - } - [self.collectionView reloadData]; -} - -- (void)acquireSepartowardsionsRecentlySttowardsementFlunk:(NSString *)msg state:(int)state { - if (state == 0) { - [self.collectionView.mj_header endRefreshing]; - } else { - [self.collectionView.mj_footer endRefreshing]; - } -} - -#pragma mark - FBCSeparationsDetailRegardGovernancerRepresendtation -- (void)yUMISepartowardsionsSpecificRegardGovernancer:(YUMISeparationsSpecificRegardGovernancer *)view representtowardsionSepartowardsions:(NSString *)dynamicId { - __block SeparationsAbstractMatrix * deleteInfo; - [self.datasource enumerateObjectsUsingBlock:^(SeparationsAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.dynamicId.integerValue == dynamicId.integerValue) { - deleteInfo = obj; - } - }]; - - if (deleteInfo) { - [self.datasource removeObject:deleteInfo]; - [self.collectionView reloadData]; - } -} - -#pragma mark - UICollectionView - -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMIMomentStatementAssembletionRegardElement *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass(YUMIMomentStatementAssembletionRegardElement.self) forIndexPath:indexPath]; - SeparationsAbstractMatrix * monentsInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.monentsInfo = monentsInfo; - return cell; -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMIMomentsSimpleSpecificRegardGovernancer *detailVC = [[YUMIMomentsSimpleSpecificRegardGovernancer alloc] init]; - SeparationsAbstractMatrix * monentsInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - detailVC.monentsInfo = monentsInfo; - detailVC.delegate = self; - [self.navigationController pushViewController:detailVC animated:YES]; - }else{ - YUMIMomentsSimpleSpecificRegardGovernancer * detailVC = [[YUMIMomentsSimpleSpecificRegardGovernancer alloc] init]; - SeparationsAbstractMatrix * monentsInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - detailVC.monentsInfo = monentsInfo; - detailVC.delegate = self; - [self.navigationController pushViewController:detailVC animated:YES]; - } - } -} - -#pragma mark - 懒加载 - -- (UICollectionView *)collectionView { - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.scrollDirection = UICollectionViewScrollDirectionVertical; - CGFloat width = (KScreenWidth - 16 -13 -16)/2.0; - CGFloat height = 220.0/165.0*width; - layout.itemSize = CGSizeMake(width, height); - layout.minimumLineSpacing = 12.0; - layout.minimumInteritemSpacing = 13.0; - layout.sectionInset = UIEdgeInsetsMake(12, 16, 12, 16); - - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.backgroundColor = UIColor.clearColor; - _collectionView.alwaysBounceVertical = YES; - [_collectionView registerClass:[YUMIMomentStatementAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass(YUMIMomentStatementAssembletionRegardElement.self)]; - _collectionView.delegate = self; - _collectionView.dataSource = self; - _collectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - - _collectionView.contentInset = UIEdgeInsetsMake(0, 0, 100, 0); - - } - return _collectionView; -} - -- (YUMIButton *)publishBtuton { - if (!_publishBtuton) { - _publishBtuton = [YUMIButton buttonWithType:UIButtonTypeCustom]; - _publishBtuton.backgroundColor = UIColorFromRGB(0x0C1430); - [_publishBtuton setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; - _publishBtuton.titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - [_publishBtuton setTitle:YMLocalizedString(@"YUMI_Moment_List_View_Controller_1") forState:UIControlStateNormal]; - [_publishBtuton setImage:[UIImage imageNamed:@"yumi_moment_camera"] forState:UIControlStateNormal]; - [_publishBtuton addTarget:self action:@selector(announceBtutonPerformance) forControlEvents:UIControlEventTouchUpInside]; - _publishBtuton.layer.cornerRadius = 70/2; - _publishBtuton.clipsToBounds = YES; - _publishBtuton.buttonStyle = XPButtonImageTop; - _publishBtuton.padding = 4; - } - return _publishBtuton; -} - -- (UIView *)customNev { - if (!_customNev) { - _customNev = [[UIView alloc] init]; - _customNev.backgroundColor = [DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]; - } - return _customNev; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Moment_List_View_Controller_2"); - _titleLabel.backgroundColor = [UIColor clearColor]; - _titleLabel.font = [UIFont systemFontOfSize:18.f weight:UIFontWeightMedium]; - _titleLabel.textColor = DJDKMIMOMColor.mainEssayPrettify; - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - -@end diff --git a/YuMi/Modules/YMMonents/View/YUMIMomentsSimpleSpecificNev.h b/YuMi/Modules/YMMonents/View/YUMIMomentsSimpleSpecificNev.h deleted file mode 100644 index 176d3013..00000000 --- a/YuMi/Modules/YMMonents/View/YUMIMomentsSimpleSpecificNev.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// YMMomentsSimpleDetailNav.h -// YUMI -// -// Created by XY on 2023/2/22. -// - -#import - -@class SeparationsAbstractMatrix; -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCMomentsSimpleDetailNevRepresendtation -- (void)momentsSimpleSpecificNevEncouragePerformance; -- (void)momentsSimpleSpecificNevIntelligenceportraitPerformance; -- (void)momentsSimpleSpecificNevFurthaerPerformance; - -@end - -@interface YUMIMomentsSimpleSpecificNev : UIView - -@property (strong, nonatomic) SeparationsAbstractMatrix *infoMatrix; - -@property (nonatomic, weak) id delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/YUMIMomentsSimpleSpecificNev.m b/YuMi/Modules/YMMonents/View/YUMIMomentsSimpleSpecificNev.m deleted file mode 100644 index 852b86bb..00000000 --- a/YuMi/Modules/YMMonents/View/YUMIMomentsSimpleSpecificNev.m +++ /dev/null @@ -1,152 +0,0 @@ -// -// YMMomentsSimpleDetailNav.m -// YUMI -// -// Created by XY on 2023/2/22. -// - -#import "YUMIMomentsSimpleSpecificNev.h" -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import -#import "SeparationsAbstractMatrix.h" - -@interface YUMIMomentsSimpleSpecificNev() -@property (nonatomic, strong) UIButton *encourageBtuton; -@property (nonatomic, strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic, strong) UILabel *monicerconstituteSequencignation; -@property (nonatomic, strong) UILabel *idSequencignation; -@property (nonatomic, strong) UIButton *furthaerBtuton; - -@end - -@implementation YUMIMomentsSimpleSpecificNev - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - self.backgroundColor = UIColor.whiteColor; - [self produceUI]; - } - return self; -} - -- (void)produceUI { - [self addSubview:self.encourageBtuton]; - [self addSubview:self.intelligenceportraitIndicateRegard]; - [self addSubview:self.monicerconstituteSequencignation]; - [self addSubview:self.idSequencignation]; - [self addSubview:self.furthaerBtuton]; - - [self.encourageBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(0); - make.centerY.mas_equalTo(self); - make.width.height.mas_equalTo(44); - }]; - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageBtuton.mas_right); - make.centerY.mas_equalTo(self); - make.width.height.mas_equalTo(30); - }]; - [self.monicerconstituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(7); - make.right.lessThanOrEqualTo(self.furthaerBtuton.mas_left).offset(-10); - }]; - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.left.mas_equalTo(self.monicerconstituteSequencignation); - make.right.lessThanOrEqualTo(self.furthaerBtuton.mas_left).offset(-10); - }]; - [self.furthaerBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-8); - make.centerY.mas_equalTo(self); - make.width.height.mas_equalTo(44); - }]; -} - -- (void)setInfoMatrix:(SeparationsAbstractMatrix *)infoMatrix { - _infoMatrix = infoMatrix; - if (_infoMatrix) { - self.intelligenceportraitIndicateRegard.imageUrl = infoMatrix.avatar; - NSString * nick = infoMatrix.nick; - self.monicerconstituteSequencignation.text = nick.length > 0 ? nick : @""; - self.idSequencignation.text = [NSString stringWithFormat:@"ID:%@",infoMatrix.uid]; - } -} - -#pragma mark - Action -- (void)encourageBtutonPerformance { - if (self.delegate && [self.delegate respondsToSelector:@selector(momentsSimpleSpecificNevEncouragePerformance)]) { - [self.delegate momentsSimpleSpecificNevEncouragePerformance]; - } -} - -- (void)didBetowardsIntelligenceportraitGuest { - if (self.delegate && [self.delegate respondsToSelector:@selector(momentsSimpleSpecificNevIntelligenceportraitPerformance)]) { - [self.delegate momentsSimpleSpecificNevIntelligenceportraitPerformance]; - } -} - -- (void)furthaerBtutonPerformance { - if (self.delegate && [self.delegate respondsToSelector:@selector(momentsSimpleSpecificNevFurthaerPerformance)]) { - [self.delegate momentsSimpleSpecificNevFurthaerPerformance]; - } -} - -#pragma mark - 懒加载 - -- (UIButton *)encourageBtuton { - if (!_encourageBtuton) { - _encourageBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_encourageBtuton setImage:[UIImage imageNamed:@"yumi_same_title_back"] forState:UIControlStateNormal]; - [_encourageBtuton addTarget:self action:@selector(encourageBtutonPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _encourageBtuton; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.imageType = ImageGenreUserIcon; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.userInteractionEnabled = YES; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 30/2; - _intelligenceportraitIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didBetowardsIntelligenceportraitGuest)]; - [_intelligenceportraitIndicateRegard addGestureRecognizer:tap]; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)monicerconstituteSequencignation { - if (!_monicerconstituteSequencignation) { - _monicerconstituteSequencignation = [[UILabel alloc] init]; - _monicerconstituteSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _monicerconstituteSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - } - return _monicerconstituteSequencignation; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - _idSequencignation.font = [UIFont systemFontOfSize:10 weight:UIFontWeightRegular]; - } - return _idSequencignation; -} - -- (UIButton *)furthaerBtuton { - if (!_furthaerBtuton) { - _furthaerBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_furthaerBtuton setImage:[UIImage imageNamed:@"yumi_monents_gen_like_report"] forState:UIControlStateNormal]; - [_furthaerBtuton addTarget:self action:@selector(furthaerBtutonPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _furthaerBtuton; -} - - -@end diff --git a/YuMi/Modules/YMMonents/View/YUMIMomentsSimpleSpecificRegardGovernancer.h b/YuMi/Modules/YMMonents/View/YUMIMomentsSimpleSpecificRegardGovernancer.h deleted file mode 100644 index 9a7270c1..00000000 --- a/YuMi/Modules/YMMonents/View/YUMIMomentsSimpleSpecificRegardGovernancer.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMMomentsSimpleDetailViewController.h -// YUMI -// -// Created by XY on 2023/2/22. -// - -#import "MvpRegardGovernancer.h" -#import "FBCSeparationsDetailRegardGovernancerRepresendtation.h" - -@class SeparationsAbstractMatrix; -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIMomentsSimpleSpecificRegardGovernancer : MvpRegardGovernancer - -@property (nonatomic,strong) SeparationsAbstractMatrix *monentsInfo; - -@property (nonatomic,weak) id delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/YUMIMomentsSimpleSpecificRegardGovernancer.m b/YuMi/Modules/YMMonents/View/YUMIMomentsSimpleSpecificRegardGovernancer.m deleted file mode 100644 index 0b874550..00000000 --- a/YuMi/Modules/YMMonents/View/YUMIMomentsSimpleSpecificRegardGovernancer.m +++ /dev/null @@ -1,575 +0,0 @@ -// -// YMMomentsSimpleDetailViewController.m -// YUMI -// -// Created by XY on 2023/2/22. -// - -#import "YUMIMomentsSimpleSpecificRegardGovernancer.h" - -#import -#import -#import "YUMISeparationsProgrammingDisposition.h" -#import "DJDKMIMOMColor.h" -#import "MHTSpiritFacilitater.h" -#import "MHTKeyboardExecutive.h" -#import "MKJPopup.h" -#import "NSArray+Safe.h" -#import "AccountAbstractStorage.h" -#import "YUMIHtmlUrl.h" -#import "ClientDisposition.h" -#import "XNDJTBWGLoadingTool.h" -#import "SeparationsAbstractMatrix.h" -#import "SeparationsJudgementMatrix.h" -#import "SeparationsJudgementReplicationMatrix.h" -#import "YUMISeparationsTabulationRegardElement.h" -#import "YUMISeparationsJudgementTabulationRegardElement.h" -#import "YUMISeparationsDispossessTabulationRegardElement.h" -#import "MHTIntrojectionObstacleRegard.h" -#import "MHTKeyboardExecutive.h" -#import "MHTSpiritDirectorateRegard.h" -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -#import "YUMIManeSimpleConsumerAbstractRegardGovernancer.h" -#import "YUMIMomentsSimpleSpecificNev.h" -#import "YUMITissueRegardGovernancer.h" -#import "YUMISeparationSpecificExternalizer.h" -#import "FBCSeparationsDetailCeremony.h" - -@interface YUMIMomentsSimpleSpecificRegardGovernancer () - -@property(nonatomic,strong) YUMIMomentsSimpleSpecificNev *specificNev; -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,strong) UIView * sectionRegard; -@property (nonatomic,strong) UILabel *judgementSequencignation; -@property (nonatomic,strong) UIButton *likeBtuton; -@property(nonatomic,strong)MHTIntrojectionObstacleRegard *introjectionObstacleRegard; -@property(nonatomic,strong)MHTKeyboardExecutive *keydirectorateExecutive; -@property (nonatomic,strong) NSString *commentId; -@end - -@implementation YUMIMomentsSimpleSpecificRegardGovernancer - -- (__kindof id)producePresimport { - return [[YUMISeparationSpecificExternalizer alloc] init]; -} - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - self.view.backgroundColor = UIColor.whiteColor; - [self initIntelligencerGrantedTerminalerRrfresh]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - 下拉刷新 -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - - [self intelligenceerRenovtowardseh]; -} - -- (void)intelligenceerRenovtowardseh { - [self.presimport acquireSepartowardsionsSpecific:self.monentsInfo.dynamicId]; - [self.presimport acquireSepartowardsionsJudgementSttowardsement:self.monentsInfo.dynamicId timestamp:@"" status:0]; -} - -- (void)footerRenovtowardseh { - NSString *timestamp = @""; - if (self.datasource.count > 0) { - SeparationsJudgementMatrix * judgementAbstract = [self.datasource lastObject]; - timestamp = judgementAbstract.publishTime; - } - [self.presimport acquireSepartowardsionsJudgementSttowardsement:self.monentsInfo.dynamicId timestamp:timestamp status:1]; -} - - -#pragma mark - Private Method -- (void)initIntrojectionRegard { - - - _introjectionObstacleRegard = [[MHTIntrojectionObstacleRegard alloc] initWithFrame:CGRectMake(0,0,self.view.frame.size.width,UIInputBarViewMinHeight)]; - MHTIntrojectionObstacleRegardDispositionuration *introjectionObstacleRegardDispositionurtowardsion = [MHTIntrojectionObstacleRegardDispositionuration deficiencyIntrojectionObstacleRegardDispositionurtowardsion]; - introjectionObstacleRegardDispositionurtowardsion.reputationBtutonVeiled = YES; - introjectionObstacleRegardDispositionurtowardsion.spreadBtutonVeiled = YES; - - introjectionObstacleRegardDispositionurtowardsion.rectifyDischargeBtuton = self.likeBtuton; - introjectionObstacleRegardDispositionurtowardsion.senintratemporalntBtutonVeiled = YES; - - [_introjectionObstacleRegard setupAboutDispositionurtowardsion:introjectionObstacleRegardDispositionurtowardsion]; - _introjectionObstacleRegard.delegate = self; - - - _keydirectorateExecutive = [[MHTKeyboardExecutive alloc] initWithViewController:self]; - _keydirectorateExecutive.dataSource = self; - - _keydirectorateExecutive.delegate = self; - [_keydirectorateExecutive accelertowardseExtremeIntrojectionObstacleRegard:_introjectionObstacleRegard belowViewController:NO]; - - - [_keydirectorateExecutive dilemmaEssayRegard:_introjectionObstacleRegard.introjectionEssayRegard]; - - _introjectionObstacleRegard.introjectionEssayRegard.placeholder = YMLocalizedString(@"YUMI_Moments_Simple_Detail_View_Controller_0"); - _introjectionObstacleRegard.introjectionEssayRegard.font = [UIFont systemFontOfSize:12]; - - -} - -- (void)prohibitichargeEssayCommunictowardsion:(NSString *)inputText { - if (inputText.length > 0) { - [_keydirectorateExecutive brakeEntiretyDirectortowardseRegard]; - if (self.commentId && self.commentId.length > 0) { - [self.presimport reprohibitiportCommon:self.commentId dynamicId:self.monentsInfo.dynamicId content:inputText]; - } else { - [self.presimport commontSepartowardsions:self.monentsInfo.dynamicId content:inputText]; - } - self.introjectionObstacleRegard.introjectionEssayRegard.text = nil; - } else { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Moments_Simple_Detail_View_Controller_1")]; - } -} - -- (void)initSubViews { - [self.view addSubview:self.specificNev]; - [self.view addSubview:self.tableView]; - [self.sectionRegard addSubview:self.judgementSequencignation]; - [self initIntrojectionRegard]; -} - -- (void)initChildLyRestrictions { - [self.specificNev mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kStatusBarHeight); - make.left.right.mas_equalTo(0); - make.height.mas_equalTo(44); - }]; - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.specificNev.mas_bottom); - make.left.right.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.introjectionObstacleRegard.mas_top); - }]; - - [self.judgementSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.sectionRegard).offset(15); - make.top.mas_equalTo(6); - make.bottom.mas_equalTo(0); - }]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return 2; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - if (section == 0) { - return 1; - } - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (indexPath.section == 0) { - [YUMISeparationsProgrammingDisposition programmingSimpleSepartowardsionsMtowardsrix:self.monentsInfo]; - return self.monentsInfo.rowHeight+20; - } else if(indexPath.section == 1) { - if (self.datasource.count > 0) { - SeparationsJudgementMatrix * judgementAbstract = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return [YUMISeparationsProgrammingDisposition judgementJudgementRowAltitude:judgementAbstract]; - } else { - return 400; - } - } - return 0; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { - if (section == 1) { - return 44; - } - return 0.0;; -} - -- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { - NSString *commentText = YMLocalizedString(@"YUMI_Moments_Simple_Detail_View_Controller_2"); - NSMutableAttributedString *commentStr = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@%@",commentText,self.monentsInfo.commentCount]]; - [commentStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12 weight:UIFontWeightMedium] range:NSMakeRange(commentText.length, commentStr.length-commentText.length)]; - [commentStr addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor essayTertiusPrettify] range:NSMakeRange(commentText.length, commentStr.length-commentText.length)]; - self.judgementSequencignation.attributedText = commentStr; - return self.sectionRegard; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { - return 0.0f; -} - -- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { - return [UIView new]; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (indexPath.section ==0) { - NSString *identifier = [NSString stringWithFormat:@"%@_Simple",NSStringFromClass([YUMISeparationsTabulationRegardElement class])]; - YUMISeparationsTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:identifier]; - cell.delegate = self; - cell.monentsInfo = self.monentsInfo; - return cell; - } else { - if (self.datasource.count > 0) { - YUMISeparationsJudgementTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMISeparationsJudgementTabulationRegardElement class])]; - cell.judgementAbstract = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.delegate = self; - return cell; - } else { - YUMISeparationsDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMISeparationsDispossessTabulationRegardElement class])]; - return cell; - } - } -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (indexPath.section == 1) { - if (self.datasource.count > 0) { - SeparationsJudgementMatrix* monent = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - self.commentId = monent.commentId; - self.introjectionObstacleRegard.introjectionEssayRegard.placeholder = [NSString stringWithFormat:@"回复: %@", monent.nick]; - [self.introjectionObstacleRegard essayRegardBecomeThresholdResponder]; - } - } -} - -- (void)scrollViewDidScroll:(UIScrollView *)scrollView { - [_keydirectorateExecutive brakeEntiretyDirectortowardseRegard]; -} - -- (void)similarBtutonPerformance { - [self.presimport similarMonent:self.monentsInfo.dynamicId status:!self.monentsInfo.isLike likedUid:self.monentsInfo.uid worldId:[NSString stringWithFormat:@"%ld", self.monentsInfo.worldId]]; -} - -#pragma mark - FBCMomentsSimpleDetailNevRepresendtation -- (void)momentsSimpleSpecificNevEncouragePerformance { - [self.navigationController popViewControllerAnimated:YES]; -} - -- (void)momentsSimpleSpecificNevIntelligenceportraitPerformance { - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMIManeConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = self.monentsInfo.uid.integerValue; - [self.navigationController pushViewController:userInfoVC animated:YES]; - }else{ - YUMIManeSimpleConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeSimpleConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = self.monentsInfo.uid.integerValue; - [self.navigationController pushViewController:userInfoVC animated:YES]; - } -} - -- (void)momentsSimpleSpecificNevFurthaerPerformance { - MKJActionSheetDisposition *action; - if (self.monentsInfo.uid.integerValue == [AccountAbstractStorage instance].acquireCid.integerValue) { - action = [MKJActionSheetDisposition normalTitle:YMLocalizedString(@"YUMI_Moments_Simple_Detail_View_Controller_4") ticktackPerformance:^{ - [MKJPopup precautiousAboutCommunictowardsion:@"删除后不可恢复\n确定删除该动态吗?" acknowledgementHandler:^{ - [self.presimport representtowardsionSepartowardsions:self.monentsInfo.dynamicId worldId:[NSString stringWithFormat:@"%ld", self.monentsInfo.worldId]]; - } cancelHandler:^{ - - }]; - }]; - } else { - action = [MKJActionSheetDisposition normalTitle:YMLocalizedString(@"YUMI_Moments_Simple_Detail_View_Controller_6") ticktackPerformance:^{ - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - NSString * url= [NSString stringWithFormat:@"%@?reportUid=%@&source=%@", URLWithType(kReportRoomURL),self.monentsInfo.uid, @"WORLDDYNAMIC"]; - YUMITissueRegardGovernancer * webVewC = [[YUMITissueRegardGovernancer alloc] init]; - webVewC.url = url; - [self.navigationController pushViewController:webVewC animated:YES]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Moments_Simple_Detail_View_Controller_7")]; - } - }]; - } - [MKJPopup performanceSheetAboutProvisions:@[action]]; -} - -#pragma mark - FBCSeparationsCommentTabulationViweElementRepresendtation -- (void)yUMISepartowardsionsJudgementTarbsultowardsionViweElement:(YUMISeparationsJudgementTabulationRegardElement *)view didClickMoreReply:(SeparationsJudgementMatrix *)judgementAbstract { - [self.presimport acquireSepartowardsionsJudgementReplictowardsionSttowardsement:self.monentsInfo.dynamicId commentId:judgementAbstract.commentId timestamp:judgementAbstract.replyInfo.nextTimestamp]; -} - -- (void)yUMISepartowardsionsJudgementTarbsultowardsionViweElement:(YUMISeparationsJudgementTabulationRegardElement *)view didClickCommon:(SeparationsReplicationMatrix *)judgementAbstract { - if (judgementAbstract) { - self.commentId = judgementAbstract.replyId; - self.introjectionObstacleRegard.introjectionEssayRegard.placeholder = [NSString stringWithFormat:@"回复: %@", judgementAbstract.nick]; - [self.introjectionObstacleRegard essayRegardBecomeThresholdResponder]; - } -} -- (void)yUMISepartowardsionsJudgementTarbsultowardsionViweElement:(YUMISeparationsJudgementTabulationRegardElement *)view didClickAvatar:(NSString *)judgementAbstract { - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMIManeConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = judgementAbstract.integerValue; - [self.navigationController pushViewController:userInfoVC animated:YES]; - }else{ - YUMIManeSimpleConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeSimpleConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = judgementAbstract.integerValue; - [self.navigationController pushViewController:userInfoVC animated:YES]; - } - -} -#pragma mark - FBCSeparationsTabulationViweElementRepresendtation -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClickLike:(SeparationsAbstractMatrix *)monentsInfo { - [self.presimport similarMonent:monentsInfo.dynamicId status:!monentsInfo.isLike likedUid:monentsInfo.uid worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; -} - -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClicDelete:(SeparationsAbstractMatrix *)monentsInfo { - [MKJPopup precautiousAboutCommunictowardsion:@"删除后不可恢复\n确定删除该动态吗?" acknowledgementHandler:^{ - [self.presimport representtowardsionSepartowardsions:monentsInfo.dynamicId worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; - } cancelHandler:^{ - - }]; -} - -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClicCommon:(SeparationsAbstractMatrix *)monentsInfo { - if (monentsInfo) { - self.commentId = nil; - self.introjectionObstacleRegard.introjectionEssayRegard.placeholder = YMLocalizedString(@"YUMI_Moments_Simple_Detail_View_Controller_10"); - [self.introjectionObstacleRegard essayRegardBecomeThresholdResponder]; - } -} - -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClicFold:(SeparationsAbstractMatrix *)monentsInfo { - self.monentsInfo = monentsInfo; - [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone]; -} - -#pragma mark - IntrojectionDirectorateAtomicSource -- (UIView *)digitentiretyibraExecutiveSpreadDirectortowardseRegard:(MHTKeyboardExecutive *)keydirectorateExecutive { - UIView *boardView = [UIView new]; - boardView.backgroundColor = UIColor.blueColor; - return boardView; -} - -- (UIView *)digitentiretyibraExecutiveSenintrtowardsemporalntDirectortowardseRegard:(MHTKeyboardExecutive *)keydirectorateExecutive { - MHTSpiritDirectorateRegard *senintrtowardsemporalntRegard = [[MHTSpiritDirectorateRegard alloc] init]; - MHTSpiritFacilitater *faceManager = [MHTSpiritFacilitater partowardsiciptowardsiondSenintrtowardsemporalntFacilittowardseer]; - senintrtowardsemporalntRegard.senintratemporalnts = faceManager.senintratemporalntGarment; - senintrtowardsemporalntRegard.delegate = self; - if (@available(iOS 11.0, *)) { - NSBundle *bundle = [NSBundle bundleForClass:[self class]]; - senintrtowardsemporalntRegard.backgroundColor = [UIColor colorNamed:@"q_input_extend_bg" inBundle:bundle compatibleWithTraitCollection:nil]; - } else { - senintrtowardsemporalntRegard.backgroundColor = [UIColor colorWithRed:(246)/255.0f green:(246)/255.0f blue:(246)/255.0f alpha:1]; - } - return senintrtowardsemporalntRegard; -} - -- (CGFloat)digitentiretyibraExecutiveSenintrtowardsemporalntDirectortowardseAltitude:(MHTKeyboardExecutive *)keydirectorateExecutive { - return 294; -} - -- (CGFloat)digitentiretyibraExecutiveSpreadDirectortowardseAltitude:(MHTKeyboardExecutive *)keydirectorateExecutive { - return 174; -} - -- (MHTIntrojectionObstacleRegardDispositionuration *)introjectionObstacleRegardDispositionurtowardsion { - - MHTIntrojectionObstacleRegardDispositionuration *introjectionObstacleRegardDispositionurtowardsion = [MHTIntrojectionObstacleRegardDispositionuration deficiencyIntrojectionObstacleRegardDispositionurtowardsion]; - introjectionObstacleRegardDispositionurtowardsion.reputationBtutonVeiled = YES; - introjectionObstacleRegardDispositionurtowardsion.spreadBtutonVeiled = YES; - return introjectionObstacleRegardDispositionurtowardsion; -} - -- (void)introjectionObstacleRegard:(MHTIntrojectionObstacleRegard *)introjectionObstacleRegard onEmotionButtonClick:(UIButton *)senintratemporalntSwopBtuton { - if (senintratemporalntSwopBtuton.isSelected) { - [_keydirectorateExecutive swopToSenintrtowardsemporalntDirectortowardseDigitentiretyibra]; - } else { - self.commentId = nil; - _introjectionObstacleRegard.introjectionEssayRegard.placeholder = YMLocalizedString(@"YUMI_Moments_Simple_Detail_View_Controller_11"); - [_introjectionObstacleRegard essayRegardBecomeThresholdResponder]; - } -} - -#pragma mark - QEmotionDirectorateRegardRepresendtation - -- (void)senintrtowardsemporalntRegard:(MHTSpiritDirectorateRegard *)senintrtowardsemporalntRegard didSelectEmotion:(MHTSpirit *)emotion atIndex:(NSInteger)index { - - [_introjectionObstacleRegard insertSenintrtowardsemporalnt:emotion.displayName]; -} - -- (void)senintrtowardsemporalntRegardDidChosenRepresenttowardsionBtuton:(MHTSpiritDirectorateRegard *)senintrtowardsemporalntRegard { - if (![_introjectionObstacleRegard representtowardsionSenintrtowardsemporalnt]){ - - [_introjectionObstacleRegard.introjectionEssayRegard deleteBackward]; - } -} - -- (void)senintrtowardsemporalntRegardDidChosenDischargeBtuton:(MHTSpiritDirectorateRegard *)senintrtowardsemporalntRegard { - [self prohibitichargeEssayCommunictowardsion:[_introjectionObstacleRegard essayRegardIntrojectionOrdinaryEssay]]; -} - - -#pragma mark - - -- (void)introjectionObstacleRegard:(MHTIntrojectionObstacleRegard *)introjectionObstacleRegard onKeyboardSendClick:(NSString *)inputNormalText { - [self prohibitichargeEssayCommunictowardsion:inputNormalText]; -} - -#pragma mark - FBCSeparationsDetailCeremony -- (void)acquireSepartowardsionsSpecificAccomplishment:(SeparationsAbstractMatrix *)judgementAbstract { - self.monentsInfo = judgementAbstract; - [self.likeBtuton setTitle:self.monentsInfo.likeCount forState:UIControlStateNormal]; - self.likeBtuton.selected = self.monentsInfo.isLike; - [self.tableView reloadData]; -} - -- (void)acquireSepartowardsionsJudgementSttowardsementAccomplishment:(SeparationsJudgementStatementMatrix *)judgementAbstract state:(int)state{ - if (state == 0) { - [self.datasource removeAllObjects]; - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } - - if (judgementAbstract.commentList.count > 0) { - [self.datasource addObjectsFromArray:judgementAbstract.commentList]; - } - [self.tableView reloadData]; -} - -- (void)acquireSepartowardsionsJudgementReplictowardsionSttowardsementAccomplishment:(SeparationsJudgementReplicationMatrix *)replyInfo commentId:(nonnull NSString *)commentId { - if (commentId) { - __block SeparationsJudgementMatrix * judgementAbstract; - [self.datasource enumerateObjectsUsingBlock:^(SeparationsJudgementMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj.commentId isEqualToString:commentId]) { - judgementAbstract = obj; - *stop = YES; - } - }]; - - if (judgementAbstract) { - NSMutableArray * replyList= judgementAbstract.replyInfo.replyList.mutableCopy; - [replyList addObjectsFromArray:replyInfo.replyList]; - judgementAbstract.replyInfo.replyList = replyList.copy; - judgementAbstract.replyInfo.leftCount = replyInfo.leftCount; - judgementAbstract.replyInfo.nextTimestamp = replyInfo.nextTimestamp; - judgementAbstract.isReloadHeight = YES; - } - [self.tableView reloadData]; - } -} - -- (void)similarSepartowardsionsAccomplishment:(NSString *)dynamicId status:(BOOL)status { - if ([self.monentsInfo.dynamicId isEqualToString:dynamicId]) { - NSInteger count = self.monentsInfo.likeCount.integerValue; - self.monentsInfo.isLike = status; - if (status) { - count += 1; - } else { - count -= 1; - } - self.monentsInfo.likeCount = [NSString stringWithFormat:@"%ld", count]; - [self.likeBtuton setTitle:self.monentsInfo.likeCount forState:UIControlStateNormal]; - self.likeBtuton.selected = self.monentsInfo.isLike; - } -} - -- (void)replictowardsionSepartowardsionsAccomplishment { - [self.presimport acquireSepartowardsionsJudgementSttowardsement:self.monentsInfo.dynamicId timestamp:@"" status:0]; -} - -- (void)commonSepartowardsionsAccomplishment { - [self.presimport acquireSepartowardsionsJudgementSttowardsement:self.monentsInfo.dynamicId timestamp:@"" status:0]; -} - -- (void)representtowardsionSepartowardsionsAccomplishment:(NSString *)monentsInfo { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Moments_Simple_Detail_View_Controller_12")]; - [self.navigationController popViewControllerAnimated:YES]; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMISepartowardsionsSpecificRegardGovernancer:representtowardsionSepartowardsions:)]) { - [self.delegate yUMISepartowardsionsSpecificRegardGovernancer:self representtowardsionSepartowardsions:self.monentsInfo.dynamicId]; - } -} - - -#pragma mark - Getters And Setters - -- (YUMIMomentsSimpleSpecificNev *)specificNev { - if (!_specificNev) { - _specificNev = [[YUMIMomentsSimpleSpecificNev alloc] init]; - _specificNev.delegate = self; - _specificNev.infoMatrix = self.monentsInfo; - } - return _specificNev; -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - NSString *identifier = [NSString stringWithFormat:@"%@_Simple",NSStringFromClass([YUMISeparationsTabulationRegardElement class])]; - [_tableView registerClass:[YUMISeparationsTabulationRegardElement class] forCellReuseIdentifier:identifier]; - [_tableView registerClass:[YUMISeparationsJudgementTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMISeparationsJudgementTabulationRegardElement class])]; - [_tableView registerClass:[YUMISeparationsDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMISeparationsDispossessTabulationRegardElement class])]; - } - return _tableView; -} - -- (UIView *)sectionRegard { - if (!_sectionRegard) { - _sectionRegard = [[UIView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 44)]; - _sectionRegard.backgroundColor = UIColorFromRGB(0xF6F7F9); - - UIView *whiteView = [[UIView alloc] initWithFrame:CGRectMake(0, 6, _sectionRegard.bounds.size.width, _sectionRegard.bounds.size.height-6)]; - whiteView.backgroundColor = UIColor.whiteColor; - [_sectionRegard addSubview:whiteView]; - } - return _sectionRegard; -} - -- (UILabel *)judgementSequencignation { - if (!_judgementSequencignation) { - _judgementSequencignation = [[UILabel alloc] init]; - _judgementSequencignation.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; - _judgementSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _judgementSequencignation; -} - -- (UIButton *)likeBtuton { - if (!_likeBtuton) { - _likeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - _likeBtuton.frame = CGRectMake(0, 0, 80, 36); - [_likeBtuton setTitleColor:[DJDKMIMOMColor instantEssayPrettify] forState:UIControlStateNormal]; - _likeBtuton.titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - [_likeBtuton setImage:[UIImage imageNamed:@"yumi_monents_gen_like_count_normal"] forState:UIControlStateNormal]; - [_likeBtuton setImage:[UIImage imageNamed:@"yumi_monents_gen_like_count_select"] forState:UIControlStateSelected]; - [_likeBtuton addTarget:self action:@selector(similarBtutonPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _likeBtuton; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - -@end diff --git a/YuMi/Modules/YMMonents/View/YUMISeparationMotifAccommodatedRegardGovernancer.h b/YuMi/Modules/YMMonents/View/YUMISeparationMotifAccommodatedRegardGovernancer.h deleted file mode 100644 index 0dcc41e3..00000000 --- a/YuMi/Modules/YMMonents/View/YUMISeparationMotifAccommodatedRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMonentTopicContainerViewController.h -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import "BaseRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISeparationMotifAccommodatedRegardGovernancer : BaseRegardGovernancer -@property (nonatomic,copy) NSString *worldId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/YUMISeparationMotifAccommodatedRegardGovernancer.m b/YuMi/Modules/YMMonents/View/YUMISeparationMotifAccommodatedRegardGovernancer.m deleted file mode 100644 index 1bb8a7b5..00000000 --- a/YuMi/Modules/YMMonents/View/YUMISeparationMotifAccommodatedRegardGovernancer.m +++ /dev/null @@ -1,231 +0,0 @@ -// -// YMMonentTopicContainerViewController.m -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import "YUMISeparationMotifAccommodatedRegardGovernancer.h" -#import -#import -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "Api+Monents.h" -#import "AccountAbstractStorage.h" -#import "SeparationsMotifMatrix.h" -#import "YUMISeparationsMotifRecommondRegardGovernancer.h" -#import "YUMISeparationsMotifRecentlyRegardGovernancer.h" -#import "YUMISeparationsMotifIntelligencerRegard.h" -#import "YUMISeparationsAnnounceRegardGovernancer.h" - -@interface YUMISeparationMotifAccommodatedRegardGovernancer () -@property (nonatomic,strong) JXCategoryTitleView *categoryRegard; -@property (nonatomic,strong) JXCategoryIndicatorLineView *burlywoodRegard; -@property (nonatomic,strong) JXPagerListRefreshView *pagerView; -@property (nonatomic,strong) NSArray *titles; -@property (nonatomic,strong) YUMISeparationsMotifRecommondRegardGovernancer *encourageVewC; -@property (nonatomic,strong) YUMISeparationsMotifRecentlyRegardGovernancer *latestVewC; -@property (nonatomic,strong) YUMISeparationsMotifIntelligencerRegard *intelligenceerRegard; -@property (nonatomic,strong) UIButton *backButton; -@property (nonatomic,strong) UIButton *importMotifBtuton; -@property (nonatomic,strong) SeparationsMotifMatrix *motifAbstract; -@end - -@implementation YUMISeparationMotifAccommodatedRegardGovernancer - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self requisitionMotifSpecific]; - [self initSubViews]; -} - -- (void)viewDidLayoutSubviews { - [super viewDidLayoutSubviews]; - self.pagerView.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight - 50); -} - -- (void)initSubViews { - [self.view addSubview:self.pagerView]; - [self.view addSubview:self.backButton]; - [self.view addSubview:self.importMotifBtuton]; - - [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.view); - make.top.mas_equalTo(statusbarHeight); - make.height.width.mas_equalTo(44); - }]; - - [self.importMotifBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(50); - make.left.right.bottom.mas_equalTo(self.view); - }]; -} - -- (void)requisitionMotifSpecific { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api separtowardsionsMotifSpecificAbstract:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - SeparationsMotifMatrix * info = [SeparationsMotifMatrix mtowardsrixAboutImpactbasket:data.data]; - self.motifAbstract = info; - self.intelligenceerRegard.motifAbstract = info; - } else if(code == 7903) { - [self.navigationController popViewControllerAnimated:YES]; - } else { - [self EvidenceMistakeToast:msg]; - } - } worldId:self.worldId uid:uid]; -} - - -#pragma mark - JXPagerViewDelegate -- (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView { - return self.intelligenceerRegard; -} - -- (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView { - return 150 + kNavigationHeight; -} - -- (NSUInteger)heightForPinSectionHeaderInPagerView:(JXPagerView *)pagerView { - return 46; -} - -- (UIView *)viewForPinSectionHeaderInPagerView:(JXPagerView *)pagerView { - return self.categoryRegard; -} - -- (NSInteger)numberOfListsInPagerView:(JXPagerView *)pagerView { - return self.titles.count; -} - -- (id)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index { - if (index == 0) { - return self.encourageVewC; - } else { - return self.latestVewC; - } -} - -#pragma mark - Event Response -- (void)encourageBtutonPerformance:(UIButton *)sender { - [self.navigationController popViewControllerAnimated:YES]; -} - -- (void)importMotifBtutonPerformance:(UIButton *)sender { - YUMISeparationsAnnounceRegardGovernancer * publishVC = [[YUMISeparationsAnnounceRegardGovernancer alloc] init]; - self.motifAbstract.worldName = self.motifAbstract.name; - self.motifAbstract.worldId = self.motifAbstract.tId; - publishVC.motifAbstract = self.motifAbstract; - [self.navigationController pushViewController:publishVC animated:YES]; - -} - -#pragma mark - Getters And Setters -- (void)setWorldId:(NSString *)worldId { - _worldId = worldId; - self.encourageVewC.worldId = _worldId; - self.latestVewC.worldId = _worldId; -} - -- (JXCategoryTitleView *)categoryRegard { - if (!_categoryRegard) { - _categoryRegard = [[JXCategoryTitleView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 46)]; - _categoryRegard.titles = self.titles; - _categoryRegard.backgroundColor = [UIColor whiteColor]; - _categoryRegard.delegate = self; - _categoryRegard.titleSelectedColor = [DJDKMIMOMColor mainEssayPrettify]; - _categoryRegard.titleColor = [DJDKMIMOMColor instantEssayPrettify]; - _categoryRegard.titleSelectedFont = [UIFont boldSystemFontOfSize:18]; - _categoryRegard.titleFont = [UIFont systemFontOfSize:15]; - _categoryRegard.titleColorGradientEnabled = YES; - _categoryRegard.titleLabelZoomEnabled = NO; - _categoryRegard.indicators = @[self.burlywoodRegard]; - _categoryRegard.listContainer = (id)self.pagerView.listContainerView; - _categoryRegard.averageCellSpacingEnabled = NO; - _categoryRegard.contentEdgeInsetLeft = 20; - _categoryRegard.contentEdgeInsetRight = 20; - _categoryRegard.cellSpacing = 30; - - } - return _categoryRegard; -} - -- (JXCategoryIndicatorLineView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[JXCategoryIndicatorLineView alloc] init]; - _burlywoodRegard.indicatorColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - _burlywoodRegard.indicatorWidth = 9; - _burlywoodRegard.indicatorHeight = 4; - _burlywoodRegard.verticalMargin = 2; - } - return _burlywoodRegard; -} - -- (JXPagerListRefreshView *)pagerView { - if (!_pagerView) { - _pagerView = [[JXPagerListRefreshView alloc] initWithDelegate:self]; - _pagerView.listContainerView.scrollView.backgroundColor = UIColor.clearColor; - _pagerView.pinSectionHeaderVerticalOffset = (NSInteger) kNavigationHeight; - } - return _pagerView; -} - -- (NSArray *)titles { - if (!_titles) { - _titles = @[@"推荐", YMLocalizedString(@"YUMI_Monent_Topic_Container_View_Controller_1")]; - } - return _titles; -} - -- (YUMISeparationsMotifIntelligencerRegard *)intelligenceerRegard { - if (!_intelligenceerRegard) { - _intelligenceerRegard = [[YUMISeparationsMotifIntelligencerRegard alloc] init]; - } - return _intelligenceerRegard; -} - -- (YUMISeparationsMotifRecentlyRegardGovernancer *)latestVewC { - if (!_latestVewC) { - _latestVewC = [[YUMISeparationsMotifRecentlyRegardGovernancer alloc] init]; - } - return _latestVewC; -} - -- (YUMISeparationsMotifRecommondRegardGovernancer *)encourageVewC { - if (!_encourageVewC) { - _encourageVewC = [[YUMISeparationsMotifRecommondRegardGovernancer alloc] init]; - } - return _encourageVewC; -} - - -- (UIButton *)backButton { - if (!_backButton) { - _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backButton setImage:[UIImage imageNamed:@"yumi_main_search_white_back"] forState:UIControlStateNormal]; - [_backButton setImage:[UIImage imageNamed:@"yumi_main_search_white_back"] forState:UIControlStateSelected]; - [_backButton addTarget:self action:@selector(encourageBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _backButton; -} - -- (UIButton *)importMotifBtuton { - if (!_importMotifBtuton) { - _importMotifBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_importMotifBtuton setTitle:YMLocalizedString(@"YUMI_Monent_Topic_Container_View_Controller_2") forState:UIControlStateNormal]; - [_importMotifBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _importMotifBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_importMotifBtuton setBackgroundColor:[DJDKMIMOMColor aplictowardsionMainPrettify]]; - [_importMotifBtuton setImage:[UIImage imageNamed:@"yumi_monents_topimage_camera"] forState:UIControlStateNormal]; - [_importMotifBtuton addTarget:self action:@selector(importMotifBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _importMotifBtuton; -} - -@end diff --git a/YuMi/Modules/YMMonents/View/YUMISeparationsAnnounceRegardGovernancer.h b/YuMi/Modules/YMMonents/View/YUMISeparationsAnnounceRegardGovernancer.h deleted file mode 100644 index 980ab9cc..00000000 --- a/YuMi/Modules/YMMonents/View/YUMISeparationsAnnounceRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMonentsPublishViewController.h -// YUMI -// -// Created by YUMI on 2022/7/1. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN -@class SeparationsMotifMatrix; -@interface YUMISeparationsAnnounceRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,strong, nullable) SeparationsMotifMatrix *motifAbstract; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/YUMISeparationsAnnounceRegardGovernancer.m b/YuMi/Modules/YMMonents/View/YUMISeparationsAnnounceRegardGovernancer.m deleted file mode 100644 index ee14a55d..00000000 --- a/YuMi/Modules/YMMonents/View/YUMISeparationsAnnounceRegardGovernancer.m +++ /dev/null @@ -1,526 +0,0 @@ -// -// YMMonentsPublishViewController.m -// YUMI -// -// Created by YUMI on 2022/7/1. -// - -#import "YUMISeparationsAnnounceRegardGovernancer.h" -#import -#import -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "Api+Mine.h" -#import "UpwardsloadIndicate.h" -#import "MKJPopup.h" -#import "NSArray+Safe.h" -#import "ClientDisposition.h" -#import "NSMutableDictionary+Saft.h" -#import "SeparationsMotifMatrix.h" -#import "SeparationsPicResAbstract.h" -#import "YUMISeparationsAnnounceAssembletionRegardElement.h" -#import "YUMISeparationsAnnounceMotifRegard.h" -#import "YUMISepartionMotifStatementRegard.h" -#import "YUMISeparationAnnounceSuccessRegard.h" - -#import "YUMISeparationsAnnounceExternalizer.h" -#import "FBCSeparationsPublishCeremony.h" -#define itemWidth (KScreenWidth - 10 * 2 - 15 * 2) / 3.0 - -@interface YUMISeparationsAnnounceRegardGovernancer () -@property (nonatomic,strong) UIView * contentView; -@property (nonatomic,strong) UIView * nevRegard; -@property (nonatomic,strong) UIButton *backButton; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UIButton *publishBtuton; -@property (nonatomic, strong) SZTextView *textView; -@property (nonatomic,strong) UILabel *restrictionSequencignation; -@property (nonatomic,strong) UIView * burlywoodRegard; -@property (nonatomic,strong) UICollectionView *collectionView; -@property (nonatomic,strong) YUMISeparationsAnnounceMotifRegard *accelerateMotifRegard; -@property (nonatomic,strong) UILabel *sequenceriptionSequencignation; -@property (nonatomic,assign) BOOL isCompileed; -@property (nonatomic,strong) UIImage *accelerateGHPiicIndicate; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,strong) NSMutableArray *derivationAssets; -@property (nonatomic,strong) NSArray *uploadIndicateStatement; -@property (nonatomic,assign) int indicateComputation; -@end - -@implementation YUMISeparationsAnnounceRegardGovernancer - -- (__kindof id)producePresimport { - return [[YUMISeparationsAnnounceExternalizer alloc] init]; -} - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.nevRegard]; - [self.view addSubview:self.contentView]; - - [self.contentView addSubview:self.textView]; - [self.contentView addSubview:self.restrictionSequencignation]; - [self.contentView addSubview:self.burlywoodRegard]; - [self.contentView addSubview:self.collectionView]; - [self.contentView addSubview:self.accelerateMotifRegard]; - [self.contentView addSubview:self.sequenceriptionSequencignation]; - - [self.nevRegard addSubview:self.backButton]; - [self.nevRegard addSubview:self.titleLabel]; - [self.nevRegard addSubview:self.publishBtuton]; - - [self.datasource addObject:self.accelerateGHPiicIndicate]; - - self.accelerateMotifRegard.hidden = ![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild; -} - -- (void)initChildLyRestrictions { - [self.nevRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.height.mas_equalTo(kNavigationHeight); - }]; - - [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.view).mas_offset(10); - make.top.mas_equalTo(statusbarHeight); - make.height.width.mas_equalTo(44); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.nevRegard); - make.centerY.mas_equalTo(self.backButton); - }]; - - [self.publishBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.view).offset(-15); - make.centerY.mas_equalTo(self.titleLabel); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.top.mas_equalTo(self.nevRegard.mas_bottom); - make.bottom.mas_equalTo(self.view); - }]; - - - [self.textView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(15); - make.top.mas_equalTo(self.contentView).offset(10); - make.height.mas_equalTo(150); - }]; - - [self.restrictionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.textView.mas_bottom).offset(5); - make.right.mas_equalTo(self.textView); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.restrictionSequencignation.mas_bottom).offset(10); - make.left.right.mas_equalTo(self.textView); - make.height.mas_equalTo(1); - }]; - - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(15); - make.top.mas_equalTo(self.burlywoodRegard.mas_bottom).offset(10); - make.height.mas_equalTo(itemWidth); - }]; - - [self.accelerateMotifRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(15); - make.top.mas_equalTo(self.collectionView.mas_bottom).offset(15); - make.height.mas_equalTo(20); - }]; - - [self.sequenceriptionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view).inset(20); - make.bottom.mas_equalTo(self.view).offset(-25); - }]; -} - -- (void)upburdenBrochureGHPiicSttowardsement:(NSArray *)array finish:(void(^)(NSArray *list))finish { - dispatch_semaphore_t semaphore = dispatch_semaphore_create(1); - dispatch_queue_t queue = dispatch_get_global_queue(0, 0); - NSMutableArray * atoloudspeakerGarment = [NSMutableArray array]; - dispatch_async(queue, ^{ - for (UIImage * image in array) { - dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); - [Api qiniuUpwardsLoadIndictowardse:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSString *key = data.data[@"key"]; - NSString *token = data.data[@"token"]; - [UpwardsloadIndicate upburdenIndictowardse:image named:key token:token success:^(NSString * _Nonnull key, NSDictionary * _Nonnull resp) { - dispatch_semaphore_signal(semaphore); - self.indicateComputation ++; - NSMutableDictionary * dict= [NSMutableDictionary dictionary]; - SeparationsPicResAbstract * infor = [SeparationsPicResAbstract mtowardsrixAboutImpactbasket:resp]; - if (infor.path) { - [dict secureSetGroal:infor.path forKey:@"resUrl"]; - } - if (infor.format) { - [dict secureSetGroal:infor.format forKey:@"format"]; - } - - if (infor.w) { - [dict secureSetGroal:@(infor.w) forKey:@"width"]; - } - - if (infor.h) { - [dict secureSetGroal:@(infor.h) forKey:@"height"]; - } - [atoloudspeakerGarment addObject:dict]; - if (self.indicateComputation == array.count) { - dispatch_async(dispatch_get_main_queue(), ^{ - finish(atoloudspeakerGarment); - }); - } - - } failure:^(NSNumber * _Nonnull resCode, NSString * _Nonnull message) { - self.indicateComputation ++; - dispatch_semaphore_signal(semaphore); - }]; - } else { - self.indicateComputation ++; - dispatch_semaphore_signal(semaphore); - } - }]; - } - }); -} - -#pragma mark - UITextViewDelegate -- (void)textViewDidChange:(UITextView *)textView { - if (textView.text.length > 500) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Monents_Publish_View_Controller_0")]; - textView.text = [textView.text substringToIndex:500]; - } - self.restrictionSequencignation.text = [NSString stringWithFormat:@"%lu/%ld",((unsigned long)textView.text.length), (long)500]; - self.isCompileed = textView.text.length > 0; -} - -#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMISeparationsAnnounceAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMISeparationsAnnounceAssembletionRegardElement class]) forIndexPath:indexPath]; - UIImage * image = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (indexPath.row == (self.datasource.count -1)) { - cell.isExhibitRepresentation = self.datasource.count == 9; - } else { - cell.isExhibitRepresentation = YES; - } - cell.image = image; - cell.delegate = self; - return cell; -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - [collectionView deselectItemAtIndexPath:indexPath animated:YES]; - if (indexPath.row == (self.datasource.count -1) && self.datasource.count != 9) { - [self.textView resignFirstResponder]; - TZImagePickerController *imagePickerVc = [[TZImagePickerController alloc] initWithMaxImagesCount:1 delegate:self]; - imagePickerVc.modalPresentationStyle = UIModalPresentationOverFullScreen; - imagePickerVc.allowPickingVideo = NO; - imagePickerVc.allowTakeVideo = NO; - imagePickerVc.maxImagesCount = 9; - imagePickerVc.naviBgColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - imagePickerVc.naviTitleColor = [DJDKMIMOMColor mainEssayPrettify]; - imagePickerVc.barItemTextColor = [DJDKMIMOMColor mainEssayPrettify]; - imagePickerVc.selectedAssets = self.derivationAssets; - [self presentViewController:imagePickerVc animated:YES completion:nil]; - } -} - -#pragma mark - FBCSeparationsPublishAssembletionRegardElementRepresendtation -- (void)YUMISeparationsAnnounceAssembletionRegardElement:(YUMISeparationsAnnounceAssembletionRegardElement *)view didDeleteItem:(UIImage *)image { - [MKJPopup precautiousAboutCommunictowardsion:@"确认删除吗?" acknowledgementHandler:^{ - if ([self.datasource containsObject:image]) { - [self.datasource removeObject:image]; - } - NSIndexPath * indexPath = [self.collectionView indexPathForCell:view]; - if (indexPath.row < self.derivationAssets.count) { - [self.derivationAssets removeObjectAtIndex:indexPath.row]; - } - - [self.collectionView reloadData]; - if (self.datasource.count > 1) { - self.isCompileed = YES; - } else { - self.isCompileed = NO; - } - } cancelHandler:^{ - - }]; -} - -- (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingPhotos:(NSArray *)photos sourceAssets:(NSArray *)assets isSelectOriginalPhoto:(BOOL)isSelectOriginalPhoto infos:(NSArray *)infos { - [self.datasource removeAllObjects]; - [self.derivationAssets removeAllObjects]; - [self.datasource addObjectsFromArray:photos]; - [self.derivationAssets addObjectsFromArray:assets]; - if (self.datasource.count >= 9) { - if ([self.datasource containsObject:self.accelerateGHPiicIndicate]) { - [self.datasource removeObject:self.accelerateGHPiicIndicate]; - } - } else { - if (![self.datasource containsObject:self.accelerateGHPiicIndicate]) { - [self.datasource addObject:self.accelerateGHPiicIndicate]; - } - } - - int page = (int)self.datasource.count / 3; - int scale = self.datasource.count % 3; - CGFloat height; - if (scale == 0) { - height = (itemWidth + 10) * page; - } else { - height = (itemWidth + 10) * (page + 1); - } - - [self.collectionView mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(height); - }]; - [self.collectionView reloadData]; - if (self.datasource.count > 1) { - self.isCompileed = YES; - } else { - self.isCompileed = NO; - } - NSArray * array; - if (self.datasource.count < 9 && self.datasource.count > 1) { - array = [self.datasource subarrayWithRange:NSMakeRange(0, self.datasource.count - 1)]; - } - self.uploadIndicateStatement = array; -} - -#pragma mark - FBCSeparationsPublishMotifRegardRepresendtation -- (void)yUMISepartowardsionsPublishMotifRegard:(YUMISeparationsAnnounceMotifRegard *)view didTicktackConcludeBtuton:(UIButton *)sender { - self.motifAbstract = nil; -} - -- (void)yUMISepartowardsionsPublishMotifRegard:(YUMISeparationsAnnounceMotifRegard *)view didClickChooseTopic:(UIButton *)sender { - [self.textView resignFirstResponder]; - YUMISepartionMotifStatementRegard * topicListView = [[YUMISepartionMotifStatementRegard alloc] init]; - topicListView.delegate = self; - [MKJPopup popupRegard:topicListView style:MKJPopupStyleActionSheet]; -} - -#pragma mark - FBCMoentsMotifStatementRegardRepresendtation -- (void)yUMIMoentsMotifSttowardsementRegard:(YUMISepartionMotifStatementRegard *)view didSelectItem:(SeparationsMotifMatrix *)motifAbstract { - [MKJPopup dismiss]; - self.motifAbstract = motifAbstract; -} - -#pragma mark - FBCSeparationsPublishCeremony -- (void)announceSepartowardsionsAccomplishment { - YUMISeparationAnnounceSuccessRegard * successView = [[YUMISeparationAnnounceSuccessRegard alloc] init]; - MKJPopupServing *service = [[MKJPopupServing alloc] init]; - service.contentView = successView; - service.filterIdentifier = NSStringFromClass([YUMISeparationAnnounceSuccessRegard class]); - service.shouldFilterSpringforth = YES; - service.didFinishDismissHandler = ^(BOOL isDismissOnBackgroundTouch) { - [self.navigationController popViewControllerAnimated:YES]; - }; - [MKJPopup popupAboutDisposition:service]; - - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [MKJPopup dismiss]; - [self.navigationController popViewControllerAnimated:YES]; - }); -} -#pragma mark - Event Response -- (void)encourageBtutonPerformance:(UIButton *)sender { - if (self.isCompileed) { - MKJPrecautiousDisposition * config = [[MKJPrecautiousDisposition alloc] init]; - config.title = YMLocalizedString(@"YUMI_Monents_Publish_View_Controller_2"); - config.message = @"还没有发布哎~确定要返回吗?"; - config.acknowledgementBtutonDisposition.title = YMLocalizedString(@"YUMI_Monents_Publish_View_Controller_4"); - config.revocationBtutonDisposition.title = YMLocalizedString(@"YUMI_Monents_Publish_View_Controller_5"); - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - - } cancelHandler:^{ - [self.navigationController popViewControllerAnimated:YES]; - }]; - } else { - [self.navigationController popViewControllerAnimated:YES]; - } -} - - -- (void)publicBtutonPerformance:(UIButton *)sender { - [self.view endEditing:YES]; - if (self.textView.text.length > 0 || self.uploadIndicateStatement.count > 0) { - if (self.uploadIndicateStatement.count > 0) { - [self EvidenceChambering]; - [self upburdenBrochureGHPiicSttowardsement:self.uploadIndicateStatement finish:^(NSArray *list) { - [self brakeHUD]; - [self.presimport announceSepartowardsions:self.motifAbstract.worldId type:MonentsContentGenre_Picture content:self.textView.text resList:list]; - }]; - } else { - [self.presimport announceSepartowardsions:self.motifAbstract.worldId type:MonentsContentGenre_Text content:self.textView.text resList:@[]]; - } - } else { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Monents_Publish_View_Controller_6")]; - } -} - -#pragma mark - Getters And Setters -- (void)setMotifAbstract:(SeparationsMotifMatrix *)motifAbstract { - _motifAbstract = motifAbstract; - self.accelerateMotifRegard.motifAbstract = _motifAbstract; -} - -- (UIView *)nevRegard { - if (!_nevRegard) { - _nevRegard = [[UIView alloc] init]; - _nevRegard.backgroundColor = [UIColor clearColor]; - } - return _nevRegard; -} - -- (UIButton *)backButton { - if (!_backButton) { - _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backButton setImage:[UIImage imageNamed:@"yumi_same_title_back"] forState:UIControlStateNormal]; - [_backButton setImage:[UIImage imageNamed:@"yumi_same_title_back"] forState:UIControlStateSelected]; - [_backButton addTarget:self action:@selector(encourageBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _backButton; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.font = [UIFont systemFontOfSize:17]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleLabel.text = YMLocalizedString(@"YUMI_Monents_Publish_View_Controller_7"); - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} - -- (UIButton *)publishBtuton { - if (!_publishBtuton) { - _publishBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_publishBtuton setTitle:YMLocalizedString(@"YUMI_Monents_Publish_View_Controller_8") forState:UIControlStateNormal]; - [_publishBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionMainPrettify] forState:UIControlStateNormal]; - _publishBtuton.titleLabel.font = [UIFont systemFontOfSize:17]; - [_publishBtuton addTarget:self action:@selector(publicBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _publishBtuton; -} - -- (UIView *)contentView { - if (!_contentView) { - _contentView = [[UIView alloc] init]; - _contentView.backgroundColor = [UIColor clearColor]; - } - return _contentView; -} - - -- (UICollectionView *)collectionView { - if (!_collectionView) { - UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init]; - flowLayout.minimumInteritemSpacing = 10; - flowLayout.minimumLineSpacing = 10; - flowLayout.sectionInset = UIEdgeInsetsZero; - flowLayout.itemSize = CGSizeMake(itemWidth, itemWidth); - UICollectionView *collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:flowLayout]; - collectionView.delegate = self; - collectionView.dataSource = self; - collectionView.backgroundColor = [UIColor clearColor]; - [collectionView registerClass:YUMISeparationsAnnounceAssembletionRegardElement.class forCellWithReuseIdentifier:NSStringFromClass([YUMISeparationsAnnounceAssembletionRegardElement class])]; - _collectionView = collectionView; - } - return _collectionView; -} - - -- (SZTextView *)textView { - if (!_textView) { - _textView = [[SZTextView alloc] init]; - _textView.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _textView.font = [UIFont systemFontOfSize:15]; - _textView.placeholder = @"记录你此刻生活,分享给有趣的人看..."; - _textView.placeholderTextColor = [DJDKMIMOMColor instantEssayPrettify]; - _textView.backgroundColor = [UIColor clearColor]; - _textView.delegate = self; - } - return _textView; -} - -- (UILabel *)restrictionSequencignation { - if (!_restrictionSequencignation) { - _restrictionSequencignation = [[UILabel alloc] init]; - _restrictionSequencignation.text = @"0/500"; - _restrictionSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _restrictionSequencignation.font = [UIFont systemFontOfSize:12]; - _restrictionSequencignation.textAlignment = NSTextAlignmentRight; - } - return _restrictionSequencignation; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _burlywoodRegard; -} - -- (UILabel *)sequenceriptionSequencignation { - if (!_sequenceriptionSequencignation) { - _sequenceriptionSequencignation = [[UILabel alloc] init]; - _sequenceriptionSequencignation.text = @"禁止出现商业广告、微信号码、QQ号码、电话号码, 以及低俗、色情、恐怖、暴力和具有侮辱性语言等内容,违规者封号处理 !"; - _sequenceriptionSequencignation.font = [UIFont systemFontOfSize:11]; - _sequenceriptionSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _sequenceriptionSequencignation.numberOfLines = 0; - } - return _sequenceriptionSequencignation; -} - -- (YUMISeparationsAnnounceMotifRegard *)accelerateMotifRegard { - if (!_accelerateMotifRegard) { - _accelerateMotifRegard = [[YUMISeparationsAnnounceMotifRegard alloc] init]; - _accelerateMotifRegard.delegate = self; - } - return _accelerateMotifRegard; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - -- (UIImage *)accelerateGHPiicIndicate { - if (!_accelerateGHPiicIndicate) { - _accelerateGHPiicIndicate = [UIImage imageNamed:@"yumi_center_user_gen_album_add"]; - } - return _accelerateGHPiicIndicate; -} - -- (NSMutableArray *)derivationAssets { - if (!_derivationAssets) { - _derivationAssets = [NSMutableArray array]; - } - return _derivationAssets; -} -@end diff --git a/YuMi/Modules/YMMonents/View/YUMISeparationsCoactiveRegardGovernancer.h b/YuMi/Modules/YMMonents/View/YUMISeparationsCoactiveRegardGovernancer.h deleted file mode 100644 index c62906f2..00000000 --- a/YuMi/Modules/YMMonents/View/YUMISeparationsCoactiveRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMonentsInteractiveViewController.h -// YUMI -// -// Created by YUMI on 2022/5/18. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISeparationsCoactiveRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/YUMISeparationsCoactiveRegardGovernancer.m b/YuMi/Modules/YMMonents/View/YUMISeparationsCoactiveRegardGovernancer.m deleted file mode 100644 index cc2274df..00000000 --- a/YuMi/Modules/YMMonents/View/YUMISeparationsCoactiveRegardGovernancer.m +++ /dev/null @@ -1,211 +0,0 @@ -// -// YMMonentsInteractiveViewController.m -// YUMI -// -// Created by YUMI on 2022/5/18. -// - -#import "YUMISeparationsCoactiveRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "MKJPopup.h" -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "ClientDisposition.h" -#import "SeparationsCoactiveMatrix.h" -#import "YUMISeparationsCoactiveExternalizer.h" -#import "FBCSeparationsInteractiveCeremony.h" -#import "YUMISeparationsCoactiveTabulationRegardElement.h" -#import "YUMISeparationsDispossessTabulationRegardElement.h" -#import "YUMISeparationsSpecificRegardGovernancer.h" -#import "YUMIMomentsSimpleSpecificRegardGovernancer.h" - -@interface YUMISeparationsCoactiveRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,assign) NSInteger page; -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; -@end - -@implementation YUMISeparationsCoactiveRegardGovernancer - -- (__kindof id)producePresimport { - return [[YUMISeparationsCoactiveExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initIntelligencerGrantedTerminalerRrfresh]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Monents_Interactive_View_Controller_0"); - [self.view addSubview:self.tableView]; - [self accelertowardseBreeadcrumbProvisionAboutIndictowardseSaluttowardsion:@[@"monents_interactive_delete_message"] isContrary:NO target:self action:@selector(rectifyBtutonPerformance:) tags:nil]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -#pragma mark - 下拉刷新 -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - - [self intelligenceerRenovtowardseh]; -} - -#pragma mark - 刷新的fangfa -- (void)intelligenceerRenovtowardseh { - self.page = 1; - [self.presimport acquireSepartowardsionsCoactiveSttowardsement:@"" pageSize:20 state:0]; -} - -- (void)footerRenovtowardseh { - if (self.hasNoFurthaerAtoloudspeaker) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Monents_Interactive_View_Controller_1")]; - [self.tableView.mj_footer endRefreshing]; - return; - } - self.page++; - NSString * dynamicId = @""; - if (self.datasource.count > 0) { - SeparationsCoactiveMatrix * model = [self.datasource lastObject]; - dynamicId = model.dynamicId; - } - [self.presimport acquireSepartowardsionsCoactiveSttowardsement:dynamicId pageSize:20 state:1]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - SeparationsCoactiveMatrix * model = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return model.worldName.length > 0? 130 : 90; - } - return KScreenHeight - kNavigationHeight; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMISeparationsCoactiveTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMISeparationsCoactiveTabulationRegardElement class])]; - SeparationsCoactiveMatrix * model = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.interactiveAbstract = model; - return cell; - } - YUMISeparationsDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMISeparationsDispossessTabulationRegardElement class])]; - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.datasource.count > 0) { - SeparationsCoactiveMatrix * model = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - SeparationsAbstractMatrix * reminiscence = [[SeparationsAbstractMatrix alloc] init]; - reminiscence.dynamicId = model.dynamicId; - - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMISeparationsSpecificRegardGovernancer * detailVC = [[YUMISeparationsSpecificRegardGovernancer alloc] init]; - detailVC.monentsInfo = reminiscence; - [self.navigationController pushViewController:detailVC animated:YES]; - }else{ - YUMIMomentsSimpleSpecificRegardGovernancer * detailVC = [[YUMIMomentsSimpleSpecificRegardGovernancer alloc] init]; - detailVC.monentsInfo = reminiscence; - [self.navigationController pushViewController:detailVC animated:YES]; - } - } -} -#pragma mark -JXCategoryListContainerViewDelegate -- (UIView *)listView { - return self.view; -} - -#pragma mark - FBCSeparationsLatestCeremony -- (void)acquireSepartowardsionsCoactiveSttowardsementSueccess:(NSArray *)array state:(int)state{ - if (state == 0) { - [self.datasource removeAllObjects]; - } - if (array.count > 0) { - [self.datasource addObjectsFromArray:array]; - } - - if (state == 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - [self.tableView.mj_header endRefreshing]; - } else { - if (array.count > 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - } else { - self.hasNoFurthaerAtoloudspeaker = YES; - } - [self.tableView.mj_footer endRefreshing]; - } - [self.tableView reloadData]; -} - -- (void)acquireSepartowardsionsCoactiveSttowardsementFlunk:(NSString *)msg state:(int)state { - if (state == 0) { - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } -} - -- (void)prohibititinctCoactiveCommunictowardsionAccomplishment { - [self.datasource removeAllObjects]; - [self.tableView reloadData]; -} - -#pragma mark - Event Response -- (void)rectifyBtutonPerformance:(UIButton *)sender { - [MKJPopup precautiousAboutCommunictowardsion:@"清空后所有互动通知将被删除,确定清空吗?" acknowledgementHandler:^{ - [[self presimport] prohibititinctCoactiveCommunictowardsion]; - } cancelHandler:^{ - }]; -} - -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMISeparationsCoactiveTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMISeparationsCoactiveTabulationRegardElement class])]; - [_tableView registerClass:[YUMISeparationsDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMISeparationsDispossessTabulationRegardElement class])]; - } - return _tableView; -} - - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} -@end diff --git a/YuMi/Modules/YMMonents/View/YUMISeparationsConsiderationRegardGovernancer.h b/YuMi/Modules/YMMonents/View/YUMISeparationsConsiderationRegardGovernancer.h deleted file mode 100644 index 17866730..00000000 --- a/YuMi/Modules/YMMonents/View/YUMISeparationsConsiderationRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMonentsAttentionViewController.h -// YUMI -// -// Created by YUMI on 2022/5/18. -// - -#import "MvpRegardGovernancer.h" -#import -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISeparationsConsiderationRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/YUMISeparationsConsiderationRegardGovernancer.m b/YuMi/Modules/YMMonents/View/YUMISeparationsConsiderationRegardGovernancer.m deleted file mode 100644 index e7e232c2..00000000 --- a/YuMi/Modules/YMMonents/View/YUMISeparationsConsiderationRegardGovernancer.m +++ /dev/null @@ -1,271 +0,0 @@ -// -// YMMonentsAttentionViewController.m -// YUMI -// -// Created by YUMI on 2022/5/18. -// - -#import "YUMISeparationsConsiderationRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "YUMISeparationsProgrammingDisposition.h" -#import "MKJPopup.h" -#import "NSArray+Safe.h" -#import "ClientDisposition.h" -#import "SeparationsStatementAbstractMatrix.h" -#import "YUMISeparationsConsiderationExternalizer.h" -#import "FBCSeparationsConsiderationCeremony.h" -#import "YUMISeparationsTabulationRegardElement.h" -#import "YUMISeparationsDispossessTabulationRegardElement.h" -#import "YUMISeparationsSpecificRegardGovernancer.h" -#import "YUMIMomentsSimpleSpecificRegardGovernancer.h" - -@interface YUMISeparationsConsiderationRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,assign) NSInteger page; -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; -@property (nonatomic,strong) SeparationsStatementAbstractMatrix *listAbstract; -@end - -@implementation YUMISeparationsConsiderationRegardGovernancer - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (__kindof id)producePresimport { - return [[YUMISeparationsConsiderationExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initIntelligencerGrantedTerminalerRrfresh]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -#pragma mark - 下拉刷新 -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - - [self intelligenceerRenovtowardseh]; -} - -#pragma mark - 刷新的fangfa -- (void)intelligenceerRenovtowardseh { - self.page = 1; - [self.presimport acquireSepartowardsionsConsidertowardsionSttowardsementPeriodDimension:20 dynamicId:@"" state:0]; -} - -- (void)footerRenovtowardseh { - if (self.hasNoFurthaerAtoloudspeaker) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Monents_Attention_View_Controller_0")]; - [self.tableView.mj_footer endRefreshing]; - return; - } - self.page++; - [self.presimport acquireSepartowardsionsConsidertowardsionSttowardsementPeriodDimension:20 dynamicId:self.listAbstract.nextDynamicId state:1]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - SeparationsAbstractMatrix * monentInfo= [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - [YUMISeparationsProgrammingDisposition programmingSepartowardsionsMtowardsrix:monentInfo]; - return monentInfo.rowHeight; - } - return KScreenHeight - kNavigationHeight - 49 - kSafeAreaBottomHeight; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMISeparationsTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMISeparationsTabulationRegardElement class])]; - SeparationsAbstractMatrix * monentsInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.delegate = self; - cell.monentsInfo = monentsInfo; - return cell; - } - YUMISeparationsDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMISeparationsDispossessTabulationRegardElement class])]; - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.datasource.count > 0) { - SeparationsAbstractMatrix * monentsInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMISeparationsSpecificRegardGovernancer * detailVC = [[YUMISeparationsSpecificRegardGovernancer alloc] init]; - detailVC.monentsInfo = monentsInfo; - detailVC.delegate = self; - [self.navigationController pushViewController:detailVC animated:YES]; - }else{ - YUMIMomentsSimpleSpecificRegardGovernancer * detailVC = [[YUMIMomentsSimpleSpecificRegardGovernancer alloc] init]; - detailVC.monentsInfo = monentsInfo; - detailVC.delegate = self; - [self.navigationController pushViewController:detailVC animated:YES]; - } - } -} - -#pragma mark - FBCSeparationsDetailRegardGovernancerRepresendtation -- (void)yUMISepartowardsionsSpecificRegardGovernancer:(YUMISeparationsSpecificRegardGovernancer *)view representtowardsionSepartowardsions:(NSString *)dynamicId { - __block SeparationsAbstractMatrix * deleteInfo; - [self.datasource enumerateObjectsUsingBlock:^(SeparationsAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.dynamicId.integerValue == dynamicId.integerValue) { - deleteInfo = obj; - } - }]; - - if (deleteInfo) { - [self.datasource removeObject:deleteInfo]; - [self.tableView reloadData]; - } -} - -#pragma mark - FBCSeparationsTabulationViweElementRepresendtation -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClickLike:(SeparationsAbstractMatrix *)monentsInfo { - [self.presimport similarMonent:monentsInfo.dynamicId status:!monentsInfo.isLike likedUid:monentsInfo.uid worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; -} - -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClicDelete:(SeparationsAbstractMatrix *)monentsInfo { - [MKJPopup precautiousAboutCommunictowardsion:@"删除后不可恢复\n确定删除该动态吗?" acknowledgementHandler:^{ - [self.presimport representtowardsionSepartowardsions:monentsInfo.dynamicId worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; - } cancelHandler:^{ - - }]; -} - -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClicFold:(SeparationsAbstractMatrix *)monentsInfo { - __block SeparationsAbstractMatrix * monentsInfos; - [self.datasource enumerateObjectsUsingBlock:^(SeparationsAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.dynamicId.integerValue == monentsInfo.dynamicId.integerValue) { - monentsInfos = obj; - *stop = YES; - } - }]; - if (monentsInfos) { - NSInteger row = [self.datasource indexOfObject:monentsInfo]; - [self.tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:row inSection:0]] withRowAnimation:UITableViewRowAnimationNone]; - } -} - -#pragma mark -JXCategoryListContainerViewDelegate -- (UIView *)listView { - return self.view; -} - -#pragma mark - FBCSeparationsEncourageCeremony -- (void)acquireSepartowardsionsConsidertowardsionSttowardsementAccomplishment:(SeparationsStatementAbstractMatrix *)listAbstract state:(int)state { - self.listAbstract = listAbstract; - if (state == 0) { - [self.datasource removeAllObjects]; - } - if (listAbstract.dynamicList.count > 0) { - [self.datasource addObjectsFromArray:listAbstract.dynamicList]; - } - - if (state == 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - [self.tableView.mj_header endRefreshing]; - } else { - if (listAbstract.dynamicList.count > 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - } else { - self.hasNoFurthaerAtoloudspeaker = YES; - } - [self.tableView.mj_footer endRefreshing]; - } - [self.tableView reloadData]; -} - -- (void)acquireSepartowardsionsConsidertowardsionSttowardsementFlunk:(NSString *)msg state:(int)state { - if (state == 0) { - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } -} - -- (void)similarSepartowardsionsAccomplishment:(NSString *)dynamicId status:(BOOL)status { - [self.datasource enumerateObjectsUsingBlock:^(SeparationsAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj.dynamicId isEqualToString:dynamicId]) { - if (status) { - obj.isLike += 1; - } else { - obj.isLike -= 1; - } - *stop = YES; - } - }]; - [self.tableView reloadData]; -} - -- (void)representtowardsionSepartowardsionsAccomplishment:(NSString *)monentsInfo { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Monents_Attention_View_Controller_2")]; - __block SeparationsAbstractMatrix * deleteInfo; - [self.datasource enumerateObjectsUsingBlock:^(SeparationsAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.dynamicId.integerValue == monentsInfo.integerValue) { - deleteInfo = obj; - } - }]; - - if (deleteInfo) { - [self.datasource removeObject:deleteInfo]; - [self.tableView reloadData]; - } -} - -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMISeparationsTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMISeparationsTabulationRegardElement class])]; - [_tableView registerClass:[YUMISeparationsDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMISeparationsDispossessTabulationRegardElement class])]; - } - return _tableView; -} - - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} -@end diff --git a/YuMi/Modules/YMMonents/View/YUMISeparationsEncourageRegardGovernancer.h b/YuMi/Modules/YMMonents/View/YUMISeparationsEncourageRegardGovernancer.h deleted file mode 100644 index 2c2ccb44..00000000 --- a/YuMi/Modules/YMMonents/View/YUMISeparationsEncourageRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMonentsRecommendViewController.h -// YUMI -// -// Created by YUMI on 2022/5/11. -// - -#import "MvpRegardGovernancer.h" -#import -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISeparationsEncourageRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/YUMISeparationsEncourageRegardGovernancer.m b/YuMi/Modules/YMMonents/View/YUMISeparationsEncourageRegardGovernancer.m deleted file mode 100644 index 4d506674..00000000 --- a/YuMi/Modules/YMMonents/View/YUMISeparationsEncourageRegardGovernancer.m +++ /dev/null @@ -1,301 +0,0 @@ -// -// YMMonentsRecommendViewController.m -// YUMI -// -// Created by YUMI on 2022/5/11. -// - -#import "YUMISeparationsEncourageRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "YUMISeparationsProgrammingDisposition.h" -#import "MKJPopup.h" -#import "NSArray+Safe.h" -#import "ClientDisposition.h" -#import "SeparationsAbstractMatrix.h" -#import "SeparationsMotifMatrix.h" -#import "YUMISeparationsEncourageExternalizer.h" -#import "FBCSeparationsEncourageCeremony.h" -#import "YUMISeparationsTabulationRegardElement.h" -#import "YUMISeparationsDispossessTabulationRegardElement.h" -#import "YUMISeparationsEncourageIntelligencerRegard.h" -#import "YUMISeparationsSpecificRegardGovernancer.h" -#import "YUMIMomentsSimpleSpecificRegardGovernancer.h" -#import "YUMISeparationMotifAccommodatedRegardGovernancer.h" -#import "YUMISepartionMotifStatementRegardGovernancer.h" - -@interface YUMISeparationsEncourageRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,assign) NSInteger page; -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; -@property (nonatomic,strong) YUMISeparationsEncourageIntelligencerRegard *intelligenceerRegard; -@end - -@implementation YUMISeparationsEncourageRegardGovernancer - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (__kindof id)producePresimport { - return [[YUMISeparationsEncourageExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initIntelligencerGrantedTerminalerRrfresh]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.tableView]; - self.tableView.tableHeaderView = self.intelligenceerRegard; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -#pragma mark - 下拉刷新 -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - - [self intelligenceerRenovtowardseh]; -} - -#pragma mark - 刷新的fangfa -- (void)intelligenceerRenovtowardseh { - self.page = 1; - [self.presimport acquireSepartowardsionsEncourageSttowardsement:self.page pageSize:20 state:0]; - [self.presimport acquireSepartowardsionsMotifSttowardsement:self.page pageSize:20]; -} - -- (void)footerRenovtowardseh { - if (self.hasNoFurthaerAtoloudspeaker) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Monents_Recommend_View_Controller_0")]; - [self.tableView.mj_footer endRefreshing]; - return; - } - self.page++; - [self.presimport acquireSepartowardsionsEncourageSttowardsement:self.page pageSize:20 state:1]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - SeparationsAbstractMatrix * monentInfo= [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - [YUMISeparationsProgrammingDisposition programmingSepartowardsionsMtowardsrix:monentInfo]; - return monentInfo.rowHeight; - } - return KScreenHeight - kNavigationHeight - 49 - kSafeAreaBottomHeight; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMISeparationsTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMISeparationsTabulationRegardElement class])]; - SeparationsAbstractMatrix * monentsInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.monentsInfo = monentsInfo; - cell.delegate = self; - return cell; - } - YUMISeparationsDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMISeparationsDispossessTabulationRegardElement class])]; - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.datasource.count > 0) { - - SeparationsAbstractMatrix * monentsInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMISeparationsSpecificRegardGovernancer * detailVC = [[YUMISeparationsSpecificRegardGovernancer alloc] init]; - detailVC.monentsInfo = monentsInfo; - detailVC.delegate = self; - [self.navigationController pushViewController:detailVC animated:YES]; - }else{ - YUMIMomentsSimpleSpecificRegardGovernancer * detailVC = [[YUMIMomentsSimpleSpecificRegardGovernancer alloc] init]; - detailVC.monentsInfo = monentsInfo; - detailVC.delegate = self; - [self.navigationController pushViewController:detailVC animated:YES]; - } - } -} -#pragma mark - FBCSeparationsDetailRegardGovernancerRepresendtation -- (void)yUMISepartowardsionsSpecificRegardGovernancer:(YUMISeparationsSpecificRegardGovernancer *)view representtowardsionSepartowardsions:(NSString *)dynamicId { - __block SeparationsAbstractMatrix * deleteInfo; - [self.datasource enumerateObjectsUsingBlock:^(SeparationsAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.dynamicId.integerValue == dynamicId.integerValue) { - deleteInfo = obj; - } - }]; - - if (deleteInfo) { - [self.datasource removeObject:deleteInfo]; - [self.tableView reloadData]; - } -} - -#pragma mark - FBCSeparationsTabulationViweElementRepresendtation -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClickLike:(SeparationsAbstractMatrix *)monentsInfo { - [self.presimport similarMonent:monentsInfo.dynamicId status:!monentsInfo.isLike likedUid:monentsInfo.uid worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; -} - -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClicDelete:(SeparationsAbstractMatrix *)monentsInfo { - [MKJPopup precautiousAboutCommunictowardsion:@"删除后不可恢复\n确定删除该动态吗?" acknowledgementHandler:^{ - [self.presimport representtowardsionSepartowardsions:monentsInfo.dynamicId worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; - } cancelHandler:^{ - - }]; -} - -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClicFold:(SeparationsAbstractMatrix *)monentsInfo { - __block SeparationsAbstractMatrix * monentsInfos; - [self.datasource enumerateObjectsUsingBlock:^(SeparationsAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.dynamicId.integerValue == monentsInfo.dynamicId.integerValue) { - monentsInfos = obj; - *stop = YES; - } - }]; - if (monentsInfos) { - NSInteger row = [self.datasource indexOfObject:monentsInfo]; - [self.tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:row inSection:0]] withRowAnimation:UITableViewRowAnimationNone]; - } -} - -#pragma mark - FBCSeparationsEncourageIntelligencerRegardRepresendtation -- (void)yUMISepartowardsionsEncourageIntelligencerRegard:(YUMISeparationsEncourageIntelligencerRegard *)view didSelectItem:(SeparationsMotifMatrix *)info { - YUMISeparationMotifAccommodatedRegardGovernancer * topicVC = [[YUMISeparationMotifAccommodatedRegardGovernancer alloc] init]; - topicVC.worldId = info.tId; - [self.navigationController pushViewController:topicVC animated:YES]; -} - -- (void)yUMISepartowardsionsEncourageIntelligencerRegard:(YUMISeparationsEncourageIntelligencerRegard *)view didClickMoreTopic:(UIButton *)sender { - YUMISepartionMotifStatementRegardGovernancer * topicListVC = [[YUMISepartionMotifStatementRegardGovernancer alloc] init]; - [self.navigationController pushViewController:topicListVC animated:YES]; -} - -#pragma mark -JXCategoryListContainerViewDelegate -- (UIView *)listView { - return self.view; -} - -#pragma mark - FBCSeparationsEncourageCeremony -- (void)acquireSepartowardsionsEncourageSttowardsementAccomplishment:(NSArray *)array state:(int)state { - if (state == 0) { - [self.datasource removeAllObjects]; - } - if (array.count > 0) { - [self.datasource addObjectsFromArray:array]; - } - - if (state == 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - [self.tableView.mj_header endRefreshing]; - } else { - if (array.count > 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - } else { - self.hasNoFurthaerAtoloudspeaker = YES; - } - [self.tableView.mj_footer endRefreshing]; - } - [self.tableView reloadData]; -} - -- (void)acquireSepartowardsionsEncourageSttowardsementFlunk:(NSString *)msg state:(int)state { - if (state == 0) { - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } -} - -- (void)separtowardsionsMotifSttowardsementAccomplishment:(NSArray *)array { - self.intelligenceerRegard.motifStatement = array; -} - -- (void)similarSepartowardsionsAccomplishment:(NSString *)dynamicId status:(BOOL)status { - [self.datasource enumerateObjectsUsingBlock:^(SeparationsAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj.dynamicId isEqualToString:dynamicId]) { - if (status) { - obj.isLike += 1; - } else { - obj.isLike -= 1; - } - *stop = YES; - } - }]; - [self.tableView reloadData]; -} - -- (void)representtowardsionSepartowardsionsAccomplishment:(NSString *)monentsInfo { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Monents_Recommend_View_Controller_2")]; - __block SeparationsAbstractMatrix * deleteInfo; - [self.datasource enumerateObjectsUsingBlock:^(SeparationsAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.dynamicId.integerValue == monentsInfo.integerValue) { - deleteInfo = obj; - } - }]; - if (deleteInfo) { - [self.datasource removeObject:deleteInfo]; - [self.tableView reloadData]; - } -} - -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMISeparationsTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMISeparationsTabulationRegardElement class])]; - [_tableView registerClass:[YUMISeparationsDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMISeparationsDispossessTabulationRegardElement class])]; - } - return _tableView; -} - - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - -- (YUMISeparationsEncourageIntelligencerRegard *)intelligenceerRegard { - if (!_intelligenceerRegard) { - _intelligenceerRegard = [[YUMISeparationsEncourageIntelligencerRegard alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 110)]; - _intelligenceerRegard.delegate = self; - } - return _intelligenceerRegard; -} - -@end diff --git a/YuMi/Modules/YMMonents/View/YUMISeparationsManeRegardGovernancer.h b/YuMi/Modules/YMMonents/View/YUMISeparationsManeRegardGovernancer.h deleted file mode 100644 index 935353c9..00000000 --- a/YuMi/Modules/YMMonents/View/YUMISeparationsManeRegardGovernancer.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMMonentsMineViewController.h -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import "MvpRegardGovernancer.h" -#import -NS_ASSUME_NONNULL_BEGIN -@class SeparationsAbstractMatrix; -@interface YUMISeparationsManeRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,strong) NSArray*dynamicInfo; -@property (nonatomic, copy) void(^scrollCallback)(UIScrollView *scrollView); -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/YUMISeparationsManeRegardGovernancer.m b/YuMi/Modules/YMMonents/View/YUMISeparationsManeRegardGovernancer.m deleted file mode 100644 index 40f74ee8..00000000 --- a/YuMi/Modules/YMMonents/View/YUMISeparationsManeRegardGovernancer.m +++ /dev/null @@ -1,226 +0,0 @@ -// -// YMMonentsMineViewController.m -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import "YUMISeparationsManeRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "YUMISeparationsProgrammingDisposition.h" -#import "MKJPopup.h" -#import "NSArray+Safe.h" -#import "ClientDisposition.h" -#import "SeparationsStatementAbstractMatrix.h" -#import "YUMISeparationManeExternalizer.h" -#import "FBCSeparationsManeCeremony.h" -#import "YUMISeparationsTabulationRegardElement.h" -#import "YUMISeparationsDispossessTabulationRegardElement.h" -#import "YUMISeparationsSpecificRegardGovernancer.h" -#import "YUMIMomentsSimpleSpecificRegardGovernancer.h" - -@interface YUMISeparationsManeRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; -@property (nonatomic,strong) SeparationsStatementAbstractMatrix *listAbstract; -@end - -@implementation YUMISeparationsManeRegardGovernancer - -- (__kindof id)producePresimport { - return [[YUMISeparationManeExternalizer alloc] init]; -} - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - SeparationsAbstractMatrix * monentInfo= [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - [YUMISeparationsProgrammingDisposition programmingSepartowardsionsMtowardsrix:monentInfo]; - return monentInfo.rowHeight; - } - return KScreenHeight - kNavigationHeight - 49 - kSafeAreaBottomHeight; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMISeparationsTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMISeparationsTabulationRegardElement class])]; - SeparationsAbstractMatrix * monentsInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.delegate = self; - cell.monentsInfo = monentsInfo; - return cell; - } - YUMISeparationsDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMISeparationsDispossessTabulationRegardElement class])]; - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.datasource.count > 0) { - - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMISeparationsSpecificRegardGovernancer * detailVC = [[YUMISeparationsSpecificRegardGovernancer alloc] init]; - SeparationsAbstractMatrix * monentsInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - detailVC.monentsInfo = monentsInfo; - detailVC.delegate = self; - [self.navigationController pushViewController:detailVC animated:YES]; - }else{ - YUMIMomentsSimpleSpecificRegardGovernancer * detailVC = [[YUMIMomentsSimpleSpecificRegardGovernancer alloc] init]; - SeparationsAbstractMatrix * monentsInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - detailVC.monentsInfo = monentsInfo; - detailVC.delegate = self; - [self.navigationController pushViewController:detailVC animated:YES]; - } - } -} -#pragma mark - FBCSeparationsTabulationViweElementRepresendtation -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClickLike:(SeparationsAbstractMatrix *)monentsInfo { - [self.presimport similarMonent:monentsInfo.dynamicId status:!monentsInfo.isLike likedUid:monentsInfo.uid worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; -} - -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClicDelete:(SeparationsAbstractMatrix *)monentsInfo { - [MKJPopup precautiousAboutCommunictowardsion:YMLocalizedString(@"XPMonentsMineViewController2") acknowledgementHandler:^{ - [self.presimport representtowardsionSepartowardsions:monentsInfo.dynamicId worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; - } cancelHandler:^{ - - }]; -} - -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClicFold:(SeparationsAbstractMatrix *)monentsInfo { - __block SeparationsAbstractMatrix * monentsInfos; - [self.datasource enumerateObjectsUsingBlock:^(SeparationsAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.dynamicId.integerValue == monentsInfo.dynamicId.integerValue) { - monentsInfos = obj; - *stop = YES; - } - }]; - if (monentsInfos) { - NSInteger row = [self.datasource indexOfObject:monentsInfo]; - [self.tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:row inSection:0]] withRowAnimation:UITableViewRowAnimationNone]; - } -} - -#pragma mark - FBCSeparationsDetailRegardGovernancerRepresendtation -- (void)yUMISepartowardsionsSpecificRegardGovernancer:(YUMISeparationsSpecificRegardGovernancer *)view representtowardsionSepartowardsions:(NSString *)dynamicId { - __block SeparationsAbstractMatrix * deleteInfo; - [self.datasource enumerateObjectsUsingBlock:^(SeparationsAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.dynamicId.integerValue == dynamicId.integerValue) { - deleteInfo = obj; - } - }]; - - if (deleteInfo) { - [self.datasource removeObject:deleteInfo]; - [self.tableView reloadData]; - } -} - -#pragma mark - FBCSeparationsManeCeremony -- (void)similarSepartowardsionsAccomplishment:(NSString *)dynamicId status:(BOOL)status { - [self.datasource enumerateObjectsUsingBlock:^(SeparationsAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj.dynamicId isEqualToString:dynamicId]) { - if (status) { - obj.isLike += 1; - } else { - obj.isLike -= 1; - } - *stop = YES; - } - }]; - [self.tableView reloadData]; -} - -- (void)representtowardsionSepartowardsionsAccomplishment:(NSString *)monentsInfo { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Monents_Mine_View_Controller_1")]; - __block SeparationsAbstractMatrix * deleteInfo; - [self.datasource enumerateObjectsUsingBlock:^(SeparationsAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.dynamicId.integerValue == monentsInfo.integerValue) { - deleteInfo = obj; - } - }]; - - if (deleteInfo) { - [self.datasource removeObject:deleteInfo]; - [self.tableView reloadData]; - } -} - - -#pragma mark - JXPagingViewListViewDelegate -- (UIScrollView *)listScrollView { - return self.tableView; -} - -- (void)listViewDidScrollCallback:(void (^)(UIScrollView *))callback { - self.scrollCallback = callback; -} - -- (UIView *)listView { - return self.view; -} - -- (void)scrollViewDidScroll:(UIScrollView *)scrollView { - self.scrollCallback(scrollView); -} - -#pragma mark - Getters And Setters -- (void)setDynamicInfo:(NSArray *)dynamicInfo { - [self.datasource removeAllObjects]; - [self.datasource addObjectsFromArray:dynamicInfo]; - [self.tableView reloadData]; -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMISeparationsTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMISeparationsTabulationRegardElement class])]; - [_tableView registerClass:[YUMISeparationsDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMISeparationsDispossessTabulationRegardElement class])]; - } - return _tableView; -} - - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - -@end diff --git a/YuMi/Modules/YMMonents/View/YUMISeparationsMotifRecentlyRegardGovernancer.h b/YuMi/Modules/YMMonents/View/YUMISeparationsMotifRecentlyRegardGovernancer.h deleted file mode 100644 index 9c20fc00..00000000 --- a/YuMi/Modules/YMMonents/View/YUMISeparationsMotifRecentlyRegardGovernancer.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMMonentsTopicLatestViewController.h -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import "MvpRegardGovernancer.h" -#import -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISeparationsMotifRecentlyRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,copy) NSString *worldId; -@property (nonatomic, copy) void(^scrollCallback)(UIScrollView *scrollView); -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/YUMISeparationsMotifRecentlyRegardGovernancer.m b/YuMi/Modules/YMMonents/View/YUMISeparationsMotifRecentlyRegardGovernancer.m deleted file mode 100644 index a854720b..00000000 --- a/YuMi/Modules/YMMonents/View/YUMISeparationsMotifRecentlyRegardGovernancer.m +++ /dev/null @@ -1,282 +0,0 @@ -// -// YMMonentsTopicLatestViewController.m -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import "YUMISeparationsMotifRecentlyRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "YUMISeparationsProgrammingDisposition.h" -#import "MKJPopup.h" -#import "NSArray+Safe.h" -#import "ClientDisposition.h" -#import "SeparationsStatementAbstractMatrix.h" -#import "YUMISeparationsMotifRecentlyExternalizer.h" -#import "FBCSeparationsMotifLatestCeremony.h" -#import "YUMISeparationsTabulationRegardElement.h" -#import "YUMISeparationsDispossessTabulationRegardElement.h" -#import "YUMISeparationsSpecificRegardGovernancer.h" -#import "YUMIMomentsSimpleSpecificRegardGovernancer.h" - -@interface YUMISeparationsMotifRecentlyRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; -@property (nonatomic,strong) SeparationsStatementAbstractMatrix *listAbstract; -@end - -@implementation YUMISeparationsMotifRecentlyRegardGovernancer - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (__kindof id)producePresimport { - return [[YUMISeparationsMotifRecentlyExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initIntelligencerGrantedTerminalerRrfresh]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -#pragma mark - 下拉刷新 -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - - [self intelligenceerRenovtowardseh]; -} - -#pragma mark - 刷新的fangfa -- (void)intelligenceerRenovtowardseh { - [self.presimport acquireSepartowardsionsMotifRecentlySttowardsement:@"" worldId:self.worldId state:0]; -} - -- (void)footerRenovtowardseh { - if (self.hasNoFurthaerAtoloudspeaker) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Monents_Topic_Latest_View_Controller_0")]; - [self.tableView.mj_footer endRefreshing]; - return; - } - [self.presimport acquireSepartowardsionsMotifRecentlySttowardsement:self.listAbstract.nextDynamicId worldId:self.worldId state:1]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - SeparationsAbstractMatrix * monentInfo= [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - [YUMISeparationsProgrammingDisposition programmingSepartowardsionsMtowardsrix:monentInfo]; - return monentInfo.rowHeight; - } - return KScreenHeight - kNavigationHeight - 49 - kSafeAreaBottomHeight; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMISeparationsTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMISeparationsTabulationRegardElement class])]; - SeparationsAbstractMatrix * monentsInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.delegate = self; - cell.monentsInfo = monentsInfo; - return cell; - } - YUMISeparationsDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMISeparationsDispossessTabulationRegardElement class])]; - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.datasource.count > 0) { - - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMISeparationsSpecificRegardGovernancer * detailVC = [[YUMISeparationsSpecificRegardGovernancer alloc] init]; - SeparationsAbstractMatrix * monentsInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - detailVC.monentsInfo = monentsInfo; - detailVC.delegate = self; - [self.navigationController pushViewController:detailVC animated:YES]; - }else{ - YUMIMomentsSimpleSpecificRegardGovernancer * detailVC = [[YUMIMomentsSimpleSpecificRegardGovernancer alloc] init]; - SeparationsAbstractMatrix * monentsInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - detailVC.monentsInfo = monentsInfo; - detailVC.delegate = self; - [self.navigationController pushViewController:detailVC animated:YES]; - } - } -} -#pragma mark - FBCSeparationsTabulationViweElementRepresendtation -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClickLike:(SeparationsAbstractMatrix *)monentsInfo { - [self.presimport similarMonent:monentsInfo.dynamicId status:!monentsInfo.isLike likedUid:monentsInfo.uid worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; -} - -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClicDelete:(SeparationsAbstractMatrix *)monentsInfo { - [MKJPopup precautiousAboutCommunictowardsion:@"删除后不可恢复\n确定删除该动态吗?" acknowledgementHandler:^{ - [self.presimport representtowardsionSepartowardsions:monentsInfo.dynamicId worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; - } cancelHandler:^{ - - }]; -} - -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClicFold:(SeparationsAbstractMatrix *)monentsInfo { - __block SeparationsAbstractMatrix * monentsInfos; - [self.datasource enumerateObjectsUsingBlock:^(SeparationsAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.dynamicId.integerValue == monentsInfo.dynamicId.integerValue) { - monentsInfos = obj; - *stop = YES; - } - }]; - if (monentsInfos) { - NSInteger row = [self.datasource indexOfObject:monentsInfo]; - [self.tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:row inSection:0]] withRowAnimation:UITableViewRowAnimationNone]; - } -} - -#pragma mark - JXPagingViewListViewDelegate -- (UIScrollView *)listScrollView { - return self.tableView; -} - -- (void)listViewDidScrollCallback:(void (^)(UIScrollView *))callback { - self.scrollCallback = callback; -} - -- (UIView *)listView { - return self.view; -} - -- (void)scrollViewDidScroll:(UIScrollView *)scrollView { - self.scrollCallback(scrollView); -} - -#pragma mark - FBCSeparationsDetailRegardGovernancerRepresendtation -- (void)yUMISepartowardsionsSpecificRegardGovernancer:(YUMISeparationsSpecificRegardGovernancer *)view representtowardsionSepartowardsions:(NSString *)dynamicId { - __block SeparationsAbstractMatrix * deleteInfo; - [self.datasource enumerateObjectsUsingBlock:^(SeparationsAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.dynamicId.integerValue == dynamicId.integerValue) { - deleteInfo = obj; - } - }]; - - if (deleteInfo) { - [self.datasource removeObject:deleteInfo]; - [self.tableView reloadData]; - } -} - -#pragma mark - FBCSeparationsMotifLatestCeremony -- (void)acquireSepartowardsionsMotifRecentlySttowardsementAccomplishment:(SeparationsStatementAbstractMatrix *)listAbstract state:(int)state{ - self.listAbstract = listAbstract; - if (state == 0) { - [self.datasource removeAllObjects]; - } - if (listAbstract.dynamicList.count > 0) { - [self.datasource addObjectsFromArray:listAbstract.dynamicList]; - } - - if (state == 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - [self.tableView.mj_header endRefreshing]; - } else { - if (listAbstract.dynamicList.count > 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - } else { - self.hasNoFurthaerAtoloudspeaker = YES; - } - [self.tableView.mj_footer endRefreshing]; - } - [self.tableView reloadData]; -} - -- (void)acquireSepartowardsionsMotifRecentlySttowardsementFlunk:(NSString *)msg state:(int)state { - if (state == 0) { - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } -} - -- (void)similarSepartowardsionsAccomplishment:(NSString *)dynamicId status:(BOOL)status { - [self.datasource enumerateObjectsUsingBlock:^(SeparationsAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj.dynamicId isEqualToString:dynamicId]) { - if (status) { - obj.isLike += 1; - } else { - obj.isLike -= 1; - } - *stop = YES; - } - }]; - [self.tableView reloadData]; -} - -- (void)representtowardsionSepartowardsionsAccomplishment:(NSString *)monentsInfo { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Monents_Topic_Latest_View_Controller_2")]; - __block SeparationsAbstractMatrix * deleteInfo; - [self.datasource enumerateObjectsUsingBlock:^(SeparationsAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.dynamicId.integerValue == monentsInfo.integerValue) { - deleteInfo = obj; - } - }]; - - if (deleteInfo) { - [self.datasource removeObject:deleteInfo]; - [self.tableView reloadData]; - } -} - -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMISeparationsTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMISeparationsTabulationRegardElement class])]; - [_tableView registerClass:[YUMISeparationsDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMISeparationsDispossessTabulationRegardElement class])]; - } - return _tableView; -} - - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - -@end diff --git a/YuMi/Modules/YMMonents/View/YUMISeparationsMotifRecommondRegardGovernancer.h b/YuMi/Modules/YMMonents/View/YUMISeparationsMotifRecommondRegardGovernancer.h deleted file mode 100644 index 65d812af..00000000 --- a/YuMi/Modules/YMMonents/View/YUMISeparationsMotifRecommondRegardGovernancer.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMMonentsTopicRecommondViewController.h -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import "MvpRegardGovernancer.h" -#import -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISeparationsMotifRecommondRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,strong) NSString *worldId; - -@property (nonatomic, copy) void(^scrollCallback)(UIScrollView *scrollView); -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/YUMISeparationsMotifRecommondRegardGovernancer.m b/YuMi/Modules/YMMonents/View/YUMISeparationsMotifRecommondRegardGovernancer.m deleted file mode 100644 index acf09e70..00000000 --- a/YuMi/Modules/YMMonents/View/YUMISeparationsMotifRecommondRegardGovernancer.m +++ /dev/null @@ -1,282 +0,0 @@ -// -// YMMonentsTopicRecommondViewController.m -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import "YUMISeparationsMotifRecommondRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "YUMISeparationsProgrammingDisposition.h" -#import "MKJPopup.h" -#import "NSArray+Safe.h" -#import "ClientDisposition.h" -#import "SeparationsStatementAbstractMatrix.h" -#import "YUMISeparationsMotifEncourageExternalizer.h" -#import "FBCSeparationsMotifEncourageCeremony.h" -#import "YUMISeparationsTabulationRegardElement.h" -#import "YUMISeparationsDispossessTabulationRegardElement.h" -#import "YUMISeparationsSpecificRegardGovernancer.h" -#import "YUMIMomentsSimpleSpecificRegardGovernancer.h" - -@interface YUMISeparationsMotifRecommondRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; -@property (nonatomic,strong) SeparationsStatementAbstractMatrix *listAbstract; -@end - -@implementation YUMISeparationsMotifRecommondRegardGovernancer - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (__kindof id)producePresimport { - return [[YUMISeparationsMotifEncourageExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initIntelligencerGrantedTerminalerRrfresh]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -#pragma mark - 下拉刷新 -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - - [self intelligenceerRenovtowardseh]; -} - -#pragma mark - 刷新的fangfa -- (void)intelligenceerRenovtowardseh { - [self.presimport acquireSepartowardsionsMotifEncourageSttowardsement:@"" worldId:self.worldId state:0]; -} - -- (void)footerRenovtowardseh { - if (self.hasNoFurthaerAtoloudspeaker) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Monents_Topic_Recommond_View_Controller_0")]; - [self.tableView.mj_footer endRefreshing]; - return; - } - [self.presimport acquireSepartowardsionsMotifEncourageSttowardsement:self.listAbstract.nextDynamicId worldId:self.worldId state:1]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - SeparationsAbstractMatrix * monentInfo= [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - [YUMISeparationsProgrammingDisposition programmingSepartowardsionsMtowardsrix:monentInfo]; - return monentInfo.rowHeight; - } - return KScreenHeight - kNavigationHeight - 49 - kSafeAreaBottomHeight; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMISeparationsTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMISeparationsTabulationRegardElement class])]; - SeparationsAbstractMatrix * monentsInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.delegate = self; - cell.monentsInfo = monentsInfo; - return cell; - } - YUMISeparationsDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMISeparationsDispossessTabulationRegardElement class])]; - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.datasource.count > 0) { - - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMISeparationsSpecificRegardGovernancer * detailVC = [[YUMISeparationsSpecificRegardGovernancer alloc] init]; - SeparationsAbstractMatrix * monentsInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - detailVC.monentsInfo = monentsInfo; - detailVC.delegate = self; - [self.navigationController pushViewController:detailVC animated:YES]; - }else{ - YUMIMomentsSimpleSpecificRegardGovernancer * detailVC = [[YUMIMomentsSimpleSpecificRegardGovernancer alloc] init]; - SeparationsAbstractMatrix * monentsInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - detailVC.monentsInfo = monentsInfo; - detailVC.delegate = self; - [self.navigationController pushViewController:detailVC animated:YES]; - } - } -} - -#pragma mark - FBCSeparationsDetailRegardGovernancerRepresendtation -- (void)yUMISepartowardsionsSpecificRegardGovernancer:(YUMISeparationsSpecificRegardGovernancer *)view representtowardsionSepartowardsions:(NSString *)dynamicId { - __block SeparationsAbstractMatrix * deleteInfo; - [self.datasource enumerateObjectsUsingBlock:^(SeparationsAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.dynamicId.integerValue == dynamicId.integerValue) { - deleteInfo = obj; - } - }]; - - if (deleteInfo) { - [self.datasource removeObject:deleteInfo]; - [self.tableView reloadData]; - } -} - -#pragma mark - FBCSeparationsTabulationViweElementRepresendtation -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClickLike:(SeparationsAbstractMatrix *)monentsInfo { - [self.presimport similarMonent:monentsInfo.dynamicId status:!monentsInfo.isLike likedUid:monentsInfo.uid worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; -} - -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClicDelete:(SeparationsAbstractMatrix *)monentsInfo { - [MKJPopup precautiousAboutCommunictowardsion:@"删除后不可恢复\n确定删除该动态吗?" acknowledgementHandler:^{ - [self.presimport representtowardsionSepartowardsions:monentsInfo.dynamicId worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; - } cancelHandler:^{ - - }]; -} - -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClicFold:(SeparationsAbstractMatrix *)monentsInfo { - __block SeparationsAbstractMatrix * monentsInfos; - [self.datasource enumerateObjectsUsingBlock:^(SeparationsAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.dynamicId.integerValue == monentsInfo.dynamicId.integerValue) { - monentsInfos = obj; - *stop = YES; - } - }]; - if (monentsInfos) { - NSInteger row = [self.datasource indexOfObject:monentsInfo]; - [self.tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:row inSection:0]] withRowAnimation:UITableViewRowAnimationNone]; - } -} - -#pragma mark - JXPagingViewListViewDelegate -- (UIScrollView *)listScrollView { - return self.tableView; -} - -- (void)listViewDidScrollCallback:(void (^)(UIScrollView *))callback { - self.scrollCallback = callback; -} - -- (UIView *)listView { - return self.view; -} - -- (void)scrollViewDidScroll:(UIScrollView *)scrollView { - self.scrollCallback(scrollView); -} - -#pragma mark - FBCSeparationsEncourageCeremony -- (void)acquireSepartowardsionsMotifEncourageSttowardsementAccomplishment:(SeparationsStatementAbstractMatrix *)listAbstract state:(int)state { - self.listAbstract = listAbstract; - if (state == 0) { - [self.datasource removeAllObjects]; - } - if (listAbstract.dynamicList.count > 0) { - [self.datasource addObjectsFromArray:listAbstract.dynamicList]; - } - - if (state == 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - [self.tableView.mj_header endRefreshing]; - } else { - if (listAbstract.dynamicList.count > 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - } else { - self.hasNoFurthaerAtoloudspeaker = YES; - } - [self.tableView.mj_footer endRefreshing]; - } - [self.tableView reloadData]; -} - -- (void)acquireSepartowardsionsMotifEncourageSttowardsementFlunk:(NSString *)msg state:(int)state { - if (state == 0) { - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } -} - -- (void)similarSepartowardsionsAccomplishment:(NSString *)dynamicId status:(BOOL)status { - [self.datasource enumerateObjectsUsingBlock:^(SeparationsAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj.dynamicId isEqualToString:dynamicId]) { - if (status) { - obj.isLike += 1; - } else { - obj.isLike -= 1; - } - *stop = YES; - } - }]; - [self.tableView reloadData]; -} - -- (void)representtowardsionSepartowardsionsAccomplishment:(NSString *)monentsInfo { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Monents_Topic_Recommond_View_Controller_2")]; - __block SeparationsAbstractMatrix * deleteInfo; - [self.datasource enumerateObjectsUsingBlock:^(SeparationsAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.dynamicId.integerValue == monentsInfo.integerValue) { - deleteInfo = obj; - } - }]; - - if (deleteInfo) { - [self.datasource removeObject:deleteInfo]; - [self.tableView reloadData]; - } -} - -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMISeparationsTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMISeparationsTabulationRegardElement class])]; - [_tableView registerClass:[YUMISeparationsDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMISeparationsDispossessTabulationRegardElement class])]; - } - return _tableView; -} - - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} -@end diff --git a/YuMi/Modules/YMMonents/View/YUMISeparationsRecentlyRegardGovernancer.h b/YuMi/Modules/YMMonents/View/YUMISeparationsRecentlyRegardGovernancer.h deleted file mode 100644 index aed6c708..00000000 --- a/YuMi/Modules/YMMonents/View/YUMISeparationsRecentlyRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMonentsLatestViewController.h -// YUMI -// -// Created by YUMI on 2022/5/18. -// - -#import "MvpRegardGovernancer.h" -#import -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISeparationsRecentlyRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/YUMISeparationsRecentlyRegardGovernancer.m b/YuMi/Modules/YMMonents/View/YUMISeparationsRecentlyRegardGovernancer.m deleted file mode 100644 index b5133df3..00000000 --- a/YuMi/Modules/YMMonents/View/YUMISeparationsRecentlyRegardGovernancer.m +++ /dev/null @@ -1,278 +0,0 @@ -// -// YMMonentsLatestViewController.m -// YUMI -// -// Created by YUMI on 2022/5/18. -// - -#import "YUMISeparationsRecentlyRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "YUMISeparationsProgrammingDisposition.h" -#import "MKJPopup.h" -#import "NSArray+Safe.h" -#import "ClientDisposition.h" -#import "SeparationsStatementAbstractMatrix.h" -#import "YUMISeparationsRecentlyExternalizer.h" -#import "FBCSeparationsLatestCeremony.h" -#import "YUMISeparationsTabulationRegardElement.h" -#import "YUMISeparationsDispossessTabulationRegardElement.h" -#import "YUMISeparationsSpecificRegardGovernancer.h" -#import "YUMIMomentsSimpleSpecificRegardGovernancer.h" - -@interface YUMISeparationsRecentlyRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,assign) NSInteger page; -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; -@property (nonatomic,strong) SeparationsStatementAbstractMatrix *listAbstract; -@end - -@implementation YUMISeparationsRecentlyRegardGovernancer - -- (void)dealloc { - NSLog(@"你阿宁"); -} - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (__kindof id)producePresimport { - return [[YUMISeparationsRecentlyExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initIntelligencerGrantedTerminalerRrfresh]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -#pragma mark - 下拉刷新 -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - - [self intelligenceerRenovtowardseh]; -} - -#pragma mark - 刷新的fangfa -- (void)intelligenceerRenovtowardseh { - self.page = 1; - [self.presimport acquireSepartowardsionsRecentlySttowardsementPeriodDimension:20 dynamicId:@"" state:0]; -} - -- (void)footerRenovtowardseh { - if (self.hasNoFurthaerAtoloudspeaker) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Monents_Latest_View_Controller_0")]; - [self.tableView.mj_footer endRefreshing]; - return; - } - self.page++; - [self.presimport acquireSepartowardsionsRecentlySttowardsementPeriodDimension:20 dynamicId:self.listAbstract.nextDynamicId state:1]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - SeparationsAbstractMatrix * monentInfo= [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - [YUMISeparationsProgrammingDisposition programmingSepartowardsionsMtowardsrix:monentInfo]; - return monentInfo.rowHeight; - } - return KScreenHeight - kNavigationHeight - 49 - kSafeAreaBottomHeight; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMISeparationsTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMISeparationsTabulationRegardElement class])]; - SeparationsAbstractMatrix * monentsInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.monentsInfo = monentsInfo; - cell.delegate = self; - return cell; - } - YUMISeparationsDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMISeparationsDispossessTabulationRegardElement class])]; - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.datasource.count > 0) { - SeparationsAbstractMatrix * monentsInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMISeparationsSpecificRegardGovernancer * detailVC = [[YUMISeparationsSpecificRegardGovernancer alloc] init]; - detailVC.monentsInfo = monentsInfo; - detailVC.delegate = self; - [self.navigationController pushViewController:detailVC animated:YES]; - }else{ - YUMIMomentsSimpleSpecificRegardGovernancer * detailVC = [[YUMIMomentsSimpleSpecificRegardGovernancer alloc] init]; - detailVC.monentsInfo = monentsInfo; - detailVC.delegate = self; - [self.navigationController pushViewController:detailVC animated:YES]; - } - } -} -#pragma mark - FBCSeparationsDetailRegardGovernancerRepresendtation -- (void)yUMISepartowardsionsSpecificRegardGovernancer:(YUMISeparationsSpecificRegardGovernancer *)view representtowardsionSepartowardsions:(NSString *)dynamicId { - __block SeparationsAbstractMatrix * deleteInfo; - [self.datasource enumerateObjectsUsingBlock:^(SeparationsAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.dynamicId.integerValue == dynamicId.integerValue) { - deleteInfo = obj; - } - }]; - - if (deleteInfo) { - [self.datasource removeObject:deleteInfo]; - [self.tableView reloadData]; - } -} - -#pragma mark - FBCSeparationsTabulationViweElementRepresendtation -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClickLike:(SeparationsAbstractMatrix *)monentsInfo { - [self.presimport similarMonent:monentsInfo.dynamicId status:!monentsInfo.isLike likedUid:monentsInfo.uid worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; -} - -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClicDelete:(SeparationsAbstractMatrix *)monentsInfo { - [MKJPopup precautiousAboutCommunictowardsion:@"删除后不可恢复\n确定删除该动态吗?" acknowledgementHandler:^{ - [self.presimport representtowardsionSepartowardsions:monentsInfo.dynamicId worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; - } cancelHandler:^{ - - }]; -} - -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClicFold:(SeparationsAbstractMatrix *)monentsInfo { - __block SeparationsAbstractMatrix * monentsInfos; - [self.datasource enumerateObjectsUsingBlock:^(SeparationsAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.dynamicId.integerValue == monentsInfo.dynamicId.integerValue) { - monentsInfos = obj; - *stop = YES; - } - }]; - if (monentsInfos) { - NSInteger row = [self.datasource indexOfObject:monentsInfo]; - [self.tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:row inSection:0]] withRowAnimation:UITableViewRowAnimationNone]; - } -} - -#pragma mark -JXCategoryListContainerViewDelegate -- (UIView *)listView { - return self.view; -} - -#pragma mark - FBCSeparationsLatestCeremony -- (void)acquireSepartowardsionsRecentlySttowardsementAccomplishment:(SeparationsStatementAbstractMatrix *)listAbstract state:(int)state{ - self.listAbstract = listAbstract; - if (state == 0) { - [self.datasource removeAllObjects]; - } - if (listAbstract.dynamicList.count > 0) { - [self.datasource addObjectsFromArray:listAbstract.dynamicList]; - } - - if (state == 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - [self.tableView.mj_header endRefreshing]; - } else { - if (listAbstract.dynamicList.count > 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - } else { - self.hasNoFurthaerAtoloudspeaker = YES; - } - [self.tableView.mj_footer endRefreshing]; - } - [self.tableView reloadData]; -} - -- (void)acquireSepartowardsionsRecentlySttowardsementFlunk:(NSString *)msg state:(int)state { - if (state == 0) { - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } -} - -- (void)similarSepartowardsionsAccomplishment:(NSString *)dynamicId status:(BOOL)status { - [self.datasource enumerateObjectsUsingBlock:^(SeparationsAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj.dynamicId isEqualToString:dynamicId]) { - NSInteger count = obj.likeCount.integerValue; - obj.isLike = status; - if (status) { - count += 1; - } else { - count -= 1; - } - obj.likeCount = [NSString stringWithFormat:@"%ld", count]; - *stop = YES; - } - }]; - [self.tableView reloadData]; -} - -- (void)representtowardsionSepartowardsionsAccomplishment:(NSString *)monentsInfo { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Monents_Latest_View_Controller_2")]; - __block SeparationsAbstractMatrix * deleteInfo; - [self.datasource enumerateObjectsUsingBlock:^(SeparationsAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.dynamicId.integerValue == monentsInfo.integerValue) { - deleteInfo = obj; - } - }]; - - if (deleteInfo) { - [self.datasource removeObject:deleteInfo]; - [self.tableView reloadData]; - } -} - -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMISeparationsTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMISeparationsTabulationRegardElement class])]; - [_tableView registerClass:[YUMISeparationsDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMISeparationsDispossessTabulationRegardElement class])]; - } - return _tableView; -} - - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} -@end diff --git a/YuMi/Modules/YMMonents/View/YUMISeparationsRegardGovernancer.h b/YuMi/Modules/YMMonents/View/YUMISeparationsRegardGovernancer.h deleted file mode 100644 index 037944df..00000000 --- a/YuMi/Modules/YMMonents/View/YUMISeparationsRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMonentsViewController.h -// YUMI -// -// Created by YUMI on 2022/5/11. -// - -#import "BaseRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISeparationsRegardGovernancer : BaseRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/YUMISeparationsRegardGovernancer.m b/YuMi/Modules/YMMonents/View/YUMISeparationsRegardGovernancer.m deleted file mode 100644 index 0d8b3aa7..00000000 --- a/YuMi/Modules/YMMonents/View/YUMISeparationsRegardGovernancer.m +++ /dev/null @@ -1,265 +0,0 @@ -// -// YMMonentsViewController.m -// YUMI -// -// Created by YUMI on 2022/5/11. -// - -#import "YUMISeparationsRegardGovernancer.h" -#import -#import -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "AttachmentMatrix.h" -#import "SeparationsUnReadMatrix.h" -#import "YUMISeparationsEncourageRegardGovernancer.h" -#import "YUMISeparationsConsiderationRegardGovernancer.h" -#import "YUMISeparationsRecentlyRegardGovernancer.h" -#import "YUMISeparationsCoactiveRegardGovernancer.h" -#import "YUMISeparationsAnnounceRegardGovernancer.h" - -@interface YUMISeparationsRegardGovernancer () -@property (nonatomic,strong) NSArray *titles; -@property (nonatomic,strong) UIView * nevRegard; -@property (nonatomic,strong) UIView * pointRegard; -@property (nonatomic,strong) UIButton *communicationBtuton; -@property (nonatomic,strong) JXCategoryTitleView *titleView; -@property (nonatomic, strong) JXCategoryListContainerView *listContainerView; -@property (nonatomic,strong) UIButton *publishBtuton; -@property (nonatomic,strong) YUMISeparationsConsiderationRegardGovernancer * considerationVewC ; -@property (nonatomic,strong) YUMISeparationsRecentlyRegardGovernancer *latestVewC; -@property (nonatomic,strong) YUMISeparationsEncourageRegardGovernancer * encourageVewC; -@end - -@implementation YUMISeparationsRegardGovernancer -@synthesize parentMode = _parentMode; - -- (void)dealloc { - [[NIMSDK sharedSDK].systemNotificationManager removeDelegate:self]; -} - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [[NIMSDK sharedSDK].systemNotificationManager addDelegate:self]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.nevRegard]; - [self.view addSubview:self.listContainerView]; - [self.view addSubview:self.publishBtuton]; - - [self.nevRegard addSubview:self.titleView]; - [self.nevRegard addSubview:self.communicationBtuton]; - [self.nevRegard addSubview:self.pointRegard]; -} - -- (void)initChildLyRestrictions { - [self.nevRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.height.mas_equalTo(kNavigationHeight); - }]; - - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.nevRegard); - make.height.mas_equalTo(20); - make.top.mas_equalTo(self.nevRegard).offset(kSafeAreaTopHeight + 40); - }]; - - [self.communicationBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.titleView); - make.right.mas_equalTo(self.nevRegard).offset(-15); - make.size.mas_equalTo(CGSizeMake(22, 22)); - }]; - - [self.pointRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(10, 10)); - make.centerY.mas_equalTo(self.communicationBtuton.mas_top); - make.centerX.mas_equalTo(self.communicationBtuton.mas_right); - }]; - - [self.listContainerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.top.mas_equalTo(self.nevRegard.mas_bottom); - }]; - - [self.publishBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(45, 45)); - make.bottom.mas_equalTo(self.view).offset(-kSafeAreaBottomHeight - 60); - make.right.mas_equalTo(self.view).offset(-25); - }]; -} - -#pragma mark - JXCategoryListContainerViewDelegate -- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { - return self.titles.count; -} - -- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { - UIViewController * list = (UIViewController *)[self.listContainerView.validListDict objectForKey:[NSNumber numberWithInteger:index]]; - if (list) { - return list; - } else { - if (index == 0) { - return self.considerationVewC; - }else if (index == 1) { - return self.encourageVewC; - } else if(index == 2) { - return self.latestVewC; - } - return nil; - } - -} - -#pragma mark -NIMSystemNotificationManagerDelegate -- (void)onReceiveCustomSystemNotification:(NIMCustomSystemNotification *)notification { - if (notification.receiverType == NIMSessionTypeP2P) { - if (notification.content != nil) { - AttachmentMatrix *attachment = [AttachmentMatrix mtowardsrixAboutJSON:notification.content]; - if (attachment.first == IndividualityCommunicationGenre_Monents && attachment.second == Custom_Message_Sub_Monents_Unread_Update) { - SeparationsUnReadMatrix * unreadModel = [SeparationsUnReadMatrix mtowardsrixAboutImpactbasket:attachment.data]; - if (unreadModel.total > 0) { - self.pointRegard.hidden = NO; - } else { - self.pointRegard.hidden = YES; - } - [self setTarbsObstacleProvisionQuantity:unreadModel.total]; - } - } - } -} - -- (void)setTarbsObstacleProvisionQuantity:(NSInteger)value { - if (value > 0) { - if (value > 99) { - [self.tabBarItem setBadgeValue:@"99+"]; - } else { - [self.tabBarItem setBadgeValue:[NSString stringWithFormat:@"%ld", value]]; - } - } else { - [self.tabBarItem setBadgeValue:nil]; - } -} - -#pragma mark - Event Response -- (void)communictowardsionBtutonPerformance:(UIButton *)sender { - YUMISeparationsCoactiveRegardGovernancer * messageVC = [[YUMISeparationsCoactiveRegardGovernancer alloc] init]; - [self.navigationController pushViewController:messageVC animated:YES]; -} - -- (void)announceBtutonPerformance:(UIButton *)sender { - YUMISeparationsAnnounceRegardGovernancer * publishVC = [[YUMISeparationsAnnounceRegardGovernancer alloc] init]; - [self.navigationController pushViewController:publishVC animated:YES]; -} - -#pragma mark - Getters And Setters -- (JXCategoryListContainerView *)listContainerView { - if (!_listContainerView) { - _listContainerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; - _listContainerView.listCellBackgroundColor = [UIColor clearColor]; - } - return _listContainerView; -} - -- (JXCategoryTitleView *)titleView { - if (!_titleView) { - _titleView = [[JXCategoryTitleView alloc] initWithFrame:CGRectZero]; - _titleView.backgroundColor =[UIColor clearColor]; - _titleView.delegate = self; - _titleView.titleColor = [DJDKMIMOMColor instantEssayPrettify]; - _titleView.titleSelectedColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleView.titleFont = [UIFont systemFontOfSize:15 weight:UIFontWeightSemibold]; - _titleView.titleSelectedFont = [UIFont systemFontOfSize:20 weight:UIFontWeightHeavy]; - _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; - _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; - _titleView.averageCellSpacingEnabled = NO; - _titleView.defaultSelectedIndex = 0; - _titleView.cellSpacing = 20; - _titleView.titles = self.titles; - _titleView.listContainer = self.listContainerView; - _titleView.defaultSelectedIndex = 1; - CGFloat itemWidth = [YMLocalizedString(@"YUMI_Monents_View_Controller_0") boundingRectWithSize:CGSizeMake(100, CGFLOAT_MAX) options:NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:20 weight:UIFontWeightHeavy]} context:nil].size.width; - _titleView.cellWidth = itemWidth; - _titleView.contentEdgeInsetLeft = (KScreenWidth - itemWidth * self.titles.count - 20 * (self.titles.count - 1))/ 2; - } - return _titleView; -} - -- (UIView *)nevRegard { - if (!_nevRegard) { - _nevRegard = [[UIView alloc] init]; - _nevRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - } - return _nevRegard; -} - -- (NSArray *)titles { - if (!_titles) { - _titles = @[@"关注",@"推荐", YMLocalizedString(@"YUMI_Monents_View_Controller_3")]; - } - return _titles; -} - -- (UIButton *)communicationBtuton { - if (!_communicationBtuton) { - _communicationBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_communicationBtuton setImage:[UIImage imageNamed:@"yumi_monents_title_interavtive_message"] forState:UIControlStateNormal]; - [_communicationBtuton setImage:[UIImage imageNamed:@"yumi_monents_title_interavtive_message"] forState:UIControlStateSelected]; - [_communicationBtuton addTarget:self action:@selector(communictowardsionBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _communicationBtuton; -} - -- (UIView *)pointRegard { - if (!_pointRegard) { - _pointRegard = [[UIView alloc] init]; - _pointRegard.backgroundColor = UIColorFromRGB(0xFF2D55); - _pointRegard.layer.masksToBounds = YES; - _pointRegard.layer.cornerRadius = 5; - _pointRegard.hidden = YES; - } - return _pointRegard; -} - -- (UIButton *)publishBtuton { - if (!_publishBtuton) { - _publishBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_publishBtuton setImage:[UIImage imageNamed:@"yumi_monents_publish"] forState:UIControlStateNormal]; - [_publishBtuton setImage:[UIImage imageNamed:@"yumi_monents_publish"] forState:UIControlStateSelected]; - [_publishBtuton addTarget:self action:@selector(announceBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _publishBtuton; -} - -- (YUMISeparationsConsiderationRegardGovernancer *)considerationVewC { - if (!_considerationVewC) { - YUMISeparationsConsiderationRegardGovernancer * considerationVewC = [[YUMISeparationsConsiderationRegardGovernancer alloc] init]; - _considerationVewC = considerationVewC; - } - return _considerationVewC; -} - -- (YUMISeparationsRecentlyRegardGovernancer *)latestVewC { - if (!_latestVewC) { - _latestVewC = [[YUMISeparationsRecentlyRegardGovernancer alloc] init]; - } - return _latestVewC; -} - -- (YUMISeparationsEncourageRegardGovernancer *)encourageVewC { - if (!_encourageVewC) { - _encourageVewC = [[YUMISeparationsEncourageRegardGovernancer alloc] init]; - } - return _encourageVewC; -} - -@end diff --git a/YuMi/Modules/YMMonents/View/YUMISeparationsSpecificRegardGovernancer.h b/YuMi/Modules/YMMonents/View/YUMISeparationsSpecificRegardGovernancer.h deleted file mode 100644 index 6d5df087..00000000 --- a/YuMi/Modules/YMMonents/View/YUMISeparationsSpecificRegardGovernancer.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMMonentsDetailViewController.h -// YUMI -// -// Created by YUMI on 2022/6/22. -// - -#import "MvpRegardGovernancer.h" -#import "FBCSeparationsDetailRegardGovernancerRepresendtation.h" - -NS_ASSUME_NONNULL_BEGIN -@class SeparationsAbstractMatrix, YUMISeparationsSpecificRegardGovernancer; - -@interface YUMISeparationsSpecificRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,strong) SeparationsAbstractMatrix *monentsInfo; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/YUMISeparationsSpecificRegardGovernancer.m b/YuMi/Modules/YMMonents/View/YUMISeparationsSpecificRegardGovernancer.m deleted file mode 100644 index 480d3d51..00000000 --- a/YuMi/Modules/YMMonents/View/YUMISeparationsSpecificRegardGovernancer.m +++ /dev/null @@ -1,462 +0,0 @@ -// -// YMMonentsDetailViewController.m -// YUMI -// -// Created by YUMI on 2022/6/22. -// - -#import "YUMISeparationsSpecificRegardGovernancer.h" -#import -#import -#import "YUMISeparationsProgrammingDisposition.h" -#import "DJDKMIMOMColor.h" -#import "MHTSpiritFacilitater.h" -#import "MHTKeyboardExecutive.h" -#import "MKJPopup.h" -#import "NSArray+Safe.h" -#import "ClientDisposition.h" -#import "SeparationsAbstractMatrix.h" -#import "SeparationsJudgementMatrix.h" -#import "SeparationsJudgementReplicationMatrix.h" -#import "YUMISeparationsTabulationRegardElement.h" -#import "YUMISeparationsJudgementTabulationRegardElement.h" -#import "YUMISeparationsDispossessTabulationRegardElement.h" -#import "MHTIntrojectionObstacleRegard.h" -#import "MHTKeyboardExecutive.h" -#import "MHTSpiritDirectorateRegard.h" -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -#import "YUMIManeSimpleConsumerAbstractRegardGovernancer.h" -#import "YUMISeparationSpecificExternalizer.h" -#import "FBCSeparationsDetailCeremony.h" - -@interface YUMISeparationsSpecificRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,strong) UIView * sectionRegard; -@property (nonatomic,strong) UILabel *judgementSequencignation; -@property(nonatomic,strong)MHTIntrojectionObstacleRegard *introjectionObstacleRegard; -@property(nonatomic,strong)MHTKeyboardExecutive *keydirectorateExecutive; -@property (nonatomic,strong) NSString *commentId; -@end - -@implementation YUMISeparationsSpecificRegardGovernancer - -- (__kindof id)producePresimport { - return [[YUMISeparationSpecificExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initIntelligencerGrantedTerminalerRrfresh]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - 下拉刷新 -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - - [self intelligenceerRenovtowardseh]; -} - -- (void)intelligenceerRenovtowardseh { - [self.presimport acquireSepartowardsionsSpecific:self.monentsInfo.dynamicId]; - [self.presimport acquireSepartowardsionsJudgementSttowardsement:self.monentsInfo.dynamicId timestamp:@"" status:0]; -} - -- (void)footerRenovtowardseh { - NSString *timestamp = @""; - if (self.datasource.count > 0) { - SeparationsJudgementMatrix * judgementAbstract = [self.datasource lastObject]; - timestamp = judgementAbstract.publishTime; - } - [self.presimport acquireSepartowardsionsJudgementSttowardsement:self.monentsInfo.dynamicId timestamp:timestamp status:1]; -} - - -#pragma mark - Private Method -- (void)initIntrojectionRegard { - - - _introjectionObstacleRegard = [[MHTIntrojectionObstacleRegard alloc] initWithFrame:CGRectMake(0,0,self.view.frame.size.width,UIInputBarViewMinHeight)]; - MHTIntrojectionObstacleRegardDispositionuration *introjectionObstacleRegardDispositionurtowardsion = [MHTIntrojectionObstacleRegardDispositionuration deficiencyIntrojectionObstacleRegardDispositionurtowardsion]; - introjectionObstacleRegardDispositionurtowardsion.reputationBtutonVeiled = YES; - introjectionObstacleRegardDispositionurtowardsion.spreadBtutonVeiled = YES; - [_introjectionObstacleRegard setupAboutDispositionurtowardsion:introjectionObstacleRegardDispositionurtowardsion]; - _introjectionObstacleRegard.delegate = self; - - - _keydirectorateExecutive = [[MHTKeyboardExecutive alloc] initWithViewController:self]; - _keydirectorateExecutive.dataSource = self; - - _keydirectorateExecutive.delegate = self; - [_keydirectorateExecutive accelertowardseExtremeIntrojectionObstacleRegard:_introjectionObstacleRegard belowViewController:NO]; - - - [_keydirectorateExecutive dilemmaEssayRegard:_introjectionObstacleRegard.introjectionEssayRegard]; -} - -- (void)prohibitichargeEssayCommunictowardsion:(NSString *)inputText { - if (inputText.length > 0) { - [_keydirectorateExecutive brakeEntiretyDirectortowardseRegard]; - if (self.commentId && self.commentId.length > 0) { - [self.presimport reprohibitiportCommon:self.commentId dynamicId:self.monentsInfo.dynamicId content:inputText]; - } else { - [self.presimport commontSepartowardsions:self.monentsInfo.dynamicId content:inputText]; - } - self.introjectionObstacleRegard.introjectionEssayRegard.text = nil; - } else { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Monents_Detail_View_Controller_0")]; - } -} - -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Monents_Detail_View_Controller_1"); - [self.view addSubview:self.tableView]; - [self.sectionRegard addSubview:self.judgementSequencignation]; - [self initIntrojectionRegard]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.introjectionObstacleRegard.mas_top); - }]; - - [self.judgementSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.sectionRegard).offset(15); - make.centerY.mas_equalTo(self.sectionRegard); - }]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return 2; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - if (section == 0) { - return 1; - } - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (indexPath.section == 0) { - [YUMISeparationsProgrammingDisposition programmingSepartowardsionsMtowardsrix:self.monentsInfo]; - return self.monentsInfo.rowHeight; - } else if(indexPath.section == 1) { - if (self.datasource.count > 0) { - SeparationsJudgementMatrix * judgementAbstract = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return [YUMISeparationsProgrammingDisposition judgementJudgementRowAltitude:judgementAbstract]; - } else { - return 400; - } - } - return 0; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { - if (section == 1) { - return 44; - } - return 0.0;; -} - -- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { - self.judgementSequencignation.text = [NSString stringWithFormat:@"所有评论(%@)", self.monentsInfo.commentCount]; - return self.sectionRegard; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { - return 0.0f; -} - -- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { - return [UIView new]; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (indexPath.section ==0) { - YUMISeparationsTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMISeparationsTabulationRegardElement class])]; - cell.delegate = self; - cell.monentsInfo = self.monentsInfo; - return cell; - } else { - if (self.datasource.count > 0) { - YUMISeparationsJudgementTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMISeparationsJudgementTabulationRegardElement class])]; - cell.judgementAbstract = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.delegate = self; - return cell; - } else { - YUMISeparationsDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMISeparationsDispossessTabulationRegardElement class])]; - return cell; - } - } -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (indexPath.section == 1) { - if (self.datasource.count > 0) { - SeparationsJudgementMatrix* monent = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - self.commentId = monent.commentId; - self.introjectionObstacleRegard.introjectionEssayRegard.placeholder = [NSString stringWithFormat:@"回复: %@", monent.nick]; - [self.introjectionObstacleRegard essayRegardBecomeThresholdResponder]; - } - } -} - -- (void)scrollViewDidScroll:(UIScrollView *)scrollView { - [_keydirectorateExecutive brakeEntiretyDirectortowardseRegard]; -} - -#pragma mark - FBCSeparationsCommentTabulationViweElementRepresendtation -- (void)yUMISepartowardsionsJudgementTarbsultowardsionViweElement:(YUMISeparationsJudgementTabulationRegardElement *)view didClickMoreReply:(SeparationsJudgementMatrix *)judgementAbstract { - [self.presimport acquireSepartowardsionsJudgementReplictowardsionSttowardsement:self.monentsInfo.dynamicId commentId:judgementAbstract.commentId timestamp:judgementAbstract.replyInfo.nextTimestamp]; -} - -- (void)yUMISepartowardsionsJudgementTarbsultowardsionViweElement:(YUMISeparationsJudgementTabulationRegardElement *)view didClickCommon:(SeparationsReplicationMatrix *)judgementAbstract { - if (judgementAbstract) { - self.commentId = judgementAbstract.replyId; - self.introjectionObstacleRegard.introjectionEssayRegard.placeholder = [NSString stringWithFormat:@"回复: %@", judgementAbstract.nick]; - [self.introjectionObstacleRegard essayRegardBecomeThresholdResponder]; - } -} -- (void)yUMISepartowardsionsJudgementTarbsultowardsionViweElement:(YUMISeparationsJudgementTabulationRegardElement *)view didClickAvatar:(NSString *)judgementAbstract { - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMIManeConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = judgementAbstract.integerValue; - [self.navigationController pushViewController:userInfoVC animated:YES]; - }else{ - YUMIManeSimpleConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeSimpleConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = judgementAbstract.integerValue; - [self.navigationController pushViewController:userInfoVC animated:YES]; - } -} -#pragma mark - FBCSeparationsTabulationViweElementRepresendtation -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClickLike:(SeparationsAbstractMatrix *)monentsInfo { - [self.presimport similarMonent:monentsInfo.dynamicId status:!monentsInfo.isLike likedUid:monentsInfo.uid worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; -} - -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClicDelete:(SeparationsAbstractMatrix *)monentsInfo { - [MKJPopup precautiousAboutCommunictowardsion:@"删除后不可恢复\n确定删除该动态吗?" acknowledgementHandler:^{ - [self.presimport representtowardsionSepartowardsions:monentsInfo.dynamicId worldId:[NSString stringWithFormat:@"%ld", monentsInfo.worldId]]; - } cancelHandler:^{ - - }]; -} - -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClicCommon:(SeparationsAbstractMatrix *)monentsInfo { - if (monentsInfo) { - self.commentId = nil; - self.introjectionObstacleRegard.introjectionEssayRegard.placeholder = YMLocalizedString(@"YUMI_Monents_Detail_View_Controller_6"); - [self.introjectionObstacleRegard essayRegardBecomeThresholdResponder]; - } -} - -- (void)yUMISepartowardsionsTarbsultowardsionViweElement:(YUMISeparationsTabulationRegardElement *)view didClicFold:(SeparationsAbstractMatrix *)monentsInfo { - self.monentsInfo = monentsInfo; - [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone]; -} - -#pragma mark - IntrojectionDirectorateAtomicSource -- (UIView *)digitentiretyibraExecutiveSpreadDirectortowardseRegard:(MHTKeyboardExecutive *)keydirectorateExecutive { - UIView *boardView = [UIView new]; - boardView.backgroundColor = UIColor.blueColor; - return boardView; -} - -- (UIView *)digitentiretyibraExecutiveSenintrtowardsemporalntDirectortowardseRegard:(MHTKeyboardExecutive *)keydirectorateExecutive { - MHTSpiritDirectorateRegard *senintrtowardsemporalntRegard = [[MHTSpiritDirectorateRegard alloc] init]; - MHTSpiritFacilitater *faceManager = [MHTSpiritFacilitater partowardsiciptowardsiondSenintrtowardsemporalntFacilittowardseer]; - senintrtowardsemporalntRegard.senintratemporalnts = faceManager.senintratemporalntGarment; - senintrtowardsemporalntRegard.delegate = self; - if (@available(iOS 11.0, *)) { - NSBundle *bundle = [NSBundle bundleForClass:[self class]]; - senintrtowardsemporalntRegard.backgroundColor = [UIColor colorNamed:@"q_input_extend_bg" inBundle:bundle compatibleWithTraitCollection:nil]; - } else { - senintrtowardsemporalntRegard.backgroundColor = [UIColor colorWithRed:(246)/255.0f green:(246)/255.0f blue:(246)/255.0f alpha:1]; - } - return senintrtowardsemporalntRegard; -} - -- (CGFloat)digitentiretyibraExecutiveSenintrtowardsemporalntDirectortowardseAltitude:(MHTKeyboardExecutive *)keydirectorateExecutive { - return 294; -} - -- (CGFloat)digitentiretyibraExecutiveSpreadDirectortowardseAltitude:(MHTKeyboardExecutive *)keydirectorateExecutive { - return 174; -} - -- (MHTIntrojectionObstacleRegardDispositionuration *)introjectionObstacleRegardDispositionurtowardsion { - - MHTIntrojectionObstacleRegardDispositionuration *introjectionObstacleRegardDispositionurtowardsion = [MHTIntrojectionObstacleRegardDispositionuration deficiencyIntrojectionObstacleRegardDispositionurtowardsion]; - introjectionObstacleRegardDispositionurtowardsion.reputationBtutonVeiled = YES; - introjectionObstacleRegardDispositionurtowardsion.spreadBtutonVeiled = YES; - return introjectionObstacleRegardDispositionurtowardsion; -} - -- (void)introjectionObstacleRegard:(MHTIntrojectionObstacleRegard *)introjectionObstacleRegard onEmotionButtonClick:(UIButton *)senintratemporalntSwopBtuton { - if (senintratemporalntSwopBtuton.isSelected) { - [_keydirectorateExecutive swopToSenintrtowardsemporalntDirectortowardseDigitentiretyibra]; - } else { - self.commentId = nil; - _introjectionObstacleRegard.introjectionEssayRegard.placeholder = YMLocalizedString(@"YUMI_Monents_Detail_View_Controller_7"); - [_introjectionObstacleRegard essayRegardBecomeThresholdResponder]; - } -} - -#pragma mark - QEmotionDirectorateRegardRepresendtation - -- (void)senintrtowardsemporalntRegard:(MHTSpiritDirectorateRegard *)senintrtowardsemporalntRegard didSelectEmotion:(MHTSpirit *)emotion atIndex:(NSInteger)index { - - [_introjectionObstacleRegard insertSenintrtowardsemporalnt:emotion.displayName]; -} - -- (void)senintrtowardsemporalntRegardDidChosenRepresenttowardsionBtuton:(MHTSpiritDirectorateRegard *)senintrtowardsemporalntRegard { - if (![_introjectionObstacleRegard representtowardsionSenintrtowardsemporalnt]){ - - [_introjectionObstacleRegard.introjectionEssayRegard deleteBackward]; - } -} - -- (void)senintrtowardsemporalntRegardDidChosenDischargeBtuton:(MHTSpiritDirectorateRegard *)senintrtowardsemporalntRegard { - [self prohibitichargeEssayCommunictowardsion:[_introjectionObstacleRegard essayRegardIntrojectionOrdinaryEssay]]; -} - - -#pragma mark - - -- (void)introjectionObstacleRegard:(MHTIntrojectionObstacleRegard *)introjectionObstacleRegard onKeyboardSendClick:(NSString *)inputNormalText { - [self prohibitichargeEssayCommunictowardsion:inputNormalText]; -} - -#pragma mark - FBCSeparationsDetailCeremony -- (void)acquireSepartowardsionsSpecificAccomplishment:(SeparationsAbstractMatrix *)judgementAbstract { - self.monentsInfo = judgementAbstract; - [self.tableView reloadData]; -} - -- (void)acquireSepartowardsionsJudgementSttowardsementAccomplishment:(SeparationsJudgementStatementMatrix *)judgementAbstract state:(int)state{ - if (state == 0) { - [self.datasource removeAllObjects]; - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } - - if (judgementAbstract.commentList.count > 0) { - [self.datasource addObjectsFromArray:judgementAbstract.commentList]; - } - [self.tableView reloadData]; -} - -- (void)acquireSepartowardsionsJudgementReplictowardsionSttowardsementAccomplishment:(SeparationsJudgementReplicationMatrix *)replyInfo commentId:(nonnull NSString *)commentId { - if (commentId) { - __block SeparationsJudgementMatrix * judgementAbstract; - [self.datasource enumerateObjectsUsingBlock:^(SeparationsJudgementMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj.commentId isEqualToString:commentId]) { - judgementAbstract = obj; - *stop = YES; - } - }]; - - if (judgementAbstract) { - NSMutableArray * replyList= judgementAbstract.replyInfo.replyList.mutableCopy; - [replyList addObjectsFromArray:replyInfo.replyList]; - judgementAbstract.replyInfo.replyList = replyList.copy; - judgementAbstract.replyInfo.leftCount = replyInfo.leftCount; - judgementAbstract.replyInfo.nextTimestamp = replyInfo.nextTimestamp; - judgementAbstract.isReloadHeight = YES; - } - [self.tableView reloadData]; - } -} - -- (void)similarSepartowardsionsAccomplishment:(NSString *)dynamicId status:(BOOL)status { - if ([self.monentsInfo.dynamicId isEqualToString:dynamicId]) { - NSInteger count = self.monentsInfo.likeCount.integerValue; - self.monentsInfo.isLike = status; - if (status) { - count += 1; - } else { - count -= 1; - } - self.monentsInfo.likeCount = [NSString stringWithFormat:@"%ld", count]; - [self.tableView reloadData]; - } -} - -- (void)replictowardsionSepartowardsionsAccomplishment { - [self.presimport acquireSepartowardsionsJudgementSttowardsement:self.monentsInfo.dynamicId timestamp:@"" status:0]; -} - -- (void)commonSepartowardsionsAccomplishment { - [self.presimport acquireSepartowardsionsJudgementSttowardsement:self.monentsInfo.dynamicId timestamp:@"" status:0]; -} - -- (void)representtowardsionSepartowardsionsAccomplishment:(NSString *)monentsInfo { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Monents_Detail_View_Controller_8")]; - [self.navigationController popViewControllerAnimated:YES]; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMISepartowardsionsSpecificRegardGovernancer:representtowardsionSepartowardsions:)]) { - [self.delegate yUMISepartowardsionsSpecificRegardGovernancer:self representtowardsionSepartowardsions:self.monentsInfo.dynamicId]; - } -} - - -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMISeparationsTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMISeparationsTabulationRegardElement class])]; - [_tableView registerClass:[YUMISeparationsJudgementTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMISeparationsJudgementTabulationRegardElement class])]; - [_tableView registerClass:[YUMISeparationsDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMISeparationsDispossessTabulationRegardElement class])]; - } - return _tableView; -} - -- (UIView *)sectionRegard { - if (!_sectionRegard) { - _sectionRegard = [[UIView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 44)]; - _sectionRegard.backgroundColor = [UIColor clearColor]; - } - return _sectionRegard; -} - -- (UILabel *)judgementSequencignation { - if (!_judgementSequencignation) { - _judgementSequencignation = [[UILabel alloc] init]; - _judgementSequencignation.font = [UIFont systemFontOfSize:14]; - _judgementSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _judgementSequencignation; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - -@end diff --git a/YuMi/Modules/YMMonents/View/YUMISepartionMotifStatementRegardGovernancer.h b/YuMi/Modules/YMMonents/View/YUMISepartionMotifStatementRegardGovernancer.h deleted file mode 100644 index bada23fb..00000000 --- a/YuMi/Modules/YMMonents/View/YUMISepartionMotifStatementRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMMoentsTopicListViewController.h -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMISepartionMotifStatementRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMonents/View/YUMISepartionMotifStatementRegardGovernancer.m b/YuMi/Modules/YMMonents/View/YUMISepartionMotifStatementRegardGovernancer.m deleted file mode 100644 index eb39927c..00000000 --- a/YuMi/Modules/YMMonents/View/YUMISepartionMotifStatementRegardGovernancer.m +++ /dev/null @@ -1,161 +0,0 @@ -// -// YMMoentsTopicListViewController.m -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import "YUMISepartionMotifStatementRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "NSArray+Safe.h" -#import "SeparationsMotifMatrix.h" -#import "YUMISeparationMotifAccommodatedRegardGovernancer.h" -#import "YUMISeparationsMotifStatementExternalizer.h" -#import "FBCSeparationsMotifStatementCeremony.h" - -@interface YUMISepartionMotifStatementRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,assign) int page; -@end - -@implementation YUMISepartionMotifStatementRegardGovernancer - -- (__kindof id)producePresimport { - return [[YUMISeparationsMotifStatementExternalizer alloc] init]; -} - - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initIntelligencerGrantedTerminalerRrfresh]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - - [self intelligenceerRenovtowardseh]; -} - -- (void)intelligenceerRenovtowardseh { - self.page = 1; - [self.presimport acquireMoentsMotifSttowardsement:self.page pageSize:20 state:0]; -} - -- (void)footerRenovtowardseh { - self.page++; - [self.presimport acquireMoentsMotifSttowardsement:self.page pageSize:20 state:1]; -} - - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Moents_Topic_List_View_Controller_0"); - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 50; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([UITableViewCell class])]; - if (cell == nil) { - cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([UITableViewCell class])]; - } - SeparationsMotifMatrix * topicModel = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.textLabel.text = [NSString stringWithFormat:@"#%@", topicModel.name]; - cell.textLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - cell.textLabel.font = [UIFont systemFontOfSize:13]; - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.datasource.count > 0) { - SeparationsMotifMatrix * topicModel = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - YUMISeparationMotifAccommodatedRegardGovernancer * topicVC = [[YUMISeparationMotifAccommodatedRegardGovernancer alloc] init]; - topicVC.worldId = topicModel.tId; - [self.navigationController pushViewController:topicVC animated:YES]; - } -} - -#pragma mark - FBCSeparationsMotifStatementCeremony -- (void)acquireSepartowardsionsMotifSttowardsementAccomplishment:(NSArray *)list state:(int)state { - if (state == 0) { - [self.tableView.mj_header endRefreshing]; - [self.datasource removeAllObjects]; - } else { - if (list.count <= 0) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Moents_Topic_List_View_Controller_1")]; - } - [self.tableView.mj_footer endRefreshing]; - } - - if (list.count > 0) { - [self.datasource addObjectsFromArray:list]; - } - - [self.tableView reloadData]; -} - -- (void)acquireMoentsMotifFlunk:(NSString *)message state:(int)state { - if (state == 0) { - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } -} - -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:NSStringFromClass([UITableViewCell class])]; - } - return _tableView; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - - - -@end diff --git a/YuMi/Modules/YMNewHome/Api/Api+Home.h b/YuMi/Modules/YMNewHome/Api/Api+Home.h index 8682df13..1a399861 100644 --- a/YuMi/Modules/YMNewHome/Api/Api+Home.h +++ b/YuMi/Modules/YMNewHome/Api/Api+Home.h @@ -11,51 +11,119 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (Home) -+ (void)residenceCoupleimplementtion:(HttpRequestHelperCompletion)complection uid:(NSString *)uid; +/// 获取首页所有的tag +/// @param complection 完成 +/// @param uid 用户的uid ++ (void)homeTagComplection:(HttpRequestHelperCompletion)complection uid:(NSString *)uid; -+ (void)residenceEneracquireicCoupleimplementtion:(HttpRequestHelperCompletion)complection uid:(NSString *)uid; +/// 获取首页所有的直播tag +/// @param complection 完成 +/// @param uid 用户的uid ++ (void)homeLiveTagComplection:(HttpRequestHelperCompletion)complection uid:(NSString *)uid; -+ (void)acquireEncourageSttowardsementimplementtion:(HttpRequestHelperCompletion)complection +/// 查看推荐列表 +/// @param complection 完成 +/// @param uid 用户的uid +/// @param tabId tabid +/// @param pageNum 当前的页数 +/// @param pageSize 一页有多少个 ++ (void)getRecommendListComplection:(HttpRequestHelperCompletion)complection uid:(NSString *)uid - suspensionId:(NSString *)suspensionId + tabId:(NSString *)tabId pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize; -+ (void)huntforimplementtion:(HttpRequestHelperCompletion)complection +/// 搜索 +/// @param complection 完成 +/// @param key 关键字 +/// @param type 类型 1 房间 2 用户 +/// @param page 多少页 +/// @param pageSize 每页多少个 ++ (void)searchComplection:(HttpRequestHelperCompletion)complection key:(NSString *)key type:(NSString *)type page:(NSString *)page pageSize:(NSString *)pageSize; -+ (void)requisitionEachSoleHuntforChamberSttowardsement:(HttpRequestHelperCompletion)completion wordId:(NSString *)sid; +/// 大家都在搜的房间列表 +/// @param completion 完成 +/// @param sid sid ++ (void)requestEveryOneSearchRoomList:(HttpRequestHelperCompletion)completion wordId:(NSString *)sid; -+ (void)requisitionHuntforHijacker:(HttpRequestHelperCompletion)completion key:(NSString *)key; +/// 搜索劫持 +/// @param completion 完成 +/// @param key 搜索关键词 ++ (void)requestSearchHijack:(HttpRequestHelperCompletion)completion key:(NSString *)key; -+ (void)residenceOriflammeSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid type:(NSString *)type; +/// 首页推荐的轮播图 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param type 类型 2 房间的 1 首页的 9推荐页下面的 ++ (void)homeBannerList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid type:(NSString *)type; -+ (void)residenceParrotSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; +/// 请求推荐页资源的列表 +/// @param completion 完成 +/// @param uid 用户的uid ++ (void)homeMenuList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; -+ (void)residenceEncourageChamberSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; +/// 请求推荐房间列表 +/// @param completion 完成 +/// @param uid 用户的uid ++ (void)homeRecommendRoomList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; -+ (void)residenceThermalChamberSttowardsement:(HttpRequestHelperCompletion)completion; +/// 请求个播房间列表 +/// @param completion 完成 ++ (void)homeHotRoomList:(HttpRequestHelperCompletion)completion; -+ (void)residenceKellegFurthaerChamberSttowardsement:(HttpRequestHelperCompletion)completion singleRoomSortId:(NSString *)singleRoomSortId; +/// 请求个播放更多房间列表 +/// @param completion 完成 ++ (void)homeAnchorMoreRoomList:(HttpRequestHelperCompletion)completion singleRoomSortId:(NSString *)singleRoomSortId; -+ (void)residencesubjectiveChamberSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; +/// 请求热门房间列表 +/// @param completion 完成 ++ (void)homePersonalRoomList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; -+ (void)residenceDisportCompetitionSquad:(HttpRequestHelperCompletion)completion uid:(NSString *)uid pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize; +/// 请求组队开黑房间列表 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param pageNum 当前页数 +/// @param pageSize 一页多少个 ++ (void)homePlayGameTeam:(HttpRequestHelperCompletion)completion uid:(NSString *)uid pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize; -+ (void)residenceConsidertowardsionSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; +/// 请求首页关注列表 +/// @param completion 完成 +/// @param uid 用户的uid ++ (void)homeAttentionList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; -+ (void)residenceAssembleChamberSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize; +/// 请求收藏房间列表 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param page 当前页数 +/// @param pageSize 一页多少个 ++ (void)homeCollectRoomList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize; -+ (void)residenceExtractEyumiense:(HttpRequestHelperCompletion)completion uid:(NSString *)uid rid:(NSString *)rid; +/// 首页资源位要进入的 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param rid 进入的类型的id ++ (void)homePickResource:(HttpRequestHelperCompletion)completion uid:(NSString *)uid rid:(NSString *)rid; -+ (void)residenceTraitCompetitionChamberSttowardsement:(HttpRequestHelperCompletion)completion pageSize:(NSString *)pageSize pageNum:(NSString *)pageNum uid:(NSString *)uid; +/// 首页小游戏列表 +/// @param completion 完成 +/// @param pageSize 一页多少个 +/// @param pageNum 多少页 +/// @param uid 用户的uid ++ (void)homeLittleGameRoomList:(HttpRequestHelperCompletion)completion pageSize:(NSString *)pageSize pageNum:(NSString *)pageNum uid:(NSString *)uid; -+ (void)residenceFlexibleDirectoryapttowardsionTraitCompetition:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; +/// 快速匹配 +/// @param completion 完成 +/// @param uid 用户的uid ++ (void)homeQuickMatchLittleGame:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; -+ (void)onceConsiderKellegChamberimplementtion:(HttpRequestHelperCompletion)complection uid:(NSString *)uid; +/// 获取首页个播浏览记录 +/// @param complection 完成 +/// @param uid 用户的uid ++ (void)onceLookAnchorRoomComplection:(HttpRequestHelperCompletion)complection uid:(NSString *)uid; @end diff --git a/YuMi/Modules/YMNewHome/Api/Api+Home.m b/YuMi/Modules/YMNewHome/Api/Api+Home.m index ba1bacf7..6daafdd8 100644 --- a/YuMi/Modules/YMNewHome/Api/Api+Home.m +++ b/YuMi/Modules/YMNewHome/Api/Api+Home.m @@ -11,103 +11,171 @@ @implementation Api (Home) -+ (void)residenceCoupleimplementtion:(HttpRequestHelperCompletion)complection uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"aG9tZS90YWdWMg=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, uid, nil]; +/// 获取首页所有的tag +/// @param complection 完成 +/// @param uid 用户的uid ++ (void)homeTagComplection:(HttpRequestHelperCompletion)complection uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"aG9tZS90YWdWMg=="];///home/tagV2 + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, uid, nil]; } -+ (void)residenceEneracquireicCoupleimplementtion:(HttpRequestHelperCompletion)complection uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"c2luZ2xlL2Jyb2FkY2FzdC9zb3J0"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, uid, nil]; +/// 获取首页所有的直播tag +/// @param complection 完成 +/// @param uid 用户的uid ++ (void)homeLiveTagComplection:(HttpRequestHelperCompletion)complection uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"c2luZ2xlL2Jyb2FkY2FzdC9zb3J0"];///single/broadcast/sort + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, uid, nil]; } -+ (void)acquireEncourageSttowardsementimplementtion:(HttpRequestHelperCompletion)complection uid:(NSString *)uid suspensionId:(NSString *)suspensionId pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize { - NSString * fang = [NSString stringFromBase64String:@"aG9tZS90YWIvbWFwVjI="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, uid, suspensionId, pageNum, pageSize, nil]; +/// 查看推荐列表 +/// @param complection 完成 +/// @param uid 用户的uid +/// @param tabId tabid +/// @param pageNum 当前的页数 +/// @param pageSize 一页有多少个 ++ (void)getRecommendListComplection:(HttpRequestHelperCompletion)complection uid:(NSString *)uid tabId:(NSString *)tabId pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize { + NSString * fang = [NSString stringFromBase64String:@"aG9tZS90YWIvbWFwVjI="];///home/tab/mapV2 + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, uid, tabId, pageNum, pageSize, nil]; } -+ (void)huntforimplementtion:(HttpRequestHelperCompletion)complection key:(NSString *)key type:(NSString *)type page:(NSString *)page pageSize:(NSString *)pageSize { - NSString * fang = [NSString stringFromBase64String:@"c2VhcmNoL3Jvb20="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, key, type, page, pageSize, nil]; +/// 搜索 +/// @param complection 完成 +/// @param key 关键字 +/// @param type 类型 1 房间 2 用户 +/// @param page 多少页 +/// @param pageSize 每页多少个 ++ (void)searchComplection:(HttpRequestHelperCompletion)complection key:(NSString *)key type:(NSString *)type page:(NSString *)page pageSize:(NSString *)pageSize { + NSString * fang = [NSString stringFromBase64String:@"c2VhcmNoL3Jvb20="];///search/room + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, key, type, page, pageSize, nil]; } -+ (void)requisitionEachSoleHuntforChamberSttowardsement:(HttpRequestHelperCompletion)completion wordId:(NSString *)sid { - NSString * fang = [NSString stringFromBase64String:@"ZXZlcnkvb25lL3NlYXJjaC9nZXRSb29tTGlzdA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, sid, nil]; +/// 大家都在搜的房间列表 +/// @param completion 完成 +/// @param sid sid ++ (void)requestEveryOneSearchRoomList:(HttpRequestHelperCompletion)completion wordId:(NSString *)sid { + NSString * fang = [NSString stringFromBase64String:@"ZXZlcnkvb25lL3NlYXJjaC9nZXRSb29tTGlzdA=="];///every/one/search/getRoomList + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, sid, nil]; } -+ (void)requisitionHuntforHijacker:(HttpRequestHelperCompletion)completion key:(NSString *)key { - NSString * fang = [NSString stringFromBase64String:@"c2VhcmNoL2hpamFjay9nZXQ="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, key, nil]; +/// 搜索劫持 +/// @param completion 完成 +/// @param key 搜索关键词 ++ (void)requestSearchHijack:(HttpRequestHelperCompletion)completion key:(NSString *)key { + NSString * fang = [NSString stringFromBase64String:@"c2VhcmNoL2hpamFjay9nZXQ="];///search/hijack/get + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, key, nil]; } -+ (void)residenceOriflammeSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid type:(NSString *)type { - NSString * fang = [NSString stringFromBase64String:@"aG9tZS9iYW5uZXI="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, type, nil]; +/// 首页推荐的轮播图 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param type 类型 2 房间的 1 首页的 9推荐页下面的 ++ (void)homeBannerList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid type:(NSString *)type { + NSString * fang = [NSString stringFromBase64String:@"aG9tZS9iYW5uZXI="];///home/banner + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, type, nil]; } -+ (void)residenceParrotSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"aG9tZS9jdXJyZW50UmVzb3VyY2U="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil]; +/// 请求推荐页资源的列表 +/// @param completion 完成 +/// @param uid 用户的uid ++ (void)homeMenuList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"aG9tZS9jdXJyZW50UmVzb3VyY2U="];///home/currentResource + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil]; } -+ (void)residenceEncourageChamberSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"aG9tZS90YWIvaG9tZVYy"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil]; +/// 请求推荐房间列表 +/// @param completion 完成 +/// @param uid 用户的uid ++ (void)homeRecommendRoomList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"aG9tZS90YWIvaG9tZVYy"];///home/tab/homeV2 + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil]; } -+ (void)residenceThermalChamberSttowardsement:(HttpRequestHelperCompletion)completion { - NSString * fang = [NSString stringFromBase64String:@"c2luZ2xlL2Jyb2FkY2FzdC9tb3JlUG9wdWxhcml0eUFuY2hvckxpc3Q="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; +/// 请求个播放房间列表 +/// @param completion 完成 ++ (void)homeHotRoomList:(HttpRequestHelperCompletion)completion { + NSString * fang = [NSString stringFromBase64String:@"c2luZ2xlL2Jyb2FkY2FzdC9tb3JlUG9wdWxhcml0eUFuY2hvckxpc3Q="];///single/broadcast/getMainPopularityAnchorList + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; } -+ (void)residenceKellegFurthaerChamberSttowardsement:(HttpRequestHelperCompletion)completion singleRoomSortId:(NSString *)singleRoomSortId { - NSString * fang = [NSString stringFromBase64String:@"c2luZ2xlL2Jyb2FkY2FzdC9tb3JlUG9wdWxhcml0eUFuY2hvckxpc3Q="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, singleRoomSortId, nil]; +/// 请求个播放更多房间列表 +/// @param completion 完成 ++ (void)homeAnchorMoreRoomList:(HttpRequestHelperCompletion)completion singleRoomSortId:(NSString *)singleRoomSortId { + NSString * fang = [NSString stringFromBase64String:@"c2luZ2xlL2Jyb2FkY2FzdC9tb3JlUG9wdWxhcml0eUFuY2hvckxpc3Q="];/// + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, singleRoomSortId, nil]; } -+ (void)residencesubjectiveChamberSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"aG9tZS9ob3RSb29t"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,uid, nil]; +/// 请求热门房间列表 +/// @param completion 完成 ++ (void)homePersonalRoomList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"aG9tZS9ob3RSb29t"];///home/hotRoom + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,uid, nil]; } -+ (void)residenceDisportCompetitionSquad:(HttpRequestHelperCompletion)completion uid:(NSString *)uid pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize { - NSString * fang = [NSString stringFromBase64String:@"aG9tZS9wbGF5VjI="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,uid , pageNum, pageSize,nil]; +/// 请求组队开黑房间列表 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param pageNum 当前页数 +/// @param pageSize 一页多少个 ++ (void)homePlayGameTeam:(HttpRequestHelperCompletion)completion uid:(NSString *)uid pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize { + NSString * fang = [NSString stringFromBase64String:@"aG9tZS9wbGF5VjI="];///home/playV2 + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,uid , pageNum, pageSize,nil]; } -+ (void)residenceConsidertowardsionSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"ZmFucy9wYXJ0VGFiRm9sbG93TGlzdA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,uid ,nil]; +/// 请求首页关注列表 +/// @param completion 完成 +/// @param uid 用户的uid ++ (void)homeAttentionList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"ZmFucy9wYXJ0VGFiRm9sbG93TGlzdA=="];///fans/partTabFollowList + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,uid ,nil]; } -+ (void)residenceAssembleChamberSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize { - NSString * fang = [NSString stringFromBase64String:@"ZmFucy9mYW5zUm9vbUxpc3Q="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,uid , page, pageSize,nil]; +/// 请求收藏房间列表 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param page 当前页数 +/// @param pageSize 一页多少个 ++ (void)homeCollectRoomList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid page:(NSString *)page pageSize:(NSString *)pageSize { + NSString * fang = [NSString stringFromBase64String:@"ZmFucy9mYW5zUm9vbUxpc3Q="];///fans/fansRoomList + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,uid , page, pageSize,nil]; } -+ (void)residenceExtractEyumiense:(HttpRequestHelperCompletion)completion uid:(NSString *)uid rid:(NSString *)rid { - NSString * fang = [NSString stringFromBase64String:@"aG9tZS9waWNrUmVzb3VyY2U="]; +/// 首页资源位要进入的 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param rid 进入的类型的id ++ (void)homePickResource:(HttpRequestHelperCompletion)completion uid:(NSString *)uid rid:(NSString *)rid { + NSString * fang = [NSString stringFromBase64String:@"aG9tZS9waWNrUmVzb3VyY2U="];///home/pickResource NSMutableDictionary * pararms = [NSMutableDictionary dictionary]; - [pararms secureSetGroal:uid forKey:@"uid"]; - [pararms secureSetGroal:rid forKey:@"id"]; - [HttpRequestFacilitater request:fang method:HttpRequestHelperMethodGET params:pararms completion:completion]; + [pararms safeSetObject:uid forKey:@"uid"]; + [pararms safeSetObject:rid forKey:@"id"]; + [HttpRequestHelper request:fang method:HttpRequestHelperMethodGET params:pararms completion:completion]; } -+ (void)residenceTraitCompetitionChamberSttowardsement:(HttpRequestHelperCompletion)completion pageSize:(NSString *)pageSize pageNum:(NSString *)pageNum uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"aG9tZS9taW5pR2FtZVRhYkxpc3Q="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, pageSize, pageNum, uid, nil]; +/// 首页小游戏列表 +/// @param completion 完成 +/// @param pageSize 一页多少个 +/// @param pageNum 多少页 +/// @param uid 用户的uid ++ (void)homeLittleGameRoomList:(HttpRequestHelperCompletion)completion pageSize:(NSString *)pageSize pageNum:(NSString *)pageNum uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"aG9tZS9taW5pR2FtZVRhYkxpc3Q="];///home/miniGameTabList + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, pageSize, pageNum, uid, nil]; } -+ (void)residenceFlexibleDirectoryapttowardsionTraitCompetition:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"aG9tZS9mYXN0UGljaw=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil]; +/// 快速匹配 +/// @param completion 完成 +/// @param uid 用户的uid ++ (void)homeQuickMatchLittleGame:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"aG9tZS9mYXN0UGljaw=="];///home/fastPick + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil]; } -+ (void)onceConsiderKellegChamberimplementtion:(HttpRequestHelperCompletion)complection uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"c2luZ2xlL2Jyb2FkY2FzdC9vbmNlTG9vaw=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, uid, nil]; +/// 获取首页个播浏览记录 +/// @param complection 完成 +/// @param uid 用户的uid ++ (void)onceLookAnchorRoomComplection:(HttpRequestHelperCompletion)complection uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"c2luZ2xlL2Jyb2FkY2FzdC9vbmNlTG9vaw=="];///single/broadcast/onceLook + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, uid, nil]; } @end diff --git a/YuMi/Modules/YMNewHome/Model/HomeBannerInfoModel.h b/YuMi/Modules/YMNewHome/Model/HomeBannerInfoModel.h new file mode 100644 index 00000000..f19c65f3 --- /dev/null +++ b/YuMi/Modules/YMNewHome/Model/HomeBannerInfoModel.h @@ -0,0 +1,32 @@ +// +// HomeBannerInfoModel.h +// YUMI +// +// Created by YUMI on 2022/2/21. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSUInteger, HomeBannerInfoSkipType) { + ///跳转房间 + HomeBannerInfoSkipType_Room = 2, + ///跳转h5 + HomeBannerInfoSkipType_Web = 3, +}; + +@interface HomeBannerInfoModel : NSObject +///ID +@property (nonatomic,copy)NSString *bannerId; +///名字 +@property (nonatomic,copy)NSString *bannerName; +///图片 +@property (nonatomic, copy)NSString *bannerPic; +///跳转的地址 +@property (nonatomic, copy)NSString *skipUri; +///跳转的类型 +@property (nonatomic, assign)HomeBannerInfoSkipType skipType; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Model/HomeBannerInfoModel.m b/YuMi/Modules/YMNewHome/Model/HomeBannerInfoModel.m new file mode 100644 index 00000000..682417c0 --- /dev/null +++ b/YuMi/Modules/YMNewHome/Model/HomeBannerInfoModel.m @@ -0,0 +1,12 @@ +// +// HomeBannerInfoModel.m +// YUMI +// +// Created by YUMI on 2022/2/21. +// + +#import "HomeBannerInfoModel.h" + +@implementation HomeBannerInfoModel + +@end diff --git a/YuMi/Modules/YMNewHome/Model/HomeCollectRoomModel.h b/YuMi/Modules/YMNewHome/Model/HomeCollectRoomModel.h new file mode 100644 index 00000000..ba39518f --- /dev/null +++ b/YuMi/Modules/YMNewHome/Model/HomeCollectRoomModel.h @@ -0,0 +1,36 @@ +// +// HomeCollectRoomModel.h +// YUMI +// +// Created by YUMI on 2022/3/2. +// + +#import +#import "HomePlayRoomModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface HomeCollectRoomModel : NSObject +///昵称 +@property (nonatomic,copy) NSString *nick; +///头像 +@property (nonatomic,copy) NSString *roomAvatar; +///昵称 +@property (nonatomic,copy) NSString *roomName; +///f在线人数 +@property (nonatomic,copy) NSString *roomOnlineNum; +///是否跨房Pk +@property (nonatomic,assign) BOOL crossPking; +///平台id +@property (nonatomic,copy) NSString *erbanNo; +///tag +@property (nonatomic,copy) NSString *tagPict; +///房主的uid +@property (nonatomic,copy) NSString *roomUid; +///麦上用户 +@property (nonatomic, strong) NSArray *micUsers; +///是否选中 +@property (nonatomic, assign) BOOL isSelected; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Model/HomeCollectRoomModel.m b/YuMi/Modules/YMNewHome/Model/HomeCollectRoomModel.m new file mode 100644 index 00000000..9ae1ff9c --- /dev/null +++ b/YuMi/Modules/YMNewHome/Model/HomeCollectRoomModel.m @@ -0,0 +1,20 @@ +// +// HomeCollectRoomModel.m +// YUMI +// +// Created by YUMI on 2022/3/2. +// + +#import "HomeCollectRoomModel.h" + +@implementation HomeCollectRoomModel + +///扩展方法 按需索取 重写即可 +///如果一个模型中 包含一个数组 数组中是另一个模型 ++ (NSDictionary *)objectClassInArray { + return @{ + @"micUsers": [HomePlayMicUserModel class], + }; +} + +@end diff --git a/YuMi/Modules/YMNewHome/Model/HomeMenuInfoModel.h b/YuMi/Modules/YMNewHome/Model/HomeMenuInfoModel.h new file mode 100644 index 00000000..5b4960f7 --- /dev/null +++ b/YuMi/Modules/YMNewHome/Model/HomeMenuInfoModel.h @@ -0,0 +1,38 @@ +// +// HomeMenuInfoModel.h +// YUMI +// +// Created by YUMI on 2022/2/21. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, HomeMenuResourceType) { + ///进入牌照房 + HomeMenuResourceType_Room_Licnese = 1, + ///进入相亲房 + HomeMenuResourceType_Room_Dating, + ///进入PK房 + HomeMenuResourceType_Room_PK, + ///进入Game房 + HomeMenuResourceType_Room_Game, + ///进入H5 + HomeMenuResourceType_H5, + ///进入自定义房 + HomeMenuResourceType_Room_Custom, +}; + +@interface HomeMenuInfoModel : NSObject +///ID 映射字段 +@property (nonatomic,copy) NSString *hid; +///显示的图片 +@property (nonatomic, copy)NSString *icon; +///类型 +@property (nonatomic, assign)HomeMenuResourceType resourceType; +///跳转h5的时候 跳转链接 +@property (nonatomic, copy)NSString *resourceContent; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Model/HomeMenuInfoModel.m b/YuMi/Modules/YMNewHome/Model/HomeMenuInfoModel.m new file mode 100644 index 00000000..c60dfc8e --- /dev/null +++ b/YuMi/Modules/YMNewHome/Model/HomeMenuInfoModel.m @@ -0,0 +1,17 @@ +// +// HomeMenuInfoModel.m +// YUMI +// +// Created by YUMI on 2022/2/21. +// + +#import "HomeMenuInfoModel.h" + +@implementation HomeMenuInfoModel + +///如果一个模型中需要字段映射的话 比如id -> ID name -> other.name ++ (NSDictionary *)replacedKeyFromPropertyName { + return @{@"hid":@"id"}; +} + +@end diff --git a/YuMi/Modules/YMNewHome/Model/HomePlayRoomModel.h b/YuMi/Modules/YMNewHome/Model/HomePlayRoomModel.h new file mode 100644 index 00000000..31879ef3 --- /dev/null +++ b/YuMi/Modules/YMNewHome/Model/HomePlayRoomModel.h @@ -0,0 +1,55 @@ +// +// HomePlayRoomModel.h +// YUMI +// +// Created by YUMI on 2022/2/25. +// + +#import +#import "YUMINNNN.h" +#import "HomeBannerInfoModel.h" +NS_ASSUME_NONNULL_BEGIN +@class HomePlayMicUserModel; +@interface HomePlayRoomModel : NSObject +///头像 +@property (nonatomic, copy) NSString *avatar; +///是否在跨房PK中 +@property (nonatomic, assign) BOOL crossPking; +///平台号 +@property(nonatomic, copy) NSString *erbanNo; +///是否有列表中的banner +@property (nonatomic, assign) BOOL isBanner; +///小游戏ID +@property(nonatomic, copy) NSString *mgId; +///小游戏名称 +@property(nonatomic, copy) NSString *mgName; +///麦上用户 +@property (nonatomic, strong) NSArray *micUsers; +///在线人数 +@property (nonatomic, assign) NSInteger onlineNum; +///标签图片地址 +@property (nonatomic, strong) NSString *tagPict; +///房间标题 +@property (nonatomic, copy) NSString *title; +///房主的uid +@property (nonatomic,copy) NSString *uid; +///列表中的banner信息 +@property (nonatomic, strong) NSArray *bannerVoList; +///房间开黑广播 +@property (nonatomic, copy) NSString *broadMsg; +///性别 +@property (nonatomic,assign) GenderType gender; +@end + +@interface HomePlayMicUserModel : NSObject +///头像 +@property (nonatomic, copy) NSString *avatar; +///性别 +@property (nonatomic,assign) GenderType gender; +///姓名 +@property (nonatomic,copy) NSString *nick; +///用户的uid +@property (nonatomic,copy) NSString *uid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Model/HomePlayRoomModel.m b/YuMi/Modules/YMNewHome/Model/HomePlayRoomModel.m new file mode 100644 index 00000000..1b86d63e --- /dev/null +++ b/YuMi/Modules/YMNewHome/Model/HomePlayRoomModel.m @@ -0,0 +1,26 @@ +// +// HomePlayRoomModel.m +// YUMI +// +// Created by YUMI on 2022/2/25. +// + +#import "HomePlayRoomModel.h" + +@implementation HomePlayRoomModel + +///扩展方法 按需索取 重写即可 +///如果一个模型中 包含一个数组 数组中是另一个模型 ++ (NSDictionary *)objectClassInArray { + return @{ + @"micUsers": [HomePlayMicUserModel class], + @"bannerVoList": [HomeBannerInfoModel class] + }; +} +@end + + +@implementation HomePlayMicUserModel + + +@end diff --git a/YuMi/Modules/YMNewHome/Model/HomeRecommendRoomModel.h b/YuMi/Modules/YMNewHome/Model/HomeRecommendRoomModel.h new file mode 100644 index 00000000..dda65ff4 --- /dev/null +++ b/YuMi/Modules/YMNewHome/Model/HomeRecommendRoomModel.h @@ -0,0 +1,48 @@ +// +// HomeRecommendRoomModel.h +// YUMI +// +// Created by YUMI on 2021/11/29. +// + +#import +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +@interface HomeRecommendRoomModel : NSObject +///头像 +@property (nonatomic,copy) NSString *avatar; +///在线人数 +@property (nonatomic,assign) NSInteger onlineNum; +///房主的uid +@property (nonatomic,copy) NSString *roomUid; +///房间的tag +@property (nonatomic,copy) NSString *roomTag; +///标题 +@property (nonatomic,copy) NSString *title; +///tag的图片 +@property (nonatomic,copy) NSString *tagPict; +///性别 +@property (nonatomic,assign) GenderType gender; +///房主的昵称 +@property (nonatomic,copy) NSString *nick; +///房间的id +@property (nonatomic,copy) NSString *roomId; +///房主的uid +@property (nonatomic,copy) NSString *uid; +///房间简介 +@property(nonatomic, copy) NSString *roomDesc; +///排列的顺序 +@property (nonatomic,strong) NSNumber * seq; +///最新推荐上面的标签 +@property (nonatomic,copy) NSString *iconContent; +///是否在跨房PK中 +@property (nonatomic, assign) BOOL crossPking; +///是否是推荐房间 +@property (nonatomic, assign) BOOL isRecommend; + +@property (nonatomic, copy) NSString *erbanNo; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Model/HomeRecommendRoomModel.m b/YuMi/Modules/YMNewHome/Model/HomeRecommendRoomModel.m new file mode 100644 index 00000000..b17c0fb6 --- /dev/null +++ b/YuMi/Modules/YMNewHome/Model/HomeRecommendRoomModel.m @@ -0,0 +1,12 @@ +// +// HomeRecommendRoomModel.m +// YUMI +// +// Created by YUMI on 2021/11/29. +// + +#import "HomeRecommendRoomModel.h" + +@implementation HomeRecommendRoomModel + +@end diff --git a/YuMi/Modules/YMNewHome/Model/HomeTagModel.h b/YuMi/Modules/YMNewHome/Model/HomeTagModel.h new file mode 100644 index 00000000..d0a48d40 --- /dev/null +++ b/YuMi/Modules/YMNewHome/Model/HomeTagModel.h @@ -0,0 +1,19 @@ +// +// HomeTagModel.h +// YUMI +// +// Created by YUMI on 2021/12/2. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface HomeTagModel : NSObject +///id +@property (nonatomic,copy) NSString *tid; +///名字 +@property (nonatomic,copy) NSString *name; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Model/HomeTagModel.m b/YuMi/Modules/YMNewHome/Model/HomeTagModel.m new file mode 100644 index 00000000..cc581b62 --- /dev/null +++ b/YuMi/Modules/YMNewHome/Model/HomeTagModel.m @@ -0,0 +1,16 @@ +// +// HomeTagModel.m +// YUMI +// +// Created by YUMI on 2021/12/2. +// + +#import "HomeTagModel.h" +@implementation HomeTagModel + ++ (NSDictionary *)replacedKeyFromPropertyName { + return @{@"tid":@"id"}; +} + + +@end diff --git a/YuMi/Modules/YMNewHome/Model/ResidenceAssembleChamberMatrix.h b/YuMi/Modules/YMNewHome/Model/ResidenceAssembleChamberMatrix.h deleted file mode 100644 index 6349a8b4..00000000 --- a/YuMi/Modules/YMNewHome/Model/ResidenceAssembleChamberMatrix.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// ResidenceAssembleChamberMatrix.h -// YUMI -// -// Created by YUMI on 2022/3/2. -// - -#import -#import "ResidenceDisportChamberMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@interface ResidenceAssembleChamberMatrix : NSObject -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,copy) NSString *roomAvatar; -@property (nonatomic,copy) NSString *roomName; -@property (nonatomic,copy) NSString *roomOnlineNum; -@property (nonatomic,assign) BOOL crossPking; -@property (nonatomic,copy) NSString *erbanNo; -@property (nonatomic,copy) NSString *tagPict; -@property (nonatomic,copy) NSString *roomUid; -@property (nonatomic, strong) NSArray *micUsers; -@property (nonatomic, assign) BOOL isSelected; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Model/ResidenceAssembleChamberMatrix.m b/YuMi/Modules/YMNewHome/Model/ResidenceAssembleChamberMatrix.m deleted file mode 100644 index 5b082ace..00000000 --- a/YuMi/Modules/YMNewHome/Model/ResidenceAssembleChamberMatrix.m +++ /dev/null @@ -1,18 +0,0 @@ -// -// ResidenceAssembleChamberMatrix.m -// YUMI -// -// Created by YUMI on 2022/3/2. -// - -#import "ResidenceAssembleChamberMatrix.h" - -@implementation ResidenceAssembleChamberMatrix - -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{ - @"micUsers": [ResidenceDisportLoudspeakerConsumerMatrix class], - }; -} - -@end diff --git a/YuMi/Modules/YMNewHome/Model/ResidenceCoupleMatrix.h b/YuMi/Modules/YMNewHome/Model/ResidenceCoupleMatrix.h deleted file mode 100644 index 0e1be641..00000000 --- a/YuMi/Modules/YMNewHome/Model/ResidenceCoupleMatrix.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// ResidenceCoupleMatrix.h -// YUMI -// -// Created by YUMI on 2021/12/2. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface ResidenceCoupleMatrix : NSObject -@property (nonatomic,copy) NSString *tid; -@property (nonatomic,copy) NSString *name; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Model/ResidenceCoupleMatrix.m b/YuMi/Modules/YMNewHome/Model/ResidenceCoupleMatrix.m deleted file mode 100644 index c888b50e..00000000 --- a/YuMi/Modules/YMNewHome/Model/ResidenceCoupleMatrix.m +++ /dev/null @@ -1,16 +0,0 @@ -// -// ResidenceCoupleMatrix.m -// YUMI -// -// Created by YUMI on 2021/12/2. -// - -#import "ResidenceCoupleMatrix.h" -@implementation ResidenceCoupleMatrix - -+ (NSDictionary *)replacedDigitalByvirtueofMaintainertyConstitute { - return @{@"tid":@"id"}; -} - - -@end diff --git a/YuMi/Modules/YMNewHome/Model/ResidenceDisportChamberMatrix.h b/YuMi/Modules/YMNewHome/Model/ResidenceDisportChamberMatrix.h deleted file mode 100644 index ef662f44..00000000 --- a/YuMi/Modules/YMNewHome/Model/ResidenceDisportChamberMatrix.h +++ /dev/null @@ -1,37 +0,0 @@ -// -// ResidenceDisportChamberMatrix.h -// YUMI -// -// Created by YUMI on 2022/2/25. -// - -#import -#import "YUMINNNN.h" -#import "ResidenceOriflammeAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN -@class ResidenceDisportLoudspeakerConsumerMatrix; -@interface ResidenceDisportChamberMatrix : NSObject -@property (nonatomic, copy) NSString *avatar; -@property (nonatomic, assign) BOOL crossPking; -@property(nonatomic, copy) NSString *erbanNo; -@property (nonatomic, assign) BOOL isBanner; -@property(nonatomic, copy) NSString *mgId; -@property(nonatomic, copy) NSString *mgName; -@property (nonatomic, strong) NSArray *micUsers; -@property (nonatomic, assign) NSInteger onlineNum; -@property (nonatomic, strong) NSString *tagPict; -@property (nonatomic, copy) NSString *title; -@property (nonatomic,copy) NSString *uid; -@property (nonatomic, strong) NSArray *bannerVoList; -@property (nonatomic, copy) NSString *broadMsg; -@property (nonatomic,assign) GenderGenre gender; -@end - -@interface ResidenceDisportLoudspeakerConsumerMatrix : NSObject -@property (nonatomic, copy) NSString *avatar; -@property (nonatomic,assign) GenderGenre gender; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,copy) NSString *uid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Model/ResidenceDisportChamberMatrix.m b/YuMi/Modules/YMNewHome/Model/ResidenceDisportChamberMatrix.m deleted file mode 100644 index a0121bbf..00000000 --- a/YuMi/Modules/YMNewHome/Model/ResidenceDisportChamberMatrix.m +++ /dev/null @@ -1,24 +0,0 @@ -// -// ResidenceDisportChamberMatrix.m -// YUMI -// -// Created by YUMI on 2022/2/25. -// - -#import "ResidenceDisportChamberMatrix.h" - -@implementation ResidenceDisportChamberMatrix - -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{ - @"micUsers": [ResidenceDisportLoudspeakerConsumerMatrix class], - @"bannerVoList": [ResidenceOriflammeAbstractMatrix class] - }; -} -@end - - -@implementation ResidenceDisportLoudspeakerConsumerMatrix - - -@end diff --git a/YuMi/Modules/YMNewHome/Model/ResidenceEncourageChamberMatrix.h b/YuMi/Modules/YMNewHome/Model/ResidenceEncourageChamberMatrix.h deleted file mode 100644 index c65577f0..00000000 --- a/YuMi/Modules/YMNewHome/Model/ResidenceEncourageChamberMatrix.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// ResidenceEncourageChamberMatrix.h -// YUMI -// -// Created by YUMI on 2021/11/29. -// - -#import -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -@interface ResidenceEncourageChamberMatrix : NSObject -@property (nonatomic,copy) NSString *avatar; -@property (nonatomic,assign) NSInteger onlineNum; -@property (nonatomic,copy) NSString *roomUid; -@property (nonatomic,copy) NSString *roomTag; -@property (nonatomic,copy) NSString *title; -@property (nonatomic,copy) NSString *tagPict; -@property (nonatomic,assign) GenderGenre gender; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,copy) NSString *roomId; -@property (nonatomic,copy) NSString *uid; -@property(nonatomic, copy) NSString *roomDesc; -@property (nonatomic,strong) NSNumber * seq; -@property (nonatomic,copy) NSString *iconContent; -@property (nonatomic, assign) BOOL crossPking; -@property (nonatomic, assign) BOOL isRecommend; - -@property (nonatomic, copy) NSString *erbanNo; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Model/ResidenceEncourageChamberMatrix.m b/YuMi/Modules/YMNewHome/Model/ResidenceEncourageChamberMatrix.m deleted file mode 100644 index dfa716a7..00000000 --- a/YuMi/Modules/YMNewHome/Model/ResidenceEncourageChamberMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ResidenceEncourageChamberMatrix.m -// YUMI -// -// Created by YUMI on 2021/11/29. -// - -#import "ResidenceEncourageChamberMatrix.h" - -@implementation ResidenceEncourageChamberMatrix - -@end diff --git a/YuMi/Modules/YMNewHome/Model/ResidenceOriflammeAbstractMatrix.h b/YuMi/Modules/YMNewHome/Model/ResidenceOriflammeAbstractMatrix.h deleted file mode 100644 index 040c1129..00000000 --- a/YuMi/Modules/YMNewHome/Model/ResidenceOriflammeAbstractMatrix.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// ResidenceOriflammeAbstractMatrix.h -// YUMI -// -// Created by YUMI on 2022/2/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSUInteger, HomeBannerAbstractSkipGenre) { - - HomeBannerAbstractSkipGenre_Room = 2, - - HomeBannerAbstractSkipGenre_Web = 3, -}; - -@interface ResidenceOriflammeAbstractMatrix : NSObject -@property (nonatomic,copy)NSString *bannerId; -@property (nonatomic,copy)NSString *bannerName; -@property (nonatomic, copy)NSString *bannerPic; -@property (nonatomic, copy)NSString *skipUri; -@property (nonatomic, assign)HomeBannerAbstractSkipGenre skipType; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Model/ResidenceOriflammeAbstractMatrix.m b/YuMi/Modules/YMNewHome/Model/ResidenceOriflammeAbstractMatrix.m deleted file mode 100644 index 0b5ce5ee..00000000 --- a/YuMi/Modules/YMNewHome/Model/ResidenceOriflammeAbstractMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ResidenceOriflammeAbstractMatrix.m -// YUMI -// -// Created by YUMI on 2022/2/21. -// - -#import "ResidenceOriflammeAbstractMatrix.h" - -@implementation ResidenceOriflammeAbstractMatrix - -@end diff --git a/YuMi/Modules/YMNewHome/Model/ResidenceParrotAbstractMatrix.h b/YuMi/Modules/YMNewHome/Model/ResidenceParrotAbstractMatrix.h deleted file mode 100644 index 0ab77499..00000000 --- a/YuMi/Modules/YMNewHome/Model/ResidenceParrotAbstractMatrix.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// ResidenceParrotAbstractMatrix.h -// YUMI -// -// Created by YUMI on 2022/2/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, HomeParrotResourceGenre) { - - HomeParrotResourceGenre_Room_Licnese = 1, - - HomeParrotResourceGenre_Room_Dating, - - HomeParrotResourceGenre_Room_PK, - - HomeParrotResourceGenre_Room_Game, - - HomeParrotResourceGenre_H5, - - HomeParrotResourceGenre_Room_Custom, -}; - -@interface ResidenceParrotAbstractMatrix : NSObject -@property (nonatomic,copy) NSString *hid; -@property (nonatomic, copy)NSString *icon; -@property (nonatomic, assign)HomeParrotResourceGenre resourceType; -@property (nonatomic, copy)NSString *resourceContent; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Model/ResidenceParrotAbstractMatrix.m b/YuMi/Modules/YMNewHome/Model/ResidenceParrotAbstractMatrix.m deleted file mode 100644 index d406bd13..00000000 --- a/YuMi/Modules/YMNewHome/Model/ResidenceParrotAbstractMatrix.m +++ /dev/null @@ -1,16 +0,0 @@ -// -// ResidenceParrotAbstractMatrix.m -// YUMI -// -// Created by YUMI on 2022/2/21. -// - -#import "ResidenceParrotAbstractMatrix.h" - -@implementation ResidenceParrotAbstractMatrix - -+ (NSDictionary *)replacedDigitalByvirtueofMaintainertyConstitute { - return @{@"hid":@"id"}; -} - -@end diff --git a/YuMi/Modules/YMNewHome/Presenter/XPHomeContainerPresenter.h b/YuMi/Modules/YMNewHome/Presenter/XPHomeContainerPresenter.h new file mode 100644 index 00000000..51b64e5c --- /dev/null +++ b/YuMi/Modules/YMNewHome/Presenter/XPHomeContainerPresenter.h @@ -0,0 +1,19 @@ +// +// XPHomeContainerPresenter.h +// YuMi +// +// Created by YuMi on 2021/12/2. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPHomeContainerPresenter : BaseMvpPresenter + +/// 获取所有的房间的tag +- (void)getHomeTagList; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Presenter/XPHomeContainerPresenter.m b/YuMi/Modules/YMNewHome/Presenter/XPHomeContainerPresenter.m new file mode 100644 index 00000000..01a8d081 --- /dev/null +++ b/YuMi/Modules/YMNewHome/Presenter/XPHomeContainerPresenter.m @@ -0,0 +1,32 @@ +// +// XPHomeContainerPresenter.m +// YuMi +// +// Created by YuMi on 2021/12/2. +// + +#import "XPHomeContainerPresenter.h" +#import "Api+Home.h" +#import "AccountInfoStorage.h" +#import "HomeTagModel.h" +#import "XPHomeContainerProtocol.h" +#import "AccountInfoStorage.h" +@implementation XPHomeContainerPresenter + +/// 获取所有的房间的tag +- (void)getHomeTagList { + NSString * uid = [[AccountInfoStorage instance] getUid]; + NSArray *list = [[AccountInfoStorage instance]getCurrentTagList]; + if(list.count > 0){ + [[self getView] getHomeTagListSuccess:list]; + } + [Api homeTagComplection:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [HomeTagModel modelsWithArray:data.data]; + [[AccountInfoStorage instance]saveTagList:array]; + if(list.count == 0 || list.count != array.count){ + [[self getView] getHomeTagListSuccess:array]; + } + }] uid:uid]; +} + +@end diff --git a/YuMi/Modules/YMNewHome/Presenter/XPHomePresenter.h b/YuMi/Modules/YMNewHome/Presenter/XPHomePresenter.h new file mode 100644 index 00000000..62bbc516 --- /dev/null +++ b/YuMi/Modules/YMNewHome/Presenter/XPHomePresenter.h @@ -0,0 +1,26 @@ +// +// YMHomePresenter.h +// YUMI +// +// Created by YUMI on 2021/11/29. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPHomePresenter : BaseMvpPresenter + +/// 请求首页 +/// @param tabId id +/// @param page 当前的页数 +/// @param pageSize 一页有多少个 +- (void)getRecommendRoomList:(NSString *)tabId page:(int)page pageSize:(int)pageSize state:(BOOL)state; + + +/// 获取更多的个播房间 +- (void)getHomeMoreAnchorRoomList; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Presenter/XPHomePresenter.m b/YuMi/Modules/YMNewHome/Presenter/XPHomePresenter.m new file mode 100644 index 00000000..6eb32d80 --- /dev/null +++ b/YuMi/Modules/YMNewHome/Presenter/XPHomePresenter.m @@ -0,0 +1,44 @@ +// +// YMHomePresenter.m +// YUMI +// +// Created by YUMI on 2021/11/29. +// + +#import "XPHomePresenter.h" +#import "Api+Home.h" +#import "AccountInfoStorage.h" +///Model +#import "HomeRecommendRoomModel.h" +///P +#import "XPHomeProtocol.h" +@implementation XPHomePresenter + + +/// 请求首页 +/// @param tabId id +/// @param page 当前的页数 +/// @param pageSize 一页有多少个 +- (void)getRecommendRoomList:(NSString *)tabId page:(int)page pageSize:(int)pageSize state:(BOOL)state { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * pageStr = [NSString stringWithFormat:@"%d", page]; + NSString * pageSizeStr = [NSString stringWithFormat:@"%d", pageSize]; + [Api getRecommendListComplection:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [HomeRecommendRoomModel modelsWithArray:data.data]; + [[self getView] getHomeRecommendRoomListSuccess:array state:state]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getHomeRecommendRoomListFail:msg state:state]; + }] uid:uid tabId:tabId pageNum:pageStr pageSize:pageSizeStr]; +} + +/// 获取更多的个播房间 +- (void)getHomeMoreAnchorRoomList { + [Api homeAnchorMoreRoomList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [HomeRecommendRoomModel modelsWithArray:data.data]; + [[self getView] getHomeMoreAnchorRoomListSuccess:array]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getHomeMoreAnchorRoomListFail:msg]; + }] singleRoomSortId:@""]; +} + +@end diff --git a/YuMi/Modules/YMNewHome/Presenter/XPNewHomeRecommendPresenter.h b/YuMi/Modules/YMNewHome/Presenter/XPNewHomeRecommendPresenter.h new file mode 100644 index 00000000..ef9c1d79 --- /dev/null +++ b/YuMi/Modules/YMNewHome/Presenter/XPNewHomeRecommendPresenter.h @@ -0,0 +1,26 @@ +// +// XPNewHomeRecommendPresenter.h +// YuMi +// +// Created by YuMi on 2023/6/18. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPNewHomeRecommendPresenter : BaseMvpPresenter +/// 获取首页顶部的轮播图 +- (void)getHomeTopBannerListWithGroup:(dispatch_group_t)group; +/// 获取首页推荐列表 +- (void)getHomeRecommendRoomListWithGroup:(dispatch_group_t)group; +/// 获取首页热门房间列表 +- (void)getHomeHotRoomListWithGroup:(dispatch_group_t)group; +/// 热门房间(个人房)列表 +- (void)getHomePersonalRoomListWithGroup:(dispatch_group_t)group; +/// 组队开黑房间列表 +/// @param pageNum 当前的页数 +- (void)getPlayGameWithTeam:(int)pageNum withGroup:(dispatch_group_t)group; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Presenter/XPNewHomeRecommendPresenter.m b/YuMi/Modules/YMNewHome/Presenter/XPNewHomeRecommendPresenter.m new file mode 100644 index 00000000..f281449e --- /dev/null +++ b/YuMi/Modules/YMNewHome/Presenter/XPNewHomeRecommendPresenter.m @@ -0,0 +1,135 @@ +// +// XPNewHomeRecommendPresenter.m +// YuMi +// +// Created by YuMi on 2023/6/18. +// + +#import "XPNewHomeRecommendPresenter.h" +#import +#import "Api+Home.h" +#import "Api+Guild.h" +#import "AccountInfoStorage.h" +#import "HomeMenuInfoModel.h" +#import "HomeRecommendRoomModel.h" +#import "HomeBannerInfoModel.h" +#import "HomePlayRoomModel.h" +#import "XPNewHomeRecommendProtocol.h" +#import "ClanDetailInfoModel.h" +@implementation XPNewHomeRecommendPresenter +/// 获取首页顶部的轮播图 +- (void)getHomeTopBannerListWithGroup:(dispatch_group_t)group { + RACSubject* banner = [RACSubject subject]; + RACSubject* menu = [RACSubject subject]; + + [[RACSignal combineLatest:@[banner, menu] reduce:^id(NSArray* bannerList, NSArray* menuList){ + //在这里 进行请求后的方法,回到主线程 + dispatch_async(dispatch_get_main_queue(), ^{ + + //更新UI操作 + [[self getView] getHomeTopBannerListSuccess:bannerList menuList:menuList withGroup:group]; + }); + + return nil; + }] subscribeError:^(NSError * _Nullable error) { + dispatch_async(dispatch_get_main_queue(), ^{ + + //更新UI操作 + [[self getView] getHomeRecommendDataFailWithGroup:group]; + }); + + }]; + + NSString * uid = [AccountInfoStorage instance].getUid; + [Api homeBannerList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [HomeBannerInfoModel modelsWithArray:data.data]; + [banner sendNext:array]; + [banner sendCompleted]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [banner sendError:nil]; + [banner sendCompleted]; + } errorToast:NO] uid:uid type:@"1"]; + + [Api homeMenuList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [HomeMenuInfoModel modelsWithArray:data.data]; + [menu sendNext:array]; + [menu sendCompleted]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [menu sendError:nil]; + [menu sendCompleted]; + }errorToast:NO] uid:uid]; +} +/// 获取首页推荐列表 +- (void)getHomeRecommendRoomListWithGroup:(dispatch_group_t)group { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api homeRecommendRoomList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [HomeRecommendRoomModel modelsWithArray:data.data]; + if (array.count > 1) { + ///排列顺序 1 - 6 0 + NSArray * newArray = [array sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { + HomeRecommendRoomModel * model1 = obj1; + HomeRecommendRoomModel * model2 = obj2; + return [model1.seq compare:model2.seq]; + }]; + if (newArray.count > 0) { + NSMutableArray * array = [NSMutableArray arrayWithArray:newArray]; + NSMutableArray * temAray = [NSMutableArray array]; + [newArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + HomeRecommendRoomModel * model = obj; + if (model.seq.intValue == 0) { + [temAray addObject:model]; + [array removeObject:model]; + } + }]; + if (temAray.count > 0) { + [array addObjectsFromArray:temAray]; + } + newArray = array.copy; + } + array = newArray; + } + + [[self getView] getHomeRecommendRoomListSuccess:array withGroup:group]; + + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getHomeRecommendDataFailWithGroup:group]; + }errorToast:NO] uid:uid]; +} + +/// 获取首页热门房间列表 +- (void)getHomeHotRoomListWithGroup:(dispatch_group_t)group { + [Api homeHotRoomList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [HomeRecommendRoomModel modelsWithArray:data.data]; + [[self getView] getHomeHotRoomListSuccess:array withGroup:group]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getHomeRecommendDataFailWithGroup:group]; + }]]; +} + + +/// 组队开黑房间列表 +/// @param pageNum 当前的页数 +- (void)getPlayGameWithTeam:(int)pageNum withGroup:(dispatch_group_t)group{ + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * pageNumStr = [NSString stringWithFormat:@"%d", pageNum]; + [Api homePlayGameTeam:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [HomePlayRoomModel modelsWithArray:data.data]; + [[self getView] getPlayGameWithTeamSuccess:array withGroup:group]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getHomeRecommendDataFailWithGroup:group]; + }errorToast:NO] uid:uid pageNum:pageNumStr pageSize:@"20"]; +} + + +/// 热门房间(个人房)列表 +- (void)getHomePersonalRoomListWithGroup:(dispatch_group_t)group { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api homePersonalRoomList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [HomePlayRoomModel modelsWithArray:data.data]; + [[self getView] getHomePersonalRoomListSuccess:array withGroup:group]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getHomeRecommendDataFailWithGroup:group]; + }errorToast:NO] uid:uid]; +} + +@end diff --git a/YuMi/Modules/YMNewHome/Presenter/YUMIResidenceAccommodatedExternalizer.h b/YuMi/Modules/YMNewHome/Presenter/YUMIResidenceAccommodatedExternalizer.h deleted file mode 100644 index bfa6bd2e..00000000 --- a/YuMi/Modules/YMNewHome/Presenter/YUMIResidenceAccommodatedExternalizer.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YUMIResidenceAccommodatedExternalizer.h -// YuMi -// -// Created by YuMi on 2021/12/2. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIResidenceAccommodatedExternalizer : BaseMvpExternalizer - -- (void)acquireResidenceCoupleSttowardsement; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Presenter/YUMIResidenceAccommodatedExternalizer.m b/YuMi/Modules/YMNewHome/Presenter/YUMIResidenceAccommodatedExternalizer.m deleted file mode 100644 index 8920300f..00000000 --- a/YuMi/Modules/YMNewHome/Presenter/YUMIResidenceAccommodatedExternalizer.m +++ /dev/null @@ -1,31 +0,0 @@ -// -// YUMIResidenceAccommodatedExternalizer.m -// YuMi -// -// Created by YuMi on 2021/12/2. -// - -#import "YUMIResidenceAccommodatedExternalizer.h" -#import "Api+Home.h" -#import "AccountAbstractStorage.h" -#import "ResidenceCoupleMatrix.h" -#import "FBCResidenceContainerCeremony.h" -#import "AccountAbstractStorage.h" -@implementation YUMIResidenceAccommodatedExternalizer - -- (void)acquireResidenceCoupleSttowardsement { - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - NSArray *list = [[AccountAbstractStorage instance]acquireUniversalCoupleSttowardsement]; - if(list.count > 0){ - [[self acquireRegard] acquireResidenceCoupleSttowardsementAccomplishment:list]; - } - [Api residenceCoupleimplementtion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [ResidenceCoupleMatrix mtowardsrixsAboutGarment:data.data]; - [[AccountAbstractStorage instance]preserveCoupleSttowardsement:array]; - if(list.count == 0 || list.count != array.count){ - [[self acquireRegard] acquireResidenceCoupleSttowardsementAccomplishment:array]; - } - }] uid:uid]; -} - -@end diff --git a/YuMi/Modules/YMNewHome/Presenter/YUMIResidenceExternalizer.h b/YuMi/Modules/YMNewHome/Presenter/YUMIResidenceExternalizer.h deleted file mode 100644 index a78e8871..00000000 --- a/YuMi/Modules/YMNewHome/Presenter/YUMIResidenceExternalizer.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMHomePresenter.h -// YUMI -// -// Created by YUMI on 2021/11/29. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIResidenceExternalizer : BaseMvpExternalizer - -- (void)acquireEncourageChamberSttowardsement:(NSString *)suspensionId page:(int)page pageSize:(int)pageSize state:(BOOL)state; - - -- (void)acquireResidenceFurthaerKellegChamberSttowardsement; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Presenter/YUMIResidenceExternalizer.m b/YuMi/Modules/YMNewHome/Presenter/YUMIResidenceExternalizer.m deleted file mode 100644 index 8230a68f..00000000 --- a/YuMi/Modules/YMNewHome/Presenter/YUMIResidenceExternalizer.m +++ /dev/null @@ -1,37 +0,0 @@ -// -// YMHomePresenter.m -// YUMI -// -// Created by YUMI on 2021/11/29. -// - -#import "YUMIResidenceExternalizer.h" -#import "Api+Home.h" -#import "AccountAbstractStorage.h" -#import "ResidenceEncourageChamberMatrix.h" -#import "FBCResidenceCeremony.h" -@implementation YUMIResidenceExternalizer - - -- (void)acquireEncourageChamberSttowardsement:(NSString *)suspensionId page:(int)page pageSize:(int)pageSize state:(BOOL)state { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * pageStr = [NSString stringWithFormat:@"%d", page]; - NSString * pageSizeStr = [NSString stringWithFormat:@"%d", pageSize]; - [Api acquireEncourageSttowardsementimplementtion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [ResidenceEncourageChamberMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireResidenceEncourageChamberSttowardsementAccomplishment:array state:state]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireResidenceEncourageChamberSttowardsementFlunk:msg state:state]; - }] uid:uid suspensionId:suspensionId pageNum:pageStr pageSize:pageSizeStr]; -} - -- (void)acquireResidenceFurthaerKellegChamberSttowardsement { - [Api residenceKellegFurthaerChamberSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [ResidenceEncourageChamberMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireResidenceFurthaerKellegChamberSttowardsementAccomplishment:array]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireResidenceFurthaerKellegChamberSttowardsementFlunk:msg]; - }] singleRoomSortId:@""]; -} - -@end diff --git a/YuMi/Modules/YMNewHome/Presenter/YUMIStrangeResidenceEncourageExternalizer.h b/YuMi/Modules/YMNewHome/Presenter/YUMIStrangeResidenceEncourageExternalizer.h deleted file mode 100644 index 8513856c..00000000 --- a/YuMi/Modules/YMNewHome/Presenter/YUMIStrangeResidenceEncourageExternalizer.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YUMIStrangeResidenceEncourageExternalizer.h -// YuMi -// -// Created by YuMi on 2023/6/18. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIStrangeResidenceEncourageExternalizer : BaseMvpExternalizer -- (void)acquireResidenceApexOriflammeSttowardsementAboutGroup:(dispatch_group_t)group; -- (void)acquireResidenceEncourageChamberSttowardsementAboutGroup:(dispatch_group_t)group; -- (void)acquireResidenceThermalChamberSttowardsementAboutGroup:(dispatch_group_t)group; -- (void)acquireResidencesubjectiveChamberSttowardsementAboutGroup:(dispatch_group_t)group; -- (void)acquireDisportCompetitionAboutSquad:(int)pageNum withGroup:(dispatch_group_t)group; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Presenter/YUMIStrangeResidenceEncourageExternalizer.m b/YuMi/Modules/YMNewHome/Presenter/YUMIStrangeResidenceEncourageExternalizer.m deleted file mode 100644 index 56592b93..00000000 --- a/YuMi/Modules/YMNewHome/Presenter/YUMIStrangeResidenceEncourageExternalizer.m +++ /dev/null @@ -1,129 +0,0 @@ -// -// YUMIStrangeResidenceEncourageExternalizer.m -// YuMi -// -// Created by YuMi on 2023/6/18. -// - -#import "YUMIStrangeResidenceEncourageExternalizer.h" -#import -#import "Api+Home.h" -#import "Api+Guild.h" -#import "AccountAbstractStorage.h" -#import "ResidenceParrotAbstractMatrix.h" -#import "ResidenceEncourageChamberMatrix.h" -#import "ResidenceOriflammeAbstractMatrix.h" -#import "ResidenceDisportChamberMatrix.h" -#import "FBCStrangeResidenceEncourageCeremony.h" -#import "CollectiveSpecificAbstractMatrix.h" -@implementation YUMIStrangeResidenceEncourageExternalizer -- (void)acquireResidenceApexOriflammeSttowardsementAboutGroup:(dispatch_group_t)group { - RACSubject* banner = [RACSubject subject]; - RACSubject* menu = [RACSubject subject]; - - [[RACSignal combineLatest:@[banner, menu] reduce:^id(NSArray* oriflammeStatement, NSArray* menuList){ - - dispatch_async(dispatch_get_main_queue(), ^{ - - - [[self acquireRegard] acquireResidenceApexOriflammeSttowardsementAccomplishment:oriflammeStatement menuList:menuList withGroup:group]; - }); - - return nil; - }] subscribeError:^(NSError * _Nullable error) { - dispatch_async(dispatch_get_main_queue(), ^{ - - - [[self acquireRegard] acquireResidenceEncourageTowardsoloudspeakerFlunkAboutGroup:group]; - }); - - }]; - - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api residenceOriflammeSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [ResidenceOriflammeAbstractMatrix mtowardsrixsAboutGarment:data.data]; - [banner sendNext:array]; - [banner sendCompleted]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [banner sendError:nil]; - [banner sendCompleted]; - } errorToast:NO] uid:uid type:@"1"]; - - [Api residenceParrotSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [ResidenceParrotAbstractMatrix mtowardsrixsAboutGarment:data.data]; - [menu sendNext:array]; - [menu sendCompleted]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - [menu sendError:nil]; - [menu sendCompleted]; - }errorToast:NO] uid:uid]; -} -- (void)acquireResidenceEncourageChamberSttowardsementAboutGroup:(dispatch_group_t)group { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api residenceEncourageChamberSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [ResidenceEncourageChamberMatrix mtowardsrixsAboutGarment:data.data]; - if (array.count > 1) { - - NSArray * newArray = [array sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { - ResidenceEncourageChamberMatrix * model1 = obj1; - ResidenceEncourageChamberMatrix * model2 = obj2; - return [model1.seq compare:model2.seq]; - }]; - if (newArray.count > 0) { - NSMutableArray * array = [NSMutableArray arrayWithArray:newArray]; - NSMutableArray * temAray = [NSMutableArray array]; - [newArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - ResidenceEncourageChamberMatrix * model = obj; - if (model.seq.intValue == 0) { - [temAray addObject:model]; - [array removeObject:model]; - } - }]; - if (temAray.count > 0) { - [array addObjectsFromArray:temAray]; - } - newArray = array.copy; - } - array = newArray; - } - - [[self acquireRegard] acquireResidenceEncourageChamberSttowardsementAccomplishment:array withGroup:group]; - - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireResidenceEncourageTowardsoloudspeakerFlunkAboutGroup:group]; - }errorToast:NO] uid:uid]; -} - -- (void)acquireResidenceThermalChamberSttowardsementAboutGroup:(dispatch_group_t)group { - [Api residenceThermalChamberSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [ResidenceEncourageChamberMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireResidenceThermalChamberSttowardsementAccomplishment:array withGroup:group]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireResidenceEncourageTowardsoloudspeakerFlunkAboutGroup:group]; - }]]; -} - - -- (void)acquireDisportCompetitionAboutSquad:(int)pageNum withGroup:(dispatch_group_t)group{ - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * pageNumStr = [NSString stringWithFormat:@"%d", pageNum]; - [Api residenceDisportCompetitionSquad:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [ResidenceDisportChamberMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireDisportCompetitionAboutSquadAccomplishment:array withGroup:group]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireResidenceEncourageTowardsoloudspeakerFlunkAboutGroup:group]; - }errorToast:NO] uid:uid pageNum:pageNumStr pageSize:@"20"]; -} - - -- (void)acquireResidencesubjectiveChamberSttowardsementAboutGroup:(dispatch_group_t)group { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api residencesubjectiveChamberSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [ResidenceDisportChamberMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireResidencesubjectiveChamberSttowardsementAccomplishment:array withGroup:group]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireResidenceEncourageTowardsoloudspeakerFlunkAboutGroup:group]; - }errorToast:NO] uid:uid]; -} - -@end diff --git a/YuMi/Modules/YMNewHome/Protocol/FBCResidenceCeremony.h b/YuMi/Modules/YMNewHome/Protocol/FBCResidenceCeremony.h deleted file mode 100644 index 98f74322..00000000 --- a/YuMi/Modules/YMNewHome/Protocol/FBCResidenceCeremony.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMHomeProtocol.h -// YUMI -// -// Created by YUMI on 2021/11/29. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCResidenceCeremony -- (void)acquireResidenceEncourageChamberSttowardsementAccomplishment:(NSArray *)list state:(BOOL)state; -- (void)acquireResidenceEncourageChamberSttowardsementFlunk:(NSString *)message state:(BOOL)state; -- (void)acquireResidenceFurthaerKellegChamberSttowardsementAccomplishment:(NSArray *)list; -- (void)acquireResidenceFurthaerKellegChamberSttowardsementFlunk:(NSString *)messag; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Protocol/FBCResidenceContainerCeremony.h b/YuMi/Modules/YMNewHome/Protocol/FBCResidenceContainerCeremony.h deleted file mode 100644 index bfa13e68..00000000 --- a/YuMi/Modules/YMNewHome/Protocol/FBCResidenceContainerCeremony.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// FBCResidenceContainerCeremony.h -// YuMi -// -// Created by YuMi on 2021/12/2. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ResidenceCoupleMatrix; -@protocol FBCResidenceContainerCeremony - -- (void)acquireResidenceCoupleSttowardsementAccomplishment:(NSArray *)array; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Protocol/FBCResidenceEncourageCeremony.h b/YuMi/Modules/YMNewHome/Protocol/FBCResidenceEncourageCeremony.h deleted file mode 100644 index 9bb108cc..00000000 --- a/YuMi/Modules/YMNewHome/Protocol/FBCResidenceEncourageCeremony.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMHomeRecommendProtocol.h -// YUMI -// -// Created by YUMI on 2022/2/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCResidenceEncourageCeremony -- (void)acquireResidenceApexOriflammeSttowardsementAccomplishment:(NSArray*)list menuList:(NSArray *)memuList; -- (void)acquireResidenceEncourageChamberSttowardsementAccomplishment:(NSArray *)list; -- (void)acquireResidenceThermalChamberSttowardsementAccomplishment:(NSArray *)list; -- (void)acquireResidencesubjectiveChamberSttowardsementAccomplishment:(NSArray *)list; -- (void)acquireDisportCompetitionAboutSquadAccomplishment:(NSArray *)list; -- (void)acquireResidenceEncourageTowardsoloudspeakerFlunk; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Protocol/FBCStrangeResidenceEncourageCeremony.h b/YuMi/Modules/YMNewHome/Protocol/FBCStrangeResidenceEncourageCeremony.h deleted file mode 100644 index dd5e05dd..00000000 --- a/YuMi/Modules/YMNewHome/Protocol/FBCStrangeResidenceEncourageCeremony.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// FBCStrangeResidenceEncourageCeremony.h -// YuMi -// -// Created by YuMi on 2023/6/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCStrangeResidenceEncourageCeremony -- (void)acquireResidenceApexOriflammeSttowardsementAccomplishment:(NSArray*)list menuList:(NSArray *)memuList withGroup:(dispatch_group_t)group; -- (void)acquireResidenceEncourageChamberSttowardsementAccomplishment:(NSArray *)list withGroup:(dispatch_group_t)group; -- (void)acquireResidenceThermalChamberSttowardsementAccomplishment:(NSArray *)list withGroup:(dispatch_group_t)group; -- (void)acquireResidencesubjectiveChamberSttowardsementAccomplishment:(NSArray *)list withGroup:(dispatch_group_t)group; -- (void)acquireDisportCompetitionAboutSquadAccomplishment:(NSArray *)list withGroup:(dispatch_group_t)group; -- (void)acquireResidenceEncourageTowardsoloudspeakerFlunkAboutGroup:(dispatch_group_t)group; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Protocol/XPHomeContainerProtocol.h b/YuMi/Modules/YMNewHome/Protocol/XPHomeContainerProtocol.h new file mode 100644 index 00000000..859bdd27 --- /dev/null +++ b/YuMi/Modules/YMNewHome/Protocol/XPHomeContainerProtocol.h @@ -0,0 +1,19 @@ +// +// XPHomeContainerProtocol.h +// YuMi +// +// Created by YuMi on 2021/12/2. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class HomeTagModel; +@protocol XPHomeContainerProtocol + +///获取所有的tag成功 +- (void)getHomeTagListSuccess:(NSArray *)array; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Protocol/XPHomeProtocol.h b/YuMi/Modules/YMNewHome/Protocol/XPHomeProtocol.h new file mode 100644 index 00000000..2fffa98d --- /dev/null +++ b/YuMi/Modules/YMNewHome/Protocol/XPHomeProtocol.h @@ -0,0 +1,23 @@ +// +// YMHomeProtocol.h +// YUMI +// +// Created by YUMI on 2021/11/29. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPHomeProtocol +///首页推荐房间的 +- (void)getHomeRecommendRoomListSuccess:(NSArray *)list state:(BOOL)state; +///首页推荐房间失败 +- (void)getHomeRecommendRoomListFail:(NSString *)message state:(BOOL)state; +///请求更多个播房成功 +- (void)getHomeMoreAnchorRoomListSuccess:(NSArray *)list; +///请求更多个播房失败 +- (void)getHomeMoreAnchorRoomListFail:(NSString *)messag; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Protocol/XPHomeRecommendProtocol.h b/YuMi/Modules/YMNewHome/Protocol/XPHomeRecommendProtocol.h new file mode 100644 index 00000000..158ec7cf --- /dev/null +++ b/YuMi/Modules/YMNewHome/Protocol/XPHomeRecommendProtocol.h @@ -0,0 +1,27 @@ +// +// YMHomeRecommendProtocol.h +// YUMI +// +// Created by YUMI on 2022/2/21. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPHomeRecommendProtocol +///获取首页轮播图列表成功 +- (void)getHomeTopBannerListSuccess:(NSArray*)list menuList:(NSArray *)memuList; +///获取首页推荐列表成功 +- (void)getHomeRecommendRoomListSuccess:(NSArray *)list; +///获取首页热门房列表成功 +- (void)getHomeHotRoomListSuccess:(NSArray *)list; +///获取个人房列表成功 +- (void)getHomePersonalRoomListSuccess:(NSArray *)list; +///获取组队开黑房间列表成功 +- (void)getPlayGameWithTeamSuccess:(NSArray *)list; +///获取首页数据失败 +- (void)getHomeRecommendDataFail; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Protocol/XPNewHomeRecommendProtocol.h b/YuMi/Modules/YMNewHome/Protocol/XPNewHomeRecommendProtocol.h new file mode 100644 index 00000000..923edd00 --- /dev/null +++ b/YuMi/Modules/YMNewHome/Protocol/XPNewHomeRecommendProtocol.h @@ -0,0 +1,27 @@ +// +// XPNewHomeRecommendProtocol.h +// YuMi +// +// Created by YuMi on 2023/6/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPNewHomeRecommendProtocol +///获取首页轮播图列表成功 +- (void)getHomeTopBannerListSuccess:(NSArray*)list menuList:(NSArray *)memuList withGroup:(dispatch_group_t)group; +///获取首页推荐列表成功 +- (void)getHomeRecommendRoomListSuccess:(NSArray *)list withGroup:(dispatch_group_t)group; +///获取首页热门房列表成功 +- (void)getHomeHotRoomListSuccess:(NSArray *)list withGroup:(dispatch_group_t)group; +///获取个人房列表成功 +- (void)getHomePersonalRoomListSuccess:(NSArray *)list withGroup:(dispatch_group_t)group; +///获取组队开黑房间列表成功 +- (void)getPlayGameWithTeamSuccess:(NSArray *)list withGroup:(dispatch_group_t)group; +///获取首页数据失败 +- (void)getHomeRecommendDataFailWithGroup:(dispatch_group_t)group; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Cell/XPHomeBannerTableViewCell.h b/YuMi/Modules/YMNewHome/View/Cell/XPHomeBannerTableViewCell.h new file mode 100644 index 00000000..53c1a10a --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Cell/XPHomeBannerTableViewCell.h @@ -0,0 +1,29 @@ +// +// XPHomeBannerTableViewCell.h +// YuMi +// +// Created by YuMi on 2022/2/21. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class HomeBannerInfoModel, XPHomeBannerTableViewCell; + +@protocol XPHomeBannerTableViewCellDelegate + +///点击了某个banner +- (void)xPHomeBannerTableViewCell:(XPHomeBannerTableViewCell *)view didClickBanner:(HomeBannerInfoModel *)info; + +@end + +@interface XPHomeBannerTableViewCell : UITableViewCell +@property (nonatomic,strong) NSArray *bannerList; +///代理 +@property (nonatomic,weak) id delegate; +///是否个人中心banner +@property (nonatomic, assign) BOOL isMineViewBanner; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Cell/XPHomeBannerTableViewCell.m b/YuMi/Modules/YMNewHome/View/Cell/XPHomeBannerTableViewCell.m new file mode 100644 index 00000000..0bab9125 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Cell/XPHomeBannerTableViewCell.m @@ -0,0 +1,92 @@ +// +// XPHomeBannerTableViewCell.m +// YuMi +// +// Created by YuMi on 2022/2/21. +// 轮播图 + +#import "XPHomeBannerTableViewCell.h" +///Third +#import +#import +///Model +#import "HomeBannerInfoModel.h" +#import "NSArray+Safe.h" +#import "UIImageConstant.h" +@interface XPHomeBannerTableViewCell () +@property (nonatomic, strong) SDCycleScrollView *cycleScrollView; +@end + +@implementation XPHomeBannerTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.cycleScrollView]; +} + +- (void)initSubViewConstraints { + [self.cycleScrollView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.contentView).mas_offset(16); + make.bottom.mas_equalTo(self.contentView); + make.left.right.mas_equalTo(self.contentView).inset(15); + }]; + +} +#pragma mark - SDCycleScrollViewDelegate +- (void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didSelectItemAtIndex:(NSInteger)index { + HomeBannerInfoModel * bannerInfo = [self.bannerList safeObjectAtIndex1:index]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPHomeBannerTableViewCell:didClickBanner:)]) { + [self.delegate xPHomeBannerTableViewCell:self didClickBanner:bannerInfo]; + } +} + +#pragma mark - Getters And Setters +- (void)setBannerList:(NSArray *)bannerList { + _bannerList = bannerList; + if (_bannerList.count > 0) { + NSMutableArray * array = [NSMutableArray array]; + [_bannerList enumerateObjectsUsingBlock:^(HomeBannerInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.bannerPic.length > 0) { + [array addObject:obj.bannerPic]; + } + }]; + if (array.count > 0) { + self.cycleScrollView.imageURLStringsGroup = array; + [self.cycleScrollView autoScroll]; + } + } +} + +- (void)setIsMineViewBanner:(BOOL)isMineViewBanner { + [self.cycleScrollView mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.bottom.mas_equalTo(self.contentView); + }]; +} + +- (SDCycleScrollView *)cycleScrollView { + if (!_cycleScrollView) { + _cycleScrollView = [[SDCycleScrollView alloc] init]; + _cycleScrollView.backgroundColor = [UIColor clearColor]; + _cycleScrollView.layer.cornerRadius = 10; + _cycleScrollView.layer.masksToBounds = YES; + _cycleScrollView.delegate = self; + _cycleScrollView.showPageControl = NO; + _cycleScrollView.autoScrollTimeInterval = 5.0; + _cycleScrollView.bannerImageViewContentMode = UIViewContentModeScaleAspectFill; + _cycleScrollView.placeholderImage = [UIImageConstant defalutBannerPlaceholder]; + } + return _cycleScrollView; +} + + +@end diff --git a/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePartyTableViewCell.h b/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePartyTableViewCell.h new file mode 100644 index 00000000..af6a8c86 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePartyTableViewCell.h @@ -0,0 +1,18 @@ +// +// XPNewHomePartyTableViewCell.h +// YuMi +// +// Created by YuMi on 2022/10/8. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class HomePlayRoomModel, HomeRecommendRoomModel; +@interface XPNewHomePartyTableViewCell : UITableViewCell +@property (nonatomic,strong) HomePlayRoomModel *roomInfo; + +@property (nonatomic,strong) HomeRecommendRoomModel *roomInfo1; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePartyTableViewCell.m b/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePartyTableViewCell.m new file mode 100644 index 00000000..756d18bb --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePartyTableViewCell.m @@ -0,0 +1,236 @@ +// +// XPNewHomePartyTableViewCell.m +// YuMi +// +// Created by YuMi on 2022/10/8. +// + +#import "XPNewHomePartyTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +///Model +#import "HomePlayRoomModel.h" +#import "HomeRecommendRoomModel.h" + + + + +@interface XPNewHomePartyTableViewCell () +///正在pk的 +@property (nonatomic,strong) UIImageView *crossPkImageView; +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///背景 +@property (nonatomic,strong) UIView *bgView; +///房间标题 +@property (nonatomic,strong) UILabel *titleLabel; +///tag +@property (nonatomic,strong) NetImageView *tagImageView; +///id +@property (nonatomic,strong) UILabel *idLabel; +///个数的logo +@property (nonatomic,strong) UIImageView *numberImageView; +///显示个数 +@property (nonatomic,strong) UILabel *numberLabel; + +@end + +@implementation XPNewHomePartyTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.selectionStyle = UITableViewCellSelectionStyleNone; + self.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.bgView]; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.crossPkImageView]; + + [self.bgView addSubview:self.titleLabel]; + [self.bgView addSubview:self.tagImageView]; + [self.bgView addSubview:self.idLabel]; + [self.bgView addSubview:self.numberLabel]; + [self.bgView addSubview:self.numberImageView]; + +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(74, 74)); + make.centerY.mas_equalTo(self.bgView); + make.left.mas_equalTo(self.contentView).offset(15); + }]; + + [self.crossPkImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.avatarImageView); + }]; + + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.contentView).offset(36); + make.right.mas_equalTo(self.contentView).offset(-15); + make.top.mas_equalTo(self.contentView); + make.bottom.mas_equalTo(self.contentView).offset(-12); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.bgView).offset(65); + make.bottom.mas_equalTo(self.bgView.mas_centerY).offset(-8); + make.right.lessThanOrEqualTo(self.numberImageView.mas_left).offset(-10); + }]; + + [self.tagImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(32, 15)); + make.left.mas_equalTo(self.titleLabel); + make.top.mas_equalTo(self.bgView.mas_centerY).offset(8); + }]; + + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(65); + make.centerY.mas_equalTo(self.tagImageView); + }]; + + [self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.bgView).offset(-12); + make.centerY.mas_equalTo(self.titleLabel); + }]; + + [self.numberImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(18, 18)); + make.right.mas_equalTo(self.numberLabel.mas_left).offset(-2); + make.centerY.mas_equalTo(self.numberLabel); + }]; +} + +#pragma mark - Getters And Setters +- (void)setRoomInfo:(HomePlayRoomModel *)roomInfo { + _roomInfo = roomInfo; + if (_roomInfo) { + self.crossPkImageView.hidden = !_roomInfo.crossPking; + self.avatarImageView.imageUrl = _roomInfo.avatar; + self.titleLabel.text = _roomInfo.title; + if (_roomInfo.tagPict.length > 0){ + self.tagImageView.imageUrl = _roomInfo.tagPict; + self.tagImageView.hidden = NO; + [self.idLabel mas_updateConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(106); + }]; + }else{ + self.tagImageView.hidden = YES; + [self.idLabel mas_updateConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(65); + }]; + } + + self.idLabel.text = [NSString stringWithFormat:@"ID:%@", _roomInfo.erbanNo]; + self.numberLabel.text = [NSString stringWithFormat:@"%ld", _roomInfo.onlineNum]; + } +} + +- (void)setRoomInfo1:(HomeRecommendRoomModel *)roomInfo1 { + _roomInfo1 = roomInfo1; + if (_roomInfo1) { + self.crossPkImageView.hidden = !_roomInfo1.crossPking; + self.avatarImageView.imageUrl = _roomInfo1.avatar; + self.titleLabel.text = _roomInfo1.title; + if (_roomInfo1.tagPict.length > 0){ + self.tagImageView.imageUrl = _roomInfo1.tagPict; + self.tagImageView.hidden = NO; + [self.idLabel mas_updateConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(106); + }]; + }else{ + self.tagImageView.hidden = YES; + [self.idLabel mas_updateConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(65); + }]; + } + self.idLabel.text = [NSString stringWithFormat:@"ID:%@", _roomInfo1.erbanNo]; + self.numberLabel.text = [NSString stringWithFormat:@"%ld", _roomInfo1.onlineNum]; + } +} + +- (UIImageView *)crossPkImageView { + if (!_crossPkImageView) { + _crossPkImageView = [[UIImageView alloc] init]; + _crossPkImageView.userInteractionEnabled = YES; + _crossPkImageView.image = [UIImage imageNamed:@"home_cross_pk"]; + } + return _crossPkImageView; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 74/2; + } + return _avatarImageView; +} + +- (UIView *)bgView { + if (!_bgView) { + _bgView = [[UIView alloc] init]; + _bgView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _bgView.layer.masksToBounds = YES; + _bgView.layer.cornerRadius = 14; + } + return _bgView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:15]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +- (NetImageView *)tagImageView { + if (!_tagImageView) { + _tagImageView = [[NetImageView alloc] init]; + } + return _tagImageView; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.font = [UIFont systemFontOfSize:13]; + _idLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _idLabel; +} + +- (UIImageView *)numberImageView { + if (!_numberImageView) { + _numberImageView = [[UIImageView alloc] init]; + _numberImageView.userInteractionEnabled = YES; + _numberImageView.image = [UIImage imageNamed:@"home_party_number"]; + } + return _numberImageView; +} + +- (UILabel *)numberLabel { + if (!_numberLabel) { + _numberLabel = [[UILabel alloc] init]; + _numberLabel.font = [UIFont systemFontOfSize:13]; + _numberLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _numberLabel; +} + +@end diff --git a/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePlayEmptyTableViewCell.h b/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePlayEmptyTableViewCell.h new file mode 100644 index 00000000..7900b97a --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePlayEmptyTableViewCell.h @@ -0,0 +1,26 @@ +// +// XPNewHomePlayEmptyTableViewCell.h +// YuMi +// +// Created by YuMi on 2022/10/8. +// + +#import +#import "ClanDetailInfoModel.h" + +@protocol XPNewHomePlayEmptyTableViewCellDelegate + +-(void)emptyCellChooseGameAction; + +@end + + +NS_ASSUME_NONNULL_BEGIN + +@interface XPNewHomePlayEmptyTableViewCell : UITableViewCell +@property (nonatomic,assign) BOOL isClan; +@property (nonatomic,weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePlayEmptyTableViewCell.m b/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePlayEmptyTableViewCell.m new file mode 100644 index 00000000..8b3c81b4 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePlayEmptyTableViewCell.m @@ -0,0 +1,130 @@ +// +// XPNewHomePlayEmptyTableViewCell.m +// YuMi +// +// Created by YuMi on 2022/10/8. +// + +#import "XPNewHomePlayEmptyTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" + +@interface XPNewHomePlayEmptyTableViewCell () + +///背景 +@property (nonatomic,strong) UIImageView *backImageView; +///添加 +@property (nonatomic,strong) UIImageView *addImageView; +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +@property (nonatomic,strong) UIButton *chooseGameBtn; +@end + +@implementation XPNewHomePlayEmptyTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.selectionStyle = UITableViewCellSelectionStyleNone; + self.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.backImageView]; + [self.backImageView addSubview:self.addImageView]; + [self.backImageView addSubview:self.titleLabel]; + [self.contentView addSubview:self.chooseGameBtn]; +} + +- (void)initSubViewConstraints { + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.left.mas_equalTo(self.contentView).inset(15); + make.top.bottom.mas_equalTo(self.contentView); + }]; + + [self.addImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(48, 48)); + make.left.mas_equalTo(self.backImageView).offset(12); + make.centerY.mas_equalTo(self.backImageView); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.addImageView.mas_right).offset(15); + make.right.equalTo(self.backImageView.mas_right).mas_offset(-12); + make.centerY.mas_equalTo(self.backImageView); + }]; + [self.chooseGameBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-11); + make.width.mas_equalTo(120); + make.top.bottom.equalTo(self.contentView); + }]; +} +-(void)chooseGameAction{ + if(self.delegate && [self.delegate respondsToSelector:@selector(emptyCellChooseGameAction)]){ + [self.delegate emptyCellChooseGameAction]; + } +} + +-(void)setIsClan:(BOOL)isClan{ + _isClan = isClan; + if(_isClan == NO){ + _chooseGameBtn.hidden = NO; + [self.backImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-141); + }]; + return; + } + _chooseGameBtn.hidden = YES; + [self.backImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-15); + }]; +} +#pragma mark - Getters And Setters + +- (UIImageView *)addImageView { + if (!_addImageView) { + _addImageView = [[UIImageView alloc] init]; + _addImageView.userInteractionEnabled = YES; + _addImageView.image = [UIImage imageNamed:@"home_play_create_room"]; + } + return _addImageView; +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor colorWithHexString:@"#E7D7FC"], [DJDKMIMOMColor colorWithHexString:@"#D7F8FD"]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)]; + _backImageView.layer.masksToBounds = YES; + _backImageView.layer.cornerRadius = 10; + _backImageView.contentMode = UIViewContentModeScaleAspectFill; + } + return _backImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:15]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _titleLabel.numberOfLines = 0; + _titleLabel.text = YMLocalizedString(@"XPNewHomePlayEmptyTableViewCell0"); + } + return _titleLabel; +} +- (UIButton *)chooseGameBtn{ + if (!_chooseGameBtn){ + _chooseGameBtn = [UIButton new]; + [_chooseGameBtn setBackgroundImage:[UIImage imageNamed:@"home_play_game"] forState:UIControlStateNormal]; + [_chooseGameBtn addTarget:self action:@selector(chooseGameAction) forControlEvents:UIControlEventTouchUpInside]; + _chooseGameBtn.hidden = YES; + } + return _chooseGameBtn; +} +@end diff --git a/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePlayItemCollectionViewCell.h b/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePlayItemCollectionViewCell.h new file mode 100644 index 00000000..c20d4d8e --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePlayItemCollectionViewCell.h @@ -0,0 +1,16 @@ +// +// XPNewHomePlayItemCollectionViewCell.h +// YuMi +// +// Created by YuMi on 2022/10/8. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class HomePlayRoomModel; +@interface XPNewHomePlayItemCollectionViewCell : UICollectionViewCell +@property (nonatomic,strong) HomePlayRoomModel *roomInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePlayItemCollectionViewCell.m b/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePlayItemCollectionViewCell.m new file mode 100644 index 00000000..e97b9f7c --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePlayItemCollectionViewCell.m @@ -0,0 +1,83 @@ +// +// XPNewHomePlayItemCollectionViewCell.m +// YuMi +// +// Created by YuMi on 2022/10/8. +// + +#import "XPNewHomePlayItemCollectionViewCell.h" +///Third +#import +///Tool +#import "NetImageView.h" +///Model +#import "HomePlayRoomModel.h" + +@interface XPNewHomePlayItemCollectionViewCell () +///边框 +@property (nonatomic,strong) UIImageView *borderImageView; +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +@end + +@implementation XPNewHomePlayItemCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.contentView.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.borderImageView]; + [self.contentView addSubview:self.avatarImageView]; +} + +- (void)initSubViewConstraints { + [self.borderImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.contentView); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(52, 52)); + make.center.mas_equalTo(self.borderImageView); + }]; +} + +#pragma mark - Getters And Setters +- (void)setRoomInfo:(HomePlayRoomModel *)roomInfo { + _roomInfo = roomInfo; + if (_roomInfo != nil) { + self.avatarImageView.imageUrl = _roomInfo.avatar; + self.borderImageView.image = _roomInfo.gender == GenderType_Male ? [UIImage imageNamed:@"home_play_male_border"] : [UIImage imageNamed:@"home_play_female_border"]; + } +} + +- (UIImageView *)borderImageView { + if (!_borderImageView) { + _borderImageView = [[UIImageView alloc] init]; + _borderImageView.userInteractionEnabled = YES; + } + return _borderImageView; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 52/2; + _avatarImageView.layer.borderColor = [UIColor whiteColor].CGColor; + _avatarImageView.layer.borderWidth = 1; + } + return _avatarImageView; +} + +@end diff --git a/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePlayTableViewCell.h b/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePlayTableViewCell.h new file mode 100644 index 00000000..76d9be5b --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePlayTableViewCell.h @@ -0,0 +1,28 @@ +// +// XPNewHomePlayTableViewCell.h +// YuMi +// +// Created by YuMi on 2022/10/8. +// + +#import +#import "ClanDetailInfoModel.h" + +NS_ASSUME_NONNULL_BEGIN +@class HomePlayRoomModel, XPNewHomePlayTableViewCell; +@protocol XPNewHomePlayTableViewCellDelegate + +- (void)xPNewHomePlayTableViewCell:(XPNewHomePlayTableViewCell *)cell didSelectItem:(HomePlayRoomModel *)info; +-(void)chooseGameAction; +@end + +@interface XPNewHomePlayTableViewCell : UITableViewCell + +@property (nonatomic,strong) NSArray *playRoomList; + +@property (nonatomic,assign) BOOL isClan; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePlayTableViewCell.m b/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePlayTableViewCell.m new file mode 100644 index 00000000..8a806a60 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePlayTableViewCell.m @@ -0,0 +1,127 @@ +// +// XPNewHomePlayTableViewCell.m +// YuMi +// +// Created by YuMi on 2022/10/8. +// + +#import "XPNewHomePlayTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "NSArray+Safe.h" +///View +#import "XPNewHomePlayItemCollectionViewCell.h" + +@interface XPNewHomePlayTableViewCell () +@property (nonatomic,strong) UICollectionView *collectionView; +@property (nonatomic,strong) UIButton *chooseGameBtn; + +@end +@implementation XPNewHomePlayTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +-(void)setIsClan:(BOOL)isClan{ + _isClan = isClan; + if(_isClan == NO){ + _chooseGameBtn.hidden = NO; + [_collectionView mas_updateConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-141); + }]; + return; + } + _chooseGameBtn.hidden = YES; + [_collectionView mas_updateConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(0); + }]; + +} + +-(void)chooseGameAction{ + if(self.delegate && [self.delegate respondsToSelector:@selector(chooseGameAction)]){ + [self.delegate chooseGameAction]; + } +} +#pragma mark - Private Method +- (void)initSubViews { + self.selectionStyle = UITableViewCellSelectionStyleNone; + self.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.collectionView]; + [self.contentView addSubview:self.chooseGameBtn]; +} + +- (void)initSubViewConstraints { + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.bottom.mas_equalTo(self.contentView); + make.right.mas_equalTo(-136); + }]; + [self.chooseGameBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-11); + make.width.mas_equalTo(120); + make.top.bottom.equalTo(self.collectionView); + }]; +} + +-(void)setPlayRoomList:(NSArray *)playRoomList{ + _playRoomList = playRoomList; + [self.collectionView reloadData]; +} +#pragma mark - UICollectionViewDelegate, UICollectionViewDataSource +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + + return self.playRoomList.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPNewHomePlayItemCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPNewHomePlayItemCollectionViewCell class]) forIndexPath:indexPath]; + + cell.roomInfo = [self.playRoomList safeObjectAtIndex1:indexPath.row]; + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + [collectionView deselectItemAtIndexPath:indexPath animated:YES]; + if (self.playRoomList.count > 0) { + HomePlayRoomModel * roomInfo = [self.playRoomList safeObjectAtIndex1:indexPath.row]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPNewHomePlayTableViewCell:didSelectItem:)]) { + [self.delegate xPNewHomePlayTableViewCell:self didSelectItem:roomInfo]; + } + } +} + + +#pragma mark - Getters And Setters +- (UICollectionView *)collectionView{ + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.itemSize = CGSizeMake(63, 63); + layout.sectionInset = UIEdgeInsetsMake(0, 15, 0, 15); + layout.minimumLineSpacing = 15; + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.backgroundColor = [UIColor clearColor]; + [_collectionView registerClass:[XPNewHomePlayItemCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPNewHomePlayItemCollectionViewCell class])]; + } + return _collectionView; +} +- (UIButton *)chooseGameBtn{ + if (!_chooseGameBtn){ + _chooseGameBtn = [UIButton new]; + [_chooseGameBtn setBackgroundImage:[UIImage imageNamed:@"home_play_game"] forState:UIControlStateNormal]; + [_chooseGameBtn addTarget:self action:@selector(chooseGameAction) forControlEvents:UIControlEventTouchUpInside]; + _chooseGameBtn.hidden = YES; + } + return _chooseGameBtn; +} + +@end diff --git a/YuMi/Modules/YMNewHome/View/Cell/XPNewHomeRecommendTableViewCell.h b/YuMi/Modules/YMNewHome/View/Cell/XPNewHomeRecommendTableViewCell.h new file mode 100644 index 00000000..9254e7ae --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Cell/XPNewHomeRecommendTableViewCell.h @@ -0,0 +1,27 @@ +// +// XPNewHomeRecommendTableViewCell.h +// YuMi +// +// Created by YuMi on 2022/10/8. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPNewHomeRecommendTableViewCell, HomeRecommendRoomModel; +@protocol XPNewHomeRecommendTableViewCellDelegate + +- (void)xPNewHomeRecommendTableViewCell:(XPNewHomeRecommendTableViewCell *)view didSelectItem:(HomeRecommendRoomModel *)info; + +@end + +@interface XPNewHomeRecommendTableViewCell : UITableViewCell + +- (void)setRecommendsList:(NSArray *)recommends; + + +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Cell/XPNewHomeRecommendTableViewCell.m b/YuMi/Modules/YMNewHome/View/Cell/XPNewHomeRecommendTableViewCell.m new file mode 100644 index 00000000..8d2a765d --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Cell/XPNewHomeRecommendTableViewCell.m @@ -0,0 +1,257 @@ +// +// XPNewHomeRecommendTableViewCell.m +// YuMi +// +// Created by YuMi on 2022/10/8. +// + +#import "XPNewHomeRecommendTableViewCell.h" +///Third +#import +#import +///Tool +#import "NetImageView.h" +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "NSArray+Safe.h" +///Model +#import "HomeRecommendRoomModel.h" + +@interface XPCycleScrollViewCell : GKCycleScrollViewCell +///显示头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///显示tag背景 +@property (nonatomic,strong) NetImageView *tagImageView; +///显示tag +@property (nonatomic,strong) UILabel *tagTitleView; + +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +@property (nonatomic,assign) BOOL isCenterView; +@property (nonatomic,strong) HomeRecommendRoomModel *recommendRoomInfo; + +@end + +@implementation XPCycleScrollViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + + +#pragma mark - Private Method +- (void)initSubViews { + self.coverView.hidden = YES; + self.backgroundColor = [UIColor clearColor]; + [self addSubview:self.avatarImageView]; + [self addSubview:self.tagImageView]; + [self.tagImageView addSubview:self.tagTitleView]; + [self addSubview:self.titleLabel]; + +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(10 * kScreenScale); + make.width.height.mas_equalTo(123 * kScreenScale); + }]; + + [self.tagImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(18 * kScreenScale); + make.width.mas_greaterThanOrEqualTo(10); + make.left.top.mas_equalTo(self.avatarImageView); + }]; + + [self.tagTitleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(7 * kScreenScale); + make.right.mas_equalTo(-7 * kScreenScale); + make.top.bottom.equalTo(self.tagImageView); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.avatarImageView); + make.top.mas_equalTo(self.avatarImageView.mas_bottom).offset(10 * kScreenScale); + }]; +} +- (void)setIsCenterView:(BOOL)isCenterView{ + _isCenterView = isCenterView; + if(_isCenterView == YES){ + [self.avatarImageView.superview layoutIfNeeded]; + [UIView animateWithDuration:0.5 animations:^{ + + [self.avatarImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(123 * kScreenScale); + make.top.mas_equalTo(10 * kScreenScale); + }]; + self.avatarImageView.layer.cornerRadius = 11; + + self.titleLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightMedium]; + [self.avatarImageView.superview layoutIfNeeded]; + }]; + + return; + } + [self.avatarImageView.superview layoutIfNeeded]; + [UIView animateWithDuration:0.5 animations:^{ + self.avatarImageView.layer.cornerRadius = 8; + [self.avatarImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(100 * kScreenScale); + make.top.mas_equalTo(22 * kScreenScale); + }]; + self.titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + [self.avatarImageView.superview layoutIfNeeded]; + }]; + +} +#pragma mark - Getters And Setters +- (void)setRecommendRoomInfo:(HomeRecommendRoomModel *)recommendRoomInfo { + _recommendRoomInfo = recommendRoomInfo; + if (_recommendRoomInfo) { + self.avatarImageView.imageUrl = _recommendRoomInfo.avatar; + self.titleLabel.text = _recommendRoomInfo.title; + self.tagTitleView.hidden = YES; + self.tagImageView.hidden = YES; + if(_recommendRoomInfo.iconContent.length > 0){ + self.tagTitleView.text = _recommendRoomInfo.iconContent; + self.tagTitleView.hidden = NO; + self.tagImageView.hidden = NO; + } + + } +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeMonentsPhoto; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 11; + _avatarImageView.contentMode = UIViewContentModeScaleAspectFill; + } + return _avatarImageView; +} +-(NetImageView *)tagImageView{ + if (!_tagImageView){ + _tagImageView = [[NetImageView alloc]init]; + _tagImageView.image = [UIImage imageNamed:@"monents_common_room_tag"]; + + } + return _tagImageView; +} +- (UILabel *)tagTitleView{ + if (!_tagTitleView){ + _tagTitleView = [UILabel new]; + _tagTitleView.font = [UIFont systemFontOfSize:11 weight:UIFontWeightMedium]; + _tagTitleView.textColor = [UIColor whiteColor]; + } + return _tagTitleView; +} +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} + +@end + + +@interface XPNewHomeRecommendTableViewCell () + +@property (nonatomic,strong) GKCycleScrollView *scrollView; +@property (nonatomic,strong) NSArray *recommends; +@end + +@implementation XPNewHomeRecommendTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.selectionStyle = UITableViewCellSelectionStyleNone; + self.backgroundColor = [UIColor clearColor]; + self.scrollView = [[GKCycleScrollView alloc] initWithFrame:CGRectZero]; + self.scrollView.delegate = self; + self.scrollView.leftRightMargin = 0.0f; + self.scrollView.topBottomMargin = 0.0f; + self.scrollView.dataSource = self; + [self.contentView addSubview:self.scrollView]; +} + +- (void)initSubViewConstraints { + [self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15 * kScreenScale); + make.top.mas_equalTo(self.contentView); + make.bottom.mas_equalTo(self.contentView); + }]; +} + +- (NSInteger)numberOfCellsInCycleScrollView:(GKCycleScrollView *)cycleScrollView { + return self.recommends.count; +} + +/// 返回继承自GKCycleScrollViewCell的类 +/// @param cycleScrollView cycleScrollView description +/// @param index 索引 +- (GKCycleScrollViewCell *)cycleScrollView:(GKCycleScrollView *)cycleScrollView cellForViewAtIndex:(NSInteger)index { + XPCycleScrollViewCell * cell = cycleScrollView.dequeueReusableCell; + if (!cell) { + cell = [[XPCycleScrollViewCell alloc] init]; + } + + HomeRecommendRoomModel * info = [self.recommends safeObjectAtIndex1:index]; + cell.recommendRoomInfo = info; + cell.isCenterView = index == self.scrollView.currentSelectIndex; + return cell; +} +- (void)cycleScrollView:(GKCycleScrollView *)cycleScrollView didScrollCellToIndex:(NSInteger)index{ + + HomeRecommendRoomModel * info = [self.recommends safeObjectAtIndex1:index]; + NSLog(@"%@",info.title); + + UIView *view = cycleScrollView.subviews[0]; + for (XPCycleScrollViewCell * cell in view.subviews) { + cell.isCenterView = [cell.recommendRoomInfo.title isEqual:info.title]; + } + +} +- (void)cycleScrollView:(GKCycleScrollView *)cycleScrollView didSelectCellAtIndex:(NSInteger)index { + if(self.recommends.count > 0 && index < self.recommends.count) { + HomeRecommendRoomModel * info = [self.recommends safeObjectAtIndex1:index]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPNewHomeRecommendTableViewCell:didSelectItem:)]) { + [self.delegate xPNewHomeRecommendTableViewCell:self didSelectItem:info]; + } + } +} + +- (CGSize)sizeForCellInCycleScrollView:(GKCycleScrollView *)cycleScrollView { + return CGSizeMake(123 * kScreenScale, 160 * kScreenScale); +} +#pragma mark - Getters And Setters +- (void)setRecommendsList:(NSArray *)recommends{ + if(recommends.count == self.recommends.count){ + return; + } + self.recommends = recommends; + [self.scrollView reloadData]; +} + + + +@end diff --git a/YuMi/Modules/YMNewHome/View/Cell/YUMIResidenceOriflammeTabulationRegardElement.h b/YuMi/Modules/YMNewHome/View/Cell/YUMIResidenceOriflammeTabulationRegardElement.h deleted file mode 100644 index be71d03d..00000000 --- a/YuMi/Modules/YMNewHome/View/Cell/YUMIResidenceOriflammeTabulationRegardElement.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YUMIResidenceOriflammeTabulationRegardElement.h -// YuMi -// -// Created by YuMi on 2022/2/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ResidenceOriflammeAbstractMatrix, YUMIResidenceOriflammeTabulationRegardElement; - -@protocol FBCResidenceBannerTabulationViweElementRepresendtation - -- (void)fBCHoutilizeOriflammeTarbsultowardsionViweElement:(YUMIResidenceOriflammeTabulationRegardElement *)view didClickBanner:(ResidenceOriflammeAbstractMatrix *)info; - -@end - -@interface YUMIResidenceOriflammeTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) NSArray *oriflammeStatement; -@property (nonatomic,weak) id delegate; -@property (nonatomic, assign) BOOL isManeRegardOriflamme; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Cell/YUMIResidenceOriflammeTabulationRegardElement.m b/YuMi/Modules/YMNewHome/View/Cell/YUMIResidenceOriflammeTabulationRegardElement.m deleted file mode 100644 index cb93a318..00000000 --- a/YuMi/Modules/YMNewHome/View/Cell/YUMIResidenceOriflammeTabulationRegardElement.m +++ /dev/null @@ -1,90 +0,0 @@ -// -// YUMIResidenceOriflammeTabulationRegardElement.m -// YuMi -// -// Created by YuMi on 2022/2/21. -// 轮播图 - -#import "YUMIResidenceOriflammeTabulationRegardElement.h" -#import -#import -#import "ResidenceOriflammeAbstractMatrix.h" -#import "NSArray+Safe.h" -#import "UIIndicateConstant.h" -@interface YUMIResidenceOriflammeTabulationRegardElement () -@property (nonatomic, strong) SDCycleScrollView *cycleTrundleRegard; -@end - -@implementation YUMIResidenceOriflammeTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.cycleTrundleRegard]; -} - -- (void)initChildLyRestrictions { - [self.cycleTrundleRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.contentView).mas_offset(16); - make.bottom.mas_equalTo(self.contentView); - make.left.right.mas_equalTo(self.contentView).inset(15); - }]; - -} -#pragma mark - SDCycleScrollViewDelegate -- (void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didSelectItemAtIndex:(NSInteger)index { - ResidenceOriflammeAbstractMatrix * bannerInfo = [self.oriflammeStatement secureGroalTowardsIndictowardsrix1:index]; - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCHoutilizeOriflammeTarbsultowardsionViweElement:didClickBanner:)]) { - [self.delegate fBCHoutilizeOriflammeTarbsultowardsionViweElement:self didClickBanner:bannerInfo]; - } -} - -#pragma mark - Getters And Setters -- (void)setOriflammeStatement:(NSArray *)oriflammeStatement { - _oriflammeStatement = oriflammeStatement; - if (_oriflammeStatement.count > 0) { - NSMutableArray * array = [NSMutableArray array]; - [_oriflammeStatement enumerateObjectsUsingBlock:^(ResidenceOriflammeAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.bannerPic.length > 0) { - [array addObject:obj.bannerPic]; - } - }]; - if (array.count > 0) { - self.cycleTrundleRegard.imageURLStringsGroup = array; - [self.cycleTrundleRegard autoScroll]; - } - } -} - -- (void)setIsManeRegardOriflamme:(BOOL)isManeRegardOriflamme { - [self.cycleTrundleRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.bottom.mas_equalTo(self.contentView); - }]; -} - -- (SDCycleScrollView *)cycleTrundleRegard { - if (!_cycleTrundleRegard) { - _cycleTrundleRegard = [[SDCycleScrollView alloc] init]; - _cycleTrundleRegard.backgroundColor = [UIColor clearColor]; - _cycleTrundleRegard.layer.cornerRadius = 10; - _cycleTrundleRegard.layer.masksToBounds = YES; - _cycleTrundleRegard.delegate = self; - _cycleTrundleRegard.showPageControl = NO; - _cycleTrundleRegard.autoScrollTimeInterval = 5.0; - _cycleTrundleRegard.bannerImageViewContentMode = UIViewContentModeScaleAspectFill; - _cycleTrundleRegard.placeholderImage = [UIIndicateConstant defalutOriflammeDepapossessor]; - } - return _cycleTrundleRegard; -} - - -@end diff --git a/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceDisportDispossessTabulationRegardElement.h b/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceDisportDispossessTabulationRegardElement.h deleted file mode 100644 index b4b246b9..00000000 --- a/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceDisportDispossessTabulationRegardElement.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YUMIStrangeResidenceDisportDispossessTabulationRegardElement.h -// YuMi -// -// Created by YuMi on 2022/10/8. -// - -#import -#import "CollectiveSpecificAbstractMatrix.h" - -@protocol FBCStrangeResidencePlayEmptyTabulationViweElementRepresendtation - --(void)prohibitipossessElementConcludeCompetitionPerformance; - -@end - - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIStrangeResidenceDisportDispossessTabulationRegardElement : UITableViewCell -@property (nonatomic,assign) BOOL isClan; -@property (nonatomic,weak) id delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceDisportDispossessTabulationRegardElement.m b/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceDisportDispossessTabulationRegardElement.m deleted file mode 100644 index 36dd2901..00000000 --- a/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceDisportDispossessTabulationRegardElement.m +++ /dev/null @@ -1,125 +0,0 @@ -// -// YUMIStrangeResidenceDisportDispossessTabulationRegardElement.m -// YuMi -// -// Created by YuMi on 2022/10/8. -// - -#import "YUMIStrangeResidenceDisportDispossessTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" - -@interface YUMIStrangeResidenceDisportDispossessTabulationRegardElement () - -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) UIImageView *accelerateIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UIButton *concludeCompetitionBtuton; -@end - -@implementation YUMIStrangeResidenceDisportDispossessTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.selectionStyle = UITableViewCellSelectionStyleNone; - self.backgroundColor = [UIColor clearColor]; - [self.contentView addSubview:self.encourageIndicateRegard]; - [self.encourageIndicateRegard addSubview:self.accelerateIndicateRegard]; - [self.encourageIndicateRegard addSubview:self.titleLabel]; - [self.contentView addSubview:self.concludeCompetitionBtuton]; -} - -- (void)initChildLyRestrictions { - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.left.mas_equalTo(self.contentView).inset(15); - make.top.bottom.mas_equalTo(self.contentView); - }]; - - [self.accelerateIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(48, 48)); - make.left.mas_equalTo(self.encourageIndicateRegard).offset(12); - make.centerY.mas_equalTo(self.encourageIndicateRegard); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.accelerateIndicateRegard.mas_right).offset(15); - make.right.equalTo(self.encourageIndicateRegard.mas_right).mas_offset(-12); - make.centerY.mas_equalTo(self.encourageIndicateRegard); - }]; - [self.concludeCompetitionBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-11); - make.width.mas_equalTo(120); - make.top.bottom.equalTo(self.contentView); - }]; -} --(void)concludeCompetitionPerformance{ - if(self.delegate && [self.delegate respondsToSelector:@selector(prohibitipossessElementConcludeCompetitionPerformance)]){ - [self.delegate prohibitipossessElementConcludeCompetitionPerformance]; - } -} - --(void)setIsClan:(BOOL)isClan{ - _isClan = isClan; - if(_isClan == NO){ - _concludeCompetitionBtuton.hidden = NO; - [self.encourageIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-141); - }]; - return; - } - _concludeCompetitionBtuton.hidden = YES; - [self.encourageIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-15); - }]; -} -#pragma mark - Getters And Setters - -- (UIImageView *)accelerateIndicateRegard { - if (!_accelerateIndicateRegard) { - _accelerateIndicateRegard = [[UIImageView alloc] init]; - _accelerateIndicateRegard.userInteractionEnabled = YES; - _accelerateIndicateRegard.image = [UIImage imageNamed:@"home_play_create_room"]; - } - return _accelerateIndicateRegard; -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor colorAboutHexBWSttr:@"#E7D7FC"], [DJDKMIMOMColor colorAboutHexBWSttr:@"#D7F8FD"]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)]; - _encourageIndicateRegard.layer.masksToBounds = YES; - _encourageIndicateRegard.layer.cornerRadius = 10; - _encourageIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _encourageIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:15]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleLabel.numberOfLines = 0; - _titleLabel.text = YMLocalizedString(@"YUMI_New_Home_Play_Empty_Table_View_Cell_0"); - } - return _titleLabel; -} -- (UIButton *)concludeCompetitionBtuton{ - if (!_concludeCompetitionBtuton){ - _concludeCompetitionBtuton = [UIButton new]; - [_concludeCompetitionBtuton setBackgroundImage:[UIImage imageNamed:@"home_play_game"] forState:UIControlStateNormal]; - [_concludeCompetitionBtuton addTarget:self action:@selector(concludeCompetitionPerformance) forControlEvents:UIControlEventTouchUpInside]; - _concludeCompetitionBtuton.hidden = YES; - } - return _concludeCompetitionBtuton; -} -@end diff --git a/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceDisportProvisionAssembletionRegardElement.h b/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceDisportProvisionAssembletionRegardElement.h deleted file mode 100644 index 14a72f85..00000000 --- a/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceDisportProvisionAssembletionRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIStrangeResidenceDisportProvisionAssembletionRegardElement.h -// YuMi -// -// Created by YuMi on 2022/10/8. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ResidenceDisportChamberMatrix; -@interface YUMIStrangeResidenceDisportProvisionAssembletionRegardElement : UICollectionViewCell -@property (nonatomic,strong) ResidenceDisportChamberMatrix *roomInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceDisportProvisionAssembletionRegardElement.m b/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceDisportProvisionAssembletionRegardElement.m deleted file mode 100644 index c2d315e8..00000000 --- a/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceDisportProvisionAssembletionRegardElement.m +++ /dev/null @@ -1,78 +0,0 @@ -// -// YUMIStrangeResidenceDisportProvisionAssembletionRegardElement.m -// YuMi -// -// Created by YuMi on 2022/10/8. -// - -#import "YUMIStrangeResidenceDisportProvisionAssembletionRegardElement.h" -#import -#import "NetIndicateRegard.h" -#import "ResidenceDisportChamberMatrix.h" - -@interface YUMIStrangeResidenceDisportProvisionAssembletionRegardElement () -@property (nonatomic,strong) UIImageView *borderIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@end - -@implementation YUMIStrangeResidenceDisportProvisionAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.contentView.backgroundColor = [UIColor clearColor]; - [self.contentView addSubview:self.borderIndicateRegard]; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.borderIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.contentView); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(52, 52)); - make.center.mas_equalTo(self.borderIndicateRegard); - }]; -} - -#pragma mark - Getters And Setters -- (void)setRoomInfo:(ResidenceDisportChamberMatrix *)roomInfo { - _roomInfo = roomInfo; - if (_roomInfo != nil) { - self.intelligenceportraitIndicateRegard.imageUrl = _roomInfo.avatar; - self.borderIndicateRegard.image = _roomInfo.gender == GenderGenre_Male ? [UIImage imageNamed:@"yumi_main_play_male_border"] : [UIImage imageNamed:@"yumi_main_play_female_border"]; - } -} - -- (UIImageView *)borderIndicateRegard { - if (!_borderIndicateRegard) { - _borderIndicateRegard = [[UIImageView alloc] init]; - _borderIndicateRegard.userInteractionEnabled = YES; - } - return _borderIndicateRegard; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 52/2; - _intelligenceportraitIndicateRegard.layer.borderColor = [UIColor whiteColor].CGColor; - _intelligenceportraitIndicateRegard.layer.borderWidth = 1; - } - return _intelligenceportraitIndicateRegard; -} - -@end diff --git a/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceDisportTabulationRegardElement.h b/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceDisportTabulationRegardElement.h deleted file mode 100644 index f69b062b..00000000 --- a/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceDisportTabulationRegardElement.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// YUMIStrangeResidenceDisportTabulationRegardElement.h -// YuMi -// -// Created by YuMi on 2022/10/8. -// - -#import -#import "CollectiveSpecificAbstractMatrix.h" - -NS_ASSUME_NONNULL_BEGIN -@class ResidenceDisportChamberMatrix, YUMIStrangeResidenceDisportTabulationRegardElement; -@protocol FBCStrangeResidencePlayTabulationViweElementRepresendtation - -- (void)yUMIStrangeResidenceDisportTarbsultowardsionViweElement:(YUMIStrangeResidenceDisportTabulationRegardElement *)cell didSelectItem:(ResidenceDisportChamberMatrix *)info; --(void)concludeCompetitionPerformance; -@end - -@interface YUMIStrangeResidenceDisportTabulationRegardElement : UITableViewCell - -@property (nonatomic,strong) NSArray *disportChamberStatement; - -@property (nonatomic,assign) BOOL isClan; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceDisportTabulationRegardElement.m b/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceDisportTabulationRegardElement.m deleted file mode 100644 index abda0761..00000000 --- a/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceDisportTabulationRegardElement.m +++ /dev/null @@ -1,124 +0,0 @@ -// -// YUMIStrangeResidenceDisportTabulationRegardElement.m -// YuMi -// -// Created by YuMi on 2022/10/8. -// - -#import "YUMIStrangeResidenceDisportTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "NSArray+Safe.h" -#import "YUMIStrangeResidenceDisportProvisionAssembletionRegardElement.h" - -@interface YUMIStrangeResidenceDisportTabulationRegardElement () -@property (nonatomic,strong) UICollectionView *collectionView; -@property (nonatomic,strong) UIButton *concludeCompetitionBtuton; - -@end -@implementation YUMIStrangeResidenceDisportTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} --(void)setIsClan:(BOOL)isClan{ - _isClan = isClan; - if(_isClan == NO){ - _concludeCompetitionBtuton.hidden = NO; - [_collectionView mas_updateConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-141); - }]; - return; - } - _concludeCompetitionBtuton.hidden = YES; - [_collectionView mas_updateConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(0); - }]; - -} - --(void)concludeCompetitionPerformance{ - if(self.delegate && [self.delegate respondsToSelector:@selector(concludeCompetitionPerformance)]){ - [self.delegate concludeCompetitionPerformance]; - } -} -#pragma mark - Private Method -- (void)initSubViews { - self.selectionStyle = UITableViewCellSelectionStyleNone; - self.backgroundColor = [UIColor clearColor]; - [self.contentView addSubview:self.collectionView]; - [self.contentView addSubview:self.concludeCompetitionBtuton]; -} - -- (void)initChildLyRestrictions { - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.top.bottom.mas_equalTo(self.contentView); - make.right.mas_equalTo(-136); - }]; - [self.concludeCompetitionBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-11); - make.width.mas_equalTo(120); - make.top.bottom.equalTo(self.collectionView); - }]; -} - --(void)setDisportChamberStatement:(NSArray *)disportChamberStatement{ - _disportChamberStatement = disportChamberStatement; - [self.collectionView reloadData]; -} -#pragma mark - UICollectionViewDelegate, UICollectionViewDataSource -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - - return self.disportChamberStatement.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMIStrangeResidenceDisportProvisionAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIStrangeResidenceDisportProvisionAssembletionRegardElement class]) forIndexPath:indexPath]; - - cell.roomInfo = [self.disportChamberStatement secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - [collectionView deselectItemAtIndexPath:indexPath animated:YES]; - if (self.disportChamberStatement.count > 0) { - ResidenceDisportChamberMatrix * roomInfo = [self.disportChamberStatement secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIStrangeResidenceDisportTarbsultowardsionViweElement:didSelectItem:)]) { - [self.delegate yUMIStrangeResidenceDisportTarbsultowardsionViweElement:self didSelectItem:roomInfo]; - } - } -} - - -#pragma mark - Getters And Setters -- (UICollectionView *)collectionView{ - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.itemSize = CGSizeMake(63, 63); - layout.sectionInset = UIEdgeInsetsMake(0, 15, 0, 15); - layout.minimumLineSpacing = 15; - layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.backgroundColor = [UIColor clearColor]; - [_collectionView registerClass:[YUMIStrangeResidenceDisportProvisionAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIStrangeResidenceDisportProvisionAssembletionRegardElement class])]; - } - return _collectionView; -} -- (UIButton *)concludeCompetitionBtuton{ - if (!_concludeCompetitionBtuton){ - _concludeCompetitionBtuton = [UIButton new]; - [_concludeCompetitionBtuton setBackgroundImage:[UIImage imageNamed:@"home_play_game"] forState:UIControlStateNormal]; - [_concludeCompetitionBtuton addTarget:self action:@selector(concludeCompetitionPerformance) forControlEvents:UIControlEventTouchUpInside]; - _concludeCompetitionBtuton.hidden = YES; - } - return _concludeCompetitionBtuton; -} - -@end diff --git a/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceEncourageTabulationRegardElement.h b/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceEncourageTabulationRegardElement.h deleted file mode 100644 index ca493d51..00000000 --- a/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceEncourageTabulationRegardElement.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YUMIStrangeResidenceEncourageTabulationRegardElement.h -// YuMi -// -// Created by YuMi on 2022/10/8. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIStrangeResidenceEncourageTabulationRegardElement, ResidenceEncourageChamberMatrix; -@protocol FBCStrangeResidenceEncourageTabulationViweElementRepresendtation - -- (void)yUMIStrangeResidenceEncourageTarbsultowardsionViweElement:(YUMIStrangeResidenceEncourageTabulationRegardElement *)view didSelectItem:(ResidenceEncourageChamberMatrix *)info; - -@end - -@interface YUMIStrangeResidenceEncourageTabulationRegardElement : UITableViewCell - -- (void)setEncouragesSttowardsement:(NSArray *)recommends; - - -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceEncourageTabulationRegardElement.m b/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceEncourageTabulationRegardElement.m deleted file mode 100644 index ab9e4055..00000000 --- a/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceEncourageTabulationRegardElement.m +++ /dev/null @@ -1,246 +0,0 @@ -// -// YUMIStrangeResidenceEncourageTabulationRegardElement.m -// YuMi -// -// Created by YuMi on 2022/10/8. -// - -#import "YUMIStrangeResidenceEncourageTabulationRegardElement.h" -#import -#import -#import "NetIndicateRegard.h" -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "NSArray+Safe.h" -#import "ResidenceEncourageChamberMatrix.h" - -@interface YUMICycleScrollRegardElement : GKCycleScrollViewCell -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *coupleIndicateRegard; -@property (nonatomic,strong) UILabel *coupleChampionRegard; - -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,assign) BOOL isCimportRegard; -@property (nonatomic,strong) ResidenceEncourageChamberMatrix *encourageChamberAbstract; - -@end - -@implementation YUMICycleScrollRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - - -#pragma mark - Private Method -- (void)initSubViews { - self.coverView.hidden = YES; - self.backgroundColor = [UIColor clearColor]; - [self addSubview:self.intelligenceportraitIndicateRegard]; - [self addSubview:self.coupleIndicateRegard]; - [self.coupleIndicateRegard addSubview:self.coupleChampionRegard]; - [self addSubview:self.titleLabel]; - -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(10 * kScreenScale); - make.width.height.mas_equalTo(123 * kScreenScale); - }]; - - [self.coupleIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(18 * kScreenScale); - make.width.mas_greaterThanOrEqualTo(10); - make.left.top.mas_equalTo(self.intelligenceportraitIndicateRegard); - }]; - - [self.coupleChampionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(7 * kScreenScale); - make.right.mas_equalTo(-7 * kScreenScale); - make.top.bottom.equalTo(self.coupleIndicateRegard); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_bottom).offset(10 * kScreenScale); - }]; -} -- (void)setIsCimportRegard:(BOOL)isCimportRegard{ - _isCimportRegard = isCimportRegard; - if(_isCimportRegard == YES){ - [self.intelligenceportraitIndicateRegard.superview layoutIfNeeded]; - [UIView animateWithDuration:0.5 animations:^{ - - [self.intelligenceportraitIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(123 * kScreenScale); - make.top.mas_equalTo(10 * kScreenScale); - }]; - self.intelligenceportraitIndicateRegard.layer.cornerRadius = 11; - - self.titleLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightMedium]; - [self.intelligenceportraitIndicateRegard.superview layoutIfNeeded]; - }]; - - return; - } - [self.intelligenceportraitIndicateRegard.superview layoutIfNeeded]; - [UIView animateWithDuration:0.5 animations:^{ - self.intelligenceportraitIndicateRegard.layer.cornerRadius = 8; - [self.intelligenceportraitIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(100 * kScreenScale); - make.top.mas_equalTo(22 * kScreenScale); - }]; - self.titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - [self.intelligenceportraitIndicateRegard.superview layoutIfNeeded]; - }]; - -} -#pragma mark - Getters And Setters -- (void)setEncourageChamberAbstract:(ResidenceEncourageChamberMatrix *)encourageChamberAbstract { - _encourageChamberAbstract = encourageChamberAbstract; - if (_encourageChamberAbstract) { - self.intelligenceportraitIndicateRegard.imageUrl = _encourageChamberAbstract.avatar; - self.titleLabel.text = _encourageChamberAbstract.title; - self.coupleChampionRegard.hidden = YES; - self.coupleIndicateRegard.hidden = YES; - if(_encourageChamberAbstract.iconContent.length > 0){ - self.coupleChampionRegard.text = _encourageChamberAbstract.iconContent; - self.coupleChampionRegard.hidden = NO; - self.coupleIndicateRegard.hidden = NO; - } - - } -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreMonentsPhoto; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 11; - _intelligenceportraitIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _intelligenceportraitIndicateRegard; -} --(NetIndicateRegard *)coupleIndicateRegard{ - if (!_coupleIndicateRegard){ - _coupleIndicateRegard = [[NetIndicateRegard alloc]init]; - _coupleIndicateRegard.image = [UIImage imageNamed:@"monents_common_room_tag"]; - - } - return _coupleIndicateRegard; -} -- (UILabel *)coupleChampionRegard{ - if (!_coupleChampionRegard){ - _coupleChampionRegard = [UILabel new]; - _coupleChampionRegard.font = [UIFont systemFontOfSize:11 weight:UIFontWeightMedium]; - _coupleChampionRegard.textColor = [UIColor whiteColor]; - } - return _coupleChampionRegard; -} -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} - -@end - - -@interface YUMIStrangeResidenceEncourageTabulationRegardElement () - -@property (nonatomic,strong) GKCycleScrollView *scrollView; -@property (nonatomic,strong) NSArray *recommends; -@end - -@implementation YUMIStrangeResidenceEncourageTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.selectionStyle = UITableViewCellSelectionStyleNone; - self.backgroundColor = [UIColor clearColor]; - self.scrollView = [[GKCycleScrollView alloc] initWithFrame:CGRectZero]; - self.scrollView.delegate = self; - self.scrollView.leftRightMargin = 0.0f; - self.scrollView.topBottomMargin = 0.0f; - self.scrollView.dataSource = self; - [self.contentView addSubview:self.scrollView]; -} - -- (void)initChildLyRestrictions { - [self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(15 * kScreenScale); - make.top.mas_equalTo(self.contentView); - make.bottom.mas_equalTo(self.contentView); - }]; -} -- (NSInteger)numberOfCellsInCycleScrollView:(GKCycleScrollView *)cycleScrollView { - return self.recommends.count; -} - -- (GKCycleScrollViewCell *)cycleScrollView:(GKCycleScrollView *)cycleScrollView cellForViewAtIndex:(NSInteger)index { - YUMICycleScrollRegardElement * cell = cycleScrollView.dequeueReusableCell; - if (!cell) { - cell = [[YUMICycleScrollRegardElement alloc] init]; - } - - ResidenceEncourageChamberMatrix * info = [self.recommends secureGroalTowardsIndictowardsrix1:index]; - cell.encourageChamberAbstract = info; - cell.isCimportRegard = index == self.scrollView.currentSelectIndex; - return cell; -} -- (void)cycleScrollView:(GKCycleScrollView *)cycleScrollView didScrollCellToIndex:(NSInteger)index{ - - ResidenceEncourageChamberMatrix * info = [self.recommends secureGroalTowardsIndictowardsrix1:index]; - NSLog(@"%@",info.title); - - UIView *view = cycleScrollView.subviews[0]; - for (YUMICycleScrollRegardElement * cell in view.subviews) { - cell.isCimportRegard = [cell.encourageChamberAbstract.title isEqual:info.title]; - } - -} -- (void)cycleScrollView:(GKCycleScrollView *)cycleScrollView didSelectCellAtIndex:(NSInteger)index { - if(self.recommends.count > 0 && index < self.recommends.count) { - ResidenceEncourageChamberMatrix * info = [self.recommends secureGroalTowardsIndictowardsrix1:index]; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIStrangeResidenceEncourageTarbsultowardsionViweElement:didSelectItem:)]) { - [self.delegate yUMIStrangeResidenceEncourageTarbsultowardsionViweElement:self didSelectItem:info]; - } - } -} - -- (CGSize)sizeForCellInCycleScrollView:(GKCycleScrollView *)cycleScrollView { - return CGSizeMake(123 * kScreenScale, 160 * kScreenScale); -} -#pragma mark - Getters And Setters -- (void)setEncouragesSttowardsement:(NSArray *)recommends{ - if(recommends.count == self.recommends.count){ - return; - } - self.recommends = recommends; - [self.scrollView reloadData]; -} - - - -@end diff --git a/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceParatiesTabulationRegardElement.h b/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceParatiesTabulationRegardElement.h deleted file mode 100644 index 2b7bb03a..00000000 --- a/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceParatiesTabulationRegardElement.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YUMIStrangeResidenceParatiesTabulationRegardElement.h -// YuMi -// -// Created by YuMi on 2022/10/8. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ResidenceDisportChamberMatrix, ResidenceEncourageChamberMatrix; -@interface YUMIStrangeResidenceParatiesTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) ResidenceDisportChamberMatrix *roomInfo; - -@property (nonatomic,strong) ResidenceEncourageChamberMatrix *chamberAbstract1; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceParatiesTabulationRegardElement.m b/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceParatiesTabulationRegardElement.m deleted file mode 100644 index fb8c639f..00000000 --- a/YuMi/Modules/YMNewHome/View/Cell/YUMIStrangeResidenceParatiesTabulationRegardElement.m +++ /dev/null @@ -1,225 +0,0 @@ -// -// YUMIStrangeResidenceParatiesTabulationRegardElement.m -// YuMi -// -// Created by YuMi on 2022/10/8. -// - -#import "YUMIStrangeResidenceParatiesTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "ResidenceDisportChamberMatrix.h" -#import "ResidenceEncourageChamberMatrix.h" - - - - -@interface YUMIStrangeResidenceParatiesTabulationRegardElement () -@property (nonatomic,strong) UIImageView *crossCombateIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UIView *backgroundRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) NetIndicateRegard *coupleIndicateRegard; -@property (nonatomic,strong) UILabel *idSequencignation; -@property (nonatomic,strong) UIImageView *digitalIndicateRegard; -@property (nonatomic,strong) UILabel *numberLabel; - -@end - -@implementation YUMIStrangeResidenceParatiesTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.selectionStyle = UITableViewCellSelectionStyleNone; - self.backgroundColor = [UIColor clearColor]; - [self.contentView addSubview:self.backgroundRegard]; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.crossCombateIndicateRegard]; - - [self.backgroundRegard addSubview:self.titleLabel]; - [self.backgroundRegard addSubview:self.coupleIndicateRegard]; - [self.backgroundRegard addSubview:self.idSequencignation]; - [self.backgroundRegard addSubview:self.numberLabel]; - [self.backgroundRegard addSubview:self.digitalIndicateRegard]; - -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(74, 74)); - make.centerY.mas_equalTo(self.backgroundRegard); - make.left.mas_equalTo(self.contentView).offset(15); - }]; - - [self.crossCombateIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.intelligenceportraitIndicateRegard); - }]; - - [self.backgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.contentView).offset(36); - make.right.mas_equalTo(self.contentView).offset(-15); - make.top.mas_equalTo(self.contentView); - make.bottom.mas_equalTo(self.contentView).offset(-12); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.backgroundRegard).offset(65); - make.bottom.mas_equalTo(self.backgroundRegard.mas_centerY).offset(-8); - make.right.lessThanOrEqualTo(self.digitalIndicateRegard.mas_left).offset(-10); - }]; - - [self.coupleIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(32, 15)); - make.left.mas_equalTo(self.titleLabel); - make.top.mas_equalTo(self.backgroundRegard.mas_centerY).offset(8); - }]; - - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(65); - make.centerY.mas_equalTo(self.coupleIndicateRegard); - }]; - - [self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.backgroundRegard).offset(-12); - make.centerY.mas_equalTo(self.titleLabel); - }]; - - [self.digitalIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(18, 18)); - make.right.mas_equalTo(self.numberLabel.mas_left).offset(-2); - make.centerY.mas_equalTo(self.numberLabel); - }]; -} - -#pragma mark - Getters And Setters -- (void)setRoomInfo:(ResidenceDisportChamberMatrix *)roomInfo { - _roomInfo = roomInfo; - if (_roomInfo) { - self.crossCombateIndicateRegard.hidden = !_roomInfo.crossPking; - self.intelligenceportraitIndicateRegard.imageUrl = _roomInfo.avatar; - self.titleLabel.text = _roomInfo.title; - if (_roomInfo.tagPict.length > 0){ - self.coupleIndicateRegard.imageUrl = _roomInfo.tagPict; - self.coupleIndicateRegard.hidden = NO; - [self.idSequencignation mas_updateConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(106); - }]; - }else{ - self.coupleIndicateRegard.hidden = YES; - [self.idSequencignation mas_updateConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(65); - }]; - } - - self.idSequencignation.text = [NSString stringWithFormat:@"ID:%@", _roomInfo.erbanNo]; - self.numberLabel.text = [NSString stringWithFormat:@"%ld", _roomInfo.onlineNum]; - } -} - -- (void)setChamberAbstract1:(ResidenceEncourageChamberMatrix *)chamberAbstract1 { - _chamberAbstract1 = chamberAbstract1; - if (_chamberAbstract1) { - self.crossCombateIndicateRegard.hidden = !_chamberAbstract1.crossPking; - self.intelligenceportraitIndicateRegard.imageUrl = _chamberAbstract1.avatar; - self.titleLabel.text = _chamberAbstract1.title; - if (_chamberAbstract1.tagPict.length > 0){ - self.coupleIndicateRegard.imageUrl = _chamberAbstract1.tagPict; - self.coupleIndicateRegard.hidden = NO; - [self.idSequencignation mas_updateConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(106); - }]; - }else{ - self.coupleIndicateRegard.hidden = YES; - [self.idSequencignation mas_updateConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(65); - }]; - } - self.idSequencignation.text = [NSString stringWithFormat:@"ID:%@", _chamberAbstract1.erbanNo]; - self.numberLabel.text = [NSString stringWithFormat:@"%ld", _chamberAbstract1.onlineNum]; - } -} - -- (UIImageView *)crossCombateIndicateRegard { - if (!_crossCombateIndicateRegard) { - _crossCombateIndicateRegard = [[UIImageView alloc] init]; - _crossCombateIndicateRegard.userInteractionEnabled = YES; - _crossCombateIndicateRegard.image = [UIImage imageNamed:@"home_cross_pk"]; - } - return _crossCombateIndicateRegard; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 74/2; - } - return _intelligenceportraitIndicateRegard; -} - -- (UIView *)backgroundRegard { - if (!_backgroundRegard) { - _backgroundRegard = [[UIView alloc] init]; - _backgroundRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _backgroundRegard.layer.masksToBounds = YES; - _backgroundRegard.layer.cornerRadius = 14; - } - return _backgroundRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:15]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -- (NetIndicateRegard *)coupleIndicateRegard { - if (!_coupleIndicateRegard) { - _coupleIndicateRegard = [[NetIndicateRegard alloc] init]; - } - return _coupleIndicateRegard; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.font = [UIFont systemFontOfSize:13]; - _idSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _idSequencignation; -} - -- (UIImageView *)digitalIndicateRegard { - if (!_digitalIndicateRegard) { - _digitalIndicateRegard = [[UIImageView alloc] init]; - _digitalIndicateRegard.userInteractionEnabled = YES; - _digitalIndicateRegard.image = [UIImage imageNamed:@"yumi_main_party_number"]; - } - return _digitalIndicateRegard; -} - -- (UILabel *)numberLabel { - if (!_numberLabel) { - _numberLabel = [[UILabel alloc] init]; - _numberLabel.font = [UIFont systemFontOfSize:13]; - _numberLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _numberLabel; -} - -@end diff --git a/YuMi/Modules/YMNewHome/View/CustomView/XPHomeUserView.h b/YuMi/Modules/YMNewHome/View/CustomView/XPHomeUserView.h new file mode 100644 index 00000000..f4947d33 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/CustomView/XPHomeUserView.h @@ -0,0 +1,28 @@ +// +// YMHomeUserView.h +// YUMI +// +// Created by XY on 2023/2/17. +// + +#import + +@class HomeRecommendRoomModel; + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPHomeUserViewDelegate +/// 点击事件 +- (void)userViewClickAction:(HomeRecommendRoomModel *)model; + +@end + +@interface XPHomeUserView : UIControl + +@property (nonatomic, weak) id delegate; +/// 房间模型 +@property (nonatomic, strong) HomeRecommendRoomModel *roomModel; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/CustomView/XPHomeUserView.m b/YuMi/Modules/YMNewHome/View/CustomView/XPHomeUserView.m new file mode 100644 index 00000000..ddf68313 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/CustomView/XPHomeUserView.m @@ -0,0 +1,123 @@ +// +// YMHomeUserView.m +// YUMI +// +// Created by XY on 2023/2/17. +// + +#import "XPHomeUserView.h" +#import +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" +/// M +#import "HomeRecommendRoomModel.h" + +@interface XPHomeUserView() + +/// 头像 +@property (nonatomic, strong) NetImageView *avatarImageView; +/// 昵称 +@property (nonatomic, strong) UILabel *nicknameLabel; +/// 简介 +@property (nonatomic, strong) UILabel *introduceLabel; +/// 环形遮罩 +@property (nonatomic, strong) UIImageView *circleView; + +@end + +@implementation XPHomeUserView + +- (void)setRoomModel:(HomeRecommendRoomModel *)roomModel { + _roomModel = roomModel; + + self.nicknameLabel.text = roomModel.nick; + self.introduceLabel.text = roomModel.roomDesc; + self.avatarImageView.imageUrl = roomModel.avatar; +} + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self createUI]; + [self addTarget:self action:@selector(userViewClicked) forControlEvents:UIControlEventTouchUpInside]; + } + return self; +} + +- (void)createUI { + [self addSubview:self.avatarImageView]; + [self addSubview:self.nicknameLabel]; + [self addSubview:self.introduceLabel]; + [self addSubview:self.circleView]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(0); + make.centerX.mas_equalTo(self); + make.width.height.mas_equalTo(70); + }]; + [self.nicknameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.avatarImageView.mas_bottom).offset(15); + make.centerX.mas_equalTo(self); + make.left.mas_greaterThanOrEqualTo(2); + make.right.mas_lessThanOrEqualTo(-2); + }]; + [self.introduceLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.nicknameLabel.mas_bottom).offset(2); + make.centerX.mas_equalTo(self); + make.left.mas_greaterThanOrEqualTo(2); + make.right.mas_lessThanOrEqualTo(-2); + }]; + [self.circleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(0); + make.top.mas_equalTo(self.avatarImageView); + make.bottom.mas_equalTo(self.avatarImageView); + }]; +} + +/// 点击事件 +- (void)userViewClicked { + if (self.delegate && [self.delegate respondsToSelector:@selector(userViewClickAction:)]) { + [self.delegate userViewClickAction:self.roomModel]; + } +} + +#pragma mark - 懒加载 + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + _avatarImageView = [[NetImageView alloc] init]; + _avatarImageView.contentMode = UIViewContentModeScaleAspectFill; + _avatarImageView.layer.cornerRadius = 35; + _avatarImageView.clipsToBounds = YES; + } + return _avatarImageView; +} + +- (UILabel *)nicknameLabel { + if (!_nicknameLabel) { + _nicknameLabel = [[UILabel alloc] init]; + _nicknameLabel.textColor = [DJDKMIMOMColor appMainColor]; + _nicknameLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + } + return _nicknameLabel; +} + +- (UILabel *)introduceLabel { + if (!_introduceLabel) { + _introduceLabel = [[UILabel alloc] init]; + _introduceLabel.textColor = [DJDKMIMOMColor appMainColor]; + _introduceLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + } + return _introduceLabel; +} + +- (UIImageView *)circleView { + if (!_circleView) { + _circleView = [[UIImageView alloc] init]; + _circleView.contentMode = UIViewContentModeScaleAspectFit; + _circleView.image = [UIImage imageNamed:@"home_user_circle"]; + } + return _circleView; +} + +@end diff --git a/YuMi/Modules/YMNewHome/View/CustomView/XPNewHomeNavView.h b/YuMi/Modules/YMNewHome/View/CustomView/XPNewHomeNavView.h new file mode 100644 index 00000000..38b25771 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/CustomView/XPNewHomeNavView.h @@ -0,0 +1,29 @@ +// +// XPNewHomeNavView.h +// YuMi +// +// Created by YuMi on 2022/10/8. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPNewHomeNavView; +@protocol XPNewHomeNavViewDelegate + +///点击了排行榜 +- (void)xPNewHomeNavView:(XPNewHomeNavView *)view didClickRank:(UIButton *)sender; + +///点击了开房 +- (void)xPNewHomeNavView:(XPNewHomeNavView *)view didClickOpenRoom:(UIButton *)sender; + +///点击了搜索 +- (void)xPNewHomeNavView:(XPNewHomeNavView *)view didClickSearch:(UIView *)sender; +@end + +@interface XPNewHomeNavView : UIView +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/CustomView/XPNewHomeNavView.m b/YuMi/Modules/YMNewHome/View/CustomView/XPNewHomeNavView.m new file mode 100644 index 00000000..2940cb8d --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/CustomView/XPNewHomeNavView.m @@ -0,0 +1,152 @@ +// +// XPNewHomeNavView.m +// YuMi +// +// Created by YuMi on 2022/10/8. +// + +#import "XPNewHomeNavView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" + + +@interface XPNewHomeNavView () +@property (nonatomic,strong) UIView *searchView; +@property (nonatomic,strong) UIImageView *searchImageView; +@property (nonatomic,strong) UILabel *searchLabel; +@property (nonatomic,strong) UIButton *rankButton; +@property (nonatomic,strong) UIButton *opeRoomButton; +@end + +@implementation XPNewHomeNavView + + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.searchView]; + [self addSubview:self.opeRoomButton]; + [self addSubview:self.rankButton]; + + [self.searchView addSubview:self.searchImageView]; + [self.searchView addSubview:self.searchLabel]; +} + +- (void)initSubViewConstraints { + + [self.searchView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self).offset(15); + make.height.mas_equalTo(32); + make.top.mas_equalTo(self).offset(statusbarHeight + 6); + make.right.mas_equalTo(self.opeRoomButton.mas_left).offset(-36); + }]; + + [self.searchImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(22); + make.height.mas_equalTo(22); + make.left.mas_equalTo(self.searchView).offset(13); + make.centerY.mas_equalTo(self.searchView); + }]; + + [self.searchLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.searchImageView.mas_right).offset(2); + make.centerY.mas_equalTo(self.searchView); + }]; + + [self.rankButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(30); + make.height.mas_equalTo(30); + make.centerY.mas_equalTo(self.searchView); + make.right.mas_equalTo(self).offset(-15); + }]; + + [self.opeRoomButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.centerY.mas_equalTo(self.rankButton); + make.right.mas_equalTo(self.rankButton.mas_left).offset(-12); + }]; +} + +#pragma mark - Event Response +- (void)openRoomButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPNewHomeNavView:didClickOpenRoom:)]) { + [self.delegate xPNewHomeNavView:self didClickOpenRoom:sender]; + } +} + +- (void)rankButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPNewHomeNavView:didClickRank:)]) { + [self.delegate xPNewHomeNavView:self didClickRank:sender]; + } +} + +- (void)tapRecognizer { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPNewHomeNavView:didClickSearch:)]) { + [self.delegate xPNewHomeNavView:self didClickSearch:self.searchView]; + } +} + +#pragma mark - Getters And Setters +- (UIView *)searchView { + if (!_searchView) { + _searchView = [[UIView alloc] init]; + _searchView.backgroundColor = [UIColor colorWithWhite:1 alpha:0.5]; + _searchView.layer.cornerRadius = 16; + _searchView.layer.masksToBounds = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognizer)]; + [_searchView addGestureRecognizer:tap]; + } + return _searchView; +} + +- (UIImageView *)searchImageView { + if (!_searchImageView) { + _searchImageView = [[UIImageView alloc] init]; + _searchImageView.userInteractionEnabled = YES; + _searchImageView.image = [UIImage imageNamed:@"home_nav_search"]; + } + return _searchImageView; +} + +- (UILabel *)searchLabel { + if (!_searchLabel) { + _searchLabel = [[UILabel alloc] init]; + _searchLabel.font = [UIFont systemFontOfSize:12]; + _searchLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _searchLabel.text = YMLocalizedString(@"XPNewHomeNavView0"); + } + return _searchLabel; +} + +- (UIButton *)opeRoomButton { + if (!_opeRoomButton) { + _opeRoomButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_opeRoomButton setImage:[UIImage imageNamed:@"home_nav_open_room"] forState:UIControlStateNormal]; + [_opeRoomButton setImage:[UIImage imageNamed:@"home_nav_open_room"] forState:UIControlStateSelected]; + [_opeRoomButton addTarget:self action:@selector(openRoomButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _opeRoomButton; +} + +- (UIButton *)rankButton { + if (!_rankButton) { + _rankButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_rankButton setImage:[UIImage imageNamed:@"home_nav_rank"] forState:UIControlStateNormal]; + [_rankButton setImage:[UIImage imageNamed:@"home_nav_rank"] forState:UIControlStateSelected]; + [_rankButton addTarget:self action:@selector(rankButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _rankButton; +} + + +@end diff --git a/YuMi/Modules/YMNewHome/View/CustomView/XPNoteView.h b/YuMi/Modules/YMNewHome/View/CustomView/XPNoteView.h new file mode 100644 index 00000000..b24bea4c --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/CustomView/XPNoteView.h @@ -0,0 +1,27 @@ +// +// YMNoteView.h +// YUMI +// +// Created by YUMI on 2021/11/29. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPNoteView : UIView + +///开始动画 +- (void)startAnimation; + +///结束动画 +- (void) stopAnimation; + +///柱子的宽度 +@property (assign, nonatomic) CGFloat pillarWidth; + +///柱子的颜色 +@property (strong, nonatomic) UIColor * pillarColor; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/CustomView/XPNoteView.m b/YuMi/Modules/YMNewHome/View/CustomView/XPNoteView.m new file mode 100644 index 00000000..f6113cd0 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/CustomView/XPNoteView.m @@ -0,0 +1,167 @@ +// +// YMNoteView.m +// YUMI +// +// Created by YUMI on 2021/11/29. +// + +#import "XPNoteView.h" + +@interface XPNoteView () { + BOOL _isAnimatoning; + NSArray *_animationLayers; +} + +@end + +@implementation XPNoteView + +#pragma mark - Life cycle +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self commonInit]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)coder +{ + self = [super initWithCoder:coder]; + if (self) { + [self commonInit]; + } + return self; +} + +- (void) commonInit { + + self.backgroundColor = [UIColor clearColor]; + self.pillarWidth = 2; + self.pillarColor = [UIColor redColor]; + _isAnimatoning = NO; + + //添加4个柱状Layer + NSMutableArray *animationLayers = [NSMutableArray arrayWithCapacity:3]; + for (int i = 0; i < 3; i ++) { + CAShapeLayer *layer = [[CAShapeLayer alloc] init]; + layer.fillColor = [UIColor clearColor].CGColor; + layer.strokeColor = self.pillarColor.CGColor; + layer.masksToBounds = YES; + layer.cornerRadius = 1; + [self.layer addSublayer:layer]; + + [animationLayers addObject:layer]; + } + _animationLayers = [NSArray arrayWithArray:animationLayers]; +} + +- (void) layoutSubviews { + [super layoutSubviews]; + + //bounds改变后需要重设Layer的Frame和动画的Path + for (CAShapeLayer *layer in _animationLayers) { + layer.frame = self.bounds; + } + [self updateAnimationPath]; +} + +#pragma mark - Update Path +- (void) updateAnimationPath { + + CGFloat height = CGRectGetHeight(self.frame); + NSArray * pillarHeighs = @[@(height * 0.8),@(height),@(height*0.7),@(height*0.9)]; + NSInteger pillarNumber = pillarHeighs.count; + NSInteger pillarWidth = self.pillarWidth; + NSInteger margin = (CGRectGetWidth(self.frame) - pillarNumber * pillarWidth) / (pillarNumber - 1); + + for (int i = 0; i < _animationLayers.count; i ++) { + CAShapeLayer *layer = _animationLayers[i]; + CGFloat pillarHeight = [pillarHeighs[i] floatValue]; + CGFloat x = pillarWidth + (pillarWidth + margin) * i; + CGPoint startPoint = CGPointMake(x, CGRectGetHeight(self.frame)); + CGPoint toPoint = CGPointMake(x, height - pillarHeight); + + UIBezierPath * path = [UIBezierPath bezierPath]; + [path moveToPoint:startPoint]; + [path addLineToPoint:toPoint]; + + layer.path = path.CGPath; + } + + if (_isAnimatoning) { + [self startAnimation]; + } +} + + +#pragma mark - Setter and getter +- (void)setPillarWidth:(CGFloat)pillarWidth { + if (_pillarWidth == pillarWidth) { + return; + } + _pillarWidth = pillarWidth; + for (CAShapeLayer * layer in _animationLayers) { + layer.lineWidth = self.pillarWidth; + layer.cornerRadius = self.pillarWidth/2; + } +} + + +- (void)setPillarColor:(UIColor *)pillarColor { + if (_pillarColor == pillarColor) { + return; + } + _pillarColor = pillarColor; + for (CAShapeLayer * layer in _animationLayers) { + layer.strokeColor = self.pillarColor.CGColor; + } +} + +#pragma mark - Public method +- (void) startAnimation { + + _isAnimatoning = YES; + + //先移除所有动画 + for (CAShapeLayer * layer in _animationLayers) { + [layer removeAllAnimations]; + } + + /*通过这些数值来调整动画效果*/ + //每个Layer动画时切换的高度值(0~1) + NSArray * values = @[ + @[@1.0, @0.5, @0.1, @0.4, @0.7, @0.9, @1.0], + @[@1.0, @0.8, @0.5, @0.1, @0.5, @0.7, @1.0], + @[@1.0, @0.7, @0.4, @0.4, @0.7, @0.9, @1.0] + ]; + //每个Layer的动画时长 + NSArray * dutions = @[@(0.8),@(0.9),@(1.0)]; + + int i = 0; + for (CAShapeLayer * layer in _animationLayers) { + CAKeyframeAnimation * animation = [CAKeyframeAnimation animationWithKeyPath:@"strokeEnd"]; + animation.values = values[i]; + animation.duration = [dutions[i] floatValue]; + animation.repeatCount = HUGE_VAL; + animation.removedOnCompletion = NO; + animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; + [layer addAnimation:animation forKey:@"ESSEQAnimation"]; + i ++; + } +} + +- (void) stopAnimation { + _isAnimatoning = NO; + //先移除所有动画 + for (CAShapeLayer * layer in _animationLayers) { + [layer removeAllAnimations]; + } +} + +- (void)dealloc{ + [self stopAnimation]; +} + +@end diff --git a/YuMi/Modules/YMNewHome/View/CustomView/YUMINoteRegard.h b/YuMi/Modules/YMNewHome/View/CustomView/YUMINoteRegard.h deleted file mode 100644 index e2506f55..00000000 --- a/YuMi/Modules/YMNewHome/View/CustomView/YUMINoteRegard.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMNoteView.h -// YUMI -// -// Created by YUMI on 2021/11/29. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMINoteRegard : UIView - -- (void)startAnimation; - -- (void) stopAnimation; - -@property (assign, nonatomic) CGFloat pillarExtents; - -@property (strong, nonatomic) UIColor * pillarPrettify; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/CustomView/YUMINoteRegard.m b/YuMi/Modules/YMNewHome/View/CustomView/YUMINoteRegard.m deleted file mode 100644 index 7e699d90..00000000 --- a/YuMi/Modules/YMNewHome/View/CustomView/YUMINoteRegard.m +++ /dev/null @@ -1,167 +0,0 @@ -// -// YMNoteView.m -// YUMI -// -// Created by YUMI on 2021/11/29. -// - -#import "YUMINoteRegard.h" - -@interface YUMINoteRegard () { - BOOL _isAnimatoning; - NSArray *_animationLayers; -} - -@end - -@implementation YUMINoteRegard - -#pragma mark - Life cycle -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self commonInit]; - } - return self; -} - -- (instancetype)initWithCoder:(NSCoder *)coder -{ - self = [super initWithCoder:coder]; - if (self) { - [self commonInit]; - } - return self; -} - -- (void) commonInit { - - self.backgroundColor = [UIColor clearColor]; - self.pillarExtents = 2; - self.pillarPrettify = [UIColor redColor]; - _isAnimatoning = NO; - - - NSMutableArray *animationLayers = [NSMutableArray arrayWithCapacity:3]; - for (int i = 0; i < 3; i ++) { - CAShapeLayer *layer = [[CAShapeLayer alloc] init]; - layer.fillColor = [UIColor clearColor].CGColor; - layer.strokeColor = self.pillarPrettify.CGColor; - layer.masksToBounds = YES; - layer.cornerRadius = 1; - [self.layer addSublayer:layer]; - - [animationLayers addObject:layer]; - } - _animationLayers = [NSArray arrayWithArray:animationLayers]; -} - -- (void) layoutSubviews { - [super layoutSubviews]; - - - for (CAShapeLayer *layer in _animationLayers) { - layer.frame = self.bounds; - } - [self refurbishBrectifynessRoute]; -} - -#pragma mark - Update Path -- (void) refurbishBrectifynessRoute { - - CGFloat height = CGRectGetHeight(self.frame); - NSArray * pillarHeighs = @[@(height * 0.8),@(height),@(height*0.7),@(height*0.9)]; - NSInteger pillarNumber = pillarHeighs.count; - NSInteger pillarExtents = self.pillarExtents; - NSInteger margin = (CGRectGetWidth(self.frame) - pillarNumber * pillarExtents) / (pillarNumber - 1); - - for (int i = 0; i < _animationLayers.count; i ++) { - CAShapeLayer *layer = _animationLayers[i]; - CGFloat pillarHeight = [pillarHeighs[i] floatValue]; - CGFloat x = pillarExtents + (pillarExtents + margin) * i; - CGPoint startPoint = CGPointMake(x, CGRectGetHeight(self.frame)); - CGPoint toPoint = CGPointMake(x, height - pillarHeight); - - UIBezierPath * path = [UIBezierPath bezierPath]; - [path moveToPoint:startPoint]; - [path addLineToPoint:toPoint]; - - layer.path = path.CGPath; - } - - if (_isAnimatoning) { - [self startAnimation]; - } -} - - -#pragma mark - Setter and getter -- (void)setPillarExtents:(CGFloat)pillarExtents { - if (_pillarExtents == pillarExtents) { - return; - } - _pillarExtents = pillarExtents; - for (CAShapeLayer * layer in _animationLayers) { - layer.lineWidth = self.pillarExtents; - layer.cornerRadius = self.pillarExtents/2; - } -} - - -- (void)setPillarPrettify:(UIColor *)pillarPrettify { - if (_pillarPrettify == pillarPrettify) { - return; - } - _pillarPrettify = pillarPrettify; - for (CAShapeLayer * layer in _animationLayers) { - layer.strokeColor = self.pillarPrettify.CGColor; - } -} - -#pragma mark - Public method -- (void) startAnimation { - - _isAnimatoning = YES; - - - for (CAShapeLayer * layer in _animationLayers) { - [layer removeAllAnimations]; - } - - - - NSArray * values = @[ - @[@1.0, @0.5, @0.1, @0.4, @0.7, @0.9, @1.0], - @[@1.0, @0.8, @0.5, @0.1, @0.5, @0.7, @1.0], - @[@1.0, @0.7, @0.4, @0.4, @0.7, @0.9, @1.0] - ]; - - NSArray * dutions = @[@(0.8),@(0.9),@(1.0)]; - - int i = 0; - for (CAShapeLayer * layer in _animationLayers) { - CAKeyframeAnimation * animation = [CAKeyframeAnimation animationWithKeyPath:@"strokeEnd"]; - animation.values = values[i]; - animation.duration = [dutions[i] floatValue]; - animation.repeatCount = HUGE_VAL; - animation.removedOnCompletion = NO; - animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; - [layer addAnimation:animation forKey:@"ESSEQAnimation"]; - i ++; - } -} - -- (void) stopAnimation { - _isAnimatoning = NO; - - for (CAShapeLayer * layer in _animationLayers) { - [layer removeAllAnimations]; - } -} - -- (void)dealloc{ - [self stopAnimation]; -} - -@end diff --git a/YuMi/Modules/YMNewHome/View/CustomView/YUMIResidenceConsumerRegard.h b/YuMi/Modules/YMNewHome/View/CustomView/YUMIResidenceConsumerRegard.h deleted file mode 100644 index a243f354..00000000 --- a/YuMi/Modules/YMNewHome/View/CustomView/YUMIResidenceConsumerRegard.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YMHomeUserView.h -// YUMI -// -// Created by XY on 2023/2/17. -// - -#import - -@class ResidenceEncourageChamberMatrix; - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCResidenceConsumerRegardRepresendtation -- (void)consumerRegardTicktackPerformance:(ResidenceEncourageChamberMatrix *)model; - -@end - -@interface YUMIResidenceConsumerRegard : UIControl - -@property (nonatomic, weak) id delegate; -@property (nonatomic, strong) ResidenceEncourageChamberMatrix *chamberMatrix; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/CustomView/YUMIResidenceConsumerRegard.m b/YuMi/Modules/YMNewHome/View/CustomView/YUMIResidenceConsumerRegard.m deleted file mode 100644 index 252338f7..00000000 --- a/YuMi/Modules/YMNewHome/View/CustomView/YUMIResidenceConsumerRegard.m +++ /dev/null @@ -1,117 +0,0 @@ -// -// YMHomeUserView.m -// YUMI -// -// Created by XY on 2023/2/17. -// - -#import "YUMIResidenceConsumerRegard.h" -#import -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "ResidenceEncourageChamberMatrix.h" - -@interface YUMIResidenceConsumerRegard() - -@property (nonatomic, strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic, strong) UILabel *monicerconstituteSequencignation; -@property (nonatomic, strong) UILabel *introduceSequencignation; -@property (nonatomic, strong) UIImageView *circleRegard; - -@end - -@implementation YUMIResidenceConsumerRegard - -- (void)setChamberMatrix:(ResidenceEncourageChamberMatrix *)chamberMatrix { - _chamberMatrix = chamberMatrix; - - self.monicerconstituteSequencignation.text = chamberMatrix.nick; - self.introduceSequencignation.text = chamberMatrix.roomDesc; - self.intelligenceportraitIndicateRegard.imageUrl = chamberMatrix.avatar; -} - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self produceUI]; - [self addTarget:self action:@selector(consumerRegardTicktacked) forControlEvents:UIControlEventTouchUpInside]; - } - return self; -} - -- (void)produceUI { - [self addSubview:self.intelligenceportraitIndicateRegard]; - [self addSubview:self.monicerconstituteSequencignation]; - [self addSubview:self.introduceSequencignation]; - [self addSubview:self.circleRegard]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(0); - make.centerX.mas_equalTo(self); - make.width.height.mas_equalTo(70); - }]; - [self.monicerconstituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_bottom).offset(15); - make.centerX.mas_equalTo(self); - make.left.mas_greaterThanOrEqualTo(2); - make.right.mas_lessThanOrEqualTo(-2); - }]; - [self.introduceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.monicerconstituteSequencignation.mas_bottom).offset(2); - make.centerX.mas_equalTo(self); - make.left.mas_greaterThanOrEqualTo(2); - make.right.mas_lessThanOrEqualTo(-2); - }]; - [self.circleRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(0); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard); - }]; -} - -- (void)consumerRegardTicktacked { - if (self.delegate && [self.delegate respondsToSelector:@selector(consumerRegardTicktackPerformance:)]) { - [self.delegate consumerRegardTicktackPerformance:self.chamberMatrix]; - } -} - -#pragma mark - 懒加载 - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] init]; - _intelligenceportraitIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 35; - _intelligenceportraitIndicateRegard.clipsToBounds = YES; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)monicerconstituteSequencignation { - if (!_monicerconstituteSequencignation) { - _monicerconstituteSequencignation = [[UILabel alloc] init]; - _monicerconstituteSequencignation.textColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - _monicerconstituteSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - } - return _monicerconstituteSequencignation; -} - -- (UILabel *)introduceSequencignation { - if (!_introduceSequencignation) { - _introduceSequencignation = [[UILabel alloc] init]; - _introduceSequencignation.textColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - _introduceSequencignation.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - } - return _introduceSequencignation; -} - -- (UIImageView *)circleRegard { - if (!_circleRegard) { - _circleRegard = [[UIImageView alloc] init]; - _circleRegard.contentMode = UIViewContentModeScaleAspectFit; - _circleRegard.image = [UIImage imageNamed:@"yumi_main_user_circle"]; - } - return _circleRegard; -} - -@end diff --git a/YuMi/Modules/YMNewHome/View/CustomView/YUMIStrangeResidenceNevRegard.h b/YuMi/Modules/YMNewHome/View/CustomView/YUMIStrangeResidenceNevRegard.h deleted file mode 100644 index 6ae238c0..00000000 --- a/YuMi/Modules/YMNewHome/View/CustomView/YUMIStrangeResidenceNevRegard.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YUMIStrangeResidenceNevRegard.h -// YuMi -// -// Created by YuMi on 2022/10/8. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIStrangeResidenceNevRegard; -@protocol FBCStrangeResidenceNevRegardRepresendtation - -- (void)yUMIStrangeResidenceNevRegard:(YUMIStrangeResidenceNevRegard *)view didClickRank:(UIButton *)sender; - -- (void)yUMIStrangeResidenceNevRegard:(YUMIStrangeResidenceNevRegard *)view didClickOpenRoom:(UIButton *)sender; - -- (void)yUMIStrangeResidenceNevRegard:(YUMIStrangeResidenceNevRegard *)view didClickSearch:(UIView *)sender; -@end - -@interface YUMIStrangeResidenceNevRegard : UIView -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/CustomView/YUMIStrangeResidenceNevRegard.m b/YuMi/Modules/YMNewHome/View/CustomView/YUMIStrangeResidenceNevRegard.m deleted file mode 100644 index 1d08c7d2..00000000 --- a/YuMi/Modules/YMNewHome/View/CustomView/YUMIStrangeResidenceNevRegard.m +++ /dev/null @@ -1,150 +0,0 @@ -// -// YUMIStrangeResidenceNevRegard.m -// YuMi -// -// Created by YuMi on 2022/10/8. -// - -#import "YUMIStrangeResidenceNevRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" - - -@interface YUMIStrangeResidenceNevRegard () -@property (nonatomic,strong) UIView *huntforRegard; -@property (nonatomic,strong) UIImageView *huntforIndicateRegard; -@property (nonatomic,strong) UILabel *huntforSequencignation; -@property (nonatomic,strong) UIButton *rateBtuton; -@property (nonatomic,strong) UIButton *opeChamberBtuton; -@end - -@implementation YUMIStrangeResidenceNevRegard - - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.huntforRegard]; - [self addSubview:self.opeChamberBtuton]; - [self addSubview:self.rateBtuton]; - - [self.huntforRegard addSubview:self.huntforIndicateRegard]; - [self.huntforRegard addSubview:self.huntforSequencignation]; -} - -- (void)initChildLyRestrictions { - - [self.huntforRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self).offset(15); - make.height.mas_equalTo(32); - make.top.mas_equalTo(self).offset(statusbarHeight + 6); - make.right.mas_equalTo(self.opeChamberBtuton.mas_left).offset(-36); - }]; - - [self.huntforIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(22); - make.height.mas_equalTo(22); - make.left.mas_equalTo(self.huntforRegard).offset(13); - make.centerY.mas_equalTo(self.huntforRegard); - }]; - - [self.huntforSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.huntforIndicateRegard.mas_right).offset(2); - make.centerY.mas_equalTo(self.huntforRegard); - }]; - - [self.rateBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(30); - make.height.mas_equalTo(30); - make.centerY.mas_equalTo(self.huntforRegard); - make.right.mas_equalTo(self).offset(-15); - }]; - - [self.opeChamberBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.centerY.mas_equalTo(self.rateBtuton); - make.right.mas_equalTo(self.rateBtuton.mas_left).offset(-12); - }]; -} - -#pragma mark - Event Response -- (void)unfoildChamberBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIStrangeResidenceNevRegard:didClickOpenRoom:)]) { - [self.delegate yUMIStrangeResidenceNevRegard:self didClickOpenRoom:sender]; - } -} - -- (void)rtowardseBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIStrangeResidenceNevRegard:didClickRank:)]) { - [self.delegate yUMIStrangeResidenceNevRegard:self didClickRank:sender]; - } -} - -- (void)tapRecognizer { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIStrangeResidenceNevRegard:didClickSearch:)]) { - [self.delegate yUMIStrangeResidenceNevRegard:self didClickSearch:self.huntforRegard]; - } -} - -#pragma mark - Getters And Setters -- (UIView *)huntforRegard { - if (!_huntforRegard) { - _huntforRegard = [[UIView alloc] init]; - _huntforRegard.backgroundColor = [UIColor colorWithWhite:1 alpha:0.5]; - _huntforRegard.layer.cornerRadius = 16; - _huntforRegard.layer.masksToBounds = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognizer)]; - [_huntforRegard addGestureRecognizer:tap]; - } - return _huntforRegard; -} - -- (UIImageView *)huntforIndicateRegard { - if (!_huntforIndicateRegard) { - _huntforIndicateRegard = [[UIImageView alloc] init]; - _huntforIndicateRegard.userInteractionEnabled = YES; - _huntforIndicateRegard.image = [UIImage imageNamed:@"yumi_main_title_search"]; - } - return _huntforIndicateRegard; -} - -- (UILabel *)huntforSequencignation { - if (!_huntforSequencignation) { - _huntforSequencignation = [[UILabel alloc] init]; - _huntforSequencignation.font = [UIFont systemFontOfSize:12]; - _huntforSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _huntforSequencignation.text = YMLocalizedString(@"YUMI_New_Home_Nav_View_0"); - } - return _huntforSequencignation; -} - -- (UIButton *)opeChamberBtuton { - if (!_opeChamberBtuton) { - _opeChamberBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_opeChamberBtuton setImage:[UIImage imageNamed:@"yumi_main_title_open_room"] forState:UIControlStateNormal]; - [_opeChamberBtuton setImage:[UIImage imageNamed:@"yumi_main_title_open_room"] forState:UIControlStateSelected]; - [_opeChamberBtuton addTarget:self action:@selector(unfoildChamberBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _opeChamberBtuton; -} - -- (UIButton *)rateBtuton { - if (!_rateBtuton) { - _rateBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_rateBtuton setImage:[UIImage imageNamed:@"yumi_main_title_rank"] forState:UIControlStateNormal]; - [_rateBtuton setImage:[UIImage imageNamed:@"yumi_main_title_rank"] forState:UIControlStateSelected]; - [_rateBtuton addTarget:self action:@selector(rtowardseBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _rateBtuton; -} - - -@end diff --git a/YuMi/Modules/YMNewHome/View/Search/Model/HomeEveryOneSearchModel.h b/YuMi/Modules/YMNewHome/View/Search/Model/HomeEveryOneSearchModel.h new file mode 100644 index 00000000..ab33cf57 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/Model/HomeEveryOneSearchModel.h @@ -0,0 +1,20 @@ +// +// HomeEveryOneSearchModel.h +// YUMI +// +// Created by GLEN on 2022/11/29. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface HomeEveryOneSearchModel : NSObject + +@property (nonatomic, copy) NSString *sid; +@property (nonatomic, copy) NSString *relationRoomUid; +@property (nonatomic, copy) NSString *word; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/Model/HomeEveryOneSearchModel.m b/YuMi/Modules/YMNewHome/View/Search/Model/HomeEveryOneSearchModel.m new file mode 100644 index 00000000..29f569ef --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/Model/HomeEveryOneSearchModel.m @@ -0,0 +1,16 @@ +// +// HomeEveryOneSearchModel.m +// YUMI +// +// Created by GLEN on 2022/11/29. +// + +#import "HomeEveryOneSearchModel.h" + +@implementation HomeEveryOneSearchModel + ++ (NSDictionary *)replacedKeyFromPropertyName { + return @{@"sid":@"id"}; +} + +@end diff --git a/YuMi/Modules/YMNewHome/View/Search/Model/HomeLiveRoomModel.h b/YuMi/Modules/YMNewHome/View/Search/Model/HomeLiveRoomModel.h new file mode 100644 index 00000000..0102a67d --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/Model/HomeLiveRoomModel.h @@ -0,0 +1,23 @@ +// +// HomeLiveRoomModel.h +// YUMI +// +// Created by YUMI on 2022/3/2. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface HomeLiveRoomModel : NSObject +///昵称 +@property (nonatomic, copy) NSString *nick; +///头像 +@property (nonatomic, copy) NSString *avatar; +///用户的id +@property (nonatomic,assign) NSInteger uid; +///在房间中用户的uid +@property (nonatomic, assign) NSInteger roomUid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/Model/HomeLiveRoomModel.m b/YuMi/Modules/YMNewHome/View/Search/Model/HomeLiveRoomModel.m new file mode 100644 index 00000000..df9c9719 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/Model/HomeLiveRoomModel.m @@ -0,0 +1,12 @@ +// +// HomeLiveRoomModel.m +// YUMI +// +// Created by YUMI on 2022/3/2. +// + +#import "HomeLiveRoomModel.h" + +@implementation HomeLiveRoomModel + +@end diff --git a/YuMi/Modules/YMNewHome/View/Search/Model/HomeSearchResultModel.h b/YuMi/Modules/YMNewHome/View/Search/Model/HomeSearchResultModel.h new file mode 100644 index 00000000..74bbfdc9 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/Model/HomeSearchResultModel.h @@ -0,0 +1,33 @@ +// +// HomeSearchResultModel.h +// YUMI +// +// Created by YUMI on 2021/11/29. +// + +#import +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +@interface HomeSearchResultModel : NSObject +///头像 +@property (nonatomic,copy) NSString *avatar; +///在线人数 +@property (nonatomic,assign) NSInteger onlineNum; +///房主的uid +@property (nonatomic,copy) NSString *uid; +///标题 +@property (nonatomic,copy) NSString *title; +///用户的昵称 +@property (nonatomic,copy) NSString *nick; +///erban +@property (nonatomic,copy) NSString *erbanNo; +///是否可用 +@property (nonatomic,assign) BOOL valid; +///性别 +@property (nonatomic,assign) GenderType gender; +///搜索用户的时候 如果用户在房间中的话 就有roomUid +@property (nonatomic,copy) NSString *roomUid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/Model/HomeSearchResultModel.m b/YuMi/Modules/YMNewHome/View/Search/Model/HomeSearchResultModel.m new file mode 100644 index 00000000..3ccfe9e4 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/Model/HomeSearchResultModel.m @@ -0,0 +1,12 @@ +// +// HomeSearchResultModel.m +// YUMI +// +// Created by YUMI on 2021/11/29. +// + +#import "HomeSearchResultModel.h" + +@implementation HomeSearchResultModel + +@end diff --git a/YuMi/Modules/YMNewHome/View/Search/Model/ResidenceEnergeticChamberMatrix.h b/YuMi/Modules/YMNewHome/View/Search/Model/ResidenceEnergeticChamberMatrix.h deleted file mode 100644 index ddc350cb..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/Model/ResidenceEnergeticChamberMatrix.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// ResidenceEnergeticChamberMatrix.h -// YUMI -// -// Created by YUMI on 2022/3/2. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface ResidenceEnergeticChamberMatrix : NSObject -@property (nonatomic, copy) NSString *nick; -@property (nonatomic, copy) NSString *avatar; -@property (nonatomic,assign) NSInteger uid; -@property (nonatomic, assign) NSInteger roomUid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/Model/ResidenceEnergeticChamberMatrix.m b/YuMi/Modules/YMNewHome/View/Search/Model/ResidenceEnergeticChamberMatrix.m deleted file mode 100644 index 636299ea..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/Model/ResidenceEnergeticChamberMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ResidenceEnergeticChamberMatrix.m -// YUMI -// -// Created by YUMI on 2022/3/2. -// - -#import "ResidenceEnergeticChamberMatrix.h" - -@implementation ResidenceEnergeticChamberMatrix - -@end diff --git a/YuMi/Modules/YMNewHome/View/Search/Model/ResidenceEveryOneHuntforMatrix.h b/YuMi/Modules/YMNewHome/View/Search/Model/ResidenceEveryOneHuntforMatrix.h deleted file mode 100644 index 839e701a..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/Model/ResidenceEveryOneHuntforMatrix.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// ResidenceEveryOneHuntforMatrix.h -// YUMI -// -// Created by GLEN on 2022/11/29. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface ResidenceEveryOneHuntforMatrix : NSObject - -@property (nonatomic, copy) NSString *sid; -@property (nonatomic, copy) NSString *relationRoomUid; -@property (nonatomic, copy) NSString *word; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/Model/ResidenceEveryOneHuntforMatrix.m b/YuMi/Modules/YMNewHome/View/Search/Model/ResidenceEveryOneHuntforMatrix.m deleted file mode 100644 index 6ab61a3f..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/Model/ResidenceEveryOneHuntforMatrix.m +++ /dev/null @@ -1,16 +0,0 @@ -// -// ResidenceEveryOneHuntforMatrix.m -// YUMI -// -// Created by GLEN on 2022/11/29. -// - -#import "ResidenceEveryOneHuntforMatrix.h" - -@implementation ResidenceEveryOneHuntforMatrix - -+ (NSDictionary *)replacedDigitalByvirtueofMaintainertyConstitute { - return @{@"sid":@"id"}; -} - -@end diff --git a/YuMi/Modules/YMNewHome/View/Search/Model/ResidenceHuntforConsequentMatrix.h b/YuMi/Modules/YMNewHome/View/Search/Model/ResidenceHuntforConsequentMatrix.h deleted file mode 100644 index f27e0875..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/Model/ResidenceHuntforConsequentMatrix.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// ResidenceHuntforConsequentMatrix.h -// YUMI -// -// Created by YUMI on 2021/11/29. -// - -#import -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -@interface ResidenceHuntforConsequentMatrix : NSObject -@property (nonatomic,copy) NSString *avatar; -@property (nonatomic,assign) NSInteger onlineNum; -@property (nonatomic,copy) NSString *uid; -@property (nonatomic,copy) NSString *title; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,copy) NSString *erbanNo; -@property (nonatomic,assign) BOOL valid; -@property (nonatomic,assign) GenderGenre gender; -@property (nonatomic,copy) NSString *roomUid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/Model/ResidenceHuntforConsequentMatrix.m b/YuMi/Modules/YMNewHome/View/Search/Model/ResidenceHuntforConsequentMatrix.m deleted file mode 100644 index 9cd4088b..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/Model/ResidenceHuntforConsequentMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ResidenceHuntforConsequentMatrix.m -// YUMI -// -// Created by YUMI on 2021/11/29. -// - -#import "ResidenceHuntforConsequentMatrix.h" - -@implementation ResidenceHuntforConsequentMatrix - -@end diff --git a/YuMi/Modules/YMNewHome/View/Search/Presenter/XPHomeSearchPresenter.h b/YuMi/Modules/YMNewHome/View/Search/Presenter/XPHomeSearchPresenter.h new file mode 100644 index 00000000..75d4d620 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/Presenter/XPHomeSearchPresenter.h @@ -0,0 +1,28 @@ +// +// YMHomeSearchPresenter.h +// YUMI +// +// Created by YUMI on 2021/11/29. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPHomeSearchPresenter : BaseMvpPresenter + +/// 搜索房间或者用户 +/// @param key 搜索的关键字 +/// @param type 类型 1 房间 2 用户 +- (void)searchRoomList:(NSString *)key type:(NSString *)type; + +/// 获取首页推荐列表 +- (void)getHomeRecommendRoomList; + +/// 获取大家都在搜的房间列表 +/// @param sid keyID +- (void)getEveryOneSearchRoomList:(NSString *)sid; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/Presenter/XPHomeSearchPresenter.m b/YuMi/Modules/YMNewHome/View/Search/Presenter/XPHomeSearchPresenter.m new file mode 100644 index 00000000..f8ac88d0 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/Presenter/XPHomeSearchPresenter.m @@ -0,0 +1,49 @@ +// +// YMHomeSearchPresenter.m +// YUMI +// +// Created by YUMI on 2021/11/29. +// + +#import "XPHomeSearchPresenter.h" +#import "Api+Home.h" +#import "XPHomeSearchProtocol.h" +#import "AccountInfoStorage.h" +#import "HomeSearchResultModel.h" +#import "HomeRecommendRoomModel.h" + +@implementation XPHomeSearchPresenter + + +/// 搜索房间或者用户 +/// @param key 搜索的关键字 +/// @param type 类型 1 房间 2 用户 +- (void)searchRoomList:(NSString *)key type:(NSString *)type { + [Api searchComplection:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [HomeSearchResultModel modelsWithArray:data.data]; + [[self getView] searchRoomSuccess:array type:type]; + } showLoading:YES] key:key type:type page:@"1" pageSize:@"50"]; +} + +/// 获取首页推荐列表 +- (void)getHomeRecommendRoomList { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api homeRecommendRoomList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [HomeRecommendRoomModel modelsWithArray:data.data]; + [[self getView] searchRoomGetRecommendSuccess:array]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] searchRoomGetRecommendFail]; + }] uid:uid]; +} + +/// 获取大家都在搜的房间列表 +/// @param sid keyID +- (void)getEveryOneSearchRoomList:(NSString *)sid { + [Api requestEveryOneSearchRoomList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [HomeRecommendRoomModel modelsWithArray:data.data]; + [[self getView] everyoneSearchListSuccess:array]; + }] wordId:sid]; +} + + +@end diff --git a/YuMi/Modules/YMNewHome/View/Search/Presenter/XPInRoomRecordPresenter.h b/YuMi/Modules/YMNewHome/View/Search/Presenter/XPInRoomRecordPresenter.h new file mode 100644 index 00000000..4e720c39 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/Presenter/XPInRoomRecordPresenter.h @@ -0,0 +1,25 @@ +// +// YMInRoomRecordPresenter.h +// YUMI +// +// Created by YUMI on 2022/9/6. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPInRoomRecordPresenter : BaseMvpPresenter + +///获取进房记录 +- (void)getInRoomRecordList; + +/// 清除进房记录 +- (void)cleanInRoomRecord; + +///大家都在搜 +- (void)getEveryoneSearchList; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/Presenter/XPInRoomRecordPresenter.m b/YuMi/Modules/YMNewHome/View/Search/Presenter/XPInRoomRecordPresenter.m new file mode 100644 index 00000000..daf9a362 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/Presenter/XPInRoomRecordPresenter.m @@ -0,0 +1,44 @@ +// +// YMInRoomRecordPresenter.m +// YUMI +// +// Created by YUMI on 2022/9/6. +// + +#import "XPInRoomRecordPresenter.h" +#import "Api+Mine.h" +#import "AccountInfoStorage.h" +#import "XPMineFootPrintModel.h" +#import "HomeEveryOneSearchModel.h" +#import "XPInRoomRecordProtocol.h" + +@implementation XPInRoomRecordPresenter + +///获取进房记录 +- (void)getInRoomRecordList { + NSString *uid = [AccountInfoStorage instance].getUid; + [Api requestFootPrint:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray *array = [XPMineFootPrintModel modelsWithArray:data.data]; + [[self getView] getInRoomRecordSuccess:array]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + }] uid:uid page:@"1" pageSize:@"100"]; +} + +/// 清除进房记录 +- (void)cleanInRoomRecord { + NSString *uid = [AccountInfoStorage instance].getUid; + [Api requestCleanFootPrint:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] cleanInRoomRecordSuccess]; + }] uid:uid roomUid:NULL]; +} + +///大家都在搜 +- (void)getEveryoneSearchList { + NSString *uid = [AccountInfoStorage instance].getUid; + [Api requestEveryoneSearch:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray *array = [HomeEveryOneSearchModel modelsWithArray:data.data]; + [[self getView] getEveryoneSearchListSuccess:array]; + }] uid:uid]; +} + +@end diff --git a/YuMi/Modules/YMNewHome/View/Search/Presenter/YUMIInChamberReflectionExternalizer.h b/YuMi/Modules/YMNewHome/View/Search/Presenter/YUMIInChamberReflectionExternalizer.h deleted file mode 100644 index bbfe00f5..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/Presenter/YUMIInChamberReflectionExternalizer.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMInRoomRecordPresenter.h -// YUMI -// -// Created by YUMI on 2022/9/6. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIInChamberReflectionExternalizer : BaseMvpExternalizer - -- (void)acquireInChamberReflectionSttowardsement; - -- (void)sanitaryInChamberReflection; - -- (void)acquireEachoneHuntforSttowardsement; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/Presenter/YUMIInChamberReflectionExternalizer.m b/YuMi/Modules/YMNewHome/View/Search/Presenter/YUMIInChamberReflectionExternalizer.m deleted file mode 100644 index f3b1260d..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/Presenter/YUMIInChamberReflectionExternalizer.m +++ /dev/null @@ -1,41 +0,0 @@ -// -// YMInRoomRecordPresenter.m -// YUMI -// -// Created by YUMI on 2022/9/6. -// - -#import "YUMIInChamberReflectionExternalizer.h" -#import "Api+Mine.h" -#import "AccountAbstractStorage.h" -#import "YUMIManeTerminalImpressionMatrix.h" -#import "ResidenceEveryOneHuntforMatrix.h" -#import "FBCInChamberRecordCeremony.h" - -@implementation YUMIInChamberReflectionExternalizer - -- (void)acquireInChamberReflectionSttowardsement { - NSString *uid = [AccountAbstractStorage instance].acquireCid; - [Api requisitionTerminalImpression:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray *array = [YUMIManeTerminalImpressionMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireInChamberReflectionAccomplishment:array]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - }] uid:uid page:@"1" pageSize:@"100"]; -} - -- (void)sanitaryInChamberReflection { - NSString *uid = [AccountAbstractStorage instance].acquireCid; - [Api requisitionCleanTerminalImpression:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] sanitaryInChamberReflectionAccomplishment]; - }] uid:uid roomUid:NULL]; -} - -- (void)acquireEachoneHuntforSttowardsement { - NSString *uid = [AccountAbstractStorage instance].acquireCid; - [Api requisitionEachoneHuntfor:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray *array = [ResidenceEveryOneHuntforMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireEachoneHuntforSttowardsementAccomplishment:array]; - }] uid:uid]; -} - -@end diff --git a/YuMi/Modules/YMNewHome/View/Search/Presenter/YUMIResidenceHuntforExternalizer.h b/YuMi/Modules/YMNewHome/View/Search/Presenter/YUMIResidenceHuntforExternalizer.h deleted file mode 100644 index b8c0cc84..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/Presenter/YUMIResidenceHuntforExternalizer.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMHomeSearchPresenter.h -// YUMI -// -// Created by YUMI on 2021/11/29. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIResidenceHuntforExternalizer : BaseMvpExternalizer - -- (void)huntforChamberSttowardsement:(NSString *)key type:(NSString *)type; - -- (void)acquireResidenceEncourageChamberSttowardsement; - -- (void)acquireEachSoleHuntforChamberSttowardsement:(NSString *)sid; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/Presenter/YUMIResidenceHuntforExternalizer.m b/YuMi/Modules/YMNewHome/View/Search/Presenter/YUMIResidenceHuntforExternalizer.m deleted file mode 100644 index 96f61a1a..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/Presenter/YUMIResidenceHuntforExternalizer.m +++ /dev/null @@ -1,43 +0,0 @@ -// -// YMHomeSearchPresenter.m -// YUMI -// -// Created by YUMI on 2021/11/29. -// - -#import "YUMIResidenceHuntforExternalizer.h" -#import "Api+Home.h" -#import "FBCResidenceHuntforCeremony.h" -#import "AccountAbstractStorage.h" -#import "ResidenceHuntforConsequentMatrix.h" -#import "ResidenceEncourageChamberMatrix.h" - -@implementation YUMIResidenceHuntforExternalizer - - -- (void)huntforChamberSttowardsement:(NSString *)key type:(NSString *)type { - [Api huntforimplementtion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [ResidenceHuntforConsequentMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] huntforChamberAccomplishment:array type:type]; - } EvidenceChambering:YES] key:key type:type page:@"1" pageSize:@"50"]; -} - -- (void)acquireResidenceEncourageChamberSttowardsement { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api residenceEncourageChamberSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [ResidenceEncourageChamberMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] huntforChamberAcquireEncourageAccomplishment:array]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] huntforChamberAcquireEncourageFlunk]; - }] uid:uid]; -} - -- (void)acquireEachSoleHuntforChamberSttowardsement:(NSString *)sid { - [Api requisitionEachSoleHuntforChamberSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [ResidenceEncourageChamberMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] everyoneHuntforSttowardsementAccomplishment:array]; - }] wordId:sid]; -} - - -@end diff --git a/YuMi/Modules/YMNewHome/View/Search/Protocol/FBCInChamberRecordCeremony.h b/YuMi/Modules/YMNewHome/View/Search/Protocol/FBCInChamberRecordCeremony.h deleted file mode 100644 index 8d6d9c54..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/Protocol/FBCInChamberRecordCeremony.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YMInRoomRecordProtocol.h -// YUMI -// -// Created by YUMI on 2022/9/6. -// - -#import - -@class YUMIManeTerminalImpressionMatrix; -@protocol FBCInChamberRecordCeremony - - -- (void)acquireInChamberReflectionAccomplishment:(NSArray *)array; - -- (void)sanitaryInChamberReflectionAccomplishment; - -- (void)acquireEachoneHuntforSttowardsementAccomplishment:(NSArray *)array; - -@end diff --git a/YuMi/Modules/YMNewHome/View/Search/Protocol/FBCResidenceHuntforCeremony.h b/YuMi/Modules/YMNewHome/View/Search/Protocol/FBCResidenceHuntforCeremony.h deleted file mode 100644 index 36b282a2..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/Protocol/FBCResidenceHuntforCeremony.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMHomeSearchProtocol.h -// YUMI -// -// Created by YUMI on 2021/11/29. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@protocol FBCResidenceHuntforCeremony - -- (void)huntforChamberAccomplishment:(NSArray *)data type:(NSString *)type; - -- (void)huntforChamberAcquireEncourageAccomplishment:(NSArray *)data; -- (void)huntforChamberAcquireEncourageFlunk; - -- (void)everyoneHuntforSttowardsementAccomplishment:(NSArray *)list; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/Protocol/XPHomeSearchProtocol.h b/YuMi/Modules/YMNewHome/View/Search/Protocol/XPHomeSearchProtocol.h new file mode 100644 index 00000000..013c283b --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/Protocol/XPHomeSearchProtocol.h @@ -0,0 +1,26 @@ +// +// YMHomeSearchProtocol.h +// YUMI +// +// Created by YUMI on 2021/11/29. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@protocol XPHomeSearchProtocol + +///搜索成功 +- (void)searchRoomSuccess:(NSArray *)data type:(NSString *)type; + +///搜索页获取推荐房间成功 +- (void)searchRoomGetRecommendSuccess:(NSArray *)data; +///搜索页获取推荐房间失败 +- (void)searchRoomGetRecommendFail; + +/// 大家都在搜房间列表成功 +- (void)everyoneSearchListSuccess:(NSArray *)list; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/Protocol/XPInRoomRecordProtocol.h b/YuMi/Modules/YMNewHome/View/Search/Protocol/XPInRoomRecordProtocol.h new file mode 100644 index 00000000..4ce5acaa --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/Protocol/XPInRoomRecordProtocol.h @@ -0,0 +1,33 @@ +// +// YMInRoomRecordProtocol.h +// YUMI +// +// Created by YUMI on 2022/9/6. +// + +#import + +@class XPMineFootPrintModel; +@protocol XPInRoomRecordProtocol + +///获取个播浏览记录成功 +//- (void)getOnceLookRoomListSuccess:(HomeLiveLookRecordModel *)data; +// +/////获取所有的tag成功 +//- (void)getHomeLiveTagListSuccess:(NSArray *)array; +/////获取所有的tag失败 +//- (void)getHomeLiveTagListFail:(NSArray *)array; +// +/////获取个播房成功 +//- (void)getAnchorRoomListSuccess:(NSArray *)array; + +///获取进房记录成功 +- (void)getInRoomRecordSuccess:(NSArray *)array; + +///清除进房记录成功 +- (void)cleanInRoomRecordSuccess; + +///获取大家都在搜列表成功 +- (void)getEveryoneSearchListSuccess:(NSArray *)array; + +@end diff --git a/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPHomeAttentionCollectionViewCell.h b/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPHomeAttentionCollectionViewCell.h new file mode 100644 index 00000000..6e0e2e8f --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPHomeAttentionCollectionViewCell.h @@ -0,0 +1,19 @@ +// +// YMHomeAttentionCollectionViewCell.h +// YUMI +// +// Created by YUMI on 2022/3/2. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class HomeLiveRoomModel, XPMineFootPrintModel; +@interface XPHomeAttentionCollectionViewCell : UICollectionViewCell + +@property (nonatomic,strong) HomeLiveRoomModel *liveRoom; +@property (nonatomic, strong) XPMineFootPrintModel *recordRoom; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPHomeAttentionCollectionViewCell.m b/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPHomeAttentionCollectionViewCell.m new file mode 100644 index 00000000..e65a1dd8 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPHomeAttentionCollectionViewCell.m @@ -0,0 +1,176 @@ +// +// YMHomeAttentionCollectionViewCell.m +// YUMI +// +// Created by YUMI on 2022/3/2. +// + +#import "XPHomeAttentionCollectionViewCell.h" +///Third +#import +///Tool +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +///Model +#import "HomeLiveRoomModel.h" +#import "XPMineFootPrintModel.h" + +@interface XPHomeAttentionCollectionViewCell () +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///音符背景 +@property (nonatomic, strong) UIImageView *noteBgImageView; +///直播中 +@property (nonatomic, strong) UILabel *liveLabel; +///音符动效 +@property (nonatomic,strong) UIImageView *noteImageView; +///动画的数组 +@property (nonatomic,strong) NSArray *animationArray; +@end + +@implementation XPHomeAttentionCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.nickLabel]; + + [self.avatarImageView addSubview:self.noteBgImageView]; + [self.noteBgImageView addSubview:self.noteImageView]; + [self.noteBgImageView addSubview:self.liveLabel]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(56, 56)); + make.centerX.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.contentView); + }]; + + [self.noteBgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.avatarImageView); + make.height.mas_equalTo(14); + }]; + + [self.noteImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.noteBgImageView).mas_offset(15); + make.centerY.mas_equalTo(self.noteBgImageView).mas_offset(-1); + make.height.mas_equalTo(7); + make.width.mas_equalTo(8); + }]; + [self.liveLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.noteImageView.mas_right).mas_offset(2); + make.centerY.mas_equalTo(self.noteImageView); + }]; + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.avatarImageView); + make.top.mas_equalTo(self.avatarImageView.mas_bottom).offset(4); + }]; +} + +#pragma mark - Getters And Setters +- (void)setLiveRoom:(HomeLiveRoomModel *)liveRoom { + _liveRoom = liveRoom; + if (_liveRoom) { + self.avatarImageView.imageUrl = _liveRoom.avatar; + self.nickLabel.text = _liveRoom.nick; + self.noteBgImageView.hidden = _liveRoom.roomUid <=0; + self.noteImageView.hidden = _liveRoom.roomUid <=0; + if (_liveRoom.roomUid > 0) { + self.noteImageView.animationImages = self.animationArray; + self.noteImageView.animationDuration = 0.5; + [self.noteImageView startAnimating]; + }else { + self.noteImageView.animationImages = nil; + [self.noteImageView stopAnimating]; + } + } +} + +- (void)setRecordRoom:(XPMineFootPrintModel *)recordRoom { + _recordRoom = recordRoom; + if (recordRoom) { + self.avatarImageView.imageUrl = recordRoom.avatar; + self.nickLabel.text = recordRoom.title; + self.noteBgImageView.hidden = YES; + } +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 56/2; + _avatarImageView.layer.borderColor = [UIColor whiteColor].CGColor; + _avatarImageView.layer.borderWidth = 1; + } + return _avatarImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:12]; + _nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _nickLabel.textAlignment = NSTextAlignmentCenter; + } + return _nickLabel; +} + +- (UIImageView *)noteBgImageView { + if (!_noteBgImageView) { + _noteBgImageView = [[UIImageView alloc] init]; + _noteBgImageView.image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFFA936), UIColorFromRGB(0xFFCB47)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(52, 14)]; + } + return _noteBgImageView; +} + +- (UILabel *)liveLabel { + if (!_liveLabel) { + _liveLabel = [[UILabel alloc] init]; + _liveLabel.font = [UIFont systemFontOfSize:8 weight:UIFontWeightMedium]; + _liveLabel.textColor = [UIColor whiteColor]; + _liveLabel.text = YMLocalizedString(@"XPHomeAttentionCollectionViewCell0"); + } + return _liveLabel; +} + +- (UIImageView *)noteImageView { + if (!_noteImageView) { + _noteImageView = [[UIImageView alloc] init]; + _noteImageView.userInteractionEnabled = YES; + _noteImageView.animationRepeatCount = 0; + } + return _noteImageView; +} + +- (NSArray *)animationArray { + if (!_animationArray) { + NSMutableArray * array = [NSMutableArray array]; + for (int i = 0; i < 10; i++) { + NSString * imageName = [NSString stringWithFormat:@"home_note_0000%d",i]; + UIImage * image = [UIImage imageNamed:imageName]; + [array addObject:image]; + } + _animationArray = [array copy]; + } + return _animationArray; +} + +@end diff --git a/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPHomeCollectRoomTableViewCell.h b/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPHomeCollectRoomTableViewCell.h new file mode 100644 index 00000000..340de139 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPHomeCollectRoomTableViewCell.h @@ -0,0 +1,16 @@ +// +// YMHomeCollectRoomTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/3/2. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class HomeCollectRoomModel; +@interface XPHomeCollectRoomTableViewCell : UITableViewCell +@property (nonatomic,strong) HomeCollectRoomModel *roomInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPHomeCollectRoomTableViewCell.m b/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPHomeCollectRoomTableViewCell.m new file mode 100644 index 00000000..1b487c59 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPHomeCollectRoomTableViewCell.m @@ -0,0 +1,377 @@ +// +// YMHomeCollectRoomTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/3/2. +// 收藏房间 + +#import "XPHomeCollectRoomTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "NSArray+Safe.h" +#import "UIImage+Utils.h" +///Model +#import "HomeCollectRoomModel.h" + +@interface XPHomeCollectRoomTableViewCell () +///是否在PK中 +@property (nonatomic,strong) UIButton *pkButton; +///显示头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///显示背景 +@property (nonatomic,strong) UIImageView *backImageView; +///显示名字 +@property (nonatomic,strong) UILabel *nickLabel; +///显示tag +@property (nonatomic,strong) NetImageView *tagImageView; +///显示id +@property (nonatomic,strong) UILabel *idLabel; +///容器 +@property (nonatomic,strong) UIImageView * personContainerView; +///显示🔥 +@property (nonatomic,strong) UIImageView *hotImageView; +///显示在线人数 +@property (nonatomic,strong) UILabel *numberLabel; +///房间在线人数 +@property (nonatomic,strong) UIView *micContainerView; +///第一个 +@property (nonatomic,strong) NetImageView *firstImageView; +///第二个 +@property (nonatomic,strong) NetImageView *secondImageView; +///第三个 +@property (nonatomic,strong) NetImageView *thirdImageView; +///第四个 +@property (nonatomic,strong) NetImageView *fourImageView; +///第五个 +@property (nonatomic,strong) NetImageView *fifImageView; +///用户的数组 +@property (nonatomic,strong) NSArray *micUserArray; +@end + +@implementation XPHomeCollectRoomTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.backImageView]; + [self.contentView addSubview:self.avatarImageView]; + + [self.backImageView addSubview:self.nickLabel]; + [self.backImageView addSubview:self.tagImageView]; + [self.backImageView addSubview:self.idLabel]; + [self.backImageView addSubview:self.personContainerView]; + [self.backImageView addSubview:self.micContainerView]; + + [self.personContainerView addSubview:self.hotImageView]; + [self.personContainerView addSubview:self.numberLabel]; + + [self.avatarImageView addSubview:self.pkButton]; + [self.micContainerView addSubview:self.fifImageView]; + [self.micContainerView addSubview:self.fourImageView]; + [self.micContainerView addSubview:self.thirdImageView]; + [self.micContainerView addSubview:self.secondImageView]; + [self.micContainerView addSubview:self.firstImageView]; + self.micUserArray = @[self.firstImageView, self.secondImageView, self.thirdImageView, self.fourImageView, self.fifImageView]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(74, 74)); + make.left.mas_equalTo(self.contentView).offset(15); + make.top.mas_equalTo(self.contentView); + }]; + + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + make.top.mas_equalTo(self.contentView).offset(8); + make.height.mas_equalTo(66); + }]; + + [self.pkButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(44, 16)); + make.left.top.mas_equalTo(self.avatarImageView); + }]; + + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backImageView).offset(82); + make.top.mas_equalTo(self.backImageView).offset(12); + make.right.mas_lessThanOrEqualTo(self.personContainerView.mas_left).offset(-5); + }]; + + [self.tagImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(43, 18)); + make.left.mas_equalTo(self.nickLabel); + make.top.mas_equalTo(self.nickLabel.mas_bottom).offset(13); + }]; + + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.tagImageView); + make.left.mas_equalTo(self.tagImageView.mas_right).offset(8); + }]; + + [self.personContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.hotImageView.mas_left).offset(-14); + make.height.mas_equalTo(21); + make.top.mas_equalTo(self.backImageView); + make.right.mas_equalTo(self.backImageView); + }]; + + [self.hotImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(13, 13)); + make.right.mas_equalTo(self.numberLabel.mas_left).offset(-2); + make.centerY.mas_equalTo(self.personContainerView); + }]; + + [self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.personContainerView.mas_right).offset(-5); + make.centerY.mas_equalTo(self.personContainerView); + }]; + + [self.micContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.backImageView).offset(-13); + make.height.mas_equalTo(16); + make.centerY.mas_equalTo(self.tagImageView); + make.left.mas_equalTo(self.fifImageView.mas_left).offset(-5); + }]; + + [self.firstImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(16, 16)); + make.right.mas_equalTo(self.micContainerView); + make.centerY.mas_equalTo(self.micContainerView); + }]; + + [self.secondImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.centerY.mas_equalTo(self.firstImageView); + make.right.mas_equalTo(self.firstImageView.mas_left).offset(2); + }]; + + [self.thirdImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.centerY.mas_equalTo(self.firstImageView); + make.right.mas_equalTo(self.secondImageView.mas_left).offset(2); + }]; + + [self.fourImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.centerY.mas_equalTo(self.firstImageView); + make.right.mas_equalTo(self.thirdImageView.mas_left).offset(2); + }]; + + [self.fifImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.centerY.mas_equalTo(self.firstImageView); + make.right.mas_equalTo(self.fourImageView.mas_left).offset(2); + }]; +} +#pragma mark - Getters And Setters +- (void)setRoomInfo:(HomeCollectRoomModel *)roomInfo { + _roomInfo = roomInfo; + if (_roomInfo) { + self.avatarImageView.imageUrl = _roomInfo.roomAvatar; + self.nickLabel.text = _roomInfo.roomName; + self.tagImageView.imageUrl = _roomInfo.tagPict; + self.idLabel.text = [NSString stringWithFormat:@"ID:%@", _roomInfo.erbanNo]; + self.numberLabel.text = _roomInfo.roomOnlineNum; + self.pkButton.hidden = !_roomInfo.crossPking; + if (_roomInfo.micUsers.count > 0) { + self.micContainerView.hidden = NO; + for (NSInteger i = 0; i < self.micUserArray.count; i++) { + NetImageView * imageView = [self.micUserArray safeObjectAtIndex1:i]; + if (i< _roomInfo.micUsers.count) { + HomePlayMicUserModel * micUserInfo = [_roomInfo.micUsers safeObjectAtIndex1:i]; + imageView.imageUrl = micUserInfo.avatar; + imageView.hidden = NO; + } else { + imageView.hidden = YES; + } + } + } else { + self.micContainerView.hidden = YES; + } + + } +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 8; + _avatarImageView.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + } + return _avatarImageView; +} + +- (UIButton *)pkButton { + if (!_pkButton) { + _pkButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_pkButton setTitle:YMLocalizedString(@"XPHomeCollectRoomTableViewCell0") forState:UIControlStateNormal]; + [_pkButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _pkButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_pkButton setBackgroundImage:[UIImage imageNamed:@"home_like_across_pk_bg"] forState:UIControlStateNormal]; + _pkButton.layer.masksToBounds = YES; + _pkButton.layer.cornerRadius = 10; + } + return _pkButton; +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.layer.masksToBounds = YES; + _backImageView.layer.shadowColor = UIColorRGBAlpha(0xE5E5F2, 0.34).CGColor; + _backImageView.layer.cornerRadius = 12; + _backImageView.layer.shadowOffset = CGSizeMake(4, 4); + _backImageView.image = [UIImage imageWithColor:[DJDKMIMOMColor appCellBackgroundColor]]; + } + return _backImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:14]; + _nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _nickLabel; +} + +- (NetImageView *)tagImageView { + if (!_tagImageView) { + _tagImageView = [[NetImageView alloc] init]; + } + return _tagImageView; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.font = [UIFont systemFontOfSize:12]; + _idLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _idLabel; +} + +- (UIImageView *)personContainerView { + if (!_personContainerView) { + _personContainerView = [[UIImageView alloc] init]; + _personContainerView.image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFFFFFF), UIColorFromRGB(0xF3F3FA)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(20, 16)]; + } + return _personContainerView; +} + +- (UIImageView *)hotImageView { + if (!_hotImageView) { + _hotImageView = [[UIImageView alloc] init]; + _hotImageView.userInteractionEnabled = YES; + _hotImageView.image = [UIImage imageNamed:@"room_like_collect_room_hot"]; + } + return _hotImageView; +} + +- (UILabel *)numberLabel { + if (!_numberLabel) { + _numberLabel = [[UILabel alloc] init]; + _numberLabel.font = [UIFont boldSystemFontOfSize:12]; + _numberLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _numberLabel; +} + +- (UIView *)micContainerView { + if (!_micContainerView) { + _micContainerView = [[UIView alloc] init]; + _micContainerView.backgroundColor = [UIColor clearColor]; + } + return _micContainerView; +} + +- (NetImageView *)firstImageView { + if (!_firstImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _firstImageView = [[NetImageView alloc] initWithConfig:config]; + _firstImageView.layer.masksToBounds = YES; + _firstImageView.layer.cornerRadius = 8; + _firstImageView.layer.borderColor = [UIColor whiteColor].CGColor; + _firstImageView.layer.borderWidth = 1; + _firstImageView.backgroundColor= [UIColor redColor]; + } + return _firstImageView; +} + +- (NetImageView *)secondImageView { + if (!_secondImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _secondImageView = [[NetImageView alloc] initWithConfig:config]; + _secondImageView.layer.masksToBounds = YES; + _secondImageView.layer.cornerRadius = 8; + _secondImageView.layer.borderColor = [UIColor whiteColor].CGColor; + _secondImageView.layer.borderWidth = 1; + _secondImageView.backgroundColor= [UIColor yellowColor]; + } + return _secondImageView; +} + +- (NetImageView *)thirdImageView { + if (!_thirdImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _thirdImageView = [[NetImageView alloc] initWithConfig:config]; + _thirdImageView.layer.masksToBounds = YES; + _thirdImageView.layer.cornerRadius = 8; + _thirdImageView.layer.borderColor = [UIColor whiteColor].CGColor; + _thirdImageView.layer.borderWidth = 1; + _thirdImageView.backgroundColor= [UIColor blueColor]; + } + return _thirdImageView; +} + +- (NetImageView *)fourImageView { + if (!_fourImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _fourImageView = [[NetImageView alloc] initWithConfig:config]; + _fourImageView.layer.masksToBounds = YES; + _fourImageView.layer.cornerRadius = 8; + _fourImageView.layer.borderColor = [UIColor whiteColor].CGColor; + _fourImageView.layer.borderWidth = 1; + } + return _fourImageView; +} + + +- (NetImageView *)fifImageView { + if (!_fifImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _fifImageView = [[NetImageView alloc] initWithConfig:config]; + _fifImageView.layer.masksToBounds = YES; + _fifImageView.layer.cornerRadius = 8; + _fifImageView.layer.borderColor = [UIColor whiteColor].CGColor; + _fifImageView.layer.borderWidth = 1; + } + return _fifImageView; +} + + + +@end diff --git a/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPHomeRedommendCollectionViewCell.h b/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPHomeRedommendCollectionViewCell.h new file mode 100644 index 00000000..db738a6a --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPHomeRedommendCollectionViewCell.h @@ -0,0 +1,19 @@ +// +// YMHomeRedommendCollectionViewCell.h +// YUMI +// +// Created by YUMI on 2022/9/23. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class HomeRecommendRoomModel; +@interface XPHomeRedommendCollectionViewCell : UICollectionViewCell + +@property (nonatomic,strong, nullable) HomeRecommendRoomModel *recommendRoomInfo; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPHomeRedommendCollectionViewCell.m b/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPHomeRedommendCollectionViewCell.m new file mode 100644 index 00000000..032f3a87 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPHomeRedommendCollectionViewCell.m @@ -0,0 +1,219 @@ +// +// YMHomeRedommendCollectionViewCell.m +// YUMI +// +// Created by YUMI on 2022/9/23. +// + +#import "XPHomeRedommendCollectionViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "UIImage+Utils.h" +///Model +#import "HomeRecommendRoomModel.h" + +@interface XPHomeRedommendCollectionViewCell () +///背景 +@property (nonatomic,strong) UIView * backView; +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///容器 +@property (nonatomic,strong) UIView * personContainerView; +///显示🔥 +@property (nonatomic,strong) UIImageView *hotImageView; +///显示在线人数 +@property (nonatomic,strong) UILabel *numberLabel; +///名字下的阴影 +@property (nonatomic,strong) UIImageView *shadowImageView; +///显示名字 +@property (nonatomic,strong) UILabel *nickLabel; +///标签 +@property (nonatomic,strong) UIButton *tagButton; +@end + +@implementation XPHomeRedommendCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backView]; + + [self.backView addSubview:self.avatarImageView]; + [self.backView addSubview:self.shadowImageView]; + [self.backView addSubview:self.personContainerView]; + [self.backView addSubview:self.nickLabel]; + [self.backView addSubview:self.tagButton]; + + [self.personContainerView addSubview:self.hotImageView]; + [self.personContainerView addSubview:self.numberLabel]; +} + +- (void)initSubViewConstraints { + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + [self.hotImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(13, 13)); + make.right.mas_equalTo(self.numberLabel.mas_left).offset(-2); + make.centerY.mas_equalTo(self.personContainerView); + }]; + + [self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.personContainerView.mas_right).offset(-4); + make.centerY.mas_equalTo(self.personContainerView); + }]; + + [self.shadowImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backView); + make.height.mas_equalTo(48); + make.bottom.mas_equalTo(self.backView); + }]; + + [self.tagButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.left.mas_equalTo(self.backView); + make.size.mas_equalTo(CGSizeMake(54, 20)); + }]; + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backView).offset(6); + make.right.mas_equalTo(self.backView).offset(-6); + make.centerY.mas_equalTo(self.shadowImageView); + }]; + + [self.personContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.hotImageView.mas_left).offset(-4); + make.height.mas_equalTo(16); + make.top.mas_equalTo(self.backView).offset(4); + make.right.mas_equalTo(self.backView).offset(-4); + }]; + + [self.shadowImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(28); + }]; +} + + +#pragma mark - Getters And Setters +- (void)setRecommendRoomInfo:(HomeRecommendRoomModel *)recommendRoomInfo { + _recommendRoomInfo = recommendRoomInfo; + if (_recommendRoomInfo) { + self.avatarImageView.imageUrl = _recommendRoomInfo.avatar; + self.numberLabel.text = [NSString stringWithFormat:@"%ld", _recommendRoomInfo.onlineNum]; + self.nickLabel.text = _recommendRoomInfo.title; + self.personContainerView.hidden = NO; + self.tagButton.hidden = NO; + if (_recommendRoomInfo.crossPking) { + [self.tagButton setTitle:YMLocalizedString(@"XPHomeRedommendCollectionViewCell0") forState:UIControlStateNormal]; + } else { + if (_recommendRoomInfo.iconContent.length > 0) { + [self.tagButton setTitle:_recommendRoomInfo.iconContent forState:UIControlStateNormal]; + } else { + self.tagButton.hidden = YES; + } + } + + } else { + self.avatarImageView.image = [UIImage imageNamed:@"home_recommend_room_placeholder"]; + self.nickLabel.text = YMLocalizedString(@"XPHomeRedommendCollectionViewCell1"); + self.personContainerView.hidden = YES; + self.tagButton.hidden = YES; + } +} + +- (UIView *)backView { + if (!_backView) { + _backView = [[UIView alloc] init]; + _backView.backgroundColor = [UIColor clearColor]; + _backView.layer.masksToBounds = YES; + _backView.layer.cornerRadius = 8; + _backView.layer.shadowColor = UIColorRGBAlpha(0xE5E5F2, 0.34).CGColor; + _backView.layer.shadowOffset = CGSizeMake(3, 3); + } + return _backView; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 8; + } + return _avatarImageView; +} + +- (UIButton *)tagButton { + if (!_tagButton) { + _tagButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_tagButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _tagButton.titleLabel.font = [UIFont systemFontOfSize:10]; + [_tagButton setBackgroundImage:[UIImage imageNamed:@"home_recommend_tag_bg"] forState:UIControlStateNormal]; + } + return _tagButton; +} + +- (UIView *)personContainerView { + if (!_personContainerView) { + _personContainerView = [[UIView alloc] init]; + _personContainerView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.29]; + _personContainerView.layer.masksToBounds = YES; + _personContainerView.layer.cornerRadius = 8; + } + return _personContainerView; +} + +- (UIImageView *)hotImageView { + if (!_hotImageView) { + _hotImageView = [[UIImageView alloc] init]; + _hotImageView.userInteractionEnabled = YES; + _hotImageView.image = [UIImage imageNamed:@"room_like_collect_room_hot"]; + } + return _hotImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont boldSystemFontOfSize:12]; + _nickLabel.textColor = [UIColor whiteColor]; + _nickLabel.textAlignment = NSTextAlignmentCenter; + } + return _nickLabel; +} + +- (UILabel *)numberLabel { + if (!_numberLabel) { + _numberLabel = [[UILabel alloc] init]; + _numberLabel.font = [UIFont systemFontOfSize:9]; + _numberLabel.textColor = [UIColor whiteColor]; + } + return _numberLabel; +} + +- (UIImageView *)shadowImageView { + if (!_shadowImageView) { + _shadowImageView = [[UIImageView alloc] init]; + _shadowImageView.userInteractionEnabled = YES; + _shadowImageView.image = [UIImage imageNamed:@"home_recommend_nick_shadow_bg"]; + } + return _shadowImageView; +} + +@end diff --git a/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPHomeSearchRecordCell.h b/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPHomeSearchRecordCell.h new file mode 100644 index 00000000..23416b8c --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPHomeSearchRecordCell.h @@ -0,0 +1,18 @@ +// +// YMHomeSearchRecordCell.h +// YUMI +// +// Created by YUMI on 2022/9/5. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPHomeSearchRecordCell : UICollectionViewCell + +@property (nonatomic, copy) NSString *recordString; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPHomeSearchRecordCell.m b/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPHomeSearchRecordCell.m new file mode 100644 index 00000000..f312f555 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPHomeSearchRecordCell.m @@ -0,0 +1,51 @@ +// +// YMHomeSearchRecordCell.m +// YUMI +// +// Created by YUMI on 2022/9/5. +// + +#import "XPHomeSearchRecordCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" + +@interface XPHomeSearchRecordCell () + +///昵称 +@property (nonatomic,strong) UILabel *titleLabel; + +@end + +@implementation XPHomeSearchRecordCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + self.backgroundColor = [UIColor whiteColor]; + self.layer.cornerRadius = 13; + self.layer.masksToBounds = YES; + [self addSubview:self.titleLabel]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self); + }]; + } + return self; +} +- (void)setRecordString:(NSString *)recordString { + self.titleLabel.text = recordString; +} + +#pragma mark - Getter & Setter +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _titleLabel.font = [UIFont systemFontOfSize:12]; + } + return _titleLabel; +} + + +@end diff --git a/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPSearchListTableViewCell.h b/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPSearchListTableViewCell.h new file mode 100644 index 00000000..19946cf4 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPSearchListTableViewCell.h @@ -0,0 +1,28 @@ +// +// YMSearchListTableViewCell.h +// YUMI +// +// Created by YUMI on 2021/11/29. +// + +#import +NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(NSInteger, SearchType){ + ///搜索房间 + SearchType_Room = 1, + ///搜索用户 + SearchType_Users = 2, +}; + +@class HomeSearchResultModel, HomeRecommendRoomModel; +@interface XPSearchListTableViewCell : UITableViewCell + +///配置数据 +- (void)configData:(HomeSearchResultModel *)resultModel type:(SearchType)type; + +///配置大家都在搜房间列表 +- (void)configEveryoneData:(HomeRecommendRoomModel *)resultModel; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPSearchListTableViewCell.m b/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPSearchListTableViewCell.m new file mode 100644 index 00000000..523c6d4d --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/View/Cell/XPSearchListTableViewCell.m @@ -0,0 +1,237 @@ +// +// YMSearchListTableViewCell.m +// YUMI +// +// Created by YUMI on 2021/11/29. +// + +#import "XPSearchListTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +///Model +#import "HomeSearchResultModel.h" +#import "HomeRecommendRoomModel.h" +///View +#import "NetImageView.h" + + +@interface XPSearchListTableViewCell () +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///名字的容器 +@property (nonatomic,strong) UIStackView *nameStackView; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///性别 +@property (nonatomic,strong) UIImageView *sexImageView; +///显示id +@property (nonatomic,strong) UILabel *idLabel; +///分割线 +@property (nonatomic,strong) UIView * lineView; +///容器 +@property (nonatomic,strong) UIView * numberView; +///音符 +@property (nonatomic,strong) UIImageView *noteImageView; +///数量 +@property (nonatomic,strong) UILabel *numberLabel; +@end + +@implementation XPSearchListTableViewCell +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Public Method +- (void)configData:(HomeSearchResultModel *)resultModel type:(SearchType)type { + if (resultModel) { + self.avatarImageView.imageUrl = resultModel.avatar; + self.nickLabel.text = type == SearchType_Room ? resultModel.title : resultModel.nick; + self.idLabel.text = [NSString stringWithFormat:@"%@号:%@",AppName, resultModel.erbanNo]; + self.sexImageView.image = resultModel.gender == GenderType_Female ? [UIImage imageNamed:@"common_female"] : [UIImage imageNamed:@"common_male"]; + if (type == SearchType_Users) { + self.numberLabel.text = YMLocalizedString(@"XPSearchListTableViewCell1"); + self.numberView.hidden = resultModel.roomUid.length <= 0; + } else { + if (resultModel.onlineNum > 100) { + self.numberLabel.text = [NSString stringWithFormat:@"%ld", resultModel.onlineNum]; + } else { + self.numberLabel.text = [NSString stringWithFormat:@" %ld ", resultModel.onlineNum]; + } + self.numberView.hidden = !resultModel.valid; + } + } +} + +- (void)configEveryoneData:(HomeRecommendRoomModel *)resultModel { + if (resultModel) { + self.avatarImageView.imageUrl = resultModel.avatar; + self.nickLabel.text = resultModel.title ; + self.idLabel.text = [NSString stringWithFormat:@"%@号:%@",AppName, resultModel.erbanNo]; + self.sexImageView.image = resultModel.gender == GenderType_Female ? [UIImage imageNamed:@"common_female"] : [UIImage imageNamed:@"common_male"]; + if (resultModel.onlineNum > 100) { + self.numberLabel.text = [NSString stringWithFormat:@"%ld", resultModel.onlineNum]; + } else { + self.numberLabel.text = [NSString stringWithFormat:@" %ld ", resultModel.onlineNum]; + } + } +} + +#pragma mark - Private Method +- (void)initSubViews { + self.selectionStyle = UITableViewCellSelectionStyleNone; + self.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.nameStackView]; + [self.contentView addSubview:self.idLabel]; + [self.contentView addSubview:self.numberView]; + [self.contentView addSubview:self.lineView]; + + [self.numberView addSubview:self.numberLabel]; + [self.numberView addSubview:self.noteImageView]; + + [self.nameStackView addArrangedSubview:self.nickLabel]; + [self.nameStackView addArrangedSubview:self.sexImageView]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(45, 45)); + make.left.mas_equalTo(self.contentView).offset(15); + make.centerY.mas_equalTo(self.contentView); + }]; + + [self.nameStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(13); + make.height.mas_equalTo(20); + make.bottom.mas_equalTo(self.avatarImageView.mas_centerY).offset(-1.5); + }]; + + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nameStackView); + make.top.mas_equalTo(self.avatarImageView.mas_centerY).offset(1.5); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nameStackView); + make.right.mas_equalTo(self.contentView).offset(-15); + make.bottom.mas_equalTo(self.contentView); + make.height.mas_equalTo(1); + }]; + + [self.numberView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(18); + make.right.mas_equalTo(self.contentView).offset(-15); + make.centerY.mas_equalTo(self.contentView); + make.left.mas_equalTo(self.noteImageView.mas_left).offset(-8); + }]; + + [self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.numberView); + make.right.mas_equalTo(self.numberView.mas_right).offset(-5); + }]; + + [self.noteImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.numberView); + make.size.mas_equalTo(CGSizeMake(10, 9)); + make.right.mas_equalTo(self.numberLabel.mas_left).offset(-3); + }]; +} + +#pragma mark - Getters And Setters +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 45/2; + _avatarImageView.contentMode = UIViewContentModeScaleAspectFill; + } + return _avatarImageView; +} + +- (UIStackView *)nameStackView { + if (!_nameStackView) { + _nameStackView = [[UIStackView alloc] init]; + _nameStackView.axis = UILayoutConstraintAxisHorizontal; + _nameStackView.distribution = UIStackViewDistributionFill; + _nameStackView.alignment = UIStackViewAlignmentCenter; + _nameStackView.spacing = 2; + } + return _nameStackView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.text = YMLocalizedString(@"XPSearchListTableViewCell3"); + _nickLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:15]; + _nickLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _nickLabel; +} + +- (UIImageView *)sexImageView { + if (!_sexImageView) { + _sexImageView = [[UIImageView alloc] init]; + _sexImageView.userInteractionEnabled = YES; + } + return _sexImageView; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.font = [UIFont systemFontOfSize:13]; + _idLabel.textColor = [DJDKMIMOMColor textThirdColor]; + } + return _idLabel; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _lineView; +} + +- (UIView *)numberView { + if (!_numberView) { + _numberView = [[UIView alloc] init]; + _numberView.backgroundColor = [UIColor clearColor]; + _numberView.layer.masksToBounds = YES; + _numberView.layer.cornerRadius = 18/2; + _numberView.layer.borderColor = [DJDKMIMOMColor appEmphasizeColor].CGColor; + _numberView.layer.borderWidth = 1; + } + return _numberView; +} + +- (UIImageView *)noteImageView { + if (!_noteImageView) { + _noteImageView = [[UIImageView alloc] init]; + _noteImageView.userInteractionEnabled = YES; + _noteImageView.image = [UIImage imageNamed:@"home_search_user_online"]; + } + return _noteImageView; +} + +- (UILabel *)numberLabel { + if (!_numberLabel) { + _numberLabel = [[UILabel alloc] init]; + _numberLabel.text = YMLocalizedString(@"XPSearchListTableViewCell4"); + _numberLabel.font = [UIFont systemFontOfSize:10]; + _numberLabel.textColor = [DJDKMIMOMColor appEmphasizeColor]; + } + return _numberLabel; +} + +@end diff --git a/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIHuntforStatementTabulationRegardElement.h b/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIHuntforStatementTabulationRegardElement.h deleted file mode 100644 index 039f3854..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIHuntforStatementTabulationRegardElement.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YMSearchListTableViewCell.h -// YUMI -// -// Created by YUMI on 2021/11/29. -// - -#import -NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSInteger, SearchGenre){ - - SearchGenre_Room = 1, - - SearchGenre_Users = 2, -}; - -@class ResidenceHuntforConsequentMatrix, ResidenceEncourageChamberMatrix; -@interface YUMIHuntforStatementTabulationRegardElement : UITableViewCell - -- (void)prohibitipositionTowardsoloudspeaker:(ResidenceHuntforConsequentMatrix *)resultModel type:(SearchGenre)type; - -- (void)prohibitipositionEachoneTowardsoloudspeaker:(ResidenceEncourageChamberMatrix *)resultModel; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIHuntforStatementTabulationRegardElement.m b/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIHuntforStatementTabulationRegardElement.m deleted file mode 100644 index 67ec6426..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIHuntforStatementTabulationRegardElement.m +++ /dev/null @@ -1,224 +0,0 @@ -// -// YMSearchListTableViewCell.m -// YUMI -// -// Created by YUMI on 2021/11/29. -// - -#import "YUMIHuntforStatementTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "ResidenceHuntforConsequentMatrix.h" -#import "ResidenceEncourageChamberMatrix.h" -#import "NetIndicateRegard.h" - - -@interface YUMIHuntforStatementTabulationRegardElement () -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UIStackView *constituteHierarchyRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UIImageView *seaxualityIndicateRegard; -@property (nonatomic,strong) UILabel *idSequencignation; -@property (nonatomic,strong) UIView * burlywoodRegard; -@property (nonatomic,strong) UIView * digitalRegard; -@property (nonatomic,strong) UIImageView *bookIndicateRegard; -@property (nonatomic,strong) UILabel *numberLabel; -@end - -@implementation YUMIHuntforStatementTabulationRegardElement -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Public Method -- (void)prohibitipositionTowardsoloudspeaker:(ResidenceHuntforConsequentMatrix *)resultModel type:(SearchGenre)type { - if (resultModel) { - self.intelligenceportraitIndicateRegard.imageUrl = resultModel.avatar; - self.monicerSequencignation.text = type == SearchGenre_Room ? resultModel.title : resultModel.nick; - self.idSequencignation.text = [NSString stringWithFormat:@"%@号:%@",AppName, resultModel.erbanNo]; - self.seaxualityIndicateRegard.image = resultModel.gender == GenderGenre_Female ? [UIImage imageNamed:@"yumi_same_female"] : [UIImage imageNamed:@"yumi_same_male"]; - if (type == SearchGenre_Users) { - self.numberLabel.text = YMLocalizedString(@"YUMI_Search_List_Table_View_Cell_1"); - self.digitalRegard.hidden = resultModel.roomUid.length <= 0; - } else { - if (resultModel.onlineNum > 100) { - self.numberLabel.text = [NSString stringWithFormat:@"%ld", resultModel.onlineNum]; - } else { - self.numberLabel.text = [NSString stringWithFormat:@" %ld ", resultModel.onlineNum]; - } - self.digitalRegard.hidden = !resultModel.valid; - } - } -} - -- (void)prohibitipositionEachoneTowardsoloudspeaker:(ResidenceEncourageChamberMatrix *)resultModel { - if (resultModel) { - self.intelligenceportraitIndicateRegard.imageUrl = resultModel.avatar; - self.monicerSequencignation.text = resultModel.title ; - self.idSequencignation.text = [NSString stringWithFormat:@"%@号:%@",AppName, resultModel.erbanNo]; - self.seaxualityIndicateRegard.image = resultModel.gender == GenderGenre_Female ? [UIImage imageNamed:@"yumi_same_female"] : [UIImage imageNamed:@"yumi_same_male"]; - if (resultModel.onlineNum > 100) { - self.numberLabel.text = [NSString stringWithFormat:@"%ld", resultModel.onlineNum]; - } else { - self.numberLabel.text = [NSString stringWithFormat:@" %ld ", resultModel.onlineNum]; - } - } -} - -#pragma mark - Private Method -- (void)initSubViews { - self.selectionStyle = UITableViewCellSelectionStyleNone; - self.backgroundColor = [UIColor clearColor]; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.constituteHierarchyRegard]; - [self.contentView addSubview:self.idSequencignation]; - [self.contentView addSubview:self.digitalRegard]; - [self.contentView addSubview:self.burlywoodRegard]; - - [self.digitalRegard addSubview:self.numberLabel]; - [self.digitalRegard addSubview:self.bookIndicateRegard]; - - [self.constituteHierarchyRegard addArrangedSubview:self.monicerSequencignation]; - [self.constituteHierarchyRegard addArrangedSubview:self.seaxualityIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(45, 45)); - make.left.mas_equalTo(self.contentView).offset(15); - make.centerY.mas_equalTo(self.contentView); - }]; - - [self.constituteHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(13); - make.height.mas_equalTo(20); - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(-1.5); - }]; - - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.constituteHierarchyRegard); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(1.5); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.constituteHierarchyRegard); - make.right.mas_equalTo(self.contentView).offset(-15); - make.bottom.mas_equalTo(self.contentView); - make.height.mas_equalTo(1); - }]; - - [self.digitalRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(18); - make.right.mas_equalTo(self.contentView).offset(-15); - make.centerY.mas_equalTo(self.contentView); - make.left.mas_equalTo(self.bookIndicateRegard.mas_left).offset(-8); - }]; - - [self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.digitalRegard); - make.right.mas_equalTo(self.digitalRegard.mas_right).offset(-5); - }]; - - [self.bookIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.digitalRegard); - make.size.mas_equalTo(CGSizeMake(10, 9)); - make.right.mas_equalTo(self.numberLabel.mas_left).offset(-3); - }]; -} - -#pragma mark - Getters And Setters -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 45/2; - _intelligenceportraitIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _intelligenceportraitIndicateRegard; -} - -- (UIStackView *)constituteHierarchyRegard { - if (!_constituteHierarchyRegard) { - _constituteHierarchyRegard = [[UIStackView alloc] init]; - _constituteHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _constituteHierarchyRegard.distribution = UIStackViewDistributionFill; - _constituteHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _constituteHierarchyRegard.spacing = 2; - } - return _constituteHierarchyRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.text = YMLocalizedString(@"YUMI_Search_List_Table_View_Cell_3"); - _monicerSequencignation.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:15]; - _monicerSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _monicerSequencignation; -} - -- (UIImageView *)seaxualityIndicateRegard { - if (!_seaxualityIndicateRegard) { - _seaxualityIndicateRegard = [[UIImageView alloc] init]; - _seaxualityIndicateRegard.userInteractionEnabled = YES; - } - return _seaxualityIndicateRegard; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.font = [UIFont systemFontOfSize:13]; - _idSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - } - return _idSequencignation; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _burlywoodRegard; -} - -- (UIView *)digitalRegard { - if (!_digitalRegard) { - _digitalRegard = [[UIView alloc] init]; - _digitalRegard.backgroundColor = [UIColor clearColor]; - _digitalRegard.layer.masksToBounds = YES; - _digitalRegard.layer.cornerRadius = 18/2; - _digitalRegard.layer.borderColor = [DJDKMIMOMColor aplictowardsionUnderlinePrettify].CGColor; - _digitalRegard.layer.borderWidth = 1; - } - return _digitalRegard; -} - -- (UIImageView *)bookIndicateRegard { - if (!_bookIndicateRegard) { - _bookIndicateRegard = [[UIImageView alloc] init]; - _bookIndicateRegard.userInteractionEnabled = YES; - _bookIndicateRegard.image = [UIImage imageNamed:@"yumi_main_search_user_online"]; - } - return _bookIndicateRegard; -} - -- (UILabel *)numberLabel { - if (!_numberLabel) { - _numberLabel = [[UILabel alloc] init]; - _numberLabel.text = YMLocalizedString(@"YUMI_Search_List_Table_View_Cell_4"); - _numberLabel.font = [UIFont systemFontOfSize:10]; - _numberLabel.textColor = [DJDKMIMOMColor aplictowardsionUnderlinePrettify]; - } - return _numberLabel; -} - -@end diff --git a/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIResidenceAssembleChamberTabulationRegardElement.h b/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIResidenceAssembleChamberTabulationRegardElement.h deleted file mode 100644 index 5974a405..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIResidenceAssembleChamberTabulationRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMHomeCollectRoomTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/3/2. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ResidenceAssembleChamberMatrix; -@interface YUMIResidenceAssembleChamberTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) ResidenceAssembleChamberMatrix *roomInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIResidenceAssembleChamberTabulationRegardElement.m b/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIResidenceAssembleChamberTabulationRegardElement.m deleted file mode 100644 index 01394461..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIResidenceAssembleChamberTabulationRegardElement.m +++ /dev/null @@ -1,358 +0,0 @@ -// -// YMHomeCollectRoomTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/3/2. -// 收藏房间 - -#import "YUMIResidenceAssembleChamberTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "NSArray+Safe.h" -#import "UIImage+Utils.h" -#import "ResidenceAssembleChamberMatrix.h" - -@interface YUMIResidenceAssembleChamberTabulationRegardElement () -@property (nonatomic,strong) UIButton *combateBtuton; -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) NetIndicateRegard *coupleIndicateRegard; -@property (nonatomic,strong) UILabel *idSequencignation; -@property (nonatomic,strong) UIImageView * featureAccommoengagementdRegard; -@property (nonatomic,strong) UIImageView *thermalIndicateRegard; -@property (nonatomic,strong) UILabel *numberLabel; -@property (nonatomic,strong) UIView *loudspeakerAccommoengagementdRegard; -@property (nonatomic,strong) NetIndicateRegard *thresholdIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *instantIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *tertiusIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *fourIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *fifIndicateRegard; -@property (nonatomic,strong) NSArray *loudspeakerConsumerGarment; -@end - -@implementation YUMIResidenceAssembleChamberTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.encourageIndicateRegard]; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - - [self.encourageIndicateRegard addSubview:self.monicerSequencignation]; - [self.encourageIndicateRegard addSubview:self.coupleIndicateRegard]; - [self.encourageIndicateRegard addSubview:self.idSequencignation]; - [self.encourageIndicateRegard addSubview:self.featureAccommoengagementdRegard]; - [self.encourageIndicateRegard addSubview:self.loudspeakerAccommoengagementdRegard]; - - [self.featureAccommoengagementdRegard addSubview:self.thermalIndicateRegard]; - [self.featureAccommoengagementdRegard addSubview:self.numberLabel]; - - [self.intelligenceportraitIndicateRegard addSubview:self.combateBtuton]; - [self.loudspeakerAccommoengagementdRegard addSubview:self.fifIndicateRegard]; - [self.loudspeakerAccommoengagementdRegard addSubview:self.fourIndicateRegard]; - [self.loudspeakerAccommoengagementdRegard addSubview:self.tertiusIndicateRegard]; - [self.loudspeakerAccommoengagementdRegard addSubview:self.instantIndicateRegard]; - [self.loudspeakerAccommoengagementdRegard addSubview:self.thresholdIndicateRegard]; - self.loudspeakerConsumerGarment = @[self.thresholdIndicateRegard, self.instantIndicateRegard, self.tertiusIndicateRegard, self.fourIndicateRegard, self.fifIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(74, 74)); - make.left.mas_equalTo(self.contentView).offset(15); - make.top.mas_equalTo(self.contentView); - }]; - - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(15); - make.top.mas_equalTo(self.contentView).offset(8); - make.height.mas_equalTo(66); - }]; - - [self.combateBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(44, 16)); - make.left.top.mas_equalTo(self.intelligenceportraitIndicateRegard); - }]; - - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageIndicateRegard).offset(82); - make.top.mas_equalTo(self.encourageIndicateRegard).offset(12); - make.right.mas_lessThanOrEqualTo(self.featureAccommoengagementdRegard.mas_left).offset(-5); - }]; - - [self.coupleIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(43, 18)); - make.left.mas_equalTo(self.monicerSequencignation); - make.top.mas_equalTo(self.monicerSequencignation.mas_bottom).offset(13); - }]; - - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.coupleIndicateRegard); - make.left.mas_equalTo(self.coupleIndicateRegard.mas_right).offset(8); - }]; - - [self.featureAccommoengagementdRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.thermalIndicateRegard.mas_left).offset(-14); - make.height.mas_equalTo(21); - make.top.mas_equalTo(self.encourageIndicateRegard); - make.right.mas_equalTo(self.encourageIndicateRegard); - }]; - - [self.thermalIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(13, 13)); - make.right.mas_equalTo(self.numberLabel.mas_left).offset(-2); - make.centerY.mas_equalTo(self.featureAccommoengagementdRegard); - }]; - - [self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.featureAccommoengagementdRegard.mas_right).offset(-5); - make.centerY.mas_equalTo(self.featureAccommoengagementdRegard); - }]; - - [self.loudspeakerAccommoengagementdRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.encourageIndicateRegard).offset(-13); - make.height.mas_equalTo(16); - make.centerY.mas_equalTo(self.coupleIndicateRegard); - make.left.mas_equalTo(self.fifIndicateRegard.mas_left).offset(-5); - }]; - - [self.thresholdIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(16, 16)); - make.right.mas_equalTo(self.loudspeakerAccommoengagementdRegard); - make.centerY.mas_equalTo(self.loudspeakerAccommoengagementdRegard); - }]; - - [self.instantIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.thresholdIndicateRegard); - make.right.mas_equalTo(self.thresholdIndicateRegard.mas_left).offset(2); - }]; - - [self.tertiusIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.thresholdIndicateRegard); - make.right.mas_equalTo(self.instantIndicateRegard.mas_left).offset(2); - }]; - - [self.fourIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.thresholdIndicateRegard); - make.right.mas_equalTo(self.tertiusIndicateRegard.mas_left).offset(2); - }]; - - [self.fifIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.thresholdIndicateRegard); - make.right.mas_equalTo(self.fourIndicateRegard.mas_left).offset(2); - }]; -} -#pragma mark - Getters And Setters -- (void)setRoomInfo:(ResidenceAssembleChamberMatrix *)roomInfo { - _roomInfo = roomInfo; - if (_roomInfo) { - self.intelligenceportraitIndicateRegard.imageUrl = _roomInfo.roomAvatar; - self.monicerSequencignation.text = _roomInfo.roomName; - self.coupleIndicateRegard.imageUrl = _roomInfo.tagPict; - self.idSequencignation.text = [NSString stringWithFormat:@"ID:%@", _roomInfo.erbanNo]; - self.numberLabel.text = _roomInfo.roomOnlineNum; - self.combateBtuton.hidden = !_roomInfo.crossPking; - if (_roomInfo.micUsers.count > 0) { - self.loudspeakerAccommoengagementdRegard.hidden = NO; - for (NSInteger i = 0; i < self.loudspeakerConsumerGarment.count; i++) { - NetIndicateRegard * imageView = [self.loudspeakerConsumerGarment secureGroalTowardsIndictowardsrix1:i]; - if (i< _roomInfo.micUsers.count) { - ResidenceDisportLoudspeakerConsumerMatrix * micUserInfo = [_roomInfo.micUsers secureGroalTowardsIndictowardsrix1:i]; - imageView.imageUrl = micUserInfo.avatar; - imageView.hidden = NO; - } else { - imageView.hidden = YES; - } - } - } else { - self.loudspeakerAccommoengagementdRegard.hidden = YES; - } - - } -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 8; - _intelligenceportraitIndicateRegard.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - } - return _intelligenceportraitIndicateRegard; -} - -- (UIButton *)combateBtuton { - if (!_combateBtuton) { - _combateBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_combateBtuton setTitle:YMLocalizedString(@"YUMI_Home_Collect_Room_Table_View_Cell_0") forState:UIControlStateNormal]; - [_combateBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _combateBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_combateBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_main_like_across_pk_background"] forState:UIControlStateNormal]; - _combateBtuton.layer.masksToBounds = YES; - _combateBtuton.layer.cornerRadius = 10; - } - return _combateBtuton; -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - _encourageIndicateRegard.layer.masksToBounds = YES; - _encourageIndicateRegard.layer.shadowColor = UIColorRGBAlpha(0xE5E5F2, 0.34).CGColor; - _encourageIndicateRegard.layer.cornerRadius = 12; - _encourageIndicateRegard.layer.shadowOffset = CGSizeMake(4, 4); - _encourageIndicateRegard.image = [UIImage imageWithColor:[DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]]; - } - return _encourageIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:14]; - _monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _monicerSequencignation; -} - -- (NetIndicateRegard *)coupleIndicateRegard { - if (!_coupleIndicateRegard) { - _coupleIndicateRegard = [[NetIndicateRegard alloc] init]; - } - return _coupleIndicateRegard; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.font = [UIFont systemFontOfSize:12]; - _idSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _idSequencignation; -} - -- (UIImageView *)featureAccommoengagementdRegard { - if (!_featureAccommoengagementdRegard) { - _featureAccommoengagementdRegard = [[UIImageView alloc] init]; - _featureAccommoengagementdRegard.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFFFFFF), UIColorFromRGB(0xF3F3FA)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(20, 16)]; - } - return _featureAccommoengagementdRegard; -} - -- (UIImageView *)thermalIndicateRegard { - if (!_thermalIndicateRegard) { - _thermalIndicateRegard = [[UIImageView alloc] init]; - _thermalIndicateRegard.userInteractionEnabled = YES; - _thermalIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_like_collect_scope_hot"]; - } - return _thermalIndicateRegard; -} - -- (UILabel *)numberLabel { - if (!_numberLabel) { - _numberLabel = [[UILabel alloc] init]; - _numberLabel.font = [UIFont boldSystemFontOfSize:12]; - _numberLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _numberLabel; -} - -- (UIView *)loudspeakerAccommoengagementdRegard { - if (!_loudspeakerAccommoengagementdRegard) { - _loudspeakerAccommoengagementdRegard = [[UIView alloc] init]; - _loudspeakerAccommoengagementdRegard.backgroundColor = [UIColor clearColor]; - } - return _loudspeakerAccommoengagementdRegard; -} - -- (NetIndicateRegard *)thresholdIndicateRegard { - if (!_thresholdIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _thresholdIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _thresholdIndicateRegard.layer.masksToBounds = YES; - _thresholdIndicateRegard.layer.cornerRadius = 8; - _thresholdIndicateRegard.layer.borderColor = [UIColor whiteColor].CGColor; - _thresholdIndicateRegard.layer.borderWidth = 1; - _thresholdIndicateRegard.backgroundColor= [UIColor redColor]; - } - return _thresholdIndicateRegard; -} - -- (NetIndicateRegard *)instantIndicateRegard { - if (!_instantIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _instantIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _instantIndicateRegard.layer.masksToBounds = YES; - _instantIndicateRegard.layer.cornerRadius = 8; - _instantIndicateRegard.layer.borderColor = [UIColor whiteColor].CGColor; - _instantIndicateRegard.layer.borderWidth = 1; - _instantIndicateRegard.backgroundColor= [UIColor yellowColor]; - } - return _instantIndicateRegard; -} - -- (NetIndicateRegard *)tertiusIndicateRegard { - if (!_tertiusIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _tertiusIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _tertiusIndicateRegard.layer.masksToBounds = YES; - _tertiusIndicateRegard.layer.cornerRadius = 8; - _tertiusIndicateRegard.layer.borderColor = [UIColor whiteColor].CGColor; - _tertiusIndicateRegard.layer.borderWidth = 1; - _tertiusIndicateRegard.backgroundColor= [UIColor blueColor]; - } - return _tertiusIndicateRegard; -} - -- (NetIndicateRegard *)fourIndicateRegard { - if (!_fourIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _fourIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _fourIndicateRegard.layer.masksToBounds = YES; - _fourIndicateRegard.layer.cornerRadius = 8; - _fourIndicateRegard.layer.borderColor = [UIColor whiteColor].CGColor; - _fourIndicateRegard.layer.borderWidth = 1; - } - return _fourIndicateRegard; -} - - -- (NetIndicateRegard *)fifIndicateRegard { - if (!_fifIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _fifIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _fifIndicateRegard.layer.masksToBounds = YES; - _fifIndicateRegard.layer.cornerRadius = 8; - _fifIndicateRegard.layer.borderColor = [UIColor whiteColor].CGColor; - _fifIndicateRegard.layer.borderWidth = 1; - } - return _fifIndicateRegard; -} - - - -@end diff --git a/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIResidenceConsiderationAssembletionRegardElement.h b/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIResidenceConsiderationAssembletionRegardElement.h deleted file mode 100644 index 8b85f158..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIResidenceConsiderationAssembletionRegardElement.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMHomeAttentionCollectionViewCell.h -// YUMI -// -// Created by YUMI on 2022/3/2. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ResidenceEnergeticChamberMatrix, YUMIManeTerminalImpressionMatrix; -@interface YUMIResidenceConsiderationAssembletionRegardElement : UICollectionViewCell - -@property (nonatomic,strong) ResidenceEnergeticChamberMatrix *liveChamber; -@property (nonatomic, strong) YUMIManeTerminalImpressionMatrix *reflectionChamber; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIResidenceConsiderationAssembletionRegardElement.m b/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIResidenceConsiderationAssembletionRegardElement.m deleted file mode 100644 index 5b69c00f..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIResidenceConsiderationAssembletionRegardElement.m +++ /dev/null @@ -1,167 +0,0 @@ -// -// YMHomeAttentionCollectionViewCell.m -// YUMI -// -// Created by YUMI on 2022/3/2. -// - -#import "YUMIResidenceConsiderationAssembletionRegardElement.h" -#import -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "ResidenceEnergeticChamberMatrix.h" -#import "YUMIManeTerminalImpressionMatrix.h" - -@interface YUMIResidenceConsiderationAssembletionRegardElement () -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic, strong) UIImageView *bookBackgroundIndicateRegard; -@property (nonatomic, strong) UILabel *liveSequencignation; -@property (nonatomic,strong) UIImageView *bookIndicateRegard; -@property (nonatomic,strong) NSArray *brectifynessGarment; -@end - -@implementation YUMIResidenceConsiderationAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.monicerSequencignation]; - - [self.intelligenceportraitIndicateRegard addSubview:self.bookBackgroundIndicateRegard]; - [self.bookBackgroundIndicateRegard addSubview:self.bookIndicateRegard]; - [self.bookBackgroundIndicateRegard addSubview:self.liveSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(56, 56)); - make.centerX.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.contentView); - }]; - - [self.bookBackgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.height.mas_equalTo(14); - }]; - - [self.bookIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.bookBackgroundIndicateRegard).mas_offset(15); - make.centerY.mas_equalTo(self.bookBackgroundIndicateRegard).mas_offset(-1); - make.height.mas_equalTo(7); - make.width.mas_equalTo(8); - }]; - [self.liveSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.bookIndicateRegard.mas_right).mas_offset(2); - make.centerY.mas_equalTo(self.bookIndicateRegard); - }]; - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_bottom).offset(4); - }]; -} - -#pragma mark - Getters And Setters -- (void)setLiveChamber:(ResidenceEnergeticChamberMatrix *)liveChamber { - _liveChamber = liveChamber; - if (_liveChamber) { - self.intelligenceportraitIndicateRegard.imageUrl = _liveChamber.avatar; - self.monicerSequencignation.text = _liveChamber.nick; - self.bookBackgroundIndicateRegard.hidden = _liveChamber.roomUid <=0; - self.bookIndicateRegard.hidden = _liveChamber.roomUid <=0; - if (_liveChamber.roomUid > 0) { - self.bookIndicateRegard.animationImages = self.brectifynessGarment; - self.bookIndicateRegard.animationDuration = 0.5; - [self.bookIndicateRegard startAnimating]; - }else { - self.bookIndicateRegard.animationImages = nil; - [self.bookIndicateRegard stopAnimating]; - } - } -} - -- (void)setReflectionChamber:(YUMIManeTerminalImpressionMatrix *)reflectionChamber { - _reflectionChamber = reflectionChamber; - if (reflectionChamber) { - self.intelligenceportraitIndicateRegard.imageUrl = reflectionChamber.avatar; - self.monicerSequencignation.text = reflectionChamber.title; - self.bookBackgroundIndicateRegard.hidden = YES; - } -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 56/2; - _intelligenceportraitIndicateRegard.layer.borderColor = [UIColor whiteColor].CGColor; - _intelligenceportraitIndicateRegard.layer.borderWidth = 1; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:12]; - _monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _monicerSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _monicerSequencignation; -} - -- (UIImageView *)bookBackgroundIndicateRegard { - if (!_bookBackgroundIndicateRegard) { - _bookBackgroundIndicateRegard = [[UIImageView alloc] init]; - _bookBackgroundIndicateRegard.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFFA936), UIColorFromRGB(0xFFCB47)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(52, 14)]; - } - return _bookBackgroundIndicateRegard; -} - -- (UILabel *)liveSequencignation { - if (!_liveSequencignation) { - _liveSequencignation = [[UILabel alloc] init]; - _liveSequencignation.font = [UIFont systemFontOfSize:8 weight:UIFontWeightMedium]; - _liveSequencignation.textColor = [UIColor whiteColor]; - _liveSequencignation.text = YMLocalizedString(@"YUMI_Home_Attention_Collection_View_Cell_0"); - } - return _liveSequencignation; -} - -- (UIImageView *)bookIndicateRegard { - if (!_bookIndicateRegard) { - _bookIndicateRegard = [[UIImageView alloc] init]; - _bookIndicateRegard.userInteractionEnabled = YES; - _bookIndicateRegard.animationRepeatCount = 0; - } - return _bookIndicateRegard; -} - -- (NSArray *)brectifynessGarment { - if (!_brectifynessGarment) { - NSMutableArray * array = [NSMutableArray array]; - for (int i = 0; i < 10; i++) { - NSString * imageName = [NSString stringWithFormat:@"home_note_0000%d",i]; - UIImage * image = [UIImage imageNamed:imageName]; - [array addObject:image]; - } - _brectifynessGarment = [array copy]; - } - return _brectifynessGarment; -} - -@end diff --git a/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIResidenceDeficitommendAssembletionRegardElement.h b/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIResidenceDeficitommendAssembletionRegardElement.h deleted file mode 100644 index 9b0557b0..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIResidenceDeficitommendAssembletionRegardElement.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMHomeRedommendCollectionViewCell.h -// YUMI -// -// Created by YUMI on 2022/9/23. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class ResidenceEncourageChamberMatrix; -@interface YUMIResidenceDeficitommendAssembletionRegardElement : UICollectionViewCell - -@property (nonatomic,strong, nullable) ResidenceEncourageChamberMatrix *encourageChamberAbstract; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIResidenceDeficitommendAssembletionRegardElement.m b/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIResidenceDeficitommendAssembletionRegardElement.m deleted file mode 100644 index 0bcb8275..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIResidenceDeficitommendAssembletionRegardElement.m +++ /dev/null @@ -1,208 +0,0 @@ -// -// YMHomeRedommendCollectionViewCell.m -// YUMI -// -// Created by YUMI on 2022/9/23. -// - -#import "YUMIResidenceDeficitommendAssembletionRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "UIImage+Utils.h" -#import "ResidenceEncourageChamberMatrix.h" - -@interface YUMIResidenceDeficitommendAssembletionRegardElement () -@property (nonatomic,strong) UIView * encourageRegard; -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UIView * featureAccommoengagementdRegard; -@property (nonatomic,strong) UIImageView *thermalIndicateRegard; -@property (nonatomic,strong) UILabel *numberLabel; -@property (nonatomic,strong) UIImageView *spossessowIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UIButton *coupleBtuton; -@end - -@implementation YUMIResidenceDeficitommendAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.encourageRegard]; - - [self.encourageRegard addSubview:self.intelligenceportraitIndicateRegard]; - [self.encourageRegard addSubview:self.spossessowIndicateRegard]; - [self.encourageRegard addSubview:self.featureAccommoengagementdRegard]; - [self.encourageRegard addSubview:self.monicerSequencignation]; - [self.encourageRegard addSubview:self.coupleBtuton]; - - [self.featureAccommoengagementdRegard addSubview:self.thermalIndicateRegard]; - [self.featureAccommoengagementdRegard addSubview:self.numberLabel]; -} - -- (void)initChildLyRestrictions { - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.thermalIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(13, 13)); - make.right.mas_equalTo(self.numberLabel.mas_left).offset(-2); - make.centerY.mas_equalTo(self.featureAccommoengagementdRegard); - }]; - - [self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.featureAccommoengagementdRegard.mas_right).offset(-4); - make.centerY.mas_equalTo(self.featureAccommoengagementdRegard); - }]; - - [self.spossessowIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageRegard); - make.height.mas_equalTo(48); - make.bottom.mas_equalTo(self.encourageRegard); - }]; - - [self.coupleBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.left.mas_equalTo(self.encourageRegard); - make.size.mas_equalTo(CGSizeMake(54, 20)); - }]; - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageRegard).offset(6); - make.right.mas_equalTo(self.encourageRegard).offset(-6); - make.centerY.mas_equalTo(self.spossessowIndicateRegard); - }]; - - [self.featureAccommoengagementdRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.thermalIndicateRegard.mas_left).offset(-4); - make.height.mas_equalTo(16); - make.top.mas_equalTo(self.encourageRegard).offset(4); - make.right.mas_equalTo(self.encourageRegard).offset(-4); - }]; - - [self.spossessowIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(28); - }]; -} - - -#pragma mark - Getters And Setters -- (void)setEncourageChamberAbstract:(ResidenceEncourageChamberMatrix *)encourageChamberAbstract { - _encourageChamberAbstract = encourageChamberAbstract; - if (_encourageChamberAbstract) { - self.intelligenceportraitIndicateRegard.imageUrl = _encourageChamberAbstract.avatar; - self.numberLabel.text = [NSString stringWithFormat:@"%ld", _encourageChamberAbstract.onlineNum]; - self.monicerSequencignation.text = _encourageChamberAbstract.title; - self.featureAccommoengagementdRegard.hidden = NO; - self.coupleBtuton.hidden = NO; - if (_encourageChamberAbstract.crossPking) { - [self.coupleBtuton setTitle:YMLocalizedString(@"YUMI_Home_Redommend_Collection_View_Cell_0") forState:UIControlStateNormal]; - } else { - if (_encourageChamberAbstract.iconContent.length > 0) { - [self.coupleBtuton setTitle:_encourageChamberAbstract.iconContent forState:UIControlStateNormal]; - } else { - self.coupleBtuton.hidden = YES; - } - } - - } else { - self.intelligenceportraitIndicateRegard.image = [UIImage imageNamed:@"yumi_main_recommend_scope_placeholder"]; - self.monicerSequencignation.text = YMLocalizedString(@"YUMI_Home_Redommend_Collection_View_Cell_1"); - self.featureAccommoengagementdRegard.hidden = YES; - self.coupleBtuton.hidden = YES; - } -} - -- (UIView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIView alloc] init]; - _encourageRegard.backgroundColor = [UIColor clearColor]; - _encourageRegard.layer.masksToBounds = YES; - _encourageRegard.layer.cornerRadius = 8; - _encourageRegard.layer.shadowColor = UIColorRGBAlpha(0xE5E5F2, 0.34).CGColor; - _encourageRegard.layer.shadowOffset = CGSizeMake(3, 3); - } - return _encourageRegard; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 8; - } - return _intelligenceportraitIndicateRegard; -} - -- (UIButton *)coupleBtuton { - if (!_coupleBtuton) { - _coupleBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_coupleBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _coupleBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - [_coupleBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_main_recommend_labelbackground"] forState:UIControlStateNormal]; - } - return _coupleBtuton; -} - -- (UIView *)featureAccommoengagementdRegard { - if (!_featureAccommoengagementdRegard) { - _featureAccommoengagementdRegard = [[UIView alloc] init]; - _featureAccommoengagementdRegard.backgroundColor = [UIColor colorWithWhite:0 alpha:0.29]; - _featureAccommoengagementdRegard.layer.masksToBounds = YES; - _featureAccommoengagementdRegard.layer.cornerRadius = 8; - } - return _featureAccommoengagementdRegard; -} - -- (UIImageView *)thermalIndicateRegard { - if (!_thermalIndicateRegard) { - _thermalIndicateRegard = [[UIImageView alloc] init]; - _thermalIndicateRegard.userInteractionEnabled = YES; - _thermalIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_like_collect_scope_hot"]; - } - return _thermalIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont boldSystemFontOfSize:12]; - _monicerSequencignation.textColor = [UIColor whiteColor]; - _monicerSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _monicerSequencignation; -} - -- (UILabel *)numberLabel { - if (!_numberLabel) { - _numberLabel = [[UILabel alloc] init]; - _numberLabel.font = [UIFont systemFontOfSize:9]; - _numberLabel.textColor = [UIColor whiteColor]; - } - return _numberLabel; -} - -- (UIImageView *)spossessowIndicateRegard { - if (!_spossessowIndicateRegard) { - _spossessowIndicateRegard = [[UIImageView alloc] init]; - _spossessowIndicateRegard.userInteractionEnabled = YES; - _spossessowIndicateRegard.image = [UIImage imageNamed:@"yumi_main_recommend_nick_shadow_background"]; - } - return _spossessowIndicateRegard; -} - -@end diff --git a/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIResidenceHuntforReflectionElement.h b/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIResidenceHuntforReflectionElement.h deleted file mode 100644 index 19e716eb..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIResidenceHuntforReflectionElement.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMHomeSearchRecordCell.h -// YUMI -// -// Created by YUMI on 2022/9/5. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIResidenceHuntforReflectionElement : UICollectionViewCell - -@property (nonatomic, copy) NSString *reflectionBWSttr; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIResidenceHuntforReflectionElement.m b/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIResidenceHuntforReflectionElement.m deleted file mode 100644 index 5a7a2d9f..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/View/Cell/YUMIResidenceHuntforReflectionElement.m +++ /dev/null @@ -1,48 +0,0 @@ -// -// YMHomeSearchRecordCell.m -// YUMI -// -// Created by YUMI on 2022/9/5. -// - -#import "YUMIResidenceHuntforReflectionElement.h" -#import -#import "DJDKMIMOMColor.h" - -@interface YUMIResidenceHuntforReflectionElement () - -@property (nonatomic,strong) UILabel *titleLabel; - -@end - -@implementation YUMIResidenceHuntforReflectionElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - self.backgroundColor = [UIColor whiteColor]; - self.layer.cornerRadius = 13; - self.layer.masksToBounds = YES; - [self addSubview:self.titleLabel]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.mas_equalTo(self); - }]; - } - return self; -} -- (void)setReflectionBWSttr:(NSString *)reflectionBWSttr { - self.titleLabel.text = reflectionBWSttr; -} - -#pragma mark - Getter & Setter -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleLabel.font = [UIFont systemFontOfSize:12]; - } - return _titleLabel; -} - - -@end diff --git a/YuMi/Modules/YMNewHome/View/Search/View/SubView/XPHomeSearchNavView.h b/YuMi/Modules/YMNewHome/View/Search/View/SubView/XPHomeSearchNavView.h new file mode 100644 index 00000000..ca8aeb96 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/View/SubView/XPHomeSearchNavView.h @@ -0,0 +1,29 @@ +// +// YMHomeSearchNavView.h +// YUMI +// +// Created by YUMI on 2021/11/29. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPHomeSearchNavView; +@protocol XPHomeSearchNavViewDelegate +//点击了返回 +- (void)xPHomeSearchNavView:(XPHomeSearchNavView *)view didClickBack:(UIButton *)sender; +///点击了搜索 +- (void)xPHomeSearchNavView:(XPHomeSearchNavView *)view didClickSearch:(UIButton *)sender; +///搜索框没有文字 +- (void)xPHomeSearchNavViewClearTextField:(XPHomeSearchNavView *)view; + +@end + +@interface XPHomeSearchNavView : UIView +///输入框 +@property (nonatomic,strong,readonly) UITextField *searchTextField; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/View/SubView/XPHomeSearchNavView.m b/YuMi/Modules/YMNewHome/View/Search/View/SubView/XPHomeSearchNavView.m new file mode 100644 index 00000000..86827fe4 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/View/SubView/XPHomeSearchNavView.m @@ -0,0 +1,178 @@ +// +// YMHomeSearchNavView.m +// YUMI +// +// Created by YUMI on 2021/11/29. +// + +#import "XPHomeSearchNavView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "UIButton+EnlargeTouchArea.h" +@interface XPHomeSearchNavView () + +///返回 +@property (nonatomic,strong) UIButton *backButton; +///输入框背景 +@property (nonatomic,strong) UIView * inputBackView; +///搜索logo +@property (nonatomic,strong) UIImageView *searchImageView; +///输入框 +@property (nonatomic,strong) UITextField *searchTextField; +///取消 +@property (nonatomic,strong) UIButton *cancleButton; + +@end + + +@implementation XPHomeSearchNavView + +- (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldChange:) name:UITextFieldTextDidChangeNotification object:nil]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backButton]; + [self addSubview:self.inputBackView]; + [self addSubview:self.cancleButton]; + + [self.inputBackView addSubview:self.searchImageView]; + [self.inputBackView addSubview:self.searchTextField]; +} + +- (void)initSubViewConstraints { + [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(22, 22)); + make.left.mas_equalTo(self).offset(8); + make.centerY.mas_equalTo(self.inputBackView); + }]; + + [self.inputBackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(30); + make.left.mas_equalTo(self.backButton.mas_right).offset(5); + make.right.mas_equalTo(self.cancleButton.mas_left).offset(-13); + make.top.mas_equalTo(self).offset(statusbarHeight + 10); + }]; + + [self.cancleButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self).offset(-15); + make.centerY.mas_equalTo(self.inputBackView); + make.height.mas_equalTo(30); + }]; + + [self.searchImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(18, 18)); + make.centerY.mas_equalTo(self.inputBackView); + make.left.mas_equalTo(self.inputBackView).offset(9); + }]; + + [self.searchTextField mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.searchImageView.mas_right); + make.right.top.bottom.mas_equalTo(self.inputBackView); + }]; +} + + +#pragma mark - Event Response +- (void)cancleButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPHomeSearchNavView:didClickSearch:)]) { + [self.delegate xPHomeSearchNavView:self didClickSearch:sender]; + } +} + +- (void)backButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPHomeSearchNavView:didClickBack:)]) { + [self.delegate xPHomeSearchNavView:self didClickBack:sender]; + } +} + +- (void)textFieldChange:(NSNotification *)notification { + UITextField *textField = (UITextField *)notification.object; + NSString *searchStr = textField.text; + if (searchStr.length == 0) { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPHomeSearchNavViewClearTextField:)]) { + [self.delegate xPHomeSearchNavViewClearTextField:self]; + } + } +} + +#pragma mark - Getters And Setters + +- (UIButton *)backButton { + if (!_backButton) { + _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateNormal]; + [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateSelected]; + [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_backButton setEnlargeEdgeWithTop:10 right:5 bottom:10 left:8]; + } + return _backButton; +} + +- (UIView *)inputBackView { + if (!_inputBackView) { + _inputBackView = [[UIView alloc] init]; + _inputBackView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _inputBackView.layer.masksToBounds = YES; + _inputBackView.layer.cornerRadius = 15; + } + return _inputBackView; +} + +- (UIImageView *)searchImageView { + if (!_searchImageView) { + _searchImageView = [[UIImageView alloc] init]; + _searchImageView.userInteractionEnabled = YES; + _searchImageView.image = [UIImage imageNamed:@"home_nav_search"]; + } + return _searchImageView; +} + +- (UITextField *)searchTextField { + if (!_searchTextField) { + _searchTextField = [[UITextField alloc] init]; + _searchTextField.layer.cornerRadius = 15; + _searchTextField.layer.masksToBounds = YES; + _searchTextField.tintColor = [DJDKMIMOMColor secondTextColor]; + _searchTextField.textColor = [DJDKMIMOMColor mainTextColor]; + _searchTextField.backgroundColor = [UIColor clearColor]; + _searchTextField.font = [UIFont systemFontOfSize:13]; + NSString *placeholder = [NSString stringWithFormat:YMLocalizedString(@"XPHomeSearchNavView0")]; + _searchTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholder attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:13], NSForegroundColorAttributeName : [DJDKMIMOMColor secondTextColor]}]; + _searchTextField.clearButtonMode = UITextFieldViewModeWhileEditing; + _searchTextField.returnKeyType = UIReturnKeySearch; + _searchTextField.enablesReturnKeyAutomatically = YES; + } + return _searchTextField; +} + +- (UIButton *)cancleButton { + if (!_cancleButton) { + _cancleButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_cancleButton setTitle:YMLocalizedString(@"XPHomeSearchNavView1") forState:UIControlStateNormal]; + [_cancleButton setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateNormal]; + _cancleButton.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; + [_cancleButton addTarget:self action:@selector(cancleButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_cancleButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:0]; + } + return _cancleButton; +} + + +@end diff --git a/YuMi/Modules/YMNewHome/View/Search/View/SubView/XPHomeSearchRelateView.h b/YuMi/Modules/YMNewHome/View/Search/View/SubView/XPHomeSearchRelateView.h new file mode 100644 index 00000000..38a2934c --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/View/SubView/XPHomeSearchRelateView.h @@ -0,0 +1,28 @@ +// +// YMHomeSearchRelateView.h +// YUMI +// +// Created by YUMI on 2022/11/16. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@protocol XPHomeSearchRelateViewDelegate + +///进入房间 +- (void)xPHomeSearchRelateViewEnterRoom:(NSString *)roomUid; + +@end + +@interface XPHomeSearchRelateView : UIView + +@property (nonatomic, strong) NSArray *relateArray; + +@property (nonatomic, strong) NSArray *recommendArray; + +@property (nonatomic, weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/View/SubView/XPHomeSearchRelateView.m b/YuMi/Modules/YMNewHome/View/Search/View/SubView/XPHomeSearchRelateView.m new file mode 100644 index 00000000..6059c905 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/View/SubView/XPHomeSearchRelateView.m @@ -0,0 +1,181 @@ +// +// YMHomeSearchRelateView.m +// YUMI +// +// Created by YUMI on 2022/11/16. +// + +#import "XPHomeSearchRelateView.h" +#import "Masonry/Masonry.h" +#import "NSArray+Safe.h" +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "StatisticsServiceHelper.h" +///view +#import "XPSearchListTableViewCell.h" +#import "XPHomeRedommendCollectionViewCell.h" +#import "XPRoomSearchRecommendHeadView.h" +///Model +#import "HomeSearchResultModel.h" +#import "HomeRecommendRoomModel.h" + +@interface XPHomeSearchRelateView() + +@property (nonatomic, strong) UILabel *relateTitle; +@property (nonatomic, strong) UITableView *tableView; +@property (nonatomic, strong) UICollectionView *collectionView; + +@end + +@implementation XPHomeSearchRelateView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initView]; + [self initContraints]; + } + return self; +} + +- (void)initView { + self.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; + [self addSubview:self.relateTitle]; + [self addSubview:self.tableView]; + [self addSubview:self.collectionView]; +} + +- (void)initContraints { + [self.relateTitle mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(16); + make.left.mas_equalTo(15); + make.height.mas_equalTo(20); + }]; + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(0); + make.top.mas_equalTo(self.relateTitle.mas_bottom).mas_offset(16); + }]; + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; +} +#pragma mark - tableviewDelegate +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.relateArray.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + XPSearchListTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPSearchListTableViewCell class])]; + if (cell == nil) { + cell = [[XPSearchListTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPSearchListTableViewCell class])]; + } + HomeRecommendRoomModel * resultModel = [self.relateArray safeObjectAtIndex1:indexPath.row]; + [cell configEveryoneData:resultModel]; + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + HomeRecommendRoomModel * resultModel = [self.relateArray safeObjectAtIndex1:indexPath.row]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPHomeSearchRelateViewEnterRoom:)]) { + [self.delegate xPHomeSearchRelateViewEnterRoom:resultModel.uid]; + } +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 74; +} + +#pragma mark - collectionViewDelegate +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.recommendArray.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPHomeRedommendCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPHomeRedommendCollectionViewCell class]) forIndexPath:indexPath]; + HomeRecommendRoomModel * info = [self.recommendArray safeObjectAtIndex1:indexPath.row]; + cell.recommendRoomInfo = info; + return cell; +} + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + return CGSizeMake(100 * kScreenScale, 100 * kScreenScale); +} + +- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath { + XPRoomSearchRecommendHeadView *headView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:NSStringFromClass([XPRoomSearchRecommendHeadView class]) forIndexPath:indexPath]; + return headView; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + [collectionView deselectItemAtIndexPath:indexPath animated:YES]; + if (self.recommendArray.count > 0) { + HomeRecommendRoomModel * recommend = [self.recommendArray safeObjectAtIndex1:indexPath.row]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventRoom_allinsearch_entry_room_click eventAttributes:@{@"roomTitle" :recommend.title}]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPHomeSearchRelateViewEnterRoom:)]) { + [self.delegate xPHomeSearchRelateViewEnterRoom:recommend.roomUid]; + } + } +} + +- (void)setRelateArray:(NSArray *)relateArray { + _relateArray = relateArray; + [self.tableView reloadData]; + self.collectionView.hidden = YES; + self.relateTitle.hidden = NO; + self.tableView.hidden = NO; +} + +- (void)setRecommendArray:(NSArray *)recommendArray { + _recommendArray = recommendArray; + [self.collectionView reloadData]; + self.collectionView.hidden = NO; + self.relateTitle.hidden = YES; + self.tableView.hidden = YES; +} + +- (UILabel *)relateTitle { + if (!_relateTitle) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + label.textColor = [DJDKMIMOMColor mainTextColor]; + label.text = YMLocalizedString(@"XPHomeSearchRelateView0"); + _relateTitle = label; + } + return _relateTitle; +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableHeaderView = [UIView new]; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + [_tableView registerClass:[XPSearchListTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPSearchListTableViewCell class])]; + } + return _tableView; +} + +- (UICollectionView *)collectionView{ + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.headerReferenceSize = CGSizeMake(KScreenWidth, 200); + layout.minimumLineSpacing = 8; + layout.minimumInteritemSpacing = 0; + layout.scrollDirection = UICollectionViewScrollDirectionVertical; + layout.sectionInset = UIEdgeInsetsMake(15, 15, 0, 15); + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.backgroundColor = [UIColor clearColor]; + [_collectionView registerClass:[XPHomeRedommendCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPHomeRedommendCollectionViewCell class])]; + [_collectionView registerClass:[XPRoomSearchRecommendHeadView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:NSStringFromClass([XPRoomSearchRecommendHeadView class])]; + } + return _collectionView; +} + +@end diff --git a/YuMi/Modules/YMNewHome/View/Search/View/SubView/XPRoomSearchRecommendHeadView.h b/YuMi/Modules/YMNewHome/View/Search/View/SubView/XPRoomSearchRecommendHeadView.h new file mode 100644 index 00000000..6c1b8d91 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/View/SubView/XPRoomSearchRecommendHeadView.h @@ -0,0 +1,16 @@ +// +// YMRoomSearchRecommendHeadView.h +// YUMI +// +// Created by YUMI on 2022/11/16. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomSearchRecommendHeadView : UICollectionReusableView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/View/SubView/XPRoomSearchRecommendHeadView.m b/YuMi/Modules/YMNewHome/View/Search/View/SubView/XPRoomSearchRecommendHeadView.m new file mode 100644 index 00000000..9059897f --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/View/SubView/XPRoomSearchRecommendHeadView.m @@ -0,0 +1,68 @@ +// +// YMRoomSearchRecommendHeadView.m +// YUMI +// +// Created by YUMI on 2022/11/16. +// + +#import "XPRoomSearchRecommendHeadView.h" +#import "Masonry/Masonry.h" +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" + +@interface XPRoomSearchRecommendHeadView() + +@property (nonatomic, strong) UILabel *emptyTitle; +@property (nonatomic, strong) UILabel *recommentTitle; + +@end + +@implementation XPRoomSearchRecommendHeadView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initView]; + [self initContraints]; + } + return self; +} + +- (void)initView { + [self addSubview:self.emptyTitle]; + [self addSubview:self.recommentTitle]; +} + +- (void)initContraints { + [self.emptyTitle mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self); + }]; + [self.recommentTitle mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self); + make.left.mas_equalTo(16); + }]; +} + +- (UILabel *)emptyTitle { + if (!_emptyTitle) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + label.textColor = [DJDKMIMOMColor textThirdColor]; + label.text = @"暂无开播厅房~"; + _emptyTitle = label; + } + return _emptyTitle; +} + +- (UILabel *)recommentTitle { + if (!_recommentTitle) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + label.textColor = [DJDKMIMOMColor mainTextColor]; + label.text = YMLocalizedString(@"XPRoomSearchRecommendHeadView1"); + _recommentTitle = label; + } + return _recommentTitle; +} +@end diff --git a/YuMi/Modules/YMNewHome/View/Search/View/SubView/YUMIChamberHuntforEncourageIntelligenceRegard.h b/YuMi/Modules/YMNewHome/View/Search/View/SubView/YUMIChamberHuntforEncourageIntelligenceRegard.h deleted file mode 100644 index 3a77caea..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/View/SubView/YUMIChamberHuntforEncourageIntelligenceRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomSearchRecommendHeadView.h -// YUMI -// -// Created by YUMI on 2022/11/16. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberHuntforEncourageIntelligenceRegard : UICollectionReusableView - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/View/SubView/YUMIChamberHuntforEncourageIntelligenceRegard.m b/YuMi/Modules/YMNewHome/View/Search/View/SubView/YUMIChamberHuntforEncourageIntelligenceRegard.m deleted file mode 100644 index 5eba716a..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/View/SubView/YUMIChamberHuntforEncourageIntelligenceRegard.m +++ /dev/null @@ -1,68 +0,0 @@ -// -// YMRoomSearchRecommendHeadView.m -// YUMI -// -// Created by YUMI on 2022/11/16. -// - -#import "YUMIChamberHuntforEncourageIntelligenceRegard.h" -#import "Masonry/Masonry.h" -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" - -@interface YUMIChamberHuntforEncourageIntelligenceRegard() - -@property (nonatomic, strong) UILabel *emptyTitle; -@property (nonatomic, strong) UILabel *rejudgementChampion; - -@end - -@implementation YUMIChamberHuntforEncourageIntelligenceRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initRegard]; - [self initContraints]; - } - return self; -} - -- (void)initRegard { - [self addSubview:self.emptyTitle]; - [self addSubview:self.rejudgementChampion]; -} - -- (void)initContraints { - [self.emptyTitle mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.mas_equalTo(self); - }]; - [self.rejudgementChampion mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self); - make.left.mas_equalTo(16); - }]; -} - -- (UILabel *)emptyTitle { - if (!_emptyTitle) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - label.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - label.text = @"暂无开播厅房~"; - _emptyTitle = label; - } - return _emptyTitle; -} - -- (UILabel *)rejudgementChampion { - if (!_rejudgementChampion) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - label.textColor = [DJDKMIMOMColor mainEssayPrettify]; - label.text = YMLocalizedString(@"YUMI_Room_Search_Recommend_Head_View_1"); - _rejudgementChampion = label; - } - return _rejudgementChampion; -} -@end diff --git a/YuMi/Modules/YMNewHome/View/Search/View/SubView/YUMIResidenceHuntforNevRegard.h b/YuMi/Modules/YMNewHome/View/Search/View/SubView/YUMIResidenceHuntforNevRegard.h deleted file mode 100644 index 79cda264..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/View/SubView/YUMIResidenceHuntforNevRegard.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YMHomeSearchNavView.h -// YUMI -// -// Created by YUMI on 2021/11/29. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIResidenceHuntforNevRegard; -@protocol FBCResidenceHuntforNevRegardRepresendtation -- (void)fBCHoutilizeHuntforNevRegard:(YUMIResidenceHuntforNevRegard *)view didClickBack:(UIButton *)sender; -- (void)fBCHoutilizeHuntforNevRegard:(YUMIResidenceHuntforNevRegard *)view didClickSearch:(UIButton *)sender; -- (void)fBCHoutilizeHuntforNevRegardDistinctEssayUniverse:(YUMIResidenceHuntforNevRegard *)view; - -@end - -@interface YUMIResidenceHuntforNevRegard : UIView -@property (nonatomic,strong,readonly) UITextField *searchTextField; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/View/SubView/YUMIResidenceHuntforNevRegard.m b/YuMi/Modules/YMNewHome/View/Search/View/SubView/YUMIResidenceHuntforNevRegard.m deleted file mode 100644 index 88ab8038..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/View/SubView/YUMIResidenceHuntforNevRegard.m +++ /dev/null @@ -1,171 +0,0 @@ -// -// YMHomeSearchNavView.m -// YUMI -// -// Created by YUMI on 2021/11/29. -// - -#import "YUMIResidenceHuntforNevRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "UIButton+EnlargeTouchArea.h" -@interface YUMIResidenceHuntforNevRegard () - -@property (nonatomic,strong) UIButton *backButton; -@property (nonatomic,strong) UIView * introjectionEncourageRegard; -@property (nonatomic,strong) UIImageView *huntforIndicateRegard; -@property (nonatomic,strong) UITextField *searchTextField; -@property (nonatomic,strong) UIButton *cancleBtuton; - -@end - - -@implementation YUMIResidenceHuntforNevRegard - -- (void)dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(essayUniverseDiversifictowardsion:) name:UITextFieldTextDidChangeNotification object:nil]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backButton]; - [self addSubview:self.introjectionEncourageRegard]; - [self addSubview:self.cancleBtuton]; - - [self.introjectionEncourageRegard addSubview:self.huntforIndicateRegard]; - [self.introjectionEncourageRegard addSubview:self.searchTextField]; -} - -- (void)initChildLyRestrictions { - [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(22, 22)); - make.left.mas_equalTo(self).offset(8); - make.centerY.mas_equalTo(self.introjectionEncourageRegard); - }]; - - [self.introjectionEncourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(30); - make.left.mas_equalTo(self.backButton.mas_right).offset(5); - make.right.mas_equalTo(self.cancleBtuton.mas_left).offset(-13); - make.top.mas_equalTo(self).offset(statusbarHeight + 10); - }]; - - [self.cancleBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self).offset(-15); - make.centerY.mas_equalTo(self.introjectionEncourageRegard); - make.height.mas_equalTo(30); - }]; - - [self.huntforIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(18, 18)); - make.centerY.mas_equalTo(self.introjectionEncourageRegard); - make.left.mas_equalTo(self.introjectionEncourageRegard).offset(9); - }]; - - [self.searchTextField mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.huntforIndicateRegard.mas_right); - make.right.top.bottom.mas_equalTo(self.introjectionEncourageRegard); - }]; -} - - -#pragma mark - Event Response -- (void)cancleBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCHoutilizeHuntforNevRegard:didClickSearch:)]) { - [self.delegate fBCHoutilizeHuntforNevRegard:self didClickSearch:sender]; - } -} - -- (void)encourageBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCHoutilizeHuntforNevRegard:didClickBack:)]) { - [self.delegate fBCHoutilizeHuntforNevRegard:self didClickBack:sender]; - } -} - -- (void)essayUniverseDiversifictowardsion:(NSNotification *)notification { - UITextField *essayUniverse = (UITextField *)notification.object; - NSString *searchStr = essayUniverse.text; - if (searchStr.length == 0) { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCHoutilizeHuntforNevRegardDistinctEssayUniverse:)]) { - [self.delegate fBCHoutilizeHuntforNevRegardDistinctEssayUniverse:self]; - } - } -} - -#pragma mark - Getters And Setters - -- (UIButton *)backButton { - if (!_backButton) { - _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backButton setImage:[UIImage imageNamed:@"yumi_same_title_back"] forState:UIControlStateNormal]; - [_backButton setImage:[UIImage imageNamed:@"yumi_same_title_back"] forState:UIControlStateSelected]; - [_backButton addTarget:self action:@selector(encourageBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_backButton setEnlargeEdgeAboutApex:10 right:5 bottom:10 left:8]; - } - return _backButton; -} - -- (UIView *)introjectionEncourageRegard { - if (!_introjectionEncourageRegard) { - _introjectionEncourageRegard = [[UIView alloc] init]; - _introjectionEncourageRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _introjectionEncourageRegard.layer.masksToBounds = YES; - _introjectionEncourageRegard.layer.cornerRadius = 15; - } - return _introjectionEncourageRegard; -} - -- (UIImageView *)huntforIndicateRegard { - if (!_huntforIndicateRegard) { - _huntforIndicateRegard = [[UIImageView alloc] init]; - _huntforIndicateRegard.userInteractionEnabled = YES; - _huntforIndicateRegard.image = [UIImage imageNamed:@"yumi_main_title_search"]; - } - return _huntforIndicateRegard; -} - -- (UITextField *)searchTextField { - if (!_searchTextField) { - _searchTextField = [[UITextField alloc] init]; - _searchTextField.layer.cornerRadius = 15; - _searchTextField.layer.masksToBounds = YES; - _searchTextField.tintColor = [DJDKMIMOMColor instantEssayPrettify]; - _searchTextField.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _searchTextField.backgroundColor = [UIColor clearColor]; - _searchTextField.font = [UIFont systemFontOfSize:13]; - NSString *placeholder = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Home_Search_Nav_View_0")]; - _searchTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholder attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:13], NSForegroundColorAttributeName : [DJDKMIMOMColor instantEssayPrettify]}]; - _searchTextField.clearButtonMode = UITextFieldViewModeWhileEditing; - _searchTextField.returnKeyType = UIReturnKeySearch; - _searchTextField.enablesReturnKeyAutomatically = YES; - } - return _searchTextField; -} - -- (UIButton *)cancleBtuton { - if (!_cancleBtuton) { - _cancleBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_cancleBtuton setTitle:YMLocalizedString(@"YUMI_Home_Search_Nav_View_1") forState:UIControlStateNormal]; - [_cancleBtuton setTitleColor:[DJDKMIMOMColor instantEssayPrettify] forState:UIControlStateNormal]; - _cancleBtuton.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; - [_cancleBtuton addTarget:self action:@selector(cancleBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_cancleBtuton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:0]; - } - return _cancleBtuton; -} - - -@end diff --git a/YuMi/Modules/YMNewHome/View/Search/View/SubView/YUMIResidenceHuntforRelateRegard.h b/YuMi/Modules/YMNewHome/View/Search/View/SubView/YUMIResidenceHuntforRelateRegard.h deleted file mode 100644 index c23db38d..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/View/SubView/YUMIResidenceHuntforRelateRegard.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// YMHomeSearchRelateView.h -// YUMI -// -// Created by YUMI on 2022/11/16. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@protocol FBCResidenceHuntforRelateRegardRepresendtation - -- (void)fBCHoutilizeHuntforReltowardseRegardImportChamber:(NSString *)roomUid; - -@end - -@interface YUMIResidenceHuntforRelateRegard : UIView - -@property (nonatomic, strong) NSArray *relateGarment; - -@property (nonatomic, strong) NSArray *encourageGarment; - -@property (nonatomic, weak) id delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/View/SubView/YUMIResidenceHuntforRelateRegard.m b/YuMi/Modules/YMNewHome/View/Search/View/SubView/YUMIResidenceHuntforRelateRegard.m deleted file mode 100644 index e7820cb8..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/View/SubView/YUMIResidenceHuntforRelateRegard.m +++ /dev/null @@ -1,179 +0,0 @@ -// -// YMHomeSearchRelateView.m -// YUMI -// -// Created by YUMI on 2022/11/16. -// - -#import "YUMIResidenceHuntforRelateRegard.h" -#import "Masonry/Masonry.h" -#import "NSArray+Safe.h" -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "StatsticsticsServingFacilitater.h" -#import "YUMIHuntforStatementTabulationRegardElement.h" -#import "YUMIResidenceDeficitommendAssembletionRegardElement.h" -#import "YUMIChamberHuntforEncourageIntelligenceRegard.h" -#import "ResidenceHuntforConsequentMatrix.h" -#import "ResidenceEncourageChamberMatrix.h" - -@interface YUMIResidenceHuntforRelateRegard() - -@property (nonatomic, strong) UILabel *relateChampion; -@property (nonatomic, strong) UITableView *tableView; -@property (nonatomic, strong) UICollectionView *collectionView; - -@end - -@implementation YUMIResidenceHuntforRelateRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initRegard]; - [self initContraints]; - } - return self; -} - -- (void)initRegard { - self.backgroundColor = [DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]; - [self addSubview:self.relateChampion]; - [self addSubview:self.tableView]; - [self addSubview:self.collectionView]; -} - -- (void)initContraints { - [self.relateChampion mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(16); - make.left.mas_equalTo(15); - make.height.mas_equalTo(20); - }]; - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(0); - make.top.mas_equalTo(self.relateChampion.mas_bottom).mas_offset(16); - }]; - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(0); - }]; -} -#pragma mark - tableviewDelegate -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.relateGarment.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - YUMIHuntforStatementTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIHuntforStatementTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIHuntforStatementTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIHuntforStatementTabulationRegardElement class])]; - } - ResidenceEncourageChamberMatrix * resultModel = [self.relateGarment secureGroalTowardsIndictowardsrix1:indexPath.row]; - [cell prohibitipositionEachoneTowardsoloudspeaker:resultModel]; - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - ResidenceEncourageChamberMatrix * resultModel = [self.relateGarment secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCHoutilizeHuntforReltowardseRegardImportChamber:)]) { - [self.delegate fBCHoutilizeHuntforReltowardseRegardImportChamber:resultModel.uid]; - } -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 74; -} - -#pragma mark - collectionViewDelegate -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.encourageGarment.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMIResidenceDeficitommendAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIResidenceDeficitommendAssembletionRegardElement class]) forIndexPath:indexPath]; - ResidenceEncourageChamberMatrix * info = [self.encourageGarment secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.encourageChamberAbstract = info; - return cell; -} - -- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { - return CGSizeMake(100 * kScreenScale, 100 * kScreenScale); -} - -- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath { - YUMIChamberHuntforEncourageIntelligenceRegard *intelligenceRegard = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:NSStringFromClass([YUMIChamberHuntforEncourageIntelligenceRegard class]) forIndexPath:indexPath]; - return intelligenceRegard; -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - [collectionView deselectItemAtIndexPath:indexPath animated:YES]; - if (self.encourageGarment.count > 0) { - ResidenceEncourageChamberMatrix * recommend = [self.encourageGarment secureGroalTowardsIndictowardsrix1:indexPath.row]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventRoom_allinsearch_entry_room_click eventAttributes:@{@"roomTitle" :recommend.title}]; - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCHoutilizeHuntforReltowardseRegardImportChamber:)]) { - [self.delegate fBCHoutilizeHuntforReltowardseRegardImportChamber:recommend.roomUid]; - } - } -} - -- (void)setRelateGarment:(NSArray *)relateGarment { - _relateGarment = relateGarment; - [self.tableView reloadData]; - self.collectionView.hidden = YES; - self.relateChampion.hidden = NO; - self.tableView.hidden = NO; -} - -- (void)setEncourageGarment:(NSArray *)encourageGarment { - _encourageGarment = encourageGarment; - [self.collectionView reloadData]; - self.collectionView.hidden = NO; - self.relateChampion.hidden = YES; - self.tableView.hidden = YES; -} - -- (UILabel *)relateChampion { - if (!_relateChampion) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - label.textColor = [DJDKMIMOMColor mainEssayPrettify]; - label.text = YMLocalizedString(@"YUMI_Home_Search_Relate_View_0"); - _relateChampion = label; - } - return _relateChampion; -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableHeaderView = [UIView new]; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - [_tableView registerClass:[YUMIHuntforStatementTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIHuntforStatementTabulationRegardElement class])]; - } - return _tableView; -} - -- (UICollectionView *)collectionView{ - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.headerReferenceSize = CGSizeMake(KScreenWidth, 200); - layout.minimumLineSpacing = 8; - layout.minimumInteritemSpacing = 0; - layout.scrollDirection = UICollectionViewScrollDirectionVertical; - layout.sectionInset = UIEdgeInsetsMake(15, 15, 0, 15); - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.backgroundColor = [UIColor clearColor]; - [_collectionView registerClass:[YUMIResidenceDeficitommendAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIResidenceDeficitommendAssembletionRegardElement class])]; - [_collectionView registerClass:[YUMIChamberHuntforEncourageIntelligenceRegard class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:NSStringFromClass([YUMIChamberHuntforEncourageIntelligenceRegard class])]; - } - return _collectionView; -} - -@end diff --git a/YuMi/Modules/YMNewHome/View/Search/View/XPHomeSearchViewController.h b/YuMi/Modules/YMNewHome/View/Search/View/XPHomeSearchViewController.h new file mode 100644 index 00000000..a0c326cd --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/View/XPHomeSearchViewController.h @@ -0,0 +1,19 @@ +// +// YMHomeSearchViewController.h +// YUMI +// +// Created by YUMI on 2021/11/29. +// + +#import "MvpViewController.h" +#import +#import "XPSearchListTableViewCell.h" +NS_ASSUME_NONNULL_BEGIN +@interface XPHomeSearchViewController : MvpViewController +///搜索的类型 +@property (nonatomic,assign) SearchType type; +- (void)searchText:(NSString *)text; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/View/XPHomeSearchViewController.m b/YuMi/Modules/YMNewHome/View/Search/View/XPHomeSearchViewController.m new file mode 100644 index 00000000..4c11bf01 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/View/XPHomeSearchViewController.m @@ -0,0 +1,157 @@ +// +// YMHomeSearchViewController.m +// YUMI +// +// Created by YUMI on 2021/11/29. +// + +#import "XPHomeSearchViewController.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" +#import "ClientConfig.h" +///Model +#import "HomeSearchResultModel.h" +///View +#import "XPSearchListTableViewCell.h" +///P +#import "XPHomeSearchPresenter.h" +#import "XPHomeSearchProtocol.h" +///VC +#import "XPRoomViewController.h" +#import "XPMineUserInfoViewController.h" +#import "XPMineSimpleUserInfoViewController.h" + +UIKIT_EXTERN NSString *kFromSearchToHomeViewKey; +UIKIT_EXTERN NSString *kTabShowAnchorCardKey; + +@interface XPHomeSearchViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSArray *datasource; +@end + +@implementation XPHomeSearchViewController + +- (XPHomeSearchPresenter *)createPresenter { + return [[XPHomeSearchPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + [self.view endEditing:YES]; +} + +#pragma mark - Public Method +- (void)searchText:(NSString *)text { + NSString * type = [NSString stringWithFormat:@"%ld", self.type]; + [self.presenter searchRoomList:text type:type]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 74; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + XPSearchListTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPSearchListTableViewCell class])]; + if (cell == nil) { + cell = [[XPSearchListTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPSearchListTableViewCell class])]; + } + HomeSearchResultModel * resultModel = [self.datasource safeObjectAtIndex1:indexPath.row]; + [cell configData:resultModel type:self.type]; + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + HomeSearchResultModel * resultModel = [self.datasource safeObjectAtIndex1:indexPath.row]; + BOOL result = [[NSUserDefaults standardUserDefaults] boolForKey:kFromSearchToHomeViewKey]; + if (!result) { + [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kFromSearchToHomeViewKey]; + [[NSUserDefaults standardUserDefaults] synchronize]; + [[NSNotificationCenter defaultCenter] postNotificationName:kTabShowAnchorCardKey object:@{@"delayShow" : @(YES)}]; + } + [self dismissViewControllerAnimated:YES completion:nil]; + if (self.type == SearchType_Room) { + if (resultModel.valid) { + [XPRoomViewController openRoom:resultModel.uid viewController:self.presentingViewController]; + } else { + if ([ClientConfig shareConfig].canOpen) { + XPMineUserInfoViewController * infoVC = [[XPMineUserInfoViewController alloc] init]; + infoVC.uid = resultModel.uid.integerValue; + [(UINavigationController *)self.presentingViewController pushViewController:infoVC animated:YES]; + }else{ + XPMineSimpleUserInfoViewController * infoVC = [[XPMineSimpleUserInfoViewController alloc] init]; + infoVC.uid = resultModel.uid.integerValue; + [(UINavigationController *)self.presentingViewController pushViewController:infoVC animated:YES]; + } + } + } else { + if ([ClientConfig shareConfig].canOpen) { + XPMineUserInfoViewController * infoVC = [[XPMineUserInfoViewController alloc] init]; + infoVC.uid = resultModel.uid.integerValue; + [(UINavigationController *)self.presentingViewController pushViewController:infoVC animated:YES]; + }else{ + XPMineSimpleUserInfoViewController * infoVC = [[XPMineSimpleUserInfoViewController alloc] init]; + infoVC.uid = resultModel.uid.integerValue; + [(UINavigationController *)self.presentingViewController pushViewController:infoVC animated:YES]; + } + } +} + +#pragma mark - XPHomeSearchProtocol +- (void)searchRoomSuccess:(NSArray *)data type:(nonnull NSString *)type { + if (type.integerValue == self.type) { + self.datasource = data; + [self.tableView reloadData]; + } +} + +#pragma mark - +- (UIView *)listView { + return self.view; +} + +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableHeaderView = [UIView new]; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPSearchListTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPSearchListTableViewCell class])]; + } + return _tableView; +} +@end diff --git a/YuMi/Modules/YMNewHome/View/Search/View/XPRoomSearchContainerViewController.h b/YuMi/Modules/YMNewHome/View/Search/View/XPRoomSearchContainerViewController.h new file mode 100644 index 00000000..cc016c76 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/View/XPRoomSearchContainerViewController.h @@ -0,0 +1,16 @@ +// +// YMRoomSearchContaierViewController.h +// YUMI +// +// Created by YUMI on 2021/12/2. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomSearchContainerViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/View/XPRoomSearchContainerViewController.m b/YuMi/Modules/YMNewHome/View/Search/View/XPRoomSearchContainerViewController.m new file mode 100644 index 00000000..b109fc05 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/View/XPRoomSearchContainerViewController.m @@ -0,0 +1,299 @@ +// +// YMRoomSearchContaierViewController.m +// YUMI +// +// Created by YUMI on 2021/12/2. +// + +#import "XPRoomSearchContainerViewController.h" +///Third +#import +#import +#import +///Tool +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "XPHomeSearchNavView.h" +#import "TTPopup.h" +#import "StatisticsServiceHelper.h" +///View +#import "XPHomeSearchViewController.h" +#import "XPRoomSearchRecordViewController.h" +#import "XPHomeSearchRelateView.h" +#import "XPRoomViewController.h" +///P +#import "XPHomeSearchPresenter.h" +#import "XPHomeSearchProtocol.h" + +UIKIT_EXTERN NSString *kFromSearchToHomeViewKey; +UIKIT_EXTERN NSString *kTabShowAnchorCardKey; + +@interface XPRoomSearchContainerViewController () +///分页标题 +@property (nonatomic, strong) NSArray *titles; +///分页控件 +@property (nonatomic, strong) JXCategoryTitleView *titleView; +///分页lineView +@property (nonatomic, strong) JXCategoryListContainerView *contentView; +///搜索 +@property (nonatomic,strong) XPHomeSearchNavView *searchView; +///房间 +@property (nonatomic,strong) XPHomeSearchViewController *roomVC; +///用户 +@property (nonatomic,strong) XPHomeSearchViewController *userVC; +///进房、搜索记录 +@property (nonatomic, strong) XPRoomSearchRecordViewController *recordVc; +///相关房间 +@property (nonatomic, strong) XPHomeSearchRelateView *relateView; + +@end + +@implementation XPRoomSearchContainerViewController + + +- (XPHomeSearchPresenter *)createPresenter { + return [[XPHomeSearchPresenter alloc] init]; +} + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + self.modalPresentationStyle = UIModalPresentationOverFullScreen; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.searchView]; + [self.view addSubview:self.titleView]; + [self.view addSubview:self.contentView]; + [self.view addSubview:self.recordVc.view]; + [self addChildViewController:self.recordVc]; +} + +- (void)initSubViewConstraints { + [self.searchView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.height.mas_equalTo(kNavigationHeight); + }]; + + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.top.mas_equalTo(self.searchView.mas_bottom).offset(10); + make.height.mas_equalTo(50); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.titleView.mas_bottom).offset(10); + make.left.right.bottom.mas_equalTo(self.view); + }]; + [self.recordVc.view mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.top.mas_equalTo(self.searchView.mas_bottom); + make.bottom.mas_equalTo(self.view); + }]; +} + +- (void)searchVCLoadData:(NSString *)text { + self.recordVc.view.hidden = YES; + [self.roomVC searchText:text]; + [self.userVC searchText:text]; +} + +#pragma mark - JXCategoryViewDelegate +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { + return self.titles.count; +} + +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { + if (index == 0) { + return self.roomVC; + } + return self.userVC; +} + +#pragma mark - UITextFieldDelegate +- (BOOL)textFieldShouldReturn:(UITextField *)textField { + if (textField.text.length > 0) { + [textField resignFirstResponder]; + [self searchVCLoadData:textField.text]; +// [self.presenter getSearchHijack:textField.text]; + [self.recordVc storeSearchRecord:textField.text]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventRoom_search_input_click eventAttributes:@{@"searchWord":textField.text}]; + } else { + [self showErrorToast:YMLocalizedString(@"XPRoomSearchContainerViewController0")]; + } + return YES; +} + +#pragma mark -XPHomeSearchNavViewDelegate +- (void)xPHomeSearchNavView:(XPHomeSearchNavView *)view didClickSearch:(UIButton *)sender { + if (view.searchTextField.text.length > 0) { + [view.searchTextField resignFirstResponder]; + [self.recordVc storeSearchRecord:view.searchTextField.text]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventRoom_search_input_click eventAttributes:@{@"searchWord":view.searchTextField.text}]; + } else { + [self showErrorToast:YMLocalizedString(@"XPRoomSearchContainerViewController1")]; + } +} + +- (void)xPHomeSearchNavView:(XPHomeSearchNavView *)view didClickBack:(UIButton *)sender { + [view.searchTextField resignFirstResponder]; + BOOL result = [[NSUserDefaults standardUserDefaults] boolForKey:kFromSearchToHomeViewKey]; + if (!result) { + [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kFromSearchToHomeViewKey]; + [[NSUserDefaults standardUserDefaults] synchronize]; + [[NSNotificationCenter defaultCenter] postNotificationName:kTabShowAnchorCardKey object:nil]; + } + [self dismissViewControllerAnimated:YES completion:nil]; +} + +///搜索框没有文字 +- (void)xPHomeSearchNavViewClearTextField:(XPHomeSearchNavView *)view { + self.recordVc.view.hidden = NO; + [self.recordVc updateSearchRecord]; + [self.relateView removeFromSuperview]; +} + +#pragma mark - XPRoomSearchRecordViewControllerDelegate +- (void)xPRoomSearchRecordViewControllerSearchWithWord:(NSString *)word { + if (word.length > 0) { + self.searchView.searchTextField.text = word; + [self searchVCLoadData:word]; + [self.recordVc storeSearchRecord:word]; + } else { + [self showErrorToast:YMLocalizedString(@"XPRoomSearchContainerViewController2")]; + } +} + +///大家都在搜 +- (void)xPRoomSearchRecordViewControllerEveryoneSearch:(NSString *)word sid:(nonnull NSString *)sid { + self.searchView.searchTextField.text = word; +// [self.presenter getEveryOneSearchRoomList:sid]; +} + +#pragma mark - XPHomeSearchProtocol +- (void)everyoneSearchListSuccess:(NSArray *)list { + if (list.count) {//有值,显示列表 + [self.view addSubview:self.relateView]; + [self.relateView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(0); + make.top.mas_equalTo(self.searchView.mas_bottom); + }]; + self.relateView.relateArray = list; + } else {//无数据,显示推荐房间 + [self.presenter getHomeRecommendRoomList]; + } +} + +- (void)searchRoomGetRecommendSuccess:(NSArray *)data { + if (data.count) {//有值,显示列表 + [self.view addSubview:self.relateView]; + [self.relateView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(0); + make.top.mas_equalTo(self.searchView.mas_bottom); + }]; + self.relateView.recommendArray = data; + } +} + +- (void)searchRoomGetRecommendFail { + +} + +#pragma mark - XPHomeSearchRelateViewDelegate +///进入房间 +- (void)xPHomeSearchRelateViewEnterRoom:(NSString *)roomUid { + BOOL result = [[NSUserDefaults standardUserDefaults] boolForKey:kFromSearchToHomeViewKey]; + if (!result) { + [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kFromSearchToHomeViewKey]; + [[NSUserDefaults standardUserDefaults] synchronize]; + [[NSNotificationCenter defaultCenter] postNotificationName:kTabShowAnchorCardKey object:@{@"delayShow" : @(YES)}]; + } + [self dismissViewControllerAnimated:YES completion:nil]; + [XPRoomViewController openRoom:roomUid viewController:self.presentingViewController]; +} + +#pragma mark - Getters And Setters +- (JXCategoryTitleView *)titleView { + if (!_titleView) { + _titleView = [[JXCategoryTitleView alloc] init]; + _titleView.delegate = self; + _titleView.titles = self.titles; + _titleView.titleColor = [DJDKMIMOMColor secondTextColor]; + _titleView.titleSelectedColor = [DJDKMIMOMColor mainTextColor]; + _titleView.titleFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; + _titleView.titleSelectedFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; + _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; + _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; + _titleView.defaultSelectedIndex = 0; + _titleView.listContainer = self.contentView; + + JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init]; + lineView.indicatorColor = [DJDKMIMOMColor appMainColor]; + lineView.indicatorWidth = 8.f; + lineView.indicatorHeight = 4.f; + lineView.indicatorCornerRadius = 2.f; + _titleView.indicators = @[lineView]; + } + return _titleView; +} + +- (JXCategoryListContainerView *)contentView { + if (!_contentView) { + _contentView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; + _contentView.defaultSelectedIndex = 0; + } + return _contentView; +} + +- (NSArray *)titles { + return @[@"房间", YMLocalizedString(@"XPRoomSearchContainerViewController4")]; +} + +- (XPHomeSearchNavView *)searchView { + if (!_searchView) { + _searchView = [[XPHomeSearchNavView alloc] init]; + _searchView.delegate = self; + _searchView.searchTextField.delegate = self; + } + return _searchView; +} + +- (XPHomeSearchViewController *)roomVC { + if (!_roomVC) { + _roomVC = [[XPHomeSearchViewController alloc] init]; + _roomVC.type = SearchType_Room; + } + return _roomVC; +} + +- (XPHomeSearchViewController *)userVC { + if (!_userVC) { + _userVC = [[XPHomeSearchViewController alloc] init]; + _userVC.type = SearchType_Users; + } + return _userVC; +} + +- (XPRoomSearchRecordViewController *)recordVc { + if (!_recordVc) { + _recordVc = [[XPRoomSearchRecordViewController alloc] init]; + _recordVc.delegate = self; + } + return _recordVc; +} + +- (XPHomeSearchRelateView *)relateView { + if (!_relateView) { + _relateView = [[XPHomeSearchRelateView alloc] init]; + _relateView.delegate = self; + } + return _relateView; +} + +@end diff --git a/YuMi/Modules/YMNewHome/View/Search/View/XPRoomSearchRecordViewController.h b/YuMi/Modules/YMNewHome/View/Search/View/XPRoomSearchRecordViewController.h new file mode 100644 index 00000000..ba2cdfe2 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/View/XPRoomSearchRecordViewController.h @@ -0,0 +1,33 @@ +// +// YMRoomSearchRecordViewController.h +// YUMI +// +// Created by YUMI on 2022/9/5. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPRoomSearchRecordViewControllerDelegate + +///搜索 +- (void)xPRoomSearchRecordViewControllerSearchWithWord:(NSString *)word; + +///点击了大家都在搜 +- (void)xPRoomSearchRecordViewControllerEveryoneSearch:(NSString *)word sid:(NSString *)sid; + +@end + +@interface XPRoomSearchRecordViewController : MvpViewController + +@property (nonatomic, weak) id delegate; +/// 保存搜索记录 +- (void)storeSearchRecord:(NSString *)record; + +///更新搜索记录 +- (void)updateSearchRecord; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/View/XPRoomSearchRecordViewController.m b/YuMi/Modules/YMNewHome/View/Search/View/XPRoomSearchRecordViewController.m new file mode 100644 index 00000000..4289a102 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/Search/View/XPRoomSearchRecordViewController.m @@ -0,0 +1,513 @@ +// +// YMRoomSearchRecordViewController.m +// YUMI +// +// Created by YUMI on 2022/9/5. +// + +#import "XPRoomSearchRecordViewController.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "AccountInfoStorage.h" +#import "TTPopup.h" +#import "NSArray+Safe.h" +#import "StatisticsServiceHelper.h" +#import "ClientConfig.h" +///View +#import "XPHomeAttentionCollectionViewCell.h" +#import "XPHomeSearchRecordCell.h" +#import "XPRoomViewController.h" +#import "XPMineUserInfoViewController.h" +#import "XPMineSimpleUserInfoViewController.h" +///P +#import "XPInRoomRecordPresenter.h" +#import "XPInRoomRecordProtocol.h" +///Model +#import "XPMineFootPrintModel.h" +#import "HomeEveryOneSearchModel.h" + +NSString * const XPConstSearchRecordStoreKey = @"XPConstSearchRecordStoreKey"; + +@interface XPRoomSearchRecordViewController () + +@property (nonatomic, strong) UIStackView *contentStackView; +///大家都在搜 +@property (nonatomic, strong) UIView *allSearchContentView; +///大家都在搜标题 +@property (nonatomic, strong) UILabel *everyOneTitle; +@property (nonatomic, strong) UICollectionView *everyOneCollectionView; +///搜索记录容器 +@property (nonatomic, strong) UIView *searchContentView; +///进房记录容器 +@property (nonatomic, strong) UIView *roomContentView; +///填充占位view +@property (nonatomic, strong) UIView *placeHolderView; +///搜索记录 +@property (nonatomic, strong) UILabel *recordTitle; +///清空搜索记录 +@property (nonatomic, strong) UIButton *clearRecordBtn; +///进房记录 +@property (nonatomic, strong) UILabel *roomTitle; +///清空进房记录 +@property (nonatomic, strong) UIButton *clearRoomBtn; +///搜索记录列表 +@property (nonatomic, strong) UICollectionView *searchCollectionView; +///进房记录列表 +@property (nonatomic, strong) UICollectionView *roomCollectionView; +///搜索记录数据源 +@property (nonatomic, strong) NSMutableArray *searchList; +///进房记录数据源 +@property (nonatomic, strong) NSMutableArray *inRoomList; +///大家都在搜数据源 +@property (nonatomic, strong) NSMutableArray *everyoneSearchList; + +@end + +@implementation XPRoomSearchRecordViewController + +- (XPInRoomRecordPresenter *)createPresenter { + return [[XPInRoomRecordPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + [self initSearchRecordData]; + [self.presenter getInRoomRecordList]; +} + +- (void)initSearchRecordData { + [self.searchList removeAllObjects]; + NSArray *array = [self searchRecordList]; + [self.searchList addObjectsFromArray:array]; + self.searchContentView.hidden = array.count == 0; + [self.searchCollectionView reloadData]; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + [self.view endEditing:YES]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.contentStackView]; + + [self.contentStackView addArrangedSubview:self.allSearchContentView]; + [self.contentStackView addArrangedSubview:self.searchContentView]; + [self.contentStackView addArrangedSubview:self.roomContentView]; + [self.contentStackView addArrangedSubview:self.placeHolderView]; + + [self.allSearchContentView addSubview:self.everyOneTitle]; + [self.allSearchContentView addSubview:self.everyOneCollectionView]; + + [self.searchContentView addSubview:self.recordTitle]; + [self.searchContentView addSubview:self.clearRecordBtn]; + [self.searchContentView addSubview:self.searchCollectionView]; + [self.roomContentView addSubview:self.roomTitle]; + [self.roomContentView addSubview:self.clearRoomBtn]; + [self.roomContentView addSubview:self.roomCollectionView]; +} + +- (void)initSubViewConstraints { + [self.contentStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.right.left.bottom.mas_equalTo(self.view); + }]; + [self.allSearchContentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(0); + make.bottom.mas_equalTo(self.everyOneCollectionView); + }]; + [self.everyOneTitle mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.allSearchContentView).mas_offset(16); + make.top.mas_equalTo(self.allSearchContentView).mas_offset(16); + make.height.mas_equalTo(20); + }]; + [self.everyOneCollectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.allSearchContentView); + make.top.mas_equalTo(self.everyOneTitle.mas_bottom).mas_offset(8); + make.height.mas_equalTo(26); + }]; + + [self.searchContentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(0); + make.bottom.mas_equalTo(self.searchCollectionView.mas_bottom); + }]; + + [self.recordTitle mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(16); + make.top.mas_equalTo(self.searchContentView).mas_offset(20); + make.height.mas_equalTo(20); + }]; + [self.clearRecordBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-16); + make.centerY.mas_equalTo(self.recordTitle); + make.width.height.mas_equalTo(30); + }]; + [self.searchCollectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.height.mas_equalTo(26); + make.top.mas_equalTo(self.recordTitle.mas_bottom).mas_offset(8); + }]; + + [self.roomContentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(0); + make.bottom.mas_equalTo(self.roomCollectionView.mas_bottom); + }]; + + [self.roomTitle mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(16); + make.top.mas_equalTo(self.roomContentView).mas_offset(20); + make.height.mas_equalTo(20); + }]; + [self.clearRoomBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-16); + make.centerY.mas_equalTo(self.roomTitle); + make.width.height.mas_equalTo(30); + }]; + [self.roomCollectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.height.mas_equalTo(75); + make.top.mas_equalTo(self.roomTitle.mas_bottom).mas_offset(8); + }]; +} + +#pragma mark - UICollectionViewDelegate +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + if (collectionView == self.searchCollectionView) { + return self.searchList.count; + } else if (collectionView == self.roomCollectionView) { + return self.inRoomList.count; + } else { + return self.everyoneSearchList.count; + } +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + if (collectionView == self.searchCollectionView) { + XPHomeSearchRecordCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPHomeSearchRecordCell class]) forIndexPath:indexPath]; + cell.recordString = [self.searchList safeObjectAtIndex1:indexPath.row]; + return cell; + } else if (collectionView == self.everyOneCollectionView) { + XPHomeSearchRecordCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPHomeSearchRecordCell class]) forIndexPath:indexPath]; + HomeEveryOneSearchModel *model = [self.everyoneSearchList safeObjectAtIndex1:indexPath.row]; + cell.recordString = model.word; + return cell; + } else { + XPHomeAttentionCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPHomeAttentionCollectionViewCell class]) forIndexPath:indexPath]; + cell.recordRoom = [self.inRoomList safeObjectAtIndex1:indexPath.row]; + return cell; + } +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + if (collectionView == self.searchCollectionView) { + NSString *str = [self.searchList safeObjectAtIndex1:indexPath.row]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomSearchRecordViewControllerSearchWithWord:)]) { + [self.delegate xPRoomSearchRecordViewControllerSearchWithWord:str]; + } + } else if (collectionView == self.everyOneCollectionView) { + HomeEveryOneSearchModel *model = [self.everyoneSearchList safeObjectAtIndex1:indexPath.row]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventRoom_allinsearch_entry_click eventAttributes:@{@"searchWord" :model.word}]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomSearchRecordViewControllerEveryoneSearch: sid:)]) { + [self.delegate xPRoomSearchRecordViewControllerEveryoneSearch:model.word sid:model.sid]; + } + } else { + XPMineFootPrintModel *resultModel = [self.inRoomList safeObjectAtIndex1:indexPath.row]; + [self dismissViewControllerAnimated:YES completion:nil]; + if (resultModel.valid) { + [XPRoomViewController openRoom:resultModel.roomUid viewController:self.presentingViewController]; + } else { + if ([ClientConfig shareConfig].canOpen) { + XPMineUserInfoViewController * infoVC = [[XPMineUserInfoViewController alloc] init]; + infoVC.uid = resultModel.roomUid.integerValue; + [(UINavigationController *)self.presentingViewController pushViewController:infoVC animated:YES]; + }else{ + XPMineSimpleUserInfoViewController * infoVC = [[XPMineSimpleUserInfoViewController alloc] init]; + infoVC.uid = resultModel.roomUid.integerValue; + [(UINavigationController *)self.presentingViewController pushViewController:infoVC animated:YES]; + } + } + } +} + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + if (collectionView == self.searchCollectionView) { + NSString *str = [self.searchList safeObjectAtIndex1:indexPath.row]; + CGFloat width = [str boundingRectWithSize:CGSizeMake(200, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:12]} context:nil].size.width; + return CGSizeMake(width + 26, 26); + } else if(collectionView == self.everyOneCollectionView){ + HomeEveryOneSearchModel *model = [self.everyoneSearchList safeObjectAtIndex1:indexPath.row]; + CGFloat width = [model.word boundingRectWithSize:CGSizeMake(200, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:12]} context:nil].size.width; + return CGSizeMake(width + 26, 26); + } else { + return CGSizeMake(56, 75); + } +} + + +#pragma mark - 搜索记录操作 +/// 获取搜索记录 +- (NSArray *)searchRecordList { + NSString *key = [NSString stringWithFormat:@"%@_%@", XPConstSearchRecordStoreKey, [AccountInfoStorage instance].getUid]; + NSArray *list = [[NSUserDefaults standardUserDefaults] objectForKey:key]; + return list; +} + +/// 保存搜索记录 +- (void)storeSearchRecord:(NSString *)record { + if (record == nil || record.length <= 0) { + return; + } + NSString *key = [NSString stringWithFormat:@"%@_%@", XPConstSearchRecordStoreKey, [AccountInfoStorage instance].getUid]; + NSMutableArray *list = [[[NSUserDefaults standardUserDefaults] objectForKey:key] mutableCopy]; + if (list == nil) { + list = [[NSMutableArray alloc] init]; + } + + [list removeObject:record];//去重 + [list insertObject:record atIndex:0];//插入 + + if (list.count > 20) {//最多保存20条记录 + [list removeLastObject]; + } + + [[NSUserDefaults standardUserDefaults] setValue:list forKey:key]; + [[NSUserDefaults standardUserDefaults] synchronize]; +} + +/// 清空搜索记录 +- (void)cleanSearchRecord { + NSString *key = [NSString stringWithFormat:@"%@_%@", XPConstSearchRecordStoreKey, [AccountInfoStorage instance].getUid]; + [[NSUserDefaults standardUserDefaults] removeObjectForKey:key]; + [[NSUserDefaults standardUserDefaults] synchronize]; +} + +- (void)updateSearchRecord { + [self initSearchRecordData]; +} + +///获取大家都在搜列表成功 +- (void)getEveryoneSearchListSuccess:(NSArray *)array { + [self.everyoneSearchList removeAllObjects]; + [self.everyoneSearchList addObjectsFromArray:array]; + self.allSearchContentView.hidden = array.count == 0; + [self.everyOneCollectionView reloadData]; +} + +///获取进房记录成功 +- (void)getInRoomRecordSuccess:(NSArray *)array { + [self.inRoomList removeAllObjects]; + [self.inRoomList addObjectsFromArray:array]; + [self.roomCollectionView reloadData]; + if (array.count == 0) { + self.roomContentView.hidden = YES; + } +} + +///清除进房记录成功 +- (void)cleanInRoomRecordSuccess { + [self.inRoomList removeAllObjects]; + [self.roomCollectionView reloadData]; + self.roomContentView.hidden = YES; +} + +#pragma mark - action +- (void)onClearSearchRecordClick:(UIButton *)sender { + TTAlertConfig * config = [[TTAlertConfig alloc] init]; + config.confirmButtonConfig.title = YMLocalizedString(@"XPRoomSearchRecordViewController0"); + config.cancelButtonConfig.title = YMLocalizedString(@"XPRoomSearchRecordViewController1"); + config.message = @"确定清空搜索记录吗?"; + [TTPopup alertWithConfig:config confirmHandler:^{ + [self cleanSearchRecord]; + [self.searchList removeAllObjects]; + [self.searchCollectionView reloadData]; + self.searchContentView.hidden = YES; + } cancelHandler:^{ + }]; +} + +- (void)onClearRoomClick:(UIButton *)sender { + TTAlertConfig * config = [[TTAlertConfig alloc] init]; + config.confirmButtonConfig.title = YMLocalizedString(@"XPRoomSearchRecordViewController3"); + config.cancelButtonConfig.title = YMLocalizedString(@"XPRoomSearchRecordViewController4"); + config.message = @"确定清空进房记录吗?"; + [TTPopup alertWithConfig:config confirmHandler:^{ + [self.presenter cleanInRoomRecord]; + } cancelHandler:^{ + }]; +} + +#pragma mark - getter +- (UIStackView *)contentStackView { + if (!_contentStackView) { + _contentStackView = [[UIStackView alloc] init]; + _contentStackView.axis = UILayoutConstraintAxisVertical; + _contentStackView.distribution = UIStackViewDistributionFill; + _contentStackView.alignment = UIStackViewAlignmentFill; + _contentStackView.alignment = UIStackViewAlignmentCenter; + _contentStackView.spacing = 0; + } + return _contentStackView; +} + +- (UIView *)allSearchContentView { + if (!_allSearchContentView) { + _allSearchContentView = [[UIView alloc] init]; + _allSearchContentView.hidden = YES; + } + return _allSearchContentView; +} + + +- (UILabel *)everyOneTitle { + if (!_everyOneTitle) { + UILabel *label = [[UILabel alloc] init]; + label.text = YMLocalizedString(@"XPRoomSearchRecordViewController6"); + label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; + label.textColor = [DJDKMIMOMColor mainTextColor]; + _everyOneTitle = label; + } + return _everyOneTitle; +} + +- (UICollectionView *)everyOneCollectionView{ + if (!_everyOneCollectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.minimumLineSpacing = 8; + layout.minimumInteritemSpacing = 8; + layout.sectionInset = UIEdgeInsetsMake(0, 15, 0, 15); + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + _everyOneCollectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _everyOneCollectionView.showsHorizontalScrollIndicator = NO; + _everyOneCollectionView.dataSource = self; + _everyOneCollectionView.delegate = self; + _everyOneCollectionView.backgroundColor = [UIColor clearColor]; + [_everyOneCollectionView registerClass:[XPHomeSearchRecordCell class] forCellWithReuseIdentifier:NSStringFromClass([XPHomeSearchRecordCell class])]; + } + return _everyOneCollectionView; +} + +- (UILabel *)recordTitle { + if (!_recordTitle) { + UILabel *label = [[UILabel alloc] init]; + label.text = YMLocalizedString(@"XPRoomSearchRecordViewController7"); + label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; + label.textColor = [DJDKMIMOMColor mainTextColor]; + _recordTitle = label; + } + return _recordTitle; +} + +- (UILabel *)roomTitle { + if (!_roomTitle) { + UILabel *label = [[UILabel alloc] init]; + label.text = YMLocalizedString(@"XPRoomSearchRecordViewController8"); + label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; + label.textColor = [DJDKMIMOMColor mainTextColor]; + _roomTitle = label; + } + return _roomTitle; +} + +- (UIButton *)clearRecordBtn { + if (!_clearRecordBtn) { + UIButton *btn = [[UIButton alloc] init]; + [btn setImage:[UIImage imageNamed:@"sessionList_clear"] forState:UIControlStateNormal]; + [btn addTarget:self action:@selector(onClearSearchRecordClick:) forControlEvents:UIControlEventTouchUpInside]; + _clearRecordBtn = btn; + } + return _clearRecordBtn; +} + +- (UIButton *)clearRoomBtn { + if (!_clearRoomBtn) { + UIButton *btn = [[UIButton alloc] init]; + [btn setImage:[UIImage imageNamed:@"sessionList_clear"] forState:UIControlStateNormal]; + [btn addTarget:self action:@selector(onClearRoomClick:) forControlEvents:UIControlEventTouchUpInside]; + _clearRoomBtn = btn; + } + return _clearRoomBtn; +} + +- (UICollectionView *)searchCollectionView{ + if (!_searchCollectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.minimumLineSpacing = 8; + layout.minimumInteritemSpacing = 8; + layout.sectionInset = UIEdgeInsetsMake(0, 15, 0, 15); + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + _searchCollectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _searchCollectionView.showsHorizontalScrollIndicator = NO; + _searchCollectionView.dataSource = self; + _searchCollectionView.delegate = self; + _searchCollectionView.backgroundColor = [UIColor clearColor]; + [_searchCollectionView registerClass:[XPHomeSearchRecordCell class] forCellWithReuseIdentifier:NSStringFromClass([XPHomeSearchRecordCell class])]; + } + return _searchCollectionView; +} + +- (UICollectionView *)roomCollectionView{ + if (!_roomCollectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.minimumLineSpacing = 8; + layout.minimumInteritemSpacing = 0; + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + layout.sectionInset = UIEdgeInsetsMake(0, 15, 0, 15); + _roomCollectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _roomCollectionView.showsHorizontalScrollIndicator = NO; + _roomCollectionView.dataSource = self; + _roomCollectionView.delegate = self; + _roomCollectionView.backgroundColor = [UIColor clearColor]; + [_roomCollectionView registerClass:[XPHomeAttentionCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPHomeAttentionCollectionViewCell class])]; + } + return _roomCollectionView; +} + +- (NSMutableArray *)searchList { + if (!_searchList) { + _searchList = [NSMutableArray array]; + } + return _searchList; +} + +- (NSMutableArray *)inRoomList { + if (!_inRoomList) { + _inRoomList = [NSMutableArray array]; + } + return _inRoomList; +} + +- (NSMutableArray *)everyoneSearchList { + if (!_everyoneSearchList) { + _everyoneSearchList = [NSMutableArray array]; + } + return _everyoneSearchList; +} + +- (UIView *)searchContentView { + if (!_searchContentView) { + _searchContentView = [[UIView alloc] init]; + } + return _searchContentView; +} + +- (UIView *)roomContentView { + if (!_roomContentView) { + _roomContentView = [[UIView alloc] init]; + } + return _roomContentView; +} + +- (UIView *)placeHolderView { + if (!_placeHolderView) { + _placeHolderView = [[UIView alloc] init]; + _placeHolderView.backgroundColor = [UIColor clearColor]; + [_placeHolderView setContentHuggingPriority:UILayoutPriorityDragThatCanResizeScene forAxis:UILayoutConstraintAxisHorizontal]; + [_placeHolderView setContentCompressionResistancePriority:UILayoutPriorityFittingSizeLevel forAxis:UILayoutConstraintAxisHorizontal]; + } + return _placeHolderView; +} + +@end diff --git a/YuMi/Modules/YMNewHome/View/Search/View/YUMIChamberHuntforAccommodatedRegardGovernancer.h b/YuMi/Modules/YMNewHome/View/Search/View/YUMIChamberHuntforAccommodatedRegardGovernancer.h deleted file mode 100644 index b1a64a9b..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/View/YUMIChamberHuntforAccommodatedRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomSearchContaierViewController.h -// YUMI -// -// Created by YUMI on 2021/12/2. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberHuntforAccommodatedRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/View/YUMIChamberHuntforAccommodatedRegardGovernancer.m b/YuMi/Modules/YMNewHome/View/Search/View/YUMIChamberHuntforAccommodatedRegardGovernancer.m deleted file mode 100644 index b6088d80..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/View/YUMIChamberHuntforAccommodatedRegardGovernancer.m +++ /dev/null @@ -1,282 +0,0 @@ -// -// YMRoomSearchContaierViewController.m -// YUMI -// -// Created by YUMI on 2021/12/2. -// - -#import "YUMIChamberHuntforAccommodatedRegardGovernancer.h" -#import -#import -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "YUMIResidenceHuntforNevRegard.h" -#import "MKJPopup.h" -#import "StatsticsticsServingFacilitater.h" -#import "YUMIResidenceHuntforRegardGovernancer.h" -#import "YUMIChamberHuntforReflectionRegardGovernancer.h" -#import "YUMIResidenceHuntforRelateRegard.h" -#import "YUMIChamberRegardGovernancer.h" -#import "YUMIResidenceHuntforExternalizer.h" -#import "FBCResidenceHuntforCeremony.h" - -UIKIT_EXTERN NSString *kFromSearchToHomeViewKey; -UIKIT_EXTERN NSString *kTabShowAnchorCardKey; - -@interface YUMIChamberHuntforAccommodatedRegardGovernancer () -@property (nonatomic, strong) NSArray *titles; -@property (nonatomic, strong) JXCategoryTitleView *titleView; -@property (nonatomic, strong) JXCategoryListContainerView *contentView; -@property (nonatomic,strong) YUMIResidenceHuntforNevRegard *huntforRegard; -@property (nonatomic,strong) YUMIResidenceHuntforRegardGovernancer *chamberVewC; -@property (nonatomic,strong) YUMIResidenceHuntforRegardGovernancer *consumerVewC; -@property (nonatomic, strong) YUMIChamberHuntforReflectionRegardGovernancer *reflectionVewc; -@property (nonatomic, strong) YUMIResidenceHuntforRelateRegard *relateRegard; - -@end - -@implementation YUMIChamberHuntforAccommodatedRegardGovernancer - - -- (YUMIResidenceHuntforExternalizer *)producePresimport { - return [[YUMIResidenceHuntforExternalizer alloc] init]; -} - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - self.modalPresentationStyle = UIModalPresentationOverFullScreen; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.huntforRegard]; - [self.view addSubview:self.titleView]; - [self.view addSubview:self.contentView]; - [self.view addSubview:self.reflectionVewc.view]; - [self addChildViewController:self.reflectionVewc]; -} - -- (void)initChildLyRestrictions { - [self.huntforRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.height.mas_equalTo(kNavigationHeight); - }]; - - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.top.mas_equalTo(self.huntforRegard.mas_bottom).offset(10); - make.height.mas_equalTo(50); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.titleView.mas_bottom).offset(10); - make.left.right.bottom.mas_equalTo(self.view); - }]; - [self.reflectionVewc.view mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.top.mas_equalTo(self.huntforRegard.mas_bottom); - make.bottom.mas_equalTo(self.view); - }]; -} - -- (void)huntforVewCLoadTowardsoloudspeaker:(NSString *)text { - self.reflectionVewc.view.hidden = YES; - [self.chamberVewC searchText:text]; - [self.consumerVewC searchText:text]; -} - -#pragma mark - JXCategoryViewDelegate -- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { - return self.titles.count; -} - -- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { - if (index == 0) { - return self.chamberVewC; - } - return self.consumerVewC; -} - -#pragma mark - UITextFieldDelegate -- (BOOL)textFieldShouldReturn:(UITextField *)essayUniverse { - if (essayUniverse.text.length > 0) { - [essayUniverse resignFirstResponder]; - [self huntforVewCLoadTowardsoloudspeaker:essayUniverse.text]; - [self.reflectionVewc storeHuntforReflection:essayUniverse.text]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventRoom_search_input_click eventAttributes:@{@"searchWord":essayUniverse.text}]; - } else { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Room_Search_Container_View_Controller_0")]; - } - return YES; -} - -#pragma mark -FBCResidenceHuntforNevRegardRepresendtation -- (void)fBCHoutilizeHuntforNevRegard:(YUMIResidenceHuntforNevRegard *)view didClickSearch:(UIButton *)sender { - if (view.searchTextField.text.length > 0) { - [view.searchTextField resignFirstResponder]; - [self.reflectionVewc storeHuntforReflection:view.searchTextField.text]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventRoom_search_input_click eventAttributes:@{@"searchWord":view.searchTextField.text}]; - } else { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Room_Search_Container_View_Controller_1")]; - } -} - -- (void)fBCHoutilizeHuntforNevRegard:(YUMIResidenceHuntforNevRegard *)view didClickBack:(UIButton *)sender { - [view.searchTextField resignFirstResponder]; - BOOL result = [[NSUserDefaults standardUserDefaults] boolForKey:kFromSearchToHomeViewKey]; - if (!result) { - [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kFromSearchToHomeViewKey]; - [[NSUserDefaults standardUserDefaults] synchronize]; - [[NSNotificationCenter defaultCenter] postNotificationName:kTabShowAnchorCardKey object:nil]; - } - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)fBCHoutilizeHuntforNevRegardDistinctEssayUniverse:(YUMIResidenceHuntforNevRegard *)view { - self.reflectionVewc.view.hidden = NO; - [self.reflectionVewc refurbishHuntforReflection]; - [self.relateRegard removeFromSuperview]; -} - -#pragma mark - FBCChamberHuntforRecordRegardGovernancerRepresendtation -- (void)yUMIChamberHuntforReflectionRegardGovernancerHuntforAboutWord:(NSString *)word { - if (word.length > 0) { - self.huntforRegard.searchTextField.text = word; - [self huntforVewCLoadTowardsoloudspeaker:word]; - [self.reflectionVewc storeHuntforReflection:word]; - } else { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Room_Search_Container_View_Controller_2")]; - } -} - -- (void)yUMIChamberHuntforReflectionRegardGovernancerEachoneHuntfor:(NSString *)word sid:(nonnull NSString *)sid { - self.huntforRegard.searchTextField.text = word; -} - -#pragma mark - FBCResidenceHuntforCeremony -- (void)everyoneHuntforSttowardsementAccomplishment:(NSArray *)list { - if (list.count) { - [self.view addSubview:self.relateRegard]; - [self.relateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(0); - make.top.mas_equalTo(self.huntforRegard.mas_bottom); - }]; - self.relateRegard.relateGarment = list; - } else { - [self.presimport acquireResidenceEncourageChamberSttowardsement]; - } -} - -- (void)huntforChamberAcquireEncourageAccomplishment:(NSArray *)data { - if (data.count) { - [self.view addSubview:self.relateRegard]; - [self.relateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(0); - make.top.mas_equalTo(self.huntforRegard.mas_bottom); - }]; - self.relateRegard.encourageGarment = data; - } -} - -- (void)huntforChamberAcquireEncourageFlunk { - -} - -#pragma mark - FBCResidenceHuntforRelateRegardRepresendtation -- (void)fBCHoutilizeHuntforReltowardseRegardImportChamber:(NSString *)roomUid { - BOOL result = [[NSUserDefaults standardUserDefaults] boolForKey:kFromSearchToHomeViewKey]; - if (!result) { - [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kFromSearchToHomeViewKey]; - [[NSUserDefaults standardUserDefaults] synchronize]; - [[NSNotificationCenter defaultCenter] postNotificationName:kTabShowAnchorCardKey object:@{@"delayShow" : @(YES)}]; - } - [self dismissViewControllerAnimated:YES completion:nil]; - [YUMIChamberRegardGovernancer unfoildChamber:roomUid viewController:self.presentingViewController]; -} - -#pragma mark - Getters And Setters -- (JXCategoryTitleView *)titleView { - if (!_titleView) { - _titleView = [[JXCategoryTitleView alloc] init]; - _titleView.delegate = self; - _titleView.titles = self.titles; - _titleView.titleColor = [DJDKMIMOMColor instantEssayPrettify]; - _titleView.titleSelectedColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleView.titleFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; - _titleView.titleSelectedFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; - _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; - _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; - _titleView.defaultSelectedIndex = 0; - _titleView.listContainer = self.contentView; - - JXCategoryIndicatorLineView *burlywoodRegard = [[JXCategoryIndicatorLineView alloc] init]; - burlywoodRegard.indicatorColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - burlywoodRegard.indicatorWidth = 8.f; - burlywoodRegard.indicatorHeight = 4.f; - burlywoodRegard.indicatorCornerRadius = 2.f; - _titleView.indicators = @[burlywoodRegard]; - } - return _titleView; -} - -- (JXCategoryListContainerView *)contentView { - if (!_contentView) { - _contentView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; - _contentView.defaultSelectedIndex = 0; - } - return _contentView; -} - -- (NSArray *)titles { - return @[@"房间", YMLocalizedString(@"YUMI_Room_Search_Container_View_Controller_4")]; -} - -- (YUMIResidenceHuntforNevRegard *)huntforRegard { - if (!_huntforRegard) { - _huntforRegard = [[YUMIResidenceHuntforNevRegard alloc] init]; - _huntforRegard.delegate = self; - _huntforRegard.searchTextField.delegate = self; - } - return _huntforRegard; -} - -- (YUMIResidenceHuntforRegardGovernancer *)chamberVewC { - if (!_chamberVewC) { - _chamberVewC = [[YUMIResidenceHuntforRegardGovernancer alloc] init]; - _chamberVewC.type = SearchGenre_Room; - } - return _chamberVewC; -} - -- (YUMIResidenceHuntforRegardGovernancer *)consumerVewC { - if (!_consumerVewC) { - _consumerVewC = [[YUMIResidenceHuntforRegardGovernancer alloc] init]; - _consumerVewC.type = SearchGenre_Users; - } - return _consumerVewC; -} - -- (YUMIChamberHuntforReflectionRegardGovernancer *)reflectionVewc { - if (!_reflectionVewc) { - _reflectionVewc = [[YUMIChamberHuntforReflectionRegardGovernancer alloc] init]; - _reflectionVewc.delegate = self; - } - return _reflectionVewc; -} - -- (YUMIResidenceHuntforRelateRegard *)relateRegard { - if (!_relateRegard) { - _relateRegard = [[YUMIResidenceHuntforRelateRegard alloc] init]; - _relateRegard.delegate = self; - } - return _relateRegard; -} - -@end diff --git a/YuMi/Modules/YMNewHome/View/Search/View/YUMIChamberHuntforReflectionRegardGovernancer.h b/YuMi/Modules/YMNewHome/View/Search/View/YUMIChamberHuntforReflectionRegardGovernancer.h deleted file mode 100644 index ca454cdc..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/View/YUMIChamberHuntforReflectionRegardGovernancer.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// YMRoomSearchRecordViewController.h -// YUMI -// -// Created by YUMI on 2022/9/5. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCChamberHuntforRecordRegardGovernancerRepresendtation - -- (void)yUMIChamberHuntforReflectionRegardGovernancerHuntforAboutWord:(NSString *)word; - -- (void)yUMIChamberHuntforReflectionRegardGovernancerEachoneHuntfor:(NSString *)word sid:(NSString *)sid; - -@end - -@interface YUMIChamberHuntforReflectionRegardGovernancer : MvpRegardGovernancer - -@property (nonatomic, weak) id delegate; -- (void)storeHuntforReflection:(NSString *)record; - -- (void)refurbishHuntforReflection; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/View/YUMIChamberHuntforReflectionRegardGovernancer.m b/YuMi/Modules/YMNewHome/View/Search/View/YUMIChamberHuntforReflectionRegardGovernancer.m deleted file mode 100644 index 39950afa..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/View/YUMIChamberHuntforReflectionRegardGovernancer.m +++ /dev/null @@ -1,488 +0,0 @@ -// -// YMRoomSearchRecordViewController.m -// YUMI -// -// Created by YUMI on 2022/9/5. -// - -#import "YUMIChamberHuntforReflectionRegardGovernancer.h" -#import -#import "DJDKMIMOMColor.h" -#import "AccountAbstractStorage.h" -#import "MKJPopup.h" -#import "NSArray+Safe.h" -#import "StatsticsticsServingFacilitater.h" -#import "ClientDisposition.h" -#import "YUMIResidenceConsiderationAssembletionRegardElement.h" -#import "YUMIResidenceHuntforReflectionElement.h" -#import "YUMIChamberRegardGovernancer.h" -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -#import "YUMIManeSimpleConsumerAbstractRegardGovernancer.h" -#import "YUMIInChamberReflectionExternalizer.h" -#import "FBCInChamberRecordCeremony.h" -#import "YUMIManeTerminalImpressionMatrix.h" -#import "ResidenceEveryOneHuntforMatrix.h" - -NSString * const XPConstSearchRecordStoreKey = @"XPConstSearchRecordStoreKey"; - -@interface YUMIChamberHuntforReflectionRegardGovernancer () - -@property (nonatomic, strong) UIStackView *satisfperformanceHierarchyRegard; -@property (nonatomic, strong) UIView *entiretyHuntforSatisfperformanceRegard; -@property (nonatomic, strong) UILabel *eachSoleChampion; -@property (nonatomic, strong) UICollectionView *eachSoleAssembletionRegard; -@property (nonatomic, strong) UIView *huntforSatisfperformanceRegard; -@property (nonatomic, strong) UIView *chamberSatisfperformanceRegard; -@property (nonatomic, strong) UIView *deparatmentMaintainrietaryRegard; -@property (nonatomic, strong) UILabel *reflectionChampion; -@property (nonatomic, strong) UIButton *distinctReflectionBtuton; -@property (nonatomic, strong) UILabel *roomTitle; -@property (nonatomic, strong) UIButton *distinctChamberBtuton; -@property (nonatomic, strong) UICollectionView *huntforAssembletionRegard; -@property (nonatomic, strong) UICollectionView *chamberAssembletionRegard; -@property (nonatomic, strong) NSMutableArray *huntforStatement; -@property (nonatomic, strong) NSMutableArray *inChamberStatement; -@property (nonatomic, strong) NSMutableArray *eachoneHuntforStatement; - -@end - -@implementation YUMIChamberHuntforReflectionRegardGovernancer - -- (YUMIInChamberReflectionExternalizer *)producePresimport { - return [[YUMIInChamberReflectionExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self initHuntforReflectionTowardsoloudspeaker]; - [self.presimport acquireInChamberReflectionSttowardsement]; -} - -- (void)initHuntforReflectionTowardsoloudspeaker { - [self.huntforStatement removeAllObjects]; - NSArray *array = [self huntforReflectionSttowardsement]; - [self.huntforStatement addObjectsFromArray:array]; - self.huntforSatisfperformanceRegard.hidden = array.count == 0; - [self.huntforAssembletionRegard reloadData]; -} - -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { - [self.view endEditing:YES]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.satisfperformanceHierarchyRegard]; - - [self.satisfperformanceHierarchyRegard addArrangedSubview:self.entiretyHuntforSatisfperformanceRegard]; - [self.satisfperformanceHierarchyRegard addArrangedSubview:self.huntforSatisfperformanceRegard]; - [self.satisfperformanceHierarchyRegard addArrangedSubview:self.chamberSatisfperformanceRegard]; - [self.satisfperformanceHierarchyRegard addArrangedSubview:self.deparatmentMaintainrietaryRegard]; - - [self.entiretyHuntforSatisfperformanceRegard addSubview:self.eachSoleChampion]; - [self.entiretyHuntforSatisfperformanceRegard addSubview:self.eachSoleAssembletionRegard]; - - [self.huntforSatisfperformanceRegard addSubview:self.reflectionChampion]; - [self.huntforSatisfperformanceRegard addSubview:self.distinctReflectionBtuton]; - [self.huntforSatisfperformanceRegard addSubview:self.huntforAssembletionRegard]; - [self.chamberSatisfperformanceRegard addSubview:self.roomTitle]; - [self.chamberSatisfperformanceRegard addSubview:self.distinctChamberBtuton]; - [self.chamberSatisfperformanceRegard addSubview:self.chamberAssembletionRegard]; -} - -- (void)initChildLyRestrictions { - [self.satisfperformanceHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.right.left.bottom.mas_equalTo(self.view); - }]; - [self.entiretyHuntforSatisfperformanceRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(0); - make.bottom.mas_equalTo(self.eachSoleAssembletionRegard); - }]; - [self.eachSoleChampion mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.entiretyHuntforSatisfperformanceRegard).mas_offset(16); - make.top.mas_equalTo(self.entiretyHuntforSatisfperformanceRegard).mas_offset(16); - make.height.mas_equalTo(20); - }]; - [self.eachSoleAssembletionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.entiretyHuntforSatisfperformanceRegard); - make.top.mas_equalTo(self.eachSoleChampion.mas_bottom).mas_offset(8); - make.height.mas_equalTo(26); - }]; - - [self.huntforSatisfperformanceRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(0); - make.bottom.mas_equalTo(self.huntforAssembletionRegard.mas_bottom); - }]; - - [self.reflectionChampion mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(16); - make.top.mas_equalTo(self.huntforSatisfperformanceRegard).mas_offset(20); - make.height.mas_equalTo(20); - }]; - [self.distinctReflectionBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-16); - make.centerY.mas_equalTo(self.reflectionChampion); - make.width.height.mas_equalTo(30); - }]; - [self.huntforAssembletionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.height.mas_equalTo(26); - make.top.mas_equalTo(self.reflectionChampion.mas_bottom).mas_offset(8); - }]; - - [self.chamberSatisfperformanceRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(0); - make.bottom.mas_equalTo(self.chamberAssembletionRegard.mas_bottom); - }]; - - [self.roomTitle mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(16); - make.top.mas_equalTo(self.chamberSatisfperformanceRegard).mas_offset(20); - make.height.mas_equalTo(20); - }]; - [self.distinctChamberBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-16); - make.centerY.mas_equalTo(self.roomTitle); - make.width.height.mas_equalTo(30); - }]; - [self.chamberAssembletionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.height.mas_equalTo(75); - make.top.mas_equalTo(self.roomTitle.mas_bottom).mas_offset(8); - }]; -} - -#pragma mark - UICollectionViewDelegate -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - if (collectionView == self.huntforAssembletionRegard) { - return self.huntforStatement.count; - } else if (collectionView == self.chamberAssembletionRegard) { - return self.inChamberStatement.count; - } else { - return self.eachoneHuntforStatement.count; - } -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - if (collectionView == self.huntforAssembletionRegard) { - YUMIResidenceHuntforReflectionElement *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIResidenceHuntforReflectionElement class]) forIndexPath:indexPath]; - cell.reflectionBWSttr = [self.huntforStatement secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; - } else if (collectionView == self.eachSoleAssembletionRegard) { - YUMIResidenceHuntforReflectionElement *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIResidenceHuntforReflectionElement class]) forIndexPath:indexPath]; - ResidenceEveryOneHuntforMatrix *model = [self.eachoneHuntforStatement secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.reflectionBWSttr = model.word; - return cell; - } else { - YUMIResidenceConsiderationAssembletionRegardElement *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIResidenceConsiderationAssembletionRegardElement class]) forIndexPath:indexPath]; - cell.reflectionChamber = [self.inChamberStatement secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; - } -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - if (collectionView == self.huntforAssembletionRegard) { - NSString *str = [self.huntforStatement secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberHuntforReflectionRegardGovernancerHuntforAboutWord:)]) { - [self.delegate yUMIChamberHuntforReflectionRegardGovernancerHuntforAboutWord:str]; - } - } else if (collectionView == self.eachSoleAssembletionRegard) { - ResidenceEveryOneHuntforMatrix *model = [self.eachoneHuntforStatement secureGroalTowardsIndictowardsrix1:indexPath.row]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventRoom_allinsearch_entry_click eventAttributes:@{@"searchWord" :model.word}]; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberHuntforReflectionRegardGovernancerEachoneHuntfor: sid:)]) { - [self.delegate yUMIChamberHuntforReflectionRegardGovernancerEachoneHuntfor:model.word sid:model.sid]; - } - } else { - YUMIManeTerminalImpressionMatrix *resultModel = [self.inChamberStatement secureGroalTowardsIndictowardsrix1:indexPath.row]; - [self dismissViewControllerAnimated:YES completion:nil]; - if (resultModel.valid) { - [YUMIChamberRegardGovernancer unfoildChamber:resultModel.roomUid viewController:self.presentingViewController]; - } else { - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMIManeConsumerAbstractRegardGovernancer * infoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - infoVC.uid = resultModel.roomUid.integerValue; - [(UINavigationController *)self.presentingViewController pushViewController:infoVC animated:YES]; - }else{ - YUMIManeSimpleConsumerAbstractRegardGovernancer * infoVC = [[YUMIManeSimpleConsumerAbstractRegardGovernancer alloc] init]; - infoVC.uid = resultModel.roomUid.integerValue; - [(UINavigationController *)self.presentingViewController pushViewController:infoVC animated:YES]; - } - } - } -} - -- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { - if (collectionView == self.huntforAssembletionRegard) { - NSString *str = [self.huntforStatement secureGroalTowardsIndictowardsrix1:indexPath.row]; - CGFloat width = [str boundingRectWithSize:CGSizeMake(200, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:12]} context:nil].size.width; - return CGSizeMake(width + 26, 26); - } else if(collectionView == self.eachSoleAssembletionRegard){ - ResidenceEveryOneHuntforMatrix *model = [self.eachoneHuntforStatement secureGroalTowardsIndictowardsrix1:indexPath.row]; - CGFloat width = [model.word boundingRectWithSize:CGSizeMake(200, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:12]} context:nil].size.width; - return CGSizeMake(width + 26, 26); - } else { - return CGSizeMake(56, 75); - } -} - - -#pragma mark - 搜索记录操作 -- (NSArray *)huntforReflectionSttowardsement { - NSString *key = [NSString stringWithFormat:@"%@_%@", XPConstSearchRecordStoreKey, [AccountAbstractStorage instance].acquireCid]; - NSArray *list = [[NSUserDefaults standardUserDefaults] objectForKey:key]; - return list; -} - -- (void)storeHuntforReflection:(NSString *)record { - if (record == nil || record.length <= 0) { - return; - } - NSString *key = [NSString stringWithFormat:@"%@_%@", XPConstSearchRecordStoreKey, [AccountAbstractStorage instance].acquireCid]; - NSMutableArray *list = [[[NSUserDefaults standardUserDefaults] objectForKey:key] mutableCopy]; - if (list == nil) { - list = [[NSMutableArray alloc] init]; - } - - [list removeObject:record]; - [list insertObject:record atIndex:0]; - - if (list.count > 20) { - [list removeLastObject]; - } - - [[NSUserDefaults standardUserDefaults] setValue:list forKey:key]; - [[NSUserDefaults standardUserDefaults] synchronize]; -} - -- (void)sanitaryHuntforReflection { - NSString *key = [NSString stringWithFormat:@"%@_%@", XPConstSearchRecordStoreKey, [AccountAbstractStorage instance].acquireCid]; - [[NSUserDefaults standardUserDefaults] removeObjectForKey:key]; - [[NSUserDefaults standardUserDefaults] synchronize]; -} - -- (void)refurbishHuntforReflection { - [self initHuntforReflectionTowardsoloudspeaker]; -} - -- (void)acquireEachoneHuntforSttowardsementAccomplishment:(NSArray *)array { - [self.eachoneHuntforStatement removeAllObjects]; - [self.eachoneHuntforStatement addObjectsFromArray:array]; - self.entiretyHuntforSatisfperformanceRegard.hidden = array.count == 0; - [self.eachSoleAssembletionRegard reloadData]; -} - -- (void)acquireInChamberReflectionAccomplishment:(NSArray *)array { - [self.inChamberStatement removeAllObjects]; - [self.inChamberStatement addObjectsFromArray:array]; - [self.chamberAssembletionRegard reloadData]; - if (array.count == 0) { - self.chamberSatisfperformanceRegard.hidden = YES; - } -} - -- (void)sanitaryInChamberReflectionAccomplishment { - [self.inChamberStatement removeAllObjects]; - [self.chamberAssembletionRegard reloadData]; - self.chamberSatisfperformanceRegard.hidden = YES; -} - -#pragma mark - action -- (void)onDistinctHuntforReflectionTicktack:(UIButton *)sender { - MKJPrecautiousDisposition * config = [[MKJPrecautiousDisposition alloc] init]; - config.acknowledgementBtutonDisposition.title = YMLocalizedString(@"YUMI_Room_Search_Record_View_Controller_0"); - config.revocationBtutonDisposition.title = YMLocalizedString(@"YUMI_Room_Search_Record_View_Controller_1"); - config.message = @"确定清空搜索记录吗?"; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [self sanitaryHuntforReflection]; - [self.huntforStatement removeAllObjects]; - [self.huntforAssembletionRegard reloadData]; - self.huntforSatisfperformanceRegard.hidden = YES; - } cancelHandler:^{ - }]; -} - -- (void)onDistinctChamberTicktack:(UIButton *)sender { - MKJPrecautiousDisposition * config = [[MKJPrecautiousDisposition alloc] init]; - config.acknowledgementBtutonDisposition.title = YMLocalizedString(@"YUMI_Room_Search_Record_View_Controller_3"); - config.revocationBtutonDisposition.title = YMLocalizedString(@"YUMI_Room_Search_Record_View_Controller_4"); - config.message = @"确定清空进房记录吗?"; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [self.presimport sanitaryInChamberReflection]; - } cancelHandler:^{ - }]; -} - -#pragma mark - getter -- (UIStackView *)satisfperformanceHierarchyRegard { - if (!_satisfperformanceHierarchyRegard) { - _satisfperformanceHierarchyRegard = [[UIStackView alloc] init]; - _satisfperformanceHierarchyRegard.axis = UILayoutConstraintAxisVertical; - _satisfperformanceHierarchyRegard.distribution = UIStackViewDistributionFill; - _satisfperformanceHierarchyRegard.alignment = UIStackViewAlignmentFill; - _satisfperformanceHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _satisfperformanceHierarchyRegard.spacing = 0; - } - return _satisfperformanceHierarchyRegard; -} - -- (UIView *)entiretyHuntforSatisfperformanceRegard { - if (!_entiretyHuntforSatisfperformanceRegard) { - _entiretyHuntforSatisfperformanceRegard = [[UIView alloc] init]; - _entiretyHuntforSatisfperformanceRegard.hidden = YES; - } - return _entiretyHuntforSatisfperformanceRegard; -} - - -- (UILabel *)eachSoleChampion { - if (!_eachSoleChampion) { - UILabel *label = [[UILabel alloc] init]; - label.text = YMLocalizedString(@"YUMI_Room_Search_Record_View_Controller_6"); - label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; - label.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _eachSoleChampion = label; - } - return _eachSoleChampion; -} - -- (UICollectionView *)eachSoleAssembletionRegard{ - if (!_eachSoleAssembletionRegard) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.minimumLineSpacing = 8; - layout.minimumInteritemSpacing = 8; - layout.sectionInset = UIEdgeInsetsMake(0, 15, 0, 15); - layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; - _eachSoleAssembletionRegard = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _eachSoleAssembletionRegard.showsHorizontalScrollIndicator = NO; - _eachSoleAssembletionRegard.dataSource = self; - _eachSoleAssembletionRegard.delegate = self; - _eachSoleAssembletionRegard.backgroundColor = [UIColor clearColor]; - [_eachSoleAssembletionRegard registerClass:[YUMIResidenceHuntforReflectionElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIResidenceHuntforReflectionElement class])]; - } - return _eachSoleAssembletionRegard; -} - -- (UILabel *)reflectionChampion { - if (!_reflectionChampion) { - UILabel *label = [[UILabel alloc] init]; - label.text = YMLocalizedString(@"YUMI_Room_Search_Record_View_Controller_7"); - label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; - label.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _reflectionChampion = label; - } - return _reflectionChampion; -} - -- (UILabel *)roomTitle { - if (!_roomTitle) { - UILabel *label = [[UILabel alloc] init]; - label.text = YMLocalizedString(@"YUMI_Room_Search_Record_View_Controller_8"); - label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; - label.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _roomTitle = label; - } - return _roomTitle; -} - -- (UIButton *)distinctReflectionBtuton { - if (!_distinctReflectionBtuton) { - UIButton *btn = [[UIButton alloc] init]; - [btn setImage:[UIImage imageNamed:@"yumi_sessionList_clear"] forState:UIControlStateNormal]; - [btn addTarget:self action:@selector(onDistinctHuntforReflectionTicktack:) forControlEvents:UIControlEventTouchUpInside]; - _distinctReflectionBtuton = btn; - } - return _distinctReflectionBtuton; -} - -- (UIButton *)distinctChamberBtuton { - if (!_distinctChamberBtuton) { - UIButton *btn = [[UIButton alloc] init]; - [btn setImage:[UIImage imageNamed:@"yumi_sessionList_clear"] forState:UIControlStateNormal]; - [btn addTarget:self action:@selector(onDistinctChamberTicktack:) forControlEvents:UIControlEventTouchUpInside]; - _distinctChamberBtuton = btn; - } - return _distinctChamberBtuton; -} - -- (UICollectionView *)huntforAssembletionRegard{ - if (!_huntforAssembletionRegard) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.minimumLineSpacing = 8; - layout.minimumInteritemSpacing = 8; - layout.sectionInset = UIEdgeInsetsMake(0, 15, 0, 15); - layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; - _huntforAssembletionRegard = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _huntforAssembletionRegard.showsHorizontalScrollIndicator = NO; - _huntforAssembletionRegard.dataSource = self; - _huntforAssembletionRegard.delegate = self; - _huntforAssembletionRegard.backgroundColor = [UIColor clearColor]; - [_huntforAssembletionRegard registerClass:[YUMIResidenceHuntforReflectionElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIResidenceHuntforReflectionElement class])]; - } - return _huntforAssembletionRegard; -} - -- (UICollectionView *)chamberAssembletionRegard{ - if (!_chamberAssembletionRegard) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.minimumLineSpacing = 8; - layout.minimumInteritemSpacing = 0; - layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; - layout.sectionInset = UIEdgeInsetsMake(0, 15, 0, 15); - _chamberAssembletionRegard = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _chamberAssembletionRegard.showsHorizontalScrollIndicator = NO; - _chamberAssembletionRegard.dataSource = self; - _chamberAssembletionRegard.delegate = self; - _chamberAssembletionRegard.backgroundColor = [UIColor clearColor]; - [_chamberAssembletionRegard registerClass:[YUMIResidenceConsiderationAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIResidenceConsiderationAssembletionRegardElement class])]; - } - return _chamberAssembletionRegard; -} - -- (NSMutableArray *)huntforStatement { - if (!_huntforStatement) { - _huntforStatement = [NSMutableArray array]; - } - return _huntforStatement; -} - -- (NSMutableArray *)inChamberStatement { - if (!_inChamberStatement) { - _inChamberStatement = [NSMutableArray array]; - } - return _inChamberStatement; -} - -- (NSMutableArray *)eachoneHuntforStatement { - if (!_eachoneHuntforStatement) { - _eachoneHuntforStatement = [NSMutableArray array]; - } - return _eachoneHuntforStatement; -} - -- (UIView *)huntforSatisfperformanceRegard { - if (!_huntforSatisfperformanceRegard) { - _huntforSatisfperformanceRegard = [[UIView alloc] init]; - } - return _huntforSatisfperformanceRegard; -} - -- (UIView *)chamberSatisfperformanceRegard { - if (!_chamberSatisfperformanceRegard) { - _chamberSatisfperformanceRegard = [[UIView alloc] init]; - } - return _chamberSatisfperformanceRegard; -} - -- (UIView *)deparatmentMaintainrietaryRegard { - if (!_deparatmentMaintainrietaryRegard) { - _deparatmentMaintainrietaryRegard = [[UIView alloc] init]; - _deparatmentMaintainrietaryRegard.backgroundColor = [UIColor clearColor]; - [_deparatmentMaintainrietaryRegard setContentHuggingPriority:UILayoutPriorityDragThatCanResizeScene forAxis:UILayoutConstraintAxisHorizontal]; - [_deparatmentMaintainrietaryRegard setContentCompressionResistancePriority:UILayoutPriorityFittingSizeLevel forAxis:UILayoutConstraintAxisHorizontal]; - } - return _deparatmentMaintainrietaryRegard; -} - -@end diff --git a/YuMi/Modules/YMNewHome/View/Search/View/YUMIResidenceHuntforRegardGovernancer.h b/YuMi/Modules/YMNewHome/View/Search/View/YUMIResidenceHuntforRegardGovernancer.h deleted file mode 100644 index 1e518be6..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/View/YUMIResidenceHuntforRegardGovernancer.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMHomeSearchViewController.h -// YUMI -// -// Created by YUMI on 2021/11/29. -// - -#import "MvpRegardGovernancer.h" -#import -#import "YUMIHuntforStatementTabulationRegardElement.h" -NS_ASSUME_NONNULL_BEGIN -@interface YUMIResidenceHuntforRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,assign) SearchGenre type; -- (void)searchText:(NSString *)text; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Search/View/YUMIResidenceHuntforRegardGovernancer.m b/YuMi/Modules/YMNewHome/View/Search/View/YUMIResidenceHuntforRegardGovernancer.m deleted file mode 100644 index 010c07e8..00000000 --- a/YuMi/Modules/YMNewHome/View/Search/View/YUMIResidenceHuntforRegardGovernancer.m +++ /dev/null @@ -1,149 +0,0 @@ -// -// YMHomeSearchViewController.m -// YUMI -// -// Created by YUMI on 2021/11/29. -// - -#import "YUMIResidenceHuntforRegardGovernancer.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "ClientDisposition.h" -#import "ResidenceHuntforConsequentMatrix.h" -#import "YUMIHuntforStatementTabulationRegardElement.h" -#import "YUMIResidenceHuntforExternalizer.h" -#import "FBCResidenceHuntforCeremony.h" -#import "YUMIChamberRegardGovernancer.h" -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -#import "YUMIManeSimpleConsumerAbstractRegardGovernancer.h" - -UIKIT_EXTERN NSString *kFromSearchToHomeViewKey; -UIKIT_EXTERN NSString *kTabShowAnchorCardKey; - -@interface YUMIResidenceHuntforRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSArray *datasource; -@end - -@implementation YUMIResidenceHuntforRegardGovernancer - -- (YUMIResidenceHuntforExternalizer *)producePresimport { - return [[YUMIResidenceHuntforExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { - [self.view endEditing:YES]; -} - -#pragma mark - Public Method -- (void)searchText:(NSString *)text { - NSString * type = [NSString stringWithFormat:@"%ld", self.type]; - [self.presimport huntforChamberSttowardsement:text type:type]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 74; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - YUMIHuntforStatementTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIHuntforStatementTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIHuntforStatementTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIHuntforStatementTabulationRegardElement class])]; - } - ResidenceHuntforConsequentMatrix * resultModel = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - [cell prohibitipositionTowardsoloudspeaker:resultModel type:self.type]; - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - ResidenceHuntforConsequentMatrix * resultModel = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - BOOL result = [[NSUserDefaults standardUserDefaults] boolForKey:kFromSearchToHomeViewKey]; - if (!result) { - [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kFromSearchToHomeViewKey]; - [[NSUserDefaults standardUserDefaults] synchronize]; - [[NSNotificationCenter defaultCenter] postNotificationName:kTabShowAnchorCardKey object:@{@"delayShow" : @(YES)}]; - } - [self dismissViewControllerAnimated:YES completion:nil]; - if (self.type == SearchGenre_Room) { - if (resultModel.valid) { - [YUMIChamberRegardGovernancer unfoildChamber:resultModel.uid viewController:self.presentingViewController]; - } else { - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMIManeConsumerAbstractRegardGovernancer * infoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - infoVC.uid = resultModel.uid.integerValue; - [(UINavigationController *)self.presentingViewController pushViewController:infoVC animated:YES]; - }else{ - YUMIManeSimpleConsumerAbstractRegardGovernancer * infoVC = [[YUMIManeSimpleConsumerAbstractRegardGovernancer alloc] init]; - infoVC.uid = resultModel.uid.integerValue; - [(UINavigationController *)self.presentingViewController pushViewController:infoVC animated:YES]; - } - } - } else { - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMIManeConsumerAbstractRegardGovernancer * infoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - infoVC.uid = resultModel.uid.integerValue; - [(UINavigationController *)self.presentingViewController pushViewController:infoVC animated:YES]; - }else{ - YUMIManeSimpleConsumerAbstractRegardGovernancer * infoVC = [[YUMIManeSimpleConsumerAbstractRegardGovernancer alloc] init]; - infoVC.uid = resultModel.uid.integerValue; - [(UINavigationController *)self.presentingViewController pushViewController:infoVC animated:YES]; - } - } -} - -#pragma mark - FBCResidenceHuntforCeremony -- (void)huntforChamberAccomplishment:(NSArray *)data type:(nonnull NSString *)type { - if (type.integerValue == self.type) { - self.datasource = data; - [self.tableView reloadData]; - } -} - -#pragma mark - -- (UIView *)listView { - return self.view; -} - -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableHeaderView = [UIView new]; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIHuntforStatementTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIHuntforStatementTabulationRegardElement class])]; - } - return _tableView; -} -@end diff --git a/YuMi/Modules/YMNewHome/View/XPHomePartyViewController.h b/YuMi/Modules/YMNewHome/View/XPHomePartyViewController.h new file mode 100644 index 00000000..c507e133 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/XPHomePartyViewController.h @@ -0,0 +1,21 @@ +// +// XPHomeViewController.h +// YuMi +// +// Created by YuMi on 2021/11/29. +// + +#import "MvpViewController.h" +#import +NS_ASSUME_NONNULL_BEGIN + + +@interface XPHomePartyViewController : MvpViewController +///模块的 ID +@property (nonatomic,copy) NSString *tabId; +///是否是个播 +@property (nonatomic,assign) BOOL isAnchor; +//TODO: 应该用一个新的控制器的 先发版吧 +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/XPHomePartyViewController.m b/YuMi/Modules/YMNewHome/View/XPHomePartyViewController.m new file mode 100644 index 00000000..c8f83c9d --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/XPHomePartyViewController.m @@ -0,0 +1,231 @@ +// +// XPHomeViewController.m +// YuMi +// +// Created by YuMi on 2021/11/29. +// + +#import "XPHomePartyViewController.h" +///Third +#import +#import +///Tool +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "NSArray+Safe.h" +///Model +#import "HomeRecommendRoomModel.h" +///View +#import "XPNewHomePartyTableViewCell.h" +#import "XPRoomPKEmptyTableViewCell.h" +///P +#import "XPHomePresenter.h" +#import "XPHomeProtocol.h" +///VC +#import "XPRoomViewController.h" + +@interface XPHomePartyViewController () +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +///列表 +@property (nonatomic,strong) UITableView *tableView; +///当前的页数 +@property (nonatomic,assign) int page; +///没有新的数据了 +@property (nonatomic,assign) BOOL hasNoMoreData; +@end + +@implementation XPHomePartyViewController + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (XPHomePresenter *)createPresenter { + return [[XPHomePresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initHeaderAndFooterRrfresh]; + [self initSubViews]; + [self initSubViewConstraints]; +} +#pragma mark - Private Method +- (void)initSubViews { + self.view.backgroundColor = [UIColor clearColor]; + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + + +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; + +} + +#pragma mark - 刷新的fangfa +- (void)headerRefresh { + self.page = 1; + if (self.isAnchor) { + [self.presenter getHomeMoreAnchorRoomList]; + } else { + [self.presenter getRecommendRoomList:self.tabId page:self.page pageSize:20 state:0]; + } + +} + +- (void)footerRefresh { + if (self.hasNoMoreData) { + [self showErrorToast:YMLocalizedString(@"XPHomePartyViewController0")]; + [self.tableView.mj_footer endRefreshing]; + return; + } + self.page++; + if (self.isAnchor) { + [self.presenter getHomeMoreAnchorRoomList]; + } else { + [self.presenter getRecommendRoomList:self.tabId page:self.page pageSize:20 state:1]; + } +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPNewHomePartyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPNewHomePartyTableViewCell class])]; + if (cell == nil) { + cell = [[XPNewHomePartyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPNewHomePartyTableViewCell class])]; + } + cell.roomInfo1 = [self.datasource safeObjectAtIndex1:indexPath.row]; + return cell; + } + XPRoomPKEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPRoomPKEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPRoomPKEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPRoomPKEmptyTableViewCell class])]; + } + return cell; + +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 96; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + HomeRecommendRoomModel * roomInfo1 = [self.datasource safeObjectAtIndex1:indexPath.row]; + if (roomInfo1.roomUid.length > 0) { + [XPRoomViewController openRoom:roomInfo1.roomUid viewController:self]; + } + } +} + +#pragma mark - XPHomeProtocol +- (void)getHomeRecommendRoomListSuccess:(NSArray *)list state:(BOOL)state { + if (state == 0) { + self.hasNoMoreData = NO; + [self.datasource removeAllObjects]; + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } + if (list.count > 0) { + self.hasNoMoreData = NO; + [self.datasource addObjectsFromArray:list]; + } else { + self.hasNoMoreData = YES; + } + [self.tableView reloadData]; +} +- (void)getHomeRecommendRoomListFail:(NSString *)message state:(BOOL)state { + if (state ==0) { + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } +} + +- (void)getHomeMoreAnchorRoomListFail:(NSString *)messag { + [self.tableView.mj_header endRefreshing]; + [self.tableView.mj_footer endRefreshing]; +} + +- (void)getHomeMoreAnchorRoomListSuccess:(NSArray *)list { + [self.tableView.mj_header endRefreshing]; + [self.tableView.mj_footer endRefreshing]; + [self.datasource removeAllObjects]; + [self.datasource addObjectsFromArray:list]; + [self.tableView reloadData]; +} + +#pragma mark - JXCategoryListContentViewDelegate +- (UIView *)listView { + return self.view; +} +#pragma mark - Getters And Setters + +- (void)setIsAnchor:(BOOL)isAnchor { + _isAnchor = isAnchor; + if (_isAnchor) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [self headerRefresh]; + }); + } +} + +- (void)setTabId:(NSString *)tabId { + _tabId = tabId; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [self headerRefresh]; + }); +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + UIView *headView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, 18)]; + _tableView.tableHeaderView = headView; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPRoomPKEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPRoomPKEmptyTableViewCell class])]; + [_tableView registerClass:[XPNewHomePartyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPNewHomePartyTableViewCell class])]; + } + return _tableView; +} + + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + + +@end diff --git a/YuMi/Modules/YMNewHome/View/XPHomeRecommendViewController.h b/YuMi/Modules/YMNewHome/View/XPHomeRecommendViewController.h new file mode 100644 index 00000000..402f3a61 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/XPHomeRecommendViewController.h @@ -0,0 +1,16 @@ +// +// XPHomeRecommendViewController.h +// YuMi +// +// Created by YuMi on 2022/2/21. +// + +#import "MvpViewController.h" +#import +NS_ASSUME_NONNULL_BEGIN + +@interface XPHomeRecommendViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/XPHomeRecommendViewController.m b/YuMi/Modules/YMNewHome/View/XPHomeRecommendViewController.m new file mode 100644 index 00000000..061637f0 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/XPHomeRecommendViewController.m @@ -0,0 +1,443 @@ +// +// XPHomeRecommendViewController.m +// YuMi +// +// Created by YuMi on 2022/2/21. +// + +#import "XPHomeRecommendViewController.h" +///Third +#import +#import +#import +#import +///Tool +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "XPWeakTimer.h" +#import "ClientConfig.h" +#import "UIImage+Utils.h" +#import "Api+Room.h" +#import "Api+RoomSetting.h" +#import "AccountInfoStorage.h" +#import "TTPopup.h" +#import "NSArray+Safe.h" +///View +#import "XPNewHomePlayTableViewCell.h" +#import "XPNewHomeRecommendTableViewCell.h" +#import "XPNewHomePlayEmptyTableViewCell.h" +#import "XPHomeBannerTableViewCell.h" +#import "XPNewHomePartyTableViewCell.h" +#import "XPRoomViewController.h" +#import "XPWebViewController.h" + +///Model +#import "HomePlayRoomModel.h" +#import "HomeBannerInfoModel.h" +#import "HomeRecommendRoomModel.h" +#import "ClanDetailInfoModel.h" +///P +#import "XPNewHomeRecommendPresenter.h" +#import "XPNewHomeRecommendProtocol.h" +UIKIT_EXTERN NSString * const kShieldingNotification; +@interface XPHomeRecommendViewController () +{ + NSTimer * timer; +} +///列表 +@property (nonatomic,strong) UITableView *tableView; +///轮播图 +@property (nonatomic,strong) NSArray *bannerList; +///推荐房 +@property (nonatomic,strong) NSArray *recommendList; +///组队开黑 +@property (nonatomic,strong) NSArray *playTeamList; +///个人房列表数据 +@property (nonatomic,strong) NSArray *personalRoomList; +///房间信息 +@property (nonatomic,strong) RoomInfoModel * roomInfo; +///是否正在请示数据,防止过多请求 +@property (nonatomic,assign) BOOL isRequestData; + + +@end + +@implementation XPHomeRecommendViewController +- (XPNewHomeRecommendPresenter *)createPresenter { + return [[XPNewHomeRecommendPresenter alloc] init]; +} +- (BOOL)isHiddenNavBar { + return YES; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initHeaderAndFooterRrfresh]; + [self addTimer]; + +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + if (timer) { + [timer setFireDate:[NSDate distantPast]]; //很远的过去 + } +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + if (timer) { + //关闭定时器 + [timer setFireDate:[NSDate distantFuture]]; //很远的将来 + } +} +-(void)dealloc{ + [[NSNotificationCenter defaultCenter]removeObserver:self]; +} +#pragma mark - InitHttp +- (void)addTimer { + timer = [XPWeakTimer scheduledTimerWithTimeInterval:15 block:^(id userInfo) { + [self requestData]; + } userInfo:nil repeats:YES]; +} +-(void)requestData{ + ///加锁,防止测试发现偶尔会出现闪退bug + @synchronized (self.presenter) { + if(self.isRequestData == YES)return; + self.isRequestData = YES; + + ///网络请求异步加载 + dispatch_group_t group =dispatch_group_create(); + // 并行队列 + dispatch_queue_t queue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0); + + dispatch_group_enter(group); + dispatch_group_async(group, queue, ^{ + + [self.presenter getHomeRecommendRoomListWithGroup:group]; + + }); + dispatch_group_enter(group); + dispatch_group_async(group, queue, ^{ + + [self.presenter getPlayGameWithTeam:1 withGroup:group]; + + }); + dispatch_group_enter(group); + dispatch_group_async(group, queue, ^{ + + [self.presenter getHomePersonalRoomListWithGroup:group]; + + }); + dispatch_group_enter(group); + dispatch_group_async(group, queue, ^{ + + [self.presenter getHomeTopBannerListWithGroup:group]; + + }); + dispatch_group_enter(group); + dispatch_group_async(group, queue, ^{ + + [self getRoomInfoWithGroup:group]; + + }); + + + dispatch_group_notify(group,dispatch_get_main_queue(), ^{ + self.isRequestData = NO; + [self.tableView.mj_header endRefreshing]; + [self.tableView reloadData]; + }); + + } +} +- (void)headerRefresh { + self.isRequestData = NO; + [self requestData]; +} +-(void)getRoomInfoWithGroup:(dispatch_group_t)group{ + NSString* roomUid = [AccountInfoStorage instance].getUid; + [Api getRoomInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + RoomInfoModel * roomInfo = [RoomInfoModel modelWithJSON:data.data]; + self.roomInfo = roomInfo; + } + dispatch_group_leave(group); + } uid:roomUid intoUid:roomUid]; +} +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + [self.tableView.mj_header beginRefreshing]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(shieldingNotification) name:kShieldingNotification object:nil]; + self.view.backgroundColor = [UIColor clearColor]; + [self.view addSubview:self.tableView]; + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; + +} +-(void)shieldingNotification{ + [self requestData]; +} +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 4; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + if (section == 0) { + return self.recommendList.count > 0 ? 1 : 0; + } else if(section == 1) { + return self.bannerList.count > 0 ? 1 : 0; + } else if(section == 2) { + return self.recommendList != nil ? 1 : 0; + } else { + return self.personalRoomList.count > 0 ? self.personalRoomList.count : 0; + } +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (indexPath.section == 0) { + return 160 * kScreenScale; + } else if(indexPath.section == 1) { + return 96; + } else if(indexPath.section == 2) { + return 65; + } else { + return 94; + } +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (indexPath.section == 0) { + XPNewHomeRecommendTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPNewHomeRecommendTableViewCell class])]; + if (cell == nil) { + cell = [[XPNewHomeRecommendTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPNewHomeRecommendTableViewCell class])]; + } + [cell setRecommendsList:self.recommendList]; + cell.delegate = self; + return cell; + } else if(indexPath.section == 1) { + XPHomeBannerTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPHomeBannerTableViewCell class])]; + if (cell == nil) { + cell = [[XPHomeBannerTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPHomeBannerTableViewCell class])]; + } + cell.bannerList = self.bannerList; + cell.delegate = self; + return cell; + } else if(indexPath.section == 2) { + if (self.playTeamList.count > 0) { + XPNewHomePlayTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPNewHomePlayTableViewCell class])]; + if (cell == nil) { + cell = [[XPNewHomePlayTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPNewHomePlayTableViewCell class])]; + } +// cell.isClan = self.roomInfo.isPermitRoom == PermitRoomType_Licnese; + cell.isClan = YES; + cell.playRoomList = self.playTeamList; + + cell.delegate = self; + + return cell; + } else { + XPNewHomePlayEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPNewHomePlayEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPNewHomePlayEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPNewHomePlayEmptyTableViewCell class])]; + } + +// cell.isClan = self.roomInfo.isPermitRoom == PermitRoomType_Licnese; + cell.isClan = YES; + cell.delegate = self; + return cell; + } + } else { + XPNewHomePartyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPNewHomePartyTableViewCell class])]; + if (cell == nil) { + cell = [[XPNewHomePartyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPNewHomePartyTableViewCell class])]; + } + cell.roomInfo = [self.personalRoomList safeObjectAtIndex1:indexPath.row]; + return cell; + } +} +- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { + if(section == 0){return 5;} + if (section == 2) { + return 50; + }else if (section == 3){ + return 50; + } + return 0.01; +} + +- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { + UIView * view = [[UIView alloc] init]; + if(self.recommendList == nil && section == 2)return view; + if(self.personalRoomList == nil && section == 3)return view; + if (section == 2 || section == 3) { + view.frame = CGRectMake(0,0, KScreenWidth, 50); + + UILabel * label = [[UILabel alloc] init]; + label.textColor = [DJDKMIMOMColor mainTextColor]; + label.font = [UIFont systemFontOfSize:16 weight:UIFontWeightBold]; + if (section == 2) { + label.text = YMLocalizedString(@"XPHomeRecommendViewController0"); + } else { + label.text = YMLocalizedString(@"XPHomeRecommendViewController1"); + } + [view addSubview:label]; + + [label mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(16); + make.left.mas_equalTo(view).offset(15); + make.height.mas_equalTo(22); + }]; + } + return view; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { + return 0.01; +} + +- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { + return [UIView new]; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if(indexPath.section == 3) { + if (self.personalRoomList.count > 0) { + HomePlayRoomModel * roomInfo1 = [self.personalRoomList safeObjectAtIndex1:indexPath.row]; + if (roomInfo1.uid.length > 0) { + [XPRoomViewController openRoom:roomInfo1.uid viewController:self]; + } + } + } +} + +#pragma mark - XPNewHomeRecommendTableViewCellDelegate +- (void)xPNewHomeRecommendTableViewCell:(XPNewHomeRecommendTableViewCell *)view didSelectItem:(HomeRecommendRoomModel *)info { + if (info.roomUid.length > 0) { + [XPRoomViewController openRoom:info.roomUid viewController:self]; + } +} + +#pragma mark - XPNewHomePlayTableViewCellDelegate +- (void)xPNewHomePlayTableViewCell:(XPNewHomePlayTableViewCell *)cell didSelectItem:(HomePlayRoomModel *)info { + if (info.uid.length > 0) { + [XPRoomViewController openRoom:info.uid viewController:self]; + } +} +- (void)chooseGameAction{ +// XPHomeGameView *gameView = [XPHomeGameView new]; +// gameView.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); +// gameView.playGameList = self.littleGameArray; +// gameView.delegate = self; +// [kWindow addSubview:gameView]; +} +#pragma mark - XPNewHomePlayEmptyTableViewCellDelegate +- (void)emptyCellChooseGameAction{ +// XPHomeGameView *gameView = [XPHomeGameView new]; +// gameView.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); +// gameView.playGameList = self.littleGameArray; +// gameView.delegate = self; +// [kWindow addSubview:gameView]; +} +#pragma mark - XPHomeBannerTableViewCell +- (void)xPHomeBannerTableViewCell:(XPHomeBannerTableViewCell *)view didClickBanner:(HomeBannerInfoModel *)info { + switch (info.skipType) { + case HomeBannerInfoSkipType_Room: + { + if (info.skipUri.length > 0) { + [XPRoomViewController openRoom:info.skipUri viewController:self]; + } + } + break; + case HomeBannerInfoSkipType_Web: + { + XPWebViewController *vc = [[XPWebViewController alloc]init]; + vc.url = info.skipUri; + [self.navigationController pushViewController:vc animated:YES]; + } + break; + default: + break; + } +} +#pragma mark - XPHomeRecommendProtocol +- (void)getHomeTopBannerListSuccess:(NSArray *)list menuList:(NSArray *)memuList withGroup:(nonnull dispatch_group_t)group{ + self.bannerList = list; + dispatch_group_leave(group); +} + +///推荐 +- (void)getHomeRecommendRoomListSuccess:(NSArray *)list withGroup:(nonnull dispatch_group_t)group{ + self.recommendList= list; + dispatch_group_leave(group); +} +///房间派对 +- (void)getHomePersonalRoomListSuccess:(NSArray *)list withGroup:(nonnull dispatch_group_t)group { + NSMutableArray * array = [NSMutableArray array]; + for (HomePlayRoomModel * info in list) { + if(info.isBanner) { + self.bannerList = info.bannerVoList; + } else { + [array addObject:info]; + } + } + self.personalRoomList = array; + dispatch_group_leave(group); +} +///扩列交友 +- (void)getPlayGameWithTeamSuccess:(NSArray *)list withGroup:(nonnull dispatch_group_t)group{ + NSMutableArray * array = [NSMutableArray array]; + for (HomePlayRoomModel * info in list) { + if(info.isBanner) { + self.bannerList = info.bannerVoList; + } else { + [array addObject:info]; + } + } + self.playTeamList = array; + dispatch_group_leave(group); +} + +- (void)getHomeRecommendDataFailWithGroup:(dispatch_group_t)group { + dispatch_group_leave(group); + +} +#pragma mark - JXCategoryListContentViewDelegate +- (UIView *)listView { + return self.view; +} + + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPNewHomeRecommendTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPNewHomeRecommendTableViewCell class])]; + [_tableView registerClass:[XPNewHomePlayTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPNewHomePlayTableViewCell class])]; + [_tableView registerClass:[XPNewHomePlayEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPNewHomePlayEmptyTableViewCell class])]; + [_tableView registerClass:[XPHomeBannerTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPHomeBannerTableViewCell class])]; + [_tableView registerClass:[XPNewHomePartyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPNewHomePartyTableViewCell class])]; + } + return _tableView; +} +@end diff --git a/YuMi/Modules/YMNewHome/View/XPHomeSloganViewController.h b/YuMi/Modules/YMNewHome/View/XPHomeSloganViewController.h new file mode 100644 index 00000000..d152789a --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/XPHomeSloganViewController.h @@ -0,0 +1,16 @@ +// +// YMHomeSloganViewController.h +// YUMI +// +// Created by XY on 2023/2/17. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPHomeSloganViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/XPHomeSloganViewController.m b/YuMi/Modules/YMNewHome/View/XPHomeSloganViewController.m new file mode 100644 index 00000000..728f13ef --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/XPHomeSloganViewController.m @@ -0,0 +1,311 @@ +// +// YMHomeSloganViewController.m +// YUMI +// +// Created by XY on 2023/2/17. +// + +#import "XPHomeSloganViewController.h" +#import "XPHomeUserView.h" +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import +#import "XPWeakTimer.h" +#import "AccountInfoStorage.h" +#import "Api+Home.h" +///M +#import "HomeRecommendRoomModel.h" +///VC +#import "XPRoomViewController.h" +#import "XPMineSimpleUserInfoViewController.h" + +@interface XPHomeSloganViewController () { + NSTimer * timer; +} + +/// 用户视图数组 +@property (nonatomic, strong) NSMutableArray *userViewArr; +/// 背景图 +@property (nonatomic, strong) NetImageView *bgImageView; +/// Piko圈 +@property (nonatomic, strong) UIImageView *nameImageView; +@property (nonatomic, strong) UIButton *enterRoomBtn; +///个人房列表数据 +@property (nonatomic,strong) NSMutableArray *hotRoomList; + +@end + +@implementation XPHomeSloganViewController + +//- (XPHomeRecommendPresenter *)createPresenter { +// return [[XPHomeRecommendPresenter alloc] init]; +//} + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self createUI]; + [self addTimer]; + [self loadRecommend]; + +} + +- (void)loadRecommend { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * pageStr = [NSString stringWithFormat:@"%d", 1]; + NSString * pageSizeStr = [NSString stringWithFormat:@"%d", 10]; + [Api getRecommendListComplection:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + NSArray * array = [HomeRecommendRoomModel modelsWithArray:data.data]; + [self getHomeRecommendRoomListSuccess:array]; + } else { + + + } + } uid:uid tabId:@"" pageNum:pageStr pageSize:pageSizeStr]; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + if (timer) { + [timer setFireDate:[NSDate distantPast]]; //很远的过去 + } +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + if (timer) { + //关闭定时器 + [timer setFireDate:[NSDate distantFuture]]; //很远的将来 + } +} + +- (void)createUI { + [self.view addSubview:self.bgImageView]; + [self.view addSubview:self.nameImageView]; + [self.view addSubview:self.enterRoomBtn]; + + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; + [self.nameImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kStatusBarHeight+20); + make.left.mas_equalTo(23); + make.width.mas_equalTo(100); + make.height.mas_equalTo(45); + }]; + + [self.enterRoomBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(30); + make.height.mas_equalTo(40); + make.centerY.mas_equalTo(self.nameImageView); + make.right.mas_equalTo(self.view).offset(-15); + }]; +} + +- (void)addTimer { + timer = [XPWeakTimer scheduledTimerWithTimeInterval:15 block:^(id userInfo) { + [self loadRecommend]; + } userInfo:nil repeats:YES]; +} + +#pragma mark - XPHomeUserViewDelegate + +- (void)userViewClickAction:(HomeRecommendRoomModel *)model { + if (model.roomUid.length > 0) { +// [XPRoomViewController openRoom:model.uid fromNick:nil fromType:UserEnterRoomFromType_Home_Recommend fromUid:nil viewController:self]; + XPMineSimpleUserInfoViewController *infoVC = [[XPMineSimpleUserInfoViewController alloc] init]; + infoVC.uid = [model.roomUid integerValue]; + [self.navigationController pushViewController:infoVC animated:YES]; + } +} + +#pragma mark - XPHomeRecommendProtocol + +- (void)getHomeRecommendRoomListSuccess:(NSArray *)list { + if (list.count > 10) { + list = [list subarrayWithRange:NSMakeRange(0, 9)]; + } + [self.hotRoomList removeAllObjects]; + [self.hotRoomList addObjectsFromArray:list]; + // 二次添加 + if (self.userViewArr.count > 0) { + [self removeUserViews]; + return; + } + // 首次添加 + for (HomeRecommendRoomModel *model in self.hotRoomList) { + XPHomeUserView *userView = [self showUserView:model]; + if(userView != nil) { + [self.userViewArr addObject:userView]; + } + } +} + +- (void)getHomeRecommendDataFail { + +} + +/// 添加用户视图 +- (XPHomeUserView *)showUserView:(HomeRecommendRoomModel *)model { + // 随机坐标 + CGFloat scale = (arc4random_uniform(50)+1)*0.01 + 0.5; + CGRect rect = [self getRandomRect]; + CGRect scaleRect = rect; + scaleRect.size.width = rect.size.width * scale; + scaleRect.size.height = rect.size.height * scale; + // 确保不重叠 + NSInteger count = 0; //循环超过1000次强制退出 + BOOL contain = [self intersectsRect:scaleRect]; + while (contain || count < 1000) { + scale = (arc4random_uniform(50)+1)*0.01 + 0.5; + rect = [self getRandomRect]; + scaleRect = rect; + scaleRect.size.width = rect.size.width * scale; + scaleRect.size.height = rect.size.height * scale; + contain = [self intersectsRect:scaleRect]; + count++; + } + //循环1000次还重叠,就放弃添加,防止死循环 + if (contain == YES) { + return nil; + } + // 添加 + XPHomeUserView *userView = [[XPHomeUserView alloc] init]; + userView.frame = rect; + userView.transform = CGAffineTransformMakeScale(scale, scale); + userView.frame = scaleRect; + userView.delegate = self; + [self.view addSubview:userView]; + userView.roomModel = model; + + // 动画出现 + userView.alpha = 0; + [UIView animateWithDuration:0.5 animations:^{ + userView.alpha = 1; + } completion:^(BOOL finished) { + + }]; + return userView; + +} + +- (void)removeUserViews { + dispatch_group_t group = dispatch_group_create(); + dispatch_queue_t queue = dispatch_get_main_queue(); + NSUInteger viewCount = self.userViewArr.count; + + for (int i = 0; i< viewCount; i++) { + dispatch_group_enter(group); + XPHomeUserView *userView = self.userViewArr[i]; + + [UIView animateWithDuration:0.5 animations:^{ + userView.alpha = 0; + userView.transform = CGAffineTransformMakeScale(0.01, 0.01); + } completion:^(BOOL finished) { + [userView removeFromSuperview]; + [self.userViewArr removeObject:userView]; + + dispatch_group_leave(group); + }]; + } + dispatch_group_notify(group, queue, ^{ + for (HomeRecommendRoomModel *model in self.hotRoomList) { + XPHomeUserView *userView = [self showUserView:model]; + if (userView !=nil) { + [self.userViewArr addObject:userView]; + } + } + }); + +} + +/// 获取随机坐标 +- (CGRect)getRandomRect { + @autoreleasepool { + // 用户视图原始大小 + CGFloat userViewWidth = 120; + CGFloat userViewHeight = 120; + CGFloat statusBarHeight = kStatusBarHeight; + // 限定随机区域 + CGFloat areaWidth = self.view.bounds.size.width - userViewWidth - 5*2; + CGFloat areaHeight = self.view.bounds.size.height - statusBarHeight - 70 - 90- userViewHeight; + + CGFloat x = arc4random_uniform(areaWidth)+5; + CGFloat y = arc4random_uniform(areaHeight)+statusBarHeight+ 70; + + CGRect rect = CGRectMake(x, y, userViewWidth, userViewHeight); + return rect; + } +} + +/// 判断新生成的坐标是否和已添加的用户视图坐标重叠 +/// - Parameter targetRect: 目标坐标 +- (BOOL)intersectsRect:(CGRect)targetRect { + @autoreleasepool { + for (XPHomeUserView *userView in self.userViewArr) { + CGRect frame = userView.frame; + BOOL b = CGRectIntersectsRect(targetRect, frame); + if (b) { + return YES; + } + } + return NO; + } +} + +- (void)likeButtonAction:(UIButton *)sender { + NSString* roomUid = [AccountInfoStorage instance].getUid; + [XPRoomViewController openRoom:roomUid viewController:self]; +} + +#pragma mark - 懒加载 + +- (NSMutableArray *)userViewArr { + if (!_userViewArr) { + _userViewArr = [NSMutableArray array]; + } + return _userViewArr; +} + +- (NSMutableArray *)hotRoomList { + if (!_hotRoomList) { + _hotRoomList = [NSMutableArray array]; + } + return _hotRoomList; +} + +- (NetImageView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[NetImageView alloc] init]; + _bgImageView.contentMode = UIViewContentModeScaleAspectFill; + _bgImageView.image = [UIImage imageNamed:@"home_bg"]; + } + return _bgImageView; +} + +- (UIImageView *)nameImageView { + if (!_nameImageView) { + _nameImageView = [[UIImageView alloc] init]; + _nameImageView.contentMode = UIViewContentModeScaleAspectFit; + _nameImageView.image = [UIImage imageNamed:@"home_name"]; + } + return _nameImageView; +} + +- (UIButton *)enterRoomBtn { + if (!_enterRoomBtn) { + _enterRoomBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_enterRoomBtn setImage:[UIImage imageNamed:@"home_nav_open_room"] forState:UIControlStateNormal]; + [_enterRoomBtn setImage:[UIImage imageNamed:@"home_nav_open_room"] forState:UIControlStateSelected]; + [_enterRoomBtn addTarget:self action:@selector(likeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _enterRoomBtn; +} + + +@end diff --git a/YuMi/Modules/YMNewHome/View/XPNewHomeViewController.h b/YuMi/Modules/YMNewHome/View/XPNewHomeViewController.h new file mode 100644 index 00000000..98e1b14d --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/XPNewHomeViewController.h @@ -0,0 +1,16 @@ +// +// XPNewHomeViewController.h +// YuMi +// +// Created by YuMi on 2023/6/18. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPNewHomeViewController : MvpViewController +-(instancetype)initWithIsEmpty:(BOOL)isEmpty; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/XPNewHomeViewController.m b/YuMi/Modules/YMNewHome/View/XPNewHomeViewController.m new file mode 100644 index 00000000..d4e57b30 --- /dev/null +++ b/YuMi/Modules/YMNewHome/View/XPNewHomeViewController.m @@ -0,0 +1,270 @@ +// +// XPNewHomeViewController.m +// YuMi +// +// Created by YuMi on 2023/6/18. +// + +#import "XPNewHomeViewController.h" +///Third +#import +#import +#import +#import +///Tool +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "YUMIHtmlUrl.h" +#import "UIImage+Utils.h" +#import "AccountInfoStorage.h" +#import "Api+Room.h" +#import "TTPopup.h" +#import "NSArray+Safe.h" +///Model +#import "HomeTagModel.h" + +///View +#import "XPRoomSearchContainerViewController.h" +#import "XPHomePartyViewController.h" +#import "XPWebViewController.h" +#import "XPHomeRecommendViewController.h" +#import "XPNewHomeNavView.h" +#import "XPRoomViewController.h" +///P +#import "XPHomeContainerPresenter.h" +#import "XPHomeContainerProtocol.h" + +UIKIT_EXTERN NSString * kHomeMoreScrollPageKey; +UIKIT_EXTERN NSString * const kOpenRoomNotification; + +@interface XPNewHomeViewController () +@property (nonatomic,strong) UIImageView *backImageView; +@property (nonatomic,strong) XPNewHomeNavView *navView; +///分页标题 +@property (nonatomic, strong) NSArray *titles; +///分页控件 +@property (nonatomic, strong) JXCategoryTitleView *titleView; +///分页lineView +@property (nonatomic, strong) JXCategoryListContainerView *contentView; +///tag的列表 +@property (nonatomic,copy) NSMutableArray *tagList; +@property (nonatomic,strong) HomeTagModel *recommendItem; +///解决弱网时首页底部出现一片空白bug +@property (nonatomic,assign) BOOL isEmpty; +@end + +@implementation XPNewHomeViewController +-(instancetype)initWithIsEmpty:(BOOL)isEmpty{ + self = [super init]; + if(self){ + self.isEmpty = isEmpty; + } + return self; +} +-(void)dealloc{ + [[NSNotificationCenter defaultCenter]removeObserver:self]; +} +- (BOOL)isHiddenNavBar { + return YES; +} + +- (XPHomeContainerPresenter *)createPresenter { + return [[XPHomeContainerPresenter alloc] init]; +} +- (void)viewDidLoad { + [super viewDidLoad]; + if(self.isEmpty == NO){ + [self initHttp]; + [self initSubViews]; + [self initSubViewConstraints]; + } + + +} + +#pragma mark - Private Method +- (void)initSubViews { + self.view.backgroundColor = [DJDKMIMOMColor colorWithHexString:@"#F3F5FA"]; + [self.view addSubview:self.backImageView]; + [self.view addSubview:self.navView]; + [self.view addSubview:self.titleView]; + [self.view addSubview:self.contentView]; +} + +- (void)initSubViewConstraints { + + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.height.mas_equalTo(170 + kSafeAreaTopHeight); + }]; + + [self.navView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.height.mas_equalTo(kNavigationHeight); + }]; + + + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.navView.mas_bottom).offset(10); + make.left.right.mas_equalTo(self.view); + make.height.mas_equalTo(30); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.titleView.mas_bottom); + make.left.right.bottom.mas_equalTo(self.view); + }]; + +} + +- (void)initHttp { + [self.presenter getHomeTagList]; +} + + +#pragma mark - XPNewHomeNavViewDelegate +- (void)xPNewHomeNavView:(XPNewHomeNavView *)view didClickRank:(UIButton *)sender { + XPWebViewController * webVC =[[XPWebViewController alloc] init]; + webVC.url = URLWithType(kHomeRankURL); + [self.navigationController pushViewController:webVC animated:YES]; +} + +- (void)xPNewHomeNavView:(XPNewHomeNavView *)view didClickOpenRoom:(UIButton *)sender { + NSString* roomUid = [AccountInfoStorage instance].getUid; + [self opRoom:roomUid]; + +} +-(void)opRoom:(NSString *)roomUid{ + [XPRoomViewController openRoom:roomUid viewController:self]; +} + +- (void)xPNewHomeNavView:(XPNewHomeNavView *)view didClickSearch:(UIView *)sender { + XPRoomSearchContainerViewController * searchVC = [[XPRoomSearchContainerViewController alloc] init]; + searchVC.modalPresentationStyle = UIModalPresentationFullScreen; + [self.navigationController presentViewController:searchVC animated:YES completion:nil]; +} + +#pragma mark - JXCategoryViewDelegate +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { + return self.titles.count; +} + +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { + HomeTagModel * hometag = [self.tagList safeObjectAtIndex1:index]; + + UIViewController * list = (UIViewController *)[self.contentView.validListDict objectForKey:[NSNumber numberWithInteger:index]]; + if (list) { + return list; + } else { + if ([hometag.name isEqualToString:YMLocalizedString(@"XPNewHomeViewController0")]) { + XPHomeRecommendViewController * recommendVC = [[XPHomeRecommendViewController alloc] init]; + return recommendVC; + } else { + XPHomePartyViewController * homeVC = [[XPHomePartyViewController alloc] init]; + homeVC.tabId = hometag.tid; + return homeVC; + } + } +} + + + +- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { + HomeTagModel * hometag = [self.tagList safeObjectAtIndex1:index]; + if (![hometag.name isEqualToString:YMLocalizedString(@"XPNewHomeViewController1")]) { + XPHomePartyViewController * list = (XPHomePartyViewController *)[self.contentView.validListDict objectForKey:[NSNumber numberWithInteger:index]];; + list.tabId = hometag.tid; + } +} + +#pragma mark - JXCategoryListContentViewDelegate +- (UIView *)listView { + return self.view; +} + +#pragma mark - XPHomeContainerProtocol +- (void)getHomeTagListSuccess:(NSArray *)array { + [self.tagList addObject:self.recommendItem]; + [self.tagList addObjectsFromArray:array]; + NSMutableArray * titles = [NSMutableArray array]; + [titles addObject:YMLocalizedString(@"XPNewHomeViewController2")]; + [array enumerateObjectsUsingBlock:^(HomeTagModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.name.length > 0) { + [titles addObject:obj.name]; + } + }]; + self.titles = titles.copy; + self.titleView.titles = self.titles; + [self.titleView reloadData]; +} + +#pragma mark - Getters And Setters +- (JXCategoryTitleView *)titleView { + if (!_titleView) { + _titleView = [[JXCategoryTitleView alloc] init]; + _titleView.delegate = self; + _titleView.titles = self.titles; + _titleView.backgroundColor = [UIColor clearColor]; + _titleView.titleColor = [DJDKMIMOMColor secondTextColor]; + _titleView.titleSelectedColor = [UIColor whiteColor]; + _titleView.titleFont = [UIFont systemFontOfSize:14]; + _titleView.titleSelectedFont = [UIFont systemFontOfSize:14]; + _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; + _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; + _titleView.defaultSelectedIndex = 0; + _titleView.cellSpacing = 20; + _titleView.cellWidthIncrement = 5; + _titleView.listContainer = self.contentView; + + JXCategoryIndicatorImageView * indocator = [[JXCategoryIndicatorImageView alloc] init]; + indocator.indicatorImageView.image = [UIImage imageNamed:@"home_slider_bg"]; + indocator.indicatorImageViewSize = CGSizeMake(50, 24); + indocator.verticalMargin = 4; + indocator.contentMode = UIViewContentModeScaleAspectFit; + _titleView.indicators = @[indocator]; + } + return _titleView; +} + +- (JXCategoryListContainerView *)contentView { + if (!_contentView) { + _contentView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; + _contentView.defaultSelectedIndex = 0; + } + return _contentView; +} + +- (HomeTagModel *)recommendItem { + if (!_recommendItem) { + _recommendItem = [[HomeTagModel alloc] init]; + _recommendItem.name = YMLocalizedString(@"XPNewHomeViewController3"); + } + return _recommendItem; +} + +- (NSMutableArray *)tagList { + if (!_tagList) { + _tagList = [NSMutableArray array]; + } + return _tagList; +} + +- (XPNewHomeNavView *)navView { + if (!_navView) { + _navView = [[XPNewHomeNavView alloc] init]; + _navView.delegate = self; + } + return _navView; +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.image = [UIImage imageNamed:@"home_top_bg"]; + _backImageView.layer.masksToBounds = YES; + _backImageView.contentMode = UIViewContentModeScaleAspectFill; + } + return _backImageView; +} + +@end diff --git a/YuMi/Modules/YMNewHome/View/YUMIResidenceEncourageRegardGovernancer.h b/YuMi/Modules/YMNewHome/View/YUMIResidenceEncourageRegardGovernancer.h deleted file mode 100644 index 55eaa60c..00000000 --- a/YuMi/Modules/YMNewHome/View/YUMIResidenceEncourageRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIResidenceEncourageRegardGovernancer.h -// YuMi -// -// Created by YuMi on 2022/2/21. -// - -#import "MvpRegardGovernancer.h" -#import -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIResidenceEncourageRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/YUMIResidenceEncourageRegardGovernancer.m b/YuMi/Modules/YMNewHome/View/YUMIResidenceEncourageRegardGovernancer.m deleted file mode 100644 index ec18a749..00000000 --- a/YuMi/Modules/YMNewHome/View/YUMIResidenceEncourageRegardGovernancer.m +++ /dev/null @@ -1,416 +0,0 @@ -// -// YUMIResidenceEncourageRegardGovernancer.m -// YuMi -// -// Created by YuMi on 2022/2/21. -// - -#import "YUMIResidenceEncourageRegardGovernancer.h" -#import -#import -#import -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "YUMIWeakIntratemporalr.h" -#import "ClientDisposition.h" -#import "UIImage+Utils.h" -#import "Api+Room.h" -#import "Api+RoomSetting.h" -#import "AccountAbstractStorage.h" -#import "MKJPopup.h" -#import "NSArray+Safe.h" -#import "YUMIStrangeResidenceDisportTabulationRegardElement.h" -#import "YUMIStrangeResidenceEncourageTabulationRegardElement.h" -#import "YUMIStrangeResidenceDisportDispossessTabulationRegardElement.h" -#import "YUMIResidenceOriflammeTabulationRegardElement.h" -#import "YUMIStrangeResidenceParatiesTabulationRegardElement.h" -#import "YUMIChamberRegardGovernancer.h" -#import "YUMITissueRegardGovernancer.h" - -#import "ResidenceDisportChamberMatrix.h" -#import "ResidenceOriflammeAbstractMatrix.h" -#import "ResidenceEncourageChamberMatrix.h" -#import "CollectiveSpecificAbstractMatrix.h" -#import "YUMIStrangeResidenceEncourageExternalizer.h" -#import "FBCStrangeResidenceEncourageCeremony.h" -UIKIT_EXTERN NSString * const kShieldingNotification; -@interface YUMIResidenceEncourageRegardGovernancer () -{ - NSTimer * timer; -} -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSArray *oriflammeStatement; -@property (nonatomic,strong) NSArray *encourageStatement; -@property (nonatomic,strong) NSArray *disportSquadStatement; -@property (nonatomic,strong) NSArray *featurealChamberStatement; -@property (nonatomic,strong) ChamberAbstractMatrix * roomInfo; -@property (nonatomic,assign) BOOL isDemandAtoloudspeaker; - - -@end - -@implementation YUMIResidenceEncourageRegardGovernancer -- (YUMIStrangeResidenceEncourageExternalizer *)producePresimport { - return [[YUMIStrangeResidenceEncourageExternalizer alloc] init]; -} -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initIntelligencerGrantedTerminalerRrfresh]; - [self addTimer]; - -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - if (timer) { - [timer setFireDate:[NSDate distantPast]]; - } -} - -- (void)viewWillDisappear:(BOOL)animated { - [super viewWillDisappear:animated]; - if (timer) { - - [timer setFireDate:[NSDate distantFuture]]; - } -} --(void)dealloc{ - [[NSNotificationCenter defaultCenter]removeObserver:self]; -} -#pragma mark - InitHttp -- (void)addTimer { - timer = [YUMIWeakIntratemporalr scheduledTimerWithTimeInterval:15 block:^(id userInfo) { - [self requestData]; - } userInfo:nil repeats:YES]; -} --(void)requestData{ - - @synchronized (self.presimport) { - if(self.isDemandAtoloudspeaker == YES)return; - self.isDemandAtoloudspeaker = YES; - - - dispatch_group_t group =dispatch_group_create(); - - dispatch_queue_t queue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0); - - dispatch_group_enter(group); - dispatch_group_async(group, queue, ^{ - - [self.presimport acquireResidenceEncourageChamberSttowardsementAboutGroup:group]; - - }); - dispatch_group_enter(group); - dispatch_group_async(group, queue, ^{ - - [self.presimport acquireDisportCompetitionAboutSquad:1 withGroup:group]; - - }); - dispatch_group_enter(group); - dispatch_group_async(group, queue, ^{ - - [self.presimport acquireResidencesubjectiveChamberSttowardsementAboutGroup:group]; - - }); - dispatch_group_enter(group); - dispatch_group_async(group, queue, ^{ - - [self.presimport acquireResidenceApexOriflammeSttowardsementAboutGroup:group]; - - }); - dispatch_group_enter(group); - dispatch_group_async(group, queue, ^{ - - [self acquireChamberAbstractAboutGroup:group]; - - }); - - - dispatch_group_notify(group,dispatch_get_main_queue(), ^{ - self.isDemandAtoloudspeaker = NO; - [self.tableView.mj_header endRefreshing]; - [self.tableView reloadData]; - }); - - } -} -- (void)intelligenceerRenovtowardseh { - self.isDemandAtoloudspeaker = NO; - [self requestData]; -} --(void)acquireChamberAbstractAboutGroup:(dispatch_group_t)group{ - NSString* roomUid = [AccountAbstractStorage instance].acquireCid; - [Api acquireChamberAbstract:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - ChamberAbstractMatrix * roomInfo = [ChamberAbstractMatrix mtowardsrixAboutJSON:data.data]; - self.roomInfo = roomInfo; - } - dispatch_group_leave(group); - } uid:roomUid intoUid:roomUid]; -} -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - [self.tableView.mj_header beginRefreshing]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(shieldingCircular) name:kShieldingNotification object:nil]; - self.view.backgroundColor = [UIColor clearColor]; - [self.view addSubview:self.tableView]; - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; - -} --(void)shieldingCircular{ - [self requestData]; -} -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return 4; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - if (section == 0) { - return self.encourageStatement.count > 0 ? 1 : 0; - } else if(section == 1) { - return self.oriflammeStatement.count > 0 ? 1 : 0; - } else if(section == 2) { - return self.encourageStatement != nil ? 1 : 0; - } else { - return self.featurealChamberStatement.count > 0 ? self.featurealChamberStatement.count : 0; - } -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (indexPath.section == 0) { - return 160 * kScreenScale; - } else if(indexPath.section == 1) { - return 96; - } else if(indexPath.section == 2) { - return 65; - } else { - return 94; - } -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (indexPath.section == 0) { - YUMIStrangeResidenceEncourageTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIStrangeResidenceEncourageTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIStrangeResidenceEncourageTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIStrangeResidenceEncourageTabulationRegardElement class])]; - } - [cell setEncouragesSttowardsement:self.encourageStatement]; - cell.delegate = self; - return cell; - } else if(indexPath.section == 1) { - YUMIResidenceOriflammeTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIResidenceOriflammeTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIResidenceOriflammeTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIResidenceOriflammeTabulationRegardElement class])]; - } - cell.oriflammeStatement = self.oriflammeStatement; - cell.delegate = self; - return cell; - } else if(indexPath.section == 2) { - if (self.disportSquadStatement.count > 0) { - YUMIStrangeResidenceDisportTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIStrangeResidenceDisportTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIStrangeResidenceDisportTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIStrangeResidenceDisportTabulationRegardElement class])]; - } - cell.isClan = YES; - cell.disportChamberStatement = self.disportSquadStatement; - - cell.delegate = self; - - return cell; - } else { - YUMIStrangeResidenceDisportDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIStrangeResidenceDisportDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIStrangeResidenceDisportDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIStrangeResidenceDisportDispossessTabulationRegardElement class])]; - } - - cell.isClan = YES; - cell.delegate = self; - return cell; - } - } else { - YUMIStrangeResidenceParatiesTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIStrangeResidenceParatiesTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIStrangeResidenceParatiesTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIStrangeResidenceParatiesTabulationRegardElement class])]; - } - cell.roomInfo = [self.featurealChamberStatement secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; - } -} -- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { - if(section == 0){return 5;} - if (section == 2) { - return 50; - }else if (section == 3){ - return 50; - } - return 0.01; -} - -- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { - UIView * view = [[UIView alloc] init]; - if(self.encourageStatement == nil && section == 2)return view; - if(self.featurealChamberStatement == nil && section == 3)return view; - if (section == 2 || section == 3) { - view.frame = CGRectMake(0,0, KScreenWidth, 50); - - UILabel * label = [[UILabel alloc] init]; - label.textColor = [DJDKMIMOMColor mainEssayPrettify]; - label.font = [UIFont systemFontOfSize:16 weight:UIFontWeightBold]; - if (section == 2) { - label.text = YMLocalizedString(@"YUMI_Home_Recommend_View_Controller_0"); - } else { - label.text = YMLocalizedString(@"YUMI_Home_Recommend_View_Controller_1"); - } - [view addSubview:label]; - - [label mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(16); - make.left.mas_equalTo(view).offset(15); - make.height.mas_equalTo(22); - }]; - } - return view; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { - return 0.01; -} - -- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { - return [UIView new]; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if(indexPath.section == 3) { - if (self.featurealChamberStatement.count > 0) { - ResidenceDisportChamberMatrix * chamberAbstract1 = [self.featurealChamberStatement secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (chamberAbstract1.uid.length > 0) { - [YUMIChamberRegardGovernancer unfoildChamber:chamberAbstract1.uid viewController:self]; - } - } - } -} - -#pragma mark - FBCStrangeResidenceEncourageTabulationViweElementRepresendtation -- (void)yUMIStrangeResidenceEncourageTarbsultowardsionViweElement:(YUMIStrangeResidenceEncourageTabulationRegardElement *)view didSelectItem:(ResidenceEncourageChamberMatrix *)info { - if (info.roomUid.length > 0) { - [YUMIChamberRegardGovernancer unfoildChamber:info.roomUid viewController:self]; - } -} - -#pragma mark - FBCStrangeResidencePlayTabulationViweElementRepresendtation -- (void)yUMIStrangeResidenceDisportTarbsultowardsionViweElement:(YUMIStrangeResidenceDisportTabulationRegardElement *)cell didSelectItem:(ResidenceDisportChamberMatrix *)info { - if (info.uid.length > 0) { - [YUMIChamberRegardGovernancer unfoildChamber:info.uid viewController:self]; - } -} -- (void)concludeCompetitionPerformance{ -} -#pragma mark - FBCStrangeResidencePlayEmptyTabulationViweElementRepresendtation -- (void)prohibitipossessElementConcludeCompetitionPerformance{ -} -#pragma mark - YUMIResidenceOriflammeTabulationRegardElement -- (void)fBCHoutilizeOriflammeTarbsultowardsionViweElement:(YUMIResidenceOriflammeTabulationRegardElement *)view didClickBanner:(ResidenceOriflammeAbstractMatrix *)info { - switch (info.skipType) { - case HomeBannerAbstractSkipGenre_Room: - { - if (info.skipUri.length > 0) { - [YUMIChamberRegardGovernancer unfoildChamber:info.skipUri viewController:self]; - } - } - break; - case HomeBannerAbstractSkipGenre_Web: - { - YUMITissueRegardGovernancer *vc = [[YUMITissueRegardGovernancer alloc]init]; - vc.url = info.skipUri; - [self.navigationController pushViewController:vc animated:YES]; - } - break; - default: - break; - } -} -#pragma mark - FBCResidenceEncourageCeremony -- (void)acquireResidenceApexOriflammeSttowardsementAccomplishment:(NSArray *)list menuList:(NSArray *)memuList withGroup:(nonnull dispatch_group_t)group{ - self.oriflammeStatement = list; - dispatch_group_leave(group); -} - -- (void)acquireResidenceEncourageChamberSttowardsementAccomplishment:(NSArray *)list withGroup:(nonnull dispatch_group_t)group{ - self.encourageStatement= list; - dispatch_group_leave(group); -} -- (void)acquireResidencesubjectiveChamberSttowardsementAccomplishment:(NSArray *)list withGroup:(nonnull dispatch_group_t)group { - NSMutableArray * array = [NSMutableArray array]; - for (ResidenceDisportChamberMatrix * info in list) { - if(info.isBanner) { - self.oriflammeStatement = info.bannerVoList; - } else { - [array addObject:info]; - } - } - self.featurealChamberStatement = array; - dispatch_group_leave(group); -} -- (void)acquireDisportCompetitionAboutSquadAccomplishment:(NSArray *)list withGroup:(nonnull dispatch_group_t)group{ - NSMutableArray * array = [NSMutableArray array]; - for (ResidenceDisportChamberMatrix * info in list) { - if(info.isBanner) { - self.oriflammeStatement = info.bannerVoList; - } else { - [array addObject:info]; - } - } - self.disportSquadStatement = array; - dispatch_group_leave(group); -} - -- (void)acquireResidenceEncourageTowardsoloudspeakerFlunkAboutGroup:(dispatch_group_t)group { - dispatch_group_leave(group); - -} -#pragma mark - JXCategoryListContentViewDelegate -- (UIView *)listView { - return self.view; -} - - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIStrangeResidenceEncourageTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIStrangeResidenceEncourageTabulationRegardElement class])]; - [_tableView registerClass:[YUMIStrangeResidenceDisportTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIStrangeResidenceDisportTabulationRegardElement class])]; - [_tableView registerClass:[YUMIStrangeResidenceDisportDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIStrangeResidenceDisportDispossessTabulationRegardElement class])]; - [_tableView registerClass:[YUMIResidenceOriflammeTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIResidenceOriflammeTabulationRegardElement class])]; - [_tableView registerClass:[YUMIStrangeResidenceParatiesTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIStrangeResidenceParatiesTabulationRegardElement class])]; - } - return _tableView; -} -@end diff --git a/YuMi/Modules/YMNewHome/View/YUMIResidenceParatiesRegardGovernancer.h b/YuMi/Modules/YMNewHome/View/YUMIResidenceParatiesRegardGovernancer.h deleted file mode 100644 index 9a0ed8f6..00000000 --- a/YuMi/Modules/YMNewHome/View/YUMIResidenceParatiesRegardGovernancer.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// XPHomeViewController.h -// YuMi -// -// Created by YuMi on 2021/11/29. -// - -#import "MvpRegardGovernancer.h" -#import -NS_ASSUME_NONNULL_BEGIN - - -@interface YUMIResidenceParatiesRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,copy) NSString *suspensionId; -@property (nonatomic,assign) BOOL isKelleg; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/YUMIResidenceParatiesRegardGovernancer.m b/YuMi/Modules/YMNewHome/View/YUMIResidenceParatiesRegardGovernancer.m deleted file mode 100644 index 27f4a6b8..00000000 --- a/YuMi/Modules/YMNewHome/View/YUMIResidenceParatiesRegardGovernancer.m +++ /dev/null @@ -1,221 +0,0 @@ -// -// XPHomeViewController.m -// YuMi -// -// Created by YuMi on 2021/11/29. -// - -#import "YUMIResidenceParatiesRegardGovernancer.h" -#import -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "NSArray+Safe.h" -#import "ResidenceEncourageChamberMatrix.h" -#import "YUMIStrangeResidenceParatiesTabulationRegardElement.h" -#import "YUMIChamberCombatDispossessTabulationRegardElement.h" -#import "YUMIResidenceExternalizer.h" -#import "FBCResidenceCeremony.h" -#import "YUMIChamberRegardGovernancer.h" - -@interface YUMIResidenceParatiesRegardGovernancer () -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,assign) int page; -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; -@end - -@implementation YUMIResidenceParatiesRegardGovernancer - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (YUMIResidenceExternalizer *)producePresimport { - return [[YUMIResidenceExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initIntelligencerGrantedTerminalerRrfresh]; - [self initSubViews]; - [self initChildLyRestrictions]; -} -#pragma mark - Private Method -- (void)initSubViews { - self.view.backgroundColor = [UIColor clearColor]; - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - - -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - -} - -#pragma mark - 刷新的fangfa -- (void)intelligenceerRenovtowardseh { - self.page = 1; - if (self.isKelleg) { - [self.presimport acquireResidenceFurthaerKellegChamberSttowardsement]; - } else { - [self.presimport acquireEncourageChamberSttowardsement:self.suspensionId page:self.page pageSize:20 state:0]; - } - -} - -- (void)footerRenovtowardseh { - if (self.hasNoFurthaerAtoloudspeaker) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Home_Party_View_Controller_0")]; - [self.tableView.mj_footer endRefreshing]; - return; - } - self.page++; - if (self.isKelleg) { - [self.presimport acquireResidenceFurthaerKellegChamberSttowardsement]; - } else { - [self.presimport acquireEncourageChamberSttowardsement:self.suspensionId page:self.page pageSize:20 state:1]; - } -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMIStrangeResidenceParatiesTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIStrangeResidenceParatiesTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIStrangeResidenceParatiesTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIStrangeResidenceParatiesTabulationRegardElement class])]; - } - cell.chamberAbstract1 = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; - } - YUMIChamberCombatDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIChamberCombatDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIChamberCombatDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIChamberCombatDispossessTabulationRegardElement class])]; - } - return cell; - -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 96; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.datasource.count > 0) { - ResidenceEncourageChamberMatrix * chamberAbstract1 = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (chamberAbstract1.roomUid.length > 0) { - [YUMIChamberRegardGovernancer unfoildChamber:chamberAbstract1.roomUid viewController:self]; - } - } -} - -#pragma mark - FBCResidenceCeremony -- (void)acquireResidenceEncourageChamberSttowardsementAccomplishment:(NSArray *)list state:(BOOL)state { - if (state == 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - [self.datasource removeAllObjects]; - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } - if (list.count > 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - [self.datasource addObjectsFromArray:list]; - } else { - self.hasNoFurthaerAtoloudspeaker = YES; - } - [self.tableView reloadData]; -} -- (void)acquireResidenceEncourageChamberSttowardsementFlunk:(NSString *)message state:(BOOL)state { - if (state ==0) { - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } -} - -- (void)acquireResidenceFurthaerKellegChamberSttowardsementFlunk:(NSString *)messag { - [self.tableView.mj_header endRefreshing]; - [self.tableView.mj_footer endRefreshing]; -} - -- (void)acquireResidenceFurthaerKellegChamberSttowardsementAccomplishment:(NSArray *)list { - [self.tableView.mj_header endRefreshing]; - [self.tableView.mj_footer endRefreshing]; - [self.datasource removeAllObjects]; - [self.datasource addObjectsFromArray:list]; - [self.tableView reloadData]; -} - -#pragma mark - JXCategoryListContentViewDelegate -- (UIView *)listView { - return self.view; -} -#pragma mark - Getters And Setters - -- (void)setIsKelleg:(BOOL)isKelleg { - _isKelleg = isKelleg; - if (_isKelleg) { - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [self intelligenceerRenovtowardseh]; - }); - } -} - -- (void)setSuspensionId:(NSString *)suspensionId { - _suspensionId = suspensionId; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [self intelligenceerRenovtowardseh]; - }); -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - UIView *intelligenceRegard = [[UIView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, 18)]; - _tableView.tableHeaderView = intelligenceRegard; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIChamberCombatDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIChamberCombatDispossessTabulationRegardElement class])]; - [_tableView registerClass:[YUMIStrangeResidenceParatiesTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIStrangeResidenceParatiesTabulationRegardElement class])]; - } - return _tableView; -} - - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - - -@end diff --git a/YuMi/Modules/YMNewHome/View/YUMIResidenceSloganRegardGovernancer.h b/YuMi/Modules/YMNewHome/View/YUMIResidenceSloganRegardGovernancer.h deleted file mode 100644 index a8a25f7a..00000000 --- a/YuMi/Modules/YMNewHome/View/YUMIResidenceSloganRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMHomeSloganViewController.h -// YUMI -// -// Created by XY on 2023/2/17. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIResidenceSloganRegardGovernancer : MvpRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/YUMIResidenceSloganRegardGovernancer.m b/YuMi/Modules/YMNewHome/View/YUMIResidenceSloganRegardGovernancer.m deleted file mode 100644 index c1b787d4..00000000 --- a/YuMi/Modules/YMNewHome/View/YUMIResidenceSloganRegardGovernancer.m +++ /dev/null @@ -1,297 +0,0 @@ -// -// YMHomeSloganViewController.m -// YUMI -// -// Created by XY on 2023/2/17. -// - -#import "YUMIResidenceSloganRegardGovernancer.h" -#import "YUMIResidenceConsumerRegard.h" -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import -#import "YUMIWeakIntratemporalr.h" -#import "AccountAbstractStorage.h" -#import "Api+Home.h" -#import "ResidenceEncourageChamberMatrix.h" -#import "YUMIChamberRegardGovernancer.h" -#import "YUMIManeSimpleConsumerAbstractRegardGovernancer.h" - -@interface YUMIResidenceSloganRegardGovernancer () { - NSTimer * timer; -} - -@property (nonatomic, strong) NSMutableArray *consumerRegardArr; -@property (nonatomic, strong) NetIndicateRegard *backgroundIndicateRegard; -@property (nonatomic, strong) UIImageView *constituteIndicateRegard; -@property (nonatomic, strong) UIButton *importChamberBtuton; -@property (nonatomic,strong) NSMutableArray *thermalChamberStatement; - -@end - -@implementation YUMIResidenceSloganRegardGovernancer - - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self produceUI]; - [self addTimer]; - [self chamberEncourage]; - -} - -- (void)chamberEncourage { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * pageStr = [NSString stringWithFormat:@"%d", 1]; - NSString * pageSizeStr = [NSString stringWithFormat:@"%d", 10]; - [Api acquireEncourageSttowardsementimplementtion:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSArray * array = [ResidenceEncourageChamberMatrix mtowardsrixsAboutGarment:data.data]; - [self acquireResidenceEncourageChamberSttowardsementAccomplishment:array]; - } else { - - - } - } uid:uid suspensionId:@"" pageNum:pageStr pageSize:pageSizeStr]; -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - if (timer) { - [timer setFireDate:[NSDate distantPast]]; - } -} - -- (void)viewWillDisappear:(BOOL)animated { - [super viewWillDisappear:animated]; - if (timer) { - - [timer setFireDate:[NSDate distantFuture]]; - } -} - -- (void)produceUI { - [self.view addSubview:self.backgroundIndicateRegard]; - [self.view addSubview:self.constituteIndicateRegard]; - [self.view addSubview:self.importChamberBtuton]; - - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; - [self.constituteIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kStatusBarHeight+20); - make.left.mas_equalTo(23); - make.width.mas_equalTo(100); - make.height.mas_equalTo(45); - }]; - - [self.importChamberBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(30); - make.height.mas_equalTo(40); - make.centerY.mas_equalTo(self.constituteIndicateRegard); - make.right.mas_equalTo(self.view).offset(-15); - }]; -} - -- (void)addTimer { - timer = [YUMIWeakIntratemporalr scheduledTimerWithTimeInterval:15 block:^(id userInfo) { - [self chamberEncourage]; - } userInfo:nil repeats:YES]; -} - -#pragma mark - FBCResidenceConsumerRegardRepresendtation - -- (void)consumerRegardTicktackPerformance:(ResidenceEncourageChamberMatrix *)model { - if (model.roomUid.length > 0) { - YUMIManeSimpleConsumerAbstractRegardGovernancer *infoVC = [[YUMIManeSimpleConsumerAbstractRegardGovernancer alloc] init]; - infoVC.uid = [model.roomUid integerValue]; - [self.navigationController pushViewController:infoVC animated:YES]; - } -} - -#pragma mark - FBCResidenceEncourageCeremony - -- (void)acquireResidenceEncourageChamberSttowardsementAccomplishment:(NSArray *)list { - if (list.count > 10) { - list = [list subarrayWithRange:NSMakeRange(0, 9)]; - } - [self.thermalChamberStatement removeAllObjects]; - [self.thermalChamberStatement addObjectsFromArray:list]; - - if (self.consumerRegardArr.count > 0) { - [self transltowardseConsumerRegards]; - return; - } - - for (ResidenceEncourageChamberMatrix *model in self.thermalChamberStatement) { - YUMIResidenceConsumerRegard *consumerRegard = [self EvidenceConsumerRegard:model]; - if(consumerRegard != nil) { - [self.consumerRegardArr addObject:consumerRegard]; - } - } -} - -- (void)acquireResidenceEncourageTowardsoloudspeakerFlunk { - -} - -- (YUMIResidenceConsumerRegard *)EvidenceConsumerRegard:(ResidenceEncourageChamberMatrix *)model { - - CGFloat scale = (arc4random_uniform(50)+1)*0.01 + 0.5; - CGRect rect = [self acquireArbitraryReactangle]; - CGRect scaleRect = rect; - scaleRect.size.width = rect.size.width * scale; - scaleRect.size.height = rect.size.height * scale; - - NSInteger count = 0; - BOOL contain = [self intersectsReactangle:scaleRect]; - while (contain || count < 1000) { - scale = (arc4random_uniform(50)+1)*0.01 + 0.5; - rect = [self acquireArbitraryReactangle]; - scaleRect = rect; - scaleRect.size.width = rect.size.width * scale; - scaleRect.size.height = rect.size.height * scale; - contain = [self intersectsReactangle:scaleRect]; - count++; - } - - if (contain == YES) { - return nil; - } - - YUMIResidenceConsumerRegard *consumerRegard = [[YUMIResidenceConsumerRegard alloc] init]; - consumerRegard.frame = rect; - consumerRegard.transform = CGAffineTransformMakeScale(scale, scale); - consumerRegard.frame = scaleRect; - consumerRegard.delegate = self; - [self.view addSubview:consumerRegard]; - consumerRegard.chamberMatrix = model; - - - consumerRegard.alpha = 0; - [UIView animateWithDuration:0.5 animations:^{ - consumerRegard.alpha = 1; - } completion:^(BOOL finished) { - - }]; - return consumerRegard; - -} - -- (void)transltowardseConsumerRegards { - dispatch_group_t group = dispatch_group_create(); - dispatch_queue_t queue = dispatch_get_main_queue(); - NSUInteger viewCount = self.consumerRegardArr.count; - - for (int i = 0; i< viewCount; i++) { - dispatch_group_enter(group); - YUMIResidenceConsumerRegard *consumerRegard = self.consumerRegardArr[i]; - - [UIView animateWithDuration:0.5 animations:^{ - consumerRegard.alpha = 0; - consumerRegard.transform = CGAffineTransformMakeScale(0.01, 0.01); - } completion:^(BOOL finished) { - [consumerRegard removeFromSuperview]; - [self.consumerRegardArr removeObject:consumerRegard]; - - dispatch_group_leave(group); - }]; - } - dispatch_group_notify(group, queue, ^{ - for (ResidenceEncourageChamberMatrix *model in self.thermalChamberStatement) { - YUMIResidenceConsumerRegard *consumerRegard = [self EvidenceConsumerRegard:model]; - if (consumerRegard !=nil) { - [self.consumerRegardArr addObject:consumerRegard]; - } - } - }); - -} - -- (CGRect)acquireArbitraryReactangle { - @autoreleasepool { - - CGFloat userViewWidth = 120; - CGFloat userViewHeight = 120; - CGFloat statusBarHeight = kStatusBarHeight; - - CGFloat areaWidth = self.view.bounds.size.width - userViewWidth - 5*2; - CGFloat areaHeight = self.view.bounds.size.height - statusBarHeight - 70 - 90- userViewHeight; - - CGFloat x = arc4random_uniform(areaWidth)+5; - CGFloat y = arc4random_uniform(areaHeight)+statusBarHeight+ 70; - - CGRect rect = CGRectMake(x, y, userViewWidth, userViewHeight); - return rect; - } -} - -- (BOOL)intersectsReactangle:(CGRect)targetRect { - @autoreleasepool { - for (YUMIResidenceConsumerRegard *consumerRegard in self.consumerRegardArr) { - CGRect frame = consumerRegard.frame; - BOOL b = CGRectIntersectsRect(targetRect, frame); - if (b) { - return YES; - } - } - return NO; - } -} - -- (void)similarBtutonPerformance:(UIButton *)sender { - NSString* roomUid = [AccountAbstractStorage instance].acquireCid; - [YUMIChamberRegardGovernancer unfoildChamber:roomUid viewController:self]; -} - -#pragma mark - 懒加载 - -- (NSMutableArray *)consumerRegardArr { - if (!_consumerRegardArr) { - _consumerRegardArr = [NSMutableArray array]; - } - return _consumerRegardArr; -} - -- (NSMutableArray *)thermalChamberStatement { - if (!_thermalChamberStatement) { - _thermalChamberStatement = [NSMutableArray array]; - } - return _thermalChamberStatement; -} - -- (NetIndicateRegard *)backgroundIndicateRegard { - if (!_backgroundIndicateRegard) { - _backgroundIndicateRegard = [[NetIndicateRegard alloc] init]; - _backgroundIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_main_background"]; - } - return _backgroundIndicateRegard; -} - -- (UIImageView *)constituteIndicateRegard { - if (!_constituteIndicateRegard) { - _constituteIndicateRegard = [[UIImageView alloc] init]; - _constituteIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - _constituteIndicateRegard.image = [UIImage imageNamed:@"yumi_main_name"]; - } - return _constituteIndicateRegard; -} - -- (UIButton *)importChamberBtuton { - if (!_importChamberBtuton) { - _importChamberBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_importChamberBtuton setImage:[UIImage imageNamed:@"yumi_main_title_open_room"] forState:UIControlStateNormal]; - [_importChamberBtuton setImage:[UIImage imageNamed:@"yumi_main_title_open_room"] forState:UIControlStateSelected]; - [_importChamberBtuton addTarget:self action:@selector(similarBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _importChamberBtuton; -} - - -@end diff --git a/YuMi/Modules/YMNewHome/View/YUMIStrangeResidenceRegardGovernancer.h b/YuMi/Modules/YMNewHome/View/YUMIStrangeResidenceRegardGovernancer.h deleted file mode 100644 index 643d12e9..00000000 --- a/YuMi/Modules/YMNewHome/View/YUMIStrangeResidenceRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIStrangeResidenceRegardGovernancer.h -// YuMi -// -// Created by YuMi on 2023/6/18. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIStrangeResidenceRegardGovernancer : MvpRegardGovernancer --(instancetype)initAboutIsDispossess:(BOOL)isEmpty; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/YUMIStrangeResidenceRegardGovernancer.m b/YuMi/Modules/YMNewHome/View/YUMIStrangeResidenceRegardGovernancer.m deleted file mode 100644 index a28b50e5..00000000 --- a/YuMi/Modules/YMNewHome/View/YUMIStrangeResidenceRegardGovernancer.m +++ /dev/null @@ -1,260 +0,0 @@ -// -// YUMIStrangeResidenceRegardGovernancer.m -// YuMi -// -// Created by YuMi on 2023/6/18. -// - -#import "YUMIStrangeResidenceRegardGovernancer.h" -#import -#import -#import -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "YUMIHtmlUrl.h" -#import "UIImage+Utils.h" -#import "AccountAbstractStorage.h" -#import "Api+Room.h" -#import "MKJPopup.h" -#import "NSArray+Safe.h" -#import "ResidenceCoupleMatrix.h" - -#import "YUMIChamberHuntforAccommodatedRegardGovernancer.h" -#import "YUMIResidenceParatiesRegardGovernancer.h" -#import "YUMITissueRegardGovernancer.h" -#import "YUMIResidenceEncourageRegardGovernancer.h" -#import "YUMIStrangeResidenceNevRegard.h" -#import "YUMIChamberRegardGovernancer.h" -#import "YUMIResidenceAccommodatedExternalizer.h" -#import "FBCResidenceContainerCeremony.h" - -UIKIT_EXTERN NSString * kHomeMoreScrollPageKey; -UIKIT_EXTERN NSString * const kOpenRoomNotification; - -@interface YUMIStrangeResidenceRegardGovernancer () -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) YUMIStrangeResidenceNevRegard *nevRegard; -@property (nonatomic, strong) NSArray *titles; -@property (nonatomic, strong) JXCategoryTitleView *titleView; -@property (nonatomic, strong) JXCategoryListContainerView *contentView; -@property (nonatomic,copy) NSMutableArray *tagList; -@property (nonatomic,strong) ResidenceCoupleMatrix *encourageProvision; -@property (nonatomic,assign) BOOL isEmpty; -@end - -@implementation YUMIStrangeResidenceRegardGovernancer --(instancetype)initAboutIsDispossess:(BOOL)isEmpty{ - self = [super init]; - if(self){ - self.isEmpty = isEmpty; - } - return self; -} --(void)dealloc{ - [[NSNotificationCenter defaultCenter]removeObserver:self]; -} -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (YUMIResidenceAccommodatedExternalizer *)producePresimport { - return [[YUMIResidenceAccommodatedExternalizer alloc] init]; -} -- (void)viewDidLoad { - [super viewDidLoad]; - if(self.isEmpty == NO){ - [self initHyperessay]; - [self initSubViews]; - [self initChildLyRestrictions]; - } - - -} - -#pragma mark - Private Method -- (void)initSubViews { - self.view.backgroundColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#F3F5FA"]; - [self.view addSubview:self.encourageIndicateRegard]; - [self.view addSubview:self.nevRegard]; - [self.view addSubview:self.titleView]; - [self.view addSubview:self.contentView]; -} - -- (void)initChildLyRestrictions { - - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.height.mas_equalTo(170 + kSafeAreaTopHeight); - }]; - - [self.nevRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.height.mas_equalTo(kNavigationHeight); - }]; - - - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.nevRegard.mas_bottom).offset(10); - make.left.right.mas_equalTo(self.view); - make.height.mas_equalTo(30); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.titleView.mas_bottom); - make.left.right.bottom.mas_equalTo(self.view); - }]; - -} - -- (void)initHyperessay { - [self.presimport acquireResidenceCoupleSttowardsement]; -} - - -#pragma mark - FBCStrangeResidenceNevRegardRepresendtation -- (void)yUMIStrangeResidenceNevRegard:(YUMIStrangeResidenceNevRegard *)view didClickRank:(UIButton *)sender { - YUMITissueRegardGovernancer * webVewC =[[YUMITissueRegardGovernancer alloc] init]; - webVewC.url = URLWithType(kHomeRankURL); - [self.navigationController pushViewController:webVewC animated:YES]; -} - -- (void)yUMIStrangeResidenceNevRegard:(YUMIStrangeResidenceNevRegard *)view didClickOpenRoom:(UIButton *)sender { - NSString* roomUid = [AccountAbstractStorage instance].acquireCid; - [self opChamber:roomUid]; - -} --(void)opChamber:(NSString *)roomUid{ - [YUMIChamberRegardGovernancer unfoildChamber:roomUid viewController:self]; -} - -- (void)yUMIStrangeResidenceNevRegard:(YUMIStrangeResidenceNevRegard *)view didClickSearch:(UIView *)sender { - YUMIChamberHuntforAccommodatedRegardGovernancer * searchVC = [[YUMIChamberHuntforAccommodatedRegardGovernancer alloc] init]; - searchVC.modalPresentationStyle = UIModalPresentationFullScreen; - [self.navigationController presentViewController:searchVC animated:YES completion:nil]; -} - -#pragma mark - JXCategoryViewDelegate -- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { - return self.titles.count; -} - -- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { - ResidenceCoupleMatrix * hometag = [self.tagList secureGroalTowardsIndictowardsrix1:index]; - - UIViewController * list = (UIViewController *)[self.contentView.validListDict objectForKey:[NSNumber numberWithInteger:index]]; - if (list) { - return list; - } else { - if ([hometag.name isEqualToString:YMLocalizedString(@"YUMI_New_Home_View_Controller_0")]) { - YUMIResidenceEncourageRegardGovernancer * encourageVewC = [[YUMIResidenceEncourageRegardGovernancer alloc] init]; - return encourageVewC; - } else { - YUMIResidenceParatiesRegardGovernancer * homeVC = [[YUMIResidenceParatiesRegardGovernancer alloc] init]; - homeVC.suspensionId = hometag.tid; - return homeVC; - } - } -} - - - -- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { - ResidenceCoupleMatrix * hometag = [self.tagList secureGroalTowardsIndictowardsrix1:index]; - if (![hometag.name isEqualToString:YMLocalizedString(@"YUMI_New_Home_View_Controller_1")]) { - YUMIResidenceParatiesRegardGovernancer * list = (YUMIResidenceParatiesRegardGovernancer *)[self.contentView.validListDict objectForKey:[NSNumber numberWithInteger:index]];; - list.suspensionId = hometag.tid; - } -} - -#pragma mark - JXCategoryListContentViewDelegate -- (UIView *)listView { - return self.view; -} - -#pragma mark - FBCResidenceContainerCeremony -- (void)acquireResidenceCoupleSttowardsementAccomplishment:(NSArray *)array { - [self.tagList addObject:self.encourageProvision]; - [self.tagList addObjectsFromArray:array]; - NSMutableArray * titles = [NSMutableArray array]; - [titles addObject:YMLocalizedString(@"YUMI_New_Home_View_Controller_2")]; - [array enumerateObjectsUsingBlock:^(ResidenceCoupleMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.name.length > 0) { - [titles addObject:obj.name]; - } - }]; - self.titles = titles.copy; - self.titleView.titles = self.titles; - [self.titleView reloadData]; -} - -#pragma mark - Getters And Setters -- (JXCategoryTitleView *)titleView { - if (!_titleView) { - _titleView = [[JXCategoryTitleView alloc] init]; - _titleView.delegate = self; - _titleView.titles = self.titles; - _titleView.backgroundColor = [UIColor clearColor]; - _titleView.titleColor = [DJDKMIMOMColor instantEssayPrettify]; - _titleView.titleSelectedColor = [UIColor whiteColor]; - _titleView.titleFont = [UIFont systemFontOfSize:14]; - _titleView.titleSelectedFont = [UIFont systemFontOfSize:14]; - _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; - _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; - _titleView.defaultSelectedIndex = 0; - _titleView.cellSpacing = 20; - _titleView.cellWidthIncrement = 5; - _titleView.listContainer = self.contentView; - - JXCategoryIndicatorImageView * indocator = [[JXCategoryIndicatorImageView alloc] init]; - indocator.indicatorImageView.image = [UIImage imageNamed:@"yumi_main_slider_background"]; - indocator.indicatorImageViewSize = CGSizeMake(50, 24); - indocator.verticalMargin = 4; - indocator.contentMode = UIViewContentModeScaleAspectFit; - _titleView.indicators = @[indocator]; - } - return _titleView; -} - -- (JXCategoryListContainerView *)contentView { - if (!_contentView) { - _contentView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; - _contentView.defaultSelectedIndex = 0; - } - return _contentView; -} - -- (ResidenceCoupleMatrix *)encourageProvision { - if (!_encourageProvision) { - _encourageProvision = [[ResidenceCoupleMatrix alloc] init]; - _encourageProvision.name = YMLocalizedString(@"YUMI_New_Home_View_Controller_3"); - } - return _encourageProvision; -} - -- (NSMutableArray *)tagList { - if (!_tagList) { - _tagList = [NSMutableArray array]; - } - return _tagList; -} - -- (YUMIStrangeResidenceNevRegard *)nevRegard { - if (!_nevRegard) { - _nevRegard = [[YUMIStrangeResidenceNevRegard alloc] init]; - _nevRegard.delegate = self; - } - return _nevRegard; -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_main_top_background"]; - _encourageIndicateRegard.layer.masksToBounds = YES; - _encourageIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _encourageIndicateRegard; -} - -@end diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioCapture.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioCapture.h index 56bdbe1e..e7f84c7f 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioCapture.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioCapture.h @@ -10,4 +10,4 @@ #include "audio_in_output.h" -#endif +#endif /* ZegoAudioCapture_h */ diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoom.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoom.h index 6c01c2f7..a9ac2fc5 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoom.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoom.h @@ -8,10 +8,13 @@ #import +//! Project version number for ZegoAudioRoom. FOUNDATION_EXPORT double ZegoAudioRoomVersionNumber; +//! Project version string for ZegoAudioRoom. FOUNDATION_EXPORT const unsigned char ZegoAudioRoomVersionString[]; +// In this header, you should import all the public headers of your framework using statements like #import #import #import diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApi-AudioIO.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApi-AudioIO.h index f298a42f..6c6b8d2f 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApi-AudioIO.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApi-AudioIO.h @@ -12,27 +12,81 @@ @interface ZegoAudioRoomApi (AudioIO) #if TARGET_OS_IPHONE +/** + 启用外部音频采集 + @warning Deprecated,请使用 [ZegoExternalAudioDevice enableExternalAudioDevice:] + + @param enable true 启用,false 不启用。默认 false + @discussion 必须在初始化 SDK 前调用 + */ + (void)enableExternalAudioDevice:(bool)enable; - +/** + 获取 IAudioDataInOutput 对象 + + @warning Deprecated,请使用 ZegoExternalAudioDevice 中的方法代替 + + @return IAudioDataInOutput 对象 + */ - (AVE::IAudioDataInOutput* )getIAudioDataInOutput; - +/** + 耳机插入状态下是否使用回声消除 + + @param enable true 使用,false 不使用。默认 true + @discussion InitSDK之后,推流之前调用 + */ - (void)enableAECWhenHeadsetDetected:(bool)enable; #endif +/** + 设置音频前处理函数, 并开启或关闭音频前处理 + 当开发者需要自处理音频数据时采用此接口,一般是实现特殊功能如变声;SDK 会在 callback 参数中抛出采集的音频数据,开发者从其中获取音频数据进行变声等处理,最后将处理后的数据回传给 SDK。 + 注意: + 1.此 API 必须在初始化 SDK 后推流前调用。 + 2.SDK 已经针对采集的音频数据进行了回声消除、噪声抑制等处理,通常情况下,开发者无需再重复处理。 + + @param callback 采样数据回调,inFrame 为 SDK 采集的音频数据,outFrame 为开发者处理后应该返回给 SDK 的数据。 + @param config 预处理音频数据的采样率等设置参数,详见 struct ExtPrepSet。 + */ - (void)setAudioPrepCallback:(void(*)(const AVE::AudioFrame& inFrame, AVE::AudioFrame& outFrame))callback config:(AVE::ExtPrepSet)config; +/** + 设置音频后处理函数 + 当开发者需要自处理拉取的音频数据时采用此接口,一般是实现特殊功能如变声;SDK 会在 callback 参数中抛出拉取的某路流的音频数据,开发者从其中获取音频数据进行处理,最后将处理后的数据回传给 SDK。 + 注意: + 1.此 API 必须在初始化 SDK 后拉流前调用。 + + @param callback 拉流音频数据回调,streamID 标明当前的音频数据属于哪路流,inFrame 为 SDK 拉取的某路流的音频数据,outFrame 为开发者处理后应该返回给 SDK 的数据。 + @param config 预处理音频数据的采样率等设置参数,详见 struct ExtPostpSet。 + @attention 当回调时,streamID 为空时,表明这是混音后的音频数据 + */ - (void)setAudioPostpCallback:(void(*)(const char* streamID, const AVE::AudioFrame& inFrame, AVE::AudioFrame& outFrame))callback config:(AVE::ExtPostpSet)config; +/** + 开启或关闭音频后处理 +当开发者需要自处理拉取的音频数据时采用此接口,一般是实现特殊功能如变声;SDK 会在 callback 参数中抛出拉取的某路流的音频数据,开发者从其中获取音频数据进行处理,最后将处理后的数据回传给 SDK。 + 注意: + 1.此 API 必须在拉流后调用。 + + @param enable true: 开启音频后处理;false: 开关音频后处理 + @param streamID 流 ID, 当 streamID 为空串时,表明需要混音后的音频数据 + */ - (void)enableAudioPostp:(bool)enable streamID:(NSString *)streamID; - +/** + 设置音频前处理函数 + + @param prepSet 预处理的采样率等参数设置 + @param callback 采样数据回调 + @warning Deprecated,请使用 [ZegoAudioRoomApi (AudioIO) setAudioPrepCallback:config:] + @discussion 调用者调用此 API 设置音频前处理函数。SDK 会在音频编码前调用,inFrame 为采集的音频数据,outFrame 为处理后返回给SDK的数据 + */ + (void)setAudioPrep2:(AVE::ExtPrepSet)prepSet dataCallback:(void(*)(const AVE::AudioFrame& inFrame, AVE::AudioFrame& outFrame))callback; @end diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApi-IM.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApi-IM.h index af65484e..88af3d8b 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApi-IM.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApi-IM.h @@ -15,13 +15,35 @@ typedef void(^ZegoBigRoomMessageCompletion)(int errorCode, NSString *roomId, NSS @interface ZegoAudioRoomApi (IM) - +/** + 设置 IM 代理对象 + + @param imDelegate 遵循 ZegoAudioIMDelegate 协议的代理对象 + @discussion 使用 IM 功能,初始化相关视图控制器时需要设置代理对象。未设置代理对象,或对象设置错误,可能导致无法正常收到相关回调 + */ - (void)setAudioIMDelegate:(id)imDelegate; - +/** + 房间发送广播消息 + + @param content 消息内容, 不超过 512 字节 + @param type 消息类型,可以自定义 + @param category 消息分类,可以自定义 + @param completionBlock 消息发送结果,回调 server 下发的 messageId + @return true 成功,false 失败 + @discussion 实现点赞主播、评论、送礼物等 IM 功能时,需要调用本 API + */ - (bool)sendRoomMessage:(NSString *)content type:(ZegoMessageType)type category:(ZegoMessageCategory)category completion:(ZegoRoomMessageCompletion)completionBlock; - +/** + 发送房间内不可靠信道的广播消息,用于高并发情景下,服务端会根据高并发情况有策略的丢弃一些消息。 + + @param content 消息内容, 不超过 512 字节 + @param type 消息类型,可以自定义 + @param category 消息分类,可以自定义 + @param completionBlock 消息发送结果,回调 server 下发的 messageId + @return true 成功,false 失败 + */ - (bool)sendBigRoomMessage:(NSString *)content type:(ZegoMessageType)type category:(ZegoMessageCategory)category completion:(ZegoBigRoomMessageCompletion)completionBlock; @@ -31,13 +53,30 @@ typedef void(^ZegoBigRoomMessageCompletion)(int errorCode, NSString *roomId, NSS @optional - +/** + 收到房间的广播消息 + + @param roomId 房间 Id + @param messageList 消息列表,包括消息内容,消息分类,消息类型,发送者等信息 + @discussion 调用 [ZegoAudioRoomApi (IM) -sendRoomMessage:type:category:priority:completion:] 发送消息,会触发此通知 + */ - (void)onRecvAudioRoomMessage:(NSString *)roomId messageList:(NSArray *)messageList; - +/** + 收到在线人数更新 + + @param onlineCount 在线人数 + @param roomId 房间 Id + */ - (void)onUpdateOnlineCount:(int)onlineCount room:(NSString *)roomId; - +/** + 收到房间的不可靠广播消息 + + @param roomId 房间 Id + @param messageList 消息列表,包括消息内容,消息分类,消息类型,发送者等信息 + @discussion 调用 [ZegoAudioRoomApi (IM) -sendBigRoomMessage:type:category:completion:] 发送消息,会触发此通知 + */ - (void)onRecvBigAudioRoomMessage:(NSString *)roomId messageList:(NSArray *)messageList; @end diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApi-Player.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApi-Player.h index a6cd5c7b..f3ead5f1 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApi-Player.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApi-Player.h @@ -14,66 +14,166 @@ @interface ZegoAudioRoomApi (Player) - +/** + 设置播放回调 + + @param playerDelegate player Delegate + */ - (void)setAudioPlayerDelegate:(id)playerDelegate; - +/** + (声音输出)静音开关 + + @param bEnable true 不静音,false 静音。默认 true + @return true 成功,false 失败 + @discussion 设置为关闭后,内置扬声器和耳机均无声音输出 + */ - (bool)enableSpeaker:(bool) bEnable; - +/** + 手机内置扬声器开关 + + @param bOn true 打开,false 关闭。默认 true + @return true 成功,false 失败 + @discussion 设置为关闭后,扬声器无声音,耳机仍有声音输出 + */ - (bool)setBuiltInSpeakerOn:(bool)bOn; - +/** + 统一设置所有拉流的播放音量 + + @param volume 音量取值范围为(0, 100),数值越大,音量越大。默认 100 + @return true 成功,false 失败 + @discussion 通过此 API 软件调整音量 + */ - (bool)setPlayVolume:(int)volume; - +/** + 设置指定拉流的播放音量 + + @param volume 音量取值范围为(0, 100),数值越大,音量越大。默认 100 + @streamID 流ID. ID为空时, 统一设置所有拉流的播放音量 + @return true 成功, false 失败 + @discussion 直播时通过此 API 软件调整音量 + */ - (bool)setPlayVolume:(int)volume ofStream:(NSString *)streamID; - +/** + 获取当前播放视频的音量 + + @param streamID 播放流 ID + @return 视频的音量值 + @discussion 直播时通过此 API 获取当前音量。音量变更也会受硬件音量键的影响。 + */ - (float)getSoundLevelOfStream:(NSString *)streamID; - +/** + 音频录制开关 + + @warning Deprecated,请使用 enableSelectedAudioRecord: + */ - (bool)enableSelectedAudioRecord:(unsigned int)mask sampleRate:(int)sampleRate; - +/** + 音频录制开关 + + @param config 配置信息, 参考 ZegoAPIAudioRecordConfig + @return true 成功,false 失败 + @discussion 开启音频录制后,调用方需要设置音频录制回调代理对象,并通过 [ZegoLiveRoomApi (Player) -onAudioRecord:sampleRate:numOfChannels:bitDepth:type:] 获取 SDK 录制的数据 + */ -(bool)enableSelectedAudioRecord:(ZegoAPIAudioRecordConfig)config; - +/** + 设置音频录制回调代理对象 + + @param audioRecordDelegate 遵循 ZegoAudioLiveRecordDelegate 协议的代理对象 + @discussion 开启音频录制功能,需要设置代理对象。未设置代理对象,或对象设置错误,可能导致无法正常收到相关回调 + */ - (void)setAudioRecordDelegate:(id)audioRecordDelegate; - +/** + 获取 SDK 支持的最大同时播放流数 + + @return 最大支持播放流数 + */ + (int)getMaxPlayChannelCount; +/** + onPlayStateUpdate返回拉流失败时,可以尝试再次拉流 + @param streamID 重新拉流流ID + @return true 调用成功,false 调用失败 + */ - (bool)restartPlayStream:(NSString *)streamID; +/** + 开始播放 + @param streamID 播放流流ID + @return true 调用成功,false 调用失败 + @discussion 此函数只有在[setManualPlay:true] 时调用才有效 + */ - (bool)startPlayStream:(NSString *)streamID; +/** + 开始播放 + @param streamID 播放流流ID + @param info 多媒体流附加信息 + @return true 调用成功,false 调用失败 + @discussion 此函数只有在[setManualPlay:true] 时调用才有效 + */ - (bool)startPlayStream:(NSString *)streamID extraInfo:(ZegoAPIStreamExtraPlayInfo *)info; +/** + 停止播放 + @param streamID 播放流流ID + @return true 调用成功,false 调用失败 + @discussion 此函数只有在[setManualPlay:true] 时调用才有效 + */ - (void)stopPlayStream:(NSString *)streamID; @end @protocol ZegoAudioLivePlayerDelegate - +/** + 播放流事件 + + @param stateCode 播放状态码 + @param stream 流信息 + */ - (void)onPlayStateUpdate:(int)stateCode stream:(ZegoAudioStream *)stream; @optional - +/** + 观看质量更新 + + @param streamID 观看流ID + @param quality quality 参考ZegoApiPlayQuality定义 + */ - (void)onPlayQualityUpate:(NSString *)streamID quality:(ZegoApiPlayQuality)quality; @optional - +/** + * 远端麦克风状态通知 + * 1. 仅拉 UDP 流有效; + * 2. 当房间内其他流的麦克风状态发生改变,如其他用户调用了 EnableMic (true/false) 后,会收到该 API 回调通知。 + * + @param status 参考 zego-api-defines-oc.h 中 ZegoAPIDeviceStatus 的定义 + @param streamID 流的唯一标识 + @param reason 参考 zego-api-defines-oc.h 中 ZegoAPIDeviceErrorReason 的定义 + */ - (void)onRemoteMicStatusUpdate:(int)status ofStream:(NSString *)streamID reason:(int)reason; @optional - +/** + * 接收到远端音频的首帧通知 + * + * @param streamID 流ID + */ - (void)onRecvRemoteAudioFirstFrame:(NSString *)streamID; @end @@ -81,10 +181,23 @@ @protocol ZegoAudioLiveRecordDelegate @optional - +/** + 音频录制回调 + + @param audioData SDK 录制的音频源数据 + @param sampleRate 采样率,不固定,以当前值为准 + @param numOfChannels 通道数量,单通道 + @param bitDepth 位深度,16 bit + @param type 音源类型,参考 ZegoAPIAudioRecordMask + @discussion 开启音频录制并设置成功代理对象后,用户调用此 API 获取 SDK 录制的音频数据。用户可自行对数据进行处理,例如:存储等。存储数据时注意取 sampleRate、numOfChannels、bitDepth 参数写包头信息 + */ - (void)onAudioRecord:(NSData *)audioData sampleRate:(int)sampleRate numOfChannels:(int)numOfChannels bitDepth:(int)bitDepth type:(unsigned int)type; - +/** + 音频录制回调 + + @warning Deprecated,请使用 onAudioRecord:sampleRate:numOfChannels:bitDepth:type: + */ - (void)onAudioRecord:(NSData *)audioData sampleRate:(int)sampleRate numOfChannels:(int)numOfChannels bitDepth:(int)bitDepth; @end diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApi-Publisher.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApi-Publisher.h index b61ce05d..bbacf5f0 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApi-Publisher.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApi-Publisher.h @@ -13,106 +13,273 @@ @interface ZegoAudioRoomApi (Publisher) - +/** + 设置推流回调 + + @param publisherDelegate Publish Delegate + */ - (void)setAudioPublisherDelegate:(id)publisherDelegate; - +/** + 开始直播 + + @return true:调用成功; false:调用失败,当前直播流已达上限,已经开播等原因 + @discussion 此函数只有在[setManualPublish:true] 时调用才有效 + @discussion 流名由SDK内部生成 + */ - (bool)startPublish; - +/** + 开始直播 + + @param streamID 直播流 ID + @return true:调用成功; false:调用失败,当前直播流已达上限,已经开播等原因 + @discussion 此函数只有在[setManualPublish:true] 时调用才有效 + @discussion 流名由外部传入 + */ - (bool)startPublishWithStreamID:(NSString *)streamID; - +/** + 停止直播 + + @discussion 此函数只有在[setManualPublish:true] 时调用才有效 + */ - (void)stopPublish; - +/** + 开启关闭麦克风 + + @param bEnable true 打开,false 关闭。默认 false + @return true 成功,false 失败 + @discussion 推流时可调用本 API 进行参数配置 + */ - (bool)enableMic:(bool)bEnable; - +/** + 开启采集监听 + + @param bEnable true 打开,false 关闭。默认 false + @return true 成功,false 失败 + @discussion 推流时可调用本 API 进行参数配置。连接耳麦时设置才实际生效。开启采集监听,主播方讲话后,会听到自己的声音。 + */ - (bool)enableLoopback:(bool)bEnable; - +/** + 设置采集监听音量 + + @param volume 音量大小,取值(0, 100)。默认 100 + @discussion 推流时可调用本 API 进行参数配置 + */ - (void)setLoopbackVolume:(int)volume; - +/** + 设置采集音量 + + @param volume 音量大小,取值(0, 100)。默认 100 + @discussion SDK初始化成功后调用 + */ - (void)setCaptureVolume:(int)volume; - +/** + 设置混音音量 + + @param volume 0~100,默认为 50 + @warning Deprecated,请使用 [ZegoAudioAux setAuxVolume:] + */ - (void)setAuxVolume:(int)volume; - +/** + 混音静音开关 + + @param bMute true: aux 输入播放静音,false: 不静音。默认 false + @return true 成功,false 失败 + @discussion 推流开始前调用本 API 进行参数配置 + @warning Deprecated,请使用 [ZegoAudioAux muteAux:] + */ - (bool)muteAux:(bool)bMute; - +/** + 获取当前采集的音量 + + @return 当前采集的音量值 + */ - (float)getCaptureSoundLevel; - +/** + 是否开启离散音频包发送 + + @param enable true 开启,此时关闭麦克风后,不会发送静音包;false 关闭,此时关闭麦克风后会发送静音包 + 默认状态下,关闭麦克风后会发送静音包 + @discussion 在推流前调用,只有纯 UDP 方案才可以调用此接口 + */ - (void)enableDTX:(bool)enable; +/** + 是否开启语音活动检测 + @param enable enable true 开启; false 关闭, 默认关闭 + @discussion 在推流前调用,只有纯 UDP 方案才可以调用此接口 + */ - (void)enableVAD:(bool)enable; - +/** + 设置音频码率 + + @param bitrate 码率 + @return true 成功 false 失败 + */ - (bool)setAudioBitrate:(int)bitrate; - +/** + 设置延迟模式 + + @param mode 延迟模式,默认 ZEGOAPI_LATENCY_MODE_NORMAL + @discussion 在推流前调用 + */ - (void)setLatencyMode:(ZegoAPILatencyMode)mode; - +/** + 设置推流音频声道数 + + @param count 声道数,1 或 2,默认为 1(单声道) + @attention 必须在调用推流前设置 + @note setLatencyMode 设置为 ZEGO_LATENCY_MODE_NORMAL, ZEGO_LATENCY_MODE_NORMAL2, ZEGO_LATENCY_MODE_LOW3 才能设置双声道 + @note 在移动端双声道通常需要配合音频前处理才能体现效果 + */ - (void)setAudioChannelCount:(int)count; - +/** + 音频采集自动增益开关 + + @param enable 是否开启,默认关闭 + @return true 成功,false 失败 + */ - (bool)enableAGC:(bool)enable; - +/** + 回声消除开关 + + @param enable true 打开 false 关闭 + @return true 成功 false 失败 + */ - (bool)enableAEC:(bool)enable; - +/** + 设置回声消除模式 + + @param mode 回声消除模式 + @discussion 建议在推流前调用设置 + */ - (void)setAECMode:(ZegoAPIAECMode)mode; - +/** + 音频采集噪声抑制开关 + + @param enable true 开启,false 关闭 + @return true 调用成功,false 调用失败 + */ - (bool)enableNoiseSuppress:(bool)enable; - +/** + 设置音频采集降噪等级 + @param mode 降噪等级,详见 ZegoAPIANSMode 定义 + @return true 成功,false 失败 + @note 仅在 enableNoiseSuppress 为 true 时有效, 默认为 MEDIUM + */ - (bool)setNoiseSuppressMode:(ZegoAPIANSMode)mode; +/** + 音频采集的瞬态噪声抑制开关(消除键盘、敲桌子等瞬态噪声) + @param bEnable true 开启,false 关闭 + @return true 调用成功,false 调用失败 + */ - (bool)enableTransientNoiseSuppress:(bool)enable; - +/** + 更新流附加信息 + + @param extraInfo 流附加信息, 最大为 1024 字节 + @return true 成功,false 失败 + @discussion 通常在主播方的 [ZegoAudioLivePublisherDelegate -onPublishStateUpdate:streamID:streamInfo:] 通知中,或其他需更新流附加信息的场合下调用。更新流附加信息成功后,除调用方外,同一房间内的其他人会收到 [ZegoAudioRoomDelegate -onStreamExtraInfoUpdated:roomID] 通知 + */ - (bool)updateStreamExtraInfo:(NSString *)extraInfo; - +/** + OnPublishStateUpdate回调推流失败时,可以调用此函数再次进行推流 + @return true 调用推流成功,false 调用失败 + */ - (bool)restartPublishStream; - +/** + 设置音频设备模式 + + @param mode 模式, 默认 ZEGOAPI_AUDIO_DEVICE_MODE_AUTO + @discussion 在 Init 前调用 + */ + (void)setAudioDeviceMode:(ZegoAPIAudioDeviceMode) mode; +/** + 设置是否开启音频流量控制 + @param enable true 开启, false 关闭 + */ - (void)enableAudioTrafficControl:(BOOL)enable; +/** + 音效均衡器 + @param bandGain 取值范围[-15, 15]。默认值是0,如果所有频带的增益值全部为0,则会关闭EQ功能 + @param bandIndex 取值范围[0, 9]。分别对应10个频带,其中心频率分别是[31, 62, 125, 250, 500, 1K, 2K, 4K, 8K, 16K]Hz + @return true 调用成功,false 调用失败 + @attention 在InitSDK之后调用有效。使用此接口前请与即构技术支持联系确认是否支持此功能。 + */ - (bool)setAudioEqualizerGain:(float)bandGain index:(int)bandIndex; @end @protocol ZegoAudioLivePublisherDelegate - +/** + 推流状态更新 + + @param stateCode 状态码 + @param streamID 流ID + @param info 推流信息 + */ - (void)onPublishStateUpdate:(int)stateCode streamID:(NSString *)streamID streamInfo:(NSDictionary *)info; @optional - +/** + 发布质量更新 + + @param streamID streamID 发布流 ID + @param quality quality 参考ZegoApiPublishQuality定义 + @discussion startPublish 后,该 API 会被多次回调。调用者可以在此回调中获取当前的视频质量数据,加以处理 + */ - (void)onPublishQualityUpdate:(NSString *)streamID quality:(ZegoApiPublishQuality)quality; @optional - +/** + 混音数据输入回调 + + @param pData 混音数据 + @param pDataLen 缓冲区长度。实际填充长度必须为 0 或是缓冲区长度。0 代表无混音数据 + @param pSampleRate 混音数据采样率,支持16k、32k、44.1k、48k + @param pChannelCount 混音数据声道数,支持1、2 + @discussion 用户调用该 API 将混音数据传递给 SDK。混音数据 bit depth 必须为 16 + @warning Deprecated,请使用 ZegoAudioAuxDelgate 代替 + */ - (void)onAuxCallback:(void *)pData dataLen:(int *)pDataLen sampleRate:(int *)pSampleRate channelCount:(int *)pChannelCount; - +/** + 转推CDN状态信息 + @param statesInfo CDN状态信息 + @param streamID 推流的流ID + */ - (void)onRelayCDNStateUpdate:(NSArray *)statesInfo streamID:(NSString*)streamID; @end diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApi.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApi.h index 9777320d..178e6d22 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApi.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApi.h @@ -27,81 +27,204 @@ typedef void(^ZegoCustomCommandBlock)(int errorCode, NSString *roomID); + (NSString *)version; + (NSString *)version2; - +/** + 是否启用测试环境 + + @param useTestEnv 是否使用测试环境 + */ + (void)setUseTestEnv:(bool)useTestEnv; - +/** + 调试信息开关 + + @param bOnVerbose 是否使用测试环境 + @discussion 建议在调试阶段打开此开关,方便调试。默认关闭 + */ + (void)setVerbose:(bool)bOnVerbose; - +/** + 触发日志上报 + + @discussion 在初始化 SDK 成功后调用 + */ + (void)uploadLog; - +/** + 设置用户ID及用户名 + + @param userID 用户ID + @param userName 用户名 + @return 设置结果 + */ + (bool)setUserID:(NSString *)userID userName:(NSString *)userName; +/** + 设置SDK日志大小 + @param size 日志大小,单位为字节。取值范围[5*1024*1024, 100*1024*1024] + @discussion 在初始化 SDK 之前调用有效 + */ + (void)setLogSize:(unsigned int)size; - +/** + 设置SDK日志存储目录及大小 + + @param logDir 日志文件存储路径,如果为空,则存储到默认路径 + @param size 日志大小,单位为字节。取值范围[5*1024*1024, 100*1024*1024] + @param subFolder 日志存储子文件夹,当为空时,不创建子文件夹。该文件夹是 logDir 的子目录。 + @discussion 在初始化 SDK 之前调用有效 + */ + (void)setLogDir:(NSString *)logDir size:(unsigned int)size subFolder:(NSString *)subFolder; - +/** + 初始化SDK + + @param appID Zego派发的数字ID, 各个开发者的唯一标识 + @param appSignature Zego派发的签名, 用来校验对应appID的合法性 + @return api 实例,nil 表示初始化失败 + */ - (instancetype)initWithAppID:(unsigned int)appID appSignature:(NSData*)appSignature; - +/** + 设置房间的 delegate + + @param roomDelegate 房间 delegate + */ - (void)setAudioRoomDelegate:(id)roomDelegate; - +/** + 设置是否需要手动发布直播 + + @param manual 是否手动发布直播,YES:手动发布直播,NO:进入房间后自动发布直播。默认为 NO + @discussion 必须在登录房间前调用 + */ - (void)setManualPublish:(bool)manual; +/** + 设置是否需要手动播放 + @param manual 是否手动播放,YES:手动播放,NO:收到流更新后自动播放。默认为 NO + @discussion 必须在登录房间前调用 + */ - (void)setManualPlay:(bool)manual; - +/** + 设置自定义token信息 + + @param thirdPartyToken 第三方传入的token + @discussion 使用此方法验证登录时用户的合法性,登录房间前调用,token的生成规则请联系即构。若不需要验证用户合法性,不需要调用此函数。 + @discussion 在登录房间前调用有效,退出房间后失效 + */ - (void)setCustomToken:(NSString *)thirdPartyToken; - +/** + 登录房间 + + @param roomID 房间唯一ID + @param block 房间登录结果回调 + @return 调用登录房间的结果 + */ - (bool)loginRoom:(NSString *)roomID completionBlock:(ZegoAudioRoomBlock)block; - +/** + 退出房间 + + @return true 成功,false 失败 + @discussion 会停止所有的推拉流 + */ - (bool)logoutRoom; - +/** + 设置直播事件代理对象 + + @param liveEventDelegate 遵循 ZegoAudioLiveEventDelegate 协议的代理对象 + @discussion 设置代理对象成功后,在 [ZegoAudioLiveEventDelegate -zego_onLiveEvent:info:] 中获取直播状态,状态参考 ZegoLiveEvent 定义。未设置代理对象,或对象设置错误,可能导致无法正常收到相关回调 + */ - (void)setAudioLiveEventDelegate:(id)liveEventDelegate; #if TARGET_OS_IPHONE - +/** + 设置音视频设备错误回调代理对象 + + @param deviceEventDelegate 遵循 ZegoAudioDeviceEventDelegate 协议的代理对象 + @discussion 开发者获取音视频设备错误,需要先设置此代理对象。未设置代理对象,或对象设置错误,可能导致无法正常收到相关回调 + */ - (void)setAudioDeviceEventDelegate:(id)deviceEventDelegate; - +/** + 暂停模块 + + @discussion 用于需要暂停指定模块的场合,例如来电时暂定音频模块。暂停指定模块后,注意在合适时机下恢复模块 + */ - (void)pauseAudioModule; - +/** + 恢复模块 + + @discussion 用于需要恢复指定模块的场合,例如来电结束后恢复音频模块。暂停指定模块后,注意在合适时机下恢复模块 + */ - (void)resumeAudioModule; - +/** + 设置音频路由回调 + + @param delegate 回调 + */ - (void)setAudioRouteDelegate:(id)delegate; #endif - +/** + 设置是否允许SDK使用麦克风设备 + + @param enable YES 表示允许使用麦克风,NO 表示禁止使用麦克风,此时如果SDK在占用麦克风则会立即释放。 + @return YES 调用成功 NO 调用失败 + @discussion 调用时机为引擎创建后的任意时刻。 + @note 接口由于涉及对设备的操作,极为耗时,不建议随便调用,只在真正需要让出麦克风给其他应用的时候才调用 + */ - (BOOL)enableMicDevice:(BOOL)enable; - +/** + Engine停止回调 + + @param engineDelegate engine Delegate + */ - (void)setAVEngineDelegate:(id)engineDelegate; - +/** + 设置配置信息 + + @param config 配置信息 + @discussion 必须在Init SDK前调用 + */ + (void)setConfig:(NSString *)config; - +/** + 设置用户进入/退出房间是否通知其他用户 + + @param userStateUpdate 是否需要通知其他用户 + @discussion 默认不通知 + */ - (void)setUserStateUpdate:(bool)userStateUpdate; - +/** + 发送自定义信令 + + @param memberList 发送对象列表 + @param content 消息内容 + @param block 消息发送结果 + @return true 成功,false 失败 + @discussion 信令内容由用户自定义。发送结果通过 block 回调 + */ - (bool)sendCustomCommand:(NSArray *)memberList content:(NSString *)content completion:(ZegoCustomCommandBlock)block; - +/** + 设置网络类型回调 + + @param delegate 回调 + */ - (void)setNetTypeDelegate:(id)delegate; @@ -111,50 +234,109 @@ typedef void(^ZegoCustomCommandBlock)(int errorCode, NSString *roomID); @optional - +/** + 用户被踢出聊天室 + + @param reason 原因 + @param roomID 房间 ID + @warning deprecated 请使用onKickOut:roomID:customReason + */ - (void)onKickOut:(int)reason roomID:(NSString *)roomID; - +/** + 用户被踢出聊天室 + + @param reason 原因 + @param roomID 房间 ID + @discussion 可在该回调中处理用户被踢出房间后的下一步处理(例如报错、重新登录提示等) + */ - (void)onKickOut:(int)reason roomID:(NSString *)roomID customReason:(NSString *)customReason; - +/** + 与 server 断开通知 + + @param errorCode 错误码,0 表示无错误 + @param roomID 房间 ID + @discussion 建议开发者在此通知中进行重新登录、推/拉流、报错、友好性提示等其他恢复逻辑。与 server 断开连接后,SDK 会进行重试,重试失败抛出此错误。请注意,此时 SDK 与服务器的所有连接均会断开 + */ - (void)onDisconnect:(int)errorCode roomID:(NSString *)roomID; - +/** + 流更新消息,此时sdk会开始拉流/停止拉流 + + @param type 增加/删除流 + @param stream 流信息 + */ - (void)onStreamUpdated:(ZegoAudioStreamType)type stream:(ZegoAudioStream*)stream; - +/** + 流附加信息更新 + + @param streamList 附加信息更新的流列表 + @param roomID 房间 ID + @discussion 主播推流成功后调用 [ZegoAudioRoomApi (Publisher) -updateStreamExtraInfo:] 更新附加信息,在此回调中通知房间内其他成员。调用 [ZegoAudioRoomApi (Publisher) -updateStreamExtraInfo:] 更新信息的调用方,不会收到此回调 + */ - (void)onStreamExtraInfoUpdated:(NSArray *)streamList roomID:(NSString *)roomID; - +/** + 房间成员更新回调 + + @param userList 成员更新列表 + @param type 更新类型(增量,全量) + @discussion 当房间成员变化(例如用户进入、退出房间)时,会触发此通知 + */ - (void)onUserUpdate:(NSArray *)userList updateType:(ZegoUserUpdateType)type; - +/** + 收到自定义消息 + + @param fromUserID 消息来源 UserID + @param fromUserName 消息来源 UserName + @param content 消息内容 + @param roomID 房间 ID + @discussion 调用 [ZegoLiveRoomApi -sendCustomCommand:content:completion:] 发送自定义消息后,消息列表中的用户会收到此通知 + */ - (void)onReceiveCustomCommand:(NSString *)fromUserID userName:(NSString *)fromUserName content:(NSString*)content roomID:(NSString *)roomID; @end @protocol ZegoAudioLiveEventDelegate - +/** + 直播事件回调 + + @param event 直播事件状态,参考 ZegoLiveEvent 定义 + @param info 信息,目前为空 + @discussion 调用 [ZegoLiveRoomApi -setLiveEventDelegate] 设置直播事件代理对象后,在此回调中获取直播事件状态 + */ - (void)zego_onAudioLiveEvent:(ZegoAudioLiveEvent)event info:(NSDictionary*)info; @end @protocol ZegoAudioDeviceEventDelegate - +/** + 设备事件回调 + + @param deviceName 设备名,取值 "microphone" + @param errorCode 错误码。返回值参考 ZegoAPIDeviceErrorCode 定义 + @discussion 调用 [ZegoLiveRoomApi -setDeviceEventDelegate] 设置设备事件代理对象后,在此回调中获取设备状态或错 + */ - (void)zego_onAudioDevice:(NSString *)deviceName error:(int)errorCode; @end @protocol ZegoAVEngineDelegate - +/** + 音视频引擎启动时回调 + */ - (void)onAVEngineStart; - +/** + 音视频引擎停止时回调 + */ - (void)onAVEngineStop; @end @@ -162,7 +344,11 @@ typedef void(^ZegoCustomCommandBlock)(int errorCode, NSString *roomID); @protocol ZegoAudioRouteDelegate - +/** + 音频路由发生变化 + + @param audioRoute 当前的音频路由类型 + */ - (void)onAudioRouteChange:(ZegoAPIAudioRoute)audioRoute; @end @@ -170,7 +356,11 @@ typedef void(^ZegoCustomCommandBlock)(int errorCode, NSString *roomID); @protocol ZegoNetTypeDelegate +/** + 网络类型变更通知 + @param netType 网络类型, 详见 zego-api-defines-oc.h 中的 ZegoAPINetType + */ - (void)onNetTypeChange:(ZegoAPINetType)netType; @end diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApiDefines-IM.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApiDefines-IM.h index bc183c98..48878ed2 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApiDefines-IM.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApiDefines-IM.h @@ -11,91 +11,91 @@ #ifndef ZegoLiveRoomApiDefines_IM_h - +/** 消息类型 */ typedef enum { - + /** 文字 */ ZEGO_TEXT = 1, - + /** 图片 */ ZEGO_PICTURE, - + /** 文件 */ ZEGO_FILE, - + /** 其他 */ ZEGO_OTHER_TYPE = 100, } ZegoMessageType; - +/** 消息优先级 */ typedef enum { - + /** 默认优先级 */ ZEGO_DEFAULT = 2, - + /** 高优先级 */ ZEGO_HIGH = 3, } ZegoMessagePriority; - +/** 消息类别 */ typedef enum { - + /** 聊天 */ ZEGO_CHAT = 1, - + /** 系统 */ ZEGO_SYSTEM, - + /** 点赞 */ ZEGO_LIKE, - + /** 送礼物 */ ZEGO_GIFT, - + /** 其他 */ ZEGO_OTHER_CATEGORY = 100, } ZegoMessageCategory; - +/** 房间消息 */ @interface ZegoRoomMessage : NSObject - +/** 来源用户 Id */ @property (nonatomic, copy) NSString *fromUserId; - +/** 来源用户名 */ @property (nonatomic, copy) NSString *fromUserName; - +/** 消息 Id */ @property (nonatomic, assign) unsigned long long messageId; - +/** 内容 */ @property (nonatomic, copy) NSString *content; - +/** 消息类型 */ @property (nonatomic, assign) ZegoMessageType type; - +/** 消息优先级 */ @property (nonatomic, assign) ZegoMessagePriority priority; - +/** 消息类别 */ @property (nonatomic, assign) ZegoMessageCategory category; @end - +/** 房间不可靠消息 */ @interface ZegoBigRoomMessage : NSObject - +/** 来源用户 Id */ @property (nonatomic, copy) NSString *fromUserId; - +/** 来源用户名 */ @property (nonatomic, copy) NSString *fromUserName; - +/** 消息 Id */ @property (nonatomic, copy) NSString *messageId; - +/** 内容 */ @property (nonatomic, copy) NSString *content; - +/** 消息类型 */ @property (nonatomic, assign) ZegoMessageType type; - +/** 消息优先级 */ @property (nonatomic, assign) ZegoMessagePriority priority; - +/** 消息类别 */ @property (nonatomic, assign) ZegoMessageCategory category; @end - +/** 用户 */ @interface ZegoUser : NSObject - +/** 用户 Id */ @property (nonatomic, copy) NSString *userId; - +/** 用户名 */ @property (nonatomic, copy) NSString *userName; @end @@ -104,4 +104,4 @@ typedef enum #endif -#endif +#endif /* ZegoAudioRoomDefines_IM_h */ diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApiDefines.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApiDefines.h index 17f25a66..4e7d67e8 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApiDefines.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/ZegoAudioRoomApiDefines.h @@ -19,88 +19,88 @@ #endif #endif - +/** 音频流类型 */ typedef enum : NSUInteger { - + /** 音频流新增 */ ZEGO_AUDIO_STREAM_ADD, - + /** 音频流删除 */ ZEGO_AUDIO_STREAM_DELETE, } ZegoAudioStreamType; - +/** 音频直播事件 */ typedef enum : NSUInteger { - + /** 音频拉流开始重试 */ Audio_Play_BeginRetry = 1, - + /** 音频拉流重试成功 */ Audio_Play_RetrySuccess = 2, - + /** 音频推流开始重试 */ Audio_Publish_BeginRetry = 3, - + /** 音频推流重试成功 */ Audio_Publish_RetrySuccess = 4, - + /** 拉流临时中断 */ Audio_Play_TempDisconnected = 5, - + /** 推流临时中断 */ Audio_Publish_TempDisconnected = 6, - + /** 音频卡顿开始 */ Audio_Play_Break = 9, - + /** 音频卡顿结束 */ Audio_Play_BreakEnd = 10, } ZegoAudioLiveEvent; - +/** 音频流 */ @interface ZegoAudioStream : NSObject - +/** 用户 ID */ @property (nonatomic, copy) NSString *userID; - +/** 用户名 */ @property (nonatomic, copy) NSString *userName; - +/** 流 ID */ @property (nonatomic, copy) NSString *streamID; - +/** 流附加信息 */ @property (nonatomic, copy) NSString *extraInfo; - +/** 流在房间中的序号 */ @property (nonatomic, assign) int streamNID; @end - +/** AudioSession相关配置信息的key, 值为 NSString */ ZEGO_EXTERN NSString *const kZegoAudioRoomConfigKeepAudioSesionActive; #ifndef ZegoLiveRoomApiDefines_IM_h typedef enum { - + /** 全量更新 */ ZEGO_UPDATE_TOTAL = 1, - + /** 增量更新 */ ZEGO_UPDATE_INCREASE, }ZegoUserUpdateType; typedef enum { - + /** 新增 */ ZEGO_USER_ADD = 1, - + /** 删除 */ ZEGO_USER_DELETE, }ZegoUserUpdateFlag; - +/** 用户状态 */ @interface ZegoUserState : NSObject - +/** 用户 ID */ @property (nonatomic, copy) NSString *userID; - +/** 用户名 */ @property (nonatomic, copy) NSString *userName; - +/** 用户更新属性 */ @property (nonatomic, assign) ZegoUserUpdateFlag updateFlag; - +/** 角色 */ @property (nonatomic, assign) int role; @end #endif -#endif +#endif /* ZegoAudioRoomApiDefines_h */ diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/audio_in_output.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/audio_in_output.h index 9729af91..8229b5a5 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/audio_in_output.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/audio_in_output.h @@ -11,11 +11,30 @@ namespace AVE { enum FrameType { - TYPE_PCM = 0x1001, - TYPE_AAC_STREAM = 0x1003, + TYPE_PCM = 0x1001, //PCM + TYPE_AAC_STREAM = 0x1003, //AAC encode data }; - + /* + TYPE_PCM: Buffer data only contail pcm data. + + |-----------------------------------------buffer data(bufLen)-----------------------------------| + |-----------------------------------------pcm data(pcmLen)--------------------------------------| + + configLen = 0. + pcmLen = bufLen = 2 * samples * channels. (only need correct fill samples and channels, inner will calculate bufLen). + + + TYPE_AAC_STREAM: Buffer data is made up of specail config and encode data. + + |-----------------------------------------buffer data(bufLen)-----------------------------------| + |----special config(configLen)------|-----------------encode data(encodeLen)--------------------| + + encodeLen = bufLen - configLen. + if configLen == 0: indicate this frame only contain aac encode data. + if configLen == bufLen: indicate this frame only contain aac special config(encodeLen = bufLen - configLen = 0). + if (config != 0) && (configLen < bufLen): indicate this frame contain special config and encode data. + */ struct AudioFrame { AudioFrame() @@ -31,15 +50,16 @@ namespace AVE buffer = 0; } - int frameType; - int samples; - int bytesPerSample; - int channels; - int sampleRate; - double timeStamp; - int configLen; - int bufLen; - unsigned char* buffer; + int frameType; //refer to enum FrameType + int samples; //PCM:capture pcm samples at this input. AAC:aac encode one frame need samples + int bytesPerSample; //bytes per sample = 2 * channels, current bit depth only support 16bit(2 bytes). + int channels; //channels, 1 or 2. + int sampleRate; //PCM: capture sample rate; AAC: encode sample rate. supported [16k/32k/44.1k/48k] + double timeStamp; //time stamp, PCM: 0; AAC: 0 or encode timeStamp, if buffer data only contain special config fill 0. + int configLen; //aac special config Len, PCM: 0; AAC: range [0-64]. 0 indicate this frame not contain spcial config. + int bufLen; /*buffer Length, PCM bufLen = 2 * samples * channels(only need correct fill samples and channels, + not use filed bufLen). AAC encode data len = bufLen - configLen.*/ + unsigned char* buffer; //data buffer, the caller is responsible for bufer allocate and release }; class IAudioDataInOutput @@ -56,21 +76,57 @@ namespace AVE struct ExtAudioProcSet { - bool bEncode; - int nSampleRate; - int nChannel; - int nSamples; + bool bEncode; /* + bEncode == false, external prep output PCM data. + bEncode == true, external prep output AAC encode data(only support aac encode) + */ + int nSampleRate; //pcm capture or encode sample rate, if 0 use sdk inner sample rate.. + int nChannel; //pcm capture or encode channels. if 0 use sdk inner channels. + int nSamples; /* + bEncode == false, if nSamples == 0. use sdk inner samples, push 10ms audio data to external prep module once. + else push nSamples(nSamples >= 160 AND nSamples <= 2048) audio data to external prep module once, + some audio processing algorithm may need length not 10ms. + + bEncode == true, AAC encode one frame need samples(480/512/1024/1960/2048). + */ }; typedef struct ExtAudioProcSet ExtPrepSet; typedef void(*OnPrepCallback)(const AudioFrame& inFrame, AudioFrame& outFrame); - + /* + const AudioFrame& inFrame: + caller fill the input data to handle,refer to struct AudioFrame: + AudioFrame.frameType = TYPE_PCM; + AudioFrame.timeStamp = 0; + AudioFrame.configLen = 0; + AudioFrame.bufLen = AudioFrame.samples * AudioFrame.channels * 2(bitDepthInByte); + + AudioFrame& outFrame: + outFrame is used for receiving data after called handle. + caller(zego sdk)will allocate the outFrame.buffer and tell the outFrame.bufLen(allocated buffer length that store output data max length), + after the called handle. called will alert outFrame.configLen/outFrame.bufLen and write handled data in outFrame.buffer, needn't fill timeStamp. + + if AACEncodeSet.bEncode = true, data after handling must be TYPE_AAC_STREAM: + outFrame.frameType = TYPE_AAC_STREAM; + outFrame.timeStamp = 0; + + if AACEncodeSet.bEncode = false, data after handling must be TYPE_PCM: + outFrame.frameType = TYPE_PCM; + AudioFrame.timeStamp = 0; + AudioFrame.configLen = 0; + AudioFrame.bufLen = AudioFrame.samples * AudioFrame.channels * 2(bitDepthInByte); + + PS: + Even without any treatment, you need copy data from inFrame to outFrame,else the outFrame.buffer is empty data(all zeros/000000....0000); + */ typedef struct ExtAudioProcSet ExtPostpSet; typedef void(*OnPostpCallback)(const char* streamId, const AudioFrame& inFrame, AudioFrame& outFrame); - + /* for audio post-process only support now: + ExtPostpSet.bEncode = false; + */ } diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-audio-aux-oc.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-audio-aux-oc.h index 2407b6bb..f3c56aa0 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-audio-aux-oc.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-audio-aux-oc.h @@ -3,38 +3,108 @@ // #import - +/** + 混音音频数据输入回调(可输入媒体次要信息) + */ @protocol ZegoAudioAuxDelgate @optional - +/** + 混音音频数据的输入回调,当开启混音后,用户调用该 API 将混音数据传递给 SDK。 + + * 注意: + * 1.针对混音数据,目前 SDK 仅支持位深为 16bit,16k、32k、44.1k、48k 采样率,单声道或者双声道的 PCM 音频数据格式。 + * 2.用户根据实际的 PCM 音频填写采样率及声道数。 + * 3.为确保混音效果,请不要在此 API 中执行耗时操作。 + + @param pData 待混音的音频数据 + @param pDataLen 一次传入的音频数据长度;SDK会提供好长度值,用户按照这个长度写入音频数据即可;如果填写的音频数据长度大于等于 pDataLen,则无需更改 pDataLen 的值;如果填写的音频数据长度小于 pDataLen,将 pDataLen 的值更改为0;当音频最后的尾音不足 SDK 提供的长度值时,又需要向 SDK 传入完整的音频数据,可以用静音数据补齐后再传给 SDK。 + @param pSampleRate 混音数据采样率,支持16k、32k、44.1k、48k + @param pChannelCount 混音数据声道数,支持1、2 + @see -enableAux: + */ - (void)onAuxCallback:(void *)pData dataLen:(int *)pDataLen sampleRate:(int *)pSampleRate channelCount:(int *)pChannelCount; - +/** + 混音音频数据的输入回调,当开启混音后,用户调用该 API 将混音数据传递给 SDK。 + + * 注意: + * 1. 针对混音数据,目前 SDK 仅支持位深为 16bit,16k、32k、44.1k、48k 采样率,单声道或者双声道的 PCM 音频数据格式。 + * 2.用户根据实际的 PCM 音频填写采样率及声道数。 + * 3.为确保混音效果,请不要在此 API 中执行耗时操作。 + * 4.发送媒体次要信息前需要调用 [ZegoMediaSideInfo -setMediaSideFlags:onlyAudioPublish:mediaInfoType:seiSendType:channelIndex:] 开启媒体次要信息传输功能。 + * 5.此接口带媒体次要信息时必须要带有混音音频数据(不能只有媒体次要信息)才能发送媒体次要信息,如果不带混音音频数据则会丢掉媒体次要信息。 + + @param pData 待混音的音频数据 + @param pDataLen 一次传入的音频数据长度;SDK会提供好长度值,用户按照这个长度写入音频数据即可;如果填写的音频数据长度大于等于 pDataLen,则无需更改 pDataLen 的值;如果填写的音频数据长度小于 pDataLen,将 pDataLen 的值更改为0;当音频最后的尾音不足 SDK 提供的长度值时,又需要向 SDK 传入完整的音频数据,可以用静音数据补齐后再传给 SDK。 + @param pSampleRate 混音数据采样率,支持16k、32k、44.1k、48k + @param pChannelCount 混音数据声道数,支持1、2 + @param pSideInfo 媒体次要信息数据缓冲区地址,若不需要带媒体次要信息 + @param pSideInfoLength 媒体次要信息数据缓冲区长度 + @param bPacket 媒体次要信息数据是否外部已经打包好包头,YES 表示采用外部打包的包头, NO 表示采用 ZEGO 内部打包的包头。 + @see ZegoAudioAux -enableAux: + */ - (void)onAuxCallback:(void *)pData dataLen:(int *)pDataLen sampleRate:(int *)pSampleRate channelCount:(int *)pChannelCount sideInfo:(unsigned char*)pSideInfo sideInfoLen:(int*) pSideInfoLength packet:(bool*)pPacket; @end - +/** + 混音配置类 + */ @interface ZegoAudioAux : NSObject - +/** + 设置对混音数据的输入回调的监听 + + * 注意:若不再需要混音,调用 setDelegate:nil 去除回调监听。 + + @param delegate 实现了 ZegoAudioAuxDelgate 代理的方法,用于混音时向 SDK 传入待混音的音频数据。 + @see ZegoAudioAux -enableAux: + */ - (void)setDelegate:(id) delegate; - +/** + 混音开关 + + * 注意: + * 1. 必须在初始化 SDK 后调用,可在需要混音的任一时间开启混音开关。 + * 2.当开启混音后,SDK 会在 -onAuxCallback:dataLen:sampleRate:channelCount:sideInfo:sideInfoLen:packet: 中获取用于混音的音频数据,即需要开发者在此接口中塞音频数据给 SDK。 + + @param enable 开启/关闭混音开关,YES 表示开启混音,NO 表示关闭混音;默认为 NO(关闭混音)。 + @return YES 表示调用成功,能收到混音回调;NO 表示调用失败,不能收到混音回调。 + */ - (BOOL)enableAux:(BOOL)enable; - +/** + 设置混音音量 + + @param volume 0~100,默认为 50 + */ - (void)setAuxVolume:(int)volume; - +/** + 设置混音本地播放音量 + + @param volume 0~100,默认为 50 + */ - (void)setAuxPlayVolume:(int)volume; - +/** + 设置混音推流音量 + + @param volume 0~100,默认为 50 + */ - (void)setAuxPublishVolume:(int)volume; - +/** + 混音静音开关 + + * 该接口调用时机无要求,开发者按需调用即可。 + + @param mute YES: aux 输入播放静音,NO: 不静音。默认 NO + @return YES 成功,NO 失败 + */ - (BOOL)muteAux:(BOOL)mute; @end diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-audio-device-oc.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-audio-device-oc.h index c635f24a..2ab98f6a 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-audio-device-oc.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-audio-device-oc.h @@ -6,7 +6,13 @@ @interface ZegoAudioDevice : NSObject - +/** + 设置音频设备采集时是否开启双声道模式。 + + @param captureType 0: 使用单声道进行采集; ≠0: 始终使用双声道进行采集 + @attention 初始化 SDK 之后,启用音视频功能前调用(如预览画面StartPreview、推流StartPublishing之前调用) + @attention 设置始终生效,直到重新通过此 API 修改该值或者反初始化 SDK + */ + (void)enableAudioCaptureStereo:(int)captureType; @end diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-audio-encrypt-decrypt-oc.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-audio-encrypt-decrypt-oc.h index 66ec4ce1..6be4b57d 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-audio-encrypt-decrypt-oc.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-audio-encrypt-decrypt-oc.h @@ -3,21 +3,58 @@ #import - +/** + 音频加解密回调 + */ @protocol ZegoAudioEncryptDecryptDelegate @required - +/** + 音频加密、解密回调 + + * 注意: + * 1.开启音频加解密功能并成功设置音频加解密代理后,推流成功或者拉流成功都能收到此回调。 + * 2.当业务方需要同时使用音频加密、解密功能时,在此回调中同时处理音频加解密,使用此回调中的 streamID 来区分推流、拉流。 + + @param streamID 标识当前回调的音频数据属于哪条流,即区分是推流、拉流流名 + @param inData SDK 回调给 App 的音频数据, 推流时是用于加密的音频数据,拉流时是用于解密的音频数据 + @param inDataLen SDK 回调给 App 的音频数据的长度(单位:byte) + @param outData App 将加密(推流)或者解密(拉流)后的音频数据回传给 SDK + @param outDataLen App 实际回传给 SDK 的音频数据大小(单位:byte) + @param maxOutBufLen App 回传数据的缓冲区的最大长度(单位:byte),即 inDataLen < maxOutBufLen + @see +enableAudioEncryptDecrypt: + @see -setAudioEncryptDecryptDelegage: + **/ - (void)onAudioEncryptDecrypt:(NSString *)streamID inData:(const unsigned char *)pInData inDataLen:(int)inDataLen outData:(unsigned char *)pOutData outDataLen:(int *)pOutDataLen maxOutBufLen:(int)maxOutBufLen; @end - +/** + 提供音频加解密功能 + */ @interface ZegoAudioEncryptDecrypt : NSObject +/** + 设置音频加解密代理对象 + * 注意: + * 1.开启音频加解密功能后,必须设置音频加解密代理才能接收到音频数据。 + * 2.成功推流后能收到音频加密回调,成功拉流后能收到音频解密回调。 + + @param delegate 音频加密、解密回调,详细请查看 ZegoAudioEncryptDecryptDelegate 协议 + */ - (void)setAudioEncryptDecryptDelegage:(id)delegate; - +/** + 开/关音频加密、解密功能 + + * 业务方需要防止其付费的音视频产品被免费传播,或者保护版权的问题可以开启此功能。 + * 推流时将编码后的音频数据加密,再发送到云端;拉流时将加密的音频数据解密,再进行解码、渲染。 + * 注意: + * 1.必须在 init SDK 之前调用。 + * 2.开启音频加解密功能后,需要设置音频加解密代理(-setAudioEncryptDecryptDelegage:)才能收到 -onAudioEncryptDecrypt:inData:inDataLen:outData:outDataLen:maxOutBufLen: 音频加解密回调。 + + @param enable:开启,false 关闭 + */ + (void)enableAudioEncryptDecrypt:(BOOL)enable; @end diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-audio-frame-oc.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-audio-frame-oc.h index 87e57a37..8b24156a 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-audio-frame-oc.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-audio-frame-oc.h @@ -5,41 +5,100 @@ #import - +/** 音频帧类型 */ typedef enum ZegoAPIAudioFrameType { - kZegoAPIAudioFrameTypePCM = 0x1001, - kZegoAPIAudioFrameTypeAACStream = 0x1003, + kZegoAPIAudioFrameTypePCM = 0x1001, /** PCM 数据 */ + kZegoAPIAudioFrameTypeAACStream = 0x1003, /** AAC 编码数据 */ } ZegoAPIAudioFrameType; - +/** + 音频帧结构 + */ @interface ZegoAPIAudioFrame : NSObject +/** + 设置采集的采样率 + @param sampleRate 采样率,PCM 和 AAC 帧的可设置的值为 [8000,16000,22050,24000,32000,44100,48000] + @param channels 通道数,支持 1(单声道) 或 2(立体声) + @return 详见 enum ZegoAPIErrorCode + */ - (int)setSampleRate:(int)sampleRate channels:(int)channels; - +/** + 获取采样率 + + @param sampleRate 采样率 + @param channels 通道数 + @return 详见 enum ZegoAPIErrorCode + */ - (int)getSampleRate:(int*)sampleRate channels:(int*)channels; +/** + 设置采集到的数据和其采样数 + * 注意:仅支持 16 比特量化深度 + @param data 采集到的数据,注意:音频数据传给 SDK 后,需要由调用方管理其生命周期。 + @param samples 采样数,若是 PCM 帧,此值是此帧包含的 PCM 采样数;若是 AAC 帧,此值是 AAC 编码一帧所需要的采样数,可设置的值为[480,512,1024,1960,2048] + @return 详见 enum ZegoAPIErrorCode + */ - (int)setCapturedData:(unsigned char*)data samples:(int)samples; +/** + 设置渲染数据缓存地址和指定需要的采样数 + * 注意:仅支持 16 比特量化深度 + @param data 渲染数据缓存地址,注意:缓存地址传给 SDK 后,需要由调用方管理其生命周期。 + @param samples 采样数,若是 PCM 帧,此值是此帧包含的 PCM 采样数;若是 AAC 帧,此值是 AAC 编码一帧所需要的采样数,可设置的值为[480,512,1024,1960,2048] + @return 详见 enum ZegoAPIErrorCode + */ - (int)setRenderBuffer:(unsigned char*)buffer samples:(int)samples; - +/** + 获取渲染数据和其采样数 + + * 注意:仅支持 16 比特量化深度 + @param data 渲染的数据 + @param samples 采样数 + @return 详见 enum ZegoAPIErrorCode + */ - (int)getRenderData:(unsigned char**)data samples:(int*)samples; +/** + 设置帧数据类型 + @param type 帧数据类型,详见 enum ZegoAPIAudioFrameType,默认是 kZegoAudioFrameTypePCM。 + @return 详见 enum ZegoAPIErrorCode + */ - (int)setFrameType:(ZegoAPIAudioFrameType)type; - +/** + 获取帧数据类型 + + @param type 帧数据类型,详见 enum ZegoAPIAudioFrameType + @return 详见 enum ZegoAPIErrorCode + */ - (int)getFrameType:(ZegoAPIAudioFrameType*)type; +/** + 设置 AAC 编码数据属性 + @param timestamp 编码时间戳,如果数据中只有 AAC 配置信息(specialConfig),填 0 + @param dataLength 总数据长度,注意 dataLength = AAC 编码结果长度 + specialConfigLength + @param specialConfigLength AAC 配置信息长度 + @return 详见 enum ZegoAPIErrorCode + */ - (int)setAacProperties:(double)timestamp dataLength:(int)dataLength specialConfigLength:(int)specialConfigLength; - +/** + 获取 AAC 编码数据属性 + + @param timestamp 编码时间戳 + @param dataLength 总数据长度,注意 dataLength = AAC 编码结果长度 + specialConfigLength + @param specialConfigLength AAC 配置信息长度 + @return 详见 enum ZegoAPIErrorCode + */ - (int)getAacProperties:(double*)timestamp dataLength:(int*)dataLength specialConfigLength:(int*)specialConfigLength; @end diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-audio-processing-oc.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-audio-processing-oc.h index 63ba367d..e83598c1 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-audio-processing-oc.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-audio-processing-oc.h @@ -5,7 +5,7 @@ #import "zego-api-defines-oc.h" - +/** 音频混响模式 */ typedef NS_ENUM(NSUInteger, ZegoAPIAudioReverbMode) { ZEGOAPI_AUDIO_REVERB_MODE_SOFT_ROOM = 0, @@ -14,53 +14,92 @@ typedef NS_ENUM(NSUInteger, ZegoAPIAudioReverbMode) ZEGOAPI_AUDIO_REVERB_MODE_LARGE_AUDITORIUM = 3, }; - +/** 无变声音效 值: 0.0 */ ZEGO_EXTERN float const ZEGOAPI_VOICE_CHANGER_NONE; - +/** 女声变男声 值: -3.0*/ ZEGO_EXTERN float const ZEGOAPI_VOICE_CHANGER_WOMEN_TO_MEN; - +/** 男声变女声 值: 4.0*/ ZEGO_EXTERN float const ZEGOAPI_VOICE_CHANGER_MEN_TO_WOMEN; - +/** 女声变童声 值: 6.0*/ ZEGO_EXTERN float const ZEGOAPI_VOICE_CHANGER_WOMEN_TO_CHILD; - +/** 男声变童声 值: 8.0*/ ZEGO_EXTERN float const ZEGOAPI_VOICE_CHANGER_MEN_TO_CHILD; - +/** + 音频混响参数 + */ typedef struct ZegoAudioReverbParam { - + /** 房间大小,取值范围[0.0, 1.0],用于控制产生混响"房间"的大小,房间越大,混响越强 */ float roomSize; - + /** 余响,取值范围[0.0, 0.5],用于控制混响的拖尾长度 */ float reverberance; - + /** 混响阻尼, 取值范围[0.0, 2.0],控制混响的衰减程度,阻尼越大,衰减越大 */ float damping; - + /** 干湿比,取值范围 >= 0.0。 控制混响与直达声和早期反射声之间的比例,干(dry)的部分默认定为1,当干湿比设为较小时,湿(wet)的比例较大,此时混响较强 */ float dryWetRatio; } ZegoAudioReverbParam; @interface ZegoAudioProcessing : NSObject - +/** + 设置虚拟立体声 + + @param enable true 开启,false 关闭 + @param angle 虚拟立体声中声源的角度,范围为0~180,90为正前方,0和180分别对应最右边和最左边 + @return true 成功,false 失败 + @discussion 必须在初始化 SDK 后调用,并且需要设置双声道(参考 setAudioChannelCount), + 推流成功后动态设置不同的 angle 都会生效 + */ + (bool)enableVirtualStereo:(bool)enable angle:(int)angle; - +/** + 设置音频混响 + + @param enable true 开启,false 关闭 + @param mode 混响模式,参考 ZegoAPIAudioReverbMode + @return true 成功,false 失败 + @discussion 必须在初始化 SDK 后调用,推流成功后动态设置不同的 mode 都会生效 + */ + (bool)enableReverb:(bool)enable mode:(ZegoAPIAudioReverbMode)mode; +/** + 设置音频混响参数 + @param roomSize 房间大小,取值范围 0.0 ~ 1.0。 值越大说明混响时间越长,产生的混响拖尾效应越大 + @param dryWetRatio 干湿比,取值范围 >= 0.0。 干湿比的值越小,wet的值越大,产生的混响效果越大 + @return true 成功,false 失败 + @discussion 任意一个参数设置为0.0时,混响关闭 + @discussion 必须在初始化 SDK 后调用,推流成功后动态设置不同的 mode 都会生效 + */ + (bool)setReverbParam:(float)roomSize dryWetRatio:(float)dryWetRatio; +/** + 设置音频混响参数 + @param param 混响参数,各个参数含义参考 ZegoAudioReverbParam 的定义 + @return true 成功,false 失败 + @discussion 必须在初始化 SDK 后调用,推流成功后动态设置不同的 mode 都会生效 + */ + (bool)setReverbParam:(ZegoAudioReverbParam)param; - +/** + 设置变声器参数 + + @param param 变声器参数 + @return true 成功,false 失败 + @discussion 必须在初始化 SDK 后调用 + @discussion 变声音效只针对采集的声音有效 + @discussion 取值[-8.0, 8.0],几种典型的变声音效(男变女,女变男等)定义见上文 + */ + (bool)setVoiceChangerParam:(float)param; @end -#endif +#endif /* zego_api_audio_processing_oc_h */ diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-camera-oc.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-camera-oc.h index ffca79c4..1f90757b 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-camera-oc.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-camera-oc.h @@ -14,22 +14,64 @@ @interface ZegoCamera : NSObject - +/** + 设置设备坐标中的曝光参考点 + + @warning Deprecated 请使用 [setCamExposurePointInPreview:channelIndex:] 代替 + + @param point 坐标点的 x 和 y 的取值范围均为 [0.0, 1.0]. 坐标是对应于设备的归一化的坐标, 左上角坐标为 (0.0, 0.0),右下角坐标为(1.0, 1.0) + @param index 推流通道 + @attention 必须在初始化 SDK 后调用 + */ + (BOOL)setCamExposurePoint:(CGPoint)point channelIndex:(ZegoAPIPublishChannelIndex)index; - +/** + 设置预览视图中的对焦点 + + @param point 坐标点的 x 和 y 的取值范围均为 [0.0, 1.0]. 坐标是对应于视图的归一化的坐标,左上角是(0.0, 0.0), 右下角是 (1.0, 1.0) + @param index 推流通道 + @return true 成功,false 失败 + @attention 每次摄像头重新启动采集,设置都会失效,需要重新设置. + @attention 如果要使用对焦功能最好关闭人脸识别,目前 iOS 是默认开启的, 通过 setConfig 接口设置 "camera_detect_face=false" 关闭. + */ + (BOOL)setCamFocusPointInPreview:(CGPoint)point channelIndex:(ZegoAPIPublishChannelIndex)index; - +/** + 设置预览视图中的曝光参考点 + + @param point 坐标点的 x 和 y 的取值范围均为 [0.0, 1.0]. 坐标是对应于视图的归一化的坐标,左上角是(0.0, 0.0), 右下角是 (1.0, 1.0) + @param index 推流通道 + @return true 成功,false 失败 + @attention 每次摄像头重新启动采集,设置都会失效,需要重新设置. + */ + (BOOL)setCamExposurePointInPreview:(CGPoint)point channelIndex:(ZegoAPIPublishChannelIndex)index; - +/** + 设置摄像头变焦倍数 + + @param zoomFactor 变焦倍数,最小值为1.0,最大值不能超过 getCamMaxZoomFactor: 的返回值 + @param index 推流通道 + @return true 成功,false 失败 + @attention 每次摄像头重新启动采集,设置都会失效,需要重新设置. + */ + (BOOL)setCamZoomFactor:(float)zoomFactor channelIndex:(ZegoAPIPublishChannelIndex)index; - +/** + 获取摄像头最大变焦倍数 + + @param index 推流通道 + @return 返回最大变焦倍数,1.0为不支持变焦 + */ + (float)getCamMaxZoomFactor:(ZegoAPIPublishChannelIndex)index; - +/** + 设置曝光补偿度 + + @param value 曝光度,取值范围为[-1,1], -1变黑, 1变亮 + @param index 推流通道 + @return true 成功,false 失败 + @discussion 必须在初始化 SDK 后调用 + */ + (BOOL)setCamExposureCompensation:(float)value channelIndex:(ZegoAPIPublishChannelIndex)index; @end diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-defines-oc.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-defines-oc.h index 3c4760d3..d29ea57f 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-defines-oc.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-defines-oc.h @@ -17,321 +17,408 @@ #define ZEGO_EXTERN extern #endif - +/** 流ID,值为 NSString */ ZEGO_EXTERN NSString *const kZegoStreamIDKey; - +/** 混流ID,值为 NSString */ ZEGO_EXTERN NSString *const kZegoMixStreamIDKey; - - +/** 流信息列表项 */ +/** rtmp 播放 url 列表,值为 */ ZEGO_EXTERN NSString *const kZegoRtmpUrlListKey; - +/** hls 播放 url 列表,值为 */ ZEGO_EXTERN NSString *const kZegoHlsUrlListKey; - +/** flv 播放 url 列表,值为 */ ZEGO_EXTERN NSString *const kZegoFlvUrlListKey; - - +/** 设备项 */ +/** 摄像头设备 */ ZEGO_EXTERN NSString *const kZegoDeviceCameraName; - +/** 麦克风设备 */ ZEGO_EXTERN NSString *const kZegoDeviceMicrophoneName; - +/** 音频设备*/ ZEGO_EXTERN NSString *const kZegoDeviceAudioName; - +/** 混流输出格式,值为 NSNumber,可选 {0, 1} */ ZEGO_EXTERN NSString *const kMixStreamAudioOutputFormat; - +/** 自定义转推 RTMP 地址 */ ZEGO_EXTERN NSString *const kPublishCustomTarget; - +/** 单主播模式下,自定义推流 RTMP 地址 */ ZEGO_EXTERN NSString *const kPublishCDNTarget; - +/** AudioSession相关配置信息的key, 值为 NSString */ ZEGO_EXTERN NSString *const kZegoConfigKeepAudioSesionActive; typedef unsigned int uint32; - +/** 配置返回错误类型 */ typedef enum { - + /** 分辨率 */ FLAG_RESOLUTION = 0x1, - + /** 帧率 */ FLAG_FPS = 0x2, - + /** 比特率 */ FLAG_BITRATE = 0x4 } SetConfigReturnType; - +/** 本地预览视频视图的模式 */ typedef enum { - + /** 等比缩放,可能有黑边 */ ZegoVideoViewModeScaleAspectFit = 0, - + /** 等比缩放填充整View,可能有部分被裁减 */ ZegoVideoViewModeScaleAspectFill = 1, - + /** 填充整个View */ ZegoVideoViewModeScaleToFill = 2, } ZegoVideoViewMode; typedef enum { - + /** 预览启用镜像,推流不启用镜像 */ ZegoVideoMirrorModePreviewMirrorPublishNoMirror = 0, - + /** 预览启用镜像,推流启用镜像 */ ZegoVideoMirrorModePreviewCaptureBothMirror = 1, - + /** 预览不启用镜像,推流不启用镜像 */ ZegoVideoMirrorModePreviewCaptureBothNoMirror = 2, - + /** 预览不启用镜像,推流启用镜像 */ ZegoVideoMirrorModePreviewNoMirrorPublishMirror = 3 }ZegoVideoMirrorMode; - +/** 采集旋转角度,逆时针旋转 */ typedef enum { - + /** 旋转 0 度 */ CAPTURE_ROTATE_0 = 0, - + /** 旋转 90 度 */ CAPTURE_ROTATE_90 = 90, - + /** 旋转 180 度 */ CAPTURE_ROTATE_180 = 180, - + /** 旋转 270 度 */ CAPTURE_ROTATE_270 = 270 } CAPTURE_ROTATE; - +/** 视频编解码器. */ typedef enum { - + /** 默认编码, 不支持分层编码 */ VIDEO_CODEC_DEFAULT = 0, - + /** 分层编码 要达到和VIDEO_CODEC_DEFAULT相同的编码质量,建议码率和VIDEO_CODEC_DEFAULT相比增加20%左右 */ VIDEO_CODEC_MULTILAYER = 1, - + /** VP8编码 */ VIDEO_CODEC_VP8 = 2, } ZegoVideoCodecAvc; - +/** 视频分层类型 */ typedef enum { - + /**< 根据网络状态选择图层 */ VideoStreamLayer_Auto = -1, - + /**< 指定拉基本层(小分辨率) */ VideoStreamLayer_BaseLayer = 0, - + /**< 指定拉扩展层(大分辨率) */ VideoStreamLayer_ExtendLayer = 1 } VideoStreamLayer; - +/** + MediaInfo类型 + */ typedef enum { - + /** + ZEGO 定义的打包类型,跟视频编码器产生的信息不存兼容性问题。 +
但是在其它 CDN 上转码视频的时候,其它 CDN 基本上不支持提取这种方式打包的信息数据,转码完成后再从其它 CDN 拉流时,可能就丢失了这些次媒体信息。 +
ZEGO CDN 转码支持提取此种方式打包的信息数据。 + */ SideInfoZegoDefined = 0, - + /** + 采用 H264 的 SEI (nalu type = 6,payload type = 243) 类型打包,此类型是 SEI 标准未规定的类型,跟视频编码器或者视频文件中的 SEI 不存在冲突性,用户不需要根据 SEI 的内容做过滤。 +
若需要发送 SEI 推荐采用此种类型。 + */ SeiZegoDefined = 1, - + /** + 采用 H264 的 SEI (nalu type = 6,payload type = 5) 类型打包,H264 标准对于此类型有规定的格式:startcode + nalu type(6) + payload type(5) + len + pay load(uuid + context)+ trailing bits; + +
因为视频编码器自身会产生 payload type 为 5 的 SEI,或者使用视频文件推流时,视频文件中也可能存在这样的 SEI,所以使用此类型时,用户需要把 uuid + context 当作一段 buffer 塞给次媒体的发送接口; + +
为了区别视频编码器自身产生的 SEI,所以对 uuid 有格式要求,即 uuid 16字节的前四个字节固定为 'Z' 'E' 'G' 'O' 四个字符(全部大写),后面12字节用户任意填写; + +
在 SDK 接收端,对于 payload type = 5的 SEI 会根据'ZEGO'字样做过滤,识别出符合要求的 SEI 抛给用户,避免用户收到编码器自身产生的 SEI。 + */ SeiUserUnregisted = 2 }MediaInfoType; - +/** + SEI发送类型 + */ typedef enum { - + /** + SEI 单帧发送,此种发送方式下,ffmpeg 解码会产生类似“此帧无视频”的警告,可能会导致一些 CDN 兼容性问题,例如转码失败等。 + */ SeiSendSingleFrame = 0, - + /** + SEI 随视频帧(I, B, P)发送,推荐采用此类型。 + */ SeiSendInVideoFrame = 1 } SeiSendType; - +/** 远程视图序号 */ typedef enum { - + /** 第一个远程视图 */ RemoteViewIndex_First = 0, - + /** 第二个远程视图 */ RemoteViewIndex_Second = 1, - + /** 第三个远程视图 */ RemoteViewIndex_Third = 2 } RemoteViewIndex; - +/** 滤镜特性 */ typedef enum : NSUInteger { - + /** 不使用滤镜 */ ZEGO_FILTER_NONE = 0, - + /** 简洁 */ ZEGO_FILTER_LOMO = 1, - + /** 黑白 */ ZEGO_FILTER_BLACKWHITE = 2, - + /** 老化 */ ZEGO_FILTER_OLDSTYLE = 3, - + /** 哥特 */ ZEGO_FILTER_GOTHIC = 4, - + /** 锐色 */ ZEGO_FILTER_SHARPCOLOR = 5, - + /** 淡雅 */ ZEGO_FILTER_FADE = 6, - + /** 酒红 */ ZEGO_FILTER_WINE = 7, - + /** 青柠 */ ZEGO_FILTER_LIME = 8, - + /** 浪漫 */ ZEGO_FILTER_ROMANTIC = 9, - + /** 光晕 */ ZEGO_FILTER_HALO = 10, - + /** 蓝调 */ ZEGO_FILTER_BLUE = 11, - + /** 梦幻 */ ZEGO_FILTER_ILLUSION = 12, - + /** 夜色 */ ZEGO_FILTER_DARK = 13 } ZegoFilter; - +/** 美颜特性 */ typedef enum : NSUInteger { - + /** 无美颜 */ ZEGO_BEAUTIFY_NONE = 0, - + /** 磨皮 */ ZEGO_BEAUTIFY_POLISH = 1, - + /** 全屏美白,一般与磨皮结合使用:ZEGO_BEAUTIFY_POLISH | ZEGO_BEAUTIFY_WHITEN */ ZEGO_BEAUTIFY_WHITEN = 1 << 1, - + /** 皮肤美白 */ ZEGO_BEAUTIFY_SKINWHITEN = 1 << 2, - + /** 锐化 */ ZEGO_BEAUTIFY_SHARPEN = 1 << 3 } ZegoBeautifyFeature; - +/** + 混流图层信息 + */ @interface ZegoMixStreamInfo : NSObject - +/** + 要混流的单流ID + */ @property (copy) NSString *streamID; - +/** + 混流画布左上角坐标的第二个值,左上角坐标为 (left, top) + */ @property int top; - +/** + 混流画布左上角坐标的第一个值,左上角坐标为 (left, top) + */ @property int left; - +/** + 混流画布右下角坐标的第二个值,右下角坐标为 (right, bottom) + */ @property int bottom; - +/** + 混流画布右下角坐标的第一个值,右下角坐标为 (right, bottom) + */ @property int right; - +/** + 音浪ID,用于标识用户(比如拉取混流方可根据此标识明确到混流中的单条流是主播/观众/副主播),soundLevelID 必须大于等于 0 且小于等于 4294967295L(即2^32-1) + */ @property unsigned int soundLevelID; - +/** + 推流内容控制, 0 表示输出的混流包含音视频,1 表示只包含音频,2 表示只包含视频;默认值为 0。 + */ @property int contentControl; - +/** + * 原点在左上角,top/bottom/left/right 定义如下: + * + * (left, top)----------------------- + * | | + * | | + * | | + * | | + * -------------------(right, bottom) + */ @end - +/** + 混流配置 + */ @interface ZegoCompleteMixStreamConfig : NSObject - +/** + outputIsUrl 为 YES时,则此值为 Url;否则为流名。 + */ @property (copy) NSString *outputStream; - +/** + 输出流是否为 URL + */ @property BOOL outputIsUrl; - +/** + 混流输出视频帧率,值范围:[1,30],根据网络情况设定该值,帧率越高画面越流畅。 + */ @property int outputFps; - +/** + 混流输出视频码率,输出码率控制模式参数设置为 CBR恒定码率 时此设置值生效。 +
视频码率值范围:(0M,10M],此参数单位是 bps,1M = 1 * 1000 * 1000 bps + */ @property int outputBitrate; - +/** + 混流输出音频码率,码率范围值是[10000, 192000]。 +
若音频编码格式采用 默认音频编码--即 outputAudioConfig 参数填 0,采用 1/2声道时,对应的建议码率值是 48k/64k,可根据需要在此基础上调整。 +
若音频编码格式采用 可选音频编码--即 outputAudioConfig 参数填 1,采用 1/2声道时,对应的建议码率值是 80k/128k,可根据需要在此基础上调整。 + */ @property int outputAudioBitrate; - +/** + 混流输出视频分辨率,不确定用什么分辨率时可采用16:9的规格设置。 +
此参数中的宽必须大于等于 输入流列表中所有输入流中最大的分辨率宽,即right布局值;此参数中的高必须大于等于 输入流列表中所有输入流中最大的分辨率高,即bottom布局值;且输入流的布局位置不能超出此参数规定的范围。 + */ @property CGSize outputResolution; - +/** + 混流输出音频编码格式,可选值为 0--默认编码,1--可选编码;默认值为 0。 +
0--默认编码:在低码率下,编码后的音质要明显好于 1--可选编码,在码率较大后,达到128kbps及以上,两种编码后的音质近乎相同。 +
1--可选编码:优点在于低复杂性,能兼容更多的设备播放;但是目前经过 0--默认编码 编码后的音频不能正常播放的情况很少。 + */ @property int outputAudioConfig; - +/** + 混流输入流列表,SDK 根据输入流列表中的流进行混流。 + */ @property (strong) NSMutableArray *inputStreamList; - +/** + 用户自定义数据 + 注意:1. userData自定义的数据通过媒体次要信息的 -onRecvMediaSideInfo:ofStream: 接口回调出来。 + */ @property NSData* userData; - +/** + 混流声道数,1-单声道,2-双声道,默认为单声道。 + */ @property int channels; - +/** + 混流背景颜色,前三个字节为 RGB,即 0xRRGGBBxx。 +
例如:选取RGB为 #87CEFA 作为背景色,此处写为 0x87CEFA00。 + */ @property int outputBackgroundColor; - +/** + 混流背景图,支持预设图片,如 (preset-id://xxx) +
此值由 ZEGO 提供,开发者先将背景图提供给 ZEGO,ZEGO 设置后再反馈背景图片的设置参数。 + */ @property (copy) NSString *outputBackgroundImage; - +/** + 是否开启音浪。YES:开启,NO:关闭;默认值是NO。 + */ @property BOOL withSoundLevel; - +/** + 扩展信息,备用。 + */ @property int extra; @end - +/** 视频编码码率控制策略 */ typedef enum { - + /** 恒定码率 */ ZEGOAPI_RC_ABR = 0, - + /** 恒定码率 */ ZEGOAPI_RC_CBR, - + /** 恒定质量,仅用于研究目的 */ ZEGOAPI_RC_VBR, - + /** 恒定质量 */ ZEGOAPI_RC_CRF, } ZegoAPIVideoEncoderRateControlStrategy; - +/** 发布直播的模式 */ enum ZegoAPIPublishFlag { - + /** 连麦模式,直播流会推到即构服务器,然后转推到CDN,默认连麦者之间从即构服务器拉流,观众从 CDN 拉流 */ ZEGOAPI_JOIN_PUBLISH = 0, ZEGO_JOIN_PUBLISH = ZEGOAPI_JOIN_PUBLISH, - + /** 混流模式,同连麦模式,有混流需求时使用 */ ZEGOAPI_MIX_STREAM = 1 << 1, ZEGO_MIX_STREAM = ZEGOAPI_MIX_STREAM, - + /** 单主播模式,直播流会直接推到CDN,不经过即构服务器 */ ZEGOAPI_SINGLE_ANCHOR = 1 << 2, ZEGO_SINGLE_ANCHOR = ZEGOAPI_SINGLE_ANCHOR, }; typedef enum ZegoAPIPublishFlag ZegoApiPublishFlag; - +/** 设备模块类型 */ enum ZegoAPIModuleType { - + /** 音频采集播放设备 */ ZEGOAPI_MODULE_AUDIO = 0x4 | 0x8, }; - +/** 推流质量 */ typedef struct { - + /** 视频采集帧率(fps) */ double cfps; - + /** 视频编码帧率(fps) */ double vencFps; - + /** 视频网络发送帧率(fps) */ double fps; - + /** 视频码率(kbps) */ double kbps; - + /** 音频采集帧率(fps) */ double acapFps; - + /** 音频网络发送帧率(fps) */ double afps; - + /** 音频码率(kbps) */ double akbps; - + /** 本机到即构服务器的往返时延(ms) */ int rtt; - + /** 发送丢包(0~255),数值越大丢包越高,丢包率 = pktLostRate/255 */ int pktLostRate; - + /** 本机综合网络质量(0~3),分别对应优、良、中、差 */ int quality; - + /** 是否开启硬件编码 */ bool isHardwareVenc; - + /** 视频宽度 */ int width; - + /** 视频高度 */ int height; - + /** 已发送的总字节数,包括音频、视频及媒体次要信息等 */ double totalBytes; - + /** 已发送的音频字节数 */ double audioBytes; - + /** 已发送的视频字节数 */ double videoBytes; - + /** 当前 APP 的 CPU 使用率 */ double cpuAppUsage; - + /** 当前系统的 CPU 使用率 */ double cpuTotalUsage; - + /** 当前 APP 的内存使用率 */ double memoryAppUsage; - + /** 当前系统的内存使用率 */ double memoryTotalUsage; - + /** 当前 APP 的内存使用量,单位 MB */ double memoryAppUsed; } ZegoAPIPublishQuality; @@ -339,406 +426,416 @@ typedef struct typedef ZegoAPIPublishQuality ZegoApiPublishQuality; - +/** 拉流质量 */ typedef struct { - + /** 视频帧率(网络接收) */ double fps; - + /** 视频帧率(dejitter) */ double vdjFps; - + /** 视频帧率(解码) */ double vdecFps; - + /** 视频帧率(渲染) */ double vrndFps; - + /** 视频码率(kb/s) */ double kbps; - + /** 音频帧率(网络接收) */ double afps; - + /** 音频帧率(dejitter) */ double adjFps; - + /** 音频帧率(解码) */ double adecFps; - + /** 音频帧率(渲染) */ double arndFps; - + /** 音频码率(kb/s) */ double akbps; - + /** 音频卡顿次数 */ double audioBreakRate; - + /** 视频卡顿次数 */ double videoBreakRate; - + /** 延时(ms) */ int rtt; - + /** 丢包率(0~255) */ int pktLostRate; - + /** 端到端延迟 */ int peerToPeerDelay; - + /** 端到端丢包率(0~255) */ int peerToPeerPktLostRate; - + /** 直播质量(0~3) */ int quality; - + /** 语音延时(ms) */ int delay; - + /** 是否硬解 */ bool isHardwareVdec; - + /** 视频宽度 */ int width; - + /** 视频高度 */ int height; - + /** 已接收的总字节数,包括音频、视频及媒体次要信息等 */ double totalBytes; - + /** 已接收的音频字节数 */ double audioBytes; - + /** 已接收的视频字节数 */ double videoBytes; - + /** 当前 APP 的 CPU 使用率 */ double cpuAppUsage; - + /** 当前系统的 CPU 使用率 */ double cpuTotalUsage; - + /** 当前 APP 的内存使用率 */ double memoryAppUsage; - + /** 当前系统的内存使用率 */ double memoryTotalUsage; - + /** 当前 APP 的内存使用量,单位 MB */ double memoryAppUsed; } ZegoAPIPlayQuality; typedef ZegoAPIPlayQuality ZegoApiPlayQuality; - +/** 延迟模式 */ typedef enum : NSUInteger { - + /** 普通延迟模式 */ ZEGOAPI_LATENCY_MODE_NORMAL = 0, - + /** 低延迟模式,无法用于 RTMP 流 */ ZEGOAPI_LATENCY_MODE_LOW, - + /** 普通延迟模式,最高码率可达192K */ ZEGOAPI_LATENCY_MODE_NORMAL2, - + /** 低延迟模式,无法用于 RTMP 流。相对于 ZEGO_LATENCY_MODE_LOW 而言,CPU 开销稍低 */ ZEGOAPI_LATENCY_MODE_LOW2, - + /** 低延迟模式,无法用于 RTMP 流。支持WebRTC必须使用此模式 */ ZEGOAPI_LATENCY_MODE_LOW3, - + /**< 普通延迟模式,使用此模式前先咨询即构技术支持 */ ZEGOAPI_LATENCY_MODE_NORMAL3, } ZegoAPILatencyMode; - +/** 流量控制属性 */ typedef enum : NSUInteger { - + /**< 基本流量控制,只有码率控制,不带自适应帧率和分辨率 */ ZEGOAPI_TRAFFIC_CONTROL_BASIC = 0, - + /**< 自适应帧率 */ ZEGOAPI_TRAFFIC_CONTROL_ADAPTIVE_FPS = 1, - + /** 自适应分辨率*/ ZEGOAPI_TRAFFIC_CONTROL_ADAPTIVE_RESOLUTION = 1 << 1, - + /** 音频流量控制 */ ZEGOAPI_TRAFFIC_CONTROL_AUDIO_BITRATE = 1 << 2, - + /**< 废弃 */ ZEGOAPI_TRAFFIC_NONE = ZEGOAPI_TRAFFIC_CONTROL_BASIC, ZEGOAPI_TRAFFIC_FPS = ZEGOAPI_TRAFFIC_CONTROL_ADAPTIVE_FPS, ZEGOAPI_TRAFFIC_RESOLUTION = ZEGOAPI_TRAFFIC_CONTROL_ADAPTIVE_RESOLUTION, } ZegoAPITrafficControlProperty; - +/** 开启流量控制视频码率低于设置的视频最低码率时 SDK 推流策略 */ typedef enum : NSUInteger { - + /** 低于设置的最低码率时,停止视频发送,默认 */ ZEGOAPI_TRAFFIC_CONTROL_MIN_VIDEO_BITRATE_NO_VIDEO = 0, - + /** 低于设置的最低码率时,视频以极低的帧率发送 (不超过2fps) */ ZEGOAPI_TRAFFIC_CONTROL_MIN_VIDEO_BITRATE_ULTRA_LOW_FPS } ZegoAPITrafficControlMinVideoBitrateMode; - +/** 音频设备模式 */ typedef enum : NSUInteger { - + /** 通话模式, 开启系统回声消除 */ ZEGOAPI_AUDIO_DEVICE_MODE_COMMUNICATION = 1, - + /** 普通模式, 关闭系统回声消除 */ ZEGOAPI_AUDIO_DEVICE_MODE_GENERAL = 2, - + /** 自动模式, 根据场景选择是否开启系统回声消除 */ ZEGOAPI_AUDIO_DEVICE_MODE_AUTO = 3, - + /** 通话模式, 开启系统回声消除,与 ZEGOAPI_AUDIO_DEVICE_MODE_COMMUNICATION 相比,该模式会始终占用麦克风设备 */ ZEGOAPI_AUDIO_DEVICE_MODE_COMMUNICATION2 = 4, - + /** 通话模式, 开启系统回声消除,与 ZEGOAPI_AUDIO_DEVICE_MODE_COMMUNICATION 相比,该模式会下麦后释放麦克风,切回媒体音量 */ ZEGOAPI_AUDIO_DEVICE_MODE_COMMUNICATION3 = 5, } ZegoAPIAudioDeviceMode; - +/** 音频录制时,指定音源类型 */ enum ZegoAPIAudioRecordMask { - + /** 关闭音频录制 */ ZEGOAPI_AUDIO_RECORD_NONE = 0x0, - + /** 打开采集录制,即录制推流端音频 */ ZEGOAPI_AUDIO_RECORD_CAP = 0x01, - + /** 打开渲染录制,即录制拉流端音频 */ ZEGOAPI_AUDIO_RECORD_RENDER = 0x02, - + /** 打开采集和渲染混音结果录制,即录制推流、拉流端混音音频 */ ZEGOAPI_AUDIO_RECORD_MIX = 0x04 }; - +/** 音频录制配置信息 */ typedef struct { - + /** 启用音频源选择,详细请参考 ZegoAPIAudioRecordMask */ unsigned int mask; - + /** 采样率 支持 8000, 16000, 22050, 24000, 32000, 44100, 48000 */ int sampleRate; - + /** 声道数 支持1(单声道) 或 2(双声道) */ int channels; } ZegoAPIAudioRecordConfig; - +/** 推流通道 */ typedef enum : NSUInteger { - + /** 主推流通道,默认*/ ZEGOAPI_CHN_MAIN = 0, - + /** 第二路推流通道, 无法推出声音*/ ZEGOAPI_CHN_AUX, } ZegoAPIPublishChannelIndex; - +/** 音频设备类型 */ typedef enum : NSUInteger { - + /**< 输入设备 */ ZEGOAPI_AUDIO_DEVICE_INPUT = 0, - + /**< 输出设备 */ ZEGOAPI_AUDIO_DEVICE_OUTPUT = 1, } ZegoAPIAudioDeviceType; - +/** 设备状态 */ typedef enum : NSUInteger { - + /**< 添加设备 */ ZEGOAPI_DEVICE_ADD = 0, - + /**< 删除设备 */ ZEGOAPI_DEVICE_DELETE = 1, } ZegoAPIDeviceState; - +/** 设备状态 */ typedef enum : NSUInteger { - + /**< 设备已打开 */ ZEGOAPI_DEVICE_OPEN = 0, - + /**< 设备已关闭 */ ZEGOAPI_DEVICE_CLOSE = 1, } ZegoAPIDeviceStatus; - +/** 音量类型 */ typedef enum : NSUInteger { - + /**< 设备音量 */ ZEGOAPI_VOLUME_ENDPOINT = 0, - + /**< App 音量 */ ZEGOAPI_VOLUME_SIMPLE = 1, } ZegoAPIVolumeType; @interface ZegoAPIDeviceInfo : NSObject - +/** 设备ID */ @property (copy) NSString* deviceId; - +/** 设备名 */ @property (copy) NSString* deviceName; @end @interface ZegoAPIDeviceVideoCapabilityInfo : NSObject - +/** 分辨率高 */ @property int height; - +/** 分辨率宽 */ @property int width; @end - +/** + 多媒体流附加信息 + */ @interface ZegoAPIStreamExtraPlayInfo : NSObject - +/** 流参数 */ @property (copy) NSString* params; - +/** 解密密钥(支持16/24/32字节) */ @property (strong) NSData* decryptKey; - +/** rtmp 地址 */ @property (strong) NSArray* rtmpUrls; - +/** flv 地址 */ @property (strong) NSArray* flvUrls; - +/** 连麦时是否切换服务器 */ @property (assign) BOOL shouldSwitchServer; @end - +/** + 转推CDN状态 + */ typedef enum : NSUInteger { - + /**< 转推停止 */ ZEGOAPI_RELAY_STOP = 0, - + /**< 正在转推 */ ZEGOAPI_RELAY_START = 1, - + /**< 正在重试 */ ZEGOAPI_RELAY_RETRY = 2, } ZegoAPIStreamRelayCDNState; typedef enum : NSUInteger { - + /**< 无 */ ZEGOAPI_RELAY_NONE = 0, - + /**< 服务器错误 */ ZEGOAPI_RELAY_SERVER_ERROR = 8, - + /**< 握手失败 */ ZEGOAPI_RELAY_HAND_SHAKE_FAILED = 9, - + /**< 接入点错误 */ ZEGOAPI_RELAY_ACCESS_POINT_ERROR = 10, - + /**< 创建流失败 */ ZEGOAPI_RELAY_CREATE_STREAM_FAILED = 11, - + /**< BAD NAME */ ZEGOAPI_RELAY_BAD_NAME = 12, - + /**< CDN服务器主动断开 */ ZEGOAPI_RELAY_CDN_SERVER_DISCONNECTED = 13, - + /**< 主动断开 */ ZEGOAPI_RELAY_DISCONNECTED = 14, - + /**< 混流输入流会话关闭, 混流转推CDN时有效 */ ZEGOAPI_MIXSTREAM_ALL_INPUT_STREAM_CLOSED = 1214, - + /**< 混流输入流全部没有数据, 混流转推CDN时有效 */ ZEGOAPI_MIXSTREAM_ALL_INPUT_STREAM_NODATA = 1215, - + /**< 混流服务器内部错误,混流转推CDN时有效 */ ZEGOAPI_MIXSTREAM_SERVER_INTERNAL_ERROR = 1230, } ZegoAPIStreamRelayCDNDetail; - +/** + 转推CDN状态信息 + */ @interface ZegoAPIStreamRelayCDNInfo : NSObject - +/** 转推CDN的rtmp地址 */ @property (copy) NSString *rtmpURL; - +/** 当前状态 */ @property (assign) ZegoAPIStreamRelayCDNState state; - +/** 转推停止或转推重试时的详细原因 */ @property (assign) ZegoAPIStreamRelayCDNDetail detail; - +/** 状态改变时的时间 */ @property (assign) unsigned int stateTime; @end - +/** + ACE 模式 + */ typedef enum : NSUInteger { - + /** 激进模式 */ ZEGOAPI_AEC_MODE_ARRGRESSIVE, - + /** 中等模式 */ ZEGOAPI_AEC_MODE_MEDIUM, - + /** 轻度模式 */ ZEGOAPI_AEC_MODE_SOFT, } ZegoAPIAECMode; - +/** + ANS 模式 + */ typedef enum : NSUInteger { - + /** 轻度模式 */ ZEGOAPI_ANS_MODE_LOW = 0, - + /** 中等模式 */ ZEGOAPI_ANS_MODE_MEDIUM, - + /** 激进模式 */ ZEGOAPI_ANS_MODE_HIGH, } ZegoAPIANSMode; typedef enum : NSInteger { - + /** 一般性错误 */ ZEGOAPI_DEVICE_ERROR_GENERIC = -1, - + /** 无效设备 ID */ ZEGOAPI_DEVICE_ERROR_INVALID_ID = -2, - + /** 没有权限 */ ZEGOAPI_DEVICE_ERROR_NO_AUTHORIZATION = -3, - + /** 采集帧率为0 */ ZEGOAPI_DEVICE_ERROR_ZERO_FPS = -4, - + /** 设备被占用 */ ZEGOAPI_DEVICE_ERROR_IN_USE_BY_OTHER = -5, - + /** 设备未插入 */ ZEGOAPI_DEVICE_ERROR_UNPLUGGED = -6, - + /** 媒体服务无法恢复 */ ZEGOAPI_DEVICE_ERROR_MEDIA_SERVICES_LOST = -8, - + /** 设备被SIRI占用*/ ZEGOAPI_DEVICE_ERROR_IN_USE_BY_SIRI = -9, } ZegoAPIDeviceErrorCode; typedef enum : NSInteger { - + /** 一般性错误 */ ZEGOAPI_DEVICE_ERROR_REASON_GENERIC = -1, - + /** 无效设备 ID */ ZEGOAPI_DEVICE_ERROR_REASON_INVALID_ID = -2, - + /** 没有权限 */ ZEGOAPI_DEVICE_ERROR_REASON_NO_AUTHORIZATION = -3, - + /** 采集帧率为0 */ ZEGOAPI_DEVICE_ERROR_REASON_ZERO_FPS = -4, - + /** 设备被占用 */ ZEGOAPI_DEVICE_ERROR_REASON_IN_USE_BY_OTHER = -5, - + /** 设备未插入 */ ZEGOAPI_DEVICE_ERROR_REASON_UNPLUGGED = -6, - + /** 需要重启系统 */ ZEGOAPI_DEVICE_ERROR_REASON_REBOOT_REQUIRED = -7, - + /** 媒体服务无法恢复 */ ZEGOAPI_DEVICE_ERROR_REASON_MEDIA_SERVICES_LOST = -8, - + /** 设备被SIRI占用 */ ZEGOAPI_DEVICE_ERROR_REASON_IN_USE_BY_SIRI = -9, - + /** 没有错误 */ ZEGOAPI_DEVICE_ERROR_REASON_NONE = 0, - + /** 禁用 */ ZEGOAPI_DEVICE_ERROR_REASON_DISABLED = 2, - + /** 屏蔽采集 */ ZEGOAPI_DEVICE_ERROR_REASON_MUTE = 3, - + /** 中断 */ ZEGOAPI_DEVICE_ERROR_REASON_INTERRUPTION = 4, - + /** 在后台 */ ZEGOAPI_DEVICE_ERROR_REASON_IN_BACKGROUND = 5, - + /** 前台有多个 APP 运行 */ ZEGOAPI_DEVICE_ERROR_REASON_MULTI_FOREGROUND_APP = 6, - + /** 系统压力过大 */ ZEGOAPI_DEVICE_ERROR_REASON_SYSTEM_PRESSURE = 7, }ZegoAPIDeviceErrorReason; - +/** 音频路由类型 */ typedef NS_ENUM(NSInteger, ZegoAPIAudioRoute) { - + /** 扬声器 */ ZEGOAPI_AUDIO_ROUTE_SPEAKER = 0, - + /** 耳机 */ ZEGOAPI_AUDIO_ROUTE_HEADSET, - + /** 蓝牙 */ ZEGOAPI_AUDIO_ROUTE_BLUETOOTH, - + /** 听筒 */ ZEGOAPI_AUDIO_ROUTE_RECEIVER, - + /** USB 音频设备 */ ZEGOAPI_AUDIO_ROUTE_USB_AUDIO }; - +/** 网络类型 */ typedef NS_ENUM(NSInteger, ZegoAPINetType) { - + /** 无网络 */ ZEGOAPI_NT_NONE = 0, - + /** 网线 */ ZEGOAPI_NT_LINE = 1, - + /** WIFI */ ZEGOAPI_NT_WIFI = 2, - + /** 2G */ ZEGOAPI_NT_2G = 3, - + /** 3G */ ZEGOAPI_NT_3G = 4, - + /** 4G */ ZEGOAPI_NT_4G = 5, - + /** 5G */ ZEGOAPI_NT_5G = 6, - + /** 未知类型 */ ZEGOAPI_NT_UNKNOWN = 32 }; -#endif +#endif /* zego_api_defines_oc_h */ diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-error-oc.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-error-oc.h index 63509b52..35cf8e3a 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-error-oc.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-error-oc.h @@ -144,26 +144,26 @@ typedef enum : NSUInteger { kRoomManualKickoutError = 63000002, kRoomSessionErrorKickoutError = 63000003, - - kMixStreamNoneMixConfigError = 80000001, - kMixStreamCouldntConnectError = 81200007, - kMixStreamTimeoutError = 81200028, - kMixStreamSslCaCertError = 81200060, - kMixStreamFailError = 82000001, - kMixStreamInputParamsError = 82000002, - kMixStreamAuthError = 82000003, - kMixStreamNotExistError = 82000150, - kMixStreamStartMixError = 82000151, - kMixStreamStopMixError = 82000152, - kMixStreamInputFormatError = 82000155, - kMixStreamOutputFormatError = 82000156, - kMixStreamNotOpenError = 82000157, - kMixStreamInputExceedError = 82000158, - kMixStreamDispatchError = 82000159, - kMixStreamStopMixOwnerError = 82000160, - kMixStreamWaterMarkParamError = 82000170, - kMixStreamWaterMarkImageError = 82000171, - kMixStreamQpsOverloadError = 82000190, + //混流错误码定义 + kMixStreamNoneMixConfigError = 80000001, //没有混流配置信息 + kMixStreamCouldntConnectError = 81200007, //混流服务连接失败 + kMixStreamTimeoutError = 81200028, //混流服务响应超时 + kMixStreamSslCaCertError = 81200060, //混流服务证书错误 + kMixStreamFailError = 82000001, //混流失败 + kMixStreamInputParamsError = 82000002, //混流请求包解析错误 + kMixStreamAuthError = 82000003, //混流鉴权失败 + kMixStreamNotExistError = 82000150, //混流的输入流不存在 + kMixStreamStartMixError = 82000151, //启动混流失败 + kMixStreamStopMixError = 82000152, //停止混流失败 + kMixStreamInputFormatError = 82000155, //输入分辨率格式错误 + kMixStreamOutputFormatError = 82000156, //输出分辨率格式错误 + kMixStreamNotOpenError = 82000157, //混流没开 + kMixStreamInputExceedError = 82000158, //混流输入流数超限 + kMixStreamDispatchError = 82000159, //混流Dispatch失败 + kMixStreamStopMixOwnerError = 82000160, //非创建者停止混流错误 + kMixStreamWaterMarkParamError = 82000170, //混流水印参数错误 + kMixStreamWaterMarkImageError = 82000171, //混流水印image错误 + kMixStreamQpsOverloadError = 82000190, //混流请求qps超限错误 kMixStreamAgentTimeoutError = 85500001, kMixStreamAgentDroppedError = 85500002, @@ -171,68 +171,173 @@ typedef enum : NSUInteger { @interface ZegoError : NSObject +/** + 是否初始化SDK错误 + @param error 错误码 + @return 是否初始化SDK错误 + */ + (bool)isInitSDKError:(int)error; +/** + 是否未登录错误 + @param error 错误码 + @return 是否未登录错误 + */ + (bool)isNotLoginError:(int)error; +/** + 是否媒体服务器连接失败错误 + @param error 错误码 + @return 是否媒体服务器连接失败错误 + */ + (bool)isMediaServerNetWorkError:(int)error; +/** + 是否逻辑服务器连接失败错误 + @param error 错误码 + @return 是否逻辑服务器连接失败错误 + */ + (bool)isLogicServerNetWrokError:(int)error; +/** + 是否混流的流不存在错误 + @param error 错误码 + @return 是否混流的流不存在错误 + */ + (bool)isMixStreamNotExistError:(int)error; +/** + 是否拉的流不存在错误 + @param error 错误码 + @return 是否拉的流不存在错误 + */ + (bool)isPlayStreamNotExistError:(int)error; - +/** + 是否推流重复流名错误 + + @param error 错误码 + @return 是否推流重复流名错误 + */ + (bool)isPublishBadNameError:(int)error; +/** + 是否禁止推流错误 + @param error 错误码 + @return 是否禁止推流错误 + */ + (bool)isPublishForbidError:(int)error; +/** + 是否停止推流错误 + @param error 错误码 + @return 是否停止推流错误 + */ + (bool)isPublishStopError:(int)error; - +/** + 是否推流Denied错误 + + @param error 错误码 + @return 是否推流Denied错误 + */ + (bool)isPublishDeniedError:(int)error; +/** + 是否禁止拉流错误 + @param error 错误码 + @return 是否禁止拉流错误 + */ + (bool)isPlayForbidError:(int)error; +/** + 是否拉流Denied错误 + @param error 错误码 + @return 是否拉流Denied错误 + */ + (bool)isPlayDeniedError:(int)error; - +/** + 是否DNSResolve错误 + + @param error 错误码 + @return 是否DNSResolve错误 + */ + (bool)isDNSResolveError:(int)error; - +/** + 是否Network不可达错误 + + @param error 错误码 + @return 是否Network不可达错误 + */ + (bool)isNetworkUnreachError:(int)error; +/** + 是否Http协议错误 + @param error 错误码 + @return 是否Http协议错误 + */ + (bool)isHttpProtocolError:(int)error; +/** + 是否超过服务请求频率错误 + @param error 错误码 + @return 是否超过服务请求频率错误 + */ + (bool)isReqFrequencyLimitError:(int)error; +/** + 是否访问LiveRoom服务错误 + @param error 错误码 + @return 是否访问LiveRoom服务错误 + */ + (bool)isLiveRoomError:(int)error; +/** + 是否该账户多点登录被踢出错误 + @param error 错误码 + @return 是否该账户多点登录被踢出错误 + */ + (bool)isMultiLoginError:(int)error; +/** + 是否该账户被手动踢出错误 + @param error 错误码 + @return 是否该账户被手动踢出错误 + */ + (bool)isManualKickoutError:(int)error; +/** + 是否房间会话错误 + @param error 错误码 + @return 是否房间会话错误 + */ + (bool)isRoomSessionError:(int)error; - +/** + 获取error msg + + @param error 错误码 + @return error msg + */ + (NSString *)getErrorMsg:(int)error; @end diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-external-audio-device-oc.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-external-audio-device-oc.h index 3fa8e255..dd7c5cc2 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-external-audio-device-oc.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-external-audio-device-oc.h @@ -7,47 +7,118 @@ #import "zego-api-audio-frame-oc.h" - +/** 辅助推流通道音频采集源类别 */ typedef enum ZegoAPIAuxPublishChannelAudioSrcType { - kZegoAPIAuxPublishChannelAudioSrcTypeNone = -1, + kZegoAPIAuxPublishChannelAudioSrcTypeNone = -1, /** 无声 */ - kZegoAPIAuxPublishChannelAudioSrcTypeSameAsMainPublishChannel = 0, + kZegoAPIAuxPublishChannelAudioSrcTypeSameAsMainPublishChannel = 0, /** 推流的辅通道使用的音频数据跟主通道一样 */ - kZegoAPIAuxPublishChannelAudioSrcTypeExternalCapture = 1, + kZegoAPIAuxPublishChannelAudioSrcTypeExternalCapture = 1, /** 推流辅通道采用单独的音频数据,即与主通道不同的音频数据 */ - KZegoAPIAuxPublishChannelAudioSrcTypePlayer = 2, + KZegoAPIAuxPublishChannelAudioSrcTypePlayer = 2, /** 推流的辅通道使用的音频数据来自于媒体播放器 */ } ZegoAPIAuxPublishChannelAudioSrcType; - +/** + 提供音频外部采集和外部渲染的功能 + */ @interface ZegoExternalAudioDevice : NSObject - +/** + 开/关外部音频设备,即开启音频外部采集和外部渲染功能(App 实现音频的采集和播放) + + * 一般在以下情况使用音频外部采集、音频外部渲染的功能: + * 1.客户需要从现有音频流、音频文件或者定制的采集系统中获得采集后输入给 SDK 进行传输。 + * 2.客户有自己对 PCM 输入源做特殊的音效处理的需求,在音效处理后输入给 SDK 进行传输。 + * 3.在客户有自己的渲染需求时使用音频外部渲染的功能,比如对拉取到的原始 PCM 数据做特殊应用或者处理后再渲染。 + + * 注意: + * 1.必须在初始化 SDK 之前设置。 + * 2.开发者采用音频外部采集和渲染后,SDK 内部不负责声音增强、噪音抑制、回音消除等功能,需要用户自己实现。 + * 3.音频外部采集和外部渲染是一体的,如果开发者采用了外部渲染,则在有需要的情况下,应当自己实现外部采集;同理,采用了外部采集,在有需要的情况下,应当自己实现外部渲染。 + + @param enable true 表示开启音频外部采集和外部渲染功能,false 表示关闭音频外部采集和外部渲染功能。 + @see +setAudioSrcForAuxiliaryPublishChannel: + @see +startCapture: + @see +startRender + */ + (void)enableExternalAudioDevice:(bool)enable; - +/** + 选择辅助推流通道的音频采集源 + + * 需要同时推两路流时使用。 + * 注意:必须在 init SDK 之前设置。 + + @param type 辅助推流通道音频采集源类别,详见 enum ZegoAPIAuxPublishChannelAudioSrcType + @return 详见 enum ZegoAPIErrorCode,默认值为 kZegoAPIAuxPublishChannelAudioSrcTypeNone(无声) + */ + (int)setAudioSrcForAuxiliaryPublishChannel:(ZegoAPIAuxPublishChannelAudioSrcType)type; +/** + 通知 SDK 开始进行音频的外部采集 + * 注意:建议在 startPublishing 之前调用;如果在推流之后调用,会损失从 startPublishing 到startCapture 这段时间的音频数据。 + + @param publishChannel 选定推流通道,详见 enum ZegoAPIPublishChannelIndex。 + @return 详见 enum ZegoAPIErrorCode + @see +stopCapture: + @see +onRecordAudioFrame:channel: + */ + (int)startCapture:(ZegoAPIPublishChannelIndex)publishChannel; +/** + 通知 SDK 结束音频的外部采集 + * 注意:建议在 stopPublishing 之后调用;如果在停止推流之前调用,会损失从stopCapture 到 stopPublishing 这段时间的音频数据。 + + @param publishChannel 选定推流通道,详见 enum ZegoAPIPublishChannelIndex。 + @return 详见 enum ZegoAPIErrorCode + */ + (int)stopCapture:(ZegoAPIPublishChannelIndex)publishChannel; +/** + 把采集到的音频数据塞给 SDK + * 准备好音频帧数据后调用此 API 将音频数据塞给 SDK。 + + @param audioFrame 采集到的音频帧,详见 interface ZegoAPIAudioFrame。 + @param publishChannel 选定推流通道,详见 enum ZegoAPIPublishChannelIndex。 + @return 详见 enum ZegoAPIErrorCode + @see + enableExternalAudioDevice: + @see + startCapture: + */ + (int)onRecordAudioFrame:(ZegoAPIAudioFrame*)audioFrame channel:(ZegoAPIPublishChannelIndex)publishChannel; +/** + 通知 SDK App 开始播放音频 + @return 详见 enum ZegoAPIErrorCode + @see + stopRender + */ + (int)startRender; +/** + 通知 SDK App 结束播放音频 + @return 详见 enum ZegoAPIErrorCode + */ + (int)stopRender; +/** + 从 SDK 获取可渲染的音频数据 + * 在需要渲染音频数据时调用以获取待渲染的音频数据,调用频率一般是20ms或10ms。 + + @param audioFrame 得到的音频数据,SDK 根据本地设置的音频采样率、帧数据类型将相应的音频数据写入到 App 提供的地址;详见 interface ZegoAPIAudioFrame。 + @return 详见 enum ZegoAPIErrorCode + @see + enableExternalAudioDevice: + @see + startRender + */ + (int)onPlaybackAudioFrame:(ZegoAPIAudioFrame*)audioFrame; @end -#endif +#endif /* zego_api_external_audio_device_oc_h */ diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-external-video-render-oc.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-external-video-render-oc.h index f060a997..61c96ad5 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-external-video-render-oc.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-external-video-render-oc.h @@ -12,7 +12,9 @@ #include #include "zego-api-defines-oc.h" - +/** + 视频帧格式 + */ typedef NS_ENUM(NSInteger, VideoPixelFormat) { PixelFormatUnknown = 0, PixelFormatI420 = 1, @@ -27,68 +29,144 @@ typedef NS_ENUM(NSInteger, VideoPixelFormat) { @protocol ZegoVideoRenderDelegate +/** + SDK 待渲染视频数据 + @param data 待渲染数据, 当 VideoRenderType 设置为 VideoRenderTypeExternalInternalRgb 或者 VideoRenderTypeExternalInternalYuv 时,SDK 会使用修改后的 data 进行渲染 + @param dataLen 待渲染数据每个平面的数据大小,共 4 个面 + @param width 图像宽 + @param height 图像高 + @param strides 每个平面一行字节数,共 4 个面(RGBA 只需考虑 strides[0]) + @param pixelFormat format type, 用于指定 data 的数据类型 + @param streamID 流名 + */ - (void)onVideoRenderCallback:(unsigned char **)data dataLen:(int*)dataLen width:(int)width height:(int)height strides:(int[])strides pixelFormat:(VideoPixelFormat)pixelFormat streamID:(NSString *)streamID; +/** + SDK 通知下一帧数据是否需要翻转 + @param mode 翻转类型 + @param streamID 流名 + @discussion 仅本地预览的外部渲染会回调。此处的 mode 是基于推流图像计算出来的,和 SetVideoMirrorMode 不一定一致,请基于 SetFlipMode 的参数决定是否翻转 + */ - (void)onSetFlipMode:(int)mode streamID:(NSString *)streamID; +/** + SDK 通知下一帧数据需要旋转的角度 + @param rotation 逆时针旋转角度 + @param streamID 流名 + */ - (void)onSetRotation:(int)rotation streamID:(NSString *)streamID; @end @protocol ZegoVideoRenderCVPixelBufferDelegate +/** + SDK 待渲染视频数据 + @param data 待渲染的 CVPixelBuffer 类型数据 + @param streamID 流名 + */ - (void)onVideoRenderCallback:(CVPixelBufferRef)data streamID:(NSString *)streamID; +/** + SDK 通知下一帧数据是否需要翻转 + @param mode 翻转类型 + @param streamID 流名 + @discussion 仅本地预览的外部渲染会回调。此处的 mode 是基于推流图像计算出来的,和 SetVideoMirrorMode 不一定一致,请基于 SetFlipMode 的参数决定是否翻转 + */ - (void)onSetFlipMode:(int)mode streamID:(NSString *)streamID; +/** + SDK 通知下一帧数据需要旋转的角度 + @param rotation 逆时针旋转角度 + @param streamID 流名 + */ - (void)onSetRotation:(int)rotation streamID:(NSString *)streamID; @end - +/** + 视频外部渲染数据格式及渲染方式 + */ typedef NS_ENUM(NSInteger, VideoRenderType) { - + /** 默认值, 不开外部渲染 */ VideoRenderTypeNone = 0, - + /** 外部渲染同时内部不渲染 */ VideoRenderTypeRgb = 1, - + /** 外部渲染同时内部不渲染 */ VideoRenderTypeYuv = 2, - + /** 由返回参数指定类型, 外部渲染同时内部不渲染*/ VideoRenderTypeAny = 3, - + /** 外部渲染同时内部渲染 */ VideoRenderTypeExternalInternalRgb = 4, - + /** 外部渲染同时内部渲染 */ VideoRenderTypeExternalInternalYuv = 5 }; - +/** + 提供视频外部渲染功能 + */ @interface ZegoExternalVideoRender : NSObject +/** + 获取 ZegoExternalVideoRender 单例 + @return ZegoExternalVideoRender 单例对象 + */ + (instancetype)sharedInstance; - +/** + 开/关外部视频渲染(拉流),拉流时 App 能拿到 SDK 抛出的视频数据。 + + * 注意: + * 1.只有当 +enableExternalVideoRender:type: 的 type 参数设置为 VideoExternalRenderTypeDecodeRender,该接口才有效。 + * 2.必须在拉流(startPlayingStream)之后调用才生效。 + + @param enable YES 开启外部视频渲染, NO 关闭外部视频渲染,默认为不开启 + @param streamID 拉流的流 ID + */ + (bool)enableVideoRender:(BOOL)enable streamID:(NSString *)streamID; - +/** + 开/关外部视频渲染(推流预览),推流时 App 能拿到 SDK 抛出的视频数据。 + + * 注意: + * 1.只有当 +enableExternalVideoRender:type: 的 type 参数设置为 VideoExternalRenderTypeDecodeRender,该接口才有效。 + * 2.必须在 初始化 SDK 之后调用才生效。 + + @param enable YES 开启外部视频渲染, NO 关闭外部视频渲染,默认为不开启 + @param channelIndex 推流通道,详见 enum ZegoAPIPublishChannelIndex,默认为主推流通道。 + */ + (bool)enableVideoPreview:(BOOL)enable channelIndex:(ZegoAPIPublishChannelIndex)channelIndex; +/** + 设置开启外部渲染时要求 SDK 提供的数据格式及渲染方式 + @param type 指定 SDK 提供的数据格式及渲染方式 + @note 在启动推/拉流 及 预览 前设置有效 + */ + (void)setVideoRenderType:(VideoRenderType)type; +/** + 设置外部渲染回调 + @param delegate 外部渲染回调代理,用于接收待渲染的视频数据 + */ - (void)setZegoVideoRenderDelegate:(id)delegate; +/** + 设置用于接收 CVPixelBuffer 类型数据的外部渲染回调 + @param delegate 外部渲染回调代理,用于接收待渲染的 CVPixelBuffer 类型视频数据 + */ - (void)setZegoVideoRenderCVPixelBufferDelegate:(id)delegate; @end -#endif +#endif /* zego_api_external_video_render_oc_h */ diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-media-recorder-oc.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-media-recorder-oc.h index d9b854f9..2fe60ab4 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-media-recorder-oc.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-media-recorder-oc.h @@ -10,94 +10,205 @@ #import #include "zego-api-defines-oc.h" - +/** 媒体录制类型 */ typedef enum : NSUInteger { - + /** 只录制音频 */ ZEGOAPI_MEDIA_RECORD_AUDIO = 1, - + /** 只录制视频 */ ZEGOAPI_MEDIA_RECORD_VIDEO = 2, - + /** 同时录制音频、视频 */ ZEGOAPI_MEDIA_RECORD_BOTH = 3 } ZegoAPIMediaRecordType; - +/** 媒体录制通道 */ typedef enum : NSUInteger { - + /** 第一路录制通道,即推流时 ZegoAPIPublishChannelIndex 选择了主推流通道,录制时采用第一路录制通道 */ ZEGOAPI_MEDIA_RECORD_CHN_MAIN = 0, - + /** 第二路录制通道,即推流时 ZegoAPIPublishChannelIndex 选择了第二路推流通道,录制时采用第二路录制通道 */ ZEGOAPI_MEDIA_RECORD_CHN_AUX = 1 } ZegoAPIMediaRecordChannelIndex; - +/** 媒体录制格式 */ typedef enum : NSUInteger { - + /** 录制文件为 FLV 格式 */ ZEGOAPI_MEDIA_RECORD_FLV = 1, - + /** 录制文件为 MP4 格式 */ ZEGOAPI_MEDIA_RECORD_MP4 = 2 } ZegoAPIMediaRecordFormat; typedef enum : NSUInteger { - + /** 成功 */ ZEGOAPI_MEDIA_RECORD_SUCCESS = 0, - + /** 路径太长 */ ZEGOAPI_MEDIA_RECORD_PATH_TOO_LONG, - + /** 初始化 avcontext 失败 */ ZEGOAPI_MEDIA_RECORD_INIT_FAILED, - + /** 打开文件失败 */ ZEGOAPI_MEDIA_RECORD_OPEN_FILE_FAILED, - + /** 写文件头失败 */ ZEGOAPI_MEDIA_RECORD_WRITE_HEADER_FAILED, - + /** 开始录制 */ ZEGOAPI_MEDIA_RECORD_RECORD_BEGIN, - + /** 停止录制 */ ZEGOAPI_MEDIA_RECORD_RECORD_END, - + /** 剩余空间不够 */ ZEGOAPI_MEDIA_RECORD_NO_SPACE, - + /** 文件句柄异常 */ ZEGOAPI_MEDIA_RECORD_BAD_FILE_DESC, - + /** IO 异常 */ ZEGOAPI_MEDIA_RECORD_IO_ERROR, } ZegoAPIMediaRecordErrorCode; @protocol ZegoMediaRecordDelegage @required - +/** + 媒体录制回调 + + * 设置了媒体录制代理(-setMediaRecordDelegage:),并启动录制后能收到此回调,通知 App 录制是否启动成功,以及启动录制时设置的录制文件保存路径。 + + @param errCode 错误码, 详见 enum ZegoAPIMediaRecordErrorCode。 + @param index 录制通道,详见 enum ZegoAPIMediaRecordChannelIndex。 + @param storagePath 录制文件存储路径 + @see -startRecord:recordType:storagePath:enableStatusUpdate:interval: + @see -startRecord:recordType:storagePath:enableStatusUpdate:interval:recordFormat: + */ - (void)onMediaRecord:(int)errCode channelIndex:(ZegoAPIMediaRecordChannelIndex)index storagePath:(NSString *)path; @optional - +/** + 录制信息更新回调 + + * 设置了媒体录制代理(-setMediaRecordDelegage:),在媒体录制启动成功后,录制期间会不断收到此回调,此回调的回调频率由启动录制时设置的 interval 参数值决定。 + + @param index 录制通道,详见 enum ZegoAPIMediaRecordChannelIndex。 + @param path 录制文件存储路径 + @param duration 录制时长,单位是毫秒 + @param size 文件大小,单位是字节 + @see -startRecord:recordType:storagePath:enableStatusUpdate:interval: + @see -startRecord:recordType:storagePath:enableStatusUpdate:interval:recordFormat: + @see -startRecord:recordType:storagePath:enableStatusUpdate:interval:recordFormat:isFragment: + */ - (void)onRecordStatusUpdateFromChannel:(ZegoAPIMediaRecordChannelIndex)index storagePath:(NSString *)path duration:(unsigned int)duration fileSize:(unsigned int)size; +/** +录制信息更新回调 +* 设置了媒体录制代理(-setMediaRecordDelegage:),在媒体录制启动成功后,录制期间会不断收到此回调,此回调的回调频率由启动录制时设置的 interval 参数值决定。 + +@param index 录制通道,详见 enum ZegoAPIMediaRecordChannelIndex。 +@param path 录制文件存储路径 +@param duration 录制时长,单位是毫秒 +@param size 文件大小,单位是字节 +@param quality 录制质量 +@see -startRecord:recordType:storagePath:enableStatusUpdate:interval: +@see -startRecord:recordType:storagePath:enableStatusUpdate:interval:recordFormat: +@see -startRecord:recordType:storagePath:enableStatusUpdate:interval:recordFormat:isFragment: +*/ - (void)onRecordStatusUpdateFromChannel:(ZegoAPIMediaRecordChannelIndex)index storagePath:(NSString *)path duration:(unsigned int)duration fileSize:(unsigned int)size quality: (ZegoAPIPublishQuality)quality; @end - +/** + 本地媒体录制,对直播过程中的音视频数据进行录制并存储到本地。 + */ @interface ZegoMediaRecorder : NSObject - +/** + 开始录制 + + * 注意:必须在初始化 SDK之后调用。 + + @param channelIndex 录制通道,详见 enum ZegoAPIMediaRecordChannelIndex。 + @param recordType 录制类型,详见 enum ZegoAPIMediaRecordType。 + @param storagePath 录制文件存储路径 + @param return true 调用成功,false 调用失败 + @deprecated 请使用 - startRecord:recordType:storagePath:enableStatusUpdate:interval: 或者 - startRecord:recordType:storagePath:enableStatusUpdate:interval:recordFormat: + */ - (BOOL)startRecord:(ZegoAPIMediaRecordChannelIndex)channelIndex recordType:(ZegoAPIMediaRecordType)recordType storagePath:(NSString *)storagePath; - +/** + 开始录制 + + * 1.必须在初始化 SDK 之后调用, 默认的生成的录制文件格式为 FLV。 + * 2.如果开启了录制信息更新回调(enableStatusUpdate 参数值为 YES),请实现 -onRecordStatusUpdateFromChannel:index storagePath:duration:fileSize: 回调。 + * 3.设置了录制回调代理(-setMediaRecordDelegage:)后,才能收到媒体录制是否成功的通知。 + * 注意: + * 1.在开始录制之前需要启动采集,调用 SDK 的 startPreview 或者 startPublishing 启动采集设备,麦克风、摄像头等。 + * 2.若需要录制 ZEGOAPI_MEDIA_RECORD_AUDIO 类型媒体,在开始录制之前必须开启麦克风或者带麦克风的摄像头,不开启则不能正常返回录制的音频文件;同理,录制 ZEGOAPI_MEDIA_RECORD_VIDEO 类型媒体,必须开启摄像头,录制 ZEGOAPI_MEDIA_RECORD_BOTH 类型媒体,麦克风和摄像头都需要开启。 + + @param channelIndex 录制通道,详见 ZegoAPIMediaRecordChannelIndex。 + @param recordType 录制类型,,详见 ZegoAPIMediaRecordType;如果填写的类型是 ZEGOAPI_MEDIA_RECORD_NONE,实际上 SDK 会采用 ZEGOAPI_MEDIA_RECORD_BOTH。 + @param storagePath 录制文件存储路径,存储的路径必须是应用有权限读写的,如果传入目录路径, - onMediaRecord:channelIndex:storagePath: 回调会返回写文件失败。 + @param enable 是否开启录制信息更新回调;YES: 开启,NO: 关闭;开启后,在已设置媒体录制代理后会收到 - onRecordStatusUpdateFromChannel:index storagePath:duration:fileSize: 回调。 + @param interval 录制文件时状态回调的间隔,单位毫秒,有效范围:[1000,10000];此参数决定了 - onRecordStatusUpdateFromChannel:index storagePath:duration:fileSize: 的回调频率。 + @param return true 调用成功,false 调用失败 + @see - stopRecord: + */ - (BOOL)startRecord:(ZegoAPIMediaRecordChannelIndex)channelIndex recordType:(ZegoAPIMediaRecordType)recordType storagePath:(NSString *)storagePath enableStatusUpdate:(BOOL)enable interval:(int)interval; - +/** + 开始录制 + + * 1.必须在初始化 SDK 之后调用, 默认的生成的录制文件格式为 FLV。 + * 2.如果开启了录制信息更新回调(enableStatusUpdate 参数值为 YES),请实现 -onRecordStatusUpdateFromChannel:index storagePath:duration:fileSize: 回调。 + * 3.设置了录制回调代理(-setMediaRecordDelegage:)后,才能收到媒体录制是否成功的通知。 + * 注意: + * 1.在开始录制之前需要启动采集,调用 SDK 的 startPreview 或者 startPublishing 启动采集设备,麦克风、摄像头等。 + * 2.若需要录制 ZEGOAPI_MEDIA_RECORD_AUDIO 类型媒体,在开始录制之前必须开启麦克风或者带麦克风的摄像头,不开启则不能正常返回录制的音频文件;同理,录制 ZEGOAPI_MEDIA_RECORD_VIDEO 类型媒体,必须开启摄像头,录制 ZEGOAPI_MEDIA_RECORD_BOTH 类型媒体,麦克风和摄像头都需要开启。 + + @param channelIndex 录制通道,详见 enum ZegoAPIMediaRecordChannelIndex。 + @param recordType 录制类型,详见 enum ZegoAPIMediaRecordType,如果填写的类型是 ZEGOAPI_MEDIA_RECORD_NONE,实际上 SDK 会采用 ZEGOAPI_MEDIA_RECORD_BOTH。 + @param storagePath 录制文件存储路径,存储的路径必须是应用有权限读写的,如果传入目录路径, - onMediaRecord:channelIndex:storagePath: 回调会返回写文件失败。 + @param enable 是否开启录制信息更新回调;YES: 开启,NO: 关闭;开启后,在已设置媒体录制代理后( - setMediaRecordDelegage:)会收到 - onRecordStatusUpdateFromChannel:index storagePath:duration:fileSize: 回调。 + @param interval 录制文件时状态回调的间隔,单位毫秒,有效范围:[1000,10000],此参数决定了 - onRecordStatusUpdateFromChannel:index storagePath:duration:fileSize: 的回调频率。 + @param recordFromat 录制文件的文件格式,详见 enum ZegoAPIMediaRecordFormat。 + @param return true 调用成功,false 调用失败 + @see - stopRecord: + */ - (BOOL)startRecord:(ZegoAPIMediaRecordChannelIndex)channelIndex recordType:(ZegoAPIMediaRecordType)recordType storagePath:(NSString *)storagePath enableStatusUpdate:(BOOL)enable interval:(int)interval recordFormat:(ZegoAPIMediaRecordFormat)recordFormat; - +/** + 开始录制 + + * 1.必须在初始化 SDK 之后调用, 默认的生成的录制文件格式为 FLV。 + * 2.如果开启了录制信息更新回调(enableStatusUpdate 参数值为 YES),请实现 -onRecordStatusUpdateFromChannel:index storagePath:duration:fileSize: 回调。 + * 3.设置了录制回调代理(-setMediaRecordDelegage:)后,才能收到媒体录制是否成功的通知。 + * 注意: + * 1.在开始录制之前需要启动采集,调用 SDK 的 startPreview 或者 startPublishing 启动采集设备,麦克风、摄像头等。 + * 2.若需要录制 ZEGOAPI_MEDIA_RECORD_AUDIO 类型媒体,在开始录制之前必须开启麦克风或者带麦克风的摄像头,不开启则不能正常返回录制的音频文件;同理,录制 ZEGOAPI_MEDIA_RECORD_VIDEO 类型媒体,必须开启摄像头,录制 ZEGOAPI_MEDIA_RECORD_BOTH 类型媒体,麦克风和摄像头都需要开启。 + + @param channelIndex 录制通道,详见 enum ZegoAPIMediaRecordChannelIndex。 + @param recordType 录制类型,详见 enum ZegoAPIMediaRecordType,如果填写的类型是 ZEGOAPI_MEDIA_RECORD_NONE,实际上 SDK 会采用 ZEGOAPI_MEDIA_RECORD_BOTH。 + @param storagePath 录制文件存储路径,存储的路径必须是应用有权限读写的,如果传入目录路径, - onMediaRecord:channelIndex:storagePath: 回调会返回写文件失败。 + @param enable 是否开启录制信息更新回调;YES: 开启,NO: 关闭;开启后,在已设置媒体录制代理后( - setMediaRecordDelegage:)会收到 - onRecordStatusUpdateFromChannel:index storagePath:duration:fileSize: 回调。 + @param interval 录制文件时状态回调的间隔,单位毫秒,有效范围:[1000,10000],此参数决定了 - onRecordStatusUpdateFromChannel:index storagePath:duration:fileSize: 的回调频率。 + @param recordFromat 录制文件的文件格式,详见 enum ZegoAPIMediaRecordFormat + @param isFragment 录制文件是否分片,只在录制文件格式被设置为 MP4 格式时才有效,默认分片间隔为2s。进行分片能保证录制发生异常中断等问题时,已保存的录制文件可以正常播放;注意,这儿的分片是 SDK 内部处理录制文件的一个逻辑概念,而不是将录制文件按间隔时间分成多个小文件存储。 + @param return true 调用成功,false 调用失败 + @see -stopRecord: + */ - (BOOL)startRecord:(ZegoAPIMediaRecordChannelIndex)channelIndex recordType:(ZegoAPIMediaRecordType)recordType storagePath:(NSString *)storagePath enableStatusUpdate:(BOOL)enable interval:(int)interval recordFormat:(ZegoAPIMediaRecordFormat)recordFormat isFragment:(BOOL)isFragment; - +/** + 停止录制 + + @param channelIndex 录制通道,详见 enum ZegoAPIMediaRecordChannelIndex。 + */ - (void)stopRecord:(ZegoAPIMediaRecordChannelIndex)channelIndex; - +/** + 设置录制代理对象 + + * 设置录制代理后,在启动录制(startRecord)之后才能收到录制回调。 + + @param delegate 媒体录制代理,详见 delegate ZegoMediaRecordDelegage。 + */ - (void)setMediaRecordDelegage:(id)delegate; @end diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-media-side-info-oc.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-media-side-info-oc.h index 525044d1..bccc4377 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-media-side-info-oc.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-media-side-info-oc.h @@ -4,27 +4,84 @@ #import #include "zego-api-defines-oc.h" - +/** + 流媒体次要信息回调 + */ @protocol ZegoMediaSideDelegate @required - +/** + 接收到媒体次要信息 + + * 调用 ZegoMediaSideInfo -setMediaSideDelegate: 设置了回调监听,且主播端已成功发送了媒体次要信息,SDK 通过此 API 通知拉流方收到媒体次要信息。 + + @param data 接收到的媒体信息数据(具体内容参考官网对应文档中的格式说明) + @param streamID 当前流ID信息,标记当前回调的信息属于哪条流。 + */ - (void)onRecvMediaSideInfo:(NSData *)data ofStream:(NSString *)streamID; @end - +/** + 媒体次要信息 + */ @interface ZegoMediaSideInfo : NSObject - +/** + 发送媒体次要信息开关,不支持发送 SEI 的设置。 + + * 注意: + * 1.必须在调用初始化 SDK 接口之后、推流接口之前设置。 + * 2.如果只有音频直播,必须将 onlyAudioPublish 置为 true,此时将会由音频来驱动次要信息的传输,同时忽略视频流传输。 + + @param start 开启/关闭媒体次要信息传输,true 表示开启媒体次要信息传输,false 表示关闭媒体次要信息传输。start 为 true 时,onlyAudioPublish 参数开关才有效。 + @param onlyAudioPublish 是否为纯音频直播,true 表示纯音频直播,不传输视频数据;false 表示音视频直播,传输音频和视频数据;默认为 false。 + @param channelIndex 推流通道 index,详见 enum ZegoAPIPublishChannelIndex。 + */ - (void)setMediaSideFlags:(bool)start onlyAudioPublish:(bool)onlyAudioPublish channelIndex:(ZegoAPIPublishChannelIndex)index; - +/** + 发送媒体次要信息开关,支持发送 SEI 的设置。 + + * 注意: + * 1.必须在调用初始化 SDK 接口之后、推流接口之前设置。 + * 2.如果只有音频直播,必须将 onlyAudioPublish 置为 true,此时将会由音频来驱动次要信息的传输,同时忽略视频流传输。 + + @param start 开启/关闭媒体次要信息传输,true 表示开启媒体次要信息传输,false 表示关闭媒体次要信息传输。start 为 true 时,onlyAudioPublish 参数开关才有效。 + @param onlyAudioPublish 是否为纯音频直播,true 表示纯音频直播,不传输视频数据;false 表示音视频直播,传输音频和视频数据;默认为 false。 + @param mediaInfoType 媒体次要信息类型,请参考 MediaInfoType 定义,建议使用 SeiZegoDefined 类型。 + @param seiSendType SEI 发送类型,请参考 SeiSendType 定义,此参数只对发送 SEI 时有效,当 mediaInfoType 参数为 SideInfoZegoDefined 时此参数无效;当发送 SEI 时建议使用 SeiSendInVideoFrame 类型。 + @param channelIndex 推流通道 index,详见 enum ZegoAPIPublishChannelIndex。 + */ - (void)setMediaSideFlags:(bool)start onlyAudioPublish:(bool)onlyAudioPublish mediaInfoType:(int)mediaInfoType seiSendType:(int)seiSendType channelIndex:(ZegoAPIPublishChannelIndex)index; - +/** + 发送媒体次要信息 + + * 注意: + * 1.必须在推流成功之后调用。 + * 2.ZegoMediaSideInfo的 -setMediaSideFlags:onlyAudioPublish:mediaInfoType:seiSendType:channelIndex: or ZegoMediaSideInfo的 -setMediaSideFlags:onlyAudioPublish:channelIndex: 接口设置为音视频直播时,关闭摄像头将导致无法发送媒体次要信息。 + * 3.不需要发送媒体次要信息时,可调用 setMediaSideFlags 来关闭媒体次要信息传输,第一个参数填 false 就代表关闭,关闭后即使调用 sendMediaSideInfo 也不能再发送媒体次要信息。 + * 4.sendMediaSideInfo 的调用频率不能超过帧率,假设推流采用默认帧率15 fps,即调用频率不能超过 1000/15=66.7 ms/次。 + + @param data 需要传输的音视频次要信息数据,外部输入。 + @param packet 是否采用外部打包好的包头,填写 false。 + @param channelIndex 推流通道 index,详见 enum ZegoAPIPublishChannelIndex。 + @see ZegoMediaSideInfo -setMediaSideFlags:onlyAudioPublish:mediaInfoType:seiSendType:channelIndex: + @see ZegoMediaSideInfo -setMediaSideFlags:onlyAudioPublish:channelIndex: + */ - (void)sendMediaSideInfo:(NSData *)data packet:(bool)packet channelIndex:(ZegoAPIPublishChannelIndex)index; - +/** + 设置媒体次要信息的回调监听,以接收媒体次要信息。 + + *注意: + * 1.在调用初始化 SDK 接口之后、拉流接口之前设置。 + * 2.观众端若想在此 API 设置的回调中获取主播端发送的媒体次要信息,需要主播端已开启发送媒体次要信息开关,并调用 ZegoMediaSideInfo -sendMediaSideInfo:packet:channelIndex: 发送媒体次要信息。 + * 3.主播端采用音视频直播驱动媒体次要信息传输时,拉流时使用 ZegoLiveRoomApi (Player) -activateVideoPlayStream:active: 接口设置了只拉音频时,将无法接收到媒体次要信息。 + * 4.当不需要接收数据时,调用 setMediaSideDelegate:nil 去除回调监听。 + + @param delegate 实现了 ZegoMediaSideDelegate 代理的方法,用于拉流时接收媒体次要信息。 + */ - (void)setMediaSideDelegate:(id)delegate; @end diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-mediaplayer-defines-oc.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-mediaplayer-defines-oc.h index a5424bf0..556c1ba5 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-mediaplayer-defines-oc.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-mediaplayer-defines-oc.h @@ -10,7 +10,12 @@ - +/** + 播放器模式 + + - MediaPlayerTypePlayer: 播放模式 + - MediaPlayerTypeAux: 播放,并且将其混入推流中 + */ typedef NS_ENUM(NSInteger, MediaPlayerType) { MediaPlayerTypePlayer, @@ -50,4 +55,4 @@ struct ZegoMediaPlayerVideoDataFormat ZegoMediaPlayerVideoPixelFormat pixelFormat; }; -#endif +#endif /* zego_api_mediaplayer_defines_oc_h */ diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-mediaplayer-oc.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-mediaplayer-oc.h index 7bd61f17..cd45943b 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-mediaplayer-oc.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-mediaplayer-oc.h @@ -17,280 +17,632 @@ #import "zego-api-mediaplayer-defines-oc.h" +/** + 播放器的回调接口 + @warning Deprecated,请使用 ZegoMediaPlayerEventWithIndexDelegate 替代 + */ @protocol ZegoMediaPlayerEventDelegate @optional - +/** + 开始播放 + */ - (void)onPlayStart; - +/** + 暂停播放 + */ - (void)onPlayPause; - +/** + 恢复播放 + */ - (void)onPlayResume; +/** + 播放错误 + @param code + PLAY_ERROR_NOERROR = 0, + PLAY_ERROR_FILE = -1,文件格式不支持, + PLAY_ERROR_PATH = -2,路径不存在, + PLAY_ERROR_CODEC = -3, 文件无法解码 + PLAY_ERROR_NO_SUPPORT_STREAM = -4,文件中没有可播放的音视频流 + PLAY_ERROR_DEMUX = -5, 文件解析过程中出现错误 + */ - (void)onPlayError:(int)code; - +/** + 开始播放视频 + */ - (void)onVideoBegin; - +/** + 开始播放音频 + */ - (void)onAudioBegin; - +/** + 播放结束 + */ - (void)onPlayEnd; - +/** + 用户停止播放的回调 + */ - (void)onPlayStop; - +/** + 网络音乐资源播放不畅,开始尝试缓存数据。 + + @warning 只有播放网络音乐资源才需要关注这个回调 + */ - (void)onBufferBegin; - +/** + 网络音乐资源可以顺畅播放。 + + @warning 只有播放网络音乐资源才需要关注这个回调 + */ - (void)onBufferEnd; +/** + 快进到指定时刻 + @param code >=0 成功,其它表示失败 + @param millisecond 实际快进的进度,单位毫秒 + */ - (void)onSeekComplete:(int)code when:(long)millisecond; - +/** + 截图 + + @param image + */ - (void)onSnapshot:(ZEGOImage *)image; - +/** + 预加载完成 + */ - (void)onLoadComplete; - +/** + 播放进度回调 + + @param timestamp 当前播放进度,单位毫秒 + @note 同步回调,请不要在回调中处理数据或做其他耗时操作 + */ - (void)onProcessInterval:(long)timestamp; @end +/** + 视频帧数据回调接口 + 当格式为ARGB32/ABGR32/RGBA32/BGRA32,数据通过OnPlayVideoData回调。 + 当格式为I420/NV12/NV21,数据通过OnPlayVideoData2回调。 + 其他非法格式都判定为I420 + @warning Deprecated,请使用 ZegoMediaPlayerVideoPlayWithIndexDelegate 替代 + */ @protocol ZegoMediaPlayerVideoPlayDelegate @optional - +/** + 视频帧数据回调,格式为ARGB32/ABGR32/RGBA32/BGRA32 + + @param data 视频帧原始数据 + @param size 视频帧原始数据大小 + @param format 视频帧原始数据格式 + @note 同步回调,请不要在回调中处理数据或做其他耗时操作 + */ - (void)onPlayVideoData:(const char *)data size:(int)size format:(struct ZegoMediaPlayerVideoDataFormat)format; - +/** + 视频帧数据回调,格式为ARGB32/ABGR32/RGBA32/BGRA32 + + @param data 视频帧原始数据 + @param size 视频帧原始数据大小 + @param format 视频帧原始数据格式 + @note 同步回调,请不要在回调中处理数据或做其他耗时操作 + @see Deprecated, 请使用 onPlayVideoData:size:format: + */ - (void)onPlayVideoData:(const char *)data Size:(int)size Format:(struct ZegoMediaPlayerVideoDataFormat)format; - +/** + 视频帧数据回调,格式为I420/NV12/NV21 + + @param data 视频帧原始数据 + @param size 视频帧原始数据大小 + @param format 视频帧原始数据格式 + @note 同步回调,请不要在回调中处理数据或做其他耗时操作 + */ - (void)onPlayVideoData2:(const char **)data size:(int *)size format:(struct ZegoMediaPlayerVideoDataFormat)format; @end - +/** + 多实例播放器的回调接口 + */ @protocol ZegoMediaPlayerEventWithIndexDelegate @optional - +/** + 开始播放 + + @param index 播放器序号 + */ - (void)onPlayStart:(ZegoMediaPlayerIndex)index; - +/** + 暂停播放 + + @param index 播放器序号 + */ - (void)onPlayPause:(ZegoMediaPlayerIndex)index; - +/** + 恢复播放 + + @param index 播放器序号 + */ - (void)onPlayResume:(ZegoMediaPlayerIndex)index; - +/** + 播放错误 + + @param code + PLAY_ERROR_NOERROR = 0, + PLAY_ERROR_FILE = -1,文件格式不支持, + PLAY_ERROR_PATH = -2,路径不存在, + PLAY_ERROR_CODEC = -3, 文件无法解码 + PLAY_ERROR_NO_SUPPORT_STREAM = -4,文件中没有可播放的音视频流 + PLAY_ERROR_DEMUX = -5, 文件解析过程中出现错误 + @param index 播放器序号 + */ - (void)onPlayError:(int)code playerIndex:(ZegoMediaPlayerIndex)index; - +/** + 开始播放视频 + + @param index 播放器序号 + */ - (void)onVideoBegin:(ZegoMediaPlayerIndex)index; - +/** + 开始播放音频 + + @param index 播放器序号 + */ - (void)onAudioBegin:(ZegoMediaPlayerIndex)index; - +/** + 播放结束 + + @param index 播放器序号 + */ - (void)onPlayEnd:(ZegoMediaPlayerIndex)index; - +/** + 用户停止播放的回调 + + @param index 播放器序号 + */ - (void)onPlayStop:(ZegoMediaPlayerIndex)index; - +/** + 网络音乐资源播放不畅,开始尝试缓存数据。 + + @param index 播放器序号 + @warning 只有播放网络音乐资源才需要关注这个回调 + */ - (void)onBufferBegin:(ZegoMediaPlayerIndex)index; - +/** + 网络音乐资源可以顺畅播放。 + + @param index 播放器序号 + @warning 只有播放网络音乐资源才需要关注这个回调 + */ - (void)onBufferEnd:(ZegoMediaPlayerIndex)index; - +/** + 快进到指定时刻 + + @param code >=0 成功,其它表示失败 + @param millisecond 实际快进的进度,单位毫秒 + @param index 播放器序号 + */ - (void)onSeekComplete:(int)code when:(long)millisecond playerIndex:(ZegoMediaPlayerIndex)index; - +/** + 截图 + + @param image + @param index 播放器序号 + */ - (void)onSnapshot:(ZEGOImage *)image playerIndex:(ZegoMediaPlayerIndex)index; - +/** + 预加载完成 + + @param index 播放器序号 + @warning 调用 load 的回调 + */ - (void)onLoadComplete:(ZegoMediaPlayerIndex)index; - +/** + 播放进度回调 + + @param timestamp 当前播放进度,单位毫秒 + @param index 播放器序号 + @note 同步回调,请不要在回调中处理数据或做其他耗时操作 + */ - (void)onProcessInterval:(long)timestamp playerIndex:(ZegoMediaPlayerIndex)index; @end - +/** + 多实例播放器的视频帧数据回调 + 当格式为ARGB32/ABGR32/RGBA32/BGRA32,数据通过OnPlayVideoData回调。 + 当格式为I420/NV12/NV21,数据通过OnPlayVideoData2回调。 + 其他非法格式都判定为I420 + */ @protocol ZegoMediaPlayerVideoPlayWithIndexDelegate @optional - +/** + 视频帧数据回调, 格式为ARGB32/ABGR32/RGBA32/BGRA32 + + @param data 视频帧原始数据 + @param size 视频帧原始数据大小 + @param format 视频帧原始数据格式 + @param index 播放器序号 + @note 同步回调,请不要在回调中处理数据或做其他耗时操作 + */ - (void)onPlayVideoData:(const char *)data size:(int)size format:(struct ZegoMediaPlayerVideoDataFormat)format playerIndex:(ZegoMediaPlayerIndex)index; - +/** + 视频帧数据回调, 格式为I420/NV12/NV21 + + @param data 视频帧原始数据 + @param size 视频帧原始数据大小 + @param format 视频帧原始数据格式 + @param index 播放器序号 + @note 同步回调,请不要在回调中处理数据或做其他耗时操作 + */ - (void)onPlayVideoData2:(const char **)data size:(int *)size format:(struct ZegoMediaPlayerVideoDataFormat)format playerIndex:(ZegoMediaPlayerIndex)index; @end @protocol ZegoMediaPlayerAudioPlayDelegate +/** + 音频数据回调,仅 PCM 数据有效 + @param data 音频原始数据 + @param length 音频数据大小 + @param sample_rate 采样率 + @param channels 通道数 + @param bit_depth 位深 + @param index 播放器序号 + @note 同步回调,SDK 会直接使用该段内存中的数据 + */ - (void) onPlayAudioData:(unsigned char * const)data length:(int)length sample_rate:(int)sample_rate channels:(int)channels bit_depth:(int)bit_depth playerIndex:(ZegoMediaPlayerIndex)index; @end +/** + 播放器 + */ @interface ZegoMediaPlayer : NSObject +/** + 初始化 + @warning Deprecated,请使用 [initWithPlayerType:playerIndex:] 代替 + + @param type @see MediaPlayerType + @return 播放器对象 + @note sdk提供多个播放器实例,通过index可以指定获取的是哪个播放器实例,没有指定index时,取到的就是 ZegoMediaPlayerIndexIndexFirst 播放器 + */ - (instancetype)initWithPlayerType:(MediaPlayerType)type; - +/** + 初始化 + + @param type @see MediaPlayerType + @param index sdk提供多个播放器实例,通过index可以指定获取的是哪个播放器实例 @see ZegoMediaPlayerIndex + @return 播放器对象 + */ - (instancetype)initWithPlayerType:(MediaPlayerType)type playerIndex:(ZegoMediaPlayerIndex)index; - +/** + 释放播放器 + */ - (void)uninit; +/** + 设置播放器事件回调 + @warning Deprecated,请使用 [setEventWithIndexDelegate:] 代替 + + @param delegate 回调 + */ - (void)setDelegate:(id)delegate; +/** + 设置视频帧数据回调 + @warning Deprecated,请使用 [setVideoPlayWithIndexDelegate:format:] 代替 + + @param delegate 回调 + @param format 需要返回的视频帧数据格式,@see ZegoMediaPlayerVideoPixelFormat + */ - (void)setVideoPlayDelegate:(id)delegate format:(ZegoMediaPlayerVideoPixelFormat)format; - +/** + 设置播放器事件回调 + + @param delegate 回调 + */ - (void)setEventWithIndexDelegate:(id)delegate; - +/** + 设置视频帧数据回调 + + @param delegate 回调 + @param format 需要返回的视频帧数据格式,@see ZegoMediaPlayerVideoPixelFormat + */ - (void)setVideoPlayWithIndexDelegate:(id)delegate format:(ZegoMediaPlayerVideoPixelFormat)format; +/** + 设置音频数据回调 + @param delegate 回调 + */ - (void)setAudioPlayDelegate:(id)delegate; - +/** + 开始播放 + + @param path 媒体文件的路径 + @param repeat 是否重复播放 + */ - (void)start:(NSString *)path repeat:(BOOL)repeat; - +/** + 停止播放 + */ - (void)stop; - +/** + 暂停播放 + */ - (void)pause; - +/** + 恢复播放 + */ - (void)resume; +/** + 设置指定的进度进行播放 + @param millisecond 指定的进度,单位毫秒 + */ - (void)seekTo:(long)millisecond; +/** + 设置是否开启精准搜索 + @param enable 是否开启 + @note: 播放文件之前调用,即Start或Load前,播放过程中调用不起作用,但可能对下个文件的播放起作用. + */ - (void)enableAccurateSeek:(bool)enable; +/** + 设置精确搜索的超时时间 + @param timeoutInMS 超时时间, 单位毫秒. 有效值区间 [2000, 10000] + @note 如果不设置, SDK 内部默认是设置 5000 毫秒 + */ - (void)setAccurateSeekTimeout:(long)timeoutInMS; +/** + 获取整个文件的播放时长 + @return 文件的播放时长,单位毫秒 + */ - (long)getDuration; +/** + 获取当前播放的进度 + @return 当前播放进度,单位毫秒 + */ - (long)getCurrentDuration; - +/** + 设置本地静默播放 + + @param mute 是否静默播放 + @warning 如果设置 MediaPlayerTypeAux 模式,推出的流是有声音的 + */ - (void)muteLocal:(BOOL)mute; - +/** + 预加载资源 + + @param path 媒体文件的路径 + */ - (void)load:(NSString *)path; #if TARGET_OS_IPHONE +/** + 设置显示视频的view + @param view 播放的控件 + */ - (void)setView:(UIView *)view; #elif TARGET_OS_OSX +/** + 设置显示视频的view + @param view 播放的控件 + */ - (void)setView:(NSView *)view; #endif +/** + 设置本地播放音量, 如果播放器设置了推流模式, 也会设置推流音量 + @param volume 音量,范围在0到100,默认值是50 + */ - (void)setVolume:(int)volume; - +/** + 设置推流音量 + + @param volume 音量,范围在0到100,默认值是50 + */ - (void)setPublishVolume:(int)volume; - +/** + 设置本地播放音量 + + @param volume 音量,范围在0到100,默认值是50 + */ - (void)setPlayVolume:(int)volume; - +/** + 获取推流音量 + */ - (int)getPublishVolume; - +/** + 获取本地播放音量 + */ - (int)getPlayVolume; - +/** + 设置播放文件的音轨 + + @param streamIndex 音轨序号,可以通过 getAudioStreamCount 接口获取音轨个数 + */ - (long)setAudioStream:(long)streamIndex; - +/** + 设置播放器类型 + + @param type @see MediaPlayerType + */ - (void)setPlayerType:(MediaPlayerType)type; +/** + 获取当前播放视频的截图 + @note 只有在调用 setView 设置了显示控件,以及播放状态的情况下,才能正常截图。 + */ - (void)takeSnapshot; - +/** + 获取音轨个数 + + @return 音轨个数 + */ - (long)getAudioStreamCount; - +/** + 设置是否重复播放 + + @param enable YES:重复播放,NO:不重复播放 + */ - (void)enableRepeatMode:(BOOL)enable; - +/** + 设置播放进度回调间隔。 + + @param interval 回调间隔,单位毫秒。有效值为大于等于 0。默认值为 0。 + + @note 设置 interval 大于 0 时,就会收到 OnPlaybackProgress 回调。interval = 0 时,停止回调。 + @note 回调不会严格按照设定的回调间隔值返回,而是以处理音频帧或者视频帧的频率来判断是否需要回调。 + */ - (BOOL)setProcessInterval:(long)interval; - +/** + 设置使用硬件解码 + + @return 设置是否成功 + + @note 当前只支持 iOS 系统 + @note 需要在加载媒体资源之前设置,即在 start 或者 load 之前 + @note 即使设置了使用硬件解码,引擎也会根据当前硬件情况决定是否使用 + @note 多次调用没有影响 + */ - (BOOL)requireHWDecoder; +/** + 设置播放器播放控件的显示模式 + @param mode 显示模式,详见 ZegoVideoViewMode,默认为 ZegoVideoViewModeScaleAspectFit + */ - (void)setViewMode:(ZegoVideoViewMode)mode; +/** + 设置播放的背景颜色 + @param color 颜色,取值为0x00RRGGBB + */ - (void)setBackgroundColor:(int)color; - +/** + 清除播放控件播放结束后, 在控件上保留的最后一帧画面 + */ - (void)clearView; - +/** + 设置播放声道 + + @param channel 声道, 参见 ZegoMediaPlayerAudioChannel 定义. 播放器初始化时默认是 ZegoMediaPlayerAudioChannelAll + */ - (void)setActiveAudioChannel:(ZegoMediaPlayerAudioChannel)channel; - +/** + 设置声道音调 + + @param channel 声道, 参见 ZegoMediaPlayerAudioChannel 定义 + @param value 音调偏移值, 有效值范围 [-8.0, 8.0], 播放器初始化时默认是 0 + @note 可选择设置左声道、右声道、左右声道,当只设置一个声道时,另一个声道保持原值 + */ - (void)setAudioChannel:(ZegoMediaPlayerAudioChannel)channel keyShift:(float)value; @end -#endif +#endif /* zego_api_mediaplayer_oc_h */ diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-mix-engine-playout-oc.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-mix-engine-playout-oc.h index d08287c0..2a650368 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-mix-engine-playout-oc.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-mix-engine-playout-oc.h @@ -7,9 +7,14 @@ @interface ZegoMixEngine : NSObject +/** + 把引擎播放的声音混到推流中 + @param enable 是否打开 + @return 0 成功 + */ + (int)MixEnginePlayout:(BOOL)enable; @end -#endif +#endif /* zego_api_mix_engine_playout_oc_h */ diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-mix-stream-defines-oc.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-mix-stream-defines-oc.h index 66dc084d..ff8bc979 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-mix-stream-defines-oc.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-mix-stream-defines-oc.h @@ -7,129 +7,267 @@ #ifndef zego_api_mix_stream_defines_oc_h #define zego_api_mix_stream_defines_oc_h - +/** + 混流输入流配置信息 + */ @interface ZegoMixStreamInput : NSObject - +/** + 要混流的单流ID + */ @property (copy) NSString *streamID; - +/** + 混流画布左上角坐标的第二个值,左上角坐标为 (left, top) + */ @property int top; - +/** + 混流画布左上角坐标的第一个值,左上角坐标为 (left, top) + */ @property int left; - +/** + 混流画布右下角坐标的第二个值,右下角坐标为 (right, bottom) + */ @property int bottom; - +/** + 混流画布右下角坐标的第一个值,右下角坐标为 (right, bottom) + */ @property int right; - +/** + 音浪ID,用于标识用户(比如拉取混流方可根据此标识明确到混流中的单条流是主播/观众/副主播),soundLevelID 必须大于等于 0 且小于等于 4294967295L(即2^32-1) + */ @property unsigned int soundLevelID; - +/** + 推流内容控制, 0 表示输出的混流包含音视频,1 表示只包含音频,2 表示只包含视频;默认值为 0。 + */ @property int contentControl; - +/** + * 原点在左上角,top/bottom/left/right 定义如下: + * + * (left, top)----------------------- + * | | + * | | + * | | + * | | + * -------------------(right, bottom) + */ @end - +/** + 混流输出目的地 + */ @interface ZegoMixStreamOutput : NSObject - +/** + isUrl 参数为 YES 时,则此值为 Url;否则为流名。 + */ @property (copy) NSString *target; - +/** + 输出流是否为 URL + */ @property BOOL isUrl; @end - +/** + 混流水印信息 + */ @interface ZegoMixStreamWatermark : NSObject - +/** + * 水印图片 ,只支持png、jpg格式 + + * 此值由 ZEGO 提供,开发者先将图片提供给 ZEGO,ZEGO 设置后再反馈水印图片的设置参数。 + */ @property (nonatomic, copy) NSString *image; - +/** + 混流画布左上角坐标的第一个值,即左上角坐标为 (left, top) + */ @property int left; - +/** + 混流画布左上角坐标的第二个值,左上角坐标为 (left, top) + */ @property int top; - +/** + 混流画布右下角坐标的第一个值,右下角坐标为 (right, bottom) + */ @property int right; - +/** + 混流画布右下角坐标的第二个值,右下角坐标为 (right, bottom) + */ @property int bottom; @end - +/** + 混流配置 + */ @interface ZegoMixStreamConfig : NSObject - +/** + 混流输出视频帧率,值范围:[1,30],根据网络情况设定该值,帧率越高画面越流畅。 + */ @property int outputFps; - +/** + * 混流输出码率控制模式,0 表示 CBR 恒定码率,1 表示 CRF 恒定质量,默认值为 0。 + + * CRF 恒定质量 表示保证视频的清晰度在固定水平上,因此若采用此控制模式,码率会根据网速的变化波动。 + + * 比如游戏类直播时,为了让观众看到比较流畅的操作类画面会使用恒定质量模式,提升视频质量。 + */ @property int outputRateControlMode; - +/** + * 混流输出视频码率,输出码率控制模式参数设置为 CBR恒定码率 时此设置值生效。 + + * 视频码率值范围:(0M,10M],此参数单位是 bps,1M = 1 * 1000 * 1000 bps + */ @property int outputBitrate; - +/** + * 混流输出质量,输出码率控制模式参数设置为 CRF恒定质量 时此设置值有效,有效值范围 [0,51],默认值是 23。 + + * 若想视频质量好点,在23的基础上降低质量值测试调整。 + + * 若想文件大小小一点,在23的基础上升高质量值测试调整; + + * 以 x 值下的文件大小为例, x + 6 值下的文件大小是 x 值下文件大小的一半,x - 6 值下的文件大小是 x 值下文件大小的两倍。 + */ @property int outputQuality; - +/** + * 混流输出音频码率,码率范围值是[10000, 192000]。 + + * 若音频编码格式采用 默认音频编码--即 outputAudioConfig 参数填 0,采用 1/2声道时,对应的建议码率值是 48k/64k,可根据需要在此基础上调整。 + + * 若音频编码格式采用 可选音频编码--即 outputAudioConfig 参数填 1,采用 1/2声道时,对应的建议码率值是 80k/128k,可根据需要在此基础上调整。 + */ @property int outputAudioBitrate; - +/** + * 混流输出视频分辨率,不确定用什么分辨率时可采用16:9的规格设置。 + + * 此参数中的宽必须大于等于 输入流列表中所有输入流中最大的分辨率宽,即right布局值;此参数中的高必须大于等于 输入流列表中所有输入流中最大的分辨率高,即bottom布局值;且输入流的布局位置不能超出此参数规定的范围。 + */ @property CGSize outputResolution; - +/** + * 混流输出音频编码格式,可选值为 0--默认编码,1--可选编码;默认值为 0。 + + * 0--默认编码:在低码率下,编码后的音质要明显好于 1--可选编码,在码率较大后,达到128kbps及以上,两种编码后的音质近乎相同。 + + * 1--可选编码:优点在于低复杂性,能兼容更多的设备播放;但是目前经过 0--默认编码 编码后的音频不能正常播放的情况很少。 + */ @property int outputAudioConfig; - +/** + 混流输入流列表,SDK 根据输入流列表中的流进行混流。 + */ @property (strong) NSMutableArray *inputStreamList; - +/** + 混流输出流列表 + */ @property (strong) NSMutableArray *outputList; - +/** + * 用户自定义数据 + + * 注意:userData自定义的数据通过媒体次要信息的 -onRecvMediaSideInfo:ofStream: 接口回调出来。 + */ @property NSData* userData; - +/** + 混流声道数,1-单声道,2-双声道,默认为单声道。 + */ @property int channels; - +/** + * 混流背景颜色,前三个字节为 RGB,即 0xRRGGBBxx。 + + * 例如:选取RGB为 #87CEFA 作为背景色,此处写为 0x87CEFA00。 + */ @property int outputBackgroundColor; - +/** + * 混流背景图,支持预设图片,如 (preset-id://xxx) + + * 此值由 ZEGO 提供,开发者先将背景图提供给 ZEGO,ZEGO 设置后再反馈背景图片的设置参数。 + */ @property (copy) NSString *outputBackgroundImage; - +/** + 是否开启音浪。YES:开启,NO:关闭;默认值是NO。 + */ @property BOOL withSoundLevel; - +/** + 扩展信息,备用。 + */ @property int extra; - +/** + 混流水印 + */ @property (nonatomic, strong) ZegoMixStreamWatermark *watermark; - +/** + * 混流输入为一条流时,是否混流;非必填参数。YES:不对单流混流,混流输出的流属性与单流一致(分辨率,编码格式等),混流配置中设置的分辨率等配置无效;NO:混单流,混流服务器会对此单流重新编解码,混流输出的流属性与混流配置相同。 + + * 若需要开启此功能,请与即构技术支持联系。 + */ @property (nonatomic, assign) BOOL singleStreamPassThrough; - +/** + * 高级配置选项,适用于某些定制化的需求,格式 "config1=xxx;config2=xxx"。 + * 请与即构技术支持联系了解可支持字段。 + */ @property (nonatomic, copy) NSString *advancedConfig; @end - +/** + 混流输出的单条混流的详细信息 + */ @interface ZegoMixStreamOutputResult : NSObject - +/** + 混流流 ID + */ @property (nonatomic, copy) NSString *streamID; - +/** + 拉取混流的 rtmp url 列表 + */ @property (nonatomic, strong) NSMutableArray *rtmpList; - +/** + 拉取混流的 hls url 列表 + */ @property (nonatomic, strong) NSMutableArray *hlsList; - +/** + 拉取混流的 flv url 列表 + */ @property (nonatomic, strong) NSMutableArray *flvList; @end - +/** + 混流结果 + */ @interface ZegoMixStreamResultEx : NSObject - +/** + 混流请求序号,对应于 [ZegoStreamMixer -mixStreamEx:mixStreamID:] 接口的返回值。 + */ @property int seq; - +/** + 不存在的输入流列表 + */ @property (nonatomic, strong) NSMutableArray *nonExistInputList; - +/** + 混流输出流列表,每路输出对应一个 ZegoMixStreamOutputResult 对象。 + */ @property (nonatomic, strong) NSMutableArray *outputResultList; @end - +/** + 混流中,发言者及其说话音量信息。 + */ @interface ZegoSoundLevelInMixedStreamInfo : NSObject - +/** + 音浪ID,用于标识用户,对应于 ZegoMixStreamConfig 的 inputStreamList 中的单条输入流信息的 soundLevelID 参数的设置值。 + */ @property (assign) unsigned int soundLevelID; - +/** + 音量level + */ @property (assign) unsigned char soundLevel; @end -#endif +#endif /* zego_api_mix_stream_defines_oc_h */ diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-mix-stream-oc.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-mix-stream-oc.h index e301a342..d4188cbc 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-mix-stream-oc.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-mix-stream-oc.h @@ -12,60 +12,156 @@ #include "zego-api-mix-stream-defines-oc.h" - +/** 混流不存在的流名键值,值为 NSArray* */ ZEGO_EXTERN NSString *const kZegoMixNonExistsStreamIDKey; - +/** 混流请求 seq 键值,值为 @(int) */ ZEGO_EXTERN NSString *const kZegoMixStreamReqSeqKey; - +/** + 混流配置信息的回调接口 + */ @protocol ZegoMixStreamDelegate @optional - +/** + 混流配置更新的回调 + + * 调用 ZegoStreamMixer -setDelegate: 设置了回调监听,并调用 ZegoStreamMixer -mixStream:seq: 设置混流配置后,SDK 通过此 API 通知调用方混流配置信息。 + * 注意:常见错误码及其含义请参考 ZegoError 中 kMixStream 开头的错误码定义。 + + @param errorCode 错误码,0 表示混流启动成功,非 0 表示混流启动失败。 + @param mixStreamID 混流 ID,与 ZegoCompleteMixStreamConfig 中的 outputStream 参数一致。 + @param info 混流播放信息 + + * info 参数里面的 key 包括: + * mixStreamID : 混流 ID + * rtmpList : rtmp url 列表 + * flvList : flv url 列表 + * hlsList : hls url 列表 + * nonExists : 混流不存在输入流列表 + * mixConfigSeq : 每次混流的Seq + */ - (void)onMixStreamConfigUpdate:(int)errorCode mixStream:(NSString *)mixStreamID streamInfo:(NSDictionary *)info; @end - +/** + 混流配置信息的回调接口 + */ @protocol ZegoMixStreamExDelegate @optional - +/** + 混流配置更新的回调 + + * 调用 ZegoStreamMixer -setMixStreamExDelegate: 设置了回调监听,并调用 ZegoStreamMixer -mixStreamEx:mixStreamID: 设置混流配置后,SDK 通过此 API 通知调用方混流配置结果。 + * 注意: + * 1. 如果输出流列表中输出流使用 URL 作为输出,则此回调中的 info 参数中不会包含有效的 rtmp、hls、flv 格式的混流信息,即使用该参数中的 url 不能拉取混流。 + * 2.常见错误码及其含义请参考 ZegoError 中 kMixStream 开头的错误码定义。 + + @param errorCode 错误码,0 表示混流启动成功,非 0 表示混流启动失败。 + @param mixStreamID 混流任务 ID,与 ZegoStreamMixer -mixStreamEx:mixStreamID: 中的 mixStreamID 参数一致。 + @param info 混流播放信息 + */ - (void)onMixStreamExConfigUpdate:(int)errorCode mixStream:(NSString *)mixStreamID streamInfo:(ZegoMixStreamResultEx *)info; - +/** + 混流转推CDN状态回调 + + @param statesInfo 转推CDN状态信息 + @param streamID 混流任务ID + */ - (void)onMixStreamRelayCDNStateUpdate:(NSArray *)statesInfo mixStreamID:(NSString*)streamID; @end - +/** + 混流中的发言者及其说话音量的回调通知接口 + */ @protocol ZegoLiveSoundLevelInMixedStreamDelegate @optional - +/** + 混流中的发言者及其说话音量信息的回调 + + * 注意:此接口是高频率同步回调,每秒钟10次通知,不拉流没有通知;请勿在该回调中处理耗时任务。 + + @param soundLevelList 混流中各单流的音量信息列表 + */ - (void)onSoundLevelInMixedStream:(NSArray *)soundLevelList; @end - +/** + 混流类 + */ @interface ZegoStreamMixer : NSObject - +/** + 设置接收混流配置更新结果的回调,对应于 ZegoStreamMixer -mixStream:seq: 接口的回调监听。 + + * 注意: + * 1.Deprecated 此方法不建议使用,建议使用 ZegoStreamMixer -setMixStreamExDelegate: 和 ZegoStreamMixer -mixStreamEx:mixStreamID: + * 2.若不再需要接收混流配置更新信息,调用 setDelegate:nil 去除回调监听。 + + @param delegate 实现了 ZegoMixStreamDelegate 代理的方法,用于混流时接收混流请求结果及配置更新信息。 + @see ZegoStreamMixer -mixStream:seq: + */ - (void)setDelegate:(id)delegate; - +/** + 设置拉取混流时对混流中音量的回调监听 + + * 注意: + * 1.此方法由拉取混流方调用。 + * 2.若不再需要接收混流中各单流的音量信息,调用 setSoundLevelInMixedStreamDelegate:nil 去除回调监听。 + + @param delegate 实现了 ZegoLiveSoundLevelInMixedStreamDelegate 代理的方法,用于拉取混流时接收混流中各单流的音量信息,可以根据此回调实现音浪。 + */ - (void)setSoundLevelInMixedStreamDelegate:(id)delegate; - +/** + 混流接口,只支持输出一路混流。 + + * 1.此 API 既是开始混流接口,也是停止混流接口;需要停止混流时,将 ZegoCompleteMixStreamConfig 参数中的 inputStreamList 置为空列表,即清空输入流列表,且开始、停止混流两次调用的 seq 参数保持一致。 + * 2.当混流信息变更(例如:混流的输入流列表发生增减、调整混流视频的输出码率等)时,需要调用此接口更新 ZEGO 混流服务器上的混流配置信息,且注意每次调用时此 API 的 seq 参数需保证一致。 + * 3.如果需要启动多个不同的混流,可以通过传入不同的 seq 来区分接收的 -onMixStreamConfigUpdate:mixStream:streamInfo: 回调。 + * 4.调用推流 API -startPublishing:title:flag: 或者 -startPublishing:title:flag:extraInfo: 时,需指定 flag 参数为 ZEGO_MIX_STREAM。 + + @param completeMixConfig 混流配置,详细配置信息请查看 ZegoCompleteMixStreamConfig + @param seq 开始混流的请求序号,回调会带回此 seq + @return true-同步调用成功,等待回调;false-同步调用失败,收不到回调。 + @note Deprecated 建议使用 ZegoStreamMixer -setMixStreamExDelegate: 和 ZegoStreamMixer -mixStreamEx:mixStreamID: 接口实现混流。 + */ - (bool)mixStream:(ZegoCompleteMixStreamConfig *)completeMixConfig seq:(int)seq; - +/** + 设置接收混流配置更新结果的回调监听,对应于 ZegoStreamMixer -mixStreamEx:mixStreamID: 接口的回调监听。 + + * 注意:若不再需要接收混流配置更新信息,调用 setMixStreamExDelegate:nil 去除回调监听。 + + @param delegate 实现了 ZegoMixStreamExDelegate 代理的方法,用于混流时接收混流请求结果及配置更新信息。 + @see ZegoStreamMixer -mixStreamEx:mixStreamID: + */ - (void)setMixStreamExDelegate:(id)delegate; - +/** + 混流接口,支持输出单路或者多路混流。 + + * 1.混流任务ID,表示混流任务的唯一ID,调用方应该保证 mixStreamID 的唯一性。如果 mixStreamID 相同,服务端就认为是更新同一个混流。 + * 2.此 API 既是开始混流、更新混流接口,也是停止混流接口。 + * 3.需要停止混流时,将 ZegoMixStreamConfig 参数中的 inputStreamList 置为空列表(即清空输入流列表),outputList 设置为和开始或更新混流的一致,将 mixStreamID 参数设置为和开始或更新混流的一致。 + * 4.当混流信息变更(例如:混流的输入流列表发生增减、调整混流视频的输出码率等)时,需要调用此接口更新 ZEGO 混流服务器上的混流配置信息,且注意每次调用时此 API 的 mixStreamID 参数需保证一致。 + * 5.如果需要启动多个不同的混流,可以传入不同的 mixStreamID,通过返回的 seq 来区分接收的 -onMixStreamExConfigUpdate:mixStream:streamInfo:回调。 + * 6.调用推流 API -startPublishing:title:flag: 或者 -startPublishing:title:flag:extraInfo: 时,需指定 flag 参数为 ZEGO_MIX_STREAM。 + + @param config 混流配置信息 + @param mixStreamID 混流任务ID + @return 大于 0 表示调用成功,且返回值为调用序号(seq),用以区分 -onMixStreamExConfigUpdate:mixStream:streamInfo: 回调;小于等于 0 表示调用失败。 + */ - (int)mixStreamEx:(ZegoMixStreamConfig *)config mixStreamID:(NSString *)mixStreamID; @end -#endif +#endif /* zego_api_mix_stream_oc_h */ diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-network-trace-defines-oc.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-network-trace-defines-oc.h index 00aa77ca..b915766a 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-network-trace-defines-oc.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-network-trace-defines-oc.h @@ -10,79 +10,122 @@ #import - +/** + * 网络探测接口 +*/ @interface ZegoNetworkTraceConfig : NSObject - +/** + * 探测是否强制启动traceroute 默认不启动0 启动1 + * 注意 开启traceroute 将会显著提升探测时间 最多jump 30次 (traceroute结果供参考,不代表最终连通性结果。优先已http,tcp,udp为准) + */ @property (nonatomic, assign) int traceroute; @end - +/** + * http探测结果 +*/ @interface ZegoHttpTraceResult : NSObject - +/** + * 检测结果 0正常,非0 失败 + */ @property (nonatomic, assign) unsigned int code; - +/** + * 探测消耗的时间 单位ms + */ @property (nonatomic, assign) int requestMs; @end - +/** + * tcp探测结果 +*/ @interface ZegoTcpTraceResult : NSObject - +/** + * 检测结果 0正常,非0 失败 + */ @property (nonatomic, assign) unsigned int code; - +/** + *tcp 链接消耗时间 单位ms + */ @property (nonatomic, assign) int connectMs; - +/** + *tcp rtt 单位ms + */ @property (nonatomic, assign) int rtt; @end - +/** + * udp探测结果 +*/ @interface ZegoUdpTraceResult : NSObject - +/** + * 检测结果 0正常,非0 失败 + */ @property (nonatomic, assign) unsigned int code; - +/** + *udp rtt 单位ms + */ @property (nonatomic, assign) int rtt; @end - +/* + traceroute探测结果 +*/ @interface ZegoTracerouteResult : NSObject - +/** + * 检测结果 0正常,非0 失败 + */ @property (nonatomic, assign) unsigned int code; - +/** + *tracert 单位ms + */ @property (nonatomic, assign) int time; @end - +/** + * 检测结果 +*/ @interface ZegoNetworkTraceResult : NSObject - +/** + * 检测结果 0正常,非0 失败 + */ @property (nonatomic, assign) unsigned int code; - +/** + * http 探测结果 +*/ @property (nonatomic, strong) ZegoHttpTraceResult *httpResult; - +/** + * tcp 探测结果 +*/ @property (nonatomic, strong) ZegoTcpTraceResult *tcpResult; - +/** + * udp 探测结果 +*/ @property (nonatomic, strong) ZegoUdpTraceResult *udpResult; - +/** + * traceroute 探测结果 +*/ @property (nonatomic, strong) ZegoTracerouteResult *tracerouteResult; @end -#endif +#endif /* zego_api_network_trace_defines_oc_h */ diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-network-trace-oc.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-network-trace-oc.h index 3babaa93..43ef927d 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-network-trace-oc.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-network-trace-oc.h @@ -11,31 +11,51 @@ #import #import "zego-api-network-trace-defines-oc.h" - +/** + trace 模块回调 + */ @protocol ZegoNetworkTraceDelegate @optional - +/** + @param result 检测结果 + */ - (void)onNetworkTrace:(unsigned int)errcode resultInfo:(ZegoNetworkTraceResult*)result; @end - +/** + 网络整体测试管理类 + */ @interface ZegoNetworkTrace : NSObject +/** + 获取 ZegoNetworkTrace 的单例对象 + @return ZegoNetworkTrace 的单例对象 + */ + (instancetype)sharedInstance; +/** + 设置trace的回调 + @param delegate 回调 + */ - (void)setNetworkTraceDelegate:(id)delegate; +/** + 开启网络整体质量测试 + @param config 配置参数 + */ - (void)startNetworkTrace:(ZegoNetworkTraceConfig*)config; - +/** + 停止网络整体质量测试 + */ - (void)stopNetworkTrace; @end -#endif +#endif /* zego_api_network_trace_oc_h */ diff --git a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-sound-level-oc.h b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-sound-level-oc.h index b86ec9f7..98725b14 100644 --- a/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-sound-level-oc.h +++ b/YuMi/Modules/YMRTC/Library/ZegoAudioRoom.framework/Headers/zego-api-sound-level-oc.h @@ -4,12 +4,12 @@ #import #include "zego-api-defines-oc.h" - +/** soundLevel 信息 */ @interface ZegoSoundLevelInfo: NSObject - +/** 流 ID */ @property(nonatomic, copy) NSString *streamID; - +/** soundLevel 数值 */ @property(nonatomic, assign) float soundLevel; @end @@ -19,11 +19,19 @@ @optional +/** + soundLevel 更新回调 + @param soundLevels 回调信息列表,列表项结构参考 ZegoSoundLevelInfo 定义 + */ - (void)onSoundLevelUpdate:(NSArray *)soundLevels; +/** + captureSoundLevel 更新回调 + @param captureSoundLevel 采集音量回调,结构参考 ZegoSoundLevelInfo 定义 + */ - (void)onCaptureSoundLevelUpdate:(ZegoSoundLevelInfo *)captureSoundLevel; @end @@ -31,21 +39,45 @@ @interface ZegoSoundLevel : NSObject +/** + 获取 ZegoSoundLevel 的单例对象 + @return ZegoSoundLevel 的单例对象 + */ + (instancetype)sharedInstance; +/** + 设置代理对象 + @param delegate 实现 ZegoSoundLevelDelegate 的代理对象 + @discussion 未设置代理,或者设置代理失败,会造成无法正常获取 soundLevel 回调 + */ - (void)setSoundLevelDelegate:(id)delegate; +/** + 设置 soundLevel 的监控周期 + @param timeInMS 时间周期,单位为毫秒,取值范围 [100, 3000]。默认 200 ms。 + @return true 成功;false 失败 + @discussion 该设置会影响 [ZegoSoundLevelDelegate -onSoundLevelUpdate:] [ZegoSoundLevelDelegate -onCaptureSoundLevelUpdate:] 的回调频率 + */ - (bool)setSoundLevelMonitorCycle:(unsigned int)timeInMS; +/** + 启动 soundLevel 监听 + @return true 成功,等待回调;false 失败 + @discussion startSoundLevelMonitor 后一定要 stopSoundLevelMonitor + */ - (bool)startSoundLevelMonitor; +/** + 停止 soundLevel 监听 + @return true 成功;false 失败 + */ - (bool)stopSoundLevelMonitor; @end -#endif +#endif /* zego_api_sound_level_oc_h */ diff --git a/YuMi/Modules/YMRTC/RealtimackExecutive.h b/YuMi/Modules/YMRTC/RealtimackExecutive.h deleted file mode 100644 index 389e5ed0..00000000 --- a/YuMi/Modules/YMRTC/RealtimackExecutive.h +++ /dev/null @@ -1,78 +0,0 @@ -// -// RTCManager.h -// YUMI -// -// Created by zu on 2021/10/19. -// - -#import -#import "RtcRepresendtation.h" -NS_ASSUME_NONNULL_BEGIN - -typedef enum : NSUInteger { - RtcEngineType_Agora = 1001, - RtcEngineType_Zego, - RtcEngineType_WJ, - RtcEngineType_AgoraFast, - RtcEngineType_TRTC, -} RtcEngineType; - -typedef NS_ENUM(NSInteger, BackMusicDisportDeclare) { - - BackMusicDisportDeclare_Stop = 1, - - BackMusicDisportDeclare_Pause, - - BackMusicDisportDeclare_Resume -}; - - -@interface RealtimackExecutive : NSObject - - -@property(nonatomic,getter=isRemoteDelicate) BOOL remoteDelicate; - - -@property(nonatomic,getter=isLocalDelicate) BOOL localDelicate; - - -+ (instancetype _Nonnull)initEngineAboutGenre:(RtcEngineType)type - delegate:(id _Nullable)delegate; - - -+ (instancetype _Nonnull)instance; -- (instancetype)init NS_UNAVAILABLE; -+ (instancetype)new NS_UNAVAILABLE; -- (id)copy NS_UNAVAILABLE; -- (id)mutableCopy NS_UNAVAILABLE; - - -- (BOOL)enterRoom:(NSString *)roomUid; - - -- (BOOL)enterRoom:(NSString *)roomUid trtcSign:(NSString *)sign; - - -- (void)pingencourage:(BOOL)on; - - -- (void)exitRoom; - -- (void)connectOtherRoom:(NSString *)roomUid userId:(NSString *)uid; - -- (void)disconnectOtherRoom; - -- (void)muteSole:(BOOL)mute userId:(NSString *)userId; - -- (BOOL)prohibitiportEncourageManual:(NSString *)filePath musicId:(int)musicId completion:(void (^)(NSString *))completion; - -- (BOOL)diversifictowardsionDisportDeclare:(BackMusicDisportDeclare)state; - -- (void)refurbishManualSound:(int)soundVol; - -- (void)refurbishConsumerSound:(int)soundVol; - -@property (nonatomic,assign) BOOL pingencourage; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRTC/RealtimackExecutive.m b/YuMi/Modules/YMRTC/RealtimackExecutive.m deleted file mode 100644 index 2ee5d67c..00000000 --- a/YuMi/Modules/YMRTC/RealtimackExecutive.m +++ /dev/null @@ -1,190 +0,0 @@ -// -// RTCManager.m -// YUMI -// -// Created by zu on 2021/10/19. -// - -#import "RealtimackExecutive.h" -#import "RtcImplRepresendtation.h" -#import "AgoraRealtimackConnector.h" -#import "ZegoRealtimackConnector.h" -#import "TRTCRealtimackConnector.h" - -@interface RealtimackExecutive() - -@property (nonatomic, strong) id engine; -@property (nonatomic, weak) id engineRepresedtation; -@property (nonatomic, assign) RtcEngineType engineGenre; - -@property(nonatomic, strong) NSString * importdChamberCid; - -@end - -@implementation RealtimackExecutive - -+ (instancetype)instance { - static dispatch_once_t onceToken; - static RealtimackExecutive *instance = nil; - dispatch_once(&onceToken,^{ - instance = [[self alloc] init]; - }); - return instance; -} - -- (instancetype)init { - self = [super init]; - if (self) { - _localDelicate = NO; - _remoteDelicate = NO; - _engineGenre = RtcEngineType_Agora; - } - return self; -} - -+ (instancetype)initEngineAboutGenre:(RtcEngineType)type delegate:(id _Nullable)delegate { - RealtimackExecutive* rtcManager = [self instance]; - [rtcManager setEngineGenre:type]; - [rtcManager setEngineRepresedtation:delegate]; - return rtcManager; -} - -- (BOOL)enterRoom:(NSString *)roomUid { - if (self.importdChamberCid && [self.importdChamberCid isEqualToString:roomUid]) { - return YES; - } - return [self.engine combintowardsionNarrow:roomUid completion:^{ - [self muteRemote:NO]; - [self muteLocal:NO]; - self.importdChamberCid = roomUid; - }]; -} - -- (BOOL)enterRoom:(NSString *)roomUid trtcSign:(nonnull NSString *)sign { - if (self.importdChamberCid && [self.importdChamberCid isEqualToString:roomUid]) { - return YES; - } - return [self.engine combintowardsionNarrow:roomUid sign:sign completion:^{ - [self muteRemote:NO]; - [self muteLocal:NO]; - self.importdChamberCid = roomUid; - }]; -} - -- (BOOL)muteRemote:(BOOL)mute { - return [self.engine muteRemote:mute]; -} - -- (void)pingencourage:(BOOL)on { - [self.engine pingencourage:on]; - if (on) { - [self.engine muteLocal:self.isLocalDelicate]; - } -} - -- (BOOL)muteLocal:(BOOL)mute { - return [self.engine muteLocal:mute]; -} - -- (void)exitRoom { - [self.engine routeNarrow:^{ - [self muteRemote:NO]; - [self muteLocal:NO]; - self.importdChamberCid = nil; - }]; -} - -- (void)connectOtherRoom:(NSString *)roomUid userId:(NSString *)uid { - [self.engine pingencourage:YES]; - [self.engine connectOtherRoom:roomUid userId:uid]; -} - -- (void)disconnectOtherRoom { - [self.engine disconnectOtherRoom]; -} - -- (void)muteSole:(BOOL)mute userId:(NSString *)userId { - [self.engine muteRemote:mute userId:userId]; -} - -- (void)destory { - [self.engine destory]; -} - -- (BOOL)prohibitiportEncourageManual:(NSString *)filePath musicId:(int)musicId completion:(void (^)(NSString *))completion{ - return [self.engine prohibitiportEncourageManual:filePath musicId:musicId completion:completion]; -} - -- (BOOL)diversifictowardsionDisportDeclare:(BackMusicDisportDeclare)state { - return [self.engine diversifictowardsionDisportDeclare:state]; -} - -- (void)refurbishManualSound:(int)soundVol { - [self.engine refurbishManualSound:soundVol]; -} - -- (void)refurbishConsumerSound:(int)soundVol { - [self.engine refurbishConsumerSound:soundVol]; -} - -- (void)consumersSpeaking:(NSMutableArray *)uids { - if (self.engineRepresedtation) { - [self.engineRepresedtation consumersSpeaking:uids]; - } -} - -- (void)setRemoteDelicate:(BOOL)remoteDelicate { - if ([self.engine muteRemote:remoteDelicate]) { - _remoteDelicate = remoteDelicate; - } -} - -- (void)setLocalDelicate:(BOOL)localDelicate { - if ([self.engine muteLocal:localDelicate]) { - _localDelicate = localDelicate; - } -} - -- (void)setEngineGenre:(RtcEngineType)type { - if (_engine && type != _engineGenre) { - [_engine routeNarrow:nil]; - [_engine destory]; - _engine = nil; - _importdChamberCid = nil; - } - _engineGenre = type; -} - -- (void)setEngineRepresedtation:(id)delegate { - _engineRepresedtation = delegate; -} - -- (id)engine { - if (!_engine) { - switch (_engineGenre) { - case RtcEngineType_Agora: - { - _engine = [[AgoraRealtimackConnector alloc] initWithDelegate:self]; - } - break; - case RtcEngineType_Zego: - { - _engine = [[ZegoRealtimackConnector alloc] initWithDelegate:self]; - } - break; - case RtcEngineType_TRTC: - { - _engine = [[TRTCRealtimackConnector alloc] initWithDelegate:self]; - } - break; - default: - { - _engine = [[AgoraRealtimackConnector alloc] initWithDelegate:self]; - } - break; - } - } - return _engine; -} - -@end diff --git a/YuMi/Modules/YMRTC/RtcDelegate.h b/YuMi/Modules/YMRTC/RtcDelegate.h new file mode 100644 index 00000000..136c5e82 --- /dev/null +++ b/YuMi/Modules/YMRTC/RtcDelegate.h @@ -0,0 +1,20 @@ +// +// RTCDelegate.h +// YUMI +// +// Created by zu on 2021/10/19. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol RtcDelegate + +/** + 当前正在讲话的用户回调。 + */ +- (void)usersSpeaking:(NSMutableArray * _Nullable)uids; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRTC/RtcImpl/AgoraRealtimackConnector.h b/YuMi/Modules/YMRTC/RtcImpl/AgoraRealtimackConnector.h deleted file mode 100644 index aa931b6e..00000000 --- a/YuMi/Modules/YMRTC/RtcImpl/AgoraRealtimackConnector.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// AgoraRealtimackConnector.h -// YUMI -// -// Created by zu on 2021/10/19. -// - -#import "BaseRealtimackConnector.h" -#import "RtcRepresendtation.h" -NS_ASSUME_NONNULL_BEGIN - -@interface AgoraRealtimackConnector : BaseRealtimackConnector - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRTC/RtcImpl/AgoraRealtimackConnector.m b/YuMi/Modules/YMRTC/RtcImpl/AgoraRealtimackConnector.m deleted file mode 100644 index d8d0517b..00000000 --- a/YuMi/Modules/YMRTC/RtcImpl/AgoraRealtimackConnector.m +++ /dev/null @@ -1,146 +0,0 @@ -// -// AgoraRealtimackConnector.m -// YUMI -// -// Created by zu on 2021/10/19. -// - -#import "AgoraRealtimackConnector.h" -#import "YUMIConstant.h" -#import -#import "RtcInterface.h" - -@interface AgoraRealtimackConnector() - -@property(nonatomic, strong) AgoraRtcEngineKit *engine; -@property (nonatomic,copy) void(^MusicCompletion)(NSString *filePath); -@property (nonatomic,copy) NSString *filePath; -@end - -@implementation AgoraRealtimackConnector - -- (instancetype)initWithDelegate:(id)delegate { - self = [super initWithDelegate:delegate]; - if (self) { - _engine = [AgoraRtcEngineKit sharedEngineWithAppId:KeyWithType(KeyGenre_Agora) delegate:self]; - [_engine setChannelProfile:AgoraChannelProfileLiveBroadcasting]; - [_engine enableLastmileTest]; - [_engine setParameters:@"{\"che.audio.keep.audiosession\":true}"]; - [_engine enableAudio]; - [_engine disableVideo]; - [_engine enableAudioVolumeIndication:900 smooth:3 report_vad:YES]; - [_engine setAudioProfile:AgoraAudioProfileMusicStandard scenario:AgoraAudioScenarioChatRoomEntertainment]; -#ifdef DEBUG - [_engine setLogFilter:AgoraLogFilterInfo]; -#else - [_engine setLogFilter:0]; -#endif - } - return self; -} - -#pragma mark - RtcInterface impl -- (BOOL)combintowardsionNarrow:(nonnull NSString *)channelId completion:(void (^ _Nullable)(void))completion { - [self.engine setClientRole:AgoraClientRoleAudience]; - int code = [self.engine joinChannelByToken:nil channelId:channelId info:nil uid:[[[AccountAbstractStorage instance] acquireCid] integerValue] joinSuccess:^(NSString * _Nonnull channel, NSUInteger uid, NSInteger elapsed) { - if (completion) { - completion(); - } - }]; - return code == 0; -} - -- (BOOL)muteRemote:(BOOL)mute { - return [self.engine muteAllRemoteAudioStreams:mute] == 0; -} - -- (void)pingencourage:(BOOL)on { - [self.engine setClientRole:on ? AgoraClientRoleBroadcaster : AgoraClientRoleAudience]; -} - -- (BOOL)muteLocal:(BOOL)mute { - return [self.engine muteLocalAudioStream:mute] == 0; -} - -- (void)routeNarrow:(void (^ _Nullable)(void))completion { - [self.engine leaveChannel:^(AgoraChannelStats * _Nonnull stat) { - if (completion) { - completion(); - } - }]; -} - -- (void)destory { - [AgoraRtcEngineKit destroy]; -} - -- (BOOL)prohibitiportEncourageManual:(NSString *)filePath musicId:(int)musicId completion:(nonnull void (^)(NSString * _Nonnull))completion { - if (filePath) { - self.MusicCompletion = completion; - [self diversifictowardsionDisportDeclare:BackMusicDisportDeclare_Stop]; - [self.engine startAudioMixing:filePath loopback:NO replace:NO cycle:1]; - return YES; - } else { - return NO; - } -} - -- (BOOL)diversifictowardsionDisportDeclare:(BackMusicDisportDeclare)state { - BOOL isPlaying = NO; - switch (state) { - case BackMusicDisportDeclare_Stop: - { - [self.engine stopAudioMixing]; - isPlaying = NO; - } - break; - case BackMusicDisportDeclare_Pause: - { - [self.engine pauseAudioMixing]; - isPlaying = NO; - } - break; - case BackMusicDisportDeclare_Resume: - { - [self.engine resumeAudioMixing]; - isPlaying = YES; - } - default: - break; - } - return isPlaying; -} - -- (void)refurbishConsumerSound:(int)soundVol { - [self.engine adjustRecordingSignalVolume:soundVol]; -} - -- (void)refurbishManualSound:(int)soundVol { - [self.engine adjustAudioMixingVolume:soundVol]; -} - -#pragma mark - AgoraRtcEngineDelegate -- (void)rtcEngine:(AgoraRtcEngineKit *)engine reportAudioVolumeIndicationOfSpeakers:(NSArray *)speakers totalVolume:(NSInteger)totalVolume { - NSMutableArray *uids = [NSMutableArray array]; - for (AgoraRtcAudioVolumeInfo *userInfo in speakers) { - NSString *uid = [NSString stringWithFormat:@"%ld", (long)userInfo.uid]; - if (userInfo.volume > 15){ - if (uid.integerValue == 0) { - [uids addObject:[[AccountAbstractStorage instance] acquireCid]]; - }else { - [uids addObject:uid]; - } - } - } - [self.delegate consumersSpeaking:uids]; -} - -- (void)rtcEngineLocalAudioMixingDidFinish:(AgoraRtcEngineKit *)engine { - if (self.MusicCompletion) { - self.MusicCompletion(self.filePath); - } - - [[NSNotificationCenter defaultCenter] postNotificationName:kRoomBackMusicPlayMusicFinishKey object:self.filePath]; -} - -@end diff --git a/YuMi/Modules/YMRTC/RtcImpl/AgoraRtcImpl.h b/YuMi/Modules/YMRTC/RtcImpl/AgoraRtcImpl.h new file mode 100644 index 00000000..00010eb5 --- /dev/null +++ b/YuMi/Modules/YMRTC/RtcImpl/AgoraRtcImpl.h @@ -0,0 +1,16 @@ +// +// AgoraRtcImpl.h +// YUMI +// +// Created by zu on 2021/10/19. +// + +#import "BaseRtcImpl.h" +#import "RtcDelegate.h" +NS_ASSUME_NONNULL_BEGIN + +@interface AgoraRtcImpl : BaseRtcImpl + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRTC/RtcImpl/AgoraRtcImpl.m b/YuMi/Modules/YMRTC/RtcImpl/AgoraRtcImpl.m new file mode 100644 index 00000000..270448e6 --- /dev/null +++ b/YuMi/Modules/YMRTC/RtcImpl/AgoraRtcImpl.m @@ -0,0 +1,153 @@ +// +// AgoraRtcImpl.m +// YUMI +// +// Created by zu on 2021/10/19. +// + +#import "AgoraRtcImpl.h" +#import "YUMIConstant.h" +#import +#import "RtcInterface.h" + +@interface AgoraRtcImpl() + +@property(nonatomic, strong) AgoraRtcEngineKit *engine; +///音乐播放完成 +@property (nonatomic,copy) void(^MusicCompletion)(NSString *filePath); +///播放的路径 +@property (nonatomic,copy) NSString *filePath; +@end + +@implementation AgoraRtcImpl + +- (instancetype)initWithDelegate:(id)delegate { + self = [super initWithDelegate:delegate]; + if (self) { + _engine = [AgoraRtcEngineKit sharedEngineWithAppId:KeyWithType(KeyType_Agora) delegate:self]; + [_engine setChannelProfile:AgoraChannelProfileLiveBroadcasting]; + [_engine enableLastmileTest]; + [_engine setParameters:@"{\"che.audio.keep.audiosession\":true}"]; + [_engine enableAudio]; + [_engine disableVideo]; + [_engine enableAudioVolumeIndication:900 smooth:3 report_vad:YES]; + [_engine setAudioProfile:AgoraAudioProfileMusicStandard scenario:AgoraAudioScenarioChatRoomEntertainment]; +#ifdef DEBUG + [_engine setLogFilter:AgoraLogFilterInfo]; +#else + [_engine setLogFilter:0]; +#endif + } + return self; +} + +#pragma mark - RtcInterface impl +- (BOOL)joinChannel:(nonnull NSString *)channelId completion:(void (^ _Nullable)(void))completion { + [self.engine setClientRole:AgoraClientRoleAudience]; + int code = [self.engine joinChannelByToken:nil channelId:channelId info:nil uid:[[[AccountInfoStorage instance] getUid] integerValue] joinSuccess:^(NSString * _Nonnull channel, NSUInteger uid, NSInteger elapsed) { + if (completion) { + completion(); + } + }]; + return code == 0; +} + +- (BOOL)muteRemote:(BOOL)mute { + return [self.engine muteAllRemoteAudioStreams:mute] == 0; +} + +- (void)broadcast:(BOOL)on { + [self.engine setClientRole:on ? AgoraClientRoleBroadcaster : AgoraClientRoleAudience]; +} + +- (BOOL)muteLocal:(BOOL)mute { + return [self.engine muteLocalAudioStream:mute] == 0; +} + +- (void)exitChannel:(void (^ _Nullable)(void))completion { + [self.engine leaveChannel:^(AgoraChannelStats * _Nonnull stat) { + if (completion) { + completion(); + } + }]; +} + +- (void)destory { + [AgoraRtcEngineKit destroy]; +} + +/// 播放背景音乐 +/// @param filePath 音频文件的地址 +/// @param musicId TRTC自己要的 +- (BOOL)playBackMusic:(NSString *)filePath musicId:(int)musicId completion:(nonnull void (^)(NSString * _Nonnull))completion { + if (filePath) { + self.MusicCompletion = completion; + [self changePlayState:BackMusicPlayState_Stop];//切换歌曲need stop + [self.engine startAudioMixing:filePath loopback:NO replace:NO cycle:1]; + return YES; + } else { + return NO; + } +} + +/// 改变播放器的状态 +/// @param state 播放状态 +- (BOOL)changePlayState:(BackMusicPlayState)state { + BOOL isPlaying = NO; + switch (state) { + case BackMusicPlayState_Stop: + { + [self.engine stopAudioMixing]; + isPlaying = NO; + } + break; + case BackMusicPlayState_Pause: + { + [self.engine pauseAudioMixing]; + isPlaying = NO; + } + break; + case BackMusicPlayState_Resume: + { + [self.engine resumeAudioMixing]; + isPlaying = YES; + } + default: + break; + } + return isPlaying; +} + +- (void)updateUserSound:(int)soundVol { + [self.engine adjustRecordingSignalVolume:soundVol]; +} + +- (void)updateMusicSound:(int)soundVol { + [self.engine adjustAudioMixingVolume:soundVol]; +} + +#pragma mark - AgoraRtcEngineDelegate +- (void)rtcEngine:(AgoraRtcEngineKit *)engine reportAudioVolumeIndicationOfSpeakers:(NSArray *)speakers totalVolume:(NSInteger)totalVolume { + NSMutableArray *uids = [NSMutableArray array]; + for (AgoraRtcAudioVolumeInfo *userInfo in speakers) { + NSString *uid = [NSString stringWithFormat:@"%ld", (long)userInfo.uid]; + if (userInfo.volume > 15){ + if (uid.integerValue == 0) { + [uids addObject:[[AccountInfoStorage instance] getUid]]; + }else { + [uids addObject:uid]; + } + } + } + [self.delegate usersSpeaking:uids]; +} + +- (void)rtcEngineLocalAudioMixingDidFinish:(AgoraRtcEngineKit *)engine { + if (self.MusicCompletion) { + self.MusicCompletion(self.filePath); + } + ///这个用在最小化的时候 因为最小化没办法知道当前歌曲是否播放完毕了 目前没有想到其他的好的版本就用通知吧 + [[NSNotificationCenter defaultCenter] postNotificationName:kRoomBackMusicPlayMusicFinishKey object:self.filePath]; +} + +@end diff --git a/YuMi/Modules/YMRTC/RtcImpl/BaseRealtimackConnector.h b/YuMi/Modules/YMRTC/RtcImpl/BaseRealtimackConnector.h deleted file mode 100644 index 8ce7459d..00000000 --- a/YuMi/Modules/YMRTC/RtcImpl/BaseRealtimackConnector.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// RTCBaseImpl.h -// YUMI -// -// Created by zu on 2021/10/19. -// - -#import -#import "RtcInterface.h" -#import "RtcImplRepresendtation.h" -#import "AccountAbstractStorage.h" -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -UIKIT_EXTERN NSString * kRoomBackMusicPlayMusicFinishKey; - -@interface BaseRealtimackConnector : NSObject - -@property (nonatomic,weak) id delegate; - -- (instancetype)initWithDelegate:(id)delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRTC/RtcImpl/BaseRealtimackConnector.m b/YuMi/Modules/YMRTC/RtcImpl/BaseRealtimackConnector.m deleted file mode 100644 index 3014b773..00000000 --- a/YuMi/Modules/YMRTC/RtcImpl/BaseRealtimackConnector.m +++ /dev/null @@ -1,44 +0,0 @@ -// -// RTCBaseImpl.m -// YUMI -// -// Created by zu on 2021/10/19. -// - -#import "BaseRealtimackConnector.h" - -@implementation BaseRealtimackConnector - -- (instancetype)initWithDelegate:(id)delegate{ - self = [super init]; - if (self) { - self.delegate = delegate; - } - return self; -} - -- (BOOL)combintowardsionNarrow:(nonnull NSString *)channelId completion:(void (^ _Nullable)(void))completion { - return NO; -} - -- (BOOL)muteRemote:(BOOL)mute { - return NO; -} - -- (void)pingencourage:(BOOL)on { - -} - -- (BOOL)muteLocal:(BOOL)mute { - return NO; -} - -- (void)routeNarrow:(void (^ _Nullable)(void))completion { - -} - -- (void)destory { - -} - -@end diff --git a/YuMi/Modules/YMRTC/RtcImpl/BaseRtcImpl.h b/YuMi/Modules/YMRTC/RtcImpl/BaseRtcImpl.h new file mode 100644 index 00000000..f1b13e05 --- /dev/null +++ b/YuMi/Modules/YMRTC/RtcImpl/BaseRtcImpl.h @@ -0,0 +1,25 @@ +// +// RTCBaseImpl.h +// YUMI +// +// Created by zu on 2021/10/19. +// + +#import +#import "RtcInterface.h" +#import "RtcImplDelegate.h" +#import "AccountInfoStorage.h" +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +UIKIT_EXTERN NSString * kRoomBackMusicPlayMusicFinishKey; + +@interface BaseRtcImpl : NSObject + +@property (nonatomic,weak) id delegate; + +- (instancetype)initWithDelegate:(id)delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRTC/RtcImpl/BaseRtcImpl.m b/YuMi/Modules/YMRTC/RtcImpl/BaseRtcImpl.m new file mode 100644 index 00000000..0aeb905b --- /dev/null +++ b/YuMi/Modules/YMRTC/RtcImpl/BaseRtcImpl.m @@ -0,0 +1,44 @@ +// +// RTCBaseImpl.m +// YUMI +// +// Created by zu on 2021/10/19. +// + +#import "BaseRtcImpl.h" + +@implementation BaseRtcImpl + +- (instancetype)initWithDelegate:(id)delegate{ + self = [super init]; + if (self) { + self.delegate = delegate; + } + return self; +} + +- (BOOL)joinChannel:(nonnull NSString *)channelId completion:(void (^ _Nullable)(void))completion { + return NO; +} + +- (BOOL)muteRemote:(BOOL)mute { + return NO; +} + +- (void)broadcast:(BOOL)on { + +} + +- (BOOL)muteLocal:(BOOL)mute { + return NO; +} + +- (void)exitChannel:(void (^ _Nullable)(void))completion { + +} + +- (void)destory { + +} + +@end diff --git a/YuMi/Modules/YMRTC/RtcImpl/RtcImplDelegate.h b/YuMi/Modules/YMRTC/RtcImpl/RtcImplDelegate.h new file mode 100644 index 00000000..6d465e7a --- /dev/null +++ b/YuMi/Modules/YMRTC/RtcImpl/RtcImplDelegate.h @@ -0,0 +1,22 @@ +// +// RtcImplDelegate.h +// YUMI +// +// Created by zu on 2021/10/21. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol RtcImplDelegate + +/** + 用户讲话回调。 + */ +- (void)usersSpeaking:(NSMutableArray * _Nullable)uids; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRTC/RtcImpl/RtcImplRepresendtation.h b/YuMi/Modules/YMRTC/RtcImpl/RtcImplRepresendtation.h deleted file mode 100644 index e3112c82..00000000 --- a/YuMi/Modules/YMRTC/RtcImpl/RtcImplRepresendtation.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// RtcImplRepresendtation.h -// YUMI -// -// Created by zu on 2021/10/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol RtcImplRepresendtation - - -- (void)consumersSpeaking:(NSMutableArray * _Nullable)uids; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRTC/RtcImpl/RtcInterface.h b/YuMi/Modules/YMRTC/RtcImpl/RtcInterface.h index 32189c0b..4b77c4c0 100644 --- a/YuMi/Modules/YMRTC/RtcImpl/RtcInterface.h +++ b/YuMi/Modules/YMRTC/RtcImpl/RtcInterface.h @@ -6,43 +6,68 @@ // #import -#import "RealtimackExecutive.h" +#import "RtcManager.h" NS_ASSUME_NONNULL_BEGIN @protocol RtcInterface @required - -- (BOOL)combintowardsionNarrow:(NSString *)channelId completion:(void(^ __nullable)(void))completion; - +/** + 加入频道(房间) + */ +- (BOOL)joinChannel:(NSString *)channelId completion:(void(^ __nullable)(void))completion; +/** + 静音 + */ - (BOOL)muteRemote:(BOOL)mute; - +/** + 静音某个用户 + userId: 用户ID + */ - (BOOL)muteRemote:(BOOL)mute userId:(NSString *)userId; +/** + 上下麦(说话) + */ +- (void)broadcast:(BOOL)on; -- (void)pingencourage:(BOOL)on; - - +/** + 闭麦 + */ - (BOOL)muteLocal:(BOOL)mute; - -- (void)routeNarrow:(void(^ __nullable)(void))completion; - +/** + 退出频道 + */ +- (void)exitChannel:(void(^ __nullable)(void))completion; +/** + 销毁引擎 + */ - (void)destory; @optional +/** + 加入频道(房间),TRTC 进房需要动态签名。 + */ +- (BOOL)joinChannel:(NSString *)channelId sign:(NSString *)sign completion:(void(^ __nullable)(void))completion; -- (BOOL)combintowardsionNarrow:(NSString *)channelId sign:(NSString *)sign completion:(void(^ __nullable)(void))completion; - +///发起跨房通话 - (void)connectOtherRoom:(NSString *)roomUId userId:(NSString *)userId; +///退出跨房通话 - (void)disconnectOtherRoom; -- (BOOL)prohibitiportEncourageManual:(NSString *)filePath musicId:(int)musicId completion:(void (^)(NSString *))completion; +/// @param filePath 音频文件的地址 +/// @param musicId TRTC自己要的 +- (BOOL)playBackMusic:(NSString *)filePath musicId:(int)musicId completion:(void (^)(NSString *))completion; -- (BOOL)diversifictowardsionDisportDeclare:(BackMusicDisportDeclare)state; +/// 改变播放器的状态 +/// @param state 播放状态 +- (BOOL)changePlayState:(BackMusicPlayState)state; -- (void)refurbishManualSound:(int)soundVol; +///背景音乐的音量大小 +- (void)updateMusicSound:(int)soundVol; -- (void)refurbishConsumerSound:(int)soundVol; +///背景人声的音量大小 +- (void)updateUserSound:(int)soundVol; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRTC/RtcImpl/TRTCRealtimackConnector.h b/YuMi/Modules/YMRTC/RtcImpl/TRTCRealtimackConnector.h deleted file mode 100644 index 6a66adb1..00000000 --- a/YuMi/Modules/YMRTC/RtcImpl/TRTCRealtimackConnector.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// TRTCRealtimackConnector.h -// YUMI -// -// Created by zu on 2021/12/6. -// - -#import "BaseRealtimackConnector.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface TRTCRealtimackConnector : BaseRealtimackConnector - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRTC/RtcImpl/TRTCRealtimackConnector.m b/YuMi/Modules/YMRTC/RtcImpl/TRTCRealtimackConnector.m deleted file mode 100644 index e72e525f..00000000 --- a/YuMi/Modules/YMRTC/RtcImpl/TRTCRealtimackConnector.m +++ /dev/null @@ -1,214 +0,0 @@ -// -// TRTCRealtimackConnector.m -// YUMI -// -// Created by zu on 2021/12/6. -// - -#import "TRTCRealtimackConnector.h" -#import "YUMIConstant.h" -#import "YUMIMacroUitls.h" -#import - -@interface TRTCRealtimackConnector() - -@property (strong, nonatomic) TRTCCloud *engine; -@property (nonatomic, strong) TXAudioEffectManager *manualExecutive; -@property (nonatomic,copy) void(^MusicCompletion)(NSString *filePath); -@property (nonatomic,assign) int musicId; - -@end - -@implementation TRTCRealtimackConnector - -- (instancetype)initWithDelegate:(id)delegate { - self = [super initWithDelegate:delegate]; - if (self) { - _engine = [TRTCCloud sharedInstance]; - [_engine enableAudioVolumeEvaluation:900]; - [TRTCCloud setConsoleEnabled:NO]; - _engine.delegate = self; - } - return self; -} - -#pragma mark - RtcInterface impl -- (BOOL)combintowardsionNarrow:(NSString *)channelId sign:(nonnull NSString *)sign completion:(void (^)(void))completion { - [self.engine enableAudioVolumeEvaluation:900]; - TRTCParams *params = [[TRTCParams alloc] init]; - UInt32 appId; - sscanf([KeyWithType(KeyGenre_TRTC) UTF8String], "%u", &appId); - params.sdkAppId = appId; - UInt32 roomId; - sscanf([channelId UTF8String], "%u", &roomId); - params.roomId = roomId; - - params.userId = [[AccountAbstractStorage instance] acquireCid]; - params.userSig = sign; - params.role = TRTCRoleAudience; - [self.engine enterRoom:params appScene:TRTCAppSceneLIVE]; - if (completion) { - completion(); - } - return YES; -} - -- (void)connectOtherRoom:(NSString *)roomUid userId:(NSString *)uid { - NSMutableDictionary *jsonDict = [[NSMutableDictionary alloc] init]; - if (roomUid.integerValue > INT_MAX) { - [jsonDict setObject:@(uid.integerValue) forKey:@"roomId"]; - } else { - [jsonDict setObject:@([roomUid intValue]) forKey:@"roomId"]; - } - - [jsonDict setObject:uid forKey:@"userId"]; - NSData* jsonData = [NSJSONSerialization dataWithJSONObject:jsonDict options:NSJSONWritingPrettyPrinted error:nil]; - NSString* jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; - [self.engine connectOtherRoom:jsonString]; -} - -- (void)disconnectOtherRoom { - [self.engine disconnectOtherRoom]; -} - -- (void)onConnectOtherRoom:(NSString *)userId errCode:(TXLiteAVError)errCode errMsg:(NSString *)errMsg { - if (errCode == ERR_NULL) { - - } -} - -- (void)onDisconnectOtherRoom:(TXLiteAVError)errCode errMsg:(NSString *)errMsg { - -} - -- (void)onUserAudioAvailable:(NSString *)userId available:(BOOL)available { - NSLog(@"成功userid:%@", userId); - if (available) { - - } -} - -- (BOOL)muteRemote:(BOOL)mute { - [self.engine muteAllRemoteAudio:mute]; - return YES; -} - -- (BOOL)muteRemote:(BOOL)mute userId:(NSString *)userId { - [self.engine muteRemoteAudio:userId mute:mute]; - return YES; -} - -- (void)pingencourage:(BOOL)on { - [self.engine switchRole:on ? TRTCRoleAnchor : TRTCRoleAudience]; - if (on) { - NSString *jsonString = @"{\"api\":\"setAudioQualityEx\",\"params\":{\"sampleRate\":48000,\"channel\":2,\"bitrate\":192,\"encodeMode\":1,\"systemVolumeType\":1}}"; - [self.engine callExperimentalAPI:jsonString]; - NSString *aecString = @"{\"api\":\"enableAudioAEC\",\"params\":{\"enable\":1,\"level\":100}}"; - [self.engine callExperimentalAPI:aecString]; - [self.engine startLocalAudio:TRTCAudioQualityMusic]; - } else { - [self.engine stopLocalAudio]; - } -} - -- (BOOL)muteLocal:(BOOL)mute { - [self.engine muteLocalAudio:mute]; - return YES; -} - -- (void)routeNarrow:(void (^)(void))completion { - - [self.engine exitRoom]; - if (completion) { - completion(); - } -} - -- (void)destory { - [TRTCCloud destroySharedIntance]; -} - -- (BOOL)prohibitiportEncourageManual:(NSString *)filePath musicId:(int)musicId completion:(void (^)(NSString *))completion{ - if (filePath) { - self.MusicCompletion = completion; - [self diversifictowardsionDisportDeclare:BackMusicDisportDeclare_Stop]; - self.musicId = musicId; - if (self.manualExecutive == nil) { - self.manualExecutive = [self.engine getAudioEffectManager]; - } - - TXAudioMusicParam *param = [[TXAudioMusicParam alloc] init]; - param.ID = musicId; - param.path = filePath; - @kWeakify(self); - [self.manualExecutive startPlayMusic:param onStart:^(NSInteger errCode) { - - } onProgress:^(NSInteger progressMs, NSInteger durationMs) { - - } onComplete:^(NSInteger errCode) { - @kStrongify(self); - self.MusicCompletion(filePath); - - [[NSNotificationCenter defaultCenter] postNotificationName:kRoomBackMusicPlayMusicFinishKey object:filePath]; - }]; - return YES; - } else { - return NO; - } - -} - -- (BOOL)diversifictowardsionDisportDeclare:(BackMusicDisportDeclare)state { - BOOL isPlaying = NO; - switch (state) { - case BackMusicDisportDeclare_Stop: - { - [self.manualExecutive stopPlayMusic:self.musicId]; - isPlaying = NO; - } - break; - case BackMusicDisportDeclare_Pause: - { - [self.manualExecutive pausePlayMusic:self.musicId]; - isPlaying = NO; - } - break; - case BackMusicDisportDeclare_Resume: - { - [self.manualExecutive resumePlayMusic:self.musicId]; - isPlaying = YES; - } - default: - break; - } - return isPlaying; -} - -- (void)refurbishConsumerSound:(int)soundVol { - [self.engine setAudioCaptureVolume:soundVol]; -} - -- (void)refurbishManualSound:(int)soundVol { - [self.manualExecutive setMusicPublishVolume:self.musicId volume:soundVol * 1.5]; - [self.manualExecutive setMusicPlayoutVolume:self.musicId volume:soundVol * 1.5]; -} - -#pragma mark - TRTCCloudDelegate -- (void)onUserVoiceVolume:(NSArray *)userVolumes totalVolume:(NSInteger)totalVolume { - NSMutableArray *uids = [NSMutableArray array]; - for (TRTCVolumeInfo *userInfo in userVolumes) { - NSString *uid = userInfo.userId; - if (userInfo.volume > 2){ - if (uid.integerValue == 0) { - if ([AccountAbstractStorage instance].acquireCid.length > 0){ - [uids addObject:[[AccountAbstractStorage instance] acquireCid]]; - } - }else { - [uids addObject:uid]; - } - } - } - [self.delegate consumersSpeaking:uids]; -} - -@end diff --git a/YuMi/Modules/YMRTC/RtcImpl/TRTCRtcImpl.h b/YuMi/Modules/YMRTC/RtcImpl/TRTCRtcImpl.h new file mode 100644 index 00000000..fbe9c35e --- /dev/null +++ b/YuMi/Modules/YMRTC/RtcImpl/TRTCRtcImpl.h @@ -0,0 +1,16 @@ +// +// TRTCRtcImpl.h +// YUMI +// +// Created by zu on 2021/12/6. +// + +#import "BaseRtcImpl.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface TRTCRtcImpl : BaseRtcImpl + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRTC/RtcImpl/TRTCRtcImpl.m b/YuMi/Modules/YMRTC/RtcImpl/TRTCRtcImpl.m new file mode 100644 index 00000000..93202ac9 --- /dev/null +++ b/YuMi/Modules/YMRTC/RtcImpl/TRTCRtcImpl.m @@ -0,0 +1,234 @@ +// +// TRTCRtcImpl.m +// YUMI +// +// Created by zu on 2021/12/6. +// + +#import "TRTCRtcImpl.h" +#import "YUMIConstant.h" +#import "YUMIMacroUitls.h" +#import + +@interface TRTCRtcImpl() + +@property (strong, nonatomic) TRTCCloud *engine; +///背景音乐管理 +@property (nonatomic, strong) TXAudioEffectManager *musicManager; +///音乐播放完成 +@property (nonatomic,copy) void(^MusicCompletion)(NSString *filePath); +///音乐的id +@property (nonatomic,assign) int musicId; + +@end + +@implementation TRTCRtcImpl + +- (instancetype)initWithDelegate:(id)delegate { + self = [super initWithDelegate:delegate]; + if (self) { + _engine = [TRTCCloud sharedInstance]; + [_engine enableAudioVolumeEvaluation:900]; + [TRTCCloud setConsoleEnabled:NO]; + _engine.delegate = self; + } + return self; +} + +#pragma mark - RtcInterface impl +- (BOOL)joinChannel:(NSString *)channelId sign:(nonnull NSString *)sign completion:(void (^)(void))completion { + [self.engine enableAudioVolumeEvaluation:900]; + TRTCParams *params = [[TRTCParams alloc] init]; + UInt32 appId; + sscanf([KeyWithType(KeyType_TRTC) UTF8String], "%u", &appId); + params.sdkAppId = appId; + UInt32 roomId; + sscanf([channelId UTF8String], "%u", &roomId); + params.roomId = roomId; + + params.userId = [[AccountInfoStorage instance] getUid]; + params.userSig = sign; + params.role = TRTCRoleAudience; + [self.engine enterRoom:params appScene:TRTCAppSceneLIVE]; + if (completion) { + completion(); + } + return YES; +} + +///发起跨房通话 +- (void)connectOtherRoom:(NSString *)roomUid userId:(NSString *)uid { + NSMutableDictionary *jsonDict = [[NSMutableDictionary alloc] init]; + if (roomUid.integerValue > INT_MAX) { + [jsonDict setObject:@(uid.integerValue) forKey:@"roomId"]; + } else { + [jsonDict setObject:@([roomUid intValue]) forKey:@"roomId"]; + } + + [jsonDict setObject:uid forKey:@"userId"]; + NSData* jsonData = [NSJSONSerialization dataWithJSONObject:jsonDict options:NSJSONWritingPrettyPrinted error:nil]; + NSString* jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; + [self.engine connectOtherRoom:jsonString]; +} + +///退出跨房通话 +- (void)disconnectOtherRoom { + [self.engine disconnectOtherRoom]; +} + +///发起跨房通话回调 +- (void)onConnectOtherRoom:(NSString *)userId errCode:(TXLiteAVError)errCode errMsg:(NSString *)errMsg { + if (errCode == ERR_NULL) { + + } +} + +///退出跨房通话回调 +- (void)onDisconnectOtherRoom:(TXLiteAVError)errCode errMsg:(NSString *)errMsg { + +} + +- (void)onUserAudioAvailable:(NSString *)userId available:(BOOL)available { + NSLog(@"成功userid:%@", userId); + if (available) { + + } +} + +- (BOOL)muteRemote:(BOOL)mute { + [self.engine muteAllRemoteAudio:mute]; + return YES; +} + +- (BOOL)muteRemote:(BOOL)mute userId:(NSString *)userId { + [self.engine muteRemoteAudio:userId mute:mute]; + return YES; +} + +- (void)broadcast:(BOOL)on { + [self.engine switchRole:on ? TRTCRoleAnchor : TRTCRoleAudience]; + if (on) { + NSString *jsonString = @"{\"api\":\"setAudioQualityEx\",\"params\":{\"sampleRate\":48000,\"channel\":2,\"bitrate\":192,\"encodeMode\":1,\"systemVolumeType\":1}}"; + [self.engine callExperimentalAPI:jsonString]; + NSString *aecString = @"{\"api\":\"enableAudioAEC\",\"params\":{\"enable\":1,\"level\":100}}"; + [self.engine callExperimentalAPI:aecString]; + [self.engine startLocalAudio:TRTCAudioQualityMusic]; + } else { + [self.engine stopLocalAudio]; + } +} + +- (BOOL)muteLocal:(BOOL)mute { + [self.engine muteLocalAudio:mute]; + return YES; +} + +- (void)exitChannel:(void (^)(void))completion { + /** + * 1.2 离开房间 + * + * 调用 exitRoom() 接口会执行退出房间的相关逻辑,例如释放音视频设备资源和编解码器资源等。 + * 待资源释放完毕,SDK 会通过 TRTCCloudDelegate 中的 onExitRoom() 回调通知到您。 + * + * 如果您要再次调用 enterRoom() 或者切换到其他的音视频 SDK,请等待 onExitRoom() 回调到来之后再执行相关操作。 + * 否则可能会遇到摄像头或麦克风(例如 iOS 里的 AudioSession)被占用等各种异常问题。 + */ + [self.engine exitRoom]; + if (completion) { + completion(); + } +} + +- (void)destory { + [TRTCCloud destroySharedIntance]; +} + +/// 播放背景音乐 +/// @param filePath 音频文件的地址 +/// @param musicId TRTC自己要的 +- (BOOL)playBackMusic:(NSString *)filePath musicId:(int)musicId completion:(void (^)(NSString *))completion{ + if (filePath) { + self.MusicCompletion = completion; + [self changePlayState:BackMusicPlayState_Stop];//切换歌曲need stop + self.musicId = musicId; + if (self.musicManager == nil) { + self.musicManager = [self.engine getAudioEffectManager]; + } + + TXAudioMusicParam *param = [[TXAudioMusicParam alloc] init]; + param.ID = musicId; + param.path = filePath; + @kWeakify(self); + [self.musicManager startPlayMusic:param onStart:^(NSInteger errCode) { + + } onProgress:^(NSInteger progressMs, NSInteger durationMs) { + + } onComplete:^(NSInteger errCode) { + @kStrongify(self); + self.MusicCompletion(filePath); + ///这个用在最小化的时候 因为最小化没办法知道当前歌曲是否播放完毕了 目前没有想到其他的好的版本就用通知吧 + [[NSNotificationCenter defaultCenter] postNotificationName:kRoomBackMusicPlayMusicFinishKey object:filePath]; + }]; + return YES; + } else { + return NO; + } + +} + +/// 改变播放器的状态 +/// @param state 播放状态 +- (BOOL)changePlayState:(BackMusicPlayState)state { + BOOL isPlaying = NO; + switch (state) { + case BackMusicPlayState_Stop: + { + [self.musicManager stopPlayMusic:self.musicId]; + isPlaying = NO; + } + break; + case BackMusicPlayState_Pause: + { + [self.musicManager pausePlayMusic:self.musicId]; + isPlaying = NO; + } + break; + case BackMusicPlayState_Resume: + { + [self.musicManager resumePlayMusic:self.musicId]; + isPlaying = YES; + } + default: + break; + } + return isPlaying; +} + +- (void)updateUserSound:(int)soundVol { + [self.engine setAudioCaptureVolume:soundVol]; +} + +- (void)updateMusicSound:(int)soundVol { + [self.musicManager setMusicPublishVolume:self.musicId volume:soundVol * 1.5]; + [self.musicManager setMusicPlayoutVolume:self.musicId volume:soundVol * 1.5]; +} + +#pragma mark - TRTCCloudDelegate +- (void)onUserVoiceVolume:(NSArray *)userVolumes totalVolume:(NSInteger)totalVolume { + NSMutableArray *uids = [NSMutableArray array]; + for (TRTCVolumeInfo *userInfo in userVolumes) { + NSString *uid = userInfo.userId; + if (userInfo.volume > 2){ + if (uid.integerValue == 0) { + if ([AccountInfoStorage instance].getUid.length > 0){ + [uids addObject:[[AccountInfoStorage instance] getUid]]; + } + }else { + [uids addObject:uid]; + } + } + } + [self.delegate usersSpeaking:uids]; +} + +@end diff --git a/YuMi/Modules/YMRTC/RtcImpl/ZegoRealtimackConnector.h b/YuMi/Modules/YMRTC/RtcImpl/ZegoRealtimackConnector.h deleted file mode 100644 index 72a32b81..00000000 --- a/YuMi/Modules/YMRTC/RtcImpl/ZegoRealtimackConnector.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// ZegoRealtimackConnector.h -// YUMI -// -// Created by zu on 2021/10/20. -// - -#import "BaseRealtimackConnector.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface ZegoRealtimackConnector : BaseRealtimackConnector - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRTC/RtcImpl/ZegoRealtimackConnector.m b/YuMi/Modules/YMRTC/RtcImpl/ZegoRealtimackConnector.m deleted file mode 100644 index 9a886d37..00000000 --- a/YuMi/Modules/YMRTC/RtcImpl/ZegoRealtimackConnector.m +++ /dev/null @@ -1,226 +0,0 @@ -// -// ZegoRealtimackConnector.m -// YUMI -// -// Created by zu on 2021/10/20. -// - -#import "ZegoRealtimackConnector.h" -#import -#import "NSArray+Safe.h" - -@interface ZegoRealtimackConnector() - -@property (nonatomic, strong) ZegoAudioRoomApi *engine; -@property (nonatomic, strong) ZegoMediaPlayer *mediaDisporter; -@property (nonatomic,copy) NSString *filePath; -@property (nonatomic,copy) void(^MusicCompletion)(NSString *filePath); -@end - -@implementation ZegoRealtimackConnector - -- (instancetype)initWithDelegate:(id)delegate { - self = [super initWithDelegate:delegate]; - if (self) { -#ifdef DEBUG - - [ZegoAudioRoomApi setVerbose:YES]; - [ZegoAudioRoomApi setUseTestEnv:YES]; -#else - [ZegoAudioRoomApi setUseTestEnv:NO]; -#endif - [ZegoAudioRoomApi setAudioDeviceMode:ZEGOAPI_AUDIO_DEVICE_MODE_GENERAL]; - - [ZegoAudioRoomApi setConfig:@"audio_encoder_samplerate=48000"]; - _engine = [[ZegoAudioRoomApi alloc] initWithAppID:[self aplictowardsionID] appSignature:[self zegoAplictowardsionSign]]; - [_engine enableAEC:true]; - [_engine enableAGC:true]; - - [_engine setManualPublish:true]; - [_engine setManualPlay:true]; - - [_engine setAudioRoomDelegate:self]; - [_engine setAudioPublisherDelegate:self]; - } - return self; -} - -#pragma mark - RtcInterface impl -- (BOOL)combintowardsionNarrow:(nonnull NSString *)channelId completion:(void (^ _Nullable)(void))completion { - - self.mediaDisporter = [[ZegoMediaPlayer alloc] initWithPlayerType:MediaPlayerTypeAux]; - [self.mediaDisporter setDelegate:self]; - - [[ZegoSoundLevel sharedInstance] setSoundLevelDelegate:self]; - [[ZegoSoundLevel sharedInstance] setSoundLevelMonitorCycle:1200]; - [[ZegoSoundLevel sharedInstance] startSoundLevelMonitor]; - NSString *uid = [AccountAbstractStorage instance].acquireCid; - - [ZegoAudioRoomApi setUserID:uid userName:uid]; - - [self.engine setLatencyMode:ZEGOAPI_LATENCY_MODE_LOW3]; - - [self.engine setAudioBitrate:128000]; - - [ZegoAudioDevice enableAudioCaptureStereo:0]; - - [self.engine setAudioChannelCount:1]; - - - int state = [self.engine loginRoom:channelId completionBlock:^(int errorCode) { - if (completion) { - completion(); - } - }]; - return state == 1; -} - -- (BOOL)muteRemote:(BOOL)mute { - return [self.engine enableSpeaker:!mute]; -} - -- (void)pingencourage:(BOOL)on { - if (on) { - [self.engine startPublish]; - } else { - [self.engine stopPublish]; - } -} - -- (BOOL)muteLocal:(BOOL)mute { - return [self.engine enableMic:!mute]; -} - -- (void)routeNarrow:(void (^ _Nullable)(void))completion { - [[ZegoSoundLevel sharedInstance] stopSoundLevelMonitor]; - [self.engine logoutRoom]; - if (completion) { - completion(); - } -} - -- (void)destory { - -} - -- (BOOL)prohibitiportEncourageManual:(NSString *)filePath musicId:(int)musicId completion:(nonnull void (^)(NSString * _Nonnull))completion { - if (filePath) { - self.MusicCompletion = completion; - [self.mediaDisporter stop]; - self.filePath = filePath; - [self.engine muteAux:true]; - [self.mediaDisporter start:filePath repeat:NO]; - return YES; - } else { - return NO; - } -} - -- (BOOL)diversifictowardsionDisportDeclare:(BackMusicDisportDeclare)state { - BOOL isPlaying = NO; - switch (state) { - case BackMusicDisportDeclare_Stop: - { - [self.mediaDisporter stop]; - [self.engine muteAux:false]; - isPlaying = NO; - } - break; - case BackMusicDisportDeclare_Pause: - { - [self.mediaDisporter pause]; - isPlaying = NO; - } - break; - case BackMusicDisportDeclare_Resume: - { - [self.mediaDisporter resume]; - isPlaying = YES; - } - default: - break; - } - return isPlaying; -} - -- (void)refurbishConsumerSound:(int)soundVol { - if (soundVol) { - [self.engine setCaptureVolume:soundVol]; - } -} - -- (void)refurbishManualSound:(int)soundVol { - if (soundVol) { - [self.mediaDisporter setVolume:soundVol]; - } -} - -#pragma mark - ZegoAudioRoomDelegate -- (void)onStreamUpdated:(ZegoAudioStreamType)type stream:(ZegoAudioStream *)stream { - switch (type) { - case ZEGO_AUDIO_STREAM_ADD: - { - [self.engine startPlayStream:stream.streamID]; - } - break; - case ZEGO_AUDIO_STREAM_DELETE: - { - [self.engine stopPlayStream:stream.streamID]; - } - break; - default: - break; - } -} - -- (void)onPublishStateUpdate:(int)stateCode streamID:(NSString *)streamID streamInfo:(NSDictionary *)info { - if (stateCode != 0) { - [self.engine restartPublishStream]; - } -} - -- (void)onSoundLevelUpdate:(NSArray *)soundLevels { - [self.delegate consumersSpeaking:[self formtowardsSpeakingCids:soundLevels]]; -} - -- (void)onCaptureSoundLevelUpdate:(ZegoSoundLevelInfo *)captureSoundLevel { - [self.delegate consumersSpeaking:[self formtowardsSpeakingCids:@[captureSoundLevel]]]; -} - -#pragma mark - ZegoMediaPlayerEventDelegate -- (void)onPlayEnd { - if (self.MusicCompletion) { - self.MusicCompletion(self.filePath); - } - - [[NSNotificationCenter defaultCenter] postNotificationName:kRoomBackMusicPlayMusicFinishKey object:self.filePath]; -} - -#pragma mark - private method -- (NSMutableArray *)formtowardsSpeakingCids:(NSArray *)soundLevels { - NSMutableArray *uids = [NSMutableArray array]; - for (ZegoSoundLevelInfo *userInfo in soundLevels) { - NSString *uid = nil; - NSArray *strArray = [userInfo.streamID componentsSeparatedByString:@"-"]; - if (strArray.count >= 2) { - uid = [strArray secureGroalTowardsIndictowardsrix1:1]; - if (userInfo.soundLevel > 0) { - [uids addObject:uid]; - } - } - } - return uids; -} - -- (uint32_t)aplictowardsionID { - return 1067458582; -} - -- (NSData *)zegoAplictowardsionSign { - Byte signkey[] = {0x2b,0x86,0x24,0xef,0xd9,0x96,0xf1,0x1c,0x6b,0xa2,0x28,0xc3,0xef,0x24,0xdd,0x64,0x2e,0xd7,0x33,0x3f,0x33,0x90,0x07,0x53,0xeb,0xd2,0xd2,0x4e,0xc5,0xed,0xfd,0x43}; - return [NSData dataWithBytes:signkey length:32]; -} - - - -@end diff --git a/YuMi/Modules/YMRTC/RtcImpl/ZegoRtcImpl.h b/YuMi/Modules/YMRTC/RtcImpl/ZegoRtcImpl.h new file mode 100644 index 00000000..655ec05d --- /dev/null +++ b/YuMi/Modules/YMRTC/RtcImpl/ZegoRtcImpl.h @@ -0,0 +1,16 @@ +// +// ZegoRtcImpl.h +// YUMI +// +// Created by zu on 2021/10/20. +// + +#import "BaseRtcImpl.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface ZegoRtcImpl : BaseRtcImpl + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRTC/RtcImpl/ZegoRtcImpl.m b/YuMi/Modules/YMRTC/RtcImpl/ZegoRtcImpl.m new file mode 100644 index 00000000..359ee371 --- /dev/null +++ b/YuMi/Modules/YMRTC/RtcImpl/ZegoRtcImpl.m @@ -0,0 +1,234 @@ +// +// ZegoRtcImpl.m +// YUMI +// +// Created by zu on 2021/10/20. +// + +#import "ZegoRtcImpl.h" +#import +#import "NSArray+Safe.h" + +@interface ZegoRtcImpl() + +@property (nonatomic, strong) ZegoAudioRoomApi *engine; +@property (nonatomic, strong) ZegoMediaPlayer *mediaPlayer; +///当前播放的背景音乐路径 +@property (nonatomic,copy) NSString *filePath; +///音乐播放完成 +@property (nonatomic,copy) void(^MusicCompletion)(NSString *filePath); +@end + +@implementation ZegoRtcImpl + +- (instancetype)initWithDelegate:(id)delegate { + self = [super initWithDelegate:delegate]; + if (self) { +#ifdef DEBUG + // 调试信息开关 + [ZegoAudioRoomApi setVerbose:YES]; + [ZegoAudioRoomApi setUseTestEnv:YES]; +#else + [ZegoAudioRoomApi setUseTestEnv:NO]; +#endif + [ZegoAudioRoomApi setAudioDeviceMode:ZEGOAPI_AUDIO_DEVICE_MODE_GENERAL]; + //采样率48k + [ZegoAudioRoomApi setConfig:@"audio_encoder_samplerate=48000"]; + _engine = [[ZegoAudioRoomApi alloc] initWithAppID:[self appID] appSignature:[self zegoAppSign]]; + [_engine enableAEC:true]; + [_engine enableAGC:true]; + //手动发布 + [_engine setManualPublish:true]; + [_engine setManualPlay:true]; + //delegate + [_engine setAudioRoomDelegate:self]; + [_engine setAudioPublisherDelegate:self]; + } + return self; +} + +#pragma mark - RtcInterface impl +- (BOOL)joinChannel:(nonnull NSString *)channelId completion:(void (^ _Nullable)(void))completion { + //推流播放模式,会将音频混流推流中,调用端和拉流端都可以听到播放的声音。 + self.mediaPlayer = [[ZegoMediaPlayer alloc] initWithPlayerType:MediaPlayerTypeAux]; + [self.mediaPlayer setDelegate:self]; + //开始监听 + [[ZegoSoundLevel sharedInstance] setSoundLevelDelegate:self]; + [[ZegoSoundLevel sharedInstance] setSoundLevelMonitorCycle:1200]; //监控周期 [100, 3000]。默认 200 ms。 + [[ZegoSoundLevel sharedInstance] startSoundLevelMonitor]; + NSString *uid = [AccountInfoStorage instance].getUid; + //设置用户id跟name + [ZegoAudioRoomApi setUserID:uid userName:uid]; + + [self.engine setLatencyMode:ZEGOAPI_LATENCY_MODE_LOW3]; + //码率 + [self.engine setAudioBitrate:128000]; + // 关闭双声道采集(0: 使用单声道进行采集; ≠0: 始终使用双声道进行采集) + [ZegoAudioDevice enableAudioCaptureStereo:0]; + // 设置推流音频单声道 + [self.engine setAudioChannelCount:1]; + + //加入zego + int state = [self.engine loginRoom:channelId completionBlock:^(int errorCode) { + if (completion) { + completion(); + } + }]; + return state == 1; +} + +- (BOOL)muteRemote:(BOOL)mute { + return [self.engine enableSpeaker:!mute]; +} + +- (void)broadcast:(BOOL)on { + if (on) { + [self.engine startPublish]; + } else { + [self.engine stopPublish]; + } +} + +- (BOOL)muteLocal:(BOOL)mute { + return [self.engine enableMic:!mute]; +} + +- (void)exitChannel:(void (^ _Nullable)(void))completion { + [[ZegoSoundLevel sharedInstance] stopSoundLevelMonitor]; + [self.engine logoutRoom]; + if (completion) { + completion(); + } +} + +- (void)destory { + +} + +/// 播放背景音乐 +/// @param filePath 音频文件的地址 +/// @param musicId TRTC自己要的 +- (BOOL)playBackMusic:(NSString *)filePath musicId:(int)musicId completion:(nonnull void (^)(NSString * _Nonnull))completion { + if (filePath) { + self.MusicCompletion = completion; + [self.mediaPlayer stop];//切换歌曲need stop + self.filePath = filePath; + [self.engine muteAux:true]; + [self.mediaPlayer start:filePath repeat:NO]; + return YES; + } else { + return NO; + } +} + +/// 改变播放器的状态 +/// @param state 播放状态 +- (BOOL)changePlayState:(BackMusicPlayState)state { + BOOL isPlaying = NO; + switch (state) { + case BackMusicPlayState_Stop: + { + [self.mediaPlayer stop]; + [self.engine muteAux:false]; + isPlaying = NO; + } + break; + case BackMusicPlayState_Pause: + { + [self.mediaPlayer pause]; + isPlaying = NO; + } + break; + case BackMusicPlayState_Resume: + { + [self.mediaPlayer resume]; + isPlaying = YES; + } + default: + break; + } + return isPlaying; +} + +- (void)updateUserSound:(int)soundVol { + if (soundVol) { + [self.engine setCaptureVolume:soundVol]; + } +} + +- (void)updateMusicSound:(int)soundVol { + if (soundVol) { + [self.mediaPlayer setVolume:soundVol]; + } +} + +#pragma mark - ZegoAudioRoomDelegate +- (void)onStreamUpdated:(ZegoAudioStreamType)type stream:(ZegoAudioStream *)stream { + switch (type) { + case ZEGO_AUDIO_STREAM_ADD: + { + [self.engine startPlayStream:stream.streamID]; + } + break; + case ZEGO_AUDIO_STREAM_DELETE: + { + [self.engine stopPlayStream:stream.streamID]; + } + break; + default: + break; + } +} + +- (void)onPublishStateUpdate:(int)stateCode streamID:(NSString *)streamID streamInfo:(NSDictionary *)info { + if (stateCode != 0) { + [self.engine restartPublishStream]; + } +} + +- (void)onSoundLevelUpdate:(NSArray *)soundLevels { + [self.delegate usersSpeaking:[self formatSpeakingUids:soundLevels]]; +} + +- (void)onCaptureSoundLevelUpdate:(ZegoSoundLevelInfo *)captureSoundLevel { + [self.delegate usersSpeaking:[self formatSpeakingUids:@[captureSoundLevel]]]; +} + +#pragma mark - ZegoMediaPlayerEventDelegate +///播放结束 +- (void)onPlayEnd { + if (self.MusicCompletion) { + self.MusicCompletion(self.filePath); + } + ///这个用在最小化的时候 因为最小化没办法知道当前歌曲是否播放完毕了 目前没有想到其他的好的版本就用通知吧 + [[NSNotificationCenter defaultCenter] postNotificationName:kRoomBackMusicPlayMusicFinishKey object:self.filePath]; +} + +#pragma mark - private method +- (NSMutableArray *)formatSpeakingUids:(NSArray *)soundLevels { + NSMutableArray *uids = [NSMutableArray array]; + for (ZegoSoundLevelInfo *userInfo in soundLevels) { + NSString *uid = nil; + NSArray *strArray = [userInfo.streamID componentsSeparatedByString:@"-"]; + if (strArray.count >= 2) { + uid = [strArray safeObjectAtIndex1:1]; + if (userInfo.soundLevel > 0) { + [uids addObject:uid]; + } + } + } + return uids; +} + +- (uint32_t)appID { + return 1067458582; +} + +- (NSData *)zegoAppSign { + Byte signkey[] = {0x2b,0x86,0x24,0xef,0xd9,0x96,0xf1,0x1c,0x6b,0xa2,0x28,0xc3,0xef,0x24,0xdd,0x64,0x2e,0xd7,0x33,0x3f,0x33,0x90,0x07,0x53,0xeb,0xd2,0xd2,0x4e,0xc5,0xed,0xfd,0x43}; + return [NSData dataWithBytes:signkey length:32]; +} + + + +@end diff --git a/YuMi/Modules/YMRTC/RtcManager.h b/YuMi/Modules/YMRTC/RtcManager.h new file mode 100644 index 00000000..17a4f8e0 --- /dev/null +++ b/YuMi/Modules/YMRTC/RtcManager.h @@ -0,0 +1,140 @@ +// +// RTCManager.h +// YUMI +// +// Created by zu on 2021/10/19. +// + +#import +#import "RtcDelegate.h" +NS_ASSUME_NONNULL_BEGIN + +typedef enum : NSUInteger { + RtcEngineType_Agora = 1001, // 声网 + RtcEngineType_Zego, // 即构 + RtcEngineType_WJ, // 无界 + RtcEngineType_AgoraFast, // 声网急速 + RtcEngineType_TRTC, // 腾讯TRTC +} RtcEngineType; + +typedef NS_ENUM(NSInteger, BackMusicPlayState) { + ///停止 + BackMusicPlayState_Stop = 1, + ///暂停 + BackMusicPlayState_Pause, + ///重新播放 + BackMusicPlayState_Resume +}; + +/** 音频服务管理单例,对所有音频服务 SDK 的封装。 + + **Note:** + + - ✅ 外部调用者只需要调用 RtcManager 。 + - ✅ RtcManager 对房间业务逻辑有封装。 + - ❌ 业务逻辑不要侵入 RctImpl 。 + */ +@interface RtcManager : NSObject + +/** + * 是否静音(静别人) + * YES:🔇虽然你们麦位上在说话,但是我就是不听。🙉 + * NO:🔊我听,我听。🐵 + */ +@property(nonatomic,getter=isRemoteMuted) BOOL remoteMuted; + +/** + * 是否闭麦(闭自己) + * YES:🤐虽然我在麦位上,但是我就是不说话。🙊 + * NO:😲我说,我说。🐵 + */ +@property(nonatomic,getter=isLocalMuted) BOOL localMuted; + +/** 初始化/重新初始化 RtcManager 实例,设置音频服务类型和 RtcDelegate。 + + **Note:** + + - 切换音频服务或者更换 delegate 必须先调用该方法。 + - RtcManager 是单例,[RtcManager instance] 也可以获取到 RtcManager 实例。 + + @param type 使用的音频服务 RtcEngineType。 + @param delegate RtcDelegate。 + + @return - RtcManager instance + */ ++ (instancetype _Nonnull)initEngineWithType:(RtcEngineType)type + delegate:(id _Nullable)delegate; + +/** 获取 RtcManager instance。 + + **Note:** + + - 务必先 [RtcManager initEngineWithType:delegate:] 设置 RtcEngineType 和 RtcDelegate,否则默认使用声网服务。 + + @return - RtcManager instance + */ ++ (instancetype _Nonnull)instance; +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; +- (id)copy NS_UNAVAILABLE; +- (id)mutableCopy NS_UNAVAILABLE; + +/** 加入频道(房间)。 + + **Note:** + + - 重复进房会直接 return YES。 + + @return - 进房结果。 + */ +- (BOOL)enterRoom:(NSString *)roomUid; + +/** 加入频道(房间),TRTC 进房需要动态签名。 + + **Note:** + + - 重复进房会直接 return YES。 + + @return - 进房结果。 + */ +- (BOOL)enterRoom:(NSString *)roomUid trtcSign:(NSString *)sign; + +/** + * 上下麦(说话) + */ +- (void)broadcast:(BOOL)on; + +/** + * 退出频道 + */ +- (void)exitRoom; + +///发起跨房PK +- (void)connectOtherRoom:(NSString *)roomUid userId:(NSString *)uid; + +///退出跨房通话 +- (void)disconnectOtherRoom; + +/// 静音某个人 +/// @param userId 用户id +- (void)muteOne:(BOOL)mute userId:(NSString *)userId; + +/// 播放背景音乐 +/// @param filePath 音频文件的地址 +/// @param musicId TRTC自己要的 +- (BOOL)playBackMusic:(NSString *)filePath musicId:(int)musicId completion:(void (^)(NSString *))completion; + +/// 改变播放器的状态 +/// @param state 播放状态 +- (BOOL)changePlayState:(BackMusicPlayState)state; + +///背景音乐的音量大小 +- (void)updateMusicSound:(int)soundVol; + +///背景人声的音量大小 +- (void)updateUserSound:(int)soundVol; + +@property (nonatomic,assign) BOOL broadcast; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRTC/RtcManager.m b/YuMi/Modules/YMRTC/RtcManager.m new file mode 100644 index 00000000..2a1459d6 --- /dev/null +++ b/YuMi/Modules/YMRTC/RtcManager.m @@ -0,0 +1,203 @@ +// +// RTCManager.m +// YUMI +// +// Created by zu on 2021/10/19. +// + +#import "RtcManager.h" +#import "RtcImplDelegate.h" +#import "AgoraRtcImpl.h" +#import "ZegoRtcImpl.h" +#import "TRTCRtcImpl.h" + +@interface RtcManager() + +@property (nonatomic, strong) id engine; +@property (nonatomic, weak) id engineDelegate; +@property (nonatomic, assign) RtcEngineType engineType; +/** + * 当前 Rtc 所在的房间 roomUid 。 + */ +@property(nonatomic, strong) NSString * enterdRoomUid; + +@end + +@implementation RtcManager + ++ (instancetype)instance { + static dispatch_once_t onceToken; + static RtcManager *instance = nil; + dispatch_once(&onceToken,^{ + instance = [[self alloc] init]; + }); + return instance; +} + +- (instancetype)init { + self = [super init]; + if (self) { + _localMuted = NO; + _remoteMuted = NO; + _engineType = RtcEngineType_Agora; + } + return self; +} + ++ (instancetype)initEngineWithType:(RtcEngineType)type delegate:(id _Nullable)delegate { + RtcManager* rtcManager = [self instance]; + [rtcManager setEngineType:type]; + [rtcManager setEngineDelegate:delegate]; + return rtcManager; +} + +- (BOOL)enterRoom:(NSString *)roomUid { + if (self.enterdRoomUid && [self.enterdRoomUid isEqualToString:roomUid]) { + return YES; + } + return [self.engine joinChannel:roomUid completion:^{ + [self muteRemote:NO]; + [self muteLocal:NO]; + self.enterdRoomUid = roomUid; + }]; +} + +- (BOOL)enterRoom:(NSString *)roomUid trtcSign:(nonnull NSString *)sign { + if (self.enterdRoomUid && [self.enterdRoomUid isEqualToString:roomUid]) { + return YES; + } + return [self.engine joinChannel:roomUid sign:sign completion:^{ + [self muteRemote:NO]; + [self muteLocal:NO]; + self.enterdRoomUid = roomUid; + }]; +} + +- (BOOL)muteRemote:(BOOL)mute { + return [self.engine muteRemote:mute]; +} + +- (void)broadcast:(BOOL)on { + [self.engine broadcast:on]; + if (on) { + [self.engine muteLocal:self.isLocalMuted]; + } +} + +- (BOOL)muteLocal:(BOOL)mute { + return [self.engine muteLocal:mute]; +} + +- (void)exitRoom { + [self.engine exitChannel:^{ + [self muteRemote:NO]; + [self muteLocal:NO]; + self.enterdRoomUid = nil; + }]; +} + +///发起跨房通话 +- (void)connectOtherRoom:(NSString *)roomUid userId:(NSString *)uid { + [self.engine broadcast:YES]; + [self.engine connectOtherRoom:roomUid userId:uid]; +} + +///退出跨房通话 +- (void)disconnectOtherRoom { + [self.engine disconnectOtherRoom]; +} + +/// 静音某个人 +/// @param userId 用户id +- (void)muteOne:(BOOL)mute userId:(NSString *)userId { + [self.engine muteRemote:mute userId:userId]; +} + +- (void)destory { + [self.engine destory]; +} + +/// 播放背景音乐 +/// @param filePath 音频文件的地址 +/// @param musicId TRTC自己要的 +- (BOOL)playBackMusic:(NSString *)filePath musicId:(int)musicId completion:(void (^)(NSString *))completion{ + return [self.engine playBackMusic:filePath musicId:musicId completion:completion]; +} + +/// 改变播放器的状态 +/// @param state 播放状态 +- (BOOL)changePlayState:(BackMusicPlayState)state { + return [self.engine changePlayState:state]; +} + +///背景音乐的音量大小 +- (void)updateMusicSound:(int)soundVol { + [self.engine updateMusicSound:soundVol]; +} + +///背景人声的音量大小 +- (void)updateUserSound:(int)soundVol { + [self.engine updateUserSound:soundVol]; +} + +- (void)usersSpeaking:(NSMutableArray *)uids { + if (self.engineDelegate) { + [self.engineDelegate usersSpeaking:uids]; + } +} + +- (void)setRemoteMuted:(BOOL)remoteMuted { + if ([self.engine muteRemote:remoteMuted]) { + _remoteMuted = remoteMuted; + } +} + +- (void)setLocalMuted:(BOOL)localMuted { + if ([self.engine muteLocal:localMuted]) { + _localMuted = localMuted; + } +} + +- (void)setEngineType:(RtcEngineType)type { + if (_engine && type != _engineType) { + [_engine exitChannel:nil]; + [_engine destory]; + _engine = nil; + _enterdRoomUid = nil; + } + _engineType = type; +} + +- (void)setEngineDelegate:(id)delegate { + _engineDelegate = delegate; +} + +- (id)engine { + if (!_engine) { + switch (_engineType) { + case RtcEngineType_Agora: + { + _engine = [[AgoraRtcImpl alloc] initWithDelegate:self]; + } + break; + case RtcEngineType_Zego: + { + _engine = [[ZegoRtcImpl alloc] initWithDelegate:self]; + } + break; + case RtcEngineType_TRTC: + { + _engine = [[TRTCRtcImpl alloc] initWithDelegate:self]; + } + break; + default: + { + _engine = [[AgoraRtcImpl alloc] initWithDelegate:self]; + } + break; + } + } + return _engine; +} + +@end diff --git a/YuMi/Modules/YMRTC/RtcRepresendtation.h b/YuMi/Modules/YMRTC/RtcRepresendtation.h deleted file mode 100644 index 22da9f67..00000000 --- a/YuMi/Modules/YMRTC/RtcRepresendtation.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// RTCDelegate.h -// YUMI -// -// Created by zu on 2021/10/19. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol RtcRepresendtation - - -- (void)consumersSpeaking:(NSMutableArray * _Nullable)uids; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/Api/Api+Room.h b/YuMi/Modules/YMRoom/Api/Api+Room.h index 5927a0b9..a67b624b 100644 --- a/YuMi/Modules/YMRoom/Api/Api+Room.h +++ b/YuMi/Modules/YMRoom/Api/Api+Room.h @@ -6,19 +6,33 @@ // #import "Api.h" -#import "ChamberAbstractMatrix.h" +#import "RoomInfoModel.h" NS_ASSUME_NONNULL_BEGIN @interface Api (Room) -+ (void)acquireChamberAbstract:(HttpRequestHelperCompletion)complection +/// 获取房间信息 +/// @param complection 完成 +/// @param uid 用户的uid +/// @param intoUid 自己的Uid 判断当前进房用户是否是平台超管 判断进房用户是否开启青少年 ++ (void)getRoomInfo:(HttpRequestHelperCompletion)complection uid:(NSString *)uid intoUid:(NSString *)intoUid; -+ (void)unfoildChamber:(HttpRequestHelperCompletion)complection +/// 开启房间 +/// @param complection 完成 +/// @param title 房间标题 +/// @param type 类型 +/// @param roomPwd 房间密码 +/// @param roomDesc 房间描述 +/// @param backPic 房间背景 +/// @param uid 用户的uid +/// @param ticket 用户的ticket +/// @param mgId 小游戏的id ++ (void)openRoom:(HttpRequestHelperCompletion)complection title:(NSString *)title - type:(ChamberGenre)type + type:(RoomType)type roomPwd:(NSString *)roomPwd roomDesc:(NSString *)roomDesc backPic:(NSString *)backPic @@ -26,84 +40,172 @@ NS_ASSUME_NONNULL_BEGIN ticket:(NSString *)ticket mgId:(NSString *)mgId; -+ (void)chamberLoudspeakerupburdenLoudspeaker:(HttpRequestHelperCompletion)complection +/// 房间上麦 +/// @param complection 完成 +/// @param micUid 上麦的uid +/// @param roomId 房间的id +/// @param position 坑位的序号 +/// @param ticket ticket ++ (void)roomMicUpMic:(HttpRequestHelperCompletion)complection micUid:(NSString *)micUid roomId:(NSString *)roomId position:(NSString *)position ticket:(NSString *)ticket; -+ (void)chamberLoudspeakerPubescenceLoudspeaker:(HttpRequestHelperCompletion)complection +/// 房间下麦 +/// @param complection 完成 +/// @param micUid 上麦的uid +/// @param roomId 房间的id +/// @param position 坑位的序号 +/// @param ticket ticket ++ (void)roomMicDownMic:(HttpRequestHelperCompletion)complection micUid:(NSString *)micUid roomId:(NSString *)roomId position:(NSString *)position ticket:(NSString *)ticket; -+ (void)chamberMiecreoscoopePresentBWSttess:(HttpRequestHelperCompletion)completion +/// 获取麦序礼物值 +/// @param completion 完成 +/// @param roomUid 房间的uid +/// @param uid 用户的uid ++ (void)roomMicroGiftValue:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid uid:(NSString *)uid; -+ (void)chamberPresentBWSttessupburdenLoudspeaker:(HttpRequestHelperCompletion)completion +/// 开启礼物值的情况下 上麦 +/// @param completion 完成 +/// @param roomUid 房间的uid +/// @param micUid 上麦的uid +/// @param position 几号麦序 +/// @param uid 操作者的uid ++ (void)roomGiftValueUpMic:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid micUid:(NSString *)micUid position:(NSString *)position uid:(NSString *)uid; #pragma mark - 活动 -+ (void)chamberImportpriseSttowardsement:(HttpRequestHelperCompletion)completion +/// 房间活动页的列表 +/// @param completion 完成 +/// @param roomId 房间的id +/// @param type 类型 2 房间的 1 首页的 ++ (void)roomActivityList:(HttpRequestHelperCompletion)completion roomId:(NSString *)roomId type:(NSString *)type; -+ (void)assembleChamber:(HttpRequestHelperCompletion)completion +/// 收藏房间 +/// @param completion 完成 +/// @param roomUid 房间的uid +/// @param uid uid +/// @param type 1 收藏 2 取消收藏 3:批量取消收藏 +/// @param roomUids 批量删除的房间uid,用逗号隔开 ++ (void)collectRoom:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid uid:(NSString *)uid type:(NSString *)type roomUids:(NSString *)roomUids; -+ (void)diversifictowardsionChamberEngagementDeclare:(HttpRequestHelperCompletion)completion +/// 改变相亲的状态的 +/// @param completion 完成 +/// @param roomUserId 房主的uid +/// @param roundId 相亲进行到哪一步 ++ (void)changeRoomDatingState:(HttpRequestHelperCompletion)completion roomUserId:(NSString *)roomUserId roundId:(NSString *)roundId; -+ (void)requisitionReportConsumerInterChamber:(HttpRequestHelperCompletion)completion uid:(NSString *)uid roomUid:(NSString *)roomUid ticket:(NSString *)ticket; +/// 上报用户进房 +/// @param completion 完成 +/// @param uid 用户uid +/// @param roomUid 房间uid +/// @param ticket ticket ++ (void)requestReportUserInterRoom:(HttpRequestHelperCompletion)completion uid:(NSString *)uid roomUid:(NSString *)roomUid ticket:(NSString *)ticket; -+ (void)requisitionReportConsumerOptowardssideChamber:(HttpRequestHelperCompletion)completion uid:(NSString *)uid roomUid:(NSString *)roomUid ticket:(NSString *)ticket; +/// 上报用户退房 +/// @param completion 完成 +/// @param uid 用户uid +/// @param roomUid 房间uid +/// @param ticket ticket ++ (void)requestReportUserOutRoom:(HttpRequestHelperCompletion)completion uid:(NSString *)uid roomUid:(NSString *)roomUid ticket:(NSString *)ticket; -+ (void)shankThroughoutChamberCombatCentiretyfor:(HttpRequestHelperCompletion)completion +/// 处理跨房PK的邀请 +/// @param completion 完成 +/// @param roomUid 房主的ui +/// @param roundId pk的id +/// @param isAccept o拒绝 1 接受 ++ (void)handleAcrossRoomPKInvite:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid roundId:(NSString *)roundId - isRecognize:(NSString *)isRecognize; + isAccept:(NSString *)isAccept; -+ (void)acquireThroughoutChamberCombatSpecific:(HttpRequestHelperCompletion)completion +/// 获取跨房PK详情 +/// @param completion 完成 +/// @param roomUid 房主的ui ++ (void)getAcrossRoomPKDetail:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; -+ (void)requisitionInChamberFantowardsicsSquad:(HttpRequestHelperCompletion)completion teamUid:(NSString *)teamUid; +/// 进房初始化当前用户与房间粉丝团关系 +/// @param completion 完成 +/// @param teamUid 房间uid ++ (void)requestInRoomFansTeam:(HttpRequestHelperCompletion)completion teamUid:(NSString *)teamUid; -+ (void)requisitionJoinFantowardsicsSquad:(HttpRequestHelperCompletion)completion teamUid:(NSString *)teamUid; +/// 获取加入粉丝团的内容 +/// @param completion 完成 +/// @param teamUid 要加入粉丝团的房间uid ++ (void)requestJoinFansTeam:(HttpRequestHelperCompletion)completion teamUid:(NSString *)teamUid; -+ (void)requisitionFantowardsicsSquadTask:(HttpRequestHelperCompletion)completion teamUid:(NSString *)teamUid; +/// 获取粉丝团任务列表 +/// @param completion 完成 +/// @param teamUid 房间uid ++ (void)requestFansTeamTask:(HttpRequestHelperCompletion)completion teamUid:(NSString *)teamUid; -+ (void)requisitionKellegCombatePreadominant:(HttpRequestHelperCompletion)completion; +/// 获取个播PK规则 +/// @param completion 完成 ++ (void)requestAnchorPkRule:(HttpRequestHelperCompletion)completion; #pragma mark - 超管 -+ (void)acquireChamberSenstowardsionalManagementSttowardsement:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; +///获取房间超管列表 ++ (void)getRoomSuperAdminList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; -+ (void)reqeustEncourageChamber:(HttpRequestHelperCompletion)completion roomId:(NSString *)roomId; +///房内引流推荐 ++ (void)reqeustRecommendRoom:(HttpRequestHelperCompletion)completion roomId:(NSString *)roomId; -+ (void)requisitionChamberRtowardseings:(HttpRequestHelperCompletion)completion +/// 获取房间榜单 +/// @param completion 完成 +/// @param roomUid 房间uid +/// @param type 类型 贡献日榜"day",贡献月榜"month" +/// @param page 页码 +/// @param pageSize 每页数量 ++ (void)requestRoomRankings:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid type:(NSString *)type page:(NSString *)page pageSize:(NSString *)pageSize; -+ (void)strangeConsumerInititowardseBewelcometo:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; +/// 新用户开始打招呼 +/// @param completion 完成 +/// @param roomUid 房主的uid ++ (void)newUserStartGreet:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; -+ (void)requisitionConsumerInChamber:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; +///获取用户在房间中的信息 ++ (void)requestUserInRoom:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; -+ (void)requisitionLtowardsterKellegChamber:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; +/// 获取下一个个播房 +/// @param completion 完成 +/// @param roomUid 当前房间uid ++ (void)requestNextAnchorRoom:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; -+ (void)requisitionStrangeConsumerInChamberPresent:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; +/// 获取新用户进房礼物 +/// @param completion 完成 +/// @param roomUid 房间uid ++ (void)requestNewUserInRoomGift:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; -+ (void)requisitionDeficitShetowardshe:(HttpRequestHelperCompletion)completion uid:(NSString *)roomUid; +/// 获取红包信息 +/// @param completion 完成 +/// @param roomUid 房间Uid ++ (void)requestRedPacket:(HttpRequestHelperCompletion)completion uid:(NSString *)roomUid; -+(void)requisitionChamberThresholdCharegWindow:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; -+(void)refurbishChamberThresholdCharegWindow:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; +///拿到首充弹窗次数 ++(void)requestRoomFirstCharegWindow:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; +///更新首充弹窗次数 ++(void)updateRoomFirstCharegWindow:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/Api/Api+Room.m b/YuMi/Modules/YMRoom/Api/Api+Room.m index 702b6d4b..a4be65ee 100644 --- a/YuMi/Modules/YMRoom/Api/Api+Room.m +++ b/YuMi/Modules/YMRoom/Api/Api+Room.m @@ -9,168 +9,274 @@ #import @implementation Api (Room) -+ (void)acquireChamberAbstract:(HttpRequestHelperCompletion)complection uid:(NSString *)uid intoUid:(NSString *)intoUid { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9nZXQ="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, uid, intoUid, nil]; +/// 获取房间信息 +/// @param complection 完成 +/// @param uid 用户的uid +/// @param intoUid 自己的Uid 判断当前进房用户是否是平台超管 判断进房用户是否开启青少年 ++ (void)getRoomInfo:(HttpRequestHelperCompletion)complection uid:(NSString *)uid intoUid:(NSString *)intoUid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9nZXQ="];///room/get + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, uid, intoUid, nil]; } -+ (void)unfoildChamber:(HttpRequestHelperCompletion)complection +/// 开启房间 +/// @param complection 完成 +/// @param title 房间标题 +/// @param type 类型 +/// @param roomPwd 房间密码 +/// @param roomDesc 房间描述 +/// @param backPic 房间背景 +/// @param uid 用户的uid +/// @param ticket 用户的ticket +/// @param mgId 小游戏的id ++ (void)openRoom:(HttpRequestHelperCompletion)complection title:(NSString *)title - type:(ChamberGenre)type + type:(RoomType)type roomPwd:(NSString *)roomPwd roomDesc:(NSString *)roomDesc backPic:(NSString *)backPic uid:(NSString *)uid ticket:(NSString *)ticket mgId:(NSString *)mgId { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9vcGVu"]; - [Api manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, title, @(type), roomPwd, roomDesc, backPic, uid, ticket, mgId,nil]; + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9vcGVu"];///room/open + [Api makeRequest:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, title, @(type), roomPwd, roomDesc, backPic, uid, ticket, mgId,nil]; } -+ (void)concludeChamber:(HttpRequestHelperCompletion)complection uid:(NSString *)uid ticket:(NSString *)ticket { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9jbG9zZQ=="]; - [Api manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:complection,__FUNCTION__, uid, ticket, nil]; +/// 关闭房间 +/// @param complection 完成 +/// @param uid 用户的uid +/// @param ticket 用户的ticket ++ (void)closeRoom:(HttpRequestHelperCompletion)complection uid:(NSString *)uid ticket:(NSString *)ticket { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9jbG9zZQ=="];///room/close + [Api makeRequest:fang method:HttpRequestHelperMethodPOST completion:complection,__FUNCTION__, uid, ticket, nil]; } -+ (void)chamberLoudspeakerupburdenLoudspeaker:(HttpRequestHelperCompletion)complection micUid:(NSString *)micUid roomId:(NSString *)roomId position:(NSString *)position ticket:(NSString *)ticket { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9taWMvdXBtaWM="]; - [Api manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, micUid, roomId, position, ticket, nil]; +/// 房间上麦 +/// @param complection 完成 +/// @param micUid 上麦的uid +/// @param roomId 房间的id +/// @param position 坑位的序号 +/// @param ticket ticket ++ (void)roomMicUpMic:(HttpRequestHelperCompletion)complection micUid:(NSString *)micUid roomId:(NSString *)roomId position:(NSString *)position ticket:(NSString *)ticket { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9taWMvdXBtaWM="];///room/mic/upmic + [Api makeRequest:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, micUid, roomId, position, ticket, nil]; } -+ (void)chamberLoudspeakerPubescenceLoudspeaker:(HttpRequestHelperCompletion)complection micUid:(NSString *)micUid roomId:(NSString *)roomId position:(NSString *)position ticket:(NSString *)ticket { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9taWMvZG93bm1pYw=="]; - [Api manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, micUid, roomId, position, ticket, nil]; +/// 房间下麦 +/// @param complection 完成 +/// @param micUid 上麦的uid +/// @param roomId 房间的id +/// @param position 坑位的序号 +/// @param ticket ticket ++ (void)roomMicDownMic:(HttpRequestHelperCompletion)complection micUid:(NSString *)micUid roomId:(NSString *)roomId position:(NSString *)position ticket:(NSString *)ticket { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9taWMvZG93bm1pYw=="];///room/mic/downmic + [Api makeRequest:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, micUid, roomId, position, ticket, nil]; } -+ (void)chamberMiecreoscoopePresentBWSttess:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9naWZ0L3ZhbHVlL2dldA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, uid, nil]; +/// 获取麦序礼物值 +/// @param completion 完成 +/// @param roomUid 房间的uid +/// @param uid 用户的uid ++ (void)roomMicroGiftValue:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9naWZ0L3ZhbHVlL2dldA=="];///room/gift/value/get + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, uid, nil]; } -+ (void)chamberPresentBWSttessupburdenLoudspeaker:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid micUid:(NSString *)micUid position:(NSString *)position uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9naWZ0L3ZhbHVlL3VwL21pYw=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, micUid, position, uid, nil]; +/// 开启礼物值的情况下 上麦 +/// @param completion 完成 +/// @param roomUid 房间的uid +/// @param micUid 上麦的uid +/// @param position 几号麦序 +/// @param uid 操作者的uid ++ (void)roomGiftValueUpMic:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid micUid:(NSString *)micUid position:(NSString *)position uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9naWZ0L3ZhbHVlL3VwL21pYw=="];///room/gift/value/up/mic + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, micUid, position, uid, nil]; } #pragma mark - 活动 -+ (void)chamberImportpriseSttowardsement:(HttpRequestHelperCompletion)completion roomId:(NSString *)roomId type:(NSString *)type { - NSString * fang = [NSString stringFromBase64String:@"aG9tZS9iYW5uZXI="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomId, type, nil]; +/// 房间活动页的列表 +/// @param completion 完成 +/// @param roomId 房间的id +/// @param type 类型 2 房间的 1 首页的 ++ (void)roomActivityList:(HttpRequestHelperCompletion)completion roomId:(NSString *)roomId type:(NSString *)type { + NSString * fang = [NSString stringFromBase64String:@"aG9tZS9iYW5uZXI="];///home/banner + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomId, type, nil]; } -+ (void)assembleChamber:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid uid:(NSString *)uid type:(NSString *)type roomUids:(NSString *)roomUids { - NSString * fang = [NSString stringFromBase64String:@"ZmFucy9mYW5zUm9vbQ=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, uid, type, roomUids, nil]; +/// 收藏房间 +/// @param completion 完成 +/// @param roomUid 房间的uid +/// @param uid uid +/// @param type 1 收藏 2 取消收藏 3:批量取消收藏 +/// @param roomUids 批量删除的房间uid,用逗号隔开 ++ (void)collectRoom:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid uid:(NSString *)uid type:(NSString *)type roomUids:(NSString *)roomUids { + NSString * fang = [NSString stringFromBase64String:@"ZmFucy9mYW5zUm9vbQ=="];///fans/fansRoom + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, uid, type, roomUids, nil]; } -+ (void)diversifictowardsionChamberEngagementDeclare:(HttpRequestHelperCompletion)completion roomUserId:(NSString *)roomUserId roundId:(NSString *)roundId { - NSString * fang = [NSString stringFromBase64String:@"dXNlcnJvb20vaW5WMg=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUserId, roundId, nil]; +/// 改变相亲的状态的 +/// @param completion 完成 +/// @param roomUserId 房主的uid +/// @param roundId 相亲进行到哪一步 ++ (void)changeRoomDatingState:(HttpRequestHelperCompletion)completion roomUserId:(NSString *)roomUserId roundId:(NSString *)roundId { + NSString * fang = [NSString stringFromBase64String:@"dXNlcnJvb20vaW5WMg=="];/// + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUserId, roundId, nil]; } -+ (void)requisitionReportConsumerInterChamber:(HttpRequestHelperCompletion)completion uid:(NSString *)uid roomUid:(NSString *)roomUid ticket:(NSString *)ticket { - NSString * fang = [NSString stringFromBase64String:@""]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, roomUid, ticket, nil]; +/// 上报用户进房 +/// @param completion 完成 +/// @param uid 用户uid +/// @param roomUid 房间uid +/// @param ticket ticket ++ (void)requestReportUserInterRoom:(HttpRequestHelperCompletion)completion uid:(NSString *)uid roomUid:(NSString *)roomUid ticket:(NSString *)ticket { + NSString * fang = [NSString stringFromBase64String:@""];///userroom/inV2 + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, roomUid, ticket, nil]; } -+ (void)requisitionReportConsumerOptowardssideChamber:(HttpRequestHelperCompletion)completion uid:(NSString *)uid roomUid:(NSString *)roomUid ticket:(NSString *)ticket { - NSString * fang = [NSString stringFromBase64String:@"dXNlcnJvb20vb3V0VjI="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, roomUid, ticket, nil]; +/// 上报用户退房 +/// @param completion 完成 +/// @param uid 用户uid +/// @param roomUid 房间uid +/// @param ticket ticket ++ (void)requestReportUserOutRoom:(HttpRequestHelperCompletion)completion uid:(NSString *)uid roomUid:(NSString *)roomUid ticket:(NSString *)ticket { + NSString * fang = [NSString stringFromBase64String:@"dXNlcnJvb20vb3V0VjI="];///userroom/outV2 + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, roomUid, ticket, nil]; } -+ (void)shankThroughoutChamberCombatCentiretyfor:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid roundId:(NSString *)roundId isRecognize:(NSString *)isRecognize { - NSString * fang = [NSString stringFromBase64String:@"Y3Jvc3Nyb29tcGtyb3VuZC9nZXRDcm9zc1BrRGF0YQ=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, roundId, isRecognize, nil]; +/// 处理跨房PK的邀请 +/// @param completion 完成 +/// @param roomUid 房主的ui +/// @param roundId pk的id +/// @param isAccept o拒绝 1 接受 ++ (void)handleAcrossRoomPKInvite:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid roundId:(NSString *)roundId isAccept:(NSString *)isAccept { + NSString * fang = [NSString stringFromBase64String:@"Y3Jvc3Nyb29tcGtyb3VuZC9nZXRDcm9zc1BrRGF0YQ=="];///crossroompkround/getCrossPkData + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, roundId, isAccept, nil]; } -+ (void)acquireThroughoutChamberCombatSpecific:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { - NSString * fang = [NSString stringFromBase64String:@""]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, nil]; +/// 获取跨房PK详情 +/// @param completion 完成 +/// @param roomUid 房主的ui ++ (void)getAcrossRoomPKDetail:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@""];/// + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, nil]; } -+ (void)requisitionInChamberFantowardsicsSquad:(HttpRequestHelperCompletion)completion teamUid:(NSString *)teamUid { - NSString * fang = [NSString stringFromBase64String:@"YW5jaG9yRmFuc1RlYW0vaW5pdEluUm9vbUZhbnNUZWFt"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, teamUid, nil]; +/// 进房初始化当前用户与房间粉丝团关系 +/// @param completion 完成 +/// @param teamUid 房间uid ++ (void)requestInRoomFansTeam:(HttpRequestHelperCompletion)completion teamUid:(NSString *)teamUid { + NSString * fang = [NSString stringFromBase64String:@"YW5jaG9yRmFuc1RlYW0vaW5pdEluUm9vbUZhbnNUZWFt"];///anchorFansTeam/initInRoomFansTeam + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, teamUid, nil]; } -+ (void)requisitionJoinFantowardsicsSquad:(HttpRequestHelperCompletion)completion teamUid:(NSString *)teamUid { - NSString * fang = [NSString stringFromBase64String:@"YW5jaG9yRmFuc1RlYW0vYXBwbHlGYW5zVGVhbVBvcEluZm9Wbw=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, teamUid, nil]; +/// 获取加入粉丝团的内容 +/// @param completion 完成 +/// @param teamUid 要加入粉丝团的房间uid ++ (void)requestJoinFansTeam:(HttpRequestHelperCompletion)completion teamUid:(NSString *)teamUid { + NSString * fang = [NSString stringFromBase64String:@"YW5jaG9yRmFuc1RlYW0vYXBwbHlGYW5zVGVhbVBvcEluZm9Wbw=="];///anchorFansTeam/applyFansTeamPopInfoVo + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, teamUid, nil]; } -+ (void)requisitionFantowardsicsSquadTask:(HttpRequestHelperCompletion)completion teamUid:(NSString *)teamUid { - NSString * fang = [NSString stringFromBase64String:@"Y3Jvc3Nyb29tcGtyb3VuZC9nZXRTaW5nbGVSb29tUGtSdWxl"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, teamUid, nil]; +/// 获取粉丝团任务列表 +/// @param completion 完成 +/// @param teamUid 房间uid ++ (void)requestFansTeamTask:(HttpRequestHelperCompletion)completion teamUid:(NSString *)teamUid { + NSString * fang = [NSString stringFromBase64String:@"Y3Jvc3Nyb29tcGtyb3VuZC9nZXRTaW5nbGVSb29tUGtSdWxl"];///crossroompkround/getSingleRoomPkRule + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, teamUid, nil]; } -+ (void)requisitionKellegCombatePreadominant:(HttpRequestHelperCompletion)completion { - NSString * fang = [NSString stringFromBase64String:@""]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, nil]; +/// 获取个播PK规则 +/// @param completion 完成 ++ (void)requestAnchorPkRule:(HttpRequestHelperCompletion)completion { + NSString * fang = [NSString stringFromBase64String:@""];/// + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, nil]; } #pragma mark - 超管 -+ (void)acquireChamberSenstowardsionalManagementSttowardsement:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { - NSString * fang = [NSString stringFromBase64String:@"aGFsbC9zdXBlck1hbmFnZXIvbGlzdFN1cGVyTWFuYWdlSW5Sb29t"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, nil]; +///获取房间超管列表 ++ (void)getRoomSuperAdminList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@"aGFsbC9zdXBlck1hbmFnZXIvbGlzdFN1cGVyTWFuYWdlSW5Sb29t"];///hall/superManager/listSuperManageInRoom + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, nil]; } -+ (void)reqeustEncourageChamber:(HttpRequestHelperCompletion)completion roomId:(NSString *)roomId { - NSString * fang = [NSString stringFromBase64String:@"cm9vbWluc2lkZXJlY29tbWVuZC9yZWNvbW1lbmRSb29tTGlzdA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomId, nil]; +///房内引流推荐 ++ (void)reqeustRecommendRoom:(HttpRequestHelperCompletion)completion roomId:(NSString *)roomId { + NSString * fang = [NSString stringFromBase64String:@"cm9vbWluc2lkZXJlY29tbWVuZC9yZWNvbW1lbmRSb29tTGlzdA=="];///roominsiderecommend/recommendRoomList + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomId, nil]; } -+ (void)requisitionChamberRtowardseings:(HttpRequestHelperCompletion)completion +/// 获取房间榜单 +/// @param completion 完成 +/// @param roomUid 房间uid +/// @param type 类型 贡献日榜"day",贡献月榜"month" +/// @param page 页码 +/// @param pageSize 每页数量 ++ (void)requestRoomRankings:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid type:(NSString *)type page:(NSString *)page pageSize:(NSString *)pageSize { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9yYW5raW5ncw=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, type, page, pageSize, nil]; + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9yYW5raW5ncw=="];///room/rankings + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, type, page, pageSize, nil]; } -+ (void)strangeConsumerInititowardseBewelcometo:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { - NSString * fang = [NSString stringFromBase64String:@"bmV3VXNlclN0YXJ0L3Jvb21TYXlIZWxsbw=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, roomUid, nil]; +/// 新用户开始打招呼 +/// @param completion 完成 +/// @param roomUid 房主的uid ++ (void)newUserStartGreet:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@"bmV3VXNlclN0YXJ0L3Jvb21TYXlIZWxsbw=="];///newUserStart/roomSayHello + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, roomUid, nil]; } -+ (void)requisitionConsumerInChamber:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"dXNlcnJvb20vZ2V0"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil]; +///获取用户在房间中的信息 ++ (void)requestUserInRoom:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"dXNlcnJvb20vZ2V0"];///userroom/get + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil]; } -+ (void)requisitionLtowardsterKellegChamber:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { - NSString * fang = [NSString stringFromBase64String:@"c2luZ2xlL2Jyb2FkY2FzdC9yb29tL3BhZ2U="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, nil]; +/// 获取下一个个播房 +/// @param completion 完成 +/// @param roomUid 当前房间uid ++ (void)requestNextAnchorRoom:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@"c2luZ2xlL2Jyb2FkY2FzdC9yb29tL3BhZ2U="];///single/broadcast/room/page + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, nil]; } -+ (void)requisitionStrangeConsumerInChamberPresent:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { - NSString * fang = [NSString stringFromBase64String:@"Z2lmdC9uZXdVc2VyL2luUm9vbQ=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, nil]; +/// 获取新用户进房礼物 +/// @param completion 完成 +/// @param roomUid 房间uid ++ (void)requestNewUserInRoomGift:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@"Z2lmdC9uZXdVc2VyL2luUm9vbQ=="];///gift/newUser/inRoom + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, nil]; } -+ (void)requisitionDeficitShetowardshe:(HttpRequestHelperCompletion)completion uid:(NSString *)roomUid { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9yZWQtZW52ZWxvcA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, nil]; +/// 获取红包信息 +/// @param completion 完成 +/// @param roomUid 房间Uid ++ (void)requestRedPacket:(HttpRequestHelperCompletion)completion uid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9yZWQtZW52ZWxvcA=="];///room/red-envelop + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, nil]; } -+(void)requisitionChamberThresholdCharegWindow:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid{ - NSString * fang = [NSString stringFromBase64String:@"cm9vbUZpcnN0Q2hhcmdlV2luZG93L2dldA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,roomUid,nil]; +///拿到首充弹窗次数 ++(void)requestRoomFirstCharegWindow:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid{ + NSString * fang = [NSString stringFromBase64String:@"cm9vbUZpcnN0Q2hhcmdlV2luZG93L2dldA=="];///roomFirstChargeWindow/get + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,roomUid,nil]; } -+(void)refurbishChamberThresholdCharegWindow:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid{ - NSString * fang = [NSString stringFromBase64String:@"cm9vbUZpcnN0Q2hhcmdlV2luZG93L3VwZGF0ZQ=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,roomUid,nil]; +///更新首充弹窗次数 ++(void)updateRoomFirstCharegWindow:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid{ + NSString * fang = [NSString stringFromBase64String:@"cm9vbUZpcnN0Q2hhcmdlV2luZG93L3VwZGF0ZQ=="];///roomFirstChargeWindow/update + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,roomUid,nil]; } diff --git a/YuMi/Modules/YMRoom/Model/ActivityInfoModel.h b/YuMi/Modules/YMRoom/Model/ActivityInfoModel.h new file mode 100644 index 00000000..81ad1fc8 --- /dev/null +++ b/YuMi/Modules/YMRoom/Model/ActivityInfoModel.h @@ -0,0 +1,45 @@ +// +// ActivityInfoModel.h +// YUMI +// +// Created by YUMI on 2021/12/14. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +///跳转的类型 +typedef NS_ENUM(NSInteger, ActivitySkipType) { + ActivitySkipType_Room = 2, + ActivitySkipType_Web, +}; + +///跳转h5的话 是全屏还是半屏 +typedef NS_ENUM(NSInteger, ActivityShowType) { + ActivityShowType_Full = 1, + ActivityShowType_Half = 2, +}; +///活动类型 +typedef NS_ENUM(NSInteger, ActivityType) { + ActivityType_Love = 1,///寻爱 + ActivityType_First = 2,///首充 + ActivityType_Fairy = 3,///夺宝精灵 + +}; + +@interface ActivityInfoModel : NSObject +///名称 +@property (nonatomic,copy) NSString *bannerName; +///活动的图片 +@property (nonatomic, copy)NSString *bannerPic; +///跳转类型 +@property (nonatomic, assign)ActivitySkipType skipType; +///如果是跳转房间的话 那就是房主的uid 如果是h5的话 那就是链接 +@property (nonatomic, copy)NSString *skipUri; +///跳转h5类型 +@property (nonatomic, assign)NSInteger showType; +///活动类型 +@property (nonatomic,assign) ActivityType activityType; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/Model/ActivityInfoModel.m b/YuMi/Modules/YMRoom/Model/ActivityInfoModel.m new file mode 100644 index 00000000..2ecc2e77 --- /dev/null +++ b/YuMi/Modules/YMRoom/Model/ActivityInfoModel.m @@ -0,0 +1,12 @@ +// +// ActivityInfoModel.m +// YUMI +// +// Created by YUMI on 2021/12/14. +// + +#import "ActivityInfoModel.h" + +@implementation ActivityInfoModel + +@end diff --git a/YuMi/Modules/YMRoom/Model/ChamberAbstractMatrix.h b/YuMi/Modules/YMRoom/Model/ChamberAbstractMatrix.h deleted file mode 100644 index 3df770be..00000000 --- a/YuMi/Modules/YMRoom/Model/ChamberAbstractMatrix.h +++ /dev/null @@ -1,138 +0,0 @@ -// -// ChamberAbstractMatrix.h -// YUMI -// -// Created by YUMI on 2021/10/18. -// - -#import "NSObject+MJExtension.h" -#import "YUMINNNN.h" -#import "ThroughoutChamberCombatFasciaboardMatrix.h" - -NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSInteger, ChamberGenre) { - ChamberGenre_Game = 3, - ChamberGenre_Anchor = 6, - ChamberGenre_MiniGame = 7 -}; - -typedef NS_ENUM(NSInteger, ChamberModeGenre){ - - ChamberModeGenre_Normal_Mode = 0, - - ChamberModeGenre_Open_Micro_Mode = 1, - - ChamberModeGenre_Close_Micro_Mode = 2, - - ChamberModeGenre_Open_PK_Mode = 3, - - ChamberModeGenre_Close_PK_Mode = 4, - - ChamberModeGenre_Open_Blind = 5, - - ChamberModeGenre_Open_AcrossRoomPK_mode = 7, -}; - -typedef NS_ENUM(NSInteger, PermitChamberGenre) { - PermitChamberGenre_Licnese = 1, - PermitChamberGenre_YoungerStar = 3, - PermitChamberGenre_Other -}; - - -typedef NS_ENUM(NSInteger, ChamberDisportDateingGenre) { - ChamberDisportDateingGenre_Talk = 1, - ChamberDisportDateingGenre_Pick = 2, - ChamberDisportDateingGenre_Result = 3, - ChamberDisportDateingGenre_Finish = 4, -}; - -typedef NS_ENUM(NSInteger, ChamberDatingDeclareChangeGenre) { - ChamberDatingDeclareChangeGenre_Normal = 0, - ChamberDatingDeclareChangeGenre_Open = 1, - ChamberDatingDeclareChangeGenre_Close = 2, -}; - -@interface ConfectioneryTimberSwitchMatrix : NSObject -@property(nonatomic, assign) BOOL openBoxSwitch; -@property(nonatomic, copy) NSString *openBoxIcon; -@property (nonatomic,assign) BOOL open; -@property (nonatomic,assign) NSInteger openLevel; -@property (nonatomic,assign) NSInteger sendMsgLevel; -@end - -@class ThroughoutChamberCombatFasciaboardMatrix; - -@interface ChamberAbstractMatrix : NSObject -@property (nonatomic , copy) NSString * nick; -@property (nonatomic , assign) NSInteger uid; -@property (nonatomic , assign) NSInteger isRecom; -@property (nonatomic , assign) NSInteger calcSumDataIndex; -@property (nonatomic , copy) NSString * roomTag; -@property (nonatomic , copy) NSString *singleRoomSortId; -@property (nonatomic , copy) NSString *sortName; -@property (nonatomic , copy) NSString * audioSdkType; -@property (nonatomic , copy) NSString * trtcSig; -@property (nonatomic , assign) NSInteger hideFlag; -@property (nonatomic , assign) ChamberGenre type; -@property (nonatomic , strong) NSArray * speakTemplate; -@property (nonatomic , assign) NSInteger tagId; -@property (nonatomic , assign) BOOL isExceptionClose; -@property (nonatomic , assign) NSInteger recomSeq; -@property (nonatomic , assign) BOOL redEnvelopeOpen; -@property (nonatomic , assign) NSInteger roomId; -@property (nonatomic , copy) NSString * meetingName; -@property (nonatomic , assign) BOOL valid; -@property (nonatomic , assign) NSInteger openTime; -@property (nonatomic , copy) NSString * tagPict; -@property (nonatomic , assign) BOOL isPureMode; -@property (nonatomic , assign) NSInteger count; -@property (nonatomic , assign) BOOL showGiftValue; -@property (nonatomic , copy) NSString * avatar; -@property (nonatomic , assign) NSInteger onlineNum; -@property (nonatomic , assign) BOOL isCloseScreen; -@property (nonatomic , assign) BOOL exceptionClose; -@property (nonatomic , assign) PermitChamberGenre isPermitRoom; -@property (nonatomic , assign) NSInteger abChannelType; -@property (nonatomic , assign) BOOL hasAnimationEffect; -@property (nonatomic , assign) GenderGenre gender; -@property (nonatomic , assign) BOOL serverRedEnvelopeSwitch; -@property (nonatomic , assign) BOOL isOpenGame; -@property (nonatomic , copy) NSString * roomDesc; -@property (nonatomic , assign) NSInteger officeUser; -@property (nonatomic , assign) NSInteger erbanNo; -@property (nonatomic , assign) NSInteger audioQuality; -@property (nonatomic , copy) NSString * title; -@property (nonatomic , assign) NSInteger closeScreenFlag; -@property (nonatomic , assign) NSInteger operatorStatus; -@property (nonatomic , copy) NSString * roomPwd; -@property (nonatomic , assign) BOOL leaveMode; -@property (nonatomic, copy) NSString *backPic; -@property (nonatomic , assign) ChamberModeGenre roomModeType; -@property (nonatomic, copy) NSString *introduction; -@property (nonatomic,strong) ConfectioneryTimberSwitchMatrix *boxSwitchVo; -@property(nonatomic, assign) BOOL isRoomFans; -@property (nonatomic,assign) ChamberDisportDateingGenre blindDateState; -@property (nonatomic,assign) BOOL canOpenBlindDate; -@property (nonatomic,assign) NSInteger blindDateVipUid; -@property (nonatomic,assign) ChamberDatingDeclareChangeGenre datingState; -@property (nonatomic, assign) BOOL hadChangeRoomType; -@property (nonatomic, assign) BOOL isReselect; -@property (nonatomic, assign) int64_t mgId; -@property (nonatomic, copy) NSString *mgName; -@property (nonatomic, assign) NSInteger roundId; -@property (nonatomic, assign) ThroughoutChamberPkDeclareGenre pkState; -@property (nonatomic, copy) NSString *winUid; -@property (nonatomic, copy) NSString *pkUid; -@property (nonatomic, copy) NSString *pkRoomId; -@property (nonatomic , assign) double clearScreenTime; -@property (nonatomic, assign) NSInteger mgMicNum; -@property (nonatomic, assign) BOOL showPkBeginTime; -@property (nonatomic, assign) long long pkBeginTime; -@property (nonatomic, assign) long long pkMatchStartTime; -@property (nonatomic,assign) BOOL hasWishGiftPermit; -@property (nonatomic,assign) BOOL hasOpenWishGift; -@property (nonatomic,strong) ConfectioneryTimberSwitchMatrix *findLoveDrawSwitchVo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/Model/ChamberAbstractMatrix.m b/YuMi/Modules/YMRoom/Model/ChamberAbstractMatrix.m deleted file mode 100644 index 30b82e77..00000000 --- a/YuMi/Modules/YMRoom/Model/ChamberAbstractMatrix.m +++ /dev/null @@ -1,17 +0,0 @@ -// -// ChamberAbstractMatrix.m -// YUMI -// -// Created by YUMI on 2021/10/18. -// - -#import "ChamberAbstractMatrix.h" - -@implementation ConfectioneryTimberSwitchMatrix - -@end - - -@implementation ChamberAbstractMatrix - -@end diff --git a/YuMi/Modules/YMRoom/Model/ChamberStrangeConsumerBewelcometoMatrix.h b/YuMi/Modules/YMRoom/Model/ChamberStrangeConsumerBewelcometoMatrix.h deleted file mode 100644 index c584be29..00000000 --- a/YuMi/Modules/YMRoom/Model/ChamberStrangeConsumerBewelcometoMatrix.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// ChamberStrangeConsumerBewelcometoMatrix.h -// YUMI -// -// Created by YUMI on 2022/6/6. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface ChamberStrangeConsumerBewelcometoMatrix : NSObject -@property (nonatomic,assign) BOOL roomPopup; -@property (nonatomic,copy) NSArray *sayHelloUserAvatarList; -@property (nonatomic,assign) int sayHelloUserNum; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/Model/ChamberStrangeConsumerBewelcometoMatrix.m b/YuMi/Modules/YMRoom/Model/ChamberStrangeConsumerBewelcometoMatrix.m deleted file mode 100644 index 7a9c25c3..00000000 --- a/YuMi/Modules/YMRoom/Model/ChamberStrangeConsumerBewelcometoMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ChamberStrangeConsumerBewelcometoMatrix.m -// YUMI -// -// Created by YUMI on 2022/6/6. -// - -#import "ChamberStrangeConsumerBewelcometoMatrix.h" - -@implementation ChamberStrangeConsumerBewelcometoMatrix - -@end diff --git a/YuMi/Modules/YMRoom/Model/DatingInfoModel.h b/YuMi/Modules/YMRoom/Model/DatingInfoModel.h new file mode 100644 index 00000000..5e6f65e1 --- /dev/null +++ b/YuMi/Modules/YMRoom/Model/DatingInfoModel.h @@ -0,0 +1,49 @@ +// +// DatingInfoModel.h +// YUMI +// +// Created by YUMI on 2022/1/5. +// + +#import +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +@interface DatingInfoModel : NSObject +///头像 +@property (nonatomic,strong) NSString *avatar; +///操作用户uid +@property (nonatomic,assign) NSInteger uid; +///操作用户昵称 +@property (nonatomic,strong) NSString *nickname; +///当前操作的坑位 +@property (nonatomic,assign) int position; +///目标用户uid +@property (nonatomic,assign) NSInteger targetUid; +///目标用户昵称 +@property (nonatomic,strong) NSString *targetNickname; +///目标的头像 +@property (nonatomic,strong) NSString *targetAvatar; +///操作用户麦位 +@property (nonatomic,assign) int targetPosition; +///相亲步骤变更提示文案 +@property (nonatomic,strong) NSString *content; +///是否有互选对象 +@property (nonatomic,assign) BOOL hasHeart; +///是否有选择的对象 +@property (nonatomic,assign) BOOL hasSelectUser; +/// 1 男性, 2 女性。 +@property (nonatomic, assign) GenderType gender; +///目标用户的性别 +@property (nonatomic,assign) GenderType targetGender; +///互选的时候动画 +@property (nonatomic,strong) NSString *svgaUrl; +///SVGA的时长 +@property (nonatomic,assign) int svgaSecond; +///起始地址的 +@property (nonatomic,assign) CGPoint originPoint; +///目标地址的坐标 +@property (nonatomic,assign) CGPoint targetPoint; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/Model/DatingInfoModel.m b/YuMi/Modules/YMRoom/Model/DatingInfoModel.m new file mode 100644 index 00000000..3264b9c3 --- /dev/null +++ b/YuMi/Modules/YMRoom/Model/DatingInfoModel.m @@ -0,0 +1,12 @@ +// +// DatingInfoModel.m +// YUMI +// +// Created by YUMI on 2022/1/5. +// + +#import "DatingInfoModel.h" + +@implementation DatingInfoModel + +@end diff --git a/YuMi/Modules/YMRoom/Model/EngagementAbstractMatrix.h b/YuMi/Modules/YMRoom/Model/EngagementAbstractMatrix.h deleted file mode 100644 index 5ad867e3..00000000 --- a/YuMi/Modules/YMRoom/Model/EngagementAbstractMatrix.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// EngagementAbstractMatrix.h -// YUMI -// -// Created by YUMI on 2022/1/5. -// - -#import -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -@interface EngagementAbstractMatrix : NSObject -@property (nonatomic,strong) NSString *avatar; -@property (nonatomic,assign) NSInteger uid; -@property (nonatomic,strong) NSString *nickname; -@property (nonatomic,assign) int position; -@property (nonatomic,assign) NSInteger targetUid; -@property (nonatomic,strong) NSString *targetNickname; -@property (nonatomic,strong) NSString *targetAvatar; -@property (nonatomic,assign) int targetPosition; -@property (nonatomic,strong) NSString *content; -@property (nonatomic,assign) BOOL hasHeart; -@property (nonatomic,assign) BOOL hasSelectUser; -@property (nonatomic, assign) GenderGenre gender; -@property (nonatomic,assign) GenderGenre targetGender; -@property (nonatomic,strong) NSString *svgaUrl; -@property (nonatomic,assign) int svgaSecond; -@property (nonatomic,assign) CGPoint originPoint; -@property (nonatomic,assign) CGPoint targetPoint; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/Model/EngagementAbstractMatrix.m b/YuMi/Modules/YMRoom/Model/EngagementAbstractMatrix.m deleted file mode 100644 index d57b2e09..00000000 --- a/YuMi/Modules/YMRoom/Model/EngagementAbstractMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// EngagementAbstractMatrix.m -// YUMI -// -// Created by YUMI on 2022/1/5. -// - -#import "EngagementAbstractMatrix.h" - -@implementation EngagementAbstractMatrix - -@end diff --git a/YuMi/Modules/YMRoom/Model/ImportpriseAbstractMatrix.h b/YuMi/Modules/YMRoom/Model/ImportpriseAbstractMatrix.h deleted file mode 100644 index dbcb8272..00000000 --- a/YuMi/Modules/YMRoom/Model/ImportpriseAbstractMatrix.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// ImportpriseAbstractMatrix.h -// YUMI -// -// Created by YUMI on 2021/12/14. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSInteger, ActivitySkipGenre) { - ActivitySkipGenre_Room = 2, - ActivitySkipGenre_Web, -}; - -typedef NS_ENUM(NSInteger, ActivityShowGenre) { - ActivityShowGenre_Full = 1, - ActivityShowGenre_Half = 2, -}; -typedef NS_ENUM(NSInteger, ActivityGenre) { - ActivityGenre_Love = 1, - ActivityGenre_First = 2, - ActivityGenre_Fairy = 3, - -}; - -@interface ImportpriseAbstractMatrix : NSObject -@property (nonatomic,copy) NSString *bannerName; -@property (nonatomic, copy)NSString *bannerPic; -@property (nonatomic, assign)ActivitySkipGenre skipType; -@property (nonatomic, copy)NSString *skipUri; -@property (nonatomic, assign)NSInteger showType; -@property (nonatomic,assign) ActivityGenre activityType; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/Model/ImportpriseAbstractMatrix.m b/YuMi/Modules/YMRoom/Model/ImportpriseAbstractMatrix.m deleted file mode 100644 index 7ef9a75f..00000000 --- a/YuMi/Modules/YMRoom/Model/ImportpriseAbstractMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ImportpriseAbstractMatrix.m -// YUMI -// -// Created by YUMI on 2021/12/14. -// - -#import "ImportpriseAbstractMatrix.h" - -@implementation ImportpriseAbstractMatrix - -@end diff --git a/YuMi/Modules/YMRoom/Model/RoomInfoModel.h b/YuMi/Modules/YMRoom/Model/RoomInfoModel.h new file mode 100644 index 00000000..4e7db2d9 --- /dev/null +++ b/YuMi/Modules/YMRoom/Model/RoomInfoModel.h @@ -0,0 +1,169 @@ +// +// RoomInfoModel.h +// YUMI +// +// Created by YUMI on 2021/10/18. +// + +#import "NSObject+MJExtension.h" +#import "YUMINNNN.h" +#import "AcrossRoomPKPanelModel.h" + +NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(NSInteger, RoomType) { + RoomType_Game = 3, + RoomType_Anchor = 6, // 个播房 + RoomType_MiniGame = 7//小游戏房 +}; + +typedef NS_ENUM(NSInteger, RoomModeType){ + ///普通模式 + RoomModeType_Normal_Mode = 0, + ///排麦模式 + RoomModeType_Open_Micro_Mode = 1, + ///关闭排麦模式 + RoomModeType_Close_Micro_Mode = 2, + ///开启PK + RoomModeType_Open_PK_Mode = 3, + ///关闭PK + RoomModeType_Close_PK_Mode = 4, + ///相亲 + RoomModeType_Open_Blind = 5, + ///开启跨房PK + RoomModeType_Open_AcrossRoomPK_mode = 7, +}; + +typedef NS_ENUM(NSInteger, PermitRoomType) { + PermitRoomType_Licnese = 1,//牌照 + PermitRoomType_YoungerStar = 3,//新秀 + PermitRoomType_Other//其他 +}; + + +typedef NS_ENUM(NSInteger, RoomPlayDateingType) { + RoomPlayDateingType_Talk = 1,///交谈 + RoomPlayDateingType_Pick = 2,///心动选人 + RoomPlayDateingType_Result = 3,///公布结果 + RoomPlayDateingType_Finish = 4,///结束 +}; + +///本地字段 房间相亲的状态 +typedef NS_ENUM(NSInteger, RoomDatingStateChangeType) { + RoomDatingStateChangeType_Normal = 0,///默认状态 + RoomDatingStateChangeType_Open = 1,/// 关闭->开启 + RoomDatingStateChangeType_Close = 2,///开启->关闭 +}; + +@interface CandyTreeSwitchModel : NSObject +///幸运许愿池开关 +@property(nonatomic, assign) BOOL openBoxSwitch; +///许愿池图标 +@property(nonatomic, copy) NSString *openBoxIcon; +///寻爱之旅总开关 +@property (nonatomic,assign) BOOL open; +///寻爱之旅开关等级 +@property (nonatomic,assign) NSInteger openLevel; +///允许将中奖消息对外展示等级 +@property (nonatomic,assign) NSInteger sendMsgLevel; +@property(nonatomic,copy) NSString *price; +@end + +@class AcrossRoomPKPanelModel; + +@interface RoomInfoModel : NSObject +@property (nonatomic , copy) NSString * nick; +@property (nonatomic , assign) NSInteger uid; +@property (nonatomic , assign) NSInteger isRecom; +@property (nonatomic , assign) NSInteger calcSumDataIndex; +@property (nonatomic , copy) NSString * roomTag; +@property (nonatomic , copy) NSString *singleRoomSortId;//房间分类 +@property (nonatomic , copy) NSString *sortName; +@property (nonatomic , copy) NSString * audioSdkType; +@property (nonatomic , copy) NSString * trtcSig; +@property (nonatomic , assign) NSInteger hideFlag; +@property (nonatomic , assign) RoomType type; +@property (nonatomic , strong) NSArray * speakTemplate; +@property (nonatomic , assign) NSInteger tagId; +@property (nonatomic , assign) BOOL isExceptionClose; +@property (nonatomic , assign) NSInteger recomSeq; +@property (nonatomic , assign) BOOL redEnvelopeOpen; +@property (nonatomic , assign) NSInteger roomId; +@property (nonatomic , copy) NSString * meetingName; +@property (nonatomic , assign) BOOL valid; +@property (nonatomic , assign) NSInteger openTime; +@property (nonatomic , copy) NSString * tagPict; +@property (nonatomic , assign) BOOL isPureMode; +@property (nonatomic , assign) NSInteger count; +@property (nonatomic , assign) BOOL showGiftValue; +@property (nonatomic , copy) NSString * avatar; +@property (nonatomic , assign) NSInteger onlineNum; +@property (nonatomic , assign) BOOL isCloseScreen; +@property (nonatomic , assign) BOOL exceptionClose; +@property (nonatomic , assign) PermitRoomType isPermitRoom; +@property (nonatomic , assign) NSInteger abChannelType; +@property (nonatomic , assign) BOOL hasAnimationEffect; +@property (nonatomic , assign) GenderType gender; +@property (nonatomic , assign) BOOL serverRedEnvelopeSwitch; +@property (nonatomic , assign) BOOL isOpenGame; +@property (nonatomic , copy) NSString * roomDesc; +@property (nonatomic , assign) NSInteger officeUser; +@property (nonatomic , assign) NSInteger erbanNo; +@property (nonatomic , assign) NSInteger audioQuality; +@property (nonatomic , copy) NSString * title; +@property (nonatomic , assign) NSInteger closeScreenFlag; +@property (nonatomic , assign) NSInteger operatorStatus; +@property (nonatomic , copy) NSString * roomPwd; +@property (nonatomic , assign) BOOL leaveMode; +@property (nonatomic, copy) NSString *backPic; +@property (nonatomic , assign) RoomModeType roomModeType;//房间模式 +///房间介绍 +@property (nonatomic, copy) NSString *introduction; +///糖果树的配置 +@property (nonatomic,strong) CandyTreeSwitchModel *boxSwitchVo; +/// 是否已经收藏 +@property(nonatomic, assign) BOOL isRoomFans; +///当前相亲所进行到什么模式 +@property (nonatomic,assign) RoomPlayDateingType blindDateState; +///能否开启相亲 +@property (nonatomic,assign) BOOL canOpenBlindDate; +///相亲的vip坑位的用户uid +@property (nonatomic,assign) NSInteger blindDateVipUid; +///本地的字段 判断当前模式是否从相亲切换 关闭或者开启 +@property (nonatomic,assign) RoomDatingStateChangeType datingState; +///是否切换了房间类型(本地字段) +@property (nonatomic, assign) BOOL hadChangeRoomType; +///是否需要重新选择小游戏,原有小游戏玩法不在最新配置里面是需要重新选择 +@property (nonatomic, assign) BOOL isReselect; +///小游戏ID +@property (nonatomic, assign) int64_t mgId; +///小游戏名称 +@property (nonatomic, copy) NSString *mgName; +///pk场次id(本地字段) +@property (nonatomic, assign) NSInteger roundId; +//PK进行状态(1:pk中 2:惩罚中) +@property (nonatomic, assign) AcrossRoomPkStateType pkState; +///个播PK赢方uid +@property (nonatomic, copy) NSString *winUid; +///PK中的对方UID(本地字段) +@property (nonatomic, copy) NSString *pkUid; +///PK中的对方房间roomId(本地字段) +@property (nonatomic, copy) NSString *pkRoomId; +///清除公屏的时间(用于拉取此时间后的公屏消息) +@property (nonatomic , assign) double clearScreenTime; +///小游戏房麦位数量 +@property (nonatomic, assign) NSInteger mgMicNum; +///是否显示跨房PK预约倒计时 +@property (nonatomic, assign) BOOL showPkBeginTime; +///跨房PK开始时间 +@property (nonatomic, assign) long long pkBeginTime; +///个播随机PK匹配结束时间 +@property (nonatomic, assign) long long pkMatchStartTime; +/// 是否有心愿礼物权限 +@property (nonatomic,assign) BOOL hasWishGiftPermit; +///是否已经开启心愿礼物 +@property (nonatomic,assign) BOOL hasOpenWishGift; +///寻爱之旅的配置 +@property (nonatomic,strong) CandyTreeSwitchModel *findLoveDrawSwitchVo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/Model/RoomInfoModel.m b/YuMi/Modules/YMRoom/Model/RoomInfoModel.m new file mode 100644 index 00000000..2007a796 --- /dev/null +++ b/YuMi/Modules/YMRoom/Model/RoomInfoModel.m @@ -0,0 +1,17 @@ +// +// RoomInfoModel.m +// YUMI +// +// Created by YUMI on 2021/10/18. +// + +#import "RoomInfoModel.h" + +@implementation CandyTreeSwitchModel + +@end + + +@implementation RoomInfoModel + +@end diff --git a/YuMi/Modules/YMRoom/Model/RoomNewUserGreetModel.h b/YuMi/Modules/YMRoom/Model/RoomNewUserGreetModel.h new file mode 100644 index 00000000..8db2396f --- /dev/null +++ b/YuMi/Modules/YMRoom/Model/RoomNewUserGreetModel.h @@ -0,0 +1,21 @@ +// +// RoomNewUserGreetModel.h +// YUMI +// +// Created by YUMI on 2022/6/6. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RoomNewUserGreetModel : NSObject +///是否弹框 +@property (nonatomic,assign) BOOL roomPopup; +///用户的头像 +@property (nonatomic,copy) NSArray *sayHelloUserAvatarList; +///有多少用户 +@property (nonatomic,assign) int sayHelloUserNum; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/Model/RoomNewUserGreetModel.m b/YuMi/Modules/YMRoom/Model/RoomNewUserGreetModel.m new file mode 100644 index 00000000..15a2d2fd --- /dev/null +++ b/YuMi/Modules/YMRoom/Model/RoomNewUserGreetModel.m @@ -0,0 +1,12 @@ +// +// RoomNewUserGreetModel.m +// YUMI +// +// Created by YUMI on 2022/6/6. +// + +#import "RoomNewUserGreetModel.h" + +@implementation RoomNewUserGreetModel + +@end diff --git a/YuMi/Modules/YMRoom/Presenter/XPRoomPresenter.h b/YuMi/Modules/YMRoom/Presenter/XPRoomPresenter.h new file mode 100644 index 00000000..14544b1b --- /dev/null +++ b/YuMi/Modules/YMRoom/Presenter/XPRoomPresenter.h @@ -0,0 +1,68 @@ +// +// YMRoomPresenter.h +// YUMI +// +// Created by YUMI on 2021/10/18. +// + +#import "BaseMvpPresenter.h" +#import "RoomInfoModel.h" +NS_ASSUME_NONNULL_BEGIN + +@class UserInfoModel; + +@interface XPRoomPresenter : BaseMvpPresenter + +- (void)initEnterRoom:(NSString *)roomUid user:(NSString *)uid; + +- (void)enterNIMRoom:(NSString *)roomId user:(UserInfoModel*)userInfo; +- (void)exitNIMRoom:(NSString *)roomId; + +/// 开启用户自己的房间 +/// @param title 房间标题 +/// @param type 房间类型 +/// @param roomPwd 房间密码 +/// @param roomDesc 房间介绍 +/// @param backPic 房间背景 +/// @param mgId 小游戏的id +- (void)openRoom:(NSString *)title + type:(RoomType)type + roomPwd:(NSString *)roomPwd + roomDesc:(NSString *)roomDesc + backPic:(NSString *)backPic + mgId:(NSString *)mgId; + +///福袋礼物爆出的礼物的bug +///进入房间的时候需要获取一次礼物信息 因为如果有人送礼物的话 如果是福袋礼物的话 爆出的礼物需要从礼物列表中获取 会导致公屏不显示那个礼物 +/// 获取普通的礼物 +/// @param roomUid 房主的uid 获取房间专属礼物 +- (void)getNormalGiftList:(NSString *)roomUid; + +/// 上报用户进房 +/// @param roomUid 房间uid +- (void)reportUserInterRoom:(NSString *)roomUid; + +/// 上报用户退房 +/// @param roomUid 房间uid +- (void)reportUserOutRoom:(NSString *)roomUid; + +/// 获取房间超管列表 +/// @param roomUid 房间的uid +- (void)getRoomSuperAdmin:(NSString *)roomUid; + +///获取循环的推荐房间 +/// @param roomUid 房间的uid +- (void)getCycleAnchorRoomList:(NSString *)roomUid; + +///获取当前房间是否有效 +- (void)getCurrentRoomInfo:(NSString *)roomUid; + +///获取红包信息 +- (void)getRedPacket:(NSString *)roomUid; +///拿到首充弹窗次数 +-(void)getRoomFirstCharegWindow:(NSString *)roomUid; +///更新首充弹窗次数 +-(void)updateRoomFirstCharegWindow:(NSString *)roomUid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/Presenter/XPRoomPresenter.m b/YuMi/Modules/YMRoom/Presenter/XPRoomPresenter.m new file mode 100644 index 00000000..f715bf5e --- /dev/null +++ b/YuMi/Modules/YMRoom/Presenter/XPRoomPresenter.m @@ -0,0 +1,257 @@ +// +// YMRoomPresenter.m +// YUMI +// +// Created by YUMI on 2021/10/18. +// + +#import "XPRoomPresenter.h" +///API +#import "Api+Room.h" +#import "Api+Gift.h" +#import "UserInfoModel.h" +#import "GuildSuperAdminInfoModel.h" +///Tool +#import "AccountInfoStorage.h" +#import "XPGiftStorage.h" +#import "NSObject+MJExtension.h" +///Model +#import "GiftInfoModel.h" +#import "XPMessageRemoteExtModel.h" +#import "RoomNewUserGreetModel.h" +#import "XPRoomRecommendModel.h" +#import "XPRedPacketModel.h" +#import "FirstChargeRoomWindowModel.h" +///P +#import "XPRoomProtocol.h" + +#import +#import + + +@implementation XPRoomPresenter + +- (void)initEnterRoom:(NSString *)roomUid user:(NSString *)uid { + RACSubject* room = [RACSubject subject]; + RACSubject* user = [RACSubject subject]; + + [[RACSignal combineLatest:@[room, user] reduce:^id(RoomInfoModel* room, UserInfoModel* user){ + [[self getView] initEnterRoomSuccess:room user:user]; + return nil; + }] subscribeError:^(NSError * _Nullable error) { + [[self getView] enterRoomFail:error.code]; + }]; + + [Api getUserInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + UserInfoModel * infoModel = [UserInfoModel modelWithJSON:data.data]; + [user sendNext:infoModel]; + [user sendCompleted]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [user sendError:nil]; + } showLoading:NO errorToast:NO] uid:uid]; + + [Api getRoomInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + RoomInfoModel * model = [RoomInfoModel modelWithJSON:data.data]; + [room sendNext:model]; + [room sendCompleted]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [user sendError:nil]; + } showLoading:NO errorToast:NO] uid:roomUid intoUid:uid]; +} + +- (void)enterNIMRoom:(NSString *)roomId user:(UserInfoModel *)userInfo { + NIMChatroomEnterRequest *request = [[NIMChatroomEnterRequest alloc] init]; + request.roomId = roomId; + //设置ext + XPMessageRemoteExtModel * extModel = [[XPMessageRemoteExtModel alloc] init]; + extModel.defUser = userInfo.defUser; + extModel.erbanNo = userInfo.erbanNo; + extModel.carName = userInfo.carName; + extModel.inRoomNameplatePic = userInfo.nameplatePic; + extModel.inRoomNameplateWord = userInfo.nameplateWord; + extModel.charmUrl = userInfo.userLevelVo.charmUrl; + extModel.experLevelSeq = userInfo.userLevelVo.experLevelSeq; + extModel.experUrl = userInfo.userLevelVo.experUrl; + extModel.newUser = userInfo.newUser; + extModel.vipIcon = userInfo.userVipInfoVO.vipIcon; + extModel.fromUid = userInfo.fromUid; + extModel.fromType = userInfo.fromType; + extModel.fromNick = userInfo.fromNick; + extModel.iosBubbleUrl = userInfo.iosBubbleUrl; + extModel.androidBubbleUrl = userInfo.androidBubbleUrl; + extModel.enterHide = userInfo.userVipInfoVO.enterHide; + extModel.preventKick = userInfo.userVipInfoVO.preventKick; + extModel.enterRoomEffects = userInfo.userVipInfoVO.enterRoomEffects; + extModel.gender = userInfo.gender; + extModel.fromSayHelloChannel = userInfo.fromSayHelloChannel; + extModel.platformRole = userInfo.platformRole; + + NSMutableDictionary *ext = [NSMutableDictionary dictionaryWithObject:extModel.model2dictionary forKey:[NSString stringWithFormat:@"%ld", userInfo.uid]]; + request.roomExt = [ext toJSONString]; + + [[NIMSDK sharedSDK].chatroomManager enterChatroom:request completion:^(NSError * _Nullable error, NIMChatroom * _Nullable chatroom, NIMChatroomMember * _Nullable me) { + if (error) { + [[self getView] enterRoomFail:error.code]; + } else { + [[self getView] enterRoomSuccess:chatroom]; + } + }]; +} + +- (void)exitNIMRoom:(NSString *)roomId { + [[NIMSDK sharedSDK].chatroomManager exitChatroom:roomId completion:nil]; +} + +/// 开启用户自己的房间 +/// @param title 房间标题 +/// @param type 房间类型 +/// @param roomPwd 房间密码 +/// @param roomDesc 房间介绍 +/// @param backPic 房间背景 +/// @param mgId 小游戏的id +- (void)openRoom:(NSString *)title + type:(RoomType)type + roomPwd:(NSString *)roomPwd + roomDesc:(NSString *)roomDesc + backPic:(NSString *)backPic + mgId:(NSString *)mgId{ + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + if (title.length <= 0) { + title = @""; + } + + if (roomPwd.length <= 0) { + roomPwd = @""; + } + + if (roomDesc.length <= 0) { + roomDesc = @""; + } + + if (backPic.length <= 0) { + backPic = @""; + } + + if (mgId.length <= 0) { + mgId = @"0"; + } + + + + [Api openRoom:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + RoomInfoModel * infoModel = [RoomInfoModel modelWithJSON:data.data]; + [[self getView] openRoomSuccess:infoModel]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] enterRoomFail:code]; + } showLoading:NO] title:title type:type roomPwd:roomPwd roomDesc:roomDesc backPic:backPic uid:uid ticket:ticket mgId:mgId]; +} + +///福袋礼物爆出的礼物的bug +///进入房间的时候需要获取一次礼物信息 因为如果有人送礼物的话 如果是福袋礼物的话 爆出的礼物需要从礼物列表中获取 会导致公屏不显示那个礼物 +/// 获取普通的礼物 +/// @param roomUid 房主的uid 获取房间专属礼物 +- (void)getNormalGiftList:(NSString *)roomUid { + ///先不请求接口 从缓存中获取 + [[XPGiftStorage shareStorage] getGiftDatasource:roomUid]; + [Api requestNormalGiftList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + NSArray *luckyBagGift = [GiftInfoModel modelsWithArray:data.data[@"luckyBagGift"]]; // 福袋礼物 + NSArray *vipGift = [GiftInfoModel modelsWithArray:data.data[@"vipGift"]]; // 贵族礼物 + NSArray *luckyPoolGift = [GiftInfoModel modelsWithArray:data.data[@"luckyPoolGift"]];// 福袋奖池礼物 + NSArray *normalGift = [GiftInfoModel modelsWithArray:data.data[@"normalGift"]]; // 普通面板礼物 + NSArray *weekStarGift = [GiftInfoModel modelsWithArray:data.data[@"weekStarGift"]]; // 周星礼物 + NSArray *drawGift = [GiftInfoModel modelsWithArray:data.data[@"drawGift"]]; // 涂鸦礼物 + NSArray *penaltyGift = [GiftInfoModel modelsWithArray:data.data[@"penaltyGift"]]; // 惩罚礼物 + NSArray *anchorGift = [GiftInfoModel modelsWithArray:data.data[@"singlePopularGift"]]; // 个播礼物 + //TODO: luckyPoolGift 这个就是福袋礼物的所有的数据 只要保存这个就行了吧 以后需要改 + NSMutableArray *info = [NSMutableArray array]; + NSMutableArray *totalInfo = [NSMutableArray array]; + [info addObjectsFromArray:luckyBagGift]; + [info addObjectsFromArray:vipGift]; + [info addObjectsFromArray:normalGift]; + [info addObjectsFromArray:weekStarGift]; + [info addObjectsFromArray:drawGift]; + [info addObjectsFromArray:anchorGift]; + [info addObjectsFromArray:penaltyGift]; + [totalInfo addObjectsFromArray:info]; + [totalInfo addObjectsFromArray:luckyPoolGift]; + ///把礼物信息保存一下 + [[XPGiftStorage shareStorage] saveGiftDatasource:info roomUid:roomUid]; + [[XPGiftStorage shareStorage] writeGiftToDirectory:totalInfo]; + } roomUid:roomUid]; +} + +/// 上报用户进房 +/// @param roomUid 房间uid +- (void)reportUserInterRoom:(NSString *)roomUid { + if ([[AccountInfoStorage instance] getTicket].length < 1) { + return; + } + [Api requestReportUserInterRoom:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + + } uid:[[AccountInfoStorage instance] getUid] roomUid:roomUid ticket:[[AccountInfoStorage instance] getTicket]]; +} + +/// 上报用户退房 +/// @param roomUid 房间uid +- (void)reportUserOutRoom:(NSString *)roomUid { + if ([[AccountInfoStorage instance] getTicket].length < 1) { + return; + } + [Api requestReportUserOutRoom:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + + } uid:[[AccountInfoStorage instance] getUid] roomUid:roomUid ticket:[[AccountInfoStorage instance] getTicket]]; +} + +/// 获取房间超管列表 +/// @param roomUid 房间的uid +- (void)getRoomSuperAdmin:(NSString *)roomUid { + [Api getRoomSuperAdminList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [GuildSuperAdminInfoModel modelsWithArray:data.data]; + [[self getView] getRoomSuperAdminScuccess:array]; + }] roomUid:roomUid]; +} + +///获取循环的推荐房间 +/// @param roomUid 房间的uid +- (void)getCycleAnchorRoomList:(NSString *)roomUid { + [Api requestNextAnchorRoom:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + RoomInfoModel * infoModel = [RoomInfoModel modelWithJSON:data.data]; + [[self getView] getNextAnchorRoomSuccess:infoModel]; + } else { + [[self getView] getNextAnchorRoomSuccess:nil]; + } + } roomUid:roomUid]; +} + +- (void)getCurrentRoomInfo:(NSString *)roomUid { + NSString * uid= [AccountInfoStorage instance].getUid; + [Api getRoomInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + RoomInfoModel * roomInfo = [RoomInfoModel modelWithDictionary:data.data]; + [[self getView] getCurrentRoomInfoSuccess:roomInfo]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getCurrentRoomInfoSuccess:nil]; + }] uid:roomUid intoUid:uid]; +} + +///获取房间红包 +- (void)getRedPacket:(NSString *)roomUid { + [Api requestRedPacket:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray *array = [XPRedPacketModel modelsWithArray:data.data]; + [[self getView] getRedPacketSuccess:array]; + }] uid:roomUid]; +} + +-(void)getRoomFirstCharegWindow:(NSString *)roomUid{ + [Api requestRoomFirstCharegWindow:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + FirstChargeRoomWindowModel *freeModel = [FirstChargeRoomWindowModel modelWithDictionary:data.data]; + [[self getView]getRoomFirstChargeWindowSuccess:freeModel]; + }showLoading:NO errorToast:NO] roomUid:roomUid]; +} +-(void)updateRoomFirstCharegWindow:(NSString *)roomUid{ + [Api updateRoomFirstCharegWindow:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + }showLoading:NO errorToast:NO] roomUid:roomUid]; +} + +@end diff --git a/YuMi/Modules/YMRoom/Presenter/YUMIChamberExternalizer.h b/YuMi/Modules/YMRoom/Presenter/YUMIChamberExternalizer.h deleted file mode 100644 index f3c1aa37..00000000 --- a/YuMi/Modules/YMRoom/Presenter/YUMIChamberExternalizer.h +++ /dev/null @@ -1,45 +0,0 @@ -// -// YMRoomPresenter.h -// YUMI -// -// Created by YUMI on 2021/10/18. -// - -#import "BaseMvpExternalizer.h" -#import "ChamberAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@class ConsumerAbstractMatrix; - -@interface YUMIChamberExternalizer : BaseMvpExternalizer - -- (void)initImportChamber:(NSString *)roomUid user:(NSString *)uid; - -- (void)importNEMCChamber:(NSString *)roomId user:(ConsumerAbstractMatrix*)userInfo; -- (void)routeNEMCChamber:(NSString *)roomId; - -- (void)unfoildChamber:(NSString *)title - type:(ChamberGenre)type - roomPwd:(NSString *)roomPwd - roomDesc:(NSString *)roomDesc - backPic:(NSString *)backPic - mgId:(NSString *)mgId; - -- (void)acquireOrdinaryPresentSttowardsement:(NSString *)roomUid; - -- (void)respondConsumerInterChamber:(NSString *)roomUid; - -- (void)respondConsumerOptowardssideChamber:(NSString *)roomUid; - -- (void)acquireChamberSenstowardsionalManagement:(NSString *)roomUid; - -- (void)acquireCycleKellegChamberSttowardsement:(NSString *)roomUid; - -- (void)acquireUniversalChamberAbstract:(NSString *)roomUid; - -- (void)acquireDeficitShetowardshe:(NSString *)roomUid; --(void)acquireChamberThresholdCharegWindow:(NSString *)roomUid; --(void)refurbishChamberThresholdCharegWindow:(NSString *)roomUid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/Presenter/YUMIChamberExternalizer.m b/YuMi/Modules/YMRoom/Presenter/YUMIChamberExternalizer.m deleted file mode 100644 index ad730a37..00000000 --- a/YuMi/Modules/YMRoom/Presenter/YUMIChamberExternalizer.m +++ /dev/null @@ -1,233 +0,0 @@ -// -// YMRoomPresenter.m -// YUMI -// -// Created by YUMI on 2021/10/18. -// - -#import "YUMIChamberExternalizer.h" -#import "Api+Room.h" -#import "Api+Gift.h" -#import "ConsumerAbstractMatrix.h" -#import "UnionSensationalManagementAbstractMatrix.h" -#import "AccountAbstractStorage.h" -#import "YUMIPresentStorage.h" -#import "NSObject+MJExtension.h" -#import "PresentAbstractMatrix.h" -#import "YUMICommunicationRemoteExtMatrix.h" -#import "ChamberStrangeConsumerBewelcometoMatrix.h" -#import "YUMIChamberEncourageMatrix.h" -#import "YUMIDeficitSheatheMatrix.h" -#import "ThresholdChargeChamberWindowMatrix.h" -#import "FBCChamberCeremony.h" - -#import -#import - - -@implementation YUMIChamberExternalizer - -- (void)initImportChamber:(NSString *)roomUid user:(NSString *)uid { - RACSubject* room = [RACSubject subject]; - RACSubject* user = [RACSubject subject]; - - [[RACSignal combineLatest:@[room, user] reduce:^id(ChamberAbstractMatrix* room, ConsumerAbstractMatrix* user){ - [[self acquireRegard] initImportChamberAccomplishment:room user:user]; - return nil; - }] subscribeError:^(NSError * _Nullable error) { - [[self acquireRegard] importChamberFlunk:error.code]; - }]; - - [Api getUserInfo:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ConsumerAbstractMatrix * infoMatrix = [ConsumerAbstractMatrix mtowardsrixAboutJSON:data.data]; - [user sendNext:infoMatrix]; - [user sendCompleted]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - [user sendError:nil]; - } EvidenceChambering:NO errorToast:NO] uid:uid]; - - [Api acquireChamberAbstract:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ChamberAbstractMatrix * model = [ChamberAbstractMatrix mtowardsrixAboutJSON:data.data]; - [room sendNext:model]; - [room sendCompleted]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - [user sendError:nil]; - } EvidenceChambering:NO errorToast:NO] uid:roomUid intoUid:uid]; -} - -- (void)importNEMCChamber:(NSString *)roomId user:(ConsumerAbstractMatrix *)userInfo { - NIMChatroomEnterRequest *request = [[NIMChatroomEnterRequest alloc] init]; - request.roomId = roomId; - - YUMICommunicationRemoteExtMatrix * extModel = [[YUMICommunicationRemoteExtMatrix alloc] init]; - extModel.defUser = userInfo.defUser; - extModel.erbanNo = userInfo.erbanNo; - extModel.carName = userInfo.carName; - extModel.inRoomNameplatePic = userInfo.nameplatePic; - extModel.inRoomNameplateWord = userInfo.nameplateWord; - extModel.charmUrl = userInfo.userLevelVo.charmUrl; - extModel.experLevelSeq = userInfo.userLevelVo.experLevelSeq; - extModel.experUrl = userInfo.userLevelVo.experUrl; - extModel.newUser = userInfo.newUser; - extModel.vipIcon = userInfo.userVipInfoVO.vipIcon; - extModel.fromUid = userInfo.fromUid; - extModel.fromType = userInfo.fromType; - extModel.fromNick = userInfo.fromNick; - extModel.iosBubbleUrl = userInfo.iosBubbleUrl; - extModel.androidBubbleUrl = userInfo.androidBubbleUrl; - extModel.enterHide = userInfo.userVipInfoVO.enterHide; - extModel.preventKick = userInfo.userVipInfoVO.preventKick; - extModel.enterRoomEffects = userInfo.userVipInfoVO.enterRoomEffects; - extModel.gender = userInfo.gender; - extModel.fromSayHelloChannel = userInfo.fromSayHelloChannel; - extModel.platformRole = userInfo.platformRole; - - NSMutableDictionary *ext = [NSMutableDictionary dictionaryWithObject:extModel.mtowardsrix2dictionary forKey:[NSString stringWithFormat:@"%ld", userInfo.uid]]; - request.roomExt = [ext toJSONBWSttr]; - - [[NIMSDK sharedSDK].chatroomManager enterChatroom:request completion:^(NSError * _Nullable error, NIMChatroom * _Nullable chatroom, NIMChatroomMember * _Nullable me) { - if (error) { - [[self acquireRegard] importChamberFlunk:error.code]; - } else { - [[self acquireRegard] importChamberAccomplishment:chatroom]; - } - }]; -} - -- (void)routeNEMCChamber:(NSString *)roomId { - [[NIMSDK sharedSDK].chatroomManager exitChatroom:roomId completion:nil]; -} - -- (void)unfoildChamber:(NSString *)title - type:(ChamberGenre)type - roomPwd:(NSString *)roomPwd - roomDesc:(NSString *)roomDesc - backPic:(NSString *)backPic - mgId:(NSString *)mgId{ - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - if (title.length <= 0) { - title = @""; - } - - if (roomPwd.length <= 0) { - roomPwd = @""; - } - - if (roomDesc.length <= 0) { - roomDesc = @""; - } - - if (backPic.length <= 0) { - backPic = @""; - } - - if (mgId.length <= 0) { - mgId = @"0"; - } - - - - [Api unfoildChamber:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ChamberAbstractMatrix * infoMatrix = [ChamberAbstractMatrix mtowardsrixAboutJSON:data.data]; - [[self acquireRegard] unfoildChamberAccomplishment:infoMatrix]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] importChamberFlunk:code]; - } EvidenceChambering:NO] title:title type:type roomPwd:roomPwd roomDesc:roomDesc backPic:backPic uid:uid ticket:ticket mgId:mgId]; -} - -- (void)acquireOrdinaryPresentSttowardsement:(NSString *)roomUid { - - [[YUMIPresentStorage partowardsiciptowardsionStorage] acquirePresentTowardsoloudspeakersource:roomUid]; - [Api requisitionOrdinaryPresentSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - NSArray *luckyBagGift = [PresentAbstractMatrix mtowardsrixsAboutGarment:data.data[@"luckyBagGift"]]; - NSArray *vipGift = [PresentAbstractMatrix mtowardsrixsAboutGarment:data.data[@"vipGift"]]; - NSArray *luckyPoolGift = [PresentAbstractMatrix mtowardsrixsAboutGarment:data.data[@"luckyPoolGift"]]; - NSArray *normalGift = [PresentAbstractMatrix mtowardsrixsAboutGarment:data.data[@"normalGift"]]; - NSArray *weekStarGift = [PresentAbstractMatrix mtowardsrixsAboutGarment:data.data[@"weekStarGift"]]; - NSArray *drawGift = [PresentAbstractMatrix mtowardsrixsAboutGarment:data.data[@"drawGift"]]; - NSArray *penaltyGift = [PresentAbstractMatrix mtowardsrixsAboutGarment:data.data[@"penaltyGift"]]; - NSArray *anchorGift = [PresentAbstractMatrix mtowardsrixsAboutGarment:data.data[@"singlePopularGift"]]; - - NSMutableArray *info = [NSMutableArray array]; - NSMutableArray *totalInfo = [NSMutableArray array]; - [info addObjectsFromArray:luckyBagGift]; - [info addObjectsFromArray:vipGift]; - [info addObjectsFromArray:normalGift]; - [info addObjectsFromArray:weekStarGift]; - [info addObjectsFromArray:drawGift]; - [info addObjectsFromArray:anchorGift]; - [info addObjectsFromArray:penaltyGift]; - [totalInfo addObjectsFromArray:info]; - [totalInfo addObjectsFromArray:luckyPoolGift]; - - [[YUMIPresentStorage partowardsiciptowardsionStorage] preservePresentTowardsoloudspeakersource:info roomUid:roomUid]; - [[YUMIPresentStorage partowardsiciptowardsionStorage] writePresentToDirectoryvisory:totalInfo]; - } roomUid:roomUid]; -} - -- (void)respondConsumerInterChamber:(NSString *)roomUid { - if ([[AccountAbstractStorage instance] acquireTicket].length < 1) { - return; - } - [Api requisitionReportConsumerInterChamber:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - - } uid:[[AccountAbstractStorage instance] acquireCid] roomUid:roomUid ticket:[[AccountAbstractStorage instance] acquireTicket]]; -} - -- (void)respondConsumerOptowardssideChamber:(NSString *)roomUid { - if ([[AccountAbstractStorage instance] acquireTicket].length < 1) { - return; - } - [Api requisitionReportConsumerOptowardssideChamber:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - - } uid:[[AccountAbstractStorage instance] acquireCid] roomUid:roomUid ticket:[[AccountAbstractStorage instance] acquireTicket]]; -} - -- (void)acquireChamberSenstowardsionalManagement:(NSString *)roomUid { - [Api acquireChamberSenstowardsionalManagementSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [UnionSensationalManagementAbstractMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireChamberSenstowardsionalManagementScuccess:array]; - }] roomUid:roomUid]; -} - -- (void)acquireCycleKellegChamberSttowardsement:(NSString *)roomUid { - [Api requisitionLtowardsterKellegChamber:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - ChamberAbstractMatrix * infoMatrix = [ChamberAbstractMatrix mtowardsrixAboutJSON:data.data]; - [[self acquireRegard] acquireLtowardsterKellegChamberAccomplishment:infoMatrix]; - } else { - [[self acquireRegard] acquireLtowardsterKellegChamberAccomplishment:nil]; - } - } roomUid:roomUid]; -} - -- (void)acquireUniversalChamberAbstract:(NSString *)roomUid { - NSString * uid= [AccountAbstractStorage instance].acquireCid; - [Api acquireChamberAbstract:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ChamberAbstractMatrix * roomInfo = [ChamberAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireUniversalChamberAbstractAccomplishment:roomInfo]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireUniversalChamberAbstractAccomplishment:nil]; - }] uid:roomUid intoUid:uid]; -} - -- (void)acquireDeficitShetowardshe:(NSString *)roomUid { - [Api requisitionDeficitShetowardshe:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray *array = [YUMIDeficitSheatheMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireDeficitShetowardsheAccomplishment:array]; - }] uid:roomUid]; -} - --(void)acquireChamberThresholdCharegWindow:(NSString *)roomUid{ - [Api requisitionChamberThresholdCharegWindow:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ThresholdChargeChamberWindowMatrix *freeModel = [ThresholdChargeChamberWindowMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard]acquireChamberThresholdInstructionWindowAccomplishment:freeModel]; - }EvidenceChambering:NO errorToast:NO] roomUid:roomUid]; -} --(void)refurbishChamberThresholdCharegWindow:(NSString *)roomUid{ - [Api refurbishChamberThresholdCharegWindow:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - }EvidenceChambering:NO errorToast:NO] roomUid:roomUid]; -} - -@end diff --git a/YuMi/Modules/YMRoom/Protocol/FBCChamberCeremony.h b/YuMi/Modules/YMRoom/Protocol/FBCChamberCeremony.h deleted file mode 100644 index 12d5d066..00000000 --- a/YuMi/Modules/YMRoom/Protocol/FBCChamberCeremony.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// YMRoomProtocol.h -// YUMI -// -// Created by YUMI on 2021/10/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class ChamberAbstractMatrix; -@class ConsumerAbstractMatrix, NIMChatroom, ThresholdChargeChamberWindowMatrix; - -@protocol FBCChamberCeremony - -- (void)initImportChamberAccomplishment:(ChamberAbstractMatrix *)roomInfo user:(ConsumerAbstractMatrix *)userInfo; -- (void)unfoildChamberAccomplishment:(ChamberAbstractMatrix *)roomInfo; -- (void)importChamberAccomplishment:(NIMChatroom *)chatRoom; -- (void)importChamberFlunk:(NSInteger)code; -- (void)acquireChamberSenstowardsionalManagementScuccess:(NSArray *)list; -- (void)acquireLtowardsterKellegChamberAccomplishment:(ChamberAbstractMatrix *)roomInfo; -- (void)acquireUniversalChamberAbstractAccomplishment:(ChamberAbstractMatrix *_Nullable)roomInfo; -- (void)acquireDeficitShetowardsheAccomplishment:(NSArray *)list; --(void)acquireChamberThresholdInstructionWindowAccomplishment:(ThresholdChargeChamberWindowMatrix*)model; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/Protocol/XPRoomProtocol.h b/YuMi/Modules/YMRoom/Protocol/XPRoomProtocol.h new file mode 100644 index 00000000..b35f593a --- /dev/null +++ b/YuMi/Modules/YMRoom/Protocol/XPRoomProtocol.h @@ -0,0 +1,36 @@ +// +// YMRoomProtocol.h +// YUMI +// +// Created by YUMI on 2021/10/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class RoomInfoModel; +@class UserInfoModel, NIMChatroom, FirstChargeRoomWindowModel; + +@protocol XPRoomProtocol + +- (void)initEnterRoomSuccess:(RoomInfoModel *)roomInfo user:(UserInfoModel *)userInfo; +///开启房间成功 +- (void)openRoomSuccess:(RoomInfoModel *)roomInfo; +///进入房间成功 +- (void)enterRoomSuccess:(NIMChatroom *)chatRoom; +///进入房间失败(当前获取用户信息、获取房间信息、开启房间、进入云信房间失败,均会导致进房失败) +- (void)enterRoomFail:(NSInteger)code; +///获取超管成功 +- (void)getRoomSuperAdminScuccess:(NSArray *)list; +///获取下一个个播房成功 +- (void)getNextAnchorRoomSuccess:(RoomInfoModel *)roomInfo; +///获取当前房间的信息 +- (void)getCurrentRoomInfoSuccess:(RoomInfoModel *_Nullable)roomInfo; +///获取红包成功 +- (void)getRedPacketSuccess:(NSArray *)list; +///获取首充弹窗 +-(void)getRoomFirstChargeWindowSuccess:(FirstChargeRoomWindowModel*)model; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Api/Api+AcrossRoomPK.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Api/Api+AcrossRoomPK.h index 12d7956d..5733519d 100644 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Api/Api+AcrossRoomPK.h +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Api/Api+AcrossRoomPK.h @@ -11,18 +11,36 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (AcrossRoomPK) -+ (void)huntforThroughoutChamberCombatChamberSttowardsement:(HttpRequestHelperCompletion)completion +/// 搜索PK的房间列表 +/// @param completion 完成 +/// @param erbanNo 要搜索的房主的id +/// @param roomUid 房主的uid +/// @param pageNum 当前的页数 +/// @param pageSize 一页多少个 ++ (void)searchAcrossRoomPKRoomList:(HttpRequestHelperCompletion)completion erbanNo:(NSString *)erbanNo roomUid:(NSString *)roomUid pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize; -+ (void)acquireThroughoutChamberCombatChamberSttowardsement:(HttpRequestHelperCompletion)completion +/// 获取可以PK的房间列表 +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param pageNum 当前的页数 +/// @param pageSize 一页多少个 ++ (void)getAcrossRoomPKRoomList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize; -+ (void)instituteThroughoutChamberCombat:(HttpRequestHelperCompletion)completion +/// 开启一轮PK +/// @param completion 完成 +/// @param acceptUid pk对方的uid +/// @param duration 持续的时间 分钟 +/// @param inviteUid 邀请房间的房主的id +/// @param operateUid 操作者的uid +/// @param playDesc 描述 ++ (void)beginAcrossRoomPK:(HttpRequestHelperCompletion)completion acceptUid:(NSString *)acceptUid duration:(NSString *)duration inviteUid:(NSString *)inviteUid diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Api/Api+AcrossRoomPK.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Api/Api+AcrossRoomPK.m index ee4fe0bd..c333aac7 100644 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Api/Api+AcrossRoomPK.m +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Api/Api+AcrossRoomPK.m @@ -10,18 +10,36 @@ @implementation Api (AcrossRoomPK) -+ (void)huntforThroughoutChamberCombatChamberSttowardsement:(HttpRequestHelperCompletion)completion erbanNo:(NSString *)erbanNo roomUid:(NSString *)roomUid pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize { - NSString * fang = [NSString stringFromBase64String:@"c2VhcmNoL3Blcm1pdFJvb20="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, erbanNo, roomUid, pageNum, pageSize, nil]; +/// 搜索PK的房间列表 +/// @param completion 完成 +/// @param erbanNo 要搜索的房主的id +/// @param roomUid 房主的uid +/// @param pageNum 当前的页数 +/// @param pageSize 一页多少个 ++ (void)searchAcrossRoomPKRoomList:(HttpRequestHelperCompletion)completion erbanNo:(NSString *)erbanNo roomUid:(NSString *)roomUid pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize { + NSString * fang = [NSString stringFromBase64String:@"c2VhcmNoL3Blcm1pdFJvb20="];///search/permitRoom + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, erbanNo, roomUid, pageNum, pageSize, nil]; } -+ (void)acquireThroughoutChamberCombatChamberSttowardsement:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize { - NSString * fang = [NSString stringFromBase64String:@"c2VhcmNoL3Blcm1pdFJvb20="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, roomUid, pageNum, pageSize, nil]; +/// 获取可以PK的房间列表 +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param pageNum 当前的页数 +/// @param pageSize 一页多少个 ++ (void)getAcrossRoomPKRoomList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize { + NSString * fang = [NSString stringFromBase64String:@"c2VhcmNoL3Blcm1pdFJvb20="];///search/permitRoom + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, roomUid, pageNum, pageSize, nil]; } -+ (void)instituteThroughoutChamberCombat:(HttpRequestHelperCompletion)completion acceptUid:(NSString *)acceptUid duration:(NSString *)duration inviteUid:(NSString *)inviteUid operateUid:(NSString *)operateUid playDesc:(NSString *)playDesc { - NSString * fang = [NSString stringFromBase64String:@"Y3Jvc3Nyb29tcGtyb3VuZC9pbml0aWF0ZUNoYWxsZW5nZQ=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, acceptUid, duration, inviteUid, operateUid, playDesc, nil]; +/// 开启一轮PK +/// @param completion 完成 +/// @param acceptUid pk对方的uid +/// @param duration 持续的时间 分钟 +/// @param inviteUid 邀请房间的房主的id +/// @param operateUid 操作者的uid +/// @param playDesc 描述 ++ (void)beginAcrossRoomPK:(HttpRequestHelperCompletion)completion acceptUid:(NSString *)acceptUid duration:(NSString *)duration inviteUid:(NSString *)inviteUid operateUid:(NSString *)operateUid playDesc:(NSString *)playDesc { + NSString * fang = [NSString stringFromBase64String:@"Y3Jvc3Nyb29tcGtyb3VuZC9pbml0aWF0ZUNoYWxsZW5nZQ=="];///crossroompkround/initiateChallenge + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, acceptUid, duration, inviteUid, operateUid, playDesc, nil]; } @end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/AcrossRoomPKInfoModel.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/AcrossRoomPKInfoModel.h new file mode 100644 index 00000000..5f4e547c --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/AcrossRoomPKInfoModel.h @@ -0,0 +1,31 @@ +// +// AcrossRoomPkInfoModel.h +// YUMI +// +// Created by YUMI on 2022/1/10. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface AcrossRoomPKInfoModel : NSObject +@property (nonatomic, copy) NSString * roomId; +@property (nonatomic, copy) NSString * uid; +@property (nonatomic, copy) NSString * roomUid; +@property (nonatomic, copy) NSString *title; +///头像 +@property (nonatomic, copy) NSString *avatar; +///昵称 +@property (nonatomic, copy) NSString *nick; +///二般号 +@property (nonatomic, copy) NSString * erbanNo; +///是否选中 +@property (nonatomic, assign) BOOL hadSelected; +///是否PK中 +@property (nonatomic, assign) BOOL crossPking; +///是否在线 +@property (nonatomic, assign) BOOL valid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/AcrossRoomPKInfoModel.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/AcrossRoomPKInfoModel.m new file mode 100644 index 00000000..12e90031 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/AcrossRoomPKInfoModel.m @@ -0,0 +1,12 @@ +// +// AcrossRoomPkInfoModel.m +// YUMI +// +// Created by YUMI on 2022/1/10. +// + +#import "AcrossRoomPKInfoModel.h" + +@implementation AcrossRoomPKInfoModel + +@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/AcrossRoomPKPanelModel.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/AcrossRoomPKPanelModel.h new file mode 100644 index 00000000..39e29dab --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/AcrossRoomPKPanelModel.h @@ -0,0 +1,101 @@ +// +// AcrossRoomPKPanelModel.h +// YUMI +// +// Created by YUMI on 2022/1/11. +// + +#import +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(NSUInteger, AcrossRoomPkType) { + AcrossRoomPkTypeLicnese = 1, ///牌照房PK + AcrossRoomPkTypeAnchor, ///个播PK +}; + +///PK处于什么阶段 +typedef NS_ENUM(NSUInteger, AcrossRoomPkStateType) { + AcrossRoomPkStateTypePking = 1,//PK中 + AcrossRoomPkStateTypePenalty, //惩罚阶段 + AcrossRoomPkStateTypePenaltyEnd,//惩罚结束 +}; + +///个播PK对方麦克风状态 +typedef NS_ENUM(NSUInteger, AnchorPKOtherMicStatus) { + AnchorPKOtherMicStatus_Close = 0,//关闭 + AnchorPKOtherMicStatus_Open = 1,//开启 +}; + +@class AcrossRoomPkRankModel; +@interface AcrossRoomPKPanelModel : NSObject +///当前时间 +@property (nonatomic, assign) long now; +///对方流水 +@property (nonatomic, assign) long long aAmount; +///对方头像 +@property (nonatomic, copy) NSString *aAvatar; +/// 所有流水 +@property (nonatomic, assign) long long allAmount; +///对方进度条比例 +@property (nonatomic, assign) float aPercent; +///对方魅力榜 +@property (nonatomic, strong) NSArray *arRank; +///对方贡献榜 +@property (nonatomic, strong) NSArray *asRank; +///对方标题 +@property (nonatomic, copy) NSString *aTitle; +///对方UID +@property (nonatomic, copy) NSString *aUid; +///我方流水 +@property (nonatomic, assign) long long cAmount; +///我方头像 +@property (nonatomic, copy) NSString *cAvatar; +///我方进度条比例 +@property (nonatomic, assign) float cPercent; +///我方魅力榜 +@property (nonatomic, strong) NSArray *crRank; +///我方贡献榜 +@property (nonatomic, strong) NSArray *csRank; +///我方标题 +@property (nonatomic, copy) NSString *cTitle; +///我方UID +@property (nonatomic, copy) NSString * cUid; +///结束时间戳 +@property (nonatomic, assign) long long endTime; +///惩罚结束时间戳 +@property (nonatomic, assign) long long penaltyEndTime; +/// 赢家uid +@property (nonatomic, copy) NSString * winUid; +///是否异常结束 +@property (nonatomic, assign) BOOL isForce; +///PK类型 1:牌照房 2:个播房 +@property (nonatomic, assign) AcrossRoomPkType pkType; +//PK进行状态(1:pk中 2:惩罚中) +@property (nonatomic, assign) AcrossRoomPkStateType pkState; +///场次id +@property (nonatomic, assign) NSInteger roundId; +///对方的房间id +@property (nonatomic, copy) NSString *aRoomId; +///对方房主昵称 +@property (nonatomic, copy) NSString *aNick; +///我方房主昵称 +@property (nonatomic, copy) NSString *cNick; +///个播PK对方麦克风状态 +@property (nonatomic, assign) AnchorPKOtherMicStatus aMicStatus; +@end + +@interface AcrossRoomPkRankModel : NSObject +///金币 +@property (nonatomic, copy) NSString *amount; +///性别 +@property (nonatomic, assign) GenderType gender; +///昵称 +@property (nonatomic, copy) NSString *nick; +///头像 +@property (nonatomic, copy) NSString *avatar; +///Uid +@property (nonatomic, copy) NSString * uid; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/AcrossRoomPKPanelModel.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/AcrossRoomPKPanelModel.m new file mode 100644 index 00000000..e2092e7c --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/AcrossRoomPKPanelModel.m @@ -0,0 +1,29 @@ +// +// AcrossRoomPKPanelModel.m +// YUMI +// +// Created by YUMI on 2022/1/11. +// + +#import "AcrossRoomPKPanelModel.h" + +@implementation AcrossRoomPKPanelModel + +///扩展方法 按需索取 重写即可 +///如果一个模型中 包含一个数组 数组中是另一个模型 ++ (NSDictionary *)objectClassInArray { + return @{@"arRank" : [AcrossRoomPkRankModel class], + @"asRank" : [AcrossRoomPkRankModel class], + @"crRank" : [AcrossRoomPkRankModel class], + @"csRank" : [AcrossRoomPkRankModel class] + }; +} + +@end + + +@implementation AcrossRoomPkRankModel + + + +@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/AcrossRoomPKPrizeModel.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/AcrossRoomPKPrizeModel.h new file mode 100644 index 00000000..f947ed26 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/AcrossRoomPKPrizeModel.h @@ -0,0 +1,40 @@ +// +// AcrossRoomPKPrizeModel.h +// YUMI +// +// Created by YUMI on 2022/1/12. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSUInteger, AcrossRoomPKType) { + AcrossRoomPKTypeNormal = 0, + AcrossRoomPKTypeAnchor, +}; +@interface AcrossRoomPKPrizeModel : NSObject +///赢方UID +@property (nonatomic, copy) NSString * winUid; +///输方UID +@property (nonatomic, copy) NSString * failUid; +///赢方头像 +@property (nonatomic, copy) NSString *winAvatar; +///输方头像 +@property (nonatomic, copy) NSString *failAvatar; +///赢方标题 +@property (nonatomic, copy) NSString *winTitle; +///输方标题 +@property (nonatomic, copy) NSString *failTitle; +///赢方昵称 +@property (nonatomic, copy) NSString *winNick; +///输方昵称 +@property (nonatomic, copy) NSString *failNick; +///描述 +@property (nonatomic, copy) NSString *msg; +///PK类型(0 :普通PK, 1:个播PK) +@property (nonatomic, assign) AcrossRoomPKType pkType; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/AcrossRoomPKPrizeModel.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/AcrossRoomPKPrizeModel.m new file mode 100644 index 00000000..53a66c62 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/AcrossRoomPKPrizeModel.m @@ -0,0 +1,12 @@ +// +// AcrossRoomPKPrizeModel.m +// YUMI +// +// Created by YUMI on 2022/1/12. +// + +#import "AcrossRoomPKPrizeModel.h" + +@implementation AcrossRoomPKPrizeModel + +@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/ThroughoutChamberCombatAbstractMatrix.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/ThroughoutChamberCombatAbstractMatrix.h deleted file mode 100644 index a4ecc170..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/ThroughoutChamberCombatAbstractMatrix.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// AcrossRoomPkInfoModel.h -// YUMI -// -// Created by YUMI on 2022/1/10. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface ThroughoutChamberCombatAbstractMatrix : NSObject -@property (nonatomic, copy) NSString * roomId; -@property (nonatomic, copy) NSString * uid; -@property (nonatomic, copy) NSString * roomUid; -@property (nonatomic, copy) NSString *title; -@property (nonatomic, copy) NSString *avatar; -@property (nonatomic, copy) NSString *nick; -@property (nonatomic, copy) NSString * erbanNo; -@property (nonatomic, assign) BOOL hadSelected; -@property (nonatomic, assign) BOOL crossPking; -@property (nonatomic, assign) BOOL valid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/ThroughoutChamberCombatAbstractMatrix.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/ThroughoutChamberCombatAbstractMatrix.m deleted file mode 100644 index f8d75b07..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/ThroughoutChamberCombatAbstractMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// AcrossRoomPkInfoModel.m -// YUMI -// -// Created by YUMI on 2022/1/10. -// - -#import "ThroughoutChamberCombatAbstractMatrix.h" - -@implementation ThroughoutChamberCombatAbstractMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/ThroughoutChamberCombatCaptureMatrix.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/ThroughoutChamberCombatCaptureMatrix.h deleted file mode 100644 index 58df3b82..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/ThroughoutChamberCombatCaptureMatrix.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// ThroughoutChamberCombatCaptureMatrix.h -// YUMI -// -// Created by YUMI on 2022/1/12. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSUInteger, ThroughoutChamberCombatGenre) { - ThroughoutChamberCombatGenreNormal = 0, - ThroughoutChamberCombatGenreAnchor, -}; -@interface ThroughoutChamberCombatCaptureMatrix : NSObject -@property (nonatomic, copy) NSString * winUid; -@property (nonatomic, copy) NSString * failUid; -@property (nonatomic, copy) NSString *winAvatar; -@property (nonatomic, copy) NSString *failAvatar; -@property (nonatomic, copy) NSString *winTitle; -@property (nonatomic, copy) NSString *failTitle; -@property (nonatomic, copy) NSString *winNick; -@property (nonatomic, copy) NSString *failNick; -@property (nonatomic, copy) NSString *msg; -@property (nonatomic, assign) ThroughoutChamberCombatGenre pkType; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/ThroughoutChamberCombatCaptureMatrix.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/ThroughoutChamberCombatCaptureMatrix.m deleted file mode 100644 index a0259fc0..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/ThroughoutChamberCombatCaptureMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ThroughoutChamberCombatCaptureMatrix.m -// YUMI -// -// Created by YUMI on 2022/1/12. -// - -#import "ThroughoutChamberCombatCaptureMatrix.h" - -@implementation ThroughoutChamberCombatCaptureMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/ThroughoutChamberCombatFasciaboardMatrix.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/ThroughoutChamberCombatFasciaboardMatrix.h deleted file mode 100644 index 1235f3e3..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/ThroughoutChamberCombatFasciaboardMatrix.h +++ /dev/null @@ -1,67 +0,0 @@ -// -// ThroughoutChamberCombatFasciaboardMatrix.h -// YUMI -// -// Created by YUMI on 2022/1/11. -// - -#import -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSUInteger, ThroughoutChamberPkGenre) { - ThroughoutChamberPkGenreLicnese = 1, - ThroughoutChamberPkGenreAnchor, -}; - -typedef NS_ENUM(NSUInteger, ThroughoutChamberPkDeclareGenre) { - ThroughoutChamberPkDeclareGenrePking = 1, - ThroughoutChamberPkDeclareGenrePenalty, - ThroughoutChamberPkDeclareGenrePenaltyEnd, -}; - -typedef NS_ENUM(NSUInteger, KellegCombatOtherLoudspeakerPosition) { - KellegCombatOtherLoudspeakerPosition_Close = 0, - KellegCombatOtherLoudspeakerPosition_Open = 1, -}; - -@class ThroughoutChamberPkRateMatrix; -@interface ThroughoutChamberCombatFasciaboardMatrix : NSObject -@property (nonatomic, assign) long now; -@property (nonatomic, assign) long long aAmount; -@property (nonatomic, copy) NSString *aAvatar; -@property (nonatomic, assign) long long allAmount; -@property (nonatomic, assign) float aPercent; -@property (nonatomic, strong) NSArray *arRank; -@property (nonatomic, strong) NSArray *asRank; -@property (nonatomic, copy) NSString *aTitle; -@property (nonatomic, copy) NSString *aUid; -@property (nonatomic, assign) long long cAmount; -@property (nonatomic, copy) NSString *cAvatar; -@property (nonatomic, assign) float cPercent; -@property (nonatomic, strong) NSArray *crRank; -@property (nonatomic, strong) NSArray *csRank; -@property (nonatomic, copy) NSString *cTitle; -@property (nonatomic, copy) NSString * cUid; -@property (nonatomic, assign) long long endTime; -@property (nonatomic, assign) long long penaltyEndTime; -@property (nonatomic, copy) NSString * winUid; -@property (nonatomic, assign) BOOL isForce; -@property (nonatomic, assign) ThroughoutChamberPkGenre pkType; -@property (nonatomic, assign) ThroughoutChamberPkDeclareGenre pkState; -@property (nonatomic, assign) NSInteger roundId; -@property (nonatomic, copy) NSString *aRoomId; -@property (nonatomic, copy) NSString *aNick; -@property (nonatomic, copy) NSString *cNick; -@property (nonatomic, assign) KellegCombatOtherLoudspeakerPosition aMicStatus; -@end - -@interface ThroughoutChamberPkRateMatrix : NSObject -@property (nonatomic, copy) NSString *amount; -@property (nonatomic, assign) GenderGenre gender; -@property (nonatomic, copy) NSString *nick; -@property (nonatomic, copy) NSString *avatar; -@property (nonatomic, copy) NSString * uid; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/ThroughoutChamberCombatFasciaboardMatrix.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/ThroughoutChamberCombatFasciaboardMatrix.m deleted file mode 100644 index d3845817..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Model/ThroughoutChamberCombatFasciaboardMatrix.m +++ /dev/null @@ -1,27 +0,0 @@ -// -// ThroughoutChamberCombatFasciaboardMatrix.m -// YUMI -// -// Created by YUMI on 2022/1/11. -// - -#import "ThroughoutChamberCombatFasciaboardMatrix.h" - -@implementation ThroughoutChamberCombatFasciaboardMatrix - -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{@"arRank" : [ThroughoutChamberPkRateMatrix class], - @"asRank" : [ThroughoutChamberPkRateMatrix class], - @"crRank" : [ThroughoutChamberPkRateMatrix class], - @"csRank" : [ThroughoutChamberPkRateMatrix class] - }; -} - -@end - - -@implementation ThroughoutChamberPkRateMatrix - - - -@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Presenter/XPAcrossRoomPKPresenter.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Presenter/XPAcrossRoomPKPresenter.h new file mode 100644 index 00000000..d45c577a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Presenter/XPAcrossRoomPKPresenter.h @@ -0,0 +1,24 @@ +// +// YMAcrossRoomPKPresenter.h +// YUMI +// +// Created by YUMI on 2022/1/10. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPAcrossRoomPKPresenter : BaseMvpPresenter +/// 开启跨房PK +/// @param roomUid 当前房间的房主uid +/// @param duration 持续的时间 +/// @param acceptUid 接收者的uid +/// @param playDesc 玩法 +- (void)beginAcrossRoomPK:(NSString *)roomUid + duration:(NSInteger)duration + acceptUid:(NSString *)acceptUid + playDesc:(NSString *)playDesc; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Presenter/XPAcrossRoomPKPresenter.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Presenter/XPAcrossRoomPKPresenter.m new file mode 100644 index 00000000..75c4c3d6 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Presenter/XPAcrossRoomPKPresenter.m @@ -0,0 +1,31 @@ +// +// YMAcrossRoomPKPresenter.m +// YUMI +// +// Created by YUMI on 2022/1/10. +// + +#import "XPAcrossRoomPKPresenter.h" +#import "Api+AcrossRoomPK.h" +#import "XPAcrossRoomProtocol.h" +#import "AccountInfoStorage.h" + +@implementation XPAcrossRoomPKPresenter + + +/// 开启跨房PK +/// @param roomUid 当前房间的房主uid +/// @param duration 持续的时间 +/// @param acceptUid 接收者的uid +/// @param playDesc 玩法 +- (void)beginAcrossRoomPK:(NSString *)roomUid duration:(NSInteger)duration acceptUid:(NSString *)acceptUid playDesc:(NSString *)playDesc { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * time = [NSString stringWithFormat:@"%ld", duration]; + [Api beginAcrossRoomPK:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] beginAcrossRoomPKSuccess]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] beginAcrossRoomPKFail:msg]; + } showLoading:YES errorToast:NO] acceptUid:acceptUid duration:time inviteUid:roomUid operateUid:uid playDesc:playDesc]; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Presenter/YUMIThroughoutChamberCombatExternalizer.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Presenter/YUMIThroughoutChamberCombatExternalizer.h deleted file mode 100644 index 77c527d3..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Presenter/YUMIThroughoutChamberCombatExternalizer.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMAcrossRoomPKPresenter.h -// YUMI -// -// Created by YUMI on 2022/1/10. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIThroughoutChamberCombatExternalizer : BaseMvpExternalizer -- (void)instituteThroughoutChamberCombat:(NSString *)roomUid - duration:(NSInteger)duration - acceptUid:(NSString *)acceptUid - playDesc:(NSString *)playDesc; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Presenter/YUMIThroughoutChamberCombatExternalizer.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Presenter/YUMIThroughoutChamberCombatExternalizer.m deleted file mode 100644 index f1e716c7..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Presenter/YUMIThroughoutChamberCombatExternalizer.m +++ /dev/null @@ -1,26 +0,0 @@ -// -// YMAcrossRoomPKPresenter.m -// YUMI -// -// Created by YUMI on 2022/1/10. -// - -#import "YUMIThroughoutChamberCombatExternalizer.h" -#import "Api+AcrossRoomPK.h" -#import "FBCAcrossChamberCeremony.h" -#import "AccountAbstractStorage.h" - -@implementation YUMIThroughoutChamberCombatExternalizer - - -- (void)instituteThroughoutChamberCombat:(NSString *)roomUid duration:(NSInteger)duration acceptUid:(NSString *)acceptUid playDesc:(NSString *)playDesc { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * time = [NSString stringWithFormat:@"%ld", duration]; - [Api instituteThroughoutChamberCombat:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] instituteThroughoutChamberCombatAccomplishment]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] instituteThroughoutChamberCombatFlunk:msg]; - } EvidenceChambering:YES errorToast:NO] acceptUid:acceptUid duration:time inviteUid:roomUid operateUid:uid playDesc:playDesc]; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Protocol/FBCAcrossChamberCeremony.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Protocol/FBCAcrossChamberCeremony.h deleted file mode 100644 index 5e20a310..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Protocol/FBCAcrossChamberCeremony.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMAcrossRoomProtocol.h -// YUMI -// -// Created by YUMI on 2022/1/10. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCAcrossChamberCeremony - -- (void)instituteThroughoutChamberCombatAccomplishment; -- (void)instituteThroughoutChamberCombatFlunk:(NSString *)message; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/Protocol/XPAcrossRoomProtocol.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Protocol/XPAcrossRoomProtocol.h new file mode 100644 index 00000000..2d9ed78b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/Protocol/XPAcrossRoomProtocol.h @@ -0,0 +1,21 @@ +// +// YMAcrossRoomProtocol.h +// YUMI +// +// Created by YUMI on 2022/1/10. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPAcrossRoomProtocol + +///开启咵房pk成功 +- (void)beginAcrossRoomPKSuccess; +///开启跨房Pk失败 +- (void)beginAcrossRoomPKFail:(NSString *)message; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/Cell/XPAcrossRoomPKEmptyTableViewCell.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/Cell/XPAcrossRoomPKEmptyTableViewCell.h new file mode 100644 index 00000000..d2c091f5 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/Cell/XPAcrossRoomPKEmptyTableViewCell.h @@ -0,0 +1,16 @@ +// +// YMAcrossRoomPKEmptyTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/1/10. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPAcrossRoomPKEmptyTableViewCell : UITableViewCell + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/Cell/XPAcrossRoomPKEmptyTableViewCell.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/Cell/XPAcrossRoomPKEmptyTableViewCell.m new file mode 100644 index 00000000..106c924c --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/Cell/XPAcrossRoomPKEmptyTableViewCell.m @@ -0,0 +1,71 @@ +// +// YMAcrossRoomPKEmptyTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/1/10. +// + +#import "XPAcrossRoomPKEmptyTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImageConstant.h" + +@interface XPAcrossRoomPKEmptyTableViewCell () +@property (nonatomic,strong) UIImageView *emptyImageView; +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPAcrossRoomPKEmptyTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.emptyImageView]; + [self.contentView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.emptyImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.contentView).offset(50); + make.centerX.mas_equalTo(self.contentView); + make.size.mas_equalTo(CGSizeMake(200, 200)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.emptyImageView.mas_bottom).offset(20); + make.left.right.mas_equalTo(self.contentView); + }]; +} +#pragma mark - Getters And Setters +- (UIImageView *)emptyImageView { + if (!_emptyImageView) { + _emptyImageView = [[UIImageView alloc] init]; + _emptyImageView.userInteractionEnabled = YES; + _emptyImageView.image = [UIImage imageNamed:@""]; + _emptyImageView.layer.masksToBounds = YES; + _emptyImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _emptyImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPAcrossRoomPKEmptyTableViewCell0"); + _titleLabel.font = [UIFont systemFontOfSize:16]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.textColor = UIColorFromRGB(0x999999); + } + return _titleLabel; +} +@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/Cell/XPAcrossRoomPKTableViewCell.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/Cell/XPAcrossRoomPKTableViewCell.h new file mode 100644 index 00000000..a160e9e4 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/Cell/XPAcrossRoomPKTableViewCell.h @@ -0,0 +1,22 @@ +// +// YMAcrossRoomPKTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/1/10. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class AcrossRoomPKInfoModel,XPAcrossRoomPKTableViewCell; +@protocol XPAcrossRoomPKTableViewCellDelegate +///点击了选择的按钮 +- (void)xPAcrossRoomPKTableViewCell:(XPAcrossRoomPKTableViewCell *)view didChooseRoom:(AcrossRoomPKInfoModel *)roomInfo; +@end +@interface XPAcrossRoomPKTableViewCell : UITableViewCell +@property (nonatomic,strong) AcrossRoomPKInfoModel *roomPKInfo; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/Cell/XPAcrossRoomPKTableViewCell.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/Cell/XPAcrossRoomPKTableViewCell.m new file mode 100644 index 00000000..3ca2825f --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/Cell/XPAcrossRoomPKTableViewCell.m @@ -0,0 +1,131 @@ +// +// YMAcrossRoomPKTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/1/10. +// + +#import "XPAcrossRoomPKTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +///Model +#import "AcrossRoomPKInfoModel.h" + +@interface XPAcrossRoomPKTableViewCell () +///头像 +@property (nonatomic, strong) NetImageView *avatarImageView; +///选择的 +@property (nonatomic, strong) UIButton *selectButton; +///名字 +@property (nonatomic, strong) UILabel *nameLabel; +///ID +@property (nonatomic, strong) UILabel *idLabel; + +@end + +@implementation XPAcrossRoomPKTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; + if (self) { + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self initSubViews]; + [self initSubViewConstraints]; + + } + return self; +} +#pragma mark - Private Method + +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.nameLabel]; + [self.contentView addSubview:self.idLabel]; + [self.contentView addSubview:self.selectButton]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(13); + make.width.height.mas_equalTo(60); + make.centerY.mas_equalTo(self.contentView); + }]; + [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatarImageView.mas_right).mas_offset(6); + make.bottom.mas_equalTo(self.avatarImageView.mas_centerY); + make.height.mas_equalTo(14); + make.right.mas_equalTo(self.selectButton.mas_left).mas_offset(-5); + }]; + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nameLabel); + make.top.mas_equalTo(self.nameLabel.mas_bottom).mas_offset(7); + }]; + + [self.selectButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-12); + make.centerY.mas_equalTo(self.avatarImageView); + make.width.height.mas_equalTo(30); + }]; +} + +#pragma mark - Event Response +- (void)selectButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPAcrossRoomPKTableViewCell:didChooseRoom:)]) { + [self.delegate xPAcrossRoomPKTableViewCell:self didChooseRoom:self.roomPKInfo]; + } +} +#pragma mark - Getters And Setters +- (void)setRoomPKInfo:(AcrossRoomPKInfoModel *)roomPKInfo { + _roomPKInfo = roomPKInfo; + self.avatarImageView.imageUrl = _roomPKInfo.avatar; + self.nameLabel.text = _roomPKInfo.title; + self.idLabel.text = [NSString stringWithFormat:@"ID:%@", _roomPKInfo.erbanNo]; + self.selectButton.selected = _roomPKInfo.hadSelected; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 60/2; + } + return _avatarImageView; +} + +- (UIButton *)selectButton { + if (!_selectButton) { + _selectButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_selectButton setImage:[UIImage imageNamed:@"roomg_across_pk_choose_normal"] forState:UIControlStateNormal]; + [_selectButton setImage:[UIImage imageNamed:@"roomg_across_pk_choose_select"] forState:UIControlStateSelected]; + [_selectButton addTarget:self action:@selector(selectButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _selectButton.userInteractionEnabled = YES; + } + return _selectButton; +} + +- (UILabel *)nameLabel { + if (!_nameLabel) { + _nameLabel = [[UILabel alloc] init]; + _nameLabel.textColor = [UIColor whiteColor]; + _nameLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + } + return _nameLabel; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.textColor = [UIColor whiteColor]; + _idLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + } + return _idLabel; +} +@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/Cell/YUMIThroughoutChamberCombatDispossessTabulationRegardElement.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/Cell/YUMIThroughoutChamberCombatDispossessTabulationRegardElement.h deleted file mode 100644 index 1cafa01b..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/Cell/YUMIThroughoutChamberCombatDispossessTabulationRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMAcrossRoomPKEmptyTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/1/10. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIThroughoutChamberCombatDispossessTabulationRegardElement : UITableViewCell - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/Cell/YUMIThroughoutChamberCombatDispossessTabulationRegardElement.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/Cell/YUMIThroughoutChamberCombatDispossessTabulationRegardElement.m deleted file mode 100644 index c67a8edf..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/Cell/YUMIThroughoutChamberCombatDispossessTabulationRegardElement.m +++ /dev/null @@ -1,69 +0,0 @@ -// -// YMAcrossRoomPKEmptyTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/1/10. -// - -#import "YUMIThroughoutChamberCombatDispossessTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIIndicateConstant.h" - -@interface YUMIThroughoutChamberCombatDispossessTabulationRegardElement () -@property (nonatomic,strong) UIImageView *dispossessIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@end - -@implementation YUMIThroughoutChamberCombatDispossessTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.dispossessIndicateRegard]; - [self.contentView addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.dispossessIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.contentView).offset(50); - make.centerX.mas_equalTo(self.contentView); - make.size.mas_equalTo(CGSizeMake(200, 200)); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.dispossessIndicateRegard.mas_bottom).offset(20); - make.left.right.mas_equalTo(self.contentView); - }]; -} -#pragma mark - Getters And Setters -- (UIImageView *)dispossessIndicateRegard { - if (!_dispossessIndicateRegard) { - _dispossessIndicateRegard = [[UIImageView alloc] init]; - _dispossessIndicateRegard.userInteractionEnabled = YES; - _dispossessIndicateRegard.image = [UIImage imageNamed:@""]; - _dispossessIndicateRegard.layer.masksToBounds = YES; - _dispossessIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _dispossessIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Across_Room_PK_Empty_Table_View_Cell_0"); - _titleLabel.font = [UIFont systemFontOfSize:16]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.textColor = UIColorFromRGB(0x999999); - } - return _titleLabel; -} -@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/Cell/YUMIThroughoutChamberCombatTabulationRegardElement.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/Cell/YUMIThroughoutChamberCombatTabulationRegardElement.h deleted file mode 100644 index f8e9cf92..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/Cell/YUMIThroughoutChamberCombatTabulationRegardElement.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YMAcrossRoomPKTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/1/10. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ThroughoutChamberCombatAbstractMatrix,YUMIThroughoutChamberCombatTabulationRegardElement; -@protocol FBCAcrossChamberCombatTabulationViweElementRepresendtation -- (void)yUMIThroughoutChamberCombatTarbsultowardsionViweElement:(YUMIThroughoutChamberCombatTabulationRegardElement *)view didChooseRoom:(ThroughoutChamberCombatAbstractMatrix *)roomInfo; -@end -@interface YUMIThroughoutChamberCombatTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) ThroughoutChamberCombatAbstractMatrix *chamberCombatAbstract; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/Cell/YUMIThroughoutChamberCombatTabulationRegardElement.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/Cell/YUMIThroughoutChamberCombatTabulationRegardElement.m deleted file mode 100644 index ef4e6014..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/Cell/YUMIThroughoutChamberCombatTabulationRegardElement.m +++ /dev/null @@ -1,124 +0,0 @@ -// -// YMAcrossRoomPKTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/1/10. -// - -#import "YUMIThroughoutChamberCombatTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "ThroughoutChamberCombatAbstractMatrix.h" - -@interface YUMIThroughoutChamberCombatTabulationRegardElement () -@property (nonatomic, strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic, strong) UIButton *chosenBtuton; -@property (nonatomic, strong) UILabel *constituteSequencignation; -@property (nonatomic, strong) UILabel *idSequencignation; - -@end - -@implementation YUMIThroughoutChamberCombatTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; - if (self) { - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self initSubViews]; - [self initChildLyRestrictions]; - - } - return self; -} -#pragma mark - Private Method - -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.constituteSequencignation]; - [self.contentView addSubview:self.idSequencignation]; - [self.contentView addSubview:self.chosenBtuton]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(13); - make.width.height.mas_equalTo(60); - make.centerY.mas_equalTo(self.contentView); - }]; - [self.constituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).mas_offset(6); - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY); - make.height.mas_equalTo(14); - make.right.mas_equalTo(self.chosenBtuton.mas_left).mas_offset(-5); - }]; - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.constituteSequencignation); - make.top.mas_equalTo(self.constituteSequencignation.mas_bottom).mas_offset(7); - }]; - - [self.chosenBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-12); - make.centerY.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.width.height.mas_equalTo(30); - }]; -} - -#pragma mark - Event Response -- (void)chosenBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIThroughoutChamberCombatTarbsultowardsionViweElement:didChooseRoom:)]) { - [self.delegate yUMIThroughoutChamberCombatTarbsultowardsionViweElement:self didChooseRoom:self.chamberCombatAbstract]; - } -} -#pragma mark - Getters And Setters -- (void)setChamberCombatAbstract:(ThroughoutChamberCombatAbstractMatrix *)chamberCombatAbstract { - _chamberCombatAbstract = chamberCombatAbstract; - self.intelligenceportraitIndicateRegard.imageUrl = _chamberCombatAbstract.avatar; - self.constituteSequencignation.text = _chamberCombatAbstract.title; - self.idSequencignation.text = [NSString stringWithFormat:@"ID:%@", _chamberCombatAbstract.erbanNo]; - self.chosenBtuton.selected = _chamberCombatAbstract.hadSelected; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 60/2; - } - return _intelligenceportraitIndicateRegard; -} - -- (UIButton *)chosenBtuton { - if (!_chosenBtuton) { - _chosenBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_chosenBtuton setImage:[UIImage imageNamed:@"yumi_roomg_across_pk_choose_normal"] forState:UIControlStateNormal]; - [_chosenBtuton setImage:[UIImage imageNamed:@"yumi_roomg_across_pk_choose_select"] forState:UIControlStateSelected]; - [_chosenBtuton addTarget:self action:@selector(chosenBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _chosenBtuton.userInteractionEnabled = YES; - } - return _chosenBtuton; -} - -- (UILabel *)constituteSequencignation { - if (!_constituteSequencignation) { - _constituteSequencignation = [[UILabel alloc] init]; - _constituteSequencignation.textColor = [UIColor whiteColor]; - _constituteSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - } - return _constituteSequencignation; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.textColor = [UIColor whiteColor]; - _idSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - } - return _idSequencignation; -} -@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XCombatellegCombatAdaptationRegard.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XCombatellegCombatAdaptationRegard.h deleted file mode 100644 index 5776557e..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XCombatellegCombatAdaptationRegard.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YMAnchorPKMatchView.h -// YUMI -// -// Created by YUMI on 2022/11/22. -// - -#import -#import "ChamberHostRepresendtation.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface XCombatellegCombatAdaptationRegard : UIView - -- (instancetype)initWithDelegate:(id)delegate; - -@property (nonatomic, copy) NSString *roomUid; - -- (void)shankDirectoryapttowardsionIntrtowardsemporalOptowardssideCommunictowardsion; - -- (void)unfoildComputtowardsiondownAboutIntrtowardsemporal:(long)startTime; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XCombatellegCombatAdaptationRegard.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XCombatellegCombatAdaptationRegard.m deleted file mode 100644 index 92109f53..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XCombatellegCombatAdaptationRegard.m +++ /dev/null @@ -1,213 +0,0 @@ -// -// YMAnchorPKMatchView.m -// YUMI -// -// Created by YUMI on 2022/11/22. -// - -#import "XCombatellegCombatAdaptationRegard.h" -#import -#import "MKJPopup.h" -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "Api+AnchorPk.h" -#import "ChamberAbstractMatrix.h" -#import "Intratemporalstamp.h" - -@interface XCombatellegCombatAdaptationRegard() -@property (nonatomic,weak) iddelegate; -@property (nonatomic, strong) UIImageView *encourageIndicateRegard; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UILabel *intratemporalSequencignation; -@property (strong, nonatomic) dispatch_source_t timer; - -@end - -@implementation XCombatellegCombatAdaptationRegard - -- (void)dealloc { - if (self.timer) { - dispatch_source_cancel(self.timer); - self.timer = nil; - } - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - -- (void)removeFromSuperview { - [super removeFromSuperview]; - if (self.timer) { - dispatch_source_cancel(self.timer); - self.timer = nil; - } -} - -- (instancetype)initWithDelegate:(id)delegate { - if (self = [super init]) { - _delegate = delegate; - [self initSubViews]; - [self initChildLyRestrictions]; - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(revoctowardsionDirectoryapttowardsion:)]; - [self addGestureRecognizer:tap]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(revoctowardsionDirectoryapttowardsionCombat) name:@"cancelMatchRandomPK" object:nil]; - } - return self; -} - -- (void)revoctowardsionDirectoryapttowardsion:(UITapGestureRecognizer *)ges { - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.message = @"取消匹配?"; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [Api revoctowardsionDirectoryapttowardsionArbitraryCombat:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - if (self.timer) { - dispatch_source_cancel(self.timer); - self.timer = nil; - } - self.delegate.acquireChamberAbstract.pkMatchStartTime = nil; - [self removeFromSuperview]; - } - } roomUid:self.roomUid]; - } cancelHandler:^{ - - }]; -} - -- (void)revoctowardsionDirectoryapttowardsionCombat { - if (self.timer) { - dispatch_source_cancel(self.timer); - self.timer = nil; - } - [self removeFromSuperview]; -} - -- (void)shankDirectoryapttowardsionIntrtowardsemporalOptowardssideCommunictowardsion { - if (self.timer) { - dispatch_source_cancel(self.timer); - self.timer = nil; - } - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.message = @"暂未匹配到合适的PK对象\n是否继续?"; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [Api adapttowardsionArbitraryCombat:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - long long matchPkStartTime = [data.data longLongValue]; - self.delegate.acquireChamberAbstract.pkMatchStartTime = matchPkStartTime; - [self removeFromSuperview]; - [[NSNotificationCenter defaultCenter] postNotificationName:@"anchorPKMatchBegin" object:@{@"matchPkStartTime" : @(matchPkStartTime)}]; - } - } roomUid:self.roomUid]; - } cancelHandler:^{ - [self removeFromSuperview]; - }]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.encourageIndicateRegard]; - [self addSubview:self.titleLabel]; - [self addSubview:self.intratemporalSequencignation]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(52); - make.height.mas_equalTo(52); - }]; - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(0); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(25); - make.height.mas_equalTo(10); - }]; - [self.intratemporalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.titleLabel); - make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(2); - make.height.mas_equalTo(10); - }]; -} - -#pragma mark - 倒计时 -- (void)unfoildComputtowardsiondownAboutIntrtowardsemporal:(long)startTime { - __block long tempTime; - [Intratemporalstamp acquireInternetEngagementAboutAccomplishment:^(NSTimeInterval timeInterval) { - timeInterval = timeInterval * 1000; - tempTime = (timeInterval - startTime) / 1000; - if (tempTime < 0) { - tempTime = 0; - } - [self shankComputtowardsionIntrtowardsemporal:tempTime]; - } failure:^(NSError * _Nonnull error) { - NSDate *datenow = [NSDate date]; - long time2 = (long)([datenow timeIntervalSince1970]*1000); - tempTime = (time2 - startTime) / 1000; - if (tempTime < 0) { - tempTime = 0; - } - [self shankComputtowardsionIntrtowardsemporal:tempTime]; - }]; -} - -- (void)shankComputtowardsionIntrtowardsemporal:(long)time { - __block long tempTime = time; - if (self.timer == nil) { - @kWeakify(self); - dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); - self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); - dispatch_source_set_timer(self.timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); - dispatch_source_set_event_handler(self.timer, ^{ - @kStrongify(self); - dispatch_async(dispatch_get_main_queue(), ^{ - - [self throughoutChamberCombatDeficituceddownUnfoild:tempTime]; - }); - tempTime++; - }); - dispatch_resume(self.timer); - } -} - -- (void)throughoutChamberCombatDeficituceddownUnfoild:(NSInteger)time { - NSInteger minute = time / 60; - NSInteger second = (time % 60); - NSInteger hour = time/3600; - NSString *timeStr; - if (hour > 0) { - minute = minute % 60; - timeStr = [NSString stringWithFormat:@"%02zd:%02zd:%02zd", hour, minute, second]; - } else { - timeStr = [NSString stringWithFormat:@"%02zd:%02zd", minute, second]; - } - self.intratemporalSequencignation.text = timeStr; -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_acrossPK_countDown_left_background"]; - } - return _encourageIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:10]; - _titleLabel.textColor = [UIColor whiteColor]; - _titleLabel.text = YMLocalizedString(@"YUMI_Anchor_PK_Match_View_2"); - } - return _titleLabel; -} - -- (UILabel *)intratemporalSequencignation { - if (!_intratemporalSequencignation) { - _intratemporalSequencignation = [[UILabel alloc] init]; - _intratemporalSequencignation.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - _intratemporalSequencignation.textColor = UIColorFromRGB(0xFFF233); - _intratemporalSequencignation.text = @"00:00"; - } - return _intratemporalSequencignation; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKCountDownView.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKCountDownView.h new file mode 100644 index 00000000..063f2534 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKCountDownView.h @@ -0,0 +1,20 @@ +// +// YMAcrossRoomPKCountDownView.h +// YUMI +// +// Created by YUMI on 2022/7/14. +// 跨房PK预约倒计时 + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPAcrossRoomPKCountDownView : UIView + +@property (nonatomic, assign) long long startTime; +///背景 +@property (nonatomic, strong) UIImageView *backImageView; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKCountDownView.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKCountDownView.m new file mode 100644 index 00000000..318ff69a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKCountDownView.m @@ -0,0 +1,151 @@ +// +// YMAcrossRoomPKCountDownView.m +// YUMI +// +// Created by YUMI on 2022/7/14. +// + +#import "XPAcrossRoomPKCountDownView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" + +@interface XPAcrossRoomPKCountDownView() + +///标题 +@property (nonatomic, strong) UILabel *titleLabel; +///显示倒计时 +@property (nonatomic, strong) UILabel *timeLabel; +///倒计时 +@property (strong, nonatomic) dispatch_source_t timer; + +@end + +@implementation XPAcrossRoomPKCountDownView + +- (void)dealloc { + if (self.timer) { + dispatch_source_cancel(self.timer); + self.timer = nil; + } +} + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backImageView]; + [self addSubview:self.titleLabel]; + [self addSubview:self.timeLabel]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(52); + make.height.mas_equalTo(52); + }]; + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(25); + make.height.mas_equalTo(10); + }]; + [self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.titleLabel); + make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(2); + make.height.mas_equalTo(10); + }]; +} + +#pragma mark - 倒计时 +- (void)openCountdownWithTime:(long)time { + __block long tempTime = time; //倒计时时间 + if (self.timer == nil) { + @kWeakify(self); + dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); + self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); + dispatch_source_set_timer(self.timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行 + dispatch_source_set_event_handler(self.timer, ^{ + @kStrongify(self); + if(tempTime <= 0){ //倒计时结束,关闭 + dispatch_source_cancel(self.timer); + self.timer = nil; + dispatch_async(dispatch_get_main_queue(), ^{ + [self removeFromSuperview]; + }); + } else { + dispatch_async(dispatch_get_main_queue(), ^{ + //设置按钮显示读秒效果 + [self acrossRoomPKCutdownOpen:tempTime]; + }); + tempTime--; + } + }); + dispatch_resume(self.timer); + } +} + +- (void)acrossRoomPKCutdownOpen:(NSInteger)time { + NSInteger minute = time / 60; + NSInteger second = (time % 60); + NSInteger hour = time/3600; + NSString *timeStr; + if (hour > 0) { + minute = minute % 60; + timeStr = [NSString stringWithFormat:@"%02zd:%02zd:%02zd", hour, minute, second]; + } else { + timeStr = [NSString stringWithFormat:@"%02zd:%02zd", minute, second]; + } + self.timeLabel.text = timeStr; + if (time <= 30) { + self.timeLabel.textColor = UIColorFromRGB(0xFF87A1); + } else { + self.timeLabel.textColor = UIColorFromRGB(0xFFF600); + } +} + +- (void)setStartTime:(long long)startTime { + long long time2 = (long long)([[NSDate date] timeIntervalSince1970]*1000); + long aTime = (long)(startTime - time2) / 1000; + [self openCountdownWithTime:aTime]; +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.image = [UIImage imageNamed:@"acrossPK_countDown_bg"]; + } + return _backImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:10]; + _titleLabel.textColor = [UIColor whiteColor]; + _titleLabel.text = @"下一场PK"; + } + return _titleLabel; +} + +- (UILabel *)timeLabel { + if (!_timeLabel) { + _timeLabel = [[UILabel alloc] init]; + _timeLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + _timeLabel.textColor = UIColorFromRGB(0xFFF333); + _timeLabel.text = @"00:00"; + } + return _timeLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKForceEndResultView.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKForceEndResultView.h new file mode 100644 index 00000000..dbc111a8 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKForceEndResultView.h @@ -0,0 +1,16 @@ +// +// YMAcrossRoomPKForceEndResultView.h +// YUMI +// +// Created by YUMI on 2022/1/12. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class AcrossRoomPKPanelModel; +@interface XPAcrossRoomPKForceEndResultView : UIView +@property (nonatomic, strong) AcrossRoomPKPanelModel *data; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKForceEndResultView.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKForceEndResultView.m new file mode 100644 index 00000000..3885077e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKForceEndResultView.m @@ -0,0 +1,279 @@ +// +// YMAcrossRoomPKForceEndResultView.m +// YUMI +// +// Created by YUMI on 2022/1/12. +// + +#import "XPAcrossRoomPKForceEndResultView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "TTPopup.h" +///Model +#import "AcrossRoomPKPanelModel.h" + +@interface XPAcrossRoomPKForceEndResultView() + +/** bgImageView */ +@property (nonatomic, strong) UIImageView *bgImageView; +///关闭 +@property (nonatomic, strong) UIButton *closeBtn; +///标题 +@property (nonatomic, strong) UILabel *titleLabel; +///红队背景 +@property (nonatomic, strong) UIImageView *redBgImageView; +///红队头像 +@property (nonatomic, strong) NetImageView *redHeadImageView; +///红队厅名 +@property (nonatomic, strong) UILabel *redRoomTitleLabel; +///红队礼物值 +@property (nonatomic, strong) UILabel *redValueLabel; +///中间PKicon +@property (nonatomic, strong) UIImageView *middleImageView; +///蓝队背景 +@property (nonatomic, strong) UIImageView *blueBgImageView; +///蓝队赢icon +@property (nonatomic, strong) UIImageView *blueWinIconView; +///蓝队头像 +@property (nonatomic, strong) NetImageView *blueHeadImageView; +///蓝队厅名 +@property (nonatomic, strong) UILabel *blueRoomTitleLabel; +///蓝队礼物值 +@property (nonatomic, strong) UILabel *blueValueLabel; + +@end + +@implementation XPAcrossRoomPKForceEndResultView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initView]; + [self initConstrations]; + } + return self; +} + +- (void)initView { + [self addSubview:self.bgImageView]; + [self addSubview:self.closeBtn]; + [self addSubview:self.titleLabel]; + + [self addSubview:self.redBgImageView]; + [self addSubview:self.redHeadImageView]; + [self addSubview:self.redRoomTitleLabel]; + [self addSubview:self.redValueLabel]; + + [self addSubview:self.blueBgImageView]; + [self addSubview:self.blueHeadImageView]; + [self addSubview:self.blueRoomTitleLabel]; + [self addSubview:self.blueValueLabel]; + + [self addSubview:self.middleImageView]; + +} + +- (void)initConstrations { + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(18); + make.height.mas_equalTo(18); + }]; + [self.closeBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-17); + make.width.height.mas_equalTo(22); + make.centerY.mas_equalTo(self.titleLabel); + }]; + [self.redBgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(55); + make.left.mas_equalTo(17); + make.width.mas_equalTo(133); + make.height.mas_equalTo(119); + }]; + [self.redHeadImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(75); + make.left.mas_equalTo(54); + make.width.height.mas_equalTo(52); + }]; + [self.redRoomTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.redHeadImageView.mas_bottom).mas_offset(8); + make.centerX.mas_equalTo(self.redHeadImageView); + make.height.mas_equalTo(12); + make.left.mas_equalTo(self.redBgImageView.mas_left).mas_offset(20); + }]; + [self.redValueLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.redHeadImageView); + make.top.mas_equalTo(self.redRoomTitleLabel.mas_bottom).offset(6); + make.height.mas_equalTo(12); + make.left.mas_equalTo(self.redBgImageView.mas_left).mas_offset(20); + }]; + [self.middleImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(87); + make.centerX.mas_equalTo(self); + make.width.mas_equalTo(62); + make.height.mas_equalTo(43); + }]; + [self.blueBgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(61); + make.right.mas_equalTo(-17); + make.width.mas_equalTo(133); + make.height.mas_equalTo(119); + }]; + [self.blueHeadImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(81); + make.right.mas_equalTo(-54); + make.width.height.mas_equalTo(52); + }]; + [self.blueRoomTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.blueHeadImageView.mas_bottom).mas_offset(8); + make.centerX.mas_equalTo(self.blueHeadImageView); + make.height.mas_equalTo(12); + make.left.mas_equalTo(self.blueBgImageView.mas_left).mas_offset(16); + }]; + [self.blueValueLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.blueHeadImageView); + make.left.mas_equalTo(self.blueBgImageView.mas_left).mas_offset(16); + make.top.mas_equalTo(self.blueRoomTitleLabel.mas_bottom).offset(6); + make.height.mas_equalTo(12); + }]; +} + +- (void)setData:(AcrossRoomPKPanelModel *)data { + if (data) { + self.redHeadImageView.imageUrl = data.cAvatar; + self.blueHeadImageView.imageUrl = data.aAvatar; + self.redRoomTitleLabel.text = data.cTitle; + self.blueRoomTitleLabel.text = data.aTitle; + self.redValueLabel.text = [NSString stringWithFormat:@"%lld", data.cAmount]; + self.blueValueLabel.text = [NSString stringWithFormat:@"%lld", data.aAmount]; + } +} + +- (void)onCloseBtnClick:(UIButton *)btn { + [TTPopup dismiss]; +} + +#pragma mark - getters and setters +- (UIImageView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[UIImageView alloc] init]; + _bgImageView.image = [UIImage imageNamed:@"room_across_pk_result_forcednd_bg"]; + } + return _bgImageView; +} + +- (UIButton *)closeBtn { + if (!_closeBtn) { + _closeBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_closeBtn addTarget:self action:@selector(onCloseBtnClick:) forControlEvents:UIControlEventTouchUpInside]; + [_closeBtn setImage:[UIImage imageNamed:@"room_across_pk_invite_result_close"] forState:UIControlStateNormal]; + } + return _closeBtn; +} + +- (UIImageView *)redBgImageView { + if (!_redBgImageView) { + _redBgImageView = [[UIImageView alloc] init]; + _redBgImageView.image = [UIImage imageNamed:@"room_across_pk_result_forceend_red_bg"]; + } + return _redBgImageView; +} + +- (NetImageView *)redHeadImageView { + if (!_redHeadImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _redHeadImageView = [[NetImageView alloc] initWithConfig:config]; + _redHeadImageView.layer.cornerRadius = 26; + _redHeadImageView.layer.masksToBounds = YES; + _redHeadImageView.layer.borderWidth = 1; + _redHeadImageView.layer.borderColor = [UIColor whiteColor].CGColor; + } + return _redHeadImageView; +} + +- (UILabel *)redRoomTitleLabel { + if (!_redRoomTitleLabel) { + _redRoomTitleLabel = [[UILabel alloc] init]; + _redRoomTitleLabel.textColor = [UIColor whiteColor]; + _redRoomTitleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _redRoomTitleLabel.textAlignment = NSTextAlignmentCenter; + } + return _redRoomTitleLabel; +} +- (UILabel *)redValueLabel { + if (!_redValueLabel) { + _redValueLabel = [[UILabel alloc] init]; + _redValueLabel.textColor = [UIColor whiteColor]; + _redValueLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; + _redValueLabel.textAlignment = NSTextAlignmentCenter; + } + return _redValueLabel; +} + +- (UIImageView *)middleImageView { + if (!_middleImageView) { + _middleImageView = [[UIImageView alloc] init]; + _middleImageView.image = [UIImage imageNamed:@"room_across_pk_result_forceend_pk_icon"]; + } + return _middleImageView; +} + +- (UIImageView *)blueBgImageView { + if (!_blueBgImageView) { + _blueBgImageView = [[UIImageView alloc] init]; + _blueBgImageView.image = [UIImage imageNamed:@"room_across_pk_result_forceend_blue_bg"]; + } + return _blueBgImageView; +} + +- (NetImageView *)blueHeadImageView { + if (!_blueHeadImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _blueHeadImageView = [[NetImageView alloc] initWithConfig:config]; + _blueHeadImageView.layer.cornerRadius = 26; + _blueHeadImageView.layer.masksToBounds = YES; + _blueHeadImageView.layer.borderWidth = 1; + _blueHeadImageView.layer.borderColor = [UIColor whiteColor].CGColor; + } + return _blueHeadImageView; +} + +- (UILabel *)blueRoomTitleLabel { + if (!_blueRoomTitleLabel) { + _blueRoomTitleLabel = [[UILabel alloc] init]; + _blueRoomTitleLabel.textColor = [UIColor whiteColor]; + _blueRoomTitleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _blueRoomTitleLabel.textAlignment = NSTextAlignmentCenter; + } + return _blueRoomTitleLabel; +} +- (UILabel *)blueValueLabel { + if (!_blueValueLabel) { + _blueValueLabel = [[UILabel alloc] init]; + _blueValueLabel.textColor = [UIColor whiteColor]; + _blueValueLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; + _blueValueLabel.textAlignment = NSTextAlignmentCenter; + } + return _blueValueLabel; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textColor = [UIColor whiteColor]; + _titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightBold]; + _titleLabel.text = YMLocalizedString(@"XPAcrossRoomPKForceEndResultView0"); + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKInviteResultView.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKInviteResultView.h new file mode 100644 index 00000000..82be4566 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKInviteResultView.h @@ -0,0 +1,18 @@ +// +// YMAcrossRoomPKInviteResultView.h +// YUMI +// +// Created by YUMI on 2022/1/11. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + + +@interface XPAcrossRoomPKInviteResultView : UIView +///是否是接受 +@property (nonatomic,assign) BOOL isAccept; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKInviteResultView.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKInviteResultView.m new file mode 100644 index 00000000..8e00c64f --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKInviteResultView.m @@ -0,0 +1,96 @@ +// +// YMAcrossRoomPKInviteResultView.m +// YUMI +// +// Created by YUMI on 2022/1/11. +// + +#import "XPAcrossRoomPKInviteResultView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" + +@interface XPAcrossRoomPKInviteResultView () +///标题 +@property (nonatomic, strong) UILabel *titleLabel; +///关闭 +@property (nonatomic, strong) UIButton *closeButton; +///背景 +@property (nonatomic, strong) UIImageView *backImageView; + +@end + +@implementation XPAcrossRoomPKInviteResultView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +- (void)initSubViews { + [self addSubview:self.backImageView]; + [self addSubview:self.titleLabel]; + [self addSubview:self.closeButton]; +} + +- (void)initSubViewConstraints { + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self); + make.left.mas_equalTo(12); + }]; + [self.closeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self); + make.right.mas_equalTo(-12); + make.width.height.mas_equalTo(16); + }]; +} + +#pragma mark - Event Response +- (void)closeButtonAction:(UIButton *)button { + [self removeFromSuperview]; +} +#pragma mark - getter +- (void)setIsAccept:(BOOL)isAccept { + if (isAccept) { + self.titleLabel.text = YMLocalizedString(@"XPAcrossRoomPKInviteResultView0"); + self.backImageView.image = [UIImage imageNamed:@"room_across_pk_invite_result_accept_bg"]; + } else { + self.titleLabel.text = YMLocalizedString(@"XPAcrossRoomPKInviteResultView1"); + self.backImageView.image = [UIImage imageNamed:@"room_across_pk_invite_result_bg"]; + } +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + } + return _backImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textColor = [UIColor whiteColor]; + _titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightBold]; + } + return _titleLabel; +} + +- (UIButton *)closeButton { + if (!_closeButton) { + _closeButton = [[UIButton alloc] init]; + [_closeButton setImage:[UIImage imageNamed:@"room_across_pk_invite_result_close"] forState:UIControlStateNormal]; + [_closeButton addTarget:self action:@selector(closeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _closeButton; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKInviteView.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKInviteView.h new file mode 100644 index 00000000..3350e2ef --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKInviteView.h @@ -0,0 +1,20 @@ +// +// YMAcrossRoomPKInviteView.h +// YUMI +// +// Created by YUMI on 2022/1/11. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPAcrossRoomPKInviteView : UIView +///房主的uid +@property (nonatomic,copy) NSString *roomUid; +///数据源 +@property (nonatomic,copy) NSDictionary *dataDic; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKInviteView.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKInviteView.m new file mode 100644 index 00000000..78195232 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKInviteView.m @@ -0,0 +1,355 @@ +// +// YMAcrossRoomPKInviteView.m +// YUMI +// +// Created by YUMI on 2022/1/11. +// + +#import "XPAcrossRoomPKInviteView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "UIImage+Utils.h" +#import "Api+Room.h" +#import "XNDJTDDLoadingTool.h" + +@interface XPAcrossRoomPKInviteSubView : UIView +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///内容 +@property (nonatomic,strong) UILabel *contentLabel; +@end + +@implementation XPAcrossRoomPKInviteSubView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.titleLabel]; + [self addSubview:self.contentLabel]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(17); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(50); + make.left.centerY.mas_equalTo(self); + }]; + + [self.contentLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.titleLabel.mas_right).offset(15); + make.centerY.mas_equalTo(self); + make.right.mas_lessThanOrEqualTo(self).offset(-5); + }]; +} + +#pragma mark - Getters And Setters + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textColor = UIColorFromRGB(0xffffff); + _titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _titleLabel.text = YMLocalizedString(@"XPAcrossRoomPKInviteView0"); + } + return _titleLabel; +} + +- (UILabel *)contentLabel { + if (!_contentLabel) { + _contentLabel = [[UILabel alloc] init]; + _contentLabel.textColor = UIColorFromRGB(0xE8E035); + _contentLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightBold]; + } + return _contentLabel; +} + +@end + +@interface XPAcrossRoomPKInviteView () +///标题 +@property (nonatomic, strong) UILabel *titleLabel; +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///邀请方 +@property (nonatomic,strong) XPAcrossRoomPKInviteSubView *inviteView; +///PK时长 +@property (nonatomic,strong) XPAcrossRoomPKInviteSubView *timeView; +///PK玩法 +@property (nonatomic,strong) XPAcrossRoomPKInviteSubView *descView; +///操作按钮的容器 +@property (nonatomic,strong) UIStackView *operaStackView; +///拒绝 +@property (nonatomic, strong) UIButton *rejectButton; +///接受 +@property (nonatomic, strong) UIButton *acceptButton; +///背景 +@property (nonatomic, strong) UIImageView *backImageView; +///倒计时 +@property (nonatomic, strong) UIButton *countDownButton; +//拒绝邀请 +@property (strong, nonatomic) dispatch_source_t inviteTimer; + +@end + +@implementation XPAcrossRoomPKInviteView + +- (void)dealloc { + if (self.inviteTimer != nil) { + dispatch_source_cancel(self.inviteTimer); + self.inviteTimer = nil; + } +} + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +- (void)initSubViews { + [self addSubview:self.backImageView]; + + [self.backImageView addSubview:self.titleLabel]; + [self.backImageView addSubview:self.stackView]; + [self.backImageView addSubview:self.operaStackView]; + [self.backImageView addSubview:self.countDownButton]; + + [self.stackView addArrangedSubview:self.inviteView]; + [self.stackView addArrangedSubview:self.timeView]; + [self.stackView addArrangedSubview:self.descView]; + + [self.operaStackView addArrangedSubview:self.rejectButton]; + [self.operaStackView addArrangedSubview:self.acceptButton]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth - 47 * 2); + make.bottom.mas_equalTo(self.backImageView.mas_bottom); + }]; + + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.top.mas_equalTo(self); + make.width.mas_equalTo(KScreenWidth - 47 * 2); + make.bottom.mas_equalTo(self.operaStackView.mas_bottom).offset(16); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(18); + }]; + + [self.countDownButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.titleLabel); + make.right.mas_equalTo(-15); + make.width.mas_equalTo(32); + make.height.mas_equalTo(16); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backImageView).offset(16); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(18); + make.right.mas_equalTo(self.backImageView); + }]; + + [self.operaStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backImageView).inset(16); + make.height.mas_equalTo(35); + make.top.mas_equalTo(self.stackView.mas_bottom).offset(26); + }]; +} + +#pragma mark - Event Response +- (void)acceptButtonAction:(UIButton *)sender { + NSString *roundId = self.dataDic[@"roundId"]; + [Api handleAcrossRoomPKInvite:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + dispatch_source_cancel(self.inviteTimer); + self.inviteTimer = nil; + [self removeFromSuperview]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } roomUid:self.roomUid roundId:roundId isAccept:@"1"]; +} + +- (void)rejectButtonAction:(UIButton *)sender { + NSString *roundId = self.dataDic[@"roundId"]; + [Api handleAcrossRoomPKInvite:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + dispatch_source_cancel(self.inviteTimer); + self.inviteTimer = nil; + [self removeFromSuperview]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } roomUid:self.roomUid roundId:roundId isAccept:@"0"]; +} + +#pragma mark - getter +- (void)setDataDic:(NSDictionary *)dataDic { + _dataDic = dataDic; + if (_dataDic.allKeys.count > 0) { + self.inviteView.contentLabel.text = _dataDic[@"inviteRoomTitle"]; + self.timeView.contentLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPAcrossRoomPKInviteView1"), _dataDic[@"pkDuration"]]; + NSString *desc = _dataDic[@"pkDesc"]; + if (desc.length > 0) { + self.descView.hidden = NO; + self.descView.contentLabel.text = desc; + } else { + self.descView.hidden = YES; + } + + if (_inviteTimer != nil) { + dispatch_source_cancel(_inviteTimer); + } + __block NSInteger time = 10; //倒计时时间 + dispatch_queue_t queue = dispatch_get_global_queue(0, 0); + _inviteTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); + @kWeakify(self); + dispatch_source_set_timer(_inviteTimer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行 + dispatch_source_set_event_handler(_inviteTimer, ^{ + if(time <= 0){ //倒计时结束,关闭 + dispatch_source_cancel(self.inviteTimer); + self.inviteTimer = nil; + dispatch_async(dispatch_get_main_queue(), ^{ + @kStrongify(self); + [self removeFromSuperview]; + + }); + }else{ + dispatch_async(dispatch_get_main_queue(), ^{ + @kStrongify(self); + [self.countDownButton setTitle:[NSString stringWithFormat:@"%02ld", time] forState:UIControlStateNormal]; + }); + time--; + } + }); + dispatch_resume(_inviteTimer); + } +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.image = [UIImage imageNamed:@"room_across_pk_invite_bg"]; + } + return _backImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textColor = [UIColor whiteColor]; + _titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightBold]; + _titleLabel.text = YMLocalizedString(@"XPAcrossRoomPKInviteView2"); + } + return _titleLabel; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 18; + } + return _stackView; +} + +- (XPAcrossRoomPKInviteSubView *)inviteView { + if (!_inviteView) { + _inviteView = [[XPAcrossRoomPKInviteSubView alloc] init]; + _inviteView.titleLabel.text = YMLocalizedString(@"XPAcrossRoomPKInviteView3"); + } + return _inviteView; +} + +- (XPAcrossRoomPKInviteSubView *)timeView { + if (!_timeView) { + _timeView = [[XPAcrossRoomPKInviteSubView alloc] init]; + _timeView.titleLabel.text = YMLocalizedString(@"XPAcrossRoomPKInviteView4"); + } + return _timeView; +} + +- (XPAcrossRoomPKInviteSubView *)descView { + if (!_descView) { + _descView = [[XPAcrossRoomPKInviteSubView alloc] init]; + _descView.titleLabel.text = YMLocalizedString(@"XPAcrossRoomPKInviteView5"); + } + return _descView; +} + +- (UIButton *)countDownButton { + if (!_countDownButton) { + _countDownButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_countDownButton setTitleColor:UIColorFromRGB(0xFFF600) forState:UIControlStateNormal]; + _countDownButton.titleLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightMedium]; + [_countDownButton setBackgroundImage:[UIImage imageWithColor:UIColorRGBAlpha(0xFF9813, 0.2)] forState:UIControlStateNormal]; + _countDownButton.layer.masksToBounds = YES; + _countDownButton.layer.cornerRadius = 8; + _countDownButton.layer.borderWidth = 0.5; + _countDownButton.layer.borderColor = UIColorFromRGB(0xFFFAD5).CGColor; + } + return _countDownButton; +} + +- (UIStackView *)operaStackView { + if (!_operaStackView) { + _operaStackView = [[UIStackView alloc] init]; + _operaStackView.axis = UILayoutConstraintAxisHorizontal; + _operaStackView.distribution = UIStackViewDistributionFillEqually; + _operaStackView.alignment = UIStackViewAlignmentFill; + _operaStackView.spacing = 29; + } + return _operaStackView; +} + +- (UIButton *)rejectButton { + if (!_rejectButton) {\ + _rejectButton = [UIButton buttonWithType:UIButtonTypeCustom]; + _rejectButton.layer.masksToBounds = YES; + _rejectButton.layer.cornerRadius = 25 / 2; + [_rejectButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xBCDDFF), UIColorFromRGB(0xD6BEF7)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_rejectButton setTitleColor:UIColorFromRGB(0x4C5AF1) forState:UIControlStateNormal]; + [_rejectButton setTitle:YMLocalizedString(@"XPAcrossRoomPKInviteView6") forState:UIControlStateNormal]; + _rejectButton.titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + [_rejectButton addTarget:self action:@selector(rejectButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _rejectButton; +} + +- (UIButton *)acceptButton { + if (!_acceptButton) { + _acceptButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_acceptButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0x218EFF), UIColorFromRGB(0x7727E4)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_acceptButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_acceptButton setTitle:YMLocalizedString(@"XPAcrossRoomPKInviteView7") forState:UIControlStateNormal]; + _acceptButton.titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + [_acceptButton addTarget:self action:@selector(acceptButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _acceptButton.layer.masksToBounds = YES; + _acceptButton.layer.cornerRadius = 25 / 2; + } + return _acceptButton; + } +@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKPanelUserView.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKPanelUserView.h new file mode 100644 index 00000000..d84506ef --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKPanelUserView.h @@ -0,0 +1,30 @@ +// +// YMAcrossRoomPKPanelUserView.h +// YUMI +// +// Created by YUMI on 2022/1/11. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class AcrossRoomPkRankModel; +typedef NS_ENUM(NSInteger, AcrossRoomPKPanelUserType) { + ///红队贡献 + AcrossRoomPKPanelUserType_Red_Contribute = 1, + ///红队魅力榜 + AcrossRoomPKPanelUserType_Red_Charm, + ///蓝队魅力 + AcrossRoomPKPanelUserType_Blue_Contribute, + ///蓝队贡献 + AcrossRoomPKPanelUserType_Blue_Charm, +}; + +@interface XPAcrossRoomPKPanelUserView : UIView +///类型 +@property (nonatomic,assign) AcrossRoomPKPanelUserType type; + +@property (nonatomic,strong, nullable) AcrossRoomPkRankModel * panelInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKPanelUserView.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKPanelUserView.m new file mode 100644 index 00000000..f58bb57e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKPanelUserView.m @@ -0,0 +1,159 @@ +// +// YMAcrossRoomPKPanelUserView.m +// YUMI +// +// Created by YUMI on 2022/1/11. +// + +#import "XPAcrossRoomPKPanelUserView.h" +///Third +#import +///Tool +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +///Model +#import "AcrossRoomPKPanelModel.h" + +@interface XPAcrossRoomPKPanelUserView () +///排位头饰 +@property (nonatomic, strong) UIImageView *headwearImageView; +///头像 +@property (nonatomic, strong) NetImageView *avatarImageView; +///显示金币 +@property (nonatomic,strong) UIButton *coinButton; + +@end + +@implementation XPAcrossRoomPKPanelUserView + +#pragma mark - Life Style +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.headwearImageView]; + [self addSubview:self.avatarImageView]; + [self addSubview:self.coinButton]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(32); + make.height.mas_equalTo(38); + }]; + + [self.headwearImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.centerY.mas_equalTo(self); + make.height.mas_equalTo(38); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self); + make.bottom.mas_equalTo(self.headwearImageView); + make.height.mas_equalTo(self.avatarImageView.mas_width); + }]; + + [self.coinButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(32); + make.height.mas_equalTo(10); + make.bottom.centerX.mas_equalTo(self); + }]; +} + + +#pragma mark - getters and setters +- (void)setType:(AcrossRoomPKPanelUserType)type { + _type = type; + NSString * headwearName; + NSString * avatarPlaceName; + UIColor * coinColorStart; + UIColor * coinColorEnd; + switch (type) { + case AcrossRoomPKPanelUserType_Red_Contribute: + case AcrossRoomPKPanelUserType_Blue_Contribute: + headwearName = @"room_across_pk_panel_contribute_head"; + coinColorStart = UIColorFromRGB(0xFF9813); + coinColorEnd = UIColorFromRGB(0xFFB22B); + avatarPlaceName = @"room_across_pk_panel_contribute_avatar"; + break; + case AcrossRoomPKPanelUserType_Red_Charm: + case AcrossRoomPKPanelUserType_Blue_Charm: + headwearName = @"room_across_pk_panel_charm_head"; + coinColorStart = UIColorFromRGB(0xFF5FC1); + coinColorEnd = UIColorFromRGB(0xFA81FF); + avatarPlaceName = @"room_across_pk_panel_charm_avatar"; + break; + + default: + break; + } + self.headwearImageView.image = [UIImage imageNamed:headwearName]; + self.avatarImageView.image = [UIImage imageNamed:avatarPlaceName]; + [self.coinButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[coinColorStart, coinColorEnd] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + if (self.tag == 1000) { + self.headwearImageView.hidden = NO; + } else { + self.headwearImageView.hidden = YES; + } + +} + +- (void)setPanelInfo:(AcrossRoomPkRankModel *)panelInfo { + _panelInfo = panelInfo; + if (_panelInfo) { + self.avatarImageView.imageUrl = _panelInfo.avatar; + NSString * amount = _panelInfo.amount.length > 0 ? _panelInfo.amount : @""; + [self.coinButton setTitle:amount forState:UIControlStateNormal]; + self.coinButton.hidden = !amount; + } else { + if (self.type == AcrossRoomPKPanelUserType_Red_Contribute || self.type == AcrossRoomPKPanelUserType_Blue_Contribute) { + self.avatarImageView.image = [UIImage imageNamed:@"room_across_pk_panel_contribute_avatar"]; + } else { + self.avatarImageView.image = [UIImage imageNamed:@"room_across_pk_panel_charm_avatar"]; + } + + [self.coinButton setTitle:@"0" forState:UIControlStateNormal]; + self.coinButton.hidden = YES; + } +} + + +- (UIImageView *)headwearImageView { + if (!_headwearImageView) { + _headwearImageView = [[UIImageView alloc] init]; + _headwearImageView.userInteractionEnabled = YES; + } + return _headwearImageView; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 32 / 2; + } + return _avatarImageView; +} + +- (UIButton *)coinButton { + if (!_coinButton) { + _coinButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_coinButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _coinButton.titleLabel.font = [UIFont systemFontOfSize:9 weight:UIFontWeightMedium]; + _coinButton.layer.masksToBounds = YES; + _coinButton.layer.cornerRadius = 5; + _coinButton.hidden = YES; + } + return _coinButton; +} +@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKPrizeView.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKPrizeView.h new file mode 100644 index 00000000..ce6ab288 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKPrizeView.h @@ -0,0 +1,16 @@ +// +// YMAcrossRoomPKPrizeView.h +// YUMI +// +// Created by YUMI on 2022/1/12. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class AcrossRoomPKPrizeModel; +@interface XPAcrossRoomPKPrizeView : UIView +@property (nonatomic, strong) AcrossRoomPKPrizeModel *data; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKPrizeView.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKPrizeView.m new file mode 100644 index 00000000..6ba0302b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKPrizeView.m @@ -0,0 +1,246 @@ +// +// YMAcrossRoomPKPrizeView.m +// YUMI +// +// Created by YUMI on 2022/1/12. +// 跨房PK横幅 + +#import "XPAcrossRoomPKPrizeView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "UIImage+Utils.h" +///Model +#import "AcrossRoomPKPrizeModel.h" + +@interface XPAcrossRoomPKPrizeView () + +/** bgImageView */ +@property (nonatomic, strong) UIImageView *bgImageView; +///去围观 +@property (nonatomic, strong) UIButton *onLookBtn; +///标题 +@property (nonatomic, strong) UILabel *titleLabel; +///红队头像 +@property (nonatomic, strong) NetImageView *redHeadImageView; +///红队厅名 +@property (nonatomic, strong) UILabel *redRoomTitleLabel; +///中间PKicon +@property (nonatomic, strong) UIImageView *middleImageView; +///蓝队头像 +@property (nonatomic, strong) NetImageView *blueHeadImageView; +///蓝队厅名 +@property (nonatomic, strong) UILabel *blueRoomTitleLabel; + +@end + +@implementation XPAcrossRoomPKPrizeView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initView]; + [self initConstrations]; + } + return self; +} + +- (void)initView { + [self addSubview:self.bgImageView]; + [self addSubview:self.onLookBtn]; + [self addSubview:self.titleLabel]; + + [self addSubview:self.redHeadImageView]; + [self addSubview:self.redRoomTitleLabel]; + + [self addSubview:self.blueHeadImageView]; + [self addSubview:self.blueRoomTitleLabel]; + + [self addSubview:self.middleImageView]; + +} + +- (void)initConstrations { + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; + [self.redHeadImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(12); + make.left.mas_equalTo(22); + make.width.height.mas_equalTo(44); + }]; + [self.redRoomTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.redHeadImageView.mas_bottom).mas_offset(8); + make.centerX.mas_equalTo(self.redHeadImageView); + make.height.mas_equalTo(12); + make.width.mas_equalTo(72); + }]; + [self.middleImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.redHeadImageView); + make.width.mas_equalTo(60); + make.height.mas_equalTo(40); + make.left.mas_equalTo(self.redHeadImageView.mas_right).mas_offset(9); + }]; + [self.blueHeadImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.redHeadImageView); + make.left.mas_equalTo(self.middleImageView.mas_right).mas_offset(9); + make.width.height.mas_equalTo(44); + }]; + [self.blueRoomTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.blueHeadImageView.mas_bottom).mas_offset(8); + make.centerX.mas_equalTo(self.blueHeadImageView); + make.height.mas_equalTo(12); + make.width.mas_equalTo(72); + }]; + [self.onLookBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(50); + make.height.mas_equalTo(18); + make.right.mas_equalTo(-14); + make.bottom.mas_equalTo(-14); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.redHeadImageView); + make.right.mas_equalTo(self.onLookBtn); + make.height.mas_equalTo(14); + make.left.mas_equalTo(self.blueHeadImageView.mas_right).mas_offset(20); + }]; +} + +- (void)setData:(AcrossRoomPKPrizeModel *)data { + _data = data; + self.redHeadImageView.imageUrl = data.winAvatar; + self.blueHeadImageView.imageUrl = data.failAvatar; + self.redRoomTitleLabel.text = data.winTitle; + self.blueRoomTitleLabel.text = data.failTitle; + self.titleLabel.text = data.msg; + if (data.pkType == AcrossRoomPKTypeAnchor) { + self.redRoomTitleLabel.text = data.winNick; + self.blueRoomTitleLabel.text = data.failNick; + self.titleLabel.numberOfLines = 0; + self.titleLabel.font = [UIFont systemFontOfSize:10]; + self.titleLabel.textAlignment = NSTextAlignmentCenter; + self.bgImageView.image = [UIImage imageNamed:@"anchorPK_prize_bg"]; + self.middleImageView.image = [UIImage imageNamed:@"anchorPK_prize_KO"]; + [self.onLookBtn setBackgroundImage:[UIImage imageNamed:@"anchorPK_prize_onLook_bg"] forState:UIControlStateNormal]; + [self.onLookBtn setTitle:YMLocalizedString(@"XPAcrossRoomPKPrizeView0") forState:UIControlStateNormal]; + self.onLookBtn.layer.masksToBounds = NO; + self.onLookBtn.layer.borderWidth = 0; + [self.onLookBtn mas_remakeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(58); + make.height.mas_equalTo(20); + make.right.mas_equalTo(-70); + make.bottom.mas_equalTo(-14); + }]; + [self.titleLabel mas_remakeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.onLookBtn); + make.width.mas_equalTo(152); + make.bottom.mas_equalTo(self.onLookBtn.mas_top).mas_offset(-5); + }]; + [self.redRoomTitleLabel mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.redHeadImageView.mas_bottom).mas_offset(4); + }]; + [self.blueRoomTitleLabel mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.blueHeadImageView.mas_bottom).mas_offset(4); + }]; + [self.middleImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(46); + make.height.mas_equalTo(39); + }]; + } +} + +#pragma mark - getters and setters +- (UIImageView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[UIImageView alloc] init]; + _bgImageView.image = [UIImage imageNamed:@"room_across_pk_prize_bg"]; + _bgImageView.userInteractionEnabled = YES; + } + return _bgImageView; +} + +- (UIButton *)onLookBtn { + if (!_onLookBtn) { + _onLookBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_onLookBtn setBackgroundImage:[UIImage imageWithColor:[DJDKMIMOMColor disableButtonColor]] forState:UIControlStateNormal]; + [_onLookBtn setTitle:YMLocalizedString(@"XPAcrossRoomPKPrizeView1") forState:UIControlStateNormal]; + [_onLookBtn setTitleColor:UIColorFromRGB(0xffffff) forState:UIControlStateNormal]; + _onLookBtn.titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _onLookBtn.userInteractionEnabled = NO; + _onLookBtn.layer.masksToBounds = YES; + _onLookBtn.layer.cornerRadius = 9; + _onLookBtn.layer.borderWidth = 1; + _onLookBtn.layer.borderColor = [UIColor whiteColor].CGColor; + } + return _onLookBtn; +} + +- (NetImageView *)redHeadImageView { + if (!_redHeadImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _redHeadImageView = [[NetImageView alloc] initWithConfig:config]; + _redHeadImageView.layer.cornerRadius = 22; + _redHeadImageView.layer.masksToBounds = YES; + _redHeadImageView.layer.borderWidth = 1; + _redHeadImageView.layer.borderColor = UIColorFromRGB(0xec677d).CGColor; + } + return _redHeadImageView; +} + +- (UILabel *)redRoomTitleLabel { + if (!_redRoomTitleLabel) { + _redRoomTitleLabel = [[UILabel alloc] init]; + _redRoomTitleLabel.textColor = [UIColor whiteColor]; + _redRoomTitleLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + _redRoomTitleLabel.textAlignment = NSTextAlignmentCenter; + } + return _redRoomTitleLabel; +} + +- (UIImageView *)middleImageView { + if (!_middleImageView) { + _middleImageView = [[UIImageView alloc] init]; + _middleImageView.image = [UIImage imageNamed:@"room_across_pk_prize_ko"]; + } + return _middleImageView; +} + +- (NetImageView *)blueHeadImageView { + if (!_blueHeadImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _blueHeadImageView = [[NetImageView alloc] initWithConfig:config]; + _blueHeadImageView.layer.cornerRadius = 22; + _blueHeadImageView.layer.masksToBounds = YES; + _blueHeadImageView.layer.borderWidth = 1; + _blueHeadImageView.layer.borderColor = UIColorFromRGB(0x76c1F5).CGColor; + } + return _blueHeadImageView; +} + +- (UILabel *)blueRoomTitleLabel { + if (!_blueRoomTitleLabel) { + _blueRoomTitleLabel = [[UILabel alloc] init]; + _blueRoomTitleLabel.textColor = [UIColor whiteColor]; + _blueRoomTitleLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + _blueRoomTitleLabel.textAlignment = NSTextAlignmentCenter; + } + return _blueRoomTitleLabel; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textColor = [UIColor whiteColor]; + _titleLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightMedium]; + _titleLabel.lineBreakMode = NSLineBreakByTruncatingMiddle; + } + return _titleLabel; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKResultView.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKResultView.h new file mode 100644 index 00000000..bc9902d7 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKResultView.h @@ -0,0 +1,16 @@ +// +// YMAcrossRoomPKResultView.h +// YUMI +// +// Created by YUMI on 2022/1/12. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class AcrossRoomPKPanelModel; +@interface XPAcrossRoomPKResultView : UIView +@property (nonatomic, strong) AcrossRoomPKPanelModel *data; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKResultView.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKResultView.m new file mode 100644 index 00000000..9f8a50d2 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKResultView.m @@ -0,0 +1,513 @@ +// +// YMAcrossRoomPKResultView.m +// YUMI +// +// Created by YUMI on 2022/1/12. +// + +#import "XPAcrossRoomPKResultView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "TTPopup.h" +#import "NSArray+Safe.h" +///Model +#import "AcrossRoomPKPanelModel.h" + +@interface XPAcrossRoomPKResultView() +/** bgImageView */ +@property (nonatomic, strong) UIImageView *bgImageView; +///关闭 +@property (nonatomic, strong) UIButton *closeBtn; +///内容view +@property (nonatomic, strong) UIView *mainView; +///红队背景 +@property (nonatomic, strong) UIImageView *redBgImageView; +///红队赢icon +@property (nonatomic, strong) UIImageView *redWinIconView; +///红队头像 +@property (nonatomic, strong) NetImageView *redHeadImageView; +///红队厅名 +@property (nonatomic, strong) UILabel *redRoomTitleLabel; +///红队礼物值 +@property (nonatomic, strong) UILabel *redValueLabel; +///中间PKicon +@property (nonatomic, strong) UIImageView *middleImageView; +///蓝队背景 +@property (nonatomic, strong) UIImageView *blueBgImageView; +///蓝队赢icon +@property (nonatomic, strong) UIImageView *blueWinIconView; +///蓝队头像 +@property (nonatomic, strong) NetImageView *blueHeadImageView; +///蓝队厅名 +@property (nonatomic, strong) UILabel *blueRoomTitleLabel; +///蓝队礼物值 +@property (nonatomic, strong) UILabel *blueValueLabel; +///贡献榜背景 +@property (nonatomic, strong) UIImageView *contributeBgImageView; +///贡献榜头像 +@property (nonatomic, strong) NetImageView *contributeAvatar; +///贡献榜头饰 +@property (nonatomic, strong) UIImageView *contributeHeadWear; +///贡献榜昵称 +@property (nonatomic, strong) UILabel *contributeNick; +///贡献值 +@property (nonatomic, strong) UILabel *contributeValue; +///魅力榜背景 +@property (nonatomic, strong) UIImageView *charmBgImageView; +///魅力榜头像 +@property (nonatomic, strong) NetImageView *charmAvatar; +///魅力榜头饰 +@property (nonatomic, strong) UIImageView *charmHeadWear; +///魅力榜昵称 +@property (nonatomic, strong) UILabel *charmNick; +///魅力值 +@property (nonatomic, strong) UILabel *charmValue; + +@end + +@implementation XPAcrossRoomPKResultView + +#pragma mark - life cycle + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initView]; + [self initConstrations]; + } + return self; +} + +- (void)initView { + [self addSubview:self.bgImageView]; + [self addSubview:self.closeBtn]; + [self addSubview:self.mainView]; + + [self.mainView addSubview:self.redBgImageView]; + [self.mainView addSubview:self.redWinIconView]; + [self.mainView addSubview:self.redHeadImageView]; + [self.mainView addSubview:self.redRoomTitleLabel]; + [self.mainView addSubview:self.redValueLabel]; + + [self.mainView addSubview:self.blueBgImageView]; + [self.mainView addSubview:self.blueWinIconView]; + [self.mainView addSubview:self.blueHeadImageView]; + [self.mainView addSubview:self.blueRoomTitleLabel]; + [self.mainView addSubview:self.blueValueLabel]; + + [self.mainView addSubview:self.middleImageView]; + + [self.mainView addSubview:self.contributeBgImageView]; + [self.mainView addSubview:self.contributeAvatar]; + [self.mainView addSubview:self.contributeHeadWear]; + [self.mainView addSubview:self.contributeNick]; + [self.mainView addSubview:self.contributeValue]; + + [self.mainView addSubview:self.charmBgImageView]; + [self.mainView addSubview:self.charmAvatar]; + [self.mainView addSubview:self.charmHeadWear]; + [self.mainView addSubview:self.charmNick]; + [self.mainView addSubview:self.charmValue]; +} + +- (void)initConstrations { + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; + [self.closeBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.right.mas_equalTo(0); + make.width.height.mas_equalTo(22); + }]; + [self.mainView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(120); + make.left.mas_equalTo(15); + make.right.mas_equalTo(-15); + make.bottom.mas_equalTo(-23); + }]; + [self.redBgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(12); + make.left.mas_equalTo(6); + make.width.mas_equalTo(151); + make.height.mas_equalTo(135); + }]; + [self.redWinIconView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(_redBgImageView); + make.left.mas_equalTo(18); + make.width.mas_equalTo(49); + make.height.mas_equalTo(27); + }]; + [self.redHeadImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(34); + make.left.mas_equalTo(47); + make.width.height.mas_equalTo(60); + }]; + [self.redRoomTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.redHeadImageView.mas_bottom).mas_offset(8); + make.centerX.mas_equalTo(self.redHeadImageView); + make.height.mas_equalTo(12); + make.left.mas_equalTo(self.redBgImageView.mas_left).mas_offset(20); + }]; + [self.redValueLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.redHeadImageView); + make.top.mas_equalTo(self.redRoomTitleLabel.mas_bottom).offset(8); + make.left.mas_equalTo(self.redBgImageView.mas_left).mas_offset(20); + }]; + [self.middleImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(60); + make.centerX.mas_equalTo(self.mainView); + make.width.mas_equalTo(70); + make.height.mas_equalTo(49); + }]; + [self.blueBgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(18); + make.right.mas_equalTo(-6); + make.width.mas_equalTo(151); + make.height.mas_equalTo(135); + }]; + [self.blueWinIconView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.blueBgImageView); + make.right.mas_equalTo(-16); + make.width.mas_equalTo(49); + make.height.mas_equalTo(27); + }]; + [self.blueHeadImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(41); + make.right.mas_equalTo(-47); + make.width.height.mas_equalTo(60); + }]; + [self.blueRoomTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.blueHeadImageView.mas_bottom).mas_offset(8); + make.centerX.mas_equalTo(self.blueHeadImageView); + make.height.mas_equalTo(12); + make.left.mas_equalTo(self.blueBgImageView.mas_left).mas_offset(16); + }]; + [self.blueValueLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.blueHeadImageView); + make.top.mas_equalTo(self.blueRoomTitleLabel.mas_bottom).offset(8); + make.left.mas_equalTo(self.blueBgImageView.mas_left).mas_offset(16); + }]; + [self.contributeBgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(0); + make.top.mas_equalTo(self.blueBgImageView.mas_bottom).mas_offset(10); + make.height.mas_equalTo(64); + }]; + [self.contributeAvatar mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(70); + make.bottom.mas_equalTo(self.contributeBgImageView.mas_bottom).mas_offset(-6); + make.width.height.mas_equalTo(44); + }]; + [self.contributeHeadWear mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.contributeAvatar); + make.bottom.mas_equalTo(self.contributeAvatar); + make.width.mas_equalTo(44); + make.height.mas_equalTo(53); + }]; + [self.contributeNick mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.contributeHeadWear.mas_right).mas_offset(7); + make.bottom.mas_equalTo(self.contributeAvatar.mas_centerY).mas_offset(-3); + make.height.mas_equalTo(14); + make.right.mas_equalTo(-20); + }]; + [self.contributeValue mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.contributeNick); + make.top.mas_equalTo(self.contributeNick.mas_bottom).mas_offset(6); + make.height.mas_equalTo(13); + make.right.mas_equalTo(-20); + }]; + + [self.charmBgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(0); + make.top.mas_equalTo(self.contributeBgImageView.mas_bottom).mas_offset(6); + make.height.mas_equalTo(64); + }]; + [self.charmAvatar mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(70); + make.bottom.mas_equalTo(self.charmBgImageView.mas_bottom).mas_offset(-6); + make.width.height.mas_equalTo(44); + }]; + [self.charmHeadWear mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.charmAvatar); + make.bottom.mas_equalTo(self.charmAvatar); + make.width.mas_equalTo(44); + make.height.mas_equalTo(53); + }]; + [self.charmNick mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.charmHeadWear.mas_right).mas_offset(7); + make.bottom.mas_equalTo(self.charmAvatar.mas_centerY).mas_offset(-3); + make.height.mas_equalTo(14); + make.right.mas_equalTo(-20); + }]; + [self.charmValue mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.charmNick); + make.top.mas_equalTo(self.charmNick.mas_bottom).mas_offset(6); + make.height.mas_equalTo(13); + make.right.mas_equalTo(-20); + }]; +} + + +- (void)setData:(AcrossRoomPKPanelModel *)data { + if (data.winUid == data.cUid) {//赢 + self.bgImageView.image = [UIImage imageNamed:@"room_across_pk_result_win_bg"]; + self.contributeBgImageView.image = [UIImage imageNamed:@"room_across_pk_result_win_person_bg"]; + self.charmBgImageView.image = [UIImage imageNamed:@"room_across_pk_result_win_person_bg"]; + [self.closeBtn setImage:[UIImage imageNamed:@"room_across_pk_result_win_close"] forState:UIControlStateNormal]; + self.redWinIconView.hidden = NO; + self.blueWinIconView.hidden = YES; + } else if (data.winUid == data.aUid) {//输 + self.bgImageView.image = [UIImage imageNamed:@"room_across_pk_result_fail_bg"]; + self.contributeBgImageView.image = [UIImage imageNamed:@"room_across_pk_result_fail_person_bg"]; + self.charmBgImageView.image = [UIImage imageNamed:@"room_across_pk_result_fail_person_bg"]; + [self.closeBtn setImage:[UIImage imageNamed:@"room_across_pk_result_fail_close"] forState:UIControlStateNormal]; + self.redWinIconView.hidden = YES; + self.blueWinIconView.hidden = NO; + } else {//平局 + self.bgImageView.image = [UIImage imageNamed:@"room_across_pk_result_tie_bg"]; + self.contributeBgImageView.image = [UIImage imageNamed:@"room_across_pk_result_tie_person_bg"]; + self.charmBgImageView.image = [UIImage imageNamed:@"room_across_pk_result_tie_person_bg"]; + [self.closeBtn setImage:[UIImage imageNamed:@"room_across_pk_result_tie_close"] forState:UIControlStateNormal]; + self.redWinIconView.hidden = YES; + self.blueWinIconView.hidden = YES; + } + self.redHeadImageView.imageUrl = data.cAvatar; + self.blueHeadImageView.imageUrl = data.aAvatar; + self.redRoomTitleLabel.text = data.cTitle; + self.blueRoomTitleLabel.text = data.aTitle; + self.redValueLabel.text = [NSString stringWithFormat:@"%lld", data.cAmount]; + self.blueValueLabel.text = [NSString stringWithFormat:@"%lld", data.aAmount]; + if (data.csRank.count > 0) {//有贡献 + AcrossRoomPkRankModel *contributeInfo = [data.csRank safeObjectAtIndex1:0]; + self.contributeNick.text = contributeInfo.nick ? contributeInfo.nick : @""; + self.contributeValue.text = [NSString stringWithFormat:@"神豪值:%@", contributeInfo.amount? contributeInfo.amount : @""]; + self.contributeAvatar.imageUrl = contributeInfo.avatar; + } + + if (data.crRank.count > 0) { + AcrossRoomPkRankModel *charmInfo = [data.crRank safeObjectAtIndex1:0]; + self.charmNick.text = charmInfo.nick ? charmInfo.nick : @""; + self.charmValue.text = [NSString stringWithFormat:@"魅力值:%@", charmInfo.amount? charmInfo.amount : @""]; + self.charmAvatar.imageUrl = charmInfo.avatar; + } +} + +- (void)onCloseBtnClick:(UIButton *)btn { + [TTPopup dismiss]; +} + +#pragma mark - getters and setters +- (UIImageView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[UIImageView alloc] init]; + _bgImageView.image = [UIImage imageNamed:@"room_across_pk_result_win_bg"]; + } + return _bgImageView; +} + +- (UIButton *)closeBtn { + if (!_closeBtn) { + _closeBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_closeBtn addTarget:self action:@selector(onCloseBtnClick:) forControlEvents:UIControlEventTouchUpInside]; + } + return _closeBtn; +} + +- (UIView *)mainView { + if (!_mainView) { + _mainView = [[UIView alloc] init]; + } + return _mainView; +} +- (UIImageView *)redBgImageView { + if (!_redBgImageView) { + _redBgImageView = [[UIImageView alloc] init]; + _redBgImageView.image = [UIImage imageNamed:@"room_across_pk_result_red_bg"]; + } + return _redBgImageView; +} +- (UIImageView *)redWinIconView { + if (!_redWinIconView) { + _redWinIconView = [[UIImageView alloc] init]; + _redWinIconView.image = [UIImage imageNamed:@"room_across_pk_result_win_icon"]; + } + return _redWinIconView; +} + +- (NetImageView *)redHeadImageView { + if (!_redHeadImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _redHeadImageView = [[NetImageView alloc] initWithConfig:config]; + _redHeadImageView.layer.cornerRadius = 30; + _redHeadImageView.layer.masksToBounds = YES; + _redHeadImageView.layer.borderWidth = 1; + _redHeadImageView.layer.borderColor = [UIColor whiteColor].CGColor; + } + return _redHeadImageView; +} + +- (UILabel *)redRoomTitleLabel { + if (!_redRoomTitleLabel) { + _redRoomTitleLabel = [[UILabel alloc] init]; + _redRoomTitleLabel.textColor = [UIColor whiteColor]; + _redRoomTitleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _redRoomTitleLabel.textAlignment = NSTextAlignmentCenter; + } + return _redRoomTitleLabel; +} +- (UILabel *)redValueLabel { + if (!_redValueLabel) { + _redValueLabel = [[UILabel alloc] init]; + _redValueLabel.textColor = [UIColor whiteColor]; + _redValueLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; + _redValueLabel.textAlignment = NSTextAlignmentCenter; + } + return _redValueLabel; +} + +- (UIImageView *)middleImageView { + if (!_middleImageView) { + _middleImageView = [[UIImageView alloc] init]; + _middleImageView.image = [UIImage imageNamed:@"room_across_pk_result_pk_icon"]; + } + return _middleImageView; +} + +- (UIImageView *)blueBgImageView { + if (!_blueBgImageView) { + _blueBgImageView = [[UIImageView alloc] init]; + _blueBgImageView.image = [UIImage imageNamed:@"room_across_pk_result_win_blue_bg"]; + } + return _blueBgImageView; +} +- (UIImageView *)blueWinIconView { + if (!_blueWinIconView) { + _blueWinIconView = [[UIImageView alloc] init]; + _blueWinIconView.image = [UIImage imageNamed:@"room_across_pk_result_win_icon"]; + } + return _blueWinIconView; +} + +- (NetImageView *)blueHeadImageView { + if (!_blueHeadImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _blueHeadImageView = [[NetImageView alloc] initWithConfig:config]; + _blueHeadImageView.layer.masksToBounds = YES; + _blueHeadImageView.layer.cornerRadius = 30; + _blueHeadImageView.layer.borderWidth = 1; + _blueHeadImageView.layer.borderColor = [UIColor whiteColor].CGColor; + } + return _blueHeadImageView; +} + +- (UILabel *)blueRoomTitleLabel { + if (!_blueRoomTitleLabel) { + _blueRoomTitleLabel = [[UILabel alloc] init]; + _blueRoomTitleLabel.textColor = [UIColor whiteColor]; + _blueRoomTitleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _blueRoomTitleLabel.textAlignment = NSTextAlignmentCenter; + } + return _blueRoomTitleLabel; +} +- (UILabel *)blueValueLabel { + if (!_blueValueLabel) { + _blueValueLabel = [[UILabel alloc] init]; + _blueValueLabel.textColor = [UIColor whiteColor]; + _blueValueLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; + _blueValueLabel.textAlignment = NSTextAlignmentCenter; + } + return _blueValueLabel; +} + +- (UIImageView *)contributeBgImageView { + if (!_contributeBgImageView) { + _contributeBgImageView = [[UIImageView alloc] init]; + } + return _contributeBgImageView; +} + +- (NetImageView *)contributeAvatar { + if (!_contributeAvatar) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _contributeAvatar = [[NetImageView alloc] initWithConfig:config]; + _contributeAvatar.layer.masksToBounds = YES; + _contributeAvatar.layer.cornerRadius = 22; + } + return _contributeAvatar; +} + +- (UIImageView *)contributeHeadWear { + if (!_contributeHeadWear) { + _contributeHeadWear = [[UIImageView alloc] init]; + _contributeHeadWear.image = [UIImage imageNamed:@"room_across_pk_panel_contribute_head"]; + } + return _contributeHeadWear; +} +- (UILabel *)contributeNick { + if (!_contributeNick) { + _contributeNick = [[UILabel alloc] init]; + _contributeNick.textColor = [UIColor whiteColor]; + _contributeNick.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + } + return _contributeNick; +} + +- (UILabel *)contributeValue { + if (!_contributeValue) { + _contributeValue = [[UILabel alloc] init]; + _contributeValue.textColor = [UIColor whiteColor]; + _contributeValue.font = [UIFont systemFontOfSize:13]; + } + return _contributeValue; +} + +- (UIImageView *)charmBgImageView { + if (!_charmBgImageView) { + _charmBgImageView = [[UIImageView alloc] init]; + } + return _charmBgImageView; +} + +- (NetImageView *)charmAvatar { + if (!_charmAvatar) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _charmAvatar = [[NetImageView alloc] initWithConfig:config]; + _charmAvatar.layer.masksToBounds = YES; + _charmAvatar.layer.cornerRadius = 22; + } + return _charmAvatar; +} + +- (UIImageView *)charmHeadWear { + if (!_charmHeadWear) { + _charmHeadWear = [[UIImageView alloc] init]; + _charmHeadWear.image = [UIImage imageNamed:@"room_across_pk_panel_charm_head"]; + } + return _charmHeadWear; +} +- (UILabel *)charmNick { + if (!_charmNick) { + _charmNick = [[UILabel alloc] init]; + _charmNick.textColor = [UIColor whiteColor]; + _charmNick.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + } + return _charmNick; +} + +- (UILabel *)charmValue { + if (!_charmValue) { + _charmValue = [[UILabel alloc] init]; + _charmValue.textColor = [UIColor whiteColor]; + _charmValue.font = [UIFont systemFontOfSize:13]; + } + return _charmValue; +} +@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKRuleView.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKRuleView.h new file mode 100644 index 00000000..9668193f --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKRuleView.h @@ -0,0 +1,16 @@ +// +// YMAcrossRoomPKRuleView.h +// YUMI +// +// Created by YUMI on 2022/1/10. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPAcrossRoomPKRuleView : UIView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKRuleView.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKRuleView.m new file mode 100644 index 00000000..0cd6926b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKRuleView.m @@ -0,0 +1,99 @@ +// +// YMAcrossRoomPKRuleView.m +// YUMI +// +// Created by YUMI on 2022/1/10. +// + +#import "XPAcrossRoomPKRuleView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "TTPopup.h" + +@interface XPAcrossRoomPKRuleView () +///标题 +@property (nonatomic, strong) UILabel *titleLabel; +///显示内容 +@property (nonatomic, strong) UITextView *ruleTextView; +///背景 +@property (nonatomic, strong) UIImageView *backgroundImageView; + +@end + +@implementation XPAcrossRoomPKRuleView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backgroundImageView]; + [self addSubview:self.titleLabel]; + [self addSubview:self.ruleTextView]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(300, 300)); + }]; + + [self.backgroundImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(7); + make.centerX.mas_equalTo(self); + make.height.mas_equalTo(18); + }]; + [self.ruleTextView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(23); + make.left.mas_equalTo(17); + make.right.mas_equalTo(-18); + make.bottom.mas_equalTo(-17); + }]; +} + +#pragma mark - Event Response +- (void)closeBtnClick:(UIButton *)button { + [TTPopup dismiss]; +} + +#pragma mark - Getters And Setters +- (UIImageView *)backgroundImageView { + if (!_backgroundImageView) { + _backgroundImageView = [[UIImageView alloc] init]; + _backgroundImageView.image = [UIImage imageNamed:@"room_across_pk_rule_bg"]; + } + return _backgroundImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = @"如何开启跨房PK"; + _titleLabel.textColor = [UIColor whiteColor]; + _titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightBold]; + } + return _titleLabel; +} + +- (UITextView *)ruleTextView { + if (!_ruleTextView) { + _ruleTextView = [[UITextView alloc] init]; + _ruleTextView.textColor = UIColorFromRGB(0xffffff); + _ruleTextView.backgroundColor = [UIColor clearColor]; + _ruleTextView.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _ruleTextView.scrollEnabled = NO; + _ruleTextView.editable = NO; + _ruleTextView.text = @"1)只有牌照房房主和超管才可以发起跨房pk,一次只能选择一个牌照房发起;\n2)只有房主和超管才可以接受或拒绝跨房pk请求,若10秒内不点击pk邀请弹窗,弹窗消失,视为自动拒绝;\n3)发起pk时需选择pk时间和pk对象,自定义时间下限为5,上限为180,只能填写整数;\n4)pk发起后,未到pk时间无法自行结束,若有特殊情况需提前结束可联系客服,但本场pk不算胜负。\n"; + } + return _ruleTextView; +} +@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrpssRoomPKPanelView.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrpssRoomPKPanelView.h new file mode 100644 index 00000000..9ff6faf3 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrpssRoomPKPanelView.h @@ -0,0 +1,33 @@ +// +// YMAcrpssRoomPKPanelView.h +// YUMI +// +// Created by YUMI on 2022/1/11. +// 跨房PK 正在Pk的面板数据 + +#import + +NS_ASSUME_NONNULL_BEGIN +@class AcrossRoomPKPanelModel, XPAcrpssRoomPKPanelView; +@protocol XPAcrpssRoomPKPanelViewDelegate +///展示用户卡片 +- (void)xPAcrpssRoomPKPanelView:(XPAcrpssRoomPKPanelView *)view showUserCard:(NSString *)uid; +///送礼物 +- (void)xPAcrpssRoomPKPanelView:(XPAcrpssRoomPKPanelView *)view sendGiftToUser:(NSString *)uid; +///去房间 +- (void)xPAcrpssRoomPKPanelView:(XPAcrpssRoomPKPanelView *)view onlookRoom:(NSString *)roomUid; + +@end + +@interface XPAcrpssRoomPKPanelView : UIView +///开启pk +- (void)openCountdownWithTime:(long)time; +///pk 信息 +@property (nonatomic,strong, nullable) AcrossRoomPKPanelModel *pkPanelInfo; +///代理 +@property (nonatomic,weak) id delegate; +///重置数据 +- (void)resetAcrossPKViewData; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrpssRoomPKPanelView.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrpssRoomPKPanelView.m new file mode 100644 index 00000000..2b990441 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrpssRoomPKPanelView.m @@ -0,0 +1,976 @@ +// +// YMAcrpssRoomPKPanelView.m +// YUMI +// +// Created by YUMI on 2022/1/11. +// + +#import "XPAcrpssRoomPKPanelView.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "YUMIMacroUitls.h" +#import "UIImage+Utils.h" +#import "UIButton+EnlargeTouchArea.h" +#import "Timestamp.h" +#import "NSArray+Safe.h" +///Model +#import "UserInfoModel.h" +#import "AcrossRoomPKPanelModel.h" +///View +#import "XPAcrossRoomPKPanelUserView.h" + +@interface XPAcrpssRoomPKPanelView () +///背景 +@property (nonatomic, strong) UIImageView *backImageView; +#pragma mark - 规则的view +///帮助按钮 +@property (nonatomic, strong) UIButton *helpButton; +///规则背景 +@property (nonatomic, strong) UIImageView *ruleBgImageView; +///规则 +@property (nonatomic, strong) UITextView *ruleTextView; +///显示倒计时 +@property (nonatomic, strong) UILabel *timeLabel; +///最大的容器 +@property (nonatomic,strong) UIStackView *stackView; +#pragma mark - 队伍的view +///队伍的容器 +@property (nonatomic,strong) UIView * teamContainerView; +///红队厅名 +@property (nonatomic, strong) UILabel *redTitleLabel; +/// 红队头像 +@property (nonatomic, strong) NetImageView *redAvatarImageView; +/// 助攻 +@property (nonatomic, strong) UIButton *assistButton; +///蓝队厅名 +@property (nonatomic, strong) UILabel *blueTitleLabel; +/// 蓝队头像 +@property (nonatomic, strong) NetImageView *blueAvatarImageView; +/// 去围观 +@property (nonatomic, strong) UIButton *onlookButton; +#pragma mark -进度条内容 +///PK最外面的容器 +@property (nonatomic, strong) UIView *progressView; +///PK条容器 +@property (nonatomic, strong) UIView *progressContentView; +///红方的进度图片 +@property (nonatomic, strong) UIImageView *redCountImageView; +///红方的礼物值 +@property (nonatomic, strong) UILabel *redCountLabel; +///动画管理类 +@property (strong, nonatomic) SVGAParser *parser; +///中间进度的动画 +@property (nonatomic, strong) SVGAImageView *svgDisplayView; +///蓝方的进度图片 +@property (nonatomic, strong) UIImageView *buleCountImageView; +///蓝方的礼物值 +@property (nonatomic, strong) UILabel *buleCountLabel; +#pragma mark - 展开更多 +///展开 +@property (nonatomic,strong) UIButton *foldButton; +#pragma mark - 队伍的队友的view +/// +@property (nonatomic,strong) UIStackView *userStackView; +///贡献的容器 +@property (nonatomic,strong) UIStackView *contributeStackView; +///红方的贡献用户容器 +@property (nonatomic,strong) UIStackView *redContributeStackView; +///蓝方的贡献用户容器 +@property (nonatomic,strong) UIStackView *blueContributeStackView; +///神豪logo +@property (nonatomic,strong) UIButton *contributeButton; +///魅力的容器 +@property (nonatomic,strong) UIStackView *charmStackView; +///红方的魅力用户容器 +@property (nonatomic,strong) UIStackView *redCharmStackView; +///蓝方的魅力用户容器 +@property (nonatomic,strong) UIStackView *blueCharmStackView; +///神豪logo +@property (nonatomic,strong) UIButton *charmButton; +///倒计时 +@property (strong, nonatomic) dispatch_source_t timer; +@end + +@implementation XPAcrpssRoomPKPanelView + +#pragma mark - life cycle + +- (void)dealloc { + NSLog(@"销毁了"); +} + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(changeLocation:)]; + // 这里的delaysTouchesBegan属性很明显就是对touchBegin方法是否进行延迟, + // YES表示延迟,即在系统未识别出来手势为什么手势时先不要调用touchesBegan 方法; + // NO表示不延迟,即在系统未识别出来手势为什么手势时会先调用touchesBegan 方法; + pan.delaysTouchesBegan = YES; + [self addGestureRecognizer:pan]; + + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Public Method +- (void)resetAcrossPKViewData { + if (self.timer) { + dispatch_source_cancel(self.timer); + self.timer = nil; + } + self.pkPanelInfo = nil; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backImageView]; + + [self.backImageView addSubview:self.stackView]; + [self.backImageView addSubview:self.helpButton]; + [self.backImageView addSubview:self.timeLabel]; + [self.backImageView addSubview:self.ruleBgImageView]; + ///规则 + [self.ruleBgImageView addSubview:self.ruleTextView]; + ///队伍 折叠图片 用户的容器 + [self.stackView addArrangedSubview:self.teamContainerView]; + [self.stackView addArrangedSubview:self.foldButton]; + [self.stackView addArrangedSubview:self.userStackView]; + ///pk双方的内容 + [self.teamContainerView addSubview:self.redTitleLabel]; + [self.teamContainerView addSubview:self.redAvatarImageView]; + [self.teamContainerView addSubview:self.assistButton]; + [self.teamContainerView addSubview:self.blueTitleLabel]; + [self.teamContainerView addSubview:self.blueAvatarImageView]; + [self.teamContainerView addSubview:self.onlookButton]; + [self.teamContainerView addSubview:self.progressView]; + ///进度条 + [self.progressView addSubview:self.progressContentView]; + [self.progressView addSubview:self.svgDisplayView]; + [self.progressContentView addSubview:self.redCountImageView]; + [self.progressContentView addSubview:self.buleCountImageView]; + [self.progressContentView addSubview:self.redCountLabel]; + [self.progressContentView addSubview:self.buleCountLabel]; + ///PK双方的用户的View + [self.userStackView addArrangedSubview:self.contributeStackView]; + [self.userStackView addArrangedSubview:self.charmStackView]; + ///贡献榜 + [self.contributeStackView addArrangedSubview:self.redContributeStackView]; + [self.contributeStackView addArrangedSubview:self.contributeButton]; + [self.contributeStackView addArrangedSubview:self.blueContributeStackView]; + ///魅力榜 + [self.charmStackView addArrangedSubview:self.redCharmStackView]; + [self.charmStackView addArrangedSubview:self.charmButton]; + [self.charmStackView addArrangedSubview:self.blueCharmStackView]; + [self initUserSubViews]; + NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/crossRoomPk_progress.svga", API_Image_URL]; + [self.parser parseWithURL:[NSURL URLWithString:anatomiser1Name] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { + self.svgDisplayView.loops = INT_MAX; + self.svgDisplayView.clearsAfterStop = NO; + self.svgDisplayView.videoItem = videoItem; + [self.svgDisplayView startAnimation]; + } failureBlock:^(NSError * _Nonnull error) { + + }]; +} + +- (void)initUserSubViews { + for (int i = 0; i < 3; i++) { + XPAcrossRoomPKPanelUserView * userView = [[XPAcrossRoomPKPanelUserView alloc] init]; + userView.tag = (1000 + i); + userView.type = AcrossRoomPKPanelUserType_Red_Contribute; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapUserRecognizer:)]; + [userView addGestureRecognizer:tap]; + [self.redContributeStackView addArrangedSubview:userView]; + } + + for (int i = 0; i < 3; i++) { + XPAcrossRoomPKPanelUserView * userView = [[XPAcrossRoomPKPanelUserView alloc] init]; + userView.tag = (1000 + i); + userView.type = AcrossRoomPKPanelUserType_Blue_Contribute; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapUserRecognizer:)]; + [userView addGestureRecognizer:tap]; + [self.blueContributeStackView addArrangedSubview:userView]; + } + + for (int i = 0; i < 3; i++) { + XPAcrossRoomPKPanelUserView * userView = [[XPAcrossRoomPKPanelUserView alloc] init]; + userView.tag = (1000 + i); + userView.type = AcrossRoomPKPanelUserType_Red_Charm; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapUserRecognizer:)]; + [userView addGestureRecognizer:tap]; + [self.redCharmStackView addArrangedSubview:userView]; + } + + for (int i = 0; i < 3; i++) { + XPAcrossRoomPKPanelUserView * userView = [[XPAcrossRoomPKPanelUserView alloc] init]; + userView.tag = (1000 + i); + userView.type = AcrossRoomPKPanelUserType_Blue_Charm; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapUserRecognizer:)]; + [userView addGestureRecognizer:tap]; + [self.blueCharmStackView addArrangedSubview:userView]; + } +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(339); + make.height.mas_equalTo(233); + }]; + + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self); + make.bottom.mas_equalTo(self.stackView).offset(17); + }]; + [self.helpButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(145); + make.top.mas_equalTo(8); + make.width.height.mas_equalTo(16); + }]; + [self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.helpButton); + make.centerX.mas_equalTo(self.helpButton.mas_right).offset(66); + }]; + + [self.ruleBgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(71); + make.top.mas_equalTo(33); + make.width.mas_equalTo(244); + make.height.mas_equalTo(177); + }]; + [self.ruleTextView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(10); + make.right.mas_equalTo(-14); + make.top.mas_equalTo(24); + make.bottom.mas_equalTo(-15); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.backImageView).offset(28); + make.left.right.mas_equalTo(self.backImageView); + }]; + + [self.teamContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(88); + make.width.mas_equalTo(self.backImageView); + }]; + + [self.foldButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(16, 8)); + }]; + + [self.userStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(38 * 2 + 8); + make.left.right.mas_equalTo(self.stackView).inset(12); + }]; + + [self.redTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.teamContainerView).offset(12); + make.top.mas_equalTo(self.teamContainerView).offset(12); + make.right.mas_lessThanOrEqualTo(self.teamContainerView.mas_centerX); + }]; + + [self.redAvatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.teamContainerView).offset(30); + make.top.mas_equalTo(self.redTitleLabel.mas_bottom).offset(11); + make.width.height.mas_equalTo(44); + }]; + + [self.assistButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.redAvatarImageView.mas_right).offset(8); + make.top.mas_equalTo(self.redAvatarImageView); + make.width.mas_equalTo(50); + make.height.mas_equalTo(18); + }]; + + [self.blueTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.redTitleLabel); + make.right.mas_equalTo(-12); + make.left.mas_lessThanOrEqualTo(self.teamContainerView.mas_centerX); + }]; + + [self.blueAvatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.teamContainerView).offset(-30); + make.centerY.mas_equalTo(self.redAvatarImageView); + make.width.height.mas_equalTo(44); + }]; + + [self.onlookButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.blueAvatarImageView.mas_left).offset(-8); + make.centerY.mas_equalTo(self.assistButton); + make.width.mas_equalTo(50); + make.height.mas_equalTo(18); + }]; + + ///进度条 + [self.progressView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.teamContainerView); + make.width.mas_equalTo(174); + make.height.mas_equalTo(12); + make.top.mas_equalTo(self.assistButton.mas_bottom).offset(8); + }]; + + [self.progressContentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.progressView); + }]; + + [self.redCountImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(0); + make.height.mas_equalTo(12); + make.top.mas_equalTo(0); + make.right.mas_equalTo(self.buleCountImageView.mas_left); + }]; + + [self.redCountLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.progressContentView.mas_left).offset(6); + make.centerY.mas_equalTo(self.progressContentView); + }]; + + [self.svgDisplayView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.buleCountImageView.mas_left); + make.bottom.mas_equalTo(self.progressView.mas_bottom); + make.height.mas_equalTo(27); + make.width.mas_equalTo(18); + }]; + + [self.buleCountImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(0); + make.height.mas_equalTo(12); + make.centerY.mas_equalTo(self.redCountImageView); + make.width.mas_equalTo(174 * 0.5); + }]; + + [self.buleCountLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.progressContentView.mas_right).offset(-6); + make.centerY.mas_equalTo(self.progressContentView); + }]; + + [self.contributeStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(38); + }]; + + [self.charmStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(38); + }]; + + [self.contributeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(53, 22)); + }]; + + [self.charmButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(53, 22)); + }]; + + [self.redContributeStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(self.blueContributeStackView); + }]; + + [self.redCharmStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(self.blueCharmStackView); + }]; +} +#pragma mark - 倒计时 +- (void)openCountdownWithTime:(long)time { + __block long tempTime = time; //倒计时时间 + if (self.timer == nil) { + @kWeakify(self); + dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); + self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); + dispatch_source_set_timer(self.timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行 + dispatch_source_set_event_handler(self.timer, ^{ + @kStrongify(self); + if(tempTime <= 0){ //倒计时结束,关闭 + dispatch_source_cancel(self.timer); + self.timer = nil; + dispatch_async(dispatch_get_main_queue(), ^{ + self.timeLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; + self.timeLabel.text = YMLocalizedString(@"XPAcrpssRoomPKPanelView0"); + }); + } else { + dispatch_async(dispatch_get_main_queue(), ^{ + //设置按钮显示读秒效果 + [self acrossRoomPKCutdownOpen:tempTime]; + }); + tempTime--; + } + }); + dispatch_resume(self.timer); + } +} + +///房间pk, 倒计时回调 +- (void)acrossRoomPKCutdownOpen:(NSInteger)time { + NSInteger minute = time / 60; + NSInteger second = (time % 60); + NSInteger hour = time/3600; + NSString *timeStr; + if (hour > 0) { + minute = minute % 60; + timeStr = [NSString stringWithFormat:@"%02zd:%02zd:%02zd", hour, minute, second]; + } else { + timeStr = [NSString stringWithFormat:@"%02zd:%02zd", minute, second]; + } + self.timeLabel.text = timeStr; + if (time <= 30) { + self.timeLabel.textColor = UIColorFromRGB(0xFF87A1); + } else { + self.timeLabel.textColor = UIColorFromRGB(0xFFF600); + } +} + +#pragma mark - Event Response +- (void)foldButtonAction:(UIButton *)sender { + sender.selected = !sender.selected; + if (sender.isSelected) { + self.userStackView.hidden = NO; + [self mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(233); + }]; + self.backImageView.image = [UIImage imageNamed:@"room_across_pk_panel_bg"]; + [UIView animateWithDuration:0.5 animations:^{ + self.foldButton.transform = CGAffineTransformIdentity; + }]; + } else { + self.userStackView.hidden = YES; + self.backImageView.image = [UIImage imageNamed:@"room_across_pk_panel_small_bg"]; + [self mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(137); + }]; + [UIView animateWithDuration:0.5 animations:^{ + self.foldButton.transform = CGAffineTransformMakeRotation(M_PI); + }]; + } +} + +- (void)helpButtonAction:(UIButton *)sender { + sender.selected = !sender.selected; + self.ruleBgImageView.hidden = !sender.selected; +} + +- (void)tapRedAvatarRecognizer:(UITapGestureRecognizer *)ges { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPAcrpssRoomPKPanelView:showUserCard:)]) { + [self.delegate xPAcrpssRoomPKPanelView:self showUserCard:self.pkPanelInfo.cUid]; + } +} + +- (void)tapBlueAvatarRecognizer:(UITapGestureRecognizer *)ges { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPAcrpssRoomPKPanelView:showUserCard:)]) { + [self.delegate xPAcrpssRoomPKPanelView:self showUserCard:self.pkPanelInfo.aUid]; + } +} + +- (void)assistButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPAcrpssRoomPKPanelView:sendGiftToUser:)]) { + [self.delegate xPAcrpssRoomPKPanelView:self sendGiftToUser:self.pkPanelInfo.cUid]; + } +} + +- (void)onlookButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPAcrpssRoomPKPanelView:onlookRoom:)]) { + [self.delegate xPAcrpssRoomPKPanelView:self onlookRoom:self.pkPanelInfo.aUid]; + } +} + +- (void)tapUserRecognizer:(UITapGestureRecognizer *)tap { + XPAcrossRoomPKPanelUserView * userView= (XPAcrossRoomPKPanelUserView *)tap.view; + if (userView.panelInfo && userView.panelInfo.uid.length > 0 && self.delegate && [self.delegate respondsToSelector:@selector(xPAcrpssRoomPKPanelView:showUserCard:)]) { + [self.delegate xPAcrpssRoomPKPanelView:self showUserCard:userView.panelInfo.uid]; + } +} + +- (void)changeLocation:(UIPanGestureRecognizer*)p { + // 就是悬浮小球底下的那个的window,就是APPdelegete里面的那个window属性 + // 获取正在显示的那个界面的Window,http://www.jianshu.com/p/d23763e60e94 + UIWindow *appWindow = [UIApplication sharedApplication].delegate.window; + + CGPoint panPoint = [p locationInView:appWindow]; + if (p.state == UIGestureRecognizerStateBegan) { + self.alpha = 1; + } else if(p.state == UIGestureRecognizerStateChanged) { + self.center = CGPointMake(panPoint.x, panPoint.y); + } else if(p.state == UIGestureRecognizerStateEnded + || p.state == UIGestureRecognizerStateCancelled) { + self.alpha = 1; + CGFloat touchWidth = self.frame.size.width; + CGFloat touchHeight = self.frame.size.height; + CGFloat screenWidth = [[UIScreen mainScreen] bounds].size.width; + CGFloat screenHeight = [[UIScreen mainScreen] bounds].size.height; + // fabs 是取绝对值的意思 + CGFloat left = fabs(panPoint.x); + CGFloat right = fabs(screenWidth - left); + CGFloat top = fabs(panPoint.y); + CGFloat bottom = fabs(screenHeight - top); + CGFloat minSpace = 0; + minSpace = MIN(MIN(MIN(top, left), bottom), right); + CGPoint newCenter; + CGFloat targetY = 0; + //校正Y + if (panPoint.y < 15 + touchHeight / 2.0) { + targetY = 15 + touchHeight / 2.0; + }else if (panPoint.y > (screenHeight - touchHeight / 2.0 - 15)) { + targetY = screenHeight - touchHeight / 2.0 - 15; + }else{ + targetY = panPoint.y; + } + + if (minSpace == left) { + newCenter = CGPointMake(15+touchWidth/2.0, targetY); + }else if (minSpace == right) { + newCenter = CGPointMake(screenWidth - touchWidth/2.0 - 15, targetY); + }else if (minSpace == top) { + newCenter = CGPointMake(panPoint.x, touchWidth / 3); + }else { + newCenter = CGPointMake(panPoint.x, screenHeight - touchWidth / 3); + } + [UIView animateWithDuration:0.25 animations:^{ + if ((newCenter.y + self.frame.size.height / 2) > (KScreenHeight - kSafeAreaBottomHeight - 44)) { + self.center = CGPointMake(newCenter.x, KScreenHeight - self.frame.size.height / 2 - kSafeAreaBottomHeight - 44); + }else { + self.center = newCenter; + } + }]; + } +} + +#pragma mark - getters and setters +- (void)setPkPanelInfo:(AcrossRoomPKPanelModel *)pkPanelInfo { + _pkPanelInfo = pkPanelInfo; + if (_pkPanelInfo) { + [Timestamp getInternetDateWithSuccess:^(NSTimeInterval timeInterval) { + timeInterval = timeInterval * 1000; + long aTime = (pkPanelInfo.endTime - timeInterval) / 1000; + [self openCountdownWithTime:aTime]; + } failure:^(NSError * _Nonnull error) { + NSDate *datenow = [NSDate date];//现在时间 + long time2 = (long)([datenow timeIntervalSince1970]*1000); + long aTime = (pkPanelInfo.endTime - time2) / 1000; + [self openCountdownWithTime:aTime]; + }]; + + if (_pkPanelInfo.cTitle.length > 7) { + _pkPanelInfo.cTitle = [NSString stringWithFormat:@"%@…", [_pkPanelInfo.cTitle substringToIndex:7]]; + } + + if (_pkPanelInfo.aTitle.length > 7) { + _pkPanelInfo.aTitle = [NSString stringWithFormat:@"%@…", [_pkPanelInfo.aTitle substringToIndex:7]]; + } + + self.redTitleLabel.text = _pkPanelInfo.cTitle; + self.redAvatarImageView.imageUrl = _pkPanelInfo.cAvatar; + self.redCountLabel.text = [NSString stringWithFormat:@"%lld", _pkPanelInfo.cAmount]; + self.blueTitleLabel.text = _pkPanelInfo.aTitle; + self.blueAvatarImageView.imageUrl = _pkPanelInfo.aAvatar; + self.buleCountLabel.text = [NSString stringWithFormat:@"%lld", _pkPanelInfo.aAmount]; + for (int i = 0; i<_pkPanelInfo.csRank.count; i++) { + AcrossRoomPkRankModel * rankModel = [_pkPanelInfo.csRank safeObjectAtIndex1:i]; + if (i >= self.redContributeStackView.subviews.count) { + break; + } + XPAcrossRoomPKPanelUserView *userView = self.redContributeStackView.subviews[i]; + userView.panelInfo = rankModel; + } + for (int i = 0; i<_pkPanelInfo.crRank.count; i++) { + AcrossRoomPkRankModel * rankModel = [_pkPanelInfo.crRank safeObjectAtIndex1:i]; + if (i >= self.redCharmStackView.subviews.count) { + break; + } + XPAcrossRoomPKPanelUserView *userView = self.redCharmStackView.subviews[i]; + userView.panelInfo = rankModel; + } + + for (int i = 0; i<_pkPanelInfo.asRank.count; i++) { + AcrossRoomPkRankModel * rankModel = [_pkPanelInfo.asRank safeObjectAtIndex1:i]; + if (i >= self.blueContributeStackView.subviews.count) { + break; + } + XPAcrossRoomPKPanelUserView *userView = self.blueContributeStackView.subviews[i]; + userView.panelInfo = rankModel; + } + + for (int i = 0; i<_pkPanelInfo.arRank.count; i++) { + AcrossRoomPkRankModel * rankModel = [_pkPanelInfo.arRank safeObjectAtIndex1:i]; + if (i >= self.blueCharmStackView.subviews.count) { + break; + } + XPAcrossRoomPKPanelUserView *userView = self.blueCharmStackView.subviews[i]; + userView.panelInfo = rankModel; + } + + if (_pkPanelInfo.aPercent > 1) { + _pkPanelInfo.aPercent = 1; + } + CGFloat width = 174; + [self.buleCountImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(width * _pkPanelInfo.aPercent); + }]; + } else { + self.redTitleLabel.text = @""; + self.redAvatarImageView.image = nil; + self.redCountLabel.text = @"0"; + self.blueTitleLabel.text = @""; + self.blueAvatarImageView.image = nil; + self.buleCountLabel.text = @"0"; + for (int i = 0; i +#import "RoomHostDelegate.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPAnchorPKMatchView : UIView + +- (instancetype)initWithDelegate:(id)delegate; + +@property (nonatomic, copy) NSString *roomUid; + +///处理PK超时消息 +- (void)handleMatchTimeOutMessage; + +///PK匹配中计时 +/// - Parameter startTime: 开始时间 +- (void)openCountdownWithTime:(long)startTime; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAnchorPKMatchView.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAnchorPKMatchView.m new file mode 100644 index 00000000..ff39c7e5 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAnchorPKMatchView.m @@ -0,0 +1,221 @@ +// +// YMAnchorPKMatchView.m +// YUMI +// +// Created by YUMI on 2022/11/22. +// + +#import "XPAnchorPKMatchView.h" +///Third +#import +///Tool +#import "TTPopup.h" +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "Api+AnchorPk.h" +#import "RoomInfoModel.h" +#import "Timestamp.h" + +@interface XPAnchorPKMatchView() +///host 代理 +@property (nonatomic,weak) iddelegate; +///背景 +@property (nonatomic, strong) UIImageView *backImageView; +///标题 +@property (nonatomic, strong) UILabel *titleLabel; +///显示倒计时 +@property (nonatomic, strong) UILabel *timeLabel; +///倒计时 +@property (strong, nonatomic) dispatch_source_t timer; + +@end + +@implementation XPAnchorPKMatchView + +- (void)dealloc { + if (self.timer) { + dispatch_source_cancel(self.timer); + self.timer = nil; + } + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +- (void)removeFromSuperview { + [super removeFromSuperview]; + if (self.timer) { + dispatch_source_cancel(self.timer); + self.timer = nil; + } +} + +- (instancetype)initWithDelegate:(id)delegate { + if (self = [super init]) { + _delegate = delegate; + [self initSubViews]; + [self initSubViewConstraints]; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(cancelMatch:)]; + [self addGestureRecognizer:tap]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(cancelMatchPK) name:@"cancelMatchRandomPK" object:nil]; + } + return self; +} + +- (void)cancelMatch:(UITapGestureRecognizer *)ges { + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.message = @"取消匹配?"; + [TTPopup alertWithConfig:config confirmHandler:^{ + [Api cancelMatchRandomPK:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + if (self.timer) { + dispatch_source_cancel(self.timer); + self.timer = nil; + } + self.delegate.getRoomInfo.pkMatchStartTime = nil; + [self removeFromSuperview]; + } + } roomUid:self.roomUid]; + } cancelHandler:^{ + + }]; +} + +- (void)cancelMatchPK { + if (self.timer) { + dispatch_source_cancel(self.timer); + self.timer = nil; + } + [self removeFromSuperview]; +} + +///PK匹配超时消息 +- (void)handleMatchTimeOutMessage { + if (self.timer) { + dispatch_source_cancel(self.timer); + self.timer = nil; + } + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.message = @"暂未匹配到合适的PK对象\n是否继续?"; + [TTPopup alertWithConfig:config confirmHandler:^{ + [Api matchRandomPK:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + long long matchPkStartTime = [data.data longLongValue]; + self.delegate.getRoomInfo.pkMatchStartTime = matchPkStartTime; + [self removeFromSuperview]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"anchorPKMatchBegin" object:@{@"matchPkStartTime" : @(matchPkStartTime)}]; + } + } roomUid:self.roomUid]; + } cancelHandler:^{ + [self removeFromSuperview]; + }]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backImageView]; + [self addSubview:self.titleLabel]; + [self addSubview:self.timeLabel]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(52); + make.height.mas_equalTo(52); + }]; + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(25); + make.height.mas_equalTo(10); + }]; + [self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.titleLabel); + make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(2); + make.height.mas_equalTo(10); + }]; +} + +#pragma mark - 倒计时 +- (void)openCountdownWithTime:(long)startTime { + __block long tempTime; + [Timestamp getInternetDateWithSuccess:^(NSTimeInterval timeInterval) { + timeInterval = timeInterval * 1000; + tempTime = (timeInterval - startTime) / 1000; + if (tempTime < 0) { + tempTime = 0; + } + [self handleCountTime:tempTime]; + } failure:^(NSError * _Nonnull error) { + NSDate *datenow = [NSDate date]; + long time2 = (long)([datenow timeIntervalSince1970]*1000); + tempTime = (time2 - startTime) / 1000; + if (tempTime < 0) { + tempTime = 0; + } + [self handleCountTime:tempTime]; + }]; +} + +- (void)handleCountTime:(long)time { + __block long tempTime = time; + if (self.timer == nil) { + @kWeakify(self); + dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); + self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); + dispatch_source_set_timer(self.timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行 + dispatch_source_set_event_handler(self.timer, ^{ + @kStrongify(self); + dispatch_async(dispatch_get_main_queue(), ^{ + //设置按钮显示读秒效果 + [self acrossRoomPKCutdownOpen:tempTime]; + }); + tempTime++; + }); + dispatch_resume(self.timer); + } +} + +- (void)acrossRoomPKCutdownOpen:(NSInteger)time { + NSInteger minute = time / 60; + NSInteger second = (time % 60); + NSInteger hour = time/3600; + NSString *timeStr; + if (hour > 0) { + minute = minute % 60; + timeStr = [NSString stringWithFormat:@"%02zd:%02zd:%02zd", hour, minute, second]; + } else { + timeStr = [NSString stringWithFormat:@"%02zd:%02zd", minute, second]; + } + self.timeLabel.text = timeStr; +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.image = [UIImage imageNamed:@"acrossPK_countDown_left_bg"]; + } + return _backImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:10]; + _titleLabel.textColor = [UIColor whiteColor]; + _titleLabel.text = YMLocalizedString(@"XPAnchorPKMatchView2"); + } + return _titleLabel; +} + +- (UILabel *)timeLabel { + if (!_timeLabel) { + _timeLabel = [[UILabel alloc] init]; + _timeLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + _timeLabel.textColor = UIColorFromRGB(0xFFF233); + _timeLabel.text = @"00:00"; + } + return _timeLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIAcrpssChamberCombatFasciaboardRegard.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIAcrpssChamberCombatFasciaboardRegard.h deleted file mode 100644 index 6b167c45..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIAcrpssChamberCombatFasciaboardRegard.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YMAcrpssRoomPKPanelView.h -// YUMI -// -// Created by YUMI on 2022/1/11. -// 跨房PK 正在Pk的面板数据 - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ThroughoutChamberCombatFasciaboardMatrix, YUMIAcrpssChamberCombatFasciaboardRegard; -@protocol FBCAcrpssChamberCombatPanelRegardRepresendtation -- (void)yUMIAcrpssChamberCombatFasciaboardRegard:(YUMIAcrpssChamberCombatFasciaboardRegard *)view EvidenceConsumerSolitaire:(NSString *)uid; -- (void)yUMIAcrpssChamberCombatFasciaboardRegard:(YUMIAcrpssChamberCombatFasciaboardRegard *)view sendGiftToUser:(NSString *)uid; -- (void)yUMIAcrpssChamberCombatFasciaboardRegard:(YUMIAcrpssChamberCombatFasciaboardRegard *)view onlookRoom:(NSString *)roomUid; - -@end - -@interface YUMIAcrpssChamberCombatFasciaboardRegard : UIView -- (void)unfoildComputtowardsiondownAboutIntrtowardsemporal:(long)time; -@property (nonatomic,strong, nullable) ThroughoutChamberCombatFasciaboardMatrix *combatFasciadirectorateAbstract; -@property (nonatomic,weak) id delegate; -- (void)replacementThroughoutCombatRegardTowardsoloudspeaker; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIAcrpssChamberCombatFasciaboardRegard.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIAcrpssChamberCombatFasciaboardRegard.m deleted file mode 100644 index 7741f6ef..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIAcrpssChamberCombatFasciaboardRegard.m +++ /dev/null @@ -1,939 +0,0 @@ -// -// YMAcrpssRoomPKPanelView.m -// YUMI -// -// Created by YUMI on 2022/1/11. -// - -#import "YUMIAcrpssChamberCombatFasciaboardRegard.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "YUMIMacroUitls.h" -#import "UIImage+Utils.h" -#import "UIButton+EnlargeTouchArea.h" -#import "Intratemporalstamp.h" -#import "NSArray+Safe.h" -#import "ConsumerAbstractMatrix.h" -#import "ThroughoutChamberCombatFasciaboardMatrix.h" -#import "YUMIThroughoutChamberCombatFasciaboardConsumerRegard.h" - -@interface YUMIAcrpssChamberCombatFasciaboardRegard () -@property (nonatomic, strong) UIImageView *encourageIndicateRegard; -#pragma mark - 规则的view -@property (nonatomic, strong) UIButton *facilitateBtuton; -@property (nonatomic, strong) UIImageView *preadominantBackgroundIndicateRegard; -@property (nonatomic, strong) UITextView *preadominantEssayRegard; -@property (nonatomic, strong) UILabel *intratemporalSequencignation; -@property (nonatomic,strong) UIStackView *stackView; -#pragma mark - 队伍的view -@property (nonatomic,strong) UIView * squadAccommoengagementdRegard; -@property (nonatomic, strong) UILabel *deficitChampionSequencignation; -@property (nonatomic, strong) NetIndicateRegard *deficitIntelligenceportraitIndicateRegard; -@property (nonatomic, strong) UIButton *assistBtuton; -@property (nonatomic, strong) UILabel *disappointedChampionSequencignation; -@property (nonatomic, strong) NetIndicateRegard *disappointedIntelligenceportraitIndicateRegard; -@property (nonatomic, strong) UIButton *onlookBtuton; -#pragma mark -进度条内容 -@property (nonatomic, strong) UIView *progressView; -@property (nonatomic, strong) UIView *growthSatisfperformanceRegard; -@property (nonatomic, strong) UIImageView *deficitComputationIndicateRegard; -@property (nonatomic, strong) UILabel *deficitComputationSequencignation; -@property (strong, nonatomic) SVGAParser *anatomiser; -@property (nonatomic, strong) SVGAImageView *svgExhibitionRegard; -@property (nonatomic, strong) UIImageView *buleComputationIndicateRegard; -@property (nonatomic, strong) UILabel *buleComputationSequencignation; -#pragma mark - 展开更多 -@property (nonatomic,strong) UIButton *foldBtuton; -#pragma mark - 队伍的队友的view -@property (nonatomic,strong) UIStackView *consumerHierarchyRegard; -@property (nonatomic,strong) UIStackView *efficacyHierarchyRegard; -@property (nonatomic,strong) UIStackView *deficitEfficacyHierarchyRegard; -@property (nonatomic,strong) UIStackView *disappointedEfficacyHierarchyRegard; -@property (nonatomic,strong) UIButton *efficacyBtuton; -@property (nonatomic,strong) UIStackView *fascinationHierarchyRegard; -@property (nonatomic,strong) UIStackView *deficitFascinationHierarchyRegard; -@property (nonatomic,strong) UIStackView *disappointedFascinationHierarchyRegard; -@property (nonatomic,strong) UIButton *fascinationBtuton; -@property (strong, nonatomic) dispatch_source_t timer; -@end - -@implementation YUMIAcrpssChamberCombatFasciaboardRegard - -#pragma mark - life cycle - -- (void)dealloc { - NSLog(@"销毁了"); -} - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(diversifictowardsionLoctowardsion:)]; - - - - pan.delaysTouchesBegan = YES; - [self addGestureRecognizer:pan]; - - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Public Method -- (void)replacementThroughoutCombatRegardTowardsoloudspeaker { - if (self.timer) { - dispatch_source_cancel(self.timer); - self.timer = nil; - } - self.combatFasciadirectorateAbstract = nil; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.encourageIndicateRegard]; - - [self.encourageIndicateRegard addSubview:self.stackView]; - [self.encourageIndicateRegard addSubview:self.facilitateBtuton]; - [self.encourageIndicateRegard addSubview:self.intratemporalSequencignation]; - [self.encourageIndicateRegard addSubview:self.preadominantBackgroundIndicateRegard]; - - [self.preadominantBackgroundIndicateRegard addSubview:self.preadominantEssayRegard]; - - [self.stackView addArrangedSubview:self.squadAccommoengagementdRegard]; - [self.stackView addArrangedSubview:self.foldBtuton]; - [self.stackView addArrangedSubview:self.consumerHierarchyRegard]; - - [self.squadAccommoengagementdRegard addSubview:self.deficitChampionSequencignation]; - [self.squadAccommoengagementdRegard addSubview:self.deficitIntelligenceportraitIndicateRegard]; - [self.squadAccommoengagementdRegard addSubview:self.assistBtuton]; - [self.squadAccommoengagementdRegard addSubview:self.disappointedChampionSequencignation]; - [self.squadAccommoengagementdRegard addSubview:self.disappointedIntelligenceportraitIndicateRegard]; - [self.squadAccommoengagementdRegard addSubview:self.onlookBtuton]; - [self.squadAccommoengagementdRegard addSubview:self.progressView]; - - [self.progressView addSubview:self.growthSatisfperformanceRegard]; - [self.progressView addSubview:self.svgExhibitionRegard]; - [self.growthSatisfperformanceRegard addSubview:self.deficitComputationIndicateRegard]; - [self.growthSatisfperformanceRegard addSubview:self.buleComputationIndicateRegard]; - [self.growthSatisfperformanceRegard addSubview:self.deficitComputationSequencignation]; - [self.growthSatisfperformanceRegard addSubview:self.buleComputationSequencignation]; - - [self.consumerHierarchyRegard addArrangedSubview:self.efficacyHierarchyRegard]; - [self.consumerHierarchyRegard addArrangedSubview:self.fascinationHierarchyRegard]; - - [self.efficacyHierarchyRegard addArrangedSubview:self.deficitEfficacyHierarchyRegard]; - [self.efficacyHierarchyRegard addArrangedSubview:self.efficacyBtuton]; - [self.efficacyHierarchyRegard addArrangedSubview:self.disappointedEfficacyHierarchyRegard]; - - [self.fascinationHierarchyRegard addArrangedSubview:self.deficitFascinationHierarchyRegard]; - [self.fascinationHierarchyRegard addArrangedSubview:self.fascinationBtuton]; - [self.fascinationHierarchyRegard addArrangedSubview:self.disappointedFascinationHierarchyRegard]; - [self initConsumerChildLys]; - NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/crossRoomPk_progress.svga", API_Image_URL]; - [self.anatomiser parseWithURL:[NSURL URLWithString:anatomiser1Name] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { - self.svgExhibitionRegard.loops = INT_MAX; - self.svgExhibitionRegard.clearsAfterStop = NO; - self.svgExhibitionRegard.videoItem = videoItem; - [self.svgExhibitionRegard startAnimation]; - } failureBlock:^(NSError * _Nonnull error) { - - }]; -} - -- (void)initConsumerChildLys { - for (int i = 0; i < 3; i++) { - YUMIThroughoutChamberCombatFasciaboardConsumerRegard * consumerRegard = [[YUMIThroughoutChamberCombatFasciaboardConsumerRegard alloc] init]; - consumerRegard.tag = (1000 + i); - consumerRegard.type = ThroughoutChamberCombatPanelConsumerGenre_Red_Contribute; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsConsumerRecognition:)]; - [consumerRegard addGestureRecognizer:tap]; - [self.deficitEfficacyHierarchyRegard addArrangedSubview:consumerRegard]; - } - - for (int i = 0; i < 3; i++) { - YUMIThroughoutChamberCombatFasciaboardConsumerRegard * consumerRegard = [[YUMIThroughoutChamberCombatFasciaboardConsumerRegard alloc] init]; - consumerRegard.tag = (1000 + i); - consumerRegard.type = ThroughoutChamberCombatPanelConsumerGenre_Blue_Contribute; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsConsumerRecognition:)]; - [consumerRegard addGestureRecognizer:tap]; - [self.disappointedEfficacyHierarchyRegard addArrangedSubview:consumerRegard]; - } - - for (int i = 0; i < 3; i++) { - YUMIThroughoutChamberCombatFasciaboardConsumerRegard * consumerRegard = [[YUMIThroughoutChamberCombatFasciaboardConsumerRegard alloc] init]; - consumerRegard.tag = (1000 + i); - consumerRegard.type = ThroughoutChamberCombatPanelConsumerGenre_Red_Charm; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsConsumerRecognition:)]; - [consumerRegard addGestureRecognizer:tap]; - [self.deficitFascinationHierarchyRegard addArrangedSubview:consumerRegard]; - } - - for (int i = 0; i < 3; i++) { - YUMIThroughoutChamberCombatFasciaboardConsumerRegard * consumerRegard = [[YUMIThroughoutChamberCombatFasciaboardConsumerRegard alloc] init]; - consumerRegard.tag = (1000 + i); - consumerRegard.type = ThroughoutChamberCombatPanelConsumerGenre_Blue_Charm; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsConsumerRecognition:)]; - [consumerRegard addGestureRecognizer:tap]; - [self.disappointedFascinationHierarchyRegard addArrangedSubview:consumerRegard]; - } -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(339); - make.height.mas_equalTo(233); - }]; - - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.bottom.mas_equalTo(self.stackView).offset(17); - }]; - [self.facilitateBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(145); - make.top.mas_equalTo(8); - make.width.height.mas_equalTo(16); - }]; - [self.intratemporalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.facilitateBtuton); - make.centerX.mas_equalTo(self.facilitateBtuton.mas_right).offset(66); - }]; - - [self.preadominantBackgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(71); - make.top.mas_equalTo(33); - make.width.mas_equalTo(244); - make.height.mas_equalTo(177); - }]; - [self.preadominantEssayRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(10); - make.right.mas_equalTo(-14); - make.top.mas_equalTo(24); - make.bottom.mas_equalTo(-15); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.encourageIndicateRegard).offset(28); - make.left.right.mas_equalTo(self.encourageIndicateRegard); - }]; - - [self.squadAccommoengagementdRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(88); - make.width.mas_equalTo(self.encourageIndicateRegard); - }]; - - [self.foldBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(16, 8)); - }]; - - [self.consumerHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(38 * 2 + 8); - make.left.right.mas_equalTo(self.stackView).inset(12); - }]; - - [self.deficitChampionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.squadAccommoengagementdRegard).offset(12); - make.top.mas_equalTo(self.squadAccommoengagementdRegard).offset(12); - make.right.mas_lessThanOrEqualTo(self.squadAccommoengagementdRegard.mas_centerX); - }]; - - [self.deficitIntelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.squadAccommoengagementdRegard).offset(30); - make.top.mas_equalTo(self.deficitChampionSequencignation.mas_bottom).offset(11); - make.width.height.mas_equalTo(44); - }]; - - [self.assistBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.deficitIntelligenceportraitIndicateRegard.mas_right).offset(8); - make.top.mas_equalTo(self.deficitIntelligenceportraitIndicateRegard); - make.width.mas_equalTo(50); - make.height.mas_equalTo(18); - }]; - - [self.disappointedChampionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.deficitChampionSequencignation); - make.right.mas_equalTo(-12); - make.left.mas_lessThanOrEqualTo(self.squadAccommoengagementdRegard.mas_centerX); - }]; - - [self.disappointedIntelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.squadAccommoengagementdRegard).offset(-30); - make.centerY.mas_equalTo(self.deficitIntelligenceportraitIndicateRegard); - make.width.height.mas_equalTo(44); - }]; - - [self.onlookBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.disappointedIntelligenceportraitIndicateRegard.mas_left).offset(-8); - make.centerY.mas_equalTo(self.assistBtuton); - make.width.mas_equalTo(50); - make.height.mas_equalTo(18); - }]; - - - [self.progressView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.squadAccommoengagementdRegard); - make.width.mas_equalTo(174); - make.height.mas_equalTo(12); - make.top.mas_equalTo(self.assistBtuton.mas_bottom).offset(8); - }]; - - [self.growthSatisfperformanceRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.progressView); - }]; - - [self.deficitComputationIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(0); - make.height.mas_equalTo(12); - make.top.mas_equalTo(0); - make.right.mas_equalTo(self.buleComputationIndicateRegard.mas_left); - }]; - - [self.deficitComputationSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.growthSatisfperformanceRegard.mas_left).offset(6); - make.centerY.mas_equalTo(self.growthSatisfperformanceRegard); - }]; - - [self.svgExhibitionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.buleComputationIndicateRegard.mas_left); - make.bottom.mas_equalTo(self.progressView.mas_bottom); - make.height.mas_equalTo(27); - make.width.mas_equalTo(18); - }]; - - [self.buleComputationIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(0); - make.height.mas_equalTo(12); - make.centerY.mas_equalTo(self.deficitComputationIndicateRegard); - make.width.mas_equalTo(174 * 0.5); - }]; - - [self.buleComputationSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.growthSatisfperformanceRegard.mas_right).offset(-6); - make.centerY.mas_equalTo(self.growthSatisfperformanceRegard); - }]; - - [self.efficacyHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(38); - }]; - - [self.fascinationHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(38); - }]; - - [self.efficacyBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(53, 22)); - }]; - - [self.fascinationBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(53, 22)); - }]; - - [self.deficitEfficacyHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(self.disappointedEfficacyHierarchyRegard); - }]; - - [self.deficitFascinationHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(self.disappointedFascinationHierarchyRegard); - }]; -} -#pragma mark - 倒计时 -- (void)unfoildComputtowardsiondownAboutIntrtowardsemporal:(long)time { - __block long tempTime = time; - if (self.timer == nil) { - @kWeakify(self); - dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); - self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); - dispatch_source_set_timer(self.timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); - dispatch_source_set_event_handler(self.timer, ^{ - @kStrongify(self); - if(tempTime <= 0){ - dispatch_source_cancel(self.timer); - self.timer = nil; - dispatch_async(dispatch_get_main_queue(), ^{ - self.intratemporalSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; - self.intratemporalSequencignation.text = YMLocalizedString(@"YUMI_Acrpss_Room_PK_Panel_View_0"); - }); - } else { - dispatch_async(dispatch_get_main_queue(), ^{ - - [self throughoutChamberCombatDeficituceddownUnfoild:tempTime]; - }); - tempTime--; - } - }); - dispatch_resume(self.timer); - } -} - -- (void)throughoutChamberCombatDeficituceddownUnfoild:(NSInteger)time { - NSInteger minute = time / 60; - NSInteger second = (time % 60); - NSInteger hour = time/3600; - NSString *timeStr; - if (hour > 0) { - minute = minute % 60; - timeStr = [NSString stringWithFormat:@"%02zd:%02zd:%02zd", hour, minute, second]; - } else { - timeStr = [NSString stringWithFormat:@"%02zd:%02zd", minute, second]; - } - self.intratemporalSequencignation.text = timeStr; - if (time <= 30) { - self.intratemporalSequencignation.textColor = UIColorFromRGB(0xFF87A1); - } else { - self.intratemporalSequencignation.textColor = UIColorFromRGB(0xFFF600); - } -} - -#pragma mark - Event Response -- (void)foldBtutonPerformance:(UIButton *)sender { - sender.selected = !sender.selected; - if (sender.isSelected) { - self.consumerHierarchyRegard.hidden = NO; - [self mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(233); - }]; - self.encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_panel_background"]; - [UIView animateWithDuration:0.5 animations:^{ - self.foldBtuton.transform = CGAffineTransformIdentity; - }]; - } else { - self.consumerHierarchyRegard.hidden = YES; - self.encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_panel_small_background"]; - [self mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(137); - }]; - [UIView animateWithDuration:0.5 animations:^{ - self.foldBtuton.transform = CGAffineTransformMakeRotation(M_PI); - }]; - } -} - -- (void)helpBtutonPerformance:(UIButton *)sender { - sender.selected = !sender.selected; - self.preadominantBackgroundIndicateRegard.hidden = !sender.selected; -} - -- (void)betowardsDeficitIntelligenceportraitRecognition:(UITapGestureRecognizer *)ges { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIAcrpssChamberCombatFasciaboardRegard:EvidenceConsumerSolitaire:)]) { - [self.delegate yUMIAcrpssChamberCombatFasciaboardRegard:self EvidenceConsumerSolitaire:self.combatFasciadirectorateAbstract.cUid]; - } -} - -- (void)betowardsBlueIntelligenceportraitRecognition:(UITapGestureRecognizer *)ges { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIAcrpssChamberCombatFasciaboardRegard:EvidenceConsumerSolitaire:)]) { - [self.delegate yUMIAcrpssChamberCombatFasciaboardRegard:self EvidenceConsumerSolitaire:self.combatFasciadirectorateAbstract.aUid]; - } -} - -- (void)assistBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIAcrpssChamberCombatFasciaboardRegard:sendGiftToUser:)]) { - [self.delegate yUMIAcrpssChamberCombatFasciaboardRegard:self sendGiftToUser:self.combatFasciadirectorateAbstract.cUid]; - } -} - -- (void)onlookBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIAcrpssChamberCombatFasciaboardRegard:onlookRoom:)]) { - [self.delegate yUMIAcrpssChamberCombatFasciaboardRegard:self onlookRoom:self.combatFasciadirectorateAbstract.aUid]; - } -} - -- (void)betowardsConsumerRecognition:(UITapGestureRecognizer *)tap { - YUMIThroughoutChamberCombatFasciaboardConsumerRegard * consumerRegard= (YUMIThroughoutChamberCombatFasciaboardConsumerRegard *)tap.view; - if (consumerRegard.fasciadirectorateAbstract && consumerRegard.fasciadirectorateAbstract.uid.length > 0 && self.delegate && [self.delegate respondsToSelector:@selector(yUMIAcrpssChamberCombatFasciaboardRegard:EvidenceConsumerSolitaire:)]) { - [self.delegate yUMIAcrpssChamberCombatFasciaboardRegard:self EvidenceConsumerSolitaire:consumerRegard.fasciadirectorateAbstract.uid]; - } -} - -- (void)diversifictowardsionLoctowardsion:(UIPanGestureRecognizer*)p { - - - UIWindow *appWindow = [UIApplication sharedApplication].delegate.window; - - CGPoint panSpeck = [p locationInView:appWindow]; - if (p.state == UIGestureRecognizerStateBegan) { - self.alpha = 1; - } else if(p.state == UIGestureRecognizerStateChanged) { - self.center = CGPointMake(panSpeck.x, panSpeck.y); - } else if(p.state == UIGestureRecognizerStateEnded - || p.state == UIGestureRecognizerStateCancelled) { - self.alpha = 1; - CGFloat touchWidth = self.frame.size.width; - CGFloat touchHeight = self.frame.size.height; - CGFloat screenWidth = [[UIScreen mainScreen] bounds].size.width; - CGFloat screenHeight = [[UIScreen mainScreen] bounds].size.height; - - CGFloat left = fabs(panSpeck.x); - CGFloat right = fabs(screenWidth - left); - CGFloat top = fabs(panSpeck.y); - CGFloat bottom = fabs(screenHeight - top); - CGFloat minSpace = 0; - minSpace = MIN(MIN(MIN(top, left), bottom), right); - CGPoint newCenter; - CGFloat targetY = 0; - - if (panSpeck.y < 15 + touchHeight / 2.0) { - targetY = 15 + touchHeight / 2.0; - }else if (panSpeck.y > (screenHeight - touchHeight / 2.0 - 15)) { - targetY = screenHeight - touchHeight / 2.0 - 15; - }else{ - targetY = panSpeck.y; - } - - if (minSpace == left) { - newCenter = CGPointMake(15+touchWidth/2.0, targetY); - }else if (minSpace == right) { - newCenter = CGPointMake(screenWidth - touchWidth/2.0 - 15, targetY); - }else if (minSpace == top) { - newCenter = CGPointMake(panSpeck.x, touchWidth / 3); - }else { - newCenter = CGPointMake(panSpeck.x, screenHeight - touchWidth / 3); - } - [UIView animateWithDuration:0.25 animations:^{ - if ((newCenter.y + self.frame.size.height / 2) > (KScreenHeight - kSafeAreaBottomHeight - 44)) { - self.center = CGPointMake(newCenter.x, KScreenHeight - self.frame.size.height / 2 - kSafeAreaBottomHeight - 44); - }else { - self.center = newCenter; - } - }]; - } -} - -#pragma mark - getters and setters -- (void)setCombatFasciadirectorateAbstract:(ThroughoutChamberCombatFasciaboardMatrix *)combatFasciadirectorateAbstract { - _combatFasciadirectorateAbstract = combatFasciadirectorateAbstract; - if (_combatFasciadirectorateAbstract) { - [Intratemporalstamp acquireInternetEngagementAboutAccomplishment:^(NSTimeInterval timeInterval) { - timeInterval = timeInterval * 1000; - long aTime = (combatFasciadirectorateAbstract.endTime - timeInterval) / 1000; - [self unfoildComputtowardsiondownAboutIntrtowardsemporal:aTime]; - } failure:^(NSError * _Nonnull error) { - NSDate *datenow = [NSDate date]; - long time2 = (long)([datenow timeIntervalSince1970]*1000); - long aTime = (combatFasciadirectorateAbstract.endTime - time2) / 1000; - [self unfoildComputtowardsiondownAboutIntrtowardsemporal:aTime]; - }]; - - if (_combatFasciadirectorateAbstract.cTitle.length > 7) { - _combatFasciadirectorateAbstract.cTitle = [NSString stringWithFormat:@"%@…", [_combatFasciadirectorateAbstract.cTitle substringToIndex:7]]; - } - - if (_combatFasciadirectorateAbstract.aTitle.length > 7) { - _combatFasciadirectorateAbstract.aTitle = [NSString stringWithFormat:@"%@…", [_combatFasciadirectorateAbstract.aTitle substringToIndex:7]]; - } - - self.deficitChampionSequencignation.text = _combatFasciadirectorateAbstract.cTitle; - self.deficitIntelligenceportraitIndicateRegard.imageUrl = _combatFasciadirectorateAbstract.cAvatar; - self.deficitComputationSequencignation.text = [NSString stringWithFormat:@"%lld", _combatFasciadirectorateAbstract.cAmount]; - self.disappointedChampionSequencignation.text = _combatFasciadirectorateAbstract.aTitle; - self.disappointedIntelligenceportraitIndicateRegard.imageUrl = _combatFasciadirectorateAbstract.aAvatar; - self.buleComputationSequencignation.text = [NSString stringWithFormat:@"%lld", _combatFasciadirectorateAbstract.aAmount]; - for (int i = 0; i<_combatFasciadirectorateAbstract.csRank.count; i++) { - ThroughoutChamberPkRateMatrix * rankModel = [_combatFasciadirectorateAbstract.csRank secureGroalTowardsIndictowardsrix1:i]; - if (i >= self.deficitEfficacyHierarchyRegard.subviews.count) { - break; - } - YUMIThroughoutChamberCombatFasciaboardConsumerRegard *consumerRegard = self.deficitEfficacyHierarchyRegard.subviews[i]; - consumerRegard.fasciadirectorateAbstract = rankModel; - } - for (int i = 0; i<_combatFasciadirectorateAbstract.crRank.count; i++) { - ThroughoutChamberPkRateMatrix * rankModel = [_combatFasciadirectorateAbstract.crRank secureGroalTowardsIndictowardsrix1:i]; - if (i >= self.deficitFascinationHierarchyRegard.subviews.count) { - break; - } - YUMIThroughoutChamberCombatFasciaboardConsumerRegard *consumerRegard = self.deficitFascinationHierarchyRegard.subviews[i]; - consumerRegard.fasciadirectorateAbstract = rankModel; - } - - for (int i = 0; i<_combatFasciadirectorateAbstract.asRank.count; i++) { - ThroughoutChamberPkRateMatrix * rankModel = [_combatFasciadirectorateAbstract.asRank secureGroalTowardsIndictowardsrix1:i]; - if (i >= self.disappointedEfficacyHierarchyRegard.subviews.count) { - break; - } - YUMIThroughoutChamberCombatFasciaboardConsumerRegard *consumerRegard = self.disappointedEfficacyHierarchyRegard.subviews[i]; - consumerRegard.fasciadirectorateAbstract = rankModel; - } - - for (int i = 0; i<_combatFasciadirectorateAbstract.arRank.count; i++) { - ThroughoutChamberPkRateMatrix * rankModel = [_combatFasciadirectorateAbstract.arRank secureGroalTowardsIndictowardsrix1:i]; - if (i >= self.disappointedFascinationHierarchyRegard.subviews.count) { - break; - } - YUMIThroughoutChamberCombatFasciaboardConsumerRegard *consumerRegard = self.disappointedFascinationHierarchyRegard.subviews[i]; - consumerRegard.fasciadirectorateAbstract = rankModel; - } - - if (_combatFasciadirectorateAbstract.aPercent > 1) { - _combatFasciadirectorateAbstract.aPercent = 1; - } - CGFloat width = 174; - [self.buleComputationIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(width * _combatFasciadirectorateAbstract.aPercent); - }]; - } else { - self.deficitChampionSequencignation.text = @""; - self.deficitIntelligenceportraitIndicateRegard.image = nil; - self.deficitComputationSequencignation.text = @"0"; - self.disappointedChampionSequencignation.text = @""; - self.disappointedIntelligenceportraitIndicateRegard.image = nil; - self.buleComputationSequencignation.text = @"0"; - for (int i = 0; i - -NS_ASSUME_NONNULL_BEGIN - - -@interface YUMIThroughoutChamberCombatCallforConsequentRegard : UIView -@property (nonatomic,assign) BOOL isRecognize; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatCallforConsequentRegard.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatCallforConsequentRegard.m deleted file mode 100644 index f3ba568f..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatCallforConsequentRegard.m +++ /dev/null @@ -1,91 +0,0 @@ -// -// YMAcrossRoomPKInviteResultView.m -// YUMI -// -// Created by YUMI on 2022/1/11. -// - -#import "YUMIThroughoutChamberCombatCallforConsequentRegard.h" -#import -#import "DJDKMIMOMColor.h" - -@interface YUMIThroughoutChamberCombatCallforConsequentRegard () -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UIButton *concludeBtuton; -@property (nonatomic, strong) UIImageView *encourageIndicateRegard; - -@end - -@implementation YUMIThroughoutChamberCombatCallforConsequentRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -- (void)initSubViews { - [self addSubview:self.encourageIndicateRegard]; - [self addSubview:self.titleLabel]; - [self addSubview:self.concludeBtuton]; -} - -- (void)initChildLyRestrictions { - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(0); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self); - make.left.mas_equalTo(12); - }]; - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self); - make.right.mas_equalTo(-12); - make.width.height.mas_equalTo(16); - }]; -} - -#pragma mark - Event Response -- (void)concludeBtutonPerformance:(UIButton *)button { - [self removeFromSuperview]; -} -#pragma mark - getter -- (void)setIsRecognize:(BOOL)isRecognize { - if (isRecognize) { - self.titleLabel.text = YMLocalizedString(@"YUMI_Across_Room_PK_Invite_Result_View_0"); - self.encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_invite_result_accept_background"]; - } else { - self.titleLabel.text = YMLocalizedString(@"YUMI_Across_Room_PK_Invite_Result_View_1"); - self.encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_invite_result_background"]; - } -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - } - return _encourageIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textColor = [UIColor whiteColor]; - _titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightBold]; - } - return _titleLabel; -} - -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [[UIButton alloc] init]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_scope_across_pk_invite_result_close"] forState:UIControlStateNormal]; - [_concludeBtuton addTarget:self action:@selector(concludeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _concludeBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatCallforRegard.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatCallforRegard.h deleted file mode 100644 index f49da797..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatCallforRegard.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMAcrossRoomPKInviteView.h -// YUMI -// -// Created by YUMI on 2022/1/11. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIThroughoutChamberCombatCallforRegard : UIView -@property (nonatomic,copy) NSString *roomUid; -@property (nonatomic,copy) NSDictionary *atoloudspeakerPackbask; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatCallforRegard.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatCallforRegard.m deleted file mode 100644 index 4a2ba243..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatCallforRegard.m +++ /dev/null @@ -1,340 +0,0 @@ -// -// YMAcrossRoomPKInviteView.m -// YUMI -// -// Created by YUMI on 2022/1/11. -// - -#import "YUMIThroughoutChamberCombatCallforRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "UIImage+Utils.h" -#import "Api+Room.h" -#import "XNDJTBWGLoadingTool.h" - -@interface YUMIThroughoutChamberCombatCallforMetroRegard : UIView -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UILabel *satisfperformanceSequencignation; -@end - -@implementation YUMIThroughoutChamberCombatCallforMetroRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.titleLabel]; - [self addSubview:self.satisfperformanceSequencignation]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(17); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(50); - make.left.centerY.mas_equalTo(self); - }]; - - [self.satisfperformanceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.titleLabel.mas_right).offset(15); - make.centerY.mas_equalTo(self); - make.right.mas_lessThanOrEqualTo(self).offset(-5); - }]; -} - -#pragma mark - Getters And Setters - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textColor = UIColorFromRGB(0xffffff); - _titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _titleLabel.text = YMLocalizedString(@"YUMI_Across_Room_PK_Invite_View_0"); - } - return _titleLabel; -} - -- (UILabel *)satisfperformanceSequencignation { - if (!_satisfperformanceSequencignation) { - _satisfperformanceSequencignation = [[UILabel alloc] init]; - _satisfperformanceSequencignation.textColor = UIColorFromRGB(0xE8E035); - _satisfperformanceSequencignation.font = [UIFont systemFontOfSize:16 weight:UIFontWeightBold]; - } - return _satisfperformanceSequencignation; -} - -@end - -@interface YUMIThroughoutChamberCombatCallforRegard () -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) YUMIThroughoutChamberCombatCallforMetroRegard *centiretyforRegard; -@property (nonatomic,strong) YUMIThroughoutChamberCombatCallforMetroRegard *intratemporalRegard; -@property (nonatomic,strong) YUMIThroughoutChamberCombatCallforMetroRegard *sequenceRegard; -@property (nonatomic,strong) UIStackView *operaHierarchyRegard; -@property (nonatomic, strong) UIButton *rejectBtuton; -@property (nonatomic, strong) UIButton *acceptBtuton; -@property (nonatomic, strong) UIImageView *encourageIndicateRegard; -@property (nonatomic, strong) UIButton *computationPubescenceBtuton; -@property (strong, nonatomic) dispatch_source_t centiretyforIntratemper; - -@end - -@implementation YUMIThroughoutChamberCombatCallforRegard - -- (void)dealloc { - if (self.centiretyforIntratemper != nil) { - dispatch_source_cancel(self.centiretyforIntratemper); - self.centiretyforIntratemper = nil; - } -} - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -- (void)initSubViews { - [self addSubview:self.encourageIndicateRegard]; - - [self.encourageIndicateRegard addSubview:self.titleLabel]; - [self.encourageIndicateRegard addSubview:self.stackView]; - [self.encourageIndicateRegard addSubview:self.operaHierarchyRegard]; - [self.encourageIndicateRegard addSubview:self.computationPubescenceBtuton]; - - [self.stackView addArrangedSubview:self.centiretyforRegard]; - [self.stackView addArrangedSubview:self.intratemporalRegard]; - [self.stackView addArrangedSubview:self.sequenceRegard]; - - [self.operaHierarchyRegard addArrangedSubview:self.rejectBtuton]; - [self.operaHierarchyRegard addArrangedSubview:self.acceptBtuton]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth - 47 * 2); - make.bottom.mas_equalTo(self.encourageIndicateRegard.mas_bottom); - }]; - - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.top.mas_equalTo(self); - make.width.mas_equalTo(KScreenWidth - 47 * 2); - make.bottom.mas_equalTo(self.operaHierarchyRegard.mas_bottom).offset(16); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(18); - }]; - - [self.computationPubescenceBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.titleLabel); - make.right.mas_equalTo(-15); - make.width.mas_equalTo(32); - make.height.mas_equalTo(16); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageIndicateRegard).offset(16); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(18); - make.right.mas_equalTo(self.encourageIndicateRegard); - }]; - - [self.operaHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageIndicateRegard).inset(16); - make.height.mas_equalTo(35); - make.top.mas_equalTo(self.stackView.mas_bottom).offset(26); - }]; -} - -#pragma mark - Event Response -- (void)acceptBtutonPerformance:(UIButton *)sender { - NSString *roundId = self.atoloudspeakerPackbask[@"roundId"]; - [Api shankThroughoutChamberCombatCentiretyfor:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - dispatch_source_cancel(self.centiretyforIntratemper); - self.centiretyforIntratemper = nil; - [self removeFromSuperview]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } roomUid:self.roomUid roundId:roundId isRecognize:@"1"]; -} - -- (void)rejectBtutonPerformance:(UIButton *)sender { - NSString *roundId = self.atoloudspeakerPackbask[@"roundId"]; - [Api shankThroughoutChamberCombatCentiretyfor:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - dispatch_source_cancel(self.centiretyforIntratemper); - self.centiretyforIntratemper = nil; - [self removeFromSuperview]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } roomUid:self.roomUid roundId:roundId isRecognize:@"0"]; -} - -#pragma mark - getter -- (void)setAtoloudspeakerPackbask:(NSDictionary *)atoloudspeakerPackbask { - _atoloudspeakerPackbask = atoloudspeakerPackbask; - if (_atoloudspeakerPackbask.allKeys.count > 0) { - self.centiretyforRegard.satisfperformanceSequencignation.text = _atoloudspeakerPackbask[@"inviteRoomTitle"]; - self.intratemporalRegard.satisfperformanceSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Across_Room_PK_Invite_View_1"), _atoloudspeakerPackbask[@"pkDuration"]]; - NSString *desc = _atoloudspeakerPackbask[@"pkDesc"]; - if (desc.length > 0) { - self.sequenceRegard.hidden = NO; - self.sequenceRegard.satisfperformanceSequencignation.text = desc; - } else { - self.sequenceRegard.hidden = YES; - } - - if (_centiretyforIntratemper != nil) { - dispatch_source_cancel(_centiretyforIntratemper); - } - __block NSInteger time = 10; - dispatch_queue_t queue = dispatch_get_global_queue(0, 0); - _centiretyforIntratemper = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); - @kWeakify(self); - dispatch_source_set_timer(_centiretyforIntratemper,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); - dispatch_source_set_event_handler(_centiretyforIntratemper, ^{ - if(time <= 0){ - dispatch_source_cancel(self.centiretyforIntratemper); - self.centiretyforIntratemper = nil; - dispatch_async(dispatch_get_main_queue(), ^{ - @kStrongify(self); - [self removeFromSuperview]; - - }); - }else{ - dispatch_async(dispatch_get_main_queue(), ^{ - @kStrongify(self); - [self.computationPubescenceBtuton setTitle:[NSString stringWithFormat:@"%02ld", time] forState:UIControlStateNormal]; - }); - time--; - } - }); - dispatch_resume(_centiretyforIntratemper); - } -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_invite_background"]; - } - return _encourageIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textColor = [UIColor whiteColor]; - _titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightBold]; - _titleLabel.text = YMLocalizedString(@"YUMI_Across_Room_PK_Invite_View_2"); - } - return _titleLabel; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 18; - } - return _stackView; -} - -- (YUMIThroughoutChamberCombatCallforMetroRegard *)centiretyforRegard { - if (!_centiretyforRegard) { - _centiretyforRegard = [[YUMIThroughoutChamberCombatCallforMetroRegard alloc] init]; - _centiretyforRegard.titleLabel.text = YMLocalizedString(@"YUMI_Across_Room_PK_Invite_View_3"); - } - return _centiretyforRegard; -} - -- (YUMIThroughoutChamberCombatCallforMetroRegard *)intratemporalRegard { - if (!_intratemporalRegard) { - _intratemporalRegard = [[YUMIThroughoutChamberCombatCallforMetroRegard alloc] init]; - _intratemporalRegard.titleLabel.text = YMLocalizedString(@"YUMI_Across_Room_PK_Invite_View_4"); - } - return _intratemporalRegard; -} - -- (YUMIThroughoutChamberCombatCallforMetroRegard *)sequenceRegard { - if (!_sequenceRegard) { - _sequenceRegard = [[YUMIThroughoutChamberCombatCallforMetroRegard alloc] init]; - _sequenceRegard.titleLabel.text = YMLocalizedString(@"YUMI_Across_Room_PK_Invite_View_5"); - } - return _sequenceRegard; -} - -- (UIButton *)computationPubescenceBtuton { - if (!_computationPubescenceBtuton) { - _computationPubescenceBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_computationPubescenceBtuton setTitleColor:UIColorFromRGB(0xFFF600) forState:UIControlStateNormal]; - _computationPubescenceBtuton.titleLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightMedium]; - [_computationPubescenceBtuton setBackgroundImage:[UIImage imageWithColor:UIColorRGBAlpha(0xFF9813, 0.2)] forState:UIControlStateNormal]; - _computationPubescenceBtuton.layer.masksToBounds = YES; - _computationPubescenceBtuton.layer.cornerRadius = 8; - _computationPubescenceBtuton.layer.borderWidth = 0.5; - _computationPubescenceBtuton.layer.borderColor = UIColorFromRGB(0xFFFAD5).CGColor; - } - return _computationPubescenceBtuton; -} - -- (UIStackView *)operaHierarchyRegard { - if (!_operaHierarchyRegard) { - _operaHierarchyRegard = [[UIStackView alloc] init]; - _operaHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _operaHierarchyRegard.distribution = UIStackViewDistributionFillEqually; - _operaHierarchyRegard.alignment = UIStackViewAlignmentFill; - _operaHierarchyRegard.spacing = 29; - } - return _operaHierarchyRegard; -} - -- (UIButton *)rejectBtuton { - if (!_rejectBtuton) {\ - _rejectBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - _rejectBtuton.layer.masksToBounds = YES; - _rejectBtuton.layer.cornerRadius = 25 / 2; - [_rejectBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xBCDDFF), UIColorFromRGB(0xD6BEF7)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_rejectBtuton setTitleColor:UIColorFromRGB(0x4C5AF1) forState:UIControlStateNormal]; - [_rejectBtuton setTitle:YMLocalizedString(@"YUMI_Across_Room_PK_Invite_View_6") forState:UIControlStateNormal]; - _rejectBtuton.titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - [_rejectBtuton addTarget:self action:@selector(rejectBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _rejectBtuton; -} - -- (UIButton *)acceptBtuton { - if (!_acceptBtuton) { - _acceptBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_acceptBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0x218EFF), UIColorFromRGB(0x7727E4)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_acceptBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [_acceptBtuton setTitle:YMLocalizedString(@"YUMI_Across_Room_PK_Invite_View_7") forState:UIControlStateNormal]; - _acceptBtuton.titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - [_acceptBtuton addTarget:self action:@selector(acceptBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _acceptBtuton.layer.masksToBounds = YES; - _acceptBtuton.layer.cornerRadius = 25 / 2; - } - return _acceptBtuton; - } -@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatCaptureRegard.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatCaptureRegard.h deleted file mode 100644 index 759f90c0..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatCaptureRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMAcrossRoomPKPrizeView.h -// YUMI -// -// Created by YUMI on 2022/1/12. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ThroughoutChamberCombatCaptureMatrix; -@interface YUMIThroughoutChamberCombatCaptureRegard : UIView -@property (nonatomic, strong) ThroughoutChamberCombatCaptureMatrix *data; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatCaptureRegard.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatCaptureRegard.m deleted file mode 100644 index 2ece722c..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatCaptureRegard.m +++ /dev/null @@ -1,236 +0,0 @@ -// -// YMAcrossRoomPKPrizeView.m -// YUMI -// -// Created by YUMI on 2022/1/12. -// 跨房PK横幅 - -#import "YUMIThroughoutChamberCombatCaptureRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "UIImage+Utils.h" -#import "ThroughoutChamberCombatCaptureMatrix.h" - -@interface YUMIThroughoutChamberCombatCaptureRegard () - - -@property (nonatomic, strong) UIImageView *backgroundIndicateRegard; -@property (nonatomic, strong) UIButton *onLookBtuton; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) NetIndicateRegard *deficitIntelligenceIndicateRegard; -@property (nonatomic, strong) UILabel *deficitChamberChampionSequencignation; -@property (nonatomic, strong) UIImageView *middleIndicateRegard; -@property (nonatomic, strong) NetIndicateRegard *disappointedIntelligenceIndicateRegard; -@property (nonatomic, strong) UILabel *disappointedChamberChampionSequencignation; - -@end - -@implementation YUMIThroughoutChamberCombatCaptureRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initRegard]; - [self initConstrtowardsions]; - } - return self; -} - -- (void)initRegard { - [self addSubview:self.backgroundIndicateRegard]; - [self addSubview:self.onLookBtuton]; - [self addSubview:self.titleLabel]; - - [self addSubview:self.deficitIntelligenceIndicateRegard]; - [self addSubview:self.deficitChamberChampionSequencignation]; - - [self addSubview:self.disappointedIntelligenceIndicateRegard]; - [self addSubview:self.disappointedChamberChampionSequencignation]; - - [self addSubview:self.middleIndicateRegard]; - -} - -- (void)initConstrtowardsions { - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(0); - }]; - [self.deficitIntelligenceIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(12); - make.left.mas_equalTo(22); - make.width.height.mas_equalTo(44); - }]; - [self.deficitChamberChampionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.deficitIntelligenceIndicateRegard.mas_bottom).mas_offset(8); - make.centerX.mas_equalTo(self.deficitIntelligenceIndicateRegard); - make.height.mas_equalTo(12); - make.width.mas_equalTo(72); - }]; - [self.middleIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.deficitIntelligenceIndicateRegard); - make.width.mas_equalTo(60); - make.height.mas_equalTo(40); - make.left.mas_equalTo(self.deficitIntelligenceIndicateRegard.mas_right).mas_offset(9); - }]; - [self.disappointedIntelligenceIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.deficitIntelligenceIndicateRegard); - make.left.mas_equalTo(self.middleIndicateRegard.mas_right).mas_offset(9); - make.width.height.mas_equalTo(44); - }]; - [self.disappointedChamberChampionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.disappointedIntelligenceIndicateRegard.mas_bottom).mas_offset(8); - make.centerX.mas_equalTo(self.disappointedIntelligenceIndicateRegard); - make.height.mas_equalTo(12); - make.width.mas_equalTo(72); - }]; - [self.onLookBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(50); - make.height.mas_equalTo(18); - make.right.mas_equalTo(-14); - make.bottom.mas_equalTo(-14); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.deficitIntelligenceIndicateRegard); - make.right.mas_equalTo(self.onLookBtuton); - make.height.mas_equalTo(14); - make.left.mas_equalTo(self.disappointedIntelligenceIndicateRegard.mas_right).mas_offset(20); - }]; -} - -- (void)setData:(ThroughoutChamberCombatCaptureMatrix *)data { - _data = data; - self.deficitIntelligenceIndicateRegard.imageUrl = data.winAvatar; - self.disappointedIntelligenceIndicateRegard.imageUrl = data.failAvatar; - self.deficitChamberChampionSequencignation.text = data.winTitle; - self.disappointedChamberChampionSequencignation.text = data.failTitle; - self.titleLabel.text = data.msg; - if (data.pkType == ThroughoutChamberCombatGenreAnchor) { - self.deficitChamberChampionSequencignation.text = data.winNick; - self.disappointedChamberChampionSequencignation.text = data.failNick; - self.titleLabel.numberOfLines = 0; - self.titleLabel.font = [UIFont systemFontOfSize:10]; - self.titleLabel.textAlignment = NSTextAlignmentCenter; - self.backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_anchorPK_prize_background"]; - self.middleIndicateRegard.image = [UIImage imageNamed:@"yumi_anchorPK_prize_KO"]; - [self.onLookBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_anchorPK_prize_onLook_background"] forState:UIControlStateNormal]; - [self.onLookBtuton setTitle:YMLocalizedString(@"YUMI_Across_Room_PK_Prize_View_0") forState:UIControlStateNormal]; - self.onLookBtuton.layer.masksToBounds = NO; - self.onLookBtuton.layer.borderWidth = 0; - [self.onLookBtuton mas_remakeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(58); - make.height.mas_equalTo(20); - make.right.mas_equalTo(-70); - make.bottom.mas_equalTo(-14); - }]; - [self.titleLabel mas_remakeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.onLookBtuton); - make.width.mas_equalTo(152); - make.bottom.mas_equalTo(self.onLookBtuton.mas_top).mas_offset(-5); - }]; - [self.deficitChamberChampionSequencignation mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.deficitIntelligenceIndicateRegard.mas_bottom).mas_offset(4); - }]; - [self.disappointedChamberChampionSequencignation mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.disappointedIntelligenceIndicateRegard.mas_bottom).mas_offset(4); - }]; - [self.middleIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(46); - make.height.mas_equalTo(39); - }]; - } -} - -#pragma mark - getters and setters -- (UIImageView *)backgroundIndicateRegard { - if (!_backgroundIndicateRegard) { - _backgroundIndicateRegard = [[UIImageView alloc] init]; - _backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_prize_background"]; - _backgroundIndicateRegard.userInteractionEnabled = YES; - } - return _backgroundIndicateRegard; -} - -- (UIButton *)onLookBtuton { - if (!_onLookBtuton) { - _onLookBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_onLookBtuton setBackgroundImage:[UIImage imageWithColor:[DJDKMIMOMColor prohibitionBtutonPrettify]] forState:UIControlStateNormal]; - [_onLookBtuton setTitle:YMLocalizedString(@"YUMI_Across_Room_PK_Prize_View_1") forState:UIControlStateNormal]; - [_onLookBtuton setTitleColor:UIColorFromRGB(0xffffff) forState:UIControlStateNormal]; - _onLookBtuton.titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _onLookBtuton.userInteractionEnabled = NO; - _onLookBtuton.layer.masksToBounds = YES; - _onLookBtuton.layer.cornerRadius = 9; - _onLookBtuton.layer.borderWidth = 1; - _onLookBtuton.layer.borderColor = [UIColor whiteColor].CGColor; - } - return _onLookBtuton; -} - -- (NetIndicateRegard *)deficitIntelligenceIndicateRegard { - if (!_deficitIntelligenceIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _deficitIntelligenceIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _deficitIntelligenceIndicateRegard.layer.cornerRadius = 22; - _deficitIntelligenceIndicateRegard.layer.masksToBounds = YES; - _deficitIntelligenceIndicateRegard.layer.borderWidth = 1; - _deficitIntelligenceIndicateRegard.layer.borderColor = UIColorFromRGB(0xec677d).CGColor; - } - return _deficitIntelligenceIndicateRegard; -} - -- (UILabel *)deficitChamberChampionSequencignation { - if (!_deficitChamberChampionSequencignation) { - _deficitChamberChampionSequencignation = [[UILabel alloc] init]; - _deficitChamberChampionSequencignation.textColor = [UIColor whiteColor]; - _deficitChamberChampionSequencignation.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - _deficitChamberChampionSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _deficitChamberChampionSequencignation; -} - -- (UIImageView *)middleIndicateRegard { - if (!_middleIndicateRegard) { - _middleIndicateRegard = [[UIImageView alloc] init]; - _middleIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_prize_ko"]; - } - return _middleIndicateRegard; -} - -- (NetIndicateRegard *)disappointedIntelligenceIndicateRegard { - if (!_disappointedIntelligenceIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _disappointedIntelligenceIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _disappointedIntelligenceIndicateRegard.layer.cornerRadius = 22; - _disappointedIntelligenceIndicateRegard.layer.masksToBounds = YES; - _disappointedIntelligenceIndicateRegard.layer.borderWidth = 1; - _disappointedIntelligenceIndicateRegard.layer.borderColor = UIColorFromRGB(0x76c1F5).CGColor; - } - return _disappointedIntelligenceIndicateRegard; -} - -- (UILabel *)disappointedChamberChampionSequencignation { - if (!_disappointedChamberChampionSequencignation) { - _disappointedChamberChampionSequencignation = [[UILabel alloc] init]; - _disappointedChamberChampionSequencignation.textColor = [UIColor whiteColor]; - _disappointedChamberChampionSequencignation.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - _disappointedChamberChampionSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _disappointedChamberChampionSequencignation; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textColor = [UIColor whiteColor]; - _titleLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightMedium]; - _titleLabel.lineBreakMode = NSLineBreakByTruncatingMiddle; - } - return _titleLabel; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatComputationDownRegard.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatComputationDownRegard.h deleted file mode 100644 index 721f45eb..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatComputationDownRegard.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMAcrossRoomPKCountDownView.h -// YUMI -// -// Created by YUMI on 2022/7/14. -// 跨房PK预约倒计时 - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIThroughoutChamberCombatComputationDownRegard : UIView - -@property (nonatomic, assign) long long startTime; -@property (nonatomic, strong) UIImageView *encourageIndicateRegard; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatComputationDownRegard.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatComputationDownRegard.m deleted file mode 100644 index 26111154..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatComputationDownRegard.m +++ /dev/null @@ -1,146 +0,0 @@ -// -// YMAcrossRoomPKCountDownView.m -// YUMI -// -// Created by YUMI on 2022/7/14. -// - -#import "YUMIThroughoutChamberCombatComputationDownRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" - -@interface YUMIThroughoutChamberCombatComputationDownRegard() - -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UILabel *intratemporalSequencignation; -@property (strong, nonatomic) dispatch_source_t timer; - -@end - -@implementation YUMIThroughoutChamberCombatComputationDownRegard - -- (void)dealloc { - if (self.timer) { - dispatch_source_cancel(self.timer); - self.timer = nil; - } -} - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.encourageIndicateRegard]; - [self addSubview:self.titleLabel]; - [self addSubview:self.intratemporalSequencignation]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(52); - make.height.mas_equalTo(52); - }]; - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(0); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(25); - make.height.mas_equalTo(10); - }]; - [self.intratemporalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.titleLabel); - make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(2); - make.height.mas_equalTo(10); - }]; -} - -#pragma mark - 倒计时 -- (void)unfoildComputtowardsiondownAboutIntrtowardsemporal:(long)time { - __block long tempTime = time; - if (self.timer == nil) { - @kWeakify(self); - dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); - self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); - dispatch_source_set_timer(self.timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); - dispatch_source_set_event_handler(self.timer, ^{ - @kStrongify(self); - if(tempTime <= 0){ - dispatch_source_cancel(self.timer); - self.timer = nil; - dispatch_async(dispatch_get_main_queue(), ^{ - [self removeFromSuperview]; - }); - } else { - dispatch_async(dispatch_get_main_queue(), ^{ - - [self throughoutChamberCombatDeficituceddownUnfoild:tempTime]; - }); - tempTime--; - } - }); - dispatch_resume(self.timer); - } -} - -- (void)throughoutChamberCombatDeficituceddownUnfoild:(NSInteger)time { - NSInteger minute = time / 60; - NSInteger second = (time % 60); - NSInteger hour = time/3600; - NSString *timeStr; - if (hour > 0) { - minute = minute % 60; - timeStr = [NSString stringWithFormat:@"%02zd:%02zd:%02zd", hour, minute, second]; - } else { - timeStr = [NSString stringWithFormat:@"%02zd:%02zd", minute, second]; - } - self.intratemporalSequencignation.text = timeStr; - if (time <= 30) { - self.intratemporalSequencignation.textColor = UIColorFromRGB(0xFF87A1); - } else { - self.intratemporalSequencignation.textColor = UIColorFromRGB(0xFFF600); - } -} - -- (void)setStartTime:(long long)startTime { - long long time2 = (long long)([[NSDate date] timeIntervalSince1970]*1000); - long aTime = (long)(startTime - time2) / 1000; - [self unfoildComputtowardsiondownAboutIntrtowardsemporal:aTime]; -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_acrossPK_countDown_background"]; - } - return _encourageIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:10]; - _titleLabel.textColor = [UIColor whiteColor]; - _titleLabel.text = @"下一场PK"; - } - return _titleLabel; -} - -- (UILabel *)intratemporalSequencignation { - if (!_intratemporalSequencignation) { - _intratemporalSequencignation = [[UILabel alloc] init]; - _intratemporalSequencignation.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - _intratemporalSequencignation.textColor = UIColorFromRGB(0xFFF333); - _intratemporalSequencignation.text = @"00:00"; - } - return _intratemporalSequencignation; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatConsequentRegard.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatConsequentRegard.h deleted file mode 100644 index 92813506..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatConsequentRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMAcrossRoomPKResultView.h -// YUMI -// -// Created by YUMI on 2022/1/12. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ThroughoutChamberCombatFasciaboardMatrix; -@interface YUMIThroughoutChamberCombatConsequentRegard : UIView -@property (nonatomic, strong) ThroughoutChamberCombatFasciaboardMatrix *data; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatConsequentRegard.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatConsequentRegard.m deleted file mode 100644 index 228c17de..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatConsequentRegard.m +++ /dev/null @@ -1,487 +0,0 @@ -// -// YMAcrossRoomPKResultView.m -// YUMI -// -// Created by YUMI on 2022/1/12. -// - -#import "YUMIThroughoutChamberCombatConsequentRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "MKJPopup.h" -#import "NSArray+Safe.h" -#import "ThroughoutChamberCombatFasciaboardMatrix.h" - -@interface YUMIThroughoutChamberCombatConsequentRegard() - -@property (nonatomic, strong) UIImageView *backgroundIndicateRegard; -@property (nonatomic, strong) UIButton *concludeBtuton; -@property (nonatomic, strong) UIView *mainView; -@property (nonatomic, strong) UIImageView *deficitBackgroundIndicateRegard; -@property (nonatomic, strong) UIImageView *deficitVictoryFigureRegard; -@property (nonatomic, strong) NetIndicateRegard *deficitIntelligenceIndicateRegard; -@property (nonatomic, strong) UILabel *deficitChamberChampionSequencignation; -@property (nonatomic, strong) UILabel *deficitBWSttessSequencignation; -@property (nonatomic, strong) UIImageView *middleIndicateRegard; -@property (nonatomic, strong) UIImageView *disappointedBackgroundIndicateRegard; -@property (nonatomic, strong) UIImageView *disappointedVictoryFigureRegard; -@property (nonatomic, strong) NetIndicateRegard *disappointedIntelligenceIndicateRegard; -@property (nonatomic, strong) UILabel *disappointedChamberChampionSequencignation; -@property (nonatomic, strong) UILabel *disappointedBWSttessSequencignation; -@property (nonatomic, strong) UIImageView *efficacyBackgroundIndicateRegard; -@property (nonatomic, strong) NetIndicateRegard *efficacyIntelligenceportrait; -@property (nonatomic, strong) UIImageView *efficacyIntelligencePenetrate; -@property (nonatomic, strong) UILabel *efficacyMonicer; -@property (nonatomic, strong) UILabel *efficacyBWSttess; -@property (nonatomic, strong) UIImageView *fascinationBackgroundIndicateRegard; -@property (nonatomic, strong) NetIndicateRegard *fascinationIntelligenceportrait; -@property (nonatomic, strong) UIImageView *fascinationIntelligencePenetrate; -@property (nonatomic, strong) UILabel *fascinationMonicer; -@property (nonatomic, strong) UILabel *fascinationBWSttess; - -@end - -@implementation YUMIThroughoutChamberCombatConsequentRegard - -#pragma mark - life cycle - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initRegard]; - [self initConstrtowardsions]; - } - return self; -} - -- (void)initRegard { - [self addSubview:self.backgroundIndicateRegard]; - [self addSubview:self.concludeBtuton]; - [self addSubview:self.mainView]; - - [self.mainView addSubview:self.deficitBackgroundIndicateRegard]; - [self.mainView addSubview:self.deficitVictoryFigureRegard]; - [self.mainView addSubview:self.deficitIntelligenceIndicateRegard]; - [self.mainView addSubview:self.deficitChamberChampionSequencignation]; - [self.mainView addSubview:self.deficitBWSttessSequencignation]; - - [self.mainView addSubview:self.disappointedBackgroundIndicateRegard]; - [self.mainView addSubview:self.disappointedVictoryFigureRegard]; - [self.mainView addSubview:self.disappointedIntelligenceIndicateRegard]; - [self.mainView addSubview:self.disappointedChamberChampionSequencignation]; - [self.mainView addSubview:self.disappointedBWSttessSequencignation]; - - [self.mainView addSubview:self.middleIndicateRegard]; - - [self.mainView addSubview:self.efficacyBackgroundIndicateRegard]; - [self.mainView addSubview:self.efficacyIntelligenceportrait]; - [self.mainView addSubview:self.efficacyIntelligencePenetrate]; - [self.mainView addSubview:self.efficacyMonicer]; - [self.mainView addSubview:self.efficacyBWSttess]; - - [self.mainView addSubview:self.fascinationBackgroundIndicateRegard]; - [self.mainView addSubview:self.fascinationIntelligenceportrait]; - [self.mainView addSubview:self.fascinationIntelligencePenetrate]; - [self.mainView addSubview:self.fascinationMonicer]; - [self.mainView addSubview:self.fascinationBWSttess]; -} - -- (void)initConstrtowardsions { - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(0); - }]; - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.right.mas_equalTo(0); - make.width.height.mas_equalTo(22); - }]; - [self.mainView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(120); - make.left.mas_equalTo(15); - make.right.mas_equalTo(-15); - make.bottom.mas_equalTo(-23); - }]; - [self.deficitBackgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(12); - make.left.mas_equalTo(6); - make.width.mas_equalTo(151); - make.height.mas_equalTo(135); - }]; - [self.deficitVictoryFigureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(_deficitBackgroundIndicateRegard); - make.left.mas_equalTo(18); - make.width.mas_equalTo(49); - make.height.mas_equalTo(27); - }]; - [self.deficitIntelligenceIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(34); - make.left.mas_equalTo(47); - make.width.height.mas_equalTo(60); - }]; - [self.deficitChamberChampionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.deficitIntelligenceIndicateRegard.mas_bottom).mas_offset(8); - make.centerX.mas_equalTo(self.deficitIntelligenceIndicateRegard); - make.height.mas_equalTo(12); - make.left.mas_equalTo(self.deficitBackgroundIndicateRegard.mas_left).mas_offset(20); - }]; - [self.deficitBWSttessSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.deficitIntelligenceIndicateRegard); - make.top.mas_equalTo(self.deficitChamberChampionSequencignation.mas_bottom).offset(8); - make.left.mas_equalTo(self.deficitBackgroundIndicateRegard.mas_left).mas_offset(20); - }]; - [self.middleIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(60); - make.centerX.mas_equalTo(self.mainView); - make.width.mas_equalTo(70); - make.height.mas_equalTo(49); - }]; - [self.disappointedBackgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(18); - make.right.mas_equalTo(-6); - make.width.mas_equalTo(151); - make.height.mas_equalTo(135); - }]; - [self.disappointedVictoryFigureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.disappointedBackgroundIndicateRegard); - make.right.mas_equalTo(-16); - make.width.mas_equalTo(49); - make.height.mas_equalTo(27); - }]; - [self.disappointedIntelligenceIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(41); - make.right.mas_equalTo(-47); - make.width.height.mas_equalTo(60); - }]; - [self.disappointedChamberChampionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.disappointedIntelligenceIndicateRegard.mas_bottom).mas_offset(8); - make.centerX.mas_equalTo(self.disappointedIntelligenceIndicateRegard); - make.height.mas_equalTo(12); - make.left.mas_equalTo(self.disappointedBackgroundIndicateRegard.mas_left).mas_offset(16); - }]; - [self.disappointedBWSttessSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.disappointedIntelligenceIndicateRegard); - make.top.mas_equalTo(self.disappointedChamberChampionSequencignation.mas_bottom).offset(8); - make.left.mas_equalTo(self.disappointedBackgroundIndicateRegard.mas_left).mas_offset(16); - }]; - [self.efficacyBackgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(0); - make.top.mas_equalTo(self.disappointedBackgroundIndicateRegard.mas_bottom).mas_offset(10); - make.height.mas_equalTo(64); - }]; - [self.efficacyIntelligenceportrait mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(70); - make.bottom.mas_equalTo(self.efficacyBackgroundIndicateRegard.mas_bottom).mas_offset(-6); - make.width.height.mas_equalTo(44); - }]; - [self.efficacyIntelligencePenetrate mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.efficacyIntelligenceportrait); - make.bottom.mas_equalTo(self.efficacyIntelligenceportrait); - make.width.mas_equalTo(44); - make.height.mas_equalTo(53); - }]; - [self.efficacyMonicer mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.efficacyIntelligencePenetrate.mas_right).mas_offset(7); - make.bottom.mas_equalTo(self.efficacyIntelligenceportrait.mas_centerY).mas_offset(-3); - make.height.mas_equalTo(14); - make.right.mas_equalTo(-20); - }]; - [self.efficacyBWSttess mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.efficacyMonicer); - make.top.mas_equalTo(self.efficacyMonicer.mas_bottom).mas_offset(6); - make.height.mas_equalTo(13); - make.right.mas_equalTo(-20); - }]; - - [self.fascinationBackgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(0); - make.top.mas_equalTo(self.efficacyBackgroundIndicateRegard.mas_bottom).mas_offset(6); - make.height.mas_equalTo(64); - }]; - [self.fascinationIntelligenceportrait mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(70); - make.bottom.mas_equalTo(self.fascinationBackgroundIndicateRegard.mas_bottom).mas_offset(-6); - make.width.height.mas_equalTo(44); - }]; - [self.fascinationIntelligencePenetrate mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.fascinationIntelligenceportrait); - make.bottom.mas_equalTo(self.fascinationIntelligenceportrait); - make.width.mas_equalTo(44); - make.height.mas_equalTo(53); - }]; - [self.fascinationMonicer mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.fascinationIntelligencePenetrate.mas_right).mas_offset(7); - make.bottom.mas_equalTo(self.fascinationIntelligenceportrait.mas_centerY).mas_offset(-3); - make.height.mas_equalTo(14); - make.right.mas_equalTo(-20); - }]; - [self.fascinationBWSttess mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.fascinationMonicer); - make.top.mas_equalTo(self.fascinationMonicer.mas_bottom).mas_offset(6); - make.height.mas_equalTo(13); - make.right.mas_equalTo(-20); - }]; -} - - -- (void)setData:(ThroughoutChamberCombatFasciaboardMatrix *)data { - if (data.winUid == data.cUid) { - self.backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_result_win_background"]; - self.efficacyBackgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_result_win_person_background"]; - self.fascinationBackgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_result_win_person_background"]; - [self.concludeBtuton setImage:[UIImage imageNamed:@"yumi_scope_across_pk_result_win_close"] forState:UIControlStateNormal]; - self.deficitVictoryFigureRegard.hidden = NO; - self.disappointedVictoryFigureRegard.hidden = YES; - } else if (data.winUid == data.aUid) { - self.backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_result_fail_background"]; - self.efficacyBackgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_result_fail_person_background"]; - self.fascinationBackgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_result_fail_person_background"]; - [self.concludeBtuton setImage:[UIImage imageNamed:@"yumi_scope_across_pk_result_fail_close"] forState:UIControlStateNormal]; - self.deficitVictoryFigureRegard.hidden = YES; - self.disappointedVictoryFigureRegard.hidden = NO; - } else { - self.backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_result_tie_background"]; - self.efficacyBackgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_result_tie_person_background"]; - self.fascinationBackgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_result_tie_person_background"]; - [self.concludeBtuton setImage:[UIImage imageNamed:@"yumi_scope_across_pk_result_tie_close"] forState:UIControlStateNormal]; - self.deficitVictoryFigureRegard.hidden = YES; - self.disappointedVictoryFigureRegard.hidden = YES; - } - self.deficitIntelligenceIndicateRegard.imageUrl = data.cAvatar; - self.disappointedIntelligenceIndicateRegard.imageUrl = data.aAvatar; - self.deficitChamberChampionSequencignation.text = data.cTitle; - self.disappointedChamberChampionSequencignation.text = data.aTitle; - self.deficitBWSttessSequencignation.text = [NSString stringWithFormat:@"%lld", data.cAmount]; - self.disappointedBWSttessSequencignation.text = [NSString stringWithFormat:@"%lld", data.aAmount]; - if (data.csRank.count > 0) { - ThroughoutChamberPkRateMatrix *contributeInfo = [data.csRank secureGroalTowardsIndictowardsrix1:0]; - self.efficacyMonicer.text = contributeInfo.nick ? contributeInfo.nick : @""; - self.efficacyBWSttess.text = [NSString stringWithFormat:@"神豪值:%@", contributeInfo.amount? contributeInfo.amount : @""]; - self.efficacyIntelligenceportrait.imageUrl = contributeInfo.avatar; - } - - if (data.crRank.count > 0) { - ThroughoutChamberPkRateMatrix *charmInfo = [data.crRank secureGroalTowardsIndictowardsrix1:0]; - self.fascinationMonicer.text = charmInfo.nick ? charmInfo.nick : @""; - self.fascinationBWSttess.text = [NSString stringWithFormat:@"魅力值:%@", charmInfo.amount? charmInfo.amount : @""]; - self.fascinationIntelligenceportrait.imageUrl = charmInfo.avatar; - } -} - -- (void)onConcludeBtutonTicktack:(UIButton *)btn { - [MKJPopup dismiss]; -} - -#pragma mark - getters and setters -- (UIImageView *)backgroundIndicateRegard { - if (!_backgroundIndicateRegard) { - _backgroundIndicateRegard = [[UIImageView alloc] init]; - _backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_result_win_background"]; - } - return _backgroundIndicateRegard; -} - -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_concludeBtuton addTarget:self action:@selector(onConcludeBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - } - return _concludeBtuton; -} - -- (UIView *)mainView { - if (!_mainView) { - _mainView = [[UIView alloc] init]; - } - return _mainView; -} -- (UIImageView *)deficitBackgroundIndicateRegard { - if (!_deficitBackgroundIndicateRegard) { - _deficitBackgroundIndicateRegard = [[UIImageView alloc] init]; - _deficitBackgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_result_red_background"]; - } - return _deficitBackgroundIndicateRegard; -} -- (UIImageView *)deficitVictoryFigureRegard { - if (!_deficitVictoryFigureRegard) { - _deficitVictoryFigureRegard = [[UIImageView alloc] init]; - _deficitVictoryFigureRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_result_win_pic"]; - } - return _deficitVictoryFigureRegard; -} - -- (NetIndicateRegard *)deficitIntelligenceIndicateRegard { - if (!_deficitIntelligenceIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _deficitIntelligenceIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _deficitIntelligenceIndicateRegard.layer.cornerRadius = 30; - _deficitIntelligenceIndicateRegard.layer.masksToBounds = YES; - _deficitIntelligenceIndicateRegard.layer.borderWidth = 1; - _deficitIntelligenceIndicateRegard.layer.borderColor = [UIColor whiteColor].CGColor; - } - return _deficitIntelligenceIndicateRegard; -} - -- (UILabel *)deficitChamberChampionSequencignation { - if (!_deficitChamberChampionSequencignation) { - _deficitChamberChampionSequencignation = [[UILabel alloc] init]; - _deficitChamberChampionSequencignation.textColor = [UIColor whiteColor]; - _deficitChamberChampionSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _deficitChamberChampionSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _deficitChamberChampionSequencignation; -} -- (UILabel *)deficitBWSttessSequencignation { - if (!_deficitBWSttessSequencignation) { - _deficitBWSttessSequencignation = [[UILabel alloc] init]; - _deficitBWSttessSequencignation.textColor = [UIColor whiteColor]; - _deficitBWSttessSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; - _deficitBWSttessSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _deficitBWSttessSequencignation; -} - -- (UIImageView *)middleIndicateRegard { - if (!_middleIndicateRegard) { - _middleIndicateRegard = [[UIImageView alloc] init]; - _middleIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_result_pk_pic"]; - } - return _middleIndicateRegard; -} - -- (UIImageView *)disappointedBackgroundIndicateRegard { - if (!_disappointedBackgroundIndicateRegard) { - _disappointedBackgroundIndicateRegard = [[UIImageView alloc] init]; - _disappointedBackgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_result_win_blue_background"]; - } - return _disappointedBackgroundIndicateRegard; -} -- (UIImageView *)disappointedVictoryFigureRegard { - if (!_disappointedVictoryFigureRegard) { - _disappointedVictoryFigureRegard = [[UIImageView alloc] init]; - _disappointedVictoryFigureRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_result_win_pic"]; - } - return _disappointedVictoryFigureRegard; -} - -- (NetIndicateRegard *)disappointedIntelligenceIndicateRegard { - if (!_disappointedIntelligenceIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _disappointedIntelligenceIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _disappointedIntelligenceIndicateRegard.layer.masksToBounds = YES; - _disappointedIntelligenceIndicateRegard.layer.cornerRadius = 30; - _disappointedIntelligenceIndicateRegard.layer.borderWidth = 1; - _disappointedIntelligenceIndicateRegard.layer.borderColor = [UIColor whiteColor].CGColor; - } - return _disappointedIntelligenceIndicateRegard; -} - -- (UILabel *)disappointedChamberChampionSequencignation { - if (!_disappointedChamberChampionSequencignation) { - _disappointedChamberChampionSequencignation = [[UILabel alloc] init]; - _disappointedChamberChampionSequencignation.textColor = [UIColor whiteColor]; - _disappointedChamberChampionSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _disappointedChamberChampionSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _disappointedChamberChampionSequencignation; -} -- (UILabel *)disappointedBWSttessSequencignation { - if (!_disappointedBWSttessSequencignation) { - _disappointedBWSttessSequencignation = [[UILabel alloc] init]; - _disappointedBWSttessSequencignation.textColor = [UIColor whiteColor]; - _disappointedBWSttessSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; - _disappointedBWSttessSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _disappointedBWSttessSequencignation; -} - -- (UIImageView *)efficacyBackgroundIndicateRegard { - if (!_efficacyBackgroundIndicateRegard) { - _efficacyBackgroundIndicateRegard = [[UIImageView alloc] init]; - } - return _efficacyBackgroundIndicateRegard; -} - -- (NetIndicateRegard *)efficacyIntelligenceportrait { - if (!_efficacyIntelligenceportrait) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _efficacyIntelligenceportrait = [[NetIndicateRegard alloc] initWithConfig:config]; - _efficacyIntelligenceportrait.layer.masksToBounds = YES; - _efficacyIntelligenceportrait.layer.cornerRadius = 22; - } - return _efficacyIntelligenceportrait; -} - -- (UIImageView *)efficacyIntelligencePenetrate { - if (!_efficacyIntelligencePenetrate) { - _efficacyIntelligencePenetrate = [[UIImageView alloc] init]; - _efficacyIntelligencePenetrate.image = [UIImage imageNamed:@"yumi_scope_across_pk_panel_contribute_head"]; - } - return _efficacyIntelligencePenetrate; -} -- (UILabel *)efficacyMonicer { - if (!_efficacyMonicer) { - _efficacyMonicer = [[UILabel alloc] init]; - _efficacyMonicer.textColor = [UIColor whiteColor]; - _efficacyMonicer.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - } - return _efficacyMonicer; -} - -- (UILabel *)efficacyBWSttess { - if (!_efficacyBWSttess) { - _efficacyBWSttess = [[UILabel alloc] init]; - _efficacyBWSttess.textColor = [UIColor whiteColor]; - _efficacyBWSttess.font = [UIFont systemFontOfSize:13]; - } - return _efficacyBWSttess; -} - -- (UIImageView *)fascinationBackgroundIndicateRegard { - if (!_fascinationBackgroundIndicateRegard) { - _fascinationBackgroundIndicateRegard = [[UIImageView alloc] init]; - } - return _fascinationBackgroundIndicateRegard; -} - -- (NetIndicateRegard *)fascinationIntelligenceportrait { - if (!_fascinationIntelligenceportrait) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _fascinationIntelligenceportrait = [[NetIndicateRegard alloc] initWithConfig:config]; - _fascinationIntelligenceportrait.layer.masksToBounds = YES; - _fascinationIntelligenceportrait.layer.cornerRadius = 22; - } - return _fascinationIntelligenceportrait; -} - -- (UIImageView *)fascinationIntelligencePenetrate { - if (!_fascinationIntelligencePenetrate) { - _fascinationIntelligencePenetrate = [[UIImageView alloc] init]; - _fascinationIntelligencePenetrate.image = [UIImage imageNamed:@"yumi_scope_across_pk_panel_charm_head"]; - } - return _fascinationIntelligencePenetrate; -} -- (UILabel *)fascinationMonicer { - if (!_fascinationMonicer) { - _fascinationMonicer = [[UILabel alloc] init]; - _fascinationMonicer.textColor = [UIColor whiteColor]; - _fascinationMonicer.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - } - return _fascinationMonicer; -} - -- (UILabel *)fascinationBWSttess { - if (!_fascinationBWSttess) { - _fascinationBWSttess = [[UILabel alloc] init]; - _fascinationBWSttess.textColor = [UIColor whiteColor]; - _fascinationBWSttess.font = [UIFont systemFontOfSize:13]; - } - return _fascinationBWSttess; -} -@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatFasciaboardConsumerRegard.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatFasciaboardConsumerRegard.h deleted file mode 100644 index 17d459c2..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatFasciaboardConsumerRegard.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// YMAcrossRoomPKPanelUserView.h -// YUMI -// -// Created by YUMI on 2022/1/11. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ThroughoutChamberPkRateMatrix; -typedef NS_ENUM(NSInteger, ThroughoutChamberCombatPanelConsumerGenre) { - - ThroughoutChamberCombatPanelConsumerGenre_Red_Contribute = 1, - - ThroughoutChamberCombatPanelConsumerGenre_Red_Charm, - - ThroughoutChamberCombatPanelConsumerGenre_Blue_Contribute, - - ThroughoutChamberCombatPanelConsumerGenre_Blue_Charm, -}; - -@interface YUMIThroughoutChamberCombatFasciaboardConsumerRegard : UIView -@property (nonatomic,assign) ThroughoutChamberCombatPanelConsumerGenre type; - -@property (nonatomic,strong, nullable) ThroughoutChamberPkRateMatrix * fasciadirectorateAbstract; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatFasciaboardConsumerRegard.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatFasciaboardConsumerRegard.m deleted file mode 100644 index f9f45d75..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatFasciaboardConsumerRegard.m +++ /dev/null @@ -1,153 +0,0 @@ -// -// YMAcrossRoomPKPanelUserView.m -// YUMI -// -// Created by YUMI on 2022/1/11. -// - -#import "YUMIThroughoutChamberCombatFasciaboardConsumerRegard.h" -#import -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "ThroughoutChamberCombatFasciaboardMatrix.h" - -@interface YUMIThroughoutChamberCombatFasciaboardConsumerRegard () -@property (nonatomic, strong) UIImageView *intelligencewearIndicateRegard; -@property (nonatomic, strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UIButton *tangerineBtuton; - -@end - -@implementation YUMIThroughoutChamberCombatFasciaboardConsumerRegard - -#pragma mark - Life Style -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.intelligencewearIndicateRegard]; - [self addSubview:self.intelligenceportraitIndicateRegard]; - [self addSubview:self.tangerineBtuton]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(32); - make.height.mas_equalTo(38); - }]; - - [self.intelligencewearIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.centerY.mas_equalTo(self); - make.height.mas_equalTo(38); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self); - make.bottom.mas_equalTo(self.intelligencewearIndicateRegard); - make.height.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_width); - }]; - - [self.tangerineBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(32); - make.height.mas_equalTo(10); - make.bottom.centerX.mas_equalTo(self); - }]; -} - - -#pragma mark - getters and setters -- (void)setType:(ThroughoutChamberCombatPanelConsumerGenre)type { - _type = type; - NSString * headwearName; - NSString * avatarPlaceName; - UIColor * coinColorStart; - UIColor * coinColorEnd; - switch (type) { - case ThroughoutChamberCombatPanelConsumerGenre_Red_Contribute: - case ThroughoutChamberCombatPanelConsumerGenre_Blue_Contribute: - headwearName = @"room_across_pk_panel_contribute_head"; - coinColorStart = UIColorFromRGB(0xFF9813); - coinColorEnd = UIColorFromRGB(0xFFB22B); - avatarPlaceName = @"room_across_pk_panel_contribute_avatar"; - break; - case ThroughoutChamberCombatPanelConsumerGenre_Red_Charm: - case ThroughoutChamberCombatPanelConsumerGenre_Blue_Charm: - headwearName = @"room_across_pk_panel_charm_head"; - coinColorStart = UIColorFromRGB(0xFF5FC1); - coinColorEnd = UIColorFromRGB(0xFA81FF); - avatarPlaceName = @"room_across_pk_panel_charm_avatar"; - break; - - default: - break; - } - self.intelligencewearIndicateRegard.image = [UIImage imageNamed:headwearName]; - self.intelligenceportraitIndicateRegard.image = [UIImage imageNamed:avatarPlaceName]; - [self.tangerineBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[coinColorStart, coinColorEnd] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - if (self.tag == 1000) { - self.intelligencewearIndicateRegard.hidden = NO; - } else { - self.intelligencewearIndicateRegard.hidden = YES; - } - -} - -- (void)setFasciadirectorateAbstract:(ThroughoutChamberPkRateMatrix *)fasciadirectorateAbstract { - _fasciadirectorateAbstract = fasciadirectorateAbstract; - if (_fasciadirectorateAbstract) { - self.intelligenceportraitIndicateRegard.imageUrl = _fasciadirectorateAbstract.avatar; - NSString * amount = _fasciadirectorateAbstract.amount.length > 0 ? _fasciadirectorateAbstract.amount : @""; - [self.tangerineBtuton setTitle:amount forState:UIControlStateNormal]; - self.tangerineBtuton.hidden = !amount; - } else { - if (self.type == ThroughoutChamberCombatPanelConsumerGenre_Red_Contribute || self.type == ThroughoutChamberCombatPanelConsumerGenre_Blue_Contribute) { - self.intelligenceportraitIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_panel_contribute_avatar"]; - } else { - self.intelligenceportraitIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_panel_charm_avatar"]; - } - - [self.tangerineBtuton setTitle:@"0" forState:UIControlStateNormal]; - self.tangerineBtuton.hidden = YES; - } -} - - -- (UIImageView *)intelligencewearIndicateRegard { - if (!_intelligencewearIndicateRegard) { - _intelligencewearIndicateRegard = [[UIImageView alloc] init]; - _intelligencewearIndicateRegard.userInteractionEnabled = YES; - } - return _intelligencewearIndicateRegard; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 32 / 2; - } - return _intelligenceportraitIndicateRegard; -} - -- (UIButton *)tangerineBtuton { - if (!_tangerineBtuton) { - _tangerineBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_tangerineBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _tangerineBtuton.titleLabel.font = [UIFont systemFontOfSize:9 weight:UIFontWeightMedium]; - _tangerineBtuton.layer.masksToBounds = YES; - _tangerineBtuton.layer.cornerRadius = 5; - _tangerineBtuton.hidden = YES; - } - return _tangerineBtuton; -} -@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatForceEndConsequentRegard.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatForceEndConsequentRegard.h deleted file mode 100644 index bef63338..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatForceEndConsequentRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMAcrossRoomPKForceEndResultView.h -// YUMI -// -// Created by YUMI on 2022/1/12. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ThroughoutChamberCombatFasciaboardMatrix; -@interface YUMIThroughoutChamberCombatForceEndConsequentRegard : UIView -@property (nonatomic, strong) ThroughoutChamberCombatFasciaboardMatrix *data; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatForceEndConsequentRegard.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatForceEndConsequentRegard.m deleted file mode 100644 index ccdf9077..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatForceEndConsequentRegard.m +++ /dev/null @@ -1,264 +0,0 @@ -// -// YMAcrossRoomPKForceEndResultView.m -// YUMI -// -// Created by YUMI on 2022/1/12. -// - -#import "YUMIThroughoutChamberCombatForceEndConsequentRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "MKJPopup.h" -#import "ThroughoutChamberCombatFasciaboardMatrix.h" - -@interface YUMIThroughoutChamberCombatForceEndConsequentRegard() - - -@property (nonatomic, strong) UIImageView *backgroundIndicateRegard; -@property (nonatomic, strong) UIButton *concludeBtuton; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UIImageView *deficitBackgroundIndicateRegard; -@property (nonatomic, strong) NetIndicateRegard *deficitIntelligenceIndicateRegard; -@property (nonatomic, strong) UILabel *deficitChamberChampionSequencignation; -@property (nonatomic, strong) UILabel *deficitBWSttessSequencignation; -@property (nonatomic, strong) UIImageView *middleIndicateRegard; -@property (nonatomic, strong) UIImageView *disappointedBackgroundIndicateRegard; -@property (nonatomic, strong) UIImageView *disappointedVictoryFigureRegard; -@property (nonatomic, strong) NetIndicateRegard *disappointedIntelligenceIndicateRegard; -@property (nonatomic, strong) UILabel *disappointedChamberChampionSequencignation; -@property (nonatomic, strong) UILabel *disappointedBWSttessSequencignation; - -@end - -@implementation YUMIThroughoutChamberCombatForceEndConsequentRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initRegard]; - [self initConstrtowardsions]; - } - return self; -} - -- (void)initRegard { - [self addSubview:self.backgroundIndicateRegard]; - [self addSubview:self.concludeBtuton]; - [self addSubview:self.titleLabel]; - - [self addSubview:self.deficitBackgroundIndicateRegard]; - [self addSubview:self.deficitIntelligenceIndicateRegard]; - [self addSubview:self.deficitChamberChampionSequencignation]; - [self addSubview:self.deficitBWSttessSequencignation]; - - [self addSubview:self.disappointedBackgroundIndicateRegard]; - [self addSubview:self.disappointedIntelligenceIndicateRegard]; - [self addSubview:self.disappointedChamberChampionSequencignation]; - [self addSubview:self.disappointedBWSttessSequencignation]; - - [self addSubview:self.middleIndicateRegard]; - -} - -- (void)initConstrtowardsions { - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(0); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(18); - make.height.mas_equalTo(18); - }]; - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-17); - make.width.height.mas_equalTo(22); - make.centerY.mas_equalTo(self.titleLabel); - }]; - [self.deficitBackgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(55); - make.left.mas_equalTo(17); - make.width.mas_equalTo(133); - make.height.mas_equalTo(119); - }]; - [self.deficitIntelligenceIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(75); - make.left.mas_equalTo(54); - make.width.height.mas_equalTo(52); - }]; - [self.deficitChamberChampionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.deficitIntelligenceIndicateRegard.mas_bottom).mas_offset(8); - make.centerX.mas_equalTo(self.deficitIntelligenceIndicateRegard); - make.height.mas_equalTo(12); - make.left.mas_equalTo(self.deficitBackgroundIndicateRegard.mas_left).mas_offset(20); - }]; - [self.deficitBWSttessSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.deficitIntelligenceIndicateRegard); - make.top.mas_equalTo(self.deficitChamberChampionSequencignation.mas_bottom).offset(6); - make.height.mas_equalTo(12); - make.left.mas_equalTo(self.deficitBackgroundIndicateRegard.mas_left).mas_offset(20); - }]; - [self.middleIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(87); - make.centerX.mas_equalTo(self); - make.width.mas_equalTo(62); - make.height.mas_equalTo(43); - }]; - [self.disappointedBackgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(61); - make.right.mas_equalTo(-17); - make.width.mas_equalTo(133); - make.height.mas_equalTo(119); - }]; - [self.disappointedIntelligenceIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(81); - make.right.mas_equalTo(-54); - make.width.height.mas_equalTo(52); - }]; - [self.disappointedChamberChampionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.disappointedIntelligenceIndicateRegard.mas_bottom).mas_offset(8); - make.centerX.mas_equalTo(self.disappointedIntelligenceIndicateRegard); - make.height.mas_equalTo(12); - make.left.mas_equalTo(self.disappointedBackgroundIndicateRegard.mas_left).mas_offset(16); - }]; - [self.disappointedBWSttessSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.disappointedIntelligenceIndicateRegard); - make.left.mas_equalTo(self.disappointedBackgroundIndicateRegard.mas_left).mas_offset(16); - make.top.mas_equalTo(self.disappointedChamberChampionSequencignation.mas_bottom).offset(6); - make.height.mas_equalTo(12); - }]; -} - -- (void)setData:(ThroughoutChamberCombatFasciaboardMatrix *)data { - if (data) { - self.deficitIntelligenceIndicateRegard.imageUrl = data.cAvatar; - self.disappointedIntelligenceIndicateRegard.imageUrl = data.aAvatar; - self.deficitChamberChampionSequencignation.text = data.cTitle; - self.disappointedChamberChampionSequencignation.text = data.aTitle; - self.deficitBWSttessSequencignation.text = [NSString stringWithFormat:@"%lld", data.cAmount]; - self.disappointedBWSttessSequencignation.text = [NSString stringWithFormat:@"%lld", data.aAmount]; - } -} - -- (void)onConcludeBtutonTicktack:(UIButton *)btn { - [MKJPopup dismiss]; -} - -#pragma mark - getters and setters -- (UIImageView *)backgroundIndicateRegard { - if (!_backgroundIndicateRegard) { - _backgroundIndicateRegard = [[UIImageView alloc] init]; - _backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_result_forcednd_background"]; - } - return _backgroundIndicateRegard; -} - -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_concludeBtuton addTarget:self action:@selector(onConcludeBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_scope_across_pk_invite_result_close"] forState:UIControlStateNormal]; - } - return _concludeBtuton; -} - -- (UIImageView *)deficitBackgroundIndicateRegard { - if (!_deficitBackgroundIndicateRegard) { - _deficitBackgroundIndicateRegard = [[UIImageView alloc] init]; - _deficitBackgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_result_forceend_red_background"]; - } - return _deficitBackgroundIndicateRegard; -} - -- (NetIndicateRegard *)deficitIntelligenceIndicateRegard { - if (!_deficitIntelligenceIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _deficitIntelligenceIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _deficitIntelligenceIndicateRegard.layer.cornerRadius = 26; - _deficitIntelligenceIndicateRegard.layer.masksToBounds = YES; - _deficitIntelligenceIndicateRegard.layer.borderWidth = 1; - _deficitIntelligenceIndicateRegard.layer.borderColor = [UIColor whiteColor].CGColor; - } - return _deficitIntelligenceIndicateRegard; -} - -- (UILabel *)deficitChamberChampionSequencignation { - if (!_deficitChamberChampionSequencignation) { - _deficitChamberChampionSequencignation = [[UILabel alloc] init]; - _deficitChamberChampionSequencignation.textColor = [UIColor whiteColor]; - _deficitChamberChampionSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _deficitChamberChampionSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _deficitChamberChampionSequencignation; -} -- (UILabel *)deficitBWSttessSequencignation { - if (!_deficitBWSttessSequencignation) { - _deficitBWSttessSequencignation = [[UILabel alloc] init]; - _deficitBWSttessSequencignation.textColor = [UIColor whiteColor]; - _deficitBWSttessSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; - _deficitBWSttessSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _deficitBWSttessSequencignation; -} - -- (UIImageView *)middleIndicateRegard { - if (!_middleIndicateRegard) { - _middleIndicateRegard = [[UIImageView alloc] init]; - _middleIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_result_forceend_pk_pic"]; - } - return _middleIndicateRegard; -} - -- (UIImageView *)disappointedBackgroundIndicateRegard { - if (!_disappointedBackgroundIndicateRegard) { - _disappointedBackgroundIndicateRegard = [[UIImageView alloc] init]; - _disappointedBackgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_across_pk_result_forceend_blue_background"]; - } - return _disappointedBackgroundIndicateRegard; -} - -- (NetIndicateRegard *)disappointedIntelligenceIndicateRegard { - if (!_disappointedIntelligenceIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _disappointedIntelligenceIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _disappointedIntelligenceIndicateRegard.layer.cornerRadius = 26; - _disappointedIntelligenceIndicateRegard.layer.masksToBounds = YES; - _disappointedIntelligenceIndicateRegard.layer.borderWidth = 1; - _disappointedIntelligenceIndicateRegard.layer.borderColor = [UIColor whiteColor].CGColor; - } - return _disappointedIntelligenceIndicateRegard; -} - -- (UILabel *)disappointedChamberChampionSequencignation { - if (!_disappointedChamberChampionSequencignation) { - _disappointedChamberChampionSequencignation = [[UILabel alloc] init]; - _disappointedChamberChampionSequencignation.textColor = [UIColor whiteColor]; - _disappointedChamberChampionSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _disappointedChamberChampionSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _disappointedChamberChampionSequencignation; -} -- (UILabel *)disappointedBWSttessSequencignation { - if (!_disappointedBWSttessSequencignation) { - _disappointedBWSttessSequencignation = [[UILabel alloc] init]; - _disappointedBWSttessSequencignation.textColor = [UIColor whiteColor]; - _disappointedBWSttessSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; - _disappointedBWSttessSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _disappointedBWSttessSequencignation; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textColor = [UIColor whiteColor]; - _titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightBold]; - _titleLabel.text = YMLocalizedString(@"YUMI_Across_Room_PK_Force_End_Result_View_0"); - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatPreadominantRegard.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatPreadominantRegard.h deleted file mode 100644 index e2a3e392..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatPreadominantRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMAcrossRoomPKRuleView.h -// YUMI -// -// Created by YUMI on 2022/1/10. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIThroughoutChamberCombatPreadominantRegard : UIView - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatPreadominantRegard.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatPreadominantRegard.m deleted file mode 100644 index b87055de..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/YUMIThroughoutChamberCombatPreadominantRegard.m +++ /dev/null @@ -1,94 +0,0 @@ -// -// YMAcrossRoomPKRuleView.m -// YUMI -// -// Created by YUMI on 2022/1/10. -// - -#import "YUMIThroughoutChamberCombatPreadominantRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "MKJPopup.h" - -@interface YUMIThroughoutChamberCombatPreadominantRegard () -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UITextView *preadominantEssayRegard; -@property (nonatomic, strong) UIImageView *backgroundImageView; - -@end - -@implementation YUMIThroughoutChamberCombatPreadominantRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backgroundImageView]; - [self addSubview:self.titleLabel]; - [self addSubview:self.preadominantEssayRegard]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(300, 300)); - }]; - - [self.backgroundImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(0); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(7); - make.centerX.mas_equalTo(self); - make.height.mas_equalTo(18); - }]; - [self.preadominantEssayRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(23); - make.left.mas_equalTo(17); - make.right.mas_equalTo(-18); - make.bottom.mas_equalTo(-17); - }]; -} - -#pragma mark - Event Response -- (void)concludeBtutonTicktack:(UIButton *)button { - [MKJPopup dismiss]; -} - -#pragma mark - Getters And Setters -- (UIImageView *)backgroundImageView { - if (!_backgroundImageView) { - _backgroundImageView = [[UIImageView alloc] init]; - _backgroundImageView.image = [UIImage imageNamed:@"yumi_scope_across_pk_rule_background"]; - } - return _backgroundImageView; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = @"如何开启跨房PK"; - _titleLabel.textColor = [UIColor whiteColor]; - _titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightBold]; - } - return _titleLabel; -} - -- (UITextView *)preadominantEssayRegard { - if (!_preadominantEssayRegard) { - _preadominantEssayRegard = [[UITextView alloc] init]; - _preadominantEssayRegard.textColor = UIColorFromRGB(0xffffff); - _preadominantEssayRegard.backgroundColor = [UIColor clearColor]; - _preadominantEssayRegard.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _preadominantEssayRegard.scrollEnabled = NO; - _preadominantEssayRegard.editable = NO; - _preadominantEssayRegard.text = @"1)只有牌照房房主和超管才可以发起跨房pk,一次只能选择一个牌照房发起;\n2)只有房主和超管才可以接受或拒绝跨房pk请求,若10秒内不点击pk邀请弹窗,弹窗消失,视为自动拒绝;\n3)发起pk时需选择pk时间和pk对象,自定义时间下限为5,上限为180,只能填写整数;\n4)pk发起后,未到pk时间无法自行结束,若有特殊情况需提前结束可联系客服,但本场pk不算胜负。\n"; - } - return _preadominantEssayRegard; -} -@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/XPAcrossRoomPKSelectRoomView.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/XPAcrossRoomPKSelectRoomView.h new file mode 100644 index 00000000..83ce2435 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/XPAcrossRoomPKSelectRoomView.h @@ -0,0 +1,24 @@ +// +// YMAcrossRoomPKSelectRoomView.h +// YUMI +// +// Created by YUMI on 2022/1/10. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPAcrossRoomPKSelectRoomView, AcrossRoomPKInfoModel; +@protocol XPAcrossRoomPKSelectRoomViewDelegate + +- (void)XPAcrossRoomPKSelectRoomView:(XPAcrossRoomPKSelectRoomView *)view didChoosePKRoom:(AcrossRoomPKInfoModel *)pkRoomInfo; + +@end +@interface XPAcrossRoomPKSelectRoomView : UIView +///代理 +@property (nonatomic,weak) id delegate; +///房间的uid +@property (nonatomic,copy) NSString *roomUid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/XPAcrossRoomPKSelectRoomView.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/XPAcrossRoomPKSelectRoomView.m new file mode 100644 index 00000000..20617e45 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/XPAcrossRoomPKSelectRoomView.m @@ -0,0 +1,367 @@ +// +// YMAcrossRoomPKSelectRoomView.m +// YUMI +// +// Created by YUMI on 2022/1/10. +// + +#import "XPAcrossRoomPKSelectRoomView.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "XNDJTDDLoadingTool.h" +#import "UIImage+Utils.h" +#import "Api+AcrossRoomPK.h" +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" +///Model +#import "AcrossRoomPKInfoModel.h" +///View +#import "XPAcrossRoomPKEmptyTableViewCell.h" +#import "XPAcrossRoomPKTableViewCell.h" + +@interface XPAcrossRoomPKSelectRoomView () + +///返回按钮 +@property (nonatomic, strong) UIButton *backButton; +@property (nonatomic, strong) UITableView *tableView; +///确认选择 +@property (nonatomic, strong) UIButton *doneButton; +///输入框背景 +@property (nonatomic,strong) UIView * inputBackView; +///搜索logo +@property (nonatomic,strong) UIButton *searchButton; +///输入框 +@property (nonatomic,strong) UITextField *searchTextField; +///数据源 +@property (nonatomic, strong) NSMutableArray *datasource; +///当前的页数 +@property (nonatomic, assign) NSInteger page; +///是否有更多的数据 +@property (nonatomic,assign) BOOL hasNoMoreData; +///选中的PK房间 +@property (nonatomic, strong) AcrossRoomPKInfoModel *selectRoomInfo; + +@end + +@implementation XPAcrossRoomPKSelectRoomView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + [self initHeaderAndFooterRrfresh]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = UIColorFromRGB(0x2A2A39); + [self addSubview:self.backButton]; + [self addSubview:self.inputBackView]; + [self addSubview:self.tableView]; + [self addSubview:self.doneButton]; + + [self.inputBackView addSubview:self.searchButton]; + [self.inputBackView addSubview:self.searchTextField]; + + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onKeyBoardResign:)]; + [self addGestureRecognizer:tap]; +} + +- (void)initSubViewConstraints { + [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(12); + make.width.mas_equalTo(22); + make.height.mas_equalTo(22); + make.top.mas_equalTo(27); + }]; + + + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.inputBackView.mas_bottom).mas_offset(5); + make.left.right.mas_equalTo(0); + make.bottom.mas_equalTo(self.mas_bottom); + }]; + [self.doneButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(-38); + make.width.mas_equalTo(300); + make.height.mas_equalTo(40); + make.centerX.mas_equalTo(self); + }]; + + [self.inputBackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(30); + make.left.mas_equalTo(self.backButton.mas_right).offset(5); + make.right.mas_equalTo(self.mas_right).offset(-15); + make.centerY.mas_equalTo(self.backButton); + }]; + + [self.searchButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(18, 18)); + make.centerY.mas_equalTo(self.inputBackView); + make.right.mas_equalTo(self.inputBackView).offset(-12); + }]; + + [self.searchTextField mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.inputBackView).offset(25); + make.top.bottom.mas_equalTo(self.inputBackView); + make.right.mas_equalTo(self.searchButton.mas_left).offset(-5); + }]; +} + +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; +} + +#pragma mark - 刷新的fangfa +- (void)headerRefresh { + self.page = 1; + [Api getAcrossRoomPKRoomList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + NSArray * array = [AcrossRoomPKInfoModel modelsWithArray:data.data]; + [self getAcrossRoomPKListSuccess:array state:0]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } roomUid:self.roomUid pageNum:[NSString stringWithFormat:@"%ld", self.page] pageSize:@"20"]; +} + +- (void)footerRefresh { + if (self.hasNoMoreData) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPAcrossRoomPKSelectRoomView0")]; + return; + } + self.page++; + [Api getAcrossRoomPKRoomList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + NSArray * array = [AcrossRoomPKInfoModel modelsWithArray:data.data]; + [self getAcrossRoomPKListSuccess:array state:1]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } roomUid:self.roomUid pageNum:[NSString stringWithFormat:@"%ld", self.page] pageSize:@"20"]; +} + +- (void)getAcrossRoomPKListSuccess:(NSArray *)list state:(int)state { + if (state == 0) { + self.selectRoomInfo = nil; + self.doneButton.enabled = NO; + [self.datasource removeAllObjects]; + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } + if (list.count > 0) { + self.hasNoMoreData = NO; + [self.datasource addObjectsFromArray:list]; + } else { + self.hasNoMoreData = YES; + [self.tableView.mj_footer endRefreshingWithNoMoreData]; + } + [self.tableView reloadData]; +} + +- (void)onKeyBoardResign:(UITapGestureRecognizer *)ges { + [self.searchTextField resignFirstResponder]; +} +#pragma mark - tableviewDelegate +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPAcrossRoomPKTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPAcrossRoomPKTableViewCell class])]; + if (cell == nil) { + cell = [[XPAcrossRoomPKTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPAcrossRoomPKTableViewCell class])]; + } + cell.delegate = self; + AcrossRoomPKInfoModel * pkRoomInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + if (pkRoomInfo.uid.integerValue == self.selectRoomInfo.uid.integerValue) { + pkRoomInfo.hadSelected = YES; + } else { + pkRoomInfo.hadSelected = NO; + } + cell.roomPKInfo = pkRoomInfo; + return cell; + } + + XPAcrossRoomPKEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPAcrossRoomPKEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPAcrossRoomPKEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPAcrossRoomPKEmptyTableViewCell class])]; + } + return cell; + +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + return 75; + } + return (370 + kSafeAreaBottomHeight); +} + +#pragma mark - XPAcrossRoomPKTableViewCellDelegate +- (void)xPAcrossRoomPKTableViewCell:(XPAcrossRoomPKTableViewCell *)view didChooseRoom:(AcrossRoomPKInfoModel *)roomInfo{ + if (self.selectRoomInfo && roomInfo.uid == self.selectRoomInfo.uid) {///有选中的且点击了选中的,取消掉选择 + [self.tableView reloadData]; + self.selectRoomInfo = nil; + self.doneButton.enabled = NO; + } else { + self.selectRoomInfo = roomInfo; + [self.tableView reloadData]; + self.doneButton.enabled = YES; + } +} + +#pragma mark - Event Response +- (void)searchButtonAction:(UIButton *)sender { + if (self.searchTextField.text.length > 0) { + [Api searchAcrossRoomPKRoomList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + NSArray * array = [AcrossRoomPKInfoModel modelsWithArray:data.data]; + [self getAcrossRoomPKListSuccess:array state:0]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } erbanNo:self.searchTextField.text roomUid:@"" pageNum:@"1" pageSize:@"50"]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:@"请输入要搜索的厅ID"]; + } +} + +- (void)backButtonAction:(UIButton *)sender { + [self.searchTextField resignFirstResponder]; + CATransition *transition = [CATransition animation]; + transition.duration = 0.3f; + transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; + transition.type = kCATransitionPush; + transition.subtype = kCATransitionFromLeft; + [self.layer addAnimation:transition forKey:nil]; + [self removeFromSuperview]; +} + +- (void)doneButtonAction:(UIButton *)sender { + [self.searchTextField resignFirstResponder]; + if (self.delegate && [self.delegate respondsToSelector:@selector(XPAcrossRoomPKSelectRoomView:didChoosePKRoom:)]) { + [self.delegate XPAcrossRoomPKSelectRoomView:self didChoosePKRoom:self.selectRoomInfo]; + } + CATransition *transition = [CATransition animation]; + transition.duration = 0.3f; + transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; + transition.type = kCATransitionPush; + transition.subtype = kCATransitionFromLeft; + [self.layer addAnimation:transition forKey:nil]; + [self removeFromSuperview]; +} + +#pragma mark - Getters And Setters +- (void)setRoomUid:(NSString *)roomUid { + _roomUid = roomUid; + [self.datasource removeAllObjects]; + [self.tableView reloadData]; + if (_roomUid.length > 0) { + [self headerRefresh]; + } +} +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPAcrossRoomPKTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPAcrossRoomPKTableViewCell class])]; + [_tableView registerClass:[XPAcrossRoomPKEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPAcrossRoomPKEmptyTableViewCell class])]; + } + return _tableView; +} + + +- (UIView *)inputBackView { + if (!_inputBackView) { + _inputBackView = [[UIView alloc] init]; + _inputBackView.backgroundColor = UIColorFromRGB(0x4C4C6A); + _inputBackView.layer.masksToBounds = YES; + _inputBackView.layer.cornerRadius = 15; + } + return _inputBackView; +} + +- (UIButton *)searchButton { + if (!_searchButton) { + _searchButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_searchButton setImage:[UIImage imageNamed:@"home_search_input_search"] forState:UIControlStateNormal]; + [_searchButton setImage:[UIImage imageNamed:@"home_search_input_search"] forState:UIControlStateSelected]; + [_searchButton addTarget:self action:@selector(searchButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _searchButton; +} + +- (UITextField *)searchTextField { + if (!_searchTextField) { + _searchTextField = [[UITextField alloc] init]; + _searchTextField.layer.cornerRadius = 15; + _searchTextField.layer.masksToBounds = YES; + _searchTextField.tintColor = [UIColor whiteColor]; + _searchTextField.textColor = [UIColor whiteColor]; + _searchTextField.backgroundColor = [UIColor clearColor]; + _searchTextField.font = [UIFont systemFontOfSize:13]; + NSString *placeholder = [NSString stringWithFormat:@"请输入厅的ID"]; + _searchTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholder attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:13], NSForegroundColorAttributeName : [UIColor colorWithWhite:1 alpha:0.4]}]; + } + return _searchTextField; +} + +- (UIButton *)doneButton { + if (!_doneButton) { + _doneButton = [[UIButton alloc] init]; + [_doneButton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0x4C4C6A)] forState:UIControlStateDisabled]; + [_doneButton setTitleColor:[UIColor whiteColor] forState:UIControlStateDisabled]; + [_doneButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFF9813), UIColorFromRGB(0xFFB22B)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_doneButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_doneButton setTitle:YMLocalizedString(@"XPAcrossRoomPKSelectRoomView3") forState:UIControlStateNormal]; + _doneButton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; + [_doneButton addTarget:self action:@selector(doneButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _doneButton.enabled = NO; + _doneButton.layer.masksToBounds = YES; + _doneButton.layer.cornerRadius = 20; + } + return _doneButton; +} + +- (UIButton *)backButton { + if (!_backButton) { + _backButton = [[UIButton alloc] init]; + [_backButton setImage:[UIImage imageNamed:@"home_search_white_back"] forState:UIControlStateNormal]; + _backButton.imageView.contentMode = UIViewContentModeScaleAspectFit; + [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _backButton; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} +@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/XPAcrossRoomPKViewController.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/XPAcrossRoomPKViewController.h new file mode 100644 index 00000000..00ec8f82 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/XPAcrossRoomPKViewController.h @@ -0,0 +1,16 @@ +// +// YMAcrossRoomPKViewController.h +// YUMI +// +// Created by YUMI on 2022/1/10. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPAcrossRoomPKViewController : MvpViewController +- (instancetype)initWithRoomUid:(NSString *)roomUid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/XPAcrossRoomPKViewController.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/XPAcrossRoomPKViewController.m new file mode 100644 index 00000000..26c0eec1 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/XPAcrossRoomPKViewController.m @@ -0,0 +1,671 @@ +// +// YMAcrossRoomPKViewController.m +// YUMI +// +// Created by YUMI on 2022/1/10. +// + +#import "XPAcrossRoomPKViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "YUMIMacroUitls.h" +#import "UIImage+Utils.h" +#import "TTPopup.h" +///Model +#import "AcrossRoomPKInfoModel.h" +///View +#import "XPAcrossRoomPKSelectRoomView.h" +#import "XPAcrossRoomPKRuleView.h" +///P +#import "XPAcrossRoomPKPresenter.h" +#import "XPAcrossRoomProtocol.h" + +#define kContentHeight (404 + kSafeAreaBottomHeight) + +@interface XPAcrossRoomPKViewController () +///顶部点击消失的view +@property (nonatomic, strong) UIView *topView; +///显示内容的view +@property (nonatomic, strong) UIView *contentView; +///标题 +@property (nonatomic, strong) UILabel *titleLabel; +///帮助 +@property (nonatomic, strong) UIButton *helpButton; +///PK对象的容器 +@property (nonatomic,strong) UIStackView *userStackView; +///选择PK对象title +@property (nonatomic, strong) UILabel *selectPKLabel; +///选择PK对象 +@property (nonatomic, strong) UIButton *selectPKButton; +///PK对象的容器 +@property (nonatomic,strong) UIStackView *timeStackView; +///选择PK时长title +@property (nonatomic, strong) UILabel *selectPKTimeLabel; +///选择PK时间的容器 +@property (nonatomic,strong) UIStackView *chooseTimeStackView; +@property (nonatomic, strong) UIButton *tenMinuteButton; +@property (nonatomic, strong) UIButton *twentyMinuteButton; +@property (nonatomic, strong) UIButton *thirtyMinuteButton; +///自定义PK时间 +@property (nonatomic, strong) UITextField *customTimeTextField; +///玩法的容器 +@property (nonatomic,strong) UIStackView *playStackView; +///PK玩法title +@property (nonatomic, strong) UILabel *pkPlayModeLabel; +///PK玩法 +@property (nonatomic, strong) UITextField *pkPlayModeTextField; +///发起挑战按钮 +@property (nonatomic, strong) UIButton *doneButton; +///选择房间的内容 +@property (nonatomic, strong) UIView *selectRoomContentView; +///选中的房间头像 +@property (nonatomic, strong) NetImageView *avatarImageView; +///房间标题 +@property (nonatomic, strong) UILabel *roomTitleLabel; +//平台ID +@property (nonatomic, strong) UILabel *idLabel; +///取消选择房间 +@property (nonatomic, strong) UIButton *cancelButon; +///选中的PK房间 +@property (nonatomic, strong) AcrossRoomPKInfoModel *selectRoomInfo; +///PK的时长 +@property (nonatomic, assign) NSInteger pkDuration; +///选择PK房间 +@property (nonatomic, strong) XPAcrossRoomPKSelectRoomView *selectView; +///房间信息 +@property (nonatomic,strong) NSString *roomUid; +@end + +@implementation XPAcrossRoomPKViewController + +- (instancetype)initWithRoomUid:(NSString *)roomUid { + if (self = [super init]) { + self.roomUid = roomUid; + self.modalPresentationStyle = UIModalPresentationOverFullScreen; + } + return self; +} + +- (XPAcrossRoomPKPresenter *)createPresenter { + return [[XPAcrossRoomPKPresenter alloc] init];; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + self.pkDuration = 10; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [IQKeyboardManager sharedManager].enable = YES; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + [self.view endEditing:YES]; +} + + +#pragma mark - Private Method +- (void)initSubViews { + self.view.backgroundColor = [UIColor clearColor]; + [self.view addSubview:self.topView]; + [self.view addSubview:self.contentView]; + + [self.contentView addSubview:self.titleLabel]; + [self.contentView addSubview:self.helpButton]; + [self.contentView addSubview:self.userStackView]; + [self.contentView addSubview:self.timeStackView]; + [self.contentView addSubview:self.playStackView]; + [self.contentView addSubview:self.customTimeTextField]; + [self.contentView addSubview:self.doneButton]; + + [self.userStackView addArrangedSubview:self.selectPKLabel]; + [self.userStackView addArrangedSubview:self.selectPKButton]; + [self.userStackView addArrangedSubview:self.selectRoomContentView]; + + [self.timeStackView addArrangedSubview:self.selectPKTimeLabel]; + [self.timeStackView addArrangedSubview:self.chooseTimeStackView]; + + [self.chooseTimeStackView addArrangedSubview:self.tenMinuteButton]; + [self.chooseTimeStackView addArrangedSubview:self.twentyMinuteButton]; + [self.chooseTimeStackView addArrangedSubview:self.thirtyMinuteButton]; + + [self.playStackView addArrangedSubview:self.pkPlayModeLabel]; + [self.playStackView addArrangedSubview:self.pkPlayModeTextField]; + + [self.selectRoomContentView addSubview:self.avatarImageView]; + [self.selectRoomContentView addSubview:self.roomTitleLabel]; + [self.selectRoomContentView addSubview:self.idLabel]; + [self.selectRoomContentView addSubview:self.cancelButon]; +} + +- (void)initSubViewConstraints { + + [self.topView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.contentView.mas_top); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.height.mas_equalTo(kContentHeight); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.contentView); + make.top.mas_equalTo(18); + }]; + + [self.helpButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-12); + make.width.height.mas_equalTo(22); + make.centerY.mas_equalTo(self.titleLabel); + }]; + + [self.userStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(32); + make.left.mas_equalTo(self.contentView).offset(22); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(20); + }]; + + [self.selectPKLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(90); + }]; + + [self.selectPKButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(22); + }]; + + [self.selectRoomContentView mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth - 85 - 12 * 2 - 16); + }]; + + [self.timeStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(32); + make.left.right.mas_equalTo(self.contentView).inset(22); + make.top.mas_equalTo(self.userStackView.mas_bottom).offset(30); + }]; + + [self.selectPKTimeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(self.selectPKLabel); + }]; + + [self.customTimeTextField mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(32); + make.width.mas_equalTo(170); + make.top.mas_equalTo(self.timeStackView.mas_bottom).offset(16); + make.left.mas_equalTo(self.tenMinuteButton); + }]; + + [self.playStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.height.mas_equalTo(self.timeStackView); + make.top.mas_equalTo(self.customTimeTextField.mas_bottom).offset(30); + }]; + + [self.pkPlayModeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(self.selectPKLabel); + }]; + + [self.doneButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(40); + make.left.right.mas_equalTo(self.contentView).inset(40); + make.bottom.mas_equalTo(self.contentView.mas_bottom).offset(-34 - kSafeAreaBottomHeight); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.selectRoomContentView); + make.left.mas_equalTo(self.selectRoomContentView); + make.height.width.mas_equalTo(60); + }]; + [self.roomTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.avatarImageView.mas_centerY).offset(-3); + make.left.mas_equalTo(self.avatarImageView.mas_right).mas_offset(6); + make.right.mas_lessThanOrEqualTo(self.cancelButon.mas_left); + }]; + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.avatarImageView.mas_centerY).mas_offset(3); + make.left.right.mas_equalTo(self.roomTitleLabel); + }]; + + [self.cancelButon mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.avatarImageView); + make.right.mas_equalTo(self.selectRoomContentView).offset(-12); + make.height.width.mas_equalTo(22); + }]; +} + +- (void)updateDoneButtonState { + if (self.selectRoomInfo && self.pkDuration >= 5 && self.pkDuration <= 180) { + self.doneButton.enabled = YES; + } else { + self.doneButton.enabled = NO; + } +} +#pragma mark - XPAcrossRoomProtocol +- (void)beginAcrossRoomPKSuccess { + [self showSuccessToast:YMLocalizedString(@"XPAcrossRoomPKViewController0")]; + [self dismissViewControllerAnimated:YES completion:nil]; +} + +- (void)beginAcrossRoomPKFail:(NSString *)message { + if (message.length >0) { + TTAlertConfig * config = [[TTAlertConfig alloc] init]; + config.actionStyle = TTAlertActionConfirmStyle; + config.cancelButtonConfig.title = YMLocalizedString(@"XPAcrossRoomPKViewController1"); + config.message = message; + [TTPopup alertWithConfig:config confirmHandler:^{ + + } cancelHandler:^{ + + }]; + } +} + +#pragma mark - TTRoomPKSelectViewControllerDelegate +///选择要PK的对象按钮点击 +- (void)XPAcrossRoomPKSelectRoomView:(XPAcrossRoomPKSelectRoomView *)view didChoosePKRoom:(AcrossRoomPKInfoModel *)pkRoomInfo{ + if (pkRoomInfo) { + [self.userStackView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(60); + }]; + self.selectRoomContentView.hidden = NO; + self.selectPKButton.hidden= YES; + self.avatarImageView.imageUrl = pkRoomInfo.avatar; + self.roomTitleLabel.text = pkRoomInfo.title; + self.idLabel.text = [NSString stringWithFormat:@"ID:%@", pkRoomInfo.erbanNo]; + self.selectRoomInfo = pkRoomInfo; + [self updateDoneButtonState]; + } +} +#pragma mark - UITextFieldDelegate +- (void)textFieldDidChanged:(UITextField *)textField { + if (textField == self.customTimeTextField) { + self.tenMinuteButton.selected = YES; + self.twentyMinuteButton.selected = YES; + self.thirtyMinuteButton.selected = YES; + NSString *countStr = [self.customTimeTextField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; + NSInteger count = [countStr integerValue]; + if (count > 180) { + [self showErrorToast:YMLocalizedString(@"XPAcrossRoomPKViewController2")]; + } else if(count < 5) { + [self showErrorToast:YMLocalizedString(@"XPAcrossRoomPKViewController3")]; + } + self.pkDuration = textField.text.integerValue; + [self updateDoneButtonState]; + } else if(textField == self.pkPlayModeTextField) { + if (self.pkPlayModeTextField.text.length > 10) { + self.pkPlayModeTextField.text = [self.pkPlayModeTextField.text substringToIndex:10]; + } + } +} + +- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { + if (textField == self.customTimeTextField) { + NSString *regex =@"[0-9]*"; + NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex]; + if ([pred evaluateWithObject:string]) { + return YES; + } + return NO; + } + return YES; +} + +#pragma mark - Event Response +- (void)helpButtonAction:(UIButton *)sender { + [self.customTimeTextField resignFirstResponder]; + [self.pkPlayModeTextField resignFirstResponder]; + XPAcrossRoomPKRuleView *view = [[XPAcrossRoomPKRuleView alloc] init]; + [TTPopup popupView:view style:TTPopupStyleAlert]; +} + +- (void)selectPKButtonAction:(UIButton *)sender { + [self.customTimeTextField resignFirstResponder]; + [self.pkPlayModeTextField resignFirstResponder]; + self.selectView.roomUid = self.roomUid; + CATransition *transition = [CATransition animation]; + transition.duration = 0.3f; + transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; + transition.type = kCATransitionPush; + transition.subtype = kCATransitionFromRight; + [self.selectView.layer addAnimation:transition forKey:nil]; + [self.contentView addSubview:self.selectView]; +} + +- (void)chooseTimeButtonAction:(UIButton *)sender { + [self.customTimeTextField resignFirstResponder]; + [self.pkPlayModeTextField resignFirstResponder]; + self.tenMinuteButton.selected = YES; + self.twentyMinuteButton.selected = YES; + self.thirtyMinuteButton.selected = YES; + sender.selected = NO; + self.pkDuration = sender.tag; + self.customTimeTextField.text = nil; +} + +- (void)doneButtonAction:(UIButton *)sender { + [self.customTimeTextField resignFirstResponder]; + [self.pkPlayModeTextField resignFirstResponder]; + NSString * pkDes = self.pkPlayModeTextField.text.length > 0 ? self.pkPlayModeTextField.text : @""; + [self.presenter beginAcrossRoomPK:self.roomUid duration:self.pkDuration acceptUid:self.selectRoomInfo.uid playDesc:pkDes]; +} + +- (void)cancelButtonAction:(UIButton *)sender { + self.selectRoomContentView.hidden = YES; + self.selectPKButton.hidden = NO; + self.selectRoomInfo = nil; + [self updateDoneButtonState]; + self.avatarImageView.image = nil; + self.roomTitleLabel.text = nil; + self.idLabel.text = nil; + [self.userStackView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(32); + }]; +} + +- (void)onKeyBoardResign:(UITapGestureRecognizer *)ges { + [self.customTimeTextField resignFirstResponder]; + [self.pkPlayModeTextField resignFirstResponder]; + if (self.selectView.superview) { + CATransition *transition = [CATransition animation]; + transition.duration = 0.3f; + transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; + transition.type = kCATransitionPush; + transition.subtype = kCATransitionFromLeft; + [self.selectView.layer addAnimation:transition forKey:nil]; + [self.selectView removeFromSuperview]; + } else { + [self dismissViewControllerAnimated:YES completion:nil]; + } +} + +#pragma mark - Getters And Setters +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textColor = UIColor.whiteColor; + _titleLabel.font = [UIFont boldSystemFontOfSize:18]; + _titleLabel.text = @"跨房PK"; + } + return _titleLabel; +} +- (UIButton *)helpButton { + if (!_helpButton) { + _helpButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_helpButton setImage:[UIImage imageNamed:@"room_across_pk_help"] forState:UIControlStateNormal]; + [_helpButton addTarget:self action:@selector(helpButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _helpButton; +} + +- (UIStackView *)userStackView { + if (!_userStackView) { + _userStackView = [[UIStackView alloc] init]; + _userStackView.axis = UILayoutConstraintAxisHorizontal; + _userStackView.distribution = UIStackViewDistributionFill; + _userStackView.alignment = UIStackViewAlignmentFill; + _userStackView.spacing = 16; + } + return _userStackView; +} +- (UILabel *)selectPKLabel { + if (!_selectPKLabel) { + _selectPKLabel = [[UILabel alloc] init]; + _selectPKLabel.textColor = [UIColor whiteColor]; + _selectPKLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + _selectPKLabel.text = YMLocalizedString(@"XPAcrossRoomPKViewController5"); + [_selectPKLabel setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + } + return _selectPKLabel; +} +- (UIButton *)selectPKButton { + if (!_selectPKButton) { + _selectPKButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_selectPKButton setImage:[UIImage imageNamed:@"room_across_pk_add_room"] forState:UIControlStateNormal]; + [_selectPKButton addTarget:self action:@selector(selectPKButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _selectPKButton; +} + +- (UIStackView *)timeStackView { + if (!_timeStackView) { + _timeStackView = [[UIStackView alloc] init]; + _timeStackView.axis = UILayoutConstraintAxisHorizontal; + _timeStackView.distribution = UIStackViewDistributionFill; + _timeStackView.alignment = UIStackViewAlignmentFill; + _timeStackView.spacing = 16; + } + return _timeStackView; +} +- (UILabel *)selectPKTimeLabel { + if (!_selectPKTimeLabel) { + _selectPKTimeLabel = [[UILabel alloc] init]; + _selectPKTimeLabel.textColor =[UIColor whiteColor]; + _selectPKTimeLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + _selectPKTimeLabel.text = YMLocalizedString(@"XPAcrossRoomPKViewController6"); + } + return _selectPKTimeLabel; +} + +- (UIStackView *)chooseTimeStackView { + if (!_chooseTimeStackView) { + _chooseTimeStackView = [[UIStackView alloc] init]; + _chooseTimeStackView.axis = UILayoutConstraintAxisHorizontal; + _chooseTimeStackView.distribution = UIStackViewDistributionFillEqually; + _chooseTimeStackView.alignment = UIStackViewAlignmentFill; + _chooseTimeStackView.spacing = 5; + } + return _chooseTimeStackView; +} + +- (UIButton *)tenMinuteButton { + if (!_tenMinuteButton) { + _tenMinuteButton = [[UIButton alloc] init]; + [_tenMinuteButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFF9813), UIColorFromRGB(0xFFB22B)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_tenMinuteButton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0x4C4C6A)] forState:UIControlStateSelected]; + [_tenMinuteButton setTitle:YMLocalizedString(@"XPAcrossRoomPKViewController7") forState:UIControlStateNormal]; + _tenMinuteButton.titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + [_tenMinuteButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_tenMinuteButton setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateSelected]; + _tenMinuteButton.tag = 10; + [_tenMinuteButton addTarget:self action:@selector(chooseTimeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _tenMinuteButton.selected = NO; + _tenMinuteButton.layer.masksToBounds = YES; + _tenMinuteButton.layer.cornerRadius = 32 / 2; + } + return _tenMinuteButton; +} + +- (UIButton *)twentyMinuteButton { + if (!_twentyMinuteButton) { + _twentyMinuteButton = [[UIButton alloc] init]; + [_twentyMinuteButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFF9813), UIColorFromRGB(0xFFB22B)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_twentyMinuteButton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0x4C4C6A)] forState:UIControlStateSelected]; + [_twentyMinuteButton setTitle:YMLocalizedString(@"XPAcrossRoomPKViewController8") forState:UIControlStateNormal]; + _twentyMinuteButton.titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + [_twentyMinuteButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_twentyMinuteButton setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; + _twentyMinuteButton.tag = 20; + [_twentyMinuteButton addTarget:self action:@selector(chooseTimeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _twentyMinuteButton.selected = YES; + _twentyMinuteButton.layer.masksToBounds = YES; + _twentyMinuteButton.layer.cornerRadius = 32 / 2; + } + return _twentyMinuteButton; +} + +- (UIButton *)thirtyMinuteButton { + if (!_thirtyMinuteButton) { + _thirtyMinuteButton = [[UIButton alloc] init]; + [_thirtyMinuteButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFF9813), UIColorFromRGB(0xFFB22B)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_thirtyMinuteButton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0x4C4C6A)] forState:UIControlStateSelected]; + [_thirtyMinuteButton setTitle:YMLocalizedString(@"XPAcrossRoomPKViewController9") forState:UIControlStateNormal]; + _thirtyMinuteButton.titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + [_thirtyMinuteButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_thirtyMinuteButton setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; + _thirtyMinuteButton.tag = 30; + _thirtyMinuteButton.layer.masksToBounds = YES; + _thirtyMinuteButton.layer.cornerRadius = 32 / 2; + [_thirtyMinuteButton addTarget:self action:@selector(chooseTimeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _thirtyMinuteButton.selected = YES; + } + return _thirtyMinuteButton; +} +- (UITextField *)customTimeTextField { + if (!_customTimeTextField) { + _customTimeTextField = [[UITextField alloc] init]; + _customTimeTextField.layer.cornerRadius = 15; + _customTimeTextField.layer.masksToBounds = YES; + _customTimeTextField.backgroundColor = UIColorFromRGB(0x4C4C6A); + _customTimeTextField.textColor = [UIColor whiteColor]; + _customTimeTextField.leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 19, 0)]; + _customTimeTextField.leftViewMode = UITextFieldViewModeAlways; + _customTimeTextField.delegate = self; + _customTimeTextField.keyboardType = UIKeyboardTypeNumberPad; + _customTimeTextField.tintColor = [UIColor whiteColor]; + _customTimeTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:YMLocalizedString(@"XPAcrossRoomPKViewController10") attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:15], NSForegroundColorAttributeName: UIColorFromRGB(0xC6C6E9)}]; + [_customTimeTextField addTarget:self action:@selector(textFieldDidChanged:) forControlEvents:UIControlEventEditingChanged]; + + } + return _customTimeTextField; +} +- (UIStackView *)playStackView { + if (!_playStackView) { + _playStackView = [[UIStackView alloc] init]; + _playStackView.axis = UILayoutConstraintAxisHorizontal; + _playStackView.distribution = UIStackViewDistributionFill; + _playStackView.alignment = UIStackViewAlignmentFill; + _playStackView.spacing = 16; + } + return _playStackView; +} + +- (UILabel *)pkPlayModeLabel { + if (!_pkPlayModeLabel) { + _pkPlayModeLabel = [[UILabel alloc] init]; + _pkPlayModeLabel.textColor = [UIColor whiteColor]; + _pkPlayModeLabel.textAlignment = NSTextAlignmentRight; + _pkPlayModeLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + _pkPlayModeLabel.text = YMLocalizedString(@"XPAcrossRoomPKViewController11"); + } + return _pkPlayModeLabel; +} + +- (UITextField *)pkPlayModeTextField { + if (!_pkPlayModeTextField) { + _pkPlayModeTextField = [[UITextField alloc] init]; + _pkPlayModeTextField.layer.cornerRadius = 15; + _pkPlayModeTextField.layer.masksToBounds = YES; + _pkPlayModeTextField.backgroundColor = UIColorFromRGB(0x4C4C6A); + _pkPlayModeTextField.textColor = [UIColor whiteColor]; + _pkPlayModeTextField.leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 19, 0)]; + _pkPlayModeTextField.leftViewMode = UITextFieldViewModeAlways; + _pkPlayModeTextField.delegate = self; + _pkPlayModeTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:YMLocalizedString(@"XPAcrossRoomPKViewController12") attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:15], NSForegroundColorAttributeName: UIColorFromRGB(0xC6C6E9)}]; + [_pkPlayModeTextField addTarget:self action:@selector(textFieldDidChanged:) forControlEvents:UIControlEventEditingChanged]; + } + return _pkPlayModeTextField; +} + +- (UIButton *)doneButton { + if (!_doneButton) { + _doneButton = [[UIButton alloc] init]; + [_doneButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFF9813), UIColorFromRGB(0xFFB22B)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_doneButton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0x4C4C6A)] forState:UIControlStateDisabled]; + [_doneButton setTitle:YMLocalizedString(@"XPAcrossRoomPKViewController13") forState:UIControlStateNormal]; + _doneButton.layer.masksToBounds = YES; + _doneButton.layer.cornerRadius = 20; + _doneButton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; + [_doneButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_doneButton setTitleColor:[UIColor whiteColor] forState:UIControlStateDisabled]; + [_doneButton addTarget:self action:@selector(doneButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _doneButton.enabled = NO; + } + return _doneButton; +} + +- (UIView *)selectRoomContentView { + if (!_selectRoomContentView) { + _selectRoomContentView = [[UIView alloc] init]; + _selectRoomContentView.hidden = YES; + } + return _selectRoomContentView; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 60 / 2; + _avatarImageView.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + } + return _avatarImageView; +} + +- (UILabel *)roomTitleLabel { + if (!_roomTitleLabel) { + _roomTitleLabel = [[UILabel alloc] init]; + _roomTitleLabel.textColor = [UIColor whiteColor]; + _roomTitleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + } + return _roomTitleLabel; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.textColor = [UIColor whiteColor]; + _idLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + } + return _idLabel; +} + +- (UIButton *)cancelButon { + if (!_cancelButon) { + _cancelButon = [UIButton buttonWithType:UIButtonTypeCustom]; + [_cancelButon setImage:[UIImage imageNamed:@"room_across_delete_pk_room"] forState:UIControlStateNormal]; + [_cancelButon addTarget:self action:@selector(cancelButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _cancelButon; +} + +- (UIView *)contentView { + if (!_contentView) { + _contentView = [[UIView alloc] init]; + _contentView.backgroundColor = UIColorFromRGB(0x2A2A39); + CAShapeLayer * layer = [CAShapeLayer layer]; + layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth,kContentHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)].CGPath; + _contentView.layer.mask = layer; + } + return _contentView; +} + +- (UIView *)topView { + if (!_topView) { + _topView = [[UIView alloc] init]; + _topView.backgroundColor = UIColor.blackColor; + _topView.alpha = 0.3; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onKeyBoardResign:)]; + [_topView addGestureRecognizer:tap]; + } + return _topView; +} + +- (XPAcrossRoomPKSelectRoomView *)selectView { + if (!_selectView) { + _selectView = [[XPAcrossRoomPKSelectRoomView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, kContentHeight)]; + _selectView.delegate = self; + } + return _selectView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/YUMIThroughoutChamberCombatChosenChamberRegard.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/YUMIThroughoutChamberCombatChosenChamberRegard.h deleted file mode 100644 index edf3c325..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/YUMIThroughoutChamberCombatChosenChamberRegard.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMAcrossRoomPKSelectRoomView.h -// YUMI -// -// Created by YUMI on 2022/1/10. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIThroughoutChamberCombatChosenChamberRegard, ThroughoutChamberCombatAbstractMatrix; -@protocol FBCAcrossChamberCombatChosenChamberRegardRepresendtation - -- (void)YUMIThroughoutChamberCombatChosenChamberRegard:(YUMIThroughoutChamberCombatChosenChamberRegard *)view didChoosePKRoom:(ThroughoutChamberCombatAbstractMatrix *)pkRoomInfo; - -@end -@interface YUMIThroughoutChamberCombatChosenChamberRegard : UIView -@property (nonatomic,weak) id delegate; -@property (nonatomic,copy) NSString *roomUid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/YUMIThroughoutChamberCombatChosenChamberRegard.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/YUMIThroughoutChamberCombatChosenChamberRegard.m deleted file mode 100644 index c2d09c48..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/YUMIThroughoutChamberCombatChosenChamberRegard.m +++ /dev/null @@ -1,354 +0,0 @@ -// -// YMAcrossRoomPKSelectRoomView.m -// YUMI -// -// Created by YUMI on 2022/1/10. -// - -#import "YUMIThroughoutChamberCombatChosenChamberRegard.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "XNDJTBWGLoadingTool.h" -#import "UIImage+Utils.h" -#import "Api+AcrossRoomPK.h" -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "ThroughoutChamberCombatAbstractMatrix.h" -#import "YUMIThroughoutChamberCombatDispossessTabulationRegardElement.h" -#import "YUMIThroughoutChamberCombatTabulationRegardElement.h" - -@interface YUMIThroughoutChamberCombatChosenChamberRegard () - -@property (nonatomic, strong) UIButton *backButton; -@property (nonatomic, strong) UITableView *tableView; -@property (nonatomic, strong) UIButton *doneBtuton; -@property (nonatomic,strong) UIView * introjectionEncourageRegard; -@property (nonatomic,strong) UIButton *huntforBtuton; -@property (nonatomic,strong) UITextField *searchTextField; -@property (nonatomic, strong) NSMutableArray *datasource; -@property (nonatomic, assign) NSInteger page; -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; -@property (nonatomic, strong) ThroughoutChamberCombatAbstractMatrix *chosenChamberAbstract; - -@end - -@implementation YUMIThroughoutChamberCombatChosenChamberRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - [self initIntelligencerGrantedTerminalerRrfresh]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = UIColorFromRGB(0x2A2A39); - [self addSubview:self.backButton]; - [self addSubview:self.introjectionEncourageRegard]; - [self addSubview:self.tableView]; - [self addSubview:self.doneBtuton]; - - [self.introjectionEncourageRegard addSubview:self.huntforBtuton]; - [self.introjectionEncourageRegard addSubview:self.searchTextField]; - - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onDigitalDirectortowardseResign:)]; - [self addGestureRecognizer:tap]; -} - -- (void)initChildLyRestrictions { - [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(12); - make.width.mas_equalTo(22); - make.height.mas_equalTo(22); - make.top.mas_equalTo(27); - }]; - - - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.introjectionEncourageRegard.mas_bottom).mas_offset(5); - make.left.right.mas_equalTo(0); - make.bottom.mas_equalTo(self.mas_bottom); - }]; - [self.doneBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(-38); - make.width.mas_equalTo(300); - make.height.mas_equalTo(40); - make.centerX.mas_equalTo(self); - }]; - - [self.introjectionEncourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(30); - make.left.mas_equalTo(self.backButton.mas_right).offset(5); - make.right.mas_equalTo(self.mas_right).offset(-15); - make.centerY.mas_equalTo(self.backButton); - }]; - - [self.huntforBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(18, 18)); - make.centerY.mas_equalTo(self.introjectionEncourageRegard); - make.right.mas_equalTo(self.introjectionEncourageRegard).offset(-12); - }]; - - [self.searchTextField mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.introjectionEncourageRegard).offset(25); - make.top.bottom.mas_equalTo(self.introjectionEncourageRegard); - make.right.mas_equalTo(self.huntforBtuton.mas_left).offset(-5); - }]; -} - -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; -} - -#pragma mark - 刷新的fangfa -- (void)intelligenceerRenovtowardseh { - self.page = 1; - [Api acquireThroughoutChamberCombatChamberSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSArray * array = [ThroughoutChamberCombatAbstractMatrix mtowardsrixsAboutGarment:data.data]; - [self acquireThroughoutChamberCombatSttowardsementAccomplishment:array state:0]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } roomUid:self.roomUid pageNum:[NSString stringWithFormat:@"%ld", self.page] pageSize:@"20"]; -} - -- (void)footerRenovtowardseh { - if (self.hasNoFurthaerAtoloudspeaker) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Across_Room_PK_Select_Room_View_0")]; - return; - } - self.page++; - [Api acquireThroughoutChamberCombatChamberSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSArray * array = [ThroughoutChamberCombatAbstractMatrix mtowardsrixsAboutGarment:data.data]; - [self acquireThroughoutChamberCombatSttowardsementAccomplishment:array state:1]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } roomUid:self.roomUid pageNum:[NSString stringWithFormat:@"%ld", self.page] pageSize:@"20"]; -} - -- (void)acquireThroughoutChamberCombatSttowardsementAccomplishment:(NSArray *)list state:(int)state { - if (state == 0) { - self.chosenChamberAbstract = nil; - self.doneBtuton.enabled = NO; - [self.datasource removeAllObjects]; - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } - if (list.count > 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - [self.datasource addObjectsFromArray:list]; - } else { - self.hasNoFurthaerAtoloudspeaker = YES; - [self.tableView.mj_footer endRefreshingWithNoMoreData]; - } - [self.tableView reloadData]; -} - -- (void)onDigitalDirectortowardseResign:(UITapGestureRecognizer *)ges { - [self.searchTextField resignFirstResponder]; -} -#pragma mark - tableviewDelegate -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMIThroughoutChamberCombatTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIThroughoutChamberCombatTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIThroughoutChamberCombatTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIThroughoutChamberCombatTabulationRegardElement class])]; - } - cell.delegate = self; - ThroughoutChamberCombatAbstractMatrix * pkRoomInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (pkRoomInfo.uid.integerValue == self.chosenChamberAbstract.uid.integerValue) { - pkRoomInfo.hadSelected = YES; - } else { - pkRoomInfo.hadSelected = NO; - } - cell.chamberCombatAbstract = pkRoomInfo; - return cell; - } - - YUMIThroughoutChamberCombatDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIThroughoutChamberCombatDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIThroughoutChamberCombatDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIThroughoutChamberCombatDispossessTabulationRegardElement class])]; - } - return cell; - -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - return 75; - } - return (370 + kSafeAreaBottomHeight); -} - -#pragma mark - FBCAcrossChamberCombatTabulationViweElementRepresendtation -- (void)yUMIThroughoutChamberCombatTarbsultowardsionViweElement:(YUMIThroughoutChamberCombatTabulationRegardElement *)view didChooseRoom:(ThroughoutChamberCombatAbstractMatrix *)roomInfo{ - if (self.chosenChamberAbstract && roomInfo.uid == self.chosenChamberAbstract.uid) { - [self.tableView reloadData]; - self.chosenChamberAbstract = nil; - self.doneBtuton.enabled = NO; - } else { - self.chosenChamberAbstract = roomInfo; - [self.tableView reloadData]; - self.doneBtuton.enabled = YES; - } -} - -#pragma mark - Event Response -- (void)huntforBtutonPerformance:(UIButton *)sender { - if (self.searchTextField.text.length > 0) { - [Api huntforThroughoutChamberCombatChamberSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSArray * array = [ThroughoutChamberCombatAbstractMatrix mtowardsrixsAboutGarment:data.data]; - [self acquireThroughoutChamberCombatSttowardsementAccomplishment:array state:0]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } erbanNo:self.searchTextField.text roomUid:@"" pageNum:@"1" pageSize:@"50"]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:@"请输入要搜索的厅ID"]; - } -} - -- (void)encourageBtutonPerformance:(UIButton *)sender { - [self.searchTextField resignFirstResponder]; - CATransition *transition = [CATransition animation]; - transition.duration = 0.3f; - transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; - transition.type = kCATransitionPush; - transition.subtype = kCATransitionFromLeft; - [self.layer addAnimation:transition forKey:nil]; - [self removeFromSuperview]; -} - -- (void)doneBtutonPerformance:(UIButton *)sender { - [self.searchTextField resignFirstResponder]; - if (self.delegate && [self.delegate respondsToSelector:@selector(YUMIThroughoutChamberCombatChosenChamberRegard:didChoosePKRoom:)]) { - [self.delegate YUMIThroughoutChamberCombatChosenChamberRegard:self didChoosePKRoom:self.chosenChamberAbstract]; - } - CATransition *transition = [CATransition animation]; - transition.duration = 0.3f; - transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; - transition.type = kCATransitionPush; - transition.subtype = kCATransitionFromLeft; - [self.layer addAnimation:transition forKey:nil]; - [self removeFromSuperview]; -} - -#pragma mark - Getters And Setters -- (void)setRoomUid:(NSString *)roomUid { - _roomUid = roomUid; - [self.datasource removeAllObjects]; - [self.tableView reloadData]; - if (_roomUid.length > 0) { - [self intelligenceerRenovtowardseh]; - } -} -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIThroughoutChamberCombatTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIThroughoutChamberCombatTabulationRegardElement class])]; - [_tableView registerClass:[YUMIThroughoutChamberCombatDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIThroughoutChamberCombatDispossessTabulationRegardElement class])]; - } - return _tableView; -} - - -- (UIView *)introjectionEncourageRegard { - if (!_introjectionEncourageRegard) { - _introjectionEncourageRegard = [[UIView alloc] init]; - _introjectionEncourageRegard.backgroundColor = UIColorFromRGB(0x4C4C6A); - _introjectionEncourageRegard.layer.masksToBounds = YES; - _introjectionEncourageRegard.layer.cornerRadius = 15; - } - return _introjectionEncourageRegard; -} - -- (UIButton *)huntforBtuton { - if (!_huntforBtuton) { - _huntforBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_huntforBtuton setImage:[UIImage imageNamed:@"yumi_main_search_input_search"] forState:UIControlStateNormal]; - [_huntforBtuton setImage:[UIImage imageNamed:@"yumi_main_search_input_search"] forState:UIControlStateSelected]; - [_huntforBtuton addTarget:self action:@selector(huntforBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _huntforBtuton; -} - -- (UITextField *)searchTextField { - if (!_searchTextField) { - _searchTextField = [[UITextField alloc] init]; - _searchTextField.layer.cornerRadius = 15; - _searchTextField.layer.masksToBounds = YES; - _searchTextField.tintColor = [UIColor whiteColor]; - _searchTextField.textColor = [UIColor whiteColor]; - _searchTextField.backgroundColor = [UIColor clearColor]; - _searchTextField.font = [UIFont systemFontOfSize:13]; - NSString *placeholder = [NSString stringWithFormat:@"请输入厅的ID"]; - _searchTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholder attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:13], NSForegroundColorAttributeName : [UIColor colorWithWhite:1 alpha:0.4]}]; - } - return _searchTextField; -} - -- (UIButton *)doneBtuton { - if (!_doneBtuton) { - _doneBtuton = [[UIButton alloc] init]; - [_doneBtuton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0x4C4C6A)] forState:UIControlStateDisabled]; - [_doneBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateDisabled]; - [_doneBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFF9813), UIColorFromRGB(0xFFB22B)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_doneBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [_doneBtuton setTitle:YMLocalizedString(@"YUMI_Across_Room_PK_Select_Room_View_3") forState:UIControlStateNormal]; - _doneBtuton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; - [_doneBtuton addTarget:self action:@selector(doneBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _doneBtuton.enabled = NO; - _doneBtuton.layer.masksToBounds = YES; - _doneBtuton.layer.cornerRadius = 20; - } - return _doneBtuton; -} - -- (UIButton *)backButton { - if (!_backButton) { - _backButton = [[UIButton alloc] init]; - [_backButton setImage:[UIImage imageNamed:@"yumi_main_search_white_back"] forState:UIControlStateNormal]; - _backButton.imageView.contentMode = UIViewContentModeScaleAspectFit; - [_backButton addTarget:self action:@selector(encourageBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _backButton; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} -@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/YUMIThroughoutChamberCombatRegardGovernancer.h b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/YUMIThroughoutChamberCombatRegardGovernancer.h deleted file mode 100644 index 2583d677..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/YUMIThroughoutChamberCombatRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMAcrossRoomPKViewController.h -// YUMI -// -// Created by YUMI on 2022/1/10. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIThroughoutChamberCombatRegardGovernancer : MvpRegardGovernancer -- (instancetype)initAboutChamberCid:(NSString *)roomUid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/YUMIThroughoutChamberCombatRegardGovernancer.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/YUMIThroughoutChamberCombatRegardGovernancer.m deleted file mode 100644 index d2a7fe32..00000000 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/YUMIThroughoutChamberCombatRegardGovernancer.m +++ /dev/null @@ -1,641 +0,0 @@ -// -// YMAcrossRoomPKViewController.m -// YUMI -// -// Created by YUMI on 2022/1/10. -// - -#import "YUMIThroughoutChamberCombatRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "YUMIMacroUitls.h" -#import "UIImage+Utils.h" -#import "MKJPopup.h" -#import "ThroughoutChamberCombatAbstractMatrix.h" -#import "YUMIThroughoutChamberCombatChosenChamberRegard.h" -#import "YUMIThroughoutChamberCombatPreadominantRegard.h" -#import "YUMIThroughoutChamberCombatExternalizer.h" -#import "FBCAcrossChamberCeremony.h" - -#define kContentHeight (404 + kSafeAreaBottomHeight) - -@interface YUMIThroughoutChamberCombatRegardGovernancer () -@property (nonatomic, strong) UIView *apexRegard; -@property (nonatomic, strong) UIView *contentView; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UIButton *facilitateBtuton; -@property (nonatomic,strong) UIStackView *consumerHierarchyRegard; -@property (nonatomic, strong) UILabel *chosenCombatSequencignation; -@property (nonatomic, strong) UIButton *chosenCombatBtuton; -@property (nonatomic,strong) UIStackView *intratemporalHierarchyRegard; -@property (nonatomic, strong) UILabel *chosenCombatIntratemporalSequencignation; -@property (nonatomic,strong) UIStackView *concludeIntratemporalHierarchyRegard; -@property (nonatomic, strong) UIButton *tenPennyBtuton; -@property (nonatomic, strong) UIButton *twentyPennyBtuton; -@property (nonatomic, strong) UIButton *thirtyPennyBtuton; -@property (nonatomic, strong) UITextField *customIntratemporalEssayUniverse; -@property (nonatomic,strong) UIStackView *disportHierarchyRegard; -@property (nonatomic, strong) UILabel *combateDisportMannerSequencignation; -@property (nonatomic, strong) UITextField *combateDisportMannerEssayUniverse; -@property (nonatomic, strong) UIButton *doneBtuton; -@property (nonatomic, strong) UIView *chosenChamberSatisfperformanceRegard; -@property (nonatomic, strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic, strong) UILabel *chamberChampionSequencignation; -@property (nonatomic, strong) UILabel *idSequencignation; -@property (nonatomic, strong) UIButton *revocationBtuton; -@property (nonatomic, strong) ThroughoutChamberCombatAbstractMatrix *chosenChamberAbstract; -@property (nonatomic, assign) NSInteger combatContinuance; -@property (nonatomic, strong) YUMIThroughoutChamberCombatChosenChamberRegard *chosenRegard; -@property (nonatomic,strong) NSString *roomUid; -@end - -@implementation YUMIThroughoutChamberCombatRegardGovernancer - -- (instancetype)initAboutChamberCid:(NSString *)roomUid { - if (self = [super init]) { - self.roomUid = roomUid; - self.modalPresentationStyle = UIModalPresentationOverFullScreen; - } - return self; -} - -- (YUMIThroughoutChamberCombatExternalizer *)producePresimport { - return [[YUMIThroughoutChamberCombatExternalizer alloc] init];; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - self.combatContinuance = 10; -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - [IQKeyboardManager sharedManager].enable = YES; -} - -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { - [self.view endEditing:YES]; -} - - -#pragma mark - Private Method -- (void)initSubViews { - self.view.backgroundColor = [UIColor clearColor]; - [self.view addSubview:self.apexRegard]; - [self.view addSubview:self.contentView]; - - [self.contentView addSubview:self.titleLabel]; - [self.contentView addSubview:self.facilitateBtuton]; - [self.contentView addSubview:self.consumerHierarchyRegard]; - [self.contentView addSubview:self.intratemporalHierarchyRegard]; - [self.contentView addSubview:self.disportHierarchyRegard]; - [self.contentView addSubview:self.customIntratemporalEssayUniverse]; - [self.contentView addSubview:self.doneBtuton]; - - [self.consumerHierarchyRegard addArrangedSubview:self.chosenCombatSequencignation]; - [self.consumerHierarchyRegard addArrangedSubview:self.chosenCombatBtuton]; - [self.consumerHierarchyRegard addArrangedSubview:self.chosenChamberSatisfperformanceRegard]; - - [self.intratemporalHierarchyRegard addArrangedSubview:self.chosenCombatIntratemporalSequencignation]; - [self.intratemporalHierarchyRegard addArrangedSubview:self.concludeIntratemporalHierarchyRegard]; - - [self.concludeIntratemporalHierarchyRegard addArrangedSubview:self.tenPennyBtuton]; - [self.concludeIntratemporalHierarchyRegard addArrangedSubview:self.twentyPennyBtuton]; - [self.concludeIntratemporalHierarchyRegard addArrangedSubview:self.thirtyPennyBtuton]; - - [self.disportHierarchyRegard addArrangedSubview:self.combateDisportMannerSequencignation]; - [self.disportHierarchyRegard addArrangedSubview:self.combateDisportMannerEssayUniverse]; - - [self.chosenChamberSatisfperformanceRegard addSubview:self.intelligenceportraitIndicateRegard]; - [self.chosenChamberSatisfperformanceRegard addSubview:self.chamberChampionSequencignation]; - [self.chosenChamberSatisfperformanceRegard addSubview:self.idSequencignation]; - [self.chosenChamberSatisfperformanceRegard addSubview:self.revocationBtuton]; -} - -- (void)initChildLyRestrictions { - - [self.apexRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.contentView.mas_top); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.height.mas_equalTo(kContentHeight); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.contentView); - make.top.mas_equalTo(18); - }]; - - [self.facilitateBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-12); - make.width.height.mas_equalTo(22); - make.centerY.mas_equalTo(self.titleLabel); - }]; - - [self.consumerHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(32); - make.left.mas_equalTo(self.contentView).offset(22); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(20); - }]; - - [self.chosenCombatSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(90); - }]; - - [self.chosenCombatBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(22); - }]; - - [self.chosenChamberSatisfperformanceRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth - 85 - 12 * 2 - 16); - }]; - - [self.intratemporalHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(32); - make.left.right.mas_equalTo(self.contentView).inset(22); - make.top.mas_equalTo(self.consumerHierarchyRegard.mas_bottom).offset(30); - }]; - - [self.chosenCombatIntratemporalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(self.chosenCombatSequencignation); - }]; - - [self.customIntratemporalEssayUniverse mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(32); - make.width.mas_equalTo(170); - make.top.mas_equalTo(self.intratemporalHierarchyRegard.mas_bottom).offset(16); - make.left.mas_equalTo(self.tenPennyBtuton); - }]; - - [self.disportHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.height.mas_equalTo(self.intratemporalHierarchyRegard); - make.top.mas_equalTo(self.customIntratemporalEssayUniverse.mas_bottom).offset(30); - }]; - - [self.combateDisportMannerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(self.chosenCombatSequencignation); - }]; - - [self.doneBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(40); - make.left.right.mas_equalTo(self.contentView).inset(40); - make.bottom.mas_equalTo(self.contentView.mas_bottom).offset(-34 - kSafeAreaBottomHeight); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.chosenChamberSatisfperformanceRegard); - make.left.mas_equalTo(self.chosenChamberSatisfperformanceRegard); - make.height.width.mas_equalTo(60); - }]; - [self.chamberChampionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(-3); - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).mas_offset(6); - make.right.mas_lessThanOrEqualTo(self.revocationBtuton.mas_left); - }]; - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).mas_offset(3); - make.left.right.mas_equalTo(self.chamberChampionSequencignation); - }]; - - [self.revocationBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.right.mas_equalTo(self.chosenChamberSatisfperformanceRegard).offset(-12); - make.height.width.mas_equalTo(22); - }]; -} - -- (void)refurbishDoneBtutonDeclare { - if (self.chosenChamberAbstract && self.combatContinuance >= 5 && self.combatContinuance <= 180) { - self.doneBtuton.enabled = YES; - } else { - self.doneBtuton.enabled = NO; - } -} -#pragma mark - FBCAcrossChamberCeremony -- (void)instituteThroughoutChamberCombatAccomplishment { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Across_Room_PK_View_Controller_0")]; - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)instituteThroughoutChamberCombatFlunk:(NSString *)message { - if (message.length >0) { - MKJPrecautiousDisposition * config = [[MKJPrecautiousDisposition alloc] init]; - config.performanceStyle = TTAlertActionConfirmStyle; - config.revocationBtutonDisposition.title = YMLocalizedString(@"YUMI_Across_Room_PK_View_Controller_1"); - config.message = message; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - - } cancelHandler:^{ - - }]; - } -} - -#pragma mark - TTRoomPKSelectViewControllerDelegate -- (void)YUMIThroughoutChamberCombatChosenChamberRegard:(YUMIThroughoutChamberCombatChosenChamberRegard *)view didChoosePKRoom:(ThroughoutChamberCombatAbstractMatrix *)pkRoomInfo{ - if (pkRoomInfo) { - [self.consumerHierarchyRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(60); - }]; - self.chosenChamberSatisfperformanceRegard.hidden = NO; - self.chosenCombatBtuton.hidden= YES; - self.intelligenceportraitIndicateRegard.imageUrl = pkRoomInfo.avatar; - self.chamberChampionSequencignation.text = pkRoomInfo.title; - self.idSequencignation.text = [NSString stringWithFormat:@"ID:%@", pkRoomInfo.erbanNo]; - self.chosenChamberAbstract = pkRoomInfo; - [self refurbishDoneBtutonDeclare]; - } -} -#pragma mark - UITextFieldDelegate -- (void)essayUniverseDidDiversifictowardsiond:(UITextField *)essayUniverse { - if (essayUniverse == self.customIntratemporalEssayUniverse) { - self.tenPennyBtuton.selected = YES; - self.twentyPennyBtuton.selected = YES; - self.thirtyPennyBtuton.selected = YES; - NSString *countStr = [self.customIntratemporalEssayUniverse.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; - NSInteger count = [countStr integerValue]; - if (count > 180) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Across_Room_PK_View_Controller_2")]; - } else if(count < 5) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Across_Room_PK_View_Controller_3")]; - } - self.combatContinuance = essayUniverse.text.integerValue; - [self refurbishDoneBtutonDeclare]; - } else if(essayUniverse == self.combateDisportMannerEssayUniverse) { - if (self.combateDisportMannerEssayUniverse.text.length > 10) { - self.combateDisportMannerEssayUniverse.text = [self.combateDisportMannerEssayUniverse.text substringToIndex:10]; - } - } -} - -- (BOOL)essayUniverse:(UITextField *)essayUniverse shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { - if (essayUniverse == self.customIntratemporalEssayUniverse) { - NSString *regex =@"[0-9]*"; - NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex]; - if ([pred evaluateWithObject:string]) { - return YES; - } - return NO; - } - return YES; -} - -#pragma mark - Event Response -- (void)helpBtutonPerformance:(UIButton *)sender { - [self.customIntratemporalEssayUniverse resignFirstResponder]; - [self.combateDisportMannerEssayUniverse resignFirstResponder]; - YUMIThroughoutChamberCombatPreadominantRegard *view = [[YUMIThroughoutChamberCombatPreadominantRegard alloc] init]; - [MKJPopup popupRegard:view style:MKJPopupStyleAlert]; -} - -- (void)chosenCombatBtutonPerformance:(UIButton *)sender { - [self.customIntratemporalEssayUniverse resignFirstResponder]; - [self.combateDisportMannerEssayUniverse resignFirstResponder]; - self.chosenRegard.roomUid = self.roomUid; - CATransition *transition = [CATransition animation]; - transition.duration = 0.3f; - transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; - transition.type = kCATransitionPush; - transition.subtype = kCATransitionFromRight; - [self.chosenRegard.layer addAnimation:transition forKey:nil]; - [self.contentView addSubview:self.chosenRegard]; -} - -- (void)concludeIntrtowardsemporalBtutonPerformance:(UIButton *)sender { - [self.customIntratemporalEssayUniverse resignFirstResponder]; - [self.combateDisportMannerEssayUniverse resignFirstResponder]; - self.tenPennyBtuton.selected = YES; - self.twentyPennyBtuton.selected = YES; - self.thirtyPennyBtuton.selected = YES; - sender.selected = NO; - self.combatContinuance = sender.tag; - self.customIntratemporalEssayUniverse.text = nil; -} - -- (void)doneBtutonPerformance:(UIButton *)sender { - [self.customIntratemporalEssayUniverse resignFirstResponder]; - [self.combateDisportMannerEssayUniverse resignFirstResponder]; - NSString * pkDes = self.combateDisportMannerEssayUniverse.text.length > 0 ? self.combateDisportMannerEssayUniverse.text : @""; - [self.presimport instituteThroughoutChamberCombat:self.roomUid duration:self.combatContinuance acceptUid:self.chosenChamberAbstract.uid playDesc:pkDes]; -} - -- (void)revoctowardsionBtutonPerformance:(UIButton *)sender { - self.chosenChamberSatisfperformanceRegard.hidden = YES; - self.chosenCombatBtuton.hidden = NO; - self.chosenChamberAbstract = nil; - [self refurbishDoneBtutonDeclare]; - self.intelligenceportraitIndicateRegard.image = nil; - self.chamberChampionSequencignation.text = nil; - self.idSequencignation.text = nil; - [self.consumerHierarchyRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(32); - }]; -} - -- (void)onDigitalDirectortowardseResign:(UITapGestureRecognizer *)ges { - [self.customIntratemporalEssayUniverse resignFirstResponder]; - [self.combateDisportMannerEssayUniverse resignFirstResponder]; - if (self.chosenRegard.superview) { - CATransition *transition = [CATransition animation]; - transition.duration = 0.3f; - transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; - transition.type = kCATransitionPush; - transition.subtype = kCATransitionFromLeft; - [self.chosenRegard.layer addAnimation:transition forKey:nil]; - [self.chosenRegard removeFromSuperview]; - } else { - [self dismissViewControllerAnimated:YES completion:nil]; - } -} - -#pragma mark - Getters And Setters -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textColor = UIColor.whiteColor; - _titleLabel.font = [UIFont boldSystemFontOfSize:18]; - _titleLabel.text = @"跨房PK"; - } - return _titleLabel; -} -- (UIButton *)facilitateBtuton { - if (!_facilitateBtuton) { - _facilitateBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_facilitateBtuton setImage:[UIImage imageNamed:@"yumi_scope_across_pk_help"] forState:UIControlStateNormal]; - [_facilitateBtuton addTarget:self action:@selector(helpBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _facilitateBtuton; -} - -- (UIStackView *)consumerHierarchyRegard { - if (!_consumerHierarchyRegard) { - _consumerHierarchyRegard = [[UIStackView alloc] init]; - _consumerHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _consumerHierarchyRegard.distribution = UIStackViewDistributionFill; - _consumerHierarchyRegard.alignment = UIStackViewAlignmentFill; - _consumerHierarchyRegard.spacing = 16; - } - return _consumerHierarchyRegard; -} -- (UILabel *)chosenCombatSequencignation { - if (!_chosenCombatSequencignation) { - _chosenCombatSequencignation = [[UILabel alloc] init]; - _chosenCombatSequencignation.textColor = [UIColor whiteColor]; - _chosenCombatSequencignation.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; - _chosenCombatSequencignation.text = YMLocalizedString(@"YUMI_Across_Room_PK_View_Controller_5"); - [_chosenCombatSequencignation setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - } - return _chosenCombatSequencignation; -} -- (UIButton *)chosenCombatBtuton { - if (!_chosenCombatBtuton) { - _chosenCombatBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_chosenCombatBtuton setImage:[UIImage imageNamed:@"yumi_scope_across_pk_add_room"] forState:UIControlStateNormal]; - [_chosenCombatBtuton addTarget:self action:@selector(chosenCombatBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _chosenCombatBtuton; -} - -- (UIStackView *)intratemporalHierarchyRegard { - if (!_intratemporalHierarchyRegard) { - _intratemporalHierarchyRegard = [[UIStackView alloc] init]; - _intratemporalHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _intratemporalHierarchyRegard.distribution = UIStackViewDistributionFill; - _intratemporalHierarchyRegard.alignment = UIStackViewAlignmentFill; - _intratemporalHierarchyRegard.spacing = 16; - } - return _intratemporalHierarchyRegard; -} -- (UILabel *)chosenCombatIntratemporalSequencignation { - if (!_chosenCombatIntratemporalSequencignation) { - _chosenCombatIntratemporalSequencignation = [[UILabel alloc] init]; - _chosenCombatIntratemporalSequencignation.textColor =[UIColor whiteColor]; - _chosenCombatIntratemporalSequencignation.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; - _chosenCombatIntratemporalSequencignation.text = YMLocalizedString(@"YUMI_Across_Room_PK_View_Controller_6"); - } - return _chosenCombatIntratemporalSequencignation; -} - -- (UIStackView *)concludeIntratemporalHierarchyRegard { - if (!_concludeIntratemporalHierarchyRegard) { - _concludeIntratemporalHierarchyRegard = [[UIStackView alloc] init]; - _concludeIntratemporalHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _concludeIntratemporalHierarchyRegard.distribution = UIStackViewDistributionFillEqually; - _concludeIntratemporalHierarchyRegard.alignment = UIStackViewAlignmentFill; - _concludeIntratemporalHierarchyRegard.spacing = 5; - } - return _concludeIntratemporalHierarchyRegard; -} - -- (UIButton *)tenPennyBtuton { - if (!_tenPennyBtuton) { - _tenPennyBtuton = [[UIButton alloc] init]; - [_tenPennyBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFF9813), UIColorFromRGB(0xFFB22B)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_tenPennyBtuton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0x4C4C6A)] forState:UIControlStateSelected]; - [_tenPennyBtuton setTitle:YMLocalizedString(@"YUMI_Across_Room_PK_View_Controller_7") forState:UIControlStateNormal]; - _tenPennyBtuton.titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - [_tenPennyBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_tenPennyBtuton setTitleColor:[DJDKMIMOMColor prohibitionBtutonEssayPrettify] forState:UIControlStateSelected]; - _tenPennyBtuton.tag = 10; - [_tenPennyBtuton addTarget:self action:@selector(concludeIntrtowardsemporalBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _tenPennyBtuton.selected = NO; - _tenPennyBtuton.layer.masksToBounds = YES; - _tenPennyBtuton.layer.cornerRadius = 32 / 2; - } - return _tenPennyBtuton; -} - -- (UIButton *)twentyPennyBtuton { - if (!_twentyPennyBtuton) { - _twentyPennyBtuton = [[UIButton alloc] init]; - [_twentyPennyBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFF9813), UIColorFromRGB(0xFFB22B)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_twentyPennyBtuton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0x4C4C6A)] forState:UIControlStateSelected]; - [_twentyPennyBtuton setTitle:YMLocalizedString(@"YUMI_Across_Room_PK_View_Controller_8") forState:UIControlStateNormal]; - _twentyPennyBtuton.titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - [_twentyPennyBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [_twentyPennyBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; - _twentyPennyBtuton.tag = 20; - [_twentyPennyBtuton addTarget:self action:@selector(concludeIntrtowardsemporalBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _twentyPennyBtuton.selected = YES; - _twentyPennyBtuton.layer.masksToBounds = YES; - _twentyPennyBtuton.layer.cornerRadius = 32 / 2; - } - return _twentyPennyBtuton; -} - -- (UIButton *)thirtyPennyBtuton { - if (!_thirtyPennyBtuton) { - _thirtyPennyBtuton = [[UIButton alloc] init]; - [_thirtyPennyBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFF9813), UIColorFromRGB(0xFFB22B)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_thirtyPennyBtuton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0x4C4C6A)] forState:UIControlStateSelected]; - [_thirtyPennyBtuton setTitle:YMLocalizedString(@"YUMI_Across_Room_PK_View_Controller_9") forState:UIControlStateNormal]; - _thirtyPennyBtuton.titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - [_thirtyPennyBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [_thirtyPennyBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; - _thirtyPennyBtuton.tag = 30; - _thirtyPennyBtuton.layer.masksToBounds = YES; - _thirtyPennyBtuton.layer.cornerRadius = 32 / 2; - [_thirtyPennyBtuton addTarget:self action:@selector(concludeIntrtowardsemporalBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _thirtyPennyBtuton.selected = YES; - } - return _thirtyPennyBtuton; -} -- (UITextField *)customIntratemporalEssayUniverse { - if (!_customIntratemporalEssayUniverse) { - _customIntratemporalEssayUniverse = [[UITextField alloc] init]; - _customIntratemporalEssayUniverse.layer.cornerRadius = 15; - _customIntratemporalEssayUniverse.layer.masksToBounds = YES; - _customIntratemporalEssayUniverse.backgroundColor = UIColorFromRGB(0x4C4C6A); - _customIntratemporalEssayUniverse.textColor = [UIColor whiteColor]; - _customIntratemporalEssayUniverse.leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 19, 0)]; - _customIntratemporalEssayUniverse.leftViewMode = UITextFieldViewModeAlways; - _customIntratemporalEssayUniverse.delegate = self; - _customIntratemporalEssayUniverse.keyboardType = UIKeyboardTypeNumberPad; - _customIntratemporalEssayUniverse.tintColor = [UIColor whiteColor]; - _customIntratemporalEssayUniverse.attributedPlaceholder = [[NSAttributedString alloc] initWithString:YMLocalizedString(@"YUMI_Across_Room_PK_View_Controller_10") attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:15], NSForegroundColorAttributeName: UIColorFromRGB(0xC6C6E9)}]; - [_customIntratemporalEssayUniverse addTarget:self action:@selector(essayUniverseDidDiversifictowardsiond:) forControlEvents:UIControlEventEditingChanged]; - - } - return _customIntratemporalEssayUniverse; -} -- (UIStackView *)disportHierarchyRegard { - if (!_disportHierarchyRegard) { - _disportHierarchyRegard = [[UIStackView alloc] init]; - _disportHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _disportHierarchyRegard.distribution = UIStackViewDistributionFill; - _disportHierarchyRegard.alignment = UIStackViewAlignmentFill; - _disportHierarchyRegard.spacing = 16; - } - return _disportHierarchyRegard; -} - -- (UILabel *)combateDisportMannerSequencignation { - if (!_combateDisportMannerSequencignation) { - _combateDisportMannerSequencignation = [[UILabel alloc] init]; - _combateDisportMannerSequencignation.textColor = [UIColor whiteColor]; - _combateDisportMannerSequencignation.textAlignment = NSTextAlignmentRight; - _combateDisportMannerSequencignation.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; - _combateDisportMannerSequencignation.text = YMLocalizedString(@"YUMI_Across_Room_PK_View_Controller_11"); - } - return _combateDisportMannerSequencignation; -} - -- (UITextField *)combateDisportMannerEssayUniverse { - if (!_combateDisportMannerEssayUniverse) { - _combateDisportMannerEssayUniverse = [[UITextField alloc] init]; - _combateDisportMannerEssayUniverse.layer.cornerRadius = 15; - _combateDisportMannerEssayUniverse.layer.masksToBounds = YES; - _combateDisportMannerEssayUniverse.backgroundColor = UIColorFromRGB(0x4C4C6A); - _combateDisportMannerEssayUniverse.textColor = [UIColor whiteColor]; - _combateDisportMannerEssayUniverse.leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 19, 0)]; - _combateDisportMannerEssayUniverse.leftViewMode = UITextFieldViewModeAlways; - _combateDisportMannerEssayUniverse.delegate = self; - _combateDisportMannerEssayUniverse.attributedPlaceholder = [[NSAttributedString alloc] initWithString:YMLocalizedString(@"YUMI_Across_Room_PK_View_Controller_12") attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:15], NSForegroundColorAttributeName: UIColorFromRGB(0xC6C6E9)}]; - [_combateDisportMannerEssayUniverse addTarget:self action:@selector(essayUniverseDidDiversifictowardsiond:) forControlEvents:UIControlEventEditingChanged]; - } - return _combateDisportMannerEssayUniverse; -} - -- (UIButton *)doneBtuton { - if (!_doneBtuton) { - _doneBtuton = [[UIButton alloc] init]; - [_doneBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFF9813), UIColorFromRGB(0xFFB22B)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_doneBtuton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0x4C4C6A)] forState:UIControlStateDisabled]; - [_doneBtuton setTitle:YMLocalizedString(@"YUMI_Across_Room_PK_View_Controller_13") forState:UIControlStateNormal]; - _doneBtuton.layer.masksToBounds = YES; - _doneBtuton.layer.cornerRadius = 20; - _doneBtuton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; - [_doneBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [_doneBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateDisabled]; - [_doneBtuton addTarget:self action:@selector(doneBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _doneBtuton.enabled = NO; - } - return _doneBtuton; -} - -- (UIView *)chosenChamberSatisfperformanceRegard { - if (!_chosenChamberSatisfperformanceRegard) { - _chosenChamberSatisfperformanceRegard = [[UIView alloc] init]; - _chosenChamberSatisfperformanceRegard.hidden = YES; - } - return _chosenChamberSatisfperformanceRegard; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 60 / 2; - _intelligenceportraitIndicateRegard.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)chamberChampionSequencignation { - if (!_chamberChampionSequencignation) { - _chamberChampionSequencignation = [[UILabel alloc] init]; - _chamberChampionSequencignation.textColor = [UIColor whiteColor]; - _chamberChampionSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - } - return _chamberChampionSequencignation; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.textColor = [UIColor whiteColor]; - _idSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - } - return _idSequencignation; -} - -- (UIButton *)revocationBtuton { - if (!_revocationBtuton) { - _revocationBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_revocationBtuton setImage:[UIImage imageNamed:@"yumi_scope_across_delete_pk_room"] forState:UIControlStateNormal]; - [_revocationBtuton addTarget:self action:@selector(revoctowardsionBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _revocationBtuton; -} - -- (UIView *)contentView { - if (!_contentView) { - _contentView = [[UIView alloc] init]; - _contentView.backgroundColor = UIColorFromRGB(0x2A2A39); - CAShapeLayer * layer = [CAShapeLayer layer]; - layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth,kContentHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)].CGPath; - _contentView.layer.mask = layer; - } - return _contentView; -} - -- (UIView *)apexRegard { - if (!_apexRegard) { - _apexRegard = [[UIView alloc] init]; - _apexRegard.backgroundColor = UIColor.blackColor; - _apexRegard.alpha = 0.3; - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onDigitalDirectortowardseResign:)]; - [_apexRegard addGestureRecognizer:tap]; - } - return _apexRegard; -} - -- (YUMIThroughoutChamberCombatChosenChamberRegard *)chosenRegard { - if (!_chosenRegard) { - _chosenRegard = [[YUMIThroughoutChamberCombatChosenChamberRegard alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, kContentHeight)]; - _chosenRegard.delegate = self; - } - return _chosenRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityContainerView.h b/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityContainerView.h new file mode 100644 index 00000000..a3eca614 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityContainerView.h @@ -0,0 +1,17 @@ +// +// YMRoomActivityView.h +// YUMI +// +// Created by YUMI on 2021/10/12. +// + +#import +#import "RoomHostDelegate.h" +#import "RoomGuestDelegate.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomActivityContainerView : UIView +- (instancetype)initWithdelegate:(id)delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityContainerView.m b/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityContainerView.m new file mode 100644 index 00000000..e8255d56 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityContainerView.m @@ -0,0 +1,473 @@ +// +// XPRoomActivityView.m +// YuMi +// +// Created by YuMi on 2021/10/12. +// + +#import "XPRoomActivityContainerView.h" +///Third +#import +#import +///Tool +#import "AccountInfoStorage.h" +#import "Api+Room.h" +#import "ClientConfig.h" +#import "NetImageView.h" +#import "TTPopup.h" +#import "XNDJTDDLoadingTool.h" +#import "YUMIMacroUitls.h" +///Model +#import "UserInfoModel.h" +#import "RoomInfoModel.h" +#import "ActivityInfoModel.h" +#import "AttachmentModel.h" +#import "FirstRechargeModel.h" +///View +#import "XPRoomHalfWebView.h" +#import "XPCandyTreeViewController.h" +#import "XPWebViewController.h" +#import "XPRoomViewController.h" +#import "XPFirstRechargeSuccessView.h" +#import "XPArrangeMicViewController.h" +#import "XPSailingViewController.h" +#import "XCCurrentVCStackManager.h" +UIKIT_EXTERN NSString *kShowFirstRechargeView; +@interface XPRoomActivityContainerView () +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///轮播图 +@property (nonatomic,strong) SDCycleScrollView *cycleScrollView; +/// +@property (nonatomic,strong) UIView * placeHolderView; +///糖果树 +@property (nonatomic,strong) NetImageView *lookLoveImageView; +///首充的 +@property (nonatomic,strong) UIImageView *firstRechargeImageView; +///参加相亲 +@property (nonatomic,strong) UIImageView *joinDatingView; +///host 代理 +@property (nonatomic,weak) idhostDelegate; +///房间活动的列表 +@property (nonatomic,copy) NSMutableArray *activityList; +///是否加载了活动 +@property (nonatomic,assign) BOOL isLoadActivity; +///夺宝精灵 +@property (nonatomic,strong) ActivityInfoModel *fairyActivityModel; +///首充 +@property (nonatomic,strong) ActivityInfoModel * firstRechargeModel; +///寻爱之旅 +@property (nonatomic,strong) ActivityInfoModel * lookLoveModel; +@end + +@implementation XPRoomActivityContainerView + +- (instancetype)initWithdelegate:(id)delegate { + self = [super init]; + if (self) { + self.hostDelegate = delegate; + [self initSubViews]; + [self initSubViewConstraints]; + [self requestActivityList]; + [self configLookLove]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.stackView]; + [self.stackView addArrangedSubview:self.cycleScrollView]; + [self.stackView addArrangedSubview:self.placeHolderView]; + [self.stackView addArrangedSubview:self.firstRechargeImageView]; + [self.stackView addArrangedSubview:self.lookLoveImageView]; + [self.stackView addArrangedSubview:self.joinDatingView]; +} + +- (void)initSubViewConstraints { + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + CGFloat itemWidth = KScreenHeight > 667 ? 65 : 55 * kScreenHeightScale; + [self.cycleScrollView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(itemWidth , itemWidth)); + }]; + + [self.firstRechargeImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(itemWidth, itemWidth)); + }]; + + [self.lookLoveImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(itemWidth, itemWidth)); + }]; + + [self.joinDatingView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(35* kScreenHeightScale); + }]; + +} + +- (void)requestActivityList { + ///网络请求异步加载 + dispatch_group_t group =dispatch_group_create(); + // 并行队列 + dispatch_queue_t queue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0); + + dispatch_group_enter(group); + dispatch_group_async(group, queue, ^{ + + NSString * roomId = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.roomId]; + [Api roomActivityList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + NSArray * array = [ActivityInfoModel modelsWithArray:data.data]; + [self.activityList addObjectsFromArray:array]; + } + dispatch_group_leave(group); + } roomId:roomId type:@"2"]; + + }); + + + dispatch_group_notify(group,dispatch_get_main_queue(), ^{ + self.isLoadActivity = YES; + self.cycleScrollView.hidden = NO; + ///是否包含首充 + [self configfirstRecharge]; + NSMutableArray *picArray = [NSMutableArray array]; + for (ActivityInfoModel *model in self.activityList) { + [picArray addObject:model.bannerPic]; + } + self.cycleScrollView.imageURLStringsGroup = picArray; + if (self.activityList.count > 1) { + [self.cycleScrollView setAutoScroll:YES]; + self.cycleScrollView.autoScrollTimeInterval = 3; + } else { + [self.cycleScrollView setAutoScroll:NO]; + } + }); + +} +///首充 +-(void)configfirstRecharge{ + UserInfoModel * userInfo = self.hostDelegate.getUserInfo; + if (userInfo.isFirstCharge == YES) { + if(![self.activityList containsObject:self.firstRechargeModel]){ + [self.activityList insertObject:self.firstRechargeModel atIndex:0]; + } + }else{ + if([self.activityList containsObject:self.firstRechargeModel]){ + [self.activityList removeObject:self.firstRechargeModel]; + } + + } +} +///寻爱之旅 +- (void)configLookLove { + UserInfoModel * userInfo = self.hostDelegate.getUserInfo; + RoomInfoModel * roomInfo = self.hostDelegate.getRoomInfo; + if (userInfo.userLevelVo.experLevelSeq >= roomInfo.findLoveDrawSwitchVo.openLevel && roomInfo.findLoveDrawSwitchVo.open == YES) { + self.lookLoveImageView.hidden = NO; + self.lookLoveImageView.image = [UIImage imageNamed:@"room_candy_tree_enter"]; + } else { + self.lookLoveImageView.hidden = YES; + } +} + +#pragma mark - RoomGuestDelegat +- (void)onRoomUpdate { + RoomInfoModel * roomInfo = self.hostDelegate.getRoomInfo; + if (roomInfo.type == RoomType_MiniGame) { + self.firstRechargeImageView.hidden = YES; + self.lookLoveImageView.hidden = YES; + + [self requestActivityList]; + } else { + if([self.activityList containsObject:self.lookLoveModel]){ + [self.activityList removeObject:self.lookLoveModel]; + } + [self configLookLove]; + self.firstRechargeImageView.hidden = YES; + [self configfirstRecharge]; + NSMutableArray *picArray = [NSMutableArray array]; + for (ActivityInfoModel *model in self.activityList) { + [picArray addObject:model.bannerPic]; + } + self.cycleScrollView.imageURLStringsGroup = picArray; + if (self.activityList.count > 1) { + [self.cycleScrollView setAutoScroll:YES]; + self.cycleScrollView.autoScrollTimeInterval = 3; + } else { + [self.cycleScrollView setAutoScroll:NO]; + } + if (roomInfo.roomModeType == RoomModeType_Open_Blind || roomInfo.roomModeType == RoomModeType_Open_PK_Mode || roomInfo.roomModeType == RoomModeType_Open_Micro_Mode) { + if (roomInfo.roomModeType == RoomModeType_Open_PK_Mode ) { + self.joinDatingView.image = [UIImage imageNamed:@"room_pk_normal_member_enter"]; + } else { + self.joinDatingView.image = [UIImage imageNamed:@"room_mode_dating_enter"]; + } + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + request.userIds = @[[AccountInfoStorage instance].getUid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + if (error == nil) { + NIMChatroomMember * member = members.firstObject; + if (member.type == NIMTeamMemberTypeOwner || member.type == NIMTeamMemberTypeManager) { + self.joinDatingView.hidden = YES; + return; + } + } + self.joinDatingView.hidden = NO; + }]; + } else { + self.joinDatingView.hidden = YES; + } + } +} + +- (void)onRoomEntered { + [self onRoomUpdate]; +} + +- (void)handleNIMCustomMessage:(NIMMessage *)message { + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) { + AttachmentModel *attachment = (AttachmentModel *)obj.attachment; + if (attachment.first == CustomMessageType_First_Recharge_Reward && attachment.second == Custom_Message_Sub_Room_First_Recharge_Reward) { + FirstRechargeModel *model = [FirstRechargeModel modelWithJSON:attachment.data]; + XPFirstRechargeSuccessView * firstRechargeView= [[XPFirstRechargeSuccessView alloc] init]; + firstRechargeView.rechargeInfo = model; + [TTPopup popupView:firstRechargeView style:TTPopupStyleAlert]; + } + } +} + +- (void)handleNIMNotificationMessage:(NIMMessage *)message { + NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; + NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; + switch (content.eventType) { + case NIMChatroomEventTypeAddManager: + { + if (self.hostDelegate.getRoomInfo.roomModeType == RoomModeType_Open_Blind || self.hostDelegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode) { + for (NIMChatroomNotificationMember * member in content.targets) { + if (member.userId.intValue == [AccountInfoStorage instance].getUid.integerValue) { + self.joinDatingView.hidden = YES; + break; + } + } + } + } + break; + case NIMChatroomEventTypeRemoveManager: + { + if (self.hostDelegate.getRoomInfo.roomModeType == RoomModeType_Open_Blind || self.hostDelegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode) { + for (NIMChatroomNotificationMember * member in content.targets) { + if (member.userId.intValue == [AccountInfoStorage instance].getUid.integerValue) { + self.joinDatingView.hidden = NO; + break; + } + } + } + } + break; + default: + break; + } +} + +#pragma mark - SDCycleScrollViewDelegate +- (void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didSelectItemAtIndex:(NSInteger)index { + NSArray *imageUrlList = cycleScrollView.imageURLStringsGroup; + if (imageUrlList.count > index) { + NSString *pic = imageUrlList[index]; + ActivityInfoModel * info; + for (ActivityInfoModel * getInfo in self.activityList) { + if([getInfo.bannerPic isEqualToString:pic]){ + info = getInfo; + break;; + } + } + if(info == nil)return; + if (info.activityType == ActivityType_Love) { + [self lookLoveTapRecognizer]; + } else if(info.activityType == ActivityType_First) { + [self firstRechargeTapRecognizer]; + }else { + if (info.skipType == ActivitySkipType_Room) { + [self.hostDelegate exitRoom]; + [XPRoomViewController openRoom:info.skipUri viewController:self.hostDelegate.getCurrentNav]; + } else if(info.skipType == ActivitySkipType_Web) { + if (info.showType == ActivityShowType_Half) { + XPRoomHalfWebView * webView = [[XPRoomHalfWebView alloc] init]; + webView.roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; + webView.url = info.skipUri; + [TTPopup popupView:webView style:TTPopupStyleActionSheet]; + return; + } + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + webVC.roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; + webVC.url = info.skipUri; + [self.hostDelegate.getCurrentNav pushViewController:webVC animated:YES]; + } + } + } +} + +#pragma mark - Event Response +- (void)lookLoveTapRecognizer { + XPCandyTreeViewController * candyTreeVC = [[XPCandyTreeViewController alloc] initWithDelegate:self.hostDelegate]; + candyTreeVC.view.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); + + [[XCCurrentVCStackManager shareManager].getCurrentVC addChildViewController:candyTreeVC]; + [candyTreeVC.navigationController setNavigationBarHidden:YES animated:NO]; + [[XCCurrentVCStackManager shareManager].getCurrentVC.view addSubview:candyTreeVC.view]; +} + +- (void)firstRechargeTapRecognizer { + [[NSNotificationCenter defaultCenter]postNotificationName:kShowFirstRechargeView object:nil]; +} + +- (void)didTapJoinDatingRecognizer { + if (self.hostDelegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode && self.hostDelegate.isRoomPKPlaying) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPRoomActivityContainerView2")]; + return; + } + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.roomId]; + request.userIds = @[[AccountInfoStorage instance].getUid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + NIMChatroomMember * member; + if (error == nil) { + member = members.firstObject; + } + RoomInfoModel * roomInfo = self.hostDelegate.getRoomInfo; + XPArrangeMicInfoModel * info = [[XPArrangeMicInfoModel alloc] init]; + info.roomUid = [NSString stringWithFormat:@"%ld", roomInfo.uid]; + info.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + info.nick = roomInfo.nick; + info.roomAvatar = roomInfo.avatar; + info.roomTitle = roomInfo.title; + info.micQueue = [self.hostDelegate getMicroQueue]; + info.isManager = (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager); + info.type = roomInfo.roomModeType == RoomModeType_Open_Blind ? ArrangeMicType_Dating : roomInfo.roomModeType == RoomModeType_Open_PK_Mode ? ArrangeMicType_Room_PK : ArrangeMicType_Normal; + XPArrangeMicViewController * arrangeMicVC = [[XPArrangeMicViewController alloc] initWithInfo:info]; + [self.hostDelegate.getCurrentNav presentViewController:arrangeMicVC animated:YES completion:nil]; + }]; +} + +- (void)sailTapRecognizer { + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; + XPSailingViewController * sailingVC = [[XPSailingViewController alloc] initWithRoomUid:roomUid]; + [self.hostDelegate.getCurrentNav presentViewController:sailingVC animated:YES completion:nil]; +} + +#pragma mark - Getters And Setters +- (SDCycleScrollView *)cycleScrollView { + if (!_cycleScrollView) { + _cycleScrollView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectZero delegate:self placeholderImage:nil]; + _cycleScrollView.pageControlAliment = SDCycleScrollViewPageContolAlimentCenter; + _cycleScrollView.currentPageDotColor = [UIColor whiteColor]; + _cycleScrollView.pageDotColor = [UIColor colorWithWhite:1 alpha:0.2]; + + _cycleScrollView.pageControlDotSize = CGSizeMake(5, 2); + _cycleScrollView.pageControlStyle = SDCycleScrollViewPageContolStyleClassic; + _cycleScrollView.currentPageDotImage = [UIImage imageNamed:@"room_activity_banner_select"]; + _cycleScrollView.pageDotImage = [UIImage imageNamed:@"room_activity_banner_normal"]; + _cycleScrollView.backgroundColor = [UIColor colorWithWhite:1 alpha:0.00]; + _cycleScrollView.bannerImageViewContentMode = UIViewContentModeScaleAspectFit; + _cycleScrollView.pageControlBottomOffset = -10; + _cycleScrollView.hidden = YES; + + } + return _cycleScrollView; +} + +- (UIView *)placeHolderView { + if (!_placeHolderView) { + _placeHolderView = [[UIView alloc] init]; + _placeHolderView.backgroundColor = [UIColor clearColor]; + [_placeHolderView setContentHuggingPriority:UILayoutPriorityDragThatCanResizeScene forAxis:UILayoutConstraintAxisHorizontal]; + [_placeHolderView setContentCompressionResistancePriority:UILayoutPriorityFittingSizeLevel forAxis:UILayoutConstraintAxisHorizontal]; + } + return _placeHolderView; +} + + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentCenter; + _stackView.spacing = 5; + } + return _stackView; +} + +- (UIImageView *)lookLoveImageView { + if (!_lookLoveImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImage imageNamed:@"room_candy_tree_enter"]; + config.imageType = ImageTypeUserIcon; + _lookLoveImageView = [[NetImageView alloc] initWithConfig:config]; + _lookLoveImageView.userInteractionEnabled = YES; + _lookLoveImageView.hidden = YES; + _lookLoveImageView.image = [UIImage imageNamed:@"room_candy_tree_enter"]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(lookLoveTapRecognizer)]; + [_lookLoveImageView addGestureRecognizer:tap]; + } + return _lookLoveImageView; +} + +- (UIImageView *)firstRechargeImageView { + if (!_firstRechargeImageView) { + _firstRechargeImageView = [[UIImageView alloc] init]; + _firstRechargeImageView.image = [UIImage imageNamed:@"room_first_recharge_enter"]; + _firstRechargeImageView.userInteractionEnabled = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(firstRechargeTapRecognizer)]; + [_firstRechargeImageView addGestureRecognizer:tap]; + } + return _firstRechargeImageView; +} + +- (UIImageView *)joinDatingView { + if (!_joinDatingView) { + _joinDatingView = [[UIImageView alloc] init]; + _joinDatingView.image = [UIImage imageNamed:@"room_mode_dating_enter"]; + _joinDatingView.userInteractionEnabled = YES; + _joinDatingView.hidden = YES; + _joinDatingView.contentMode = UIViewContentModeScaleAspectFit; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapJoinDatingRecognizer)]; + [_joinDatingView addGestureRecognizer:tap]; + } + return _joinDatingView; +} + +- (NSMutableArray *)activityList { + if (!_activityList) { + _activityList = [NSMutableArray array]; + } + return _activityList; +} + +- (ActivityInfoModel *)firstRechargeModel{ + if (!_firstRechargeModel){ + ActivityInfoModel * activityInfo = [[ActivityInfoModel alloc] init]; + activityInfo.bannerPic = @"room_first_recharge_enter"; + activityInfo.bannerName = YMLocalizedString(@"XPRoomActivityContainerView0"); + _firstRechargeModel = activityInfo; + _firstRechargeModel.activityType = ActivityType_First; + } + return _firstRechargeModel; +} +-(ActivityInfoModel *)lookLoveModel{ + if (!_lookLoveModel){ + ActivityInfoModel * activityInfo = [[ActivityInfoModel alloc] init]; + activityInfo.bannerName = YMLocalizedString(@"XPRoomActivityContainerView1"); + _lookLoveModel = activityInfo; + _lookLoveModel.activityType = ActivityType_Love; + } + return _lookLoveModel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityPlayView.h b/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityPlayView.h new file mode 100644 index 00000000..76c085f7 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityPlayView.h @@ -0,0 +1,32 @@ +// +// YMRoomActivityPlayView.h +// YUMI +// +// Created by YUMI on 2022/9/30. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class XPRoomActivityPlayModel; +@protocol XPRoomActivityPlayViewDelegate + +///展示更多玩法 +- (void)xPRoomActivityPlayViewShowMorePlay; +///隐藏更多玩法 +- (void)xPRoomActivityPlayViewHideMorePlay; +///点击了某个玩法 +- (void)xPRoomActivityPlayViewDidClickPlay:(XPRoomActivityPlayModel *)model; + +@end + +@interface XPRoomActivityPlayView : UIView + +@property (nonatomic, strong) NSMutableArray *playArray; + +@property (nonatomic, weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityPlayView.m b/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityPlayView.m new file mode 100644 index 00000000..24569194 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityPlayView.m @@ -0,0 +1,126 @@ +// +// YMRoomActivityPlayView.m +// YUMI +// +// Created by YUMI on 2022/9/30. +// + +#import "XPRoomActivityPlayView.h" +///Third +#import +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +///Model +#import "XPRoomActivityPlayModel.h" +#import "NetImageView.h" + +@interface XPRoomActivityPlayView() + +@property (nonatomic, strong) UIButton *moreButton; + +@end + +@implementation XPRoomActivityPlayView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + + UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.moreButton.bounds byRoundingCorners:UIRectCornerTopLeft | UIRectCornerBottomLeft cornerRadii:CGSizeMake(8, 8)]; + CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; + maskLayer.frame = self.moreButton.bounds; + maskLayer.path = maskPath.CGPath; + self.moreButton.layer.mask = maskLayer; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.moreButton]; +} + +- (void)initSubViewConstraints { + [self.moreButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.bottom.mas_equalTo(self); + make.width.mas_equalTo(18); + }]; +} + + +- (void)moreButtonAction:(UIButton *)sender { + if (self.frame.size.width > 18) { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomActivityPlayViewHideMorePlay)]) { + [self.delegate xPRoomActivityPlayViewHideMorePlay]; + } + } else { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomActivityPlayViewShowMorePlay)]) { + [self.delegate xPRoomActivityPlayViewShowMorePlay]; + } + } +} + +- (void)imageTapRecognizer:(UITapGestureRecognizer *)ges { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomActivityPlayViewDidClickPlay:)]) { + XPRoomActivityPlayModel *model = self.playArray[ges.view.tag]; + [self.delegate xPRoomActivityPlayViewDidClickPlay:model]; + } +} + +- (void)setPlayArray:(NSMutableArray *)playArray { + _playArray = playArray; + if (playArray.count) { + CGFloat itemWidth = 45; + for (int i = 0; i -#import "ChamberHostRepresendtation.h" -#import "ChamberGuestRepresendtation.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberImportpriseAccommodatedRegard : UIView -- (instancetype)initAboutdelegtowardse:(id)delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ActivityContainerView/YUMIChamberImportpriseAccommodatedRegard.m b/YuMi/Modules/YMRoom/View/ActivityContainerView/YUMIChamberImportpriseAccommodatedRegard.m deleted file mode 100644 index 3bdff627..00000000 --- a/YuMi/Modules/YMRoom/View/ActivityContainerView/YUMIChamberImportpriseAccommodatedRegard.m +++ /dev/null @@ -1,503 +0,0 @@ -// -// XPRoomActivityView.m -// YuMi -// -// Created by YuMi on 2021/10/12. -// - -#import "YUMIChamberImportpriseAccommodatedRegard.h" -#import -#import -#import "AccountAbstractStorage.h" -#import "Api+Room.h" -#import "ClientDisposition.h" -#import "NetIndicateRegard.h" -#import "MKJPopup.h" -#import "XNDJTBWGLoadingTool.h" -#import "YUMIMacroUitls.h" -#import "ConsumerAbstractMatrix.h" -#import "ChamberAbstractMatrix.h" -#import "ImportpriseAbstractMatrix.h" -#import "AttachmentMatrix.h" -#import "ThresholdReindictMatrix.h" -#import "YUMIChamberHalfTissueRegard.h" -#import "YUMIConfectioneryTimberRegardGovernancer.h" -#import "YUMITissueRegardGovernancer.h" -#import "YUMIChamberRegardGovernancer.h" -#import "YUMIThresholdReindictSuccessRegard.h" -#import "YUMIScheduleLoudspeakerRegardGovernancer.h" -#import "YUMIMarchingRegardGovernancer.h" -#import "XCCurrentVCStackExecutive.h" -#import "XPTreasureFairyViewController.h" -#import "Api+TreasureFairy.h" -#import "TreasureFairyLimitModel.h" - -UIKIT_EXTERN NSString *kShowFirstRechargeView; -@interface YUMIChamberImportpriseAccommodatedRegard () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) SDCycleScrollView *cycleTrundleRegard; -@property (nonatomic,strong) UIView * deparatmentMaintainrietaryRegard; -@property (nonatomic,strong) NetIndicateRegard *lookLoveIndicateRegard; -@property (nonatomic,strong) UIImageView *thresholdReindictIndicateRegard; -@property (nonatomic,strong) UIImageView *joinEngagementRegard; -@property (nonatomic,weak) idhostRepresedtation; -@property (nonatomic,copy) NSMutableArray *importpriseStatement; -@property (nonatomic,assign) BOOL isChamberImportprise; -@property (nonatomic,strong) ImportpriseAbstractMatrix *fairyImportpriseMatrix; -@property (nonatomic,strong) ImportpriseAbstractMatrix * thresholdReindictMatrix; -@property (nonatomic,strong) ImportpriseAbstractMatrix * lookLoveMatrix; -@property (nonatomic,strong) TreasureFairyLimitModel *pi_fairyModel; -@property (nonatomic,strong) ImportpriseAbstractMatrix *pi_fairyActivityModel; -@end - -@implementation YUMIChamberImportpriseAccommodatedRegard - -- (instancetype)initAboutdelegtowardse:(id)delegate { - self = [super init]; - if (self) { - self.hostRepresedtation = delegate; - [self initSubViews]; - [self initChildLyRestrictions]; - [self requisitionImportpriseSttowardsement]; - [self prohibitipositionConsiderLove]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.stackView]; - [self.stackView addArrangedSubview:self.cycleTrundleRegard]; - [self.stackView addArrangedSubview:self.deparatmentMaintainrietaryRegard]; - [self.stackView addArrangedSubview:self.thresholdReindictIndicateRegard]; - [self.stackView addArrangedSubview:self.lookLoveIndicateRegard]; - [self.stackView addArrangedSubview:self.joinEngagementRegard]; -} - -- (void)initChildLyRestrictions { - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - CGFloat itemWidth = KScreenHeight > 667 ? 65 : 55 * kScreenHeightScale; - [self.cycleTrundleRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(itemWidth , itemWidth)); - }]; - - [self.thresholdReindictIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(itemWidth, itemWidth)); - }]; - - [self.lookLoveIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(itemWidth, itemWidth)); - }]; - - [self.joinEngagementRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(35* kScreenHeightScale); - }]; - -} - -- (void)requisitionImportpriseSttowardsement { - - dispatch_group_t group =dispatch_group_create(); - - dispatch_queue_t queue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0); - - dispatch_group_enter(group); - dispatch_group_async(group, queue, ^{ - - NSString * roomId = [NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.roomId]; - [Api chamberImportpriseSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSArray * array = [ImportpriseAbstractMatrix mtowardsrixsAboutGarment:data.data]; - [self.importpriseStatement addObjectsFromArray:array]; - } - dispatch_group_leave(group); - } roomId:roomId type:@"2"]; - - }); - - dispatch_group_enter(group); - dispatch_group_async(group, queue, ^{ - - [Api treasureFailyLimitInfo:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if(code == 200){ - TreasureFairyLimitModel * info =[TreasureFairyLimitModel mtowardsrixAboutImpactbasket:data.data]; - self.pi_fairyModel = info; - } - dispatch_group_leave(group); - }]; - - }); - dispatch_group_notify(group,dispatch_get_main_queue(), ^{ - self.isChamberImportprise = YES; - self.cycleTrundleRegard.hidden = NO; - [self configPiFairy]; - [self prohibitipositionthresholdReindict]; - NSMutableArray *picArray = [NSMutableArray array]; - for (ImportpriseAbstractMatrix *model in self.importpriseStatement) { - [picArray addObject:model.bannerPic]; - } - self.cycleTrundleRegard.imageURLStringsGroup = picArray; - if (self.importpriseStatement.count > 1) { - [self.cycleTrundleRegard setAutoScroll:YES]; - self.cycleTrundleRegard.autoScrollTimeInterval = 3; - } else { - [self.cycleTrundleRegard setAutoScroll:NO]; - } - }); - -} --(void)configPiFairy{ - ConsumerAbstractMatrix * userInfo = self.hostRepresedtation.getUserInfo; - if (self.pi_fairyModel.open == YES && self.pi_fairyModel.levelLimit <= userInfo.userLevelVo.experLevelSeq) { - if(![self.importpriseStatement containsObject:self.pi_fairyActivityModel]){ - [self.importpriseStatement insertObject:self.pi_fairyActivityModel atIndex:0]; - } - }else{ - if([self.importpriseStatement containsObject:self.pi_fairyActivityModel]){ - [self.importpriseStatement removeObject:self.pi_fairyActivityModel]; - } - } -} --(void)prohibitipositionthresholdReindict{ - ConsumerAbstractMatrix * userInfo = self.hostRepresedtation.getUserInfo; - if (userInfo.isFirstCharge == YES) { - if(![self.importpriseStatement containsObject:self.thresholdReindictMatrix]){ - [self.importpriseStatement insertObject:self.thresholdReindictMatrix atIndex:0]; - } - }else{ - if([self.importpriseStatement containsObject:self.thresholdReindictMatrix]){ - [self.importpriseStatement removeObject:self.thresholdReindictMatrix]; - } - - } -} -- (void)prohibitipositionConsiderLove { - ConsumerAbstractMatrix * userInfo = self.hostRepresedtation.getUserInfo; - ChamberAbstractMatrix * roomInfo = self.hostRepresedtation.acquireChamberAbstract; - if (userInfo.userLevelVo.experLevelSeq >= roomInfo.findLoveDrawSwitchVo.openLevel && roomInfo.findLoveDrawSwitchVo.open == YES) { - self.lookLoveIndicateRegard.hidden = NO; - self.lookLoveIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_candy_tree_enter"]; - } else { - self.lookLoveIndicateRegard.hidden = YES; - } -} - -#pragma mark - RoomGuestDelegat -- (void)onChamberRefurbish { - ChamberAbstractMatrix * roomInfo = self.hostRepresedtation.acquireChamberAbstract; - if (roomInfo.type == ChamberGenre_MiniGame) { - self.thresholdReindictIndicateRegard.hidden = YES; - self.lookLoveIndicateRegard.hidden = YES; - - [self requisitionImportpriseSttowardsement]; - } else { - if([self.importpriseStatement containsObject:self.lookLoveMatrix]){ - [self.importpriseStatement removeObject:self.lookLoveMatrix]; - } - [self prohibitipositionConsiderLove]; - self.thresholdReindictIndicateRegard.hidden = YES; - [self configPiFairy]; - [self prohibitipositionthresholdReindict]; - NSMutableArray *picArray = [NSMutableArray array]; - for (ImportpriseAbstractMatrix *model in self.importpriseStatement) { - [picArray addObject:model.bannerPic]; - } - self.cycleTrundleRegard.imageURLStringsGroup = picArray; - if (self.importpriseStatement.count > 1) { - [self.cycleTrundleRegard setAutoScroll:YES]; - self.cycleTrundleRegard.autoScrollTimeInterval = 3; - } else { - [self.cycleTrundleRegard setAutoScroll:NO]; - } - if (roomInfo.roomModeType == ChamberModeGenre_Open_Blind || roomInfo.roomModeType == ChamberModeGenre_Open_PK_Mode || roomInfo.roomModeType == ChamberModeGenre_Open_Micro_Mode) { - if (roomInfo.roomModeType == ChamberModeGenre_Open_PK_Mode ) { - self.joinEngagementRegard.image = [UIImage imageNamed:@"yumi_scope_pk_normal_member_enter"]; - } else { - self.joinEngagementRegard.image = [UIImage imageNamed:@"yumi_scope_mode_dating_enter"]; - } - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - request.userIds = @[[AccountAbstractStorage instance].acquireCid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - if (error == nil) { - NIMChatroomMember * member = members.firstObject; - if (member.type == NIMTeamMemberTypeOwner || member.type == NIMTeamMemberTypeManager) { - self.joinEngagementRegard.hidden = YES; - return; - } - } - self.joinEngagementRegard.hidden = NO; - }]; - } else { - self.joinEngagementRegard.hidden = YES; - } - } -} - -- (void)onChamberImported { - [self onChamberRefurbish]; -} - -- (void)shankNEMCIndividualityCommunictowardsion:(NIMMessage *)message { - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentMatrix class]]) { - AttachmentMatrix *attachment = (AttachmentMatrix *)obj.attachment; - if (attachment.first == IndividualityCommunicationGenre_First_Recharge_Reward && attachment.second == Custom_Message_Sub_Room_First_Recharge_Reward) { - ThresholdReindictMatrix *model = [ThresholdReindictMatrix mtowardsrixAboutJSON:attachment.data]; - YUMIThresholdReindictSuccessRegard * thresholdReindictRegard= [[YUMIThresholdReindictSuccessRegard alloc] init]; - thresholdReindictRegard.reindictAbstract = model; - [MKJPopup popupRegard:thresholdReindictRegard style:MKJPopupStyleAlert]; - } - } -} - -- (void)shankNEMCCircularCommunictowardsion:(NIMMessage *)message { - NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; - NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; - switch (content.eventType) { - case NIMChatroomEventTypeAddManager: - { - if (self.hostRepresedtation.acquireChamberAbstract.roomModeType == ChamberModeGenre_Open_Blind || self.hostRepresedtation.acquireChamberAbstract.roomModeType == ChamberModeGenre_Open_PK_Mode) { - for (NIMChatroomNotificationMember * member in content.targets) { - if (member.userId.intValue == [AccountAbstractStorage instance].acquireCid.integerValue) { - self.joinEngagementRegard.hidden = YES; - break; - } - } - } - } - break; - case NIMChatroomEventTypeRemoveManager: - { - if (self.hostRepresedtation.acquireChamberAbstract.roomModeType == ChamberModeGenre_Open_Blind || self.hostRepresedtation.acquireChamberAbstract.roomModeType == ChamberModeGenre_Open_PK_Mode) { - for (NIMChatroomNotificationMember * member in content.targets) { - if (member.userId.intValue == [AccountAbstractStorage instance].acquireCid.integerValue) { - self.joinEngagementRegard.hidden = NO; - break; - } - } - } - } - break; - default: - break; - } -} - -#pragma mark - SDCycleScrollViewDelegate -- (void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didSelectItemAtIndex:(NSInteger)index { - NSArray *imageUrlList = cycleScrollView.imageURLStringsGroup; - if (imageUrlList.count > index) { - NSString *pic = imageUrlList[index]; - ImportpriseAbstractMatrix * info; - for (ImportpriseAbstractMatrix * getInfo in self.importpriseStatement) { - if([getInfo.bannerPic isEqualToString:pic]){ - info = getInfo; - break;; - } - } - if(info == nil)return; - if (info.activityType == ActivityGenre_Love) { - [self lookLoveBetowardsRecognition]; - } else if(info.activityType == ActivityGenre_First) { - [self thresholdReindictBetowardsRecognition]; - }else if(info.activityType == ActivityGenre_Fairy) { - ConsumerAbstractMatrix * userInfo = self.hostRepresedtation.getUserInfo; - XPTreasureFairyViewController * fairyVC = [[XPTreasureFairyViewController alloc] init]; - fairyVC.roomUid =[NSString stringWithFormat:@"%ld", userInfo.uid]; - fairyVC.modalPresentationStyle = UIModalPresentationOverFullScreen; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC presentViewController:fairyVC animated:YES completion:nil]; - } - else { - if (info.skipType == ActivitySkipGenre_Room) { - [self.hostRepresedtation exitRoom]; - [YUMIChamberRegardGovernancer unfoildChamber:info.skipUri viewController:self.hostRepresedtation.acquireUniversalNev]; - } else if(info.skipType == ActivitySkipGenre_Web) { - if (info.showType == ActivityShowGenre_Half) { - YUMIChamberHalfTissueRegard * webView = [[YUMIChamberHalfTissueRegard alloc] init]; - webView.roomUid = [NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.uid]; - webView.url = info.skipUri; - [MKJPopup popupRegard:webView style:MKJPopupStyleActionSheet]; - return; - } - YUMITissueRegardGovernancer * webVewC = [[YUMITissueRegardGovernancer alloc] init]; - webVewC.roomUid = [NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.uid]; - webVewC.url = info.skipUri; - [self.hostRepresedtation.acquireUniversalNev pushViewController:webVewC animated:YES]; - } - } - } -} - -#pragma mark - Event Response -- (void)lookLoveBetowardsRecognition { - YUMIConfectioneryTimberRegardGovernancer * candyTreeVC = [[YUMIConfectioneryTimberRegardGovernancer alloc] initWithDelegate:self.hostRepresedtation]; - candyTreeVC.view.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); - - [[XCCurrentVCStackExecutive shareManager].getCurrentVC addChildViewController:candyTreeVC]; - [candyTreeVC.navigationController setNavigationBarHidden:YES animated:NO]; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.view addSubview:candyTreeVC.view]; -} - -- (void)thresholdReindictBetowardsRecognition { - [[NSNotificationCenter defaultCenter]postNotificationName:kShowFirstRechargeView object:nil]; -} - -- (void)didBetowardsJoinEngagementRecognition { - if (self.hostRepresedtation.acquireChamberAbstract.roomModeType == ChamberModeGenre_Open_PK_Mode && self.hostRepresedtation.isChamberCombatDisporting) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Room_Activity_Container_View_2")]; - return; - } - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = [NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.roomId]; - request.userIds = @[[AccountAbstractStorage instance].acquireCid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - NIMChatroomMember * member; - if (error == nil) { - member = members.firstObject; - } - ChamberAbstractMatrix * roomInfo = self.hostRepresedtation.acquireChamberAbstract; - YUMIScheduleLoudspeakerAbstractMatrix * info = [[YUMIScheduleLoudspeakerAbstractMatrix alloc] init]; - info.roomUid = [NSString stringWithFormat:@"%ld", roomInfo.uid]; - info.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - info.nick = roomInfo.nick; - info.roomAvatar = roomInfo.avatar; - info.roomTitle = roomInfo.title; - info.micQueue = [self.hostRepresedtation acquireMiecreoscoopeInthecaseofmtowardsion]; - info.isManager = (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager); - info.type = roomInfo.roomModeType == ChamberModeGenre_Open_Blind ? ArrangeLoudspeakerGenre_Dating : roomInfo.roomModeType == ChamberModeGenre_Open_PK_Mode ? ArrangeLoudspeakerGenre_Room_PK : ArrangeLoudspeakerGenre_Normal; - YUMIScheduleLoudspeakerRegardGovernancer * arrangeMicVC = [[YUMIScheduleLoudspeakerRegardGovernancer alloc] initAboutAbstract:info]; - [self.hostRepresedtation.acquireUniversalNev presentViewController:arrangeMicVC animated:YES completion:nil]; - }]; -} - -- (void)sailBetowardsRecognition { - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.uid]; - YUMIMarchingRegardGovernancer * sailingVC = [[YUMIMarchingRegardGovernancer alloc] initAboutChamberCid:roomUid]; - [self.hostRepresedtation.acquireUniversalNev presentViewController:sailingVC animated:YES completion:nil]; -} - -#pragma mark - Getters And Setters -- (SDCycleScrollView *)cycleTrundleRegard { - if (!_cycleTrundleRegard) { - _cycleTrundleRegard = [SDCycleScrollView cycleScrollViewWithFrame:CGRectZero delegate:self placeholderImage:nil]; - _cycleTrundleRegard.pageControlAliment = SDCycleScrollViewPageContolAlimentCenter; - _cycleTrundleRegard.currentPageDotColor = [UIColor whiteColor]; - _cycleTrundleRegard.pageDotColor = [UIColor colorWithWhite:1 alpha:0.2]; - - _cycleTrundleRegard.pageControlDotSize = CGSizeMake(5, 2); - _cycleTrundleRegard.pageControlStyle = SDCycleScrollViewPageContolStyleClassic; - _cycleTrundleRegard.currentPageDotImage = [UIImage imageNamed:@"yumi_scope_activity_banner_select"]; - _cycleTrundleRegard.pageDotImage = [UIImage imageNamed:@"yumi_scope_activity_banner_normal"]; - _cycleTrundleRegard.backgroundColor = [UIColor colorWithWhite:1 alpha:0.00]; - _cycleTrundleRegard.bannerImageViewContentMode = UIViewContentModeScaleAspectFit; - _cycleTrundleRegard.pageControlBottomOffset = -10; - _cycleTrundleRegard.hidden = YES; - - } - return _cycleTrundleRegard; -} - -- (UIView *)deparatmentMaintainrietaryRegard { - if (!_deparatmentMaintainrietaryRegard) { - _deparatmentMaintainrietaryRegard = [[UIView alloc] init]; - _deparatmentMaintainrietaryRegard.backgroundColor = [UIColor clearColor]; - [_deparatmentMaintainrietaryRegard setContentHuggingPriority:UILayoutPriorityDragThatCanResizeScene forAxis:UILayoutConstraintAxisHorizontal]; - [_deparatmentMaintainrietaryRegard setContentCompressionResistancePriority:UILayoutPriorityFittingSizeLevel forAxis:UILayoutConstraintAxisHorizontal]; - } - return _deparatmentMaintainrietaryRegard; -} - - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentCenter; - _stackView.spacing = 5; - } - return _stackView; -} - -- (UIImageView *)lookLoveIndicateRegard { - if (!_lookLoveIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIImage imageNamed:@"yumi_scope_candy_tree_enter"]; - config.imageType = ImageGenreUserIcon; - _lookLoveIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _lookLoveIndicateRegard.userInteractionEnabled = YES; - _lookLoveIndicateRegard.hidden = YES; - _lookLoveIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_candy_tree_enter"]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(lookLoveBetowardsRecognition)]; - [_lookLoveIndicateRegard addGestureRecognizer:tap]; - } - return _lookLoveIndicateRegard; -} - -- (UIImageView *)thresholdReindictIndicateRegard { - if (!_thresholdReindictIndicateRegard) { - _thresholdReindictIndicateRegard = [[UIImageView alloc] init]; - _thresholdReindictIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_first_recharge_enter"]; - _thresholdReindictIndicateRegard.userInteractionEnabled = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(thresholdReindictBetowardsRecognition)]; - [_thresholdReindictIndicateRegard addGestureRecognizer:tap]; - } - return _thresholdReindictIndicateRegard; -} - -- (UIImageView *)joinEngagementRegard { - if (!_joinEngagementRegard) { - _joinEngagementRegard = [[UIImageView alloc] init]; - _joinEngagementRegard.image = [UIImage imageNamed:@"yumi_scope_mode_dating_enter"]; - _joinEngagementRegard.userInteractionEnabled = YES; - _joinEngagementRegard.hidden = YES; - _joinEngagementRegard.contentMode = UIViewContentModeScaleAspectFit; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didBetowardsJoinEngagementRecognition)]; - [_joinEngagementRegard addGestureRecognizer:tap]; - } - return _joinEngagementRegard; -} - -- (NSMutableArray *)importpriseStatement { - if (!_importpriseStatement) { - _importpriseStatement = [NSMutableArray array]; - } - return _importpriseStatement; -} - -- (ImportpriseAbstractMatrix *)thresholdReindictMatrix{ - if (!_thresholdReindictMatrix){ - ImportpriseAbstractMatrix * activityInfo = [[ImportpriseAbstractMatrix alloc] init]; - activityInfo.bannerPic = @"room_first_recharge_enter"; - activityInfo.bannerName = YMLocalizedString(@"YUMI_Room_Activity_Container_View_0"); - _thresholdReindictMatrix = activityInfo; - _thresholdReindictMatrix.activityType = ActivityGenre_First; - } - return _thresholdReindictMatrix; -} -- (ImportpriseAbstractMatrix *)pi_fairyActivityModel{ - if(!_pi_fairyActivityModel){ - ImportpriseAbstractMatrix * activityInfo = [[ImportpriseAbstractMatrix alloc] init]; - activityInfo.bannerPic = @"room_treasure_fairy_enter"; - activityInfo.bannerName = YMLocalizedString(@"YUMIChamberImportpriseAccommodatedRegard0"); - _pi_fairyActivityModel = activityInfo; - _pi_fairyActivityModel.activityType = ActivityGenre_Fairy; - } - return _pi_fairyActivityModel; -} - --(ImportpriseAbstractMatrix *)lookLoveMatrix{ - if (!_lookLoveMatrix){ - ImportpriseAbstractMatrix * activityInfo = [[ImportpriseAbstractMatrix alloc] init]; - activityInfo.bannerName = YMLocalizedString(@"YUMI_Room_Activity_Container_View_1"); - _lookLoveMatrix = activityInfo; - _lookLoveMatrix.activityType = ActivityGenre_Love; - } - return _lookLoveMatrix; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/ActivityContainerView/YUMIChamberImportpriseDisportRegard.h b/YuMi/Modules/YMRoom/View/ActivityContainerView/YUMIChamberImportpriseDisportRegard.h deleted file mode 100644 index 2e6238af..00000000 --- a/YuMi/Modules/YMRoom/View/ActivityContainerView/YUMIChamberImportpriseDisportRegard.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// YMRoomActivityPlayView.h -// YUMI -// -// Created by YUMI on 2022/9/30. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class YUMIChamberImportpriseDisportMatrix; -@protocol FBCChamberActivityPlayRegardRepresendtation - -- (void)yUMIChamberImportpriseDisportRegardExhibitFurthaerDisport; -- (void)yUMIChamberImportpriseDisportRegardBrakeFurthaerDisport; -- (void)yUMIChamberImportpriseDisportRegardDidTicktackDisport:(YUMIChamberImportpriseDisportMatrix *)model; - -@end - -@interface YUMIChamberImportpriseDisportRegard : UIView - -@property (nonatomic, strong) NSMutableArray *disportGarment; - -@property (nonatomic, weak) id delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ActivityContainerView/YUMIChamberImportpriseDisportRegard.m b/YuMi/Modules/YMRoom/View/ActivityContainerView/YUMIChamberImportpriseDisportRegard.m deleted file mode 100644 index 127f993b..00000000 --- a/YuMi/Modules/YMRoom/View/ActivityContainerView/YUMIChamberImportpriseDisportRegard.m +++ /dev/null @@ -1,124 +0,0 @@ -// -// YMRoomActivityPlayView.m -// YUMI -// -// Created by YUMI on 2022/9/30. -// - -#import "YUMIChamberImportpriseDisportRegard.h" -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "YUMIChamberImportpriseDisportMatrix.h" -#import "NetIndicateRegard.h" - -@interface YUMIChamberImportpriseDisportRegard() - -@property (nonatomic, strong) UIButton *furthaerBtuton; - -@end - -@implementation YUMIChamberImportpriseDisportRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -- (void)layoutSubviews { - [super layoutSubviews]; - - UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.furthaerBtuton.bounds byRoundingCorners:UIRectCornerTopLeft | UIRectCornerBottomLeft cornerRadii:CGSizeMake(8, 8)]; - CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; - maskLayer.frame = self.furthaerBtuton.bounds; - maskLayer.path = maskPath.CGPath; - self.furthaerBtuton.layer.mask = maskLayer; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.furthaerBtuton]; -} - -- (void)initChildLyRestrictions { - [self.furthaerBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.top.bottom.mas_equalTo(self); - make.width.mas_equalTo(18); - }]; -} - - -- (void)furthaerBtutonPerformance:(UIButton *)sender { - if (self.frame.size.width > 18) { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberImportpriseDisportRegardBrakeFurthaerDisport)]) { - [self.delegate yUMIChamberImportpriseDisportRegardBrakeFurthaerDisport]; - } - } else { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberImportpriseDisportRegardExhibitFurthaerDisport)]) { - [self.delegate yUMIChamberImportpriseDisportRegardExhibitFurthaerDisport]; - } - } -} - -- (void)indictowardseBetowardsRecognition:(UITapGestureRecognizer *)ges { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberImportpriseDisportRegardDidTicktackDisport:)]) { - YUMIChamberImportpriseDisportMatrix *model = self.disportGarment[ges.view.tag]; - [self.delegate yUMIChamberImportpriseDisportRegardDidTicktackDisport:model]; - } -} - -- (void)setDisportGarment:(NSMutableArray *)disportGarment { - _disportGarment = disportGarment; - if (disportGarment.count) { - CGFloat itemWidth = 45; - for (int i = 0; i +#import "NetImageView.h" +#import "RoomHostDelegate.h" +@class AnchorRoomScrollView; + +@protocol AnchorRoomScrollViewDelegate +///滚动到上一个时回调 +- (void)anchorScrollViewScrollToPrevious:(AnchorRoomScrollView *)anchorScrollView; +///滚动到下一个时回调 +- (void)anchorScrollViewScrollToNext:(AnchorRoomScrollView *)anchorScrollView; +///开始停止 +- (void)anchorScrollVieStartScroll:(AnchorRoomScrollView *)anchorScrollView; +///滚动停止 +- (void)anchorScrollVieEndScroll:(AnchorRoomScrollView *)anchorScrollView; + +@end + +@interface AnchorRoomScrollView : UIScrollView +@property (nonatomic,weak) idhostDelegate; + +- (instancetype)initWithdelegate:(id)delegate; + +@property (nonatomic, assign) id anchorScrollDelegate; +@property (nonatomic, strong) UIView *middleImageView; +@property (nonatomic,assign) BOOL isCanScrollTop; + +- (instancetype)initWithFrame:(CGRect)frame; + + +@end + diff --git a/YuMi/Modules/YMRoom/View/AnchorCycleView/AnchorRoomScrollView.m b/YuMi/Modules/YMRoom/View/AnchorCycleView/AnchorRoomScrollView.m new file mode 100644 index 00000000..be70b08b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorCycleView/AnchorRoomScrollView.m @@ -0,0 +1,233 @@ +// +// AnchorRoomScrollView.m +// YUMI +// +// Created by YUMI on 2022/7/11. +// + +#import "AnchorRoomScrollView.h" +#import "YUMIMacroUitls.h" +#import "RoomInfoModel.h" +#import "MicroQueueModel.h" +#import "AccountInfoStorage.h" +#import "UserInfoModel.h" +//SVGA动画播放 + +#import "SVGAParserManager.h" +#import + +@interface AnchorRoomScrollView() + +///动态背景 +@property (nonatomic, strong) SVGAImageView *middleDisplayView; +@property (nonatomic, strong) SVGAParserManager *parserManager; + +@property (nonatomic, strong) SVGAImageView *topDisplayView; + +@property (nonatomic, strong) SVGAImageView *downDisplayView; + +@property (nonatomic, assign) BOOL animatePlay; + +@end + +@implementation AnchorRoomScrollView + + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if(self) + { + self.backgroundColor = [UIColor clearColor]; + self.pagingEnabled = YES; + self.showsHorizontalScrollIndicator = NO; + self.showsVerticalScrollIndicator = NO; + self.delegate = self; + self.alwaysBounceVertical = NO; + self.bounces = NO; + self.delaysContentTouches = NO; + self.scrollsToTop = NO; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(roomMessageTabelViewStopScroll) name:@"roomMessageTabelViewStopScroll" object:nil]; + self.isCanScrollTop = NO; + [self addSubview:self.topDisplayView]; + [self addSubview:self.middleDisplayView]; + [self addSubview:self.downDisplayView]; + + } + return self; +} + +- (void)startAnimate:(SVGAImageView *)displayView { + self.animatePlay = YES; + NSString * bgString = [NSString stringWithFormat:@"%@/anchor_room_bg.svga", API_Image_URL]; + NSURL *bgUrl = [NSURL fileURLWithPath:bgString]; + [self.parserManager loadSvgaWithURL:bgUrl completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { + if (videoItem != nil) { + CGFloat width = videoItem.videoSize.width; + CGFloat height = videoItem.videoSize.height; + if (width > height) { + displayView.contentMode = UIViewContentModeScaleAspectFit; + } else {//高大于宽 + CGFloat resizeH = KScreenWidth * height / width;//按照屏幕的宽度去缩放,获得高度 + if (resizeH > KScreenHeight) {//如果大于屏幕高度,填充 + displayView.contentMode = UIViewContentModeScaleAspectFill; + } else {//小于屏幕高度, + displayView.contentMode = UIViewContentModeScaleAspectFit; + } + } + displayView.loops = INT_MAX; + displayView.clearsAfterStop = NO; + displayView.videoItem = videoItem; + [displayView startAnimation]; + } + } failureBlock:^(NSError * _Nullable error) { + }]; +} + +- (void)stopAnimate { + [self.middleDisplayView stopAnimation]; + [self.topDisplayView stopAnimation]; + [self.downDisplayView stopAnimation]; + self.animatePlay = NO; +} + +- (void)roomMessageTabelViewStopScroll { + BOOL isOnMic = false; + + for (MicroQueueModel * info in self.hostDelegate.getMicroQueue.allValues) { + if (info.userInfo.uid > 0 && [AccountInfoStorage instance].getUid.integerValue == info.userInfo.uid) { + isOnMic = YES; + break; + } + } + if (isOnMic) { + self.scrollEnabled = NO; + } else { + self.scrollEnabled = YES; + } +} + +- (void)switchPlayer:(UIScrollView*)scrollView { + CGFloat offset = scrollView.contentOffset.y; + if (offset >= self.frame.size.height * 2) + { + if (self.anchorScrollDelegate && [self.anchorScrollDelegate respondsToSelector:@selector(anchorScrollViewScrollToNext:)]) { + [self.anchorScrollDelegate anchorScrollViewScrollToNext:self]; + } + [self stopAnimate]; + } else if (offset <= 0) { + if (self.anchorScrollDelegate && [self.anchorScrollDelegate respondsToSelector:@selector(anchorScrollViewScrollToPrevious:)]) { + [self.anchorScrollDelegate anchorScrollViewScrollToPrevious:self]; + } + [self stopAnimate]; + } +} + +-(void)scrollViewDidScroll:(UIScrollView *)scrollView { + if (scrollView.contentOffset.y > KScreenHeight) {///乡上滚动 + if (!self.animatePlay) { + [self startAnimate:self.downDisplayView]; + } + } else {///向下滚动 + if (self.isCanScrollTop) { + if (!self.animatePlay) { + [self startAnimate:self.topDisplayView]; + } + } else { + ///刚进来的时候 还不能向上滚动的时候 + if (!self.animatePlay) { + [self startAnimate:self.downDisplayView]; + } + } + } +} + +- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { + if (self.isCanScrollTop) { + if (scrollView.contentOffset.y >= KScreenHeight * 2) { + if (self.anchorScrollDelegate && [self.anchorScrollDelegate respondsToSelector:@selector(anchorScrollViewScrollToNext:)]) { + [self.anchorScrollDelegate anchorScrollViewScrollToNext:self]; + } + } else if(scrollView.contentOffset.y <= 0) { + if (self.anchorScrollDelegate && [self.anchorScrollDelegate respondsToSelector:@selector(anchorScrollViewScrollToPrevious:)]) { + [self.anchorScrollDelegate anchorScrollViewScrollToPrevious:self]; + } + } + } else { + if (scrollView.contentOffset.y >= KScreenHeight) { + if (self.anchorScrollDelegate && [self.anchorScrollDelegate respondsToSelector:@selector(anchorScrollViewScrollToNext:)]) { + [self.anchorScrollDelegate anchorScrollViewScrollToNext:self]; + } + } + } + [self stopAnimate]; +} + + +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { + ///666是外部的公屏消息列表 8888房间半屏弹框顶部消失的view + if (otherGestureRecognizer.view.tag == 666 || otherGestureRecognizer.view.tag == 8888 || otherGestureRecognizer.view.tag == 888) { + self.scrollEnabled = NO; + return NO; + } + self.scrollEnabled = YES; + return YES; +} + +- (void)setIsCanScrollTop:(BOOL)isCanScrollTop { + _isCanScrollTop = isCanScrollTop; + CGRect frame = self.frame; + if (_isCanScrollTop) { + self.contentSize = CGSizeMake(0, frame.size.height * 3); + self.topDisplayView.frame = CGRectMake(0, 0, frame.size.width, frame.size.height); + self.middleDisplayView.frame = CGRectMake(0, frame.size.height, frame.size.width, frame.size.height); + self.downDisplayView.frame = CGRectMake(0, frame.size.height * 2, frame.size.width, frame.size.height); + self.middleImageView = self.middleDisplayView; + } else { + self.contentSize = CGSizeMake(0, frame.size.height * 2); + self.topDisplayView.frame = CGRectMake(0, 0, frame.size.width, frame.size.height); + self.middleDisplayView.frame = CGRectMake(0, 0, frame.size.width, frame.size.height); + self.downDisplayView.frame = CGRectMake(0, frame.size.height, frame.size.width, frame.size.height); + self.middleImageView = self.middleDisplayView; + } +} + +- (SVGAImageView *)middleDisplayView { + if (_middleDisplayView == nil) { + _middleDisplayView = [[SVGAImageView alloc] init]; + _middleDisplayView.contentMode = UIViewContentModeScaleToFill; + _middleDisplayView.userInteractionEnabled = NO; + _middleDisplayView.backgroundColor = [UIColor clearColor]; + } + return _middleDisplayView; +} + +- (SVGAImageView *)topDisplayView { + if (_topDisplayView == nil) { + _topDisplayView = [[SVGAImageView alloc] init]; + _topDisplayView.contentMode = UIViewContentModeScaleToFill; + _topDisplayView.userInteractionEnabled = NO; + _topDisplayView.backgroundColor = [UIColor clearColor]; + } + return _topDisplayView; +} + + +- (SVGAImageView *)downDisplayView { + if (_downDisplayView == nil) { + _downDisplayView = [[SVGAImageView alloc] init]; + _downDisplayView.contentMode = UIViewContentModeScaleToFill; + _downDisplayView.userInteractionEnabled = NO; + _downDisplayView.backgroundColor = [UIColor clearColor]; + } + return _downDisplayView; +} + +- (SVGAParserManager *)parserManager { + if (!_parserManager) { + _parserManager = [[SVGAParserManager alloc] init]; + } + return _parserManager; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnchorCycleView/AnchorRoomSrollTipView.h b/YuMi/Modules/YMRoom/View/AnchorCycleView/AnchorRoomSrollTipView.h new file mode 100644 index 00000000..91dfcba2 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorCycleView/AnchorRoomSrollTipView.h @@ -0,0 +1,16 @@ +// +// AnchorRoomSrollTipView.h +// YUMI +// +// Created by YUMI on 2022/7/14. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface AnchorRoomSrollTipView : UIView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorCycleView/AnchorRoomSrollTipView.m b/YuMi/Modules/YMRoom/View/AnchorCycleView/AnchorRoomSrollTipView.m new file mode 100644 index 00000000..11ed96be --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorCycleView/AnchorRoomSrollTipView.m @@ -0,0 +1,98 @@ +// +// AnchorRoomSrollTipView.m +// YUMI +// +// Created by YUMI on 2022/7/14. +// + +#import "AnchorRoomSrollTipView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" + +@interface AnchorRoomSrollTipView() + +@property (nonatomic, strong) UIView *bgView; + +@property (nonatomic, strong) UIImageView *tipImageView; + +@property (nonatomic, strong) UILabel *titleLabel; + +@end + +@implementation AnchorRoomSrollTipView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Response +- (void)onTapSkillTip:(UITapGestureRecognizer *)ges { + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + [defaults setObject:@"isShow" forKey:@"kHadShowAnchorRoomTipKey"]; + [defaults synchronize]; + [self removeFromSuperview]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.bgView]; + [self addSubview:self.tipImageView]; + [self addSubview:self.titleLabel]; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTapSkillTip:)]; + [self addGestureRecognizer:tap]; +} + +- (void)initSubViewConstraints { + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; + + [self.tipImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.centerY.mas_equalTo(self).mas_offset(-40); + make.size.mas_equalTo(CGSizeMake(87, 92)); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self.tipImageView.mas_bottom).mas_offset(46); + make.left.right.mas_equalTo(0); + }]; +} + +- (UIView *)bgView { + if (!_bgView) { + _bgView = [[UIView alloc] init]; + _bgView.backgroundColor = UIColorRGBAlpha(0x000000, 0.6); + } + return _bgView; +} + +- (UIImageView *)tipImageView { + if (!_tipImageView) { + _tipImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"anchor_scroll_tip"]]; + _tipImageView.contentMode = UIViewContentModeScaleAspectFit; + _tipImageView.userInteractionEnabled = YES; + } + return _tipImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"AnchorRoomSrollTipView0"); + _titleLabel.font = [UIFont systemFontOfSize:20]; + _titleLabel.textColor = [UIColor whiteColor]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnchorCycleView/KellegChamberScrollRegard.h b/YuMi/Modules/YMRoom/View/AnchorCycleView/KellegChamberScrollRegard.h deleted file mode 100644 index fb616c96..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorCycleView/KellegChamberScrollRegard.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// KellegChamberScrollRegard.h -// YUMI -// -// Created by YUMI on 2022/7/11. -// - -#import -#import "NetIndicateRegard.h" -#import "ChamberHostRepresendtation.h" -@class KellegChamberScrollRegard; - -@protocol KellegChamberScrollRegardRepresendtation -- (void)kellegTrundleRegardTrundleToPrevious:(KellegChamberScrollRegard *)kellegTrundleRegard; -- (void)kellegTrundleRegardTrundleToLtowardster:(KellegChamberScrollRegard *)kellegTrundleRegard; -- (void)kellegTrundleVieInititowardseTrundle:(KellegChamberScrollRegard *)kellegTrundleRegard; -- (void)kellegTrundleVieConcludeTrundle:(KellegChamberScrollRegard *)kellegTrundleRegard; - -@end - -@interface KellegChamberScrollRegard : UIScrollView -@property (nonatomic,weak) idhostRepresedtation; - -- (instancetype)initAboutdelegtowardse:(id)delegate; - -@property (nonatomic, assign) id kellegTrundleRepresedtation; -@property (nonatomic, strong) UIView *middleIndicateRegard; -@property (nonatomic,assign) BOOL isCanTrundleApex; - -- (instancetype)initWithFrame:(CGRect)frame; - - -@end - diff --git a/YuMi/Modules/YMRoom/View/AnchorCycleView/KellegChamberScrollRegard.m b/YuMi/Modules/YMRoom/View/AnchorCycleView/KellegChamberScrollRegard.m deleted file mode 100644 index 2175b238..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorCycleView/KellegChamberScrollRegard.m +++ /dev/null @@ -1,231 +0,0 @@ -// -// KellegChamberScrollRegard.m -// YUMI -// -// Created by YUMI on 2022/7/11. -// - -#import "KellegChamberScrollRegard.h" -#import "YUMIMacroUitls.h" -#import "ChamberAbstractMatrix.h" -#import "MiecreoscoopeMHTueueMatrix.h" -#import "AccountAbstractStorage.h" -#import "ConsumerAbstractMatrix.h" - -#import "SVGAAnatomiserExecutive.h" -#import - -@interface KellegChamberScrollRegard() - -@property (nonatomic, strong) SVGAImageView *middleExhibitionRegard; -@property (nonatomic, strong) SVGAAnatomiserExecutive *anatomiserExecutive; - -@property (nonatomic, strong) SVGAImageView *apexExhibitionRegard; - -@property (nonatomic, strong) SVGAImageView *pubescenceExhibitionRegard; - -@property (nonatomic, assign) BOOL animateDisport; - -@end - -@implementation KellegChamberScrollRegard - - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if(self) - { - self.backgroundColor = [UIColor clearColor]; - self.pagingEnabled = YES; - self.showsHorizontalScrollIndicator = NO; - self.showsVerticalScrollIndicator = NO; - self.delegate = self; - self.alwaysBounceVertical = NO; - self.bounces = NO; - self.delaysContentTouches = NO; - self.scrollsToTop = NO; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(chamberCommunictowardsionTarbselRegardSapexTrundle) name:@"roomMessageTabelViewStopScroll" object:nil]; - self.isCanTrundleApex = NO; - [self addSubview:self.apexExhibitionRegard]; - [self addSubview:self.middleExhibitionRegard]; - [self addSubview:self.pubescenceExhibitionRegard]; - - } - return self; -} - -- (void)inititowardseAnimtowardse:(SVGAImageView *)displayView { - self.animateDisport = YES; - NSString * bgString = [NSString stringWithFormat:@"%@/anchor_room_bg.svga", API_Image_URL]; - NSURL *bgUrl = [NSURL fileURLWithPath:bgString]; - [self.anatomiserExecutive chamberSvgaAboutWEEBSITE:bgUrl completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { - if (videoItem != nil) { - CGFloat width = videoItem.videoSize.width; - CGFloat height = videoItem.videoSize.height; - if (width > height) { - displayView.contentMode = UIViewContentModeScaleAspectFit; - } else { - CGFloat resizeH = KScreenWidth * height / width; - if (resizeH > KScreenHeight) { - displayView.contentMode = UIViewContentModeScaleAspectFill; - } else { - displayView.contentMode = UIViewContentModeScaleAspectFit; - } - } - displayView.loops = INT_MAX; - displayView.clearsAfterStop = NO; - displayView.videoItem = videoItem; - [displayView startAnimation]; - } - } failureBlock:^(NSError * _Nullable error) { - }]; -} - -- (void)suspeindAnimtowardse { - [self.middleExhibitionRegard stopAnimation]; - [self.apexExhibitionRegard stopAnimation]; - [self.pubescenceExhibitionRegard stopAnimation]; - self.animateDisport = NO; -} - -- (void)chamberCommunictowardsionTarbselRegardSapexTrundle { - BOOL isOnMic = false; - - for (MiecreoscoopeMHTueueMatrix * info in self.hostRepresedtation.acquireMiecreoscoopeInthecaseofmtowardsion.allValues) { - if (info.userInfo.uid > 0 && [AccountAbstractStorage instance].acquireCid.integerValue == info.userInfo.uid) { - isOnMic = YES; - break; - } - } - if (isOnMic) { - self.scrollEnabled = NO; - } else { - self.scrollEnabled = YES; - } -} - -- (void)swopDisporter:(UIScrollView*)scrollView { - CGFloat offset = scrollView.contentOffset.y; - if (offset >= self.frame.size.height * 2) - { - if (self.kellegTrundleRepresedtation && [self.kellegTrundleRepresedtation respondsToSelector:@selector(kellegTrundleRegardTrundleToLtowardster:)]) { - [self.kellegTrundleRepresedtation kellegTrundleRegardTrundleToLtowardster:self]; - } - [self suspeindAnimtowardse]; - } else if (offset <= 0) { - if (self.kellegTrundleRepresedtation && [self.kellegTrundleRepresedtation respondsToSelector:@selector(kellegTrundleRegardTrundleToPrevious:)]) { - [self.kellegTrundleRepresedtation kellegTrundleRegardTrundleToPrevious:self]; - } - [self suspeindAnimtowardse]; - } -} - --(void)scrollViewDidScroll:(UIScrollView *)scrollView { - if (scrollView.contentOffset.y > KScreenHeight) { - if (!self.animateDisport) { - [self inititowardseAnimtowardse:self.pubescenceExhibitionRegard]; - } - } else { - if (self.isCanTrundleApex) { - if (!self.animateDisport) { - [self inititowardseAnimtowardse:self.apexExhibitionRegard]; - } - } else { - - if (!self.animateDisport) { - [self inititowardseAnimtowardse:self.pubescenceExhibitionRegard]; - } - } - } -} - -- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { - if (self.isCanTrundleApex) { - if (scrollView.contentOffset.y >= KScreenHeight * 2) { - if (self.kellegTrundleRepresedtation && [self.kellegTrundleRepresedtation respondsToSelector:@selector(kellegTrundleRegardTrundleToLtowardster:)]) { - [self.kellegTrundleRepresedtation kellegTrundleRegardTrundleToLtowardster:self]; - } - } else if(scrollView.contentOffset.y <= 0) { - if (self.kellegTrundleRepresedtation && [self.kellegTrundleRepresedtation respondsToSelector:@selector(kellegTrundleRegardTrundleToPrevious:)]) { - [self.kellegTrundleRepresedtation kellegTrundleRegardTrundleToPrevious:self]; - } - } - } else { - if (scrollView.contentOffset.y >= KScreenHeight) { - if (self.kellegTrundleRepresedtation && [self.kellegTrundleRepresedtation respondsToSelector:@selector(kellegTrundleRegardTrundleToLtowardster:)]) { - [self.kellegTrundleRepresedtation kellegTrundleRegardTrundleToLtowardster:self]; - } - } - } - [self suspeindAnimtowardse]; -} - - -- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { - - if (otherGestureRecognizer.view.tag == 666 || otherGestureRecognizer.view.tag == 8888 || otherGestureRecognizer.view.tag == 888) { - self.scrollEnabled = NO; - return NO; - } - self.scrollEnabled = YES; - return YES; -} - -- (void)setIsCanTrundleApex:(BOOL)isCanTrundleApex { - _isCanTrundleApex = isCanTrundleApex; - CGRect frame = self.frame; - if (_isCanTrundleApex) { - self.contentSize = CGSizeMake(0, frame.size.height * 3); - self.apexExhibitionRegard.frame = CGRectMake(0, 0, frame.size.width, frame.size.height); - self.middleExhibitionRegard.frame = CGRectMake(0, frame.size.height, frame.size.width, frame.size.height); - self.pubescenceExhibitionRegard.frame = CGRectMake(0, frame.size.height * 2, frame.size.width, frame.size.height); - self.middleIndicateRegard = self.middleExhibitionRegard; - } else { - self.contentSize = CGSizeMake(0, frame.size.height * 2); - self.apexExhibitionRegard.frame = CGRectMake(0, 0, frame.size.width, frame.size.height); - self.middleExhibitionRegard.frame = CGRectMake(0, 0, frame.size.width, frame.size.height); - self.pubescenceExhibitionRegard.frame = CGRectMake(0, frame.size.height, frame.size.width, frame.size.height); - self.middleIndicateRegard = self.middleExhibitionRegard; - } -} - -- (SVGAImageView *)middleExhibitionRegard { - if (_middleExhibitionRegard == nil) { - _middleExhibitionRegard = [[SVGAImageView alloc] init]; - _middleExhibitionRegard.contentMode = UIViewContentModeScaleToFill; - _middleExhibitionRegard.userInteractionEnabled = NO; - _middleExhibitionRegard.backgroundColor = [UIColor clearColor]; - } - return _middleExhibitionRegard; -} - -- (SVGAImageView *)apexExhibitionRegard { - if (_apexExhibitionRegard == nil) { - _apexExhibitionRegard = [[SVGAImageView alloc] init]; - _apexExhibitionRegard.contentMode = UIViewContentModeScaleToFill; - _apexExhibitionRegard.userInteractionEnabled = NO; - _apexExhibitionRegard.backgroundColor = [UIColor clearColor]; - } - return _apexExhibitionRegard; -} - - -- (SVGAImageView *)pubescenceExhibitionRegard { - if (_pubescenceExhibitionRegard == nil) { - _pubescenceExhibitionRegard = [[SVGAImageView alloc] init]; - _pubescenceExhibitionRegard.contentMode = UIViewContentModeScaleToFill; - _pubescenceExhibitionRegard.userInteractionEnabled = NO; - _pubescenceExhibitionRegard.backgroundColor = [UIColor clearColor]; - } - return _pubescenceExhibitionRegard; -} - -- (SVGAAnatomiserExecutive *)anatomiserExecutive { - if (!_anatomiserExecutive) { - _anatomiserExecutive = [[SVGAAnatomiserExecutive alloc] init]; - } - return _anatomiserExecutive; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnchorCycleView/KellegChamberSrollTipRegard.h b/YuMi/Modules/YMRoom/View/AnchorCycleView/KellegChamberSrollTipRegard.h deleted file mode 100644 index 67bf90e0..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorCycleView/KellegChamberSrollTipRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// KellegChamberSrollTipRegard.h -// YUMI -// -// Created by YUMI on 2022/7/14. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface KellegChamberSrollTipRegard : UIView - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorCycleView/KellegChamberSrollTipRegard.m b/YuMi/Modules/YMRoom/View/AnchorCycleView/KellegChamberSrollTipRegard.m deleted file mode 100644 index 61ff6d07..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorCycleView/KellegChamberSrollTipRegard.m +++ /dev/null @@ -1,96 +0,0 @@ -// -// KellegChamberSrollTipRegard.m -// YUMI -// -// Created by YUMI on 2022/7/14. -// - -#import "KellegChamberSrollTipRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" - -@interface KellegChamberSrollTipRegard() - -@property (nonatomic, strong) UIView *backgroundRegard; - -@property (nonatomic, strong) UIImageView *promptIndicateRegard; - -@property (nonatomic, strong) UILabel *titleLabel; - -@end - -@implementation KellegChamberSrollTipRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Response -- (void)dwellBetowardsCommunictowardsionPrompt:(UITapGestureRecognizer *)ges { - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - [defaults setObject:@"isShow" forKey:@"kHadShowAnchorRoomTipKey"]; - [defaults synchronize]; - [self removeFromSuperview]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backgroundRegard]; - [self addSubview:self.promptIndicateRegard]; - [self addSubview:self.titleLabel]; - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dwellBetowardsCommunictowardsionPrompt:)]; - [self addGestureRecognizer:tap]; -} - -- (void)initChildLyRestrictions { - [self.backgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(0); - }]; - - [self.promptIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.centerY.mas_equalTo(self).mas_offset(-40); - make.size.mas_equalTo(CGSizeMake(87, 92)); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self.promptIndicateRegard.mas_bottom).mas_offset(46); - make.left.right.mas_equalTo(0); - }]; -} - -- (UIView *)backgroundRegard { - if (!_backgroundRegard) { - _backgroundRegard = [[UIView alloc] init]; - _backgroundRegard.backgroundColor = UIColorRGBAlpha(0x000000, 0.6); - } - return _backgroundRegard; -} - -- (UIImageView *)promptIndicateRegard { - if (!_promptIndicateRegard) { - _promptIndicateRegard = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yumi_anchor_scroll_tip"]]; - _promptIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - _promptIndicateRegard.userInteractionEnabled = YES; - } - return _promptIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"Anchor_Room_Sroll_Tip_View_0"); - _titleLabel.font = [UIFont systemFontOfSize:20]; - _titleLabel.textColor = [UIColor whiteColor]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/Api/Api+AnchorPk.h b/YuMi/Modules/YMRoom/View/AnchorPK/Api/Api+AnchorPk.h index 0e2c605e..eeb157ee 100644 --- a/YuMi/Modules/YMRoom/View/AnchorPK/Api/Api+AnchorPk.h +++ b/YuMi/Modules/YMRoom/View/AnchorPK/Api/Api+AnchorPk.h @@ -11,20 +11,41 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (AnchorPk) -+ (void)huntforKellegCombatChamberSttowardsement:(HttpRequestHelperCompletion)completion +/// 搜索PK的房间列表 +/// @param completion 完成 +/// @param erbanNo 要搜索的房主的id +/// @param roomUid 房主的uid +/// @param pageNum 当前的页数 +/// @param pageSize 一页多少个 +/// @param pkType pk类型 个播:2 ++ (void)searchAnchorPKRoomList:(HttpRequestHelperCompletion)completion erbanNo:(NSString *)erbanNo roomUid:(NSString *)roomUid pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize pkType:(NSString *)pkType; -+ (void)acquireKellegCombatChamberSttowardsement:(HttpRequestHelperCompletion)completion +/// 获取可以PK的房间列表 +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param pageNum 当前的页数 +/// @param pageSize 一页多少个 +/// @param pkType pk类型 个播:2 ++ (void)getAnchorPKRoomList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize pkType:(NSString *)pkType; -+ (void)instituteKellegCombat:(HttpRequestHelperCompletion)completion +/// 开启一轮PK +/// @param completion 完成 +/// @param acceptUid pk对方的uid +/// @param duration 持续的时间 分钟 +/// @param inviteUid 邀请房间的房主的id +/// @param operateUid 操作者的uid +/// @param playDesc 描述 +/// @param pkType pk类型 个播:2 ++ (void)beginAnchorPK:(HttpRequestHelperCompletion)completion acceptUid:(NSString *)acceptUid duration:(NSString *)duration inviteUid:(NSString *)inviteUid @@ -32,11 +53,22 @@ NS_ASSUME_NONNULL_BEGIN playDesc:(NSString *)playDesc pkType:(NSString *)pkType; -+ (void)adapttowardsionArbitraryCombat:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; +/// 开始匹配个播随机PK +/// @param completion 完成 +/// @param roomUid 房间UID ++ (void)matchRandomPK:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; -+ (void)revoctowardsionDirectoryapttowardsionArbitraryCombat:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; +/// 取消匹配个播随机PK +/// @param completion 完成 +/// @param roomUid 房间UID ++ (void)cancelMatchRandomPK:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; -+ (void)kellegCombatBretowardshaedOtherLoudspeaker:(HttpRequestHelperCompletion)completion micStatus:(NSString *)micStatus roundId:(NSString *)roundId roomUid:(NSString *)roomUid; +/// 个播PK屏蔽对方麦位 +/// @param completion 完成 +/// @param micStatus 对方麦位状态 0:屏蔽 1:开启 +/// @param roundId 场次ID +/// @param roomUid 当前房间UID ++ (void)anchorPKMuteOtherMic:(HttpRequestHelperCompletion)completion micStatus:(NSString *)micStatus roundId:(NSString *)roundId roomUid:(NSString *)roomUid; @end diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/Api/Api+AnchorPk.m b/YuMi/Modules/YMRoom/View/AnchorPK/Api/Api+AnchorPk.m index a9250631..08aa47b1 100644 --- a/YuMi/Modules/YMRoom/View/AnchorPK/Api/Api+AnchorPk.m +++ b/YuMi/Modules/YMRoom/View/AnchorPK/Api/Api+AnchorPk.m @@ -9,34 +9,66 @@ #import @implementation Api (AnchorPk) -+ (void)huntforKellegCombatChamberSttowardsement:(HttpRequestHelperCompletion)completion erbanNo:(NSString *)erbanNo roomUid:(NSString *)roomUid pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize pkType:(NSString *)pkType { - NSString * fang = [NSString stringFromBase64String:@"c2VhcmNoL3NpbmdsZVJvb20="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, erbanNo, roomUid, pageNum, pageSize, pkType, nil]; +/// 搜索PK的房间列表 +/// @param completion 完成 +/// @param erbanNo 要搜索的房主的id +/// @param roomUid 房主的uid +/// @param pageNum 当前的页数 +/// @param pageSize 一页多少个 +/// @param pkType pk类型 ++ (void)searchAnchorPKRoomList:(HttpRequestHelperCompletion)completion erbanNo:(NSString *)erbanNo roomUid:(NSString *)roomUid pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize pkType:(NSString *)pkType { + NSString * fang = [NSString stringFromBase64String:@"c2VhcmNoL3NpbmdsZVJvb20="];///search/singleRoom + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, erbanNo, roomUid, pageNum, pageSize, pkType, nil]; } -+ (void)acquireKellegCombatChamberSttowardsement:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize pkType:(NSString *)pkType { - NSString * fang = [NSString stringFromBase64String:@"c2VhcmNoL3NpbmdsZVJvb20="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, roomUid, pageNum, pageSize, pkType, nil]; +/// 获取可以PK的房间列表 +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param pageNum 当前的页数 +/// @param pageSize 一页多少个 +/// @param pkType pk类型 ++ (void)getAnchorPKRoomList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize pkType:(NSString *)pkType { + NSString * fang = [NSString stringFromBase64String:@"c2VhcmNoL3NpbmdsZVJvb20="];///search/singleRoom + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, roomUid, pageNum, pageSize, pkType, nil]; } -+ (void)instituteKellegCombat:(HttpRequestHelperCompletion)completion acceptUid:(NSString *)acceptUid duration:(NSString *)duration inviteUid:(NSString *)inviteUid operateUid:(NSString *)operateUid playDesc:(NSString *)playDesc pkType:(NSString *)pkType{ - NSString * fang = [NSString stringFromBase64String:@"Y3Jvc3Nyb29tcGtyb3VuZC9pbml0aWF0ZUNoYWxsZW5nZQ=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, acceptUid, duration, inviteUid, operateUid, playDesc, pkType, nil]; +/// 开启一轮PK +/// @param completion 完成 +/// @param acceptUid pk对方的uid +/// @param duration 持续的时间 分钟 +/// @param inviteUid 邀请房间的房主的id +/// @param operateUid 操作者的uid +/// @param playDesc 描述 +/// @param pkType pk类型 ++ (void)beginAnchorPK:(HttpRequestHelperCompletion)completion acceptUid:(NSString *)acceptUid duration:(NSString *)duration inviteUid:(NSString *)inviteUid operateUid:(NSString *)operateUid playDesc:(NSString *)playDesc pkType:(NSString *)pkType{ + NSString * fang = [NSString stringFromBase64String:@"Y3Jvc3Nyb29tcGtyb3VuZC9pbml0aWF0ZUNoYWxsZW5nZQ=="];///crossroompkround/initiateChallenge + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, acceptUid, duration, inviteUid, operateUid, playDesc, pkType, nil]; } -+ (void)adapttowardsionArbitraryCombat:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { - NSString * fang = [NSString stringFromBase64String:@"Y3Jvc3Nyb29tcGtyb3VuZC9tYXRjaC9pbml0"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, nil]; +/// 开始匹配个播随机PK +/// @param completion 完成 +/// @param roomUid 房间UID ++ (void)matchRandomPK:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@"Y3Jvc3Nyb29tcGtyb3VuZC9tYXRjaC9pbml0"];///crossroompkround/match/init + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, nil]; } -+ (void)revoctowardsionDirectoryapttowardsionArbitraryCombat:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { - NSString * fang = [NSString stringFromBase64String:@"Y3Jvc3Nyb29tcGtyb3VuZC9tYXRjaC9jYW5jZWw="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, nil]; +/// 取消匹配个播随机PK +/// @param completion 完成 +/// @param roomUid 房间UID ++ (void)cancelMatchRandomPK:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@"Y3Jvc3Nyb29tcGtyb3VuZC9tYXRjaC9jYW5jZWw="];///crossroompkround/match/cancel + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, nil]; } -+ (void)kellegCombatBretowardshaedOtherLoudspeaker:(HttpRequestHelperCompletion)completion micStatus:(NSString *)micStatus roundId:(NSString *)roundId roomUid:(NSString *)roomUid { - NSString * fang = [NSString stringFromBase64String:@"Y3Jvc3Nyb29tcGtyb3VuZC9vdGhlck1pYw=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, micStatus, roundId, roomUid, nil]; +/// 个播PK屏蔽对方麦位 +/// @param completion 完成 +/// @param micStatus 对方麦位状态 0:屏蔽 1:开启 +/// @param roundId 场次ID +/// @param roomUid 当前房间UID ++ (void)anchorPKMuteOtherMic:(HttpRequestHelperCompletion)completion micStatus:(NSString *)micStatus roundId:(NSString *)roundId roomUid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@"Y3Jvc3Nyb29tcGtyb3VuZC9vdGhlck1pYw=="];///crossroompkround/otherMic + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, micStatus, roundId, roomUid, nil]; } @end diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/Presenter/XCombatellegCombatExternalizer.h b/YuMi/Modules/YMRoom/View/AnchorPK/Presenter/XCombatellegCombatExternalizer.h deleted file mode 100644 index 87e0f60e..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorPK/Presenter/XCombatellegCombatExternalizer.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YMAnchorPKPresenter.h -// YUMI -// -// Created by YUMI on 2022/4/8. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface XCombatellegCombatExternalizer : BaseMvpExternalizer - -- (void)instituteKellegCombat:(NSString *)roomUid duration:(NSInteger)duration acceptUid:(NSString *)acceptUid playDesc:(NSString *)playDesc pkType:(NSString *)pkType; - -- (void)adapttowardsionArbitraryCombat:(NSString *)roomUid; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/Presenter/XCombatellegCombatExternalizer.m b/YuMi/Modules/YMRoom/View/AnchorPK/Presenter/XCombatellegCombatExternalizer.m deleted file mode 100644 index 3ccd026f..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorPK/Presenter/XCombatellegCombatExternalizer.m +++ /dev/null @@ -1,32 +0,0 @@ -// -// YMAnchorPKPresenter.m -// YUMI -// -// Created by YUMI on 2022/4/8. -// - -#import "XCombatellegCombatExternalizer.h" -#import "Api+AnchorPk.h" -#import "AccountAbstractStorage.h" -#import "XCombatellegCombatCeremony.h" - -@implementation XCombatellegCombatExternalizer - -- (void)instituteKellegCombat:(NSString *)roomUid duration:(NSInteger)duration acceptUid:(NSString *)acceptUid playDesc:(NSString *)playDesc pkType:(NSString *)pkType { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * time = [NSString stringWithFormat:@"%ld", duration]; - [Api instituteKellegCombat:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] instituteKellegCombatAccomplishment]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] instituteKellegCombatFlunk:msg]; - } EvidenceChambering:YES errorToast:NO] acceptUid:acceptUid duration:time inviteUid:roomUid operateUid:uid playDesc:playDesc pkType:pkType]; -} - -- (void)adapttowardsionArbitraryCombat:(NSString *)roomUid { - [Api adapttowardsionArbitraryCombat:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - long long number = [data.data longLongValue]; - [[self acquireRegard] adapttowardsionArbitraryCombatAccomplishment:number]; - }] roomUid:roomUid]; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/Presenter/XPAnchorPKPresenter.h b/YuMi/Modules/YMRoom/View/AnchorPK/Presenter/XPAnchorPKPresenter.h new file mode 100644 index 00000000..70e79c6d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorPK/Presenter/XPAnchorPKPresenter.h @@ -0,0 +1,28 @@ +// +// YMAnchorPKPresenter.h +// YUMI +// +// Created by YUMI on 2022/4/8. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPAnchorPKPresenter : BaseMvpPresenter + +/// 开启主播PK +/// @param roomUid 当前房间的房主uid +/// @param duration 持续的时间 +/// @param acceptUid 接收者的uid +/// @param playDesc 玩法 +/// @param pkType pk类型 个播:2 +- (void)beginAnchorPK:(NSString *)roomUid duration:(NSInteger)duration acceptUid:(NSString *)acceptUid playDesc:(NSString *)playDesc pkType:(NSString *)pkType; + +/// 匹配随机PK +/// @param roomUid 房间UID +- (void)matchRandomPK:(NSString *)roomUid; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/Presenter/XPAnchorPKPresenter.m b/YuMi/Modules/YMRoom/View/AnchorPK/Presenter/XPAnchorPKPresenter.m new file mode 100644 index 00000000..f9a1455f --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorPK/Presenter/XPAnchorPKPresenter.m @@ -0,0 +1,39 @@ +// +// YMAnchorPKPresenter.m +// YUMI +// +// Created by YUMI on 2022/4/8. +// + +#import "XPAnchorPKPresenter.h" +#import "Api+AnchorPk.h" +#import "AccountInfoStorage.h" +#import "XPAnchorPKProtocol.h" + +@implementation XPAnchorPKPresenter + +/// 开启主播PK +/// @param roomUid 当前房间的房主uid +/// @param duration 持续的时间 +/// @param acceptUid 接收者的uid +/// @param playDesc 玩法 +- (void)beginAnchorPK:(NSString *)roomUid duration:(NSInteger)duration acceptUid:(NSString *)acceptUid playDesc:(NSString *)playDesc pkType:(NSString *)pkType { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * time = [NSString stringWithFormat:@"%ld", duration]; + [Api beginAnchorPK:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] beginAnchorPKSuccess]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] beginAnchorPKFail:msg]; + } showLoading:YES errorToast:NO] acceptUid:acceptUid duration:time inviteUid:roomUid operateUid:uid playDesc:playDesc pkType:pkType]; +} + +/// 匹配随机PK +/// @param roomUid 房间UID +- (void)matchRandomPK:(NSString *)roomUid { + [Api matchRandomPK:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + long long number = [data.data longLongValue]; + [[self getView] matchRandomPKSuccess:number]; + }] roomUid:roomUid]; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/Protocol/XCombatellegCombatCeremony.h b/YuMi/Modules/YMRoom/View/AnchorPK/Protocol/XCombatellegCombatCeremony.h deleted file mode 100644 index 10ba935d..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorPK/Protocol/XCombatellegCombatCeremony.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMAnchorPKProtocol.h -// YUMI -// -// Created by YUMI on 2022/4/8. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol XCombatellegCombatCeremony - -- (void)instituteKellegCombatAccomplishment; -- (void)instituteKellegCombatFlunk:(NSString *)message; - -- (void)adapttowardsionArbitraryCombatAccomplishment:(long long)matchPkStartTime; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/Protocol/XPAnchorPKProtocol.h b/YuMi/Modules/YMRoom/View/AnchorPK/Protocol/XPAnchorPKProtocol.h new file mode 100644 index 00000000..1a11f7d8 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorPK/Protocol/XPAnchorPKProtocol.h @@ -0,0 +1,24 @@ +// +// YMAnchorPKProtocol.h +// YUMI +// +// Created by YUMI on 2022/4/8. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPAnchorPKProtocol + +///开启主播pk成功 +- (void)beginAnchorPKSuccess; +///开启主播Pk失败 +- (void)beginAnchorPKFail:(NSString *)message; + +///随机PK匹配开始 +- (void)matchRandomPKSuccess:(long long)matchPkStartTime; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/Cell/XCombatellegCombatTabulationRegardElement.h b/YuMi/Modules/YMRoom/View/AnchorPK/View/Cell/XCombatellegCombatTabulationRegardElement.h deleted file mode 100644 index 8166a0fe..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorPK/View/Cell/XCombatellegCombatTabulationRegardElement.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YMAnchorPKTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/4/8. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class ThroughoutChamberCombatAbstractMatrix, XCombatellegCombatTabulationRegardElement; -@protocol XCombatellegCombatTabulationViweElementRepresendtation -- (void)xCombatellegCombatTarbsultowardsionViweElement:(XCombatellegCombatTabulationRegardElement *)view didChooseRoom:(ThroughoutChamberCombatAbstractMatrix *)roomInfo; -@end - -@interface XCombatellegCombatTabulationRegardElement : UITableViewCell - -@property (nonatomic,strong) ThroughoutChamberCombatAbstractMatrix *chamberCombatAbstract; -@property (nonatomic,weak) id delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/Cell/XCombatellegCombatTabulationRegardElement.m b/YuMi/Modules/YMRoom/View/AnchorPK/View/Cell/XCombatellegCombatTabulationRegardElement.m deleted file mode 100644 index d56680d0..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorPK/View/Cell/XCombatellegCombatTabulationRegardElement.m +++ /dev/null @@ -1,148 +0,0 @@ -// -// YMAnchorPKTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/4/8. -// - -#import "XCombatellegCombatTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "UIImage+Utils.h" -#import "ThroughoutChamberCombatAbstractMatrix.h" - -@interface XCombatellegCombatTabulationRegardElement() - -@property (nonatomic, strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic, strong) UIButton *chosenBtuton; -@property (nonatomic, strong) UILabel *constituteSequencignation; -@property (nonatomic, strong) UILabel *idSequencignation; - -@end - -@implementation XCombatellegCombatTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; - if (self) { - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self initSubViews]; - [self initChildLyRestrictions]; - - } - return self; -} -#pragma mark - Private Method - -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.constituteSequencignation]; - [self.contentView addSubview:self.idSequencignation]; - [self.contentView addSubview:self.chosenBtuton]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(13); - make.width.height.mas_equalTo(60); - make.centerY.mas_equalTo(self.contentView); - }]; - [self.constituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).mas_offset(6); - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY); - make.height.mas_equalTo(14); - make.right.mas_equalTo(self.chosenBtuton.mas_left).mas_offset(-5); - }]; - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.constituteSequencignation); - make.top.mas_equalTo(self.constituteSequencignation.mas_bottom).mas_offset(7); - }]; - - [self.chosenBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-15); - make.centerY.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.width.mas_equalTo(64); - make.height.mas_equalTo(24); - }]; -} - -#pragma mark - Event Response -- (void)chosenBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(xCombatellegCombatTarbsultowardsionViweElement:didChooseRoom:)]) { - [self.delegate xCombatellegCombatTarbsultowardsionViweElement:self didChooseRoom:self.chamberCombatAbstract]; - } -} - -#pragma mark - Getters And Setters -- (void)setChamberCombatAbstract:(ThroughoutChamberCombatAbstractMatrix *)chamberCombatAbstract { - _chamberCombatAbstract = chamberCombatAbstract; - self.intelligenceportraitIndicateRegard.imageUrl = _chamberCombatAbstract.avatar; - self.constituteSequencignation.text = _chamberCombatAbstract.nick; - self.idSequencignation.text = [NSString stringWithFormat:@"ID:%@", _chamberCombatAbstract.erbanNo]; - self.chosenBtuton.userInteractionEnabled = !chamberCombatAbstract.crossPking; - if (chamberCombatAbstract.crossPking) { - [_chosenBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0x4C4C6A), UIColorFromRGB(0x4C4C6A)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_chosenBtuton setTitle:YMLocalizedString(@"YUMI_Anchor_PK_Table_View_Cell_0") forState:UIControlStateNormal]; - [_chosenBtuton setTitleColor:UIColorFromRGB(0xC6C6E9) forState:UIControlStateNormal]; - } else if(!chamberCombatAbstract.valid) { - [_chosenBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0x4C4C6A), UIColorFromRGB(0x4C4C6A)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_chosenBtuton setTitle:YMLocalizedString(@"YUMI_Anchor_PK_Table_View_Cell_1") forState:UIControlStateNormal]; - [_chosenBtuton setTitleColor:UIColorFromRGB(0xC6C6E9) forState:UIControlStateNormal]; - } else { - [_chosenBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0x1CD7FD), UIColorFromRGB(0x9377FF), UIColorFromRGB(0xFF6BA3)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_chosenBtuton setTitle:YMLocalizedString(@"YUMI_Anchor_PK_Table_View_Cell_2") forState:UIControlStateNormal]; - [_chosenBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - } -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 60/2; - _intelligenceportraitIndicateRegard.layer.borderWidth = 1; - _intelligenceportraitIndicateRegard.layer.borderColor = [UIColor whiteColor].CGColor; - } - return _intelligenceportraitIndicateRegard; -} - -- (UIButton *)chosenBtuton { - if (!_chosenBtuton) { - _chosenBtuton = [[UIButton alloc] init]; - [_chosenBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0x1CD7FD), UIColorFromRGB(0x9377FF), UIColorFromRGB(0xFF6BA3)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_chosenBtuton addTarget:self action:@selector(chosenBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _chosenBtuton.userInteractionEnabled = YES; - _chosenBtuton.layer.cornerRadius = 12; - _chosenBtuton.layer.masksToBounds = YES; - [_chosenBtuton setTitle:YMLocalizedString(@"YUMI_Anchor_PK_Table_View_Cell_3") forState:UIControlStateNormal]; - _chosenBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_chosenBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - } - return _chosenBtuton; -} - -- (UILabel *)constituteSequencignation { - if (!_constituteSequencignation) { - _constituteSequencignation = [[UILabel alloc] init]; - _constituteSequencignation.textColor = [UIColor whiteColor]; - _constituteSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - } - return _constituteSequencignation; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.textColor = [UIColor whiteColor]; - _idSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - } - return _idSequencignation; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/Cell/XPAnchorPKTableViewCell.h b/YuMi/Modules/YMRoom/View/AnchorPK/View/Cell/XPAnchorPKTableViewCell.h new file mode 100644 index 00000000..e8795c95 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorPK/View/Cell/XPAnchorPKTableViewCell.h @@ -0,0 +1,26 @@ +// +// YMAnchorPKTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/4/8. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class AcrossRoomPKInfoModel, XPAnchorPKTableViewCell; +@protocol XPAnchorPKTableViewCellDelegate +///点击了选择的按钮 +- (void)xPAnchorPKTableViewCell:(XPAnchorPKTableViewCell *)view didChooseRoom:(AcrossRoomPKInfoModel *)roomInfo; +@end + +@interface XPAnchorPKTableViewCell : UITableViewCell + +@property (nonatomic,strong) AcrossRoomPKInfoModel *roomPKInfo; +///代理 +@property (nonatomic,weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/Cell/XPAnchorPKTableViewCell.m b/YuMi/Modules/YMRoom/View/AnchorPK/View/Cell/XPAnchorPKTableViewCell.m new file mode 100644 index 00000000..98f4646a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorPK/View/Cell/XPAnchorPKTableViewCell.m @@ -0,0 +1,155 @@ +// +// YMAnchorPKTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/4/8. +// + +#import "XPAnchorPKTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "UIImage+Utils.h" +///Model +#import "AcrossRoomPKInfoModel.h" + +@interface XPAnchorPKTableViewCell() + +///头像 +@property (nonatomic, strong) NetImageView *avatarImageView; +///选择的 +@property (nonatomic, strong) UIButton *selectButton; +///名字 +@property (nonatomic, strong) UILabel *nameLabel; +///ID +@property (nonatomic, strong) UILabel *idLabel; + +@end + +@implementation XPAnchorPKTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; + if (self) { + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self initSubViews]; + [self initSubViewConstraints]; + + } + return self; +} +#pragma mark - Private Method + +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.nameLabel]; + [self.contentView addSubview:self.idLabel]; + [self.contentView addSubview:self.selectButton]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(13); + make.width.height.mas_equalTo(60); + make.centerY.mas_equalTo(self.contentView); + }]; + [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatarImageView.mas_right).mas_offset(6); + make.bottom.mas_equalTo(self.avatarImageView.mas_centerY); + make.height.mas_equalTo(14); + make.right.mas_equalTo(self.selectButton.mas_left).mas_offset(-5); + }]; + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nameLabel); + make.top.mas_equalTo(self.nameLabel.mas_bottom).mas_offset(7); + }]; + + [self.selectButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-15); + make.centerY.mas_equalTo(self.avatarImageView); + make.width.mas_equalTo(64); + make.height.mas_equalTo(24); + }]; +} + +#pragma mark - Event Response +- (void)selectButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPAnchorPKTableViewCell:didChooseRoom:)]) { + [self.delegate xPAnchorPKTableViewCell:self didChooseRoom:self.roomPKInfo]; + } +} + +#pragma mark - Getters And Setters +- (void)setRoomPKInfo:(AcrossRoomPKInfoModel *)roomPKInfo { + _roomPKInfo = roomPKInfo; + self.avatarImageView.imageUrl = _roomPKInfo.avatar; + self.nameLabel.text = _roomPKInfo.nick; + self.idLabel.text = [NSString stringWithFormat:@"ID:%@", _roomPKInfo.erbanNo]; + self.selectButton.userInteractionEnabled = !roomPKInfo.crossPking; + if (roomPKInfo.crossPking) { + [_selectButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0x4C4C6A), UIColorFromRGB(0x4C4C6A)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_selectButton setTitle:YMLocalizedString(@"XPAnchorPKTableViewCell0") forState:UIControlStateNormal]; + [_selectButton setTitleColor:UIColorFromRGB(0xC6C6E9) forState:UIControlStateNormal]; + } else if(!roomPKInfo.valid) { + [_selectButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0x4C4C6A), UIColorFromRGB(0x4C4C6A)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_selectButton setTitle:YMLocalizedString(@"XPAnchorPKTableViewCell1") forState:UIControlStateNormal]; + [_selectButton setTitleColor:UIColorFromRGB(0xC6C6E9) forState:UIControlStateNormal]; + } else { + [_selectButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0x1CD7FD), UIColorFromRGB(0x9377FF), UIColorFromRGB(0xFF6BA3)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_selectButton setTitle:YMLocalizedString(@"XPAnchorPKTableViewCell2") forState:UIControlStateNormal]; + [_selectButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + } +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 60/2; + _avatarImageView.layer.borderWidth = 1; + _avatarImageView.layer.borderColor = [UIColor whiteColor].CGColor; + } + return _avatarImageView; +} + +- (UIButton *)selectButton { + if (!_selectButton) { + _selectButton = [[UIButton alloc] init]; + [_selectButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0x1CD7FD), UIColorFromRGB(0x9377FF), UIColorFromRGB(0xFF6BA3)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_selectButton addTarget:self action:@selector(selectButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _selectButton.userInteractionEnabled = YES; + _selectButton.layer.cornerRadius = 12; + _selectButton.layer.masksToBounds = YES; + [_selectButton setTitle:YMLocalizedString(@"XPAnchorPKTableViewCell3") forState:UIControlStateNormal]; + _selectButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_selectButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + } + return _selectButton; +} + +- (UILabel *)nameLabel { + if (!_nameLabel) { + _nameLabel = [[UILabel alloc] init]; + _nameLabel.textColor = [UIColor whiteColor]; + _nameLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + } + return _nameLabel; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.textColor = [UIColor whiteColor]; + _idLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + } + return _idLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatCallforRegard.h b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatCallforRegard.h deleted file mode 100644 index 87e364b9..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatCallforRegard.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMAnchorPKInviteView.h -// YUMI -// -// Created by YUMI on 2022/4/12. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface XCombatellegCombatCallforRegard : UIView - -@property (nonatomic,copy) NSString *roomUid; -@property (nonatomic,copy) NSDictionary *atoloudspeakerPackbask; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatCallforRegard.m b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatCallforRegard.m deleted file mode 100644 index db72bb1b..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatCallforRegard.m +++ /dev/null @@ -1,344 +0,0 @@ -// -// YMAnchorPKInviteView.m -// YUMI -// -// Created by YUMI on 2022/4/12. -// - -#import "XCombatellegCombatCallforRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "UIImage+Utils.h" -#import "Api+Room.h" -#import "XNDJTBWGLoadingTool.h" -#import "MKJPopup.h" - -@interface XCombatellegCombatCallforMetroRegard : UIView -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UILabel *satisfperformanceSequencignation; -@end - -@implementation XCombatellegCombatCallforMetroRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.titleLabel]; - [self addSubview:self.satisfperformanceSequencignation]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(17); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(55); - make.left.centerY.mas_equalTo(self); - }]; - - [self.satisfperformanceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.titleLabel.mas_right).offset(15); - make.centerY.mas_equalTo(self); - make.right.mas_lessThanOrEqualTo(self).offset(-5); - }]; -} - -#pragma mark - Getters And Setters - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleLabel.font = [UIFont systemFontOfSize:14]; - _titleLabel.text = YMLocalizedString(@"YUMI_Anchor_PK_Invite_View_0"); - _titleLabel.textAlignment = NSTextAlignmentRight; - } - return _titleLabel; -} - -- (UILabel *)satisfperformanceSequencignation { - if (!_satisfperformanceSequencignation) { - _satisfperformanceSequencignation = [[UILabel alloc] init]; - _satisfperformanceSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _satisfperformanceSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - } - return _satisfperformanceSequencignation; -} - -@end - -@interface XCombatellegCombatCallforRegard () -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) XCombatellegCombatCallforMetroRegard *centiretyforRegard; -@property (nonatomic,strong) XCombatellegCombatCallforMetroRegard *intratemporalRegard; -@property (nonatomic,strong) XCombatellegCombatCallforMetroRegard *sequenceRegard; -@property (nonatomic,strong) UIStackView *operaHierarchyRegard; -@property (nonatomic, strong) UIButton *rejectBtuton; -@property (nonatomic, strong) UIButton *acceptBtuton; -@property (nonatomic, strong) UIImageView *encourageIndicateRegard; -@property (nonatomic, strong) UIButton *computationPubescenceBtuton; -@property (strong, nonatomic) dispatch_source_t centiretyforIntratemper; - -@end - -@implementation XCombatellegCombatCallforRegard - -- (void)dealloc { - if (self.centiretyforIntratemper != nil) { - dispatch_source_cancel(self.centiretyforIntratemper); - self.centiretyforIntratemper = nil; - } -} - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -- (void)initSubViews { - [self addSubview:self.encourageIndicateRegard]; - - [self.encourageIndicateRegard addSubview:self.titleLabel]; - [self.encourageIndicateRegard addSubview:self.stackView]; - [self.encourageIndicateRegard addSubview:self.operaHierarchyRegard]; - [self.encourageIndicateRegard addSubview:self.computationPubescenceBtuton]; - - [self.stackView addArrangedSubview:self.centiretyforRegard]; - [self.stackView addArrangedSubview:self.intratemporalRegard]; - [self.stackView addArrangedSubview:self.sequenceRegard]; - - [self.operaHierarchyRegard addArrangedSubview:self.rejectBtuton]; - [self.operaHierarchyRegard addArrangedSubview:self.acceptBtuton]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(300); - make.height.mas_equalTo(324); - make.bottom.mas_equalTo(self.encourageIndicateRegard.mas_bottom); - }]; - - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self.encourageIndicateRegard).mas_offset(82); - make.height.mas_equalTo(21); - }]; - - [self.computationPubescenceBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.top.mas_equalTo(0); - make.width.mas_equalTo(36); - make.height.mas_equalTo(26); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageIndicateRegard).offset(26); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(32); - make.right.mas_equalTo(self.encourageIndicateRegard); - }]; - - [self.operaHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageIndicateRegard).inset(20); - make.height.mas_equalTo(40); - make.bottom.mas_equalTo(-25); - }]; -} - -#pragma mark - Event Response -- (void)acceptBtutonPerformance:(UIButton *)sender { - NSString *roundId = self.atoloudspeakerPackbask[@"roundId"]; - [Api shankThroughoutChamberCombatCentiretyfor:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - if (self.centiretyforIntratemper != nil) { - dispatch_source_cancel(self.centiretyforIntratemper); - self.centiretyforIntratemper = nil; - } - [MKJPopup dismiss]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } roomUid:self.roomUid roundId:roundId isRecognize:@"1"]; -} - -- (void)rejectBtutonPerformance:(UIButton *)sender { - NSString *roundId = self.atoloudspeakerPackbask[@"roundId"]; - [Api shankThroughoutChamberCombatCentiretyfor:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - if (self.centiretyforIntratemper != nil) { - dispatch_source_cancel(self.centiretyforIntratemper); - self.centiretyforIntratemper = nil; - } - [MKJPopup dismiss]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } roomUid:self.roomUid roundId:roundId isRecognize:@"0"]; -} - -#pragma mark - getter -- (void)setAtoloudspeakerPackbask:(NSDictionary *)atoloudspeakerPackbask { - _atoloudspeakerPackbask = atoloudspeakerPackbask; - if (_atoloudspeakerPackbask.allKeys.count > 0) { - self.centiretyforRegard.satisfperformanceSequencignation.text = _atoloudspeakerPackbask[@"inviteNick"]; - self.intratemporalRegard.satisfperformanceSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Anchor_PK_Invite_View_1"), _atoloudspeakerPackbask[@"pkDuration"]]; - NSString *desc = _atoloudspeakerPackbask[@"pkDesc"]; - if (desc.length > 0) { - self.sequenceRegard.hidden = NO; - self.sequenceRegard.satisfperformanceSequencignation.text = desc; - } else { - self.sequenceRegard.hidden = YES; - } - - if (_centiretyforIntratemper != nil) { - dispatch_source_cancel(_centiretyforIntratemper); - } - __block NSInteger time = 10; - dispatch_queue_t queue = dispatch_get_global_queue(0, 0); - _centiretyforIntratemper = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); - @kWeakify(self); - dispatch_source_set_timer(_centiretyforIntratemper,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); - dispatch_source_set_event_handler(_centiretyforIntratemper, ^{ - if(time <= 0){ - dispatch_source_cancel(self.centiretyforIntratemper); - self.centiretyforIntratemper = nil; - dispatch_async(dispatch_get_main_queue(), ^{ - @kStrongify(self); - [self removeFromSuperview]; - - }); - }else{ - dispatch_async(dispatch_get_main_queue(), ^{ - @kStrongify(self); - [self.computationPubescenceBtuton setTitle:[NSString stringWithFormat:@"%02lds", time] forState:UIControlStateNormal]; - }); - time--; - } - }); - dispatch_resume(_centiretyforIntratemper); - } -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_anchorPK_invite_background"]; - } - return _encourageIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textColor = [UIColor whiteColor]; - _titleLabel.font = [UIFont systemFontOfSize:15]; - _titleLabel.text = YMLocalizedString(@"YUMI_Anchor_PK_Invite_View_2"); - } - return _titleLabel; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 16; - } - return _stackView; -} - -- (XCombatellegCombatCallforMetroRegard *)centiretyforRegard { - if (!_centiretyforRegard) { - _centiretyforRegard = [[XCombatellegCombatCallforMetroRegard alloc] init]; - _centiretyforRegard.titleLabel.text = @"邀请方:"; - } - return _centiretyforRegard; -} - -- (XCombatellegCombatCallforMetroRegard *)intratemporalRegard { - if (!_intratemporalRegard) { - _intratemporalRegard = [[XCombatellegCombatCallforMetroRegard alloc] init]; - _intratemporalRegard.titleLabel.text = @"PK时长:"; - } - return _intratemporalRegard; -} - -- (XCombatellegCombatCallforMetroRegard *)sequenceRegard { - if (!_sequenceRegard) { - _sequenceRegard = [[XCombatellegCombatCallforMetroRegard alloc] init]; - _sequenceRegard.titleLabel.text = @"PK玩法:"; - } - return _sequenceRegard; -} - -- (UIButton *)computationPubescenceBtuton { - if (!_computationPubescenceBtuton) { - _computationPubescenceBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_computationPubescenceBtuton setTitleColor:UIColorFromRGB(0xFFFFFF) forState:UIControlStateNormal]; - _computationPubescenceBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_computationPubescenceBtuton setBackgroundImage:[UIImage imageWithColor:UIColorRGBAlpha(0xFFFFFF, 0.4)] forState:UIControlStateNormal]; - _computationPubescenceBtuton.layer.masksToBounds = YES; - _computationPubescenceBtuton.layer.cornerRadius = 13; - } - return _computationPubescenceBtuton; -} - -- (UIStackView *)operaHierarchyRegard { - if (!_operaHierarchyRegard) { - _operaHierarchyRegard = [[UIStackView alloc] init]; - _operaHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _operaHierarchyRegard.distribution = UIStackViewDistributionFillEqually; - _operaHierarchyRegard.alignment = UIStackViewAlignmentFill; - _operaHierarchyRegard.spacing = 12; - } - return _operaHierarchyRegard; -} - -- (UIButton *)rejectBtuton { - if (!_rejectBtuton) {\ - _rejectBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - _rejectBtuton.layer.masksToBounds = YES; - _rejectBtuton.layer.cornerRadius = 40 / 2; - [_rejectBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xF4E0FF), UIColorFromRGB(0xF4E0FF)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_rejectBtuton setTitleColor:UIColorFromRGB(0x5486FD) forState:UIControlStateNormal]; - [_rejectBtuton setTitle:YMLocalizedString(@"YUMI_Anchor_PK_Invite_View_6") forState:UIControlStateNormal]; - _rejectBtuton.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - [_rejectBtuton addTarget:self action:@selector(rejectBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _rejectBtuton; -} - -- (UIButton *)acceptBtuton { - if (!_acceptBtuton) { - _acceptBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_acceptBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0x1CD7FD), UIColorFromRGB(0x9377FF), UIColorFromRGB(0xFF6BA3)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_acceptBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [_acceptBtuton setTitle:YMLocalizedString(@"YUMI_Anchor_PK_Invite_View_7") forState:UIControlStateNormal]; - _acceptBtuton.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - [_acceptBtuton addTarget:self action:@selector(acceptBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _acceptBtuton.layer.masksToBounds = YES; - _acceptBtuton.layer.cornerRadius = 40 / 2; - } - return _acceptBtuton; - } - -@end diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatConsequentRegard.h b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatConsequentRegard.h deleted file mode 100644 index 6a94c00c..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatConsequentRegard.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMAnchorPKResultView.h -// YUMI -// -// Created by YUMI on 2022/4/13. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class ThroughoutChamberCombatFasciaboardMatrix; -@interface XCombatellegCombatConsequentRegard : UIView - -@property (nonatomic, strong) ThroughoutChamberCombatFasciaboardMatrix *data; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatConsequentRegard.m b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatConsequentRegard.m deleted file mode 100644 index aadb079d..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatConsequentRegard.m +++ /dev/null @@ -1,420 +0,0 @@ -// -// YMAnchorPKResultView.m -// YUMI -// -// Created by YUMI on 2022/4/13. -// - -#import "XCombatellegCombatConsequentRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "MKJPopup.h" -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "ThroughoutChamberCombatFasciaboardMatrix.h" - -@interface XCombatellegCombatConsequentContributeRegard : UIView - -@property (nonatomic, strong) UIImageView *backgroundIndicateRegard; -@property (nonatomic, strong) UIImageView *mvpFigureRegard; -@property (nonatomic, strong) NetIndicateRegard *intelligenceIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UILabel *satisfperformanceSequencignation; - -@property (nonatomic, strong) ThroughoutChamberPkRateMatrix *data; - -@end - -@implementation XCombatellegCombatConsequentContributeRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backgroundIndicateRegard]; - [self addSubview:self.intelligenceIndicateRegard]; - [self addSubview:self.mvpFigureRegard]; - [self addSubview:self.titleLabel]; - [self addSubview:self.satisfperformanceSequencignation]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(40); - make.width.mas_equalTo(159); - }]; - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(0); - }]; - - [self.intelligenceIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self); - make.left.mas_equalTo(16); - make.width.height.mas_equalTo(34); - }]; - [self.mvpFigureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(32); - make.height.mas_equalTo(12); - make.centerX.mas_equalTo(self.intelligenceIndicateRegard); - make.bottom.mas_equalTo(self.intelligenceIndicateRegard).mas_offset(1); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.intelligenceIndicateRegard).mas_offset(2); - make.left.mas_equalTo(self.intelligenceIndicateRegard.mas_right).mas_offset(8); - make.height.mas_equalTo(13); - make.right.mas_equalTo(0); - }]; - - [self.satisfperformanceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.titleLabel); - make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(4); - make.height.mas_equalTo(11); - }]; -} - -#pragma mark - Getters And Setters -- (void)setData:(ThroughoutChamberPkRateMatrix *)data { - - self.titleLabel.text = data.nick ? data.nick : @""; - self.satisfperformanceSequencignation.text = [NSString stringWithFormat:@"PK值:%@", data.amount? data.amount : @""]; - self.intelligenceIndicateRegard.imageUrl = data.avatar; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textColor = [UIColor whiteColor]; - _titleLabel.font = [UIFont systemFontOfSize:12]; - _titleLabel.text = @""; - } - return _titleLabel; -} - -- (UILabel *)satisfperformanceSequencignation { - if (!_satisfperformanceSequencignation) { - _satisfperformanceSequencignation = [[UILabel alloc] init]; - _satisfperformanceSequencignation.textColor = [UIColor whiteColor]; - _satisfperformanceSequencignation.font = [UIFont systemFontOfSize:10]; - } - return _satisfperformanceSequencignation; -} - -- (UIImageView *)backgroundIndicateRegard { - if (!_backgroundIndicateRegard) { - _backgroundIndicateRegard = [[UIImageView alloc] init]; - _backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_anchorPK_result_contribute_background"]; - } - return _backgroundIndicateRegard; -} - -- (UIImageView *)mvpFigureRegard { - if (!_mvpFigureRegard) { - _mvpFigureRegard = [[UIImageView alloc] init]; - _mvpFigureRegard.image = [UIImage imageNamed:@"yumi_anchorPK_result_mvp_pic"]; - _mvpFigureRegard.hidden = YES; - } - return _mvpFigureRegard; -} - -- (NetIndicateRegard *)intelligenceIndicateRegard { - if (!_intelligenceIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceIndicateRegard.layer.masksToBounds = YES; - _intelligenceIndicateRegard.layer.cornerRadius = 17; - _intelligenceIndicateRegard.layer.borderColor = [UIColor whiteColor].CGColor; - _intelligenceIndicateRegard.layer.borderWidth = 0.5; - } - return _intelligenceIndicateRegard; -} - -@end - -@interface XCombatellegCombatConsequentRegard() - - -@property (nonatomic, strong) UIImageView *backgroundIndicateRegard; -@property (nonatomic, strong) UIButton *concludeBtuton; -@property (nonatomic, strong) UIView *mainView; -@property (nonatomic, strong) UIImageView *intelligencePenetrateIndicateRegard; -@property (nonatomic, strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic, strong) UILabel *chamberChampionSequencignation; -@property (nonatomic, strong) UILabel *combateBWSttessSequencignation; -@property (nonatomic, strong) UIImageView *efficacyChampionBackgroundIndicateRegard; -@property (nonatomic, strong) UILabel *efficacyChampionSequencignation; -@property (nonatomic, strong) UILabel *noneContrbuteSequencignation; -@property (strong, nonatomic) dispatch_source_t timer; - -@end - -@implementation XCombatellegCombatConsequentRegard - -- (void)dealloc { - NSLog(@"销毁了"); - if (self.timer) { - dispatch_source_cancel(self.timer); - self.timer = nil; - } -} - -#pragma mark - life cycle - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initRegard]; - [self initConstrtowardsions]; - } - return self; -} - -- (void)initRegard { - [self addSubview:self.backgroundIndicateRegard]; - [self addSubview:self.concludeBtuton]; - [self addSubview:self.mainView]; - [self addSubview:self.intelligenceportraitIndicateRegard]; - [self addSubview:self.intelligencePenetrateIndicateRegard]; - - [self.mainView addSubview:self.chamberChampionSequencignation]; - [self.mainView addSubview:self.combateBWSttessSequencignation]; - [self.mainView addSubview:self.efficacyChampionBackgroundIndicateRegard]; - [self.mainView addSubview:self.efficacyChampionSequencignation]; - [self.mainView addSubview:self.noneContrbuteSequencignation]; -} - -- (void)initConstrtowardsions { - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(0); - make.top.mas_equalTo(47); - make.height.mas_equalTo(370); - }]; - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self.backgroundIndicateRegard.mas_bottom).mas_offset(23); - make.width.mas_equalTo(72); - make.height.mas_equalTo(32); - }]; - [self.mainView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.backgroundIndicateRegard); - }]; - [self.intelligencePenetrateIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(0); - make.centerX.mas_equalTo(self); - make.width.mas_equalTo(148); - make.height.mas_equalTo(114); - }]; - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(27); - make.width.height.mas_equalTo(64); - make.centerX.mas_equalTo(self); - }]; - [self.chamberChampionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.intelligencePenetrateIndicateRegard.mas_bottom).mas_offset(15); - make.centerX.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.height.mas_equalTo(15); - }]; - [self.combateBWSttessSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.top.mas_equalTo(self.chamberChampionSequencignation.mas_bottom).offset(8); - make.height.mas_equalTo(13); - }]; - [self.efficacyChampionBackgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.combateBWSttessSequencignation.mas_bottom).mas_offset(17); - make.centerX.mas_equalTo(self.mainView); - make.width.mas_equalTo(160); - make.height.mas_equalTo(24); - }]; - [self.efficacyChampionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.centerY.mas_equalTo(self.efficacyChampionBackgroundIndicateRegard); - }]; - [self.noneContrbuteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.combateBWSttessSequencignation.mas_bottom).mas_offset(92); - make.centerX.mas_equalTo(self); - }]; -} - - -- (void)setData:(ThroughoutChamberCombatFasciaboardMatrix *)data { - if (data.winUid == data.cUid) { - self.backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_anchorPK_result_win_background"]; - self.intelligencePenetrateIndicateRegard.image = [UIImage imageNamed:@"yumi_anchorPK_result_win_headWear"]; - self.efficacyChampionBackgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_anchorPK_result_win_title_background"]; - } else if (data.winUid == data.aUid) { - self.backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_anchorPK_result_fail_background"]; - self.intelligencePenetrateIndicateRegard.image = [UIImage imageNamed:@"yumi_anchorPK_result_fail_headWear"]; - self.efficacyChampionBackgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_anchorPK_result_fail_title_background"]; - } else { - self.backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_anchorPK_result_tie_background"]; - self.intelligencePenetrateIndicateRegard.image = [UIImage imageNamed:@"yumi_anchorPK_result_tie_headWear"]; - self.efficacyChampionBackgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_anchorPK_result_tie_title_background"]; - } - self.intelligenceportraitIndicateRegard.imageUrl = data.cAvatar; - self.chamberChampionSequencignation.text = data.cNick; - self.combateBWSttessSequencignation.text = [NSString stringWithFormat:@"PK值:%lld", data.cAmount]; - if (data.csRank.count > 0) { - self.efficacyChampionBackgroundIndicateRegard.hidden = NO; - self.efficacyChampionSequencignation.hidden = NO; - self.noneContrbuteSequencignation.hidden = YES; - for (int i = 0; i - -NS_ASSUME_NONNULL_BEGIN - -@class ThroughoutChamberPkRateMatrix; -typedef NS_ENUM(NSInteger, KellegCombatPanelConsumerGenre) { - - KellegCombatPanelConsumerGenre_Red_Contribute = 1, - - KellegCombatPanelConsumerGenre_Red_Charm, - - KellegCombatPanelConsumerGenre_Blue_Contribute, - - KellegCombatPanelConsumerGenre_Blue_Charm, -}; - -@interface XCombatellegCombatFasciaboardConsumerRegard : UIView - -@property (nonatomic,assign) KellegCombatPanelConsumerGenre type; - -@property (nonatomic,strong, nullable) ThroughoutChamberPkRateMatrix * fasciadirectorateAbstract; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatFasciaboardConsumerRegard.m b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatFasciaboardConsumerRegard.m deleted file mode 100644 index 77b51de4..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatFasciaboardConsumerRegard.m +++ /dev/null @@ -1,137 +0,0 @@ -// -// YMAnchorPKPanelUserView.m -// YUMI -// -// Created by YUMI on 2022/4/11. -// - -#import "XCombatellegCombatFasciaboardConsumerRegard.h" - -#import -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "ThroughoutChamberCombatFasciaboardMatrix.h" - -@interface XCombatellegCombatFasciaboardConsumerRegard () -@property (nonatomic, strong) UIImageView *mvpIndicateRegard; -@property (nonatomic, strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UIButton *tangerineBtuton; - -@end - -@implementation XCombatellegCombatFasciaboardConsumerRegard - -#pragma mark - Life Style -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.intelligenceportraitIndicateRegard]; - [self addSubview:self.mvpIndicateRegard]; - [self addSubview:self.tangerineBtuton]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(36); - make.height.mas_equalTo(42); - }]; - - [self.mvpIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.bottom.right.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.height.mas_equalTo(11); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self); - make.width.height.mas_equalTo(24); - make.centerX.mas_equalTo(self); - }]; - - [self.tangerineBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(self); - make.height.mas_equalTo(11); - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_bottom).mas_offset(4); - }]; -} - - -#pragma mark - getters and setters -- (void)setType:(KellegCombatPanelConsumerGenre)type { - _type = type; - NSString * avatarPlaceName; - switch (type) { - case KellegCombatPanelConsumerGenre_Red_Contribute: - case KellegCombatPanelConsumerGenre_Red_Charm: - avatarPlaceName = @"anchorPK_panel_red_micState"; - break; - case KellegCombatPanelConsumerGenre_Blue_Contribute: - case KellegCombatPanelConsumerGenre_Blue_Charm: - avatarPlaceName = @"anchorPK_panel_blue_micState"; - break; - - default: - break; - } - self.intelligenceportraitIndicateRegard.image = [UIImage imageNamed:avatarPlaceName]; -} - -- (void)setFasciadirectorateAbstract:(ThroughoutChamberPkRateMatrix *)fasciadirectorateAbstract { - _fasciadirectorateAbstract = fasciadirectorateAbstract; - if (_fasciadirectorateAbstract) { - self.intelligenceportraitIndicateRegard.imageUrl = _fasciadirectorateAbstract.avatar; - [self.tangerineBtuton setTitle:fasciadirectorateAbstract.amount forState:UIControlStateNormal]; - self.tangerineBtuton.hidden = !fasciadirectorateAbstract.amount; - } else { - if (self.type == KellegCombatPanelConsumerGenre_Red_Contribute || self.type == KellegCombatPanelConsumerGenre_Red_Charm) { - self.intelligenceportraitIndicateRegard.image = [UIImage imageNamed:@"yumi_anchorPK_panel_red_micState"]; - } else { - self.intelligenceportraitIndicateRegard.image = [UIImage imageNamed:@"yumi_anchorPK_panel_red_micState"]; - } - [self.tangerineBtuton setTitle:@"0" forState:UIControlStateNormal]; - self.tangerineBtuton.hidden = YES; - } - if (self.tag == 1000) { - self.mvpIndicateRegard.hidden = NO; - } -} - -- (UIImageView *)mvpIndicateRegard { - if (!_mvpIndicateRegard) { - _mvpIndicateRegard = [[UIImageView alloc] init]; - _mvpIndicateRegard.image = [UIImage imageNamed:@"yumi_anchorPK_panel_MVP"]; - _mvpIndicateRegard.hidden = YES; - } - return _mvpIndicateRegard; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 24 / 2; - } - return _intelligenceportraitIndicateRegard; -} - -- (UIButton *)tangerineBtuton { - if (!_tangerineBtuton) { - _tangerineBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_tangerineBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _tangerineBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - } - return _tangerineBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatFinishRegard.h b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatFinishRegard.h deleted file mode 100644 index e6f32840..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatFinishRegard.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMAnchorPKFinishView.h -// YUMI -// -// Created by YUMI on 2022/4/13. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class ThroughoutChamberCombatFasciaboardMatrix; -@interface XCombatellegCombatFinishRegard : UIView - -@property (nonatomic, strong) ThroughoutChamberCombatFasciaboardMatrix *data; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatFinishRegard.m b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatFinishRegard.m deleted file mode 100644 index a79d6419..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatFinishRegard.m +++ /dev/null @@ -1,223 +0,0 @@ -// -// YMAnchorPKFinishView.m -// YUMI -// -// Created by YUMI on 2022/4/13. -// - -#import "XCombatellegCombatFinishRegard.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "YUMIMacroUitls.h" -#import "UIImage+Utils.h" -#import "MKJPopup.h" -#import "ThroughoutChamberCombatFasciaboardMatrix.h" - -@interface XCombatellegCombatFinishRegard () - -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UIImageView *backgroundImageView; -@property (nonatomic, strong) NetIndicateRegard *deficitIntelligenceportraitIndicateRegard; -@property (nonatomic, strong) NetIndicateRegard *disappointedIntelligenceportraitIndicateRegard; -@property (nonatomic, strong) UIImageView *vsIndicateRegard; -@property (nonatomic, strong) UIImageView *deficitBWSttessBackgroundIndicateRegard; -@property (nonatomic, strong) UIImageView *disappointedBWSttessBackgroundIndicateRegard; -@property (nonatomic, strong) UILabel *deficitBWSttessSequencignation; -@property (nonatomic, strong) UILabel *disappointedBWSttessSequencignation; -@property (nonatomic, strong) UIButton *concludeBtuton; - -@end - -@implementation XCombatellegCombatFinishRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backgroundImageView]; - [self addSubview:self.titleLabel]; - [self addSubview:self.deficitIntelligenceportraitIndicateRegard]; - [self addSubview:self.disappointedIntelligenceportraitIndicateRegard]; - [self addSubview:self.vsIndicateRegard]; - [self addSubview:self.deficitBWSttessBackgroundIndicateRegard]; - [self addSubview:self.disappointedBWSttessBackgroundIndicateRegard]; - [self addSubview:self.deficitBWSttessSequencignation]; - [self addSubview:self.disappointedBWSttessSequencignation]; - [self addSubview:self.concludeBtuton]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(300); - make.height.mas_equalTo(324); - make.bottom.mas_equalTo(self.backgroundImageView.mas_bottom); - }]; - [self.backgroundImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(0); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self.backgroundImageView).mas_offset(82); - make.height.mas_equalTo(21); - }]; - [self.deficitIntelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(52); - make.width.height.mas_equalTo(80); - make.left.mas_equalTo(24); - }]; - [self.vsIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.centerY.mas_equalTo(self.deficitIntelligenceportraitIndicateRegard); - make.width.mas_equalTo(64); - make.height.mas_equalTo(74); - }]; - [self.disappointedIntelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.deficitIntelligenceportraitIndicateRegard); - make.width.height.mas_equalTo(80); - make.right.mas_equalTo(-24); - }]; - [self.deficitBWSttessBackgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.deficitIntelligenceportraitIndicateRegard.mas_bottom).mas_offset(6); - make.height.mas_equalTo(26); - make.width.mas_equalTo(110); - make.centerX.mas_equalTo(self.deficitIntelligenceportraitIndicateRegard); - }]; - [self.disappointedBWSttessBackgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.deficitBWSttessBackgroundIndicateRegard); - make.height.mas_equalTo(26); - make.width.mas_equalTo(110); - make.centerX.mas_equalTo(self.disappointedIntelligenceportraitIndicateRegard); - }]; - [self.deficitBWSttessSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.centerY.mas_equalTo(self.deficitBWSttessBackgroundIndicateRegard); - }]; - [self.disappointedBWSttessSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.centerY.mas_equalTo(self.disappointedBWSttessBackgroundIndicateRegard); - }]; - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.top.mas_equalTo(self.backgroundImageView); - make.width.height.mas_equalTo(32); - }]; -} - -#pragma mark - Event Response -- (void)onConcludeBtutonTicktack:(UIButton *)button { - [MKJPopup dismiss]; -} - -- (void)setData:(ThroughoutChamberCombatFasciaboardMatrix *)data { - self.deficitBWSttessSequencignation.text = [NSString stringWithFormat:@"%lld", data.cAmount]; - self.disappointedBWSttessSequencignation.text = [NSString stringWithFormat:@"%lld", data.aAmount]; - self.deficitIntelligenceportraitIndicateRegard.imageUrl = data.cAvatar; - self.disappointedIntelligenceportraitIndicateRegard.imageUrl = data.aAvatar; -} - -#pragma mark - Getters And Setters -- (UIImageView *)backgroundImageView { - if (!_backgroundImageView) { - _backgroundImageView = [[UIImageView alloc] init]; - _backgroundImageView.image = [UIImage imageNamed:@"yumi_anchorPK_invite_background"]; - } - return _backgroundImageView; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Anchor_PK_Finish_View_0"); - _titleLabel.textColor = [UIColor whiteColor]; - _titleLabel.font = [UIFont systemFontOfSize:15]; - } - return _titleLabel; -} - -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_concludeBtuton addTarget:self action:@selector(onConcludeBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - [_concludeBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_anchorPk_result_close"] forState:UIControlStateNormal]; - } - return _concludeBtuton; -} - -- (NetIndicateRegard *)deficitIntelligenceportraitIndicateRegard { - if (!_deficitIntelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _deficitIntelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _deficitIntelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _deficitIntelligenceportraitIndicateRegard.layer.cornerRadius = 80 / 2; - _deficitIntelligenceportraitIndicateRegard.layer.borderWidth = 2; - _deficitIntelligenceportraitIndicateRegard.layer.borderColor = UIColorFromRGB(0xFE6464).CGColor; - } - return _deficitIntelligenceportraitIndicateRegard; -} - -- (NetIndicateRegard *)disappointedIntelligenceportraitIndicateRegard { - if (!_disappointedIntelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _disappointedIntelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _disappointedIntelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _disappointedIntelligenceportraitIndicateRegard.layer.cornerRadius = 80 / 2; - _disappointedIntelligenceportraitIndicateRegard.layer.borderWidth = 2; - _disappointedIntelligenceportraitIndicateRegard.layer.borderColor = UIColorFromRGB(0x3794FE).CGColor; - } - return _disappointedIntelligenceportraitIndicateRegard; -} - -- (UIImageView *)deficitBWSttessBackgroundIndicateRegard { - if (!_deficitBWSttessBackgroundIndicateRegard) { - _deficitBWSttessBackgroundIndicateRegard = [[UIImageView alloc] init]; - _deficitBWSttessBackgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_anchorPK_result_redValue_background"]; - } - return _deficitBWSttessBackgroundIndicateRegard; -} - -- (UIImageView *)disappointedBWSttessBackgroundIndicateRegard { - if (!_disappointedBWSttessBackgroundIndicateRegard) { - _disappointedBWSttessBackgroundIndicateRegard = [[UIImageView alloc] init]; - _disappointedBWSttessBackgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_anchorPK_result_blueValue_background"]; - } - return _disappointedBWSttessBackgroundIndicateRegard; -} - -- (UILabel *)deficitBWSttessSequencignation { - if (!_deficitBWSttessSequencignation) { - _deficitBWSttessSequencignation = [[UILabel alloc] init]; - _deficitBWSttessSequencignation.font = [UIFont systemFontOfSize:12]; - _deficitBWSttessSequencignation.textColor = UIColorFromRGB(0xFF0000); - _deficitBWSttessSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _deficitBWSttessSequencignation; -} - -- (UILabel *)disappointedBWSttessSequencignation { - if (!_disappointedBWSttessSequencignation) { - _disappointedBWSttessSequencignation = [[UILabel alloc] init]; - _disappointedBWSttessSequencignation.font = [UIFont systemFontOfSize:12]; - _disappointedBWSttessSequencignation.textColor = UIColorFromRGB(0x0060D1); - _disappointedBWSttessSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _disappointedBWSttessSequencignation; -} - -- (UIImageView *)vsIndicateRegard { - if (!_vsIndicateRegard) { - _vsIndicateRegard = [[UIImageView alloc] init]; - _vsIndicateRegard.image = [UIImage imageNamed:@"yumi_anchorPk_panel_vs"]; - } - return _vsIndicateRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatPreadominantRegard.h b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatPreadominantRegard.h deleted file mode 100644 index 6527de2a..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatPreadominantRegard.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMAnchorPKRuleView.h -// YUMI -// -// Created by YUMI on 2022/4/8. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface XCombatellegCombatPreadominantRegard : UIView - -@property (nonatomic, copy) NSString *preadominantBWSttr; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatPreadominantRegard.m b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatPreadominantRegard.m deleted file mode 100644 index ede109bd..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegCombatPreadominantRegard.m +++ /dev/null @@ -1,120 +0,0 @@ -// -// YMAnchorPKRuleView.m -// YUMI -// -// Created by YUMI on 2022/4/8. -// - -#import "XCombatellegCombatPreadominantRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "MKJPopup.h" -#import "UIImage+Utils.h" - -@interface XCombatellegCombatPreadominantRegard () -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UIImageView *backgroundImageView; -@property (nonatomic, strong) UITextView *preadominantEssayRegard; -@property (nonatomic, strong) UIButton *concludeBtuton; - -@end - - -@implementation XCombatellegCombatPreadominantRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backgroundImageView]; - [self addSubview:self.titleLabel]; - [self addSubview:self.preadominantEssayRegard]; - [self addSubview:self.concludeBtuton]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(300); - make.height.mas_equalTo(324); - make.bottom.mas_equalTo(self.backgroundImageView.mas_bottom); - }]; - [self.backgroundImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(0); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self.backgroundImageView).mas_offset(82); - make.height.mas_equalTo(21); - }]; - [self.preadominantEssayRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(30); - make.left.mas_equalTo(18); - make.right.mas_equalTo(-18); - make.bottom.mas_equalTo(-20); - }]; - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.top.mas_equalTo(self.backgroundImageView); - make.width.height.mas_equalTo(32); - }]; -} - -#pragma mark - Event Response -- (void)onConcludeBtutonTicktack:(UIButton *)button { - [MKJPopup dismiss]; -} - -- (void)setPreadominantBWSttr:(NSString *)preadominantBWSttr { - if ([preadominantBWSttr containsString:@"\\n"]) { - preadominantBWSttr = [preadominantBWSttr stringByReplacingOccurrencesOfString:@"\\n" withString:@"\n"]; - } - self.preadominantEssayRegard.text = preadominantBWSttr; -} - -#pragma mark - Getters And Setters -- (UIImageView *)backgroundImageView { - if (!_backgroundImageView) { - _backgroundImageView = [[UIImageView alloc] init]; - _backgroundImageView.image = [UIImage imageNamed:@"yumi_anchorPK_invite_background"]; - } - return _backgroundImageView; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Anchor_PK_Rule_View_0"); - _titleLabel.textColor = [UIColor whiteColor]; - _titleLabel.font = [UIFont systemFontOfSize:15]; - } - return _titleLabel; -} - -- (UITextView *)preadominantEssayRegard { - if (!_preadominantEssayRegard) { - _preadominantEssayRegard = [[UITextView alloc] init]; - _preadominantEssayRegard.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _preadominantEssayRegard.backgroundColor = [UIColor clearColor]; - _preadominantEssayRegard.font = [UIFont systemFontOfSize:12]; - _preadominantEssayRegard.scrollEnabled = NO; - _preadominantEssayRegard.editable = NO; - _preadominantEssayRegard.text = @""; - } - return _preadominantEssayRegard; -} - -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_concludeBtuton addTarget:self action:@selector(onConcludeBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - [_concludeBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_anchorPk_result_close"] forState:UIControlStateNormal]; - } - return _concludeBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegPkFasciaboardRegard.h b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegPkFasciaboardRegard.h deleted file mode 100644 index 34919aa0..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegPkFasciaboardRegard.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// YMAnchorPkPanelView.h -// YUMI -// -// Created by YUMI on 2022/4/11. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class XCombatellegPkFasciaboardRegard, ThroughoutChamberCombatFasciaboardMatrix, AttachmentMatrix; -@protocol XCombatellegPkPanelRegardRepresendtation - -- (void)xCombatellegCombatFasciaboardRegard:(XCombatellegPkFasciaboardRegard *)view EvidenceConsumerSolitaire:(NSString *)uid; - -- (void)xCombatellegCombatFasciaboardRegard:(XCombatellegPkFasciaboardRegard *)view onlookRoom:(NSString *)roomUid; -- (void)xCombatellegCombatFasciaboardRegardConsidertowardsionAccomplishment; -- (void)xCombatellegCombatFasciaboardRegardPenaltyComputtowardsionPubescenceConclude; - -@end - -@interface XCombatellegPkFasciaboardRegard : UIView - -- (void)unfoildComputtowardsiondownAboutIntrtowardsemporal:(long)time; -@property (nonatomic,strong, nullable) ThroughoutChamberCombatFasciaboardMatrix *combatFasciadirectorateAbstract; -@property (nonatomic,weak) id delegate; -- (void)replacementThroughoutCombatRegardTowardsoloudspeaker; -- (void)refurbishOtherLoudspeakerPosition:(AttachmentMatrix *)attachment; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegPkFasciaboardRegard.m b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegPkFasciaboardRegard.m deleted file mode 100644 index 4fedbe44..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegPkFasciaboardRegard.m +++ /dev/null @@ -1,783 +0,0 @@ -// -// YMAnchorPkPanelView.m -// YUMI -// -// Created by YUMI on 2022/4/11. -// - -#import "XCombatellegPkFasciaboardRegard.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "YUMIMacroUitls.h" -#import "UIImage+Utils.h" -#import "UIButton+EnlargeTouchArea.h" -#import "Intratemporalstamp.h" -#import "Api+UserCard.h" -#import "XNDJTBWGLoadingTool.h" -#import "AccountAbstractStorage.h" -#import "NSArray+Safe.h" -#import "RealtimackExecutive.h" -#import "ConsumerAbstractMatrix.h" -#import "ThroughoutChamberCombatFasciaboardMatrix.h" -#import "AttachmentMatrix.h" -#import "XCombatellegCombatFasciaboardConsumerRegard.h" -#import "Api+AnchorPk.h" - -@interface XCombatellegPkFasciaboardRegard () - -@property (nonatomic, strong) UIImageView *encourageIndicateRegard; -#pragma mark - 规则的view -@property (nonatomic, strong) UIImageView *deficitSatelliteIndicateRegard; -@property (nonatomic, strong) UIImageView *disappointedSatelliteIndicateRegard; -@property (nonatomic, strong) UILabel *combateDeclareSequencignation; -@property (nonatomic, strong) UILabel *intratemporalSequencignation; -@property (nonatomic,strong) UIStackView *stackView; -#pragma mark -进度条内容 -@property (nonatomic, strong) UIView *progressView; -@property (nonatomic, strong) UIView *growthSatisfperformanceRegard; -@property (nonatomic, strong) UIImageView *deficitComputationIndicateRegard; -@property (nonatomic, strong) UILabel *deficitComputationSequencignation; -@property (nonatomic, strong) UIImageView *disappointedComputationIndicateRegard; -@property (nonatomic, strong) UILabel *disappointedComputationSequencignation; -@property (strong, nonatomic) SVGAParser *anatomiser; -@property (nonatomic, strong) SVGAImageView *svgExhibitionRegard; -#pragma mark - 队伍的队友的view -@property (nonatomic,strong) UIStackView *deficitEfficacyHierarchyRegard; -@property (nonatomic,strong) UIStackView *disappointedEfficacyHierarchyRegard; -@property (strong, nonatomic) dispatch_source_t timer; -@property (nonatomic, strong) UIImageView *deficitConsequentIndicateRegard; -@property (nonatomic, strong) NetIndicateRegard *separateIntelligenceportraitIndicateRegard; -@property (nonatomic, strong) UIImageView *separateConsequentIndicateRegard; -@property (nonatomic, strong) UIStackView *deficitMonicerHierarchyRegard; -@property (nonatomic, strong) UILabel *deficitMonicerSequencignation; -@property (nonatomic, strong) UIButton *considerationBtuton; -@property (nonatomic, strong) UIStackView *separateHierarchyRegard; -@property (nonatomic, strong) UILabel *separateMonicerSequencignation; -@property (nonatomic, strong) UIButton *followBtuton; -@property (nonatomic, strong) UIButton *separateLoudspeakerBtuton; -@property (nonatomic, assign) BOOL isPossessExhibit; - -@end - -@implementation XCombatellegPkFasciaboardRegard - -#pragma mark - life cycle - -- (void)dealloc { - NSLog(@"销毁了"); - [self replacementThroughoutCombatRegardTowardsoloudspeaker]; -} - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Public Method -- (void)replacementThroughoutCombatRegardTowardsoloudspeaker { - if (self.timer) { - dispatch_source_cancel(self.timer); - self.timer = nil; - } - self.combatFasciadirectorateAbstract = nil; -} - -- (void)refurbishOtherLoudspeakerPosition:(AttachmentMatrix *)attachment { - NSNumber *micStatus = attachment.data[@"aMicStatus"]; - NSNumber *aUid = attachment.data[@"aUid"]; - self.separateLoudspeakerBtuton.selected = !micStatus.boolValue; - [[RealtimackExecutive instance] muteSole:!micStatus.boolValue userId:[NSString stringWithFormat:@"%@", aUid]]; - if (!micStatus.boolValue) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Anchor_Pk_Panel_View_0")]; - self.separateLoudspeakerBtuton.hidden = NO; - } else { - self.separateLoudspeakerBtuton.hidden = YES; - } - if ([self.combatFasciadirectorateAbstract.cUid isEqualToString:[AccountAbstractStorage instance].acquireCid]) { - self.separateLoudspeakerBtuton.hidden = NO; - } -} - -- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { - UIView *view = [super hitTest:point withEvent:event]; - return view == self?nil:view; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.encourageIndicateRegard]; - [self.encourageIndicateRegard addSubview:self.stackView]; - [self.stackView addArrangedSubview:self.combateDeclareSequencignation]; - [self.stackView addArrangedSubview:self.intratemporalSequencignation]; - - [self.encourageIndicateRegard addSubview:self.progressView]; - [self.progressView addSubview:self.growthSatisfperformanceRegard]; - [self.growthSatisfperformanceRegard addSubview:self.deficitComputationIndicateRegard]; - [self.growthSatisfperformanceRegard addSubview:self.disappointedComputationIndicateRegard]; - [self.growthSatisfperformanceRegard addSubview:self.deficitSatelliteIndicateRegard]; - [self.growthSatisfperformanceRegard addSubview:self.disappointedSatelliteIndicateRegard]; - [self.growthSatisfperformanceRegard addSubview:self.svgExhibitionRegard]; - - [self.encourageIndicateRegard addSubview:self.deficitEfficacyHierarchyRegard]; - [self.encourageIndicateRegard addSubview:self.disappointedEfficacyHierarchyRegard]; - [self.growthSatisfperformanceRegard addSubview:self.deficitComputationSequencignation]; - [self.growthSatisfperformanceRegard addSubview:self.disappointedComputationSequencignation]; - - [self addSubview:self.deficitConsequentIndicateRegard]; - [self addSubview:self.separateIntelligenceportraitIndicateRegard]; - [self addSubview:self.separateConsequentIndicateRegard]; - [self addSubview:self.deficitMonicerHierarchyRegard]; - [self addSubview:self.separateLoudspeakerBtuton]; - [self.deficitMonicerHierarchyRegard addArrangedSubview:self.deficitMonicerSequencignation]; - [self.deficitMonicerHierarchyRegard addArrangedSubview:self.considerationBtuton]; - [self addSubview:self.separateHierarchyRegard]; - [self.separateHierarchyRegard addArrangedSubview:self.separateMonicerSequencignation]; - [self.separateHierarchyRegard addArrangedSubview:self.followBtuton]; - [self initConsumerChildLys]; - NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/anchorPK_progress.svga", API_Image_URL]; - [self.anatomiser parseWithURL:[NSURL URLWithString:anatomiser1Name] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { - self.svgExhibitionRegard.loops = INT_MAX; - self.svgExhibitionRegard.clearsAfterStop = NO; - self.svgExhibitionRegard.videoItem = videoItem; - [self.svgExhibitionRegard startAnimation]; - } failureBlock:^(NSError * _Nonnull error) { - - }]; -} - -- (void)initConsumerChildLys { - for (int i = 0; i < 3; i++) { - XCombatellegCombatFasciaboardConsumerRegard * consumerRegard = [[XCombatellegCombatFasciaboardConsumerRegard alloc] init]; - consumerRegard.tag = (1000 + i); - consumerRegard.type = KellegCombatPanelConsumerGenre_Red_Contribute; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsConsumerRecognition:)]; - [consumerRegard addGestureRecognizer:tap]; - [self.deficitEfficacyHierarchyRegard addArrangedSubview:consumerRegard]; - } - - for (int i = 0; i < 3; i++) { - XCombatellegCombatFasciaboardConsumerRegard * consumerRegard = [[XCombatellegCombatFasciaboardConsumerRegard alloc] init]; - consumerRegard.tag = (1000 + i); - consumerRegard.type = KellegCombatPanelConsumerGenre_Blue_Contribute; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsConsumerRecognition:)]; - [consumerRegard addGestureRecognizer:tap]; - [self.disappointedEfficacyHierarchyRegard addArrangedSubview:consumerRegard]; - } -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth); - make.height.mas_equalTo(330 - 87); - }]; - - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(-16); - make.width.mas_equalTo(284); - make.height.mas_equalTo(84); - make.centerX.mas_equalTo(self); - }]; - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.encourageIndicateRegard); - make.centerX.mas_equalTo(self); - make.height.mas_equalTo(21); - }]; - - [self.deficitSatelliteIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.encourageIndicateRegard).mas_offset(15); - make.left.mas_equalTo(self.encourageIndicateRegard.mas_left).mas_offset(-30); - make.width.height.mas_equalTo(26); - }]; - [self.disappointedSatelliteIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.deficitSatelliteIndicateRegard); - make.left.mas_equalTo(self.encourageIndicateRegard.mas_right).mas_offset(4); - make.width.height.mas_equalTo(26); - }]; - - - [self.progressView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.encourageIndicateRegard); - make.width.mas_equalTo(305); - make.height.mas_equalTo(16); - make.centerY.mas_equalTo(self.deficitSatelliteIndicateRegard); - }]; - - [self.growthSatisfperformanceRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.progressView); - }]; - - [self.deficitComputationIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(0); - make.height.mas_equalTo(16); - make.top.mas_equalTo(0); - make.right.mas_equalTo(self.disappointedComputationIndicateRegard.mas_left); - }]; - - [self.deficitComputationSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.growthSatisfperformanceRegard.mas_left).offset(17); - make.centerY.mas_equalTo(self.growthSatisfperformanceRegard); - }]; - - [self.disappointedComputationIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(0); - make.height.mas_equalTo(self.deficitComputationIndicateRegard); - make.centerY.mas_equalTo(self.deficitComputationIndicateRegard); - make.width.mas_equalTo(305 * 0.5); - }]; - - [self.disappointedComputationSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.growthSatisfperformanceRegard.mas_right).offset(-17); - make.centerY.mas_equalTo(self.growthSatisfperformanceRegard); - }]; - - [self.svgExhibitionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.disappointedComputationIndicateRegard.mas_left); - make.centerY.mas_equalTo(self.deficitComputationIndicateRegard); - make.height.mas_equalTo(26); - make.width.mas_equalTo(25); - }]; - - [self.deficitEfficacyHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.encourageIndicateRegard); - make.left.mas_equalTo(self.encourageIndicateRegard).mas_offset(12); - make.height.mas_equalTo(42); - }]; - [self.disappointedEfficacyHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(self.deficitEfficacyHierarchyRegard); - make.right.mas_equalTo(self.encourageIndicateRegard).mas_offset(-12); - make.bottom.mas_equalTo(self.deficitEfficacyHierarchyRegard); - }]; - - [self.deficitConsequentIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo((KScreenWidth - 64) * 0.5 - 26 - 85 * 0.5 - 66 * 0.5); - make.bottom.mas_equalTo(self.separateConsequentIndicateRegard); - make.width.mas_equalTo(66); - make.height.mas_equalTo(48); - }]; - - - [self.separateIntelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo((KScreenWidth + 64) * 0.5 + 26 - 2.5); - make.top.mas_equalTo(0); - make.width.height.mas_equalTo(90); - }]; - [self.separateConsequentIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.separateIntelligenceportraitIndicateRegard); - make.bottom.mas_equalTo(self.separateIntelligenceportraitIndicateRegard).mas_offset(12); - make.width.mas_equalTo(66); - make.height.mas_equalTo(48); - }]; - [self.separateLoudspeakerBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.right.mas_equalTo(self.separateIntelligenceportraitIndicateRegard); - make.width.height.mas_equalTo(24); - }]; - [self.deficitMonicerHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.separateHierarchyRegard); - make.centerX.mas_equalTo(self.deficitConsequentIndicateRegard); - make.height.mas_equalTo(20); - }]; - [self.considerationBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(30, 20)); - }]; - - [self.separateHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.separateIntelligenceportraitIndicateRegard.mas_bottom).mas_offset(17); - make.centerX.mas_equalTo(self.separateIntelligenceportraitIndicateRegard); - make.height.mas_equalTo(20); - }]; - [self.followBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(30, 20)); - }]; -} - -#pragma mark - 倒计时 -- (void)unfoildComputtowardsiondownAboutIntrtowardsemporal:(long)time { - __block long tempTime = time; - if (self.timer == nil) { - @kWeakify(self); - dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); - self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); - dispatch_source_set_timer(self.timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); - dispatch_source_set_event_handler(self.timer, ^{ - @kStrongify(self); - if(tempTime <= 0){ - dispatch_source_cancel(self.timer); - self.timer = nil; - dispatch_async(dispatch_get_main_queue(), ^{ - if (self.combatFasciadirectorateAbstract.pkState == ThroughoutChamberPkDeclareGenrePking) { - self.intratemporalSequencignation.text = YMLocalizedString(@"YUMI_Anchor_Pk_Panel_View_1"); - } else { - self.intratemporalSequencignation.text = @"00:00"; - if (self.delegate && [self.delegate respondsToSelector:@selector(xCombatellegCombatFasciaboardRegardPenaltyComputtowardsionPubescenceConclude)]) { - [self.delegate xCombatellegCombatFasciaboardRegardPenaltyComputtowardsionPubescenceConclude]; - } - } - }); - } else { - dispatch_async(dispatch_get_main_queue(), ^{ - - [self KellegCombatDeficituceddownUnfoild:tempTime]; - }); - tempTime--; - } - }); - dispatch_resume(self.timer); - } -} - -- (void)KellegCombatDeficituceddownUnfoild:(NSInteger)time { - NSInteger minute = time / 60; - NSInteger second = (time % 60); - NSInteger hour = time/3600; - NSString *timeStr; - if (hour > 0) { - minute = minute % 60; - timeStr = [NSString stringWithFormat:@"%02zd:%02zd:%02zd", hour, minute, second]; - } else { - timeStr = [NSString stringWithFormat:@"%02zd:%02zd", minute, second]; - } - self.intratemporalSequencignation.text = timeStr; - if (time <= 30) { - self.intratemporalSequencignation.textColor = UIColorFromRGB(0xFF87A1); - } else { - self.intratemporalSequencignation.textColor = UIColorFromRGB(0xFFFFFF); - } -} - -- (void)betowardsConsumerRecognition:(UITapGestureRecognizer *)tap { - XCombatellegCombatFasciaboardConsumerRegard * consumerRegard= (XCombatellegCombatFasciaboardConsumerRegard *)tap.view; - if (consumerRegard.fasciadirectorateAbstract && consumerRegard.fasciadirectorateAbstract.uid.length > 0 && self.delegate && [self.delegate respondsToSelector:@selector(xCombatellegCombatFasciaboardRegard:EvidenceConsumerSolitaire:)]) { - [self.delegate xCombatellegCombatFasciaboardRegard:self EvidenceConsumerSolitaire:consumerRegard.fasciadirectorateAbstract.uid]; - } -} - -- (void)onBWSttralongBtutonTicktack:(UIButton *)button { - if (self.delegate && [self.delegate respondsToSelector:@selector(xCombatellegCombatFasciaboardRegard:onlookRoom:)]) { - [self.delegate xCombatellegCombatFasciaboardRegard:self onlookRoom:self.combatFasciadirectorateAbstract.aUid]; - } -} - -- (void)onConsidertowardsionBtutonTicktack:(UIButton *)button { - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - NSString * ticket = [[AccountAbstractStorage instance] acquireTicket]; - [Api considertowardsionImplementtowardsion:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - self.considerationBtuton.hidden = YES; - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Anchor_Pk_Panel_View_2")]; - if (self.delegate && [self.delegate respondsToSelector:@selector(xCombatellegCombatFasciaboardRegardConsidertowardsionAccomplishment)]) { - [self.delegate xCombatellegCombatFasciaboardRegardConsidertowardsionAccomplishment]; - } - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } uid:uid likedUid:self.combatFasciadirectorateAbstract.cUid ticket:ticket type:@"1"]; -} - -- (void)onExhibitConsumerSolitaire:(UITapGestureRecognizer *)ges { - if (self.delegate && [self.delegate respondsToSelector:@selector(xCombatellegCombatFasciaboardRegard:EvidenceConsumerSolitaire:)]) { - [self.delegate xCombatellegCombatFasciaboardRegard:self EvidenceConsumerSolitaire:self.combatFasciadirectorateAbstract.aUid]; - } -} - -#pragma mark - getters and setters -- (void)setCombatFasciadirectorateAbstract:(ThroughoutChamberCombatFasciaboardMatrix *)combatFasciadirectorateAbstract { - _combatFasciadirectorateAbstract = combatFasciadirectorateAbstract; - if (_combatFasciadirectorateAbstract) { - if (!self.isPossessExhibit) { - self.isPossessExhibit = YES; - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - if ([uid isEqualToString:combatFasciadirectorateAbstract.cUid]) { - self.considerationBtuton.hidden = YES; - } else if(combatFasciadirectorateAbstract.cUid){ - [Api considertowardsionPositionImplementtowardsion:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - BOOL isLike = ((NSNumber *)data.data).boolValue; - self.considerationBtuton.hidden = isLike; - } uid:uid isLikeUid:combatFasciadirectorateAbstract.cUid]; - } - } - if (combatFasciadirectorateAbstract.pkState == ThroughoutChamberPkDeclareGenrePenalty) { - self.combateDeclareSequencignation.text = YMLocalizedString(@"YUMI_Anchor_Pk_Panel_View_3"); - if (self.timer) { - dispatch_source_cancel(self.timer); - self.timer = nil; - } - [Intratemporalstamp acquireInternetEngagementAboutAccomplishment:^(NSTimeInterval timeInterval) { - timeInterval = timeInterval * 1000; - long aTime = (combatFasciadirectorateAbstract.penaltyEndTime - timeInterval) / 1000; - [self unfoildComputtowardsiondownAboutIntrtowardsemporal:aTime]; - } failure:^(NSError * _Nonnull error) { - NSDate *datenow = [NSDate date]; - long time2 = (long)([datenow timeIntervalSince1970]*1000); - long aTime = (combatFasciadirectorateAbstract.penaltyEndTime - time2) / 1000; - [self unfoildComputtowardsiondownAboutIntrtowardsemporal:aTime]; - }]; - self.deficitConsequentIndicateRegard.hidden = NO; - self.separateConsequentIndicateRegard.hidden = NO; - if ([combatFasciadirectorateAbstract.winUid isEqualToString:combatFasciadirectorateAbstract.cUid]) { - self.deficitConsequentIndicateRegard.image = [UIImage imageNamed:@"yumi_anchorPk_micro_result_win"]; - self.separateConsequentIndicateRegard.image = [UIImage imageNamed:@"yumi_anchorPk_micro_result_fail"]; - } else if ([combatFasciadirectorateAbstract.winUid isEqualToString:combatFasciadirectorateAbstract.aUid]) { - self.deficitConsequentIndicateRegard.image = [UIImage imageNamed:@"yumi_anchorPk_micro_result_fail"]; - self.separateConsequentIndicateRegard.image = [UIImage imageNamed:@"yumi_anchorPk_micro_result_win"]; - } else { - self.deficitConsequentIndicateRegard.image = [UIImage imageNamed:@"yumi_anchorPk_micro_result_tie"]; - self.separateConsequentIndicateRegard.image = [UIImage imageNamed:@"yumi_anchorPk_micro_result_tie"]; - } - } else { - self.deficitConsequentIndicateRegard.hidden = YES; - self.separateConsequentIndicateRegard.hidden = YES; - self.combateDeclareSequencignation.text = @"PK"; - [Intratemporalstamp acquireInternetEngagementAboutAccomplishment:^(NSTimeInterval timeInterval) { - timeInterval = timeInterval * 1000; - long aTime = (combatFasciadirectorateAbstract.endTime - timeInterval) / 1000; - [self unfoildComputtowardsiondownAboutIntrtowardsemporal:aTime]; - } failure:^(NSError * _Nonnull error) { - NSDate *datenow = [NSDate date]; - long time2 = (long)([datenow timeIntervalSince1970]*1000); - long aTime = (combatFasciadirectorateAbstract.endTime - time2) / 1000; - [self unfoildComputtowardsiondownAboutIntrtowardsemporal:aTime]; - }]; - } - if (_combatFasciadirectorateAbstract.cNick.length > 7) { - _combatFasciadirectorateAbstract.cNick = [NSString stringWithFormat:@"%@…", [_combatFasciadirectorateAbstract.cNick substringToIndex:7]]; - } - - if (_combatFasciadirectorateAbstract.aNick.length > 7) { - _combatFasciadirectorateAbstract.aNick = [NSString stringWithFormat:@"%@…", [_combatFasciadirectorateAbstract.aNick substringToIndex:7]]; - } - - self.deficitComputationSequencignation.text = [NSString stringWithFormat:@"%lld", _combatFasciadirectorateAbstract.cAmount]; - self.disappointedComputationSequencignation.text = [NSString stringWithFormat:@"%lld", _combatFasciadirectorateAbstract.aAmount]; - for (int i = 0; i<_combatFasciadirectorateAbstract.csRank.count; i++) { - ThroughoutChamberPkRateMatrix * rankModel = [_combatFasciadirectorateAbstract.csRank secureGroalTowardsIndictowardsrix1:i]; - if (i >= self.deficitEfficacyHierarchyRegard.subviews.count) { - break; - } - XCombatellegCombatFasciaboardConsumerRegard *consumerRegard = self.deficitEfficacyHierarchyRegard.subviews[i]; - consumerRegard.fasciadirectorateAbstract = rankModel; - } - - for (int i = 0; i<_combatFasciadirectorateAbstract.asRank.count; i++) { - ThroughoutChamberPkRateMatrix * rankModel = [_combatFasciadirectorateAbstract.asRank secureGroalTowardsIndictowardsrix1:i]; - if (i >= self.disappointedEfficacyHierarchyRegard.subviews.count) { - break; - } - XCombatellegCombatFasciaboardConsumerRegard *consumerRegard = self.disappointedEfficacyHierarchyRegard.subviews[i]; - consumerRegard.fasciadirectorateAbstract = rankModel; - } - - if (_combatFasciadirectorateAbstract.aPercent > 1) { - _combatFasciadirectorateAbstract.aPercent = 1; - } - CGFloat width = 305 * _combatFasciadirectorateAbstract.aPercent; - if (width <= 6.5) { - width = 6.5; - } else if (width >= 305 - 5.5) { - width = 305 - 5.5; - } - [self.disappointedComputationIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(width); - }]; - self.separateIntelligenceportraitIndicateRegard.imageUrl = combatFasciadirectorateAbstract.aAvatar; - self.separateMonicerSequencignation.text = combatFasciadirectorateAbstract.aNick; - self.deficitMonicerSequencignation.text = combatFasciadirectorateAbstract.cNick; - self.followBtuton.hidden = [combatFasciadirectorateAbstract.cUid isEqualToString:[AccountAbstractStorage instance].acquireCid]; - if (combatFasciadirectorateAbstract.aMicStatus == KellegCombatOtherLoudspeakerPosition_Close) { - self.separateLoudspeakerBtuton.hidden = NO; - } else { - self.separateLoudspeakerBtuton.hidden = ![combatFasciadirectorateAbstract.cUid isEqualToString:[AccountAbstractStorage instance].acquireCid]; - } - self.separateLoudspeakerBtuton.selected = combatFasciadirectorateAbstract.aMicStatus == KellegCombatOtherLoudspeakerPosition_Close; - [[RealtimackExecutive instance] muteSole:combatFasciadirectorateAbstract.aMicStatus == KellegCombatOtherLoudspeakerPosition_Close userId:combatFasciadirectorateAbstract.aUid]; - } else { - self.deficitComputationSequencignation.text = @"0"; - self.disappointedComputationSequencignation.text = @"0"; - for (int i = 0; i - -NS_ASSUME_NONNULL_BEGIN - -@interface XCombatellegRandomCombatPreadominantRegard : UIView -@property (nonatomic,copy) NSString *preadominantBWSttr; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegRandomCombatPreadominantRegard.m b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegRandomCombatPreadominantRegard.m deleted file mode 100644 index a1ebd1f8..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XCombatellegRandomCombatPreadominantRegard.m +++ /dev/null @@ -1,266 +0,0 @@ -// -// YMAnchorRandomPKRuleView.m -// YUMI -// -// Created by YUMI on 2022/12/23. -// - -#import "XCombatellegRandomCombatPreadominantRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "MKJPopup.h" -#import "UIImage+Utils.h" - -@interface XCombatellegRandomCombatPreadominantRegard () -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UIImageView *backgroundImageView; - -@property (nonatomic,strong) UIScrollView *scrollView; -@property (nonatomic,strong) UILabel *preadominantSequencignation; -@property (nonatomic,strong) UILabel *arbitrarySequencignation; -@property (nonatomic,strong) UIImageView *arbitraryIndicateRegard; -@property (nonatomic,strong) UILabel *arbitrarySatisfperformanceGbs; - -@property (nonatomic,strong) UILabel *centiretyforSequencignation; -@property (nonatomic,strong) UIImageView *centiretyforIndicateRegard; -@property (nonatomic,strong) UILabel *centiretyforSatisfperformanceGbs; -@property (nonatomic, strong) UIButton *concludeBtuton; - -@end - - -@implementation XCombatellegRandomCombatPreadominantRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backgroundImageView]; - [self addSubview:self.titleLabel]; - [self addSubview:self.concludeBtuton]; - [self.backgroundImageView addSubview:self.scrollView]; - - [self.scrollView addSubview:self.preadominantSequencignation]; - - [self.scrollView addSubview:self.arbitraryIndicateRegard]; - [self.scrollView addSubview:self.arbitrarySequencignation]; - [self.scrollView addSubview:self.arbitrarySatisfperformanceGbs]; - - [self.scrollView addSubview:self.centiretyforIndicateRegard]; - [self.scrollView addSubview:self.centiretyforSequencignation]; - [self.scrollView addSubview:self.centiretyforSatisfperformanceGbs]; - - -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(300); - make.height.mas_equalTo(324); - make.bottom.mas_equalTo(self.backgroundImageView.mas_bottom); - }]; - [self.backgroundImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(0); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self.backgroundImageView).mas_offset(82); - make.height.mas_equalTo(21); - }]; - - - [self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.backgroundImageView).offset(120); - make.left.right.mas_equalTo(self.backgroundImageView).inset(18); - make.bottom.mas_equalTo(self.backgroundImageView).offset(-15); - }]; - - [self.preadominantSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.scrollView); - make.left.right.mas_equalTo(self.backgroundImageView).inset(18); - }]; - - [self.arbitrarySequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.preadominantSequencignation.mas_bottom).offset(16); - make.centerX.mas_equalTo(self.scrollView); - }]; - - [self.arbitraryIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(88, 8)); - make.top.mas_equalTo(self.arbitrarySequencignation.mas_bottom).offset(-6); - make.centerX.mas_equalTo(self.arbitrarySequencignation); - }]; - - [self.arbitrarySatisfperformanceGbs mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backgroundImageView).inset(18); - make.top.mas_equalTo(self.arbitraryIndicateRegard.mas_bottom).offset(8); - }]; - - [self.centiretyforSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.arbitrarySatisfperformanceGbs.mas_bottom).offset(16); - make.centerX.mas_equalTo(self.scrollView); - }]; - - [self.centiretyforIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(88, 8)); - make.top.mas_equalTo(self.centiretyforSequencignation.mas_bottom).offset(-6); - make.centerX.mas_equalTo(self.centiretyforSequencignation); - }]; - - [self.centiretyforSatisfperformanceGbs mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backgroundImageView).inset(18); - make.top.mas_equalTo(self.centiretyforIndicateRegard.mas_bottom).offset(8); - }]; - - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.top.mas_equalTo(self.backgroundImageView); - make.width.height.mas_equalTo(32); - }]; -} - -#pragma mark - Event Response -- (void)onConcludeBtutonTicktack:(UIButton *)button { - [MKJPopup dismiss]; -} - -- (void)setPreadominantBWSttr:(NSString *)preadominantBWSttr { - if ([preadominantBWSttr containsString:@"\\n"]) { - preadominantBWSttr = [preadominantBWSttr stringByReplacingOccurrencesOfString:@"\\n" withString:@"\n"]; - } - NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; - paragraphStyle.lineSpacing = 5; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:preadominantBWSttr attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:[DJDKMIMOMColor mainEssayPrettify]}]; - [attribute addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, preadominantBWSttr.length)]; - self.preadominantSequencignation.attributedText = attribute; -CGSize size = [self.preadominantSequencignation sizeThatFits:CGSizeMake(300 -36, CGFLOAT_MAX)]; - self.scrollView.contentSize = CGSizeMake(0, size.height + 70 * 2 + 20); -} - -#pragma mark - Getters And Setters -- (UIImageView *)backgroundImageView { - if (!_backgroundImageView) { - _backgroundImageView = [[UIImageView alloc] init]; - _backgroundImageView.userInteractionEnabled = YES; - _backgroundImageView.image = [UIImage imageNamed:@"yumi_anchorPK_invite_background"]; - } - return _backgroundImageView; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Anchor_Random_PK_Rule_View_0"); - _titleLabel.textColor = [UIColor whiteColor]; - _titleLabel.font = [UIFont systemFontOfSize:15]; - } - return _titleLabel; -} - - -- (UIImageView *)arbitraryIndicateRegard { - if (!_arbitraryIndicateRegard) { - _arbitraryIndicateRegard = [[UIImageView alloc] init]; - _arbitraryIndicateRegard.userInteractionEnabled = YES; - _arbitraryIndicateRegard.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor colorAboutHexBWSttr:@"#1CD7FD"], [DJDKMIMOMColor colorAboutHexBWSttr:@"#9277FF"], [DJDKMIMOMColor colorAboutHexBWSttr:@"FF6BA3"]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)]; - _arbitraryIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _arbitraryIndicateRegard.layer.masksToBounds = YES; - _arbitraryIndicateRegard.layer.cornerRadius = 4; - } - return _arbitraryIndicateRegard; -} - -- (UILabel *)arbitrarySequencignation { - if (!_arbitrarySequencignation) { - _arbitrarySequencignation = [[UILabel alloc] init]; - _arbitrarySequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _arbitrarySequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _arbitrarySequencignation.text= @"随机PK"; - } - return _arbitrarySequencignation; -} - -- (UILabel *)preadominantSequencignation { - if (!_preadominantSequencignation) { - _preadominantSequencignation = [[UILabel alloc] init]; - _preadominantSequencignation.font = [UIFont systemFontOfSize:12]; - _preadominantSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _preadominantSequencignation.numberOfLines = 0; - } - return _preadominantSequencignation; -} - -- (UIScrollView *)scrollView { - if (!_scrollView) { - _scrollView = [[UIScrollView alloc] init]; - _scrollView.backgroundColor = [UIColor clearColor]; - _scrollView.showsHorizontalScrollIndicator = NO; - } - return _scrollView; -} - - -- (UILabel *)arbitrarySatisfperformanceGbs { - if (!_arbitrarySatisfperformanceGbs) { - _arbitrarySatisfperformanceGbs = [[UILabel alloc] init]; - NSString * title = YMLocalizedString(@"YUMI_Anchor_Random_PK_Rule_View_2"); - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:[DJDKMIMOMColor mainEssayPrettify]}]; - NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; - paragraphStyle.lineSpacing = 5; - [attribute addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, title.length)]; - _arbitrarySatisfperformanceGbs.attributedText = attribute; - _arbitrarySatisfperformanceGbs.numberOfLines = 0; - } - return _arbitrarySatisfperformanceGbs; -} - -- (UIImageView *)centiretyforIndicateRegard { - if (!_centiretyforIndicateRegard) { - _centiretyforIndicateRegard = [[UIImageView alloc] init]; - _centiretyforIndicateRegard.userInteractionEnabled = YES; - _centiretyforIndicateRegard.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor colorAboutHexBWSttr:@"#1CD7FD"], [DJDKMIMOMColor colorAboutHexBWSttr:@"#9277FF"], [DJDKMIMOMColor colorAboutHexBWSttr:@"FF6BA3"]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)]; - _centiretyforIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _centiretyforIndicateRegard.layer.masksToBounds = YES; - _centiretyforIndicateRegard.layer.cornerRadius = 4; - } - return _centiretyforIndicateRegard; -} - -- (UILabel *)centiretyforSequencignation { - if (!_centiretyforSequencignation) { - _centiretyforSequencignation = [[UILabel alloc] init]; - _centiretyforSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _centiretyforSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _centiretyforSequencignation.text= @"邀请PK"; - } - return _centiretyforSequencignation; -} - -- (UILabel *)centiretyforSatisfperformanceGbs { - if (!_centiretyforSatisfperformanceGbs) { - _centiretyforSatisfperformanceGbs = [[UILabel alloc] init]; - NSString * title = @"指定一个主播房主播,邀请其进行PK,对方接受后开启PK"; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:[DJDKMIMOMColor mainEssayPrettify]}]; - NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; - paragraphStyle.lineSpacing = 5; - [attribute addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, title.length)]; - _centiretyforSatisfperformanceGbs.attributedText = attribute; - _centiretyforSatisfperformanceGbs.numberOfLines = 0; - } - return _centiretyforSatisfperformanceGbs; -} - -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_concludeBtuton addTarget:self action:@selector(onConcludeBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - [_concludeBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_anchorPk_result_close"] forState:UIControlStateNormal]; - } - return _concludeBtuton; -} -@end diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKFinishView.h b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKFinishView.h new file mode 100644 index 00000000..fd9ca491 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKFinishView.h @@ -0,0 +1,19 @@ +// +// YMAnchorPKFinishView.h +// YUMI +// +// Created by YUMI on 2022/4/13. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class AcrossRoomPKPanelModel; +@interface XPAnchorPKFinishView : UIView + +@property (nonatomic, strong) AcrossRoomPKPanelModel *data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKFinishView.m b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKFinishView.m new file mode 100644 index 00000000..a311653b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKFinishView.m @@ -0,0 +1,236 @@ +// +// YMAnchorPKFinishView.m +// YUMI +// +// Created by YUMI on 2022/4/13. +// + +#import "XPAnchorPKFinishView.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "YUMIMacroUitls.h" +#import "UIImage+Utils.h" +#import "TTPopup.h" +///Model +#import "AcrossRoomPKPanelModel.h" + +@interface XPAnchorPKFinishView () + +///标题 +@property (nonatomic, strong) UILabel *titleLabel; +///背景 +@property (nonatomic, strong) UIImageView *backgroundImageView; +///我方头像 +@property (nonatomic, strong) NetImageView *redAvatarImageView; +///对方头像 +@property (nonatomic, strong) NetImageView *blueAvatarImageView; +///vs图标 +@property (nonatomic, strong) UIImageView *vsImageView; +///红方pk值背景 +@property (nonatomic, strong) UIImageView *redValueBgImageView; +///蓝方pk值背景 +@property (nonatomic, strong) UIImageView *blueValueBgImageView; +///红方PK值 +@property (nonatomic, strong) UILabel *redValueLabel; +///蓝方PK值 +@property (nonatomic, strong) UILabel *blueValueLabel; +///关闭 +@property (nonatomic, strong) UIButton *closeBtn; + +@end + +@implementation XPAnchorPKFinishView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backgroundImageView]; + [self addSubview:self.titleLabel]; + [self addSubview:self.redAvatarImageView]; + [self addSubview:self.blueAvatarImageView]; + [self addSubview:self.vsImageView]; + [self addSubview:self.redValueBgImageView]; + [self addSubview:self.blueValueBgImageView]; + [self addSubview:self.redValueLabel]; + [self addSubview:self.blueValueLabel]; + [self addSubview:self.closeBtn]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(300); + make.height.mas_equalTo(324); + make.bottom.mas_equalTo(self.backgroundImageView.mas_bottom); + }]; + [self.backgroundImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self.backgroundImageView).mas_offset(82); + make.height.mas_equalTo(21); + }]; + [self.redAvatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(52); + make.width.height.mas_equalTo(80); + make.left.mas_equalTo(24); + }]; + [self.vsImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.centerY.mas_equalTo(self.redAvatarImageView); + make.width.mas_equalTo(64); + make.height.mas_equalTo(74); + }]; + [self.blueAvatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.redAvatarImageView); + make.width.height.mas_equalTo(80); + make.right.mas_equalTo(-24); + }]; + [self.redValueBgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.redAvatarImageView.mas_bottom).mas_offset(6); + make.height.mas_equalTo(26); + make.width.mas_equalTo(110); + make.centerX.mas_equalTo(self.redAvatarImageView); + }]; + [self.blueValueBgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.redValueBgImageView); + make.height.mas_equalTo(26); + make.width.mas_equalTo(110); + make.centerX.mas_equalTo(self.blueAvatarImageView); + }]; + [self.redValueLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.centerY.mas_equalTo(self.redValueBgImageView); + }]; + [self.blueValueLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.centerY.mas_equalTo(self.blueValueBgImageView); + }]; + [self.closeBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.top.mas_equalTo(self.backgroundImageView); + make.width.height.mas_equalTo(32); + }]; +} + +#pragma mark - Event Response +- (void)onCloseBtnClick:(UIButton *)button { + [TTPopup dismiss]; +} + +- (void)setData:(AcrossRoomPKPanelModel *)data { + self.redValueLabel.text = [NSString stringWithFormat:@"%lld", data.cAmount]; + self.blueValueLabel.text = [NSString stringWithFormat:@"%lld", data.aAmount]; + self.redAvatarImageView.imageUrl = data.cAvatar; + self.blueAvatarImageView.imageUrl = data.aAvatar; +} + +#pragma mark - Getters And Setters +- (UIImageView *)backgroundImageView { + if (!_backgroundImageView) { + _backgroundImageView = [[UIImageView alloc] init]; + _backgroundImageView.image = [UIImage imageNamed:@"anchorPK_invite_bg"]; + } + return _backgroundImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPAnchorPKFinishView0"); + _titleLabel.textColor = [UIColor whiteColor]; + _titleLabel.font = [UIFont systemFontOfSize:15]; + } + return _titleLabel; +} + +- (UIButton *)closeBtn { + if (!_closeBtn) { + _closeBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_closeBtn addTarget:self action:@selector(onCloseBtnClick:) forControlEvents:UIControlEventTouchUpInside]; + [_closeBtn setBackgroundImage:[UIImage imageNamed:@"anchorPk_result_close"] forState:UIControlStateNormal]; + } + return _closeBtn; +} + +- (NetImageView *)redAvatarImageView { + if (!_redAvatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _redAvatarImageView = [[NetImageView alloc] initWithConfig:config]; + _redAvatarImageView.layer.masksToBounds = YES; + _redAvatarImageView.layer.cornerRadius = 80 / 2; + _redAvatarImageView.layer.borderWidth = 2; + _redAvatarImageView.layer.borderColor = UIColorFromRGB(0xFE6464).CGColor; + } + return _redAvatarImageView; +} + +- (NetImageView *)blueAvatarImageView { + if (!_blueAvatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _blueAvatarImageView = [[NetImageView alloc] initWithConfig:config]; + _blueAvatarImageView.layer.masksToBounds = YES; + _blueAvatarImageView.layer.cornerRadius = 80 / 2; + _blueAvatarImageView.layer.borderWidth = 2; + _blueAvatarImageView.layer.borderColor = UIColorFromRGB(0x3794FE).CGColor; + } + return _blueAvatarImageView; +} + +- (UIImageView *)redValueBgImageView { + if (!_redValueBgImageView) { + _redValueBgImageView = [[UIImageView alloc] init]; + _redValueBgImageView.image = [UIImage imageNamed:@"anchorPK_result_redValue_bg"]; + } + return _redValueBgImageView; +} + +- (UIImageView *)blueValueBgImageView { + if (!_blueValueBgImageView) { + _blueValueBgImageView = [[UIImageView alloc] init]; + _blueValueBgImageView.image = [UIImage imageNamed:@"anchorPK_result_blueValue_bg"]; + } + return _blueValueBgImageView; +} + +- (UILabel *)redValueLabel { + if (!_redValueLabel) { + _redValueLabel = [[UILabel alloc] init]; + _redValueLabel.font = [UIFont systemFontOfSize:12]; + _redValueLabel.textColor = UIColorFromRGB(0xFF0000); + _redValueLabel.textAlignment = NSTextAlignmentCenter; + } + return _redValueLabel; +} + +- (UILabel *)blueValueLabel { + if (!_blueValueLabel) { + _blueValueLabel = [[UILabel alloc] init]; + _blueValueLabel.font = [UIFont systemFontOfSize:12]; + _blueValueLabel.textColor = UIColorFromRGB(0x0060D1); + _blueValueLabel.textAlignment = NSTextAlignmentCenter; + } + return _blueValueLabel; +} + +- (UIImageView *)vsImageView { + if (!_vsImageView) { + _vsImageView = [[UIImageView alloc] init]; + _vsImageView.image = [UIImage imageNamed:@"anchorPk_panel_vs"]; + } + return _vsImageView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKInviteView.h b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKInviteView.h new file mode 100644 index 00000000..22e8b8df --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKInviteView.h @@ -0,0 +1,21 @@ +// +// YMAnchorPKInviteView.h +// YUMI +// +// Created by YUMI on 2022/4/12. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPAnchorPKInviteView : UIView + +///房主的uid +@property (nonatomic,copy) NSString *roomUid; +///数据源 +@property (nonatomic,copy) NSDictionary *dataDic; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKInviteView.m b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKInviteView.m new file mode 100644 index 00000000..10bd3394 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKInviteView.m @@ -0,0 +1,359 @@ +// +// YMAnchorPKInviteView.m +// YUMI +// +// Created by YUMI on 2022/4/12. +// + +#import "XPAnchorPKInviteView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "UIImage+Utils.h" +#import "Api+Room.h" +#import "XNDJTDDLoadingTool.h" +#import "TTPopup.h" + +@interface XPAnchorPKInviteSubView : UIView +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///内容 +@property (nonatomic,strong) UILabel *contentLabel; +@end + +@implementation XPAnchorPKInviteSubView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.titleLabel]; + [self addSubview:self.contentLabel]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(17); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(55); + make.left.centerY.mas_equalTo(self); + }]; + + [self.contentLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.titleLabel.mas_right).offset(15); + make.centerY.mas_equalTo(self); + make.right.mas_lessThanOrEqualTo(self).offset(-5); + }]; +} + +#pragma mark - Getters And Setters + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _titleLabel.font = [UIFont systemFontOfSize:14]; + _titleLabel.text = YMLocalizedString(@"XPAnchorPKInviteView0"); + _titleLabel.textAlignment = NSTextAlignmentRight; + } + return _titleLabel; +} + +- (UILabel *)contentLabel { + if (!_contentLabel) { + _contentLabel = [[UILabel alloc] init]; + _contentLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _contentLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + } + return _contentLabel; +} + +@end + +@interface XPAnchorPKInviteView () +///标题 +@property (nonatomic, strong) UILabel *titleLabel; +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///邀请方 +@property (nonatomic,strong) XPAnchorPKInviteSubView *inviteView; +///PK时长 +@property (nonatomic,strong) XPAnchorPKInviteSubView *timeView; +///PK玩法 +@property (nonatomic,strong) XPAnchorPKInviteSubView *descView; +///操作按钮的容器 +@property (nonatomic,strong) UIStackView *operaStackView; +///拒绝 +@property (nonatomic, strong) UIButton *rejectButton; +///接受 +@property (nonatomic, strong) UIButton *acceptButton; +///背景 +@property (nonatomic, strong) UIImageView *backImageView; +///倒计时 +@property (nonatomic, strong) UIButton *countDownButton; +//拒绝邀请 +@property (strong, nonatomic) dispatch_source_t inviteTimer; + +@end + +@implementation XPAnchorPKInviteView + +- (void)dealloc { + if (self.inviteTimer != nil) { + dispatch_source_cancel(self.inviteTimer); + self.inviteTimer = nil; + } +} + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +- (void)initSubViews { + [self addSubview:self.backImageView]; + + [self.backImageView addSubview:self.titleLabel]; + [self.backImageView addSubview:self.stackView]; + [self.backImageView addSubview:self.operaStackView]; + [self.backImageView addSubview:self.countDownButton]; + + [self.stackView addArrangedSubview:self.inviteView]; + [self.stackView addArrangedSubview:self.timeView]; + [self.stackView addArrangedSubview:self.descView]; + + [self.operaStackView addArrangedSubview:self.rejectButton]; + [self.operaStackView addArrangedSubview:self.acceptButton]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(300); + make.height.mas_equalTo(324); + make.bottom.mas_equalTo(self.backImageView.mas_bottom); + }]; + + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self.backImageView).mas_offset(82); + make.height.mas_equalTo(21); + }]; + + [self.countDownButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.top.mas_equalTo(0); + make.width.mas_equalTo(36); + make.height.mas_equalTo(26); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backImageView).offset(26); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(32); + make.right.mas_equalTo(self.backImageView); + }]; + + [self.operaStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backImageView).inset(20); + make.height.mas_equalTo(40); + make.bottom.mas_equalTo(-25); + }]; +} + +#pragma mark - Event Response +- (void)acceptButtonAction:(UIButton *)sender { + NSString *roundId = self.dataDic[@"roundId"]; + [Api handleAcrossRoomPKInvite:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + if (self.inviteTimer != nil) { + dispatch_source_cancel(self.inviteTimer); + self.inviteTimer = nil; + } + [TTPopup dismiss]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } roomUid:self.roomUid roundId:roundId isAccept:@"1"]; +} + +- (void)rejectButtonAction:(UIButton *)sender { + NSString *roundId = self.dataDic[@"roundId"]; + [Api handleAcrossRoomPKInvite:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + if (self.inviteTimer != nil) { + dispatch_source_cancel(self.inviteTimer); + self.inviteTimer = nil; + } + [TTPopup dismiss]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } roomUid:self.roomUid roundId:roundId isAccept:@"0"]; +} + +#pragma mark - getter +- (void)setDataDic:(NSDictionary *)dataDic { + _dataDic = dataDic; + if (_dataDic.allKeys.count > 0) { + self.inviteView.contentLabel.text = _dataDic[@"inviteNick"]; + self.timeView.contentLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPAnchorPKInviteView1"), _dataDic[@"pkDuration"]]; + NSString *desc = _dataDic[@"pkDesc"]; + if (desc.length > 0) { + self.descView.hidden = NO; + self.descView.contentLabel.text = desc; + } else { + self.descView.hidden = YES; + } + + if (_inviteTimer != nil) { + dispatch_source_cancel(_inviteTimer); + } + __block NSInteger time = 10; //倒计时时间 + dispatch_queue_t queue = dispatch_get_global_queue(0, 0); + _inviteTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); + @kWeakify(self); + dispatch_source_set_timer(_inviteTimer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行 + dispatch_source_set_event_handler(_inviteTimer, ^{ + if(time <= 0){ //倒计时结束,关闭 + dispatch_source_cancel(self.inviteTimer); + self.inviteTimer = nil; + dispatch_async(dispatch_get_main_queue(), ^{ + @kStrongify(self); + [self removeFromSuperview]; + + }); + }else{ + dispatch_async(dispatch_get_main_queue(), ^{ + @kStrongify(self); + [self.countDownButton setTitle:[NSString stringWithFormat:@"%02lds", time] forState:UIControlStateNormal]; + }); + time--; + } + }); + dispatch_resume(_inviteTimer); + } +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.image = [UIImage imageNamed:@"anchorPK_invite_bg"]; + } + return _backImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textColor = [UIColor whiteColor]; + _titleLabel.font = [UIFont systemFontOfSize:15]; + _titleLabel.text = YMLocalizedString(@"XPAnchorPKInviteView2"); + } + return _titleLabel; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 16; + } + return _stackView; +} + +- (XPAnchorPKInviteSubView *)inviteView { + if (!_inviteView) { + _inviteView = [[XPAnchorPKInviteSubView alloc] init]; + _inviteView.titleLabel.text = @"邀请方:"; + } + return _inviteView; +} + +- (XPAnchorPKInviteSubView *)timeView { + if (!_timeView) { + _timeView = [[XPAnchorPKInviteSubView alloc] init]; + _timeView.titleLabel.text = @"PK时长:"; + } + return _timeView; +} + +- (XPAnchorPKInviteSubView *)descView { + if (!_descView) { + _descView = [[XPAnchorPKInviteSubView alloc] init]; + _descView.titleLabel.text = @"PK玩法:"; + } + return _descView; +} + +- (UIButton *)countDownButton { + if (!_countDownButton) { + _countDownButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_countDownButton setTitleColor:UIColorFromRGB(0xFFFFFF) forState:UIControlStateNormal]; + _countDownButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_countDownButton setBackgroundImage:[UIImage imageWithColor:UIColorRGBAlpha(0xFFFFFF, 0.4)] forState:UIControlStateNormal]; + _countDownButton.layer.masksToBounds = YES; + _countDownButton.layer.cornerRadius = 13; + } + return _countDownButton; +} + +- (UIStackView *)operaStackView { + if (!_operaStackView) { + _operaStackView = [[UIStackView alloc] init]; + _operaStackView.axis = UILayoutConstraintAxisHorizontal; + _operaStackView.distribution = UIStackViewDistributionFillEqually; + _operaStackView.alignment = UIStackViewAlignmentFill; + _operaStackView.spacing = 12; + } + return _operaStackView; +} + +- (UIButton *)rejectButton { + if (!_rejectButton) {\ + _rejectButton = [UIButton buttonWithType:UIButtonTypeCustom]; + _rejectButton.layer.masksToBounds = YES; + _rejectButton.layer.cornerRadius = 40 / 2; + [_rejectButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xF4E0FF), UIColorFromRGB(0xF4E0FF)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_rejectButton setTitleColor:UIColorFromRGB(0x5486FD) forState:UIControlStateNormal]; + [_rejectButton setTitle:YMLocalizedString(@"XPAnchorPKInviteView6") forState:UIControlStateNormal]; + _rejectButton.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + [_rejectButton addTarget:self action:@selector(rejectButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _rejectButton; +} + +- (UIButton *)acceptButton { + if (!_acceptButton) { + _acceptButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_acceptButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0x1CD7FD), UIColorFromRGB(0x9377FF), UIColorFromRGB(0xFF6BA3)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_acceptButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_acceptButton setTitle:YMLocalizedString(@"XPAnchorPKInviteView7") forState:UIControlStateNormal]; + _acceptButton.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + [_acceptButton addTarget:self action:@selector(acceptButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _acceptButton.layer.masksToBounds = YES; + _acceptButton.layer.cornerRadius = 40 / 2; + } + return _acceptButton; + } + +@end diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKPanelUserView.h b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKPanelUserView.h new file mode 100644 index 00000000..e4c1aecf --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKPanelUserView.h @@ -0,0 +1,33 @@ +// +// YMAnchorPKPanelUserView.h +// YUMI +// +// Created by YUMI on 2022/4/11. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class AcrossRoomPkRankModel; +typedef NS_ENUM(NSInteger, AnchorPKPanelUserType) { + ///红队贡献 + AnchorPKPanelUserType_Red_Contribute = 1, + ///红队魅力榜 + AnchorPKPanelUserType_Red_Charm, + ///蓝队贡献 + AnchorPKPanelUserType_Blue_Contribute, + ///蓝队魅力 + AnchorPKPanelUserType_Blue_Charm, +}; + +@interface XPAnchorPKPanelUserView : UIView + +///类型 +@property (nonatomic,assign) AnchorPKPanelUserType type; + +@property (nonatomic,strong, nullable) AcrossRoomPkRankModel * panelInfo; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKPanelUserView.m b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKPanelUserView.m new file mode 100644 index 00000000..32385429 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKPanelUserView.m @@ -0,0 +1,143 @@ +// +// YMAnchorPKPanelUserView.m +// YUMI +// +// Created by YUMI on 2022/4/11. +// + +#import "XPAnchorPKPanelUserView.h" + +///Third +#import +///Tool +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +///Model +#import "AcrossRoomPKPanelModel.h" + +@interface XPAnchorPKPanelUserView () +///排位头饰 +@property (nonatomic, strong) UIImageView *mvpImageView; +///头像 +@property (nonatomic, strong) NetImageView *avatarImageView; +///显示金币 +@property (nonatomic,strong) UIButton *coinButton; + +@end + +@implementation XPAnchorPKPanelUserView + +#pragma mark - Life Style +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.avatarImageView]; + [self addSubview:self.mvpImageView]; + [self addSubview:self.coinButton]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(36); + make.height.mas_equalTo(42); + }]; + + [self.mvpImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.bottom.right.mas_equalTo(self.avatarImageView); + make.height.mas_equalTo(11); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self); + make.width.height.mas_equalTo(24); + make.centerX.mas_equalTo(self); + }]; + + [self.coinButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(self); + make.height.mas_equalTo(11); + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self.avatarImageView.mas_bottom).mas_offset(4); + }]; +} + + +#pragma mark - getters and setters +- (void)setType:(AnchorPKPanelUserType)type { + _type = type; + NSString * avatarPlaceName; + switch (type) { + case AnchorPKPanelUserType_Red_Contribute: + case AnchorPKPanelUserType_Red_Charm: + avatarPlaceName = @"anchorPK_panel_red_micState"; + break; + case AnchorPKPanelUserType_Blue_Contribute: + case AnchorPKPanelUserType_Blue_Charm: + avatarPlaceName = @"anchorPK_panel_blue_micState"; + break; + + default: + break; + } + self.avatarImageView.image = [UIImage imageNamed:avatarPlaceName]; +} + +- (void)setPanelInfo:(AcrossRoomPkRankModel *)panelInfo { + _panelInfo = panelInfo; + if (_panelInfo) { + self.avatarImageView.imageUrl = _panelInfo.avatar; + [self.coinButton setTitle:panelInfo.amount forState:UIControlStateNormal]; + self.coinButton.hidden = !panelInfo.amount; + } else { + if (self.type == AnchorPKPanelUserType_Red_Contribute || self.type == AnchorPKPanelUserType_Red_Charm) { + self.avatarImageView.image = [UIImage imageNamed:@"anchorPK_panel_red_micState"]; + } else { + self.avatarImageView.image = [UIImage imageNamed:@"anchorPK_panel_red_micState"]; + } + [self.coinButton setTitle:@"0" forState:UIControlStateNormal]; + self.coinButton.hidden = YES; + } + if (self.tag == 1000) { + self.mvpImageView.hidden = NO; + } +} + +- (UIImageView *)mvpImageView { + if (!_mvpImageView) { + _mvpImageView = [[UIImageView alloc] init]; + _mvpImageView.image = [UIImage imageNamed:@"anchorPK_panel_MVP"]; + _mvpImageView.hidden = YES; + } + return _mvpImageView; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 24 / 2; + } + return _avatarImageView; +} + +- (UIButton *)coinButton { + if (!_coinButton) { + _coinButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_coinButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _coinButton.titleLabel.font = [UIFont systemFontOfSize:10]; + } + return _coinButton; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKResultView.h b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKResultView.h new file mode 100644 index 00000000..107c3113 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKResultView.h @@ -0,0 +1,19 @@ +// +// YMAnchorPKResultView.h +// YUMI +// +// Created by YUMI on 2022/4/13. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class AcrossRoomPKPanelModel; +@interface XPAnchorPKResultView : UIView + +@property (nonatomic, strong) AcrossRoomPKPanelModel *data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKResultView.m b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKResultView.m new file mode 100644 index 00000000..f806f3ea --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKResultView.m @@ -0,0 +1,438 @@ +// +// YMAnchorPKResultView.m +// YUMI +// +// Created by YUMI on 2022/4/13. +// + +#import "XPAnchorPKResultView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "TTPopup.h" +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" +///Model +#import "AcrossRoomPKPanelModel.h" + +@interface XPAnchorPKResultContributeView : UIView + +///背景 +@property (nonatomic, strong) UIImageView *bgImageView; +///mvpIcon +@property (nonatomic, strong) UIImageView *mvpIconView; +///头像 +@property (nonatomic, strong) NetImageView *headImageView; +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///内容 +@property (nonatomic,strong) UILabel *contentLabel; + +@property (nonatomic, strong) AcrossRoomPkRankModel *data; + +@end + +@implementation XPAnchorPKResultContributeView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.bgImageView]; + [self addSubview:self.headImageView]; + [self addSubview:self.mvpIconView]; + [self addSubview:self.titleLabel]; + [self addSubview:self.contentLabel]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(40); + make.width.mas_equalTo(159); + }]; + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; + + [self.headImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self); + make.left.mas_equalTo(16); + make.width.height.mas_equalTo(34); + }]; + [self.mvpIconView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(32); + make.height.mas_equalTo(12); + make.centerX.mas_equalTo(self.headImageView); + make.bottom.mas_equalTo(self.headImageView).mas_offset(1); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.headImageView).mas_offset(2); + make.left.mas_equalTo(self.headImageView.mas_right).mas_offset(8); + make.height.mas_equalTo(13); + make.right.mas_equalTo(0); + }]; + + [self.contentLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.titleLabel); + make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(4); + make.height.mas_equalTo(11); + }]; +} + +#pragma mark - Getters And Setters +- (void)setData:(AcrossRoomPkRankModel *)data { + + self.titleLabel.text = data.nick ? data.nick : @""; + self.contentLabel.text = [NSString stringWithFormat:@"PK值:%@", data.amount? data.amount : @""]; + self.headImageView.imageUrl = data.avatar; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textColor = [UIColor whiteColor]; + _titleLabel.font = [UIFont systemFontOfSize:12]; + _titleLabel.text = @""; + } + return _titleLabel; +} + +- (UILabel *)contentLabel { + if (!_contentLabel) { + _contentLabel = [[UILabel alloc] init]; + _contentLabel.textColor = [UIColor whiteColor]; + _contentLabel.font = [UIFont systemFontOfSize:10]; + } + return _contentLabel; +} + +- (UIImageView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[UIImageView alloc] init]; + _bgImageView.image = [UIImage imageNamed:@"anchorPK_result_contribute_bg"]; + } + return _bgImageView; +} + +- (UIImageView *)mvpIconView { + if (!_mvpIconView) { + _mvpIconView = [[UIImageView alloc] init]; + _mvpIconView.image = [UIImage imageNamed:@"anchorPK_result_mvp_icon"]; + _mvpIconView.hidden = YES; + } + return _mvpIconView; +} + +- (NetImageView *)headImageView { + if (!_headImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _headImageView = [[NetImageView alloc] initWithConfig:config]; + _headImageView.layer.masksToBounds = YES; + _headImageView.layer.cornerRadius = 17; + _headImageView.layer.borderColor = [UIColor whiteColor].CGColor; + _headImageView.layer.borderWidth = 0.5; + } + return _headImageView; +} + +@end + +@interface XPAnchorPKResultView() + +/** bgImageView */ +@property (nonatomic, strong) UIImageView *bgImageView; +///关闭 +@property (nonatomic, strong) UIButton *closeBtn; +///内容view +@property (nonatomic, strong) UIView *mainView; +///头饰 +@property (nonatomic, strong) UIImageView *headWearImageView; +///头像 +@property (nonatomic, strong) NetImageView *avatarImageView; +///厅名 +@property (nonatomic, strong) UILabel *roomTitleLabel; +///pk值 +@property (nonatomic, strong) UILabel *pkValueLabel; +///贡献标题背景 +@property (nonatomic, strong) UIImageView *contributeTitleBgImageView; +///贡献榜标题 +@property (nonatomic, strong) UILabel *contributeTitleLabel; +///无人送礼tip +@property (nonatomic, strong) UILabel *noneContrbuteLabel; +///倒计时 +@property (strong, nonatomic) dispatch_source_t timer; + +@end + +@implementation XPAnchorPKResultView + +- (void)dealloc { + NSLog(@"销毁了"); + if (self.timer) { + dispatch_source_cancel(self.timer); + self.timer = nil; + } +} + +#pragma mark - life cycle + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initView]; + [self initConstrations]; + } + return self; +} + +- (void)initView { + [self addSubview:self.bgImageView]; + [self addSubview:self.closeBtn]; + [self addSubview:self.mainView]; + [self addSubview:self.avatarImageView]; + [self addSubview:self.headWearImageView]; + + [self.mainView addSubview:self.roomTitleLabel]; + [self.mainView addSubview:self.pkValueLabel]; + [self.mainView addSubview:self.contributeTitleBgImageView]; + [self.mainView addSubview:self.contributeTitleLabel]; + [self.mainView addSubview:self.noneContrbuteLabel]; +} + +- (void)initConstrations { + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(0); + make.top.mas_equalTo(47); + make.height.mas_equalTo(370); + }]; + [self.closeBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self.bgImageView.mas_bottom).mas_offset(23); + make.width.mas_equalTo(72); + make.height.mas_equalTo(32); + }]; + [self.mainView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.bgImageView); + }]; + [self.headWearImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(0); + make.centerX.mas_equalTo(self); + make.width.mas_equalTo(148); + make.height.mas_equalTo(114); + }]; + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(27); + make.width.height.mas_equalTo(64); + make.centerX.mas_equalTo(self); + }]; + [self.roomTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.headWearImageView.mas_bottom).mas_offset(15); + make.centerX.mas_equalTo(self.avatarImageView); + make.height.mas_equalTo(15); + }]; + [self.pkValueLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.avatarImageView); + make.top.mas_equalTo(self.roomTitleLabel.mas_bottom).offset(8); + make.height.mas_equalTo(13); + }]; + [self.contributeTitleBgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.pkValueLabel.mas_bottom).mas_offset(17); + make.centerX.mas_equalTo(self.mainView); + make.width.mas_equalTo(160); + make.height.mas_equalTo(24); + }]; + [self.contributeTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.centerY.mas_equalTo(self.contributeTitleBgImageView); + }]; + [self.noneContrbuteLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.pkValueLabel.mas_bottom).mas_offset(92); + make.centerX.mas_equalTo(self); + }]; +} + + +- (void)setData:(AcrossRoomPKPanelModel *)data { + if (data.winUid == data.cUid) {//赢 + self.bgImageView.image = [UIImage imageNamed:@"anchorPK_result_win_bg"]; + self.headWearImageView.image = [UIImage imageNamed:@"anchorPK_result_win_headWear"]; + self.contributeTitleBgImageView.image = [UIImage imageNamed:@"anchorPK_result_win_title_bg"]; + } else if (data.winUid == data.aUid) {//输 + self.bgImageView.image = [UIImage imageNamed:@"anchorPK_result_fail_bg"]; + self.headWearImageView.image = [UIImage imageNamed:@"anchorPK_result_fail_headWear"]; + self.contributeTitleBgImageView.image = [UIImage imageNamed:@"anchorPK_result_fail_title_bg"]; + } else {//平局 + self.bgImageView.image = [UIImage imageNamed:@"anchorPK_result_tie_bg"]; + self.headWearImageView.image = [UIImage imageNamed:@"anchorPK_result_tie_headWear"]; + self.contributeTitleBgImageView.image = [UIImage imageNamed:@"anchorPK_result_tie_title_bg"]; + } + self.avatarImageView.imageUrl = data.cAvatar; + self.roomTitleLabel.text = data.cNick; + self.pkValueLabel.text = [NSString stringWithFormat:@"PK值:%lld", data.cAmount]; + if (data.csRank.count > 0) {//有贡献 + self.contributeTitleBgImageView.hidden = NO; + self.contributeTitleLabel.hidden = NO; + self.noneContrbuteLabel.hidden = YES; + for (int i = 0; i + +NS_ASSUME_NONNULL_BEGIN + +@interface XPAnchorPKRuleView : UIView + +@property (nonatomic, copy) NSString *ruleString; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKRuleView.m b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKRuleView.m new file mode 100644 index 00000000..7b95e3a7 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPKRuleView.m @@ -0,0 +1,126 @@ +// +// YMAnchorPKRuleView.m +// YUMI +// +// Created by YUMI on 2022/4/8. +// + +#import "XPAnchorPKRuleView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "TTPopup.h" +#import "UIImage+Utils.h" + +@interface XPAnchorPKRuleView () +///标题 +@property (nonatomic, strong) UILabel *titleLabel; +///背景 +@property (nonatomic, strong) UIImageView *backgroundImageView; +///显示内容 +@property (nonatomic, strong) UITextView *ruleTextView; +///关闭 +@property (nonatomic, strong) UIButton *closeBtn; + +@end + + +@implementation XPAnchorPKRuleView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backgroundImageView]; + [self addSubview:self.titleLabel]; + [self addSubview:self.ruleTextView]; + [self addSubview:self.closeBtn]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(300); + make.height.mas_equalTo(324); + make.bottom.mas_equalTo(self.backgroundImageView.mas_bottom); + }]; + [self.backgroundImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self.backgroundImageView).mas_offset(82); + make.height.mas_equalTo(21); + }]; + [self.ruleTextView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(30); + make.left.mas_equalTo(18); + make.right.mas_equalTo(-18); + make.bottom.mas_equalTo(-20); + }]; + [self.closeBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.top.mas_equalTo(self.backgroundImageView); + make.width.height.mas_equalTo(32); + }]; +} + +#pragma mark - Event Response +- (void)onCloseBtnClick:(UIButton *)button { + [TTPopup dismiss]; +} + +- (void)setRuleString:(NSString *)ruleString { + if ([ruleString containsString:@"\\n"]) { + ruleString = [ruleString stringByReplacingOccurrencesOfString:@"\\n" withString:@"\n"]; + } + self.ruleTextView.text = ruleString; +} + +#pragma mark - Getters And Setters +- (UIImageView *)backgroundImageView { + if (!_backgroundImageView) { + _backgroundImageView = [[UIImageView alloc] init]; + _backgroundImageView.image = [UIImage imageNamed:@"anchorPK_invite_bg"]; + } + return _backgroundImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPAnchorPKRuleView0"); + _titleLabel.textColor = [UIColor whiteColor]; + _titleLabel.font = [UIFont systemFontOfSize:15]; + } + return _titleLabel; +} + +- (UITextView *)ruleTextView { + if (!_ruleTextView) { + _ruleTextView = [[UITextView alloc] init]; + _ruleTextView.textColor = [DJDKMIMOMColor mainTextColor]; + _ruleTextView.backgroundColor = [UIColor clearColor]; + _ruleTextView.font = [UIFont systemFontOfSize:12]; + _ruleTextView.scrollEnabled = NO; + _ruleTextView.editable = NO; + _ruleTextView.text = @""; + } + return _ruleTextView; +} + +- (UIButton *)closeBtn { + if (!_closeBtn) { + _closeBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_closeBtn addTarget:self action:@selector(onCloseBtnClick:) forControlEvents:UIControlEventTouchUpInside]; + [_closeBtn setBackgroundImage:[UIImage imageNamed:@"anchorPk_result_close"] forState:UIControlStateNormal]; + } + return _closeBtn; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPkPanelView.h b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPkPanelView.h new file mode 100644 index 00000000..32cf9aa7 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPkPanelView.h @@ -0,0 +1,41 @@ +// +// YMAnchorPkPanelView.h +// YUMI +// +// Created by YUMI on 2022/4/11. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPAnchorPkPanelView, AcrossRoomPKPanelModel, AttachmentModel; +@protocol XPAnchorPkPanelViewDelegate + +///展示用户卡片 +- (void)xPAnchorPKPanelView:(XPAnchorPkPanelView *)view showUserCard:(NSString *)uid; + +///去房间 +- (void)xPAnchorPKPanelView:(XPAnchorPkPanelView *)view onlookRoom:(NSString *)roomUid; +///关注房主成功 +- (void)xPAnchorPKPanelViewAttentionSuccess; +///惩罚时间倒计时结束 +- (void)xPAnchorPKPanelViewPenaltyCountDownEnd; + +@end + +@interface XPAnchorPkPanelView : UIView + +///开启pk +- (void)openCountdownWithTime:(long)time; +///pk 信息 +@property (nonatomic,strong, nullable) AcrossRoomPKPanelModel *pkPanelInfo; +///代理 +@property (nonatomic,weak) id delegate; +///重置数据 +- (void)resetAcrossPKViewData; +///更新对方麦状态 +- (void)updateOtherMicStatus:(AttachmentModel *)attachment; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPkPanelView.m b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPkPanelView.m new file mode 100644 index 00000000..0cb70976 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorPkPanelView.m @@ -0,0 +1,818 @@ +// +// YMAnchorPkPanelView.m +// YUMI +// +// Created by YUMI on 2022/4/11. +// + +#import "XPAnchorPkPanelView.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "YUMIMacroUitls.h" +#import "UIImage+Utils.h" +#import "UIButton+EnlargeTouchArea.h" +#import "Timestamp.h" +#import "Api+UserCard.h" +#import "XNDJTDDLoadingTool.h" +#import "AccountInfoStorage.h" +#import "NSArray+Safe.h" +#import "RtcManager.h" +///Model +#import "UserInfoModel.h" +#import "AcrossRoomPKPanelModel.h" +#import "AttachmentModel.h" +///View +#import "XPAnchorPKPanelUserView.h" +///Api +#import "Api+AnchorPk.h" + +@interface XPAnchorPkPanelView () + +///背景 +@property (nonatomic, strong) UIImageView *backImageView; +#pragma mark - 规则的view +///红方⭐️ +@property (nonatomic, strong) UIImageView *redStarImageView; +///蓝方⭐️ +@property (nonatomic, strong) UIImageView *blueStarImageView; +///PK状态 +@property (nonatomic, strong) UILabel *pkStateLabel; +///显示倒计时 +@property (nonatomic, strong) UILabel *timeLabel; +///最大的容器 +@property (nonatomic,strong) UIStackView *stackView; +#pragma mark -进度条内容 +///PK最外面的容器 +@property (nonatomic, strong) UIView *progressView; +///PK条容器 +@property (nonatomic, strong) UIView *progressContentView; +///红方的进度图片 +@property (nonatomic, strong) UIImageView *redCountImageView; +///红方的礼物值 +@property (nonatomic, strong) UILabel *redCountLabel; +///蓝方的进度图片 +@property (nonatomic, strong) UIImageView *blueCountImageView; +///蓝方的礼物值 +@property (nonatomic, strong) UILabel *blueCountLabel; +///动画管理类 +@property (strong, nonatomic) SVGAParser *parser; +///中间进度的动画 +@property (nonatomic, strong) SVGAImageView *svgDisplayView; +#pragma mark - 队伍的队友的view +///红方的贡献用户容器 +@property (nonatomic,strong) UIStackView *redContributeStackView; +///蓝方的贡献用户容器 +@property (nonatomic,strong) UIStackView *blueContributeStackView; +///倒计时 +@property (strong, nonatomic) dispatch_source_t timer; +///红方PK结果 +@property (nonatomic, strong) UIImageView *redResultImageView; +///对方头像 +@property (nonatomic, strong) NetImageView *otherAvatarImageView; +///对方PK结果 +@property (nonatomic, strong) UIImageView *otherResultImageView; +///红方昵称容器 +@property (nonatomic, strong) UIStackView *redNickStackView; +///红方昵称 +@property (nonatomic, strong) UILabel *redNickLabel; +///关注按钮 +@property (nonatomic, strong) UIButton *attentionButton; +///对方昵称容器 +@property (nonatomic, strong) UIStackView *otherStackView; +///对方昵称 +@property (nonatomic, strong) UILabel *otherNickLabel; +///跟随按钮 +@property (nonatomic, strong) UIButton *followButton; +///对方的麦克风状态 +@property (nonatomic, strong) UIButton *otherMicButton; +///是否第一次展示 +@property (nonatomic, assign) BOOL isHadShow; + +@end + +@implementation XPAnchorPkPanelView + +#pragma mark - life cycle + +- (void)dealloc { + NSLog(@"销毁了"); + [self resetAcrossPKViewData]; +} + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Public Method +- (void)resetAcrossPKViewData { + if (self.timer) { + dispatch_source_cancel(self.timer); + self.timer = nil; + } + self.pkPanelInfo = nil; +} + +///更新对方麦状态 +- (void)updateOtherMicStatus:(AttachmentModel *)attachment { + NSNumber *micStatus = attachment.data[@"aMicStatus"]; + NSNumber *aUid = attachment.data[@"aUid"]; + self.otherMicButton.selected = !micStatus.boolValue; + [[RtcManager instance] muteOne:!micStatus.boolValue userId:[NSString stringWithFormat:@"%@", aUid]]; + if (!micStatus.boolValue) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPAnchorPkPanelView0")]; + self.otherMicButton.hidden = NO; + } else { + self.otherMicButton.hidden = YES; + } + if ([self.pkPanelInfo.cUid isEqualToString:[AccountInfoStorage instance].getUid]) { + self.otherMicButton.hidden = NO; + } +} + +- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { + UIView *view = [super hitTest:point withEvent:event]; + return view == self?nil:view; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backImageView]; + [self.backImageView addSubview:self.stackView]; + [self.stackView addArrangedSubview:self.pkStateLabel]; + [self.stackView addArrangedSubview:self.timeLabel]; + ///进度条 + [self.backImageView addSubview:self.progressView]; + [self.progressView addSubview:self.progressContentView]; + [self.progressContentView addSubview:self.redCountImageView]; + [self.progressContentView addSubview:self.blueCountImageView]; + [self.progressContentView addSubview:self.redStarImageView]; + [self.progressContentView addSubview:self.blueStarImageView]; + [self.progressContentView addSubview:self.svgDisplayView]; + ///贡献榜 + [self.backImageView addSubview:self.redContributeStackView]; + [self.backImageView addSubview:self.blueContributeStackView]; + [self.progressContentView addSubview:self.redCountLabel]; + [self.progressContentView addSubview:self.blueCountLabel]; + + [self addSubview:self.redResultImageView]; + [self addSubview:self.otherAvatarImageView]; + [self addSubview:self.otherResultImageView]; + [self addSubview:self.redNickStackView]; + [self addSubview:self.otherMicButton]; + [self.redNickStackView addArrangedSubview:self.redNickLabel]; + [self.redNickStackView addArrangedSubview:self.attentionButton]; + [self addSubview:self.otherStackView]; + [self.otherStackView addArrangedSubview:self.otherNickLabel]; + [self.otherStackView addArrangedSubview:self.followButton]; + [self initUserSubViews]; + NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/anchorPK_progress.svga", API_Image_URL]; + [self.parser parseWithURL:[NSURL URLWithString:anatomiser1Name] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { + self.svgDisplayView.loops = INT_MAX; + self.svgDisplayView.clearsAfterStop = NO; + self.svgDisplayView.videoItem = videoItem; + [self.svgDisplayView startAnimation]; + } failureBlock:^(NSError * _Nonnull error) { + + }]; +} + +- (void)initUserSubViews { + for (int i = 0; i < 3; i++) { + XPAnchorPKPanelUserView * userView = [[XPAnchorPKPanelUserView alloc] init]; + userView.tag = (1000 + i); + userView.type = AnchorPKPanelUserType_Red_Contribute; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapUserRecognizer:)]; + [userView addGestureRecognizer:tap]; + [self.redContributeStackView addArrangedSubview:userView]; + } + + for (int i = 0; i < 3; i++) { + XPAnchorPKPanelUserView * userView = [[XPAnchorPKPanelUserView alloc] init]; + userView.tag = (1000 + i); + userView.type = AnchorPKPanelUserType_Blue_Contribute; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapUserRecognizer:)]; + [userView addGestureRecognizer:tap]; + [self.blueContributeStackView addArrangedSubview:userView]; + } +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth); + make.height.mas_equalTo(330 - 87); + }]; + + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(-16); + make.width.mas_equalTo(284); + make.height.mas_equalTo(84); + make.centerX.mas_equalTo(self); + }]; + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.backImageView); + make.centerX.mas_equalTo(self); + make.height.mas_equalTo(21); + }]; + + [self.redStarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.backImageView).mas_offset(15); + make.left.mas_equalTo(self.backImageView.mas_left).mas_offset(-30); + make.width.height.mas_equalTo(26); + }]; + [self.blueStarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.redStarImageView); + make.left.mas_equalTo(self.backImageView.mas_right).mas_offset(4); + make.width.height.mas_equalTo(26); + }]; + + ///进度条 + [self.progressView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.backImageView); + make.width.mas_equalTo(305); + make.height.mas_equalTo(16); + make.centerY.mas_equalTo(self.redStarImageView); + }]; + + [self.progressContentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.progressView); + }]; + + [self.redCountImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(0); + make.height.mas_equalTo(16); + make.top.mas_equalTo(0); + make.right.mas_equalTo(self.blueCountImageView.mas_left); + }]; + + [self.redCountLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.progressContentView.mas_left).offset(17); + make.centerY.mas_equalTo(self.progressContentView); + }]; + + [self.blueCountImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(0); + make.height.mas_equalTo(self.redCountImageView); + make.centerY.mas_equalTo(self.redCountImageView); + make.width.mas_equalTo(305 * 0.5); + }]; + + [self.blueCountLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.progressContentView.mas_right).offset(-17); + make.centerY.mas_equalTo(self.progressContentView); + }]; + + [self.svgDisplayView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.blueCountImageView.mas_left); + make.centerY.mas_equalTo(self.redCountImageView); + make.height.mas_equalTo(26); + make.width.mas_equalTo(25); + }]; + + [self.redContributeStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.backImageView); + make.left.mas_equalTo(self.backImageView).mas_offset(12); + make.height.mas_equalTo(42); + }]; + [self.blueContributeStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(self.redContributeStackView); + make.right.mas_equalTo(self.backImageView).mas_offset(-12); + make.bottom.mas_equalTo(self.redContributeStackView); + }]; + + [self.redResultImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo((KScreenWidth - 64) * 0.5 - 26 - 85 * 0.5 - 66 * 0.5); + make.bottom.mas_equalTo(self.otherResultImageView); + make.width.mas_equalTo(66); + make.height.mas_equalTo(48); + }]; + + ///对方信息 + [self.otherAvatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo((KScreenWidth + 64) * 0.5 + 26 - 2.5); + make.top.mas_equalTo(0); + make.width.height.mas_equalTo(90); + }]; + [self.otherResultImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.otherAvatarImageView); + make.bottom.mas_equalTo(self.otherAvatarImageView).mas_offset(12); + make.width.mas_equalTo(66); + make.height.mas_equalTo(48); + }]; + [self.otherMicButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.right.mas_equalTo(self.otherAvatarImageView); + make.width.height.mas_equalTo(24); + }]; + [self.redNickStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.otherStackView); + make.centerX.mas_equalTo(self.redResultImageView); + make.height.mas_equalTo(20); + }]; + [self.attentionButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(30, 20)); + }]; + + [self.otherStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.otherAvatarImageView.mas_bottom).mas_offset(17); + make.centerX.mas_equalTo(self.otherAvatarImageView); + make.height.mas_equalTo(20); + }]; + [self.followButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(30, 20)); + }]; +} + +#pragma mark - 倒计时 +- (void)openCountdownWithTime:(long)time { + __block long tempTime = time; //倒计时时间 + if (self.timer == nil) { + @kWeakify(self); + dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); + self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); + dispatch_source_set_timer(self.timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行 + dispatch_source_set_event_handler(self.timer, ^{ + @kStrongify(self); + if(tempTime <= 0){ //倒计时结束,关闭 + dispatch_source_cancel(self.timer); + self.timer = nil; + dispatch_async(dispatch_get_main_queue(), ^{ + if (self.pkPanelInfo.pkState == AcrossRoomPkStateTypePking) { + self.timeLabel.text = YMLocalizedString(@"XPAnchorPkPanelView1"); + } else { + self.timeLabel.text = @"00:00"; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPAnchorPKPanelViewPenaltyCountDownEnd)]) { + [self.delegate xPAnchorPKPanelViewPenaltyCountDownEnd]; + } + } + }); + } else { + dispatch_async(dispatch_get_main_queue(), ^{ + //设置按钮显示读秒效果 + [self AnchorPKCutdownOpen:tempTime]; + }); + tempTime--; + } + }); + dispatch_resume(self.timer); + } +} + +///房间pk, 倒计时回调 +- (void)AnchorPKCutdownOpen:(NSInteger)time { + NSInteger minute = time / 60; + NSInteger second = (time % 60); + NSInteger hour = time/3600; + NSString *timeStr; + if (hour > 0) { + minute = minute % 60; + timeStr = [NSString stringWithFormat:@"%02zd:%02zd:%02zd", hour, minute, second]; + } else { + timeStr = [NSString stringWithFormat:@"%02zd:%02zd", minute, second]; + } + self.timeLabel.text = timeStr; + if (time <= 30) { + self.timeLabel.textColor = UIColorFromRGB(0xFF87A1); + } else { + self.timeLabel.textColor = UIColorFromRGB(0xFFFFFF); + } +} + +- (void)tapUserRecognizer:(UITapGestureRecognizer *)tap { + XPAnchorPKPanelUserView * userView= (XPAnchorPKPanelUserView *)tap.view; + if (userView.panelInfo && userView.panelInfo.uid.length > 0 && self.delegate && [self.delegate respondsToSelector:@selector(xPAnchorPKPanelView:showUserCard:)]) { + [self.delegate xPAnchorPKPanelView:self showUserCard:userView.panelInfo.uid]; + } +} + +- (void)onFollowButtonClick:(UIButton *)button { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPAnchorPKPanelView:onlookRoom:)]) { + [self.delegate xPAnchorPKPanelView:self onlookRoom:self.pkPanelInfo.aUid]; + } +} + +- (void)onAttentionButtonClick:(UIButton *)button { + NSString * uid = [[AccountInfoStorage instance] getUid]; + NSString * ticket = [[AccountInfoStorage instance] getTicket]; + [Api attentionCompletion:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + self.attentionButton.hidden = YES; + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPAnchorPkPanelView2")]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPAnchorPKPanelViewAttentionSuccess)]) { + [self.delegate xPAnchorPKPanelViewAttentionSuccess]; + } + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } uid:uid likedUid:self.pkPanelInfo.cUid ticket:ticket type:@"1"]; +} + +- (void)onShowUserCard:(UITapGestureRecognizer *)ges { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPAnchorPKPanelView:showUserCard:)]) { + [self.delegate xPAnchorPKPanelView:self showUserCard:self.pkPanelInfo.aUid]; + } +} + +#pragma mark - getters and setters +- (void)setPkPanelInfo:(AcrossRoomPKPanelModel *)pkPanelInfo { + _pkPanelInfo = pkPanelInfo; + if (_pkPanelInfo) { + if (!self.isHadShow) { + self.isHadShow = YES; + NSString * uid = [[AccountInfoStorage instance] getUid]; + if ([uid isEqualToString:pkPanelInfo.cUid]) { + self.attentionButton.hidden = YES; + } else if(pkPanelInfo.cUid){ + [Api attentionStatusCompletion:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + BOOL isLike = ((NSNumber *)data.data).boolValue; + self.attentionButton.hidden = isLike; + } uid:uid isLikeUid:pkPanelInfo.cUid]; + } + } + if (pkPanelInfo.pkState == AcrossRoomPkStateTypePenalty) { + self.pkStateLabel.text = YMLocalizedString(@"XPAnchorPkPanelView3"); + if (self.timer) { + dispatch_source_cancel(self.timer); + self.timer = nil; + } + [Timestamp getInternetDateWithSuccess:^(NSTimeInterval timeInterval) { + timeInterval = timeInterval * 1000; + long aTime = (pkPanelInfo.penaltyEndTime - timeInterval) / 1000; + [self openCountdownWithTime:aTime]; + } failure:^(NSError * _Nonnull error) { + NSDate *datenow = [NSDate date];//现在时间 + long time2 = (long)([datenow timeIntervalSince1970]*1000); + long aTime = (pkPanelInfo.penaltyEndTime - time2) / 1000; + [self openCountdownWithTime:aTime]; + }]; + self.redResultImageView.hidden = NO; + self.otherResultImageView.hidden = NO; + if ([pkPanelInfo.winUid isEqualToString:pkPanelInfo.cUid]) { + self.redResultImageView.image = [UIImage imageNamed:@"anchorPk_micro_result_win"]; + self.otherResultImageView.image = [UIImage imageNamed:@"anchorPk_micro_result_fail"]; + } else if ([pkPanelInfo.winUid isEqualToString:pkPanelInfo.aUid]) {//输 + self.redResultImageView.image = [UIImage imageNamed:@"anchorPk_micro_result_fail"]; + self.otherResultImageView.image = [UIImage imageNamed:@"anchorPk_micro_result_win"]; + } else {//平局 + self.redResultImageView.image = [UIImage imageNamed:@"anchorPk_micro_result_tie"]; + self.otherResultImageView.image = [UIImage imageNamed:@"anchorPk_micro_result_tie"]; + } + } else { + self.redResultImageView.hidden = YES; + self.otherResultImageView.hidden = YES; + self.pkStateLabel.text = @"PK"; + [Timestamp getInternetDateWithSuccess:^(NSTimeInterval timeInterval) { + timeInterval = timeInterval * 1000; + long aTime = (pkPanelInfo.endTime - timeInterval) / 1000; + [self openCountdownWithTime:aTime]; + } failure:^(NSError * _Nonnull error) { + NSDate *datenow = [NSDate date];//现在时间 + long time2 = (long)([datenow timeIntervalSince1970]*1000); + long aTime = (pkPanelInfo.endTime - time2) / 1000; + [self openCountdownWithTime:aTime]; + }]; + } + if (_pkPanelInfo.cNick.length > 7) { + _pkPanelInfo.cNick = [NSString stringWithFormat:@"%@…", [_pkPanelInfo.cNick substringToIndex:7]]; + } + + if (_pkPanelInfo.aNick.length > 7) { + _pkPanelInfo.aNick = [NSString stringWithFormat:@"%@…", [_pkPanelInfo.aNick substringToIndex:7]]; + } + + self.redCountLabel.text = [NSString stringWithFormat:@"%lld", _pkPanelInfo.cAmount]; + self.blueCountLabel.text = [NSString stringWithFormat:@"%lld", _pkPanelInfo.aAmount]; + for (int i = 0; i<_pkPanelInfo.csRank.count; i++) { + AcrossRoomPkRankModel * rankModel = [_pkPanelInfo.csRank safeObjectAtIndex1:i]; + if (i >= self.redContributeStackView.subviews.count) { + break; + } + XPAnchorPKPanelUserView *userView = self.redContributeStackView.subviews[i]; + userView.panelInfo = rankModel; + } + + for (int i = 0; i<_pkPanelInfo.asRank.count; i++) { + AcrossRoomPkRankModel * rankModel = [_pkPanelInfo.asRank safeObjectAtIndex1:i]; + if (i >= self.blueContributeStackView.subviews.count) { + break; + } + XPAnchorPKPanelUserView *userView = self.blueContributeStackView.subviews[i]; + userView.panelInfo = rankModel; + } + + if (_pkPanelInfo.aPercent > 1) { + _pkPanelInfo.aPercent = 1; + } + CGFloat width = 305 * _pkPanelInfo.aPercent; + if (width <= 6.5) { + width = 6.5; + } else if (width >= 305 - 5.5) { + width = 305 - 5.5; + } + [self.blueCountImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(width); + }]; + self.otherAvatarImageView.imageUrl = pkPanelInfo.aAvatar; + self.otherNickLabel.text = pkPanelInfo.aNick; + self.redNickLabel.text = pkPanelInfo.cNick; + self.followButton.hidden = [pkPanelInfo.cUid isEqualToString:[AccountInfoStorage instance].getUid]; + if (pkPanelInfo.aMicStatus == AnchorPKOtherMicStatus_Close) { + self.otherMicButton.hidden = NO; + } else { + self.otherMicButton.hidden = ![pkPanelInfo.cUid isEqualToString:[AccountInfoStorage instance].getUid]; + } + self.otherMicButton.selected = pkPanelInfo.aMicStatus == AnchorPKOtherMicStatus_Close; + [[RtcManager instance] muteOne:pkPanelInfo.aMicStatus == AnchorPKOtherMicStatus_Close userId:pkPanelInfo.aUid]; + } else { + self.redCountLabel.text = @"0"; + self.blueCountLabel.text = @"0"; + for (int i = 0; i + +NS_ASSUME_NONNULL_BEGIN + +@interface XPAnchorRandomPKRuleView : UIView +/// +@property (nonatomic,copy) NSString *ruleString; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorRandomPKRuleView.m b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorRandomPKRuleView.m new file mode 100644 index 00000000..79bf24af --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorPK/View/SubViews/XPAnchorRandomPKRuleView.m @@ -0,0 +1,279 @@ +// +// YMAnchorRandomPKRuleView.m +// YUMI +// +// Created by YUMI on 2022/12/23. +// + +#import "XPAnchorRandomPKRuleView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "TTPopup.h" +#import "UIImage+Utils.h" + +@interface XPAnchorRandomPKRuleView () +///标题 +@property (nonatomic, strong) UILabel *titleLabel; +///背景 +@property (nonatomic, strong) UIImageView *backgroundImageView; + +///滚动 +@property (nonatomic,strong) UIScrollView *scrollView; +///规则 +@property (nonatomic,strong) UILabel *ruleLabel; +///随机标题 +@property (nonatomic,strong) UILabel *randomLabel; +///随机背景 +@property (nonatomic,strong) UIImageView *randomImageView; +///随机文案 +@property (nonatomic,strong) UILabel *randomContentLb; + +///邀请标题 +@property (nonatomic,strong) UILabel *inviteLabel; +///邀请背景 +@property (nonatomic,strong) UIImageView *inviteImageView; +///邀请文案 +@property (nonatomic,strong) UILabel *inviteContentLb; +///关闭 +@property (nonatomic, strong) UIButton *closeBtn; + +@end + + +@implementation XPAnchorRandomPKRuleView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backgroundImageView]; + [self addSubview:self.titleLabel]; + [self addSubview:self.closeBtn]; + [self.backgroundImageView addSubview:self.scrollView]; + + [self.scrollView addSubview:self.ruleLabel]; + + [self.scrollView addSubview:self.randomImageView]; + [self.scrollView addSubview:self.randomLabel]; + [self.scrollView addSubview:self.randomContentLb]; + + [self.scrollView addSubview:self.inviteImageView]; + [self.scrollView addSubview:self.inviteLabel]; + [self.scrollView addSubview:self.inviteContentLb]; + + +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(300); + make.height.mas_equalTo(324); + make.bottom.mas_equalTo(self.backgroundImageView.mas_bottom); + }]; + [self.backgroundImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self.backgroundImageView).mas_offset(82); + make.height.mas_equalTo(21); + }]; + + + [self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.backgroundImageView).offset(120); + make.left.right.mas_equalTo(self.backgroundImageView).inset(18); + make.bottom.mas_equalTo(self.backgroundImageView).offset(-15); + }]; + + [self.ruleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.scrollView); + make.left.right.mas_equalTo(self.backgroundImageView).inset(18); + }]; + + [self.randomLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.ruleLabel.mas_bottom).offset(16); + make.centerX.mas_equalTo(self.scrollView); + }]; + + [self.randomImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(88, 8)); + make.top.mas_equalTo(self.randomLabel.mas_bottom).offset(-6); + make.centerX.mas_equalTo(self.randomLabel); + }]; + + [self.randomContentLb mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backgroundImageView).inset(18); + make.top.mas_equalTo(self.randomImageView.mas_bottom).offset(8); + }]; + + [self.inviteLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.randomContentLb.mas_bottom).offset(16); + make.centerX.mas_equalTo(self.scrollView); + }]; + + [self.inviteImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(88, 8)); + make.top.mas_equalTo(self.inviteLabel.mas_bottom).offset(-6); + make.centerX.mas_equalTo(self.inviteLabel); + }]; + + [self.inviteContentLb mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backgroundImageView).inset(18); + make.top.mas_equalTo(self.inviteImageView.mas_bottom).offset(8); + }]; + + [self.closeBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.top.mas_equalTo(self.backgroundImageView); + make.width.height.mas_equalTo(32); + }]; +} + +#pragma mark - Event Response +- (void)onCloseBtnClick:(UIButton *)button { + [TTPopup dismiss]; +} + +- (void)setRuleString:(NSString *)ruleString { + if ([ruleString containsString:@"\\n"]) { + ruleString = [ruleString stringByReplacingOccurrencesOfString:@"\\n" withString:@"\n"]; + } + NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; + paragraphStyle.lineSpacing = 5; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:ruleString attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:[DJDKMIMOMColor mainTextColor]}]; + [attribute addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, ruleString.length)]; + self.ruleLabel.attributedText = attribute; +CGSize size = [self.ruleLabel sizeThatFits:CGSizeMake(300 -36, CGFLOAT_MAX)]; + self.scrollView.contentSize = CGSizeMake(0, size.height + 70 * 2 + 20); +} + +#pragma mark - Getters And Setters +- (UIImageView *)backgroundImageView { + if (!_backgroundImageView) { + _backgroundImageView = [[UIImageView alloc] init]; + _backgroundImageView.userInteractionEnabled = YES; + _backgroundImageView.image = [UIImage imageNamed:@"anchorPK_invite_bg"]; + } + return _backgroundImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPAnchorRandomPKRuleView0"); + _titleLabel.textColor = [UIColor whiteColor]; + _titleLabel.font = [UIFont systemFontOfSize:15]; + } + return _titleLabel; +} + + +- (UIImageView *)randomImageView { + if (!_randomImageView) { + _randomImageView = [[UIImageView alloc] init]; + _randomImageView.userInteractionEnabled = YES; + _randomImageView.image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor colorWithHexString:@"#1CD7FD"], [DJDKMIMOMColor colorWithHexString:@"#9277FF"], [DJDKMIMOMColor colorWithHexString:@"FF6BA3"]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)]; + _randomImageView.contentMode = UIViewContentModeScaleAspectFill; + _randomImageView.layer.masksToBounds = YES; + _randomImageView.layer.cornerRadius = 4; + } + return _randomImageView; +} + +- (UILabel *)randomLabel { + if (!_randomLabel) { + _randomLabel = [[UILabel alloc] init]; + _randomLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _randomLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _randomLabel.text= @"随机PK"; + } + return _randomLabel; +} + +- (UILabel *)ruleLabel { + if (!_ruleLabel) { + _ruleLabel = [[UILabel alloc] init]; + _ruleLabel.font = [UIFont systemFontOfSize:12]; + _ruleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _ruleLabel.numberOfLines = 0; + } + return _ruleLabel; +} + +- (UIScrollView *)scrollView { + if (!_scrollView) { + _scrollView = [[UIScrollView alloc] init]; + _scrollView.backgroundColor = [UIColor clearColor]; + _scrollView.showsHorizontalScrollIndicator = NO; + } + return _scrollView; +} + + +- (UILabel *)randomContentLb { + if (!_randomContentLb) { + _randomContentLb = [[UILabel alloc] init]; + NSString * title = YMLocalizedString(@"XPAnchorRandomPKRuleView2"); + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:[DJDKMIMOMColor mainTextColor]}]; + NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; + paragraphStyle.lineSpacing = 5; + [attribute addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, title.length)]; + _randomContentLb.attributedText = attribute; + _randomContentLb.numberOfLines = 0; + } + return _randomContentLb; +} + +- (UIImageView *)inviteImageView { + if (!_inviteImageView) { + _inviteImageView = [[UIImageView alloc] init]; + _inviteImageView.userInteractionEnabled = YES; + _inviteImageView.image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor colorWithHexString:@"#1CD7FD"], [DJDKMIMOMColor colorWithHexString:@"#9277FF"], [DJDKMIMOMColor colorWithHexString:@"FF6BA3"]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)]; + _inviteImageView.contentMode = UIViewContentModeScaleAspectFill; + _inviteImageView.layer.masksToBounds = YES; + _inviteImageView.layer.cornerRadius = 4; + } + return _inviteImageView; +} + +- (UILabel *)inviteLabel { + if (!_inviteLabel) { + _inviteLabel = [[UILabel alloc] init]; + _inviteLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _inviteLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _inviteLabel.text= @"邀请PK"; + } + return _inviteLabel; +} + +- (UILabel *)inviteContentLb { + if (!_inviteContentLb) { + _inviteContentLb = [[UILabel alloc] init]; + NSString * title = @"指定一个主播房主播,邀请其进行PK,对方接受后开启PK"; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:[DJDKMIMOMColor mainTextColor]}]; + NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; + paragraphStyle.lineSpacing = 5; + [attribute addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, title.length)]; + _inviteContentLb.attributedText = attribute; + _inviteContentLb.numberOfLines = 0; + } + return _inviteContentLb; +} + +- (UIButton *)closeBtn { + if (!_closeBtn) { + _closeBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_closeBtn addTarget:self action:@selector(onCloseBtnClick:) forControlEvents:UIControlEventTouchUpInside]; + [_closeBtn setBackgroundImage:[UIImage imageNamed:@"anchorPk_result_close"] forState:UIControlStateNormal]; + } + return _closeBtn; +} +@end diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/XCombatellegCombatChosenChamberRegard.h b/YuMi/Modules/YMRoom/View/AnchorPK/View/XCombatellegCombatChosenChamberRegard.h deleted file mode 100644 index 7fc8cbab..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorPK/View/XCombatellegCombatChosenChamberRegard.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YMAnchorPKSelectRoomView.h -// YUMI -// -// Created by YUMI on 2022/4/8. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class XCombatellegCombatChosenChamberRegard, ThroughoutChamberCombatAbstractMatrix; -@protocol XCombatellegCombatChosenChamberRegardRepresendtation - -- (void)XCombatellegCombatChosenChamberRegard:(XCombatellegCombatChosenChamberRegard *)view didChoosePKRoom:(ThroughoutChamberCombatAbstractMatrix *)pkRoomInfo; - -@end - -@interface XCombatellegCombatChosenChamberRegard : UIView - -@property (nonatomic,weak) id delegate; -@property (nonatomic,copy) NSString *roomUid; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/XCombatellegCombatChosenChamberRegard.m b/YuMi/Modules/YMRoom/View/AnchorPK/View/XCombatellegCombatChosenChamberRegard.m deleted file mode 100644 index d7ed04e9..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorPK/View/XCombatellegCombatChosenChamberRegard.m +++ /dev/null @@ -1,318 +0,0 @@ -// -// YMAnchorPKSelectRoomView.m -// YUMI -// -// Created by YUMI on 2022/4/8. -// - -#import "XCombatellegCombatChosenChamberRegard.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "XNDJTBWGLoadingTool.h" -#import "UIImage+Utils.h" -#import "Api+AnchorPk.h" -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "ThroughoutChamberCombatAbstractMatrix.h" -#import "YUMIThroughoutChamberCombatDispossessTabulationRegardElement.h" -#import "XCombatellegCombatTabulationRegardElement.h" - -@interface XCombatellegCombatChosenChamberRegard () - -@property (nonatomic, strong) UIButton *backButton; -@property (nonatomic, strong) UITableView *tableView; -@property (nonatomic,strong) UIView * introjectionEncourageRegard; -@property (nonatomic,strong) UIButton *huntforBtuton; -@property (nonatomic,strong) UITextField *searchTextField; -@property (nonatomic, strong) NSMutableArray *datasource; -@property (nonatomic, assign) NSInteger page; -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; -@property (nonatomic, strong) ThroughoutChamberCombatAbstractMatrix *chosenChamberAbstract; - -@end - -@implementation XCombatellegCombatChosenChamberRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - [self initIntelligencerGrantedTerminalerRrfresh]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = UIColorFromRGB(0x2A2A39); - [self addSubview:self.backButton]; - [self addSubview:self.introjectionEncourageRegard]; - [self addSubview:self.tableView]; - - [self.introjectionEncourageRegard addSubview:self.huntforBtuton]; - [self.introjectionEncourageRegard addSubview:self.searchTextField]; - - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onDigitalDirectortowardseResign:)]; - [self addGestureRecognizer:tap]; -} - -- (void)initChildLyRestrictions { - [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(12); - make.width.mas_equalTo(22); - make.height.mas_equalTo(22); - make.top.mas_equalTo(27); - }]; - - - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.introjectionEncourageRegard.mas_bottom).mas_offset(5); - make.left.right.mas_equalTo(0); - make.bottom.mas_equalTo(self.mas_bottom); - }]; - [self.introjectionEncourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(30); - make.left.mas_equalTo(self.backButton.mas_right).offset(5); - make.right.mas_equalTo(self.mas_right).offset(-15); - make.centerY.mas_equalTo(self.backButton); - }]; - - [self.huntforBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(18, 18)); - make.centerY.mas_equalTo(self.introjectionEncourageRegard); - make.right.mas_equalTo(self.introjectionEncourageRegard).offset(-12); - }]; - - [self.searchTextField mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.introjectionEncourageRegard).offset(25); - make.top.bottom.mas_equalTo(self.introjectionEncourageRegard); - make.right.mas_equalTo(self.huntforBtuton.mas_left).offset(-5); - }]; -} - -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; -} - -#pragma mark - 刷新的fangfa -- (void)intelligenceerRenovtowardseh { - self.page = 1; - [Api acquireKellegCombatChamberSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSArray * array = [ThroughoutChamberCombatAbstractMatrix mtowardsrixsAboutGarment:data.data]; - [self acquireThroughoutChamberCombatSttowardsementAccomplishment:array state:0]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } roomUid:self.roomUid pageNum:[NSString stringWithFormat:@"%ld", self.page] pageSize:@"20" pkType:@"2"]; -} - -- (void)footerRenovtowardseh { - if (self.hasNoFurthaerAtoloudspeaker) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Anchor_PK_Select_Room_View_0")]; - return; - } - self.page++; - [Api acquireKellegCombatChamberSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSArray * array = [ThroughoutChamberCombatAbstractMatrix mtowardsrixsAboutGarment:data.data]; - [self acquireThroughoutChamberCombatSttowardsementAccomplishment:array state:1]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } roomUid:self.roomUid pageNum:[NSString stringWithFormat:@"%ld", self.page] pageSize:@"20" pkType:@"2"]; -} - -- (void)acquireThroughoutChamberCombatSttowardsementAccomplishment:(NSArray *)list state:(int)state { - if (state == 0) { - self.chosenChamberAbstract = nil; - [self.datasource removeAllObjects]; - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } - if (list.count > 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - [self.datasource addObjectsFromArray:list]; - } else { - self.hasNoFurthaerAtoloudspeaker = YES; - [self.tableView.mj_footer endRefreshingWithNoMoreData]; - } - [self.tableView reloadData]; -} - -- (void)onDigitalDirectortowardseResign:(UITapGestureRecognizer *)ges { - [self.searchTextField resignFirstResponder]; -} -#pragma mark - tableviewDelegate -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - XCombatellegCombatTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XCombatellegCombatTabulationRegardElement class])]; - if (cell == nil) { - cell = [[XCombatellegCombatTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XCombatellegCombatTabulationRegardElement class])]; - } - cell.delegate = self; - ThroughoutChamberCombatAbstractMatrix * pkRoomInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (pkRoomInfo.uid.integerValue == self.chosenChamberAbstract.uid.integerValue) { - pkRoomInfo.hadSelected = YES; - } else { - pkRoomInfo.hadSelected = NO; - } - cell.chamberCombatAbstract = pkRoomInfo; - return cell; - } - - YUMIThroughoutChamberCombatDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIThroughoutChamberCombatDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIThroughoutChamberCombatDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIThroughoutChamberCombatDispossessTabulationRegardElement class])]; - } - return cell; - -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - return 75; - } - return (370 + kSafeAreaBottomHeight); -} - -#pragma mark - XCombatellegCombatTabulationViweElementRepresendtation -- (void)xCombatellegCombatTarbsultowardsionViweElement:(XCombatellegCombatTabulationRegardElement *)view didChooseRoom:(ThroughoutChamberCombatAbstractMatrix *)roomInfo { - - self.chosenChamberAbstract = roomInfo; - [self.searchTextField resignFirstResponder]; - if (self.delegate && [self.delegate respondsToSelector:@selector(XCombatellegCombatChosenChamberRegard:didChoosePKRoom:)]) { - [self.delegate XCombatellegCombatChosenChamberRegard:self didChoosePKRoom:self.chosenChamberAbstract]; - } - CATransition *transition = [CATransition animation]; - transition.duration = 0.3f; - transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; - transition.type = kCATransitionPush; - transition.subtype = kCATransitionFromLeft; - [self.layer addAnimation:transition forKey:nil]; - [self removeFromSuperview]; -} - -#pragma mark - Event Response -- (void)huntforBtutonPerformance:(UIButton *)sender { - if (self.searchTextField.text.length > 0) { - [Api huntforKellegCombatChamberSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSArray * array = [ThroughoutChamberCombatAbstractMatrix mtowardsrixsAboutGarment:data.data]; - [self acquireThroughoutChamberCombatSttowardsementAccomplishment:array state:0]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } erbanNo:self.searchTextField.text roomUid:@"" pageNum:@"1" pageSize:@"50" pkType:@"2"]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:@"请输入要搜索的厅ID"]; - } -} - -- (void)encourageBtutonPerformance:(UIButton *)sender { - [self.searchTextField resignFirstResponder]; - CATransition *transition = [CATransition animation]; - transition.duration = 0.3f; - transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; - transition.type = kCATransitionPush; - transition.subtype = kCATransitionFromLeft; - [self.layer addAnimation:transition forKey:nil]; - [self removeFromSuperview]; -} - -#pragma mark - Getters And Setters -- (void)setRoomUid:(NSString *)roomUid { - _roomUid = roomUid; - [self.datasource removeAllObjects]; - [self.tableView reloadData]; - if (_roomUid.length > 0) { - [self intelligenceerRenovtowardseh]; - } -} -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[XCombatellegCombatTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([XCombatellegCombatTabulationRegardElement class])]; - [_tableView registerClass:[YUMIThroughoutChamberCombatDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIThroughoutChamberCombatDispossessTabulationRegardElement class])]; - } - return _tableView; -} - - -- (UIView *)introjectionEncourageRegard { - if (!_introjectionEncourageRegard) { - _introjectionEncourageRegard = [[UIView alloc] init]; - _introjectionEncourageRegard.backgroundColor = UIColorFromRGB(0x4C4C6A); - _introjectionEncourageRegard.layer.masksToBounds = YES; - _introjectionEncourageRegard.layer.cornerRadius = 15; - } - return _introjectionEncourageRegard; -} - -- (UIButton *)huntforBtuton { - if (!_huntforBtuton) { - _huntforBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_huntforBtuton setImage:[UIImage imageNamed:@"yumi_main_search_input_search"] forState:UIControlStateNormal]; - [_huntforBtuton setImage:[UIImage imageNamed:@"yumi_main_search_input_search"] forState:UIControlStateSelected]; - [_huntforBtuton addTarget:self action:@selector(huntforBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _huntforBtuton; -} - -- (UITextField *)searchTextField { - if (!_searchTextField) { - _searchTextField = [[UITextField alloc] init]; - _searchTextField.layer.cornerRadius = 15; - _searchTextField.layer.masksToBounds = YES; - _searchTextField.tintColor = [UIColor whiteColor]; - _searchTextField.textColor = [UIColor whiteColor]; - _searchTextField.backgroundColor = [UIColor clearColor]; - _searchTextField.font = [UIFont systemFontOfSize:13]; - NSString *placeholder = [NSString stringWithFormat:@"请输入厅的ID"]; - _searchTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholder attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:13], NSForegroundColorAttributeName : [UIColor colorWithWhite:1 alpha:0.4]}]; - } - return _searchTextField; -} - -- (UIButton *)backButton { - if (!_backButton) { - _backButton = [[UIButton alloc] init]; - [_backButton setImage:[UIImage imageNamed:@"yumi_main_search_white_back"] forState:UIControlStateNormal]; - _backButton.imageView.contentMode = UIViewContentModeScaleAspectFit; - [_backButton addTarget:self action:@selector(encourageBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _backButton; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/XCombatellegCombatChosenGenreGovernancer.h b/YuMi/Modules/YMRoom/View/AnchorPK/View/XCombatellegCombatChosenGenreGovernancer.h deleted file mode 100644 index 7459dfe4..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorPK/View/XCombatellegCombatChosenGenreGovernancer.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMAnchorSelectTypeViewController.h -// YUMI -// -// Created by YUMI on 2022/11/17. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface XCombatellegCombatChosenGenreGovernancer : MvpRegardGovernancer - -- (instancetype)initAboutChamberCid:(NSString *)roomUid; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/XCombatellegCombatChosenGenreGovernancer.m b/YuMi/Modules/YMRoom/View/AnchorPK/View/XCombatellegCombatChosenGenreGovernancer.m deleted file mode 100644 index 0b265158..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorPK/View/XCombatellegCombatChosenGenreGovernancer.m +++ /dev/null @@ -1,203 +0,0 @@ -// -// YMAnchorSelectTypeViewController.m -// YUMI -// -// Created by YUMI on 2022/11/17. -// - -#import "XCombatellegCombatChosenGenreGovernancer.h" -#import "DJDKMIMOMColor.h" -#import -#import "YUMIMacroUitls.h" -#import "MKJPopup.h" -#import "XCombatellegCombatPreadominantRegard.h" -#import "XCombatellegCombatRegardGovernancer.h" -#import "StatsticsticsServingFacilitater.h" -#import "XCCurrentVCStackExecutive.h" -#import "Api+Room.h" -#import "XCombatellegRandomCombatPreadominantRegard.h" -#import "XCombatellegCombatExternalizer.h" -#import "XCombatellegCombatCeremony.h" - -@interface XCombatellegCombatChosenGenreGovernancer () - -@property (nonatomic, copy) NSString *roomUid; - -@property (nonatomic, strong) UIView *gesRegard; -@property (nonatomic, strong) UIView *backgroundRegard; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UIButton *preadominantBtuton; -@property (nonatomic, strong) UIView *burlywoodRegard; -@property (nonatomic, strong) UIButton *arbitraryCombatBtuton; -@property (nonatomic, strong) UIButton *centiretyforCombatBtuton; - -@end - -@implementation XCombatellegCombatChosenGenreGovernancer - -- (XCombatellegCombatExternalizer *)producePresimport { - return [[XCombatellegCombatExternalizer alloc] init];; -} - -- (instancetype)initAboutChamberCid:(NSString *)roomUid { - if (self = [super init]) { - self.roomUid = roomUid; - self.modalPresentationStyle = UIModalPresentationOverFullScreen; - } - return self; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self accelertowardseChildLy]; - [self setupContraints]; - self.view.backgroundColor = [UIColor clearColor]; -} - -- (void)accelertowardseChildLy { - [self.view addSubview:self.gesRegard]; - [self.view addSubview:self.backgroundRegard]; - [self.backgroundRegard addSubview:self.titleLabel]; - [self.backgroundRegard addSubview:self.preadominantBtuton]; - [self.backgroundRegard addSubview:self.burlywoodRegard]; - [self.backgroundRegard addSubview:self.arbitraryCombatBtuton]; - [self.backgroundRegard addSubview:self.centiretyforCombatBtuton]; -} - -- (void)setupContraints { - [self.gesRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(0); - make.bottom.mas_equalTo(self.backgroundRegard.mas_top); - }]; - [self.backgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(0); - make.height.mas_equalTo(250); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(16); - make.centerX.mas_equalTo(self.backgroundRegard); - make.height.mas_equalTo(18); - }]; - [self.preadominantBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-16); - make.centerY.mas_equalTo(self.titleLabel); - make.width.height.mas_equalTo(21); - }]; - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(8); - make.left.right.mas_equalTo(0); - make.height.mas_equalTo(0.5); - }]; - [self.arbitraryCombatBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.backgroundRegard.mas_centerX).mas_offset(-22); - make.size.mas_equalTo(CGSizeMake(100, 135)); - make.top.mas_equalTo(self.burlywoodRegard.mas_bottom).mas_offset(16); - }]; - [self.centiretyforCombatBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.arbitraryCombatBtuton.mas_right).mas_offset(44); - make.size.mas_equalTo(CGSizeMake(100, 135)); - make.top.mas_equalTo(self.arbitraryCombatBtuton); - }]; -} - -- (void)preadominantBtutonPerformance:(UIButton *)sender { - [Api requisitionKellegCombatePreadominant:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - XCombatellegRandomCombatPreadominantRegard *view = [[XCombatellegRandomCombatPreadominantRegard alloc] init]; - view.preadominantBWSttr = data.data; - [MKJPopup popupRegard:view style:MKJPopupStyleAlert]; - } - }]; - -} - -- (void)arbitraryBtutonPerformance:(UIButton *)sender { - [self.presimport adapttowardsionArbitraryCombat:self.roomUid]; -} - -- (void)centiretyforBtutonPerformance:(UIButton *)sender { - [self dismissViewControllerAnimated:YES completion:^{ - XCombatellegCombatRegardGovernancer * acrossRoomPKVC = [[XCombatellegCombatRegardGovernancer alloc] initAboutChamberCid:self.roomUid]; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController presentViewController:acrossRoomPKVC animated:YES completion:nil]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"openAnchorPk"}]; - - }]; -} - -- (void)dismiss:(UITapGestureRecognizer *)ges { - [self dismissViewControllerAnimated:YES completion:nil]; -} - -#pragma mark - XCombatellegCombatCeremony -- (void)adapttowardsionArbitraryCombatAccomplishment:(long long)matchPkStartTime { - [[NSNotificationCenter defaultCenter] postNotificationName:@"anchorPKMatchBegin" object:@{@"matchPkStartTime" : @(matchPkStartTime)}]; - [self dismissViewControllerAnimated:YES completion:nil]; -} - -#pragma mark - getter -- (UIView *)gesRegard { - if (!_gesRegard) { - _gesRegard = [[UIView alloc] init]; - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismiss:)]; - [_gesRegard addGestureRecognizer:tap]; - } - return _gesRegard; -} - -- (UIView *)backgroundRegard { - if (!_backgroundRegard) { - _backgroundRegard = [[UIView alloc] init]; - _backgroundRegard.backgroundColor = UIColorFromRGB(0x0D0E2C); - CAShapeLayer * layer = [CAShapeLayer layer]; - layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, 250) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(8, 8)].CGPath; - _backgroundRegard.layer.mask = layer; - } - return _backgroundRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Anchor_PK_Select_Type_Controller_0"); - _titleLabel.textColor = [UIColor whiteColor]; - _titleLabel.font = [UIFont systemFontOfSize:14]; - } - return _titleLabel; -} - -- (UIButton *)preadominantBtuton { - if (!_preadominantBtuton) { - _preadominantBtuton = [[UIButton alloc] init]; - [_preadominantBtuton setImage:[UIImage imageNamed:@"yumi_scope_across_pk_help"] forState:UIControlStateNormal]; - [_preadominantBtuton addTarget:self action:@selector(preadominantBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _preadominantBtuton; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = UIColorRGBAlpha(0xffffff, 0.1); - } - return _burlywoodRegard; -} - -- (UIButton *)arbitraryCombatBtuton { - if (!_arbitraryCombatBtuton) { - _arbitraryCombatBtuton = [[UIButton alloc] init]; - [_arbitraryCombatBtuton setImage:[UIImage imageNamed:@"yumi_anchor_pk_random_pic"] forState:UIControlStateNormal]; - [_arbitraryCombatBtuton addTarget:self action:@selector(arbitraryBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _arbitraryCombatBtuton; -} - -- (UIButton *)centiretyforCombatBtuton { - if (!_centiretyforCombatBtuton) { - _centiretyforCombatBtuton = [[UIButton alloc] init]; - [_centiretyforCombatBtuton setImage:[UIImage imageNamed:@"yumi_anchor_pk_invite_pic"] forState:UIControlStateNormal]; - [_centiretyforCombatBtuton addTarget:self action:@selector(centiretyforBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _centiretyforCombatBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/XCombatellegCombatRegardGovernancer.h b/YuMi/Modules/YMRoom/View/AnchorPK/View/XCombatellegCombatRegardGovernancer.h deleted file mode 100644 index 213407db..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorPK/View/XCombatellegCombatRegardGovernancer.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMAnchorPKViewController.h -// YUMI -// -// Created by YUMI on 2022/4/8. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface XCombatellegCombatRegardGovernancer : MvpRegardGovernancer - -- (instancetype)initAboutChamberCid:(NSString *)roomUid; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/XCombatellegCombatRegardGovernancer.m b/YuMi/Modules/YMRoom/View/AnchorPK/View/XCombatellegCombatRegardGovernancer.m deleted file mode 100644 index 38959472..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorPK/View/XCombatellegCombatRegardGovernancer.m +++ /dev/null @@ -1,618 +0,0 @@ -// -// YMAnchorPKViewController.m -// YUMI -// -// Created by YUMI on 2022/4/8. -// - -#import "XCombatellegCombatRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "YUMIMacroUitls.h" -#import "UIImage+Utils.h" -#import "MKJPopup.h" -#import "ThroughoutChamberCombatAbstractMatrix.h" -#import "XCombatellegCombatChosenChamberRegard.h" -#import "XCombatellegCombatExternalizer.h" -#import "XCombatellegCombatCeremony.h" - -#define kContentHeight (404 + kSafeAreaBottomHeight) - -@interface XCombatellegCombatRegardGovernancer () -@property (nonatomic, strong) UIView *apexRegard; -@property (nonatomic, strong) UIView *contentView; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic,strong) UIStackView *consumerHierarchyRegard; -@property (nonatomic, strong) UILabel *chosenCombatSequencignation; -@property (nonatomic, strong) UIButton *chosenCombatBtuton; -@property (nonatomic,strong) UIStackView *intratemporalHierarchyRegard; -@property (nonatomic, strong) UILabel *chosenCombatIntratemporalSequencignation; -@property (nonatomic,strong) UIStackView *concludeIntratemporalHierarchyRegard; -@property (nonatomic, strong) UIButton *tenPennyBtuton; -@property (nonatomic, strong) UIButton *twentyPennyBtuton; -@property (nonatomic, strong) UIButton *thirtyPennyBtuton; -@property (nonatomic, strong) UITextField *customIntratemporalEssayUniverse; -@property (nonatomic,strong) UIStackView *disportHierarchyRegard; -@property (nonatomic, strong) UILabel *combateDisportMannerSequencignation; -@property (nonatomic, strong) UITextField *combateDisportMannerEssayUniverse; -@property (nonatomic, strong) UIButton *doneBtuton; -@property (nonatomic, strong) UIView *chosenChamberSatisfperformanceRegard; -@property (nonatomic, strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic, strong) UILabel *chamberChampionSequencignation; -@property (nonatomic, strong) UILabel *idSequencignation; -@property (nonatomic, strong) UIButton *revocationBtuton; -@property (nonatomic, strong) ThroughoutChamberCombatAbstractMatrix *chosenChamberAbstract; -@property (nonatomic, assign) NSInteger combatContinuance; -@property (nonatomic, strong) XCombatellegCombatChosenChamberRegard *chosenRegard; -@property (nonatomic,strong) NSString *roomUid; -@end - -@implementation XCombatellegCombatRegardGovernancer - -- (instancetype)initAboutChamberCid:(NSString *)roomUid { - if (self = [super init]) { - self.roomUid = roomUid; - self.modalPresentationStyle = UIModalPresentationOverFullScreen; - } - return self; -} - -- (XCombatellegCombatExternalizer *)producePresimport { - return [[XCombatellegCombatExternalizer alloc] init];; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - self.combatContinuance = 10; -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - [IQKeyboardManager sharedManager].enable = YES; -} - -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { - [self.view endEditing:YES]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.view.backgroundColor = [UIColor clearColor]; - [self.view addSubview:self.apexRegard]; - [self.view addSubview:self.contentView]; - - [self.contentView addSubview:self.titleLabel]; - [self.contentView addSubview:self.consumerHierarchyRegard]; - [self.contentView addSubview:self.intratemporalHierarchyRegard]; - [self.contentView addSubview:self.disportHierarchyRegard]; - [self.contentView addSubview:self.customIntratemporalEssayUniverse]; - [self.contentView addSubview:self.doneBtuton]; - - [self.consumerHierarchyRegard addArrangedSubview:self.chosenCombatSequencignation]; - [self.consumerHierarchyRegard addArrangedSubview:self.chosenCombatBtuton]; - [self.consumerHierarchyRegard addArrangedSubview:self.chosenChamberSatisfperformanceRegard]; - - [self.intratemporalHierarchyRegard addArrangedSubview:self.chosenCombatIntratemporalSequencignation]; - [self.intratemporalHierarchyRegard addArrangedSubview:self.concludeIntratemporalHierarchyRegard]; - - [self.concludeIntratemporalHierarchyRegard addArrangedSubview:self.tenPennyBtuton]; - [self.concludeIntratemporalHierarchyRegard addArrangedSubview:self.twentyPennyBtuton]; - [self.concludeIntratemporalHierarchyRegard addArrangedSubview:self.thirtyPennyBtuton]; - - [self.disportHierarchyRegard addArrangedSubview:self.combateDisportMannerSequencignation]; - [self.disportHierarchyRegard addArrangedSubview:self.combateDisportMannerEssayUniverse]; - - [self.chosenChamberSatisfperformanceRegard addSubview:self.intelligenceportraitIndicateRegard]; - [self.chosenChamberSatisfperformanceRegard addSubview:self.chamberChampionSequencignation]; - [self.chosenChamberSatisfperformanceRegard addSubview:self.idSequencignation]; - [self.chosenChamberSatisfperformanceRegard addSubview:self.revocationBtuton]; -} - -- (void)initChildLyRestrictions { - - [self.apexRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.contentView.mas_top); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.height.mas_equalTo(kContentHeight); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.contentView); - make.top.mas_equalTo(18); - }]; - [self.consumerHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(32); - make.left.mas_equalTo(self.contentView).offset(22); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(20); - }]; - - [self.chosenCombatSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(90); - }]; - - [self.chosenCombatBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(22); - }]; - - [self.chosenChamberSatisfperformanceRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth - 85 - 12 * 2 - 16); - }]; - - [self.intratemporalHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(32); - make.left.right.mas_equalTo(self.contentView).inset(22); - make.top.mas_equalTo(self.consumerHierarchyRegard.mas_bottom).offset(30); - }]; - - [self.chosenCombatIntratemporalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(self.chosenCombatSequencignation); - }]; - - [self.customIntratemporalEssayUniverse mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(32); - make.width.mas_equalTo(170); - make.top.mas_equalTo(self.intratemporalHierarchyRegard.mas_bottom).offset(16); - make.left.mas_equalTo(self.tenPennyBtuton); - }]; - - [self.disportHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.height.mas_equalTo(self.intratemporalHierarchyRegard); - make.top.mas_equalTo(self.customIntratemporalEssayUniverse.mas_bottom).offset(30); - }]; - - [self.combateDisportMannerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(self.chosenCombatSequencignation); - }]; - - [self.doneBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(40); - make.left.right.mas_equalTo(self.contentView).inset(40); - make.bottom.mas_equalTo(self.contentView.mas_bottom).offset(-34 - kSafeAreaBottomHeight); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.chosenChamberSatisfperformanceRegard); - make.left.mas_equalTo(self.chosenChamberSatisfperformanceRegard); - make.height.width.mas_equalTo(60); - }]; - [self.chamberChampionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(-3); - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).mas_offset(6); - make.right.mas_lessThanOrEqualTo(self.revocationBtuton.mas_left); - }]; - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).mas_offset(3); - make.left.right.mas_equalTo(self.chamberChampionSequencignation); - }]; - - [self.revocationBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.right.mas_equalTo(self.chosenChamberSatisfperformanceRegard).offset(-12); - make.height.width.mas_equalTo(22); - }]; -} - -- (void)refurbishDoneBtutonDeclare { - if (self.chosenChamberAbstract && self.combatContinuance >= 5 && self.combatContinuance <= 30) { - self.doneBtuton.enabled = YES; - } else { - self.doneBtuton.enabled = NO; - } -} -#pragma mark - XCombatellegCombatCeremony -- (void)instituteKellegCombatAccomplishment { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Anchor_PK_View_Controller_0")]; - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)instituteKellegCombatFlunk:(NSString *)message { - if (message.length >0) { - MKJPrecautiousDisposition * config = [[MKJPrecautiousDisposition alloc] init]; - config.performanceStyle = TTAlertActionConfirmStyle; - config.revocationBtutonDisposition.title = YMLocalizedString(@"YUMI_Anchor_PK_View_Controller_1"); - config.message = message; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - - } cancelHandler:^{ - - }]; - } -} - -#pragma mark - XCombatellegCombatChosenChamberRegardRepresendtation -- (void)XCombatellegCombatChosenChamberRegard:(XCombatellegCombatChosenChamberRegard *)view didChoosePKRoom:(ThroughoutChamberCombatAbstractMatrix *)pkRoomInfo { - if (pkRoomInfo) { - [self.consumerHierarchyRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(60); - }]; - self.chosenChamberSatisfperformanceRegard.hidden = NO; - self.chosenCombatBtuton.hidden= YES; - self.intelligenceportraitIndicateRegard.imageUrl = pkRoomInfo.avatar; - self.chamberChampionSequencignation.text = pkRoomInfo.title; - self.idSequencignation.text = [NSString stringWithFormat:@"ID:%@", pkRoomInfo.erbanNo]; - self.chosenChamberAbstract = pkRoomInfo; - [self refurbishDoneBtutonDeclare]; - } -} - -#pragma mark - UITextFieldDelegate -- (void)essayUniverseDidDiversifictowardsiond:(UITextField *)essayUniverse { - if (essayUniverse == self.customIntratemporalEssayUniverse) { - self.tenPennyBtuton.selected = YES; - self.twentyPennyBtuton.selected = YES; - self.thirtyPennyBtuton.selected = YES; - NSString *countStr = [self.customIntratemporalEssayUniverse.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; - NSInteger count = [countStr integerValue]; - if (count > 30) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Anchor_PK_View_Controller_2")]; - essayUniverse.text = @"30"; - } else if(count < 5) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Anchor_PK_View_Controller_3")]; - } - self.combatContinuance = essayUniverse.text.integerValue; - [self refurbishDoneBtutonDeclare]; - } else if(essayUniverse == self.combateDisportMannerEssayUniverse) { - if (self.combateDisportMannerEssayUniverse.text.length > 10) { - self.combateDisportMannerEssayUniverse.text = [self.combateDisportMannerEssayUniverse.text substringToIndex:10]; - } - } -} - -- (BOOL)essayUniverse:(UITextField *)essayUniverse shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { - if (essayUniverse == self.customIntratemporalEssayUniverse) { - NSString *regex =@"[0-9]*"; - NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex]; - if ([pred evaluateWithObject:string]) { - return YES; - } - return NO; - } - return YES; -} - -#pragma mark - Event Response -- (void)chosenCombatBtutonPerformance:(UIButton *)sender { - [self.customIntratemporalEssayUniverse resignFirstResponder]; - [self.combateDisportMannerEssayUniverse resignFirstResponder]; - self.chosenRegard.roomUid = self.roomUid; - CATransition *transition = [CATransition animation]; - transition.duration = 0.3f; - transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; - transition.type = kCATransitionPush; - transition.subtype = kCATransitionFromRight; - [self.chosenRegard.layer addAnimation:transition forKey:nil]; - [self.contentView addSubview:self.chosenRegard]; -} - -- (void)concludeIntrtowardsemporalBtutonPerformance:(UIButton *)sender { - [self.customIntratemporalEssayUniverse resignFirstResponder]; - [self.combateDisportMannerEssayUniverse resignFirstResponder]; - self.tenPennyBtuton.selected = YES; - self.twentyPennyBtuton.selected = YES; - self.thirtyPennyBtuton.selected = YES; - sender.selected = NO; - self.combatContinuance = sender.tag; - self.customIntratemporalEssayUniverse.text = nil; -} - -- (void)doneBtutonPerformance:(UIButton *)sender { - [self.customIntratemporalEssayUniverse resignFirstResponder]; - [self.combateDisportMannerEssayUniverse resignFirstResponder]; - NSString * pkDes = self.combateDisportMannerEssayUniverse.text.length > 0 ? self.combateDisportMannerEssayUniverse.text : @""; - [self.presimport instituteKellegCombat:self.roomUid duration:self.combatContinuance acceptUid:self.chosenChamberAbstract.uid playDesc:pkDes pkType:@"2"]; -} - -- (void)revoctowardsionBtutonPerformance:(UIButton *)sender { - self.chosenChamberSatisfperformanceRegard.hidden = YES; - self.chosenCombatBtuton.hidden = NO; - self.chosenChamberAbstract = nil; - [self refurbishDoneBtutonDeclare]; - self.intelligenceportraitIndicateRegard.image = nil; - self.chamberChampionSequencignation.text = nil; - self.idSequencignation.text = nil; - [self.consumerHierarchyRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(32); - }]; -} - -- (void)onDigitalDirectortowardseResign:(UITapGestureRecognizer *)ges { - [self.customIntratemporalEssayUniverse resignFirstResponder]; - [self.combateDisportMannerEssayUniverse resignFirstResponder]; - if (self.chosenRegard.superview) { - CATransition *transition = [CATransition animation]; - transition.duration = 0.3f; - transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; - transition.type = kCATransitionPush; - transition.subtype = kCATransitionFromLeft; - [self.chosenRegard.layer addAnimation:transition forKey:nil]; - [self.chosenRegard removeFromSuperview]; - } else { - [self dismissViewControllerAnimated:YES completion:nil]; - } -} - -#pragma mark - Getters And Setters -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textColor = UIColor.whiteColor; - _titleLabel.font = [UIFont boldSystemFontOfSize:18]; - _titleLabel.text = @"主播PK"; - } - return _titleLabel; -} - -- (UIStackView *)consumerHierarchyRegard { - if (!_consumerHierarchyRegard) { - _consumerHierarchyRegard = [[UIStackView alloc] init]; - _consumerHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _consumerHierarchyRegard.distribution = UIStackViewDistributionFill; - _consumerHierarchyRegard.alignment = UIStackViewAlignmentFill; - _consumerHierarchyRegard.spacing = 16; - } - return _consumerHierarchyRegard; -} -- (UILabel *)chosenCombatSequencignation { - if (!_chosenCombatSequencignation) { - _chosenCombatSequencignation = [[UILabel alloc] init]; - _chosenCombatSequencignation.textColor = [UIColor whiteColor]; - _chosenCombatSequencignation.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; - _chosenCombatSequencignation.text = YMLocalizedString(@"YUMI_Anchor_PK_View_Controller_5"); - [_chosenCombatSequencignation setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - } - return _chosenCombatSequencignation; -} -- (UIButton *)chosenCombatBtuton { - if (!_chosenCombatBtuton) { - _chosenCombatBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_chosenCombatBtuton setImage:[UIImage imageNamed:@"yumi_scope_across_pk_add_room"] forState:UIControlStateNormal]; - [_chosenCombatBtuton addTarget:self action:@selector(chosenCombatBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _chosenCombatBtuton; -} - -- (UIStackView *)intratemporalHierarchyRegard { - if (!_intratemporalHierarchyRegard) { - _intratemporalHierarchyRegard = [[UIStackView alloc] init]; - _intratemporalHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _intratemporalHierarchyRegard.distribution = UIStackViewDistributionFill; - _intratemporalHierarchyRegard.alignment = UIStackViewAlignmentFill; - _intratemporalHierarchyRegard.spacing = 16; - } - return _intratemporalHierarchyRegard; -} -- (UILabel *)chosenCombatIntratemporalSequencignation { - if (!_chosenCombatIntratemporalSequencignation) { - _chosenCombatIntratemporalSequencignation = [[UILabel alloc] init]; - _chosenCombatIntratemporalSequencignation.textColor =[UIColor whiteColor]; - _chosenCombatIntratemporalSequencignation.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; - _chosenCombatIntratemporalSequencignation.text = YMLocalizedString(@"YUMI_Anchor_PK_View_Controller_6"); - } - return _chosenCombatIntratemporalSequencignation; -} - -- (UIStackView *)concludeIntratemporalHierarchyRegard { - if (!_concludeIntratemporalHierarchyRegard) { - _concludeIntratemporalHierarchyRegard = [[UIStackView alloc] init]; - _concludeIntratemporalHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _concludeIntratemporalHierarchyRegard.distribution = UIStackViewDistributionFillEqually; - _concludeIntratemporalHierarchyRegard.alignment = UIStackViewAlignmentFill; - _concludeIntratemporalHierarchyRegard.spacing = 5; - } - return _concludeIntratemporalHierarchyRegard; -} - -- (UIButton *)tenPennyBtuton { - if (!_tenPennyBtuton) { - _tenPennyBtuton = [[UIButton alloc] init]; - [_tenPennyBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0x1CD7FD), UIColorFromRGB(0x9377FF), UIColorFromRGB(0xFF6BA3)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_tenPennyBtuton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0x4C4C6A)] forState:UIControlStateSelected]; - [_tenPennyBtuton setTitle:YMLocalizedString(@"YUMI_Anchor_PK_View_Controller_7") forState:UIControlStateNormal]; - _tenPennyBtuton.titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - [_tenPennyBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_tenPennyBtuton setTitleColor:[DJDKMIMOMColor prohibitionBtutonEssayPrettify] forState:UIControlStateSelected]; - _tenPennyBtuton.tag = 10; - [_tenPennyBtuton addTarget:self action:@selector(concludeIntrtowardsemporalBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _tenPennyBtuton.selected = NO; - _tenPennyBtuton.layer.masksToBounds = YES; - _tenPennyBtuton.layer.cornerRadius = 32 / 2; - } - return _tenPennyBtuton; -} - -- (UIButton *)twentyPennyBtuton { - if (!_twentyPennyBtuton) { - _twentyPennyBtuton = [[UIButton alloc] init]; - [_twentyPennyBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0x1CD7FD), UIColorFromRGB(0x9377FF), UIColorFromRGB(0xFF6BA3)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_twentyPennyBtuton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0x4C4C6A)] forState:UIControlStateSelected]; - [_twentyPennyBtuton setTitle:YMLocalizedString(@"YUMI_Anchor_PK_View_Controller_8") forState:UIControlStateNormal]; - _twentyPennyBtuton.titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - [_twentyPennyBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [_twentyPennyBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; - _twentyPennyBtuton.tag = 20; - [_twentyPennyBtuton addTarget:self action:@selector(concludeIntrtowardsemporalBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _twentyPennyBtuton.selected = YES; - _twentyPennyBtuton.layer.masksToBounds = YES; - _twentyPennyBtuton.layer.cornerRadius = 32 / 2; - } - return _twentyPennyBtuton; -} - -- (UIButton *)thirtyPennyBtuton { - if (!_thirtyPennyBtuton) { - _thirtyPennyBtuton = [[UIButton alloc] init]; - [_thirtyPennyBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0x1CD7FD), UIColorFromRGB(0x9377FF), UIColorFromRGB(0xFF6BA3)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_thirtyPennyBtuton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0x4C4C6A)] forState:UIControlStateSelected]; - [_thirtyPennyBtuton setTitle:YMLocalizedString(@"YUMI_Anchor_PK_View_Controller_9") forState:UIControlStateNormal]; - _thirtyPennyBtuton.titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - [_thirtyPennyBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [_thirtyPennyBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; - _thirtyPennyBtuton.tag = 30; - _thirtyPennyBtuton.layer.masksToBounds = YES; - _thirtyPennyBtuton.layer.cornerRadius = 32 / 2; - [_thirtyPennyBtuton addTarget:self action:@selector(concludeIntrtowardsemporalBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _thirtyPennyBtuton.selected = YES; - } - return _thirtyPennyBtuton; -} -- (UITextField *)customIntratemporalEssayUniverse { - if (!_customIntratemporalEssayUniverse) { - _customIntratemporalEssayUniverse = [[UITextField alloc] init]; - _customIntratemporalEssayUniverse.layer.cornerRadius = 15; - _customIntratemporalEssayUniverse.layer.masksToBounds = YES; - _customIntratemporalEssayUniverse.backgroundColor = UIColorFromRGB(0x4C4C6A); - _customIntratemporalEssayUniverse.textColor = UIColorFromRGB(0x43BDFF); - _customIntratemporalEssayUniverse.leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 19, 0)]; - _customIntratemporalEssayUniverse.leftViewMode = UITextFieldViewModeAlways; - _customIntratemporalEssayUniverse.delegate = self; - _customIntratemporalEssayUniverse.keyboardType = UIKeyboardTypeNumberPad; - _customIntratemporalEssayUniverse.tintColor = [UIColor whiteColor]; - _customIntratemporalEssayUniverse.attributedPlaceholder = [[NSAttributedString alloc] initWithString:YMLocalizedString(@"YUMI_Anchor_PK_View_Controller_10") attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:15], NSForegroundColorAttributeName: UIColorFromRGB(0xC6C6E9)}]; - [_customIntratemporalEssayUniverse addTarget:self action:@selector(essayUniverseDidDiversifictowardsiond:) forControlEvents:UIControlEventEditingChanged]; - - } - return _customIntratemporalEssayUniverse; -} -- (UIStackView *)disportHierarchyRegard { - if (!_disportHierarchyRegard) { - _disportHierarchyRegard = [[UIStackView alloc] init]; - _disportHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _disportHierarchyRegard.distribution = UIStackViewDistributionFill; - _disportHierarchyRegard.alignment = UIStackViewAlignmentFill; - _disportHierarchyRegard.spacing = 16; - } - return _disportHierarchyRegard; -} - -- (UILabel *)combateDisportMannerSequencignation { - if (!_combateDisportMannerSequencignation) { - _combateDisportMannerSequencignation = [[UILabel alloc] init]; - _combateDisportMannerSequencignation.textColor = [UIColor whiteColor]; - _combateDisportMannerSequencignation.textAlignment = NSTextAlignmentRight; - _combateDisportMannerSequencignation.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; - _combateDisportMannerSequencignation.text = YMLocalizedString(@"YUMI_Anchor_PK_View_Controller_11"); - } - return _combateDisportMannerSequencignation; -} - -- (UITextField *)combateDisportMannerEssayUniverse { - if (!_combateDisportMannerEssayUniverse) { - _combateDisportMannerEssayUniverse = [[UITextField alloc] init]; - _combateDisportMannerEssayUniverse.layer.cornerRadius = 15; - _combateDisportMannerEssayUniverse.layer.masksToBounds = YES; - _combateDisportMannerEssayUniverse.backgroundColor = UIColorFromRGB(0x4C4C6A); - _combateDisportMannerEssayUniverse.textColor = [UIColor whiteColor]; - _combateDisportMannerEssayUniverse.leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 19, 0)]; - _combateDisportMannerEssayUniverse.leftViewMode = UITextFieldViewModeAlways; - _combateDisportMannerEssayUniverse.delegate = self; - _combateDisportMannerEssayUniverse.attributedPlaceholder = [[NSAttributedString alloc] initWithString:YMLocalizedString(@"YUMI_Anchor_PK_View_Controller_12") attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:15], NSForegroundColorAttributeName: UIColorFromRGB(0xC6C6E9)}]; - [_combateDisportMannerEssayUniverse addTarget:self action:@selector(essayUniverseDidDiversifictowardsiond:) forControlEvents:UIControlEventEditingChanged]; - } - return _combateDisportMannerEssayUniverse; -} - -- (UIButton *)doneBtuton { - if (!_doneBtuton) { - _doneBtuton = [[UIButton alloc] init]; - [_doneBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0x1CD7FD), UIColorFromRGB(0x9377FF), UIColorFromRGB(0xFF6BA3)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_doneBtuton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0x4C4C6A)] forState:UIControlStateDisabled]; - [_doneBtuton setTitle:YMLocalizedString(@"YUMI_Anchor_PK_View_Controller_13") forState:UIControlStateNormal]; - _doneBtuton.layer.masksToBounds = YES; - _doneBtuton.layer.cornerRadius = 20; - _doneBtuton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; - [_doneBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [_doneBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateDisabled]; - [_doneBtuton addTarget:self action:@selector(doneBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _doneBtuton.enabled = NO; - } - return _doneBtuton; -} - -- (UIView *)chosenChamberSatisfperformanceRegard { - if (!_chosenChamberSatisfperformanceRegard) { - _chosenChamberSatisfperformanceRegard = [[UIView alloc] init]; - _chosenChamberSatisfperformanceRegard.hidden = YES; - } - return _chosenChamberSatisfperformanceRegard; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 60 / 2; - _intelligenceportraitIndicateRegard.layer.borderColor = [UIColor whiteColor].CGColor; - _intelligenceportraitIndicateRegard.layer.borderWidth = 1; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)chamberChampionSequencignation { - if (!_chamberChampionSequencignation) { - _chamberChampionSequencignation = [[UILabel alloc] init]; - _chamberChampionSequencignation.textColor = [UIColor whiteColor]; - _chamberChampionSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - } - return _chamberChampionSequencignation; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.textColor = [UIColor whiteColor]; - _idSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - } - return _idSequencignation; -} - -- (UIButton *)revocationBtuton { - if (!_revocationBtuton) { - _revocationBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_revocationBtuton setImage:[UIImage imageNamed:@"yumi_scope_across_delete_pk_room"] forState:UIControlStateNormal]; - [_revocationBtuton addTarget:self action:@selector(revoctowardsionBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _revocationBtuton; -} - -- (UIView *)contentView { - if (!_contentView) { - _contentView = [[UIView alloc] init]; - _contentView.backgroundColor = UIColorFromRGB(0x2A2A39); - CAShapeLayer * layer = [CAShapeLayer layer]; - layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth,kContentHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)].CGPath; - _contentView.layer.mask = layer; - } - return _contentView; -} - -- (UIView *)apexRegard { - if (!_apexRegard) { - _apexRegard = [[UIView alloc] init]; - _apexRegard.backgroundColor = UIColor.blackColor; - _apexRegard.alpha = 0.3; - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onDigitalDirectortowardseResign:)]; - [_apexRegard addGestureRecognizer:tap]; - } - return _apexRegard; -} - -- (XCombatellegCombatChosenChamberRegard *)chosenRegard { - if (!_chosenRegard) { - _chosenRegard = [[XCombatellegCombatChosenChamberRegard alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, kContentHeight)]; - _chosenRegard.delegate = self; - } - return _chosenRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/XPAnchorPKSelectRoomView.h b/YuMi/Modules/YMRoom/View/AnchorPK/View/XPAnchorPKSelectRoomView.h new file mode 100644 index 00000000..ca7b1035 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorPK/View/XPAnchorPKSelectRoomView.h @@ -0,0 +1,28 @@ +// +// YMAnchorPKSelectRoomView.h +// YUMI +// +// Created by YUMI on 2022/4/8. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class XPAnchorPKSelectRoomView, AcrossRoomPKInfoModel; +@protocol XPAnchorPKSelectRoomViewDelegate + +- (void)XPAnchorPKSelectRoomView:(XPAnchorPKSelectRoomView *)view didChoosePKRoom:(AcrossRoomPKInfoModel *)pkRoomInfo; + +@end + +@interface XPAnchorPKSelectRoomView : UIView + +///代理 +@property (nonatomic,weak) id delegate; +///房间的uid +@property (nonatomic,copy) NSString *roomUid; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/XPAnchorPKSelectRoomView.m b/YuMi/Modules/YMRoom/View/AnchorPK/View/XPAnchorPKSelectRoomView.m new file mode 100644 index 00000000..57871334 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorPK/View/XPAnchorPKSelectRoomView.m @@ -0,0 +1,338 @@ +// +// YMAnchorPKSelectRoomView.m +// YUMI +// +// Created by YUMI on 2022/4/8. +// + +#import "XPAnchorPKSelectRoomView.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "XNDJTDDLoadingTool.h" +#import "UIImage+Utils.h" +#import "Api+AnchorPk.h" +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" +///Model +#import "AcrossRoomPKInfoModel.h" +///View +#import "XPAcrossRoomPKEmptyTableViewCell.h" +#import "XPAnchorPKTableViewCell.h" + +@interface XPAnchorPKSelectRoomView () + +///返回按钮 +@property (nonatomic, strong) UIButton *backButton; +@property (nonatomic, strong) UITableView *tableView; +///输入框背景 +@property (nonatomic,strong) UIView * inputBackView; +///搜索logo +@property (nonatomic,strong) UIButton *searchButton; +///输入框 +@property (nonatomic,strong) UITextField *searchTextField; +///数据源 +@property (nonatomic, strong) NSMutableArray *datasource; +///当前的页数 +@property (nonatomic, assign) NSInteger page; +///是否有更多的数据 +@property (nonatomic,assign) BOOL hasNoMoreData; +///选中的PK房间 +@property (nonatomic, strong) AcrossRoomPKInfoModel *selectRoomInfo; + +@end + +@implementation XPAnchorPKSelectRoomView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + [self initHeaderAndFooterRrfresh]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = UIColorFromRGB(0x2A2A39); + [self addSubview:self.backButton]; + [self addSubview:self.inputBackView]; + [self addSubview:self.tableView]; + + [self.inputBackView addSubview:self.searchButton]; + [self.inputBackView addSubview:self.searchTextField]; + + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onKeyBoardResign:)]; + [self addGestureRecognizer:tap]; +} + +- (void)initSubViewConstraints { + [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(12); + make.width.mas_equalTo(22); + make.height.mas_equalTo(22); + make.top.mas_equalTo(27); + }]; + + + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.inputBackView.mas_bottom).mas_offset(5); + make.left.right.mas_equalTo(0); + make.bottom.mas_equalTo(self.mas_bottom); + }]; + [self.inputBackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(30); + make.left.mas_equalTo(self.backButton.mas_right).offset(5); + make.right.mas_equalTo(self.mas_right).offset(-15); + make.centerY.mas_equalTo(self.backButton); + }]; + + [self.searchButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(18, 18)); + make.centerY.mas_equalTo(self.inputBackView); + make.right.mas_equalTo(self.inputBackView).offset(-12); + }]; + + [self.searchTextField mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.inputBackView).offset(25); + make.top.bottom.mas_equalTo(self.inputBackView); + make.right.mas_equalTo(self.searchButton.mas_left).offset(-5); + }]; +} + +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; +} + +#pragma mark - 刷新的fangfa +- (void)headerRefresh { + self.page = 1; + [Api getAnchorPKRoomList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + NSArray * array = [AcrossRoomPKInfoModel modelsWithArray:data.data]; + [self getAcrossRoomPKListSuccess:array state:0]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } roomUid:self.roomUid pageNum:[NSString stringWithFormat:@"%ld", self.page] pageSize:@"20" pkType:@"2"]; +} + +- (void)footerRefresh { + if (self.hasNoMoreData) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPAnchorPKSelectRoomView0")]; + return; + } + self.page++; + [Api getAnchorPKRoomList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + NSArray * array = [AcrossRoomPKInfoModel modelsWithArray:data.data]; + [self getAcrossRoomPKListSuccess:array state:1]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } roomUid:self.roomUid pageNum:[NSString stringWithFormat:@"%ld", self.page] pageSize:@"20" pkType:@"2"]; +} + +- (void)getAcrossRoomPKListSuccess:(NSArray *)list state:(int)state { + if (state == 0) { + self.selectRoomInfo = nil; + [self.datasource removeAllObjects]; + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } + if (list.count > 0) { + self.hasNoMoreData = NO; + [self.datasource addObjectsFromArray:list]; + } else { + self.hasNoMoreData = YES; + [self.tableView.mj_footer endRefreshingWithNoMoreData]; + } + [self.tableView reloadData]; +} + +- (void)onKeyBoardResign:(UITapGestureRecognizer *)ges { + [self.searchTextField resignFirstResponder]; +} +#pragma mark - tableviewDelegate +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPAnchorPKTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPAnchorPKTableViewCell class])]; + if (cell == nil) { + cell = [[XPAnchorPKTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPAnchorPKTableViewCell class])]; + } + cell.delegate = self; + AcrossRoomPKInfoModel * pkRoomInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + if (pkRoomInfo.uid.integerValue == self.selectRoomInfo.uid.integerValue) { + pkRoomInfo.hadSelected = YES; + } else { + pkRoomInfo.hadSelected = NO; + } + cell.roomPKInfo = pkRoomInfo; + return cell; + } + + XPAcrossRoomPKEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPAcrossRoomPKEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPAcrossRoomPKEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPAcrossRoomPKEmptyTableViewCell class])]; + } + return cell; + +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + return 75; + } + return (370 + kSafeAreaBottomHeight); +} + +#pragma mark - XPAnchorPKTableViewCellDelegate +- (void)xPAnchorPKTableViewCell:(XPAnchorPKTableViewCell *)view didChooseRoom:(AcrossRoomPKInfoModel *)roomInfo { +// if (self.selectRoomInfo && roomInfo.uid == self.selectRoomInfo.uid) {///有选中的且点击了选中的,取消掉选择 +// [self.tableView reloadData]; +// self.selectRoomInfo = nil; +// self.doneButton.enabled = NO; +// } else { +// [self.tableView reloadData]; +// self.doneButton.enabled = YES; +// } + + self.selectRoomInfo = roomInfo; + [self.searchTextField resignFirstResponder]; + if (self.delegate && [self.delegate respondsToSelector:@selector(XPAnchorPKSelectRoomView:didChoosePKRoom:)]) { + [self.delegate XPAnchorPKSelectRoomView:self didChoosePKRoom:self.selectRoomInfo]; + } + CATransition *transition = [CATransition animation]; + transition.duration = 0.3f; + transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; + transition.type = kCATransitionPush; + transition.subtype = kCATransitionFromLeft; + [self.layer addAnimation:transition forKey:nil]; + [self removeFromSuperview]; +} + +#pragma mark - Event Response +- (void)searchButtonAction:(UIButton *)sender { + if (self.searchTextField.text.length > 0) { + [Api searchAnchorPKRoomList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + NSArray * array = [AcrossRoomPKInfoModel modelsWithArray:data.data]; + [self getAcrossRoomPKListSuccess:array state:0]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } erbanNo:self.searchTextField.text roomUid:@"" pageNum:@"1" pageSize:@"50" pkType:@"2"]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:@"请输入要搜索的厅ID"]; + } +} + +- (void)backButtonAction:(UIButton *)sender { + [self.searchTextField resignFirstResponder]; + CATransition *transition = [CATransition animation]; + transition.duration = 0.3f; + transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; + transition.type = kCATransitionPush; + transition.subtype = kCATransitionFromLeft; + [self.layer addAnimation:transition forKey:nil]; + [self removeFromSuperview]; +} + +#pragma mark - Getters And Setters +- (void)setRoomUid:(NSString *)roomUid { + _roomUid = roomUid; + [self.datasource removeAllObjects]; + [self.tableView reloadData]; + if (_roomUid.length > 0) { + [self headerRefresh]; + } +} +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPAnchorPKTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPAnchorPKTableViewCell class])]; + [_tableView registerClass:[XPAcrossRoomPKEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPAcrossRoomPKEmptyTableViewCell class])]; + } + return _tableView; +} + + +- (UIView *)inputBackView { + if (!_inputBackView) { + _inputBackView = [[UIView alloc] init]; + _inputBackView.backgroundColor = UIColorFromRGB(0x4C4C6A); + _inputBackView.layer.masksToBounds = YES; + _inputBackView.layer.cornerRadius = 15; + } + return _inputBackView; +} + +- (UIButton *)searchButton { + if (!_searchButton) { + _searchButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_searchButton setImage:[UIImage imageNamed:@"home_search_input_search"] forState:UIControlStateNormal]; + [_searchButton setImage:[UIImage imageNamed:@"home_search_input_search"] forState:UIControlStateSelected]; + [_searchButton addTarget:self action:@selector(searchButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _searchButton; +} + +- (UITextField *)searchTextField { + if (!_searchTextField) { + _searchTextField = [[UITextField alloc] init]; + _searchTextField.layer.cornerRadius = 15; + _searchTextField.layer.masksToBounds = YES; + _searchTextField.tintColor = [UIColor whiteColor]; + _searchTextField.textColor = [UIColor whiteColor]; + _searchTextField.backgroundColor = [UIColor clearColor]; + _searchTextField.font = [UIFont systemFontOfSize:13]; + NSString *placeholder = [NSString stringWithFormat:@"请输入厅的ID"]; + _searchTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholder attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:13], NSForegroundColorAttributeName : [UIColor colorWithWhite:1 alpha:0.4]}]; + } + return _searchTextField; +} + +- (UIButton *)backButton { + if (!_backButton) { + _backButton = [[UIButton alloc] init]; + [_backButton setImage:[UIImage imageNamed:@"home_search_white_back"] forState:UIControlStateNormal]; + _backButton.imageView.contentMode = UIViewContentModeScaleAspectFit; + [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _backButton; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/XPAnchorPKSelectTypeController.h b/YuMi/Modules/YMRoom/View/AnchorPK/View/XPAnchorPKSelectTypeController.h new file mode 100644 index 00000000..02e3182c --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorPK/View/XPAnchorPKSelectTypeController.h @@ -0,0 +1,18 @@ +// +// YMAnchorSelectTypeViewController.h +// YUMI +// +// Created by YUMI on 2022/11/17. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPAnchorPKSelectTypeController : MvpViewController + +- (instancetype)initWithRoomUid:(NSString *)roomUid; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/XPAnchorPKSelectTypeController.m b/YuMi/Modules/YMRoom/View/AnchorPK/View/XPAnchorPKSelectTypeController.m new file mode 100644 index 00000000..576a3917 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorPK/View/XPAnchorPKSelectTypeController.m @@ -0,0 +1,205 @@ +// +// YMAnchorSelectTypeViewController.m +// YUMI +// +// Created by YUMI on 2022/11/17. +// + +#import "XPAnchorPKSelectTypeController.h" +#import "DJDKMIMOMColor.h" +#import +#import "YUMIMacroUitls.h" +#import "TTPopup.h" +#import "XPAnchorPKRuleView.h" +#import "XPAnchorPKViewController.h" +#import "StatisticsServiceHelper.h" +#import "XCCurrentVCStackManager.h" +#import "Api+Room.h" +#import "XPAnchorRandomPKRuleView.h" +///P +#import "XPAnchorPKPresenter.h" +#import "XPAnchorPKProtocol.h" + +@interface XPAnchorPKSelectTypeController () + +@property (nonatomic, copy) NSString *roomUid; + +@property (nonatomic, strong) UIView *gesView; +@property (nonatomic, strong) UIView *bgView; +@property (nonatomic, strong) UILabel *titleLabel; +@property (nonatomic, strong) UIButton *ruleButton; +@property (nonatomic, strong) UIView *lineView; +@property (nonatomic, strong) UIButton *randomPKButton; +@property (nonatomic, strong) UIButton *invitePKButton; + +@end + +@implementation XPAnchorPKSelectTypeController + +- (XPAnchorPKPresenter *)createPresenter { + return [[XPAnchorPKPresenter alloc] init];; +} + +- (instancetype)initWithRoomUid:(NSString *)roomUid { + if (self = [super init]) { + self.roomUid = roomUid; + self.modalPresentationStyle = UIModalPresentationOverFullScreen; + } + return self; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self addSubView]; + [self setupContraints]; + self.view.backgroundColor = [UIColor clearColor]; +} + +- (void)addSubView { + [self.view addSubview:self.gesView]; + [self.view addSubview:self.bgView]; + [self.bgView addSubview:self.titleLabel]; + [self.bgView addSubview:self.ruleButton]; + [self.bgView addSubview:self.lineView]; + [self.bgView addSubview:self.randomPKButton]; + [self.bgView addSubview:self.invitePKButton]; +} + +- (void)setupContraints { + [self.gesView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(0); + make.bottom.mas_equalTo(self.bgView.mas_top); + }]; + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(0); + make.height.mas_equalTo(250); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(16); + make.centerX.mas_equalTo(self.bgView); + make.height.mas_equalTo(18); + }]; + [self.ruleButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-16); + make.centerY.mas_equalTo(self.titleLabel); + make.width.height.mas_equalTo(21); + }]; + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(8); + make.left.right.mas_equalTo(0); + make.height.mas_equalTo(0.5); + }]; + [self.randomPKButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.bgView.mas_centerX).mas_offset(-22); + make.size.mas_equalTo(CGSizeMake(100, 135)); + make.top.mas_equalTo(self.lineView.mas_bottom).mas_offset(16); + }]; + [self.invitePKButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.randomPKButton.mas_right).mas_offset(44); + make.size.mas_equalTo(CGSizeMake(100, 135)); + make.top.mas_equalTo(self.randomPKButton); + }]; +} + +- (void)ruleButtonAction:(UIButton *)sender { + [Api requestAnchorPkRule:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + XPAnchorRandomPKRuleView *view = [[XPAnchorRandomPKRuleView alloc] init]; + view.ruleString = data.data; + [TTPopup popupView:view style:TTPopupStyleAlert]; + } + }]; + +} + +- (void)randomButtonAction:(UIButton *)sender { + [self.presenter matchRandomPK:self.roomUid]; +} + +- (void)inviteButtonAction:(UIButton *)sender { + [self dismissViewControllerAnimated:YES completion:^{ + XPAnchorPKViewController * acrossRoomPKVC = [[XPAnchorPKViewController alloc] initWithRoomUid:self.roomUid]; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController presentViewController:acrossRoomPKVC animated:YES completion:nil]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"openAnchorPk"}]; + + }]; +} + +- (void)dismiss:(UITapGestureRecognizer *)ges { + [self dismissViewControllerAnimated:YES completion:nil]; +} + +#pragma mark - XPAnchorPKProtocol +///随机PK匹配开始 +- (void)matchRandomPKSuccess:(long long)matchPkStartTime { + [[NSNotificationCenter defaultCenter] postNotificationName:@"anchorPKMatchBegin" object:@{@"matchPkStartTime" : @(matchPkStartTime)}]; + [self dismissViewControllerAnimated:YES completion:nil]; +} + +#pragma mark - getter +- (UIView *)gesView { + if (!_gesView) { + _gesView = [[UIView alloc] init]; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismiss:)]; + [_gesView addGestureRecognizer:tap]; + } + return _gesView; +} + +- (UIView *)bgView { + if (!_bgView) { + _bgView = [[UIView alloc] init]; + _bgView.backgroundColor = UIColorFromRGB(0x0D0E2C); + CAShapeLayer * layer = [CAShapeLayer layer]; + layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, 250) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(8, 8)].CGPath; + _bgView.layer.mask = layer; + } + return _bgView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPAnchorPKSelectTypeController0"); + _titleLabel.textColor = [UIColor whiteColor]; + _titleLabel.font = [UIFont systemFontOfSize:14]; + } + return _titleLabel; +} + +- (UIButton *)ruleButton { + if (!_ruleButton) { + _ruleButton = [[UIButton alloc] init]; + [_ruleButton setImage:[UIImage imageNamed:@"room_across_pk_help"] forState:UIControlStateNormal]; + [_ruleButton addTarget:self action:@selector(ruleButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _ruleButton; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = UIColorRGBAlpha(0xffffff, 0.1); + } + return _lineView; +} + +- (UIButton *)randomPKButton { + if (!_randomPKButton) { + _randomPKButton = [[UIButton alloc] init]; + [_randomPKButton setImage:[UIImage imageNamed:@"anchor_pk_random_icon"] forState:UIControlStateNormal]; + [_randomPKButton addTarget:self action:@selector(randomButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _randomPKButton; +} + +- (UIButton *)invitePKButton { + if (!_invitePKButton) { + _invitePKButton = [[UIButton alloc] init]; + [_invitePKButton setImage:[UIImage imageNamed:@"anchor_pk_invite_icon"] forState:UIControlStateNormal]; + [_invitePKButton addTarget:self action:@selector(inviteButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _invitePKButton; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/XPAnchorPKViewController.h b/YuMi/Modules/YMRoom/View/AnchorPK/View/XPAnchorPKViewController.h new file mode 100644 index 00000000..dbb13838 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorPK/View/XPAnchorPKViewController.h @@ -0,0 +1,18 @@ +// +// YMAnchorPKViewController.h +// YUMI +// +// Created by YUMI on 2022/4/8. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPAnchorPKViewController : MvpViewController + +- (instancetype)initWithRoomUid:(NSString *)roomUid; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorPK/View/XPAnchorPKViewController.m b/YuMi/Modules/YMRoom/View/AnchorPK/View/XPAnchorPKViewController.m new file mode 100644 index 00000000..12a33765 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorPK/View/XPAnchorPKViewController.m @@ -0,0 +1,649 @@ +// +// YMAnchorPKViewController.m +// YUMI +// +// Created by YUMI on 2022/4/8. +// + +#import "XPAnchorPKViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "YUMIMacroUitls.h" +#import "UIImage+Utils.h" +#import "TTPopup.h" +///Model +#import "AcrossRoomPKInfoModel.h" +///View +#import "XPAnchorPKSelectRoomView.h" +///P +#import "XPAnchorPKPresenter.h" +#import "XPAnchorPKProtocol.h" + +#define kContentHeight (404 + kSafeAreaBottomHeight) + +@interface XPAnchorPKViewController () +///顶部点击消失的view +@property (nonatomic, strong) UIView *topView; +///显示内容的view +@property (nonatomic, strong) UIView *contentView; +///标题 +@property (nonatomic, strong) UILabel *titleLabel; +///PK对象的容器 +@property (nonatomic,strong) UIStackView *userStackView; +///选择PK对象title +@property (nonatomic, strong) UILabel *selectPKLabel; +///选择PK对象 +@property (nonatomic, strong) UIButton *selectPKButton; +///PK对象的容器 +@property (nonatomic,strong) UIStackView *timeStackView; +///选择PK时长title +@property (nonatomic, strong) UILabel *selectPKTimeLabel; +///选择PK时间的容器 +@property (nonatomic,strong) UIStackView *chooseTimeStackView; +@property (nonatomic, strong) UIButton *tenMinuteButton; +@property (nonatomic, strong) UIButton *twentyMinuteButton; +@property (nonatomic, strong) UIButton *thirtyMinuteButton; +///自定义PK时间 +@property (nonatomic, strong) UITextField *customTimeTextField; +///玩法的容器 +@property (nonatomic,strong) UIStackView *playStackView; +///PK玩法title +@property (nonatomic, strong) UILabel *pkPlayModeLabel; +///PK玩法 +@property (nonatomic, strong) UITextField *pkPlayModeTextField; +///发起挑战按钮 +@property (nonatomic, strong) UIButton *doneButton; +///选择房间的内容 +@property (nonatomic, strong) UIView *selectRoomContentView; +///选中的房间头像 +@property (nonatomic, strong) NetImageView *avatarImageView; +///房间标题 +@property (nonatomic, strong) UILabel *roomTitleLabel; +//平台ID +@property (nonatomic, strong) UILabel *idLabel; +///取消选择房间 +@property (nonatomic, strong) UIButton *cancelButon; +///选中的PK房间 +@property (nonatomic, strong) AcrossRoomPKInfoModel *selectRoomInfo; +///PK的时长 +@property (nonatomic, assign) NSInteger pkDuration; +///选择PK房间 +@property (nonatomic, strong) XPAnchorPKSelectRoomView *selectView; +///房间信息 +@property (nonatomic,strong) NSString *roomUid; +@end + +@implementation XPAnchorPKViewController + +- (instancetype)initWithRoomUid:(NSString *)roomUid { + if (self = [super init]) { + self.roomUid = roomUid; + self.modalPresentationStyle = UIModalPresentationOverFullScreen; + } + return self; +} + +- (XPAnchorPKPresenter *)createPresenter { + return [[XPAnchorPKPresenter alloc] init];; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + self.pkDuration = 10; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [IQKeyboardManager sharedManager].enable = YES; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + [self.view endEditing:YES]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.view.backgroundColor = [UIColor clearColor]; + [self.view addSubview:self.topView]; + [self.view addSubview:self.contentView]; + + [self.contentView addSubview:self.titleLabel]; + [self.contentView addSubview:self.userStackView]; + [self.contentView addSubview:self.timeStackView]; + [self.contentView addSubview:self.playStackView]; + [self.contentView addSubview:self.customTimeTextField]; + [self.contentView addSubview:self.doneButton]; + + [self.userStackView addArrangedSubview:self.selectPKLabel]; + [self.userStackView addArrangedSubview:self.selectPKButton]; + [self.userStackView addArrangedSubview:self.selectRoomContentView]; + + [self.timeStackView addArrangedSubview:self.selectPKTimeLabel]; + [self.timeStackView addArrangedSubview:self.chooseTimeStackView]; + + [self.chooseTimeStackView addArrangedSubview:self.tenMinuteButton]; + [self.chooseTimeStackView addArrangedSubview:self.twentyMinuteButton]; + [self.chooseTimeStackView addArrangedSubview:self.thirtyMinuteButton]; + + [self.playStackView addArrangedSubview:self.pkPlayModeLabel]; + [self.playStackView addArrangedSubview:self.pkPlayModeTextField]; + + [self.selectRoomContentView addSubview:self.avatarImageView]; + [self.selectRoomContentView addSubview:self.roomTitleLabel]; + [self.selectRoomContentView addSubview:self.idLabel]; + [self.selectRoomContentView addSubview:self.cancelButon]; +} + +- (void)initSubViewConstraints { + + [self.topView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.contentView.mas_top); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.height.mas_equalTo(kContentHeight); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.contentView); + make.top.mas_equalTo(18); + }]; + [self.userStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(32); + make.left.mas_equalTo(self.contentView).offset(22); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(20); + }]; + + [self.selectPKLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(90); + }]; + + [self.selectPKButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(22); + }]; + + [self.selectRoomContentView mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth - 85 - 12 * 2 - 16); + }]; + + [self.timeStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(32); + make.left.right.mas_equalTo(self.contentView).inset(22); + make.top.mas_equalTo(self.userStackView.mas_bottom).offset(30); + }]; + + [self.selectPKTimeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(self.selectPKLabel); + }]; + + [self.customTimeTextField mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(32); + make.width.mas_equalTo(170); + make.top.mas_equalTo(self.timeStackView.mas_bottom).offset(16); + make.left.mas_equalTo(self.tenMinuteButton); + }]; + + [self.playStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.height.mas_equalTo(self.timeStackView); + make.top.mas_equalTo(self.customTimeTextField.mas_bottom).offset(30); + }]; + + [self.pkPlayModeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(self.selectPKLabel); + }]; + + [self.doneButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(40); + make.left.right.mas_equalTo(self.contentView).inset(40); + make.bottom.mas_equalTo(self.contentView.mas_bottom).offset(-34 - kSafeAreaBottomHeight); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.selectRoomContentView); + make.left.mas_equalTo(self.selectRoomContentView); + make.height.width.mas_equalTo(60); + }]; + [self.roomTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.avatarImageView.mas_centerY).offset(-3); + make.left.mas_equalTo(self.avatarImageView.mas_right).mas_offset(6); + make.right.mas_lessThanOrEqualTo(self.cancelButon.mas_left); + }]; + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.avatarImageView.mas_centerY).mas_offset(3); + make.left.right.mas_equalTo(self.roomTitleLabel); + }]; + + [self.cancelButon mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.avatarImageView); + make.right.mas_equalTo(self.selectRoomContentView).offset(-12); + make.height.width.mas_equalTo(22); + }]; +} + +- (void)updateDoneButtonState { + if (self.selectRoomInfo && self.pkDuration >= 5 && self.pkDuration <= 30) { + self.doneButton.enabled = YES; + } else { + self.doneButton.enabled = NO; + } +} +#pragma mark - XPAnchorPKProtocol +///开启pk成功 +- (void)beginAnchorPKSuccess { + [self showSuccessToast:YMLocalizedString(@"XPAnchorPKViewController0")]; + [self dismissViewControllerAnimated:YES completion:nil]; +} + +///开启Pk失败 +- (void)beginAnchorPKFail:(NSString *)message { + if (message.length >0) { + TTAlertConfig * config = [[TTAlertConfig alloc] init]; + config.actionStyle = TTAlertActionConfirmStyle; + config.cancelButtonConfig.title = YMLocalizedString(@"XPAnchorPKViewController1"); + config.message = message; + [TTPopup alertWithConfig:config confirmHandler:^{ + + } cancelHandler:^{ + + }]; + } +} + +#pragma mark - XPAnchorPKSelectRoomViewDelegate +///选择要PK的对象按钮点击 +- (void)XPAnchorPKSelectRoomView:(XPAnchorPKSelectRoomView *)view didChoosePKRoom:(AcrossRoomPKInfoModel *)pkRoomInfo { + if (pkRoomInfo) { + [self.userStackView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(60); + }]; + self.selectRoomContentView.hidden = NO; + self.selectPKButton.hidden= YES; + self.avatarImageView.imageUrl = pkRoomInfo.avatar; + self.roomTitleLabel.text = pkRoomInfo.title; + self.idLabel.text = [NSString stringWithFormat:@"ID:%@", pkRoomInfo.erbanNo]; + self.selectRoomInfo = pkRoomInfo; + [self updateDoneButtonState]; + } +} + +#pragma mark - UITextFieldDelegate +- (void)textFieldDidChanged:(UITextField *)textField { + if (textField == self.customTimeTextField) { + self.tenMinuteButton.selected = YES; + self.twentyMinuteButton.selected = YES; + self.thirtyMinuteButton.selected = YES; + NSString *countStr = [self.customTimeTextField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; + NSInteger count = [countStr integerValue]; + if (count > 30) { + [self showErrorToast:YMLocalizedString(@"XPAnchorPKViewController2")]; + textField.text = @"30"; + } else if(count < 5) { + [self showErrorToast:YMLocalizedString(@"XPAnchorPKViewController3")]; + } + self.pkDuration = textField.text.integerValue; + [self updateDoneButtonState]; + } else if(textField == self.pkPlayModeTextField) { + if (self.pkPlayModeTextField.text.length > 10) { + self.pkPlayModeTextField.text = [self.pkPlayModeTextField.text substringToIndex:10]; + } + } +} + +- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { + if (textField == self.customTimeTextField) { + NSString *regex =@"[0-9]*"; + NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex]; + if ([pred evaluateWithObject:string]) { + return YES; + } + return NO; + } + return YES; +} + +#pragma mark - Event Response +- (void)selectPKButtonAction:(UIButton *)sender { + [self.customTimeTextField resignFirstResponder]; + [self.pkPlayModeTextField resignFirstResponder]; + self.selectView.roomUid = self.roomUid; + CATransition *transition = [CATransition animation]; + transition.duration = 0.3f; + transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; + transition.type = kCATransitionPush; + transition.subtype = kCATransitionFromRight; + [self.selectView.layer addAnimation:transition forKey:nil]; + [self.contentView addSubview:self.selectView]; +} + +- (void)chooseTimeButtonAction:(UIButton *)sender { + [self.customTimeTextField resignFirstResponder]; + [self.pkPlayModeTextField resignFirstResponder]; + self.tenMinuteButton.selected = YES; + self.twentyMinuteButton.selected = YES; + self.thirtyMinuteButton.selected = YES; + sender.selected = NO; + self.pkDuration = sender.tag; + self.customTimeTextField.text = nil; +} + +- (void)doneButtonAction:(UIButton *)sender { + [self.customTimeTextField resignFirstResponder]; + [self.pkPlayModeTextField resignFirstResponder]; + NSString * pkDes = self.pkPlayModeTextField.text.length > 0 ? self.pkPlayModeTextField.text : @""; + [self.presenter beginAnchorPK:self.roomUid duration:self.pkDuration acceptUid:self.selectRoomInfo.uid playDesc:pkDes pkType:@"2"]; +} + +- (void)cancelButtonAction:(UIButton *)sender { + self.selectRoomContentView.hidden = YES; + self.selectPKButton.hidden = NO; + self.selectRoomInfo = nil; + [self updateDoneButtonState]; + self.avatarImageView.image = nil; + self.roomTitleLabel.text = nil; + self.idLabel.text = nil; + [self.userStackView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(32); + }]; +} + +- (void)onKeyBoardResign:(UITapGestureRecognizer *)ges { + [self.customTimeTextField resignFirstResponder]; + [self.pkPlayModeTextField resignFirstResponder]; + if (self.selectView.superview) { + CATransition *transition = [CATransition animation]; + transition.duration = 0.3f; + transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; + transition.type = kCATransitionPush; + transition.subtype = kCATransitionFromLeft; + [self.selectView.layer addAnimation:transition forKey:nil]; + [self.selectView removeFromSuperview]; + } else { + [self dismissViewControllerAnimated:YES completion:nil]; + } +} + +#pragma mark - Getters And Setters +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textColor = UIColor.whiteColor; + _titleLabel.font = [UIFont boldSystemFontOfSize:18]; + _titleLabel.text = @"主播PK"; + } + return _titleLabel; +} + +- (UIStackView *)userStackView { + if (!_userStackView) { + _userStackView = [[UIStackView alloc] init]; + _userStackView.axis = UILayoutConstraintAxisHorizontal; + _userStackView.distribution = UIStackViewDistributionFill; + _userStackView.alignment = UIStackViewAlignmentFill; + _userStackView.spacing = 16; + } + return _userStackView; +} +- (UILabel *)selectPKLabel { + if (!_selectPKLabel) { + _selectPKLabel = [[UILabel alloc] init]; + _selectPKLabel.textColor = [UIColor whiteColor]; + _selectPKLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + _selectPKLabel.text = YMLocalizedString(@"XPAnchorPKViewController5"); + [_selectPKLabel setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + } + return _selectPKLabel; +} +- (UIButton *)selectPKButton { + if (!_selectPKButton) { + _selectPKButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_selectPKButton setImage:[UIImage imageNamed:@"room_across_pk_add_room"] forState:UIControlStateNormal]; + [_selectPKButton addTarget:self action:@selector(selectPKButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _selectPKButton; +} + +- (UIStackView *)timeStackView { + if (!_timeStackView) { + _timeStackView = [[UIStackView alloc] init]; + _timeStackView.axis = UILayoutConstraintAxisHorizontal; + _timeStackView.distribution = UIStackViewDistributionFill; + _timeStackView.alignment = UIStackViewAlignmentFill; + _timeStackView.spacing = 16; + } + return _timeStackView; +} +- (UILabel *)selectPKTimeLabel { + if (!_selectPKTimeLabel) { + _selectPKTimeLabel = [[UILabel alloc] init]; + _selectPKTimeLabel.textColor =[UIColor whiteColor]; + _selectPKTimeLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + _selectPKTimeLabel.text = YMLocalizedString(@"XPAnchorPKViewController6"); + } + return _selectPKTimeLabel; +} + +- (UIStackView *)chooseTimeStackView { + if (!_chooseTimeStackView) { + _chooseTimeStackView = [[UIStackView alloc] init]; + _chooseTimeStackView.axis = UILayoutConstraintAxisHorizontal; + _chooseTimeStackView.distribution = UIStackViewDistributionFillEqually; + _chooseTimeStackView.alignment = UIStackViewAlignmentFill; + _chooseTimeStackView.spacing = 5; + } + return _chooseTimeStackView; +} + +- (UIButton *)tenMinuteButton { + if (!_tenMinuteButton) { + _tenMinuteButton = [[UIButton alloc] init]; + [_tenMinuteButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0x1CD7FD), UIColorFromRGB(0x9377FF), UIColorFromRGB(0xFF6BA3)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_tenMinuteButton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0x4C4C6A)] forState:UIControlStateSelected]; + [_tenMinuteButton setTitle:YMLocalizedString(@"XPAnchorPKViewController7") forState:UIControlStateNormal]; + _tenMinuteButton.titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + [_tenMinuteButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_tenMinuteButton setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateSelected]; + _tenMinuteButton.tag = 10; + [_tenMinuteButton addTarget:self action:@selector(chooseTimeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _tenMinuteButton.selected = NO; + _tenMinuteButton.layer.masksToBounds = YES; + _tenMinuteButton.layer.cornerRadius = 32 / 2; + } + return _tenMinuteButton; +} + +- (UIButton *)twentyMinuteButton { + if (!_twentyMinuteButton) { + _twentyMinuteButton = [[UIButton alloc] init]; + [_twentyMinuteButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0x1CD7FD), UIColorFromRGB(0x9377FF), UIColorFromRGB(0xFF6BA3)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_twentyMinuteButton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0x4C4C6A)] forState:UIControlStateSelected]; + [_twentyMinuteButton setTitle:YMLocalizedString(@"XPAnchorPKViewController8") forState:UIControlStateNormal]; + _twentyMinuteButton.titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + [_twentyMinuteButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_twentyMinuteButton setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; + _twentyMinuteButton.tag = 20; + [_twentyMinuteButton addTarget:self action:@selector(chooseTimeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _twentyMinuteButton.selected = YES; + _twentyMinuteButton.layer.masksToBounds = YES; + _twentyMinuteButton.layer.cornerRadius = 32 / 2; + } + return _twentyMinuteButton; +} + +- (UIButton *)thirtyMinuteButton { + if (!_thirtyMinuteButton) { + _thirtyMinuteButton = [[UIButton alloc] init]; + [_thirtyMinuteButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0x1CD7FD), UIColorFromRGB(0x9377FF), UIColorFromRGB(0xFF6BA3)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_thirtyMinuteButton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0x4C4C6A)] forState:UIControlStateSelected]; + [_thirtyMinuteButton setTitle:YMLocalizedString(@"XPAnchorPKViewController9") forState:UIControlStateNormal]; + _thirtyMinuteButton.titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + [_thirtyMinuteButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_thirtyMinuteButton setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; + _thirtyMinuteButton.tag = 30; + _thirtyMinuteButton.layer.masksToBounds = YES; + _thirtyMinuteButton.layer.cornerRadius = 32 / 2; + [_thirtyMinuteButton addTarget:self action:@selector(chooseTimeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _thirtyMinuteButton.selected = YES; + } + return _thirtyMinuteButton; +} +- (UITextField *)customTimeTextField { + if (!_customTimeTextField) { + _customTimeTextField = [[UITextField alloc] init]; + _customTimeTextField.layer.cornerRadius = 15; + _customTimeTextField.layer.masksToBounds = YES; + _customTimeTextField.backgroundColor = UIColorFromRGB(0x4C4C6A); + _customTimeTextField.textColor = UIColorFromRGB(0x43BDFF); + _customTimeTextField.leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 19, 0)]; + _customTimeTextField.leftViewMode = UITextFieldViewModeAlways; + _customTimeTextField.delegate = self; + _customTimeTextField.keyboardType = UIKeyboardTypeNumberPad; + _customTimeTextField.tintColor = [UIColor whiteColor]; + _customTimeTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:YMLocalizedString(@"XPAnchorPKViewController10") attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:15], NSForegroundColorAttributeName: UIColorFromRGB(0xC6C6E9)}]; + [_customTimeTextField addTarget:self action:@selector(textFieldDidChanged:) forControlEvents:UIControlEventEditingChanged]; + + } + return _customTimeTextField; +} +- (UIStackView *)playStackView { + if (!_playStackView) { + _playStackView = [[UIStackView alloc] init]; + _playStackView.axis = UILayoutConstraintAxisHorizontal; + _playStackView.distribution = UIStackViewDistributionFill; + _playStackView.alignment = UIStackViewAlignmentFill; + _playStackView.spacing = 16; + } + return _playStackView; +} + +- (UILabel *)pkPlayModeLabel { + if (!_pkPlayModeLabel) { + _pkPlayModeLabel = [[UILabel alloc] init]; + _pkPlayModeLabel.textColor = [UIColor whiteColor]; + _pkPlayModeLabel.textAlignment = NSTextAlignmentRight; + _pkPlayModeLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + _pkPlayModeLabel.text = YMLocalizedString(@"XPAnchorPKViewController11"); + } + return _pkPlayModeLabel; +} + +- (UITextField *)pkPlayModeTextField { + if (!_pkPlayModeTextField) { + _pkPlayModeTextField = [[UITextField alloc] init]; + _pkPlayModeTextField.layer.cornerRadius = 15; + _pkPlayModeTextField.layer.masksToBounds = YES; + _pkPlayModeTextField.backgroundColor = UIColorFromRGB(0x4C4C6A); + _pkPlayModeTextField.textColor = [UIColor whiteColor]; + _pkPlayModeTextField.leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 19, 0)]; + _pkPlayModeTextField.leftViewMode = UITextFieldViewModeAlways; + _pkPlayModeTextField.delegate = self; + _pkPlayModeTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:YMLocalizedString(@"XPAnchorPKViewController12") attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:15], NSForegroundColorAttributeName: UIColorFromRGB(0xC6C6E9)}]; + [_pkPlayModeTextField addTarget:self action:@selector(textFieldDidChanged:) forControlEvents:UIControlEventEditingChanged]; + } + return _pkPlayModeTextField; +} + +- (UIButton *)doneButton { + if (!_doneButton) { + _doneButton = [[UIButton alloc] init]; + [_doneButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0x1CD7FD), UIColorFromRGB(0x9377FF), UIColorFromRGB(0xFF6BA3)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_doneButton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0x4C4C6A)] forState:UIControlStateDisabled]; + [_doneButton setTitle:YMLocalizedString(@"XPAnchorPKViewController13") forState:UIControlStateNormal]; + _doneButton.layer.masksToBounds = YES; + _doneButton.layer.cornerRadius = 20; + _doneButton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; + [_doneButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_doneButton setTitleColor:[UIColor whiteColor] forState:UIControlStateDisabled]; + [_doneButton addTarget:self action:@selector(doneButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _doneButton.enabled = NO; + } + return _doneButton; +} + +- (UIView *)selectRoomContentView { + if (!_selectRoomContentView) { + _selectRoomContentView = [[UIView alloc] init]; + _selectRoomContentView.hidden = YES; + } + return _selectRoomContentView; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 60 / 2; + _avatarImageView.layer.borderColor = [UIColor whiteColor].CGColor; + _avatarImageView.layer.borderWidth = 1; + } + return _avatarImageView; +} + +- (UILabel *)roomTitleLabel { + if (!_roomTitleLabel) { + _roomTitleLabel = [[UILabel alloc] init]; + _roomTitleLabel.textColor = [UIColor whiteColor]; + _roomTitleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + } + return _roomTitleLabel; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.textColor = [UIColor whiteColor]; + _idLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + } + return _idLabel; +} + +- (UIButton *)cancelButon { + if (!_cancelButon) { + _cancelButon = [UIButton buttonWithType:UIButtonTypeCustom]; + [_cancelButon setImage:[UIImage imageNamed:@"room_across_delete_pk_room"] forState:UIControlStateNormal]; + [_cancelButon addTarget:self action:@selector(cancelButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _cancelButon; +} + +- (UIView *)contentView { + if (!_contentView) { + _contentView = [[UIView alloc] init]; + _contentView.backgroundColor = UIColorFromRGB(0x2A2A39); + CAShapeLayer * layer = [CAShapeLayer layer]; + layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth,kContentHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)].CGPath; + _contentView.layer.mask = layer; + } + return _contentView; +} + +- (UIView *)topView { + if (!_topView) { + _topView = [[UIView alloc] init]; + _topView.backgroundColor = UIColor.blackColor; + _topView.alpha = 0.3; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onKeyBoardResign:)]; + [_topView addGestureRecognizer:tap]; + } + return _topView; +} + +- (XPAnchorPKSelectRoomView *)selectView { + if (!_selectView) { + _selectView = [[XPAnchorPKSelectRoomView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, kContentHeight)]; + _selectView.delegate = self; + } + return _selectView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Api/Api+FansTeam.h b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Api/Api+FansTeam.h index 0aab6d92..7b915620 100644 --- a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Api/Api+FansTeam.h +++ b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Api/Api+FansTeam.h @@ -11,7 +11,10 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (FansTeam) -+ (void)requisitionOptowardssideFantowardsicsSquad:(HttpRequestHelperCompletion)completion teamUid:(NSString *)teamUid; +/// 请求退出粉丝团 +/// @param completion 完成 +/// @param teamUid 房间uid ++ (void)requestOutFansTeam:(HttpRequestHelperCompletion)completion teamUid:(NSString *)teamUid; @end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Api/Api+FansTeam.m b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Api/Api+FansTeam.m index cad644aa..4fa0f5f7 100644 --- a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Api/Api+FansTeam.m +++ b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Api/Api+FansTeam.m @@ -9,9 +9,12 @@ #import @implementation Api (FansTeam) -+ (void)requisitionOptowardssideFantowardsicsSquad:(HttpRequestHelperCompletion)completion teamUid:(NSString *)teamUid { - NSString * fang = [NSString stringFromBase64String:@"YW5jaG9yRmFuc1RlYW0vb3V0QW5jaG9yRmFuc1RlYW0="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, teamUid, nil]; +/// 请求退出粉丝团 +/// @param completion 完成 +/// @param teamUid 房间uid ++ (void)requestOutFansTeam:(HttpRequestHelperCompletion)completion teamUid:(NSString *)teamUid { + NSString * fang = [NSString stringFromBase64String:@"YW5jaG9yRmFuc1RlYW0vb3V0QW5jaG9yRmFuc1RlYW0="];///anchorFansTeam/outAnchorFansTeam + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, teamUid, nil]; } @end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsJoinMatrix.h b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsJoinMatrix.h deleted file mode 100644 index 3ccdf59d..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsJoinMatrix.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YMAnchorFansJoinModel.h -// YUMI -// -// Created by YUMI on 2022/4/7. -// - -#import -#import "XCombatellegFanaticsPrivilegeMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface XCombatellegFanaticsJoinMatrix : NSObject - -@property (nonatomic, assign) long long teamId; -@property (nonatomic, assign) long long teamUid; -@property (nonatomic, copy) NSString *anchorAvatar; -@property (nonatomic, copy) NSString *anchorNick; -@property (nonatomic, assign) NSInteger teamNum; -@property (nonatomic, strong) NSArray *avatarList; -@property (nonatomic, assign) BOOL isJoinLimit; -@property (nonatomic, strong) NSArray *privilegeConfigVos; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsJoinMatrix.m b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsJoinMatrix.m deleted file mode 100644 index ddb7b002..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsJoinMatrix.m +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMAnchorFansJoinModel.m -// YUMI -// -// Created by YUMI on 2022/4/7. -// - -#import "XCombatellegFanaticsJoinMatrix.h" - -@implementation XCombatellegFanaticsJoinMatrix - -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{ - @"privilegeConfigVos":XCombatellegFanaticsPrivilegeMatrix.class - }; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsPrivilegeMatrix.h b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsPrivilegeMatrix.h deleted file mode 100644 index ec10a94a..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsPrivilegeMatrix.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// YMAnchorFansJoinModel.h -// YUMI -// -// Created by YUMI on 2022/4/7. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSUInteger, KellegFansTeamPrivilegeGenre) { - KellegFansTeamPrivilegeGenreNameplate = 1, - KellegFansTeamPrivilegeGenreGift = 2, - KellegFansTeamPrivilegeGenreTeamGift, -}; - -@interface XCombatellegFanaticsPrivilegeMatrix : NSObject - -@property (nonatomic, assign) NSInteger privilegeId; -@property (nonatomic, copy) NSString *name; -@property (nonatomic, assign) NSInteger normalId; -@property (nonatomic, copy) NSString *desc; -@property (nonatomic, assign) KellegFansTeamPrivilegeGenre type; -@property (nonatomic, copy) NSString *icon; -@property (nonatomic, assign) NSInteger status; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsPrivilegeMatrix.m b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsPrivilegeMatrix.m deleted file mode 100644 index 7adb8368..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsPrivilegeMatrix.m +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMAnchorFansJoinModel.m -// YUMI -// -// Created by YUMI on 2022/4/7. -// - -#import "XCombatellegFanaticsPrivilegeMatrix.h" - -@implementation XCombatellegFanaticsPrivilegeMatrix - -+ (NSDictionary *)replacedDigitalByvirtueofMaintainertyConstitute { - return @{@"desc": @"description" - }; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsRelationMatrix.h b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsRelationMatrix.h deleted file mode 100644 index de3fa3b7..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsRelationMatrix.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMAnchorFansRelationModel.h -// YUMI -// -// Created by YUMI on 2022/4/7. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface XCombatellegFanaticsRelationMatrix : NSObject - -@property (nonatomic, assign) BOOL hasFansTeamCurrentRoom; -@property (nonatomic, assign) BOOL isAnchorFans; -@property (nonatomic, assign) BOOL isCurrentRoomAnchor; -@property (nonatomic, assign) BOOL isRedPop; -@property (nonatomic, assign) NSInteger anchorFansNum; -@property (nonatomic, assign) NSInteger fansLevelSeq; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsRelationMatrix.m b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsRelationMatrix.m deleted file mode 100644 index 4cddb2a3..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsRelationMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMAnchorFansRelationModel.m -// YUMI -// -// Created by YUMI on 2022/4/7. -// - -#import "XCombatellegFanaticsRelationMatrix.h" - -@implementation XCombatellegFanaticsRelationMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsmissionMatrix.h b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsmissionMatrix.h deleted file mode 100644 index 40a575a0..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsmissionMatrix.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// YMAnchorFansTaskModel.h -// YUMI -// -// Created by YUMI on 2022/4/7. -// - -#import -#import "XCombatellegFanaticsmissionSpecificMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface XCombatellegFanaticsmissionMatrix : NSObject - -@property (nonatomic, copy) NSString *teamUid; -@property (nonatomic, copy) NSString *anchorAvatar; -@property (nonatomic, copy) NSString *anchorNick; -@property (nonatomic, assign) NSInteger teamNum; -@property (nonatomic, assign) NSInteger memberUid; -@property (nonatomic, copy) NSString *memberAvatar; -@property (nonatomic, strong) NSArray *avatarList; -@property (nonatomic, strong) NSArray *taskVos; -@property (nonatomic, assign) NSInteger levelSeq; -@property (nonatomic, assign) NSInteger levelExper; -@property (nonatomic, assign) NSInteger nextLevelExper; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsmissionMatrix.m b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsmissionMatrix.m deleted file mode 100644 index 08a671e3..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsmissionMatrix.m +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMAnchorFansTaskModel.m -// YUMI -// -// Created by YUMI on 2022/4/7. -// - -#import "XCombatellegFanaticsmissionMatrix.h" - -@implementation XCombatellegFanaticsmissionMatrix - -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{ - @"taskVos":XCombatellegFanaticsmissionSpecificMatrix.class - }; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsmissionSpecificMatrix.h b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsmissionSpecificMatrix.h deleted file mode 100644 index e7943f3f..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsmissionSpecificMatrix.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YMAnchorFansTaskDetailModel.h -// YUMI -// -// Created by YUMI on 2022/4/7. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface XCombatellegFanaticsmissionSpecificMatrix : NSObject - -@property (nonatomic, assign) NSInteger taskId; -@property (nonatomic, copy) NSString *taskCode; -@property (nonatomic, copy) NSString *taskName; -@property (nonatomic, copy) NSString *icon; -@property (nonatomic, copy) NSString *taskDesc; -@property (nonatomic, assign) NSInteger awardVal; -@property (nonatomic, assign) NSInteger totalNum; -@property (nonatomic, assign) BOOL isFinished; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsmissionSpecificMatrix.m b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsmissionSpecificMatrix.m deleted file mode 100644 index 01465a66..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XCombatellegFanaticsmissionSpecificMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMAnchorFansTaskDetailModel.m -// YUMI -// -// Created by YUMI on 2022/4/7. -// - -#import "XCombatellegFanaticsmissionSpecificMatrix.h" - -@implementation XCombatellegFanaticsmissionSpecificMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansJoinModel.h b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansJoinModel.h new file mode 100644 index 00000000..cc790f7e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansJoinModel.h @@ -0,0 +1,34 @@ +// +// YMAnchorFansJoinModel.h +// YUMI +// +// Created by YUMI on 2022/4/7. +// + +#import +#import "XPAnchorFansPrivilegeModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPAnchorFansJoinModel : NSObject + +///粉丝团id +@property (nonatomic, assign) long long teamId; +///主播uid +@property (nonatomic, assign) long long teamUid; +///主播头像 +@property (nonatomic, copy) NSString *anchorAvatar; +///主播名称 +@property (nonatomic, copy) NSString *anchorNick; +///粉丝团总人数 +@property (nonatomic, assign) NSInteger teamNum; +///榜单前三用户头像 +@property (nonatomic, strong) NSArray *avatarList; +///是否在退出粉丝团重新加入的24小时限制 +@property (nonatomic, assign) BOOL isJoinLimit; +///粉丝特权 +@property (nonatomic, strong) NSArray *privilegeConfigVos; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansJoinModel.m b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansJoinModel.m new file mode 100644 index 00000000..5a01e8ae --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansJoinModel.m @@ -0,0 +1,18 @@ +// +// YMAnchorFansJoinModel.m +// YUMI +// +// Created by YUMI on 2022/4/7. +// + +#import "XPAnchorFansJoinModel.h" + +@implementation XPAnchorFansJoinModel + ++ (NSDictionary *)objectClassInArray { + return @{ + @"privilegeConfigVos":XPAnchorFansPrivilegeModel.class + }; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansPrivilegeModel.h b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansPrivilegeModel.h new file mode 100644 index 00000000..7815f19f --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansPrivilegeModel.h @@ -0,0 +1,37 @@ +// +// YMAnchorFansJoinModel.h +// YUMI +// +// Created by YUMI on 2022/4/7. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSUInteger, AnchorFansTeamPrivilegeType) { + AnchorFansTeamPrivilegeTypeNameplate = 1, ///铭牌 + AnchorFansTeamPrivilegeTypeGift = 2, + AnchorFansTeamPrivilegeTypeTeamGift, +}; + +@interface XPAnchorFansPrivilegeModel : NSObject + +///粉丝团id +@property (nonatomic, assign) NSInteger privilegeId; +///特权名称 +@property (nonatomic, copy) NSString *name; +///特权对应的铭牌/礼物id +@property (nonatomic, assign) NSInteger normalId; +///特权描述 +@property (nonatomic, copy) NSString *desc; +//特权类型 1铭牌 2专属礼物 3入团礼物 +@property (nonatomic, assign) AnchorFansTeamPrivilegeType type; +///图标 +@property (nonatomic, copy) NSString *icon; +///状态 日效1有效 +@property (nonatomic, assign) NSInteger status; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansPrivilegeModel.m b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansPrivilegeModel.m new file mode 100644 index 00000000..878e5b82 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansPrivilegeModel.m @@ -0,0 +1,17 @@ +// +// YMAnchorFansJoinModel.m +// YUMI +// +// Created by YUMI on 2022/4/7. +// + +#import "XPAnchorFansPrivilegeModel.h" + +@implementation XPAnchorFansPrivilegeModel + ++ (NSDictionary *)replacedKeyFromPropertyName { + return @{@"desc": @"description" + }; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansRelationModel.h b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansRelationModel.h new file mode 100644 index 00000000..70c1d0ca --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansRelationModel.h @@ -0,0 +1,29 @@ +// +// YMAnchorFansRelationModel.h +// YUMI +// +// Created by YUMI on 2022/4/7. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPAnchorFansRelationModel : NSObject + +///当前房间是否开通粉丝团 +@property (nonatomic, assign) BOOL hasFansTeamCurrentRoom; +///是否为粉丝团成员 +@property (nonatomic, assign) BOOL isAnchorFans; +///是否为当前房间的主播 +@property (nonatomic, assign) BOOL isCurrentRoomAnchor; +///菜单栏入口是否展示红点提示 +@property (nonatomic, assign) BOOL isRedPop; +///粉丝团成员总数 +@property (nonatomic, assign) NSInteger anchorFansNum; +///粉丝等级 +@property (nonatomic, assign) NSInteger fansLevelSeq; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansRelationModel.m b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansRelationModel.m new file mode 100644 index 00000000..d23579ec --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansRelationModel.m @@ -0,0 +1,12 @@ +// +// YMAnchorFansRelationModel.m +// YUMI +// +// Created by YUMI on 2022/4/7. +// + +#import "XPAnchorFansRelationModel.h" + +@implementation XPAnchorFansRelationModel + +@end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansTaskDetailModel.h b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansTaskDetailModel.h new file mode 100644 index 00000000..c6e52344 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansTaskDetailModel.h @@ -0,0 +1,25 @@ +// +// YMAnchorFansTaskDetailModel.h +// YUMI +// +// Created by YUMI on 2022/4/7. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPAnchorFansTaskDetailModel : NSObject + +@property (nonatomic, assign) NSInteger taskId; +@property (nonatomic, copy) NSString *taskCode; +@property (nonatomic, copy) NSString *taskName; +@property (nonatomic, copy) NSString *icon; +@property (nonatomic, copy) NSString *taskDesc; +@property (nonatomic, assign) NSInteger awardVal; +@property (nonatomic, assign) NSInteger totalNum; +@property (nonatomic, assign) BOOL isFinished; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansTaskDetailModel.m b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansTaskDetailModel.m new file mode 100644 index 00000000..5ddab9f7 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansTaskDetailModel.m @@ -0,0 +1,12 @@ +// +// YMAnchorFansTaskDetailModel.m +// YUMI +// +// Created by YUMI on 2022/4/7. +// + +#import "XPAnchorFansTaskDetailModel.h" + +@implementation XPAnchorFansTaskDetailModel + +@end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansTaskModel.h b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansTaskModel.h new file mode 100644 index 00000000..fff8eb66 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansTaskModel.h @@ -0,0 +1,29 @@ +// +// YMAnchorFansTaskModel.h +// YUMI +// +// Created by YUMI on 2022/4/7. +// + +#import +#import "XPAnchorFansTaskDetailModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPAnchorFansTaskModel : NSObject + +@property (nonatomic, copy) NSString *teamUid; +@property (nonatomic, copy) NSString *anchorAvatar; +@property (nonatomic, copy) NSString *anchorNick; +@property (nonatomic, assign) NSInteger teamNum; +@property (nonatomic, assign) NSInteger memberUid; +@property (nonatomic, copy) NSString *memberAvatar; +@property (nonatomic, strong) NSArray *avatarList; +@property (nonatomic, strong) NSArray *taskVos; +@property (nonatomic, assign) NSInteger levelSeq; +@property (nonatomic, assign) NSInteger levelExper; +@property (nonatomic, assign) NSInteger nextLevelExper; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansTaskModel.m b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansTaskModel.m new file mode 100644 index 00000000..5e361e65 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Model/XPAnchorFansTaskModel.m @@ -0,0 +1,18 @@ +// +// YMAnchorFansTaskModel.m +// YUMI +// +// Created by YUMI on 2022/4/7. +// + +#import "XPAnchorFansTaskModel.h" + +@implementation XPAnchorFansTaskModel + ++ (NSDictionary *)objectClassInArray { + return @{ + @"taskVos":XPAnchorFansTaskDetailModel.class + }; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Presenter/XCombatellegFanaticsSquadExternalizer.h b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Presenter/XCombatellegFanaticsSquadExternalizer.h deleted file mode 100644 index 0583ae17..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Presenter/XCombatellegFanaticsSquadExternalizer.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMAnchorFansTeamPresenter.h -// YUMI -// -// Created by YUMI on 2022/4/6. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface XCombatellegFanaticsSquadExternalizer : BaseMvpExternalizer - -- (void)outKellegFantowardsicsSquad:(NSString *)teamUid; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Presenter/XCombatellegFanaticsSquadExternalizer.m b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Presenter/XCombatellegFanaticsSquadExternalizer.m deleted file mode 100644 index 73ece290..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Presenter/XCombatellegFanaticsSquadExternalizer.m +++ /dev/null @@ -1,20 +0,0 @@ -// -// YMAnchorFansTeamPresenter.m -// YUMI -// -// Created by YUMI on 2022/4/6. -// - -#import "XCombatellegFanaticsSquadExternalizer.h" -#import "Api+FansTeam.h" -#import "XCombatellegFanaticsTeamCeremony.h" - -@implementation XCombatellegFanaticsSquadExternalizer - -- (void)outKellegFantowardsicsSquad:(NSString *)teamUid { - [Api requisitionOptowardssideFantowardsicsSquad:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] outFantowardsicsSquadAccomplishment]; - }] teamUid:teamUid]; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Presenter/XPAnchorFansTeamPresenter.h b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Presenter/XPAnchorFansTeamPresenter.h new file mode 100644 index 00000000..7425df35 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Presenter/XPAnchorFansTeamPresenter.h @@ -0,0 +1,20 @@ +// +// YMAnchorFansTeamPresenter.h +// YUMI +// +// Created by YUMI on 2022/4/6. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPAnchorFansTeamPresenter : BaseMvpPresenter + +/// 退出粉丝团 +/// @param teamUid 用户uid +- (void)outAnchorFansTeam:(NSString *)teamUid; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Presenter/XPAnchorFansTeamPresenter.m b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Presenter/XPAnchorFansTeamPresenter.m new file mode 100644 index 00000000..e138c320 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Presenter/XPAnchorFansTeamPresenter.m @@ -0,0 +1,22 @@ +// +// YMAnchorFansTeamPresenter.m +// YUMI +// +// Created by YUMI on 2022/4/6. +// + +#import "XPAnchorFansTeamPresenter.h" +#import "Api+FansTeam.h" +#import "XPAnchorFansTeamProtocol.h" + +@implementation XPAnchorFansTeamPresenter + +/// 退出粉丝团 +/// @param teamUid 用户uid +- (void)outAnchorFansTeam:(NSString *)teamUid { + [Api requestOutFansTeam:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] outFansTeamSuccess]; + }] teamUid:teamUid]; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Protocol/XCombatellegFanaticsTeamCeremony.h b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Protocol/XCombatellegFanaticsTeamCeremony.h deleted file mode 100644 index a91b04ce..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Protocol/XCombatellegFanaticsTeamCeremony.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// YMAnchorFansTeamProtocol.h -// YUMI -// -// Created by YUMI on 2022/4/6. -// - -@protocol XCombatellegFanaticsTeamCeremony - -- (void)outFantowardsicsSquadAccomplishment; - -@end - diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Protocol/XPAnchorFansTeamProtocol.h b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Protocol/XPAnchorFansTeamProtocol.h new file mode 100644 index 00000000..0bd2963c --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/Protocol/XPAnchorFansTeamProtocol.h @@ -0,0 +1,14 @@ +// +// YMAnchorFansTeamProtocol.h +// YUMI +// +// Created by YUMI on 2022/4/6. +// + +@protocol XPAnchorFansTeamProtocol + +///退出粉丝团成功 +- (void)outFansTeamSuccess; + +@end + diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XCombatellegFanaticsSquadEntranceRegard.h b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XCombatellegFanaticsSquadEntranceRegard.h deleted file mode 100644 index f735f03a..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XCombatellegFanaticsSquadEntranceRegard.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMAnchorFansTeamEntranceView.h -// YUMI -// -// Created by YUMI on 2022/4/6. -// - -#import -#import "XCombatellegFanaticsRelationMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface XCombatellegFanaticsSquadEntranceRegard : UIView - -@property (nonatomic, copy) NSString *title; - -@property (nonatomic, strong) XCombatellegFanaticsRelationMatrix *model; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XCombatellegFanaticsSquadEntranceRegard.m b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XCombatellegFanaticsSquadEntranceRegard.m deleted file mode 100644 index 7ad76ff9..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XCombatellegFanaticsSquadEntranceRegard.m +++ /dev/null @@ -1,153 +0,0 @@ -// -// YMAnchorFansTeamEntranceView.m -// YUMI -// -// Created by YUMI on 2022/4/6. -// - -#import "XCombatellegFanaticsSquadEntranceRegard.h" -#import -#import "UIImage+Utils.h" -#import "DJDKMIMOMColor.h" - -@interface XCombatellegFanaticsSquadEntranceRegard() - -@property (nonatomic, strong) UIImageView *backgroundIndicateRegard; -@property (nonatomic, strong) UIImageView *figureIndicateRegard; -@property (nonatomic, strong) UILabel *titleLabel; - -@end - -@implementation XCombatellegFanaticsSquadEntranceRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backgroundIndicateRegard]; - [self addSubview:self.figureIndicateRegard]; - [self addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.figureIndicateRegard); - }]; - - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self); - make.left.mas_equalTo(-11); - make.right.mas_equalTo(self.figureIndicateRegard.mas_right).mas_offset(-8); - make.height.mas_equalTo(22); - }]; - [self.figureIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.backgroundIndicateRegard.mas_centerY); - make.width.height.mas_equalTo(22); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.backgroundIndicateRegard); - make.right.mas_equalTo(self.figureIndicateRegard.mas_left); - make.left.mas_equalTo(8); - }]; - -} -#pragma mark - Getters And Setters -- (void)setTitle:(NSString *)title { - self.titleLabel.text = title; -} - -- (void)setModel:(XCombatellegFanaticsRelationMatrix *)model { - _model = model; - if (model.isCurrentRoomAnchor) { - self.figureIndicateRegard.image = [UIImage imageNamed:@"yumi_anchor_fansTeam_entrance_hadOpen"]; - [self.figureIndicateRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(20); - make.height.mas_equalTo(14); - make.centerY.mas_equalTo(self.backgroundIndicateRegard); - }]; - [self.backgroundIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.figureIndicateRegard).mas_offset(8); - }]; - if (model.hasFansTeamCurrentRoom) { - self.titleLabel.text = [NSString stringWithFormat:@"粉丝团(%ld)", model.anchorFansNum]; - } else { - self.titleLabel.text = YMLocalizedString(@"YUMI_Anchor_Fans_Team_Entrance_View_1"); - } - } else { - if (model.hasFansTeamCurrentRoom) { - if (model.isAnchorFans) { - self.titleLabel.text = [NSString stringWithFormat:@"粉丝LV.%zd ", model.fansLevelSeq]; - self.figureIndicateRegard.image = [UIImage imageNamed:@"yumi_anchor_fansTeam_entrance_hadOpen"]; - [self.figureIndicateRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(20); - make.height.mas_equalTo(14); - make.centerY.mas_equalTo(self.titleLabel); - }]; - [self.backgroundIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.figureIndicateRegard).mas_offset(8); - make.height.mas_equalTo(22); - }]; - } else { - self.titleLabel.text = YMLocalizedString(@"YUMI_Anchor_Fans_Team_Entrance_View_3"); - self.figureIndicateRegard.image = [UIImage imageNamed:@"yumi_anchor_fansTeam_entrance_pic"]; - [self.figureIndicateRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.backgroundIndicateRegard); - make.width.height.mas_equalTo(25); - }]; - [self.backgroundIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.figureIndicateRegard.mas_right).mas_offset(8); - }]; - } - } else { - self.titleLabel.text = YMLocalizedString(@"YUMI_Anchor_Fans_Team_Entrance_View_4"); - [self.figureIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(0); - }]; - [self.backgroundIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.titleLabel).mas_offset(8); - }]; - } - } -} - -- (UIImageView *)backgroundIndicateRegard { - if (_backgroundIndicateRegard == nil) { - _backgroundIndicateRegard = [[UIImageView alloc] init]; - _backgroundIndicateRegard.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFC37D6), UIColorFromRGB(0xFC7FDC)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(92, 22)]; - _backgroundIndicateRegard.userInteractionEnabled = YES; - _backgroundIndicateRegard.layer.cornerRadius = 11; - _backgroundIndicateRegard.layer.masksToBounds = YES; - _backgroundIndicateRegard.layer.borderWidth = 1; - _backgroundIndicateRegard.layer.borderColor = [UIColor colorWithWhite:1 alpha:0.35].CGColor; - } - return _backgroundIndicateRegard; -} - -- (UIImageView *)figureIndicateRegard { - if (_figureIndicateRegard == nil) { - _figureIndicateRegard = [[UIImageView alloc] init]; - _figureIndicateRegard.userInteractionEnabled = YES; - _figureIndicateRegard.image = [UIImage imageNamed:@"yumi_anchor_fansTeam_entrance_pic"]; - _figureIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _figureIndicateRegard; -} - -- (UILabel *)titleLabel { - if (_titleLabel == nil) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textColor = UIColor.whiteColor; - _titleLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - _titleLabel.text = @"0"; - } - return _titleLabel; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XCombatellegFanaticsSquadRegardGovernancer.h b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XCombatellegFanaticsSquadRegardGovernancer.h deleted file mode 100644 index 414c8fcb..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XCombatellegFanaticsSquadRegardGovernancer.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMAnchorFansTeamViewController.h -// YUMI -// -// Created by YUMI on 2022/4/6. -// - -#import "MvpRegardGovernancer.h" -#import "XCombatellegFanaticsJoinMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface XCombatellegFanaticsSquadRegardGovernancer : MvpRegardGovernancer - -- (instancetype)initAboutChamberCid:(NSString *)roomUid; - -@property (nonatomic, strong) XCombatellegFanaticsJoinMatrix *model; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XCombatellegFanaticsSquadRegardGovernancer.m b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XCombatellegFanaticsSquadRegardGovernancer.m deleted file mode 100644 index be6e3822..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XCombatellegFanaticsSquadRegardGovernancer.m +++ /dev/null @@ -1,549 +0,0 @@ -// -// YMAnchorFansTeamViewController.m -// YUMI -// -// Created by YUMI on 2022/4/6. -// - -#import "XCombatellegFanaticsSquadRegardGovernancer.h" -#import "XCombatellegFanaticsSquadExternalizer.h" -#import "XCombatellegFanaticsTeamCeremony.h" -#import "NetIndicateRegard.h" -#import -#import "YUMIMacroUitls.h" -#import "UIImage+Utils.h" -#import "DJDKMIMOMColor.h" -#import "YUMIChamberHalfTissueRegard.h" -#import "MKJPopup.h" -#import "YUMIHtmlUrl.h" -#import "Api+Gift.h" -#import "AccountAbstractStorage.h" -#import "UIButton+EnlargeTouchArea.h" - -@interface XCombatellegFanaticsSquadRegardGovernancer() - -@property (nonatomic, strong) NSString *roomUid; -@property (nonatomic, strong) UIView *apexRegard; -@property (nonatomic, strong) UIView *contentView; -@property (nonatomic, strong) UIImageView *backgroundIndicateRegard; -@property (nonatomic, strong) UIButton *facilitateBtuton; -@property (nonatomic, strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic, strong) UILabel *constituteSequencignation; -@property (nonatomic, strong) UIView *computationSatisfperformanceRegard; -@property (nonatomic, strong) UILabel *computationSequencignation; - -@property (nonatomic, strong) UIView *stackView; -@property (nonatomic, strong) UIImageView *rateIndicateRegard; -@property (nonatomic, strong) UIImageView *privilegeChampionIndicateRegard; -@property (nonatomic, strong) UIView *materialBackgroundRegard; -@property (nonatomic, strong) NetIndicateRegard *materialIndicateRegard; -@property (nonatomic, strong) UILabel *materialSequencignation; -@property (nonatomic, strong) UILabel *materialSequenceSequencignation; -@property (nonatomic, strong) UIView *presentBackgroundRegard; -@property (nonatomic, strong) NetIndicateRegard *presentIndicateRegard; -@property (nonatomic, strong) UILabel *presentSequencignation; -@property (nonatomic, strong) UILabel *presentSequenceSequencignation; -@property (nonatomic, strong) NetIndicateRegard *figureIndicateRegard; -@property (nonatomic, strong) UIButton *joinBtuton; -@property (nonatomic, strong) UILabel *joinSequencignation; - -@end - -@implementation XCombatellegFanaticsSquadRegardGovernancer - -- (instancetype)initAboutChamberCid:(NSString *)roomUid { - if (self = [super init]) { - self.roomUid = roomUid; - self.modalPresentationStyle = UIModalPresentationOverFullScreen; - } - return self; -} - -- (XCombatellegFanaticsSquadExternalizer *)producePresimport { - return [[XCombatellegFanaticsSquadExternalizer alloc] init];; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self setupAbstract]; -} - -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { - [self.view endEditing:YES]; -} - - -#pragma mark - Private Method -- (void)initSubViews { - self.view.backgroundColor = [UIColor clearColor]; - [self.view addSubview:self.apexRegard]; - [self.view addSubview:self.contentView]; - - [self.contentView addSubview:self.backgroundIndicateRegard]; - [self.contentView addSubview:self.facilitateBtuton]; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.constituteSequencignation]; - [self.contentView addSubview:self.computationSatisfperformanceRegard]; - [self.computationSatisfperformanceRegard addSubview:self.computationSequencignation]; - [self.contentView addSubview:self.stackView]; - [self.stackView addSubview:self.rateIndicateRegard]; - - [self.contentView addSubview:self.privilegeChampionIndicateRegard]; - [self.contentView addSubview:self.materialBackgroundRegard]; - - [self.materialBackgroundRegard addSubview:self.materialIndicateRegard]; - [self.materialBackgroundRegard addSubview:self.materialSequencignation]; - [self.materialBackgroundRegard addSubview:self.materialSequenceSequencignation]; - - [self.contentView addSubview:self.presentBackgroundRegard]; - [self.presentBackgroundRegard addSubview:self.presentIndicateRegard]; - [self.presentBackgroundRegard addSubview:self.presentSequencignation]; - [self.presentBackgroundRegard addSubview:self.presentSequenceSequencignation]; - - [self.contentView addSubview:self.joinBtuton]; - [self.contentView addSubview:self.figureIndicateRegard]; - [self.contentView addSubview:self.joinSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.apexRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.contentView.mas_top); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.height.mas_equalTo(416); - }]; - - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make){ - make.edges.mas_equalTo(0); - }]; - - [self.facilitateBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-10); - make.top.mas_equalTo(10); - make.width.height.mas_equalTo(30); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(15); - make.width.height.mas_equalTo(64); - make.top.mas_equalTo(36); - }]; - - [self.constituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(21); - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).mas_offset(8); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard).offset(6); - make.right.mas_equalTo(self.computationSatisfperformanceRegard.mas_left).mas_offset(-4); - }]; - - [self.computationSatisfperformanceRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.constituteSequencignation); - make.right.mas_lessThanOrEqualTo(-26); - make.height.mas_equalTo(15); - make.left.mas_equalTo(self.constituteSequencignation.mas_right).mas_offset(4); - }]; - [self.computationSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.bottom.mas_equalTo(self.computationSatisfperformanceRegard); - make.left.mas_equalTo(self.computationSatisfperformanceRegard).mas_offset(5); - make.right.mas_equalTo(self.computationSatisfperformanceRegard).mas_offset(-5); - }]; - - [self.computationSequencignation setContentHuggingPriority:UILayoutPriorityDefaultHigh forAxis:UILayoutConstraintAxisHorizontal]; - [self.constituteSequencignation setContentCompressionResistancePriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).mas_offset(8); - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard).mas_offset(-3); - make.height.mas_equalTo(28); - make.width.mas_equalTo(3 * (20 + 8) + 34); - }]; - - [self.rateIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.stackView); - make.left.mas_equalTo(9); - make.width.mas_equalTo(16); - make.height.mas_equalTo(18); - }]; - [self.privilegeChampionIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_bottom).mas_offset(15); - make.centerX.mas_equalTo(self.contentView); - make.width.mas_equalTo(103); - make.height.mas_equalTo(38); - }]; - - [self.materialBackgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(15); - make.top.mas_equalTo(self.privilegeChampionIndicateRegard.mas_bottom).offset(7); - make.height.mas_equalTo(58); - }]; - - [self.materialIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(10); - make.centerY.mas_equalTo(self.materialBackgroundRegard); - make.width.height.mas_equalTo(38); - }]; - - [self.materialSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.materialIndicateRegard.mas_right).mas_offset(8); - make.top.mas_equalTo(self.materialIndicateRegard).mas_offset(1); - make.height.mas_equalTo(21); - }]; - [self.materialSequenceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.materialSequencignation.mas_bottom); - make.left.mas_equalTo(self.materialSequencignation); - make.height.mas_equalTo(15); - }]; - - [self.presentBackgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(15); - make.top.mas_equalTo(self.materialBackgroundRegard.mas_bottom).offset(12); - make.height.mas_equalTo(58); - }]; - - [self.presentIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(10); - make.centerY.mas_equalTo(self.presentBackgroundRegard); - make.width.height.mas_equalTo(38); - }]; - - [self.presentSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.presentIndicateRegard.mas_right).mas_offset(8); - make.top.mas_equalTo(self.presentIndicateRegard).mas_offset(1); - make.height.mas_equalTo(21); - }]; - [self.presentSequenceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.presentSequencignation.mas_bottom); - make.left.mas_equalTo(self.presentSequencignation); - make.height.mas_equalTo(15); - }]; - - [self.figureIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.joinBtuton); - make.left.mas_equalTo(self.joinBtuton).mas_offset(15); - make.width.height.mas_equalTo(75); - }]; - [self.joinBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(15); - make.height.mas_equalTo(48); - make.bottom.mas_equalTo(-kSafeAreaBottomHeight - 14); - }]; - [self.joinSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.figureIndicateRegard.mas_right); - make.centerY.mas_equalTo(self.joinBtuton); - }]; -} - -- (void)setModel:(XCombatellegFanaticsJoinMatrix *)model { - _model = model; -} - -- (void)setupAbstract { - if (self.model) { - self.intelligenceportraitIndicateRegard.imageUrl = self.model.anchorAvatar; - self.constituteSequencignation.text = self.model.anchorNick; - self.computationSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Anchor_Fans_Team_View_Controller_0"), self.model.teamNum]; - - XCombatellegFanaticsPrivilegeMatrix *materialMatrix = self.model.privilegeConfigVos[0]; - self.materialIndicateRegard.imageUrl = materialMatrix.icon; - self.materialSequencignation.text = materialMatrix.name; - self.materialSequenceSequencignation.text = materialMatrix.desc; - XCombatellegFanaticsPrivilegeMatrix *presentMatrix = self.model.privilegeConfigVos[1]; - self.presentIndicateRegard.imageUrl = presentMatrix.icon; - self.presentSequencignation.text = presentMatrix.name; - self.presentSequenceSequencignation.text = presentMatrix.desc; - - XCombatellegFanaticsPrivilegeMatrix *joinModel = self.model.privilegeConfigVos[2]; - self.joinSequencignation.text = joinModel.name; - self.figureIndicateRegard.imageUrl = joinModel.icon; - - CGFloat margin = 8; - for (int i = 0; i < 3; i++) { - NSString *str; - if (self.model.avatarList.count > i) { - str = self.model.avatarList[i]; - } - NetIndicateDisposition *config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyDispossessIntelligenceportraitDepapossessor]; - NetIndicateRegard *imageView = [[NetIndicateRegard alloc] initWithConfig:config]; - imageView.layer.cornerRadius = 10; - imageView.layer.masksToBounds = YES; - if (str) { - imageView.imageUrl = str; - } - [self.stackView addSubview:imageView]; - [imageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.stackView); - make.width.height.mas_equalTo(20); - make.left.mas_equalTo(i * 27 + 25 + margin); - }]; - } - } -} - -#pragma mark - private -- (void)onDismiss:(UITapGestureRecognizer *)ges { - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)helpBtutonPerformance:(UIButton *)button { - YUMIChamberHalfTissueRegard * webView = [[YUMIChamberHalfTissueRegard alloc] init]; - webView.url = [NSString stringWithFormat:@"%@?roomUid=%@", URLWithType(kAnchorFansRuleURL), self.roomUid]; - [MKJPopup popupRegard:webView style:MKJPopupStyleActionSheet]; -} - -- (void)combintowardsionBtutonPerformance:(UIButton *)button { - button.userInteractionEnabled = NO; - XCombatellegFanaticsPrivilegeMatrix *joinModel = self.model.privilegeConfigVos[2]; - [Api requisitionDischargeKellegFantowardsicsPresent:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Anchor_Fans_Team_View_Controller_1")]; - [self dismissViewControllerAnimated:YES completion:nil]; - } else { - [self EvidenceMistakeToast:msg]; - button.userInteractionEnabled = YES; - } - } targetUids:[NSString stringWithFormat:@"%lld", self.model.teamUid] giftNum:@"1" sendType:@"1" giftId:[NSString stringWithFormat:@"%ld", joinModel.normalId] giftSource:@"1" giftType:@"" roomUid:self.roomUid msg:@"" uid:[[AccountAbstractStorage instance] acquireCid]]; -} - -- (void)passtoFantowardsicsRtowardse:(UITapGestureRecognizer *)ges { - YUMIChamberHalfTissueRegard * webView = [[YUMIChamberHalfTissueRegard alloc] init]; - webView.url = [NSString stringWithFormat:@"%@?roomUid=%@", URLWithType(kAnchorFansRankURL), self.roomUid]; - [MKJPopup popupRegard:webView style:MKJPopupStyleActionSheet]; -} - -#pragma mark - getter -- (UIView *)apexRegard { - if (!_apexRegard) { - _apexRegard = [[UIView alloc] init]; - _apexRegard.backgroundColor = UIColor.blackColor; - _apexRegard.alpha = 0.3; - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onDismiss:)]; - [_apexRegard addGestureRecognizer:tap]; - } - return _apexRegard; -} - -- (UIView *)contentView { - if (!_contentView) { - _contentView = [[UIView alloc] init]; - CAShapeLayer * layer = [CAShapeLayer layer]; - layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth,416) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)].CGPath; - _contentView.layer.mask = layer; - } - return _contentView; -} - -- (UIImageView *)backgroundIndicateRegard { - if (!_backgroundIndicateRegard) { - _backgroundIndicateRegard = [[UIImageView alloc] init]; - _backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_join_anchor_fansTeam_background"]; - _backgroundIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _backgroundIndicateRegard; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 64 / 2; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)constituteSequencignation { - if (!_constituteSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.textColor = [DJDKMIMOMColor mainEssayPrettify]; - label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; - _constituteSequencignation = label; - } - return _constituteSequencignation; -} - -- (UIView *)computationSatisfperformanceRegard { - if (!_computationSatisfperformanceRegard) { - _computationSatisfperformanceRegard = [[UIView alloc] init]; - _computationSatisfperformanceRegard.backgroundColor = [UIColor whiteColor]; - _computationSatisfperformanceRegard.layer.cornerRadius = 7.5; - _computationSatisfperformanceRegard.layer.masksToBounds = YES; - } - return _computationSatisfperformanceRegard; -} - -- (UILabel *)computationSequencignation { - if (!_computationSequencignation) { - _computationSequencignation = [[UILabel alloc] init]; - _computationSequencignation.textColor = UIColorFromRGB(0xFE3478); - _computationSequencignation.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - } - return _computationSequencignation; -} - -- (UIView *)stackView { - if (!_stackView) { - _stackView = [[UIView alloc] init]; - _stackView.backgroundColor = [UIColor whiteColor]; - _stackView.layer.cornerRadius = 14; - _stackView.layer.masksToBounds = YES; - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(passtoFantowardsicsRtowardse:)]; - [_stackView addGestureRecognizer:tap]; - } - return _stackView; -} - -- (UIImageView *)rateIndicateRegard { - if (!_rateIndicateRegard) { - _rateIndicateRegard = [[UIImageView alloc] init]; - _rateIndicateRegard.image = [UIImage imageNamed:@"yumi_anchor_fansTeam_rank"]; - } - return _rateIndicateRegard; -} - -- (UIImageView *)privilegeChampionIndicateRegard { - if (!_privilegeChampionIndicateRegard) { - _privilegeChampionIndicateRegard = [[UIImageView alloc] init]; - _privilegeChampionIndicateRegard.image = [UIImage imageNamed:@"yumi_anchor_fansTeam_nameplate"]; - _privilegeChampionIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _privilegeChampionIndicateRegard; -} - -- (UIView *)materialBackgroundRegard { - if (!_materialBackgroundRegard) { - _materialBackgroundRegard = [[UIView alloc] init]; - _materialBackgroundRegard.backgroundColor = [UIColor whiteColor]; - _materialBackgroundRegard.layer.cornerRadius = 8; - _materialBackgroundRegard.layer.masksToBounds = YES; - } - return _materialBackgroundRegard; -} - -- (NetIndicateRegard *)materialIndicateRegard { - if (!_materialIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _materialIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _materialIndicateRegard.layer.masksToBounds = YES; - _materialIndicateRegard.layer.cornerRadius = 8; - _materialIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - _materialIndicateRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]; - } - return _materialIndicateRegard; -} - -- (UILabel *)materialSequencignation; { - if (!_materialSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.textColor = [DJDKMIMOMColor mainEssayPrettify]; - label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; - _materialSequencignation = label; - } - return _materialSequencignation; -} - -- (UILabel *)materialSequenceSequencignation; { - if (!_materialSequenceSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - label.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - _materialSequenceSequencignation = label; - } - return _materialSequenceSequencignation; -} - -- (UIView *)presentBackgroundRegard { - if (!_presentBackgroundRegard) { - _presentBackgroundRegard = [[UIView alloc] init]; - _presentBackgroundRegard.backgroundColor = [UIColor whiteColor]; - _presentBackgroundRegard.layer.cornerRadius = 8; - _presentBackgroundRegard.layer.masksToBounds = YES; - } - return _presentBackgroundRegard; -} - -- (NetIndicateRegard *)presentIndicateRegard { - if (!_presentIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _presentIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _presentIndicateRegard.layer.masksToBounds = YES; - _presentIndicateRegard.layer.cornerRadius = 8; - _presentIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - _presentIndicateRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]; - } - return _presentIndicateRegard; -} - -- (UILabel *)presentSequencignation; { - if (!_presentSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.textColor = [DJDKMIMOMColor mainEssayPrettify]; - label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; - _presentSequencignation = label; - } - return _presentSequencignation; -} - -- (UILabel *)presentSequenceSequencignation; { - if (!_presentSequenceSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - label.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - _presentSequenceSequencignation = label; - } - return _presentSequenceSequencignation; -} - -- (NetIndicateRegard *)figureIndicateRegard { - if (!_figureIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.imageType = ImageGenreUserIcon; - _figureIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _figureIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _figureIndicateRegard; -} - -- (UIButton *)joinBtuton { - if (!_joinBtuton) { - _joinBtuton = [[UIButton alloc] init]; - [_joinBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFF49A3), UIColorFromRGB(0xFF2B4C)] gradientType:GradientGenreTopToBottom imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _joinBtuton.layer.masksToBounds = YES; - _joinBtuton.layer.cornerRadius = 24; - [_joinBtuton addTarget:self action:@selector(combintowardsionBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _joinBtuton; -} - -- (UILabel *)joinSequencignation { - if (!_joinSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.textColor = [UIColor whiteColor]; - label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _joinSequencignation = label; - } - return _joinSequencignation; -} - -- (UIButton *)facilitateBtuton { - if (!_facilitateBtuton) { - _facilitateBtuton = [[UIButton alloc] init]; - [_facilitateBtuton addTarget:self action:@selector(helpBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_facilitateBtuton setImage:[UIImage imageNamed:@"yumi_anchor_fansTeam_help"] forState:UIControlStateNormal]; - [_facilitateBtuton setEnlargeEdgeAboutApex:5 right:5 bottom:5 left:5]; - } - return _facilitateBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XCombatellegFanaticsmissionRegardGovernancer.h b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XCombatellegFanaticsmissionRegardGovernancer.h deleted file mode 100644 index 2626be8d..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XCombatellegFanaticsmissionRegardGovernancer.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMAnchorFansTaskViewController.h -// YUMI -// -// Created by YUMI on 2022/4/7. -// - -#import "MvpRegardGovernancer.h" -#import "XCombatellegFanaticsmissionMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface XCombatellegFanaticsmissionRegardGovernancer : MvpRegardGovernancer - -- (instancetype)initAboutChamberCid:(NSString *)roomUid; - -@property (nonatomic, strong) XCombatellegFanaticsmissionMatrix *model; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XCombatellegFanaticsmissionRegardGovernancer.m b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XCombatellegFanaticsmissionRegardGovernancer.m deleted file mode 100644 index 0d26b111..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XCombatellegFanaticsmissionRegardGovernancer.m +++ /dev/null @@ -1,575 +0,0 @@ -// -// YMAnchorFansTaskViewController.m -// YUMI -// -// Created by YUMI on 2022/4/7. -// - -#import "XCombatellegFanaticsmissionRegardGovernancer.h" -#import "XCombatellegFanaticsSquadExternalizer.h" -#import "XCombatellegFanaticsTeamCeremony.h" -#import "NetIndicateRegard.h" -#import -#import "YUMIMacroUitls.h" -#import "UIImage+Utils.h" -#import "DJDKMIMOMColor.h" -#import "MKJPopup.h" -#import "YUMIHtmlUrl.h" -#import "UIButton+EnlargeTouchArea.h" -#import "NSArray+Safe.h" -#import "XCombatellegFanaticsmissionTabulationRegardElement.h" -#import "YUMIChamberHalfTissueRegard.h" - -@interface XCombatellegFanaticsmissionRegardGovernancer() - -@property (nonatomic, strong) NSString *roomUid; -@property (nonatomic, strong) UIView *apexRegard; -@property (nonatomic, strong) UIView *contentView; -@property (nonatomic, strong) UIImageView *backgroundIndicateRegard; -@property (nonatomic, strong) UIButton *facilitateBtuton; -@property (nonatomic, strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic, strong) UILabel *constituteSequencignation; -@property (nonatomic, strong) UIView *computationSatisfperformanceRegard; -@property (nonatomic, strong) UILabel *computationSequencignation; - -@property (nonatomic, strong) UIView *stackView; -@property (nonatomic, strong) UIImageView *rateIndicateRegard; -@property (nonatomic, strong) UIImageView *privilegeChampionIndicateRegard; - -@property (nonatomic, strong) UITableView *tableView; - -@property (nonatomic, strong) UIView *bottomView; -@property (nonatomic, strong) NetIndicateRegard *mieyIntelligenceportraitIndicateRegard; -@property (nonatomic, strong) UILabel *intimateSequencignation; -@property (nonatomic, strong) UIView *growthBackgroundRegard; -@property (nonatomic, strong) UIImageView *progressView; -@property (nonatomic, strong) UILabel *growthSequencignation; -@property (nonatomic, strong) UIImageView *explainBackgroundIndicateRegard; -@property (nonatomic, strong) UIButton *explainBtuton; -@property (nonatomic, strong) UIView *devideRegard; -@property (nonatomic, strong) UIButton *exitBtuton; - -@end - -@implementation XCombatellegFanaticsmissionRegardGovernancer - -- (instancetype)initAboutChamberCid:(NSString *)roomUid { - if (self = [super init]) { - self.roomUid = roomUid; - self.modalPresentationStyle = UIModalPresentationOverFullScreen; - } - return self; -} - -- (XCombatellegFanaticsSquadExternalizer *)producePresimport { - return [[XCombatellegFanaticsSquadExternalizer alloc] init];; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self setupAbstract]; -} - -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { - [self.view endEditing:YES]; -} - - -#pragma mark - Private Method -- (void)initSubViews { - self.view.backgroundColor = [UIColor clearColor]; - [self.view addSubview:self.apexRegard]; - [self.view addSubview:self.contentView]; - - [self.contentView addSubview:self.backgroundIndicateRegard]; - [self.contentView addSubview:self.facilitateBtuton]; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.constituteSequencignation]; - [self.contentView addSubview:self.computationSatisfperformanceRegard]; - [self.computationSatisfperformanceRegard addSubview:self.computationSequencignation]; - [self.contentView addSubview:self.stackView]; - [self.stackView addSubview:self.rateIndicateRegard]; - [self.contentView addSubview:self.privilegeChampionIndicateRegard]; - [self.contentView addSubview:self.tableView]; - - [self.contentView addSubview:self.bottomView]; - [self.bottomView addSubview:self.mieyIntelligenceportraitIndicateRegard]; - [self.bottomView addSubview:self.intimateSequencignation]; - [self.bottomView addSubview:self.growthBackgroundRegard]; - [self.growthBackgroundRegard addSubview:self.progressView]; - [self.growthBackgroundRegard addSubview:self.growthSequencignation]; - - [self.contentView addSubview:self.explainBackgroundIndicateRegard]; - [self.explainBackgroundIndicateRegard addSubview:self.explainBtuton]; - [self.explainBackgroundIndicateRegard addSubview:self.devideRegard]; - [self.explainBackgroundIndicateRegard addSubview:self.exitBtuton]; -} - -- (void)initChildLyRestrictions { - [self.apexRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.contentView.mas_top); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.height.mas_equalTo(454); - }]; - - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make){ - make.top.right.left.bottom.mas_equalTo(0); - }]; - - [self.facilitateBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-10); - make.top.mas_equalTo(10); - make.width.height.mas_equalTo(30); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(15); - make.width.height.mas_equalTo(64); - make.top.mas_equalTo(36); - }]; - - [self.constituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(21); - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).mas_offset(8); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard).offset(6); - make.right.mas_equalTo(self.computationSatisfperformanceRegard.mas_left).mas_offset(-4); - }]; - - [self.computationSatisfperformanceRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.constituteSequencignation); - make.right.mas_lessThanOrEqualTo(-26); - make.height.mas_equalTo(15); - make.left.mas_equalTo(self.constituteSequencignation.mas_right).mas_offset(4); - }]; - [self.computationSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.bottom.mas_equalTo(self.computationSatisfperformanceRegard); - make.left.mas_equalTo(self.computationSatisfperformanceRegard).mas_offset(5); - make.right.mas_equalTo(self.computationSatisfperformanceRegard).mas_offset(-5); - }]; - - [self.computationSequencignation setContentHuggingPriority:UILayoutPriorityDefaultHigh forAxis:UILayoutConstraintAxisHorizontal]; - [self.constituteSequencignation setContentCompressionResistancePriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal]; - - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).mas_offset(8); - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard).mas_offset(-3); - make.height.mas_equalTo(28); - make.width.mas_equalTo(3 * (20 + 8) + 34); - }]; - - [self.rateIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.stackView); - make.left.mas_equalTo(9); - make.width.mas_equalTo(16); - make.height.mas_equalTo(18); - }]; - - [self.privilegeChampionIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_bottom).mas_offset(21); - make.centerX.mas_equalTo(self.contentView); - make.width.mas_equalTo(88); - make.height.mas_equalTo(34); - }]; - - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(25); - make.top.mas_equalTo(self.privilegeChampionIndicateRegard.mas_bottom).offset(12); - make.height.mas_equalTo(200); - }]; - - [self.bottomView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(0); - make.height.mas_equalTo(88); - }]; - [self.mieyIntelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(24); - make.top.mas_equalTo(10); - make.width.height.mas_equalTo(40); - }]; - - [self.intimateSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.mieyIntelligenceportraitIndicateRegard.mas_right).mas_offset(8); - make.top.mas_equalTo(self.mieyIntelligenceportraitIndicateRegard).mas_offset(4); - make.height.mas_equalTo(15); - }]; - - [self.growthBackgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intimateSequencignation); - make.right.mas_equalTo(-24); - make.height.mas_equalTo(16); - make.top.mas_equalTo(self.intimateSequencignation.mas_bottom).mas_offset(2); - }]; - - [self.progressView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.left.bottom.mas_equalTo(self.growthBackgroundRegard); - make.width.mas_equalTo(0); - }]; - [self.growthSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.centerY.mas_equalTo(self.growthBackgroundRegard); - }]; - - [self.explainBackgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-13); - make.top.mas_equalTo(29); - make.width.mas_equalTo(111); - make.height.mas_equalTo(98); - }]; - [self.explainBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(0); - make.height.mas_equalTo(43); - make.top.mas_equalTo(12); - }]; - - [self.devideRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(7); - make.right.mas_equalTo(-12); - make.height.mas_equalTo(1); - make.top.mas_equalTo(self.explainBtuton.mas_bottom); - }]; - [self.exitBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(0); - make.height.mas_equalTo(43); - make.top.mas_equalTo(self.devideRegard.mas_bottom); - }]; -} - -#pragma mark - tableviewDelegate -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.model.taskVos.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - XCombatellegFanaticsmissionTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XCombatellegFanaticsmissionTabulationRegardElement class])]; - XCombatellegFanaticsmissionSpecificMatrix *model = [self.model.taskVos secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.model = model; - - return cell; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 66; -} - -#pragma mark - private -- (void)onDismiss:(UITapGestureRecognizer *)ges { - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)setModel:(XCombatellegFanaticsmissionMatrix *)model { - _model = model; -} - -- (void)setupAbstract { - if (self.model) { - self.intelligenceportraitIndicateRegard.imageUrl = self.model.anchorAvatar; - self.constituteSequencignation.text = self.model.anchorNick; - self.computationSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Anchor_Fans_Task_View_Controller_0"), self.model.teamNum]; - - CGFloat margin = 8; - for (int i = 0; i < 3; i++) { - NSString *str; - if (self.model.avatarList.count > i) { - str = self.model.avatarList[i]; - } - NetIndicateDisposition *config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyDispossessIntelligenceportraitDepapossessor]; - NetIndicateRegard *imageView = [[NetIndicateRegard alloc] initWithConfig:config]; - if (str) { - imageView.imageUrl = str; - } - imageView.layer.cornerRadius = 10; - imageView.layer.masksToBounds = YES; - [self.stackView addSubview:imageView]; - [imageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.stackView); - make.width.height.mas_equalTo(20); - make.left.mas_equalTo(i * 27 + 25 + margin); - }]; - } - - float progress = self.model.levelExper * 1.0 / self.model.nextLevelExper; - [self.progressView mas_remakeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(self.growthBackgroundRegard.mas_width).multipliedBy(progress); - make.top.left.bottom.mas_equalTo(self.growthBackgroundRegard); - }]; - - self.mieyIntelligenceportraitIndicateRegard.imageUrl = self.model.memberAvatar; - self.intimateSequencignation.text = [NSString stringWithFormat:@"亲密值LV%ld", self.model.levelSeq]; - self.growthSequencignation.text = [NSString stringWithFormat:@"%ld/%ld", self.model.levelExper, self.model.nextLevelExper]; - - [self.tableView reloadData]; - } -} - -- (void)passtoFantowardsicsRtowardse:(UITapGestureRecognizer *)ges { - YUMIChamberHalfTissueRegard * webView = [[YUMIChamberHalfTissueRegard alloc] init]; - webView.roomUid = self.roomUid; - webView.url = [NSString stringWithFormat:@"%@?roomUid=%@", URLWithType(kAnchorFansRankURL), self.roomUid]; - [MKJPopup popupRegard:webView style:MKJPopupStyleActionSheet]; -} - -- (void)furthaerBtutonPerformance:(UIButton *)button { - self.explainBackgroundIndicateRegard.hidden = NO; -} - -- (void)eyumilainBtutonPerformance:(UIButton *)button { - self.explainBackgroundIndicateRegard.hidden = YES; - YUMIChamberHalfTissueRegard * webView = [[YUMIChamberHalfTissueRegard alloc] init]; - webView.url = [NSString stringWithFormat:@"%@?roomUid=%@", URLWithType(kAnchorFansRuleURL), self.roomUid]; - [MKJPopup popupRegard:webView style:MKJPopupStyleActionSheet]; -} - -- (void)routeBtutonPerformance:(UIButton *)button { - self.explainBackgroundIndicateRegard.hidden = YES; - [MKJPopup precautiousAboutCommunictowardsion:@"退出粉丝团后24小时内不能再次加入,确定退出吗?" acknowledgementHandler:^{ - [self.presimport outKellegFantowardsicsSquad:self.roomUid]; - } cancelHandler:^{ - - }]; -} - -- (void)brakePreadominantRegard:(UITapGestureRecognizer *)ges { - self.explainBackgroundIndicateRegard.hidden = YES; -} - -#pragma mark - XCombatellegFanaticsTeamCeremony -- (void)outFantowardsicsSquadAccomplishment { - [self dismissViewControllerAnimated:YES completion:nil]; -} - -#pragma mark - getter -- (UIView *)apexRegard { - if (!_apexRegard) { - _apexRegard = [[UIView alloc] init]; - _apexRegard.backgroundColor = UIColor.blackColor; - _apexRegard.alpha = 0.3; - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onDismiss:)]; - [_apexRegard addGestureRecognizer:tap]; - } - return _apexRegard; -} - -- (UIView *)contentView { - if (!_contentView) { - _contentView = [[UIView alloc] init]; - CAShapeLayer * layer = [CAShapeLayer layer]; - layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth,454) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)].CGPath; - _contentView.layer.mask = layer; - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(brakePreadominantRegard:)]; - [_contentView addGestureRecognizer:tap]; - } - return _contentView; -} - -- (UIImageView *)backgroundIndicateRegard { - if (!_backgroundIndicateRegard) { - _backgroundIndicateRegard = [[UIImageView alloc] init]; - _backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_anchor_fansTeam_Task_background"]; - _backgroundIndicateRegard.contentMode = UIViewContentModeScaleToFill; - } - return _backgroundIndicateRegard; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 64 / 2; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)constituteSequencignation { - if (!_constituteSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.textColor = [DJDKMIMOMColor mainEssayPrettify]; - label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; - _constituteSequencignation = label; - [_constituteSequencignation setContentHuggingPriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal]; - [_constituteSequencignation setContentCompressionResistancePriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal]; - } - return _constituteSequencignation; -} - -- (UIView *)computationSatisfperformanceRegard { - if (!_computationSatisfperformanceRegard) { - _computationSatisfperformanceRegard = [[UIView alloc] init]; - _computationSatisfperformanceRegard.backgroundColor = [UIColor whiteColor]; - _computationSatisfperformanceRegard.layer.cornerRadius = 7.5; - _computationSatisfperformanceRegard.layer.masksToBounds = YES; - } - return _computationSatisfperformanceRegard; -} - -- (UILabel *)computationSequencignation { - if (!_computationSequencignation) { - _computationSequencignation = [[UILabel alloc] init]; - _computationSequencignation.textColor = UIColorFromRGB(0xFE3478); - _computationSequencignation.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - } - return _computationSequencignation; -} - -- (UIView *)stackView { - if (!_stackView) { - _stackView = [[UIView alloc] init]; - _stackView.backgroundColor = [UIColor whiteColor]; - _stackView.layer.cornerRadius = 14; - _stackView.layer.masksToBounds = YES; - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(passtoFantowardsicsRtowardse:)]; - [_stackView addGestureRecognizer:tap]; - } - return _stackView; -} - -- (UIImageView *)rateIndicateRegard { - if (!_rateIndicateRegard) { - _rateIndicateRegard = [[UIImageView alloc] init]; - _rateIndicateRegard.image = [UIImage imageNamed:@"yumi_anchor_fansTeam_rank"]; - } - return _rateIndicateRegard; -} - -- (UIImageView *)privilegeChampionIndicateRegard { - if (!_privilegeChampionIndicateRegard) { - _privilegeChampionIndicateRegard = [[UIImageView alloc] init]; - _privilegeChampionIndicateRegard.image = [UIImage imageNamed:@"yumi_anchor_fansTeam_task"]; - _privilegeChampionIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _privilegeChampionIndicateRegard; -} - -- (UIButton *)facilitateBtuton { - if (!_facilitateBtuton) { - _facilitateBtuton = [[UIButton alloc] init]; - [_facilitateBtuton addTarget:self action:@selector(furthaerBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_facilitateBtuton setImage:[UIImage imageNamed:@"yumi_anchor_fansTeam_more"] forState:UIControlStateNormal]; - [_facilitateBtuton setEnlargeEdgeAboutApex:5 right:5 bottom:5 left:5]; - } - return _facilitateBtuton; -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] init]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.backgroundColor = [UIColor clearColor]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - [_tableView registerClass:[XCombatellegFanaticsmissionTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([XCombatellegFanaticsmissionTabulationRegardElement class])]; - _tableView.scrollEnabled = NO; - } - return _tableView; -} - -- (UIView *)bottomView { - if (!_bottomView) { - _bottomView = [[UIView alloc] init]; - _bottomView.backgroundColor = [UIColor whiteColor]; - } - return _bottomView; -} - -- (NetIndicateRegard *)mieyIntelligenceportraitIndicateRegard { - if (!_mieyIntelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _mieyIntelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _mieyIntelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _mieyIntelligenceportraitIndicateRegard.layer.cornerRadius = 40 / 2; - } - return _mieyIntelligenceportraitIndicateRegard; -} - -- (UILabel *)growthSequencignation { - if (!_growthSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.textColor = [UIColor whiteColor]; - label.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - _growthSequencignation = label; - } - return _growthSequencignation; -} - -- (UILabel *)intimateSequencignation { - if (!_intimateSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.textColor = [DJDKMIMOMColor mainEssayPrettify]; - label.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - _intimateSequencignation = label; - } - return _intimateSequencignation; -} - -- (UIView *)growthBackgroundRegard { - if (!_growthBackgroundRegard) { - _growthBackgroundRegard = [[UIView alloc] init]; - _growthBackgroundRegard.backgroundColor = UIColorFromRGB(0xE4E4E4); - _growthBackgroundRegard.layer.cornerRadius = 8; - _growthBackgroundRegard.layer.masksToBounds = YES; - } - return _growthBackgroundRegard; -} - -- (UIImageView *)progressView { - if (!_progressView) { - _progressView = [[UIImageView alloc] init]; - [_progressView setImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFF49A3), UIColorFromRGB(0xFF2B4C)] gradientType:GradientGenreTopToBottom imgSize:CGSizeMake(10, 10)]]; - _progressView.layer.cornerRadius = 8; - _progressView.layer.masksToBounds = YES; - } - return _progressView; -} - -- (UIImageView *)explainBackgroundIndicateRegard { - if (!_explainBackgroundIndicateRegard) { - _explainBackgroundIndicateRegard = [[UIImageView alloc] init]; - _explainBackgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_anchor_fansTeam_ruleBg"]; - _explainBackgroundIndicateRegard.userInteractionEnabled = YES; - _explainBackgroundIndicateRegard.hidden = YES; - } - return _explainBackgroundIndicateRegard; -} - -- (UIButton *)explainBtuton { - if (!_explainBtuton) { - _explainBtuton = [[UIButton alloc] init]; - [_explainBtuton setTitle:YMLocalizedString(@"YUMI_Anchor_Fans_Task_View_Controller_3") forState:UIControlStateNormal]; - _explainBtuton.titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - [_explainBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateNormal]; - [_explainBtuton addTarget:self action:@selector(eyumilainBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _explainBtuton; -} - -- (UIButton *)exitBtuton { - if (!_exitBtuton) { - _exitBtuton = [[UIButton alloc] init]; - [_exitBtuton setTitle:YMLocalizedString(@"YUMI_Anchor_Fans_Task_View_Controller_4") forState:UIControlStateNormal]; - _exitBtuton.titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - [_exitBtuton setTitleColor:UIColorFromRGB(0xFE3478) forState:UIControlStateNormal]; - [_exitBtuton addTarget:self action:@selector(routeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _exitBtuton; -} - -- (UIView *)devideRegard { - if (!_devideRegard) { - _devideRegard = [[UIView alloc] init]; - _devideRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]; - } - return _devideRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XCombatellegFanaticsmissionTabulationRegardElement.h b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XCombatellegFanaticsmissionTabulationRegardElement.h deleted file mode 100644 index d59696a3..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XCombatellegFanaticsmissionTabulationRegardElement.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMAnchorFansTaskTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/4/7. -// - -#import -#import "XCombatellegFanaticsmissionSpecificMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface XCombatellegFanaticsmissionTabulationRegardElement : UITableViewCell - -@property (nonatomic, strong) XCombatellegFanaticsmissionSpecificMatrix *model; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XCombatellegFanaticsmissionTabulationRegardElement.m b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XCombatellegFanaticsmissionTabulationRegardElement.m deleted file mode 100644 index b4d82d4c..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XCombatellegFanaticsmissionTabulationRegardElement.m +++ /dev/null @@ -1,148 +0,0 @@ -// -// YMAnchorFansTaskTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/4/7. -// - -#import "XCombatellegFanaticsmissionTabulationRegardElement.h" -#import -#import -#import "ResidenceOriflammeAbstractMatrix.h" -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" - -@interface XCombatellegFanaticsmissionTabulationRegardElement () - -@property (nonatomic, strong) UIView *materialBackgroundRegard; -@property (nonatomic, strong) NetIndicateRegard *materialIndicateRegard; -@property (nonatomic, strong) UILabel *materialSequencignation; -@property (nonatomic, strong) UILabel *materialSequenceSequencignation; -@property (nonatomic, strong) UIButton *doneBtuton; - -@end - -@implementation XCombatellegFanaticsmissionTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.materialBackgroundRegard]; - [self.materialBackgroundRegard addSubview:self.materialIndicateRegard]; - [self.materialBackgroundRegard addSubview:self.materialSequencignation]; - [self.materialBackgroundRegard addSubview:self.materialSequenceSequencignation]; - [self.materialBackgroundRegard addSubview:self.doneBtuton]; -} - -- (void)initChildLyRestrictions { - [self.materialBackgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.contentView); - make.bottom.mas_equalTo(self.contentView).offset(-8); - make.left.right.mas_equalTo(0); - }]; - - [self.materialIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(10); - make.centerY.mas_equalTo(self.materialBackgroundRegard); - make.width.height.mas_equalTo(38); - }]; - - [self.materialSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.materialIndicateRegard.mas_right).mas_offset(8); - make.top.mas_equalTo(self.materialIndicateRegard).mas_offset(1); - make.height.mas_equalTo(21); - }]; - [self.materialSequenceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.materialSequencignation.mas_bottom); - make.left.mas_equalTo(self.materialSequencignation); - make.height.mas_equalTo(15); - }]; - [self.doneBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.materialBackgroundRegard); - make.height.mas_equalTo(20); - make.right.mas_equalTo(-10); - make.width.mas_equalTo(48); - }]; -} - -- (void)setModel:(XCombatellegFanaticsmissionSpecificMatrix *)model { - self.materialIndicateRegard.imageUrl = model.icon; - self.materialSequencignation.text = model.taskName; - self.materialSequenceSequencignation.text = model.taskDesc; - if (model.isFinished) { - [self.doneBtuton setTitle:YMLocalizedString(@"YUMI_Anchor_Fans_Task_Table_View_Cell_0") forState:UIControlStateNormal]; - [self.doneBtuton setBackgroundColor:[DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]]; - [self.doneBtuton setTitleColor:[DJDKMIMOMColor essayTertiusPrettify] forState:UIControlStateNormal]; - } else if(model.awardVal > 0){ - [self.doneBtuton setTitle:[NSString stringWithFormat:@"%ld/%ld", model.awardVal, model.totalNum] forState:UIControlStateNormal]; - [self.doneBtuton setBackgroundColor:UIColorFromRGB(0xFF4E7F)]; - [self.doneBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify] forState:UIControlStateNormal]; - } else { - [self.doneBtuton setTitle:[NSString stringWithFormat:@"%ld/%ld", model.awardVal, model.totalNum] forState:UIControlStateNormal]; - [self.doneBtuton setBackgroundColor:[DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]]; - [self.doneBtuton setTitleColor:[DJDKMIMOMColor essayTertiusPrettify] forState:UIControlStateNormal]; - } -} - -- (UIView *)materialBackgroundRegard { - if (!_materialBackgroundRegard) { - _materialBackgroundRegard = [[UIView alloc] init]; - _materialBackgroundRegard.backgroundColor = [UIColor whiteColor]; - _materialBackgroundRegard.layer.cornerRadius = 8; - _materialBackgroundRegard.layer.masksToBounds = YES; - } - return _materialBackgroundRegard; -} - -- (NetIndicateRegard *)materialIndicateRegard { - if (!_materialIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _materialIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _materialIndicateRegard.layer.masksToBounds = YES; - _materialIndicateRegard.layer.cornerRadius = 8; - } - return _materialIndicateRegard; -} - -- (UILabel *)materialSequencignation; { - if (!_materialSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.textColor = [DJDKMIMOMColor mainEssayPrettify]; - label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; - _materialSequencignation = label; - } - return _materialSequencignation; -} - -- (UILabel *)materialSequenceSequencignation; { - if (!_materialSequenceSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - label.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - _materialSequenceSequencignation = label; - } - return _materialSequenceSequencignation; -} - -- (UIButton *)doneBtuton { - if (!_doneBtuton) { - _doneBtuton = [[UIButton alloc] init]; - _doneBtuton.titleLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - _doneBtuton.layer.cornerRadius = 4; - _doneBtuton.layer.masksToBounds = YES; - } - return _doneBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XPAnchorFansTaskTableViewCell.h b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XPAnchorFansTaskTableViewCell.h new file mode 100644 index 00000000..a11c629e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XPAnchorFansTaskTableViewCell.h @@ -0,0 +1,19 @@ +// +// YMAnchorFansTaskTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/4/7. +// + +#import +#import "XPAnchorFansTaskDetailModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPAnchorFansTaskTableViewCell : UITableViewCell + +@property (nonatomic, strong) XPAnchorFansTaskDetailModel *model; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XPAnchorFansTaskTableViewCell.m b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XPAnchorFansTaskTableViewCell.m new file mode 100644 index 00000000..ef1c1757 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XPAnchorFansTaskTableViewCell.m @@ -0,0 +1,156 @@ +// +// YMAnchorFansTaskTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/4/7. +// + +#import "XPAnchorFansTaskTableViewCell.h" +///Third +#import +#import +///Model +#import "HomeBannerInfoModel.h" +#import "NetImageView.h" +///Tool +#import "DJDKMIMOMColor.h" + +@interface XPAnchorFansTaskTableViewCell () + +///专属铭牌背景 +@property (nonatomic, strong) UIView *nameplateBgView; +///专属铭牌图片 +@property (nonatomic, strong) NetImageView *nameplateImageView; +///专属铭牌名称 +@property (nonatomic, strong) UILabel *nameplateLabel; +///专属铭牌描述 +@property (nonatomic, strong) UILabel *nameplateDescLabel; +///进度按钮 +@property (nonatomic, strong) UIButton *doneButton; + +@end + +@implementation XPAnchorFansTaskTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.nameplateBgView]; + [self.nameplateBgView addSubview:self.nameplateImageView]; + [self.nameplateBgView addSubview:self.nameplateLabel]; + [self.nameplateBgView addSubview:self.nameplateDescLabel]; + [self.nameplateBgView addSubview:self.doneButton]; +} + +- (void)initSubViewConstraints { + [self.nameplateBgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.contentView); + make.bottom.mas_equalTo(self.contentView).offset(-8); + make.left.right.mas_equalTo(0); + }]; + + [self.nameplateImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(10); + make.centerY.mas_equalTo(self.nameplateBgView); + make.width.height.mas_equalTo(38); + }]; + + [self.nameplateLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nameplateImageView.mas_right).mas_offset(8); + make.top.mas_equalTo(self.nameplateImageView).mas_offset(1); + make.height.mas_equalTo(21); + }]; + [self.nameplateDescLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.nameplateLabel.mas_bottom); + make.left.mas_equalTo(self.nameplateLabel); + make.height.mas_equalTo(15); + }]; + [self.doneButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.nameplateBgView); + make.height.mas_equalTo(20); + make.right.mas_equalTo(-10); + make.width.mas_equalTo(48); + }]; +} + +- (void)setModel:(XPAnchorFansTaskDetailModel *)model { + self.nameplateImageView.imageUrl = model.icon; + self.nameplateLabel.text = model.taskName; + self.nameplateDescLabel.text = model.taskDesc; + if (model.isFinished) { + [self.doneButton setTitle:YMLocalizedString(@"XPAnchorFansTaskTableViewCell0") forState:UIControlStateNormal]; + [self.doneButton setBackgroundColor:[DJDKMIMOMColor appBackgroundColor]]; + [self.doneButton setTitleColor:[DJDKMIMOMColor textThirdColor] forState:UIControlStateNormal]; + } else if(model.awardVal > 0){ + [self.doneButton setTitle:[NSString stringWithFormat:@"%ld/%ld", model.awardVal, model.totalNum] forState:UIControlStateNormal]; + [self.doneButton setBackgroundColor:UIColorFromRGB(0xFF4E7F)]; + [self.doneButton setTitleColor:[DJDKMIMOMColor appCellBackgroundColor] forState:UIControlStateNormal]; + } else { + [self.doneButton setTitle:[NSString stringWithFormat:@"%ld/%ld", model.awardVal, model.totalNum] forState:UIControlStateNormal]; + [self.doneButton setBackgroundColor:[DJDKMIMOMColor appBackgroundColor]]; + [self.doneButton setTitleColor:[DJDKMIMOMColor textThirdColor] forState:UIControlStateNormal]; + } +} + +- (UIView *)nameplateBgView { + if (!_nameplateBgView) { + _nameplateBgView = [[UIView alloc] init]; + _nameplateBgView.backgroundColor = [UIColor whiteColor]; + _nameplateBgView.layer.cornerRadius = 8; + _nameplateBgView.layer.masksToBounds = YES; + } + return _nameplateBgView; +} + +- (NetImageView *)nameplateImageView { + if (!_nameplateImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _nameplateImageView = [[NetImageView alloc] initWithConfig:config]; + _nameplateImageView.layer.masksToBounds = YES; + _nameplateImageView.layer.cornerRadius = 8; + } + return _nameplateImageView; +} + +- (UILabel *)nameplateLabel; { + if (!_nameplateLabel) { + UILabel *label = [[UILabel alloc] init]; + label.textColor = [DJDKMIMOMColor mainTextColor]; + label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; + _nameplateLabel = label; + } + return _nameplateLabel; +} + +- (UILabel *)nameplateDescLabel; { + if (!_nameplateDescLabel) { + UILabel *label = [[UILabel alloc] init]; + label.textColor = [DJDKMIMOMColor textThirdColor]; + label.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + _nameplateDescLabel = label; + } + return _nameplateDescLabel; +} + +- (UIButton *)doneButton { + if (!_doneButton) { + _doneButton = [[UIButton alloc] init]; + _doneButton.titleLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + _doneButton.layer.cornerRadius = 4; + _doneButton.layer.masksToBounds = YES; + } + return _doneButton; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XPAnchorFansTaskViewController.h b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XPAnchorFansTaskViewController.h new file mode 100644 index 00000000..16b5c397 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XPAnchorFansTaskViewController.h @@ -0,0 +1,21 @@ +// +// YMAnchorFansTaskViewController.h +// YUMI +// +// Created by YUMI on 2022/4/7. +// + +#import "MvpViewController.h" +#import "XPAnchorFansTaskModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPAnchorFansTaskViewController : MvpViewController + +- (instancetype)initWithRoomUid:(NSString *)roomUid; + +@property (nonatomic, strong) XPAnchorFansTaskModel *model; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XPAnchorFansTaskViewController.m b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XPAnchorFansTaskViewController.m new file mode 100644 index 00000000..98ea3760 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XPAnchorFansTaskViewController.m @@ -0,0 +1,598 @@ +// +// YMAnchorFansTaskViewController.m +// YUMI +// +// Created by YUMI on 2022/4/7. +// + +#import "XPAnchorFansTaskViewController.h" +///P +#import "XPAnchorFansTeamPresenter.h" +#import "XPAnchorFansTeamProtocol.h" +///Third +#import "NetImageView.h" +#import +///Tool +#import "YUMIMacroUitls.h" +#import "UIImage+Utils.h" +#import "DJDKMIMOMColor.h" +#import "TTPopup.h" +#import "YUMIHtmlUrl.h" +#import "UIButton+EnlargeTouchArea.h" +#import "NSArray+Safe.h" +///View +#import "XPAnchorFansTaskTableViewCell.h" +#import "XPRoomHalfWebView.h" + +@interface XPAnchorFansTaskViewController() + +///房间Uid +@property (nonatomic, strong) NSString *roomUid; +///顶部点击消失的view +@property (nonatomic, strong) UIView *topView; +///显示内容的view +@property (nonatomic, strong) UIView *contentView; +///背景图片 +@property (nonatomic, strong) UIImageView *bgImageView; +///帮助按钮 +@property (nonatomic, strong) UIButton *helpButton; +///头像 +@property (nonatomic, strong) NetImageView *avatarImageView; +///粉丝团名称 +@property (nonatomic, strong) UILabel *nameLabel; +///人数背景 +@property (nonatomic, strong) UIView *countContentView; +///粉丝团人 +@property (nonatomic, strong) UILabel *countLabel; + +@property (nonatomic, strong) UIView *stackView; +///排行榜 +@property (nonatomic, strong) UIImageView *rankImageView; +///粉丝专属特权 +@property (nonatomic, strong) UIImageView *privilegeTitleImageView; + +@property (nonatomic, strong) UITableView *tableView; + +@property (nonatomic, strong) UIView *bottomView; +@property (nonatomic, strong) NetImageView *myAvatarImageView; +///亲密值 +@property (nonatomic, strong) UILabel *intimateLabel; +///进度条背景 +@property (nonatomic, strong) UIView *progressBgView; +///进度条 +@property (nonatomic, strong) UIImageView *progressView; +///进度值 +@property (nonatomic, strong) UILabel *progressLabel; +///说明弹窗背景 +@property (nonatomic, strong) UIImageView *explainBgImageView; +///查看粉丝团说明 +@property (nonatomic, strong) UIButton *explainButton; +///分割线 +@property (nonatomic, strong) UIView *devideView; +///退出粉丝团 +@property (nonatomic, strong) UIButton *exitButton; + +@end + +@implementation XPAnchorFansTaskViewController + +- (instancetype)initWithRoomUid:(NSString *)roomUid { + if (self = [super init]) { + self.roomUid = roomUid; + self.modalPresentationStyle = UIModalPresentationOverFullScreen; + } + return self; +} + +- (XPAnchorFansTeamPresenter *)createPresenter { + return [[XPAnchorFansTeamPresenter alloc] init];; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + [self setupInfo]; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + [self.view endEditing:YES]; +} + + +#pragma mark - Private Method +- (void)initSubViews { + self.view.backgroundColor = [UIColor clearColor]; + [self.view addSubview:self.topView]; + [self.view addSubview:self.contentView]; + + [self.contentView addSubview:self.bgImageView]; + [self.contentView addSubview:self.helpButton]; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.nameLabel]; + [self.contentView addSubview:self.countContentView]; + [self.countContentView addSubview:self.countLabel]; + [self.contentView addSubview:self.stackView]; + [self.stackView addSubview:self.rankImageView]; + [self.contentView addSubview:self.privilegeTitleImageView]; + [self.contentView addSubview:self.tableView]; + + [self.contentView addSubview:self.bottomView]; + [self.bottomView addSubview:self.myAvatarImageView]; + [self.bottomView addSubview:self.intimateLabel]; + [self.bottomView addSubview:self.progressBgView]; + [self.progressBgView addSubview:self.progressView]; + [self.progressBgView addSubview:self.progressLabel]; + + [self.contentView addSubview:self.explainBgImageView]; + [self.explainBgImageView addSubview:self.explainButton]; + [self.explainBgImageView addSubview:self.devideView]; + [self.explainBgImageView addSubview:self.exitButton]; +} + +- (void)initSubViewConstraints { + [self.topView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.contentView.mas_top); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.height.mas_equalTo(454); + }]; + + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make){ + make.top.right.left.bottom.mas_equalTo(0); + }]; + + [self.helpButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-10); + make.top.mas_equalTo(10); + make.width.height.mas_equalTo(30); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(15); + make.width.height.mas_equalTo(64); + make.top.mas_equalTo(36); + }]; + + [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(21); + make.left.mas_equalTo(self.avatarImageView.mas_right).mas_offset(8); + make.top.mas_equalTo(self.avatarImageView).offset(6); + make.right.mas_equalTo(self.countContentView.mas_left).mas_offset(-4); + }]; + + [self.countContentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.nameLabel); + make.right.mas_lessThanOrEqualTo(-26); + make.height.mas_equalTo(15); + make.left.mas_equalTo(self.nameLabel.mas_right).mas_offset(4); + }]; + [self.countLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.bottom.mas_equalTo(self.countContentView); + make.left.mas_equalTo(self.countContentView).mas_offset(5); + make.right.mas_equalTo(self.countContentView).mas_offset(-5); + }]; + + [self.countLabel setContentHuggingPriority:UILayoutPriorityDefaultHigh forAxis:UILayoutConstraintAxisHorizontal]; + [self.nameLabel setContentCompressionResistancePriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal]; + + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatarImageView.mas_right).mas_offset(8); + make.bottom.mas_equalTo(self.avatarImageView).mas_offset(-3); + make.height.mas_equalTo(28); + make.width.mas_equalTo(3 * (20 + 8) + 34); + }]; + + [self.rankImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.stackView); + make.left.mas_equalTo(9); + make.width.mas_equalTo(16); + make.height.mas_equalTo(18); + }]; + + [self.privilegeTitleImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.avatarImageView.mas_bottom).mas_offset(21); + make.centerX.mas_equalTo(self.contentView); + make.width.mas_equalTo(88); + make.height.mas_equalTo(34); + }]; + + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(25); + make.top.mas_equalTo(self.privilegeTitleImageView.mas_bottom).offset(12); + make.height.mas_equalTo(200); + }]; + + [self.bottomView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(0); + make.height.mas_equalTo(88); + }]; + [self.myAvatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(24); + make.top.mas_equalTo(10); + make.width.height.mas_equalTo(40); + }]; + + [self.intimateLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.myAvatarImageView.mas_right).mas_offset(8); + make.top.mas_equalTo(self.myAvatarImageView).mas_offset(4); + make.height.mas_equalTo(15); + }]; + + [self.progressBgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.intimateLabel); + make.right.mas_equalTo(-24); + make.height.mas_equalTo(16); + make.top.mas_equalTo(self.intimateLabel.mas_bottom).mas_offset(2); + }]; + + [self.progressView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.left.bottom.mas_equalTo(self.progressBgView); + make.width.mas_equalTo(0); + }]; + [self.progressLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.centerY.mas_equalTo(self.progressBgView); + }]; + + [self.explainBgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-13); + make.top.mas_equalTo(29); + make.width.mas_equalTo(111); + make.height.mas_equalTo(98); + }]; + [self.explainButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(0); + make.height.mas_equalTo(43); + make.top.mas_equalTo(12); + }]; + + [self.devideView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(7); + make.right.mas_equalTo(-12); + make.height.mas_equalTo(1); + make.top.mas_equalTo(self.explainButton.mas_bottom); + }]; + [self.exitButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(0); + make.height.mas_equalTo(43); + make.top.mas_equalTo(self.devideView.mas_bottom); + }]; +} + +#pragma mark - tableviewDelegate +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.model.taskVos.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + XPAnchorFansTaskTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPAnchorFansTaskTableViewCell class])]; + XPAnchorFansTaskDetailModel *model = [self.model.taskVos safeObjectAtIndex1:indexPath.row]; + cell.model = model; + + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 66; +} + +#pragma mark - private +- (void)onDismiss:(UITapGestureRecognizer *)ges { + [self dismissViewControllerAnimated:YES completion:nil]; +} + +- (void)setModel:(XPAnchorFansTaskModel *)model { + _model = model; +} + +- (void)setupInfo { + if (self.model) { + self.avatarImageView.imageUrl = self.model.anchorAvatar; + self.nameLabel.text = self.model.anchorNick; + self.countLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPAnchorFansTaskViewController0"), self.model.teamNum]; + + CGFloat margin = 8; + for (int i = 0; i < 3; i++) { + NSString *str; + if (self.model.avatarList.count > i) { + str = self.model.avatarList[i]; + } + NetImageConfig *config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultEmptyAvatarPlaceholder]; + NetImageView *imageView = [[NetImageView alloc] initWithConfig:config]; + if (str) { + imageView.imageUrl = str; + } + imageView.layer.cornerRadius = 10; + imageView.layer.masksToBounds = YES; + [self.stackView addSubview:imageView]; + [imageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.stackView); + make.width.height.mas_equalTo(20); + make.left.mas_equalTo(i * 27 + 25 + margin); + }]; + } + + float progress = self.model.levelExper * 1.0 / self.model.nextLevelExper; + [self.progressView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(self.progressBgView.mas_width).multipliedBy(progress); + make.top.left.bottom.mas_equalTo(self.progressBgView); + }]; + + self.myAvatarImageView.imageUrl = self.model.memberAvatar; + self.intimateLabel.text = [NSString stringWithFormat:@"亲密值LV%ld", self.model.levelSeq]; + self.progressLabel.text = [NSString stringWithFormat:@"%ld/%ld", self.model.levelExper, self.model.nextLevelExper]; + + [self.tableView reloadData]; + } +} + +- (void)gotoFansRank:(UITapGestureRecognizer *)ges { + XPRoomHalfWebView * webView = [[XPRoomHalfWebView alloc] init]; + webView.roomUid = self.roomUid; + webView.url = [NSString stringWithFormat:@"%@?roomUid=%@", URLWithType(kAnchorFansRankURL), self.roomUid]; + [TTPopup popupView:webView style:TTPopupStyleActionSheet]; +} + +- (void)moreButtonAction:(UIButton *)button { + self.explainBgImageView.hidden = NO; +} + +- (void)explainButtonAction:(UIButton *)button { + self.explainBgImageView.hidden = YES; + XPRoomHalfWebView * webView = [[XPRoomHalfWebView alloc] init]; + webView.url = [NSString stringWithFormat:@"%@?roomUid=%@", URLWithType(kAnchorFansRuleURL), self.roomUid]; + [TTPopup popupView:webView style:TTPopupStyleActionSheet]; +} + +- (void)exitButtonAction:(UIButton *)button { + self.explainBgImageView.hidden = YES; + [TTPopup alertWithMessage:@"退出粉丝团后24小时内不能再次加入,确定退出吗?" confirmHandler:^{ + [self.presenter outAnchorFansTeam:self.roomUid]; + } cancelHandler:^{ + + }]; +} + +- (void)hideRuleView:(UITapGestureRecognizer *)ges { + self.explainBgImageView.hidden = YES; +} + +#pragma mark - XPAnchorFansTeamProtocol +- (void)outFansTeamSuccess { + [self dismissViewControllerAnimated:YES completion:nil]; +} + +#pragma mark - getter +- (UIView *)topView { + if (!_topView) { + _topView = [[UIView alloc] init]; + _topView.backgroundColor = UIColor.blackColor; + _topView.alpha = 0.3; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onDismiss:)]; + [_topView addGestureRecognizer:tap]; + } + return _topView; +} + +- (UIView *)contentView { + if (!_contentView) { + _contentView = [[UIView alloc] init]; + CAShapeLayer * layer = [CAShapeLayer layer]; + layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth,454) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)].CGPath; + _contentView.layer.mask = layer; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideRuleView:)]; + [_contentView addGestureRecognizer:tap]; + } + return _contentView; +} + +- (UIImageView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[UIImageView alloc] init]; + _bgImageView.image = [UIImage imageNamed:@"anchor_fansTeam_Task_bg"]; + _bgImageView.contentMode = UIViewContentModeScaleToFill; + } + return _bgImageView; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 64 / 2; + } + return _avatarImageView; +} + +- (UILabel *)nameLabel { + if (!_nameLabel) { + UILabel *label = [[UILabel alloc] init]; + label.textColor = [DJDKMIMOMColor mainTextColor]; + label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; + _nameLabel = label; + [_nameLabel setContentHuggingPriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal]; + [_nameLabel setContentCompressionResistancePriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal]; + } + return _nameLabel; +} + +- (UIView *)countContentView { + if (!_countContentView) { + _countContentView = [[UIView alloc] init]; + _countContentView.backgroundColor = [UIColor whiteColor]; + _countContentView.layer.cornerRadius = 7.5; + _countContentView.layer.masksToBounds = YES; + } + return _countContentView; +} + +- (UILabel *)countLabel { + if (!_countLabel) { + _countLabel = [[UILabel alloc] init]; + _countLabel.textColor = UIColorFromRGB(0xFE3478); + _countLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + } + return _countLabel; +} + +- (UIView *)stackView { + if (!_stackView) { + _stackView = [[UIView alloc] init]; + _stackView.backgroundColor = [UIColor whiteColor]; + _stackView.layer.cornerRadius = 14; + _stackView.layer.masksToBounds = YES; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(gotoFansRank:)]; + [_stackView addGestureRecognizer:tap]; + } + return _stackView; +} + +- (UIImageView *)rankImageView { + if (!_rankImageView) { + _rankImageView = [[UIImageView alloc] init]; + _rankImageView.image = [UIImage imageNamed:@"anchor_fansTeam_rank"]; + } + return _rankImageView; +} + +- (UIImageView *)privilegeTitleImageView { + if (!_privilegeTitleImageView) { + _privilegeTitleImageView = [[UIImageView alloc] init]; + _privilegeTitleImageView.image = [UIImage imageNamed:@"anchor_fansTeam_task"]; + _privilegeTitleImageView.contentMode = UIViewContentModeScaleAspectFill; + } + return _privilegeTitleImageView; +} + +- (UIButton *)helpButton { + if (!_helpButton) { + _helpButton = [[UIButton alloc] init]; + [_helpButton addTarget:self action:@selector(moreButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_helpButton setImage:[UIImage imageNamed:@"anchor_fansTeam_more"] forState:UIControlStateNormal]; + [_helpButton setEnlargeEdgeWithTop:5 right:5 bottom:5 left:5]; + } + return _helpButton; +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] init]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.backgroundColor = [UIColor clearColor]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + [_tableView registerClass:[XPAnchorFansTaskTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPAnchorFansTaskTableViewCell class])]; + _tableView.scrollEnabled = NO; + } + return _tableView; +} + +- (UIView *)bottomView { + if (!_bottomView) { + _bottomView = [[UIView alloc] init]; + _bottomView.backgroundColor = [UIColor whiteColor]; + } + return _bottomView; +} + +- (NetImageView *)myAvatarImageView { + if (!_myAvatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _myAvatarImageView = [[NetImageView alloc] initWithConfig:config]; + _myAvatarImageView.layer.masksToBounds = YES; + _myAvatarImageView.layer.cornerRadius = 40 / 2; + } + return _myAvatarImageView; +} + +- (UILabel *)progressLabel { + if (!_progressLabel) { + UILabel *label = [[UILabel alloc] init]; + label.textColor = [UIColor whiteColor]; + label.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + _progressLabel = label; + } + return _progressLabel; +} + +- (UILabel *)intimateLabel { + if (!_intimateLabel) { + UILabel *label = [[UILabel alloc] init]; + label.textColor = [DJDKMIMOMColor mainTextColor]; + label.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + _intimateLabel = label; + } + return _intimateLabel; +} + +- (UIView *)progressBgView { + if (!_progressBgView) { + _progressBgView = [[UIView alloc] init]; + _progressBgView.backgroundColor = UIColorFromRGB(0xE4E4E4); + _progressBgView.layer.cornerRadius = 8; + _progressBgView.layer.masksToBounds = YES; + } + return _progressBgView; +} + +- (UIImageView *)progressView { + if (!_progressView) { + _progressView = [[UIImageView alloc] init]; + [_progressView setImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFF49A3), UIColorFromRGB(0xFF2B4C)] gradientType:GradientTypeTopToBottom imgSize:CGSizeMake(10, 10)]]; + _progressView.layer.cornerRadius = 8; + _progressView.layer.masksToBounds = YES; + } + return _progressView; +} + +- (UIImageView *)explainBgImageView { + if (!_explainBgImageView) { + _explainBgImageView = [[UIImageView alloc] init]; + _explainBgImageView.image = [UIImage imageNamed:@"anchor_fansTeam_ruleBg"]; + _explainBgImageView.userInteractionEnabled = YES; + _explainBgImageView.hidden = YES; + } + return _explainBgImageView; +} + +- (UIButton *)explainButton { + if (!_explainButton) { + _explainButton = [[UIButton alloc] init]; + [_explainButton setTitle:YMLocalizedString(@"XPAnchorFansTaskViewController3") forState:UIControlStateNormal]; + _explainButton.titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + [_explainButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + [_explainButton addTarget:self action:@selector(explainButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _explainButton; +} + +- (UIButton *)exitButton { + if (!_exitButton) { + _exitButton = [[UIButton alloc] init]; + [_exitButton setTitle:YMLocalizedString(@"XPAnchorFansTaskViewController4") forState:UIControlStateNormal]; + _exitButton.titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + [_exitButton setTitleColor:UIColorFromRGB(0xFE3478) forState:UIControlStateNormal]; + [_exitButton addTarget:self action:@selector(exitButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _exitButton; +} + +- (UIView *)devideView { + if (!_devideView) { + _devideView = [[UIView alloc] init]; + _devideView.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; + } + return _devideView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XPAnchorFansTeamEntranceView.h b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XPAnchorFansTeamEntranceView.h new file mode 100644 index 00000000..aadde844 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XPAnchorFansTeamEntranceView.h @@ -0,0 +1,21 @@ +// +// YMAnchorFansTeamEntranceView.h +// YUMI +// +// Created by YUMI on 2022/4/6. +// + +#import +#import "XPAnchorFansRelationModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPAnchorFansTeamEntranceView : UIView + +@property (nonatomic, copy) NSString *title; + +@property (nonatomic, strong) XPAnchorFansRelationModel *model; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XPAnchorFansTeamEntranceView.m b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XPAnchorFansTeamEntranceView.m new file mode 100644 index 00000000..36c9e266 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XPAnchorFansTeamEntranceView.m @@ -0,0 +1,157 @@ +// +// YMAnchorFansTeamEntranceView.m +// YUMI +// +// Created by YUMI on 2022/4/6. +// + +#import "XPAnchorFansTeamEntranceView.h" +///Third +#import +#import "UIImage+Utils.h" +#import "DJDKMIMOMColor.h" + +@interface XPAnchorFansTeamEntranceView() + +///背景图 +@property (nonatomic, strong) UIImageView *bgImageView; +///心形图标 +@property (nonatomic, strong) UIImageView *iconImageView; +///礼物值 +@property (nonatomic, strong) UILabel *titleLabel; + +@end + +@implementation XPAnchorFansTeamEntranceView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.bgImageView]; + [self addSubview:self.iconImageView]; + [self addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.iconImageView); + }]; + + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self); + make.left.mas_equalTo(-11); + make.right.mas_equalTo(self.iconImageView.mas_right).mas_offset(-8); + make.height.mas_equalTo(22); + }]; + [self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.bgImageView.mas_centerY); + make.width.height.mas_equalTo(22); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.bgImageView); + make.right.mas_equalTo(self.iconImageView.mas_left); + make.left.mas_equalTo(8); + }]; + +} +#pragma mark - Getters And Setters +- (void)setTitle:(NSString *)title { + self.titleLabel.text = title; +} + +- (void)setModel:(XPAnchorFansRelationModel *)model { + _model = model; + if (model.isCurrentRoomAnchor) {///是房主 + self.iconImageView.image = [UIImage imageNamed:@"anchor_fansTeam_entrance_hadOpen"]; + [self.iconImageView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(20); + make.height.mas_equalTo(14); + make.centerY.mas_equalTo(self.bgImageView); + }]; + [self.bgImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.iconImageView).mas_offset(8); + }]; + if (model.hasFansTeamCurrentRoom) {//已开通粉丝团 + self.titleLabel.text = [NSString stringWithFormat:@"粉丝团(%ld)", model.anchorFansNum]; + } else { + self.titleLabel.text = YMLocalizedString(@"XPAnchorFansTeamEntranceView1"); + } + } else { + if (model.hasFansTeamCurrentRoom) {//已开通粉丝团 + if (model.isAnchorFans) { + self.titleLabel.text = [NSString stringWithFormat:@"粉丝LV.%zd ", model.fansLevelSeq]; + self.iconImageView.image = [UIImage imageNamed:@"anchor_fansTeam_entrance_hadOpen"]; + [self.iconImageView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(20); + make.height.mas_equalTo(14); + make.centerY.mas_equalTo(self.titleLabel); + }]; + [self.bgImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.iconImageView).mas_offset(8); + make.height.mas_equalTo(22); + }]; + } else { + self.titleLabel.text = YMLocalizedString(@"XPAnchorFansTeamEntranceView3"); + self.iconImageView.image = [UIImage imageNamed:@"anchor_fansTeam_entrance_icon"]; + [self.iconImageView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.bgImageView); + make.width.height.mas_equalTo(25); + }]; + [self.bgImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.iconImageView.mas_right).mas_offset(8); + }]; + } + } else { + self.titleLabel.text = YMLocalizedString(@"XPAnchorFansTeamEntranceView4"); + [self.iconImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(0); + }]; + [self.bgImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.titleLabel).mas_offset(8); + }]; + } + } +} + +- (UIImageView *)bgImageView { + if (_bgImageView == nil) { + _bgImageView = [[UIImageView alloc] init]; + _bgImageView.image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFC37D6), UIColorFromRGB(0xFC7FDC)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(92, 22)]; + _bgImageView.userInteractionEnabled = YES; + _bgImageView.layer.cornerRadius = 11; + _bgImageView.layer.masksToBounds = YES; + _bgImageView.layer.borderWidth = 1; + _bgImageView.layer.borderColor = [UIColor colorWithWhite:1 alpha:0.35].CGColor; + } + return _bgImageView; +} + +- (UIImageView *)iconImageView { + if (_iconImageView == nil) { + _iconImageView = [[UIImageView alloc] init]; + _iconImageView.userInteractionEnabled = YES; + _iconImageView.image = [UIImage imageNamed:@"anchor_fansTeam_entrance_icon"]; + _iconImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _iconImageView; +} + +- (UILabel *)titleLabel { + if (_titleLabel == nil) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textColor = UIColor.whiteColor; + _titleLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + _titleLabel.text = @"0"; + } + return _titleLabel; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XPAnchorFansTeamViewController.h b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XPAnchorFansTeamViewController.h new file mode 100644 index 00000000..c34d5d0c --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XPAnchorFansTeamViewController.h @@ -0,0 +1,21 @@ +// +// YMAnchorFansTeamViewController.h +// YUMI +// +// Created by YUMI on 2022/4/6. +// + +#import "MvpViewController.h" +#import "XPAnchorFansJoinModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPAnchorFansTeamViewController : MvpViewController + +- (instancetype)initWithRoomUid:(NSString *)roomUid; + +@property (nonatomic, strong) XPAnchorFansJoinModel *model; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XPAnchorFansTeamViewController.m b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XPAnchorFansTeamViewController.m new file mode 100644 index 00000000..bd40940b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/FansTeam/View/XPAnchorFansTeamViewController.m @@ -0,0 +1,574 @@ +// +// YMAnchorFansTeamViewController.m +// YUMI +// +// Created by YUMI on 2022/4/6. +// + +#import "XPAnchorFansTeamViewController.h" +///P +#import "XPAnchorFansTeamPresenter.h" +#import "XPAnchorFansTeamProtocol.h" +///Third +#import "NetImageView.h" +#import +///Tool +#import "YUMIMacroUitls.h" +#import "UIImage+Utils.h" +#import "DJDKMIMOMColor.h" +#import "XPRoomHalfWebView.h" +#import "TTPopup.h" +#import "YUMIHtmlUrl.h" +#import "Api+Gift.h" +#import "AccountInfoStorage.h" +#import "UIButton+EnlargeTouchArea.h" + +@interface XPAnchorFansTeamViewController() + +///房间Uid +@property (nonatomic, strong) NSString *roomUid; +///顶部点击消失的view +@property (nonatomic, strong) UIView *topView; +///显示内容的view +@property (nonatomic, strong) UIView *contentView; +///背景图片 +@property (nonatomic, strong) UIImageView *bgImageView; +///帮助按钮 +@property (nonatomic, strong) UIButton *helpButton; +///头像 +@property (nonatomic, strong) NetImageView *avatarImageView; +///粉丝团名称 +@property (nonatomic, strong) UILabel *nameLabel; +///人数背景 +@property (nonatomic, strong) UIView *countContentView; +///粉丝团人 +@property (nonatomic, strong) UILabel *countLabel; + +@property (nonatomic, strong) UIView *stackView; +///排行榜 +@property (nonatomic, strong) UIImageView *rankImageView; +///粉丝专属特权 +@property (nonatomic, strong) UIImageView *privilegeTitleImageView; +///专属铭牌背景 +@property (nonatomic, strong) UIView *nameplateBgView; +///专属铭牌图片 +@property (nonatomic, strong) NetImageView *nameplateImageView; +///专属铭牌名称 +@property (nonatomic, strong) UILabel *nameplateLabel; +///专属铭牌描述 +@property (nonatomic, strong) UILabel *nameplateDescLabel; +///专属礼物背景 +@property (nonatomic, strong) UIView *giftBgView; +///专属礼物图片 +@property (nonatomic, strong) NetImageView *giftImageView; +///专属礼物名称 +@property (nonatomic, strong) UILabel *giftLabel; +///专属礼物描述 +@property (nonatomic, strong) UILabel *giftDescLabel; +///加入按钮的icon +@property (nonatomic, strong) NetImageView *iconImageView; +///加入按钮 +@property (nonatomic, strong) UIButton *joinButton; +///加入按钮描述 +@property (nonatomic, strong) UILabel *joinLabel; + +@end + +@implementation XPAnchorFansTeamViewController + +- (instancetype)initWithRoomUid:(NSString *)roomUid { + if (self = [super init]) { + self.roomUid = roomUid; + self.modalPresentationStyle = UIModalPresentationOverFullScreen; + } + return self; +} + +- (XPAnchorFansTeamPresenter *)createPresenter { + return [[XPAnchorFansTeamPresenter alloc] init];; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + [self setupInfo]; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + [self.view endEditing:YES]; +} + + +#pragma mark - Private Method +- (void)initSubViews { + self.view.backgroundColor = [UIColor clearColor]; + [self.view addSubview:self.topView]; + [self.view addSubview:self.contentView]; + + [self.contentView addSubview:self.bgImageView]; + [self.contentView addSubview:self.helpButton]; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.nameLabel]; + [self.contentView addSubview:self.countContentView]; + [self.countContentView addSubview:self.countLabel]; + [self.contentView addSubview:self.stackView]; + [self.stackView addSubview:self.rankImageView]; + + [self.contentView addSubview:self.privilegeTitleImageView]; + [self.contentView addSubview:self.nameplateBgView]; + + [self.nameplateBgView addSubview:self.nameplateImageView]; + [self.nameplateBgView addSubview:self.nameplateLabel]; + [self.nameplateBgView addSubview:self.nameplateDescLabel]; + + [self.contentView addSubview:self.giftBgView]; + [self.giftBgView addSubview:self.giftImageView]; + [self.giftBgView addSubview:self.giftLabel]; + [self.giftBgView addSubview:self.giftDescLabel]; + + [self.contentView addSubview:self.joinButton]; + [self.contentView addSubview:self.iconImageView]; + [self.contentView addSubview:self.joinLabel]; +} + +- (void)initSubViewConstraints { + [self.topView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.contentView.mas_top); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.height.mas_equalTo(416); + }]; + + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make){ + make.edges.mas_equalTo(0); + }]; + + [self.helpButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-10); + make.top.mas_equalTo(10); + make.width.height.mas_equalTo(30); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(15); + make.width.height.mas_equalTo(64); + make.top.mas_equalTo(36); + }]; + + [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(21); + make.left.mas_equalTo(self.avatarImageView.mas_right).mas_offset(8); + make.top.mas_equalTo(self.avatarImageView).offset(6); + make.right.mas_equalTo(self.countContentView.mas_left).mas_offset(-4); + }]; + + [self.countContentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.nameLabel); + make.right.mas_lessThanOrEqualTo(-26); + make.height.mas_equalTo(15); + make.left.mas_equalTo(self.nameLabel.mas_right).mas_offset(4); + }]; + [self.countLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.bottom.mas_equalTo(self.countContentView); + make.left.mas_equalTo(self.countContentView).mas_offset(5); + make.right.mas_equalTo(self.countContentView).mas_offset(-5); + }]; + + [self.countLabel setContentHuggingPriority:UILayoutPriorityDefaultHigh forAxis:UILayoutConstraintAxisHorizontal]; + [self.nameLabel setContentCompressionResistancePriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatarImageView.mas_right).mas_offset(8); + make.bottom.mas_equalTo(self.avatarImageView).mas_offset(-3); + make.height.mas_equalTo(28); + make.width.mas_equalTo(3 * (20 + 8) + 34); + }]; + + [self.rankImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.stackView); + make.left.mas_equalTo(9); + make.width.mas_equalTo(16); + make.height.mas_equalTo(18); + }]; + [self.privilegeTitleImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.avatarImageView.mas_bottom).mas_offset(15); + make.centerX.mas_equalTo(self.contentView); + make.width.mas_equalTo(103); + make.height.mas_equalTo(38); + }]; + + [self.nameplateBgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + make.top.mas_equalTo(self.privilegeTitleImageView.mas_bottom).offset(7); + make.height.mas_equalTo(58); + }]; + + [self.nameplateImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(10); + make.centerY.mas_equalTo(self.nameplateBgView); + make.width.height.mas_equalTo(38); + }]; + + [self.nameplateLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nameplateImageView.mas_right).mas_offset(8); + make.top.mas_equalTo(self.nameplateImageView).mas_offset(1); + make.height.mas_equalTo(21); + }]; + [self.nameplateDescLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.nameplateLabel.mas_bottom); + make.left.mas_equalTo(self.nameplateLabel); + make.height.mas_equalTo(15); + }]; + + [self.giftBgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + make.top.mas_equalTo(self.nameplateBgView.mas_bottom).offset(12); + make.height.mas_equalTo(58); + }]; + + [self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(10); + make.centerY.mas_equalTo(self.giftBgView); + make.width.height.mas_equalTo(38); + }]; + + [self.giftLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.giftImageView.mas_right).mas_offset(8); + make.top.mas_equalTo(self.giftImageView).mas_offset(1); + make.height.mas_equalTo(21); + }]; + [self.giftDescLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.giftLabel.mas_bottom); + make.left.mas_equalTo(self.giftLabel); + make.height.mas_equalTo(15); + }]; + + [self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.joinButton); + make.left.mas_equalTo(self.joinButton).mas_offset(15); + make.width.height.mas_equalTo(75); + }]; + [self.joinButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + make.height.mas_equalTo(48); + make.bottom.mas_equalTo(-kSafeAreaBottomHeight - 14); + }]; + [self.joinLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.iconImageView.mas_right); + make.centerY.mas_equalTo(self.joinButton); + }]; +} + +- (void)setModel:(XPAnchorFansJoinModel *)model { + _model = model; +} + +- (void)setupInfo { + if (self.model) { + self.avatarImageView.imageUrl = self.model.anchorAvatar; + self.nameLabel.text = self.model.anchorNick; + self.countLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPAnchorFansTeamViewController0"), self.model.teamNum]; + + XPAnchorFansPrivilegeModel *nameplateModel = self.model.privilegeConfigVos[0]; + self.nameplateImageView.imageUrl = nameplateModel.icon; + self.nameplateLabel.text = nameplateModel.name; + self.nameplateDescLabel.text = nameplateModel.desc; + XPAnchorFansPrivilegeModel *giftModel = self.model.privilegeConfigVos[1]; + self.giftImageView.imageUrl = giftModel.icon; + self.giftLabel.text = giftModel.name; + self.giftDescLabel.text = giftModel.desc; + + XPAnchorFansPrivilegeModel *joinModel = self.model.privilegeConfigVos[2]; + self.joinLabel.text = joinModel.name; + self.iconImageView.imageUrl = joinModel.icon; + + CGFloat margin = 8; + for (int i = 0; i < 3; i++) { + NSString *str; + if (self.model.avatarList.count > i) { + str = self.model.avatarList[i]; + } + NetImageConfig *config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultEmptyAvatarPlaceholder]; + NetImageView *imageView = [[NetImageView alloc] initWithConfig:config]; + imageView.layer.cornerRadius = 10; + imageView.layer.masksToBounds = YES; + if (str) { + imageView.imageUrl = str; + } + [self.stackView addSubview:imageView]; + [imageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.stackView); + make.width.height.mas_equalTo(20); + make.left.mas_equalTo(i * 27 + 25 + margin); + }]; + } + } +} + +#pragma mark - private +- (void)onDismiss:(UITapGestureRecognizer *)ges { + [self dismissViewControllerAnimated:YES completion:nil]; +} + +- (void)helpButtonAction:(UIButton *)button { + XPRoomHalfWebView * webView = [[XPRoomHalfWebView alloc] init]; + webView.url = [NSString stringWithFormat:@"%@?roomUid=%@", URLWithType(kAnchorFansRuleURL), self.roomUid]; + [TTPopup popupView:webView style:TTPopupStyleActionSheet]; +} + +- (void)joinButtonAction:(UIButton *)button { + button.userInteractionEnabled = NO; + XPAnchorFansPrivilegeModel *joinModel = self.model.privilegeConfigVos[2]; + [Api requestSendAnchorFansGift:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + [self showSuccessToast:YMLocalizedString(@"XPAnchorFansTeamViewController1")]; + [self dismissViewControllerAnimated:YES completion:nil]; + } else { + [self showErrorToast:msg]; + button.userInteractionEnabled = YES; + } + } targetUids:[NSString stringWithFormat:@"%lld", self.model.teamUid] giftNum:@"1" sendType:@"1" giftId:[NSString stringWithFormat:@"%ld", joinModel.normalId] giftSource:@"1" giftType:@"" roomUid:self.roomUid msg:@"" uid:[[AccountInfoStorage instance] getUid]]; +} + +- (void)gotoFansRank:(UITapGestureRecognizer *)ges { + XPRoomHalfWebView * webView = [[XPRoomHalfWebView alloc] init]; + webView.url = [NSString stringWithFormat:@"%@?roomUid=%@", URLWithType(kAnchorFansRankURL), self.roomUid]; + [TTPopup popupView:webView style:TTPopupStyleActionSheet]; +} + +#pragma mark - getter +- (UIView *)topView { + if (!_topView) { + _topView = [[UIView alloc] init]; + _topView.backgroundColor = UIColor.blackColor; + _topView.alpha = 0.3; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onDismiss:)]; + [_topView addGestureRecognizer:tap]; + } + return _topView; +} + +- (UIView *)contentView { + if (!_contentView) { + _contentView = [[UIView alloc] init]; + CAShapeLayer * layer = [CAShapeLayer layer]; + layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth,416) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)].CGPath; + _contentView.layer.mask = layer; + } + return _contentView; +} + +- (UIImageView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[UIImageView alloc] init]; + _bgImageView.image = [UIImage imageNamed:@"join_anchor_fansTeam_bg"]; + _bgImageView.contentMode = UIViewContentModeScaleAspectFill; + } + return _bgImageView; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 64 / 2; + } + return _avatarImageView; +} + +- (UILabel *)nameLabel { + if (!_nameLabel) { + UILabel *label = [[UILabel alloc] init]; + label.textColor = [DJDKMIMOMColor mainTextColor]; + label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; + _nameLabel = label; + } + return _nameLabel; +} + +- (UIView *)countContentView { + if (!_countContentView) { + _countContentView = [[UIView alloc] init]; + _countContentView.backgroundColor = [UIColor whiteColor]; + _countContentView.layer.cornerRadius = 7.5; + _countContentView.layer.masksToBounds = YES; + } + return _countContentView; +} + +- (UILabel *)countLabel { + if (!_countLabel) { + _countLabel = [[UILabel alloc] init]; + _countLabel.textColor = UIColorFromRGB(0xFE3478); + _countLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + } + return _countLabel; +} + +- (UIView *)stackView { + if (!_stackView) { + _stackView = [[UIView alloc] init]; + _stackView.backgroundColor = [UIColor whiteColor]; + _stackView.layer.cornerRadius = 14; + _stackView.layer.masksToBounds = YES; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(gotoFansRank:)]; + [_stackView addGestureRecognizer:tap]; + } + return _stackView; +} + +- (UIImageView *)rankImageView { + if (!_rankImageView) { + _rankImageView = [[UIImageView alloc] init]; + _rankImageView.image = [UIImage imageNamed:@"anchor_fansTeam_rank"]; + } + return _rankImageView; +} + +- (UIImageView *)privilegeTitleImageView { + if (!_privilegeTitleImageView) { + _privilegeTitleImageView = [[UIImageView alloc] init]; + _privilegeTitleImageView.image = [UIImage imageNamed:@"anchor_fansTeam_nameplate"]; + _privilegeTitleImageView.contentMode = UIViewContentModeScaleAspectFill; + } + return _privilegeTitleImageView; +} + +- (UIView *)nameplateBgView { + if (!_nameplateBgView) { + _nameplateBgView = [[UIView alloc] init]; + _nameplateBgView.backgroundColor = [UIColor whiteColor]; + _nameplateBgView.layer.cornerRadius = 8; + _nameplateBgView.layer.masksToBounds = YES; + } + return _nameplateBgView; +} + +- (NetImageView *)nameplateImageView { + if (!_nameplateImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _nameplateImageView = [[NetImageView alloc] initWithConfig:config]; + _nameplateImageView.layer.masksToBounds = YES; + _nameplateImageView.layer.cornerRadius = 8; + _nameplateImageView.contentMode = UIViewContentModeScaleAspectFit; + _nameplateImageView.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; + } + return _nameplateImageView; +} + +- (UILabel *)nameplateLabel; { + if (!_nameplateLabel) { + UILabel *label = [[UILabel alloc] init]; + label.textColor = [DJDKMIMOMColor mainTextColor]; + label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; + _nameplateLabel = label; + } + return _nameplateLabel; +} + +- (UILabel *)nameplateDescLabel; { + if (!_nameplateDescLabel) { + UILabel *label = [[UILabel alloc] init]; + label.textColor = [DJDKMIMOMColor textThirdColor]; + label.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + _nameplateDescLabel = label; + } + return _nameplateDescLabel; +} + +- (UIView *)giftBgView { + if (!_giftBgView) { + _giftBgView = [[UIView alloc] init]; + _giftBgView.backgroundColor = [UIColor whiteColor]; + _giftBgView.layer.cornerRadius = 8; + _giftBgView.layer.masksToBounds = YES; + } + return _giftBgView; +} + +- (NetImageView *)giftImageView { + if (!_giftImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _giftImageView = [[NetImageView alloc] initWithConfig:config]; + _giftImageView.layer.masksToBounds = YES; + _giftImageView.layer.cornerRadius = 8; + _giftImageView.contentMode = UIViewContentModeScaleAspectFit; + _giftImageView.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; + } + return _giftImageView; +} + +- (UILabel *)giftLabel; { + if (!_giftLabel) { + UILabel *label = [[UILabel alloc] init]; + label.textColor = [DJDKMIMOMColor mainTextColor]; + label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; + _giftLabel = label; + } + return _giftLabel; +} + +- (UILabel *)giftDescLabel; { + if (!_giftDescLabel) { + UILabel *label = [[UILabel alloc] init]; + label.textColor = [DJDKMIMOMColor textThirdColor]; + label.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + _giftDescLabel = label; + } + return _giftDescLabel; +} + +- (NetImageView *)iconImageView { + if (!_iconImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.imageType = ImageTypeUserIcon; + _iconImageView = [[NetImageView alloc] initWithConfig:config]; + _iconImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _iconImageView; +} + +- (UIButton *)joinButton { + if (!_joinButton) { + _joinButton = [[UIButton alloc] init]; + [_joinButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFF49A3), UIColorFromRGB(0xFF2B4C)] gradientType:GradientTypeTopToBottom imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _joinButton.layer.masksToBounds = YES; + _joinButton.layer.cornerRadius = 24; + [_joinButton addTarget:self action:@selector(joinButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _joinButton; +} + +- (UILabel *)joinLabel { + if (!_joinLabel) { + UILabel *label = [[UILabel alloc] init]; + label.textColor = [UIColor whiteColor]; + label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _joinLabel = label; + } + return _joinLabel; +} + +- (UIButton *)helpButton { + if (!_helpButton) { + _helpButton = [[UIButton alloc] init]; + [_helpButton addTarget:self action:@selector(helpButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_helpButton setImage:[UIImage imageNamed:@"anchor_fansTeam_help"] forState:UIControlStateNormal]; + [_helpButton setEnlargeEdgeWithTop:5 right:5 bottom:5 left:5]; + } + return _helpButton; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/Model/XCombatellegAttentDischargeAbstract.h b/YuMi/Modules/YMRoom/View/AnchorView/Model/XCombatellegAttentDischargeAbstract.h deleted file mode 100644 index 0f00001d..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/Model/XCombatellegAttentDischargeAbstract.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMAnchorAttentSendInfo.h -// YUMI -// -// Created by YUMI on 2022/2/15. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface XCombatellegAttentDischargeAbstract : NSObject - -@property (assign, nonatomic) NSInteger uid; -@property (copy, nonatomic) NSString *nick; -@property (assign, nonatomic) NSInteger targetUid; -@property (copy, nonatomic) NSString *targetNick; -@property(nonatomic, strong)NSDictionary *encodeAttachemt; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorView/Model/XCombatellegAttentDischargeAbstract.m b/YuMi/Modules/YMRoom/View/AnchorView/Model/XCombatellegAttentDischargeAbstract.m deleted file mode 100644 index 91e57c78..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/Model/XCombatellegAttentDischargeAbstract.m +++ /dev/null @@ -1,25 +0,0 @@ -// -// YMAnchorAttentSendInfo.m -// YUMI -// -// Created by YUMI on 2022/2/15. -// - -#import "XCombatellegAttentDischargeAbstract.h" -#import "NSMutableDictionary+Saft.h" -@implementation XCombatellegAttentDischargeAbstract - -- (NSDictionary *)encodeAttachemt { - - NSMutableDictionary * info = [NSMutableDictionary dictionary]; - [info secureSetGroal:self.nick forKey:@"nick"]; - [info secureSetGroal:@(self.targetUid) forKey:@"targetUid"]; - [info secureSetGroal:self.targetNick forKey:@"targetNick"]; - - NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic secureSetGroal:@(self.uid) forKey:@"uid"]; - [dic secureSetGroal:info forKey:@"data"]; - return info; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/Model/XPAnchorAttentSendInfo.h b/YuMi/Modules/YMRoom/View/AnchorView/Model/XPAnchorAttentSendInfo.h new file mode 100644 index 00000000..4cd85159 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/Model/XPAnchorAttentSendInfo.h @@ -0,0 +1,22 @@ +// +// YMAnchorAttentSendInfo.h +// YUMI +// +// Created by YUMI on 2022/2/15. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPAnchorAttentSendInfo : NSObject + +@property (assign, nonatomic) NSInteger uid; +@property (copy, nonatomic) NSString *nick; +@property (assign, nonatomic) NSInteger targetUid; +@property (copy, nonatomic) NSString *targetNick; +@property(nonatomic, strong)NSDictionary *encodeAttachemt; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorView/Model/XPAnchorAttentSendInfo.m b/YuMi/Modules/YMRoom/View/AnchorView/Model/XPAnchorAttentSendInfo.m new file mode 100644 index 00000000..d668597e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/Model/XPAnchorAttentSendInfo.m @@ -0,0 +1,25 @@ +// +// YMAnchorAttentSendInfo.m +// YUMI +// +// Created by YUMI on 2022/2/15. +// + +#import "XPAnchorAttentSendInfo.h" +#import "NSMutableDictionary+Saft.h" +@implementation XPAnchorAttentSendInfo + +- (NSDictionary *)encodeAttachemt { + + NSMutableDictionary * info = [NSMutableDictionary dictionary]; + [info safeSetObject:self.nick forKey:@"nick"]; + [info safeSetObject:@(self.targetUid) forKey:@"targetUid"]; + [info safeSetObject:self.targetNick forKey:@"targetNick"]; + + NSMutableDictionary * dic = [NSMutableDictionary dictionary]; + [dic safeSetObject:@(self.uid) forKey:@"uid"]; + [dic safeSetObject:info forKey:@"data"]; + return info; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/XCombatellegAudienceUpwardsLoudspeakerRegard.h b/YuMi/Modules/YMRoom/View/AnchorView/XCombatellegAudienceUpwardsLoudspeakerRegard.h deleted file mode 100644 index 178b14a0..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/XCombatellegAudienceUpwardsLoudspeakerRegard.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// TTAnchorAudienceUpMicView.h -// PlanetStar -// -// Created by YUMI on 2021/12/29. -// Copyright © 2021 WUJIE INTERACTIVE. All rights reserved. -// - -#import -#import "ChamberHostRepresendtation.h" - -NS_ASSUME_NONNULL_BEGIN -@class ConsumerAbstractMatrix; -@interface XCombatellegAudienceUpwardsLoudspeakerRegard : UIView - -- (instancetype)initWithFrame:(CGRect)frame delegate:(id)delegate; - -@property (nonatomic, strong) ConsumerAbstractMatrix *info; - -@property (nonatomic, weak, readonly) id hostRepresedtation; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorView/XCombatellegAudienceUpwardsLoudspeakerRegard.m b/YuMi/Modules/YMRoom/View/AnchorView/XCombatellegAudienceUpwardsLoudspeakerRegard.m deleted file mode 100644 index df9ab747..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/XCombatellegAudienceUpwardsLoudspeakerRegard.m +++ /dev/null @@ -1,212 +0,0 @@ -// -// TTAnchorAudienceUpMicView.m -// PlanetStar -// -// Created by YUMI on 2021/12/29. -// Copyright © 2021 WUJIE INTERACTIVE. All rights reserved. -// - -#import "XCombatellegAudienceUpwardsLoudspeakerRegard.h" -#import -#import -#import -#import "MKJPopup.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "NetIndicateRegard.h" -#import "MiecreoscoopeMHTueueMatrix.h" -#import "AttachmentMatrix.h" -#import "ChamberAbstractMatrix.h" -#import "ConsumerAbstractMatrix.h" - -@interface XCombatellegAudienceUpwardsLoudspeakerRegard() - -@property (nonatomic, strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic, strong) UILabel *monicerSequencignation; -@property (nonatomic, strong) UILabel *sequenceripSequencignation; -@property (nonatomic, strong) UIButton *revocationBtuton; -@property (nonatomic, strong) UIButton *acknowledgementBtuton; - -@property (nonatomic, weak) id hostRepresedtation; - -@end - -@implementation XCombatellegAudienceUpwardsLoudspeakerRegard - -- (instancetype)initWithFrame:(CGRect)frame delegate:(nonnull id)delegate{ - if (self = [super initWithFrame:frame]) { - self.hostRepresedtation = delegate; - [self setUpwardsUI]; - [self setupRestrictions]; - [self setEvents]; - } - return self; -} - - -- (void)setUpwardsUI { - self.backgroundColor = [UIColor whiteColor]; - self.layer.cornerRadius = 12; - self.layer.masksToBounds = YES; - [self addSubview:self.intelligenceportraitIndicateRegard]; - [self addSubview:self.monicerSequencignation]; - [self addSubview:self.sequenceripSequencignation]; - [self addSubview:self.revocationBtuton]; - [self addSubview:self.acknowledgementBtuton]; -} - -- (void)setupRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(16); - make.width.height.mas_equalTo(80); - }]; - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_bottom).mas_offset(4); - make.centerX.mas_equalTo(self.mas_centerX); - make.height.mas_equalTo(18); - }]; - [self.sequenceripSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.mas_centerX); - make.height.mas_equalTo(40); - make.top.mas_equalTo(self.monicerSequencignation.mas_bottom).mas_offset(6); - make.left.mas_equalTo(20); - }]; - [self.revocationBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.sequenceripSequencignation.mas_bottom).offset(12); - make.width.mas_equalTo(126); - make.right.mas_equalTo(self.mas_centerX).mas_offset(-8); - make.height.mas_equalTo(38); - }]; - [self.acknowledgementBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.revocationBtuton); - make.width.mas_equalTo(126); - make.left.mas_equalTo(self.revocationBtuton.mas_right).mas_offset(16); - make.height.mas_equalTo(38); - }]; -} - -- (void)setEvents { - @weakify(self); - [[self.acknowledgementBtuton rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(__kindof UIControl * _Nullable x) { - @strongify(self); - NSDictionary *micQueue = [self.hostRepresedtation acquireMiecreoscoopeInthecaseofmtowardsion]; - NSString *position = [self prohibiticoveryFreePolariztowardsionAboutLoudspeaker:micQueue]; - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - ChamberAbstractMatrix *roomInfo = [self.hostRepresedtation acquireChamberAbstract]; - NSString *roomId = [NSString stringWithFormat:@"%zd", roomInfo.roomId]; - request.roomId = roomId; - NSString* uid = [NSString stringWithFormat:@"%ld", self.info.uid]; - request.userIds = @[uid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - NIMChatroomMember * member = members.firstObject; - [self dismiss]; - if (!member) return; - NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic setValue:@(position.integerValue) forKey:@"micPosition"]; - [dic setValue:@(member.userId.integerValue) forKey:@"uid"]; - AttachmentMatrix *attachement = [[AttachmentMatrix alloc]init]; - attachement.first = IndividualityCommunicationGenre_Queue; - attachement.second = Custom_Message_Sub_Queue_Invite; - attachement.data = dic; - - NIMMessage *message = [[NIMMessage alloc]init]; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachement; - message.messageObject = object; - - NIMSession *session = [NIMSession session:roomId type:NIMSessionTypeChatroom]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; - }]; - }]; - [[self.revocationBtuton rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(__kindof UIControl * _Nullable x) { - [self dismiss]; - }]; -} - -- (void)setInfo:(ConsumerAbstractMatrix *)info { - _info = info; - self.intelligenceportraitIndicateRegard.imageUrl = info.avatar; - self.monicerSequencignation.text = info.nick; -} - -- (void)dismiss { - [MKJPopup dismiss]; -} - -- (NSString *)prohibiticoveryFreePolariztowardsionAboutLoudspeaker:(NSDictionary *)micQueue { - if (micQueue != nil && micQueue.allKeys.count > 0) { - NSArray *keys = [micQueue allKeys]; - if (keys.count > 0) { - for (NSString *key in keys) { - MiecreoscoopeMHTueueMatrix* model = [micQueue objectForKey:key]; - if (!model.userInfo) { - return key; - } - } - } - } - return nil; -} - -#pragma mark - views -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 40; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _monicerSequencignation.font = [UIFont systemFontOfSize:13 weight:UIFontWeightBold]; - } - return _monicerSequencignation; -} - -- (UILabel *)sequenceripSequencignation { - if (!_sequenceripSequencignation) { - _sequenceripSequencignation = [[UILabel alloc] init]; - _sequenceripSequencignation.text = @"TA悄悄点击了嘉宾位置\n需要邀请TA上麦互动吗?"; - _sequenceripSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - _sequenceripSequencignation.textAlignment = NSTextAlignmentCenter; - _sequenceripSequencignation.font = [UIFont systemFontOfSize:12]; - _sequenceripSequencignation.numberOfLines = 0; - } - return _sequenceripSequencignation; -} - -- (UIButton *)revocationBtuton { - if (!_revocationBtuton) { - _revocationBtuton = [[UIButton alloc] init]; - [_revocationBtuton setTitle:YMLocalizedString(@"YUMI_Anchor_Audience_Up_Mic_View_1") forState:UIControlStateNormal]; - _revocationBtuton.layer.cornerRadius = 19; - _revocationBtuton.layer.masksToBounds = YES; - _revocationBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - [_revocationBtuton setTitleColor:[DJDKMIMOMColor revoctowardsionBtutonEssayPrettify] forState:UIControlStateNormal]; - [_revocationBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor revoctowardsionBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor revoctowardsionBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } - return _revocationBtuton; -} - -- (UIButton *)acknowledgementBtuton { - if (!_acknowledgementBtuton) { - _acknowledgementBtuton = [[UIButton alloc] init]; - [_acknowledgementBtuton setTitle:YMLocalizedString(@"YUMI_Anchor_Audience_Up_Mic_View_2") forState:UIControlStateNormal]; - _acknowledgementBtuton.layer.cornerRadius = 19; - _acknowledgementBtuton.layer.masksToBounds = YES; - _acknowledgementBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - [_acknowledgementBtuton setTitleColor:UIColorFromRGB(0xffffff) forState:UIControlStateNormal]; - [_acknowledgementBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } - return _acknowledgementBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/XPAnchorAudienceUpMicView.h b/YuMi/Modules/YMRoom/View/AnchorView/XPAnchorAudienceUpMicView.h new file mode 100644 index 00000000..d5aa03ce --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/XPAnchorAudienceUpMicView.h @@ -0,0 +1,24 @@ +// +// TTAnchorAudienceUpMicView.h +// PlanetStar +// +// Created by YUMI on 2021/12/29. +// Copyright © 2021 WUJIE INTERACTIVE. All rights reserved. +// + +#import +#import "RoomHostDelegate.h" + +NS_ASSUME_NONNULL_BEGIN +@class UserInfoModel; +@interface XPAnchorAudienceUpMicView : UIView + +- (instancetype)initWithFrame:(CGRect)frame delegate:(id)delegate; + +@property (nonatomic, strong) UserInfoModel *info; + +@property (nonatomic, weak, readonly) id hostDelegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorView/XPAnchorAudienceUpMicView.m b/YuMi/Modules/YMRoom/View/AnchorView/XPAnchorAudienceUpMicView.m new file mode 100644 index 00000000..c28d36ce --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/XPAnchorAudienceUpMicView.m @@ -0,0 +1,220 @@ +// +// TTAnchorAudienceUpMicView.m +// PlanetStar +// +// Created by YUMI on 2021/12/29. +// Copyright © 2021 WUJIE INTERACTIVE. All rights reserved. +// + +#import "XPAnchorAudienceUpMicView.h" +///Third +#import +#import +#import +///Tool +#import "TTPopup.h" +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "NetImageView.h" +///Model +#import "MicroQueueModel.h" +#import "AttachmentModel.h" +#import "RoomInfoModel.h" +#import "UserInfoModel.h" + +@interface XPAnchorAudienceUpMicView() + +// 头像 +@property (nonatomic, strong) NetImageView *avatarImageView; +// 昵称 +@property (nonatomic, strong) UILabel *nickLabel; +//描述 +@property (nonatomic, strong) UILabel *descripLabel; +//取消 +@property (nonatomic, strong) UIButton *cancelButton; +//确认 +@property (nonatomic, strong) UIButton *confirmButton; + +@property (nonatomic, weak) id hostDelegate; + +@end + +@implementation XPAnchorAudienceUpMicView + +- (instancetype)initWithFrame:(CGRect)frame delegate:(nonnull id)delegate{ + if (self = [super initWithFrame:frame]) { + self.hostDelegate = delegate; + [self setUpUI]; + [self setupConstraints]; + [self setEvents]; + } + return self; +} + + +- (void)setUpUI { + self.backgroundColor = [UIColor whiteColor]; + self.layer.cornerRadius = 12; + self.layer.masksToBounds = YES; + [self addSubview:self.avatarImageView]; + [self addSubview:self.nickLabel]; + [self addSubview:self.descripLabel]; + [self addSubview:self.cancelButton]; + [self addSubview:self.confirmButton]; +} + +- (void)setupConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(16); + make.width.height.mas_equalTo(80); + }]; + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.avatarImageView.mas_bottom).mas_offset(4); + make.centerX.mas_equalTo(self.mas_centerX); + make.height.mas_equalTo(18); + }]; + [self.descripLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.mas_centerX); + make.height.mas_equalTo(40); + make.top.mas_equalTo(self.nickLabel.mas_bottom).mas_offset(6); + make.left.mas_equalTo(20); + }]; + [self.cancelButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.descripLabel.mas_bottom).offset(12); + make.width.mas_equalTo(126); + make.right.mas_equalTo(self.mas_centerX).mas_offset(-8); + make.height.mas_equalTo(38); + }]; + [self.confirmButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.cancelButton); + make.width.mas_equalTo(126); + make.left.mas_equalTo(self.cancelButton.mas_right).mas_offset(16); + make.height.mas_equalTo(38); + }]; +} + +- (void)setEvents { + @weakify(self); + [[self.confirmButton rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(__kindof UIControl * _Nullable x) { + @strongify(self); + NSDictionary *micQueue = [self.hostDelegate getMicroQueue]; + NSString *position = [self findFreePositionWithMic:micQueue]; + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + RoomInfoModel *roomInfo = [self.hostDelegate getRoomInfo]; + NSString *roomId = [NSString stringWithFormat:@"%zd", roomInfo.roomId]; + request.roomId = roomId; + NSString* uid = [NSString stringWithFormat:@"%ld", self.info.uid]; + request.userIds = @[uid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + NIMChatroomMember * member = members.firstObject; + [self dismiss]; + if (!member) return; + NSMutableDictionary * dic = [NSMutableDictionary dictionary]; + [dic setValue:@(position.integerValue) forKey:@"micPosition"]; + [dic setValue:@(member.userId.integerValue) forKey:@"uid"]; + AttachmentModel *attachement = [[AttachmentModel alloc]init]; + attachement.first = CustomMessageType_Queue; + attachement.second = Custom_Message_Sub_Queue_Invite; + attachement.data = dic; + + NIMMessage *message = [[NIMMessage alloc]init]; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachement; + message.messageObject = object; + //构造会话 + NIMSession *session = [NIMSession session:roomId type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; + }]; + }]; + [[self.cancelButton rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(__kindof UIControl * _Nullable x) { + [self dismiss]; + }]; +} + +- (void)setInfo:(UserInfoModel *)info { + _info = info; + self.avatarImageView.imageUrl = info.avatar; + self.nickLabel.text = info.nick; +} + +- (void)dismiss { + [TTPopup dismiss]; +} + +- (NSString *)findFreePositionWithMic:(NSDictionary *)micQueue { + if (micQueue != nil && micQueue.allKeys.count > 0) { + NSArray *keys = [micQueue allKeys]; + if (keys.count > 0) { + for (NSString *key in keys) { + MicroQueueModel* model = [micQueue objectForKey:key]; + if (!model.userInfo) { + return key; + } + } + } + } + return nil; +} + +#pragma mark - views +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.cornerRadius = 40; + _avatarImageView.layer.masksToBounds = YES; + } + return _avatarImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _nickLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightBold]; + } + return _nickLabel; +} + +- (UILabel *)descripLabel { + if (!_descripLabel) { + _descripLabel = [[UILabel alloc] init]; + _descripLabel.text = @"TA悄悄点击了嘉宾位置\n需要邀请TA上麦互动吗?"; + _descripLabel.textColor = [DJDKMIMOMColor textThirdColor]; + _descripLabel.textAlignment = NSTextAlignmentCenter; + _descripLabel.font = [UIFont systemFontOfSize:12]; + _descripLabel.numberOfLines = 0; + } + return _descripLabel; +} + +- (UIButton *)cancelButton { + if (!_cancelButton) { + _cancelButton = [[UIButton alloc] init]; + [_cancelButton setTitle:YMLocalizedString(@"XPAnchorAudienceUpMicView1") forState:UIControlStateNormal]; + _cancelButton.layer.cornerRadius = 19; + _cancelButton.layer.masksToBounds = YES; + _cancelButton.titleLabel.font = [UIFont systemFontOfSize:14]; + [_cancelButton setTitleColor:[DJDKMIMOMColor cancelButtonTextColor] forState:UIControlStateNormal]; + [_cancelButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor cancelButtonGradientStartColor], [DJDKMIMOMColor cancelButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } + return _cancelButton; +} + +- (UIButton *)confirmButton { + if (!_confirmButton) { + _confirmButton = [[UIButton alloc] init]; + [_confirmButton setTitle:YMLocalizedString(@"XPAnchorAudienceUpMicView2") forState:UIControlStateNormal]; + _confirmButton.layer.cornerRadius = 19; + _confirmButton.layer.masksToBounds = YES; + _confirmButton.titleLabel.font = [UIFont systemFontOfSize:14]; + [_confirmButton setTitleColor:UIColorFromRGB(0xffffff) forState:UIControlStateNormal]; + [_confirmButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } + return _confirmButton; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/XPRoomAnchorInfoCardView.h b/YuMi/Modules/YMRoom/View/AnchorView/XPRoomAnchorInfoCardView.h new file mode 100644 index 00000000..f155a001 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/XPRoomAnchorInfoCardView.h @@ -0,0 +1,24 @@ +// +// TTRoomAnchorInfoCardView.h +// PlanetStar +// +// Created by YUMI on 2021/6/28. +// Copyright © 2021 WUJIE INTERACTIVE. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class UserInfoModel; +@interface XPRoomAnchorInfoCardView : UIView + +@property (nonatomic, strong) UserInfoModel *userInfo; + +@property (nonatomic, strong) UserInfoModel *targetUserInfo; + +@property (nonatomic, assign) NSInteger roomId; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorView/XPRoomAnchorInfoCardView.m b/YuMi/Modules/YMRoom/View/AnchorView/XPRoomAnchorInfoCardView.m new file mode 100644 index 00000000..bccf321d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnchorView/XPRoomAnchorInfoCardView.m @@ -0,0 +1,207 @@ +// +// TTRoomAnchorInfoCardView.m +// PlanetStar +// +// Created by YUMI on 2021/6/28. +// Copyright © 2021 WUJIE INTERACTIVE. All rights reserved. +// + +#import "XPRoomAnchorInfoCardView.h" +///Third +#import +#import "TTPopup.h" +///Tool +#import "XNDJTDDLoadingTool.h" +#import +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "Api+UserCard.h" +#import "AccountInfoStorage.h" +///View +#import "NetImageView.h" +///Model +#import "UserInfoModel.h" +#import "XPAnchorAttentSendInfo.h" +#import "AttachmentModel.h" + +@interface XPRoomAnchorInfoCardView() + +@property (nonatomic, strong) UIButton *closeBtn;//关闭按钮 +@property (nonatomic, strong) NetImageView *avatarImageView;//头像 +@property (nonatomic, strong) UILabel *nameLabel;//昵称 +@property (nonatomic, strong) UILabel *descLabel;//描述 +@property (nonatomic, strong) UIButton *followBtn;//关注按钮 + +@end + +@implementation XPRoomAnchorInfoCardView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initView]; + [self initConstraint]; + } + return self; +} + +- (void)initView { + self.backgroundColor = [UIColor whiteColor]; + [self addSubview:self.closeBtn]; + [self addSubview:self.avatarImageView]; + [self addSubview:self.nameLabel]; + [self addSubview:self.descLabel]; + [self addSubview:self.followBtn]; +} + +- (void)initConstraint { + CGFloat margin = 16; + [self.closeBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(margin); + make.top.mas_equalTo(margin); + make.width.height.mas_equalTo(30); + }]; + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.mas_centerX); + make.width.height.mas_equalTo(80); + make.top.mas_equalTo(55); + }]; + [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.avatarImageView.mas_bottom).mas_offset(10); + make.centerX.mas_equalTo(self.mas_centerX); + make.left.mas_equalTo(margin); + }]; + [self.descLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.nameLabel.mas_bottom).mas_offset(30); + make.centerX.mas_equalTo(self.mas_centerX); + }]; + [self.followBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(kSafeAreaBottomHeight > 0 ? -kSafeAreaBottomHeight : -20); + make.centerX.mas_equalTo(self.mas_centerX); + make.width.mas_equalTo(225); + make.height.mas_equalTo(30); + }]; +} + +- (void)setUserInfo:(UserInfoModel *)userInfo { + _userInfo = userInfo; +} + +- (void)setTargetUserInfo:(UserInfoModel *)targetUserInfo { + _targetUserInfo = targetUserInfo; + self.avatarImageView.imageUrl = targetUserInfo.avatar; + self.nameLabel.text = targetUserInfo.nick; +} + +- (void)drawRect:(CGRect)rect { + UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:self.bounds byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(15, 15)]; + CAShapeLayer *maskLayer = [CAShapeLayer layer]; + maskLayer.path = path.CGPath; + self.layer.mask = maskLayer; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + CGFloat imageWidth = _followBtn.imageView.frame.size.width; + CGFloat space = 5.f; //定义两个元素交换后的间距 + _followBtn.titleEdgeInsets = UIEdgeInsetsMake(0, imageWidth + space,0,imageWidth + space); +} + +- (void)followBtnClick:(UIButton *)btn { + NSString * uid = [[AccountInfoStorage instance] getUid]; + NSString * ticket = [[AccountInfoStorage instance] getTicket]; + NSString * type = @"1"; + [Api attentionCompletion:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + [self.followBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor cancelButtonGradientStartColor], [DJDKMIMOMColor cancelButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [self.followBtn setTitle:YMLocalizedString(@"XPRoomAnchorInfoCardView0") forState:UIControlStateNormal]; + [self.followBtn setTitleColor:[DJDKMIMOMColor cancelButtonTextColor] forState:UIControlStateNormal]; + + XPAnchorAttentSendInfo *info = [[XPAnchorAttentSendInfo alloc] init]; + info.uid = self.userInfo.uid; + info.targetNick = self.targetUserInfo.nick; + info.targetUid = self.targetUserInfo.uid; + info.nick = self.userInfo.nick; + + AttachmentModel *attachment = [[AttachmentModel alloc]init]; + attachment.first = CustomMessageType_Room_Tip; + attachment.second = Custom_Message_Sub_Room_Tip_Attention_Owner; + attachment.data = info.encodeAttachemt; + + NIMMessage *message = [[NIMMessage alloc]init]; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachment; + message.messageObject = object; + //构造会话 + NIMSession *session = [NIMSession session:[NSString stringWithFormat:@"%zd", self.roomId] type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [TTPopup dismiss]; + }); + } + } uid:uid likedUid:[NSString stringWithFormat:@"%zd", self.targetUserInfo.uid] ticket:ticket type:type]; +} + +- (void)close:(UIButton *)btn { + [TTPopup dismiss]; +} + +#pragma mark - lazy +- (UIButton *)closeBtn { + if (!_closeBtn) { + _closeBtn = [UIButton buttonWithType:UIButtonTypeCustom] ; + [_closeBtn setImage:[UIImage imageNamed:@"messageChat_popup_game_close_slices"] forState:UIControlStateNormal]; + [_closeBtn addTarget:self action:@selector(close:) forControlEvents:UIControlEventTouchUpInside]; + } + return _closeBtn; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.cornerRadius = 40; + _avatarImageView.layer.masksToBounds = YES; + } + return _avatarImageView; +} + +- (UILabel *)nameLabel { + if (!_nameLabel) { + _nameLabel = [[UILabel alloc] init]; + _nameLabel.font = [UIFont boldSystemFontOfSize:14]; + _nameLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _nameLabel.textAlignment = NSTextAlignmentCenter; + } + return _nameLabel; +} + +- (UILabel *)descLabel { + if (!_descLabel) { + _descLabel = [[UILabel alloc] init]; + _descLabel.font = [UIFont boldSystemFontOfSize:14]; + _descLabel.textColor = [DJDKMIMOMColor textThirdColor]; + _descLabel.textAlignment = NSTextAlignmentCenter; + _descLabel.text = @"点击加关注,下次直播不迷路~"; + } + return _descLabel; +} + +- (UIButton *)followBtn { + if (!_followBtn) { + _followBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_followBtn setImage:[UIImage imageNamed:@"personalAnchor_add"] forState:UIControlStateNormal]; + [_followBtn setTitle:YMLocalizedString(@"XPRoomAnchorInfoCardView2") forState:UIControlStateNormal]; + [_followBtn.titleLabel setFont:[UIFont boldSystemFontOfSize:15]]; + [_followBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _followBtn.layer.cornerRadius = 15; + _followBtn.layer.masksToBounds = YES; + [_followBtn addTarget:self action:@selector(followBtnClick:) forControlEvents:UIControlEventTouchUpInside]; + [_followBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } + return _followBtn; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnchorView/YUMIChamberKellegAbstractSolitaireRegard.h b/YuMi/Modules/YMRoom/View/AnchorView/YUMIChamberKellegAbstractSolitaireRegard.h deleted file mode 100644 index 87677c49..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/YUMIChamberKellegAbstractSolitaireRegard.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// TTRoomAnchorInfoCardView.h -// PlanetStar -// -// Created by YUMI on 2021/6/28. -// Copyright © 2021 WUJIE INTERACTIVE. All rights reserved. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class ConsumerAbstractMatrix; -@interface YUMIChamberKellegAbstractSolitaireRegard : UIView - -@property (nonatomic, strong) ConsumerAbstractMatrix *userInfo; - -@property (nonatomic, strong) ConsumerAbstractMatrix *targetConsumerAbstract; - -@property (nonatomic, assign) NSInteger roomId; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnchorView/YUMIChamberKellegAbstractSolitaireRegard.m b/YuMi/Modules/YMRoom/View/AnchorView/YUMIChamberKellegAbstractSolitaireRegard.m deleted file mode 100644 index badd4d38..00000000 --- a/YuMi/Modules/YMRoom/View/AnchorView/YUMIChamberKellegAbstractSolitaireRegard.m +++ /dev/null @@ -1,203 +0,0 @@ -// -// TTRoomAnchorInfoCardView.m -// PlanetStar -// -// Created by YUMI on 2021/6/28. -// Copyright © 2021 WUJIE INTERACTIVE. All rights reserved. -// - -#import "YUMIChamberKellegAbstractSolitaireRegard.h" -#import -#import "MKJPopup.h" -#import "XNDJTBWGLoadingTool.h" -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "Api+UserCard.h" -#import "AccountAbstractStorage.h" -#import "NetIndicateRegard.h" -#import "ConsumerAbstractMatrix.h" -#import "XCombatellegAttentDischargeAbstract.h" -#import "AttachmentMatrix.h" - -@interface YUMIChamberKellegAbstractSolitaireRegard() - -@property (nonatomic, strong) UIButton *concludeBtuton; -@property (nonatomic, strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic, strong) UILabel *constituteSequencignation; -@property (nonatomic, strong) UILabel *sequenceSequencignation; -@property (nonatomic, strong) UIButton *followBtuton; - -@end - -@implementation YUMIChamberKellegAbstractSolitaireRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initRegard]; - [self initConstraint]; - } - return self; -} - -- (void)initRegard { - self.backgroundColor = [UIColor whiteColor]; - [self addSubview:self.concludeBtuton]; - [self addSubview:self.intelligenceportraitIndicateRegard]; - [self addSubview:self.constituteSequencignation]; - [self addSubview:self.sequenceSequencignation]; - [self addSubview:self.followBtuton]; -} - -- (void)initConstraint { - CGFloat margin = 16; - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(margin); - make.top.mas_equalTo(margin); - make.width.height.mas_equalTo(30); - }]; - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.mas_centerX); - make.width.height.mas_equalTo(80); - make.top.mas_equalTo(55); - }]; - [self.constituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_bottom).mas_offset(10); - make.centerX.mas_equalTo(self.mas_centerX); - make.left.mas_equalTo(margin); - }]; - [self.sequenceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.constituteSequencignation.mas_bottom).mas_offset(30); - make.centerX.mas_equalTo(self.mas_centerX); - }]; - [self.followBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(kSafeAreaBottomHeight > 0 ? -kSafeAreaBottomHeight : -20); - make.centerX.mas_equalTo(self.mas_centerX); - make.width.mas_equalTo(225); - make.height.mas_equalTo(30); - }]; -} - -- (void)setUserInfo:(ConsumerAbstractMatrix *)userInfo { - _userInfo = userInfo; -} - -- (void)setTargetConsumerAbstract:(ConsumerAbstractMatrix *)targetConsumerAbstract { - _targetConsumerAbstract = targetConsumerAbstract; - self.intelligenceportraitIndicateRegard.imageUrl = targetConsumerAbstract.avatar; - self.constituteSequencignation.text = targetConsumerAbstract.nick; -} - -- (void)drawRect:(CGRect)rect { - UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:self.bounds byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(15, 15)]; - CAShapeLayer *maskLayer = [CAShapeLayer layer]; - maskLayer.path = path.CGPath; - self.layer.mask = maskLayer; -} - -- (void)layoutSubviews { - [super layoutSubviews]; - CGFloat imageWidth = _followBtuton.imageView.frame.size.width; - CGFloat vacuum = 5.f; - _followBtuton.titleEdgeInsets = UIEdgeInsetsMake(0, imageWidth + vacuum,0,imageWidth + vacuum); -} - -- (void)followBtutonTicktack:(UIButton *)btn { - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - NSString * ticket = [[AccountAbstractStorage instance] acquireTicket]; - NSString * type = @"1"; - [Api considertowardsionImplementtowardsion:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - [self.followBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor revoctowardsionBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor revoctowardsionBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [self.followBtuton setTitle:YMLocalizedString(@"YUMI_Room_Anchor_Info_Card_View_0") forState:UIControlStateNormal]; - [self.followBtuton setTitleColor:[DJDKMIMOMColor revoctowardsionBtutonEssayPrettify] forState:UIControlStateNormal]; - - XCombatellegAttentDischargeAbstract *info = [[XCombatellegAttentDischargeAbstract alloc] init]; - info.uid = self.userInfo.uid; - info.targetNick = self.targetConsumerAbstract.nick; - info.targetUid = self.targetConsumerAbstract.uid; - info.nick = self.userInfo.nick; - - AttachmentMatrix *attachment = [[AttachmentMatrix alloc]init]; - attachment.first = IndividualityCommunicationGenre_Room_Tip; - attachment.second = Custom_Message_Sub_Room_Tip_Attention_Owner; - attachment.data = info.encodeAttachemt; - - NIMMessage *message = [[NIMMessage alloc]init]; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachment; - message.messageObject = object; - - NIMSession *session = [NIMSession session:[NSString stringWithFormat:@"%zd", self.roomId] type:NIMSessionTypeChatroom]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [MKJPopup dismiss]; - }); - } - } uid:uid likedUid:[NSString stringWithFormat:@"%zd", self.targetConsumerAbstract.uid] ticket:ticket type:type]; -} - -- (void)close:(UIButton *)btn { - [MKJPopup dismiss]; -} - -#pragma mark - lazy -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [UIButton buttonWithType:UIButtonTypeCustom] ; - [_concludeBtuton setImage:[UIImage imageNamed:@"messageChat_popup_game_close_slices"] forState:UIControlStateNormal]; - [_concludeBtuton addTarget:self action:@selector(close:) forControlEvents:UIControlEventTouchUpInside]; - } - return _concludeBtuton; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 40; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)constituteSequencignation { - if (!_constituteSequencignation) { - _constituteSequencignation = [[UILabel alloc] init]; - _constituteSequencignation.font = [UIFont boldSystemFontOfSize:14]; - _constituteSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _constituteSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _constituteSequencignation; -} - -- (UILabel *)sequenceSequencignation { - if (!_sequenceSequencignation) { - _sequenceSequencignation = [[UILabel alloc] init]; - _sequenceSequencignation.font = [UIFont boldSystemFontOfSize:14]; - _sequenceSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - _sequenceSequencignation.textAlignment = NSTextAlignmentCenter; - _sequenceSequencignation.text = @"点击加关注,下次直播不迷路~"; - } - return _sequenceSequencignation; -} - -- (UIButton *)followBtuton { - if (!_followBtuton) { - _followBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_followBtuton setImage:[UIImage imageNamed:@"personalAnchor_add"] forState:UIControlStateNormal]; - [_followBtuton setTitle:YMLocalizedString(@"YUMI_Room_Anchor_Info_Card_View_2") forState:UIControlStateNormal]; - [_followBtuton.titleLabel setFont:[UIFont boldSystemFontOfSize:15]]; - [_followBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _followBtuton.layer.cornerRadius = 15; - _followBtuton.layer.masksToBounds = YES; - [_followBtuton addTarget:self action:@selector(followBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - [_followBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } - return _followBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/Model/ChamberHalfHourRateMatrix.h b/YuMi/Modules/YMRoom/View/AnimationView/Model/ChamberHalfHourRateMatrix.h deleted file mode 100644 index eb55fe63..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/Model/ChamberHalfHourRateMatrix.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// ChamberHalfHourRateMatrix.h -// YUMI -// -// Created by YUMI on 2022/6/7. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface ChamberHalfHourRateMatrix : NSObject -@property (nonatomic,copy) NSString *uid; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,copy) NSString *avatar; -@property (nonatomic,copy) NSString *desc; - -@property (nonatomic,copy) NSString *title; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/Model/ChamberHalfHourRateMatrix.m b/YuMi/Modules/YMRoom/View/AnimationView/Model/ChamberHalfHourRateMatrix.m deleted file mode 100644 index 6bd6c36a..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/Model/ChamberHalfHourRateMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ChamberHalfHourRateMatrix.m -// YUMI -// -// Created by YUMI on 2022/6/7. -// - -#import "ChamberHalfHourRateMatrix.h" - -@implementation ChamberHalfHourRateMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/Model/PIBaseAnimationViewModel.h b/YuMi/Modules/YMRoom/View/AnimationView/Model/PIBaseAnimationViewModel.h index 4fbaf043..10f68687 100644 --- a/YuMi/Modules/YMRoom/View/AnimationView/Model/PIBaseAnimationViewModel.h +++ b/YuMi/Modules/YMRoom/View/AnimationView/Model/PIBaseAnimationViewModel.h @@ -2,16 +2,40 @@ // PIBaseAnimationViewModel.h // YuMi // -// Created by duoban on 2023/7/10. +// Created by duoban on 2023/7/11. // #import - +typedef enum : NSUInteger { + GiftBannerType_Lucky,///福袋 + GiftBannerType_Love,///寻爱之旅 + GiftBannerType_Nobleman,///贵族 + GiftBannerType_kitchen,///厨房 + GiftBannerType_AnchorHour,///个播小时榜 + GiftBannerType_LicneseHour,///牌照房小时榜 +} GiftBannerType; NS_ASSUME_NONNULL_BEGIN @interface PIBaseAnimationViewModel : NSObject @property (nonatomic,assign) int first; @property (nonatomic,assign) int second; + +@property(nonatomic, copy)NSString *nick; +@property(nonatomic, copy)NSString *giftName; +@property (nonatomic,copy) NSString *luckyBagName; +@property (nonatomic,copy) NSString *roomTitle; +@property (nonatomic,copy) NSString *uid; +@property (nonatomic,copy) NSString *roomUid; +@property (nonatomic,copy) NSString *goldPrice; +@property (nonatomic,assign) BOOL isInRoomVisiable; +@property(nonatomic,assign) GiftBannerType type; +@property (nonatomic,copy) NSDictionary *data; + +@property (nonatomic,copy) NSString *skipUrl; +@property (nonatomic,copy) NSString *itemId; +@property (nonatomic,copy) NSString *itemMultiple; +@property (nonatomic,copy) NSString *diamonds; +@property (nonatomic,copy) NSString * bannerId; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/Model/PIBaseAnimationViewModel.m b/YuMi/Modules/YMRoom/View/AnimationView/Model/PIBaseAnimationViewModel.m index 7ce538d7..069cd6ad 100644 --- a/YuMi/Modules/YMRoom/View/AnimationView/Model/PIBaseAnimationViewModel.m +++ b/YuMi/Modules/YMRoom/View/AnimationView/Model/PIBaseAnimationViewModel.m @@ -2,7 +2,7 @@ // PIBaseAnimationViewModel.m // YuMi // -// Created by duoban on 2023/7/10. +// Created by duoban on 2023/7/11. // #import "PIBaseAnimationViewModel.h" diff --git a/YuMi/Modules/YMRoom/View/AnimationView/Model/RoomHalfHourRankModel.h b/YuMi/Modules/YMRoom/View/AnimationView/Model/RoomHalfHourRankModel.h new file mode 100644 index 00000000..8b5f825e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/Model/RoomHalfHourRankModel.h @@ -0,0 +1,27 @@ +// +// RoomHalfHourRankModel.h +// YUMI +// +// Created by YUMI on 2022/6/7. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RoomHalfHourRankModel : NSObject +///个播房字段 +///用户uid +@property (nonatomic,copy) NSString *uid; +///昵称 +@property (nonatomic,copy) NSString *nick; +///头像 +@property (nonatomic,copy) NSString *avatar; +///描述 +@property (nonatomic,copy) NSString *desc; + +///牌照房中显示 +@property (nonatomic,copy) NSString *title; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/Model/RoomHalfHourRankModel.m b/YuMi/Modules/YMRoom/View/AnimationView/Model/RoomHalfHourRankModel.m new file mode 100644 index 00000000..b98f7d9d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/Model/RoomHalfHourRankModel.m @@ -0,0 +1,12 @@ +// +// RoomHalfHourRankModel.m +// YUMI +// +// Created by YUMI on 2022/6/7. +// + +#import "RoomHalfHourRankModel.h" + +@implementation RoomHalfHourRankModel + +@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/Model/XPGiftBannerUserInfoModel.h b/YuMi/Modules/YMRoom/View/AnimationView/Model/XPGiftBannerUserInfoModel.h new file mode 100644 index 00000000..d5004ebe --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/Model/XPGiftBannerUserInfoModel.h @@ -0,0 +1,19 @@ +// +// YMGiftBannerUserInfoModel.h +// YUMI +// +// Created by YUMI on 2021/11/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPGiftBannerUserInfoModel : NSObject +/// +@property (nonatomic,assign) int position; +/// +@property (nonatomic,assign) NSInteger uid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/Model/XPGiftBannerUserInfoModel.m b/YuMi/Modules/YMRoom/View/AnimationView/Model/XPGiftBannerUserInfoModel.m new file mode 100644 index 00000000..b58d9cd8 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/Model/XPGiftBannerUserInfoModel.m @@ -0,0 +1,12 @@ +// +// YMGiftBannerUserInfoModel.m +// YUMI +// +// Created by YUMI on 2021/11/18. +// + +#import "XPGiftBannerUserInfoModel.h" + +@implementation XPGiftBannerUserInfoModel + +@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/Model/XPGiftBigPrizeModel.h b/YuMi/Modules/YMRoom/View/AnimationView/Model/XPGiftBigPrizeModel.h new file mode 100644 index 00000000..4600fa65 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/Model/XPGiftBigPrizeModel.h @@ -0,0 +1,31 @@ +// +// YMGiftBigPrizeModel.h +// YUMI +// +// Created by YUMI on 2021/11/18. +// +///四级礼物的模型 +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPGiftBigPrizeModel : NSObject +///送礼物的人 +@property(nonatomic, copy)NSString *nick; +///礼物的名称 +@property(nonatomic, copy)NSString *giftName; +///幸运的礼物 +@property (nonatomic,copy) NSString *luckyBagName; +///房间名称 +@property (nonatomic,copy) NSString *roomTitle; +///yoghurtuid +@property (nonatomic,copy) NSString *uid; +///房主的uid +@property (nonatomic,copy) NSString *roomUid; +///礼物的价值 +@property (nonatomic,copy) NSString *goldPrice; +///是否仅自己房间可见 +@property (nonatomic,assign) BOOL isInRoomVisiable; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/Model/XPGiftBigPrizeModel.m b/YuMi/Modules/YMRoom/View/AnimationView/Model/XPGiftBigPrizeModel.m new file mode 100644 index 00000000..4af43565 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/Model/XPGiftBigPrizeModel.m @@ -0,0 +1,12 @@ +// +// YMGiftBigPrizeModel.m +// YUMI +// +// Created by YUMI on 2021/11/18. +// + +#import "XPGiftBigPrizeModel.h" + +@implementation XPGiftBigPrizeModel + +@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/Model/XPGiftCompoundModel.h b/YuMi/Modules/YMRoom/View/AnimationView/Model/XPGiftCompoundModel.h new file mode 100644 index 00000000..1a266a3d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/Model/XPGiftCompoundModel.h @@ -0,0 +1,27 @@ +// +// YMGiftCompoundModel.h +// YUMI +// +// Created by YUMI on 2022/8/5. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPGiftCompoundModel : NSObject + +///昵称 +@property(nonatomic, copy)NSString *nick; +///礼物的名称 +@property(nonatomic, copy)NSString *giftName; +///礼物id +@property (nonatomic,copy) NSString *giftId; +///用户uid +@property (nonatomic,copy) NSString *uid; +///消息 +@property (nonatomic,copy) NSString *msg; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/Model/XPGiftCompoundModel.m b/YuMi/Modules/YMRoom/View/AnimationView/Model/XPGiftCompoundModel.m new file mode 100644 index 00000000..a5438da2 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/Model/XPGiftCompoundModel.m @@ -0,0 +1,12 @@ +// +// YMGiftCompoundModel.m +// YUMI +// +// Created by YUMI on 2022/8/5. +// + +#import "XPGiftCompoundModel.h" + +@implementation XPGiftCompoundModel + +@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/Model/XPRoomStarKitchenModel.h b/YuMi/Modules/YMRoom/View/AnimationView/Model/XPRoomStarKitchenModel.h new file mode 100644 index 00000000..3898b93e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/Model/XPRoomStarKitchenModel.h @@ -0,0 +1,30 @@ +// +// XPRoomStarKitchenModel.h +// YuMi +// +// Created by YuMi on 2023/6/21. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomStarKitchenModel : NSObject +@property (nonatomic,copy) NSString *skipUrl; +///用户id +@property (nonatomic,copy) NSString *uid; +///昵称 +@property (nonatomic,copy) NSString *nick; +///房间id +@property (nonatomic,copy) NSString *roomUid; +///中奖选项id +@property (nonatomic,copy) NSString *itemId; +///倍数 +@property (nonatomic,copy) NSString *itemMultiple; +///钻石 +@property (nonatomic,copy) NSString *diamonds; +///bannerId +@property (nonatomic,copy) NSString * bannerId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/Model/XPRoomStarKitchenModel.m b/YuMi/Modules/YMRoom/View/AnimationView/Model/XPRoomStarKitchenModel.m new file mode 100644 index 00000000..1deec169 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/Model/XPRoomStarKitchenModel.m @@ -0,0 +1,12 @@ +// +// XPRoomStarKitchenModel.m +// YuMi +// +// Created by YuMi on 2023/6/21. +// + +#import "XPRoomStarKitchenModel.h" + +@implementation XPRoomStarKitchenModel + +@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIChamberPresentBroadCastMatrix.h b/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIChamberPresentBroadCastMatrix.h deleted file mode 100644 index d6e4f607..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIChamberPresentBroadCastMatrix.h +++ /dev/null @@ -1,35 +0,0 @@ -// -// YMRoomGiftBroadCastModel.h -// YUMI -// -// Created by YUMI on 2021/11/18. -// 广播礼物的model - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, BroadCastPrototype) { - BroadCastPrototype_Normal = 1, - BroadCastPrototype_Middle = 2, - - BroadCastPrototype_High = 3, -}; - -@interface YUMIChamberPresentBroadCastMatrix : NSObject -@property (nonatomic,assign) NSInteger giftNum; -@property (nonatomic,copy) NSString *giftName; -@property (nonatomic,copy) NSString *giftUrl; -@property (nonatomic,assign) BOOL isSkipRoom; -@property (nonatomic,assign) BroadCastPrototype levelNum; -@property (nonatomic,assign) CGFloat notifyStaySecond; -@property (nonatomic,copy) NSString *recvUserAvatar; -@property (nonatomic,copy) NSString *recvUserNick; -@property (nonatomic, copy) NSString *sendUserAvatar; -@property (nonatomic, copy) NSString *sendUserNick; -@property (nonatomic,assign) NSInteger roomUid; -@property (nonatomic,copy) NSString *roomErbanNo; -@property (nonatomic, assign) BOOL ceremonyGift; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIChamberPresentBroadCastMatrix.m b/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIChamberPresentBroadCastMatrix.m deleted file mode 100644 index d1a20808..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIChamberPresentBroadCastMatrix.m +++ /dev/null @@ -1,15 +0,0 @@ -// -// YMRoomGiftBroadCastModel.m -// YUMI -// -// Created by YUMI on 2021/11/18. -// - -#import "YUMIChamberPresentBroadCastMatrix.h" - - - -@implementation YUMIChamberPresentBroadCastMatrix - - -@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIChamberSatelliteKitchenMatrix.h b/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIChamberSatelliteKitchenMatrix.h deleted file mode 100644 index fbf2bdba..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIChamberSatelliteKitchenMatrix.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YUMIChamberSatelliteKitchenMatrix.h -// YuMi -// -// Created by YuMi on 2023/6/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberSatelliteKitchenMatrix : NSObject -@property (nonatomic,copy) NSString *skipUrl; -@property (nonatomic,copy) NSString *uid; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,copy) NSString *roomUid; -@property (nonatomic,copy) NSString *itemId; -@property (nonatomic,copy) NSString *itemMultiple; -@property (nonatomic,copy) NSString *diamonds; -@property (nonatomic,copy) NSString * bannerId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIChamberSatelliteKitchenMatrix.m b/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIChamberSatelliteKitchenMatrix.m deleted file mode 100644 index 19f93d98..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIChamberSatelliteKitchenMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YUMIChamberSatelliteKitchenMatrix.m -// YuMi -// -// Created by YuMi on 2023/6/21. -// - -#import "YUMIChamberSatelliteKitchenMatrix.h" - -@implementation YUMIChamberSatelliteKitchenMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIPresentBigCaptureMatrix.h b/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIPresentBigCaptureMatrix.h deleted file mode 100644 index 8f30b334..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIPresentBigCaptureMatrix.h +++ /dev/null @@ -1,41 +0,0 @@ -// -// YMGiftBigPrizeModel.h -// YUMI -// -// Created by YUMI on 2021/11/18. -// -///四级礼物的模型 -#import -#import "PIBaseAnimationViewModel.h" - -typedef enum : NSUInteger { - GiftBannerType_Lucky,///福袋 - GiftBannerType_Love,///寻爱之旅 - GiftBannerType_Nobleman,///贵族 - GiftBannerType_kitchen,///厨房 - GiftBannerType_AnchorHour,///个播小时榜 - GiftBannerType_LicneseHour,///牌照房小时榜 -} GiftBannerType; - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIPresentBigCaptureMatrix : PIBaseAnimationViewModel -@property(nonatomic, copy)NSString *nick; -@property(nonatomic, copy)NSString *giftName; -@property (nonatomic,copy) NSString *luckyBagName; -@property (nonatomic,copy) NSString *roomTitle; -@property (nonatomic,copy) NSString *uid; -@property (nonatomic,copy) NSString *roomUid; -@property (nonatomic,copy) NSString *goldPrice; -@property (nonatomic,assign) BOOL isInRoomVisiable; -@property(nonatomic,assign) GiftBannerType type; -@property (nonatomic,copy) NSDictionary *data; - -@property (nonatomic,copy) NSString *skipUrl; -@property (nonatomic,copy) NSString *itemId; -@property (nonatomic,copy) NSString *itemMultiple; -@property (nonatomic,copy) NSString *diamonds; -@property (nonatomic,copy) NSString * bannerId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIPresentBigCaptureMatrix.m b/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIPresentBigCaptureMatrix.m deleted file mode 100644 index 35582624..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIPresentBigCaptureMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMGiftBigPrizeModel.m -// YUMI -// -// Created by YUMI on 2021/11/18. -// - -#import "YUMIPresentBigCaptureMatrix.h" - -@implementation YUMIPresentBigCaptureMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIPresentCompoundMatrix.h b/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIPresentCompoundMatrix.h deleted file mode 100644 index e048bfe0..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIPresentCompoundMatrix.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMGiftCompoundModel.h -// YUMI -// -// Created by YUMI on 2022/8/5. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIPresentCompoundMatrix : NSObject - -@property(nonatomic, copy)NSString *nick; -@property(nonatomic, copy)NSString *giftName; -@property (nonatomic,copy) NSString *giftId; -@property (nonatomic,copy) NSString *uid; -@property (nonatomic,copy) NSString *msg; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIPresentCompoundMatrix.m b/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIPresentCompoundMatrix.m deleted file mode 100644 index 55ae4cba..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIPresentCompoundMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMGiftCompoundModel.m -// YUMI -// -// Created by YUMI on 2022/8/5. -// - -#import "YUMIPresentCompoundMatrix.h" - -@implementation YUMIPresentCompoundMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIPresentOriflammeConsumerAbstractMatrix.h b/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIPresentOriflammeConsumerAbstractMatrix.h deleted file mode 100644 index a6d9d67f..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIPresentOriflammeConsumerAbstractMatrix.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMGiftBannerUserInfoModel.h -// YUMI -// -// Created by YUMI on 2021/11/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIPresentOriflammeConsumerAbstractMatrix : NSObject -@property (nonatomic,assign) int position; -@property (nonatomic,assign) NSInteger uid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIPresentOriflammeConsumerAbstractMatrix.m b/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIPresentOriflammeConsumerAbstractMatrix.m deleted file mode 100644 index 98bb35fd..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/Model/YUMIPresentOriflammeConsumerAbstractMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMGiftBannerUserInfoModel.m -// YUMI -// -// Created by YUMI on 2021/11/18. -// - -#import "YUMIPresentOriflammeConsumerAbstractMatrix.h" - -@implementation YUMIPresentOriflammeConsumerAbstractMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnchorRankBannerView.h b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnchorRankBannerView.h new file mode 100644 index 00000000..02ff17a9 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnchorRankBannerView.h @@ -0,0 +1,18 @@ +// +// YMRoomAnchorRankBannerView.h +// YUMI +// +// Created by YUMI on 2022/4/15. +// 个播小时榜飘屏 + +#import + +NS_ASSUME_NONNULL_BEGIN +@class RoomHalfHourRankModel; +@interface XPRoomAnchorRankBannerView : UIView + +///个播小时榜信息 +@property (nonatomic,copy) RoomHalfHourRankModel * anchorRankInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnchorRankBannerView.m b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnchorRankBannerView.m new file mode 100644 index 00000000..af126faf --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnchorRankBannerView.m @@ -0,0 +1,180 @@ +// +// YMRoomAnchorRankBannerView.m +// YUMI +// +// Created by YUMI on 2022/4/15. +// + +#import "XPRoomAnchorRankBannerView.h" +///Third +#import +///Tool +#import "ThemeColor+Room.h" +#import "DJDKMIMOMColor.h" +///Model +#import "RoomHalfHourRankModel.h" +///View +#import "NetImageView.h" + +@interface XPRoomAnchorRankBannerView() + +///背景 +@property (nonatomic,strong) UIImageView *bgImageView; +///icon +@property (nonatomic,strong) UIImageView *iconImageView; +///头像 +@property (nonatomic,strong) NetImageView *avatImageView; +///恭喜 +@property (nonatomic,strong) UILabel *titleLabel; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///描述 +@property (nonatomic, strong) UILabel *descLabel; +///排行 +@property (nonatomic, strong) UILabel *rankLabel; + +@end + +@implementation XPRoomAnchorRankBannerView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +- (void)layoutSubviews { + [super layoutSubviews]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.bgImageView]; + [self addSubview:self.iconImageView]; + [self addSubview:self.titleLabel]; + [self addSubview:self.avatImageView]; + [self addSubview:self.nickLabel]; + [self addSubview:self.descLabel]; + [self addSubview:self.rankLabel]; +} + +- (void)initSubViewConstraints { + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.centerY.mas_equalTo(self); + make.width.mas_equalTo(360); + make.height.mas_equalTo(50); + }]; + [self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.bgImageView).mas_offset(-14); + make.centerY.mas_equalTo(self); + make.width.mas_equalTo(61); + make.height.mas_equalTo(60); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.iconImageView.mas_right).mas_offset(3); + make.centerY.mas_equalTo(self.bgImageView).mas_offset(2); + }]; + [self.avatImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.titleLabel.mas_right).mas_offset(3); + make.centerY.mas_equalTo(self.titleLabel); + make.width.height.mas_equalTo(22); + }]; + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatImageView.mas_right).mas_offset(3); + make.centerY.mas_equalTo(self.titleLabel); + }]; + [self.descLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nickLabel.mas_right).mas_offset(3); + make.centerY.mas_equalTo(self.titleLabel); + }]; + [self.rankLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.descLabel.mas_right); + make.centerY.mas_equalTo(self.titleLabel); + }]; +} + +- (void)setAnchorRankInfo:(RoomHalfHourRankModel *)anchorRankInfo { + _anchorRankInfo = anchorRankInfo; + if (anchorRankInfo) { + self.avatImageView.imageUrl = _anchorRankInfo.avatar; + NSString *nick = _anchorRankInfo.nick; + if(nick.length > 4) { + nick = [NSString stringWithFormat:@"%@…", [nick substringToIndex:4]]; + } + self.nickLabel.text = nick; + self.descLabel.text = _anchorRankInfo.desc; + } +} +#pragma mark - Getters And Setters +- (UIImageView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[UIImageView alloc] init]; + _bgImageView.image = [UIImage imageNamed:@"anchor_hour_rank_bg"]; + } + return _bgImageView; +} + +- (UIImageView *)iconImageView { + if (!_iconImageView) { + _iconImageView = [[UIImageView alloc] init]; + _iconImageView.image = [UIImage imageNamed:@"anchor_hour_rank_icon"]; + } + return _iconImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:13 weight:UIFontWeightBold]; + label.textColor = [UIColor whiteColor]; + label.text = YMLocalizedString(@"XPRoomAnchorRankBannerView0"); + _titleLabel = label; + } + return _titleLabel; +} + +- (NetImageView *)avatImageView { + if (!_avatImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + _avatImageView = [[NetImageView alloc] initWithConfig:config]; + _avatImageView.layer.masksToBounds = YES; + _avatImageView.layer.cornerRadius = 11; + } + return _avatImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:13 weight:UIFontWeightBold]; + label.textColor = UIColorFromRGB(0xFFFC2C); + _nickLabel = label; + } + return _nickLabel; +} + +- (UILabel *)descLabel { + if (!_descLabel) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:13 weight:UIFontWeightHeavy]; + label.textColor = [UIColor whiteColor]; + _descLabel = label; + } + return _descLabel; +} + +- (UILabel *)rankLabel { + if (!_rankLabel) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:13 weight:UIFontWeightHeavy]; + label.textColor = UIColorFromRGB(0xFFFC2C); + label.text = @"TOP1"; + _rankLabel = label; + } + return _rankLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationHitView.h b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationHitView.h new file mode 100644 index 00000000..c2f31958 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationHitView.h @@ -0,0 +1,16 @@ +// +// YMRoomAnimationBaseView.h +// YUMI +// +// Created by YUMI on 2021/11/22. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomAnimationHitView : UIView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationHitView.m b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationHitView.m new file mode 100644 index 00000000..7ef9610e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationHitView.m @@ -0,0 +1,25 @@ +// +// YMRoomAnimationBaseView.m +// YUMI +// +// Created by YUMI on 2021/11/22. +// + +#import "XPRoomAnimationHitView.h" +#import "NSArray+Safe.h" +@implementation XPRoomAnimationHitView + + +- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { + for (NSInteger i = (self.subviews.count - 1) ; i >= 0 ; i--) { + UIView * subView = [self.subviews safeObjectAtIndex1:i]; + CGPoint convertPoint = [subView convertPoint:point fromView:self]; + if (CGRectContainsPoint(subView.bounds, convertPoint)) { + return [subView hitTest:convertPoint withEvent:event]; + } + } + return nil; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationView.h b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationView.h new file mode 100644 index 00000000..c3dc29d7 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationView.h @@ -0,0 +1,18 @@ +// +// YMRoomAnimationView.h +// YUMI +// +// Created by YUMI on 2021/12/6. +// + +#import +#import "XPRoomAnimationHitView.h" +#import "RoomHostDelegate.h" +#import "RoomGuestDelegate.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomAnimationView : XPRoomAnimationHitView +- (instancetype)initWithDelegate:(id)delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationView.m b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationView.m new file mode 100644 index 00000000..7827beac --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationView.m @@ -0,0 +1,2162 @@ +// +// YMRoomAnimationView.m +// YUMI +// +// Created by YUMI on 2021/12/6. +// + +#import "XPRoomAnimationView.h" +///Third +#import +#import +#import +#import +#import "QGVAPConfigModel.h" +#import "UIView+VAP.h" +#import +#import +///Tool +#import "XPGiftStorage.h" +#import "YUMIMacroUitls.h" +#import "ThemeColor+Room.h" +#import "NetImageView.h" +#import "XPRoomGiftAnimationParser.h" +#import "XCCurrentVCStackManager.h" +#import "AccountInfoStorage.h" +#import "ClientConfig.h" +///Model +#import "MicroQueueModel.h" +#import "MicroStateModel.h" +#import "UserInfoModel.h" +#import "GiftReceiveInfoModel.h" +#import "GiftInfoModel.h" +#import "RoomInfoModel.h" +#import "AttachmentModel.h" +#import "XPGiftBigPrizeModel.h" +#import "XPGiftBannerUserInfoModel.h" +#import "GiftReceiveInfoModel.h" +#import "XPMessageRemoteExtModel.h" +#import "DatingInfoModel.h" +#import "AcrossRoomPKPrizeModel.h" +#import "RoomHalfHourRankModel.h" +#import "ClientConfig.h" +///View +#import "XPRoomGiftBannerView.h" +#import "XPRoomGiftBroadcastView.h" +#import "XPRoomCandyGiftView.h" +#import "XPRoomDatingAnimationView.h" +#import "XPRoomNobleLevelUpView.h" +#import "QGVAPWrapView.h" +#import "XPAcrossRoomPKPrizeView.h" +#import "XPRoomViewController.h" +#import "XPRoomAnchorRankBannerView.h" +#import "XPRoomEnterHideTipView.h" +#import "XPRoomLicneseHourRankView.h" +#import "XPRoomLuckyBigPrizeView.h" +#import "XPRoomGiftCompoundView.h" +#import "XPSailingAnimationView.h" +#import "XPRoomGraffitiGiftAnimationView.h" +#import "XPRoomStarKitchenBannerView.h" +#import "XPWebViewController.h" +#import "PIBaseAnimationViewModel.h" +#import "PIFullScreenBannerAnimation.h" +@interface XPRoomAnimationView () +///展示的不同层级 +///最底层的 +@property (nonatomic,strong) XPRoomAnimationHitView * lowLevelView; +///中层的 +@property (nonatomic,strong) XPRoomAnimationHitView * middleLevelView; +///高层的 +@property (nonatomic,strong) XPRoomAnimationHitView * highLevleView; +///动画管理类 +@property (strong, nonatomic) SVGAParser *parser; +///VAP动画管理 +@property (nonatomic, strong) XPRoomGiftAnimationParser *vapParser; +///送礼物的特效 +@property (nonatomic,strong) SVGAImageView *giftEffectView; +///VAP特效 +@property (nonatomic, strong) VAPView *vapGiftEffectView; +///福袋礼物送礼物的特效 +@property (nonatomic,strong) SVGAImageView *luckyGiftEffectView; +///福袋礼物VAP特效 +@property (nonatomic, strong) VAPView *luckyVapGiftEffectView; +///代理 +@property (nonatomic,weak) iddelegate; + +///复用池 +@property (strong,nonatomic)NSMutableSet * bannerDequePool; +///可见池 +@property (strong,nonatomic)NSMutableSet * bannerVisiablePool; + + + +#pragma mark - 送礼物的动画的 +///礼物的队列 +@property (nonatomic,strong) NSMutableArray *giftQueue; +///定时器 +@property (nonatomic ,strong)dispatch_source_t giftTimer; +///复用池 应为送礼物的动画是一个很频繁的事情 所以可以减少内存的消耗 +@property (nonatomic,strong) NSMutableSet * giftReuseArray; +///可见池 +@property (nonatomic,strong) NSMutableSet * giftVisibleArray; + + +///魔法小屋合成礼物的队列 +@property (nonatomic,strong) NSMutableArray *compoundGiftQueue; + +///大礼物是否正在播放 +@property (nonatomic,assign) BOOL isLargeGiftAnimating; +#pragma mark - 进房座驾动画的 +@property (nonatomic, strong) NSMutableArray *carEffectQueue; +@property (nonatomic,strong) SVGAImageView *carEffectView; +///座驾VAP特效 +@property (nonatomic, strong) VAPView *carVapEffectView; +#pragma mark - 进房动画的 +@property (nonatomic, strong) NSMutableArray *enterEffectQueue; +@property (nonatomic,strong) SVGAImageView *enterEffectView; +#pragma mark - 相亲动画的 +@property (nonatomic, strong) NSMutableArray *datingEffectQueue; +@property (nonatomic,strong) SVGAImageView *datingEffectView; +#pragma mark - 跨房PK +@property (nonatomic, strong) NSMutableArray *acrossRoomPKQueue; +#pragma mark - 航海 +@property (nonatomic, strong) NSMutableArray *sailingQueue; +#pragma mark - 涂鸦礼物 +@property (nonatomic, strong) NSMutableArray *graffitiGiftQueue; +///幸运礼物动画是否在播放 +@property (nonatomic,assign) BOOL isLuckyGiftAnimation; +#pragma mark - 心愿礼物 +@property (nonatomic,strong) SVGAImageView *wishGiftEffectView; + + + + +///礼物飘屏 PresentAchieveAbstractMatrix +@property(nonatomic,strong) NSMutableArray *animationListA; +///玩法飘屏 YUMIPresentBigCaptureMatrix +@property(nonatomic,strong) NSMutableArray *animationListB; +///礼物飘屏正在播放中 +@property(nonatomic,assign) BOOL isPlayOfA; +///玩法飘屏正在播放中 +@property(nonatomic,assign) BOOL isPlayOfB; +///animationListA播放完后,如果有animationListB,那么要在animationListA的位置上播放animationListB,只播放一次 +@property(nonatomic,assign) BOOL isAnimationListAFinish; + +@end + +@implementation XPRoomAnimationView + +- (void)dealloc { + [NSObject cancelPreviousPerformRequestsWithTarget:self]; + [[NIMSDK sharedSDK].broadcastManager removeDelegate:self]; +} + +- (instancetype)initWithDelegate:(id)delegate { + self = [super init]; + if (self) { + [[NIMSDK sharedSDK].broadcastManager addDelegate:self]; + self.delegate = delegate; + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.lowLevelView]; + [self addSubview:self.middleLevelView]; + [self addSubview:self.highLevleView]; +} + +- (void)initSubViewConstraints { + [self.lowLevelView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + [self.middleLevelView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + [self.highLevleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; +} + +//自己是否在游戏中 +- (BOOL)isInSudGame { + BOOL isGamePlaying = NO; + if (self.delegate.getRoomInfo.type == RoomType_MiniGame) { + for (int i = -1; i<5; i++) { + NSMutableDictionary * micQueue = self.delegate.getMicroQueue; + MicroQueueModel *micSequence = [micQueue objectForKey:[NSString stringWithFormat:@"%d", i]]; + if (micSequence == nil || micSequence.userInfo == nil) { + continue; + } + if (micSequence.userInfo.uid == [AccountInfoStorage instance].getUid.integerValue && micSequence.userInfo.gameStatus == LittleGamePlayStatus_Plying) { + isGamePlaying = YES; + break; + } + } + } + return isGamePlaying; +} +#pragma mark - NIMBroadcastDelegate +// 广播消息 +- (void)onReceiveBroadcastMessage:(NIMBroadcastMessage *)broadcastMessage{ + if (![ClientConfig shareConfig].canOpen) { + return; + } + if (broadcastMessage.content) { + NSDictionary *msgDictionary = [broadcastMessage.content toJSONObject]; + AttachmentModel *attachment = [AttachmentModel modelWithJSON:msgDictionary[@"body"]]; + if (attachment.first == CustomMessageType_Gift && attachment.second == Custom_Message_Sub_Gift_ChannelNotify){///广播 全服礼物飘屏 + [self receiveBroadcastGift:attachment]; + } else if (attachment.first == CustomMessageType_Noble_VIP && attachment.second == Custom_Message_Sub_Room_Noble_LevelUp_Suspend) {///贵族升级全服飘屏 + [self receiveNobleLevelUp:attachment]; + }else if(attachment.first == CustomMessageType_LuckyBag && attachment.second == Custom_Message_Sub_Room_Gift_LuckBag_FullScree){ + [self receiveLuckyGiftBigPrize:attachment]; + }else if(attachment.first == CustomMessageType_Graffiti_Star_Kitchen && attachment.second == Custom_Message_Sub_Star_Kitchen_FullScreen){ + [self receiveRoomGraffitiStarKitchen:attachment]; + }else if(attachment.first == CustomMessageType_Look_Love && attachment.second == Custom_Message_Sub_Look_Love_InRoom_NeedAllMicSend){ + [self receiveCandyTreeGiftHighLevle:attachment]; + } + } +} + +#pragma mark - RoomGuestDelegate +- (void)handleNIMCustomMessage:(NIMMessage *)message { + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) { + if (![ClientConfig shareConfig].canOpen) { + AttachmentModel *attachment = (AttachmentModel *)obj.attachment; + if (attachment.first == CustomMessageType_Gift) { + GiftReceiveInfoModel * receiveInfo = [GiftReceiveInfoModel modelWithJSON:attachment.data]; + receiveInfo.isLuckyBagGift = attachment.second == Custom_Message_Sub_Gift_LuckySend; + receiveInfo.isBatch = YES; + [self receiveGiftHandleSendGiftAnimation:attachment]; + } else if (attachment.first == CustomMessageType_AllMicroSend) { //发送全麦礼物 或者多人礼物 + GiftReceiveInfoModel * receiveInfo = [GiftReceiveInfoModel modelWithJSON:attachment.data]; + receiveInfo.isLuckyBagGift = (attachment.second == Custom_Message_Sub_AllMicroLuckySend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend); + receiveInfo.isBatch = (attachment.second == Custom_Message_Sub_AllBatchSend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend); + [self receiveGiftHandleSendGiftAnimation:attachment]; + } + return; + } + AttachmentModel *attachment = (AttachmentModel *)obj.attachment; + if (attachment.first == CustomMessageType_Gift) { + GiftReceiveInfoModel * receiveInfo = [GiftReceiveInfoModel modelWithJSON:attachment.data]; + receiveInfo.isLuckyBagGift = attachment.second == Custom_Message_Sub_Gift_LuckySend; + receiveInfo.isBatch = YES; + [self receiveGiftHandleSendGiftAnimation:attachment]; + if (receiveInfo.isLuckyBagGift) { + if (!self.delegate.getRoomInfo.hasAnimationEffect) {return;} + if (receiveInfo.viewUrl.length > 0) { + [self playLuckyGiftEffectWithVapUrl:receiveInfo.viewUrl]; + } else { + NSString * svgaString = receiveInfo.luckyGiftSvgaUrl.length > 0 ? receiveInfo.luckyGiftSvgaUrl : receiveInfo.gift.luckyGiftSvgaUrl; + NSURL * luckyGiftSvgaUrl = [NSURL URLWithString:svgaString]; + if (luckyGiftSvgaUrl.absoluteString.length <= 0) { + luckyGiftSvgaUrl = [NSURL URLWithString:[NSString stringWithFormat:@"%@/room_lucky_gift_bg.svga", API_Image_URL]]; + } + [self playLuckyGiftEffect:luckyGiftSvgaUrl]; + } + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [self receiveGift:receiveInfo]; + }); + } else { + [self receiveGift:receiveInfo]; + } + } else if (attachment.first == CustomMessageType_AllMicroSend) { //发送全麦礼物 或者多人礼物 + GiftReceiveInfoModel * receiveInfo = [GiftReceiveInfoModel modelWithJSON:attachment.data]; + receiveInfo.isLuckyBagGift = (attachment.second == Custom_Message_Sub_AllMicroLuckySend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend); + receiveInfo.isBatch = (attachment.second == Custom_Message_Sub_AllBatchSend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend); + [self receiveGiftHandleSendGiftAnimation:attachment]; + if (receiveInfo.isLuckyBagGift) { + if (!self.delegate.getRoomInfo.hasAnimationEffect) {return;} + if (receiveInfo.viewUrl.length > 0) { + [self playLuckyGiftEffectWithVapUrl:receiveInfo.viewUrl]; + } else { + NSString * svgaString = receiveInfo.luckyGiftSvgaUrl.length > 0 ? receiveInfo.luckyGiftSvgaUrl : receiveInfo.gift.luckyGiftSvgaUrl; + NSURL * luckyGiftSvgaUrl = [NSURL URLWithString:svgaString]; + if (luckyGiftSvgaUrl.absoluteString.length <= 0) { + luckyGiftSvgaUrl = [NSURL URLWithString:[NSString stringWithFormat:@"%@/room_lucky_gift_bg.svga", API_Image_URL]];; + } + [self playLuckyGiftEffect:luckyGiftSvgaUrl]; + } + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [self receiveGift:receiveInfo]; + }); + } else { + [self receiveGift:receiveInfo]; + } + } else if (attachment.first == CustomMessageType_LuckyBag) {//福袋消息厅内展示 + [self receiveLuckyGiftBigPrize:attachment]; + } else if (attachment.first == CustomMessageType_Look_Love && (attachment.second == Custom_Message_Sub_Look_Love_InRoom_NeedAllMicSend || attachment.second == Custom_Message_Sub_Look_Love_AllRoom_Notify) ) {//寻爱之旅 + [self receiveCandyTreeGiftHighLevle:attachment]; + } else if (attachment.first == CustomMessageType_Car_Notify && attachment.second == Custom_Message_Sub_Car_EnterRoom ) {//座驾进房 + [self receiveDriveCarEnterRoom:attachment]; + } else if(attachment.first == CustomMessageType_RoomPlay_Dating && attachment.second == Custom_Message_Sub_Room_Play_Dating_Public_Result) { + [self roomDatingPublicResult:attachment]; + } else if(attachment.first == CustomMessageType_Across_Room_PK && attachment.second == Custom_Message_Sub_AcrossRoomPK_Result) { + [self acrossRoomPKBannerAnimation:attachment]; + } else if (attachment.first == CustomMessageType_Anchor_FansTeam && attachment.second == Custom_Message_Sub_FansTeam_Join_Success) {///个播粉丝团 + GiftReceiveInfoModel *receiveInfo = [[GiftReceiveInfoModel alloc] init]; + GiftInfoModel *giftInfo = [GiftInfoModel modelWithJSON:attachment.data[@"giftVo"]]; + receiveInfo.gift = giftInfo; + receiveInfo.giftInfo = giftInfo; + [self receiveFansTeamGiftHandleSendGiftAnimation:attachment]; + [self receiveGift:receiveInfo]; + } else if (attachment.first == CustomMessageType_Across_Room_PK && attachment.second == Custom_Message_Sub_AnchorPK_Result) {//个播PK横幅 + [self acrossRoomPKBannerAnimation:attachment]; + } else if (attachment.first == CustomMessageType_Anchor_Hour_Rank && attachment.second == Custom_Message_Sub_Anchor_Hour_Rank) {///个播小时榜 + [self receiveAnchorHourRank:attachment]; + } else if (attachment.first == CustomMessageType_Licnese_Hour_Rank && attachment.second == Custom_Message_Sub_Licnese_Hour_Rank) {///牌照房小时榜 + [self receiveLicneseHourRank:attachment]; + } else if (attachment.first == CustomMessageType_Gift_Compound && attachment.second == Custom_Message_Sub_Gift_Compound) {///魔法小屋合成礼物 + [self receiveGiftCompound:attachment]; + } else if(attachment.first == CustomMessageType_Room_Sailing && (attachment.second == Custom_Message_Sub_Sailing_AllRoom_Notify || attachment.second == Custom_Message_Sub_Sailing_InRoom_NeedAllMicSend)) { + [self receiveRoomSailing:attachment]; + } else if(attachment.first == CustomMessageType_Graffiti_Gift) {///涂鸦礼物 + [self receiveRoomGraffitiGift:attachment]; + } else if(attachment.first == CustomMessageType_Graffiti_Star_Kitchen){///星级厨房飘屏 + [self receiveRoomGraffitiStarKitchen:attachment]; + } + } +} + +- (void)handleNIMNotificationMessage:(NIMMessage *)message { + NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; + NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; + if (content.eventType == NIMChatroomEventTypeEnter) { + NIMMessageChatroomExtension * messageExt = (NIMMessageChatroomExtension *)message.messageExt; + NSDictionary * dic = [(NSDictionary *)messageExt.roomExt.toJSONObject objectForKey:message.from]; + XPMessageRemoteExtModel * extModel = [XPMessageRemoteExtModel modelWithJSON:dic]; + if (extModel.enterHide) {//隐身进房 + if ([message.from isEqualToString:[AccountInfoStorage instance].getUid]) { + [self createEnterHideAnimation:dic]; + } + return; + } + + [self userEnterRoom:content ext:extModel]; + } +} + +#pragma mark - 收到星级厨房飘屏 +-(void)receiveRoomGraffitiStarKitchen:(AttachmentModel *)attacment{ + PIBaseAnimationViewModel *roomGraffiti = [PIBaseAnimationViewModel new]; + roomGraffiti.data = attacment.data; + roomGraffiti.type = GiftBannerType_kitchen; + if(self.animationListB.count == 0 && self.isPlayOfB == NO){ + [self createStarKitchenBannerAnimation:roomGraffiti]; + } + [self.animationListB addObject:roomGraffiti]; +} + +- (void)createStarKitchenBannerAnimation:(PIBaseAnimationViewModel *)attacment{ + self.isPlayOfB = YES; + CGFloat top = self.isPlayOfA == YES ? 240 : (kNavigationHeight + 15); + XPRoomStarKitchenBannerView *starKitchenView = [[XPRoomStarKitchenBannerView alloc]initWithFrame:CGRectMake(0, top, KScreenWidth, kGetScaleWidth(60))]; + starKitchenView.isSvga = attacment.second == Custom_Message_Sub_Star_Kitchen_Server; + XPRoomStarKitchenModel *starModel = [XPRoomStarKitchenModel modelWithDictionary:attacment.data]; + starKitchenView.delegate = self; + starKitchenView.starModel = starModel; + [self.highLevleView addSubview:starKitchenView]; + POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; + springAnimation.springSpeed = 12; + springAnimation.springBounciness = 10.f; + springAnimation.fromValue = [NSValue valueWithCGPoint:starKitchenView.center]; + springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(starKitchenView.frame.size.width / 2, starKitchenView.center.y)]; + [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + if (finished) { + POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; + moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, starKitchenView.center.y)]; + moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, starKitchenView.center.y)]; + moveAnimation.beginTime = CACurrentMediaTime() + 3; + moveAnimation.duration = 0.5; + moveAnimation.repeatCount = 1; + moveAnimation.removedOnCompletion = YES; + @kWeakify(self); + [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + @kStrongify(self); + if (finished) { + [starKitchenView removeFromSuperview]; + self.isPlayOfB = NO; + + if(self.animationListB.count > 0){ + [self.animationListB removeObjectAtIndex:0]; + } + if(self. isAnimationListAFinish == YES){ + + [self playAnimationWithModel]; + self.isAnimationListAFinish = NO; + return; + } + [self playAnimationWithModel]; + } + }]; + [starKitchenView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; + } + }]; + [starKitchenView pop_addAnimation:springAnimation forKey:@"starKitchenOutAnimation"]; +} + +#pragma mark - XPRoomStarKitchenBannerViewDelegate +- (void)xPRoomStarKitchenBannerView:(XPRoomStarKitchenBannerView *)view didClick:(XPRoomStarKitchenModel *)starModel{ + if(starModel.skipUrl == nil || starModel.skipUrl.length == 0)return; + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + webVC.isPush = YES; + webVC.roomUid = starModel.roomUid; + webVC.url = starModel.skipUrl; + [self.delegate.getCurrentNav pushViewController:webVC animated:YES]; + +} +#pragma mark - 涂鸦礼物动画 +- (void)receiveRoomGraffitiGift:(AttachmentModel *)attacment { + if (self.graffitiGiftQueue.count == 0) { + [self startGraffitiGiftAnimation:attacment]; + } + [self.graffitiGiftQueue addObject:attacment]; +} + +- (void)startGraffitiGiftAnimation:(AttachmentModel *)model { + NSDictionary * dic = model.data; + NSNumber * giftId = dic[@"giftId"]; + GiftInfoModel * giftInfo = [[XPGiftStorage shareStorage] findGiftInfo:giftId.stringValue]; + NSArray * array = dic[@"drawFixedArray"]; + if (giftInfo.giftUrl.length > 0 && array.count > 0) { + [[SDWebImageManager sharedManager] loadImageWithURL:[NSURL URLWithString:giftInfo.giftUrl] options:SDWebImageProgressiveLoad progress:nil completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, SDImageCacheType cacheType, BOOL finished, NSURL * _Nullable imageURL) { + if (error == nil && image) { + XPRoomGraffitiGiftAnimationView *graffitiView = [[XPRoomGraffitiGiftAnimationView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; + graffitiView.giftImage = image; + graffitiView.delegate = self; + graffitiView.model = model; + graffitiView.pointArray = array; + [graffitiView beginDrawAnimation]; + [self.highLevleView addSubview:graffitiView]; + } else { + [self.graffitiGiftQueue removeObject:model]; + if (self.graffitiGiftQueue.count > 0) { + [self startGraffitiGiftAnimation:self.graffitiGiftQueue.firstObject]; + } + } + }]; + } else { + [self.graffitiGiftQueue removeObject:model]; + if (self.graffitiGiftQueue.count > 0) { + [self startGraffitiGiftAnimation:self.graffitiGiftQueue.firstObject]; + } + } +} + + + +- (void)xPRoomGraffitiGiftAnimationViewCompletion:(XPRoomGraffitiGiftAnimationView *)view attachment:(nonnull AttachmentModel *)attachment{ + [view removeFromSuperview]; + if ([self.graffitiGiftQueue containsObject:attachment]) { + [self.graffitiGiftQueue removeObject:attachment]; + } + if (self.graffitiGiftQueue.count > 0) { + [self startGraffitiGiftAnimation:self.graffitiGiftQueue.firstObject]; + } +} + +#pragma mark - 跨房PK横幅动画 +- (void)acrossRoomPKBannerAnimation:(AttachmentModel *)attacment { + AcrossRoomPKPrizeModel * prizeModel = [AcrossRoomPKPrizeModel modelWithJSON:attacment.data]; + if (attacment.second == Custom_Message_Sub_AnchorPK_Result) { + prizeModel.pkType = 1; + } else { + prizeModel.pkType = 0; + } + [self.acrossRoomPKQueue addObject:prizeModel]; + if (self.acrossRoomPKQueue.count == 1 ) {//判断为1个时开始播放,防止多条消息回来后重叠播放 + [self startAcrossRoomPKAnimation:self.acrossRoomPKQueue.firstObject]; + } +} + +- (void)startAcrossRoomPKAnimation:(AcrossRoomPKPrizeModel *)model { + XPAcrossRoomPKPrizeView *wishEffectView = [[XPAcrossRoomPKPrizeView alloc] initWithFrame:CGRectMake(KScreenWidth, kNavigationHeight+40, KScreenWidth, 87)]; + wishEffectView.data = model; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(gotoPkWinRoom:)]; + [wishEffectView addGestureRecognizer:tap]; + [self.highLevleView addSubview:wishEffectView]; + [UIView animateWithDuration:0.5 animations:^{ + wishEffectView.frame = CGRectMake(0, kNavigationHeight+40, KScreenWidth, 87); + } completion:^(BOOL finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [UIView animateWithDuration:0.5 animations:^{ + wishEffectView.hidden = YES; + } completion:^(BOOL finished) { + [wishEffectView removeFromSuperview]; + [self.acrossRoomPKQueue removeObject:model]; + if (self.acrossRoomPKQueue.count > 0) { + [self startAcrossRoomPKAnimation:self.acrossRoomPKQueue.firstObject]; + } + }]; + }); + }]; +} + +- (void)gotoPkWinRoom:(UITapGestureRecognizer *)tap { + XPAcrossRoomPKPrizeView * view = (XPAcrossRoomPKPrizeView *)tap.view; + if (view.data.winUid.length > 0) { + [self.delegate exitRoom]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [XPRoomViewController openRoom:view.data.winUid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; + }); + + } +} + +#pragma mark - 相亲 动画 +- (void)roomDatingPublicResult:(AttachmentModel *)attachment { + self.datingEffectQueue = [NSMutableArray array]; + ///心动结果公布的话 结果是一个数组 + NSArray * results = [DatingInfoModel modelsWithArray:attachment.data[@"list"]]; + [self.datingEffectQueue addObjectsFromArray:results]; + if (self.datingEffectQueue.count > 0) { + [self startDatingAnimation:self.datingEffectQueue.firstObject]; + } +} + +- (void)startDatingAnimation:(DatingInfoModel *)datingModel { + [[NSNotificationCenter defaultCenter] postNotificationName:@"message" object:[self createRoomDatingResultMessage:datingModel]]; + NSString * targetUid= [NSString stringWithFormat:@"%ld", datingModel.targetUid]; + NSString * uid= [NSString stringWithFormat:@"%ld", datingModel.uid]; + if (datingModel.hasHeart || datingModel.hasSelectUser) { + datingModel.originPoint = [self.delegate animationPointAtStageViewByUid:uid]; + datingModel.targetPoint = [self.delegate animationPointAtStageViewByUid:targetUid]; + } + XPRoomDatingAnimationView * datingView = [[XPRoomDatingAnimationView alloc] init]; + [self.highLevleView addSubview:datingView]; + [datingView startAnimationWithModel:datingModel finishBlock:^(BOOL finish) { + [datingView removeFromSuperview]; + [self.datingEffectQueue removeObject:datingModel]; + if (self.datingEffectQueue.count > 0) { + DatingInfoModel * datingModel = [self.datingEffectQueue firstObject]; + [self startDatingAnimation:datingModel]; + } + }]; +} + +- (NIMMessage *)createRoomDatingResultMessage:(DatingInfoModel *)datingModel { + NIMMessage * message = [[NIMMessage alloc] init]; + NIMSession * session = [NIMSession session:[NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId] type:NIMSessionTypeChatroom]; + [message setValue:session forKey:@"session"]; + AttachmentModel * attach = [[AttachmentModel alloc] init]; + attach.first = CustomMessageType_RoomPlay_Dating; + if (datingModel.hasHeart) {///如果是互选的话 + attach.second = Custom_Message_Sub_Room_Play_Dating_Result_Mutual; + } else { + attach.second = Custom_Message_Sub_Room_Play_Dating_Result_Not_Mutual; + } + attach.data = [datingModel model2dictionary]; + NIMCustomObject * object = [[NIMCustomObject alloc] init]; + object.attachment = attach; + message.messageObject = object; + return message; +} + +#pragma mark - 进房动画 XXX来了 +- (void)userEnterRoom:(NIMChatroomNotificationContent *)content ext:(XPMessageRemoteExtModel *)extModel { + if (extModel.experLevelSeq < 30) return; + NSString * title = [NSString stringWithFormat:YMLocalizedString(@"XPRoomAnimationView0"), content.source.nick]; + if (self.enterEffectQueue.count ==0) { + [self playUserEnterRoomAnimation:title experLevelSeq:extModel.experLevelSeq effectPath:extModel.enterRoomEffects]; + } + NSDictionary * dic= @{@"title":title, @"experLevelSeq":[NSString stringWithFormat:@"%ld", extModel.experLevelSeq], @"effectPath" : extModel.enterRoomEffects.length ? extModel.enterRoomEffects : @""}; + [self.enterEffectQueue addObject:dic]; +} + +- (void)playUserEnterRoomAnimation:(NSString *)title experLevelSeq:(NSInteger)experLevelSeq effectPath:(NSString *)effectPath { + NSString * path; + if (experLevelSeq >= 30 && experLevelSeq <= 39) { + path = @"svga_member_in_lv30"; + } else if (experLevelSeq >= 40 && experLevelSeq <= 49) { + path = @"svga_member_in_lv40"; + } else if (experLevelSeq >= 50 && experLevelSeq <= 59) { + path = @"svga_member_in_lv50"; + } else if (experLevelSeq >= 60 && experLevelSeq <= 69) { + path = @"svga_member_in_lv60"; + } else if (experLevelSeq >= 70 && experLevelSeq <= 79) { + path = @"svga_member_in_lv70"; + } else if (experLevelSeq >= 80 && experLevelSeq <= 89) { + path = @"svga_member_in_lv80"; + } else { + path = @"svga_member_in_lv90"; + } + NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/%@.svga", API_Image_URL, path]; + + if (self.enterEffectView.superview == nil) { + self.enterEffectView.frame = CGRectMake(KScreenWidth, 339 + kSafeAreaTopHeight, KScreenWidth, effectPath.length ? 75 : 40); + [self.lowLevelView addSubview:self.enterEffectView]; + } + + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:26], NSForegroundColorAttributeName:[UIColor whiteColor]}]; + [attribute setYy_alignment:NSTextAlignmentLeft]; + if (effectPath.length > 0) { + @kWeakify(self); + [self.parser parseWithURL:[NSURL URLWithString:effectPath] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { + @kStrongify(self); + self.enterEffectView.loops = 1; + self.enterEffectView.hidden = NO; + self.enterEffectView.clearsAfterStop = NO; + self.enterEffectView.alpha = 1; + self.enterEffectView.videoItem = videoItem; + [self.enterEffectView setAttributedText:attribute forKey:@"room_text"]; + [self.enterEffectView startAnimation]; + } failureBlock:^(NSError * _Nonnull error) { + }]; + } else { + @kWeakify(self); + [self.parser parseWithURL:[NSURL URLWithString:anatomiser1Name] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { + @kStrongify(self); + self.enterEffectView.loops = 1; + self.enterEffectView.hidden = NO; + self.enterEffectView.clearsAfterStop = NO; + self.enterEffectView.alpha = 1; + self.enterEffectView.videoItem = videoItem; + [self.enterEffectView setAttributedText:attribute forKey:@"room_text"]; + [self.enterEffectView startAnimation]; + } failureBlock:^(NSError * _Nonnull error) { + }]; + } + [UIView animateWithDuration:0.5 animations:^{ + self.enterEffectView.frame = CGRectMake(0, 339 + kSafeAreaTopHeight, KScreenWidth, effectPath.length ? 75 : 40); + } completion:^(BOOL finished) { + }]; +} + +///自己的隐身进房提示 +- (void)createEnterHideAnimation:(NSDictionary *)dic { + XPRoomEnterHideTipView *enterHideTipView = [[XPRoomEnterHideTipView alloc] initWithFrame:CGRectMake(KScreenWidth, (KScreenHeight - 48) * 0.5, KScreenWidth, 48)]; + [self.highLevleView addSubview:enterHideTipView]; + POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; + springAnimation.springSpeed = 12; + springAnimation.springBounciness = 10.f; + springAnimation.fromValue = [NSValue valueWithCGPoint:enterHideTipView.center]; + springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(enterHideTipView.frame.size.width / 2, enterHideTipView.center.y)]; + [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + if (finished) { + POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; + moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, enterHideTipView.center.y)]; + moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, enterHideTipView.center.y)]; + moveAnimation.beginTime = CACurrentMediaTime() + 3; + moveAnimation.duration = 0.5; + moveAnimation.repeatCount = 1; + moveAnimation.removedOnCompletion = YES; + [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + if (finished) { + [enterHideTipView removeFromSuperview]; + } + }]; + [enterHideTipView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; + } + }]; + [enterHideTipView pop_addAnimation:springAnimation forKey:@"roomEnterTipUpspingOutAnimation"]; +} + +#pragma mark - 座驾的动画 +- (void)receiveDriveCarEnterRoom:(AttachmentModel *)attatchment { + if (self.isLargeGiftAnimating) {return;} + if ([self isInSudGame]) {return;} + if (!self.delegate.getRoomInfo.hasAnimationEffect) {return;} + NSInteger otherViewType = [attatchment.data[@"otherViewType"] integerValue]; + NSString *viewUrl = attatchment.data[@"viewUrl"]; + NSString * effect = attatchment.data[@"effect"]; + if (viewUrl.length) { + NSDictionary * dic = @{@"otherViewType":@(otherViewType), @"viewUrl":viewUrl}; + if (self.carEffectQueue.count == 0) { + [self playCarEffect:dic]; + } + [self.carEffectQueue addObject:dic]; + } else if(effect.length) { + NSDictionary * dic = @{@"effect":effect}; + if (self.carEffectQueue.count == 0) { + [self playCarEffect:dic]; + } + [self.carEffectQueue addObject:dic]; + } +} + + +- (void)playCarEffect:(NSDictionary *)effectDict { + NSString *viewUrl = [effectDict objectForKey:@"viewUrl"]; + NSString *carEffect = [effectDict objectForKey:@"effect"]; + if (viewUrl.length) { + self.carVapEffectView.hidden = NO; + if (self.carVapEffectView.superview == nil) { + [self.middleLevelView addSubview:self.carVapEffectView]; + [self.carVapEffectView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self.middleLevelView); + make.width.mas_equalTo(KScreenWidth); + make.height.mas_equalTo(KScreenHeight); + }]; + } + [self.vapParser parseWithURL:viewUrl completionBlock:^(NSString * _Nullable videoUrl) { + if (videoUrl.length) { + [self.carVapEffectView setMute:YES]; + [self.carVapEffectView playHWDMP4:videoUrl repeatCount:1 delegate:self]; + } + } failureBlock:^(NSError * _Nullable error) { + + }]; + } else if (carEffect.length) { + if (self.carEffectView.superview == nil) { + [self.middleLevelView addSubview:self.carEffectView]; + [self.carEffectView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self.middleLevelView); + make.width.mas_equalTo(KScreenWidth); + make.height.mas_equalTo(KScreenHeight); + }]; + } + [self.parser parseWithURL:[NSURL URLWithString:carEffect] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { + if (videoItem != nil) { + CGFloat width = videoItem.videoSize.width; + CGFloat height = videoItem.videoSize.height; + if (width > height) { + self.carEffectView.contentMode = UIViewContentModeScaleAspectFit; + } else {//高大于宽 + CGFloat resizeH = KScreenWidth * height / width;//按照屏幕的宽度去缩放,获得高度 + if (resizeH > KScreenHeight) {//如果大于屏幕高度,填充 + self.carEffectView.contentMode = UIViewContentModeScaleAspectFill; + } else {//小于屏幕高度, + self.carEffectView.contentMode = UIViewContentModeScaleAspectFit; + } + } + self.carEffectView.hidden = NO; + self.carEffectView.alpha = 1; + self.carEffectView.loops = 1; + self.carEffectView.clearsAfterStop = YES; + self.carEffectView.videoItem = videoItem; + [self.carEffectView startAnimation]; + } + } failureBlock:^(NSError * _Nullable error) { + + }]; + } +} + +#pragma mark - 糖果树横幅动画 +- (void)receiveCandyTreeGiftHighLevle:(AttachmentModel *)attatchment { + if ([self isInSudGame]) {return;} + PIBaseAnimationViewModel *giftModel = [PIBaseAnimationViewModel new]; + giftModel.data = attatchment.data; + giftModel.second = attatchment.second; + giftModel.first = attatchment.first; + giftModel.type = GiftBannerType_Love; + if (self.animationListB.count == 0 && self.isPlayOfB == NO) { + [self createCandyTreeBannerAnimation:giftModel]; + } + [self.animationListB addObject:giftModel]; +} + +- (void)createCandyTreeBannerAnimation:(PIBaseAnimationViewModel *)attatchment { + CGFloat kscale = (CGFloat)60 / (CGFloat)375; + self.isPlayOfB = YES; + CGFloat top = self.isPlayOfA == YES ? 240 : (kNavigationHeight + 15); + XPRoomCandyGiftView *candyTreeView = [[XPRoomCandyGiftView alloc] initWithFrame:CGRectMake(KScreenWidth, top, KScreenWidth , KScreenWidth * kscale)]; + candyTreeView.isMaxLargeGift = attatchment.second == Custom_Message_Sub_Look_Love_InRoom_NeedAllMicSend; + candyTreeView.candyInfo = attatchment.data; + [self.middleLevelView addSubview:candyTreeView]; + POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; + springAnimation.springSpeed = 12; + springAnimation.springBounciness = 10.f; + springAnimation.fromValue = [NSValue valueWithCGPoint:candyTreeView.center]; + springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(candyTreeView.frame.size.width / 2, candyTreeView.center.y)]; + [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + if (finished) { + POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; + moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, candyTreeView.center.y)]; + moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, candyTreeView.center.y)]; + moveAnimation.beginTime = CACurrentMediaTime() + 3; + moveAnimation.duration = 0.5; + moveAnimation.repeatCount = 1; + moveAnimation.removedOnCompletion = YES; + @kWeakify(self); + [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + @kStrongify(self); + if (finished) { + [candyTreeView removeFromSuperview]; + self.isPlayOfB = NO; + if (self.animationListB.count > 0) { + [self.animationListB removeObjectAtIndex:0]; + } + if(self. isAnimationListAFinish == YES){ + + [self playAnimationWithModel]; + self.isAnimationListAFinish = NO; + return; + } + [self playAnimationWithModel]; + } + }]; + [candyTreeView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; + } + }]; + [candyTreeView pop_addAnimation:springAnimation forKey:@"candyTreespingOutAnimation"]; +} + +#pragma mark - 航海横幅 +- (void)receiveRoomSailing:(AttachmentModel *)attachment { + if ([self isInSudGame]) {return;} + if (self.sailingQueue.count == 0) { + [self createSailingBannerAnimation:attachment]; + } + [self.sailingQueue addObject:attachment]; +} + +- (void)createSailingBannerAnimation:(AttachmentModel *)attatchment { + CGFloat kscale = (CGFloat)60 / (CGFloat)375; + XPSailingAnimationView *sailingView = [[XPSailingAnimationView alloc] initWithFrame:CGRectMake(KScreenWidth, kNavigationHeight + 15, KScreenWidth, KScreenWidth * kscale)]; + sailingView.prizeInfo = attatchment.data; + [self.middleLevelView addSubview:sailingView]; + POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; + springAnimation.springSpeed = 12; + springAnimation.springBounciness = 10.f; + springAnimation.fromValue = [NSValue valueWithCGPoint:sailingView.center]; + springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(sailingView.frame.size.width / 2, sailingView.center.y)]; + [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + if (finished) { + POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; + moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, sailingView.center.y)]; + moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, sailingView.center.y)]; + moveAnimation.beginTime = CACurrentMediaTime() + 3; + moveAnimation.duration = 0.5; + moveAnimation.repeatCount = 1; + moveAnimation.removedOnCompletion = YES; + @kWeakify(self); + [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + @kStrongify(self); + if (finished) { + [sailingView removeFromSuperview]; + if (self.sailingQueue.count > 0) { + [self.sailingQueue removeObjectAtIndex:0]; + } + if (self.sailingQueue.count > 0) { + [self createSailingBannerAnimation:self.sailingQueue.firstObject]; + } + } + }]; + [sailingView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; + } + }]; + [sailingView pop_addAnimation:springAnimation forKey:@"candyTreespingOutAnimation"]; +} + +#pragma mark - 贵族升级 +- (void)receiveNobleLevelUp:(AttachmentModel *)attachment { + PIBaseAnimationViewModel *nobleModel = [PIBaseAnimationViewModel new]; + nobleModel.data = attachment.data; + nobleModel.type = GiftBannerType_Nobleman; + + if (self.animationListB.count == 0 && self.isPlayOfB == NO) { + [self createNobleLevelUpBannerAnimation:nobleModel]; + } + [self.animationListB addObject:nobleModel]; +} + +- (void)createNobleLevelUpBannerAnimation:(PIBaseAnimationViewModel *)model { + self.isPlayOfB = YES; + CGFloat top = self.isPlayOfA == YES ? 240 : (kNavigationHeight + 15); + + XPRoomNobleLevelUpView *nobleLevelUpView = [[XPRoomNobleLevelUpView alloc] initWithFrame:CGRectMake(KScreenWidth, top, KScreenWidth, 90)]; + nobleLevelUpView.nobleInfo = model.data; + [self.highLevleView addSubview:nobleLevelUpView]; + POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; + springAnimation.springSpeed = 12; + springAnimation.springBounciness = 10.f; + springAnimation.fromValue = [NSValue valueWithCGPoint:nobleLevelUpView.center]; + springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(nobleLevelUpView.frame.size.width / 2, nobleLevelUpView.center.y)]; + [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + if (finished) { + POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; + moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, nobleLevelUpView.center.y)]; + moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, nobleLevelUpView.center.y)]; + moveAnimation.beginTime = CACurrentMediaTime() + 3; + moveAnimation.duration = 0.5; + moveAnimation.repeatCount = 1; + moveAnimation.removedOnCompletion = YES; + @kWeakify(self); + [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + @kStrongify(self); + if (finished) { + self.isPlayOfB = NO; + [nobleLevelUpView removeFromSuperview]; + if (self.animationListB > 0) { + [self.animationListB removeObjectAtIndex:0]; + } + if(self.isAnimationListAFinish == YES){ + + [self playAnimationWithModel]; + self.isAnimationListAFinish = NO; + return; + } + [self playAnimationWithModel]; + } + }]; + [nobleLevelUpView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; + } + }]; + [nobleLevelUpView pop_addAnimation:springAnimation forKey:@"nobleLevelUpspingOutAnimation"]; +} + +#pragma mark - 魔法小屋礼物合成 +- (void)receiveGiftCompound:(AttachmentModel *)attachment { + if ([self isInSudGame]) {return;} + if (self.compoundGiftQueue.count == 0) { + [self createGiftCompoundBannerAnimation:attachment]; + } + [self.compoundGiftQueue addObject:attachment]; +} + +- (void)createGiftCompoundBannerAnimation:(AttachmentModel *)attachment { + XPRoomGiftCompoundView *compoundGiftView = [[XPRoomGiftCompoundView alloc] initWithFrame:CGRectMake(KScreenWidth, kNavigationHeight + 15, KScreenWidth, 45)]; + compoundGiftView.compoundGiftInfo = attachment.data; + [self.middleLevelView addSubview:compoundGiftView]; + POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; + springAnimation.springSpeed = 12; + springAnimation.springBounciness = 10.f; + springAnimation.fromValue = [NSValue valueWithCGPoint:compoundGiftView.center]; + springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(compoundGiftView.frame.size.width / 2, compoundGiftView.center.y)]; + [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + if (finished) { + POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; + moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, compoundGiftView.center.y)]; + moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, compoundGiftView.center.y)]; + moveAnimation.beginTime = CACurrentMediaTime() + 3; + moveAnimation.duration = 0.5; + moveAnimation.repeatCount = 1; + moveAnimation.removedOnCompletion = YES; + @kWeakify(self); + [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + @kStrongify(self); + if (finished) { + [compoundGiftView removeFromSuperview]; + if (self.compoundGiftQueue.count > 0) { + [self.compoundGiftQueue removeObjectAtIndex:0]; + } + + if (self.compoundGiftQueue.count > 0) { + [self createGiftCompoundBannerAnimation:self.compoundGiftQueue.firstObject]; + } + } + }]; + [compoundGiftView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; + } + }]; + [compoundGiftView pop_addAnimation:springAnimation forKey:@"compoundGiftSpingOutAnimation"]; +} + +#pragma mark - 牌照房小时榜飘屏 +- (void)receiveLicneseHourRank:(AttachmentModel *)attachment { + PIBaseAnimationViewModel *licneseModel =[PIBaseAnimationViewModel new]; + licneseModel.data = attachment.data; + licneseModel.type = GiftBannerType_AnchorHour; + if(self.animationListB.count == 0 && self.isPlayOfB == NO){ + [self createLicneseHourRankAnimation:licneseModel]; + } + [self.animationListB addObject:licneseModel]; +} +- (void)createLicneseHourRankAnimation:(PIBaseAnimationViewModel *)attachment { + self.isPlayOfB = YES; + CGFloat top = self.isPlayOfA == YES ? 240 : (kNavigationHeight + 15); + XPRoomLicneseHourRankView *anchorRankView = [[XPRoomLicneseHourRankView alloc] initWithFrame:CGRectMake(KScreenWidth, top, 375, 60)]; + anchorRankView.delegate = self; + anchorRankView.licneseRankInfo = [RoomHalfHourRankModel modelWithDictionary:attachment.data]; + [self.highLevleView addSubview:anchorRankView]; + POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; + springAnimation.springSpeed = 12; + springAnimation.springBounciness = 10.f; + springAnimation.fromValue = [NSValue valueWithCGPoint:anchorRankView.center]; + springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(KScreenWidth / 2, anchorRankView.center.y)]; + [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + if (finished) { + POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; + moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(KScreenWidth / 2, anchorRankView.center.y)]; + moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth, anchorRankView.center.y)]; + moveAnimation.beginTime = CACurrentMediaTime() + 3; + moveAnimation.duration = 0.5; + moveAnimation.repeatCount = 1; + moveAnimation.removedOnCompletion = YES; + [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + [anchorRankView removeFromSuperview]; + self.isPlayOfB = NO; + + if(self.animationListB.count > 0){ + [self.animationListB removeObjectAtIndex:0]; + } + if(self.isAnimationListAFinish == YES){ + self.isAnimationListAFinish = NO; + [self playAnimationWithModel]; + return; + } + [self playAnimationWithModel]; + }]; + [anchorRankView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; + } + }]; + [anchorRankView pop_addAnimation:springAnimation forKey:@"nobleLevelUpspingOutAnimation"]; +} +- (void)xPRoomLicneseHourRankView:(XPRoomLicneseHourRankView *)view rankInfo:(RoomHalfHourRankModel *)rankInfo { + if (rankInfo.uid.integerValue > 0 && self.delegate.getRoomInfo.uid != rankInfo.uid.integerValue) { + [self.delegate exitRoom]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [XPRoomViewController openRoom:rankInfo.uid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; + }); + } +} + +#pragma mark - 个播小时榜飘屏 +- (void)receiveAnchorHourRank:(AttachmentModel *)attachment { + PIBaseAnimationViewModel *anchorModel =[PIBaseAnimationViewModel new]; + anchorModel.data = attachment.data; + anchorModel.type = GiftBannerType_AnchorHour; + if(self.animationListB.count == 0 && self.isPlayOfB == NO){ + [self createAnchorHourRankAnimation:anchorModel]; + } + [self.animationListB addObject:anchorModel]; +} +- (void)createAnchorHourRankAnimation:(PIBaseAnimationViewModel *)attachment { + self.isPlayOfB = YES; + CGFloat top = self.isPlayOfA == YES ? 240 : (kNavigationHeight + 15); + XPRoomAnchorRankBannerView *anchorRankView = [[XPRoomAnchorRankBannerView alloc] initWithFrame:CGRectMake(KScreenWidth,top, KScreenWidth, 60)]; + anchorRankView.anchorRankInfo = [RoomHalfHourRankModel modelWithDictionary:attachment.data]; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(gotoTopRankAnchorRoom:)]; + [anchorRankView addGestureRecognizer:tap]; + [self.highLevleView addSubview:anchorRankView]; + POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; + springAnimation.springSpeed = 12; + springAnimation.springBounciness = 10.f; + springAnimation.fromValue = [NSValue valueWithCGPoint:anchorRankView.center]; + springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(anchorRankView.frame.size.width / 2, anchorRankView.center.y)]; + [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + if (finished) { + POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; + moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, anchorRankView.center.y)]; + moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, anchorRankView.center.y)]; + moveAnimation.beginTime = CACurrentMediaTime() + 3; + moveAnimation.duration = 0.5; + moveAnimation.repeatCount = 1; + moveAnimation.removedOnCompletion = YES; + [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + [anchorRankView removeFromSuperview]; + self.isPlayOfB = NO; + if(self.animationListB.count > 0){ + [self.animationListB removeObjectAtIndex:0]; + } + if(self.isAnimationListAFinish == YES){ + self.isAnimationListAFinish = NO; + [self playAnimationWithModel]; + return; + } + [self playAnimationWithModel]; + }]; + [anchorRankView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; + } + }]; + [anchorRankView pop_addAnimation:springAnimation forKey:@"nobleLevelUpspingOutAnimation"]; +} +- (void)gotoTopRankAnchorRoom:(UITapGestureRecognizer *)tap { + XPRoomAnchorRankBannerView * view = (XPRoomAnchorRankBannerView *)tap.view; + if (view.anchorRankInfo.uid.integerValue > 0) { + [self.delegate exitRoom]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [XPRoomViewController openRoom:view.anchorRankInfo.uid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; + }); + } +} + +#pragma mark - 展示加入粉丝团送礼动画 +- (void)receiveFansTeamGiftHandleSendGiftAnimation:(AttachmentModel *)attachment { + if ([self isInSudGame]) {return;} + if (!self.delegate.getRoomInfo.hasAnimationEffect) {return;} + GiftReceiveInfoModel *receiveInfo = [[GiftReceiveInfoModel alloc] init]; + GiftInfoModel *gift = [GiftInfoModel modelWithJSON:attachment.data[@"giftVo"]]; + receiveInfo.gift = gift; + receiveInfo.giftInfo = gift; + receiveInfo.targetUid = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.uid]; + GiftInfoModel * giftInfo = receiveInfo.gift ? receiveInfo.gift : receiveInfo.giftInfo; + if (attachment.second == Custom_Message_Sub_AllMicroLuckySend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend || attachment.second == Custom_Message_Sub_Gift_LuckySend) { + NSString * giftId = [NSString stringWithFormat:@"%ld", receiveInfo.luckyGiftList.giftList.firstObject.giftId]; + giftInfo = [[XPGiftStorage shareStorage] findGiftInfo:giftId]; + } + if (giftInfo == nil) { + giftInfo = [[XPGiftStorage shareStorage] findGiftInfo:receiveInfo.giftId]; + } + + ///在最外面判断是否可以拿到那个礼物 后面使用就不用判断了 + receiveInfo.gift = giftInfo; + receiveInfo.isLuckyBagGift = (attachment.second == Custom_Message_Sub_AllMicroLuckySend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend || attachment.second == Custom_Message_Sub_Gift_LuckySend); + [self.giftQueue addObject:receiveInfo]; + if (self.giftTimer == nil && self.giftQueue > 0) { + [self startGiftQueueTimer]; + } +} + +#pragma mark - 收到礼物展示动画 +- (void)receiveGiftHandleSendGiftAnimation:(AttachmentModel *)attachment { + if ([self isInSudGame]) {return;} + if (!self.delegate.getRoomInfo.hasAnimationEffect) {return;} + GiftReceiveInfoModel * receiveInfo = [GiftReceiveInfoModel modelWithJSON:attachment.data]; + GiftInfoModel * giftInfo = receiveInfo.gift ? receiveInfo.gift : receiveInfo.giftInfo; + if (attachment.second == Custom_Message_Sub_AllMicroLuckySend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend || attachment.second == Custom_Message_Sub_Gift_LuckySend) { + NSString * giftId = [NSString stringWithFormat:@"%ld", receiveInfo.luckyGiftList.giftList.firstObject.giftId]; + giftInfo = [[XPGiftStorage shareStorage] findGiftInfo:giftId]; + } + if (giftInfo == nil) { + giftInfo = [[XPGiftStorage shareStorage] findGiftInfo:receiveInfo.giftId]; + } + + ///在最外面判断是否可以拿到那个礼物 后面使用就不用判断了 + receiveInfo.gift = giftInfo; + receiveInfo.isLuckyBagGift = (attachment.second == Custom_Message_Sub_AllMicroLuckySend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend || attachment.second == Custom_Message_Sub_Gift_LuckySend); + [self.giftQueue addObject:receiveInfo]; + if (self.giftTimer == nil && self.giftQueue > 0) { + [self startGiftQueueTimer]; + } +} + +//扫描礼物队列 +- (void)startGiftQueueTimer { + NSTimeInterval period = 0.5; //设置时间间隔一个礼物动画的时间 + dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(0, 0)); + dispatch_source_set_timer(_timer, DISPATCH_TIME_NOW, period * NSEC_PER_SEC, 0 * NSEC_PER_SEC); + dispatch_source_set_event_handler(_timer, ^{ + dispatch_async(dispatch_get_main_queue(), ^{ + if (self.giftQueue.count) { + GiftReceiveInfoModel * receiveInfo = self.giftQueue.firstObject; + [self handoutGiftDistributeAnimation:receiveInfo]; + [self.giftQueue removeObject:receiveInfo]; + }else { + dispatch_source_cancel(_timer); + self.giftTimer = nil; + } + }); + }); + dispatch_resume(_timer); + self.giftTimer = _timer; +} + +///处理礼物的分发动画 +- (void)handoutGiftDistributeAnimation:(GiftReceiveInfoModel *)receiveInfo { + GiftInfoModel * giftInfo = receiveInfo.gift; + NSString * sendUid = receiveInfo.uid; + CGPoint starPoint = [self getGiftAnimationPoint:sendUid isEnd:NO]; + CGPoint endPoint; + NSArray * targetUids; + if (receiveInfo.isLuckyBagGift) { + targetUids = @[receiveInfo.targetUid]; + } else { + targetUids = receiveInfo.targetUids; + if (targetUids.count <= 0) { + targetUids = [receiveInfo.targetUsers valueForKeyPath:@"uid"]; + if (targetUids.count <=0) { + targetUids = @[receiveInfo.targetUid]; + } + } + } + + for (NSString *targetUid in targetUids) { + NSString * userId = targetUid; + if ([userId isKindOfClass:[NSNumber class]]) { + userId = ((NSNumber *)userId).stringValue; + } + endPoint = [self getGiftAnimationPoint:userId isEnd:YES]; + dispatch_time_t timer = dispatch_time(DISPATCH_TIME_NOW, 0.5 * NSEC_PER_SEC); + dispatch_after(timer, dispatch_get_main_queue(), ^{ + [self beginGiftAnimation:giftInfo.giftUrl startPoint:starPoint endPoint:endPoint]; + }); + } +} + +///起点 +- (CGPoint)getGiftAnimationPoint:(NSString *)uid isEnd:(BOOL)isEnd{ + CGPoint point = [self.delegate animationPointAtStageViewByUid:uid]; + //没有找到那个点 那个用户不再坑位上 + if (point.x <= 0 || point.y <= 0) { + if (isEnd) { + point = CGPointMake([UIScreen mainScreen].bounds.size.width /2 + 30, 44 + kSafeAreaTopHeight); + } else { + point = CGPointMake([UIScreen mainScreen].bounds.size.width / 2, 44 + kSafeAreaTopHeight); + } + } + return point; +} + +- (void)beginGiftAnimation:(NSString *)giftUrl startPoint:(CGPoint)startPoint endPoint:(CGPoint)endPoint { + NetImageView * giftImageView = [self.giftReuseArray anyObject]; + if (giftImageView == nil) { + giftImageView = [[NetImageView alloc]initWithFrame:CGRectMake(0, 0 , 55, 55)]; + giftImageView.center = startPoint; + giftImageView.alpha = 1; + giftImageView.layer.anchorPoint = CGPointMake(0.5, 0.5); + giftImageView.imageUrl = giftUrl; + [self.giftVisibleArray addObject:giftImageView]; + }else { + [self.giftReuseArray removeObject:giftImageView]; + } + giftImageView.hidden = NO; + giftImageView.imageUrl = giftUrl; + [self.lowLevelView addSubview:giftImageView]; + CAAnimationGroup *group = [self createGiftAnimationStartPoint:startPoint endPoint:endPoint]; + [giftImageView.layer addAnimation:group forKey:@"giftDisplayViewAnimation"]; + [self performSelector:@selector(aniationDidFinish:) withObject:giftImageView afterDelay:(3.2+0.25)]; +} + +/// 图片运动的动画组 +/// @param startPoint 开始的点 +/// @param endPoint 结束的点 +- (CAAnimationGroup *)createGiftAnimationStartPoint:(CGPoint)startPoint endPoint:(CGPoint)endPoint{ + CGPoint centerPoint = CGPointMake(KScreenWidth / 2, KScreenHeight / 2); + CAKeyframeAnimation *animation0 = [CAKeyframeAnimation animation]; + animation0.duration = 0.8; + animation0.keyPath = @"transform.scale"; + animation0.values = @[@1.0,@1.5,@2.0,@1.5]; + animation0.repeatCount = 1; + animation0.calculationMode = kCAAnimationCubic; + animation0.removedOnCompletion = NO; + animation0.fillMode = kCAFillModeForwards; + + CAKeyframeAnimation *animation1 = [CAKeyframeAnimation animation]; + animation1.duration = 0.8; + animation1.beginTime = 0.8; + animation1.keyPath = @"transform.scale"; + animation1.values = @[@1.5,@2.0,@2.5,@3.0]; + animation1.repeatCount = 1; + animation1.calculationMode = kCAAnimationCubic; + animation1.removedOnCompletion = NO; + animation1.fillMode = kCAFillModeForwards; + + + CAKeyframeAnimation *animation2 = [CAKeyframeAnimation animation]; + animation2.duration = 0.8; + animation2.beginTime = 0.8; + animation2.keyPath = @"position"; + animation2.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];; + animation2.values = @[[NSValue valueWithCGPoint:startPoint],[NSValue valueWithCGPoint:CGPointMake(centerPoint.x ,centerPoint.y)]]; + animation2.repeatCount = 1; + animation2.removedOnCompletion = NO; + animation2.fillMode = kCAFillModeForwards; + + CAKeyframeAnimation *animation3 = [CAKeyframeAnimation animation]; + animation3.duration = 0.8; + animation3.beginTime = 2.6;//0.8+0.8+1 + animation3.keyPath = @"transform.scale"; + animation3.values = @[@3,@2.5,@2,@1.5,@1]; + animation3.repeatCount = 1; + + CAKeyframeAnimation *animation4 = [CAKeyframeAnimation animation]; + animation4.duration = 0.8; + animation4.beginTime = 2.6; + animation4.keyPath = @"position"; + animation4.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; + animation4.values = @[[NSValue valueWithCGPoint:CGPointMake(centerPoint.x ,centerPoint.y)],[NSValue valueWithCGPoint:endPoint]]; + animation4.repeatCount = 1; + + CAAnimationGroup *group = [CAAnimationGroup animation]; + group.duration = 3.2; + group.animations = @[animation0,animation1,animation2, animation3,animation4]; + group.repeatCount = 1; + group.removedOnCompletion = NO; + group.fillMode = kCAFillModeForwards; + + return group; +} + +- (void)aniationDidFinish:(NetImageView *)giftImageView{ + [giftImageView removeFromSuperview]; + giftImageView.image = nil; + giftImageView.hidden = YES; + [self.giftVisibleArray removeObject:giftImageView]; + [self.giftReuseArray addObject:giftImageView]; +} + +#pragma mark - 全服礼物 飘屏 +- (void)receiveBroadcastGift:(AttachmentModel *)attachment { + if ([self isInSudGame]) {return;} + GiftReceiveInfoModel *giftNotifyInfo = [GiftReceiveInfoModel modelWithJSON:attachment.data]; + ///年度飘屏是广播 在tabbar中监听 + if (giftNotifyInfo.ceremonyGift)return; + if(giftNotifyInfo.isHomeShow == YES)return; ///房间外飘屏 在tabbar中监听 + if(giftNotifyInfo.roomUid == self.delegate.getRoomInfo.uid)return; ///自己的房间跨房间飘屏不用走 + if (self.animationListA.count == 0 && self.isPlayOfB == NO && self.isPlayOfA == NO) { + [self createGiftBroadcastViewAnimation:giftNotifyInfo]; + } + [self.animationListA addObject:giftNotifyInfo]; +} + +- (void)createGiftBroadcastViewAnimation:(GiftReceiveInfoModel *)giftModel { + self.isPlayOfA = YES; + XPRoomGiftBroadcastView * view = [[XPRoomGiftBroadcastView alloc] init]; + view.delegate = self; + view.frame = CGRectMake(KScreenWidth, 35 + statusbarHeight, KScreenWidth, 150); + view.broadcastModel = giftModel; + [self.highLevleView addSubview:view]; + [self beginGiftBraodcastViewAnimation:view notifyStaySecond:giftModel.notifyStaySecond]; +} + +- (void)beginGiftBraodcastViewAnimation:(XPRoomGiftBroadcastView *)view notifyStaySecond:(int)notifyStaySecond{ + CGFloat startTime = notifyStaySecond > 0 ? notifyStaySecond : 3.0; + POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; + springAnimation.springSpeed = 12; + springAnimation.springBounciness = 10.f; + springAnimation.fromValue = [NSValue valueWithCGPoint:view.center]; + springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(0 + view.frame.size.width / 2, view.center.y)]; + [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + if (finished) { + [self removeGiftBroadcastOutAnimation:view stayTime:startTime]; + } + }]; + [view pop_addAnimation:springAnimation forKey:@"spingOutAnimation"]; +} + +- (void)removeGiftBroadcastOutAnimation:(XPRoomGiftBroadcastView *)view stayTime:(CGFloat)stayTime{ + POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; + moveAnimation.fromValue = [NSValue valueWithCGPoint:view.center]; + moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, view.center.y)]; + moveAnimation.beginTime = CACurrentMediaTime() + stayTime; + moveAnimation.duration = 0.5; + moveAnimation.repeatCount = 1; + moveAnimation.removedOnCompletion = YES; + @kWeakify(self); + [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + @kStrongify(self); + if (finished) { + [view removeFromSuperview]; + self.isPlayOfA = NO; + if (self.animationListA.count > 0) { + [self.animationListA removeObjectAtIndex:0]; + } + if (self.animationListA.count > 0 && self.isPlayOfB == NO && self.isPlayOfA == NO) { + [self createGiftBroadcastViewAnimation:self.animationListA.firstObject]; + } + } + }]; + + [view pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; +} + +#pragma mark - XPRoomGiftBroadcastViewDelegate +- (void)xPRoomGiftBroadcastView:(XPRoomGiftBroadcastView *)view enterRoom:(NSString *)roomUid { + if (roomUid.length > 0 && self.delegate.getRoomInfo.uid != roomUid.integerValue) { + [self.delegate exitRoom]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.7 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [XPRoomViewController openRoom:roomUid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; + }); + } +} + +- (void)xPRoomGiftBroadcastView:(XPRoomGiftBroadcastView *)view didClickClose:(GiftReceiveInfoModel *)broadcastModel { + [view removeFromSuperview]; + [view pop_removeAllAnimations]; + self.isPlayOfA = NO; + if (self.animationListA.count > 0) { + [self.animationListA removeObjectAtIndex:0]; + } + if (self.animationListA.count > 0 && self.isPlayOfB == NO && self.isPlayOfA == NO) { + [self createGiftBroadcastViewAnimation:self.animationListA.firstObject]; + } +} + +#pragma mark - 福袋中 四级奖品 +- (void)receiveLuckyGiftBigPrize:(AttachmentModel *)attachment { + if ([self isInSudGame]) {return;} + if (attachment.second == Custom_Message_Sub_Room_Gift_LuckBag || attachment.second == Custom_Message_Sub_Room_Gift_LuckBag_Server) { + PIBaseAnimationViewModel * prizeModel = [PIBaseAnimationViewModel modelWithDictionary:attachment.data]; + prizeModel.type = GiftBannerType_Lucky; + prizeModel.isInRoomVisiable = attachment.second == Custom_Message_Sub_Room_Gift_LuckBag; + + if(self.animationListB.count == 0 && self.isPlayOfB == NO){ + [self createBigPrizeAnimation:prizeModel]; + } + [self.animationListB addObject:prizeModel]; + + } +} + + + +- (void)createBigPrizeAnimation:(PIBaseAnimationViewModel *)prizeModel { + + self.isPlayOfB = YES; + CGFloat top = self.isPlayOfA == YES ? 240 : (kNavigationHeight + 15); + + + self.isLuckyGiftAnimation = YES; + XPRoomLuckyBigPrizeView * luckyGiftEffectView = [[XPRoomLuckyBigPrizeView alloc] initWithFrame:CGRectMake(KScreenWidth, top, 375, 60)]; + luckyGiftEffectView.delegate = self; + [self.highLevleView addSubview:luckyGiftEffectView]; + + luckyGiftEffectView.giftInfo = prizeModel; + + POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; + springAnimation.springSpeed = 12; + springAnimation.springBounciness = 10.f; + springAnimation.fromValue = [NSValue valueWithCGPoint:luckyGiftEffectView.center]; + springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(KScreenWidth / 2, luckyGiftEffectView.center.y)]; + [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + if (finished) { + POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; + moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(KScreenWidth / 2, luckyGiftEffectView.center.y)]; + moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth, luckyGiftEffectView.center.y)]; + moveAnimation.beginTime = CACurrentMediaTime() + 3; + moveAnimation.duration = 0.5; + moveAnimation.repeatCount = 1; + moveAnimation.removedOnCompletion = YES; + [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + [luckyGiftEffectView removeFromSuperview]; + if (self.animationListB.count > 0) { + [self.animationListB removeObjectAtIndex:0]; + } + self.isPlayOfB = NO; + if(self.isAnimationListAFinish == YES){ + self.isAnimationListAFinish = NO; + [self playAnimationWithModel]; + return; + } + [self playAnimationWithModel]; + + }]; + [luckyGiftEffectView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; + } + }]; + [luckyGiftEffectView pop_addAnimation:springAnimation forKey:@"nobleLevelUpspingOutAnimation"]; +} +-(void)playAnimationACompletion{ + PIBaseAnimationViewModel *model = self.animationListB.firstObject; + if(model.type == GiftBannerType_Lucky){ + [self createBigPrizeAnimation:model]; + }else if (model.type == GiftBannerType_Love){ + [self createCandyTreeBannerAnimation:model]; + }else if(model.type == GiftBannerType_Nobleman){ + [self createNobleLevelUpBannerAnimation:model]; + }else if(model.type == GiftBannerType_kitchen){ + [self createStarKitchenBannerAnimation:model]; + }else if(model.type == GiftBannerType_AnchorHour){ + [self createAnchorHourRankAnimation:model]; + }else if(model.type == GiftBannerType_LicneseHour){ + [self createLicneseHourRankAnimation:model]; + } +} + +-(void)playAnimationWithModel{ + if(self.isAnimationListAFinish == YES)return; + if(self.animationListB.count <= 0){ + if(self.animationListA.count > 0 && self.isPlayOfB == NO && self.isPlayOfA == NO){ + [self createGiftBannerViewAnimation:self.animationListA.firstObject]; + } + return; + } + if(self.isPlayOfB == YES)return; + PIBaseAnimationViewModel *model = self.animationListB.firstObject; + if(model.type == GiftBannerType_Lucky){ + [self createBigPrizeAnimation:model]; + }else if (model.type == GiftBannerType_Love){ + [self createCandyTreeBannerAnimation:model]; + }else if(model.type == GiftBannerType_Nobleman){ + [self createNobleLevelUpBannerAnimation:model]; + }else if(model.type == GiftBannerType_kitchen){ + [self createStarKitchenBannerAnimation:model]; + }else if(model.type == GiftBannerType_AnchorHour){ + [self createAnchorHourRankAnimation:model]; + }else if(model.type == GiftBannerType_LicneseHour){ + [self createLicneseHourRankAnimation:model]; + } +} + + +#pragma mark - XPRoomLuckyBigPrizeViewDelegate +- (void)xPRoomLuckyBigPrizeView:(XPRoomLuckyBigPrizeView *)view luckyGiftInfo:(PIBaseAnimationViewModel *)giftInfo { + if (!giftInfo.isInRoomVisiable && giftInfo.roomUid.length > 0 && giftInfo.roomUid.integerValue != self.delegate.getRoomInfo.uid) { + [self.delegate exitRoom]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [XPRoomViewController openRoom:giftInfo.roomUid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; + }); + } +} + +#pragma mark - 普通礼物 +///收到了礼物 +- (void)receiveGift:(GiftReceiveInfoModel *)receiveInfo { + if ([self isInSudGame]) {return;} + if(receiveInfo.isHomeShow == YES)return; + ///CPU警告的时候 需要停止接收动画 + RoomInfoModel * roomInfor = [self.delegate getRoomInfo]; + if (receiveInfo.isLuckyBagGift) { + if (receiveInfo.isShowAnimation) { + //如果是福袋礼物的话 就不用看他的价值了 只要有SVGA的话 就播放 + if (receiveInfo.displayGift.count > 0) { + [receiveInfo.displayGift enumerateObjectsUsingBlock:^(GiftInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.otherViewType == GiftOtherViewTypeMp4 && obj.viewUrl && obj.viewUrl.length > 0 && roomInfor.hasAnimationEffect) { + GiftReceiveInfoModel * model = [[GiftReceiveInfoModel alloc] init]; + model.viewUrl = obj.viewUrl; + [self.animationListA addObject:model]; + } else if (obj.hasVggPic && roomInfor.hasAnimationEffect) { + GiftReceiveInfoModel * model = [[GiftReceiveInfoModel alloc] init]; + model.vggUrl = obj.vggUrl; + [self.animationListA addObject:model]; + } + }]; + } + } else { + + } + } else { + GiftInfoModel *giftInfo = receiveInfo.gift != nil ? receiveInfo.gift : receiveInfo.giftInfo; + if (!giftInfo) { + giftInfo = [[XPGiftStorage shareStorage] findGiftInfo: receiveInfo.giftId]; + } + ///重新赋值一下 用的时候不用在查找了 真的没有的话 那就没有那个礼物了 + if (giftInfo) { + receiveInfo.gift = giftInfo; + } + if (receiveInfo.targetUsers.count > 0 && receiveInfo.targetUids.count <= 0) { + receiveInfo.targetUids = [receiveInfo.targetUsers valueForKeyPath:@"uid"]; + } + + NSInteger giftTotal = 0; + if (receiveInfo.targetUids.count > 0) { + giftTotal = receiveInfo.giftNum * giftInfo.goldPrice * receiveInfo.targetUids.count; + } else { + giftTotal = receiveInfo.giftNum * giftInfo.goldPrice; + } + + if (giftInfo.otherViewType == GiftOtherViewTypeMp4 && giftInfo.viewUrl.length > 0 && roomInfor.hasAnimationEffect) { + receiveInfo.viewUrl = giftInfo.viewUrl; + [self.animationListA addObject:receiveInfo]; + } else if (giftInfo.hasVggPic && giftInfo.vggUrl.length > 0 && roomInfor.hasAnimationEffect) {///SVGA动画 + receiveInfo.vggUrl = giftInfo.vggUrl; + [self.animationListA addObject:receiveInfo]; + } + } + + if (self.animationListA.count > 0 && self.isPlayOfB == NO && self.isPlayOfA == NO) { + [self createGiftBannerViewAnimation:self.animationListA.firstObject]; + } +} + + + +- (void)createGiftBannerViewAnimation:(GiftReceiveInfoModel *)receiveInfo { + GiftInfoModel *giftInfo = receiveInfo.gift != nil ? receiveInfo.gift : receiveInfo.giftInfo; + if (!giftInfo) { + giftInfo = [[XPGiftStorage shareStorage] findGiftInfo: receiveInfo.giftId]; + } + NSInteger giftTotal = 0; + if (receiveInfo.targetUids.count > 0) { + giftTotal = receiveInfo.giftNum * giftInfo.goldPrice * receiveInfo.targetUids.count; + } else { + giftTotal = receiveInfo.giftNum * giftInfo.goldPrice; + } + if (giftTotal >= 520) { + self.isPlayOfA = YES; + __block XPRoomGiftBannerView *view = [self.bannerDequePool anyObject]; + if (view == nil) { + view = [[XPRoomGiftBannerView alloc] init]; + [self.bannerVisiablePool addObject:view]; + }else{ + [self.bannerDequePool removeObject:view]; + } + [self removeGiftBannerView:view]; + [view configGiftBanner:receiveInfo users:[self makeBannerUsers]]; + view.frame = CGRectMake(KScreenWidth, 100, KScreenWidth, 153); + [self.highLevleView addSubview:view]; + POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; + springAnimation.springSpeed = 12; + springAnimation.springBounciness = 10.f; + springAnimation.fromValue = [NSValue valueWithCGPoint:view.center]; + springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(view.frame.size.width / 2, view.center.y)]; + @kWeakify(self); + [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + @kStrongify(self); + if (finished) { + [self removeAnimation:view]; + } + }]; + + [springAnimation setAnimationDidStartBlock:^(POPAnimation *anim) { + @kStrongify(self); + + if (giftInfo.otherViewType == GiftOtherViewTypeMp4 && giftInfo.viewUrl.length > 0 && [self.delegate getRoomInfo].hasAnimationEffect) { + [self largeGiftStopCarEffect:giftInfo.goldPrice]; + [self playGiftEffectWithVapUrl:giftInfo.viewUrl]; + } + if (giftInfo.hasVggPic && giftInfo.vggUrl.length > 0 && [self.delegate getRoomInfo].hasAnimationEffect) { + [self largeGiftStopCarEffect:giftInfo.goldPrice]; + [self playGiftEffect:giftInfo.vggUrl]; + } + }]; + + [view pop_addAnimation:springAnimation forKey:@"spingOutAnimation"]; + } else { + + if (giftInfo.otherViewType == GiftOtherViewTypeMp4 && receiveInfo.viewUrl.length > 0) {//播放vap动效 + [self largeGiftStopCarEffect:giftInfo.goldPrice]; + [self playGiftEffectWithVapUrl:receiveInfo.viewUrl]; + } + if (receiveInfo.vggUrl.length > 0) {///如果有特效的话就播放特效 + [self largeGiftStopCarEffect:giftInfo.goldPrice]; + [self playGiftEffect:receiveInfo.vggUrl]; + } + [self.animationListA removeObjectAtIndex:0]; + } +} + +- (void)largeGiftStopCarEffect:(double)goldPrice { + if ([ClientConfig shareConfig].configInfo.hideCarEffectGiftPrice <= goldPrice) { + self.isLargeGiftAnimating = YES; + [self.carEffectView stopAnimation]; + [self.carVapEffectView stopHWDMP4]; + [self.carEffectQueue removeAllObjects]; + } +} + +//移除特效动画 +- (void)removeAnimation:(XPRoomGiftBannerView *)view{ + POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; + moveAnimation.fromValue = [NSValue valueWithCGPoint:view.center]; + moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(view.center.x - KScreenWidth, view.center.y)]; + moveAnimation.beginTime = CACurrentMediaTime() +5; + moveAnimation.duration = 0.5; + moveAnimation.repeatCount = 1; + moveAnimation.removedOnCompletion = YES; + moveAnimation.completionBlock = ^(POPAnimation *anim, BOOL finished) { + if(finished){ + [view removeFromSuperview]; + self.isPlayOfA = NO; + if(self.animationListA.count > 0){ + [self.animationListA removeObjectAtIndex:0]; + } + if(self.animationListB.count > 0){ + self.isAnimationListAFinish = YES; + [self playAnimationACompletion]; + return; + } + if(self.animationListA.count > 0 && self.isPlayOfB == NO && self.isPlayOfA == NO){ + [self createGiftBannerViewAnimation:self.animationListA.firstObject]; + } + } + } ; + [view pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; +} + +- (NSArray *)makeBannerUsers { + NSArray * microArray = [self.delegate getMicroQueue].allValues; + NSMutableArray * array = [NSMutableArray array]; + [microArray enumerateObjectsUsingBlock:^(MicroQueueModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + XPGiftBannerUserInfoModel * bannserUser = [[XPGiftBannerUserInfoModel alloc] init]; + bannserUser.position = obj.microState.position; + bannserUser.uid = obj.userInfo.uid; + [array addObject:bannserUser]; + }]; + return array; +} + + +///播放礼物特效 SVGA的 +- (void)playGiftEffect:(NSString *)vggUrl { + if ([self isInSudGame]) {return;} + self.giftEffectView.hidden = NO; + if (self.giftEffectView.superview == nil) { + [self.middleLevelView addSubview:self.giftEffectView]; + [self.giftEffectView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self.middleLevelView); + make.width.mas_equalTo(KScreenWidth); + make.height.mas_equalTo(KScreenHeight); + }]; + } + [self.parser parseWithURL:[NSURL URLWithString:vggUrl] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { + if (videoItem != nil) { + CGFloat width = videoItem.videoSize.width; + CGFloat height = videoItem.videoSize.height; + if (width > height) { + self.giftEffectView.contentMode = UIViewContentModeScaleAspectFit; + } else {//高大于宽 + CGFloat resizeH = KScreenWidth * height / width;//按照屏幕的宽度去缩放,获得高度 + if (resizeH > KScreenHeight) {//如果大于屏幕高度,填充 + self.giftEffectView.contentMode = UIViewContentModeScaleAspectFill; + } else {//小于屏幕高度, + self.giftEffectView.contentMode = UIViewContentModeScaleAspectFit; + } + } + self.giftEffectView.alpha = 1; + self.giftEffectView.loops = 1; + self.giftEffectView.clearsAfterStop = YES; + self.giftEffectView.videoItem = videoItem; + [self.giftEffectView startAnimation]; + } + } failureBlock:^(NSError * _Nullable error) { + self.giftEffectView.hidden = YES; + }]; +} + +///播放礼物特效 vap的 +- (void)playGiftEffectWithVapUrl:(NSString *)vapUrl { + self.vapGiftEffectView.hidden = NO; + if (self.vapGiftEffectView.superview == nil) { + [self.middleLevelView addSubview:self.vapGiftEffectView]; + [self.vapGiftEffectView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self.middleLevelView); + make.width.mas_equalTo(KScreenWidth); + make.height.mas_equalTo(KScreenHeight); + }]; + } + [self.vapParser parseWithURL:vapUrl completionBlock:^(NSString * _Nullable videoUrl) { + if (videoUrl.length) { + [self.vapGiftEffectView setMute:YES]; + [self.vapGiftEffectView playHWDMP4:videoUrl repeatCount:1 delegate:self]; + } + } failureBlock:^(NSError * _Nullable error) { + self.vapGiftEffectView.hidden = YES; + }]; +} + +///播放礼物特效 SVGA的 +- (void)playLuckyGiftEffect:(NSURL *)vggUrl { + if ([self isInSudGame]) {return;} + self.luckyGiftEffectView.hidden = NO; + if (self.luckyGiftEffectView.superview == nil) { + [self.middleLevelView addSubview:self.luckyGiftEffectView]; + [self.luckyGiftEffectView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self.middleLevelView); + make.width.mas_equalTo(KScreenWidth); + make.height.mas_equalTo(KScreenHeight); + }]; + } + [self.parser parseWithURL:vggUrl completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { + if (videoItem != nil) { + CGFloat width = videoItem.videoSize.width; + CGFloat height = videoItem.videoSize.height; + if (width > height) { + self.luckyGiftEffectView.contentMode = UIViewContentModeScaleAspectFit; + } else {//高大于宽 + CGFloat resizeH = KScreenWidth * height / width;//按照屏幕的宽度去缩放,获得高度 + if (resizeH > KScreenHeight) {//如果大于屏幕高度,填充 + self.luckyGiftEffectView.contentMode = UIViewContentModeScaleAspectFill; + } else {//小于屏幕高度, + self.luckyGiftEffectView.contentMode = UIViewContentModeScaleAspectFit; + } + } + self.luckyGiftEffectView.alpha = 1; + self.luckyGiftEffectView.loops = 1; + self.luckyGiftEffectView.clearsAfterStop = YES; + self.luckyGiftEffectView.videoItem = videoItem; + [self.luckyGiftEffectView startAnimation]; + } + } failureBlock:^(NSError * _Nullable error) { + self.luckyGiftEffectView.hidden = YES; + }]; +} + +///播放礼物特效 vap的 +- (void)playLuckyGiftEffectWithVapUrl:(NSString *)vapUrl { + self.luckyVapGiftEffectView.hidden = NO; + if (self.luckyVapGiftEffectView.superview == nil) { + [self.middleLevelView addSubview:self.luckyVapGiftEffectView]; + [self.luckyVapGiftEffectView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self.middleLevelView); + make.width.mas_equalTo(KScreenWidth); + make.height.mas_equalTo(KScreenHeight); + }]; + } + [self.vapParser parseWithURL:vapUrl completionBlock:^(NSString * _Nullable videoUrl) { + if (videoUrl.length) { + [self.luckyVapGiftEffectView setMute:YES]; + [self.luckyVapGiftEffectView playHWDMP4:videoUrl repeatCount:1 delegate:self]; + } + } failureBlock:^(NSError * _Nullable error) { + self.luckyVapGiftEffectView.hidden = YES; + }]; +} + + +///移除横幅的veiw 添加到复用池中 +- (void)removeGiftBannerView:(XPRoomGiftBannerView *)view { + [view removeFromSuperview]; + [view resetData]; + [self.bannerVisiablePool removeObject:view]; + [self.bannerDequePool addObject:view]; + ///svga的处理 + [self.giftEffectView stopAnimation]; + self.giftEffectView.hidden = YES; +} +#pragma mark - +- (void)svgaPlayerDidFinishedAnimation:(SVGAPlayer *)player { + if (player == self.giftEffectView) { + self.giftEffectView.hidden = YES; + if (self.isLargeGiftAnimating) { + self.isLargeGiftAnimating = NO; + } + } else if (player == self.luckyGiftEffectView) { + self.luckyGiftEffectView.hidden = YES; + } else if(player == self.carEffectView) { + self.carEffectView.hidden = YES; + [self.carEffectView removeFromSuperview]; + if (self.carEffectQueue.count > 0) { + [self.carEffectQueue removeObjectAtIndex:0]; + } + if (self.carEffectQueue.count > 0) { + [self playCarEffect:self.carEffectQueue.firstObject]; + } + } else if(player == self.enterEffectView) { + self.enterEffectView.hidden = YES; + [self.enterEffectView removeFromSuperview]; + if (self.enterEffectQueue.count > 0) { + [self.enterEffectQueue removeObjectAtIndex:0]; + } + if (self.enterEffectQueue.count > 0) { + NSString * title = [self.enterEffectQueue.firstObject objectForKey:@"title"]; + NSInteger experLevelSeq = [(NSString *)[self.enterEffectQueue.firstObject objectForKey:@"experLevelSeq"] integerValue]; + NSString *effectPath = [self.enterEffectQueue.firstObject objectForKey:@"effectPath"]; + [self playUserEnterRoomAnimation:title experLevelSeq:experLevelSeq effectPath:effectPath]; + } + } +} + +#pragma mark - 心愿礼物 +- (void)receiveRoomWishGiftCelebrate:(AttachmentModel *)attachment { + CGFloat x = random() % (int)(KScreenWidth - 200); + CGFloat y= random() % 40 + kNavigationHeight; + if (self.wishGiftEffectView.superview == nil) { + [self.lowLevelView addSubview:self.wishGiftEffectView]; + + [self.wishGiftEffectView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(x); + make.top.mas_equalTo(y); + make.width.mas_equalTo(200); + make.height.mas_equalTo(167); + }]; + } + + + [self.wishGiftEffectView mas_updateConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(x); + make.top.mas_equalTo(y); + }]; + NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/room_wish_gift_sendCelebrate.svga", API_Image_URL]; + [self.parser parseWithURL:[NSURL URLWithString:anatomiser1Name] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { + self.wishGiftEffectView.alpha = 1; + self.wishGiftEffectView.loops = 1; + self.wishGiftEffectView.clearsAfterStop = YES; + self.wishGiftEffectView.videoItem = videoItem; + [self.wishGiftEffectView startAnimation]; + } failureBlock:^(NSError * _Nonnull error) { + + }]; +} + +#pragma mark - HWDMP4PlayDelegate +//即将开始播放时询问,true马上开始播放,false放弃播放 +- (BOOL)shouldStartPlayMP4:(VAPView *)container config:(QGVAPConfigModel *)config { + CGFloat width = config.info.size.width; + CGFloat height = config.info.size.height; + + container.center = self.center; + [container mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth); + make.height.mas_equalTo(KScreenWidth * height / width); + }]; + return YES; +} + +- (void)viewDidFinishPlayMP4:(NSInteger)totalFrameCount view:(VAPView *)container { + dispatch_async(dispatch_get_main_queue(), ^{ + container.hidden = YES; + if (container == self.carVapEffectView) { + [self.carVapEffectView removeFromSuperview]; + self.carVapEffectView = nil; + if (self.carEffectQueue.count > 0) { + [self.carEffectQueue removeObjectAtIndex:0]; + } + if (self.carEffectQueue.count > 0) { + [self playCarEffect:self.carEffectQueue.firstObject]; + } + } else if (container == self.vapGiftEffectView) { + if (self.isLargeGiftAnimating) { + self.isLargeGiftAnimating = NO; + } + [self.vapGiftEffectView removeFromSuperview]; + self.vapGiftEffectView = nil; + } else if(container == self.luckyVapGiftEffectView) { + [self.luckyVapGiftEffectView removeFromSuperview]; + self.luckyVapGiftEffectView = nil; + } + }); +} + +- (void)viewDidStopPlayMP4:(NSInteger)lastFrameIndex view:(VAPView *)container { + dispatch_async(dispatch_get_main_queue(), ^{ + container.hidden = YES; + if (container == self.carVapEffectView) { + [self.carVapEffectView removeFromSuperview]; + self.carVapEffectView = nil; + if (self.carEffectQueue.count > 0) { + [self.carEffectQueue removeObjectAtIndex:0]; + } + if (self.carEffectQueue.count > 0) { + [self playCarEffect:self.carEffectQueue.firstObject]; + } + } else if (container == self.vapGiftEffectView) { + [self.vapGiftEffectView removeFromSuperview]; + self.vapGiftEffectView = nil; + } else if(container == self.luckyVapGiftEffectView) { + [self.luckyVapGiftEffectView removeFromSuperview]; + self.luckyVapGiftEffectView = nil; + } else if(container == self.wishGiftEffectView) { + [self.wishGiftEffectView removeFromSuperview]; + self.wishGiftEffectView = nil; + } + }); +} + +#pragma mark - Getters And Setters +- (SVGAImageView *)giftEffectView { + if (!_giftEffectView) { + _giftEffectView = [[SVGAImageView alloc]init]; + _giftEffectView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5]; + _giftEffectView.userInteractionEnabled = NO; + _giftEffectView.delegate = self; + _giftEffectView.hidden = YES; + } + return _giftEffectView; +} + +- (VAPView *)vapGiftEffectView { + if (!_vapGiftEffectView) { + _vapGiftEffectView = [[VAPView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; + _vapGiftEffectView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5]; + _vapGiftEffectView.contentMode = UIViewContentModeScaleAspectFill; + _vapGiftEffectView.hidden = YES; + } + return _vapGiftEffectView; +} + +- (SVGAImageView *)luckyGiftEffectView { + if (!_luckyGiftEffectView) { + _luckyGiftEffectView = [[SVGAImageView alloc]init]; + _luckyGiftEffectView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5]; + _luckyGiftEffectView.userInteractionEnabled = NO; + _luckyGiftEffectView.delegate = self; + _luckyGiftEffectView.hidden = YES; + } + return _luckyGiftEffectView; +} + +- (VAPView *)luckyVapGiftEffectView { + if (!_luckyVapGiftEffectView) { + _luckyVapGiftEffectView = [[VAPView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; + _luckyVapGiftEffectView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5]; + _luckyVapGiftEffectView.contentMode = UIViewContentModeScaleAspectFill; + _luckyVapGiftEffectView.hidden = YES; + } + return _luckyVapGiftEffectView; +} + +- (VAPView *)carVapEffectView { + if (!_carVapEffectView) { + _carVapEffectView = [[VAPView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; + _carVapEffectView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.3]; + _carVapEffectView.contentMode = UIViewContentModeScaleAspectFill; + _carVapEffectView.hidden = YES; + } + return _carVapEffectView; +} + +- (XPRoomGiftAnimationParser *)vapParser { + if (!_vapParser) { + _vapParser = [[XPRoomGiftAnimationParser alloc] init]; + } + return _vapParser; +} + +- (SVGAParser *)parser { + if (!_parser) { + _parser = [[SVGAParser alloc]init]; + } + return _parser; +} + + + + + + +- (NSMutableSet *)bannerDequePool { + if (!_bannerDequePool) { + _bannerDequePool = [NSMutableSet set]; + } + return _bannerDequePool; +} +- (NSMutableSet *)bannerVisiablePool { + if (!_bannerVisiablePool) { + _bannerVisiablePool = [NSMutableSet set]; + } + return _bannerVisiablePool; +} + +- (XPRoomAnimationHitView *)lowLevelView { + if (!_lowLevelView) { + _lowLevelView = [[XPRoomAnimationHitView alloc] init]; + _lowLevelView.backgroundColor = [UIColor clearColor]; + _lowLevelView.userInteractionEnabled = YES; + } + return _lowLevelView; +} + +- (XPRoomAnimationHitView *)middleLevelView { + if (!_middleLevelView) { + _middleLevelView = [[XPRoomAnimationHitView alloc] init]; + _middleLevelView.backgroundColor = [UIColor clearColor]; + _middleLevelView.userInteractionEnabled = YES; + } + return _middleLevelView; +} + +- (XPRoomAnimationHitView *)highLevleView { + if (!_highLevleView) { + _highLevleView = [[XPRoomAnimationHitView alloc] init]; + _highLevleView.backgroundColor = [UIColor clearColor]; + _highLevleView.userInteractionEnabled = YES; + } + return _highLevleView; +} + +- (NSMutableArray *)giftQueue { + if (!_giftQueue) { + _giftQueue = [NSMutableArray array]; + } + return _giftQueue; +} + +- (NSMutableSet *)giftReuseArray { + if (!_giftReuseArray) { + _giftReuseArray = [NSMutableSet set]; + } + return _giftReuseArray; +} + +- (NSMutableSet *)giftVisibleArray { + if (!_giftVisibleArray) { + _giftVisibleArray = [NSMutableSet set]; + } + return _giftVisibleArray; +} + + + +- (NSMutableArray *)compoundGiftQueue { + if (!_compoundGiftQueue) { + _compoundGiftQueue = [NSMutableArray array]; + } + return _compoundGiftQueue; +} + + + +- (NSMutableArray *)carEffectQueue { + if (_carEffectQueue == nil) { + _carEffectQueue = [NSMutableArray array]; + } + return _carEffectQueue; +} + +- (SVGAImageView *)carEffectView { + if (_carEffectView == nil) { + _carEffectView = [[SVGAImageView alloc]init]; + _carEffectView.delegate = self; + _carEffectView.contentMode = UIViewContentModeScaleAspectFit; + _carEffectView.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); + _carEffectView.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.3]; + _carEffectView.alpha = 0; + _carEffectView.userInteractionEnabled = NO; + } + return _carEffectView; +} + +- (NSMutableArray *)enterEffectQueue { + if (_enterEffectQueue == nil) { + _enterEffectQueue = [NSMutableArray array]; + } + return _enterEffectQueue; +} + +- (SVGAImageView *)enterEffectView { + if (_enterEffectView == nil) { + _enterEffectView = [[SVGAImageView alloc]init]; + _enterEffectView.delegate = self; + _enterEffectView.contentMode = UIViewContentModeScaleAspectFit; + _enterEffectView.frame = CGRectMake(0, 0, KScreenWidth, 40); + _enterEffectView.backgroundColor = [UIColor clearColor]; + _enterEffectView.alpha = 0; + _enterEffectView.userInteractionEnabled = NO; + } + return _enterEffectView; +} + + +- (SVGAImageView *)datingEffectView { + if (_datingEffectView == nil) { + _datingEffectView = [[SVGAImageView alloc]init]; + _datingEffectView.delegate = self; + _datingEffectView.contentMode = UIViewContentModeScaleAspectFit; + _datingEffectView.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); + _datingEffectView.backgroundColor = [UIColor clearColor]; + _datingEffectView.alpha = 0; + _datingEffectView.userInteractionEnabled = NO; + } + return _datingEffectView; +} + + +- (NSMutableArray *)acrossRoomPKQueue { + if (!_acrossRoomPKQueue) { + _acrossRoomPKQueue = [NSMutableArray array]; + } + return _acrossRoomPKQueue; +} + +- (NSMutableArray *)sailingQueue { + if (!_sailingQueue) { + _sailingQueue = [NSMutableArray array]; + } + return _sailingQueue; +} + +- (NSMutableArray *)graffitiGiftQueue { + if (!_graffitiGiftQueue) { + _graffitiGiftQueue = [NSMutableArray array]; + } + return _graffitiGiftQueue; +} + + +- (SVGAImageView *)wishGiftEffectView { + if (_wishGiftEffectView == nil) { + _wishGiftEffectView = [[SVGAImageView alloc]init]; + _wishGiftEffectView.delegate = self; + _wishGiftEffectView.contentMode = UIViewContentModeScaleAspectFit; + _wishGiftEffectView.frame = CGRectMake(0, 0, 210, 183); + _wishGiftEffectView.backgroundColor = [UIColor clearColor]; + _wishGiftEffectView.alpha = 1; + _wishGiftEffectView.userInteractionEnabled = NO; + } + return _wishGiftEffectView; +} + + +- (NSMutableArray *)animationListA{ + if(!_animationListA){ + _animationListA = [NSMutableArray array]; + } + return _animationListA; +} +- (NSMutableArray *)animationListB{ + if(!_animationListB){ + _animationListB = [NSMutableArray array]; + } + return _animationListB; +} +@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomCandyGiftView.h b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomCandyGiftView.h new file mode 100644 index 00000000..b47f8aef --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomCandyGiftView.h @@ -0,0 +1,19 @@ +// +// YMRoomCandyGiftView.h +// YUMI +// +// Created by YUMI on 2021/12/10. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomCandyGiftView : UIView +///是否是最大的礼物 +@property (nonatomic,assign) BOOL isMaxLargeGift; +///糖果的信息 +@property (nonatomic,copy) NSDictionary * candyInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomCandyGiftView.m b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomCandyGiftView.m new file mode 100644 index 00000000..ecde8423 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomCandyGiftView.m @@ -0,0 +1,163 @@ +// +// YMRoomCandyGiftView.m +// YUMI +// +// Created by YUMI on 2021/12/10. +// + +#import "XPRoomCandyGiftView.h" +///Third +#import +#import +#import "XPSVGAPlayer.h" +#import "YUMIMacroUitls.h" +#import "ThemeColor+Room.h" +#import "CandyTreeResultModel.h" +#import "NSObject+MJExtension.h" +@interface XPRoomCandyGiftView () +///动画管理类 +@property (strong, nonatomic) SVGAParser *parser; +///糖果树特效 +@property (nonatomic,strong) XPSVGAPlayer *candyTreeView; +///背景图 +@property (nonatomic,strong) UIImageView *backImageView; +///容器 +@property (nonatomic,strong) UIView *titleView; +///显示文本内容 +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPRoomCandyGiftView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.candyTreeView]; + [self addSubview:self.backImageView]; + [self.backImageView addSubview:self.titleView]; + + [self.titleView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.candyTreeView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self); + }]; + + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self); + }]; + + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(260); + make.height.mas_equalTo(28); + make.top.mas_equalTo(self.backImageView).offset(23); + make.centerX.mas_equalTo(self.backImageView); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.titleView); + make.centerY.mas_equalTo(self.titleView); + }]; +} + +- (NSAttributedString *)createAttribute:(NSString * )text color:(UIColor *)color fontSize:(CGFloat)fonSize { + NSDictionary * attribute = @{NSFontAttributeName:[UIFont systemFontOfSize:fonSize], NSForegroundColorAttributeName:color}; + NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:text attributes:attribute]; + return attr; +} + +#pragma mark - Getters And Setters +- (void)setCandyInfo:(NSDictionary *)candyInfo { + if (candyInfo) { + CandyTreeGiftInfoModel * giftInfo = [CandyTreeGiftInfoModel modelWithDictionary:candyInfo]; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + CGFloat fontSize = self.isMaxLargeGift ? 22 : 13; + [attribute appendAttributedString:[self createAttribute:@"厉害了! " color:[UIColor whiteColor] fontSize:fontSize]]; + [attribute appendAttributedString:[self createAttribute:giftInfo.nick color:[DJDKMIMOMColor colorWithHexString:@"#FEF23E"] fontSize:fontSize]]; + [attribute appendAttributedString:[self createAttribute:@"摘下糖果得 " color:[UIColor whiteColor] fontSize:fontSize]]; + [attribute appendAttributedString:[self createAttribute:giftInfo.prizeName color:[DJDKMIMOMColor colorWithHexString:@"#FEF23E"] fontSize:fontSize]]; + if (giftInfo.prizeNum > 1) { + [attribute appendAttributedString:[self createAttribute:[NSString stringWithFormat:@" X%d", giftInfo.prizeNum] color:[UIColor whiteColor] fontSize:fontSize]]; + } + + NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new]; + paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping; + paragraphStyle.lineSpacing = 4.0f;//行间距 + paragraphStyle.alignment = NSTextAlignmentCenter; + paragraphStyle.baseWritingDirection = NSWritingDirectionLeftToRight; + [attribute addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, attribute.length)]; + [self.candyTreeView setAttributedText:attribute forKey:@"tgs_copywriting"]; + if (self.isMaxLargeGift) { + self.backImageView.hidden = YES; + self.candyTreeView.hidden = NO; + @kWeakify(self); + NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/candyTree_banner.svga", API_Image_URL]; + [self.parser parseWithURL:[NSURL URLWithString:anatomiser1Name] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { + @kStrongify(self); + self.candyTreeView.loops = 1; + self.candyTreeView.clearsAfterStop = NO; + self.candyTreeView.videoItem = videoItem; + + [self.candyTreeView startAnimation]; + } failureBlock:^(NSError * _Nonnull error) { + + }]; + } else { + self.backImageView.hidden = NO; + self.candyTreeView.hidden = YES; + self.titleLabel.attributedText = attribute; + self.titleLabel.textAlignment = NSTextAlignmentCenter; + } + } +} + +- (XPSVGAPlayer *)candyTreeView { + if (!_candyTreeView) { + _candyTreeView = [[XPSVGAPlayer alloc]init]; + _candyTreeView.backgroundColor = [UIColor clearColor]; + _candyTreeView.userInteractionEnabled = NO; + } + return _candyTreeView; +} + +- (SVGAParser *)parser { + if (!_parser) { + _parser = [[SVGAParser alloc]init]; + } + return _parser; +} + +- (UIView *)titleView { + if (!_titleView) { + _titleView = [[UIView alloc] init]; + _titleView.backgroundColor = [UIColor clearColor]; + } + return _titleView; +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.image = [UIImage imageNamed:@"room_candytree_large_gift_bg"]; + } + return _backImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.numberOfLines = 2; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomDatingAnimationView.h b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomDatingAnimationView.h new file mode 100644 index 00000000..6f0697b1 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomDatingAnimationView.h @@ -0,0 +1,16 @@ +// +// YMRoomDatingAnimationView.h +// YUMI +// +// Created by YUMI on 2022/1/5. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class DatingInfoModel; +@interface XPRoomDatingAnimationView : UIView +- (void)startAnimationWithModel:(DatingInfoModel *)model finishBlock:(void (^)(BOOL))finishBlock; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomDatingAnimationView.m b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomDatingAnimationView.m new file mode 100644 index 00000000..8610490c --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomDatingAnimationView.m @@ -0,0 +1,370 @@ +// +// YMRoomDatingAnimationView.m +// YUMI +// +// Created by YUMI on 2022/1/5. +// + +#import "XPRoomDatingAnimationView.h" +///Third +#import +#import +#import +///Model +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "UIButton+EnlargeTouchArea.h" +///Model +#import "DatingInfoModel.h" + +@interface XPRoomDatingAnimationView () +///背景 +@property (nonatomic,strong) UIView *backView; +///动画管理类 +@property (strong, nonatomic) SVGAParser *parser; +///播放相亲结果的SVGA +@property (nonatomic, strong) SVGAImageView *datingSvgaImageView; +///倒计时的背景 +@property (nonatomic,strong) UIView *cutTimeBackView; +///倒计时 +@property (nonatomic,strong) UILabel *timeLabel; +///分割线 +@property (nonatomic,strong) UIView *lineView; +///关闭的按钮 +@property (nonatomic,strong) UIButton *closeButton; +///❤的动画 +@property (nonatomic,strong) UIImageView *heartImageView; +/// +@property (nonatomic,copy) void(^FinishBlock)(BOOL result); +/// 定时器 +@property (nonatomic,strong) id timer; +@end + +@implementation XPRoomDatingAnimationView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self addSubview:self.backView]; + [self addSubview:self.datingSvgaImageView]; + [self addSubview:self.cutTimeBackView]; + [self addSubview:self.heartImageView]; + [self.cutTimeBackView addSubview:self.timeLabel]; + [self.cutTimeBackView addSubview:self.lineView]; + [self.cutTimeBackView addSubview:self.closeButton]; + [self initContrations]; + } + return self; +} +#pragma mark - Resonse +- (void)closetButtonAction:(UIButton *)sender { + if (self.FinishBlock) { + [NSObject cancelPreviousPerformRequestsWithTarget:self]; + self.FinishBlock(YES); + } +} + +#pragma mark - Pirvate Method +- (void)initContrations { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth); + make.height.mas_equalTo(KScreenHeight); + }]; + + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + [self.datingSvgaImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + [self.cutTimeBackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(70, 25)); + make.right.mas_equalTo(self).offset(-12); + make.top.mas_equalTo(self).offset(41 + kSafeAreaTopHeight); + }]; + + [self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.cutTimeBackView).offset(13); + make.centerY.mas_equalTo(self.cutTimeBackView); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self.cutTimeBackView); + make.size.mas_equalTo(CGSizeMake(0.5, 13)); + }]; + + [self.closeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(14, 14)); + make.centerY.mas_equalTo(self.cutTimeBackView); + make.left.mas_equalTo(self.lineView.mas_right).offset(8); + }]; +} + +- (void)stopAnimation { + if (self.FinishBlock) { + [NSObject cancelPreviousPerformRequestsWithTarget:self]; + self.FinishBlock(YES); + } +} + +- (UIImage *)setCornerWithRadius:(CGFloat)radius andSize:(CGSize)size image:(UIImage *)image { + //开启图形上下文 + UIGraphicsBeginImageContext(size); + //绘制圆角矩形 + CGRect rect = CGRectMake(0, 0, size.width, size.height); + UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:rect byRoundingCorners:UIRectCornerAllCorners cornerRadii:CGSizeMake(radius, radius)]; + //将Path添加到上下文中 + CGContextAddPath(UIGraphicsGetCurrentContext(), path.CGPath); + //裁剪上下文 + CGContextClip(UIGraphicsGetCurrentContext()); + //将图片绘制到上下文中 + [image drawInRect:rect]; + //设置绘制模式 + CGContextDrawPath(UIGraphicsGetCurrentContext(), kCGPathStroke); + //获取图片 + UIImage *output = UIGraphicsGetImageFromCurrentImageContext(); + //关闭上下文 + UIGraphicsEndImageContext(); + //返回裁剪好的图片 + return output; +} + +- (CAAnimationGroup *)createRoomDatingPickAnimatioOriginPoint:(CGPoint)orginPoint destinationPoint:(CGPoint)destinationPoint { + ///刚出来的时候 进行慢慢放大的效果 + CAKeyframeAnimation * scaleAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale"]; + scaleAnimation.duration = 0.5; + scaleAnimation.repeatCount = 1; + scaleAnimation.values = @[@(0),@(0.2),@(0.4), @(0.6), @(0.8), @(0.9), @(1)]; + scaleAnimation.calculationMode = kCAAnimationCubic; + scaleAnimation.removedOnCompletion = NO; + scaleAnimation.fillMode = kCAFillModeForwards; + /// + CAKeyframeAnimation * transformAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"]; + transformAnimation.beginTime = 0.5; + transformAnimation.duration = 1; + transformAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];; + transformAnimation.values = @[[NSValue valueWithCGPoint:orginPoint],[NSValue valueWithCGPoint:destinationPoint]]; + transformAnimation.repeatCount = 1; + transformAnimation.removedOnCompletion = NO; + transformAnimation.fillMode = kCAFillModeForwards; + + CAKeyframeAnimation * desScaleformAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale"]; + desScaleformAnimation.beginTime = 1.5; + desScaleformAnimation.duration = 0.5; + desScaleformAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];; + desScaleformAnimation.values = @[@(1), @(1.2), @(1.4), @(1.6)]; + desScaleformAnimation.repeatCount = 1; + desScaleformAnimation.removedOnCompletion = NO; + desScaleformAnimation.fillMode = kCAFillModeForwards; + + + CAKeyframeAnimation * opacityAnimation = [CAKeyframeAnimation animationWithKeyPath:@"opacity"]; + opacityAnimation.beginTime = 1.5; + opacityAnimation.duration = 0.5; + opacityAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];; + opacityAnimation.values = @[@(1),@(0.8),@(0.6),@(0)]; + opacityAnimation.repeatCount = 1; + opacityAnimation.removedOnCompletion = NO; + opacityAnimation.fillMode = kCAFillModeForwards; + + + CAAnimationGroup * group = [CAAnimationGroup animation]; + group.animations = @[scaleAnimation, transformAnimation, desScaleformAnimation, opacityAnimation]; + group.duration = 2; + group.removedOnCompletion = NO; + group.fillMode = kCAFillModeForwards; + return group;; +} + +- (void)startBeginCutCountWithTotalTime:(int)time { + __block int totalTime = time; + dispatch_source_t times = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(0, 0)); + _timer = times; + dispatch_source_set_timer(times, DISPATCH_TIME_NOW, 1* NSEC_PER_SEC, 0 * NSEC_PER_SEC); + dispatch_source_set_event_handler(times, ^{ + dispatch_async(dispatch_get_main_queue(), ^{ + if (totalTime <= 5 && totalTime >= 0) { + ///开始显示倒计时 + self.cutTimeBackView.hidden = NO; + self.timeLabel.text = [NSString stringWithFormat:@"%ds", totalTime]; + } + if (totalTime <= 0) { + dispatch_source_cancel(times); + self.cutTimeBackView.hidden = YES; + } + totalTime--; + }); + }); + dispatch_resume(times); +} + +- (void)startPickHeartPersonAnimationOriginPoint:(CGPoint)originPoint targetPoint:(CGPoint)targetPoint { + if (originPoint.x > 0 && targetPoint.x > 0) { + self.heartImageView.frame = CGRectMake(0, 0, 55, 55); + self.heartImageView.hidden = YES; + self.backView.hidden = YES; + self.heartImageView.hidden = NO; + self.heartImageView.center = originPoint; + CAAnimationGroup * group = [self createRoomDatingPickAnimatioOriginPoint:originPoint destinationPoint:targetPoint]; + [self.heartImageView.layer addAnimation:group forKey:nil]; + [self performSelector:@selector(aniationDidFinish:) withObject:self.heartImageView afterDelay:(2)]; + } +} + +- (void)aniationDidFinish:(UIImageView *)giftImageView{ + [giftImageView.layer removeAllAnimations]; + giftImageView.hidden = YES; +} + +#pragma mark - Public Method + +- (void)startAnimationWithModel:(DatingInfoModel *)model finishBlock:(void (^)(BOOL))finishBlock { + self.FinishBlock = finishBlock; + if (model.hasHeart) { + if (model.svgaUrl) { + [self startPalySVGAWithUrl:model]; + } else { + ///如果是心动选人的话 但是没有SVGA的话 直接结束 + ///播完之后直接结束这次 + if (self.FinishBlock) { + self.FinishBlock(YES); + } + } + } else { + ///不是心动选人的话 那就不用播两次 爱心的动画 + [self startPickHeartPersonAnimationOriginPoint:model.originPoint targetPoint:model.targetPoint]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + ///心动结束了 直接结束此次 + if (self.FinishBlock) { + self.FinishBlock(YES); + } + }); + } + +} + +///播放SVGA的时候 需要先播放选人的动画 +- (void)startPalySVGAWithUrl:(DatingInfoModel *)model { + if (model.svgaUrl) { + self.backView.hidden = NO; + [[SDWebImageManager sharedManager] loadImageWithURL:[NSURL URLWithString:model.avatar] options:SDWebImageRetryFailed progress:nil completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, SDImageCacheType cacheType, BOOL finished, NSURL * _Nullable imageURL) { + if (image) { + image = [self setCornerWithRadius:200 andSize:CGSizeMake(400, 400) image:image]; + [self.datingSvgaImageView setImage:image forKey:@"z_tx"]; + } + }]; + + NSString * title = model.nickname ? model.nickname : @""; + if (title.length >= 5) { + title = [NSString stringWithFormat:@"%@…", [title substringToIndex:5]]; + } + NSMutableAttributedString * rightAttribut = [[NSMutableAttributedString alloc] initWithString:title]; + [rightAttribut addAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:28], NSForegroundColorAttributeName:[UIColor whiteColor]} range:NSMakeRange(0, title.length)]; + [self.datingSvgaImageView setAttributedText:rightAttribut forKey:@"z_yhname"]; + + [[SDWebImageManager sharedManager] loadImageWithURL:[NSURL URLWithString:model.targetAvatar] options:SDWebImageRetryFailed progress:nil completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, SDImageCacheType cacheType, BOOL finished, NSURL * _Nullable imageURL) { + if (image) { + image = [self setCornerWithRadius:200 andSize:CGSizeMake(400, 400) image:image]; + [self.datingSvgaImageView setImage:image forKey:@"y_tx"]; + } + }]; + NSString * leftTitle = model.targetNickname ? model.targetNickname : @""; + if (leftTitle.length >= 5) { + leftTitle = [NSString stringWithFormat:@"%@…", [leftTitle substringToIndex:5]]; + } + NSMutableAttributedString * leftAttribut = [[NSMutableAttributedString alloc] initWithString:leftTitle]; + [leftAttribut addAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:28], NSForegroundColorAttributeName:[UIColor whiteColor]} range:NSMakeRange(0, leftTitle.length)]; + [self.datingSvgaImageView setAttributedText:leftAttribut forKey:@"y_yhname"]; + @kWeakify(self); + [self.parser parseWithURL:[NSURL URLWithString:model.svgaUrl] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { + @kStrongify(self); + self.datingSvgaImageView.hidden = NO; + self.datingSvgaImageView.videoItem = videoItem; + self.datingSvgaImageView.loops = 1; + self.datingSvgaImageView.alpha = 1; + self.datingSvgaImageView.clearsAfterStop = YES; + [ self.datingSvgaImageView startAnimation]; + [self startBeginCutCountWithTotalTime:model.svgaSecond]; + } failureBlock:^(NSError * _Nonnull error) { + + }]; + [self performSelector:@selector(stopAnimation) withObject:nil afterDelay:model.svgaSecond]; + } +} + +- (UIImageView *)heartImageView { + if (!_heartImageView) { + _heartImageView = [[UIImageView alloc] init]; + _heartImageView.image = [UIImage imageNamed:@"room_mode_dating_pick_heart"]; + _heartImageView.hidden = YES; + } + return _heartImageView; +} + +- (UIView *)backView { + if (!_backView) { + _backView = [[UIView alloc] init]; + _backView.backgroundColor = UIColorRGBAlpha(0x000000, 0.3); + _backView.hidden = YES; + } + return _backView; +} + +- (UILabel *)timeLabel { + if (!_timeLabel) { + _timeLabel = [[UILabel alloc] init]; + _timeLabel.text = @"5S"; + _timeLabel.font = [UIFont systemFontOfSize:15]; + _timeLabel.textColor = UIColorFromRGB(0xFFFEFE); + } + return _timeLabel; +} + +- (UIView *)cutTimeBackView { + if (!_cutTimeBackView) { + _cutTimeBackView = [[UIView alloc] init]; + _cutTimeBackView.backgroundColor = UIColorRGBAlpha(0x000000, 0.3); + _cutTimeBackView.layer.masksToBounds = YES; + _cutTimeBackView.layer.cornerRadius = 25/2; + _cutTimeBackView.hidden = YES; + } + return _cutTimeBackView; +} + +- (UIButton *)closeButton { + if (!_closeButton) { + _closeButton = [UIButton buttonWithType: UIButtonTypeCustom]; + [_closeButton setImage:[UIImage imageNamed:@"common_close_white"] forState:UIControlStateNormal]; + [_closeButton addTarget:self action:@selector(closetButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_closeButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + } + return _closeButton; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = UIColor.whiteColor; + } + return _lineView; +} + +- (SVGAParser *)parser { + if (!_parser) { + _parser = [[SVGAParser alloc]init]; + } + return _parser; +} + +- (SVGAImageView *)datingSvgaImageView { + if (!_datingSvgaImageView) { + _datingSvgaImageView = [[SVGAImageView alloc]init]; + _datingSvgaImageView.backgroundColor = [UIColor clearColor]; + _datingSvgaImageView.frame = self.bounds; + _datingSvgaImageView.userInteractionEnabled = YES; + } + return _datingSvgaImageView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomEnterHideTipView.h b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomEnterHideTipView.h new file mode 100644 index 00000000..fcd2361b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomEnterHideTipView.h @@ -0,0 +1,16 @@ +// +// YMRoomEnterHideTipView.h +// YUMI +// +// Created by YUMI on 2022/4/26. +// 隐身进房提示 + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomEnterHideTipView : UIView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomEnterHideTipView.m b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomEnterHideTipView.m new file mode 100644 index 00000000..f3a99fdf --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomEnterHideTipView.m @@ -0,0 +1,94 @@ +// +// YMRoomEnterHideTipView.m +// YUMI +// +// Created by YUMI on 2022/4/26. +// + +#import "XPRoomEnterHideTipView.h" +///Third +#import +///Tool +#import "ThemeColor+Room.h" +#import "DJDKMIMOMColor.h" + +@interface XPRoomEnterHideTipView() + +///背景 +@property (nonatomic,strong) UIView *bgView; +///icon +@property (nonatomic,strong) UIImageView *iconImageView; +///描述 +@property (nonatomic, strong) UILabel *descLabel; + +@end + +@implementation XPRoomEnterHideTipView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +- (void)layoutSubviews { + [super layoutSubviews]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.bgView]; + [self.bgView addSubview:self.iconImageView]; + [self.bgView addSubview:self.descLabel]; +} + +- (void)initSubViewConstraints { + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.centerY.mas_equalTo(self); + make.width.mas_equalTo(190); + make.height.mas_equalTo(48); + }]; + [self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.bgView).mas_offset(12); + make.centerY.mas_equalTo(self.bgView); + make.width.height.mas_equalTo(32); + }]; + [self.descLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.iconImageView.mas_right).mas_offset(8); + make.centerY.mas_equalTo(self.bgView); + }]; +} + +#pragma mark - Getters And Setters +- (UIView *)bgView { + if (!_bgView) { + _bgView = [[UIView alloc] init]; + _bgView.backgroundColor = UIColorRGBAlpha(0x000000, 0.5); + _bgView.layer.cornerRadius = 24; + _bgView.layer.masksToBounds = YES; + } + return _bgView; +} + +- (UIImageView *)iconImageView { + if (!_iconImageView) { + _iconImageView = [[UIImageView alloc] init]; + _iconImageView.image = [UIImage imageNamed:@"room_enterRoom_hide"]; + } + return _iconImageView; +} + +- (UILabel *)descLabel { + if (!_descLabel) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:14]; + label.textColor = [UIColor whiteColor]; + label.text = @"你已隐身进入房间~"; + _descLabel = label; + } + return _descLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGiftAnimationParser.h b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGiftAnimationParser.h new file mode 100644 index 00000000..c902c535 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGiftAnimationParser.h @@ -0,0 +1,20 @@ +// +// YMRoomGiftAnimationParser.h +// YUMI +// +// Created by YUMI on 2022/3/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomGiftAnimationParser : NSObject + +- (void)parseWithURL:(nonnull NSString *)URL + completionBlock:(void ( ^ _Nonnull )(NSString * _Nullable videoUrl))completionBlock + failureBlock:(void ( ^ _Nullable)(NSError * _Nullable error))failureBlock; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGiftAnimationParser.m b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGiftAnimationParser.m new file mode 100644 index 00000000..45a8caec --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGiftAnimationParser.m @@ -0,0 +1,98 @@ +// +// YMRoomGiftAnimationParser.m +// YUMI +// +// Created by YUMI on 2022/3/17. +// + +#import "XPRoomGiftAnimationParser.h" +#import +#import +#import +#import +#import "GCDHelper.h" + +@implementation XPRoomGiftAnimationParser + +static NSOperationQueue *parseQueue; + ++ (void)load { + parseQueue = [NSOperationQueue new]; + parseQueue.maxConcurrentOperationCount = 8; +} + +- (void)parseWithURL:(nonnull NSString *)URL + completionBlock:(void ( ^ _Nonnull )(NSString * _Nullable videoUrl))completionBlock + failureBlock:(void ( ^ _Nullable)(NSError * _Nullable error))failureBlock { + [self parseWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:URL] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:20.0] + completionBlock:completionBlock + failureBlock:failureBlock]; +} + +- (void)parseWithURLRequest:(NSURLRequest *)URLRequest completionBlock:(void (^)(NSString * _Nullable))completionBlock failureBlock:(void (^)(NSError * _Nullable))failureBlock { + if (URLRequest.URL == nil) { + if (failureBlock) { + [[NSOperationQueue mainQueue] addOperationWithBlock:^{ + failureBlock([NSError errorWithDomain:@"vapParser" code:411 userInfo:@{NSLocalizedDescriptionKey: @"URL cannot be nil."}]); + }]; + } + return; + } + if ([[NSFileManager defaultManager] fileExistsAtPath:[self cacheDirectory:[self cacheKey:URLRequest.URL]]]) { + if (completionBlock) { + [[NSOperationQueue mainQueue] addOperationWithBlock:^{ + completionBlock([self cacheDirectory:[self cacheKey:URLRequest.URL]]); + }]; + } + return; + } + [[[AFHTTPSessionManager manager] downloadTaskWithRequest:URLRequest progress:^(NSProgress * _Nonnull downloadProgress) { + } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) { + return [NSURL fileURLWithPath:[self cacheDirectory:[self cacheKey:URLRequest.URL]]]; + } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) { + if (!error) { + [[NSOperationQueue mainQueue] addOperationWithBlock:^{ + NSString *str; + if ([filePath.absoluteString hasPrefix:@"file:///"]) { + str = [filePath.absoluteString stringByReplacingOccurrencesOfString:@"file://" withString:@""]; + } else { + str = filePath.absoluteString; + } + completionBlock(str); + }]; + } else { + [[NSOperationQueue mainQueue] addOperationWithBlock:^{ + completionBlock(nil); + }]; + } + }] resume]; +} + +- (void)clearCache:(nonnull NSString *)cacheKey { + NSString *cacheDir = [self cacheDirectory:cacheKey]; + [[NSFileManager defaultManager] removeItemAtPath:cacheDir error:NULL]; +} + +- (nonnull NSString *)cacheKey:(NSURL *)URL { + return [self MD5String:URL.absoluteString]; +} + +- (nullable NSString *)cacheDirectory:(NSString *)cacheKey { + NSString *cacheDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject]; + return [cacheDir stringByAppendingFormat:@"/%@.mp4", cacheKey]; +} + +- (NSString *)MD5String:(NSString *)str { + const char *cstr = [str UTF8String]; + unsigned char result[16]; + CC_MD5(cstr, (CC_LONG)strlen(cstr), result); + return [NSString stringWithFormat: + @"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", + result[0], result[1], result[2], result[3], + result[4], result[5], result[6], result[7], + result[8], result[9], result[10], result[11], + result[12], result[13], result[14], result[15] + ]; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGiftBannerView.h b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGiftBannerView.h new file mode 100644 index 00000000..ba85464c --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGiftBannerView.h @@ -0,0 +1,21 @@ +// +// YMRoomGiftBannerView.h +// YUMI +// +// Created by YUMI on 2021/11/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class GiftReceiveInfoModel, XPGiftBannerUserInfoModel; +@interface XPRoomGiftBannerView : UIView +///配上飘屏的数据 +- (void)configGiftBanner:(GiftReceiveInfoModel *)receiveInfo users:(NSArray *)users; +- (void)configGiftBanner:(GiftReceiveInfoModel *)receiveInfo; +///重置数据 +- (void)resetData; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGiftBannerView.m b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGiftBannerView.m new file mode 100644 index 00000000..a64cd8be --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGiftBannerView.m @@ -0,0 +1,369 @@ +// +// YMRoomGiftBannerView.m +// YUMI +// +// Created by YUMI on 2021/11/18. +// + +#import "XPRoomGiftBannerView.h" +///Third +#import +///Tool +#import "ThemeColor+Room.h" +///Model +#import "GiftReceiveInfoModel.h" +#import "GiftInfoModel.h" +#import "XPGiftBannerUserInfoModel.h" +///View +#import "NetImageView.h" + +@interface XPRoomAvatarNickView : UIView +/// +@property (nonatomic,strong) NetImageView *avatImageView; +/// +@property (nonatomic,strong) UILabel *nickLabel; +@end + +@implementation XPRoomAvatarNickView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + self.avatImageView.layer.cornerRadius = self.avatImageView.bounds.size.width / 2; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.avatImageView]; + [self addSubview:self.nickLabel]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.nickLabel.mas_bottom); + }]; + + [self.avatImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self); + make.height.mas_equalTo(self.avatImageView.mas_width); + }]; + + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self.avatImageView.mas_bottom).offset(2); + make.width.mas_lessThanOrEqualTo(80); + }]; +} + +#pragma mark - Getters And Setters +- (NetImageView *)avatImageView { + if (!_avatImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + _avatImageView = [[NetImageView alloc] initWithConfig:config]; + _avatImageView.userInteractionEnabled = YES; + _avatImageView.layer.masksToBounds = YES; + } + return _avatImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:12]; + _nickLabel.textColor = [UIColor whiteColor]; + _nickLabel.textAlignment = NSTextAlignmentCenter; + } + return _nickLabel; +} +@end + + + +@interface XPRoomGiftBannerView () +///背景图 +@property (nonatomic,strong) UIImageView *backImageView; +///赠送 +@property (nonatomic,strong) XPRoomAvatarNickView *sendView; +///接收者 +@property (nonatomic,strong) XPRoomAvatarNickView *receiveView; +///礼物 +@property (nonatomic,strong) XPRoomAvatarNickView *giftView; +///光圈 +@property (nonatomic,strong) UIImageView *lightImageView; +///礼物的个数 +@property (nonatomic,strong) UILabel *giftCountLabel; +///赠送 +@property (nonatomic,strong) UILabel *sendLabel; +@end + + +@implementation XPRoomGiftBannerView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backImageView]; + + [self.backImageView addSubview:self.sendView]; + [self.backImageView addSubview:self.sendLabel]; + [self.backImageView addSubview:self.receiveView]; + [self.backImageView addSubview:self.lightImageView]; + [self.backImageView addSubview:self.giftView]; + [self.backImageView addSubview:self.giftCountLabel]; +} + +- (void)initSubViewConstraints { + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self); + }]; + + [self.sendView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.backImageView).offset(49); + make.top.equalTo(self).offset(49); + make.width.mas_equalTo(40); + }]; + + [self.sendLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.sendView.mas_right).offset(24); + make.centerY.equalTo(self.sendView); + }]; + + [self.receiveView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.sendLabel.mas_right).offset(24); + make.centerY.width.equalTo(self.sendView); + }]; + + [self.lightImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.receiveView.mas_right).offset(4); + make.centerY.equalTo(self.sendView); + make.width.height.equalTo(@100); + }]; + + [self.giftView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.equalTo(self.sendView); + make.center.equalTo(self.lightImageView); + }]; + + + [self.giftCountLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.equalTo(self.giftView); + make.right.equalTo(self.backImageView).offset(-36); + }]; +} + +- (void)startLightCircleAnimation { + CABasicAnimation * animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; + animation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 ]; + animation.duration = 1; + animation.cumulative = YES; + animation.repeatCount = MAXFLOAT; + [self.lightImageView.layer addAnimation:animation forKey:@"rotationAnimation"]; +} + +#pragma mark - Public Method +- (void)resetData { + self.sendView.avatImageView.image = nil; + self.sendView.nickLabel.text = nil; + self.receiveView.avatImageView.image = nil; + self.receiveView.nickLabel.text = nil; + self.giftView.avatImageView.image = nil; + self.giftView.nickLabel.text = nil; + self.giftCountLabel.text = nil; + [self.lightImageView stopAnimating]; +} +- (void)configGiftBanner:(GiftReceiveInfoModel *)receiveInfo{ + if (receiveInfo) { + [self startLightCircleAnimation]; + NSInteger giftTotal = receiveInfo.giftGolds; + GiftInfoModel *giftInfo = receiveInfo.gift; + self.sendView.avatImageView.imageUrl = receiveInfo.sendUserAvatar; + self.sendView.nickLabel.text = receiveInfo.sendUserNick; + self.receiveView.nickLabel.text = receiveInfo.recvUserNick; + self.receiveView.avatImageView.imageUrl = receiveInfo.recvUserAvatar; + self.giftView.avatImageView.imageUrl = giftInfo.giftUrl; + self.giftView.nickLabel.text = giftInfo.giftName; + + self.giftCountLabel.text = [NSString stringWithFormat:@" x %ld",receiveInfo.giftNum]; + + [self configAnimateImageByGiftTotal:giftTotal]; + } +} +- (void)configGiftBanner:(GiftReceiveInfoModel *)receiveInfo users:(NSArray *)users { + if (receiveInfo) { + [self startLightCircleAnimation]; + NSInteger giftTotal = 0; + GiftInfoModel *giftInfo = receiveInfo.gift; + self.sendView.avatImageView.imageUrl = receiveInfo.avatar; + self.sendView.nickLabel.text = receiveInfo.nick; + + self.giftView.avatImageView.imageUrl = giftInfo.giftUrl; + self.giftView.nickLabel.text = giftInfo.giftName; + + self.giftCountLabel.text = [NSString stringWithFormat:@" x %ld",receiveInfo.giftNum]; + /*1. 普通单人 targetUid + 2. 普通多人 targetUsers + 3. 普通全麦 targetUids + 4. 福袋 targetUid 不懂请参考此协议*/ + if (receiveInfo.targetUsers.count > 0) { + if (receiveInfo.isBatch) { // 非全麦 多人送礼 + NSString *subTitle = @""; + NSArray *targetUids = receiveInfo.targetUsers; + for (GiftReceiveUserInfoModel *targetUid in targetUids) { + NSInteger position = [self findPositionByUid:targetUid.uid users:users]; + if (position == 0) { + continue; // 收礼人已经下麦了, 则不展示 + } + position += 1; + if (subTitle.length > 0) { + subTitle = [subTitle stringByAppendingFormat:YMLocalizedString(@"XPRoomGiftBannerView0"), position]; + } else { + subTitle = [subTitle stringByAppendingFormat:YMLocalizedString(@"XPRoomGiftBannerView1"), position]; + } + } + if (receiveInfo.targetUsers.count == 1) { + self.receiveView.nickLabel.text = [receiveInfo.targetUsers firstObject].nick; + self.receiveView.avatImageView.imageUrl = [receiveInfo.targetUsers firstObject].avatar; + } else { + self.receiveView.avatImageView.image = [UIImage imageNamed:@"common_avatar"]; + self.receiveView.nickLabel.text = subTitle; + } + + giftTotal = receiveInfo.giftNum * giftInfo.goldPrice * receiveInfo.targetUsers.count; + } else { // 全麦 + self.receiveView.avatImageView.image = [UIImage imageNamed:@"common_avatar"]; + self.receiveView.nickLabel.text = YMLocalizedString(@"XPRoomGiftBannerView2"); + giftTotal = receiveInfo.giftNum * giftInfo.goldPrice * receiveInfo.targetUsers.count; + } + }else if (receiveInfo.targetUids.count > 0) {///根据协议 普通情况 + if (receiveInfo.isBatch) { + NSString *subTitle = @""; + NSArray *targetUids = receiveInfo.targetUids; + for (NSString * targetUid in targetUids) { + NSInteger position = [self findPositionByUid:targetUid.integerValue users:users]; + if (position == 0) { + continue; // 收礼人已经下麦了, 则不展示 + } + position+= 1; + if (subTitle.length > 0) { + subTitle = [subTitle stringByAppendingFormat:YMLocalizedString(@"XPRoomGiftBannerView3"), position]; + } else { + subTitle = [subTitle stringByAppendingFormat:YMLocalizedString(@"XPRoomGiftBannerView4"), position]; + } + } + self.receiveView.avatImageView.image = [UIImage imageNamed:@"common_avatar"]; + self.receiveView.nickLabel.text = subTitle; + giftTotal = receiveInfo.giftNum * giftInfo.goldPrice * receiveInfo.targetUids.count; + } else { // 全麦 + self.receiveView.avatImageView.image = [UIImage imageNamed:@"common_avatar"]; + self.receiveView.nickLabel.text = YMLocalizedString(@"XPRoomGiftBannerView5"); + giftTotal = receiveInfo.giftNum * giftInfo.goldPrice * receiveInfo.targetUids.count; + } + }else { + self.receiveView.avatImageView.imageUrl = receiveInfo.targetAvatar; + self.receiveView.nickLabel.text = receiveInfo.targetNick; + giftTotal = receiveInfo.giftNum * giftInfo.goldPrice; + } + [self configAnimateImageByGiftTotal:giftTotal]; + } +} + +- (void)configAnimateImageByGiftTotal:(NSInteger)giftTotal { + if (giftTotal >= 520 && giftTotal < 4999) { + self.backImageView.image = [UIImage imageNamed:@"room_gift_banner_low_bg"]; + }else if (giftTotal >= 4999 && giftTotal < 9999) { + self.backImageView.image = [UIImage imageNamed:@"room_gift_banner_middle_bg"]; + }else if (giftTotal >= 9999) { + self.backImageView.image = [UIImage imageNamed:@"room_gift_banner_high_bg"]; + } +} + + +- (int)findPositionByUid:(NSInteger)uid users:(NSArray *)users{ + if (uid > 0) { + for (XPGiftBannerUserInfoModel *userInfo in users) { + if (userInfo.uid == uid) { + return userInfo.position; + } + } + } + return 0; +} +#pragma mark - Getters And Setters + + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + } + return _backImageView; +} + +- (XPRoomAvatarNickView *)sendView { + if (!_sendView) { + _sendView = [[XPRoomAvatarNickView alloc] init]; + } + return _sendView; +} + +- (XPRoomAvatarNickView *)receiveView { + if (!_receiveView) { + _receiveView = [[XPRoomAvatarNickView alloc] init]; + } + return _receiveView; +} + +- (XPRoomAvatarNickView *)giftView { + if (!_giftView) { + _giftView = [[XPRoomAvatarNickView alloc] init]; + } + return _giftView; +} + +- (UILabel *)sendLabel { + if (!_sendLabel) { + _sendLabel = [[UILabel alloc] init]; + _sendLabel.text = YMLocalizedString(@"XPRoomGiftBannerView6"); + _sendLabel.font = [UIFont systemFontOfSize:12]; + _sendLabel.textColor = [UIColor whiteColor]; + } + return _sendLabel; +} + +- (UIImageView *)lightImageView { + if (!_lightImageView) { + _lightImageView = [[UIImageView alloc] init]; + _lightImageView.userInteractionEnabled = YES; + _lightImageView.image = [UIImage imageNamed:@"room_gift_banner_light"]; + } + return _lightImageView; +} + +- (UILabel *)giftCountLabel { + if (!_giftCountLabel) { + _giftCountLabel = [[UILabel alloc] init]; + _giftCountLabel.font = [UIFont systemFontOfSize:20.f weight:UIFontWeightBold]; + _giftCountLabel.textColor = [DJDKMIMOMColor animationGiftNumberColor]; + } + return _giftCountLabel; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGiftBroadcastView.h b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGiftBroadcastView.h new file mode 100644 index 00000000..1b0d61e4 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGiftBroadcastView.h @@ -0,0 +1,29 @@ +// +// YMRoomGiftBroadcastView.h +// YUMI +// +// Created by YUMI on 2021/11/18. +// 广播横幅 + +#import +#import "GiftReceiveInfoModel.h" +NS_ASSUME_NONNULL_BEGIN +@class XPRoomGiftBroadcastView; + +@protocol XPRoomGiftBroadcastViewDelegate +/// 点击了关闭 +- (void)xPRoomGiftBroadcastView:(XPRoomGiftBroadcastView *)view didClickClose:(GiftReceiveInfoModel *)broadcastModel; +///点击了进入房间 +- (void)xPRoomGiftBroadcastView:(XPRoomGiftBroadcastView *)view enterRoom:(NSString *)roomUid; + +@end + +@interface XPRoomGiftBroadcastView : UIView +/// +@property (nonatomic,strong) GiftReceiveInfoModel *broadcastModel; + +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGiftBroadcastView.m b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGiftBroadcastView.m new file mode 100644 index 00000000..e4d9a47e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGiftBroadcastView.m @@ -0,0 +1,423 @@ +// +// XPRoomGiftBroadcastView.m +// xplan-ios +// +// Created by 冯硕 on 2021/11/18. +// + +#import "XPRoomGiftBroadcastView.h" +///Third +#import +///Tool +#import "ThemeColor+Room.h" + +///Model +#import "GiftReceiveInfoModel.h" +///View +#import "NetImageView.h" + +#define kScreenScale (CGFloat)KScreenWidth / (CGFloat)375 + +@interface XPRoomGiftUserView : UIView + +/// +@property (nonatomic,strong) NetImageView *avatarImageView; +/// +@property (nonatomic,strong) UIImageView *boraderImageView; +/// +@property (nonatomic,strong) UIButton *nickButton; + +@end + +@implementation XPRoomGiftUserView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.avatarImageView]; + [self addSubview:self.boraderImageView]; + [self addSubview:self.nickButton]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.nickButton.mas_bottom); + }]; + + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.top.mas_equalTo(self); + make.height.width.mas_equalTo(44 * kScreenScale); + }]; + + [self.boraderImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(51 * kScreenScale, 51 * kScreenScale)); + make.center.mas_equalTo(self.avatarImageView); + }]; + + [self.nickButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self.avatarImageView.mas_bottom).offset(-8 * kScreenScale); + make.size.mas_equalTo(CGSizeMake(66 * kScreenScale, 16 * kScreenScale)); + }]; +} + +#pragma mark - Getters And Setters +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.userInteractionEnabled = YES; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 44 * kScreenScale/2; + } + return _avatarImageView; +} + +- (UIImageView *)boraderImageView { + if (!_boraderImageView) { + _boraderImageView = [[UIImageView alloc] init]; + _boraderImageView.userInteractionEnabled = YES; + } + return _boraderImageView; +} + +- (UIButton *)nickButton { + if (!_nickButton) { + _nickButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_nickButton setTitleColor:[DJDKMIMOMColor giftBroadcastNickColor] forState:UIControlStateNormal]; + _nickButton.titleLabel.font = [UIFont systemFontOfSize:10]; + [_nickButton setBackgroundImage:[UIImage imageNamed:@"room_gift_broadcast_avatar_board"] forState:UIControlStateNormal]; + } + return _nickButton; +} + +@end + + +@interface XPRoomGiftBroadcastView () +///背景 +@property (nonatomic,strong) UIImageView *backImageView; +///赠送者 +@property (nonatomic,strong) XPRoomGiftUserView *sendView; +///赠送 +@property (nonatomic,strong) UIImageView *sendImageView; +///接收者 +@property (nonatomic,strong) XPRoomGiftUserView *receiveView; +///礼物 +@property (nonatomic,strong) NetImageView *giftImageView; +///数量 +@property (nonatomic,strong) UILabel *countLabel; +///关闭 +@property (nonatomic,strong) UIButton *closeButton; +///房间iD +@property (nonatomic,strong) UILabel *roomIdLabel; +///房间背景 +@property (nonatomic,strong) UIImageView *roomIdBgView; +@end + +@implementation XPRoomGiftBroadcastView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + [self initEvents]; + } + return self; +} +#pragma mark - Response +- (void)closeButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomGiftBroadcastView:didClickClose:)]) { + [self.delegate xPRoomGiftBroadcastView:self didClickClose:self.broadcastModel]; + } +} + +- (void)didClickEnterRoom { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomGiftBroadcastView:enterRoom:)]) { + [self.delegate xPRoomGiftBroadcastView:self enterRoom:[NSString stringWithFormat:@"%ld", self.broadcastModel.roomUid]]; + } +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backImageView]; + + [self.backImageView addSubview:self.closeButton]; + [self.backImageView addSubview:self.sendView]; + [self.backImageView addSubview:self.sendImageView]; + [self.backImageView addSubview:self.receiveView]; + [self.backImageView addSubview:self.giftImageView]; + [self.backImageView addSubview:self.countLabel]; + [self.backImageView addSubview:self.roomIdBgView]; + [self.roomIdBgView addSubview:self.roomIdLabel]; + +} + +- (void)initSubViewConstraints { + + + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.mas_equalTo(self).inset(15); + make.top.mas_equalTo(self); + make.height.mas_equalTo(125 * kScreenScale); + }]; + + [self.sendView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.backImageView).offset(-27 * kScreenScale); + make.width.mas_equalTo(66 * kScreenScale); + make.leading.mas_equalTo(self.backImageView).offset(13 * kScreenScale); + }]; + + [self.sendImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(30 * kScreenScale, 15 * kScreenScale)); + make.centerY.mas_equalTo(self.sendView); + make.leading.mas_equalTo(self.sendView.mas_trailing).offset(13 * kScreenScale); + }]; + + [self.receiveView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.width.mas_equalTo(self.sendView); + make.leading.mas_equalTo(self.sendImageView.mas_trailing).offset(13 * kScreenScale); + }]; + + [self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(60 * kScreenScale, 60 * kScreenScale)); + make.centerY.mas_equalTo(self.sendView); + make.leading.mas_equalTo(self.receiveView.mas_trailing).offset(13 * kScreenScale); + }]; + + [self.countLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(self.giftImageView.mas_trailing).offset(13 * kScreenScale); + make.centerY.mas_equalTo(self.sendView); + }]; + + [self.closeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.trailing.mas_equalTo(self.backImageView).offset(-3); + make.top.mas_equalTo(13); + make.size.mas_equalTo(CGSizeMake(28, 22)); + }]; + [self.roomIdBgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.backImageView); + make.top.mas_equalTo(self.backImageView).offset(kGetScaleWidth(8.5)); + make.width.mas_equalTo(kGetScaleWidth(88.5)); + make.height.mas_equalTo(kGetScaleWidth(18)); + }]; + + [self.roomIdLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.roomIdBgView); + + }]; + +} + +- (void)initEvents { + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didClickEnterRoom)]; + [self.backImageView addGestureRecognizer:tap]; +} + +- (void)updateSubviews:(BroadCastLevel)level { + UIColor * nickColor; + NSString * nickBackImageName; + NSString * bgImageName; + NSString *closeImageName; + NSString *boraderImageName; + + + switch (level) { + case BroadCastLevel_Normal: + { + CGFloat kscale = (CGFloat)124/ (CGFloat)345; + CGFloat width = KScreenWidth - 30; + [self.backImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(width * kscale); + }]; + + [self.closeButton mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(14 * kScreenScale); + }]; + [self.sendView mas_updateConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.backImageView).offset(-30 * kScreenScale); + }]; + nickColor = UIColorFromRGB(0x2F0060); + nickBackImageName = @"room_gift_broadcast_low_normal_nick_bg"; + bgImageName = @"room_gift_broadcast_low_bg"; + closeImageName = @"room_gift_broadcast_low_close"; + boraderImageName = @"room_gift_broadcast_low_avatar_board"; + self.roomIdBgView.hidden = YES; + } + break; + case BroadCastLevel_Middle: + { + CGFloat kscale = (CGFloat)120/ (CGFloat)345; + CGFloat width = KScreenWidth - 30; + [self.backImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(width * kscale); + }];; + + [self.closeButton mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(11 * kScreenScale); + }]; + [self.sendView mas_updateConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.backImageView).offset(-30 * kScreenScale); + }]; + nickColor = [UIColor whiteColor]; + nickBackImageName = @"room_gift_broadcast_middle_normal_nick_bg"; + bgImageName = @"room_gift_broadcast_middle_bg"; + closeImageName = @"room_gift_broadcast_middle_close"; + boraderImageName = @"room_gift_broadcast_middle_avatar_board"; + self.roomIdBgView.hidden = YES; + } + break; + case BroadCastLevel_High: + { + + [self.backImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(143 * kScreenScale); + }]; + + [self.closeButton mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(38 * kScreenScale); + }]; + [self.sendView mas_updateConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.backImageView).offset(-26 * kScreenScale); + }]; + nickColor = [UIColor whiteColor]; + nickBackImageName = @"room_gift_broadcast_high_normal_nick_bg"; + bgImageName = @"room_gift_broadcast_high_bg"; + closeImageName = @"room_gift_broadcast_high_close"; + boraderImageName = @"room_gift_broadcast_high_avatar_boardd"; + self.roomIdBgView.hidden = NO; + } + break; + default: + break; + } + + if (nickBackImageName.length > 0) { + [self.sendView.nickButton setBackgroundImage:[UIImage imageNamed:nickBackImageName] forState:UIControlStateNormal]; + [self.receiveView.nickButton setBackgroundImage:[UIImage imageNamed:nickBackImageName] forState:UIControlStateNormal]; + + } + if(boraderImageName.length > 0){ + self.sendView.boraderImageView.image = kImage(boraderImageName); + self.receiveView.boraderImageView.image = kImage(boraderImageName); + } + if (nickColor) { + [self.sendView.nickButton setTitleColor:nickColor forState:UIControlStateNormal]; + [self.receiveView.nickButton setTitleColor:nickColor forState:UIControlStateNormal]; + } + [self.closeButton setBackgroundImage:kImage(closeImageName) forState:UIControlStateNormal]; + self.backImageView.image = [UIImage imageNamed:bgImageName]; + +} + + +#pragma mark - Getters And Setters +- (void)setBroadcastModel:(GiftReceiveInfoModel *)broadcastModel { + _broadcastModel = broadcastModel; + if (_broadcastModel) { + if (broadcastModel.sendUserNick.length > 6) { + broadcastModel.sendUserNick = [broadcastModel.sendUserNick substringToIndex:6]; + } + self.sendView.avatarImageView.imageUrl = broadcastModel.sendUserAvatar; + [self.sendView.nickButton setTitle:broadcastModel.sendUserNick forState:UIControlStateNormal]; + + if (broadcastModel.recvUserNick.length > 6) { + broadcastModel.recvUserNick = [broadcastModel.recvUserNick substringToIndex:6]; + } + self.receiveView.avatarImageView.imageUrl = broadcastModel.recvUserAvatar; + [self.receiveView.nickButton setTitle:broadcastModel.recvUserNick forState:UIControlStateNormal]; + + self.giftImageView.imageUrl = broadcastModel.giftUrl; + self.countLabel.text = [NSString stringWithFormat:@"x%ld", broadcastModel.giftNum]; + self.roomIdLabel.text = [NSString stringWithFormat:@"ID:%@", broadcastModel.roomErbanNo]; + [self updateSubviews:broadcastModel.levelNum]; + } +} + + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + } + return _backImageView; +} + +- (XPRoomGiftUserView *)sendView { + if (!_sendView) { + _sendView = [[XPRoomGiftUserView alloc] init]; + } + return _sendView; +} + +- (UIImageView *)sendImageView { + if (!_sendImageView) { + _sendImageView = [[UIImageView alloc] init]; + _sendImageView.userInteractionEnabled = YES; + _sendImageView.image = [UIImage imageNamed:@"room_gift_broadcast_send"]; + } + return _sendImageView; +} + +- (XPRoomGiftUserView *)receiveView { + if (!_receiveView) { + _receiveView = [[XPRoomGiftUserView alloc] init]; + } + return _receiveView; +} +- (NetImageView *)giftImageView { + if (!_giftImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + _giftImageView = [[NetImageView alloc] initWithConfig:config]; + } + return _giftImageView; +} + +- (UILabel *)countLabel { + if (!_countLabel) { + _countLabel = [[UILabel alloc] init]; + _countLabel.font = [UIFont systemFontOfSize:11 weight:UIFontWeightBold]; + UIImage *image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFFDC6A),UIColorFromRGB(0xFFFFFF),UIColorFromRGB(0xFFFFFF)] gradientType:GradientTypeTopToBottom imgSize:CGSizeMake(10, 10)]; + _countLabel.textColor = [UIColor colorWithPatternImage:image]; + } + return _countLabel; +} + +- (UIButton *)closeButton { + if (!_closeButton) { + _closeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_closeButton addTarget:self action:@selector(closeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _closeButton; +} + + +- (UILabel *)roomIdLabel { + if (!_roomIdLabel) { + _roomIdLabel = [[UILabel alloc] init]; + _roomIdLabel.font = [UIFont systemFontOfSize:12]; + _roomIdLabel.textColor = [UIColor whiteColor]; + } + return _roomIdLabel; +} +-(UIImageView *)roomIdBgView{ + if (!_roomIdBgView){ + _roomIdBgView = [UIImageView new]; + _roomIdBgView.image = kImage(@"room_gift_broadcast_high_normal_id_nick_bg"); + } + return _roomIdBgView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGiftCompoundView.h b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGiftCompoundView.h new file mode 100644 index 00000000..6685f830 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGiftCompoundView.h @@ -0,0 +1,19 @@ +// +// YMRoomGiftCompoundView.h +// YUMI +// +// Created by YUMI on 2022/8/5. +// 魔法小屋礼物合成 + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomGiftCompoundView : UIView + +///礼物合成的信息 +@property (nonatomic,copy) NSDictionary * compoundGiftInfo; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGiftCompoundView.m b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGiftCompoundView.m new file mode 100644 index 00000000..0bbb8d0f --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGiftCompoundView.m @@ -0,0 +1,113 @@ +// +// YMRoomGiftCompoundView.m +// YUMI +// +// Created by YUMI on 2022/8/5. +// + +#import "XPRoomGiftCompoundView.h" +///Third +#import +#import +#import "YUMIMacroUitls.h" +#import "ThemeColor+Room.h" +#import "XPGiftCompoundModel.h" +#import "NSObject+MJExtension.h" + +@interface XPRoomGiftCompoundView () + +///动画管理类 +@property (strong, nonatomic) SVGAParser *parser; +///礼物合成特效 +@property (nonatomic,strong) SVGAImageView *compoundGiftView; +///显示文本内容 +@property (nonatomic,strong) UILabel *titleLabel; + +@end + +@implementation XPRoomGiftCompoundView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.compoundGiftView]; + [self addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.compoundGiftView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self); + make.height.mas_equalTo(45); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.compoundGiftView); + }]; +} + +- (NSAttributedString *)createAttribute:(NSString * )text color:(UIColor *)color fontSize:(CGFloat)fonSize { + NSDictionary * attribute = @{NSFontAttributeName:[UIFont systemFontOfSize:fonSize], NSForegroundColorAttributeName:color}; + NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:text attributes:attribute]; + return attr; +} + +#pragma mark - Getters And Setters +- (void)setCompoundGiftInfo:(NSDictionary *)compoundGiftInfo { + if (compoundGiftInfo) { + XPGiftCompoundModel * giftInfo = [XPGiftCompoundModel modelWithDictionary:compoundGiftInfo]; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + CGFloat fontSize = 22; + NSString *nickStr = giftInfo.nick; + if (nickStr.length > 6) { + nickStr = [NSString stringWithFormat:@"%@…", [giftInfo.nick substringToIndex:6]]; + } + [attribute appendAttributedString:[self createAttribute:YMLocalizedString(@"XPRoomGiftCompoundView0") color:[UIColor whiteColor] fontSize:fontSize]]; + [attribute appendAttributedString:[self createAttribute:nickStr color:[DJDKMIMOMColor messageNickColor] fontSize:fontSize]]; + [attribute appendAttributedString:[self createAttribute:giftInfo.msg color:[UIColor whiteColor] fontSize:fontSize]]; + [attribute appendAttributedString:[self createAttribute:giftInfo.giftName color:[DJDKMIMOMColor messageNickColor] fontSize:fontSize]]; + + @kWeakify(self); + NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/compound_gift_banner.svga", API_Image_URL]; + [self.parser parseWithURL:[NSURL URLWithString:anatomiser1Name] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { + @kStrongify(self); + self.compoundGiftView.loops = 1; + self.compoundGiftView.clearsAfterStop = NO; + self.compoundGiftView.videoItem = videoItem; + [self.compoundGiftView setAttributedText:attribute forKey:@"noble_text_tx"]; + [self.compoundGiftView startAnimation]; + } failureBlock:^(NSError * _Nonnull error) { + + }]; + } +} + +- (SVGAImageView *)compoundGiftView { + if (!_compoundGiftView) { + _compoundGiftView = [[SVGAImageView alloc]init]; + _compoundGiftView.backgroundColor = [UIColor clearColor]; + _compoundGiftView.userInteractionEnabled = NO; + } + return _compoundGiftView; +} + +- (SVGAParser *)parser { + if (!_parser) { + _parser = [[SVGAParser alloc]init]; + } + return _parser; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGraffitiGiftAnimationView.h b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGraffitiGiftAnimationView.h new file mode 100644 index 00000000..947614c3 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGraffitiGiftAnimationView.h @@ -0,0 +1,31 @@ +// +// YMRoomGraffitiGiftAnimationView.h +// YUMI +// +// Created by YUMI on 2022/8/23. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPRoomGraffitiGiftAnimationView, AttachmentModel; +@protocol XPRoomGraffitiGiftAnimationViewDelegate + +///动画完成 +- (void)xPRoomGraffitiGiftAnimationViewCompletion:(XPRoomGraffitiGiftAnimationView *)view attachment:(AttachmentModel *)attachment; + +@end + +@interface XPRoomGraffitiGiftAnimationView : UIView +@property (nonatomic,strong) UIImage *giftImage; +///代理 +@property (nonatomic,weak) id delegate; +@property (nonatomic,strong) NSArray *pointArray; +@property (nonatomic,strong) AttachmentModel *model; +///开始涂鸦动画 +- (void)beginDrawAnimation; +///结束涂鸦动画 +- (void)endDrawAnimation; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGraffitiGiftAnimationView.m b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGraffitiGiftAnimationView.m new file mode 100644 index 00000000..3d2ef8d8 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomGraffitiGiftAnimationView.m @@ -0,0 +1,86 @@ +// +// YMRoomGraffitiGiftAnimationView.m +// YUMI +// +// Created by YUMI on 2022/8/23. +// + +#import "XPRoomGraffitiGiftAnimationView.h" +#import "XPWeakTimer.h" +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" + +@interface XPRoomGraffitiGiftAnimationView () +@property (nonatomic,strong) NSTimer *timer; +@property (nonatomic,assign) int index; +///数据 +@property (nonatomic,strong) NSMutableArray *datasource; +@end + +@implementation XPRoomGraffitiGiftAnimationView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + self.userInteractionEnabled = NO; + self.timer = [XPWeakTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(dramGraffitiAnimationView) userInfo:@"" repeats:YES]; + } + return self; +} + +- (void)beginDrawAnimation { + self.index = 0; + for (int i = 0; i < self.pointArray.count; i++) { + NSArray * pointArray = self.pointArray[i]; + NSNumber * first = [pointArray firstObject]; + NSNumber * second = [pointArray lastObject]; + CGFloat x = first.floatValue / 1000.0 * KScreenWidth; + CGFloat y = second.floatValue / 1000.0 * KScreenHeight; + if (x <= 0 || x >= KScreenWidth || y <= 0 || y >= KScreenHeight) { + continue; + } + CGPoint point = CGPointMake(x, y); + [self.datasource addObject:[NSValue valueWithCGPoint:point]]; + } + self.timer.fireDate = NSDate.distantPast; +} + +- (void)endDrawAnimation { + self.timer.fireDate = NSDate.distantFuture; + [self.datasource removeAllObjects]; + self.index = 0; +} + + +- (void)dramGraffitiAnimationView { + if (self.index >= (self.datasource.count -1)) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + self.timer.fireDate = NSDate.distantFuture; + [self.datasource removeAllObjects]; + self.index = 0; + [self.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomGraffitiGiftAnimationViewCompletion:attachment:)]) { + [self.delegate xPRoomGraffitiGiftAnimationViewCompletion:self attachment:self.model]; + } + }); + return; + } + NSValue * valeu= [self.datasource safeObjectAtIndex1:self.index]; + CGPoint point = valeu.CGPointValue; + UIImageView * imageView = [[UIImageView alloc] init]; + imageView.layer.masksToBounds = YES; + imageView.contentMode = UIViewContentModeScaleAspectFill; + imageView.image = self.giftImage; + imageView.frame = CGRectMake(point.x, point.y, 20, 20); + [self addSubview:imageView]; + self.index++; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomLicneseHourRankView.h b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomLicneseHourRankView.h new file mode 100644 index 00000000..0370189e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomLicneseHourRankView.h @@ -0,0 +1,24 @@ +// +// YMRoomLicneseHourRankView.h +// YUMI +// +// Created by YUMI on 2022/6/13. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class RoomHalfHourRankModel, XPRoomLicneseHourRankView; +@protocol XPRoomLicneseHourRankViewDelegate + +- (void)xPRoomLicneseHourRankView:(XPRoomLicneseHourRankView *)view rankInfo:(RoomHalfHourRankModel *)rankInfo; + +@end +@interface XPRoomLicneseHourRankView : UIView +///牌照房小时榜信息 +@property (nonatomic,copy) RoomHalfHourRankModel * licneseRankInfo; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomLicneseHourRankView.m b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomLicneseHourRankView.m new file mode 100644 index 00000000..7f1d87c8 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomLicneseHourRankView.m @@ -0,0 +1,132 @@ +// +// YMRoomLicneseHourRankView.m +// YUMI +// +// Created by YUMI on 2022/6/13. +// + +#import "XPRoomLicneseHourRankView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +///Model +#import "RoomHalfHourRankModel.h" + +@interface XPRoomLicneseHourRankView () + +///背景 +@property (nonatomic,strong) UIImageView *backImageView; +///标题 +@property (nonatomic,strong) UILabel *titleLabel; +///围观 +@property (nonatomic,strong) UIButton *enterButton; + +@end + +@implementation XPRoomLicneseHourRankView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backImageView]; + [self addSubview:self.titleLabel]; + [self addSubview:self.enterButton]; +} + +- (void)initSubViewConstraints { + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self).offset(64); + make.right.mas_equalTo(self.enterButton.mas_left).offset(-5); + make.centerY.mas_equalTo(self); + }]; + + [self.enterButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(44, 20)); + make.centerY.mas_equalTo(self); + make.right.mas_equalTo(self).offset(-6); + }]; +} + +#pragma mark - Event Response +- (void)backTapRecognizer { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomLicneseHourRankView:rankInfo:)]) { + [self.delegate xPRoomLicneseHourRankView:self rankInfo:self.licneseRankInfo]; + } +} + +#pragma mark - Getters And Setters +- (void)setLicneseRankInfo:(RoomHalfHourRankModel *)licneseRankInfo { + _licneseRankInfo = licneseRankInfo; + if (_licneseRankInfo) { + NSString *nick = _licneseRankInfo.title; + if(nick.length > 6) { + nick = [NSString stringWithFormat:@"%@", [nick substringToIndex:6]]; + } + NSDictionary * dic = @{NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:[UIColor whiteColor]}; + NSDictionary * hightDic = @{NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:[DJDKMIMOMColor appMainColor]}; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + [attribute appendAttributedString:[[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPRoomLicneseHourRankView0") attributes:dic]]; + if (nick.length > 0) { + [attribute appendAttributedString:[[NSMutableAttributedString alloc] initWithString:nick attributes:hightDic]]; + } + + if (licneseRankInfo.desc.length > 0) { + [attribute appendAttributedString:[[NSMutableAttributedString alloc] initWithString:licneseRankInfo.desc attributes:dic]]; + } + [attribute appendAttributedString:[[NSMutableAttributedString alloc] initWithString:@"TOP1" attributes:hightDic]]; + self.titleLabel.attributedText = attribute; + self.titleLabel.textAlignment = NSTextAlignmentCenter; + } +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.image = [UIImage imageNamed:@"room_licnese_hour_rank_bg"]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(backTapRecognizer)]; + [_backImageView addGestureRecognizer:tap]; + } + return _backImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.numberOfLines = 2; + } + return _titleLabel; +} + +- (UIButton *)enterButton { + if (!_enterButton) { + _enterButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_enterButton setTitle:YMLocalizedString(@"XPRoomLicneseHourRankView1") forState:UIControlStateNormal]; + [_enterButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _enterButton.titleLabel.font = [UIFont systemFontOfSize:10]; + [_enterButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xd93d5f), UIColorFromRGB(0xfff494)] gradientType:GradientTypeTopToBottom imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _enterButton.layer.masksToBounds = YES; + _enterButton.layer.cornerRadius = 10; + _enterButton.layer.borderColor = [UIColor whiteColor].CGColor; + _enterButton.layer.borderWidth = 0.5; + _enterButton.userInteractionEnabled = NO; + } + return _enterButton; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomLuckyBigPrizeView.h b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomLuckyBigPrizeView.h new file mode 100644 index 00000000..2339d7b2 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomLuckyBigPrizeView.h @@ -0,0 +1,25 @@ +// +// YMRoomLuckyBigPrizeView.h +// YUMI +// +// Created by YUMI on 2022/6/15. +// + +#import +#import "PIBaseAnimationViewModel.h" +NS_ASSUME_NONNULL_BEGIN +@class XPGiftBigPrizeModel, XPRoomLuckyBigPrizeView; +@protocol XPRoomLuckyBigPrizeViewDelegate + +- (void)xPRoomLuckyBigPrizeView:(XPRoomLuckyBigPrizeView *)view luckyGiftInfo:(PIBaseAnimationViewModel *)giftInfo; + +@end + +@interface XPRoomLuckyBigPrizeView : UIView +///礼物信息 +@property (nonatomic,strong) PIBaseAnimationViewModel *giftInfo; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomLuckyBigPrizeView.m b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomLuckyBigPrizeView.m new file mode 100644 index 00000000..5df439cd --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomLuckyBigPrizeView.m @@ -0,0 +1,126 @@ +// +// YMRoomLuckyBigPrizeView.m +// YUMI +// +// Created by YUMI on 2022/6/15. +// + +#import "XPRoomLuckyBigPrizeView.h" +///Third +#import +#import "SVGAParser.h" +#import "SVGA.h" +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +///Model +#import "XPGiftBigPrizeModel.h" +///View +#import "XPSVGAPlayer.h" + + +@interface XPRoomLuckyBigPrizeView () +///动画管理类 +@property (strong, nonatomic) SVGAParser *parser; +@property (nonatomic, strong) XPSVGAPlayer *giftImageView; +@end + +@implementation XPRoomLuckyBigPrizeView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.giftImageView]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognizer:)]; + [self addGestureRecognizer:tap]; +} + +- (void)initSubViewConstraints { + [self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; +} + +#pragma mark - Event Response +- (void)tapRecognizer:(UITapGestureRecognizer *)tap { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomLuckyBigPrizeView:luckyGiftInfo:)]) { + [self.delegate xPRoomLuckyBigPrizeView:self luckyGiftInfo:self.giftInfo]; + } +} + +#pragma mark - Getters And Setters +- (void)setGiftInfo:(PIBaseAnimationViewModel*)giftInfo { + _giftInfo = giftInfo; + if (_giftInfo) { + NSString * nick = _giftInfo.nick; + if (nick.length > 6) { + nick = [nick substringToIndex:6]; + } + CGFloat fontSize = 22; + NSDictionary * dic = @{NSFontAttributeName:[UIFont systemFontOfSize:fontSize], NSForegroundColorAttributeName:[UIColor whiteColor]}; + NSDictionary * mainDic = @{NSFontAttributeName:[UIFont systemFontOfSize:fontSize], NSForegroundColorAttributeName:[DJDKMIMOMColor appMainColor]}; + NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] init]; + [attributedString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:@"恭喜 " attributes:dic]]; + if (nick) { + [attributedString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:nick attributes:mainDic]]; + } + + [attributedString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:YMLocalizedString(@"XPRoomLuckyBigPrizeView1"),_giftInfo.luckyBagName] attributes:dic]]; + if (giftInfo.goldPrice) { + [attributedString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:giftInfo.goldPrice attributes:mainDic]]; + } + [attributedString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:giftInfo.giftName attributes:mainDic]]; + NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new]; + paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping; + paragraphStyle.alignment = NSTextAlignmentLeft; + paragraphStyle.lineSpacing = 4.0f;//行间距 + // 强制排版(从左到右) + paragraphStyle.alignment = NSTextAlignmentLeft; + paragraphStyle.baseWritingDirection = NSWritingDirectionLeftToRight; + [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, attributedString.length)]; + if (_giftInfo.isInRoomVisiable) { + [self.giftImageView setHidden:YES forKey:@"img_206"]; + } else { + [self.giftImageView setHidden:NO forKey:@"img_206"]; + } + @kWeakify(self); + [self.giftImageView setAttributedText:attributedString forKey:@"fdpp_copywriting"]; + NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/lucky_gift_streamer.svga", API_Image_URL]; + [self.parser parseWithURL:[NSURL URLWithString:anatomiser1Name] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { + @kStrongify(self); + self.hidden = NO; + self.giftImageView.hidden = NO; + self.giftImageView.videoItem = videoItem; + self.giftImageView.loops = 1; + self.giftImageView.clearsAfterStop = YES; + [self.giftImageView startAnimation]; + } failureBlock:^(NSError * _Nonnull error) { + + }]; + } +} + +- (XPSVGAPlayer *)giftImageView { + if (!_giftImageView) { + _giftImageView = [[XPSVGAPlayer alloc]init]; + _giftImageView.backgroundColor = [UIColor clearColor]; + _giftImageView.userInteractionEnabled = NO; + } + return _giftImageView; +} + +- (SVGAParser *)parser { + if (!_parser) { + _parser = [[SVGAParser alloc]init]; + } + return _parser; +} +@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomNobleLevelUpView.h b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomNobleLevelUpView.h new file mode 100644 index 00000000..98d49ed4 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomNobleLevelUpView.h @@ -0,0 +1,19 @@ +// +// YMRoomNobleLevelUpView.h +// YUMI +// +// Created by YUMI on 2022/1/10. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomNobleLevelUpView : UIView + +///贵族升级的信息 +@property (nonatomic,copy) NSDictionary * nobleInfo; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomNobleLevelUpView.m b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomNobleLevelUpView.m new file mode 100644 index 00000000..10896023 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomNobleLevelUpView.m @@ -0,0 +1,161 @@ +// +// YMRoomNobleLevelUpView.m +// YUMI +// +// Created by YUMI on 2022/1/10. +// + +#import "XPRoomNobleLevelUpView.h" +///Third +#import +#import +#import "YUMIMacroUitls.h" +#import "ThemeColor+Room.h" +#import "NetImageView.h" +#import + +@interface XPRoomNobleLevelUpView () +///动画管理类 +@property (strong, nonatomic) SVGAParser *parser; + +///贵族特效 +@property (nonatomic,strong) SVGAImageView *nobleView; + +@property (nonatomic, strong) UILabel *firstLabel; +///用户头像 +@property (nonatomic, strong) NetImageView *imageView; +///贵族信息 +@property (nonatomic, strong) UILabel *secondLabel; + +@end + + +@implementation XPRoomNobleLevelUpView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.nobleView]; +} + +- (void)initSubViewConstraints { + [self.nobleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self); + make.height.mas_equalTo(90); + }]; +} + +- (NSMutableAttributedString *)createAttribute:(NSString * )text color:(UIColor *)color { + NSDictionary * attribute = @{NSFontAttributeName:[UIFont systemFontOfSize:22], NSForegroundColorAttributeName:color}; + NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:text attributes:attribute]; + return attr; +} + +#pragma mark - Getters And Setters +- (void)setNobleInfo:(NSDictionary *)nobleInfo { + _nobleInfo = nobleInfo; + self.imageView.imageUrl = nobleInfo[@"avatar"]; + + if (nobleInfo) { + @kWeakify(self); + [self.parser parseWithURL:[NSURL URLWithString:nobleInfo[@"floatPic"]] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { + @kStrongify(self); + self.nobleView.loops = 1; + self.nobleView.clearsAfterStop = NO; + self.nobleView.videoItem = videoItem; + [self.nobleView startAnimation]; + } failureBlock:^(NSError * _Nullable error) { + + }]; + ///绘制自定义view + [self.nobleView setDrawingBlock:^(CALayer *contentLayer, NSInteger frameIndex) { + @kStrongify(self); + CGFloat height = contentLayer.bounds.size.height; + CGFloat totalWidth = 0; + + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + [attribute appendAttributedString:[self createAttribute:@"引爆全场!恭喜 " color:[UIColor whiteColor]]]; + CGFloat width1 = [attribute.string boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, height) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:22]} context:nil].size.width; + self.firstLabel.attributedText = attribute; + + NSMutableAttributedString * attribute1 = [[NSMutableAttributedString alloc] init]; + [attribute1 appendAttributedString:[self createAttribute:@" " color:[DJDKMIMOMColor giftBroadcastNumberColor]]]; + [attribute1 appendAttributedString:[self createAttribute:nobleInfo[@"nick"] color:[DJDKMIMOMColor giftBroadcastNumberColor]]]; + [attribute1 appendAttributedString:[self createAttribute:@" " color:[DJDKMIMOMColor giftBroadcastNumberColor]]]; + [attribute1 appendAttributedString:[self createAttribute:[NSString stringWithFormat:@"贵族身份升级为%@!", nobleInfo[@"currVipName"]] color:[UIColor whiteColor]]]; + CGFloat width2 = [attribute1.string boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, height) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:22]} context:nil].size.width; + self.secondLabel.attributedText = attribute1; + + totalWidth += ((width1 + width2) * 12/22 + 50); + CGFloat originL = (KScreenWidth - (totalWidth > KScreenWidth ? KScreenWidth : totalWidth)) * 0.5; + if (KScreenHeight != 667) {///在iOS14.0上的iPhone8上,无法显示头像,暂时隐藏头像 + self.firstLabel.layer.frame = CGRectMake(originL, 0, width1, height); + [contentLayer addSublayer:self.firstLabel.layer]; + UIImageView *imageView = [[UIImageView alloc] initWithImage:self.imageView.image]; + imageView.layer.frame = CGRectMake(originL + width1, (height - 50) * 0.5, 50, 50); + imageView.layer.cornerRadius = 25.0f; + imageView.layer.masksToBounds = YES; + [contentLayer addSublayer:imageView.layer]; + self.secondLabel.layer.frame = CGRectMake(originL + width1 + 50, 0, width2, height); + [contentLayer addSublayer:self.secondLabel.layer]; + } else { + totalWidth -= 50; + CGFloat originL = (KScreenWidth - (totalWidth > KScreenWidth ? KScreenWidth : totalWidth)) * 0.5; + self.firstLabel.layer.frame = CGRectMake(originL, 0, width1, height); + [contentLayer addSublayer:self.firstLabel.layer]; + self.secondLabel.layer.frame = CGRectMake(originL + width1, 0, width2, height); + [contentLayer addSublayer:self.secondLabel.layer]; + } + } forKey:@"noble_text_tx"]; + } +} + +- (SVGAImageView *)nobleView { + if (!_nobleView) { + _nobleView = [[SVGAImageView alloc]init]; + _nobleView.backgroundColor = [UIColor clearColor]; + _nobleView.userInteractionEnabled = NO; + } + return _nobleView; +} + +- (SVGAParser *)parser { + if (!_parser) { + _parser = [[SVGAParser alloc]init]; + } + return _parser; +} + +- (UILabel *)firstLabel { + if (!_firstLabel) { + _firstLabel = [[UILabel alloc] init]; + } + return _firstLabel; +} + +- (UILabel *)secondLabel{ + if (!_secondLabel) { + _secondLabel = [[UILabel alloc] init]; + } + return _secondLabel; +} + +- (NetImageView *)imageView { + if (!_imageView) { + NetImageConfig *config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.autoLoad = YES; + _imageView = [[NetImageView alloc] initWithConfig:config]; + } + return _imageView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomStarKitchenBannerView.h b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomStarKitchenBannerView.h new file mode 100644 index 00000000..aeb2ae17 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomStarKitchenBannerView.h @@ -0,0 +1,26 @@ +// +// XPRoomStarKitchenBannerView.h +// YuMi +// +// Created by YuMi on 2022/12/7. +// + +#import +#import "XPRoomStarKitchenModel.h" + +NS_ASSUME_NONNULL_BEGIN +@class XPRoomStarKitchenBannerView; +@protocol XPRoomStarKitchenBannerViewDelegate + +- (void)xPRoomStarKitchenBannerView:(XPRoomStarKitchenBannerView *)view didClick:(XPRoomStarKitchenModel *)starModel; + +@end + + +@interface XPRoomStarKitchenBannerView : UIView +@property (nonatomic,assign) BOOL isSvga; +@property (nonatomic,strong) XPRoomStarKitchenModel *starModel; +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomStarKitchenBannerView.m b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomStarKitchenBannerView.m new file mode 100644 index 00000000..de58144c --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomStarKitchenBannerView.m @@ -0,0 +1,138 @@ +// +// XPRoomStarKitchenBannerView.m +// YuMi +// +// Created by YuMi on 2022/12/7. +// +#import +#import "XPRoomStarKitchenBannerView.h" +///Third +#import +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +@interface XPRoomStarKitchenBannerView() + +@property (strong, nonatomic) SVGAParser *parser; +@property (nonatomic,strong) SVGAImageView *svgaView; +@property (nonatomic,strong) UIImageView *bgImageView; +@property (nonatomic,strong) UILabel *titleView; +@property (nonatomic,strong) UIButton *clickBtn; + +@end +@implementation XPRoomStarKitchenBannerView + +-(instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if(self){ + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.bgImageView]; + [self addSubview:self.svgaView]; + [self addSubview:self.titleView]; + [self addSubview:self.clickBtn]; + +} +- (void)initSubViewConstraints { + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self); + }]; + [self.svgaView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self); + }]; + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(21)); + make.left.mas_equalTo(kGetScaleWidth(85)); + make.bottom.equalTo(self.mas_bottom).mas_offset(-kGetScaleWidth(13.5)); + make.right.mas_equalTo(-kGetScaleWidth(53.5)); + }]; + + [self.clickBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self); + }]; + +} +-(void)setStarModel:(XPRoomStarKitchenModel *)starModel{ + _starModel = starModel; + NSString *name = _starModel.nick.length < 7 ? _starModel.nick : [NSString stringWithFormat:@"%@...",[_starModel.nick substringWithRange:NSMakeRange(0, 6)]]; + NSString *title = [NSString stringWithFormat:YMLocalizedString(@"XPRoomStarKitchenBannerView0"),name,_starModel.itemMultiple,_starModel.diamonds]; + [self.titleView mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(_isSvga == YES && KScreenWidth == 320 ? 18 : 21)); + }]; + NSMutableAttributedString *att = [[NSMutableAttributedString alloc]initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:10],NSForegroundColorAttributeName:[UIColor whiteColor]}]; + [att addAttributes:@{NSForegroundColorAttributeName:UIColorFromRGB(0xFEF23E)} range:[title rangeOfString:name]]; + [att addAttributes:@{NSForegroundColorAttributeName:UIColorFromRGB(0x00EAFF)} range:[title rangeOfString:[NSString stringWithFormat:@" %@",_starModel.itemMultiple]]]; + [att addAttributes:@{NSForegroundColorAttributeName:UIColorFromRGB(0x00EAFF)} range:[title rangeOfString:[NSString stringWithFormat:@" %@",_starModel.diamonds]]]; + if(_isSvga == YES){ + self.bgImageView.hidden = YES; + self.svgaView.hidden = NO; + self.titleView.hidden = NO; + self.titleView.attributedText = att; + @kWeakify(self); + [self.parser parseWithNamed:@"Star_kitchen" inBundle:[NSBundle mainBundle] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { + @kStrongify(self); + self.svgaView.loops = 1; + self.svgaView.clearsAfterStop = NO; + self.svgaView.videoItem = videoItem; + // [self.svgaView setAttributedText:att forKey:@"noble_text_tx"]; + [self.svgaView startAnimation]; + } failureBlock:^(NSError * _Nonnull error) { + + }]; + }else{ + self.bgImageView.hidden = NO; + self.titleView.hidden = NO; + self.svgaView.hidden = YES; + self.titleView.attributedText = att; + } +} +-(void)clickAction{ + if(self.delegate && [self.delegate respondsToSelector:@selector(xPRoomStarKitchenBannerView:didClick:)]){ + [self.delegate xPRoomStarKitchenBannerView:self didClick:self.starModel]; + } +} +#pragma mark -懒加载 +- (UIImageView *)bgImageView{ + if (!_bgImageView){ + _bgImageView = [UIImageView new]; + _bgImageView.image = [UIImage imageNamed:@"room_star_kitchen"]; + _bgImageView.userInteractionEnabled = YES; + } + return _bgImageView; +} +-(UILabel *)titleView{ + if (!_titleView){ + _titleView = [UILabel new]; + _titleView.textAlignment = NSTextAlignmentCenter; + _titleView.numberOfLines = 2; + } + return _titleView; +} +- (SVGAParser *)parser { + if (!_parser) { + _parser = [[SVGAParser alloc]init]; + } + return _parser; +} +- (SVGAImageView *)svgaView { + if (!_svgaView) { + _svgaView= [[SVGAImageView alloc]init]; + _svgaView.backgroundColor = [UIColor clearColor]; + _svgaView.userInteractionEnabled = YES; + } + return _svgaView; +} +-(UIButton *)clickBtn{ + if (!_clickBtn){ + _clickBtn = [UIButton new]; + [_clickBtn addTarget:self action:@selector(clickAction) forControlEvents:UIControlEventTouchUpInside]; + + } + return _clickBtn; +} +@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomYearActivityView.h b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomYearActivityView.h new file mode 100644 index 00000000..6a93e253 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomYearActivityView.h @@ -0,0 +1,29 @@ +// +// YMRoomYearActivityView.h +// YUMI +// +// Created by GLEN on 2022/11/26. +// 年度活动 + +#import +#import "GiftReceiveInfoModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPRoomYearActivityViewDelegate + +///点击了进入房间 +- (void)xPRoomYearActivityViewEnterRoom:(NSString *)roomUid; + +@end + +@interface XPRoomYearActivityView : UIView + +@property (nonatomic, strong) GiftReceiveInfoModel *model; +///代理 +@property (nonatomic,weak) id delegate; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomYearActivityView.m b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomYearActivityView.m new file mode 100644 index 00000000..de611596 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomYearActivityView.m @@ -0,0 +1,214 @@ +// +// YMRoomYearActivityView.m +// YUMI +// +// Created by GLEN on 2022/11/26. +// + +#import "XPRoomYearActivityView.h" +///Third +#import +///Tool +#import "ThemeColor+Room.h" +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +///Model +#import "RoomHalfHourRankModel.h" +///View +#import "NetImageView.h" + +@interface XPRoomYearActivityView() + +///背景 +@property (nonatomic,strong) UIImageView *bgImageView; +///icon +@property (nonatomic,strong) NetImageView *sendAvatar; +///头像 +@property (nonatomic,strong) NetImageView *receiveAvatar; +///恭喜 +@property (nonatomic,strong) UILabel *sendNick; +///昵称 +@property (nonatomic,strong) UILabel *receiveNick; +///描述 +@property (nonatomic, strong) UILabel *descLabel; +///数量 +@property (nonatomic,strong) UILabel *countLabel; +///排行 +@property (nonatomic, strong) UIButton *gotoButton; + +@end + +@implementation XPRoomYearActivityView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +- (void)layoutSubviews { + [super layoutSubviews]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.bgImageView]; + [self addSubview:self.sendNick]; + [self addSubview:self.sendAvatar]; + [self addSubview:self.descLabel]; + [self addSubview:self.receiveNick]; + [self addSubview:self.receiveAvatar]; + [self addSubview:self.countLabel]; + [self addSubview:self.gotoButton]; +} + +- (void)initSubViewConstraints { + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; + [self.sendNick mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(35*KScreenWidth/375); + make.centerY.mas_equalTo(self.bgImageView); + }]; + [self.sendAvatar mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.sendNick.mas_right).mas_offset(3); + make.centerY.mas_equalTo(self); + make.width.height.mas_equalTo(20); + }]; + [self.descLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.sendAvatar.mas_right).mas_offset(3); + make.centerY.mas_equalTo(self); + }]; + [self.receiveNick mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.descLabel.mas_right).mas_offset(3); + make.centerY.mas_equalTo(self); + }]; + [self.receiveAvatar mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.receiveNick.mas_right).mas_offset(3); + make.centerY.mas_equalTo(self); + make.width.height.mas_equalTo(20); + }]; + [self.countLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.receiveAvatar.mas_right).mas_offset(3); + make.centerY.mas_equalTo(self); + }]; + [self.gotoButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-31*KScreenWidth / 375); + make.centerY.mas_equalTo(self); + make.size.mas_equalTo(CGSizeMake(40, 18)); + }]; +} + +- (void)setModel:(GiftReceiveInfoModel *)model { + _model = model; + if (model) { + self.receiveAvatar.imageUrl = model.recvUserAvatar; + self.sendAvatar.imageUrl = model.sendUserAvatar; + if (model.recvUserNick.length > 4) { + model.recvUserNick = [NSString stringWithFormat:@"%@...", [model.recvUserNick substringToIndex:4]]; + } + if (model.sendUserNick.length > 4) { + model.sendUserNick = [NSString stringWithFormat:@"%@...", [model.sendUserNick substringToIndex:4]]; + } + if (model.giftName.length > 6) { + model.giftName = [model.giftName substringToIndex:6]; + } + self.sendNick.text = model.sendUserNick; + self.receiveNick.text = model.recvUserNick; + self.countLabel.text = [NSString stringWithFormat:@"%@ x%ld", model.giftName, model.giftNum]; + } +} + +- (void)onGotoButtonClick:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomYearActivityViewEnterRoom:)]) { + [self.delegate xPRoomYearActivityViewEnterRoom:[NSString stringWithFormat:@"%ld", self.model.roomUid]]; + } +} + +#pragma mark - Getters And Setters +- (UIImageView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[UIImageView alloc] init]; + _bgImageView.image = [UIImage imageNamed:@"YearActivity_bg"]; + _bgImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _bgImageView; +} + +- (NetImageView *)sendAvatar { + if (!_sendAvatar) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + _sendAvatar = [[NetImageView alloc] initWithConfig:config]; + _sendAvatar.layer.masksToBounds = YES; + _sendAvatar.layer.cornerRadius = 10; + _sendAvatar.layer.borderColor = UIColorFromRGB(0xFBC200).CGColor; + _sendAvatar.layer.borderWidth = 1; + } + return _sendAvatar; +} + +- (UILabel *)sendNick { + if (!_sendNick) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:12]; + label.textColor = UIColorFromRGB(0xFBC200); + _sendNick = label; + } + return _sendNick; +} + +- (NetImageView *)receiveAvatar { + if (!_receiveAvatar) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + _receiveAvatar = [[NetImageView alloc] initWithConfig:config]; + _receiveAvatar.layer.masksToBounds = YES; + _receiveAvatar.layer.cornerRadius = 10; + _receiveAvatar.layer.borderColor = UIColorFromRGB(0xFBC200).CGColor; + _receiveAvatar.layer.borderWidth = 1; + } + return _receiveAvatar; +} + +- (UILabel *)receiveNick { + if (!_receiveNick) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:12]; + label.textColor = UIColorFromRGB(0xFBC200); + _receiveNick = label; + } + return _receiveNick; +} + +- (UILabel *)descLabel { + if (!_descLabel) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:12]; + label.textColor = [UIColor whiteColor]; + label.text = YMLocalizedString(@"XPRoomYearActivityView0"); + _descLabel = label; + } + return _descLabel; +} + +- (UILabel *)countLabel { + if (!_countLabel) { + _countLabel = [[UILabel alloc] init]; + _countLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightBold]; + _countLabel.textColor = UIColorFromRGB(0x80F9FF); + } + return _countLabel; +} +- (UIButton *)gotoButton { + if (!_gotoButton) { + _gotoButton = [[UIButton alloc] init]; + [_gotoButton setBackgroundImage:[UIImage imageNamed:@"YearActivity_goto"] forState:UIControlStateNormal]; + [_gotoButton addTarget:self action:@selector(onGotoButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + } + return _gotoButton; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberBrightnessHitRegard.h b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberBrightnessHitRegard.h deleted file mode 100644 index 0aadf7a1..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberBrightnessHitRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomAnimationBaseView.h -// YUMI -// -// Created by YUMI on 2021/11/22. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberBrightnessHitRegard : UIView - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberBrightnessHitRegard.m b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberBrightnessHitRegard.m deleted file mode 100644 index cb980203..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberBrightnessHitRegard.m +++ /dev/null @@ -1,25 +0,0 @@ -// -// YMRoomAnimationBaseView.m -// YUMI -// -// Created by YUMI on 2021/11/22. -// - -#import "YUMIChamberBrightnessHitRegard.h" -#import "NSArray+Safe.h" -@implementation YUMIChamberBrightnessHitRegard - - -- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { - for (NSInteger i = (self.subviews.count - 1) ; i >= 0 ; i--) { - UIView * subView = [self.subviews secureGroalTowardsIndictowardsrix1:i]; - CGPoint convertPoint = [subView convertPoint:point fromView:self]; - if (CGRectContainsPoint(subView.bounds, convertPoint)) { - return [subView hitTest:convertPoint withEvent:event]; - } - } - return nil; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberBrightnessRegard.h b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberBrightnessRegard.h deleted file mode 100644 index 0e727c0f..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberBrightnessRegard.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMRoomAnimationView.h -// YUMI -// -// Created by YUMI on 2021/12/6. -// - -#import -#import "YUMIChamberBrightnessHitRegard.h" -#import "ChamberHostRepresendtation.h" -#import "ChamberGuestRepresendtation.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberBrightnessRegard : YUMIChamberBrightnessHitRegard -- (instancetype)initWithDelegate:(id)delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberBrightnessRegard.m b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberBrightnessRegard.m deleted file mode 100644 index 44798de7..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberBrightnessRegard.m +++ /dev/null @@ -1,2037 +0,0 @@ -// -// YMRoomAnimationView.m -// YUMI -// -// Created by YUMI on 2021/12/6. -// - -#import "YUMIChamberBrightnessRegard.h" -#import -#import -#import -#import -#import "QGVAPConfigModel.h" -#import "UIView+VAP.h" -#import -#import -#import "YUMIPresentStorage.h" -#import "YUMIMacroUitls.h" -#import "ThemeColor+Room.h" -#import "NetIndicateRegard.h" -#import "YUMIChamberPresentBrightnessAnatomiser.h" -#import "XCCurrentVCStackExecutive.h" -#import "AccountAbstractStorage.h" -#import "ClientDisposition.h" -#import "MiecreoscoopeMHTueueMatrix.h" -#import "MiecreoscoopeStateMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "PresentAchieveAbstractMatrix.h" -#import "PresentAbstractMatrix.h" -#import "ChamberAbstractMatrix.h" -#import "AttachmentMatrix.h" -#import "YUMIPresentBigCaptureMatrix.h" -#import "YUMIPresentOriflammeConsumerAbstractMatrix.h" -#import "YUMIChamberPresentBroadCastMatrix.h" -#import "YUMICommunicationRemoteExtMatrix.h" -#import "EngagementAbstractMatrix.h" -#import "ThroughoutChamberCombatCaptureMatrix.h" -#import "ChamberHalfHourRateMatrix.h" -#import "ClientDisposition.h" -#import "YUMIChamberPresentOriflammeRegard.h" -#import "YUMIChamberPresentPingbackRegard.h" -#import "YUMIChamberConfectioneryPresentRegard.h" -#import "YUMIChamberEngagementBrightnessRegard.h" -#import "YUMIChamberMagnificentPrototypeUpwardsRegard.h" -#import "QGVAPWrapView.h" -#import "YUMIThroughoutChamberCombatCaptureRegard.h" -#import "YUMIChamberRegardGovernancer.h" -#import "YUMIChamberKellegRateOriflammeRegard.h" -#import "YUMIChamberImportHideTipRegard.h" -#import "YUMIChamberLicneseHourRateRegard.h" -#import "YUMIChamberFortunateBigCaptureRegard.h" -#import "YUMIChamberPresentCompoundRegard.h" -#import "YUMIMarchingBrightnessRegard.h" -#import "YUMIChamberGraffitiPresentBrightnessRegard.h" -#import "YUMIChamberSatelliteKitchenOriflammeRegard.h" -#import "YUMITissueRegardGovernancer.h" -@interface YUMIChamberBrightnessRegard () -@property (nonatomic,strong) YUMIChamberBrightnessHitRegard * lowPrototypeRegard; -@property (nonatomic,strong) YUMIChamberBrightnessHitRegard * middlePrototypeRegard; -@property (nonatomic,strong) YUMIChamberBrightnessHitRegard * highProttypeRegard; -@property (strong, nonatomic) SVGAParser *anatomiser; -@property (nonatomic, strong) YUMIChamberPresentBrightnessAnatomiser *vepporAnatomiser; -@property (nonatomic,strong) SVGAImageView *presentImpressionRegard; -@property (nonatomic, strong) VAPView *vepporPresentImpressionRegard; -@property (nonatomic,strong) SVGAImageView *fortunatePresentImpressionRegard; -@property (nonatomic, strong) VAPView *fortunateVepporPresentImpressionRegard; -@property (nonatomic,weak) iddelegate; -@property (strong,nonatomic)NSMutableSet * oriflammeDequePond; -@property (strong,nonatomic)NSMutableSet * oriflammeVisiablePond; -@property (nonatomic,strong)dispatch_source_t presentImpressionIntratemper; - - -@property (nonatomic,strong) NSMutableArray *presentPingencourageFormation; -#pragma mark - 送礼物的动画的 -@property (nonatomic,strong) NSMutableArray *presentFormation; -@property (nonatomic ,strong)dispatch_source_t presentIntratemper; -@property (nonatomic,strong) NSMutableSet * presentReuseGarment; -@property (nonatomic,strong) NSMutableSet * presentVisibleGarment; -@property (nonatomic,strong) NSMutableArray *compoundPresentFormation; -@property (nonatomic,assign) BOOL isBignessPresentAnimating; -#pragma mark - 进房座驾动画的 -@property (nonatomic, strong) NSMutableArray *automobileImpressionFormation; -@property (nonatomic,strong) SVGAImageView *automobileImpressionRegard; -@property (nonatomic, strong) VAPView *automobileVepporImpressionRegard; -#pragma mark - 进房动画的 -@property (nonatomic, strong) NSMutableArray *importImpressionFormation; -@property (nonatomic,strong) SVGAImageView *importImpressionRegard; -#pragma mark - 相亲动画的 -@property (nonatomic, strong) NSMutableArray *engagementImpressionFormation; -@property (nonatomic,strong) SVGAImageView *engagementImpressionRegard; -#pragma mark - 跨房PK -@property (nonatomic, strong) NSMutableArray *throughoutChamberCombatFormation; -#pragma mark - 航海 -@property (nonatomic, strong) NSMutableArray *marchingFormation; -#pragma mark - 涂鸦礼物 -@property (nonatomic, strong) NSMutableArray *doodlePresentFormation; -#pragma mark - 心愿礼物 -@property (nonatomic,strong) SVGAImageView *sequencirePresentImpressionRegard; - -///礼物飘屏 PresentAchieveAbstractMatrix -@property(nonatomic,strong) NSMutableArray *animationListA; -///玩法飘屏 YUMIPresentBigCaptureMatrix -@property(nonatomic,strong) NSMutableArray *animationListB; -///礼物飘屏正在播放中 -@property(nonatomic,assign) BOOL isPlayOfA; -///玩法飘屏正在播放中 -@property(nonatomic,assign) BOOL isPlayOfB; -@end - -@implementation YUMIChamberBrightnessRegard - -- (void)dealloc { - [NSObject cancelPreviousPerformRequestsWithTarget:self]; - [[NIMSDK sharedSDK].broadcastManager removeDelegate:self]; -} - -- (instancetype)initWithDelegate:(id)delegate { - self = [super init]; - if (self) { - [[NIMSDK sharedSDK].broadcastManager addDelegate:self]; - self.delegate = delegate; - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.lowPrototypeRegard]; - [self addSubview:self.middlePrototypeRegard]; - [self addSubview:self.highProttypeRegard]; -} - -- (void)initChildLyRestrictions { - [self.lowPrototypeRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.middlePrototypeRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.highProttypeRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; -} - -- (BOOL)isInYoudCompetition { - BOOL isGamePlaying = NO; - if (self.delegate.acquireChamberAbstract.type == ChamberGenre_MiniGame) { - for (int i = -1; i<5; i++) { - NSMutableDictionary * micQueue = self.delegate.acquireMiecreoscoopeInthecaseofmtowardsion; - MiecreoscoopeMHTueueMatrix *micSequence = [micQueue objectForKey:[NSString stringWithFormat:@"%d", i]]; - if (micSequence == nil || micSequence.userInfo == nil) { - continue; - } - if (micSequence.userInfo.uid == [AccountAbstractStorage instance].acquireCid.integerValue && micSequence.userInfo.gameStatus == LittleGameDisportPosition_Plying) { - isGamePlaying = YES; - break; - } - } - } - return isGamePlaying; -} -#pragma mark - NIMBroadcastDelegate -- (void)onReceiveBroadcastMessage:(NIMBroadcastMessage *)broadcastMessage{ - if (![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - return; - } - if (broadcastMessage.content) { - NSDictionary *msgDictionary = [broadcastMessage.content toJSONGroal]; - AttachmentMatrix *attachment = [AttachmentMatrix mtowardsrixAboutJSON:msgDictionary[@"body"]]; - if (attachment.first == IndividualityCommunicationGenre_Gift && attachment.second == Custom_Message_Sub_Gift_ChannelNotify){ - [self achieveBroadcastPresent:attachment]; - } else if (attachment.first == IndividualityCommunicationGenre_Noble_VIP && attachment.second == Custom_Message_Sub_Room_Noble_LevelUp_Suspend) { - [self achieveMagnificentPrototypeUpwards:attachment]; - } - } -} - -#pragma mark - ChamberGuestRepresendtation -- (void)shankNEMCIndividualityCommunictowardsion:(NIMMessage *)message { - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentMatrix class]]) { - if (![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - AttachmentMatrix *attachment = (AttachmentMatrix *)obj.attachment; - if (attachment.first == IndividualityCommunicationGenre_Gift) { - PresentAchieveAbstractMatrix * receiveInfo = [PresentAchieveAbstractMatrix mtowardsrixAboutJSON:attachment.data]; - receiveInfo.isLuckyBagGift = attachment.second == Custom_Message_Sub_Gift_LuckySend; - receiveInfo.isBatch = YES; - [self achievePresentShankDischargePresentBrectifyness:attachment]; - } else if (attachment.first == IndividualityCommunicationGenre_AllMicroSend) { - PresentAchieveAbstractMatrix * receiveInfo = [PresentAchieveAbstractMatrix mtowardsrixAboutJSON:attachment.data]; - receiveInfo.isLuckyBagGift = (attachment.second == Custom_Message_Sub_AllMicroLuckySend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend); - receiveInfo.isBatch = (attachment.second == Custom_Message_Sub_AllBatchSend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend); - [self achievePresentShankDischargePresentBrectifyness:attachment]; - } - return; - } - AttachmentMatrix *attachment = (AttachmentMatrix *)obj.attachment; - if (attachment.first == IndividualityCommunicationGenre_Gift) { - PresentAchieveAbstractMatrix * receiveInfo = [PresentAchieveAbstractMatrix mtowardsrixAboutJSON:attachment.data]; - receiveInfo.isLuckyBagGift = attachment.second == Custom_Message_Sub_Gift_LuckySend; - receiveInfo.isBatch = YES; - [self achievePresentShankDischargePresentBrectifyness:attachment]; - if (receiveInfo.isLuckyBagGift) { - if (!self.delegate.acquireChamberAbstract.hasAnimationEffect) {return;} - if (receiveInfo.viewUrl.length > 0) { - [self prohibitiportInthecaseoftuntowardsePresentImpressionAboutVepporWeebsite:receiveInfo.viewUrl]; - } else { - NSString * svgaString = receiveInfo.luckyGiftSvgaUrl.length > 0 ? receiveInfo.luckyGiftSvgaUrl : receiveInfo.gift.luckyGiftSvgaUrl; - NSURL * luckyGiftSvgaUrl = [NSURL URLWithString:svgaString]; - if (luckyGiftSvgaUrl.absoluteString.length <= 0) { - luckyGiftSvgaUrl = [NSURL URLWithString:[NSString stringWithFormat:@"%@/room_lucky_gift_bg.svga", API_Image_URL]]; - } - [self prohibitiportInthecaseoftuntowardsePresentImpression:luckyGiftSvgaUrl]; - } - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [self achievePresent:receiveInfo]; - }); - } else { - [self achievePresent:receiveInfo]; - } - } else if (attachment.first == IndividualityCommunicationGenre_AllMicroSend) { - PresentAchieveAbstractMatrix * receiveInfo = [PresentAchieveAbstractMatrix mtowardsrixAboutJSON:attachment.data]; - receiveInfo.isLuckyBagGift = (attachment.second == Custom_Message_Sub_AllMicroLuckySend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend); - receiveInfo.isBatch = (attachment.second == Custom_Message_Sub_AllBatchSend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend); - [self achievePresentShankDischargePresentBrectifyness:attachment]; - if (receiveInfo.isLuckyBagGift) { - if (!self.delegate.acquireChamberAbstract.hasAnimationEffect) {return;} - if (receiveInfo.viewUrl.length > 0) { - [self prohibitiportInthecaseoftuntowardsePresentImpressionAboutVepporWeebsite:receiveInfo.viewUrl]; - } else { - NSString * svgaString = receiveInfo.luckyGiftSvgaUrl.length > 0 ? receiveInfo.luckyGiftSvgaUrl : receiveInfo.gift.luckyGiftSvgaUrl; - NSURL * luckyGiftSvgaUrl = [NSURL URLWithString:svgaString]; - if (luckyGiftSvgaUrl.absoluteString.length <= 0) { - luckyGiftSvgaUrl = [NSURL URLWithString:[NSString stringWithFormat:@"%@/room_lucky_gift_bg.svga", API_Image_URL]];; - } - [self prohibitiportInthecaseoftuntowardsePresentImpression:luckyGiftSvgaUrl]; - } - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [self achievePresent:receiveInfo]; - }); - } else { - [self achievePresent:receiveInfo]; - } - } else if (attachment.first == IndividualityCommunicationGenre_LuckyBag) { - [self achieveInthecaseoftuntowardsePresentConsiderableCapture:attachment]; - } else if (attachment.first == IndividualityCommunicationGenre_Look_Love && (attachment.second == Custom_Message_Sub_Look_Love_InRoom_NeedAllMicSend || attachment.second == Custom_Message_Sub_Look_Love_AllRoom_Notify) ) { - [self achieveConfectioneryTimberPresentHighProttype:attachment]; - } else if (attachment.first == IndividualityCommunicationGenre_Car_Notify && attachment.second == Custom_Message_Sub_Car_EnterRoom ) { - [self achieveDriveAutomobileImportChamber:attachment]; - } else if(attachment.first == IndividualityCommunicationGenre_RoomPlay_Dating && attachment.second == Custom_Message_Sub_Room_Play_Dating_Public_Result) { - [self chamberEngagementPublicConsequent:attachment]; - } else if(attachment.first == IndividualityCommunicationGenre_Across_Room_PK && attachment.second == Custom_Message_Sub_AcrossRoomPK_Result) { - [self throughoutChamberCombatOriflammeBrectifyness:attachment]; - } else if (attachment.first == IndividualityCommunicationGenre_Anchor_FansTeam && attachment.second == Custom_Message_Sub_FansTeam_Join_Success) { - PresentAchieveAbstractMatrix *receiveInfo = [[PresentAchieveAbstractMatrix alloc] init]; - PresentAbstractMatrix *giftInfo = [PresentAbstractMatrix mtowardsrixAboutJSON:attachment.data[@"giftVo"]]; - receiveInfo.gift = giftInfo; - receiveInfo.giftInfo = giftInfo; - [self achieveFantowardsicsSquadPresentShankDischargePresentBrectifyness:attachment]; - [self achievePresent:receiveInfo]; - } else if (attachment.first == IndividualityCommunicationGenre_Across_Room_PK && attachment.second == Custom_Message_Sub_AnchorPK_Result) { - [self throughoutChamberCombatOriflammeBrectifyness:attachment]; - } else if (attachment.first == IndividualityCommunicationGenre_Anchor_Hour_Rank && attachment.second == Custom_Message_Sub_Anchor_Hour_Rank) { - [self receiveAnchorHourList:attachment]; - } else if (attachment.first == IndividualityCommunicationGenre_Licnese_Hour_Rank && attachment.second == Custom_Message_Sub_Licnese_Hour_Rank) { - [self receiveLicneseHourList:attachment]; - } else if (attachment.first == IndividualityCommunicationGenre_Gift_Compound && attachment.second == Custom_Message_Sub_Gift_Compound) { - [self achievePresentSynthetise:attachment]; - } else if(attachment.first == IndividualityCommunicationGenre_Room_Sailing && (attachment.second == Custom_Message_Sub_Sailing_AllRoom_Notify || attachment.second == Custom_Message_Sub_Sailing_InRoom_NeedAllMicSend)) { - [self achieveChamberMarching:attachment]; - } else if(attachment.first == IndividualityCommunicationGenre_Graffiti_Gift) { - [self achieveChamberDoodlePresent:attachment]; - } else if(attachment.first == IndividualityCommunicationGenre_Graffiti_Star_Kitchen){ - [self achieveChamberDoodleStowardselliteKitchen:attachment]; - } - } -} - -- (void)shankNEMCCircularCommunictowardsion:(NIMMessage *)message { - NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; - NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; - if (content.eventType == NIMChatroomEventTypeEnter) { - NIMMessageChatroomExtension * messageExt = (NIMMessageChatroomExtension *)message.messageExt; - NSDictionary * dic = [(NSDictionary *)messageExt.roomExt.toJSONGroal objectForKey:message.from]; - YUMICommunicationRemoteExtMatrix * extModel = [YUMICommunicationRemoteExtMatrix mtowardsrixAboutJSON:dic]; - if (extModel.enterHide) { - if ([message.from isEqualToString:[AccountAbstractStorage instance].acquireCid]) { - [self produceImportBrakeBrectifyness:dic]; - } - return; - } - - [self consumerImportChamber:content ext:extModel]; - } -} - -#pragma mark - 收到星级厨房飘屏 --(void)achieveChamberDoodleStowardselliteKitchen:(AttachmentMatrix *)attacment{ - YUMIPresentBigCaptureMatrix * captureMatrix = [YUMIPresentBigCaptureMatrix new]; - captureMatrix.data = attacment.data; - captureMatrix.type = GiftBannerType_kitchen; - if(self.animationListB.count == 0 && self.isPlayOfB == NO){ - [self produceStowardselliteKitchenOriflammeBrectifyness:captureMatrix]; - } - [self.animationListB addObject:captureMatrix]; -} - -- (void)produceStowardselliteKitchenOriflammeBrectifyness:(YUMIPresentBigCaptureMatrix *)attacment{ - self.isPlayOfB = YES; - YUMIChamberSatelliteKitchenOriflammeRegard *starKitchenView = [[YUMIChamberSatelliteKitchenOriflammeRegard alloc]initWithFrame:CGRectMake(0, kNavigationHeight + 15, KScreenWidth, kGetScaleWidth(60))]; - starKitchenView.isSvga = attacment.second == Custom_Message_Sub_Star_Kitchen_Server; - starKitchenView.delegate = self; - starKitchenView.starMatrix = attacment; - [self.highProttypeRegard addSubview:starKitchenView]; - POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; - springAnimation.springSpeed = 12; - springAnimation.springBounciness = 10.f; - springAnimation.fromValue = [NSValue valueWithCGPoint:starKitchenView.center]; - springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(starKitchenView.frame.size.width / 2, starKitchenView.center.y)]; - [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - if (finished) { - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, starKitchenView.center.y)]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, starKitchenView.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime() + 3; - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - @kWeakify(self); - [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - @kStrongify(self); - if (finished) { - [starKitchenView removeFromSuperview]; - self.isPlayOfB = NO; - if(self.animationListB.count > 0){ - [self.animationListB removeObjectAtIndex:0]; - } - - [self playAnimationWithModel]; - } - }]; - [starKitchenView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; - } - }]; - [starKitchenView pop_addAnimation:springAnimation forKey:@"starKitchenOutAnimation"]; -} - -#pragma mark - FBCChamberStarKitchenBannerRegardRepresendtation -- (void)yUMIChamberStowardselliteKitchenOriflammeRegard:(YUMIChamberSatelliteKitchenOriflammeRegard *)view didClick:(YUMIPresentBigCaptureMatrix *)starMatrix{ - if(starMatrix.skipUrl == nil || starMatrix.skipUrl.length == 0)return; - YUMITissueRegardGovernancer * webVewC = [[YUMITissueRegardGovernancer alloc] init]; - webVewC.isPush = YES; - webVewC.roomUid = starMatrix.roomUid; - webVewC.url = starMatrix.skipUrl; - [self.delegate.acquireUniversalNev pushViewController:webVewC animated:YES]; - -} -#pragma mark - 涂鸦礼物动画 -- (void)achieveChamberDoodlePresent:(AttachmentMatrix *)attacment { - if (self.doodlePresentFormation.count == 0) { - [self inititowardseDoodlePresentBrectifyness:attacment]; - } - [self.doodlePresentFormation addObject:attacment]; -} - -- (void)inititowardseDoodlePresentBrectifyness:(AttachmentMatrix *)model { - NSDictionary * dic = model.data; - NSNumber * giftId = dic[@"giftId"]; - PresentAbstractMatrix * giftInfo = [[YUMIPresentStorage partowardsiciptowardsionStorage] prohibiticoveryPresentAbstract:giftId.stringValue]; - NSArray * array = dic[@"drawFixedArray"]; - if (giftInfo.giftUrl.length > 0 && array.count > 0) { - [[SDWebImageManager sharedManager] loadImageWithURL:[NSURL URLWithString:giftInfo.giftUrl] options:SDWebImageProgressiveLoad progress:nil completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, SDImageCacheType cacheType, BOOL finished, NSURL * _Nullable imageURL) { - if (error == nil && image) { - YUMIChamberGraffitiPresentBrightnessRegard *doodleRegard = [[YUMIChamberGraffitiPresentBrightnessRegard alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; - doodleRegard.presentIndicate = image; - doodleRegard.delegate = self; - doodleRegard.model = model; - doodleRegard.speckGarment = array; - [doodleRegard institutePaletteBrectifyness]; - [self.highProttypeRegard addSubview:doodleRegard]; - } else { - [self.doodlePresentFormation removeObject:model]; - if (self.doodlePresentFormation.count > 0) { - [self inititowardseDoodlePresentBrectifyness:self.doodlePresentFormation.firstObject]; - } - } - }]; - } else { - [self.doodlePresentFormation removeObject:model]; - if (self.doodlePresentFormation.count > 0) { - [self inititowardseDoodlePresentBrectifyness:self.doodlePresentFormation.firstObject]; - } - } -} - - - -- (void)yUMIChamberDoodlePresentBrectifynessRegardImplementtowardsion:(YUMIChamberGraffitiPresentBrightnessRegard *)view attachment:(nonnull AttachmentMatrix *)attachment{ - [view removeFromSuperview]; - if ([self.doodlePresentFormation containsObject:attachment]) { - [self.doodlePresentFormation removeObject:attachment]; - } - if (self.doodlePresentFormation.count > 0) { - [self inititowardseDoodlePresentBrectifyness:self.doodlePresentFormation.firstObject]; - } -} - -#pragma mark - 跨房PK横幅动画 -- (void)throughoutChamberCombatOriflammeBrectifyness:(AttachmentMatrix *)attacment { - ThroughoutChamberCombatCaptureMatrix * captureMatrix = [ThroughoutChamberCombatCaptureMatrix mtowardsrixAboutJSON:attacment.data]; - if (attacment.second == Custom_Message_Sub_AnchorPK_Result) { - captureMatrix.pkType = 1; - } else { - captureMatrix.pkType = 0; - } - [self.throughoutChamberCombatFormation addObject:captureMatrix]; - if (self.throughoutChamberCombatFormation.count == 1 ) { - [self inititowardseThroughoutChamberCombatBrectifyness:self.throughoutChamberCombatFormation.firstObject]; - } -} - -- (void)inititowardseThroughoutChamberCombatBrectifyness:(ThroughoutChamberCombatCaptureMatrix *)model { - YUMIThroughoutChamberCombatCaptureRegard *wishEffectView = [[YUMIThroughoutChamberCombatCaptureRegard alloc] initWithFrame:CGRectMake(KScreenWidth, kNavigationHeight+40, KScreenWidth, 87)]; - wishEffectView.data = model; - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(passtoCombateWinChamber:)]; - [wishEffectView addGestureRecognizer:tap]; - [self.highProttypeRegard addSubview:wishEffectView]; - [UIView animateWithDuration:0.5 animations:^{ - wishEffectView.frame = CGRectMake(0, kNavigationHeight+40, KScreenWidth, 87); - } completion:^(BOOL finished) { - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [UIView animateWithDuration:0.5 animations:^{ - wishEffectView.hidden = YES; - } completion:^(BOOL finished) { - [wishEffectView removeFromSuperview]; - [self.throughoutChamberCombatFormation removeObject:model]; - if (self.throughoutChamberCombatFormation.count > 0) { - [self inititowardseThroughoutChamberCombatBrectifyness:self.throughoutChamberCombatFormation.firstObject]; - } - }]; - }); - }]; -} - -- (void)passtoCombateWinChamber:(UITapGestureRecognizer *)tap { - YUMIThroughoutChamberCombatCaptureRegard * view = (YUMIThroughoutChamberCombatCaptureRegard *)tap.view; - if (view.data.winUid.length > 0) { - [self.delegate exitRoom]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [YUMIChamberRegardGovernancer unfoildChamber:view.data.winUid viewController:[XCCurrentVCStackExecutive shareManager].getCurrentVC]; - }); - - } -} - -#pragma mark - 相亲 动画 -- (void)chamberEngagementPublicConsequent:(AttachmentMatrix *)attachment { - self.engagementImpressionFormation = [NSMutableArray array]; - - NSArray * results = [EngagementAbstractMatrix mtowardsrixsAboutGarment:attachment.data[@"list"]]; - [self.engagementImpressionFormation addObjectsFromArray:results]; - if (self.engagementImpressionFormation.count > 0) { - [self inititowardseEngagementBrectifyness:self.engagementImpressionFormation.firstObject]; - } -} - -- (void)inititowardseEngagementBrectifyness:(EngagementAbstractMatrix *)datingModel { - [[NSNotificationCenter defaultCenter] postNotificationName:@"message" object:[self produceChamberEngagementConsequentCommunictowardsion:datingModel]]; - NSString * targetUid= [NSString stringWithFormat:@"%ld", datingModel.targetUid]; - NSString * uid= [NSString stringWithFormat:@"%ld", datingModel.uid]; - if (datingModel.hasHeart || datingModel.hasSelectUser) { - datingModel.originPoint = [self.delegate brectifynessSpeckTowardsPhaseRegardByCid:uid]; - datingModel.targetPoint = [self.delegate brectifynessSpeckTowardsPhaseRegardByCid:targetUid]; - } - YUMIChamberEngagementBrightnessRegard * datingView = [[YUMIChamberEngagementBrightnessRegard alloc] init]; - [self.highProttypeRegard addSubview:datingView]; - [datingView inititowardseBrectifynessAboutMtowardsrix:datingModel finishBlock:^(BOOL finish) { - [datingView removeFromSuperview]; - [self.engagementImpressionFormation removeObject:datingModel]; - if (self.engagementImpressionFormation.count > 0) { - EngagementAbstractMatrix * datingModel = [self.engagementImpressionFormation firstObject]; - [self inititowardseEngagementBrectifyness:datingModel]; - } - }]; -} - -- (NIMMessage *)produceChamberEngagementConsequentCommunictowardsion:(EngagementAbstractMatrix *)datingModel { - NIMMessage * message = [[NIMMessage alloc] init]; - NIMSession * session = [NIMSession session:[NSString stringWithFormat:@"%ld", self.delegate.acquireChamberAbstract.roomId] type:NIMSessionTypeChatroom]; - [message setValue:session forKey:@"session"]; - AttachmentMatrix * attach = [[AttachmentMatrix alloc] init]; - attach.first = IndividualityCommunicationGenre_RoomPlay_Dating; - if (datingModel.hasHeart) { - attach.second = Custom_Message_Sub_Room_Play_Dating_Result_Mutual; - } else { - attach.second = Custom_Message_Sub_Room_Play_Dating_Result_Not_Mutual; - } - attach.data = [datingModel mtowardsrix2dictionary]; - NIMCustomObject * object = [[NIMCustomObject alloc] init]; - object.attachment = attach; - message.messageObject = object; - return message; -} - -#pragma mark - 进房动画 XXX来了 -- (void)consumerImportChamber:(NIMChatroomNotificationContent *)content ext:(YUMICommunicationRemoteExtMatrix *)extModel { - if (extModel.experLevelSeq < 30) return; - NSString * title = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Room_Animation_View_0"), content.source.nick]; - if (self.importImpressionFormation.count ==0) { - [self prohibitiportConsumerImportChamberBrectifyness:title experLevelSeq:extModel.experLevelSeq effectPath:extModel.enterRoomEffects]; - } - NSDictionary * dic= @{@"title":title, @"experLevelSeq":[NSString stringWithFormat:@"%ld", extModel.experLevelSeq], @"effectPath" : extModel.enterRoomEffects.length ? extModel.enterRoomEffects : @""}; - [self.importImpressionFormation addObject:dic]; -} - -- (void)prohibitiportConsumerImportChamberBrectifyness:(NSString *)title experLevelSeq:(NSInteger)experLevelSeq effectPath:(NSString *)effectPath { - NSString * path; - if (experLevelSeq >= 30 && experLevelSeq <= 39) { - path = @"svga_member_in_lv30"; - } else if (experLevelSeq >= 40 && experLevelSeq <= 49) { - path = @"svga_member_in_lv40"; - } else if (experLevelSeq >= 50 && experLevelSeq <= 59) { - path = @"svga_member_in_lv50"; - } else if (experLevelSeq >= 60 && experLevelSeq <= 69) { - path = @"svga_member_in_lv60"; - } else if (experLevelSeq >= 70 && experLevelSeq <= 79) { - path = @"svga_member_in_lv70"; - } else if (experLevelSeq >= 80 && experLevelSeq <= 89) { - path = @"svga_member_in_lv80"; - } else { - path = @"svga_member_in_lv90"; - } - NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/%@.svga", API_Image_URL, path]; - - if (self.importImpressionRegard.superview == nil) { - self.importImpressionRegard.frame = CGRectMake(KScreenWidth, 339 + kSafeAreaTopHeight, KScreenWidth, effectPath.length ? 75 : 40); - [self.lowPrototypeRegard addSubview:self.importImpressionRegard]; - } - - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:26], NSForegroundColorAttributeName:[UIColor whiteColor]}]; - [attribute setYy_alignment:NSTextAlignmentLeft]; - if (effectPath.length > 0) { - @kWeakify(self); - [self.anatomiser parseWithURL:[NSURL URLWithString:effectPath] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { - @kStrongify(self); - self.importImpressionRegard.loops = 1; - self.importImpressionRegard.hidden = NO; - self.importImpressionRegard.clearsAfterStop = NO; - self.importImpressionRegard.alpha = 1; - self.importImpressionRegard.videoItem = videoItem; - [self.importImpressionRegard setAttributedText:attribute forKey:@"room_text"]; - [self.importImpressionRegard startAnimation]; - } failureBlock:^(NSError * _Nonnull error) { - }]; - } else { - @kWeakify(self); - [self.anatomiser parseWithURL:[NSURL URLWithString:anatomiser1Name] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { - @kStrongify(self); - self.importImpressionRegard.loops = 1; - self.importImpressionRegard.hidden = NO; - self.importImpressionRegard.clearsAfterStop = NO; - self.importImpressionRegard.alpha = 1; - self.importImpressionRegard.videoItem = videoItem; - [self.importImpressionRegard setAttributedText:attribute forKey:@"room_text"]; - [self.importImpressionRegard startAnimation]; - } failureBlock:^(NSError * _Nonnull error) { - }]; - } - [UIView animateWithDuration:0.5 animations:^{ - self.importImpressionRegard.frame = CGRectMake(0, 339 + kSafeAreaTopHeight, KScreenWidth, effectPath.length ? 75 : 40); - } completion:^(BOOL finished) { - }]; -} - -- (void)produceImportBrakeBrectifyness:(NSDictionary *)dic { - YUMIChamberImportHideTipRegard *enterHideTipView = [[YUMIChamberImportHideTipRegard alloc] initWithFrame:CGRectMake(KScreenWidth, (KScreenHeight - 48) * 0.5, KScreenWidth, 48)]; - [self.highProttypeRegard addSubview:enterHideTipView]; - POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; - springAnimation.springSpeed = 12; - springAnimation.springBounciness = 10.f; - springAnimation.fromValue = [NSValue valueWithCGPoint:enterHideTipView.center]; - springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(enterHideTipView.frame.size.width / 2, enterHideTipView.center.y)]; - [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - if (finished) { - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, enterHideTipView.center.y)]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, enterHideTipView.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime() + 3; - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - if (finished) { - [enterHideTipView removeFromSuperview]; - } - }]; - [enterHideTipView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; - } - }]; - [enterHideTipView pop_addAnimation:springAnimation forKey:@"roomEnterTipUpspingOutAnimation"]; -} - -#pragma mark - 座驾的动画 -- (void)achieveDriveAutomobileImportChamber:(AttachmentMatrix *)attatchment { - if (self.isBignessPresentAnimating) {return;} - if ([self isInYoudCompetition]) {return;} - if (!self.delegate.acquireChamberAbstract.hasAnimationEffect) {return;} - NSInteger otherViewType = [attatchment.data[@"otherViewType"] integerValue]; - NSString *viewUrl = attatchment.data[@"viewUrl"]; - NSString * effect = attatchment.data[@"effect"]; - if (viewUrl.length) { - NSDictionary * dic = @{@"otherViewType":@(otherViewType), @"viewUrl":viewUrl}; - if (self.automobileImpressionFormation.count == 0) { - [self prohibitiportAutomobileImpression:dic]; - } - [self.automobileImpressionFormation addObject:dic]; - } else if(effect.length) { - NSDictionary * dic = @{@"effect":effect}; - if (self.automobileImpressionFormation.count == 0) { - [self prohibitiportAutomobileImpression:dic]; - } - [self.automobileImpressionFormation addObject:dic]; - } -} - - -- (void)prohibitiportAutomobileImpression:(NSDictionary *)effectDict { - NSString *viewUrl = [effectDict objectForKey:@"viewUrl"]; - NSString *carEffect = [effectDict objectForKey:@"effect"]; - if (viewUrl.length) { - self.automobileVepporImpressionRegard.hidden = NO; - if (self.automobileVepporImpressionRegard.superview == nil) { - [self.middlePrototypeRegard addSubview:self.automobileVepporImpressionRegard]; - [self.automobileVepporImpressionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.mas_equalTo(self.middlePrototypeRegard); - make.width.mas_equalTo(KScreenWidth); - make.height.mas_equalTo(KScreenHeight); - }]; - } - [self.vepporAnatomiser parseWithURL:viewUrl completionBlock:^(NSString * _Nullable videoUrl) { - if (videoUrl.length) { - [self.automobileVepporImpressionRegard setMute:YES]; - [self.automobileVepporImpressionRegard playHWDMP4:videoUrl repeatCount:1 delegate:self]; - } - } failureBlock:^(NSError * _Nullable error) { - - }]; - } else if (carEffect.length) { - if (self.automobileImpressionRegard.superview == nil) { - [self.middlePrototypeRegard addSubview:self.automobileImpressionRegard]; - [self.automobileImpressionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.mas_equalTo(self.middlePrototypeRegard); - make.width.mas_equalTo(KScreenWidth); - make.height.mas_equalTo(KScreenHeight); - }]; - } - [self.anatomiser parseWithURL:[NSURL URLWithString:carEffect] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { - if (videoItem != nil) { - CGFloat width = videoItem.videoSize.width; - CGFloat height = videoItem.videoSize.height; - if (width > height) { - self.automobileImpressionRegard.contentMode = UIViewContentModeScaleAspectFit; - } else { - CGFloat resizeH = KScreenWidth * height / width; - if (resizeH > KScreenHeight) { - self.automobileImpressionRegard.contentMode = UIViewContentModeScaleAspectFill; - } else { - self.automobileImpressionRegard.contentMode = UIViewContentModeScaleAspectFit; - } - } - self.automobileImpressionRegard.hidden = NO; - self.automobileImpressionRegard.alpha = 1; - self.automobileImpressionRegard.loops = 1; - self.automobileImpressionRegard.clearsAfterStop = YES; - self.automobileImpressionRegard.videoItem = videoItem; - [self.automobileImpressionRegard startAnimation]; - } - } failureBlock:^(NSError * _Nullable error) { - - }]; - } -} - -#pragma mark - 糖果树横幅动画 -- (void)achieveConfectioneryTimberPresentHighProttype:(AttachmentMatrix *)attatchment { - if ([self isInYoudCompetition]) {return;} - YUMIPresentBigCaptureMatrix * captureMatrix = [YUMIPresentBigCaptureMatrix new]; - captureMatrix.data = attatchment.data; - captureMatrix.second = attatchment.second; - captureMatrix.first = attatchment.first; - captureMatrix.type = GiftBannerType_Love; - if (self.animationListB.count == 0 && self.isPlayOfB == NO) { - [self produceConfectioneryTimberOriflammeBrectifyness:captureMatrix]; - } - - [self.animationListB addObject:captureMatrix]; -} - -- (void)produceConfectioneryTimberOriflammeBrectifyness:(YUMIPresentBigCaptureMatrix *)attatchment { - CGFloat kscale = (CGFloat)60 / (CGFloat)375; - self.isPlayOfB = YES; - YUMIChamberConfectioneryPresentRegard *confectioneryTimberRegard = [[YUMIChamberConfectioneryPresentRegard alloc] initWithFrame:CGRectMake(KScreenWidth, kNavigationHeight + 15, KScreenWidth , KScreenWidth * kscale)]; - confectioneryTimberRegard.isLargestBignessPresent = attatchment.second == Custom_Message_Sub_Candy_Tree_InRoom_NeedAllMicSend; - confectioneryTimberRegard.confectioneryAbstract = attatchment.data; - [self.middlePrototypeRegard addSubview:confectioneryTimberRegard]; - POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; - springAnimation.springSpeed = 12; - springAnimation.springBounciness = 10.f; - springAnimation.fromValue = [NSValue valueWithCGPoint:confectioneryTimberRegard.center]; - springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(confectioneryTimberRegard.frame.size.width / 2, confectioneryTimberRegard.center.y)]; - [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - if (finished) { - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, confectioneryTimberRegard.center.y)]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, confectioneryTimberRegard.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime() + 3; - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - @kWeakify(self); - [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - @kStrongify(self); - if (finished) { - [confectioneryTimberRegard removeFromSuperview]; - self.isPlayOfB = NO; - if (self.animationListB.count > 0) { - [self.animationListB removeObjectAtIndex:0]; - } - [self playAnimationWithModel]; - } - }]; - [confectioneryTimberRegard pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; - } - }]; - [confectioneryTimberRegard pop_addAnimation:springAnimation forKey:@"candyTreespingOutAnimation"]; -} - -#pragma mark - 航海横幅 -- (void)achieveChamberMarching:(AttachmentMatrix *)attachment { - if ([self isInYoudCompetition]) {return;} - if (self.marchingFormation.count == 0) { - [self produceMarchingOriflammeBrectifyness:attachment]; - } - [self.marchingFormation addObject:attachment]; -} - -- (void)produceMarchingOriflammeBrectifyness:(AttachmentMatrix *)attatchment { - CGFloat kscale = (CGFloat)60 / (CGFloat)375; - YUMIMarchingBrightnessRegard *marchingRegard = [[YUMIMarchingBrightnessRegard alloc] initWithFrame:CGRectMake(KScreenWidth, kNavigationHeight + 15, KScreenWidth, KScreenWidth * kscale)]; - marchingRegard.captureAbstract = attatchment.data; - [self.middlePrototypeRegard addSubview:marchingRegard]; - POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; - springAnimation.springSpeed = 12; - springAnimation.springBounciness = 10.f; - springAnimation.fromValue = [NSValue valueWithCGPoint:marchingRegard.center]; - springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(marchingRegard.frame.size.width / 2, marchingRegard.center.y)]; - [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - if (finished) { - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, marchingRegard.center.y)]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, marchingRegard.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime() + 3; - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - @kWeakify(self); - [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - @kStrongify(self); - if (finished) { - [marchingRegard removeFromSuperview]; - if (self.marchingFormation.count > 0) { - [self.marchingFormation removeObjectAtIndex:0]; - } - if (self.marchingFormation.count > 0) { - [self produceMarchingOriflammeBrectifyness:self.marchingFormation.firstObject]; - } - } - }]; - [marchingRegard pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; - } - }]; - [marchingRegard pop_addAnimation:springAnimation forKey:@"candyTreespingOutAnimation"]; -} - -#pragma mark - 贵族升级 -- (void)achieveMagnificentPrototypeUpwards:(AttachmentMatrix *)attachment { - YUMIPresentBigCaptureMatrix * captureMatrix = [YUMIPresentBigCaptureMatrix new]; - captureMatrix.data = attachment.data; - captureMatrix.type = GiftBannerType_Nobleman; - if (self.animationListB.count == 0 && self.isPlayOfB == NO) { - [self produceMagnificentPrototypeUpwardsOriflammeBrectifyness:captureMatrix]; - } - [self.animationListB addObject:captureMatrix]; -} - -- (void)produceMagnificentPrototypeUpwardsOriflammeBrectifyness:(YUMIPresentBigCaptureMatrix *)model { - self.isPlayOfB = YES; - YUMIChamberMagnificentPrototypeUpwardsRegard *nobleLevelUpView = [[YUMIChamberMagnificentPrototypeUpwardsRegard alloc] initWithFrame:CGRectMake(KScreenWidth, kNavigationHeight + 15, KScreenWidth, 90)]; - nobleLevelUpView.magnificentAbstract = model.data; - [self.highProttypeRegard addSubview:nobleLevelUpView]; - POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; - springAnimation.springSpeed = 12; - springAnimation.springBounciness = 10.f; - springAnimation.fromValue = [NSValue valueWithCGPoint:nobleLevelUpView.center]; - springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(nobleLevelUpView.frame.size.width / 2, nobleLevelUpView.center.y)]; - [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - if (finished) { - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, nobleLevelUpView.center.y)]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, nobleLevelUpView.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime() + 3; - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - @kWeakify(self); - [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - @kStrongify(self); - if (finished) { - [nobleLevelUpView removeFromSuperview]; - self.isPlayOfB = NO; - if (self.animationListB > 0) { - [self.animationListB removeObjectAtIndex:0]; - } - [self playAnimationWithModel]; - } - }]; - [nobleLevelUpView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; - } - }]; - [nobleLevelUpView pop_addAnimation:springAnimation forKey:@"nobleLevelUpspingOutAnimation"]; -} - -#pragma mark - 魔法小屋礼物合成 -- (void)achievePresentSynthetise:(AttachmentMatrix *)attachment { - if ([self isInYoudCompetition]) {return;} - if (self.compoundPresentFormation.count == 0) { - [self producePresentSynthetiseOriflammeBrectifyness:attachment]; - } - [self.compoundPresentFormation addObject:attachment]; -} - -- (void)producePresentSynthetiseOriflammeBrectifyness:(AttachmentMatrix *)attachment { - YUMIChamberPresentCompoundRegard *compoundPresentRegard = [[YUMIChamberPresentCompoundRegard alloc] initWithFrame:CGRectMake(KScreenWidth, kNavigationHeight + 15, KScreenWidth, 45)]; - compoundPresentRegard.compoundPresentAbstract = attachment.data; - [self.middlePrototypeRegard addSubview:compoundPresentRegard]; - POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; - springAnimation.springSpeed = 12; - springAnimation.springBounciness = 10.f; - springAnimation.fromValue = [NSValue valueWithCGPoint:compoundPresentRegard.center]; - springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(compoundPresentRegard.frame.size.width / 2, compoundPresentRegard.center.y)]; - [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - if (finished) { - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, compoundPresentRegard.center.y)]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, compoundPresentRegard.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime() + 3; - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - @kWeakify(self); - [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - @kStrongify(self); - if (finished) { - [compoundPresentRegard removeFromSuperview]; - if (self.compoundPresentFormation.count > 0) { - [self.compoundPresentFormation removeObjectAtIndex:0]; - } - - if (self.compoundPresentFormation.count > 0) { - [self producePresentSynthetiseOriflammeBrectifyness:self.compoundPresentFormation.firstObject]; - } - } - }]; - [compoundPresentRegard pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; - } - }]; - [compoundPresentRegard pop_addAnimation:springAnimation forKey:@"compoundGiftSpingOutAnimation"]; -} - -#pragma mark - 牌照房小时榜飘屏 -- (void)receiveLicneseHourList:(AttachmentMatrix *)attachment{ - YUMIPresentBigCaptureMatrix * captureMatrix = [YUMIPresentBigCaptureMatrix new]; - captureMatrix.data = attachment.data; - captureMatrix.type = GiftBannerType_LicneseHour; - if(self.animationListB.count == 0 && self.isPlayOfB == NO){ - [self achieveLicneseStundeRtowardse:captureMatrix]; - } - [self.animationListB addObject:captureMatrix]; -} -- (void)achieveLicneseStundeRtowardse:(YUMIPresentBigCaptureMatrix *)attachment { - YUMIChamberLicneseHourRateRegard *anchorRankView = [[YUMIChamberLicneseHourRateRegard alloc] initWithFrame:CGRectMake(KScreenWidth, kNavigationHeight + 15, 375, 60)]; - anchorRankView.delegate = self; - anchorRankView.licneseRateAbstract = [ChamberHalfHourRateMatrix mtowardsrixAboutImpactbasket:attachment.data]; - [self.highProttypeRegard addSubview:anchorRankView]; - POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; - springAnimation.springSpeed = 12; - springAnimation.springBounciness = 10.f; - springAnimation.fromValue = [NSValue valueWithCGPoint:anchorRankView.center]; - springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(KScreenWidth / 2, anchorRankView.center.y)]; - [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - if (finished) { - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(KScreenWidth / 2, anchorRankView.center.y)]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth, anchorRankView.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime() + 3; - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - [anchorRankView removeFromSuperview]; - - self.isPlayOfB = NO; - if(self.animationListB.count > 0){ - [self.animationListB removeObjectAtIndex:0]; - } - [self playAnimationWithModel]; - - }]; - [anchorRankView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; - } - }]; - [anchorRankView pop_addAnimation:springAnimation forKey:@"nobleLevelUpspingOutAnimation"]; -} - -- (void)yUMIChamberLicneseStundeRtowardseRegard:(YUMIChamberLicneseHourRateRegard *)view rateAbstract:(ChamberHalfHourRateMatrix *)rateAbstract { - if (rateAbstract.uid.integerValue > 0 && self.delegate.acquireChamberAbstract.uid != rateAbstract.uid.integerValue) { - [self.delegate exitRoom]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [YUMIChamberRegardGovernancer unfoildChamber:rateAbstract.uid viewController:[XCCurrentVCStackExecutive shareManager].getCurrentVC]; - }); - } -} - -#pragma mark - 个播小时榜飘屏 -- (void)receiveAnchorHourList:(AttachmentMatrix *)attachment{ - YUMIPresentBigCaptureMatrix * captureMatrix = [YUMIPresentBigCaptureMatrix new]; - captureMatrix.data = attachment.data; - captureMatrix.type = GiftBannerType_AnchorHour; - if(self.animationListB.count == 0 && self.isPlayOfB == NO){ - [self achieveKellegStundeRtowardse:captureMatrix]; - } - [self.animationListB addObject:captureMatrix]; -} - -- (void)achieveKellegStundeRtowardse:(YUMIPresentBigCaptureMatrix *)attachment { - self.isPlayOfB = YES; - YUMIChamberKellegRateOriflammeRegard *anchorRankView = [[YUMIChamberKellegRateOriflammeRegard alloc] initWithFrame:CGRectMake(KScreenWidth, kNavigationHeight + 15, KScreenWidth, 60)]; - anchorRankView.kellegRateAbstract = [ChamberHalfHourRateMatrix mtowardsrixAboutImpactbasket:attachment.data]; - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(passtoApexRtowardseKellegChamber:)]; - [anchorRankView addGestureRecognizer:tap]; - [self.highProttypeRegard addSubview:anchorRankView]; - POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; - springAnimation.springSpeed = 12; - springAnimation.springBounciness = 10.f; - springAnimation.fromValue = [NSValue valueWithCGPoint:anchorRankView.center]; - springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(anchorRankView.frame.size.width / 2, anchorRankView.center.y)]; - [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - if (finished) { - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, anchorRankView.center.y)]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, anchorRankView.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime() + 3; - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - [anchorRankView removeFromSuperview]; - self.isPlayOfB = NO; - if(self.animationListB.count > 0){ - [self.animationListB removeObjectAtIndex:0]; - } - [self playAnimationWithModel]; - }]; - [anchorRankView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; - } - }]; - [anchorRankView pop_addAnimation:springAnimation forKey:@"nobleLevelUpspingOutAnimation"]; -} - -- (void)passtoApexRtowardseKellegChamber:(UITapGestureRecognizer *)tap { - YUMIChamberKellegRateOriflammeRegard * view = (YUMIChamberKellegRateOriflammeRegard *)tap.view; - if (view.kellegRateAbstract.uid.integerValue > 0) { - [self.delegate exitRoom]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [YUMIChamberRegardGovernancer unfoildChamber:view.kellegRateAbstract.uid viewController:[XCCurrentVCStackExecutive shareManager].getCurrentVC]; - }); - } -} - -#pragma mark - 展示加入粉丝团送礼动画 -- (void)achieveFantowardsicsSquadPresentShankDischargePresentBrectifyness:(AttachmentMatrix *)attachment { - if ([self isInYoudCompetition]) {return;} - if (!self.delegate.acquireChamberAbstract.hasAnimationEffect) {return;} - PresentAchieveAbstractMatrix *receiveInfo = [[PresentAchieveAbstractMatrix alloc] init]; - PresentAbstractMatrix *gift = [PresentAbstractMatrix mtowardsrixAboutJSON:attachment.data[@"giftVo"]]; - receiveInfo.gift = gift; - receiveInfo.giftInfo = gift; - receiveInfo.targetUid = [NSString stringWithFormat:@"%ld", self.delegate.acquireChamberAbstract.uid]; - PresentAbstractMatrix * giftInfo = receiveInfo.gift ? receiveInfo.gift : receiveInfo.giftInfo; - if (attachment.second == Custom_Message_Sub_AllMicroLuckySend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend || attachment.second == Custom_Message_Sub_Gift_LuckySend) { - NSString * giftId = [NSString stringWithFormat:@"%ld", receiveInfo.luckyGiftList.giftList.firstObject.giftId]; - giftInfo = [[YUMIPresentStorage partowardsiciptowardsionStorage] prohibiticoveryPresentAbstract:giftId]; - } - if (giftInfo == nil) { - giftInfo = [[YUMIPresentStorage partowardsiciptowardsionStorage] prohibiticoveryPresentAbstract:receiveInfo.giftId]; - } - - - receiveInfo.gift = giftInfo; - receiveInfo.isLuckyBagGift = (attachment.second == Custom_Message_Sub_AllMicroLuckySend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend || attachment.second == Custom_Message_Sub_Gift_LuckySend); - [self.presentFormation addObject:receiveInfo]; - if (self.presentIntratemper == nil && self.presentFormation > 0) { - [self inititowardsePresentInthecaseofmtowardsionIntrtowardsemper]; - } -} - -#pragma mark - 收到礼物展示动画 -- (void)achievePresentShankDischargePresentBrectifyness:(AttachmentMatrix *)attachment { - if ([self isInYoudCompetition]) {return;} - if (!self.delegate.acquireChamberAbstract.hasAnimationEffect) {return;} - PresentAchieveAbstractMatrix * receiveInfo = [PresentAchieveAbstractMatrix mtowardsrixAboutJSON:attachment.data]; - PresentAbstractMatrix * giftInfo = receiveInfo.gift ? receiveInfo.gift : receiveInfo.giftInfo; - if (attachment.second == Custom_Message_Sub_AllMicroLuckySend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend || attachment.second == Custom_Message_Sub_Gift_LuckySend) { - NSString * giftId = [NSString stringWithFormat:@"%ld", receiveInfo.luckyGiftList.giftList.firstObject.giftId]; - giftInfo = [[YUMIPresentStorage partowardsiciptowardsionStorage] prohibiticoveryPresentAbstract:giftId]; - } - if (giftInfo == nil) { - giftInfo = [[YUMIPresentStorage partowardsiciptowardsionStorage] prohibiticoveryPresentAbstract:receiveInfo.giftId]; - } - - - receiveInfo.gift = giftInfo; - receiveInfo.isLuckyBagGift = (attachment.second == Custom_Message_Sub_AllMicroLuckySend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend || attachment.second == Custom_Message_Sub_Gift_LuckySend); - [self.presentFormation addObject:receiveInfo]; - if (self.presentIntratemper == nil && self.presentFormation > 0) { - [self inititowardsePresentInthecaseofmtowardsionIntrtowardsemper]; - } -} - -- (void)inititowardsePresentInthecaseofmtowardsionIntrtowardsemper { - NSTimeInterval period = 0.5; - dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(0, 0)); - dispatch_source_set_timer(_timer, DISPATCH_TIME_NOW, period * NSEC_PER_SEC, 0 * NSEC_PER_SEC); - dispatch_source_set_event_handler(_timer, ^{ - dispatch_async(dispatch_get_main_queue(), ^{ - if (self.presentFormation.count) { - PresentAchieveAbstractMatrix * receiveInfo = self.presentFormation.firstObject; - [self handoutPresentDistributeBrectifyness:receiveInfo]; - [self.presentFormation removeObject:receiveInfo]; - }else { - dispatch_source_cancel(_timer); - self.presentIntratemper = nil; - } - }); - }); - dispatch_resume(_timer); - self.presentIntratemper = _timer; -} - -- (void)handoutPresentDistributeBrectifyness:(PresentAchieveAbstractMatrix *)receiveInfo { - PresentAbstractMatrix * giftInfo = receiveInfo.gift; - NSString * sendUid = receiveInfo.uid; - CGPoint starPoint = [self acquirePresentBrectifynessSpeck:sendUid isEnd:NO]; - CGPoint endPoint; - NSArray * targetUids; - if (receiveInfo.isLuckyBagGift) { - targetUids = @[receiveInfo.targetUid]; - } else { - targetUids = receiveInfo.targetUids; - if (targetUids.count <= 0) { - targetUids = [receiveInfo.targetUsers valueForKeyPath:@"uid"]; - if (targetUids.count <=0) { - targetUids = @[receiveInfo.targetUid]; - } - } - } - - for (NSString *targetUid in targetUids) { - NSString * userId = targetUid; - if ([userId isKindOfClass:[NSNumber class]]) { - userId = ((NSNumber *)userId).stringValue; - } - endPoint = [self acquirePresentBrectifynessSpeck:userId isEnd:YES]; - dispatch_time_t timer = dispatch_time(DISPATCH_TIME_NOW, 0.5 * NSEC_PER_SEC); - dispatch_after(timer, dispatch_get_main_queue(), ^{ - [self institutePresentBrectifyness:giftInfo.giftUrl startPoint:starPoint endPoint:endPoint]; - }); - } -} - -- (CGPoint)acquirePresentBrectifynessSpeck:(NSString *)uid isEnd:(BOOL)isEnd{ - CGPoint point = [self.delegate brectifynessSpeckTowardsPhaseRegardByCid:uid]; - - if (point.x <= 0 || point.y <= 0) { - if (isEnd) { - point = CGPointMake([UIScreen mainScreen].bounds.size.width /2 + 30, 44 + kSafeAreaTopHeight); - } else { - point = CGPointMake([UIScreen mainScreen].bounds.size.width / 2, 44 + kSafeAreaTopHeight); - } - } - return point; -} - -- (void)institutePresentBrectifyness:(NSString *)giftUrl startPoint:(CGPoint)startPoint endPoint:(CGPoint)endPoint { - NetIndicateRegard * presentIndicateRegard = [self.presentReuseGarment anyObject]; - if (presentIndicateRegard == nil) { - presentIndicateRegard = [[NetIndicateRegard alloc]initWithFrame:CGRectMake(0, 0 , 55, 55)]; - presentIndicateRegard.center = startPoint; - presentIndicateRegard.alpha = 1; - presentIndicateRegard.layer.anchorPoint = CGPointMake(0.5, 0.5); - presentIndicateRegard.imageUrl = giftUrl; - [self.presentVisibleGarment addObject:presentIndicateRegard]; - }else { - [self.presentReuseGarment removeObject:presentIndicateRegard]; - } - presentIndicateRegard.hidden = NO; - presentIndicateRegard.imageUrl = giftUrl; - [self.lowPrototypeRegard addSubview:presentIndicateRegard]; - CAAnimationGroup *group = [self producePresentBrectifynessInititowardseSpeck:startPoint endPoint:endPoint]; - [presentIndicateRegard.layer addAnimation:group forKey:@"giftDisplayViewAnimation"]; - [self performSelector:@selector(anitowardsionDidAccomplish:) withObject:presentIndicateRegard afterDelay:(3.2+0.25)]; -} - -- (CAAnimationGroup *)producePresentBrectifynessInititowardseSpeck:(CGPoint)startPoint endPoint:(CGPoint)endPoint{ - CGPoint centerPoint = CGPointMake(KScreenWidth / 2, KScreenHeight / 2); - CAKeyframeAnimation *animation0 = [CAKeyframeAnimation animation]; - animation0.duration = 0.8; - animation0.keyPath = @"transform.scale"; - animation0.values = @[@1.0,@1.5,@2.0,@1.5]; - animation0.repeatCount = 1; - animation0.calculationMode = kCAAnimationCubic; - animation0.removedOnCompletion = NO; - animation0.fillMode = kCAFillModeForwards; - - CAKeyframeAnimation *animation1 = [CAKeyframeAnimation animation]; - animation1.duration = 0.8; - animation1.beginTime = 0.8; - animation1.keyPath = @"transform.scale"; - animation1.values = @[@1.5,@2.0,@2.5,@3.0]; - animation1.repeatCount = 1; - animation1.calculationMode = kCAAnimationCubic; - animation1.removedOnCompletion = NO; - animation1.fillMode = kCAFillModeForwards; - - - CAKeyframeAnimation *animation2 = [CAKeyframeAnimation animation]; - animation2.duration = 0.8; - animation2.beginTime = 0.8; - animation2.keyPath = @"position"; - animation2.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];; - animation2.values = @[[NSValue valueWithCGPoint:startPoint],[NSValue valueWithCGPoint:CGPointMake(centerPoint.x ,centerPoint.y)]]; - animation2.repeatCount = 1; - animation2.removedOnCompletion = NO; - animation2.fillMode = kCAFillModeForwards; - - CAKeyframeAnimation *animation3 = [CAKeyframeAnimation animation]; - animation3.duration = 0.8; - animation3.beginTime = 2.6; - animation3.keyPath = @"transform.scale"; - animation3.values = @[@3,@2.5,@2,@1.5,@1]; - animation3.repeatCount = 1; - - CAKeyframeAnimation *animation4 = [CAKeyframeAnimation animation]; - animation4.duration = 0.8; - animation4.beginTime = 2.6; - animation4.keyPath = @"position"; - animation4.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; - animation4.values = @[[NSValue valueWithCGPoint:CGPointMake(centerPoint.x ,centerPoint.y)],[NSValue valueWithCGPoint:endPoint]]; - animation4.repeatCount = 1; - - CAAnimationGroup *group = [CAAnimationGroup animation]; - group.duration = 3.2; - group.animations = @[animation0,animation1,animation2, animation3,animation4]; - group.repeatCount = 1; - group.removedOnCompletion = NO; - group.fillMode = kCAFillModeForwards; - - return group; -} - -- (void)anitowardsionDidAccomplish:(NetIndicateRegard *)presentIndicateRegard{ - [presentIndicateRegard removeFromSuperview]; - presentIndicateRegard.image = nil; - presentIndicateRegard.hidden = YES; - [self.presentVisibleGarment removeObject:presentIndicateRegard]; - [self.presentReuseGarment addObject:presentIndicateRegard]; -} - -#pragma mark - 全服礼物 飘屏 -- (void)achieveBroadcastPresent:(AttachmentMatrix *)attachment { - if ([self isInYoudCompetition]) {return;} - YUMIChamberPresentBroadCastMatrix *giftNotifyInfo = [YUMIChamberPresentBroadCastMatrix mtowardsrixAboutJSON:attachment.data]; - - if (giftNotifyInfo.ceremonyGift) { - return; - } - if (self.presentPingencourageFormation.count == 0) { - [self producePresentBroadcastRegardBrectifyness:giftNotifyInfo]; - } - [self.presentPingencourageFormation addObject:giftNotifyInfo]; -} - -- (void)producePresentBroadcastRegardBrectifyness:(YUMIChamberPresentBroadCastMatrix *)presentMatrix { - YUMIChamberPresentPingbackRegard * view = [[YUMIChamberPresentPingbackRegard alloc] init]; - view.delegate = self; - view.frame = CGRectMake(KScreenWidth, 35 + statusbarHeight, KScreenWidth, 150); - view.pingencourageMatrix = presentMatrix; - [self.highProttypeRegard addSubview:view]; - [self institutePresentBraodcastRegardBrectifyness:view notifyStaySecond:presentMatrix.notifyStaySecond]; -} - -- (void)institutePresentBraodcastRegardBrectifyness:(YUMIChamberPresentPingbackRegard *)view notifyStaySecond:(int)notifyStaySecond{ - CGFloat startTime = notifyStaySecond > 0 ? notifyStaySecond : 3.0; - POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; - springAnimation.springSpeed = 12; - springAnimation.springBounciness = 10.f; - springAnimation.fromValue = [NSValue valueWithCGPoint:view.center]; - springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(0 + view.frame.size.width / 2, view.center.y)]; - [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - if (finished) { - [self transltowardsePresentBroadcastOptowardssideBrectifyness:view stayTime:startTime]; - } - }]; - [view pop_addAnimation:springAnimation forKey:@"spingOutAnimation"]; -} - -- (void)transltowardsePresentBroadcastOptowardssideBrectifyness:(YUMIChamberPresentPingbackRegard *)view stayTime:(CGFloat)stayTime{ - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:view.center]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, view.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime() + stayTime; - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - @kWeakify(self); - [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - @kStrongify(self); - if (finished) { - [view removeFromSuperview]; - if (self.presentPingencourageFormation.count > 0) { - [self.presentPingencourageFormation removeObjectAtIndex:0]; - } - - if (self.presentPingencourageFormation.count > 0) { - [self producePresentBroadcastRegardBrectifyness:self.presentPingencourageFormation.firstObject]; - } - } - }]; - - [view pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; -} - -#pragma mark - FBCChamberPresentPingbackRegardRepresendtation -- (void)yUMIChamberPresentBroadcastRegard:(YUMIChamberPresentPingbackRegard *)view enterRoom:(NSString *)roomUid { - if (roomUid.length > 0 && self.delegate.acquireChamberAbstract.uid != roomUid.integerValue) { - [self.delegate exitRoom]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.7 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [YUMIChamberRegardGovernancer unfoildChamber:roomUid viewController:[XCCurrentVCStackExecutive shareManager].getCurrentVC]; - }); - } -} - -- (void)yUMIChamberPresentBroadcastRegard:(YUMIChamberPresentPingbackRegard *)view didClickClose:(YUMIChamberPresentBroadCastMatrix *)pingencourageMatrix { - [view removeFromSuperview]; - [view pop_removeAllAnimations]; - if ([self.presentPingencourageFormation containsObject:pingencourageMatrix]) { - [self.presentPingencourageFormation removeObject:pingencourageMatrix]; - } - if (self.presentPingencourageFormation.count > 0) { - [self producePresentBroadcastRegardBrectifyness:self.presentPingencourageFormation.firstObject]; - } -} - -#pragma mark - 福袋中 四级奖品 -- (void)achieveInthecaseoftuntowardsePresentConsiderableCapture:(AttachmentMatrix *)attachment { - if ([self isInYoudCompetition]) {return;} - if (attachment.second == Custom_Message_Sub_Room_Gift_LuckBag || attachment.second == Custom_Message_Sub_Room_Gift_LuckBag_Server) { - YUMIPresentBigCaptureMatrix * captureMatrix = [YUMIPresentBigCaptureMatrix mtowardsrixAboutImpactbasket:attachment.data]; - captureMatrix.isInRoomVisiable = attachment.second == Custom_Message_Sub_Room_Gift_LuckBag; - captureMatrix.type = GiftBannerType_Lucky; - if(self.animationListB.count == 0 && self.isPlayOfB == NO){ - [self produceConsiderableCaptureBrectifyness:captureMatrix]; - } - [self.animationListB addObject:captureMatrix]; - - } -} - -- (void)produceConsiderableCaptureBrectifyness:(YUMIPresentBigCaptureMatrix *)captureMatrix { - - self.isPlayOfB = YES; - CGFloat top = self.isPlayOfA == YES ? 268 : (kNavigationHeight + 15); - YUMIChamberFortunateBigCaptureRegard * fortunatePresentImpressionRegard = [[YUMIChamberFortunateBigCaptureRegard alloc] initWithFrame:CGRectMake(KScreenWidth, top, 375, 60)]; - fortunatePresentImpressionRegard.delegate = self; - [self.highProttypeRegard addSubview:fortunatePresentImpressionRegard]; - fortunatePresentImpressionRegard.giftInfo = captureMatrix; - POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; - springAnimation.springSpeed = 12; - springAnimation.springBounciness = 10.f; - springAnimation.fromValue = [NSValue valueWithCGPoint:fortunatePresentImpressionRegard.center]; - springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(KScreenWidth / 2, fortunatePresentImpressionRegard.center.y)]; - [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - if (finished) { - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(KScreenWidth / 2, fortunatePresentImpressionRegard.center.y)]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth, fortunatePresentImpressionRegard.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime() + 3; - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - [fortunatePresentImpressionRegard removeFromSuperview]; - if (self.animationListB.count > 0) { - [self.animationListB removeObjectAtIndex:0]; - } - self.isPlayOfB = NO; - - [self playAnimationWithModel]; - - }]; - [fortunatePresentImpressionRegard pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; - } - }]; - [fortunatePresentImpressionRegard pop_addAnimation:springAnimation forKey:@"nobleLevelUpspingOutAnimation"]; -} - --(void)playAnimationWithModel{ - - if(self.animationListB.count <= 0){ - if(self.animationListA.count > 0 && self.isPlayOfB == NO && self.isPlayOfA == NO){ - PresentAchieveAbstractMatrix * achieveMatrix = [self.animationListA firstObject]; - [self producePresentOriflammeRegardBrectifyness:achieveMatrix]; - } - return; - } - if(self.isPlayOfB == YES)return; - YUMIPresentBigCaptureMatrix *model = self.animationListB.firstObject; - if(model.type == GiftBannerType_Lucky){ - [self produceConsiderableCaptureBrectifyness:model]; - }else if (model.type == GiftBannerType_Love){ - [self produceConfectioneryTimberOriflammeBrectifyness:model]; - }else if(model.type == GiftBannerType_Nobleman){ - [self produceMagnificentPrototypeUpwardsOriflammeBrectifyness:model]; - }else if(model.type == GiftBannerType_kitchen){ - [self produceStowardselliteKitchenOriflammeBrectifyness:model]; - }else if(model.type == GiftBannerType_AnchorHour){ - [self achieveKellegStundeRtowardse:model]; - }else if(model.type == GiftBannerType_LicneseHour){ - [self achieveLicneseStundeRtowardse:model]; - } -} - -#pragma mark - FBCChamberLuckyBigPrizeRegardRepresendtation -- (void)yUMIChamberInthecaseoftuntowardseConsiderableCaptureRegard:(YUMIChamberFortunateBigCaptureRegard *)view luckyGiftInfo:(YUMIPresentBigCaptureMatrix *)giftInfo { - if (!giftInfo.isInRoomVisiable && giftInfo.roomUid.length > 0 && giftInfo.roomUid.integerValue != self.delegate.acquireChamberAbstract.uid) { - [self.delegate exitRoom]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [YUMIChamberRegardGovernancer unfoildChamber:giftInfo.roomUid viewController:[XCCurrentVCStackExecutive shareManager].getCurrentVC]; - }); - } -} - -#pragma mark - 普通礼物 -- (void)achievePresent:(PresentAchieveAbstractMatrix *)receiveInfo { - if ([self isInYoudCompetition]) {return;} - - ChamberAbstractMatrix * roomInfor = [self.delegate acquireChamberAbstract]; - if (receiveInfo.isLuckyBagGift) { - if (receiveInfo.isShowAnimation) { - - if (receiveInfo.displayGift.count > 0) { - [receiveInfo.displayGift enumerateObjectsUsingBlock:^(PresentAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.otherViewType == PresentOtherRegardGenreMp4 && obj.viewUrl && obj.viewUrl.length > 0 && roomInfor.hasAnimationEffect) { - PresentAchieveAbstractMatrix * model = [[PresentAchieveAbstractMatrix alloc] init]; - model.viewUrl = obj.viewUrl; - [self.animationListA addObject:model]; - } else if (obj.hasVggPic && roomInfor.hasAnimationEffect) { - PresentAchieveAbstractMatrix * model = [[PresentAchieveAbstractMatrix alloc] init]; - model.vggUrl = obj.vggUrl; - [self.animationListA addObject:model]; - } - }]; - } - } else { - - } - } else { - PresentAbstractMatrix *giftInfo = receiveInfo.gift != nil ? receiveInfo.gift : receiveInfo.giftInfo; - if (!giftInfo) { - giftInfo = [[YUMIPresentStorage partowardsiciptowardsionStorage] prohibiticoveryPresentAbstract: receiveInfo.giftId]; - } - - if (giftInfo) { - receiveInfo.gift = giftInfo; - } - if (receiveInfo.targetUsers.count > 0 && receiveInfo.targetUids.count <= 0) { - receiveInfo.targetUids = [receiveInfo.targetUsers valueForKeyPath:@"uid"]; - } - - NSInteger giftTotal = 0; - if (receiveInfo.targetUids.count > 0) { - giftTotal = receiveInfo.giftNum * giftInfo.goldPrice * receiveInfo.targetUids.count; - } else { - giftTotal = receiveInfo.giftNum * giftInfo.goldPrice; - } - - if (giftInfo.otherViewType == PresentOtherRegardGenreMp4 && giftInfo.viewUrl.length > 0 && roomInfor.hasAnimationEffect) { - receiveInfo.viewUrl = giftInfo.viewUrl; - [self.animationListA addObject:receiveInfo]; - } else if (giftInfo.hasVggPic && giftInfo.vggUrl.length > 0 && roomInfor.hasAnimationEffect) { - receiveInfo.vggUrl = giftInfo.vggUrl; - [self.animationListA addObject:receiveInfo]; - } - } - if(self.animationListA.count > 0 && self.isPlayOfB == NO && self.isPlayOfA == NO){ - PresentAchieveAbstractMatrix * achieveMatrix = [self.animationListA firstObject]; - [self producePresentOriflammeRegardBrectifyness:achieveMatrix]; - } - -} - - - -- (void)producePresentOriflammeRegardBrectifyness:(PresentAchieveAbstractMatrix *)receiveInfo { - PresentAbstractMatrix *giftInfo = receiveInfo.gift != nil ? receiveInfo.gift : receiveInfo.giftInfo; - if (!giftInfo) { - giftInfo = [[YUMIPresentStorage partowardsiciptowardsionStorage] prohibiticoveryPresentAbstract: receiveInfo.giftId]; - } - NSInteger giftTotal = 0; - if (receiveInfo.targetUids.count > 0) { - giftTotal = receiveInfo.giftNum * giftInfo.goldPrice * receiveInfo.targetUids.count; - } else { - giftTotal = receiveInfo.giftNum * giftInfo.goldPrice; - } - if (giftTotal >= 520) { - __block YUMIChamberPresentOriflammeRegard *view = [self.oriflammeDequePond anyObject]; - if (view == nil) { - view = [[YUMIChamberPresentOriflammeRegard alloc] init]; - [self.oriflammeVisiablePond addObject:view]; - }else{ - [self.oriflammeDequePond removeObject:view]; - } - self.isPlayOfA = YES; - [self transltowardsePresentOriflammeRegard:view]; - [view prohibitipositionPresentOriflamme:receiveInfo users:[self manufactureOriflammeConsumers]]; - view.frame = CGRectMake(KScreenWidth, 100, KScreenWidth, 153); - [self.lowPrototypeRegard addSubview:view]; - POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; - springAnimation.springSpeed = 12; - springAnimation.springBounciness = 10.f; - springAnimation.fromValue = [NSValue valueWithCGPoint:view.center]; - springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(view.frame.size.width / 2, view.center.y)]; - @kWeakify(self); - [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - @kStrongify(self); - if (finished) { - [self transltowardseBrectifyness:view]; - } - }]; - - [springAnimation setAnimationDidStartBlock:^(POPAnimation *anim) { - @kStrongify(self); - - if (giftInfo.otherViewType == PresentOtherRegardGenreMp4 && giftInfo.viewUrl.length > 0 && [self.delegate acquireChamberAbstract].hasAnimationEffect) { - [self largePresentSapexAutomobileImpression:giftInfo.goldPrice]; - [self prohibitiportPresentImpressionAboutVepporWeebsite:giftInfo.viewUrl]; - } else if (giftInfo.hasVggPic && giftInfo.vggUrl.length > 0 && [self.delegate acquireChamberAbstract].hasAnimationEffect) { - [self largePresentSapexAutomobileImpression:giftInfo.goldPrice]; - [self prohibitiportPresentImpression:giftInfo.vggUrl]; - } - }]; - - [view pop_addAnimation:springAnimation forKey:@"spingOutAnimation"]; - } else { - if (giftInfo.otherViewType == PresentOtherRegardGenreMp4 && receiveInfo.viewUrl.length > 0) { - [self largePresentSapexAutomobileImpression:giftInfo.goldPrice]; - [self prohibitiportPresentImpressionAboutVepporWeebsite:receiveInfo.viewUrl]; - } else if (receiveInfo.vggUrl.length > 0) { - [self largePresentSapexAutomobileImpression:giftInfo.goldPrice]; - [self prohibitiportPresentImpression:receiveInfo.vggUrl]; - } - } -} - -- (void)largePresentSapexAutomobileImpression:(double)goldPrice { - if ([ClientDisposition partowardsiciptowardsionDisposition].dispositionAbstract.hideCarEffectGiftPrice <= goldPrice) { - self.isBignessPresentAnimating = YES; - [self.automobileImpressionRegard stopAnimation]; - [self.automobileVepporImpressionRegard stopHWDMP4]; - [self.automobileImpressionFormation removeAllObjects]; - } -} - -- (void)transltowardseBrectifyness:(YUMIChamberPresentOriflammeRegard *)view{ - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:view.center]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(view.center.x - KScreenWidth, view.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime() +5; - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - if(finished){ - [view removeFromSuperview]; - self.isPlayOfA = NO; - if(self.animationListA.count > 0){ - [self.animationListA removeObjectAtIndex:0]; - } - if(self.animationListA.count > 0 && self.isPlayOfB == NO && self.isPlayOfA == NO){ - PresentAchieveAbstractMatrix * achieveMatrix = [self.animationListA firstObject]; - [self producePresentOriflammeRegardBrectifyness:achieveMatrix]; - } - } - }]; - [view pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; -} - -- (NSArray *)manufactureOriflammeConsumers { - NSArray * microArray = [self.delegate acquireMiecreoscoopeInthecaseofmtowardsion].allValues; - NSMutableArray * array = [NSMutableArray array]; - [microArray enumerateObjectsUsingBlock:^(MiecreoscoopeMHTueueMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - YUMIPresentOriflammeConsumerAbstractMatrix * bannserUser = [[YUMIPresentOriflammeConsumerAbstractMatrix alloc] init]; - bannserUser.position = obj.microState.position; - bannserUser.uid = obj.userInfo.uid; - [array addObject:bannserUser]; - }]; - return array; -} - - -- (void)prohibitiportPresentImpression:(NSString *)vggUrl { - if ([self isInYoudCompetition]) {return;} - self.presentImpressionRegard.hidden = NO; - if (self.presentImpressionRegard.superview == nil) { - [self.middlePrototypeRegard addSubview:self.presentImpressionRegard]; - [self.presentImpressionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.mas_equalTo(self.middlePrototypeRegard); - make.width.mas_equalTo(KScreenWidth); - make.height.mas_equalTo(KScreenHeight); - }]; - } - [self.anatomiser parseWithURL:[NSURL URLWithString:vggUrl] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { - if (videoItem != nil) { - CGFloat width = videoItem.videoSize.width; - CGFloat height = videoItem.videoSize.height; - if (width > height) { - self.presentImpressionRegard.contentMode = UIViewContentModeScaleAspectFit; - } else { - CGFloat resizeH = KScreenWidth * height / width; - if (resizeH > KScreenHeight) { - self.presentImpressionRegard.contentMode = UIViewContentModeScaleAspectFill; - } else { - self.presentImpressionRegard.contentMode = UIViewContentModeScaleAspectFit; - } - } - self.presentImpressionRegard.alpha = 1; - self.presentImpressionRegard.loops = 1; - self.presentImpressionRegard.clearsAfterStop = YES; - self.presentImpressionRegard.videoItem = videoItem; - [self.presentImpressionRegard startAnimation]; - } - } failureBlock:^(NSError * _Nullable error) { - self.presentImpressionRegard.hidden = YES; - }]; -} - -- (void)prohibitiportPresentImpressionAboutVepporWeebsite:(NSString *)vapUrl { - self.vepporPresentImpressionRegard.hidden = NO; - if (self.vepporPresentImpressionRegard.superview == nil) { - [self.middlePrototypeRegard addSubview:self.vepporPresentImpressionRegard]; - [self.vepporPresentImpressionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.mas_equalTo(self.middlePrototypeRegard); - make.width.mas_equalTo(KScreenWidth); - make.height.mas_equalTo(KScreenHeight); - }]; - } - [self.vepporAnatomiser parseWithURL:vapUrl completionBlock:^(NSString * _Nullable videoUrl) { - if (videoUrl.length) { - [self.vepporPresentImpressionRegard setMute:YES]; - [self.vepporPresentImpressionRegard playHWDMP4:videoUrl repeatCount:1 delegate:self]; - } - } failureBlock:^(NSError * _Nullable error) { - - }]; -} - -- (void)prohibitiportInthecaseoftuntowardsePresentImpression:(NSURL *)vggUrl { - if ([self isInYoudCompetition]) {return;} - self.fortunatePresentImpressionRegard.hidden = NO; - if (self.fortunatePresentImpressionRegard.superview == nil) { - [self.middlePrototypeRegard addSubview:self.fortunatePresentImpressionRegard]; - [self.fortunatePresentImpressionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.mas_equalTo(self.middlePrototypeRegard); - make.width.mas_equalTo(KScreenWidth); - make.height.mas_equalTo(KScreenHeight); - }]; - } - [self.anatomiser parseWithURL:vggUrl completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { - if (videoItem != nil) { - CGFloat width = videoItem.videoSize.width; - CGFloat height = videoItem.videoSize.height; - if (width > height) { - self.fortunatePresentImpressionRegard.contentMode = UIViewContentModeScaleAspectFit; - } else { - CGFloat resizeH = KScreenWidth * height / width; - if (resizeH > KScreenHeight) { - self.fortunatePresentImpressionRegard.contentMode = UIViewContentModeScaleAspectFill; - } else { - self.fortunatePresentImpressionRegard.contentMode = UIViewContentModeScaleAspectFit; - } - } - self.fortunatePresentImpressionRegard.alpha = 1; - self.fortunatePresentImpressionRegard.loops = 1; - self.fortunatePresentImpressionRegard.clearsAfterStop = YES; - self.fortunatePresentImpressionRegard.videoItem = videoItem; - [self.fortunatePresentImpressionRegard startAnimation]; - } - } failureBlock:^(NSError * _Nullable error) { - - }]; -} - -- (void)prohibitiportInthecaseoftuntowardsePresentImpressionAboutVepporWeebsite:(NSString *)vapUrl { - self.fortunateVepporPresentImpressionRegard.hidden = NO; - if (self.fortunateVepporPresentImpressionRegard.superview == nil) { - [self.middlePrototypeRegard addSubview:self.fortunateVepporPresentImpressionRegard]; - [self.fortunateVepporPresentImpressionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.mas_equalTo(self.middlePrototypeRegard); - make.width.mas_equalTo(KScreenWidth); - make.height.mas_equalTo(KScreenHeight); - }]; - } - [self.vepporAnatomiser parseWithURL:vapUrl completionBlock:^(NSString * _Nullable videoUrl) { - if (videoUrl.length) { - [self.fortunateVepporPresentImpressionRegard setMute:YES]; - [self.fortunateVepporPresentImpressionRegard playHWDMP4:videoUrl repeatCount:1 delegate:self]; - } - } failureBlock:^(NSError * _Nullable error) { - - }]; -} - - -- (void)transltowardsePresentOriflammeRegard:(YUMIChamberPresentOriflammeRegard *)view { - [view removeFromSuperview]; - [view resetData]; - [self.oriflammeVisiablePond removeObject:view]; - [self.oriflammeDequePond addObject:view]; - - [self.presentImpressionRegard stopAnimation]; - self.presentImpressionRegard.hidden = YES; -} -#pragma mark - -- (void)svgaPlayerDidFinishedAnimation:(SVGAPlayer *)player { - if (player == self.presentImpressionRegard) { - self.presentImpressionRegard.hidden = YES; - if (self.isBignessPresentAnimating) { - self.isBignessPresentAnimating = NO; - } - } else if (player == self.fortunatePresentImpressionRegard) { - self.fortunatePresentImpressionRegard.hidden = YES; - } else if(player == self.automobileImpressionRegard) { - self.automobileImpressionRegard.hidden = YES; - [self.automobileImpressionRegard removeFromSuperview]; - if (self.automobileImpressionFormation.count > 0) { - [self.automobileImpressionFormation removeObjectAtIndex:0]; - } - if (self.automobileImpressionFormation.count > 0) { - [self prohibitiportAutomobileImpression:self.automobileImpressionFormation.firstObject]; - } - } else if(player == self.importImpressionRegard) { - self.importImpressionRegard.hidden = YES; - [self.importImpressionRegard removeFromSuperview]; - if (self.importImpressionFormation.count > 0) { - [self.importImpressionFormation removeObjectAtIndex:0]; - } - if (self.importImpressionFormation.count > 0) { - NSString * title = [self.importImpressionFormation.firstObject objectForKey:@"title"]; - NSInteger experLevelSeq = [(NSString *)[self.importImpressionFormation.firstObject objectForKey:@"experLevelSeq"] integerValue]; - NSString *effectPath = [self.importImpressionFormation.firstObject objectForKey:@"effectPath"]; - [self prohibitiportConsumerImportChamberBrectifyness:title experLevelSeq:experLevelSeq effectPath:effectPath]; - } - } -} - -#pragma mark - 心愿礼物 -- (void)achieveChamberSequencirePresentCelebrtowardse:(AttachmentMatrix *)attachment { - CGFloat x = random() % (int)(KScreenWidth - 200); - CGFloat y= random() % 40 + kNavigationHeight; - if (self.sequencirePresentImpressionRegard.superview == nil) { - [self.lowPrototypeRegard addSubview:self.sequencirePresentImpressionRegard]; - - [self.sequencirePresentImpressionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(x); - make.top.mas_equalTo(y); - make.width.mas_equalTo(200); - make.height.mas_equalTo(167); - }]; - } - - - [self.sequencirePresentImpressionRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(x); - make.top.mas_equalTo(y); - }]; - NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/room_wish_gift_sendCelebrate.svga", API_Image_URL]; - [self.anatomiser parseWithURL:[NSURL URLWithString:anatomiser1Name] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { - self.sequencirePresentImpressionRegard.alpha = 1; - self.sequencirePresentImpressionRegard.loops = 1; - self.sequencirePresentImpressionRegard.clearsAfterStop = YES; - self.sequencirePresentImpressionRegard.videoItem = videoItem; - [self.sequencirePresentImpressionRegard startAnimation]; - } failureBlock:^(NSError * _Nonnull error) { - - }]; -} - -#pragma mark - HWDMP4PlayDelegate -- (BOOL)shouldStartPlayMP4:(VAPView *)container config:(QGVAPConfigModel *)config { - CGFloat width = config.info.size.width; - CGFloat height = config.info.size.height; - - container.center = self.center; - [container mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth); - make.height.mas_equalTo(KScreenWidth * height / width); - }]; - return YES; -} - -- (void)viewDidFinishPlayMP4:(NSInteger)totalFrameCount view:(VAPView *)container { - dispatch_async(dispatch_get_main_queue(), ^{ - container.hidden = YES; - if (container == self.automobileVepporImpressionRegard) { - [self.automobileVepporImpressionRegard removeFromSuperview]; - self.automobileVepporImpressionRegard = nil; - if (self.automobileImpressionFormation.count > 0) { - [self.automobileImpressionFormation removeObjectAtIndex:0]; - } - if (self.automobileImpressionFormation.count > 0) { - [self prohibitiportAutomobileImpression:self.automobileImpressionFormation.firstObject]; - } - } else if (container == self.vepporPresentImpressionRegard) { - if (self.isBignessPresentAnimating) { - self.isBignessPresentAnimating = NO; - } - [self.vepporPresentImpressionRegard removeFromSuperview]; - self.vepporPresentImpressionRegard = nil; - } else if(container == self.fortunateVepporPresentImpressionRegard) { - [self.fortunateVepporPresentImpressionRegard removeFromSuperview]; - self.fortunateVepporPresentImpressionRegard = nil; - } - }); -} - -- (void)viewDidStopPlayMP4:(NSInteger)lastFrameIndex view:(VAPView *)container { - dispatch_async(dispatch_get_main_queue(), ^{ - container.hidden = YES; - if (container == self.automobileVepporImpressionRegard) { - [self.automobileVepporImpressionRegard removeFromSuperview]; - self.automobileVepporImpressionRegard = nil; - if (self.automobileImpressionFormation.count > 0) { - [self.automobileImpressionFormation removeObjectAtIndex:0]; - } - if (self.automobileImpressionFormation.count > 0) { - [self prohibitiportAutomobileImpression:self.automobileImpressionFormation.firstObject]; - } - } else if (container == self.vepporPresentImpressionRegard) { - [self.vepporPresentImpressionRegard removeFromSuperview]; - self.vepporPresentImpressionRegard = nil; - } else if(container == self.fortunateVepporPresentImpressionRegard) { - [self.fortunateVepporPresentImpressionRegard removeFromSuperview]; - self.fortunateVepporPresentImpressionRegard = nil; - } else if(container == self.sequencirePresentImpressionRegard) { - [self.sequencirePresentImpressionRegard removeFromSuperview]; - self.sequencirePresentImpressionRegard = nil; - } - }); -} - -#pragma mark - Getters And Setters -- (SVGAImageView *)presentImpressionRegard { - if (!_presentImpressionRegard) { - _presentImpressionRegard = [[SVGAImageView alloc]init]; - _presentImpressionRegard.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5]; - _presentImpressionRegard.userInteractionEnabled = NO; - _presentImpressionRegard.delegate = self; - _presentImpressionRegard.hidden = YES; - } - return _presentImpressionRegard; -} - -- (VAPView *)vepporPresentImpressionRegard { - if (!_vepporPresentImpressionRegard) { - _vepporPresentImpressionRegard = [[VAPView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; - _vepporPresentImpressionRegard.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5]; - _vepporPresentImpressionRegard.contentMode = UIViewContentModeScaleAspectFill; - _vepporPresentImpressionRegard.hidden = YES; - } - return _vepporPresentImpressionRegard; -} - -- (SVGAImageView *)fortunatePresentImpressionRegard { - if (!_fortunatePresentImpressionRegard) { - _fortunatePresentImpressionRegard = [[SVGAImageView alloc]init]; - _fortunatePresentImpressionRegard.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5]; - _fortunatePresentImpressionRegard.userInteractionEnabled = NO; - _fortunatePresentImpressionRegard.delegate = self; - _fortunatePresentImpressionRegard.hidden = YES; - } - return _fortunatePresentImpressionRegard; -} - -- (VAPView *)fortunateVepporPresentImpressionRegard { - if (!_fortunateVepporPresentImpressionRegard) { - _fortunateVepporPresentImpressionRegard = [[VAPView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; - _fortunateVepporPresentImpressionRegard.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5]; - _fortunateVepporPresentImpressionRegard.contentMode = UIViewContentModeScaleAspectFill; - _fortunateVepporPresentImpressionRegard.hidden = YES; - } - return _fortunateVepporPresentImpressionRegard; -} - -- (VAPView *)automobileVepporImpressionRegard { - if (!_automobileVepporImpressionRegard) { - _automobileVepporImpressionRegard = [[VAPView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; - _automobileVepporImpressionRegard.backgroundColor = [UIColor colorWithWhite:0 alpha:0.3]; - _automobileVepporImpressionRegard.contentMode = UIViewContentModeScaleAspectFill; - _automobileVepporImpressionRegard.hidden = YES; - } - return _automobileVepporImpressionRegard; -} - -- (YUMIChamberPresentBrightnessAnatomiser *)vepporAnatomiser { - if (!_vepporAnatomiser) { - _vepporAnatomiser = [[YUMIChamberPresentBrightnessAnatomiser alloc] init]; - } - return _vepporAnatomiser; -} - -- (SVGAParser *)anatomiser { - if (!_anatomiser) { - _anatomiser = [[SVGAParser alloc]init]; - } - return _anatomiser; -} - - - - - -- (NSMutableArray *)presentPingencourageFormation { - if (!_presentPingencourageFormation) { - _presentPingencourageFormation = [NSMutableArray array]; - } - return _presentPingencourageFormation; -} - -- (NSMutableSet *)oriflammeDequePond { - if (!_oriflammeDequePond) { - _oriflammeDequePond = [NSMutableSet set]; - } - return _oriflammeDequePond; -} -- (NSMutableSet *)oriflammeVisiablePond { - if (!_oriflammeVisiablePond) { - _oriflammeVisiablePond = [NSMutableSet set]; - } - return _oriflammeVisiablePond; -} - -- (YUMIChamberBrightnessHitRegard *)lowPrototypeRegard { - if (!_lowPrototypeRegard) { - _lowPrototypeRegard = [[YUMIChamberBrightnessHitRegard alloc] init]; - _lowPrototypeRegard.backgroundColor = [UIColor clearColor]; - _lowPrototypeRegard.userInteractionEnabled = YES; - } - return _lowPrototypeRegard; -} - -- (YUMIChamberBrightnessHitRegard *)middlePrototypeRegard { - if (!_middlePrototypeRegard) { - _middlePrototypeRegard = [[YUMIChamberBrightnessHitRegard alloc] init]; - _middlePrototypeRegard.backgroundColor = [UIColor clearColor]; - _middlePrototypeRegard.userInteractionEnabled = YES; - } - return _middlePrototypeRegard; -} - -- (YUMIChamberBrightnessHitRegard *)highProttypeRegard { - if (!_highProttypeRegard) { - _highProttypeRegard = [[YUMIChamberBrightnessHitRegard alloc] init]; - _highProttypeRegard.backgroundColor = [UIColor clearColor]; - _highProttypeRegard.userInteractionEnabled = YES; - } - return _highProttypeRegard; -} - -- (NSMutableArray *)presentFormation { - if (!_presentFormation) { - _presentFormation = [NSMutableArray array]; - } - return _presentFormation; -} - -- (NSMutableSet *)presentReuseGarment { - if (!_presentReuseGarment) { - _presentReuseGarment = [NSMutableSet set]; - } - return _presentReuseGarment; -} - -- (NSMutableSet *)presentVisibleGarment { - if (!_presentVisibleGarment) { - _presentVisibleGarment = [NSMutableSet set]; - } - return _presentVisibleGarment; -} - - - -- (NSMutableArray *)compoundPresentFormation { - if (!_compoundPresentFormation) { - _compoundPresentFormation = [NSMutableArray array]; - } - return _compoundPresentFormation; -} - - -- (NSMutableArray *)automobileImpressionFormation { - if (_automobileImpressionFormation == nil) { - _automobileImpressionFormation = [NSMutableArray array]; - } - return _automobileImpressionFormation; -} - -- (SVGAImageView *)automobileImpressionRegard { - if (_automobileImpressionRegard == nil) { - _automobileImpressionRegard = [[SVGAImageView alloc]init]; - _automobileImpressionRegard.delegate = self; - _automobileImpressionRegard.contentMode = UIViewContentModeScaleAspectFit; - _automobileImpressionRegard.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); - _automobileImpressionRegard.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.3]; - _automobileImpressionRegard.alpha = 0; - _automobileImpressionRegard.userInteractionEnabled = NO; - } - return _automobileImpressionRegard; -} - -- (NSMutableArray *)importImpressionFormation { - if (_importImpressionFormation == nil) { - _importImpressionFormation = [NSMutableArray array]; - } - return _importImpressionFormation; -} - -- (SVGAImageView *)importImpressionRegard { - if (_importImpressionRegard == nil) { - _importImpressionRegard = [[SVGAImageView alloc]init]; - _importImpressionRegard.delegate = self; - _importImpressionRegard.contentMode = UIViewContentModeScaleAspectFit; - _importImpressionRegard.frame = CGRectMake(0, 0, KScreenWidth, 40); - _importImpressionRegard.backgroundColor = [UIColor clearColor]; - _importImpressionRegard.alpha = 0; - _importImpressionRegard.userInteractionEnabled = NO; - } - return _importImpressionRegard; -} - - -- (SVGAImageView *)engagementImpressionRegard { - if (_engagementImpressionRegard == nil) { - _engagementImpressionRegard = [[SVGAImageView alloc]init]; - _engagementImpressionRegard.delegate = self; - _engagementImpressionRegard.contentMode = UIViewContentModeScaleAspectFit; - _engagementImpressionRegard.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); - _engagementImpressionRegard.backgroundColor = [UIColor clearColor]; - _engagementImpressionRegard.alpha = 0; - _engagementImpressionRegard.userInteractionEnabled = NO; - } - return _engagementImpressionRegard; -} - - -- (NSMutableArray *)throughoutChamberCombatFormation { - if (!_throughoutChamberCombatFormation) { - _throughoutChamberCombatFormation = [NSMutableArray array]; - } - return _throughoutChamberCombatFormation; -} - -- (NSMutableArray *)marchingFormation { - if (!_marchingFormation) { - _marchingFormation = [NSMutableArray array]; - } - return _marchingFormation; -} - -- (NSMutableArray *)doodlePresentFormation { - if (!_doodlePresentFormation) { - _doodlePresentFormation = [NSMutableArray array]; - } - return _doodlePresentFormation; -} - - -- (SVGAImageView *)sequencirePresentImpressionRegard { - if (_sequencirePresentImpressionRegard == nil) { - _sequencirePresentImpressionRegard = [[SVGAImageView alloc]init]; - _sequencirePresentImpressionRegard.delegate = self; - _sequencirePresentImpressionRegard.contentMode = UIViewContentModeScaleAspectFit; - _sequencirePresentImpressionRegard.frame = CGRectMake(0, 0, 210, 183); - _sequencirePresentImpressionRegard.backgroundColor = [UIColor clearColor]; - _sequencirePresentImpressionRegard.alpha = 1; - _sequencirePresentImpressionRegard.userInteractionEnabled = NO; - } - return _sequencirePresentImpressionRegard; -} - - -- (NSMutableArray *)animationListA{ - if(!_animationListA){ - _animationListA = [NSMutableArray array]; - } - return _animationListA; -} -- (NSMutableArray *)animationListB{ - if(!_animationListB){ - _animationListB = [NSMutableArray array]; - } - return _animationListB; -} -@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberConfectioneryPresentRegard.h b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberConfectioneryPresentRegard.h deleted file mode 100644 index 9c6a36a6..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberConfectioneryPresentRegard.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMRoomCandyGiftView.h -// YUMI -// -// Created by YUMI on 2021/12/10. -// - -#import -#import "YUMIPresentBigCaptureMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberConfectioneryPresentRegard : UIView -@property (nonatomic,assign) BOOL isLargestBignessPresent; -@property (nonatomic,copy) NSDictionary * confectioneryAbstract; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberConfectioneryPresentRegard.m b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberConfectioneryPresentRegard.m deleted file mode 100644 index 511a00e2..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberConfectioneryPresentRegard.m +++ /dev/null @@ -1,157 +0,0 @@ -// -// YMRoomCandyGiftView.m -// YUMI -// -// Created by YUMI on 2021/12/10. -// - -#import "YUMIChamberConfectioneryPresentRegard.h" -#import -#import -#import "YUMISVGADisporter.h" -#import "YUMIMacroUitls.h" -#import "ThemeColor+Room.h" -#import "ConfectioneryTimberConsequentMatrix.h" -#import "NSObject+MJExtension.h" -@interface YUMIChamberConfectioneryPresentRegard () -@property (strong, nonatomic) SVGAParser *anatomiser; -@property (nonatomic,strong) YUMISVGADisporter *confectioneryTimberRegard; -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) UIView *titleView; -@property (nonatomic,strong) UILabel *titleLabel; -@end - -@implementation YUMIChamberConfectioneryPresentRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.confectioneryTimberRegard]; - [self addSubview:self.encourageIndicateRegard]; - [self.encourageIndicateRegard addSubview:self.titleView]; - - [self.titleView addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.confectioneryTimberRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self); - }]; - - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self); - }]; - - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(260); - make.height.mas_equalTo(28); - make.top.mas_equalTo(self.encourageIndicateRegard).offset(23); - make.centerX.mas_equalTo(self.encourageIndicateRegard); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.titleView); - make.centerY.mas_equalTo(self.titleView); - }]; -} - -- (NSAttributedString *)produceIdiosyncracy:(NSString * )text color:(UIColor *)color fontSize:(CGFloat)fonSize { - NSDictionary * attribute = @{NSFontAttributeName:[UIFont systemFontOfSize:fonSize], NSForegroundColorAttributeName:color}; - NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:text attributes:attribute]; - return attr; -} - -#pragma mark - Getters And Setters -- (void)setConfectioneryAbstract:(NSDictionary *)confectioneryAbstract { - if (confectioneryAbstract) { - ConfectioneryTimberPresentAbstractMatrix * giftInfo = [ConfectioneryTimberPresentAbstractMatrix mtowardsrixAboutImpactbasket:confectioneryAbstract]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - CGFloat fontSize = self.isLargestBignessPresent ? 22 : 13; - [attribute appendAttributedString:[self produceIdiosyncracy:@"厉害了! " color:[UIColor whiteColor] fontSize:fontSize]]; - [attribute appendAttributedString:[self produceIdiosyncracy:giftInfo.nick color:[DJDKMIMOMColor colorAboutHexBWSttr:@"#FEF23E"] fontSize:fontSize]]; - [attribute appendAttributedString:[self produceIdiosyncracy:@"摘下糖果得 " color:[UIColor whiteColor] fontSize:fontSize]]; - [attribute appendAttributedString:[self produceIdiosyncracy:giftInfo.prizeName color:[DJDKMIMOMColor colorAboutHexBWSttr:@"#FEF23E"] fontSize:fontSize]]; - if (giftInfo.prizeNum > 1) { - [attribute appendAttributedString:[self produceIdiosyncracy:[NSString stringWithFormat:@" X%d", giftInfo.prizeNum] color:[UIColor whiteColor] fontSize:fontSize]]; - } - - NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new]; - paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping; - paragraphStyle.lineSpacing = 4.0f; - paragraphStyle.alignment = NSTextAlignmentCenter; - paragraphStyle.baseWritingDirection = NSWritingDirectionLeftToRight; - [attribute addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, attribute.length)]; - [self.confectioneryTimberRegard setAttributedText:attribute forKey:@"tgs_copywriting"]; - if (self.isLargestBignessPresent) { - self.encourageIndicateRegard.hidden = YES; - self.confectioneryTimberRegard.hidden = NO; - @kWeakify(self); - NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/candyTree_banner.svga", API_Image_URL]; - [self.anatomiser parseWithURL:[NSURL URLWithString:anatomiser1Name] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { - @kStrongify(self); - self.confectioneryTimberRegard.loops = 1; - self.confectioneryTimberRegard.clearsAfterStop = NO; - self.confectioneryTimberRegard.videoItem = videoItem; - - [self.confectioneryTimberRegard startAnimation]; - } failureBlock:^(NSError * _Nonnull error) { - - }]; - } else { - self.encourageIndicateRegard.hidden = NO; - self.confectioneryTimberRegard.hidden = YES; - self.titleLabel.attributedText = attribute; - self.titleLabel.textAlignment = NSTextAlignmentCenter; - } - } -} - -- (YUMISVGADisporter *)confectioneryTimberRegard { - if (!_confectioneryTimberRegard) { - _confectioneryTimberRegard = [[YUMISVGADisporter alloc]init]; - _confectioneryTimberRegard.backgroundColor = [UIColor clearColor]; - _confectioneryTimberRegard.userInteractionEnabled = NO; - } - return _confectioneryTimberRegard; -} - -- (SVGAParser *)anatomiser { - if (!_anatomiser) { - _anatomiser = [[SVGAParser alloc]init]; - } - return _anatomiser; -} - -- (UIView *)titleView { - if (!_titleView) { - _titleView = [[UIView alloc] init]; - _titleView.backgroundColor = [UIColor clearColor]; - } - return _titleView; -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_candytree_large_present_background"]; - } - return _encourageIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.numberOfLines = 2; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberEngagementBrightnessRegard.h b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberEngagementBrightnessRegard.h deleted file mode 100644 index 0dec6f5f..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberEngagementBrightnessRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomDatingAnimationView.h -// YUMI -// -// Created by YUMI on 2022/1/5. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class EngagementAbstractMatrix; -@interface YUMIChamberEngagementBrightnessRegard : UIView -- (void)inititowardseBrectifynessAboutMtowardsrix:(EngagementAbstractMatrix *)model finishBlock:(void (^)(BOOL))finishBlock; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberEngagementBrightnessRegard.m b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberEngagementBrightnessRegard.m deleted file mode 100644 index 5043a198..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberEngagementBrightnessRegard.m +++ /dev/null @@ -1,356 +0,0 @@ -// -// YMRoomDatingAnimationView.m -// YUMI -// -// Created by YUMI on 2022/1/5. -// - -#import "YUMIChamberEngagementBrightnessRegard.h" -#import -#import -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "UIButton+EnlargeTouchArea.h" -#import "EngagementAbstractMatrix.h" - -@interface YUMIChamberEngagementBrightnessRegard () -@property (nonatomic,strong) UIView *encourageRegard; -@property (strong, nonatomic) SVGAParser *anatomiser; -@property (nonatomic, strong) SVGAImageView *engagementSvgaIndicateRegard; -@property (nonatomic,strong) UIView *cutIntratemporalEncourageRegard; -@property (nonatomic,strong) UILabel *intratemporalSequencignation; -@property (nonatomic,strong) UIView *burlywoodRegard; -@property (nonatomic,strong) UIButton *concludeBtuton; -@property (nonatomic,strong) UIImageView *courageIndicateRegard; -@property (nonatomic,copy) void(^FinishBlock)(BOOL result); -@property (nonatomic,strong) id timer; -@end - -@implementation YUMIChamberEngagementBrightnessRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self addSubview:self.encourageRegard]; - [self addSubview:self.engagementSvgaIndicateRegard]; - [self addSubview:self.cutIntratemporalEncourageRegard]; - [self addSubview:self.courageIndicateRegard]; - [self.cutIntratemporalEncourageRegard addSubview:self.intratemporalSequencignation]; - [self.cutIntratemporalEncourageRegard addSubview:self.burlywoodRegard]; - [self.cutIntratemporalEncourageRegard addSubview:self.concludeBtuton]; - [self initContrtowardsions]; - } - return self; -} -#pragma mark - Resonse -- (void)concludetBtutonPerformance:(UIButton *)sender { - if (self.FinishBlock) { - [NSObject cancelPreviousPerformRequestsWithTarget:self]; - self.FinishBlock(YES); - } -} - -#pragma mark - Pirvate Method -- (void)initContrtowardsions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth); - make.height.mas_equalTo(KScreenHeight); - }]; - - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.engagementSvgaIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.cutIntratemporalEncourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(70, 25)); - make.right.mas_equalTo(self).offset(-12); - make.top.mas_equalTo(self).offset(41 + kSafeAreaTopHeight); - }]; - - [self.intratemporalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.cutIntratemporalEncourageRegard).offset(13); - make.centerY.mas_equalTo(self.cutIntratemporalEncourageRegard); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.mas_equalTo(self.cutIntratemporalEncourageRegard); - make.size.mas_equalTo(CGSizeMake(0.5, 13)); - }]; - - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(14, 14)); - make.centerY.mas_equalTo(self.cutIntratemporalEncourageRegard); - make.left.mas_equalTo(self.burlywoodRegard.mas_right).offset(8); - }]; -} - -- (void)stopAnimation { - if (self.FinishBlock) { - [NSObject cancelPreviousPerformRequestsWithTarget:self]; - self.FinishBlock(YES); - } -} - -- (UIImage *)setMonopolizeAboutRestrictions:(CGFloat)radius andSize:(CGSize)size image:(UIImage *)image { - - UIGraphicsBeginImageContext(size); - - CGRect rect = CGRectMake(0, 0, size.width, size.height); - UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:rect byRoundingCorners:UIRectCornerAllCorners cornerRadii:CGSizeMake(radius, radius)]; - - CGContextAddPath(UIGraphicsGetCurrentContext(), path.CGPath); - - CGContextClip(UIGraphicsGetCurrentContext()); - - [image drawInRect:rect]; - - CGContextDrawPath(UIGraphicsGetCurrentContext(), kCGPathStroke); - - UIImage *output = UIGraphicsGetImageFromCurrentImageContext(); - - UIGraphicsEndImageContext(); - - return output; -} - -- (CAAnimationGroup *)produceChamberEngagementExtractAnimtowardsioDerivtowardsionSpeck:(CGPoint)orginPoint destinationPoint:(CGPoint)destinationPoint { - - CAKeyframeAnimation * scaleAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale"]; - scaleAnimation.duration = 0.5; - scaleAnimation.repeatCount = 1; - scaleAnimation.values = @[@(0),@(0.2),@(0.4), @(0.6), @(0.8), @(0.9), @(1)]; - scaleAnimation.calculationMode = kCAAnimationCubic; - scaleAnimation.removedOnCompletion = NO; - scaleAnimation.fillMode = kCAFillModeForwards; - - CAKeyframeAnimation * transformAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"]; - transformAnimation.beginTime = 0.5; - transformAnimation.duration = 1; - transformAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];; - transformAnimation.values = @[[NSValue valueWithCGPoint:orginPoint],[NSValue valueWithCGPoint:destinationPoint]]; - transformAnimation.repeatCount = 1; - transformAnimation.removedOnCompletion = NO; - transformAnimation.fillMode = kCAFillModeForwards; - - CAKeyframeAnimation * desScaleformAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale"]; - desScaleformAnimation.beginTime = 1.5; - desScaleformAnimation.duration = 0.5; - desScaleformAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];; - desScaleformAnimation.values = @[@(1), @(1.2), @(1.4), @(1.6)]; - desScaleformAnimation.repeatCount = 1; - desScaleformAnimation.removedOnCompletion = NO; - desScaleformAnimation.fillMode = kCAFillModeForwards; - - - CAKeyframeAnimation * opacityAnimation = [CAKeyframeAnimation animationWithKeyPath:@"opacity"]; - opacityAnimation.beginTime = 1.5; - opacityAnimation.duration = 0.5; - opacityAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];; - opacityAnimation.values = @[@(1),@(0.8),@(0.6),@(0)]; - opacityAnimation.repeatCount = 1; - opacityAnimation.removedOnCompletion = NO; - opacityAnimation.fillMode = kCAFillModeForwards; - - - CAAnimationGroup * group = [CAAnimationGroup animation]; - group.animations = @[scaleAnimation, transformAnimation, desScaleformAnimation, opacityAnimation]; - group.duration = 2; - group.removedOnCompletion = NO; - group.fillMode = kCAFillModeForwards; - return group;; -} - -- (void)inititowardseBeginDeficitucedComputtowardsionAboutGeneralIntrtowardsemporal:(int)time { - __block int totalTime = time; - dispatch_source_t times = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(0, 0)); - _timer = times; - dispatch_source_set_timer(times, DISPATCH_TIME_NOW, 1* NSEC_PER_SEC, 0 * NSEC_PER_SEC); - dispatch_source_set_event_handler(times, ^{ - dispatch_async(dispatch_get_main_queue(), ^{ - if (totalTime <= 5 && totalTime >= 0) { - - self.cutIntratemporalEncourageRegard.hidden = NO; - self.intratemporalSequencignation.text = [NSString stringWithFormat:@"%ds", totalTime]; - } - if (totalTime <= 0) { - dispatch_source_cancel(times); - self.cutIntratemporalEncourageRegard.hidden = YES; - } - totalTime--; - }); - }); - dispatch_resume(times); -} - -- (void)inititowardseExtractCourageFetowardsureBrectifynessDerivtowardsionSpeck:(CGPoint)originPoint targetPoint:(CGPoint)targetPoint { - if (originPoint.x > 0 && targetPoint.x > 0) { - self.courageIndicateRegard.frame = CGRectMake(0, 0, 55, 55); - self.courageIndicateRegard.hidden = YES; - self.encourageRegard.hidden = YES; - self.courageIndicateRegard.hidden = NO; - self.courageIndicateRegard.center = originPoint; - CAAnimationGroup * group = [self produceChamberEngagementExtractAnimtowardsioDerivtowardsionSpeck:originPoint destinationPoint:targetPoint]; - [self.courageIndicateRegard.layer addAnimation:group forKey:nil]; - [self performSelector:@selector(anitowardsionDidAccomplish:) withObject:self.courageIndicateRegard afterDelay:(2)]; - } -} - -- (void)anitowardsionDidAccomplish:(UIImageView *)presentIndicateRegard{ - [presentIndicateRegard.layer removeAllAnimations]; - presentIndicateRegard.hidden = YES; -} - -#pragma mark - Public Method - -- (void)inititowardseBrectifynessAboutMtowardsrix:(EngagementAbstractMatrix *)model finishBlock:(void (^)(BOOL))finishBlock { - self.FinishBlock = finishBlock; - if (model.hasHeart) { - if (model.svgaUrl) { - [self inititowardsePalySVGAAboutWeebsite:model]; - } else { - - - if (self.FinishBlock) { - self.FinishBlock(YES); - } - } - } else { - - [self inititowardseExtractCourageFetowardsureBrectifynessDerivtowardsionSpeck:model.originPoint targetPoint:model.targetPoint]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - - if (self.FinishBlock) { - self.FinishBlock(YES); - } - }); - } - -} - -- (void)inititowardsePalySVGAAboutWeebsite:(EngagementAbstractMatrix *)model { - if (model.svgaUrl) { - self.encourageRegard.hidden = NO; - [[SDWebImageManager sharedManager] loadImageWithURL:[NSURL URLWithString:model.avatar] options:SDWebImageRetryFailed progress:nil completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, SDImageCacheType cacheType, BOOL finished, NSURL * _Nullable imageURL) { - if (image) { - image = [self setMonopolizeAboutRestrictions:200 andSize:CGSizeMake(400, 400) image:image]; - [self.engagementSvgaIndicateRegard setImage:image forKey:@"z_tx"]; - } - }]; - - NSString * title = model.nickname ? model.nickname : @""; - if (title.length >= 5) { - title = [NSString stringWithFormat:@"%@…", [title substringToIndex:5]]; - } - NSMutableAttributedString * rightAttribut = [[NSMutableAttributedString alloc] initWithString:title]; - [rightAttribut addAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:28], NSForegroundColorAttributeName:[UIColor whiteColor]} range:NSMakeRange(0, title.length)]; - [self.engagementSvgaIndicateRegard setAttributedText:rightAttribut forKey:@"z_yhname"]; - - [[SDWebImageManager sharedManager] loadImageWithURL:[NSURL URLWithString:model.targetAvatar] options:SDWebImageRetryFailed progress:nil completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, SDImageCacheType cacheType, BOOL finished, NSURL * _Nullable imageURL) { - if (image) { - image = [self setMonopolizeAboutRestrictions:200 andSize:CGSizeMake(400, 400) image:image]; - [self.engagementSvgaIndicateRegard setImage:image forKey:@"y_tx"]; - } - }]; - NSString * leftTitle = model.targetNickname ? model.targetNickname : @""; - if (leftTitle.length >= 5) { - leftTitle = [NSString stringWithFormat:@"%@…", [leftTitle substringToIndex:5]]; - } - NSMutableAttributedString * leftAttribut = [[NSMutableAttributedString alloc] initWithString:leftTitle]; - [leftAttribut addAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:28], NSForegroundColorAttributeName:[UIColor whiteColor]} range:NSMakeRange(0, leftTitle.length)]; - [self.engagementSvgaIndicateRegard setAttributedText:leftAttribut forKey:@"y_yhname"]; - @kWeakify(self); - [self.anatomiser parseWithURL:[NSURL URLWithString:model.svgaUrl] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { - @kStrongify(self); - self.engagementSvgaIndicateRegard.hidden = NO; - self.engagementSvgaIndicateRegard.videoItem = videoItem; - self.engagementSvgaIndicateRegard.loops = 1; - self.engagementSvgaIndicateRegard.alpha = 1; - self.engagementSvgaIndicateRegard.clearsAfterStop = YES; - [ self.engagementSvgaIndicateRegard startAnimation]; - [self inititowardseBeginDeficitucedComputtowardsionAboutGeneralIntrtowardsemporal:model.svgaSecond]; - } failureBlock:^(NSError * _Nonnull error) { - - }]; - [self performSelector:@selector(stopAnimation) withObject:nil afterDelay:model.svgaSecond]; - } -} - -- (UIImageView *)courageIndicateRegard { - if (!_courageIndicateRegard) { - _courageIndicateRegard = [[UIImageView alloc] init]; - _courageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_mode_dating_pick_heart"]; - _courageIndicateRegard.hidden = YES; - } - return _courageIndicateRegard; -} - -- (UIView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIView alloc] init]; - _encourageRegard.backgroundColor = UIColorRGBAlpha(0x000000, 0.3); - _encourageRegard.hidden = YES; - } - return _encourageRegard; -} - -- (UILabel *)intratemporalSequencignation { - if (!_intratemporalSequencignation) { - _intratemporalSequencignation = [[UILabel alloc] init]; - _intratemporalSequencignation.text = @"5S"; - _intratemporalSequencignation.font = [UIFont systemFontOfSize:15]; - _intratemporalSequencignation.textColor = UIColorFromRGB(0xFFFEFE); - } - return _intratemporalSequencignation; -} - -- (UIView *)cutIntratemporalEncourageRegard { - if (!_cutIntratemporalEncourageRegard) { - _cutIntratemporalEncourageRegard = [[UIView alloc] init]; - _cutIntratemporalEncourageRegard.backgroundColor = UIColorRGBAlpha(0x000000, 0.3); - _cutIntratemporalEncourageRegard.layer.masksToBounds = YES; - _cutIntratemporalEncourageRegard.layer.cornerRadius = 25/2; - _cutIntratemporalEncourageRegard.hidden = YES; - } - return _cutIntratemporalEncourageRegard; -} - -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [UIButton buttonWithType: UIButtonTypeCustom]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_same_close_white"] forState:UIControlStateNormal]; - [_concludeBtuton addTarget:self action:@selector(concludetBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_concludeBtuton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:10]; - } - return _concludeBtuton; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = UIColor.whiteColor; - } - return _burlywoodRegard; -} - -- (SVGAParser *)anatomiser { - if (!_anatomiser) { - _anatomiser = [[SVGAParser alloc]init]; - } - return _anatomiser; -} - -- (SVGAImageView *)engagementSvgaIndicateRegard { - if (!_engagementSvgaIndicateRegard) { - _engagementSvgaIndicateRegard = [[SVGAImageView alloc]init]; - _engagementSvgaIndicateRegard.backgroundColor = [UIColor clearColor]; - _engagementSvgaIndicateRegard.frame = self.bounds; - _engagementSvgaIndicateRegard.userInteractionEnabled = YES; - } - return _engagementSvgaIndicateRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberFortunateBigCaptureRegard.h b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberFortunateBigCaptureRegard.h deleted file mode 100644 index 0cb6ce68..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberFortunateBigCaptureRegard.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMRoomLuckyBigPrizeView.h -// YUMI -// -// Created by YUMI on 2022/6/15. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIPresentBigCaptureMatrix, YUMIChamberFortunateBigCaptureRegard; -@protocol FBCChamberLuckyBigPrizeRegardRepresendtation - -- (void)yUMIChamberInthecaseoftuntowardseConsiderableCaptureRegard:(YUMIChamberFortunateBigCaptureRegard *)view luckyGiftInfo:(YUMIPresentBigCaptureMatrix *)giftInfo; - -@end - -@interface YUMIChamberFortunateBigCaptureRegard : UIView -@property (nonatomic,strong) YUMIPresentBigCaptureMatrix *giftInfo; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberFortunateBigCaptureRegard.m b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberFortunateBigCaptureRegard.m deleted file mode 100644 index 9c049a9c..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberFortunateBigCaptureRegard.m +++ /dev/null @@ -1,121 +0,0 @@ -// -// YMRoomLuckyBigPrizeView.m -// YUMI -// -// Created by YUMI on 2022/6/15. -// - -#import "YUMIChamberFortunateBigCaptureRegard.h" -#import -#import "SVGAParser.h" -#import "SVGA.h" -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "YUMIPresentBigCaptureMatrix.h" -#import "YUMISVGADisporter.h" - - -@interface YUMIChamberFortunateBigCaptureRegard () -@property (strong, nonatomic) SVGAParser *anatomiser; -@property (nonatomic, strong) YUMISVGADisporter *presentIndicateRegard; -@end - -@implementation YUMIChamberFortunateBigCaptureRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.presentIndicateRegard]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognizer:)]; - [self addGestureRecognizer:tap]; -} - -- (void)initChildLyRestrictions { - [self.presentIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; -} - -#pragma mark - Event Response -- (void)tapRecognizer:(UITapGestureRecognizer *)tap { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberInthecaseoftuntowardseConsiderableCaptureRegard:luckyGiftInfo:)]) { - [self.delegate yUMIChamberInthecaseoftuntowardseConsiderableCaptureRegard:self luckyGiftInfo:self.giftInfo]; - } -} - -#pragma mark - Getters And Setters -- (void)setGiftInfo:(YUMIPresentBigCaptureMatrix *)giftInfo { - _giftInfo = giftInfo; - if (_giftInfo) { - NSString * nick = _giftInfo.nick; - if (nick.length > 6) { - nick = [nick substringToIndex:6]; - } - CGFloat fontSize = 22; - NSDictionary * dic = @{NSFontAttributeName:[UIFont systemFontOfSize:fontSize], NSForegroundColorAttributeName:[UIColor whiteColor]}; - NSDictionary * mainDic = @{NSFontAttributeName:[UIFont systemFontOfSize:fontSize], NSForegroundColorAttributeName:[DJDKMIMOMColor aplictowardsionMainPrettify]}; - NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] init]; - [attributedString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:@"恭喜 " attributes:dic]]; - if (nick) { - [attributedString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:nick attributes:mainDic]]; - } - - [attributedString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:YMLocalizedString(@"YUMI_Room_Lucky_Big_Prize_View_1"),_giftInfo.luckyBagName] attributes:dic]]; - if (giftInfo.goldPrice) { - [attributedString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:giftInfo.goldPrice attributes:mainDic]]; - } - [attributedString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:giftInfo.giftName attributes:mainDic]]; - NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new]; - paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping; - paragraphStyle.alignment = NSTextAlignmentLeft; - paragraphStyle.lineSpacing = 4.0f; - - paragraphStyle.alignment = NSTextAlignmentLeft; - paragraphStyle.baseWritingDirection = NSWritingDirectionLeftToRight; - [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, attributedString.length)]; - if (_giftInfo.isInRoomVisiable) { - [self.presentIndicateRegard setHidden:YES forKey:@"img_206"]; - } else { - [self.presentIndicateRegard setHidden:NO forKey:@"img_206"]; - } - @kWeakify(self); - [self.presentIndicateRegard setAttributedText:attributedString forKey:@"fdpp_copywriting"]; - NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/lucky_gift_streamer.svga", API_Image_URL]; - [self.anatomiser parseWithURL:[NSURL URLWithString:anatomiser1Name] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { - @kStrongify(self); - self.hidden = NO; - self.presentIndicateRegard.hidden = NO; - self.presentIndicateRegard.videoItem = videoItem; - self.presentIndicateRegard.loops = 1; - self.presentIndicateRegard.clearsAfterStop = YES; - [self.presentIndicateRegard startAnimation]; - } failureBlock:^(NSError * _Nonnull error) { - - }]; - } -} - -- (YUMISVGADisporter *)presentIndicateRegard { - if (!_presentIndicateRegard) { - _presentIndicateRegard = [[YUMISVGADisporter alloc]init]; - _presentIndicateRegard.backgroundColor = [UIColor clearColor]; - _presentIndicateRegard.userInteractionEnabled = NO; - } - return _presentIndicateRegard; -} - -- (SVGAParser *)anatomiser { - if (!_anatomiser) { - _anatomiser = [[SVGAParser alloc]init]; - } - return _anatomiser; -} -@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberGraffitiPresentBrightnessRegard.h b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberGraffitiPresentBrightnessRegard.h deleted file mode 100644 index 9fc33893..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberGraffitiPresentBrightnessRegard.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// YMRoomGraffitiGiftAnimationView.h -// YUMI -// -// Created by YUMI on 2022/8/23. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIChamberGraffitiPresentBrightnessRegard, AttachmentMatrix; -@protocol FBCChamberGraffitiPresentAnimationRegardRepresendtation - -- (void)yUMIChamberDoodlePresentBrectifynessRegardImplementtowardsion:(YUMIChamberGraffitiPresentBrightnessRegard *)view attachment:(AttachmentMatrix *)attachment; - -@end - -@interface YUMIChamberGraffitiPresentBrightnessRegard : UIView -@property (nonatomic,strong) UIImage *presentIndicate; -@property (nonatomic,weak) id delegate; -@property (nonatomic,strong) NSArray *speckGarment; -@property (nonatomic,strong) AttachmentMatrix *model; -- (void)institutePaletteBrectifyness; -- (void)concludePaletteBrectifyness; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberGraffitiPresentBrightnessRegard.m b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberGraffitiPresentBrightnessRegard.m deleted file mode 100644 index b7f28b78..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberGraffitiPresentBrightnessRegard.m +++ /dev/null @@ -1,85 +0,0 @@ -// -// YMRoomGraffitiGiftAnimationView.m -// YUMI -// -// Created by YUMI on 2022/8/23. -// - -#import "YUMIChamberGraffitiPresentBrightnessRegard.h" -#import "YUMIWeakIntratemporalr.h" -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" - -@interface YUMIChamberGraffitiPresentBrightnessRegard () -@property (nonatomic,strong) NSTimer *timer; -@property (nonatomic,assign) int index; -@property (nonatomic,strong) NSMutableArray *datasource; -@end - -@implementation YUMIChamberGraffitiPresentBrightnessRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - self.userInteractionEnabled = NO; - self.timer = [YUMIWeakIntratemporalr scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(dramDoodleBrectifynessRegard) userInfo:@"" repeats:YES]; - } - return self; -} - -- (void)institutePaletteBrectifyness { - self.index = 0; - for (int i = 0; i < self.speckGarment.count; i++) { - NSArray * speckGarment = self.speckGarment[i]; - NSNumber * first = [speckGarment firstObject]; - NSNumber * second = [speckGarment lastObject]; - CGFloat x = first.floatValue / 1000.0 * KScreenWidth; - CGFloat y = second.floatValue / 1000.0 * KScreenHeight; - if (x <= 0 || x >= KScreenWidth || y <= 0 || y >= KScreenHeight) { - continue; - } - CGPoint point = CGPointMake(x, y); - [self.datasource addObject:[NSValue valueWithCGPoint:point]]; - } - self.timer.fireDate = NSDate.distantPast; -} - -- (void)concludePaletteBrectifyness { - self.timer.fireDate = NSDate.distantFuture; - [self.datasource removeAllObjects]; - self.index = 0; -} - - -- (void)dramDoodleBrectifynessRegard { - if (self.index >= (self.datasource.count -1)) { - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - self.timer.fireDate = NSDate.distantFuture; - [self.datasource removeAllObjects]; - self.index = 0; - [self.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberDoodlePresentBrectifynessRegardImplementtowardsion:attachment:)]) { - [self.delegate yUMIChamberDoodlePresentBrectifynessRegardImplementtowardsion:self attachment:self.model]; - } - }); - return; - } - NSValue * valeu= [self.datasource secureGroalTowardsIndictowardsrix1:self.index]; - CGPoint point = valeu.CGPointValue; - UIImageView * imageView = [[UIImageView alloc] init]; - imageView.layer.masksToBounds = YES; - imageView.contentMode = UIViewContentModeScaleAspectFill; - imageView.image = self.presentIndicate; - imageView.frame = CGRectMake(point.x, point.y, 20, 20); - [self addSubview:imageView]; - self.index++; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberImportHideTipRegard.h b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberImportHideTipRegard.h deleted file mode 100644 index 9e55e530..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberImportHideTipRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomEnterHideTipView.h -// YUMI -// -// Created by YUMI on 2022/4/26. -// 隐身进房提示 - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberImportHideTipRegard : UIView - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberImportHideTipRegard.m b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberImportHideTipRegard.m deleted file mode 100644 index 6803ad03..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberImportHideTipRegard.m +++ /dev/null @@ -1,89 +0,0 @@ -// -// YMRoomEnterHideTipView.m -// YUMI -// -// Created by YUMI on 2022/4/26. -// - -#import "YUMIChamberImportHideTipRegard.h" -#import -#import "ThemeColor+Room.h" -#import "DJDKMIMOMColor.h" - -@interface YUMIChamberImportHideTipRegard() - -@property (nonatomic,strong) UIView *backgroundRegard; -@property (nonatomic,strong) UIImageView *figureIndicateRegard; -@property (nonatomic, strong) UILabel *sequenceSequencignation; - -@end - -@implementation YUMIChamberImportHideTipRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -- (void)layoutSubviews { - [super layoutSubviews]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backgroundRegard]; - [self.backgroundRegard addSubview:self.figureIndicateRegard]; - [self.backgroundRegard addSubview:self.sequenceSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.backgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.centerY.mas_equalTo(self); - make.width.mas_equalTo(190); - make.height.mas_equalTo(48); - }]; - [self.figureIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.backgroundRegard).mas_offset(12); - make.centerY.mas_equalTo(self.backgroundRegard); - make.width.height.mas_equalTo(32); - }]; - [self.sequenceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.figureIndicateRegard.mas_right).mas_offset(8); - make.centerY.mas_equalTo(self.backgroundRegard); - }]; -} - -#pragma mark - Getters And Setters -- (UIView *)backgroundRegard { - if (!_backgroundRegard) { - _backgroundRegard = [[UIView alloc] init]; - _backgroundRegard.backgroundColor = UIColorRGBAlpha(0x000000, 0.5); - _backgroundRegard.layer.cornerRadius = 24; - _backgroundRegard.layer.masksToBounds = YES; - } - return _backgroundRegard; -} - -- (UIImageView *)figureIndicateRegard { - if (!_figureIndicateRegard) { - _figureIndicateRegard = [[UIImageView alloc] init]; - _figureIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_enterRoom_hide"]; - } - return _figureIndicateRegard; -} - -- (UILabel *)sequenceSequencignation { - if (!_sequenceSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:14]; - label.textColor = [UIColor whiteColor]; - label.text = @"你已隐身进入房间~"; - _sequenceSequencignation = label; - } - return _sequenceSequencignation; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberKellegRateOriflammeRegard.h b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberKellegRateOriflammeRegard.h deleted file mode 100644 index 2dc017a4..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberKellegRateOriflammeRegard.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMRoomAnchorRankBannerView.h -// YUMI -// -// Created by YUMI on 2022/4/15. -// 个播小时榜飘屏 - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ChamberHalfHourRateMatrix; -@interface YUMIChamberKellegRateOriflammeRegard : UIView - -@property (nonatomic,copy) ChamberHalfHourRateMatrix * kellegRateAbstract; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberKellegRateOriflammeRegard.m b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberKellegRateOriflammeRegard.m deleted file mode 100644 index 03afcc0e..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberKellegRateOriflammeRegard.m +++ /dev/null @@ -1,169 +0,0 @@ -// -// YMRoomAnchorRankBannerView.m -// YUMI -// -// Created by YUMI on 2022/4/15. -// - -#import "YUMIChamberKellegRateOriflammeRegard.h" -#import -#import "ThemeColor+Room.h" -#import "DJDKMIMOMColor.h" -#import "ChamberHalfHourRateMatrix.h" -#import "NetIndicateRegard.h" - -@interface YUMIChamberKellegRateOriflammeRegard() - -@property (nonatomic,strong) UIImageView *backgroundIndicateRegard; -@property (nonatomic,strong) UIImageView *figureIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *avatIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic, strong) UILabel *sequenceSequencignation; -@property (nonatomic, strong) UILabel *rateSequencignation; - -@end - -@implementation YUMIChamberKellegRateOriflammeRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -- (void)layoutSubviews { - [super layoutSubviews]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backgroundIndicateRegard]; - [self addSubview:self.figureIndicateRegard]; - [self addSubview:self.titleLabel]; - [self addSubview:self.avatIndicateRegard]; - [self addSubview:self.monicerSequencignation]; - [self addSubview:self.sequenceSequencignation]; - [self addSubview:self.rateSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.centerY.mas_equalTo(self); - make.width.mas_equalTo(360); - make.height.mas_equalTo(50); - }]; - [self.figureIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.backgroundIndicateRegard).mas_offset(-14); - make.centerY.mas_equalTo(self); - make.width.mas_equalTo(61); - make.height.mas_equalTo(60); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.figureIndicateRegard.mas_right).mas_offset(3); - make.centerY.mas_equalTo(self.backgroundIndicateRegard).mas_offset(2); - }]; - [self.avatIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.titleLabel.mas_right).mas_offset(3); - make.centerY.mas_equalTo(self.titleLabel); - make.width.height.mas_equalTo(22); - }]; - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.avatIndicateRegard.mas_right).mas_offset(3); - make.centerY.mas_equalTo(self.titleLabel); - }]; - [self.sequenceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.monicerSequencignation.mas_right).mas_offset(3); - make.centerY.mas_equalTo(self.titleLabel); - }]; - [self.rateSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.sequenceSequencignation.mas_right); - make.centerY.mas_equalTo(self.titleLabel); - }]; -} - -- (void)setKellegRateAbstract:(ChamberHalfHourRateMatrix *)kellegRateAbstract { - _kellegRateAbstract = kellegRateAbstract; - if (kellegRateAbstract) { - self.avatIndicateRegard.imageUrl = _kellegRateAbstract.avatar; - NSString *nick = _kellegRateAbstract.nick; - if(nick.length > 4) { - nick = [NSString stringWithFormat:@"%@…", [nick substringToIndex:4]]; - } - self.monicerSequencignation.text = nick; - self.sequenceSequencignation.text = _kellegRateAbstract.desc; - } -} -#pragma mark - Getters And Setters -- (UIImageView *)backgroundIndicateRegard { - if (!_backgroundIndicateRegard) { - _backgroundIndicateRegard = [[UIImageView alloc] init]; - _backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_anchor_hour_order_background"]; - } - return _backgroundIndicateRegard; -} - -- (UIImageView *)figureIndicateRegard { - if (!_figureIndicateRegard) { - _figureIndicateRegard = [[UIImageView alloc] init]; - _figureIndicateRegard.image = [UIImage imageNamed:@"yumi_anchor_hour_order_pic"]; - } - return _figureIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:13 weight:UIFontWeightBold]; - label.textColor = [UIColor whiteColor]; - label.text = YMLocalizedString(@"YUMI_Room_Anchor_Rank_Banner_View_0"); - _titleLabel = label; - } - return _titleLabel; -} - -- (NetIndicateRegard *)avatIndicateRegard { - if (!_avatIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - _avatIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _avatIndicateRegard.layer.masksToBounds = YES; - _avatIndicateRegard.layer.cornerRadius = 11; - } - return _avatIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:13 weight:UIFontWeightBold]; - label.textColor = UIColorFromRGB(0xFFFC2C); - _monicerSequencignation = label; - } - return _monicerSequencignation; -} - -- (UILabel *)sequenceSequencignation { - if (!_sequenceSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:13 weight:UIFontWeightHeavy]; - label.textColor = [UIColor whiteColor]; - _sequenceSequencignation = label; - } - return _sequenceSequencignation; -} - -- (UILabel *)rateSequencignation { - if (!_rateSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:13 weight:UIFontWeightHeavy]; - label.textColor = UIColorFromRGB(0xFFFC2C); - label.text = @"TOP1"; - _rateSequencignation = label; - } - return _rateSequencignation; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberLicneseHourRateRegard.h b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberLicneseHourRateRegard.h deleted file mode 100644 index b9aa84af..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberLicneseHourRateRegard.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMRoomLicneseHourRankView.h -// YUMI -// -// Created by YUMI on 2022/6/13. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ChamberHalfHourRateMatrix, YUMIChamberLicneseHourRateRegard; -@protocol FBCChamberLicneseHourRankRegardRepresendtation - -- (void)yUMIChamberLicneseStundeRtowardseRegard:(YUMIChamberLicneseHourRateRegard *)view rateAbstract:(ChamberHalfHourRateMatrix *)rateAbstract; - -@end -@interface YUMIChamberLicneseHourRateRegard : UIView -@property (nonatomic,copy) ChamberHalfHourRateMatrix * licneseRateAbstract; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberLicneseHourRateRegard.m b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberLicneseHourRateRegard.m deleted file mode 100644 index aa85e3c8..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberLicneseHourRateRegard.m +++ /dev/null @@ -1,126 +0,0 @@ -// -// YMRoomLicneseHourRankView.m -// YUMI -// -// Created by YUMI on 2022/6/13. -// - -#import "YUMIChamberLicneseHourRateRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "ChamberHalfHourRateMatrix.h" - -@interface YUMIChamberLicneseHourRateRegard () - -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UIButton *importBtuton; - -@end - -@implementation YUMIChamberLicneseHourRateRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.encourageIndicateRegard]; - [self addSubview:self.titleLabel]; - [self addSubview:self.importBtuton]; -} - -- (void)initChildLyRestrictions { - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self).offset(64); - make.right.mas_equalTo(self.importBtuton.mas_left).offset(-5); - make.centerY.mas_equalTo(self); - }]; - - [self.importBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(44, 20)); - make.centerY.mas_equalTo(self); - make.right.mas_equalTo(self).offset(-6); - }]; -} - -#pragma mark - Event Response -- (void)encourageBetowardsRecognition { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberLicneseStundeRtowardseRegard:rateAbstract:)]) { - [self.delegate yUMIChamberLicneseStundeRtowardseRegard:self rateAbstract:self.licneseRateAbstract]; - } -} - -#pragma mark - Getters And Setters -- (void)setLicneseRateAbstract:(ChamberHalfHourRateMatrix *)licneseRateAbstract { - _licneseRateAbstract = licneseRateAbstract; - if (_licneseRateAbstract) { - NSString *nick = _licneseRateAbstract.title; - if(nick.length > 6) { - nick = [NSString stringWithFormat:@"%@", [nick substringToIndex:6]]; - } - NSDictionary * dic = @{NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:[UIColor whiteColor]}; - NSDictionary * hightDic = @{NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:[DJDKMIMOMColor aplictowardsionMainPrettify]}; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - [attribute appendAttributedString:[[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"YUMI_Room_Licnese_Hour_Rank_View_0") attributes:dic]]; - if (nick.length > 0) { - [attribute appendAttributedString:[[NSMutableAttributedString alloc] initWithString:nick attributes:hightDic]]; - } - - if (licneseRateAbstract.desc.length > 0) { - [attribute appendAttributedString:[[NSMutableAttributedString alloc] initWithString:licneseRateAbstract.desc attributes:dic]]; - } - [attribute appendAttributedString:[[NSMutableAttributedString alloc] initWithString:@"TOP1" attributes:hightDic]]; - self.titleLabel.attributedText = attribute; - self.titleLabel.textAlignment = NSTextAlignmentCenter; - } -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_licnese_hour_order_background"]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(encourageBetowardsRecognition)]; - [_encourageIndicateRegard addGestureRecognizer:tap]; - } - return _encourageIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.numberOfLines = 2; - } - return _titleLabel; -} - -- (UIButton *)importBtuton { - if (!_importBtuton) { - _importBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_importBtuton setTitle:YMLocalizedString(@"YUMI_Room_Licnese_Hour_Rank_View_1") forState:UIControlStateNormal]; - [_importBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _importBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - [_importBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xd93d5f), UIColorFromRGB(0xfff494)] gradientType:GradientGenreTopToBottom imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _importBtuton.layer.masksToBounds = YES; - _importBtuton.layer.cornerRadius = 10; - _importBtuton.layer.borderColor = [UIColor whiteColor].CGColor; - _importBtuton.layer.borderWidth = 0.5; - _importBtuton.userInteractionEnabled = NO; - } - return _importBtuton; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberMagnificentPrototypeUpwardsRegard.h b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberMagnificentPrototypeUpwardsRegard.h deleted file mode 100644 index be0d66b8..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberMagnificentPrototypeUpwardsRegard.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMRoomNobleLevelUpView.h -// YUMI -// -// Created by YUMI on 2022/1/10. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberMagnificentPrototypeUpwardsRegard : UIView - -@property (nonatomic,copy) NSDictionary * magnificentAbstract; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberMagnificentPrototypeUpwardsRegard.m b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberMagnificentPrototypeUpwardsRegard.m deleted file mode 100644 index a9a6d5c3..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberMagnificentPrototypeUpwardsRegard.m +++ /dev/null @@ -1,156 +0,0 @@ -// -// YMRoomNobleLevelUpView.m -// YUMI -// -// Created by YUMI on 2022/1/10. -// - -#import "YUMIChamberMagnificentPrototypeUpwardsRegard.h" -#import -#import -#import "YUMIMacroUitls.h" -#import "ThemeColor+Room.h" -#import "NetIndicateRegard.h" -#import - -@interface YUMIChamberMagnificentPrototypeUpwardsRegard () -@property (strong, nonatomic) SVGAParser *anatomiser; - -@property (nonatomic,strong) SVGAImageView *magnificentRegard; - -@property (nonatomic, strong) UILabel *thresholdSequencignation; -@property (nonatomic, strong) NetIndicateRegard *imageView; -@property (nonatomic, strong) UILabel *instantSequencignation; - -@end - - -@implementation YUMIChamberMagnificentPrototypeUpwardsRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.magnificentRegard]; -} - -- (void)initChildLyRestrictions { - [self.magnificentRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.height.mas_equalTo(90); - }]; -} - -- (NSMutableAttributedString *)produceIdiosyncracy:(NSString * )text color:(UIColor *)color { - NSDictionary * attribute = @{NSFontAttributeName:[UIFont systemFontOfSize:22], NSForegroundColorAttributeName:color}; - NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:text attributes:attribute]; - return attr; -} - -#pragma mark - Getters And Setters -- (void)setMagnificentAbstract:(NSDictionary *)magnificentAbstract { - _magnificentAbstract = magnificentAbstract; - self.imageView.imageUrl = magnificentAbstract[@"avatar"]; - - if (magnificentAbstract) { - @kWeakify(self); - [self.anatomiser parseWithURL:[NSURL URLWithString:magnificentAbstract[@"floatPic"]] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { - @kStrongify(self); - self.magnificentRegard.loops = 1; - self.magnificentRegard.clearsAfterStop = NO; - self.magnificentRegard.videoItem = videoItem; - [self.magnificentRegard startAnimation]; - } failureBlock:^(NSError * _Nullable error) { - - }]; - - [self.magnificentRegard setDrawingBlock:^(CALayer *contentLayer, NSInteger frameIndex) { - @kStrongify(self); - CGFloat height = contentLayer.bounds.size.height; - CGFloat totalWidth = 0; - - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - [attribute appendAttributedString:[self produceIdiosyncracy:@"引爆全场!恭喜 " color:[UIColor whiteColor]]]; - CGFloat width1 = [attribute.string boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, height) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:22]} context:nil].size.width; - self.thresholdSequencignation.attributedText = attribute; - - NSMutableAttributedString * attribute1 = [[NSMutableAttributedString alloc] init]; - [attribute1 appendAttributedString:[self produceIdiosyncracy:@" " color:[DJDKMIMOMColor presentBroadcastDigitalPrettify]]]; - [attribute1 appendAttributedString:[self produceIdiosyncracy:magnificentAbstract[@"nick"] color:[DJDKMIMOMColor presentBroadcastDigitalPrettify]]]; - [attribute1 appendAttributedString:[self produceIdiosyncracy:@" " color:[DJDKMIMOMColor presentBroadcastDigitalPrettify]]]; - [attribute1 appendAttributedString:[self produceIdiosyncracy:[NSString stringWithFormat:@"贵族身份升级为%@!", magnificentAbstract[@"currVipName"]] color:[UIColor whiteColor]]]; - CGFloat width2 = [attribute1.string boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, height) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:22]} context:nil].size.width; - self.instantSequencignation.attributedText = attribute1; - - totalWidth += ((width1 + width2) * 12/22 + 50); - CGFloat originL = (KScreenWidth - (totalWidth > KScreenWidth ? KScreenWidth : totalWidth)) * 0.5; - if (KScreenHeight != 667) { - self.thresholdSequencignation.layer.frame = CGRectMake(originL, 0, width1, height); - [contentLayer addSublayer:self.thresholdSequencignation.layer]; - UIImageView *imageView = [[UIImageView alloc] initWithImage:self.imageView.image]; - imageView.layer.frame = CGRectMake(originL + width1, (height - 50) * 0.5, 50, 50); - imageView.layer.cornerRadius = 25.0f; - imageView.layer.masksToBounds = YES; - [contentLayer addSublayer:imageView.layer]; - self.instantSequencignation.layer.frame = CGRectMake(originL + width1 + 50, 0, width2, height); - [contentLayer addSublayer:self.instantSequencignation.layer]; - } else { - totalWidth -= 50; - CGFloat originL = (KScreenWidth - (totalWidth > KScreenWidth ? KScreenWidth : totalWidth)) * 0.5; - self.thresholdSequencignation.layer.frame = CGRectMake(originL, 0, width1, height); - [contentLayer addSublayer:self.thresholdSequencignation.layer]; - self.instantSequencignation.layer.frame = CGRectMake(originL + width1, 0, width2, height); - [contentLayer addSublayer:self.instantSequencignation.layer]; - } - } forKey:@"noble_text_tx"]; - } -} - -- (SVGAImageView *)magnificentRegard { - if (!_magnificentRegard) { - _magnificentRegard = [[SVGAImageView alloc]init]; - _magnificentRegard.backgroundColor = [UIColor clearColor]; - _magnificentRegard.userInteractionEnabled = NO; - } - return _magnificentRegard; -} - -- (SVGAParser *)anatomiser { - if (!_anatomiser) { - _anatomiser = [[SVGAParser alloc]init]; - } - return _anatomiser; -} - -- (UILabel *)thresholdSequencignation { - if (!_thresholdSequencignation) { - _thresholdSequencignation = [[UILabel alloc] init]; - } - return _thresholdSequencignation; -} - -- (UILabel *)instantSequencignation{ - if (!_instantSequencignation) { - _instantSequencignation = [[UILabel alloc] init]; - } - return _instantSequencignation; -} - -- (NetIndicateRegard *)imageView { - if (!_imageView) { - NetIndicateDisposition *config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.autoChamber = YES; - _imageView = [[NetIndicateRegard alloc] initWithConfig:config]; - } - return _imageView; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberPresentBrightnessAnatomiser.h b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberPresentBrightnessAnatomiser.h deleted file mode 100644 index 23bc8179..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberPresentBrightnessAnatomiser.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YMRoomGiftAnimationParser.h -// YUMI -// -// Created by YUMI on 2022/3/17. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberPresentBrightnessAnatomiser : NSObject - -- (void)parseWithURL:(nonnull NSString *)URL - completionBlock:(void ( ^ _Nonnull )(NSString * _Nullable videoUrl))completionBlock - failureBlock:(void ( ^ _Nullable)(NSError * _Nullable error))failureBlock; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberPresentBrightnessAnatomiser.m b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberPresentBrightnessAnatomiser.m deleted file mode 100644 index d14ddd81..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberPresentBrightnessAnatomiser.m +++ /dev/null @@ -1,98 +0,0 @@ -// -// YMRoomGiftAnimationParser.m -// YUMI -// -// Created by YUMI on 2022/3/17. -// - -#import "YUMIChamberPresentBrightnessAnatomiser.h" -#import -#import -#import -#import -#import "GCDHelper.h" - -@implementation YUMIChamberPresentBrightnessAnatomiser - -static NSOperationQueue *parseQueue; - -+ (void)load { - parseQueue = [NSOperationQueue new]; - parseQueue.maxConcurrentOperationCount = 8; -} - -- (void)parseWithURL:(nonnull NSString *)URL - completionBlock:(void ( ^ _Nonnull )(NSString * _Nullable videoUrl))completionBlock - failureBlock:(void ( ^ _Nullable)(NSError * _Nullable error))failureBlock { - [self parseWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:URL] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:20.0] - completionBlock:completionBlock - failureBlock:failureBlock]; -} - -- (void)parseWithURLRequest:(NSURLRequest *)URLRequest completionBlock:(void (^)(NSString * _Nullable))completionBlock failureBlock:(void (^)(NSError * _Nullable))failureBlock { - if (URLRequest.URL == nil) { - if (failureBlock) { - [[NSOperationQueue mainQueue] addOperationWithBlock:^{ - failureBlock([NSError errorWithDomain:@"vapParser" code:411 userInfo:@{NSLocalizedDescriptionKey: @"URL cannot be nil."}]); - }]; - } - return; - } - if ([[NSFileManager defaultManager] fileExistsAtPath:[self cacheDirectory:[self cacheKey:URLRequest.URL]]]) { - if (completionBlock) { - [[NSOperationQueue mainQueue] addOperationWithBlock:^{ - completionBlock([self cacheDirectory:[self cacheKey:URLRequest.URL]]); - }]; - } - return; - } - [[[AFHTTPSessionManager manager] downloadTaskWithRequest:URLRequest progress:^(NSProgress * _Nonnull downloadProgress) { - } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) { - return [NSURL fileURLWithPath:[self cacheDirectory:[self cacheKey:URLRequest.URL]]]; - } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) { - if (!error) { - [[NSOperationQueue mainQueue] addOperationWithBlock:^{ - NSString *str; - if ([filePath.absoluteString hasPrefix:@"file:///"]) { - str = [filePath.absoluteString stringByReplacingOccurrencesOfString:@"file://" withString:@""]; - } else { - str = filePath.absoluteString; - } - completionBlock(str); - }]; - } else { - [[NSOperationQueue mainQueue] addOperationWithBlock:^{ - completionBlock(nil); - }]; - } - }] resume]; -} - -- (void)clearCache:(nonnull NSString *)cacheKey { - NSString *cacheDir = [self cacheDirectory:cacheKey]; - [[NSFileManager defaultManager] removeItemAtPath:cacheDir error:NULL]; -} - -- (nonnull NSString *)cacheKey:(NSURL *)URL { - return [self MD5String:URL.absoluteString]; -} - -- (nullable NSString *)cacheDirectory:(NSString *)cacheKey { - NSString *cacheDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject]; - return [cacheDir stringByAppendingFormat:@"/%@.mp4", cacheKey]; -} - -- (NSString *)MD5String:(NSString *)str { - const char *cstr = [str UTF8String]; - unsigned char result[16]; - CC_MD5(cstr, (CC_LONG)strlen(cstr), result); - return [NSString stringWithFormat: - @"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", - result[0], result[1], result[2], result[3], - result[4], result[5], result[6], result[7], - result[8], result[9], result[10], result[11], - result[12], result[13], result[14], result[15] - ]; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberPresentCompoundRegard.h b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberPresentCompoundRegard.h deleted file mode 100644 index b80ca5e2..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberPresentCompoundRegard.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMRoomGiftCompoundView.h -// YUMI -// -// Created by YUMI on 2022/8/5. -// 魔法小屋礼物合成 - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberPresentCompoundRegard : UIView - -@property (nonatomic,copy) NSDictionary * compoundPresentAbstract; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberPresentCompoundRegard.m b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberPresentCompoundRegard.m deleted file mode 100644 index fe9bb7fe..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberPresentCompoundRegard.m +++ /dev/null @@ -1,109 +0,0 @@ -// -// YMRoomGiftCompoundView.m -// YUMI -// -// Created by YUMI on 2022/8/5. -// - -#import "YUMIChamberPresentCompoundRegard.h" -#import -#import -#import "YUMIMacroUitls.h" -#import "ThemeColor+Room.h" -#import "YUMIPresentCompoundMatrix.h" -#import "NSObject+MJExtension.h" - -@interface YUMIChamberPresentCompoundRegard () - -@property (strong, nonatomic) SVGAParser *anatomiser; -@property (nonatomic,strong) SVGAImageView *compoundPresentRegard; -@property (nonatomic,strong) UILabel *titleLabel; - -@end - -@implementation YUMIChamberPresentCompoundRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.compoundPresentRegard]; - [self addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.compoundPresentRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.height.mas_equalTo(45); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.compoundPresentRegard); - }]; -} - -- (NSAttributedString *)produceIdiosyncracy:(NSString * )text color:(UIColor *)color fontSize:(CGFloat)fonSize { - NSDictionary * attribute = @{NSFontAttributeName:[UIFont systemFontOfSize:fonSize], NSForegroundColorAttributeName:color}; - NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:text attributes:attribute]; - return attr; -} - -#pragma mark - Getters And Setters -- (void)setCompoundPresentAbstract:(NSDictionary *)compoundPresentAbstract { - if (compoundPresentAbstract) { - YUMIPresentCompoundMatrix * giftInfo = [YUMIPresentCompoundMatrix mtowardsrixAboutImpactbasket:compoundPresentAbstract]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - CGFloat fontSize = 22; - NSString *nickStr = giftInfo.nick; - if (nickStr.length > 6) { - nickStr = [NSString stringWithFormat:@"%@…", [giftInfo.nick substringToIndex:6]]; - } - [attribute appendAttributedString:[self produceIdiosyncracy:YMLocalizedString(@"YUMI_Room_Gift_Compound_View_0") color:[UIColor whiteColor] fontSize:fontSize]]; - [attribute appendAttributedString:[self produceIdiosyncracy:nickStr color:[DJDKMIMOMColor communictowardsionMonicerPrettify] fontSize:fontSize]]; - [attribute appendAttributedString:[self produceIdiosyncracy:giftInfo.msg color:[UIColor whiteColor] fontSize:fontSize]]; - [attribute appendAttributedString:[self produceIdiosyncracy:giftInfo.giftName color:[DJDKMIMOMColor communictowardsionMonicerPrettify] fontSize:fontSize]]; - - @kWeakify(self); - NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/compound_gift_banner.svga", API_Image_URL]; - [self.anatomiser parseWithURL:[NSURL URLWithString:anatomiser1Name] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { - @kStrongify(self); - self.compoundPresentRegard.loops = 1; - self.compoundPresentRegard.clearsAfterStop = NO; - self.compoundPresentRegard.videoItem = videoItem; - [self.compoundPresentRegard setAttributedText:attribute forKey:@"noble_text_tx"]; - [self.compoundPresentRegard startAnimation]; - } failureBlock:^(NSError * _Nonnull error) { - - }]; - } -} - -- (SVGAImageView *)compoundPresentRegard { - if (!_compoundPresentRegard) { - _compoundPresentRegard = [[SVGAImageView alloc]init]; - _compoundPresentRegard.backgroundColor = [UIColor clearColor]; - _compoundPresentRegard.userInteractionEnabled = NO; - } - return _compoundPresentRegard; -} - -- (SVGAParser *)anatomiser { - if (!_anatomiser) { - _anatomiser = [[SVGAParser alloc]init]; - } - return _anatomiser; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberPresentOriflammeRegard.h b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberPresentOriflammeRegard.h deleted file mode 100644 index 11e42590..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberPresentOriflammeRegard.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMRoomGiftBannerView.h -// YUMI -// -// Created by YUMI on 2021/11/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class PresentAchieveAbstractMatrix, YUMIPresentOriflammeConsumerAbstractMatrix; -@interface YUMIChamberPresentOriflammeRegard : UIView -- (void)prohibitipositionPresentOriflamme:(PresentAchieveAbstractMatrix *)receiveInfo users:(NSArray *)users; -- (void)resetData; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberPresentOriflammeRegard.m b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberPresentOriflammeRegard.m deleted file mode 100644 index 986d9d5c..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberPresentOriflammeRegard.m +++ /dev/null @@ -1,337 +0,0 @@ -// -// YMRoomGiftBannerView.m -// YUMI -// -// Created by YUMI on 2021/11/18. -// - -#import "YUMIChamberPresentOriflammeRegard.h" -#import -#import "ThemeColor+Room.h" -#import "PresentAchieveAbstractMatrix.h" -#import "PresentAbstractMatrix.h" -#import "YUMIPresentOriflammeConsumerAbstractMatrix.h" -#import "NetIndicateRegard.h" - -@interface YUMIChamberAvatarNickRegard : UIView -@property (nonatomic,strong) NetIndicateRegard *avatIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@end - -@implementation YUMIChamberAvatarNickRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -- (void)layoutSubviews { - [super layoutSubviews]; - self.avatIndicateRegard.layer.cornerRadius = self.avatIndicateRegard.bounds.size.width / 2; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.avatIndicateRegard]; - [self addSubview:self.monicerSequencignation]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.monicerSequencignation.mas_bottom); - }]; - - [self.avatIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.height.mas_equalTo(self.avatIndicateRegard.mas_width); - }]; - - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self.avatIndicateRegard.mas_bottom).offset(2); - make.width.mas_lessThanOrEqualTo(80); - }]; -} - -#pragma mark - Getters And Setters -- (NetIndicateRegard *)avatIndicateRegard { - if (!_avatIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - _avatIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _avatIndicateRegard.userInteractionEnabled = YES; - _avatIndicateRegard.layer.masksToBounds = YES; - } - return _avatIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:12]; - _monicerSequencignation.textColor = [UIColor whiteColor]; - _monicerSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _monicerSequencignation; -} -@end - - - -@interface YUMIChamberPresentOriflammeRegard () -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) YUMIChamberAvatarNickRegard *dischargeRegard; -@property (nonatomic,strong) YUMIChamberAvatarNickRegard *achieveRegard; -@property (nonatomic,strong) YUMIChamberAvatarNickRegard *presentRegard; -@property (nonatomic,strong) UIImageView *lightIndicateRegard; -@property (nonatomic,strong) UILabel *presentComputationSequencignation; -@property (nonatomic,strong) UILabel *dischargeSequencignation; -@end - - -@implementation YUMIChamberPresentOriflammeRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.encourageIndicateRegard]; - - [self.encourageIndicateRegard addSubview:self.dischargeRegard]; - [self.encourageIndicateRegard addSubview:self.dischargeSequencignation]; - [self.encourageIndicateRegard addSubview:self.achieveRegard]; - [self.encourageIndicateRegard addSubview:self.lightIndicateRegard]; - [self.encourageIndicateRegard addSubview:self.presentRegard]; - [self.encourageIndicateRegard addSubview:self.presentComputationSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self); - }]; - - [self.dischargeRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.equalTo(self.encourageIndicateRegard).offset(49); - make.top.equalTo(self).offset(49); - make.width.mas_equalTo(40); - }]; - - [self.dischargeSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.equalTo(self.dischargeRegard.mas_right).offset(24); - make.centerY.equalTo(self.dischargeRegard); - }]; - - [self.achieveRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.equalTo(self.dischargeSequencignation.mas_right).offset(24); - make.centerY.width.equalTo(self.dischargeRegard); - }]; - - [self.lightIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.equalTo(self.achieveRegard.mas_right).offset(4); - make.centerY.equalTo(self.dischargeRegard); - make.width.height.equalTo(@100); - }]; - - [self.presentRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.equalTo(self.dischargeRegard); - make.center.equalTo(self.lightIndicateRegard); - }]; - - - [self.presentComputationSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.equalTo(self.presentRegard); - make.right.equalTo(self.encourageIndicateRegard).offset(-36); - }]; -} - -- (void)inititowardseShiningCircleBrectifyness { - CABasicAnimation * animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; - animation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 ]; - animation.duration = 1; - animation.cumulative = YES; - animation.repeatCount = MAXFLOAT; - [self.lightIndicateRegard.layer addAnimation:animation forKey:@"rotationAnimation"]; -} - -#pragma mark - Public Method -- (void)resetData { - self.dischargeRegard.avatIndicateRegard.image = nil; - self.dischargeRegard.monicerSequencignation.text = nil; - self.achieveRegard.avatIndicateRegard.image = nil; - self.achieveRegard.monicerSequencignation.text = nil; - self.presentRegard.avatIndicateRegard.image = nil; - self.presentRegard.monicerSequencignation.text = nil; - self.presentComputationSequencignation.text = nil; - [self.lightIndicateRegard stopAnimating]; -} - -- (void)prohibitipositionPresentOriflamme:(PresentAchieveAbstractMatrix *)receiveInfo users:(NSArray *)users { - if (receiveInfo) { - [self inititowardseShiningCircleBrectifyness]; - NSInteger giftTotal = 0; - PresentAbstractMatrix *giftInfo = receiveInfo.gift; - self.dischargeRegard.avatIndicateRegard.imageUrl = receiveInfo.avatar; - self.dischargeRegard.monicerSequencignation.text = receiveInfo.nick; - - self.presentRegard.avatIndicateRegard.imageUrl = giftInfo.giftUrl; - self.presentRegard.monicerSequencignation.text = giftInfo.giftName; - - self.presentComputationSequencignation.text = [NSString stringWithFormat:@" x %ld",receiveInfo.giftNum]; - - if (receiveInfo.targetUsers.count > 0) { - if (receiveInfo.isBatch) { - NSString *subTitle = @""; - NSArray *targetUids = receiveInfo.targetUsers; - for (PresentAchieveConsumerAbstractMatrix *targetUid in targetUids) { - NSInteger position = [self prohibiticoveryPolariztowardsionByCid:targetUid.uid users:users]; - if (position == 0) { - continue; - } - position += 1; - if (subTitle.length > 0) { - subTitle = [subTitle stringByAppendingFormat:YMLocalizedString(@"YUMI_Room_Gift_Banner_View_0"), position]; - } else { - subTitle = [subTitle stringByAppendingFormat:YMLocalizedString(@"YUMI_Room_Gift_Banner_View_1"), position]; - } - } - if (receiveInfo.targetUsers.count == 1) { - self.achieveRegard.monicerSequencignation.text = [receiveInfo.targetUsers firstObject].nick; - self.achieveRegard.avatIndicateRegard.imageUrl = [receiveInfo.targetUsers firstObject].avatar; - } else { - self.achieveRegard.avatIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_present_all_mic"]; - self.achieveRegard.monicerSequencignation.text = subTitle; - } - - giftTotal = receiveInfo.giftNum * giftInfo.goldPrice * receiveInfo.targetUsers.count; - } else { - self.achieveRegard.avatIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_present_all_mic"]; - self.achieveRegard.monicerSequencignation.text = YMLocalizedString(@"YUMI_Room_Gift_Banner_View_2"); - giftTotal = receiveInfo.giftNum * giftInfo.goldPrice * receiveInfo.targetUsers.count; - } - }else if (receiveInfo.targetUids.count > 0) { - if (receiveInfo.isBatch) { - NSString *subTitle = @""; - NSArray *targetUids = receiveInfo.targetUids; - for (NSString * targetUid in targetUids) { - NSInteger position = [self prohibiticoveryPolariztowardsionByCid:targetUid.integerValue users:users]; - if (position == 0) { - continue; - } - position+= 1; - if (subTitle.length > 0) { - subTitle = [subTitle stringByAppendingFormat:YMLocalizedString(@"YUMI_Room_Gift_Banner_View_3"), position]; - } else { - subTitle = [subTitle stringByAppendingFormat:YMLocalizedString(@"YUMI_Room_Gift_Banner_View_4"), position]; - } - } - self.achieveRegard.avatIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_present_all_mic"]; - self.achieveRegard.monicerSequencignation.text = subTitle; - giftTotal = receiveInfo.giftNum * giftInfo.goldPrice * receiveInfo.targetUids.count; - } else { - self.achieveRegard.avatIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_present_all_mic"]; - self.achieveRegard.monicerSequencignation.text = YMLocalizedString(@"YUMI_Room_Gift_Banner_View_5"); - giftTotal = receiveInfo.giftNum * giftInfo.goldPrice * receiveInfo.targetUids.count; - } - }else { - self.achieveRegard.avatIndicateRegard.imageUrl = receiveInfo.targetAvatar; - self.achieveRegard.monicerSequencignation.text = receiveInfo.targetNick; - giftTotal = receiveInfo.giftNum * giftInfo.goldPrice; - } - [self prohibitipositionAnimtowardseIndictowardseByPresentGeneral:giftTotal]; - } -} - -- (void)prohibitipositionAnimtowardseIndictowardseByPresentGeneral:(NSInteger)giftTotal { - if (giftTotal >= 520 && giftTotal < 4999) { - self.encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_present_banner_low_background"]; - }else if (giftTotal >= 4999 && giftTotal < 9999) { - self.encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_present_banner_middle_background"]; - }else if (giftTotal >= 9999) { - self.encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_present_banner_high_background"]; - } -} - - -- (int)prohibiticoveryPolariztowardsionByCid:(NSInteger)uid users:(NSArray *)users{ - if (uid > 0) { - for (YUMIPresentOriflammeConsumerAbstractMatrix *userInfo in users) { - if (userInfo.uid == uid) { - return userInfo.position; - } - } - } - return 0; -} -#pragma mark - Getters And Setters - - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - } - return _encourageIndicateRegard; -} - -- (YUMIChamberAvatarNickRegard *)dischargeRegard { - if (!_dischargeRegard) { - _dischargeRegard = [[YUMIChamberAvatarNickRegard alloc] init]; - } - return _dischargeRegard; -} - -- (YUMIChamberAvatarNickRegard *)achieveRegard { - if (!_achieveRegard) { - _achieveRegard = [[YUMIChamberAvatarNickRegard alloc] init]; - } - return _achieveRegard; -} - -- (YUMIChamberAvatarNickRegard *)presentRegard { - if (!_presentRegard) { - _presentRegard = [[YUMIChamberAvatarNickRegard alloc] init]; - } - return _presentRegard; -} - -- (UILabel *)dischargeSequencignation { - if (!_dischargeSequencignation) { - _dischargeSequencignation = [[UILabel alloc] init]; - _dischargeSequencignation.text = YMLocalizedString(@"YUMI_Room_Gift_Banner_View_6"); - _dischargeSequencignation.font = [UIFont systemFontOfSize:12]; - _dischargeSequencignation.textColor = [UIColor whiteColor]; - } - return _dischargeSequencignation; -} - -- (UIImageView *)lightIndicateRegard { - if (!_lightIndicateRegard) { - _lightIndicateRegard = [[UIImageView alloc] init]; - _lightIndicateRegard.userInteractionEnabled = YES; - _lightIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_present_banner_light"]; - } - return _lightIndicateRegard; -} - -- (UILabel *)presentComputationSequencignation { - if (!_presentComputationSequencignation) { - _presentComputationSequencignation = [[UILabel alloc] init]; - _presentComputationSequencignation.font = [UIFont systemFontOfSize:20.f weight:UIFontWeightBold]; - _presentComputationSequencignation.textColor = [DJDKMIMOMColor brectifynessPresentDigitalPrettify]; - } - return _presentComputationSequencignation; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberPresentPingbackRegard.h b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberPresentPingbackRegard.h deleted file mode 100644 index bdea4526..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberPresentPingbackRegard.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YMRoomGiftBroadcastView.h -// YUMI -// -// Created by YUMI on 2021/11/18. -// 广播横幅 - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIChamberPresentBroadCastMatrix, YUMIChamberPresentPingbackRegard; - -@protocol FBCChamberPresentPingbackRegardRepresendtation -- (void)yUMIChamberPresentBroadcastRegard:(YUMIChamberPresentPingbackRegard *)view didClickClose:(YUMIChamberPresentBroadCastMatrix *)pingencourageMatrix; -- (void)yUMIChamberPresentBroadcastRegard:(YUMIChamberPresentPingbackRegard *)view enterRoom:(NSString *)roomUid; - -@end - -@interface YUMIChamberPresentPingbackRegard : UIView -@property (nonatomic,strong) YUMIChamberPresentBroadCastMatrix *pingencourageMatrix; - -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberPresentPingbackRegard.m b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberPresentPingbackRegard.m deleted file mode 100644 index 6016ec46..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberPresentPingbackRegard.m +++ /dev/null @@ -1,401 +0,0 @@ -// -// YMRoomGiftBroadcastView.m -// YUMI -// -// Created by YUMI on 2021/11/18. -// - -#import "YUMIChamberPresentPingbackRegard.h" -#import -#import "ThemeColor+Room.h" -#import "YUMIMacroUitls.h" -#import "YUMIChamberPresentBroadCastMatrix.h" -#import "NetIndicateRegard.h" -#import "YUMIChamberYearImportpriseRegard.h" - -#define kScreenScale (CGFloat)KScreenWidth / (CGFloat)375 - -@interface YUMIChamberExternalizeConsumerRegard : UIView - -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UIImageView *boraderIndicateRegard; -@property (nonatomic,strong) UIButton *monicerBtuton; - -@end - -@implementation YUMIChamberExternalizeConsumerRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.intelligenceportraitIndicateRegard]; - [self addSubview:self.boraderIndicateRegard]; - [self addSubview:self.monicerBtuton]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.monicerBtuton.mas_bottom); - }]; - - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.top.mas_equalTo(self); - make.height.width.mas_equalTo(44 * kScreenScale); - }]; - - [self.boraderIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(51 * kScreenScale, 51 * kScreenScale)); - make.center.mas_equalTo(self.intelligenceportraitIndicateRegard); - }]; - - [self.monicerBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_bottom).offset(-8 * kScreenScale); - make.size.mas_equalTo(CGSizeMake(66 * kScreenScale, 16 * kScreenScale)); - }]; -} - -#pragma mark - Getters And Setters -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.userInteractionEnabled = YES; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 44 * kScreenScale/2; - } - return _intelligenceportraitIndicateRegard; -} - -- (UIImageView *)boraderIndicateRegard { - if (!_boraderIndicateRegard) { - _boraderIndicateRegard = [[UIImageView alloc] init]; - _boraderIndicateRegard.userInteractionEnabled = YES; - } - return _boraderIndicateRegard; -} - -- (UIButton *)monicerBtuton { - if (!_monicerBtuton) { - _monicerBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_monicerBtuton setTitleColor:[DJDKMIMOMColor presentBroadcastMonicerPrettify] forState:UIControlStateNormal]; - _monicerBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - [_monicerBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_scope_present_broadcast_avatar_board"] forState:UIControlStateNormal]; - } - return _monicerBtuton; -} - -@end - - -@interface YUMIChamberPresentPingbackRegard () -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) YUMIChamberExternalizeConsumerRegard *dischargeRegard; -@property (nonatomic,strong) UIImageView *dischargeIndicateRegard; -@property (nonatomic,strong) YUMIChamberExternalizeConsumerRegard *achieveRegard; -@property (nonatomic,strong) NetIndicateRegard *presentIndicateRegard; -@property (nonatomic,strong) UILabel *computationSequencignation; -@property (nonatomic,strong) UIButton *concludeBtuton; -@property (nonatomic,strong) UILabel *chamberIdSequencignation; -@property (nonatomic, strong) YUMIChamberYearImportpriseRegard *ceremonyRegard; -@end - -@implementation YUMIChamberPresentPingbackRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - [self initOccurrences]; - } - return self; -} -#pragma mark - Response -- (void)concludeBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberPresentBroadcastRegard:didClickClose:)]) { - [self.delegate yUMIChamberPresentBroadcastRegard:self didClickClose:self.pingencourageMatrix]; - } -} - -- (void)didTicktackImportChamber { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberPresentBroadcastRegard:enterRoom:)]) { - [self.delegate yUMIChamberPresentBroadcastRegard:self enterRoom:[NSString stringWithFormat:@"%ld", self.pingencourageMatrix.roomUid]]; - } -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.encourageIndicateRegard]; - - [self.encourageIndicateRegard addSubview:self.concludeBtuton]; - [self.encourageIndicateRegard addSubview:self.dischargeRegard]; - [self.encourageIndicateRegard addSubview:self.dischargeIndicateRegard]; - [self.encourageIndicateRegard addSubview:self.achieveRegard]; - [self.encourageIndicateRegard addSubview:self.presentIndicateRegard]; - [self.encourageIndicateRegard addSubview:self.computationSequencignation]; - [self.encourageIndicateRegard addSubview:self.chamberIdSequencignation]; -} - -- (void)initChildLyRestrictions { - CGFloat kscale = (CGFloat)125/ (CGFloat)345; - CGFloat width = KScreenWidth - 30; - - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self).inset(15); - make.top.mas_equalTo(self); - make.height.mas_equalTo(width * kscale); - }]; - - [self.dischargeRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.encourageIndicateRegard).offset(41 * kScreenScale); - make.width.mas_equalTo(66 * kScreenScale); - make.left.mas_equalTo(self.encourageIndicateRegard).offset(13 * kScreenScale); - }]; - - [self.dischargeIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(30 * kScreenScale, 15 * kScreenScale)); - make.centerY.mas_equalTo(self.dischargeRegard); - make.left.mas_equalTo(self.dischargeRegard.mas_right).offset(13 * kScreenScale); - }]; - - [self.achieveRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.width.mas_equalTo(self.dischargeRegard); - make.left.mas_equalTo(self.dischargeIndicateRegard.mas_right).offset(13 * kScreenScale); - }]; - - [self.presentIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(60 * kScreenScale, 60 * kScreenScale)); - make.centerY.mas_equalTo(self.dischargeRegard); - make.left.mas_equalTo(self.achieveRegard.mas_right).offset(13 * kScreenScale); - }]; - - [self.computationSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.presentIndicateRegard.mas_right).offset(13 * kScreenScale); - make.centerY.mas_equalTo(self.dischargeRegard); - }]; - - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.encourageIndicateRegard).offset(-3); - make.top.mas_equalTo(13); - make.size.mas_equalTo(CGSizeMake(28, 22)); - }]; - - [self.chamberIdSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.encourageIndicateRegard); - make.top.mas_equalTo(self.encourageIndicateRegard).offset(10); - }]; -} - -- (void)initOccurrences { - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTicktackImportChamber)]; - [self.encourageIndicateRegard addGestureRecognizer:tap]; -} - -- (void)refurbishMetroviews:(BroadCastPrototype)level { - NSString * nickBackImageName; - UIColor * nickColor; - NSString * bgImageName; - switch (level) { - case BroadCastPrototype_Normal: - { - CGFloat kscale = (CGFloat)124/ (CGFloat)345; - CGFloat width = KScreenWidth - 30; - [self.encourageIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(width * kscale); - }]; - - [self.concludeBtuton mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(14 * kScreenScale); - }]; - nickBackImageName = @"room_gift_broadcast_normal_nick_bg"; - nickColor = [DJDKMIMOMColor mainEssayPrettify]; - bgImageName = @"room_gift_broadcast_low_bg"; - self.chamberIdSequencignation.hidden = YES; - } - break; - case BroadCastPrototype_Middle: - { - CGFloat kscale = (CGFloat)120/ (CGFloat)345; - CGFloat width = KScreenWidth - 30; - [self.encourageIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(width * kscale); - }];; - - [self.concludeBtuton mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(11 * kScreenScale); - }]; - - nickBackImageName = @"room_gift_broadcast_higher_nick_bg"; - nickColor = [DJDKMIMOMColor presentBroadcastMonicerPrettify]; - bgImageName = @"room_gift_broadcast_middle_bg"; - self.chamberIdSequencignation.hidden = YES; - } - break; - case BroadCastPrototype_High: - { - CGFloat kscale = (CGFloat)143/ (CGFloat)345; - CGFloat width = KScreenWidth - 30; - [self.encourageIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(width * kscale); - }]; - - [self.concludeBtuton mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(33 * kScreenScale); - }]; - - nickBackImageName = @"room_gift_broadcast_higher_nick_bg"; - nickColor = [DJDKMIMOMColor presentBroadcastMonicerPrettify]; - bgImageName = @"room_gift_broadcast_high_bg"; - self.chamberIdSequencignation.hidden = NO; - } - break; - default: - break; - } - - if (nickBackImageName.length > 0) { - [self.dischargeRegard.monicerBtuton setBackgroundImage:[UIImage imageNamed:nickBackImageName] forState:UIControlStateNormal]; - [self.achieveRegard.monicerBtuton setBackgroundImage:[UIImage imageNamed:nickBackImageName] forState:UIControlStateNormal]; - } - - if (nickColor) { - [self.dischargeRegard.monicerBtuton setTitleColor:nickColor forState:UIControlStateNormal]; - [self.achieveRegard.monicerBtuton setTitleColor:nickColor forState:UIControlStateNormal]; - } - - self.encourageIndicateRegard.image = [UIImage imageNamed:bgImageName]; -} - -#pragma mark - FBCChamberYearActivityRegardRepresendtation -- (void)yUMIChamberAnnmuImportpriseRegardImportChamber:(NSString *)roomUid { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberPresentBroadcastRegard:enterRoom:)]) { - [self.delegate yUMIChamberPresentBroadcastRegard:self enterRoom:roomUid]; - } -} - -#pragma mark - Getters And Setters -- (void)setPingencourageMatrix:(YUMIChamberPresentBroadCastMatrix *)pingencourageMatrix { - _pingencourageMatrix = pingencourageMatrix; - if (_pingencourageMatrix) { - if (pingencourageMatrix.sendUserNick.length > 6) { - pingencourageMatrix.sendUserNick = [pingencourageMatrix.sendUserNick substringToIndex:6]; - } - if(pingencourageMatrix.ceremonyGift) { - for (UIView *subView in self.subviews) { - [subView removeFromSuperview]; - } - [self addSubview:self.ceremonyRegard]; - CGFloat kscale = (CGFloat)90/ (CGFloat)375; - CGFloat width = KScreenWidth; - [self.ceremonyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.top.right.mas_equalTo(self); - make.height.mas_equalTo(width * kscale); - }]; - self.ceremonyRegard.model = pingencourageMatrix; - return; - } - self.dischargeRegard.intelligenceportraitIndicateRegard.imageUrl = pingencourageMatrix.sendUserAvatar; - [self.dischargeRegard.monicerBtuton setTitle:pingencourageMatrix.sendUserNick forState:UIControlStateNormal]; - - if (pingencourageMatrix.recvUserNick.length > 6) { - pingencourageMatrix.recvUserNick = [pingencourageMatrix.recvUserNick substringToIndex:6]; - } - self.achieveRegard.intelligenceportraitIndicateRegard.imageUrl = pingencourageMatrix.recvUserAvatar; - [self.achieveRegard.monicerBtuton setTitle:pingencourageMatrix.recvUserNick forState:UIControlStateNormal]; - - self.presentIndicateRegard.imageUrl = pingencourageMatrix.giftUrl; - self.computationSequencignation.text = [NSString stringWithFormat:@"x%ld", pingencourageMatrix.giftNum]; - self.chamberIdSequencignation.text = [NSString stringWithFormat:@"ID:%@", pingencourageMatrix.roomErbanNo]; - [self refurbishMetroviews:pingencourageMatrix.levelNum]; - } -} - - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - } - return _encourageIndicateRegard; -} - -- (YUMIChamberExternalizeConsumerRegard *)dischargeRegard { - if (!_dischargeRegard) { - _dischargeRegard = [[YUMIChamberExternalizeConsumerRegard alloc] init]; - } - return _dischargeRegard; -} - -- (UIImageView *)dischargeIndicateRegard { - if (!_dischargeIndicateRegard) { - _dischargeIndicateRegard = [[UIImageView alloc] init]; - _dischargeIndicateRegard.userInteractionEnabled = YES; - _dischargeIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_present_broadcast_send"]; - } - return _dischargeIndicateRegard; -} - -- (YUMIChamberExternalizeConsumerRegard *)achieveRegard { - if (!_achieveRegard) { - _achieveRegard = [[YUMIChamberExternalizeConsumerRegard alloc] init]; - } - return _achieveRegard; -} -- (NetIndicateRegard *)presentIndicateRegard { - if (!_presentIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - _presentIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - } - return _presentIndicateRegard; -} - -- (UILabel *)computationSequencignation { - if (!_computationSequencignation) { - _computationSequencignation = [[UILabel alloc] init]; - _computationSequencignation.font = [UIFont fontWithName:@"PingFang-SC-Heavy" size:20]; - _computationSequencignation.textColor = [DJDKMIMOMColor presentBroadcastDigitalPrettify]; - } - return _computationSequencignation; -} - -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_scope_present_broadcast_close"] forState:UIControlStateNormal]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_scope_present_broadcast_close"] forState:UIControlStateSelected]; - [_concludeBtuton addTarget:self action:@selector(concludeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _concludeBtuton; -} - - -- (UILabel *)chamberIdSequencignation { - if (!_chamberIdSequencignation) { - _chamberIdSequencignation = [[UILabel alloc] init]; - _chamberIdSequencignation.font = [UIFont systemFontOfSize:12]; - _chamberIdSequencignation.textColor = [DJDKMIMOMColor presentBroadcastMonicerPrettify]; - } - return _chamberIdSequencignation; -} - -- (YUMIChamberYearImportpriseRegard *)ceremonyRegard { - if(!_ceremonyRegard) { - _ceremonyRegard = [[YUMIChamberYearImportpriseRegard alloc] init]; - _ceremonyRegard.delegate = self; - } - return _ceremonyRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberSatelliteKitchenOriflammeRegard.h b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberSatelliteKitchenOriflammeRegard.h deleted file mode 100644 index 22e22015..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberSatelliteKitchenOriflammeRegard.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// YUMIChamberSatelliteKitchenOriflammeRegard.h -// YuMi -// -// Created by YuMi on 2022/12/7. -// - -#import -#import "YUMIPresentBigCaptureMatrix.h" - - - -NS_ASSUME_NONNULL_BEGIN -@class YUMIChamberSatelliteKitchenOriflammeRegard; -@protocol FBCChamberStarKitchenBannerRegardRepresendtation - -- (void)yUMIChamberStowardselliteKitchenOriflammeRegard:(YUMIChamberSatelliteKitchenOriflammeRegard *)view didClick:(YUMIPresentBigCaptureMatrix *)starMatrix; - -@end - - -@interface YUMIChamberSatelliteKitchenOriflammeRegard : UIView -@property (nonatomic,assign) BOOL isSvga; -@property (nonatomic,strong) YUMIPresentBigCaptureMatrix *starMatrix; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberSatelliteKitchenOriflammeRegard.m b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberSatelliteKitchenOriflammeRegard.m deleted file mode 100644 index e9079eee..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberSatelliteKitchenOriflammeRegard.m +++ /dev/null @@ -1,137 +0,0 @@ -// -// YUMIChamberSatelliteKitchenOriflammeRegard.m -// YuMi -// -// Created by YuMi on 2022/12/7. -// -#import -#import "YUMIChamberSatelliteKitchenOriflammeRegard.h" -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -@interface YUMIChamberSatelliteKitchenOriflammeRegard() - -@property (strong, nonatomic) SVGAParser *anatomiser; -@property (nonatomic,strong) SVGAImageView *svgaRegard; -@property (nonatomic,strong) UIImageView *backgroundIndicateRegard; -@property (nonatomic,strong) UILabel *titleView; -@property (nonatomic,strong) UIButton *ticktackBtuton; - -@end -@implementation YUMIChamberSatelliteKitchenOriflammeRegard - --(instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if(self){ - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backgroundIndicateRegard]; - [self addSubview:self.svgaRegard]; - [self addSubview:self.titleView]; - [self addSubview:self.ticktackBtuton]; - -} -- (void)initChildLyRestrictions { - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self); - }]; - [self.svgaRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self); - }]; - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(21)); - make.left.mas_equalTo(kGetScaleWidth(85)); - make.bottom.equalTo(self.mas_bottom).mas_offset(-kGetScaleWidth(13.5)); - make.right.mas_equalTo(-kGetScaleWidth(53.5)); - }]; - - [self.ticktackBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self); - }]; - -} --(void)setStarMatrix:(YUMIPresentBigCaptureMatrix *)starMatrix{ - _starMatrix = starMatrix; - NSString *name = _starMatrix.nick.length < 7 ? _starMatrix.nick : [NSString stringWithFormat:@"%@...",[_starMatrix.nick substringWithRange:NSMakeRange(0, 6)]]; - NSString *title = [NSString stringWithFormat:YMLocalizedString(@"XPRoomStarKitchenBannerView0"),name,_starMatrix.itemMultiple,_starMatrix.diamonds]; - [self.titleView mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(_isSvga == YES && KScreenWidth == 320 ? 18 : 21)); - }]; - NSMutableAttributedString *att = [[NSMutableAttributedString alloc]initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:10],NSForegroundColorAttributeName:[UIColor whiteColor]}]; - [att addAttributes:@{NSForegroundColorAttributeName:UIColorFromRGB(0xFEF23E)} range:[title rangeOfString:name]]; - [att addAttributes:@{NSForegroundColorAttributeName:UIColorFromRGB(0x00EAFF)} range:[title rangeOfString:[NSString stringWithFormat:@" %@",_starMatrix.itemMultiple]]]; - [att addAttributes:@{NSForegroundColorAttributeName:UIColorFromRGB(0x00EAFF)} range:[title rangeOfString:[NSString stringWithFormat:@" %@",_starMatrix.diamonds]]]; - if(_isSvga == YES){ - self.backgroundIndicateRegard.hidden = YES; - self.svgaRegard.hidden = NO; - self.titleView.hidden = NO; - self.titleView.attributedText = att; - @kWeakify(self); - [self.anatomiser parseWithNamed:@"Star_kitchen" inBundle:[NSBundle mainBundle] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { - @kStrongify(self); - self.svgaRegard.loops = 1; - self.svgaRegard.clearsAfterStop = NO; - self.svgaRegard.videoItem = videoItem; - - [self.svgaRegard startAnimation]; - } failureBlock:^(NSError * _Nonnull error) { - - }]; - }else{ - self.backgroundIndicateRegard.hidden = NO; - self.titleView.hidden = NO; - self.svgaRegard.hidden = YES; - self.titleView.attributedText = att; - } -} --(void)ticktackPerformance{ - if(self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberStowardselliteKitchenOriflammeRegard:didClick:)]){ - [self.delegate yUMIChamberStowardselliteKitchenOriflammeRegard:self didClick:self.starMatrix]; - } -} -#pragma mark -懒加载 -- (UIImageView *)backgroundIndicateRegard{ - if (!_backgroundIndicateRegard){ - _backgroundIndicateRegard = [UIImageView new]; - _backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_star_kitchen"]; - _backgroundIndicateRegard.userInteractionEnabled = YES; - } - return _backgroundIndicateRegard; -} --(UILabel *)titleView{ - if (!_titleView){ - _titleView = [UILabel new]; - _titleView.textAlignment = NSTextAlignmentCenter; - _titleView.numberOfLines = 2; - } - return _titleView; -} -- (SVGAParser *)anatomiser { - if (!_anatomiser) { - _anatomiser = [[SVGAParser alloc]init]; - } - return _anatomiser; -} -- (SVGAImageView *)svgaRegard { - if (!_svgaRegard) { - _svgaRegard= [[SVGAImageView alloc]init]; - _svgaRegard.backgroundColor = [UIColor clearColor]; - _svgaRegard.userInteractionEnabled = YES; - } - return _svgaRegard; -} --(UIButton *)ticktackBtuton{ - if (!_ticktackBtuton){ - _ticktackBtuton = [UIButton new]; - [_ticktackBtuton addTarget:self action:@selector(ticktackPerformance) forControlEvents:UIControlEventTouchUpInside]; - - } - return _ticktackBtuton; -} -@end diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberYearImportpriseRegard.h b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberYearImportpriseRegard.h deleted file mode 100644 index eebc6d46..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberYearImportpriseRegard.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// YMRoomYearActivityView.h -// YUMI -// -// Created by GLEN on 2022/11/26. -// 年度活动 - -#import -#import "YUMIChamberPresentBroadCastMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCChamberYearActivityRegardRepresendtation - -- (void)yUMIChamberAnnmuImportpriseRegardImportChamber:(NSString *)roomUid; - -@end - -@interface YUMIChamberYearImportpriseRegard : UIView - -@property (nonatomic, strong) YUMIChamberPresentBroadCastMatrix *model; -@property (nonatomic,weak) id delegate; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberYearImportpriseRegard.m b/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberYearImportpriseRegard.m deleted file mode 100644 index 6b01d2cb..00000000 --- a/YuMi/Modules/YMRoom/View/AnimationView/YUMIChamberYearImportpriseRegard.m +++ /dev/null @@ -1,202 +0,0 @@ -// -// YMRoomYearActivityView.m -// YUMI -// -// Created by GLEN on 2022/11/26. -// - -#import "YUMIChamberYearImportpriseRegard.h" -#import -#import "ThemeColor+Room.h" -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "ChamberHalfHourRateMatrix.h" -#import "NetIndicateRegard.h" - -@interface YUMIChamberYearImportpriseRegard() - -@property (nonatomic,strong) UIImageView *backgroundIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *dischargeIntelligenceportrait; -@property (nonatomic,strong) NetIndicateRegard *achieveIntelligenceportrait; -@property (nonatomic,strong) UILabel *dischargeMonicer; -@property (nonatomic,strong) UILabel *achieveMonicer; -@property (nonatomic, strong) UILabel *sequenceSequencignation; -@property (nonatomic,strong) UILabel *computationSequencignation; -@property (nonatomic, strong) UIButton *gotoBtuton; - -@end - -@implementation YUMIChamberYearImportpriseRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -- (void)layoutSubviews { - [super layoutSubviews]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backgroundIndicateRegard]; - [self addSubview:self.dischargeMonicer]; - [self addSubview:self.dischargeIntelligenceportrait]; - [self addSubview:self.sequenceSequencignation]; - [self addSubview:self.achieveMonicer]; - [self addSubview:self.achieveIntelligenceportrait]; - [self addSubview:self.computationSequencignation]; - [self addSubview:self.gotoBtuton]; -} - -- (void)initChildLyRestrictions { - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(0); - }]; - [self.dischargeMonicer mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(35*KScreenWidth/375); - make.centerY.mas_equalTo(self.backgroundIndicateRegard); - }]; - [self.dischargeIntelligenceportrait mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.dischargeMonicer.mas_right).mas_offset(3); - make.centerY.mas_equalTo(self); - make.width.height.mas_equalTo(20); - }]; - [self.sequenceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.dischargeIntelligenceportrait.mas_right).mas_offset(3); - make.centerY.mas_equalTo(self); - }]; - [self.achieveMonicer mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.sequenceSequencignation.mas_right).mas_offset(3); - make.centerY.mas_equalTo(self); - }]; - [self.achieveIntelligenceportrait mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.achieveMonicer.mas_right).mas_offset(3); - make.centerY.mas_equalTo(self); - make.width.height.mas_equalTo(20); - }]; - [self.computationSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.achieveIntelligenceportrait.mas_right).mas_offset(3); - make.centerY.mas_equalTo(self); - }]; - [self.gotoBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-31*KScreenWidth / 375); - make.centerY.mas_equalTo(self); - make.size.mas_equalTo(CGSizeMake(40, 18)); - }]; -} - -- (void)setModel:(YUMIChamberPresentBroadCastMatrix *)model { - _model = model; - if (model) { - self.achieveIntelligenceportrait.imageUrl = model.recvUserAvatar; - self.dischargeIntelligenceportrait.imageUrl = model.sendUserAvatar; - if (model.recvUserNick.length > 4) { - model.recvUserNick = [NSString stringWithFormat:@"%@...", [model.recvUserNick substringToIndex:4]]; - } - if (model.sendUserNick.length > 4) { - model.sendUserNick = [NSString stringWithFormat:@"%@...", [model.sendUserNick substringToIndex:4]]; - } - if (model.giftName.length > 6) { - model.giftName = [model.giftName substringToIndex:6]; - } - self.dischargeMonicer.text = model.sendUserNick; - self.achieveMonicer.text = model.recvUserNick; - self.computationSequencignation.text = [NSString stringWithFormat:@"%@ x%ld", model.giftName, model.giftNum]; - } -} - -- (void)onGotoBtutonTicktack:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberAnnmuImportpriseRegardImportChamber:)]) { - [self.delegate yUMIChamberAnnmuImportpriseRegardImportChamber:[NSString stringWithFormat:@"%ld", self.model.roomUid]]; - } -} - -#pragma mark - Getters And Setters -- (UIImageView *)backgroundIndicateRegard { - if (!_backgroundIndicateRegard) { - _backgroundIndicateRegard = [[UIImageView alloc] init]; - _backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_YearActivity_background"]; - _backgroundIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _backgroundIndicateRegard; -} - -- (NetIndicateRegard *)dischargeIntelligenceportrait { - if (!_dischargeIntelligenceportrait) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - _dischargeIntelligenceportrait = [[NetIndicateRegard alloc] initWithConfig:config]; - _dischargeIntelligenceportrait.layer.masksToBounds = YES; - _dischargeIntelligenceportrait.layer.cornerRadius = 10; - _dischargeIntelligenceportrait.layer.borderColor = UIColorFromRGB(0xFBC200).CGColor; - _dischargeIntelligenceportrait.layer.borderWidth = 1; - } - return _dischargeIntelligenceportrait; -} - -- (UILabel *)dischargeMonicer { - if (!_dischargeMonicer) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:12]; - label.textColor = UIColorFromRGB(0xFBC200); - _dischargeMonicer = label; - } - return _dischargeMonicer; -} - -- (NetIndicateRegard *)achieveIntelligenceportrait { - if (!_achieveIntelligenceportrait) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - _achieveIntelligenceportrait = [[NetIndicateRegard alloc] initWithConfig:config]; - _achieveIntelligenceportrait.layer.masksToBounds = YES; - _achieveIntelligenceportrait.layer.cornerRadius = 10; - _achieveIntelligenceportrait.layer.borderColor = UIColorFromRGB(0xFBC200).CGColor; - _achieveIntelligenceportrait.layer.borderWidth = 1; - } - return _achieveIntelligenceportrait; -} - -- (UILabel *)achieveMonicer { - if (!_achieveMonicer) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:12]; - label.textColor = UIColorFromRGB(0xFBC200); - _achieveMonicer = label; - } - return _achieveMonicer; -} - -- (UILabel *)sequenceSequencignation { - if (!_sequenceSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:12]; - label.textColor = [UIColor whiteColor]; - label.text = YMLocalizedString(@"YUMI_Room_Year_Activity_View_0"); - _sequenceSequencignation = label; - } - return _sequenceSequencignation; -} - -- (UILabel *)computationSequencignation { - if (!_computationSequencignation) { - _computationSequencignation = [[UILabel alloc] init]; - _computationSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightBold]; - _computationSequencignation.textColor = UIColorFromRGB(0x80F9FF); - } - return _computationSequencignation; -} -- (UIButton *)gotoBtuton { - if (!_gotoBtuton) { - _gotoBtuton = [[UIButton alloc] init]; - [_gotoBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_YearActivity_goto"] forState:UIControlStateNormal]; - [_gotoBtuton addTarget:self action:@selector(onGotoBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - } - return _gotoBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/Api/Api+ArrangeMic.h b/YuMi/Modules/YMRoom/View/ArrangeMic/Api/Api+ArrangeMic.h index 014b51f3..7eb1f9d2 100644 --- a/YuMi/Modules/YMRoom/View/ArrangeMic/Api/Api+ArrangeMic.h +++ b/YuMi/Modules/YMRoom/View/ArrangeMic/Api/Api+ArrangeMic.h @@ -11,18 +11,53 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (ArrangeMic) -+ (void)acquireChamberScheduleLoudspeakerSttowardsement:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid page:(NSString *)page pageSize:(NSString *)pageSize; +/// 获取房间排麦列表 +/// @param completion 完成 +/// @param roomUid 房间的uid +/// @param operUid 操作者的uid +/// @param page 当前的页数 +/// @param pageSize 一页多少个 ++ (void)getRoomArrangeMicList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid page:(NSString *)page pageSize:(NSString *)pageSize; -+ (void)demandScheduleLoudspeaker:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid groupType:(NSString *)groupType; -+ (void)revoctowardsionScheduleLoudspeaker:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid groupType:(NSString *)groupType; +/// 申请排麦 +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param operUid 操作者的uid +/// @param groupType 类型 ++ (void)applyArrangeMic:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid groupType:(NSString *)groupType; +/// 取消排麦 +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param operUid 操作者的uid +/// @param groupType 类型 ++ (void)cancelArrangeMic:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid groupType:(NSString *)groupType; -+ (void)acquireChamberCombatConsumerSttowardsement:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid page:(NSString *)page pageSize:(NSString *)pageSize; +/// 房间内PK的用户列表 +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param operUid 操作者的uid +/// @param page 当前的页数 +/// @param pageSize 一页多少个 ++ (void)getRoomPKUserList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid page:(NSString *)page pageSize:(NSString *)pageSize; -+ (void)acquireChamberCombatDimension:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; +/// 获取当前房间PK的长度 +/// @param completion 完成 +/// @param roomUid 房主的uid ++ (void)getRoomPKSize:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; -+ (void)demandChamberCombatScheduleLoudspeaker:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid groupType:(NSString *)groupType; +/// 申请房间内PK排麦 +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param operUid 操作者的uid +/// @param groupType 类型 ++ (void)applyRoomPKArrangeMic:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid groupType:(NSString *)groupType; -+ (void)revoctowardsionChamberCombatScheduleLoudspeaker:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid groupType:(NSString *)groupType; +/// 取消房间内PK排麦 +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param operUid 操作者的uid +/// @param groupType 类型 ++ (void)cancelRoomPKArrangeMic:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid groupType:(NSString *)groupType; @end diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/Api/Api+ArrangeMic.m b/YuMi/Modules/YMRoom/View/ArrangeMic/Api/Api+ArrangeMic.m index 974aba79..1a0ae8f4 100644 --- a/YuMi/Modules/YMRoom/View/ArrangeMic/Api/Api+ArrangeMic.m +++ b/YuMi/Modules/YMRoom/View/ArrangeMic/Api/Api+ArrangeMic.m @@ -10,36 +10,68 @@ @implementation Api (ArrangeMic) -+ (void)acquireChamberScheduleLoudspeakerSttowardsement:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid page:(NSString *)page pageSize:(NSString *)pageSize { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9xdWV1ZS9saXN0"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, operUid,page, pageSize, nil]; +/// 获取房间排麦列表 +/// @param completion 完成 +/// @param roomUid 房间的uid +/// @param operUid 操作者的uid +/// @param page 当前的页数 +/// @param pageSize 一页多少个 ++ (void)getRoomArrangeMicList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid page:(NSString *)page pageSize:(NSString *)pageSize { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9xdWV1ZS9saXN0"];///room/queue/list + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, operUid,page, pageSize, nil]; } -+ (void)demandScheduleLoudspeaker:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid groupType:(NSString *)groupType { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9xdWV1ZQ=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, operUid, groupType, nil]; +/// 申请排麦 +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param operUid 操作者的uid +/// @param groupType 类型 ++ (void)applyArrangeMic:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid groupType:(NSString *)groupType { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9xdWV1ZQ=="];/// + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, operUid, groupType, nil]; } -+ (void)revoctowardsionScheduleLoudspeaker:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid groupType:(NSString *)groupType { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9xdWV1ZQ=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodDELETE completion:completion, __FUNCTION__, roomUid, operUid, groupType, nil]; +/// 取消排麦 +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param operUid 操作者的uid +/// @param groupType 类型 ++ (void)cancelArrangeMic:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid groupType:(NSString *)groupType { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9xdWV1ZQ=="];///"room/queue + [self makeRequest:fang method:HttpRequestHelperMethodDELETE completion:completion, __FUNCTION__, roomUid, operUid, groupType, nil]; } -+ (void)acquireChamberCombatConsumerSttowardsement:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid page:(NSString *)page pageSize:(NSString *)pageSize { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9way9xdWV1ZS9saXN0"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,roomUid, operUid, page, pageSize, nil]; +/// 房间内PK的用户列表 +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param operUid 操作者的uid +/// @param page 当前的页数 +/// @param pageSize 一页多少个 ++ (void)getRoomPKUserList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid page:(NSString *)page pageSize:(NSString *)pageSize { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9way9xdWV1ZS9saXN0"];///room/pk/queue/list + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,roomUid, operUid, page, pageSize, nil]; } -+ (void)demandChamberCombatScheduleLoudspeaker:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid groupType:(NSString *)groupType { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9way9qb2lu"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, operUid, groupType, nil]; +/// 申请房间内PK排麦 +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param operUid 操作者的uid +/// @param groupType 类型 ++ (void)applyRoomPKArrangeMic:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid groupType:(NSString *)groupType { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9way9qb2lu"];///room/pk/join + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, operUid, groupType, nil]; } -+ (void)revoctowardsionChamberCombatScheduleLoudspeaker:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid groupType:(NSString *)groupType { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9way9qb2lu"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodDELETE completion:completion, __FUNCTION__, roomUid, operUid, groupType, nil]; +/// 取消房间内PK排麦 +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param operUid 操作者的uid +/// @param groupType 类型 ++ (void)cancelRoomPKArrangeMic:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid groupType:(NSString *)groupType { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9way9qb2lu"];///room/pk/join + [self makeRequest:fang method:HttpRequestHelperMethodDELETE completion:completion, __FUNCTION__, roomUid, operUid, groupType, nil]; } @end diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/Model/ArrangeMicModel.h b/YuMi/Modules/YMRoom/View/ArrangeMic/Model/ArrangeMicModel.h new file mode 100644 index 00000000..d013351b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ArrangeMic/Model/ArrangeMicModel.h @@ -0,0 +1,39 @@ +// +// ArrangeMicModel.h +// YUMI +// +// Created by YUMI on 2021/12/20. +// + +#import +#import "YUMINNNN.h" +#import "XPArrangeMicInfoModel.h" +NS_ASSUME_NONNULL_BEGIN +@class ArrangeMicUserModel; +@interface ArrangeMicModel : NSObject +///参与排麦人数 +@property (nonatomic, strong) NSString * count; +///我的排麦位置 +@property (nonatomic, strong) NSString * myPos; +///排麦的人 +@property (nonatomic,copy) NSArray *queue; +@end + +@interface ArrangeMicUserModel : NSObject +///uid +@property (nonatomic,copy) NSString * uid; +///性别 +@property (nonatomic,assign) GenderType gender; +///头像 +@property (nonatomic,copy) NSString *avatar; +///名字 +@property (nonatomic,copy) NSString *nick; +///当前的编号 +@property (nonatomic,assign) NSInteger number; +///红队或者蓝队 男神后者女神 +@property (nonatomic,assign) GroupType groupType; +///排麦的类型 本地加的字段 +@property (nonatomic,assign) ArrangeMicType arrangeMicType; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/Model/ArrangeMicModel.m b/YuMi/Modules/YMRoom/View/ArrangeMic/Model/ArrangeMicModel.m new file mode 100644 index 00000000..d9c6ab27 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ArrangeMic/Model/ArrangeMicModel.m @@ -0,0 +1,23 @@ +// +// ArrangeMicModel.m +// YUMI +// +// Created by YUMI on 2021/12/20. +// + +#import "ArrangeMicModel.h" + +@implementation ArrangeMicModel + ++ (NSDictionary *)objectClassInArray { + return @{@"queue":ArrangeMicUserModel.class}; +} + +@end + + +@implementation ArrangeMicUserModel + + + +@end diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/Model/ScheduleLoudspeakerMatrix.h b/YuMi/Modules/YMRoom/View/ArrangeMic/Model/ScheduleLoudspeakerMatrix.h deleted file mode 100644 index 3aad6e7c..00000000 --- a/YuMi/Modules/YMRoom/View/ArrangeMic/Model/ScheduleLoudspeakerMatrix.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// ScheduleLoudspeakerMatrix.h -// YUMI -// -// Created by YUMI on 2021/12/20. -// - -#import -#import "YUMINNNN.h" -#import "YUMIScheduleLoudspeakerAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN -@class ScheduleLoudspeakerConsumerMatrix; -@interface ScheduleLoudspeakerMatrix : NSObject -@property (nonatomic, strong) NSString * count; -@property (nonatomic, strong) NSString * myPos; -@property (nonatomic,copy) NSArray *queue; -@end - -@interface ScheduleLoudspeakerConsumerMatrix : NSObject -@property (nonatomic,copy) NSString * uid; -@property (nonatomic,assign) GenderGenre gender; -@property (nonatomic,copy) NSString *avatar; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,assign) NSInteger number; -@property (nonatomic,assign) GroupGenre groupType; -@property (nonatomic,assign) ArrangeLoudspeakerGenre arrangeMicType; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/Model/ScheduleLoudspeakerMatrix.m b/YuMi/Modules/YMRoom/View/ArrangeMic/Model/ScheduleLoudspeakerMatrix.m deleted file mode 100644 index eed29b7e..00000000 --- a/YuMi/Modules/YMRoom/View/ArrangeMic/Model/ScheduleLoudspeakerMatrix.m +++ /dev/null @@ -1,23 +0,0 @@ -// -// ScheduleLoudspeakerMatrix.m -// YUMI -// -// Created by YUMI on 2021/12/20. -// - -#import "ScheduleLoudspeakerMatrix.h" - -@implementation ScheduleLoudspeakerMatrix - -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{@"queue":ScheduleLoudspeakerConsumerMatrix.class}; -} - -@end - - -@implementation ScheduleLoudspeakerConsumerMatrix - - - -@end diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/Model/XPArrangeMicInfoModel.h b/YuMi/Modules/YMRoom/View/ArrangeMic/Model/XPArrangeMicInfoModel.h new file mode 100644 index 00000000..a6879cb6 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ArrangeMic/Model/XPArrangeMicInfoModel.h @@ -0,0 +1,41 @@ +// +// YMArrangeMicInfoModel.h +// YUMI +// +// Created by YUMI on 2021/12/20. +// + +#import +#import "MicroQueueModel.h" +#import "MicroStateModel.h" +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, ArrangeMicType) { + ///普通模式的排麦 + ArrangeMicType_Normal = 0, + ///相亲模式的排麦 + ArrangeMicType_Dating, + ///相亲模式的排麦 + ArrangeMicType_Room_PK, +}; + +@interface XPArrangeMicInfoModel : NSObject +///房间id +@property (nonatomic,copy) NSString *roomId; +///房主的uid +@property (nonatomic,copy) NSString *roomUid; +///需要抱上麦的 +@property (nonatomic, strong) NSMutableDictionary *micQueue; +///用户类型 +@property (nonatomic,assign) BOOL isManager; +///房间标题 +@property (nonatomic,copy) NSString *roomTitle; +///房间头像 +@property (nonatomic,copy) NSString *roomAvatar; +///房间昵称 +@property (nonatomic,copy) NSString * nick; +///排麦的类型 +@property (nonatomic,assign) ArrangeMicType type; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/Model/XPArrangeMicInfoModel.m b/YuMi/Modules/YMRoom/View/ArrangeMic/Model/XPArrangeMicInfoModel.m new file mode 100644 index 00000000..455759b8 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ArrangeMic/Model/XPArrangeMicInfoModel.m @@ -0,0 +1,12 @@ +// +// YMArrangeMicInfoModel.m +// YUMI +// +// Created by YUMI on 2021/12/20. +// + +#import "XPArrangeMicInfoModel.h" + +@implementation XPArrangeMicInfoModel + +@end diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/Model/YUMIScheduleLoudspeakerAbstractMatrix.h b/YuMi/Modules/YMRoom/View/ArrangeMic/Model/YUMIScheduleLoudspeakerAbstractMatrix.h deleted file mode 100644 index 31f7346e..00000000 --- a/YuMi/Modules/YMRoom/View/ArrangeMic/Model/YUMIScheduleLoudspeakerAbstractMatrix.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// YMArrangeMicInfoModel.h -// YUMI -// -// Created by YUMI on 2021/12/20. -// - -#import -#import "MiecreoscoopeMHTueueMatrix.h" -#import "MiecreoscoopeStateMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, ArrangeLoudspeakerGenre) { - - ArrangeLoudspeakerGenre_Normal = 0, - - ArrangeLoudspeakerGenre_Dating, - - ArrangeLoudspeakerGenre_Room_PK, -}; - -@interface YUMIScheduleLoudspeakerAbstractMatrix : NSObject -@property (nonatomic,copy) NSString *roomId; -@property (nonatomic,copy) NSString *roomUid; -@property (nonatomic, strong) NSMutableDictionary *micQueue; -@property (nonatomic,assign) BOOL isManager; -@property (nonatomic,copy) NSString *roomTitle; -@property (nonatomic,copy) NSString *roomAvatar; -@property (nonatomic,copy) NSString * nick; -@property (nonatomic,assign) ArrangeLoudspeakerGenre type; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/Model/YUMIScheduleLoudspeakerAbstractMatrix.m b/YuMi/Modules/YMRoom/View/ArrangeMic/Model/YUMIScheduleLoudspeakerAbstractMatrix.m deleted file mode 100644 index a81cbfbe..00000000 --- a/YuMi/Modules/YMRoom/View/ArrangeMic/Model/YUMIScheduleLoudspeakerAbstractMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMArrangeMicInfoModel.m -// YUMI -// -// Created by YUMI on 2021/12/20. -// - -#import "YUMIScheduleLoudspeakerAbstractMatrix.h" - -@implementation YUMIScheduleLoudspeakerAbstractMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/Presenter/XPArrangeMicPresenter.h b/YuMi/Modules/YMRoom/View/ArrangeMic/Presenter/XPArrangeMicPresenter.h new file mode 100644 index 00000000..783d9bb6 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ArrangeMic/Presenter/XPArrangeMicPresenter.h @@ -0,0 +1,49 @@ +// +// YMArrangeMicPresenter.h +// YUMI +// +// Created by YUMI on 2021/12/20. +// + +#import "BaseMvpPresenter.h" +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPArrangeMicPresenter : BaseMvpPresenter + +/// 获取房间排麦列表 +/// @param roomUid 房主的uid +/// @param page 当前的页数 +/// @param pageSize 一页的个数 +/// @param state 顶部刷新还是尾部刷新 +- (void)getRoomArrangeMicList:(NSString *)roomUid page:(int)page pageSize:(int)pageSize state:(int)state; + +/// 申请排麦 +/// @param roomUid 房主的uid +/// @param groupType 类型 +- (void)applyRoomArrangeMic:(NSString *)roomUid groupType:(GroupType)groupType; + +/// 取消申请排麦 +/// @param roomUid 房主的uid +/// @param groupType 类型 +- (void)cancelRoomArrangeMic:(NSString *)roomUid groupType:(GroupType)groupType; + +/// 获取房间PK用户的列表 +/// @param roomUid 房主的uid +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +/// @param state 上啦 1还是下拉0 +- (void)getRoomPKMemberList:(NSString *)roomUid page:(int)page pageSize:(int)pageSize state:(int)state; + +/// 申请房间内PK排麦 +/// @param roomUid 房主的uid +/// @param groupType 类型 +- (void)applyRoomPKArrangeMic:(NSString *)roomUid groupType:(GroupType)groupType; + +/// 取消申请房间内排麦 +/// @param roomUid 房主的uid +/// @param groupType 类型 +- (void)cancelRoomPKArrangeMic:(NSString *)roomUid groupType:(GroupType)groupType; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/Presenter/XPArrangeMicPresenter.m b/YuMi/Modules/YMRoom/View/ArrangeMic/Presenter/XPArrangeMicPresenter.m new file mode 100644 index 00000000..792b3fd6 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ArrangeMic/Presenter/XPArrangeMicPresenter.m @@ -0,0 +1,95 @@ +// +// YMArrangeMicPresenter.m +// YUMI +// +// Created by YUMI on 2021/12/20. +// + +#import "XPArrangeMicPresenter.h" +#import "Api+ArrangeMic.h" +#import "AccountInfoStorage.h" +#import "ArrangeMicModel.h" +#import "XPArrangeMicProtocol.h" + +@implementation XPArrangeMicPresenter + + +/// 获取房间排麦列表 +/// @param roomUid 房主的uid +/// @param page 当前的页数 +/// @param pageSize 一页的个数 +/// @param state 顶部刷新还是尾部刷新 +- (void)getRoomArrangeMicList:(NSString *)roomUid page:(int)page pageSize:(int)pageSize state:(int)state { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * pageStr = [NSString stringWithFormat:@"%d", page]; + NSString * pageSizeStr = [NSString stringWithFormat:@"%d", pageSize]; + [Api getRoomArrangeMicList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + ArrangeMicModel * model = [ArrangeMicModel modelWithDictionary:data.data]; + [[self getView] getRoomArrangeMicListSuccess:model state:state]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getRoomArrangeMicListFail:msg state:state]; + } showLoading:YES] roomUid:roomUid operUid:uid page:pageStr pageSize:pageSizeStr]; +} + +/// 申请排麦 +/// @param roomUid 房主的uid +/// @param groupType 类型 +- (void)applyRoomArrangeMic:(NSString *)roomUid groupType:(GroupType)groupType { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * groupTypeStr = [NSString stringWithFormat:@"%ld", groupType]; + [Api applyArrangeMic:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] applyArrangeMicSuccess]; + } showLoading:YES] roomUid:roomUid operUid:uid groupType:groupTypeStr]; +} + +/// 取消申请排麦 +/// @param roomUid 房主的uid +/// @param groupType 类型 +- (void)cancelRoomArrangeMic:(NSString *)roomUid groupType:(GroupType)groupType { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * groupTypeStr = [NSString stringWithFormat:@"%ld", groupType]; + [Api cancelArrangeMic:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] cancelArrangeMicSuccess]; + } showLoading:YES] roomUid:roomUid operUid:uid groupType:groupTypeStr]; +} + +/// 获取房间PK用户的列表 +/// @param roomUid 房主的uid +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +/// @param state 上啦 1还是下拉0 +- (void)getRoomPKMemberList:(NSString *)roomUid page:(int)page pageSize:(int)pageSize state:(int)state { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * pageStr = [NSString stringWithFormat:@"%d", page]; + NSString * pageSizeStr = [NSString stringWithFormat:@"%d", pageSize]; + [Api getRoomPKUserList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + ArrangeMicModel * model = [ArrangeMicModel modelWithDictionary:data.data]; + [[self getView] getRoomPKMemberListSuccess:model state:state]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getRoomPKMemberListFail:msg state:state]; + } showLoading:YES] roomUid:roomUid operUid:uid page:pageStr pageSize:pageSizeStr]; +} + +/// 申请房间内PK排麦 +/// @param roomUid 房主的uid +/// @param groupType 类型 +- (void)applyRoomPKArrangeMic:(NSString *)roomUid groupType:(GroupType)groupType { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * groupTypeStr = [NSString stringWithFormat:@"%ld", groupType]; + [Api applyRoomPKArrangeMic:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] applyArrangeMicSuccess]; + } showLoading:YES] roomUid:roomUid operUid:uid groupType:groupTypeStr]; +} + +/// 取消申请房间内排麦 +/// @param roomUid 房主的uid +/// @param groupType 类型 +- (void)cancelRoomPKArrangeMic:(NSString *)roomUid groupType:(GroupType)groupType { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * groupTypeStr = [NSString stringWithFormat:@"%ld", groupType]; + [Api cancelRoomPKArrangeMic:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] cancelArrangeMicSuccess]; + } showLoading:YES] roomUid:roomUid operUid:uid groupType:groupTypeStr]; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/Presenter/YUMIScheduleLoudspeakerExternalizer.h b/YuMi/Modules/YMRoom/View/ArrangeMic/Presenter/YUMIScheduleLoudspeakerExternalizer.h deleted file mode 100644 index 9c9ef6cc..00000000 --- a/YuMi/Modules/YMRoom/View/ArrangeMic/Presenter/YUMIScheduleLoudspeakerExternalizer.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// YMArrangeMicPresenter.h -// YUMI -// -// Created by YUMI on 2021/12/20. -// - -#import "BaseMvpExternalizer.h" -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIScheduleLoudspeakerExternalizer : BaseMvpExternalizer - -- (void)acquireChamberScheduleLoudspeakerSttowardsement:(NSString *)roomUid page:(int)page pageSize:(int)pageSize state:(int)state; - -- (void)demandChamberScheduleLoudspeaker:(NSString *)roomUid groupType:(GroupGenre)groupType; - -- (void)revoctowardsionChamberScheduleLoudspeaker:(NSString *)roomUid groupType:(GroupGenre)groupType; - -- (void)acquireChamberCombatComponentSttowardsement:(NSString *)roomUid page:(int)page pageSize:(int)pageSize state:(int)state; - -- (void)demandChamberCombatScheduleLoudspeaker:(NSString *)roomUid groupType:(GroupGenre)groupType; - -- (void)revoctowardsionChamberCombatScheduleLoudspeaker:(NSString *)roomUid groupType:(GroupGenre)groupType; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/Presenter/YUMIScheduleLoudspeakerExternalizer.m b/YuMi/Modules/YMRoom/View/ArrangeMic/Presenter/YUMIScheduleLoudspeakerExternalizer.m deleted file mode 100644 index 30c8580b..00000000 --- a/YuMi/Modules/YMRoom/View/ArrangeMic/Presenter/YUMIScheduleLoudspeakerExternalizer.m +++ /dev/null @@ -1,73 +0,0 @@ -// -// YMArrangeMicPresenter.m -// YUMI -// -// Created by YUMI on 2021/12/20. -// - -#import "YUMIScheduleLoudspeakerExternalizer.h" -#import "Api+ArrangeMic.h" -#import "AccountAbstractStorage.h" -#import "ScheduleLoudspeakerMatrix.h" -#import "FBCArrangeMicCeremony.h" - -@implementation YUMIScheduleLoudspeakerExternalizer - - -- (void)acquireChamberScheduleLoudspeakerSttowardsement:(NSString *)roomUid page:(int)page pageSize:(int)pageSize state:(int)state { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * pageStr = [NSString stringWithFormat:@"%d", page]; - NSString * pageSizeStr = [NSString stringWithFormat:@"%d", pageSize]; - [Api acquireChamberScheduleLoudspeakerSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ScheduleLoudspeakerMatrix * model = [ScheduleLoudspeakerMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireChamberScheduleLoudspeakerSttowardsementAccomplishment:model state:state]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireChamberScheduleLoudspeakerSttowardsementFlunk:msg state:state]; - } EvidenceChambering:YES] roomUid:roomUid operUid:uid page:pageStr pageSize:pageSizeStr]; -} - -- (void)demandChamberScheduleLoudspeaker:(NSString *)roomUid groupType:(GroupGenre)groupType { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * groupTypeStr = [NSString stringWithFormat:@"%ld", groupType]; - [Api demandScheduleLoudspeaker:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] demandScheduleLoudspeakerAccomplishment]; - } EvidenceChambering:YES] roomUid:roomUid operUid:uid groupType:groupTypeStr]; -} - -- (void)revoctowardsionChamberScheduleLoudspeaker:(NSString *)roomUid groupType:(GroupGenre)groupType { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * groupTypeStr = [NSString stringWithFormat:@"%ld", groupType]; - [Api revoctowardsionScheduleLoudspeaker:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] revoctowardsionScheduleLoudspeakerAccomplishment]; - } EvidenceChambering:YES] roomUid:roomUid operUid:uid groupType:groupTypeStr]; -} - -- (void)acquireChamberCombatComponentSttowardsement:(NSString *)roomUid page:(int)page pageSize:(int)pageSize state:(int)state { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * pageStr = [NSString stringWithFormat:@"%d", page]; - NSString * pageSizeStr = [NSString stringWithFormat:@"%d", pageSize]; - [Api acquireChamberCombatConsumerSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ScheduleLoudspeakerMatrix * model = [ScheduleLoudspeakerMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireChamberCombatComponentSttowardsementAccomplishment:model state:state]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireChamberCombatComponentSttowardsementFlunk:msg state:state]; - } EvidenceChambering:YES] roomUid:roomUid operUid:uid page:pageStr pageSize:pageSizeStr]; -} - -- (void)demandChamberCombatScheduleLoudspeaker:(NSString *)roomUid groupType:(GroupGenre)groupType { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * groupTypeStr = [NSString stringWithFormat:@"%ld", groupType]; - [Api demandChamberCombatScheduleLoudspeaker:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] demandScheduleLoudspeakerAccomplishment]; - } EvidenceChambering:YES] roomUid:roomUid operUid:uid groupType:groupTypeStr]; -} - -- (void)revoctowardsionChamberCombatScheduleLoudspeaker:(NSString *)roomUid groupType:(GroupGenre)groupType { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * groupTypeStr = [NSString stringWithFormat:@"%ld", groupType]; - [Api revoctowardsionChamberCombatScheduleLoudspeaker:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] revoctowardsionScheduleLoudspeakerAccomplishment]; - } EvidenceChambering:YES] roomUid:roomUid operUid:uid groupType:groupTypeStr]; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/Protocol/FBCArrangeMicCeremony.h b/YuMi/Modules/YMRoom/View/ArrangeMic/Protocol/FBCArrangeMicCeremony.h deleted file mode 100644 index 3fca5d80..00000000 --- a/YuMi/Modules/YMRoom/View/ArrangeMic/Protocol/FBCArrangeMicCeremony.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMArrangeMicProtocol.h -// YUMI -// -// Created by YUMI on 2021/12/20. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ScheduleLoudspeakerMatrix; -@protocol FBCArrangeMicCeremony -- (void)acquireChamberScheduleLoudspeakerSttowardsementAccomplishment:(ScheduleLoudspeakerMatrix *)listMatrix state:(int)state; -- (void)acquireChamberScheduleLoudspeakerSttowardsementFlunk:(NSString *)msg state:(int)state; -- (void)demandScheduleLoudspeakerAccomplishment; -- (void)revoctowardsionScheduleLoudspeakerAccomplishment; -- (void)acquireChamberCombatComponentSttowardsementAccomplishment:(ScheduleLoudspeakerMatrix *)listMatrix state:(int)state; -- (void)acquireChamberCombatComponentSttowardsementFlunk:(NSString *)msg state:(int)state; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/Protocol/XPArrangeMicProtocol.h b/YuMi/Modules/YMRoom/View/ArrangeMic/Protocol/XPArrangeMicProtocol.h new file mode 100644 index 00000000..c3a87c02 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ArrangeMic/Protocol/XPArrangeMicProtocol.h @@ -0,0 +1,28 @@ +// +// YMArrangeMicProtocol.h +// YUMI +// +// Created by YUMI on 2021/12/20. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class ArrangeMicModel; +@protocol XPArrangeMicProtocol +///获取排麦列表 +- (void)getRoomArrangeMicListSuccess:(ArrangeMicModel *)listModel state:(int)state; +///获取排麦列表 +- (void)getRoomArrangeMicListFail:(NSString *)msg state:(int)state; +///申请排麦成功 +- (void)applyArrangeMicSuccess; +///取消排麦成功 +- (void)cancelArrangeMicSuccess; +///获取当前pk房间列表成功 +- (void)getRoomPKMemberListSuccess:(ArrangeMicModel *)listModel state:(int)state; +///获取当前房间PK列表失败 +- (void)getRoomPKMemberListFail:(NSString *)msg state:(int)state; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/View/Cell/XPArrangeMicEmptyTableViewCell.h b/YuMi/Modules/YMRoom/View/ArrangeMic/View/Cell/XPArrangeMicEmptyTableViewCell.h new file mode 100644 index 00000000..fe96a0b1 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ArrangeMic/View/Cell/XPArrangeMicEmptyTableViewCell.h @@ -0,0 +1,17 @@ +// +// YMArrangeMicEmptyTableViewCell.h +// YUMI +// +// Created by YUMI on 2021/12/20. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPArrangeMicEmptyTableViewCell : UITableViewCell +///空白的文案 +@property (nonatomic,copy) NSString *emptyTitle; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/View/Cell/XPArrangeMicEmptyTableViewCell.m b/YuMi/Modules/YMRoom/View/ArrangeMic/View/Cell/XPArrangeMicEmptyTableViewCell.m new file mode 100644 index 00000000..49f942e9 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ArrangeMic/View/Cell/XPArrangeMicEmptyTableViewCell.m @@ -0,0 +1,81 @@ +// +// YMArrangeMicEmptyTableViewCell.m +// YUMI +// +// Created by YUMI on 2021/12/20. +// + +#import "XPArrangeMicEmptyTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImageConstant.h" + +@interface XPArrangeMicEmptyTableViewCell () +@property (nonatomic,strong) UIImageView *emptyImageView; +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPArrangeMicEmptyTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.emptyImageView]; + [self.contentView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.emptyImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.contentView).offset(50); + make.size.mas_equalTo(CGSizeMake(100, 100)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.emptyImageView.mas_bottom).offset(20); + make.left.right.mas_equalTo(self.contentView); + }]; +} +#pragma mark - Getters And Setters +- (void)setEmptyTitle:(NSString *)emptyTitle { + _emptyTitle = emptyTitle; + if (_emptyTitle.length > 0) { + self.titleLabel.text = _emptyTitle; + } +} + +- (UIImageView *)emptyImageView { + if (!_emptyImageView) { + _emptyImageView = [[UIImageView alloc] init]; + _emptyImageView.userInteractionEnabled = YES; + _emptyImageView.image = [UIImageConstant defalutEmptyPlaceholder]; + _emptyImageView.layer.masksToBounds = YES; + _emptyImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _emptyImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPArrangeMicEmptyTableViewCell0"); + _titleLabel.numberOfLines = 2; + _titleLabel.font = [UIFont systemFontOfSize:16]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/View/Cell/XPArrangeMicTableViewCell.h b/YuMi/Modules/YMRoom/View/ArrangeMic/View/Cell/XPArrangeMicTableViewCell.h new file mode 100644 index 00000000..723afd71 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ArrangeMic/View/Cell/XPArrangeMicTableViewCell.h @@ -0,0 +1,26 @@ +// +// YMArrangeMicTableViewCell.h +// YUMI +// +// Created by YUMI on 2021/12/20. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPArrangeMicTableViewCell, ArrangeMicUserModel; +@protocol XPArrangeMicTableViewCellDelegate + +- (void)xPArrangeMicTableViewCell:(XPArrangeMicTableViewCell *)view inviteUser:(ArrangeMicUserModel *)userInfo; + +@end +@interface XPArrangeMicTableViewCell : UITableViewCell +///是否是管理 +@property (nonatomic,assign) BOOL isManager; +///代理 +@property (nonatomic,weak) id delegate; +///用户信息 +@property (nonatomic,strong) ArrangeMicUserModel *userInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/View/Cell/XPArrangeMicTableViewCell.m b/YuMi/Modules/YMRoom/View/ArrangeMic/View/Cell/XPArrangeMicTableViewCell.m new file mode 100644 index 00000000..df54bd33 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ArrangeMic/View/Cell/XPArrangeMicTableViewCell.m @@ -0,0 +1,197 @@ +// +// YMArrangeMicTableViewCell.m +// YUMI +// +// Created by YUMI on 2021/12/20. +// + +#import "XPArrangeMicTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "UIImage+Utils.h" +///Model +#import "ArrangeMicModel.h" +@interface XPArrangeMicTableViewCell() +///排名 +@property (nonatomic, strong) UILabel * rankLabel; +///头像 +@property (nonatomic, strong) NetImageView * avaratImageView; +///名称 +@property (nonatomic, strong) UILabel * nameLabel; +///性别 +@property (nonatomic,strong) UIImageView *sexImageView; +///排麦中 +@property (nonatomic, strong) UIButton * arrangeMicButton; +@end + +@implementation XPArrangeMicTableViewCell +#pragma mark - life cycle +- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{ + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initView]; + [self initConstrations]; + } + return self; +} + +#pragma mark - private method +- (void)initView{ + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.rankLabel]; + [self.contentView addSubview:self.avaratImageView]; + [self.contentView addSubview:self.nameLabel]; + [self.contentView addSubview:self.sexImageView]; + [self.contentView addSubview:self.arrangeMicButton]; +} + +- (void)initConstrations{ + [self.rankLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.contentView); + make.left.mas_equalTo(self.contentView).offset(15); + make.width.height.mas_equalTo(20); + }]; + + [self.avaratImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.width.mas_equalTo(46); + make.centerY.mas_equalTo(self.contentView); + make.left.mas_equalTo(self.rankLabel.mas_right).offset(13); + }]; + + [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avaratImageView.mas_right).offset(10); + make.centerY.mas_equalTo(self.contentView); + }]; + + [self.sexImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(12, 12)); + make.left.mas_equalTo(self.nameLabel.mas_right).offset(2); + make.centerY.mas_equalTo(self.nameLabel); + }]; + + [self.arrangeMicButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(75); + make.height.mas_equalTo(25); + make.right.mas_equalTo(self.contentView).offset(-15); + make.centerY.mas_equalTo(self.contentView); + }]; +} + +#pragma mark - Event Response +- (void)arrangeMicButtonAction:(UIButton *)sender { + if (self.isManager && self.delegate && [self.delegate respondsToSelector:@selector(xPArrangeMicTableViewCell:inviteUser:)]) { + [self.delegate xPArrangeMicTableViewCell:self inviteUser:self.userInfo]; + } +} + +#pragma mark - setters and getters +- (void)setUserInfo:(ArrangeMicUserModel *)userInfo { + _userInfo = userInfo; + if (_userInfo) { + NSString * nick = _userInfo.nick; + if (nick.length > 6) { + nick = [nick substringToIndex:6]; + } + self.nameLabel.text= nick; + self.avaratImageView.imageUrl = _userInfo.avatar; + self.sexImageView.image = _userInfo.gender == GenderType_Female ? [UIImage imageNamed:@"common_female"] : [UIImage imageNamed:@"common_male"]; + self.rankLabel.text = [NSString stringWithFormat:@"%ld", _userInfo.number]; + if (self.isManager) { + if (_userInfo.arrangeMicType == ArrangeMicType_Dating) { + NSString * title = _userInfo.groupType == GroupType_Blue ? @"抱上男神" : YMLocalizedString(@"XPArrangeMicTableViewCell1"); + UIColor * color = _userInfo.groupType == GroupType_Blue ? UIColorFromRGB(0x518EFF) : UIColorFromRGB(0xFF6B77); + [self.arrangeMicButton setTitle:title forState:UIControlStateNormal]; + [self.arrangeMicButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [self.arrangeMicButton setBackgroundColor:color]; + }if (_userInfo.arrangeMicType == ArrangeMicType_Room_PK) { + NSString * title = _userInfo.groupType == GroupType_Blue ? @"抱上蓝队" : YMLocalizedString(@"XPArrangeMicTableViewCell3"); + UIColor * color = _userInfo.groupType == GroupType_Blue ? UIColorFromRGB(0x518EFF) : UIColorFromRGB(0xFF6B77); + [self.arrangeMicButton setTitle:title forState:UIControlStateNormal]; + [self.arrangeMicButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [self.arrangeMicButton setBackgroundColor:color]; + } else { + [self.arrangeMicButton setTitle:YMLocalizedString(@"XPArrangeMicTableViewCell4") forState:UIControlStateNormal]; + [self.arrangeMicButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [self.arrangeMicButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } + }else { + if (_userInfo.arrangeMicType == ArrangeMicType_Dating) { + NSString * title = _userInfo.groupType == GroupType_Blue ? @"已选男神" : YMLocalizedString(@"XPArrangeMicTableViewCell6"); + UIColor * color = _userInfo.groupType == GroupType_Blue ? UIColorFromRGB(0x518EFF) : UIColorFromRGB(0xFF6B77); + [self.arrangeMicButton setTitle:title forState:UIControlStateNormal]; + [self.arrangeMicButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [self.arrangeMicButton setBackgroundColor:color]; + } else if(_userInfo.arrangeMicType == ArrangeMicType_Room_PK) { + NSString * title = _userInfo.groupType == GroupType_Blue ? @"已选蓝队" : YMLocalizedString(@"XPArrangeMicTableViewCell8"); + UIColor * color = _userInfo.groupType == GroupType_Blue ? UIColorFromRGB(0x518EFF) : UIColorFromRGB(0xFF6B77); + [self.arrangeMicButton setTitle:title forState:UIControlStateNormal]; + [self.arrangeMicButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [self.arrangeMicButton setBackgroundColor:color]; + } else { + [self.arrangeMicButton setTitle:YMLocalizedString(@"XPArrangeMicTableViewCell9") forState:UIControlStateNormal]; + [self.arrangeMicButton setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateNormal]; + [self.arrangeMicButton setBackgroundImage:[UIImage imageWithColor:[DJDKMIMOMColor disableButtonColor]] forState:UIControlStateNormal]; + } + } + } +} + +- (UILabel *)rankLabel{ + if (!_rankLabel) { + _rankLabel = [[UILabel alloc] init]; + _rankLabel.textColor = [UIColor whiteColor]; + _rankLabel.font = [UIFont systemFontOfSize:13]; + _rankLabel.backgroundColor = [DJDKMIMOMColor appMainColor]; + _rankLabel.textAlignment = NSTextAlignmentCenter; + _rankLabel.layer.masksToBounds = YES; + _rankLabel.layer.cornerRadius = 10; + } + return _rankLabel; +} + + +- (UILabel *)nameLabel{ + if (!_nameLabel) { + _nameLabel = [[UILabel alloc] init]; + _nameLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _nameLabel.font = [UIFont systemFontOfSize:15]; + _nameLabel.textAlignment = NSTextAlignmentLeft; + } + return _nameLabel; +} + +- (UIButton *)arrangeMicButton{ + if (!_arrangeMicButton) { + _arrangeMicButton = [UIButton buttonWithType:UIButtonTypeCustom];; + _arrangeMicButton.titleLabel.font = [UIFont systemFontOfSize:13]; + _arrangeMicButton.layer.masksToBounds = YES; + _arrangeMicButton.layer.cornerRadius = 25/ 2; + [_arrangeMicButton addTarget:self action:@selector(arrangeMicButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _arrangeMicButton; +} + +- (NetImageView *)avaratImageView{ + if (!_avaratImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserIcon; + _avaratImageView = [[NetImageView alloc] initWithConfig:config]; + _avaratImageView.layer.masksToBounds = YES; + _avaratImageView.layer.cornerRadius = 23; + } + return _avaratImageView; +} + +- (UIImageView *)sexImageView { + if (!_sexImageView) { + _sexImageView = [[UIImageView alloc] init]; + _sexImageView.userInteractionEnabled = YES; + } + return _sexImageView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/View/Cell/YUMIScheduleLoudspeakerDispossessTabulationRegardElement.h b/YuMi/Modules/YMRoom/View/ArrangeMic/View/Cell/YUMIScheduleLoudspeakerDispossessTabulationRegardElement.h deleted file mode 100644 index 2f38a858..00000000 --- a/YuMi/Modules/YMRoom/View/ArrangeMic/View/Cell/YUMIScheduleLoudspeakerDispossessTabulationRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMArrangeMicEmptyTableViewCell.h -// YUMI -// -// Created by YUMI on 2021/12/20. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIScheduleLoudspeakerDispossessTabulationRegardElement : UITableViewCell -@property (nonatomic,copy) NSString *emptyTitle; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/View/Cell/YUMIScheduleLoudspeakerDispossessTabulationRegardElement.m b/YuMi/Modules/YMRoom/View/ArrangeMic/View/Cell/YUMIScheduleLoudspeakerDispossessTabulationRegardElement.m deleted file mode 100644 index 7e16418f..00000000 --- a/YuMi/Modules/YMRoom/View/ArrangeMic/View/Cell/YUMIScheduleLoudspeakerDispossessTabulationRegardElement.m +++ /dev/null @@ -1,79 +0,0 @@ -// -// YMArrangeMicEmptyTableViewCell.m -// YUMI -// -// Created by YUMI on 2021/12/20. -// - -#import "YUMIScheduleLoudspeakerDispossessTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIIndicateConstant.h" - -@interface YUMIScheduleLoudspeakerDispossessTabulationRegardElement () -@property (nonatomic,strong) UIImageView *dispossessIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@end - -@implementation YUMIScheduleLoudspeakerDispossessTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.dispossessIndicateRegard]; - [self.contentView addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.dispossessIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.contentView).offset(50); - make.size.mas_equalTo(CGSizeMake(100, 100)); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.dispossessIndicateRegard.mas_bottom).offset(20); - make.left.right.mas_equalTo(self.contentView); - }]; -} -#pragma mark - Getters And Setters -- (void)setEmptyTitle:(NSString *)emptyTitle { - _emptyTitle = emptyTitle; - if (_emptyTitle.length > 0) { - self.titleLabel.text = _emptyTitle; - } -} - -- (UIImageView *)dispossessIndicateRegard { - if (!_dispossessIndicateRegard) { - _dispossessIndicateRegard = [[UIImageView alloc] init]; - _dispossessIndicateRegard.userInteractionEnabled = YES; - _dispossessIndicateRegard.image = [UIIndicateConstant defalutDispossessDepapossessor]; - _dispossessIndicateRegard.layer.masksToBounds = YES; - _dispossessIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _dispossessIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Arrange_Mic_Empty_Table_View_Cell_0"); - _titleLabel.numberOfLines = 2; - _titleLabel.font = [UIFont systemFontOfSize:16]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/View/Cell/YUMIScheduleLoudspeakerTabulationRegardElement.h b/YuMi/Modules/YMRoom/View/ArrangeMic/View/Cell/YUMIScheduleLoudspeakerTabulationRegardElement.h deleted file mode 100644 index 0bfc7ce2..00000000 --- a/YuMi/Modules/YMRoom/View/ArrangeMic/View/Cell/YUMIScheduleLoudspeakerTabulationRegardElement.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMArrangeMicTableViewCell.h -// YUMI -// -// Created by YUMI on 2021/12/20. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIScheduleLoudspeakerTabulationRegardElement, ScheduleLoudspeakerConsumerMatrix; -@protocol FBCArrangeMicTabulationViweElementRepresendtation - -- (void)yUMIScheduleLoudspeakerTarbsultowardsionViweElement:(YUMIScheduleLoudspeakerTabulationRegardElement *)view inviteUser:(ScheduleLoudspeakerConsumerMatrix *)userInfo; - -@end -@interface YUMIScheduleLoudspeakerTabulationRegardElement : UITableViewCell -@property (nonatomic,assign) BOOL isManager; -@property (nonatomic,weak) id delegate; -@property (nonatomic,strong) ScheduleLoudspeakerConsumerMatrix *userInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/View/Cell/YUMIScheduleLoudspeakerTabulationRegardElement.m b/YuMi/Modules/YMRoom/View/ArrangeMic/View/Cell/YUMIScheduleLoudspeakerTabulationRegardElement.m deleted file mode 100644 index 05695b32..00000000 --- a/YuMi/Modules/YMRoom/View/ArrangeMic/View/Cell/YUMIScheduleLoudspeakerTabulationRegardElement.m +++ /dev/null @@ -1,189 +0,0 @@ -// -// YMArrangeMicTableViewCell.m -// YUMI -// -// Created by YUMI on 2021/12/20. -// - -#import "YUMIScheduleLoudspeakerTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "UIImage+Utils.h" -#import "ScheduleLoudspeakerMatrix.h" -@interface YUMIScheduleLoudspeakerTabulationRegardElement() -@property (nonatomic, strong) UILabel * rateSequencignation; -@property (nonatomic, strong) NetIndicateRegard * avaratIndicateRegard; -@property (nonatomic, strong) UILabel * constituteSequencignation; -@property (nonatomic,strong) UIImageView *seaxualityIndicateRegard; -@property (nonatomic, strong) UIButton * arrangeLoudspeakerBtuton; -@end - -@implementation YUMIScheduleLoudspeakerTabulationRegardElement -#pragma mark - life cycle -- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{ - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initRegard]; - [self initConstrtowardsions]; - } - return self; -} - -#pragma mark - private method -- (void)initRegard{ - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.rateSequencignation]; - [self.contentView addSubview:self.avaratIndicateRegard]; - [self.contentView addSubview:self.constituteSequencignation]; - [self.contentView addSubview:self.seaxualityIndicateRegard]; - [self.contentView addSubview:self.arrangeLoudspeakerBtuton]; -} - -- (void)initConstrtowardsions{ - [self.rateSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.contentView); - make.left.mas_equalTo(self.contentView).offset(15); - make.width.height.mas_equalTo(20); - }]; - - [self.avaratIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.width.mas_equalTo(46); - make.centerY.mas_equalTo(self.contentView); - make.left.mas_equalTo(self.rateSequencignation.mas_right).offset(13); - }]; - - [self.constituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.avaratIndicateRegard.mas_right).offset(10); - make.centerY.mas_equalTo(self.contentView); - }]; - - [self.seaxualityIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(12, 12)); - make.left.mas_equalTo(self.constituteSequencignation.mas_right).offset(2); - make.centerY.mas_equalTo(self.constituteSequencignation); - }]; - - [self.arrangeLoudspeakerBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(75); - make.height.mas_equalTo(25); - make.right.mas_equalTo(self.contentView).offset(-15); - make.centerY.mas_equalTo(self.contentView); - }]; -} - -#pragma mark - Event Response -- (void)arrangeLoudspeakerBtutonPerformance:(UIButton *)sender { - if (self.isManager && self.delegate && [self.delegate respondsToSelector:@selector(yUMIScheduleLoudspeakerTarbsultowardsionViweElement:inviteUser:)]) { - [self.delegate yUMIScheduleLoudspeakerTarbsultowardsionViweElement:self inviteUser:self.userInfo]; - } -} - -#pragma mark - setters and getters -- (void)setUserInfo:(ScheduleLoudspeakerConsumerMatrix *)userInfo { - _userInfo = userInfo; - if (_userInfo) { - NSString * nick = _userInfo.nick; - if (nick.length > 6) { - nick = [nick substringToIndex:6]; - } - self.constituteSequencignation.text= nick; - self.avaratIndicateRegard.imageUrl = _userInfo.avatar; - self.seaxualityIndicateRegard.image = _userInfo.gender == GenderGenre_Female ? [UIImage imageNamed:@"yumi_same_female"] : [UIImage imageNamed:@"yumi_same_male"]; - self.rateSequencignation.text = [NSString stringWithFormat:@"%ld", _userInfo.number]; - if (self.isManager) { - if (_userInfo.arrangeMicType == ArrangeLoudspeakerGenre_Dating) { - NSString * title = _userInfo.groupType == GroupGenre_Blue ? @"抱上男神" : YMLocalizedString(@"YUMI_Arrange_Mic_Table_View_Cell_1"); - UIColor * color = _userInfo.groupType == GroupGenre_Blue ? UIColorFromRGB(0x518EFF) : UIColorFromRGB(0xFF6B77); - [self.arrangeLoudspeakerBtuton setTitle:title forState:UIControlStateNormal]; - [self.arrangeLoudspeakerBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [self.arrangeLoudspeakerBtuton setBackgroundColor:color]; - }if (_userInfo.arrangeMicType == ArrangeLoudspeakerGenre_Room_PK) { - NSString * title = _userInfo.groupType == GroupGenre_Blue ? @"抱上蓝队" : YMLocalizedString(@"YUMI_Arrange_Mic_Table_View_Cell_3"); - UIColor * color = _userInfo.groupType == GroupGenre_Blue ? UIColorFromRGB(0x518EFF) : UIColorFromRGB(0xFF6B77); - [self.arrangeLoudspeakerBtuton setTitle:title forState:UIControlStateNormal]; - [self.arrangeLoudspeakerBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [self.arrangeLoudspeakerBtuton setBackgroundColor:color]; - } else { - [self.arrangeLoudspeakerBtuton setTitle:YMLocalizedString(@"YUMI_Arrange_Mic_Table_View_Cell_4") forState:UIControlStateNormal]; - [self.arrangeLoudspeakerBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [self.arrangeLoudspeakerBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } - }else { - if (_userInfo.arrangeMicType == ArrangeLoudspeakerGenre_Dating) { - NSString * title = _userInfo.groupType == GroupGenre_Blue ? @"已选男神" : YMLocalizedString(@"YUMI_Arrange_Mic_Table_View_Cell_6"); - UIColor * color = _userInfo.groupType == GroupGenre_Blue ? UIColorFromRGB(0x518EFF) : UIColorFromRGB(0xFF6B77); - [self.arrangeLoudspeakerBtuton setTitle:title forState:UIControlStateNormal]; - [self.arrangeLoudspeakerBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [self.arrangeLoudspeakerBtuton setBackgroundColor:color]; - } else if(_userInfo.arrangeMicType == ArrangeLoudspeakerGenre_Room_PK) { - NSString * title = _userInfo.groupType == GroupGenre_Blue ? @"已选蓝队" : YMLocalizedString(@"YUMI_Arrange_Mic_Table_View_Cell_8"); - UIColor * color = _userInfo.groupType == GroupGenre_Blue ? UIColorFromRGB(0x518EFF) : UIColorFromRGB(0xFF6B77); - [self.arrangeLoudspeakerBtuton setTitle:title forState:UIControlStateNormal]; - [self.arrangeLoudspeakerBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [self.arrangeLoudspeakerBtuton setBackgroundColor:color]; - } else { - [self.arrangeLoudspeakerBtuton setTitle:YMLocalizedString(@"YUMI_Arrange_Mic_Table_View_Cell_9") forState:UIControlStateNormal]; - [self.arrangeLoudspeakerBtuton setTitleColor:[DJDKMIMOMColor prohibitionBtutonEssayPrettify] forState:UIControlStateNormal]; - [self.arrangeLoudspeakerBtuton setBackgroundImage:[UIImage imageWithColor:[DJDKMIMOMColor prohibitionBtutonPrettify]] forState:UIControlStateNormal]; - } - } - } -} - -- (UILabel *)rateSequencignation{ - if (!_rateSequencignation) { - _rateSequencignation = [[UILabel alloc] init]; - _rateSequencignation.textColor = [UIColor whiteColor]; - _rateSequencignation.font = [UIFont systemFontOfSize:13]; - _rateSequencignation.backgroundColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - _rateSequencignation.textAlignment = NSTextAlignmentCenter; - _rateSequencignation.layer.masksToBounds = YES; - _rateSequencignation.layer.cornerRadius = 10; - } - return _rateSequencignation; -} - - -- (UILabel *)constituteSequencignation{ - if (!_constituteSequencignation) { - _constituteSequencignation = [[UILabel alloc] init]; - _constituteSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _constituteSequencignation.font = [UIFont systemFontOfSize:15]; - _constituteSequencignation.textAlignment = NSTextAlignmentLeft; - } - return _constituteSequencignation; -} - -- (UIButton *)arrangeLoudspeakerBtuton{ - if (!_arrangeLoudspeakerBtuton) { - _arrangeLoudspeakerBtuton = [UIButton buttonWithType:UIButtonTypeCustom];; - _arrangeLoudspeakerBtuton.titleLabel.font = [UIFont systemFontOfSize:13]; - _arrangeLoudspeakerBtuton.layer.masksToBounds = YES; - _arrangeLoudspeakerBtuton.layer.cornerRadius = 25/ 2; - [_arrangeLoudspeakerBtuton addTarget:self action:@selector(arrangeLoudspeakerBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _arrangeLoudspeakerBtuton; -} - -- (NetIndicateRegard *)avaratIndicateRegard{ - if (!_avaratIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.imageType = ImageGenreUserIcon; - _avaratIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _avaratIndicateRegard.layer.masksToBounds = YES; - _avaratIndicateRegard.layer.cornerRadius = 23; - } - return _avaratIndicateRegard; -} - -- (UIImageView *)seaxualityIndicateRegard { - if (!_seaxualityIndicateRegard) { - _seaxualityIndicateRegard = [[UIImageView alloc] init]; - _seaxualityIndicateRegard.userInteractionEnabled = YES; - } - return _seaxualityIndicateRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/View/XPArrangeMicViewController.h b/YuMi/Modules/YMRoom/View/ArrangeMic/View/XPArrangeMicViewController.h new file mode 100644 index 00000000..9eea1efd --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ArrangeMic/View/XPArrangeMicViewController.h @@ -0,0 +1,16 @@ +// +// YMArrangeMicViewController.h +// YUMI +// +// Created by YUMI on 2021/12/20. +// + +#import "MvpViewController.h" +#import "XPArrangeMicInfoModel.h" +#import "ArrangeMicModel.h" +NS_ASSUME_NONNULL_BEGIN +@interface XPArrangeMicViewController : MvpViewController +- (instancetype)initWithInfo:(XPArrangeMicInfoModel *)info; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/View/XPArrangeMicViewController.m b/YuMi/Modules/YMRoom/View/ArrangeMic/View/XPArrangeMicViewController.m new file mode 100644 index 00000000..64101586 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ArrangeMic/View/XPArrangeMicViewController.m @@ -0,0 +1,855 @@ +// +// YMArrangeMicViewController.m +// YUMI +// +// Created by YUMI on 2021/12/20. +// + +#import "XPArrangeMicViewController.h" +///Third +#import +#import +#import +///Tool +#import "TTPopup.h" +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "AccountInfoStorage.h" +#import "YUMIHtmlUrl.h" +#import "UIImage+Utils.h" +#import "NSArray+Safe.h" +#import "NSMutableDictionary+Saft.h" +///Model +#import "ArrangeMicModel.h" +#import "AttachmentModel.h" +#import "UserInfoModel.h" +///View +#import "XPArrangeMicEmptyTableViewCell.h" +#import "XPArrangeMicTableViewCell.h" +#import "XPShareView.h" +///P +#import "XPArrangeMicPresenter.h" +#import "XPArrangeMicProtocol.h" + +@interface XPArrangeMicViewController () +///点击消失 +@property (nonatomic,strong) UIView * topView; +///内容区域 +@property (nonatomic,strong) UIView * contentView; +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///分割线 +@property (nonatomic,strong) UIView * lineView; +///列表 +@property (nonatomic,strong) UITableView *tableView; +///申请的 +@property (nonatomic,strong) UIStackView *applyStackView; +///立即邀请或者点击报名 +@property (nonatomic,strong) UIButton *applyButton; +///男神 +@property (nonatomic,strong) UIButton *maleButton; +///女神 +@property (nonatomic,strong) UIButton *femaleButton; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +///当前页数 +@property (nonatomic,assign) int page; +///是否有更多数据 +@property (nonatomic,assign) BOOL hasNoMoreData; +///需要的用户信息 +@property (nonatomic,strong) XPArrangeMicInfoModel *userInfo; +///排麦的信息 +@property (nonatomic,strong) ArrangeMicModel *arrangeMicInfo; +///需要抱上麦的 +@property (nonatomic, strong) NSMutableDictionary *micQueue; +@end + +@implementation XPArrangeMicViewController + +- (void)dealloc { + [[NIMSDK sharedSDK].chatManager removeDelegate:self]; +} + +- (XPArrangeMicPresenter *)createPresenter { + return [[XPArrangeMicPresenter alloc] init]; +} + +- (instancetype)initWithInfo:(XPArrangeMicInfoModel *)info { + if (self = [super init]) { + self.modalPresentationStyle = UIModalPresentationOverFullScreen; + self.userInfo = info; + self.micQueue = info.micQueue; + } + return self; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [[NIMSDK sharedSDK].chatManager addDelegate:self]; + [self initHeaderAndFooterRrfresh]; + [self initSubViews]; + [self initSubViewConstraints]; + [self configDefaultData]; + [self headerRefresh]; + +} +#pragma mark - 下拉刷新 +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; +} + +#pragma mark - 刷新的fangfa +- (void)headerRefresh { + self.page = 1; + if (self.userInfo.type == ArrangeMicType_Room_PK) { + [self.presenter getRoomPKMemberList:self.userInfo.roomUid page:self.page pageSize:20 state:0]; + } else { + [self.presenter getRoomArrangeMicList:self.userInfo.roomUid page:self.page pageSize:20 state:0]; + } + +} + +- (void)footerRefresh { + if (self.hasNoMoreData) { + [self showErrorToast:YMLocalizedString(@"XPArrangeMicViewController0")]; + return; + } + self.page++; + if (self.userInfo.type == ArrangeMicType_Room_PK) { + [self.presenter getRoomPKMemberList:self.userInfo.roomUid page:self.page pageSize:20 state:1]; + } else { + [self.presenter getRoomArrangeMicList:self.userInfo.roomUid page:self.page pageSize:20 state:1];; + } +} + + +#pragma mark - Private Method +- (void)configDefaultData { + if (self.userInfo.isManager) { + [self.applyButton setTitle:YMLocalizedString(@"XPArrangeMicViewController1") forState:UIControlStateNormal]; + } else { + [self.applyButton setTitle:YMLocalizedString(@"XPArrangeMicViewController2") forState:UIControlStateNormal]; + } + + if (self.userInfo.type == ArrangeMicType_Dating) { + self.femaleButton.hidden = self.userInfo.isManager; + self.maleButton.hidden = self.userInfo.isManager; + self.applyButton.hidden = !self.userInfo.isManager; + } else if(self.userInfo.type == ArrangeMicType_Room_PK) { + self.femaleButton.hidden = self.userInfo.isManager; + self.maleButton.hidden = self.userInfo.isManager; + self.applyButton.hidden = !self.userInfo.isManager; + [self.maleButton setTitle:YMLocalizedString(@"XPArrangeMicViewController3") forState:UIControlStateNormal]; + [self.femaleButton setTitle:YMLocalizedString(@"XPArrangeMicViewController4") forState:UIControlStateNormal]; + } else { + self.femaleButton.hidden = YES; + self.maleButton.hidden = YES; + self.applyButton.hidden = NO; + } +} + +- (void)initSubViews { + self.view.backgroundColor = [UIColor clearColor]; + [self.view addSubview:self.topView]; + [self.view addSubview:self.contentView]; + + [self.contentView addSubview:self.titleLabel]; + [self.contentView addSubview:self.lineView]; + [self.contentView addSubview:self.tableView]; + [self.contentView addSubview:self.applyStackView]; + + [self.applyStackView addArrangedSubview:self.maleButton]; + [self.applyStackView addArrangedSubview:self.applyButton]; + [self.applyStackView addArrangedSubview:self.femaleButton]; +} + +- (void)initSubViewConstraints { + [self.topView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.contentView.mas_top); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.height.mas_equalTo(450); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.contentView); + make.height.mas_equalTo(44); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.top.mas_equalTo(self.titleLabel.mas_bottom); + make.height.mas_equalTo(1); + }]; + + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.lineView.mas_bottom); + }]; + + [self.applyStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view).inset(45); + make.height.mas_equalTo(38); + make.bottom.mas_equalTo(self.view).offset(-kSafeAreaBottomHeight - 20); + }]; + +} + +- (NSMutableAttributedString *)createArrangeMicNavTitleWith:(NSString *)count{ + if (self.datasource.count == 0) { + if (self.userInfo.isManager) { + NSMutableAttributedString *attributString = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPArrangeMicViewController5") attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16], NSForegroundColorAttributeName:[DJDKMIMOMColor mainTextColor]}]; + return attributString; + }else{ + NSMutableAttributedString *attributString = [[NSMutableAttributedString alloc] initWithString:@"报名才能排麦哦~" attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16], NSForegroundColorAttributeName:[DJDKMIMOMColor mainTextColor]}]; + return attributString; + } + }else{ + if (self.userInfo.isManager) { + NSString * str = [NSString stringWithFormat:@"当前排麦的人数:%@", count]; + + NSMutableAttributedString *attributString = [[NSMutableAttributedString alloc] initWithString:str attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16], NSForegroundColorAttributeName:[DJDKMIMOMColor mainTextColor]}]; + [attributString addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor appEmphasizeColor] range:[str rangeOfString:count]]; + return attributString; + }else{ + if ([count intValue] > 0) { + count = count.length > 0 ? count : @"0"; + NSString * str = [NSString stringWithFormat:@"我在队列中排列位置:%ld", [count integerValue]]; + NSMutableAttributedString *attributString = [[NSMutableAttributedString alloc] initWithString:str attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16], NSForegroundColorAttributeName:[DJDKMIMOMColor mainTextColor]}]; + [attributString addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor appEmphasizeColor] range:[str rangeOfString:count]]; + return attributString; + }else{ + NSMutableAttributedString *attributString = [[NSMutableAttributedString alloc] initWithString:@"报名才能排麦哦~" attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16], NSForegroundColorAttributeName:[DJDKMIMOMColor mainTextColor]}]; + return attributString; + } + + } + } +} + +#pragma mark - 上麦操作 +//查看锁定的麦序(排麦模式中使用) +- (NSString *)findLockPosition { + if (self.micQueue != nil && self.micQueue.allKeys.count > 0) { + NSArray *keys = [self.micQueue allKeys]; + NSArray *result = [keys sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { + return [obj1 compare:obj2]; //升序 + }]; + if (result.count > 0) { + for (NSString *key in result) { + MicroQueueModel *microQueue = [self.micQueue objectForKey:key]; + MicroStateModel * micstatus= microQueue.microState; + if (![key isEqualToString:@"-1"] && !microQueue.userInfo && micstatus.posState == MicroPosStateType_Lock) { + return key; + break; + } + } + } + } + return nil; +} + +//查看锁定的麦序(排麦模式中使用) +- (NSString *)findLockBlindPosition:(GroupType)groupType { + if (self.micQueue != nil && self.micQueue.allKeys.count > 0) { + NSArray *keys = [self.micQueue allKeys]; + NSArray *result = [keys sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { + return [obj1 compare:obj2]; //升序 + }]; + if (result.count > 0) { + if (groupType == GroupType_Red) { + for (NSString *key in result) { + MicroQueueModel *microQueue = [self.micQueue objectForKey:key]; + UserInfoModel *userInfo = microQueue.userInfo; + MicroStateModel * micstatus= microQueue.microState; + if (![key isEqualToString:@"-1"] && + !userInfo && + micstatus.posState == MicroPosStateType_Lock && + ([key isEqualToString:@"2"] || + [key isEqualToString:@"3"] || + [key isEqualToString:@"6"] || + [key isEqualToString:@"7"])) { + return key; + break; + } + } + }else { + for (NSString *key in result) { + MicroQueueModel *microQueue = [self.micQueue objectForKey:key]; + UserInfoModel *userInfo = microQueue.userInfo; + MicroStateModel * micstatus= microQueue.microState; + if (![key isEqualToString:@"-1"] && + !userInfo && + micstatus.posState == MicroPosStateType_Lock && + ([key isEqualToString:@"0"] || + [key isEqualToString:@"1"] || + [key isEqualToString:@"4"] || + [key isEqualToString:@"5"])) { + return key; + break; + } + } + } + } + } + return nil; +} + +//判断是否在麦上 +- (BOOL)isOnMicro:(NSString *)uid{ + NSArray *chatRoomMicSequences = [self.micQueue allValues] ; + if (chatRoomMicSequences != nil && chatRoomMicSequences.count > 0) { + for (int i = 0; i < chatRoomMicSequences.count; i ++) { + MicroQueueModel *microQueue = chatRoomMicSequences[i]; + if (microQueue.userInfo.uid == uid.integerValue) { + return YES; + } + } + } + return NO; +} + +#pragma mark - NIMChatManagerDelegate +- (void)onRecvMessages:(NSArray *)messages { + for (NIMMessage * message in messages) { + // 非房间内消息不处理 + if (message.session.sessionType != NIMSessionTypeChatroom) { + continue; + } + // 非本房间不处理 + if (![message.session.sessionId isEqualToString:self.userInfo.roomId]) { + continue; + } + if (message.messageType == NIMMessageTypeCustom) { + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) { + AttachmentModel * attachment = obj.attachment; + if (attachment.first == CustomMessageType_Arrange_Mic) { + switch (attachment.second) { + case Custom_Message_Sub_Room_PK_Empty: + case Custom_Message_Sub_Room_PK_Non_Empty: + case Custom_Message_Sub_Arrange_Mic_Non_Empty: + case Custom_Message_Sub_Arrange_Mic_Empty: + [self headerRefresh]; + break; + case Custom_Message_Sub_Room_PK_Mode_Close: + case Custom_Message_Sub_Arrange_Mic_Mode_Close: + [self dismissViewControllerAnimated:YES completion:nil]; + break; + + default: + break; + } + } else if(attachment.first == CustomMessageType_Queue && attachment.second == Custom_Message_Sub_Queue_Invite) { + ArrangeMicUserModel * userInfo = [ArrangeMicUserModel modelWithDictionary:attachment.data]; + if (userInfo.uid.integerValue == [AccountInfoStorage instance].getUid.integerValue) { + [self headerRefresh]; + } + } else if(attachment.first == CustomMessageType_Room_PK && attachment.second == Custom_Message_Sub_Room_PK_Manager_Up_Mic) { + ArrangeMicUserModel * userInfo = [ArrangeMicUserModel modelWithDictionary:[attachment.data objectForKey:[AccountInfoStorage instance].getUid]]; + if (userInfo.uid.integerValue == [AccountInfoStorage instance].getUid.integerValue) { + [self headerRefresh]; + } + } + } + } else if(message.messageType == NIMMessageTypeNotification) { + [self handleNIMNotificationMessage:message]; + } + } +} + +- (void)handleNIMNotificationMessage:(NIMMessage *)message { + NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; + NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; + switch (content.eventType) { + case NIMChatroomEventTypeInfoUpdated: // 麦序状态更新 + { + NSDictionary *data = [content.notifyExt toJSONObject]; + int type = [data[@"type"] intValue]; + NSArray* microStates; + switch (type) { + case 2: + microStates = @[[MicroStateModel modelWithJSON:data[@"micInfo"]]]; + break; + case 3: + microStates = [MicroStateModel modelsWithArray:data[@"micInfo"]]; + break; + } + if (microStates && microStates.count > 0) { + for (MicroStateModel *microState in microStates) { + MicroQueueModel *micSequence = [self.micQueue objectForKey:[NSString stringWithFormat:@"%d", microState.position]]; + micSequence.microState = microState; + } + } + } + break; + + case NIMChatroomEventTypeQueueChange: // 麦序上下麦 + { + NSDictionary* data = (NSDictionary *)content.ext; + NSString* position = [data objectForKey:NIMChatroomEventInfoQueueChangeItemKey]; + UserInfoModel* userInfo = [UserInfoModel modelWithJSON:[data objectForKey:NIMChatroomEventInfoQueueChangeItemValueKey]]; + NSInteger changeType = [data[NIMChatroomEventInfoQueueChangeTypeKey] integerValue]; + + // 先清除该用户旧的麦位 + for (MicroQueueModel *sequence in self.micQueue.allValues) { + if (userInfo.uid == sequence.userInfo.uid) { + sequence.userInfo = nil; + } + } + + if (changeType == 1) { // 上麦 + MicroQueueModel *sequence = [self.micQueue objectForKey:position]; + sequence.userInfo = userInfo; + } + } + break; + case NIMChatroomEventTypeExit: + case NIMChatroomEventTypeKicked: + { + for (NIMChatroomNotificationMember *member in content.targets) { + for (MicroQueueModel *sequence in self.micQueue.allValues) { + if (member.userId.integerValue == sequence.userInfo.uid) { + sequence.userInfo = nil; + } + } + } + } + break; + default: + break; + } +} + +#pragma mark - XPArrangeMicProtocol +- (void)getRoomArrangeMicListSuccess:(ArrangeMicModel *)listModel state:(int)state{ + self.arrangeMicInfo = listModel; + if (state == 0) { + [self.datasource removeAllObjects]; + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } + if (listModel.queue.count > 0) { + self.hasNoMoreData = NO; + [self.datasource addObjectsFromArray:listModel.queue]; + } else { + self.hasNoMoreData = YES; + [self.tableView.mj_footer endRefreshingWithNoMoreData]; + } + [self.tableView reloadData]; + + if (self.userInfo.isManager) { + self.applyButton.hidden = listModel.queue.count > 0; + } else { + if (listModel.myPos.intValue > 0) { + self.applyButton.hidden = NO; + self.maleButton.hidden = YES; + self.femaleButton.hidden = YES; + [self.applyButton setTitle:YMLocalizedString(@"XPArrangeMicViewController10") forState:UIControlStateNormal]; + } else { + if (self.userInfo.type == ArrangeMicType_Dating) { + self.femaleButton.hidden = NO; + self.maleButton.hidden = NO; + self.applyButton.hidden = YES; + } else { + self.femaleButton.hidden = YES; + self.maleButton.hidden = YES; + self.applyButton.hidden = NO; + } + } + } + self.titleLabel.attributedText = [self createArrangeMicNavTitleWith:listModel.count]; + self.titleLabel.textAlignment = NSTextAlignmentCenter; +} + +- (void)getRoomArrangeMicListFail:(NSString *)msg state:(int)state { + if (state == 0) { + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_header endRefreshing]; + } +} + +- (void)applyArrangeMicSuccess { + [self headerRefresh]; +} + +- (void)cancelArrangeMicSuccess { + [self headerRefresh]; +} + +- (void)getRoomPKMemberListFail:(NSString *)msg state:(int)state { + if (state == 0) { + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_header endRefreshing]; + } +} + +- (void)getRoomPKMemberListSuccess:(ArrangeMicModel *)listModel state:(int)state { + self.arrangeMicInfo = listModel; + if (state == 0) { + [self.datasource removeAllObjects]; + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } + if (listModel.queue.count > 0) { + self.hasNoMoreData = NO; + [self.datasource addObjectsFromArray:listModel.queue]; + } else { + self.hasNoMoreData = YES; + [self.tableView.mj_footer endRefreshingWithNoMoreData]; + } + [self.tableView reloadData]; + + if (self.userInfo.isManager) { + self.applyButton.hidden = listModel.queue.count > 0; + } else { + if (listModel.myPos.intValue > 0) { + self.applyButton.hidden = NO; + self.maleButton.hidden = YES; + self.femaleButton.hidden = YES; + [self.applyButton setTitle:YMLocalizedString(@"XPArrangeMicViewController11") forState:UIControlStateNormal]; + } else { + self.femaleButton.hidden = NO; + self.maleButton.hidden = NO; + self.applyButton.hidden = YES; + } + } + self.titleLabel.attributedText = [self createArrangeMicNavTitleWith:listModel.count]; + self.titleLabel.textAlignment = NSTextAlignmentCenter; +} + +#pragma mark - XCShareViewDelegate +- (void)shareView:(XPShareView *)shareView shareFail:(NSString *)message { + [TTPopup dismiss]; + [self showErrorToast:message]; +} + +- (void)shareView:(XPShareView *)shareView didSuccess:(XPShareInfoModel *)shareInfo{ + [TTPopup dismiss]; +} + +- (void)shareViewDidClickCancel:(XPShareView *)shareView { + [TTPopup dismiss]; +} + +#pragma mark - XPArrangeMicTableViewCellDelegate +- (void)xPArrangeMicTableViewCell:(XPArrangeMicTableViewCell *)view inviteUser:(ArrangeMicUserModel *)userInfo { + NSString *position; + if (self.userInfo.type == ArrangeMicType_Dating) { + position = [self findLockBlindPosition:userInfo.groupType]; + }else { + position = [self findLockPosition]; + } + NSString * uid = userInfo.uid; + if (position.length > 0) { + if (self.userInfo.type == ArrangeMicType_Room_PK) { + NSMutableDictionary * dic = [NSMutableDictionary dictionary]; + [dic safeSetObject:position forKey:@"position"]; + [dic safeSetObject:uid forKey:@"uid"]; + [dic safeSetObject:@(userInfo.groupType) forKey:@"groupType"]; + [dic safeSetObject:userInfo.nick forKey:@"nick"]; + AttachmentModel * attachment = [[AttachmentModel alloc] init]; + attachment.first = CustomMessageType_Room_PK; + attachment.second = Custom_Message_Sub_Room_PK_Manager_Up_Mic; + attachment.data = @{uid:dic}; + NIMMessage *message = [[NIMMessage alloc]init]; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachment; + message.messageObject = object; + //构造会话 + NIMSession *session = [NIMSession session:self.userInfo.roomId type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; + } else { + NSMutableDictionary * dic = [NSMutableDictionary dictionary]; + [dic safeSetObject:@(position.integerValue) forKey:@"micPosition"]; + [dic safeSetObject:@(uid.integerValue) forKey:@"uid"]; + AttachmentModel *attachement = [[AttachmentModel alloc]init]; + attachement.first = CustomMessageType_Queue; + attachement.second = Custom_Message_Sub_Queue_Invite; + attachement.data = dic; + + NIMMessage *message = [[NIMMessage alloc]init]; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachement; + message.messageObject = object; + //构造会话 + NIMSession *session = [NIMSession session:self.userInfo.roomId type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; + [self dismissViewControllerAnimated:YES completion:nil]; + } + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [self headerRefresh]; + }); + } else { + [self showErrorToast:YMLocalizedString(@"XPArrangeMicViewController12")]; + } +} +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPArrangeMicTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPArrangeMicTableViewCell class])]; + if (cell == nil) { + cell = [[XPArrangeMicTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPArrangeMicTableViewCell class])]; + } + ArrangeMicUserModel * userInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + userInfo.arrangeMicType = self.userInfo.type; + cell.isManager = self.userInfo.isManager; + userInfo.number = indexPath.row + 1; + cell.userInfo = userInfo; + cell.delegate = self; + return cell; + } + + XPArrangeMicEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPArrangeMicEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPArrangeMicEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPArrangeMicEmptyTableViewCell class])]; + } + cell.emptyTitle = self.userInfo.isManager ? @"冷冷清清的无人排麦哦~\n分享房间邀请好友加入一起嗨" : @"立即报名,你就是排麦第一人啦!"; + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + return 65; + } + return 400; +} + +#pragma mark - Event Response +- (void)applyButtonAction:(UIButton *)sender { + if (self.userInfo.isManager) { + return;///上架 先不处理 + XPShareItem *cycle = [XPShareItem itemWitTag:XPShareItemTagMoments title:YMLocalizedString(@"XPArrangeMicViewController15") imageName:@"share_wechat_circle_normal" disableImageName:@"share_wechat_circle_disable"]; + XPShareItem *wechat = [XPShareItem itemWitTag:XPShareItemTagWeChat title:YMLocalizedString(@"XPArrangeMicViewController16") imageName:@"share_wechat_normal" disableImageName:@"share_wechat_disable"]; + XPShareItem *qq = [XPShareItem itemWitTag:XPShareItemTagQQ title:YMLocalizedString(@"XPArrangeMicViewController17") imageName:@"share_qq_normal" disableImageName:@"share_qq_disable"]; + XPShareItem *qqzone = [XPShareItem itemWitTag:XPShareItemTagQQZone title:YMLocalizedString(@"XPArrangeMicViewController18") imageName:@"share_qqzone_normal" disableImageName:@"share_qqzone_disable"]; + NSArray * items = @[wechat,cycle, qq, qqzone]; + XPShareInfoModel * shareInfo = [[XPShareInfoModel alloc] init]; + shareInfo.shareTitle = self.userInfo.roomTitle; + shareInfo.shareContent = self.userInfo.nick; + shareInfo.shareImageUrl = self.userInfo.roomAvatar; + shareInfo.type = ShareType_Room; + shareInfo.roomUid = self.userInfo.roomUid.integerValue; + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * urlString = [NSString stringWithFormat:@"%@/%@?shareUid=%@&uid=%@&room_name=%@&room_id=%@&room_avatar=%@&share_name=%@",API_HOST_URL,URLWithType(kShareRoomURL),uid,self.userInfo.roomUid,self.userInfo.nick,self.userInfo.roomId,self.userInfo.roomAvatar,self.userInfo.nick]; + shareInfo.shareUrl = urlString; + CGFloat margin = 15; + CGSize itemSize = CGSizeMake((KScreenWidth-2*margin)/4, 65); + XPShareView *shareView = [[XPShareView alloc] initWithItems:items itemSize:itemSize shareInfo:shareInfo]; + shareView.delegate = self; + [TTPopup popupView:shareView style:TTPopupStyleActionSheet]; + + } else { + if (self.arrangeMicInfo.myPos.integerValue > 0) { + [TTPopup alertWithMessage:@"取消报名后再次报名需要重新排麦哦!确认取消报名吗?" confirmHandler:^{ + if (self.userInfo.type == ArrangeMicType_Dating) { + __block GroupType grouptype = GroupType_default; + [self.arrangeMicInfo.queue enumerateObjectsUsingBlock:^(ArrangeMicUserModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.uid.integerValue == [AccountInfoStorage instance].getUid.integerValue) { + grouptype = obj.groupType; + *stop = YES; + } + }]; + [self.presenter cancelRoomArrangeMic:self.userInfo.roomUid groupType:grouptype]; + } else if(self.userInfo.type == ArrangeMicType_Room_PK) { + __block GroupType grouptype = GroupType_default; + [self.arrangeMicInfo.queue enumerateObjectsUsingBlock:^(ArrangeMicUserModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.uid.integerValue == [AccountInfoStorage instance].getUid.integerValue) { + grouptype = obj.groupType; + *stop = YES; + } + }]; + [self.presenter cancelRoomPKArrangeMic:self.userInfo.roomUid groupType:grouptype]; + } else { + [self.presenter cancelRoomArrangeMic:self.userInfo.roomUid groupType:0]; + } + } cancelHandler:^{ + }]; + } else { + if ([self isOnMicro:[AccountInfoStorage instance].getUid]) { + [self showErrorToast:YMLocalizedString(@"XPArrangeMicViewController20")]; + } else { + if (self.userInfo.type== ArrangeMicType_Room_PK) { + [self.presenter applyRoomPKArrangeMic:self.userInfo.roomUid groupType:0]; + } else { + [self.presenter applyRoomArrangeMic:self.userInfo.roomUid groupType:0]; + } + } + } + } +} + +- (void)disMissArrangeMicRecognizer { + [self dismissViewControllerAnimated:YES completion:nil]; +} + +- (void)maleButtonAction:(UIButton *)sender { + if ([self isOnMicro:[AccountInfoStorage instance].getUid]) { + [self showErrorToast:YMLocalizedString(@"XPArrangeMicViewController21")]; + } else { + if (self.userInfo.type == ArrangeMicType_Room_PK) { + [self.presenter applyRoomPKArrangeMic:self.userInfo.roomUid groupType:GroupType_Blue]; + } else { + [self.presenter applyRoomArrangeMic:self.userInfo.roomUid groupType:GroupType_Blue]; + } + + } +} + +- (void)femaleButtonAction:(UIButton *)sender { + if ([self isOnMicro:[AccountInfoStorage instance].getUid]) { + [self showErrorToast:YMLocalizedString(@"XPArrangeMicViewController22")]; + } else { + if (self.userInfo.type == ArrangeMicType_Room_PK) { + [self.presenter applyRoomPKArrangeMic:self.userInfo.roomUid groupType:GroupType_Red]; + } else{ + [self.presenter applyRoomArrangeMic:self.userInfo.roomUid groupType:GroupType_Red]; + } + } +} + +#pragma mark - Getters And Setters +- (void)setType:(ArrangeMicType)type { + +} + +- (UIView *)topView { + if (!_topView) { + _topView = [[UIView alloc] init]; + _topView.backgroundColor = [UIColor clearColor]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(disMissArrangeMicRecognizer)]; + [_topView addGestureRecognizer:tap]; + } + return _topView; +} +- (UIView *)contentView { + if (!_contentView) { + _contentView = [[UIView alloc] init]; + _contentView.backgroundColor = [UIColor whiteColor]; + CAShapeLayer * layer = [CAShapeLayer layer]; + UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, 450) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)]; + layer.path = path.CGPath; + _contentView.layer.mask = layer; + } + return _contentView; +} + +- (UIButton *)maleButton{ + if (!_maleButton) { + _maleButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_maleButton setBackgroundColor:UIColorFromRGB(0x518EFF)]; + [_maleButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_maleButton setTitle:YMLocalizedString(@"XPArrangeMicViewController23") forState:UIControlStateNormal]; + _maleButton.titleLabel.font = [UIFont systemFontOfSize:16]; + _maleButton.layer.masksToBounds = YES; + _maleButton.layer.cornerRadius = 38 / 2; + [_maleButton addTarget:self action:@selector(maleButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _maleButton; +} + +- (UIButton *)femaleButton{ + if (!_femaleButton) { + _femaleButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_femaleButton setBackgroundColor:UIColorFromRGB(0xFF6B77)]; + [_femaleButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_femaleButton setTitle:YMLocalizedString(@"XPArrangeMicViewController24") forState:UIControlStateNormal]; + _femaleButton.titleLabel.font = [UIFont systemFontOfSize:16]; + _femaleButton.layer.masksToBounds = YES; + _femaleButton.layer.cornerRadius = 38 / 2; + [_femaleButton addTarget:self action:@selector(femaleButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _femaleButton; +} + +- (UIButton *)applyButton{ + if (!_applyButton) { + _applyButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_applyButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_applyButton setTitle:YMLocalizedString(@"XPArrangeMicViewController25") forState:UIControlStateNormal]; + _applyButton.titleLabel.font = [UIFont systemFontOfSize:16]; + _applyButton.layer.masksToBounds = YES; + _applyButton.layer.cornerRadius = 38 / 2; + [_applyButton addTarget:self action:@selector(applyButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _applyButton; +} + +- (UIStackView *)applyStackView { + if (!_applyStackView) { + _applyStackView = [[UIStackView alloc] init]; + _applyStackView.axis = UILayoutConstraintAxisHorizontal; + _applyStackView.distribution = UIStackViewDistributionFillEqually; + _applyStackView.alignment = UIStackViewAlignmentFill; + _applyStackView.spacing = 20; + } + return _applyStackView; +} + +- (UILabel *)titleLabel{ + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + } + return _titleLabel; +} + +- (UIView *)lineView{ + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _lineView; +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.rowHeight = 65; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPArrangeMicTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPArrangeMicTableViewCell class])]; + [_tableView registerClass:[XPArrangeMicEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPArrangeMicEmptyTableViewCell class])]; + } + return _tableView; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/View/YUMIScheduleLoudspeakerRegardGovernancer.h b/YuMi/Modules/YMRoom/View/ArrangeMic/View/YUMIScheduleLoudspeakerRegardGovernancer.h deleted file mode 100644 index a1e47c9f..00000000 --- a/YuMi/Modules/YMRoom/View/ArrangeMic/View/YUMIScheduleLoudspeakerRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMArrangeMicViewController.h -// YUMI -// -// Created by YUMI on 2021/12/20. -// - -#import "MvpRegardGovernancer.h" -#import "YUMIScheduleLoudspeakerAbstractMatrix.h" -#import "ScheduleLoudspeakerMatrix.h" -NS_ASSUME_NONNULL_BEGIN -@interface YUMIScheduleLoudspeakerRegardGovernancer : MvpRegardGovernancer -- (instancetype)initAboutAbstract:(YUMIScheduleLoudspeakerAbstractMatrix *)info; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ArrangeMic/View/YUMIScheduleLoudspeakerRegardGovernancer.m b/YuMi/Modules/YMRoom/View/ArrangeMic/View/YUMIScheduleLoudspeakerRegardGovernancer.m deleted file mode 100644 index cc76d7b1..00000000 --- a/YuMi/Modules/YMRoom/View/ArrangeMic/View/YUMIScheduleLoudspeakerRegardGovernancer.m +++ /dev/null @@ -1,832 +0,0 @@ -// -// YMArrangeMicViewController.m -// YUMI -// -// Created by YUMI on 2021/12/20. -// - -#import "YUMIScheduleLoudspeakerRegardGovernancer.h" -#import -#import -#import -#import "MKJPopup.h" -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "AccountAbstractStorage.h" -#import "YUMIHtmlUrl.h" -#import "UIImage+Utils.h" -#import "NSArray+Safe.h" -#import "NSMutableDictionary+Saft.h" -#import "ScheduleLoudspeakerMatrix.h" -#import "AttachmentMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "YUMIScheduleLoudspeakerDispossessTabulationRegardElement.h" -#import "YUMIScheduleLoudspeakerTabulationRegardElement.h" -#import "YUMIParaticipationRegard.h" -#import "YUMIScheduleLoudspeakerExternalizer.h" -#import "FBCArrangeMicCeremony.h" - -@interface YUMIScheduleLoudspeakerRegardGovernancer () -@property (nonatomic,strong) UIView * apexRegard; -@property (nonatomic,strong) UIView * contentView; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UIView * burlywoodRegard; -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) UIStackView *applyHierarchyRegard; -@property (nonatomic,strong) UIButton *applyBtuton; -@property (nonatomic,strong) UIButton *maleBtuton; -@property (nonatomic,strong) UIButton *femaleBtuton; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,assign) int page; -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; -@property (nonatomic,strong) YUMIScheduleLoudspeakerAbstractMatrix *userInfo; -@property (nonatomic,strong) ScheduleLoudspeakerMatrix *arrangeLoudspeakerAbstract; -@property (nonatomic, strong) NSMutableDictionary *micQueue; -@end - -@implementation YUMIScheduleLoudspeakerRegardGovernancer - -- (void)dealloc { - [[NIMSDK sharedSDK].chatManager removeDelegate:self]; -} - -- (YUMIScheduleLoudspeakerExternalizer *)producePresimport { - return [[YUMIScheduleLoudspeakerExternalizer alloc] init]; -} - -- (instancetype)initAboutAbstract:(YUMIScheduleLoudspeakerAbstractMatrix *)info { - if (self = [super init]) { - self.modalPresentationStyle = UIModalPresentationOverFullScreen; - self.userInfo = info; - self.micQueue = info.micQueue; - } - return self; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [[NIMSDK sharedSDK].chatManager addDelegate:self]; - [self initIntelligencerGrantedTerminalerRrfresh]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self prohibitipositionDeficiencyTowardsoloudspeaker]; - [self intelligenceerRenovtowardseh]; - -} -#pragma mark - 下拉刷新 -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; -} - -#pragma mark - 刷新的fangfa -- (void)intelligenceerRenovtowardseh { - self.page = 1; - if (self.userInfo.type == ArrangeLoudspeakerGenre_Room_PK) { - [self.presimport acquireChamberCombatComponentSttowardsement:self.userInfo.roomUid page:self.page pageSize:20 state:0]; - } else { - [self.presimport acquireChamberScheduleLoudspeakerSttowardsement:self.userInfo.roomUid page:self.page pageSize:20 state:0]; - } - -} - -- (void)footerRenovtowardseh { - if (self.hasNoFurthaerAtoloudspeaker) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Arrange_Mic_View_Controller_0")]; - return; - } - self.page++; - if (self.userInfo.type == ArrangeLoudspeakerGenre_Room_PK) { - [self.presimport acquireChamberCombatComponentSttowardsement:self.userInfo.roomUid page:self.page pageSize:20 state:1]; - } else { - [self.presimport acquireChamberScheduleLoudspeakerSttowardsement:self.userInfo.roomUid page:self.page pageSize:20 state:1];; - } -} - - -#pragma mark - Private Method -- (void)prohibitipositionDeficiencyTowardsoloudspeaker { - if (self.userInfo.isManager) { - [self.applyBtuton setTitle:YMLocalizedString(@"YUMI_Arrange_Mic_View_Controller_1") forState:UIControlStateNormal]; - } else { - [self.applyBtuton setTitle:YMLocalizedString(@"YUMI_Arrange_Mic_View_Controller_2") forState:UIControlStateNormal]; - } - - if (self.userInfo.type == ArrangeLoudspeakerGenre_Dating) { - self.femaleBtuton.hidden = self.userInfo.isManager; - self.maleBtuton.hidden = self.userInfo.isManager; - self.applyBtuton.hidden = !self.userInfo.isManager; - } else if(self.userInfo.type == ArrangeLoudspeakerGenre_Room_PK) { - self.femaleBtuton.hidden = self.userInfo.isManager; - self.maleBtuton.hidden = self.userInfo.isManager; - self.applyBtuton.hidden = !self.userInfo.isManager; - [self.maleBtuton setTitle:YMLocalizedString(@"YUMI_Arrange_Mic_View_Controller_3") forState:UIControlStateNormal]; - [self.femaleBtuton setTitle:YMLocalizedString(@"YUMI_Arrange_Mic_View_Controller_4") forState:UIControlStateNormal]; - } else { - self.femaleBtuton.hidden = YES; - self.maleBtuton.hidden = YES; - self.applyBtuton.hidden = NO; - } -} - -- (void)initSubViews { - self.view.backgroundColor = [UIColor clearColor]; - [self.view addSubview:self.apexRegard]; - [self.view addSubview:self.contentView]; - - [self.contentView addSubview:self.titleLabel]; - [self.contentView addSubview:self.burlywoodRegard]; - [self.contentView addSubview:self.tableView]; - [self.contentView addSubview:self.applyHierarchyRegard]; - - [self.applyHierarchyRegard addArrangedSubview:self.maleBtuton]; - [self.applyHierarchyRegard addArrangedSubview:self.applyBtuton]; - [self.applyHierarchyRegard addArrangedSubview:self.femaleBtuton]; -} - -- (void)initChildLyRestrictions { - [self.apexRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.contentView.mas_top); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.height.mas_equalTo(450); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.contentView); - make.height.mas_equalTo(44); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.top.mas_equalTo(self.titleLabel.mas_bottom); - make.height.mas_equalTo(1); - }]; - - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.burlywoodRegard.mas_bottom); - }]; - - [self.applyHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view).inset(45); - make.height.mas_equalTo(38); - make.bottom.mas_equalTo(self.view).offset(-kSafeAreaBottomHeight - 20); - }]; - -} - -- (NSMutableAttributedString *)produceScheduleLoudspeakerNevChampionAbout:(NSString *)count{ - if (self.datasource.count == 0) { - if (self.userInfo.isManager) { - NSMutableAttributedString *attributString = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"YUMI_Arrange_Mic_View_Controller_5") attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16], NSForegroundColorAttributeName:[DJDKMIMOMColor mainEssayPrettify]}]; - return attributString; - }else{ - NSMutableAttributedString *attributString = [[NSMutableAttributedString alloc] initWithString:@"报名才能排麦哦~" attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16], NSForegroundColorAttributeName:[DJDKMIMOMColor mainEssayPrettify]}]; - return attributString; - } - }else{ - if (self.userInfo.isManager) { - NSString * str = [NSString stringWithFormat:@"当前排麦的人数:%@", count]; - - NSMutableAttributedString *attributString = [[NSMutableAttributedString alloc] initWithString:str attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16], NSForegroundColorAttributeName:[DJDKMIMOMColor mainEssayPrettify]}]; - [attributString addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor aplictowardsionUnderlinePrettify] range:[str rangeOfString:count]]; - return attributString; - }else{ - if ([count intValue] > 0) { - count = count.length > 0 ? count : @"0"; - NSString * str = [NSString stringWithFormat:@"我在队列中排列位置:%ld", [count integerValue]]; - NSMutableAttributedString *attributString = [[NSMutableAttributedString alloc] initWithString:str attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16], NSForegroundColorAttributeName:[DJDKMIMOMColor mainEssayPrettify]}]; - [attributString addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor aplictowardsionUnderlinePrettify] range:[str rangeOfString:count]]; - return attributString; - }else{ - NSMutableAttributedString *attributString = [[NSMutableAttributedString alloc] initWithString:@"报名才能排麦哦~" attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16], NSForegroundColorAttributeName:[DJDKMIMOMColor mainEssayPrettify]}]; - return attributString; - } - - } - } -} - -#pragma mark - 上麦操作 -- (NSString *)prohibiticoverySpokePolariztowardsion { - if (self.micQueue != nil && self.micQueue.allKeys.count > 0) { - NSArray *keys = [self.micQueue allKeys]; - NSArray *result = [keys sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { - return [obj1 compare:obj2]; - }]; - if (result.count > 0) { - for (NSString *key in result) { - MiecreoscoopeMHTueueMatrix *microQueue = [self.micQueue objectForKey:key]; - MiecreoscoopeStateMatrix * micstatus= microQueue.microState; - if (![key isEqualToString:@"-1"] && !microQueue.userInfo && micstatus.posState == MiecreoscoopePosDeclareGenre_Lock) { - return key; - break; - } - } - } - } - return nil; -} - -- (NSString *)prohibiticoverySpokeBlindPolariztowardsion:(GroupGenre)groupType { - if (self.micQueue != nil && self.micQueue.allKeys.count > 0) { - NSArray *keys = [self.micQueue allKeys]; - NSArray *result = [keys sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { - return [obj1 compare:obj2]; - }]; - if (result.count > 0) { - if (groupType == GroupGenre_Red) { - for (NSString *key in result) { - MiecreoscoopeMHTueueMatrix *microQueue = [self.micQueue objectForKey:key]; - ConsumerAbstractMatrix *userInfo = microQueue.userInfo; - MiecreoscoopeStateMatrix * micstatus= microQueue.microState; - if (![key isEqualToString:@"-1"] && - !userInfo && - micstatus.posState == MiecreoscoopePosDeclareGenre_Lock && - ([key isEqualToString:@"2"] || - [key isEqualToString:@"3"] || - [key isEqualToString:@"6"] || - [key isEqualToString:@"7"])) { - return key; - break; - } - } - }else { - for (NSString *key in result) { - MiecreoscoopeMHTueueMatrix *microQueue = [self.micQueue objectForKey:key]; - ConsumerAbstractMatrix *userInfo = microQueue.userInfo; - MiecreoscoopeStateMatrix * micstatus= microQueue.microState; - if (![key isEqualToString:@"-1"] && - !userInfo && - micstatus.posState == MiecreoscoopePosDeclareGenre_Lock && - ([key isEqualToString:@"0"] || - [key isEqualToString:@"1"] || - [key isEqualToString:@"4"] || - [key isEqualToString:@"5"])) { - return key; - break; - } - } - } - } - } - return nil; -} - -- (BOOL)isOnMicro:(NSString *)uid{ - NSArray *chatRoomMicSequences = [self.micQueue allValues] ; - if (chatRoomMicSequences != nil && chatRoomMicSequences.count > 0) { - for (int i = 0; i < chatRoomMicSequences.count; i ++) { - MiecreoscoopeMHTueueMatrix *microQueue = chatRoomMicSequences[i]; - if (microQueue.userInfo.uid == uid.integerValue) { - return YES; - } - } - } - return NO; -} - -#pragma mark - NIMChatManagerDelegate -- (void)onRecvMessages:(NSArray *)messages { - for (NIMMessage * message in messages) { - - if (message.session.sessionType != NIMSessionTypeChatroom) { - continue; - } - - if (![message.session.sessionId isEqualToString:self.userInfo.roomId]) { - continue; - } - if (message.messageType == NIMMessageTypeCustom) { - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentMatrix class]]) { - AttachmentMatrix * attachment = obj.attachment; - if (attachment.first == IndividualityCommunicationGenre_Arrange_Mic) { - switch (attachment.second) { - case Custom_Message_Sub_Room_PK_Empty: - case Custom_Message_Sub_Room_PK_Non_Empty: - case Custom_Message_Sub_Arrange_Mic_Non_Empty: - case Custom_Message_Sub_Arrange_Mic_Empty: - [self intelligenceerRenovtowardseh]; - break; - case Custom_Message_Sub_Room_PK_Mode_Close: - case Custom_Message_Sub_Arrange_Mic_Mode_Close: - [self dismissViewControllerAnimated:YES completion:nil]; - break; - - default: - break; - } - } else if(attachment.first == IndividualityCommunicationGenre_Queue && attachment.second == Custom_Message_Sub_Queue_Invite) { - ScheduleLoudspeakerConsumerMatrix * userInfo = [ScheduleLoudspeakerConsumerMatrix mtowardsrixAboutImpactbasket:attachment.data]; - if (userInfo.uid.integerValue == [AccountAbstractStorage instance].acquireCid.integerValue) { - [self intelligenceerRenovtowardseh]; - } - } else if(attachment.first == IndividualityCommunicationGenre_Room_PK && attachment.second == Custom_Message_Sub_Room_PK_Manager_Up_Mic) { - ScheduleLoudspeakerConsumerMatrix * userInfo = [ScheduleLoudspeakerConsumerMatrix mtowardsrixAboutImpactbasket:[attachment.data objectForKey:[AccountAbstractStorage instance].acquireCid]]; - if (userInfo.uid.integerValue == [AccountAbstractStorage instance].acquireCid.integerValue) { - [self intelligenceerRenovtowardseh]; - } - } - } - } else if(message.messageType == NIMMessageTypeNotification) { - [self shankNEMCCircularCommunictowardsion:message]; - } - } -} - -- (void)shankNEMCCircularCommunictowardsion:(NIMMessage *)message { - NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; - NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; - switch (content.eventType) { - case NIMChatroomEventTypeInfoUpdated: - { - NSDictionary *data = [content.notifyExt toJSONGroal]; - int type = [data[@"type"] intValue]; - NSArray* microStates; - switch (type) { - case 2: - microStates = @[[MiecreoscoopeStateMatrix mtowardsrixAboutJSON:data[@"micInfo"]]]; - break; - case 3: - microStates = [MiecreoscoopeStateMatrix mtowardsrixsAboutGarment:data[@"micInfo"]]; - break; - } - if (microStates && microStates.count > 0) { - for (MiecreoscoopeStateMatrix *microState in microStates) { - MiecreoscoopeMHTueueMatrix *micSequence = [self.micQueue objectForKey:[NSString stringWithFormat:@"%d", microState.position]]; - micSequence.microState = microState; - } - } - } - break; - - case NIMChatroomEventTypeQueueChange: - { - NSDictionary* data = (NSDictionary *)content.ext; - NSString* position = [data objectForKey:NIMChatroomEventInfoQueueChangeItemKey]; - ConsumerAbstractMatrix* userInfo = [ConsumerAbstractMatrix mtowardsrixAboutJSON:[data objectForKey:NIMChatroomEventInfoQueueChangeItemValueKey]]; - NSInteger changeType = [data[NIMChatroomEventInfoQueueChangeTypeKey] integerValue]; - - - for (MiecreoscoopeMHTueueMatrix *sequence in self.micQueue.allValues) { - if (userInfo.uid == sequence.userInfo.uid) { - sequence.userInfo = nil; - } - } - - if (changeType == 1) { - MiecreoscoopeMHTueueMatrix *sequence = [self.micQueue objectForKey:position]; - sequence.userInfo = userInfo; - } - } - break; - case NIMChatroomEventTypeExit: - case NIMChatroomEventTypeKicked: - { - for (NIMChatroomNotificationMember *member in content.targets) { - for (MiecreoscoopeMHTueueMatrix *sequence in self.micQueue.allValues) { - if (member.userId.integerValue == sequence.userInfo.uid) { - sequence.userInfo = nil; - } - } - } - } - break; - default: - break; - } -} - -#pragma mark - FBCArrangeMicCeremony -- (void)acquireChamberScheduleLoudspeakerSttowardsementAccomplishment:(ScheduleLoudspeakerMatrix *)listMatrix state:(int)state{ - self.arrangeLoudspeakerAbstract = listMatrix; - if (state == 0) { - [self.datasource removeAllObjects]; - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } - if (listMatrix.queue.count > 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - [self.datasource addObjectsFromArray:listMatrix.queue]; - } else { - self.hasNoFurthaerAtoloudspeaker = YES; - [self.tableView.mj_footer endRefreshingWithNoMoreData]; - } - [self.tableView reloadData]; - - if (self.userInfo.isManager) { - self.applyBtuton.hidden = listMatrix.queue.count > 0; - } else { - if (listMatrix.myPos.intValue > 0) { - self.applyBtuton.hidden = NO; - self.maleBtuton.hidden = YES; - self.femaleBtuton.hidden = YES; - [self.applyBtuton setTitle:YMLocalizedString(@"YUMI_Arrange_Mic_View_Controller_10") forState:UIControlStateNormal]; - } else { - if (self.userInfo.type == ArrangeLoudspeakerGenre_Dating) { - self.femaleBtuton.hidden = NO; - self.maleBtuton.hidden = NO; - self.applyBtuton.hidden = YES; - } else { - self.femaleBtuton.hidden = YES; - self.maleBtuton.hidden = YES; - self.applyBtuton.hidden = NO; - } - } - } - self.titleLabel.attributedText = [self produceScheduleLoudspeakerNevChampionAbout:listMatrix.count]; - self.titleLabel.textAlignment = NSTextAlignmentCenter; -} - -- (void)acquireChamberScheduleLoudspeakerSttowardsementFlunk:(NSString *)msg state:(int)state { - if (state == 0) { - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_header endRefreshing]; - } -} - -- (void)demandScheduleLoudspeakerAccomplishment { - [self intelligenceerRenovtowardseh]; -} - -- (void)revoctowardsionScheduleLoudspeakerAccomplishment { - [self intelligenceerRenovtowardseh]; -} - -- (void)acquireChamberCombatComponentSttowardsementFlunk:(NSString *)msg state:(int)state { - if (state == 0) { - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_header endRefreshing]; - } -} - -- (void)acquireChamberCombatComponentSttowardsementAccomplishment:(ScheduleLoudspeakerMatrix *)listMatrix state:(int)state { - self.arrangeLoudspeakerAbstract = listMatrix; - if (state == 0) { - [self.datasource removeAllObjects]; - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } - if (listMatrix.queue.count > 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - [self.datasource addObjectsFromArray:listMatrix.queue]; - } else { - self.hasNoFurthaerAtoloudspeaker = YES; - [self.tableView.mj_footer endRefreshingWithNoMoreData]; - } - [self.tableView reloadData]; - - if (self.userInfo.isManager) { - self.applyBtuton.hidden = listMatrix.queue.count > 0; - } else { - if (listMatrix.myPos.intValue > 0) { - self.applyBtuton.hidden = NO; - self.maleBtuton.hidden = YES; - self.femaleBtuton.hidden = YES; - [self.applyBtuton setTitle:YMLocalizedString(@"YUMI_Arrange_Mic_View_Controller_11") forState:UIControlStateNormal]; - } else { - self.femaleBtuton.hidden = NO; - self.maleBtuton.hidden = NO; - self.applyBtuton.hidden = YES; - } - } - self.titleLabel.attributedText = [self produceScheduleLoudspeakerNevChampionAbout:listMatrix.count]; - self.titleLabel.textAlignment = NSTextAlignmentCenter; -} - -#pragma mark - XCShareRegardRepresendtation -- (void)partowardsiciptowardsionRegard:(YUMIParaticipationRegard *)partowardsiciptowardsionRegard shareFail:(NSString *)message { - [MKJPopup dismiss]; - [self EvidenceMistakeToast:message]; -} - -- (void)partowardsiciptowardsionRegard:(YUMIParaticipationRegard *)partowardsiciptowardsionRegard didSuccess:(YUMIParaticipationAbstractMatrix *)shareInfo{ - [MKJPopup dismiss]; -} - -- (void)partowardsiciptowardsionRegardDidTicktackRevoctowardsion:(YUMIParaticipationRegard *)partowardsiciptowardsionRegard { - [MKJPopup dismiss]; -} - -#pragma mark - FBCArrangeMicTabulationViweElementRepresendtation -- (void)yUMIScheduleLoudspeakerTarbsultowardsionViweElement:(YUMIScheduleLoudspeakerTabulationRegardElement *)view inviteUser:(ScheduleLoudspeakerConsumerMatrix *)userInfo { - NSString *position; - if (self.userInfo.type == ArrangeLoudspeakerGenre_Dating) { - position = [self prohibiticoverySpokeBlindPolariztowardsion:userInfo.groupType]; - }else { - position = [self prohibiticoverySpokePolariztowardsion]; - } - NSString * uid = userInfo.uid; - if (position.length > 0) { - if (self.userInfo.type == ArrangeLoudspeakerGenre_Room_PK) { - NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic secureSetGroal:position forKey:@"position"]; - [dic secureSetGroal:uid forKey:@"uid"]; - [dic secureSetGroal:@(userInfo.groupType) forKey:@"groupType"]; - [dic secureSetGroal:userInfo.nick forKey:@"nick"]; - AttachmentMatrix * attachment = [[AttachmentMatrix alloc] init]; - attachment.first = IndividualityCommunicationGenre_Room_PK; - attachment.second = Custom_Message_Sub_Room_PK_Manager_Up_Mic; - attachment.data = @{uid:dic}; - NIMMessage *message = [[NIMMessage alloc]init]; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachment; - message.messageObject = object; - - NIMSession *session = [NIMSession session:self.userInfo.roomId type:NIMSessionTypeChatroom]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; - } else { - NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic secureSetGroal:@(position.integerValue) forKey:@"micPosition"]; - [dic secureSetGroal:@(uid.integerValue) forKey:@"uid"]; - AttachmentMatrix *attachement = [[AttachmentMatrix alloc]init]; - attachement.first = IndividualityCommunicationGenre_Queue; - attachement.second = Custom_Message_Sub_Queue_Invite; - attachement.data = dic; - - NIMMessage *message = [[NIMMessage alloc]init]; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachement; - message.messageObject = object; - - NIMSession *session = [NIMSession session:self.userInfo.roomId type:NIMSessionTypeChatroom]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; - [self dismissViewControllerAnimated:YES completion:nil]; - } - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [self intelligenceerRenovtowardseh]; - }); - } else { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Arrange_Mic_View_Controller_12")]; - } -} -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMIScheduleLoudspeakerTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIScheduleLoudspeakerTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIScheduleLoudspeakerTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIScheduleLoudspeakerTabulationRegardElement class])]; - } - ScheduleLoudspeakerConsumerMatrix * userInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - userInfo.arrangeMicType = self.userInfo.type; - cell.isManager = self.userInfo.isManager; - userInfo.number = indexPath.row + 1; - cell.userInfo = userInfo; - cell.delegate = self; - return cell; - } - - YUMIScheduleLoudspeakerDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIScheduleLoudspeakerDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIScheduleLoudspeakerDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIScheduleLoudspeakerDispossessTabulationRegardElement class])]; - } - cell.emptyTitle = self.userInfo.isManager ? @"冷冷清清的无人排麦哦~\n分享房间邀请好友加入一起嗨" : @"立即报名,你就是排麦第一人啦!"; - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - return 65; - } - return 400; -} - -#pragma mark - Event Response -- (void)demandBtutonPerformance:(UIButton *)sender { - if (self.userInfo.isManager) { - return; - YUMIParaticipationProvision *cycle = [YUMIParaticipationProvision itemWitCouple:XPShareItemTagMoments title:YMLocalizedString(@"YUMI_Arrange_Mic_View_Controller_15") imageName:@"share_wechat_circle_normal" disableImageName:@"share_wechat_circle_disable"]; - YUMIParaticipationProvision *wechat = [YUMIParaticipationProvision itemWitCouple:XPShareItemTagWeChat title:YMLocalizedString(@"YUMI_Arrange_Mic_View_Controller_16") imageName:@"share_wechat_normal" disableImageName:@"share_wechat_disable"]; - YUMIParaticipationProvision *qq = [YUMIParaticipationProvision itemWitCouple:XPShareItemTagQQ title:YMLocalizedString(@"YUMI_Arrange_Mic_View_Controller_17") imageName:@"share_qq_normal" disableImageName:@"share_qq_disable"]; - YUMIParaticipationProvision *qqzone = [YUMIParaticipationProvision itemWitCouple:XPShareItemTagQQZone title:YMLocalizedString(@"YUMI_Arrange_Mic_View_Controller_18") imageName:@"share_qqzone_normal" disableImageName:@"share_qqzone_disable"]; - NSArray * items = @[wechat,cycle, qq, qqzone]; - YUMIParaticipationAbstractMatrix * shareInfo = [[YUMIParaticipationAbstractMatrix alloc] init]; - shareInfo.shareTitle = self.userInfo.roomTitle; - shareInfo.shareContent = self.userInfo.nick; - shareInfo.shareImageUrl = self.userInfo.roomAvatar; - shareInfo.type = ShareGenre_Room; - shareInfo.roomUid = self.userInfo.roomUid.integerValue; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * urlString = [NSString stringWithFormat:@"%@/%@?shareUid=%@&uid=%@&room_name=%@&room_id=%@&room_avatar=%@&share_name=%@",API_HOST_URL,URLWithType(kShareRoomURL),uid,self.userInfo.roomUid,self.userInfo.nick,self.userInfo.roomId,self.userInfo.roomAvatar,self.userInfo.nick]; - shareInfo.shareUrl = urlString; - CGFloat margin = 15; - CGSize itemSize = CGSizeMake((KScreenWidth-2*margin)/4, 65); - YUMIParaticipationRegard *partowardsiciptowardsionRegard = [[YUMIParaticipationRegard alloc] initWithItems:items itemSize:itemSize shareInfo:shareInfo]; - partowardsiciptowardsionRegard.delegate = self; - [MKJPopup popupRegard:partowardsiciptowardsionRegard style:MKJPopupStyleActionSheet]; - - } else { - if (self.arrangeLoudspeakerAbstract.myPos.integerValue > 0) { - [MKJPopup precautiousAboutCommunictowardsion:@"取消报名后再次报名需要重新排麦哦!确认取消报名吗?" acknowledgementHandler:^{ - if (self.userInfo.type == ArrangeLoudspeakerGenre_Dating) { - __block GroupGenre grouptype = GroupGenre_default; - [self.arrangeLoudspeakerAbstract.queue enumerateObjectsUsingBlock:^(ScheduleLoudspeakerConsumerMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.uid.integerValue == [AccountAbstractStorage instance].acquireCid.integerValue) { - grouptype = obj.groupType; - *stop = YES; - } - }]; - [self.presimport revoctowardsionChamberScheduleLoudspeaker:self.userInfo.roomUid groupType:grouptype]; - } else if(self.userInfo.type == ArrangeLoudspeakerGenre_Room_PK) { - __block GroupGenre grouptype = GroupGenre_default; - [self.arrangeLoudspeakerAbstract.queue enumerateObjectsUsingBlock:^(ScheduleLoudspeakerConsumerMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.uid.integerValue == [AccountAbstractStorage instance].acquireCid.integerValue) { - grouptype = obj.groupType; - *stop = YES; - } - }]; - [self.presimport revoctowardsionChamberCombatScheduleLoudspeaker:self.userInfo.roomUid groupType:grouptype]; - } else { - [self.presimport revoctowardsionChamberScheduleLoudspeaker:self.userInfo.roomUid groupType:0]; - } - } cancelHandler:^{ - }]; - } else { - if ([self isOnMicro:[AccountAbstractStorage instance].acquireCid]) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Arrange_Mic_View_Controller_20")]; - } else { - if (self.userInfo.type== ArrangeLoudspeakerGenre_Room_PK) { - [self.presimport demandChamberCombatScheduleLoudspeaker:self.userInfo.roomUid groupType:0]; - } else { - [self.presimport demandChamberScheduleLoudspeaker:self.userInfo.roomUid groupType:0]; - } - } - } - } -} - -- (void)prohibitiaplictowardsionarScheduleLoudspeakerRecognition { - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)maleBtutonPerformance:(UIButton *)sender { - if ([self isOnMicro:[AccountAbstractStorage instance].acquireCid]) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Arrange_Mic_View_Controller_21")]; - } else { - if (self.userInfo.type == ArrangeLoudspeakerGenre_Room_PK) { - [self.presimport demandChamberCombatScheduleLoudspeaker:self.userInfo.roomUid groupType:GroupGenre_Blue]; - } else { - [self.presimport demandChamberScheduleLoudspeaker:self.userInfo.roomUid groupType:GroupGenre_Blue]; - } - - } -} - -- (void)femaleBtutonPerformance:(UIButton *)sender { - if ([self isOnMicro:[AccountAbstractStorage instance].acquireCid]) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Arrange_Mic_View_Controller_22")]; - } else { - if (self.userInfo.type == ArrangeLoudspeakerGenre_Room_PK) { - [self.presimport demandChamberCombatScheduleLoudspeaker:self.userInfo.roomUid groupType:GroupGenre_Red]; - } else{ - [self.presimport demandChamberScheduleLoudspeaker:self.userInfo.roomUid groupType:GroupGenre_Red]; - } - } -} - -#pragma mark - Getters And Setters -- (void)setType:(ArrangeLoudspeakerGenre)type { - -} - -- (UIView *)apexRegard { - if (!_apexRegard) { - _apexRegard = [[UIView alloc] init]; - _apexRegard.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(prohibitiaplictowardsionarScheduleLoudspeakerRecognition)]; - [_apexRegard addGestureRecognizer:tap]; - } - return _apexRegard; -} -- (UIView *)contentView { - if (!_contentView) { - _contentView = [[UIView alloc] init]; - _contentView.backgroundColor = [UIColor whiteColor]; - CAShapeLayer * layer = [CAShapeLayer layer]; - UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, 450) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)]; - layer.path = path.CGPath; - _contentView.layer.mask = layer; - } - return _contentView; -} - -- (UIButton *)maleBtuton{ - if (!_maleBtuton) { - _maleBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_maleBtuton setBackgroundColor:UIColorFromRGB(0x518EFF)]; - [_maleBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [_maleBtuton setTitle:YMLocalizedString(@"YUMI_Arrange_Mic_View_Controller_23") forState:UIControlStateNormal]; - _maleBtuton.titleLabel.font = [UIFont systemFontOfSize:16]; - _maleBtuton.layer.masksToBounds = YES; - _maleBtuton.layer.cornerRadius = 38 / 2; - [_maleBtuton addTarget:self action:@selector(maleBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _maleBtuton; -} - -- (UIButton *)femaleBtuton{ - if (!_femaleBtuton) { - _femaleBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_femaleBtuton setBackgroundColor:UIColorFromRGB(0xFF6B77)]; - [_femaleBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [_femaleBtuton setTitle:YMLocalizedString(@"YUMI_Arrange_Mic_View_Controller_24") forState:UIControlStateNormal]; - _femaleBtuton.titleLabel.font = [UIFont systemFontOfSize:16]; - _femaleBtuton.layer.masksToBounds = YES; - _femaleBtuton.layer.cornerRadius = 38 / 2; - [_femaleBtuton addTarget:self action:@selector(femaleBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _femaleBtuton; -} - -- (UIButton *)applyBtuton{ - if (!_applyBtuton) { - _applyBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_applyBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_applyBtuton setTitle:YMLocalizedString(@"YUMI_Arrange_Mic_View_Controller_25") forState:UIControlStateNormal]; - _applyBtuton.titleLabel.font = [UIFont systemFontOfSize:16]; - _applyBtuton.layer.masksToBounds = YES; - _applyBtuton.layer.cornerRadius = 38 / 2; - [_applyBtuton addTarget:self action:@selector(demandBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _applyBtuton; -} - -- (UIStackView *)applyHierarchyRegard { - if (!_applyHierarchyRegard) { - _applyHierarchyRegard = [[UIStackView alloc] init]; - _applyHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _applyHierarchyRegard.distribution = UIStackViewDistributionFillEqually; - _applyHierarchyRegard.alignment = UIStackViewAlignmentFill; - _applyHierarchyRegard.spacing = 20; - } - return _applyHierarchyRegard; -} - -- (UILabel *)titleLabel{ - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - } - return _titleLabel; -} - -- (UIView *)burlywoodRegard{ - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _burlywoodRegard; -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.rowHeight = 65; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIScheduleLoudspeakerTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIScheduleLoudspeakerTabulationRegardElement class])]; - [_tableView registerClass:[YUMIScheduleLoudspeakerDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIScheduleLoudspeakerDispossessTabulationRegardElement class])]; - } - return _tableView; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/BackMusic/Model/Manual+CoreDataClass.h b/YuMi/Modules/YMRoom/View/BackMusic/Model/Manual+CoreDataClass.h deleted file mode 100644 index 178e83a1..00000000 --- a/YuMi/Modules/YMRoom/View/BackMusic/Model/Manual+CoreDataClass.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// Manual+CoreDataClass.h -// -// -// Created by YUMI on 2022/5/9. -// -// - -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface Manual : NSManagedObject - -@end - -NS_ASSUME_NONNULL_END - -#import "Manual+CoreDataProperties.h" diff --git a/YuMi/Modules/YMRoom/View/BackMusic/Model/Manual+CoreDataClass.m b/YuMi/Modules/YMRoom/View/BackMusic/Model/Manual+CoreDataClass.m deleted file mode 100644 index 82beddce..00000000 --- a/YuMi/Modules/YMRoom/View/BackMusic/Model/Manual+CoreDataClass.m +++ /dev/null @@ -1,13 +0,0 @@ -// -// Manual+CoreDataClass.m -// -// -// Created by YUMI on 2022/5/9. -// -// - -#import "Manual+CoreDataClass.h" - -@implementation Manual - -@end diff --git a/YuMi/Modules/YMRoom/View/BackMusic/Model/Manual+CoreDataProperties.h b/YuMi/Modules/YMRoom/View/BackMusic/Model/Manual+CoreDataProperties.h deleted file mode 100644 index e2ecaf0b..00000000 --- a/YuMi/Modules/YMRoom/View/BackMusic/Model/Manual+CoreDataProperties.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// Manual+CoreDataProperties.h -// -// -// Created by YUMI on 2022/5/9. -// -// - -#import "Manual+CoreDataClass.h" - - -NS_ASSUME_NONNULL_BEGIN - -@interface Manual (CoreDataProperties) - -+ (NSFetchRequest *)fetchRequest NS_SWIFT_NAME(fetchRequest()); - -@property (nullable, nonatomic, copy) NSString *author; -@property (nullable, nonatomic, copy) NSString *filePath; -@property (nullable, nonatomic, copy) NSString *musicArtists; -@property (nullable, nonatomic, copy) NSString *musicId; -@property (nullable, nonatomic, copy) NSString *musicName; -@property (nullable, nonatomic, retain) NSData *songAlbum; -@property (nullable, nonatomic, copy) NSString *songName; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BackMusic/Model/Manual+CoreDataProperties.m b/YuMi/Modules/YMRoom/View/BackMusic/Model/Manual+CoreDataProperties.m deleted file mode 100644 index e3dfb841..00000000 --- a/YuMi/Modules/YMRoom/View/BackMusic/Model/Manual+CoreDataProperties.m +++ /dev/null @@ -1,25 +0,0 @@ -// -// Manual+CoreDataProperties.m -// -// -// Created by YUMI on 2022/5/9. -// -// - -#import "Manual+CoreDataProperties.h" - -@implementation Manual (CoreDataProperties) - -+ (NSFetchRequest *)fetchRequest { - return [NSFetchRequest fetchRequestWithEntityName:@"Manual"]; -} - -@dynamic author; -@dynamic filePath; -@dynamic musicArtists; -@dynamic musicId; -@dynamic musicName; -@dynamic songAlbum; -@dynamic songName; - -@end diff --git a/YuMi/Modules/YMRoom/View/BackMusic/Model/Music+CoreDataClass.h b/YuMi/Modules/YMRoom/View/BackMusic/Model/Music+CoreDataClass.h new file mode 100644 index 00000000..c34df06a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BackMusic/Model/Music+CoreDataClass.h @@ -0,0 +1,20 @@ +// +// Music+CoreDataClass.h +// +// +// Created by YUMI on 2022/5/9. +// +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface Music : NSManagedObject + +@end + +NS_ASSUME_NONNULL_END + +#import "Music+CoreDataProperties.h" diff --git a/YuMi/Modules/YMRoom/View/BackMusic/Model/Music+CoreDataClass.m b/YuMi/Modules/YMRoom/View/BackMusic/Model/Music+CoreDataClass.m new file mode 100644 index 00000000..c4e2b162 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BackMusic/Model/Music+CoreDataClass.m @@ -0,0 +1,13 @@ +// +// Music+CoreDataClass.m +// +// +// Created by YUMI on 2022/5/9. +// +// + +#import "Music+CoreDataClass.h" + +@implementation Music + +@end diff --git a/YuMi/Modules/YMRoom/View/BackMusic/Model/Music+CoreDataProperties.h b/YuMi/Modules/YMRoom/View/BackMusic/Model/Music+CoreDataProperties.h new file mode 100644 index 00000000..4e329325 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BackMusic/Model/Music+CoreDataProperties.h @@ -0,0 +1,28 @@ +// +// Music+CoreDataProperties.h +// +// +// Created by YUMI on 2022/5/9. +// +// + +#import "Music+CoreDataClass.h" + + +NS_ASSUME_NONNULL_BEGIN + +@interface Music (CoreDataProperties) + ++ (NSFetchRequest *)fetchRequest NS_SWIFT_NAME(fetchRequest()); + +@property (nullable, nonatomic, copy) NSString *author; +@property (nullable, nonatomic, copy) NSString *filePath; +@property (nullable, nonatomic, copy) NSString *musicArtists; +@property (nullable, nonatomic, copy) NSString *musicId; +@property (nullable, nonatomic, copy) NSString *musicName; +@property (nullable, nonatomic, retain) NSData *songAlbum; +@property (nullable, nonatomic, copy) NSString *songName; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BackMusic/Model/Music+CoreDataProperties.m b/YuMi/Modules/YMRoom/View/BackMusic/Model/Music+CoreDataProperties.m new file mode 100644 index 00000000..32fb1551 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BackMusic/Model/Music+CoreDataProperties.m @@ -0,0 +1,25 @@ +// +// Music+CoreDataProperties.m +// +// +// Created by YUMI on 2022/5/9. +// +// + +#import "Music+CoreDataProperties.h" + +@implementation Music (CoreDataProperties) + ++ (NSFetchRequest *)fetchRequest { + return [NSFetchRequest fetchRequestWithEntityName:@"Music"]; +} + +@dynamic author; +@dynamic filePath; +@dynamic musicArtists; +@dynamic musicId; +@dynamic musicName; +@dynamic songAlbum; +@dynamic songName; + +@end diff --git a/YuMi/Modules/YMRoom/View/BackMusic/Presenter/XPCoreDataManager.h b/YuMi/Modules/YMRoom/View/BackMusic/Presenter/XPCoreDataManager.h new file mode 100644 index 00000000..099438fb --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BackMusic/Presenter/XPCoreDataManager.h @@ -0,0 +1,33 @@ +// +// YMCoreDataManager.h +// YUMI +// +// Created by YUMI on 2022/5/9. +// + +#import +#import +NS_ASSUME_NONNULL_BEGIN + +@interface XPCoreDataManager : NSObject ++(XPCoreDataManager *)shareInstance; +/** + 管理上下文 + */ +@property(nonatomic,strong)NSManagedObjectContext *managedObjectContext; +/** + 模型对象 + */ +@property(nonatomic,strong)NSManagedObjectModel *managedObjectModel; +/** + 存储调度器 + */ +@property(nonatomic,strong)NSPersistentStoreCoordinator *persistentStoreCoordinator; + +/** + 保存操作 + */ +-(void)save; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BackMusic/Presenter/XPCoreDataManager.m b/YuMi/Modules/YMRoom/View/BackMusic/Presenter/XPCoreDataManager.m new file mode 100644 index 00000000..098a01ec --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BackMusic/Presenter/XPCoreDataManager.m @@ -0,0 +1,78 @@ +// +// YMCoreDataManager.m +// YUMI +// +// Created by YUMI on 2022/5/9. +// + +#import "XPCoreDataManager.h" + +@implementation XPCoreDataManager +static XPCoreDataManager *manager = nil; ++(XPCoreDataManager *)shareInstance{ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + manager = [[XPCoreDataManager alloc]init]; + }); + return manager; +} + +//获取数据库的路径 +-(NSURL *)getDocumnetUrlpath{ + return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; +} + +-(NSManagedObjectContext *)managedObjectContext{ + if (!_managedObjectContext) { + /** + 参数:CoreData环境线程 + NSMainQueueConcurrencyType:主线程 储存无延迟 + NSPrivateQueueConcurrencyType:分支线程 存储有延迟 + */ + _managedObjectContext = [[NSManagedObjectContext alloc]initWithConcurrencyType:NSMainQueueConcurrencyType]; + //设置存储调度器 + _managedObjectContext.persistentStoreCoordinator = self.persistentStoreCoordinator; + } + return _managedObjectContext; +} + +-(NSManagedObjectModel *)managedObjectModel{ + if (!_managedObjectModel) { + /** + 初始化NSManagedObjectModel + 参数是:模型文件的路径 + 后缀不能是xcdatamodeld 只能是momd + _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"Teacher" withExtension:@"momd"]]; + + 参数是模型文件的bundle数组 如果是nil 自动获取所有bundle的模型文件 + */ + _managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil]; + } + return _managedObjectModel; +} + +-(NSPersistentStoreCoordinator *)persistentStoreCoordinator{ + if (!_persistentStoreCoordinator) { + /** + 参数:要存储的模型 + */ + _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc]initWithManagedObjectModel:self.managedObjectModel]; + + /** + 参数: + * type:一般使用数据库存储方式NSSQLiteStoreType + * configuration:配置信息 一般无需配置 + * URL:要保存的文件路径 + * options:参数信息 一般无需设置 + */ + NSURL *url = [[self getDocumnetUrlpath] URLByAppendingPathComponent:@"sqlit.db" isDirectory:true]; + [_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:url options:nil error:nil]; + } + return _persistentStoreCoordinator; +} + +-(void)save{ + [self.managedObjectContext save:nil]; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/BackMusic/Presenter/YUMICoreAtomicExecutive.h b/YuMi/Modules/YMRoom/View/BackMusic/Presenter/YUMICoreAtomicExecutive.h deleted file mode 100644 index 12153f07..00000000 --- a/YuMi/Modules/YMRoom/View/BackMusic/Presenter/YUMICoreAtomicExecutive.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YMCoreDataManager.h -// YUMI -// -// Created by YUMI on 2022/5/9. -// - -#import -#import -NS_ASSUME_NONNULL_BEGIN - -@interface YUMICoreAtomicExecutive : NSObject -+(YUMICoreAtomicExecutive *)partowardsiciptowardsionInstance; - -@property(nonatomic,strong)NSManagedObjectContext *managedObjectContext; - -@property(nonatomic,strong)NSManagedObjectModel *managedObjectModel; - -@property(nonatomic,strong)NSPersistentStoreCoordinator *persistentStoreCoordinator; - - --(void)save; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BackMusic/Presenter/YUMICoreAtomicExecutive.m b/YuMi/Modules/YMRoom/View/BackMusic/Presenter/YUMICoreAtomicExecutive.m deleted file mode 100644 index bbbd7460..00000000 --- a/YuMi/Modules/YMRoom/View/BackMusic/Presenter/YUMICoreAtomicExecutive.m +++ /dev/null @@ -1,58 +0,0 @@ -// -// YMCoreDataManager.m -// YUMI -// -// Created by YUMI on 2022/5/9. -// - -#import "YUMICoreAtomicExecutive.h" - -@implementation YUMICoreAtomicExecutive -static YUMICoreAtomicExecutive *manager = nil; -+(YUMICoreAtomicExecutive *)partowardsiciptowardsionInstance{ - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - manager = [[YUMICoreAtomicExecutive alloc]init]; - }); - return manager; -} - --(NSURL *)acquireDocumnetWeebsiteptowardsh{ - return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; -} - --(NSManagedObjectContext *)managedObjectContext{ - if (!_managedObjectContext) { - - _managedObjectContext = [[NSManagedObjectContext alloc]initWithConcurrencyType:NSMainQueueConcurrencyType]; - - _managedObjectContext.persistentStoreCoordinator = self.persistentStoreCoordinator; - } - return _managedObjectContext; -} - --(NSManagedObjectModel *)managedObjectModel{ - if (!_managedObjectModel) { - - _managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil]; - } - return _managedObjectModel; -} - --(NSPersistentStoreCoordinator *)persistentStoreCoordinator{ - if (!_persistentStoreCoordinator) { - - _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc]initWithManagedObjectModel:self.managedObjectModel]; - - - NSURL *url = [[self acquireDocumnetWeebsiteptowardsh] URLByAppendingPathComponent:@"sqlit.db" isDirectory:true]; - [_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:url options:nil error:nil]; - } - return _persistentStoreCoordinator; -} - --(void)save{ - [self.managedObjectContext save:nil]; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/Cell/XPRoomMusicLibraryEmptyTableViewCell.h b/YuMi/Modules/YMRoom/View/BackMusic/View/Cell/XPRoomMusicLibraryEmptyTableViewCell.h new file mode 100644 index 00000000..e3661ed0 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BackMusic/View/Cell/XPRoomMusicLibraryEmptyTableViewCell.h @@ -0,0 +1,22 @@ +// +// YMRoomMusicLibraryEmptyTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/5/9. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPRoomMusicLibraryEmptyTableViewCell; +@protocol XPRoomMusicLibraryEmptyTableViewCellDelegate + +- (void)xPRoomMusicLibraryEmptyTableViewCell:(XPRoomMusicLibraryEmptyTableViewCell *)cell didClickAdd:(UIButton *)sender; + +@end +@interface XPRoomMusicLibraryEmptyTableViewCell : UITableViewCell +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/Cell/XPRoomMusicLibraryEmptyTableViewCell.m b/YuMi/Modules/YMRoom/View/BackMusic/View/Cell/XPRoomMusicLibraryEmptyTableViewCell.m new file mode 100644 index 00000000..6e2fff18 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BackMusic/View/Cell/XPRoomMusicLibraryEmptyTableViewCell.m @@ -0,0 +1,99 @@ +// +// YMRoomMusicLibraryEmptyTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/5/9. +// + +#import "XPRoomMusicLibraryEmptyTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImageConstant.h" + +@interface XPRoomMusicLibraryEmptyTableViewCell () +@property (nonatomic,strong) UIImageView *emptyImageView; +@property (nonatomic,strong) UILabel *titleLabel; +///更错 +@property (nonatomic,strong) UIButton *addButton; +@end + +@implementation XPRoomMusicLibraryEmptyTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.emptyImageView]; + [self.contentView addSubview:self.titleLabel]; + [self.contentView addSubview:self.addButton]; +} + +- (void)initSubViewConstraints { + [self.emptyImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.contentView).offset(150); + make.centerX.mas_equalTo(self.contentView); + make.size.mas_equalTo(CGSizeMake(200, 200)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.emptyImageView.mas_bottom).offset(20); + make.left.right.mas_equalTo(self.contentView); + }]; + + [self.addButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(100, 30)); + make.centerX.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(20); + }]; +} +#pragma mark - Event Response +- (void)addButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomMusicLibraryEmptyTableViewCell:didClickAdd:)]) { + [self.delegate xPRoomMusicLibraryEmptyTableViewCell:self didClickAdd:sender]; + } +} + +#pragma mark - Getters And Setters +- (UIImageView *)emptyImageView { + if (!_emptyImageView) { + _emptyImageView = [[UIImageView alloc] init]; + _emptyImageView.userInteractionEnabled = YES; + _emptyImageView.image = [UIImageConstant defalutEmptyPlaceholder]; + _emptyImageView.layer.masksToBounds = YES; + _emptyImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _emptyImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPRoomMusicLibraryEmptyTableViewCell0"); + _titleLabel.font = [UIFont systemFontOfSize:16]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _titleLabel; +} + +- (UIButton *)addButton { + if (!_addButton) { + _addButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_addButton setTitle:YMLocalizedString(@"XPRoomMusicLibraryEmptyTableViewCell1") forState:UIControlStateNormal]; + [_addButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + _addButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_addButton addTarget:self action:@selector(addButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _addButton; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/Cell/XPRoomMusicLibraryTableViewCell.h b/YuMi/Modules/YMRoom/View/BackMusic/View/Cell/XPRoomMusicLibraryTableViewCell.h new file mode 100644 index 00000000..ca681138 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BackMusic/View/Cell/XPRoomMusicLibraryTableViewCell.h @@ -0,0 +1,19 @@ +// +// YMRoomMusicLibraryTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/5/9. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class Music; +@interface XPRoomMusicLibraryTableViewCell : UITableViewCell +///歌曲信息 +@property (nonatomic,strong) Music *musicInfo; +///是否是选中的 +@property (nonatomic,assign) BOOL isSelect; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/Cell/XPRoomMusicLibraryTableViewCell.m b/YuMi/Modules/YMRoom/View/BackMusic/View/Cell/XPRoomMusicLibraryTableViewCell.m new file mode 100644 index 00000000..165abef7 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BackMusic/View/Cell/XPRoomMusicLibraryTableViewCell.m @@ -0,0 +1,133 @@ +// +// YMRoomMusicLibraryTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/5/9. +// + +#import "XPRoomMusicLibraryTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "Music+CoreDataClass.h" +@interface XPRoomMusicLibraryTableViewCell () +///背景 +@property (nonatomic,strong) UIView * backView; +///歌曲的背景 +@property (nonatomic,strong) UIImageView *musicAlbumImageView; +///歌曲的名称 +@property (nonatomic,strong) UILabel * songNameLabel; +///歌曲的作者 +@property (nonatomic,strong) UILabel *authorLabel; +///分割线 +@property (nonatomic,strong) UIView * lineView; +@end + +@implementation XPRoomMusicLibraryTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.backView]; + + [self.backView addSubview:self.musicAlbumImageView]; + [self.backView addSubview:self.songNameLabel]; + [self.backView addSubview:self.authorLabel]; +} + +- (void)initSubViewConstraints { + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.contentView); + }]; + + [self.musicAlbumImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backView).offset(15); + make.centerY.mas_equalTo(self.backView); + make.size.mas_equalTo(CGSizeMake(45, 45)); + }]; + + [self.songNameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.musicAlbumImageView.mas_right).offset(10); + make.bottom.mas_equalTo(self.musicAlbumImageView.mas_centerY).offset(-3); + }]; + + [self.authorLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.songNameLabel); + make.top.mas_equalTo(self.musicAlbumImageView.mas_centerY).offset(3); + }]; +} +#pragma mark - Getters And Setters +- (void)setMusicInfo:(Music *)musicInfo { + _musicInfo = musicInfo; + if (_musicInfo) { + self.musicAlbumImageView.image = [UIImage imageWithData:_musicInfo.songAlbum]; + self.songNameLabel.text = _musicInfo.songName; + self.authorLabel.text = _musicInfo.author; + } +} + +- (void)setIsSelect:(BOOL)isSelect { + _isSelect = isSelect; + if (_isSelect) { + self.songNameLabel.textColor = [DJDKMIMOMColor appMainColor]; + self.authorLabel.textColor = [DJDKMIMOMColor appMainColor]; + } else { + self.songNameLabel.textColor = [DJDKMIMOMColor mainTextColor]; + self.authorLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } +} + +- (UIView *)backView { + if (!_backView) { + _backView = [[UIView alloc] init]; + _backView.backgroundColor = [UIColor clearColor]; + } + return _backView; +} + +- (UIImageView *)musicAlbumImageView { + if (!_musicAlbumImageView) { + _musicAlbumImageView = [[UIImageView alloc] init]; + _musicAlbumImageView.userInteractionEnabled = YES; + _musicAlbumImageView.layer.masksToBounds = YES; + _musicAlbumImageView.layer.cornerRadius = 8; + } + return _musicAlbumImageView; +} + +- (UILabel *)songNameLabel { + if (!_songNameLabel) { + _songNameLabel = [[UILabel alloc] init]; + _songNameLabel.font = [UIFont systemFontOfSize:15]; + _songNameLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _songNameLabel; +} + +- (UILabel *)authorLabel { + if (!_authorLabel) { + _authorLabel = [[UILabel alloc] init]; + _authorLabel.font = [UIFont systemFontOfSize:12]; + _authorLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _authorLabel; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _lineView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/Cell/YUMIChamberManualBibliothecaDispossessTabulationRegardElement.h b/YuMi/Modules/YMRoom/View/BackMusic/View/Cell/YUMIChamberManualBibliothecaDispossessTabulationRegardElement.h deleted file mode 100644 index c840f15a..00000000 --- a/YuMi/Modules/YMRoom/View/BackMusic/View/Cell/YUMIChamberManualBibliothecaDispossessTabulationRegardElement.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMRoomMusicLibraryEmptyTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/5/9. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIChamberManualBibliothecaDispossessTabulationRegardElement; -@protocol FBCChamberManualLibraryEmptyTabulationViweElementRepresendtation - -- (void)yUMIChamberManualLibraryDispossessTarbsultowardsionViweElement:(YUMIChamberManualBibliothecaDispossessTabulationRegardElement *)cell didClickAdd:(UIButton *)sender; - -@end -@interface YUMIChamberManualBibliothecaDispossessTabulationRegardElement : UITableViewCell -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/Cell/YUMIChamberManualBibliothecaDispossessTabulationRegardElement.m b/YuMi/Modules/YMRoom/View/BackMusic/View/Cell/YUMIChamberManualBibliothecaDispossessTabulationRegardElement.m deleted file mode 100644 index 30263b37..00000000 --- a/YuMi/Modules/YMRoom/View/BackMusic/View/Cell/YUMIChamberManualBibliothecaDispossessTabulationRegardElement.m +++ /dev/null @@ -1,96 +0,0 @@ -// -// YMRoomMusicLibraryEmptyTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/5/9. -// - -#import "YUMIChamberManualBibliothecaDispossessTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIIndicateConstant.h" - -@interface YUMIChamberManualBibliothecaDispossessTabulationRegardElement () -@property (nonatomic,strong) UIImageView *dispossessIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UIButton *accelerateBtuton; -@end - -@implementation YUMIChamberManualBibliothecaDispossessTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.dispossessIndicateRegard]; - [self.contentView addSubview:self.titleLabel]; - [self.contentView addSubview:self.accelerateBtuton]; -} - -- (void)initChildLyRestrictions { - [self.dispossessIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.contentView).offset(150); - make.centerX.mas_equalTo(self.contentView); - make.size.mas_equalTo(CGSizeMake(200, 200)); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.dispossessIndicateRegard.mas_bottom).offset(20); - make.left.right.mas_equalTo(self.contentView); - }]; - - [self.accelerateBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(100, 30)); - make.centerX.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(20); - }]; -} -#pragma mark - Event Response -- (void)accelertowardseBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberManualLibraryDispossessTarbsultowardsionViweElement:didClickAdd:)]) { - [self.delegate yUMIChamberManualLibraryDispossessTarbsultowardsionViweElement:self didClickAdd:sender]; - } -} - -#pragma mark - Getters And Setters -- (UIImageView *)dispossessIndicateRegard { - if (!_dispossessIndicateRegard) { - _dispossessIndicateRegard = [[UIImageView alloc] init]; - _dispossessIndicateRegard.userInteractionEnabled = YES; - _dispossessIndicateRegard.image = [UIIndicateConstant defalutDispossessDepapossessor]; - _dispossessIndicateRegard.layer.masksToBounds = YES; - _dispossessIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _dispossessIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Room_Music_Library_Empty_Table_View_Cell_0"); - _titleLabel.font = [UIFont systemFontOfSize:16]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _titleLabel; -} - -- (UIButton *)accelerateBtuton { - if (!_accelerateBtuton) { - _accelerateBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_accelerateBtuton setTitle:YMLocalizedString(@"YUMI_Room_Music_Library_Empty_Table_View_Cell_1") forState:UIControlStateNormal]; - [_accelerateBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateNormal]; - _accelerateBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_accelerateBtuton addTarget:self action:@selector(accelertowardseBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _accelerateBtuton; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/Cell/YUMIChamberManualBibliothecaTabulationRegardElement.h b/YuMi/Modules/YMRoom/View/BackMusic/View/Cell/YUMIChamberManualBibliothecaTabulationRegardElement.h deleted file mode 100644 index c13167d3..00000000 --- a/YuMi/Modules/YMRoom/View/BackMusic/View/Cell/YUMIChamberManualBibliothecaTabulationRegardElement.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMRoomMusicLibraryTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/5/9. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class Manual; -@interface YUMIChamberManualBibliothecaTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) Manual *manualAbstract; -@property (nonatomic,assign) BOOL isSelect; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/Cell/YUMIChamberManualBibliothecaTabulationRegardElement.m b/YuMi/Modules/YMRoom/View/BackMusic/View/Cell/YUMIChamberManualBibliothecaTabulationRegardElement.m deleted file mode 100644 index e3b67dd4..00000000 --- a/YuMi/Modules/YMRoom/View/BackMusic/View/Cell/YUMIChamberManualBibliothecaTabulationRegardElement.m +++ /dev/null @@ -1,126 +0,0 @@ -// -// YMRoomMusicLibraryTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/5/9. -// - -#import "YUMIChamberManualBibliothecaTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "Manual+CoreDataClass.h" -@interface YUMIChamberManualBibliothecaTabulationRegardElement () -@property (nonatomic,strong) UIView * encourageRegard; -@property (nonatomic,strong) UIImageView *manualAlbumIndicateRegard; -@property (nonatomic,strong) UILabel * songConstituteSequencignation; -@property (nonatomic,strong) UILabel *attestationorSequencignation; -@property (nonatomic,strong) UIView * burlywoodRegard; -@end - -@implementation YUMIChamberManualBibliothecaTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.encourageRegard]; - - [self.encourageRegard addSubview:self.manualAlbumIndicateRegard]; - [self.encourageRegard addSubview:self.songConstituteSequencignation]; - [self.encourageRegard addSubview:self.attestationorSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.contentView); - }]; - - [self.manualAlbumIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageRegard).offset(15); - make.centerY.mas_equalTo(self.encourageRegard); - make.size.mas_equalTo(CGSizeMake(45, 45)); - }]; - - [self.songConstituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.manualAlbumIndicateRegard.mas_right).offset(10); - make.bottom.mas_equalTo(self.manualAlbumIndicateRegard.mas_centerY).offset(-3); - }]; - - [self.attestationorSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.songConstituteSequencignation); - make.top.mas_equalTo(self.manualAlbumIndicateRegard.mas_centerY).offset(3); - }]; -} -#pragma mark - Getters And Setters -- (void)setManualAbstract:(Manual *)manualAbstract { - _manualAbstract = manualAbstract; - if (_manualAbstract) { - self.manualAlbumIndicateRegard.image = [UIImage imageWithData:_manualAbstract.songAlbum]; - self.songConstituteSequencignation.text = _manualAbstract.songName; - self.attestationorSequencignation.text = _manualAbstract.author; - } -} - -- (void)setIsSelect:(BOOL)isSelect { - _isSelect = isSelect; - if (_isSelect) { - self.songConstituteSequencignation.textColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - self.attestationorSequencignation.textColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - } else { - self.songConstituteSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - self.attestationorSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } -} - -- (UIView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIView alloc] init]; - _encourageRegard.backgroundColor = [UIColor clearColor]; - } - return _encourageRegard; -} - -- (UIImageView *)manualAlbumIndicateRegard { - if (!_manualAlbumIndicateRegard) { - _manualAlbumIndicateRegard = [[UIImageView alloc] init]; - _manualAlbumIndicateRegard.userInteractionEnabled = YES; - _manualAlbumIndicateRegard.layer.masksToBounds = YES; - _manualAlbumIndicateRegard.layer.cornerRadius = 8; - } - return _manualAlbumIndicateRegard; -} - -- (UILabel *)songConstituteSequencignation { - if (!_songConstituteSequencignation) { - _songConstituteSequencignation = [[UILabel alloc] init]; - _songConstituteSequencignation.font = [UIFont systemFontOfSize:15]; - _songConstituteSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _songConstituteSequencignation; -} - -- (UILabel *)attestationorSequencignation { - if (!_attestationorSequencignation) { - _attestationorSequencignation = [[UILabel alloc] init]; - _attestationorSequencignation.font = [UIFont systemFontOfSize:12]; - _attestationorSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _attestationorSequencignation; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _burlywoodRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/XPMusicLibraryPlayView.h b/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/XPMusicLibraryPlayView.h new file mode 100644 index 00000000..6802dc51 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/XPMusicLibraryPlayView.h @@ -0,0 +1,28 @@ +// +// YMMusicLibraryPlayView.h +// YUMI +// +// Created by YUMI on 2022/5/9. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class Music; +@class XPMusicLibraryPlayView; +@protocol XPMusicLibraryPlayViewDelegate +///音调的设置 +- (void)xPMusicLibraryPlayView:(XPMusicLibraryPlayView *)view didClickVoiceSetting:(UIButton *)sender; +///点击了播放按钮 +- (void)xPMusicLibraryPlayView:(XPMusicLibraryPlayView *)view didClickPlayButton:(UIButton *)sender; +@end +@interface XPMusicLibraryPlayView : UIView +///歌曲 +@property (nonatomic,strong, nullable) Music *music; +///是否正在播放 +@property (nonatomic,assign) BOOL isPlaying; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/XPMusicLibraryPlayView.m b/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/XPMusicLibraryPlayView.m new file mode 100644 index 00000000..1c2d67ce --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/XPMusicLibraryPlayView.m @@ -0,0 +1,122 @@ +// +// YMMusicLibraryPlayView.m +// YUMI +// +// Created by YUMI on 2022/5/9. +// + +#import "XPMusicLibraryPlayView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "RtcManager.h" +///Model +#import "Music+CoreDataClass.h" + +@interface XPMusicLibraryPlayView () +///显示播放按钮 +@property (nonatomic,strong) UIButton *playButton; +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///设置 +@property (nonatomic,strong) UIButton *settingButton; +@end + +@implementation XPMusicLibraryPlayView +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = UIColorRGBAlpha(0x000000, 0.2); + + [self addSubview:self.playButton]; + [self addSubview:self.titleLabel]; + [self addSubview:self.settingButton]; +} + +- (void)initSubViewConstraints { + [self.playButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(44, 44)); + make.centerY.mas_equalTo(self); + make.left.mas_equalTo(self).offset(15); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.playButton.mas_right).offset(5); + make.centerY.mas_equalTo(self.playButton); + }]; + + [self.settingButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(22, 22)); + make.centerY.mas_equalTo(self); + make.right.mas_equalTo(self).offset(-15); + }]; +} +#pragma mark - Event Response +- (void)playButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMusicLibraryPlayView:didClickPlayButton:)]) { + [self.delegate xPMusicLibraryPlayView:self didClickPlayButton:sender]; + } +} + +- (void)settingButtonAction:(UIButton *)sender { + sender.selected = !sender.selected; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMusicLibraryPlayView:didClickVoiceSetting:)]) { + [self.delegate xPMusicLibraryPlayView:self didClickVoiceSetting:sender]; + } +} + +#pragma mark - Getters And Setters +- (void)setMusic:(Music *)music { + _music = music; + if (_music) { + self.titleLabel.text = _music.musicName; + } else { + self.titleLabel.text = YMLocalizedString(@"XPMusicLibraryPlayView0"); + } +} + +- (void)setIsPlaying:(BOOL)isPlaying { + _isPlaying = isPlaying; + self.playButton.selected = _isPlaying; +} + +- (UIButton *)playButton { + if (!_playButton) { + _playButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_playButton setImage:[UIImage imageNamed:@"room_music_library_play"] forState:UIControlStateNormal]; + [_playButton setImage:[UIImage imageNamed:@"room_music_library_pause"] forState:UIControlStateSelected]; + [_playButton addTarget:self action:@selector(playButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _playButton; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:14]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _titleLabel.text = YMLocalizedString(@"XPMusicLibraryPlayView1"); + } + return _titleLabel; +} + +- (UIButton *)settingButton { + if (!_settingButton) { + _settingButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_settingButton setImage:[UIImage imageNamed:@"room_music_library_volum_setting"] forState:UIControlStateNormal]; + [_settingButton setImage:[UIImage imageNamed:@"room_music_library_volum_setting"] forState:UIControlStateSelected]; + [_settingButton addTarget:self action:@selector(settingButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _settingButton; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/XPRoomBackMusicPlayerView.h b/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/XPRoomBackMusicPlayerView.h new file mode 100644 index 00000000..c043690e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/XPRoomBackMusicPlayerView.h @@ -0,0 +1,30 @@ +// +// YMRoomBackMusicPlayerView.h +// YUMI +// +// Created by YUMI on 2022/5/9. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class Music, XPRoomBackMusicPlayerView; + +@protocol XPRoomBackMusicPlayerViewDelegate +///歌曲是否正在播放 +- (void)xPRoomBackMusicPlayerView:(XPRoomBackMusicPlayerView *)view musicPlaying:(BOOL)musicPlaying; + +@end + +@interface XPRoomBackMusicPlayerView : UIView +///是否正在播放 +@property (nonatomic,assign, readonly) BOOL isPlaying; +///正在播放的音乐 +@property (nonatomic,strong, readonly) Music *currentMusic; +///代理 +@property (nonatomic,weak) id delegate; +- (void)resetData; +- (void)configCurrentPlayingMusic:(Music *)music isPlaying:(BOOL)isPlaying; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/XPRoomBackMusicPlayerView.m b/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/XPRoomBackMusicPlayerView.m new file mode 100644 index 00000000..cc874cfd --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/XPRoomBackMusicPlayerView.m @@ -0,0 +1,416 @@ +// +// YMRoomBackMusicPlayerView.m +// YUMI +// +// Created by YUMI on 2022/5/9. +// + +#import "XPRoomBackMusicPlayerView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "XCCurrentVCStackManager.h" +#import "XPCoreDataManager.h" +#import "RtcManager.h" +#import "YUMIConstant.h" +#import "XNDJTDDLoadingTool.h" +#import "NSArray+Safe.h" +///Model +#import "Music+CoreDataClass.h" +///View +#import "XPRoomMusicLibraryViewController.h" + +UIKIT_EXTERN NSString * kRoomBackMusicAudioMixingVolumeKey; +UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey; +UIKIT_EXTERN NSString * kRoomBackMusicPlayMusicOrderKey; + +@interface XPRoomBackMusicPlayerView () + +///显示歌曲的名字 +@property (nonatomic,strong) UILabel *titleLabel; +///声音的logo +@property (nonatomic,strong) UIImageView *voiceImageView; +///调节声音 +@property (nonatomic,strong) UISlider *voiceSliderView; +///播放暂停 +@property (nonatomic,strong) UIButton *playButton; +///下一首 +@property (nonatomic,strong) UIButton *nextButton; +///播放顺序 +@property (nonatomic,strong) UIButton *playOrderButton; +///更多 +@property (nonatomic,strong) UIButton *moreButton; +///是否正在播放 +@property (nonatomic,assign) BOOL isPlaying; +///正在播放的音乐 +@property (nonatomic,strong) Music *currentMusic; +///当前的下表 +@property (nonatomic,assign) NSInteger currentIndex; +///歌曲库 +@property (nonatomic,strong) XPRoomMusicLibraryViewController *musicLibraryVC; +///数据的请求 +@property (nonatomic,strong) NSFetchRequest *request; +@end + +@implementation XPRoomBackMusicPlayerView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Public Method +- (void)resetData { + self.isPlaying = NO; + self.currentMusic = nil; +} + +- (void)configCurrentPlayingMusic:(Music *)music isPlaying:(BOOL)isPlaying { + self.currentMusic = music; + self.isPlaying = isPlaying; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor colorWithWhite:0 alpha:0.8]; + self.layer.masksToBounds = YES; + self.layer.cornerRadius = 40.f; + [self addSubview:self.titleLabel]; + [self addSubview:self.voiceImageView]; + [self addSubview:self.voiceSliderView]; + [self addSubview:self.playButton]; + [self addSubview:self.playOrderButton]; + [self addSubview:self.nextButton]; + [self addSubview:self.moreButton]; +} + +- (void)initSubViewConstraints { + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self).inset(30); + make.top.mas_equalTo(self).offset(17); + }]; + + [self.voiceImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(12, 15)); + make.left.mas_equalTo(self.titleLabel); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(18); + }]; + + [self.voiceSliderView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.voiceImageView.mas_right).offset(5); + make.right.mas_equalTo(self.playButton.mas_left).offset(-10); + make.centerY.mas_equalTo(self.voiceImageView); + }]; + + [self.playButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(22, 22)); + make.centerY.mas_equalTo(self.voiceImageView); + make.right.mas_equalTo(self.nextButton.mas_left).offset(-15); + }]; + + [self.nextButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.centerY.mas_equalTo(self.playButton); + make.right.mas_equalTo(self.playOrderButton.mas_left).offset(-15); + }]; + + [self.playOrderButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.centerY.mas_equalTo(self.playButton);; + make.right.mas_equalTo(self.moreButton.mas_left).offset(-15); + }]; + + [self.moreButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.centerY.mas_equalTo(self.playButton); + make.right.mas_equalTo(self).offset(-30); + }]; +} + +- (void)playNextMusic:(NSInteger)index { + NSArray * array = [[XPCoreDataManager shareInstance].managedObjectContext executeFetchRequest:self.request error:nil]; + if (index >= array.count) { + index = 0; + if (!self.isPlaying && self.currentMusic) { + self.isPlaying = [[RtcManager instance] changePlayState:BackMusicPlayState_Resume]; + } else { + Music * music = [array safeObjectAtIndex1:index]; + [self playCurrentMusic:music index:index]; + } + } else { + Music * music = [array safeObjectAtIndex1:index]; + [self playCurrentMusic:music index:index]; + } +} + +- (void)playCurrentMusic:(Music *)music index:(NSInteger)index { + NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; + int musicVolum = (int)[defaults integerForKey:kRoomBackMusicAudioMixingVolumeKey]; + musicVolum = musicVolum > 0 ? musicVolum : 50; + + int captureVolum = (int)[defaults integerForKey:kRoomBackMusicCaptureVolumeKey]; + captureVolum = captureVolum > 0 ? captureVolum : 50; + + self.currentMusic = music; + self.currentIndex = index; + NSString * documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; + documentsPath = [NSString stringWithFormat:@"%@/music/",documentsPath]; + NSString * musicPath; + if (music.musicName) { + musicPath = [documentsPath stringByAppendingString:music.musicName]; + } else { + return; + } + self.isPlaying =[[RtcManager instance] playBackMusic:musicPath musicId:0 completion:^(NSString * filePath) { + NSInteger order = [[NSUserDefaults standardUserDefaults] integerForKey:kRoomBackMusicPlayMusicOrderKey]; + NSLog(@"当前的顺序%ld", order); + if (order == 0) { + NSInteger index = self.currentIndex + 1; + [self playNextMusic:index]; + } else { + NSInteger index= self.currentIndex; + [self playNextMusic:index]; + } + }]; + [[RtcManager instance] updateUserSound:captureVolum]; + [[RtcManager instance] updateMusicSound:musicVolum]; +} + +#pragma mark - Event Response +- (void)voiceSliderViewValueChange:(UISlider *)slider { + [[NSUserDefaults standardUserDefaults] setInteger:slider.value forKey:kRoomBackMusicAudioMixingVolumeKey]; + [[NSUserDefaults standardUserDefaults] synchronize]; + [[RtcManager instance] updateMusicSound:(int)slider.value]; +} + +- (void)moreButtonAction:(UIButton *)sender { + XPRoomMusicLibraryViewController * musicLibraryVC = [[XPRoomMusicLibraryViewController alloc] init]; + musicLibraryVC.isPlaying = self.isPlaying; + musicLibraryVC.currentMusic = self.currentMusic; + musicLibraryVC.delegate = self; + self.musicLibraryVC = musicLibraryVC; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:musicLibraryVC animated:YES]; +} + +- (void)playButtonAction:(UIButton *)sender { + NSArray * array = [[XPCoreDataManager shareInstance].managedObjectContext executeFetchRequest:self.request error:nil]; + if (array.count <=0) { + XPRoomMusicLibraryViewController * musicLibraryVC = [[XPRoomMusicLibraryViewController alloc] init]; + musicLibraryVC.delegate = self; + self.musicLibraryVC = musicLibraryVC; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:musicLibraryVC animated:YES]; + } else { + NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; + int musicVolum = (int)[defaults integerForKey:kRoomBackMusicAudioMixingVolumeKey]; + musicVolum = musicVolum > 0 ? musicVolum : 50; + + int captureVolum = (int)[defaults integerForKey:kRoomBackMusicCaptureVolumeKey]; + captureVolum = captureVolum > 0 ? captureVolum : 50; + + switch (sender.tag) { + case 1000: + { + if (self.isPlaying == NO && self.currentMusic == nil) { + NSArray * array = [[XPCoreDataManager shareInstance].managedObjectContext executeFetchRequest:self.request error:nil]; + Music * music = [array safeObjectAtIndex1:0]; + [self playCurrentMusic:music index:0]; + } else { + if (self.isPlaying) { + self.isPlaying = [[RtcManager instance] changePlayState:BackMusicPlayState_Pause]; + } else { + self.isPlaying = [[RtcManager instance] changePlayState:BackMusicPlayState_Resume]; + } + } + } + break; + case 1001: + { + NSArray * array = [[XPCoreDataManager shareInstance].managedObjectContext executeFetchRequest:self.request error:nil]; + if (self.isPlaying == NO && self.currentMusic == nil) { + Music * music = [array safeObjectAtIndex1:0]; + [self playCurrentMusic:music index:0]; + } else { + NSInteger index = self.currentIndex + 1; + [self playNextMusic:index]; + } + } + break; + case 1002: + + break; + + default: + break; + } + } +} + +- (void)playOrderButtonAction:(UIButton *)sender { + sender.selected = !sender.selected; + NSString * title = sender.selected ? @"单曲循环" : YMLocalizedString(@"XPRoomBackMusicPlayerView1"); + [XNDJTDDLoadingTool showSuccessWithMessage:title]; + NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; + NSInteger type = sender.selected ? 1 : 0; + [defaults setInteger:type forKey:kRoomBackMusicPlayMusicOrderKey]; + [defaults synchronize]; +} + +#pragma mark - XPRoomMusicLibraryViewControllerDelegate +- (void)xPRoomMusicLibraryViewController:(XPRoomMusicLibraryViewController *)view musicInfo:(Music *)musicInfo { + if (musicInfo) { + NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; + int musicVolum = (int)[defaults integerForKey:kRoomBackMusicAudioMixingVolumeKey]; + musicVolum = musicVolum > 0 ? musicVolum : 50; + + int captureVolum = (int)[defaults integerForKey:kRoomBackMusicCaptureVolumeKey]; + captureVolum = captureVolum > 0 ? captureVolum : 50; + NSArray * array = [[XPCoreDataManager shareInstance].managedObjectContext executeFetchRequest:self.request error:nil]; + __block NSInteger currentIndex = 0; + if (array.count > 0) { + [array enumerateObjectsUsingBlock:^(Music * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj.musicId isEqualToString:musicInfo.musicId]) { + currentIndex = idx; + } + }]; + + if (self.isPlaying == NO && self.currentMusic == nil) { + [self playCurrentMusic:musicInfo index:currentIndex]; + } else { + if (self.isPlaying) { + if ([self.currentMusic.musicId isEqualToString:musicInfo.musicId]) { + self.isPlaying = [[RtcManager instance] changePlayState:BackMusicPlayState_Pause]; + } else { + [self playCurrentMusic:musicInfo index:currentIndex]; + } + } else { + [self playCurrentMusic:musicInfo index:currentIndex]; + } + } + } + } else { + self.titleLabel.text = YMLocalizedString(@"XPRoomBackMusicPlayerView2"); + } +} + +- (void)xPRoomMusicLibraryViewController:(XPRoomMusicLibraryViewController *)view isPlaying:(BOOL)isPlaying { + self.isPlaying = isPlaying; +} + +- (void)xPRoomMusicLibraryViewController:(XPRoomMusicLibraryViewController *)view backMusicVolum:(NSInteger)backMusicVolum { + self.voiceSliderView.value = backMusicVolum; +} + +#pragma mark - Getters And Setters +- (void)setIsPlaying:(BOOL)isPlaying { + _isPlaying = isPlaying; + self.playButton.selected = _isPlaying; + self.musicLibraryVC.isPlaying = _isPlaying; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomBackMusicPlayerView:musicPlaying:)]) { + [self.delegate xPRoomBackMusicPlayerView:self musicPlaying:_isPlaying]; + } +} + +- (void)setCurrentMusic:(Music *)currentMusic { + _currentMusic = currentMusic; + if (_currentMusic) { + self.titleLabel.text = _currentMusic.songName; + } else { + self.titleLabel.text = YMLocalizedString(@"XPRoomBackMusicPlayerView3"); + } + self.musicLibraryVC.currentMusic = _currentMusic; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:13]; + _titleLabel.textColor = UIColor.whiteColor; + _titleLabel.text = YMLocalizedString(@"XPRoomBackMusicPlayerView4"); + } + return _titleLabel; +} + +- (UIImageView *)voiceImageView { + if (!_voiceImageView) { + _voiceImageView = [[UIImageView alloc] init]; + _voiceImageView.userInteractionEnabled = YES; + _voiceImageView.image = [UIImage imageNamed:@"room_music_small_player_voice"]; + } + return _voiceImageView; +} + +- (UISlider *)voiceSliderView { + if (!_voiceSliderView) { + _voiceSliderView = [[UISlider alloc]init]; + _voiceSliderView.minimumValue = 0; + _voiceSliderView.maximumValue = 100; + NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; + int captureVolum = (int)[defaults integerForKey:kRoomBackMusicAudioMixingVolumeKey]; + captureVolum = captureVolum > 0 ? captureVolum : 50; + _voiceSliderView.value = captureVolum; + _voiceSliderView.minimumTrackTintColor = [UIColor whiteColor]; + _voiceSliderView.maximumTrackTintColor = UIColorFromRGB(0x999999); + [_voiceSliderView setThumbImage:[UIImage imageNamed:@"room_music_small_player_white_dot"] forState:UIControlStateNormal]; + [_voiceSliderView addTarget:self action:@selector(voiceSliderViewValueChange:) forControlEvents:UIControlEventValueChanged]; + + } + return _voiceSliderView; +} + +- (UIButton *)playButton { + if (!_playButton) { + _playButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_playButton setImage:[UIImage imageNamed:@"room_music_small_player_play"] forState:UIControlStateNormal]; + [_playButton setImage:[UIImage imageNamed:@"room_music_small_player_pause"] forState:UIControlStateSelected]; + _playButton.tag = 1000; + [_playButton addTarget:self action:@selector(playButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _playButton; +} + +- (UIButton *)moreButton { + if (!_moreButton) { + _moreButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_moreButton setImage:[UIImage imageNamed:@"room_music_small_player_more"] forState:UIControlStateNormal]; + [_moreButton setImage:[UIImage imageNamed:@"room_music_small_player_more"] forState:UIControlStateSelected]; + [_moreButton addTarget:self action:@selector(moreButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _moreButton.transform = CGAffineTransformMakeRotation(-M_PI /2); + } + return _moreButton; +} + +- (UIButton *)nextButton { + if (!_nextButton) { + _nextButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_nextButton setImage:[UIImage imageNamed:@"room_music_small_player_next"] forState:UIControlStateNormal]; + [_nextButton setImage:[UIImage imageNamed:@"room_music_small_player_next"] forState:UIControlStateSelected]; + _nextButton.tag = 1001; + [_nextButton addTarget:self action:@selector(playButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _nextButton; +} + +- (UIButton *)playOrderButton { + if (!_playOrderButton) { + _playOrderButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_playOrderButton setImage:[UIImage imageNamed:@"room_music_small_player_order"] forState:UIControlStateNormal]; + [_playOrderButton setImage:[UIImage imageNamed:@"room_music_small_player_single"] forState:UIControlStateSelected]; + NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; + NSInteger type = [defaults integerForKey:kRoomBackMusicPlayMusicOrderKey]; + _playOrderButton.selected = type == 1; + [_playOrderButton addTarget:self action:@selector(playOrderButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _playOrderButton; +} + +- (NSFetchRequest *)request { + if (!_request) { + _request = [NSFetchRequest fetchRequestWithEntityName:@"Music"]; + } + return _request; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/XPRoomMusicVoiceSettingView.h b/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/XPRoomMusicVoiceSettingView.h new file mode 100644 index 00000000..3599661c --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/XPRoomMusicVoiceSettingView.h @@ -0,0 +1,35 @@ +// +// YMRoomMusicVoiceSettingView.h +// YUMI +// +// Created by YUMI on 2022/5/9. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, MusicVoiceSettingType) { + ///人声 + MusicVoiceSettingType_User, + ///背景音乐 + MusicVoiceSettingType_Music, +}; +@class XPRoomMusicVoiceSettingView; +@protocol XPRoomMusicVoiceSettingViewDelegate + +- (void)xPRoomMusicVoiceSettingView:(XPRoomMusicVoiceSettingView *)view didSliderValueChange:(UISlider *)slider; + +@end + +@interface XPRoomMusicVoiceSettingView : UIView + +///代理 +@property (nonatomic,weak) id delegate; +///背景音乐 +@property (nonatomic,assign) NSInteger musicVolum; +///采集的声音大小 +@property (nonatomic,assign) NSInteger captureVolum; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/XPRoomMusicVoiceSettingView.m b/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/XPRoomMusicVoiceSettingView.m new file mode 100644 index 00000000..0e6951e6 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/XPRoomMusicVoiceSettingView.m @@ -0,0 +1,224 @@ +// +// YMRoomMusicVoiceSettingView.m +// YUMI +// +// Created by YUMI on 2022/5/9. +// + +#import "XPRoomMusicVoiceSettingView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" + +@interface XPRoomMusicVoiceSettingView () +///最大的容器 +@property (nonatomic,strong) UIStackView *stackView; +///人声 +@property (nonatomic,strong) UIStackView *userStackView; +///人声 +@property (nonatomic,strong) UILabel *userTitleLabel; +///人生音量调节滑块 +@property (strong, nonatomic) UISlider *userVolumeSlider; +///% +@property (nonatomic,strong) UILabel *userVoiceLabel; +///音乐的 +@property (nonatomic,strong) UIStackView *musicStackView; +///人声 +@property (nonatomic,strong) UILabel *musicTitleLabel; +///人生音量调节滑块 +@property (strong, nonatomic) UISlider *musicVolumeSlider; +///音乐的% +@property (nonatomic,strong) UILabel *musicVoiceLabel; +@end + + +@implementation XPRoomMusicVoiceSettingView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = UIColorRGBAlpha(0x000000, 0.2); + [self addSubview:self.stackView]; + + [self.stackView addArrangedSubview:self.userStackView]; + [self.stackView addArrangedSubview:self.musicStackView]; + + [self.userStackView addArrangedSubview:self.userTitleLabel]; + [self.userStackView addArrangedSubview:self.userVolumeSlider]; + [self.userStackView addArrangedSubview:self.userVoiceLabel]; + + [self.musicStackView addArrangedSubview:self.musicTitleLabel]; + [self.musicStackView addArrangedSubview:self.musicVolumeSlider]; + [self.musicStackView addArrangedSubview:self.musicVoiceLabel]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(60); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self).inset(15); + make.top.bottom.mas_equalTo(self); + + }]; + + [self.userStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(35); + }]; + + [self.userTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(35); + }]; + + [self.userVoiceLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(35); + }]; + + [self.musicTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(35); + }]; + + [self.musicVoiceLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(35); + }]; +} +#pragma mark - Event Response +- (void)userVolumeSliderValueChange:(UISlider *)slider { + if (slider == self.userVolumeSlider) { + self.userVoiceLabel.text = [[NSString stringWithFormat:@"%ld",(NSInteger)slider.value] stringByAppendingString:@"%"]; + } else { + self.musicVoiceLabel.text = [[NSString stringWithFormat:@"%ld",(NSInteger)slider.value] stringByAppendingString:@"%"]; + } + + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomMusicVoiceSettingView:didSliderValueChange:)]) { + [self.delegate xPRoomMusicVoiceSettingView:self didSliderValueChange:slider]; + } +} + +#pragma mark - Getters And Setters +- (void)setMusicVolum:(NSInteger)musicVolum { + _musicVolum = musicVolum; + self.musicVolumeSlider.value = musicVolum; +} + +- (void)setCaptureVolum:(NSInteger)captureVolum { + _captureVolum = captureVolum; + self.userVolumeSlider.value = captureVolum; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 5; + } + return _stackView; +} + +- (UIStackView *)userStackView { + if (!_userStackView) { + _userStackView = [[UIStackView alloc] init]; + _userStackView.axis = UILayoutConstraintAxisHorizontal; + _userStackView.distribution = UIStackViewDistributionFill; + _userStackView.alignment = UIStackViewAlignmentCenter; + _userStackView.spacing = 5; + } + return _userStackView; +} + +- (UILabel *)userTitleLabel { + if (!_userTitleLabel) { + _userTitleLabel = [[UILabel alloc] init]; + _userTitleLabel.font = [UIFont systemFontOfSize:13]; + _userTitleLabel.textColor = UIColorFromRGB(0x999999); + _userTitleLabel.text = YMLocalizedString(@"XPRoomMusicVoiceSettingView0"); + } + return _userTitleLabel; +} + +- (UISlider *)userVolumeSlider { + if (!_userVolumeSlider) { + _userVolumeSlider = [[UISlider alloc]init]; + _userVolumeSlider.minimumValue = 0; + _userVolumeSlider.maximumValue = 100; + _userVolumeSlider.value = 50; + _userVolumeSlider.minimumTrackTintColor = [DJDKMIMOMColor appMainColor]; + _userVolumeSlider.maximumTrackTintColor = UIColor.whiteColor; + _userVolumeSlider.tag = MusicVoiceSettingType_User; + [_userVolumeSlider setThumbImage:[UIImage imageNamed:@"room_music_voice_setting_dot"] forState:UIControlStateNormal]; + [_userVolumeSlider addTarget:self action:@selector(userVolumeSliderValueChange:) forControlEvents:UIControlEventValueChanged]; + + } + return _userVolumeSlider; +} + +- (UILabel *)userVoiceLabel { + if (!_userVoiceLabel) { + _userVoiceLabel = [[UILabel alloc] init]; + _userVoiceLabel.font = [UIFont systemFontOfSize:13]; + _userVoiceLabel.textColor = UIColorFromRGB(0x999999); + _userVoiceLabel.text = @"50%"; + } + return _userVoiceLabel; +} + +- (UIStackView *)musicStackView { + if (!_musicStackView) { + _musicStackView = [[UIStackView alloc] init]; + _musicStackView.axis = UILayoutConstraintAxisHorizontal; + _musicStackView.distribution = UIStackViewDistributionFill; + _musicStackView.alignment = UIStackViewAlignmentFill; + _musicStackView.spacing = 5; + } + return _musicStackView; +} + +- (UILabel *)musicTitleLabel { + if (!_musicTitleLabel) { + _musicTitleLabel = [[UILabel alloc] init]; + _musicTitleLabel.font = [UIFont systemFontOfSize:13]; + _musicTitleLabel.textColor = UIColorFromRGB(0x999999); + _musicTitleLabel.text = YMLocalizedString(@"XPRoomMusicVoiceSettingView1"); + } + return _musicTitleLabel; +} + +- (UISlider *)musicVolumeSlider { + if (!_musicVolumeSlider) { + _musicVolumeSlider = [[UISlider alloc]init]; + _musicVolumeSlider.minimumValue = 0; + _musicVolumeSlider.maximumValue = 100; + _musicVolumeSlider.value = 50; + _musicVolumeSlider.minimumTrackTintColor = [DJDKMIMOMColor appMainColor]; + _musicVolumeSlider.maximumTrackTintColor = UIColor.whiteColor; + _musicVolumeSlider.tag = MusicVoiceSettingType_Music; + [_musicVolumeSlider setThumbImage:[UIImage imageNamed:@"room_music_voice_setting_dot"] forState:UIControlStateNormal]; + [_musicVolumeSlider addTarget:self action:@selector(userVolumeSliderValueChange:) forControlEvents:UIControlEventValueChanged]; + + } + return _musicVolumeSlider; +} + +- (UILabel *)musicVoiceLabel { + if (!_musicVoiceLabel) { + _musicVoiceLabel = [[UILabel alloc] init]; + _musicVoiceLabel.font = [UIFont systemFontOfSize:13]; + _musicVoiceLabel.textColor = UIColorFromRGB(0x999999); + _musicVoiceLabel.text = @"50%"; + } + return _musicVoiceLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/YUMIChamberBackManualDisporterRegard.h b/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/YUMIChamberBackManualDisporterRegard.h deleted file mode 100644 index f6f17009..00000000 --- a/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/YUMIChamberBackManualDisporterRegard.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YMRoomBackMusicPlayerView.h -// YUMI -// -// Created by YUMI on 2022/5/9. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class Manual, YUMIChamberBackManualDisporterRegard; - -@protocol FBCChamberBackManualPlayerRegardRepresendtation -- (void)yUMIChamberEncourageManualDisporterRegard:(YUMIChamberBackManualDisporterRegard *)view manualDisporting:(BOOL)manualDisporting; - -@end - -@interface YUMIChamberBackManualDisporterRegard : UIView -@property (nonatomic,assign, readonly) BOOL isPlaying; -@property (nonatomic,strong, readonly) Manual *universalManual; -@property (nonatomic,weak) id delegate; -- (void)resetData; -- (void)prohibitipositionUniversalDisportingManual:(Manual *)manual isPlaying:(BOOL)isPlaying; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/YUMIChamberBackManualDisporterRegard.m b/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/YUMIChamberBackManualDisporterRegard.m deleted file mode 100644 index 854126e5..00000000 --- a/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/YUMIChamberBackManualDisporterRegard.m +++ /dev/null @@ -1,400 +0,0 @@ -// -// YMRoomBackMusicPlayerView.m -// YUMI -// -// Created by YUMI on 2022/5/9. -// - -#import "YUMIChamberBackManualDisporterRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "XCCurrentVCStackExecutive.h" -#import "YUMICoreAtomicExecutive.h" -#import "RealtimackExecutive.h" -#import "YUMIConstant.h" -#import "XNDJTBWGLoadingTool.h" -#import "NSArray+Safe.h" -#import "Manual+CoreDataClass.h" -#import "YUMIChamberManualBibliothecaRegardGovernancer.h" - -UIKIT_EXTERN NSString * kRoomBackMusicAudioMixingVolumeKey; -UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey; -UIKIT_EXTERN NSString * kRoomBackMusicPlayMusicOrderKey; - -@interface YUMIChamberBackManualDisporterRegard () - -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UIImageView *reputationIndicateRegard; -@property (nonatomic,strong) UISlider *reputationSlideRegard; -@property (nonatomic,strong) UIButton *playButton; -@property (nonatomic,strong) UIButton *nextBtuton; -@property (nonatomic,strong) UIButton *disportOrderBtuton; -@property (nonatomic,strong) UIButton *furthaerBtuton; -@property (nonatomic,assign) BOOL isPlaying; -@property (nonatomic,strong) Manual *universalManual; -@property (nonatomic,assign) NSInteger currentIndex; -@property (nonatomic,strong) YUMIChamberManualBibliothecaRegardGovernancer *manualLibraryVewC; -@property (nonatomic,strong) NSFetchRequest *request; -@end - -@implementation YUMIChamberBackManualDisporterRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Public Method -- (void)resetData { - self.isPlaying = NO; - self.universalManual = nil; -} - -- (void)prohibitipositionUniversalDisportingManual:(Manual *)manual isPlaying:(BOOL)isPlaying { - self.universalManual = manual; - self.isPlaying = isPlaying; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor colorWithWhite:0 alpha:0.8]; - self.layer.masksToBounds = YES; - self.layer.cornerRadius = 40.f; - [self addSubview:self.titleLabel]; - [self addSubview:self.reputationIndicateRegard]; - [self addSubview:self.reputationSlideRegard]; - [self addSubview:self.playButton]; - [self addSubview:self.disportOrderBtuton]; - [self addSubview:self.nextBtuton]; - [self addSubview:self.furthaerBtuton]; -} - -- (void)initChildLyRestrictions { - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self).inset(30); - make.top.mas_equalTo(self).offset(17); - }]; - - [self.reputationIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(12, 15)); - make.left.mas_equalTo(self.titleLabel); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(18); - }]; - - [self.reputationSlideRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.reputationIndicateRegard.mas_right).offset(5); - make.right.mas_equalTo(self.playButton.mas_left).offset(-10); - make.centerY.mas_equalTo(self.reputationIndicateRegard); - }]; - - [self.playButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(22, 22)); - make.centerY.mas_equalTo(self.reputationIndicateRegard); - make.right.mas_equalTo(self.nextBtuton.mas_left).offset(-15); - }]; - - [self.nextBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.playButton); - make.right.mas_equalTo(self.disportOrderBtuton.mas_left).offset(-15); - }]; - - [self.disportOrderBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.playButton);; - make.right.mas_equalTo(self.furthaerBtuton.mas_left).offset(-15); - }]; - - [self.furthaerBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.playButton); - make.right.mas_equalTo(self).offset(-30); - }]; -} - -- (void)prohibitiportLtowardsterManual:(NSInteger)index { - NSArray * array = [[YUMICoreAtomicExecutive partowardsiciptowardsionInstance].managedObjectContext executeFetchRequest:self.request error:nil]; - if (index >= array.count) { - index = 0; - if (!self.isPlaying && self.universalManual) { - self.isPlaying = [[RealtimackExecutive instance] diversifictowardsionDisportDeclare:BackMusicDisportDeclare_Resume]; - } else { - Manual * manual = [array secureGroalTowardsIndictowardsrix1:index]; - [self prohibitiportUniversalManual:manual index:index]; - } - } else { - Manual * manual = [array secureGroalTowardsIndictowardsrix1:index]; - [self prohibitiportUniversalManual:manual index:index]; - } -} - -- (void)prohibitiportUniversalManual:(Manual *)manual index:(NSInteger)index { - NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; - int manualQuantm = (int)[defaults integerForKey:kRoomBackMusicAudioMixingVolumeKey]; - manualQuantm = manualQuantm > 0 ? manualQuantm : 50; - - int captureQuantm = (int)[defaults integerForKey:kRoomBackMusicCaptureVolumeKey]; - captureQuantm = captureQuantm > 0 ? captureQuantm : 50; - - self.universalManual = manual; - self.currentIndex = index; - NSString * documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; - documentsPath = [NSString stringWithFormat:@"%@/music/",documentsPath]; - NSString * musicPath; - if (manual.musicName) { - musicPath = [documentsPath stringByAppendingString:manual.musicName]; - } else { - return; - } - self.isPlaying =[[RealtimackExecutive instance] prohibitiportEncourageManual:musicPath musicId:0 completion:^(NSString * filePath) { - NSInteger order = [[NSUserDefaults standardUserDefaults] integerForKey:kRoomBackMusicPlayMusicOrderKey]; - NSLog(@"当前的顺序%ld", order); - if (order == 0) { - NSInteger index = self.currentIndex + 1; - [self prohibitiportLtowardsterManual:index]; - } else { - NSInteger index= self.currentIndex; - [self prohibitiportLtowardsterManual:index]; - } - }]; - [[RealtimackExecutive instance] refurbishConsumerSound:captureQuantm]; - [[RealtimackExecutive instance] refurbishManualSound:manualQuantm]; -} - -#pragma mark - Event Response -- (void)ReputtowardsionSlideRegardBWSttessDiversifictowardsion:(UISlider *)slider { - [[NSUserDefaults standardUserDefaults] setInteger:slider.value forKey:kRoomBackMusicAudioMixingVolumeKey]; - [[NSUserDefaults standardUserDefaults] synchronize]; - [[RealtimackExecutive instance] refurbishManualSound:(int)slider.value]; -} - -- (void)furthaerBtutonPerformance:(UIButton *)sender { - YUMIChamberManualBibliothecaRegardGovernancer * manualLibraryVewC = [[YUMIChamberManualBibliothecaRegardGovernancer alloc] init]; - manualLibraryVewC.isPlaying = self.isPlaying; - manualLibraryVewC.universalManual = self.universalManual; - manualLibraryVewC.delegate = self; - self.manualLibraryVewC = manualLibraryVewC; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:manualLibraryVewC animated:YES]; -} - -- (void)prohibitiportBtutonPerformance:(UIButton *)sender { - NSArray * array = [[YUMICoreAtomicExecutive partowardsiciptowardsionInstance].managedObjectContext executeFetchRequest:self.request error:nil]; - if (array.count <=0) { - YUMIChamberManualBibliothecaRegardGovernancer * manualLibraryVewC = [[YUMIChamberManualBibliothecaRegardGovernancer alloc] init]; - manualLibraryVewC.delegate = self; - self.manualLibraryVewC = manualLibraryVewC; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:manualLibraryVewC animated:YES]; - } else { - NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; - int manualQuantm = (int)[defaults integerForKey:kRoomBackMusicAudioMixingVolumeKey]; - manualQuantm = manualQuantm > 0 ? manualQuantm : 50; - - int captureQuantm = (int)[defaults integerForKey:kRoomBackMusicCaptureVolumeKey]; - captureQuantm = captureQuantm > 0 ? captureQuantm : 50; - - switch (sender.tag) { - case 1000: - { - if (self.isPlaying == NO && self.universalManual == nil) { - NSArray * array = [[YUMICoreAtomicExecutive partowardsiciptowardsionInstance].managedObjectContext executeFetchRequest:self.request error:nil]; - Manual * manual = [array secureGroalTowardsIndictowardsrix1:0]; - [self prohibitiportUniversalManual:manual index:0]; - } else { - if (self.isPlaying) { - self.isPlaying = [[RealtimackExecutive instance] diversifictowardsionDisportDeclare:BackMusicDisportDeclare_Pause]; - } else { - self.isPlaying = [[RealtimackExecutive instance] diversifictowardsionDisportDeclare:BackMusicDisportDeclare_Resume]; - } - } - } - break; - case 1001: - { - NSArray * array = [[YUMICoreAtomicExecutive partowardsiciptowardsionInstance].managedObjectContext executeFetchRequest:self.request error:nil]; - if (self.isPlaying == NO && self.universalManual == nil) { - Manual * manual = [array secureGroalTowardsIndictowardsrix1:0]; - [self prohibitiportUniversalManual:manual index:0]; - } else { - NSInteger index = self.currentIndex + 1; - [self prohibitiportLtowardsterManual:index]; - } - } - break; - case 1002: - - break; - - default: - break; - } - } -} - -- (void)prohibitiportTellingBtutonPerformance:(UIButton *)sender { - sender.selected = !sender.selected; - NSString * title = sender.selected ? @"单曲循环" : YMLocalizedString(@"YUMI_Room_Back_Music_Player_View_1"); - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:title]; - NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; - NSInteger type = sender.selected ? 1 : 0; - [defaults setInteger:type forKey:kRoomBackMusicPlayMusicOrderKey]; - [defaults synchronize]; -} - -#pragma mark - FBCChamberManualLibraryRegardGovernancerRepresendtation -- (void)yUMIChamberManualLibraryRegardGovernancer:(YUMIChamberManualBibliothecaRegardGovernancer *)view manualAbstract:(Manual *)manualAbstract { - if (manualAbstract) { - NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; - int manualQuantm = (int)[defaults integerForKey:kRoomBackMusicAudioMixingVolumeKey]; - manualQuantm = manualQuantm > 0 ? manualQuantm : 50; - - int captureQuantm = (int)[defaults integerForKey:kRoomBackMusicCaptureVolumeKey]; - captureQuantm = captureQuantm > 0 ? captureQuantm : 50; - NSArray * array = [[YUMICoreAtomicExecutive partowardsiciptowardsionInstance].managedObjectContext executeFetchRequest:self.request error:nil]; - __block NSInteger currentIndex = 0; - if (array.count > 0) { - [array enumerateObjectsUsingBlock:^(Manual * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj.musicId isEqualToString:manualAbstract.musicId]) { - currentIndex = idx; - } - }]; - - if (self.isPlaying == NO && self.universalManual == nil) { - [self prohibitiportUniversalManual:manualAbstract index:currentIndex]; - } else { - if (self.isPlaying) { - if ([self.universalManual.musicId isEqualToString:manualAbstract.musicId]) { - self.isPlaying = [[RealtimackExecutive instance] diversifictowardsionDisportDeclare:BackMusicDisportDeclare_Pause]; - } else { - [self prohibitiportUniversalManual:manualAbstract index:currentIndex]; - } - } else { - [self prohibitiportUniversalManual:manualAbstract index:currentIndex]; - } - } - } - } else { - self.titleLabel.text = YMLocalizedString(@"YUMI_Room_Back_Music_Player_View_2"); - } -} - -- (void)yUMIChamberManualLibraryRegardGovernancer:(YUMIChamberManualBibliothecaRegardGovernancer *)view isPlaying:(BOOL)isPlaying { - self.isPlaying = isPlaying; -} - -- (void)yUMIChamberManualLibraryRegardGovernancer:(YUMIChamberManualBibliothecaRegardGovernancer *)view backMusicVolum:(NSInteger)backMusicVolum { - self.reputationSlideRegard.value = backMusicVolum; -} - -#pragma mark - Getters And Setters -- (void)setIsPlaying:(BOOL)isPlaying { - _isPlaying = isPlaying; - self.playButton.selected = _isPlaying; - self.manualLibraryVewC.isPlaying = _isPlaying; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberEncourageManualDisporterRegard:manualDisporting:)]) { - [self.delegate yUMIChamberEncourageManualDisporterRegard:self manualDisporting:_isPlaying]; - } -} - -- (void)setUniversalManual:(Manual *)universalManual { - _universalManual = universalManual; - if (_universalManual) { - self.titleLabel.text = _universalManual.songName; - } else { - self.titleLabel.text = YMLocalizedString(@"YUMI_Room_Back_Music_Player_View_3"); - } - self.manualLibraryVewC.universalManual = _universalManual; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:13]; - _titleLabel.textColor = UIColor.whiteColor; - _titleLabel.text = YMLocalizedString(@"YUMI_Room_Back_Music_Player_View_4"); - } - return _titleLabel; -} - -- (UIImageView *)reputationIndicateRegard { - if (!_reputationIndicateRegard) { - _reputationIndicateRegard = [[UIImageView alloc] init]; - _reputationIndicateRegard.userInteractionEnabled = YES; - _reputationIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_musimage_small_player_voice"]; - } - return _reputationIndicateRegard; -} - -- (UISlider *)reputationSlideRegard { - if (!_reputationSlideRegard) { - _reputationSlideRegard = [[UISlider alloc]init]; - _reputationSlideRegard.minimumValue = 0; - _reputationSlideRegard.maximumValue = 100; - NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; - int captureQuantm = (int)[defaults integerForKey:kRoomBackMusicAudioMixingVolumeKey]; - captureQuantm = captureQuantm > 0 ? captureQuantm : 50; - _reputationSlideRegard.value = captureQuantm; - _reputationSlideRegard.minimumTrackTintColor = [UIColor whiteColor]; - _reputationSlideRegard.maximumTrackTintColor = UIColorFromRGB(0x999999); - [_reputationSlideRegard setThumbImage:[UIImage imageNamed:@"yumi_scope_musimage_small_player_white_dot"] forState:UIControlStateNormal]; - [_reputationSlideRegard addTarget:self action:@selector(ReputtowardsionSlideRegardBWSttessDiversifictowardsion:) forControlEvents:UIControlEventValueChanged]; - - } - return _reputationSlideRegard; -} - -- (UIButton *)playButton { - if (!_playButton) { - _playButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_playButton setImage:[UIImage imageNamed:@"yumi_scope_musimage_small_player_play"] forState:UIControlStateNormal]; - [_playButton setImage:[UIImage imageNamed:@"yumi_scope_musimage_small_player_pause"] forState:UIControlStateSelected]; - _playButton.tag = 1000; - [_playButton addTarget:self action:@selector(prohibitiportBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _playButton; -} - -- (UIButton *)furthaerBtuton { - if (!_furthaerBtuton) { - _furthaerBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_furthaerBtuton setImage:[UIImage imageNamed:@"yumi_scope_musimage_small_player_more"] forState:UIControlStateNormal]; - [_furthaerBtuton setImage:[UIImage imageNamed:@"yumi_scope_musimage_small_player_more"] forState:UIControlStateSelected]; - [_furthaerBtuton addTarget:self action:@selector(furthaerBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _furthaerBtuton.transform = CGAffineTransformMakeRotation(-M_PI /2); - } - return _furthaerBtuton; -} - -- (UIButton *)nextBtuton { - if (!_nextBtuton) { - _nextBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_nextBtuton setImage:[UIImage imageNamed:@"yumi_scope_musimage_small_player_next"] forState:UIControlStateNormal]; - [_nextBtuton setImage:[UIImage imageNamed:@"yumi_scope_musimage_small_player_next"] forState:UIControlStateSelected]; - _nextBtuton.tag = 1001; - [_nextBtuton addTarget:self action:@selector(prohibitiportBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _nextBtuton; -} - -- (UIButton *)disportOrderBtuton { - if (!_disportOrderBtuton) { - _disportOrderBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_disportOrderBtuton setImage:[UIImage imageNamed:@"yumi_scope_musimage_small_player_order"] forState:UIControlStateNormal]; - [_disportOrderBtuton setImage:[UIImage imageNamed:@"yumi_scope_musimage_small_player_single"] forState:UIControlStateSelected]; - NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; - NSInteger type = [defaults integerForKey:kRoomBackMusicPlayMusicOrderKey]; - _disportOrderBtuton.selected = type == 1; - [_disportOrderBtuton addTarget:self action:@selector(prohibitiportTellingBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _disportOrderBtuton; -} - -- (NSFetchRequest *)request { - if (!_request) { - _request = [NSFetchRequest fetchRequestWithEntityName:@"Manual"]; - } - return _request; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/YUMIChamberManualReputationInstanllingRegard.h b/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/YUMIChamberManualReputationInstanllingRegard.h deleted file mode 100644 index 4f7295bc..00000000 --- a/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/YUMIChamberManualReputationInstanllingRegard.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// YMRoomMusicVoiceSettingView.h -// YUMI -// -// Created by YUMI on 2022/5/9. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, MusicVoiceInstanllingGenre) { - - MusicVoiceInstanllingGenre_User, - - MusicVoiceInstanllingGenre_Music, -}; -@class YUMIChamberManualReputationInstanllingRegard; -@protocol FBCChamberManualVoiceInstanllingRegardRepresendtation - -- (void)yUMIChamberManualReputtowardsionInstanllingRegard:(YUMIChamberManualReputationInstanllingRegard *)view didSliderValueChange:(UISlider *)slider; - -@end - -@interface YUMIChamberManualReputationInstanllingRegard : UIView - -@property (nonatomic,weak) id delegate; -@property (nonatomic,assign) NSInteger manualQuantm; -@property (nonatomic,assign) NSInteger captureQuantm; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/YUMIChamberManualReputationInstanllingRegard.m b/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/YUMIChamberManualReputationInstanllingRegard.m deleted file mode 100644 index 7e04af07..00000000 --- a/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/YUMIChamberManualReputationInstanllingRegard.m +++ /dev/null @@ -1,213 +0,0 @@ -// -// YMRoomMusicVoiceSettingView.m -// YUMI -// -// Created by YUMI on 2022/5/9. -// - -#import "YUMIChamberManualReputationInstanllingRegard.h" -#import -#import "DJDKMIMOMColor.h" - -@interface YUMIChamberManualReputationInstanllingRegard () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UIStackView *consumerHierarchyRegard; -@property (nonatomic,strong) UILabel *consumerChampionSequencignation; -@property (strong, nonatomic) UISlider *consumerQuantumSlide; -@property (nonatomic,strong) UILabel *consumerReputationSequencignation; -@property (nonatomic,strong) UIStackView *manualHierarchyRegard; -@property (nonatomic,strong) UILabel *manualChampionSequencignation; -@property (strong, nonatomic) UISlider *manualQuantumSlide; -@property (nonatomic,strong) UILabel *manualReputationSequencignation; -@end - - -@implementation YUMIChamberManualReputationInstanllingRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = UIColorRGBAlpha(0x000000, 0.2); - [self addSubview:self.stackView]; - - [self.stackView addArrangedSubview:self.consumerHierarchyRegard]; - [self.stackView addArrangedSubview:self.manualHierarchyRegard]; - - [self.consumerHierarchyRegard addArrangedSubview:self.consumerChampionSequencignation]; - [self.consumerHierarchyRegard addArrangedSubview:self.consumerQuantumSlide]; - [self.consumerHierarchyRegard addArrangedSubview:self.consumerReputationSequencignation]; - - [self.manualHierarchyRegard addArrangedSubview:self.manualChampionSequencignation]; - [self.manualHierarchyRegard addArrangedSubview:self.manualQuantumSlide]; - [self.manualHierarchyRegard addArrangedSubview:self.manualReputationSequencignation]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(60); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self).inset(15); - make.top.bottom.mas_equalTo(self); - - }]; - - [self.consumerHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(35); - }]; - - [self.consumerChampionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(35); - }]; - - [self.consumerReputationSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(35); - }]; - - [self.manualChampionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(35); - }]; - - [self.manualReputationSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(35); - }]; -} -#pragma mark - Event Response -- (void)consumerVolumeSlideBWSttessDiversifictowardsion:(UISlider *)slider { - if (slider == self.consumerQuantumSlide) { - self.consumerReputationSequencignation.text = [[NSString stringWithFormat:@"%ld",(NSInteger)slider.value] stringByAppendingString:@"%"]; - } else { - self.manualReputationSequencignation.text = [[NSString stringWithFormat:@"%ld",(NSInteger)slider.value] stringByAppendingString:@"%"]; - } - - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberManualReputtowardsionInstanllingRegard:didSliderValueChange:)]) { - [self.delegate yUMIChamberManualReputtowardsionInstanllingRegard:self didSliderValueChange:slider]; - } -} - -#pragma mark - Getters And Setters -- (void)setManualQuantm:(NSInteger)manualQuantm { - _manualQuantm = manualQuantm; - self.manualQuantumSlide.value = manualQuantm; -} - -- (void)setCaptureQuantm:(NSInteger)captureQuantm { - _captureQuantm = captureQuantm; - self.consumerQuantumSlide.value = captureQuantm; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 5; - } - return _stackView; -} - -- (UIStackView *)consumerHierarchyRegard { - if (!_consumerHierarchyRegard) { - _consumerHierarchyRegard = [[UIStackView alloc] init]; - _consumerHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _consumerHierarchyRegard.distribution = UIStackViewDistributionFill; - _consumerHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _consumerHierarchyRegard.spacing = 5; - } - return _consumerHierarchyRegard; -} - -- (UILabel *)consumerChampionSequencignation { - if (!_consumerChampionSequencignation) { - _consumerChampionSequencignation = [[UILabel alloc] init]; - _consumerChampionSequencignation.font = [UIFont systemFontOfSize:13]; - _consumerChampionSequencignation.textColor = UIColorFromRGB(0x999999); - _consumerChampionSequencignation.text = YMLocalizedString(@"YUMI_Room_Music_Voice_Setting_View_0"); - } - return _consumerChampionSequencignation; -} - -- (UISlider *)consumerQuantumSlide { - if (!_consumerQuantumSlide) { - _consumerQuantumSlide = [[UISlider alloc]init]; - _consumerQuantumSlide.minimumValue = 0; - _consumerQuantumSlide.maximumValue = 100; - _consumerQuantumSlide.value = 50; - _consumerQuantumSlide.minimumTrackTintColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - _consumerQuantumSlide.maximumTrackTintColor = UIColor.whiteColor; - _consumerQuantumSlide.tag = MusicVoiceInstanllingGenre_User; - [_consumerQuantumSlide setThumbImage:[UIImage imageNamed:@"yumi_scope_musimage_voice_setting_dot"] forState:UIControlStateNormal]; - [_consumerQuantumSlide addTarget:self action:@selector(consumerVolumeSlideBWSttessDiversifictowardsion:) forControlEvents:UIControlEventValueChanged]; - - } - return _consumerQuantumSlide; -} - -- (UILabel *)consumerReputationSequencignation { - if (!_consumerReputationSequencignation) { - _consumerReputationSequencignation = [[UILabel alloc] init]; - _consumerReputationSequencignation.font = [UIFont systemFontOfSize:13]; - _consumerReputationSequencignation.textColor = UIColorFromRGB(0x999999); - _consumerReputationSequencignation.text = @"50%"; - } - return _consumerReputationSequencignation; -} - -- (UIStackView *)manualHierarchyRegard { - if (!_manualHierarchyRegard) { - _manualHierarchyRegard = [[UIStackView alloc] init]; - _manualHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _manualHierarchyRegard.distribution = UIStackViewDistributionFill; - _manualHierarchyRegard.alignment = UIStackViewAlignmentFill; - _manualHierarchyRegard.spacing = 5; - } - return _manualHierarchyRegard; -} - -- (UILabel *)manualChampionSequencignation { - if (!_manualChampionSequencignation) { - _manualChampionSequencignation = [[UILabel alloc] init]; - _manualChampionSequencignation.font = [UIFont systemFontOfSize:13]; - _manualChampionSequencignation.textColor = UIColorFromRGB(0x999999); - _manualChampionSequencignation.text = YMLocalizedString(@"YUMI_Room_Music_Voice_Setting_View_1"); - } - return _manualChampionSequencignation; -} - -- (UISlider *)manualQuantumSlide { - if (!_manualQuantumSlide) { - _manualQuantumSlide = [[UISlider alloc]init]; - _manualQuantumSlide.minimumValue = 0; - _manualQuantumSlide.maximumValue = 100; - _manualQuantumSlide.value = 50; - _manualQuantumSlide.minimumTrackTintColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - _manualQuantumSlide.maximumTrackTintColor = UIColor.whiteColor; - _manualQuantumSlide.tag = MusicVoiceInstanllingGenre_Music; - [_manualQuantumSlide setThumbImage:[UIImage imageNamed:@"yumi_scope_musimage_voice_setting_dot"] forState:UIControlStateNormal]; - [_manualQuantumSlide addTarget:self action:@selector(consumerVolumeSlideBWSttessDiversifictowardsion:) forControlEvents:UIControlEventValueChanged]; - - } - return _manualQuantumSlide; -} - -- (UILabel *)manualReputationSequencignation { - if (!_manualReputationSequencignation) { - _manualReputationSequencignation = [[UILabel alloc] init]; - _manualReputationSequencignation.font = [UIFont systemFontOfSize:13]; - _manualReputationSequencignation.textColor = UIColorFromRGB(0x999999); - _manualReputationSequencignation.text = @"50%"; - } - return _manualReputationSequencignation; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/YUMIManualBibliothecaDisportRegard.h b/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/YUMIManualBibliothecaDisportRegard.h deleted file mode 100644 index 4cd8bdbc..00000000 --- a/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/YUMIManualBibliothecaDisportRegard.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMMusicLibraryPlayView.h -// YUMI -// -// Created by YUMI on 2022/5/9. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class Manual; -@class YUMIManualBibliothecaDisportRegard; -@protocol FBCManualLibraryPlayRegardRepresendtation -- (void)yUMIManualLibraryDisportRegard:(YUMIManualBibliothecaDisportRegard *)view didClickVoiceSetting:(UIButton *)sender; -- (void)yUMIManualLibraryDisportRegard:(YUMIManualBibliothecaDisportRegard *)view didClickPlayButton:(UIButton *)sender; -@end -@interface YUMIManualBibliothecaDisportRegard : UIView -@property (nonatomic,strong, nullable) Manual *manual; -@property (nonatomic,assign) BOOL isPlaying; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/YUMIManualBibliothecaDisportRegard.m b/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/YUMIManualBibliothecaDisportRegard.m deleted file mode 100644 index 8abebc51..00000000 --- a/YuMi/Modules/YMRoom/View/BackMusic/View/SubViews/YUMIManualBibliothecaDisportRegard.m +++ /dev/null @@ -1,116 +0,0 @@ -// -// YMMusicLibraryPlayView.m -// YUMI -// -// Created by YUMI on 2022/5/9. -// - -#import "YUMIManualBibliothecaDisportRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "RealtimackExecutive.h" -#import "Manual+CoreDataClass.h" - -@interface YUMIManualBibliothecaDisportRegard () -@property (nonatomic,strong) UIButton *playButton; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UIButton *instanllingBtuton; -@end - -@implementation YUMIManualBibliothecaDisportRegard -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = UIColorRGBAlpha(0x000000, 0.2); - - [self addSubview:self.playButton]; - [self addSubview:self.titleLabel]; - [self addSubview:self.instanllingBtuton]; -} - -- (void)initChildLyRestrictions { - [self.playButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(44, 44)); - make.centerY.mas_equalTo(self); - make.left.mas_equalTo(self).offset(15); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.playButton.mas_right).offset(5); - make.centerY.mas_equalTo(self.playButton); - }]; - - [self.instanllingBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(22, 22)); - make.centerY.mas_equalTo(self); - make.right.mas_equalTo(self).offset(-15); - }]; -} -#pragma mark - Event Response -- (void)prohibitiportBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIManualLibraryDisportRegard:didClickPlayButton:)]) { - [self.delegate yUMIManualLibraryDisportRegard:self didClickPlayButton:sender]; - } -} - -- (void)settingBtutonPerformance:(UIButton *)sender { - sender.selected = !sender.selected; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIManualLibraryDisportRegard:didClickVoiceSetting:)]) { - [self.delegate yUMIManualLibraryDisportRegard:self didClickVoiceSetting:sender]; - } -} - -#pragma mark - Getters And Setters -- (void)setManual:(Manual *)manual { - _manual = manual; - if (_manual) { - self.titleLabel.text = _manual.musicName; - } else { - self.titleLabel.text = YMLocalizedString(@"YUMI_Music_Library_Play_View_0"); - } -} - -- (void)setIsPlaying:(BOOL)isPlaying { - _isPlaying = isPlaying; - self.playButton.selected = _isPlaying; -} - -- (UIButton *)playButton { - if (!_playButton) { - _playButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_playButton setImage:[UIImage imageNamed:@"yumi_scope_musimage_library_play"] forState:UIControlStateNormal]; - [_playButton setImage:[UIImage imageNamed:@"yumi_scope_musimage_library_pause"] forState:UIControlStateSelected]; - [_playButton addTarget:self action:@selector(prohibitiportBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _playButton; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:14]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleLabel.text = YMLocalizedString(@"YUMI_Music_Library_Play_View_1"); - } - return _titleLabel; -} - -- (UIButton *)instanllingBtuton { - if (!_instanllingBtuton) { - _instanllingBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_instanllingBtuton setImage:[UIImage imageNamed:@"yumi_scope_musimage_library_volum_setting"] forState:UIControlStateNormal]; - [_instanllingBtuton setImage:[UIImage imageNamed:@"yumi_scope_musimage_library_volum_setting"] forState:UIControlStateSelected]; - [_instanllingBtuton addTarget:self action:@selector(settingBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _instanllingBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/XPRoomMusicLibraryViewController.h b/YuMi/Modules/YMRoom/View/BackMusic/View/XPRoomMusicLibraryViewController.h new file mode 100644 index 00000000..c02e121a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BackMusic/View/XPRoomMusicLibraryViewController.h @@ -0,0 +1,31 @@ +// +// YMRoomMusicLibraryViewController.h +// YUMI +// +// Created by YUMI on 2022/5/9. +// + +#import "BaseViewController.h" +#import "RoomHostDelegate.h" +NS_ASSUME_NONNULL_BEGIN +@class Music, XPRoomMusicLibraryViewController; + +@protocol XPRoomMusicLibraryViewControllerDelegate +///当前选中的音乐 +- (void)xPRoomMusicLibraryViewController:(XPRoomMusicLibraryViewController *)view musicInfo:(Music *)musicInfo; +///是否开始播放 +- (void)xPRoomMusicLibraryViewController:(XPRoomMusicLibraryViewController *)view isPlaying:(BOOL)isPlaying; +///改变了背景音乐的声音大小 +- (void)xPRoomMusicLibraryViewController:(XPRoomMusicLibraryViewController *)view backMusicVolum:(NSInteger)backMusicVolum; +@end +@interface XPRoomMusicLibraryViewController : BaseViewController +///是否正在播放 +@property (nonatomic,assign) BOOL isPlaying; +///当前播放的音乐 +@property (nonatomic,strong) Music *currentMusic; +///代理 +@property (nonatomic,weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/XPRoomMusicLibraryViewController.m b/YuMi/Modules/YMRoom/View/BackMusic/View/XPRoomMusicLibraryViewController.m new file mode 100644 index 00000000..4f489d34 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BackMusic/View/XPRoomMusicLibraryViewController.m @@ -0,0 +1,357 @@ +// +// YMRoomMusicLibraryViewController.m +// YUMI +// +// Created by YUMI on 2022/5/9. +// + +#import "XPRoomMusicLibraryViewController.h" +///Third +#import +///Tool +#import "XPCoreDataManager.h" +#import "YUMIConstant.h" +#import "RtcManager.h" +#import "YUMIMacroUitls.h" +#import "XPCoreDataManager.h" +#import "DJDKMIMOMColor.h" +#import "NSArray+Safe.h" +///Model +#import "Music+CoreDataClass.h" +///View +#import "XPRoomMusicLibraryTableViewCell.h" +#import "XPRoomMusicLibraryEmptyTableViewCell.h" +#import "XPMusicLibraryPlayView.h" +#import "XPRoomMusicVoiceSettingView.h" +#import "XPRoomTransferMusicViewController.h" + +UIKIT_EXTERN NSString * kRoomBackMusicAudioMixingVolumeKey; +UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey; + +@interface XPRoomMusicLibraryViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///底部播放器 +@property (nonatomic,strong) XPMusicLibraryPlayView *playView; +///设置声音 +@property (nonatomic,strong) XPRoomMusicVoiceSettingView *voiceSettingView; +@property(nonatomic,strong)NSFetchedResultsController *fetchedResultController; +///当前选中播放的音乐 +@property (nonatomic,strong, nullable) Music *selectMusic; +///数据源 +@property (nonatomic,strong) NSArray *datasource; +///数据的请求 +@property (nonatomic,strong) NSFetchRequest *request; +///顶部视图 +@property (nonatomic,strong) UIView * headerView; +///歌曲数量的 +@property (nonatomic,strong) UILabel *numberMusicLabel; +@end + +@implementation XPRoomMusicLibraryViewController +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + NSArray *data = [[XPCoreDataManager shareInstance].managedObjectContext executeFetchRequest:self.request error:nil]; + self.datasource = data; + [self.tableView reloadData]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + self.title = YMLocalizedString(@"XPRoomMusicLibraryViewController0"); + [self initData]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initData { + self.playView.music = self.currentMusic; + self.playView.isPlaying = self.isPlaying; + + NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; + NSInteger musicVolum = [defaults integerForKey:kRoomBackMusicAudioMixingVolumeKey]; + musicVolum = musicVolum > 0 ? musicVolum : 50; + self.voiceSettingView.musicVolum = musicVolum; + + NSInteger captureVolum = [defaults integerForKey:kRoomBackMusicCaptureVolumeKey]; + captureVolum = captureVolum > 0 ? captureVolum : 50; + self.voiceSettingView.captureVolum = captureVolum; +} + +- (void)initSubViews { + [self addNavigationItemWithImageNames:@[@"room_music_library_nav_add"] isLeft:NO target:self action:@selector(addMusicAction:) tags:nil]; + [self.view addSubview:self.tableView]; + [self.view addSubview:self.playView]; + [self.view addSubview:self.voiceSettingView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.right.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.playView.mas_top); + }]; + + [self.playView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(55); + make.bottom.left.right.mas_equalTo(self.view); + }]; + + [self.voiceSettingView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.playView.mas_top); + make.left.right.mas_equalTo(self.view); + }]; +} +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPRoomMusicLibraryTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPRoomMusicLibraryTableViewCell class])]; + Music * musicInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + if (musicInfo.musicId == self.selectMusic.musicId) { + cell.isSelect = YES; + } else { + cell.isSelect = NO; + } + cell.musicInfo = musicInfo; + return cell; + } + + XPRoomMusicLibraryEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPRoomMusicLibraryEmptyTableViewCell class])]; + cell.delegate = self; + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return self.datasource.count > 0 ? 60 : (KScreenHeight - kNavigationHeight); +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + Music * musicInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + self.selectMusic = musicInfo; + self.playView.music = musicInfo; + [self.tableView reloadData]; + + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomMusicLibraryViewController:musicInfo:)]) { + [self.delegate xPRoomMusicLibraryViewController:self musicInfo:self.selectMusic]; + } + } + if (!self.voiceSettingView.hidden) { + self.voiceSettingView.hidden = YES; + } +} + +- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { + if (self.datasource.count > 0) { + return 20; + } + return 0.01f; +} + +- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { + if (self.datasource.count > 0) { + self.headerView.frame = CGRectMake(0, 0, KScreenWidth, 20); + if (!self.numberMusicLabel.superview) { + [self.headerView addSubview:self.numberMusicLabel]; + [self.numberMusicLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.headerView).offset(15); + make.centerY.mas_equalTo(self.headerView); + }]; + } + + self.numberMusicLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPRoomMusicLibraryViewController1"), self.datasource.count]; + return self.headerView; + } + return [UIView new]; +} + +- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + return YES; + } + return NO; +} + +- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath { + return YMLocalizedString(@"XPRoomMusicLibraryViewController2"); +} + +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { + if (editingStyle == UITableViewCellEditingStyleDelete) { + Music * music = [self.datasource safeObjectAtIndex1:indexPath.row]; + [self showLoading]; + if ([music.musicId isEqualToString:self.currentMusic.musicId]) { + self.playView.music = nil; + self.playView.isPlaying = NO; + self.selectMusic = nil; + self.isPlaying = NO; + [[RtcManager instance] changePlayState:BackMusicPlayState_Stop]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomMusicLibraryViewController:isPlaying:)]) { + [self.delegate xPRoomMusicLibraryViewController:self isPlaying:self.isPlaying]; + } + + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomMusicLibraryViewController:musicInfo:)]) { + [self.delegate xPRoomMusicLibraryViewController:self musicInfo:self.selectMusic]; + } + } + + if (music.musicName) { + NSString * documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; + documentsPath = [NSString stringWithFormat:@"%@/music/",documentsPath]; + NSString * musicPath = [documentsPath stringByAppendingString:music.musicName]; + NSFileManager *fileManager = [NSFileManager defaultManager]; + if ([fileManager fileExistsAtPath:musicPath]) { + NSError * error; + [fileManager removeItemAtPath:musicPath error:&error]; + } + } + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [[XPCoreDataManager shareInstance].managedObjectContext deleteObject:music]; + [[XPCoreDataManager shareInstance] save]; + NSArray *data = [[XPCoreDataManager shareInstance].managedObjectContext executeFetchRequest:self.request error:nil]; + self.datasource = data; + [self.tableView reloadData]; + [self hideHUD]; + }); + } +} + +#pragma mark - XPRoomMusicLibraryEmptyTableViewCellDelegate +- (void)xPRoomMusicLibraryEmptyTableViewCell:(XPRoomMusicLibraryEmptyTableViewCell *)cell didClickAdd:(UIButton *)sender { + XPRoomTransferMusicViewController * transferVC = [[XPRoomTransferMusicViewController alloc] init]; + [self.navigationController pushViewController:transferVC animated:YES]; +} +#pragma mark - XPMusicLibraryPlayViewDelegate +- (void)xPMusicLibraryPlayView:(XPMusicLibraryPlayView *)view didClickVoiceSetting:(UIButton *)sender { + self.voiceSettingView.hidden = !sender.selected; +} + +- (void)xPMusicLibraryPlayView:(XPMusicLibraryPlayView *)view didClickPlayButton:(UIButton *)sender { + if (self.currentMusic) { + sender.selected = !sender.selected; + if (self.isPlaying) { + [[RtcManager instance] changePlayState:BackMusicPlayState_Pause]; + sender.selected = NO; + self.isPlaying = NO; + } else { + [[RtcManager instance] changePlayState:BackMusicPlayState_Resume]; + sender.selected = YES; + self.isPlaying = YES; + } + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomMusicLibraryViewController:isPlaying:)]) { + [self.delegate xPRoomMusicLibraryViewController:self isPlaying:self.isPlaying]; + } + } +} + +#pragma mark - XPRoomMusicVoiceSettingViewDelegate +- (void)xPRoomMusicVoiceSettingView:(XPRoomMusicVoiceSettingView *)view didSliderValueChange:(UISlider *)slider { + switch (slider.tag) { + case MusicVoiceSettingType_User: + { + [[NSUserDefaults standardUserDefaults] setInteger:slider.value forKey:kRoomBackMusicCaptureVolumeKey]; + [[NSUserDefaults standardUserDefaults] synchronize]; + [[RtcManager instance] updateUserSound:(int)slider.value]; + } + break; + case MusicVoiceSettingType_Music: + { + [[NSUserDefaults standardUserDefaults] setInteger:slider.value forKey:kRoomBackMusicAudioMixingVolumeKey]; + [[NSUserDefaults standardUserDefaults] synchronize]; + [[RtcManager instance] updateMusicSound:(int)slider.value]; + + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomMusicLibraryViewController:backMusicVolum:)]) { + [self.delegate xPRoomMusicLibraryViewController:self backMusicVolum:slider.value]; + } + } + break; + default: + break; + } +} + +#pragma mark - Event Response +- (void)addMusicAction:(UIButton *)sender { + XPRoomTransferMusicViewController * transferVC = [[XPRoomTransferMusicViewController alloc] init]; + [self.navigationController pushViewController:transferVC animated:YES]; +} +#pragma mark - Getters And Setters +- (void)setIsPlaying:(BOOL)isPlaying { + _isPlaying = isPlaying; + self.playView.isPlaying = _isPlaying; +} + +- (void)setCurrentMusic:(Music *)currentMusic { + _currentMusic = currentMusic; + self.playView.music = _currentMusic; + self.selectMusic = _currentMusic; + [self.tableView reloadData]; +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPRoomMusicLibraryTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPRoomMusicLibraryTableViewCell class])]; + [_tableView registerClass:[XPRoomMusicLibraryEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPRoomMusicLibraryEmptyTableViewCell class])]; + } + return _tableView; +} + +- (XPMusicLibraryPlayView *)playView { + if (!_playView) { + _playView = [[XPMusicLibraryPlayView alloc] init]; + _playView.delegate = self; + } + return _playView; +} + +- (XPRoomMusicVoiceSettingView *)voiceSettingView { +if (!_voiceSettingView) { + _voiceSettingView = [[XPRoomMusicVoiceSettingView alloc] init]; + _voiceSettingView.delegate = self; + _voiceSettingView.hidden = YES; + } + return _voiceSettingView; +} + +- (NSFetchRequest *)request { + if (!_request) { + _request = [NSFetchRequest fetchRequestWithEntityName:@"Music"]; + } + return _request; +} + +- (UIView *)headerView { + if (!_headerView) { + _headerView = [[UIView alloc] init]; + _headerView.backgroundColor = [UIColor clearColor]; + } + return _headerView; +} + +- (UILabel *)numberMusicLabel { + if (!_numberMusicLabel) { + _numberMusicLabel = [[UILabel alloc] init]; + _numberMusicLabel.font = [UIFont systemFontOfSize:10]; + _numberMusicLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _numberMusicLabel; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/XPRoomTransferMusicViewController.h b/YuMi/Modules/YMRoom/View/BackMusic/View/XPRoomTransferMusicViewController.h new file mode 100644 index 00000000..a35c4ff1 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BackMusic/View/XPRoomTransferMusicViewController.h @@ -0,0 +1,16 @@ +// +// YMRoomTransferMusicViewController.h +// YUMI +// +// Created by YUMI on 2022/5/7. +// + +#import "BaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomTransferMusicViewController : BaseViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/XPRoomTransferMusicViewController.m b/YuMi/Modules/YMRoom/View/BackMusic/View/XPRoomTransferMusicViewController.m new file mode 100644 index 00000000..7d9a69ef --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BackMusic/View/XPRoomTransferMusicViewController.m @@ -0,0 +1,365 @@ +// +// YMRoomTransferMusicViewController.m +// YUMI +// +// Created by YUMI on 2022/5/7. +// + +#import "XPRoomTransferMusicViewController.h" +///Third +#import +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "UIImage+Utils.h" +#import "HTTPServer.h" +#import "MyHTTPConnection.h" +#import "SJXCSMIPHelper.h" +#import "XPCoreDataManager.h" +#import "GCDHelper.h" +#import "NSArray+Safe.h" +///Model +#import "Music+CoreDataClass.h" +@interface XPRoomTransferMusicViewController () +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///wifi +@property (nonatomic,strong) UIView * wifiView; +///显示wift的图标 +@property (nonatomic,strong) UIImageView *wifiImaegView; +///显示wift +@property (nonatomic,strong) UILabel *wifiLabel; +///显示ip +@property (nonatomic,strong) UILabel *ipLabel; +///📶 +@property (nonatomic,strong) UILabel *singleTypeLabel; +///电脑 +@property (nonatomic,strong) UIImageView *computerImageView; +///描述 +@property (nonatomic,strong) UILabel *descriptionLabel; +///歌曲的数量 +@property (nonatomic,strong) UIButton *musiceCountButton; +///保存 +@property (nonatomic,strong) UIButton *saveButton; +@property (nonatomic,strong) HTTPServer *httpServer; +@property (strong, nonatomic) NSString *ipAddress; +///歌曲的个数 +@property (nonatomic,assign) NSInteger numberSong; +///当前的歌曲 +@property (nonatomic,strong) Music * currentMusic; +@end + +@implementation XPRoomTransferMusicViewController +- (void)viewDidLoad { + [super viewDidLoad]; + [self connectHttpServer]; + [self monitorNet]; + [self initSubViews]; + [self initSubViewConstraints]; +} + + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPRoomTransferMusicViewController0"); + self.numberSong = 0; + [self.view addSubview:self.stackView]; + [self.stackView addArrangedSubview:self.wifiView]; + [self.stackView addArrangedSubview:self.ipLabel]; + [self.stackView addArrangedSubview:self.singleTypeLabel]; + [self.stackView addArrangedSubview:self.computerImageView]; + [self.stackView addArrangedSubview:self.descriptionLabel]; + [self.stackView addArrangedSubview:self.musiceCountButton]; + [self.stackView addArrangedSubview:self.saveButton]; + + [self.wifiView addSubview:self.wifiImaegView]; + [self.wifiView addSubview:self.wifiLabel]; +} + +- (void)initSubViewConstraints { + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.top.mas_equalTo(self.view).offset(15); + }]; + + [self.wifiView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(132, 30)); + }]; + + [self.wifiImaegView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.wifiLabel.mas_left).offset(-5); + make.centerY.mas_equalTo(self.wifiView); + make.width.mas_equalTo(22); + make.height.mas_equalTo(22); + }]; + + [self.wifiLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.wifiView).offset(13); + make.centerY.mas_equalTo(self.wifiView); + }]; + + [self.ipLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth - 47 * 2); + }]; + + [self.singleTypeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(self.ipLabel); + }]; + + [self.computerImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(187, 114)); + }]; + + [self.descriptionLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth - 47 * 2); + }]; + + [self.musiceCountButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(178, 35)); + }]; + + [self.saveButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(KScreenWidth - 47* 2, 45)); + }]; +} + +- (void)monitorNet { + AFNetworkReachabilityStatus status = [AFNetworkReachabilityManager sharedManager].networkReachabilityStatus; + + NSError * err; + if ([self.httpServer start:&err]) { + self.ipAddress = @""; + if (status == AFNetworkReachabilityStatusReachableViaWWAN) { + self.ipAddress = @"(您正在4G/3G/2G网络下,暂无法使用)"; + self.wifiLabel.text = @"请连接WIFI"; + } else if (status == AFNetworkReachabilityStatusNotReachable) { + self.ipAddress = YMLocalizedString(@"XPRoomTransferMusicViewController3"); + self.wifiLabel.text = @"请连接WIFI"; + } else { + self.ipAddress = [NSString stringWithFormat:@"http://%@:%d/",[SJXCSMIPHelper deviceIPAdress],[self.httpServer listeningPort]]; + self.wifiLabel.text = @"已连接WIFI"; + } + self.ipLabel.text = self.ipAddress; + } + @kWeakify(self); + [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { + @kStrongify(self); + switch (status) { + case AFNetworkReachabilityStatusNotReachable: + { + self.ipLabel.text = YMLocalizedString(@"XPRoomTransferMusicViewController6"); + self.wifiLabel.text = @"请连接WIFI"; + } + break; + case AFNetworkReachabilityStatusReachableViaWWAN: + { + self.ipLabel.text = YMLocalizedString(@"XPRoomTransferMusicViewController8"); + self.wifiLabel.text = @"请连接WIFI"; + } + break; + default: + self.ipLabel.text = self.ipAddress; + self.wifiLabel.text = @"已连接WIFI"; + break; + } + }]; +} + +- (void)connectHttpServer { + self.httpServer = [[HTTPServer alloc] init]; + self.httpServer.viewcontroller = self; + [self.httpServer setPort:12345]; + [self.httpServer setType:@"_http._tcp."]; + // webPath是server搜寻HTML等文件的路径 + NSString *webPagePath = [[NSBundle mainBundle] resourcePath]; + [self.httpServer setDocumentRoot:webPagePath]; + [self.httpServer setConnectionClass:[MyHTTPConnection class]]; +} + +#pragma mark - MyHTTPConnectionDelegate + +- (NSString *)onSetDestinationPathHttpFileTranSportDestination:(MyHTTPConnection *)server { + NSString* uploadDirPath =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; + uploadDirPath = [NSString stringWithFormat:@"%@/music",uploadDirPath]; + BOOL isDir = YES; + if (![[NSFileManager defaultManager]fileExistsAtPath:uploadDirPath isDirectory:&isDir ]) { + [[NSFileManager defaultManager]createDirectoryAtPath:uploadDirPath withIntermediateDirectories:YES attributes:nil error:nil]; + } + return uploadDirPath; + +} + +- (void)onHttpFileTranSportServer:(MyHTTPConnection *)server successWithPath:(NSString *)filePath { + AVURLAsset *mp3Asset = [AVURLAsset URLAssetWithURL:[NSURL fileURLWithPath:filePath] options:nil]; + if (mp3Asset && self.currentMusic != nil) { + NSString * songName;///歌曲 + NSString *singer;//歌手 + UIImage *image;//图片 + NSMutableArray *artists = [[AVMetadataItem metadataItemsFromArray:mp3Asset.commonMetadata withKey:AVMetadataCommonKeyArtist keySpace:AVMetadataKeySpaceCommon] mutableCopy]; + NSArray *albumNames = [AVMetadataItem metadataItemsFromArray:mp3Asset.commonMetadata withKey:AVMetadataCommonKeyArtwork keySpace:AVMetadataKeySpaceCommon]; + NSArray *titles = [AVMetadataItem metadataItemsFromArray:mp3Asset.commonMetadata withKey:AVMetadataCommonKeyTitle keySpace:AVMetadataKeySpaceCommon]; + if (artists.count > 0) { + AVMetadataItem *artist = [artists safeObjectAtIndex1:0]; + singer = [artist.value copyWithZone:nil]; + }else{ + singer = YMLocalizedString(@"XPRoomTransferMusicViewController11"); + } + + if (albumNames.count > 0) { + AVMetadataItem *artist = [albumNames safeObjectAtIndex1:0]; + image = [UIImage imageWithData:[artist.value copyWithZone:nil]]; + }else{ + image = [UIImage imageNamed:@"common_avatar"]; + } + + if (titles.count > 0) { + AVMetadataItem *artist = [titles safeObjectAtIndex1:0]; + songName = [artist.value copyWithZone:nil]; + }else{ + songName = YMLocalizedString(@"XPRoomTransferMusicViewController12"); + } + + NSUUID * uuid = [UIDevice currentDevice].identifierForVendor; + NSString * musicId = [uuid.UUIDString stringByAppendingString:songName]; + self.currentMusic.author = singer; + self.currentMusic.musicId = musicId; + self.currentMusic.songName = songName; + self.currentMusic.songAlbum = UIImageJPEGRepresentation(image, 1); + [[XPCoreDataManager shareInstance] save]; + dispatch_main_sync_safe(^{ + self.numberSong++; + [self.musiceCountButton setTitle:[NSString stringWithFormat:YMLocalizedString(@"XPRoomTransferMusicViewController13"), self.numberSong] forState:UIControlStateNormal]; + self.currentMusic = nil; + }); + } +} + +- (BOOL)onHttpFileDataEstimateDuplicateCanPassTranSportServer:(MyHTTPConnection *)server withPath:(NSString *)filePath andFileName:(NSString *)fileName { + if ([[NSFileManager defaultManager] fileExistsAtPath:filePath] == NO) { + self.currentMusic = [NSEntityDescription insertNewObjectForEntityForName:@"Music" inManagedObjectContext:[XPCoreDataManager shareInstance].managedObjectContext]; + self.currentMusic.musicName = fileName; + return YES; + }else { + return NO; + } +} + +#pragma mark - Event Response +- (void)saveButtonAction:(UIButton *)sender { + [self.navigationController popViewControllerAnimated:YES]; +} + +#pragma mark - Getters And Setters +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentCenter; + _stackView.spacing = 15; + } + return _stackView; +} + +- (UIView *)wifiView { + if (!_wifiView) { + _wifiView = [[UIView alloc] init]; + _wifiView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.4]; + _wifiView.layer.masksToBounds = YES; + _wifiView.layer.cornerRadius = 15; + } + return _wifiView; +} + +- (UIImageView *)wifiImaegView { + if (!_wifiImaegView) { + _wifiImaegView = [[UIImageView alloc] init]; + _wifiImaegView.userInteractionEnabled = YES; + _wifiImaegView.image = [UIImage imageNamed:@"room_music_transfer_wifi"]; + } + return _wifiImaegView; +} + +- (UILabel *)wifiLabel { + if (!_wifiLabel) { + _wifiLabel = [[UILabel alloc] init]; + _wifiLabel.font = [UIFont systemFontOfSize:15]; + _wifiLabel.textColor = [UIColor whiteColor]; + _wifiLabel.text = @"已连接Wifi"; + } + return _wifiLabel; +} + +- (UILabel *)ipLabel { + if (!_ipLabel) { + _ipLabel = [[UILabel alloc] init]; + _ipLabel.font = [UIFont systemFontOfSize:15]; + _ipLabel.textColor = [DJDKMIMOMColor appEmphasizeColor]; + _ipLabel.textAlignment = NSTextAlignmentCenter; + } + return _ipLabel; +} + +- (UILabel *)singleTypeLabel { + if (!_singleTypeLabel) { + _singleTypeLabel = [[UILabel alloc] init]; + _singleTypeLabel.font = [UIFont systemFontOfSize:15]; + _singleTypeLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _singleTypeLabel.text = YMLocalizedString(@"XPRoomTransferMusicViewController15"); + _singleTypeLabel.textAlignment = NSTextAlignmentCenter; + } + return _singleTypeLabel; +} + +- (UIImageView *)computerImageView { + if (!_computerImageView) { + _computerImageView = [[UIImageView alloc] init]; + _computerImageView.userInteractionEnabled = YES; + _computerImageView.image = [UIImage imageNamed:@"room_music_transfer_computer"]; + } + return _computerImageView; +} + +- (UILabel *)descriptionLabel { + if (!_descriptionLabel) { + _descriptionLabel = [[UILabel alloc] init]; + _descriptionLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _descriptionLabel.text = YMLocalizedString(@"XPRoomTransferMusicViewController16"); + _descriptionLabel.font = [UIFont systemFontOfSize:13]; + _descriptionLabel.numberOfLines = 2; + _descriptionLabel.textAlignment = NSTextAlignmentCenter; + } + return _descriptionLabel; +} + +- (UIButton *)musiceCountButton { + if (!_musiceCountButton) { + _musiceCountButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_musiceCountButton setTitle:YMLocalizedString(@"XPRoomTransferMusicViewController17") forState:UIControlStateNormal]; + [_musiceCountButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _musiceCountButton.titleLabel.font = [UIFont systemFontOfSize:14]; + [_musiceCountButton setBackgroundColor:[UIColor colorWithWhite:0 alpha:0.4]]; + _musiceCountButton.layer.masksToBounds = YES; + _musiceCountButton.layer.cornerRadius = 35/2; + } + return _musiceCountButton; +} + +- (UIButton *)saveButton { + if (!_saveButton) { + _saveButton = [[UIButton alloc] init]; + [_saveButton setTitle:YMLocalizedString(@"XPRoomTransferMusicViewController18") forState:UIControlStateNormal]; + [_saveButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + _saveButton.titleLabel.font = [UIFont systemFontOfSize:16]; + [_saveButton addTarget:self action:@selector(saveButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _saveButton.layer.cornerRadius = 45/2; + _saveButton.layer.masksToBounds = YES; + [_saveButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } + return _saveButton; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/YUMIChamberManualBibliothecaRegardGovernancer.h b/YuMi/Modules/YMRoom/View/BackMusic/View/YUMIChamberManualBibliothecaRegardGovernancer.h deleted file mode 100644 index 2ec528c4..00000000 --- a/YuMi/Modules/YMRoom/View/BackMusic/View/YUMIChamberManualBibliothecaRegardGovernancer.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YMRoomMusicLibraryViewController.h -// YUMI -// -// Created by YUMI on 2022/5/9. -// - -#import "BaseRegardGovernancer.h" -#import "ChamberHostRepresendtation.h" -NS_ASSUME_NONNULL_BEGIN -@class Manual, YUMIChamberManualBibliothecaRegardGovernancer; - -@protocol FBCChamberManualLibraryRegardGovernancerRepresendtation -- (void)yUMIChamberManualLibraryRegardGovernancer:(YUMIChamberManualBibliothecaRegardGovernancer *)view manualAbstract:(Manual *)manualAbstract; -- (void)yUMIChamberManualLibraryRegardGovernancer:(YUMIChamberManualBibliothecaRegardGovernancer *)view isPlaying:(BOOL)isPlaying; -- (void)yUMIChamberManualLibraryRegardGovernancer:(YUMIChamberManualBibliothecaRegardGovernancer *)view backMusicVolum:(NSInteger)backMusicVolum; -@end -@interface YUMIChamberManualBibliothecaRegardGovernancer : BaseRegardGovernancer -@property (nonatomic,assign) BOOL isPlaying; -@property (nonatomic,strong) Manual *universalManual; -@property (nonatomic,weak) id delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/YUMIChamberManualBibliothecaRegardGovernancer.m b/YuMi/Modules/YMRoom/View/BackMusic/View/YUMIChamberManualBibliothecaRegardGovernancer.m deleted file mode 100644 index adcedafb..00000000 --- a/YuMi/Modules/YMRoom/View/BackMusic/View/YUMIChamberManualBibliothecaRegardGovernancer.m +++ /dev/null @@ -1,345 +0,0 @@ -// -// YMRoomMusicLibraryViewController.m -// YUMI -// -// Created by YUMI on 2022/5/9. -// - -#import "YUMIChamberManualBibliothecaRegardGovernancer.h" -#import -#import "YUMICoreAtomicExecutive.h" -#import "YUMIConstant.h" -#import "RealtimackExecutive.h" -#import "YUMIMacroUitls.h" -#import "YUMICoreAtomicExecutive.h" -#import "DJDKMIMOMColor.h" -#import "NSArray+Safe.h" -#import "Manual+CoreDataClass.h" -#import "YUMIChamberManualBibliothecaTabulationRegardElement.h" -#import "YUMIChamberManualBibliothecaDispossessTabulationRegardElement.h" -#import "YUMIManualBibliothecaDisportRegard.h" -#import "YUMIChamberManualReputationInstanllingRegard.h" -#import "YUMIChamberTransferManualRegardGovernancer.h" - -UIKIT_EXTERN NSString * kRoomBackMusicAudioMixingVolumeKey; -UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey; - -@interface YUMIChamberManualBibliothecaRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) YUMIManualBibliothecaDisportRegard *disportRegard; -@property (nonatomic,strong) YUMIChamberManualReputationInstanllingRegard *reputationInstanllingRegard; -@property(nonatomic,strong)NSFetchedResultsController *fetchedConsequentGovernancer; -@property (nonatomic,strong, nullable) Manual *chosenManual; -@property (nonatomic,strong) NSArray *datasource; -@property (nonatomic,strong) NSFetchRequest *request; -@property (nonatomic,strong) UIView * intelligenceerRegard; -@property (nonatomic,strong) UILabel *digitalManualSequencignation; -@end - -@implementation YUMIChamberManualBibliothecaRegardGovernancer -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - NSArray *data = [[YUMICoreAtomicExecutive partowardsiciptowardsionInstance].managedObjectContext executeFetchRequest:self.request error:nil]; - self.datasource = data; - [self.tableView reloadData]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - self.title = YMLocalizedString(@"YUMI_Room_Music_Library_View_Controller_0"); - [self initData]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initData { - self.disportRegard.manual = self.universalManual; - self.disportRegard.isPlaying = self.isPlaying; - - NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; - NSInteger manualQuantm = [defaults integerForKey:kRoomBackMusicAudioMixingVolumeKey]; - manualQuantm = manualQuantm > 0 ? manualQuantm : 50; - self.reputationInstanllingRegard.manualQuantm = manualQuantm; - - NSInteger captureQuantm = [defaults integerForKey:kRoomBackMusicCaptureVolumeKey]; - captureQuantm = captureQuantm > 0 ? captureQuantm : 50; - self.reputationInstanllingRegard.captureQuantm = captureQuantm; -} - -- (void)initSubViews { - [self accelertowardseBreeadcrumbProvisionAboutIndictowardseSaluttowardsion:@[@"room_music_library_nav_add"] isContrary:NO target:self action:@selector(accelertowardseManualPerformance:) tags:nil]; - [self.view addSubview:self.tableView]; - [self.view addSubview:self.disportRegard]; - [self.view addSubview:self.reputationInstanllingRegard]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.top.right.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.disportRegard.mas_top); - }]; - - [self.disportRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(55); - make.bottom.left.right.mas_equalTo(self.view); - }]; - - [self.reputationInstanllingRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.disportRegard.mas_top); - make.left.right.mas_equalTo(self.view); - }]; -} -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return 1; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMIChamberManualBibliothecaTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIChamberManualBibliothecaTabulationRegardElement class])]; - Manual * manualAbstract = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (manualAbstract.musicId == self.chosenManual.musicId) { - cell.isSelect = YES; - } else { - cell.isSelect = NO; - } - cell.manualAbstract = manualAbstract; - return cell; - } - - YUMIChamberManualBibliothecaDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIChamberManualBibliothecaDispossessTabulationRegardElement class])]; - cell.delegate = self; - return cell; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return self.datasource.count > 0 ? 60 : (KScreenHeight - kNavigationHeight); -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - Manual * manualAbstract = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - self.chosenManual = manualAbstract; - self.disportRegard.manual = manualAbstract; - [self.tableView reloadData]; - - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberManualLibraryRegardGovernancer:manualAbstract:)]) { - [self.delegate yUMIChamberManualLibraryRegardGovernancer:self manualAbstract:self.chosenManual]; - } - } - if (!self.reputationInstanllingRegard.hidden) { - self.reputationInstanllingRegard.hidden = YES; - } -} - -- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { - if (self.datasource.count > 0) { - return 20; - } - return 0.01f; -} - -- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { - if (self.datasource.count > 0) { - self.intelligenceerRegard.frame = CGRectMake(0, 0, KScreenWidth, 20); - if (!self.digitalManualSequencignation.superview) { - [self.intelligenceerRegard addSubview:self.digitalManualSequencignation]; - [self.digitalManualSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceerRegard).offset(15); - make.centerY.mas_equalTo(self.intelligenceerRegard); - }]; - } - - self.digitalManualSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Room_Music_Library_View_Controller_1"), self.datasource.count]; - return self.intelligenceerRegard; - } - return [UIView new]; -} - -- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - return YES; - } - return NO; -} - -- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath { - return YMLocalizedString(@"YUMI_Room_Music_Library_View_Controller_2"); -} - -- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { - if (editingStyle == UITableViewCellEditingStyleDelete) { - Manual * manual = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - [self EvidenceChambering]; - if ([manual.musicId isEqualToString:self.universalManual.musicId]) { - self.disportRegard.manual = nil; - self.disportRegard.isPlaying = NO; - self.chosenManual = nil; - self.isPlaying = NO; - [[RealtimackExecutive instance] diversifictowardsionDisportDeclare:BackMusicDisportDeclare_Stop]; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberManualLibraryRegardGovernancer:isPlaying:)]) { - [self.delegate yUMIChamberManualLibraryRegardGovernancer:self isPlaying:self.isPlaying]; - } - - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberManualLibraryRegardGovernancer:manualAbstract:)]) { - [self.delegate yUMIChamberManualLibraryRegardGovernancer:self manualAbstract:self.chosenManual]; - } - } - - if (manual.musicName) { - NSString * documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; - documentsPath = [NSString stringWithFormat:@"%@/music/",documentsPath]; - NSString * musicPath = [documentsPath stringByAppendingString:manual.musicName]; - NSFileManager *fileManager = [NSFileManager defaultManager]; - if ([fileManager fileExistsAtPath:musicPath]) { - NSError * error; - [fileManager removeItemAtPath:musicPath error:&error]; - } - } - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [[YUMICoreAtomicExecutive partowardsiciptowardsionInstance].managedObjectContext deleteObject:manual]; - [[YUMICoreAtomicExecutive partowardsiciptowardsionInstance] save]; - NSArray *data = [[YUMICoreAtomicExecutive partowardsiciptowardsionInstance].managedObjectContext executeFetchRequest:self.request error:nil]; - self.datasource = data; - [self.tableView reloadData]; - [self brakeHUD]; - }); - } -} - -#pragma mark - FBCChamberManualLibraryEmptyTabulationViweElementRepresendtation -- (void)yUMIChamberManualLibraryDispossessTarbsultowardsionViweElement:(YUMIChamberManualBibliothecaDispossessTabulationRegardElement *)cell didClickAdd:(UIButton *)sender { - YUMIChamberTransferManualRegardGovernancer * transferVC = [[YUMIChamberTransferManualRegardGovernancer alloc] init]; - [self.navigationController pushViewController:transferVC animated:YES]; -} -#pragma mark - FBCManualLibraryPlayRegardRepresendtation -- (void)yUMIManualLibraryDisportRegard:(YUMIManualBibliothecaDisportRegard *)view didClickVoiceSetting:(UIButton *)sender { - self.reputationInstanllingRegard.hidden = !sender.selected; -} - -- (void)yUMIManualLibraryDisportRegard:(YUMIManualBibliothecaDisportRegard *)view didClickPlayButton:(UIButton *)sender { - if (self.universalManual) { - sender.selected = !sender.selected; - if (self.isPlaying) { - [[RealtimackExecutive instance] diversifictowardsionDisportDeclare:BackMusicDisportDeclare_Pause]; - sender.selected = NO; - self.isPlaying = NO; - } else { - [[RealtimackExecutive instance] diversifictowardsionDisportDeclare:BackMusicDisportDeclare_Resume]; - sender.selected = YES; - self.isPlaying = YES; - } - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberManualLibraryRegardGovernancer:isPlaying:)]) { - [self.delegate yUMIChamberManualLibraryRegardGovernancer:self isPlaying:self.isPlaying]; - } - } -} - -#pragma mark - FBCChamberManualVoiceInstanllingRegardRepresendtation -- (void)yUMIChamberManualReputtowardsionInstanllingRegard:(YUMIChamberManualReputationInstanllingRegard *)view didSliderValueChange:(UISlider *)slider { - switch (slider.tag) { - case MusicVoiceInstanllingGenre_User: - { - [[NSUserDefaults standardUserDefaults] setInteger:slider.value forKey:kRoomBackMusicCaptureVolumeKey]; - [[NSUserDefaults standardUserDefaults] synchronize]; - [[RealtimackExecutive instance] refurbishConsumerSound:(int)slider.value]; - } - break; - case MusicVoiceInstanllingGenre_Music: - { - [[NSUserDefaults standardUserDefaults] setInteger:slider.value forKey:kRoomBackMusicAudioMixingVolumeKey]; - [[NSUserDefaults standardUserDefaults] synchronize]; - [[RealtimackExecutive instance] refurbishManualSound:(int)slider.value]; - - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberManualLibraryRegardGovernancer:backMusicVolum:)]) { - [self.delegate yUMIChamberManualLibraryRegardGovernancer:self backMusicVolum:slider.value]; - } - } - break; - default: - break; - } -} - -#pragma mark - Event Response -- (void)accelertowardseManualPerformance:(UIButton *)sender { - YUMIChamberTransferManualRegardGovernancer * transferVC = [[YUMIChamberTransferManualRegardGovernancer alloc] init]; - [self.navigationController pushViewController:transferVC animated:YES]; -} -#pragma mark - Getters And Setters -- (void)setIsPlaying:(BOOL)isPlaying { - _isPlaying = isPlaying; - self.disportRegard.isPlaying = _isPlaying; -} - -- (void)setUniversalManual:(Manual *)universalManual { - _universalManual = universalManual; - self.disportRegard.manual = _universalManual; - self.chosenManual = _universalManual; - [self.tableView reloadData]; -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIChamberManualBibliothecaTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIChamberManualBibliothecaTabulationRegardElement class])]; - [_tableView registerClass:[YUMIChamberManualBibliothecaDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIChamberManualBibliothecaDispossessTabulationRegardElement class])]; - } - return _tableView; -} - -- (YUMIManualBibliothecaDisportRegard *)disportRegard { - if (!_disportRegard) { - _disportRegard = [[YUMIManualBibliothecaDisportRegard alloc] init]; - _disportRegard.delegate = self; - } - return _disportRegard; -} - -- (YUMIChamberManualReputationInstanllingRegard *)reputationInstanllingRegard { -if (!_reputationInstanllingRegard) { - _reputationInstanllingRegard = [[YUMIChamberManualReputationInstanllingRegard alloc] init]; - _reputationInstanllingRegard.delegate = self; - _reputationInstanllingRegard.hidden = YES; - } - return _reputationInstanllingRegard; -} - -- (NSFetchRequest *)request { - if (!_request) { - _request = [NSFetchRequest fetchRequestWithEntityName:@"Manual"]; - } - return _request; -} - -- (UIView *)intelligenceerRegard { - if (!_intelligenceerRegard) { - _intelligenceerRegard = [[UIView alloc] init]; - _intelligenceerRegard.backgroundColor = [UIColor clearColor]; - } - return _intelligenceerRegard; -} - -- (UILabel *)digitalManualSequencignation { - if (!_digitalManualSequencignation) { - _digitalManualSequencignation = [[UILabel alloc] init]; - _digitalManualSequencignation.font = [UIFont systemFontOfSize:10]; - _digitalManualSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _digitalManualSequencignation; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/YUMIChamberTransferManualRegardGovernancer.h b/YuMi/Modules/YMRoom/View/BackMusic/View/YUMIChamberTransferManualRegardGovernancer.h deleted file mode 100644 index ae723ae8..00000000 --- a/YuMi/Modules/YMRoom/View/BackMusic/View/YUMIChamberTransferManualRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomTransferMusicViewController.h -// YUMI -// -// Created by YUMI on 2022/5/7. -// - -#import "BaseRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberTransferManualRegardGovernancer : BaseRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BackMusic/View/YUMIChamberTransferManualRegardGovernancer.m b/YuMi/Modules/YMRoom/View/BackMusic/View/YUMIChamberTransferManualRegardGovernancer.m deleted file mode 100644 index d64530ed..00000000 --- a/YuMi/Modules/YMRoom/View/BackMusic/View/YUMIChamberTransferManualRegardGovernancer.m +++ /dev/null @@ -1,350 +0,0 @@ -// -// YMRoomTransferMusicViewController.m -// YUMI -// -// Created by YUMI on 2022/5/7. -// - -#import "YUMIChamberTransferManualRegardGovernancer.h" -#import -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "UIImage+Utils.h" -#import "HyperTextServer.h" -#import "MyHyperTextConnection.h" -#import "SJXCSMIPFacilitater.h" -#import "YUMICoreAtomicExecutive.h" -#import "GCDHelper.h" -#import "NSArray+Safe.h" -#import "Manual+CoreDataClass.h" -@interface YUMIChamberTransferManualRegardGovernancer () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UIView * wifiRegard; -@property (nonatomic,strong) UIImageView *wifiIndicteRegard; -@property (nonatomic,strong) UILabel *wifiSequencignation; -@property (nonatomic,strong) UILabel *ipSequencignation; -@property (nonatomic,strong) UILabel *singleGenreSequencignation; -@property (nonatomic,strong) UIImageView *computerIndicateRegard; -@property (nonatomic,strong) UILabel *sequenceriptionSequencignation; -@property (nonatomic,strong) UIButton *manualeComputationBtuton; -@property (nonatomic,strong) UIButton *preserveBtuton; -@property (nonatomic,strong) HyperTextServer *httpWeeblogic; -@property (strong, nonatomic) NSString *ipAccelerateress; -@property (nonatomic,assign) NSInteger digitalSong; -@property (nonatomic,strong) Manual * universalManual; -@end - -@implementation YUMIChamberTransferManualRegardGovernancer -- (void)viewDidLoad { - [super viewDidLoad]; - [self connectHyperessayWeeblogic]; - [self monitorNet]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Room_Transfer_Music_View_Controller_0"); - self.digitalSong = 0; - [self.view addSubview:self.stackView]; - [self.stackView addArrangedSubview:self.wifiRegard]; - [self.stackView addArrangedSubview:self.ipSequencignation]; - [self.stackView addArrangedSubview:self.singleGenreSequencignation]; - [self.stackView addArrangedSubview:self.computerIndicateRegard]; - [self.stackView addArrangedSubview:self.sequenceriptionSequencignation]; - [self.stackView addArrangedSubview:self.manualeComputationBtuton]; - [self.stackView addArrangedSubview:self.preserveBtuton]; - - [self.wifiRegard addSubview:self.wifiIndicteRegard]; - [self.wifiRegard addSubview:self.wifiSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.top.mas_equalTo(self.view).offset(15); - }]; - - [self.wifiRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(132, 30)); - }]; - - [self.wifiIndicteRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.wifiSequencignation.mas_left).offset(-5); - make.centerY.mas_equalTo(self.wifiRegard); - make.width.mas_equalTo(22); - make.height.mas_equalTo(22); - }]; - - [self.wifiSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.wifiRegard).offset(13); - make.centerY.mas_equalTo(self.wifiRegard); - }]; - - [self.ipSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth - 47 * 2); - }]; - - [self.singleGenreSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(self.ipSequencignation); - }]; - - [self.computerIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(187, 114)); - }]; - - [self.sequenceriptionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth - 47 * 2); - }]; - - [self.manualeComputationBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(178, 35)); - }]; - - [self.preserveBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(KScreenWidth - 47* 2, 45)); - }]; -} - -- (void)monitorNet { - AFNetworkReachabilityStatus status = [AFNetworkReachabilityManager sharedManager].networkReachabilityStatus; - - NSError * err; - if ([self.httpWeeblogic start:&err]) { - self.ipAccelerateress = @""; - if (status == AFNetworkReachabilityStatusReachableViaWWAN) { - self.ipAccelerateress = @"(您正在4G/3G/2G网络下,暂无法使用)"; - self.wifiSequencignation.text = @"请连接WIFI"; - } else if (status == AFNetworkReachabilityStatusNotReachable) { - self.ipAccelerateress = YMLocalizedString(@"YUMI_Room_Transfer_Music_View_Controller_3"); - self.wifiSequencignation.text = @"请连接WIFI"; - } else { - self.ipAccelerateress = [NSString stringWithFormat:@"http://%@:%d/",[SJXCSMIPFacilitater instentiretytowardsionInternetProtocolDirectoryress],[self.httpWeeblogic listeningPort]]; - self.wifiSequencignation.text = @"已连接WIFI"; - } - self.ipSequencignation.text = self.ipAccelerateress; - } - @kWeakify(self); - [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { - @kStrongify(self); - switch (status) { - case AFNetworkReachabilityStatusNotReachable: - { - self.ipSequencignation.text = YMLocalizedString(@"YUMI_Room_Transfer_Music_View_Controller_6"); - self.wifiSequencignation.text = @"请连接WIFI"; - } - break; - case AFNetworkReachabilityStatusReachableViaWWAN: - { - self.ipSequencignation.text = YMLocalizedString(@"YUMI_Room_Transfer_Music_View_Controller_8"); - self.wifiSequencignation.text = @"请连接WIFI"; - } - break; - default: - self.ipSequencignation.text = self.ipAccelerateress; - self.wifiSequencignation.text = @"已连接WIFI"; - break; - } - }]; -} - -- (void)connectHyperessayWeeblogic { - self.httpWeeblogic = [[HyperTextServer alloc] init]; - self.httpWeeblogic.viewgovernancer = self; - [self.httpWeeblogic setPort:12345]; - [self.httpWeeblogic setType:@"_http._tcp."]; - - NSString *webPagePath = [[NSBundle mainBundle] resourcePath]; - [self.httpWeeblogic setDocumentRoot:webPagePath]; - [self.httpWeeblogic setReltowardsionshipCtowardsegorize:[MyHyperTextConnection class]]; -} - -#pragma mark - MyHTTPConnectionRepresendtation - -- (NSString *)onSetSequenctintowardsionRouteHyperessayAccurtowardseTranSportSequenctintowardsion:(MyHyperTextConnection *)server { - NSString* uploadDirPath =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; - uploadDirPath = [NSString stringWithFormat:@"%@/music",uploadDirPath]; - BOOL isDir = YES; - if (![[NSFileManager defaultManager]fileExistsAtPath:uploadDirPath isDirectory:&isDir ]) { - [[NSFileManager defaultManager]createDirectoryAtPath:uploadDirPath withIntermediateDirectories:YES attributes:nil error:nil]; - } - return uploadDirPath; - -} - -- (void)onHyperessayAccurtowardseTranSportWeeblogic:(MyHyperTextConnection *)server successWithPath:(NSString *)filePath { - AVURLAsset *mp3Asset = [AVURLAsset URLAssetWithURL:[NSURL fileURLWithPath:filePath] options:nil]; - if (mp3Asset && self.universalManual != nil) { - NSString * songName; - NSString *singer; - UIImage *image; - NSMutableArray *artists = [[AVMetadataItem metadataItemsFromArray:mp3Asset.commonMetadata withKey:AVMetadataCommonKeyArtist keySpace:AVMetadataKeySpaceCommon] mutableCopy]; - NSArray *albumNames = [AVMetadataItem metadataItemsFromArray:mp3Asset.commonMetadata withKey:AVMetadataCommonKeyArtwork keySpace:AVMetadataKeySpaceCommon]; - NSArray *titles = [AVMetadataItem metadataItemsFromArray:mp3Asset.commonMetadata withKey:AVMetadataCommonKeyTitle keySpace:AVMetadataKeySpaceCommon]; - if (artists.count > 0) { - AVMetadataItem *artist = [artists secureGroalTowardsIndictowardsrix1:0]; - singer = [artist.value copyWithZone:nil]; - }else{ - singer = YMLocalizedString(@"YUMI_Room_Transfer_Music_View_Controller_11"); - } - - if (albumNames.count > 0) { - AVMetadataItem *artist = [albumNames secureGroalTowardsIndictowardsrix1:0]; - image = [UIImage imageWithData:[artist.value copyWithZone:nil]]; - }else{ - image = [UIImage imageNamed:@"yumi_same_avatar"]; - } - - if (titles.count > 0) { - AVMetadataItem *artist = [titles secureGroalTowardsIndictowardsrix1:0]; - songName = [artist.value copyWithZone:nil]; - }else{ - songName = YMLocalizedString(@"YUMI_Room_Transfer_Music_View_Controller_12"); - } - - NSUUID * uuid = [UIDevice currentDevice].identifierForVendor; - NSString * musicId = [uuid.UUIDString stringByAppendingString:songName]; - self.universalManual.author = singer; - self.universalManual.musicId = musicId; - self.universalManual.songName = songName; - self.universalManual.songAlbum = UIImageJPEGRepresentation(image, 1); - [[YUMICoreAtomicExecutive partowardsiciptowardsionInstance] save]; - dispatch_main_sync_safe(^{ - self.digitalSong++; - [self.manualeComputationBtuton setTitle:[NSString stringWithFormat:YMLocalizedString(@"YUMI_Room_Transfer_Music_View_Controller_13"), self.digitalSong] forState:UIControlStateNormal]; - self.universalManual = nil; - }); - } -} - -- (BOOL)onHyperessayAccurtowardseTowardsoloudspeakerEstimtowardseDuplictowardseCanPassTranSportWeeblogic:(MyHyperTextConnection *)server withPath:(NSString *)filePath andFileName:(NSString *)fileName { - if ([[NSFileManager defaultManager] fileExistsAtPath:filePath] == NO) { - self.universalManual = [NSEntityDescription insertNewObjectForEntityForName:@"Manual" inManagedObjectContext:[YUMICoreAtomicExecutive partowardsiciptowardsionInstance].managedObjectContext]; - self.universalManual.musicName = fileName; - return YES; - }else { - return NO; - } -} - -#pragma mark - Event Response -- (void)preserveBtutonPerformance:(UIButton *)sender { - [self.navigationController popViewControllerAnimated:YES]; -} - -#pragma mark - Getters And Setters -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentCenter; - _stackView.spacing = 15; - } - return _stackView; -} - -- (UIView *)wifiRegard { - if (!_wifiRegard) { - _wifiRegard = [[UIView alloc] init]; - _wifiRegard.backgroundColor = [UIColor colorWithWhite:0 alpha:0.4]; - _wifiRegard.layer.masksToBounds = YES; - _wifiRegard.layer.cornerRadius = 15; - } - return _wifiRegard; -} - -- (UIImageView *)wifiIndicteRegard { - if (!_wifiIndicteRegard) { - _wifiIndicteRegard = [[UIImageView alloc] init]; - _wifiIndicteRegard.userInteractionEnabled = YES; - _wifiIndicteRegard.image = [UIImage imageNamed:@"yumi_scope_musimage_transfer_wifi"]; - } - return _wifiIndicteRegard; -} - -- (UILabel *)wifiSequencignation { - if (!_wifiSequencignation) { - _wifiSequencignation = [[UILabel alloc] init]; - _wifiSequencignation.font = [UIFont systemFontOfSize:15]; - _wifiSequencignation.textColor = [UIColor whiteColor]; - _wifiSequencignation.text = @"已连接Wifi"; - } - return _wifiSequencignation; -} - -- (UILabel *)ipSequencignation { - if (!_ipSequencignation) { - _ipSequencignation = [[UILabel alloc] init]; - _ipSequencignation.font = [UIFont systemFontOfSize:15]; - _ipSequencignation.textColor = [DJDKMIMOMColor aplictowardsionUnderlinePrettify]; - _ipSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _ipSequencignation; -} - -- (UILabel *)singleGenreSequencignation { - if (!_singleGenreSequencignation) { - _singleGenreSequencignation = [[UILabel alloc] init]; - _singleGenreSequencignation.font = [UIFont systemFontOfSize:15]; - _singleGenreSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _singleGenreSequencignation.text = YMLocalizedString(@"YUMI_Room_Transfer_Music_View_Controller_15"); - _singleGenreSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _singleGenreSequencignation; -} - -- (UIImageView *)computerIndicateRegard { - if (!_computerIndicateRegard) { - _computerIndicateRegard = [[UIImageView alloc] init]; - _computerIndicateRegard.userInteractionEnabled = YES; - _computerIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_musimage_transfer_computer"]; - } - return _computerIndicateRegard; -} - -- (UILabel *)sequenceriptionSequencignation { - if (!_sequenceriptionSequencignation) { - _sequenceriptionSequencignation = [[UILabel alloc] init]; - _sequenceriptionSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _sequenceriptionSequencignation.text = YMLocalizedString(@"YUMI_Room_Transfer_Music_View_Controller_16"); - _sequenceriptionSequencignation.font = [UIFont systemFontOfSize:13]; - _sequenceriptionSequencignation.numberOfLines = 2; - _sequenceriptionSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _sequenceriptionSequencignation; -} - -- (UIButton *)manualeComputationBtuton { - if (!_manualeComputationBtuton) { - _manualeComputationBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_manualeComputationBtuton setTitle:YMLocalizedString(@"YUMI_Room_Transfer_Music_View_Controller_17") forState:UIControlStateNormal]; - [_manualeComputationBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _manualeComputationBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - [_manualeComputationBtuton setBackgroundColor:[UIColor colorWithWhite:0 alpha:0.4]]; - _manualeComputationBtuton.layer.masksToBounds = YES; - _manualeComputationBtuton.layer.cornerRadius = 35/2; - } - return _manualeComputationBtuton; -} - -- (UIButton *)preserveBtuton { - if (!_preserveBtuton) { - _preserveBtuton = [[UIButton alloc] init]; - [_preserveBtuton setTitle:YMLocalizedString(@"YUMI_Room_Transfer_Music_View_Controller_18") forState:UIControlStateNormal]; - [_preserveBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - _preserveBtuton.titleLabel.font = [UIFont systemFontOfSize:16]; - [_preserveBtuton addTarget:self action:@selector(preserveBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _preserveBtuton.layer.cornerRadius = 45/2; - _preserveBtuton.layer.masksToBounds = YES; - [_preserveBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } - return _preserveBtuton; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomAnchorRankEnterView.h b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomAnchorRankEnterView.h new file mode 100644 index 00000000..6084f00d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomAnchorRankEnterView.h @@ -0,0 +1,16 @@ +// +// YMRoomAnchorRankEnterView.h +// YUMI +// +// Created by YUMI on 2022/5/12. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomAnchorRankEnterView : UIView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomAnchorRankEnterView.m b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomAnchorRankEnterView.m new file mode 100644 index 00000000..893a70d1 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomAnchorRankEnterView.m @@ -0,0 +1,97 @@ +// +// YMRoomAnchorRankEnterView.m +// YUMI +// +// Created by YUMI on 2022/5/12. +// + +#import "XPRoomAnchorRankEnterView.h" +///Third +#import +#import "DJDKMIMOMColor.h" +///Tool +#import "NetImageView.h" + +@interface XPRoomAnchorRankEnterView () + +///背景图 +@property (nonatomic, strong) UIImageView *bgImageView; +/// +@property (nonatomic, strong) UILabel *titleLabel; +///图标 +@property (nonatomic, strong) UIImageView *iconImageView; + +@end + + +@implementation XPRoomAnchorRankEnterView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +- (void)layoutSubviews { + [super layoutSubviews]; + CAGradientLayer *layer = [CAGradientLayer new]; + layer.colors=@[(__bridge id)UIColorRGBAlpha(0x2B00CA, 0.55).CGColor,(__bridge id)UIColorRGBAlpha(0x170ACD, 0.2).CGColor]; + layer.startPoint = CGPointMake(0, 0); + layer.endPoint = CGPointMake(1, 0); + layer.frame = self.bounds; + [self.bgImageView.layer addSublayer:layer]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.bgImageView]; + [self addSubview:self.titleLabel]; + [self addSubview:self.iconImageView]; +} + +- (void)initSubViewConstraints { + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.bottom.left.right.mas_equalTo(0); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self); + make.left.mas_equalTo(self.iconImageView.mas_right).mas_offset(4); + }]; + [self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(22); + make.centerY.mas_equalTo(self); + make.left.mas_equalTo(0); + }]; +} + +#pragma mark - Getters And Setters +- (UIImageView *)bgImageView { + if (_bgImageView == nil) { + _bgImageView = [[UIImageView alloc] init]; + _bgImageView.layer.cornerRadius = 11; + _bgImageView.layer.masksToBounds = YES; + } + return _bgImageView; +} + +- (UIImageView *)iconImageView { + if (_iconImageView == nil) { + _iconImageView = [[UIImageView alloc] init]; + _iconImageView.image = [UIImage imageNamed:@"anchor_hourRank_btn"]; + _iconImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _iconImageView; +} + +- (UILabel *)titleLabel { + if (_titleLabel == nil) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textColor = UIColor.whiteColor; + _titleLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + _titleLabel.text = YMLocalizedString(@"XPRoomAnchorRankEnterView0"); + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomBackContainerView.h b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomBackContainerView.h new file mode 100644 index 00000000..752876b2 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomBackContainerView.h @@ -0,0 +1,17 @@ +// +// YMRoomBaseUIView.h +// YUMI +// +// Created by YUMI on 2021/10/11. +// + +#import +#import "RoomHostDelegate.h" +#import "RoomGuestDelegate.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomBackContainerView : UIView +- (instancetype)initWithdelegate:(id)delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomBackContainerView.m b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomBackContainerView.m new file mode 100644 index 00000000..1493a8e1 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomBackContainerView.m @@ -0,0 +1,174 @@ +// +// YMRoomBaseUIView.m +// YUMI +// +// Created by YUMI on 2021/10/11. +// 最下面的View + +#import "XPRoomBackContainerView.h" +///Third +#import +#import +///Model +#import "RoomInfoModel.h" +//SVGA动画播放 +#import "SVGA.h" +#import "SVGAParserManager.h" +///Tool +#import "YUMIMacroUitls.h" +#import "XNDJTDDLoadingTool.h" +#import "NetImageView.h" + +@interface XPRoomBackContainerView () +///背景图片 +@property (nonatomic,strong) NetImageView *backImageView; +///动态背景 +@property (nonatomic, strong) SVGAImageView *svgDisplayView; +@property (nonatomic, strong) SVGAParserManager *parserManager; +///host 代理 +@property (nonatomic,weak) iddelegate; + +@end + +@implementation XPRoomBackContainerView + +- (instancetype)initWithdelegate:(id)delegate { + self = [super init]; + if (self) { + self.delegate = delegate; + [self initSubViews]; + [self initSubViewConstraints]; + self.clipsToBounds = YES; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backImageView]; + [self addSubview:self.svgDisplayView]; +} + +- (void)initSubViewConstraints { + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + [self.svgDisplayView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; +} + +- (void)onRoomEntered { + [self updateRoomBg]; +} + +- (void)onRoomUpdate { + [self updateRoomBg]; +} + +- (void)updateRoomBg { + RoomInfoModel *roomInfo = [self.delegate getRoomInfo]; + if (roomInfo.backPic.length > 0) { + ///MARK:更改图片拉伸策略 BY lvjunhang, 2018-12-03,原值为:UIViewContentModeScaleAspectFit + self.backImageView.contentMode = UIViewContentModeScaleAspectFill; + if ([roomInfo.backPic containsString:@".svga"]) { //房间背景是SVGA动态背景 + self.svgDisplayView.hidden = NO; + @weakify(self); + [self.parserManager loadSvgaWithURL:[NSURL URLWithString:roomInfo.backPic] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { + @strongify(self); + if (videoItem != nil) { + CGFloat width = videoItem.videoSize.width; + CGFloat height = videoItem.videoSize.height; + if (width > height) { + self.svgDisplayView.contentMode = UIViewContentModeScaleAspectFit; + } else {//高大于宽 + CGFloat resizeH = KScreenWidth * height / width;//按照屏幕的宽度去缩放,获得高度 + if (resizeH > KScreenHeight) {//如果大于屏幕高度,填充 + self.svgDisplayView.contentMode = UIViewContentModeScaleAspectFill; + } else {//小于屏幕高度, + self.svgDisplayView.contentMode = UIViewContentModeScaleAspectFit; + } + } + self.svgDisplayView.loops = INT_MAX; + self.svgDisplayView.clearsAfterStop = NO; + self.svgDisplayView.videoItem = videoItem; + [self.svgDisplayView startAnimation]; + } + } failureBlock:^(NSError * _Nullable error) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPRoomBackContainerView0")]; + }]; + } else { //房间背景是静态背景 + [self.svgDisplayView stopAnimation]; + self.svgDisplayView.hidden = YES; + self.backImageView.imageUrl = roomInfo.backPic; + } + }else { //没有设置背景,显示默认背景加高斯模糊 + if (roomInfo.type == RoomType_Anchor) { + self.svgDisplayView.hidden = NO; + @weakify(self); + NSString * bgString = [NSString stringWithFormat:@"%@/anchor_room_bg.svga", API_Image_URL]; + NSURL *bgUrl = [NSURL fileURLWithPath:bgString]; + [self.parserManager loadSvgaWithURL:bgUrl completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { + @strongify(self); + if (videoItem != nil) { + CGFloat width = videoItem.videoSize.width; + CGFloat height = videoItem.videoSize.height; + if (width > height) { + self.svgDisplayView.contentMode = UIViewContentModeScaleAspectFit; + } else {//高大于宽 + CGFloat resizeH = KScreenWidth * height / width;//按照屏幕的宽度去缩放,获得高度 + if (resizeH > KScreenHeight) {//如果大于屏幕高度,填充 + self.svgDisplayView.contentMode = UIViewContentModeScaleAspectFill; + } else {//小于屏幕高度, + self.svgDisplayView.contentMode = UIViewContentModeScaleAspectFit; + } + } + self.svgDisplayView.loops = INT_MAX; + self.svgDisplayView.clearsAfterStop = NO; + self.svgDisplayView.videoItem = videoItem; + [self.svgDisplayView startAnimation]; + } + } failureBlock:^(NSError * _Nullable error) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPRoomBackContainerView1")]; + }]; + return; + } + self.backImageView.image = [UIImage imageNamed:@"room_background"]; + [self.svgDisplayView stopAnimation]; + self.svgDisplayView.hidden = YES; + self.backImageView.contentMode = UIViewContentModeScaleAspectFill; + } +} + +#pragma mark - Getters And Setters +- (NetImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[NetImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.image = [UIImage imageNamed:@"room_background"]; + _backImageView.layer.masksToBounds = YES; + _backImageView.contentMode = UIViewContentModeScaleAspectFill; + } + return _backImageView; +} + +- (SVGAImageView *)svgDisplayView { + if (_svgDisplayView == nil) { + _svgDisplayView = [[SVGAImageView alloc]init]; + _svgDisplayView.contentMode = UIViewContentModeScaleToFill; + _svgDisplayView.userInteractionEnabled = NO; + _svgDisplayView.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); + _svgDisplayView.hidden = YES; + _svgDisplayView.backgroundColor = [UIColor clearColor]; + } + return _svgDisplayView; +} + +- (SVGAParserManager *)parserManager { + if (!_parserManager) { + _parserManager = [[SVGAParserManager alloc]init]; + } + return _parserManager; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomDatingVipUpMicView.h b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomDatingVipUpMicView.h new file mode 100644 index 00000000..3dc5c17c --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomDatingVipUpMicView.h @@ -0,0 +1,16 @@ +// +// YMRoomDatingVipUpMicView.h +// YUMI +// +// Created by YUMI on 2022/1/4. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomDatingVipUpMicView : UIView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomDatingVipUpMicView.m b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomDatingVipUpMicView.m new file mode 100644 index 00000000..094f74eb --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomDatingVipUpMicView.m @@ -0,0 +1,100 @@ +// +// YMRoomDatingVipUpMicView.m +// YUMI +// +// Created by YUMI on 2022/1/4. +// + +#import "XPRoomDatingVipUpMicView.h" +///Third +#import +///Tool +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "TTPopup.h" + +@interface XPRoomDatingVipUpMicView () +///背景 +@property (nonatomic,strong) UIImageView *backImageView; +///显示内容 +@property (nonatomic,strong) UITextView *contentView; +///关闭按钮 +@property (nonatomic,strong) UIButton *closeButton; +@end + +@implementation XPRoomDatingVipUpMicView +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backImageView]; + [self addSubview:self.contentView]; + [self addSubview:self.closeButton]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(260); + make.height.mas_equalTo(325 + 55); + }]; + + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.right.mas_equalTo(self); + make.height.mas_equalTo(325); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(44); + make.left.mas_equalTo(16); + make.centerX.mas_equalTo(self.backImageView); + make.height.mas_equalTo(271); + }]; + [self.closeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.backImageView.mas_bottom).offset(20); + make.centerX.mas_equalTo(self); + make.width.height.mas_equalTo(35); + }]; +} + +#pragma mark - Event Response +- (void)closeButtonAction:(UIButton *)sender { + [TTPopup dismiss]; +} + +#pragma mark - Getters And Setters +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.image = [UIImage imageNamed:@"room_mode_dating_vip_rule_bg"]; + } + return _backImageView; +} + +- (UITextView *)contentView { + if (!_contentView) { + _contentView = [[UITextView alloc] init]; + _contentView.text = @"1.每轮相亲在“嘉宾交流”阶段累积送礼满999钻石且送礼价值最高的用户自动登上VIP席位;\n\n2.若出现多个满足上VIP席位要求的用户,VIP席位最终由送礼价值最高的用户获得,若送礼价值相同以最先达到该值的用户为准;\n\n3.VIP席位的用户可选择是否下麦,其他用户不可因此代替坐上席位;\n\n4.用户只能在“嘉宾交流”阶段抢夺VIP席位,“嘉宾交流”阶段后直到结束本轮前,即使送出超过之前VIP总礼物价值也不能换人;\n\n5.每轮相亲结束后VIP席位清空,下一轮重新开始抢位。"; + _contentView.backgroundColor = [UIColor clearColor]; + _contentView.textColor = UIColorFromRGB(0xFFF9BC); + _contentView.font = [UIFont systemFontOfSize:12]; + } + return _contentView; +} + +- (UIButton *)closeButton { + if (!_closeButton) { + _closeButton = [[UIButton alloc] init]; + [_closeButton setImage:[UIImage imageNamed:@"room_mode_dating_alert_close"] forState:UIControlStateNormal]; + [_closeButton addTarget:self action:@selector(closeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _closeButton; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomDatingWebAlertView.h b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomDatingWebAlertView.h new file mode 100644 index 00000000..b672e4de --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomDatingWebAlertView.h @@ -0,0 +1,17 @@ +// +// YMRoomDatingWebAlertView.h +// YUMI +// +// Created by YUMI on 2022/1/4. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomDatingWebAlertView : UIView +///需要打开的url +@property (nonatomic,copy) NSString *url; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomDatingWebAlertView.m b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomDatingWebAlertView.m new file mode 100644 index 00000000..4f56a8e9 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomDatingWebAlertView.m @@ -0,0 +1,114 @@ +// +// YMRoomDatingWebAlertView.m +// YUMI +// +// Created by YUMI on 2022/1/4. +// + +#import "XPRoomDatingWebAlertView.h" +///Third +#import +///Tool +#import "YUMIMacroUitls.h" +#import "TTPopup.h" +#import "UIButton+EnlargeTouchArea.h" +///View +#import "XPWebViewController.h" + +static CGFloat const kContentAspectRatio = 2/3.f; + +@interface XPRoomDatingWebAlertView () +///导航栏 +@property (nonatomic,strong) UIImageView *backImageView; +///显示webView +@property (nonatomic, strong) XPWebViewController *webVC; +///关闭按钮 +@property (nonatomic, strong) UIButton *closeButton; +@end + +@implementation XPRoomDatingWebAlertView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initView]; + [self initContrations]; + } + return self; +} + +- (void)initView { + [self addSubview:self.backImageView]; + [self addSubview:self.closeButton]; + [self.backImageView addSubview:self.webVC.view]; + +} + +- (void)initContrations { + CGFloat kscale = 351/315;///宽和高的比 + CGFloat height = (KScreenWidth - 60) * kscale; + + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth-60); + make.height.mas_equalTo(height + 55); + }]; + + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self); + make.height.mas_equalTo(height); + }]; + + [self.webVC.view mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backImageView).inset(30); + make.bottom.mas_equalTo(self.backImageView).offset(-20); + make.top.mas_equalTo(self.backImageView).offset(45); + }]; + + + [self.closeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(35, 35)); + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self.backImageView.mas_bottom).offset(22); + }]; +} + +#pragma mark - Action +- (void)didClickCloseButton { + [TTPopup dismiss]; +} + +#pragma mark - Lazy Load +- (void)setUrl:(NSString *)url { + if (url) { + self.webVC.url = url; + } +} + + +- (XPWebViewController *)webVC { + if (_webVC == nil) { + _webVC = [[XPWebViewController alloc] init]; + _webVC.view.backgroundColor = UIColor.clearColor; + } + return _webVC; +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.image = [UIImage imageNamed:@"room_mode_dating_background"]; + _backImageView.userInteractionEnabled = YES; + } + return _backImageView; +} + +- (UIButton *)closeButton { + if (_closeButton == nil) { + _closeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_closeButton setImage:[UIImage imageNamed:@"room_mode_dating_alert_close"] forState:UIControlStateNormal]; + [_closeButton addTarget:self action:@selector(didClickCloseButton) forControlEvents:UIControlEventTouchUpInside]; + [_closeButton enlargeTouchArea:UIEdgeInsetsMake(10, 10, 10, 10)]; + } + return _closeButton; +} +@end diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomFunctionContainerView.h b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomFunctionContainerView.h new file mode 100644 index 00000000..7e2605b6 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomFunctionContainerView.h @@ -0,0 +1,28 @@ +// +// YMRoomFunctionContainerView.h +// YUMI +// +// Created by YUMI on 2021/12/15. +// + +#import +#import "RoomHostDelegate.h" +#import "RoomGuestDelegate.h" +NS_ASSUME_NONNULL_BEGIN +@class Music; +@interface XPRoomFunctionContainerView : UIView +- (instancetype)initWithdelegate:(id)delegate; + +///获取当前的音乐 +- (Music *)getCurrentMusic; +///是否正在播放 +- (BOOL)isPlaying; + +///获取房间PK队伍的 +- (NSArray *)getRoomPKGroupTeamList; +///房间内PK是否正在进行 +- (BOOL)isRoomPKPlaying; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomFunctionContainerView.m b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomFunctionContainerView.m new file mode 100644 index 00000000..4141c98c --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomFunctionContainerView.m @@ -0,0 +1,1702 @@ +// +// YMRoomFunctionContainerView.m +// YUMI +// +// Created by YUMI on 2021/12/15. +// + +#import "XPRoomFunctionContainerView.h" +///Third +#import +#import +#import +#import +///Tool +#import "YUMIMacroUitls.h" +#import "AccountInfoStorage.h" +#import "UIImage+Utils.h" +#import "DJDKMIMOMColor.h" +#import "TTPopup.h" +#import "Api+Room.h" +#import "XNDJTDDLoadingTool.h" +#import "YUMIHtmlUrl.h" +#import "Api+Mine.h" +#import "ClientConfig.h" +#import "XCCurrentVCStackManager.h" +#import "YUMIConstant.h" +#import "Api+RoomSetting.h" +#import "RtcManager.h" +#import "XPRoomMiniManager.h" +#import "Api+RoomPK.h" +#import "Api+Room.h" +#import "Api+WishGift.h" +#import "StatisticsServiceHelper.h" +#import "NSObject+MJExtension.h" +#import "NSArray+Safe.h" +#import "NSMutableDictionary+Saft.h" +#import "ClientConfig.h" +///Model +#import "RoomInfoModel.h" +#import "MicroQueueModel.h" +#import "UserInfoModel.h" +#import "AttachmentModel.h" +#import "GiftValueInfoModel.h" +#import "AcrossRoomPKPanelModel.h" +#import "XPAnchorFansRelationModel.h" +#import "XPAnchorFansJoinModel.h" +#import "XPAnchorFansTaskModel.h" +#import "AcrossRoomPKPanelModel.h" +#import "RoomPKDetailInfoModel.h" +#import "RoomPKChooseUserModel.h" +#import "GiftReceiveInfoModel.h" +#import "GiftInfoModel.h" +#import "RoomPKTeamModel.h" +#import "RoomNewUserGreetModel.h" +#import "WishGiftInfoModel.h" +#import "WishGiftInfoUpdateModel.h" +///View +#import "XPRoomHalfWebView.h" +#import "XPAnchorAudienceUpMicView.h" +#import "XPRoomAnchorInfoCardView.h" +#import "XPRoomTopicViewController.h" +#import "XPRoomTopicAlertView.h" +#import "XPAcrossRoomPKInviteView.h" +#import "XPAcrossRoomPKInviteResultView.h" +#import "XPAcrpssRoomPKPanelView.h" +#import "XPAcrossRoomPKResultView.h" +#import "XPAcrossRoomPKForceEndResultView.h" +#import "XPAnchorPKInviteView.h" +#import "XPAnchorPKResultView.h" +#import "XPAnchorPKFinishView.h" +#import "XPSendGiftView.h" +#import "XPUserCardViewController.h" +#import "XPRoomViewController.h" +#import "AcrossRoomPKPrizeModel.h" +#import "XPMineUserInfoViewController.h" +#import "XPMineSimpleUserInfoViewController.h" +#import "XPRoomRankEntranceView.h" +#import "XPRoomAnchorRankEnterView.h" +#import "XPRoomBackMusicPlayerView.h" +#import "XPRoomNewUserGreetView.h" +#import "XPRoomHalfMessageView.h" +#import "XPAcrossRoomPKCountDownView.h" +#import "XPNewUserRoomGiftView.h" +#import "XPWishGiftViewController.h" +#import "XPWishGiftEnterView.h" +///个播PK +#import "XPAnchorFansTeamEntranceView.h" +#import "XPAnchorFansTeamViewController.h" +#import "XPAnchorFansTaskViewController.h" +#import "XPAnchorPkPanelView.h" +#import "XPWebViewController.h" +#import "XPRoomPKProgressView.h" +#import "XPAnchorPKMatchView.h" + +@interface XPRoomFunctionContainerView () +///host 代理 +@property (nonatomic,weak) iddelegate; +///房间榜 +@property (nonatomic,strong) XPRoomRankEntranceView *contributeEnterView; +///相亲阶段的按钮 +@property (nonatomic,strong) UIButton *datingProgresButton; +///关注个播房主倒计时 +@property (nonatomic, strong) dispatch_source_t followAnchorTimer; +///个播粉丝团入口 +@property (nonatomic, strong) XPAnchorFansTeamEntranceView *fansTeamEntranceView; +///个播小时榜入口按钮 +@property (nonatomic, strong) XPRoomAnchorRankEnterView *hourRankEntranceView; +///话题的容器 +@property (nonatomic,strong) UIStackView *topicStackView; +///话题 +@property (nonatomic,strong) UILabel *topicLabel; +///编辑 +@property (nonatomic,strong) UIButton *editButton; +///跨房pk的面板 +@property (nonatomic,strong) XPAcrpssRoomPKPanelView *acrossPKPanelView; +///跨房PK预约倒计时 +@property (nonatomic, strong) XPAcrossRoomPKCountDownView *acrossPKCountView; +///个播PK匹配 +@property (nonatomic, strong) XPAnchorPKMatchView *anchorPKMatchView; +///粉丝团数据 +@property (nonatomic, strong) XPAnchorFansRelationModel *relationFansModel; +///个播PK面板 +@property (nonatomic, strong) XPAnchorPkPanelView *anchorPKPanelView; +///播放器的入口 +@property (nonatomic,strong) UIButton *musicEnterButton; +///播放器 +@property (nonatomic,strong) XPRoomBackMusicPlayerView *musicPlayView; +///房间PKview +@property (nonatomic,strong) XPRoomPKProgressView *roompkPanelView; +///pk详情 +@property (nonatomic,strong) RoomPKDetailInfoModel *pkDetailInfo; +///是否正在加载打招呼 +@property (nonatomic,assign) BOOL isLoadGreet; +///获取新用户礼物倒计时3s +@property (nonatomic, strong) dispatch_source_t userGiftTimer; +///许愿礼物 +@property (nonatomic,strong) XPWishGiftEnterView *wishGiftView; +///心愿礼物面板 更新进度 +@property (nonatomic,weak) XPWishGiftViewController* wishGiftVC ; + +@end + +@implementation XPRoomFunctionContainerView + +- (void)dealloc { + if (self.followAnchorTimer != nil) { + dispatch_source_cancel(self.followAnchorTimer); + } + if (self.userGiftTimer != nil) { + dispatch_source_cancel(self.userGiftTimer); + } + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +- (instancetype)initWithdelegate:(id)delegate { + self = [super init]; + if (self) { + self.delegate = delegate; + [self initSubViews]; + [self initSubViewConstraints]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(beginMatchAnchorPK:) name:@"anchorPKMatchBegin" object:nil]; + } + return self; +} + +- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { + for (NSInteger i = (self.subviews.count - 1) ; i >= 0 ; i--) { + UIView * subView = [self.subviews safeObjectAtIndex1:i]; + CGPoint convertPoint = [subView convertPoint:point fromView:self]; + if (CGRectContainsPoint(subView.bounds, convertPoint)) { + return [subView hitTest:convertPoint withEvent:event]; + } + } + + + for (NSInteger i = (self.subviews.count - 1) ; i >= 0 ; i--) { + UIView * subView = [self.subviews objectAtIndex:i]; + if (self.musicPlayView.superview && self.musicEnterButton.hidden == YES && ![subView isEqual:self.musicPlayView]) { + [UIView animateWithDuration:0.2 animations:^{ + self.musicEnterButton.hidden = NO; + } completion:nil]; + + POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; + moveAnimation.fromValue = [NSValue valueWithCGPoint:self.musicPlayView.center]; + moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth, self.musicPlayView.center.y)]; + moveAnimation.beginTime = CACurrentMediaTime(); + moveAnimation.duration = 0.5; + moveAnimation.repeatCount = 1; + moveAnimation.removedOnCompletion = YES; + [self.musicPlayView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; + break; + } + } + return nil; +} + +#pragma mark - Public Method + +- (Music *)getCurrentMusic { + return self.musicPlayView.currentMusic; +} + +- (BOOL)isPlaying { + return self.musicPlayView.isPlaying; +} + + +- (NSArray *)getRoomPKGroupTeamList { + NSArray * redArray = @[]; + if (self.roompkPanelView.redChooseArray > 0) { + redArray = self.roompkPanelView.redChooseArray; + } + + NSArray * blueArray = @[]; + if (self.roompkPanelView.blueChooseArray > 0) { + blueArray = self.roompkPanelView.blueChooseArray; + } + return @[redArray, blueArray]; +} + +///房间内PK是否正在进行 +- (BOOL)isRoomPKPlaying { + return [self.roompkPanelView isRoomPKPlaying]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.contributeEnterView]; + [self addSubview:self.topicStackView]; + [self.topicStackView addArrangedSubview:self.topicLabel]; + [self.topicStackView addArrangedSubview:self.editButton]; +} + +- (void)initSubViewConstraints { + [self.contributeEnterView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(12); + make.top.mas_equalTo(kNavigationHeight+4); + make.width.mas_equalTo(99); + make.height.mas_equalTo(24); + }]; + + [self.topicStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.height.mas_equalTo(15); + make.top.mas_equalTo(50 + 5 + 6 + 12 + 3 + kNavigationHeight); + }]; +} + +#pragma mark - 新用户打招呼动画 +- (void)handleNewUserGreet { + if (self.delegate.getUserInfo.fromType == UserEnterRoomFromType_New_User_Greet && !self.isLoadGreet) { + self.isLoadGreet = YES; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.uid]; + [Api newUserStartGreet:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + RoomNewUserGreetModel * info = [RoomNewUserGreetModel modelWithDictionary:data.data]; + if (info.roomPopup) { + XPRoomNewUserGreetView * greetView = [[XPRoomNewUserGreetView alloc] initWithFrame:CGRectMake(KScreenWidth, kSafeAreaTopHeight + 52, KScreenWidth, 80)]; + greetView.delegate = self; + greetView.sayHelloUserAvatarList = info.sayHelloUserAvatarList; + [self addSubview:greetView]; + [UIView animateWithDuration:.35 animations:^{ + CGRect rect = greetView.frame; + rect.origin.x = 0; + greetView.frame = rect; + } completion:nil]; + } + } + } roomUid:roomUid]; + }); + } +} + +- (void)xPRoomNewUserGreetView:(XPRoomNewUserGreetView *)view didClickCheckout:(UIButton *)sender { + UIViewController * controller = (UIViewController *)self.delegate; + XPRoomHalfMessageView *halfMessageView = [[XPRoomHalfMessageView alloc] initWithFrame:CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight) controller:controller]; + [controller.view addSubview:halfMessageView]; + [UIView animateWithDuration:.35 animations:^{ + CGRect rect = halfMessageView.frame; + rect.origin.y = 0; + halfMessageView.frame = rect; + }]; +} + +#pragma mark - 新用户房间礼物 +- (void)handleNewUserRoomGift { + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + BOOL hadShow = [defaults boolForKey:kHadShowNewUserGiftKey]; + if (!hadShow && self.delegate.getUserInfo.uid != self.delegate.getRoomInfo.uid) { + if (self.userGiftTimer != nil) { + dispatch_source_cancel(self.userGiftTimer); + } + NSInteger totalTime = 3; + dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); + self.userGiftTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); + dispatch_source_set_timer(self.userGiftTimer,dispatch_walltime(NULL, totalTime*NSEC_PER_SEC), totalTime*NSEC_PER_SEC, 0); //每秒执行 + @weakify(self); + dispatch_source_set_event_handler(self.userGiftTimer, ^{ + dispatch_async(dispatch_get_main_queue(), ^{ + @strongify(self); + if (self.userGiftTimer != nil) { + dispatch_source_cancel(self.userGiftTimer); + self.userGiftTimer = nil; + } + [Api requestNewUserInRoomGift:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + if (data.data != nil) { + GiftInfoModel *giftInfo = [GiftInfoModel modelWithJSON:data.data]; + XPNewUserRoomGiftView *view = [[XPNewUserRoomGiftView alloc] init]; + view.giftInfo = giftInfo; + [TTPopup popupView:view style:TTPopupStyleAlert]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventRoomNugivePopShow]; + } + [defaults setBool:YES forKey:kHadShowNewUserGiftKey]; + [defaults synchronize]; + } + } roomUid:[NSString stringWithFormat:@"%zd", self.delegate.getRoomInfo.uid]]; + }); + }); + dispatch_resume(self.userGiftTimer); + } +} + +#pragma mark - 房间PK +- (void)configRoomPKPanelView:(BOOL)isEnter { + RoomInfoModel * roomInfo = self.delegate.getRoomInfo; + if (roomInfo.roomModeType == RoomModeType_Open_PK_Mode) { + self.roompkPanelView.roomInfo = roomInfo; + if (!self.roompkPanelView.superview) { + [self addSubview:self.roompkPanelView]; + [self.roompkPanelView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self).offset(15); + make.top.mas_equalTo(self).offset(35 + (58 + 5 + 6 + 12) + 38 + (55 + 10 + 12 + 5+16) * 2 + 15 * 2 + kNavigationHeight + 5); + }]; + } + NSString * roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + NSString * uid = [AccountInfoStorage instance].getUid; + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = roomId; + request.userIds = @[uid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + if (error == nil) { + NIMChatroomMember * member = members.firstObject; + if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager) { + self.roompkPanelView.isManager = YES; + }else { + self.roompkPanelView.isManager = NO; + } + + if (isEnter) { + [self.roompkPanelView enterRoomGetRoomPKDetailInfo]; + } + } + }]; + } else { + if (self.roompkPanelView.superview) { + [self.roompkPanelView removeFromSuperview]; + } + } +} + +#pragma mark - 个播PK +- (void)beginMatchAnchorPK:(NSNotification *)noti { + if (!self.anchorPKMatchView.superview) { + [self addSubview:self.anchorPKMatchView]; + self.anchorPKMatchView.roomUid = [NSString stringWithFormat:@"%ld", [self.delegate getRoomInfo].uid]; + [self.anchorPKMatchView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.contributeEnterView.mas_bottom).mas_offset(5+37+5); + make.left.mas_equalTo(0); + make.width.height.mas_equalTo(52); + }]; + NSDictionary *dict = noti.object; + NSNumber *startTime = dict[@"matchPkStartTime"]; + self.delegate.getRoomInfo.pkMatchStartTime = [startTime longLongValue]; + [self.anchorPKMatchView openCountdownWithTime:[startTime longValue]]; + } +} + +#pragma mark - RoomGuestDelegate +- (void)onRoomChange { + if (self.followAnchorTimer != nil) { + dispatch_source_cancel(self.followAnchorTimer); + } + if (self.userGiftTimer != nil) { + dispatch_source_cancel(self.userGiftTimer); + } +} + +- (void)onRoomUpdate { + RoomInfoModel * roomInfo = self.delegate.getRoomInfo; + MicroQueueModel * model = [self.delegate.getMicroQueue objectForKey:@"-1"]; + if (roomInfo.roomModeType == RoomModeType_Open_Blind && model.userInfo && model.userInfo.uid == [AccountInfoStorage instance].getUid.integerValue) { + if (!self.datingProgresButton.superview) { + [self addSubview:self.datingProgresButton]; + [self.datingProgresButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(70, 30)); + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self).offset(354 + kSafeAreaTopHeight + 35); + }]; + } + + switch (roomInfo.blindDateState) { + case RoomPlayDateingType_Talk: + [self.datingProgresButton setTitle:@"开始选择>" forState:UIControlStateNormal]; + break; + case RoomPlayDateingType_Pick: + [self.datingProgresButton setTitle:@"公布心动>" forState:UIControlStateNormal]; + break; + case RoomPlayDateingType_Result: + [self.datingProgresButton setTitle:@"结束本轮>" forState:UIControlStateNormal]; + break; + case RoomPlayDateingType_Finish: + [self.datingProgresButton setTitle:@"嘉宾交流>" forState:UIControlStateNormal]; + break; + default: + break; + } + } else { + if (self.datingProgresButton.superview) { + [self.datingProgresButton removeFromSuperview]; + } + } + [self updateHourRankEntrance]; + if (roomInfo.type == RoomType_Anchor) { + self.contributeEnterView.title = YMLocalizedString(@"XPRoomFunctionContainerView4"); + if (roomInfo.hadChangeRoomType) { + ///切换房间类型初始化当前用户与房间粉丝团关系 + [Api requestInRoomFansTeam:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + XPAnchorFansRelationModel *model = [XPAnchorFansRelationModel modelWithJSON:data.data]; + [self updateFansTeamEntranceView:model]; + } teamUid:[NSString stringWithFormat:@"%ld", roomInfo.uid]]; + [self updateContrionEntranceWithRoomUid:[NSString stringWithFormat:@"%ld", roomInfo.uid] type:@"month"]; + } + } else { + self.contributeEnterView.title = YMLocalizedString(@"XPRoomFunctionContainerView5"); + [self.fansTeamEntranceView removeFromSuperview]; + if (roomInfo.hadChangeRoomType) { + [self updateContrionEntranceWithRoomUid:[NSString stringWithFormat:@"%ld", roomInfo.uid] type:@"day"]; + } + } + [self updateRoomTopic]; + [self configPlayMusicRoomTypeChange]; + [self configRoomPKPanelView:NO]; + ///相亲模式下 隐藏许愿礼物 和vip坑位重叠了 + [self roomInfoUpdateConfigWishGift]; +} + +- (void)onRoomEntered { + RoomInfoModel * roomInfo = self.delegate.getRoomInfo; + NSString * roomUid = [NSString stringWithFormat:@"%ld", roomInfo.uid]; + [self updateHourRankEntrance]; + if(![ClientConfig shareConfig].canOpen) { + self.contributeEnterView.hidden = YES; + } + if (roomInfo.type == RoomType_Anchor) {//个播房 + self.contributeEnterView.title = YMLocalizedString(@"XPRoomFunctionContainerView6"); + ///进房初始化当前用户与房间粉丝团关系 + [Api requestInRoomFansTeam:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + XPAnchorFansRelationModel *model = [XPAnchorFansRelationModel modelWithJSON:data.data]; + [self updateFansTeamEntranceView:model]; + } teamUid:roomUid]; + [self updateContrionEntranceWithRoomUid:roomUid type:@"month"];//获取房间榜前三名 + } else { + self.contributeEnterView.title = YMLocalizedString(@"XPRoomFunctionContainerView7"); + [self updateContrionEntranceWithRoomUid:roomUid type:@"day"];//获取房间榜前三名 + } + if ([ClientConfig shareConfig].canOpen && ![[AccountInfoStorage instance].getUid isEqualToString:roomUid]) {//非房主 + NSString * uid = [[AccountInfoStorage instance] getUid]; + [Api attentionStatusCompletion:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {//是否关注了房主 + BOOL isLike = ((NSNumber *)data.data).boolValue; + if (!isLike && !roomInfo.isRoomFans) { + [self setFollowAnchorTimer]; + } + } uid:uid isLikeUid:roomUid]; + } + if (roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode) { + [Api getAcrossRoomPKDetail:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + AcrossRoomPKPanelModel * acrossPKPanelInfo = [AcrossRoomPKPanelModel modelWithJSON:data.data]; + [self updateAnchorPkInfo:acrossPKPanelInfo]; + if (acrossPKPanelInfo.pkType == AcrossRoomPkTypeAnchor) { + if (acrossPKPanelInfo.aUid.integerValue > 0) { + if (!self.anchorPKPanelView.superview) { + [self addSubview:self.anchorPKPanelView]; + [self.anchorPKPanelView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(kNavigationHeight + 87); + }]; + } + self.anchorPKPanelView.pkPanelInfo = acrossPKPanelInfo; + } + } else { + AcrossRoomPKPanelModel * acrossPKPanelInfo = [AcrossRoomPKPanelModel modelWithJSON:data.data]; + if (acrossPKPanelInfo.aUid.integerValue > 0) { + if (!self.acrossPKPanelView.superview) { + [self addSubview:self.acrossPKPanelView]; + [self.acrossPKPanelView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self).offset(354 + kSafeAreaTopHeight); + }]; + } + self.acrossPKPanelView.pkPanelInfo = acrossPKPanelInfo; + } + } + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } roomUid:roomUid]; + } + if (roomInfo.showPkBeginTime && roomInfo.roomModeType != RoomModeType_Open_AcrossRoomPK_mode) {//显示PK倒计时 + [self handleAcrollPKCountView:roomInfo.pkBeginTime]; + } + [self updateRoomTopic]; + [self configRoomPKPanelView:YES]; + [self handleNewUserGreet]; + ///新用户房间礼物 + [self handleNewUserRoomGift]; + ///房间心愿礼物 + [self configWishGiftEnter]; + ///随机PK匹配 + [self handleMatchAnchorPK]; +} + +- (void)onRoomMiniEntered { + if (![ClientConfig shareConfig].canOpen) { + return; + } + if ([XPRoomMiniManager shareManager].getCurrentMusic) { + if (!self.musicPlayView.superview) { + [self addSubview:self.musicPlayView]; + self.musicPlayView.frame = CGRectMake(-KScreenWidth, kNavigationHeight + 4, KScreenWidth - 85, 80); + } + [self.musicPlayView configCurrentPlayingMusic:[XPRoomMiniManager shareManager].getCurrentMusic isPlaying:[XPRoomMiniManager shareManager].musicPlaying]; + [[XPRoomMiniManager shareManager] configCurrentMusic:nil isPlaying:NO]; + } +} + +- (void)handleNIMCustomMessage:(NIMMessage *)message { + RoomInfoModel * roomInfo = self.delegate.getRoomInfo; + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) { + AttachmentModel *attachment = (AttachmentModel *)obj.attachment; + if (attachment.first == CustomMessageType_AnchorRoom_AudienceUpMic) { + [self showAskForUpMic:attachment.data]; + } else if(attachment.first == CustomMessageType_Gift && (attachment.second == Custom_Message_Sub_Gift_Send || attachment.second == Custom_Message_Sub_Gift_LuckySend || attachment.second == Custom_Message_Sub_Gift_ChannelNotify)) { + if (roomInfo.roomModeType == RoomModeType_Open_PK_Mode) { + [self.roompkPanelView roomPKReceiveGift:attachment]; + } + }else if(attachment.first == CustomMessageType_AllMicroSend && (attachment.second == Custom_Message_Sub_AllMicroSend || attachment.second == Custom_Message_Sub_AllBatchSend || attachment.second == Custom_Message_Sub_AllMicroLuckySend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend)) { + if (roomInfo.roomModeType == RoomModeType_Open_PK_Mode) { + [self.roompkPanelView roomPKReceiveGift:attachment]; + } + } else if(attachment.first == CustomMessageType_Room_PK) { + [self.roompkPanelView handleRoomPKCustomMessage:attachment]; + } else if (attachment.first == CustomMessageType_Across_Room_PK) { + ///自己是公会超管 + BOOL meIsSuperAdmin = NO; + for (GuildSuperAdminInfoModel *managerInfo in self.delegate.getRoomSuperAdminList) { + if ([managerInfo.uid isEqualToString:[AccountInfoStorage instance].getUid]) { + meIsSuperAdmin = YES; + break; + } + } + switch (attachment.second) { + case Custom_Message_Sub_AcrossRoomPK_Invite: + { + [self.acrossPKCountView removeFromSuperview]; + self.acrossPKCountView = nil; + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId]; + request.userIds = @[[AccountInfoStorage instance].getUid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + if (error == nil) { + NIMChatroomMember * member = [members firstObject]; + if (member.type == NIMChatroomMemberTypeCreator || meIsSuperAdmin) { + XPAcrossRoomPKInviteView * inviteView = [[XPAcrossRoomPKInviteView alloc] init]; + inviteView.roomUid = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.uid]; + inviteView.dataDic = attachment.data; + [self addSubview:inviteView]; + [inviteView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self); + }]; + } + } + }]; + + } + break; + case Custom_Message_Sub_AcrossRoomPK_Accept: + { + [self.acrossPKCountView removeFromSuperview]; + self.acrossPKCountView = nil; + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId]; + request.userIds = @[[AccountInfoStorage instance].getUid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + if (error == nil) { + NIMChatroomMember * member = [members firstObject]; + if (member.type == NIMChatroomMemberTypeCreator || meIsSuperAdmin) { + XPAcrossRoomPKInviteResultView * inviteResutView = [[XPAcrossRoomPKInviteResultView alloc] init]; + inviteResutView.isAccept = YES; + [self addSubview:inviteResutView]; + [inviteResutView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self).offset(114 + kSafeAreaTopHeight); + make.centerX.mas_equalTo(self); + make.size.mas_equalTo(CGSizeMake(281, 42)); + }]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [inviteResutView removeFromSuperview]; + }); + } + } + }]; + } + break; + case Custom_Message_Sub_AcrossRoomPK_Reject: + { + [self.acrossPKCountView removeFromSuperview]; + self.acrossPKCountView = nil; + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId]; + request.userIds = @[[AccountInfoStorage instance].getUid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + if (error == nil) { + NIMChatroomMember * member = [members firstObject]; + if (member.type == NIMChatroomMemberTypeCreator || meIsSuperAdmin) { + XPAcrossRoomPKInviteResultView * inviteResutView = [[XPAcrossRoomPKInviteResultView alloc] init]; + inviteResutView.isAccept = NO; + [self addSubview:inviteResutView]; + [inviteResutView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self).offset(114 + kSafeAreaTopHeight); + make.centerX.mas_equalTo(self); + make.size.mas_equalTo(CGSizeMake(201, 42)); + }]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [inviteResutView removeFromSuperview]; + }); + } + } + }]; + } + break; + case Custom_Message_Sub_AcrossRoomPK_Panel: + { + [self.acrossPKCountView removeFromSuperview]; + self.acrossPKCountView = nil; + if (!self.acrossPKPanelView.superview) { + [self addSubview:self.acrossPKPanelView]; + [self.acrossPKPanelView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self).offset(354 + kSafeAreaTopHeight); + make.centerX.mas_equalTo(self); + }]; + } + AcrossRoomPKPanelModel * acrossPKPanelInfo = [AcrossRoomPKPanelModel modelWithJSON:attachment.data]; + self.acrossPKPanelView.pkPanelInfo = acrossPKPanelInfo; + } + break; + case Custom_Message_Sub_AcrossRoomPK_End: + { + [self.acrossPKCountView removeFromSuperview]; + self.acrossPKCountView = nil; + [self.acrossPKPanelView resetAcrossPKViewData]; + [self.acrossPKPanelView removeFromSuperview]; + AcrossRoomPKPanelModel * model = [AcrossRoomPKPanelModel modelWithJSON:attachment.data]; + if (model.isForce) { + XPAcrossRoomPKForceEndResultView *view = [[XPAcrossRoomPKForceEndResultView alloc] initWithFrame:CGRectMake(0, 0, 281, 208)]; + view.data = model; + [TTPopup popupView:view style:TTPopupStyleAlert]; + } else { + XPAcrossRoomPKResultView *view = [[XPAcrossRoomPKResultView alloc] initWithFrame:CGRectMake(0, 0, 320, 453)]; + view.data = model; + [TTPopup popupView:view style:TTPopupStyleAlert]; + } + } + break; + ///个播跨房PK + case Custom_Message_Sub_AnchorPK_Invite://收到个播PK邀请 + { + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId]; + request.userIds = @[[AccountInfoStorage instance].getUid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + if (error == nil) { + NIMChatroomMember * member = [members firstObject]; + if (member.type == NIMTeamMemberTypeOwner) { + XPAnchorPKInviteView * inviteView = [[XPAnchorPKInviteView alloc] init]; + inviteView.roomUid = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.uid]; + inviteView.dataDic = attachment.data; + [TTPopup popupView:inviteView style:TTPopupStyleAlert]; + } + } + }]; + } + break; + case Custom_Message_Sub_AnchorPK_Accept://对方接受个播PK邀请 + { + [self.anchorPKMatchView removeFromSuperview]; + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId]; + request.userIds = @[[AccountInfoStorage instance].getUid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + if (error == nil) { + NIMChatroomMember * member = [members firstObject]; + if (member.type == NIMTeamMemberTypeOwner) { + AcrossRoomPKPanelModel * acrossPKPanelInfo = [AcrossRoomPKPanelModel modelWithJSON:attachment.data]; + [[RtcManager instance] connectOtherRoom:acrossPKPanelInfo.aRoomId userId:acrossPKPanelInfo.aUid]; + [self updateAnchorPkInfo:acrossPKPanelInfo]; + } + } + }]; + } + break; + case Custom_Message_Sub_AnchorPK_Reject://对方拒绝个播PK邀请 + { + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId]; + request.userIds = @[[AccountInfoStorage instance].getUid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + if (error == nil) { + NIMChatroomMember * member = [members firstObject]; + if (member.type == NIMTeamMemberTypeOwner) { + XPAcrossRoomPKInviteResultView * inviteResutView = [[XPAcrossRoomPKInviteResultView alloc] init]; + inviteResutView.isAccept = NO; + [self addSubview:inviteResutView]; + [inviteResutView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self).offset(114 + kSafeAreaTopHeight); + make.centerX.mas_equalTo(self); + make.size.mas_equalTo(CGSizeMake(201, 42)); + }]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [inviteResutView removeFromSuperview]; + }); + } + } + }]; + } + break; + case Custom_Message_Sub_AnchorPK_Panel://个播PK面板消息 + { + [self.anchorPKMatchView removeFromSuperview]; + self.delegate.getRoomInfo.pkMatchStartTime = nil; + if (!self.anchorPKPanelView.superview) { + [self addSubview:self.anchorPKPanelView]; + [self.anchorPKPanelView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(kNavigationHeight + 87); + }]; + } + AcrossRoomPKPanelModel * acrossPKPanelInfo = [AcrossRoomPKPanelModel modelWithJSON:attachment.data]; + self.anchorPKPanelView.pkPanelInfo = acrossPKPanelInfo; + [self updateAnchorPkInfo:acrossPKPanelInfo]; + } + break; + case Custom_Message_Sub_AnchorPK_End://个播PK结束,进入惩罚阶段 + { + if (!self.anchorPKPanelView.superview) { + [self addSubview:self.anchorPKPanelView]; + [self.anchorPKPanelView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(kNavigationHeight + 87); + }]; + } + AcrossRoomPKPanelModel * acrossPKPanelInfo = [AcrossRoomPKPanelModel modelWithJSON:attachment.data]; + self.anchorPKPanelView.pkPanelInfo = acrossPKPanelInfo; + [self updateAnchorPkInfo:acrossPKPanelInfo]; + if (acrossPKPanelInfo.isForce) { + XPAnchorPKFinishView *view = [[XPAnchorPKFinishView alloc] init]; + view.data = acrossPKPanelInfo; + [TTPopup popupView:view style:TTPopupStyleAlert]; + } else { + XPAnchorPKResultView *view = [[XPAnchorPKResultView alloc] initWithFrame:CGRectMake(0, 0, 300, 472)]; + view.data = acrossPKPanelInfo; + [TTPopup popupView:view style:TTPopupStyleAlert]; + } + } + break; + case Custom_Message_Sub_AnchorPK_Finish://个播PK完成 + { + [self.anchorPKPanelView resetAcrossPKViewData]; + [self.anchorPKPanelView removeFromSuperview]; + self.anchorPKPanelView = nil; + [self resetAnchorPkInfo]; + [[RtcManager instance] disconnectOtherRoom]; + } + break; + case Custom_Message_Sub_PK_BeginTime:{ + long long time = [attachment.data[@"beginTime"] longLongValue]; + [self showAcrossPkCountDownViewWithTime:time]; + } + break; + case Custom_Message_Sub_AnchorPK_Match_TimeOut: + {///PK匹配超时 + self.delegate.getRoomInfo.pkMatchStartTime = nil; + self.anchorPKMatchView.roomUid = [NSString stringWithFormat:@"%ld", [self.delegate getRoomInfo].uid]; + [self.anchorPKMatchView handleMatchTimeOutMessage]; + } + break; + case Custom_Message_Sub_AnchorPK_MuteOtherMic:///PK时禁用对方声音 + { + [self.anchorPKPanelView updateOtherMicStatus:attachment]; + } + break; + default: + break; + } + } else if (attachment.first == CustomMessageType_Anchor_FansTeam) { + [self handleAnchorFansTeam:attachment]; + } + } +} + +- (void)handleNIMNotificationMessage:(NIMMessage *)message { + NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; + NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; + switch (content.eventType) { + case NIMChatroomEventTypeAddManager: + { + for (NIMChatroomNotificationMember * member in content.targets) { + if (member.userId.intValue == [AccountInfoStorage instance].getUid.integerValue) { + self.editButton.hidden = NO; + self.roompkPanelView.isManager = YES; + break; + } + } + } + break; + case NIMChatroomEventTypeRemoveManager: + { + for (NIMChatroomNotificationMember * member in content.targets) { + if (member.userId.intValue == [AccountInfoStorage instance].getUid.integerValue) { + self.editButton.hidden = YES; + self.roompkPanelView.isManager = NO; + break; + } + } + } + break; + default: + break; + + } +} + +- (void)onMicroQueueUpdate:(NSMutableDictionary *)queue { + if(self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode) { + self.roompkPanelView.micQueue = queue; + }else { + + if (![ClientConfig shareConfig].canOpen) { + return; + } + MicroQueueModel * currentUserModel; + NSString * uid = [AccountInfoStorage instance].getUid; + for (MicroQueueModel * microModel in queue.allValues) { + if (microModel.userInfo && microModel.userInfo.uid == uid.integerValue) { + currentUserModel = microModel; + } + } + if (currentUserModel) { + if (!self.musicEnterButton.superview) { + [self addSubview:self.musicEnterButton]; + CGFloat topOffY = self.delegate.getRoomInfo.type == RoomType_Anchor || self.delegate.getRoomInfo.isPermitRoom == PermitRoomType_Licnese ? (kNavigationHeight+ 4 + 22 + 18) : (kNavigationHeight+ 4); + if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_Blind) {//相亲厅播放音乐 + [self.musicEnterButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(16); + make.centerY.mas_equalTo(self.contributeEnterView); + make.width.mas_equalTo(22); + make.height.mas_equalTo(22); + }]; + } else { + if (self.hourRankEntranceView.superview) { + [self.musicEnterButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.hourRankEntranceView.mas_right).mas_offset(4); + make.centerY.mas_equalTo(self.contributeEnterView); + make.width.mas_equalTo(22); + make.height.mas_equalTo(22); + }]; + } else { + [self.musicEnterButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(16); + make.centerY.mas_equalTo(self.contributeEnterView); + make.width.mas_equalTo(22); + make.height.mas_equalTo(22); + }]; + } + } + } + } else { + [[RtcManager instance] changePlayState:BackMusicPlayState_Stop]; + if (self.musicEnterButton) { + [self.musicEnterButton removeFromSuperview]; + } + POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; + moveAnimation.fromValue = [NSValue valueWithCGPoint:self.musicPlayView.center]; + moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth, self.musicPlayView.center.y)]; + moveAnimation.beginTime = CACurrentMediaTime(); + moveAnimation.duration = 0.5; + moveAnimation.repeatCount = 1; + moveAnimation.removedOnCompletion = YES; + [self.musicPlayView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; + [self.musicPlayView resetData]; + [self.musicPlayView removeFromSuperview]; + } + } +} +#pragma mark - XPAcrpssRoomPKPanelViewDelegate +- (void)xPAcrpssRoomPKPanelView:(XPAcrpssRoomPKPanelView *)view onlookRoom:(NSString *)roomUid { + [self.delegate exitRoom]; + ///这个为啥加个延迟的 因为会先退房 有一个dismiss的动画 所以加个延迟吧 + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [XPRoomViewController openRoom:roomUid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; + }); +} + +- (void)xPAcrpssRoomPKPanelView:(XPAcrpssRoomPKPanelView *)view sendGiftToUser:(NSString *)uid { + NSString * roomUid = [NSString stringWithFormat:@"%ld", [self.delegate getRoomInfo].uid]; + XPSendGiftView * giftView = [[XPSendGiftView alloc] initWithType:SendGiftType_Room uid:roomUid]; + giftView.delegate = self.delegate; + NSArray * giftUses = [self configGiftUsers:[self.delegate getMicroQueue]]; + [giftView configGiftUsers:giftUses]; + [self.delegate.getCurrentNav presentViewController:giftView animated:YES completion:nil]; +} + +- (NSArray *)configGiftUsers:(NSMutableDictionary *)queue { + NSMutableArray * array = [NSMutableArray array]; + for (MicroQueueModel * microModel in queue.allValues) { + if (microModel.userInfo && microModel.userInfo.uid >0) { + UserInfoModel * userInfo = microModel.userInfo; + XPGiftUserInfoModel * userModel = [[XPGiftUserInfoModel alloc] init]; + userModel.avatar = userInfo.avatar; + userModel.vipMic = userInfo.vipMic; + userModel.position = [NSString stringWithFormat:@"%d", microModel.microState.position]; + userModel.uid = userInfo.uid; + if (self.delegate.getRoomInfo.type == RoomType_Anchor && microModel.microState.position == -1) {///个播房一直为离开模式,不需要添加房主位 + continue; + } + [array addObject:userModel]; + } + } + + if (self.delegate.getRoomInfo.leaveMode) { + RoomInfoModel * roomInfo= self.delegate.getRoomInfo; + XPGiftUserInfoModel * userModel = [[XPGiftUserInfoModel alloc] init]; + userModel.avatar = roomInfo.avatar; + userModel.position = @"-1"; + userModel.uid = roomInfo.uid; + [array addObject:userModel]; + } else if (self.delegate.getRoomInfo.type == RoomType_Anchor) { + RoomInfoModel * roomInfo= self.delegate.getRoomInfo; + BOOL hadContainerOwner = NO; + for (UserInfoModel *userModel in array) { + if (userModel.uid == roomInfo.uid) { + hadContainerOwner = YES; + break; + } + } + if (!hadContainerOwner) { + XPGiftUserInfoModel * userModel = [[XPGiftUserInfoModel alloc] init]; + userModel.avatar = roomInfo.avatar; + userModel.position = @"-1"; + userModel.uid = roomInfo.uid; + [array addObject:userModel]; + } + } + return array; +} + +- (void)xPAcrpssRoomPKPanelView:(XPAcrpssRoomPKPanelView *)view showUserCard:(NSString *)uid { + RoomInfoModel * roomInfo = self.delegate.getRoomInfo; + NSString * targetUid = uid; + XPUserCardInfoModel * model = [[XPUserCardInfoModel alloc] init]; + [[self.delegate.getMicroQueue allValues] enumerateObjectsUsingBlock:^(MicroQueueModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (targetUid.integerValue == obj.userInfo.uid) { + model.position = [NSString stringWithFormat:@"%d", obj.microState.position]; + model.posState = obj.microState.posState; + model.micState = obj.microState.micState; + *stop = YES; + } + }]; + model.nick = self.delegate.getUserInfo.nick; + model.uid = targetUid; + model.delegate = self.delegate; + model.roomInfo = roomInfo; + model.micQueue = self.delegate.getMicroQueue; + model.superMangerList = self.delegate.getRoomSuperAdminList; + XPUserCardViewController * userCardVC = [[XPUserCardViewController alloc] initWithUser:model]; + [self.delegate.getCurrentNav presentViewController:userCardVC animated:YES completion:nil]; +} + +#pragma mark - XPAnchorPkPanelViewDelegate +- (void)xPAnchorPKPanelView:(XPAnchorPkPanelView *)view showUserCard:(NSString *)uid { + if ([ClientConfig shareConfig].canOpen) { + XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init]; + userInfoVC.uid = uid.integerValue; + [self.delegate.getCurrentNav pushViewController:userInfoVC animated:YES]; + }else{ + XPMineSimpleUserInfoViewController * userInfoVC = [[XPMineSimpleUserInfoViewController alloc] init]; + userInfoVC.uid = uid.integerValue; + [self.delegate.getCurrentNav pushViewController:userInfoVC animated:YES]; + } +} + +///去房间 +- (void)xPAnchorPKPanelView:(XPAnchorPkPanelView *)view onlookRoom:(NSString *)roomUid { + [self.delegate exitRoom]; + ///这个为啥加个延迟的 因为会先退房 有一个dismiss的动画 所以加个延迟吧 + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [XPRoomViewController openRoom:roomUid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; + }); +} + +///关注房主成功 +- (void)xPAnchorPKPanelViewAttentionSuccess { + if (self.followAnchorTimer != nil) { + dispatch_source_cancel(self.followAnchorTimer); + self.followAnchorTimer = nil; + } +} + +- (void)xPAnchorPKPanelViewPenaltyCountDownEnd { + self.delegate.getRoomInfo.pkState = AcrossRoomPkStateTypePenaltyEnd; +} + +#pragma mark - XPRoomBackMusicPlayerViewDelegate +- (void)xPRoomBackMusicPlayerView:(XPRoomBackMusicPlayerView *)view musicPlaying:(BOOL)musicPlaying { + if (musicPlaying) { + [self resumeLayer:self.musicEnterButton.imageView.layer]; + } else { + [self pauseLayer:self.musicEnterButton.imageView.layer]; + } +} + +#pragma mark - Event Response +- (void)contributionButtonAction:(UITapGestureRecognizer *)tap { + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.uid]; + XPRoomHalfWebView * webView = [[XPRoomHalfWebView alloc] init]; + webView.url = [NSString stringWithFormat:@"%@?roomUid=%@", URLWithType(kRoomRankURL), roomUid]; + [TTPopup popupView:webView style:TTPopupStyleActionSheet]; + if (self.delegate.getRoomInfo.type == RoomType_Anchor) {//点击的时候更新一下 + [self updateContrionEntranceWithRoomUid:roomUid type:@"month"]; + } else { + [self updateContrionEntranceWithRoomUid:roomUid type:@"day"]; + } + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_giftlist_click eventAttributes:@{@"roomUid" : roomUid}]; +} + +- (void)onAnchorHourRankButtonAction:(UITapGestureRecognizer *)ges { + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.uid]; + NSString * url = self.delegate.getRoomInfo.type == RoomType_Anchor ? URLWithType(kRoomHourRankURL) : URLWithType(kLicenseHourRankURL); + XPRoomHalfWebView * webView = [[XPRoomHalfWebView alloc] init]; + webView.url = [NSString stringWithFormat:@"%@?roomUid=%@", url, roomUid]; + [TTPopup popupView:webView style:TTPopupStyleActionSheet]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_ranklist_click eventAttributes:@{@"roomUid" : roomUid}]; +} + +- (void)datingProgresButtonAction:(UIButton *)sender { + [TTPopup dismiss]; + RoomInfoModel * roomInfo = self.delegate.getRoomInfo; + NSString * message = @""; + if (roomInfo.blindDateState == RoomPlayDateingType_Talk) { + message = @"进入心动选人环节?"; + } else if(roomInfo.blindDateState == RoomPlayDateingType_Pick) { + message = @"进入心动公布环节?"; + } else if(roomInfo.blindDateState == RoomPlayDateingType_Result) { + message = @"结束本轮,同时清空魅力值?"; + } else if (roomInfo.blindDateState == RoomPlayDateingType_Finish) { + message = @"进入嘉宾交流环节?"; + } + TTAlertConfig * config = [[TTAlertConfig alloc] init]; + config.message = message; + [TTPopup alertWithConfig:config confirmHandler:^{ + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.uid]; + NSString * roundId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.blindDateState]; + [Api changeRoomDatingState:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } roomUserId:roomUid roundId:roundId]; + } cancelHandler:^{ + + }]; +} + +- (void)foldButtonAction:(UIButton *)sender { + sender.selected = !sender.selected; +} + +- (void)tapFansTeamRecognizer { + NSString *roomUid = [NSString stringWithFormat:@"%zd", self.delegate.getRoomInfo.uid]; + if (self.relationFansModel.isCurrentRoomAnchor) {///是房主 + if (self.relationFansModel.hasFansTeamCurrentRoom) { + XPRoomHalfWebView * webView = [[XPRoomHalfWebView alloc] init]; + webView.url = [NSString stringWithFormat:@"%@?roomUid=%@", URLWithType(kAnchorFansListURL), roomUid]; + [TTPopup popupView:webView style:TTPopupStyleActionSheet]; + } else { + XPWebViewController * webVC =[[XPWebViewController alloc] init]; + webVC.roomUid = roomUid; + webVC.url = URLWithType(kAnchorFansOpenURL); + [self.delegate.getCurrentNav pushViewController:webVC animated:YES]; + } + } else { + if (self.relationFansModel.hasFansTeamCurrentRoom) {//开通了粉丝团 + if (self.relationFansModel.isAnchorFans) { + [Api requestFansTeamTask:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code != 200) { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + return; + } + XPAnchorFansTaskModel *model = [XPAnchorFansTaskModel modelWithJSON:data.data]; + XPAnchorFansTaskViewController *fansTaskVc = [[XPAnchorFansTaskViewController alloc] initWithRoomUid:roomUid]; + fansTaskVc.model = model; + [self.delegate.getCurrentNav presentViewController:fansTaskVc animated:YES completion:nil]; + } teamUid:roomUid]; + } else { + [Api requestJoinFansTeam:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code != 200) { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + return; + } + XPAnchorFansJoinModel *model = [XPAnchorFansJoinModel modelWithJSON:data.data]; + XPAnchorFansTeamViewController *fansTeamVc = [[XPAnchorFansTeamViewController alloc] initWithRoomUid:roomUid]; + fansTeamVc.model = model; + [self.delegate.getCurrentNav presentViewController:fansTeamVc animated:YES completion:nil]; + } teamUid:roomUid]; + } + } + } +} + +- (void)musicEnterButtonAction:(UIButton *)sender { + if (!self.musicPlayView.superview) { + [self addSubview:self.musicPlayView]; + self.musicPlayView.frame = CGRectMake(-KScreenWidth, kNavigationHeight + 4, KScreenWidth - 85, 80); + } + + POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; + moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth, self.musicPlayView.center.y)]; + moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(KScreenWidth/ 2, self.musicPlayView.center.y)]; + moveAnimation.beginTime = CACurrentMediaTime(); + moveAnimation.duration = 0.5; + moveAnimation.repeatCount = 1; + moveAnimation.removedOnCompletion = YES; + [self.musicPlayView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; + + [UIView animateWithDuration:0.2 animations:^{ + self.musicEnterButton.hidden = YES; + } completion:nil]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_music_click]; +} + +#pragma mark - 房间话题 +- (void)updateRoomTopicViewConstraint { + RoomInfoModel * roomInfo = self.delegate.getRoomInfo; + CGFloat offsetY = kNavigationHeight; + if (roomInfo.roomModeType == RoomModeType_Open_Blind) { + offsetY += ((50 + 5) * kScreenScale + 10 + 12 + 3 + 40); + } else if (roomInfo.type == RoomType_Anchor) { + offsetY += (120 + 5 + 6 + 20 +60 + 3); + } else { + offsetY += (50 + 5 + 10 + 12 + 3 + 40); + } + + [self.topicStackView mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(offsetY); + }]; +} + +- (void)updateRoomTopic { + if(![ClientConfig shareConfig].canOpen) { + self.topicStackView.hidden = YES; + return; + } + if (self.delegate.getRoomInfo.type == RoomType_Anchor && self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode) { + self.topicStackView.hidden = YES; + } else { + self.topicStackView.hidden = ([ClientConfig shareConfig].configInfo.appStoreAuditNoticeVersion || self.delegate.getRoomInfo.type == RoomType_MiniGame) == YES; + } + [self updateRoomTopicViewConstraint]; + if ([AccountInfoStorage instance].getUid.length > 0) { + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId]; + request.userIds = @[[AccountInfoStorage instance].getUid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + if (error== nil) { + NIMChatroomMember* member = members.firstObject; + if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager) { + self.editButton.hidden = NO; + } else { + self.editButton.hidden = YES; + } + } + }]; + } + self.topicLabel.text = self.delegate.getRoomInfo.roomDesc.length > 0 ? self.delegate.getRoomInfo.roomDesc : YMLocalizedString(@"XPRoomFunctionContainerView12"); +} + +- (void)topicGestureRecognizer:(UITapGestureRecognizer *)tap { + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId]; + request.userIds = @[[AccountInfoStorage instance].getUid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + if (error== nil) { + NIMChatroomMember* member = members.firstObject; + RoomInfoModel * roomInfo= self.delegate.getRoomInfo; + if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager) { + XPRoomTopicViewController * editTopicVC = [[XPRoomTopicViewController alloc] init]; + editTopicVC.roomInfo = roomInfo; + [self.delegate.getCurrentNav pushViewController:editTopicVC animated:YES]; + } else { + TTPopupService * config = [[TTPopupService alloc] init]; + XPRoomTopicAlertView * alertView = [[XPRoomTopicAlertView alloc] init]; + alertView.title = roomInfo.roomDesc; + alertView.message = roomInfo.introduction; + config.contentView = alertView; + [TTPopup popupWithConfig:config]; + } + } + }]; +} + +#pragma mark - 弹窗关注房主 +- (void)setFollowAnchorTimer { + if (self.followAnchorTimer != nil) { + dispatch_source_cancel(self.followAnchorTimer); + } +#ifdef DEBUG + NSInteger totalTime = 5; +#else + NSInteger totalTime = 420; +#endif + dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); + self.followAnchorTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); + dispatch_source_set_timer(self.followAnchorTimer,dispatch_walltime(NULL, totalTime*NSEC_PER_SEC), totalTime*NSEC_PER_SEC, 0); //每秒执行 + @weakify(self); + dispatch_source_set_event_handler(self.followAnchorTimer, ^{ + dispatch_async(dispatch_get_main_queue(), ^{ + @strongify(self); + if (self.followAnchorTimer != nil) { + dispatch_source_cancel(self.followAnchorTimer); + self.followAnchorTimer = nil; + } + RoomInfoModel* roomInfo = self.delegate.getRoomInfo; + NSString *roomUid = [NSString stringWithFormat:@"%zd", roomInfo.uid]; + NSString * uid = [[AccountInfoStorage instance] getUid]; + [Api attentionStatusCompletion:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + BOOL isLike = ((NSNumber *)data.data).boolValue; + if (!isLike && !roomInfo.isRoomFans && self.window) { // 还没有关注或收藏房间 + [self showFollowAnchorView]; + } + } uid:uid isLikeUid:roomUid]; + }); + }); + dispatch_resume(self.followAnchorTimer); +} + +//弹出关注主播的窗口 +- (void)showFollowAnchorView { + RoomInfoModel* roomInfo = self.delegate.getRoomInfo; + NSString *roomUid = [NSString stringWithFormat:@"%zd", roomInfo.uid]; + [Api getUserInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + UserInfoModel *userInfo = [UserInfoModel modelWithDictionary:data.data]; + XPRoomAnchorInfoCardView *view = [[XPRoomAnchorInfoCardView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 300)]; + view.userInfo = self.delegate.getUserInfo; + view.targetUserInfo = userInfo; + view.roomId =roomInfo.roomId; + [TTPopup popupView:view style:TTPopupStyleActionSheet]; + } uid:roomUid]; +} + +///个播房用户请求上麦弹窗 +- (void)showAskForUpMic:(NSDictionary *)dict { + NSString *roomUid = [NSString stringWithFormat:@"%zd", self.delegate.getRoomInfo.uid]; + if (![roomUid isEqualToString:[AccountInfoStorage instance].getUid]) { + return; + } + UserInfoModel *model = [UserInfoModel modelWithJSON:dict]; + XPAnchorAudienceUpMicView *upMicView = [[XPAnchorAudienceUpMicView alloc] initWithFrame:CGRectMake(0, 0, 300, 226) delegate:self.delegate]; + upMicView.info = model; + TTPopupConfig *config = [[TTPopupConfig alloc] init]; + config.filterIdentifier = @"audienceRequestUpMic"; + config.shouldFilterPopup = YES; + config.contentView = upMicView; + config.style = TTPopupStyleAlert; + [TTPopup popupWithConfig:config]; +} + +#pragma mark - 个播粉丝团 +- (void)updateFansTeamEntranceView:(XPAnchorFansRelationModel *)model { + if (!self.fansTeamEntranceView.superview) { + [self insertSubview:self.fansTeamEntranceView atIndex:0]; + [self.fansTeamEntranceView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.contributeEnterView.mas_bottom).mas_offset(5); + make.left.mas_equalTo(0); + make.height.mas_equalTo(37); + }]; + } + self.fansTeamEntranceView.model = model; + self.relationFansModel = model; +} + +- (void)handleAnchorFansTeam:(AttachmentModel *)attachment { + if (attachment.second == Custom_Message_Sub_FansTeam_Open_Success || attachment.second == Custom_Message_Sub_FansTeam_Join_Success || attachment.second == Custom_Message_Sub_FansTeam_Out_Success) { + NSString *roomUid = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.uid]; + NSString *uid; + if ([attachment.data[@"uid"] isKindOfClass:[NSNumber class]]) { + uid = [NSString stringWithFormat:@"%@", attachment.data[@"uid"]]; + } else if ([attachment.data[@"uid"] isKindOfClass:[NSString class]]) { + uid = attachment.data[@"uid"]; + } + if ([uid isEqualToString:[AccountInfoStorage instance].getUid] || [[AccountInfoStorage instance].getUid isEqualToString:roomUid]) { + [Api requestInRoomFansTeam:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + XPAnchorFansRelationModel *model = [XPAnchorFansRelationModel modelWithJSON:data.data]; + [self updateFansTeamEntranceView:model]; + } teamUid:roomUid]; + } + } else if (attachment.second == Custom_Message_Sub_FansTeam_Open_Fail) { + + } +} + +- (void)updateAnchorPkInfo:(AcrossRoomPKPanelModel *)acrossPKPanelInfo { + self.delegate.getRoomInfo.roundId = acrossPKPanelInfo.roundId; + self.delegate.getRoomInfo.pkUid = acrossPKPanelInfo.aUid; + self.delegate.getRoomInfo.pkRoomId = acrossPKPanelInfo.aRoomId; + self.delegate.getRoomInfo.pkState = acrossPKPanelInfo.pkState; + self.delegate.getRoomInfo.winUid = acrossPKPanelInfo.winUid; +} + +- (void)resetAnchorPkInfo { + self.delegate.getRoomInfo.roundId = nil; + self.delegate.getRoomInfo.pkUid = nil; + self.delegate.getRoomInfo.pkRoomId = nil; + self.delegate.getRoomInfo.pkState = nil; + self.delegate.getRoomInfo.winUid = nil; + self.delegate.getRoomInfo.pkMatchStartTime = nil; +} +#pragma mark - 房间榜入口榜单 +- (void)updateContrionEntranceWithRoomUid:(NSString *)roomUid type:(NSString *)type { + [Api requestRoomRankings:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {//获取房间榜 + if (code == 200) { + NSMutableArray *array = [NSMutableArray array]; + for (NSDictionary *dict in data.data[@"rankings"]) { + NSString *str = dict[@"avatar"]; + if (str) { + [array addObject:str]; + } + } + self.contributeEnterView.array = array; + } + } roomUid:roomUid type:type page:@"1" pageSize:@"20"]; +} + +#pragma mark - 个播小时榜入口 +- (void)updateHourRankEntrance { + if(![ClientConfig shareConfig].canOpen) { + return; + } + if (self.delegate.getRoomInfo.type == RoomType_Anchor || self.delegate.getRoomInfo.isPermitRoom == PermitRoomType_Licnese) { + if (!self.hourRankEntranceView.superview) { + [self insertSubview:self.hourRankEntranceView atIndex:0]; + [self.hourRankEntranceView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(15); + make.centerY.mas_equalTo(self.contributeEnterView); + make.width.mas_equalTo(61); + make.height.mas_equalTo(22); + }]; + } + } else { + if (self.hourRankEntranceView.superview) {[self.hourRankEntranceView removeFromSuperview];} + } +} + +#pragma mark - 房间背景音乐 +-(void)pauseLayer:(CALayer*)layer { + CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil]; + layer.speed = 0.0; + layer.timeOffset = pausedTime; +} + +-(void)resumeLayer:(CALayer*)layer { + CFTimeInterval pausedTime = [layer timeOffset]; + layer.speed = 1.0; + layer.timeOffset = 0.0; + layer.beginTime = 0.0; + CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime; + layer.beginTime = timeSincePause; +} + +- (void)configPlayMusicRoomTypeChange { + if (![ClientConfig shareConfig].canOpen) { + return; + } + RoomInfoModel * roomInfo = self.delegate.getRoomInfo; + if (roomInfo.type == RoomType_MiniGame) { + [self pauseLayer:self.musicEnterButton.imageView.layer]; + [self.musicEnterButton removeFromSuperview]; + [self.musicPlayView resetData]; + [self.musicPlayView removeFromSuperview]; + [[RtcManager instance] changePlayState:BackMusicPlayState_Stop]; + } else { + MicroQueueModel * currentUserModel; + NSString * uid = [AccountInfoStorage instance].getUid; + for (MicroQueueModel * microModel in self.delegate.getMicroQueue.allValues) { + if (microModel.userInfo && microModel.userInfo.uid == uid.integerValue) { + currentUserModel = microModel; + } + } + if (currentUserModel) { + if (!self.musicEnterButton.superview) { + [self addSubview:self.musicEnterButton]; + CGFloat topOffY = (self.delegate.getRoomInfo.type == RoomType_Anchor || self.delegate.getRoomInfo.isPermitRoom == PermitRoomType_Licnese) ? (kNavigationHeight+ 4 + 22 + 18) : (kNavigationHeight+ 4); + if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_Blind) {//相亲厅播放音乐 + [self.musicEnterButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(16); + make.centerY.mas_equalTo(self.contributeEnterView); + make.width.mas_equalTo(22); + make.height.mas_equalTo(22); + }]; + } else { + if (self.hourRankEntranceView.superview) { + [self.musicEnterButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.hourRankEntranceView.mas_right).mas_offset(4); + make.centerY.mas_equalTo(self.contributeEnterView); + make.width.mas_equalTo(22); + make.height.mas_equalTo(22); + }]; + } else { + [self.musicEnterButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(16); + make.centerY.mas_equalTo(self.contributeEnterView); + make.width.mas_equalTo(22); + make.height.mas_equalTo(22); + }]; + } + } + } + } + } +} + +///跨房PK预约倒计时 +- (void)showAcrossPkCountDownViewWithTime:(long long)time { + if (self.acrossPKCountView.superview) { + return; + } + if (self.acrossPKPanelView.superview) {//正在PK中 + return; + } + if ([self.delegate getRoomInfo].roomModeType == RoomModeType_Open_AcrossRoomPK_mode) { + return; + } + [self handleAcrollPKCountView:time]; +} + +- (void)handleAcrollPKCountView:(long long)time { + RoomInfoModel * roomInfo = self.delegate.getRoomInfo; + if (!self.acrossPKCountView.superview) { + [self addSubview:self.acrossPKCountView]; + [self bringSubviewToFront:self.acrossPKCountView]; + self.acrossPKCountView.startTime = time ? time : roomInfo.pkBeginTime; + self.acrossPKCountView.backImageView.image = [UIImage imageNamed:@"acrossPK_countDown_left_bg"]; + [self.acrossPKCountView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kNavigationHeight+4+24+4); + make.left.mas_equalTo(0); + make.width.height.mas_equalTo(52); + }]; + } +} + +#pragma mark - 心愿礼物 +- (void)tapWishGift { + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.uid]; + XPWishGiftViewController * vc = [[XPWishGiftViewController alloc] initWithRoomUid:roomUid]; + self.wishGiftVC = vc; + vc.delegate = self; + vc.modalPresentationStyle = UIModalPresentationOverFullScreen; + [self.delegate.getCurrentNav presentViewController:vc animated:YES completion:nil]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventRoom_wishlist_pop_click]; +} + +- (void)configWishGiftEnter { + RoomInfoModel * roomInfo = self.delegate.getRoomInfo; + NSString * roomUid = [NSString stringWithFormat:@"%ld", roomInfo.uid]; + if (roomInfo.hasOpenWishGift) { + [Api wishGiftList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + NSArray * array = [WishGiftInfoModel modelsWithArray:data.data]; + self.wishGiftView.giftList = array; + self.wishGiftView.hidden = NO; + } else { + self.wishGiftView.hidden = YES; + } + + if (!self.wishGiftView.superview) { + [self addSubview:self.wishGiftView]; + [self.wishGiftView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self).offset(kNavigationHeight + 47); + make.right.mas_equalTo(self.mas_right).offset(0); + make.size.mas_equalTo(CGSizeMake(81, 30)); + }]; + } + + if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_Blind) { + self.wishGiftView.hidden = YES; + } + + } roomUid:roomUid]; + } else { + if (self.wishGiftView.superview) { + [self.wishGiftView removeFromSuperview]; + } + } +} + +- (void)roomInfoUpdateConfigWishGift { + RoomInfoModel * roomInfo = self.delegate.getRoomInfo; + if (roomInfo.datingState == RoomDatingStateChangeType_Close) { + if (self.wishGiftView.superview) { + self.wishGiftView.hidden = NO; + } + } else if(roomInfo.datingState == RoomDatingStateChangeType_Open){ + if (self.wishGiftView.superview) { + self.wishGiftView.hidden = YES; + } + } +} + +- (void)xPWishGiftViewControllerSendClick:(NSString *)giftId { + NSString * roomUid = [NSString stringWithFormat:@"%ld", [self.delegate getRoomInfo].uid]; + XPSendGiftView * giftView = [[XPSendGiftView alloc] initWithType:SendGiftType_Room uid:roomUid]; + giftView.delegate = self.delegate; + NSArray * giftUses = [self configGiftUsers:[self.delegate getMicroQueue]]; + [giftView configGiftUsers:giftUses]; + giftView.selectGiftId = giftId; + [self.delegate.getCurrentNav presentViewController:giftView animated:YES completion:nil]; +} + +#pragma mark - 随机PK匹配 +- (void)handleMatchAnchorPK { + if (self.delegate.getRoomInfo.pkMatchStartTime) { + [self addSubview:self.anchorPKMatchView]; + self.anchorPKMatchView.roomUid = [NSString stringWithFormat:@"%ld", [self.delegate getRoomInfo].uid]; + [self.anchorPKMatchView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.contributeEnterView.mas_bottom).mas_offset(5+37+5); + make.left.mas_equalTo(0); + make.width.height.mas_equalTo(52); + }]; + [self.anchorPKMatchView openCountdownWithTime:self.delegate.getRoomInfo.pkMatchStartTime]; + } +} + +#pragma mark - Getters And Setters +- (XPRoomRankEntranceView *)contributeEnterView { + if (!_contributeEnterView) { + _contributeEnterView = [[XPRoomRankEntranceView alloc] init]; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(contributionButtonAction:)]; + [_contributeEnterView addGestureRecognizer:tap]; + } + return _contributeEnterView; +} + +- (XPRoomAnchorRankEnterView *)hourRankEntranceView { + if (!_hourRankEntranceView) { + _hourRankEntranceView = [[XPRoomAnchorRankEnterView alloc] init]; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onAnchorHourRankButtonAction:)]; + [_hourRankEntranceView addGestureRecognizer:tap]; + } + return _hourRankEntranceView; +} + +- (UIButton *)datingProgresButton { + if (!_datingProgresButton) { + _datingProgresButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_datingProgresButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFA7186), UIColorFromRGB(0xFA4972)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(65, 30)] forState:UIControlStateNormal]; + [_datingProgresButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _datingProgresButton.titleLabel.font = [UIFont systemFontOfSize:13]; + [_datingProgresButton setTitle:@"开始选择>" forState:UIControlStateNormal]; + [_datingProgresButton addTarget:self action:@selector(datingProgresButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _datingProgresButton.layer.masksToBounds = YES; + _datingProgresButton.layer.cornerRadius = 15; + } + return _datingProgresButton; +} + +- (XPAnchorFansTeamEntranceView *)fansTeamEntranceView { + if (!_fansTeamEntranceView) { + _fansTeamEntranceView = [[XPAnchorFansTeamEntranceView alloc]init]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapFansTeamRecognizer)]; + [_fansTeamEntranceView addGestureRecognizer:tap]; + } + return _fansTeamEntranceView; +} + +- (UIStackView *)topicStackView { + if (!_topicStackView) { + _topicStackView = [[UIStackView alloc] init]; + _topicStackView.axis = UILayoutConstraintAxisHorizontal; + _topicStackView.distribution = UIStackViewDistributionFill; + _topicStackView.alignment = UIStackViewAlignmentFill; + _topicStackView.spacing = 3; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(topicGestureRecognizer:)]; + [_topicStackView addGestureRecognizer:tap]; + } + return _topicStackView; +} + +- (UILabel *)topicLabel { + if (!_topicLabel) { + _topicLabel = [[UILabel alloc] init]; + _topicLabel.font = [UIFont systemFontOfSize:12]; + _topicLabel.textColor = [UIColor whiteColor]; + } + return _topicLabel; +} + +- (UIButton *)editButton { + if (!_editButton) { + _editButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_editButton setImage:[UIImage imageNamed:@"room_postion_topic_edit"] forState:UIControlStateNormal]; + [_editButton setImage:[UIImage imageNamed:@"room_postion_topic_edit"] forState:UIControlStateSelected]; + _editButton.hidden = YES; + } + return _editButton; +} + +- (XPAcrpssRoomPKPanelView *)acrossPKPanelView { + if (!_acrossPKPanelView) { + _acrossPKPanelView = [[XPAcrpssRoomPKPanelView alloc] init]; + _acrossPKPanelView.delegate = self; + } + return _acrossPKPanelView; +} +- (XPAnchorPkPanelView *)anchorPKPanelView { + if (!_anchorPKPanelView) { + _anchorPKPanelView = [[XPAnchorPkPanelView alloc] init]; + _anchorPKPanelView.delegate = self; + } + return _anchorPKPanelView; +} + +- (UIButton *)musicEnterButton { + if (!_musicEnterButton) { + _musicEnterButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_musicEnterButton setImage:[UIImage imageNamed:@"room_music_player_enter"] forState:UIControlStateNormal]; + _musicEnterButton.layer.masksToBounds = YES; + _musicEnterButton.layer.cornerRadius = 11; + _musicEnterButton.backgroundColor = UIColorRGBAlpha(0xffffff, 0.2); + [_musicEnterButton addTarget:self action:@selector(musicEnterButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + CAKeyframeAnimation *lAni = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation.z"]; + lAni.duration = 1.5; + lAni.repeatCount = HUGE; + lAni.values=@[@0,@(M_PI*2)]; + //使得动画结束后,保持动画效果 + lAni.removedOnCompletion = NO; + lAni.fillMode = kCAFillModeForwards; + [_musicEnterButton.imageView.layer addAnimation:lAni forKey:nil]; + } + return _musicEnterButton; +} + +- (XPRoomBackMusicPlayerView *)musicPlayView { + if (!_musicPlayView) { + _musicPlayView = [[XPRoomBackMusicPlayerView alloc] init]; + _musicPlayView.delegate = self; + } + return _musicPlayView; +} + +- (XPRoomPKProgressView *)roompkPanelView { + if (!_roompkPanelView) { + _roompkPanelView = [[XPRoomPKProgressView alloc] init]; + } + return _roompkPanelView; +} + +- (XPAcrossRoomPKCountDownView *)acrossPKCountView { + if (!_acrossPKCountView) { + _acrossPKCountView = [[XPAcrossRoomPKCountDownView alloc] initWithFrame:CGRectMake(-52, kNavigationHeight+4+24+4, 52, 52)]; + } + return _acrossPKCountView; +} + +- (XPAnchorPKMatchView *)anchorPKMatchView { + if (!_anchorPKMatchView) { + _anchorPKMatchView = [[XPAnchorPKMatchView alloc] initWithDelegate:self.delegate]; + } + return _anchorPKMatchView; +} + +- (XPWishGiftEnterView *)wishGiftView { + if (!_wishGiftView) { + _wishGiftView = [[XPWishGiftEnterView alloc] init]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapWishGift)]; + [_wishGiftView addGestureRecognizer:tap]; + } + return _wishGiftView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomRankEntranceView.h b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomRankEntranceView.h new file mode 100644 index 00000000..65a1c5ba --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomRankEntranceView.h @@ -0,0 +1,20 @@ +// +// YMRoomRankEntranceView.h +// YUMI +// +// Created by YUMI on 2022/4/27. +// 房间榜入口 + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomRankEntranceView : UIView + +@property (nonatomic, copy) NSString *title; + +@property (nonatomic, strong) NSArray *array; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomRankEntranceView.m b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomRankEntranceView.m new file mode 100644 index 00000000..532ea212 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomRankEntranceView.m @@ -0,0 +1,133 @@ +// +// YMRoomRankEntranceView.m +// YUMI +// +// Created by YUMI on 2022/4/27. +// + +#import "XPRoomRankEntranceView.h" +///Third +#import +#import "DJDKMIMOMColor.h" +///Tool +#import "NetImageView.h" + +@interface XPRoomRankEntranceView () + +///背景图 +@property (nonatomic, strong) UIView *bgView; +///排行榜容器 +@property (nonatomic, strong) UIView *rankContentView; +///礼物值 +@property (nonatomic, strong) UILabel *titleLabel; +///箭头图标 +@property (nonatomic, strong) UIImageView *iconImageView; + +@end + +@implementation XPRoomRankEntranceView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.bgView]; + [self addSubview:self.rankContentView]; + [self addSubview:self.titleLabel]; + [self addSubview:self.iconImageView]; + for (int i = 0; i < 3; i++) { + NetImageConfig *config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultEmptyAvatarPlaceholder]; + NetImageView *imageView = [[NetImageView alloc] initWithConfig:config]; + imageView.layer.cornerRadius = 10; + imageView.layer.masksToBounds = YES; + [self.rankContentView addSubview:imageView]; + [imageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.rankContentView); + make.width.height.mas_equalTo(20); + make.left.mas_equalTo(i*8); + }]; + } +} + +- (void)initSubViewConstraints { + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.bottom.right.left.mas_equalTo(0); + }]; + [self.rankContentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self); + make.width.mas_equalTo(36); + make.height.mas_equalTo(20); + make.left.mas_equalTo(4); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self); + make.left.mas_equalTo(self.rankContentView.mas_right).mas_offset(4); + }]; + [self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(9); + make.centerY.mas_equalTo(self); + make.left.mas_equalTo(self.titleLabel.mas_right).mas_offset(2); + }]; +} + +#pragma mark - Getters And Setters +- (void)setTitle:(NSString *)title { + self.titleLabel.text = title; +} + +- (void)setArray:(NSArray *)array { + for (int i = 0; i < self.rankContentView.subviews.count; i++) { + NSString *str; + if (array.count > i) { + str = array[i]; + } + NetImageView *imageView = self.rankContentView.subviews[self.rankContentView.subviews.count-1-i]; + imageView.imageUrl = str.length ? str : @""; + } +} + +- (UIView *)bgView { + if (_bgView == nil) { + _bgView = [[UIView alloc] init]; + _bgView.backgroundColor = UIColorRGBAlpha(0xFFFFFF, 0.1); + _bgView.layer.cornerRadius = 12; + _bgView.layer.masksToBounds = YES; + } + return _bgView; +} + +- (UIView *)rankContentView { + if (!_rankContentView) { + _rankContentView = [[UIView alloc] init]; + } + return _rankContentView; +} + +- (UIImageView *)iconImageView { + if (_iconImageView == nil) { + _iconImageView = [[UIImageView alloc] init]; + _iconImageView.image = [UIImage imageNamed:@"room_position_little_game_right_arrow"]; + _iconImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _iconImageView; +} + +- (UILabel *)titleLabel { + if (_titleLabel == nil) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textColor = UIColor.whiteColor; + _titleLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + _titleLabel.text = YMLocalizedString(@"XPRoomRankEntranceView0"); + } + return _titleLabel; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberBackAccommodatedRegard.h b/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberBackAccommodatedRegard.h deleted file mode 100644 index b4326827..00000000 --- a/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberBackAccommodatedRegard.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMRoomBaseUIView.h -// YUMI -// -// Created by YUMI on 2021/10/11. -// - -#import -#import "ChamberHostRepresendtation.h" -#import "ChamberGuestRepresendtation.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberBackAccommodatedRegard : UIView -- (instancetype)initAboutdelegtowardse:(id)delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberBackAccommodatedRegard.m b/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberBackAccommodatedRegard.m deleted file mode 100644 index ac6be8cd..00000000 --- a/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberBackAccommodatedRegard.m +++ /dev/null @@ -1,167 +0,0 @@ -// -// YMRoomBaseUIView.m -// YUMI -// -// Created by YUMI on 2021/10/11. -// 最下面的View - -#import "YUMIChamberBackAccommodatedRegard.h" -#import -#import -#import "ChamberAbstractMatrix.h" -#import "SVGA.h" -#import "SVGAAnatomiserExecutive.h" -#import "YUMIMacroUitls.h" -#import "XNDJTBWGLoadingTool.h" -#import "NetIndicateRegard.h" - -@interface YUMIChamberBackAccommodatedRegard () -@property (nonatomic,strong) NetIndicateRegard *encourageIndicateRegard; -@property (nonatomic, strong) SVGAImageView *svgExhibitionRegard; -@property (nonatomic, strong) SVGAAnatomiserExecutive *anatomiserExecutive; -@property (nonatomic,weak) iddelegate; - -@end - -@implementation YUMIChamberBackAccommodatedRegard - -- (instancetype)initAboutdelegtowardse:(id)delegate { - self = [super init]; - if (self) { - self.delegate = delegate; - [self initSubViews]; - [self initChildLyRestrictions]; - self.clipsToBounds = YES; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.encourageIndicateRegard]; - [self addSubview:self.svgExhibitionRegard]; -} - -- (void)initChildLyRestrictions { - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - [self.svgExhibitionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; -} - -- (void)onChamberImported { - [self refurbishChamberBackground]; -} - -- (void)onChamberRefurbish { - [self refurbishChamberBackground]; -} - -- (void)refurbishChamberBackground { - ChamberAbstractMatrix *roomInfo = [self.delegate acquireChamberAbstract]; - if (roomInfo.backPic.length > 0) { - - self.encourageIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - if ([roomInfo.backPic containsString:@".svga"]) { - self.svgExhibitionRegard.hidden = NO; - @weakify(self); - [self.anatomiserExecutive chamberSvgaAboutWEEBSITE:[NSURL URLWithString:roomInfo.backPic] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { - @strongify(self); - if (videoItem != nil) { - CGFloat width = videoItem.videoSize.width; - CGFloat height = videoItem.videoSize.height; - if (width > height) { - self.svgExhibitionRegard.contentMode = UIViewContentModeScaleAspectFit; - } else { - CGFloat resizeH = KScreenWidth * height / width; - if (resizeH > KScreenHeight) { - self.svgExhibitionRegard.contentMode = UIViewContentModeScaleAspectFill; - } else { - self.svgExhibitionRegard.contentMode = UIViewContentModeScaleAspectFit; - } - } - self.svgExhibitionRegard.loops = INT_MAX; - self.svgExhibitionRegard.clearsAfterStop = NO; - self.svgExhibitionRegard.videoItem = videoItem; - [self.svgExhibitionRegard startAnimation]; - } - } failureBlock:^(NSError * _Nullable error) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Room_Back_Container_View_0")]; - }]; - } else { - [self.svgExhibitionRegard stopAnimation]; - self.svgExhibitionRegard.hidden = YES; - self.encourageIndicateRegard.imageUrl = roomInfo.backPic; - } - }else { - if (roomInfo.type == ChamberGenre_Anchor) { - self.svgExhibitionRegard.hidden = NO; - @weakify(self); - NSString * bgString = [NSString stringWithFormat:@"%@/anchor_room_bg.svga", API_Image_URL]; - NSURL *bgUrl = [NSURL fileURLWithPath:bgString]; - [self.anatomiserExecutive chamberSvgaAboutWEEBSITE:bgUrl completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { - @strongify(self); - if (videoItem != nil) { - CGFloat width = videoItem.videoSize.width; - CGFloat height = videoItem.videoSize.height; - if (width > height) { - self.svgExhibitionRegard.contentMode = UIViewContentModeScaleAspectFit; - } else { - CGFloat resizeH = KScreenWidth * height / width; - if (resizeH > KScreenHeight) { - self.svgExhibitionRegard.contentMode = UIViewContentModeScaleAspectFill; - } else { - self.svgExhibitionRegard.contentMode = UIViewContentModeScaleAspectFit; - } - } - self.svgExhibitionRegard.loops = INT_MAX; - self.svgExhibitionRegard.clearsAfterStop = NO; - self.svgExhibitionRegard.videoItem = videoItem; - [self.svgExhibitionRegard startAnimation]; - } - } failureBlock:^(NSError * _Nullable error) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Room_Back_Container_View_1")]; - }]; - return; - } - self.encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_background"]; - [self.svgExhibitionRegard stopAnimation]; - self.svgExhibitionRegard.hidden = YES; - self.encourageIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - } -} - -#pragma mark - Getters And Setters -- (NetIndicateRegard *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[NetIndicateRegard alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_background"]; - _encourageIndicateRegard.layer.masksToBounds = YES; - _encourageIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _encourageIndicateRegard; -} - -- (SVGAImageView *)svgExhibitionRegard { - if (_svgExhibitionRegard == nil) { - _svgExhibitionRegard = [[SVGAImageView alloc]init]; - _svgExhibitionRegard.contentMode = UIViewContentModeScaleToFill; - _svgExhibitionRegard.userInteractionEnabled = NO; - _svgExhibitionRegard.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); - _svgExhibitionRegard.hidden = YES; - _svgExhibitionRegard.backgroundColor = [UIColor clearColor]; - } - return _svgExhibitionRegard; -} - -- (SVGAAnatomiserExecutive *)anatomiserExecutive { - if (!_anatomiserExecutive) { - _anatomiserExecutive = [[SVGAAnatomiserExecutive alloc]init]; - } - return _anatomiserExecutive; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberEngagementTissuePrecautiousRegard.h b/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberEngagementTissuePrecautiousRegard.h deleted file mode 100644 index df97a7fb..00000000 --- a/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberEngagementTissuePrecautiousRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomDatingWebAlertView.h -// YUMI -// -// Created by YUMI on 2022/1/4. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberEngagementTissuePrecautiousRegard : UIView -@property (nonatomic,copy) NSString *url; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberEngagementTissuePrecautiousRegard.m b/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberEngagementTissuePrecautiousRegard.m deleted file mode 100644 index 3b759b2d..00000000 --- a/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberEngagementTissuePrecautiousRegard.m +++ /dev/null @@ -1,108 +0,0 @@ -// -// YMRoomDatingWebAlertView.m -// YUMI -// -// Created by YUMI on 2022/1/4. -// - -#import "YUMIChamberEngagementTissuePrecautiousRegard.h" -#import -#import "YUMIMacroUitls.h" -#import "MKJPopup.h" -#import "UIButton+EnlargeTouchArea.h" -#import "YUMITissueRegardGovernancer.h" - -static CGFloat const kContentAspectRatio = 2/3.f; - -@interface YUMIChamberEngagementTissuePrecautiousRegard () -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic, strong) YUMITissueRegardGovernancer *webVewC; -@property (nonatomic, strong) UIButton *concludeBtuton; -@end - -@implementation YUMIChamberEngagementTissuePrecautiousRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initRegard]; - [self initContrtowardsions]; - } - return self; -} - -- (void)initRegard { - [self addSubview:self.encourageIndicateRegard]; - [self addSubview:self.concludeBtuton]; - [self.encourageIndicateRegard addSubview:self.webVewC.view]; - -} - -- (void)initContrtowardsions { - CGFloat kscale = 351/315; - CGFloat height = (KScreenWidth - 60) * kscale; - - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth-60); - make.height.mas_equalTo(height + 55); - }]; - - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.height.mas_equalTo(height); - }]; - - [self.webVewC.view mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageIndicateRegard).inset(30); - make.bottom.mas_equalTo(self.encourageIndicateRegard).offset(-20); - make.top.mas_equalTo(self.encourageIndicateRegard).offset(45); - }]; - - - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(35, 35)); - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self.encourageIndicateRegard.mas_bottom).offset(22); - }]; -} - -#pragma mark - Action -- (void)didTicktackConcludeBtuton { - [MKJPopup dismiss]; -} - -#pragma mark - Lazy Load -- (void)setUrl:(NSString *)url { - if (url) { - self.webVewC.url = url; - } -} - - -- (YUMITissueRegardGovernancer *)webVewC { - if (_webVewC == nil) { - _webVewC = [[YUMITissueRegardGovernancer alloc] init]; - _webVewC.view.backgroundColor = UIColor.clearColor; - } - return _webVewC; -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_mode_dating_background"]; - _encourageIndicateRegard.userInteractionEnabled = YES; - } - return _encourageIndicateRegard; -} - -- (UIButton *)concludeBtuton { - if (_concludeBtuton == nil) { - _concludeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_scope_mode_dating_alert_close"] forState:UIControlStateNormal]; - [_concludeBtuton addTarget:self action:@selector(didTicktackConcludeBtuton) forControlEvents:UIControlEventTouchUpInside]; - [_concludeBtuton enlargeContactArea:UIEdgeInsetsMake(10, 10, 10, 10)]; - } - return _concludeBtuton; -} -@end diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberEngagementVipUpwardsLoudspeakerRegard.h b/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberEngagementVipUpwardsLoudspeakerRegard.h deleted file mode 100644 index 87cd7b4a..00000000 --- a/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberEngagementVipUpwardsLoudspeakerRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomDatingVipUpMicView.h -// YUMI -// -// Created by YUMI on 2022/1/4. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberEngagementVipUpwardsLoudspeakerRegard : UIView - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberEngagementVipUpwardsLoudspeakerRegard.m b/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberEngagementVipUpwardsLoudspeakerRegard.m deleted file mode 100644 index c94a46e3..00000000 --- a/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberEngagementVipUpwardsLoudspeakerRegard.m +++ /dev/null @@ -1,95 +0,0 @@ -// -// YMRoomDatingVipUpMicView.m -// YUMI -// -// Created by YUMI on 2022/1/4. -// - -#import "YUMIChamberEngagementVipUpwardsLoudspeakerRegard.h" -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "MKJPopup.h" - -@interface YUMIChamberEngagementVipUpwardsLoudspeakerRegard () -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) UITextView *contentView; -@property (nonatomic,strong) UIButton *concludeBtuton; -@end - -@implementation YUMIChamberEngagementVipUpwardsLoudspeakerRegard -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.encourageIndicateRegard]; - [self addSubview:self.contentView]; - [self addSubview:self.concludeBtuton]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(260); - make.height.mas_equalTo(325 + 55); - }]; - - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.top.right.mas_equalTo(self); - make.height.mas_equalTo(325); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(44); - make.left.mas_equalTo(16); - make.centerX.mas_equalTo(self.encourageIndicateRegard); - make.height.mas_equalTo(271); - }]; - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.encourageIndicateRegard.mas_bottom).offset(20); - make.centerX.mas_equalTo(self); - make.width.height.mas_equalTo(35); - }]; -} - -#pragma mark - Event Response -- (void)concludeBtutonPerformance:(UIButton *)sender { - [MKJPopup dismiss]; -} - -#pragma mark - Getters And Setters -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_mode_dating_vip_rule_background"]; - } - return _encourageIndicateRegard; -} - -- (UITextView *)contentView { - if (!_contentView) { - _contentView = [[UITextView alloc] init]; - _contentView.text = @"1.每轮相亲在“嘉宾交流”阶段累积送礼满999钻石且送礼价值最高的用户自动登上VIP席位;\n\n2.若出现多个满足上VIP席位要求的用户,VIP席位最终由送礼价值最高的用户获得,若送礼价值相同以最先达到该值的用户为准;\n\n3.VIP席位的用户可选择是否下麦,其他用户不可因此代替坐上席位;\n\n4.用户只能在“嘉宾交流”阶段抢夺VIP席位,“嘉宾交流”阶段后直到结束本轮前,即使送出超过之前VIP总礼物价值也不能换人;\n\n5.每轮相亲结束后VIP席位清空,下一轮重新开始抢位。"; - _contentView.backgroundColor = [UIColor clearColor]; - _contentView.textColor = UIColorFromRGB(0xFFF9BC); - _contentView.font = [UIFont systemFontOfSize:12]; - } - return _contentView; -} - -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [[UIButton alloc] init]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_scope_mode_dating_alert_close"] forState:UIControlStateNormal]; - [_concludeBtuton addTarget:self action:@selector(concludeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _concludeBtuton; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberFunctionAccommodatedRegard.h b/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberFunctionAccommodatedRegard.h deleted file mode 100644 index dd818548..00000000 --- a/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberFunctionAccommodatedRegard.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YMRoomFunctionContainerView.h -// YUMI -// -// Created by YUMI on 2021/12/15. -// - -#import -#import "ChamberHostRepresendtation.h" -#import "ChamberGuestRepresendtation.h" -NS_ASSUME_NONNULL_BEGIN -@class Manual; -@interface YUMIChamberFunctionAccommodatedRegard : UIView -- (instancetype)initAboutdelegtowardse:(id)delegate; - -- (Manual *)acquireUniversalManual; -- (BOOL)isPlaying; - -- (NSArray *)acquireChamberCombatGroupSquadSttowardsement; -- (BOOL)isChamberCombatDisporting; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberFunctionAccommodatedRegard.m b/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberFunctionAccommodatedRegard.m deleted file mode 100644 index 894a4fa4..00000000 --- a/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberFunctionAccommodatedRegard.m +++ /dev/null @@ -1,1669 +0,0 @@ -// -// YMRoomFunctionContainerView.m -// YUMI -// -// Created by YUMI on 2021/12/15. -// - -#import "YUMIChamberFunctionAccommodatedRegard.h" -#import -#import -#import -#import -#import "YUMIMacroUitls.h" -#import "AccountAbstractStorage.h" -#import "UIImage+Utils.h" -#import "DJDKMIMOMColor.h" -#import "MKJPopup.h" -#import "Api+Room.h" -#import "XNDJTBWGLoadingTool.h" -#import "YUMIHtmlUrl.h" -#import "Api+Mine.h" -#import "ClientDisposition.h" -#import "XCCurrentVCStackExecutive.h" -#import "YUMIConstant.h" -#import "Api+RoomSetting.h" -#import "RealtimackExecutive.h" -#import "YUMIChamberMiniExecutive.h" -#import "Api+RoomPK.h" -#import "Api+Room.h" -#import "Api+WishGift.h" -#import "StatsticsticsServingFacilitater.h" -#import "NSObject+MJExtension.h" -#import "NSArray+Safe.h" -#import "NSMutableDictionary+Saft.h" -#import "ClientDisposition.h" -#import "ChamberAbstractMatrix.h" -#import "MiecreoscoopeMHTueueMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "AttachmentMatrix.h" -#import "PresentStressAbstractMatrix.h" -#import "ThroughoutChamberCombatFasciaboardMatrix.h" -#import "XCombatellegFanaticsRelationMatrix.h" -#import "XCombatellegFanaticsJoinMatrix.h" -#import "XCombatellegFanaticsmissionMatrix.h" -#import "ThroughoutChamberCombatFasciaboardMatrix.h" -#import "ChamberCombatSpecificAbstractMatrix.h" -#import "ChamberCombatChooseConsumerMatrix.h" -#import "PresentAchieveAbstractMatrix.h" -#import "PresentAbstractMatrix.h" -#import "ChamberCombatSquadMatrix.h" -#import "ChamberStrangeConsumerBewelcometoMatrix.h" -#import "DesirePresentAbstractMatrix.h" -#import "DesirePresentAbstractRefurbishMatrix.h" -#import "YUMIChamberHalfTissueRegard.h" -#import "XCombatellegAudienceUpwardsLoudspeakerRegard.h" -#import "YUMIChamberKellegAbstractSolitaireRegard.h" -#import "YUMIChamberMotifRegardGovernancer.h" -#import "YUMIChamberMotifPrecautiousRegard.h" -#import "YUMIThroughoutChamberCombatCallforRegard.h" -#import "YUMIThroughoutChamberCombatCallforConsequentRegard.h" -#import "YUMIAcrpssChamberCombatFasciaboardRegard.h" -#import "YUMIThroughoutChamberCombatConsequentRegard.h" -#import "YUMIThroughoutChamberCombatForceEndConsequentRegard.h" -#import "XCombatellegCombatCallforRegard.h" -#import "XCombatellegCombatConsequentRegard.h" -#import "XCombatellegCombatFinishRegard.h" -#import "YUMIDischargePresentRegard.h" -#import "YUMIConsumerSolitaireRegardGovernancer.h" -#import "YUMIChamberRegardGovernancer.h" -#import "ThroughoutChamberCombatCaptureMatrix.h" -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -#import "YUMIManeSimpleConsumerAbstractRegardGovernancer.h" -#import "YUMIChamberRateEntranceRegard.h" -#import "YUMIChamberKellegRateImportRegard.h" -#import "YUMIChamberBackManualDisporterRegard.h" -#import "YUMIChamberStrangeConsumerBewelcometoRegard.h" -#import "YUMIChamberHalfCommunicationRegard.h" -#import "YUMIThroughoutChamberCombatComputationDownRegard.h" -#import "YUMIStrangeConsumerChamberPresentRegard.h" -#import "YUMIDesirePresentRegardGovernancer.h" -#import "YUMIDesirePresentImportRegard.h" -#import "XCombatellegFanaticsSquadEntranceRegard.h" -#import "XCombatellegFanaticsSquadRegardGovernancer.h" -#import "XCombatellegFanaticsmissionRegardGovernancer.h" -#import "XCombatellegPkFasciaboardRegard.h" -#import "YUMITissueRegardGovernancer.h" -#import "YUMIChamberCombatProgressRegard.h" -#import "XCombatellegCombatAdaptationRegard.h" - -@interface YUMIChamberFunctionAccommodatedRegard () -@property (nonatomic,weak) iddelegate; -@property (nonatomic,strong) YUMIChamberRateEntranceRegard *efficacyImportRegard; -@property (nonatomic,strong) UIButton *engagementProgresBtuton; -@property (nonatomic, strong) dispatch_source_t followKellegIntratemper; -@property (nonatomic, strong) XCombatellegFanaticsSquadEntranceRegard *fanaticsSquadAccessRegard; -@property (nonatomic, strong) YUMIChamberKellegRateImportRegard *stundeRateAccessRegard; -@property (nonatomic,strong) UIStackView *motifHierarchyRegard; -@property (nonatomic,strong) UILabel *motifSequencignation; -@property (nonatomic,strong) UIButton *compileBtuton; -@property (nonatomic,strong) YUMIAcrpssChamberCombatFasciaboardRegard *throughoutCombatFasciadirectorateRegard; -@property (nonatomic, strong) YUMIThroughoutChamberCombatComputationDownRegard *throughoutCombatComputationRegard; -@property (nonatomic, strong) XCombatellegCombatAdaptationRegard *kellegCombatAdaptationRegard; -@property (nonatomic, strong) XCombatellegFanaticsRelationMatrix *relationFanaticsMatrix; -@property (nonatomic, strong) XCombatellegPkFasciaboardRegard *kellegCombatFasciadirectorateRegard; -@property (nonatomic,strong) UIButton *manualImportBtuton; -@property (nonatomic,strong) YUMIChamberBackManualDisporterRegard *manualDisportRegard; -@property (nonatomic,strong) YUMIChamberCombatProgressRegard *chambercombatFasciadirectorateRegard; -@property (nonatomic,strong) ChamberCombatSpecificAbstractMatrix *combatSpecificAbstract; -@property (nonatomic,assign) BOOL isChamberBewelcometo; -@property (nonatomic, strong) dispatch_source_t consumerPresentIntratemper; -@property (nonatomic,strong) YUMIDesirePresentImportRegard *sequencirePresentRegard; -@property (nonatomic,weak) YUMIDesirePresentRegardGovernancer* wishGiftVC ; - -@end - -@implementation YUMIChamberFunctionAccommodatedRegard - -- (void)dealloc { - if (self.followKellegIntratemper != nil) { - dispatch_source_cancel(self.followKellegIntratemper); - } - if (self.consumerPresentIntratemper != nil) { - dispatch_source_cancel(self.consumerPresentIntratemper); - } - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - -- (instancetype)initAboutdelegtowardse:(id)delegate { - self = [super init]; - if (self) { - self.delegate = delegate; - [self initSubViews]; - [self initChildLyRestrictions]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(instituteDirectoryapttowardsionKellegCombat:) name:@"anchorPKMatchBegin" object:nil]; - } - return self; -} - -- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { - for (NSInteger i = (self.subviews.count - 1) ; i >= 0 ; i--) { - UIView * subView = [self.subviews secureGroalTowardsIndictowardsrix1:i]; - CGPoint convertPoint = [subView convertPoint:point fromView:self]; - if (CGRectContainsPoint(subView.bounds, convertPoint)) { - return [subView hitTest:convertPoint withEvent:event]; - } - } - - - for (NSInteger i = (self.subviews.count - 1) ; i >= 0 ; i--) { - UIView * subView = [self.subviews objectAtIndex:i]; - if (self.manualDisportRegard.superview && self.manualImportBtuton.hidden == YES && ![subView isEqual:self.manualDisportRegard]) { - [UIView animateWithDuration:0.2 animations:^{ - self.manualImportBtuton.hidden = NO; - } completion:nil]; - - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:self.manualDisportRegard.center]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth, self.manualDisportRegard.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime(); - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - [self.manualDisportRegard pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; - break; - } - } - return nil; -} - -#pragma mark - Public Method - -- (Manual *)acquireUniversalManual { - return self.manualDisportRegard.universalManual; -} - -- (BOOL)isPlaying { - return self.manualDisportRegard.isPlaying; -} - - -- (NSArray *)acquireChamberCombatGroupSquadSttowardsement { - NSArray * redArray = @[]; - if (self.chambercombatFasciadirectorateRegard.deficitConcludeGarment > 0) { - redArray = self.chambercombatFasciadirectorateRegard.deficitConcludeGarment; - } - - NSArray * blueArray = @[]; - if (self.chambercombatFasciadirectorateRegard.disappointedConcludeGarment > 0) { - blueArray = self.chambercombatFasciadirectorateRegard.disappointedConcludeGarment; - } - return @[redArray, blueArray]; -} - -- (BOOL)isChamberCombatDisporting { - return [self.chambercombatFasciadirectorateRegard isChamberCombatDisporting]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.efficacyImportRegard]; - [self addSubview:self.motifHierarchyRegard]; - [self.motifHierarchyRegard addArrangedSubview:self.motifSequencignation]; - [self.motifHierarchyRegard addArrangedSubview:self.compileBtuton]; -} - -- (void)initChildLyRestrictions { - [self.efficacyImportRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(12); - make.top.mas_equalTo(kNavigationHeight+4); - make.width.mas_equalTo(99); - make.height.mas_equalTo(24); - }]; - - [self.motifHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.height.mas_equalTo(15); - make.top.mas_equalTo(50 + 5 + 6 + 12 + 3 + kNavigationHeight); - }]; -} - -#pragma mark - 新用户打招呼动画 -- (void)shankStrangeConsumerBewelcometo { - if (self.delegate.getUserInfo.fromType == ConsumerEnterChamberFromGenre_New_User_Greet && !self.isChamberBewelcometo) { - self.isChamberBewelcometo = YES; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.delegate.acquireChamberAbstract.uid]; - [Api strangeConsumerInititowardseBewelcometo:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - ChamberStrangeConsumerBewelcometoMatrix * info = [ChamberStrangeConsumerBewelcometoMatrix mtowardsrixAboutImpactbasket:data.data]; - if (info.roomPopup) { - YUMIChamberStrangeConsumerBewelcometoRegard * greetView = [[YUMIChamberStrangeConsumerBewelcometoRegard alloc] initWithFrame:CGRectMake(KScreenWidth, kSafeAreaTopHeight + 52, KScreenWidth, 80)]; - greetView.delegate = self; - greetView.sayHelloUserAvatarList = info.sayHelloUserAvatarList; - [self addSubview:greetView]; - [UIView animateWithDuration:.35 animations:^{ - CGRect rect = greetView.frame; - rect.origin.x = 0; - greetView.frame = rect; - } completion:nil]; - } - } - } roomUid:roomUid]; - }); - } -} - -- (void)yUMIChamberStrangeConsumerBewelcometoRegard:(YUMIChamberStrangeConsumerBewelcometoRegard *)view didClickCheckout:(UIButton *)sender { - UIViewController * controller = (UIViewController *)self.delegate; - YUMIChamberHalfCommunicationRegard *halfMessageView = [[YUMIChamberHalfCommunicationRegard alloc] initWithFrame:CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight) controller:controller]; - [controller.view addSubview:halfMessageView]; - [UIView animateWithDuration:.35 animations:^{ - CGRect rect = halfMessageView.frame; - rect.origin.y = 0; - halfMessageView.frame = rect; - }]; -} - -#pragma mark - 新用户房间礼物 -- (void)shankStrangeConsumerChamberPresent { - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - BOOL hadShow = [defaults boolForKey:kHadShowNewUserGiftKey]; - if (!hadShow && self.delegate.getUserInfo.uid != self.delegate.acquireChamberAbstract.uid) { - if (self.consumerPresentIntratemper != nil) { - dispatch_source_cancel(self.consumerPresentIntratemper); - } - NSInteger totalTime = 3; - dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); - self.consumerPresentIntratemper = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); - dispatch_source_set_timer(self.consumerPresentIntratemper,dispatch_walltime(NULL, totalTime*NSEC_PER_SEC), totalTime*NSEC_PER_SEC, 0); - @weakify(self); - dispatch_source_set_event_handler(self.consumerPresentIntratemper, ^{ - dispatch_async(dispatch_get_main_queue(), ^{ - @strongify(self); - if (self.consumerPresentIntratemper != nil) { - dispatch_source_cancel(self.consumerPresentIntratemper); - self.consumerPresentIntratemper = nil; - } - [Api requisitionStrangeConsumerInChamberPresent:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - if (data.data != nil) { - PresentAbstractMatrix *giftInfo = [PresentAbstractMatrix mtowardsrixAboutJSON:data.data]; - YUMIStrangeConsumerChamberPresentRegard *view = [[YUMIStrangeConsumerChamberPresentRegard alloc] init]; - view.giftInfo = giftInfo; - [MKJPopup popupRegard:view style:MKJPopupStyleAlert]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventRoomNugivePopShow]; - } - [defaults setBool:YES forKey:kHadShowNewUserGiftKey]; - [defaults synchronize]; - } - } roomUid:[NSString stringWithFormat:@"%zd", self.delegate.acquireChamberAbstract.uid]]; - }); - }); - dispatch_resume(self.consumerPresentIntratemper); - } -} - -#pragma mark - 房间PK -- (void)prohibitipositionChamberCombatFasciaboardRegard:(BOOL)isEnter { - ChamberAbstractMatrix * roomInfo = self.delegate.acquireChamberAbstract; - if (roomInfo.roomModeType == ChamberModeGenre_Open_PK_Mode) { - self.chambercombatFasciadirectorateRegard.roomInfo = roomInfo; - if (!self.chambercombatFasciadirectorateRegard.superview) { - [self addSubview:self.chambercombatFasciadirectorateRegard]; - [self.chambercombatFasciadirectorateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self).offset(15); - make.top.mas_equalTo(self).offset(35 + (58 + 5 + 6 + 12) + 38 + (55 + 10 + 12 + 5+16) * 2 + 15 * 2 + kNavigationHeight + 5); - }]; - } - NSString * roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = roomId; - request.userIds = @[uid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - if (error == nil) { - NIMChatroomMember * member = members.firstObject; - if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager) { - self.chambercombatFasciadirectorateRegard.isManager = YES; - }else { - self.chambercombatFasciadirectorateRegard.isManager = NO; - } - - if (isEnter) { - [self.chambercombatFasciadirectorateRegard importChamberAcquireChamberCombatSpecificAbstract]; - } - } - }]; - } else { - if (self.chambercombatFasciadirectorateRegard.superview) { - [self.chambercombatFasciadirectorateRegard removeFromSuperview]; - } - } -} - -#pragma mark - 个播PK -- (void)instituteDirectoryapttowardsionKellegCombat:(NSNotification *)noti { - if (!self.kellegCombatAdaptationRegard.superview) { - [self addSubview:self.kellegCombatAdaptationRegard]; - self.kellegCombatAdaptationRegard.roomUid = [NSString stringWithFormat:@"%ld", [self.delegate acquireChamberAbstract].uid]; - [self.kellegCombatAdaptationRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.efficacyImportRegard.mas_bottom).mas_offset(5+37+5); - make.left.mas_equalTo(0); - make.width.height.mas_equalTo(52); - }]; - NSDictionary *dict = noti.object; - NSNumber *startTime = dict[@"matchPkStartTime"]; - self.delegate.acquireChamberAbstract.pkMatchStartTime = [startTime longLongValue]; - [self.kellegCombatAdaptationRegard unfoildComputtowardsiondownAboutIntrtowardsemporal:[startTime longValue]]; - } -} - -#pragma mark - ChamberGuestRepresendtation -- (void)onChamberDiversifictowardsion { - if (self.followKellegIntratemper != nil) { - dispatch_source_cancel(self.followKellegIntratemper); - } - if (self.consumerPresentIntratemper != nil) { - dispatch_source_cancel(self.consumerPresentIntratemper); - } -} - -- (void)onChamberRefurbish { - ChamberAbstractMatrix * roomInfo = self.delegate.acquireChamberAbstract; - MiecreoscoopeMHTueueMatrix * model = [self.delegate.acquireMiecreoscoopeInthecaseofmtowardsion objectForKey:@"-1"]; - if (roomInfo.roomModeType == ChamberModeGenre_Open_Blind && model.userInfo && model.userInfo.uid == [AccountAbstractStorage instance].acquireCid.integerValue) { - if (!self.engagementProgresBtuton.superview) { - [self addSubview:self.engagementProgresBtuton]; - [self.engagementProgresBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(70, 30)); - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self).offset(354 + kSafeAreaTopHeight + 35); - }]; - } - - switch (roomInfo.blindDateState) { - case ChamberDisportDateingGenre_Talk: - [self.engagementProgresBtuton setTitle:@"开始选择>" forState:UIControlStateNormal]; - break; - case ChamberDisportDateingGenre_Pick: - [self.engagementProgresBtuton setTitle:@"公布心动>" forState:UIControlStateNormal]; - break; - case ChamberDisportDateingGenre_Result: - [self.engagementProgresBtuton setTitle:@"结束本轮>" forState:UIControlStateNormal]; - break; - case ChamberDisportDateingGenre_Finish: - [self.engagementProgresBtuton setTitle:@"嘉宾交流>" forState:UIControlStateNormal]; - break; - default: - break; - } - } else { - if (self.engagementProgresBtuton.superview) { - [self.engagementProgresBtuton removeFromSuperview]; - } - } - [self refurbishStundeRtowardseAccess]; - if (roomInfo.type == ChamberGenre_Anchor) { - self.efficacyImportRegard.title = YMLocalizedString(@"YUMI_Room_Function_Container_View_4"); - if (roomInfo.hadChangeRoomType) { - - [Api requisitionInChamberFantowardsicsSquad:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - XCombatellegFanaticsRelationMatrix *model = [XCombatellegFanaticsRelationMatrix mtowardsrixAboutJSON:data.data]; - [self refurbishFantowardsicsSquadAccessRegard:model]; - } teamUid:[NSString stringWithFormat:@"%ld", roomInfo.uid]]; - [self refurbishContrionAccessAboutChamberCid:[NSString stringWithFormat:@"%ld", roomInfo.uid] type:@"month"]; - } - } else { - self.efficacyImportRegard.title = YMLocalizedString(@"YUMI_Room_Function_Container_View_5"); - [self.fanaticsSquadAccessRegard removeFromSuperview]; - if (roomInfo.hadChangeRoomType) { - [self refurbishContrionAccessAboutChamberCid:[NSString stringWithFormat:@"%ld", roomInfo.uid] type:@"day"]; - } - } - [self refurbishChamberMotif]; - [self prohibitipositionDisportManualChamberGenreDiversifictowardsion]; - [self prohibitipositionChamberCombatFasciaboardRegard:NO]; - - [self chamberAbstractRefurbishDispositionSequencirePresent]; -} - -- (void)onChamberImported { - ChamberAbstractMatrix * roomInfo = self.delegate.acquireChamberAbstract; - NSString * roomUid = [NSString stringWithFormat:@"%ld", roomInfo.uid]; - [self refurbishStundeRtowardseAccess]; - if(![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - self.efficacyImportRegard.hidden = YES; - } - if (roomInfo.type == ChamberGenre_Anchor) { - self.efficacyImportRegard.title = YMLocalizedString(@"YUMI_Room_Function_Container_View_6"); - - [Api requisitionInChamberFantowardsicsSquad:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - XCombatellegFanaticsRelationMatrix *model = [XCombatellegFanaticsRelationMatrix mtowardsrixAboutJSON:data.data]; - [self refurbishFantowardsicsSquadAccessRegard:model]; - } teamUid:roomUid]; - [self refurbishContrionAccessAboutChamberCid:roomUid type:@"month"]; - } else { - self.efficacyImportRegard.title = YMLocalizedString(@"YUMI_Room_Function_Container_View_7"); - [self refurbishContrionAccessAboutChamberCid:roomUid type:@"day"]; - } - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild && ![[AccountAbstractStorage instance].acquireCid isEqualToString:roomUid]) { - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - [Api considertowardsionPositionImplementtowardsion:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - BOOL isLike = ((NSNumber *)data.data).boolValue; - if (!isLike && !roomInfo.isRoomFans) { - [self setFollowKellegIntratemper]; - } - } uid:uid isLikeUid:roomUid]; - } - if (roomInfo.roomModeType == ChamberModeGenre_Open_AcrossRoomPK_mode) { - [Api acquireThroughoutChamberCombatSpecific:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - ThroughoutChamberCombatFasciaboardMatrix * acrossPKPanelInfo = [ThroughoutChamberCombatFasciaboardMatrix mtowardsrixAboutJSON:data.data]; - [self refurbishKellegCombateAbstract:acrossPKPanelInfo]; - if (acrossPKPanelInfo.pkType == ThroughoutChamberPkGenreAnchor) { - if (acrossPKPanelInfo.aUid.integerValue > 0) { - if (!self.kellegCombatFasciadirectorateRegard.superview) { - [self addSubview:self.kellegCombatFasciadirectorateRegard]; - [self.kellegCombatFasciadirectorateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(kNavigationHeight + 87); - }]; - } - self.kellegCombatFasciadirectorateRegard.combatFasciadirectorateAbstract = acrossPKPanelInfo; - } - } else { - ThroughoutChamberCombatFasciaboardMatrix * acrossPKPanelInfo = [ThroughoutChamberCombatFasciaboardMatrix mtowardsrixAboutJSON:data.data]; - if (acrossPKPanelInfo.aUid.integerValue > 0) { - if (!self.throughoutCombatFasciadirectorateRegard.superview) { - [self addSubview:self.throughoutCombatFasciadirectorateRegard]; - [self.throughoutCombatFasciadirectorateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self).offset(354 + kSafeAreaTopHeight); - }]; - } - self.throughoutCombatFasciadirectorateRegard.combatFasciadirectorateAbstract = acrossPKPanelInfo; - } - } - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } roomUid:roomUid]; - } - if (roomInfo.showPkBeginTime && roomInfo.roomModeType != ChamberModeGenre_Open_AcrossRoomPK_mode) { - [self shankAcrollCombatComputtowardsionRegard:roomInfo.pkBeginTime]; - } - [self refurbishChamberMotif]; - [self prohibitipositionChamberCombatFasciaboardRegard:YES]; - [self shankStrangeConsumerBewelcometo]; - - [self shankStrangeConsumerChamberPresent]; - - [self prohibitipositionSequencirePresentImport]; - - [self shankDirectoryapttowardsionKellegCombat]; -} - -- (void)onChamberRoadliceImported { - if (![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - return; - } - if ([YUMIChamberMiniExecutive shareManager].acquireUniversalManual) { - if (!self.manualDisportRegard.superview) { - [self addSubview:self.manualDisportRegard]; - self.manualDisportRegard.frame = CGRectMake(-KScreenWidth, kNavigationHeight + 4, KScreenWidth - 85, 80); - } - [self.manualDisportRegard prohibitipositionUniversalDisportingManual:[YUMIChamberMiniExecutive shareManager].acquireUniversalManual isPlaying:[YUMIChamberMiniExecutive shareManager].manualDisporting]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionUniversalManual:nil isPlaying:NO]; - } -} - -- (void)shankNEMCIndividualityCommunictowardsion:(NIMMessage *)message { - ChamberAbstractMatrix * roomInfo = self.delegate.acquireChamberAbstract; - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentMatrix class]]) { - AttachmentMatrix *attachment = (AttachmentMatrix *)obj.attachment; - if (attachment.first == IndividualityCommunicationGenre_AnchorRoom_AudienceUpMic) { - [self EvidenceAskInthecaseofupburdenLoudspeaker:attachment.data]; - } else if(attachment.first == IndividualityCommunicationGenre_Gift && (attachment.second == Custom_Message_Sub_Gift_Send || attachment.second == Custom_Message_Sub_Gift_LuckySend || attachment.second == Custom_Message_Sub_Gift_ChannelNotify)) { - if (roomInfo.roomModeType == ChamberModeGenre_Open_PK_Mode) { - [self.chambercombatFasciadirectorateRegard chamberCombatReceivePresent:attachment]; - } - }else if(attachment.first == IndividualityCommunicationGenre_AllMicroSend && (attachment.second == Custom_Message_Sub_AllMicroSend || attachment.second == Custom_Message_Sub_AllBatchSend || attachment.second == Custom_Message_Sub_AllMicroLuckySend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend)) { - if (roomInfo.roomModeType == ChamberModeGenre_Open_PK_Mode) { - [self.chambercombatFasciadirectorateRegard chamberCombatReceivePresent:attachment]; - } - } else if(attachment.first == IndividualityCommunicationGenre_Room_PK) { - [self.chambercombatFasciadirectorateRegard shankChamberCombatIndividualityCommunictowardsion:attachment]; - } else if (attachment.first == IndividualityCommunicationGenre_Across_Room_PK) { - - BOOL meIsSensationalManagement = NO; - for (UnionSensationalManagementAbstractMatrix *executiveAbstract in self.delegate.acquireChamberSenstowardsionalManagementSttowardsement) { - if ([executiveAbstract.uid isEqualToString:[AccountAbstractStorage instance].acquireCid]) { - meIsSensationalManagement = YES; - break; - } - } - switch (attachment.second) { - case Custom_Message_Sub_AcrossRoomPK_Invite: - { - [self.throughoutCombatComputationRegard removeFromSuperview]; - self.throughoutCombatComputationRegard = nil; - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.acquireChamberAbstract.roomId]; - request.userIds = @[[AccountAbstractStorage instance].acquireCid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - if (error == nil) { - NIMChatroomMember * member = [members firstObject]; - if (member.type == NIMChatroomMemberTypeCreator || meIsSensationalManagement) { - YUMIThroughoutChamberCombatCallforRegard * centiretyforRegard = [[YUMIThroughoutChamberCombatCallforRegard alloc] init]; - centiretyforRegard.roomUid = [NSString stringWithFormat:@"%ld", self.delegate.acquireChamberAbstract.uid]; - centiretyforRegard.atoloudspeakerPackbask = attachment.data; - [self addSubview:centiretyforRegard]; - [centiretyforRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.mas_equalTo(self); - }]; - } - } - }]; - - } - break; - case Custom_Message_Sub_AcrossRoomPK_Accept: - { - [self.throughoutCombatComputationRegard removeFromSuperview]; - self.throughoutCombatComputationRegard = nil; - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.acquireChamberAbstract.roomId]; - request.userIds = @[[AccountAbstractStorage instance].acquireCid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - if (error == nil) { - NIMChatroomMember * member = [members firstObject]; - if (member.type == NIMChatroomMemberTypeCreator || meIsSensationalManagement) { - YUMIThroughoutChamberCombatCallforConsequentRegard * inviteResutView = [[YUMIThroughoutChamberCombatCallforConsequentRegard alloc] init]; - inviteResutView.isRecognize = YES; - [self addSubview:inviteResutView]; - [inviteResutView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self).offset(114 + kSafeAreaTopHeight); - make.centerX.mas_equalTo(self); - make.size.mas_equalTo(CGSizeMake(281, 42)); - }]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [inviteResutView removeFromSuperview]; - }); - } - } - }]; - } - break; - case Custom_Message_Sub_AcrossRoomPK_Reject: - { - [self.throughoutCombatComputationRegard removeFromSuperview]; - self.throughoutCombatComputationRegard = nil; - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.acquireChamberAbstract.roomId]; - request.userIds = @[[AccountAbstractStorage instance].acquireCid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - if (error == nil) { - NIMChatroomMember * member = [members firstObject]; - if (member.type == NIMChatroomMemberTypeCreator || meIsSensationalManagement) { - YUMIThroughoutChamberCombatCallforConsequentRegard * inviteResutView = [[YUMIThroughoutChamberCombatCallforConsequentRegard alloc] init]; - inviteResutView.isRecognize = NO; - [self addSubview:inviteResutView]; - [inviteResutView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self).offset(114 + kSafeAreaTopHeight); - make.centerX.mas_equalTo(self); - make.size.mas_equalTo(CGSizeMake(201, 42)); - }]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [inviteResutView removeFromSuperview]; - }); - } - } - }]; - } - break; - case Custom_Message_Sub_AcrossRoomPK_Panel: - { - [self.throughoutCombatComputationRegard removeFromSuperview]; - self.throughoutCombatComputationRegard = nil; - if (!self.throughoutCombatFasciadirectorateRegard.superview) { - [self addSubview:self.throughoutCombatFasciadirectorateRegard]; - [self.throughoutCombatFasciadirectorateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self).offset(354 + kSafeAreaTopHeight); - make.centerX.mas_equalTo(self); - }]; - } - ThroughoutChamberCombatFasciaboardMatrix * acrossPKPanelInfo = [ThroughoutChamberCombatFasciaboardMatrix mtowardsrixAboutJSON:attachment.data]; - self.throughoutCombatFasciadirectorateRegard.combatFasciadirectorateAbstract = acrossPKPanelInfo; - } - break; - case Custom_Message_Sub_AcrossRoomPK_End: - { - [self.throughoutCombatComputationRegard removeFromSuperview]; - self.throughoutCombatComputationRegard = nil; - [self.throughoutCombatFasciadirectorateRegard replacementThroughoutCombatRegardTowardsoloudspeaker]; - [self.throughoutCombatFasciadirectorateRegard removeFromSuperview]; - ThroughoutChamberCombatFasciaboardMatrix * model = [ThroughoutChamberCombatFasciaboardMatrix mtowardsrixAboutJSON:attachment.data]; - if (model.isForce) { - YUMIThroughoutChamberCombatForceEndConsequentRegard *view = [[YUMIThroughoutChamberCombatForceEndConsequentRegard alloc] initWithFrame:CGRectMake(0, 0, 281, 208)]; - view.data = model; - [MKJPopup popupRegard:view style:MKJPopupStyleAlert]; - } else { - YUMIThroughoutChamberCombatConsequentRegard *view = [[YUMIThroughoutChamberCombatConsequentRegard alloc] initWithFrame:CGRectMake(0, 0, 320, 453)]; - view.data = model; - [MKJPopup popupRegard:view style:MKJPopupStyleAlert]; - } - } - break; - - case Custom_Message_Sub_AnchorPK_Invite: - { - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.acquireChamberAbstract.roomId]; - request.userIds = @[[AccountAbstractStorage instance].acquireCid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - if (error == nil) { - NIMChatroomMember * member = [members firstObject]; - if (member.type == NIMTeamMemberTypeOwner) { - XCombatellegCombatCallforRegard * centiretyforRegard = [[XCombatellegCombatCallforRegard alloc] init]; - centiretyforRegard.roomUid = [NSString stringWithFormat:@"%ld", self.delegate.acquireChamberAbstract.uid]; - centiretyforRegard.atoloudspeakerPackbask = attachment.data; - [MKJPopup popupRegard:centiretyforRegard style:MKJPopupStyleAlert]; - } - } - }]; - } - break; - case Custom_Message_Sub_AnchorPK_Accept: - { - [self.kellegCombatAdaptationRegard removeFromSuperview]; - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.acquireChamberAbstract.roomId]; - request.userIds = @[[AccountAbstractStorage instance].acquireCid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - if (error == nil) { - NIMChatroomMember * member = [members firstObject]; - if (member.type == NIMTeamMemberTypeOwner) { - ThroughoutChamberCombatFasciaboardMatrix * acrossPKPanelInfo = [ThroughoutChamberCombatFasciaboardMatrix mtowardsrixAboutJSON:attachment.data]; - [[RealtimackExecutive instance] connectOtherRoom:acrossPKPanelInfo.aRoomId userId:acrossPKPanelInfo.aUid]; - [self refurbishKellegCombateAbstract:acrossPKPanelInfo]; - } - } - }]; - } - break; - case Custom_Message_Sub_AnchorPK_Reject: - { - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.acquireChamberAbstract.roomId]; - request.userIds = @[[AccountAbstractStorage instance].acquireCid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - if (error == nil) { - NIMChatroomMember * member = [members firstObject]; - if (member.type == NIMTeamMemberTypeOwner) { - YUMIThroughoutChamberCombatCallforConsequentRegard * inviteResutView = [[YUMIThroughoutChamberCombatCallforConsequentRegard alloc] init]; - inviteResutView.isRecognize = NO; - [self addSubview:inviteResutView]; - [inviteResutView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self).offset(114 + kSafeAreaTopHeight); - make.centerX.mas_equalTo(self); - make.size.mas_equalTo(CGSizeMake(201, 42)); - }]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [inviteResutView removeFromSuperview]; - }); - } - } - }]; - } - break; - case Custom_Message_Sub_AnchorPK_Panel: - { - [self.kellegCombatAdaptationRegard removeFromSuperview]; - self.delegate.acquireChamberAbstract.pkMatchStartTime = nil; - if (!self.kellegCombatFasciadirectorateRegard.superview) { - [self addSubview:self.kellegCombatFasciadirectorateRegard]; - [self.kellegCombatFasciadirectorateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(kNavigationHeight + 87); - }]; - } - ThroughoutChamberCombatFasciaboardMatrix * acrossPKPanelInfo = [ThroughoutChamberCombatFasciaboardMatrix mtowardsrixAboutJSON:attachment.data]; - self.kellegCombatFasciadirectorateRegard.combatFasciadirectorateAbstract = acrossPKPanelInfo; - [self refurbishKellegCombateAbstract:acrossPKPanelInfo]; - } - break; - case Custom_Message_Sub_AnchorPK_End: - { - if (!self.kellegCombatFasciadirectorateRegard.superview) { - [self addSubview:self.kellegCombatFasciadirectorateRegard]; - [self.kellegCombatFasciadirectorateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(kNavigationHeight + 87); - }]; - } - ThroughoutChamberCombatFasciaboardMatrix * acrossPKPanelInfo = [ThroughoutChamberCombatFasciaboardMatrix mtowardsrixAboutJSON:attachment.data]; - self.kellegCombatFasciadirectorateRegard.combatFasciadirectorateAbstract = acrossPKPanelInfo; - [self refurbishKellegCombateAbstract:acrossPKPanelInfo]; - if (acrossPKPanelInfo.isForce) { - XCombatellegCombatFinishRegard *view = [[XCombatellegCombatFinishRegard alloc] init]; - view.data = acrossPKPanelInfo; - [MKJPopup popupRegard:view style:MKJPopupStyleAlert]; - } else { - XCombatellegCombatConsequentRegard *view = [[XCombatellegCombatConsequentRegard alloc] initWithFrame:CGRectMake(0, 0, 300, 472)]; - view.data = acrossPKPanelInfo; - [MKJPopup popupRegard:view style:MKJPopupStyleAlert]; - } - } - break; - case Custom_Message_Sub_AnchorPK_Finish: - { - [self.kellegCombatFasciadirectorateRegard replacementThroughoutCombatRegardTowardsoloudspeaker]; - [self.kellegCombatFasciadirectorateRegard removeFromSuperview]; - self.kellegCombatFasciadirectorateRegard = nil; - [self replacementKellegCombateAbstract]; - [[RealtimackExecutive instance] disconnectOtherRoom]; - } - break; - case Custom_Message_Sub_PK_BeginTime:{ - long long time = [attachment.data[@"beginTime"] longLongValue]; - [self EvidenceThroughoutCombateComputtowardsionPubescenceRegardAboutIntrtowardsemporal:time]; - } - break; - case Custom_Message_Sub_AnchorPK_Match_TimeOut: - { - self.delegate.acquireChamberAbstract.pkMatchStartTime = nil; - self.kellegCombatAdaptationRegard.roomUid = [NSString stringWithFormat:@"%ld", [self.delegate acquireChamberAbstract].uid]; - [self.kellegCombatAdaptationRegard shankDirectoryapttowardsionIntrtowardsemporalOptowardssideCommunictowardsion]; - } - break; - case Custom_Message_Sub_AnchorPK_MuteOtherMic: - { - [self.kellegCombatFasciadirectorateRegard refurbishOtherLoudspeakerPosition:attachment]; - } - break; - default: - break; - } - } else if (attachment.first == IndividualityCommunicationGenre_Anchor_FansTeam) { - [self shankKellegFantowardsicsSquad:attachment]; - } - } -} - -- (void)shankNEMCCircularCommunictowardsion:(NIMMessage *)message { - NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; - NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; - switch (content.eventType) { - case NIMChatroomEventTypeAddManager: - { - for (NIMChatroomNotificationMember * member in content.targets) { - if (member.userId.intValue == [AccountAbstractStorage instance].acquireCid.integerValue) { - self.compileBtuton.hidden = NO; - self.chambercombatFasciadirectorateRegard.isManager = YES; - break; - } - } - } - break; - case NIMChatroomEventTypeRemoveManager: - { - for (NIMChatroomNotificationMember * member in content.targets) { - if (member.userId.intValue == [AccountAbstractStorage instance].acquireCid.integerValue) { - self.compileBtuton.hidden = YES; - self.chambercombatFasciadirectorateRegard.isManager = NO; - break; - } - } - } - break; - default: - break; - - } -} - -- (void)onMiecreoscoopeInthecaseofmtowardsionRefurbish:(NSMutableDictionary *)queue { - if(self.delegate.acquireChamberAbstract.roomModeType == ChamberModeGenre_Open_PK_Mode) { - self.chambercombatFasciadirectorateRegard.micQueue = queue; - }else { - - if (![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - return; - } - MiecreoscoopeMHTueueMatrix * currentUserModel; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - for (MiecreoscoopeMHTueueMatrix * miecreoscoopeMatrix in queue.allValues) { - if (miecreoscoopeMatrix.userInfo && miecreoscoopeMatrix.userInfo.uid == uid.integerValue) { - currentUserModel = miecreoscoopeMatrix; - } - } - if (currentUserModel) { - if (!self.manualImportBtuton.superview) { - [self addSubview:self.manualImportBtuton]; - CGFloat topOffY = self.delegate.acquireChamberAbstract.type == ChamberGenre_Anchor || self.delegate.acquireChamberAbstract.isPermitRoom == PermitChamberGenre_Licnese ? (kNavigationHeight+ 4 + 22 + 18) : (kNavigationHeight+ 4); - if (self.delegate.acquireChamberAbstract.roomModeType == ChamberModeGenre_Open_Blind) { - [self.manualImportBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(16); - make.centerY.mas_equalTo(self.efficacyImportRegard); - make.width.mas_equalTo(22); - make.height.mas_equalTo(22); - }]; - } else { - if (self.stundeRateAccessRegard.superview) { - [self.manualImportBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.stundeRateAccessRegard.mas_right).mas_offset(4); - make.centerY.mas_equalTo(self.efficacyImportRegard); - make.width.mas_equalTo(22); - make.height.mas_equalTo(22); - }]; - } else { - [self.manualImportBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(16); - make.centerY.mas_equalTo(self.efficacyImportRegard); - make.width.mas_equalTo(22); - make.height.mas_equalTo(22); - }]; - } - } - } - } else { - [[RealtimackExecutive instance] diversifictowardsionDisportDeclare:BackMusicDisportDeclare_Stop]; - if (self.manualImportBtuton) { - [self.manualImportBtuton removeFromSuperview]; - } - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:self.manualDisportRegard.center]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth, self.manualDisportRegard.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime(); - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - [self.manualDisportRegard pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; - [self.manualDisportRegard resetData]; - [self.manualDisportRegard removeFromSuperview]; - } - } -} -#pragma mark - FBCAcrpssChamberCombatPanelRegardRepresendtation -- (void)yUMIAcrpssChamberCombatFasciaboardRegard:(YUMIAcrpssChamberCombatFasciaboardRegard *)view onlookRoom:(NSString *)roomUid { - [self.delegate exitRoom]; - - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [YUMIChamberRegardGovernancer unfoildChamber:roomUid viewController:[XCCurrentVCStackExecutive shareManager].getCurrentVC]; - }); -} - -- (void)yUMIAcrpssChamberCombatFasciaboardRegard:(YUMIAcrpssChamberCombatFasciaboardRegard *)view sendGiftToUser:(NSString *)uid { - NSString * roomUid = [NSString stringWithFormat:@"%ld", [self.delegate acquireChamberAbstract].uid]; - YUMIDischargePresentRegard * presentRegard = [[YUMIDischargePresentRegard alloc] initWithType:DischargePresentGenre_Room uid:roomUid]; - presentRegard.delegate = self.delegate; - NSArray * giftUses = [self prohibitipositionPresentConsumers:[self.delegate acquireMiecreoscoopeInthecaseofmtowardsion]]; - [presentRegard prohibitipositionPresentConsumers:giftUses]; - [self.delegate.acquireUniversalNev presentViewController:presentRegard animated:YES completion:nil]; -} - -- (NSArray *)prohibitipositionPresentConsumers:(NSMutableDictionary *)queue { - NSMutableArray * array = [NSMutableArray array]; - for (MiecreoscoopeMHTueueMatrix * miecreoscoopeMatrix in queue.allValues) { - if (miecreoscoopeMatrix.userInfo && miecreoscoopeMatrix.userInfo.uid >0) { - ConsumerAbstractMatrix * userInfo = miecreoscoopeMatrix.userInfo; - YUMIExternalizeConsumerAbstractMatrix * userModel = [[YUMIExternalizeConsumerAbstractMatrix alloc] init]; - userModel.avatar = userInfo.avatar; - userModel.vipMic = userInfo.vipMic; - userModel.position = [NSString stringWithFormat:@"%d", miecreoscoopeMatrix.microState.position]; - userModel.uid = userInfo.uid; - if (self.delegate.acquireChamberAbstract.type == ChamberGenre_Anchor && miecreoscoopeMatrix.microState.position == -1) { - continue; - } - [array addObject:userModel]; - } - } - - if (self.delegate.acquireChamberAbstract.leaveMode) { - ChamberAbstractMatrix * roomInfo= self.delegate.acquireChamberAbstract; - YUMIExternalizeConsumerAbstractMatrix * userModel = [[YUMIExternalizeConsumerAbstractMatrix alloc] init]; - userModel.avatar = roomInfo.avatar; - userModel.position = @"-1"; - userModel.uid = roomInfo.uid; - [array addObject:userModel]; - } else if (self.delegate.acquireChamberAbstract.type == ChamberGenre_Anchor) { - ChamberAbstractMatrix * roomInfo= self.delegate.acquireChamberAbstract; - BOOL hadContainerOwner = NO; - for (ConsumerAbstractMatrix *userModel in array) { - if (userModel.uid == roomInfo.uid) { - hadContainerOwner = YES; - break; - } - } - if (!hadContainerOwner) { - YUMIExternalizeConsumerAbstractMatrix * userModel = [[YUMIExternalizeConsumerAbstractMatrix alloc] init]; - userModel.avatar = roomInfo.avatar; - userModel.position = @"-1"; - userModel.uid = roomInfo.uid; - [array addObject:userModel]; - } - } - return array; -} - -- (void)yUMIAcrpssChamberCombatFasciaboardRegard:(YUMIAcrpssChamberCombatFasciaboardRegard *)view EvidenceConsumerSolitaire:(NSString *)uid { - ChamberAbstractMatrix * roomInfo = self.delegate.acquireChamberAbstract; - NSString * targetUid = uid; - YUMIConsumerSolitaireAbstractMatrix * model = [[YUMIConsumerSolitaireAbstractMatrix alloc] init]; - [[self.delegate.acquireMiecreoscoopeInthecaseofmtowardsion allValues] enumerateObjectsUsingBlock:^(MiecreoscoopeMHTueueMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (targetUid.integerValue == obj.userInfo.uid) { - model.position = [NSString stringWithFormat:@"%d", obj.microState.position]; - model.posState = obj.microState.posState; - model.micState = obj.microState.micState; - *stop = YES; - } - }]; - model.nick = self.delegate.getUserInfo.nick; - model.uid = targetUid; - model.delegate = self.delegate; - model.roomInfo = roomInfo; - model.micQueue = self.delegate.acquireMiecreoscoopeInthecaseofmtowardsion; - model.superMangerList = self.delegate.acquireChamberSenstowardsionalManagementSttowardsement; - YUMIConsumerSolitaireRegardGovernancer * userCardVC = [[YUMIConsumerSolitaireRegardGovernancer alloc] initWithUser:model]; - [self.delegate.acquireUniversalNev presentViewController:userCardVC animated:YES completion:nil]; -} - -#pragma mark - XCombatellegPkPanelRegardRepresendtation -- (void)xCombatellegCombatFasciaboardRegard:(XCombatellegPkFasciaboardRegard *)view EvidenceConsumerSolitaire:(NSString *)uid { - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMIManeConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = uid.integerValue; - [self.delegate.acquireUniversalNev pushViewController:userInfoVC animated:YES]; - }else{ - YUMIManeSimpleConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeSimpleConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = uid.integerValue; - [self.delegate.acquireUniversalNev pushViewController:userInfoVC animated:YES]; - } -} - -- (void)xCombatellegCombatFasciaboardRegard:(XCombatellegPkFasciaboardRegard *)view onlookRoom:(NSString *)roomUid { - [self.delegate exitRoom]; - - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [YUMIChamberRegardGovernancer unfoildChamber:roomUid viewController:[XCCurrentVCStackExecutive shareManager].getCurrentVC]; - }); -} - -- (void)xCombatellegCombatFasciaboardRegardConsidertowardsionAccomplishment { - if (self.followKellegIntratemper != nil) { - dispatch_source_cancel(self.followKellegIntratemper); - self.followKellegIntratemper = nil; - } -} - -- (void)xCombatellegCombatFasciaboardRegardPenaltyComputtowardsionPubescenceConclude { - self.delegate.acquireChamberAbstract.pkState = ThroughoutChamberPkDeclareGenrePenaltyEnd; -} - -#pragma mark - FBCChamberBackManualPlayerRegardRepresendtation -- (void)yUMIChamberEncourageManualDisporterRegard:(YUMIChamberBackManualDisporterRegard *)view manualDisporting:(BOOL)manualDisporting { - if (manualDisporting) { - [self resumeThickness:self.manualImportBtuton.imageView.layer]; - } else { - [self pautilizeThickness:self.manualImportBtuton.imageView.layer]; - } -} - -#pragma mark - Event Response -- (void)contributionBtutonPerformance:(UITapGestureRecognizer *)tap { - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.delegate.acquireChamberAbstract.uid]; - YUMIChamberHalfTissueRegard * webView = [[YUMIChamberHalfTissueRegard alloc] init]; - webView.url = [NSString stringWithFormat:@"%@?roomUid=%@", URLWithType(kRoomRankURL), roomUid]; - [MKJPopup popupRegard:webView style:MKJPopupStyleActionSheet]; - if (self.delegate.acquireChamberAbstract.type == ChamberGenre_Anchor) { - [self refurbishContrionAccessAboutChamberCid:roomUid type:@"month"]; - } else { - [self refurbishContrionAccessAboutChamberCid:roomUid type:@"day"]; - } - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_giftlist_click eventAttributes:@{@"roomUid" : roomUid}]; -} - -- (void)onKellegStundeRtowardseBtutonPerformance:(UITapGestureRecognizer *)ges { - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.delegate.acquireChamberAbstract.uid]; - NSString * url = self.delegate.acquireChamberAbstract.type == ChamberGenre_Anchor ? URLWithType(kRoomHourRankURL) : URLWithType(kLicenseHourRankURL); - YUMIChamberHalfTissueRegard * webView = [[YUMIChamberHalfTissueRegard alloc] init]; - webView.url = [NSString stringWithFormat:@"%@?roomUid=%@", url, roomUid]; - [MKJPopup popupRegard:webView style:MKJPopupStyleActionSheet]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_ranklist_click eventAttributes:@{@"roomUid" : roomUid}]; -} - -- (void)engagementProgresBtutonPerformance:(UIButton *)sender { - [MKJPopup dismiss]; - ChamberAbstractMatrix * roomInfo = self.delegate.acquireChamberAbstract; - NSString * message = @""; - if (roomInfo.blindDateState == ChamberDisportDateingGenre_Talk) { - message = @"进入心动选人环节?"; - } else if(roomInfo.blindDateState == ChamberDisportDateingGenre_Pick) { - message = @"进入心动公布环节?"; - } else if(roomInfo.blindDateState == ChamberDisportDateingGenre_Result) { - message = @"结束本轮,同时清空魅力值?"; - } else if (roomInfo.blindDateState == ChamberDisportDateingGenre_Finish) { - message = @"进入嘉宾交流环节?"; - } - MKJPrecautiousDisposition * config = [[MKJPrecautiousDisposition alloc] init]; - config.message = message; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.delegate.acquireChamberAbstract.uid]; - NSString * roundId = [NSString stringWithFormat:@"%ld", self.delegate.acquireChamberAbstract.blindDateState]; - [Api diversifictowardsionChamberEngagementDeclare:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } roomUserId:roomUid roundId:roundId]; - } cancelHandler:^{ - - }]; -} - -- (void)foldBtutonPerformance:(UIButton *)sender { - sender.selected = !sender.selected; -} - -- (void)betowardsFantowardsicsSquadRecognition { - NSString *roomUid = [NSString stringWithFormat:@"%zd", self.delegate.acquireChamberAbstract.uid]; - if (self.relationFanaticsMatrix.isCurrentRoomAnchor) { - if (self.relationFanaticsMatrix.hasFansTeamCurrentRoom) { - YUMIChamberHalfTissueRegard * webView = [[YUMIChamberHalfTissueRegard alloc] init]; - webView.url = [NSString stringWithFormat:@"%@?roomUid=%@", URLWithType(kAnchorFansListURL), roomUid]; - [MKJPopup popupRegard:webView style:MKJPopupStyleActionSheet]; - } else { - YUMITissueRegardGovernancer * webVewC =[[YUMITissueRegardGovernancer alloc] init]; - webVewC.roomUid = roomUid; - webVewC.url = URLWithType(kAnchorFansOpenURL); - [self.delegate.acquireUniversalNev pushViewController:webVewC animated:YES]; - } - } else { - if (self.relationFanaticsMatrix.hasFansTeamCurrentRoom) { - if (self.relationFanaticsMatrix.isAnchorFans) { - [Api requisitionFantowardsicsSquadTask:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code != 200) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - return; - } - XCombatellegFanaticsmissionMatrix *model = [XCombatellegFanaticsmissionMatrix mtowardsrixAboutJSON:data.data]; - XCombatellegFanaticsmissionRegardGovernancer *fansTaskVc = [[XCombatellegFanaticsmissionRegardGovernancer alloc] initAboutChamberCid:roomUid]; - fansTaskVc.model = model; - [self.delegate.acquireUniversalNev presentViewController:fansTaskVc animated:YES completion:nil]; - } teamUid:roomUid]; - } else { - [Api requisitionJoinFantowardsicsSquad:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code != 200) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - return; - } - XCombatellegFanaticsJoinMatrix *model = [XCombatellegFanaticsJoinMatrix mtowardsrixAboutJSON:data.data]; - XCombatellegFanaticsSquadRegardGovernancer *fansTeamVc = [[XCombatellegFanaticsSquadRegardGovernancer alloc] initAboutChamberCid:roomUid]; - fansTeamVc.model = model; - [self.delegate.acquireUniversalNev presentViewController:fansTeamVc animated:YES completion:nil]; - } teamUid:roomUid]; - } - } - } -} - -- (void)manualImportBtutonPerformance:(UIButton *)sender { - if (!self.manualDisportRegard.superview) { - [self addSubview:self.manualDisportRegard]; - self.manualDisportRegard.frame = CGRectMake(-KScreenWidth, kNavigationHeight + 4, KScreenWidth - 85, 80); - } - - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth, self.manualDisportRegard.center.y)]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(KScreenWidth/ 2, self.manualDisportRegard.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime(); - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - [self.manualDisportRegard pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; - - [UIView animateWithDuration:0.2 animations:^{ - self.manualImportBtuton.hidden = YES; - } completion:nil]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_manual_click]; -} - -#pragma mark - 房间话题 -- (void)refurbishChamberMotifRegardConstraint { - ChamberAbstractMatrix * roomInfo = self.delegate.acquireChamberAbstract; - CGFloat offsetY = kNavigationHeight; - if (roomInfo.roomModeType == ChamberModeGenre_Open_Blind) { - offsetY += ((50 + 5) * kScreenScale + 10 + 12 + 3 + 40); - } else if (roomInfo.type == ChamberGenre_Anchor) { - offsetY += (120 + 5 + 6 + 20 +60 + 3); - } else { - offsetY += (50 + 5 + 10 + 12 + 3 + 40); - } - - [self.motifHierarchyRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(offsetY); - }]; -} - -- (void)refurbishChamberMotif { - if(![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - self.motifHierarchyRegard.hidden = YES; - return; - } - if (self.delegate.acquireChamberAbstract.type == ChamberGenre_Anchor && self.delegate.acquireChamberAbstract.roomModeType == ChamberModeGenre_Open_AcrossRoomPK_mode) { - self.motifHierarchyRegard.hidden = YES; - } else { - self.motifHierarchyRegard.hidden = ([ClientDisposition partowardsiciptowardsionDisposition].dispositionAbstract.appStoreAuditNoticeVersion || self.delegate.acquireChamberAbstract.type == ChamberGenre_MiniGame) == YES; - } - [self refurbishChamberMotifRegardConstraint]; - if ([AccountAbstractStorage instance].acquireCid.length > 0) { - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.acquireChamberAbstract.roomId]; - request.userIds = @[[AccountAbstractStorage instance].acquireCid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - if (error== nil) { - NIMChatroomMember* member = members.firstObject; - if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager) { - self.compileBtuton.hidden = NO; - } else { - self.compileBtuton.hidden = YES; - } - } - }]; - } - self.motifSequencignation.text = self.delegate.acquireChamberAbstract.roomDesc.length > 0 ? self.delegate.acquireChamberAbstract.roomDesc : YMLocalizedString(@"YUMI_Room_Function_Container_View_12"); -} - -- (void)motifMotionRecognition:(UITapGestureRecognizer *)tap { - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.acquireChamberAbstract.roomId]; - request.userIds = @[[AccountAbstractStorage instance].acquireCid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - if (error== nil) { - NIMChatroomMember* member = members.firstObject; - ChamberAbstractMatrix * roomInfo= self.delegate.acquireChamberAbstract; - if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager) { - YUMIChamberMotifRegardGovernancer * editTopicVC = [[YUMIChamberMotifRegardGovernancer alloc] init]; - editTopicVC.roomInfo = roomInfo; - [self.delegate.acquireUniversalNev pushViewController:editTopicVC animated:YES]; - } else { - MKJPopupServing * config = [[MKJPopupServing alloc] init]; - YUMIChamberMotifPrecautiousRegard * alertView = [[YUMIChamberMotifPrecautiousRegard alloc] init]; - alertView.title = roomInfo.roomDesc; - alertView.message = roomInfo.introduction; - config.contentView = alertView; - [MKJPopup popupAboutDisposition:config]; - } - } - }]; -} - -#pragma mark - 弹窗关注房主 -- (void)setFollowKellegIntratemper { - if (self.followKellegIntratemper != nil) { - dispatch_source_cancel(self.followKellegIntratemper); - } -#ifdef DEBUG - NSInteger totalTime = 5; -#else - NSInteger totalTime = 420; -#endif - dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); - self.followKellegIntratemper = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); - dispatch_source_set_timer(self.followKellegIntratemper,dispatch_walltime(NULL, totalTime*NSEC_PER_SEC), totalTime*NSEC_PER_SEC, 0); - @weakify(self); - dispatch_source_set_event_handler(self.followKellegIntratemper, ^{ - dispatch_async(dispatch_get_main_queue(), ^{ - @strongify(self); - if (self.followKellegIntratemper != nil) { - dispatch_source_cancel(self.followKellegIntratemper); - self.followKellegIntratemper = nil; - } - ChamberAbstractMatrix* roomInfo = self.delegate.acquireChamberAbstract; - NSString *roomUid = [NSString stringWithFormat:@"%zd", roomInfo.uid]; - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - [Api considertowardsionPositionImplementtowardsion:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - BOOL isLike = ((NSNumber *)data.data).boolValue; - if (!isLike && !roomInfo.isRoomFans && self.window) { - [self EvidenceBWSttralongKellegRegard]; - } - } uid:uid isLikeUid:roomUid]; - }); - }); - dispatch_resume(self.followKellegIntratemper); -} - -- (void)EvidenceBWSttralongKellegRegard { - ChamberAbstractMatrix* roomInfo = self.delegate.acquireChamberAbstract; - NSString *roomUid = [NSString stringWithFormat:@"%zd", roomInfo.uid]; - [Api getUserInfo:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - ConsumerAbstractMatrix *userInfo = [ConsumerAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - YUMIChamberKellegAbstractSolitaireRegard *view = [[YUMIChamberKellegAbstractSolitaireRegard alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 300)]; - view.userInfo = self.delegate.getUserInfo; - view.targetConsumerAbstract = userInfo; - view.roomId =roomInfo.roomId; - [MKJPopup popupRegard:view style:MKJPopupStyleActionSheet]; - } uid:roomUid]; -} - -- (void)EvidenceAskInthecaseofupburdenLoudspeaker:(NSDictionary *)dict { - NSString *roomUid = [NSString stringWithFormat:@"%zd", self.delegate.acquireChamberAbstract.uid]; - if (![roomUid isEqualToString:[AccountAbstractStorage instance].acquireCid]) { - return; - } - ConsumerAbstractMatrix *model = [ConsumerAbstractMatrix mtowardsrixAboutJSON:dict]; - XCombatellegAudienceUpwardsLoudspeakerRegard *upMicView = [[XCombatellegAudienceUpwardsLoudspeakerRegard alloc] initWithFrame:CGRectMake(0, 0, 300, 226) delegate:self.delegate]; - upMicView.info = model; - TTPopupConfig *config = [[TTPopupConfig alloc] init]; - config.filterIdentifier = @"audienceRequestUpMic"; - config.shouldFilterSpringforth = YES; - config.contentView = upMicView; - config.style = MKJPopupStyleAlert; - [MKJPopup popupAboutDisposition:config]; -} - -#pragma mark - 个播粉丝团 -- (void)refurbishFantowardsicsSquadAccessRegard:(XCombatellegFanaticsRelationMatrix *)model { - if (!self.fanaticsSquadAccessRegard.superview) { - [self insertSubview:self.fanaticsSquadAccessRegard atIndex:0]; - [self.fanaticsSquadAccessRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.efficacyImportRegard.mas_bottom).mas_offset(5); - make.left.mas_equalTo(0); - make.height.mas_equalTo(37); - }]; - } - self.fanaticsSquadAccessRegard.model = model; - self.relationFanaticsMatrix = model; -} - -- (void)shankKellegFantowardsicsSquad:(AttachmentMatrix *)attachment { - if (attachment.second == Custom_Message_Sub_FansTeam_Open_Success || attachment.second == Custom_Message_Sub_FansTeam_Join_Success || attachment.second == Custom_Message_Sub_FansTeam_Out_Success) { - NSString *roomUid = [NSString stringWithFormat:@"%ld", self.delegate.acquireChamberAbstract.uid]; - NSString *uid; - if ([attachment.data[@"uid"] isKindOfClass:[NSNumber class]]) { - uid = [NSString stringWithFormat:@"%@", attachment.data[@"uid"]]; - } else if ([attachment.data[@"uid"] isKindOfClass:[NSString class]]) { - uid = attachment.data[@"uid"]; - } - if ([uid isEqualToString:[AccountAbstractStorage instance].acquireCid] || [[AccountAbstractStorage instance].acquireCid isEqualToString:roomUid]) { - [Api requisitionInChamberFantowardsicsSquad:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - XCombatellegFanaticsRelationMatrix *model = [XCombatellegFanaticsRelationMatrix mtowardsrixAboutJSON:data.data]; - [self refurbishFantowardsicsSquadAccessRegard:model]; - } teamUid:roomUid]; - } - } else if (attachment.second == Custom_Message_Sub_FansTeam_Open_Fail) { - - } -} - -- (void)refurbishKellegCombateAbstract:(ThroughoutChamberCombatFasciaboardMatrix *)acrossPKPanelInfo { - self.delegate.acquireChamberAbstract.roundId = acrossPKPanelInfo.roundId; - self.delegate.acquireChamberAbstract.pkUid = acrossPKPanelInfo.aUid; - self.delegate.acquireChamberAbstract.pkRoomId = acrossPKPanelInfo.aRoomId; - self.delegate.acquireChamberAbstract.pkState = acrossPKPanelInfo.pkState; - self.delegate.acquireChamberAbstract.winUid = acrossPKPanelInfo.winUid; -} - -- (void)replacementKellegCombateAbstract { - self.delegate.acquireChamberAbstract.roundId = nil; - self.delegate.acquireChamberAbstract.pkUid = nil; - self.delegate.acquireChamberAbstract.pkRoomId = nil; - self.delegate.acquireChamberAbstract.pkState = nil; - self.delegate.acquireChamberAbstract.winUid = nil; - self.delegate.acquireChamberAbstract.pkMatchStartTime = nil; -} -#pragma mark - 房间榜入口榜单 -- (void)refurbishContrionAccessAboutChamberCid:(NSString *)roomUid type:(NSString *)type { - [Api requisitionChamberRtowardseings:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSMutableArray *array = [NSMutableArray array]; - for (NSDictionary *dict in data.data[@"rankings"]) { - NSString *str = dict[@"avatar"]; - if (str) { - [array addObject:str]; - } - } - self.efficacyImportRegard.array = array; - } - } roomUid:roomUid type:type page:@"1" pageSize:@"20"]; -} - -#pragma mark - 个播小时榜入口 -- (void)refurbishStundeRtowardseAccess { - if(![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - return; - } - if (self.delegate.acquireChamberAbstract.type == ChamberGenre_Anchor || self.delegate.acquireChamberAbstract.isPermitRoom == PermitChamberGenre_Licnese) { - if (!self.stundeRateAccessRegard.superview) { - [self insertSubview:self.stundeRateAccessRegard atIndex:0]; - [self.stundeRateAccessRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(15); - make.centerY.mas_equalTo(self.efficacyImportRegard); - make.width.mas_equalTo(61); - make.height.mas_equalTo(22); - }]; - } - } else { - if (self.stundeRateAccessRegard.superview) {[self.stundeRateAccessRegard removeFromSuperview];} - } -} - -#pragma mark - 房间背景音乐 --(void)pautilizeThickness:(CALayer*)layer { - CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil]; - layer.speed = 0.0; - layer.timeOffset = pausedTime; -} - --(void)resumeThickness:(CALayer*)layer { - CFTimeInterval pausedTime = [layer timeOffset]; - layer.speed = 1.0; - layer.timeOffset = 0.0; - layer.beginTime = 0.0; - CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime; - layer.beginTime = timeSincePause; -} - -- (void)prohibitipositionDisportManualChamberGenreDiversifictowardsion { - if (![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - return; - } - ChamberAbstractMatrix * roomInfo = self.delegate.acquireChamberAbstract; - if (roomInfo.type == ChamberGenre_MiniGame) { - [self pautilizeThickness:self.manualImportBtuton.imageView.layer]; - [self.manualImportBtuton removeFromSuperview]; - [self.manualDisportRegard resetData]; - [self.manualDisportRegard removeFromSuperview]; - [[RealtimackExecutive instance] diversifictowardsionDisportDeclare:BackMusicDisportDeclare_Stop]; - } else { - MiecreoscoopeMHTueueMatrix * currentUserModel; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - for (MiecreoscoopeMHTueueMatrix * miecreoscoopeMatrix in self.delegate.acquireMiecreoscoopeInthecaseofmtowardsion.allValues) { - if (miecreoscoopeMatrix.userInfo && miecreoscoopeMatrix.userInfo.uid == uid.integerValue) { - currentUserModel = miecreoscoopeMatrix; - } - } - if (currentUserModel) { - if (!self.manualImportBtuton.superview) { - [self addSubview:self.manualImportBtuton]; - CGFloat topOffY = (self.delegate.acquireChamberAbstract.type == ChamberGenre_Anchor || self.delegate.acquireChamberAbstract.isPermitRoom == PermitChamberGenre_Licnese) ? (kNavigationHeight+ 4 + 22 + 18) : (kNavigationHeight+ 4); - if (self.delegate.acquireChamberAbstract.roomModeType == ChamberModeGenre_Open_Blind) { - [self.manualImportBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(16); - make.centerY.mas_equalTo(self.efficacyImportRegard); - make.width.mas_equalTo(22); - make.height.mas_equalTo(22); - }]; - } else { - if (self.stundeRateAccessRegard.superview) { - [self.manualImportBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.stundeRateAccessRegard.mas_right).mas_offset(4); - make.centerY.mas_equalTo(self.efficacyImportRegard); - make.width.mas_equalTo(22); - make.height.mas_equalTo(22); - }]; - } else { - [self.manualImportBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(16); - make.centerY.mas_equalTo(self.efficacyImportRegard); - make.width.mas_equalTo(22); - make.height.mas_equalTo(22); - }]; - } - } - } - } - } -} - -- (void)EvidenceThroughoutCombateComputtowardsionPubescenceRegardAboutIntrtowardsemporal:(long long)time { - if (self.throughoutCombatComputationRegard.superview) { - return; - } - if (self.throughoutCombatFasciadirectorateRegard.superview) { - return; - } - if ([self.delegate acquireChamberAbstract].roomModeType == ChamberModeGenre_Open_AcrossRoomPK_mode) { - return; - } - [self shankAcrollCombatComputtowardsionRegard:time]; -} - -- (void)shankAcrollCombatComputtowardsionRegard:(long long)time { - ChamberAbstractMatrix * roomInfo = self.delegate.acquireChamberAbstract; - if (!self.throughoutCombatComputationRegard.superview) { - [self addSubview:self.throughoutCombatComputationRegard]; - [self bringSubviewToFront:self.throughoutCombatComputationRegard]; - self.throughoutCombatComputationRegard.startTime = time ? time : roomInfo.pkBeginTime; - self.throughoutCombatComputationRegard.encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_acrossPK_countDown_left_background"]; - [self.throughoutCombatComputationRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kNavigationHeight+4+24+4); - make.left.mas_equalTo(0); - make.width.height.mas_equalTo(52); - }]; - } -} - -#pragma mark - 心愿礼物 -- (void)betowardsSequencirePresent { - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.delegate.acquireChamberAbstract.uid]; - YUMIDesirePresentRegardGovernancer * vc = [[YUMIDesirePresentRegardGovernancer alloc] initAboutChamberCid:roomUid]; - self.wishGiftVC = vc; - vc.delegate = self; - vc.modalPresentationStyle = UIModalPresentationOverFullScreen; - [self.delegate.acquireUniversalNev presentViewController:vc animated:YES completion:nil]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventRoom_wishlist_pop_click]; -} - -- (void)prohibitipositionSequencirePresentImport { - ChamberAbstractMatrix * roomInfo = self.delegate.acquireChamberAbstract; - NSString * roomUid = [NSString stringWithFormat:@"%ld", roomInfo.uid]; - if (roomInfo.hasOpenWishGift) { - [Api desirePresentSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSArray * array = [DesirePresentAbstractMatrix mtowardsrixsAboutGarment:data.data]; - self.sequencirePresentRegard.giftList = array; - self.sequencirePresentRegard.hidden = NO; - } else { - self.sequencirePresentRegard.hidden = YES; - } - - if (!self.sequencirePresentRegard.superview) { - [self addSubview:self.sequencirePresentRegard]; - [self.sequencirePresentRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self).offset(kNavigationHeight + 47); - make.right.mas_equalTo(self.mas_right).offset(0); - make.size.mas_equalTo(CGSizeMake(81, 30)); - }]; - } - - if (self.delegate.acquireChamberAbstract.roomModeType == ChamberModeGenre_Open_Blind) { - self.sequencirePresentRegard.hidden = YES; - } - - } roomUid:roomUid]; - } else { - if (self.sequencirePresentRegard.superview) { - [self.sequencirePresentRegard removeFromSuperview]; - } - } -} - -- (void)chamberAbstractRefurbishDispositionSequencirePresent { - ChamberAbstractMatrix * roomInfo = self.delegate.acquireChamberAbstract; - if (roomInfo.datingState == ChamberDatingDeclareChangeGenre_Close) { - if (self.sequencirePresentRegard.superview) { - self.sequencirePresentRegard.hidden = NO; - } - } else if(roomInfo.datingState == ChamberDatingDeclareChangeGenre_Open){ - if (self.sequencirePresentRegard.superview) { - self.sequencirePresentRegard.hidden = YES; - } - } -} - -- (void)fBCHopePresentRegardGovernancerDischargeTicktack:(NSString *)giftId { - NSString * roomUid = [NSString stringWithFormat:@"%ld", [self.delegate acquireChamberAbstract].uid]; - YUMIDischargePresentRegard * presentRegard = [[YUMIDischargePresentRegard alloc] initWithType:DischargePresentGenre_Room uid:roomUid]; - presentRegard.delegate = self.delegate; - NSArray * giftUses = [self prohibitipositionPresentConsumers:[self.delegate acquireMiecreoscoopeInthecaseofmtowardsion]]; - [presentRegard prohibitipositionPresentConsumers:giftUses]; - presentRegard.chosenPresentId = giftId; - [self.delegate.acquireUniversalNev presentViewController:presentRegard animated:YES completion:nil]; -} - -#pragma mark - 随机PK匹配 -- (void)shankDirectoryapttowardsionKellegCombat { - if (self.delegate.acquireChamberAbstract.pkMatchStartTime) { - [self addSubview:self.kellegCombatAdaptationRegard]; - self.kellegCombatAdaptationRegard.roomUid = [NSString stringWithFormat:@"%ld", [self.delegate acquireChamberAbstract].uid]; - [self.kellegCombatAdaptationRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.efficacyImportRegard.mas_bottom).mas_offset(5+37+5); - make.left.mas_equalTo(0); - make.width.height.mas_equalTo(52); - }]; - [self.kellegCombatAdaptationRegard unfoildComputtowardsiondownAboutIntrtowardsemporal:self.delegate.acquireChamberAbstract.pkMatchStartTime]; - } -} - -#pragma mark - Getters And Setters -- (YUMIChamberRateEntranceRegard *)efficacyImportRegard { - if (!_efficacyImportRegard) { - _efficacyImportRegard = [[YUMIChamberRateEntranceRegard alloc] init]; - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(contributionBtutonPerformance:)]; - [_efficacyImportRegard addGestureRecognizer:tap]; - } - return _efficacyImportRegard; -} - -- (YUMIChamberKellegRateImportRegard *)stundeRateAccessRegard { - if (!_stundeRateAccessRegard) { - _stundeRateAccessRegard = [[YUMIChamberKellegRateImportRegard alloc] init]; - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onKellegStundeRtowardseBtutonPerformance:)]; - [_stundeRateAccessRegard addGestureRecognizer:tap]; - } - return _stundeRateAccessRegard; -} - -- (UIButton *)engagementProgresBtuton { - if (!_engagementProgresBtuton) { - _engagementProgresBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_engagementProgresBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFA7186), UIColorFromRGB(0xFA4972)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(65, 30)] forState:UIControlStateNormal]; - [_engagementProgresBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _engagementProgresBtuton.titleLabel.font = [UIFont systemFontOfSize:13]; - [_engagementProgresBtuton setTitle:@"开始选择>" forState:UIControlStateNormal]; - [_engagementProgresBtuton addTarget:self action:@selector(engagementProgresBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _engagementProgresBtuton.layer.masksToBounds = YES; - _engagementProgresBtuton.layer.cornerRadius = 15; - } - return _engagementProgresBtuton; -} - -- (XCombatellegFanaticsSquadEntranceRegard *)fanaticsSquadAccessRegard { - if (!_fanaticsSquadAccessRegard) { - _fanaticsSquadAccessRegard = [[XCombatellegFanaticsSquadEntranceRegard alloc]init]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsFantowardsicsSquadRecognition)]; - [_fanaticsSquadAccessRegard addGestureRecognizer:tap]; - } - return _fanaticsSquadAccessRegard; -} - -- (UIStackView *)motifHierarchyRegard { - if (!_motifHierarchyRegard) { - _motifHierarchyRegard = [[UIStackView alloc] init]; - _motifHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _motifHierarchyRegard.distribution = UIStackViewDistributionFill; - _motifHierarchyRegard.alignment = UIStackViewAlignmentFill; - _motifHierarchyRegard.spacing = 3; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(motifMotionRecognition:)]; - [_motifHierarchyRegard addGestureRecognizer:tap]; - } - return _motifHierarchyRegard; -} - -- (UILabel *)motifSequencignation { - if (!_motifSequencignation) { - _motifSequencignation = [[UILabel alloc] init]; - _motifSequencignation.font = [UIFont systemFontOfSize:12]; - _motifSequencignation.textColor = [UIColor whiteColor]; - } - return _motifSequencignation; -} - -- (UIButton *)compileBtuton { - if (!_compileBtuton) { - _compileBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_compileBtuton setImage:[UIImage imageNamed:@"yumi_scope_postion_topimage_edit"] forState:UIControlStateNormal]; - [_compileBtuton setImage:[UIImage imageNamed:@"yumi_scope_postion_topimage_edit"] forState:UIControlStateSelected]; - _compileBtuton.hidden = YES; - } - return _compileBtuton; -} - -- (YUMIAcrpssChamberCombatFasciaboardRegard *)throughoutCombatFasciadirectorateRegard { - if (!_throughoutCombatFasciadirectorateRegard) { - _throughoutCombatFasciadirectorateRegard = [[YUMIAcrpssChamberCombatFasciaboardRegard alloc] init]; - _throughoutCombatFasciadirectorateRegard.delegate = self; - } - return _throughoutCombatFasciadirectorateRegard; -} -- (XCombatellegPkFasciaboardRegard *)kellegCombatFasciadirectorateRegard { - if (!_kellegCombatFasciadirectorateRegard) { - _kellegCombatFasciadirectorateRegard = [[XCombatellegPkFasciaboardRegard alloc] init]; - _kellegCombatFasciadirectorateRegard.delegate = self; - } - return _kellegCombatFasciadirectorateRegard; -} - -- (UIButton *)manualImportBtuton { - if (!_manualImportBtuton) { - _manualImportBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_manualImportBtuton setImage:[UIImage imageNamed:@"yumi_scope_musimage_player_enter"] forState:UIControlStateNormal]; - _manualImportBtuton.layer.masksToBounds = YES; - _manualImportBtuton.layer.cornerRadius = 11; - _manualImportBtuton.backgroundColor = UIColorRGBAlpha(0xffffff, 0.2); - [_manualImportBtuton addTarget:self action:@selector(manualImportBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - CAKeyframeAnimation *lAni = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation.z"]; - lAni.duration = 1.5; - lAni.repeatCount = HUGE; - lAni.values=@[@0,@(M_PI*2)]; - - lAni.removedOnCompletion = NO; - lAni.fillMode = kCAFillModeForwards; - [_manualImportBtuton.imageView.layer addAnimation:lAni forKey:nil]; - } - return _manualImportBtuton; -} - -- (YUMIChamberBackManualDisporterRegard *)manualDisportRegard { - if (!_manualDisportRegard) { - _manualDisportRegard = [[YUMIChamberBackManualDisporterRegard alloc] init]; - _manualDisportRegard.delegate = self; - } - return _manualDisportRegard; -} - -- (YUMIChamberCombatProgressRegard *)chambercombatFasciadirectorateRegard { - if (!_chambercombatFasciadirectorateRegard) { - _chambercombatFasciadirectorateRegard = [[YUMIChamberCombatProgressRegard alloc] init]; - } - return _chambercombatFasciadirectorateRegard; -} - -- (YUMIThroughoutChamberCombatComputationDownRegard *)throughoutCombatComputationRegard { - if (!_throughoutCombatComputationRegard) { - _throughoutCombatComputationRegard = [[YUMIThroughoutChamberCombatComputationDownRegard alloc] initWithFrame:CGRectMake(-52, kNavigationHeight+4+24+4, 52, 52)]; - } - return _throughoutCombatComputationRegard; -} - -- (XCombatellegCombatAdaptationRegard *)kellegCombatAdaptationRegard { - if (!_kellegCombatAdaptationRegard) { - _kellegCombatAdaptationRegard = [[XCombatellegCombatAdaptationRegard alloc] initWithDelegate:self.delegate]; - } - return _kellegCombatAdaptationRegard; -} - -- (YUMIDesirePresentImportRegard *)sequencirePresentRegard { - if (!_sequencirePresentRegard) { - _sequencirePresentRegard = [[YUMIDesirePresentImportRegard alloc] init]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsSequencirePresent)]; - [_sequencirePresentRegard addGestureRecognizer:tap]; - } - return _sequencirePresentRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberKellegRateImportRegard.h b/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberKellegRateImportRegard.h deleted file mode 100644 index 7a5e5936..00000000 --- a/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberKellegRateImportRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomAnchorRankEnterView.h -// YUMI -// -// Created by YUMI on 2022/5/12. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberKellegRateImportRegard : UIView - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberKellegRateImportRegard.m b/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberKellegRateImportRegard.m deleted file mode 100644 index 8049b5a6..00000000 --- a/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberKellegRateImportRegard.m +++ /dev/null @@ -1,92 +0,0 @@ -// -// YMRoomAnchorRankEnterView.m -// YUMI -// -// Created by YUMI on 2022/5/12. -// - -#import "YUMIChamberKellegRateImportRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" - -@interface YUMIChamberKellegRateImportRegard () - -@property (nonatomic, strong) UIImageView *backgroundIndicateRegard; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UIImageView *figureIndicateRegard; - -@end - - -@implementation YUMIChamberKellegRateImportRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -- (void)layoutSubviews { - [super layoutSubviews]; - CAGradientLayer *layer = [CAGradientLayer new]; - layer.colors=@[(__bridge id)UIColorRGBAlpha(0x2B00CA, 0.55).CGColor,(__bridge id)UIColorRGBAlpha(0x170ACD, 0.2).CGColor]; - layer.startPoint = CGPointMake(0, 0); - layer.endPoint = CGPointMake(1, 0); - layer.frame = self.bounds; - [self.backgroundIndicateRegard.layer addSublayer:layer]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backgroundIndicateRegard]; - [self addSubview:self.titleLabel]; - [self addSubview:self.figureIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.bottom.left.right.mas_equalTo(0); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self); - make.left.mas_equalTo(self.figureIndicateRegard.mas_right).mas_offset(4); - }]; - [self.figureIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(22); - make.centerY.mas_equalTo(self); - make.left.mas_equalTo(0); - }]; -} - -#pragma mark - Getters And Setters -- (UIImageView *)backgroundIndicateRegard { - if (_backgroundIndicateRegard == nil) { - _backgroundIndicateRegard = [[UIImageView alloc] init]; - _backgroundIndicateRegard.layer.cornerRadius = 11; - _backgroundIndicateRegard.layer.masksToBounds = YES; - } - return _backgroundIndicateRegard; -} - -- (UIImageView *)figureIndicateRegard { - if (_figureIndicateRegard == nil) { - _figureIndicateRegard = [[UIImageView alloc] init]; - _figureIndicateRegard.image = [UIImage imageNamed:@"yumi_anchor_hourRank_btn"]; - _figureIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _figureIndicateRegard; -} - -- (UILabel *)titleLabel { - if (_titleLabel == nil) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textColor = UIColor.whiteColor; - _titleLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - _titleLabel.text = YMLocalizedString(@"YUMI_Room_Anchor_Rank_Enter_View_0"); - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberRateEntranceRegard.h b/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberRateEntranceRegard.h deleted file mode 100644 index 15036dd5..00000000 --- a/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberRateEntranceRegard.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YMRoomRankEntranceView.h -// YUMI -// -// Created by YUMI on 2022/4/27. -// 房间榜入口 - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberRateEntranceRegard : UIView - -@property (nonatomic, copy) NSString *title; - -@property (nonatomic, strong) NSArray *array; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberRateEntranceRegard.m b/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberRateEntranceRegard.m deleted file mode 100644 index 00f06412..00000000 --- a/YuMi/Modules/YMRoom/View/BaseUIContainerView/YUMIChamberRateEntranceRegard.m +++ /dev/null @@ -1,127 +0,0 @@ -// -// YMRoomRankEntranceView.m -// YUMI -// -// Created by YUMI on 2022/4/27. -// - -#import "YUMIChamberRateEntranceRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" - -@interface YUMIChamberRateEntranceRegard () - -@property (nonatomic, strong) UIView *backgroundRegard; -@property (nonatomic, strong) UIView *rateSatisfperformanceRegard; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UIImageView *figureIndicateRegard; - -@end - -@implementation YUMIChamberRateEntranceRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backgroundRegard]; - [self addSubview:self.rateSatisfperformanceRegard]; - [self addSubview:self.titleLabel]; - [self addSubview:self.figureIndicateRegard]; - for (int i = 0; i < 3; i++) { - NetIndicateDisposition *config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyDispossessIntelligenceportraitDepapossessor]; - NetIndicateRegard *imageView = [[NetIndicateRegard alloc] initWithConfig:config]; - imageView.layer.cornerRadius = 10; - imageView.layer.masksToBounds = YES; - [self.rateSatisfperformanceRegard addSubview:imageView]; - [imageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.rateSatisfperformanceRegard); - make.width.height.mas_equalTo(20); - make.left.mas_equalTo(i*8); - }]; - } -} - -- (void)initChildLyRestrictions { - [self.backgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.bottom.right.left.mas_equalTo(0); - }]; - [self.rateSatisfperformanceRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self); - make.width.mas_equalTo(36); - make.height.mas_equalTo(20); - make.left.mas_equalTo(4); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self); - make.left.mas_equalTo(self.rateSatisfperformanceRegard.mas_right).mas_offset(4); - }]; - [self.figureIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(9); - make.centerY.mas_equalTo(self); - make.left.mas_equalTo(self.titleLabel.mas_right).mas_offset(2); - }]; -} - -#pragma mark - Getters And Setters -- (void)setTitle:(NSString *)title { - self.titleLabel.text = title; -} - -- (void)setArray:(NSArray *)array { - for (int i = 0; i < self.rateSatisfperformanceRegard.subviews.count; i++) { - NSString *str; - if (array.count > i) { - str = array[i]; - } - NetIndicateRegard *imageView = self.rateSatisfperformanceRegard.subviews[self.rateSatisfperformanceRegard.subviews.count-1-i]; - imageView.imageUrl = str.length ? str : @""; - } -} - -- (UIView *)backgroundRegard { - if (_backgroundRegard == nil) { - _backgroundRegard = [[UIView alloc] init]; - _backgroundRegard.backgroundColor = UIColorRGBAlpha(0xFFFFFF, 0.1); - _backgroundRegard.layer.cornerRadius = 12; - _backgroundRegard.layer.masksToBounds = YES; - } - return _backgroundRegard; -} - -- (UIView *)rateSatisfperformanceRegard { - if (!_rateSatisfperformanceRegard) { - _rateSatisfperformanceRegard = [[UIView alloc] init]; - } - return _rateSatisfperformanceRegard; -} - -- (UIImageView *)figureIndicateRegard { - if (_figureIndicateRegard == nil) { - _figureIndicateRegard = [[UIImageView alloc] init]; - _figureIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_position_little_game_right_arrow"]; - _figureIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _figureIndicateRegard; -} - -- (UILabel *)titleLabel { - if (_titleLabel == nil) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textColor = UIColor.whiteColor; - _titleLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - _titleLabel.text = YMLocalizedString(@"YUMI_Room_Rank_Entrance_View_0"); - } - return _titleLabel; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/Api/Api+CandyTree.h b/YuMi/Modules/YMRoom/View/CandyTree/Api/Api+CandyTree.h index a799c216..a419acf9 100644 --- a/YuMi/Modules/YMRoom/View/CandyTree/Api/Api+CandyTree.h +++ b/YuMi/Modules/YMRoom/View/CandyTree/Api/Api+CandyTree.h @@ -1,8 +1,8 @@ // // Api+CandyTree.h -// YuMi +// xplan-ios // -// Created by YuMi on 2021/12/9. +// Created by 冯硕 on 2021/12/9. // #import "Api.h" @@ -10,14 +10,28 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (CandyTree) -+ (void)confectioneryTimberDigitalimplementtion:(HttpRequestHelperCompletion)complection uid:(NSString *)uid; +/// 获取糖果树的信息 +/// @param complection 完成 +/// @param uid 用的uid ++ (void)candyTreeKeyComplection:(HttpRequestHelperCompletion)complection uid:(NSString *)uid; -+ (void)extractConfectioneryimplementtion:(HttpRequestHelperCompletion)complection +/// 摘糖果 +/// @param complection 完成 +/// @param sendMessage 是否发送消息 目前默认发送 +/// @param num 糖果的个数 +/// @param roomUid 房间的uid +/// @param uid 用户自己的uid ++ (void)pickCandyComplection:(HttpRequestHelperCompletion)complection sendMessage:(NSString *)sendMessage num:(NSString *)num roomUid:(NSString *)roomUid uid:(NSString *)uid; -+ (void)confectioneryTimberRtowardseSttowardsementimplementtion:(HttpRequestHelperCompletion)complection +/// 获取糖果树排行榜 +/// @param complection 完成 +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +/// @param type 类型 今天榜单的话 1 昨日榜 2 ++ (void)candyTreeRankListComplection:(HttpRequestHelperCompletion)complection page:(NSString *)page pageSize:(NSString *)pageSize type:(NSString *)type; diff --git a/YuMi/Modules/YMRoom/View/CandyTree/Api/Api+CandyTree.m b/YuMi/Modules/YMRoom/View/CandyTree/Api/Api+CandyTree.m index 257261f0..cfc04c21 100644 --- a/YuMi/Modules/YMRoom/View/CandyTree/Api/Api+CandyTree.m +++ b/YuMi/Modules/YMRoom/View/CandyTree/Api/Api+CandyTree.m @@ -1,8 +1,8 @@ // // Api+CandyTree.m -// YuMi +// xplan-ios // -// Created by YuMi on 2021/12/9. +// Created by 冯硕 on 2021/12/9. // #import "Api+CandyTree.h" @@ -10,17 +10,30 @@ @implementation Api (CandyTree) -+ (void)confectioneryTimberDigitalimplementtion:(HttpRequestHelperCompletion)complection uid:(NSString *)uid { - [self manufactureDemand:@"box/userkey" method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, uid, nil]; +/// 获取糖果树的信息 +/// @param complection 完成 +/// @param uid 用的uid ++ (void)candyTreeKeyComplection:(HttpRequestHelperCompletion)complection uid:(NSString *)uid { + [self makeRequest:@"box/userkey" method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, uid, nil]; } -+ (void)extractConfectioneryimplementtion:(HttpRequestHelperCompletion)complection sendMessage:(NSString *)sendMessage num:(NSString *)num roomUid:(NSString *)roomUid uid:(NSString *)uid{ - [self manufactureDemand:@"findLove/draw" method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, sendMessage, num, roomUid, uid, nil]; +/// 摘糖果 +/// @param complection 完成 +/// @param sendMessage 是否发送消息 1:发送, 0不发送 +/// @param num 糖果的个数 +/// @param roomUid 房间的uid ++ (void)pickCandyComplection:(HttpRequestHelperCompletion)complection sendMessage:(NSString *)sendMessage num:(NSString *)num roomUid:(NSString *)roomUid uid:(NSString *)uid{ + [self makeRequest:@"findLove/draw" method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, sendMessage, num, roomUid, uid, nil]; } -+ (void)confectioneryTimberRtowardseSttowardsementimplementtion:(HttpRequestHelperCompletion)complection page:(NSString *)page pageSize:(NSString *)pageSize type:(NSString *)type { - [self manufactureDemand:@"findLove/rank" method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, page, pageSize, type, nil]; +/// 获取糖果树排行榜 +/// @param complection 完成 +/// @param page 当前的页数 +/// @param pageSize 一页多少个 +/// @param type 类型 今天榜单的话 1 昨日榜 2 ++ (void)candyTreeRankListComplection:(HttpRequestHelperCompletion)complection page:(NSString *)page pageSize:(NSString *)pageSize type:(NSString *)type { + [self makeRequest:@"findLove/rank" method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, page, pageSize, type, nil]; } @end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/Model/CandyTreeInfoModel.h b/YuMi/Modules/YMRoom/View/CandyTree/Model/CandyTreeInfoModel.h new file mode 100644 index 00000000..6667de66 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/Model/CandyTreeInfoModel.h @@ -0,0 +1,21 @@ +// +// CandyTreeInfoModel.h +// xplan-ios +// +// Created by 冯硕 on 2021/12/9. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface CandyTreeInfoModel : NSObject +///糖果的数量 +@property (nonatomic, assign) NSInteger keyNum; +///糖果树展示消息开关需要的等级 +@property (nonatomic, assign) NSInteger sendMessageSwitchLevel; +/// +@property (nonatomic,copy) NSString *goldNum; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/Model/CandyTreeInfoModel.m b/YuMi/Modules/YMRoom/View/CandyTree/Model/CandyTreeInfoModel.m new file mode 100644 index 00000000..f2ca6000 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/Model/CandyTreeInfoModel.m @@ -0,0 +1,12 @@ +// +// CandyTreeInfoModel.m +// xplan-ios +// +// Created by 冯硕 on 2021/12/9. +// + +#import "CandyTreeInfoModel.h" + +@implementation CandyTreeInfoModel + +@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/Model/CandyTreeRecordModel.h b/YuMi/Modules/YMRoom/View/CandyTree/Model/CandyTreeRecordModel.h new file mode 100644 index 00000000..ab944f12 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/Model/CandyTreeRecordModel.h @@ -0,0 +1,26 @@ +// +// CandyTreeRecordModel.h +// xplan-ios +// +// Created by 冯硕 on 2021/12/10. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface CandyTreeRecordModel : NSObject + +@property (nonatomic,assign) NSInteger uid; + +///昵称 +@property (copy, nonatomic) NSString *nick; +///头像 +@property (copy, nonatomic) NSString *avatar; +///排名 +@property (nonatomic,copy) NSString *ranking; +///糖果树排行榜钻石 +@property (nonatomic,copy) NSString *diamonds; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/Model/CandyTreeRecordModel.m b/YuMi/Modules/YMRoom/View/CandyTree/Model/CandyTreeRecordModel.m new file mode 100644 index 00000000..886a7f0b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/Model/CandyTreeRecordModel.m @@ -0,0 +1,12 @@ +// +// CandyTreeRecordModel.m +// xplan-ios +// +// Created by 冯硕 on 2021/12/10. +// + +#import "CandyTreeRecordModel.h" + +@implementation CandyTreeRecordModel + +@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/Model/CandyTreeResultModel.h b/YuMi/Modules/YMRoom/View/CandyTree/Model/CandyTreeResultModel.h new file mode 100644 index 00000000..71a7a9ee --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/Model/CandyTreeResultModel.h @@ -0,0 +1,64 @@ +// +// CandyTreeResultModel.h +// xplan-ios +// +// Created by 冯硕 on 2021/12/10. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, CandyTreeGiftLevel) { + CandyTreeGiftLevel_First = 1, + CandyTreeGiftLevel_Second, + CandyTreeGiftLevel_Third, + CandyTreeGiftLevel_Fourth, + CandyTreeGiftLevel_Fifth, +}; + +@interface CandyTreeGiftInfoModel : NSObject +///奖品数量 +@property (nonatomic, assign) int prizeNum; +///奖品数量 +@property (nonatomic, assign) int num; +///相关实体id +@property (nonatomic, assign) NSInteger referenceId; +///相关实体id +@property (nonatomic, assign) NSInteger rewardId; + +///奖品等级 +@property (nonatomic, assign) CandyTreeGiftLevel prizeLevel; +///奖品等级 +@property (nonatomic, assign) CandyTreeGiftLevel level; + +///奖品名称 +@property (nonatomic, copy) NSString *prizeName; +///奖品名称 +@property (nonatomic, copy) NSString *rewardName; + + +///奖品icon +@property (nonatomic, copy) NSString *prizeImgUrl; + +@property (nonatomic, copy) NSString *picUrl; + +///奖品id +@property (nonatomic, assign) NSInteger prizeId; +///价格 +@property (nonatomic, assign) CGFloat platformValue; +///送礼物的人 +@property (nonatomic,copy) NSString *uid; +//送礼物的人所在的房间 +@property (nonatomic,copy) NSString *roomUid; +///送礼物人的名称 +@property (nonatomic,copy) NSString *nick; +@end + +@interface CandyTreeResultModel : NSObject + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/Model/CandyTreeResultModel.m b/YuMi/Modules/YMRoom/View/CandyTree/Model/CandyTreeResultModel.m new file mode 100644 index 00000000..414da9dc --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/Model/CandyTreeResultModel.m @@ -0,0 +1,22 @@ +// +// CandyTreeResultModel.m +// xplan-ios +// +// Created by 冯硕 on 2021/12/10. +// + +#import "CandyTreeResultModel.h" + +@implementation CandyTreeGiftInfoModel + + + +@end + +@implementation CandyTreeResultModel + ++ (NSDictionary *)objectClassInArray { + return @{@"prizeItemList": CandyTreeGiftInfoModel.class}; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/Model/ConfectioneryTimberAbstractMatrix.h b/YuMi/Modules/YMRoom/View/CandyTree/Model/ConfectioneryTimberAbstractMatrix.h deleted file mode 100644 index 21b119fb..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/Model/ConfectioneryTimberAbstractMatrix.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// ConfectioneryTimberAbstractMatrix.h -// YuMi -// -// Created by YuMi on 2021/12/9. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface ConfectioneryTimberAbstractMatrix : NSObject -@property (nonatomic, assign) NSInteger keyNum; -@property (nonatomic, assign) NSInteger sendMessageSwitchLevel; -@property (nonatomic,copy) NSString *goldNum; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/Model/ConfectioneryTimberAbstractMatrix.m b/YuMi/Modules/YMRoom/View/CandyTree/Model/ConfectioneryTimberAbstractMatrix.m deleted file mode 100644 index 21bc01c0..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/Model/ConfectioneryTimberAbstractMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ConfectioneryTimberAbstractMatrix.m -// YuMi -// -// Created by YuMi on 2021/12/9. -// - -#import "ConfectioneryTimberAbstractMatrix.h" - -@implementation ConfectioneryTimberAbstractMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/Model/ConfectioneryTimberConsequentMatrix.h b/YuMi/Modules/YMRoom/View/CandyTree/Model/ConfectioneryTimberConsequentMatrix.h deleted file mode 100644 index 1a74af73..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/Model/ConfectioneryTimberConsequentMatrix.h +++ /dev/null @@ -1,50 +0,0 @@ -// -// ConfectioneryTimberConsequentMatrix.h -// YuMi -// -// Created by YuMi on 2021/12/10. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, CandyTreePresentPrototype) { - CandyTreePresentPrototype_First = 1, - CandyTreePresentPrototype_Second, - CandyTreePresentPrototype_Third, - CandyTreePresentPrototype_Fourth, - CandyTreePresentPrototype_Fifth, -}; - -@interface ConfectioneryTimberPresentAbstractMatrix : NSObject -@property (nonatomic, assign) int prizeNum; -@property (nonatomic, assign) int num; -@property (nonatomic, assign) NSInteger referenceId; -@property (nonatomic, assign) NSInteger rewardId; - -@property (nonatomic, assign) CandyTreePresentPrototype prizeLevel; -@property (nonatomic, assign) CandyTreePresentPrototype level; - -@property (nonatomic, copy) NSString *prizeName; -@property (nonatomic, copy) NSString *rewardName; - - -@property (nonatomic, copy) NSString *prizeImgUrl; - -@property (nonatomic, copy) NSString *picUrl; - -@property (nonatomic, assign) NSInteger prizeId; -@property (nonatomic, assign) CGFloat platformValue; -@property (nonatomic,copy) NSString *uid; -@property (nonatomic,copy) NSString *roomUid; -@property (nonatomic,copy) NSString *nick; -@end - -@interface ConfectioneryTimberConsequentMatrix : NSObject - - - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/Model/ConfectioneryTimberConsequentMatrix.m b/YuMi/Modules/YMRoom/View/CandyTree/Model/ConfectioneryTimberConsequentMatrix.m deleted file mode 100644 index fefcab9a..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/Model/ConfectioneryTimberConsequentMatrix.m +++ /dev/null @@ -1,22 +0,0 @@ -// -// ConfectioneryTimberConsequentMatrix.m -// YuMi -// -// Created by YuMi on 2021/12/10. -// - -#import "ConfectioneryTimberConsequentMatrix.h" - -@implementation ConfectioneryTimberPresentAbstractMatrix - - - -@end - -@implementation ConfectioneryTimberConsequentMatrix - -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{@"prizeItemList": ConfectioneryTimberPresentAbstractMatrix.class}; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/Model/ConfectioneryTimberReflectionMatrix.h b/YuMi/Modules/YMRoom/View/CandyTree/Model/ConfectioneryTimberReflectionMatrix.h deleted file mode 100644 index f015de53..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/Model/ConfectioneryTimberReflectionMatrix.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// ConfectioneryTimberReflectionMatrix.h -// YuMi -// -// Created by YuMi on 2021/12/10. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface ConfectioneryTimberReflectionMatrix : NSObject - -@property (nonatomic,assign) NSInteger uid; - -@property (copy, nonatomic) NSString *nick; -@property (copy, nonatomic) NSString *avatar; -@property (nonatomic,copy) NSString *ranking; -@property (nonatomic,copy) NSString *diamonds; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/Model/ConfectioneryTimberReflectionMatrix.m b/YuMi/Modules/YMRoom/View/CandyTree/Model/ConfectioneryTimberReflectionMatrix.m deleted file mode 100644 index bc1e455a..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/Model/ConfectioneryTimberReflectionMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ConfectioneryTimberReflectionMatrix.m -// YuMi -// -// Created by YuMi on 2021/12/10. -// - -#import "ConfectioneryTimberReflectionMatrix.h" - -@implementation ConfectioneryTimberReflectionMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/Model/XPCandyTreeAnimationModel.h b/YuMi/Modules/YMRoom/View/CandyTree/Model/XPCandyTreeAnimationModel.h new file mode 100644 index 00000000..643b719e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/Model/XPCandyTreeAnimationModel.h @@ -0,0 +1,33 @@ +// +// XPCandyTreeAnimationModel.h +// xplan-ios +// +// Created by 冯硕 on 2021/12/11. +// +///当前的view 需要进行什么样式的动画 +#import +#import +NS_ASSUME_NONNULL_BEGIN + +@interface XPCandyTreeAnimationModel : NSObject +///移除的时间 +@property (nonatomic,assign) CGFloat removeTime; +///是不是移除动画 默认动画完 不移除 +@property (nonatomic,assign) BOOL isRemoveAnimation; +///开始的时间 +@property (nonatomic,assign) CGFloat beginTime; +///动画的key +@property (nonatomic,strong) NSString *animationKey; +///透明度起始值 +@property (nonatomic,assign) CGFloat alphaFromValue; +///透明度变化到的值 +@property (nonatomic,assign) CGFloat alphaToValue; +///持续的时间 +@property (nonatomic,assign) CGFloat durationTime; +///平移的时候动画的开始位置 +@property (nonatomic,assign) CGFloat offsetFromY; +///平移的时候动画的结束位置 +@property (nonatomic,assign) CGFloat offsetToY; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/Model/XPCandyTreeAnimationModel.m b/YuMi/Modules/YMRoom/View/CandyTree/Model/XPCandyTreeAnimationModel.m new file mode 100644 index 00000000..f12dce19 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/Model/XPCandyTreeAnimationModel.m @@ -0,0 +1,12 @@ +// +// XPCandyTreeAnimationModel.m +// xplan-ios +// +// Created by 冯硕 on 2021/12/11. +// + +#import "XPCandyTreeAnimationModel.h" + +@implementation XPCandyTreeAnimationModel + +@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/Model/YUMIConfectioneryTimberBrightnessMatrix.h b/YuMi/Modules/YMRoom/View/CandyTree/Model/YUMIConfectioneryTimberBrightnessMatrix.h deleted file mode 100644 index 6daf34b0..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/Model/YUMIConfectioneryTimberBrightnessMatrix.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YUMIConfectioneryTimberBrightnessMatrix.h -// YuMi -// -// Created by YuMi on 2021/12/11. -// -///当前的view 需要进行什么样式的动画 -#import -#import -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIConfectioneryTimberBrightnessMatrix : NSObject -@property (nonatomic,assign) CGFloat removeTime; -@property (nonatomic,assign) BOOL isRemoveAnimation; -@property (nonatomic,assign) CGFloat beginTime; -@property (nonatomic,strong) NSString *animationKey; -@property (nonatomic,assign) CGFloat alphaFromValue; -@property (nonatomic,assign) CGFloat alphaToValue; -@property (nonatomic,assign) CGFloat durationTime; -@property (nonatomic,assign) CGFloat offsetFromY; -@property (nonatomic,assign) CGFloat offsetToY; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/Model/YUMIConfectioneryTimberBrightnessMatrix.m b/YuMi/Modules/YMRoom/View/CandyTree/Model/YUMIConfectioneryTimberBrightnessMatrix.m deleted file mode 100644 index 23e5ac89..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/Model/YUMIConfectioneryTimberBrightnessMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YUMIConfectioneryTimberBrightnessMatrix.m -// YuMi -// -// Created by YuMi on 2021/12/11. -// - -#import "YUMIConfectioneryTimberBrightnessMatrix.h" - -@implementation YUMIConfectioneryTimberBrightnessMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/Presenter/XPCandyTreePresenter.h b/YuMi/Modules/YMRoom/View/CandyTree/Presenter/XPCandyTreePresenter.h new file mode 100644 index 00000000..61073574 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/Presenter/XPCandyTreePresenter.h @@ -0,0 +1,22 @@ +// +// XPCandyTreePresenter.h +// xplan-ios +// +// Created by 冯硕 on 2021/12/9. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPCandyTreePresenter : BaseMvpPresenter +/// 获取糖果树信息 +- (void)getCandyTreeInfo; + +/// 摘糖果 +/// @param keyNum 摘取的个数 +/// @param roomUid 房主的uid +- (void)pickCandy:(NSString *)keyNum roomUid:(NSString *)roomUid isSendMessage:(BOOL)isSendMessage; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/Presenter/XPCandyTreePresenter.m b/YuMi/Modules/YMRoom/View/CandyTree/Presenter/XPCandyTreePresenter.m new file mode 100644 index 00000000..4b0cfe8c --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/Presenter/XPCandyTreePresenter.m @@ -0,0 +1,53 @@ +// +// XPCandyTreePresenter.m +// xplan-ios +// +// Created by 冯硕 on 2021/12/9. +// + +#import "XPCandyTreePresenter.h" +#import "Api+CandyTree.h" +#import "AccountInfoStorage.h" +#import "XPCandyTreeProtocol.h" +#import "CandyTreeInfoModel.h" +#import "CandyTreeResultModel.h" + +@implementation XPCandyTreePresenter + + +/// 获取糖果树信息 +- (void)getCandyTreeInfo { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api candyTreeKeyComplection:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + CandyTreeInfoModel * infor = [CandyTreeInfoModel modelWithJSON:data.data]; + [[self getView] getCandyTreeInfoSuccess:infor]; + } showLoading:YES] uid:uid]; +} + + +/// 摘糖果 +/// @param keyNum 摘取的个数 +/// @param roomUid 房主的uid +- (void)pickCandy:(NSString *)keyNum roomUid:(NSString *)roomUid isSendMessage:(BOOL)isSendMessage{ + NSString * uid = [AccountInfoStorage instance].getUid; + NSString *showSwitch = [[NSUserDefaults standardUserDefaults] objectForKey:@"kCandyTreeHideMessage"]; + NSString *sendMessage; + if(showSwitch != nil){ + sendMessage = @"0"; + }else{ + sendMessage = isSendMessage == YES ? @"1":@"0"; + } + + [Api pickCandyComplection:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray *resultModel = [CandyTreeGiftInfoModel modelsWithArray:data.data]; + [[self getView] pickCandySuccess:resultModel]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + if(code == 31005){ + [[self getView]pickCandyPay]; + return; + } + [[self getView] pickCandyFail]; + }] sendMessage:sendMessage num:keyNum roomUid:roomUid uid:uid]; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/Presenter/YUMIConfectioneryTimberExternalizer.h b/YuMi/Modules/YMRoom/View/CandyTree/Presenter/YUMIConfectioneryTimberExternalizer.h deleted file mode 100644 index 2af65c1d..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/Presenter/YUMIConfectioneryTimberExternalizer.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YUMIConfectioneryTimberExternalizer.h -// YuMi -// -// Created by YuMi on 2021/12/9. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIConfectioneryTimberExternalizer : BaseMvpExternalizer -- (void)acquireConfectioneryTimberAbstract; - -- (void)extractConfectionery:(NSString *)keyNum roomUid:(NSString *)roomUid isSendMessage:(BOOL)isSendMessage; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/Presenter/YUMIConfectioneryTimberExternalizer.m b/YuMi/Modules/YMRoom/View/CandyTree/Presenter/YUMIConfectioneryTimberExternalizer.m deleted file mode 100644 index add85c34..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/Presenter/YUMIConfectioneryTimberExternalizer.m +++ /dev/null @@ -1,49 +0,0 @@ -// -// YUMIConfectioneryTimberExternalizer.m -// YuMi -// -// Created by YuMi on 2021/12/9. -// - -#import "YUMIConfectioneryTimberExternalizer.h" -#import "Api+CandyTree.h" -#import "AccountAbstractStorage.h" -#import "FBCCandyTreeCeremony.h" -#import "ConfectioneryTimberAbstractMatrix.h" -#import "ConfectioneryTimberConsequentMatrix.h" - -@implementation YUMIConfectioneryTimberExternalizer - - -- (void)acquireConfectioneryTimberAbstract { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api confectioneryTimberDigitalimplementtion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ConfectioneryTimberAbstractMatrix * infor = [ConfectioneryTimberAbstractMatrix mtowardsrixAboutJSON:data.data]; - [[self acquireRegard] acquireConfectioneryTimberAbstractAccomplishment:infor]; - } EvidenceChambering:YES] uid:uid]; -} - - -- (void)extractConfectionery:(NSString *)keyNum roomUid:(NSString *)roomUid isSendMessage:(BOOL)isSendMessage{ - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString *showSwitch = [[NSUserDefaults standardUserDefaults] objectForKey:@"kCandyTreeHideMessage"]; - NSString *sendMessage; - if(showSwitch != nil){ - sendMessage = @"0"; - }else{ - sendMessage = isSendMessage == YES ? @"1":@"0"; - } - - [Api extractConfectioneryimplementtion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray *resultModel = [ConfectioneryTimberPresentAbstractMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] extractConfectioneryAccomplishment:resultModel]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - if(code == 31005){ - [[self acquireRegard]extractConfectioneryIntersect]; - return; - } - [[self acquireRegard] extractConfectioneryFlunk]; - }] sendMessage:sendMessage num:keyNum roomUid:roomUid uid:uid]; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/Protocol/FBCCandyTreeCeremony.h b/YuMi/Modules/YMRoom/View/CandyTree/Protocol/FBCCandyTreeCeremony.h deleted file mode 100644 index 2f06a7b9..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/Protocol/FBCCandyTreeCeremony.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// FBCCandyTreeCeremony.h -// YuMi -// -// Created by YuMi on 2021/12/9. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ConfectioneryTimberAbstractMatrix, ConfectioneryTimberPresentAbstractMatrix; -@protocol FBCCandyTreeCeremony -- (void)acquireConfectioneryTimberAbstractAccomplishment:(ConfectioneryTimberAbstractMatrix *)info; -- (void)extractConfectioneryAccomplishment:(NSArray * )result; -- (void)extractConfectioneryFlunk; --(void)extractConfectioneryIntersect; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/Protocol/XPCandyTreeProtocol.h b/YuMi/Modules/YMRoom/View/CandyTree/Protocol/XPCandyTreeProtocol.h new file mode 100644 index 00000000..480111cd --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/Protocol/XPCandyTreeProtocol.h @@ -0,0 +1,23 @@ +// +// XPCandyTreeProtocol.h +// xplan-ios +// +// Created by 冯硕 on 2021/12/9. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class CandyTreeInfoModel, CandyTreeGiftInfoModel; +@protocol XPCandyTreeProtocol +///获取糖果树信息成功 +- (void)getCandyTreeInfoSuccess:(CandyTreeInfoModel *)info; +///摘糖果成功 +- (void)pickCandySuccess:(NSArray * )result; +///摘糖果失败 +- (void)pickCandyFail; +///摘糖果余额不足,要充值 +-(void)pickCandyPay; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/XPCandyTreeEmptyableViewCell.h b/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/XPCandyTreeEmptyableViewCell.h new file mode 100644 index 00000000..6f2caa80 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/XPCandyTreeEmptyableViewCell.h @@ -0,0 +1,16 @@ +// +// XPCandyTreeEmptyableViewCell.h +// xplan-ios +// +// Created by 冯硕 on 2021/12/10. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPCandyTreeEmptyableViewCell : UITableViewCell + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/XPCandyTreeEmptyableViewCell.m b/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/XPCandyTreeEmptyableViewCell.m new file mode 100644 index 00000000..2ceddc72 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/XPCandyTreeEmptyableViewCell.m @@ -0,0 +1,71 @@ +// +// XPCandyTreeEmptyableViewCell.m +// xplan-ios +// +// Created by 冯硕 on 2021/12/10. +// + +#import "XPCandyTreeEmptyableViewCell.h" +///Third +#import +#import "UIImageConstant.h" + + +@interface XPCandyTreeEmptyableViewCell () +@property (nonatomic,strong) UIImageView *emptyImageView; +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPCandyTreeEmptyableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.emptyImageView]; + [self.contentView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.emptyImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.contentView).offset(50); + make.size.mas_equalTo(CGSizeMake(100, 100)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.emptyImageView.mas_bottom).offset(20); + make.leading.trailing.mas_equalTo(self.contentView); + }]; +} +#pragma mark - Getters And Setters +- (UIImageView *)emptyImageView { + if (!_emptyImageView) { + _emptyImageView = [[UIImageView alloc] init]; + _emptyImageView.userInteractionEnabled = YES; + _emptyImageView.image = [UIImageConstant defalutEmptyPlaceholder]; + _emptyImageView.layer.masksToBounds = YES; + _emptyImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _emptyImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPCandyTreeEmptyableViewCell0"); + _titleLabel.font = [UIFont systemFontOfSize:16]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.textColor = [UIColor whiteColor]; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/XPCandyTreeMoreRuleCell.h b/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/XPCandyTreeMoreRuleCell.h new file mode 100644 index 00000000..a7cae861 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/XPCandyTreeMoreRuleCell.h @@ -0,0 +1,31 @@ +// +// XPCandyTreeMoreRuleCell.h +// xplan-ios +// +// Created by GreenLand on 2022/4/29. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class XPCandyTreeMoreRuleCell; +@protocol XPCandyTreeMoreRuleCellDelegate + +- (void)xPCandyTreeMoreRuleCell:(XPCandyTreeMoreRuleCell *)cell switchChange:(UISwitch *)change; + +@end + +@interface XPCandyTreeMoreRuleCell : UITableViewCell +@property (nonatomic, copy) NSString *title; +@property (nonatomic, assign) BOOL isShow; +///是否可以切换 +@property (nonatomic,assign) BOOL isSwitchEnable; +///等级 +@property (nonatomic,assign) NSInteger sendMessageSwitchLevel; + +@property (nonatomic, weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/XPCandyTreeMoreRuleCell.m b/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/XPCandyTreeMoreRuleCell.m new file mode 100644 index 00000000..065a4981 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/XPCandyTreeMoreRuleCell.m @@ -0,0 +1,119 @@ +// +// XPCandyTreeMoreRuleCell.m +// xplan-ios +// +// Created by GreenLand on 2022/4/29. +// + +#import "XPCandyTreeMoreRuleCell.h" +///Third +#import + + + +@interface XPCandyTreeMoreRuleCell () + +@property (nonatomic,strong) UILabel *titleLabel; +@property (nonatomic, strong) UISwitch *switchButton; +@property (nonatomic,strong) UIButton *disableButton; + +@end + + +@implementation XPCandyTreeMoreRuleCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor whiteColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.titleLabel]; + [self.contentView addSubview:self.switchButton]; + [self.contentView addSubview:self.disableButton]; +} + +- (void)initSubViewConstraints { + [self.switchButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.contentView); + make.trailing.mas_equalTo(-16); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.contentView); + make.leading.mas_equalTo(16); + make.trailing.mas_equalTo(-70); + }]; + + + [self.disableButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.switchButton); + }]; +} + +- (void)switchDidChange:(UISwitch *)switchButton { + if (self.isSwitchEnable && self.delegate && [self.delegate respondsToSelector:@selector(xPCandyTreeMoreRuleCell:switchChange:)]) { + [self.delegate xPCandyTreeMoreRuleCell:self switchChange:switchButton]; + } +} + +- (void)disableButtonAction:(UIButton *)sender { + if (!self.isSwitchEnable && self.sendMessageSwitchLevel > 0) { + [XNDJTDDLoadingTool showErrorWithMessage:[NSString stringWithFormat:YMLocalizedString(@"XPCandyTreeMoreRuleCell0"), self.sendMessageSwitchLevel]]; + } +} + +#pragma mark - Getters And Setters +- (void)setTitle:(NSString *)title { + self.titleLabel.text = title; +} + +- (void)setIsShow:(BOOL)isShow { + self.switchButton.on = isShow; +} + +- (void)setIsSwitchEnable:(BOOL)isSwitchEnable { + _isSwitchEnable = isSwitchEnable; + if (_isSwitchEnable) { + [self.switchButton setOnTintColor:[DJDKMIMOMColor appMainColor]]; + self.disableButton.hidden = YES; + } else { + [self.switchButton setOnTintColor:[DJDKMIMOMColor disableButtonColor]]; + self.switchButton.on = NO; + self.disableButton.hidden = NO; + } +} + +- (UISwitch *)switchButton { + if (!_switchButton) { + _switchButton = [[UISwitch alloc] init]; + [_switchButton addTarget:self action:@selector(switchDidChange:) forControlEvents:UIControlEventValueChanged]; + + } + return _switchButton; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:15]; + + _titleLabel.textColor = [DJDKMIMOMColor alertTitleColor]; + _titleLabel.numberOfLines = 0; + } + return _titleLabel; +} + +- (UIButton *)disableButton { + if (!_disableButton) { + _disableButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_disableButton addTarget:self action:@selector(disableButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _disableButton; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/XPCandyTreeRankTableViewCell.h b/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/XPCandyTreeRankTableViewCell.h new file mode 100644 index 00000000..fcecdf44 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/XPCandyTreeRankTableViewCell.h @@ -0,0 +1,17 @@ +// +// XPCandyTreeRankTableViewCell.h +// xplan-ios +// +// Created by 冯硕 on 2021/12/10. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class CandyTreeRecordModel; +@interface XPCandyTreeRankTableViewCell : UITableViewCell +/// +@property (nonatomic,strong) CandyTreeRecordModel *roomRankModel; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/XPCandyTreeRankTableViewCell.m b/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/XPCandyTreeRankTableViewCell.m new file mode 100644 index 00000000..21002c6c --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/XPCandyTreeRankTableViewCell.m @@ -0,0 +1,186 @@ +// +// XPCandyTreeRankTableViewCell.m +// xplan-ios +// +// Created by 冯硕 on 2021/12/10. +// + +#import "XPCandyTreeRankTableViewCell.h" +///Third +#import +///Tool +#import "ThemeColor+Room.h" +#import "NetImageView.h" +///Model +#import "CandyTreeRecordModel.h" +@interface XPCandyTreeRankTableViewCell () +///排行榜图片 +@property (nonatomic, strong) UIImageView *rankImageView; +///排行榜 +@property (nonatomic, strong) UILabel *rankLabel; +///头像 +@property (nonatomic, strong) NetImageView *avatarImageView; +///性别 +@property (nonatomic, strong) UIImageView *genderImageView; +///昵称 +@property (nonatomic, strong) UILabel *nickNameLabel; +///金币数 +@property (nonatomic, strong) UILabel *coinNumberLabel; +/// 钻石 +@property (nonatomic, strong) UIImageView *coinImageView; + +@end + +@implementation XPCandyTreeRankTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.rankImageView]; + [self.contentView addSubview:self.rankLabel]; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.nickNameLabel]; + [self.contentView addSubview:self.coinNumberLabel]; + [self.contentView addSubview:self.coinImageView]; +} + +- (void)initSubViewConstraints { + [self.rankLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(kGetScaleWidth(23)); + make.centerY.mas_equalTo(self); + }]; + + [self.rankImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self.rankLabel); + make.width.height.mas_equalTo(kGetScaleWidth(22)); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.contentView); + make.width.height.mas_equalTo(kGetScaleWidth(50)); + make.leading.mas_equalTo(self.rankImageView.mas_trailing).offset(kGetScaleWidth(12)); + }]; + + [self.nickNameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(self.avatarImageView.mas_trailing).offset(kGetScaleWidth(15)); + make.centerY.mas_equalTo(self.avatarImageView); + make.trailing.mas_lessThanOrEqualTo(self.coinNumberLabel.mas_leading).offset(-kGetScaleWidth(5)); + }]; + + [self.coinImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.trailing.mas_equalTo(-kGetScaleWidth(15)); + make.centerY.mas_equalTo(self.avatarImageView.mas_centerY); + make.width.mas_equalTo(kGetScaleWidth(14)); + make.height.mas_equalTo(kGetScaleWidth(14)); + }]; + + [self.coinNumberLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.trailing.mas_equalTo(self.coinImageView.mas_leading).offset(-kGetScaleWidth(3)); + make.centerY.mas_equalTo(self.avatarImageView); + make.width.mas_greaterThanOrEqualTo(10); + }]; + + +} + +#pragma mark - Getters And Setters +- (void)setRoomRankModel:(CandyTreeRecordModel *)roomRankModel { + _roomRankModel = roomRankModel; + NSString *rankImage = [NSString stringWithFormat:@"room_candytree_wish_num%d", _roomRankModel.ranking.intValue]; + if (roomRankModel.ranking.intValue <= 3) { + self.rankImageView.image = [UIImage imageNamed:rankImage]; + self.rankImageView.hidden = NO; + self.rankLabel.hidden = YES; + }else { + self.rankLabel.text = _roomRankModel.ranking; + self.rankImageView.hidden = YES; + self.rankLabel.hidden = NO; + } + self.coinNumberLabel.text = roomRankModel.diamonds; + self.avatarImageView.imageUrl = _roomRankModel.avatar; + self.nickNameLabel.text = _roomRankModel.nick;; +} + +- (UIImageView *)rankImageView { + if (!_rankImageView) { + _rankImageView = [[UIImageView alloc] init]; + } + return _rankImageView; +} + + +- (UILabel *)rankLabel { + if (!_rankLabel) { + _rankLabel = [[UILabel alloc] init]; + _rankLabel.font = kFontBold(18); + _rankLabel.textAlignment = NSTextAlignmentCenter; + _rankLabel.textColor = [UIColor whiteColor]; + } + return _rankLabel; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserIcon; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = kGetScaleWidth(50)/2; + _avatarImageView.layer.borderWidth = 1; + _avatarImageView.layer.borderColor = [UIColor whiteColor].CGColor; + } + return _avatarImageView; +} + + +- (UIImageView *)genderImageView { + if (!_genderImageView) { + _genderImageView = [[UIImageView alloc] init]; + _genderImageView.hidden = YES; + [_genderImageView setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + } + return _genderImageView; +} + +- (UILabel *)nickNameLabel { + if (!_nickNameLabel) { + _nickNameLabel = [[UILabel alloc] init]; + _nickNameLabel.font = kFontRegular(14); + _nickNameLabel.textColor = [UIColor whiteColor]; + } + return _nickNameLabel; +} + + +- (UILabel *)coinNumberLabel{ + if (!_coinNumberLabel) { + _coinNumberLabel = [[UILabel alloc] init]; + _coinNumberLabel.font = kFontMedium(14); + _coinNumberLabel.textColor = UIColorFromRGB(0xF8FF7B); + _coinNumberLabel.textAlignment = NSTextAlignmentRight; + [_coinNumberLabel setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + } + return _coinNumberLabel; +} + +- (UIImageView *)coinImageView { + if (!_coinImageView) { + _coinImageView = [[UIImageView alloc] init]; + _coinImageView.image = [UIImage imageNamed:@"candy_tree_diamond"]; + } + return _coinImageView; +} + + + +@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/YUMIConfectioneryTimberDispossessableRegardElement.h b/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/YUMIConfectioneryTimberDispossessableRegardElement.h deleted file mode 100644 index 75eb8ced..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/YUMIConfectioneryTimberDispossessableRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIConfectioneryTimberDispossessableRegardElement.h -// YuMi -// -// Created by YuMi on 2021/12/10. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIConfectioneryTimberDispossessableRegardElement : UITableViewCell - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/YUMIConfectioneryTimberDispossessableRegardElement.m b/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/YUMIConfectioneryTimberDispossessableRegardElement.m deleted file mode 100644 index cbd0ef05..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/YUMIConfectioneryTimberDispossessableRegardElement.m +++ /dev/null @@ -1,71 +0,0 @@ -// -// YUMIConfectioneryTimberDispossessableRegardElement.m -// YuMi -// -// Created by YuMi on 2021/12/10. -// - -#import "YUMIConfectioneryTimberDispossessableRegardElement.h" -#import -#import "UIIndicateConstant.h" -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" - -@interface YUMIConfectioneryTimberDispossessableRegardElement () -@property (nonatomic,strong) UIImageView *dispossessIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@end - -@implementation YUMIConfectioneryTimberDispossessableRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.dispossessIndicateRegard]; - [self.contentView addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.dispossessIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.contentView).offset(50); - make.size.mas_equalTo(CGSizeMake(100, 100)); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.dispossessIndicateRegard.mas_bottom).offset(20); - make.left.right.mas_equalTo(self.contentView); - }]; -} -#pragma mark - Getters And Setters -- (UIImageView *)dispossessIndicateRegard { - if (!_dispossessIndicateRegard) { - _dispossessIndicateRegard = [[UIImageView alloc] init]; - _dispossessIndicateRegard.userInteractionEnabled = YES; - _dispossessIndicateRegard.image = [UIIndicateConstant defalutDispossessDepapossessor]; - _dispossessIndicateRegard.layer.masksToBounds = YES; - _dispossessIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _dispossessIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Candy_Tree_Emptyable_View_Cell_0"); - _titleLabel.font = [UIFont systemFontOfSize:16]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.textColor = [UIColor whiteColor]; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/YUMIConfectioneryTimberFurthaerPreadominantElement.h b/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/YUMIConfectioneryTimberFurthaerPreadominantElement.h deleted file mode 100644 index f5ae2b5f..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/YUMIConfectioneryTimberFurthaerPreadominantElement.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// YUMIConfectioneryTimberFurthaerPreadominantElement.h -// YuMi -// -// Created by GreenLand on 2022/4/29. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class YUMIConfectioneryTimberFurthaerPreadominantElement; -@protocol FBCCandyTreeFurthaerRuleElementRepresendtation - -- (void)yUMIConfectioneryTimberFurthaerPreadominantElement:(YUMIConfectioneryTimberFurthaerPreadominantElement *)cell switchChange:(UISwitch *)change; - -@end - -@interface YUMIConfectioneryTimberFurthaerPreadominantElement : UITableViewCell -@property (nonatomic, copy) NSString *title; -@property (nonatomic, assign) BOOL isExhibit; -@property (nonatomic,assign) BOOL isSwopCapacitate; -@property (nonatomic,assign) NSInteger sendMessageSwitchLevel; - -@property (nonatomic, weak) id delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/YUMIConfectioneryTimberFurthaerPreadominantElement.m b/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/YUMIConfectioneryTimberFurthaerPreadominantElement.m deleted file mode 100644 index da0ecd7f..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/YUMIConfectioneryTimberFurthaerPreadominantElement.m +++ /dev/null @@ -1,116 +0,0 @@ -// -// YUMIConfectioneryTimberFurthaerPreadominantElement.m -// YuMi -// -// Created by GreenLand on 2022/4/29. -// - -#import "YUMIConfectioneryTimberFurthaerPreadominantElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "XNDJTBWGLoadingTool.h" -#import "YUMIMacroUitls.h" - -@interface YUMIConfectioneryTimberFurthaerPreadominantElement () - -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic, strong) UISwitch *swopBtuton; -@property (nonatomic,strong) UIButton *disableBtuton; - -@end - - -@implementation YUMIConfectioneryTimberFurthaerPreadominantElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor whiteColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.titleLabel]; - [self.contentView addSubview:self.swopBtuton]; - [self.contentView addSubview:self.disableBtuton]; -} - -- (void)initChildLyRestrictions { - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.contentView); - make.left.mas_equalTo(16); - }]; - [self.swopBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.contentView); - make.right.mas_equalTo(-16); - }]; - - [self.disableBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.swopBtuton); - }]; -} - -- (void)swopDidDiversifictowardsion:(UISwitch *)swopBtuton { - if (self.isSwopCapacitate && self.delegate && [self.delegate respondsToSelector:@selector(yUMIConfectioneryTimberFurthaerPreadominantElement:switchChange:)]) { - [self.delegate yUMIConfectioneryTimberFurthaerPreadominantElement:self switchChange:swopBtuton]; - } -} - -- (void)prohibitionBtutonPerformance:(UIButton *)sender { - if (!self.isSwopCapacitate && self.sendMessageSwitchLevel > 0) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:[NSString stringWithFormat:YMLocalizedString(@"YUMI_Candy_Tree_More_Rule_Cell_0"), self.sendMessageSwitchLevel]]; - } -} - -#pragma mark - Getters And Setters -- (void)setTitle:(NSString *)title { - self.titleLabel.text = title; -} - -- (void)setIsExhibit:(BOOL)isExhibit { - self.swopBtuton.on = isExhibit; -} - -- (void)setIsSwopCapacitate:(BOOL)isSwopCapacitate { - _isSwopCapacitate = isSwopCapacitate; - if (_isSwopCapacitate) { - [self.swopBtuton setOnTintColor:[DJDKMIMOMColor aplictowardsionMainPrettify]]; - self.disableBtuton.hidden = YES; - } else { - [self.swopBtuton setOnTintColor:[DJDKMIMOMColor prohibitionBtutonPrettify]]; - self.swopBtuton.on = NO; - self.disableBtuton.hidden = NO; - } -} - -- (UISwitch *)swopBtuton { - if (!_swopBtuton) { - _swopBtuton = [[UISwitch alloc] init]; - [_swopBtuton addTarget:self action:@selector(swopDidDiversifictowardsion:) forControlEvents:UIControlEventValueChanged]; - - } - return _swopBtuton; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:15]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.textColor = [DJDKMIMOMColor precautiousChampionPrettify]; - } - return _titleLabel; -} - -- (UIButton *)disableBtuton { - if (!_disableBtuton) { - _disableBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_disableBtuton addTarget:self action:@selector(prohibitionBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _disableBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/YUMIConfectioneryTimberRateTabulationRegardElement.h b/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/YUMIConfectioneryTimberRateTabulationRegardElement.h deleted file mode 100644 index 1506c836..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/YUMIConfectioneryTimberRateTabulationRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIConfectioneryTimberRateTabulationRegardElement.h -// YuMi -// -// Created by YuMi on 2021/12/10. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ConfectioneryTimberReflectionMatrix; -@interface YUMIConfectioneryTimberRateTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) ConfectioneryTimberReflectionMatrix *chamberRateMatrix; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/YUMIConfectioneryTimberRateTabulationRegardElement.m b/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/YUMIConfectioneryTimberRateTabulationRegardElement.m deleted file mode 100644 index 718b760b..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/View/Cell/YUMIConfectioneryTimberRateTabulationRegardElement.m +++ /dev/null @@ -1,177 +0,0 @@ -// -// YUMIConfectioneryTimberRateTabulationRegardElement.m -// YuMi -// -// Created by YuMi on 2021/12/10. -// - -#import "YUMIConfectioneryTimberRateTabulationRegardElement.h" -#import -#import "ThemeColor+Room.h" -#import "NetIndicateRegard.h" -#import "YUMIMacroUitls.h" -#import "ConfectioneryTimberReflectionMatrix.h" -@interface YUMIConfectioneryTimberRateTabulationRegardElement () -@property (nonatomic, strong) UIImageView *rateIndicateRegard; -@property (nonatomic, strong) UILabel *rateSequencignation; -@property (nonatomic, strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic, strong) UIImageView *genderIndicateRegard; -@property (nonatomic, strong) UILabel *monicerConstituteSequencignation; -@property (nonatomic, strong) UILabel *tangerineDigitalSequencignation; -@property (nonatomic, strong) UIImageView *tangerineIndicateRegard; - -@end - -@implementation YUMIConfectioneryTimberRateTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.rateIndicateRegard]; - [self.contentView addSubview:self.rateSequencignation]; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.monicerConstituteSequencignation]; - [self.contentView addSubview:self.tangerineDigitalSequencignation]; - [self.contentView addSubview:self.tangerineIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.rateSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(round(23 * kScreenScale)); - make.centerY.mas_equalTo(self); - }]; - - [self.rateIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.mas_equalTo(self.rateSequencignation); - make.width.height.mas_equalTo(round(22 * kScreenScale)); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.contentView); - make.width.height.mas_equalTo(round(50 * kScreenScale)); - make.left.mas_equalTo(self.rateIndicateRegard.mas_right).offset(round(12 * kScreenScale)); - }]; - - [self.monicerConstituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(round(15 * kScreenScale)); - make.centerY.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.right.mas_lessThanOrEqualTo(self.tangerineDigitalSequencignation.mas_left).offset(-round(5 * kScreenScale)); - }]; - - [self.tangerineIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-round(15 * kScreenScale)); - make.centerY.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY); - make.width.mas_equalTo(round(14 * kScreenScale)); - make.height.mas_equalTo(round(14 * kScreenScale)); - }]; - - [self.tangerineDigitalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.tangerineIndicateRegard.mas_left).offset(-round(3 * kScreenScale)); - make.centerY.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.width.mas_greaterThanOrEqualTo(10); - }]; - - -} - -#pragma mark - Getters And Setters -- (void)setChamberRateMatrix:(ConfectioneryTimberReflectionMatrix *)chamberRateMatrix { - _chamberRateMatrix = chamberRateMatrix; - NSString *rankImage = [NSString stringWithFormat:@"room_candytree_wish_num%d", _chamberRateMatrix.ranking.intValue]; - if (chamberRateMatrix.ranking.intValue <= 3) { - self.rateIndicateRegard.image = [UIImage imageNamed:rankImage]; - self.rateIndicateRegard.hidden = NO; - self.rateSequencignation.hidden = YES; - }else { - self.rateSequencignation.text = _chamberRateMatrix.ranking; - self.rateIndicateRegard.hidden = YES; - self.rateSequencignation.hidden = NO; - } - self.tangerineDigitalSequencignation.text = chamberRateMatrix.diamonds; - self.intelligenceportraitIndicateRegard.imageUrl = _chamberRateMatrix.avatar; - self.monicerConstituteSequencignation.text = _chamberRateMatrix.nick;; -} - -- (UIImageView *)rateIndicateRegard { - if (!_rateIndicateRegard) { - _rateIndicateRegard = [[UIImageView alloc] init]; - } - return _rateIndicateRegard; -} - - -- (UILabel *)rateSequencignation { - if (!_rateSequencignation) { - _rateSequencignation = [[UILabel alloc] init]; - _rateSequencignation.font = [UIFont boldSystemFontOfSize:18]; - _rateSequencignation.textAlignment = NSTextAlignmentCenter; - _rateSequencignation.textColor = [UIColor whiteColor]; - } - return _rateSequencignation; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.imageType = ImageGenreUserIcon; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = round(50 * kScreenScale)/2; - _intelligenceportraitIndicateRegard.layer.borderWidth = 1; - _intelligenceportraitIndicateRegard.layer.borderColor = [UIColor whiteColor].CGColor; - } - return _intelligenceportraitIndicateRegard; -} - - -- (UIImageView *)genderIndicateRegard { - if (!_genderIndicateRegard) { - _genderIndicateRegard = [[UIImageView alloc] init]; - _genderIndicateRegard.hidden = YES; - [_genderIndicateRegard setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - } - return _genderIndicateRegard; -} - -- (UILabel *)monicerConstituteSequencignation { - if (!_monicerConstituteSequencignation) { - _monicerConstituteSequencignation = [[UILabel alloc] init]; - _monicerConstituteSequencignation.font = [UIFont systemFontOfSize:14]; - _monicerConstituteSequencignation.textColor = [UIColor whiteColor]; - } - return _monicerConstituteSequencignation; -} - - -- (UILabel *)tangerineDigitalSequencignation{ - if (!_tangerineDigitalSequencignation) { - _tangerineDigitalSequencignation = [[UILabel alloc] init]; - _tangerineDigitalSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _tangerineDigitalSequencignation.textColor = UIColorFromRGB(0xF8FF7B); - _tangerineDigitalSequencignation.textAlignment = NSTextAlignmentRight; - [_tangerineDigitalSequencignation setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - } - return _tangerineDigitalSequencignation; -} - -- (UIImageView *)tangerineIndicateRegard { - if (!_tangerineIndicateRegard) { - _tangerineIndicateRegard = [[UIImageView alloc] init]; - _tangerineIndicateRegard.image = [UIImage imageNamed:@"yumi_candy_tree_diamond"]; - } - return _tangerineIndicateRegard; -} - - - -@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyRankContainerView.h b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyRankContainerView.h new file mode 100644 index 00000000..0d3601c1 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyRankContainerView.h @@ -0,0 +1,24 @@ +// +// XPCandyRankContainerView.h +// xplan-ios +// +// Created by 冯硕 on 2021/12/10. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + + +@protocol XPCandyRankContainerViewDelegate + +-(void)didClickHeadHandle:(NSInteger)uid; + +@end + + +@interface XPCandyRankContainerView : UIView +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyRankContainerView.m b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyRankContainerView.m new file mode 100644 index 00000000..c724f8a1 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyRankContainerView.m @@ -0,0 +1,178 @@ +// +// XPCandyRankContainerView.m +// xplan-ios +// +// Created by 冯硕 on 2021/12/10. +// + +#import "XPCandyRankContainerView.h" +///Third +#import +#import +#import +///Tool +#import "ThemeColor+Room.h" +///View +#import "XPCandyTreeRankView.h" +@interface XPCandyRankContainerView () +///分页标题 +@property (nonatomic, strong) NSArray *titles; +///分页控件 +@property (nonatomic, strong) JXCategoryTitleView *titleView; +///分页lineView +@property (nonatomic, strong) JXCategoryListContainerView *contentView; +///刷新 +@property (nonatomic,strong) UIButton *refreshButton; +///今日榜单 +@property (nonatomic,strong) XPCandyTreeRankView *todayListView; +///昨日榜单 +@property (nonatomic,strong) XPCandyTreeRankView *yesterdayListView; +@end + +@implementation XPCandyRankContainerView +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + UIImage *image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0x83BBFF),UIColorFromRGB(0x927DFF)] gradientType:GradientTypeTopToBottom imgSize:CGSizeMake(KScreenWidth, kGetScaleWidth(390))]; + self.backgroundColor = [UIColor colorWithPatternImage:image]; + [self addSubview:self.titleView]; + [self addSubview:self.self.refreshButton]; + [self addSubview:self.contentView]; + + CAShapeLayer * layer = [CAShapeLayer layer]; + UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth,kGetScaleWidth(390)) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(kGetScaleWidth(20), kGetScaleWidth(20))]; + layer.path = path.CGPath; + self.layer.mask = layer; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth); + make.height.mas_equalTo(kGetScaleWidth(390)); + }]; + + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.top.mas_equalTo(self); + make.height.mas_equalTo(kGetScaleWidth(45)); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.bottom.mas_equalTo(self); + make.top.mas_equalTo(self.titleView.mas_bottom); + }]; + + [self.refreshButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.trailing.mas_equalTo(-kGetScaleWidth(23)); + make.centerY.mas_equalTo(self.titleView.mas_centerY); + make.width.height.mas_equalTo(kGetScaleWidth(15)); + }]; +} + +#pragma mark - JXCategoryViewDelegate +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { + return self.titles.count; +} + +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { + if (index == 0) { + return self.todayListView; + } + return self.yesterdayListView; +} + +#pragma mark - Event Response +- (void)refreshButtonAction:(UIButton *)sender { + self.todayListView.type = CandyTreeRecordType_Today; + self.yesterdayListView.type = CandyTreeRecordType_Yesterday; +} + +#pragma mark - Getters And Setters +- (JXCategoryTitleView *)titleView { + if (!_titleView) { + _titleView = [[JXCategoryTitleView alloc] init]; + _titleView.delegate = self; + _titleView.titles = self.titles; + _titleView.titleColor = [UIColor colorWithWhite:1 alpha:0.5]; + _titleView.titleSelectedColor = [UIColor whiteColor]; + _titleView.titleFont = kFontSemibold(16); + _titleView.titleSelectedFont = kFontSemibold(16); + _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; + _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; + _titleView.defaultSelectedIndex = 0; + _titleView.listContainer = self.contentView; + + JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init]; + lineView.indicatorColor = [UIColor whiteColor]; + lineView.indicatorWidth = kGetScaleWidth(13); + lineView.indicatorHeight = kGetScaleWidth(4); + lineView.verticalMargin = kGetScaleWidth(5); + lineView.indicatorCornerRadius = kGetScaleWidth(2); + _titleView.indicators = @[lineView]; + } + return _titleView; +} + +- (JXCategoryListContainerView *)contentView { + if (!_contentView) { + _contentView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; + _contentView.defaultSelectedIndex = 0; + } + return _contentView; +} + +- (NSArray *)titles { + return @[YMLocalizedString(@"XPCandyRankContainerView0"), YMLocalizedString(@"XPCandyRankContainerView1")]; +} + +- (UIButton *)refreshButton { + if (!_refreshButton) { + _refreshButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_refreshButton setImage:[UIImage imageNamed:@"room_candy_tree_record_refresh"] forState:UIControlStateNormal]; + [_refreshButton setImage:[UIImage imageNamed:@"room_candy_tree_record_refresh"] forState:UIControlStateSelected]; + [_refreshButton addTarget:self action:@selector(refreshButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_refreshButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + } + return _refreshButton; +} + +- (XPCandyTreeRankView *)todayListView { + if (!_todayListView) { + _todayListView = [[XPCandyTreeRankView alloc] init]; + _todayListView.type = CandyTreeRecordType_Today; + @kWeakify(self) + _todayListView.didClickHandle = ^(NSInteger uid) { + @kStrongify(self) + if(self.delegate && [self.delegate respondsToSelector:@selector(didClickHeadHandle:)]){ + [self.delegate didClickHeadHandle:uid]; + } + }; + } + return _todayListView; +} + +- (XPCandyTreeRankView *)yesterdayListView { + if (!_yesterdayListView) { + _yesterdayListView = [[XPCandyTreeRankView alloc] init]; + _yesterdayListView.type = CandyTreeRecordType_Yesterday; + @kWeakify(self) + _yesterdayListView.didClickHandle = ^(NSInteger uid) { + @kStrongify(self) + if(self.delegate && [self.delegate respondsToSelector:@selector(didClickHeadHandle:)]){ + [self.delegate didClickHeadHandle:uid]; + } + }; + } + return _yesterdayListView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeGiftView.h b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeGiftView.h new file mode 100644 index 00000000..1c09c639 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeGiftView.h @@ -0,0 +1,17 @@ +// +// XPCandyTreeGiftView.h +// xplan-ios +// +// Created by 冯硕 on 2021/12/10. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class CandyTreeGiftInfoModel, XPCandyTreeAnimationModel; +@interface XPCandyTreeGiftView : UIView +///礼物的信息 +@property (nonatomic,strong) CandyTreeGiftInfoModel *giftInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeGiftView.m b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeGiftView.m new file mode 100644 index 00000000..ba7ad66a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeGiftView.m @@ -0,0 +1,89 @@ +// +// XPCandyTreeGiftView.m +// xplan-ios +// +// Created by 冯硕 on 2021/12/10. +// + +#import "XPCandyTreeGiftView.h" +///Third +#import +#import +#import "CandyTreeResultModel.h" +#import "XPCandyTreeAnimationModel.h" + +@interface XPCandyTreeGiftView () +///礼物背景 +@property (nonatomic,strong) UIImageView *backImageView; +///显示文字 +@property (nonatomic,strong) UILabel *titleLabel; +///动画完成 +@property (nonatomic,copy) void(^FinishBlock)(BOOL finish); +@end + +@implementation XPCandyTreeGiftView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backImageView]; + [self addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.top.mas_equalTo(self); + make.height.mas_equalTo(18); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(self.backImageView.mas_leading).offset(6); + make.trailing.mas_equalTo(self.backImageView.mas_trailing).offset(-6); + make.centerY.mas_equalTo(self.backImageView); + }]; +} +#pragma mark - Getters And Setters +- (void)setGiftInfo:(CandyTreeGiftInfoModel *)giftInfo { + _giftInfo = giftInfo; + if (_giftInfo) { + UIImage *backImage = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xF7D377),UIColorFromRGB(0xEE8833)] gradientType:GradientTypeTopToBottom imgSize:CGSizeMake(68, 18)]; + self.backImageView.image = backImage; + if (_giftInfo.rewardName.length > 7) { + _giftInfo.rewardName = [_giftInfo.rewardName substringToIndex:7]; + } + NSString * giftTitle = [NSString stringWithFormat:@"%@ x %d", _giftInfo.rewardName, _giftInfo.num]; + self.titleLabel.text = giftTitle; + } + [self layoutIfNeeded]; +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.layer.cornerRadius = 9; + _backImageView.layer.masksToBounds = YES; + _backImageView.layer.borderWidth = 1; + _backImageView.layer.borderColor = UIColorFromRGB(0xFFF0CE).CGColor; + } + return _backImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightRegular]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.textColor = [UIColor whiteColor]; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeInsufficientBalanceView.h b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeInsufficientBalanceView.h new file mode 100644 index 00000000..95dacc99 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeInsufficientBalanceView.h @@ -0,0 +1,24 @@ +// +// XPCandyTreeInsufficientBalanceView.h +// xplan-ios +// +// Created by duoban on 2023/3/23. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPCandyTreeInsufficientBalanceViewDelegate + +-(void)payBalanceAction; + +@end + + +@interface XPCandyTreeInsufficientBalanceView : UIView +/// +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeInsufficientBalanceView.m b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeInsufficientBalanceView.m new file mode 100644 index 00000000..b44b6777 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeInsufficientBalanceView.m @@ -0,0 +1,135 @@ +// +// XPCandyTreeInsufficientBalanceView.m +// xplan-ios +// +// Created by duoban on 2023/3/23. +// + +#import "XPCandyTreeInsufficientBalanceView.h" +@interface XPCandyTreeInsufficientBalanceView() +///返回 +@property (nonatomic,strong) UIButton *backView; +///背景 +@property (nonatomic,strong) UIView *bgView; +///标题 +@property (nonatomic,strong) UILabel *titleView; +/// +@property (nonatomic,strong) UIImageView *iconView; +///内容 +@property (nonatomic,strong) UILabel *contentView; +///去充值 +@property (nonatomic,strong) UIButton *payBtn; +@end +@implementation XPCandyTreeInsufficientBalanceView + +-(instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if(self){ + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor colorWithWhite:0 alpha:0.6]; + [self addSubview:self.backView]; + [self addSubview:self.bgView]; + [self.bgView addSubview:self.titleView]; + [self.bgView addSubview:self.iconView]; + [self.bgView addSubview:self.contentView]; + [self.bgView addSubview:self.payBtn]; +} +- (void)initSubViewConstraints { + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self); + }]; + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.equalTo(self); + make.width.mas_equalTo(kGetScaleWidth(306)); + make.height.mas_equalTo(kGetScaleWidth(212)); + }]; + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(20)); + make.height.mas_equalTo(kGetScaleWidth(16)); + make.centerX.equalTo(self.bgView); + }]; + [self.iconView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(52)); + make.width.height.mas_equalTo(kGetScaleWidth(43)); + make.centerX.equalTo(self.bgView); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(108)); + make.left.right.equalTo(self.bgView).inset(kGetScaleWidth(10)); + }]; + [self.payBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(152)); + make.width.mas_equalTo(kGetScaleWidth(137)); + make.height.mas_equalTo(kGetScaleWidth(39)); + make.centerX.equalTo(self.bgView); + }]; + +} +-(void)backAction{ + [self removeFromSuperview]; +} +-(void)payAction{ + [self removeFromSuperview]; + if(self.delegate && [self.delegate respondsToSelector:@selector(payBalanceAction)]){ + [self.delegate payBalanceAction]; + } +} +#pragma mark -懒加载 +- (UIView *)bgView{ + if (!_bgView){ + _bgView = [UIView new]; + _bgView.backgroundColor = [UIColor whiteColor]; + [_bgView setCornerWithLeftTopCorner:kGetScaleWidth(26) rightTopCorner:kGetScaleWidth(26) bottomLeftCorner:kGetScaleWidth(26) bottomRightCorner:kGetScaleWidth(26) size:CGSizeMake(kGetScaleWidth(308), kGetScaleWidth(202))]; + } + return _bgView; +} +-(UILabel *)titleView{ + if (!_titleView){ + _titleView = [UILabel labelInitWithText:YMLocalizedString(@"XPCandyTreeInsufficientBalanceView0") font:kFontSemibold(17) textColor:[DJDKMIMOMColor alertTitleColor]]; + } + return _titleView; +} +- (UIImageView *)iconView{ + if (!_iconView){ + _iconView = [UIImageView new]; + _iconView.image = kImage(@"room_candytree_prompt"); + } + return _iconView; +} +- (UILabel *)contentView{ + if (!_contentView){ + _contentView = [UILabel labelInitWithText:YMLocalizedString(@"XPCandyTreeInsufficientBalanceView1") font:kFontMedium(14) textColor:[DJDKMIMOMColor alertTitleColor]]; + _contentView.numberOfLines = 0; + _contentView.textAlignment = NSTextAlignmentCenter; + } + return _contentView; +} +-(UIButton *)payBtn{ + if (!_payBtn){ + _payBtn = [UIButton new]; + UIImage *image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientMiddleColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(137), kGetScaleWidth(39))]; + [_payBtn setBackgroundImage:image forState:UIControlStateNormal]; + _payBtn.layer.cornerRadius = kGetScaleWidth(39)/2; + _payBtn.layer.masksToBounds = YES; + [_payBtn setTitle:YMLocalizedString(@"XPCandyTreeInsufficientBalanceView2") forState:UIControlStateNormal]; + [_payBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_payBtn addTarget:self action:@selector(payAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _payBtn; +} +- (UIButton *)backView{ + if (!_backView){ + _backView = [UIButton new]; + [_backView addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _backView; +} +@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeMoreView.h b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeMoreView.h new file mode 100644 index 00000000..aa13c529 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeMoreView.h @@ -0,0 +1,19 @@ +// +// XPCandyTreeMoreView.h +// xplan-ios +// +// Created by 冯硕 on 2021/12/10. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPCandyTreeMoreView : UIView +///是否可以切换最小等级 +@property (nonatomic,assign) NSInteger sendMessageSwitchLevel; +///展示中奖消息的开关 +@property (nonatomic, assign) BOOL showMessageSwitch; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeMoreView.m b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeMoreView.m new file mode 100644 index 00000000..41a478fa --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeMoreView.m @@ -0,0 +1,175 @@ +// +// XPCandyTreeMoreView.m +// xplan-ios +// +// Created by 冯硕 on 2021/12/10. +// + +#import "XPCandyTreeMoreView.h" +///Third +#import +///Tool + + + +#import "TTPopup.h" + +///View +#import "XPRoomHalfWebView.h" +#import "XPCandyTreeMoreRuleCell.h" + +///是否隐藏中奖消息 +NSString * const kCandyTreeHideMessage = @"kCandyTreeHideMessage"; + +@interface XPCandyTreeMoreView () +///标题 +@property (nonatomic,strong) UILabel *titleLabel; +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据 +@property (nonatomic,strong) NSMutableArray *datasource; +@end + +@implementation XPCandyTreeMoreView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor whiteColor]; + [self addSubview:self.titleLabel]; + [self addSubview:self.tableView]; + CAShapeLayer * layer = [CAShapeLayer layer]; + UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, 256+44) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)]; + layer.path = path.CGPath; + self.layer.mask = layer; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth); + make.height.mas_equalTo(256+44); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.top.mas_equalTo(self); + make.height.mas_equalTo(44); + }]; + + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.bottom.mas_equalTo(self); + make.top.mas_equalTo(self.titleLabel.mas_bottom); + }]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 50; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (indexPath.row != self.datasource.count - 1) { + UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([UITableViewCell class])]; + if (cell == nil) { + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([UITableViewCell class])]; + } + cell.backgroundColor = [UIColor whiteColor]; + cell.textLabel.text = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.textLabel.textColor = [DJDKMIMOMColor alertTitleColor]; + cell.textLabel.font = [UIFont systemFontOfSize:15]; + return cell; + } + XPCandyTreeMoreRuleCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPCandyTreeMoreRuleCell class])]; + cell.title = self.datasource[indexPath.row]; + cell.delegate = self; + NSString *showSwitch = [[NSUserDefaults standardUserDefaults] objectForKey:kCandyTreeHideMessage]; + cell.isShow = !showSwitch.length; + cell.isSwitchEnable = self.showMessageSwitch; + cell.sendMessageSwitchLevel = self.sendMessageSwitchLevel; + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + [TTPopup dismiss]; + switch (indexPath.row) { + + case 0: + { + XPRoomHalfWebView * webView = [[XPRoomHalfWebView alloc] init]; + webView.url = URLWithType(kCandyTreeRecordURL); + [TTPopup popupView:webView style:TTPopupStyleActionSheet]; + } + break; + case 1: + { + XPRoomHalfWebView * webView = [[XPRoomHalfWebView alloc] init]; + webView.url = URLWithType(kCandyTreeRuleURL); + [TTPopup popupView:webView style:TTPopupStyleActionSheet]; + } + break; + + default: + break; + } +} + +#pragma mark - XPCandyTreeMoreRuleCellDelegate +- (void)xPCandyTreeMoreRuleCell:(XPCandyTreeMoreRuleCell *)cell switchChange:(UISwitch *)change { + if (change.on) { + [[NSUserDefaults standardUserDefaults] setObject:nil forKey:kCandyTreeHideMessage]; + } else { + [[NSUserDefaults standardUserDefaults] setObject:@"1" forKey:kCandyTreeHideMessage]; + } + [[NSUserDefaults standardUserDefaults] synchronize]; +} + +#pragma mark - Getters And Setters +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPCandyTreeMoreView0"); + _titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.textColor = [DJDKMIMOMColor alertTitleColor]; + } + return _titleLabel; +} +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:NSStringFromClass([UITableViewCell class])]; + [_tableView registerClass:[XPCandyTreeMoreRuleCell class] forCellReuseIdentifier:NSStringFromClass([XPCandyTreeMoreRuleCell class])]; + } + return _tableView; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray arrayWithObjects:YMLocalizedString(@"XPCandyTreeMoreView2"), YMLocalizedString(@"XPCandyTreeMoreView3"),YMLocalizedString(@"XPCandyTreeMoreView4") ,nil]; + } + return _datasource; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeRankView.h b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeRankView.h new file mode 100644 index 00000000..8a526821 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeRankView.h @@ -0,0 +1,29 @@ +// +// XPCandyTreeRankView.h +// xplan-ios +// +// Created by 冯硕 on 2021/12/10. +// + +#import +#import +NS_ASSUME_NONNULL_BEGIN + + +typedef void(^CandyTreeRankViewDidClickHandle)(NSInteger uid); + + +typedef NS_ENUM(NSInteger, CandyTreeRecordType) { + ///今天榜单 + CandyTreeRecordType_Today = 1, + ///昨日榜单 + CandyTreeRecordType_Yesterday = 2, +}; + +@interface XPCandyTreeRankView : UIView +///榜单类型 +@property (nonatomic,assign) CandyTreeRecordType type; +@property (nonatomic,copy) CandyTreeRankViewDidClickHandle didClickHandle; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeRankView.m b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeRankView.m new file mode 100644 index 00000000..64b1c156 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeRankView.m @@ -0,0 +1,196 @@ +// +// XPCandyTreeRankView.m +// xplan-ios +// +// Created by 冯硕 on 2021/12/10. +// + +#import "XPCandyTreeRankView.h" +///Third +#import +#import +///Tool + + +#import "Api+CandyTree.h" +///Model +#import "CandyTreeRecordModel.h" +///View +#import "XPCandyTreeRankTableViewCell.h" +#import "XPCandyTreeEmptyableViewCell.h" +#import "XPMineUserInfoViewController.h" +#import "XCCurrentVCStackManager.h" +@interface XPCandyTreeRankView () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据列表 +@property (nonatomic,strong) NSMutableArray *datasource; +///当前 的页数 +@property (nonatomic,assign) int page; +///还有更多的数据 +@property (nonatomic,assign) BOOL hasNoMoreData; +@end + +@implementation XPCandyTreeRankView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initHeaderAndFooterRrfresh]; + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Public Method +- (void)reloadNewData { + [self.tableView.mj_header beginRefreshing]; + [self headerRefresh]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; +} + +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [UIColor colorWithWhite:1 alpha:0.7]; + header.lastUpdatedTimeLabel.textColor = [UIColor colorWithWhite:1 alpha:0.7]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [UIColor colorWithWhite:1 alpha:0.7]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; +} + +#pragma mark - 刷新的方法 +- (void)headerRefresh { + self.page = 1; + NSString * page = [NSString stringWithFormat:@"%d", self.page]; + NSString * datetype = [NSString stringWithFormat:@"%ld", self.type]; + [Api candyTreeRankListComplection:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + NSArray * array = [CandyTreeRecordModel modelsWithArray:data.data]; + [self getCandtyTreeRankListSuccess:array state:0]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } page:page pageSize:@"20" type:datetype]; +} + +- (void)footerRefresh { + if (self.hasNoMoreData) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPCandyTreeRankView0")]; + return; + } + self.page++; + NSString * page = [NSString stringWithFormat:@"%d", self.page]; + NSString * datetype = [NSString stringWithFormat:@"%ld", self.type]; + [Api candyTreeRankListComplection:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + NSArray * array = [CandyTreeRecordModel modelsWithArray:data.data]; + [self getCandtyTreeRankListSuccess:array state:1]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + [self.tableView.mj_header endRefreshing]; + [self.tableView.mj_footer endRefreshing]; + } + } page:page pageSize:@"20" type:datetype]; +} + +- (void)getCandtyTreeRankListSuccess:(NSArray *)array state:(BOOL)state { + if (state == 0) { + [self.datasource removeAllObjects]; + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } + if (array.count > 0) { + self.hasNoMoreData = NO; + [self.datasource addObjectsFromArray:array]; + } else { + self.hasNoMoreData = YES; + [self.tableView.mj_footer endRefreshingWithNoMoreData]; + } + [self.tableView reloadData]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return self.datasource.count > 0 ? kGetScaleWidth(75) : kGetScaleWidth(300); +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count <= 0) { + XPCandyTreeEmptyableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPCandyTreeEmptyableViewCell class])]; + if (cell == nil) { + cell = [[XPCandyTreeEmptyableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPCandyTreeEmptyableViewCell class])]; + } + return cell; + } + XPCandyTreeRankTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPCandyTreeRankTableViewCell class])]; + if (cell == nil) { + cell = [[XPCandyTreeRankTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPCandyTreeRankTableViewCell class])]; + } + cell.roomRankModel = [self.datasource safeObjectAtIndex1:indexPath.row]; + return cell; +} +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{if (self.datasource.count <= 0) {return;} + CandyTreeRecordModel *model = self.datasource[indexPath.row]; + if(self.didClickHandle){ + self.didClickHandle(model.uid); + } +} +#pragma mark - JXCategoryListContentViewDelegate +- (UIView *)listView { + return self; +} + +#pragma mark - Getters And Setters +- (void)setType:(CandyTreeRecordType)type { + _type = type; + [self.tableView.mj_header beginRefreshing]; + [self headerRefresh]; +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPCandyTreeRankTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPCandyTreeRankTableViewCell class])]; + [_tableView registerClass:[XPCandyTreeEmptyableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPCandyTreeEmptyableViewCell class])]; + } + return _tableView; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource= [NSMutableArray array]; + } + return _datasource; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeViewController.h b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeViewController.h new file mode 100644 index 00000000..a637b98d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeViewController.h @@ -0,0 +1,16 @@ +// +// XPCandyTreeViewController.h +// xplan-ios +// +// Created by 冯硕 on 2021/12/9. +// + +#import "MvpViewController.h" +#import "RoomHostDelegate.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPCandyTreeViewController : MvpViewController +- (instancetype)initWithDelegate:(id)delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeViewController.m b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeViewController.m new file mode 100644 index 00000000..d08a656d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/View/XPCandyTreeViewController.m @@ -0,0 +1,686 @@ +// +// XPCandyTreeViewController.m +// xplan-ios +// +// Created by 冯硕 on 2021/12/9. +// + +#import "XPCandyTreeViewController.h" +///Third +#import +#import +#import +///Tool + +#import "TTPopup.h" + +///Model +#import "RoomInfoModel.h" +#import "AttachmentModel.h" +#import "CandyTreeInfoModel.h" +#import "CandyTreeResultModel.h" +#import "UserInfoModel.h" +///View +#import "XPRoomHalfWebView.h" +#import "XPCandyTreeMoreView.h" +#import "XPCandyRankContainerView.h" +#import "XPCandyTreeGiftView.h" +#import "XPMineUserInfoViewController.h" +#import "XCCurrentVCStackManager.h" +#import "XPCandyTreeInsufficientBalanceView.h" +#import "XPWebViewController.h" +#import "XPIAPRechargeViewController.h" +///P +#import "XPCandyTreePresenter.h" +#import "XPCandyTreeProtocol.h" + +#define KitemHeight (20 + 5) + +UIKIT_EXTERN NSString * const kRoomReceivedCandyNotificationKey; +@interface XPCandyTreeViewController () +///上面点击的view +@property (nonatomic,strong) UIView *topTapView; +///下面点击的view +@property (nonatomic,strong) UIView *bottomTapView; +///大的容器 +@property (nonatomic,strong) UIView * contentView; + +///中间内容的容器 +@property (nonatomic,strong) UIImageView * backView; +///排行榜的 +@property (nonatomic,strong) UIStackView *rankStackView; +///排行榜 +@property (nonatomic,strong) UIImageView * rankImageView; + +///获得糖果 +@property (nonatomic,strong) UIImageView *moreImageView; + + +///动画管理类 +@property (strong, nonatomic) SVGAParser *parser; +///糖果树魔天輪 +@property (nonatomic,strong) UIImageView *candyTreeView; +///送礼物的特效 +@property (nonatomic,strong) SVGAImageView *candyTreeLightView; +///糖果树开启特效 +@property (nonatomic,strong) SVGAImageView *candyTreeOpenView; +///光 +@property (nonatomic,strong) SVGAImageView *candyTreeTransView; + +///选择个数的背景 +@property (nonatomic,strong) UIImageView *pickBackImageView; + +///加 +@property (nonatomic,strong) UIButton *addButton; +///输入的个数 +@property (nonatomic,strong) UITextField *textFiled; +///减 +@property (nonatomic,strong) UIButton *subtractButton; +///摘糖果 +@property (nonatomic,strong) UIButton *pickButton; +///摘糖果 +@property (nonatomic,strong) UILabel *pickLabel; +///动画的容器 +@property (nonatomic,strong) UIView * animationView; +///摘糖果的个数 +@property (nonatomic,assign) NSInteger numberCandy; +///糖果的信息 +@property (nonatomic,strong) CandyTreeInfoModel *candyInfo; +///host代理 +@property (nonatomic,weak) idhostDelegate; +///是否正在采摘 +@property (nonatomic,assign) BOOL isPicking; +@end + +@implementation XPCandyTreeViewController + +- (void)dealloc { + [[NIMSDK sharedSDK].systemNotificationManager removeDelegate:self]; + [[NSNotificationCenter defaultCenter]postNotificationName:kRoomReceivedCandyNotificationKey object:nil userInfo:@{@"isHidden":@(YES)}]; +} + +- (instancetype)initWithDelegate:(id)delegate { + if (self = [super init]) { + self.hostDelegate = delegate; + [[NIMSDK sharedSDK].systemNotificationManager addDelegate:self]; + } + return self; +} + +- (XPCandyTreePresenter *)createPresenter { + return [[XPCandyTreePresenter alloc] init]; +} + +- (BOOL)isHiddenNavBar { + return YES; +} +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + self.numberCandy = 1; + [self.presenter getCandyTreeInfo]; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + [self.view endEditing:YES]; +} +#pragma mark -XPCandyRankContainerViewDelegate +- (void)didClickHeadHandle:(NSInteger)uid{ + [TTPopup dismiss]; + XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init]; + userInfoVC.uid = uid; + [self.hostDelegate.getCurrentNav pushViewController:userInfoVC animated:YES]; + + + +} +#pragma mark - XPCandyTreeProtocol +- (void)getCandyTreeInfoSuccess:(CandyTreeInfoModel *)info { + [self hideHUD]; + self.candyInfo = info; + +} + +- (void)pickCandyFail { + [self hideHUD]; + self.isPicking = NO; +} +-(void)pickCandyPay{ + [self hideHUD]; + self.isPicking = NO; + XPCandyTreeInsufficientBalanceView *balanceView = [[XPCandyTreeInsufficientBalanceView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; + balanceView.delegate = self; + [self.view addSubview:balanceView]; +} +- (void)pickCandySuccess:(NSArray *)result { + [self hideHUD]; + self.isPicking = NO; + [result enumerateObjectsUsingBlock:^(CandyTreeGiftInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.level > 2) { + ///取消所有的延迟加载的方法 + [NSObject cancelPreviousPerformRequestsWithTarget:self]; + + XPCandyTreeGiftView * newAnimaView = [[XPCandyTreeGiftView alloc] init]; + newAnimaView.giftInfo = obj; + NSString * giftTitle = [NSString stringWithFormat:@"%@ x %d", obj.rewardName, obj.num]; + CGFloat widht = [giftTitle boundingRectWithSize:CGSizeMake(200, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:10]} context:nil].size.width + 10; + newAnimaView.frame = CGRectMake(0, 4 * (KitemHeight), widht + 12, KitemHeight); + [self.animationView addSubview:newAnimaView]; + + if (self.animationView.subviews.count > 5) { + [self.animationView.subviews.firstObject removeFromSuperview]; + } + for (int i=0; i < self.animationView.subviews.count; i++) { + XPCandyTreeGiftView * view = [self.animationView.subviews safeObjectAtIndex1:i]; + NSInteger offsetY= (self.animationView.subviews.count - i) * KitemHeight; + [UIView animateWithDuration:0.1 animations:^{ + CGRect rect = view.frame; + rect.origin.y = KitemHeight * 5 - offsetY; + view.frame = rect; + } completion:^(BOOL finished) { + if (i == (self.animationView.subviews.count -1)) { + [self.animationView.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + [self performSelector:@selector(giftViewRemoveFromSuperView:) withObject:obj afterDelay:3]; + }]; + } + }]; + } + + + } + }]; + @kWeakify(self); + [self.parser parseWithNamed:@"candyTree_light" inBundle:[NSBundle mainBundle] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { + @kStrongify(self); + self.candyTreeLightView.loops = 1; + self.candyTreeLightView.clearsAfterStop = YES; + self.candyTreeLightView.videoItem = videoItem; + [self.candyTreeLightView startAnimation]; + } failureBlock:^(NSError * _Nonnull error) { + + }]; + + [self.parser parseWithNamed:@"candyTree_open" inBundle:[NSBundle mainBundle] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { + @kStrongify(self); + self.candyTreeOpenView.loops = 1; + self.candyTreeOpenView.clearsAfterStop = YES; + self.candyTreeOpenView.videoItem = videoItem; + [self.candyTreeOpenView startAnimation]; + } failureBlock:^(NSError * _Nonnull error) { + + }]; + + [self.parser parseWithNamed:@"candyTree_transform" inBundle:[NSBundle mainBundle] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { + @kStrongify(self); + self.candyTreeTransView.loops = 1; + self.candyTreeTransView.clearsAfterStop = YES; + self.candyTreeTransView.videoItem = videoItem; + [self.candyTreeTransView startAnimation]; + } failureBlock:^(NSError * _Nonnull error) { + + }]; +} + +#pragma mark - NIMSystemNotificationManagerDelegate +- (void)onReceiveCustomSystemNotification:(NIMCustomSystemNotification *)notification { + if (notification.receiverType == NIMSessionTypeP2P) { + AttachmentModel *attachment = [AttachmentModel modelWithJSON:notification.content]; + if (attachment.first == CustomMessageType_Account && attachment.second == Custom_Message_Sub_Account_Changed){ + if (attachment.second == Custom_Message_Sub_Account_Changed) { + [self.presenter getCandyTreeInfo]; + } + } + } +} +#pragma mark - Private Method +- (void)initSubViews { + [[NSNotificationCenter defaultCenter]postNotificationName:kRoomReceivedCandyNotificationKey object:nil userInfo:@{@"isHidden":@(NO)}]; + self.view.backgroundColor = [UIColor clearColor]; + [self.view addSubview:self.topTapView]; + [self.view addSubview:self.contentView]; + [self.view addSubview:self.bottomTapView]; + + [self.contentView addSubview:self.backView]; + + + [self.backView addSubview:self.rankStackView]; + [self.backView addSubview:self.moreImageView]; + [self.backView addSubview:self.candyTreeView]; + [self.backView addSubview:self.candyTreeLightView]; + [self.backView addSubview:self.candyTreeOpenView]; + + [self.backView addSubview:self.pickBackImageView]; + + [self.backView addSubview:self.pickButton]; + [self.pickButton addSubview:self.pickLabel]; + [self.backView addSubview:self.candyTreeTransView]; + [self.backView addSubview:self.animationView]; + + [self.backView addSubview:self.subtractButton]; + [self.backView addSubview:self.textFiled]; + [self.backView addSubview:self.addButton]; + + + + [self.rankStackView addArrangedSubview:self.rankImageView]; + + RoomInfoModel * roomInfo = self.hostDelegate.getRoomInfo; + self.pickLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPCandyTreeViewController0"),roomInfo.findLoveDrawSwitchVo.price]; +// @kWeakify(self); +// [self.parser parseWithNamed:@"candyTree" inBundle:[NSBundle mainBundle] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { +// @kStrongify(self); +// self.candyTreeView.loops = INT_MAX; +// self.candyTreeView.clearsAfterStop = NO; +// self.candyTreeView.videoItem = videoItem; +// [self.candyTreeView startAnimation]; +// } failureBlock:^(NSError * _Nonnull error) { +// +// }]; +} + +- (void)initSubViewConstraints { + [self.topTapView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.leading.trailing.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.contentView.mas_top); + }]; + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.mas_equalTo(self.view).inset(45); + make.centerY.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.backView.mas_bottom); + }]; + + [self.bottomTapView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.mas_equalTo(self.view); + make.top.mas_equalTo(self.contentView.mas_bottom); + make.bottom.mas_equalTo(self.view); + }]; + + + + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(285); + make.height.mas_equalTo(434); + make.centerX.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.contentView).offset(0); + }]; + + [self.rankStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.backView).offset(45); + make.leading.mas_equalTo(self.backView).offset(9); + make.height.mas_equalTo(37); + make.width.mas_equalTo(36); + }]; + + + + + [self.moreImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(30, 30)); + make.top.mas_equalTo(44); + make.trailing.mas_equalTo(self.backView).offset(-12); + }]; + + + + [self.candyTreeView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.backView).offset(63); + make.centerX.mas_equalTo(self.backView); + make.size.mas_equalTo(CGSizeMake(285, 363)); + }]; + + [self.candyTreeLightView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.candyTreeView); + }]; + + [self.candyTreeOpenView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.candyTreeView); + }]; + + + + [self.pickBackImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(150, 29)); + make.centerX.mas_equalTo(self.backView); + make.top.mas_equalTo(340); + }]; + + + [self.subtractButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.equalTo(self.pickBackImageView.mas_leading).mas_offset(5);; + make.top.equalTo(self.pickBackImageView.mas_top).mas_offset(2.25); + make.width.mas_equalTo(40); + make.height.mas_equalTo(21); + }]; + + [self.addButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.top.height.equalTo(self.subtractButton); + make.trailing.equalTo(self.pickBackImageView.mas_trailing).mas_offset(-5);; + }]; + [self.textFiled mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.height.equalTo(self.subtractButton); + make.width.mas_equalTo(62); + make.leading.equalTo(self.subtractButton.mas_trailing); + + }]; + [self.pickButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(121, 45)); + make.centerX.mas_equalTo(self.backView); + make.top.mas_equalTo(367); + }]; + [self.pickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(20); + make.centerX.equalTo(self.pickButton); + make.left.right.equalTo(self.pickButton); + }]; + CGFloat kscale = (CGFloat)350 / (CGFloat)755; + [self.candyTreeTransView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.candyTreeView); + make.bottom.trailing.mas_equalTo(self.view); + make.width.mas_equalTo(self.candyTreeTransView.mas_height).multipliedBy(kscale); + }]; + + [self.animationView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(self.backView).offset(7); + make.bottom.mas_equalTo(self.backView).offset(-106); + make.width.mas_equalTo(150); + make.height.mas_equalTo(KitemHeight * 5); + }]; +} + +- (void)giftViewRemoveFromSuperView:(UIView *)view { + [view removeFromSuperview]; +} + +#pragma mark - Event Response +- (void)moreTapRecognizer:(UITapGestureRecognizer *)tap { + UserInfoModel * userInfo = self.hostDelegate.getUserInfo; + RoomInfoModel * roomInfo = self.hostDelegate.getRoomInfo; + XPCandyTreeMoreView * moreView = [[XPCandyTreeMoreView alloc] init]; + moreView.sendMessageSwitchLevel = roomInfo.findLoveDrawSwitchVo.sendMsgLevel; + moreView.showMessageSwitch = userInfo.userLevelVo.experLevelSeq >= roomInfo.findLoveDrawSwitchVo.sendMsgLevel; + [TTPopup popupView:moreView style:TTPopupStyleActionSheet]; +} + +- (void)rankTapRecognizer:(UITapGestureRecognizer *)tap { + XPCandyRankContainerView * rankView = [[XPCandyRankContainerView alloc] init]; + rankView.delegate = self; + [TTPopup popupView:rankView style:TTPopupStyleActionSheet]; +} + +- (void)addButtonAction:(UIButton *)sender { + self.numberCandy += 1; + self.textFiled.text = [NSString stringWithFormat:@"%ld", self.numberCandy]; + +} + +- (void)subtractButtonAction:(UIButton *)sender { + if (self.numberCandy <= 1) return; + self.numberCandy -= 1; + self.textFiled.text = [NSString stringWithFormat:@"%ld", self.numberCandy]; + +} +#pragma mark -XPCandyTreeInsufficientBalanceViewDelegate +- (void)payBalanceAction{ + XPIAPRechargeViewController * webVC =[[XPIAPRechargeViewController alloc] init]; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:webVC animated:YES]; +} +- (void)pickButtonAction:(UIButton *)sender { + if (self.numberCandy <= 0) { + [self showErrorToast:YMLocalizedString(@"XPCandyTreeViewController2")]; + return; + } + if (self.isPicking) return; + self.isPicking = YES; + ///摘 + RoomInfoModel * roomInfo = self.hostDelegate.getRoomInfo; + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; + NSString * candyNumber = [NSString stringWithFormat:@"%ld", self.numberCandy]; + BOOL showMessageSwitch = self.hostDelegate.getUserInfo.userLevelVo.experLevelSeq >= roomInfo.findLoveDrawSwitchVo.sendMsgLevel; + [self.presenter pickCandy:candyNumber roomUid:roomUid isSendMessage:showMessageSwitch]; + +} + +- (void)dismissTapRecognizer:(UITapGestureRecognizer *)tap { + [[NSNotificationCenter defaultCenter]postNotificationName:kRoomReceivedCandyNotificationKey object:nil userInfo:@{@"isHidden":@(YES)}]; + [self.view removeFromSuperview]; +} +#pragma mark -UITextFieldDelegate +- (void)textFieldDidChanged:(UITextField *)textField { + if (textField.text.integerValue > 200) { + textField.text = @"200"; + [self showErrorToast:YMLocalizedString(@"XPCandyTreeViewController5")]; + } + self.numberCandy = textField.text.intValue; + +} +- (void)textFieldDidEndEditing:(UITextField *)textField{ + if(textField.text.length <= 0){ + textField.text = @"1"; + } + +} +- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { + return [self validateNumber:string]; +} + +- (BOOL)validateNumber:(NSString*)number { + BOOL res = YES; + NSCharacterSet* tmpSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"]; + int i = 0; + while (i < number.length) { + NSString * string = [number substringWithRange:NSMakeRange(i, 1)]; + NSRange range = [string rangeOfCharacterFromSet:tmpSet]; + if (range.length == 0) { + res = NO; + break; + } + i++; + } + return res; +} +#pragma mark - Getters And Setters +- (void)setIsPicking:(BOOL)isPicking { + _isPicking = isPicking; + self.pickButton.enabled = !_isPicking; +} + +- (UIView *)topTapView { + if (!_topTapView) { + _topTapView = [[UIView alloc] init]; + _topTapView.backgroundColor = [UIColor clearColor]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissTapRecognizer:)]; + [_topTapView addGestureRecognizer:tap]; + } + return _topTapView; +} +- (UIView *)bottomTapView { + if (!_bottomTapView) { + _bottomTapView = [[UIView alloc] init]; + _bottomTapView.backgroundColor = [UIColor clearColor]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissTapRecognizer:)]; + [_bottomTapView addGestureRecognizer:tap]; + } + return _bottomTapView; +} + +- (UIView *)contentView { + if (!_contentView) { + _contentView = [[UIView alloc] init]; + _contentView.backgroundColor = [UIColor clearColor]; + } + return _contentView; +} + + + +- (UIImageView *)backView { + if (!_backView) { + _backView = [[UIImageView alloc] init]; + _backView.userInteractionEnabled = YES; + _backView.image = [UIImage imageNamed:@"room_candy_tree_back"]; + + } + return _backView; +} + +- (UIStackView *)rankStackView { + if (!_rankStackView) { + _rankStackView = [[UIStackView alloc] init]; + _rankStackView.axis = UILayoutConstraintAxisHorizontal; + _rankStackView.distribution = UIStackViewDistributionFill; + _rankStackView.alignment = UIStackViewAlignmentCenter; + _rankStackView.spacing = 0; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(rankTapRecognizer:)]; + [_rankStackView addGestureRecognizer:tap]; + } + return _rankStackView; +} + +- (UIImageView *)rankImageView { + if (!_rankImageView) { + _rankImageView = [[UIImageView alloc] init]; + _rankImageView.userInteractionEnabled = YES; + _rankImageView.image = [UIImage imageNamed:@"room_candy_tree_rank"]; + } + return _rankImageView; +} + + + +- (UIImageView *)moreImageView { + if (!_moreImageView) { + _moreImageView = [[UIImageView alloc] init]; + _moreImageView.userInteractionEnabled = YES; + _moreImageView.image = [UIImage imageNamed:@"room_candy_tree_more"]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(moreTapRecognizer:)]; + [_moreImageView addGestureRecognizer:tap]; + } + return _moreImageView; +} + + + + + + +- (UIImageView *)candyTreeView { + if (!_candyTreeView) { + _candyTreeView = [[UIImageView alloc]init]; + _candyTreeView.backgroundColor = [UIColor clearColor]; + _candyTreeView.userInteractionEnabled = NO; + _candyTreeView.image = [UIImage imageNamed:@"room_candy_tree_bg"]; + } + return _candyTreeView; +} + +- (SVGAImageView *)candyTreeLightView { + if (!_candyTreeLightView) { + _candyTreeLightView = [[SVGAImageView alloc]init]; + _candyTreeLightView.backgroundColor = [UIColor clearColor]; + _candyTreeLightView.userInteractionEnabled = NO; + } + return _candyTreeLightView; +} + +- (SVGAImageView *)candyTreeOpenView { + if (!_candyTreeOpenView) { + _candyTreeOpenView = [[SVGAImageView alloc]init]; + _candyTreeOpenView.backgroundColor = [UIColor clearColor]; + _candyTreeOpenView.userInteractionEnabled = NO; + } + return _candyTreeOpenView; +} + +- (SVGAImageView *)candyTreeTransView { + if (!_candyTreeTransView) { + _candyTreeTransView = [[SVGAImageView alloc]init]; + _candyTreeTransView.backgroundColor = [UIColor clearColor]; + _candyTreeTransView.userInteractionEnabled = NO; + } + return _candyTreeTransView; +} + +- (SVGAParser *)parser { + if (!_parser) { + _parser = [[SVGAParser alloc]init]; + } + return _parser; +} + + +- (UIImageView *)pickBackImageView { + if (!_pickBackImageView) { + _pickBackImageView = [[UIImageView alloc] init]; + _pickBackImageView.userInteractionEnabled = YES; + _pickBackImageView.image = [UIImage imageNamed:@"room_candy_tree_pick_bg"]; + } + return _pickBackImageView; +} + + + +- (UIButton *)addButton { + if (!_addButton) { + _addButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_addButton setImage:[UIImage imageNamed:@"room_candy_tree_add"] forState:UIControlStateNormal]; + [_addButton setImage:[UIImage imageNamed:@"room_candy_tree_add"] forState:UIControlStateSelected]; + [_addButton addTarget:self action:@selector(addButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_addButton setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + } + return _addButton; +} + +- (UIButton *)subtractButton { + if (!_subtractButton) { + _subtractButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_subtractButton setImage:[UIImage imageNamed:@"room_candy_tree_subtract"] forState:UIControlStateNormal]; + [_subtractButton setImage:[UIImage imageNamed:@"room_candy_tree_subtract"] forState:UIControlStateSelected]; + [_subtractButton addTarget:self action:@selector(subtractButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_subtractButton setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + } + return _subtractButton; +} + +- (UITextField *)textFiled { + if (!_textFiled) { + _textFiled = [[UITextField alloc] init]; + _textFiled.tintColor = [UIColor whiteColor]; + _textFiled.textColor = [UIColor whiteColor]; + _textFiled.backgroundColor = [UIColor clearColor]; + _textFiled.textAlignment = NSTextAlignmentCenter; + _textFiled.font = [UIFont fontWithName:@"PingFangSC-Medium" size:12]; + _textFiled.text = @"1"; + _textFiled.delegate = self; + [_textFiled addTarget:self action:@selector(textFieldDidChanged:) forControlEvents:UIControlEventEditingChanged]; + _textFiled.keyboardType = UIKeyboardTypeNumberPad; + } + return _textFiled; +} + +- (UIButton *)pickButton { + if (!_pickButton) { + _pickButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_pickButton setImage:[UIImage imageNamed:@"room_candy_tree_pick_normal"] forState:UIControlStateNormal]; + [_pickButton setImage:[UIImage imageNamed:@"room_candy_tree_pick_normal"] forState:UIControlStateDisabled]; + [_pickButton addTarget:self action:@selector(pickButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _pickButton; +} +- (UILabel *)pickLabel{ + if(!_pickLabel){ + _pickLabel = [UILabel labelInitWithText:@"" font:[UIFont systemFontOfSize:10 weight:UIFontWeightMedium] textColor:UIColorFromRGB(0xDF7604)]; + _pickLabel.textAlignment = NSTextAlignmentCenter; + } + return _pickLabel; +} +- (UIView *)animationView { + if (!_animationView) { + _animationView = [[UIView alloc] init]; + _animationView.backgroundColor = [UIColor clearColor]; + } + return _animationView; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/XPRoomHalfWebView.h b/YuMi/Modules/YMRoom/View/CandyTree/View/XPRoomHalfWebView.h new file mode 100644 index 00000000..f755634d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/View/XPRoomHalfWebView.h @@ -0,0 +1,25 @@ +// +// XPRoomHalfWebView.h +// xplan-ios +// +// Created by 冯硕 on 2021/12/9. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@interface XPRoomHalfWebView : UIView +/// +@property (nonatomic,assign) BOOL isPay; +/// +@property (nonatomic,assign) BOOL isPush; +///地址 +@property (nonatomic,copy) NSString *url; +///房间uid +@property (nonatomic,copy) NSString *roomUid; + +///是否是航海 +@property (nonatomic,assign) BOOL isSailing; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/XPRoomHalfWebView.m b/YuMi/Modules/YMRoom/View/CandyTree/View/XPRoomHalfWebView.m new file mode 100644 index 00000000..66632cda --- /dev/null +++ b/YuMi/Modules/YMRoom/View/CandyTree/View/XPRoomHalfWebView.m @@ -0,0 +1,210 @@ +// +// XPRoomHalfWebView.m +// xplan-ios +// +// Created by 冯硕 on 2021/12/9. +// + +#import "XPRoomHalfWebView.h" +///Third +#import +#import "XPWebViewController.h" +#import "XPSkillCardPlayerManager.h" +///Tool + + +#import "TTPopup.h" + + +@interface XPRoomHalfWebView () +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///点击消失的view +@property (nonatomic,strong) UIView * topView; +/// 导航栏 +@property (nonatomic,strong) UIView * toolView; +///返回按钮 +@property (nonatomic,strong) UIButton *backButton; +///关闭按钮 +@property (nonatomic,strong) UIButton *closeButton; +///标题 +@property (nonatomic,strong) UILabel *titleLabel; +///加入h5 +@property (nonatomic, strong) XPWebViewController *webVC; +@end + +@implementation XPRoomHalfWebView +- (void)dealloc { + +} + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + + [self addSubview:self.topView]; + [self addSubview:self.stackView]; + + [self.stackView addArrangedSubview:self.toolView]; + [self.stackView addArrangedSubview:self.webVC.view]; + + [self.toolView addSubview:self.backButton]; + [self.toolView addSubview:self.titleLabel]; + @kWeakify(self); + self.webVC.InitShowNavBlock = ^(BOOL show) { + @kStrongify(self); + self.toolView.hidden = YES; + }; + + self.webVC.CloseWebViewBlock = ^(BOOL result) { + [TTPopup dismiss]; + }; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth); + make.height.mas_equalTo(KScreenHeight); + }]; + + [self.topView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.top.mas_equalTo(self); + make.bottom.mas_equalTo(self.toolView.mas_top); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.bottom.mas_equalTo(self); + make.height.mas_equalTo(kHalfScreenHeight); + }]; + + + [self.toolView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(44); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.toolView); + make.centerY.mas_equalTo(self.toolView); + }]; + + [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(6); + make.width.mas_equalTo(40); + make.top.bottom.mas_equalTo(self.toolView); + }]; +} +#pragma mark - Event Response +- (void)didClickCloseButton:(UIButton *)sender { + [TTPopup dismiss]; +} + +- (void)topViewRecognizer { + [TTPopup dismiss]; +} +-(void)setIsPay:(BOOL)isPay{ + _isPay = isPay; + if(_isPay == YES){ + _webVC.isPush = YES; + } + +} +-(void)setIsPush:(BOOL)isPush{ + _isPush = isPush; + _webVC.isPush = _isPush; +} +#pragma mark - Getters And Setters +- (void)setUrl:(NSString *)url { + _url = url; + if (_url.length > 0) { + self.webVC.roomUid = self.roomUid; + self.webVC.url = _url; + } +} + +- (void)setIsSailing:(BOOL)isSailing { + _isSailing = isSailing; + if (_isSailing) { + self.webVC.webview.scrollView.backgroundColor = [UIColor clearColor]; + self.webVC.webview.opaque = NO; + } +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 0; + _stackView.layer.cornerRadius = 10; + _stackView.layer.masksToBounds = YES; + } + return _stackView; +} + +- (UIView *)topView { + if (!_topView) { + _topView = [[UIView alloc] init]; + _topView.backgroundColor = [UIColor clearColor]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(topViewRecognizer)]; + [_topView addGestureRecognizer:tap]; + } + return _topView; +} + +- (UIView *)toolView { + if (!_toolView) { + _toolView = [[UIView alloc] init]; + _toolView.backgroundColor = [UIColor whiteColor]; + CAShapeLayer * layer = [CAShapeLayer layer]; + UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, 44) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)]; + layer.path = path.CGPath; + _toolView.layer.mask = layer; + } + return _toolView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.textColor = [UIColor blackColor]; + _titleLabel.font = [UIFont systemFontOfSize:17]; + } + return _titleLabel; +} + +- (UIButton *)backButton { + if (!_backButton) { + _backButton = [[UIButton alloc] init]; + [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateNormal]; + [_backButton addTarget:self action:@selector(didClickCloseButton:) forControlEvents:UIControlEventTouchUpInside]; + } + return _backButton; +} + +- (XPWebViewController *)webVC { + if (_webVC == nil) { + _webVC = [[XPWebViewController alloc] init]; + _webVC.isProperty = YES; + + _webVC.view.backgroundColor = [UIColor clearColor]; + __weak typeof(self) weakSelf = self; + _webVC.urlLoadCompleted = ^(BOOL result, NSError *error) { + weakSelf.titleLabel.text = weakSelf.webVC.navigationItem.title; + }; + } + return _webVC; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIChamberHalfTissueRegard.h b/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIChamberHalfTissueRegard.h deleted file mode 100644 index 55db11ee..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIChamberHalfTissueRegard.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YUMIChamberHalfTissueRegard.h -// YuMi -// -// Created by YuMi on 2021/12/9. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@interface YUMIChamberHalfTissueRegard : UIView -@property (nonatomic,copy) NSString *url; -@property (nonatomic,copy) NSString *roomUid; - -@property (nonatomic,assign) BOOL isMarching; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIChamberHalfTissueRegard.m b/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIChamberHalfTissueRegard.m deleted file mode 100644 index 3353dcf5..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIChamberHalfTissueRegard.m +++ /dev/null @@ -1,187 +0,0 @@ -// -// YUMIChamberHalfTissueRegard.m -// YuMi -// -// Created by YuMi on 2021/12/9. -// - -#import "YUMIChamberHalfTissueRegard.h" -#import -#import "YUMITissueRegardGovernancer.h" -#import "YUMICommunicationSolitaireDisporterExecutive.h" -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "MKJPopup.h" -@interface YUMIChamberHalfTissueRegard () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UIView * apexRegard; -@property (nonatomic,strong) UIView * utensilRegard; -@property (nonatomic,strong) UIButton *backButton; -@property (nonatomic,strong) UIButton *concludeBtuton; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic, strong) YUMITissueRegardGovernancer *webVewC; -@end - -@implementation YUMIChamberHalfTissueRegard -- (void)dealloc { - -} - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - - [self addSubview:self.apexRegard]; - [self addSubview:self.stackView]; - - [self.stackView addArrangedSubview:self.utensilRegard]; - [self.stackView addArrangedSubview:self.webVewC.view]; - - [self.utensilRegard addSubview:self.backButton]; - [self.utensilRegard addSubview:self.titleLabel]; - @kWeakify(self); - self.webVewC.InitShowNavBlock = ^(BOOL show) { - @kStrongify(self); - self.utensilRegard.hidden = YES; - }; - - self.webVewC.CloseWebViewBlock = ^(BOOL result) { - [MKJPopup dismiss]; - }; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth); - make.height.mas_equalTo(KScreenHeight); - }]; - - [self.apexRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.bottom.mas_equalTo(self.utensilRegard.mas_top); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self); - make.height.mas_equalTo(kHalfScreenHeight); - }]; - - - [self.utensilRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(44); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.utensilRegard); - make.centerY.mas_equalTo(self.utensilRegard); - }]; - - [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(6); - make.width.mas_equalTo(40); - make.top.bottom.mas_equalTo(self.utensilRegard); - }]; -} -#pragma mark - Event Response -- (void)didTicktackConcludeBtuton:(UIButton *)sender { - [MKJPopup dismiss]; -} - -- (void)apexRegardRecognition { - [MKJPopup dismiss]; -} - -#pragma mark - Getters And Setters -- (void)setUrl:(NSString *)url { - _url = url; - if (_url.length > 0) { - self.webVewC.roomUid = self.roomUid; - self.webVewC.url = _url; - } -} - -- (void)setIsMarching:(BOOL)isMarching { - _isMarching = isMarching; - if (_isMarching) { - self.webVewC.webview.scrollView.backgroundColor = [UIColor clearColor]; - self.webVewC.webview.opaque = NO; - } -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 0; - _stackView.layer.cornerRadius = 10; - _stackView.layer.masksToBounds = YES; - } - return _stackView; -} - -- (UIView *)apexRegard { - if (!_apexRegard) { - _apexRegard = [[UIView alloc] init]; - _apexRegard.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(apexRegardRecognition)]; - [_apexRegard addGestureRecognizer:tap]; - } - return _apexRegard; -} - -- (UIView *)utensilRegard { - if (!_utensilRegard) { - _utensilRegard = [[UIView alloc] init]; - _utensilRegard.backgroundColor = [UIColor whiteColor]; - CAShapeLayer * layer = [CAShapeLayer layer]; - UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, 44) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)]; - layer.path = path.CGPath; - _utensilRegard.layer.mask = layer; - } - return _utensilRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.textColor = [UIColor blackColor]; - _titleLabel.font = [UIFont systemFontOfSize:17]; - } - return _titleLabel; -} - -- (UIButton *)backButton { - if (!_backButton) { - _backButton = [[UIButton alloc] init]; - [_backButton setImage:[UIImage imageNamed:@"yumi_same_title_back"] forState:UIControlStateNormal]; - [_backButton addTarget:self action:@selector(didTicktackConcludeBtuton:) forControlEvents:UIControlEventTouchUpInside]; - } - return _backButton; -} - -- (YUMITissueRegardGovernancer *)webVewC { - if (_webVewC == nil) { - _webVewC = [[YUMITissueRegardGovernancer alloc] init]; - _webVewC.view.backgroundColor = [UIColor clearColor]; - __weak typeof(self) weakSelf = self; - _webVewC.urlLoadCompleted = ^(BOOL result, NSError *error) { - weakSelf.titleLabel.text = weakSelf.webVewC.navigationItem.title; - }; - } - return _webVewC; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryRateAccommodatedRegard.h b/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryRateAccommodatedRegard.h deleted file mode 100644 index 8fbf475a..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryRateAccommodatedRegard.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YUMIConfectioneryRateAccommodatedRegard.h -// YuMi -// -// Created by YuMi on 2021/12/10. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - - -@protocol FBCCandyRankContainerRegardRepresendtation - --(void)didTicktackIntelligenceShank:(NSInteger)uid; - -@end - - -@interface YUMIConfectioneryRateAccommodatedRegard : UIView -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryRateAccommodatedRegard.m b/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryRateAccommodatedRegard.m deleted file mode 100644 index e7bc5360..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryRateAccommodatedRegard.m +++ /dev/null @@ -1,172 +0,0 @@ -// -// YUMIConfectioneryRateAccommodatedRegard.m -// YuMi -// -// Created by YuMi on 2021/12/10. -// - -#import "YUMIConfectioneryRateAccommodatedRegard.h" -#import -#import -#import -#import "ThemeColor+Room.h" -#import "YUMIMacroUitls.h" -#import "UIButton+EnlargeTouchArea.h" -#import "UIImage+Utils.h" -#import "YUMIConfectioneryTimberRateRegard.h" -@interface YUMIConfectioneryRateAccommodatedRegard () -@property (nonatomic, strong) NSArray *titles; -@property (nonatomic, strong) JXCategoryTitleView *titleView; -@property (nonatomic, strong) JXCategoryListContainerView *contentView; -@property (nonatomic,strong) UIButton *refreshBtuton; -@property (nonatomic,strong) YUMIConfectioneryTimberRateRegard *todayStatementRegard; -@property (nonatomic,strong) YUMIConfectioneryTimberRateRegard *yesterdayStatementRegard; -@end - -@implementation YUMIConfectioneryRateAccommodatedRegard -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - UIImage *image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0x83BBFF),UIColorFromRGB(0x927DFF)] gradientType:GradientGenreTopToBottom imgSize:CGSizeMake(KScreenWidth, kGetScaleWidth(390))]; - self.backgroundColor = [UIColor colorWithPatternImage:image]; - [self addSubview:self.titleView]; - [self addSubview:self.self.refreshBtuton]; - [self addSubview:self.contentView]; - - CAShapeLayer * layer = [CAShapeLayer layer]; - UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth,kGetScaleWidth(390)) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(kGetScaleWidth(20), kGetScaleWidth(20))]; - layer.path = path.CGPath; - self.layer.mask = layer; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth); - make.height.mas_equalTo(kGetScaleWidth(390)); - }]; - - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.height.mas_equalTo(kGetScaleWidth(45)); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self); - make.top.mas_equalTo(self.titleView.mas_bottom); - }]; - - [self.refreshBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-kGetScaleWidth(23)); - make.centerY.mas_equalTo(self.titleView.mas_centerY); - make.width.height.mas_equalTo(kGetScaleWidth(15)); - }]; -} - -#pragma mark - JXCategoryViewDelegate -- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { - return self.titles.count; -} - -- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { - if (index == 0) { - return self.todayStatementRegard; - } - return self.yesterdayStatementRegard; -} - -#pragma mark - Event Response -- (void)renovtowardseBtutonPerformance:(UIButton *)sender { - self.todayStatementRegard.type = CandyTreeRecordGenre_Today; - self.yesterdayStatementRegard.type = CandyTreeRecordGenre_Yesterday; -} - -#pragma mark - Getters And Setters -- (JXCategoryTitleView *)titleView { - if (!_titleView) { - _titleView = [[JXCategoryTitleView alloc] init]; - _titleView.delegate = self; - _titleView.titles = self.titles; - _titleView.titleColor = [UIColor colorWithWhite:1 alpha:0.5]; - _titleView.titleSelectedColor = [UIColor whiteColor]; - _titleView.titleFont = [UIFont systemFontOfSize:16 weight:UIFontWeightSemibold]; - _titleView.titleSelectedFont = [UIFont systemFontOfSize:16 weight:UIFontWeightSemibold]; - _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; - _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; - _titleView.defaultSelectedIndex = 0; - _titleView.listContainer = self.contentView; - - JXCategoryIndicatorLineView *burlywoodRegard = [[JXCategoryIndicatorLineView alloc] init]; - burlywoodRegard.indicatorColor = [UIColor whiteColor]; - burlywoodRegard.indicatorWidth = kGetScaleWidth(13); - burlywoodRegard.indicatorHeight = kGetScaleWidth(4); - burlywoodRegard.verticalMargin = kGetScaleWidth(5); - burlywoodRegard.indicatorCornerRadius = kGetScaleWidth(2); - _titleView.indicators = @[burlywoodRegard]; - } - return _titleView; -} - -- (JXCategoryListContainerView *)contentView { - if (!_contentView) { - _contentView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; - _contentView.defaultSelectedIndex = 0; - } - return _contentView; -} - -- (NSArray *)titles { - return @[YMLocalizedString(@"YUMI_Candy_Rank_Container_View_0"), YMLocalizedString(@"YUMI_Candy_Rank_Container_View_1")]; -} - -- (UIButton *)refreshBtuton { - if (!_refreshBtuton) { - _refreshBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_refreshBtuton setImage:[UIImage imageNamed:@"yumi_scope_candy_tree_record_refresh"] forState:UIControlStateNormal]; - [_refreshBtuton setImage:[UIImage imageNamed:@"yumi_scope_candy_tree_record_refresh"] forState:UIControlStateSelected]; - [_refreshBtuton addTarget:self action:@selector(renovtowardseBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_refreshBtuton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:10]; - } - return _refreshBtuton; -} - -- (YUMIConfectioneryTimberRateRegard *)todayStatementRegard { - if (!_todayStatementRegard) { - _todayStatementRegard = [[YUMIConfectioneryTimberRateRegard alloc] init]; - _todayStatementRegard.type = CandyTreeRecordGenre_Today; - @kWeakify(self) - _todayStatementRegard.didTicktackHandle = ^(NSInteger uid) { - @kStrongify(self) - if(self.delegate && [self.delegate respondsToSelector:@selector(didTicktackIntelligenceShank:)]){ - [self.delegate didTicktackIntelligenceShank:uid]; - } - }; - } - return _todayStatementRegard; -} - -- (YUMIConfectioneryTimberRateRegard *)yesterdayStatementRegard { - if (!_yesterdayStatementRegard) { - _yesterdayStatementRegard = [[YUMIConfectioneryTimberRateRegard alloc] init]; - _yesterdayStatementRegard.type = CandyTreeRecordGenre_Yesterday; - @kWeakify(self) - _yesterdayStatementRegard.didTicktackHandle = ^(NSInteger uid) { - @kStrongify(self) - if(self.delegate && [self.delegate respondsToSelector:@selector(didTicktackIntelligenceShank:)]){ - [self.delegate didTicktackIntelligenceShank:uid]; - } - }; - } - return _yesterdayStatementRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberFurthaerRegard.h b/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberFurthaerRegard.h deleted file mode 100644 index a2c78b0a..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberFurthaerRegard.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YUMIConfectioneryTimberFurthaerRegard.h -// YuMi -// -// Created by YuMi on 2021/12/10. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIConfectioneryTimberFurthaerRegard : UIView -@property (nonatomic,assign) NSInteger sendMessageSwitchLevel; -@property (nonatomic, assign) BOOL showCommunicationSwop; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberFurthaerRegard.m b/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberFurthaerRegard.m deleted file mode 100644 index d2c7bfbf..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberFurthaerRegard.m +++ /dev/null @@ -1,169 +0,0 @@ -// -// YUMIConfectioneryTimberFurthaerRegard.m -// YuMi -// -// Created by YuMi on 2021/12/10. -// - -#import "YUMIConfectioneryTimberFurthaerRegard.h" -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "YUMIHtmlUrl.h" -#import "MKJPopup.h" -#import "XNDJTBWGLoadingTool.h" -#import "NSArray+Safe.h" -#import "YUMIChamberHalfTissueRegard.h" -#import "YUMIConfectioneryTimberFurthaerPreadominantElement.h" - -NSString * const kCandyTreeHideMessage = @"kCandyTreeHideMessage"; - -@interface YUMIConfectioneryTimberFurthaerRegard () -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *datasource; -@end - -@implementation YUMIConfectioneryTimberFurthaerRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor whiteColor]; - [self addSubview:self.titleLabel]; - [self addSubview:self.tableView]; - CAShapeLayer * layer = [CAShapeLayer layer]; - UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, 256+44) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)]; - layer.path = path.CGPath; - self.layer.mask = layer; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth); - make.height.mas_equalTo(256+44); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.height.mas_equalTo(44); - }]; - - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self); - make.top.mas_equalTo(self.titleLabel.mas_bottom); - }]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 50; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (indexPath.row != self.datasource.count - 1) { - UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([UITableViewCell class])]; - if (cell == nil) { - cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([UITableViewCell class])]; - } - cell.backgroundColor = [UIColor whiteColor]; - cell.textLabel.text = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.textLabel.textColor = [DJDKMIMOMColor precautiousChampionPrettify]; - cell.textLabel.font = [UIFont systemFontOfSize:15]; - return cell; - } - YUMIConfectioneryTimberFurthaerPreadominantElement *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIConfectioneryTimberFurthaerPreadominantElement class])]; - cell.title = self.datasource[indexPath.row]; - cell.delegate = self; - NSString *showSwitch = [[NSUserDefaults standardUserDefaults] objectForKey:kCandyTreeHideMessage]; - cell.isExhibit = !showSwitch.length; - cell.isSwopCapacitate = self.showCommunicationSwop; - cell.sendMessageSwitchLevel = self.sendMessageSwitchLevel; - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - [MKJPopup dismiss]; - switch (indexPath.row) { - - case 0: - { - YUMIChamberHalfTissueRegard * webView = [[YUMIChamberHalfTissueRegard alloc] init]; - webView.url = URLWithType(kCandyTreeRecordURL); - [MKJPopup popupRegard:webView style:MKJPopupStyleActionSheet]; - } - break; - case 1: - { - YUMIChamberHalfTissueRegard * webView = [[YUMIChamberHalfTissueRegard alloc] init]; - webView.url = URLWithType(kCandyTreeRuleURL); - [MKJPopup popupRegard:webView style:MKJPopupStyleActionSheet]; - } - break; - - default: - break; - } -} - -#pragma mark - FBCCandyTreeFurthaerRuleElementRepresendtation -- (void)yUMIConfectioneryTimberFurthaerPreadominantElement:(YUMIConfectioneryTimberFurthaerPreadominantElement *)cell switchChange:(UISwitch *)change { - if (change.on) { - [[NSUserDefaults standardUserDefaults] setObject:nil forKey:kCandyTreeHideMessage]; - } else { - [[NSUserDefaults standardUserDefaults] setObject:@"1" forKey:kCandyTreeHideMessage]; - } - [[NSUserDefaults standardUserDefaults] synchronize]; -} - -#pragma mark - Getters And Setters -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Candy_Tree_More_View_0"); - _titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.textColor = [DJDKMIMOMColor precautiousChampionPrettify]; - } - return _titleLabel; -} -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:NSStringFromClass([UITableViewCell class])]; - [_tableView registerClass:[YUMIConfectioneryTimberFurthaerPreadominantElement class] forCellReuseIdentifier:NSStringFromClass([YUMIConfectioneryTimberFurthaerPreadominantElement class])]; - } - return _tableView; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray arrayWithObjects:YMLocalizedString(@"YUMI_Candy_Tree_More_View_2"), YMLocalizedString(@"YUMI_Candy_Tree_More_View_3"),YMLocalizedString(@"YUMI_Candy_Tree_More_View_4") ,nil]; - } - return _datasource; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberInsufficientBalanceRegard.h b/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberInsufficientBalanceRegard.h deleted file mode 100644 index 36de0098..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberInsufficientBalanceRegard.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YUMIConfectioneryTimberInsufficientBalanceRegard.h -// YuMi -// -// Created by YuMi on 2023/3/23. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCCandyTreeInsufficientBalanceRegardRepresendtation - --(void)payBalancePerformance; - -@end - - -@interface YUMIConfectioneryTimberInsufficientBalanceRegard : UIView -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberInsufficientBalanceRegard.m b/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberInsufficientBalanceRegard.m deleted file mode 100644 index 12d09268..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberInsufficientBalanceRegard.m +++ /dev/null @@ -1,142 +0,0 @@ -// -// YUMIConfectioneryTimberInsufficientBalanceRegard.m -// YuMi -// -// Created by YuMi on 2023/3/23. -// - -#import "YUMIConfectioneryTimberInsufficientBalanceRegard.h" -#import -#import "YUMIMacroUitls.h" -#import "UIView+Corner.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" - -@interface YUMIConfectioneryTimberInsufficientBalanceRegard() -@property (nonatomic,strong) UIButton *encourageRegard; -@property (nonatomic,strong) UIView *backgroundRegard; -@property (nonatomic,strong) UILabel *titleView; -@property (nonatomic,strong) UIImageView *figureRegard; -@property (nonatomic,strong) UILabel *contentView; -@property (nonatomic,strong) UIButton *payBtuton; -@end -@implementation YUMIConfectioneryTimberInsufficientBalanceRegard - --(instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if(self){ - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor colorWithWhite:0 alpha:0.6]; - [self addSubview:self.encourageRegard]; - [self addSubview:self.backgroundRegard]; - [self.backgroundRegard addSubview:self.titleView]; - [self.backgroundRegard addSubview:self.figureRegard]; - [self.backgroundRegard addSubview:self.contentView]; - [self.backgroundRegard addSubview:self.payBtuton]; -} -- (void)initChildLyRestrictions { - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self); - }]; - [self.backgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.equalTo(self); - make.width.mas_equalTo(kGetScaleWidth(306)); - make.height.mas_equalTo(kGetScaleWidth(202)); - }]; - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(20)); - make.height.mas_equalTo(kGetScaleWidth(16)); - make.centerX.equalTo(self.backgroundRegard); - }]; - [self.figureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(52)); - make.width.height.mas_equalTo(kGetScaleWidth(43)); - make.centerX.equalTo(self.backgroundRegard); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(108)); - make.centerX.equalTo(self.backgroundRegard); - make.height.mas_equalTo(kGetScaleWidth(15)); - }]; - [self.payBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(142)); - make.width.mas_equalTo(kGetScaleWidth(137)); - make.height.mas_equalTo(kGetScaleWidth(39)); - make.centerX.equalTo(self.backgroundRegard); - }]; - -} --(void)backAction{ - [self removeFromSuperview]; -} --(void)payPerformance{ - [self removeFromSuperview]; - if(self.delegate && [self.delegate respondsToSelector:@selector(payBalancePerformance)]){ - [self.delegate payBalancePerformance]; - } -} -#pragma mark -懒加载 -- (UIView *)backgroundRegard{ - if (!_backgroundRegard){ - _backgroundRegard = [UIView new]; - _backgroundRegard.backgroundColor = [UIColor whiteColor]; - [_backgroundRegard setMonopolizeAboutContraryApexMonopolize:kGetScaleWidth(26) rightTopCorner:kGetScaleWidth(26) bottomLeftCorner:kGetScaleWidth(26) bottomRightCorner:kGetScaleWidth(26) size:CGSizeMake(kGetScaleWidth(308), kGetScaleWidth(202))]; - } - return _backgroundRegard; -} - -- (UILabel *)titleView { - if (!_titleView) { - _titleView = [[UILabel alloc] init]; - _titleView.font = [UIFont systemFontOfSize:16 weight:UIFontWeightSemibold]; - _titleView.textColor = [DJDKMIMOMColor precautiousChampionPrettify]; - _titleView.text = YMLocalizedString(@"YUMI_Candy_Tree_Insufficient_Balance_View_0"); - } - return _titleView; -} - -- (UIImageView *)figureRegard{ - if (!_figureRegard){ - _figureRegard = [UIImageView new]; - _figureRegard.image = [UIImage imageNamed:@"yumi_scope_candytree_prompt"]; - } - return _figureRegard; -} -- (UILabel *)contentView{ - if (!_contentView){ - _contentView = [[UILabel alloc] init]; - _contentView.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _contentView.textColor = [DJDKMIMOMColor precautiousChampionPrettify]; - _contentView.text = YMLocalizedString(@"YUMI_Candy_Tree_Insufficient_Balance_View_1"); - } - return _contentView; -} --(UIButton *)payBtuton{ - if (!_payBtuton){ - _payBtuton = [UIButton new]; - UIImage *image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(kGetScaleWidth(137), kGetScaleWidth(39))]; - [_payBtuton setBackgroundImage:image forState:UIControlStateNormal]; - _payBtuton.layer.cornerRadius = kGetScaleWidth(39)/2; - _payBtuton.layer.masksToBounds = YES; - [_payBtuton setTitle:YMLocalizedString(@"YUMI_Candy_Tree_Insufficient_Balance_View_2") forState:UIControlStateNormal]; - [_payBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [_payBtuton addTarget:self action:@selector(payPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _payBtuton; -} -- (UIButton *)encourageRegard{ - if (!_encourageRegard){ - _encourageRegard = [UIButton new]; - [_encourageRegard addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside]; - } - return _encourageRegard; -} -@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberPresentRegard.h b/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberPresentRegard.h deleted file mode 100644 index ba838073..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberPresentRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIConfectioneryTimberPresentRegard.h -// YuMi -// -// Created by YuMi on 2021/12/10. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ConfectioneryTimberPresentAbstractMatrix, YUMIConfectioneryTimberBrightnessMatrix; -@interface YUMIConfectioneryTimberPresentRegard : UIView -@property (nonatomic,strong) ConfectioneryTimberPresentAbstractMatrix *giftInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberPresentRegard.m b/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberPresentRegard.m deleted file mode 100644 index 41a0e8fc..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberPresentRegard.m +++ /dev/null @@ -1,87 +0,0 @@ -// -// YUMIConfectioneryTimberPresentRegard.m -// YuMi -// -// Created by YuMi on 2021/12/10. -// - -#import "YUMIConfectioneryTimberPresentRegard.h" -#import -#import -#import "ConfectioneryTimberConsequentMatrix.h" -#import "YUMIConfectioneryTimberBrightnessMatrix.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" - -@interface YUMIConfectioneryTimberPresentRegard () -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,copy) void(^FinishBlock)(BOOL finish); -@end - -@implementation YUMIConfectioneryTimberPresentRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.encourageIndicateRegard]; - [self addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.height.mas_equalTo(18); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageIndicateRegard.mas_left).offset(6); - make.right.mas_equalTo(self.encourageIndicateRegard.mas_right).offset(-6); - make.centerY.mas_equalTo(self.encourageIndicateRegard); - }]; -} -#pragma mark - Getters And Setters -- (void)setGiftInfo:(ConfectioneryTimberPresentAbstractMatrix *)giftInfo { - _giftInfo = giftInfo; - if (_giftInfo) { - UIImage *backImage = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xF7D377),UIColorFromRGB(0xEE8833)] gradientType:GradientGenreTopToBottom imgSize:CGSizeMake(68, 18)]; - self.encourageIndicateRegard.image = backImage; - if (_giftInfo.rewardName.length > 7) { - _giftInfo.rewardName = [_giftInfo.rewardName substringToIndex:7]; - } - NSString * giftTitle = [NSString stringWithFormat:@"%@ x %d", _giftInfo.rewardName, _giftInfo.num]; - self.titleLabel.text = giftTitle; - } - [self layoutIfNeeded]; -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - _encourageIndicateRegard.layer.cornerRadius = 9; - _encourageIndicateRegard.layer.masksToBounds = YES; - _encourageIndicateRegard.layer.borderWidth = 1; - _encourageIndicateRegard.layer.borderColor = UIColorFromRGB(0xFFF0CE).CGColor; - } - return _encourageIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightRegular]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.textColor = [UIColor whiteColor]; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberRateRegard.h b/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberRateRegard.h deleted file mode 100644 index c6a8dfa2..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberRateRegard.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// YUMIConfectioneryTimberRateRegard.h -// YuMi -// -// Created by YuMi on 2021/12/10. -// - -#import -#import -NS_ASSUME_NONNULL_BEGIN - - -typedef void(^CandyTreeRankViewDidClickHandle)(NSInteger uid); - - -typedef NS_ENUM(NSInteger, CandyTreeRecordGenre) { - - CandyTreeRecordGenre_Today = 1, - - CandyTreeRecordGenre_Yesterday = 2, -}; - -@interface YUMIConfectioneryTimberRateRegard : UIView -@property (nonatomic,assign) CandyTreeRecordGenre type; -@property (nonatomic,copy) CandyTreeRankViewDidClickHandle didTicktackHandle; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberRateRegard.m b/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberRateRegard.m deleted file mode 100644 index dc8fe207..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberRateRegard.m +++ /dev/null @@ -1,190 +0,0 @@ -// -// YUMIConfectioneryTimberRateRegard.m -// YuMi -// -// Created by YuMi on 2021/12/10. -// - -#import "YUMIConfectioneryTimberRateRegard.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "XNDJTBWGLoadingTool.h" -#import "Api+CandyTree.h" -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "ConfectioneryTimberReflectionMatrix.h" -#import "YUMIConfectioneryTimberRateTabulationRegardElement.h" -#import "YUMIConfectioneryTimberDispossessableRegardElement.h" -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -#import "XCCurrentVCStackExecutive.h" -@interface YUMIConfectioneryTimberRateRegard () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,assign) int page; -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; -@end - -@implementation YUMIConfectioneryTimberRateRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initIntelligencerGrantedTerminalerRrfresh]; - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Public Method -- (void)rechamberStrangeTowardsoloudspeaker { - [self.tableView.mj_header beginRefreshing]; - [self intelligenceerRenovtowardseh]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; -} - -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [UIColor colorWithWhite:1 alpha:0.7]; - header.lastUpdatedTimeLabel.textColor = [UIColor colorWithWhite:1 alpha:0.7]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [UIColor colorWithWhite:1 alpha:0.7]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; -} - -#pragma mark - 刷新的方法 -- (void)intelligenceerRenovtowardseh { - self.page = 1; - NSString * page = [NSString stringWithFormat:@"%d", self.page]; - NSString * datetype = [NSString stringWithFormat:@"%ld", self.type]; - [Api confectioneryTimberRtowardseSttowardsementimplementtion:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSArray * array = [ConfectioneryTimberReflectionMatrix mtowardsrixsAboutGarment:data.data]; - [self acquireCandtyTimberRtowardseSttowardsementAccomplishment:array state:0]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } page:page pageSize:@"20" type:datetype]; -} - -- (void)footerRenovtowardseh { - if (self.hasNoFurthaerAtoloudspeaker) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Candy_Tree_Rank_View_0")]; - return; - } - self.page++; - NSString * page = [NSString stringWithFormat:@"%d", self.page]; - NSString * datetype = [NSString stringWithFormat:@"%ld", self.type]; - [Api confectioneryTimberRtowardseSttowardsementimplementtion:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSArray * array = [ConfectioneryTimberReflectionMatrix mtowardsrixsAboutGarment:data.data]; - [self acquireCandtyTimberRtowardseSttowardsementAccomplishment:array state:1]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - [self.tableView.mj_header endRefreshing]; - [self.tableView.mj_footer endRefreshing]; - } - } page:page pageSize:@"20" type:datetype]; -} - -- (void)acquireCandtyTimberRtowardseSttowardsementAccomplishment:(NSArray *)array state:(BOOL)state { - if (state == 0) { - [self.datasource removeAllObjects]; - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } - if (array.count > 0) { - self.hasNoFurthaerAtoloudspeaker = NO; - [self.datasource addObjectsFromArray:array]; - } else { - self.hasNoFurthaerAtoloudspeaker = YES; - [self.tableView.mj_footer endRefreshingWithNoMoreData]; - } - [self.tableView reloadData]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return self.datasource.count > 0 ? kGetScaleWidth(75) : kGetScaleWidth(300); -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count <= 0) { - YUMIConfectioneryTimberDispossessableRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIConfectioneryTimberDispossessableRegardElement class])]; - if (cell == nil) { - cell = [[YUMIConfectioneryTimberDispossessableRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIConfectioneryTimberDispossessableRegardElement class])]; - } - return cell; - } - YUMIConfectioneryTimberRateTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIConfectioneryTimberRateTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIConfectioneryTimberRateTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIConfectioneryTimberRateTabulationRegardElement class])]; - } - cell.chamberRateMatrix = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; -} -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{if (self.datasource.count <= 0) {return;} - ConfectioneryTimberReflectionMatrix *model = self.datasource[indexPath.row]; - if(self.didTicktackHandle){ - self.didTicktackHandle(model.uid); - } -} -#pragma mark - JXCategoryListContentViewDelegate -- (UIView *)listView { - return self; -} - -#pragma mark - Getters And Setters -- (void)setType:(CandyTreeRecordGenre)type { - _type = type; - [self.tableView.mj_header beginRefreshing]; - [self intelligenceerRenovtowardseh]; -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIConfectioneryTimberRateTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIConfectioneryTimberRateTabulationRegardElement class])]; - [_tableView registerClass:[YUMIConfectioneryTimberDispossessableRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIConfectioneryTimberDispossessableRegardElement class])]; - } - return _tableView; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource= [NSMutableArray array]; - } - return _datasource; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberRegardGovernancer.h b/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberRegardGovernancer.h deleted file mode 100644 index 4cfbe777..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YUMIConfectioneryTimberRegardGovernancer.h -// YuMi -// -// Created by YuMi on 2021/12/9. -// - -#import "MvpRegardGovernancer.h" -#import "ChamberHostRepresendtation.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIConfectioneryTimberRegardGovernancer : MvpRegardGovernancer -- (instancetype)initWithDelegate:(id)delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberRegardGovernancer.m b/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberRegardGovernancer.m deleted file mode 100644 index aa0d4afb..00000000 --- a/YuMi/Modules/YMRoom/View/CandyTree/View/YUMIConfectioneryTimberRegardGovernancer.m +++ /dev/null @@ -1,644 +0,0 @@ -// -// YUMIConfectioneryTimberRegardGovernancer.m -// YuMi -// -// Created by YuMi on 2021/12/9. -// - -#import "YUMIConfectioneryTimberRegardGovernancer.h" -#import -#import -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "MKJPopup.h" -#import "YUMIHtmlUrl.h" -#import "NSArray+Safe.h" -#import "YYUtility.h" -#import "ChamberAbstractMatrix.h" -#import "AttachmentMatrix.h" -#import "ConfectioneryTimberAbstractMatrix.h" -#import "ConfectioneryTimberConsequentMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "YUMIChamberHalfTissueRegard.h" -#import "YUMIConfectioneryTimberFurthaerRegard.h" -#import "YUMIConfectioneryRateAccommodatedRegard.h" -#import "YUMIConfectioneryTimberPresentRegard.h" -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -#import "XCCurrentVCStackExecutive.h" -#import "YUMIConfectioneryTimberInsufficientBalanceRegard.h" -#import "YUMITissueRegardGovernancer.h" -#import "YUMIIAPReindictRegardGovernancer.h" -#import "YUMIConfectioneryTimberExternalizer.h" -#import "FBCCandyTreeCeremony.h" -#define KitemHeight (20 + 5) - -UIKIT_EXTERN NSString * const kRoomReceivedCandyNotificationKey; -@interface YUMIConfectioneryTimberRegardGovernancer () -@property (nonatomic,strong) UIView *apexBeatRegard; -@property (nonatomic,strong) UIView *extremeBeatRegard; -@property (nonatomic,strong) UIView * contentView; - -@property (nonatomic,strong) UIImageView * encourageRegard; -@property (nonatomic,strong) UIStackView *rateHierarchyRegard; -@property (nonatomic,strong) UIImageView * rateIndicateRegard; - -@property (nonatomic,strong) UIImageView *furthaerIndicateRegard; - - -@property (strong, nonatomic) SVGAParser *anatomiser; -@property (nonatomic,strong) UIImageView *confectioneryTimberRegard; -@property (nonatomic,strong) SVGAImageView *confectioneryTimberLightRegard; -@property (nonatomic,strong) SVGAImageView *confectioneryTimberUnfoildRegard; -@property (nonatomic,strong) SVGAImageView *confectioneryTimberTransRegard; - -@property (nonatomic,strong) UIImageView *extractEncourageIndicateRegard; - -@property (nonatomic,strong) UIButton *accelerateBtuton; -@property (nonatomic,strong) UITextField *essayAccurated; -@property (nonatomic,strong) UIButton *subtractBtuton; -@property (nonatomic,strong) UIButton *extractBtuton; -@property (nonatomic,strong) UIView * animationView; -@property (nonatomic,assign) NSInteger digitalConfectionery; -@property (nonatomic,strong) ConfectioneryTimberAbstractMatrix *confectioneryAbstract; -@property (nonatomic,weak) idhostRepresedtation; -@property (nonatomic,assign) BOOL isExtracting; -@end - -@implementation YUMIConfectioneryTimberRegardGovernancer - -- (void)dealloc { - [[NIMSDK sharedSDK].systemNotificationManager removeDelegate:self]; - [[NSNotificationCenter defaultCenter]postNotificationName:kRoomReceivedCandyNotificationKey object:nil userInfo:@{@"isHidden":@(YES)}]; -} - -- (instancetype)initWithDelegate:(id)delegate { - if (self = [super init]) { - self.hostRepresedtation = delegate; - [[NIMSDK sharedSDK].systemNotificationManager addDelegate:self]; - } - return self; -} - -- (YUMIConfectioneryTimberExternalizer *)producePresimport { - return [[YUMIConfectioneryTimberExternalizer alloc] init]; -} - -- (BOOL)isVeiledNevObstacle { - return YES; -} -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - self.digitalConfectionery = 1; - [self.presimport acquireConfectioneryTimberAbstract]; -} - -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { - [self.view endEditing:YES]; -} -#pragma mark -FBCCandyRankContainerRegardRepresendtation -- (void)didTicktackIntelligenceShank:(NSInteger)uid{ - [MKJPopup dismiss]; - YUMIManeConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = uid; - [self.hostRepresedtation.acquireUniversalNev pushViewController:userInfoVC animated:YES]; -} -#pragma mark - FBCCandyTreeCeremony -- (void)acquireConfectioneryTimberAbstractAccomplishment:(ConfectioneryTimberAbstractMatrix *)info { - [self brakeHUD]; - self.confectioneryAbstract = info; - -} - -- (void)extractConfectioneryFlunk { - [self brakeHUD]; - self.isExtracting = NO; -} --(void)extractConfectioneryIntersect{ - [self brakeHUD]; - self.isExtracting = NO; - YUMIConfectioneryTimberInsufficientBalanceRegard *balanceView = [[YUMIConfectioneryTimberInsufficientBalanceRegard alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; - balanceView.delegate = self; - [self.view addSubview:balanceView]; -} -- (void)extractConfectioneryAccomplishment:(NSArray *)result { - [self brakeHUD]; - self.isExtracting = NO; - [result enumerateObjectsUsingBlock:^(ConfectioneryTimberPresentAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.level > 2) { - - [NSObject cancelPreviousPerformRequestsWithTarget:self]; - - YUMIConfectioneryTimberPresentRegard * newAnimaView = [[YUMIConfectioneryTimberPresentRegard alloc] init]; - newAnimaView.giftInfo = obj; - NSString * giftTitle = [NSString stringWithFormat:@"%@ x %d", obj.rewardName, obj.num]; - CGFloat widht = [giftTitle boundingRectWithSize:CGSizeMake(200, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:10]} context:nil].size.width + 10; - newAnimaView.frame = CGRectMake(0, 4 * (KitemHeight), widht + 12, KitemHeight); - [self.animationView addSubview:newAnimaView]; - - if (self.animationView.subviews.count > 5) { - [self.animationView.subviews.firstObject removeFromSuperview]; - } - for (int i=0; i < self.animationView.subviews.count; i++) { - YUMIConfectioneryTimberPresentRegard * view = [self.animationView.subviews secureGroalTowardsIndictowardsrix1:i]; - NSInteger offsetY= (self.animationView.subviews.count - i) * KitemHeight; - [UIView animateWithDuration:0.1 animations:^{ - CGRect rect = view.frame; - rect.origin.y = KitemHeight * 5 - offsetY; - view.frame = rect; - } completion:^(BOOL finished) { - if (i == (self.animationView.subviews.count -1)) { - [self.animationView.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - [self performSelector:@selector(presentRegardTransltowardseByvirtueofSenstowardsionalRegard:) withObject:obj afterDelay:3]; - }]; - } - }]; - } - - - } - }]; - @kWeakify(self); - NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/candyTree_light.svga", API_Image_URL]; - [self.anatomiser parseWithURL:[NSURL URLWithString:anatomiser1Name] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { - @kStrongify(self); - self.confectioneryTimberLightRegard.loops = 1; - self.confectioneryTimberLightRegard.clearsAfterStop = YES; - self.confectioneryTimberLightRegard.videoItem = videoItem; - [self.confectioneryTimberLightRegard startAnimation]; - } failureBlock:^(NSError * _Nonnull error) { - - }]; - - - NSString * candyTree_open = [NSString stringWithFormat:@"%@/candyTree_open.svga", API_Image_URL]; - [self.anatomiser parseWithURL:[NSURL URLWithString:candyTree_open] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { - @kStrongify(self); - self.confectioneryTimberUnfoildRegard.loops = 1; - self.confectioneryTimberUnfoildRegard.clearsAfterStop = YES; - self.confectioneryTimberUnfoildRegard.videoItem = videoItem; - [self.confectioneryTimberUnfoildRegard startAnimation]; - } failureBlock:^(NSError * _Nonnull error) { - - }]; - - NSString * candyTree_transform = [NSString stringWithFormat:@"%@/candyTree_transform.svga", API_Image_URL]; - [self.anatomiser parseWithURL:[NSURL URLWithString:candyTree_transform] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { - @kStrongify(self); - self.confectioneryTimberTransRegard.loops = 1; - self.confectioneryTimberTransRegard.clearsAfterStop = YES; - self.confectioneryTimberTransRegard.videoItem = videoItem; - [self.confectioneryTimberTransRegard startAnimation]; - } failureBlock:^(NSError * _Nonnull error) { - - }]; - -} - -#pragma mark - NIMSystemNotificationManagerDelegate -- (void)onReceiveCustomSystemNotification:(NIMCustomSystemNotification *)notification { - if (notification.receiverType == NIMSessionTypeP2P) { - AttachmentMatrix *attachment = [AttachmentMatrix mtowardsrixAboutJSON:notification.content]; - if (attachment.first == IndividualityCommunicationGenre_Account && attachment.second == Custom_Message_Sub_Account_Changed){ - if (attachment.second == Custom_Message_Sub_Account_Changed) { - [self.presimport acquireConfectioneryTimberAbstract]; - } - } - } -} -#pragma mark - Private Method -- (void)initSubViews { - [[NSNotificationCenter defaultCenter]postNotificationName:kRoomReceivedCandyNotificationKey object:nil userInfo:@{@"isHidden":@(NO)}]; - self.view.backgroundColor = [UIColor clearColor]; - [self.view addSubview:self.apexBeatRegard]; - [self.view addSubview:self.contentView]; - [self.view addSubview:self.extremeBeatRegard]; - - [self.contentView addSubview:self.encourageRegard]; - - - [self.encourageRegard addSubview:self.rateHierarchyRegard]; - [self.encourageRegard addSubview:self.furthaerIndicateRegard]; - [self.encourageRegard addSubview:self.confectioneryTimberRegard]; - [self.encourageRegard addSubview:self.confectioneryTimberLightRegard]; - [self.encourageRegard addSubview:self.confectioneryTimberUnfoildRegard]; - - [self.encourageRegard addSubview:self.extractEncourageIndicateRegard]; - - [self.encourageRegard addSubview:self.extractBtuton]; - [self.encourageRegard addSubview:self.confectioneryTimberTransRegard]; - [self.encourageRegard addSubview:self.animationView]; - - [self.encourageRegard addSubview:self.subtractBtuton]; - [self.encourageRegard addSubview:self.essayAccurated]; - [self.encourageRegard addSubview:self.accelerateBtuton]; - - - - [self.rateHierarchyRegard addArrangedSubview:self.rateIndicateRegard]; - - -} - -- (void)initChildLyRestrictions { - [self.apexBeatRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.left.right.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.contentView.mas_top); - }]; - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view).inset(45); - make.centerY.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.encourageRegard.mas_bottom); - }]; - - [self.extremeBeatRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.top.mas_equalTo(self.contentView.mas_bottom); - make.bottom.mas_equalTo(self.view); - }]; - - - - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(285); - make.height.mas_equalTo(434); - make.centerX.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.contentView).offset(0); - }]; - - [self.rateHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.encourageRegard).offset(45); - make.left.mas_equalTo(self.encourageRegard).offset(9); - make.height.mas_equalTo(37); - make.width.mas_equalTo(36); - }]; - - - - - [self.furthaerIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(30, 30)); - make.top.mas_equalTo(44); - make.right.mas_equalTo(self.encourageRegard).offset(-12); - }]; - - - - [self.confectioneryTimberRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.encourageRegard).offset(63); - make.centerX.mas_equalTo(self.encourageRegard); - make.size.mas_equalTo(CGSizeMake(285, 363)); - }]; - - [self.confectioneryTimberLightRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.confectioneryTimberRegard); - }]; - - [self.confectioneryTimberUnfoildRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.confectioneryTimberRegard); - }]; - - - - [self.extractEncourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(150, 29)); - make.centerX.mas_equalTo(self.encourageRegard); - make.top.mas_equalTo(340); - }]; - - - [self.subtractBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.equalTo(self.extractEncourageIndicateRegard.mas_left).mas_offset(5);; - make.top.equalTo(self.extractEncourageIndicateRegard.mas_top).mas_offset(2.25); - make.width.mas_equalTo(40); - make.height.mas_equalTo(21); - }]; - - [self.accelerateBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.top.height.equalTo(self.subtractBtuton); - make.right.equalTo(self.extractEncourageIndicateRegard.mas_right).mas_offset(-5);; - }]; - [self.essayAccurated mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.height.equalTo(self.subtractBtuton); - make.width.mas_equalTo(62); - make.left.equalTo(self.subtractBtuton.mas_right); - - }]; - [self.extractBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(121, 45)); - make.centerX.mas_equalTo(self.encourageRegard); - make.top.mas_equalTo(367); - }]; - - CGFloat kscale = (CGFloat)350 / (CGFloat)755; - [self.confectioneryTimberTransRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.confectioneryTimberRegard); - make.bottom.right.mas_equalTo(self.view); - make.width.mas_equalTo(self.confectioneryTimberTransRegard.mas_height).multipliedBy(kscale); - }]; - - [self.animationView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageRegard).offset(7); - make.bottom.mas_equalTo(self.encourageRegard).offset(-106); - make.width.mas_equalTo(150); - make.height.mas_equalTo(KitemHeight * 5); - }]; -} - -- (void)presentRegardTransltowardseByvirtueofSenstowardsionalRegard:(UIView *)view { - [view removeFromSuperview]; -} - -#pragma mark - Event Response -- (void)furthaerBetowardsRecognition:(UITapGestureRecognizer *)tap { - ConsumerAbstractMatrix * userInfo = self.hostRepresedtation.getUserInfo; - ChamberAbstractMatrix * roomInfo = self.hostRepresedtation.acquireChamberAbstract; - YUMIConfectioneryTimberFurthaerRegard * moreView = [[YUMIConfectioneryTimberFurthaerRegard alloc] init]; - moreView.sendMessageSwitchLevel = roomInfo.findLoveDrawSwitchVo.sendMsgLevel; - moreView.showCommunicationSwop = userInfo.userLevelVo.experLevelSeq >= roomInfo.findLoveDrawSwitchVo.sendMsgLevel; - [MKJPopup popupRegard:moreView style:MKJPopupStyleActionSheet]; -} - -- (void)rtowardseBetowardsRecognition:(UITapGestureRecognizer *)tap { - YUMIConfectioneryRateAccommodatedRegard * rateRegard = [[YUMIConfectioneryRateAccommodatedRegard alloc] init]; - rateRegard.delegate = self; - [MKJPopup popupRegard:rateRegard style:MKJPopupStyleActionSheet]; -} - -- (void)accelertowardseBtutonPerformance:(UIButton *)sender { - self.digitalConfectionery += 1; - self.essayAccurated.text = [NSString stringWithFormat:@"%ld", self.digitalConfectionery]; - -} - -- (void)subtractBtutonPerformance:(UIButton *)sender { - if (self.digitalConfectionery <= 1) return; - self.digitalConfectionery -= 1; - self.essayAccurated.text = [NSString stringWithFormat:@"%ld", self.digitalConfectionery]; - -} -#pragma mark -FBCCandyTreeInsufficientBalanceRegardRepresendtation -- (void)payBalancePerformance{ - @kWeakify(self); - [self dismissViewControllerAnimated:YES completion:^{ - @kStrongify(self); - YUMIIAPReindictRegardGovernancer *rechargeVC = [[YUMIIAPReindictRegardGovernancer alloc] init]; - [self.hostRepresedtation.acquireUniversalNev pushViewController:rechargeVC animated:YES]; - }]; - -} -- (void)extractBtutonPerformance:(UIButton *)sender { - if (self.digitalConfectionery <= 0) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Candy_Tree_View_Controller_2")]; - return; - } - if (self.isExtracting) return; - self.isExtracting = YES; - - ChamberAbstractMatrix * roomInfo = self.hostRepresedtation.acquireChamberAbstract; - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.uid]; - NSString * candyNumber = [NSString stringWithFormat:@"%ld", self.digitalConfectionery]; - BOOL showCommunicationSwop = self.hostRepresedtation.getUserInfo.userLevelVo.experLevelSeq >= roomInfo.findLoveDrawSwitchVo.sendMsgLevel; - [self.presimport extractConfectionery:candyNumber roomUid:roomUid isSendMessage:showCommunicationSwop]; - -} - -- (void)prohibitiaplictowardsionearBetowardsRecognition:(UITapGestureRecognizer *)tap { - [[NSNotificationCenter defaultCenter]postNotificationName:kRoomReceivedCandyNotificationKey object:nil userInfo:@{@"isHidden":@(YES)}]; - [self.view removeFromSuperview]; -} -#pragma mark -UITextFieldDelegate -- (void)essayUniverseDidDiversifictowardsiond:(UITextField *)essayUniverse { - if (essayUniverse.text.integerValue > 200) { - essayUniverse.text = @"200"; - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Candy_Tree_View_Controller_5")]; - } - self.digitalConfectionery = essayUniverse.text.intValue; - -} -- (void)textFieldDidEndEditing:(UITextField *)essayUniverse{ - if(essayUniverse.text.length <= 0){ - essayUniverse.text = @"1"; - } - -} -- (BOOL)essayUniverse:(UITextField *)essayUniverse shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { - return [self valiengagementDigital:string]; -} - -- (BOOL)valiengagementDigital:(NSString*)number { - BOOL res = YES; - NSCharacterSet* tmpSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"]; - int i = 0; - while (i < number.length) { - NSString * string = [number substringWithRange:NSMakeRange(i, 1)]; - NSRange range = [string rangeOfCharacterFromSet:tmpSet]; - if (range.length == 0) { - res = NO; - break; - } - i++; - } - return res; -} -#pragma mark - Getters And Setters -- (void)setIsExtracting:(BOOL)isExtracting { - _isExtracting = isExtracting; - self.extractBtuton.enabled = !_isExtracting; -} - -- (UIView *)apexBeatRegard { - if (!_apexBeatRegard) { - _apexBeatRegard = [[UIView alloc] init]; - _apexBeatRegard.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(prohibitiaplictowardsionearBetowardsRecognition:)]; - [_apexBeatRegard addGestureRecognizer:tap]; - } - return _apexBeatRegard; -} -- (UIView *)extremeBeatRegard { - if (!_extremeBeatRegard) { - _extremeBeatRegard = [[UIView alloc] init]; - _extremeBeatRegard.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(prohibitiaplictowardsionearBetowardsRecognition:)]; - [_extremeBeatRegard addGestureRecognizer:tap]; - } - return _extremeBeatRegard; -} - -- (UIView *)contentView { - if (!_contentView) { - _contentView = [[UIView alloc] init]; - _contentView.backgroundColor = [UIColor clearColor]; - } - return _contentView; -} - - - -- (UIImageView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIImageView alloc] init]; - _encourageRegard.userInteractionEnabled = YES; - _encourageRegard.image = [UIImage imageNamed:@"yumi_scope_candy_tree_back"]; - - } - return _encourageRegard; -} - -- (UIStackView *)rateHierarchyRegard { - if (!_rateHierarchyRegard) { - _rateHierarchyRegard = [[UIStackView alloc] init]; - _rateHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _rateHierarchyRegard.distribution = UIStackViewDistributionFill; - _rateHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _rateHierarchyRegard.spacing = 0; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(rtowardseBetowardsRecognition:)]; - [_rateHierarchyRegard addGestureRecognizer:tap]; - } - return _rateHierarchyRegard; -} - -- (UIImageView *)rateIndicateRegard { - if (!_rateIndicateRegard) { - _rateIndicateRegard = [[UIImageView alloc] init]; - _rateIndicateRegard.userInteractionEnabled = YES; - _rateIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_candy_tree_rank"]; - } - return _rateIndicateRegard; -} - - - -- (UIImageView *)furthaerIndicateRegard { - if (!_furthaerIndicateRegard) { - _furthaerIndicateRegard = [[UIImageView alloc] init]; - _furthaerIndicateRegard.userInteractionEnabled = YES; - _furthaerIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_candy_tree_more"]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(furthaerBetowardsRecognition:)]; - [_furthaerIndicateRegard addGestureRecognizer:tap]; - } - return _furthaerIndicateRegard; -} - - - - - - -- (UIImageView *)confectioneryTimberRegard { - if (!_confectioneryTimberRegard) { - _confectioneryTimberRegard = [[UIImageView alloc]init]; - _confectioneryTimberRegard.backgroundColor = [UIColor clearColor]; - _confectioneryTimberRegard.userInteractionEnabled = NO; - _confectioneryTimberRegard.image = [UIImage imageNamed:@"yumi_scope_candy_tree_background"]; - } - return _confectioneryTimberRegard; -} - -- (SVGAImageView *)confectioneryTimberLightRegard { - if (!_confectioneryTimberLightRegard) { - _confectioneryTimberLightRegard = [[SVGAImageView alloc]init]; - _confectioneryTimberLightRegard.backgroundColor = [UIColor clearColor]; - _confectioneryTimberLightRegard.userInteractionEnabled = NO; - } - return _confectioneryTimberLightRegard; -} - -- (SVGAImageView *)confectioneryTimberUnfoildRegard { - if (!_confectioneryTimberUnfoildRegard) { - _confectioneryTimberUnfoildRegard = [[SVGAImageView alloc]init]; - _confectioneryTimberUnfoildRegard.backgroundColor = [UIColor clearColor]; - _confectioneryTimberUnfoildRegard.userInteractionEnabled = NO; - } - return _confectioneryTimberUnfoildRegard; -} - -- (SVGAImageView *)confectioneryTimberTransRegard { - if (!_confectioneryTimberTransRegard) { - _confectioneryTimberTransRegard = [[SVGAImageView alloc]init]; - _confectioneryTimberTransRegard.backgroundColor = [UIColor clearColor]; - _confectioneryTimberTransRegard.userInteractionEnabled = NO; - } - return _confectioneryTimberTransRegard; -} - -- (SVGAParser *)anatomiser { - if (!_anatomiser) { - _anatomiser = [[SVGAParser alloc]init]; - } - return _anatomiser; -} - - -- (UIImageView *)extractEncourageIndicateRegard { - if (!_extractEncourageIndicateRegard) { - _extractEncourageIndicateRegard = [[UIImageView alloc] init]; - _extractEncourageIndicateRegard.userInteractionEnabled = YES; - _extractEncourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_candy_tree_pick_background"]; - } - return _extractEncourageIndicateRegard; -} - - - -- (UIButton *)accelerateBtuton { - if (!_accelerateBtuton) { - _accelerateBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_accelerateBtuton setImage:[UIImage imageNamed:@"yumi_scope_candy_tree_add"] forState:UIControlStateNormal]; - [_accelerateBtuton setImage:[UIImage imageNamed:@"yumi_scope_candy_tree_add"] forState:UIControlStateSelected]; - [_accelerateBtuton addTarget:self action:@selector(accelertowardseBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_accelerateBtuton setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - } - return _accelerateBtuton; -} - -- (UIButton *)subtractBtuton { - if (!_subtractBtuton) { - _subtractBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_subtractBtuton setImage:[UIImage imageNamed:@"yumi_scope_candy_tree_subtract"] forState:UIControlStateNormal]; - [_subtractBtuton setImage:[UIImage imageNamed:@"yumi_scope_candy_tree_subtract"] forState:UIControlStateSelected]; - [_subtractBtuton addTarget:self action:@selector(subtractBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_subtractBtuton setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - } - return _subtractBtuton; -} - -- (UITextField *)essayAccurated { - if (!_essayAccurated) { - _essayAccurated = [[UITextField alloc] init]; - _essayAccurated.tintColor = [UIColor whiteColor]; - _essayAccurated.textColor = [UIColor whiteColor]; - _essayAccurated.backgroundColor = [UIColor clearColor]; - _essayAccurated.textAlignment = NSTextAlignmentCenter; - _essayAccurated.font = [UIFont fontWithName:@"PingFangSC-Medium" size:12]; - _essayAccurated.text = @"1"; - _essayAccurated.delegate = self; - [_essayAccurated addTarget:self action:@selector(essayUniverseDidDiversifictowardsiond:) forControlEvents:UIControlEventEditingChanged]; - _essayAccurated.keyboardType = UIKeyboardTypeNumberPad; - } - return _essayAccurated; -} - -- (UIButton *)extractBtuton { - if (!_extractBtuton) { - _extractBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_extractBtuton setImage:[UIImage imageNamed:@"yumi_scope_candy_tree_pick_normal"] forState:UIControlStateNormal]; - [_extractBtuton setImage:[UIImage imageNamed:@"yumi_scope_candy_tree_pick_disable"] forState:UIControlStateDisabled]; - [_extractBtuton addTarget:self action:@selector(extractBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _extractBtuton; -} - -- (UIView *)animationView { - if (!_animationView) { - _animationView = [[UIView alloc] init]; - _animationView.backgroundColor = [UIColor clearColor]; - } - return _animationView; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/ChamberAnimationCeremony.h b/YuMi/Modules/YMRoom/View/ChamberAnimationCeremony.h deleted file mode 100644 index 404a06c8..00000000 --- a/YuMi/Modules/YMRoom/View/ChamberAnimationCeremony.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// ChamberAnimationCeremony.h -// YUMI -// -// Created by zu on 2022/1/13. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - - -@protocol ChamberAnimationCeremony - -@optional - -- (CGPoint)brectifynessSpeckTowardsPhaseRegardByCid:(NSString *)uid; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ChamberGuestRepresendtation.h b/YuMi/Modules/YMRoom/View/ChamberGuestRepresendtation.h deleted file mode 100644 index 30170b2b..00000000 --- a/YuMi/Modules/YMRoom/View/ChamberGuestRepresendtation.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// ChamberGuestRepresendtation.h -// YUMI -// -// Created by zu on 2021/10/27. -// - -#import -#import "MicroQueueCeremony.h" -#import "ChamberAnimationCeremony.h" - -@class NIMMessage, NIMRecentSession; -@class AttachmentMatrix; - -NS_ASSUME_NONNULL_BEGIN - - -@protocol ChamberGuestRepresendtation - -@optional - -- (void)onChamberRefurbish; -- (void)onUserUpdate; -- (void)onChamberImported; -- (void)onChamberDiversifictowardsion; -- (void)onChamberRoadliceImported; -- (void)shankNEMCCircularCommunictowardsion:(NIMMessage *)message; -- (void)shankNEMCIndividualityCommunictowardsion:(NIMMessage *)message; -- (void)shankNEMCEssayCommunictowardsion:(NIMMessage *)message; -- (void)accelertowardseNEMCLtowardsterdaInterlocution:(NIMRecentSession *)session; -- (void)transltowardseNEMCLtowardsterdaInterlocution:(NIMRecentSession *)session; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ChamberHostRepresendtation.h b/YuMi/Modules/YMRoom/View/ChamberHostRepresendtation.h deleted file mode 100644 index 892bcd32..00000000 --- a/YuMi/Modules/YMRoom/View/ChamberHostRepresendtation.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// RoomDelegate.h -// YUMI -// -// Created by zu on 2021/10/26. -// - -#import -#import "MicroQueueCeremony.h" -#import "ChamberAnimationCeremony.h" - -NS_ASSUME_NONNULL_BEGIN - -@class ChamberAbstractMatrix; -@class ConsumerAbstractMatrix; - - -@protocol ChamberHostRepresendtation - -- (ChamberAbstractMatrix*)acquireChamberAbstract; -- (ConsumerAbstractMatrix*)getUserInfo; -- (void)exitRoom; -- (void)miniChamber; -- (UINavigationController *)acquireUniversalNev; -- (NSArray *)acquireChamberSenstowardsionalManagementSttowardsement; -- (NSArray *)acquireChamberCombatGroupSquadSttowardsement; -- (BOOL)isChamberCombatDisporting; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ChamberIntelligencerRegard/ChamberIntelligencerRegard.h b/YuMi/Modules/YMRoom/View/ChamberIntelligencerRegard/ChamberIntelligencerRegard.h deleted file mode 100644 index 37a2220a..00000000 --- a/YuMi/Modules/YMRoom/View/ChamberIntelligencerRegard/ChamberIntelligencerRegard.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YMRoomInfoView.h -// YUMI -// -// Created by YUMI on 2021/10/11. -// - -#import -#import "ChamberHostRepresendtation.h" -#import "ChamberGuestRepresendtation.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface ChamberIntelligencerRegard : UIView - -- (instancetype)initWithDelegate:(id)delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ChamberIntelligencerRegard/ChamberIntelligencerRegard.m b/YuMi/Modules/YMRoom/View/ChamberIntelligencerRegard/ChamberIntelligencerRegard.m deleted file mode 100644 index 7fd20d33..00000000 --- a/YuMi/Modules/YMRoom/View/ChamberIntelligencerRegard/ChamberIntelligencerRegard.m +++ /dev/null @@ -1,523 +0,0 @@ -// -// YMRoomInfoView.m -// YUMI -// -// Created by YUMI on 2021/10/11. -// - -#import "ChamberIntelligencerRegard.h" -#import -#import -#import -#import -#import "MKJPopup.h" -#import -#import "UIImage+Utils.h" -#import "UIButton+EnlargeTouchArea.h" -#import "YUMIMacroUitls.h" -#import "ThemeColor+Room.h" -#import "MKJPopup.h" -#import "XNDJTBWGLoadingTool.h" -#import "YUMIHtmlUrl.h" -#import "AccountAbstractStorage.h" -#import "HttpRequestFacilitater.h" -#import "Api+Room.h" -#import "XCCurrentVCStackExecutive.h" -#import "StatsticsticsServingFacilitater.h" -#import "NSMutableDictionary+Saft.h" -#import "ClientDisposition.h" -#import "ChamberAbstractMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "AttachmentMatrix.h" -#import "MiecreoscoopeMHTueueMatrix.h" -#import "YUMIChamberEncourageMatrix.h" -#import "YUMIParaticipationRegard.h" -#import "YUMIChamberEncourageRegard.h" -#import "YUMITissueRegardGovernancer.h" -#import "YUMIChamberOnLineRegardGovernancer.h" -#import "YUMIChamberRegardGovernancer.h" - -@interface ChamberIntelligencerRegard () - -@property (nonatomic, strong) UIButton *backButton; -@property (nonatomic,strong) UIStackView *monicerHierarchyRegard; -@property (nonatomic,strong) UIStackView *championHierarchyRegard; -@property (nonatomic,strong) MarqueeLabel *titleLabel; -@property (nonatomic,strong) UIImageView *presentImpressionIndicateRegard; -@property (nonatomic,strong) UIImageView *spokeChamberIndicateRegard; -@property (nonatomic,strong) UIStackView *onlineHierarchyRegard; -@property (nonatomic,strong) UIView * greenPointRegard; -@property (nonatomic,strong) YYLabel *idSequencignation; -@property (nonatomic,strong) UIButton *assembleBtuton; -@property (nonatomic,strong) UIButton *instanllingBtuton; -@property (nonatomic, weak) id hostRepresedtation; -@property (nonatomic, strong) YUMIChamberEncourageRegard *encourageChamberRegard; - -@property (nonatomic, assign) BOOL possessExhibitAssembleInScreen; - -@end - -@implementation ChamberIntelligencerRegard - -- (instancetype)initWithDelegate:(id)delegate { - self = [super init]; - if (self) { - _hostRepresedtation = delegate; - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Event Response -- (void)encourageBtutonPerformance:(UIButton *)sender { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_return_click eventAttributes:@{@"roomUid" : @(self.hostRepresedtation.acquireChamberAbstract.uid)}]; - [self.hostRepresedtation miniChamber]; -} - -- (void)partowardsiciptowardsionBtutonPerformance:(UIButton *)sender{ - [self EvidencePartowardsiciptowardsionFasciaboard]; -} - -- (void)settingBtutonPerformance:(UIButton *)sender { - - if (![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - MKJActionSheetDisposition *exit = [MKJActionSheetDisposition normalTitle:YMLocalizedString(@"Room_Header_View_0") ticktackPerformance:^{ - [self.hostRepresedtation exitRoom]; - }]; - - MKJActionSheetDisposition *report = [MKJActionSheetDisposition normalTitle:YMLocalizedString(@"Room_Header_View_1") ticktackPerformance:^{ - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"Room_Header_View_2")]; - }); - }]; - - [MKJPopup performanceSheetAboutProvisions:@[exit, report]]; - return; - } - - self.encourageChamberRegard.frame = CGRectMake(KScreenWidth, 0, 250, KScreenHeight); - FFPopup *popup = [FFPopup popupWithContentView:self.encourageChamberRegard]; - popup.showType = FFPopupShowType_SlideInFromRight; - popup.dismissType = FFPopupDismissType_SlideOutToRight; - popup.maskType = FFPopupMaskType_Dimmed; - popup.dimmedMaskAlpha = 0.0; - popup.shouldDismissOnBackgroundTouch = YES; - FFPopupHorizontalLayout horizontalLayout = FFPopupHorizontalLayout_Right; - FFPopupVerticalLayout verticalLayout = FFPopupVerticalLayout_Center; - [popup showWithLayout:FFPopupLayoutMake(horizontalLayout, verticalLayout) duration:0.0]; - popup.didFinishDismissingBlock = ^{ - [self.encourageChamberRegard removeFromSuperview]; - }; - popup.didFinishShowingBlock = ^{ - - }; - [Api reqeustEncourageChamber:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSArray *array = [YUMIChamberEncourageMatrix mtowardsrixsAboutGarment:data.data]; - self.encourageChamberRegard.roomList = [NSMutableArray arrayWithArray:array]; - } - } roomId:[NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.roomId]]; -} - -- (void)onlineBetowardsRecognition { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_online_list_click eventAttributes:@{@"roomUid" : @(self.hostRepresedtation.acquireChamberAbstract.uid)}]; - YUMIChamberOnLineRegardGovernancer * onlineVC = [[YUMIChamberOnLineRegardGovernancer alloc] initWithDelegate:self.hostRepresedtation]; - [self.hostRepresedtation.acquireUniversalNev pushViewController:onlineVC animated:YES]; -} -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backButton]; - [self addSubview:self.monicerHierarchyRegard]; - [self addSubview:self.assembleBtuton]; - [self addSubview:self.instanllingBtuton]; - - [self.monicerHierarchyRegard addArrangedSubview:self.championHierarchyRegard]; - [self.monicerHierarchyRegard addArrangedSubview:self.onlineHierarchyRegard]; - - [self.onlineHierarchyRegard addArrangedSubview:self.greenPointRegard]; - [self.onlineHierarchyRegard addArrangedSubview:self.idSequencignation]; - - [self.championHierarchyRegard addArrangedSubview:self.titleLabel]; - [self.championHierarchyRegard addArrangedSubview:self.presentImpressionIndicateRegard]; - [self.championHierarchyRegard addArrangedSubview:self.spokeChamberIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.equalTo(self).offset(14); - make.height.width.equalTo(@22); - make.centerY.mas_equalTo(self.instanllingBtuton); - }]; - - [self.instanllingBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-15); - make.bottom.mas_equalTo(-11); - make.width.height.mas_equalTo(22); - }]; - - [self.assembleBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.equalTo(self.instanllingBtuton); - make.right.equalTo(self.instanllingBtuton.mas_left).offset(-8); - make.width.height.mas_equalTo(22); - }]; - - [self.monicerHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.instanllingBtuton); - make.left.mas_equalTo(self.backButton.mas_right).offset(10); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_lessThanOrEqualTo(100); - make.height.mas_equalTo(21); - }]; - [self.greenPointRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(3,3)); - }]; - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(14); - }]; - - [self.presentImpressionIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(10,10)); - }]; - - [self.spokeChamberIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(10,10)); - }]; -} -#pragma mark - ChamberGuestRepresendtation -- (void)onChamberImported { - ChamberAbstractMatrix* roomInfo = self.hostRepresedtation.acquireChamberAbstract; - - [[[NIMSDK sharedSDK] chatroomManager] fetchChatroomInfo:[NSString stringWithFormat:@"%ld", (long)self.hostRepresedtation.acquireChamberAbstract.roomId] completion:^(NSError * _Nullable error, NIMChatroom * _Nullable chatroom) { - if (error == nil) { - self.idSequencignation.text = [NSString stringWithFormat:@"在线:%ld ID:%ld", (long)(chatroom.onlineUserCount > 0 ? chatroom.onlineUserCount : 0), (long)roomInfo.erbanNo]; - } else { - self.idSequencignation.text = [NSString stringWithFormat:@"在线:%ld ID:%ld", (long)(roomInfo.onlineNum > 0 ? roomInfo.onlineNum : 0), (long)roomInfo.erbanNo]; - } - }]; - - if (roomInfo) { - self.titleLabel.text = roomInfo.title; - self.presentImpressionIndicateRegard.hidden = roomInfo.hasAnimationEffect; - if (roomInfo.uid == [AccountAbstractStorage instance].acquireCid.integerValue) { - self.assembleBtuton.hidden = YES; - } else { - self.assembleBtuton.hidden = NO; - self.assembleBtuton.selected = roomInfo.isRoomFans; - } - self.spokeChamberIndicateRegard.hidden = roomInfo.roomPwd.length <= 0; - } - - if (![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - self.onlineHierarchyRegard.hidden = YES; - } -} - -- (void)onChamberRefurbish { - ChamberAbstractMatrix* roomInfo = self.hostRepresedtation.acquireChamberAbstract; - self.titleLabel.text = roomInfo.title; - self.idSequencignation.text = [NSString stringWithFormat:@"在线:%ld ID:%ld", (long)(roomInfo.onlineNum > 0 ? roomInfo.onlineNum : 0), (long)roomInfo.erbanNo]; - self.presentImpressionIndicateRegard.hidden = roomInfo.hasAnimationEffect; - if (roomInfo.uid == [AccountAbstractStorage instance].acquireCid.integerValue) { - self.assembleBtuton.hidden = YES; - } else { - self.assembleBtuton.hidden = NO; - self.assembleBtuton.selected = roomInfo.isRoomFans; - } - self.spokeChamberIndicateRegard.hidden = roomInfo.roomPwd.length <= 0; - if (![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - self.onlineHierarchyRegard.hidden = YES; - } -} -#pragma mark - Event Response -- (void)EvidencePartowardsiciptowardsionFasciaboard { - YUMIParaticipationProvision *cycle = [YUMIParaticipationProvision itemWitCouple:XPShareItemTagMoments title:YMLocalizedString(@"Room_Header_View_6") imageName:@"share_wechat_circle_normal" disableImageName:@"share_wechat_circle_disable"]; - YUMIParaticipationProvision *wechat = [YUMIParaticipationProvision itemWitCouple:XPShareItemTagWeChat title:YMLocalizedString(@"Room_Header_View_7") imageName:@"share_wechat_normal" disableImageName:@"share_wechat_disable"]; - YUMIParaticipationProvision *qq = [YUMIParaticipationProvision itemWitCouple:XPShareItemTagQQ title:YMLocalizedString(@"Room_Header_View_8") imageName:@"share_qq_normal" disableImageName:@"share_qq_disable"]; - YUMIParaticipationProvision *qqzone = [YUMIParaticipationProvision itemWitCouple:XPShareItemTagQQZone title:YMLocalizedString(@"Room_Header_View_9") imageName:@"share_qqzone_normal" disableImageName:@"share_qqzone_disable"]; - NSArray * items = @[wechat,cycle, qq, qqzone]; - ChamberAbstractMatrix * roomInfo = [self.hostRepresedtation acquireChamberAbstract]; - YUMIParaticipationAbstractMatrix * shareInfo = [[YUMIParaticipationAbstractMatrix alloc] init]; - shareInfo.shareTitle = YMLocalizedString(@"Room_Header_View_10"); - shareInfo.shareContent = [NSString stringWithFormat:@"%@ 这个房间很好玩,推荐给你,快来和我一起玩吧~", roomInfo.title]; - shareInfo.shareImageUrl = [self.hostRepresedtation acquireChamberAbstract].avatar; - shareInfo.type = ShareGenre_Room; - shareInfo.roomUid = roomInfo.uid; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * urlString = [NSString stringWithFormat:@"%@/%@?shareUid=%@&uid=%ld&room_name=%@&room_id=%ld&room_avatar=%@&share_name=%@",API_HOST_URL,URLWithType(kShareRoomURL),uid,roomInfo.uid,roomInfo.title,roomInfo.erbanNo,roomInfo.avatar,roomInfo.nick]; - shareInfo.shareUrl = urlString; - CGFloat margin = 15; - CGSize itemSize = CGSizeMake((KScreenWidth-2*margin)/4, 65); - YUMIParaticipationRegard *partowardsiciptowardsionRegard = [[YUMIParaticipationRegard alloc] initWithItems:items itemSize:itemSize shareInfo:shareInfo]; - partowardsiciptowardsionRegard.delegate = self; - [MKJPopup popupRegard:partowardsiciptowardsionRegard style:MKJPopupStyleActionSheet]; -} - -- (void)preservePartowardsiciptowardsion:(YUMIParaticipationAbstractMatrix *)shareInfo { - NSMutableDictionary *params = [NSMutableDictionary dictionary]; - NSString *uid = [AccountAbstractStorage instance].acquireCid; - NSString *ticket = [AccountAbstractStorage instance].acquireTicket; - [params secureSetGroal:uid forKey:@"uid"]; - [params secureSetGroal:@(shareInfo.shareType) forKey:@"shareType"]; - [params secureSetGroal:ticket forKey:@"ticket"]; - [params secureSetGroal:@(shareInfo.type) forKey:@"sharePageId"]; - if (shareInfo.shareUrl.length > 0) { - [params secureSetGroal:shareInfo.shareUrl forKey:@"shareUrl"]; - } - if (shareInfo.roomUid > 0) { - [params secureSetGroal:@(shareInfo.roomUid) forKey:@"targetUid"]; - } - [HttpRequestFacilitater POST:@"usershare/save" params:params success:^(BaseMatrix * _Nonnull data) { - - } failure:^(NSInteger resCode, NSString * _Nonnull message) { - - }]; -} - -- (void)assembleBtutonPerformance:(UIButton *)sender { - NSString * type = sender.selected ? @"2" : @"1"; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.uid]; - [Api assembleChamber:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - sender.selected= !sender.selected; - if ([type isEqualToString:@"1"]) { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_collect_icon_click eventAttributes:@{@"roomUid" : @(self.hostRepresedtation.acquireChamberAbstract.uid)}]; - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:YMLocalizedString(@"Room_Header_View_12")]; - if (self.possessExhibitAssembleInScreen) { - return; - } - self.possessExhibitAssembleInScreen = YES; - NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic secureSetGroal:[AccountAbstractStorage instance].acquireCid forKey:@"uid"]; - [dic secureSetGroal:self.hostRepresedtation.getUserInfo.nick forKey:@"nick"]; - [dic secureSetGroal:[NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.uid] forKey:@"targetUid"]; - [dic secureSetGroal:self.hostRepresedtation.acquireChamberAbstract.nick forKey:@"targetNick"]; - NSDictionary * data = @{@"data":dic}; - AttachmentMatrix *attachment = [[AttachmentMatrix alloc]init]; - attachment.first = IndividualityCommunicationGenre_Collection_Room; - attachment.second = Custom_Message_Sub_Collect_Room_Tips; - attachment.data = data; - NIMMessage *message = [[NIMMessage alloc]init]; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachment; - message.messageObject = object; - NSString *sessionId = [NSString stringWithFormat:@"%ld",self.hostRepresedtation.acquireChamberAbstract.roomId]; - - NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; - } - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } roomUid:roomUid uid:uid type:type roomUids:NULL]; -} - -#pragma mark - XCShareRegardRepresendtation -- (void)partowardsiciptowardsionRegard:(YUMIParaticipationRegard *)partowardsiciptowardsionRegard shareFail:(NSString *)message { - [MKJPopup dismiss]; - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:message]; -} - -- (void)partowardsiciptowardsionRegard:(YUMIParaticipationRegard *)partowardsiciptowardsionRegard didSuccess:(YUMIParaticipationAbstractMatrix *)shareInfo{ - [MKJPopup dismiss]; - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"Room_Header_View_13")]; - AttachmentMatrix * attachMent = [[AttachmentMatrix alloc] init]; - attachMent.first = IndividualityCommunicationGenre_Room_Tip; - attachMent.second = Custom_Message_Sub_Room_Tip_ShareRoom; - NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [dic secureSetGroal:uid forKey:@"uid"]; - NSMutableDictionary * userDic = [NSMutableDictionary dictionary]; - ConsumerAbstractMatrix * userInfo = [self.hostRepresedtation getUserInfo]; - ChamberAbstractMatrix * roomInfo = [self.hostRepresedtation acquireChamberAbstract]; - [userDic secureSetGroal:roomInfo.nick.length > 0 ? roomInfo.nick : @"" forKey:@"targetNick"]; - [userDic secureSetGroal:@(roomInfo.uid) forKey:@"targetUid"]; - [userDic secureSetGroal:userInfo.nick.length > 0 ? userInfo.nick : @"" forKey:@"nick"]; - [dic secureSetGroal:userDic forKey:@"data"]; - attachMent.data = dic; - NSString *sessionID = [NSString stringWithFormat:@"%ld", [self.hostRepresedtation acquireChamberAbstract].roomId]; - - NIMMessage *message = [[NIMMessage alloc]init]; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachMent; - message.messageObject = object; - - NIMSession *session = [NIMSession session:sessionID type:NIMSessionTypeChatroom]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; - - [self preservePartowardsiciptowardsion:shareInfo]; -} - -- (void)partowardsiciptowardsionRegardDidTicktackRevoctowardsion:(YUMIParaticipationRegard *)partowardsiciptowardsionRegard { - [MKJPopup dismiss]; -} - -#pragma mark - FBCChamberEncourageRegardRepresendtation -- (void)yUMIChamberEncourageRegardReport { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_more_icon_click eventAttributes:@{@"reportRoom" : @(self.hostRepresedtation.acquireChamberAbstract.uid)}]; - [FFPopup dismissPopupForView:self.encourageChamberRegard animated:NO]; - YUMITissueRegardGovernancer * webVewC = [[YUMITissueRegardGovernancer alloc] init]; - NSString *urlstr = [NSString stringWithFormat:@"%@?reportUid=%ld&source=ROOM", URLWithType(kReportRoomURL),self.hostRepresedtation.acquireChamberAbstract.uid]; - webVewC.url = urlstr; - [[self.hostRepresedtation acquireUniversalNev] pushViewController:webVewC animated:YES]; -} - -- (void)yUMIChamberEncourageRegardRoadliceChamber { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_more_icon_click eventAttributes:@{@"miniRoom" : @(self.hostRepresedtation.acquireChamberAbstract.uid)}]; - [FFPopup dismissPopupForView:self.encourageChamberRegard animated:NO]; - [self.hostRepresedtation miniChamber]; -} - -- (void)yUMIChamberEncourageRegardExitChamber { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_more_icon_click eventAttributes:@{@"exitRoom" : @(self.hostRepresedtation.acquireChamberAbstract.uid)}]; - [FFPopup dismissPopupForView:self.encourageChamberRegard animated:NO]; - [self.hostRepresedtation exitRoom]; -} - -- (void)yUMIChamberEncourageRegardPartowardsiciptowardsion { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_more_icon_click eventAttributes:@{@"shareRoom" : @(self.hostRepresedtation.acquireChamberAbstract.uid)}]; - [FFPopup dismissPopupForView:self.encourageChamberRegard animated:NO]; - [self EvidencePartowardsiciptowardsionFasciaboard]; -} - -- (void)yUMIChamberEncourageRegardJumpToChamber:(NSString *)roomUid { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_more_icon_click eventAttributes:@{@"jumpToRoom" : roomUid}]; - [FFPopup dismissPopupForView:self.encourageChamberRegard animated:NO]; - [self.hostRepresedtation exitRoom]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [YUMIChamberRegardGovernancer unfoildChamber:roomUid viewController:[XCCurrentVCStackExecutive shareManager].getCurrentVC]; - }); -} - -#pragma mark - Getters And Setters -- (UIButton *)backButton{ - if (!_backButton) { - _backButton = [[UIButton alloc] init]; - [_backButton setImage:[UIImage imageNamed:@"yumi_scope_gen_back"] forState:UIControlStateNormal]; - [_backButton addTarget:self action:@selector(encourageBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_backButton setEnlargeEdgeAboutApex:15 right:15 bottom:15 left:15]; - } - return _backButton; -} - -- (UIButton *)instanllingBtuton { - if (!_instanllingBtuton) { - _instanllingBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_instanllingBtuton setImage:[UIImage imageNamed:@"yumi_scope_gen_setting"] forState:UIControlStateNormal]; - [_instanllingBtuton addTarget:self action:@selector(settingBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_instanllingBtuton setEnlargeEdgeAboutApex:8 right:8 bottom:8 left:8]; - } - return _instanllingBtuton; -} - -- (UIButton *)assembleBtuton { - if (!_assembleBtuton) { - _assembleBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_assembleBtuton setImage:[UIImage imageNamed:@"yumi_scope_collect_normal"] forState:UIControlStateNormal]; - [_assembleBtuton setImage:[UIImage imageNamed:@"yumi_scope_collect_selected"] forState:UIControlStateSelected]; - [_assembleBtuton addTarget:self action:@selector(assembleBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_assembleBtuton setEnlargeEdgeAboutApex:8 right:8 bottom:8 left:8]; - _assembleBtuton.adjustsImageWhenHighlighted = NO; - _assembleBtuton.hidden = YES; - } - return _assembleBtuton; -} - -- (UIStackView *)monicerHierarchyRegard { - if (!_monicerHierarchyRegard) { - _monicerHierarchyRegard = [[UIStackView alloc] init]; - _monicerHierarchyRegard.axis = UILayoutConstraintAxisVertical; - _monicerHierarchyRegard.distribution = UIStackViewDistributionFill; - _monicerHierarchyRegard.alignment = UIStackViewAlignmentLeading; - } - return _monicerHierarchyRegard; -} - -- (UIStackView *)championHierarchyRegard { - if (!_championHierarchyRegard) { - _championHierarchyRegard = [[UIStackView alloc] init]; - _championHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _championHierarchyRegard.distribution = UIStackViewDistributionFill; - _championHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _championHierarchyRegard.spacing = 5; - } - return _championHierarchyRegard; -} - -- (MarqueeLabel *)titleLabel{ - if (!_titleLabel) { - _titleLabel = [[MarqueeLabel alloc] init]; - _titleLabel.scrollDuration = 8.0; - _titleLabel.fadeLength = 6.0f; - _titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Bold" size:15]; - _titleLabel.textColor = [DJDKMIMOMColor chamberOwnerMonicerPrettify]; - _titleLabel.userInteractionEnabled = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onlineBetowardsRecognition)]; - [_titleLabel addGestureRecognizer:tap]; - } - return _titleLabel; -} - -- (UIImageView *)presentImpressionIndicateRegard { - if (!_presentImpressionIndicateRegard) { - _presentImpressionIndicateRegard = [[UIImageView alloc] init]; - _presentImpressionIndicateRegard.userInteractionEnabled = YES; - _presentImpressionIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_gen_present_effect"]; - } - return _presentImpressionIndicateRegard; -} - -- (UIImageView *)spokeChamberIndicateRegard { - if (!_spokeChamberIndicateRegard) { - _spokeChamberIndicateRegard = [[UIImageView alloc] init]; - _spokeChamberIndicateRegard.userInteractionEnabled = YES; - _spokeChamberIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_gen_lock_room"]; - _spokeChamberIndicateRegard.hidden = YES; - } - return _spokeChamberIndicateRegard; -} - -- (UIStackView *)onlineHierarchyRegard { - if (!_onlineHierarchyRegard) { - _onlineHierarchyRegard = [[UIStackView alloc] init]; - _onlineHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _onlineHierarchyRegard.distribution = UIStackViewDistributionFill; - _onlineHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _onlineHierarchyRegard.spacing = 2; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onlineBetowardsRecognition)]; - [_onlineHierarchyRegard addGestureRecognizer:tap]; - } - return _onlineHierarchyRegard; -} - -- (UIView *)greenPointRegard { - if (!_greenPointRegard) { - _greenPointRegard = [[UIView alloc] init]; - _greenPointRegard.backgroundColor = [DJDKMIMOMColor chamberOnBurlywoodIdenPrettify]; - _greenPointRegard.layer.masksToBounds = YES; - _greenPointRegard.layer.cornerRadius = 1.5; - } - return _greenPointRegard; -} - -- (YYLabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[YYLabel alloc] init]; - _idSequencignation.textColor = [DJDKMIMOMColor chamberOwnerMonicerPrettify]; - _idSequencignation.font = [UIFont systemFontOfSize:10]; - } - return _idSequencignation; -} - -- (YUMIChamberEncourageRegard *)encourageChamberRegard { - if (!_encourageChamberRegard) { - _encourageChamberRegard = [[YUMIChamberEncourageRegard alloc] init]; - self.encourageChamberRegard.delegate = self; - } - return _encourageChamberRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/FaceView/Model/ChamberAcceptAbstractMatrix.h b/YuMi/Modules/YMRoom/View/FaceView/Model/ChamberAcceptAbstractMatrix.h deleted file mode 100644 index 30d00e8f..00000000 --- a/YuMi/Modules/YMRoom/View/FaceView/Model/ChamberAcceptAbstractMatrix.h +++ /dev/null @@ -1,48 +0,0 @@ -// -// ChamberAcceptAbstractMatrix.h -// YUMI -// -// Created by YUMI on 2022/3/9. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSInteger, FaceDisplayGenre) { - FaceDisplayGenre_OnlyOne = 0, - FaceDisplayGenre_Flow = 1, - FaceDisplayGenre_OverLay = 2, - FaceDisplayGenre_OnlyOneLine = 3, -}; - - -@class ChamberVipAcceptAbstractMatrix; -@interface ChamberAcceptAbstractMatrix : NSObject -@property (nonatomic,assign) NSInteger fid; -@property (nonatomic, assign) NSInteger animDuration; -@property (nonatomic, assign) NSInteger animStartPos; -@property (nonatomic, assign) NSInteger animEndPos; -@property (nonatomic, assign) NSInteger animRepeatCount; -@property (nonatomic,assign) BOOL canResultRepeat; -@property (nonatomic, assign) FaceDisplayGenre displayType; -@property (nonatomic,assign) NSInteger faceType; -@property (nonatomic, assign) NSInteger iconPos; -@property (nonatomic,assign) BOOL isLuckFace; -@property (nonatomic,assign) BOOL isNobleFace; -@property (nonatomic,copy) NSString *name; -@property (nonatomic,copy) NSString *pinyin; -@property (nonatomic, assign) NSInteger resultCount; -@property (nonatomic, assign) NSInteger resultDuration; -@property (nonatomic, assign) NSInteger resultEndPos; -@property (nonatomic, assign) NSInteger resultStartPos; -@property (nonatomic,strong) ChamberVipAcceptAbstractMatrix *faceVipInfo; -@property (nonatomic,strong) UIImage *faceImage; -@end - -@interface ChamberVipAcceptAbstractMatrix : NSObject -@property (nonatomic,copy) NSString *vipIcon; -@property (nonatomic,assign) NSInteger vipLevel; -@property (nonatomic,copy) NSString *vipName; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FaceView/Model/ChamberAcceptAbstractMatrix.m b/YuMi/Modules/YMRoom/View/FaceView/Model/ChamberAcceptAbstractMatrix.m deleted file mode 100644 index d412e8a9..00000000 --- a/YuMi/Modules/YMRoom/View/FaceView/Model/ChamberAcceptAbstractMatrix.m +++ /dev/null @@ -1,20 +0,0 @@ -// -// ChamberAcceptAbstractMatrix.m -// YUMI -// -// Created by YUMI on 2022/3/9. -// - -#import "ChamberAcceptAbstractMatrix.h" - -@implementation ChamberAcceptAbstractMatrix -+ (NSDictionary *)replacedDigitalByvirtueofMaintainertyConstitute { - return @{@"fid":@"id"}; -} -@end - -@implementation ChamberVipAcceptAbstractMatrix - - - -@end diff --git a/YuMi/Modules/YMRoom/View/FaceView/Model/ChamberAcceptChampionProvisionMatrix.h b/YuMi/Modules/YMRoom/View/FaceView/Model/ChamberAcceptChampionProvisionMatrix.h deleted file mode 100644 index db29d2c5..00000000 --- a/YuMi/Modules/YMRoom/View/FaceView/Model/ChamberAcceptChampionProvisionMatrix.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// ChamberAcceptChampionProvisionMatrix.h -// YUMI -// -// Created by YUMI on 2022/3/9. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSInteger, ChamberFaceTitleProvisionGenre) { - - ChamberFaceTitleProvisionGenre_Normal = 1, - - ChamberFaceTitleProvisionGenre_Nobel, -}; - -@interface ChamberAcceptChampionProvisionMatrix : NSObject -@property (nonatomic,copy) NSString *title; -@property (nonatomic,assign) BOOL isSelect; -@property (nonatomic,assign) ChamberFaceTitleProvisionGenre faceType; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FaceView/Model/ChamberAcceptChampionProvisionMatrix.m b/YuMi/Modules/YMRoom/View/FaceView/Model/ChamberAcceptChampionProvisionMatrix.m deleted file mode 100644 index 6ee9cd94..00000000 --- a/YuMi/Modules/YMRoom/View/FaceView/Model/ChamberAcceptChampionProvisionMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ChamberAcceptChampionProvisionMatrix.m -// YUMI -// -// Created by YUMI on 2022/3/9. -// - -#import "ChamberAcceptChampionProvisionMatrix.h" - -@implementation ChamberAcceptChampionProvisionMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/FaceView/Model/ChamberAcceptDischargeAbstractMatrix.h b/YuMi/Modules/YMRoom/View/FaceView/Model/ChamberAcceptDischargeAbstractMatrix.h deleted file mode 100644 index 6fc1c21c..00000000 --- a/YuMi/Modules/YMRoom/View/FaceView/Model/ChamberAcceptDischargeAbstractMatrix.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// RoomSendFaceInfoModel.h -// YUMI -// -// Created by YUMI on 2022/3/10. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface ChamberAcceptDischargeAbstractMatrix : NSObject -@property (assign, nonatomic) NSInteger uid; -@property (copy, nonatomic) NSString *nick; -@property (assign, nonatomic) NSInteger faceId; -@property (strong, nonatomic) UIImage *resultImage; -@property (strong, nonatomic) NSMutableArray *resultIndexes; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FaceView/Model/ChamberAcceptDischargeAbstractMatrix.m b/YuMi/Modules/YMRoom/View/FaceView/Model/ChamberAcceptDischargeAbstractMatrix.m deleted file mode 100644 index 7674c19f..00000000 --- a/YuMi/Modules/YMRoom/View/FaceView/Model/ChamberAcceptDischargeAbstractMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// RoomSendFaceInfoModel.m -// YUMI -// -// Created by YUMI on 2022/3/10. -// - -#import "ChamberAcceptDischargeAbstractMatrix.h" - -@implementation ChamberAcceptDischargeAbstractMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/FaceView/Model/RoomFaceInfoModel.h b/YuMi/Modules/YMRoom/View/FaceView/Model/RoomFaceInfoModel.h new file mode 100644 index 00000000..6ec359fd --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FaceView/Model/RoomFaceInfoModel.h @@ -0,0 +1,70 @@ +// +// RoomFaceInfoModel.h +// YUMI +// +// Created by YUMI on 2022/3/9. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(NSInteger, FaceDisplayType) { + FaceDisplayType_OnlyOne = 0, + FaceDisplayType_Flow = 1, + FaceDisplayType_OverLay = 2, + FaceDisplayType_OnlyOneLine = 3, +}; + + +@class RoomVipFaceInfoModel; +@interface RoomFaceInfoModel : NSObject +///表情的id +@property (nonatomic,assign) NSInteger fid; +///动画的持续时间 需要除以1000 +@property (nonatomic, assign) NSInteger animDuration; +///开始 +@property (nonatomic, assign) NSInteger animStartPos; +///动画有多少张 +@property (nonatomic, assign) NSInteger animEndPos; +///重复次数 +@property (nonatomic, assign) NSInteger animRepeatCount; +///结果是否可以重复 +@property (nonatomic,assign) BOOL canResultRepeat; +///展示的样式 +@property (nonatomic, assign) FaceDisplayType displayType; +///目前应该只有普通表情 +@property (nonatomic,assign) NSInteger faceType; +///当前要显示的表情的编号 +@property (nonatomic, assign) NSInteger iconPos; +///是否是幸运表情 +@property (nonatomic,assign) BOOL isLuckFace; +///是否是贵族表情 +@property (nonatomic,assign) BOOL isNobleFace; +///表情的名字 +@property (nonatomic,copy) NSString *name; +///表情名字的pinyin +@property (nonatomic,copy) NSString *pinyin; +///结果的表情的数量 +@property (nonatomic, assign) NSInteger resultCount; +///结果表情的持续时间 +@property (nonatomic, assign) NSInteger resultDuration; +///结果表情的结束 +@property (nonatomic, assign) NSInteger resultEndPos; +///结果表情的开始 +@property (nonatomic, assign) NSInteger resultStartPos; +///vip +@property (nonatomic,strong) RoomVipFaceInfoModel *faceVipInfo; +///本地字段 表情的图片 +@property (nonatomic,strong) UIImage *faceImage; +@end + +@interface RoomVipFaceInfoModel : NSObject +///vip的类型 +@property (nonatomic,copy) NSString *vipIcon; +///等级 +@property (nonatomic,assign) NSInteger vipLevel; +///vip的名字 +@property (nonatomic,copy) NSString *vipName; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FaceView/Model/RoomFaceInfoModel.m b/YuMi/Modules/YMRoom/View/FaceView/Model/RoomFaceInfoModel.m new file mode 100644 index 00000000..6a8faa9b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FaceView/Model/RoomFaceInfoModel.m @@ -0,0 +1,21 @@ +// +// RoomFaceInfoModel.m +// YUMI +// +// Created by YUMI on 2022/3/9. +// + +#import "RoomFaceInfoModel.h" + +@implementation RoomFaceInfoModel +///如果一个模型中需要字段映射的话 比如id -> ID name -> other.name ++ (NSDictionary *)replacedKeyFromPropertyName { + return @{@"fid":@"id"}; +} +@end + +@implementation RoomVipFaceInfoModel + + + +@end diff --git a/YuMi/Modules/YMRoom/View/FaceView/Model/RoomFaceSendInfoModel.h b/YuMi/Modules/YMRoom/View/FaceView/Model/RoomFaceSendInfoModel.h new file mode 100644 index 00000000..a9873034 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FaceView/Model/RoomFaceSendInfoModel.h @@ -0,0 +1,25 @@ +// +// RoomSendFaceInfoModel.h +// YUMI +// +// Created by YUMI on 2022/3/10. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RoomFaceSendInfoModel : NSObject +///用户ID +@property (assign, nonatomic) NSInteger uid; +///用户昵称 +@property (copy, nonatomic) NSString *nick; +///表情的id +@property (assign, nonatomic) NSInteger faceId; +///结果的图片 +@property (strong, nonatomic) UIImage *resultImage; +///🎲数 +@property (strong, nonatomic) NSMutableArray *resultIndexes; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FaceView/Model/RoomFaceSendInfoModel.m b/YuMi/Modules/YMRoom/View/FaceView/Model/RoomFaceSendInfoModel.m new file mode 100644 index 00000000..815d7d61 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FaceView/Model/RoomFaceSendInfoModel.m @@ -0,0 +1,12 @@ +// +// RoomSendFaceInfoModel.m +// YUMI +// +// Created by YUMI on 2022/3/10. +// + +#import "RoomFaceSendInfoModel.h" + +@implementation RoomFaceSendInfoModel + +@end diff --git a/YuMi/Modules/YMRoom/View/FaceView/Model/RoomFaceTitleItemModel.h b/YuMi/Modules/YMRoom/View/FaceView/Model/RoomFaceTitleItemModel.h new file mode 100644 index 00000000..c033c3bf --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FaceView/Model/RoomFaceTitleItemModel.h @@ -0,0 +1,27 @@ +// +// RoomFaceTitleItemModel.h +// YUMI +// +// Created by YUMI on 2022/3/9. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(NSInteger, RoomFaceTitleItemType) { + ///普通的表情 + RoomFaceTitleItemType_Normal = 1, + ///贵族表情 + RoomFaceTitleItemType_Nobel, +}; + +@interface RoomFaceTitleItemModel : NSObject +///表情 +@property (nonatomic,copy) NSString *title; +///是否选择 +@property (nonatomic,assign) BOOL isSelect; +///类型 +@property (nonatomic,assign) RoomFaceTitleItemType faceType; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FaceView/Model/RoomFaceTitleItemModel.m b/YuMi/Modules/YMRoom/View/FaceView/Model/RoomFaceTitleItemModel.m new file mode 100644 index 00000000..5e608ab6 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FaceView/Model/RoomFaceTitleItemModel.m @@ -0,0 +1,12 @@ +// +// RoomFaceTitleItemModel.m +// YUMI +// +// Created by YUMI on 2022/3/9. +// + +#import "RoomFaceTitleItemModel.h" + +@implementation RoomFaceTitleItemModel + +@end diff --git a/YuMi/Modules/YMRoom/View/FaceView/Presenter/XPRoomFacePresenter.h b/YuMi/Modules/YMRoom/View/FaceView/Presenter/XPRoomFacePresenter.h new file mode 100644 index 00000000..24313b66 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FaceView/Presenter/XPRoomFacePresenter.h @@ -0,0 +1,21 @@ +// +// YMRoomFacePresenter.h +// YUMI +// +// Created by YUMI on 2022/3/9. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomFacePresenter : BaseMvpPresenter +///获取当前用户信息 +- (void)getUserInfo; +///普通表情 +- (void)getRoomNormalFace; +/// 规则表情 +- (void)getRoomNobelFace; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FaceView/Presenter/XPRoomFacePresenter.m b/YuMi/Modules/YMRoom/View/FaceView/Presenter/XPRoomFacePresenter.m new file mode 100644 index 00000000..a8be8bb2 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FaceView/Presenter/XPRoomFacePresenter.m @@ -0,0 +1,93 @@ +// +// YMRoomFacePresenter.m +// YUMI +// +// Created by YUMI on 2022/3/9. +// + +#import "XPRoomFacePresenter.h" +#import "Api.h" +#import "AccountInfoStorage.h" +#import "XPRoomFaceTool.h" +#import "ClientConfig.h" +#import "RoomFaceInfoModel.h" +#import "UserInfoModel.h" +#import "XPRoomFaceProtocol.h" +#import "NSArray+Safe.h" + +@implementation XPRoomFacePresenter + +///获取当前用户信息 +- (void)getUserInfo { + NSString * uid = [[AccountInfoStorage instance] getUid]; + [Api getUserInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + UserInfoModel * userInfo = [UserInfoModel modelWithDictionary:data.data]; + [[self getView] getUserInfoSuccess:userInfo]; + }showLoading:YES] uid:uid]; +} + +///普通表情 +- (void)getRoomNormalFace { + NSDictionary * dic = [ClientConfig shareConfig].configInfo.faceInitData; + NSArray * originArray = [RoomFaceInfoModel modelsWithArray:dic[@"faces"]]; + NSArray * sortArray = [self sortFaceInfosWithfaceInfoArr:originArray]; + NSString * faceFile = [XPRoomFaceTool shareFaceTool].faceDirectory; + NSMutableArray * faceArray = [NSMutableArray array]; + for (int i = 0; i< sortArray.count; i++) { + RoomFaceInfoModel * faceInfo = [sortArray safeObjectAtIndex1:i]; + if (!faceInfo.isNobleFace && faceInfo.faceType == 1) { + NSString *faceName = [NSString stringWithFormat:@"%@_%ld_%ld",faceInfo.pinyin,faceInfo.fid,faceInfo.iconPos]; + NSString *dirName = [NSString stringWithFormat:@"%@_%ld",faceInfo.pinyin,faceInfo.fid]; + NSString *targetPath = [NSString stringWithFormat:@"%@/%@/%@",faceFile,dirName,faceName]; + UIImage * faceImage = [UIImage imageWithContentsOfFile:targetPath]; + if (faceImage) { + faceInfo.faceImage = faceImage; + } + [faceArray addObject:faceInfo]; + } + } + [[self getView] getRoomNormalFaceListSuccess:faceArray]; +} + + +/// 规则表情 +- (void)getRoomNobelFace { + NSDictionary * dic = [ClientConfig shareConfig].configInfo.faceInitData; + NSArray * originArray = [RoomFaceInfoModel modelsWithArray:dic[@"vipFaces"]]; + NSArray * sortArray = [self sortFaceInfosWithfaceInfoArr:originArray]; + NSString * faceFile = [XPRoomFaceTool shareFaceTool].faceDirectory; + NSMutableArray * faceArray = [NSMutableArray array]; + for (int i = 0; i< sortArray.count; i++) { + RoomFaceInfoModel * faceInfo = [sortArray safeObjectAtIndex1:i]; + if (faceInfo.faceType == 1) { + NSString *faceName = [NSString stringWithFormat:@"%@_%ld_%ld",faceInfo.pinyin,faceInfo.fid,faceInfo.iconPos]; + NSString *dirName = [NSString stringWithFormat:@"%@_%ld",faceInfo.pinyin,faceInfo.fid]; + NSString *targetPath = [NSString stringWithFormat:@"%@/%@/%@",faceFile,dirName,faceName]; + UIImage * faceImage = [UIImage imageWithContentsOfFile:targetPath]; + if (faceImage) { + faceInfo.faceImage = faceImage; + } + [faceArray addObject:faceInfo]; + } + } + [[self getView] getRoomVipFaceListSuccess:faceArray]; + +} + +#pragma mark - Private Method +///排序 +- (NSArray *)sortFaceInfosWithfaceInfoArr:(NSArray *)faceInfoArr { + NSMutableArray *temp = [NSMutableArray array]; + NSMutableArray *temp2 = [NSMutableArray array]; //运气表情 + for (RoomFaceInfoModel *item in faceInfoArr) { + if (item.resultCount <= 0) { + [temp addObject:item]; + }else { + [temp2 addObject:item]; + } + } + [temp addObjectsFromArray:temp2]; + return temp; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/FaceView/Presenter/XPRoomFaceTool.h b/YuMi/Modules/YMRoom/View/FaceView/Presenter/XPRoomFaceTool.h new file mode 100644 index 00000000..a8128e57 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FaceView/Presenter/XPRoomFaceTool.h @@ -0,0 +1,36 @@ +// +// YMRoomFaceTool.h +// YUMI +// +// Created by YUMI on 2022/3/9. +// 下载表情的工具 只是下载 不做其他的任何处理 + +#import + +NS_ASSUME_NONNULL_BEGIN +@class RoomFaceInfoModel; +@interface XPRoomFaceTool : NSObject ++ (instancetype)shareFaceTool; +///判断和本地的versio是否相同 +@property (nonatomic,copy) NSString *version; +///解压的地址MD5 +@property (nonatomic,copy) NSString *zipMd5; +///资源所在的地址 +@property (nonatomic,copy) NSString *zipUrl; +///解压缩之后 表情资源所在的位置 这个有值的时候才会有表情 如果没值 请使用的时候下载 +@property (nonatomic,copy,readonly) NSString *faceDirectory; +///下载表情数据 +- (void)downFaceData; +///下载表情数据 带完成的 +- (void)downFaceDataCompletion:(nullable void(^)(NSString * path))completion; +///保存一份表情信息 +- (void)saveFaceInfoList:(NSDictionary *)faceDic; + +//查找图片 +- (UIImage *)findFaceImageById:(NSInteger)faceId index:(NSInteger)index; +/// 通过faceid 查找本地的表情信息 +/// @param faceId faceId +- (RoomFaceInfoModel *)findFaceInfoById:(NSInteger)faceId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FaceView/Presenter/XPRoomFaceTool.m b/YuMi/Modules/YMRoom/View/FaceView/Presenter/XPRoomFaceTool.m new file mode 100644 index 00000000..894c1f16 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FaceView/Presenter/XPRoomFaceTool.m @@ -0,0 +1,257 @@ +// +// YMRoomFaceTool.m +// YUMI +// +// Created by YUMI on 2022/3/9. +// + +#import "XPRoomFaceTool.h" +#import +#import +#import +#import "NSObject+MJExtension.h" +#import "RoomFaceInfoModel.h" +#import "NSArray+Safe.h" +#define FileHashDefaultChunkSizeForReadingData 1024*8 // 8K + +NSString * const kRoomFaceVersion = @"kRoomFaceVersion"; + +@interface XPRoomFaceTool () +///解压缩之后 表情资源所在的位置 +@property (nonatomic,copy) NSString *faceDirectory; +///重试的次数 +@property (nonatomic,assign) NSInteger retryCount; +///表情信息 +@property (nonatomic,strong) NSArray *faceInfoList; +@end + +@implementation XPRoomFaceTool + ++ (instancetype)shareFaceTool { + static dispatch_once_t onceToken; + static XPRoomFaceTool * tool; + dispatch_once(&onceToken, ^{ + tool = [[XPRoomFaceTool alloc] init]; + tool.retryCount = 0; + }); + return tool; +} + +- (void)downFaceData { + [self downFaceDataCompletion:nil]; +} + +- (void)downFaceDataCompletion:(nullable void (^)(NSString * nullable))completion { + //获取沙盒doucument路径 + NSArray*pathsss =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); + NSString *documentsDirectory = [pathsss safeObjectAtIndex1:0]; + NSString*faceDirectory = [documentsDirectory stringByAppendingPathComponent:@"Face"]; + ///首先判断 本地的数据是否 需要更新了 + NSString *version = [[NSUserDefaults standardUserDefaults]objectForKey: kRoomFaceVersion]; + if (version == nil || version.integerValue < self.version.integerValue) {///本地没有保存的话 就走下载 + if (self.zipUrl.length > 0 && [self.zipUrl hasPrefix:@"http"]) { + NSURL *URL = [NSURL URLWithString:self.zipUrl]; + NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; + AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration]; + //请求 + NSURLRequest *request = [NSURLRequest requestWithURL:URL]; + //下载Task操作 + [[manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) { + + } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) { + //要求返回一个URL, 返回的这个URL就是文件的位置的路径 + NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]; + NSString *path = [cachesPath stringByAppendingPathComponent:response.suggestedFilename]; + return [NSURL fileURLWithPath:path]; + } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) { + if (error == nil) { + NSString *filePathStr = [filePath path]; + NSString *fileMD5Str = [self getFileMD5WithPath:filePathStr]; + fileMD5Str = [fileMD5Str uppercaseString]; + if (![self.zipMd5 isEqualToString:fileMD5Str]) { //MD5校验 如果不相等就重新下载 + [self performSelector:@selector(downFaceData) withObject:nil afterDelay:3]; + }else { + // filePath就是你下载文件的位置,你可以解压,也可以直接拿来使用 + NSString *imgFilePath = [filePath path]; + NSLog(@"img == %@", imgFilePath); + NSString *zipPath = imgFilePath; + NSFileManager *fileManager = [NSFileManager defaultManager]; + //删除老的数据 + [[NSFileManager defaultManager] removeItemAtPath:faceDirectory error:nil]; + [fileManager createDirectoryAtPath:faceDirectory withIntermediateDirectories:YES attributes:nil error:nil]; + NSLog(@"test == %@",faceDirectory); //解压后的路径 + dispatch_async(dispatch_get_global_queue(0, 0), ^{ + //解压 + [SSZipArchive unzipFileAtPath:zipPath toDestination:faceDirectory overwrite:YES password:nil progressHandler:^(NSString * _Nonnull entry, unz_file_info zipInfo, long entryNumber, long total) { + + } completionHandler:^(NSString * _Nonnull path, BOOL succeeded, NSError * _Nullable error) { + if (error == nil) { + self.retryCount = 0; + ///如果解压完成的话 就保存一下值 + [[NSUserDefaults standardUserDefaults]setObject:self.version forKey:kRoomFaceVersion]; + self.faceDirectory = faceDirectory; + if (completion) { + completion(faceDirectory); + } + } else { + self.retryCount ++; + if (self.retryCount <=10) { + [self downFaceData]; + } + if (completion) { + completion(nil); + } + } + }]; + }); + } + } else { + self.retryCount ++; + if (self.retryCount <=10) { + [self downFaceData]; + } + if (completion) { + completion(nil); + } + } + + }] resume]; + } else { + if (completion) { + completion(nil); + } + } + } else { + self.faceDirectory = faceDirectory; + if (completion) { + completion(faceDirectory); + } + } +} + + +/// 保存表情信息 +/// @param faceDic 初始化中的表情信息 +- (void)saveFaceInfoList:(NSDictionary *)faceDic { + self.faceInfoList = nil; + NSArray * normalArray = [RoomFaceInfoModel modelsWithArray:faceDic[@"faces"]]; + NSArray * vipFaceArray = [RoomFaceInfoModel modelsWithArray:faceDic[@"vipFaces"]]; + NSMutableArray * array = [NSMutableArray array]; + [array addObjectsFromArray:normalArray]; + [array addObjectsFromArray:vipFaceArray]; + self.faceInfoList = array.copy; +} + + +/// 通过faceid 查找本地的表情信息 +/// @param faceId faceId +- (RoomFaceInfoModel *)findFaceInfoById:(NSInteger)faceId{ + for (int i = 0; i < self.faceInfoList.count; i++) { + RoomFaceInfoModel *faceInfo = self.faceInfoList[i]; + if (faceInfo.fid == faceId) { + return faceInfo; + } + } + return nil; +} + +//查找图片 +- (UIImage *)findFaceImageById:(NSInteger)faceId index:(NSInteger)index { + if (self.faceDirectory) { + RoomFaceInfoModel * faceInfo =[self findFaceInfoById:faceId]; + NSString *faceName = [NSString stringWithFormat:@"%@_%ld_%ld",faceInfo.pinyin,faceInfo.fid,index]; + NSString *dirName = [NSString stringWithFormat:@"%@_%ld",faceInfo.pinyin,faceInfo.fid]; + NSString *targetPath = [NSString stringWithFormat:@"%@/%@/%@",self.faceDirectory,dirName,faceName]; + UIImage * faceImage = [UIImage imageWithContentsOfFile:targetPath]; + return faceImage; + } + return nil; +} + + +- (NSString*)getFileMD5WithPath:(NSString*)path { + return (__bridge NSString *)FileMD5HashCreateWithPath((__bridge CFStringRef)path,FileHashDefaultChunkSizeForReadingData); +} + +CFStringRef FileMD5HashCreateWithPath(CFStringRef filePath, + size_t chunkSizeForReadingData) { + + // Declare needed variables + CFStringRef result = NULL; + CFReadStreamRef readStream = NULL; + + // Get the file URL + CFURLRef fileURL = + CFURLCreateWithFileSystemPath(kCFAllocatorDefault, + (CFStringRef)filePath, + kCFURLPOSIXPathStyle, + (Boolean)false); + + CC_MD5_CTX hashObject; + bool hasMoreData = true; + bool didSucceed; + + if (!fileURL) goto done; + + // Create and open the read stream + readStream = CFReadStreamCreateWithFile(kCFAllocatorDefault, + (CFURLRef)fileURL); + if (!readStream) goto done; + didSucceed = (bool)CFReadStreamOpen(readStream); + if (!didSucceed) goto done; + + // Initialize the hash object + CC_MD5_Init(&hashObject); + + // Make sure chunkSizeForReadingData is valid + if (!chunkSizeForReadingData) { + chunkSizeForReadingData = FileHashDefaultChunkSizeForReadingData; + } + + // Feed the data to the hash object + while (hasMoreData) { + uint8_t buffer[chunkSizeForReadingData]; + CFIndex readBytesCount = CFReadStreamRead(readStream, + (UInt8 *)buffer, + (CFIndex)sizeof(buffer)); + if (readBytesCount == -1)break; + if (readBytesCount == 0) { + hasMoreData =false; + continue; + } + CC_MD5_Update(&hashObject,(const void *)buffer,(CC_LONG)readBytesCount); + } + + // Check if the read operation succeeded + didSucceed = !hasMoreData; + + // Compute the hash digest + unsigned char digest[CC_MD5_DIGEST_LENGTH]; + CC_MD5_Final(digest, &hashObject); + + // Abort if the read operation failed + if (!didSucceed) goto done; + + // Compute the string result + char hash[2 *sizeof(digest) + 1]; + for (size_t i =0; i < sizeof(digest); ++i) { + snprintf(hash + (2 * i),3, "%02x", (int)(digest[i])); + } + result = CFStringCreateWithCString(kCFAllocatorDefault, + (const char *)hash, + kCFStringEncodingUTF8); + +done: + + if (readStream) { + CFReadStreamClose(readStream); + CFRelease(readStream); + } + if (fileURL) { + CFRelease(fileURL); + } + return result; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/FaceView/Presenter/YUMIChamberAcceptExternalizer.h b/YuMi/Modules/YMRoom/View/FaceView/Presenter/YUMIChamberAcceptExternalizer.h deleted file mode 100644 index 86fe463e..00000000 --- a/YuMi/Modules/YMRoom/View/FaceView/Presenter/YUMIChamberAcceptExternalizer.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMRoomFacePresenter.h -// YUMI -// -// Created by YUMI on 2022/3/9. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberAcceptExternalizer : BaseMvpExternalizer -- (void)getUserInfo; -- (void)acquireChamberOrdinaryAccept; -- (void)acquireChamberNobelAccept; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FaceView/Presenter/YUMIChamberAcceptExternalizer.m b/YuMi/Modules/YMRoom/View/FaceView/Presenter/YUMIChamberAcceptExternalizer.m deleted file mode 100644 index 74432a7b..00000000 --- a/YuMi/Modules/YMRoom/View/FaceView/Presenter/YUMIChamberAcceptExternalizer.m +++ /dev/null @@ -1,89 +0,0 @@ -// -// YMRoomFacePresenter.m -// YUMI -// -// Created by YUMI on 2022/3/9. -// - -#import "YUMIChamberAcceptExternalizer.h" -#import "Api.h" -#import "AccountAbstractStorage.h" -#import "YUMIChamberAcceptTool.h" -#import "ClientDisposition.h" -#import "ChamberAcceptAbstractMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "FBCChamberFaceCeremony.h" -#import "NSArray+Safe.h" - -@implementation YUMIChamberAcceptExternalizer - -- (void)getUserInfo { - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - [Api getUserInfo:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ConsumerAbstractMatrix * userInfo = [ConsumerAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireConsumerAbstractAccomplishment:userInfo]; - }EvidenceChambering:YES] uid:uid]; -} - -- (void)acquireChamberOrdinaryAccept { - NSDictionary * dic = [ClientDisposition partowardsiciptowardsionDisposition].dispositionAbstract.faceInitData; - NSArray * derivationGarment = [ChamberAcceptAbstractMatrix mtowardsrixsAboutGarment:dic[@"faces"]]; - NSArray * sortGarment = [self sortAcceptAbstractsAboutacceptAbstractArr:derivationGarment]; - NSString * faceFile = [YUMIChamberAcceptTool partowardsiciptowardsionAcceptUtensil].acceptDirectory; - NSMutableArray * faceArray = [NSMutableArray array]; - for (int i = 0; i< sortGarment.count; i++) { - ChamberAcceptAbstractMatrix * acceptAbstract = [sortGarment secureGroalTowardsIndictowardsrix1:i]; - if (!acceptAbstract.isNobleFace && acceptAbstract.faceType == 1) { - NSString *faceName = [NSString stringWithFormat:@"%@_%ld_%ld",acceptAbstract.pinyin,acceptAbstract.fid,acceptAbstract.iconPos]; - NSString *dirName = [NSString stringWithFormat:@"%@_%ld",acceptAbstract.pinyin,acceptAbstract.fid]; - NSString *targetPath = [NSString stringWithFormat:@"%@/%@/%@",faceFile,dirName,faceName]; - UIImage * faceImage = [UIImage imageWithContentsOfFile:targetPath]; - if (faceImage) { - acceptAbstract.faceImage = faceImage; - } - [faceArray addObject:acceptAbstract]; - } - } - [[self acquireRegard] acquireChamberOrdinaryAcceptSttowardsementAccomplishment:faceArray]; -} - - -- (void)acquireChamberNobelAccept { - NSDictionary * dic = [ClientDisposition partowardsiciptowardsionDisposition].dispositionAbstract.faceInitData; - NSArray * derivationGarment = [ChamberAcceptAbstractMatrix mtowardsrixsAboutGarment:dic[@"vipFaces"]]; - NSArray * sortGarment = [self sortAcceptAbstractsAboutacceptAbstractArr:derivationGarment]; - NSString * faceFile = [YUMIChamberAcceptTool partowardsiciptowardsionAcceptUtensil].acceptDirectory; - NSMutableArray * faceArray = [NSMutableArray array]; - for (int i = 0; i< sortGarment.count; i++) { - ChamberAcceptAbstractMatrix * acceptAbstract = [sortGarment secureGroalTowardsIndictowardsrix1:i]; - if (acceptAbstract.faceType == 1) { - NSString *faceName = [NSString stringWithFormat:@"%@_%ld_%ld",acceptAbstract.pinyin,acceptAbstract.fid,acceptAbstract.iconPos]; - NSString *dirName = [NSString stringWithFormat:@"%@_%ld",acceptAbstract.pinyin,acceptAbstract.fid]; - NSString *targetPath = [NSString stringWithFormat:@"%@/%@/%@",faceFile,dirName,faceName]; - UIImage * faceImage = [UIImage imageWithContentsOfFile:targetPath]; - if (faceImage) { - acceptAbstract.faceImage = faceImage; - } - [faceArray addObject:acceptAbstract]; - } - } - [[self acquireRegard] acquireChamberGuruAcceptSttowardsementAccomplishment:faceArray]; - -} - -#pragma mark - Private Method -- (NSArray *)sortAcceptAbstractsAboutacceptAbstractArr:(NSArray *)faceInfoArr { - NSMutableArray *temp = [NSMutableArray array]; - NSMutableArray *temp2 = [NSMutableArray array]; - for (ChamberAcceptAbstractMatrix *item in faceInfoArr) { - if (item.resultCount <= 0) { - [temp addObject:item]; - }else { - [temp2 addObject:item]; - } - } - [temp addObjectsFromArray:temp2]; - return temp; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/FaceView/Presenter/YUMIChamberAcceptTool.h b/YuMi/Modules/YMRoom/View/FaceView/Presenter/YUMIChamberAcceptTool.h deleted file mode 100644 index 047d9ff6..00000000 --- a/YuMi/Modules/YMRoom/View/FaceView/Presenter/YUMIChamberAcceptTool.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YMRoomFaceTool.h -// YUMI -// -// Created by YUMI on 2022/3/9. -// 下载表情的工具 只是下载 不做其他的任何处理 - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ChamberAcceptAbstractMatrix; -@interface YUMIChamberAcceptTool : NSObject -+ (instancetype)partowardsiciptowardsionAcceptUtensil; -@property (nonatomic,copy) NSString *version; -@property (nonatomic,copy) NSString *zipMd5; -@property (nonatomic,copy) NSString *zipUrl; -@property (nonatomic,copy,readonly) NSString *acceptDirectory; -- (void)downAcceptTowardsoloudspeaker; -- (void)downAcceptTowardsoloudspeakerImplementtowardsion:(nullable void(^)(NSString * path))completion; -- (void)preserveAcceptAbstractSttowardsement:(NSDictionary *)faceDic; - -- (UIImage *)prohibiticoveryAcceptIndictowardseById:(NSInteger)faceId index:(NSInteger)index; -- (ChamberAcceptAbstractMatrix *)prohibiticoveryAcceptAbstractById:(NSInteger)faceId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FaceView/Presenter/YUMIChamberAcceptTool.m b/YuMi/Modules/YMRoom/View/FaceView/Presenter/YUMIChamberAcceptTool.m deleted file mode 100644 index e3b8db0e..00000000 --- a/YuMi/Modules/YMRoom/View/FaceView/Presenter/YUMIChamberAcceptTool.m +++ /dev/null @@ -1,249 +0,0 @@ -// -// YMRoomFaceTool.m -// YUMI -// -// Created by YUMI on 2022/3/9. -// - -#import "YUMIChamberAcceptTool.h" -#import -#import -#import -#import "NSObject+MJExtension.h" -#import "ChamberAcceptAbstractMatrix.h" -#import "NSArray+Safe.h" -#define FileHashDefaultChunkSizeForReadingData 1024*8 - -NSString * const kRoomFaceVersion = @"kRoomFaceVersion"; - -@interface YUMIChamberAcceptTool () -@property (nonatomic,copy) NSString *acceptDirectory; -@property (nonatomic,assign) NSInteger retryCount; -@property (nonatomic,strong) NSArray *acceptAbstractStatement; -@end - -@implementation YUMIChamberAcceptTool - -+ (instancetype)partowardsiciptowardsionAcceptUtensil { - static dispatch_once_t onceToken; - static YUMIChamberAcceptTool * tool; - dispatch_once(&onceToken, ^{ - tool = [[YUMIChamberAcceptTool alloc] init]; - tool.retryCount = 0; - }); - return tool; -} - -- (void)downAcceptTowardsoloudspeaker { - [self downAcceptTowardsoloudspeakerImplementtowardsion:nil]; -} - -- (void)downAcceptTowardsoloudspeakerImplementtowardsion:(nullable void (^)(NSString * nullable))completion { - - NSArray*pathsss =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); - NSString *documentsDirectory = [pathsss secureGroalTowardsIndictowardsrix1:0]; - NSString*acceptDirectory = [documentsDirectory stringByAppendingPathComponent:@"Face"]; - - NSString *version = [[NSUserDefaults standardUserDefaults]objectForKey: kRoomFaceVersion]; - if (version == nil || version.integerValue < self.version.integerValue) { - if (self.zipUrl.length > 0 && [self.zipUrl hasPrefix:@"http"]) { - NSURL *URL = [NSURL URLWithString:self.zipUrl]; - NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; - AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration]; - - NSURLRequest *request = [NSURLRequest requestWithURL:URL]; - - [[manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) { - - } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) { - - NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]; - NSString *path = [cachesPath stringByAppendingPathComponent:response.suggestedFilename]; - return [NSURL fileURLWithPath:path]; - } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) { - if (error == nil) { - NSString *filePathStr = [filePath path]; - NSString *fileMD5Str = [self acquireAccurtowardseMD5AboutRoute:filePathStr]; - fileMD5Str = [fileMD5Str uppercaseString]; - if (![self.zipMd5 isEqualToString:fileMD5Str]) { - [self performSelector:@selector(downAcceptTowardsoloudspeaker) withObject:nil afterDelay:3]; - }else { - - NSString *imgFilePath = [filePath path]; - NSLog(@"img == %@", imgFilePath); - NSString *zipPath = imgFilePath; - NSFileManager *fileManager = [NSFileManager defaultManager]; - - [[NSFileManager defaultManager] removeItemAtPath:acceptDirectory error:nil]; - [fileManager createDirectoryAtPath:acceptDirectory withIntermediateDirectories:YES attributes:nil error:nil]; - NSLog(@"test == %@",acceptDirectory); - dispatch_async(dispatch_get_global_queue(0, 0), ^{ - - [SSZipArchive unzipFileAtPath:zipPath toDestination:acceptDirectory overwrite:YES password:nil progressHandler:^(NSString * _Nonnull entry, unz_file_info zipInfo, long entryNumber, long total) { - - } completionHandler:^(NSString * _Nonnull path, BOOL succeeded, NSError * _Nullable error) { - if (error == nil) { - self.retryCount = 0; - - [[NSUserDefaults standardUserDefaults]setObject:self.version forKey:kRoomFaceVersion]; - self.acceptDirectory = acceptDirectory; - if (completion) { - completion(acceptDirectory); - } - } else { - self.retryCount ++; - if (self.retryCount <=10) { - [self downAcceptTowardsoloudspeaker]; - } - if (completion) { - completion(nil); - } - } - }]; - }); - } - } else { - self.retryCount ++; - if (self.retryCount <=10) { - [self downAcceptTowardsoloudspeaker]; - } - if (completion) { - completion(nil); - } - } - - }] resume]; - } else { - if (completion) { - completion(nil); - } - } - } else { - self.acceptDirectory = acceptDirectory; - if (completion) { - completion(acceptDirectory); - } - } -} - - -- (void)preserveAcceptAbstractSttowardsement:(NSDictionary *)faceDic { - self.acceptAbstractStatement = nil; - NSArray * normalArray = [ChamberAcceptAbstractMatrix mtowardsrixsAboutGarment:faceDic[@"faces"]]; - NSArray * vipFaceArray = [ChamberAcceptAbstractMatrix mtowardsrixsAboutGarment:faceDic[@"vipFaces"]]; - NSMutableArray * array = [NSMutableArray array]; - [array addObjectsFromArray:normalArray]; - [array addObjectsFromArray:vipFaceArray]; - self.acceptAbstractStatement = array.copy; -} - - -- (ChamberAcceptAbstractMatrix *)prohibiticoveryAcceptAbstractById:(NSInteger)faceId{ - for (int i = 0; i < self.acceptAbstractStatement.count; i++) { - ChamberAcceptAbstractMatrix *acceptAbstract = self.acceptAbstractStatement[i]; - if (acceptAbstract.fid == faceId) { - return acceptAbstract; - } - } - return nil; -} - -- (UIImage *)prohibiticoveryAcceptIndictowardseById:(NSInteger)faceId index:(NSInteger)index { - if (self.acceptDirectory) { - ChamberAcceptAbstractMatrix * acceptAbstract =[self prohibiticoveryAcceptAbstractById:faceId]; - NSString *faceName = [NSString stringWithFormat:@"%@_%ld_%ld",acceptAbstract.pinyin,acceptAbstract.fid,index]; - NSString *dirName = [NSString stringWithFormat:@"%@_%ld",acceptAbstract.pinyin,acceptAbstract.fid]; - NSString *targetPath = [NSString stringWithFormat:@"%@/%@/%@",self.acceptDirectory,dirName,faceName]; - UIImage * faceImage = [UIImage imageWithContentsOfFile:targetPath]; - return faceImage; - } - return nil; -} - - -- (NSString*)acquireAccurtowardseMD5AboutRoute:(NSString*)path { - return (__bridge NSString *)FileMD5HashCreateWithPath((__bridge CFStringRef)path,FileHashDefaultChunkSizeForReadingData); -} - -CFStringRef FileMD5HashCreateWithPath(CFStringRef filePath, - size_t chunkSizeForReadingData) { - - - CFStringRef result = NULL; - CFReadStreamRef readStream = NULL; - - - CFURLRef fileURL = - CFURLCreateWithFileSystemPath(kCFAllocatorDefault, - (CFStringRef)filePath, - kCFURLPOSIXPathStyle, - (Boolean)false); - - CC_MD5_CTX hashObject; - bool hasFurthaerAtoloudspeaker = true; - bool didSucceed; - - if (!fileURL) goto done; - - - readStream = CFReadStreamCreateWithFile(kCFAllocatorDefault, - (CFURLRef)fileURL); - if (!readStream) goto done; - didSucceed = (bool)CFReadStreamOpen(readStream); - if (!didSucceed) goto done; - - - CC_MD5_Init(&hashObject); - - - if (!chunkSizeForReadingData) { - chunkSizeForReadingData = FileHashDefaultChunkSizeForReadingData; - } - - - while (hasFurthaerAtoloudspeaker) { - uint8_t buffer[chunkSizeForReadingData]; - CFIndex readBytesCount = CFReadStreamRead(readStream, - (UInt8 *)buffer, - (CFIndex)sizeof(buffer)); - if (readBytesCount == -1)break; - if (readBytesCount == 0) { - hasFurthaerAtoloudspeaker =false; - continue; - } - CC_MD5_Update(&hashObject,(const void *)buffer,(CC_LONG)readBytesCount); - } - - - didSucceed = !hasFurthaerAtoloudspeaker; - - - unsigned char digest[CC_MD5_DIGEST_LENGTH]; - CC_MD5_Final(digest, &hashObject); - - - if (!didSucceed) goto done; - - - char hash[2 *sizeof(digest) + 1]; - for (size_t i =0; i < sizeof(digest); ++i) { - snprintf(hash + (2 * i),3, "%02x", (int)(digest[i])); - } - result = CFStringCreateWithCString(kCFAllocatorDefault, - (const char *)hash, - kCFStringEncodingUTF8); - -done: - - if (readStream) { - CFReadStreamClose(readStream); - CFRelease(readStream); - } - if (fileURL) { - CFRelease(fileURL); - } - return result; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/FaceView/Protocol/FBCChamberFaceCeremony.h b/YuMi/Modules/YMRoom/View/FaceView/Protocol/FBCChamberFaceCeremony.h deleted file mode 100644 index 2661e769..00000000 --- a/YuMi/Modules/YMRoom/View/FaceView/Protocol/FBCChamberFaceCeremony.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMRoomFaceProtocol.h -// YUMI -// -// Created by YUMI on 2022/3/9. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ConsumerAbstractMatrix; -@protocol FBCChamberFaceCeremony - -- (void)acquireChamberOrdinaryAcceptSttowardsementAccomplishment:(NSArray *)list; -- (void)acquireChamberGuruAcceptSttowardsementAccomplishment:(NSArray *)list; -- (void)acquireConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FaceView/Protocol/XPRoomFaceProtocol.h b/YuMi/Modules/YMRoom/View/FaceView/Protocol/XPRoomFaceProtocol.h new file mode 100644 index 00000000..ffff6740 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FaceView/Protocol/XPRoomFaceProtocol.h @@ -0,0 +1,22 @@ +// +// YMRoomFaceProtocol.h +// YUMI +// +// Created by YUMI on 2022/3/9. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class UserInfoModel; +@protocol XPRoomFaceProtocol + +///获取房间普通礼物成功 +- (void)getRoomNormalFaceListSuccess:(NSArray *)list; +///获取房间VIP礼物成功 +- (void)getRoomVipFaceListSuccess:(NSArray *)list; +///用户用户信息成功 +- (void)getUserInfoSuccess:(UserInfoModel *)userInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FaceView/View/Cell/XPRoomFaceCollectionFlowLayout.h b/YuMi/Modules/YMRoom/View/FaceView/View/Cell/XPRoomFaceCollectionFlowLayout.h new file mode 100644 index 00000000..cd9b1282 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FaceView/View/Cell/XPRoomFaceCollectionFlowLayout.h @@ -0,0 +1,16 @@ +// +// YMRoomFaceCollectionFlowLayout.h +// YUMI +// +// Created by YUMI on 2022/3/10. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomFaceCollectionFlowLayout : UICollectionViewFlowLayout + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FaceView/View/Cell/XPRoomFaceCollectionFlowLayout.m b/YuMi/Modules/YMRoom/View/FaceView/View/Cell/XPRoomFaceCollectionFlowLayout.m new file mode 100644 index 00000000..b94d8056 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FaceView/View/Cell/XPRoomFaceCollectionFlowLayout.m @@ -0,0 +1,150 @@ +// +// YMRoomFaceCollectionFlowLayout.m +// YUMI +// +// Created by YUMI on 2022/3/10. +// + +#import "XPRoomFaceCollectionFlowLayout.h" + +@interface XPRoomFaceCollectionFlowLayout () +@property (nonatomic, copy) NSMutableDictionary *sectionDic; +@property (nonatomic, strong) NSMutableArray *allAttributes; +@end + +@implementation XPRoomFaceCollectionFlowLayout +#pragma mark - life cycle +- (instancetype)init { + self = [super init]; + if (self) { + self.scrollDirection = UICollectionViewScrollDirectionHorizontal; + } + return self; +} + +#pragma mark - overload + +- (void)prepareLayout { + + [super prepareLayout]; + + _sectionDic = [NSMutableDictionary dictionary]; + self.allAttributes = [NSMutableArray array]; + //获取section的数量 + NSUInteger section = [self.collectionView numberOfSections]; + + for (int sec = 0; sec < section; sec++) { + //获取每个section的cell个数 + NSUInteger count = [self.collectionView numberOfItemsInSection:sec]; + + for (NSUInteger item = 0; item *)layoutAttributesForElementsInRect:(CGRect)rect { + + return self.allAttributes; +} + +#pragma mark - private method + +- (void)applyLayoutAttributes:(UICollectionViewLayoutAttributes *)attributes { + + if(attributes.representedElementKind != nil){ + return; + } + CGFloat minLine = self.minimumLineSpacing; + CGFloat minSpacing = self.minimumInteritemSpacing; + + //attributes 的宽度 + CGFloat itemW = attributes.frame.size.width; + //attributes 的高度 + CGFloat itemH = attributes.frame.size.height; + UIEdgeInsets sectionInsets = self.sectionInset; + //collectionView 的宽度 + CGFloat width = self.collectionView.frame.size.width; + //collectionView 的高度 + CGFloat height = self.collectionView.frame.size.height; + //每个attributes的下标值 从0开始 + NSInteger itemIndex = attributes.indexPath.item; + + CGFloat stride = (self.scrollDirection == UICollectionViewScrollDirectionHorizontal) ? width : height; + + + //获取现在的attributes是第几组 + NSInteger section = attributes.indexPath.section; + //获取每个section的item的个数 + NSInteger itemCount = [self.collectionView numberOfItemsInSection:section]; + + + CGFloat offset = section * stride; + + //计算x方向item个数 + NSInteger xCount = (width / itemW); + //计算y方向item个数 + NSInteger yCount = (height / itemH); + //计算一页总个数 + NSInteger allCount = (xCount * yCount); + //获取每个section的页数,从0开始 + NSInteger page = itemIndex / allCount; + + //余数,用来计算item的x的偏移量 + NSInteger remain = (itemIndex % xCount); + //取商,用来计算item的y的偏移量 + NSInteger merchant = (itemIndex-page*allCount)/xCount; + + + //x方向每个item的偏移量 + CGFloat xCellOffset = remain * (itemW + minLine)+ sectionInsets.left; + //y方向每个item的偏移量 + CGFloat yCellOffset = merchant * (itemH + minSpacing); + + //获取每个section中item占了几页 + NSInteger pageRe = (itemCount % allCount == 0)? (itemCount / allCount) : (itemCount / allCount) + 1; + //将每个section与pageRe对应,计算下面的位置 + [_sectionDic setValue:@(pageRe) forKey:[NSString stringWithFormat:@"%ld", section]]; + + if(self.scrollDirection == UICollectionViewScrollDirectionHorizontal) { + + NSInteger actualLo = 0; + //将每个section中的页数相加 + for (NSString *key in [_sectionDic allKeys]) { + actualLo += [_sectionDic[key] integerValue]; + } + //获取到的最后的数减去最后一组的页码数 + actualLo -= [_sectionDic[[NSString stringWithFormat:@"%ld", [_sectionDic allKeys].count-1]] integerValue]; + xCellOffset += page*width + actualLo*width; + + } else { + + yCellOffset += offset; + } + + attributes.frame = CGRectMake(xCellOffset, yCellOffset, itemW, itemH); +} + +@end diff --git a/YuMi/Modules/YMRoom/View/FaceView/View/Cell/XPRoomFaceCollectionViewCell.h b/YuMi/Modules/YMRoom/View/FaceView/View/Cell/XPRoomFaceCollectionViewCell.h new file mode 100644 index 00000000..42a028d5 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FaceView/View/Cell/XPRoomFaceCollectionViewCell.h @@ -0,0 +1,19 @@ +// +// YMRoomFaceCollectionViewCell.h +// YUMI +// +// Created by YUMI on 2022/3/9. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class RoomFaceInfoModel; +@interface XPRoomFaceCollectionViewCell : UICollectionViewCell +///贵族的等级 +@property (nonatomic,assign) NSInteger vipLevel; +///表情信息 +@property (nonatomic,strong) RoomFaceInfoModel *faceInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FaceView/View/Cell/XPRoomFaceCollectionViewCell.m b/YuMi/Modules/YMRoom/View/FaceView/View/Cell/XPRoomFaceCollectionViewCell.m new file mode 100644 index 00000000..88415056 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FaceView/View/Cell/XPRoomFaceCollectionViewCell.m @@ -0,0 +1,143 @@ +// +// YMRoomFaceCollectionViewCell.m +// YUMI +// +// Created by YUMI on 2022/3/9. +// + +#import "XPRoomFaceCollectionViewCell.h" +///Third +#import +///Tool +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" +///Model +#import "RoomFaceInfoModel.h" + +@interface XPRoomFaceCollectionViewCell () +///表情的图片 +@property (nonatomic,strong) UIImageView *faceImageView; +///表情的标题 +@property (nonatomic,strong) UILabel *faceTitleLabel; +///贵族的类型 +@property (nonatomic,strong) NetImageView *nobleTypeImageView; +///是否是贵族🔐 +@property (nonatomic,strong) UIImageView *nobleLockImageView; +///覆盖的背景 +@property (nonatomic,strong) UIView * coverView; +@end + +@implementation XPRoomFaceCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.faceImageView]; + [self.contentView addSubview:self.coverView]; + [self.contentView addSubview:self.nobleTypeImageView]; + [self.contentView addSubview:self.faceTitleLabel]; + [self.contentView addSubview:self.nobleLockImageView]; +} + +- (void)initSubViewConstraints { + [self.faceImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(60, 60)); + make.centerX.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.contentView); + }]; + + [self.coverView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.faceImageView); + }]; + + [self.nobleTypeImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(12 * 1.4); + make.height.mas_equalTo(10 * 1.4); + make.left.top.mas_equalTo(self.contentView); + }]; + + [self.faceTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.faceImageView.mas_bottom).offset(4); + }]; + + [self.nobleLockImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(11, 11)); + make.bottom.right.mas_equalTo(self.faceImageView); + }]; +} +#pragma mark - Getters And Setters +- (void)setFaceInfo:(RoomFaceInfoModel *)faceInfo { + _faceInfo = faceInfo; + if (_faceInfo) { + self.faceImageView.image = _faceInfo.faceImage; + self.faceTitleLabel.text = _faceInfo.name; + if (_faceInfo.faceVipInfo) { + self.nobleTypeImageView.imageUrl = _faceInfo.faceVipInfo.vipIcon; + self.nobleTypeImageView.hidden = NO; + if (_faceInfo.faceVipInfo.vipLevel > self.vipLevel) { + self.nobleLockImageView.hidden = NO; + } else { + self.nobleLockImageView.hidden = YES; + } + } else { + self.nobleTypeImageView.hidden = YES; + self.nobleLockImageView.hidden = YES; + } + } +} + +- (UIImageView *)faceImageView { + if (!_faceImageView) { + _faceImageView = [[UIImageView alloc] init]; + _faceImageView.userInteractionEnabled = YES; + } + return _faceImageView; +} + +- (NetImageView *)nobleTypeImageView { + if (!_nobleTypeImageView) { + _nobleTypeImageView = [[NetImageView alloc] init]; + _nobleTypeImageView.layer.masksToBounds = YES; + _nobleTypeImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _nobleTypeImageView; +} + +- (UIImageView *)nobleLockImageView { + if (!_nobleLockImageView) { + _nobleLockImageView = [[UIImageView alloc] init]; + _nobleLockImageView.image = [UIImage imageNamed:@"room_face_nobel_lock"]; + } + return _nobleLockImageView; +} + +- (UILabel *)faceTitleLabel { + if (!_faceTitleLabel) { + _faceTitleLabel = [[UILabel alloc] init]; + _faceTitleLabel.font = [UIFont systemFontOfSize:10]; + _faceTitleLabel.textColor = [UIColor whiteColor]; + _faceTitleLabel.textAlignment = NSTextAlignmentCenter; + } + return _faceTitleLabel; +} + +- (UIView *)coverView { + if (!_coverView) { + _coverView = [[UIView alloc] init]; + _coverView.backgroundColor = UIColorRGBAlpha(0x000000, 0.3); + } + return _coverView; +} + + + +@end diff --git a/YuMi/Modules/YMRoom/View/FaceView/View/Cell/XPRoomFaceTitleCollectionViewCell.h b/YuMi/Modules/YMRoom/View/FaceView/View/Cell/XPRoomFaceTitleCollectionViewCell.h new file mode 100644 index 00000000..7991fda1 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FaceView/View/Cell/XPRoomFaceTitleCollectionViewCell.h @@ -0,0 +1,16 @@ +// +// YMRoomFaceTitleCollectionViewCell.h +// YUMI +// +// Created by YUMI on 2022/3/9. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class RoomFaceTitleItemModel; +@interface XPRoomFaceTitleCollectionViewCell : UICollectionViewCell +@property (nonatomic,strong) RoomFaceTitleItemModel *titleModel; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FaceView/View/Cell/XPRoomFaceTitleCollectionViewCell.m b/YuMi/Modules/YMRoom/View/FaceView/View/Cell/XPRoomFaceTitleCollectionViewCell.m new file mode 100644 index 00000000..51f0d733 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FaceView/View/Cell/XPRoomFaceTitleCollectionViewCell.m @@ -0,0 +1,61 @@ +// +// YMRoomFaceTitleCollectionViewCell.m +// YUMI +// +// Created by YUMI on 2022/3/9. +// + +#import "XPRoomFaceTitleCollectionViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +///Model +#import "RoomFaceTitleItemModel.h" + +@interface XPRoomFaceTitleCollectionViewCell () +///标题 +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPRoomFaceTitleCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.contentView); + }]; +} +#pragma mark - Getters And Setters +- (void)setTitleModel:(RoomFaceTitleItemModel *)titleModel { + _titleModel = titleModel; + if (_titleLabel) { + self.titleLabel.text = _titleModel.title; + self.titleLabel.textColor = _titleModel.isSelect ? [DJDKMIMOMColor appMainColor] : [UIColor whiteColor]; + } +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:14]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/FaceView/View/Cell/YUMIChamberAcceptAssembletionFlowProgramming.h b/YuMi/Modules/YMRoom/View/FaceView/View/Cell/YUMIChamberAcceptAssembletionFlowProgramming.h deleted file mode 100644 index 0a9c2179..00000000 --- a/YuMi/Modules/YMRoom/View/FaceView/View/Cell/YUMIChamberAcceptAssembletionFlowProgramming.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomFaceCollectionFlowLayout.h -// YUMI -// -// Created by YUMI on 2022/3/10. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberAcceptAssembletionFlowProgramming : UICollectionViewFlowLayout - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FaceView/View/Cell/YUMIChamberAcceptAssembletionFlowProgramming.m b/YuMi/Modules/YMRoom/View/FaceView/View/Cell/YUMIChamberAcceptAssembletionFlowProgramming.m deleted file mode 100644 index 75b34987..00000000 --- a/YuMi/Modules/YMRoom/View/FaceView/View/Cell/YUMIChamberAcceptAssembletionFlowProgramming.m +++ /dev/null @@ -1,150 +0,0 @@ -// -// YMRoomFaceCollectionFlowLayout.m -// YUMI -// -// Created by YUMI on 2022/3/10. -// - -#import "YUMIChamberAcceptAssembletionFlowProgramming.h" - -@interface YUMIChamberAcceptAssembletionFlowProgramming () -@property (nonatomic, copy) NSMutableDictionary *sectionPackbask; -@property (nonatomic, strong) NSMutableArray *entiretyIdiosyncracys; -@end - -@implementation YUMIChamberAcceptAssembletionFlowProgramming -#pragma mark - life cycle -- (instancetype)init { - self = [super init]; - if (self) { - self.scrollDirection = UICollectionViewScrollDirectionHorizontal; - } - return self; -} - -#pragma mark - overload - -- (void)prepareLayout { - - [super prepareLayout]; - - _sectionPackbask = [NSMutableDictionary dictionary]; - self.entiretyIdiosyncracys = [NSMutableArray array]; - - NSUInteger section = [self.collectionView numberOfSections]; - - for (int sec = 0; sec < section; sec++) { - - NSUInteger count = [self.collectionView numberOfItemsInSection:sec]; - - for (NSUInteger item = 0; item *)layoutAttributesForElementsInRect:(CGRect)rect { - - return self.entiretyIdiosyncracys; -} - -#pragma mark - private method - -- (void)applyLayoutAttributes:(UICollectionViewLayoutAttributes *)attributes { - - if(attributes.representedElementKind != nil){ - return; - } - CGFloat minLine = self.minimumLineSpacing; - CGFloat minSpacing = self.minimumInteritemSpacing; - - - CGFloat itemW = attributes.frame.size.width; - - CGFloat itemH = attributes.frame.size.height; - UIEdgeInsets sectionInsets = self.sectionInset; - - CGFloat width = self.collectionView.frame.size.width; - - CGFloat height = self.collectionView.frame.size.height; - - NSInteger itemIndex = attributes.indexPath.item; - - CGFloat stride = (self.scrollDirection == UICollectionViewScrollDirectionHorizontal) ? width : height; - - - - NSInteger section = attributes.indexPath.section; - - NSInteger itemCount = [self.collectionView numberOfItemsInSection:section]; - - - CGFloat offset = section * stride; - - - NSInteger xCount = (width / itemW); - - NSInteger yCount = (height / itemH); - - NSInteger allCount = (xCount * yCount); - - NSInteger page = itemIndex / allCount; - - - NSInteger remain = (itemIndex % xCount); - - NSInteger merchant = (itemIndex-page*allCount)/xCount; - - - - CGFloat xCellOffset = remain * (itemW + minLine)+ sectionInsets.left; - - CGFloat yCellOffset = merchant * (itemH + minSpacing); - - - NSInteger pageRe = (itemCount % allCount == 0)? (itemCount / allCount) : (itemCount / allCount) + 1; - - [_sectionPackbask setValue:@(pageRe) forKey:[NSString stringWithFormat:@"%ld", section]]; - - if(self.scrollDirection == UICollectionViewScrollDirectionHorizontal) { - - NSInteger actualLo = 0; - - for (NSString *key in [_sectionPackbask allKeys]) { - actualLo += [_sectionPackbask[key] integerValue]; - } - - actualLo -= [_sectionPackbask[[NSString stringWithFormat:@"%ld", [_sectionPackbask allKeys].count-1]] integerValue]; - xCellOffset += page*width + actualLo*width; - - } else { - - yCellOffset += offset; - } - - attributes.frame = CGRectMake(xCellOffset, yCellOffset, itemW, itemH); -} - -@end diff --git a/YuMi/Modules/YMRoom/View/FaceView/View/Cell/YUMIChamberAcceptAssembletionRegardElement.h b/YuMi/Modules/YMRoom/View/FaceView/View/Cell/YUMIChamberAcceptAssembletionRegardElement.h deleted file mode 100644 index 472a8a4c..00000000 --- a/YuMi/Modules/YMRoom/View/FaceView/View/Cell/YUMIChamberAcceptAssembletionRegardElement.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMRoomFaceCollectionViewCell.h -// YUMI -// -// Created by YUMI on 2022/3/9. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ChamberAcceptAbstractMatrix; -@interface YUMIChamberAcceptAssembletionRegardElement : UICollectionViewCell -@property (nonatomic,assign) NSInteger vipLevel; -@property (nonatomic,strong) ChamberAcceptAbstractMatrix *acceptAbstract; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FaceView/View/Cell/YUMIChamberAcceptAssembletionRegardElement.m b/YuMi/Modules/YMRoom/View/FaceView/View/Cell/YUMIChamberAcceptAssembletionRegardElement.m deleted file mode 100644 index 260643d5..00000000 --- a/YuMi/Modules/YMRoom/View/FaceView/View/Cell/YUMIChamberAcceptAssembletionRegardElement.m +++ /dev/null @@ -1,135 +0,0 @@ -// -// YMRoomFaceCollectionViewCell.m -// YUMI -// -// Created by YUMI on 2022/3/9. -// - -#import "YUMIChamberAcceptAssembletionRegardElement.h" -#import -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "ChamberAcceptAbstractMatrix.h" - -@interface YUMIChamberAcceptAssembletionRegardElement () -@property (nonatomic,strong) UIImageView *acceptIndicateRegard; -@property (nonatomic,strong) UILabel *acceptChampionSequencignation; -@property (nonatomic,strong) NetIndicateRegard *magnificentGenreIndicateRegard; -@property (nonatomic,strong) UIImageView *magnificentSpokeIndicateRegard; -@property (nonatomic,strong) UIView * coverView; -@end - -@implementation YUMIChamberAcceptAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.acceptIndicateRegard]; - [self.contentView addSubview:self.coverView]; - [self.contentView addSubview:self.magnificentGenreIndicateRegard]; - [self.contentView addSubview:self.acceptChampionSequencignation]; - [self.contentView addSubview:self.magnificentSpokeIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.acceptIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(60, 60)); - make.centerX.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.contentView); - }]; - - [self.coverView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.acceptIndicateRegard); - }]; - - [self.magnificentGenreIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(12 * 1.4); - make.height.mas_equalTo(10 * 1.4); - make.left.top.mas_equalTo(self.contentView); - }]; - - [self.acceptChampionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.acceptIndicateRegard.mas_bottom).offset(4); - }]; - - [self.magnificentSpokeIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(11, 11)); - make.bottom.right.mas_equalTo(self.acceptIndicateRegard); - }]; -} -#pragma mark - Getters And Setters -- (void)setAcceptAbstract:(ChamberAcceptAbstractMatrix *)acceptAbstract { - _acceptAbstract = acceptAbstract; - if (_acceptAbstract) { - self.acceptIndicateRegard.image = _acceptAbstract.faceImage; - self.acceptChampionSequencignation.text = _acceptAbstract.name; - if (_acceptAbstract.faceVipInfo) { - self.magnificentGenreIndicateRegard.imageUrl = _acceptAbstract.faceVipInfo.vipIcon; - self.magnificentGenreIndicateRegard.hidden = NO; - if (_acceptAbstract.faceVipInfo.vipLevel > self.vipLevel) { - self.magnificentSpokeIndicateRegard.hidden = NO; - } else { - self.magnificentSpokeIndicateRegard.hidden = YES; - } - } else { - self.magnificentGenreIndicateRegard.hidden = YES; - self.magnificentSpokeIndicateRegard.hidden = YES; - } - } -} - -- (UIImageView *)acceptIndicateRegard { - if (!_acceptIndicateRegard) { - _acceptIndicateRegard = [[UIImageView alloc] init]; - _acceptIndicateRegard.userInteractionEnabled = YES; - } - return _acceptIndicateRegard; -} - -- (NetIndicateRegard *)magnificentGenreIndicateRegard { - if (!_magnificentGenreIndicateRegard) { - _magnificentGenreIndicateRegard = [[NetIndicateRegard alloc] init]; - _magnificentGenreIndicateRegard.layer.masksToBounds = YES; - _magnificentGenreIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _magnificentGenreIndicateRegard; -} - -- (UIImageView *)magnificentSpokeIndicateRegard { - if (!_magnificentSpokeIndicateRegard) { - _magnificentSpokeIndicateRegard = [[UIImageView alloc] init]; - _magnificentSpokeIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_face_nobel_lock"]; - } - return _magnificentSpokeIndicateRegard; -} - -- (UILabel *)acceptChampionSequencignation { - if (!_acceptChampionSequencignation) { - _acceptChampionSequencignation = [[UILabel alloc] init]; - _acceptChampionSequencignation.font = [UIFont systemFontOfSize:10]; - _acceptChampionSequencignation.textColor = [UIColor whiteColor]; - _acceptChampionSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _acceptChampionSequencignation; -} - -- (UIView *)coverView { - if (!_coverView) { - _coverView = [[UIView alloc] init]; - _coverView.backgroundColor = UIColorRGBAlpha(0x000000, 0.3); - } - return _coverView; -} - - - -@end diff --git a/YuMi/Modules/YMRoom/View/FaceView/View/Cell/YUMIChamberAcceptChampionAssembletionRegardElement.h b/YuMi/Modules/YMRoom/View/FaceView/View/Cell/YUMIChamberAcceptChampionAssembletionRegardElement.h deleted file mode 100644 index c1902f76..00000000 --- a/YuMi/Modules/YMRoom/View/FaceView/View/Cell/YUMIChamberAcceptChampionAssembletionRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomFaceTitleCollectionViewCell.h -// YUMI -// -// Created by YUMI on 2022/3/9. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ChamberAcceptChampionProvisionMatrix; -@interface YUMIChamberAcceptChampionAssembletionRegardElement : UICollectionViewCell -@property (nonatomic,strong) ChamberAcceptChampionProvisionMatrix *championMatrix; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FaceView/View/Cell/YUMIChamberAcceptChampionAssembletionRegardElement.m b/YuMi/Modules/YMRoom/View/FaceView/View/Cell/YUMIChamberAcceptChampionAssembletionRegardElement.m deleted file mode 100644 index e9492ec4..00000000 --- a/YuMi/Modules/YMRoom/View/FaceView/View/Cell/YUMIChamberAcceptChampionAssembletionRegardElement.m +++ /dev/null @@ -1,57 +0,0 @@ -// -// YMRoomFaceTitleCollectionViewCell.m -// YUMI -// -// Created by YUMI on 2022/3/9. -// - -#import "YUMIChamberAcceptChampionAssembletionRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "ChamberAcceptChampionProvisionMatrix.h" - -@interface YUMIChamberAcceptChampionAssembletionRegardElement () -@property (nonatomic,strong) UILabel *titleLabel; -@end - -@implementation YUMIChamberAcceptChampionAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.contentView); - }]; -} -#pragma mark - Getters And Setters -- (void)setChampionMatrix:(ChamberAcceptChampionProvisionMatrix *)championMatrix { - _championMatrix = championMatrix; - if (_titleLabel) { - self.titleLabel.text = _championMatrix.title; - self.titleLabel.textColor = _championMatrix.isSelect ? [DJDKMIMOMColor aplictowardsionMainPrettify] : [UIColor whiteColor]; - } -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:14]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/FaceView/View/XPRoomFaceViewController.h b/YuMi/Modules/YMRoom/View/FaceView/View/XPRoomFaceViewController.h new file mode 100644 index 00000000..f9eacfed --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FaceView/View/XPRoomFaceViewController.h @@ -0,0 +1,16 @@ +// +// YMRoomFaceViewController.h +// YUMI +// +// Created by YUMI on 2022/3/9. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN +@interface XPRoomFaceViewController : MvpViewController +///房间的id +@property (nonatomic,copy) NSString *roomId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FaceView/View/XPRoomFaceViewController.m b/YuMi/Modules/YMRoom/View/FaceView/View/XPRoomFaceViewController.m new file mode 100644 index 00000000..068b474f --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FaceView/View/XPRoomFaceViewController.m @@ -0,0 +1,470 @@ +// +// YMRoomFaceViewController.m +// YUMI +// +// Created by YUMI on 2022/3/9. +// + +#import "XPRoomFaceViewController.h" +///Third +#import +///Tool +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "XPRoomFaceTool.h" +#import "TTPopup.h" +#import "NSArray+Safe.h" +///Model +#import "RoomFaceTitleItemModel.h" +#import "RoomFaceInfoModel.h" +#import "UserInfoModel.h" +#import "RoomFaceSendInfoModel.h" +#import "AttachmentModel.h" +///View +#import "XPRoomFaceCollectionViewCell.h" +#import "XPRoomFaceTitleCollectionViewCell.h" +#import "XPRoomFaceCollectionFlowLayout.h" +///P +#import "XPRoomFacePresenter.h" +#import "XPRoomFaceProtocol.h" + +@interface XPRoomFaceViewController () +///顶部的View +@property (nonatomic,strong) UIView * topView; +///显示的内容 +@property (nonatomic,strong) UIView * contentView; +///蒙版 +@property (nonatomic,strong) UIVisualEffectView *effectView; +///最外层的容器 +@property (nonatomic,strong) UIStackView *stackView; +///标题的容器 +@property (nonatomic,strong) UIStackView *titleStackView; +///列表 +@property (nonatomic,strong) UICollectionView *titleCollectionView; +///贵族特权 +@property (nonatomic,strong) UIButton *noblePrivilButton; +///列表 +@property (nonatomic,strong) UICollectionView *faceCollectionView; +///分页控件 +@property (nonatomic, strong) UIPageControl *pageView; +///滑块的内容 +@property (nonatomic,strong) NSArray *titleList; +///当前选中的 +@property (nonatomic,strong) RoomFaceTitleItemModel *selectTitleItem; +///表情 +@property (nonatomic,strong) NSArray *faceList; +///贵族表情 +@property (nonatomic,strong) NSArray *nobelFaceList; +///用户信息 +@property (nonatomic,strong) UserInfoModel *userInfo; +@end + +@implementation XPRoomFaceViewController + +- (XPRoomFacePresenter *)createPresenter { + return [[XPRoomFacePresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initData]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initData { + [self.presenter getUserInfo]; + if ([XPRoomFaceTool shareFaceTool].faceDirectory) { + [self.presenter getRoomNormalFace]; + [self.presenter getRoomNobelFace]; + } else { + [self showLoading]; + [[XPRoomFaceTool shareFaceTool] downFaceDataCompletion:^(NSString * _Nonnull path) { + [self hideHUD]; + if (path.length > 0) { + [self.presenter getRoomNormalFace]; + [self.presenter getRoomNobelFace]; + } else { + [self showErrorToast:YMLocalizedString(@"XPRoomFaceViewController0")]; + } + }]; + } +} + +- (void)initSubViews { + self.view.backgroundColor = [UIColor clearColor]; + [self.view addSubview:self.topView]; + [self.view addSubview:self.contentView]; + + [self.contentView addSubview:self.stackView]; + + [self.stackView addArrangedSubview:self.titleStackView]; + [self.stackView addArrangedSubview:self.faceCollectionView]; + [self.stackView addArrangedSubview:self.pageView]; + + [self.titleStackView addArrangedSubview:self.titleCollectionView]; + [self.titleStackView addArrangedSubview:self.noblePrivilButton]; + self.selectTitleItem = [self.titleList firstObject]; +} + +- (void)initSubViewConstraints { + [self.topView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.contentView.mas_bottom); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.left.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.view); + make.height.mas_equalTo(self.stackView).offset(42 + kSafeAreaBottomHeight); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + make.top.mas_equalTo(self.contentView); + }]; + + + [self.titleStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(53); + }]; + + [self.pageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(10); + }]; + + CGFloat itemHeight = (CGFloat)(KScreenWidth - 15 * 2 - 10 * 4) / (CGFloat)5 + 20; + CGFloat collectionViewHeight = itemHeight * 3 + 10 * 2; + [self.faceCollectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(collectionViewHeight); + }]; + + + [self.noblePrivilButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(84, 26)); + }]; + + [self.titleCollectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(28); + }]; +} + +- (void)updatePageViewState:(NSArray *)array { + NSInteger page = 0; + if (array.count % 15 == 0) { //刚好满页 + page = array.count / 15; + } else { + page = array.count / 15 + 1; + } + [self.pageView setNumberOfPages:page]; + self.pageView.currentPage = 0; +} + +- (void)sendFaceCustomMessage:(RoomFaceInfoModel *)faceInfo { + RoomFaceSendInfoModel *sendInfo = [[RoomFaceSendInfoModel alloc]init]; + NSMutableArray *resultIndexs = [NSMutableArray array]; + if (faceInfo.resultStartPos > 0 && faceInfo.resultEndPos > 0) { + int value; + if (faceInfo.canResultRepeat) { //结果可以重复 + for (int i = 0; i < faceInfo.resultCount; i++) { + value = [self getRandomNumber:(short)faceInfo.resultStartPos to:(short)faceInfo.resultEndPos]; + [resultIndexs addObject:@(value)]; + sendInfo.resultIndexes = [resultIndexs copy]; + } + + }else { + sendInfo.resultIndexes = [[self randomArray:(short)faceInfo.resultStartPos to:(short)faceInfo.resultEndPos count:(short)faceInfo.resultCount] mutableCopy]; + } + + } + NSMutableArray *faceRecieveInfos = [NSMutableArray array]; + sendInfo.nick = self.userInfo.nick; + sendInfo.faceId = faceInfo.fid; + sendInfo.uid = self.userInfo.uid; + [faceRecieveInfos addObject:sendInfo.model2dictionary]; + + AttachmentModel * attachment = [[AttachmentModel alloc] init]; + attachment.first = CustomMessageType_Face; + attachment.second = Custom_Message_Sub_Face_Send; + NSDictionary * dic = @{@"data":faceRecieveInfos, @"uid": @(self.userInfo.uid)}; + attachment.data = dic; + NSString *sessionID = self.roomId; + NIMMessage *message = [[NIMMessage alloc]init]; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachment; + message.messageObject = object; + //构造会话 + NIMSession *session = [NIMSession session:sessionID type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; + [self dismissViewControllerAnimated:YES completion:nil]; +} + +/// 生成随机数 +/// @param from 最小值 +/// @param to 最大值 +- (int)getRandomNumber:(int)from to:(int)to { + return (int)(from + (arc4random() % (to - from + 1))); +} + +/// 生成固定区间的不重复随机数 +/// @param from 最小值 +/// @param to 最大值 +- (NSArray *)randomArray:(int)from to:(int)to count:(int)count { + + //随机数从这里边产生 + NSMutableArray *startArray= [NSMutableArray array]; + for (int i = from; i <= to; i++) { + [startArray addObject:@(i)]; + } + //随机数产生结果 + NSMutableArray *resultArray=[[NSMutableArray alloc] initWithCapacity:0]; + //随机数个数 + NSInteger m = count; + for (int i=0; i 0) { + [startArray removeLastObject]; + } + } + return resultArray; +} + + +#pragma mark - scrollviewdelegate +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + CGFloat offX = scrollView.contentOffset.x; + CGFloat width = CGRectGetWidth(scrollView.frame); + self.pageView.currentPage = ceilf(offX/width); +} + +#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + if (collectionView == self.titleCollectionView) { + RoomFaceTitleItemModel * itemModel = [self.titleList safeObjectAtIndex1:indexPath.row]; + CGSize size = [itemModel.title boundingRectWithSize:CGSizeMake(100, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingTruncatesLastVisibleLine + attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13]} context:nil].size; + return CGSizeMake(size.width + 10, size.height); + } + CGFloat itemWidth = (CGFloat)(KScreenWidth - 15 * 2 - 10 * 4) / (CGFloat)5; + return CGSizeMake(itemWidth, itemWidth + 20); +} + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + if (collectionView == self.titleCollectionView) { + return self.titleList.count; + } + return self.selectTitleItem.faceType == RoomFaceTitleItemType_Normal? self.faceList.count : self.nobelFaceList.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + if (collectionView == self.titleCollectionView) { + XPRoomFaceTitleCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPRoomFaceTitleCollectionViewCell class]) forIndexPath:indexPath]; + RoomFaceTitleItemModel * model = [self.titleList safeObjectAtIndex1:indexPath.item]; + if (model == self.selectTitleItem) { + model.isSelect = YES; + } else { + model.isSelect = NO; + } + cell.titleModel = model; + return cell; + } + + XPRoomFaceCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPRoomFaceCollectionViewCell class]) forIndexPath:indexPath]; + RoomFaceInfoModel * faceInfo; + if (self.selectTitleItem.faceType == RoomFaceTitleItemType_Normal) { + faceInfo = [self.faceList safeObjectAtIndex1:indexPath.row]; + } else { + faceInfo = [self.nobelFaceList safeObjectAtIndex1:indexPath.row]; + } + cell.vipLevel = self.userInfo.userVipInfoVO.vipLevel; + cell.faceInfo =faceInfo; + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + if (collectionView == self.titleCollectionView) { + RoomFaceTitleItemModel * titleModel = [self.titleList safeObjectAtIndex1:indexPath.row]; + self.selectTitleItem = titleModel; + [self.titleCollectionView reloadData]; + NSArray * list = titleModel.faceType == RoomFaceTitleItemType_Normal ? self.faceList : self.nobelFaceList; + [self updatePageViewState:list]; + [self.faceCollectionView reloadData]; + } else { + if (self.selectTitleItem.faceType == RoomFaceTitleItemType_Normal) { + RoomFaceInfoModel * faceInfo = [self.faceList safeObjectAtIndex1:indexPath.row]; + [self sendFaceCustomMessage:faceInfo]; + } else { + if (indexPath.row < self.nobelFaceList.count) { + RoomFaceInfoModel * faceInfo = [self.nobelFaceList safeObjectAtIndex1:indexPath.row]; + if (faceInfo.faceVipInfo.vipLevel > self.userInfo.userVipInfoVO.vipLevel) { + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.message = [NSString stringWithFormat:@"尚未达到发送%@所需贵族等级,\n 所需贵族等级:%@", faceInfo.name,faceInfo.faceVipInfo.vipName]; + config.actionStyle = TTAlertActionConfirmStyle; + [TTPopup alertWithConfig:config confirmHandler:^{ + + } cancelHandler:^{ + + }]; + } else { + [self sendFaceCustomMessage:faceInfo]; + } + } + } + } +} + +#pragma mark - XPRoomFaceProtocol +- (void)getRoomNormalFaceListSuccess:(NSArray *)list { + self.faceList = list; + [self updatePageViewState:list]; + [self.faceCollectionView reloadData]; +} + +- (void)getRoomVipFaceListSuccess:(NSArray *)list { + self.nobelFaceList = list; + [self.faceCollectionView reloadData]; +} + +- (void)getUserInfoSuccess:(UserInfoModel *)userInfo { + self.userInfo = userInfo; + [self.faceCollectionView reloadData]; +} +#pragma mark - Event Response +- (void)noblePrivilButtonAction:(UIButton *)sender { + [self dismissViewControllerAnimated:YES completion:nil]; + return; +// XPNobleCenterViewController * nobleCenter = [[XPNobleCenterViewController alloc] init]; +// [((UINavigationController *)self.presentingViewController) pushViewController:nobleCenter animated:YES]; +} + +- (void)disMissViewRecognizer { + [self dismissViewControllerAnimated:YES completion:nil]; +} + +#pragma mark - Getters And Setters +- (UIView *)topView { + if (!_topView) { + _topView = [[UIView alloc] init]; + _topView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.3]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(disMissViewRecognizer)]; + [_topView addGestureRecognizer:tap]; + } + return _topView; +} + +- (UIView *)contentView { + if (!_contentView) { + _contentView = [[UIView alloc] init]; + _contentView.backgroundColor = UIColorFromRGB(0x0D0C11); + } + return _contentView; +} + +- (UIVisualEffectView *)effectView { + if (!_effectView) { + UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; + _effectView = [[UIVisualEffectView alloc]initWithEffect:effect]; + _effectView.alpha = 1; + } + return _effectView; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing =10; + } + return _stackView; +} + +- (UIStackView *)titleStackView { + if (!_titleStackView) { + _titleStackView = [[UIStackView alloc] init]; + _titleStackView.axis = UILayoutConstraintAxisHorizontal; + _titleStackView.distribution = UIStackViewDistributionFill; + _titleStackView.alignment = UIStackViewAlignmentBottom; + _titleStackView.spacing = 10; + CAShapeLayer * layer = [CAShapeLayer layer]; + UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, 53) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)]; + layer.path = path.CGPath; + _titleStackView.layer.masksToBounds = YES; + _titleStackView.layer.mask = layer;; + } + return _titleStackView; +} + +- (UIButton *)noblePrivilButton { + if (!_noblePrivilButton) { + _noblePrivilButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_noblePrivilButton setImage:[UIImage imageNamed:@"room_face_nobel_privil"] forState:UIControlStateNormal]; + [_noblePrivilButton setImage:[UIImage imageNamed:@"room_face_nobel_privil"] forState:UIControlStateSelected]; + [_noblePrivilButton addTarget:self action:@selector(noblePrivilButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _noblePrivilButton.hidden = YES; + [_noblePrivilButton setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + } + return _noblePrivilButton; +} + + +- (UICollectionView *)titleCollectionView{ + if (!_titleCollectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + layout.minimumLineSpacing = 15; + _titleCollectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _titleCollectionView.dataSource = self; + _titleCollectionView.delegate = self; + _titleCollectionView.backgroundColor = [UIColor clearColor]; + [_titleCollectionView registerClass:[XPRoomFaceTitleCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPRoomFaceTitleCollectionViewCell class])]; + } + return _titleCollectionView; +} + +- (UICollectionView *)faceCollectionView{ + if (!_faceCollectionView) { + XPRoomFaceCollectionFlowLayout *layout = [[XPRoomFaceCollectionFlowLayout alloc] init]; + layout.minimumLineSpacing = 10; + layout.minimumInteritemSpacing = 10; + layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0); + _faceCollectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _faceCollectionView.dataSource = self; + _faceCollectionView.delegate = self; + _faceCollectionView.backgroundColor = [UIColor clearColor]; + _faceCollectionView.pagingEnabled = YES; + [_faceCollectionView registerClass:[XPRoomFaceCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPRoomFaceCollectionViewCell class])]; + } + return _faceCollectionView; +} + +- (UIPageControl *)pageView { + if (!_pageView) { + _pageView = [[UIPageControl alloc] init]; + _pageView.currentPageIndicatorTintColor = [UIColor whiteColor]; + } + return _pageView; +} + +- (NSArray *)titleList { + if (!_titleList) { + RoomFaceTitleItemModel * normalItem = [[RoomFaceTitleItemModel alloc] init]; + normalItem.title= YMLocalizedString(@"XPRoomFaceViewController2"); + normalItem.isSelect = YES; + normalItem.faceType = RoomFaceTitleItemType_Normal; + + RoomFaceTitleItemModel * nobelItem = [[RoomFaceTitleItemModel alloc] init]; + nobelItem.title= YMLocalizedString(@"XPRoomFaceViewController3"); + nobelItem.isSelect = NO; + nobelItem.faceType = RoomFaceTitleItemType_Nobel; + _titleList = @[normalItem, nobelItem]; + } + return _titleList; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/FaceView/View/YUMIChamberAcceptRegardGovernancer.h b/YuMi/Modules/YMRoom/View/FaceView/View/YUMIChamberAcceptRegardGovernancer.h deleted file mode 100644 index ee34eafd..00000000 --- a/YuMi/Modules/YMRoom/View/FaceView/View/YUMIChamberAcceptRegardGovernancer.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// YMRoomFaceViewController.h -// YUMI -// -// Created by YUMI on 2022/3/9. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN -@interface YUMIChamberAcceptRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,copy) NSString *roomId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FaceView/View/YUMIChamberAcceptRegardGovernancer.m b/YuMi/Modules/YMRoom/View/FaceView/View/YUMIChamberAcceptRegardGovernancer.m deleted file mode 100644 index ba8c7ff1..00000000 --- a/YuMi/Modules/YMRoom/View/FaceView/View/YUMIChamberAcceptRegardGovernancer.m +++ /dev/null @@ -1,443 +0,0 @@ -// -// YMRoomFaceViewController.m -// YUMI -// -// Created by YUMI on 2022/3/9. -// - -#import "YUMIChamberAcceptRegardGovernancer.h" -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "YUMIChamberAcceptTool.h" -#import "MKJPopup.h" -#import "NSArray+Safe.h" -#import "ChamberAcceptChampionProvisionMatrix.h" -#import "ChamberAcceptAbstractMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "ChamberAcceptDischargeAbstractMatrix.h" -#import "AttachmentMatrix.h" -#import "YUMIChamberAcceptAssembletionRegardElement.h" -#import "YUMIChamberAcceptChampionAssembletionRegardElement.h" -#import "YUMIChamberAcceptAssembletionFlowProgramming.h" -#import "YUMIChamberAcceptExternalizer.h" -#import "FBCChamberFaceCeremony.h" - -@interface YUMIChamberAcceptRegardGovernancer () -@property (nonatomic,strong) UIView * apexRegard; -@property (nonatomic,strong) UIView * contentView; -@property (nonatomic,strong) UIVisualEffectView *impressionRegard; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UIStackView *championHierarchyRegard; -@property (nonatomic,strong) UICollectionView *championAssembletionRegard; -@property (nonatomic,strong) UIButton *magnificentPrivilBtuton; -@property (nonatomic,strong) UICollectionView *acceptAssembletionRegard; -@property (nonatomic, strong) UIPageControl *periodRegard; -@property (nonatomic,strong) NSArray *championStatement; -@property (nonatomic,strong) ChamberAcceptChampionProvisionMatrix *chosenChampionProvision; -@property (nonatomic,strong) NSArray *acceptStatement; -@property (nonatomic,strong) NSArray *nobelAcceptStatement; -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@end - -@implementation YUMIChamberAcceptRegardGovernancer - -- (YUMIChamberAcceptExternalizer *)producePresimport { - return [[YUMIChamberAcceptExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initData]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initData { - [self.presimport getUserInfo]; - if ([YUMIChamberAcceptTool partowardsiciptowardsionAcceptUtensil].acceptDirectory) { - [self.presimport acquireChamberOrdinaryAccept]; - [self.presimport acquireChamberNobelAccept]; - } else { - [self EvidenceChambering]; - [[YUMIChamberAcceptTool partowardsiciptowardsionAcceptUtensil] downAcceptTowardsoloudspeakerImplementtowardsion:^(NSString * _Nonnull path) { - [self brakeHUD]; - if (path.length > 0) { - [self.presimport acquireChamberOrdinaryAccept]; - [self.presimport acquireChamberNobelAccept]; - } else { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Room_Face_View_Controller_0")]; - } - }]; - } -} - -- (void)initSubViews { - self.view.backgroundColor = [UIColor clearColor]; - [self.view addSubview:self.apexRegard]; - [self.view addSubview:self.contentView]; - - [self.contentView addSubview:self.stackView]; - - [self.stackView addArrangedSubview:self.championHierarchyRegard]; - [self.stackView addArrangedSubview:self.acceptAssembletionRegard]; - [self.stackView addArrangedSubview:self.periodRegard]; - - [self.championHierarchyRegard addArrangedSubview:self.championAssembletionRegard]; - [self.championHierarchyRegard addArrangedSubview:self.magnificentPrivilBtuton]; - self.chosenChampionProvision = [self.championStatement firstObject]; -} - -- (void)initChildLyRestrictions { - [self.apexRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.contentView.mas_bottom); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.left.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.view); - make.height.mas_equalTo(self.stackView).offset(42 + kSafeAreaBottomHeight); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(15); - make.top.mas_equalTo(self.contentView); - }]; - - - [self.championHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(53); - }]; - - [self.periodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(10); - }]; - - CGFloat itemAltitude = (CGFloat)(KScreenWidth - 15 * 2 - 10 * 4) / (CGFloat)5 + 20; - CGFloat collectionViewHeight = itemAltitude * 3 + 10 * 2; - [self.acceptAssembletionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(collectionViewHeight); - }]; - - - [self.magnificentPrivilBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(84, 26)); - }]; - - [self.championAssembletionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(28); - }]; -} - -- (void)refurbishPeriodRegardDeclare:(NSArray *)array { - NSInteger page = 0; - if (array.count % 15 == 0) { - page = array.count / 15; - } else { - page = array.count / 15 + 1; - } - [self.periodRegard setNumberOfPages:page]; - self.periodRegard.currentPage = 0; -} - -- (void)prohibitichargeAcceptIndividualityCommunictowardsion:(ChamberAcceptAbstractMatrix *)acceptAbstract { - ChamberAcceptDischargeAbstractMatrix *sendInfo = [[ChamberAcceptDischargeAbstractMatrix alloc]init]; - NSMutableArray *resultIndexs = [NSMutableArray array]; - if (acceptAbstract.resultStartPos > 0 && acceptAbstract.resultEndPos > 0) { - int value; - if (acceptAbstract.canResultRepeat) { - for (int i = 0; i < acceptAbstract.resultCount; i++) { - value = [self acquireArbitraryDigital:(short)acceptAbstract.resultStartPos to:(short)acceptAbstract.resultEndPos]; - [resultIndexs addObject:@(value)]; - sendInfo.resultIndexes = [resultIndexs copy]; - } - - }else { - sendInfo.resultIndexes = [[self arbitraryGarment:(short)acceptAbstract.resultStartPos to:(short)acceptAbstract.resultEndPos count:(short)acceptAbstract.resultCount] mutableCopy]; - } - - } - NSMutableArray *faceRecieveInfos = [NSMutableArray array]; - sendInfo.nick = self.userInfo.nick; - sendInfo.faceId = acceptAbstract.fid; - sendInfo.uid = self.userInfo.uid; - [faceRecieveInfos addObject:sendInfo.mtowardsrix2dictionary]; - - AttachmentMatrix * attachment = [[AttachmentMatrix alloc] init]; - attachment.first = IndividualityCommunicationGenre_Face; - attachment.second = Custom_Message_Sub_Face_Send; - NSDictionary * dic = @{@"data":faceRecieveInfos, @"uid": @(self.userInfo.uid)}; - attachment.data = dic; - NSString *sessionID = self.roomId; - NIMMessage *message = [[NIMMessage alloc]init]; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachment; - message.messageObject = object; - - NIMSession *session = [NIMSession session:sessionID type:NIMSessionTypeChatroom]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (int)acquireArbitraryDigital:(int)from to:(int)to { - return (int)(from + (arc4random() % (to - from + 1))); -} - -- (NSArray *)arbitraryGarment:(int)from to:(int)to count:(int)count { - - - NSMutableArray *startArray= [NSMutableArray array]; - for (int i = from; i <= to; i++) { - [startArray addObject:@(i)]; - } - - NSMutableArray *resultArray=[[NSMutableArray alloc] initWithCapacity:0]; - - NSInteger m = count; - for (int i=0; i 0) { - [startArray removeLastObject]; - } - } - return resultArray; -} - - -#pragma mark - scrollviewdelegate -- (void)scrollViewDidScroll:(UIScrollView *)scrollView { - CGFloat offX = scrollView.contentOffset.x; - CGFloat width = CGRectGetWidth(scrollView.frame); - self.periodRegard.currentPage = ceilf(offX/width); -} - -#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource -- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { - if (collectionView == self.championAssembletionRegard) { - ChamberAcceptChampionProvisionMatrix * itemMatrix = [self.championStatement secureGroalTowardsIndictowardsrix1:indexPath.row]; - CGSize size = [itemMatrix.title boundingRectWithSize:CGSizeMake(100, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingTruncatesLastVisibleLine - attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13]} context:nil].size; - return CGSizeMake(size.width + 10, size.height); - } - CGFloat itemWidth = (CGFloat)(KScreenWidth - 15 * 2 - 10 * 4) / (CGFloat)5; - return CGSizeMake(itemWidth, itemWidth + 20); -} - -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - if (collectionView == self.championAssembletionRegard) { - return self.championStatement.count; - } - return self.chosenChampionProvision.faceType == ChamberFaceTitleProvisionGenre_Normal? self.acceptStatement.count : self.nobelAcceptStatement.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - if (collectionView == self.championAssembletionRegard) { - YUMIChamberAcceptChampionAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIChamberAcceptChampionAssembletionRegardElement class]) forIndexPath:indexPath]; - ChamberAcceptChampionProvisionMatrix * model = [self.championStatement secureGroalTowardsIndictowardsrix1:indexPath.item]; - if (model == self.chosenChampionProvision) { - model.isSelect = YES; - } else { - model.isSelect = NO; - } - cell.championMatrix = model; - return cell; - } - - YUMIChamberAcceptAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIChamberAcceptAssembletionRegardElement class]) forIndexPath:indexPath]; - ChamberAcceptAbstractMatrix * acceptAbstract; - if (self.chosenChampionProvision.faceType == ChamberFaceTitleProvisionGenre_Normal) { - acceptAbstract = [self.acceptStatement secureGroalTowardsIndictowardsrix1:indexPath.row]; - } else { - acceptAbstract = [self.nobelAcceptStatement secureGroalTowardsIndictowardsrix1:indexPath.row]; - } - cell.vipLevel = self.userInfo.userVipInfoVO.vipLevel; - cell.acceptAbstract =acceptAbstract; - return cell; -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - if (collectionView == self.championAssembletionRegard) { - ChamberAcceptChampionProvisionMatrix * championMatrix = [self.championStatement secureGroalTowardsIndictowardsrix1:indexPath.row]; - self.chosenChampionProvision = championMatrix; - [self.championAssembletionRegard reloadData]; - NSArray * list = championMatrix.faceType == ChamberFaceTitleProvisionGenre_Normal ? self.acceptStatement : self.nobelAcceptStatement; - [self refurbishPeriodRegardDeclare:list]; - [self.acceptAssembletionRegard reloadData]; - } else { - if (self.chosenChampionProvision.faceType == ChamberFaceTitleProvisionGenre_Normal) { - ChamberAcceptAbstractMatrix * acceptAbstract = [self.acceptStatement secureGroalTowardsIndictowardsrix1:indexPath.row]; - [self prohibitichargeAcceptIndividualityCommunictowardsion:acceptAbstract]; - } else { - if (indexPath.row < self.nobelAcceptStatement.count) { - ChamberAcceptAbstractMatrix * acceptAbstract = [self.nobelAcceptStatement secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (acceptAbstract.faceVipInfo.vipLevel > self.userInfo.userVipInfoVO.vipLevel) { - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.message = [NSString stringWithFormat:@"尚未达到发送%@所需贵族等级,\n 所需贵族等级:%@", acceptAbstract.name,acceptAbstract.faceVipInfo.vipName]; - config.performanceStyle = TTAlertActionConfirmStyle; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - - } cancelHandler:^{ - - }]; - } else { - [self prohibitichargeAcceptIndividualityCommunictowardsion:acceptAbstract]; - } - } - } - } -} - -#pragma mark - FBCChamberFaceCeremony -- (void)acquireChamberOrdinaryAcceptSttowardsementAccomplishment:(NSArray *)list { - self.acceptStatement = list; - [self refurbishPeriodRegardDeclare:list]; - [self.acceptAssembletionRegard reloadData]; -} - -- (void)acquireChamberGuruAcceptSttowardsementAccomplishment:(NSArray *)list { - self.nobelAcceptStatement = list; - [self.acceptAssembletionRegard reloadData]; -} - -- (void)acquireConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo { - self.userInfo = userInfo; - [self.acceptAssembletionRegard reloadData]; -} -#pragma mark - Event Response -- (void)magnificentPrivilBtutonPerformance:(UIButton *)sender { - [self dismissViewControllerAnimated:YES completion:nil]; - return; -} - -- (void)prohibitiaplictowardsionarRegardRecognition { - [self dismissViewControllerAnimated:YES completion:nil]; -} - -#pragma mark - Getters And Setters -- (UIView *)apexRegard { - if (!_apexRegard) { - _apexRegard = [[UIView alloc] init]; - _apexRegard.backgroundColor = [UIColor colorWithWhite:0 alpha:0.3]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(prohibitiaplictowardsionarRegardRecognition)]; - [_apexRegard addGestureRecognizer:tap]; - } - return _apexRegard; -} - -- (UIView *)contentView { - if (!_contentView) { - _contentView = [[UIView alloc] init]; - _contentView.backgroundColor = UIColorFromRGB(0x0D0C11); - } - return _contentView; -} - -- (UIVisualEffectView *)impressionRegard { - if (!_impressionRegard) { - UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; - _impressionRegard = [[UIVisualEffectView alloc]initWithEffect:effect]; - _impressionRegard.alpha = 1; - } - return _impressionRegard; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing =10; - } - return _stackView; -} - -- (UIStackView *)championHierarchyRegard { - if (!_championHierarchyRegard) { - _championHierarchyRegard = [[UIStackView alloc] init]; - _championHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _championHierarchyRegard.distribution = UIStackViewDistributionFill; - _championHierarchyRegard.alignment = UIStackViewAlignmentBottom; - _championHierarchyRegard.spacing = 10; - CAShapeLayer * layer = [CAShapeLayer layer]; - UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, 53) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)]; - layer.path = path.CGPath; - _championHierarchyRegard.layer.masksToBounds = YES; - _championHierarchyRegard.layer.mask = layer;; - } - return _championHierarchyRegard; -} - -- (UIButton *)magnificentPrivilBtuton { - if (!_magnificentPrivilBtuton) { - _magnificentPrivilBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_magnificentPrivilBtuton setImage:[UIImage imageNamed:@"yumi_scope_face_nobel_privil"] forState:UIControlStateNormal]; - [_magnificentPrivilBtuton setImage:[UIImage imageNamed:@"yumi_scope_face_nobel_privil"] forState:UIControlStateSelected]; - [_magnificentPrivilBtuton addTarget:self action:@selector(magnificentPrivilBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _magnificentPrivilBtuton.hidden = YES; - [_magnificentPrivilBtuton setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - } - return _magnificentPrivilBtuton; -} - - -- (UICollectionView *)championAssembletionRegard{ - if (!_championAssembletionRegard) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; - layout.minimumLineSpacing = 15; - _championAssembletionRegard = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _championAssembletionRegard.dataSource = self; - _championAssembletionRegard.delegate = self; - _championAssembletionRegard.backgroundColor = [UIColor clearColor]; - [_championAssembletionRegard registerClass:[YUMIChamberAcceptChampionAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIChamberAcceptChampionAssembletionRegardElement class])]; - } - return _championAssembletionRegard; -} - -- (UICollectionView *)acceptAssembletionRegard{ - if (!_acceptAssembletionRegard) { - YUMIChamberAcceptAssembletionFlowProgramming *layout = [[YUMIChamberAcceptAssembletionFlowProgramming alloc] init]; - layout.minimumLineSpacing = 10; - layout.minimumInteritemSpacing = 10; - layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0); - _acceptAssembletionRegard = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _acceptAssembletionRegard.dataSource = self; - _acceptAssembletionRegard.delegate = self; - _acceptAssembletionRegard.backgroundColor = [UIColor clearColor]; - _acceptAssembletionRegard.pagingEnabled = YES; - [_acceptAssembletionRegard registerClass:[YUMIChamberAcceptAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIChamberAcceptAssembletionRegardElement class])]; - } - return _acceptAssembletionRegard; -} - -- (UIPageControl *)periodRegard { - if (!_periodRegard) { - _periodRegard = [[UIPageControl alloc] init]; - _periodRegard.currentPageIndicatorTintColor = [UIColor whiteColor]; - } - return _periodRegard; -} - -- (NSArray *)championStatement { - if (!_championStatement) { - ChamberAcceptChampionProvisionMatrix * normalItem = [[ChamberAcceptChampionProvisionMatrix alloc] init]; - normalItem.title= YMLocalizedString(@"YUMI_Room_Face_View_Controller_2"); - normalItem.isSelect = YES; - normalItem.faceType = ChamberFaceTitleProvisionGenre_Normal; - - ChamberAcceptChampionProvisionMatrix * nobelItem = [[ChamberAcceptChampionProvisionMatrix alloc] init]; - nobelItem.title= YMLocalizedString(@"YUMI_Room_Face_View_Controller_3"); - nobelItem.isSelect = NO; - nobelItem.faceType = ChamberFaceTitleProvisionGenre_Nobel; - _championStatement = @[normalItem, nobelItem]; - } - return _championStatement; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/Api/Api+FirstRecharge.h b/YuMi/Modules/YMRoom/View/FirstRecharge/Api/Api+FirstRecharge.h index f241d4df..1b9621e2 100644 --- a/YuMi/Modules/YMRoom/View/FirstRecharge/Api/Api+FirstRecharge.h +++ b/YuMi/Modules/YMRoom/View/FirstRecharge/Api/Api+FirstRecharge.h @@ -11,7 +11,10 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (FirstRecharge) -+ (void)thresholdReindictCompenstowardsionSttowardsement:(HttpRequestHelperCompletion)completion channelType:(NSString *)channelType; +/// 获取首充奖励列表 +/// @param completion 完成 +/// @param channelType 渠道 目前是3 ++ (void)firstRechargeRewardList:(HttpRequestHelperCompletion)completion channelType:(NSString *)channelType; @end diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/Api/Api+FirstRecharge.m b/YuMi/Modules/YMRoom/View/FirstRecharge/Api/Api+FirstRecharge.m index 776acd97..3119fa89 100644 --- a/YuMi/Modules/YMRoom/View/FirstRecharge/Api/Api+FirstRecharge.m +++ b/YuMi/Modules/YMRoom/View/FirstRecharge/Api/Api+FirstRecharge.m @@ -10,9 +10,12 @@ @implementation Api (FirstRecharge) -+ (void)thresholdReindictCompenstowardsionSttowardsement:(HttpRequestHelperCompletion)completion channelType:(NSString *)channelType { - NSString * fang = [NSString stringFromBase64String:@"Zmlyc3QvY2hhcmdlL2xpc3Q="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, channelType, nil]; +/// 获取首充奖励列表 +/// @param completion 完成 +/// @param channelType 渠道 目前是3 ++ (void)firstRechargeRewardList:(HttpRequestHelperCompletion)completion channelType:(NSString *)channelType { + NSString * fang = [NSString stringFromBase64String:@"Zmlyc3QvY2hhcmdlL2xpc3Q="];///first/charge/list + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, channelType, nil]; } @end diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/Model/FirstChargeRoomWindowModel.h b/YuMi/Modules/YMRoom/View/FirstRecharge/Model/FirstChargeRoomWindowModel.h new file mode 100644 index 00000000..ad6e06d7 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FirstRecharge/Model/FirstChargeRoomWindowModel.h @@ -0,0 +1,21 @@ +// +// FirstChargeRoomWindowModel.h +// YuMi +// +// Created by YuMi on 2023/6/21. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface FirstChargeRoomWindowModel : NSObject +///是否需要弹出首充 +@property (nonatomic,assign) BOOL needToShow; +///房间id +@property (nonatomic,copy) NSString *roomUid; +///延时弹出首充的时间 +@property (nonatomic,assign) NSInteger showAfterSecond; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/Model/FirstChargeRoomWindowModel.m b/YuMi/Modules/YMRoom/View/FirstRecharge/Model/FirstChargeRoomWindowModel.m new file mode 100644 index 00000000..1f045e8f --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FirstRecharge/Model/FirstChargeRoomWindowModel.m @@ -0,0 +1,12 @@ +// +// FirstChargeRoomWindowModel.m +// YuMi +// +// Created by YuMi on 2023/6/21. +// + +#import "FirstChargeRoomWindowModel.h" + +@implementation FirstChargeRoomWindowModel + +@end diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/Model/FirstRechargeModel.h b/YuMi/Modules/YMRoom/View/FirstRecharge/Model/FirstRechargeModel.h new file mode 100644 index 00000000..620e6d39 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FirstRecharge/Model/FirstRechargeModel.h @@ -0,0 +1,27 @@ +// +// FirstRechargeModel.h +// YUMI +// +// Created by YUMI on 2021/12/23. +// + +#import +#import "FirstRechargeRewardModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface FirstRechargeModel : NSObject +///充值的额度 +@property(nonatomic, assign) CGFloat chargeMoney; +@property(nonatomic, strong) NSString *chargeProdId; +@property(nonatomic, strong) NSString *chargeProdDesc; +@property(nonatomic, strong) NSString *chargeProdTitle; +@property(nonatomic, strong) NSArray *firstChargeRewardList; +@property (nonatomic, assign) NSInteger giveMoney; + +///新用户充值优惠使用---- +///是否完成当前档位的充值 +@property (nonatomic, assign) BOOL finishCharge; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/Model/FirstRechargeModel.m b/YuMi/Modules/YMRoom/View/FirstRecharge/Model/FirstRechargeModel.m new file mode 100644 index 00000000..ee46f00d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FirstRecharge/Model/FirstRechargeModel.m @@ -0,0 +1,18 @@ +// +// FirstRechargeModel.m +// YUMI +// +// Created by YUMI on 2021/12/23. +// + +#import "FirstRechargeModel.h" + +@implementation FirstRechargeModel + +///扩展方法 按需索取 重写即可 +///如果一个模型中 包含一个数组 数组中是另一个模型 ++ (NSDictionary *)objectClassInArray { + return @{@"firstChargeRewardList": FirstRechargeRewardModel.class}; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/Model/FirstRechargeRewardModel.h b/YuMi/Modules/YMRoom/View/FirstRecharge/Model/FirstRechargeRewardModel.h new file mode 100644 index 00000000..acac7e68 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FirstRecharge/Model/FirstRechargeRewardModel.h @@ -0,0 +1,23 @@ +// +// FirstRechargeRewardModel.h +// YUMI +// +// Created by YUMI on 2021/12/23. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface FirstRechargeRewardModel : NSObject +@property (nonatomic, assign) long rewardId; +///奖励的图片 +@property(nonatomic, strong) NSString *showPir; +///展示奖励的文字 +@property(nonatomic, strong) NSString *showText; +///奖励的天数 +@property(nonatomic, copy) NSString * showTime; +@property (nonatomic, strong) NSString *rid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/Model/FirstRechargeRewardModel.m b/YuMi/Modules/YMRoom/View/FirstRecharge/Model/FirstRechargeRewardModel.m new file mode 100644 index 00000000..ac433cb1 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FirstRecharge/Model/FirstRechargeRewardModel.m @@ -0,0 +1,17 @@ +// +// FirstRechargeRewardModel.m +// YUMI +// +// Created by YUMI on 2021/12/23. +// + +#import "FirstRechargeRewardModel.h" + +@implementation FirstRechargeRewardModel + +///如果一个模型中需要字段映射的话 比如id -> ID name -> other.name ++ (NSDictionary *)replacedKeyFromPropertyName { + return @{@"id": @"fid"}; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/Model/ThresholdChargeChamberWindowMatrix.h b/YuMi/Modules/YMRoom/View/FirstRecharge/Model/ThresholdChargeChamberWindowMatrix.h deleted file mode 100644 index 944e6d2e..00000000 --- a/YuMi/Modules/YMRoom/View/FirstRecharge/Model/ThresholdChargeChamberWindowMatrix.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// ThresholdChargeChamberWindowMatrix.h -// YuMi -// -// Created by YuMi on 2023/6/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface ThresholdChargeChamberWindowMatrix : NSObject -@property (nonatomic,assign) BOOL needToShow; -@property (nonatomic,copy) NSString *roomUid; -@property (nonatomic,assign) NSInteger showAfterSecond; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/Model/ThresholdChargeChamberWindowMatrix.m b/YuMi/Modules/YMRoom/View/FirstRecharge/Model/ThresholdChargeChamberWindowMatrix.m deleted file mode 100644 index 82aebc1b..00000000 --- a/YuMi/Modules/YMRoom/View/FirstRecharge/Model/ThresholdChargeChamberWindowMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ThresholdChargeChamberWindowMatrix.m -// YuMi -// -// Created by YuMi on 2023/6/21. -// - -#import "ThresholdChargeChamberWindowMatrix.h" - -@implementation ThresholdChargeChamberWindowMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/Model/ThresholdReindictMatrix.h b/YuMi/Modules/YMRoom/View/FirstRecharge/Model/ThresholdReindictMatrix.h deleted file mode 100644 index 3123136d..00000000 --- a/YuMi/Modules/YMRoom/View/FirstRecharge/Model/ThresholdReindictMatrix.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// ThresholdReindictMatrix.h -// YUMI -// -// Created by YUMI on 2021/12/23. -// - -#import -#import "ThresholdReindictRewardMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@interface ThresholdReindictMatrix : NSObject -@property(nonatomic, assign) CGFloat chargeMoney; -@property(nonatomic, strong) NSString *chargeProdId; -@property(nonatomic, strong) NSString *chargeProdDesc; -@property(nonatomic, strong) NSString *chargeProdTitle; -@property(nonatomic, strong) NSArray *firstChargeRewardList; -@property (nonatomic, assign) NSInteger giveMoney; - -@property (nonatomic, assign) BOOL finishCharge; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/Model/ThresholdReindictMatrix.m b/YuMi/Modules/YMRoom/View/FirstRecharge/Model/ThresholdReindictMatrix.m deleted file mode 100644 index 2676e243..00000000 --- a/YuMi/Modules/YMRoom/View/FirstRecharge/Model/ThresholdReindictMatrix.m +++ /dev/null @@ -1,16 +0,0 @@ -// -// ThresholdReindictMatrix.m -// YUMI -// -// Created by YUMI on 2021/12/23. -// - -#import "ThresholdReindictMatrix.h" - -@implementation ThresholdReindictMatrix - -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{@"firstChargeRewardList": ThresholdReindictRewardMatrix.class}; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/Model/ThresholdReindictRewardMatrix.h b/YuMi/Modules/YMRoom/View/FirstRecharge/Model/ThresholdReindictRewardMatrix.h deleted file mode 100644 index ed9df144..00000000 --- a/YuMi/Modules/YMRoom/View/FirstRecharge/Model/ThresholdReindictRewardMatrix.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// ThresholdReindictRewardMatrix.h -// YUMI -// -// Created by YUMI on 2021/12/23. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface ThresholdReindictRewardMatrix : NSObject -@property (nonatomic, assign) long rewardId; -@property(nonatomic, strong) NSString *showPir; -@property(nonatomic, strong) NSString *showText; -@property(nonatomic, copy) NSString * showTime; -@property (nonatomic, strong) NSString *rid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/Model/ThresholdReindictRewardMatrix.m b/YuMi/Modules/YMRoom/View/FirstRecharge/Model/ThresholdReindictRewardMatrix.m deleted file mode 100644 index 690291f2..00000000 --- a/YuMi/Modules/YMRoom/View/FirstRecharge/Model/ThresholdReindictRewardMatrix.m +++ /dev/null @@ -1,16 +0,0 @@ -// -// ThresholdReindictRewardMatrix.m -// YUMI -// -// Created by YUMI on 2021/12/23. -// - -#import "ThresholdReindictRewardMatrix.h" - -@implementation ThresholdReindictRewardMatrix - -+ (NSDictionary *)replacedDigitalByvirtueofMaintainertyConstitute { - return @{@"id": @"fid"}; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/Presenter/XPFirstRechargePresenter.h b/YuMi/Modules/YMRoom/View/FirstRecharge/Presenter/XPFirstRechargePresenter.h new file mode 100644 index 00000000..9033e4fd --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FirstRecharge/Presenter/XPFirstRechargePresenter.h @@ -0,0 +1,16 @@ +// +// YMFirstRechargePresenter.h +// YUMI +// +// Created by YUMI on 2021/12/23. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPFirstRechargePresenter : BaseMvpPresenter +- (void)getFirstRechargeRewardList; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/Presenter/XPFirstRechargePresenter.m b/YuMi/Modules/YMRoom/View/FirstRecharge/Presenter/XPFirstRechargePresenter.m new file mode 100644 index 00000000..0ee7b0cf --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FirstRecharge/Presenter/XPFirstRechargePresenter.m @@ -0,0 +1,22 @@ +// +// YMFirstRechargePresenter.m +// YUMI +// +// Created by YUMI on 2021/12/23. +// + +#import "XPFirstRechargePresenter.h" +#import "Api+FirstRecharge.h" +#import "FirstRechargeModel.h" +#import "XPFirstRechargeProtocol.h" + +@implementation XPFirstRechargePresenter + +- (void)getFirstRechargeRewardList { + [Api firstRechargeRewardList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [FirstRechargeModel modelsWithArray:data.data]; + [[self getView] getFirstRechargeListSuccess:array]; + } showLoading:YES] channelType:@"3"]; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/Presenter/YUMIThresholdReindictExternalizer.h b/YuMi/Modules/YMRoom/View/FirstRecharge/Presenter/YUMIThresholdReindictExternalizer.h deleted file mode 100644 index 9953a36a..00000000 --- a/YuMi/Modules/YMRoom/View/FirstRecharge/Presenter/YUMIThresholdReindictExternalizer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMFirstRechargePresenter.h -// YUMI -// -// Created by YUMI on 2021/12/23. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIThresholdReindictExternalizer : BaseMvpExternalizer -- (void)acquireThresholdReindictCompenstowardsionSttowardsement; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/Presenter/YUMIThresholdReindictExternalizer.m b/YuMi/Modules/YMRoom/View/FirstRecharge/Presenter/YUMIThresholdReindictExternalizer.m deleted file mode 100644 index 7dfd7104..00000000 --- a/YuMi/Modules/YMRoom/View/FirstRecharge/Presenter/YUMIThresholdReindictExternalizer.m +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMFirstRechargePresenter.m -// YUMI -// -// Created by YUMI on 2021/12/23. -// - -#import "YUMIThresholdReindictExternalizer.h" -#import "Api+FirstRecharge.h" -#import "ThresholdReindictMatrix.h" -#import "FBCFirstReindictCeremony.h" - -@implementation YUMIThresholdReindictExternalizer - -- (void)acquireThresholdReindictCompenstowardsionSttowardsement { - [Api thresholdReindictCompenstowardsionSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [ThresholdReindictMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireThresholdReindictSttowardsementAccomplishment:array]; - } EvidenceChambering:YES] channelType:@"3"]; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/Protocol/FBCFirstReindictCeremony.h b/YuMi/Modules/YMRoom/View/FirstRecharge/Protocol/FBCFirstReindictCeremony.h deleted file mode 100644 index 21b276f3..00000000 --- a/YuMi/Modules/YMRoom/View/FirstRecharge/Protocol/FBCFirstReindictCeremony.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMFirstRechargeProtocol.h -// YUMI -// -// Created by YUMI on 2021/12/23. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCFirstReindictCeremony - -- (void)acquireThresholdReindictSttowardsementAccomplishment:(NSArray *)array; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/Protocol/XPFirstRechargeProtocol.h b/YuMi/Modules/YMRoom/View/FirstRecharge/Protocol/XPFirstRechargeProtocol.h new file mode 100644 index 00000000..dbc7b3f7 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FirstRecharge/Protocol/XPFirstRechargeProtocol.h @@ -0,0 +1,19 @@ +// +// YMFirstRechargeProtocol.h +// YUMI +// +// Created by YUMI on 2021/12/23. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPFirstRechargeProtocol + +///获取首充列表成功 +- (void)getFirstRechargeListSuccess:(NSArray *)array; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/ThemeColor+FirstRecharge.h b/YuMi/Modules/YMRoom/View/FirstRecharge/ThemeColor+FirstRecharge.h index e03efb69..4f0b00cf 100644 --- a/YuMi/Modules/YMRoom/View/FirstRecharge/ThemeColor+FirstRecharge.h +++ b/YuMi/Modules/YMRoom/View/FirstRecharge/ThemeColor+FirstRecharge.h @@ -1,5 +1,5 @@ // -// ThemeColor+FirstRecharge.h +// ThemeColorFirstRecharge.h // YUMI // // Created by YUMI on 2021/12/24. @@ -10,22 +10,32 @@ NS_ASSUME_NONNULL_BEGIN @interface DJDKMIMOMColor (FirstRecharge) -+ (UIColor *)thresholdReindictEssayPrettify; +///首充的文字的颜色 ++ (UIColor *)firstRechargeTextColor; -+ (UIColor *)compenstowardsionIntrtowardsemporalBtutonObliquityInititowardsePrettify; +/// 奖励的天数 渐变色的开始 0xFFB556 ++ (UIColor *)rewardTimeButtonGradientStartColor; -+ (UIColor *)compenstowardsionIntrtowardsemporalBtutonObliquityConcludePrettify; +/// 奖励的天数 渐变色的结束 #FE581E ++ (UIColor *)rewardTimeButtonGradientEndColor; -+ (UIColor *)compenstowardsionReminderEssayPrettify; +/// 奖励提示的颜色 #FB486A ++ (UIColor *)rewardReminderTextColor; -+ (UIColor *)compenstowardsionMaintainortionEssayPrettify; +/// 选择滑块的颜色 FFDB49 ++ (UIColor *)rewardSegmentTextColor; -+ (UIColor *)compenstowardsionMaintainortionOrdinaryEssayPrettify; -+ (UIColor *)compenstowardsionMaintainortionOrdinaryBackgroundPrettify; -+ (UIColor *)thresholdReindictEncouragegroundPrettify; +/// 选择滑块的颜色 0x653BBA ++ (UIColor *)rewardSegmentNormalTextColor; +/// 滑块的默认的背景颜色 0x653BB9 ++ (UIColor *)rewardSegmentNormalBgColor; +///背景色 0x000000 0.4 ++ (UIColor *)firstRechargeBackgroundColor; -+ (UIColor *)compenstowardsionEncouragegroundObliquityMiddlePrettify; -+ (UIColor *)compenstowardsionEncouragegroundObliquityApeyUMIrettify; +/// 奖励内容 渐变色的开始 0x5D31B3 ++ (UIColor *)rewardBackgroundGradientMiddleColor; +/// 奖励内容 渐变色的开始 0x5226AB ++ (UIColor *)rewardBackgroundGradientTopColor; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/ThemeColor+FirstRecharge.m b/YuMi/Modules/YMRoom/View/FirstRecharge/ThemeColor+FirstRecharge.m index a004866e..c9f97cab 100644 --- a/YuMi/Modules/YMRoom/View/FirstRecharge/ThemeColor+FirstRecharge.m +++ b/YuMi/Modules/YMRoom/View/FirstRecharge/ThemeColor+FirstRecharge.m @@ -1,5 +1,5 @@ // -// ThemeColor+FirstRecharge.m +// ThemeColorFirstRecharge.m // YUMI // // Created by YUMI on 2021/12/24. @@ -9,42 +9,52 @@ @implementation DJDKMIMOMColor (FirstRecharge) -+ (UIColor *)thresholdReindictEssayPrettify { +///首充的文字的颜色 ++ (UIColor *)firstRechargeTextColor { return UIColorFromRGB(0xFFFFFF); } -+ (UIColor *)compenstowardsionIntrtowardsemporalBtutonObliquityInititowardsePrettify { +/// 奖励的天数 渐变色的开始 0xFFB556 ++ (UIColor *)rewardTimeButtonGradientStartColor { return UIColorFromRGB(0xFFB556); } -+ (UIColor *)compenstowardsionIntrtowardsemporalBtutonObliquityConcludePrettify { +/// 奖励的天数 渐变色的结束 #FE581E ++ (UIColor *)rewardTimeButtonGradientEndColor { return UIColorFromRGB(0xFE581E); } -+ (UIColor *)compenstowardsionReminderEssayPrettify { +/// 奖励提示的颜色 #FB486A ++ (UIColor *)rewardReminderTextColor { return UIColorFromRGB(0xFB486A); } -+ (UIColor *)compenstowardsionMaintainortionEssayPrettify { +/// 选择滑块的颜色 FFDB49 ++ (UIColor *)rewardSegmentTextColor { return UIColorFromRGB(0xFFFFFF); } -+ (UIColor *)compenstowardsionMaintainortionOrdinaryEssayPrettify { +/// 选择滑块的颜色 0x653BBA ++ (UIColor *)rewardSegmentNormalTextColor { return UIColorFromRGB(0x845DFF); } -+ (UIColor *)compenstowardsionMaintainortionOrdinaryBackgroundPrettify { +/// 滑块的默认的背景颜色 0x653BB9 ++ (UIColor *)rewardSegmentNormalBgColor { return UIColorFromRGB(0xE0B4FF); } -+ (UIColor *)thresholdReindictEncouragegroundPrettify { +///背景色 0x000000 0.4 ++ (UIColor *)firstRechargeBackgroundColor { return UIColorRGBAlpha(0x000000, 0.3); } -+ (UIColor *)compenstowardsionEncouragegroundObliquityApeyUMIrettify { +/// 奖励内容 渐变色的开始 0x5226AB ++ (UIColor *)rewardBackgroundGradientTopColor { return UIColorFromRGB(0x5226AB); } -+ (UIColor *)compenstowardsionEncouragegroundObliquityMiddlePrettify { +/// 奖励内容 渐变色的开始 0x5D31B3 ++ (UIColor *)rewardBackgroundGradientMiddleColor { return UIColorFromRGB(0x5D31B3); } diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/XPFirstRechargeCollectionViewCell.h b/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/XPFirstRechargeCollectionViewCell.h new file mode 100644 index 00000000..e995fc64 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/XPFirstRechargeCollectionViewCell.h @@ -0,0 +1,17 @@ +// +// YMFirstRechargeCollectionViewCell.h +// YUMI +// +// Created by YUMI on 2021/12/24. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class FirstRechargeRewardModel; +@interface XPFirstRechargeCollectionViewCell : UICollectionViewCell +///奖励的模型 +@property (nonatomic,strong) FirstRechargeRewardModel *rewardInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/XPFirstRechargeCollectionViewCell.m b/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/XPFirstRechargeCollectionViewCell.m new file mode 100644 index 00000000..a5a14a0d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/XPFirstRechargeCollectionViewCell.m @@ -0,0 +1,116 @@ +// +// YMFirstRechargeCollectionViewCell.m +// YUMI +// +// Created by YUMI on 2021/12/24. +// + +#import "XPFirstRechargeCollectionViewCell.h" +///Third +#import +///Tool +#import "ThemeColor+FirstRecharge.h" +#import "NetImageView.h" +#import "UIImage+Utils.h" +///Model +#import "FirstRechargeRewardModel.h" + +@interface XPFirstRechargeCollectionViewCell () +///奖励的图片 +@property (nonatomic, strong) NetImageView *iconImageView; +///显示奖励图片 +@property (nonatomic, strong) UILabel *titleLabel; +///显示奖励的时间 +@property (nonatomic, strong) UIButton *timeButton; +@end + +@implementation XPFirstRechargeCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews{ + [self addSubview:self.iconImageView]; + [self addSubview:self.titleLabel]; + [self addSubview:self.timeButton]; +} + +- (void)initSubViewConstraints{ + [self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(0); + make.centerX.mas_equalTo(self.mas_centerX); + make.width.height.mas_equalTo(60); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.height.mas_equalTo(10); + make.bottom.mas_equalTo(0); + make.left.mas_equalTo(0); + }]; + + [self.timeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.right.mas_equalTo(self.iconImageView); + make.height.mas_equalTo(12); + make.width.mas_equalTo(30); + }]; + +} + +#pragma mark - setupData +- (void)setRewardInfo:(FirstRechargeRewardModel *)rewardInfo { + _rewardInfo = rewardInfo; + self.timeButton.hidden = !(_rewardInfo.showTime > 0); + [self.timeButton setTitle:[NSString stringWithFormat:@"%@", _rewardInfo.showTime] forState:UIControlStateNormal]; + self.titleLabel.text = _rewardInfo.showText; + self.iconImageView.imageUrl = _rewardInfo.showPir; +} + + +- (UIImageView *)iconImageView { + if (!_iconImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserIcon; + _iconImageView = [[NetImageView alloc] initWithConfig:config]; + _iconImageView.backgroundColor = UIColorFromRGB(0xE0B4FF); + _iconImageView.layer.cornerRadius = 4; + _iconImageView.layer.masksToBounds = YES; + _iconImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _iconImageView; +} + +- (UILabel *)titleLabel{ + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textColor = UIColorFromRGB(0x845DFF); + _titleLabel.font = [UIFont systemFontOfSize:10]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} + +- (UIButton *)timeButton{ + if (!_timeButton) { + _timeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_timeButton setTitleColor:[DJDKMIMOMColor firstRechargeTextColor] forState:UIControlStateNormal]; + _timeButton.titleLabel.font = [UIFont systemFontOfSize:10]; + [_timeButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor rewardTimeButtonGradientStartColor], [DJDKMIMOMColor rewardTimeButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _timeButton.hidden = YES; + UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 30, 12) byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(4, 4)]; + CAShapeLayer *maskLayer = [CAShapeLayer layer]; + maskLayer.path = path.CGPath; + _timeButton.layer.mask = maskLayer; + } + return _timeButton; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/XPFirstRechargeFlowLayout.h b/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/XPFirstRechargeFlowLayout.h new file mode 100644 index 00000000..977da49b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/XPFirstRechargeFlowLayout.h @@ -0,0 +1,16 @@ +// +// YMFirstRechargeFlowLayout.h +// YUMI +// +// Created by YUMI on 2021/12/24. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPFirstRechargeFlowLayout : UICollectionViewFlowLayout + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/XPFirstRechargeFlowLayout.m b/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/XPFirstRechargeFlowLayout.m new file mode 100644 index 00000000..4cfe273d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/XPFirstRechargeFlowLayout.m @@ -0,0 +1,95 @@ +// +// YMFirstRechargeFlowLayout.m +// YUMI +// +// Created by YUMI on 2021/12/24. +// + +#import "XPFirstRechargeFlowLayout.h" + +@interface XPFirstRechargeFlowLayout () +/// +@property (nonatomic,assign) CGFloat currentY; +/// +@property (nonatomic,assign) CGFloat currentX; +/// +@property (nonatomic,strong) NSMutableArray *attributeArray; +@end + +@implementation XPFirstRechargeFlowLayout + + +- (void)prepareLayout { + [super prepareLayout]; + NSInteger count = [self.collectionView numberOfItemsInSection:0]; + _currentX = self.sectionInset.left; + _currentY = self.sectionInset.top; + _attributeArray = [NSMutableArray array]; + for (int i = 0; i< count; i++) { + NSIndexPath * indexPath = [NSIndexPath indexPathForRow:i inSection:0]; + UICollectionViewLayoutAttributes * attributes = [self layoutAttributesForItemAtIndexPath:indexPath]; + [self.attributeArray addObject:attributes]; + } + +} + +- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath { + CGFloat contentWidth = self.collectionView.frame.size.width - self.sectionInset.left - self.sectionInset.right; + CGFloat contentHeight = self.collectionView.frame.size.height - self.sectionInset.top - self.sectionInset.bottom; + UICollectionViewLayoutAttributes * temp= [UICollectionViewLayoutAttributes layoutAttributesForCellWithIndexPath:indexPath]; + NSInteger count = [self.collectionView numberOfItemsInSection:0]; + CGFloat itemWidth = self.itemSize.width; + CGFloat itemHeight = self.itemSize.height; + CGRect frame; + frame.size = self.itemSize; + if (count == 6) { + CGFloat space =(contentWidth - itemWidth * 3) / 2; + CGFloat temIndexRow = indexPath.row % 3; + CGFloat temIndex = indexPath.row / 3; + _currentX = temIndexRow *(itemWidth + space) + self.sectionInset.left; + _currentY = (itemHeight + self.minimumLineSpacing) * temIndex + self.sectionInset.top; + + } else if(count == 5) { + CGFloat space =(contentWidth - itemWidth * 3) / 2; + CGFloat temIndexRow = indexPath.row % 3; + CGFloat temIndex = indexPath.row / 3; + if (temIndex > 0) { + CGFloat leftSpace = (contentWidth - itemWidth * 2) /3; + _currentX = temIndexRow *itemWidth + leftSpace * (temIndexRow + 1) + self.sectionInset.left; + _currentY = (itemHeight + self.minimumLineSpacing) * temIndex + self.sectionInset.top; + } else { + _currentX = temIndexRow *(itemWidth + space) + self.sectionInset.left; + _currentY = (itemHeight + self.minimumLineSpacing) * temIndex + self.sectionInset.top; + } + } else if(count == 4) { + CGFloat space = (contentWidth - itemWidth * 2) / 3; + CGFloat temIndexRow = indexPath.row % 2; + CGFloat temIndex = indexPath.row / 2; + _currentX = temIndexRow *itemWidth + space * (temIndexRow + 1) + self.sectionInset.left; + _currentY = (itemHeight + self.minimumLineSpacing) * temIndex + self.sectionInset.top; + } else if(count == 3) { + CGFloat space =(contentWidth - itemWidth * 3) / 2; + CGFloat temIndexRow = indexPath.row % 3; + _currentX = temIndexRow *(itemWidth + space) + self.sectionInset.left; + _currentY = (contentHeight - itemHeight) / 2 + self.sectionInset.top; + } else if(count == 2) { + CGFloat space = (contentWidth - itemWidth * 2) / 3; + CGFloat temIndexRow = indexPath.row % 2; + _currentX = temIndexRow *itemWidth + space * (temIndexRow + 1) + self.sectionInset.left; + _currentY = (contentHeight - itemHeight) / 2 + self.sectionInset.top; + }else if(count == 1) { + _currentX = (contentWidth - itemWidth) / 2 + self.sectionInset.left; + _currentY = (contentHeight - itemHeight) / 2 + self.sectionInset.top; + } + frame.origin = CGPointMake(_currentX, _currentY); + temp.frame = frame; + return temp; +} +- (CGSize)collectionViewContentSize { + return CGSizeMake(1, _currentY + self.itemSize.height + self.sectionInset.bottom); +} + +- (NSArray<__kindof UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect { + return _attributeArray; +} +@end diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/YUMIThresholdReindictAssembletionRegardElement.h b/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/YUMIThresholdReindictAssembletionRegardElement.h deleted file mode 100644 index da6d9857..00000000 --- a/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/YUMIThresholdReindictAssembletionRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMFirstRechargeCollectionViewCell.h -// YUMI -// -// Created by YUMI on 2021/12/24. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ThresholdReindictRewardMatrix; -@interface YUMIThresholdReindictAssembletionRegardElement : UICollectionViewCell -@property (nonatomic,strong) ThresholdReindictRewardMatrix *compensationAbstract; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/YUMIThresholdReindictAssembletionRegardElement.m b/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/YUMIThresholdReindictAssembletionRegardElement.m deleted file mode 100644 index f22836e0..00000000 --- a/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/YUMIThresholdReindictAssembletionRegardElement.m +++ /dev/null @@ -1,110 +0,0 @@ -// -// YMFirstRechargeCollectionViewCell.m -// YUMI -// -// Created by YUMI on 2021/12/24. -// - -#import "YUMIThresholdReindictAssembletionRegardElement.h" -#import -#import "ThemeColor+FirstRecharge.h" -#import "NetIndicateRegard.h" -#import "UIImage+Utils.h" -#import "ThresholdReindictRewardMatrix.h" - -@interface YUMIThresholdReindictAssembletionRegardElement () -@property (nonatomic, strong) NetIndicateRegard *figureIndicateRegard; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UIButton *intratemporalBtuton; -@end - -@implementation YUMIThresholdReindictAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews{ - [self addSubview:self.figureIndicateRegard]; - [self addSubview:self.titleLabel]; - [self addSubview:self.intratemporalBtuton]; -} - -- (void)initChildLyRestrictions{ - [self.figureIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(0); - make.centerX.mas_equalTo(self.mas_centerX); - make.width.height.mas_equalTo(60); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.height.mas_equalTo(10); - make.bottom.mas_equalTo(0); - make.left.mas_equalTo(0); - }]; - - [self.intratemporalBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.right.mas_equalTo(self.figureIndicateRegard); - make.height.mas_equalTo(12); - make.width.mas_equalTo(30); - }]; - -} - -#pragma mark - setupData -- (void)setCompensationAbstract:(ThresholdReindictRewardMatrix *)compensationAbstract { - _compensationAbstract = compensationAbstract; - self.intratemporalBtuton.hidden = !(_compensationAbstract.showTime > 0); - [self.intratemporalBtuton setTitle:[NSString stringWithFormat:@"%@", _compensationAbstract.showTime] forState:UIControlStateNormal]; - self.titleLabel.text = _compensationAbstract.showText; - self.figureIndicateRegard.imageUrl = _compensationAbstract.showPir; -} - - -- (UIImageView *)figureIndicateRegard { - if (!_figureIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.imageType = ImageGenreUserIcon; - _figureIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _figureIndicateRegard.backgroundColor = UIColorFromRGB(0xE0B4FF); - _figureIndicateRegard.layer.cornerRadius = 4; - _figureIndicateRegard.layer.masksToBounds = YES; - _figureIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _figureIndicateRegard; -} - -- (UILabel *)titleLabel{ - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textColor = UIColorFromRGB(0x845DFF); - _titleLabel.font = [UIFont systemFontOfSize:10]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} - -- (UIButton *)intratemporalBtuton{ - if (!_intratemporalBtuton) { - _intratemporalBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_intratemporalBtuton setTitleColor:[DJDKMIMOMColor thresholdReindictEssayPrettify] forState:UIControlStateNormal]; - _intratemporalBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - [_intratemporalBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor compenstowardsionIntrtowardsemporalBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor compenstowardsionIntrtowardsemporalBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _intratemporalBtuton.hidden = YES; - UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 30, 12) byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(4, 4)]; - CAShapeLayer *maskLayer = [CAShapeLayer layer]; - maskLayer.path = path.CGPath; - _intratemporalBtuton.layer.mask = maskLayer; - } - return _intratemporalBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/YUMIThresholdReindictFlowProgramming.h b/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/YUMIThresholdReindictFlowProgramming.h deleted file mode 100644 index fe334521..00000000 --- a/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/YUMIThresholdReindictFlowProgramming.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMFirstRechargeFlowLayout.h -// YUMI -// -// Created by YUMI on 2021/12/24. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIThresholdReindictFlowProgramming : UICollectionViewFlowLayout - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/YUMIThresholdReindictFlowProgramming.m b/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/YUMIThresholdReindictFlowProgramming.m deleted file mode 100644 index 6dacaa0c..00000000 --- a/YuMi/Modules/YMRoom/View/FirstRecharge/View/Cell/YUMIThresholdReindictFlowProgramming.m +++ /dev/null @@ -1,92 +0,0 @@ -// -// YMFirstRechargeFlowLayout.m -// YUMI -// -// Created by YUMI on 2021/12/24. -// - -#import "YUMIThresholdReindictFlowProgramming.h" - -@interface YUMIThresholdReindictFlowProgramming () -@property (nonatomic,assign) CGFloat universalY; -@property (nonatomic,assign) CGFloat universalX; -@property (nonatomic,strong) NSMutableArray *attributeGarment; -@end - -@implementation YUMIThresholdReindictFlowProgramming - - -- (void)prepareLayout { - [super prepareLayout]; - NSInteger count = [self.collectionView numberOfItemsInSection:0]; - _universalX = self.sectionInset.left; - _universalY = self.sectionInset.top; - _attributeGarment = [NSMutableArray array]; - for (int i = 0; i< count; i++) { - NSIndexPath * indexPath = [NSIndexPath indexPathForRow:i inSection:0]; - UICollectionViewLayoutAttributes * attributes = [self layoutAttributesForItemAtIndexPath:indexPath]; - [self.attributeGarment addObject:attributes]; - } - -} - -- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath { - CGFloat contentWidth = self.collectionView.frame.size.width - self.sectionInset.left - self.sectionInset.right; - CGFloat contentHeight = self.collectionView.frame.size.height - self.sectionInset.top - self.sectionInset.bottom; - UICollectionViewLayoutAttributes * temp= [UICollectionViewLayoutAttributes layoutAttributesForCellWithIndexPath:indexPath]; - NSInteger count = [self.collectionView numberOfItemsInSection:0]; - CGFloat itemWidth = self.itemSize.width; - CGFloat itemAltitude = self.itemSize.height; - CGRect frame; - frame.size = self.itemSize; - if (count == 6) { - CGFloat vacuum =(contentWidth - itemWidth * 3) / 2; - CGFloat temIndexRow = indexPath.row % 3; - CGFloat temIndex = indexPath.row / 3; - _universalX = temIndexRow *(itemWidth + vacuum) + self.sectionInset.left; - _universalY = (itemAltitude + self.minimumLineSpacing) * temIndex + self.sectionInset.top; - - } else if(count == 5) { - CGFloat vacuum =(contentWidth - itemWidth * 3) / 2; - CGFloat temIndexRow = indexPath.row % 3; - CGFloat temIndex = indexPath.row / 3; - if (temIndex > 0) { - CGFloat leftSpace = (contentWidth - itemWidth * 2) /3; - _universalX = temIndexRow *itemWidth + leftSpace * (temIndexRow + 1) + self.sectionInset.left; - _universalY = (itemAltitude + self.minimumLineSpacing) * temIndex + self.sectionInset.top; - } else { - _universalX = temIndexRow *(itemWidth + vacuum) + self.sectionInset.left; - _universalY = (itemAltitude + self.minimumLineSpacing) * temIndex + self.sectionInset.top; - } - } else if(count == 4) { - CGFloat vacuum = (contentWidth - itemWidth * 2) / 3; - CGFloat temIndexRow = indexPath.row % 2; - CGFloat temIndex = indexPath.row / 2; - _universalX = temIndexRow *itemWidth + vacuum * (temIndexRow + 1) + self.sectionInset.left; - _universalY = (itemAltitude + self.minimumLineSpacing) * temIndex + self.sectionInset.top; - } else if(count == 3) { - CGFloat vacuum =(contentWidth - itemWidth * 3) / 2; - CGFloat temIndexRow = indexPath.row % 3; - _universalX = temIndexRow *(itemWidth + vacuum) + self.sectionInset.left; - _universalY = (contentHeight - itemAltitude) / 2 + self.sectionInset.top; - } else if(count == 2) { - CGFloat vacuum = (contentWidth - itemWidth * 2) / 3; - CGFloat temIndexRow = indexPath.row % 2; - _universalX = temIndexRow *itemWidth + vacuum * (temIndexRow + 1) + self.sectionInset.left; - _universalY = (contentHeight - itemAltitude) / 2 + self.sectionInset.top; - }else if(count == 1) { - _universalX = (contentWidth - itemWidth) / 2 + self.sectionInset.left; - _universalY = (contentHeight - itemAltitude) / 2 + self.sectionInset.top; - } - frame.origin = CGPointMake(_universalX, _universalY); - temp.frame = frame; - return temp; -} -- (CGSize)collectionViewContentSize { - return CGSizeMake(1, _universalY + self.itemSize.height + self.sectionInset.bottom); -} - -- (NSArray<__kindof UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect { - return _attributeGarment; -} -@end diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/View/XPFirstRechargeCollectionView.h b/YuMi/Modules/YMRoom/View/FirstRecharge/View/XPFirstRechargeCollectionView.h new file mode 100644 index 00000000..3bbe9c05 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FirstRecharge/View/XPFirstRechargeCollectionView.h @@ -0,0 +1,18 @@ +// +// XPFirstRechargeCollectionView.h +// YuMi +// +// Created by YuMi on 2023/2/21. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class FirstRechargeRewardModel; +@interface XPFirstRechargeCollectionView : UIView +///奖励的模型 +@property (nonatomic,strong) FirstRechargeRewardModel *rewardInfo; +- (instancetype)initWithFrame:(CGRect)frame isFirst:(BOOL)isFirst; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/View/XPFirstRechargeCollectionView.m b/YuMi/Modules/YMRoom/View/FirstRecharge/View/XPFirstRechargeCollectionView.m new file mode 100644 index 00000000..d61110f3 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FirstRecharge/View/XPFirstRechargeCollectionView.m @@ -0,0 +1,138 @@ +// +// XPFirstRechargeCollectionView.m +// YuMi +// +// Created by YuMi on 2023/2/21. +// +///Third +#import +///Tool +#import "ThemeColor+FirstRecharge.h" +#import "NetImageView.h" +#import "UIImage+Utils.h" +#import "YUMIMacroUitls.h" +#import "UIView+Corner.h" +///Model +#import "FirstRechargeRewardModel.h" +#import "XPFirstRechargeCollectionView.h" +@interface XPFirstRechargeCollectionView() +///奖励的背景图片 +@property (nonatomic,strong) UIImageView *bgImageView; +///奖励的图片 +@property (nonatomic, strong) NetImageView *iconImageView; +///显示奖励图片 +@property (nonatomic, strong) UILabel *titleLabel; +///显示奖励的时间 +@property (nonatomic, strong) UIButton *timeButton; +/// +@property (nonatomic,assign) BOOL isFirst; +@end +@implementation XPFirstRechargeCollectionView +- (instancetype)initWithFrame:(CGRect)frame isFirst:(BOOL)isFirst{ + self = [super initWithFrame:frame]; + if (self) { + self.isFirst = isFirst; + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews{ + [self addSubview:self.bgImageView]; + [self addSubview:self.iconImageView]; + [self addSubview:self.titleLabel]; + [self addSubview:self.timeButton]; +} + +- (void)initSubViewConstraints{ + CGFloat bgWidth = self.isFirst == YES ? kGetScaleWidth(100) : kGetScaleWidth(65); + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.top.equalTo(self); + make.width.height.mas_equalTo(bgWidth); + }]; + + CGFloat iconWidth = self.isFirst == YES ? kGetScaleWidth(74) : kGetScaleWidth(48); + [self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.equalTo(self.bgImageView); + make.width.height.mas_equalTo(iconWidth); + }]; + CGFloat titleWidth = self.isFirst == YES ? kGetScaleWidth(18):kGetScaleWidth(15); + CGFloat top = self.isFirst == YES ? kGetScaleWidth(8):kGetScaleWidth(4); + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(titleWidth); + make.left.right.equalTo(self); + make.top.equalTo(self.bgImageView.mas_bottom).mas_offset(top); + }]; + CGSize size = self.isFirst == YES ? CGSizeMake(kGetScaleWidth(40), kGetScaleWidth(12)):CGSizeMake(kGetScaleWidth(29), kGetScaleWidth(11)); + CGFloat timeTop = _isFirst == YES ? kGetScaleWidth(3) :kGetScaleWidth(2); + [self.timeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.left.mas_equalTo(self.bgImageView).mas_offset(timeTop); + make.size.mas_equalTo(size); + }]; + +} + +#pragma mark - setupData +- (void)setRewardInfo:(FirstRechargeRewardModel *)rewardInfo { + _rewardInfo = rewardInfo; + self.timeButton.hidden = !(_rewardInfo.showTime > 0); + [self.timeButton setTitle:[NSString stringWithFormat:@"%@", _rewardInfo.showTime] forState:UIControlStateNormal]; + self.titleLabel.text = _rewardInfo.showText; + self.iconImageView.imageUrl = _rewardInfo.showPir; +} + +- (UIImageView *)bgImageView{ + if (!_bgImageView){ + CGFloat width = _isFirst == YES ? kGetScaleWidth(100):kGetScaleWidth(65); + _bgImageView = [UIImageView new]; + _bgImageView.image = [UIImage imageNamed:@"room_first_recharge_cell_bg"]; + UIImage *bgImage = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xF4D2FF),UIColorFromRGB(0xF8E9FD)] gradientType:GradientTypeTopToBottom imgSize:CGSizeMake(width, width)]; + _bgImageView.backgroundColor = [UIColor colorWithPatternImage:bgImage]; + UIImage *lineImage = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xF8D6FF),UIColorFromRGB(0xF0BEFF)] gradientType:GradientTypeTopToBottom imgSize:CGSizeMake(width, width)]; + _bgImageView.layer.borderWidth = kGetScaleWidth(2); + _bgImageView.layer.borderColor = [UIColor colorWithPatternImage:lineImage].CGColor; + _bgImageView.layer.cornerRadius = _isFirst == YES ? kGetScaleWidth(10) : kGetScaleWidth(6); + _bgImageView.layer.masksToBounds = YES; + } + return _bgImageView; +} +- (UIImageView *)iconImageView { + if (!_iconImageView) { + CGFloat width = _isFirst == YES ? kGetScaleWidth(74):kGetScaleWidth(48); + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.imageType = ImageTypeUserIcon; + _iconImageView = [[NetImageView alloc] initWithConfig:config]; + UIImage *image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xF8D6FF),UIColorFromRGB(0xF0BEFF)] gradientType:GradientTypeTopToBottom imgSize:CGSizeMake(width, width)]; + _iconImageView.image = image; + _iconImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _iconImageView; +} + +- (UILabel *)titleLabel{ + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textColor = UIColorFromRGB(0x7E26B0); + _titleLabel.font = _isFirst == YES ? [UIFont systemFontOfSize:13] : [UIFont systemFontOfSize:11]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} + +- (UIButton *)timeButton{ + if (!_timeButton) { + CGSize size = _isFirst == YES ? CGSizeMake(kGetScaleWidth(40), kGetScaleWidth(12)):CGSizeMake(kGetScaleWidth(29), kGetScaleWidth(11)); + CGFloat corner = _isFirst == YES ? kGetScaleWidth(7):kGetScaleWidth(4); + _timeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_timeButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _timeButton.titleLabel.font = [UIFont systemFontOfSize:9]; + _timeButton.backgroundColor = [UIColor colorWithPatternImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xE669F7),UIColorFromRGB(0xE98EF4)] gradientType:GradientTypeLeftToRight imgSize:size]]; + _timeButton.hidden = YES; + [_timeButton setCornerWithLeftTopCorner:corner rightTopCorner:0 bottomLeftCorner:0 bottomRightCorner:corner size:size]; + } + return _timeButton; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/View/XPFirstRechargeSuccessView.h b/YuMi/Modules/YMRoom/View/FirstRecharge/View/XPFirstRechargeSuccessView.h new file mode 100644 index 00000000..241f68da --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FirstRecharge/View/XPFirstRechargeSuccessView.h @@ -0,0 +1,17 @@ +// +// YMFirstRechargeSuccessView.h +// YUMI +// +// Created by YUMI on 2021/12/24. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class FirstRechargeModel; +@interface XPFirstRechargeSuccessView : UIView + +@property (nonatomic,strong) FirstRechargeModel *rechargeInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/View/XPFirstRechargeSuccessView.m b/YuMi/Modules/YMRoom/View/FirstRecharge/View/XPFirstRechargeSuccessView.m new file mode 100644 index 00000000..dc0b4330 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FirstRecharge/View/XPFirstRechargeSuccessView.m @@ -0,0 +1,201 @@ +// +// YMFirstRechargeSuccessView.m +// YUMI +// +// Created by YUMI on 2021/12/24. +// + +#import "XPFirstRechargeSuccessView.h" +///Third +#import +///Tool +#import "UIImage+Utils.h" +#import "ThemeColor+FirstRecharge.h" +#import "XPFirstRechargeFlowLayout.h" +#import "TTPopup.h" +#import "NSArray+Safe.h" +///Model +#import "FirstRechargeModel.h" +///View +#import "XPFirstRechargeCollectionViewCell.h" + +@interface XPFirstRechargeSuccessView () +///背景图 +@property (nonatomic,strong) UIImageView *backImageView; +///奖励的背景 +@property (nonatomic,strong) UIImageView * rewardBackView; +///额外的奖励说明 +@property (nonatomic,strong) UIButton *extraButton; +///列表 +@property (nonatomic,strong) UICollectionView *collectionView; +///提示 +@property (nonatomic,strong) UILabel *descriptionLabel; +///知道了 +@property (nonatomic,strong) UIButton *knownButton; +///数据源 +@property (nonatomic,strong) NSArray *datasource; +@end + +@implementation XPFirstRechargeSuccessView +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backImageView]; + [self addSubview:self.knownButton]; + + [self.backImageView addSubview:self.rewardBackView]; + [self.backImageView addSubview:self.descriptionLabel]; + + [self.rewardBackView addSubview:self.extraButton]; + [self.rewardBackView addSubview:self.collectionView]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(290); + make.bottom.mas_equalTo(self.knownButton.mas_bottom); + }]; + + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.top.mas_equalTo(self); + make.height.mas_equalTo(375); + make.width.mas_equalTo(290); + }]; + + [self.knownButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(185, 45)); + make.centerX.mas_equalTo(self); + make.centerY.mas_equalTo(self.backImageView.mas_bottom); + }]; + + [self.descriptionLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self); + make.top.mas_equalTo(self.collectionView.mas_bottom).offset(21); + }]; + + [self.rewardBackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backImageView).inset(20); + make.top.mas_equalTo(self.backImageView).offset(70); + make.height.mas_equalTo(235); + }]; + + [self.extraButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(245, 18)); + make.top.mas_equalTo(self.rewardBackView).offset(10); + make.centerX.mas_equalTo(self.rewardBackView); + }]; + + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.extraButton.mas_bottom); + make.left.right.mas_equalTo(self.rewardBackView); + make.bottom.mas_equalTo(self.rewardBackView); + }]; +} + +#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPFirstRechargeCollectionViewCell * cell= [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPFirstRechargeCollectionViewCell class]) forIndexPath:indexPath]; + cell.rewardInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + return cell; +} + +#pragma mark - Event Response +- (void)knowButtonAction:(UIButton *)sender { + [TTPopup dismiss]; +} + +#pragma mark - Getters And Setters +- (void)setRechargeInfo:(FirstRechargeModel *)rechargeInfo { + _rechargeInfo = rechargeInfo; + self.datasource = _rechargeInfo.firstChargeRewardList; + [self.collectionView reloadData]; + + NSString * title = rechargeInfo.chargeProdTitle; + NSString * chargeMoneyStr = [NSString stringWithFormat:@"%ld", rechargeInfo.chargeMoney]; + NSString * giveMoneyStr = [NSString stringWithFormat:@"%ld", rechargeInfo.giveMoney]; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:[DJDKMIMOMColor rewardSegmentTextColor]}]; + [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor rewardReminderTextColor] range:[title rangeOfString:chargeMoneyStr]]; + [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor rewardReminderTextColor] range:[title rangeOfString:giveMoneyStr]]; + [self.extraButton setAttributedTitle:attribute forState:UIControlStateNormal]; +} + +- (UICollectionView *)collectionView{ + if (!_collectionView) { + XPFirstRechargeFlowLayout *layout = [[XPFirstRechargeFlowLayout alloc] init]; + layout.itemSize = CGSizeMake(70, 70+ 16); + layout.minimumLineSpacing = 12; + layout.sectionInset = UIEdgeInsetsMake(10, 10, 10, 10); + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.backgroundColor = [UIColor clearColor]; + [_collectionView registerClass:[XPFirstRechargeCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPFirstRechargeCollectionViewCell class])]; + } + return _collectionView; +} + + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.image = [UIImage imageNamed:@"room_first_recharge_success_bg"]; + } + return _backImageView; +} + +- (UILabel *)descriptionLabel { + if (!_descriptionLabel) { + _descriptionLabel = [[UILabel alloc] init]; + _descriptionLabel.text = YMLocalizedString(@"XPFirstRechargeSuccessView0"); + _descriptionLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:10]; + _descriptionLabel.textAlignment = NSTextAlignmentCenter; + _descriptionLabel.textColor = [DJDKMIMOMColor firstRechargeTextColor]; + } + return _descriptionLabel; +} + +- (UIButton *)knownButton { + if (!_knownButton) { + _knownButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_knownButton setBackgroundImage:[UIImage imageNamed:@"room_first_recharge_recharge"] forState:UIControlStateNormal]; + [_knownButton setBackgroundImage:[UIImage imageNamed:@"room_first_recharge_recharge"] forState:UIControlStateSelected]; + [_knownButton setTitle:YMLocalizedString(@"XPFirstRechargeSuccessView1") forState:UIControlStateNormal]; + _knownButton.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Bold" size:20]; + [_knownButton setTitleColor:[DJDKMIMOMColor firstRechargeTextColor] forState:UIControlStateNormal]; + [_knownButton addTarget:self action:@selector(knowButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _knownButton; +} + +- (UIButton *)extraButton { + if (!_extraButton) { + _extraButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_extraButton setBackgroundImage:[UIImage imageNamed:@"room_first_recharge_reward_extra_bg"] forState:UIControlStateNormal]; + } + return _extraButton; +} + +- (UIImageView *)rewardBackView { + if (!_rewardBackView) { + _rewardBackView = [[UIImageView alloc] init]; + _rewardBackView.image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor rewardBackgroundGradientTopColor], [DJDKMIMOMColor rewardBackgroundGradientMiddleColor], [DJDKMIMOMColor rewardBackgroundGradientTopColor]] gradientType:GradientTypeTopToBottom imgSize:CGSizeMake(10, 10)]; + _rewardBackView.layer.masksToBounds = YES; + _rewardBackView.layer.cornerRadius = 10; + } + return _rewardBackView; +} +@end diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/View/XPFirstRechargeView.h b/YuMi/Modules/YMRoom/View/FirstRecharge/View/XPFirstRechargeView.h new file mode 100644 index 00000000..0633983f --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FirstRecharge/View/XPFirstRechargeView.h @@ -0,0 +1,27 @@ +// +// XPFirstRechargeView.h +// YuMi +// +// Created by YuMi on 2023/2/27. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPFirstRechargeViewDelegate + +-(void)rechargeHandle; + +@end + + +@interface XPFirstRechargeView : UIView +@property (nonatomic,copy) NSString * type; +@property (nonatomic,copy) NSString * diamonds; +/// +/// +@property (nonatomic,weak) iddelegate ; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/View/XPFirstRechargeView.m b/YuMi/Modules/YMRoom/View/FirstRecharge/View/XPFirstRechargeView.m new file mode 100644 index 00000000..4e18e23c --- /dev/null +++ b/YuMi/Modules/YMRoom/View/FirstRecharge/View/XPFirstRechargeView.m @@ -0,0 +1,548 @@ +// +// XPFirstRechargeView.m +// YuMi +// +// Created by YuMi on 2023/2/27. +// +///Third +#import +///Tool +#import +#import "YUMIMacroUitls.h" +#import "ThemeColor+FirstRecharge.h" +#import "UIImage+Utils.h" +#import "XPFirstRechargeFlowLayout.h" +#import "NSArray+Safe.h" +#import "XNDJTDDLoadingTool.h" +#import "AccountInfoStorage.h" +#import "YYUtility.h" +#import "Api+Mine.h" +#import "XPIAPHelper.h" +#import "RechargeStorage.h" +///Model +#import "FirstRechargeModel.h" +///View +#import "XPFirstRechargeCollectionViewCell.h" +#import "XPFirstRechargeCollectionView.h" +///P +#import "XPFirstRechargePresenter.h" +#import "XPFirstRechargeProtocol.h" +///VC +#import "XPMineRechargeViewController.h" +#import "XPWebViewController.h" +#import "XPFirstRechargeView.h" +#import "Api+FirstRecharge.h" +#import "FirstRechargeModel.h" +#import "XPSkillCardPlayerManager.h" +@interface XPFirstRechargeView () +/// +@property (nonatomic,strong) UIButton *backBtn; +///背景图 +@property (nonatomic,strong) UIImageView *backImageView; +///奖励的容器 segment 额外奖励的 礼物的 +@property (nonatomic,strong) UIImageView * rewardBackView; +/// +@property (nonatomic,strong) UIImageView *typeArrowView; +///tab 切换 +@property (nonatomic,strong) UIStackView * segmentView; +///额外的奖励说明 +@property (nonatomic,strong) UIButton *extraButton; +///列表 +@property (nonatomic,strong) UICollectionView *collectionView; +///奖励说明 +@property (nonatomic,strong) UIButton *rewardHelpButton; +///礼包说明背景 +@property (nonatomic, strong) UIImageView *descripBgView; +///礼包说明 +@property (nonatomic, strong) UITextView *descripTextView; +///立即充值 +@property (nonatomic, strong) UIButton *rechargeButton; +///数据源 +@property (nonatomic,strong) NSArray *rewardArray; +///初始数据源 +@property (nonatomic,strong) NSArray *originArray; +///当前的导航栏 +@property (nonatomic,weak) UINavigationController * currentNav; +/// +@property (nonatomic,strong) XPFirstRechargeCollectionView *rechargeView; +@property (nonatomic,strong) FirstRechargeModel *currentInfo; +@property (nonatomic,copy) NSString *orderId; +@end +@implementation XPFirstRechargeView + +- (void)dealloc { + [XPIAPHelper shareHelper].delegate = nil; +} + + +-(instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if(self){ + [self initSubViews]; + [self initSubViewConstraints]; + [self getFirstRechargeRewardList]; + [XPIAPHelper shareHelper].delegate = self; + + } + return self; +} + +-(void)getFirstRechargeRewardList{ + [XNDJTDDLoadingTool showLoading]; + [Api firstRechargeRewardList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + [XNDJTDDLoadingTool hideHUD]; + if(code == 200){ + NSArray * array = [FirstRechargeModel modelsWithArray:data.data]; + [self getFirstRechargeListSuccess:array]; + return; + } + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } channelType:@"3"]; +} +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5]; + [self addSubview:self.backBtn]; + [self addSubview:self.backImageView]; + [self.backImageView addSubview:self.rewardHelpButton]; + + [self.backImageView addSubview:self.segmentView]; + [self.backImageView addSubview:self.rewardBackView]; + [self.backImageView addSubview:self.typeArrowView]; + [self.rewardBackView addSubview:self.extraButton]; + [self.backImageView addSubview:self.rechargeButton]; + [self.rewardBackView addSubview:self.collectionView]; + [self.rewardBackView addSubview:self.rechargeView]; + [self addSubview:self.descripBgView]; + [self.descripBgView addSubview:self.descripTextView]; +} + +- (void)initSubViewConstraints { + [self.backBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self); + }]; + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self); + make.height.mas_equalTo(kGetScaleWidth(460)); + make.width.mas_equalTo(kGetScaleWidth(306)); + }]; + [self.rewardHelpButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-kGetScaleWidth(11)); + make.top.mas_equalTo(kGetScaleWidth(121)); + make.width.height.mas_equalTo(kGetScaleWidth(20)); + }]; + [self.segmentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.rewardHelpButton.mas_bottom).mas_offset(kGetScaleWidth(12)); + make.height.mas_equalTo(kGetScaleWidth(30)); + make.right.mas_equalTo(-kGetScaleWidth(15)); + make.left.mas_equalTo(kGetScaleWidth(15)); + }]; + [self.rewardBackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.equalTo(self.segmentView); + make.top.mas_equalTo(self.segmentView.mas_bottom).offset(kGetScaleWidth(12)); + make.height.mas_equalTo(kGetScaleWidth(230)); + }]; + [self.typeArrowView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(15)); + make.width.mas_equalTo(kGetScaleWidth(13)); + make.height.mas_equalTo(kGetScaleWidth(7)); + make.bottom.equalTo(self.rewardBackView.mas_top); + }]; + + [self.extraButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(276), kGetScaleWidth(20))); + make.top.mas_equalTo(kGetScaleWidth(11)); + make.centerX.mas_equalTo(self.rewardBackView); + }]; + [self.rechargeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(183), kGetScaleWidth(54))); + make.centerX.mas_equalTo(self.backImageView); + make.centerY.mas_equalTo(self.backImageView.mas_bottom); + }]; + + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.extraButton.mas_bottom); + make.left.right.mas_equalTo(self.rewardBackView); + make.bottom.mas_equalTo(self.rewardBackView); + }]; + [self.rechargeView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(kGetScaleWidth(127)); + make.center.equalTo(self.collectionView); + make.width.mas_equalTo(kGetScaleWidth(100)); + }]; + [self.descripBgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.rewardHelpButton.mas_bottom).mas_offset(-2); + make.right.equalTo(self.backImageView.mas_right).mas_offset(4); + make.width.mas_equalTo(152); + make.height.mas_equalTo(81); + }]; + [self.descripTextView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.descripBgView).offset(10); + make.right.mas_equalTo(self.descripBgView).inset(5); + make.left.mas_equalTo(self.descripBgView).inset(10); + make.bottom.mas_equalTo(self.descripBgView).mas_offset(-10); + }]; +} + +- (void)createExtraRewardAttrebute:(FirstRechargeModel *)model { + self.descripTextView.text = model.chargeProdDesc; + + NSString * title = model.chargeProdTitle; + NSString * giveMoneyStr = [NSString stringWithFormat:@"%ld", model.giveMoney]; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:UIColorFromRGB(0xBE5AF6)}]; + [attribute addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12 weight:UIFontWeightSemibold] range:[title rangeOfString:giveMoneyStr]]; + [self.extraButton setAttributedTitle:attribute forState:UIControlStateNormal]; +} + +#pragma mark - XPFirstRechargeProtocol +- (void)getFirstRechargeListSuccess:(NSArray *)array { + if (array.count <= 0) return; + self.typeArrowView.hidden = NO; + self.originArray = array; + self.currentInfo = [array safeObjectAtIndex1:0]; + if (self.segmentView.arrangedSubviews.count > 0) { + [[self.segmentView arrangedSubviews] enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + [obj removeFromSuperview]; + }]; + } + for (int i = 0 ; i < array.count; i++) { + FirstRechargeModel * modelInfo = [array safeObjectAtIndex1:i]; + NSString * title = [NSString stringWithFormat:@"$%.2f", modelInfo.chargeMoney]; + UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom]; + [button setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; + [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + button.titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + [button setTitle:title forState:UIControlStateNormal]; + [button setTitle:title forState:UIControlStateSelected]; + button.tag = i; + + [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]; + [button setBackgroundImage:[UIImage imageWithColor:[UIColor clearColor]] forState:UIControlStateNormal]; + [button setBackgroundImage:[UIImage imageNamed:@"room_first_recharge_segment_select"] forState:UIControlStateSelected]; + [self.segmentView addArrangedSubview:button]; + if (i == 0) { + button.selected = YES; + [self createExtraRewardAttrebute:modelInfo]; + self.rewardArray = modelInfo.firstChargeRewardList; + [self.collectionView reloadData]; + button.layer.cornerRadius = 0; + button.layer.masksToBounds = YES; + button.layer.borderWidth = 0; + }else{ + button.layer.cornerRadius = kGetScaleWidth(8); + button.layer.masksToBounds = YES; + button.layer.borderWidth = kGetScaleWidth(1); + button.layer.borderColor = [UIColor colorWithWhite:1 alpha:0.5].CGColor; + button.backgroundColor = [UIColor colorWithWhite:1 alpha:0.3]; + } + } + [self.segmentView layoutIfNeeded]; + CGFloat x = kGetScaleWidth(15) + self.segmentView.arrangedSubviews.firstObject.frame.origin.x + self.segmentView.arrangedSubviews.firstObject.frame.size.width / 2 - kGetScaleWidth(7)/2; + [self.typeArrowView mas_updateConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(x); + }]; + self.collectionView.hidden = self.rewardArray.count < 2; + self.rechargeView.hidden = self.rewardArray.count != 1; + if(self.rewardArray.count == 1){ + self.rechargeView.rewardInfo = self.rewardArray.firstObject; + } +} + +#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.rewardArray.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPFirstRechargeCollectionViewCell * cell= [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPFirstRechargeCollectionViewCell class]) forIndexPath:indexPath]; + cell.rewardInfo = [self.rewardArray safeObjectAtIndex1:indexPath.row]; + return cell; +} + +#pragma mark - 充值 +/// 获取充值的订单编号 +/// @param chargeProdId 苹果服务器的充值 的id +- (void)requestIAPRechargeOrderWithChargeProdId:(NSString *)chargeProdId { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + NSString * deviceInfo = [YYUtility deviceID]; + NSString * clientIp= [YYUtility ipAddress]; + [Api requestIAPRecharge:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + NSString *orderId = (NSString *)data.data[@"recordId"]; + [self requestIAPRechargeOrderSuccess:orderId chargeProdId:chargeProdId]; + } else { + [XNDJTDDLoadingTool hideHUD]; + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } chargeProdId:chargeProdId uid:uid ticket:ticket deviceInfo:deviceInfo clientIp:clientIp]; +} + +- (void)requestIAPRechargeOrderSuccess:(NSString *)orderId chargeProdId:(NSString *)chargeProdId { + if (orderId.length > 0) { + self.orderId = orderId; + [[XPIAPHelper shareHelper] buyAppProductWithAppProductId:chargeProdId]; + } +} +#pragma mark - XPIAPHelperDelegate +///当前充值的状态 +- (void)rechargeProcessStatus:(PaymentStatus)status { + [XNDJTDDLoadingTool hideHUD]; + if (status == PaymentStatus_Purchased) { + [XNDJTDDLoadingTool showLoading]; + } else if (status == PaymentStatus_Purchasing) { + [XNDJTDDLoadingTool showLoading]; + } else if (status == PaymentStatus_Failed) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPIAPRechargeViewController0")]; + } else if (status == PaymentStatus_Deferred) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPIAPRechargeViewController1")]; + } +} + +///充值成功回调id +- (void)rechargeSuccess:(NSString *)transactionIdentifier { + ///保存唯一凭证 + [self saveRechageReciptWithTransactionIdentifier:transactionIdentifier]; + NSData *receiptData = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]]; + NSString * receipt = [MF_Base64Codec base64StringFromData:receiptData]; + ///二次验证 + [self checkReceiptWithData:receipt orderId:self.orderId transcationId:transactionIdentifier]; +} + +///充值成功之后保存订单到钥匙串 +- (void)saveRechageReciptWithTransactionIdentifier:(NSString *)transactionIdentifier { + NSData *receipt = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]]; + NSString *encodeStr = [receipt base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed]; + NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; + [dictionary setObject:transactionIdentifier forKey:@"transcationId"]; + [dictionary setObject:encodeStr forKey:@"recipt"]; + [dictionary setObject:self.orderId forKey:@"orderId"]; + NSString *reciptJson = [dictionary toJSONString]; + NSString * uid = [AccountInfoStorage instance].getUid; + BOOL saveSuccess = [RechargeStorage saveTranscationId:transactionIdentifier recipt:reciptJson uid:uid]; + if (!saveSuccess) { +#warning to do 保存失败 需要埋点 + } +} + +///删除本地保存的 +- (void)deleteRechageReciptWithTransactionIdentifier:(NSString *)transactionIdentifier { + NSString * uid = [AccountInfoStorage instance].getUid; + BOOL deleteSuccess = [RechargeStorage delegateTranscationId:transactionIdentifier uid:uid]; + if (deleteSuccess) { +#warning to do 保存失败 需要埋点 + } +} + +- (void)checkReceiptWithData:(NSString *)receipt orderId:(NSString *)orderId transcationId:(NSString *)transcationId { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + [Api checkReceipt:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + [self checkReceiptSuccess:transcationId]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } receipt:receipt chooseEnv:@"true" chargeRecordId:orderId transcationId:transcationId uid:uid ticket:ticket]; +} + +///二次验证成功 +- (void)checkReceiptSuccess:(NSString *)transcationId { + [self deleteRechageReciptWithTransactionIdentifier:transcationId]; + self.orderId = nil; +} + +#pragma mark - Event Response + + +- (void)rewardHelpButtonAction:(UIButton *)sender { + sender.selected = !sender.selected; + self.descripBgView.hidden = !sender.selected; +} + +- (void)rechargeButtonAction { + if (self.currentInfo == nil|| self.currentInfo.chargeProdId == nil) { + return; + } + FirstRechargeModel *model = self.currentInfo; + if (model.chargeProdId) { + [XNDJTDDLoadingTool showLoading]; + [self requestIAPRechargeOrderWithChargeProdId:model.chargeProdId]; + } +} +-(void)backAction{ + [self removeFromSuperview]; +} +- (void)buttonAction:(UIButton *)sender { + if (sender.tag <= self.originArray.count) { + FirstRechargeModel * model = [self.originArray safeObjectAtIndex1:sender.tag]; + self.currentInfo = model; + [self createExtraRewardAttrebute:model]; + self.rewardArray = model.firstChargeRewardList; + self.collectionView.hidden = self.rewardArray.count < 2; + self.rechargeView.hidden = self.rewardArray.count != 1; + if(self.rewardArray.count == 1){ + self.rechargeView.rewardInfo = self.rewardArray.firstObject; + } + [self.collectionView reloadData]; + } + CGFloat x = kGetScaleWidth(15) + sender.frame.origin.x + sender.frame.size.width / 2 - kGetScaleWidth(7)/2; + [self.typeArrowView mas_updateConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(x); + }]; + [[self.segmentView arrangedSubviews] enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + UIButton * button = obj; + if (button.tag <= self.originArray.count) { + FirstRechargeModel * model = [self.originArray safeObjectAtIndex1:sender.tag]; + [self createExtraRewardAttrebute:model]; + } + button.selected = NO; + if (sender.tag == button.tag) { + button.layer.cornerRadius = 0; + button.layer.borderWidth = 0; + button.backgroundColor = [UIColor clearColor]; + }else{ + button.layer.cornerRadius = kGetScaleWidth(8); + button.layer.masksToBounds = YES; + button.layer.borderWidth = kGetScaleWidth(1); + button.layer.borderColor = [UIColor colorWithWhite:1 alpha:0.5].CGColor; + button.backgroundColor = [UIColor colorWithWhite:1 alpha:0.3]; + } + }]; + sender.selected = !sender.selected; +} + +#pragma mark - Getters And Setters +- (UICollectionView *)collectionView{ + if (!_collectionView) { + XPFirstRechargeFlowLayout *layout = [[XPFirstRechargeFlowLayout alloc] init]; + layout.itemSize = CGSizeMake(kGetScaleWidth(65), kGetScaleWidth(96)); + layout.minimumLineSpacing = kGetScaleWidth(9); + layout.sectionInset = UIEdgeInsetsMake(kGetScaleWidth(11), kGetScaleWidth(18), kGetScaleWidth(12), kGetScaleWidth(17)); + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.backgroundColor = [UIColor clearColor]; + [_collectionView registerClass:[XPFirstRechargeCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPFirstRechargeCollectionViewCell class])]; + } + return _collectionView; +} + + + + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.image = [UIImage imageNamed:@"room_first_recharge_bg"]; + } + return _backImageView; +} + +- (UIImageView *)rewardBackView { + if (!_rewardBackView) { + _rewardBackView = [[UIImageView alloc] init]; + _rewardBackView.layer.backgroundColor = [UIColor colorWithRed:255/255.0 green:255/255.0 blue:255/255.0 alpha:1.0].CGColor; + _rewardBackView.layer.cornerRadius = kGetScaleWidth(16); + _rewardBackView.layer.masksToBounds = YES; + _rewardBackView.layer.shadowColor = [UIColor colorWithRed:240/255.0 green:162/255.0 blue:244/255.0 alpha:1.0].CGColor; + _rewardBackView.layer.shadowOffset = CGSizeMake(0,kGetScaleWidth(2)); + _rewardBackView.layer.shadowOpacity = kGetScaleWidth(1); + _rewardBackView.layer.shadowRadius = kGetScaleWidth(4); + _rewardBackView.userInteractionEnabled = YES; + + _rewardBackView.backgroundColor = [UIColor whiteColor]; + } + return _rewardBackView; +} + +- (UIButton *)extraButton { + if (!_extraButton) { + _extraButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_extraButton setBackgroundImage:[UIImage imageNamed:@"room_first_recharge_extra"] forState:UIControlStateNormal]; + + } + return _extraButton; +} + +- (UIStackView *)segmentView { + if (!_segmentView) { + _segmentView = [[UIStackView alloc] init]; + _segmentView.axis = UILayoutConstraintAxisHorizontal; + _segmentView.distribution = UIStackViewDistributionFillEqually; + _segmentView.alignment = UIStackViewAlignmentFill; + _segmentView.spacing = kGetScaleWidth(12); + } + return _segmentView; +} + +- (UIImageView *)descripBgView { + if (!_descripBgView) { + _descripBgView = [[UIImageView alloc] init]; + _descripBgView.image = [[UIImage imageNamed:@"room_first_recharge_descrip_bg"] resizableImageWithCapInsets:UIEdgeInsetsMake(35, 120, 35, 20) resizingMode:UIImageResizingModeStretch]; + _descripBgView.contentMode = UIViewContentModeScaleToFill; + _descripBgView.hidden = YES; + } + return _descripBgView; +} + +- (UITextView *)descripTextView { + if (!_descripTextView) { + _descripTextView = [[UITextView alloc] init]; + _descripTextView.text = YMLocalizedString(@"XPFirstRechargeViewController0"); + _descripTextView.textColor = UIColorFromRGB(0x333333); + _descripTextView.backgroundColor = [UIColor clearColor]; + _descripTextView.font = [UIFont systemFontOfSize:11]; + _descripTextView.editable = NO; + } + return _descripTextView; +} + +- (UIButton *)rewardHelpButton { + if (!_rewardHelpButton) { + _rewardHelpButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_rewardHelpButton setImage:[UIImage imageNamed:@"room_first_recharge_help"] forState:UIControlStateNormal]; + [_rewardHelpButton setImage:[UIImage imageNamed:@"room_first_recharge_help"] forState:UIControlStateSelected]; + [_rewardHelpButton addTarget:self action:@selector(rewardHelpButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _rewardHelpButton; +} + +- (UIButton *)rechargeButton { + if (!_rechargeButton) { + _rechargeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_rechargeButton setBackgroundImage:[UIImage imageNamed:@"room_first_recharge_recharge"] forState:UIControlStateNormal]; + [_rechargeButton setBackgroundImage:[UIImage imageNamed:@"room_first_recharge_recharge"] forState:UIControlStateSelected]; + [_rechargeButton setTitle:YMLocalizedString(@"XPFirstRechargeViewController1") forState:UIControlStateNormal]; + _rechargeButton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightSemibold]; + [_rechargeButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_rechargeButton addTarget:self action:@selector(rechargeButtonAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _rechargeButton; +} +- (UIImageView *)typeArrowView{ + if (!_typeArrowView){ + _typeArrowView = [UIImageView new]; + _typeArrowView.image = [UIImage imageNamed:@"room_first_recharge_recharge_arrow"]; + _typeArrowView.hidden = YES; + } + return _typeArrowView; +} +- (XPFirstRechargeCollectionView *)rechargeView{ + if (!_rechargeView){ + _rechargeView = [[XPFirstRechargeCollectionView alloc]initWithFrame:CGRectZero isFirst:YES]; + _rechargeView.hidden = YES; + } + return _rechargeView; +} +- (UIButton *)backBtn{ + if (!_backBtn){ + _backBtn = [UIButton new]; + [_backBtn addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside]; + + } + return _backBtn; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/View/YUMIThresholdReindictAssembletionRegard.h b/YuMi/Modules/YMRoom/View/FirstRecharge/View/YUMIThresholdReindictAssembletionRegard.h deleted file mode 100644 index 8beaa4e7..00000000 --- a/YuMi/Modules/YMRoom/View/FirstRecharge/View/YUMIThresholdReindictAssembletionRegard.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YUMIThresholdReindictAssembletionRegard.h -// YuMi -// -// Created by YuMi on 2023/2/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ThresholdReindictRewardMatrix; -@interface YUMIThresholdReindictAssembletionRegard : UIView -@property (nonatomic,strong) ThresholdReindictRewardMatrix *compensationAbstract; -- (instancetype)initWithFrame:(CGRect)frame isThreshold:(BOOL)isThreshold; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/View/YUMIThresholdReindictAssembletionRegard.m b/YuMi/Modules/YMRoom/View/FirstRecharge/View/YUMIThresholdReindictAssembletionRegard.m deleted file mode 100644 index faa3fb10..00000000 --- a/YuMi/Modules/YMRoom/View/FirstRecharge/View/YUMIThresholdReindictAssembletionRegard.m +++ /dev/null @@ -1,131 +0,0 @@ -// -// YUMIThresholdReindictAssembletionRegard.m -// YuMi -// -// Created by YuMi on 2023/2/21. -// -///Third -#import -#import "ThemeColor+FirstRecharge.h" -#import "NetIndicateRegard.h" -#import "UIImage+Utils.h" -#import "YUMIMacroUitls.h" -#import "UIView+Corner.h" -#import "ThresholdReindictRewardMatrix.h" -#import "YUMIThresholdReindictAssembletionRegard.h" -@interface YUMIThresholdReindictAssembletionRegard() -@property (nonatomic,strong) UIImageView *backgroundIndicateRegard; -@property (nonatomic, strong) NetIndicateRegard *figureIndicateRegard; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UIButton *intratemporalBtuton; -@property (nonatomic,assign) BOOL isThreshold; -@end -@implementation YUMIThresholdReindictAssembletionRegard -- (instancetype)initWithFrame:(CGRect)frame isThreshold:(BOOL)isThreshold{ - self = [super initWithFrame:frame]; - if (self) { - self.isThreshold = isThreshold; - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews{ - [self addSubview:self.backgroundIndicateRegard]; - [self addSubview:self.figureIndicateRegard]; - [self addSubview:self.titleLabel]; - [self addSubview:self.intratemporalBtuton]; -} - -- (void)initChildLyRestrictions{ - CGFloat bgWidth = self.isThreshold == YES ? kGetScaleWidth(100) : kGetScaleWidth(65); - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.top.equalTo(self); - make.width.height.mas_equalTo(bgWidth); - }]; - - CGFloat iconWidth = self.isThreshold == YES ? kGetScaleWidth(74) : kGetScaleWidth(48); - [self.figureIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.equalTo(self.backgroundIndicateRegard); - make.width.height.mas_equalTo(iconWidth); - }]; - CGFloat titleWidth = self.isThreshold == YES ? kGetScaleWidth(18):kGetScaleWidth(15); - CGFloat top = self.isThreshold == YES ? kGetScaleWidth(8):kGetScaleWidth(4); - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(titleWidth); - make.left.right.equalTo(self); - make.top.equalTo(self.backgroundIndicateRegard.mas_bottom).mas_offset(top); - }]; - CGSize size = self.isThreshold == YES ? CGSizeMake(kGetScaleWidth(40), kGetScaleWidth(12)):CGSizeMake(kGetScaleWidth(29), kGetScaleWidth(11)); - CGFloat timeTop = _isThreshold == YES ? kGetScaleWidth(3) :kGetScaleWidth(2); - [self.intratemporalBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.left.mas_equalTo(self.backgroundIndicateRegard).mas_offset(timeTop); - make.size.mas_equalTo(size); - }]; - -} - -#pragma mark - setupData -- (void)setCompensationAbstract:(ThresholdReindictRewardMatrix *)compensationAbstract { - _compensationAbstract = compensationAbstract; - self.intratemporalBtuton.hidden = !(_compensationAbstract.showTime > 0); - [self.intratemporalBtuton setTitle:[NSString stringWithFormat:@"%@", _compensationAbstract.showTime] forState:UIControlStateNormal]; - self.titleLabel.text = _compensationAbstract.showText; - self.figureIndicateRegard.imageUrl = _compensationAbstract.showPir; -} - -- (UIImageView *)backgroundIndicateRegard{ - if (!_backgroundIndicateRegard){ - CGFloat width = _isThreshold == YES ? kGetScaleWidth(100):kGetScaleWidth(65); - _backgroundIndicateRegard = [UIImageView new]; - _backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_first_recharge_cell_background"]; - UIImage *bgImage = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xF4D2FF),UIColorFromRGB(0xF8E9FD)] gradientType:GradientGenreTopToBottom imgSize:CGSizeMake(width, width)]; - _backgroundIndicateRegard.backgroundColor = [UIColor colorWithPatternImage:bgImage]; - UIImage *lineImage = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xF8D6FF),UIColorFromRGB(0xF0BEFF)] gradientType:GradientGenreTopToBottom imgSize:CGSizeMake(width, width)]; - _backgroundIndicateRegard.layer.borderWidth = kGetScaleWidth(2); - _backgroundIndicateRegard.layer.borderColor = [UIColor colorWithPatternImage:lineImage].CGColor; - _backgroundIndicateRegard.layer.cornerRadius = _isThreshold == YES ? kGetScaleWidth(10) : kGetScaleWidth(6); - _backgroundIndicateRegard.layer.masksToBounds = YES; - } - return _backgroundIndicateRegard; -} -- (UIImageView *)figureIndicateRegard { - if (!_figureIndicateRegard) { - CGFloat width = _isThreshold == YES ? kGetScaleWidth(74):kGetScaleWidth(48); - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.imageType = ImageGenreUserIcon; - _figureIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - UIImage *image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xF8D6FF),UIColorFromRGB(0xF0BEFF)] gradientType:GradientGenreTopToBottom imgSize:CGSizeMake(width, width)]; - _figureIndicateRegard.image = image; - _figureIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _figureIndicateRegard; -} - -- (UILabel *)titleLabel{ - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textColor = UIColorFromRGB(0x7E26B0); - _titleLabel.font = _isThreshold == YES ? [UIFont systemFontOfSize:13] : [UIFont systemFontOfSize:11]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} - -- (UIButton *)intratemporalBtuton{ - if (!_intratemporalBtuton) { - CGSize size = _isThreshold == YES ? CGSizeMake(kGetScaleWidth(40), kGetScaleWidth(12)):CGSizeMake(kGetScaleWidth(29), kGetScaleWidth(11)); - CGFloat corner = _isThreshold == YES ? kGetScaleWidth(7):kGetScaleWidth(4); - _intratemporalBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_intratemporalBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _intratemporalBtuton.titleLabel.font = [UIFont systemFontOfSize:9]; - _intratemporalBtuton.backgroundColor = [UIColor colorWithPatternImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xE669F7),UIColorFromRGB(0xE98EF4)] gradientType:GradientGenreLeftToRight imgSize:size]]; - _intratemporalBtuton.hidden = YES; - [_intratemporalBtuton setMonopolizeAboutContraryApexMonopolize:corner rightTopCorner:0 bottomLeftCorner:0 bottomRightCorner:corner size:size]; - } - return _intratemporalBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/View/YUMIThresholdReindictRegard.h b/YuMi/Modules/YMRoom/View/FirstRecharge/View/YUMIThresholdReindictRegard.h deleted file mode 100644 index 32370de7..00000000 --- a/YuMi/Modules/YMRoom/View/FirstRecharge/View/YUMIThresholdReindictRegard.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YUMIThresholdReindictRegard.h -// YuMi -// -// Created by YuMi on 2023/2/27. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCFirstReindictRegardRepresendtation - --(void)reindictShank; - -@end - - -@interface YUMIThresholdReindictRegard : UIView -@property (nonatomic,copy) NSString * type; -@property (nonatomic,copy) NSString * diamonds; -@property (nonatomic,weak) iddelegate ; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/View/YUMIThresholdReindictRegard.m b/YuMi/Modules/YMRoom/View/FirstRecharge/View/YUMIThresholdReindictRegard.m deleted file mode 100644 index 0052f399..00000000 --- a/YuMi/Modules/YMRoom/View/FirstRecharge/View/YUMIThresholdReindictRegard.m +++ /dev/null @@ -1,521 +0,0 @@ -// -// YUMIThresholdReindictRegard.m -// YuMi -// -// Created by YuMi on 2023/2/27. -// -///Third -#import -#import -#import "YUMIMacroUitls.h" -#import "ThemeColor+FirstRecharge.h" -#import "UIImage+Utils.h" -#import "YUMIThresholdReindictFlowProgramming.h" -#import "NSArray+Safe.h" -#import "XNDJTBWGLoadingTool.h" -#import "AccountAbstractStorage.h" -#import "YYUtility.h" -#import "Api+Mine.h" -#import "YUMIIAPFacilitater.h" -#import "ReindictStorage.h" -#import "ThresholdReindictMatrix.h" -#import "YUMIThresholdReindictAssembletionRegardElement.h" -#import "YUMIThresholdReindictAssembletionRegard.h" -#import "YUMIThresholdReindictExternalizer.h" -#import "FBCFirstReindictCeremony.h" -#import "YUMIManeReindictRegardGovernancer.h" -#import "YUMITissueRegardGovernancer.h" -#import "YUMIThresholdReindictRegard.h" -#import "Api+FirstRecharge.h" -#import "ThresholdReindictMatrix.h" -#import "YUMICommunicationSolitaireDisporterExecutive.h" -@interface YUMIThresholdReindictRegard () -@property (nonatomic,strong) UIButton *encourageBtuton; -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) UIImageView * compensationEncourageRegard; -@property (nonatomic,strong) UIImageView *genreArrowRegard; -@property (nonatomic,strong) UIStackView * segmentRegard; -@property (nonatomic,strong) UIButton *extraBtuton; -@property (nonatomic,strong) UICollectionView *collectionView; -@property (nonatomic,strong) UIButton *compensationFacilitateBtuton; -@property (nonatomic, strong) UIImageView *sequenceripBackgroundRegard; -@property (nonatomic, strong) UITextView *sequenceripEssayRegard; -@property (nonatomic, strong) UIButton *reindictBtuton; -@property (nonatomic,strong) NSArray *compensationGarment; -@property (nonatomic,strong) NSArray *derivationGarment; -@property (nonatomic,weak) UINavigationController * universalNev; -@property (nonatomic,strong) YUMIThresholdReindictAssembletionRegard *reindictRegard; -@property (nonatomic,strong) ThresholdReindictMatrix *universalAbstract; -@property (nonatomic,copy) NSString *indentId; -@end -@implementation YUMIThresholdReindictRegard - -- (void)dealloc { - [YUMIIAPFacilitater partowardsiciptowardsionFacilittowardseer].delegate = nil; -} - - --(instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if(self){ - [self initSubViews]; - [self initChildLyRestrictions]; - [self acquireThresholdReindictCompenstowardsionSttowardsement]; - [YUMIIAPFacilitater partowardsiciptowardsionFacilittowardseer].delegate = self; - - } - return self; -} - --(void)acquireThresholdReindictCompenstowardsionSttowardsement{ - [XNDJTBWGLoadingTool EvidenceChambering]; - [Api thresholdReindictCompenstowardsionSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - [XNDJTBWGLoadingTool brakeHUD]; - if(code == 200){ - NSArray * array = [ThresholdReindictMatrix mtowardsrixsAboutGarment:data.data]; - [self acquireThresholdReindictSttowardsementAccomplishment:array]; - return; - } - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } channelType:@"3"]; -} -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5]; - [self addSubview:self.encourageBtuton]; - [self addSubview:self.encourageIndicateRegard]; - [self.encourageIndicateRegard addSubview:self.compensationFacilitateBtuton]; - - [self.encourageIndicateRegard addSubview:self.segmentRegard]; - [self.encourageIndicateRegard addSubview:self.compensationEncourageRegard]; - [self.encourageIndicateRegard addSubview:self.genreArrowRegard]; - [self.compensationEncourageRegard addSubview:self.extraBtuton]; - [self.encourageIndicateRegard addSubview:self.reindictBtuton]; - [self.compensationEncourageRegard addSubview:self.collectionView]; - [self.compensationEncourageRegard addSubview:self.reindictRegard]; - [self addSubview:self.sequenceripBackgroundRegard]; - [self.sequenceripBackgroundRegard addSubview:self.sequenceripEssayRegard]; -} - -- (void)initChildLyRestrictions { - [self.encourageBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self); - }]; - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.mas_equalTo(self); - make.height.mas_equalTo(kGetScaleWidth(460)); - make.width.mas_equalTo(kGetScaleWidth(306)); - }]; - [self.compensationFacilitateBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-kGetScaleWidth(11)); - make.top.mas_equalTo(kGetScaleWidth(121)); - make.width.height.mas_equalTo(kGetScaleWidth(20)); - }]; - [self.segmentRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.compensationFacilitateBtuton.mas_bottom).mas_offset(kGetScaleWidth(12)); - make.height.mas_equalTo(kGetScaleWidth(30)); - make.right.mas_equalTo(-kGetScaleWidth(15)); - make.left.mas_equalTo(kGetScaleWidth(15)); - }]; - [self.compensationEncourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.equalTo(self.segmentRegard); - make.top.mas_equalTo(self.segmentRegard.mas_bottom).offset(kGetScaleWidth(12)); - make.height.mas_equalTo(kGetScaleWidth(230)); - }]; - [self.genreArrowRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(kGetScaleWidth(15)); - make.width.mas_equalTo(kGetScaleWidth(13)); - make.height.mas_equalTo(kGetScaleWidth(7)); - make.bottom.equalTo(self.compensationEncourageRegard.mas_top); - }]; - - [self.extraBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(276), kGetScaleWidth(20))); - make.top.mas_equalTo(kGetScaleWidth(11)); - make.centerX.mas_equalTo(self.compensationEncourageRegard); - }]; - [self.reindictBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(183), kGetScaleWidth(54))); - make.centerX.mas_equalTo(self.encourageIndicateRegard); - make.centerY.mas_equalTo(self.encourageIndicateRegard.mas_bottom); - }]; - - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.extraBtuton.mas_bottom); - make.left.right.mas_equalTo(self.compensationEncourageRegard); - make.bottom.mas_equalTo(self.compensationEncourageRegard); - }]; - [self.reindictRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(kGetScaleWidth(127)); - make.center.equalTo(self.collectionView); - make.width.mas_equalTo(kGetScaleWidth(100)); - }]; - [self.sequenceripBackgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.compensationFacilitateBtuton.mas_bottom).mas_offset(-2); - make.right.equalTo(self.encourageIndicateRegard.mas_right).mas_offset(4); - make.width.mas_equalTo(152); - make.height.mas_equalTo(81); - }]; - [self.sequenceripEssayRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.sequenceripBackgroundRegard).offset(10); - make.right.mas_equalTo(self.sequenceripBackgroundRegard).inset(5); - make.left.mas_equalTo(self.sequenceripBackgroundRegard).inset(10); - make.bottom.mas_equalTo(self.sequenceripBackgroundRegard).mas_offset(-10); - }]; -} - -- (void)produceExtraCompenstowardsionTowardstrebute:(ThresholdReindictMatrix *)model { - self.sequenceripEssayRegard.text = model.chargeProdDesc; - - NSString * title = model.chargeProdTitle; - NSString * giveMoneyStr = [NSString stringWithFormat:@"%ld", model.giveMoney]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:UIColorFromRGB(0xBE5AF6)}]; - [attribute addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12 weight:UIFontWeightSemibold] range:[title rangeOfString:giveMoneyStr]]; - [self.extraBtuton setAttributedTitle:attribute forState:UIControlStateNormal]; -} - -#pragma mark - FBCFirstReindictCeremony -- (void)acquireThresholdReindictSttowardsementAccomplishment:(NSArray *)array { - if (array.count <= 0) return; - self.genreArrowRegard.hidden = NO; - self.derivationGarment = array; - self.universalAbstract = [array secureGroalTowardsIndictowardsrix1:0]; - if (self.segmentRegard.arrangedSubviews.count > 0) { - [[self.segmentRegard arrangedSubviews] enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - [obj removeFromSuperview]; - }]; - } - for (int i = 0 ; i < array.count; i++) { - ThresholdReindictMatrix * modelInfo = [array secureGroalTowardsIndictowardsrix1:i]; - NSString * title = [NSString stringWithFormat:@"$%.2f", modelInfo.chargeMoney]; - UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom]; - [button setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; - [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - button.titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - [button setTitle:title forState:UIControlStateNormal]; - [button setTitle:title forState:UIControlStateSelected]; - button.tag = i; - - [button addTarget:self action:@selector(buttonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [button setBackgroundImage:[UIImage imageWithColor:[UIColor clearColor]] forState:UIControlStateNormal]; - [button setBackgroundImage:[UIImage imageNamed:@"yumi_scope_first_recharge_segment_select"] forState:UIControlStateSelected]; - [self.segmentRegard addArrangedSubview:button]; - if (i == 0) { - button.selected = YES; - [self produceExtraCompenstowardsionTowardstrebute:modelInfo]; - self.compensationGarment = modelInfo.firstChargeRewardList; - [self.collectionView reloadData]; - button.layer.cornerRadius = 0; - button.layer.masksToBounds = YES; - button.layer.borderWidth = 0; - }else{ - button.layer.cornerRadius = kGetScaleWidth(8); - button.layer.masksToBounds = YES; - button.layer.borderWidth = kGetScaleWidth(1); - button.layer.borderColor = [UIColor colorWithWhite:1 alpha:0.5].CGColor; - button.backgroundColor = [UIColor colorWithWhite:1 alpha:0.3]; - } - } - [self.segmentRegard layoutIfNeeded]; - CGFloat x = kGetScaleWidth(15) + self.segmentRegard.arrangedSubviews.firstObject.frame.origin.x + self.segmentRegard.arrangedSubviews.firstObject.frame.size.width / 2 - kGetScaleWidth(7)/2; - [self.genreArrowRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(x); - }]; - self.collectionView.hidden = self.compensationGarment.count < 2; - self.reindictRegard.hidden = self.compensationGarment.count != 1; - if(self.compensationGarment.count == 1){ - self.reindictRegard.compensationAbstract = self.compensationGarment.firstObject; - } -} - -#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.compensationGarment.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMIThresholdReindictAssembletionRegardElement * cell= [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIThresholdReindictAssembletionRegardElement class]) forIndexPath:indexPath]; - cell.compensationAbstract = [self.compensationGarment secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; -} - -#pragma mark - 充值 -- (void)requisitionPCQReindictTellingAboutInstructionProdId:(NSString *)chargeProdId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - NSString * deviceInfo = [YYUtility deviceID]; - NSString * clientIp= [YYUtility ipAccelerateress]; - [Api requisitionPCQReindict:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSString *indentId = (NSString *)data.data[@"recordId"]; - [self requisitionPCQReindictTellingAccomplishment:indentId chargeProdId:chargeProdId]; - } else { - [XNDJTBWGLoadingTool brakeHUD]; - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } chargeProdId:chargeProdId uid:uid ticket:ticket deviceInfo:deviceInfo clientIp:clientIp]; -} - -- (void)requisitionPCQReindictTellingAccomplishment:(NSString *)indentId chargeProdId:(NSString *)chargeProdId { - if (indentId.length > 0) { - self.indentId = indentId; - [[YUMIIAPFacilitater partowardsiciptowardsionFacilittowardseer] acquireAplictowardsionProductAboutAplictowardsionProductId:chargeProdId]; - } -} -#pragma mark - FBCIAPHelperRepresendtation -- (void)reindictProcessPosition:(PaymentStatus)status { - [XNDJTBWGLoadingTool brakeHUD]; - if (status == PaymentStatus_Purchased) { - [XNDJTBWGLoadingTool EvidenceChambering]; - } else if (status == PaymentStatus_Purchasing) { - [XNDJTBWGLoadingTool EvidenceChambering]; - } else if (status == PaymentStatus_Failed) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"XPIAP_Recharge_View_Controller_0")]; - } else if (status == PaymentStatus_Deferred) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"XPIAP_Recharge_View_Controller_1")]; - } -} - -- (void)reindictAccomplishment:(NSString *)transactionIdentifier { - - [self preserveRechageReciptAboutTransperformanceAplictowardsionraiser:transactionIdentifier]; - NSData *receiptData = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]]; - NSString * receipt = [MF_Base64Codec base64StringFromData:receiptData]; - - [self examineReceiptAboutTowardsoloudspeaker:receipt indentId:self.indentId transcationId:transactionIdentifier]; -} - -- (void)preserveRechageReciptAboutTransperformanceAplictowardsionraiser:(NSString *)transactionIdentifier { - NSData *receipt = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]]; - NSString *encodeStr = [receipt base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed]; - NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; - [dictionary setObject:transactionIdentifier forKey:@"transcationId"]; - [dictionary setObject:encodeStr forKey:@"recipt"]; - [dictionary setObject:self.indentId forKey:@"orderId"]; - NSString *reciptJson = [dictionary toJSONBWSttr]; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - BOOL saveSuccess = [ReindictStorage preserveSplconcludeidId:transactionIdentifier recipt:reciptJson uid:uid]; - if (!saveSuccess) { -#warning to do 保存失败 需要埋点 - } -} - -- (void)representtowardsionRechageReciptAboutTransperformanceAplictowardsionraiser:(NSString *)transactionIdentifier { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - BOOL deleteSuccess = [ReindictStorage delegtowardseSplconcludeidId:transactionIdentifier uid:uid]; - if (deleteSuccess) { -#warning to do 保存失败 需要埋点 - } -} - -- (void)examineReceiptAboutTowardsoloudspeaker:(NSString *)receipt indentId:(NSString *)indentId transcationId:(NSString *)transcationId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - [Api checkReceipt:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - [self examineReceiptAccomplishment:transcationId]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } receipt:receipt chooseEnv:@"true" chargeRecordId:indentId transcationId:transcationId uid:uid ticket:ticket]; -} - -- (void)examineReceiptAccomplishment:(NSString *)transcationId { - [self representtowardsionRechageReciptAboutTransperformanceAplictowardsionraiser:transcationId]; - self.indentId = nil; -} - -#pragma mark - Event Response - - -- (void)compenstowardsionFacilittowardseBtutonPerformance:(UIButton *)sender { - sender.selected = !sender.selected; - self.sequenceripBackgroundRegard.hidden = !sender.selected; -} - -- (void)reindictBtutonPerformance { - if (self.universalAbstract == nil|| self.universalAbstract.chargeProdId == nil) { - return; - } - ThresholdReindictMatrix *model = self.universalAbstract; - if (model.chargeProdId) { - [XNDJTBWGLoadingTool EvidenceChambering]; - [self requisitionPCQReindictTellingAboutInstructionProdId:model.chargeProdId]; - } -} --(void)backAction{ - [self removeFromSuperview]; -} -- (void)buttonPerformance:(UIButton *)sender { - if (sender.tag <= self.derivationGarment.count) { - ThresholdReindictMatrix * model = [self.derivationGarment secureGroalTowardsIndictowardsrix1:sender.tag]; - self.universalAbstract = model; - [self produceExtraCompenstowardsionTowardstrebute:model]; - self.compensationGarment = model.firstChargeRewardList; - self.collectionView.hidden = self.compensationGarment.count < 2; - self.reindictRegard.hidden = self.compensationGarment.count != 1; - if(self.compensationGarment.count == 1){ - self.reindictRegard.compensationAbstract = self.compensationGarment.firstObject; - } - [self.collectionView reloadData]; - } - CGFloat x = kGetScaleWidth(15) + sender.frame.origin.x + sender.frame.size.width / 2 - kGetScaleWidth(7)/2; - [self.genreArrowRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(x); - }]; - [[self.segmentRegard arrangedSubviews] enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - UIButton * button = obj; - if (button.tag <= self.derivationGarment.count) { - ThresholdReindictMatrix * model = [self.derivationGarment secureGroalTowardsIndictowardsrix1:sender.tag]; - [self produceExtraCompenstowardsionTowardstrebute:model]; - } - button.selected = NO; - if (sender.tag == button.tag) { - button.layer.cornerRadius = 0; - button.layer.borderWidth = 0; - button.backgroundColor = [UIColor clearColor]; - }else{ - button.layer.cornerRadius = kGetScaleWidth(8); - button.layer.masksToBounds = YES; - button.layer.borderWidth = kGetScaleWidth(1); - button.layer.borderColor = [UIColor colorWithWhite:1 alpha:0.5].CGColor; - button.backgroundColor = [UIColor colorWithWhite:1 alpha:0.3]; - } - }]; - sender.selected = !sender.selected; -} - -#pragma mark - Getters And Setters -- (UICollectionView *)collectionView{ - if (!_collectionView) { - YUMIThresholdReindictFlowProgramming *layout = [[YUMIThresholdReindictFlowProgramming alloc] init]; - layout.itemSize = CGSizeMake(kGetScaleWidth(65), kGetScaleWidth(96)); - layout.minimumLineSpacing = kGetScaleWidth(9); - layout.sectionInset = UIEdgeInsetsMake(kGetScaleWidth(11), kGetScaleWidth(18), kGetScaleWidth(12), kGetScaleWidth(17)); - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.backgroundColor = [UIColor clearColor]; - [_collectionView registerClass:[YUMIThresholdReindictAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIThresholdReindictAssembletionRegardElement class])]; - } - return _collectionView; -} - - - - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_first_recharge_background"]; - } - return _encourageIndicateRegard; -} - -- (UIImageView *)compensationEncourageRegard { - if (!_compensationEncourageRegard) { - _compensationEncourageRegard = [[UIImageView alloc] init]; - _compensationEncourageRegard.layer.backgroundColor = [UIColor colorWithRed:255/255.0 green:255/255.0 blue:255/255.0 alpha:1.0].CGColor; - _compensationEncourageRegard.layer.cornerRadius = kGetScaleWidth(16); - _compensationEncourageRegard.layer.masksToBounds = YES; - _compensationEncourageRegard.layer.shadowColor = [UIColor colorWithRed:240/255.0 green:162/255.0 blue:244/255.0 alpha:1.0].CGColor; - _compensationEncourageRegard.layer.shadowOffset = CGSizeMake(0,kGetScaleWidth(2)); - _compensationEncourageRegard.layer.shadowOpacity = kGetScaleWidth(1); - _compensationEncourageRegard.layer.shadowRadius = kGetScaleWidth(4); - _compensationEncourageRegard.userInteractionEnabled = YES; - - _compensationEncourageRegard.backgroundColor = [UIColor whiteColor]; - } - return _compensationEncourageRegard; -} - -- (UIButton *)extraBtuton { - if (!_extraBtuton) { - _extraBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_extraBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_scope_first_recharge_extra"] forState:UIControlStateNormal]; - - } - return _extraBtuton; -} - -- (UIStackView *)segmentRegard { - if (!_segmentRegard) { - _segmentRegard = [[UIStackView alloc] init]; - _segmentRegard.axis = UILayoutConstraintAxisHorizontal; - _segmentRegard.distribution = UIStackViewDistributionFillEqually; - _segmentRegard.alignment = UIStackViewAlignmentFill; - _segmentRegard.spacing = kGetScaleWidth(12); - } - return _segmentRegard; -} - -- (UIImageView *)sequenceripBackgroundRegard { - if (!_sequenceripBackgroundRegard) { - _sequenceripBackgroundRegard = [[UIImageView alloc] init]; - _sequenceripBackgroundRegard.image = [[UIImage imageNamed:@"yumi_scope_first_recharge_descrip_background"] resizableImageWithCapInsets:UIEdgeInsetsMake(35, 120, 35, 20) resizingMode:UIImageResizingModeStretch]; - _sequenceripBackgroundRegard.contentMode = UIViewContentModeScaleToFill; - _sequenceripBackgroundRegard.hidden = YES; - } - return _sequenceripBackgroundRegard; -} - -- (UITextView *)sequenceripEssayRegard { - if (!_sequenceripEssayRegard) { - _sequenceripEssayRegard = [[UITextView alloc] init]; - _sequenceripEssayRegard.text = YMLocalizedString(@"YUMI_First_Recharge_View_Controller_0"); - _sequenceripEssayRegard.textColor = UIColorFromRGB(0x333333); - _sequenceripEssayRegard.backgroundColor = [UIColor clearColor]; - _sequenceripEssayRegard.font = [UIFont systemFontOfSize:11]; - _sequenceripEssayRegard.editable = NO; - } - return _sequenceripEssayRegard; -} - -- (UIButton *)compensationFacilitateBtuton { - if (!_compensationFacilitateBtuton) { - _compensationFacilitateBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_compensationFacilitateBtuton setImage:[UIImage imageNamed:@"yumi_scope_first_recharge_help"] forState:UIControlStateNormal]; - [_compensationFacilitateBtuton setImage:[UIImage imageNamed:@"yumi_scope_first_recharge_help"] forState:UIControlStateSelected]; - [_compensationFacilitateBtuton addTarget:self action:@selector(compenstowardsionFacilittowardseBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _compensationFacilitateBtuton; -} - -- (UIButton *)reindictBtuton { - if (!_reindictBtuton) { - _reindictBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_reindictBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_scope_first_recharge_recharge"] forState:UIControlStateNormal]; - [_reindictBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_scope_first_recharge_recharge"] forState:UIControlStateSelected]; - [_reindictBtuton setTitle:YMLocalizedString(@"YUMI_First_Recharge_View_Controller_1") forState:UIControlStateNormal]; - _reindictBtuton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightSemibold]; - [_reindictBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [_reindictBtuton addTarget:self action:@selector(reindictBtutonPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _reindictBtuton; -} -- (UIImageView *)genreArrowRegard{ - if (!_genreArrowRegard){ - _genreArrowRegard = [UIImageView new]; - _genreArrowRegard.image = [UIImage imageNamed:@"yumi_scope_first_recharge_recharge_arrow"]; - _genreArrowRegard.hidden = YES; - } - return _genreArrowRegard; -} -- (YUMIThresholdReindictAssembletionRegard *)reindictRegard{ - if (!_reindictRegard){ - _reindictRegard = [[YUMIThresholdReindictAssembletionRegard alloc]initWithFrame:CGRectZero isThreshold:YES]; - _reindictRegard.hidden = YES; - } - return _reindictRegard; -} -- (UIButton *)encourageBtuton{ - if (!_encourageBtuton){ - _encourageBtuton = [UIButton new]; - [_encourageBtuton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside]; - - } - return _encourageBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/View/YUMIThresholdReindictSuccessRegard.h b/YuMi/Modules/YMRoom/View/FirstRecharge/View/YUMIThresholdReindictSuccessRegard.h deleted file mode 100644 index a3c207a1..00000000 --- a/YuMi/Modules/YMRoom/View/FirstRecharge/View/YUMIThresholdReindictSuccessRegard.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMFirstRechargeSuccessView.h -// YUMI -// -// Created by YUMI on 2021/12/24. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ThresholdReindictMatrix; -@interface YUMIThresholdReindictSuccessRegard : UIView - -@property (nonatomic,strong) ThresholdReindictMatrix *reindictAbstract; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/FirstRecharge/View/YUMIThresholdReindictSuccessRegard.m b/YuMi/Modules/YMRoom/View/FirstRecharge/View/YUMIThresholdReindictSuccessRegard.m deleted file mode 100644 index 07c80708..00000000 --- a/YuMi/Modules/YMRoom/View/FirstRecharge/View/YUMIThresholdReindictSuccessRegard.m +++ /dev/null @@ -1,190 +0,0 @@ -// -// YMFirstRechargeSuccessView.m -// YUMI -// -// Created by YUMI on 2021/12/24. -// - -#import "YUMIThresholdReindictSuccessRegard.h" -#import -#import "UIImage+Utils.h" -#import "ThemeColor+FirstRecharge.h" -#import "YUMIThresholdReindictFlowProgramming.h" -#import "MKJPopup.h" -#import "NSArray+Safe.h" -#import "ThresholdReindictMatrix.h" -#import "YUMIThresholdReindictAssembletionRegardElement.h" - -@interface YUMIThresholdReindictSuccessRegard () -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) UIImageView * compensationEncourageRegard; -@property (nonatomic,strong) UIButton *extraBtuton; -@property (nonatomic,strong) UICollectionView *collectionView; -@property (nonatomic,strong) UILabel *sequenceriptionSequencignation; -@property (nonatomic,strong) UIButton *knownBtuton; -@property (nonatomic,strong) NSArray *datasource; -@end - -@implementation YUMIThresholdReindictSuccessRegard -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.encourageIndicateRegard]; - [self addSubview:self.knownBtuton]; - - [self.encourageIndicateRegard addSubview:self.compensationEncourageRegard]; - [self.encourageIndicateRegard addSubview:self.sequenceriptionSequencignation]; - - [self.compensationEncourageRegard addSubview:self.extraBtuton]; - [self.compensationEncourageRegard addSubview:self.collectionView]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(290); - make.bottom.mas_equalTo(self.knownBtuton.mas_bottom); - }]; - - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.top.mas_equalTo(self); - make.height.mas_equalTo(375); - make.width.mas_equalTo(290); - }]; - - [self.knownBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(185, 45)); - make.centerX.mas_equalTo(self); - make.centerY.mas_equalTo(self.encourageIndicateRegard.mas_bottom); - }]; - - [self.sequenceriptionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self); - make.top.mas_equalTo(self.collectionView.mas_bottom).offset(21); - }]; - - [self.compensationEncourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageIndicateRegard).inset(20); - make.top.mas_equalTo(self.encourageIndicateRegard).offset(70); - make.height.mas_equalTo(235); - }]; - - [self.extraBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(245, 18)); - make.top.mas_equalTo(self.compensationEncourageRegard).offset(10); - make.centerX.mas_equalTo(self.compensationEncourageRegard); - }]; - - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.extraBtuton.mas_bottom); - make.left.right.mas_equalTo(self.compensationEncourageRegard); - make.bottom.mas_equalTo(self.compensationEncourageRegard); - }]; -} - -#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMIThresholdReindictAssembletionRegardElement * cell= [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIThresholdReindictAssembletionRegardElement class]) forIndexPath:indexPath]; - cell.compensationAbstract = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; -} - -#pragma mark - Event Response -- (void)knowBtutonPerformance:(UIButton *)sender { - [MKJPopup dismiss]; -} - -#pragma mark - Getters And Setters -- (void)setReindictAbstract:(ThresholdReindictMatrix *)reindictAbstract { - _reindictAbstract = reindictAbstract; - self.datasource = _reindictAbstract.firstChargeRewardList; - [self.collectionView reloadData]; - - NSString * title = reindictAbstract.chargeProdTitle; - NSString * chargeMoneyStr = [NSString stringWithFormat:@"%ld", reindictAbstract.chargeMoney]; - NSString * giveMoneyStr = [NSString stringWithFormat:@"%ld", reindictAbstract.giveMoney]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:[DJDKMIMOMColor compenstowardsionMaintainortionEssayPrettify]}]; - [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor compenstowardsionReminderEssayPrettify] range:[title rangeOfString:chargeMoneyStr]]; - [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor compenstowardsionReminderEssayPrettify] range:[title rangeOfString:giveMoneyStr]]; - [self.extraBtuton setAttributedTitle:attribute forState:UIControlStateNormal]; -} - -- (UICollectionView *)collectionView{ - if (!_collectionView) { - YUMIThresholdReindictFlowProgramming *layout = [[YUMIThresholdReindictFlowProgramming alloc] init]; - layout.itemSize = CGSizeMake(70, 70+ 16); - layout.minimumLineSpacing = 12; - layout.sectionInset = UIEdgeInsetsMake(10, 10, 10, 10); - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.backgroundColor = [UIColor clearColor]; - [_collectionView registerClass:[YUMIThresholdReindictAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIThresholdReindictAssembletionRegardElement class])]; - } - return _collectionView; -} - - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_first_recharge_success_background"]; - } - return _encourageIndicateRegard; -} - -- (UILabel *)sequenceriptionSequencignation { - if (!_sequenceriptionSequencignation) { - _sequenceriptionSequencignation = [[UILabel alloc] init]; - _sequenceriptionSequencignation.text = YMLocalizedString(@"YUMI_First_Recharge_Success_View_0"); - _sequenceriptionSequencignation.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:10]; - _sequenceriptionSequencignation.textAlignment = NSTextAlignmentCenter; - _sequenceriptionSequencignation.textColor = [DJDKMIMOMColor thresholdReindictEssayPrettify]; - } - return _sequenceriptionSequencignation; -} - -- (UIButton *)knownBtuton { - if (!_knownBtuton) { - _knownBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_knownBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_scope_first_recharge_recharge"] forState:UIControlStateNormal]; - [_knownBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_scope_first_recharge_recharge"] forState:UIControlStateSelected]; - [_knownBtuton setTitle:YMLocalizedString(@"YUMI_First_Recharge_Success_View_1") forState:UIControlStateNormal]; - _knownBtuton.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Bold" size:20]; - [_knownBtuton setTitleColor:[DJDKMIMOMColor thresholdReindictEssayPrettify] forState:UIControlStateNormal]; - [_knownBtuton addTarget:self action:@selector(knowBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _knownBtuton; -} - -- (UIButton *)extraBtuton { - if (!_extraBtuton) { - _extraBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_extraBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_scope_first_recharge_reward_extra_background"] forState:UIControlStateNormal]; - } - return _extraBtuton; -} - -- (UIImageView *)compensationEncourageRegard { - if (!_compensationEncourageRegard) { - _compensationEncourageRegard = [[UIImageView alloc] init]; - _compensationEncourageRegard.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor compenstowardsionEncouragegroundObliquityApeyUMIrettify], [DJDKMIMOMColor compenstowardsionEncouragegroundObliquityMiddlePrettify], [DJDKMIMOMColor compenstowardsionEncouragegroundObliquityApeyUMIrettify]] gradientType:GradientGenreTopToBottom imgSize:CGSizeMake(10, 10)]; - _compensationEncourageRegard.layer.masksToBounds = YES; - _compensationEncourageRegard.layer.cornerRadius = 10; - } - return _compensationEncourageRegard; -} -@end diff --git a/YuMi/Modules/YMRoom/View/MenuContainerView/Model/XPRoomMenuItem.h b/YuMi/Modules/YMRoom/View/MenuContainerView/Model/XPRoomMenuItem.h new file mode 100644 index 00000000..7cd3f4b9 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MenuContainerView/Model/XPRoomMenuItem.h @@ -0,0 +1,29 @@ +// +// YMRoomMenuItem.h +// YUMI +// +// Created by YUMI on 2021/10/14. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, XPRoomMenuItemType) { + XPRoomMenuItemType_Input = 1, + XPRoomMenuItemType_Mic,///话筒 + XPRoomMenuItemType_Face,///表情 + XPRoomMenuItemType_Message,///房间私聊 + XPRoomMenuItemType_More,///更多 + XPRoomMenuItemType_ArrangeMic,///排麦 + XPRoomMenuItemType_Gift,///礼物 + XPRoomMenuItemType_Noble,///贵族 + XPRoomMenuItemType_Play,///更多玩法 +}; + +@interface XPRoomMenuItem : NSObject + + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MenuContainerView/Model/XPRoomMenuItem.m b/YuMi/Modules/YMRoom/View/MenuContainerView/Model/XPRoomMenuItem.m new file mode 100644 index 00000000..a47b5746 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MenuContainerView/Model/XPRoomMenuItem.m @@ -0,0 +1,12 @@ +// +// YMRoomMenuItem.m +// YUMI +// +// Created by YUMI on 2021/10/14. +// + +#import "XPRoomMenuItem.h" + +@implementation XPRoomMenuItem + +@end diff --git a/YuMi/Modules/YMRoom/View/MenuContainerView/Model/YUMIChamberParrotProvision.h b/YuMi/Modules/YMRoom/View/MenuContainerView/Model/YUMIChamberParrotProvision.h deleted file mode 100644 index fc8b3fbf..00000000 --- a/YuMi/Modules/YMRoom/View/MenuContainerView/Model/YUMIChamberParrotProvision.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// YMRoomMenuItem.h -// YUMI -// -// Created by YUMI on 2021/10/14. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, YUMIChamberParrotProvisionGenre) { - YUMIChamberParrotProvisionGenre_Input = 1, - YUMIChamberParrotProvisionGenre_Mic, - YUMIChamberParrotProvisionGenre_Face, - YUMIChamberParrotProvisionGenre_Message, - YUMIChamberParrotProvisionGenre_More, - YUMIChamberParrotProvisionGenre_ArrangeMic, - YUMIChamberParrotProvisionGenre_Gift, - YUMIChamberParrotProvisionGenre_Noble, - YUMIChamberParrotProvisionGenre_Play, -}; - -@interface YUMIChamberParrotProvision : NSObject - - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MenuContainerView/Model/YUMIChamberParrotProvision.m b/YuMi/Modules/YMRoom/View/MenuContainerView/Model/YUMIChamberParrotProvision.m deleted file mode 100644 index a813041c..00000000 --- a/YuMi/Modules/YMRoom/View/MenuContainerView/Model/YUMIChamberParrotProvision.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMRoomMenuItem.m -// YUMI -// -// Created by YUMI on 2021/10/14. -// - -#import "YUMIChamberParrotProvision.h" - -@implementation YUMIChamberParrotProvision - -@end diff --git a/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomMenuContainerView.h b/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomMenuContainerView.h new file mode 100644 index 00000000..3b111214 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomMenuContainerView.h @@ -0,0 +1,21 @@ +// +// YMRoomBottomMenuView.h +// YUMI +// +// Created by YUMI on 2021/10/11. +// + +#import +#import "RoomHostDelegate.h" +#import "RoomGuestDelegate.h" +#import "XPArrangeMicViewController.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomMenuContainerView : UIView + +- (instancetype)initWithDelegate:(id)delegate; + +- (void)menuResignFirstResponder; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomMenuContainerView.m b/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomMenuContainerView.m new file mode 100644 index 00000000..449ee1f2 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomMenuContainerView.m @@ -0,0 +1,566 @@ +// +// YMRoomBottomMenuView.m +// YUMI +// +// Created by YUMI on 2021/10/11. +// + +#import "XPRoomMenuContainerView.h" +///Third +#import +///Tool +#import "AccountInfoStorage.h" +#import "TTPopup.h" +#import "RtcManager.h" +#import "XNDJTDDLoadingTool.h" +#import "StatisticsServiceHelper.h" +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "XCCurrentVCStackManager.h" +#import "ClientConfig.h" +///Model +#import "XPRoomMenuItem.h" +#import "MicroQueueModel.h" +#import "UserInfoModel.h" +#import "MicroStateModel.h" +#import "RoomInfoModel.h" +#import "AttachmentModel.h" +///View +#import "XPRoomSendTextView.h" +#import "XPSendGiftView.h" +#import "SessionListViewController.h" +#import "XPRoomMoreMenuViewController.h" +#import "XPRoomFaceViewController.h" +#import "XPRoomHalfMessageView.h" +#import "XPRoomMessageBubbleView.h" +#import "XPRoomMorePlayViewController.h" + +NSString * const kRoomPlayEnterKey = @"kRoomPlayEnterKey"; + +@interface XPRoomMenuContainerView () +///滚动的容器 +@property (nonatomic,strong) UIScrollView *scrollView; +/// +@property (nonatomic,strong) UIStackView *stackView; +///输入框 +@property (nonatomic,strong) UIButton *inputButton; +///麦 +@property (nonatomic,strong) UIButton *micButton; +///表情 +@property (nonatomic,strong) UIButton *faceButton; +///私聊 +@property (nonatomic,strong) UIButton *messageButton; +///更多 +@property (nonatomic,strong) UIButton *moreButton; +///礼物 +@property (nonatomic,strong) UIButton *giftButton; +///排麦 +@property (nonatomic,strong) UIButton *arrangeMicButton; +///贵族 +@property (nonatomic,strong) UIButton *nobleButton; +///输入框 +@property (nonatomic,strong) XPRoomSendTextView *inputTextView; +@property (nonatomic,strong) XPRoomMessageBubbleView *miniMessageView; +///代理 +@property (nonatomic,weak) id delegate; +@end + + +@implementation XPRoomMenuContainerView + +- (instancetype)initWithDelegate:(id)delegate { + self = [super init]; + if (self) { + self.delegate = delegate; + [self initSubViews]; + [self initSubViewConstraints]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showGiftView:) name:@"kShowGiftView" object:nil]; + } + return self; +} +- (void)menuResignFirstResponder { + [self.inputTextView.editTextFiled resignFirstResponder]; +} + +#pragma mark - Response +- (void)menuButtonAction:(UIButton *)sender { + XPRoomMenuItemType type = sender.tag; + switch (type) { + case XPRoomMenuItemType_Input: + { + if (self.delegate.getRoomInfo.isCloseScreen) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPRoomMenuContainerView0")]; + return; + } + if (self.delegate.getRoomInfo.type == RoomType_Anchor) { + self.inputTextView = [XPRoomSendTextView showTextView:self.superview.superview delegate:self.delegate atUid:nil atNick:nil]; + } else { + self.inputTextView = [XPRoomSendTextView showTextView:self.superview delegate:self.delegate atUid:nil atNick:nil]; + } + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_chatbox_click]; + } + break; + + case XPRoomMenuItemType_Mic: { + [RtcManager instance].localMuted = !self.micButton.isSelected; + self.micButton.selected = [RtcManager instance].isLocalMuted; + } + break; + case XPRoomMenuItemType_Face: { + XPRoomFaceViewController * faceVC = [[XPRoomFaceViewController alloc] init]; + faceVC.modalPresentationStyle = UIModalPresentationOverFullScreen; + faceVC.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId]; + [self.delegate.getCurrentNav presentViewController:faceVC animated:YES completion:nil]; + } + break; + case XPRoomMenuItemType_Gift: { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_gift_click]; + NSString * roomUid = [NSString stringWithFormat:@"%ld", [self.delegate getRoomInfo].uid]; + XPSendGiftView * giftView = [[XPSendGiftView alloc] initWithType:SendGiftType_Room uid:roomUid]; + giftView.delegate = self.delegate; + NSArray * giftUses = [self configGiftUsers:[self.delegate getMicroQueue]]; + [giftView configGiftUsers:giftUses]; + [self.delegate.getCurrentNav presentViewController:giftView animated:YES completion:nil]; + } + break; + case XPRoomMenuItemType_Message: + { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_privateletter_click]; + UIViewController * controller = (UIViewController *)self.delegate; + XPRoomHalfMessageView *halfMessageView = [[XPRoomHalfMessageView alloc] initWithFrame:CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight) controller:controller]; + [controller.view addSubview:halfMessageView]; + [UIView animateWithDuration:.35 animations:^{ + CGRect rect = halfMessageView.frame; + rect.origin.y = 0; + halfMessageView.frame = rect; + }]; + + } + break; + case XPRoomMenuItemType_More: { + XPRoomMoreMenuViewController * moreMenuVC = [[XPRoomMoreMenuViewController alloc] initWithDelegate:self.delegate]; + [self.delegate.getCurrentNav presentViewController:moreMenuVC animated:YES completion:nil]; + } + break; + case XPRoomMenuItemType_ArrangeMic:{ + if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode && self.delegate.isRoomPKPlaying) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPRoomMenuContainerView1")]; + return; + } + + self.arrangeMicButton.selected = NO; + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId]; + request.userIds = @[[AccountInfoStorage instance].getUid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + NIMChatroomMember * member; + if (error == nil) { + member = members.firstObject; + } + RoomInfoModel * roomInfo = self.delegate.getRoomInfo; + XPArrangeMicInfoModel * info = [[XPArrangeMicInfoModel alloc] init]; + info.roomUid = [NSString stringWithFormat:@"%ld", roomInfo.uid]; + info.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + info.nick = roomInfo.nick; + info.roomAvatar = roomInfo.avatar; + info.roomTitle = roomInfo.title; + info.micQueue = [self.delegate getMicroQueue]; + info.isManager = (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager); + info.type = roomInfo.roomModeType == RoomModeType_Open_Blind ? ArrangeMicType_Dating : roomInfo.roomModeType == RoomModeType_Open_PK_Mode ? ArrangeMicType_Room_PK : ArrangeMicType_Normal; + XPArrangeMicViewController * arrangeMicVC = [[XPArrangeMicViewController alloc] initWithInfo:info]; + [self.delegate.getCurrentNav presentViewController:arrangeMicVC animated:YES completion:nil]; + }]; + } + break; + default: + break; + } +} + +#pragma mark - notification +- (void)showGiftView:(NSNotification *)noti { + NSDictionary *dict = noti.object; + NSString *giftId = dict[@"giftId"]; + NSString * roomUid = [NSString stringWithFormat:@"%ld", [self.delegate getRoomInfo].uid]; + XPSendGiftView * giftView = [[XPSendGiftView alloc] initWithType:SendGiftType_Room uid:roomUid]; + giftView.delegate = self.delegate; + NSArray * giftUses = [self configGiftUsers:[self.delegate getMicroQueue]]; + [giftView configGiftUsers:giftUses]; + giftView.selectGiftId = giftId; + [self.delegate.getCurrentNav presentViewController:giftView animated:YES completion:nil]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.scrollView]; + [self addSubview:self.giftButton]; + + [self.scrollView addSubview:self.stackView]; + + [self.stackView addArrangedSubview:self.inputButton]; + [self.stackView addArrangedSubview:self.micButton]; + [self.stackView addArrangedSubview:self.faceButton]; + [self.stackView addArrangedSubview:self.arrangeMicButton]; + [self.stackView addArrangedSubview:self.messageButton]; + [self.stackView addArrangedSubview:self.moreButton]; +} + +- (void)initSubViewConstraints { + [self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self).offset(15); + make.right.mas_equalTo(self.giftButton.mas_left).offset(-10); + make.top.bottom.mas_equalTo(self); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.bottom.leading.trailing.height.mas_equalTo(self.scrollView); + }]; + if ([ClientConfig shareConfig].canOpen) { + [self.inputButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(100, 30)); + }]; + } else { + [self.inputButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(150, 30)); + }]; + } + + [self.giftButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self); + make.right.mas_equalTo(self).offset(-15); + make.size.mas_equalTo(CGSizeMake(38, 38)); + }]; +} + +- (NSArray *)configGiftUsers:(NSMutableDictionary *)queue { + NSMutableArray * array = [NSMutableArray array]; + for (MicroQueueModel * microModel in queue.allValues) { + if (microModel.userInfo && microModel.userInfo.uid >0) { + UserInfoModel * userInfo = microModel.userInfo; + XPGiftUserInfoModel * userModel = [[XPGiftUserInfoModel alloc] init]; + userModel.avatar = userInfo.avatar; + userModel.vipMic = userInfo.vipMic; + userModel.position = [NSString stringWithFormat:@"%d", microModel.microState.position]; + userModel.uid = userInfo.uid; + if (self.delegate.getRoomInfo.type == RoomType_Anchor && microModel.microState.position == -1) {///个播房一直为离开模式,不需要添加房主位 + continue; + } + [array addObject:userModel]; + } + } + + if (self.delegate.getRoomInfo.leaveMode) { + RoomInfoModel * roomInfo= self.delegate.getRoomInfo; + XPGiftUserInfoModel * userModel = [[XPGiftUserInfoModel alloc] init]; + userModel.avatar = roomInfo.avatar; + userModel.position = @"-1"; + userModel.uid = roomInfo.uid; + [array addObject:userModel]; + } else if (self.delegate.getRoomInfo.type == RoomType_Anchor) { + RoomInfoModel * roomInfo= self.delegate.getRoomInfo; + BOOL hadContainerOwner = NO; + for (UserInfoModel *userModel in array) { + if (userModel.uid == roomInfo.uid) { + hadContainerOwner = YES; + break; + } + } + if (!hadContainerOwner) { + XPGiftUserInfoModel * userModel = [[XPGiftUserInfoModel alloc] init]; + userModel.avatar = roomInfo.avatar; + userModel.position = @"-1"; + userModel.uid = roomInfo.uid; + [array addObject:userModel]; + } + } + return array; +} + +- (MicroQueueModel *)findMySelfMicro:(NSMutableDictionary *)queue { + NSString * uid = [AccountInfoStorage instance].getUid; + for (MicroQueueModel * microModel in queue.allValues) { + if (microModel.userInfo && microModel.userInfo.uid == uid.integerValue) { + return microModel; + } + } + return nil; +} + +#pragma mark - RoomGuestDelegate +- (void)onMicroQueueUpdate:(NSMutableDictionary *)queue { + MicroQueueModel * model = [self findMySelfMicro:queue]; + if (model) { + self.micButton.hidden = NO; + self.micButton.selected = model.microState.micState == MicroMicStateType_Close ? YES : [RtcManager instance].isLocalMuted; + self.micButton.enabled = model.microState.micState == MicroMicStateType_Open; + if (![ClientConfig shareConfig].canOpen) { + self.faceButton.hidden = YES; + } else { + self.faceButton.hidden = NO; + } + } else { + self.micButton.hidden = YES; + self.faceButton.hidden = YES; + } + +} + +- (void)onRoomEntered { + NSInteger unreadCount = [[NIMSDK sharedSDK].conversationManager allUnreadCount]; + self.messageButton.selected = unreadCount > 0; + [self onRoomUpdate]; +} + +- (void)onRoomUpdate { + RoomInfoModel * roomInfo = self.delegate.getRoomInfo; + UserInfoModel * userInfo = self.delegate.getUserInfo; + + if (userInfo.isFirstCharge) { + [self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift_first_recharge"] forState:UIControlStateNormal]; + [self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift_first_recharge"] forState:UIControlStateSelected]; + } else { + [self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateNormal]; + [self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateSelected]; + } + + if (![ClientConfig shareConfig].canOpen) { + [self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift1"] forState:UIControlStateNormal]; + [self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift1"] forState:UIControlStateSelected]; + } + + self.arrangeMicButton.hidden = roomInfo.roomModeType != RoomModeType_Open_Micro_Mode; + if (roomInfo.roomModeType == RoomModeType_Open_Blind || roomInfo.roomModeType == RoomModeType_Open_PK_Mode || roomInfo.roomModeType == RoomModeType_Open_Micro_Mode) { + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + request.userIds = @[[AccountInfoStorage instance].getUid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + if (error == nil) { + NIMChatroomMember * member = members.firstObject; + if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager) { + self.arrangeMicButton.hidden = NO; + return; + } + } + self.arrangeMicButton.hidden = YES; + }]; + } +} + +- (void)handleNIMCustomMessage:(NIMMessage *)message { + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) { + AttachmentModel *attachment = (AttachmentModel *)obj.attachment; + if (attachment.first == CustomMessageType_Arrange_Mic || attachment.first == CustomMessageType_Room_PK) { + if (attachment.second == Custom_Message_Sub_Arrange_Mic_Non_Empty || attachment.second == Custom_Message_Sub_Arrange_Mic_Empty || attachment.second == Custom_Message_Sub_Room_PK_Empty || attachment.second == Custom_Message_Sub_Room_PK_Non_Empty) { + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId]; + request.userIds = @[[AccountInfoStorage instance].getUid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + NIMChatroomMember * member; + if (error == nil) { + member = members.firstObject; + } + if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager) { + self.arrangeMicButton.selected = (attachment.second == Custom_Message_Sub_Arrange_Mic_Non_Empty || attachment.second == Custom_Message_Sub_Room_PK_Non_Empty); + }; + }]; + } + } + } +} + +- (void)handleNIMNotificationMessage:(NIMMessage *)message { + NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; + NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; + switch (content.eventType) { + case NIMChatroomEventTypeAddManager: + { + if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_Blind || self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode) { + for (NIMChatroomNotificationMember * member in content.targets) { + if (member.userId.intValue == [AccountInfoStorage instance].getUid.integerValue) { + self.arrangeMicButton.hidden = NO; + break; + } + } + } + } + break; + case NIMChatroomEventTypeRemoveManager: + { + if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_Blind || self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode) { + for (NIMChatroomNotificationMember * member in content.targets) { + if (member.userId.intValue == [AccountInfoStorage instance].getUid.integerValue) { + self.arrangeMicButton.hidden = YES; + break; + } + } + } + } + break; + default: + break; + } +} + +- (void)addNIMRecentSession:(NIMRecentSession *)session { + if (!self.miniMessageView.superview) { + [self.superview insertSubview:self.miniMessageView aboveSubview:self]; + [self.miniMessageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.messageButton); + make.bottom.mas_equalTo(self.messageButton.mas_top).offset(-2); + make.size.mas_equalTo(CGSizeMake(87, 55)); + }]; + } + [self.miniMessageView addRecentSession:session]; + NSInteger unreadCount = [[NIMSDK sharedSDK].conversationManager allUnreadCount]; + self.messageButton.selected = unreadCount > 0; +} + +- (void)removeNIMRecentSession:(NIMRecentSession *)session { + NSInteger unreadCount = [[NIMSDK sharedSDK].conversationManager allUnreadCount]; + self.messageButton.selected = unreadCount > 0; +} + +#pragma mark - XPRoomMessageBubbleViewDelegate +- (void)xPRoomMessageBubbleView:(XPRoomMessageBubbleView *)view didSelectSession:(NIMRecentSession *)session { + UIViewController * controller = (UIViewController *)self.delegate; + XPRoomHalfMessageView *halfMessageView = [[XPRoomHalfMessageView alloc] initWithFrame:CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight) controller:controller]; + halfMessageView.chatUserId = session.session.sessionId; + [controller.view addSubview:halfMessageView]; + [UIView animateWithDuration:.35 animations:^{ + CGRect rect = halfMessageView.frame; + rect.origin.y = 0; + halfMessageView.frame = rect; + }]; +} + +#pragma mark - Getters And Setters +- (UIButton *)inputButton { + if (!_inputButton) { + _inputButton = [UIButton buttonWithType:UIButtonTypeCustom]; + if ([ClientConfig shareConfig].canOpen) { + [_inputButton setTitle:@"说点什么..." forState:UIControlStateNormal]; + } else { + [_inputButton setTitle:YMLocalizedString(@"XPRoomMenuContainerView3") forState:UIControlStateNormal]; + } + + [_inputButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _inputButton.titleLabel.font = [UIFont systemFontOfSize:15]; + _inputButton.layer.masksToBounds = YES; + _inputButton.layer.cornerRadius = 15; + _inputButton.backgroundColor = UIColorRGBAlpha(0xFFFFFF, 0.3); + _inputButton.tag = XPRoomMenuItemType_Input; + [_inputButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _inputButton; +} + +- (UIButton *)micButton { + if (!_micButton) { + _micButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_micButton setImage:[UIImage imageNamed:@"room_menu_mic_open"] forState:UIControlStateNormal]; + [_micButton setImage:[UIImage imageNamed:@"room_menu_mic_close"] forState:UIControlStateSelected]; + [_micButton setImage:[UIImage imageNamed:@"room_menu_mic_close"] forState:UIControlStateDisabled | UIControlStateSelected]; + _micButton.tag = XPRoomMenuItemType_Mic; + [_micButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _micButton.hidden = YES; + } + return _micButton; +} + +- (UIButton *)faceButton { + if (!_faceButton) { + _faceButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_faceButton setImage:[UIImage imageNamed:@"room_menu_face"] forState:UIControlStateNormal]; + [_faceButton setImage:[UIImage imageNamed:@"room_menu_face"] forState:UIControlStateSelected]; + _faceButton.tag = XPRoomMenuItemType_Face; + [_faceButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _faceButton.hidden = YES; + } + return _faceButton; +} + +- (UIButton *)messageButton { + if (!_messageButton) { + _messageButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_messageButton setImage:[UIImage imageNamed:@"room_menu_message"] forState:UIControlStateNormal]; + [_messageButton setImage:[UIImage imageNamed:@"room_menu_new_message"] forState:UIControlStateSelected]; + _messageButton.tag = XPRoomMenuItemType_Message; + [_messageButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _messageButton; +} + +- (UIButton *)moreButton { + if (!_moreButton) { + _moreButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_moreButton setImage:[UIImage imageNamed:@"room_menu_more"] forState:UIControlStateNormal]; + [_moreButton setImage:[UIImage imageNamed:@"room_menu_more"] forState:UIControlStateSelected]; + _moreButton.tag = XPRoomMenuItemType_More; + [_moreButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _moreButton; +} + +- (UIButton *)nobleButton { + if (!_nobleButton) { + _nobleButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_nobleButton setImage:[UIImage imageNamed:@"room_menu_noble"] forState:UIControlStateNormal]; + _nobleButton.tag = XPRoomMenuItemType_Noble; + [_nobleButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _nobleButton; +} + +- (UIButton *)giftButton { + if (!_giftButton) { + _giftButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateNormal]; + [_giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateSelected]; + _giftButton.tag = XPRoomMenuItemType_Gift; + [_giftButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _giftButton; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentCenter; + _stackView.spacing = 8; + } + return _stackView; +} + +- (UIButton *)arrangeMicButton { + if (!_arrangeMicButton) { + _arrangeMicButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_arrangeMicButton setImage:[UIImage imageNamed:@"room_menu_arrange_mic"] forState:UIControlStateNormal]; + [_arrangeMicButton setImage:[UIImage imageNamed:@"room_menu_arrange_mic_new"] forState:UIControlStateSelected]; + _arrangeMicButton.tag = XPRoomMenuItemType_ArrangeMic; + [_arrangeMicButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _arrangeMicButton.hidden = YES; + } + return _arrangeMicButton; +} + +- (UIScrollView *)scrollView { + if (!_scrollView) { + _scrollView = [[UIScrollView alloc] init]; + _scrollView.backgroundColor = [UIColor clearColor]; + _scrollView.showsHorizontalScrollIndicator = NO; + } + return _scrollView; +} + +- (XPRoomMessageBubbleView *)miniMessageView { + if (!_miniMessageView) { + _miniMessageView = [[XPRoomMessageBubbleView alloc] init]; + _miniMessageView.delegate = self; + } + return _miniMessageView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomSendTextView.h b/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomSendTextView.h new file mode 100644 index 00000000..386c6a46 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomSendTextView.h @@ -0,0 +1,22 @@ +// +// YMRoomSendTextView.h +// YUMI +// +// Created by YUMI on 2021/10/29. +// + +#import +#import "RoomHostDelegate.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomSendTextView : UIView + +- (instancetype) :(id)delegate; +///输入框 +@property (nonatomic, strong, readonly) UITextField *editTextFiled; +///发小消息的弹框 ++ (instancetype)showTextView:(UIView *)view delegate:(id)delegate atUid:(NSString *)uid atNick:(NSString *)nick; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomSendTextView.m b/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomSendTextView.m new file mode 100644 index 00000000..ce30daf2 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomSendTextView.m @@ -0,0 +1,312 @@ +// +// YMRoomSendTextView.m +// YUMI +// +// Created by YUMI on 2021/10/29. +// + +#import "XPRoomSendTextView.h" +///Third +#import +#import +#import "NSObject+MJExtension.h" +#import +///Tool +#import "ThemeColor+Room.h" +#import "YUMIMacroUitls.h" +#import "UIImage+Utils.h" +#import "YUMIConstant.h" +#import "AccountInfoStorage.h" +#import "NSMutableDictionary+Saft.h" +///Model +#import "XPMessageRemoteExtModel.h" +#import "UserInfoModel.h" +#import "RoomInfoModel.h" +//公屏限制最大字数 +#define MAX_STARWORDS_LENGTH 300 + +@interface XPRoomSendTextView () +/// +@property (nonatomic,strong) UIStackView *stackView; +///输入框 +@property (nonatomic, strong) UITextField *editTextFiled; +///发送按钮 +@property (nonatomic, strong) UIButton *sendButton; +///文本输入的内容 +@property (nonatomic,copy) NSString *inputMessage; +///代理 +@property (nonatomic,weak) id delegate; + +///被@的人的数组 such as:@["'@小明','"@小红'] +@property (nonatomic, strong) NSMutableArray *atNames; +///被@的人的uid 需要跟上面的名字对应位置 +@property (nonatomic, strong) NSMutableArray *atUids; +@end + +@implementation XPRoomSendTextView + +- (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +- (instancetype)initWithDelegate:(id)delegate { + self = [super initWithFrame:CGRectMake(0, KScreenHeight - 40, KScreenWidth, 40)]; + if (self) { + self.delegate = delegate; + [self addNotification]; + [self initSubViews]; + [self initSubViewConstraints]; + [IQKeyboardManager sharedManager].enable = NO; + } + return self; +} + +#pragma mark - Response + +- (void)sendButtonDidClick:(UIButton *)sender { + UserInfoModel * userInfo = [self.delegate getUserInfo]; + XPMessageRemoteExtModel *extModel = [[XPMessageRemoteExtModel alloc] init]; + extModel.defUser = userInfo.defUser; + extModel.erbanNo = userInfo.erbanNo; + extModel.carName = userInfo.carName; + extModel.inRoomNameplatePic = userInfo.nameplatePic; + extModel.inRoomNameplateWord = userInfo.nameplateWord; + extModel.charmUrl = userInfo.userLevelVo.charmUrl; + extModel.experLevelSeq = userInfo.userLevelVo.experLevelSeq; + extModel.experUrl = userInfo.userLevelVo.experUrl; + extModel.newUser = userInfo.newUser; + extModel.vipIcon = userInfo.userVipInfoVO.vipIcon; + extModel.androidBubbleUrl = userInfo.androidBubbleUrl; + extModel.iosBubbleUrl = userInfo.iosBubbleUrl; + extModel.fromSayHelloChannel = userInfo.fromSayHelloChannel; + + NIMMessage * message = [[NIMMessage alloc] init]; + message.text = self.inputMessage; + NSMutableDictionary *remoteExt = [NSMutableDictionary dictionaryWithObject:extModel.model2dictionary forKey:[AccountInfoStorage instance].getUid]; + //查找消息中是否有@人 + NSMutableArray *nickArray = [NSMutableArray array]; + NSMutableArray *uidArray = [NSMutableArray array]; + for (int i = 0; i MAX_STARWORDS_LENGTH){ + NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH]; + if (rangeIndex.length == 1){ + + textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH]; + }else{ + NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)]; + textField.text = [toBeString substringWithRange:rangeRange]; + } + } + } + }else{ // 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况 + if (toBeString.length > MAX_STARWORDS_LENGTH){ + NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH]; + if (rangeIndex.length == 1){ + + textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH]; + }else{ + + NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)]; + textField.text = [toBeString substringWithRange:rangeRange]; + } + } + } + self.inputMessage = textField.text; + if (self.inputMessage.length > 0) { + self.sendButton.enabled = YES; + } else { + self.sendButton.enabled = NO; + } +} + +#pragma mark - Public Method ++ (instancetype)showTextView:(UIView *)view delegate:(id)delegate atUid:(NSString *)uid atNick:(NSString *)nick { + __block XPRoomSendTextView * textView; + [view.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj isKindOfClass:[XPRoomSendTextView class]]) { + textView = obj; + *stop = YES; + } + }]; + if (textView == nil) { + textView = [[XPRoomSendTextView alloc] initWithDelegate:delegate]; + [view addSubview:textView]; + } + textView.hidden = NO; + + + [textView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(view); + make.height.mas_equalTo(40); + }]; + [textView.editTextFiled becomeFirstResponder]; + if (nick) { + [textView.atUids addObject:uid]; + [textView.atNames addObject:[NSString stringWithFormat:@"@%@", nick]]; + textView.editTextFiled.text = [NSString stringWithFormat:@"%@@%@\u2004", textView.editTextFiled.text, nick]; + textView.inputMessage = textView.editTextFiled.text; + textView.sendButton.enabled = YES; + } + return textView; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; + [self addSubview:self.stackView]; + [self.stackView addArrangedSubview:self.editTextFiled]; + [self.stackView addArrangedSubview:self.sendButton]; +} + +- (void)initSubViewConstraints { + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self).offset(8); + make.right.mas_equalTo(self).offset(-5); + make.top.bottom.mas_equalTo(self); + }]; + + [self.sendButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(50); + make.top.bottom.mas_equalTo(self).inset(5); + }]; +} + +- (void)addNotification { + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHidden:) name:UIKeyboardWillHideNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldEditChanged:) name:UITextFieldTextDidChangeNotification object:self.editTextFiled]; +} + +#pragma mark - Getters And Setters +- (UITextField *)editTextFiled{ + if (!_editTextFiled) { + _editTextFiled = [[UITextField alloc] init]; + NSAttributedString * attribute = [[NSAttributedString alloc] initWithString:@"请输入消息..." attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:15], NSForegroundColorAttributeName : [DJDKMIMOMColor secondTextColor]}]; + _editTextFiled.attributedPlaceholder = attribute; + _editTextFiled.borderStyle = UITextBorderStyleNone; + _editTextFiled.textColor = [DJDKMIMOMColor alertTitleColor]; + _editTextFiled.font = [UIFont systemFontOfSize:15]; + [_editTextFiled setContentHuggingPriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal]; + + } + return _editTextFiled; +} +- (UIButton *)sendButton{ + if (!_sendButton) { + _sendButton = [[UIButton alloc] init]; + [_sendButton setTitle:YMLocalizedString(@"XPRoomSendTextView1") forState:UIControlStateNormal]; + _sendButton.titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _sendButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_sendButton setBackgroundImage:[UIImage imageWithColor:[DJDKMIMOMColor disableButtonColor] ]forState:UIControlStateDisabled]; + [_sendButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _sendButton.enabled = NO; + _sendButton.layer.cornerRadius = 5.0; + _sendButton.layer.masksToBounds = YES; + [_sendButton addTarget:self action:@selector(sendButtonDidClick:) forControlEvents:UIControlEventTouchUpInside]; + } + return _sendButton; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentCenter; + _stackView.spacing = 10; + } + return _stackView; +} + +- (NSMutableArray *)atNames { + if (!_atNames) { + _atNames = [NSMutableArray array]; + } + return _atNames; +} + +- (NSMutableArray *)atUids { + if (!_atUids) { + _atUids = [NSMutableArray array]; + } + return _atUids; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/MenuContainerView/YUMIChamberDischargeEssayRegard.h b/YuMi/Modules/YMRoom/View/MenuContainerView/YUMIChamberDischargeEssayRegard.h deleted file mode 100644 index 84c6b9c2..00000000 --- a/YuMi/Modules/YMRoom/View/MenuContainerView/YUMIChamberDischargeEssayRegard.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YMRoomSendTextView.h -// YUMI -// -// Created by YUMI on 2021/10/29. -// - -#import -#import "ChamberHostRepresendtation.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberDischargeEssayRegard : UIView - -- (instancetype) :(id)delegate; -@property (nonatomic, strong, readonly) UITextField *compileEssayAccurated; -+ (instancetype)EvidenceEssayRegard:(UIView *)view delegate:(id)delegate atUid:(NSString *)uid atNick:(NSString *)nick; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MenuContainerView/YUMIChamberDischargeEssayRegard.m b/YuMi/Modules/YMRoom/View/MenuContainerView/YUMIChamberDischargeEssayRegard.m deleted file mode 100644 index 9541a82c..00000000 --- a/YuMi/Modules/YMRoom/View/MenuContainerView/YUMIChamberDischargeEssayRegard.m +++ /dev/null @@ -1,300 +0,0 @@ -// -// YMRoomSendTextView.m -// YUMI -// -// Created by YUMI on 2021/10/29. -// - -#import "YUMIChamberDischargeEssayRegard.h" -#import -#import -#import "NSObject+MJExtension.h" -#import -#import "ThemeColor+Room.h" -#import "YUMIMacroUitls.h" -#import "UIImage+Utils.h" -#import "YUMIConstant.h" -#import "AccountAbstractStorage.h" -#import "NSMutableDictionary+Saft.h" -#import "YUMICommunicationRemoteExtMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "ChamberAbstractMatrix.h" -#define MAX_STARWORDS_LENGTH 300 - -@interface YUMIChamberDischargeEssayRegard () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic, strong) UITextField *compileEssayAccurated; -@property (nonatomic, strong) UIButton *dischargeBtuton; -@property (nonatomic,copy) NSString *introjectionCommunication; -@property (nonatomic,weak) id delegate; - -@property (nonatomic, strong) NSMutableArray *atSalutation; -@property (nonatomic, strong) NSMutableArray *atCids; -@end - -@implementation YUMIChamberDischargeEssayRegard - -- (void)dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - -- (instancetype)initWithDelegate:(id)delegate { - self = [super initWithFrame:CGRectMake(0, KScreenHeight - 40, KScreenWidth, 40)]; - if (self) { - self.delegate = delegate; - [self accelertowardseCircular]; - [self initSubViews]; - [self initChildLyRestrictions]; - [IQKeyboardManager sharedManager].enable = NO; - } - return self; -} - -#pragma mark - Response - -- (void)prohibitichargeBtutonDidTicktack:(UIButton *)sender { - ConsumerAbstractMatrix * userInfo = [self.delegate getUserInfo]; - YUMICommunicationRemoteExtMatrix *extModel = [[YUMICommunicationRemoteExtMatrix alloc] init]; - extModel.defUser = userInfo.defUser; - extModel.erbanNo = userInfo.erbanNo; - extModel.carName = userInfo.carName; - extModel.inRoomNameplatePic = userInfo.nameplatePic; - extModel.inRoomNameplateWord = userInfo.nameplateWord; - extModel.charmUrl = userInfo.userLevelVo.charmUrl; - extModel.experLevelSeq = userInfo.userLevelVo.experLevelSeq; - extModel.experUrl = userInfo.userLevelVo.experUrl; - extModel.newUser = userInfo.newUser; - extModel.vipIcon = userInfo.userVipInfoVO.vipIcon; - extModel.androidBubbleUrl = userInfo.androidBubbleUrl; - extModel.iosBubbleUrl = userInfo.iosBubbleUrl; - extModel.fromSayHelloChannel = userInfo.fromSayHelloChannel; - - NIMMessage * message = [[NIMMessage alloc] init]; - message.text = self.introjectionCommunication; - NSMutableDictionary *remoteExt = [NSMutableDictionary dictionaryWithObject:extModel.mtowardsrix2dictionary forKey:[AccountAbstractStorage instance].acquireCid]; - - NSMutableArray *nickArray = [NSMutableArray array]; - NSMutableArray *uidArray = [NSMutableArray array]; - for (int i = 0; i MAX_STARWORDS_LENGTH){ - NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH]; - if (rangeIndex.length == 1){ - - essayUniverse.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH]; - }else{ - NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)]; - essayUniverse.text = [toBeString substringWithRange:rangeRange]; - } - } - } - }else{ - if (toBeString.length > MAX_STARWORDS_LENGTH){ - NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH]; - if (rangeIndex.length == 1){ - - essayUniverse.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH]; - }else{ - - NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)]; - essayUniverse.text = [toBeString substringWithRange:rangeRange]; - } - } - } - self.introjectionCommunication = essayUniverse.text; - if (self.introjectionCommunication.length > 0) { - self.dischargeBtuton.enabled = YES; - } else { - self.dischargeBtuton.enabled = NO; - } -} - -#pragma mark - Public Method -+ (instancetype)EvidenceEssayRegard:(UIView *)view delegate:(id)delegate atUid:(NSString *)uid atNick:(NSString *)nick { - __block YUMIChamberDischargeEssayRegard * textView; - [view.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj isKindOfClass:[YUMIChamberDischargeEssayRegard class]]) { - textView = obj; - *stop = YES; - } - }]; - if (textView == nil) { - textView = [[YUMIChamberDischargeEssayRegard alloc] initWithDelegate:delegate]; - [view addSubview:textView]; - } - textView.hidden = NO; - - - [textView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(view); - make.height.mas_equalTo(40); - }]; - [textView.compileEssayAccurated becomeFirstResponder]; - if (nick) { - [textView.atCids addObject:uid]; - [textView.atSalutation addObject:[NSString stringWithFormat:@"@%@", nick]]; - textView.compileEssayAccurated.text = [NSString stringWithFormat:@"%@@%@\u2004", textView.compileEssayAccurated.text, nick]; - textView.introjectionCommunication = textView.compileEssayAccurated.text; - textView.dischargeBtuton.enabled = YES; - } - return textView; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]; - [self addSubview:self.stackView]; - [self.stackView addArrangedSubview:self.compileEssayAccurated]; - [self.stackView addArrangedSubview:self.dischargeBtuton]; -} - -- (void)initChildLyRestrictions { - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self).offset(8); - make.right.mas_equalTo(self).offset(-5); - make.top.bottom.mas_equalTo(self); - }]; - - [self.dischargeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(50); - make.top.bottom.mas_equalTo(self).inset(5); - }]; -} - -- (void)accelertowardseCircular { - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(digitentiretyibraImmeditowardselyVeiled:) name:UIKeyboardWillHideNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(essayUniverseCompileDiversifictowardsiond:) name:UITextFieldTextDidChangeNotification object:self.compileEssayAccurated]; -} - -#pragma mark - Getters And Setters -- (UITextField *)compileEssayAccurated{ - if (!_compileEssayAccurated) { - _compileEssayAccurated = [[UITextField alloc] init]; - NSAttributedString * attribute = [[NSAttributedString alloc] initWithString:@"请输入消息..." attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:15], NSForegroundColorAttributeName : [DJDKMIMOMColor instantEssayPrettify]}]; - _compileEssayAccurated.attributedPlaceholder = attribute; - _compileEssayAccurated.borderStyle = UITextBorderStyleNone; - _compileEssayAccurated.textColor = [DJDKMIMOMColor precautiousChampionPrettify]; - _compileEssayAccurated.font = [UIFont systemFontOfSize:15]; - [_compileEssayAccurated setContentHuggingPriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal]; - - } - return _compileEssayAccurated; -} -- (UIButton *)dischargeBtuton{ - if (!_dischargeBtuton) { - _dischargeBtuton = [[UIButton alloc] init]; - [_dischargeBtuton setTitle:YMLocalizedString(@"YUMI_Room_Send_Text_View_1") forState:UIControlStateNormal]; - _dischargeBtuton.titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _dischargeBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_dischargeBtuton setBackgroundImage:[UIImage imageWithColor:[DJDKMIMOMColor prohibitionBtutonPrettify] ]forState:UIControlStateDisabled]; - [_dischargeBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _dischargeBtuton.enabled = NO; - _dischargeBtuton.layer.cornerRadius = 5.0; - _dischargeBtuton.layer.masksToBounds = YES; - [_dischargeBtuton addTarget:self action:@selector(prohibitichargeBtutonDidTicktack:) forControlEvents:UIControlEventTouchUpInside]; - } - return _dischargeBtuton; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentCenter; - _stackView.spacing = 10; - } - return _stackView; -} - -- (NSMutableArray *)atSalutation { - if (!_atSalutation) { - _atSalutation = [NSMutableArray array]; - } - return _atSalutation; -} - -- (NSMutableArray *)atCids { - if (!_atCids) { - _atCids = [NSMutableArray array]; - } - return _atCids; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/MenuContainerView/YUMIChamberParrotAccommodatedRegard.h b/YuMi/Modules/YMRoom/View/MenuContainerView/YUMIChamberParrotAccommodatedRegard.h deleted file mode 100644 index 34f5e152..00000000 --- a/YuMi/Modules/YMRoom/View/MenuContainerView/YUMIChamberParrotAccommodatedRegard.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMRoomBottomMenuView.h -// YUMI -// -// Created by YUMI on 2021/10/11. -// - -#import -#import "ChamberHostRepresendtation.h" -#import "ChamberGuestRepresendtation.h" -#import "YUMIScheduleLoudspeakerRegardGovernancer.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberParrotAccommodatedRegard : UIView - -- (instancetype)initWithDelegate:(id)delegate; - -- (void)parrotResignThresholdResponder; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MenuContainerView/YUMIChamberParrotAccommodatedRegard.m b/YuMi/Modules/YMRoom/View/MenuContainerView/YUMIChamberParrotAccommodatedRegard.m deleted file mode 100644 index 6a7d9cf6..00000000 --- a/YuMi/Modules/YMRoom/View/MenuContainerView/YUMIChamberParrotAccommodatedRegard.m +++ /dev/null @@ -1,550 +0,0 @@ -// -// YMRoomBottomMenuView.m -// YUMI -// -// Created by YUMI on 2021/10/11. -// - -#import "YUMIChamberParrotAccommodatedRegard.h" -#import -#import "AccountAbstractStorage.h" -#import "MKJPopup.h" -#import "RealtimackExecutive.h" -#import "XNDJTBWGLoadingTool.h" -#import "StatsticsticsServingFacilitater.h" -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "XCCurrentVCStackExecutive.h" -#import "ClientDisposition.h" -#import "YUMIChamberParrotProvision.h" -#import "MiecreoscoopeMHTueueMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "MiecreoscoopeStateMatrix.h" -#import "ChamberAbstractMatrix.h" -#import "AttachmentMatrix.h" -#import "YUMIChamberDischargeEssayRegard.h" -#import "YUMIDischargePresentRegard.h" -#import "InterlocutionStatementRegardGovernancer.h" -#import "YUMIChamberFurthaerParrotRegardGovernancer.h" -#import "YUMIChamberAcceptRegardGovernancer.h" -#import "YUMIChamberHalfCommunicationRegard.h" -#import "YUMIChamberCommunicationIntumesceRegard.h" -#import "YUMIChamberFurthaerDisportRegardGovernancer.h" - -NSString * const kRoomPlayEnterKey = @"kRoomPlayEnterKey"; - -@interface YUMIChamberParrotAccommodatedRegard () -@property (nonatomic,strong) UIScrollView *scrollView; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UIButton *introjectionBtuton; -@property (nonatomic,strong) UIButton *loudspeakerBtuton; -@property (nonatomic,strong) UIButton *acceptBtuton; -@property (nonatomic,strong) UIButton *communicationBtuton; -@property (nonatomic,strong) UIButton *furthaerBtuton; -@property (nonatomic,strong) UIButton *presentBtuton; -@property (nonatomic,strong) UIButton *arrangeLoudspeakerBtuton; -@property (nonatomic,strong) UIButton *magnificentBtuton; -@property (nonatomic,strong) YUMIChamberDischargeEssayRegard *introjectionEssayRegard; -@property (nonatomic,strong) YUMIChamberCommunicationIntumesceRegard *roadliceCommunicationRegard; -@property (nonatomic,weak) id delegate; -@end - - -@implementation YUMIChamberParrotAccommodatedRegard - -- (instancetype)initWithDelegate:(id)delegate { - self = [super init]; - if (self) { - self.delegate = delegate; - [self initSubViews]; - [self initChildLyRestrictions]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(EvidencePresentRegard:) name:@"kShowGiftView" object:nil]; - } - return self; -} -- (void)parrotResignThresholdResponder { - [self.introjectionEssayRegard.compileEssayAccurated resignFirstResponder]; -} - -#pragma mark - Response -- (void)parrotBtutonPerformance:(UIButton *)sender { - YUMIChamberParrotProvisionGenre type = sender.tag; - switch (type) { - case YUMIChamberParrotProvisionGenre_Input: - { - if (self.delegate.acquireChamberAbstract.isCloseScreen) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Room_Menu_Container_View_0")]; - return; - } - if (self.delegate.acquireChamberAbstract.type == ChamberGenre_Anchor) { - self.introjectionEssayRegard = [YUMIChamberDischargeEssayRegard EvidenceEssayRegard:self.superview.superview delegate:self.delegate atUid:nil atNick:nil]; - } else { - self.introjectionEssayRegard = [YUMIChamberDischargeEssayRegard EvidenceEssayRegard:self.superview delegate:self.delegate atUid:nil atNick:nil]; - } - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_chatbox_click]; - } - break; - - case YUMIChamberParrotProvisionGenre_Mic: { - [RealtimackExecutive instance].localDelicate = !self.loudspeakerBtuton.isSelected; - self.loudspeakerBtuton.selected = [RealtimackExecutive instance].isLocalDelicate; - } - break; - case YUMIChamberParrotProvisionGenre_Face: { - YUMIChamberAcceptRegardGovernancer * faceVC = [[YUMIChamberAcceptRegardGovernancer alloc] init]; - faceVC.modalPresentationStyle = UIModalPresentationOverFullScreen; - faceVC.roomId = [NSString stringWithFormat:@"%ld", self.delegate.acquireChamberAbstract.roomId]; - [self.delegate.acquireUniversalNev presentViewController:faceVC animated:YES completion:nil]; - } - break; - case YUMIChamberParrotProvisionGenre_Gift: { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_gift_click]; - NSString * roomUid = [NSString stringWithFormat:@"%ld", [self.delegate acquireChamberAbstract].uid]; - YUMIDischargePresentRegard * presentRegard = [[YUMIDischargePresentRegard alloc] initWithType:DischargePresentGenre_Room uid:roomUid]; - presentRegard.delegate = self.delegate; - NSArray * giftUses = [self prohibitipositionPresentConsumers:[self.delegate acquireMiecreoscoopeInthecaseofmtowardsion]]; - [presentRegard prohibitipositionPresentConsumers:giftUses]; - [self.delegate.acquireUniversalNev presentViewController:presentRegard animated:YES completion:nil]; - } - break; - case YUMIChamberParrotProvisionGenre_Message: - { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_privateletter_click]; - UIViewController * controller = (UIViewController *)self.delegate; - YUMIChamberHalfCommunicationRegard *halfMessageView = [[YUMIChamberHalfCommunicationRegard alloc] initWithFrame:CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight) controller:controller]; - [controller.view addSubview:halfMessageView]; - [UIView animateWithDuration:.35 animations:^{ - CGRect rect = halfMessageView.frame; - rect.origin.y = 0; - halfMessageView.frame = rect; - }]; - - } - break; - case YUMIChamberParrotProvisionGenre_More: { - YUMIChamberFurthaerParrotRegardGovernancer * moreMenuVC = [[YUMIChamberFurthaerParrotRegardGovernancer alloc] initWithDelegate:self.delegate]; - [self.delegate.acquireUniversalNev presentViewController:moreMenuVC animated:YES completion:nil]; - } - break; - case YUMIChamberParrotProvisionGenre_ArrangeMic:{ - if (self.delegate.acquireChamberAbstract.roomModeType == ChamberModeGenre_Open_PK_Mode && self.delegate.isChamberCombatDisporting) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Room_Menu_Container_View_1")]; - return; - } - - self.arrangeLoudspeakerBtuton.selected = NO; - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.acquireChamberAbstract.roomId]; - request.userIds = @[[AccountAbstractStorage instance].acquireCid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - NIMChatroomMember * member; - if (error == nil) { - member = members.firstObject; - } - ChamberAbstractMatrix * roomInfo = self.delegate.acquireChamberAbstract; - YUMIScheduleLoudspeakerAbstractMatrix * info = [[YUMIScheduleLoudspeakerAbstractMatrix alloc] init]; - info.roomUid = [NSString stringWithFormat:@"%ld", roomInfo.uid]; - info.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - info.nick = roomInfo.nick; - info.roomAvatar = roomInfo.avatar; - info.roomTitle = roomInfo.title; - info.micQueue = [self.delegate acquireMiecreoscoopeInthecaseofmtowardsion]; - info.isManager = (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager); - info.type = roomInfo.roomModeType == ChamberModeGenre_Open_Blind ? ArrangeLoudspeakerGenre_Dating : roomInfo.roomModeType == ChamberModeGenre_Open_PK_Mode ? ArrangeLoudspeakerGenre_Room_PK : ArrangeLoudspeakerGenre_Normal; - YUMIScheduleLoudspeakerRegardGovernancer * arrangeMicVC = [[YUMIScheduleLoudspeakerRegardGovernancer alloc] initAboutAbstract:info]; - [self.delegate.acquireUniversalNev presentViewController:arrangeMicVC animated:YES completion:nil]; - }]; - } - break; - default: - break; - } -} - -#pragma mark - notification -- (void)EvidencePresentRegard:(NSNotification *)noti { - NSDictionary *dict = noti.object; - NSString *giftId = dict[@"giftId"]; - NSString * roomUid = [NSString stringWithFormat:@"%ld", [self.delegate acquireChamberAbstract].uid]; - YUMIDischargePresentRegard * presentRegard = [[YUMIDischargePresentRegard alloc] initWithType:DischargePresentGenre_Room uid:roomUid]; - presentRegard.delegate = self.delegate; - NSArray * giftUses = [self prohibitipositionPresentConsumers:[self.delegate acquireMiecreoscoopeInthecaseofmtowardsion]]; - [presentRegard prohibitipositionPresentConsumers:giftUses]; - presentRegard.chosenPresentId = giftId; - [self.delegate.acquireUniversalNev presentViewController:presentRegard animated:YES completion:nil]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.scrollView]; - [self addSubview:self.presentBtuton]; - - [self.scrollView addSubview:self.stackView]; - - [self.stackView addArrangedSubview:self.introjectionBtuton]; - [self.stackView addArrangedSubview:self.loudspeakerBtuton]; - [self.stackView addArrangedSubview:self.acceptBtuton]; - [self.stackView addArrangedSubview:self.arrangeLoudspeakerBtuton]; - [self.stackView addArrangedSubview:self.communicationBtuton]; - [self.stackView addArrangedSubview:self.furthaerBtuton]; -} - -- (void)initChildLyRestrictions { - [self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self).offset(15); - make.right.mas_equalTo(self.presentBtuton.mas_left).offset(-10); - make.top.bottom.mas_equalTo(self); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.bottom.leading.trailing.height.mas_equalTo(self.scrollView); - }]; - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - [self.introjectionBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(100, 30)); - }]; - } else { - [self.introjectionBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(150, 30)); - }]; - } - - [self.presentBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self); - make.right.mas_equalTo(self).offset(-15); - make.size.mas_equalTo(CGSizeMake(38, 38)); - }]; -} - -- (NSArray *)prohibitipositionPresentConsumers:(NSMutableDictionary *)queue { - NSMutableArray * array = [NSMutableArray array]; - for (MiecreoscoopeMHTueueMatrix * miecreoscoopeMatrix in queue.allValues) { - if (miecreoscoopeMatrix.userInfo && miecreoscoopeMatrix.userInfo.uid >0) { - ConsumerAbstractMatrix * userInfo = miecreoscoopeMatrix.userInfo; - YUMIExternalizeConsumerAbstractMatrix * userModel = [[YUMIExternalizeConsumerAbstractMatrix alloc] init]; - userModel.avatar = userInfo.avatar; - userModel.vipMic = userInfo.vipMic; - userModel.position = [NSString stringWithFormat:@"%d", miecreoscoopeMatrix.microState.position]; - userModel.uid = userInfo.uid; - if (self.delegate.acquireChamberAbstract.type == ChamberGenre_Anchor && miecreoscoopeMatrix.microState.position == -1) { - continue; - } - [array addObject:userModel]; - } - } - - if (self.delegate.acquireChamberAbstract.leaveMode) { - ChamberAbstractMatrix * roomInfo= self.delegate.acquireChamberAbstract; - YUMIExternalizeConsumerAbstractMatrix * userModel = [[YUMIExternalizeConsumerAbstractMatrix alloc] init]; - userModel.avatar = roomInfo.avatar; - userModel.position = @"-1"; - userModel.uid = roomInfo.uid; - [array addObject:userModel]; - } else if (self.delegate.acquireChamberAbstract.type == ChamberGenre_Anchor) { - ChamberAbstractMatrix * roomInfo= self.delegate.acquireChamberAbstract; - BOOL hadContainerOwner = NO; - for (ConsumerAbstractMatrix *userModel in array) { - if (userModel.uid == roomInfo.uid) { - hadContainerOwner = YES; - break; - } - } - if (!hadContainerOwner) { - YUMIExternalizeConsumerAbstractMatrix * userModel = [[YUMIExternalizeConsumerAbstractMatrix alloc] init]; - userModel.avatar = roomInfo.avatar; - userModel.position = @"-1"; - userModel.uid = roomInfo.uid; - [array addObject:userModel]; - } - } - return array; -} - -- (MiecreoscoopeMHTueueMatrix *)prohibiticoveryMieySelfMiecreoscoope:(NSMutableDictionary *)queue { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - for (MiecreoscoopeMHTueueMatrix * miecreoscoopeMatrix in queue.allValues) { - if (miecreoscoopeMatrix.userInfo && miecreoscoopeMatrix.userInfo.uid == uid.integerValue) { - return miecreoscoopeMatrix; - } - } - return nil; -} - -#pragma mark - ChamberGuestRepresendtation -- (void)onMiecreoscoopeInthecaseofmtowardsionRefurbish:(NSMutableDictionary *)queue { - MiecreoscoopeMHTueueMatrix * model = [self prohibiticoveryMieySelfMiecreoscoope:queue]; - if (model) { - self.loudspeakerBtuton.hidden = NO; - self.loudspeakerBtuton.selected = model.microState.micState == MiecreoscoopeLoudspeakerDeclareGenre_Close ? YES : [RealtimackExecutive instance].isLocalDelicate; - self.loudspeakerBtuton.enabled = model.microState.micState == MiecreoscoopeLoudspeakerDeclareGenre_Open; - if (![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - self.acceptBtuton.hidden = YES; - } else { - self.acceptBtuton.hidden = NO; - } - } else { - self.loudspeakerBtuton.hidden = YES; - self.acceptBtuton.hidden = YES; - } - -} - -- (void)onChamberImported { - NSInteger unreadCount = [[NIMSDK sharedSDK].conversationManager allUnreadCount]; - self.communicationBtuton.selected = unreadCount > 0; - [self onChamberRefurbish]; -} - -- (void)onChamberRefurbish { - ChamberAbstractMatrix * roomInfo = self.delegate.acquireChamberAbstract; - ConsumerAbstractMatrix * userInfo = self.delegate.getUserInfo; - - if (userInfo.isFirstCharge) { - [self.presentBtuton setImage:[UIImage imageNamed:@"yumi_scope_menu_present_first_recharge"] forState:UIControlStateNormal]; - [self.presentBtuton setImage:[UIImage imageNamed:@"yumi_scope_menu_present_first_recharge"] forState:UIControlStateSelected]; - } else { - [self.presentBtuton setImage:[UIImage imageNamed:@"yumi_scope_menu_gift"] forState:UIControlStateNormal]; - [self.presentBtuton setImage:[UIImage imageNamed:@"yumi_scope_menu_gift"] forState:UIControlStateSelected]; - } - - if (![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - [self.presentBtuton setImage:[UIImage imageNamed:@"yumi_scope_menu_gift1"] forState:UIControlStateNormal]; - [self.presentBtuton setImage:[UIImage imageNamed:@"yumi_scope_menu_gift1"] forState:UIControlStateSelected]; - } - - self.arrangeLoudspeakerBtuton.hidden = roomInfo.roomModeType != ChamberModeGenre_Open_Micro_Mode; - if (roomInfo.roomModeType == ChamberModeGenre_Open_Blind || roomInfo.roomModeType == ChamberModeGenre_Open_PK_Mode || roomInfo.roomModeType == ChamberModeGenre_Open_Micro_Mode) { - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - request.userIds = @[[AccountAbstractStorage instance].acquireCid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - if (error == nil) { - NIMChatroomMember * member = members.firstObject; - if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager) { - self.arrangeLoudspeakerBtuton.hidden = NO; - return; - } - } - self.arrangeLoudspeakerBtuton.hidden = YES; - }]; - } -} - -- (void)shankNEMCIndividualityCommunictowardsion:(NIMMessage *)message { - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentMatrix class]]) { - AttachmentMatrix *attachment = (AttachmentMatrix *)obj.attachment; - if (attachment.first == IndividualityCommunicationGenre_Arrange_Mic || attachment.first == IndividualityCommunicationGenre_Room_PK) { - if (attachment.second == Custom_Message_Sub_Arrange_Mic_Non_Empty || attachment.second == Custom_Message_Sub_Arrange_Mic_Empty || attachment.second == Custom_Message_Sub_Room_PK_Empty || attachment.second == Custom_Message_Sub_Room_PK_Non_Empty) { - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.acquireChamberAbstract.roomId]; - request.userIds = @[[AccountAbstractStorage instance].acquireCid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - NIMChatroomMember * member; - if (error == nil) { - member = members.firstObject; - } - if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager) { - self.arrangeLoudspeakerBtuton.selected = (attachment.second == Custom_Message_Sub_Arrange_Mic_Non_Empty || attachment.second == Custom_Message_Sub_Room_PK_Non_Empty); - }; - }]; - } - } - } -} - -- (void)shankNEMCCircularCommunictowardsion:(NIMMessage *)message { - NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; - NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; - switch (content.eventType) { - case NIMChatroomEventTypeAddManager: - { - if (self.delegate.acquireChamberAbstract.roomModeType == ChamberModeGenre_Open_Blind || self.delegate.acquireChamberAbstract.roomModeType == ChamberModeGenre_Open_PK_Mode) { - for (NIMChatroomNotificationMember * member in content.targets) { - if (member.userId.intValue == [AccountAbstractStorage instance].acquireCid.integerValue) { - self.arrangeLoudspeakerBtuton.hidden = NO; - break; - } - } - } - } - break; - case NIMChatroomEventTypeRemoveManager: - { - if (self.delegate.acquireChamberAbstract.roomModeType == ChamberModeGenre_Open_Blind || self.delegate.acquireChamberAbstract.roomModeType == ChamberModeGenre_Open_PK_Mode) { - for (NIMChatroomNotificationMember * member in content.targets) { - if (member.userId.intValue == [AccountAbstractStorage instance].acquireCid.integerValue) { - self.arrangeLoudspeakerBtuton.hidden = YES; - break; - } - } - } - } - break; - default: - break; - } -} - -- (void)accelertowardseNEMCLtowardsterdaInterlocution:(NIMRecentSession *)session { - if (!self.roadliceCommunicationRegard.superview) { - [self.superview insertSubview:self.roadliceCommunicationRegard aboveSubview:self]; - [self.roadliceCommunicationRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.communicationBtuton); - make.bottom.mas_equalTo(self.communicationBtuton.mas_top).offset(-2); - make.size.mas_equalTo(CGSizeMake(87, 55)); - }]; - } - [self.roadliceCommunicationRegard accelertowardseLtowardsterdaInterlocution:session]; - NSInteger unreadCount = [[NIMSDK sharedSDK].conversationManager allUnreadCount]; - self.communicationBtuton.selected = unreadCount > 0; -} - -- (void)transltowardseNEMCLtowardsterdaInterlocution:(NIMRecentSession *)session { - NSInteger unreadCount = [[NIMSDK sharedSDK].conversationManager allUnreadCount]; - self.communicationBtuton.selected = unreadCount > 0; -} - -#pragma mark - FBCChamberCommunicationBubbleRegardRepresendtation -- (void)yUMIChamberCommunictowardsionIntumesceRegard:(YUMIChamberCommunicationIntumesceRegard *)view didSelectSession:(NIMRecentSession *)session { - UIViewController * controller = (UIViewController *)self.delegate; - YUMIChamberHalfCommunicationRegard *halfMessageView = [[YUMIChamberHalfCommunicationRegard alloc] initWithFrame:CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight) controller:controller]; - halfMessageView.chatConsumerId = session.session.sessionId; - [controller.view addSubview:halfMessageView]; - [UIView animateWithDuration:.35 animations:^{ - CGRect rect = halfMessageView.frame; - rect.origin.y = 0; - halfMessageView.frame = rect; - }]; -} - -#pragma mark - Getters And Setters -- (UIButton *)introjectionBtuton { - if (!_introjectionBtuton) { - _introjectionBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - [_introjectionBtuton setTitle:@"说点什么..." forState:UIControlStateNormal]; - } else { - [_introjectionBtuton setTitle:YMLocalizedString(@"YUMI_Room_Menu_Container_View_3") forState:UIControlStateNormal]; - } - - [_introjectionBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _introjectionBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - _introjectionBtuton.layer.masksToBounds = YES; - _introjectionBtuton.layer.cornerRadius = 15; - _introjectionBtuton.backgroundColor = UIColorRGBAlpha(0xFFFFFF, 0.3); - _introjectionBtuton.tag = YUMIChamberParrotProvisionGenre_Input; - [_introjectionBtuton addTarget:self action:@selector(parrotBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _introjectionBtuton; -} - -- (UIButton *)loudspeakerBtuton { - if (!_loudspeakerBtuton) { - _loudspeakerBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_loudspeakerBtuton setImage:[UIImage imageNamed:@"yumi_scope_menu_mimage_open"] forState:UIControlStateNormal]; - [_loudspeakerBtuton setImage:[UIImage imageNamed:@"yumi_scope_menu_mimage_close"] forState:UIControlStateSelected]; - [_loudspeakerBtuton setImage:[UIImage imageNamed:@"yumi_scope_menu_mimage_close"] forState:UIControlStateDisabled | UIControlStateSelected]; - _loudspeakerBtuton.tag = YUMIChamberParrotProvisionGenre_Mic; - [_loudspeakerBtuton addTarget:self action:@selector(parrotBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _loudspeakerBtuton.hidden = YES; - } - return _loudspeakerBtuton; -} - -- (UIButton *)acceptBtuton { - if (!_acceptBtuton) { - _acceptBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_acceptBtuton setImage:[UIImage imageNamed:@"yumi_scope_menu_face"] forState:UIControlStateNormal]; - [_acceptBtuton setImage:[UIImage imageNamed:@"yumi_scope_menu_face"] forState:UIControlStateSelected]; - _acceptBtuton.tag = YUMIChamberParrotProvisionGenre_Face; - [_acceptBtuton addTarget:self action:@selector(parrotBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _acceptBtuton.hidden = YES; - } - return _acceptBtuton; -} - -- (UIButton *)communicationBtuton { - if (!_communicationBtuton) { - _communicationBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_communicationBtuton setImage:[UIImage imageNamed:@"yumi_scope_menu_message"] forState:UIControlStateNormal]; - [_communicationBtuton setImage:[UIImage imageNamed:@"yumi_scope_menu_new_message"] forState:UIControlStateSelected]; - _communicationBtuton.tag = YUMIChamberParrotProvisionGenre_Message; - [_communicationBtuton addTarget:self action:@selector(parrotBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _communicationBtuton; -} - -- (UIButton *)furthaerBtuton { - if (!_furthaerBtuton) { - _furthaerBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_furthaerBtuton setImage:[UIImage imageNamed:@"yumi_scope_menu_more"] forState:UIControlStateNormal]; - [_furthaerBtuton setImage:[UIImage imageNamed:@"yumi_scope_menu_more"] forState:UIControlStateSelected]; - _furthaerBtuton.tag = YUMIChamberParrotProvisionGenre_More; - [_furthaerBtuton addTarget:self action:@selector(parrotBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _furthaerBtuton; -} - -- (UIButton *)magnificentBtuton { - if (!_magnificentBtuton) { - _magnificentBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_magnificentBtuton setImage:[UIImage imageNamed:@"yumi_scope_menu_noble"] forState:UIControlStateNormal]; - _magnificentBtuton.tag = YUMIChamberParrotProvisionGenre_Noble; - [_magnificentBtuton addTarget:self action:@selector(parrotBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _magnificentBtuton; -} - -- (UIButton *)presentBtuton { - if (!_presentBtuton) { - _presentBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_presentBtuton setImage:[UIImage imageNamed:@"yumi_scope_menu_gift"] forState:UIControlStateNormal]; - [_presentBtuton setImage:[UIImage imageNamed:@"yumi_scope_menu_gift"] forState:UIControlStateSelected]; - _presentBtuton.tag = YUMIChamberParrotProvisionGenre_Gift; - [_presentBtuton addTarget:self action:@selector(parrotBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _presentBtuton; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentCenter; - _stackView.spacing = 8; - } - return _stackView; -} - -- (UIButton *)arrangeLoudspeakerBtuton { - if (!_arrangeLoudspeakerBtuton) { - _arrangeLoudspeakerBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_arrangeLoudspeakerBtuton setImage:[UIImage imageNamed:@"yumi_scope_menu_arrange_mic"] forState:UIControlStateNormal]; - [_arrangeLoudspeakerBtuton setImage:[UIImage imageNamed:@"yumi_scope_menu_arrange_mimage_new"] forState:UIControlStateSelected]; - _arrangeLoudspeakerBtuton.tag = YUMIChamberParrotProvisionGenre_ArrangeMic; - [_arrangeLoudspeakerBtuton addTarget:self action:@selector(parrotBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _arrangeLoudspeakerBtuton.hidden = YES; - } - return _arrangeLoudspeakerBtuton; -} - -- (UIScrollView *)scrollView { - if (!_scrollView) { - _scrollView = [[UIScrollView alloc] init]; - _scrollView.backgroundColor = [UIColor clearColor]; - _scrollView.showsHorizontalScrollIndicator = NO; - } - return _scrollView; -} - -- (YUMIChamberCommunicationIntumesceRegard *)roadliceCommunicationRegard { - if (!_roadliceCommunicationRegard) { - _roadliceCommunicationRegard = [[YUMIChamberCommunicationIntumesceRegard alloc] init]; - _roadliceCommunicationRegard.delegate = self; - } - return _roadliceCommunicationRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/Model/XPMessageInfoModel.h b/YuMi/Modules/YMRoom/View/MessageContainerView/Model/XPMessageInfoModel.h new file mode 100644 index 00000000..abe00be2 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/Model/XPMessageInfoModel.h @@ -0,0 +1,35 @@ +// +// YMMessageInfoModel.h +// YUMI +// +// Created by YUMI on 2022/10/21. +// + +#import +NS_ASSUME_NONNULL_BEGIN + +@interface XPMessageInfoModel : NSObject +///显示文本 +@property (nonatomic,strong) NSAttributedString *content; +///cell的高度 +@property (nonatomic,assign) CGFloat rowHeight; +///文本内容的 +@property (nonatomic,assign) CGFloat contentLeftMargin; +///文本右边的间隙 +@property (nonatomic,assign) CGFloat contentRightMargin; +///文本上面的间隙 +@property (nonatomic,assign) CGFloat contentTopMargin; +///文本底部的间隙 +@property (nonatomic,assign) CGFloat contentBottomMargin; +///底部的间隙 +@property (nonatomic,assign) CGFloat cellBottomMargin; +///是否要隐藏背景 +@property (nonatomic,assign) BOOL isHiddenBubble; +///是否改变内容的区域 +@property (nonatomic,assign) BOOL isUpdateContentFrame; +///气泡url +@property (nonatomic, copy) NSString *bubbleImageUrl; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/Model/XPMessageInfoModel.m b/YuMi/Modules/YMRoom/View/MessageContainerView/Model/XPMessageInfoModel.m new file mode 100644 index 00000000..bf90e7d1 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/Model/XPMessageInfoModel.m @@ -0,0 +1,38 @@ +// +// YMMessageInfoModel.m +// YUMI +// +// Created by YUMI on 2022/10/21. +// + +#import "XPMessageInfoModel.h" +#import "XPRoomMessageConstant.h" +#import + + +@implementation XPMessageInfoModel + +- (instancetype)init { + if ([super init]) { + self.contentLeftMargin = 12; + self.contentRightMargin = 0; + self.contentTopMargin = 10; + self.contentBottomMargin = 10; + self.cellBottomMargin = 6; + self.isUpdateContentFrame = NO; + self.isHiddenBubble = NO; + } + return self; +} + +- (void)setContent:(NSAttributedString *)content { + _content = content; + CGSize maxSize = CGSizeMake(kRoomMessageMaxWidth - self.contentLeftMargin - self.contentRightMargin - 12, MAXFLOAT); + YYTextContainer *container = [YYTextContainer containerWithSize:maxSize]; + container.maximumNumberOfRows = 0; + YYTextLayout *layout = [YYTextLayout layoutWithContainer:container text:self.content]; + CGFloat rowHeight = layout.textBoundingSize.height + self.contentTopMargin + self.contentBottomMargin + self.cellBottomMargin; + self.rowHeight = rowHeight; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/Model/XPMessageRemoteExtModel.h b/YuMi/Modules/YMRoom/View/MessageContainerView/Model/XPMessageRemoteExtModel.h new file mode 100644 index 00000000..edb49516 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/Model/XPMessageRemoteExtModel.h @@ -0,0 +1,59 @@ +// +// YMMessageRepoteExtModel.h +// YUMI +// +// Created by YUMI on 2021/10/27. +// 解析message 的扩展的模型 + +#import "NSObject+MJExtension.h" +#import "UserLevelVo.h" +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPMessageRemoteExtModel : NSObject +///魅力等级 +@property (nonatomic,copy) NSString *charmUrl; +@property (nonatomic,assign) NSInteger erbanNo; +///经验等级 +@property (nonatomic,copy) NSString *experUrl; +///账号的类型 +@property(nonatomic, assign) UserLevelType defUser; +///是否是新用户 +@property (nonatomic,assign) BOOL newUser; +///是否是靓号 +@property (nonatomic,assign) BOOL hasPrettyErbanNo; +///是否是官方 安卓是这样用的 写上吧 +@property (nonatomic,assign) BOOL official; +///座驾名称 +@property (nonatomic,copy) NSString *carName; +///等级编号 +@property (nonatomic,assign) NSInteger experLevelSeq; +///跟随的 +@property (nonatomic,copy) NSString *fromNick; +@property (nonatomic,assign) UserEnterRoomFromType fromType; +@property (nonatomic,copy) NSString *fromUid; +///名牌的 +@property (nonatomic,copy) NSString *inRoomNameplatePic; +///铭牌的字 +@property (nonatomic,copy) NSString *inRoomNameplateWord; +///贵族icon +@property (nonatomic, copy) NSString *vipIcon; +///安卓房间公屏气泡 +@property (nonatomic, copy) NSString *androidBubbleUrl; +///iOS房间公屏气泡 +@property (nonatomic, copy) NSString *iosBubbleUrl; +///是否隐身进房 0:不隐身;1:隐身 +@property (nonatomic, assign) BOOL enterHide; +///是否防被踢 +@property (nonatomic, assign) BOOL preventKick; +///进房特效 +@property (nonatomic, copy) NSString *enterRoomEffects; +///性别 +@property (nonatomic, assign) GenderType gender; +///是否符合渠道打招呼 +@property (nonatomic,assign) BOOL fromSayHelloChannel; +/// 0 普通 1超管 +@property (nonatomic,assign) NSInteger platformRole; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/Model/XPMessageRemoteExtModel.m b/YuMi/Modules/YMRoom/View/MessageContainerView/Model/XPMessageRemoteExtModel.m new file mode 100644 index 00000000..088b720e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/Model/XPMessageRemoteExtModel.m @@ -0,0 +1,12 @@ +// +// YMMessageRepoteExtModel.m +// YUMI +// +// Created by YUMI on 2021/10/27. +// + +#import "XPMessageRemoteExtModel.h" + +@implementation XPMessageRemoteExtModel + +@end diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/Model/YUMICommunicationAbstractMatrix.h b/YuMi/Modules/YMRoom/View/MessageContainerView/Model/YUMICommunicationAbstractMatrix.h deleted file mode 100644 index 9786677e..00000000 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/Model/YUMICommunicationAbstractMatrix.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YMMessageInfoModel.h -// YUMI -// -// Created by YUMI on 2022/10/21. -// - -#import -NS_ASSUME_NONNULL_BEGIN - -@interface YUMICommunicationAbstractMatrix : NSObject -@property (nonatomic,strong) NSAttributedString *content; -@property (nonatomic,assign) CGFloat rowHeight; -@property (nonatomic,assign) CGFloat contentLeftMargin; -@property (nonatomic,assign) CGFloat contentRightMargin; -@property (nonatomic,assign) CGFloat contentTopMargin; -@property (nonatomic,assign) CGFloat contentBottomMargin; -@property (nonatomic,assign) CGFloat cellBottomMargin; -@property (nonatomic,assign) BOOL isHiddenBubble; -@property (nonatomic,assign) BOOL isUpdateContentFrame; -@property (nonatomic, copy) NSString *bubbleImageUrl; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/Model/YUMICommunicationAbstractMatrix.m b/YuMi/Modules/YMRoom/View/MessageContainerView/Model/YUMICommunicationAbstractMatrix.m deleted file mode 100644 index ce261dee..00000000 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/Model/YUMICommunicationAbstractMatrix.m +++ /dev/null @@ -1,38 +0,0 @@ -// -// YMMessageInfoModel.m -// YUMI -// -// Created by YUMI on 2022/10/21. -// - -#import "YUMICommunicationAbstractMatrix.h" -#import "XPRoomMessageConstant.h" -#import - - -@implementation YUMICommunicationAbstractMatrix - -- (instancetype)init { - if ([super init]) { - self.contentLeftMargin = 12; - self.contentRightMargin = 0; - self.contentTopMargin = 10; - self.contentBottomMargin = 10; - self.cellBottomMargin = 6; - self.isUpdateContentFrame = NO; - self.isHiddenBubble = NO; - } - return self; -} - -- (void)setContent:(NSAttributedString *)content { - _content = content; - CGSize maxSize = CGSizeMake(kRoomMessageMaxWidth - self.contentLeftMargin - self.contentRightMargin - 12, MAXFLOAT); - YYTextContainer *container = [YYTextContainer containerWithSize:maxSize]; - container.maximumNumberOfRows = 0; - YYTextLayout *layout = [YYTextLayout layoutWithContainer:container text:self.content]; - CGFloat rowHeight = layout.textBoundingSize.height + self.contentTopMargin + self.contentBottomMargin + self.cellBottomMargin; - self.rowHeight = rowHeight; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/Model/YUMICommunicationRemoteExtMatrix.h b/YuMi/Modules/YMRoom/View/MessageContainerView/Model/YUMICommunicationRemoteExtMatrix.h deleted file mode 100644 index 97989fae..00000000 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/Model/YUMICommunicationRemoteExtMatrix.h +++ /dev/null @@ -1,39 +0,0 @@ -// -// YMMessageRepoteExtModel.h -// YUMI -// -// Created by YUMI on 2021/10/27. -// 解析message 的扩展的模型 - -#import "NSObject+MJExtension.h" -#import "ConsumerPrototypeVo.h" -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMICommunicationRemoteExtMatrix : NSObject -@property (nonatomic,copy) NSString *charmUrl; -@property (nonatomic,assign) NSInteger erbanNo; -@property (nonatomic,copy) NSString *experUrl; -@property(nonatomic, assign) ConsumerPrototypeGenre defUser; -@property (nonatomic,assign) BOOL newUser; -@property (nonatomic,assign) BOOL hasPrettyErbanNo; -@property (nonatomic,assign) BOOL official; -@property (nonatomic,copy) NSString *carName; -@property (nonatomic,assign) NSInteger experLevelSeq; -@property (nonatomic,copy) NSString *fromNick; -@property (nonatomic,assign) ConsumerEnterChamberFromGenre fromType; -@property (nonatomic,copy) NSString *fromUid; -@property (nonatomic,copy) NSString *inRoomNameplatePic; -@property (nonatomic,copy) NSString *inRoomNameplateWord; -@property (nonatomic, copy) NSString *vipIcon; -@property (nonatomic, copy) NSString *androidBubbleUrl; -@property (nonatomic, copy) NSString *iosBubbleUrl; -@property (nonatomic, assign) BOOL enterHide; -@property (nonatomic, assign) BOOL preventKick; -@property (nonatomic, copy) NSString *enterRoomEffects; -@property (nonatomic, assign) GenderGenre gender; -@property (nonatomic,assign) BOOL fromSayHelloChannel; -@property (nonatomic,assign) NSInteger platformRole; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/Model/YUMICommunicationRemoteExtMatrix.m b/YuMi/Modules/YMRoom/View/MessageContainerView/Model/YUMICommunicationRemoteExtMatrix.m deleted file mode 100644 index ebbfd610..00000000 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/Model/YUMICommunicationRemoteExtMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMMessageRepoteExtModel.m -// YUMI -// -// Created by YUMI on 2021/10/27. -// - -#import "YUMICommunicationRemoteExtMatrix.h" - -@implementation YUMICommunicationRemoteExtMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/XPRoomMessageConstant.h b/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/XPRoomMessageConstant.h index cbeaf287..13f1ad27 100644 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/XPRoomMessageConstant.h +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/XPRoomMessageConstant.h @@ -12,11 +12,14 @@ #define kRoomMessageMaxWidth (KScreenWidth - 15 - 90) -static CGFloat kChamberCommunicationDefalutLetterform = 12; -static CGFloat kChamberCommunicationEssayVacuumAltitude = 10; +///公屏文本字体的大小 +static CGFloat kRoomMessageDefalutFont = 12; +///文字上下的间隙 +static CGFloat kRoomMessageTextSpaceHeight = 10; -static CGFloat kChamberCommunicationIntumesceMonopolizeRestrictions = 7; -static NSInteger kChamberCommunicationLargestLongness = 1000; +static CGFloat kRoomMessageBubbleCornerRadius = 7; +///公屏保存的最大数 +static NSInteger kRoomMessageMaxLength = 1000; -#endif +#endif /* XPRoomMessageConstant_h */ diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/XPRoomMessageParser.h b/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/XPRoomMessageParser.h new file mode 100644 index 00000000..318c2a58 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/XPRoomMessageParser.h @@ -0,0 +1,23 @@ +// +// YMRoomMessageParser.h +// YUMI +// +// Created by YUMI on 2021/10/26. +// + +#import +#import "RoomHostDelegate.h" +NS_ASSUME_NONNULL_BEGIN + +@class NIMMessage, XPMessageInfoModel; + +@interface XPRoomMessageParser : NSObject + +- (XPMessageInfoModel*)parseMessageAttribute:(NIMMessage *)message; +- (NSString *)parseMessageBubble:(NIMMessage *)message; + +///房间的代理 +@property (nonatomic,weak) id hostDelegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/XPRoomMessageParser.m b/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/XPRoomMessageParser.m new file mode 100644 index 00000000..83dcc18a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/XPRoomMessageParser.m @@ -0,0 +1,1177 @@ +// +// YMRoomMessageParser.m +// YUMI +// +// Created by YUMI on 2021/10/26. +// + +#import "XPRoomMessageParser.h" +#import +#import +#import +///Tool +#import "ThemeColor+Room.h" +#import "XPRoomMessageConstant.h" +#import "AccountInfoStorage.h" +#import "YUMIMacroUitls.h" +#import "XPGiftStorage.h" +#import "XPRoomFaceTool.h" +#import "TTPopup.h" +#import "Api+WishGift.h" +#import "NSArray+Safe.h" +#import "ClientConfig.h" +///Model +#import "XPMessageRemoteExtModel.h" +#import "AttachmentModel.h" +#import "GiftReceiveInfoModel.h" +#import "XPKickUserModel.h" +#import "MicroQueueModel.h" +#import "UserInfoModel.h" +#import "MicroStateModel.h" +#import "RoomInfoModel.h" +#import "DatingInfoModel.h" +#import "RoomFaceInfoModel.h" +#import "RoomFaceSendInfoModel.h" +#import "GuildSuperAdminInfoModel.h" +#import "RoomPKChooseUserModel.h" +#import "RoomPKInfoModel.h" +#import "CandyTreeResultModel.h" +#import "XPGiftBigPrizeModel.h" +#import "XPGiftCompoundModel.h" +#import "RoomSailingPrizeModel.h" +#import "XPOpenRedPacketModel.h" +#import "XPMessageInfoModel.h" +#import "XPRoomStarKitchenModel.h" +#import "NetImageView.h" + +#import "XPUserCardViewController.h" +#import "XPRoomTopicAlertView.h" +#import "XPRoomSendTextView.h" +#import "XPRoomPKResultView.h" + +@implementation XPRoomMessageParser + +- (XPMessageInfoModel*)parseMessageAttribute:(NIMMessage *)message { + NIMMessageType messageType = message.messageType; + XPMessageInfoModel * messageInfo = [[XPMessageInfoModel alloc] init]; + switch (messageType) { + case NIMMessageTypeText: + return [self makeChatAttribute:message messageInfo:messageInfo]; + + case NIMMessageTypeTip: + return [self makeTipsAttribute:message messageInfo:messageInfo]; + + case NIMMessageTypeNotification: + return [self makeNotificationAttribute:message messageInfo:messageInfo]; + + case NIMMessageTypeCustom: + return [self makeCustomAttribute:message messageInfo:messageInfo]; + default: + return nil; + } +} + +- (NSString *)parseMessageBubble:(NIMMessage *)message { + XPMessageRemoteExtModel * model = [XPMessageRemoteExtModel modelWithJSON:message.remoteExt[message.from]]; + return model.iosBubbleUrl ? model.iosBubbleUrl : @""; +} + +/// 用户公屏聊天 +- (XPMessageInfoModel *)makeCustomAttribute:(NIMMessage *)message messageInfo:(XPMessageInfoModel*)messageInfo{ + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + AttachmentModel *attachment = (AttachmentModel *)obj.attachment; + XPMessageRemoteExtModel * model = [XPMessageRemoteExtModel modelWithJSON:message.remoteExt[message.from]]; + messageInfo.bubbleImageUrl = [self parseMessageBubble:message]; + int first = attachment.first; + if (first == CustomMessageType_Gift) {///单人送 + return [self createSendGiftAttribute:attachment sendInfo:model messageInfo:messageInfo]; + } else if(first == CustomMessageType_AllMicroSend) {///全麦送 多人送 + return [self createBatchMicroSendGiftAttribute:attachment sendInfo:model messageInfo:messageInfo]; + } else if(first == CustomMessageType_Room_Tip) {///分享/收藏房间 + return [self createShareOrAttentionRoomAttribute:attachment sendInfo:model uid:message.from messageInfo:messageInfo]; + } else if(first == CustomMessageType_Kick_User || first == CustomMessageType_Queue) { + XPKickUserModel * kickModel = [XPKickUserModel modelWithJSON:attachment.data]; + return [self createKickUserAttribute:attachment info:kickModel messageInfo:messageInfo]; + } else if(first == CustomMessageType_Look_Love) {//糖果树 + return [self createCandyTreeHighLevelAttribute:attachment messageInfo:messageInfo]; + } else if(first == CustomMessageType_Arrange_Mic) { + return [self createArrangeMicAttribute:attachment messageInfo:messageInfo]; + }else if(first == CustomMessageType_Update_RoomInfo) { + return [self createRoomInfoUpdateAttribute:attachment messageInfo:messageInfo]; + } else if(first == CustomMessageType_Collection_Room) { + return [self createCollectRoomAttribute:attachment messageInfo:messageInfo]; + } else if(first == CustomMessageType_RoomPlay_Dating) { + return [self createRoomDatingAttribute:attachment messageInfo:messageInfo]; + } else if (first == CustomMessageType_Noble_VIP) {//贵族 + return [self createNobleLevelAttribute:attachment messageInfo:messageInfo]; + } else if (first == CustomMessageType_Face) {//贵族 + return [self createRoomFaceAttribute:attachment messageInfo:messageInfo]; + } else if (first == CustomMessageType_Tarot) {//塔罗 + return [self createTarotAttribute:attachment messageInfo:messageInfo]; + } else if (first == CustomMessageType_Anchor_FansTeam) {//粉丝团 + return [self createAnchorFansTeamAttribute:attachment messageInfo:messageInfo]; + } else if(first == CustomMessageType_Hall_Super_Admin) {///超管踢人出房间 + XPKickUserModel * kickModel = [XPKickUserModel modelWithJSON:attachment.data]; + return [self createKickUserAttribute:attachment info:kickModel messageInfo:messageInfo]; + } else if (first == CustomMessageType_Room_PK) {///房内PK + return [self createRoomPKAttribute:attachment messageInfo:messageInfo]; + } else if (first == CustomMessageType_LuckyBag) {///幸运礼物 + return [self createRoomLuckyBigPrizeAttribute:attachment messageInfo:messageInfo]; + } else if(first == CustomMessageType_Gift_Compound) {///礼物合成 + return [self createRoomGiftCompoundAttribute:attachment messageInfo:messageInfo]; + } else if(first == CustomMessageType_Room_Sailing) {///航海 + return [self createRoomSailingAttribute:attachment messageInfo:messageInfo]; + } else if (first == CustomMessageType_RedPacket && attachment.second == Custom_Message_Sub_OpenRedPacketSuccess) { + return [self createRedPacketAttribute:attachment messageInfo:messageInfo]; + } else if (first == CustomMessageType_Graffiti_Star_Kitchen){ + return [self createStarKitchenAttribute:attachment]; + } + return nil; +} + +/// @param message 消息的实体 +- (XPMessageInfoModel*)makeChatAttribute:(NIMMessage *)message messageInfo:(XPMessageInfoModel *)messageInfo{ + NSString * uid = [AccountInfoStorage instance].getUid; + XPMessageRemoteExtModel * model = [XPMessageRemoteExtModel modelWithJSON:message.remoteExt[message.from]]; + messageInfo.bubbleImageUrl = [self parseMessageBubble:message]; + NSString * nick = [NSString stringWithFormat:@"%@:", ((NIMMessageChatroomExtension *)message.messageExt).roomNickname]; + if ([message.from isEqualToString:uid]) { + nick = @"我:"; + } + + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + + if ([ClientConfig shareConfig].canOpen) { + ///官方新用户 + [attribute appendAttributedString:[self createOfficalAndNewuserAttribute:model.defUser newUser:model.newUser fromSayHelloChannel:model.fromSayHelloChannel]]; + if ([self isCurrentRoomSuperAdmin:message.from]) { + [attribute appendAttributedString:[self createLocalImageAttribute:@"common_super_admin"]]; + } + + if (model.vipIcon) {//贵族icon + [attribute appendAttributedString:[self createUrlImageAttribute:model.vipIcon]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + } + if (model.experUrl) { + [attribute appendAttributedString:[self createUrlImageAttribute:model.experUrl]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + } + + if (model.inRoomNameplatePic.length > 0 && model.inRoomNameplateWord.length > 0) { //铭牌有图片加文字 + [attribute appendAttributedString:[self createNameplateAttibute:model.inRoomNameplateWord image:model.inRoomNameplatePic textFont:[UIFont systemFontOfSize:9]]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + } else if (model.inRoomNameplatePic.length > 0) {//铭牌只有图片 + [attribute appendAttributedString:[self createUrlImageAttribute:model.inRoomNameplatePic]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + } + } + + [attribute appendAttributedString:[self createTextAttribute:nick color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + + id nickNameNifo = message.remoteExt[@"atNames"]; + NSMutableAttributedString *msgStr; + if (message.text) { + msgStr = [[NSMutableAttributedString alloc] initWithString:message.text]; + [msgStr addAttribute:NSForegroundColorAttributeName + value:[DJDKMIMOMColor messageTextColor] + range:NSMakeRange(0, msgStr.length)]; + if ([nickNameNifo isKindOfClass:[NSArray class]]) { + for (NSString *nick in nickNameNifo) { + NSRange range = [message.text rangeOfString:nick]; + if (range.length) { + [msgStr yy_setTextHighlightRange:range color:UIColorFromRGB(0xFD85C9) backgroundColor:[UIColor clearColor] userInfo:nil]; + } + } + } + [attribute appendAttributedString:msgStr]; + } + [self attributeAddLongPressHihtLight:attribute uid:message.from nick:((NIMMessageChatroomExtension *)message.messageExt).roomNickname]; + messageInfo.content = attribute; + return messageInfo; +} + +/// 房间tips消息 +/// @param message 消息的实体 +- (XPMessageInfoModel*)makeTipsAttribute:(NIMMessage *)message messageInfo:(XPMessageInfoModel *)messageInfo{ + messageInfo.bubbleImageUrl = [self parseMessageBubble:message]; + if ([message.localExt.allKeys containsObject:@"isRoomTopic"]) { + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + [attribute appendAttributedString: [self createTextAttribute:message.text color:[UIColor whiteColor] font:kRoomMessageDefalutFont]]; + if ([[message.localExt objectForKey:@"isRoomTopic"] boolValue] == YES) { + [attribute yy_setTextHighlightRange:NSMakeRange(0, attribute.length) color:nil backgroundColor:nil tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { + RoomInfoModel * roomInfo = self.hostDelegate.getRoomInfo; + TTPopupService * config = [[TTPopupService alloc] init]; + XPRoomTopicAlertView * alertView = [[XPRoomTopicAlertView alloc] init]; + alertView.title = roomInfo.roomDesc; + alertView.message = roomInfo.introduction; + config.contentView = alertView; + [TTPopup popupWithConfig:config]; + }]; + } + messageInfo.content = attribute; + } else { + NSAttributedString * attribute = [self createTextAttribute:message.text color:UIColorFromRGB(0xFE5D7F) font:kRoomMessageDefalutFont]; + messageInfo.content = attribute; + } + return messageInfo; +} + +/// 房间通知类消息 +/// @param message 消息的实体 +- (XPMessageInfoModel*)makeNotificationAttribute:(NIMMessage *)message messageInfo:(XPMessageInfoModel *)messageInfo{ + messageInfo.bubbleImageUrl = [self parseMessageBubble:message]; + NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; + NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; + NIMChatroomNotificationMember *member = content.targets[0]; + NIMMessageChatroomExtension * messageExt = (NIMMessageChatroomExtension *)message.messageExt; + switch (content.eventType) { + case NIMChatroomEventTypeEnter:///进入房间 + { + NSString* nick = member.nick.length > 0 ? member.nick : @""; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + NSDictionary * dic = [(NSDictionary *)messageExt.roomExt.toJSONObject objectForKey:message.from]; + XPMessageRemoteExtModel * extModel = [XPMessageRemoteExtModel modelWithDictionary:dic]; + if ([ClientConfig shareConfig].canOpen) { + ///官方新用户 + [attribute appendAttributedString:[self createOfficalAndNewuserAttribute:extModel.defUser newUser:extModel.newUser fromSayHelloChannel:extModel.fromSayHelloChannel]]; + + if ([self isCurrentRoomSuperAdmin:message.from]) { + [attribute appendAttributedString:[self createLocalImageAttribute:@"common_super_admin"]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + } + + if (extModel.vipIcon.length > 0) {//贵族icon + [attribute appendAttributedString:[self createUrlImageAttribute:extModel.vipIcon]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + } + if (extModel.experUrl.length > 0) {//等级 + [attribute appendAttributedString:[self createUrlImageAttribute:extModel.experUrl]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + } + if (extModel.inRoomNameplatePic.length > 0 && extModel.inRoomNameplateWord.length > 0) { + [attribute appendAttributedString:[self createNameplateAttibute:extModel.inRoomNameplateWord image:extModel.inRoomNameplatePic textFont:[UIFont systemFontOfSize:9]]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + } + [attribute appendAttributedString:[self createNickAtrribute:nick uid:message.from.integerValue]]; + if (extModel.carName.length > 0) { + [attribute appendAttributedString:[self createTextAttribute:@" 驾着 " color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:extModel.carName color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + } + + if (extModel.fromType > 0) { + if (extModel.fromType == UserEnterRoomFromType_Home_Recommend) { + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser2") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + } else if(extModel.fromType == UserEnterRoomFromType_Follow_User || extModel.fromType == UserEnterRoomFromType_New_User_Greet) { + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser3") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createNickAtrribute:extModel.fromNick uid:extModel.fromUid.integerValue]]; + } else if(extModel.fromType == UserEnterRoomFromType_Follow_Game_Detail) { + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser4") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createNickAtrribute:extModel.fromNick uid:extModel.fromUid.integerValue]]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser5") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + } + } + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser6") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + } else { + [attribute appendAttributedString:[self createNickAtrribute:nick uid:message.from.integerValue]]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser7") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + } + + messageInfo.content = attribute; + return messageInfo; + } + break; + case NIMChatroomEventTypeInfoUpdated:{ + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + if (self.hostDelegate.getRoomInfo.datingState == RoomDatingStateChangeType_Open) { + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser8") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + messageInfo.content = attribute; + return messageInfo; + } + } + break; + default: + return nil; + } + return nil; +} + +#pragma mark -星级厨房 +- (NSAttributedString *)createStarKitchenAttribute:(AttachmentModel *)attachment{ + XPRoomStarKitchenModel *starModel = [XPRoomStarKitchenModel modelWithDictionary:attachment.data]; + NSString *title = [NSString stringWithFormat:YMLocalizedString(@"XPRoomMessageParser103"),starModel.nick,starModel.itemMultiple,starModel.diamonds]; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:kRoomMessageDefalutFont],NSForegroundColorAttributeName:[DJDKMIMOMColor messageDefaultTextColor]}]; + [attribute addAttributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor messageNickColor]} range:[title rangeOfString:starModel.nick]]; + [attribute addAttributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor messageTextColor]} range:[title rangeOfString:[NSString stringWithFormat:@" %@",starModel.itemMultiple]]]; + [attribute addAttributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor messageTextColor]} range:[title rangeOfString:[NSString stringWithFormat:@" %@",starModel.diamonds]]]; + @kWeakify(self) + [attribute yy_setTextHighlightRange:[title rangeOfString:starModel.nick] color:nil backgroundColor:nil tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { + @kStrongify(self); + if (starModel.uid.integerValue <= 0) {return;} + [self showUserCard:starModel.uid.integerValue]; + }]; + + return attribute; +} + +#pragma mark - 红包 +- (XPMessageInfoModel *)createRedPacketAttribute:(AttachmentModel *)attachment messageInfo:(XPMessageInfoModel *)messageInfo{ + XPOpenRedPacketModel *info = [XPOpenRedPacketModel modelWithDictionary:attachment.data]; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + [attribute appendAttributedString:[self createNickAtrribute:info.openRedEnvelopeUserNick uid:info.openRedEnvelopeId.integerValue]]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser9") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createNickAtrribute:info.redEnvelopeMasterNick uid:info.redEnvelopeMasterId.integerValue]]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser10") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + if (info.amount.floatValue>0) { + [attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:YMLocalizedString(@"XPRoomMessageParser11"), info.amount] color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]]; + } + messageInfo.content = attribute; + return messageInfo; +} + +#pragma mark - 航海 +- (XPMessageInfoModel *)createRoomSailingAttribute:(AttachmentModel *)attachment messageInfo:(XPMessageInfoModel *)messageInfo{ + RoomSailingPrizeModel *info = [RoomSailingPrizeModel modelWithDictionary:attachment.data]; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + [attribute appendAttributedString:[self createTextAttribute:@"厉害了! " color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:info.nick color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser13") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:info.prizeName color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]]; + if (info.prizeNum>1) { + [attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:@"x%d", info.prizeNum] color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + } + [self attributeAddHihtLight:attribute uid:info.uid.integerValue]; + messageInfo.content = attribute; + return messageInfo; +} + +#pragma mark - 礼物合成 +- (XPMessageInfoModel *)createRoomGiftCompoundAttribute:(AttachmentModel *)attachment messageInfo:(XPMessageInfoModel *)messageInfo{ + XPGiftCompoundModel *info = [XPGiftCompoundModel modelWithDictionary:attachment.data]; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser14") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:info.nick color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:info.msg color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:info.giftName color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]]; + [self attributeAddHihtLight:attribute uid:info.uid.integerValue]; + messageInfo.content = attribute; + return messageInfo; +} + +#pragma mark - 房间内幸运礼物 大价值 +- (XPMessageInfoModel *)createRoomLuckyBigPrizeAttribute:(AttachmentModel *)attachment messageInfo:(XPMessageInfoModel *)messageInfo{ + XPGiftBigPrizeModel * info= [XPGiftBigPrizeModel modelWithDictionary:attachment.data]; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser15") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:info.nick color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser16") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:info.roomTitle color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:@"通过%@", info.luckyBagName] color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:@",开出%@", info.giftName] color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + messageInfo.content = attribute; + return messageInfo; +} + +#pragma mark - 房间内PK +- (XPMessageInfoModel *)createRoomPKAttribute:(AttachmentModel *)attachment messageInfo:(XPMessageInfoModel *)messageInfo{ + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + if (attachment.second == Custom_Message_Sub_Room_PK_Manager_Up_Mic) { + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser19") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + for (NSDictionary * selectuUser in [attachment.data allValues]) { + RoomPKChooseUserModel * userInfoModel = [RoomPKChooseUserModel modelWithDictionary:selectuUser]; + if (userInfoModel.groupType != GroupType_default && userInfoModel.nick.length > 0) { + [attribute appendAttributedString:[self createNickAtrribute:userInfoModel.nick uid:userInfoModel.uid.integerValue]]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser20") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + NSString * groupTypeStr; + UIColor * groupColor; + if (userInfoModel.groupType == GroupType_Red) { + groupTypeStr= YMLocalizedString(@"XPRoomMessageParser21"); + groupColor = UIColorFromRGB(0xFB3D74); + }else{ + groupTypeStr = YMLocalizedString(@"XPRoomMessageParser22"); + groupColor = UIColorFromRGB(0x3291FC); + } + [attribute appendAttributedString:[self createTextAttribute:groupTypeStr color:groupColor font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:@"," color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + } + } + [attribute deleteCharactersInRange:NSMakeRange(attribute.string.length - 1, 1)]; + } else { + RoomPKInfoModel * model = [RoomPKInfoModel modelWithDictionary:attachment.data]; + if (attachment.second == Custom_Message_Sub_Room_PK_Mode_Close) { + NSString * title = YMLocalizedString(@"XPRoomMessageParser23"); + [attribute appendAttributedString:[self createTextAttribute:title color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + NSRange range = [title rangeOfString:YMLocalizedString(@"XPRoomMessageParser24")]; + [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor messageDefaultTextColor] range:range]; + } else if(attachment.second == Custom_Message_Sub_Room_PK_Result) { + NSString * victoryStr; + if (model.result == RoomPKResultType_Draw) { + RoomPKTeamModel * blueTeam; + RoomPKTeamModel * redTeam; + for (int i = 0 ; i < model.teams.count; i++) { + RoomPKTeamModel * team = [model.teams safeObjectAtIndex1:i]; + if (team.team == GroupType_Red) { + redTeam = team; + }else{ + blueTeam = team; + } + } + RoomPKTeamModel * team = [model.teams firstObject]; + if (model.voteMode == RoomPKVoteModeType_NumberPerson) { + victoryStr = YMLocalizedString(@"XPRoomMessageParser25"); + NSString * resultScale = [NSString stringWithFormat:@"%@:%@",[NSString stringWithFormat:@"%lld", team.score],[NSString stringWithFormat:@"%lld", team.score]]; + NSString * result = [NSString stringWithFormat:@"本场PK结果:%@!\nPK值:%@",victoryStr, resultScale]; + [attribute appendAttributedString:[self createTextAttribute:result color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + }else{ + if (team.protecScore > 0) { + NSString * resultScale = [NSString stringWithFormat:@"%@:%@",[NSString stringWithFormat:@"%lld", team.score],[NSString stringWithFormat:@"%lld", team.score]]; + victoryStr = YMLocalizedString(@"XPRoomMessageParser27"); + NSString * result = [NSString stringWithFormat:@"本场PK结果:%@!\nPK值%@",victoryStr, resultScale]; + [attribute appendAttributedString:[self createTextAttribute:result color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + }else{ + victoryStr = YMLocalizedString(@"XPRoomMessageParser29"); + NSString * result = [NSString stringWithFormat:@"本场PK结果:%@!\nPK值%@",victoryStr, @"0:0"]; + [attribute appendAttributedString:[self createTextAttribute:result color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + } + } + if (team.protector > 0) { + [attribute appendAttributedString:[[NSMutableAttributedString alloc] initWithString:@"\n"]]; + NSString * teamStr = [NSString stringWithFormat:@"蓝队守护者:%@ \n 蓝队守护值: %@ \n 红队守护者: %@ \n 红队守护值: %@", blueTeam.protector.nick.length > 0 ? blueTeam.protector.nick : @"", [[NSNumber numberWithLongLong:blueTeam.protecScore] stringValue], redTeam.protector.nick.length > 0 ? redTeam.protector.nick : @"", [[NSNumber numberWithLongLong:redTeam.protecScore] stringValue]]; + [attribute appendAttributedString:[self createTextAttribute:teamStr color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + } + }else{ + RoomPKTeamModel * victoryTeam; + RoomPKTeamModel * failTeam; + for (int i = 0 ; i < model.teams.count; i++) { + RoomPKTeamModel * team = [model.teams safeObjectAtIndex1:i]; + if (team.team == (GroupType)model.result) { + victoryTeam = team; + }else{ + failTeam = team; + } + } + if (model.result == RoomPKResultType_Red){ + victoryStr = YMLocalizedString(@"XPRoomMessageParser32"); + }else if (model.result == RoomPKResultType_Blue){ + victoryStr = YMLocalizedString(@"XPRoomMessageParser33"); + } + NSString * resultScale = [NSString stringWithFormat:@"%@:%@",[NSString stringWithFormat:@"%lld", victoryTeam.score],[NSString stringWithFormat:@"%lld", failTeam.score]]; + NSString * result; + if (model.voteMode == RoomPKVoteModeType_NumberPerson) { + result = [NSString stringWithFormat:@"本场PK结果:%@胜利!\nPK值%@ \n 胜利方战斗值:%@",victoryStr, resultScale,[NSNumber numberWithLongLong:victoryTeam.score]]; + }else{ + if (victoryTeam.protector) { + NSString * victoryProteror = victoryTeam.protector.nick.length > 0 ? victoryTeam.protector.nick : @""; + result = [NSString stringWithFormat:@"本场PK结果:%@胜利! \nPK值%@ \n %@守护者:%@ \n %@守护值:%@",victoryStr, resultScale,victoryStr, victoryProteror, victoryStr,[[NSNumber numberWithLongLong:victoryTeam.protecScore] stringValue]]; + }else{ + result = [NSString stringWithFormat:@"本场PK结果:%@胜利! \nPK值%@ \n %@守护值:%@",victoryStr, resultScale,victoryStr,[[NSNumber numberWithLongLong:victoryTeam.protecScore] stringValue]]; + } + } + [attribute appendAttributedString:[self createTextAttribute:result color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + } + + @kWeakify(self); + [attribute yy_setTextHighlightRange:NSMakeRange(0, attribute.length) color:nil backgroundColor:nil tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { + @kStrongify(self); + [self showRoomPKResult:attachment.data]; + }]; + } else if(attachment.second == Custom_Message_Sub_Room_PK_Mode_Open) { + NSString * pkType; + if (model.voteMode == RoomPKVoteModeType_GiftValue) { + pkType = YMLocalizedString(@"XPRoomMessageParser37"); + }else if (model.voteMode == RoomPKVoteModeType_NumberPerson){ + pkType = YMLocalizedString(@"XPRoomMessageParser38"); + } + NSString * title = [NSString stringWithFormat:@"管理发起房间PK,本次PK时间为%.0f秒,%@", model.duration, pkType]; + [attribute appendAttributedString:[self createTextAttribute:title color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + }else if (attachment.second == Custom_Message_Sub_Room_PK_Start){ + NSString * title = [NSString stringWithFormat:YMLocalizedString(@"XPRoomMessageParser40"), model.duration]; + [attribute appendAttributedString:[self createTextAttribute:title color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + }else if (attachment.second == Custom_Message_Sub_Room_PK_Re_Start){ + NSString * pkType; + if (model.voteMode == RoomPKVoteModeType_GiftValue) { + pkType = YMLocalizedString(@"XPRoomMessageParser41"); + }else if (model.voteMode == RoomPKVoteModeType_NumberPerson){ + pkType = YMLocalizedString(@"XPRoomMessageParser42"); + } + NSString * title = [NSString stringWithFormat:@"管理员重新开始PK,本次PK时间为%.0f秒,%@", model.duration, pkType]; + [attribute appendAttributedString:[self createTextAttribute:title color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + } + } + messageInfo.content = attribute; + return messageInfo; +} + +- (void)showRoomPKResult:(NSDictionary *)dic { + RoomPKInfoModel * pkInfo = [RoomPKInfoModel modelWithDictionary:dic]; + if (pkInfo.pkStatus == RoomPKStatusType_End || pkInfo.pkStatus == RoomPKStatusType_ReStart) { + XPRoomPKResultView * result = [[XPRoomPKResultView alloc] init]; + result.roomPKResultInfoModel = pkInfo; + [TTPopup popupView:result style:TTPopupStyleAlert]; + } +} + +#pragma mark - 表情显示 +- (XPMessageInfoModel*)createRoomFaceAttribute:(AttachmentModel *)attachment messageInfo:(XPMessageInfoModel *)messageInfo{ + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + if ([attachment.data[@"data"] isKindOfClass:[NSArray class]]) { + NSArray * array = [RoomFaceSendInfoModel modelsWithArray:attachment.data[@"data"]]; + for (int i = 0; i< array.count; i++) { + RoomFaceSendInfoModel * sendFaceInfo = [array safeObjectAtIndex1:i]; + [attribute appendAttributedString:[self createTextAttribute:sendFaceInfo.nick color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:@":" color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:@"\n" color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + for (int j = 0; j < sendFaceInfo.resultIndexes.count; j++) { + NSNumber *index = sendFaceInfo.resultIndexes[j]; + UIImage *face = [[XPRoomFaceTool shareFaceTool] findFaceImageById:sendFaceInfo.faceId index:[index integerValue]]; + if (face) { + UIImageView *imageView = [[UIImageView alloc]init]; + imageView.image = face; + imageView.contentMode = UIViewContentModeScaleAspectFit; + imageView.bounds = CGRectMake(0, 0, 30, 30); + NSMutableAttributedString * attrString = [NSMutableAttributedString yy_attachmentStringWithContent:imageView contentMode:UIViewContentModeScaleAspectFit attachmentSize:CGSizeMake(imageView.frame.size.width, imageView.frame.size.height) alignToFont:[UIFont systemFontOfSize:15.0] alignment:YYTextVerticalAlignmentCenter]; + [attribute appendAttributedString:[self createSapceAttribute:1]]; + [attribute appendAttributedString:attrString]; + } + } + } + } + messageInfo.content = attribute; + return messageInfo; +} + +#pragma mark - 收藏房间 +- (XPMessageInfoModel*)createCollectRoomAttribute:(AttachmentModel *)attachment messageInfo:(XPMessageInfoModel *)messageInfo{ + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + NSDictionary *data = attachment.data[@"data"]; + NSString *nick = [NSString stringWithFormat:@"%@",data[@"nick"]]; + [attribute appendAttributedString:[self createTextAttribute:nick color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]]; + NSString *tipString = @""; + if (attachment.second == Custom_Message_Sub_Collect_Room_Tips) { + tipString = YMLocalizedString(@"XPRoomMessageParser44"); + } + [attribute appendAttributedString:[self createTextAttribute:tipString color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + messageInfo.content = attribute; + return messageInfo; +} + +#pragma mark - 房间信息更新 +- (XPMessageInfoModel*)createRoomInfoUpdateAttribute:(AttachmentModel *)attachment messageInfo:(XPMessageInfoModel *)messageInfo{ + if (attachment.second == Custom_Message_Sub_Update_RoomInfo_MessageState) { + NSDictionary * dic= attachment.data[@"roomInfo"]; + if (dic.allKeys.count <=0) { + dic = attachment.data; + } + RoomInfoModel * roomInfo = [RoomInfoModel modelWithDictionary:dic]; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + [attribute appendAttributedString:[self createTextAttribute:@"消息:" color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]]; + if (roomInfo.isCloseScreen) { + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser46") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + } else { + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser47") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + } + messageInfo.content = attribute; + } else if(attachment.second == Custom_Message_Sub_Update_RoomInfo_AnimateEffect) { + NSDictionary * dic = attachment.data[@"roomInfo"]; + if (dic.allKeys.count <=0) { + dic = attachment.data; + } + RoomInfoModel * roomInfo = [RoomInfoModel modelWithDictionary:dic]; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + [attribute appendAttributedString:[self createTextAttribute:@"消息:" color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]]; + if (roomInfo.hasAnimationEffect) { + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser49") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + } else { + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser50") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createImageAttribute:[UIImage imageNamed:@"room_menu_more"]]]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser51") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + } + messageInfo.content = attribute; + } else if (attachment.second == Custom_Message_Sub_Update_RoomInfo_CleanScreen) { + NSNumber *roleType = attachment.data[@"roleType"]; + NSString *nick = attachment.data[@"nick"]; + NSInteger uid = 0; + if ([attachment.data[@"uid"] isKindOfClass:[NSNumber class]]) { + uid = ((NSNumber *)attachment.data[@"uid"]).integerValue; + } else if ([attachment.data[@"uid"] isKindOfClass:[NSString class]]) { + uid = ((NSString *)attachment.data[@"uid"]).integerValue; + } + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + [attribute appendAttributedString:[self createTextAttribute:@"消息:" color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]]; + if (roleType.integerValue == 1) { + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser53") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:nick color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]]; + } else if (roleType.integerValue == 2) { + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser54") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:nick color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]]; + } + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser55") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [self attributeAddHihtLight:attribute uid:uid]; + messageInfo.content = attribute; + } + return messageInfo; +} + +#pragma mark - 相亲 +- (XPMessageInfoModel *)createRoomDatingAttribute:(AttachmentModel *)attachment messageInfo:(XPMessageInfoModel *)messageInfo{ + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + if(attachment.second == Custom_Message_Sub_Room_Play_Dating_Pick_Heart) { + DatingInfoModel * datingModel = [DatingInfoModel modelWithDictionary:attachment.data]; + NSString * targetGender = datingModel.targetGender == GenderType_Male ? @"男" : YMLocalizedString(@"XPRoomMessageParser57"); + NSString * pickString = [NSString stringWithFormat:@"%d号%@嘉宾:", (datingModel.targetPosition + 1), targetGender]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser59") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:pickString color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + NSString * targetNick = datingModel.targetNickname ? datingModel.targetNickname : @""; + [attribute appendAttributedString:[self createNickAtrribute:targetNick uid:datingModel.targetUid]]; + NSString * heartContent = YMLocalizedString(@"XPRoomMessageParser60"); + [attribute appendAttributedString:[self createTextAttribute:heartContent color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + } else if(attachment.second == Custom_Message_Sub_Room_Play_Dating_Result_Mutual) {///互选 + DatingInfoModel * datingModel = [DatingInfoModel modelWithDictionary:attachment.data]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser61") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + NSString * nick = datingModel.nickname ? datingModel.nickname : @""; + [attribute appendAttributedString:[self createNickAtrribute:nick uid:datingModel.uid]]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser62") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + NSString * targetNick = datingModel.targetNickname ? datingModel.targetNickname : @""; + [attribute appendAttributedString:[self createNickAtrribute:targetNick uid:datingModel.targetUid]]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser63") color:UIColorFromRGB(0xF84C95) font:kRoomMessageDefalutFont]]; + } else if (attachment.second == Custom_Message_Sub_Room_Play_Dating_Result_Not_Mutual) {///不是互选 + DatingInfoModel * datingModel = [DatingInfoModel modelWithDictionary:attachment.data]; + NSString * nick = datingModel.nickname ? datingModel.nickname : @""; + [attribute appendAttributedString:[self createNickAtrribute:nick uid:datingModel.uid]]; + if (datingModel.hasSelectUser) {//选择的有人 + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser64") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + NSString * targetNick = datingModel.targetNickname ? datingModel.targetNickname : @""; + [attribute appendAttributedString:[self createNickAtrribute:targetNick uid:datingModel.targetUid]]; + } else {///没有选择人 + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser65") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + } + } + messageInfo.content = attribute; + return messageInfo; +} + +#pragma mark - 排麦 +- (XPMessageInfoModel *)createArrangeMicAttribute:(AttachmentModel *)attachment messageInfo:(XPMessageInfoModel *)messageInfo{ + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser66") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + if (attachment.second == Custom_Message_Sub_Arrange_Mic_Mode_Open) { + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser67") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser68") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + } else if (attachment.second == Custom_Message_Sub_Arrange_Mic_Mode_Close) { + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser69") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser70") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + } else if (attachment.second == Custom_Message_Sub_Arrange_Mic_Free_Mic_Open) { + NSDictionary * dic = attachment.data; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser71") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:YMLocalizedString(@"XPRoomMessageParser72"), ((NSNumber *)dic[@"micPos"]).intValue + 1 ] color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser73") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + } else if (attachment.second == Custom_Message_Sub_Arrange_Mic_Free_Mic_Close) { + NSDictionary * dic = attachment.data; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser74") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:YMLocalizedString(@"XPRoomMessageParser75"), ((NSNumber *)dic[@"micPos"]).intValue + 1 ] color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser76") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + } + messageInfo.content = attribute; + return messageInfo; +} + +#pragma mark - 糖果树公屏消息 +- (XPMessageInfoModel *)createCandyTreeHighLevelAttribute:(AttachmentModel *)attachment messageInfo:(XPMessageInfoModel *)messageInfo{ + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + //action + [attribute appendAttributedString:[self createTextAttribute:@"厉害了 " color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + CandyTreeGiftInfoModel * giftInfo = [CandyTreeGiftInfoModel modelWithDictionary:attachment.data]; + [attribute appendAttributedString:[self createTextAttribute:giftInfo.nick color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser78") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:giftInfo.prizeName color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + if (giftInfo.prizeNum > 1) { + [attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:@" X %d", giftInfo.prizeNum] color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + } + + if (attachment.second == Custom_Message_Sub_Candy_Tree_Me && giftInfo.uid.integerValue == [AccountInfoStorage instance].getUid.integerValue) { + [attribute appendAttributedString:[self createTextAttribute:@"(仅自己可见)" color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + } + + [self attributeAddHihtLight:attribute uid:giftInfo.uid.integerValue]; + messageInfo.content = attribute; + return messageInfo; +} + +#pragma mark - 贵族 +- (XPMessageInfoModel *)createNobleLevelAttribute:(AttachmentModel *)attachment messageInfo:(XPMessageInfoModel *)messageInfo{ + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + NSInteger uid = 0; + if ([attachment.data[@"uid"] isKindOfClass:[NSNumber class]]) { + uid = ((NSNumber *)attachment.data[@"uid"]).integerValue; + } else if ([attachment.data[@"uid"] isKindOfClass:[NSString class]]) { + uid = ((NSString *)attachment.data[@"uid"]).integerValue; + } + if (attachment.second == Custom_Message_Sub_Room_Open_Noble_VIP) {/// 开通贵族房内消息 851 + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser80") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:@"%@(%@)", attachment.data[@"nick"], attachment.data[@"erbanNo"]] color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser81") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:attachment.data[@"currVipName"] color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:@"贵族身份!" color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + } else if (attachment.second == Custom_Message_Sub_Room_Noble_LevelUp || attachment.second == Custom_Message_Sub_AllRoom_Noble_LevelUp_Suspend) {///贵族升级 + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser83") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:attachment.data[@"nick"] color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser84") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:attachment.data[@"currVipName"] color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:@"!" color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + } + [self attributeAddHihtLight:attribute uid:uid]; + messageInfo.content = attribute; + return messageInfo; +} + +#pragma mark - 塔罗 +- (XPMessageInfoModel *)createTarotAttribute:(AttachmentModel *)attachment messageInfo:(XPMessageInfoModel *)messageInfo{ + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + if (attachment.second == Custom_Message_Sub_Tarot) { + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser85") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:attachment.data[@"nick"] color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]]; + NSString *text = [NSString stringWithFormat:@" %@", attachment.data[@"drawMsgText"]]; + [attribute appendAttributedString:[self createTextAttribute:text color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + if ([attachment.data[@"drawGoldNum"] intValue] > 1) { + [attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:@"%d",[attachment.data[@"drawGoldNum"] intValue]] color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + } + [attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:@"%@ ", attachment.data[@"chargeProdName"]] color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + } + messageInfo.content = attribute; + return messageInfo; +} + +#pragma mark - 个播粉丝团 +- (XPMessageInfoModel *)createAnchorFansTeamAttribute:(AttachmentModel *)attachment messageInfo:(XPMessageInfoModel *)messageInfo{ + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + NSInteger uid = 0; + if ([attachment.data[@"uid"] isKindOfClass:[NSNumber class]]) { + uid = ((NSNumber *)attachment.data[@"uid"]).integerValue; + } else if ([attachment.data[@"uid"] isKindOfClass:[NSString class]]) { + uid = ((NSString *)attachment.data[@"uid"]).integerValue; + } + NSString *idString = [NSString stringWithFormat:@"%ld", uid]; + NSString *nickName = attachment.data[@"nickname"]; + if ([idString isEqualToString:[[AccountInfoStorage instance] getUid]]) { + nickName = YMLocalizedString(@"XPRoomMessageParser86"); + } + if (attachment.second == Custom_Message_Sub_FansTeam_Open_Success) {/// 开通粉丝团成功 + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser87") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:nickName color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser88") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + } else if (attachment.second == Custom_Message_Sub_FansTeam_Join_Success) {///加入粉丝团 + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser89") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:nickName color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser90") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + } else if (attachment.second == Custom_Message_Sub_FansTeam_Out_Success) {//退出粉丝团 + [attribute appendAttributedString:[self createTextAttribute:nickName color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser91") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + } + [self attributeAddHihtLight:attribute uid:uid]; + messageInfo.content = attribute; + return messageInfo; +} + +#pragma mark - 踢出房间/拉黑/下麦 +- (XPMessageInfoModel *)createKickUserAttribute:(AttachmentModel *)attachment info:(XPKickUserModel *)info messageInfo:(XPMessageInfoModel *)messageInfo{ + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + [attribute appendAttributedString:[self createNickAtrribute:info.targetNick uid:info.targetUid]]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser92") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createNickAtrribute:info.handleNick uid:info.handleUid]]; + NSString * content= @""; + if (attachment.second == Custom_Message_Sub_Kick_BeKicked || attachment.second == Custom_Message_Sub_Hall_Super_Admin_Kick_Manager_Out_Room) { + content = YMLocalizedString(@"XPRoomMessageParser93"); + } else if(attachment.second == Custom_Message_Sub_Kick_BlackList) { + content = YMLocalizedString(@"XPRoomMessageParser94"); + } else if(attachment.second == Custom_Message_Sub_Queue_Kick) { + content = YMLocalizedString(@"XPRoomMessageParser95"); + } + [attribute appendAttributedString:[self createTextAttribute:content color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + messageInfo.content = attribute; + return messageInfo; +} + + +#pragma mark - 分享房间 +- (XPMessageInfoModel *)createShareOrAttentionRoomAttribute:(AttachmentModel *)attachment sendInfo:(XPMessageRemoteExtModel *)sendInfo uid:(NSString *)uid messageInfo:(XPMessageInfoModel *)messageInfo{ + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + NSDictionary *data = attachment.data[@"data"]; + NSString *nick = [NSString stringWithFormat:@"%@",data[@"nick"]]; + [attribute appendAttributedString:[self createTextAttribute:nick color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]]; + NSString *tipString = @""; + if (attachment.second == Custom_Message_Sub_Room_Tip_ShareRoom) { + tipString = YMLocalizedString(@"XPRoomMessageParser96"); + }else if (attachment.second == Custom_Message_Sub_Room_Tip_Attention_Owner) { + tipString = YMLocalizedString(@"XPRoomMessageParser97"); + } + [attribute appendAttributedString:[self createTextAttribute:tipString color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [self attributeAddHihtLight:attribute uid:uid.integerValue]; + messageInfo.content = attribute; + return messageInfo; +} + +#pragma mark - 送礼物的公屏 +- (XPMessageInfoModel *)createBatchMicroSendGiftAttribute:(AttachmentModel *)attachment sendInfo:(XPMessageRemoteExtModel *)sendInfo messageInfo:(XPMessageInfoModel *)messageInfo{ + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + GiftReceiveInfoModel *info = [GiftReceiveInfoModel modelWithJSON:attachment.data]; + GiftInfoModel *giftInfo = info.gift == nil ? info.giftInfo : info.gift; + if (giftInfo == nil) { + giftInfo = [[XPGiftStorage shareStorage] findGiftInfo:info.giftId]; + } + ///官方新用户 + [attribute appendAttributedString:[self createOfficalAndNewuserAttribute:sendInfo.defUser newUser:sendInfo.newUser fromSayHelloChannel:sendInfo.fromSayHelloChannel]]; + //nick + [attribute appendAttributedString:[self createNickAtrribute:info.nick uid:info.uid.integerValue]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + if (attachment.second == Custom_Message_Sub_AllBatchSend || attachment.second == Custom_Message_Sub_AllMicroSend) {///普通礼物 + if (attachment.second == Custom_Message_Sub_AllBatchSend) { + //打赏 + [attribute appendAttributedString:[self createTextAttribute:@" 打赏 " color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + for (int i = 0; i < info.targetUsers.count; i++) { + GiftReceiveUserInfoModel *targetInfo = [info.targetUsers safeObjectAtIndex1:i]; + //nick + [attribute appendAttributedString:[self createNickAtrribute:targetInfo.nick uid:targetInfo.uid]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + if (i < (info.targetUsers.count -1)) { + //nick + [attribute appendAttributedString:[self createTextAttribute:@"," color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + } + } + } else { + //打赏 + [attribute appendAttributedString:[self createTextAttribute:@" 全麦打赏 " color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + } + + //img + if (giftInfo.giftUrl) { + [attribute appendAttributedString:[self createUrlImageAttribute:giftInfo.giftUrl]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + } + + //x N + [attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:@" X%ld",info.giftNum] color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + } else if(attachment.second == Custom_Message_Sub_AllMicroLuckySend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend) {///福袋礼物 + //action + NSString * sendTitle = @" 送出 "; + if (attachment.second == Custom_Message_Sub_AllMicroLuckySend) { + sendTitle = @" 全麦送出 "; + } + //打赏 + [attribute appendAttributedString:[self createTextAttribute:sendTitle color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + + // 福袋名称 + [attribute appendAttributedString:[self createTextAttribute:info.giftName color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + + // 福袋名称 + [attribute appendAttributedString:[self createTextAttribute:@" 给 " color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + if (info.luckyGiftList) { + //target + [attribute appendAttributedString:[self createNickAtrribute:info.luckyGiftList.user.nick uid:info.luckyGiftList.user.uid]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + + // 福袋名称 + [attribute appendAttributedString:[self createTextAttribute:@" 爆出了 " color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + + [info.luckyGiftList.giftList enumerateObjectsUsingBlock:^(GiftListsInfo * _Nonnull giftListInfo, NSUInteger idx, BOOL * _Nonnull stop) { + GiftInfoModel *luckGiftInfo = [[XPGiftStorage shareStorage] findGiftInfo:[NSString stringWithFormat:@"%ld", giftListInfo.giftId]]; + // 价值 + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser104") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + // 礼物价格 + [attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:@"%ld",(NSInteger)luckGiftInfo.goldPrice] color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + // 的礼物 + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser105") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + //img + [attribute appendAttributedString:[self createUrlImageAttribute:luckGiftInfo.giftUrl]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + + //x N + [attribute appendAttributedString:[self createTextAttribute: [NSString stringWithFormat:@" X%ld",giftListInfo.giftNum] color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + if (info.luckyGiftList.giftList.count-1 != idx) { + //, + [attribute appendAttributedString:[self createTextAttribute:@"," color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + } + }]; + } + } + messageInfo.content = attribute; + return messageInfo; +} + +- (XPMessageInfoModel *)createSendGiftAttribute:(AttachmentModel *)attachment sendInfo:(XPMessageRemoteExtModel *)sendInfo messageInfo:(XPMessageInfoModel *)messageInfo{ + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + GiftReceiveInfoModel *info = [GiftReceiveInfoModel modelWithJSON:attachment.data]; + GiftInfoModel *giftInfo = info.gift == nil ? info.giftInfo : info.gift; + if (giftInfo == nil) { + giftInfo = [[XPGiftStorage shareStorage] findGiftInfo:info.giftId]; + } + ///官方新用户 + [attribute appendAttributedString:[self createOfficalAndNewuserAttribute:sendInfo.defUser newUser:sendInfo.newUser fromSayHelloChannel:sendInfo.fromSayHelloChannel]]; + //nick + [attribute appendAttributedString:[self createNickAtrribute:info.nick uid:info.uid.integerValue]]; + [attribute appendAttributedString:[self createSapceAttribute:2]];; + if (attachment.second == Custom_Message_Sub_Gift_LuckySend) { + //action + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser106") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + // 福袋名称 + [attribute appendAttributedString:[self createTextAttribute:info.giftName color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser107") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + //target + [attribute appendAttributedString:[self createNickAtrribute:info.luckyGiftList.user.nick uid:info.luckyGiftList.user.uid]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + //lucky + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser108") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [info.luckyGiftList.giftList enumerateObjectsUsingBlock:^(GiftListsInfo * _Nonnull giftListInfo, NSUInteger idx, BOOL * _Nonnull stop) { + GiftInfoModel *luckyGiftInfo = [[XPGiftStorage shareStorage] findGiftInfo:[NSString stringWithFormat:@"%ld", giftListInfo.giftId]]; + // 价值 + [attribute appendAttributedString: [self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser109") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + // 礼物价格 + [attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:@"%ld",(NSInteger)luckyGiftInfo.goldPrice] color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + // 的礼物 + [attribute appendAttributedString: [self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser110") color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + //img + [attribute appendAttributedString:[self createUrlImageAttribute:luckyGiftInfo.giftUrl]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + //x N + [attribute appendAttributedString:[self createTextAttribute: [NSString stringWithFormat:@" X%ld",giftListInfo.giftNum] color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + if (info.luckyGiftList.giftList.count-1 != idx) { + //, + [attribute appendAttributedString: [self createTextAttribute:@"," color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + } + }]; + } else { + //打赏 + [attribute appendAttributedString:[self createTextAttribute:@" 打赏 " color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + //target + [attribute appendAttributedString: [self createNickAtrribute:info.targetNick uid:info.targetUid.integerValue]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + //img + [attribute appendAttributedString:[self createUrlImageAttribute:giftInfo.giftUrl]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + //x N + [attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:@" X%ld",info.giftNum] color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; + } + messageInfo.content = attribute; + return messageInfo; +} + +#pragma mark - Commond Mehotd +///用户是否当前房间的超管 +- (BOOL)isCurrentRoomSuperAdmin:(NSString *)uid { + for (GuildSuperAdminInfoModel *info in self.hostDelegate.getRoomSuperAdminList) { + if ([info.uid isEqualToString:uid]) { + return YES; + } + } + return NO; +} + +- (NSAttributedString *)createOfficalAndNewuserAttribute:(UserLevelType)levelType newUser:(BOOL)newUser fromSayHelloChannel:(BOOL)fromSayHelloChannel{ + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + //offical + if (levelType == UserLevelType_Offical) { + [attribute appendAttributedString: [self createLocalImageAttribute:@"common_offical"]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + } + if (newUser) { + if (fromSayHelloChannel) { + [attribute appendAttributedString:[self createLocalImageAttribute:@"room_new_user_greet_new"]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + } else { + [attribute appendAttributedString: [self createLocalImageAttribute:@"common_new_user"]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + } + } + return attribute; +} + +///名字点击的 +- (NSMutableAttributedString *)createNickAtrribute:(NSString *)nick uid:(NSInteger)uid { + NSMutableAttributedString * attribute = [self createTextAttribute:nick color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]; + [self attributeAddHihtLight:attribute uid:uid]; + return attribute; +} + +- (void)attributeAddHihtLight:(NSMutableAttributedString *)attribute uid:(NSInteger)uid { + @kWeakify(self); + [attribute yy_setTextHighlightRange:NSMakeRange(0, attribute.length) color:nil backgroundColor:nil tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { + @kStrongify(self); + if (uid <= 0) {return;} + [self showUserCard:uid]; + }]; +} + +- (void)attributeAddLongPressHihtLight:(NSMutableAttributedString *)attribute uid:(NSString *)uid nick:(NSString *)nick { + @kWeakify(self); + [attribute yy_setTextHighlightRange:NSMakeRange(0, attribute.length) color:nil backgroundColor:nil userInfo:nil tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { + @kStrongify(self); + if (uid <= 0) {return;} + [self showUserCard:uid.integerValue]; + } longPressAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { + @kStrongify(self); + if ([uid isEqualToString:[AccountInfoStorage instance].getUid] || uid.length < 1) { + return; + } + UIViewController *vc = self.hostDelegate.getCurrentNav.viewControllers[0]; + [XPRoomSendTextView showTextView:vc.view delegate:self.hostDelegate atUid:uid atNick:nick]; + }]; +} + + +- (void)showUserCard:(NSInteger)uid { + if (![ClientConfig shareConfig].canOpen) { + return; + } + RoomInfoModel * roomInfo = self.hostDelegate.getRoomInfo; + NSString * targetUid = [NSString stringWithFormat:@"%ld", uid]; + XPUserCardInfoModel * model = [[XPUserCardInfoModel alloc] init]; + [[self.hostDelegate.getMicroQueue allValues] enumerateObjectsUsingBlock:^(MicroQueueModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (uid == obj.userInfo.uid) { + model.position = [NSString stringWithFormat:@"%d", obj.microState.position]; + model.posState = obj.microState.posState; + model.micState = obj.microState.micState; + *stop = YES; + } + }]; + model.nick = self.hostDelegate.getUserInfo.nick; + model.uid = targetUid; + model.micQueue = self.hostDelegate.getMicroQueue; + model.roomInfo = roomInfo; + model.delegate = self.hostDelegate; + model.superMangerList = self.hostDelegate.getRoomSuperAdminList; + XPUserCardViewController * userCardVC = [[XPUserCardViewController alloc] initWithUser:model]; + [self.hostDelegate.getCurrentNav presentViewController:userCardVC animated:YES completion:nil]; +} + +#pragma mark - private base methods +///铭牌 +- (NSMutableAttributedString *)createNameplateAttibute:(NSString *)tagName image:(NSString *)imageName textFont:(UIFont *)textFont { + NetImageConfig *config = [[NetImageConfig alloc]init]; + ///先这样吧 + config.autoLoad = YES; + NetImageView *imageView = [[NetImageView alloc]initWithUrl:imageName config:config]; + UIImage* image = imageView.image; + if (image) { + CGFloat scale = image.size.width / image.size.height; + imageView.bounds = CGRectMake(0, 0, 20 * scale, 20); + } else { + NSURL *imgUrl = [NSURL URLWithString:imageName]; + UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; + if (myImage) { + CGFloat scale = myImage.size.width / myImage.size.height; + if (scale == 0) { + imageView.bounds = CGRectMake(0, 0, 60, 20); + }else { + imageView.bounds = CGRectMake(0, 0, 20* scale, 20); + } + } else { + imageView.bounds = CGRectMake(0, 0, 60, 20); + } + } + imageView.contentMode = UIViewContentModeScaleAspectFit; + // 铭牌文字 + UILabel *label = [[UILabel alloc] init]; + label.textAlignment = NSTextAlignmentCenter; + label.font = [UIFont boldSystemFontOfSize:12]; + label.adjustsFontSizeToFitWidth = YES; + label.textColor = UIColor.whiteColor; + label.text = tagName; + [imageView addSubview:label]; + [label mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(27); + make.right.mas_equalTo(-8); + make.centerY.mas_equalTo(0); + }]; + NSMutableAttributedString *string = [NSMutableAttributedString yy_attachmentStringWithContent:imageView contentMode:UIViewContentModeScaleAspectFit attachmentSize:imageView.bounds.size alignToFont:[UIFont boldSystemFontOfSize:12] alignment:YYTextVerticalAlignmentCenter]; + return string; +} + + +/// 生成一个图片的富文本 +/// @param imageUrl 网络图片的地址 +- (NSMutableAttributedString *)createUrlImageAttribute:(NSString *)imageUrl { + NetImageConfig *config = [[NetImageConfig alloc]init]; + ///先这样吧 + config.autoLoad = YES; + NetImageView *imageView = [[NetImageView alloc]initWithUrl:imageUrl config:config]; + UIImage* image = imageView.image; + if (image) { + CGFloat scale = image.size.width / image.size.height; + imageView.bounds = CGRectMake(0, 0, 20 * scale, 20); + } else { + imageView.bounds = CGRectMake(0, 0, 20, 20); + } + imageView.layer.masksToBounds = YES; + imageView.contentMode = UIViewContentModeScaleAspectFit; + NSMutableAttributedString * attrString = [NSMutableAttributedString yy_attachmentStringWithContent:imageView contentMode:UIViewContentModeScaleAspectFit attachmentSize:CGSizeMake(imageView.bounds.size.width, imageView.bounds.size.height) alignToFont:[UIFont systemFontOfSize:15.0] alignment:YYTextVerticalAlignmentCenter]; + return attrString; +} + + +/// 生成本地一个图片的富文本 +/// @param imageName 网络图片的地址 +- (NSMutableAttributedString *)createLocalImageAttribute:(NSString *)imageName { + if (imageName == nil && imageName.length <= 0) { + return nil; + } + return [self createImageAttribute:[UIImage imageNamed:imageName]]; +} + +/// 生成本地一个图片的富文本 +/// @param image 本地的图片 +- (NSMutableAttributedString *)createImageAttribute:(UIImage *)image { + UIImageView *imaveView = [[UIImageView alloc]init]; + imaveView.image = image; + CGFloat scale = (CGFloat)imaveView.image.size.width / (CGFloat)imaveView.image.size.height; + imaveView.bounds = CGRectMake(0, 0, 20 * scale, 20); + NSMutableAttributedString * attrString = [NSMutableAttributedString yy_attachmentStringWithContent:imaveView contentMode:UIViewContentModeScaleAspectFit attachmentSize:CGSizeMake(imaveView.frame.size.width, imaveView.frame.size.height) alignToFont:[UIFont systemFontOfSize:15.0] alignment:YYTextVerticalAlignmentCenter]; + return attrString; +} + +/// 生成一个富文本 +/// @param text 富文本的文字 +/// @param color 文字的颜色 +/// @param font 文字的大小 +- (NSMutableAttributedString *)createTextAttribute:(NSString *)text color:(UIColor *)color font:(CGFloat)font { + if (text == nil || text.length <= 0) { + text = @""; + } + NSMutableAttributedString *attribute = [[NSMutableAttributedString alloc] initWithString:text attributes:nil]; + attribute.yy_font = [UIFont systemFontOfSize:font]; + attribute.yy_color = color; + attribute.yy_paragraphStyle = [self paragraphStyle]; + return attribute; +} + +/// 设置文本的样式 间隙 缩进 ... +- (NSMutableParagraphStyle *)paragraphStyle { + NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init]; + paraStyle.lineSpacing = 4.0f;//行间距 + // 强制排版(从左到右) + paraStyle.alignment = NSTextAlignmentLeft; + paraStyle.baseWritingDirection = NSWritingDirectionLeftToRight; + return paraStyle; +} + +/// 占位的富文本 +/// @param width 需要的间隙 +- (NSMutableAttributedString *)createSapceAttribute:(CGFloat)width { + UIView *spaceView = [[UIView alloc]init]; + spaceView.backgroundColor = [UIColor clearColor]; + spaceView.bounds = CGRectMake(0, 0, width, 10); + NSMutableAttributedString * attribute = [NSMutableAttributedString yy_attachmentStringWithContent:spaceView contentMode:UIViewContentModeScaleAspectFit attachmentSize:CGSizeMake(spaceView.frame.size.width, spaceView.frame.size.height) alignToFont:[UIFont systemFontOfSize:15.0] alignment:YYTextVerticalAlignmentCenter]; + return attribute; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/YUMIChamberCommunicationAnatomiser.h b/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/YUMIChamberCommunicationAnatomiser.h deleted file mode 100644 index 430ea35e..00000000 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/YUMIChamberCommunicationAnatomiser.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMRoomMessageParser.h -// YUMI -// -// Created by YUMI on 2021/10/26. -// - -#import -#import "ChamberHostRepresendtation.h" -NS_ASSUME_NONNULL_BEGIN - -@class NIMMessage, YUMICommunicationAbstractMatrix; - -@interface YUMIChamberCommunicationAnatomiser : NSObject - -- (YUMICommunicationAbstractMatrix*)analyzeCommunictowardsionIdiosyncracy:(NIMMessage *)message; -- (NSString *)analyzeCommunictowardsionIntumesce:(NIMMessage *)message; - -@property (nonatomic,weak) id hostRepresedtation; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/YUMIChamberCommunicationAnatomiser.m b/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/YUMIChamberCommunicationAnatomiser.m deleted file mode 100644 index 103ca6a6..00000000 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/YUMIChamberCommunicationAnatomiser.m +++ /dev/null @@ -1,1153 +0,0 @@ -// -// YMRoomMessageParser.m -// YUMI -// -// Created by YUMI on 2021/10/26. -// - -#import "YUMIChamberCommunicationAnatomiser.h" -#import -#import -#import -#import "ThemeColor+Room.h" -#import "XPRoomMessageConstant.h" -#import "AccountAbstractStorage.h" -#import "YUMIMacroUitls.h" -#import "YUMIPresentStorage.h" -#import "YUMIChamberAcceptTool.h" -#import "MKJPopup.h" -#import "Api+WishGift.h" -#import "NSArray+Safe.h" -#import "ClientDisposition.h" -#import "YUMICommunicationRemoteExtMatrix.h" -#import "AttachmentMatrix.h" -#import "PresentAchieveAbstractMatrix.h" -#import "XCombatickConsumerMatrix.h" -#import "MiecreoscoopeMHTueueMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "MiecreoscoopeStateMatrix.h" -#import "ChamberAbstractMatrix.h" -#import "EngagementAbstractMatrix.h" -#import "ChamberAcceptAbstractMatrix.h" -#import "ChamberAcceptDischargeAbstractMatrix.h" -#import "UnionSensationalManagementAbstractMatrix.h" -#import "ChamberCombatChooseConsumerMatrix.h" -#import "ChamberCombatAbstractMatrix.h" -#import "ConfectioneryTimberConsequentMatrix.h" -#import "YUMIPresentBigCaptureMatrix.h" -#import "YUMIPresentCompoundMatrix.h" -#import "ChamberMarchingCaptureMatrix.h" -#import "YUMIUnfoildDeficitSheatheMatrix.h" -#import "YUMICommunicationAbstractMatrix.h" -#import "YUMIChamberSatelliteKitchenMatrix.h" -#import "NetIndicateRegard.h" - -#import "YUMIConsumerSolitaireRegardGovernancer.h" -#import "YUMIChamberMotifPrecautiousRegard.h" -#import "YUMIChamberDischargeEssayRegard.h" -#import "YUMIChamberCombatConsequentRegard.h" - -@implementation YUMIChamberCommunicationAnatomiser - -- (YUMICommunicationAbstractMatrix*)analyzeCommunictowardsionIdiosyncracy:(NIMMessage *)message { - NIMMessageType messageType = message.messageType; - YUMICommunicationAbstractMatrix * communicationAbstract = [[YUMICommunicationAbstractMatrix alloc] init]; - switch (messageType) { - case NIMMessageTypeText: - return [self manufactureChinwagIdiosyncracy:message communicationAbstract:communicationAbstract]; - - case NIMMessageTypeTip: - return [self manufacturePromptsIdiosyncracy:message communicationAbstract:communicationAbstract]; - - case NIMMessageTypeNotification: - return [self manufactureCircularIdiosyncracy:message communicationAbstract:communicationAbstract]; - - case NIMMessageTypeCustom: - return [self manufactureIndividualityIdiosyncracy:message communicationAbstract:communicationAbstract]; - default: - return nil; - } -} - -- (NSString *)analyzeCommunictowardsionIntumesce:(NIMMessage *)message { - YUMICommunicationRemoteExtMatrix * model = [YUMICommunicationRemoteExtMatrix mtowardsrixAboutJSON:message.remoteExt[message.from]]; - return model.iosBubbleUrl ? model.iosBubbleUrl : @""; -} - -- (YUMICommunicationAbstractMatrix *)manufactureIndividualityIdiosyncracy:(NIMMessage *)message communicationAbstract:(YUMICommunicationAbstractMatrix*)communicationAbstract{ - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - AttachmentMatrix *attachment = (AttachmentMatrix *)obj.attachment; - YUMICommunicationRemoteExtMatrix * model = [YUMICommunicationRemoteExtMatrix mtowardsrixAboutJSON:message.remoteExt[message.from]]; - communicationAbstract.bubbleImageUrl = [self analyzeCommunictowardsionIntumesce:message]; - int first = attachment.first; - if (first == IndividualityCommunicationGenre_Gift) { - return [self produceDischargePresentIdiosyncracy:attachment sendInfo:model communicationAbstract:communicationAbstract]; - } else if(first == IndividualityCommunicationGenre_AllMicroSend) { - return [self produceBtowardschMiecreoscoopeDischargePresentIdiosyncracy:attachment sendInfo:model communicationAbstract:communicationAbstract]; - } else if(first == IndividualityCommunicationGenre_Room_Tip) { - return [self producePartowardsiciptowardsionOrConsidertowardsionChamberIdiosyncracy:attachment sendInfo:model uid:message.from communicationAbstract:communicationAbstract]; - } else if(first == IndividualityCommunicationGenre_Kick_User || first == IndividualityCommunicationGenre_Queue) { - XCombatickConsumerMatrix * kickModel = [XCombatickConsumerMatrix mtowardsrixAboutJSON:attachment.data]; - return [self produceAbandonConsumerIdiosyncracy:attachment info:kickModel communicationAbstract:communicationAbstract]; - } else if(first == IndividualityCommunicationGenre_Look_Love) { - return [self produceConfectioneryTimberHighPrototypeIdiosyncracy:attachment communicationAbstract:communicationAbstract]; - } else if(first == IndividualityCommunicationGenre_Arrange_Mic) { - return [self produceScheduleLoudspeakerIdiosyncracy:attachment communicationAbstract:communicationAbstract]; - }else if(first == IndividualityCommunicationGenre_Update_RoomInfo) { - return [self produceChamberAbstractRefurbishIdiosyncracy:attachment communicationAbstract:communicationAbstract]; - } else if(first == IndividualityCommunicationGenre_Collection_Room) { - return [self produceAssembleChamberIdiosyncracy:attachment communicationAbstract:communicationAbstract]; - } else if(first == IndividualityCommunicationGenre_RoomPlay_Dating) { - return [self produceChamberEngagementIdiosyncracy:attachment communicationAbstract:communicationAbstract]; - } else if (first == IndividualityCommunicationGenre_Noble_VIP) { - return [self produceMagnificentPrototypeIdiosyncracy:attachment communicationAbstract:communicationAbstract]; - } else if (first == IndividualityCommunicationGenre_Face) { - return [self produceChamberAcceptIdiosyncracy:attachment communicationAbstract:communicationAbstract]; - } else if (first == IndividualityCommunicationGenre_Tarot) { - return [self produceTarotIdiosyncracy:attachment communicationAbstract:communicationAbstract]; - } else if (first == IndividualityCommunicationGenre_Anchor_FansTeam) { - return [self produceKellegFantowardsicsSquadIdiosyncracy:attachment communicationAbstract:communicationAbstract]; - } else if(first == IndividualityCommunicationGenre_Hall_Super_Admin) { - XCombatickConsumerMatrix * kickModel = [XCombatickConsumerMatrix mtowardsrixAboutJSON:attachment.data]; - return [self produceAbandonConsumerIdiosyncracy:attachment info:kickModel communicationAbstract:communicationAbstract]; - } else if (first == IndividualityCommunicationGenre_Room_PK) { - return [self produceChamberCombatIdiosyncracy:attachment communicationAbstract:communicationAbstract]; - } else if (first == IndividualityCommunicationGenre_LuckyBag) { - return [self produceChamberInthecaseoftuntowardseConsiderableCaptureIdiosyncracy:attachment communicationAbstract:communicationAbstract]; - } else if(first == IndividualityCommunicationGenre_Gift_Compound) { - return [self produceChamberPresentSynthetiseIdiosyncracy:attachment communicationAbstract:communicationAbstract]; - } else if(first == IndividualityCommunicationGenre_Room_Sailing) { - return [self produceChamberMarchingIdiosyncracy:attachment communicationAbstract:communicationAbstract]; - } else if (first == IndividualityCommunicationGenre_RedPacket && attachment.second == Custom_Message_Sub_OpenRedPacketSuccess) { - return [self produceDeficitShetowardsheIdiosyncracy:attachment communicationAbstract:communicationAbstract]; - } else if (first == IndividualityCommunicationGenre_Graffiti_Star_Kitchen){ - return [self produceStowardselliteKitchenIdiosyncracy:attachment]; - } - return nil; -} - -- (YUMICommunicationAbstractMatrix*)manufactureChinwagIdiosyncracy:(NIMMessage *)message communicationAbstract:(YUMICommunicationAbstractMatrix *)communicationAbstract{ - NSString * uid = [AccountAbstractStorage instance].acquireCid; - YUMICommunicationRemoteExtMatrix * model = [YUMICommunicationRemoteExtMatrix mtowardsrixAboutJSON:message.remoteExt[message.from]]; - communicationAbstract.bubbleImageUrl = [self analyzeCommunictowardsionIntumesce:message]; - NSString * nick = [NSString stringWithFormat:@"%@:", ((NIMMessageChatroomExtension *)message.messageExt).roomNickname]; - if ([message.from isEqualToString:uid]) { - nick = @"我:"; - } - - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - - [attribute appendAttributedString:[self produceHLOfficalGrantedStrangeconsumerIdiosyncracy:model.defUser newUser:model.newUser fromSayHelloChannel:model.fromSayHelloChannel]]; - if ([self isUniversalChamberSenstowardsionalManagement:message.from]) { - [attribute appendAttributedString:[self produceProvincialIndictowardseIdiosyncracy:@"common_super_admin"]]; - } - - if (model.vipIcon) { - [attribute appendAttributedString:[self produceWeebsiteIndictowardseIdiosyncracy:model.vipIcon]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - } - if (model.experUrl) { - [attribute appendAttributedString:[self produceWeebsiteIndictowardseIdiosyncracy:model.experUrl]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - } - - if (model.inRoomNameplatePic.length > 0 && model.inRoomNameplateWord.length > 0) { - [attribute appendAttributedString:[self produceMtowardserialTowardstibute:model.inRoomNameplateWord image:model.inRoomNameplatePic textFont:[UIFont systemFontOfSize:9]]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - } else if (model.inRoomNameplatePic.length > 0) { - [attribute appendAttributedString:[self produceWeebsiteIndictowardseIdiosyncracy:model.inRoomNameplatePic]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - } - } - - [attribute appendAttributedString:[self produceEssayIdiosyncracy:nick color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - - id nickNameNifo = message.remoteExt[@"atNames"]; - NSMutableAttributedString *msgStr; - if (message.text) { - msgStr = [[NSMutableAttributedString alloc] initWithString:message.text]; - [msgStr addAttribute:NSForegroundColorAttributeName - value:[DJDKMIMOMColor communictowardsionEssayPrettify] - range:NSMakeRange(0, msgStr.length)]; - if ([nickNameNifo isKindOfClass:[NSArray class]]) { - for (NSString *nick in nickNameNifo) { - NSRange range = [message.text rangeOfString:nick]; - if (range.length) { - [msgStr yy_setTextHighlightRange:range color:UIColorFromRGB(0xFD85C9) backgroundColor:[UIColor clearColor] userInfo:nil]; - } - } - } - [attribute appendAttributedString:msgStr]; - } - [self towardstributeAccelertowardseLongPressHihtShining:attribute uid:message.from nick:((NIMMessageChatroomExtension *)message.messageExt).roomNickname]; - communicationAbstract.content = attribute; - return communicationAbstract; -} - -- (YUMICommunicationAbstractMatrix*)manufacturePromptsIdiosyncracy:(NIMMessage *)message communicationAbstract:(YUMICommunicationAbstractMatrix *)communicationAbstract{ - communicationAbstract.bubbleImageUrl = [self analyzeCommunictowardsionIntumesce:message]; - if ([message.localExt.allKeys containsObject:@"isRoomTopic"]) { - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - [attribute appendAttributedString: [self produceEssayIdiosyncracy:message.text color:[UIColor whiteColor] font:kChamberCommunicationDefalutLetterform]]; - if ([[message.localExt objectForKey:@"isRoomTopic"] boolValue] == YES) { - [attribute yy_setTextHighlightRange:NSMakeRange(0, attribute.length) color:nil backgroundColor:nil tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { - ChamberAbstractMatrix * roomInfo = self.hostRepresedtation.acquireChamberAbstract; - MKJPopupServing * config = [[MKJPopupServing alloc] init]; - YUMIChamberMotifPrecautiousRegard * alertView = [[YUMIChamberMotifPrecautiousRegard alloc] init]; - alertView.title = roomInfo.roomDesc; - alertView.message = roomInfo.introduction; - config.contentView = alertView; - [MKJPopup popupAboutDisposition:config]; - }]; - } - communicationAbstract.content = attribute; - } else { - NSAttributedString * attribute = [self produceEssayIdiosyncracy:message.text color:UIColorFromRGB(0xFE5D7F) font:kChamberCommunicationDefalutLetterform]; - communicationAbstract.content = attribute; - } - return communicationAbstract; -} - -- (YUMICommunicationAbstractMatrix*)manufactureCircularIdiosyncracy:(NIMMessage *)message communicationAbstract:(YUMICommunicationAbstractMatrix *)communicationAbstract{ - communicationAbstract.bubbleImageUrl = [self analyzeCommunictowardsionIntumesce:message]; - NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; - NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; - NIMChatroomNotificationMember *member = content.targets[0]; - NIMMessageChatroomExtension * messageExt = (NIMMessageChatroomExtension *)message.messageExt; - switch (content.eventType) { - case NIMChatroomEventTypeEnter: - { - NSString* nick = member.nick.length > 0 ? member.nick : @""; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - NSDictionary * dic = [(NSDictionary *)messageExt.roomExt.toJSONGroal objectForKey:message.from]; - YUMICommunicationRemoteExtMatrix * extModel = [YUMICommunicationRemoteExtMatrix mtowardsrixAboutImpactbasket:dic]; - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - - [attribute appendAttributedString:[self produceHLOfficalGrantedStrangeconsumerIdiosyncracy:extModel.defUser newUser:extModel.newUser fromSayHelloChannel:extModel.fromSayHelloChannel]]; - - if ([self isUniversalChamberSenstowardsionalManagement:message.from]) { - [attribute appendAttributedString:[self produceProvincialIndictowardseIdiosyncracy:@"common_super_admin"]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - } - - if (extModel.vipIcon.length > 0) { - [attribute appendAttributedString:[self produceWeebsiteIndictowardseIdiosyncracy:extModel.vipIcon]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - } - if (extModel.experUrl.length > 0) { - [attribute appendAttributedString:[self produceWeebsiteIndictowardseIdiosyncracy:extModel.experUrl]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - } - if (extModel.inRoomNameplatePic.length > 0 && extModel.inRoomNameplateWord.length > 0) { - [attribute appendAttributedString:[self produceMtowardserialTowardstibute:extModel.inRoomNameplateWord image:extModel.inRoomNameplatePic textFont:[UIFont systemFontOfSize:9]]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - } - [attribute appendAttributedString:[self produceMonicerTowardsrribute:nick uid:message.from.integerValue]]; - if (extModel.carName.length > 0) { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:@" 驾着 " color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:extModel.carName color:[DJDKMIMOMColor communictowardsionMonicerPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - } - - if (extModel.fromType > 0) { - if (extModel.fromType == ConsumerEnterChamberFromGenre_Home_Recommend) { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_2") color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } else if(extModel.fromType == ConsumerEnterChamberFromGenre_Follow_User || extModel.fromType == ConsumerEnterChamberFromGenre_New_User_Greet) { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_3") color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceMonicerTowardsrribute:extModel.fromNick uid:extModel.fromUid.integerValue]]; - } else if(extModel.fromType == ConsumerEnterChamberFromGenre_Follow_Game_Detail) { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_4") color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceMonicerTowardsrribute:extModel.fromNick uid:extModel.fromUid.integerValue]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_5") color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } - } - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_6") color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } else { - [attribute appendAttributedString:[self produceMonicerTowardsrribute:nick uid:message.from.integerValue]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_7") color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } - - communicationAbstract.content = attribute; - return communicationAbstract; - } - break; - case NIMChatroomEventTypeInfoUpdated:{ - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - if (self.hostRepresedtation.acquireChamberAbstract.datingState == ChamberDatingDeclareChangeGenre_Open) { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_8") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - communicationAbstract.content = attribute; - return communicationAbstract; - } - } - break; - default: - return nil; - } - return nil; -} - -#pragma mark -星级厨房 -- (NSAttributedString *)produceStowardselliteKitchenIdiosyncracy:(AttachmentMatrix *)attachment{ - YUMIChamberSatelliteKitchenMatrix *starMatrix = [YUMIChamberSatelliteKitchenMatrix mtowardsrixAboutImpactbasket:attachment.data]; - NSString *title = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Room_Message_Parser_103"),starMatrix.nick,starMatrix.itemMultiple,starMatrix.diamonds]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:kChamberCommunicationDefalutLetterform],NSForegroundColorAttributeName:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify]}]; - [attribute addAttributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor communictowardsionMonicerPrettify]} range:[title rangeOfString:starMatrix.nick]]; - [attribute addAttributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor communictowardsionEssayPrettify]} range:[title rangeOfString:[NSString stringWithFormat:@" %@",starMatrix.itemMultiple]]]; - [attribute addAttributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor communictowardsionEssayPrettify]} range:[title rangeOfString:[NSString stringWithFormat:@" %@",starMatrix.diamonds]]]; - @kWeakify(self) - [attribute yy_setTextHighlightRange:[title rangeOfString:starMatrix.nick] color:nil backgroundColor:nil tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { - @kStrongify(self); - if (starMatrix.uid.integerValue <= 0) {return;} - [self EvidenceConsumerSolitaire:starMatrix.uid.integerValue]; - }]; - - return attribute; -} - -#pragma mark - 红包 -- (YUMICommunicationAbstractMatrix *)produceDeficitShetowardsheIdiosyncracy:(AttachmentMatrix *)attachment communicationAbstract:(YUMICommunicationAbstractMatrix *)communicationAbstract{ - YUMIUnfoildDeficitSheatheMatrix *info = [YUMIUnfoildDeficitSheatheMatrix mtowardsrixAboutImpactbasket:attachment.data]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - [attribute appendAttributedString:[self produceMonicerTowardsrribute:info.openRedEnvelopeUserNick uid:info.openRedEnvelopeId.integerValue]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_9") color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceMonicerTowardsrribute:info.redEnvelopeMasterNick uid:info.redEnvelopeMasterId.integerValue]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_10") color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - if (info.amount.floatValue>0) { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:[NSString stringWithFormat:YMLocalizedString(@"YUMI_Room_Message_Parser_11"), info.amount] color:[DJDKMIMOMColor communictowardsionMonicerPrettify] font:kChamberCommunicationDefalutLetterform]]; - } - communicationAbstract.content = attribute; - return communicationAbstract; -} - -#pragma mark - 航海 -- (YUMICommunicationAbstractMatrix *)produceChamberMarchingIdiosyncracy:(AttachmentMatrix *)attachment communicationAbstract:(YUMICommunicationAbstractMatrix *)communicationAbstract{ - ChamberMarchingCaptureMatrix *info = [ChamberMarchingCaptureMatrix mtowardsrixAboutImpactbasket:attachment.data]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:@"厉害了! " color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:info.nick color:[DJDKMIMOMColor communictowardsionMonicerPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_13") color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:info.prizeName color:[DJDKMIMOMColor communictowardsionMonicerPrettify] font:kChamberCommunicationDefalutLetterform]]; - if (info.prizeNum>1) { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:[NSString stringWithFormat:@"x%d", info.prizeNum] color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } - [self towardstributeAccelertowardseHihtShining:attribute uid:info.uid.integerValue]; - communicationAbstract.content = attribute; - return communicationAbstract; -} - -#pragma mark - 礼物合成 -- (YUMICommunicationAbstractMatrix *)produceChamberPresentSynthetiseIdiosyncracy:(AttachmentMatrix *)attachment communicationAbstract:(YUMICommunicationAbstractMatrix *)communicationAbstract{ - YUMIPresentCompoundMatrix *info = [YUMIPresentCompoundMatrix mtowardsrixAboutImpactbasket:attachment.data]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_14") color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:info.nick color:[DJDKMIMOMColor communictowardsionMonicerPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:info.msg color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:info.giftName color:[DJDKMIMOMColor communictowardsionMonicerPrettify] font:kChamberCommunicationDefalutLetterform]]; - [self towardstributeAccelertowardseHihtShining:attribute uid:info.uid.integerValue]; - communicationAbstract.content = attribute; - return communicationAbstract; -} - -#pragma mark - 房间内幸运礼物 大价值 -- (YUMICommunicationAbstractMatrix *)produceChamberInthecaseoftuntowardseConsiderableCaptureIdiosyncracy:(AttachmentMatrix *)attachment communicationAbstract:(YUMICommunicationAbstractMatrix *)communicationAbstract{ - YUMIPresentBigCaptureMatrix * info= [YUMIPresentBigCaptureMatrix mtowardsrixAboutImpactbasket:attachment.data]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_15") color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:info.nick color:[DJDKMIMOMColor communictowardsionMonicerPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_16") color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:info.roomTitle color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:[NSString stringWithFormat:@"通过%@", info.luckyBagName] color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:[NSString stringWithFormat:@",开出%@", info.giftName] color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - communicationAbstract.content = attribute; - return communicationAbstract; -} - -#pragma mark - 房间内PK -- (YUMICommunicationAbstractMatrix *)produceChamberCombatIdiosyncracy:(AttachmentMatrix *)attachment communicationAbstract:(YUMICommunicationAbstractMatrix *)communicationAbstract{ - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - if (attachment.second == Custom_Message_Sub_Room_PK_Manager_Up_Mic) { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_19") color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - for (NSDictionary * selectuUser in [attachment.data allValues]) { - ChamberCombatChooseConsumerMatrix * userInfoModel = [ChamberCombatChooseConsumerMatrix mtowardsrixAboutImpactbasket:selectuUser]; - if (userInfoModel.groupType != GroupGenre_default && userInfoModel.nick.length > 0) { - [attribute appendAttributedString:[self produceMonicerTowardsrribute:userInfoModel.nick uid:userInfoModel.uid.integerValue]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_20") color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - NSString * groupTypeStr; - UIColor * groupColor; - if (userInfoModel.groupType == GroupGenre_Red) { - groupTypeStr= YMLocalizedString(@"YUMI_Room_Message_Parser_21"); - groupColor = UIColorFromRGB(0xFB3D74); - }else{ - groupTypeStr = YMLocalizedString(@"YUMI_Room_Message_Parser_22"); - groupColor = UIColorFromRGB(0x3291FC); - } - [attribute appendAttributedString:[self produceEssayIdiosyncracy:groupTypeStr color:groupColor font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:@"," color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } - } - [attribute deleteCharactersInRange:NSMakeRange(attribute.string.length - 1, 1)]; - } else { - ChamberCombatAbstractMatrix * model = [ChamberCombatAbstractMatrix mtowardsrixAboutImpactbasket:attachment.data]; - if (attachment.second == Custom_Message_Sub_Room_PK_Mode_Close) { - NSString * title = YMLocalizedString(@"YUMI_Room_Message_Parser_23"); - [attribute appendAttributedString:[self produceEssayIdiosyncracy:title color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - NSRange range = [title rangeOfString:YMLocalizedString(@"YUMI_Room_Message_Parser_24")]; - [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] range:range]; - } else if(attachment.second == Custom_Message_Sub_Room_PK_Result) { - NSString * victoryStr; - if (model.result == ChamberCombatResultGenre_Draw) { - ChamberCombatSquadMatrix * blueTeam; - ChamberCombatSquadMatrix * redTeam; - for (int i = 0 ; i < model.teams.count; i++) { - ChamberCombatSquadMatrix * team = [model.teams secureGroalTowardsIndictowardsrix1:i]; - if (team.team == GroupGenre_Red) { - redTeam = team; - }else{ - blueTeam = team; - } - } - ChamberCombatSquadMatrix * team = [model.teams firstObject]; - if (model.voteMode == ChamberCombatVoteModeGenre_NumberPerson) { - victoryStr = YMLocalizedString(@"YUMI_Room_Message_Parser_25"); - NSString * resultScale = [NSString stringWithFormat:@"%@:%@",[NSString stringWithFormat:@"%lld", team.score],[NSString stringWithFormat:@"%lld", team.score]]; - NSString * result = [NSString stringWithFormat:@"本场PK结果:%@!\nPK值:%@",victoryStr, resultScale]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:result color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - }else{ - if (team.protecScore > 0) { - NSString * resultScale = [NSString stringWithFormat:@"%@:%@",[NSString stringWithFormat:@"%lld", team.score],[NSString stringWithFormat:@"%lld", team.score]]; - victoryStr = YMLocalizedString(@"YUMI_Room_Message_Parser_27"); - NSString * result = [NSString stringWithFormat:@"本场PK结果:%@!\nPK值%@",victoryStr, resultScale]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:result color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - }else{ - victoryStr = YMLocalizedString(@"YUMI_Room_Message_Parser_29"); - NSString * result = [NSString stringWithFormat:@"本场PK结果:%@!\nPK值%@",victoryStr, @"0:0"]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:result color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } - } - if (team.protector > 0) { - [attribute appendAttributedString:[[NSMutableAttributedString alloc] initWithString:@"\n"]]; - NSString * teamStr = [NSString stringWithFormat:@"蓝队守护者:%@ \n 蓝队守护值: %@ \n 红队守护者: %@ \n 红队守护值: %@", blueTeam.protector.nick.length > 0 ? blueTeam.protector.nick : @"", [[NSNumber numberWithLongLong:blueTeam.protecScore] stringValue], redTeam.protector.nick.length > 0 ? redTeam.protector.nick : @"", [[NSNumber numberWithLongLong:redTeam.protecScore] stringValue]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:teamStr color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } - }else{ - ChamberCombatSquadMatrix * victoryTeam; - ChamberCombatSquadMatrix * failTeam; - for (int i = 0 ; i < model.teams.count; i++) { - ChamberCombatSquadMatrix * team = [model.teams secureGroalTowardsIndictowardsrix1:i]; - if (team.team == (GroupGenre)model.result) { - victoryTeam = team; - }else{ - failTeam = team; - } - } - if (model.result == ChamberCombatResultGenre_Red){ - victoryStr = YMLocalizedString(@"YUMI_Room_Message_Parser_32"); - }else if (model.result == ChamberCombatResultGenre_Blue){ - victoryStr = YMLocalizedString(@"YUMI_Room_Message_Parser_33"); - } - NSString * resultScale = [NSString stringWithFormat:@"%@:%@",[NSString stringWithFormat:@"%lld", victoryTeam.score],[NSString stringWithFormat:@"%lld", failTeam.score]]; - NSString * result; - if (model.voteMode == ChamberCombatVoteModeGenre_NumberPerson) { - result = [NSString stringWithFormat:@"本场PK结果:%@胜利!\nPK值%@ \n 胜利方战斗值:%@",victoryStr, resultScale,[NSNumber numberWithLongLong:victoryTeam.score]]; - }else{ - if (victoryTeam.protector) { - NSString * victoryProteror = victoryTeam.protector.nick.length > 0 ? victoryTeam.protector.nick : @""; - result = [NSString stringWithFormat:@"本场PK结果:%@胜利! \nPK值%@ \n %@守护者:%@ \n %@守护值:%@",victoryStr, resultScale,victoryStr, victoryProteror, victoryStr,[[NSNumber numberWithLongLong:victoryTeam.protecScore] stringValue]]; - }else{ - result = [NSString stringWithFormat:@"本场PK结果:%@胜利! \nPK值%@ \n %@守护值:%@",victoryStr, resultScale,victoryStr,[[NSNumber numberWithLongLong:victoryTeam.protecScore] stringValue]]; - } - } - [attribute appendAttributedString:[self produceEssayIdiosyncracy:result color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } - - @kWeakify(self); - [attribute yy_setTextHighlightRange:NSMakeRange(0, attribute.length) color:nil backgroundColor:nil tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { - @kStrongify(self); - [self EvidenceChamberCombatConsequent:attachment.data]; - }]; - } else if(attachment.second == Custom_Message_Sub_Room_PK_Mode_Open) { - NSString * pkType; - if (model.voteMode == ChamberCombatVoteModeGenre_GiftValue) { - pkType = YMLocalizedString(@"YUMI_Room_Message_Parser_37"); - }else if (model.voteMode == ChamberCombatVoteModeGenre_NumberPerson){ - pkType = YMLocalizedString(@"YUMI_Room_Message_Parser_38"); - } - NSString * title = [NSString stringWithFormat:@"管理发起房间PK,本次PK时间为%.0f秒,%@", model.duration, pkType]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:title color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - }else if (attachment.second == Custom_Message_Sub_Room_PK_Start){ - NSString * title = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Room_Message_Parser_40"), model.duration]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:title color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - }else if (attachment.second == Custom_Message_Sub_Room_PK_Re_Start){ - NSString * pkType; - if (model.voteMode == ChamberCombatVoteModeGenre_GiftValue) { - pkType = YMLocalizedString(@"YUMI_Room_Message_Parser_41"); - }else if (model.voteMode == ChamberCombatVoteModeGenre_NumberPerson){ - pkType = YMLocalizedString(@"YUMI_Room_Message_Parser_42"); - } - NSString * title = [NSString stringWithFormat:@"管理员重新开始PK,本次PK时间为%.0f秒,%@", model.duration, pkType]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:title color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } - } - communicationAbstract.content = attribute; - return communicationAbstract; -} - -- (void)EvidenceChamberCombatConsequent:(NSDictionary *)dic { - ChamberCombatAbstractMatrix * pkInfo = [ChamberCombatAbstractMatrix mtowardsrixAboutImpactbasket:dic]; - if (pkInfo.pkStatus == ChamberCombatPositionGenre_End || pkInfo.pkStatus == ChamberCombatPositionGenre_ReStart) { - YUMIChamberCombatConsequentRegard * result = [[YUMIChamberCombatConsequentRegard alloc] init]; - result.chamberCombatConsequentAbstractMatrix = pkInfo; - [MKJPopup popupRegard:result style:MKJPopupStyleAlert]; - } -} - -#pragma mark - 表情显示 -- (YUMICommunicationAbstractMatrix*)produceChamberAcceptIdiosyncracy:(AttachmentMatrix *)attachment communicationAbstract:(YUMICommunicationAbstractMatrix *)communicationAbstract{ - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - if ([attachment.data[@"data"] isKindOfClass:[NSArray class]]) { - NSArray * array = [ChamberAcceptDischargeAbstractMatrix mtowardsrixsAboutGarment:attachment.data[@"data"]]; - for (int i = 0; i< array.count; i++) { - ChamberAcceptDischargeAbstractMatrix * sendFaceInfo = [array secureGroalTowardsIndictowardsrix1:i]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:sendFaceInfo.nick color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:@":" color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:@"\n" color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - for (int j = 0; j < sendFaceInfo.resultIndexes.count; j++) { - NSNumber *index = sendFaceInfo.resultIndexes[j]; - UIImage *face = [[YUMIChamberAcceptTool partowardsiciptowardsionAcceptUtensil] prohibiticoveryAcceptIndictowardseById:sendFaceInfo.faceId index:[index integerValue]]; - if (face) { - UIImageView *imageView = [[UIImageView alloc]init]; - imageView.image = face; - imageView.contentMode = UIViewContentModeScaleAspectFit; - imageView.bounds = CGRectMake(0, 0, 30, 30); - NSMutableAttributedString * attrString = [NSMutableAttributedString yy_attachmentStringWithContent:imageView contentMode:UIViewContentModeScaleAspectFit attachmentSize:CGSizeMake(imageView.frame.size.width, imageView.frame.size.height) alignToFont:[UIFont systemFontOfSize:15.0] alignment:YYTextVerticalAlignmentCenter]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:1]]; - [attribute appendAttributedString:attrString]; - } - } - } - } - communicationAbstract.content = attribute; - return communicationAbstract; -} - -#pragma mark - 收藏房间 -- (YUMICommunicationAbstractMatrix*)produceAssembleChamberIdiosyncracy:(AttachmentMatrix *)attachment communicationAbstract:(YUMICommunicationAbstractMatrix *)communicationAbstract{ - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - NSDictionary *data = attachment.data[@"data"]; - NSString *nick = [NSString stringWithFormat:@"%@",data[@"nick"]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:nick color:[DJDKMIMOMColor communictowardsionMonicerPrettify] font:kChamberCommunicationDefalutLetterform]]; - NSString *tipString = @""; - if (attachment.second == Custom_Message_Sub_Collect_Room_Tips) { - tipString = YMLocalizedString(@"YUMI_Room_Message_Parser_44"); - } - [attribute appendAttributedString:[self produceEssayIdiosyncracy:tipString color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - communicationAbstract.content = attribute; - return communicationAbstract; -} - -#pragma mark - 房间信息更新 -- (YUMICommunicationAbstractMatrix*)produceChamberAbstractRefurbishIdiosyncracy:(AttachmentMatrix *)attachment communicationAbstract:(YUMICommunicationAbstractMatrix *)communicationAbstract{ - if (attachment.second == Custom_Message_Sub_Update_RoomInfo_MessageState) { - NSDictionary * dic= attachment.data[@"roomInfo"]; - if (dic.allKeys.count <=0) { - dic = attachment.data; - } - ChamberAbstractMatrix * roomInfo = [ChamberAbstractMatrix mtowardsrixAboutImpactbasket:dic]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:@"消息:" color:[DJDKMIMOMColor communictowardsionMonicerPrettify] font:kChamberCommunicationDefalutLetterform]]; - if (roomInfo.isCloseScreen) { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_46") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } else { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_47") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } - communicationAbstract.content = attribute; - } else if(attachment.second == Custom_Message_Sub_Update_RoomInfo_AnimateEffect) { - NSDictionary * dic = attachment.data[@"roomInfo"]; - if (dic.allKeys.count <=0) { - dic = attachment.data; - } - ChamberAbstractMatrix * roomInfo = [ChamberAbstractMatrix mtowardsrixAboutImpactbasket:dic]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:@"消息:" color:[DJDKMIMOMColor communictowardsionMonicerPrettify] font:kChamberCommunicationDefalutLetterform]]; - if (roomInfo.hasAnimationEffect) { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_49") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } else { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_50") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceIndictowardseIdiosyncracy:[UIImage imageNamed:@"yumi_scope_menu_more"]]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_51") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } - communicationAbstract.content = attribute; - } else if (attachment.second == Custom_Message_Sub_Update_RoomInfo_CleanScreen) { - NSNumber *roleType = attachment.data[@"roleType"]; - NSString *nick = attachment.data[@"nick"]; - NSInteger uid = 0; - if ([attachment.data[@"uid"] isKindOfClass:[NSNumber class]]) { - uid = ((NSNumber *)attachment.data[@"uid"]).integerValue; - } else if ([attachment.data[@"uid"] isKindOfClass:[NSString class]]) { - uid = ((NSString *)attachment.data[@"uid"]).integerValue; - } - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:@"消息:" color:[DJDKMIMOMColor communictowardsionMonicerPrettify] font:kChamberCommunicationDefalutLetterform]]; - if (roleType.integerValue == 1) { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_53") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:nick color:[DJDKMIMOMColor communictowardsionMonicerPrettify] font:kChamberCommunicationDefalutLetterform]]; - } else if (roleType.integerValue == 2) { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_54") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:nick color:[DJDKMIMOMColor communictowardsionMonicerPrettify] font:kChamberCommunicationDefalutLetterform]]; - } - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_55") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [self towardstributeAccelertowardseHihtShining:attribute uid:uid]; - communicationAbstract.content = attribute; - } - return communicationAbstract; -} - -#pragma mark - 相亲 -- (YUMICommunicationAbstractMatrix *)produceChamberEngagementIdiosyncracy:(AttachmentMatrix *)attachment communicationAbstract:(YUMICommunicationAbstractMatrix *)communicationAbstract{ - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - if(attachment.second == Custom_Message_Sub_Room_Play_Dating_Pick_Heart) { - EngagementAbstractMatrix * datingModel = [EngagementAbstractMatrix mtowardsrixAboutImpactbasket:attachment.data]; - NSString * targetGender = datingModel.targetGender == GenderGenre_Male ? @"男" : YMLocalizedString(@"YUMI_Room_Message_Parser_57"); - NSString * pickString = [NSString stringWithFormat:@"%d号%@嘉宾:", (datingModel.targetPosition + 1), targetGender]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_59") color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:pickString color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - NSString * targetNick = datingModel.targetNickname ? datingModel.targetNickname : @""; - [attribute appendAttributedString:[self produceMonicerTowardsrribute:targetNick uid:datingModel.targetUid]]; - NSString * heartContent = YMLocalizedString(@"YUMI_Room_Message_Parser_60"); - [attribute appendAttributedString:[self produceEssayIdiosyncracy:heartContent color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } else if(attachment.second == Custom_Message_Sub_Room_Play_Dating_Result_Mutual) { - EngagementAbstractMatrix * datingModel = [EngagementAbstractMatrix mtowardsrixAboutImpactbasket:attachment.data]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_61") color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - NSString * nick = datingModel.nickname ? datingModel.nickname : @""; - [attribute appendAttributedString:[self produceMonicerTowardsrribute:nick uid:datingModel.uid]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_62") color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - NSString * targetNick = datingModel.targetNickname ? datingModel.targetNickname : @""; - [attribute appendAttributedString:[self produceMonicerTowardsrribute:targetNick uid:datingModel.targetUid]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_63") color:UIColorFromRGB(0xF84C95) font:kChamberCommunicationDefalutLetterform]]; - } else if (attachment.second == Custom_Message_Sub_Room_Play_Dating_Result_Not_Mutual) { - EngagementAbstractMatrix * datingModel = [EngagementAbstractMatrix mtowardsrixAboutImpactbasket:attachment.data]; - NSString * nick = datingModel.nickname ? datingModel.nickname : @""; - [attribute appendAttributedString:[self produceMonicerTowardsrribute:nick uid:datingModel.uid]]; - if (datingModel.hasSelectUser) { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_64") color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - NSString * targetNick = datingModel.targetNickname ? datingModel.targetNickname : @""; - [attribute appendAttributedString:[self produceMonicerTowardsrribute:targetNick uid:datingModel.targetUid]]; - } else { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_65") color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } - } - communicationAbstract.content = attribute; - return communicationAbstract; -} - -#pragma mark - 排麦 -- (YUMICommunicationAbstractMatrix *)produceScheduleLoudspeakerIdiosyncracy:(AttachmentMatrix *)attachment communicationAbstract:(YUMICommunicationAbstractMatrix *)communicationAbstract{ - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_66") color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - if (attachment.second == Custom_Message_Sub_Arrange_Mic_Mode_Open) { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_67") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_68") color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } else if (attachment.second == Custom_Message_Sub_Arrange_Mic_Mode_Close) { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_69") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_70") color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } else if (attachment.second == Custom_Message_Sub_Arrange_Mic_Free_Mic_Open) { - NSDictionary * dic = attachment.data; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_71") color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:[NSString stringWithFormat:YMLocalizedString(@"YUMI_Room_Message_Parser_72"), ((NSNumber *)dic[@"micPos"]).intValue + 1 ] color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_73") color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } else if (attachment.second == Custom_Message_Sub_Arrange_Mic_Free_Mic_Close) { - NSDictionary * dic = attachment.data; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_74") color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:[NSString stringWithFormat:YMLocalizedString(@"YUMI_Room_Message_Parser_75"), ((NSNumber *)dic[@"micPos"]).intValue + 1 ] color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_76") color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } - communicationAbstract.content = attribute; - return communicationAbstract; -} - -#pragma mark - 糖果树公屏消息 -- (YUMICommunicationAbstractMatrix *)produceConfectioneryTimberHighPrototypeIdiosyncracy:(AttachmentMatrix *)attachment communicationAbstract:(YUMICommunicationAbstractMatrix *)communicationAbstract{ - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - - [attribute appendAttributedString:[self produceEssayIdiosyncracy:@"厉害了 " color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - ConfectioneryTimberPresentAbstractMatrix * giftInfo = [ConfectioneryTimberPresentAbstractMatrix mtowardsrixAboutImpactbasket:attachment.data]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:giftInfo.nick color:[DJDKMIMOMColor communictowardsionMonicerPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_78") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:giftInfo.prizeName color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - if (giftInfo.prizeNum > 1) { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:[NSString stringWithFormat:@" X %d", giftInfo.prizeNum] color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } - - if (attachment.second == Custom_Message_Sub_Candy_Tree_Me && giftInfo.uid.integerValue == [AccountAbstractStorage instance].acquireCid.integerValue) { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:@"(仅自己可见)" color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } - - [self towardstributeAccelertowardseHihtShining:attribute uid:giftInfo.uid.integerValue]; - communicationAbstract.content = attribute; - return communicationAbstract; -} - -#pragma mark - 贵族 -- (YUMICommunicationAbstractMatrix *)produceMagnificentPrototypeIdiosyncracy:(AttachmentMatrix *)attachment communicationAbstract:(YUMICommunicationAbstractMatrix *)communicationAbstract{ - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - NSInteger uid = 0; - if ([attachment.data[@"uid"] isKindOfClass:[NSNumber class]]) { - uid = ((NSNumber *)attachment.data[@"uid"]).integerValue; - } else if ([attachment.data[@"uid"] isKindOfClass:[NSString class]]) { - uid = ((NSString *)attachment.data[@"uid"]).integerValue; - } - if (attachment.second == Custom_Message_Sub_Room_Open_Noble_VIP) { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_80") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:[NSString stringWithFormat:@"%@(%@)", attachment.data[@"nick"], attachment.data[@"erbanNo"]] color:[DJDKMIMOMColor communictowardsionMonicerPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_81") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:attachment.data[@"currVipName"] color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:@"贵族身份!" color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } else if (attachment.second == Custom_Message_Sub_Room_Noble_LevelUp || attachment.second == Custom_Message_Sub_AllRoom_Noble_LevelUp_Suspend) { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_83") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:attachment.data[@"nick"] color:[DJDKMIMOMColor communictowardsionMonicerPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_84") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:attachment.data[@"currVipName"] color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:@"!" color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } - [self towardstributeAccelertowardseHihtShining:attribute uid:uid]; - communicationAbstract.content = attribute; - return communicationAbstract; -} - -#pragma mark - 塔罗 -- (YUMICommunicationAbstractMatrix *)produceTarotIdiosyncracy:(AttachmentMatrix *)attachment communicationAbstract:(YUMICommunicationAbstractMatrix *)communicationAbstract{ - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - if (attachment.second == Custom_Message_Sub_Tarot) { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_85") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:attachment.data[@"nick"] color:[DJDKMIMOMColor communictowardsionMonicerPrettify] font:kChamberCommunicationDefalutLetterform]]; - NSString *text = [NSString stringWithFormat:@" %@", attachment.data[@"drawMsgText"]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:text color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - if ([attachment.data[@"drawGoldNum"] intValue] > 1) { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:[NSString stringWithFormat:@"%d",[attachment.data[@"drawGoldNum"] intValue]] color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } - [attribute appendAttributedString:[self produceEssayIdiosyncracy:[NSString stringWithFormat:@"%@ ", attachment.data[@"chargeProdName"]] color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } - communicationAbstract.content = attribute; - return communicationAbstract; -} - -#pragma mark - 个播粉丝团 -- (YUMICommunicationAbstractMatrix *)produceKellegFantowardsicsSquadIdiosyncracy:(AttachmentMatrix *)attachment communicationAbstract:(YUMICommunicationAbstractMatrix *)communicationAbstract{ - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - NSInteger uid = 0; - if ([attachment.data[@"uid"] isKindOfClass:[NSNumber class]]) { - uid = ((NSNumber *)attachment.data[@"uid"]).integerValue; - } else if ([attachment.data[@"uid"] isKindOfClass:[NSString class]]) { - uid = ((NSString *)attachment.data[@"uid"]).integerValue; - } - NSString *idString = [NSString stringWithFormat:@"%ld", uid]; - NSString *nickName = attachment.data[@"nickname"]; - if ([idString isEqualToString:[[AccountAbstractStorage instance] acquireCid]]) { - nickName = YMLocalizedString(@"YUMI_Room_Message_Parser_86"); - } - if (attachment.second == Custom_Message_Sub_FansTeam_Open_Success) { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_87") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:nickName color:[DJDKMIMOMColor communictowardsionMonicerPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_88") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } else if (attachment.second == Custom_Message_Sub_FansTeam_Join_Success) { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_89") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:nickName color:[DJDKMIMOMColor communictowardsionMonicerPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_90") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } else if (attachment.second == Custom_Message_Sub_FansTeam_Out_Success) { - [attribute appendAttributedString:[self produceEssayIdiosyncracy:nickName color:[DJDKMIMOMColor communictowardsionMonicerPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_91") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } - [self towardstributeAccelertowardseHihtShining:attribute uid:uid]; - communicationAbstract.content = attribute; - return communicationAbstract; -} - -#pragma mark - 踢出房间/拉黑/下麦 -- (YUMICommunicationAbstractMatrix *)produceAbandonConsumerIdiosyncracy:(AttachmentMatrix *)attachment info:(XCombatickConsumerMatrix *)info communicationAbstract:(YUMICommunicationAbstractMatrix *)communicationAbstract{ - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - [attribute appendAttributedString:[self produceMonicerTowardsrribute:info.targetNick uid:info.targetUid]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_92") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceMonicerTowardsrribute:info.handleNick uid:info.handleUid]]; - NSString * content= @""; - if (attachment.second == Custom_Message_Sub_Kick_BeKicked || attachment.second == Custom_Message_Sub_Hall_Super_Admin_Kick_Manager_Out_Room) { - content = YMLocalizedString(@"YUMI_Room_Message_Parser_93"); - } else if(attachment.second == Custom_Message_Sub_Kick_BlackList) { - content = YMLocalizedString(@"YUMI_Room_Message_Parser_94"); - } else if(attachment.second == Custom_Message_Sub_Queue_Kick) { - content = YMLocalizedString(@"YUMI_Room_Message_Parser_95"); - } - [attribute appendAttributedString:[self produceEssayIdiosyncracy:content color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - communicationAbstract.content = attribute; - return communicationAbstract; -} - - -#pragma mark - 分享房间 -- (YUMICommunicationAbstractMatrix *)producePartowardsiciptowardsionOrConsidertowardsionChamberIdiosyncracy:(AttachmentMatrix *)attachment sendInfo:(YUMICommunicationRemoteExtMatrix *)sendInfo uid:(NSString *)uid communicationAbstract:(YUMICommunicationAbstractMatrix *)communicationAbstract{ - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - NSDictionary *data = attachment.data[@"data"]; - NSString *nick = [NSString stringWithFormat:@"%@",data[@"nick"]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:nick color:[DJDKMIMOMColor communictowardsionMonicerPrettify] font:kChamberCommunicationDefalutLetterform]]; - NSString *tipString = @""; - if (attachment.second == Custom_Message_Sub_Room_Tip_ShareRoom) { - tipString = YMLocalizedString(@"YUMI_Room_Message_Parser_96"); - }else if (attachment.second == Custom_Message_Sub_Room_Tip_Attention_Owner) { - tipString = YMLocalizedString(@"YUMI_Room_Message_Parser_97"); - } - [attribute appendAttributedString:[self produceEssayIdiosyncracy:tipString color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [self towardstributeAccelertowardseHihtShining:attribute uid:uid.integerValue]; - communicationAbstract.content = attribute; - return communicationAbstract; -} - -#pragma mark - 送礼物的公屏 -- (YUMICommunicationAbstractMatrix *)produceBtowardschMiecreoscoopeDischargePresentIdiosyncracy:(AttachmentMatrix *)attachment sendInfo:(YUMICommunicationRemoteExtMatrix *)sendInfo communicationAbstract:(YUMICommunicationAbstractMatrix *)communicationAbstract{ - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - PresentAchieveAbstractMatrix *info = [PresentAchieveAbstractMatrix mtowardsrixAboutJSON:attachment.data]; - PresentAbstractMatrix *giftInfo = info.gift == nil ? info.giftInfo : info.gift; - if (giftInfo == nil) { - giftInfo = [[YUMIPresentStorage partowardsiciptowardsionStorage] prohibiticoveryPresentAbstract:info.giftId]; - } - - [attribute appendAttributedString:[self produceHLOfficalGrantedStrangeconsumerIdiosyncracy:sendInfo.defUser newUser:sendInfo.newUser fromSayHelloChannel:sendInfo.fromSayHelloChannel]]; - - [attribute appendAttributedString:[self produceMonicerTowardsrribute:info.nick uid:info.uid.integerValue]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - if (attachment.second == Custom_Message_Sub_AllBatchSend || attachment.second == Custom_Message_Sub_AllMicroSend) { - if (attachment.second == Custom_Message_Sub_AllBatchSend) { - - [attribute appendAttributedString:[self produceEssayIdiosyncracy:@" 打赏 " color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - for (int i = 0; i < info.targetUsers.count; i++) { - PresentAchieveConsumerAbstractMatrix *targetInfo = [info.targetUsers secureGroalTowardsIndictowardsrix1:i]; - - [attribute appendAttributedString:[self produceMonicerTowardsrribute:targetInfo.nick uid:targetInfo.uid]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - if (i < (info.targetUsers.count -1)) { - - [attribute appendAttributedString:[self produceEssayIdiosyncracy:@"," color:[DJDKMIMOMColor communictowardsionMonicerPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - } - } - } else { - - [attribute appendAttributedString:[self produceEssayIdiosyncracy:@" 全麦打赏 " color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - } - - - if (giftInfo.giftUrl) { - [attribute appendAttributedString:[self produceWeebsiteIndictowardseIdiosyncracy:giftInfo.giftUrl]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - } - - - [attribute appendAttributedString:[self produceEssayIdiosyncracy:[NSString stringWithFormat:@" X%ld",info.giftNum] color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } else if(attachment.second == Custom_Message_Sub_AllMicroLuckySend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend) { - - NSString * sendTitle = @" 送出 "; - if (attachment.second == Custom_Message_Sub_AllMicroLuckySend) { - sendTitle = @" 全麦送出 "; - } - - [attribute appendAttributedString:[self produceEssayIdiosyncracy:sendTitle color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - - - [attribute appendAttributedString:[self produceEssayIdiosyncracy:info.giftName color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - - - [attribute appendAttributedString:[self produceEssayIdiosyncracy:@" 给 " color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - if (info.luckyGiftList) { - - [attribute appendAttributedString:[self produceMonicerTowardsrribute:info.luckyGiftList.user.nick uid:info.luckyGiftList.user.uid]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - - - [attribute appendAttributedString:[self produceEssayIdiosyncracy:@" 爆出了 " color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - - [info.luckyGiftList.giftList enumerateObjectsUsingBlock:^(PresentStatementsAbstract * _Nonnull giftListInfo, NSUInteger idx, BOOL * _Nonnull stop) { - PresentAbstractMatrix *luckGiftInfo = [[YUMIPresentStorage partowardsiciptowardsionStorage] prohibiticoveryPresentAbstract:[NSString stringWithFormat:@"%ld", giftListInfo.giftId]]; - - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_104") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - - [attribute appendAttributedString:[self produceEssayIdiosyncracy:[NSString stringWithFormat:@"%ld",(NSInteger)luckGiftInfo.goldPrice] color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_105") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - - [attribute appendAttributedString:[self produceWeebsiteIndictowardseIdiosyncracy:luckGiftInfo.giftUrl]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - - - [attribute appendAttributedString:[self produceEssayIdiosyncracy: [NSString stringWithFormat:@" X%ld",giftListInfo.giftNum] color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - if (info.luckyGiftList.giftList.count-1 != idx) { - - [attribute appendAttributedString:[self produceEssayIdiosyncracy:@"," color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } - }]; - } - } - communicationAbstract.content = attribute; - return communicationAbstract; -} - -- (YUMICommunicationAbstractMatrix *)produceDischargePresentIdiosyncracy:(AttachmentMatrix *)attachment sendInfo:(YUMICommunicationRemoteExtMatrix *)sendInfo communicationAbstract:(YUMICommunicationAbstractMatrix *)communicationAbstract{ - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - PresentAchieveAbstractMatrix *info = [PresentAchieveAbstractMatrix mtowardsrixAboutJSON:attachment.data]; - PresentAbstractMatrix *giftInfo = info.gift == nil ? info.giftInfo : info.gift; - if (giftInfo == nil) { - giftInfo = [[YUMIPresentStorage partowardsiciptowardsionStorage] prohibiticoveryPresentAbstract:info.giftId]; - } - - [attribute appendAttributedString:[self produceHLOfficalGrantedStrangeconsumerIdiosyncracy:sendInfo.defUser newUser:sendInfo.newUser fromSayHelloChannel:sendInfo.fromSayHelloChannel]]; - - [attribute appendAttributedString:[self produceMonicerTowardsrribute:info.nick uid:info.uid.integerValue]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]];; - if (attachment.second == Custom_Message_Sub_Gift_LuckySend) { - - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_106") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - - [attribute appendAttributedString:[self produceEssayIdiosyncracy:info.giftName color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_107") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - - [attribute appendAttributedString:[self produceMonicerTowardsrribute:info.luckyGiftList.user.nick uid:info.luckyGiftList.user.uid]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - - [attribute appendAttributedString:[self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_108") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [info.luckyGiftList.giftList enumerateObjectsUsingBlock:^(PresentStatementsAbstract * _Nonnull giftListInfo, NSUInteger idx, BOOL * _Nonnull stop) { - PresentAbstractMatrix *luckyGiftInfo = [[YUMIPresentStorage partowardsiciptowardsionStorage] prohibiticoveryPresentAbstract:[NSString stringWithFormat:@"%ld", giftListInfo.giftId]]; - - [attribute appendAttributedString: [self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_109") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - - [attribute appendAttributedString:[self produceEssayIdiosyncracy:[NSString stringWithFormat:@"%ld",(NSInteger)luckyGiftInfo.goldPrice] color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - - [attribute appendAttributedString: [self produceEssayIdiosyncracy:YMLocalizedString(@"YUMI_Room_Message_Parser_110") color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - - [attribute appendAttributedString:[self produceWeebsiteIndictowardseIdiosyncracy:luckyGiftInfo.giftUrl]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - - [attribute appendAttributedString:[self produceEssayIdiosyncracy: [NSString stringWithFormat:@" X%ld",giftListInfo.giftNum] color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - if (info.luckyGiftList.giftList.count-1 != idx) { - - [attribute appendAttributedString: [self produceEssayIdiosyncracy:@"," color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } - }]; - } else { - - [attribute appendAttributedString:[self produceEssayIdiosyncracy:@" 打赏 " color:[DJDKMIMOMColor communictowardsionDeficiencyEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - - [attribute appendAttributedString: [self produceMonicerTowardsrribute:info.targetNick uid:info.targetUid.integerValue]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - - [attribute appendAttributedString:[self produceWeebsiteIndictowardseIdiosyncracy:giftInfo.giftUrl]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - - [attribute appendAttributedString:[self produceEssayIdiosyncracy:[NSString stringWithFormat:@" X%ld",info.giftNum] color:[DJDKMIMOMColor communictowardsionEssayPrettify] font:kChamberCommunicationDefalutLetterform]]; - } - communicationAbstract.content = attribute; - return communicationAbstract; -} - -#pragma mark - Commond Mehotd -- (BOOL)isUniversalChamberSenstowardsionalManagement:(NSString *)uid { - for (UnionSensationalManagementAbstractMatrix *info in self.hostRepresedtation.acquireChamberSenstowardsionalManagementSttowardsement) { - if ([info.uid isEqualToString:uid]) { - return YES; - } - } - return NO; -} - -- (NSAttributedString *)produceHLOfficalGrantedStrangeconsumerIdiosyncracy:(ConsumerPrototypeGenre)levelType newUser:(BOOL)newUser fromSayHelloChannel:(BOOL)fromSayHelloChannel{ - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - - if (levelType == ConsumerPrototypeGenre_Offical) { - [attribute appendAttributedString: [self produceProvincialIndictowardseIdiosyncracy:@"common_offical"]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - } - if (newUser) { - if (fromSayHelloChannel) { - [attribute appendAttributedString:[self produceProvincialIndictowardseIdiosyncracy:@"room_new_user_greet_new"]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - } else { - [attribute appendAttributedString: [self produceProvincialIndictowardseIdiosyncracy:@"common_new_user"]]; - [attribute appendAttributedString:[self produceSapceIdiosyncracy:2]]; - } - } - return attribute; -} - -- (NSMutableAttributedString *)produceMonicerTowardsrribute:(NSString *)nick uid:(NSInteger)uid { - NSMutableAttributedString * attribute = [self produceEssayIdiosyncracy:nick color:[DJDKMIMOMColor communictowardsionMonicerPrettify] font:kChamberCommunicationDefalutLetterform]; - [self towardstributeAccelertowardseHihtShining:attribute uid:uid]; - return attribute; -} - -- (void)towardstributeAccelertowardseHihtShining:(NSMutableAttributedString *)attribute uid:(NSInteger)uid { - @kWeakify(self); - [attribute yy_setTextHighlightRange:NSMakeRange(0, attribute.length) color:nil backgroundColor:nil tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { - @kStrongify(self); - if (uid <= 0) {return;} - [self EvidenceConsumerSolitaire:uid]; - }]; -} - -- (void)towardstributeAccelertowardseLongPressHihtShining:(NSMutableAttributedString *)attribute uid:(NSString *)uid nick:(NSString *)nick { - @kWeakify(self); - [attribute yy_setTextHighlightRange:NSMakeRange(0, attribute.length) color:nil backgroundColor:nil userInfo:nil tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { - @kStrongify(self); - if (uid <= 0) {return;} - [self EvidenceConsumerSolitaire:uid.integerValue]; - } longPressAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { - @kStrongify(self); - if ([uid isEqualToString:[AccountAbstractStorage instance].acquireCid] || uid.length < 1) { - return; - } - UIViewController *vc = self.hostRepresedtation.acquireUniversalNev.viewControllers[0]; - [YUMIChamberDischargeEssayRegard EvidenceEssayRegard:vc.view delegate:self.hostRepresedtation atUid:uid atNick:nick]; - }]; -} - - -- (void)EvidenceConsumerSolitaire:(NSInteger)uid { - if (![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - return; - } - ChamberAbstractMatrix * roomInfo = self.hostRepresedtation.acquireChamberAbstract; - NSString * targetUid = [NSString stringWithFormat:@"%ld", uid]; - YUMIConsumerSolitaireAbstractMatrix * model = [[YUMIConsumerSolitaireAbstractMatrix alloc] init]; - [[self.hostRepresedtation.acquireMiecreoscoopeInthecaseofmtowardsion allValues] enumerateObjectsUsingBlock:^(MiecreoscoopeMHTueueMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (uid == obj.userInfo.uid) { - model.position = [NSString stringWithFormat:@"%d", obj.microState.position]; - model.posState = obj.microState.posState; - model.micState = obj.microState.micState; - *stop = YES; - } - }]; - model.nick = self.hostRepresedtation.getUserInfo.nick; - model.uid = targetUid; - model.micQueue = self.hostRepresedtation.acquireMiecreoscoopeInthecaseofmtowardsion; - model.roomInfo = roomInfo; - model.delegate = self.hostRepresedtation; - model.superMangerList = self.hostRepresedtation.acquireChamberSenstowardsionalManagementSttowardsement; - YUMIConsumerSolitaireRegardGovernancer * userCardVC = [[YUMIConsumerSolitaireRegardGovernancer alloc] initWithUser:model]; - [self.hostRepresedtation.acquireUniversalNev presentViewController:userCardVC animated:YES completion:nil]; -} - -#pragma mark - private base methods -- (NSMutableAttributedString *)produceMtowardserialTowardstibute:(NSString *)tagName image:(NSString *)imageName textFont:(UIFont *)textFont { - NetIndicateDisposition *config = [[NetIndicateDisposition alloc]init]; - - config.autoChamber = YES; - NetIndicateRegard *imageView = [[NetIndicateRegard alloc]initWithUrl:imageName config:config]; - UIImage* image = imageView.image; - if (image) { - CGFloat scale = image.size.width / image.size.height; - imageView.bounds = CGRectMake(0, 0, 20 * scale, 20); - } else { - NSURL *imgUrl = [NSURL URLWithString:imageName]; - UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; - if (myImage) { - CGFloat scale = myImage.size.width / myImage.size.height; - if (scale == 0) { - imageView.bounds = CGRectMake(0, 0, 60, 20); - }else { - imageView.bounds = CGRectMake(0, 0, 20* scale, 20); - } - } else { - imageView.bounds = CGRectMake(0, 0, 60, 20); - } - } - imageView.contentMode = UIViewContentModeScaleAspectFit; - - UILabel *label = [[UILabel alloc] init]; - label.textAlignment = NSTextAlignmentCenter; - label.font = [UIFont boldSystemFontOfSize:12]; - label.adjustsFontSizeToFitWidth = YES; - label.textColor = UIColor.whiteColor; - label.text = tagName; - [imageView addSubview:label]; - [label mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(27); - make.right.mas_equalTo(-8); - make.centerY.mas_equalTo(0); - }]; - NSMutableAttributedString *string = [NSMutableAttributedString yy_attachmentStringWithContent:imageView contentMode:UIViewContentModeScaleAspectFit attachmentSize:imageView.bounds.size alignToFont:[UIFont boldSystemFontOfSize:12] alignment:YYTextVerticalAlignmentCenter]; - return string; -} - - -- (NSMutableAttributedString *)produceWeebsiteIndictowardseIdiosyncracy:(NSString *)imageUrl { - NetIndicateDisposition *config = [[NetIndicateDisposition alloc]init]; - - config.autoChamber = YES; - NetIndicateRegard *imageView = [[NetIndicateRegard alloc]initWithUrl:imageUrl config:config]; - UIImage* image = imageView.image; - if (image) { - CGFloat scale = image.size.width / image.size.height; - imageView.bounds = CGRectMake(0, 0, 20 * scale, 20); - } else { - imageView.bounds = CGRectMake(0, 0, 20, 20); - } - imageView.layer.masksToBounds = YES; - imageView.contentMode = UIViewContentModeScaleAspectFit; - NSMutableAttributedString * attrString = [NSMutableAttributedString yy_attachmentStringWithContent:imageView contentMode:UIViewContentModeScaleAspectFit attachmentSize:CGSizeMake(imageView.bounds.size.width, imageView.bounds.size.height) alignToFont:[UIFont systemFontOfSize:15.0] alignment:YYTextVerticalAlignmentCenter]; - return attrString; -} - - -- (NSMutableAttributedString *)produceProvincialIndictowardseIdiosyncracy:(NSString *)imageName { - if (imageName == nil && imageName.length <= 0) { - return nil; - } - return [self produceIndictowardseIdiosyncracy:[UIImage imageNamed:imageName]]; -} - -- (NSMutableAttributedString *)produceIndictowardseIdiosyncracy:(UIImage *)image { - UIImageView *imaveView = [[UIImageView alloc]init]; - imaveView.image = image; - CGFloat scale = (CGFloat)imaveView.image.size.width / (CGFloat)imaveView.image.size.height; - imaveView.bounds = CGRectMake(0, 0, 20 * scale, 20); - NSMutableAttributedString * attrString = [NSMutableAttributedString yy_attachmentStringWithContent:imaveView contentMode:UIViewContentModeScaleAspectFit attachmentSize:CGSizeMake(imaveView.frame.size.width, imaveView.frame.size.height) alignToFont:[UIFont systemFontOfSize:15.0] alignment:YYTextVerticalAlignmentCenter]; - return attrString; -} - -- (NSMutableAttributedString *)produceEssayIdiosyncracy:(NSString *)text color:(UIColor *)color font:(CGFloat)font { - if (text == nil || text.length <= 0) { - text = @""; - } - NSMutableAttributedString *attribute = [[NSMutableAttributedString alloc] initWithString:text attributes:nil]; - attribute.yy_font = [UIFont systemFontOfSize:font]; - attribute.yy_color = color; - attribute.yy_paragraphStyle = [self paragraphStyle]; - return attribute; -} - -- (NSMutableParagraphStyle *)paragraphStyle { - NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init]; - paraStyle.lineSpacing = 4.0f; - - paraStyle.alignment = NSTextAlignmentLeft; - paraStyle.baseWritingDirection = NSWritingDirectionLeftToRight; - return paraStyle; -} - -- (NSMutableAttributedString *)produceSapceIdiosyncracy:(CGFloat)width { - UIView *vacuumRegard = [[UIView alloc]init]; - vacuumRegard.backgroundColor = [UIColor clearColor]; - vacuumRegard.bounds = CGRectMake(0, 0, width, 10); - NSMutableAttributedString * attribute = [NSMutableAttributedString yy_attachmentStringWithContent:vacuumRegard contentMode:UIViewContentModeScaleAspectFit attachmentSize:CGSizeMake(vacuumRegard.frame.size.width, vacuumRegard.frame.size.height) alignToFont:[UIFont systemFontOfSize:15.0] alignment:YYTextVerticalAlignmentCenter]; - return attribute; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/View/XPNetImageYYLabel.h b/YuMi/Modules/YMRoom/View/MessageContainerView/View/XPNetImageYYLabel.h new file mode 100644 index 00000000..27dd8655 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/View/XPNetImageYYLabel.h @@ -0,0 +1,21 @@ +// +// NetImageYYLabel.h +// YUMI +// +// Created by zu on 2021/11/2. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** 支持 NetImageView 的 YYLabel。 + * + * - 使用者不再需要处理富文本的网络图片。 + * - 使用场景目前还有较多局限性。 + */ +@interface XPNetImageYYLabel : YYLabel + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/View/XPNetImageYYLabel.m b/YuMi/Modules/YMRoom/View/MessageContainerView/View/XPNetImageYYLabel.m new file mode 100644 index 00000000..d18c6154 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/View/XPNetImageYYLabel.m @@ -0,0 +1,53 @@ +// +// NetImageYYLabel.m +// YUMI +// +// Created by zu on 2021/11/2. +// + +#import "XPNetImageYYLabel.h" +#import "NetImageView.h" +#import "XPRoomMessageConstant.h" +#import "NSArray+Safe.h" + +@implementation XPNetImageYYLabel + +- (void)setAttributedText:(NSAttributedString *)attributedText { + NSMutableAttributedString* attributedTextCopy = [attributedText mutableCopy]; + CGSize maxSize = CGSizeMake(kRoomMessageMaxWidth - 24, MAXFLOAT); + YYTextLayout * layout = [YYTextLayout layoutWithContainerSize:maxSize text:attributedText]; + + for (int i = 0; i< layout.attachments.count; i++) { + YYTextAttachment * attachment = [layout.attachments safeObjectAtIndex1:i]; + if (!attachment || ![attachment.content isKindOfClass:[NetImageView class]]) continue; + NetImageView* imageView = attachment.content; + NSValue * value = [layout.attachmentRanges safeObjectAtIndex1:i]; + NSRange range = value.rangeValue; + if (!imageView.imageUrl) continue; + + if (imageView.state == NetImageStateLoaded) { + attributedTextCopy = [self updateNetImageAttribute:imageView attributes:attributedTextCopy range:range]; + continue; + }else { + [imageView loadImage:^(UIImage * _Nonnull image, NSURL * _Nonnull url) { + imageView.image = image; + [super setAttributedText:[self updateNetImageAttribute:imageView attributes:attributedTextCopy range:range]]; + }]; + } + } + [super setAttributedText:attributedTextCopy]; +} + +- (NSMutableAttributedString*)updateNetImageAttribute:(NetImageView*)imageView attributes:(NSMutableAttributedString*)attributes range:(NSRange)range{ + UIImage* image = imageView.image; + CGFloat scale = image.size.width / image.size.height; + // 目前是根据原高度(imageView.bounds.size.height)等比例缩放图片。 + CGSize size = CGSizeMake(imageView.bounds.size.height * scale, imageView.bounds.size.height); + imageView.bounds = CGRectMake(0, 0, size.width, size.height); + + NSMutableAttributedString * replaceAttr = [NSMutableAttributedString yy_attachmentStringWithContent:imageView contentMode:UIViewContentModeScaleAspectFit attachmentSize:size alignToFont:[UIFont systemFontOfSize:15.0] alignment:YYTextVerticalAlignmentCenter]; + [attributes replaceCharactersInRange:range withAttributedString:replaceAttr]; + return attributes; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/View/XPRoomMessageHeaderView.h b/YuMi/Modules/YMRoom/View/MessageContainerView/View/XPRoomMessageHeaderView.h new file mode 100644 index 00000000..a7dd666b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/View/XPRoomMessageHeaderView.h @@ -0,0 +1,17 @@ +// +// YMRoomMessageHeaderView.h +// YUMI +// +// Created by YUMI on 2021/10/26. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomMessageHeaderView : UIView +///头部的背景颜色 +@property (nonatomic,strong) UIColor *bubbleColor; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/View/XPRoomMessageHeaderView.m b/YuMi/Modules/YMRoom/View/MessageContainerView/View/XPRoomMessageHeaderView.m new file mode 100644 index 00000000..472f5a03 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/View/XPRoomMessageHeaderView.m @@ -0,0 +1,94 @@ +// +// YMRoomMessageHeaderView.m +// YUMI +// +// Created by YUMI on 2021/10/26. +// + +#import "XPRoomMessageHeaderView.h" +///Third +#import +///Tool +#import "ThemeColor+Room.h" +#import "XPRoomMessageConstant.h" +#import "YUMIMacroUitls.h" + +@interface XPRoomMessageHeaderView () +///背景 +@property (nonatomic,strong) UIView *bubbleView; +///显示 +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPRoomMessageHeaderView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.bubbleView]; + [self addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + /// 设置绿色消息 + NSString *title = @"平台严禁未成年人直播或打赏,倡导绿色互动,禁止宣传及发布政治、低俗、暴力、色情等违规违法内容,严禁违规交易和诱导欺诈用户,如有违规将对账号进行封禁,发现请及时举报。"; + self.titleLabel.text = title; + CGFloat height = [self getHeaderViewHeight:title] + kRoomMessageTextSpaceHeight *2; + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(kRoomMessageMaxWidth); + make.height.mas_equalTo(height); + }]; + + [self.bubbleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.right.mas_equalTo(self); + make.bottom.mas_equalTo(self).offset(-10); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self).inset(10); + make.centerY.mas_equalTo(self.bubbleView); + }]; +} + +///获取头部的高度 +- (CGFloat)getHeaderViewHeight:(NSString *)title { + return [title boundingRectWithSize:CGSizeMake(kRoomMessageMaxWidth - 20, CGFLOAT_MAX) options:NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:kRoomMessageDefalutFont]} context:nil].size.height; +} + +#pragma mark - Getters And Setters +- (void)setBubbleColor:(UIColor *)bubbleColor { + _bubbleColor = bubbleColor; + if (_bubbleColor) { + _bubbleView.backgroundColor = _bubbleColor; + } +} + +- (UIView *)bubbleView { + if (!_bubbleView) { + _bubbleView = [[UIView alloc] init]; + _bubbleView.backgroundColor = [DJDKMIMOMColor messageBubbleColor]; + _bubbleView.layer.masksToBounds = YES; + _bubbleView.layer.cornerRadius = kRoomMessageBubbleCornerRadius; + } + return _bubbleView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:kRoomMessageDefalutFont]; + _titleLabel.textColor = [DJDKMIMOMColor appMainColor]; + _titleLabel.numberOfLines = 0; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/View/XPRoomMessageTableViewCell.h b/YuMi/Modules/YMRoom/View/MessageContainerView/View/XPRoomMessageTableViewCell.h new file mode 100644 index 00000000..7e4b819d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/View/XPRoomMessageTableViewCell.h @@ -0,0 +1,32 @@ +// +// YMRoomMessageTableViewCell.h +// YUMI +// +// Created by YUMI on 2021/10/26. +// + +#import +#import "RoomInfoModel.h" +@class XPNetImageYYLabel, XPMessageInfoModel; + +NS_ASSUME_NONNULL_BEGIN + +@class XPRoomMessageParser, YYLabel, XPRoomMessageTableViewCell; +@protocol XPRoomMessageTableViewCellDelegate + +- (void)xPRoomMessageTableViewCellDidTapEmpty:(XPRoomMessageTableViewCell *)view; + +@end + +@interface XPRoomMessageTableViewCell : UITableViewCell +///当前房间的类型 +@property (nonatomic,assign) RoomType roomType; + +@property (nonatomic,strong) XPMessageInfoModel *messageInfo; + +///代理 +@property (nonatomic,weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/View/XPRoomMessageTableViewCell.m b/YuMi/Modules/YMRoom/View/MessageContainerView/View/XPRoomMessageTableViewCell.m new file mode 100644 index 00000000..e8548a9f --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/View/XPRoomMessageTableViewCell.m @@ -0,0 +1,167 @@ +// +// YMRoomMessageTableViewCell.m +// YUMI +// +// Created by YUMI on 2021/10/26. +// + +#import "XPRoomMessageTableViewCell.h" +///Third +#import +#import "XPNetImageYYLabel.h" +#import "NetImageView.h" +///Tool +#import "YUMIMacroUitls.h" +#import "ThemeColor+Room.h" +#import "UIImage+Utils.h" +#import "XPMessageInfoModel.h" + +#import "XPRoomMessageConstant.h" + +@interface XPRoomMessageTableViewCell () +///气泡 +@property (nonatomic,strong) NetImageView *bubbleImageView; +///展示的内容 +@property (nonatomic,strong) XPNetImageYYLabel *contentLabel; +///点击空白区域的手势 +@property (nonatomic,strong) UITapGestureRecognizer *tapEmptyRecognizer; +@end + +@implementation XPRoomMessageTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.selectionStyle = UITableViewCellSelectionStyleNone; + self.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.bubbleImageView]; + [self.contentView addSubview:self.contentLabel]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTap)]; + tap.delegate = self; + self.tapEmptyRecognizer = tap; + [self.contentView addGestureRecognizer:self.tapEmptyRecognizer]; +} + +- (void)initSubViewConstraints { + [self.bubbleImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.mas_equalTo(self.contentView); + make.bottom.mas_equalTo(self.contentView).offset(-6); + make.right.mas_equalTo(self.contentLabel).offset(12); + }]; + + [self.contentLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.bubbleImageView).offset(12); + make.bottom.mas_equalTo(self.bubbleImageView).offset(-10); + make.top.mas_equalTo(self.bubbleImageView).mas_offset(10); + }]; +} + +#pragma mark - tool +- (UIImage*)resizableImage:(UIImage *)image { + //图片拉伸区域 + CGFloat top = (image.size.height - 1) / 2; + CGFloat left = (image.size.width - 1) / 2; + CGFloat right = (image.size.width - 1) / 2; + CGFloat bottom = (image.size.height - 1) / 2; + return [image resizableImageWithCapInsets:UIEdgeInsetsMake(top, left, bottom, right) resizingMode:UIImageResizingModeStretch]; +} +#pragma mark - UIGestureRecognizerDelegate +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { + if (gestureRecognizer == self.tapEmptyRecognizer) { + if (touch.view == self.contentLabel || touch.view == self.bubbleImageView) { + return NO; + } + } + return YES; +} + +#pragma mark - Event Response +- (void)didTap { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomMessageTableViewCellDidTapEmpty:)]) { + [self.delegate xPRoomMessageTableViewCellDidTapEmpty:self]; + } +} + +#pragma mark - Getters And Setters +- (void)setMessageInfo:(XPMessageInfoModel *)messageInfo { + _messageInfo = messageInfo; + if (_messageInfo) { + self.contentLabel.attributedText = _messageInfo.content; + if (_messageInfo.bubbleImageUrl.length) { + [self.bubbleImageView loadImageWithUrl:_messageInfo.bubbleImageUrl completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) { + UIImage *image1 = [UIImage imageWithCGImage:image.CGImage scale:2.0 orientation:UIImageOrientationUp]; + self.bubbleImageView.image = [self resizableImage:image1]; + }]; + } else { + _bubbleImageView.image = [UIImage imageWithColor:[DJDKMIMOMColor messageBubbleColor]]; + } + [self.contentLabel mas_updateConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.bubbleImageView).offset(_messageInfo.contentLeftMargin); + make.top.mas_equalTo(self.bubbleImageView).offset(_messageInfo.contentTopMargin); + make.bottom.mas_equalTo(self.bubbleImageView).offset(-_messageInfo.contentBottomMargin); + }]; + + + _bubbleImageView.hidden = _messageInfo.isHiddenBubble; + } +} + +- (UIImage *)scaleToSize:(UIImage *)img { + // 创建一个bitmap的context + // 并把它设置成为当前正在使用的context + CGFloat width = img.size.width * 0.5; + CGFloat height = img.size.height * 0.5; + UIGraphicsBeginImageContextWithOptions(CGSizeMake(width, height), NO, 1); + // 绘制改变大小的图片 + [img drawInRect:CGRectMake(0, 0, width, height)]; + // 从当前context中创建一个改变大小后的图片 + UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext(); + // 使当前的context出堆栈 + UIGraphicsEndImageContext(); + // 返回新的改变大小后的图片 + return scaledImage; +} + +- (void)setRoomType:(RoomType)roomType { + _roomType = roomType; + if (self.messageInfo.bubbleImageUrl.length > 0) { + return; + } + if (_roomType == RoomType_MiniGame) { + _bubbleImageView.image = [UIImage imageWithColor:[UIColor colorWithWhite:1 alpha:0.2]]; + } else { + _bubbleImageView.image = [UIImage imageWithColor:[DJDKMIMOMColor messageBubbleColor]]; + } +} + + +- (NetImageView *)bubbleImageView { + if (!_bubbleImageView) { + _bubbleImageView = [[NetImageView alloc] init]; + _bubbleImageView.userInteractionEnabled = YES; + _bubbleImageView.layer.masksToBounds = YES; + _bubbleImageView.layer.cornerRadius = 7; + _bubbleImageView.userInteractionEnabled = YES; + } + return _bubbleImageView; +} + +- (XPNetImageYYLabel *)contentLabel { + if (!_contentLabel) { + _contentLabel = [[XPNetImageYYLabel alloc] init]; + _contentLabel.preferredMaxLayoutWidth = kRoomMessageMaxWidth - 24; + _contentLabel.numberOfLines = 0; + _contentLabel.userInteractionEnabled = YES; + } + return _contentLabel; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/View/YUMIChamberCommunicationIntelligencerRegard.h b/YuMi/Modules/YMRoom/View/MessageContainerView/View/YUMIChamberCommunicationIntelligencerRegard.h deleted file mode 100644 index f3550436..00000000 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/View/YUMIChamberCommunicationIntelligencerRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomMessageHeaderView.h -// YUMI -// -// Created by YUMI on 2021/10/26. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberCommunicationIntelligencerRegard : UIView -@property (nonatomic,strong) UIColor *intumescePrettify; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/View/YUMIChamberCommunicationIntelligencerRegard.m b/YuMi/Modules/YMRoom/View/MessageContainerView/View/YUMIChamberCommunicationIntelligencerRegard.m deleted file mode 100644 index 271ab2ed..00000000 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/View/YUMIChamberCommunicationIntelligencerRegard.m +++ /dev/null @@ -1,89 +0,0 @@ -// -// YMRoomMessageHeaderView.m -// YUMI -// -// Created by YUMI on 2021/10/26. -// - -#import "YUMIChamberCommunicationIntelligencerRegard.h" -#import -#import "ThemeColor+Room.h" -#import "XPRoomMessageConstant.h" -#import "YUMIMacroUitls.h" - -@interface YUMIChamberCommunicationIntelligencerRegard () -@property (nonatomic,strong) UIView *intumesceRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@end - -@implementation YUMIChamberCommunicationIntelligencerRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.intumesceRegard]; - [self addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - - NSString *title = @"平台严禁未成年人直播或打赏,倡导绿色互动,禁止宣传及发布政治、低俗、暴力、色情等违规违法内容,严禁违规交易和诱导欺诈用户,如有违规将对账号进行封禁,发现请及时举报。"; - self.titleLabel.text = title; - CGFloat height = [self acquireIntelligencerRegardAltitude:title] + kChamberCommunicationEssayVacuumAltitude *2; - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(kRoomMessageMaxWidth); - make.height.mas_equalTo(height); - }]; - - [self.intumesceRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.top.right.mas_equalTo(self); - make.bottom.mas_equalTo(self).offset(-10); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self).inset(10); - make.centerY.mas_equalTo(self.intumesceRegard); - }]; -} - -- (CGFloat)acquireIntelligencerRegardAltitude:(NSString *)title { - return [title boundingRectWithSize:CGSizeMake(kRoomMessageMaxWidth - 20, CGFLOAT_MAX) options:NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:kChamberCommunicationDefalutLetterform]} context:nil].size.height; -} - -#pragma mark - Getters And Setters -- (void)setIntumescePrettify:(UIColor *)intumescePrettify { - _intumescePrettify = intumescePrettify; - if (_intumescePrettify) { - _intumesceRegard.backgroundColor = _intumescePrettify; - } -} - -- (UIView *)intumesceRegard { - if (!_intumesceRegard) { - _intumesceRegard = [[UIView alloc] init]; - _intumesceRegard.backgroundColor = [DJDKMIMOMColor communictowardsionIntumescePrettify]; - _intumesceRegard.layer.masksToBounds = YES; - _intumesceRegard.layer.cornerRadius = kChamberCommunicationIntumesceMonopolizeRestrictions; - } - return _intumesceRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:kChamberCommunicationDefalutLetterform]; - _titleLabel.textColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - _titleLabel.numberOfLines = 0; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/View/YUMIChamberCommunicationTabulationRegardElement.h b/YuMi/Modules/YMRoom/View/MessageContainerView/View/YUMIChamberCommunicationTabulationRegardElement.h deleted file mode 100644 index bc8a4f2e..00000000 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/View/YUMIChamberCommunicationTabulationRegardElement.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// YMRoomMessageTableViewCell.h -// YUMI -// -// Created by YUMI on 2021/10/26. -// - -#import -#import "ChamberAbstractMatrix.h" -@class YUMINetIndicateYYDesignation, YUMICommunicationAbstractMatrix; - -NS_ASSUME_NONNULL_BEGIN - -@class YUMIChamberCommunicationAnatomiser, YYLabel, YUMIChamberCommunicationTabulationRegardElement; -@protocol FBCChamberCommunicationTabulationViweElementRepresendtation - -- (void)yUMIChamberCommunictowardsionTarbsultowardsionViweElementDidBetowardsDispossess:(YUMIChamberCommunicationTabulationRegardElement *)view; - -@end - -@interface YUMIChamberCommunicationTabulationRegardElement : UITableViewCell -@property (nonatomic,assign) ChamberGenre roomType; - -@property (nonatomic,strong) YUMICommunicationAbstractMatrix *communicationAbstract; - -@property (nonatomic,weak) id delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/View/YUMIChamberCommunicationTabulationRegardElement.m b/YuMi/Modules/YMRoom/View/MessageContainerView/View/YUMIChamberCommunicationTabulationRegardElement.m deleted file mode 100644 index 1d75f8da..00000000 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/View/YUMIChamberCommunicationTabulationRegardElement.m +++ /dev/null @@ -1,162 +0,0 @@ -// -// YMRoomMessageTableViewCell.m -// YUMI -// -// Created by YUMI on 2021/10/26. -// - -#import "YUMIChamberCommunicationTabulationRegardElement.h" -#import -#import "YUMINetIndicateYYDesignation.h" -#import "NetIndicateRegard.h" -#import "YUMIMacroUitls.h" -#import "ThemeColor+Room.h" -#import "UIImage+Utils.h" -#import "YUMICommunicationAbstractMatrix.h" - -#import "XPRoomMessageConstant.h" - -@interface YUMIChamberCommunicationTabulationRegardElement () -@property (nonatomic,strong) NetIndicateRegard *intumesceIndicateRegard; -@property (nonatomic,strong) YUMINetIndicateYYDesignation *satisfperformanceSequencignation; -@property (nonatomic,strong) UITapGestureRecognizer *tapDispossessRecognizer; -@end - -@implementation YUMIChamberCommunicationTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.selectionStyle = UITableViewCellSelectionStyleNone; - self.backgroundColor = [UIColor clearColor]; - [self.contentView addSubview:self.intumesceIndicateRegard]; - [self.contentView addSubview:self.satisfperformanceSequencignation]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTap)]; - tap.delegate = self; - self.tapDispossessRecognizer = tap; - [self.contentView addGestureRecognizer:self.tapDispossessRecognizer]; -} - -- (void)initChildLyRestrictions { - [self.intumesceIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.top.mas_equalTo(self.contentView); - make.bottom.mas_equalTo(self.contentView).offset(-6); - make.right.mas_equalTo(self.satisfperformanceSequencignation).offset(12); - }]; - - [self.satisfperformanceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intumesceIndicateRegard).offset(12); - make.bottom.mas_equalTo(self.intumesceIndicateRegard).offset(-10); - make.top.mas_equalTo(self.intumesceIndicateRegard).mas_offset(10); - }]; -} - -#pragma mark - tool -- (UIImage*)resizableIndictowardse:(UIImage *)image { - - CGFloat top = (image.size.height - 1) / 2; - CGFloat left = (image.size.width - 1) / 2; - CGFloat right = (image.size.width - 1) / 2; - CGFloat bottom = (image.size.height - 1) / 2; - return [image resizableImageWithCapInsets:UIEdgeInsetsMake(top, left, bottom, right) resizingMode:UIImageResizingModeStretch]; -} -#pragma mark - UIGestureRecognizerDelegate -- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { - if (gestureRecognizer == self.tapDispossessRecognizer) { - if (touch.view == self.satisfperformanceSequencignation || touch.view == self.intumesceIndicateRegard) { - return NO; - } - } - return YES; -} - -#pragma mark - Event Response -- (void)didTap { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberCommunictowardsionTarbsultowardsionViweElementDidBetowardsDispossess:)]) { - [self.delegate yUMIChamberCommunictowardsionTarbsultowardsionViweElementDidBetowardsDispossess:self]; - } -} - -#pragma mark - Getters And Setters -- (void)setCommunicationAbstract:(YUMICommunicationAbstractMatrix *)communicationAbstract { - _communicationAbstract = communicationAbstract; - if (_communicationAbstract) { - self.satisfperformanceSequencignation.attributedText = _communicationAbstract.content; - if (_communicationAbstract.bubbleImageUrl.length) { - [self.intumesceIndicateRegard chamberIndictowardseAboutWeebsite:_communicationAbstract.bubbleImageUrl completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) { - UIImage *image1 = [UIImage imageWithCGImage:image.CGImage scale:2.0 orientation:UIImageOrientationUp]; - self.intumesceIndicateRegard.image = [self resizableIndictowardse:image1]; - }]; - } else { - _intumesceIndicateRegard.image = [UIImage imageWithColor:[DJDKMIMOMColor communictowardsionIntumescePrettify]]; - } - [self.satisfperformanceSequencignation mas_updateConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intumesceIndicateRegard).offset(_communicationAbstract.contentLeftMargin); - make.top.mas_equalTo(self.intumesceIndicateRegard).offset(_communicationAbstract.contentTopMargin); - make.bottom.mas_equalTo(self.intumesceIndicateRegard).offset(-_communicationAbstract.contentBottomMargin); - }]; - - - _intumesceIndicateRegard.hidden = _communicationAbstract.isHiddenBubble; - } -} - -- (UIImage *)scaleToSize:(UIImage *)img { - - - CGFloat width = img.size.width * 0.5; - CGFloat height = img.size.height * 0.5; - UIGraphicsBeginImageContextWithOptions(CGSizeMake(width, height), NO, 1); - - [img drawInRect:CGRectMake(0, 0, width, height)]; - - UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext(); - - UIGraphicsEndImageContext(); - - return scaledImage; -} - -- (void)setRoomType:(ChamberGenre)roomType { - _roomType = roomType; - if (self.communicationAbstract.bubbleImageUrl.length > 0) { - return; - } - if (_roomType == ChamberGenre_MiniGame) { - _intumesceIndicateRegard.image = [UIImage imageWithColor:[UIColor colorWithWhite:1 alpha:0.2]]; - } else { - _intumesceIndicateRegard.image = [UIImage imageWithColor:[DJDKMIMOMColor communictowardsionIntumescePrettify]]; - } -} - - -- (NetIndicateRegard *)intumesceIndicateRegard { - if (!_intumesceIndicateRegard) { - _intumesceIndicateRegard = [[NetIndicateRegard alloc] init]; - _intumesceIndicateRegard.userInteractionEnabled = YES; - _intumesceIndicateRegard.layer.masksToBounds = YES; - _intumesceIndicateRegard.layer.cornerRadius = 7; - _intumesceIndicateRegard.userInteractionEnabled = YES; - } - return _intumesceIndicateRegard; -} - -- (YUMINetIndicateYYDesignation *)satisfperformanceSequencignation { - if (!_satisfperformanceSequencignation) { - _satisfperformanceSequencignation = [[YUMINetIndicateYYDesignation alloc] init]; - _satisfperformanceSequencignation.preferredMaxLayoutWidth = kRoomMessageMaxWidth - 24; - _satisfperformanceSequencignation.numberOfLines = 0; - _satisfperformanceSequencignation.userInteractionEnabled = YES; - } - return _satisfperformanceSequencignation; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/View/YUMINetIndicateYYDesignation.h b/YuMi/Modules/YMRoom/View/MessageContainerView/View/YUMINetIndicateYYDesignation.h deleted file mode 100644 index 53756aa1..00000000 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/View/YUMINetIndicateYYDesignation.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// NetImageYYLabel.h -// YUMI -// -// Created by zu on 2021/11/2. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - - -@interface YUMINetIndicateYYDesignation : YYLabel - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/View/YUMINetIndicateYYDesignation.m b/YuMi/Modules/YMRoom/View/MessageContainerView/View/YUMINetIndicateYYDesignation.m deleted file mode 100644 index cf6de89f..00000000 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/View/YUMINetIndicateYYDesignation.m +++ /dev/null @@ -1,53 +0,0 @@ -// -// NetImageYYLabel.m -// YUMI -// -// Created by zu on 2021/11/2. -// - -#import "YUMINetIndicateYYDesignation.h" -#import "NetIndicateRegard.h" -#import "XPRoomMessageConstant.h" -#import "NSArray+Safe.h" - -@implementation YUMINetIndicateYYDesignation - -- (void)setAttributedText:(NSAttributedString *)attributedText { - NSMutableAttributedString* attributedTextCopy = [attributedText mutableCopy]; - CGSize maxSize = CGSizeMake(kRoomMessageMaxWidth - 24, MAXFLOAT); - YYTextLayout * layout = [YYTextLayout layoutWithContainerSize:maxSize text:attributedText]; - - for (int i = 0; i< layout.attachments.count; i++) { - YYTextAttachment * attachment = [layout.attachments secureGroalTowardsIndictowardsrix1:i]; - if (!attachment || ![attachment.content isKindOfClass:[NetIndicateRegard class]]) continue; - NetIndicateRegard* imageView = attachment.content; - NSValue * value = [layout.attachmentRanges secureGroalTowardsIndictowardsrix1:i]; - NSRange range = value.rangeValue; - if (!imageView.imageUrl) continue; - - if (imageView.state == NetImageDeclareLoaded) { - attributedTextCopy = [self refurbishNetIndictowardseIdiosyncracy:imageView attributes:attributedTextCopy range:range]; - continue; - }else { - [imageView chamberIndictowardse:^(UIImage * _Nonnull image, NSURL * _Nonnull url) { - imageView.image = image; - [super setAttributedText:[self refurbishNetIndictowardseIdiosyncracy:imageView attributes:attributedTextCopy range:range]]; - }]; - } - } - [super setAttributedText:attributedTextCopy]; -} - -- (NSMutableAttributedString*)refurbishNetIndictowardseIdiosyncracy:(NetIndicateRegard*)imageView attributes:(NSMutableAttributedString*)attributes range:(NSRange)range{ - UIImage* image = imageView.image; - CGFloat scale = image.size.width / image.size.height; - - CGSize size = CGSizeMake(imageView.bounds.size.height * scale, imageView.bounds.size.height); - imageView.bounds = CGRectMake(0, 0, size.width, size.height); - - NSMutableAttributedString * replaceAttr = [NSMutableAttributedString yy_attachmentStringWithContent:imageView contentMode:UIViewContentModeScaleAspectFit attachmentSize:size alignToFont:[UIFont systemFontOfSize:15.0] alignment:YYTextVerticalAlignmentCenter]; - [attributes replaceCharactersInRange:range withAttributedString:replaceAttr]; - return attributes; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.h b/YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.h new file mode 100644 index 00000000..2976c3c6 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.h @@ -0,0 +1,19 @@ +// +// YMRoomMessageView.h +// YUMI +// +// Created by YUMI on 2021/10/11. +// + +#import +#import "RoomHostDelegate.h" +#import "RoomGuestDelegate.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomMessageContainerView : UIView + +- (instancetype)initWithDelegate:(id)delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.m b/YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.m new file mode 100644 index 00000000..c0cacfb3 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.m @@ -0,0 +1,958 @@ +// +// YMRoomMessageView.m +// YUMI +// +// Created by YUMI on 2021/10/11. +// + +#import "XPRoomMessageContainerView.h" +///Third +#import +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "XPRoomMessageConstant.h" +#import "XPRoomMessageParser.h" +#import "AccountInfoStorage.h" +#import "XPRoomMiniManager.h" +#import "PLTimeUtil.h" +#import "ClientConfig.h" +#import +#import "ThemeColor+Room.h" +#import "NSArray+Safe.h" +///Model +#import "RoomInfoModel.h" +#import "AttachmentModel.h" +#import "RoomFaceSendInfoModel.h" +#import "XPMessageRemoteExtModel.h" +#import "RoomPKChooseUserModel.h" +#import "CandyTreeResultModel.h" +#import "RoomSailingPrizeModel.h" +#import "UserInfoModel.h" +#import "XPMessageInfoModel.h" +///View +#import "XPRoomMessageTableViewCell.h" +#import "XPRoomMessageHeaderView.h" +#import "View/XPRoomMessageHeaderView.h" + +NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey"; + +@interface XPRoomMessageContainerView () +///房间的代理 +@property (nonatomic,weak) id hostDelegate; + +///列表 +@property (nonatomic,strong) UITableView *messageTableView; +///头部 +@property (nonatomic,strong) XPRoomMessageHeaderView *headerView; +///底部有新的消息 +@property (nonatomic,strong) UIButton *messageTipsBtn; +///有人at你 +@property (nonatomic, strong) UIButton *atTipBtn; +///是否处于正在爬楼 +@property (nonatomic,assign) BOOL isPending; +///是否是最小化进房的 +@property (nonatomic,assign) BOOL isMiniEnter; +///数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +///临时存放消息的数组 +@property (nonatomic,strong) NSMutableArray *incomingMessages; +///有多少人at我 +@property (nonatomic, assign) NSInteger atCount; +///@我的消息位置集合 +@property (nonatomic, strong) NSMutableArray *locationArray; +///messageView 持有这个工具类 进行数据的分发操作 TODO: 有需要在改 +@property (nonatomic,strong) XPRoomMessageParser *messageParser; +///是否是大的 只有在小游戏的时候有用 +@property (nonatomic,assign) BOOL isLarge; +@end + + +@implementation XPRoomMessageContainerView + +- (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +- (instancetype)initWithDelegate:(id)delegate { + self = [super init]; + if (self) { + self.hostDelegate = delegate; + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Response +- (void)messageTipsBtnAction:(UIButton *)sender { + self.isPending = NO; + self.messageTipsBtn.hidden = YES; + [self appendAndScrollToBottom]; +} + +- (void)atTipsBtnAction:(UIButton *)sender { + self.isPending = YES; + [self appendAndScrollToAtUser]; +} + +///追加数据源 +- (void)appendAndScrollToAtUser { + if (self.incomingMessages.count < 1) { + NSInteger rows = self.datasource.count; + if (!self.locationArray.count) { + [self.messageTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:(rows-1) inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:YES]; + self.messageTipsBtn.hidden = YES; + self.isPending = NO; + self.atCount = 0; + self.atTipBtn.hidden = YES; + return; + } + int index = [self.locationArray[0] intValue]; + NSIndexPath *indexPath = [NSIndexPath indexPathForRow:index inSection:0]; + if (rows > indexPath.row) { + [self.messageTableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES]; + if (rows == indexPath.row + 1) { + self.messageTipsBtn.hidden = YES; + self.isPending = NO; + } + } else { + [self.messageTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:(rows-1) inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:YES]; + //滚动到底部时隐藏@提示 + self.messageTipsBtn.hidden = YES; + } + if (self.locationArray.count) { + [self.locationArray removeObjectAtIndex:0]; + self.atCount -= 1; + [self.atTipBtn setTitle:[NSString stringWithFormat:YMLocalizedString(@"XPRoomMessageContainerView0"), (unsigned long)self.locationArray.count] forState:UIControlStateNormal]; + if (self.locationArray.count == 0) { + self.atTipBtn.hidden = YES; + } + } else { + self.atTipBtn.hidden = YES; + } + } else { + if (self.datasource.count > kRoomMessageMaxLength) { + NSIndexSet *set = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, kRoomMessageMaxLength/2)]; + NSArray *needRemoveMsgArray = [self.datasource objectsAtIndexes:set]; + [self.datasource removeObjectsInArray:needRemoveMsgArray]; + NSMutableIndexSet *indexSet = [NSMutableIndexSet indexSet]; + for (int i = 0; i indexPath.row) { + [self.messageTableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES]; + if (rows == indexPath.row + 1) { + self.messageTipsBtn.hidden = YES; + self.isPending = NO; + } + } else { + [self.messageTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:(rows-1) inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:YES]; + //滚动到底部时隐藏@提示 + self.messageTipsBtn.hidden = YES; + } + if (self.locationArray.count) { + [self.locationArray removeObjectAtIndex:0]; + self.atCount -= 1; + [self.atTipBtn setTitle:[NSString stringWithFormat:YMLocalizedString(@"XPRoomMessageContainerView1"), (unsigned long)self.locationArray.count] forState:UIControlStateNormal]; + if (self.locationArray.count == 0) { + self.atTipBtn.hidden = YES; + } + } else { + self.atTipBtn.hidden = YES; + } + } +} + +#pragma mark - @我 +///查找有多少人@我 +- (void)findAtMeNumber { + if (self.incomingMessages.count) { + NIMMessage *message = self.incomingMessages.lastObject; + id nickNameNifo = message.remoteExt[@"atUids"]; + if ([nickNameNifo isKindOfClass:[NSArray class]]) { + for (NSString *nick in nickNameNifo) { + if ([nick isEqualToString:[AccountInfoStorage instance].getUid]) { + self.atCount += 1; + } + } + } + if (self.atCount > 0) { + self.atTipBtn.hidden = NO; + [self.atTipBtn setTitle:[NSString stringWithFormat:YMLocalizedString(@"XPRoomMessageContainerView2"), self.atCount] forState:UIControlStateNormal]; + } else { + self.atTipBtn.hidden = YES; + } + } +} + +#pragma mark - Private Method +- (void)initSubViews { + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(addCustomMessage:) name:@"message" object:nil]; + [self addSubview:self.messageTableView]; + [self addSubview:self.messageTipsBtn]; + [self addSubview:self.atTipBtn]; + if ([ClientConfig shareConfig].canOpen) { + self.messageTableView.tableHeaderView = self.headerView; + } +} + +- (void)initSubViewConstraints { + [self.messageTableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self).offset(15); + make.bottom.right.mas_equalTo(self); + make.top.mas_equalTo(self); + }]; + + [self.messageTipsBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(100); + make.height.mas_equalTo(30); + make.bottom.mas_equalTo(self.mas_bottom).offset(-5); + make.left.mas_equalTo(self); + }]; + [self.atTipBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(100); + make.height.mas_equalTo(30); + make.bottom.mas_equalTo(self.mas_bottom).offset(-5); + make.left.mas_equalTo(self); + }]; +} + +///是否是当前房间 +- (BOOL)isCurrentRoom:(NSString *)sessionId { + if ([sessionId isEqualToString:[NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.roomId]]) { + return YES; + } + return NO; +} + +///判断是否隐身进房 +- (BOOL)handleHideEnter:(NIMMessage *)message { + NIMMessageChatroomExtension * messageExt = (NIMMessageChatroomExtension *)message.messageExt; + NSDictionary * dic = [(NSDictionary *)messageExt.roomExt.toJSONObject objectForKey:message.from]; + XPMessageRemoteExtModel * extModel = [XPMessageRemoteExtModel modelWithJSON:dic]; + return (extModel.enterHide || extModel.platformRole == 1); +} + +#pragma mark - 添加数据并且做自动滚动 +///添加信息 +- (void)addRoomMessage:(NIMMessage *)message { + [self.incomingMessages addObject:message]; + if (!self.isMiniEnter) {/// 最小化进房的话 不需要重新保存 + if (self.hostDelegate.getRoomInfo.isCloseScreen) { + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) { + AttachmentModel *attachment = (AttachmentModel *)obj.attachment; + if (attachment.first == CustomMessageType_Update_RoomInfo && attachment.second == Custom_Message_Sub_Update_RoomInfo_MessageState){ + [[XPRoomMiniManager shareManager] saveRoomMessage:message]; + } + } + } else { + [[XPRoomMiniManager shareManager] saveRoomMessage:message]; + } + } + if (self.isPending) { + self.messageTipsBtn.hidden = NO; + [self findAtMeNumber]; + } else { + [self appendAndScrollToBottom]; + } +} + +///追加数据源 +- (void)appendAndScrollToBottom { + if (self.incomingMessages.count < 1) { + ///滚动到底部(如果有人at自己后,income消息在点击at按钮处做了拼接处理,因为点击at按钮跳转到的是对应的at人消息,如果后面有其他消息时,点有更多按钮时需要滚动到最底部) + [self scrollToBottom:YES]; + return; + } + + if (self.datasource.count > kRoomMessageMaxLength) { + NSIndexSet *set = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, kRoomMessageMaxLength/2)]; + NSArray *needRemoveMsgArray = [self.datasource objectsAtIndexes:set]; + [self.datasource removeObjectsInArray:needRemoveMsgArray]; + } + + // 执行插入 + NSMutableArray *indexPaths = [NSMutableArray array]; + for (NIMMessage *item in self.incomingMessages) { + [self.datasource addObject:[self.messageParser parseMessageAttribute:item]]; + [indexPaths addObject:[NSIndexPath indexPathForRow:self.datasource.count - 1 inSection:0]]; + } + [self.incomingMessages removeAllObjects]; + [self.messageTableView reloadData]; + + //执行插入动画并滚动 + [self scrollToBottom:YES]; +} + +///执行插入动画并滚动 +- (void)scrollToBottom:(BOOL)animated { + NSInteger s = [self.messageTableView numberOfSections]; //有多少组 + if (s<1) return; + NSInteger r = [self.messageTableView numberOfRowsInSection:s-1]; //最后一组行 + if (r<1) return; + NSIndexPath *ip = [NSIndexPath indexPathForRow:r-1 inSection:s-1]; //取最后一行数据 + [self.messageTableView scrollToRowAtIndexPath:ip atScrollPosition:UITableViewScrollPositionBottom animated:animated]; //滚动到最后一行 + self.atCount = 0; + self.atTipBtn.hidden = YES; + [self.locationArray removeAllObjects]; +} + +///自定义消息 是否可以加到 公屏 需要自己维护 +- (BOOL)isCanDisplayMessage:(NIMMessage *)message { + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) { + AttachmentModel *attachment = (AttachmentModel *)obj.attachment; + if (attachment.first == CustomMessageType_Face && attachment.second == Custom_Message_Sub_Face_Send) { + if ([attachment.data[@"data"] isKindOfClass:[NSArray class]]) { + NSArray * array = [RoomFaceSendInfoModel modelsWithArray:attachment.data[@"data"]]; + for (int i = 0; i< array.count; i++) { + RoomFaceSendInfoModel * sendInfo = [array safeObjectAtIndex1:i]; + if (sendInfo.resultIndexes.count <=0) { + return NO; + } + } + } + }else if (attachment.first == CustomMessageType_Room_PK && attachment.second == Custom_Message_Sub_Room_PK_Manager_Up_Mic) { + if (attachment.data && [attachment.data allKeys].count > 0) { + for (NSDictionary * dic in [attachment.data allValues]) { + RoomPKChooseUserModel * userModel = [RoomPKChooseUserModel modelWithDictionary:dic]; + if (userModel.groupType == GroupType_Red || userModel.groupType == GroupType_Blue) { + return YES; + } + } + } + return NO; + } else if(attachment.first == CustomMessageType_Room_Sailing && (attachment.second == Custom_Message_Sub_Sailing_AllRoom_Notify || attachment.second == Custom_Message_Sub_Sailing_InRoom_NeedAllMicSend)) { + RoomSailingPrizeModel * prizeModel = [RoomSailingPrizeModel modelWithDictionary:attachment.data]; + if (self.hostDelegate.getUserInfo.userLevelVo.experLevelSeq > prizeModel.userLevelLimit) { + return YES; + } + } else if(attachment.first == CustomMessageType_Graffiti_Star_Kitchen){ + return YES; + } + return [[[self supportMessageDic] objectForKey:@(attachment.first)] containsObject:@(attachment.second)]; + } + return NO; +} + +- (NSDictionary *)supportMessageDic { + if (![ClientConfig shareConfig].canOpen) { + return @{}; + } + return @{ + @(CustomMessageType_AllMicroSend): + [NSSet setWithObjects: + @(Custom_Message_Sub_AllMicroSend), + @(Custom_Message_Sub_AllMicroLuckySend), + @(Custom_Message_Sub_AllBatchSend), + @(Custom_Message_Sub_AllBatchMicroLuckySend), + nil], + @(CustomMessageType_Gift): + [NSSet setWithObjects: + @(Custom_Message_Sub_Gift_Send), + @(Custom_Message_Sub_Gift_LuckySend), + nil], + @(CustomMessageType_Room_Tip): + [NSSet setWithObjects: + @(Custom_Message_Sub_Room_Tip_ShareRoom), + @(Custom_Message_Sub_Room_Tip_Attention_Owner), + nil], + @(CustomMessageType_Kick_User): + [NSSet setWithObjects: + @(Custom_Message_Sub_Kick_BeKicked), + @(Custom_Message_Sub_Kick_BlackList), + nil], + @(CustomMessageType_Queue): + [NSSet setWithObjects: + @(Custom_Message_Sub_Queue_Kick), + nil], + @(CustomMessageType_Look_Love): + [NSSet setWithObjects: + @(Custom_Message_Sub_Look_Love_Me), + @(Custom_Message_Sub_Look_Love_InRoom), + @(Custom_Message_Sub_Look_Love_AllRoom), + @(Custom_Message_Sub_Look_Love_AllRoom_Notify), + @(Custom_Message_Sub_Look_Love_InRoom_NeedAllMicSend), + nil], + @(CustomMessageType_Arrange_Mic): + [NSSet setWithObjects: + @(Custom_Message_Sub_Arrange_Mic_Mode_Open), + @(Custom_Message_Sub_Arrange_Mic_Mode_Close), + @(Custom_Message_Sub_Arrange_Mic_Free_Mic_Open), + @(Custom_Message_Sub_Arrange_Mic_Free_Mic_Close), + nil], + @(CustomMessageType_Update_RoomInfo): + [NSSet setWithObjects: + @(Custom_Message_Sub_Update_RoomInfo_MessageState), + @(Custom_Message_Sub_Update_RoomInfo_AnimateEffect), + nil], + @(CustomMessageType_Collection_Room): + [NSSet setWithObjects: + @(Custom_Message_Sub_Collect_Room_Tips), + nil], + @(CustomMessageType_RoomPlay_Dating): + [NSSet setWithObjects: + @(Custom_Message_Sub_Room_Play_Dating_Pick_Heart), + @(Custom_Message_Sub_Room_Play_Dating_Result_Mutual), + @(Custom_Message_Sub_Room_Play_Dating_Result_Not_Mutual), + nil], + @(CustomMessageType_Noble_VIP): + [NSSet setWithObjects: + @(Custom_Message_Sub_Room_Open_Noble_VIP), + @(Custom_Message_Sub_Room_Noble_LevelUp), + @(Custom_Message_Sub_AllRoom_Noble_LevelUp_Suspend), + nil], + @(CustomMessageType_Face): + [NSSet setWithObjects: + @(Custom_Message_Sub_Face_Send), + nil], + @(CustomMessageType_Anchor_FansTeam): + [NSSet setWithObjects: + @(Custom_Message_Sub_FansTeam_Open_Success), + @(Custom_Message_Sub_FansTeam_Open_Fail), + @(Custom_Message_Sub_FansTeam_Join_Success), + @(Custom_Message_Sub_FansTeam_Out_Success), + nil], + @(CustomMessageType_Hall_Super_Admin): + [NSSet setWithObjects: + @(Custom_Message_Sub_Hall_Super_Admin_Kick_Manager_Out_Room), + nil], + @(CustomMessageType_Room_PK): + [NSSet setWithObjects: + @(Custom_Message_Sub_Room_PK_Manager_Up_Mic), + @(Custom_Message_Sub_Room_PK_Mode_Close), + @(Custom_Message_Sub_Room_PK_Result), + @(Custom_Message_Sub_Room_PK_Mode_Open), + @(Custom_Message_Sub_Room_PK_Start), + @(Custom_Message_Sub_Room_PK_Re_Start), + nil], + @(CustomMessageType_LuckyBag): + [NSSet setWithObjects: + @(Custom_Message_Sub_Room_Gift_LuckBag_Server), + nil], + @(CustomMessageType_Gift_Compound): + [NSSet setWithObjects:@(Custom_Message_Sub_Gift_Compound), + nil], + @(CustomMessageType_Room_Sailing): + [NSSet setWithObjects: + @(Custom_Message_Sub_Sailing_Me), + @(Custom_Message_Sub_Sailing_InRoom), + @(Custom_Message_Sub_Sailing_AllRoom), + @(Custom_Message_Sub_Sailing_AllRoom_Notify), + @(Custom_Message_Sub_Sailing_InRoom_NeedAllMicSend), + nil], + @(CustomMessageType_RedPacket): + [NSSet setWithObjects: + @(Custom_Message_Sub_OpenRedPacketSuccess), + nil], + + }; +} + +- (void)addCustomMessage:(NSNotification *)notification { + self.isMiniEnter = NO; + if (self.hostDelegate.getRoomInfo.isCloseScreen) {return;} + NIMMessage * message = notification.object; + [self addRoomMessage:message]; +} + +///用户进入房间显示 房间话题 +- (void)createUserEnterRoomAddRoomtopicMessage { + if ([ClientConfig shareConfig].configInfo.appStoreAuditNoticeVersion == YES || ![ClientConfig shareConfig].canOpen) { + return; + } + RoomInfoModel * roomInfo = self.hostDelegate.getRoomInfo; + if (roomInfo.uid == [AccountInfoStorage instance].getUid.integerValue) {return;} + NSString * key = [NSString stringWithFormat:@"%@_%@_%ld", kRoomShowTopicKey, [AccountInfoStorage instance].getUid, roomInfo.uid]; + NSDate * oldDate = [[NSUserDefaults standardUserDefaults] valueForKey:key]; + NSDate * date = [NSDate date]; + if (roomInfo.introduction.length > 0) { + if (oldDate) { + NSDateComponents *compons = [PLTimeUtil compareTwoDate:date secondDate:[NSDate date]]; + if (ABS(compons.year) > 0 || ABS(compons.month) > 0 || ABS(compons.day) > 0) { + NIMMessage * message = [[NIMMessage alloc] init]; + NSString * content = [NSString stringWithFormat:@"[房间公告] \n %@", roomInfo.introduction]; + message.text = content; + message.localExt = @{@"isRoomTopic": @(NO)}; + [message setValue:@(NIMMessageTypeTip) forKey:@"messageType"]; + [message setValue:[NIMSession session:[NSString stringWithFormat:@"%ld", roomInfo.roomId] type:NIMSessionTypeChatroom] forKey:@"session"]; + [self addRoomMessage:message]; + + [[NSUserDefaults standardUserDefaults] setValue:@(YES) forKey:key]; + [[NSUserDefaults standardUserDefaults] synchronize]; + } + } else { + NIMMessage * message = [[NIMMessage alloc] init]; + NSString * content = [NSString stringWithFormat:@"[房间公告] \n %@", roomInfo.introduction]; + message.text = content; + message.localExt = @{@"isRoomTopic": @(NO)}; + [message setValue:@(NIMMessageTypeTip) forKey:@"messageType"]; + [message setValue:[NIMSession session:[NSString stringWithFormat:@"%ld", roomInfo.roomId] type:NIMSessionTypeChatroom] forKey:@"session"]; + [self addRoomMessage:message]; + + [[NSUserDefaults standardUserDefaults] setValue:@(YES) forKey:key]; + [[NSUserDefaults standardUserDefaults] synchronize]; + } + } + + NIMMessage * message = [[NIMMessage alloc] init]; + message.text = YMLocalizedString(@"XPRoomMessageContainerView5"); + message.localExt = @{@"isRoomTopic": @(YES)}; + [message setValue:@(NIMMessageTypeTip) forKey:@"messageType"]; + [message setValue:[NIMSession session:[NSString stringWithFormat:@"%ld", roomInfo.roomId] type:NIMSessionTypeChatroom] forKey:@"session"]; + [self addRoomMessage:message]; +} + +#pragma mark - RoomGuestDelegate +- (void)handleNIMCustomMessage:(NIMMessage *)message { + self.isMiniEnter = NO; + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) { + AttachmentModel *attachment = (AttachmentModel *)obj.attachment; + if (attachment.first == CustomMessageType_Update_RoomInfo && attachment.second == Custom_Message_Sub_Update_RoomInfo_MessageState) { + [self.datasource removeAllObjects]; + [self.incomingMessages removeAllObjects]; + [self.locationArray removeAllObjects]; + self.atCount = 0; + self.atTipBtn.hidden = YES; + self.messageTipsBtn.hidden = YES; + self.isPending = NO; + [[XPRoomMiniManager shareManager] resetLocalMessage]; + [self addRoomMessage:message]; + return; + } else if (attachment.first == CustomMessageType_Update_RoomInfo && attachment.second == Custom_Message_Sub_Update_RoomInfo_CleanScreen) { + [self.datasource removeAllObjects]; + [self.incomingMessages removeAllObjects]; + [self.locationArray removeAllObjects]; + self.atCount = 0; + self.atTipBtn.hidden = YES; + self.messageTipsBtn.hidden = YES; + self.isPending = NO; + [[XPRoomMiniManager shareManager] resetLocalMessage]; + [self addRoomMessage:message]; + return; + } else if(attachment.first == CustomMessageType_Candy_Tree && attachment.second == Custom_Message_Sub_Candy_Tree_Me) { + CandyTreeGiftInfoModel * model = [CandyTreeGiftInfoModel modelWithDictionary:attachment.data]; + if (model.uid.integerValue != [AccountInfoStorage instance].getUid.integerValue) { + return; + } + } else if (attachment.first == CustomMessageType_Kick_User) { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * roomId = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.roomId]; + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = roomId; + request.userIds = @[uid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + if (error == nil) { + NIMChatroomMember * member = members.firstObject; + BOOL isCreator = member.type == NIMChatroomMemberTypeCreator; + BOOL isManager = member.type == NIMChatroomMemberTypeManager; + if (isCreator || isManager) { + [self addRoomMessage:message]; + } + } + }]; + return; + } + } + if (self.hostDelegate.getRoomInfo.isCloseScreen) { + return; + } + if ([self isCanDisplayMessage:message]) { + [self addRoomMessage:message]; + } +} + +- (void)handleNIMNotificationMessage:(NIMMessage *)message { + self.isMiniEnter = NO; + NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; + NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; + RoomInfoModel * roomInfo = self.hostDelegate.getRoomInfo; + if (content.eventType == NIMChatroomEventTypeEnter) { + if (roomInfo.isCloseScreen) { + AttachmentModel *attachement = [[AttachmentModel alloc]init]; + attachement.first = CustomMessageType_Update_RoomInfo; + attachement.second = Custom_Message_Sub_Update_RoomInfo_MessageState; + attachement.data = @{@"roomInfo":self.hostDelegate.getRoomInfo.model2dictionary}; + NIMMessage *message = [[NIMMessage alloc]init]; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachement; + message.messageObject = object; + [self addRoomMessage:message]; + return; + } else { + NIMChatroomNotificationMember *member = content.targets[0]; + if (member.userId.integerValue == [AccountInfoStorage instance].getUid.integerValue) { + ///自己进房成功后拉取历史消息 + [self handleFetchHistoryMessage:message]; + } else { + BOOL hideEnter = [self handleHideEnter:message]; + if (!hideEnter) { + ///插入进房消息及房间公告提示 + [self addRoomMessage:message]; + } + } + } + } else if(content.eventType == NIMChatroomEventTypeInfoUpdated) { + if (roomInfo.isCloseScreen) {return;} + if (roomInfo.datingState == RoomDatingStateChangeType_Open) { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = roomId; + request.userIds = @[uid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + if (error == nil) { + NIMChatroomMember * member = members.firstObject; + BOOL isCreator = member.type == NIMChatroomMemberTypeCreator; + BOOL isManager = member.type == NIMChatroomMemberTypeManager; + if (isCreator || isManager) { + [self addRoomMessage:message]; + } + } + }]; + } + } +} + +- (void)handleFetchHistoryMessage:(NIMMessage *)message { + RoomInfoModel * roomInfo = self.hostDelegate.getRoomInfo; + NSString *roomId = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.roomId]; + NIMHistoryMessageSearchOption *option = [[NIMHistoryMessageSearchOption alloc] init]; + option.limit = [ClientConfig shareConfig].configInfo.roomMessageCount; + option.startTime = self.hostDelegate.getRoomInfo.clearScreenTime / 1000.0; + option.order = NIMMessageSearchOrderAsc; + option.messageTypes = @[@(NIMMessageTypeText)]; + [[NIMSDK sharedSDK].chatroomManager fetchMessageHistory:roomId option:option result:^(NSError * _Nullable error, NSArray * _Nullable messages) { + if (messages.count) { + //如果拉取的数量等于请求的数量,说明这个时间点以后的消息数量大于等于需要拉取的数量,直接拉取最新的50条 + if (messages.count == [ClientConfig shareConfig].configInfo.roomMessageCount) { + NIMHistoryMessageSearchOption *option = [[NIMHistoryMessageSearchOption alloc] init]; + option.limit = [ClientConfig shareConfig].configInfo.roomMessageCount; + option.order = NIMMessageSearchOrderDesc; + option.messageTypes = @[@(NIMMessageTypeText)]; + [[NIMSDK sharedSDK].chatroomManager fetchMessageHistory:roomId option:option result:^(NSError * _Nullable error, NSArray * _Nullable messages) { + if (self.datasource.count > kRoomMessageMaxLength) { + NSIndexSet *set = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, kRoomMessageMaxLength/2)]; + NSArray *needRemoveMsgArray = [self.datasource objectsAtIndexes:set]; + [self.datasource removeObjectsInArray:needRemoveMsgArray]; + } + // 执行插入 + for (NIMMessage *item in messages.reverseObjectEnumerator) { + [self.datasource addObject:[self.messageParser parseMessageAttribute:item]]; + if (!self.isMiniEnter) {/// 最小化进房的话 不需要重新保存 + if (self.hostDelegate.getRoomInfo.isCloseScreen) { + NIMCustomObject *obj = (NIMCustomObject *)item.messageObject; + if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) { + AttachmentModel *attachment = (AttachmentModel *)obj.attachment; + if (attachment.first == CustomMessageType_Update_RoomInfo && attachment.second == Custom_Message_Sub_Update_RoomInfo_MessageState){ + [[XPRoomMiniManager shareManager] saveRoomMessage:item]; + } + } + } else { + [[XPRoomMiniManager shareManager] saveRoomMessage:item]; + } + } + } + [self.messageTableView reloadData]; + //执行插入动画并滚动 + [self scrollToBottom:YES]; + BOOL hideEnter = [self handleHideEnter:message]; + if (!hideEnter) { + ///插入进房消息及房间公告提示 + [self addRoomMessage:message]; + } + if (!roomInfo.hasAnimationEffect) { + [self roomInfoNoGiftAnimationMessage:message]; + } + [self createUserEnterRoomAddRoomtopicMessage]; + }]; + return; + } + if (self.datasource.count > kRoomMessageMaxLength) { + NSIndexSet *set = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, kRoomMessageMaxLength/2)]; + NSArray *needRemoveMsgArray = [self.datasource objectsAtIndexes:set]; + [self.datasource removeObjectsInArray:needRemoveMsgArray]; + } + // 执行插入 + for (NIMMessage *item in messages) { + [self.datasource addObject:[self.messageParser parseMessageAttribute:item]]; + if (!self.isMiniEnter) {/// 最小化进房的话 不需要重新保存 + if (self.hostDelegate.getRoomInfo.isCloseScreen) { + NIMCustomObject *obj = (NIMCustomObject *)item.messageObject; + if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) { + AttachmentModel *attachment = (AttachmentModel *)obj.attachment; + if (attachment.first == CustomMessageType_Update_RoomInfo && attachment.second == Custom_Message_Sub_Update_RoomInfo_MessageState){ + [[XPRoomMiniManager shareManager] saveRoomMessage:item]; + } + } + } else { + [[XPRoomMiniManager shareManager] saveRoomMessage:item]; + } + } + } + [self.messageTableView reloadData]; + //执行插入动画并滚动 + [self scrollToBottom:YES]; + } + BOOL hideEnter = [self handleHideEnter:message]; + if (!hideEnter) { + ///插入进房消息及房间公告提示 + [self addRoomMessage:message]; + } + if (!roomInfo.hasAnimationEffect) { + [self roomInfoNoGiftAnimationMessage:message]; + } + [self createUserEnterRoomAddRoomtopicMessage]; + }]; +} + +- (void)handleNIMTextMessage:(NIMMessage *)message { + self.isMiniEnter = NO; + if (self.hostDelegate.getRoomInfo.isCloseScreen) {return;} + [self addRoomMessage:message]; +} + +- (void)roomInfoNoGiftAnimationMessage:(NIMMessage *)message { + self.isMiniEnter = NO; + AttachmentModel *attachement = [[AttachmentModel alloc]init]; + attachement.first = CustomMessageType_Update_RoomInfo; + attachement.second = Custom_Message_Sub_Update_RoomInfo_AnimateEffect; + NIMMessage *tempMessage = [[NIMMessage alloc]init]; + NIMCustomObject *customObject = [[NIMCustomObject alloc]init]; + customObject.attachment = attachement; + tempMessage.messageObject = customObject; + [self addRoomMessage:tempMessage]; +} + +- (void)onRoomMiniEntered { + self.isMiniEnter = YES; + ///最小化进房 不需要请求任何接口 但是如果不加延迟的话 无法滚动到底部 原因还不知道 + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + NSArray * temArray = [XPRoomMiniManager shareManager].getLocalCurrentRoomMessage; + // 执行插入 + for (NIMMessage *item in temArray) { + [self.datasource addObject:[self.messageParser parseMessageAttribute:item]]; + } + [self.messageTableView reloadData]; + //执行插入动画并滚动 + [self scrollToBottom:YES]; + }); +} + +- (void)onRoomEntered { + [[XPRoomMiniManager shareManager] resetLocalMessage]; + self.headerView.bubbleColor = self.hostDelegate.getRoomInfo.type == RoomType_MiniGame ? [UIColor colorWithWhite:1 alpha:0.2] : [DJDKMIMOMColor messageBubbleColor]; +} + +- (void)onRoomUpdate { + ///改变公屏的背景样式 + if (self.hostDelegate.getRoomInfo.hadChangeRoomType) { + self.headerView.bubbleColor = self.hostDelegate.getRoomInfo.type == RoomType_MiniGame ? [UIColor colorWithWhite:1 alpha:0.2] : [DJDKMIMOMColor messageBubbleColor]; + [self.messageTableView reloadData]; + } +} + +#pragma mark - ScrollViewDelegate +- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { + // 手动拖拽开始 + self.isPending = YES; +} +- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { + // 手动拖拽结束(decelerate:0松手时静止;1松手时还在运动,会触发DidEndDecelerating方法) + if (!decelerate) { + [self finishDraggingWith:scrollView]; + } +} +- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { + // 静止后触发(手动) + [self finishDraggingWith:scrollView]; +} +- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView { + if (!self.isPending && self.incomingMessages.count <= 0) { + [self scrollToBottom:YES]; + } +} + +/** + 手动拖拽动作彻底完成(减速到零) + */ +- (void)finishDraggingWith:(UIScrollView *)scrollView { + CGFloat contentSizeH = scrollView.contentSize.height; + CGFloat contentOffsetY = scrollView.contentOffset.y; + CGFloat sizeH = scrollView.frame.size.height; + self.isPending = contentSizeH - contentOffsetY - sizeH > 20.0; + if (!self.isPending) { + self.messageTipsBtn.hidden = YES; + self.atTipBtn.hidden = YES; + self.atCount = 0; + [self.locationArray removeAllObjects]; + if (self.incomingMessages.count > 0) { + [self appendAndScrollToBottom]; + } + } + [[NSNotificationCenter defaultCenter] postNotificationName:@"roomMessageTabelViewStopScroll" object:nil]; +} + + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + XPMessageInfoModel* mesageInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + return mesageInfo.rowHeight; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + XPRoomMessageTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPRoomMessageTableViewCell class])]; + cell.delegate = self; + XPMessageInfoModel* attr = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.messageInfo = attr; + cell.roomType = self.hostDelegate.getRoomInfo.type; + return cell; +} + + +#pragma mark - XPRoomMessageTableViewCellDelegate +- (void)xPRoomMessageTableViewCellDidTapEmpty:(XPRoomMessageTableViewCell *)view { + if (self.hostDelegate.getRoomInfo.type == RoomType_MiniGame) { + self.isLarge = !self.isLarge; + CGFloat height = self.isLarge ? 200 : 80; + [self mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(height); + }]; + } +} + +#pragma mark - Getters And Setters +- (UITableView *)messageTableView { + if (!_messageTableView) { + _messageTableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _messageTableView.delegate = self; + _messageTableView.dataSource = self; + _messageTableView.tableFooterView = [UIView new]; + _messageTableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _messageTableView.backgroundColor = [UIColor clearColor]; + _messageTableView.showsVerticalScrollIndicator = NO; + _messageTableView.tag = 666; + if (@available(iOS 11.0, *)) { + _messageTableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_messageTableView registerClass:[XPRoomMessageTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPRoomMessageTableViewCell class])]; + } + return _messageTableView; +} + +- (XPRoomMessageHeaderView *)headerView { + if (!_headerView) { + _headerView = [[XPRoomMessageHeaderView alloc] init]; + } + return _headerView; +} + +- (UIButton *)messageTipsBtn { + if (!_messageTipsBtn) { + _messageTipsBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_messageTipsBtn setTitle:YMLocalizedString(@"XPRoomMessageContainerView6") forState:UIControlStateNormal]; + [_messageTipsBtn setTitleColor:[DJDKMIMOMColor appMainColor] forState:UIControlStateNormal]; + _messageTipsBtn.layer.cornerRadius = 15.0; + _messageTipsBtn.layer.masksToBounds = YES; + _messageTipsBtn.titleLabel.font = [UIFont systemFontOfSize:12.0]; + _messageTipsBtn.backgroundColor = [UIColor whiteColor]; + [_messageTipsBtn addTarget:self action:@selector(messageTipsBtnAction:) forControlEvents:UIControlEventTouchUpInside]; + _messageTipsBtn.hidden = YES; + } + return _messageTipsBtn; +} + +- (UIButton *)atTipBtn { + if (!_atTipBtn) { + _atTipBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_atTipBtn setTitle:YMLocalizedString(@"XPRoomMessageContainerView7") forState:UIControlStateNormal]; + [_atTipBtn setTitleColor:[DJDKMIMOMColor appMainColor] forState:UIControlStateNormal]; + _atTipBtn.layer.cornerRadius = 15.0; + _atTipBtn.layer.masksToBounds = YES; + _atTipBtn.titleLabel.font = [UIFont systemFontOfSize:12.0]; + _atTipBtn.backgroundColor = [UIColor whiteColor]; + [_atTipBtn addTarget:self action:@selector(atTipsBtnAction:) forControlEvents:UIControlEventTouchUpInside]; + _atTipBtn.hidden = YES; + } + return _atTipBtn; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + +- (NSMutableArray *)incomingMessages { + if (!_incomingMessages) { + _incomingMessages = [NSMutableArray array]; + } + return _incomingMessages; +} + +- (NSMutableArray *)locationArray { + if (!_locationArray) { + _locationArray = [NSMutableArray array]; + } + return _locationArray; +} + +- (XPRoomMessageParser *)messageParser { + if (!_messageParser) { + _messageParser = [[XPRoomMessageParser alloc] init]; + _messageParser.hostDelegate = self.hostDelegate; + } + return _messageParser; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/YUMIChamberCommunicationAccommodatedRegard.h b/YuMi/Modules/YMRoom/View/MessageContainerView/YUMIChamberCommunicationAccommodatedRegard.h deleted file mode 100644 index f46bc6f3..00000000 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/YUMIChamberCommunicationAccommodatedRegard.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMRoomMessageView.h -// YUMI -// -// Created by YUMI on 2021/10/11. -// - -#import -#import "ChamberHostRepresendtation.h" -#import "ChamberGuestRepresendtation.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberCommunicationAccommodatedRegard : UIView - -- (instancetype)initWithDelegate:(id)delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/YUMIChamberCommunicationAccommodatedRegard.m b/YuMi/Modules/YMRoom/View/MessageContainerView/YUMIChamberCommunicationAccommodatedRegard.m deleted file mode 100644 index 39a34e23..00000000 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/YUMIChamberCommunicationAccommodatedRegard.m +++ /dev/null @@ -1,930 +0,0 @@ -// -// YMRoomMessageView.m -// YUMI -// -// Created by YUMI on 2021/10/11. -// - -#import "YUMIChamberCommunicationAccommodatedRegard.h" -#import -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "XPRoomMessageConstant.h" -#import "YUMIChamberCommunicationAnatomiser.h" -#import "AccountAbstractStorage.h" -#import "YUMIChamberMiniExecutive.h" -#import "PLIntratemporalUtil.h" -#import "ClientDisposition.h" -#import -#import "ThemeColor+Room.h" -#import "NSArray+Safe.h" -#import "ChamberAbstractMatrix.h" -#import "AttachmentMatrix.h" -#import "ChamberAcceptDischargeAbstractMatrix.h" -#import "YUMICommunicationRemoteExtMatrix.h" -#import "ChamberCombatChooseConsumerMatrix.h" -#import "ConfectioneryTimberConsequentMatrix.h" -#import "ChamberMarchingCaptureMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "YUMICommunicationAbstractMatrix.h" -#import "YUMIChamberCommunicationTabulationRegardElement.h" -#import "YUMIChamberCommunicationIntelligencerRegard.h" -#import "View/YUMIChamberCommunicationIntelligencerRegard.h" - -NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey"; - -@interface YUMIChamberCommunicationAccommodatedRegard () -@property (nonatomic,weak) id hostRepresedtation; - -@property (nonatomic,strong) UITableView *communicationTabulationViwe; -@property (nonatomic,strong) YUMIChamberCommunicationIntelligencerRegard *intelligenceerRegard; -@property (nonatomic,strong) UIButton *communicationPromptsBtuton; -@property (nonatomic, strong) UIButton *atPromptBtuton; -@property (nonatomic,assign) BOOL isPending; -@property (nonatomic,assign) BOOL isRoadliceImport; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,strong) NSMutableArray *incomingCommunications; -@property (nonatomic, assign) NSInteger atComputation; -@property (nonatomic, strong) NSMutableArray *locationGarment; -@property (nonatomic,strong) YUMIChamberCommunicationAnatomiser *communicationAnatomiser; -@property (nonatomic,assign) BOOL isBigness; -@end - - -@implementation YUMIChamberCommunicationAccommodatedRegard - -- (void)dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - -- (instancetype)initWithDelegate:(id)delegate { - self = [super init]; - if (self) { - self.hostRepresedtation = delegate; - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Response -- (void)communictowardsionPromptsBtutonPerformance:(UIButton *)sender { - self.isPending = NO; - self.communicationPromptsBtuton.hidden = YES; - [self aplictowardsionconcludeGrantedTrundleToExtreme]; -} - -- (void)towardsPromptsBtutonPerformance:(UIButton *)sender { - self.isPending = YES; - [self aplictowardsionconcludeGrantedTrundleToTowardsConsumer]; -} - -- (void)aplictowardsionconcludeGrantedTrundleToTowardsConsumer { - if (self.incomingCommunications.count < 1) { - NSInteger rows = self.datasource.count; - if (!self.locationGarment.count) { - [self.communicationTabulationViwe scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:(rows-1) inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:YES]; - self.communicationPromptsBtuton.hidden = YES; - self.isPending = NO; - self.atComputation = 0; - self.atPromptBtuton.hidden = YES; - return; - } - int index = [self.locationGarment[0] intValue]; - NSIndexPath *indexPath = [NSIndexPath indexPathForRow:index inSection:0]; - if (rows > indexPath.row) { - [self.communicationTabulationViwe scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES]; - if (rows == indexPath.row + 1) { - self.communicationPromptsBtuton.hidden = YES; - self.isPending = NO; - } - } else { - [self.communicationTabulationViwe scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:(rows-1) inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:YES]; - - self.communicationPromptsBtuton.hidden = YES; - } - if (self.locationGarment.count) { - [self.locationGarment removeObjectAtIndex:0]; - self.atComputation -= 1; - [self.atPromptBtuton setTitle:[NSString stringWithFormat:YMLocalizedString(@"YUMI_Room_Message_Container_View_0"), (unsigned long)self.locationGarment.count] forState:UIControlStateNormal]; - if (self.locationGarment.count == 0) { - self.atPromptBtuton.hidden = YES; - } - } else { - self.atPromptBtuton.hidden = YES; - } - } else { - if (self.datasource.count > kChamberCommunicationLargestLongness) { - NSIndexSet *set = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, kChamberCommunicationLargestLongness/2)]; - NSArray *needRemoveMsgArray = [self.datasource objectsAtIndexes:set]; - [self.datasource removeObjectsInArray:needRemoveMsgArray]; - NSMutableIndexSet *indexSet = [NSMutableIndexSet indexSet]; - for (int i = 0; i indexPath.row) { - [self.communicationTabulationViwe scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES]; - if (rows == indexPath.row + 1) { - self.communicationPromptsBtuton.hidden = YES; - self.isPending = NO; - } - } else { - [self.communicationTabulationViwe scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:(rows-1) inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:YES]; - - self.communicationPromptsBtuton.hidden = YES; - } - if (self.locationGarment.count) { - [self.locationGarment removeObjectAtIndex:0]; - self.atComputation -= 1; - [self.atPromptBtuton setTitle:[NSString stringWithFormat:YMLocalizedString(@"YUMI_Room_Message_Container_View_1"), (unsigned long)self.locationGarment.count] forState:UIControlStateNormal]; - if (self.locationGarment.count == 0) { - self.atPromptBtuton.hidden = YES; - } - } else { - self.atPromptBtuton.hidden = YES; - } - } -} - -#pragma mark - @我 -- (void)prohibiticoveryTowardsMeDigital { - if (self.incomingCommunications.count) { - NIMMessage *message = self.incomingCommunications.lastObject; - id nickNameNifo = message.remoteExt[@"atUids"]; - if ([nickNameNifo isKindOfClass:[NSArray class]]) { - for (NSString *nick in nickNameNifo) { - if ([nick isEqualToString:[AccountAbstractStorage instance].acquireCid]) { - self.atComputation += 1; - } - } - } - if (self.atComputation > 0) { - self.atPromptBtuton.hidden = NO; - [self.atPromptBtuton setTitle:[NSString stringWithFormat:YMLocalizedString(@"YUMI_Room_Message_Container_View_2"), self.atComputation] forState:UIControlStateNormal]; - } else { - self.atPromptBtuton.hidden = YES; - } - } -} - -#pragma mark - Private Method -- (void)initSubViews { - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(accelertowardseIndividualityCommunictowardsion:) name:@"message" object:nil]; - [self addSubview:self.communicationTabulationViwe]; - [self addSubview:self.communicationPromptsBtuton]; - [self addSubview:self.atPromptBtuton]; - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - self.communicationTabulationViwe.tableHeaderView = self.intelligenceerRegard; - } -} - -- (void)initChildLyRestrictions { - [self.communicationTabulationViwe mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self).offset(15); - make.bottom.right.mas_equalTo(self); - make.top.mas_equalTo(self); - }]; - - [self.communicationPromptsBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(100); - make.height.mas_equalTo(30); - make.bottom.mas_equalTo(self.mas_bottom).offset(-5); - make.left.mas_equalTo(self); - }]; - [self.atPromptBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(100); - make.height.mas_equalTo(30); - make.bottom.mas_equalTo(self.mas_bottom).offset(-5); - make.left.mas_equalTo(self); - }]; -} - -- (BOOL)isUniversalChamber:(NSString *)sessionId { - if ([sessionId isEqualToString:[NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.roomId]]) { - return YES; - } - return NO; -} - -- (BOOL)shankBrakeImport:(NIMMessage *)message { - NIMMessageChatroomExtension * messageExt = (NIMMessageChatroomExtension *)message.messageExt; - NSDictionary * dic = [(NSDictionary *)messageExt.roomExt.toJSONGroal objectForKey:message.from]; - YUMICommunicationRemoteExtMatrix * extModel = [YUMICommunicationRemoteExtMatrix mtowardsrixAboutJSON:dic]; - return (extModel.enterHide || extModel.platformRole == 1); -} - -#pragma mark - 添加数据并且做自动滚动 -- (void)accelertowardseChamberCommunictowardsion:(NIMMessage *)message { - [self.incomingCommunications addObject:message]; - if (!self.isRoadliceImport) { - if (self.hostRepresedtation.acquireChamberAbstract.isCloseScreen) { - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentMatrix class]]) { - AttachmentMatrix *attachment = (AttachmentMatrix *)obj.attachment; - if (attachment.first == IndividualityCommunicationGenre_Update_RoomInfo && attachment.second == Custom_Message_Sub_Update_RoomInfo_MessageState){ - [[YUMIChamberMiniExecutive shareManager] preserveChamberCommunictowardsion:message]; - } - } - } else { - [[YUMIChamberMiniExecutive shareManager] preserveChamberCommunictowardsion:message]; - } - } - if (self.isPending) { - self.communicationPromptsBtuton.hidden = NO; - [self prohibiticoveryTowardsMeDigital]; - } else { - [self aplictowardsionconcludeGrantedTrundleToExtreme]; - } -} - -- (void)aplictowardsionconcludeGrantedTrundleToExtreme { - if (self.incomingCommunications.count < 1) { - - [self scrollToExtreme:YES]; - return; - } - - if (self.datasource.count > kChamberCommunicationLargestLongness) { - NSIndexSet *set = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, kChamberCommunicationLargestLongness/2)]; - NSArray *needRemoveMsgArray = [self.datasource objectsAtIndexes:set]; - [self.datasource removeObjectsInArray:needRemoveMsgArray]; - } - - - NSMutableArray *indexPaths = [NSMutableArray array]; - for (NIMMessage *item in self.incomingCommunications) { - [self.datasource addObject:[self.communicationAnatomiser analyzeCommunictowardsionIdiosyncracy:item]]; - [indexPaths addObject:[NSIndexPath indexPathForRow:self.datasource.count - 1 inSection:0]]; - } - [self.incomingCommunications removeAllObjects]; - [self.communicationTabulationViwe reloadData]; - - - [self scrollToExtreme:YES]; -} - -- (void)scrollToExtreme:(BOOL)animated { - NSInteger s = [self.communicationTabulationViwe numberOfSections]; - if (s<1) return; - NSInteger r = [self.communicationTabulationViwe numberOfRowsInSection:s-1]; - if (r<1) return; - NSIndexPath *ip = [NSIndexPath indexPathForRow:r-1 inSection:s-1]; - [self.communicationTabulationViwe scrollToRowAtIndexPath:ip atScrollPosition:UITableViewScrollPositionBottom animated:animated]; - self.atComputation = 0; - self.atPromptBtuton.hidden = YES; - [self.locationGarment removeAllObjects]; -} - -- (BOOL)isCanExhibitionCommunictowardsion:(NIMMessage *)message { - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentMatrix class]]) { - AttachmentMatrix *attachment = (AttachmentMatrix *)obj.attachment; - if (attachment.first == IndividualityCommunicationGenre_Face && attachment.second == Custom_Message_Sub_Face_Send) { - if ([attachment.data[@"data"] isKindOfClass:[NSArray class]]) { - NSArray * array = [ChamberAcceptDischargeAbstractMatrix mtowardsrixsAboutGarment:attachment.data[@"data"]]; - for (int i = 0; i< array.count; i++) { - ChamberAcceptDischargeAbstractMatrix * sendInfo = [array secureGroalTowardsIndictowardsrix1:i]; - if (sendInfo.resultIndexes.count <=0) { - return NO; - } - } - } - }else if (attachment.first == IndividualityCommunicationGenre_Room_PK && attachment.second == Custom_Message_Sub_Room_PK_Manager_Up_Mic) { - if (attachment.data && [attachment.data allKeys].count > 0) { - for (NSDictionary * dic in [attachment.data allValues]) { - ChamberCombatChooseConsumerMatrix * userModel = [ChamberCombatChooseConsumerMatrix mtowardsrixAboutImpactbasket:dic]; - if (userModel.groupType == GroupGenre_Red || userModel.groupType == GroupGenre_Blue) { - return YES; - } - } - } - return NO; - } else if(attachment.first == IndividualityCommunicationGenre_Room_Sailing && (attachment.second == Custom_Message_Sub_Sailing_AllRoom_Notify || attachment.second == Custom_Message_Sub_Sailing_InRoom_NeedAllMicSend)) { - ChamberMarchingCaptureMatrix * captureMatrix = [ChamberMarchingCaptureMatrix mtowardsrixAboutImpactbasket:attachment.data]; - if (self.hostRepresedtation.getUserInfo.userLevelVo.experLevelSeq > captureMatrix.userLevelLimit) { - return YES; - } - } else if(attachment.first == IndividualityCommunicationGenre_Graffiti_Star_Kitchen){ - return YES; - } - return [[[self supportCommunictowardsionDic] objectForKey:@(attachment.first)] containsObject:@(attachment.second)]; - } - return NO; -} - -- (NSDictionary *)supportCommunictowardsionDic { - if (![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - return @{}; - } - return @{ - @(IndividualityCommunicationGenre_AllMicroSend): - [NSSet setWithObjects: - @(Custom_Message_Sub_AllMicroSend), - @(Custom_Message_Sub_AllMicroLuckySend), - @(Custom_Message_Sub_AllBatchSend), - @(Custom_Message_Sub_AllBatchMicroLuckySend), - nil], - @(IndividualityCommunicationGenre_Gift): - [NSSet setWithObjects: - @(Custom_Message_Sub_Gift_Send), - @(Custom_Message_Sub_Gift_LuckySend), - nil], - @(IndividualityCommunicationGenre_Room_Tip): - [NSSet setWithObjects: - @(Custom_Message_Sub_Room_Tip_ShareRoom), - @(Custom_Message_Sub_Room_Tip_Attention_Owner), - nil], - @(IndividualityCommunicationGenre_Kick_User): - [NSSet setWithObjects: - @(Custom_Message_Sub_Kick_BeKicked), - @(Custom_Message_Sub_Kick_BlackList), - nil], - @(IndividualityCommunicationGenre_Queue): - [NSSet setWithObjects: - @(Custom_Message_Sub_Queue_Kick), - nil], - @(IndividualityCommunicationGenre_Look_Love): - [NSSet setWithObjects: - @(Custom_Message_Sub_Look_Love_Me), - @(Custom_Message_Sub_Look_Love_InRoom), - @(Custom_Message_Sub_Look_Love_AllRoom), - @(Custom_Message_Sub_Look_Love_AllRoom_Notify), - @(Custom_Message_Sub_Look_Love_InRoom_NeedAllMicSend), - nil], - @(IndividualityCommunicationGenre_Arrange_Mic): - [NSSet setWithObjects: - @(Custom_Message_Sub_Arrange_Mic_Mode_Open), - @(Custom_Message_Sub_Arrange_Mic_Mode_Close), - @(Custom_Message_Sub_Arrange_Mic_Free_Mic_Open), - @(Custom_Message_Sub_Arrange_Mic_Free_Mic_Close), - nil], - @(IndividualityCommunicationGenre_Update_RoomInfo): - [NSSet setWithObjects: - @(Custom_Message_Sub_Update_RoomInfo_MessageState), - @(Custom_Message_Sub_Update_RoomInfo_AnimateEffect), - nil], - @(IndividualityCommunicationGenre_Collection_Room): - [NSSet setWithObjects: - @(Custom_Message_Sub_Collect_Room_Tips), - nil], - @(IndividualityCommunicationGenre_RoomPlay_Dating): - [NSSet setWithObjects: - @(Custom_Message_Sub_Room_Play_Dating_Pick_Heart), - @(Custom_Message_Sub_Room_Play_Dating_Result_Mutual), - @(Custom_Message_Sub_Room_Play_Dating_Result_Not_Mutual), - nil], - @(IndividualityCommunicationGenre_Noble_VIP): - [NSSet setWithObjects: - @(Custom_Message_Sub_Room_Open_Noble_VIP), - @(Custom_Message_Sub_Room_Noble_LevelUp), - @(Custom_Message_Sub_AllRoom_Noble_LevelUp_Suspend), - nil], - @(IndividualityCommunicationGenre_Face): - [NSSet setWithObjects: - @(Custom_Message_Sub_Face_Send), - nil], - @(IndividualityCommunicationGenre_Anchor_FansTeam): - [NSSet setWithObjects: - @(Custom_Message_Sub_FansTeam_Open_Success), - @(Custom_Message_Sub_FansTeam_Open_Fail), - @(Custom_Message_Sub_FansTeam_Join_Success), - @(Custom_Message_Sub_FansTeam_Out_Success), - nil], - @(IndividualityCommunicationGenre_Hall_Super_Admin): - [NSSet setWithObjects: - @(Custom_Message_Sub_Hall_Super_Admin_Kick_Manager_Out_Room), - nil], - @(IndividualityCommunicationGenre_Room_PK): - [NSSet setWithObjects: - @(Custom_Message_Sub_Room_PK_Manager_Up_Mic), - @(Custom_Message_Sub_Room_PK_Mode_Close), - @(Custom_Message_Sub_Room_PK_Result), - @(Custom_Message_Sub_Room_PK_Mode_Open), - @(Custom_Message_Sub_Room_PK_Start), - @(Custom_Message_Sub_Room_PK_Re_Start), - nil], - @(IndividualityCommunicationGenre_LuckyBag): - [NSSet setWithObjects: - @(Custom_Message_Sub_Room_Gift_LuckBag_Server), - nil], - @(IndividualityCommunicationGenre_Gift_Compound): - [NSSet setWithObjects:@(Custom_Message_Sub_Gift_Compound), - nil], - @(IndividualityCommunicationGenre_Room_Sailing): - [NSSet setWithObjects: - @(Custom_Message_Sub_Sailing_Me), - @(Custom_Message_Sub_Sailing_InRoom), - @(Custom_Message_Sub_Sailing_AllRoom), - @(Custom_Message_Sub_Sailing_AllRoom_Notify), - @(Custom_Message_Sub_Sailing_InRoom_NeedAllMicSend), - nil], - @(IndividualityCommunicationGenre_RedPacket): - [NSSet setWithObjects: - @(Custom_Message_Sub_OpenRedPacketSuccess), - nil], - - }; -} - -- (void)accelertowardseIndividualityCommunictowardsion:(NSNotification *)notification { - self.isRoadliceImport = NO; - if (self.hostRepresedtation.acquireChamberAbstract.isCloseScreen) {return;} - NIMMessage * message = notification.object; - [self accelertowardseChamberCommunictowardsion:message]; -} - -- (void)produceConsumerImportChamberAccelertowardseChambermotifCommunictowardsion { - if ([ClientDisposition partowardsiciptowardsionDisposition].dispositionAbstract.appStoreAuditNoticeVersion == YES || ![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - return; - } - ChamberAbstractMatrix * roomInfo = self.hostRepresedtation.acquireChamberAbstract; - if (roomInfo.uid == [AccountAbstractStorage instance].acquireCid.integerValue) {return;} - NSString * key = [NSString stringWithFormat:@"%@_%@_%ld", kRoomShowTopicKey, [AccountAbstractStorage instance].acquireCid, roomInfo.uid]; - NSDate * oldDate = [[NSUserDefaults standardUserDefaults] valueForKey:key]; - NSDate * date = [NSDate date]; - if (roomInfo.introduction.length > 0) { - if (oldDate) { - NSDateComponents *compons = [PLIntratemporalUtil compareTwoEngagement:date secondDate:[NSDate date]]; - if (ABS(compons.year) > 0 || ABS(compons.month) > 0 || ABS(compons.day) > 0) { - NIMMessage * message = [[NIMMessage alloc] init]; - NSString * content = [NSString stringWithFormat:@"[房间公告] \n %@", roomInfo.introduction]; - message.text = content; - message.localExt = @{@"isRoomTopic": @(NO)}; - [message setValue:@(NIMMessageTypeTip) forKey:@"messageType"]; - [message setValue:[NIMSession session:[NSString stringWithFormat:@"%ld", roomInfo.roomId] type:NIMSessionTypeChatroom] forKey:@"session"]; - [self accelertowardseChamberCommunictowardsion:message]; - - [[NSUserDefaults standardUserDefaults] setValue:@(YES) forKey:key]; - [[NSUserDefaults standardUserDefaults] synchronize]; - } - } else { - NIMMessage * message = [[NIMMessage alloc] init]; - NSString * content = [NSString stringWithFormat:@"[房间公告] \n %@", roomInfo.introduction]; - message.text = content; - message.localExt = @{@"isRoomTopic": @(NO)}; - [message setValue:@(NIMMessageTypeTip) forKey:@"messageType"]; - [message setValue:[NIMSession session:[NSString stringWithFormat:@"%ld", roomInfo.roomId] type:NIMSessionTypeChatroom] forKey:@"session"]; - [self accelertowardseChamberCommunictowardsion:message]; - - [[NSUserDefaults standardUserDefaults] setValue:@(YES) forKey:key]; - [[NSUserDefaults standardUserDefaults] synchronize]; - } - } - - NIMMessage * message = [[NIMMessage alloc] init]; - message.text = YMLocalizedString(@"YUMI_Room_Message_Container_View_5"); - message.localExt = @{@"isRoomTopic": @(YES)}; - [message setValue:@(NIMMessageTypeTip) forKey:@"messageType"]; - [message setValue:[NIMSession session:[NSString stringWithFormat:@"%ld", roomInfo.roomId] type:NIMSessionTypeChatroom] forKey:@"session"]; - [self accelertowardseChamberCommunictowardsion:message]; -} - -#pragma mark - ChamberGuestRepresendtation -- (void)shankNEMCIndividualityCommunictowardsion:(NIMMessage *)message { - self.isRoadliceImport = NO; - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentMatrix class]]) { - AttachmentMatrix *attachment = (AttachmentMatrix *)obj.attachment; - if (attachment.first == IndividualityCommunicationGenre_Update_RoomInfo && attachment.second == Custom_Message_Sub_Update_RoomInfo_MessageState) { - [self.datasource removeAllObjects]; - [self.incomingCommunications removeAllObjects]; - [self.locationGarment removeAllObjects]; - self.atComputation = 0; - self.atPromptBtuton.hidden = YES; - self.communicationPromptsBtuton.hidden = YES; - self.isPending = NO; - [[YUMIChamberMiniExecutive shareManager] replacementProvincialCommunictowardsion]; - [self accelertowardseChamberCommunictowardsion:message]; - return; - } else if (attachment.first == IndividualityCommunicationGenre_Update_RoomInfo && attachment.second == Custom_Message_Sub_Update_RoomInfo_CleanScreen) { - [self.datasource removeAllObjects]; - [self.incomingCommunications removeAllObjects]; - [self.locationGarment removeAllObjects]; - self.atComputation = 0; - self.atPromptBtuton.hidden = YES; - self.communicationPromptsBtuton.hidden = YES; - self.isPending = NO; - [[YUMIChamberMiniExecutive shareManager] replacementProvincialCommunictowardsion]; - [self accelertowardseChamberCommunictowardsion:message]; - return; - } else if(attachment.first == IndividualityCommunicationGenre_Candy_Tree && attachment.second == Custom_Message_Sub_Candy_Tree_Me) { - ConfectioneryTimberPresentAbstractMatrix * model = [ConfectioneryTimberPresentAbstractMatrix mtowardsrixAboutImpactbasket:attachment.data]; - if (model.uid.integerValue != [AccountAbstractStorage instance].acquireCid.integerValue) { - return; - } - } else if (attachment.first == IndividualityCommunicationGenre_Kick_User) { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * roomId = [NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.roomId]; - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = roomId; - request.userIds = @[uid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - if (error == nil) { - NIMChatroomMember * member = members.firstObject; - BOOL isCreator = member.type == NIMChatroomMemberTypeCreator; - BOOL isManager = member.type == NIMChatroomMemberTypeManager; - if (isCreator || isManager) { - [self accelertowardseChamberCommunictowardsion:message]; - } - } - }]; - return; - } - } - if (self.hostRepresedtation.acquireChamberAbstract.isCloseScreen) { - return; - } - if ([self isCanExhibitionCommunictowardsion:message]) { - [self accelertowardseChamberCommunictowardsion:message]; - } -} - -- (void)shankNEMCCircularCommunictowardsion:(NIMMessage *)message { - self.isRoadliceImport = NO; - NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; - NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; - ChamberAbstractMatrix * roomInfo = self.hostRepresedtation.acquireChamberAbstract; - if (content.eventType == NIMChatroomEventTypeEnter) { - if (roomInfo.isCloseScreen) { - AttachmentMatrix *attachement = [[AttachmentMatrix alloc]init]; - attachement.first = IndividualityCommunicationGenre_Update_RoomInfo; - attachement.second = Custom_Message_Sub_Update_RoomInfo_MessageState; - attachement.data = @{@"roomInfo":self.hostRepresedtation.acquireChamberAbstract.mtowardsrix2dictionary}; - NIMMessage *message = [[NIMMessage alloc]init]; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachement; - message.messageObject = object; - [self accelertowardseChamberCommunictowardsion:message]; - return; - } else { - NIMChatroomNotificationMember *member = content.targets[0]; - if (member.userId.integerValue == [AccountAbstractStorage instance].acquireCid.integerValue) { - - [self shankFetchHerstoryCommunictowardsion:message]; - } else { - BOOL hideEnter = [self shankBrakeImport:message]; - if (!hideEnter) { - - [self accelertowardseChamberCommunictowardsion:message]; - } - } - } - } else if(content.eventType == NIMChatroomEventTypeInfoUpdated) { - if (roomInfo.isCloseScreen) {return;} - if (roomInfo.datingState == ChamberDatingDeclareChangeGenre_Open) { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = roomId; - request.userIds = @[uid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - if (error == nil) { - NIMChatroomMember * member = members.firstObject; - BOOL isCreator = member.type == NIMChatroomMemberTypeCreator; - BOOL isManager = member.type == NIMChatroomMemberTypeManager; - if (isCreator || isManager) { - [self accelertowardseChamberCommunictowardsion:message]; - } - } - }]; - } - } -} - -- (void)shankFetchHerstoryCommunictowardsion:(NIMMessage *)message { - ChamberAbstractMatrix * roomInfo = self.hostRepresedtation.acquireChamberAbstract; - NSString *roomId = [NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.roomId]; - NIMHistoryMessageSearchOption *option = [[NIMHistoryMessageSearchOption alloc] init]; - option.limit = [ClientDisposition partowardsiciptowardsionDisposition].dispositionAbstract.roomMessageCount; - option.startTime = self.hostRepresedtation.acquireChamberAbstract.clearScreenTime / 1000.0; - option.order = NIMMessageSearchOrderAsc; - option.messageTypes = @[@(NIMMessageTypeText)]; - [[NIMSDK sharedSDK].chatroomManager fetchMessageHistory:roomId option:option result:^(NSError * _Nullable error, NSArray * _Nullable messages) { - if (messages.count) { - - if (messages.count == [ClientDisposition partowardsiciptowardsionDisposition].dispositionAbstract.roomMessageCount) { - NIMHistoryMessageSearchOption *option = [[NIMHistoryMessageSearchOption alloc] init]; - option.limit = [ClientDisposition partowardsiciptowardsionDisposition].dispositionAbstract.roomMessageCount; - option.order = NIMMessageSearchOrderDesc; - option.messageTypes = @[@(NIMMessageTypeText)]; - [[NIMSDK sharedSDK].chatroomManager fetchMessageHistory:roomId option:option result:^(NSError * _Nullable error, NSArray * _Nullable messages) { - if (self.datasource.count > kChamberCommunicationLargestLongness) { - NSIndexSet *set = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, kChamberCommunicationLargestLongness/2)]; - NSArray *needRemoveMsgArray = [self.datasource objectsAtIndexes:set]; - [self.datasource removeObjectsInArray:needRemoveMsgArray]; - } - - for (NIMMessage *item in messages.reverseObjectEnumerator) { - [self.datasource addObject:[self.communicationAnatomiser analyzeCommunictowardsionIdiosyncracy:item]]; - if (!self.isRoadliceImport) { - if (self.hostRepresedtation.acquireChamberAbstract.isCloseScreen) { - NIMCustomObject *obj = (NIMCustomObject *)item.messageObject; - if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentMatrix class]]) { - AttachmentMatrix *attachment = (AttachmentMatrix *)obj.attachment; - if (attachment.first == IndividualityCommunicationGenre_Update_RoomInfo && attachment.second == Custom_Message_Sub_Update_RoomInfo_MessageState){ - [[YUMIChamberMiniExecutive shareManager] preserveChamberCommunictowardsion:item]; - } - } - } else { - [[YUMIChamberMiniExecutive shareManager] preserveChamberCommunictowardsion:item]; - } - } - } - [self.communicationTabulationViwe reloadData]; - - [self scrollToExtreme:YES]; - BOOL hideEnter = [self shankBrakeImport:message]; - if (!hideEnter) { - - [self accelertowardseChamberCommunictowardsion:message]; - } - if (!roomInfo.hasAnimationEffect) { - [self chamberAbstractNoPresentBrectifynessCommunictowardsion:message]; - } - [self produceConsumerImportChamberAccelertowardseChambermotifCommunictowardsion]; - }]; - return; - } - if (self.datasource.count > kChamberCommunicationLargestLongness) { - NSIndexSet *set = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, kChamberCommunicationLargestLongness/2)]; - NSArray *needRemoveMsgArray = [self.datasource objectsAtIndexes:set]; - [self.datasource removeObjectsInArray:needRemoveMsgArray]; - } - - for (NIMMessage *item in messages) { - [self.datasource addObject:[self.communicationAnatomiser analyzeCommunictowardsionIdiosyncracy:item]]; - if (!self.isRoadliceImport) { - if (self.hostRepresedtation.acquireChamberAbstract.isCloseScreen) { - NIMCustomObject *obj = (NIMCustomObject *)item.messageObject; - if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentMatrix class]]) { - AttachmentMatrix *attachment = (AttachmentMatrix *)obj.attachment; - if (attachment.first == IndividualityCommunicationGenre_Update_RoomInfo && attachment.second == Custom_Message_Sub_Update_RoomInfo_MessageState){ - [[YUMIChamberMiniExecutive shareManager] preserveChamberCommunictowardsion:item]; - } - } - } else { - [[YUMIChamberMiniExecutive shareManager] preserveChamberCommunictowardsion:item]; - } - } - } - [self.communicationTabulationViwe reloadData]; - - [self scrollToExtreme:YES]; - } - BOOL hideEnter = [self shankBrakeImport:message]; - if (!hideEnter) { - - [self accelertowardseChamberCommunictowardsion:message]; - } - if (!roomInfo.hasAnimationEffect) { - [self chamberAbstractNoPresentBrectifynessCommunictowardsion:message]; - } - [self produceConsumerImportChamberAccelertowardseChambermotifCommunictowardsion]; - }]; -} - -- (void)shankNEMCEssayCommunictowardsion:(NIMMessage *)message { - self.isRoadliceImport = NO; - if (self.hostRepresedtation.acquireChamberAbstract.isCloseScreen) {return;} - [self accelertowardseChamberCommunictowardsion:message]; -} - -- (void)chamberAbstractNoPresentBrectifynessCommunictowardsion:(NIMMessage *)message { - self.isRoadliceImport = NO; - AttachmentMatrix *attachement = [[AttachmentMatrix alloc]init]; - attachement.first = IndividualityCommunicationGenre_Update_RoomInfo; - attachement.second = Custom_Message_Sub_Update_RoomInfo_AnimateEffect; - NIMMessage *tempMessage = [[NIMMessage alloc]init]; - NIMCustomObject *customObject = [[NIMCustomObject alloc]init]; - customObject.attachment = attachement; - tempMessage.messageObject = customObject; - [self accelertowardseChamberCommunictowardsion:tempMessage]; -} - -- (void)onChamberRoadliceImported { - self.isRoadliceImport = YES; - - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - NSArray * temArray = [YUMIChamberMiniExecutive shareManager].acquireProvincialUniversalChamberCommunictowardsion; - - for (NIMMessage *item in temArray) { - [self.datasource addObject:[self.communicationAnatomiser analyzeCommunictowardsionIdiosyncracy:item]]; - } - [self.communicationTabulationViwe reloadData]; - - [self scrollToExtreme:YES]; - }); -} - -- (void)onChamberImported { - [[YUMIChamberMiniExecutive shareManager] replacementProvincialCommunictowardsion]; - self.intelligenceerRegard.intumescePrettify = self.hostRepresedtation.acquireChamberAbstract.type == ChamberGenre_MiniGame ? [UIColor colorWithWhite:1 alpha:0.2] : [DJDKMIMOMColor communictowardsionIntumescePrettify]; -} - -- (void)onChamberRefurbish { - - if (self.hostRepresedtation.acquireChamberAbstract.hadChangeRoomType) { - self.intelligenceerRegard.intumescePrettify = self.hostRepresedtation.acquireChamberAbstract.type == ChamberGenre_MiniGame ? [UIColor colorWithWhite:1 alpha:0.2] : [DJDKMIMOMColor communictowardsionIntumescePrettify]; - [self.communicationTabulationViwe reloadData]; - } -} - -#pragma mark - ScrollViewDelegate -- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { - - self.isPending = YES; -} -- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { - - if (!decelerate) { - [self accomplishDraggingAbout:scrollView]; - } -} -- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { - - [self accomplishDraggingAbout:scrollView]; -} -- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView { - if (!self.isPending && self.incomingCommunications.count <= 0) { - [self scrollToExtreme:YES]; - } -} - - -- (void)accomplishDraggingAbout:(UIScrollView *)scrollView { - CGFloat contentSizeH = scrollView.contentSize.height; - CGFloat contentOffsetY = scrollView.contentOffset.y; - CGFloat sizeH = scrollView.frame.size.height; - self.isPending = contentSizeH - contentOffsetY - sizeH > 20.0; - if (!self.isPending) { - self.communicationPromptsBtuton.hidden = YES; - self.atPromptBtuton.hidden = YES; - self.atComputation = 0; - [self.locationGarment removeAllObjects]; - if (self.incomingCommunications.count > 0) { - [self aplictowardsionconcludeGrantedTrundleToExtreme]; - } - } - [[NSNotificationCenter defaultCenter] postNotificationName:@"roomMessageTabelViewStopScroll" object:nil]; -} - - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - YUMICommunicationAbstractMatrix* mesageInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return mesageInfo.rowHeight; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - YUMIChamberCommunicationTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIChamberCommunicationTabulationRegardElement class])]; - cell.delegate = self; - YUMICommunicationAbstractMatrix* attr = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.communicationAbstract = attr; - cell.roomType = self.hostRepresedtation.acquireChamberAbstract.type; - return cell; -} - - -#pragma mark - FBCChamberCommunicationTabulationViweElementRepresendtation -- (void)yUMIChamberCommunictowardsionTarbsultowardsionViweElementDidBetowardsDispossess:(YUMIChamberCommunicationTabulationRegardElement *)view { - if (self.hostRepresedtation.acquireChamberAbstract.type == ChamberGenre_MiniGame) { - self.isBigness = !self.isBigness; - CGFloat height = self.isBigness ? 200 : 80; - [self mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(height); - }]; - } -} - -#pragma mark - Getters And Setters -- (UITableView *)communicationTabulationViwe { - if (!_communicationTabulationViwe) { - _communicationTabulationViwe = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _communicationTabulationViwe.delegate = self; - _communicationTabulationViwe.dataSource = self; - _communicationTabulationViwe.tableFooterView = [UIView new]; - _communicationTabulationViwe.separatorStyle = UITableViewCellSeparatorStyleNone; - _communicationTabulationViwe.backgroundColor = [UIColor clearColor]; - _communicationTabulationViwe.showsVerticalScrollIndicator = NO; - _communicationTabulationViwe.tag = 666; - if (@available(iOS 11.0, *)) { - _communicationTabulationViwe.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_communicationTabulationViwe registerClass:[YUMIChamberCommunicationTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIChamberCommunicationTabulationRegardElement class])]; - } - return _communicationTabulationViwe; -} - -- (YUMIChamberCommunicationIntelligencerRegard *)intelligenceerRegard { - if (!_intelligenceerRegard) { - _intelligenceerRegard = [[YUMIChamberCommunicationIntelligencerRegard alloc] init]; - } - return _intelligenceerRegard; -} - -- (UIButton *)communicationPromptsBtuton { - if (!_communicationPromptsBtuton) { - _communicationPromptsBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_communicationPromptsBtuton setTitle:YMLocalizedString(@"YUMI_Room_Message_Container_View_6") forState:UIControlStateNormal]; - [_communicationPromptsBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionMainPrettify] forState:UIControlStateNormal]; - _communicationPromptsBtuton.layer.cornerRadius = 15.0; - _communicationPromptsBtuton.layer.masksToBounds = YES; - _communicationPromptsBtuton.titleLabel.font = [UIFont systemFontOfSize:12.0]; - _communicationPromptsBtuton.backgroundColor = [UIColor whiteColor]; - [_communicationPromptsBtuton addTarget:self action:@selector(communictowardsionPromptsBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _communicationPromptsBtuton.hidden = YES; - } - return _communicationPromptsBtuton; -} - -- (UIButton *)atPromptBtuton { - if (!_atPromptBtuton) { - _atPromptBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_atPromptBtuton setTitle:YMLocalizedString(@"YUMI_Room_Message_Container_View_7") forState:UIControlStateNormal]; - [_atPromptBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionMainPrettify] forState:UIControlStateNormal]; - _atPromptBtuton.layer.cornerRadius = 15.0; - _atPromptBtuton.layer.masksToBounds = YES; - _atPromptBtuton.titleLabel.font = [UIFont systemFontOfSize:12.0]; - _atPromptBtuton.backgroundColor = [UIColor whiteColor]; - [_atPromptBtuton addTarget:self action:@selector(towardsPromptsBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _atPromptBtuton.hidden = YES; - } - return _atPromptBtuton; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - -- (NSMutableArray *)incomingCommunications { - if (!_incomingCommunications) { - _incomingCommunications = [NSMutableArray array]; - } - return _incomingCommunications; -} - -- (NSMutableArray *)locationGarment { - if (!_locationGarment) { - _locationGarment = [NSMutableArray array]; - } - return _locationGarment; -} - -- (YUMIChamberCommunicationAnatomiser *)communicationAnatomiser { - if (!_communicationAnatomiser) { - _communicationAnatomiser = [[YUMIChamberCommunicationAnatomiser alloc] init]; - _communicationAnatomiser.hostRepresedtation = self.hostRepresedtation; - } - return _communicationAnatomiser; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/MicroQueueCeremony.h b/YuMi/Modules/YMRoom/View/MicroQueueCeremony.h deleted file mode 100644 index 5d224933..00000000 --- a/YuMi/Modules/YMRoom/View/MicroQueueCeremony.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// MicroQueueCeremony.h -// YUMI -// -// Created by zu on 2021/11/4. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class MiecreoscoopeMHTueueMatrix; - - -@protocol MicroQueueCeremony - -@optional - -- (NSMutableDictionary*)acquireMiecreoscoopeInthecaseofmtowardsion; - -- (void)onMiecreoscoopeInthecaseofmtowardsionRefurbish:(NSMutableDictionary*)queue; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MicroQueueProtocol.h b/YuMi/Modules/YMRoom/View/MicroQueueProtocol.h new file mode 100644 index 00000000..8612de9a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MicroQueueProtocol.h @@ -0,0 +1,38 @@ +// +// MicroQueueProtocol.h +// YUMI +// +// Created by zu on 2021/11/4. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class MicroQueueModel; + +/** 麦序数据的协议。 + + RoomVC 的子 View 之间的通信协议,通过 RoomHostDelegate 和 RoomGuestDelegate 继承实现。 + + 调用方向: + + - getMicroQueue:RoomVC 子 View —> RoomHostDelegate —> StageView + - onMicroQueueUpdate:StageView —> RoomHostDelegate —> RoomVC 子 View + + */ +@protocol MicroQueueProtocol + +@optional +/** + * 获取麦序。 + */ +- (NSMutableDictionary*)getMicroQueue; +/** + * 麦序更新通知。 + */ +- (void)onMicroQueueUpdate:(NSMutableDictionary*)queue; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MorePlay/Model/XPRoomActivityPlayModel.h b/YuMi/Modules/YMRoom/View/MorePlay/Model/XPRoomActivityPlayModel.h new file mode 100644 index 00000000..17d043b8 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MorePlay/Model/XPRoomActivityPlayModel.h @@ -0,0 +1,27 @@ +// +// YMRoomActivityPlayModel.h +// YUMI +// +// Created by YUMI on 2022/9/30. +// + +#import + +typedef NS_ENUM(NSUInteger, RoomActivityPlayType) { + RoomActivityPlayTypeSailing,//航海 + RoomActivityPlayTypeCandyTree,//糖果树 +}; + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomActivityPlayModel : NSObject + +@property (nonatomic, copy) NSString *name; + +@property (nonatomic, copy) NSString *imageName; + +@property (nonatomic, assign) RoomActivityPlayType playType; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MorePlay/Model/XPRoomActivityPlayModel.m b/YuMi/Modules/YMRoom/View/MorePlay/Model/XPRoomActivityPlayModel.m new file mode 100644 index 00000000..4ee60e6b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MorePlay/Model/XPRoomActivityPlayModel.m @@ -0,0 +1,12 @@ +// +// YMRoomActivityPlayModel.m +// YUMI +// +// Created by YUMI on 2022/9/30. +// + +#import "XPRoomActivityPlayModel.h" + +@implementation XPRoomActivityPlayModel + +@end diff --git a/YuMi/Modules/YMRoom/View/MorePlay/Model/YUMIChamberImportpriseDisportMatrix.h b/YuMi/Modules/YMRoom/View/MorePlay/Model/YUMIChamberImportpriseDisportMatrix.h deleted file mode 100644 index 33d588be..00000000 --- a/YuMi/Modules/YMRoom/View/MorePlay/Model/YUMIChamberImportpriseDisportMatrix.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// YMRoomActivityPlayModel.h -// YUMI -// -// Created by YUMI on 2022/9/30. -// - -#import - -typedef NS_ENUM(NSUInteger, ChamberActivityDisportGenre) { - ChamberActivityDisportGenreSailing, - ChamberActivityDisportGenreCandyTree, -}; - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberImportpriseDisportMatrix : NSObject - -@property (nonatomic, copy) NSString *name; - -@property (nonatomic, copy) NSString *imageName; - -@property (nonatomic, assign) ChamberActivityDisportGenre playType; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MorePlay/Model/YUMIChamberImportpriseDisportMatrix.m b/YuMi/Modules/YMRoom/View/MorePlay/Model/YUMIChamberImportpriseDisportMatrix.m deleted file mode 100644 index 55240bce..00000000 --- a/YuMi/Modules/YMRoom/View/MorePlay/Model/YUMIChamberImportpriseDisportMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMRoomActivityPlayModel.m -// YUMI -// -// Created by YUMI on 2022/9/30. -// - -#import "YUMIChamberImportpriseDisportMatrix.h" - -@implementation YUMIChamberImportpriseDisportMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/MorePlay/Presenter/XPRoomMorePlayPresenter.h b/YuMi/Modules/YMRoom/View/MorePlay/Presenter/XPRoomMorePlayPresenter.h new file mode 100644 index 00000000..91d8cae4 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MorePlay/Presenter/XPRoomMorePlayPresenter.h @@ -0,0 +1,18 @@ +// +// YMRoomMorePlayPresenter.h +// YUMI +// +// Created by YUMI on 2022/10/24. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN +@class RoomInfoModel, UserInfoModel; +@interface XPRoomMorePlayPresenter : BaseMvpPresenter + +- (void)getRoomMorePlayData:(RoomInfoModel *)roomInfo userInfo:(UserInfoModel *)userInfo; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MorePlay/Presenter/XPRoomMorePlayPresenter.m b/YuMi/Modules/YMRoom/View/MorePlay/Presenter/XPRoomMorePlayPresenter.m new file mode 100644 index 00000000..4612736a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MorePlay/Presenter/XPRoomMorePlayPresenter.m @@ -0,0 +1,31 @@ +// +// YMRoomMorePlayPresenter.m +// YUMI +// +// Created by YUMI on 2022/10/24. +// + +#import "XPRoomMorePlayPresenter.h" +#import "RoomInfoModel.h" +#import "UserInfoModel.h" +#import "XPRoomActivityPlayModel.h" +#import "ClientConfig.h" +#import "XPRoomMorePlayProtocol.h" + +@implementation XPRoomMorePlayPresenter + +- (void)getRoomMorePlayData:(RoomInfoModel *)roomInfo userInfo:(UserInfoModel *)userInfo { + NSMutableArray * data = [NSMutableArray array]; + ///航海玩法 + XPRoomActivityPlayModel *sailingModel = [[XPRoomActivityPlayModel alloc] init]; + sailingModel.name = YMLocalizedString(@"XPRoomMorePlayPresenter0"); + sailingModel.imageName = @"room_sailiing_enter"; + sailingModel.playType = RoomActivityPlayTypeSailing; + + if ([ClientConfig shareConfig].configInfo.linearlyPoolOpenLevel <= userInfo.userLevelVo.experLevelSeq) { + [data addObject:sailingModel]; + } + [[self getView] getMorePlaysSuccess:data]; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/MorePlay/Presenter/YUMIChamberFurthaerDisportExternalizer.h b/YuMi/Modules/YMRoom/View/MorePlay/Presenter/YUMIChamberFurthaerDisportExternalizer.h deleted file mode 100644 index a5c17686..00000000 --- a/YuMi/Modules/YMRoom/View/MorePlay/Presenter/YUMIChamberFurthaerDisportExternalizer.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMRoomMorePlayPresenter.h -// YUMI -// -// Created by YUMI on 2022/10/24. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN -@class ChamberAbstractMatrix, ConsumerAbstractMatrix; -@interface YUMIChamberFurthaerDisportExternalizer : BaseMvpExternalizer - -- (void)acquireChamberFurthaerDisportTowardsoloudspeaker:(ChamberAbstractMatrix *)roomInfo userInfo:(ConsumerAbstractMatrix *)userInfo; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MorePlay/Presenter/YUMIChamberFurthaerDisportExternalizer.m b/YuMi/Modules/YMRoom/View/MorePlay/Presenter/YUMIChamberFurthaerDisportExternalizer.m deleted file mode 100644 index a585e0ef..00000000 --- a/YuMi/Modules/YMRoom/View/MorePlay/Presenter/YUMIChamberFurthaerDisportExternalizer.m +++ /dev/null @@ -1,31 +0,0 @@ -// -// YMRoomMorePlayPresenter.m -// YUMI -// -// Created by YUMI on 2022/10/24. -// - -#import "YUMIChamberFurthaerDisportExternalizer.h" -#import "ChamberAbstractMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "YUMIChamberImportpriseDisportMatrix.h" -#import "ClientDisposition.h" -#import "FBCChamberFurthaerPlayCeremony.h" - -@implementation YUMIChamberFurthaerDisportExternalizer - -- (void)acquireChamberFurthaerDisportTowardsoloudspeaker:(ChamberAbstractMatrix *)roomInfo userInfo:(ConsumerAbstractMatrix *)userInfo { - NSMutableArray * data = [NSMutableArray array]; - - YUMIChamberImportpriseDisportMatrix *sailingModel = [[YUMIChamberImportpriseDisportMatrix alloc] init]; - sailingModel.name = YMLocalizedString(@"YUMI_Room_More_Play_Presenter_0"); - sailingModel.imageName = @"room_sailiing_enter"; - sailingModel.playType = ChamberActivityDisportGenreSailing; - - if ([ClientDisposition partowardsiciptowardsionDisposition].dispositionAbstract.linearlyPoolOpenLevel <= userInfo.userLevelVo.experLevelSeq) { - [data addObject:sailingModel]; - } - [[self acquireRegard] acquireFurthaerDisportsAccomplishment:data]; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/MorePlay/Protocol/FBCChamberFurthaerPlayCeremony.h b/YuMi/Modules/YMRoom/View/MorePlay/Protocol/FBCChamberFurthaerPlayCeremony.h deleted file mode 100644 index dac54a1f..00000000 --- a/YuMi/Modules/YMRoom/View/MorePlay/Protocol/FBCChamberFurthaerPlayCeremony.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMRoomMorePlayProtocol.h -// YUMI -// -// Created by YUMI on 2022/10/24. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCChamberFurthaerPlayCeremony - -- (void)acquireFurthaerDisportsAccomplishment:(NSArray *)list; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MorePlay/Protocol/XPRoomMorePlayProtocol.h b/YuMi/Modules/YMRoom/View/MorePlay/Protocol/XPRoomMorePlayProtocol.h new file mode 100644 index 00000000..28e0873c --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MorePlay/Protocol/XPRoomMorePlayProtocol.h @@ -0,0 +1,19 @@ +// +// YMRoomMorePlayProtocol.h +// YUMI +// +// Created by YUMI on 2022/10/24. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPRoomMorePlayProtocol + +///获取更多玩法成功 +- (void)getMorePlaysSuccess:(NSArray *)list; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MorePlay/View/Cell/XPRoomMorePlayCollectionViewCell.h b/YuMi/Modules/YMRoom/View/MorePlay/View/Cell/XPRoomMorePlayCollectionViewCell.h new file mode 100644 index 00000000..337cb447 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MorePlay/View/Cell/XPRoomMorePlayCollectionViewCell.h @@ -0,0 +1,16 @@ +// +// YMRoomMorePlayCollectionViewCell.h +// YUMI +// +// Created by YUMI on 2022/10/24. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPRoomActivityPlayModel; +@interface XPRoomMorePlayCollectionViewCell : UICollectionViewCell +@property (nonatomic,strong) XPRoomActivityPlayModel *playModel; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MorePlay/View/Cell/XPRoomMorePlayCollectionViewCell.m b/YuMi/Modules/YMRoom/View/MorePlay/View/Cell/XPRoomMorePlayCollectionViewCell.m new file mode 100644 index 00000000..e116c603 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MorePlay/View/Cell/XPRoomMorePlayCollectionViewCell.m @@ -0,0 +1,87 @@ +// +// YMRoomMorePlayCollectionViewCell.m +// YUMI +// +// Created by YUMI on 2022/10/24. +// + +#import "XPRoomMorePlayCollectionViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +///Model +#import "XPRoomActivityPlayModel.h" + +@interface XPRoomMorePlayCollectionViewCell () +///显示logo +@property (nonatomic,strong) NetImageView *logoImageView; +///显示文案 +@property (nonatomic,strong) UILabel *titleLabel; + +@end + +@implementation XPRoomMorePlayCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.logoImageView]; + [self.contentView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.logoImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(64, 64)); + make.centerX.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.contentView); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.logoImageView.mas_bottom).offset(7); + }]; +} + +#pragma mark - Getters And Setters +- (void)setPlayModel:(XPRoomActivityPlayModel *)playModel { + _playModel = playModel; + if (_playModel) { + if ([_playModel.imageName hasPrefix:@"http"]) { + self.logoImageView.imageUrl = _playModel.imageName; + } else { + self.logoImageView.image = [UIImage imageNamed:_playModel.imageName]; + } + self.titleLabel.text = _playModel.name; + } +} + +- (NetImageView *)logoImageView { + if (!_logoImageView) { + _logoImageView = [[NetImageView alloc] init]; + _logoImageView.userInteractionEnabled = YES; + } + return _logoImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:10]; + _titleLabel.textColor = [UIColor whiteColor]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/MorePlay/View/Cell/YUMIChamberFurthaerDisportAssembletionRegardElement.h b/YuMi/Modules/YMRoom/View/MorePlay/View/Cell/YUMIChamberFurthaerDisportAssembletionRegardElement.h deleted file mode 100644 index 4d9618fb..00000000 --- a/YuMi/Modules/YMRoom/View/MorePlay/View/Cell/YUMIChamberFurthaerDisportAssembletionRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomMorePlayCollectionViewCell.h -// YUMI -// -// Created by YUMI on 2022/10/24. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIChamberImportpriseDisportMatrix; -@interface YUMIChamberFurthaerDisportAssembletionRegardElement : UICollectionViewCell -@property (nonatomic,strong) YUMIChamberImportpriseDisportMatrix *disportMatrix; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MorePlay/View/Cell/YUMIChamberFurthaerDisportAssembletionRegardElement.m b/YuMi/Modules/YMRoom/View/MorePlay/View/Cell/YUMIChamberFurthaerDisportAssembletionRegardElement.m deleted file mode 100644 index c7c56284..00000000 --- a/YuMi/Modules/YMRoom/View/MorePlay/View/Cell/YUMIChamberFurthaerDisportAssembletionRegardElement.m +++ /dev/null @@ -1,82 +0,0 @@ -// -// YMRoomMorePlayCollectionViewCell.m -// YUMI -// -// Created by YUMI on 2022/10/24. -// - -#import "YUMIChamberFurthaerDisportAssembletionRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "YUMIChamberImportpriseDisportMatrix.h" - -@interface YUMIChamberFurthaerDisportAssembletionRegardElement () -@property (nonatomic,strong) NetIndicateRegard *brandIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; - -@end - -@implementation YUMIChamberFurthaerDisportAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.brandIndicateRegard]; - [self.contentView addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.brandIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(64, 64)); - make.centerX.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.contentView); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.brandIndicateRegard.mas_bottom).offset(7); - }]; -} - -#pragma mark - Getters And Setters -- (void)setDisportMatrix:(YUMIChamberImportpriseDisportMatrix *)disportMatrix { - _disportMatrix = disportMatrix; - if (_disportMatrix) { - if ([_disportMatrix.imageName hasPrefix:@"http"]) { - self.brandIndicateRegard.imageUrl = _disportMatrix.imageName; - } else { - self.brandIndicateRegard.image = [UIImage imageNamed:_disportMatrix.imageName]; - } - self.titleLabel.text = _disportMatrix.name; - } -} - -- (NetIndicateRegard *)brandIndicateRegard { - if (!_brandIndicateRegard) { - _brandIndicateRegard = [[NetIndicateRegard alloc] init]; - _brandIndicateRegard.userInteractionEnabled = YES; - } - return _brandIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:10]; - _titleLabel.textColor = [UIColor whiteColor]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/MorePlay/View/XPRoomMorePlayViewController.h b/YuMi/Modules/YMRoom/View/MorePlay/View/XPRoomMorePlayViewController.h new file mode 100644 index 00000000..d32550c1 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MorePlay/View/XPRoomMorePlayViewController.h @@ -0,0 +1,16 @@ +// +// YMRoomMorePlayViewController.h +// YUMI +// +// Created by YUMI on 2022/10/24. +// + +#import "MvpViewController.h" +#import "RoomHostDelegate.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomMorePlayViewController : MvpViewController +- (instancetype)initWithdelegate:(id)delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MorePlay/View/XPRoomMorePlayViewController.m b/YuMi/Modules/YMRoom/View/MorePlay/View/XPRoomMorePlayViewController.m new file mode 100644 index 00000000..ef99fac8 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MorePlay/View/XPRoomMorePlayViewController.m @@ -0,0 +1,196 @@ +// +// YMRoomMorePlayViewController.m +// YUMI +// +// Created by YUMI on 2022/10/24. +// + +#import "XPRoomMorePlayViewController.h" +///Third +#import +///Tool +#import "YUMIMacroUitls.h" +#import "UIView+Corner.h" +#import "StatisticsServiceHelper.h" +#import "NSArray+Safe.h" +///Model +#import "XPRoomActivityPlayModel.h" +#import "RoomInfoModel.h" +///View +#import "XPRoomMorePlayCollectionViewCell.h" +#import "XPCandyTreeViewController.h" +#import "XPSailingViewController.h" +///P +#import "XPRoomMorePlayPresenter.h" +#import "XPRoomMorePlayProtocol.h" + +@interface XPRoomMorePlayViewController () +///顶部 +@property (nonatomic,strong) UIView *topView; +///列表 +@property (nonatomic,strong) UICollectionView *collectionView; +///数据源 +@property (nonatomic,strong) NSArray *datasource; +///蒙层 +@property (nonatomic,strong) UIVisualEffectView *effectView; +///host 代理 +@property (nonatomic,weak) idhostDelegate; +@end + +@implementation XPRoomMorePlayViewController + +- (instancetype)initWithdelegate:(id)delegate { + if (self = [super init]) { + self.hostDelegate = delegate; + self.modalPresentationStyle = UIModalPresentationOverFullScreen; + } + return self; +} + +- (__kindof id)createPresenter { + return [[XPRoomMorePlayPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + [self.presenter getRoomMorePlayData:self.hostDelegate.getRoomInfo userInfo:self.hostDelegate.getUserInfo]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.view.backgroundColor = [UIColor clearColor]; + [self.view addSubview:self.topView]; + [self.view addSubview:self.effectView]; + [self.view addSubview:self.collectionView]; +} + +- (void)initSubViewConstraints { + [self.topView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.collectionView.mas_top); + }]; + + [self.effectView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.collectionView); + }]; + + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.height.mas_equalTo(81 + 16 + kSafeAreaBottomHeight + 10); + }]; +} + +- (void)dismissVC { + [self dismissViewControllerAnimated:YES completion:nil]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPRoomMorePlayCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPRoomMorePlayCollectionViewCell class]) forIndexPath:indexPath]; + cell.playModel = [self.datasource safeObjectAtIndex1:indexPath.row]; + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + [collectionView deselectItemAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + XPRoomActivityPlayModel * info = [self.datasource safeObjectAtIndex1:indexPath.row]; + switch (info.playType) { + case RoomActivityPlayTypeCandyTree: + { + [self dismissVC]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_pop_click eventAttributes:@{@"bannerName": YMLocalizedString(@"XPRoomMorePlayViewController0")}]; + XPCandyTreeViewController * candyTreeVC = [[XPCandyTreeViewController alloc] initWithDelegate:self.hostDelegate]; + candyTreeVC.modalPresentationStyle = UIModalPresentationOverFullScreen; + [self.hostDelegate.getCurrentNav presentViewController:candyTreeVC animated:YES completion:nil]; + } + break; + case RoomActivityPlayTypeSailing: + { + [self dismissVC]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_pop_click eventAttributes:@{@"bannerName": YMLocalizedString(@"XPRoomMorePlayViewController1")}]; + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; + XPSailingViewController * sailingVC = [[XPSailingViewController alloc] initWithRoomUid:roomUid]; + [self.hostDelegate.getCurrentNav presentViewController:sailingVC animated:YES completion:nil]; + } + break; + default: + break; + } + } + +} + +#pragma mark - XPRoomMorePlayProtocol +- (void)getMorePlaysSuccess:(NSArray *)list { + self.datasource = list; + CGFloat contentHeight= 24 + kSafeAreaBottomHeight + 10; + CGFloat itemHeight = 81; + int page = list.count % 3; + int scale = (int)list.count / (int)3; + if (page == 0) { + contentHeight += (scale *itemHeight); + } else { + contentHeight += ((scale+1) *itemHeight + scale * 12); + } + CAShapeLayer * layer = [CAShapeLayer layer]; + UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, contentHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(8, 8)]; + layer.path = path.CGPath; + self.collectionView.layer.mask = layer; + [self.collectionView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(contentHeight); + }]; + [self.collectionView reloadData]; +} + +#pragma mark - Getters And Setters +- (UIView *)topView { + if (!_topView) { + _topView = [[UIView alloc] init]; + _topView.backgroundColor = [UIColor clearColor]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissVC)]; + [_topView addGestureRecognizer:tap]; + } + return _topView; +} + +- (UICollectionView *)collectionView{ + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.itemSize = CGSizeMake(KScreenWidth / 3.0, 81); + layout.sectionInset = UIEdgeInsetsMake(16, 0, 0, 0); + layout.minimumLineSpacing = 10; + layout.minimumInteritemSpacing = 0; + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.backgroundColor = [UIColor clearColor]; + [_collectionView registerClass:[XPRoomMorePlayCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPRoomMorePlayCollectionViewCell class])]; + + } + return _collectionView; +} + +- (UIVisualEffectView *)effectView { + if (!_effectView) { + UIBlurEffect *beffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; + _effectView = [[UIVisualEffectView alloc] initWithEffect:beffect]; + + UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, KScreenHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(8, 8)]; + CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; + maskLayer.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); + maskLayer.path = maskPath.CGPath; + _effectView.layer.mask = maskLayer; + } + return _effectView; +} + + + +@end diff --git a/YuMi/Modules/YMRoom/View/MorePlay/View/YUMIChamberFurthaerDisportRegardGovernancer.h b/YuMi/Modules/YMRoom/View/MorePlay/View/YUMIChamberFurthaerDisportRegardGovernancer.h deleted file mode 100644 index 577ccd8d..00000000 --- a/YuMi/Modules/YMRoom/View/MorePlay/View/YUMIChamberFurthaerDisportRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomMorePlayViewController.h -// YUMI -// -// Created by YUMI on 2022/10/24. -// - -#import "MvpRegardGovernancer.h" -#import "ChamberHostRepresendtation.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberFurthaerDisportRegardGovernancer : MvpRegardGovernancer -- (instancetype)initAboutdelegtowardse:(id)delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MorePlay/View/YUMIChamberFurthaerDisportRegardGovernancer.m b/YuMi/Modules/YMRoom/View/MorePlay/View/YUMIChamberFurthaerDisportRegardGovernancer.m deleted file mode 100644 index e2edabb7..00000000 --- a/YuMi/Modules/YMRoom/View/MorePlay/View/YUMIChamberFurthaerDisportRegardGovernancer.m +++ /dev/null @@ -1,186 +0,0 @@ -// -// YMRoomMorePlayViewController.m -// YUMI -// -// Created by YUMI on 2022/10/24. -// - -#import "YUMIChamberFurthaerDisportRegardGovernancer.h" -#import -#import "YUMIMacroUitls.h" -#import "UIView+Corner.h" -#import "StatsticsticsServingFacilitater.h" -#import "NSArray+Safe.h" -#import "YUMIChamberImportpriseDisportMatrix.h" -#import "ChamberAbstractMatrix.h" -#import "YUMIChamberFurthaerDisportAssembletionRegardElement.h" -#import "YUMIConfectioneryTimberRegardGovernancer.h" -#import "YUMIMarchingRegardGovernancer.h" -#import "YUMIChamberFurthaerDisportExternalizer.h" -#import "FBCChamberFurthaerPlayCeremony.h" - -@interface YUMIChamberFurthaerDisportRegardGovernancer () -@property (nonatomic,strong) UIView *apexRegard; -@property (nonatomic,strong) UICollectionView *collectionView; -@property (nonatomic,strong) NSArray *datasource; -@property (nonatomic,strong) UIVisualEffectView *impressionRegard; -@property (nonatomic,weak) idhostRepresedtation; -@end - -@implementation YUMIChamberFurthaerDisportRegardGovernancer - -- (instancetype)initAboutdelegtowardse:(id)delegate { - if (self = [super init]) { - self.hostRepresedtation = delegate; - self.modalPresentationStyle = UIModalPresentationOverFullScreen; - } - return self; -} - -- (__kindof id)producePresimport { - return [[YUMIChamberFurthaerDisportExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self.presimport acquireChamberFurthaerDisportTowardsoloudspeaker:self.hostRepresedtation.acquireChamberAbstract userInfo:self.hostRepresedtation.getUserInfo]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.view.backgroundColor = [UIColor clearColor]; - [self.view addSubview:self.apexRegard]; - [self.view addSubview:self.impressionRegard]; - [self.view addSubview:self.collectionView]; -} - -- (void)initChildLyRestrictions { - [self.apexRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.collectionView.mas_top); - }]; - - [self.impressionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.collectionView); - }]; - - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.height.mas_equalTo(81 + 16 + kSafeAreaBottomHeight + 10); - }]; -} - -- (void)prohibitiaplictowardsionearVewC { - [self dismissViewControllerAnimated:YES completion:nil]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMIChamberFurthaerDisportAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIChamberFurthaerDisportAssembletionRegardElement class]) forIndexPath:indexPath]; - cell.disportMatrix = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - [collectionView deselectItemAtIndexPath:indexPath animated:YES]; - if (self.datasource.count > 0) { - YUMIChamberImportpriseDisportMatrix * info = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - switch (info.playType) { - case ChamberActivityDisportGenreCandyTree: - { - [self prohibitiaplictowardsionearVewC]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_pop_click eventAttributes:@{@"bannerName": YMLocalizedString(@"YUMI_Room_More_Play_View_Controller_0")}]; - YUMIConfectioneryTimberRegardGovernancer * candyTreeVC = [[YUMIConfectioneryTimberRegardGovernancer alloc] initWithDelegate:self.hostRepresedtation]; - candyTreeVC.modalPresentationStyle = UIModalPresentationOverFullScreen; - [self.hostRepresedtation.acquireUniversalNev presentViewController:candyTreeVC animated:YES completion:nil]; - } - break; - case ChamberActivityDisportGenreSailing: - { - [self prohibitiaplictowardsionearVewC]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_pop_click eventAttributes:@{@"bannerName": YMLocalizedString(@"YUMI_Room_More_Play_View_Controller_1")}]; - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.uid]; - YUMIMarchingRegardGovernancer * sailingVC = [[YUMIMarchingRegardGovernancer alloc] initAboutChamberCid:roomUid]; - [self.hostRepresedtation.acquireUniversalNev presentViewController:sailingVC animated:YES completion:nil]; - } - break; - default: - break; - } - } - -} - -#pragma mark - FBCChamberFurthaerPlayCeremony -- (void)acquireFurthaerDisportsAccomplishment:(NSArray *)list { - self.datasource = list; - CGFloat contentHeight= 24 + kSafeAreaBottomHeight + 10; - CGFloat itemAltitude = 81; - int page = list.count % 3; - int scale = (int)list.count / (int)3; - if (page == 0) { - contentHeight += (scale *itemAltitude); - } else { - contentHeight += ((scale+1) *itemAltitude + scale * 12); - } - CAShapeLayer * layer = [CAShapeLayer layer]; - UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, contentHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(8, 8)]; - layer.path = path.CGPath; - self.collectionView.layer.mask = layer; - [self.collectionView mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(contentHeight); - }]; - [self.collectionView reloadData]; -} - -#pragma mark - Getters And Setters -- (UIView *)apexRegard { - if (!_apexRegard) { - _apexRegard = [[UIView alloc] init]; - _apexRegard.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(prohibitiaplictowardsionearVewC)]; - [_apexRegard addGestureRecognizer:tap]; - } - return _apexRegard; -} - -- (UICollectionView *)collectionView{ - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.itemSize = CGSizeMake(KScreenWidth / 3.0, 81); - layout.sectionInset = UIEdgeInsetsMake(16, 0, 0, 0); - layout.minimumLineSpacing = 10; - layout.minimumInteritemSpacing = 0; - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.backgroundColor = [UIColor clearColor]; - [_collectionView registerClass:[YUMIChamberFurthaerDisportAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIChamberFurthaerDisportAssembletionRegardElement class])]; - - } - return _collectionView; -} - -- (UIVisualEffectView *)impressionRegard { - if (!_impressionRegard) { - UIBlurEffect *beffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; - _impressionRegard = [[UIVisualEffectView alloc] initWithEffect:beffect]; - - UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, KScreenHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(8, 8)]; - CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; - maskLayer.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); - maskLayer.path = maskPath.CGPath; - _impressionRegard.layer.mask = maskLayer; - } - return _impressionRegard; -} - - - -@end diff --git a/YuMi/Modules/YMRoom/View/MoreView/Api/Api+MoreMenu.h b/YuMi/Modules/YMRoom/View/MoreView/Api/Api+MoreMenu.h index 7c5232f8..aeeeeb4b 100644 --- a/YuMi/Modules/YMRoom/View/MoreView/Api/Api+MoreMenu.h +++ b/YuMi/Modules/YMRoom/View/MoreView/Api/Api+MoreMenu.h @@ -10,26 +10,65 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (MoreMenu) -+ (void)unfoildChamberPresentBWSttess:(HttpRequestHelperCompletion)completion uid:(NSString *)uid roomUid:(NSString *)roomUid; +/// 开启房间礼物值 +/// @param completion 完成 +/// @param uid 操作人的uid +/// @param roomUid 房主的uid ++ (void)openRoomGiftValue:(HttpRequestHelperCompletion)completion uid:(NSString *)uid roomUid:(NSString *)roomUid; -+ (void)concludeChamberPresentBWSttess:(HttpRequestHelperCompletion)completion uid:(NSString *)uid roomUid:(NSString *)roomUid; +/// 关闭房间礼物值 +/// @param completion 完成 +/// @param uid 操作人的uid +/// @param roomUid 房主的uid ++ (void)closeRoomGiftValue:(HttpRequestHelperCompletion)completion uid:(NSString *)uid roomUid:(NSString *)roomUid; -+ (void)refurbishChamberAbstractCommunictowardsionDeclare:(HttpRequestHelperCompletion)complection roomId:(NSString *)roomId isCloseScreen:(NSString *)isCloseScreen ticket:(NSString *)ticket uid:(NSString *)uid; -+ (void)centiretyforChamberFantowardsics:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; +/// 更新房间信息 公屏开关 +/// @param complection 完成 +/// @param roomId 房间的id +/// @param isCloseScreen 是否关闭公屏 +/// @param ticket ticket +/// @param uid uid ++ (void)updateRoomInfoMessageState:(HttpRequestHelperCompletion)complection roomId:(NSString *)roomId isCloseScreen:(NSString *)isCloseScreen ticket:(NSString *)ticket uid:(NSString *)uid; +/// 邀请粉丝的 +/// @param completion 完成 +/// @param roomUid 房间的uid ++ (void)inviteRoomFans:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; -+ (void)examineCentiretyforChamberFantowardsics:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; +/// 获取当前邀请粉丝的状态 +/// @param completion 完成 +/// @param roomUid 房间的uid ++ (void)checkInviteRoomFans:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; -+ (void)unfoildChamberEngagement:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; +/// 开启相亲模式 +/// @param completion 完成 +/// @param roomUid 房主的uid ++ (void)openRoomDating:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; -+ (void)concludeChamberEngagement:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; +/// 关闭相亲模式 +/// @param completion 完成 +/// @param roomUid 房主的uid ++ (void)closeRoomDating:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; -+ (void)chamberWirelessAcquireMsg:(HttpRequestHelperCompletion)completion roomType:(NSString *)type; +/// 获取开黑广播消息 +/// @param completion 完成 +/// @param type 房间类型 ++ (void)roomRadioGetMsg:(HttpRequestHelperCompletion)completion roomType:(NSString *)type; -+ (void)acquireConsumerGuruChamberLoudspeaker:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; +/// 获取房间贵族小喇叭 +/// @param completion 完成 +/// @param roomUid 房主的uid ++ (void)getUserVipRoomTrumpet:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; -+ (void)requisitionConcludeKellegChamberCombate:(HttpRequestHelperCompletion)completion roundId:(NSString *)roundId; +/// 结束个播房PK +/// @param completion 完成 +/// @param roundId PK场次id ++ (void)requestEndAnchorRoomPk:(HttpRequestHelperCompletion)completion roundId:(NSString *)roundId; -+ (void)requisitionCleancreen:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid uid:(NSString *)uid; +/// 清空公屏 +/// @param completion 完成 +/// @param roomUid 房间uid +/// @param uid 操作人uid ++ (void)requestCleanScreen:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid uid:(NSString *)uid; @end diff --git a/YuMi/Modules/YMRoom/View/MoreView/Api/Api+MoreMenu.m b/YuMi/Modules/YMRoom/View/MoreView/Api/Api+MoreMenu.m index 8918388c..b08616c1 100644 --- a/YuMi/Modules/YMRoom/View/MoreView/Api/Api+MoreMenu.m +++ b/YuMi/Modules/YMRoom/View/MoreView/Api/Api+MoreMenu.m @@ -9,59 +9,95 @@ #import @implementation Api (MoreMenu) -+ (void)unfoildChamberPresentBWSttess:(HttpRequestHelperCompletion)completion uid:(NSString *)uid roomUid:(NSString *)roomUid { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9naWZ0L3ZhbHVlL29wZW4="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, roomUid, nil]; +/// 开启房间礼物值 +/// @param completion 完成 +/// @param uid 操作人的uid +/// @param roomUid 房主的uid ++ (void)openRoomGiftValue:(HttpRequestHelperCompletion)completion uid:(NSString *)uid roomUid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9naWZ0L3ZhbHVlL29wZW4="];///room/gift/value/open + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, roomUid, nil]; } -+ (void)concludeChamberPresentBWSttess:(HttpRequestHelperCompletion)completion uid:(NSString *)uid roomUid:(NSString *)roomUid { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9naWZ0L3ZhbHVlL2Nsb3Nl"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, roomUid, nil]; +/// 关闭房间礼物值 +/// @param completion 完成 +/// @param uid 操作人的uid +/// @param roomUid 房主的uid ++ (void)closeRoomGiftValue:(HttpRequestHelperCompletion)completion uid:(NSString *)uid roomUid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9naWZ0L3ZhbHVlL2Nsb3Nl"];///room/gift/value/close + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, roomUid, nil]; } -+ (void)refurbishChamberAbstractCommunictowardsionDeclare:(HttpRequestHelperCompletion)complection roomId:(NSString *)roomId isCloseScreen:(NSString *)isCloseScreen ticket:(NSString *)ticket uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9zZXRDbG9zZVNjcmVlbg=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, roomId, isCloseScreen, ticket, uid, nil]; +/// 更新房间信息 公屏开关 +/// @param complection 完成 +/// @param roomId 房间的id +/// @param isCloseScreen 是否关闭公屏 +/// @param ticket ticket +/// @param uid uid ++ (void)updateRoomInfoMessageState:(HttpRequestHelperCompletion)complection roomId:(NSString *)roomId isCloseScreen:(NSString *)isCloseScreen ticket:(NSString *)ticket uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9zZXRDbG9zZVNjcmVlbg=="];///room/setCloseScreen + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, roomId, isCloseScreen, ticket, uid, nil]; } -+ (void)centiretyforChamberFantowardsics:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9pbnZpdGVGYW5z"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, nil]; +/// 邀请粉丝的 +/// @param completion 完成 +/// @param roomUid 房间的uid ++ (void)inviteRoomFans:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9pbnZpdGVGYW5z"];///room/inviteFans + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, nil]; } -+ (void)examineCentiretyforChamberFantowardsics:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9pbnZpdGVGYW5z"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, nil]; +/// 获取当前邀请粉丝的状态 +/// @param completion 完成 +/// @param roomUid 房间的uid ++ (void)checkInviteRoomFans:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9pbnZpdGVGYW5z"];///room/inviteFans + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, nil]; } -+ (void)unfoildChamberEngagement:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { - NSString * fang = [NSString stringFromBase64String:@"YmxpbmQtZGF0ZS9lbmFibGU="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, nil]; +/// 开启相亲模式 +/// @param completion 完成 +/// @param roomUid 房主的uid ++ (void)openRoomDating:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@"YmxpbmQtZGF0ZS9lbmFibGU="];///blind-date/enable + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, nil]; } -+ (void)concludeChamberEngagement:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { - NSString * fang = [NSString stringFromBase64String:@"YmxpbmQtZGF0ZS9kaXNhYmxl"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, nil]; +/// 关闭相亲模式 +/// @param completion 完成 +/// @param roomUid 房主的uid ++ (void)closeRoomDating:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@"YmxpbmQtZGF0ZS9kaXNhYmxl"];///blind-date/disable + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, nil]; } -+ (void)chamberWirelessAcquireMsg:(HttpRequestHelperCompletion)completion roomType:(NSString *)type { - NSString * fang = [NSString stringFromBase64String:@"YnJvYWQvZ2V0TXNn"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, type, nil]; +/// 获取开黑广播消息 ++ (void)roomRadioGetMsg:(HttpRequestHelperCompletion)completion roomType:(NSString *)type { + NSString * fang = [NSString stringFromBase64String:@"YnJvYWQvZ2V0TXNn"];///broad/getMsg + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, type, nil]; } -+ (void)acquireConsumerGuruChamberLoudspeaker:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { - NSString * fang = [NSString stringFromBase64String:@"dmlwL2dldFVzZXJWaXBSb29tSG9ybg=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, nil]; +/// 获取房间贵族小喇叭 +/// @param completion 完成 ++ (void)getUserVipRoomTrumpet:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@"dmlwL2dldFVzZXJWaXBSb29tSG9ybg=="];///vip/getUserVipRoomHorn + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, nil]; } -+ (void)requisitionConcludeKellegChamberCombate:(HttpRequestHelperCompletion)completion roundId:(NSString *)roundId { - NSString * fang = [NSString stringFromBase64String:@"Y3Jvc3Nyb29tcGtyb3VuZC9lbmRTaW5nbGVSb29tUGs="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roundId, nil]; +/// 结束个播房PK +/// @param completion 完成 +/// @param roundId PK场次id ++ (void)requestEndAnchorRoomPk:(HttpRequestHelperCompletion)completion roundId:(NSString *)roundId { + NSString * fang = [NSString stringFromBase64String:@"Y3Jvc3Nyb29tcGtyb3VuZC9lbmRTaW5nbGVSb29tUGs="];///crossroompkround/endSingleRoomPk + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roundId, nil]; } -+ (void)requisitionCleancreen:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9jbGVhci9oaXN0b3J5L3JlY3JvZA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, uid, nil]; +/// 清空公屏 +/// @param completion 完成 +/// @param roomUid 房间uid +/// @param uid 操作人uid ++ (void)requestCleanScreen:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9jbGVhci9oaXN0b3J5L3JlY3JvZA=="];///room/clear/history/recrod + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, uid, nil]; } @end diff --git a/YuMi/Modules/YMRoom/View/MoreView/Model/CallforFanaticsMatrix.h b/YuMi/Modules/YMRoom/View/MoreView/Model/CallforFanaticsMatrix.h deleted file mode 100644 index 3a46f176..00000000 --- a/YuMi/Modules/YMRoom/View/MoreView/Model/CallforFanaticsMatrix.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// CallforFanaticsMatrix.h -// YUMI -// -// Created by YUMI on 2021/12/27. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface CallforFanaticsMatrix : NSObject -@property (nonatomic,assign) NSInteger fansNum; -@property (nonatomic,assign) int inviteInterval; -@property (nonatomic,assign) int inviteTimes; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MoreView/Model/CallforFanaticsMatrix.m b/YuMi/Modules/YMRoom/View/MoreView/Model/CallforFanaticsMatrix.m deleted file mode 100644 index 62fed837..00000000 --- a/YuMi/Modules/YMRoom/View/MoreView/Model/CallforFanaticsMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// CallforFanaticsMatrix.m -// YUMI -// -// Created by YUMI on 2021/12/27. -// - -#import "CallforFanaticsMatrix.h" - -@implementation CallforFanaticsMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/MoreView/Model/InviteFansModel.h b/YuMi/Modules/YMRoom/View/MoreView/Model/InviteFansModel.h new file mode 100644 index 00000000..a9ee9244 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MoreView/Model/InviteFansModel.h @@ -0,0 +1,21 @@ +// +// InviteFansModel.h +// YUMI +// +// Created by YUMI on 2021/12/27. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface InviteFansModel : NSObject +///粉丝数 +@property (nonatomic,assign) NSInteger fansNum; +///下次邀请的时间 +@property (nonatomic,assign) int inviteInterval; +///邀请次数 +@property (nonatomic,assign) int inviteTimes; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MoreView/Model/InviteFansModel.m b/YuMi/Modules/YMRoom/View/MoreView/Model/InviteFansModel.m new file mode 100644 index 00000000..5c2e8db1 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MoreView/Model/InviteFansModel.m @@ -0,0 +1,12 @@ +// +// InviteFansModel.m +// YUMI +// +// Created by YUMI on 2021/12/27. +// + +#import "InviteFansModel.h" + +@implementation InviteFansModel + +@end diff --git a/YuMi/Modules/YMRoom/View/MoreView/Model/XPRoomMoreItemModel.h b/YuMi/Modules/YMRoom/View/MoreView/Model/XPRoomMoreItemModel.h new file mode 100644 index 00000000..5d3553c1 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MoreView/Model/XPRoomMoreItemModel.h @@ -0,0 +1,75 @@ +// +// YMRoomMoreItemModel.h +// YUMI +// +// Created by YUMI on 2021/12/11. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, RoomMoreMenuType) { + ///礼物值关闭 + RoomMoreMenuType_Gift_Value_Close = 1, + ///礼物值开启 + RoomMoreMenuType_Gift_Value_Open = 2, + ///公屏关闭 + RoomMoreMenuType_Message_Screen_Close = 3, + ///公屏开启 + RoomMoreMenuType_Message_Screen_Open = 4, + ///我的礼物特效关闭 + RoomMoreMenuType_Gift_Effect_Close = 5, + ///我的礼物特效开启 + RoomMoreMenuType_Gift_Effect_Open = 6, + ///房间设置 + RoomMoreMenuType_Room_Setting = 7, + ///邀请粉丝 + RoomMoreMenuType_Invite_Fans = 8, + ///开启相亲 + RoomMoreMenuType_Room_Dating_Open = 9, + ///关闭相亲 + RoomMoreMenuType_Room_Dating_Close = 10, + ///发布广播 + RoomMoreMenuType_Release_Radio = 11, + ///房间小喇叭 + RoomMoreMenuType_Room_trumpet = 12, + ///开启跨房PK + RoomMoreMenuType_Room_Across_PK_Open = 13, + ///关闭跨房pk + RoomMoreMenuType_Room_Across_PK_Close = 14, + ///开启主播PK + RoomMoreMenuType_Room_Anchor_PK_Open = 15, + ///关闭主播Pk + RoomMoreMenuType_Room_Anchor_PK_Close = 16, + ///清空公屏 + RoomMoreMenuType_Message_Screen_Clear = 17, + ///开启房间pk + RoomMoreMenuType_Room_PK_Open = 18, + ///关闭房间pk + RoomMoreMenuType_Room_PK_Close = 19, + ///发红包 + RoomMoreMenuType_Room_redPacket = 20, + ///扬声器 + RoomMoreMenuType_Room_Voice = 21, + ///心愿礼物 + RoomMoreMenuType_Room_Wish_Gift = 22, +}; + +@interface XPRoomMoreItemModel : NSObject +///礼物的名称 +@property (nonatomic,copy) NSString *imageName; +///选中状态 +@property (nonatomic, assign) BOOL isSelected; +///显示的文字 +@property (nonatomic,copy) NSString *title; +///标题的颜色 +@property (nonatomic,strong) UIColor *titleColor; +///类型 +@property (nonatomic,assign) RoomMoreMenuType type; + ++(XPRoomMoreItemModel *)initWithTitle:(NSString *)title imageName:(NSString *)imageName type:(RoomMoreMenuType)type titleColor:(UIColor *)titleColor; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MoreView/Model/XPRoomMoreItemModel.m b/YuMi/Modules/YMRoom/View/MoreView/Model/XPRoomMoreItemModel.m new file mode 100644 index 00000000..15c057d5 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MoreView/Model/XPRoomMoreItemModel.m @@ -0,0 +1,21 @@ +// +// YMRoomMoreItemModel.m +// YUMI +// +// Created by YUMI on 2021/12/11. +// + +#import "XPRoomMoreItemModel.h" + +@implementation XPRoomMoreItemModel + ++ (XPRoomMoreItemModel *)initWithTitle:(NSString *)title imageName:(NSString *)imageName type:(RoomMoreMenuType)type titleColor:(UIColor *)titleColor { + XPRoomMoreItemModel * model = [[self alloc] init]; + model.title = title; + model.imageName = imageName; + model.type = type; + model.titleColor = titleColor; + return model; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/MoreView/Model/YUMIChamberFurthaerProvisionMatrix.h b/YuMi/Modules/YMRoom/View/MoreView/Model/YUMIChamberFurthaerProvisionMatrix.h deleted file mode 100644 index 2d9ea265..00000000 --- a/YuMi/Modules/YMRoom/View/MoreView/Model/YUMIChamberFurthaerProvisionMatrix.h +++ /dev/null @@ -1,70 +0,0 @@ -// -// YMRoomMoreItemModel.h -// YUMI -// -// Created by YUMI on 2021/12/11. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, ChamberMoreParrotGenre) { - - ChamberMoreParrotGenre_Gift_Value_Close = 1, - - ChamberMoreParrotGenre_Gift_Value_Open = 2, - - ChamberMoreParrotGenre_Message_Screen_Close = 3, - - ChamberMoreParrotGenre_Message_Screen_Open = 4, - - ChamberMoreParrotGenre_Gift_Effect_Close = 5, - - ChamberMoreParrotGenre_Gift_Effect_Open = 6, - - ChamberMoreParrotGenre_Room_Setting = 7, - - ChamberMoreParrotGenre_Invite_Fans = 8, - - ChamberMoreParrotGenre_Room_Dating_Open = 9, - - ChamberMoreParrotGenre_Room_Dating_Close = 10, - - ChamberMoreParrotGenre_Release_Radio = 11, - - ChamberMoreParrotGenre_Room_trumpet = 12, - - ChamberMoreParrotGenre_Room_Across_PK_Open = 13, - - ChamberMoreParrotGenre_Room_Across_PK_Close = 14, - - ChamberMoreParrotGenre_Room_Anchor_PK_Open = 15, - - ChamberMoreParrotGenre_Room_Anchor_PK_Close = 16, - - ChamberMoreParrotGenre_Message_Screen_Clear = 17, - - ChamberMoreParrotGenre_Room_PK_Open = 18, - - ChamberMoreParrotGenre_Room_PK_Close = 19, - - ChamberMoreParrotGenre_Room_redPacket = 20, - - ChamberMoreParrotGenre_Room_Voice = 21, - - ChamberMoreParrotGenre_Room_Wish_Gift = 22, -}; - -@interface YUMIChamberFurthaerProvisionMatrix : NSObject -@property (nonatomic,copy) NSString *imageName; -@property (nonatomic, assign) BOOL isSelected; -@property (nonatomic,copy) NSString *title; -@property (nonatomic,strong) UIColor *titleColor; -@property (nonatomic,assign) ChamberMoreParrotGenre type; - -+(YUMIChamberFurthaerProvisionMatrix *)initWithTitle:(NSString *)title imageName:(NSString *)imageName type:(ChamberMoreParrotGenre)type titleColor:(UIColor *)titleColor; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MoreView/Model/YUMIChamberFurthaerProvisionMatrix.m b/YuMi/Modules/YMRoom/View/MoreView/Model/YUMIChamberFurthaerProvisionMatrix.m deleted file mode 100644 index b6a2378d..00000000 --- a/YuMi/Modules/YMRoom/View/MoreView/Model/YUMIChamberFurthaerProvisionMatrix.m +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMRoomMoreItemModel.m -// YUMI -// -// Created by YUMI on 2021/12/11. -// - -#import "YUMIChamberFurthaerProvisionMatrix.h" - -@implementation YUMIChamberFurthaerProvisionMatrix - -+ (YUMIChamberFurthaerProvisionMatrix *)initWithTitle:(NSString *)title imageName:(NSString *)imageName type:(ChamberMoreParrotGenre)type titleColor:(UIColor *)titleColor { - YUMIChamberFurthaerProvisionMatrix * model = [[self alloc] init]; - model.title = title; - model.imageName = imageName; - model.type = type; - model.titleColor = titleColor; - return model; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.h b/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.h new file mode 100644 index 00000000..3bc17702 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.h @@ -0,0 +1,56 @@ +// +// YMMoreMenuPresenter.h +// YUMI +// +// Created by YUMI on 2021/12/11. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN +@class RoomInfoModel; +@interface XPMoreMenuPresenter : BaseMvpPresenter + +///获取更多菜单 +- (void)getMoreMenuDataSource:(RoomInfoModel *)roomInfo isSuperAdmin:(BOOL)isSuperAdmin; + +/// 开启房间礼物值 +/// @param roomUid 房间的uid +- (void)openRoomGiftValue:(NSString *)roomUid; + +/// 关闭房间礼物值 +/// @param roomUid 房间的uid +- (void)closeRoomGiftValue:(NSString *)roomUid; + +/// 更新公屏状态 +/// @param isCloseScreen 是否关闭公屏 +/// @param roomId 房间的id +- (void)updateRoomMessageScreenState:(BOOL)isCloseScreen roomId:(NSString *)roomId; + +/// 开启相亲模式 +/// @param roomUid 房主的uid +- (void)openRoomDating:(NSString *)roomUid; + +/// 关闭相亲模式 +/// @param roomUid 房主的uid +- (void)closeRoomDating:(NSString *)roomUid; + +///获取房间广播模板内容 +/// @param type 房间类型 +- (void)getRoomRadioMessageListWithType:(NSString *)type; + +///结束个播跨房PK +- (void)requestFinishAnchorPK:(NSString *)roundId; + +/// 清空公屏 +/// @param roomUid 房主的uid +/// @param uid 操作人的uid +- (void)cleanScreen:(NSString *)roomUid uid:(NSString *)uid; + +/// 取消匹配随机PK +/// @param roomUid 房间UID +- (void)requestCancelMatchRandomPK:(NSString *)roomUid; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.m b/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.m new file mode 100644 index 00000000..f9c93485 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.m @@ -0,0 +1,275 @@ +// +// YMMoreMenuPresenter.m +// YUMI +// +// Created by YUMI on 2021/12/11. +// + +#import "XPMoreMenuPresenter.h" +#import +#import "Api+MoreMenu.h" +#import "ThemeColor+Room.h" +#import "AccountInfoStorage.h" +#import "ClientConfig.h" +#import "RtcManager.h" +#import "Api+AnchorPk.h" +///Model +#import "XPRoomMoreItemModel.h" +#import "RoomInfoModel.h" +#import "XPReleaseRadioModel.h" +///P +#import "XPMoreMenuProtocol.h" +#import "DJDKMIMOMColor.h" +#import + +@implementation XPMoreMenuPresenter + +- (void)getMoreMenuDataSource:(RoomInfoModel *)roomInfo isSuperAdmin:(BOOL)isSuperAdmin { + XPRoomMoreItemModel * roomPK = [[XPRoomMoreItemModel alloc] init]; + roomPK.title = roomInfo.roomModeType == RoomModeType_Open_PK_Mode ? @"PK中..." : YMLocalizedString(@"XPMoreMenuPresenter1"); + roomPK.imageName= @"room_more_menu_room_pk"; + roomPK.type = roomInfo.roomModeType == RoomModeType_Open_PK_Mode ? RoomMoreMenuType_Room_PK_Close : RoomMoreMenuType_Room_PK_Open; + roomPK.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; + + XPRoomMoreItemModel * giftValue = [[XPRoomMoreItemModel alloc] init]; + giftValue.title = roomInfo.showGiftValue ? @"关闭礼物值" : YMLocalizedString(@"XPMoreMenuPresenter3"); + giftValue.imageName= @"room_more_menu_gift_value"; + giftValue.type = roomInfo.showGiftValue ? RoomMoreMenuType_Gift_Value_Close : RoomMoreMenuType_Gift_Value_Open; + giftValue.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; + + XPRoomMoreItemModel * giftEffect = [[XPRoomMoreItemModel alloc] init]; + giftEffect.title = roomInfo.hasAnimationEffect ? @"关闭我的特效" : YMLocalizedString(@"XPMoreMenuPresenter5"); + giftEffect.imageName = @"room_more_menu_gift_effect"; + giftEffect.type = roomInfo.hasAnimationEffect ? RoomMoreMenuType_Gift_Effect_Close : RoomMoreMenuType_Gift_Effect_Open; + giftEffect.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; + + XPRoomMoreItemModel * wishGift = [[XPRoomMoreItemModel alloc] init]; + wishGift.title = YMLocalizedString(@"XPMoreMenuPresenter6"); + wishGift.imageName = @"room_more_menu_wish_gift"; + wishGift.type = RoomMoreMenuType_Room_Wish_Gift; + wishGift.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; + + XPRoomMoreItemModel * dating = [[XPRoomMoreItemModel alloc] init]; + dating.title = roomInfo.roomModeType == RoomModeType_Open_Blind ? @"相亲中.." : YMLocalizedString(@"XPMoreMenuPresenter8"); + dating.imageName = @"room_more_menu_dating"; + dating.type = roomInfo.roomModeType == RoomModeType_Open_Blind ? RoomMoreMenuType_Room_Dating_Close : RoomMoreMenuType_Room_Dating_Open; + dating.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; + + XPRoomMoreItemModel * acrossRoomPK = [[XPRoomMoreItemModel alloc] init]; + acrossRoomPK.title = roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode ? @"跨房PK中" : @"跨房PK"; + acrossRoomPK.imageName = @"room_more_menu_cross_pk"; + acrossRoomPK.type = roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode ? RoomMoreMenuType_Room_Across_PK_Close : RoomMoreMenuType_Room_Across_PK_Open; + acrossRoomPK.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; + + XPRoomMoreItemModel * anchorRoomPK = [[XPRoomMoreItemModel alloc] init]; + anchorRoomPK.title = roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode ? @"主播PK中" : @"主播PK"; + anchorRoomPK.imageName = @"room_more_menu_anchor_pk"; + anchorRoomPK.type = roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode ? RoomMoreMenuType_Room_Anchor_PK_Close : RoomMoreMenuType_Room_Anchor_PK_Open; + anchorRoomPK.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; + if (roomInfo.pkState == AcrossRoomPkStateTypePenalty) { + if ([roomInfo.winUid isEqualToString:[AccountInfoStorage instance].getUid]) { + anchorRoomPK.title = @"结束PK"; + } else if ([roomInfo.winUid isEqualToString:roomInfo.pkUid]) { + anchorRoomPK.title = YMLocalizedString(@"XPMoreMenuPresenter14"); + } else { + anchorRoomPK.title = @"结束PK"; + } + } else if (roomInfo.pkState == AcrossRoomPkStateTypePenaltyEnd) { + anchorRoomPK.title = @"结束PK"; + } + if (roomInfo.pkMatchStartTime) { + anchorRoomPK.title = YMLocalizedString(@"XPMoreMenuPresenter17"); + } + XPRoomMoreItemModel * messageScreen = [[XPRoomMoreItemModel alloc] init]; + messageScreen.title = roomInfo.isCloseScreen ? @"开启公屏" : YMLocalizedString(@"XPMoreMenuPresenter19"); + messageScreen.imageName = @"room_more_menu_message"; + messageScreen.type = roomInfo.isCloseScreen ? RoomMoreMenuType_Message_Screen_Open : RoomMoreMenuType_Message_Screen_Close; + messageScreen.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; + + XPRoomMoreItemModel * clearScreen = [[XPRoomMoreItemModel alloc] init]; + clearScreen.title = YMLocalizedString(@"XPMoreMenuPresenter20"); + clearScreen.imageName = @"room_more_menu_message_clean"; + clearScreen.type = RoomMoreMenuType_Message_Screen_Clear; + clearScreen.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; + + XPRoomMoreItemModel * roomSetting = [[XPRoomMoreItemModel alloc] init]; + roomSetting.title = YMLocalizedString(@"XPMoreMenuPresenter21"); + roomSetting.imageName = @"room_more_menu_setting"; + roomSetting.type = RoomMoreMenuType_Room_Setting; + roomSetting.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; + + XPRoomMoreItemModel * inviteFriend = [[XPRoomMoreItemModel alloc] init]; + inviteFriend.title = YMLocalizedString(@"XPMoreMenuPresenter22"); + inviteFriend.imageName = @"room_more_menu_invite_friend"; + inviteFriend.type = RoomMoreMenuType_Invite_Fans; + inviteFriend.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; + + XPRoomMoreItemModel * releaseRadio = [[XPRoomMoreItemModel alloc] init]; + releaseRadio.title = YMLocalizedString(@"XPMoreMenuPresenter23"); + releaseRadio.imageName = @"room_more_menu_release_radio"; + releaseRadio.type = RoomMoreMenuType_Release_Radio; + releaseRadio.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; + + + XPRoomMoreItemModel * redPacket = [[XPRoomMoreItemModel alloc] init]; + redPacket.title = YMLocalizedString(@"XPMoreMenuPresenter24"); + redPacket.imageName = @"redPacket_entrance"; + redPacket.type = RoomMoreMenuType_Room_redPacket; + redPacket.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; + + XPRoomMoreItemModel * voice = [[XPRoomMoreItemModel alloc] init]; + voice.title = YMLocalizedString(@"XPMoreMenuPresenter25"); + voice.imageName = [RtcManager instance].isRemoteMuted ? @"room_more_voice_close" : @"room_more_voice_open"; + voice.type = RoomMoreMenuType_Room_Voice; + voice.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; + voice.isSelected = [RtcManager instance].isRemoteMuted; + + NSString * uid = [AccountInfoStorage instance].getUid; + if (uid.length <= 0) { + return; + } + NSString * roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = roomId; + request.userIds = @[uid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + NSMutableArray * array = [NSMutableArray array]; + if (error == nil) { + NIMChatroomMember * member = members.firstObject; + BOOL isCreator = member.type == NIMChatroomMemberTypeCreator; + BOOL isManager = member.type == NIMChatroomMemberTypeManager; + if ((isCreator || isManager || isSuperAdmin) && roomInfo.type != RoomType_MiniGame && roomInfo.type != RoomType_Anchor) { + [array addObject:roomPK]; + } + + if (isCreator && roomInfo.isPermitRoom == PermitRoomType_Licnese && roomInfo.type != RoomType_MiniGame) { + [array addObject:acrossRoomPK]; + } + + if (isCreator && roomInfo.type == RoomType_Anchor) { + [array addObject:anchorRoomPK]; + + } + + if ((isCreator || isManager || isSuperAdmin) && roomInfo.hasWishGiftPermit) { + [array addObject:wishGift]; + } + + + if (isCreator || isManager || isSuperAdmin) { + if (roomInfo.canOpenBlindDate && roomInfo.type != RoomType_Anchor && roomInfo.type != RoomType_MiniGame) { + [array insertObject:dating atIndex:0]; + } + [array addObject:inviteFriend]; + if (isCreator && roomInfo.type != RoomType_Anchor && roomInfo.isPermitRoom != PermitRoomType_Licnese && roomInfo.isPermitRoom != PermitRoomType_YoungerStar) { + [array addObject:releaseRadio]; + } + [array addObject:giftEffect]; + [array addObject:roomSetting]; + [array addObject:messageScreen]; + [array addObject:clearScreen]; + [array addObject:giftValue]; + } else { + [array addObject:giftEffect]; + } + if ([ClientConfig shareConfig].configInfo.redEnvelopeConfig.open && roomInfo.redEnvelopeOpen) { + [array addObject:redPacket]; + } + } else { + [array addObject:giftEffect]; + } + [array addObject:voice]; + + if (![ClientConfig shareConfig].canOpen) { + [array removeAllObjects]; + [array addObject:clearScreen]; + [array addObject:roomSetting]; + [array addObject:voice]; + } + + [[self getView] getMoreMenuDataSuccess:array]; + }]; +} + +/// 开启房间礼物值 +/// @param roomUid 房间的uid +- (void)openRoomGiftValue:(NSString *)roomUid { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api openRoomGiftValue:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] openRoomGiftValueSuccess]; + }] uid:uid roomUid:roomUid]; +} + +/// 关闭房间礼物值 +/// @param roomUid 房间的uid +- (void)closeRoomGiftValue:(NSString *)roomUid { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api closeRoomGiftValue:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] closeRoomGiftValueSuccess]; + }] uid:uid roomUid:roomUid]; +} + + +/// 更新公屏状态 +/// @param isCloseScreen 是否关闭公屏 +/// @param roomId 房间的id +- (void)updateRoomMessageScreenState:(BOOL)isCloseScreen roomId:(NSString *)roomId { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + NSString * isCleScreenStr = isCloseScreen ? @"1" : @"0"; + [Api updateRoomInfoMessageState:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + RoomInfoModel * roomInfo = [RoomInfoModel modelWithDictionary:data.data]; + [[self getView] updateRoomMessageScreenStateSuccess:roomInfo]; + }] roomId:roomId isCloseScreen:isCleScreenStr ticket:ticket uid:uid]; +} + +/// 开启相亲模式 +/// @param roomUid 房主的uid +- (void)openRoomDating:(NSString *)roomUid { + [Api openRoomDating:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] openRoomDatingSuccess]; + }] roomUid:roomUid]; +} + +/// 关闭相亲模式 +/// @param roomUid 房主的uid +- (void)closeRoomDating:(NSString *)roomUid { + [Api closeRoomDating:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] closeRoomDatingSuccess]; + }] roomUid:roomUid]; +} + +///获取房间广播模板内容 +/// @param type 房间类型 +- (void)getRoomRadioMessageListWithType:(NSString *)type { + [Api roomRadioGetMsg:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + XPReleaseRadioModel * model = [XPReleaseRadioModel modelWithJSON:data.data]; + [[self getView] getReleaseRadioSuccess:model]; + }] roomType:type]; +} + +///结束个播跨房PK +- (void)requestFinishAnchorPK:(NSString *)roundId { + [Api requestEndAnchorRoomPk:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + [[self getView] endAnchorPkSuccess:code == 200 msg:msg]; + } roundId:roundId]; +} + +/// 清空公屏 +/// @param roomUid 房主的uid +/// @param uid 操作人的uid +- (void)cleanScreen:(NSString *)roomUid uid:(NSString *)uid { + [Api requestCleanScreen:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] cleanScreenSuccess]; + }] roomUid:roomUid uid:uid]; +} + +/// 取消匹配随机PK +/// @param roomUid 房间UID +- (void)requestCancelMatchRandomPK:(NSString *)roomUid { + [Api cancelMatchRandomPK:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] cancelMatchRandomPKSuccess]; + }] roomUid:roomUid]; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/MoreView/Presenter/YUMIFurthaerParrotExternalizer.h b/YuMi/Modules/YMRoom/View/MoreView/Presenter/YUMIFurthaerParrotExternalizer.h deleted file mode 100644 index c5294d9f..00000000 --- a/YuMi/Modules/YMRoom/View/MoreView/Presenter/YUMIFurthaerParrotExternalizer.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// YMMoreMenuPresenter.h -// YUMI -// -// Created by YUMI on 2021/12/11. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN -@class ChamberAbstractMatrix; -@interface YUMIFurthaerParrotExternalizer : BaseMvpExternalizer - -- (void)acquireFurthaerParrotTowardsoloudspeakerProvenience:(ChamberAbstractMatrix *)roomInfo isSuperAdmin:(BOOL)isSuperAdmin; - -- (void)unfoildChamberPresentBWSttess:(NSString *)roomUid; - -- (void)concludeChamberPresentBWSttess:(NSString *)roomUid; - -- (void)refurbishChamberCommunictowardsioncreenDeclare:(BOOL)isCloseScreen roomId:(NSString *)roomId; - -- (void)unfoildChamberEngagement:(NSString *)roomUid; - -- (void)concludeChamberEngagement:(NSString *)roomUid; - -- (void)acquireChamberWirelessCommunictowardsionSttowardsementAboutGenre:(NSString *)type; - -- (void)requisitionAccomplishKellegCombat:(NSString *)roundId; - -- (void)sanitarycreen:(NSString *)roomUid uid:(NSString *)uid; - -- (void)requisitionRevoctowardsionDirectoryapttowardsionArbitraryCombat:(NSString *)roomUid; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MoreView/Presenter/YUMIFurthaerParrotExternalizer.m b/YuMi/Modules/YMRoom/View/MoreView/Presenter/YUMIFurthaerParrotExternalizer.m deleted file mode 100644 index a6ee49ad..00000000 --- a/YuMi/Modules/YMRoom/View/MoreView/Presenter/YUMIFurthaerParrotExternalizer.m +++ /dev/null @@ -1,254 +0,0 @@ -// -// YMMoreMenuPresenter.m -// YUMI -// -// Created by YUMI on 2021/12/11. -// - -#import "YUMIFurthaerParrotExternalizer.h" -#import -#import "Api+MoreMenu.h" -#import "ThemeColor+Room.h" -#import "AccountAbstractStorage.h" -#import "ClientDisposition.h" -#import "RealtimackExecutive.h" -#import "Api+AnchorPk.h" -#import "YUMIChamberFurthaerProvisionMatrix.h" -#import "ChamberAbstractMatrix.h" -#import "YUMIReleaseWirelessMatrix.h" -#import "FBCFurthaerMenuCeremony.h" -#import "DJDKMIMOMColor.h" -#import - -@implementation YUMIFurthaerParrotExternalizer - -- (void)acquireFurthaerParrotTowardsoloudspeakerProvenience:(ChamberAbstractMatrix *)roomInfo isSuperAdmin:(BOOL)isSuperAdmin { - YUMIChamberFurthaerProvisionMatrix * roomPK = [[YUMIChamberFurthaerProvisionMatrix alloc] init]; - roomPK.title = roomInfo.roomModeType == ChamberModeGenre_Open_PK_Mode ? @"PK中..." : YMLocalizedString(@"YUMI_More_Menu_Presenter_1"); - roomPK.imageName= @"room_more_menu_room_pk"; - roomPK.type = roomInfo.roomModeType == ChamberModeGenre_Open_PK_Mode ? ChamberMoreParrotGenre_Room_PK_Close : ChamberMoreParrotGenre_Room_PK_Open; - roomPK.titleColor = [DJDKMIMOMColor chamberFurthaerParrotEssayPrettify]; - - YUMIChamberFurthaerProvisionMatrix * giftValue = [[YUMIChamberFurthaerProvisionMatrix alloc] init]; - giftValue.title = roomInfo.showGiftValue ? @"关闭礼物值" : YMLocalizedString(@"YUMI_More_Menu_Presenter_3"); - giftValue.imageName= @"room_more_menu_gift_value"; - giftValue.type = roomInfo.showGiftValue ? ChamberMoreParrotGenre_Gift_Value_Close : ChamberMoreParrotGenre_Gift_Value_Open; - giftValue.titleColor = [DJDKMIMOMColor chamberFurthaerParrotEssayPrettify]; - - YUMIChamberFurthaerProvisionMatrix * giftEffect = [[YUMIChamberFurthaerProvisionMatrix alloc] init]; - giftEffect.title = roomInfo.hasAnimationEffect ? @"关闭我的特效" : YMLocalizedString(@"YUMI_More_Menu_Presenter_5"); - giftEffect.imageName = @"room_more_menu_gift_effect"; - giftEffect.type = roomInfo.hasAnimationEffect ? ChamberMoreParrotGenre_Gift_Effect_Close : ChamberMoreParrotGenre_Gift_Effect_Open; - giftEffect.titleColor = [DJDKMIMOMColor chamberFurthaerParrotEssayPrettify]; - - YUMIChamberFurthaerProvisionMatrix * wishGift = [[YUMIChamberFurthaerProvisionMatrix alloc] init]; - wishGift.title = YMLocalizedString(@"YUMI_More_Menu_Presenter_6"); - wishGift.imageName = @"room_more_menu_wish_gift"; - wishGift.type = ChamberMoreParrotGenre_Room_Wish_Gift; - wishGift.titleColor = [DJDKMIMOMColor chamberFurthaerParrotEssayPrettify]; - - YUMIChamberFurthaerProvisionMatrix * dating = [[YUMIChamberFurthaerProvisionMatrix alloc] init]; - dating.title = roomInfo.roomModeType == ChamberModeGenre_Open_Blind ? @"相亲中.." : YMLocalizedString(@"YUMI_More_Menu_Presenter_8"); - dating.imageName = @"room_more_menu_dating"; - dating.type = roomInfo.roomModeType == ChamberModeGenre_Open_Blind ? ChamberMoreParrotGenre_Room_Dating_Close : ChamberMoreParrotGenre_Room_Dating_Open; - dating.titleColor = [DJDKMIMOMColor chamberFurthaerParrotEssayPrettify]; - - YUMIChamberFurthaerProvisionMatrix * acrossRoomPK = [[YUMIChamberFurthaerProvisionMatrix alloc] init]; - acrossRoomPK.title = roomInfo.roomModeType == ChamberModeGenre_Open_AcrossRoomPK_mode ? @"跨房PK中" : @"跨房PK"; - acrossRoomPK.imageName = @"room_more_menu_cross_pk"; - acrossRoomPK.type = roomInfo.roomModeType == ChamberModeGenre_Open_AcrossRoomPK_mode ? ChamberMoreParrotGenre_Room_Across_PK_Close : ChamberMoreParrotGenre_Room_Across_PK_Open; - acrossRoomPK.titleColor = [DJDKMIMOMColor chamberFurthaerParrotEssayPrettify]; - - YUMIChamberFurthaerProvisionMatrix * anchorRoomPK = [[YUMIChamberFurthaerProvisionMatrix alloc] init]; - anchorRoomPK.title = roomInfo.roomModeType == ChamberModeGenre_Open_AcrossRoomPK_mode ? @"主播PK中" : @"主播PK"; - anchorRoomPK.imageName = @"room_more_menu_anchor_pk"; - anchorRoomPK.type = roomInfo.roomModeType == ChamberModeGenre_Open_AcrossRoomPK_mode ? ChamberMoreParrotGenre_Room_Anchor_PK_Close : ChamberMoreParrotGenre_Room_Anchor_PK_Open; - anchorRoomPK.titleColor = [DJDKMIMOMColor chamberFurthaerParrotEssayPrettify]; - if (roomInfo.pkState == ThroughoutChamberPkDeclareGenrePenalty) { - if ([roomInfo.winUid isEqualToString:[AccountAbstractStorage instance].acquireCid]) { - anchorRoomPK.title = @"结束PK"; - } else if ([roomInfo.winUid isEqualToString:roomInfo.pkUid]) { - anchorRoomPK.title = YMLocalizedString(@"YUMI_More_Menu_Presenter_14"); - } else { - anchorRoomPK.title = @"结束PK"; - } - } else if (roomInfo.pkState == ThroughoutChamberPkDeclareGenrePenaltyEnd) { - anchorRoomPK.title = @"结束PK"; - } - if (roomInfo.pkMatchStartTime) { - anchorRoomPK.title = YMLocalizedString(@"YUMI_More_Menu_Presenter_17"); - } - YUMIChamberFurthaerProvisionMatrix * messageScreen = [[YUMIChamberFurthaerProvisionMatrix alloc] init]; - messageScreen.title = roomInfo.isCloseScreen ? @"开启公屏" : YMLocalizedString(@"YUMI_More_Menu_Presenter_19"); - messageScreen.imageName = @"room_more_menu_message"; - messageScreen.type = roomInfo.isCloseScreen ? ChamberMoreParrotGenre_Message_Screen_Open : ChamberMoreParrotGenre_Message_Screen_Close; - messageScreen.titleColor = [DJDKMIMOMColor chamberFurthaerParrotEssayPrettify]; - - YUMIChamberFurthaerProvisionMatrix * clearScreen = [[YUMIChamberFurthaerProvisionMatrix alloc] init]; - clearScreen.title = YMLocalizedString(@"YUMI_More_Menu_Presenter_20"); - clearScreen.imageName = @"room_more_menu_message_clean"; - clearScreen.type = ChamberMoreParrotGenre_Message_Screen_Clear; - clearScreen.titleColor = [DJDKMIMOMColor chamberFurthaerParrotEssayPrettify]; - - YUMIChamberFurthaerProvisionMatrix * roomSetting = [[YUMIChamberFurthaerProvisionMatrix alloc] init]; - roomSetting.title = YMLocalizedString(@"YUMI_More_Menu_Presenter_21"); - roomSetting.imageName = @"room_more_menu_setting"; - roomSetting.type = ChamberMoreParrotGenre_Room_Setting; - roomSetting.titleColor = [DJDKMIMOMColor chamberFurthaerParrotEssayPrettify]; - - YUMIChamberFurthaerProvisionMatrix * inviteFriend = [[YUMIChamberFurthaerProvisionMatrix alloc] init]; - inviteFriend.title = YMLocalizedString(@"YUMI_More_Menu_Presenter_22"); - inviteFriend.imageName = @"room_more_menu_invite_friend"; - inviteFriend.type = ChamberMoreParrotGenre_Invite_Fans; - inviteFriend.titleColor = [DJDKMIMOMColor chamberFurthaerParrotEssayPrettify]; - - YUMIChamberFurthaerProvisionMatrix * releaseRadio = [[YUMIChamberFurthaerProvisionMatrix alloc] init]; - releaseRadio.title = YMLocalizedString(@"YUMI_More_Menu_Presenter_23"); - releaseRadio.imageName = @"room_more_menu_release_radio"; - releaseRadio.type = ChamberMoreParrotGenre_Release_Radio; - releaseRadio.titleColor = [DJDKMIMOMColor chamberFurthaerParrotEssayPrettify]; - - - YUMIChamberFurthaerProvisionMatrix * redPacket = [[YUMIChamberFurthaerProvisionMatrix alloc] init]; - redPacket.title = YMLocalizedString(@"YUMI_More_Menu_Presenter_24"); - redPacket.imageName = @"redPacket_entrance"; - redPacket.type = ChamberMoreParrotGenre_Room_redPacket; - redPacket.titleColor = [DJDKMIMOMColor chamberFurthaerParrotEssayPrettify]; - - YUMIChamberFurthaerProvisionMatrix * voice = [[YUMIChamberFurthaerProvisionMatrix alloc] init]; - voice.title = YMLocalizedString(@"YUMI_More_Menu_Presenter_25"); - voice.imageName = [RealtimackExecutive instance].isRemoteDelicate ? @"room_more_voice_close" : @"room_more_voice_open"; - voice.type = ChamberMoreParrotGenre_Room_Voice; - voice.titleColor = [DJDKMIMOMColor chamberFurthaerParrotEssayPrettify]; - voice.isSelected = [RealtimackExecutive instance].isRemoteDelicate; - - NSString * uid = [AccountAbstractStorage instance].acquireCid; - if (uid.length <= 0) { - return; - } - NSString * roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = roomId; - request.userIds = @[uid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - NSMutableArray * array = [NSMutableArray array]; - if (error == nil) { - NIMChatroomMember * member = members.firstObject; - BOOL isCreator = member.type == NIMChatroomMemberTypeCreator; - BOOL isManager = member.type == NIMChatroomMemberTypeManager; - if ((isCreator || isManager || isSuperAdmin) && roomInfo.type != ChamberGenre_MiniGame && roomInfo.type != ChamberGenre_Anchor) { - [array addObject:roomPK]; - } - - if (isCreator && roomInfo.isPermitRoom == PermitChamberGenre_Licnese && roomInfo.type != ChamberGenre_MiniGame) { - [array addObject:acrossRoomPK]; - } - - if (isCreator && roomInfo.type == ChamberGenre_Anchor) { - [array addObject:anchorRoomPK]; - - } - - if ((isCreator || isManager || isSuperAdmin) && roomInfo.hasWishGiftPermit) { - [array addObject:wishGift]; - } - - - if (isCreator || isManager || isSuperAdmin) { - if (roomInfo.canOpenBlindDate && roomInfo.type != ChamberGenre_Anchor && roomInfo.type != ChamberGenre_MiniGame) { - [array insertObject:dating atIndex:0]; - } - [array addObject:inviteFriend]; - if (isCreator && roomInfo.type != ChamberGenre_Anchor && roomInfo.isPermitRoom != PermitChamberGenre_Licnese && roomInfo.isPermitRoom != PermitChamberGenre_YoungerStar) { - [array addObject:releaseRadio]; - } - [array addObject:giftEffect]; - [array addObject:roomSetting]; - [array addObject:messageScreen]; - [array addObject:clearScreen]; - [array addObject:giftValue]; - } else { - [array addObject:giftEffect]; - } - if ([ClientDisposition partowardsiciptowardsionDisposition].dispositionAbstract.redEnvelopeConfig.open && roomInfo.redEnvelopeOpen) { - [array addObject:redPacket]; - } - } else { - [array addObject:giftEffect]; - } - [array addObject:voice]; - - if (![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - [array removeAllObjects]; - [array addObject:clearScreen]; - [array addObject:roomSetting]; - [array addObject:voice]; - } - - [[self acquireRegard] acquireFurthaerParrotTowardsoloudspeakerAccomplishment:array]; - }]; -} - -- (void)unfoildChamberPresentBWSttess:(NSString *)roomUid { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api unfoildChamberPresentBWSttess:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] unfoildChamberPresentBWSttessAccomplishment]; - }] uid:uid roomUid:roomUid]; -} - -- (void)concludeChamberPresentBWSttess:(NSString *)roomUid { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api concludeChamberPresentBWSttess:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] concludeChamberPresentBWSttessAccomplishment]; - }] uid:uid roomUid:roomUid]; -} - - -- (void)refurbishChamberCommunictowardsioncreenDeclare:(BOOL)isCloseScreen roomId:(NSString *)roomId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - NSString * isCleScreenStr = isCloseScreen ? @"1" : @"0"; - [Api refurbishChamberAbstractCommunictowardsionDeclare:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ChamberAbstractMatrix * roomInfo = [ChamberAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] refurbishChamberCommunictowardsioncreenDeclareAccomplishment:roomInfo]; - }] roomId:roomId isCloseScreen:isCleScreenStr ticket:ticket uid:uid]; -} - -- (void)unfoildChamberEngagement:(NSString *)roomUid { - [Api unfoildChamberEngagement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] unfoildChamberEngagementAccomplishment]; - }] roomUid:roomUid]; -} - -- (void)concludeChamberEngagement:(NSString *)roomUid { - [Api concludeChamberEngagement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] concludeChamberEngagementAccomplishment]; - }] roomUid:roomUid]; -} - -- (void)acquireChamberWirelessCommunictowardsionSttowardsementAboutGenre:(NSString *)type { - [Api chamberWirelessAcquireMsg:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - YUMIReleaseWirelessMatrix * model = [YUMIReleaseWirelessMatrix mtowardsrixAboutJSON:data.data]; - [[self acquireRegard] acquireReleaseWirelessAccomplishment:model]; - }] roomType:type]; -} - -- (void)requisitionAccomplishKellegCombat:(NSString *)roundId { - [Api requisitionConcludeKellegChamberCombate:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] concludeKellegCombateAccomplishment:code == 200 msg:msg]; - } roundId:roundId]; -} - -- (void)sanitarycreen:(NSString *)roomUid uid:(NSString *)uid { - [Api requisitionCleancreen:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] sanitarycreenAccomplishment]; - }] roomUid:roomUid uid:uid]; -} - -- (void)requisitionRevoctowardsionDirectoryapttowardsionArbitraryCombat:(NSString *)roomUid { - [Api revoctowardsionDirectoryapttowardsionArbitraryCombat:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] revoctowardsionDirectoryapttowardsionArbitraryCombatAccomplishment]; - }] roomUid:roomUid]; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/MoreView/Protocol/FBCFurthaerMenuCeremony.h b/YuMi/Modules/YMRoom/View/MoreView/Protocol/FBCFurthaerMenuCeremony.h deleted file mode 100644 index 9aa8b190..00000000 --- a/YuMi/Modules/YMRoom/View/MoreView/Protocol/FBCFurthaerMenuCeremony.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// YMMoreMenuProtocol.h -// YUMI -// -// Created by YUMI on 2021/12/11. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class YUMIChamberFurthaerProvisionMatrix, ChamberAbstractMatrix, YUMIReleaseWirelessMatrix, XPNobleTrumpetModel; -@protocol FBCFurthaerMenuCeremony - -- (void)acquireFurthaerParrotTowardsoloudspeakerAccomplishment:(NSArray *)list; -- (void)unfoildChamberPresentBWSttessAccomplishment; -- (void)concludeChamberPresentBWSttessAccomplishment; -- (void)refurbishChamberCommunictowardsioncreenDeclareAccomplishment:(ChamberAbstractMatrix * )roomInfo; -- (void)unfoildChamberEngagementAccomplishment; -- (void)concludeChamberEngagementAccomplishment; -- (void)acquireReleaseWirelessAccomplishment:(YUMIReleaseWirelessMatrix *)model; -- (void)acquireLoudspeakerAccomplishment:(XPNobleTrumpetModel *)model; -- (void)concludeKellegCombateAccomplishment:(BOOL)success msg:(NSString *)msg; -- (void)sanitarycreenAccomplishment; - -- (void)revoctowardsionDirectoryapttowardsionArbitraryCombatAccomplishment; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MoreView/Protocol/XPMoreMenuProtocol.h b/YuMi/Modules/YMRoom/View/MoreView/Protocol/XPMoreMenuProtocol.h new file mode 100644 index 00000000..9912dffb --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MoreView/Protocol/XPMoreMenuProtocol.h @@ -0,0 +1,40 @@ +// +// YMMoreMenuProtocol.h +// YUMI +// +// Created by YUMI on 2021/12/11. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class XPRoomMoreItemModel, RoomInfoModel, XPReleaseRadioModel, XPNobleTrumpetModel; +@protocol XPMoreMenuProtocol + +///更多菜单要展示的内容 +- (void)getMoreMenuDataSuccess:(NSArray *)list; +///开启房间礼物值成功 +- (void)openRoomGiftValueSuccess; +///关闭房间礼物值成功 +- (void)closeRoomGiftValueSuccess; +///更新房间信息 成功 公屏的开启和关闭 +- (void)updateRoomMessageScreenStateSuccess:(RoomInfoModel * )roomInfo; +///开启相亲成功 +- (void)openRoomDatingSuccess; +///关闭相亲成功 +- (void)closeRoomDatingSuccess; +///获取房间广播信息成功 +- (void)getReleaseRadioSuccess:(XPReleaseRadioModel *)model; +///获取房间贵族喇叭成功 +- (void)getTrumpetSuccess:(XPNobleTrumpetModel *)model; +///结束个播跨房PK回调 +- (void)endAnchorPkSuccess:(BOOL)success msg:(NSString *)msg; +///清空公屏成功 +- (void)cleanScreenSuccess; + +- (void)cancelMatchRandomPKSuccess; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MoreView/View/Cell/XPRoomMoreMenuCollectionViewCell.h b/YuMi/Modules/YMRoom/View/MoreView/View/Cell/XPRoomMoreMenuCollectionViewCell.h new file mode 100644 index 00000000..efda7696 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MoreView/View/Cell/XPRoomMoreMenuCollectionViewCell.h @@ -0,0 +1,17 @@ +// +// YMRoomMoreMenuTableViewCell.h +// YUMI +// +// Created by YUMI on 2021/12/11. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPRoomMoreItemModel; +@interface XPRoomMoreMenuCollectionViewCell : UICollectionViewCell + +@property (nonatomic,strong) XPRoomMoreItemModel *itemModel; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MoreView/View/Cell/XPRoomMoreMenuCollectionViewCell.m b/YuMi/Modules/YMRoom/View/MoreView/View/Cell/XPRoomMoreMenuCollectionViewCell.m new file mode 100644 index 00000000..c69ed63f --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MoreView/View/Cell/XPRoomMoreMenuCollectionViewCell.m @@ -0,0 +1,80 @@ +// +// YMRoomMoreMenuTableViewCell.m +// YUMI +// +// Created by YUMI on 2021/12/11. +// + +#import "XPRoomMoreMenuCollectionViewCell.h" +///Third +#import +///Tool +#import "ThemeColor+Room.h" +///Model +#import "XPRoomMoreItemModel.h" +@interface XPRoomMoreMenuCollectionViewCell () +///显示图片 +@property (nonatomic,strong) UIImageView *logoImageView; +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; + +@end + +@implementation XPRoomMoreMenuCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.logoImageView]; + [self.contentView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.logoImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(30, 30)); + make.top.centerX.mas_equalTo(self.contentView); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.logoImageView.mas_bottom).offset(4); + }]; +} + +#pragma mark - Getters And Setters +- (void)setItemModel:(XPRoomMoreItemModel *)itemModel { + _itemModel = itemModel; + if (_itemModel) { + self.logoImageView.image = [UIImage imageNamed:_itemModel.imageName]; + self.titleLabel.text = _itemModel.title; + self.titleLabel.textColor = _itemModel.titleColor ? _itemModel.titleColor : [DJDKMIMOMColor mainTextColor]; + } +} + +- (UIImageView *)logoImageView { + if (!_logoImageView) { + _logoImageView = [[UIImageView alloc] init]; + _logoImageView.userInteractionEnabled = YES; + } + return _logoImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.font = [UIFont systemFontOfSize:10]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/MoreView/View/Cell/YUMIChamberFurthaerParrotAssembletionRegardElement.h b/YuMi/Modules/YMRoom/View/MoreView/View/Cell/YUMIChamberFurthaerParrotAssembletionRegardElement.h deleted file mode 100644 index b7b0bbea..00000000 --- a/YuMi/Modules/YMRoom/View/MoreView/View/Cell/YUMIChamberFurthaerParrotAssembletionRegardElement.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMRoomMoreMenuTableViewCell.h -// YUMI -// -// Created by YUMI on 2021/12/11. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIChamberFurthaerProvisionMatrix; -@interface YUMIChamberFurthaerParrotAssembletionRegardElement : UICollectionViewCell - -@property (nonatomic,strong) YUMIChamberFurthaerProvisionMatrix *itemMatrix; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MoreView/View/Cell/YUMIChamberFurthaerParrotAssembletionRegardElement.m b/YuMi/Modules/YMRoom/View/MoreView/View/Cell/YUMIChamberFurthaerParrotAssembletionRegardElement.m deleted file mode 100644 index 6a12bb00..00000000 --- a/YuMi/Modules/YMRoom/View/MoreView/View/Cell/YUMIChamberFurthaerParrotAssembletionRegardElement.m +++ /dev/null @@ -1,75 +0,0 @@ -// -// YMRoomMoreMenuTableViewCell.m -// YUMI -// -// Created by YUMI on 2021/12/11. -// - -#import "YUMIChamberFurthaerParrotAssembletionRegardElement.h" -#import -#import "ThemeColor+Room.h" -#import "YUMIChamberFurthaerProvisionMatrix.h" -@interface YUMIChamberFurthaerParrotAssembletionRegardElement () -@property (nonatomic,strong) UIImageView *brandIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; - -@end - -@implementation YUMIChamberFurthaerParrotAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.brandIndicateRegard]; - [self.contentView addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.brandIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(30, 30)); - make.top.centerX.mas_equalTo(self.contentView); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.brandIndicateRegard.mas_bottom).offset(4); - }]; -} - -#pragma mark - Getters And Setters -- (void)setItemMatrix:(YUMIChamberFurthaerProvisionMatrix *)itemMatrix { - _itemMatrix = itemMatrix; - if (_itemMatrix) { - self.brandIndicateRegard.image = [UIImage imageNamed:_itemMatrix.imageName]; - self.titleLabel.text = _itemMatrix.title; - self.titleLabel.textColor = _itemMatrix.titleColor ? _itemMatrix.titleColor : [DJDKMIMOMColor mainEssayPrettify]; - } -} - -- (UIImageView *)brandIndicateRegard { - if (!_brandIndicateRegard) { - _brandIndicateRegard = [[UIImageView alloc] init]; - _brandIndicateRegard.userInteractionEnabled = YES; - } - return _brandIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.font = [UIFont systemFontOfSize:10]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomInviteFansView.h b/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomInviteFansView.h new file mode 100644 index 00000000..5dc2b9cb --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomInviteFansView.h @@ -0,0 +1,18 @@ +// +// YMRoomInviteFriendView.h +// YUMI +// +// Created by YUMI on 2021/12/27. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomInviteFansView : UIView + +- (instancetype)initWithRoomUid:(NSString *)roomUid; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomInviteFansView.m b/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomInviteFansView.m new file mode 100644 index 00000000..343f096a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomInviteFansView.m @@ -0,0 +1,305 @@ +// +// YMRoomInviteFriendView.m +// YUMI +// +// Created by YUMI on 2021/12/27. +// + +#import "XPRoomInviteFansView.h" +///Third +#import +///Tool +#import "ThemeColor+Room.h" +#import "UIImage+Utils.h" +#import "Api+MoreMenu.h" +#import "XNDJTDDLoadingTool.h" +#import "YUMIMacroUitls.h" +///Model +#import "InviteFansModel.h" + +@interface XPRoomInviteFriendTitleView : UIView +///显示小圆点 +@property (nonatomic,strong) UIView * circleView; +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPRoomInviteFriendTitleView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.circleView]; + [self addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.titleLabel.mas_right); + }]; + + [self.circleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(4, 4)); + make.centerY.left.mas_equalTo(self); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.circleView.mas_right).offset(8); + make.centerY.mas_equalTo(self); + }]; +} + +#pragma mark - Getters And Setters +- (UIView *)circleView { + if (!_circleView) { + _circleView = [[UIView alloc] init]; + _circleView.backgroundColor = UIColorFromRGB(0xCAC2FF); + _circleView.layer.masksToBounds = YES; + _circleView.layer.cornerRadius = 2; + } + return _circleView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:13]; + _titleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _titleLabel; +} + +@end + + +@interface XPRoomInviteFansView () +///标题 +@property (nonatomic,strong) UILabel *titleLabel; +///文案一 +@property (nonatomic,strong) XPRoomInviteFriendTitleView *firstView; +///文案二 +@property (nonatomic,strong) XPRoomInviteFriendTitleView *secondView; +///文案三 +@property (nonatomic,strong) XPRoomInviteFriendTitleView *thirdView; +///邀请 +@property (nonatomic,strong) UIButton *inviteButton; +///剩余 +@property (nonatomic,strong) UILabel *residueLabel; +///房主的uid +@property (nonatomic,copy) NSString *roomUid; +///邀请粉丝 +@property (nonatomic,strong) InviteFansModel *fansInfoModel; +///定时器 +@property (nonatomic,strong) dispatch_source_t timer; +@end + +@implementation XPRoomInviteFansView + + +- (instancetype)initWithRoomUid:(NSString *)roomUid { + self = [super init]; + if (self) { + self.roomUid = roomUid; + [self getInviteFansState]; + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.titleLabel]; + [self addSubview:self.firstView]; + [self addSubview:self.secondView]; + [self addSubview:self.thirdView]; + [self addSubview:self.inviteButton]; + [self addSubview:self.residueLabel]; + + self.backgroundColor = [UIColor whiteColor]; + CAShapeLayer * layer = [CAShapeLayer layer]; + layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, 273) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(15, 15)].CGPath; + self.layer.mask = layer; +} + +- (void)initSubViewConstraints { + self.frame = CGRectMake(0, 0, KScreenWidth, 273); + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(20); + make.right.left.mas_equalTo(self); + }]; + + [self.firstView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(16); + make.left.mas_equalTo(self).offset(30); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(23); + }]; + + [self.secondView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.left.mas_equalTo(self.firstView); + make.top.mas_equalTo(self.firstView.mas_bottom).offset(15); + }]; + + [self.thirdView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.left.mas_equalTo(self.firstView); + make.top.mas_equalTo(self.secondView.mas_bottom).offset(15); + }]; + + [self.inviteButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(160, 38)); + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self.thirdView.mas_bottom).offset(40); + }]; + + [self.residueLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.left.mas_equalTo(self); + make.top.mas_equalTo(self.inviteButton.mas_bottom).offset(16); + }]; +} + +- (void)getInviteFansState { + [Api checkInviteRoomFans:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + InviteFansModel * model = [InviteFansModel modelWithDictionary:data.data]; + self.fansInfoModel = model; + [self configFansView:model]; + [self openCutDownTimer]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } roomUid:self.roomUid]; +} + +- (void)configFansView:(InviteFansModel *)model { + NSString * residueTitle = [NSString stringWithFormat:YMLocalizedString(@"XPRoomInviteFansView0"), model.inviteTimes]; + NSMutableAttributedString * residueAttribute = [[NSMutableAttributedString alloc] initWithString:residueTitle attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13], NSForegroundColorAttributeName:[DJDKMIMOMColor secondTextColor]}]; + NSRange range = [residueTitle rangeOfString:[NSString stringWithFormat:@"%d", model.inviteTimes]]; + [residueAttribute addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:18] range:range]; + [residueAttribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor appEmphasizeColor] range:range]; + self.residueLabel.attributedText = residueAttribute; + self.residueLabel.textAlignment = NSTextAlignmentCenter; + + self.inviteButton.enabled = model.inviteInterval <= 0; + if (model.inviteTimes <= 0) { + [self.inviteButton setTitle:YMLocalizedString(@"XPRoomInviteFansView1") forState:UIControlStateDisabled]; + self.inviteButton.enabled = NO; + } + + NSString * fansNumberTitle = [NSString stringWithFormat:YMLocalizedString(@"XPRoomInviteFansView2"), model.fansNum]; + NSMutableAttributedString * fansAttribute = [[NSMutableAttributedString alloc] initWithString:fansNumberTitle attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13], NSForegroundColorAttributeName:[DJDKMIMOMColor secondTextColor]}]; + NSRange fansRange = [fansNumberTitle rangeOfString:[NSString stringWithFormat:@"%ld", model.fansNum]]; + [fansAttribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor appEmphasizeColor] range:fansRange]; + self.firstView.titleLabel.attributedText = fansAttribute; +} + +- (void)openCutDownTimer { + dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(0, 0)); + dispatch_source_set_timer(_timer, DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC, 0 * NSEC_PER_SEC); + dispatch_source_set_event_handler(_timer, ^{ + dispatch_async(dispatch_get_main_queue(), ^{ + self.fansInfoModel.inviteInterval --; + if (self.fansInfoModel.inviteInterval <= 0) { + dispatch_source_cancel(_timer); + self.timer = nil; + [self.inviteButton setTitle:YMLocalizedString(@"XPRoomInviteFansView3") forState:UIControlStateNormal]; + self.inviteButton.enabled = YES; + } else { + int seconds = self.fansInfoModel.inviteInterval % 60; + int minutes = (self.fansInfoModel.inviteInterval / 60) % 60; + NSString * title = [NSString stringWithFormat:YMLocalizedString(@"XPRoomInviteFansView4"),minutes, seconds]; + [self.inviteButton setTitle:title forState:UIControlStateDisabled]; + } + }); + }); + self.timer = _timer; + dispatch_resume(_timer); +} + +#pragma mark - Event Response +- (void)inviteButtonAction:(UIButton *)sender { + sender.enabled = NO; + [Api inviteRoomFans:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + InviteFansModel * model = [InviteFansModel modelWithDictionary:data.data]; + self.fansInfoModel = model; + [self configFansView:model]; + [self openCutDownTimer]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + sender.enabled = YES; + } + } roomUid:self.roomUid]; +} + +#pragma mark - Getters And Setters +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPRoomInviteFansView5"); + _titleLabel.font = [UIFont boldSystemFontOfSize:16]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} + +- (XPRoomInviteFriendTitleView *)firstView { + if (!_firstView) { + _firstView = [[XPRoomInviteFriendTitleView alloc] init]; + } + return _firstView; +} + +- (XPRoomInviteFriendTitleView *)secondView { + if (!_secondView) { + _secondView = [[XPRoomInviteFriendTitleView alloc] init]; + _secondView.titleLabel.text= YMLocalizedString(@"XPRoomInviteFansView6"); + } + return _secondView; +} + +- (XPRoomInviteFriendTitleView *)thirdView { + if (!_thirdView) { + _thirdView = [[XPRoomInviteFriendTitleView alloc] init]; + _thirdView.titleLabel.text = YMLocalizedString(@"XPRoomInviteFansView7"); + } + return _thirdView; +} + + +- (UIButton *)inviteButton { + if (!_inviteButton) { + _inviteButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_inviteButton setTitle:YMLocalizedString(@"XPRoomInviteFansView8") forState:UIControlStateNormal]; + [_inviteButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_inviteButton setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateDisabled]; + _inviteButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_inviteButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientEndColor] ] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_inviteButton setBackgroundImage:[UIImage imageWithColor:[DJDKMIMOMColor disableButtonColor]] forState:UIControlStateDisabled]; + _inviteButton.layer.masksToBounds = YES; + _inviteButton.layer.cornerRadius = 38 / 2; + [_inviteButton addTarget:self action:@selector(inviteButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _inviteButton; +} + +- (UILabel *)residueLabel { + if (!_residueLabel) { + _residueLabel = [[UILabel alloc] init]; + } + return _residueLabel; +} + + + +@end diff --git a/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomMoreMenuViewController.h b/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomMoreMenuViewController.h new file mode 100644 index 00000000..bb2e8f18 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomMoreMenuViewController.h @@ -0,0 +1,16 @@ +// +// YMRoomMoreMenuViewController.h +// YUMI +// +// Created by YUMI on 2021/12/11. +// + +#import "MvpViewController.h" +#import "RoomHostDelegate.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomMoreMenuViewController : MvpViewController +- (instancetype)initWithDelegate:(id)delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomMoreMenuViewController.m b/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomMoreMenuViewController.m new file mode 100644 index 00000000..fcf065a1 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomMoreMenuViewController.m @@ -0,0 +1,543 @@ +// +// YMRoomMoreMenuViewController.m +// YUMI +// +// Created by YUMI on 2021/12/11. +// + +#import "XPRoomMoreMenuViewController.h" +///Third +#import +///Tool +#import "YUMIMacroUitls.h" +#import "TTPopup.h" +#import "YUMIConstant.h" +#import "AccountInfoStorage.h" +#import "DJDKMIMOMColor.h" +#import "RtcManager.h" +#import "StatisticsServiceHelper.h" +///Model +#import "XPRoomMoreItemModel.h" +#import "RoomInfoModel.h" +#import "AttachmentModel.h" +#import "GuildSuperAdminInfoModel.h" +#import "AccountInfoStorage.h" +#import "NSArray+Safe.h" +///View +#import "XPRoomMoreMenuCollectionViewCell.h" +#import "XPRoomInviteFansView.h" +#import "XPAcrossRoomPKViewController.h" +#import "XPAnchorPKViewController.h" +#import "XPRoomSettingViewController.h" +#import "XPReleaseRadioViewController.h" +#import "XPRoomPKViewController.h" +#import "XPRoomSendRedPacketViewController.h" +#import "BaseNavigationController.h" +#import "XPWishGiftCreateViewController.h" +#import "XPAnchorPKSelectTypeController.h" +///P +#import "XPMoreMenuPresenter.h" +#import "XPMoreMenuProtocol.h" + +UIKIT_EXTERN NSString * const kRoomGiftEffectUpdateNotificationKey; + +@interface XPRoomMoreMenuViewController () +///顶部的View +@property (nonatomic,strong) UIView * topView; +///模糊背景 +@property (nonatomic, strong) UIVisualEffectView *effectView; +///列表 +@property (nonatomic,strong) UICollectionView *collectionView; +///底部的View +@property (nonatomic,strong) UIView * bottomView; +///数据源 +@property (nonatomic,strong) NSArray *datasource; +///房间信息 +@property (nonatomic,strong) RoomInfoModel *roomInfo; + +@property (nonatomic,assign) id hostDelegate; +@end + +@implementation XPRoomMoreMenuViewController + +- (instancetype)initWithDelegate:(id)delegate{ + if (self = [super init]) { + self.modalPresentationStyle = UIModalPresentationOverFullScreen; + self.roomInfo = delegate.getRoomInfo; + self.hostDelegate = delegate; + } + return self; +} + +- (XPMoreMenuPresenter *)createPresenter { + return [[XPMoreMenuPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; + ///自己是公会超管 + BOOL meIsSuperAdmin = NO; + for (GuildSuperAdminInfoModel *managerInfo in self.hostDelegate.getRoomSuperAdminList) { + if ([managerInfo.uid isEqualToString:[AccountInfoStorage instance].getUid]) { + meIsSuperAdmin = YES; + break; + } + } + [self.presenter getMoreMenuDataSource:self.roomInfo isSuperAdmin:meIsSuperAdmin]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.modalPresentationStyle = UIModalPresentationOverFullScreen; + self.view.backgroundColor = [UIColor clearColor]; + [self.view addSubview:self.topView]; + [self.view addSubview:self.effectView]; + [self.view addSubview:self.collectionView]; + [self.view addSubview:self.bottomView]; +} + +- (void)initSubViewConstraints { + [self.topView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.collectionView.mas_top); + }]; + + [self.effectView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(0); + make.top.mas_equalTo(self.collectionView); + make.bottom.mas_equalTo(self.bottomView); + }]; + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.height.mas_equalTo(0); + make.bottom.mas_equalTo(self.bottomView.mas_top); + }]; + + [self.bottomView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.height.mas_equalTo(kSafeAreaBottomHeight); + }]; +} + +#pragma mark - XPMoreMenuProtocol +- (void)getMoreMenuDataSuccess:(NSArray *)list { + self.datasource = list; + [self.collectionView reloadData]; + CGFloat contentHeight= 24 + 36; + CGFloat itemHeight = 50; + int page = list.count % 5; + int scale = (int)list.count / (int)5; + if (page == 0) { + contentHeight += (scale *itemHeight); + } else { + contentHeight += ((scale+1) *itemHeight + scale * 12); + } + CAShapeLayer * layer = [CAShapeLayer layer]; + UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, contentHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(8, 8)]; + layer.path = path.CGPath; + self.collectionView.layer.mask = layer; + [self.collectionView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(contentHeight); + }]; +} + +- (void)openRoomGiftValueSuccess { + [self showSuccessToast:YMLocalizedString(@"XPRoomMoreMenuViewController0")]; + [self dismissViewControllerAnimated:YES completion:nil]; +} + +- (void)closeRoomGiftValueSuccess { + [self showSuccessToast:YMLocalizedString(@"XPRoomMoreMenuViewController1")]; + [self dismissViewControllerAnimated:YES completion:nil]; +} + +/// 设置公屏开关 +- (void)updateRoomMessageScreenStateSuccess:(RoomInfoModel *)roomInfo { + AttachmentModel *attachement = [[AttachmentModel alloc]init]; + attachement.first = CustomMessageType_Update_RoomInfo; + attachement.second = Custom_Message_Sub_Update_RoomInfo_MessageState; + attachement.data = @{@"roomInfo":roomInfo.model2dictionary}; + NIMMessage *message = [[NIMMessage alloc]init]; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachement; + message.messageObject = object; + //构造会话 + NSString * roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + NIMSession *session = [NIMSession session:roomId type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; + [self dismissViewControllerAnimated:YES completion:nil]; +} + +///清空公屏成功 +- (void)cleanScreenSuccess { + [self dismissViewControllerAnimated:YES completion:nil]; +} + +- (void)openRoomDatingSuccess { + [self dismissViewControllerAnimated:YES completion:nil]; +} + +- (void)closeRoomDatingSuccess { + [self dismissViewControllerAnimated:YES completion:nil]; +} + +///发布房间广播 +- (void)getReleaseRadioSuccess:(XPReleaseRadioModel *)model { + [self dismissViewControllerAnimated:YES completion:nil]; + XPReleaseRadioViewController * releaseRadioVC = [[XPReleaseRadioViewController alloc] initWithDelegate:self.hostDelegate]; + releaseRadioVC.model = model; + releaseRadioVC.modalPresentationStyle = UIModalPresentationOverFullScreen; + [self.hostDelegate.getCurrentNav presentViewController:releaseRadioVC animated:YES completion:nil]; +} +///获取房间贵族小喇叭 +- (void)getTrumpetSuccess:(XPNobleTrumpetModel *)model { + [self dismissViewControllerAnimated:YES completion:nil]; +} + +///结束个播PK失败 +- (void)endAnchorPkSuccess:(BOOL)success msg:(NSString *)msg { + if (!success) { + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.message = msg; + config.actionStyle = TTAlertActionConfirmStyle; + [TTPopup alertWithConfig:config confirmHandler:^{ + } cancelHandler:^{ + }]; + } else { + [self dismissViewControllerAnimated:YES completion:nil]; + } +} + +- (void)cancelMatchRandomPKSuccess { + self.hostDelegate.getRoomInfo.pkMatchStartTime = nil; + [[NSNotificationCenter defaultCenter] postNotificationName:@"cancelMatchRandomPK" object:nil]; + [self dismissViewControllerAnimated:YES completion:nil]; + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; + XPAnchorPKSelectTypeController *selectVc = [[XPAnchorPKSelectTypeController alloc] initWithRoomUid:roomUid]; + [self.hostDelegate.getCurrentNav presentViewController:selectVc animated:YES completion:nil]; +} + +#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPRoomMoreMenuCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPRoomMoreMenuCollectionViewCell class]) forIndexPath:indexPath]; + cell.itemModel = [self.datasource safeObjectAtIndex1:indexPath.row]; + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + [collectionView deselectItemAtIndexPath:indexPath animated:YES]; + XPRoomMoreItemModel * item = [self.datasource safeObjectAtIndex1:indexPath.row]; + NSString * roomUid = [NSString stringWithFormat:@"%ld",self.roomInfo.uid]; + NSString * roomId = [NSString stringWithFormat:@"%ld", self.roomInfo.roomId]; + switch (item.type) { + case RoomMoreMenuType_Gift_Value_Close: + { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"closeGiftValue"}]; + if (self.roomInfo.roomModeType == RoomModeType_Open_Blind) { + [self showErrorToast:YMLocalizedString(@"XPRoomMoreMenuViewController2")]; + return; + } + TTAlertConfig * config = [[TTAlertConfig alloc] init]; + config.title = @""; + config.message = @"关闭礼物值将会清除当前麦上所有礼物值数据,确认关闭吗?"; + [TTPopup alertWithConfig:config confirmHandler:^{ + [self.presenter closeRoomGiftValue:roomUid]; + } cancelHandler:^{ + + }]; + } + break; + case RoomMoreMenuType_Gift_Value_Open: + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"openGiftValue"}]; + [self.presenter openRoomGiftValue:roomUid]; + break; + case RoomMoreMenuType_Message_Screen_Open: + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"openScreen"}]; + [self.presenter updateRoomMessageScreenState:NO roomId:roomId]; + break; + case RoomMoreMenuType_Message_Screen_Close: + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"closeScreen"}]; + [self.presenter updateRoomMessageScreenState:YES roomId:roomId]; + break; + case RoomMoreMenuType_Gift_Effect_Open: + { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"openGiftEffect"}]; + [self showSuccessToast:YMLocalizedString(@"XPRoomMoreMenuViewController4")]; + NSDictionary * dic = @{@"hasAnimationEffect": @(1)}; + [[NSNotificationCenter defaultCenter] postNotificationName:kRoomGiftEffectUpdateNotificationKey object:dic]; + [self dismissViewControllerAnimated:YES completion:nil]; + } + break; + case RoomMoreMenuType_Gift_Effect_Close: + { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"closeGiftEffect"}]; + [self showSuccessToast:YMLocalizedString(@"XPRoomMoreMenuViewController5")]; + NSDictionary * dic = @{@"hasAnimationEffect": @(0)}; + [[NSNotificationCenter defaultCenter] postNotificationName:kRoomGiftEffectUpdateNotificationKey object:dic]; + [self dismissViewControllerAnimated:YES completion:nil]; + } + break; + case RoomMoreMenuType_Invite_Fans: + { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"inviteFans"}]; + [self dismissViewControllerAnimated:YES completion:nil]; + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; + XPRoomInviteFansView * inviteFansView = [[XPRoomInviteFansView alloc]initWithRoomUid:roomUid]; + [TTPopup popupView:inviteFansView style:TTPopupStyleActionSheet]; + } + break; + case RoomMoreMenuType_Room_Setting: + { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"roomSetting"}]; + [self dismissViewControllerAnimated:YES completion:nil]; + XPRoomSettingViewController * roomsettingVC = [[XPRoomSettingViewController alloc] initWithDelegate:self.hostDelegate]; + [self.hostDelegate.getCurrentNav pushViewController:roomsettingVC animated:YES]; + } + break; + case RoomMoreMenuType_Room_Dating_Open: + { + if (self.roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode) { + [self showErrorToast:@"跨房PK中不可开启相亲模式!"]; + [self dismissViewControllerAnimated:NO completion:nil]; + return; + } + + if (self.roomInfo.roomModeType == RoomModeType_Open_PK_Mode) { + [self showErrorToast:@"房间PK中不可开启相亲模式!"]; + [self dismissViewControllerAnimated:NO completion:nil]; + return; + } + + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.message = YMLocalizedString(@"XPRoomMoreMenuViewController8"); + config.confirmButtonConfig.title = YMLocalizedString(@"XPRoomMoreMenuViewController9"); + [TTPopup alertWithConfig:config confirmHandler:^{ + [self.presenter openRoomDating:roomUid]; + } cancelHandler:^{ + }]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"openRoomDating"}]; + } + break; + case RoomMoreMenuType_Room_Dating_Close: + { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"closeRoomDating"}]; + TTAlertConfig * config = [[TTAlertConfig alloc] init]; + config.title = YMLocalizedString(@"XPRoomMoreMenuViewController10"); + config.message = @"关闭相亲模式?"; + config.confirmButtonConfig.title = YMLocalizedString(@"XPRoomMoreMenuViewController12"); + [TTPopup alertWithConfig:config confirmHandler:^{ + [self.presenter closeRoomDating:roomUid]; + } cancelHandler:^{ + + }]; + } + break; + case RoomMoreMenuType_Release_Radio: + { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"releaseRadio"}]; + [self.presenter getRoomRadioMessageListWithType:[NSString stringWithFormat:@"%zd", self.roomInfo.type]]; + } + break; + case RoomMoreMenuType_Room_Across_PK_Open: + { + if (self.roomInfo.roomModeType == RoomModeType_Open_Blind) { + [self showErrorToast:@"相亲中不可开启跨房PK!"]; + [self dismissViewControllerAnimated:NO completion:nil]; + return; + } + + if (self.roomInfo.roomModeType == RoomModeType_Open_PK_Mode) { + [self showErrorToast:@"PK中不可以开启跨房PK!"]; + [self dismissViewControllerAnimated:NO completion:nil]; + return; + } + [self dismissViewControllerAnimated:NO completion:nil]; + XPAcrossRoomPKViewController * acrossRoomPKVC = [[XPAcrossRoomPKViewController alloc] initWithRoomUid:roomUid]; + [self.hostDelegate.getCurrentNav presentViewController:acrossRoomPKVC animated:YES completion:nil]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"openAcrossPk"}]; + } + break; + case RoomMoreMenuType_Room_Across_PK_Close: + { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"closeAcrossPk"}]; + [self showErrorToast:@"正在跨房PK中!"]; + [self dismissViewControllerAnimated:NO completion:nil]; + } + break; + case RoomMoreMenuType_Room_Anchor_PK_Open: + { + if (self.hostDelegate.getRoomInfo.pkMatchStartTime) {//PK匹配中 + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.message = @"取消匹配?"; + [TTPopup alertWithConfig:config confirmHandler:^{ + [self.presenter requestCancelMatchRandomPK:roomUid]; + } cancelHandler:^{ + }]; + } else { + [self dismissViewControllerAnimated:NO completion:nil]; + XPAnchorPKSelectTypeController *selectVc = [[XPAnchorPKSelectTypeController alloc] initWithRoomUid:roomUid]; + [self.hostDelegate.getCurrentNav presentViewController:selectVc animated:YES completion:nil]; + } + } + break; + case RoomMoreMenuType_Room_Anchor_PK_Close: + { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"closeAnchorPk"}]; + if (self.roomInfo.pkState == AcrossRoomPkStateTypePenalty) { + if ([self.roomInfo.winUid isEqualToString:[AccountInfoStorage instance].getUid]) {//赢 + if (self.roomInfo.roundId) { + [self.presenter requestFinishAnchorPK:[NSString stringWithFormat:@"%ld", self.roomInfo.roundId]]; + } + } else if ([self.roomInfo.winUid isEqualToString:self.roomInfo.pkUid]) {//输 + + } else {//平局 + if (self.roomInfo.roundId) { + [self.presenter requestFinishAnchorPK:[NSString stringWithFormat:@"%ld", self.roomInfo.roundId]]; + } + } + } else { + if (self.roomInfo.roundId) { + [self.presenter requestFinishAnchorPK:[NSString stringWithFormat:@"%ld", self.roomInfo.roundId]]; + } + } + + } + break; + case RoomMoreMenuType_Message_Screen_Clear: + { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"clearScreen"}]; + TTAlertConfig * config = [[TTAlertConfig alloc] init]; + config.title = YMLocalizedString(@"XPRoomMoreMenuViewController17"); + config.message = @"确定要清空公屏消息吗?\n(清空后不可恢复哦~)"; + config.confirmButtonConfig.title = YMLocalizedString(@"XPRoomMoreMenuViewController19"); + [TTPopup alertWithConfig:config confirmHandler:^{ + [self.presenter cleanScreen:roomUid uid:[AccountInfoStorage instance].getUid]; + } cancelHandler:^{ + }]; + } + break; + + case RoomMoreMenuType_Room_PK_Open: + { + if (self.roomInfo.roomModeType == RoomModeType_Open_Blind) { + [self showErrorToast:@"相亲中不可以开启PK模式!"]; + [self dismissViewControllerAnimated:NO completion:nil]; + return; + } + + if (self.roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode) { + [self showErrorToast:@"跨房PK中不可以开启PK模式!"]; + [self dismissViewControllerAnimated:NO completion:nil]; + return; + } + + [self dismissViewControllerAnimated:NO completion:nil]; + XPRoomPKViewController * roomPKVC = [[XPRoomPKViewController alloc] initWithDelegate:self.hostDelegate]; + [self.hostDelegate.getCurrentNav pushViewController:roomPKVC animated:YES]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"openRoomPk"}]; + } + break; + case RoomMoreMenuType_Room_PK_Close: + { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"closeRoomPk"}]; + [self dismissViewControllerAnimated:NO completion:nil]; + XPRoomPKViewController * roomPKVC = [[XPRoomPKViewController alloc] initWithDelegate:self.hostDelegate]; + [self.hostDelegate.getCurrentNav pushViewController:roomPKVC animated:YES]; + } + break; + case RoomMoreMenuType_Room_redPacket: + { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"redPacket"}]; + [self dismissViewControllerAnimated:YES completion:nil]; + XPRoomSendRedPacketViewController *sendRedPacketVC = [[XPRoomSendRedPacketViewController alloc] initWithDelegate:self.hostDelegate]; + sendRedPacketVC.roomUid = roomUid; + sendRedPacketVC.modalPresentationStyle = UIModalPresentationOverFullScreen; + BaseNavigationController *nav = [[BaseNavigationController alloc] initWithRootViewController:sendRedPacketVC]; + nav.modalPresentationStyle = UIModalPresentationOverFullScreen; + [self.hostDelegate.getCurrentNav presentViewController:nav animated:YES completion:nil]; + } + break; + case RoomMoreMenuType_Room_Voice: + { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"voice"}]; + [self dismissViewControllerAnimated:YES completion:nil]; + [RtcManager instance].remoteMuted = !item.isSelected; + item.isSelected = [RtcManager instance].isRemoteMuted; + } + break; + case RoomMoreMenuType_Room_Wish_Gift: + { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"redPacket"}]; + [self dismissViewControllerAnimated:YES completion:nil]; + + XPWishGiftCreateViewController *wishGiftVC = [[XPWishGiftCreateViewController alloc] initWithDelegate:self.hostDelegate]; + [self.hostDelegate.getCurrentNav pushViewController:wishGiftVC animated:YES]; + } + break; + default: + break; + } +} + +#pragma mark - Event Response +- (void)disMissRecognizer { + [self dismissViewControllerAnimated:YES completion:nil]; +} + +#pragma mark - Getters And Setters +- (UICollectionView *)collectionView{ + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.sectionInset = UIEdgeInsetsMake(24, 0, 10, 0); + layout.itemSize = CGSizeMake(KScreenWidth /5, 50); + layout.minimumLineSpacing = 12; + layout.minimumInteritemSpacing = 0; + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.backgroundColor = [UIColor clearColor]; + _collectionView.alpha = 0.9; + _collectionView.scrollEnabled = NO; + [_collectionView registerClass:[XPRoomMoreMenuCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPRoomMoreMenuCollectionViewCell class])]; + } + return _collectionView; +} + +- (UIView *)topView { + if (!_topView) { + _topView = [[UIView alloc] init]; + _topView.backgroundColor = [UIColor clearColor]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(disMissRecognizer)]; + [_topView addGestureRecognizer:tap]; + } + return _topView; +} + +- (UIView *)bottomView { + if (!_bottomView) { + _bottomView = [[UIView alloc] init]; + } + return _bottomView; +} + +- (UIVisualEffectView *)effectView { + if (!_effectView) { + UIBlurEffect *beffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; + _effectView = [[UIVisualEffectView alloc] initWithEffect:beffect]; + + UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, KScreenHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(8, 8)]; + CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; + maskLayer.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); + maskLayer.path = maskPath.CGPath; + _effectView.layer.mask = maskLayer; + } + return _effectView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/MoreView/View/YUMIChamberCallforFanaticsRegard.h b/YuMi/Modules/YMRoom/View/MoreView/View/YUMIChamberCallforFanaticsRegard.h deleted file mode 100644 index b625ba10..00000000 --- a/YuMi/Modules/YMRoom/View/MoreView/View/YUMIChamberCallforFanaticsRegard.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMRoomInviteFriendView.h -// YUMI -// -// Created by YUMI on 2021/12/27. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberCallforFanaticsRegard : UIView - -- (instancetype)initAboutChamberCid:(NSString *)roomUid; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MoreView/View/YUMIChamberCallforFanaticsRegard.m b/YuMi/Modules/YMRoom/View/MoreView/View/YUMIChamberCallforFanaticsRegard.m deleted file mode 100644 index 8cddb492..00000000 --- a/YuMi/Modules/YMRoom/View/MoreView/View/YUMIChamberCallforFanaticsRegard.m +++ /dev/null @@ -1,291 +0,0 @@ -// -// YMRoomInviteFriendView.m -// YUMI -// -// Created by YUMI on 2021/12/27. -// - -#import "YUMIChamberCallforFanaticsRegard.h" -#import -#import "ThemeColor+Room.h" -#import "UIImage+Utils.h" -#import "Api+MoreMenu.h" -#import "XNDJTBWGLoadingTool.h" -#import "YUMIMacroUitls.h" -#import "CallforFanaticsMatrix.h" - -@interface YUMIChamberCallforAssistantChampionRegard : UIView -@property (nonatomic,strong) UIView * circleRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@end - -@implementation YUMIChamberCallforAssistantChampionRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.circleRegard]; - [self addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.titleLabel.mas_right); - }]; - - [self.circleRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(4, 4)); - make.centerY.left.mas_equalTo(self); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.circleRegard.mas_right).offset(8); - make.centerY.mas_equalTo(self); - }]; -} - -#pragma mark - Getters And Setters -- (UIView *)circleRegard { - if (!_circleRegard) { - _circleRegard = [[UIView alloc] init]; - _circleRegard.backgroundColor = UIColorFromRGB(0xCAC2FF); - _circleRegard.layer.masksToBounds = YES; - _circleRegard.layer.cornerRadius = 2; - } - return _circleRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:13]; - _titleLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _titleLabel; -} - -@end - - -@interface YUMIChamberCallforFanaticsRegard () -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) YUMIChamberCallforAssistantChampionRegard *thresholdRegard; -@property (nonatomic,strong) YUMIChamberCallforAssistantChampionRegard *instantRegard; -@property (nonatomic,strong) YUMIChamberCallforAssistantChampionRegard *tertiusRegard; -@property (nonatomic,strong) UIButton *centiretyforBtuton; -@property (nonatomic,strong) UILabel *residueSequencignation; -@property (nonatomic,copy) NSString *roomUid; -@property (nonatomic,strong) CallforFanaticsMatrix *fanaticsAbstractMatrix; -@property (nonatomic,strong) dispatch_source_t timer; -@end - -@implementation YUMIChamberCallforFanaticsRegard - - -- (instancetype)initAboutChamberCid:(NSString *)roomUid { - self = [super init]; - if (self) { - self.roomUid = roomUid; - [self acquireCentiretyforFantowardsicsDeclare]; - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.titleLabel]; - [self addSubview:self.thresholdRegard]; - [self addSubview:self.instantRegard]; - [self addSubview:self.tertiusRegard]; - [self addSubview:self.centiretyforBtuton]; - [self addSubview:self.residueSequencignation]; - - self.backgroundColor = [UIColor whiteColor]; - CAShapeLayer * layer = [CAShapeLayer layer]; - layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, 273) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(15, 15)].CGPath; - self.layer.mask = layer; -} - -- (void)initChildLyRestrictions { - self.frame = CGRectMake(0, 0, KScreenWidth, 273); - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(20); - make.right.left.mas_equalTo(self); - }]; - - [self.thresholdRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(16); - make.left.mas_equalTo(self).offset(30); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(23); - }]; - - [self.instantRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.left.mas_equalTo(self.thresholdRegard); - make.top.mas_equalTo(self.thresholdRegard.mas_bottom).offset(15); - }]; - - [self.tertiusRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.left.mas_equalTo(self.thresholdRegard); - make.top.mas_equalTo(self.instantRegard.mas_bottom).offset(15); - }]; - - [self.centiretyforBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(160, 38)); - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self.tertiusRegard.mas_bottom).offset(40); - }]; - - [self.residueSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.left.mas_equalTo(self); - make.top.mas_equalTo(self.centiretyforBtuton.mas_bottom).offset(16); - }]; -} - -- (void)acquireCentiretyforFantowardsicsDeclare { - [Api examineCentiretyforChamberFantowardsics:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - CallforFanaticsMatrix * model = [CallforFanaticsMatrix mtowardsrixAboutImpactbasket:data.data]; - self.fanaticsAbstractMatrix = model; - [self prohibitipositionFantowardsicsRegard:model]; - [self unfoildDeficitucedPubescenceIntrtowardsemper]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } roomUid:self.roomUid]; -} - -- (void)prohibitipositionFantowardsicsRegard:(CallforFanaticsMatrix *)model { - NSString * residueTitle = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Room_Invite_Fans_View_0"), model.inviteTimes]; - NSMutableAttributedString * residueAttribute = [[NSMutableAttributedString alloc] initWithString:residueTitle attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13], NSForegroundColorAttributeName:[DJDKMIMOMColor instantEssayPrettify]}]; - NSRange range = [residueTitle rangeOfString:[NSString stringWithFormat:@"%d", model.inviteTimes]]; - [residueAttribute addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:18] range:range]; - [residueAttribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor aplictowardsionUnderlinePrettify] range:range]; - self.residueSequencignation.attributedText = residueAttribute; - self.residueSequencignation.textAlignment = NSTextAlignmentCenter; - - self.centiretyforBtuton.enabled = model.inviteInterval <= 0; - if (model.inviteTimes <= 0) { - [self.centiretyforBtuton setTitle:YMLocalizedString(@"YUMI_Room_Invite_Fans_View_1") forState:UIControlStateDisabled]; - self.centiretyforBtuton.enabled = NO; - } - - NSString * fansNumberTitle = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Room_Invite_Fans_View_2"), model.fansNum]; - NSMutableAttributedString * fansAttribute = [[NSMutableAttributedString alloc] initWithString:fansNumberTitle attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13], NSForegroundColorAttributeName:[DJDKMIMOMColor instantEssayPrettify]}]; - NSRange fansRange = [fansNumberTitle rangeOfString:[NSString stringWithFormat:@"%ld", model.fansNum]]; - [fansAttribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor aplictowardsionUnderlinePrettify] range:fansRange]; - self.thresholdRegard.titleLabel.attributedText = fansAttribute; -} - -- (void)unfoildDeficitucedPubescenceIntrtowardsemper { - dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(0, 0)); - dispatch_source_set_timer(_timer, DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC, 0 * NSEC_PER_SEC); - dispatch_source_set_event_handler(_timer, ^{ - dispatch_async(dispatch_get_main_queue(), ^{ - self.fanaticsAbstractMatrix.inviteInterval --; - if (self.fanaticsAbstractMatrix.inviteInterval <= 0) { - dispatch_source_cancel(_timer); - self.timer = nil; - [self.centiretyforBtuton setTitle:YMLocalizedString(@"YUMI_Room_Invite_Fans_View_3") forState:UIControlStateNormal]; - self.centiretyforBtuton.enabled = YES; - } else { - int seconds = self.fanaticsAbstractMatrix.inviteInterval % 60; - int minutes = (self.fanaticsAbstractMatrix.inviteInterval / 60) % 60; - NSString * title = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Room_Invite_Fans_View_4"),minutes, seconds]; - [self.centiretyforBtuton setTitle:title forState:UIControlStateDisabled]; - } - }); - }); - self.timer = _timer; - dispatch_resume(_timer); -} - -#pragma mark - Event Response -- (void)centiretyforBtutonPerformance:(UIButton *)sender { - sender.enabled = NO; - [Api centiretyforChamberFantowardsics:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - CallforFanaticsMatrix * model = [CallforFanaticsMatrix mtowardsrixAboutImpactbasket:data.data]; - self.fanaticsAbstractMatrix = model; - [self prohibitipositionFantowardsicsRegard:model]; - [self unfoildDeficitucedPubescenceIntrtowardsemper]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - sender.enabled = YES; - } - } roomUid:self.roomUid]; -} - -#pragma mark - Getters And Setters -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Room_Invite_Fans_View_5"); - _titleLabel.font = [UIFont boldSystemFontOfSize:16]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} - -- (YUMIChamberCallforAssistantChampionRegard *)thresholdRegard { - if (!_thresholdRegard) { - _thresholdRegard = [[YUMIChamberCallforAssistantChampionRegard alloc] init]; - } - return _thresholdRegard; -} - -- (YUMIChamberCallforAssistantChampionRegard *)instantRegard { - if (!_instantRegard) { - _instantRegard = [[YUMIChamberCallforAssistantChampionRegard alloc] init]; - _instantRegard.titleLabel.text= YMLocalizedString(@"YUMI_Room_Invite_Fans_View_6"); - } - return _instantRegard; -} - -- (YUMIChamberCallforAssistantChampionRegard *)tertiusRegard { - if (!_tertiusRegard) { - _tertiusRegard = [[YUMIChamberCallforAssistantChampionRegard alloc] init]; - _tertiusRegard.titleLabel.text = YMLocalizedString(@"YUMI_Room_Invite_Fans_View_7"); - } - return _tertiusRegard; -} - - -- (UIButton *)centiretyforBtuton { - if (!_centiretyforBtuton) { - _centiretyforBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_centiretyforBtuton setTitle:YMLocalizedString(@"YUMI_Room_Invite_Fans_View_8") forState:UIControlStateNormal]; - [_centiretyforBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_centiretyforBtuton setTitleColor:[DJDKMIMOMColor prohibitionBtutonEssayPrettify] forState:UIControlStateDisabled]; - _centiretyforBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_centiretyforBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify] ] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_centiretyforBtuton setBackgroundImage:[UIImage imageWithColor:[DJDKMIMOMColor prohibitionBtutonPrettify]] forState:UIControlStateDisabled]; - _centiretyforBtuton.layer.masksToBounds = YES; - _centiretyforBtuton.layer.cornerRadius = 38 / 2; - [_centiretyforBtuton addTarget:self action:@selector(centiretyforBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _centiretyforBtuton; -} - -- (UILabel *)residueSequencignation { - if (!_residueSequencignation) { - _residueSequencignation = [[UILabel alloc] init]; - } - return _residueSequencignation; -} - - - -@end diff --git a/YuMi/Modules/YMRoom/View/MoreView/View/YUMIChamberFurthaerParrotRegardGovernancer.h b/YuMi/Modules/YMRoom/View/MoreView/View/YUMIChamberFurthaerParrotRegardGovernancer.h deleted file mode 100644 index 51e44baa..00000000 --- a/YuMi/Modules/YMRoom/View/MoreView/View/YUMIChamberFurthaerParrotRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomMoreMenuViewController.h -// YUMI -// -// Created by YUMI on 2021/12/11. -// - -#import "MvpRegardGovernancer.h" -#import "ChamberHostRepresendtation.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberFurthaerParrotRegardGovernancer : MvpRegardGovernancer -- (instancetype)initWithDelegate:(id)delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MoreView/View/YUMIChamberFurthaerParrotRegardGovernancer.m b/YuMi/Modules/YMRoom/View/MoreView/View/YUMIChamberFurthaerParrotRegardGovernancer.m deleted file mode 100644 index 377ec843..00000000 --- a/YuMi/Modules/YMRoom/View/MoreView/View/YUMIChamberFurthaerParrotRegardGovernancer.m +++ /dev/null @@ -1,527 +0,0 @@ -// -// YMRoomMoreMenuViewController.m -// YUMI -// -// Created by YUMI on 2021/12/11. -// - -#import "YUMIChamberFurthaerParrotRegardGovernancer.h" -#import -#import "YUMIMacroUitls.h" -#import "MKJPopup.h" -#import "YUMIConstant.h" -#import "AccountAbstractStorage.h" -#import "DJDKMIMOMColor.h" -#import "RealtimackExecutive.h" -#import "StatsticsticsServingFacilitater.h" -#import "YUMIChamberFurthaerProvisionMatrix.h" -#import "ChamberAbstractMatrix.h" -#import "AttachmentMatrix.h" -#import "UnionSensationalManagementAbstractMatrix.h" -#import "AccountAbstractStorage.h" -#import "NSArray+Safe.h" -#import "YUMIChamberFurthaerParrotAssembletionRegardElement.h" -#import "YUMIChamberCallforFanaticsRegard.h" -#import "YUMIThroughoutChamberCombatRegardGovernancer.h" -#import "XCombatellegCombatRegardGovernancer.h" -#import "YUMIChamberInstanllingRegardGovernancer.h" -#import "YUMIReleaseWirelessRegardGovernancer.h" -#import "YUMIChamberCombatRegardGovernancer.h" -#import "YUMIChamberDischargeDeficitSheatheRegardGovernancer.h" -#import "BaseNevigationGovernancer.h" -#import "YUMIDesirePresentCreateRegardGovernancer.h" -#import "XCombatellegCombatChosenGenreGovernancer.h" -#import "YUMIFurthaerParrotExternalizer.h" -#import "FBCFurthaerMenuCeremony.h" - -UIKIT_EXTERN NSString * const kRoomGiftEffectUpdateNotificationKey; - -@interface YUMIChamberFurthaerParrotRegardGovernancer () -@property (nonatomic,strong) UIView * apexRegard; -@property (nonatomic, strong) UIVisualEffectView *impressionRegard; -@property (nonatomic,strong) UICollectionView *collectionView; -@property (nonatomic,strong) UIView * bottomView; -@property (nonatomic,strong) NSArray *datasource; -@property (nonatomic,strong) ChamberAbstractMatrix *roomInfo; - -@property (nonatomic,assign) id hostRepresedtation; -@end - -@implementation YUMIChamberFurthaerParrotRegardGovernancer - -- (instancetype)initWithDelegate:(id)delegate{ - if (self = [super init]) { - self.modalPresentationStyle = UIModalPresentationOverFullScreen; - self.roomInfo = delegate.acquireChamberAbstract; - self.hostRepresedtation = delegate; - } - return self; -} - -- (YUMIFurthaerParrotExternalizer *)producePresimport { - return [[YUMIFurthaerParrotExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; - - BOOL meIsSensationalManagement = NO; - for (UnionSensationalManagementAbstractMatrix *executiveAbstract in self.hostRepresedtation.acquireChamberSenstowardsionalManagementSttowardsement) { - if ([executiveAbstract.uid isEqualToString:[AccountAbstractStorage instance].acquireCid]) { - meIsSensationalManagement = YES; - break; - } - } - [self.presimport acquireFurthaerParrotTowardsoloudspeakerProvenience:self.roomInfo isSuperAdmin:meIsSensationalManagement]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.modalPresentationStyle = UIModalPresentationOverFullScreen; - self.view.backgroundColor = [UIColor clearColor]; - [self.view addSubview:self.apexRegard]; - [self.view addSubview:self.impressionRegard]; - [self.view addSubview:self.collectionView]; - [self.view addSubview:self.bottomView]; -} - -- (void)initChildLyRestrictions { - [self.apexRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.collectionView.mas_top); - }]; - - [self.impressionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(0); - make.top.mas_equalTo(self.collectionView); - make.bottom.mas_equalTo(self.bottomView); - }]; - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.height.mas_equalTo(0); - make.bottom.mas_equalTo(self.bottomView.mas_top); - }]; - - [self.bottomView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.height.mas_equalTo(kSafeAreaBottomHeight); - }]; -} - -#pragma mark - FBCFurthaerMenuCeremony -- (void)acquireFurthaerParrotTowardsoloudspeakerAccomplishment:(NSArray *)list { - self.datasource = list; - [self.collectionView reloadData]; - CGFloat contentHeight= 24 + 36; - CGFloat itemAltitude = 50; - int page = list.count % 5; - int scale = (int)list.count / (int)5; - if (page == 0) { - contentHeight += (scale *itemAltitude); - } else { - contentHeight += ((scale+1) *itemAltitude + scale * 12); - } - CAShapeLayer * layer = [CAShapeLayer layer]; - UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, contentHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(8, 8)]; - layer.path = path.CGPath; - self.collectionView.layer.mask = layer; - [self.collectionView mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(contentHeight); - }]; -} - -- (void)unfoildChamberPresentBWSttessAccomplishment { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Room_More_Menu_View_Controller_0")]; - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)concludeChamberPresentBWSttessAccomplishment { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Room_More_Menu_View_Controller_1")]; - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)refurbishChamberCommunictowardsioncreenDeclareAccomplishment:(ChamberAbstractMatrix *)roomInfo { - AttachmentMatrix *attachement = [[AttachmentMatrix alloc]init]; - attachement.first = IndividualityCommunicationGenre_Update_RoomInfo; - attachement.second = Custom_Message_Sub_Update_RoomInfo_MessageState; - attachement.data = @{@"roomInfo":roomInfo.mtowardsrix2dictionary}; - NIMMessage *message = [[NIMMessage alloc]init]; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachement; - message.messageObject = object; - - NSString * roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - NIMSession *session = [NIMSession session:roomId type:NIMSessionTypeChatroom]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)sanitarycreenAccomplishment { - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)unfoildChamberEngagementAccomplishment { - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)concludeChamberEngagementAccomplishment { - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)acquireReleaseWirelessAccomplishment:(YUMIReleaseWirelessMatrix *)model { - [self dismissViewControllerAnimated:YES completion:nil]; - YUMIReleaseWirelessRegardGovernancer * releaseRadioVC = [[YUMIReleaseWirelessRegardGovernancer alloc] initWithDelegate:self.hostRepresedtation]; - releaseRadioVC.model = model; - releaseRadioVC.modalPresentationStyle = UIModalPresentationOverFullScreen; - [self.hostRepresedtation.acquireUniversalNev presentViewController:releaseRadioVC animated:YES completion:nil]; -} -- (void)acquireLoudspeakerAccomplishment:(XPNobleTrumpetModel *)model { - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)concludeKellegCombateAccomplishment:(BOOL)success msg:(NSString *)msg { - if (!success) { - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.message = msg; - config.performanceStyle = TTAlertActionConfirmStyle; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - } cancelHandler:^{ - }]; - } else { - [self dismissViewControllerAnimated:YES completion:nil]; - } -} - -- (void)revoctowardsionDirectoryapttowardsionArbitraryCombatAccomplishment { - self.hostRepresedtation.acquireChamberAbstract.pkMatchStartTime = nil; - [[NSNotificationCenter defaultCenter] postNotificationName:@"cancelMatchRandomPK" object:nil]; - [self dismissViewControllerAnimated:YES completion:nil]; - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; - XCombatellegCombatChosenGenreGovernancer *selectVc = [[XCombatellegCombatChosenGenreGovernancer alloc] initAboutChamberCid:roomUid]; - [self.hostRepresedtation.acquireUniversalNev presentViewController:selectVc animated:YES completion:nil]; -} - -#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMIChamberFurthaerParrotAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIChamberFurthaerParrotAssembletionRegardElement class]) forIndexPath:indexPath]; - cell.itemMatrix = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - [collectionView deselectItemAtIndexPath:indexPath animated:YES]; - YUMIChamberFurthaerProvisionMatrix * item = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - NSString * roomUid = [NSString stringWithFormat:@"%ld",self.roomInfo.uid]; - NSString * roomId = [NSString stringWithFormat:@"%ld", self.roomInfo.roomId]; - switch (item.type) { - case ChamberMoreParrotGenre_Gift_Value_Close: - { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"closeGiftValue"}]; - if (self.roomInfo.roomModeType == ChamberModeGenre_Open_Blind) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Room_More_Menu_View_Controller_2")]; - return; - } - MKJPrecautiousDisposition * config = [[MKJPrecautiousDisposition alloc] init]; - config.title = @""; - config.message = @"关闭礼物值将会清除当前麦上所有礼物值数据,确认关闭吗?"; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [self.presimport concludeChamberPresentBWSttess:roomUid]; - } cancelHandler:^{ - - }]; - } - break; - case ChamberMoreParrotGenre_Gift_Value_Open: - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"openGiftValue"}]; - [self.presimport unfoildChamberPresentBWSttess:roomUid]; - break; - case ChamberMoreParrotGenre_Message_Screen_Open: - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"openScreen"}]; - [self.presimport refurbishChamberCommunictowardsioncreenDeclare:NO roomId:roomId]; - break; - case ChamberMoreParrotGenre_Message_Screen_Close: - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"closeScreen"}]; - [self.presimport refurbishChamberCommunictowardsioncreenDeclare:YES roomId:roomId]; - break; - case ChamberMoreParrotGenre_Gift_Effect_Open: - { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"openGiftEffect"}]; - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Room_More_Menu_View_Controller_4")]; - NSDictionary * dic = @{@"hasAnimationEffect": @(1)}; - [[NSNotificationCenter defaultCenter] postNotificationName:kRoomGiftEffectUpdateNotificationKey object:dic]; - [self dismissViewControllerAnimated:YES completion:nil]; - } - break; - case ChamberMoreParrotGenre_Gift_Effect_Close: - { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"closeGiftEffect"}]; - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Room_More_Menu_View_Controller_5")]; - NSDictionary * dic = @{@"hasAnimationEffect": @(0)}; - [[NSNotificationCenter defaultCenter] postNotificationName:kRoomGiftEffectUpdateNotificationKey object:dic]; - [self dismissViewControllerAnimated:YES completion:nil]; - } - break; - case ChamberMoreParrotGenre_Invite_Fans: - { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"inviteFans"}]; - [self dismissViewControllerAnimated:YES completion:nil]; - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; - YUMIChamberCallforFanaticsRegard * inviteFansView = [[YUMIChamberCallforFanaticsRegard alloc]initAboutChamberCid:roomUid]; - [MKJPopup popupRegard:inviteFansView style:MKJPopupStyleActionSheet]; - } - break; - case ChamberMoreParrotGenre_Room_Setting: - { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"roomSetting"}]; - [self dismissViewControllerAnimated:YES completion:nil]; - YUMIChamberInstanllingRegardGovernancer * roomsettingVC = [[YUMIChamberInstanllingRegardGovernancer alloc] initWithDelegate:self.hostRepresedtation]; - [self.hostRepresedtation.acquireUniversalNev pushViewController:roomsettingVC animated:YES]; - } - break; - case ChamberMoreParrotGenre_Room_Dating_Open: - { - if (self.roomInfo.roomModeType == ChamberModeGenre_Open_AcrossRoomPK_mode) { - [self EvidenceMistakeToast:@"跨房PK中不可开启相亲模式!"]; - [self dismissViewControllerAnimated:NO completion:nil]; - return; - } - - if (self.roomInfo.roomModeType == ChamberModeGenre_Open_PK_Mode) { - [self EvidenceMistakeToast:@"房间PK中不可开启相亲模式!"]; - [self dismissViewControllerAnimated:NO completion:nil]; - return; - } - - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.message = YMLocalizedString(@"YUMI_Room_More_Menu_View_Controller_8"); - config.acknowledgementBtutonDisposition.title = YMLocalizedString(@"YUMI_Room_More_Menu_View_Controller_9"); - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [self.presimport unfoildChamberEngagement:roomUid]; - } cancelHandler:^{ - }]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"openRoomDating"}]; - } - break; - case ChamberMoreParrotGenre_Room_Dating_Close: - { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"closeRoomDating"}]; - MKJPrecautiousDisposition * config = [[MKJPrecautiousDisposition alloc] init]; - config.title = YMLocalizedString(@"YUMI_Room_More_Menu_View_Controller_10"); - config.message = @"关闭相亲模式?"; - config.acknowledgementBtutonDisposition.title = YMLocalizedString(@"YUMI_Room_More_Menu_View_Controller_12"); - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [self.presimport concludeChamberEngagement:roomUid]; - } cancelHandler:^{ - - }]; - } - break; - case ChamberMoreParrotGenre_Release_Radio: - { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"releaseRadio"}]; - [self.presimport acquireChamberWirelessCommunictowardsionSttowardsementAboutGenre:[NSString stringWithFormat:@"%zd", self.roomInfo.type]]; - } - break; - case ChamberMoreParrotGenre_Room_Across_PK_Open: - { - if (self.roomInfo.roomModeType == ChamberModeGenre_Open_Blind) { - [self EvidenceMistakeToast:@"相亲中不可开启跨房PK!"]; - [self dismissViewControllerAnimated:NO completion:nil]; - return; - } - - if (self.roomInfo.roomModeType == ChamberModeGenre_Open_PK_Mode) { - [self EvidenceMistakeToast:@"PK中不可以开启跨房PK!"]; - [self dismissViewControllerAnimated:NO completion:nil]; - return; - } - [self dismissViewControllerAnimated:NO completion:nil]; - YUMIThroughoutChamberCombatRegardGovernancer * acrossRoomPKVC = [[YUMIThroughoutChamberCombatRegardGovernancer alloc] initAboutChamberCid:roomUid]; - [self.hostRepresedtation.acquireUniversalNev presentViewController:acrossRoomPKVC animated:YES completion:nil]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"openAcrossPk"}]; - } - break; - case ChamberMoreParrotGenre_Room_Across_PK_Close: - { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"closeAcrossPk"}]; - [self EvidenceMistakeToast:@"正在跨房PK中!"]; - [self dismissViewControllerAnimated:NO completion:nil]; - } - break; - case ChamberMoreParrotGenre_Room_Anchor_PK_Open: - { - if (self.hostRepresedtation.acquireChamberAbstract.pkMatchStartTime) { - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.message = @"取消匹配?"; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [self.presimport requisitionRevoctowardsionDirectoryapttowardsionArbitraryCombat:roomUid]; - } cancelHandler:^{ - }]; - } else { - [self dismissViewControllerAnimated:NO completion:nil]; - XCombatellegCombatChosenGenreGovernancer *selectVc = [[XCombatellegCombatChosenGenreGovernancer alloc] initAboutChamberCid:roomUid]; - [self.hostRepresedtation.acquireUniversalNev presentViewController:selectVc animated:YES completion:nil]; - } - } - break; - case ChamberMoreParrotGenre_Room_Anchor_PK_Close: - { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"closeAnchorPk"}]; - if (self.roomInfo.pkState == ThroughoutChamberPkDeclareGenrePenalty) { - if ([self.roomInfo.winUid isEqualToString:[AccountAbstractStorage instance].acquireCid]) { - if (self.roomInfo.roundId) { - [self.presimport requisitionAccomplishKellegCombat:[NSString stringWithFormat:@"%ld", self.roomInfo.roundId]]; - } - } else if ([self.roomInfo.winUid isEqualToString:self.roomInfo.pkUid]) { - - } else { - if (self.roomInfo.roundId) { - [self.presimport requisitionAccomplishKellegCombat:[NSString stringWithFormat:@"%ld", self.roomInfo.roundId]]; - } - } - } else { - if (self.roomInfo.roundId) { - [self.presimport requisitionAccomplishKellegCombat:[NSString stringWithFormat:@"%ld", self.roomInfo.roundId]]; - } - } - - } - break; - case ChamberMoreParrotGenre_Message_Screen_Clear: - { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"clearScreen"}]; - MKJPrecautiousDisposition * config = [[MKJPrecautiousDisposition alloc] init]; - config.title = YMLocalizedString(@"YUMI_Room_More_Menu_View_Controller_17"); - config.message = @"确定要清空公屏消息吗?\n(清空后不可恢复哦~)"; - config.acknowledgementBtutonDisposition.title = YMLocalizedString(@"YUMI_Room_More_Menu_View_Controller_19"); - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [self.presimport sanitarycreen:roomUid uid:[AccountAbstractStorage instance].acquireCid]; - } cancelHandler:^{ - }]; - } - break; - - case ChamberMoreParrotGenre_Room_PK_Open: - { - if (self.roomInfo.roomModeType == ChamberModeGenre_Open_Blind) { - [self EvidenceMistakeToast:@"相亲中不可以开启PK模式!"]; - [self dismissViewControllerAnimated:NO completion:nil]; - return; - } - - if (self.roomInfo.roomModeType == ChamberModeGenre_Open_AcrossRoomPK_mode) { - [self EvidenceMistakeToast:@"跨房PK中不可以开启PK模式!"]; - [self dismissViewControllerAnimated:NO completion:nil]; - return; - } - - [self dismissViewControllerAnimated:NO completion:nil]; - YUMIChamberCombatRegardGovernancer * roomPKVC = [[YUMIChamberCombatRegardGovernancer alloc] initWithDelegate:self.hostRepresedtation]; - [self.hostRepresedtation.acquireUniversalNev pushViewController:roomPKVC animated:YES]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"openRoomPk"}]; - } - break; - case ChamberMoreParrotGenre_Room_PK_Close: - { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"closeRoomPk"}]; - [self dismissViewControllerAnimated:NO completion:nil]; - YUMIChamberCombatRegardGovernancer * roomPKVC = [[YUMIChamberCombatRegardGovernancer alloc] initWithDelegate:self.hostRepresedtation]; - [self.hostRepresedtation.acquireUniversalNev pushViewController:roomPKVC animated:YES]; - } - break; - case ChamberMoreParrotGenre_Room_redPacket: - { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"redPacket"}]; - [self dismissViewControllerAnimated:YES completion:nil]; - YUMIChamberDischargeDeficitSheatheRegardGovernancer *sendRedPacketVC = [[YUMIChamberDischargeDeficitSheatheRegardGovernancer alloc] initWithDelegate:self.hostRepresedtation]; - sendRedPacketVC.roomUid = roomUid; - sendRedPacketVC.modalPresentationStyle = UIModalPresentationOverFullScreen; - BaseNevigationGovernancer *nav = [[BaseNevigationGovernancer alloc] initWithRootViewController:sendRedPacketVC]; - nav.modalPresentationStyle = UIModalPresentationOverFullScreen; - [self.hostRepresedtation.acquireUniversalNev presentViewController:nav animated:YES completion:nil]; - } - break; - case ChamberMoreParrotGenre_Room_Voice: - { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"voice"}]; - [self dismissViewControllerAnimated:YES completion:nil]; - [RealtimackExecutive instance].remoteDelicate = !item.isSelected; - item.isSelected = [RealtimackExecutive instance].isRemoteDelicate; - } - break; - case ChamberMoreParrotGenre_Room_Wish_Gift: - { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"redPacket"}]; - [self dismissViewControllerAnimated:YES completion:nil]; - - YUMIDesirePresentCreateRegardGovernancer *wishGiftVC = [[YUMIDesirePresentCreateRegardGovernancer alloc] initWithDelegate:self.hostRepresedtation]; - [self.hostRepresedtation.acquireUniversalNev pushViewController:wishGiftVC animated:YES]; - } - break; - default: - break; - } -} - -#pragma mark - Event Response -- (void)prohibitiaplictowardsionarRecognition { - [self dismissViewControllerAnimated:YES completion:nil]; -} - -#pragma mark - Getters And Setters -- (UICollectionView *)collectionView{ - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.sectionInset = UIEdgeInsetsMake(24, 0, 10, 0); - layout.itemSize = CGSizeMake(KScreenWidth /5, 50); - layout.minimumLineSpacing = 12; - layout.minimumInteritemSpacing = 0; - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.backgroundColor = [UIColor clearColor]; - _collectionView.alpha = 0.9; - _collectionView.scrollEnabled = NO; - [_collectionView registerClass:[YUMIChamberFurthaerParrotAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIChamberFurthaerParrotAssembletionRegardElement class])]; - } - return _collectionView; -} - -- (UIView *)apexRegard { - if (!_apexRegard) { - _apexRegard = [[UIView alloc] init]; - _apexRegard.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(prohibitiaplictowardsionarRecognition)]; - [_apexRegard addGestureRecognizer:tap]; - } - return _apexRegard; -} - -- (UIView *)bottomView { - if (!_bottomView) { - _bottomView = [[UIView alloc] init]; - } - return _bottomView; -} - -- (UIVisualEffectView *)impressionRegard { - if (!_impressionRegard) { - UIBlurEffect *beffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; - _impressionRegard = [[UIVisualEffectView alloc] initWithEffect:beffect]; - - UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, KScreenHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(8, 8)]; - CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; - maskLayer.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); - maskLayer.path = maskPath.CGPath; - _impressionRegard.layer.mask = maskLayer; - } - return _impressionRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/NewUserGift/XPNewUserRoomGiftView.h b/YuMi/Modules/YMRoom/View/NewUserGift/XPNewUserRoomGiftView.h new file mode 100644 index 00000000..a4b6d9bb --- /dev/null +++ b/YuMi/Modules/YMRoom/View/NewUserGift/XPNewUserRoomGiftView.h @@ -0,0 +1,19 @@ +// +// YMNewUserRoomGiftView.h +// YUMI +// +// Created by YUMI on 2022/7/26. +// + +#import +#import "GiftInfoModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPNewUserRoomGiftView : UIView + +@property (nonatomic, strong) GiftInfoModel *giftInfo; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/NewUserGift/XPNewUserRoomGiftView.m b/YuMi/Modules/YMRoom/View/NewUserGift/XPNewUserRoomGiftView.m new file mode 100644 index 00000000..93fe5567 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/NewUserGift/XPNewUserRoomGiftView.m @@ -0,0 +1,151 @@ +// +// YMNewUserRoomGiftView.m +// YUMI +// +// Created by YUMI on 2022/7/26. +// + +#import "XPNewUserRoomGiftView.h" +///Third +#import +#import "NetImageView.h" +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "TTPopup.h" +#import "YUMIMacroUitls.h" +#import "StatisticsServiceHelper.h" + +@interface XPNewUserRoomGiftView () + +@property (nonatomic, strong) UIImageView *bgImageView; +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +@property (nonatomic, strong) NetImageView *iconImageView; +@property (nonatomic, strong) UILabel *descLabel; +///关闭按钮 +@property (nonatomic,strong) UIButton *closeButton; + +@end + + +@implementation XPNewUserRoomGiftView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.layer.masksToBounds = YES; + self.layer.cornerRadius = 15; + self.backgroundColor = [UIColor clearColor]; + [self addSubview:self.bgImageView]; + [self addSubview:self.titleLabel]; + [self addSubview:self.iconImageView]; + [self addSubview:self.descLabel]; + [self addSubview:self.closeButton]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(260); + make.height.mas_equalTo(376); + }]; + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.left.right.mas_equalTo(0); + make.height.mas_equalTo(320); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(130); + make.left.right.mas_equalTo(self).inset(15); + make.height.mas_equalTo(17); + }]; + + [self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.width.height.mas_equalTo(100); + make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(13); + }]; + + [self.descLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.iconImageView.mas_bottom).mas_offset(19); + make.height.mas_equalTo(17); + make.left.right.mas_equalTo(self).inset(15); + }]; + [self.closeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(32, 32)); + make.top.mas_equalTo(self.bgImageView.mas_bottom).offset(24); + make.centerX.mas_equalTo(self); + }]; +} + +#pragma mark - Event Response +- (void)closeButtonAction:(UIButton *)sender { + [TTPopup dismiss]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventRoomNugivePopClick]; +} + +#pragma mark - Getters And Setters +- (void)setGiftInfo:(GiftInfoModel *)giftInfo { + NSString *giftStr = [NSString stringWithFormat:@"%@*%zd", giftInfo.giftName, giftInfo.count]; + NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:@"获得新人礼物 " attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12],NSForegroundColorAttributeName:UIColorFromRGB(0xEEFEEC)}]; + [str appendAttributedString:[[NSMutableAttributedString alloc] initWithString:giftStr attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12 weight:UIFontWeightHeavy],NSForegroundColorAttributeName:UIColorFromRGB(0xEEFEEC)}]]; + self.titleLabel.attributedText = str; + self.iconImageView.imageUrl = giftInfo.giftUrl; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.font = [UIFont systemFontOfSize:12]; + _titleLabel.textColor = UIColorFromRGB(0xEEFEEC); + } + return _titleLabel; +} + +- (UILabel *)descLabel { + if (!_descLabel) { + _descLabel = [[UILabel alloc] init]; + _descLabel.textAlignment = NSTextAlignmentCenter; + _descLabel.font = [UIFont systemFontOfSize:12]; + _descLabel.textColor = UIColorFromRGB(0xEEFEEC); + _descLabel.text = @"已放入背包,尽快使用吧~"; + } + return _descLabel; +} + +- (NetImageView *)iconImageView { + if (!_iconImageView) { + _iconImageView = [[NetImageView alloc] init]; + _iconImageView.layer.cornerRadius = 12; + _iconImageView.layer.masksToBounds = YES; + } + return _iconImageView; +} + +- (UIImageView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[UIImageView alloc] init]; + _bgImageView.image = [UIImage imageNamed:@"room_newUser_gift_bg"]; + } + return _bgImageView; +} + +- (UIButton *)closeButton { + if (!_closeButton) { + _closeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_closeButton setImage:[UIImage imageNamed:@"anchorPk_result_close"] forState:UIControlStateNormal]; + [_closeButton addTarget:self action:@selector(closeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _closeButton; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/NewUserGift/YUMIStrangeConsumerChamberPresentRegard.h b/YuMi/Modules/YMRoom/View/NewUserGift/YUMIStrangeConsumerChamberPresentRegard.h deleted file mode 100644 index 14d1c23a..00000000 --- a/YuMi/Modules/YMRoom/View/NewUserGift/YUMIStrangeConsumerChamberPresentRegard.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMNewUserRoomGiftView.h -// YUMI -// -// Created by YUMI on 2022/7/26. -// - -#import -#import "PresentAbstractMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIStrangeConsumerChamberPresentRegard : UIView - -@property (nonatomic, strong) PresentAbstractMatrix *giftInfo; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/NewUserGift/YUMIStrangeConsumerChamberPresentRegard.m b/YuMi/Modules/YMRoom/View/NewUserGift/YUMIStrangeConsumerChamberPresentRegard.m deleted file mode 100644 index cdd36ace..00000000 --- a/YuMi/Modules/YMRoom/View/NewUserGift/YUMIStrangeConsumerChamberPresentRegard.m +++ /dev/null @@ -1,147 +0,0 @@ -// -// YMNewUserRoomGiftView.m -// YUMI -// -// Created by YUMI on 2022/7/26. -// - -#import "YUMIStrangeConsumerChamberPresentRegard.h" -#import -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "MKJPopup.h" -#import "YUMIMacroUitls.h" -#import "StatsticsticsServingFacilitater.h" - -@interface YUMIStrangeConsumerChamberPresentRegard () - -@property (nonatomic, strong) UIImageView *backgroundIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic, strong) NetIndicateRegard *figureIndicateRegard; -@property (nonatomic, strong) UILabel *sequenceSequencignation; -@property (nonatomic,strong) UIButton *concludeBtuton; - -@end - - -@implementation YUMIStrangeConsumerChamberPresentRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.layer.masksToBounds = YES; - self.layer.cornerRadius = 15; - self.backgroundColor = [UIColor clearColor]; - [self addSubview:self.backgroundIndicateRegard]; - [self addSubview:self.titleLabel]; - [self addSubview:self.figureIndicateRegard]; - [self addSubview:self.sequenceSequencignation]; - [self addSubview:self.concludeBtuton]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(260); - make.height.mas_equalTo(376); - }]; - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.left.right.mas_equalTo(0); - make.height.mas_equalTo(320); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(130); - make.left.right.mas_equalTo(self).inset(15); - make.height.mas_equalTo(17); - }]; - - [self.figureIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.width.height.mas_equalTo(100); - make.top.mas_equalTo(self.titleLabel.mas_bottom).mas_offset(13); - }]; - - [self.sequenceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.figureIndicateRegard.mas_bottom).mas_offset(19); - make.height.mas_equalTo(17); - make.left.right.mas_equalTo(self).inset(15); - }]; - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(32, 32)); - make.top.mas_equalTo(self.backgroundIndicateRegard.mas_bottom).offset(24); - make.centerX.mas_equalTo(self); - }]; -} - -#pragma mark - Event Response -- (void)concludeBtutonPerformance:(UIButton *)sender { - [MKJPopup dismiss]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventRoomNugivePopClick]; -} - -#pragma mark - Getters And Setters -- (void)setGiftInfo:(PresentAbstractMatrix *)giftInfo { - NSString *giftStr = [NSString stringWithFormat:@"%@*%zd", giftInfo.giftName, giftInfo.count]; - NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:@"获得新人礼物 " attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12],NSForegroundColorAttributeName:UIColorFromRGB(0xEEFEEC)}]; - [str appendAttributedString:[[NSMutableAttributedString alloc] initWithString:giftStr attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12 weight:UIFontWeightHeavy],NSForegroundColorAttributeName:UIColorFromRGB(0xEEFEEC)}]]; - self.titleLabel.attributedText = str; - self.figureIndicateRegard.imageUrl = giftInfo.giftUrl; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.font = [UIFont systemFontOfSize:12]; - _titleLabel.textColor = UIColorFromRGB(0xEEFEEC); - } - return _titleLabel; -} - -- (UILabel *)sequenceSequencignation { - if (!_sequenceSequencignation) { - _sequenceSequencignation = [[UILabel alloc] init]; - _sequenceSequencignation.textAlignment = NSTextAlignmentCenter; - _sequenceSequencignation.font = [UIFont systemFontOfSize:12]; - _sequenceSequencignation.textColor = UIColorFromRGB(0xEEFEEC); - _sequenceSequencignation.text = @"已放入背包,尽快使用吧~"; - } - return _sequenceSequencignation; -} - -- (NetIndicateRegard *)figureIndicateRegard { - if (!_figureIndicateRegard) { - _figureIndicateRegard = [[NetIndicateRegard alloc] init]; - _figureIndicateRegard.layer.cornerRadius = 12; - _figureIndicateRegard.layer.masksToBounds = YES; - } - return _figureIndicateRegard; -} - -- (UIImageView *)backgroundIndicateRegard { - if (!_backgroundIndicateRegard) { - _backgroundIndicateRegard = [[UIImageView alloc] init]; - _backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_newUser_present_background"]; - } - return _backgroundIndicateRegard; -} - -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_anchorPk_result_close"] forState:UIControlStateNormal]; - [_concludeBtuton addTarget:self action:@selector(concludeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _concludeBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/NewUserGreet/XPRoomNewUserGreetView.h b/YuMi/Modules/YMRoom/View/NewUserGreet/XPRoomNewUserGreetView.h new file mode 100644 index 00000000..dca15fa4 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/NewUserGreet/XPRoomNewUserGreetView.h @@ -0,0 +1,24 @@ +// +// YMRoomNewUserGreetView.h +// YUMI +// +// Created by YUMI on 2022/6/6. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPRoomNewUserGreetView; +@protocol XPRoomNewUserGreetViewDelegate +///点击查看 +- (void)xPRoomNewUserGreetView:(XPRoomNewUserGreetView *)view didClickCheckout:(UIButton *)sender; + +@end + +@interface XPRoomNewUserGreetView : UIView +@property (nonatomic,strong) NSArray *sayHelloUserAvatarList; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/NewUserGreet/XPRoomNewUserGreetView.m b/YuMi/Modules/YMRoom/View/NewUserGreet/XPRoomNewUserGreetView.m new file mode 100644 index 00000000..683d6c5a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/NewUserGreet/XPRoomNewUserGreetView.m @@ -0,0 +1,196 @@ +// +// YMRoomNewUserGreetView.m +// YUMI +// +// Created by YUMI on 2022/6/6. +// + +#import "XPRoomNewUserGreetView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" + +@interface XPRoomNewUserGreetView () +///背景 +@property (nonatomic,strong) UIImageView *backImageView; +///内容 +@property (nonatomic,strong) UIView * contentView; +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///点击查看 +@property (nonatomic,strong) UIButton *checkButton; +///关闭 +@property (nonatomic,strong) UIButton *closeButton; +@property (nonatomic,strong) NSArray *avatarViewList; +@end + +@implementation XPRoomNewUserGreetView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backImageView]; + [self.backImageView addSubview:self.contentView]; + [self.backImageView addSubview:self.closeButton]; + [self.contentView addSubview:self.titleLabel]; + [self.contentView addSubview:self.checkButton]; +} + +- (void)initSubViewConstraints { + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(345, 80)); + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.centerY.mas_equalTo(self.backImageView); + make.height.mas_equalTo(55); + make.left.mas_equalTo(self.titleLabel.mas_left).offset(-12); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.contentView); + make.bottom.mas_equalTo(self.contentView.mas_centerY).offset(-3); + }]; + + [self.checkButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(80, 20)); + make.top.mas_equalTo(self.contentView.mas_centerY).offset(3); + make.centerX.mas_equalTo(self.titleLabel); + }]; + + [self.closeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(22, 22)); + make.top.right.mas_equalTo(self.backImageView); + }]; +} + +#pragma mark - Event Response +- (void)closeButtonAction:(UIButton *)sender { + [UIView animateWithDuration:.35 animations:^{ + CGRect frame = self.frame; + frame.origin.x = -KScreenWidth; + self.frame= frame; + } completion:^(BOOL finished) { + [self removeFromSuperview]; + }]; +} + +- (void)checkButtonAction:(UIButton *)sender { + [UIView animateWithDuration:.35 animations:^{ + CGRect frame = self.frame; + frame.origin.x = -KScreenWidth; + self.frame= frame; + } completion:^(BOOL finished) { + [self removeFromSuperview]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomNewUserGreetView:didClickCheckout:)]) { + [self.delegate xPRoomNewUserGreetView:self didClickCheckout:sender]; + } + }]; +} + +#pragma mark - Getters And Setters +- (void)setSayHelloUserAvatarList:(NSArray *)sayHelloUserAvatarList { + if (sayHelloUserAvatarList.count > 0) { + if (sayHelloUserAvatarList.count == 1) { + self.titleLabel.text = @"Ta向你发送了一条消息~"; + }else { + self.titleLabel.text = @"Ta们向你发送了多条消息~"; + } + [self.titleLabel sizeToFit]; + } + + for (int i = 0; i < sayHelloUserAvatarList.count; i++) { + NSString * avatar = [sayHelloUserAvatarList safeObjectAtIndex1:i]; + NetImageView * avatarImageView = [[NetImageView alloc] init]; + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + avatarImageView = [[NetImageView alloc] initWithConfig:config]; + avatarImageView.layer.masksToBounds = YES; + avatarImageView.layer.cornerRadius = 44/2; + avatarImageView.layer.borderColor = [UIColor whiteColor].CGColor; + avatarImageView.layer.borderWidth = 1; + avatarImageView.imageUrl = avatar; + [self.contentView addSubview:avatarImageView]; + [self.contentView sendSubviewToBack:avatarImageView]; + [avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(44, 44)); + make.right.mas_equalTo(self.titleLabel.mas_left).offset(-12 - 44 * i + 12 * i); + make.centerY.mas_equalTo(self.contentView); + }]; + + if (i == (sayHelloUserAvatarList.count -1)) { + [self.contentView mas_updateConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.titleLabel.mas_left).offset(-12 - 44 * (i + 1) + 12 * (i + 1)); + }]; + } + } +} + +- (UIView *)contentView { + if (!_contentView) { + _contentView = [[UIView alloc] init]; + _contentView.backgroundColor = [UIColor clearColor]; + } + return _contentView; +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.image = [UIImage imageNamed:@"room_new_user_greet_bg"]; + } + return _backImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightMedium]; + _titleLabel.textColor = [UIColor whiteColor]; + _titleLabel.text = @"Ta向你发送了多条消息~"; + } + return _titleLabel; +} + +- (UIButton *)checkButton { + if (!_checkButton) { + _checkButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_checkButton setTitle:YMLocalizedString(@"XPRoomNewUserGreetView3") forState:UIControlStateNormal]; + [_checkButton setTitleColor:UIColorFromRGB(0x333333) forState:UIControlStateNormal]; + _checkButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_checkButton setBackgroundColor:[UIColor whiteColor]]; + _checkButton.layer.masksToBounds = YES; + _checkButton.layer.cornerRadius = 6; + [_checkButton addTarget:self action:@selector(checkButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _checkButton; +} + + +- (UIButton *)closeButton { + if (!_closeButton) { + _closeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_closeButton setImage:[UIImage imageNamed:@"room_setting_tag_close"] forState:UIControlStateNormal]; + [_closeButton setImage:[UIImage imageNamed:@"room_setting_tag_close"] forState:UIControlStateSelected]; + [_closeButton addTarget:self action:@selector(closeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _closeButton; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/NewUserGreet/YUMIChamberStrangeConsumerBewelcometoRegard.h b/YuMi/Modules/YMRoom/View/NewUserGreet/YUMIChamberStrangeConsumerBewelcometoRegard.h deleted file mode 100644 index 0ff1cf68..00000000 --- a/YuMi/Modules/YMRoom/View/NewUserGreet/YUMIChamberStrangeConsumerBewelcometoRegard.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMRoomNewUserGreetView.h -// YUMI -// -// Created by YUMI on 2022/6/6. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIChamberStrangeConsumerBewelcometoRegard; -@protocol FBCChamberStrangeConsumerGreetRegardRepresendtation -- (void)yUMIChamberStrangeConsumerBewelcometoRegard:(YUMIChamberStrangeConsumerBewelcometoRegard *)view didClickCheckout:(UIButton *)sender; - -@end - -@interface YUMIChamberStrangeConsumerBewelcometoRegard : UIView -@property (nonatomic,strong) NSArray *sayHelloUserAvatarList; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/NewUserGreet/YUMIChamberStrangeConsumerBewelcometoRegard.m b/YuMi/Modules/YMRoom/View/NewUserGreet/YUMIChamberStrangeConsumerBewelcometoRegard.m deleted file mode 100644 index 16ed5ec0..00000000 --- a/YuMi/Modules/YMRoom/View/NewUserGreet/YUMIChamberStrangeConsumerBewelcometoRegard.m +++ /dev/null @@ -1,189 +0,0 @@ -// -// YMRoomNewUserGreetView.m -// YUMI -// -// Created by YUMI on 2022/6/6. -// - -#import "YUMIChamberStrangeConsumerBewelcometoRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" - -@interface YUMIChamberStrangeConsumerBewelcometoRegard () -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) UIView * contentView; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UIButton *examineBtuton; -@property (nonatomic,strong) UIButton *concludeBtuton; -@property (nonatomic,strong) NSArray *intelligenceportraitRegardStatement; -@end - -@implementation YUMIChamberStrangeConsumerBewelcometoRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.encourageIndicateRegard]; - [self.encourageIndicateRegard addSubview:self.contentView]; - [self.encourageIndicateRegard addSubview:self.concludeBtuton]; - [self.contentView addSubview:self.titleLabel]; - [self.contentView addSubview:self.examineBtuton]; -} - -- (void)initChildLyRestrictions { - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(345, 80)); - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.centerY.mas_equalTo(self.encourageIndicateRegard); - make.height.mas_equalTo(55); - make.left.mas_equalTo(self.titleLabel.mas_left).offset(-12); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.contentView); - make.bottom.mas_equalTo(self.contentView.mas_centerY).offset(-3); - }]; - - [self.examineBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(80, 20)); - make.top.mas_equalTo(self.contentView.mas_centerY).offset(3); - make.centerX.mas_equalTo(self.titleLabel); - }]; - - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(22, 22)); - make.top.right.mas_equalTo(self.encourageIndicateRegard); - }]; -} - -#pragma mark - Event Response -- (void)concludeBtutonPerformance:(UIButton *)sender { - [UIView animateWithDuration:.35 animations:^{ - CGRect frame = self.frame; - frame.origin.x = -KScreenWidth; - self.frame= frame; - } completion:^(BOOL finished) { - [self removeFromSuperview]; - }]; -} - -- (void)examineBtutonPerformance:(UIButton *)sender { - [UIView animateWithDuration:.35 animations:^{ - CGRect frame = self.frame; - frame.origin.x = -KScreenWidth; - self.frame= frame; - } completion:^(BOOL finished) { - [self removeFromSuperview]; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberStrangeConsumerBewelcometoRegard:didClickCheckout:)]) { - [self.delegate yUMIChamberStrangeConsumerBewelcometoRegard:self didClickCheckout:sender]; - } - }]; -} - -#pragma mark - Getters And Setters -- (void)setSayHelloUserAvatarList:(NSArray *)sayHelloUserAvatarList { - if (sayHelloUserAvatarList.count > 0) { - if (sayHelloUserAvatarList.count == 1) { - self.titleLabel.text = @"Ta向你发送了一条消息~"; - }else { - self.titleLabel.text = @"Ta们向你发送了多条消息~"; - } - [self.titleLabel sizeToFit]; - } - - for (int i = 0; i < sayHelloUserAvatarList.count; i++) { - NSString * avatar = [sayHelloUserAvatarList secureGroalTowardsIndictowardsrix1:i]; - NetIndicateRegard * intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] init]; - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - intelligenceportraitIndicateRegard.layer.cornerRadius = 44/2; - intelligenceportraitIndicateRegard.layer.borderColor = [UIColor whiteColor].CGColor; - intelligenceportraitIndicateRegard.layer.borderWidth = 1; - intelligenceportraitIndicateRegard.imageUrl = avatar; - [self.contentView addSubview:intelligenceportraitIndicateRegard]; - [self.contentView sendSubviewToBack:intelligenceportraitIndicateRegard]; - [intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(44, 44)); - make.right.mas_equalTo(self.titleLabel.mas_left).offset(-12 - 44 * i + 12 * i); - make.centerY.mas_equalTo(self.contentView); - }]; - - if (i == (sayHelloUserAvatarList.count -1)) { - [self.contentView mas_updateConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.titleLabel.mas_left).offset(-12 - 44 * (i + 1) + 12 * (i + 1)); - }]; - } - } -} - -- (UIView *)contentView { - if (!_contentView) { - _contentView = [[UIView alloc] init]; - _contentView.backgroundColor = [UIColor clearColor]; - } - return _contentView; -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_new_user_greet_background"]; - } - return _encourageIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightMedium]; - _titleLabel.textColor = [UIColor whiteColor]; - _titleLabel.text = @"Ta向你发送了多条消息~"; - } - return _titleLabel; -} - -- (UIButton *)examineBtuton { - if (!_examineBtuton) { - _examineBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_examineBtuton setTitle:YMLocalizedString(@"YUMI_Room_New_User_Greet_View_3") forState:UIControlStateNormal]; - [_examineBtuton setTitleColor:UIColorFromRGB(0x333333) forState:UIControlStateNormal]; - _examineBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_examineBtuton setBackgroundColor:[UIColor whiteColor]]; - _examineBtuton.layer.masksToBounds = YES; - _examineBtuton.layer.cornerRadius = 6; - [_examineBtuton addTarget:self action:@selector(examineBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _examineBtuton; -} - - -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_scope_setting_labelclose"] forState:UIControlStateNormal]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_scope_setting_labelclose"] forState:UIControlStateSelected]; - [_concludeBtuton addTarget:self action:@selector(concludeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _concludeBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/EngagementPhaseRegard.h b/YuMi/Modules/YMRoom/View/PhaseRegard/EngagementPhaseRegard.h deleted file mode 100644 index 528c94a3..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/EngagementPhaseRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// EngagementPhaseRegard.h -// YUMI -// -// Created by YUMI on 2022/1/4. -// - -#import "PhaseRegard.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface EngagementPhaseRegard : PhaseRegard - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/EngagementPhaseRegard.m b/YuMi/Modules/YMRoom/View/PhaseRegard/EngagementPhaseRegard.m deleted file mode 100644 index c5aa789b..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/EngagementPhaseRegard.m +++ /dev/null @@ -1,264 +0,0 @@ -// -// EngagementPhaseRegard.m -// YUMI -// -// Created by YUMI on 2022/1/4. -// - -#import "EngagementPhaseRegard.h" -#import -#import -#import "AccountAbstractStorage.h" -#import "YUMIMacroUitls.h" -#import "MKJPopup.h" -#import "XNDJTBWGLoadingTool.h" -#import "Api.h" -#import "ChamberAbstractMatrix.h" -#import "MiecreoscoopeExtMatrix.h" -#import "EngagementMiecreoscoopeRegard.h" -#import "MiecreoscoopeEngagementProgressRegard.h" -#import "YUMIChamberEngagementVipUpwardsLoudspeakerRegard.h" - -#define ownerTopMargin 35 -#define ownerWidth (45 + 5) * kScreenScale -#define ownerHeight (ownerWidth + 10 + 12) -#define mcWidth (45 + 5) * kScreenScale -#define mcHeight (mcWidth + 10 + 12 + 5+16) -#define paddingH 12 * kScreenScale -#define marginV1 38 -#define datingWidth 100 * kScreenScale -#define marginH (KScreenWidth - paddingH * 2 - mcWidth * 4 - datingWidth) / 2 -#define firstRowTop (ownerHeight + marginV1 + ownerTopMargin) -#define marginV2 17 * kScreenScale -#define secondRowTop (firstRowTop + mcHeight + marginV2) -#define marginV3 15 - -@interface EngagementPhaseRegard() -@property (nonatomic,strong) MiecreoscoopeEngagementProgressRegard *engagementGrowthRegard; - -@end - -@implementation EngagementPhaseRegard - -- (instancetype)initWithDelegate:(id)delegate { - if (self = [super initWithDelegate:delegate]) { - [self addSubview:self.engagementGrowthRegard]; - [self.engagementGrowthRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(datingWidth); - make.bottom.mas_equalTo(self); - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(firstRowTop); - }]; - } - return self; -} - -- (NSInteger)computtowardsionHLOfMircoRegard { - return 10; -} - -- (UIView *)prohibiticoveryMiecreoscoopeRegardByIndictowardsrix:(NSInteger)index { - UIView * microView = [super prohibiticoveryMiecreoscoopeRegardByIndictowardsrix:index]; - if (microView) { - if ([self loudspeakerGuruIsOnOrdinaryPolariztowardsion] && index == 9) { - microView.hidden = YES; - } else { - microView.hidden = NO; - } - return microView; - } - return microView; -} - -- (UIView *)miecreoscoopeRegardInthecaseofIndictowardsrix:(NSInteger)index { - UIView * microView = [super miecreoscoopeRegardInthecaseofIndictowardsrix:index]; - if (microView) { - return microView; - } - return [[EngagementMiecreoscoopeRegard alloc]init]; -} - - -- (CGRect)rectInthecaseofRegardTowardsIndictowardsrix:(NSInteger)index { - - if (index == 0) { - return CGRectMake(KScreenWidth / 2 - ownerWidth / 2, ownerTopMargin, ownerWidth, ownerHeight); - } - - - if (index >= 1 && index <= 4) { - CGRect rect = CGRectMake(paddingH + mcWidth * (index - 1) + datingWidth * (index / 3) + marginH * (index / 2), firstRowTop, mcWidth, mcHeight); - return rect; - } - - if (index >= 5 && index <= 8) { - return CGRectMake(paddingH + mcWidth * (index - 4 - 1) + marginH *((index -4)/ 2) + datingWidth * (index / 7), secondRowTop, mcWidth, mcHeight); - } - - if (index == 9) { - return CGRectMake(KScreenWidth- mcWidth - 20, 45, mcWidth, mcHeight); - } - return [super rectInthecaseofRegardTowardsIndictowardsrix:index]; -} - -- (CGFloat)hightInthecaseofPhaseRegard { - return ownerTopMargin + ownerHeight + marginV1 + mcHeight + marginV2 + mcHeight + marginV3; -} - -- (CGPoint)brectifynessSpeckTowardsPhaseRegardByCid:(NSString *)uid { - NSInteger index = [self acquireIndictowardsrixByCid:uid]; - CGPoint point = CGPointZero; - if (index == 0) { - point = CGPointMake(KScreenWidth / 2, ownerWidth / 2 - 10 + ownerTopMargin); - } - - if (index >= 1 && index <= 4) { - point = CGPointMake(paddingH + mcWidth * (index - 1) + datingWidth * (index / 3) + marginH * (index / 2) + mcWidth / 2, firstRowTop + mcWidth / 2- 10); - } - - if (index >= 5 && index <= 8) { - point = CGPointMake(paddingH + mcWidth * (index - 4 - 1) + marginH *((index -4)/ 2) + datingWidth * (index / 7) + mcWidth / 2, secondRowTop + mcWidth / 2 - 10); - } - - if (index == 9) { - point = CGPointMake(KScreenWidth- mcWidth - 20 + mcWidth / 2, 45 + mcWidth / 2); - } - - point = [self convertPoint:point toView:nil]; - return point; -} - - -- (NSDictionary *)consumerAbstractToInthecaseofmtowardsionExt:(ConsumerAbstractMatrix *)userInfo { - MiecreoscoopeExtMatrix * extModel = [[MiecreoscoopeExtMatrix alloc] init]; - extModel.gender = userInfo.gender; - extModel.avatar = userInfo.avatar; - extModel.uid = userInfo.uid; - extModel.nick = userInfo.nick; - extModel.vipMic = userInfo.uid == self.hostRepresedtation.acquireChamberAbstract.blindDateVipUid; - extModel.headWearUrl = userInfo.headwearEffect.length > 0 ? userInfo.headwearEffect : userInfo.headwearPic; - extModel.micCircle = userInfo.micCircle; - extModel.micNickColor = userInfo.micNickColor; - extModel.preventKick = userInfo.userVipInfoVO.preventKick;; - extModel.enterHide = userInfo.userVipInfoVO.enterHide; - return [extModel mtowardsrix2dictionary]; -} - -- (BOOL)loudspeakerGuruIsOnOrdinaryPolariztowardsion { - __block BOOL isHidden = NO; - [self.hostRepresedtation.acquireMiecreoscoopeInthecaseofmtowardsion.allValues enumerateObjectsUsingBlock:^(MiecreoscoopeMHTueueMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.microState.position != -1 && obj.microState.position != 999 && obj.userInfo && obj.userInfo.vipMic) { - isHidden = YES; - } - }]; - return isHidden; -} - - -- (void)didChosenTowardsIndictowardsrix:(NSInteger)index { - MiecreoscoopeMHTueueMatrix* micModel = [self.hostRepresedtation.acquireMiecreoscoopeInthecaseofmtowardsion objectForKey:[self indexToPolariztowardsion:index]]; - ChamberAbstractMatrix * roomInfo = self.hostRepresedtation.acquireChamberAbstract; - ConsumerAbstractMatrix * userInfo = self.hostRepresedtation.getUserInfo; - - if (index != 9 && (!micModel.userInfo || micModel.userInfo.uid <= 0)) { - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - request.userIds = @[[AccountAbstractStorage instance].acquireCid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - NIMChatroomMember * member = members.firstObject; - if (member.type == NIMChatroomMemberTypeManager || member.type == NIMChatroomMemberTypeCreator) { - [super didChosenTowardsIndictowardsrix:index]; - } else { - if (micModel.microState.posState == MiecreoscoopePosDeclareGenre_Lock) { - if ([super acquireIndictowardsrixByCid:[AccountAbstractStorage instance].acquireCid] != -1) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"Dating_Stage_View_0")]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:@"需要排麦才可以上麦哦~"]; - } - } else { - [super didChosenTowardsIndictowardsrix:index]; - } - } - }]; - return; - } - - if (index == 9) { - if (micModel.userInfo && micModel.userInfo.uid > 0) { - [super didChosenTowardsIndictowardsrix:index]; - } else { - if (roomInfo.blindDateVipUid == [AccountAbstractStorage instance].acquireCid.integerValue) { - NSString * position = [self indexToPolariztowardsion:index]; - - NSString * muteTitle = micModel.microState.micState == MiecreoscoopeLoudspeakerDeclareGenre_Open ? @"闭麦" : YMLocalizedString(@"Dating_Stage_View_3"); - MKJActionSheetDisposition *muteMic = [MKJActionSheetDisposition normalTitle:muteTitle ticktackPerformance:^{ - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.uid]; - NSString * state = micModel.microState.micState == MiecreoscoopeLoudspeakerDeclareGenre_Open ? @"1" : @"0"; - NSString * ticket = [[AccountAbstractStorage instance] acquireTicket]; - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - [Api miecreoscoopeBretowardshaedImplementtowardsion:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - - } roomUid:roomUid state:state position:position ticket:ticket uid:uid]; - }]; - - - MKJActionSheetDisposition *upMic = [MKJActionSheetDisposition normalTitle:YMLocalizedString(@"Dating_Stage_View_4") ticktackPerformance:^{ - NIMChatroomQueueUpdateRequest *request = [[NIMChatroomQueueUpdateRequest alloc]init]; - request.key = @"999"; - request.value = [[self consumerAbstractToInthecaseofmtowardsionExt:userInfo] toJSONBWSttr]; - request.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - request.transient = YES; - [[NIMSDK sharedSDK].chatroomManager updateChatroomQueueObject:request completion:^(NSError * _Nullable error) { - - }]; - }]; - - [MKJPopup performanceSheetAboutProvisions:@[upMic, muteMic]]; - - } else { - YUMIChamberEngagementVipUpwardsLoudspeakerRegard *view = [[YUMIChamberEngagementVipUpwardsLoudspeakerRegard alloc] initWithFrame:CGRectMake(0, 0, 260, 325 + 35 + 20)]; - [MKJPopup popupRegard:view style:MKJPopupStyleAlert]; - } - } - } else { - [super didChosenTowardsIndictowardsrix:index]; - } -} - -- (NSString *)indexToPolariztowardsion:(NSInteger)index { - if (index == 9) { - return @"999"; - } - return [super indexToPolariztowardsion:index]; -} - -- (NSInteger)polariztowardsionToIndictowardsrix:(NSString *)position { - if (position.intValue == 999) { - return 9; - } - return [super polariztowardsionToIndictowardsrix:position]; -} - -- (void)onChamberRefurbish { - [super onChamberRefurbish]; - if (self.hostRepresedtation.acquireChamberAbstract.roomModeType == ChamberModeGenre_Open_Blind) { - self.engagementGrowthRegard.blindDateState = self.hostRepresedtation.acquireChamberAbstract.blindDateState; - } -} - - -- (void)onChamberImported { - [super onChamberImported]; - if (self.hostRepresedtation.acquireChamberAbstract.roomModeType == ChamberModeGenre_Open_Blind) { - self.engagementGrowthRegard.blindDateState = self.hostRepresedtation.acquireChamberAbstract.blindDateState; - } -} - -- (MiecreoscoopeEngagementProgressRegard *)engagementGrowthRegard { - if (!_engagementGrowthRegard) { - _engagementGrowthRegard = [[MiecreoscoopeEngagementProgressRegard alloc] init]; - } - return _engagementGrowthRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/KellegCombatPhaseRegard.h b/YuMi/Modules/YMRoom/View/PhaseRegard/KellegCombatPhaseRegard.h deleted file mode 100644 index f57e2482..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/KellegCombatPhaseRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// KellegCombatPhaseRegard.h -// YUMI -// -// Created by YUMI on 2022/4/11. -// - -#import "PhaseRegard.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface KellegCombatPhaseRegard : PhaseRegard - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/KellegCombatPhaseRegard.m b/YuMi/Modules/YMRoom/View/PhaseRegard/KellegCombatPhaseRegard.m deleted file mode 100644 index 053cbf63..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/KellegCombatPhaseRegard.m +++ /dev/null @@ -1,301 +0,0 @@ -// -// KellegCombatPhaseRegard.m -// YUMI -// -// Created by YUMI on 2022/4/11. -// - -#import "KellegCombatPhaseRegard.h" -#import -#import -#import -#import "AccountAbstractStorage.h" -#import "YUMIMacroUitls.h" -#import "MKJPopup.h" -#import "XNDJTBWGLoadingTool.h" -#import "Api.h" -#import "NetIndicateRegard.h" -#import "Api+Room.h" -#import "RealtimackExecutive.h" -#import "ChamberAbstractMatrix.h" -#import "MiecreoscoopeExtMatrix.h" -#import "YUMIConsumerSolitaireAbstractMatrix.h" -#import "KellegCombatMiecreoscoopeRegard.h" -#import "YUMIConsumerSolitaireRegardGovernancer.h" -#import "XCombatellegRandomCombatPreadominantRegard.h" - -#define ownerWidth (85 + 5) -#define ownerHeight (ownerWidth + 6 + 12) -#define mcWidth (50 + 5) * kScreenScale -#define mcHeight (mcWidth + 6 + 12) -#define paddingH 12 * kScreenScale -#define marginV1 33 -#define marginH (KScreenWidth - paddingH * 2 - mcWidth * 4 - datingWidth) / 2 -#define marginV2 27 * kScreenScale -#define secondRowTop (firstRowTop + mcHeight + marginV2) -#define marginV3 15 - -#define topMargin 87 - -@interface KellegCombatPhaseRegard() - -@property (nonatomic, strong) UIButton *preadominantBtuton; - -@property (strong, nonatomic) SVGAParser *anatomiser; -@property (nonatomic, strong) SVGAImageView *svgExhibitionRegard; - -@end - -@implementation KellegCombatPhaseRegard - -- (instancetype)initWithDelegate:(id)delegate { - if (self = [super initWithDelegate:delegate]) { - [self addSubview:self.svgExhibitionRegard]; - [self addSubview:self.preadominantBtuton]; - [self.svgExhibitionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(64); - make.height.mas_equalTo(74); - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(82); - }]; - [self.preadominantBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(46); - make.height.mas_equalTo(18); - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self.svgExhibitionRegard.mas_bottom).mas_offset(7); - }]; - - NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/anchorPK_vs.svga", API_Image_URL]; - [self.anatomiser parseWithURL:[NSURL URLWithString:anatomiser1Name] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { - self.svgExhibitionRegard.loops = INT_MAX; - self.svgExhibitionRegard.clearsAfterStop = NO; - self.svgExhibitionRegard.videoItem = videoItem; - [self.svgExhibitionRegard startAnimation]; - } failureBlock:^(NSError * _Nonnull error) { - }]; - } - return self; -} - -- (NSInteger)computtowardsionHLOfMircoRegard { - return 2; -} - -- (UIView *)prohibiticoveryMiecreoscoopeRegardByIndictowardsrix:(NSInteger)index { - UIView * microView = [super prohibiticoveryMiecreoscoopeRegardByIndictowardsrix:index]; - return microView; -} - -- (UIView *)miecreoscoopeRegardInthecaseofIndictowardsrix:(NSInteger)index { - UIView * microView = [super miecreoscoopeRegardInthecaseofIndictowardsrix:index]; - if (microView) { - return microView; - } - return [[KellegCombatMiecreoscoopeRegard alloc]init]; -} - - -- (CGRect)rectInthecaseofRegardTowardsIndictowardsrix:(NSInteger)index { - if (index == 0) { - return CGRectMake((KScreenWidth - 64) * 0.5 - 26 - ownerWidth+2.5, topMargin, ownerWidth, ownerHeight); - } else { - return CGRectMake((KScreenWidth + 64) * 0.5 + 26 - 2.5, topMargin, ownerWidth, ownerHeight); - } - return [super rectInthecaseofRegardTowardsIndictowardsrix:index]; -} - -- (CGFloat)hightInthecaseofPhaseRegard { - return 330; -} - -- (CGPoint)brectifynessSpeckTowardsPhaseRegardByCid:(NSString *)uid { - NSInteger index = [self acquireIndictowardsrixByCid:uid]; - CGPoint point = CGPointZero; - if (index == 0) { - point = CGPointMake(KScreenWidth / 2 - 32 - 26 - ownerWidth * 0.5, topMargin + ownerWidth / 2 - 10); - } - - point = [self convertPoint:point toView:nil]; - return point; -} - -- (void)onChamberImported { - [super onChamberImported]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [self autoupburdenLoudspeakerTowardsIndictowardsrix:-1]; - }); -} - -- (void)shankNEMCCircularCommunictowardsion:(NIMMessage *)message { - [super shankNEMCCircularCommunictowardsion:message]; - - NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; - NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; - switch (content.eventType) { - case NIMChatroomEventTypeQueueChange: - { - NSDictionary* data = (NSDictionary *)content.ext; - ConsumerAbstractMatrix* userInfo = [ConsumerAbstractMatrix mtowardsrixAboutJSON:[data objectForKey:NIMChatroomEventInfoQueueChangeItemValueKey]]; - NSInteger changeType = [data[NIMChatroomEventInfoQueueChangeTypeKey] integerValue]; - - if (changeType == 1) { - if (userInfo.uid == [AccountAbstractStorage instance].acquireCid.integerValue) { - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - if (self.hostRepresedtation.acquireChamberAbstract.pkRoomId && self.hostRepresedtation.acquireChamberAbstract.pkUid) { - [[RealtimackExecutive instance] connectOtherRoom:self.hostRepresedtation.acquireChamberAbstract.pkRoomId userId:self.hostRepresedtation.acquireChamberAbstract.pkUid]; - } else { - [Api acquireThroughoutChamberCombatSpecific:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - ThroughoutChamberCombatFasciaboardMatrix * acrossPKPanelInfo = [ThroughoutChamberCombatFasciaboardMatrix mtowardsrixAboutJSON:data.data]; - if (acrossPKPanelInfo.pkType == ThroughoutChamberPkGenreAnchor) { - self.hostRepresedtation.acquireChamberAbstract.roundId = acrossPKPanelInfo.roundId; - self.hostRepresedtation.acquireChamberAbstract.pkUid = acrossPKPanelInfo.aUid; - self.hostRepresedtation.acquireChamberAbstract.pkRoomId = acrossPKPanelInfo.aRoomId; - self.hostRepresedtation.acquireChamberAbstract.pkState = acrossPKPanelInfo.pkState; - self.hostRepresedtation.acquireChamberAbstract.winUid = acrossPKPanelInfo.winUid; - if (acrossPKPanelInfo.aRoomId && acrossPKPanelInfo.aUid) { - [[RealtimackExecutive instance] connectOtherRoom:acrossPKPanelInfo.aRoomId userId:acrossPKPanelInfo.aUid]; - } - } else { - } - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } roomUid:[AccountAbstractStorage instance].acquireCid]; - } - }); - } - } - } - break; - default: - break; - } -} - -- (void)autoupburdenLoudspeakerTowardsIndictowardsrix:(NSInteger)index { - NIMChatroomQueueUpdateRequest *request = [[NIMChatroomQueueUpdateRequest alloc]init]; - request.key = [NSString stringWithFormat:@"%zd", index]; - ConsumerAbstractMatrix* userInfo = self.hostRepresedtation.getUserInfo; - ChamberAbstractMatrix* roomInfo = self.hostRepresedtation.acquireChamberAbstract; - if (roomInfo.uid != [[AccountAbstractStorage instance].acquireCid integerValue]) { - return; - } - NSString* roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - request.value = [[self consumerAbstractToInthecaseofmtowardsionExt:userInfo] toJSONBWSttr]; - request.roomId = roomId; - request.transient = YES; - [[NIMSDK sharedSDK].chatroomManager updateChatroomQueueObject:request completion:^(NSError * _Nullable error) { - }]; -} - -- (NSDictionary *)consumerAbstractToInthecaseofmtowardsionExt:(ConsumerAbstractMatrix *)userInfo { - MiecreoscoopeExtMatrix * extModel = [[MiecreoscoopeExtMatrix alloc] init]; - extModel.gender = userInfo.gender; - extModel.avatar = userInfo.avatar; - extModel.uid = userInfo.uid; - extModel.nick = userInfo.nick; - extModel.vipMic = userInfo.uid == self.hostRepresedtation.acquireChamberAbstract.blindDateVipUid; - extModel.headWearUrl = userInfo.headwearEffect.length > 0 ? userInfo.headwearEffect : userInfo.headwearPic; - extModel.micCircle = userInfo.micCircle; - extModel.micNickColor = userInfo.micNickColor; - extModel.enterHide = userInfo.userVipInfoVO.enterHide; - return [extModel mtowardsrix2dictionary]; -} - - -- (void)didChosenTowardsIndictowardsrix:(NSInteger)index { - MiecreoscoopeMHTueueMatrix* micModel = [self.acquireMiecreoscoopeInthecaseofmtowardsion objectForKey:[self indexToPolariztowardsion:index]]; - ConsumerAbstractMatrix* userInfo = self.hostRepresedtation.getUserInfo; - ChamberAbstractMatrix* roomInfo = self.hostRepresedtation.acquireChamberAbstract; - NSString* position = [self indexToPolariztowardsion:index]; - NSString* uid = [NSString stringWithFormat:@"%ld", userInfo.uid]; - NSString* roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - - - NSString * targetUid; - if (roomInfo.leaveMode && [position isEqualToString:@"-1"]) { - targetUid = [NSString stringWithFormat:@"%ld", roomInfo.uid]; - } - if (micModel.userInfo && micModel.userInfo.uid > 0) { - targetUid = [NSString stringWithFormat:@"%ld", micModel.userInfo.uid]; - } - - if (targetUid && targetUid.length > 0) { - YUMIConsumerSolitaireAbstractMatrix * model = [[YUMIConsumerSolitaireAbstractMatrix alloc] init]; - model.uid = targetUid; - model.position = position; - model.posState = micModel.microState.posState; - model.micState = micModel.microState.micState; - model.nick = userInfo.nick; - model.roomInfo = roomInfo; - model.micQueue = self.acquireMiecreoscoopeInthecaseofmtowardsion; - model.delegate = self.hostRepresedtation; - model.superMangerList = self.hostRepresedtation.acquireChamberSenstowardsionalManagementSttowardsement; - YUMIConsumerSolitaireRegardGovernancer * userCardVC = [[YUMIConsumerSolitaireRegardGovernancer alloc] initWithUser:model]; - [self.hostRepresedtation.acquireUniversalNev presentViewController:userCardVC animated:YES completion:nil]; - return; - } -} - -- (NSString *)indexToPolariztowardsion:(NSInteger)index { - if (index == 9) { - return @"999"; - } - return [super indexToPolariztowardsion:index]; -} - -- (NSInteger)polariztowardsionToIndictowardsrix:(NSString *)position { - if (position.intValue == 999) { - return 9; - } - return [super polariztowardsionToIndictowardsrix:position]; -} - -#pragma mark - event -- (void)onPreadominantBtutonTicktack:(UIButton *)button { - [Api requisitionKellegCombatePreadominant:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - XCombatellegRandomCombatPreadominantRegard *view = [[XCombatellegRandomCombatPreadominantRegard alloc] init]; - view.preadominantBWSttr = data.data; - [MKJPopup popupRegard:view style:MKJPopupStyleAlert]; - } - }]; -} - -#pragma mark - RtcRepresendtation - 讲话的波纹回调 -- (void)consumersSpeaking:(NSMutableArray *)uids { - return; -} - -#pragma mark - getter -- (UIButton *)preadominantBtuton { - if (!_preadominantBtuton) { - _preadominantBtuton = [[UIButton alloc] init]; - [_preadominantBtuton setTitle:YMLocalizedString(@"AnchorPKStage_View_0") forState:UIControlStateNormal]; - [_preadominantBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _preadominantBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_preadominantBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_anchorPk_panel_ruleBg"] forState:UIControlStateNormal]; - [_preadominantBtuton addTarget:self action:@selector(onPreadominantBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - } - return _preadominantBtuton; -} - -- (SVGAImageView *)svgExhibitionRegard { - if (_svgExhibitionRegard == nil) { - _svgExhibitionRegard = [[SVGAImageView alloc]init]; - _svgExhibitionRegard.contentMode = UIViewContentModeScaleToFill; - _svgExhibitionRegard.userInteractionEnabled = NO; - _svgExhibitionRegard.backgroundColor = [UIColor clearColor]; - } - return _svgExhibitionRegard; -} - -- (SVGAParser *)anatomiser { - if (!_anatomiser) { - _anatomiser = [[SVGAParser alloc]init]; - } - return _anatomiser; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/KellegPhaseRegard.h b/YuMi/Modules/YMRoom/View/PhaseRegard/KellegPhaseRegard.h deleted file mode 100644 index ebf09ae7..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/KellegPhaseRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// KellegPhaseRegard.h -// YUMI -// -// Created by YUMI on 2022/2/14. -// - -#import "PhaseRegard.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface KellegPhaseRegard : PhaseRegard - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/KellegPhaseRegard.m b/YuMi/Modules/YMRoom/View/PhaseRegard/KellegPhaseRegard.m deleted file mode 100644 index 40ebfa94..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/KellegPhaseRegard.m +++ /dev/null @@ -1,221 +0,0 @@ -// -// KellegPhaseRegard.m -// YUMI -// -// Created by YUMI on 2022/2/14. -// - -#import "KellegPhaseRegard.h" -#import -#import -#import "AccountAbstractStorage.h" -#import "XNDJTBWGLoadingTool.h" -#import "YUMIMacroUitls.h" -#import "MKJPopup.h" -#import "Api+Room.h" -#import "ChamberAbstractMatrix.h" -#import "MiecreoscoopeExtMatrix.h" -#import "YUMIConsumerSolitaireAbstractMatrix.h" -#import "AttachmentMatrix.h" -#import "KellegMiecreoscoopeRegard.h" -#import "YUMIConsumerSolitaireRegardGovernancer.h" -#import "YUMIChamberCallforConsumerRegardGovernancer.h" - -#define ownerWidth (120 + 5) -#define ownerHeight (ownerWidth + 6 + 20) -#define topMargin 60 -#define mcWidth (40 + 5) -#define mcHeight (mcWidth + 6 + 12) -#define paddingH 35 -#define marginW 50 - -@implementation KellegPhaseRegard - -- (NSInteger)computtowardsionHLOfMircoRegard { - return 4; -} - -- (UIView *)miecreoscoopeRegardInthecaseofIndictowardsrix:(NSInteger)index { - UIView * microView = [super miecreoscoopeRegardInthecaseofIndictowardsrix:index]; - if (microView) { - return microView; - } - return [[KellegMiecreoscoopeRegard alloc]init]; -} - - -- (CGRect)rectInthecaseofRegardTowardsIndictowardsrix:(NSInteger)index { - if (index == 0) { - return CGRectMake((KScreenWidth - ownerWidth) * 0.5, topMargin, ownerWidth, ownerHeight); - } - if (index >= 1 && index <= 3) { - return CGRectMake((KScreenWidth - mcWidth) * 0.5 - marginW - mcWidth + (marginW+mcWidth) * (index-1), topMargin+ownerHeight + paddingH, mcWidth, mcHeight); - } - - return [super rectInthecaseofRegardTowardsIndictowardsrix:index]; -} - -- (CGFloat)hightInthecaseofPhaseRegard { - return topMargin + ownerHeight + paddingH + mcHeight + 10; -} - -- (CGPoint)brectifynessSpeckTowardsPhaseRegardByCid:(NSString *)uid { - NSInteger index = [self acquireIndictowardsrixByCid:uid]; - CGPoint point = CGPointZero; - if (index == 0) { - point = CGPointMake(KScreenWidth / 2, topMargin + ownerWidth / 2 - 10); - } - - if (index >= 1 && index <= 3) { - point = CGPointMake((KScreenWidth - mcWidth) * 0.5 - (marginW+mcWidth*1.5) + (marginW+mcWidth*1.5) * (index-1) + mcWidth * 0.5, topMargin+ownerHeight + paddingH + mcWidth * 0.5 - 10); - } - - point = [self convertPoint:point toView:nil]; - return point; -} - -- (void)onChamberImported { - [super onChamberImported]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [self autoupburdenLoudspeakerTowardsIndictowardsrix:-1]; - }); -} - -- (void)autoupburdenLoudspeakerTowardsIndictowardsrix:(NSInteger)index { - NIMChatroomQueueUpdateRequest *request = [[NIMChatroomQueueUpdateRequest alloc]init]; - request.key = [NSString stringWithFormat:@"%zd", index]; - ConsumerAbstractMatrix* userInfo = self.hostRepresedtation.getUserInfo; - ChamberAbstractMatrix* roomInfo = self.hostRepresedtation.acquireChamberAbstract; - if (roomInfo.uid != [[AccountAbstractStorage instance].acquireCid integerValue]) { - return; - } - NSString* roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - request.value = [[self consumerAbstractToInthecaseofmtowardsionExt:userInfo] toJSONBWSttr]; - request.roomId = roomId; - request.transient = YES; - [[NIMSDK sharedSDK].chatroomManager updateChatroomQueueObject:request completion:^(NSError * _Nullable error) { - }]; -} - - -- (void)didChosenTowardsIndictowardsrix:(NSInteger)index { - MiecreoscoopeMHTueueMatrix* micModel = [self.acquireMiecreoscoopeInthecaseofmtowardsion objectForKey:[self indexToPolariztowardsion:index]]; - ConsumerAbstractMatrix* userInfo = self.hostRepresedtation.getUserInfo; - ChamberAbstractMatrix* roomInfo = self.hostRepresedtation.acquireChamberAbstract; - NSString* position = [self indexToPolariztowardsion:index]; - NSString* uid = [NSString stringWithFormat:@"%ld", userInfo.uid]; - NSString* roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - - - NSString * targetUid; - if (roomInfo.leaveMode && [position isEqualToString:@"-1"]) { - targetUid = [NSString stringWithFormat:@"%ld", roomInfo.uid]; - } - if (micModel.userInfo && micModel.userInfo.uid > 0) { - targetUid = [NSString stringWithFormat:@"%ld", micModel.userInfo.uid]; - } - - if (targetUid && targetUid.length > 0) { - YUMIConsumerSolitaireAbstractMatrix * model = [[YUMIConsumerSolitaireAbstractMatrix alloc] init]; - model.uid = targetUid; - model.position = position; - model.posState = micModel.microState.posState; - model.micState = micModel.microState.micState; - model.nick = userInfo.nick; - model.roomInfo = roomInfo; - model.micQueue = self.acquireMiecreoscoopeInthecaseofmtowardsion; - model.delegate = self.hostRepresedtation; - model.superMangerList = self.hostRepresedtation.acquireChamberSenstowardsionalManagementSttowardsement; - YUMIConsumerSolitaireRegardGovernancer * userCardVC = [[YUMIConsumerSolitaireRegardGovernancer alloc] initWithUser:model]; - [self.hostRepresedtation.acquireUniversalNev presentViewController:userCardVC animated:YES completion:nil]; - return; - } - - - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = roomId; - request.userIds = @[uid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - NIMChatroomMember * member = members.firstObject; - if (!member) return; - - NSString * lockTitle = micModel.microState.posState == MiecreoscoopePosDeclareGenre_Free ? @"锁麦" : YMLocalizedString(@"AnchorStage_View_1"); - MKJActionSheetDisposition *lockMic = [MKJActionSheetDisposition normalTitle:lockTitle ticktackPerformance:^{ - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.uid]; - NSString * state = micModel.microState.posState == MiecreoscoopePosDeclareGenre_Free ? @"1" : @"0"; - NSString * ticket = [[AccountAbstractStorage instance] acquireTicket]; - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - [Api miecreoscoopeSpokeImplementtowardsion:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - - } roomUid:roomUid state:state position:position ticket:ticket uid:uid]; - }]; - - NSString * muteTitle = micModel.microState.micState == MiecreoscoopeLoudspeakerDeclareGenre_Open ? @"闭麦" : YMLocalizedString(@"AnchorStage_View_3"); - MKJActionSheetDisposition *muteMic = [MKJActionSheetDisposition normalTitle:muteTitle ticktackPerformance:^{ - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.uid]; - NSString * state = micModel.microState.micState == MiecreoscoopeLoudspeakerDeclareGenre_Open ? @"1" : @"0"; - NSString * ticket = [[AccountAbstractStorage instance] acquireTicket]; - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - [Api miecreoscoopeBretowardshaedImplementtowardsion:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - - } roomUid:roomUid state:state position:position ticket:ticket uid:uid]; - }]; - - if (member.type == NIMTeamMemberTypeOwner) { - - MKJActionSheetDisposition *inviteMic = [MKJActionSheetDisposition normalTitle:YMLocalizedString(@"AnchorStage_View_4") ticktackPerformance:^{ - YUMIChamberCallforConsumerRegardGovernancer * inviteUserMicVC = [[YUMIChamberCallforConsumerRegardGovernancer alloc] init]; - inviteUserMicVC.roomId = roomId; - inviteUserMicVC.position = position; - inviteUserMicVC.blindDateVipUid = roomInfo.blindDateVipUid; - [self.hostRepresedtation.acquireUniversalNev pushViewController:inviteUserMicVC animated:YES]; - }]; - - [MKJPopup performanceSheetAboutProvisions:@[inviteMic, lockMic, muteMic]]; - } else if (member.type == NIMTeamMemberTypeManager) { - [MKJPopup performanceSheetAboutProvisions:@[lockMic, muteMic]]; - } else { - - NSString* selfUid = [NSString stringWithFormat:@"%ld", (long)self.hostRepresedtation.getUserInfo.uid]; - UIView* microView = [self prohibiticoveryMiecreoscoopeRegardByCid:selfUid]; - if (microView) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"AnchorStage_View_5")]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:@"让主播抱你上麦进行更多互动吧~"]; - [self prohibitichargeCommunictowardsionToChamberOwnerAboutConsumerMtowardsrix:self.hostRepresedtation.getUserInfo]; - } - } - }]; -} - -- (void)prohibitichargeCommunictowardsionToChamberOwnerAboutConsumerMtowardsrix:(ConsumerAbstractMatrix *)userInfo { - NIMMessage * message = [[NIMMessage alloc] init]; - AttachmentMatrix * attachMent = [[AttachmentMatrix alloc] init]; - attachMent.first = IndividualityCommunicationGenre_AnchorRoom_AudienceUpMic; - attachMent.data = [userInfo mtowardsrix2dictionary]; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachMent; - message.messageObject = object; - - NSString * sessionId = [NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.roomId]; - NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; -} - -#pragma mark - private utils function - -- (NSDictionary *)consumerAbstractToInthecaseofmtowardsionExt:(ConsumerAbstractMatrix *)userInfo { - MiecreoscoopeExtMatrix * extModel = [[MiecreoscoopeExtMatrix alloc] init]; - extModel.gender = userInfo.gender; - extModel.avatar = userInfo.avatar; - extModel.uid = userInfo.uid; - extModel.nick = userInfo.nick; - extModel.headWearUrl = userInfo.headwearEffect.length > 0 ? userInfo.headwearEffect : userInfo.headwearPic; - extModel.micCircle = userInfo.micCircle; - extModel.micNickColor = userInfo.micNickColor; - extModel.preventKick = userInfo.userVipInfoVO.preventKick; - extModel.enterHide = userInfo.userVipInfoVO.enterHide; - return [extModel mtowardsrix2dictionary]; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/Anchor/KellegCombatMiecreoscoopeRegard.h b/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/Anchor/KellegCombatMiecreoscoopeRegard.h deleted file mode 100644 index 88f6a872..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/Anchor/KellegCombatMiecreoscoopeRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// KellegCombatMiecreoscoopeRegard.h -// YUMI -// -// Created by YUMI on 2022/4/11. -// - -#import "MiecreoscoopeRegard.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface KellegCombatMiecreoscoopeRegard : MiecreoscoopeRegard - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/Anchor/KellegCombatMiecreoscoopeRegard.m b/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/Anchor/KellegCombatMiecreoscoopeRegard.m deleted file mode 100644 index 8e33f3a6..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/Anchor/KellegCombatMiecreoscoopeRegard.m +++ /dev/null @@ -1,148 +0,0 @@ -// -// KellegCombatMiecreoscoopeRegard.m -// YUMI -// -// Created by YUMI on 2022/4/11. -// - -#import "KellegCombatMiecreoscoopeRegard.h" -#import -#import -#import "SVGAAnatomiserExecutive.h" -#import -#import "YUMIMacroUitls.h" -@interface KellegCombatMiecreoscoopeRegard () - -@property (nonatomic, strong) SVGAImageView *svgExhibitionRegard; -@property (nonatomic, strong) SVGAAnatomiserExecutive *anatomiserExecutive; - -@property (nonatomic, assign) NSInteger position; - -@end - -@implementation KellegCombatMiecreoscoopeRegard - -- (void)initSubViews { - [super initSubViews]; - [self insertSubview:self.svgExhibitionRegard belowSubview:self.intelligenceportraitIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [super initChildLyRestrictions]; - [self.svgExhibitionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(85 * 1.5); - make.center.equalTo(self.intelligenceportraitIndicateRegard); - }]; -} - -#pragma mark - MicroRegardCeremony -- (void)EvidencePresentBWSttessManner:(BOOL)isGiftValue { - self.presentBWSttessRegard.hidden = YES; - if (self.position != -1) { - self.presentBWSttessRegard.hidden = YES; - } else { - self.presentBWSttessRegard.hidden = !isGiftValue; - } -} - -- (void)EvidenceDepartureManner:(BOOL)isLeaveMode { -} - -- (void)prohibitipositionMiecreoscoopeRegard:(MiecreoscoopeMHTueueMatrix *)model { - [super prohibitipositionMiecreoscoopeRegard:model]; - ChamberAbstractMatrix * roomInfo = self.acquireChamberAbstract; - ConsumerAbstractMatrix * userInfo = model.userInfo; - int position = model.microState.position; - self.position = position; - if (position != -1 && userInfo == nil) { - self.monicerSequencignation.text = @""; - } - if (roomInfo.type == ChamberGenre_Anchor && roomInfo.roomModeType == ChamberModeGenre_Open_AcrossRoomPK_mode) { - self.stackView.hidden = YES; - } - self.monicerSequencignation.hidden = YES; - self.postionSequencignation.hidden = YES; - self.intelligencePenetrateIndicateRegard.hidden = YES; - - NSString *nickStr = userInfo.nick; - if (userInfo.nick.length > 5) { - nickStr = [NSString stringWithFormat:@"%@…", [userInfo.nick substringToIndex:5]]; - } - - - if (position == -1) { - if (userInfo) { - if ([self.subviews containsObject:self.leaveSequencignation]) { - [self.leaveSequencignation removeFromSuperview]; - } - } else { - if (![self.subviews containsObject:self.leaveSequencignation]) { - [self insertSubview:self.leaveSequencignation belowSubview:self.presentBWSttessRegard]; - [self.leaveSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.intelligenceportraitIndicateRegard); - }]; - self.leaveSequencignation.layer.cornerRadius = self.frame.size.width * 0.5; - self.leaveSequencignation.layer.masksToBounds = YES; - } - } - self.loudspeakerDeclareIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_position_mute_Anchor"]; - [self.loudspeakerDeclareIndicateRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard).mas_offset(-2); - make.right.mas_equalTo(self.intelligenceportraitIndicateRegard).mas_offset(-(120 / 4) +11); - make.width.height.mas_equalTo(22); - }]; - } - [self.stackView mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_bottom).mas_offset(17); - }]; - - - self.svgExhibitionRegard.hidden = NO; - @weakify(self); - NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/anchor_room_speak.svga", API_Image_URL]; - NSURL *bgUrl = [NSURL fileURLWithPath:anatomiser1Name]; - [self.anatomiserExecutive chamberSvgaAboutWEEBSITE:bgUrl completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { - @strongify(self); - self.svgExhibitionRegard.loops = INT_MAX; - self.svgExhibitionRegard.clearsAfterStop = NO; - self.svgExhibitionRegard.videoItem = videoItem; - [self.svgExhibitionRegard startAnimation]; - } failureBlock:^(NSError * _Nullable error) { - }]; - -} - -- (void)prohibitipositionConsumer:(ConsumerAbstractMatrix *)userInfo { - [super prohibitipositionConsumer:userInfo]; - self.seaxualityIndicateRegard.hidden = YES; - if (self.position == -1) { - [self.presentBWSttessRegard removeFromSuperview]; - } - [self addSubview:self.presentBWSttessRegard]; - [self.presentBWSttessRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(16); - make.top.mas_equalTo(self.stackView.mas_bottom).mas_offset(10); - make.centerX.mas_equalTo(self.intelligenceportraitIndicateRegard); - }]; -} - -#pragma mark - getter -- (SVGAAnatomiserExecutive *)anatomiserExecutive { - if (!_anatomiserExecutive) { - _anatomiserExecutive = [[SVGAAnatomiserExecutive alloc]init]; - } - return _anatomiserExecutive; -} - -- (SVGAImageView *)svgExhibitionRegard { - if (_svgExhibitionRegard == nil) { - _svgExhibitionRegard = [[SVGAImageView alloc]init]; - _svgExhibitionRegard.contentMode = UIViewContentModeScaleToFill; - _svgExhibitionRegard.userInteractionEnabled = NO; - _svgExhibitionRegard.frame = CGRectMake(0, 0, 384, 384); - _svgExhibitionRegard.hidden = YES; - _svgExhibitionRegard.backgroundColor = [UIColor clearColor]; - } - return _svgExhibitionRegard; -} -@end diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/Anchor/KellegMiecreoscoopeRegard.h b/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/Anchor/KellegMiecreoscoopeRegard.h deleted file mode 100644 index b123ccf2..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/Anchor/KellegMiecreoscoopeRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// KellegMiecreoscoopeRegard.h -// YUMI -// -// Created by YUMI on 2022/2/14. -// - -#import "MiecreoscoopeRegard.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface KellegMiecreoscoopeRegard : MiecreoscoopeRegard - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/Anchor/KellegMiecreoscoopeRegard.m b/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/Anchor/KellegMiecreoscoopeRegard.m deleted file mode 100644 index 7b69e039..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/Anchor/KellegMiecreoscoopeRegard.m +++ /dev/null @@ -1,143 +0,0 @@ -// -// KellegMiecreoscoopeRegard.m -// YUMI -// -// Created by YUMI on 2022/2/14. -// - -#import "KellegMiecreoscoopeRegard.h" -#import -#import -#import "SVGA.h" -#import "SVGAAnatomiserExecutive.h" -#import "YUMIMacroUitls.h" -#import "MiecreoscoopeWaveRegard.h" - -@interface KellegMiecreoscoopeRegard () - -@property (nonatomic, strong) SVGAImageView *svgExhibitionRegard; -@property (nonatomic, strong) SVGAAnatomiserExecutive *anatomiserExecutive; -@property (nonatomic, assign) NSInteger position; - -@end - -@implementation KellegMiecreoscoopeRegard - -- (void)initSubViews { - [super initSubViews]; - [self insertSubview:self.svgExhibitionRegard belowSubview:self.intelligenceportraitIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [super initChildLyRestrictions]; - [self.svgExhibitionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(180); - make.center.equalTo(self.intelligenceportraitIndicateRegard); - }]; -} - -#pragma mark - MicroRegardCeremony -- (void)EvidencePresentBWSttessManner:(BOOL)isGiftValue { - if (self.position != -1) { - self.presentBWSttessRegard.hidden = YES; - } else { - self.presentBWSttessRegard.hidden = !isGiftValue; - } -} - -- (void)EvidenceDepartureManner:(BOOL)isLeaveMode { -} - -- (void)prohibitipositionMiecreoscoopeRegard:(MiecreoscoopeMHTueueMatrix *)model { - [super prohibitipositionMiecreoscoopeRegard:model]; - ConsumerAbstractMatrix * userInfo = model.userInfo; - int position = model.microState.position; - self.position = position; - if (position != -1 && userInfo == nil) { - self.monicerSequencignation.text = @""; - } - if (position == 0 || position == 1 || position == 2) { - self.intelligencePenetrateIndicateRegard.hidden = NO; - } else { - self.intelligencePenetrateIndicateRegard.hidden = YES; - } - - if (position == -1) { - if (userInfo) { - if ([self.subviews containsObject:self.leaveSequencignation]) { - [self.leaveSequencignation removeFromSuperview]; - } - } else { - if (![self.subviews containsObject:self.leaveSequencignation]) { - [self insertSubview:self.leaveSequencignation belowSubview:self.presentBWSttessRegard]; - [self.leaveSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.intelligenceportraitIndicateRegard); - }]; - self.leaveSequencignation.layer.cornerRadius = self.frame.size.width * 0.5; - self.leaveSequencignation.layer.masksToBounds = YES; - } - } - self.loudspeakerDeclareIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_position_mute_Anchor"]; - [self.loudspeakerDeclareIndicateRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard).mas_offset(-2); - make.right.mas_equalTo(self.intelligenceportraitIndicateRegard).mas_offset(-(120 / 4) +11); - make.width.height.mas_equalTo(22); - }]; - - self.svgExhibitionRegard.hidden = NO; - @weakify(self); - NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/anchor_room_speak.svga", API_Image_URL]; - NSURL *bgUrl = [NSURL fileURLWithPath:anatomiser1Name]; - [self.anatomiserExecutive chamberSvgaAboutWEEBSITE:bgUrl completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { - @strongify(self); - self.svgExhibitionRegard.loops = INT_MAX; - self.svgExhibitionRegard.clearsAfterStop = NO; - self.svgExhibitionRegard.videoItem = videoItem; - [self.svgExhibitionRegard startAnimation]; - } failureBlock:^(NSError * _Nullable error) { - }]; - } else { - self.svgExhibitionRegard.hidden = YES; - } -} - -- (void)prohibitipositionConsumer:(ConsumerAbstractMatrix *)userInfo { - [super prohibitipositionConsumer:userInfo]; - self.postionSequencignation.hidden = YES; - if (self.position == -1) { - self.monicerSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; - NSString *nickStr = userInfo.nick; - if (userInfo.nick.length > 10) { - nickStr = [NSString stringWithFormat:@"%@…", [userInfo.nick substringToIndex:10]]; - } - self.monicerSequencignation.text = nickStr.length > 0 ? nickStr : @""; - } -} - -- (void)consumerSpeaking { - if (self.position != -1) { - [self.animationView inititowardseSurgeBrectifyness]; - } -} - -#pragma mark - setter and getter -- (SVGAAnatomiserExecutive *)anatomiserExecutive { - if (!_anatomiserExecutive) { - _anatomiserExecutive = [[SVGAAnatomiserExecutive alloc]init]; - } - return _anatomiserExecutive; -} - -- (SVGAImageView *)svgExhibitionRegard { - if (_svgExhibitionRegard == nil) { - _svgExhibitionRegard = [[SVGAImageView alloc]init]; - _svgExhibitionRegard.contentMode = UIViewContentModeScaleToFill; - _svgExhibitionRegard.userInteractionEnabled = NO; - _svgExhibitionRegard.frame = CGRectMake(0, 0, 384, 384); - _svgExhibitionRegard.hidden = YES; - _svgExhibitionRegard.backgroundColor = [UIColor clearColor]; - } - return _svgExhibitionRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/Dating/EngagementMiecreoscoopeRegard.h b/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/Dating/EngagementMiecreoscoopeRegard.h deleted file mode 100644 index eb138548..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/Dating/EngagementMiecreoscoopeRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// EngagementMiecreoscoopeRegard.h -// YUMI -// -// Created by YUMI on 2022/1/5. -// - -#import "MiecreoscoopeRegard.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface EngagementMiecreoscoopeRegard : MiecreoscoopeRegard - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/Dating/EngagementMiecreoscoopeRegard.m b/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/Dating/EngagementMiecreoscoopeRegard.m deleted file mode 100644 index fe16966c..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/Dating/EngagementMiecreoscoopeRegard.m +++ /dev/null @@ -1,306 +0,0 @@ -// -// EngagementMiecreoscoopeRegard.m -// YUMI -// -// Created by YUMI on 2022/1/5. -// - -#import "EngagementMiecreoscoopeRegard.h" -#import -#import "NetIndicateRegard.h" -#import "AccountAbstractStorage.h" - -@interface EngagementMiecreoscoopeRegard () -@property (nonatomic,strong) NetIndicateRegard *capIndicateRegard; -@property (nonatomic,strong) UIButton *extractBtuton; -@property (nonatomic,strong) UIImageView *engagementGenreRegard; -@property (nonatomic,strong) UIImageView *vipIntelligencePenetrateIndicateRegard; -@end - -@implementation EngagementMiecreoscoopeRegard - -- (void)initSubViews { - [super initSubViews]; - [self insertSubview:self.capIndicateRegard aboveSubview:self.intelligencePenetrateIndicateRegard]; - [self insertSubview:self.engagementGenreRegard belowSubview:self.intelligencePenetrateIndicateRegard]; - [self insertSubview:self.vipIntelligencePenetrateIndicateRegard aboveSubview:self.engagementGenreRegard]; - [self addSubview:self.extractBtuton]; - -} - -- (void)initChildLyRestrictions { - [super initChildLyRestrictions]; - [self.capIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.intelligencePenetrateIndicateRegard); - }]; - - [self.extractBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(37, 14)); - make.centerX.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.centerY.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_bottom).mas_offset(-2); - }]; - - [self.engagementGenreRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.intelligenceportraitIndicateRegard); - }]; - - [self.vipIntelligencePenetrateIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.capIndicateRegard); - }]; -} - - -- (void)prohibitipositionMiecreoscoopeRegard:(MiecreoscoopeMHTueueMatrix *)model { - [super prohibitipositionMiecreoscoopeRegard:model]; - ChamberAbstractMatrix * roomInfo = self.acquireChamberAbstract; - ConsumerAbstractMatrix * userInfo = model.userInfo; - NSMutableDictionary * micQueue = [self acquireMiecreoscoopeInthecaseofmtowardsion]; - NSString * typeImageName = @""; - int position = model.microState.position; - - if (userInfo == nil || userInfo.uid <= 0) { - if (position == -1) { - self.postionSequencignation.hidden = YES; - self.monicerSequencignation.text = YMLocalizedString(@"DatingMicro_View_0"); - self.seaxualityIndicateRegard.hidden = YES; - self.monicerSequencignation.hidden = NO; - } else if(position == 999) { - self.postionSequencignation.hidden = YES; - self.monicerSequencignation.hidden = YES; - self.seaxualityIndicateRegard.hidden = YES; - } - } else { - if (position == 999) { - self.postionSequencignation.hidden = YES; - self.monicerSequencignation.hidden = NO; - self.seaxualityIndicateRegard.hidden = YES; - } else { - if (position == -1) { - self.postionSequencignation.hidden = YES; - self.seaxualityIndicateRegard.hidden = NO; - } else { - self.postionSequencignation.hidden = NO; - self.seaxualityIndicateRegard.hidden = YES; - } - self.monicerSequencignation.hidden = NO; - } - } - NSString *nickStr = userInfo.nick; - if (userInfo.nick.length > 5) { - nickStr = [NSString stringWithFormat:@"%@…", [userInfo.nick substringToIndex:5]]; - } - - if (position == 2 || position == 3 || position == 6 || position == 7) { - self.monicerSequencignation.text = nickStr.length > 0 ? nickStr : YMLocalizedString(@"DatingMicro_View_1"); - self.engagementGenreRegard.hidden = NO; - typeImageName = @"room_position_dating_male_bg"; - self.engagementGenreRegard.image = [UIImage imageNamed:typeImageName]; - model.microState.datingMicType = DatingLoudspeakerGenre_Female; - } else if(position == 0 || position == 1 || position == 4 || position == 5){ - self.monicerSequencignation.text = nickStr.length > 0 ? nickStr : YMLocalizedString(@"DatingMicro_View_2"); - self.engagementGenreRegard.hidden = NO; - typeImageName = @"room_position_dating_female_bg"; - self.engagementGenreRegard.image = [UIImage imageNamed:typeImageName]; - model.microState.datingMicType = DatingLoudspeakerGenre_Male; - } else { - self.engagementGenreRegard.hidden = YES; - model.microState.datingMicType = DatingLoudspeakerGenre_Other; - } - - if (userInfo && userInfo.capUrl.length > 0) { - self.capIndicateRegard.imageUrl = userInfo.capUrl; - self.capIndicateRegard.hidden = NO; - } else { - self.capIndicateRegard.hidden = YES; - } - - if (model && position == 999) { - self.vipIntelligencePenetrateIndicateRegard.hidden = NO; - if (roomInfo.blindDateState == ChamberDisportDateingGenre_Talk || roomInfo.blindDateState == ChamberDisportDateingGenre_Finish) { - self.vipIntelligencePenetrateIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_mode_dating_vip_title"]; - } else { - if (userInfo) { - self.vipIntelligencePenetrateIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_mode_dating_vip"]; - } else { - self.vipIntelligencePenetrateIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_mode_dating_vip_title"]; - } - } - } else { - if (position != -1 && userInfo && userInfo.vipMic) { - self.vipIntelligencePenetrateIndicateRegard.hidden = NO; - if (roomInfo.blindDateState == ChamberDisportDateingGenre_Talk || roomInfo.blindDateState == ChamberDisportDateingGenre_Finish) { - self.vipIntelligencePenetrateIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_mode_dating_vip_title"]; - } else { - self.vipIntelligencePenetrateIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_mode_dating_vip"]; - } - } else { - self.vipIntelligencePenetrateIndicateRegard.hidden = YES; - } - } - - self.extractBtuton.hidden = YES; - if (position == -1) {return;} - - if (roomInfo.blindDateState == ChamberDisportDateingGenre_Pick) { - - MiecreoscoopeMHTueueMatrix * presideModel = [self.acquireMiecreoscoopeInthecaseofmtowardsion objectForKey:@"-1"]; - if (presideModel.userInfo && presideModel.userInfo.uid == [AccountAbstractStorage instance].acquireCid.integerValue) { - if (userInfo) { - self.extractBtuton.hidden = NO; - if (userInfo.vipMic || position == 999) { - - if (userInfo.hasSelectUser) { - [self.extractBtuton setTitle:[NSString stringWithFormat:YMLocalizedString(@"DatingMicro_View_3"), (userInfo.selectMicPosition + 1)] forState:UIControlStateNormal]; - [self.extractBtuton setBackgroundImage:nil forState:UIControlStateNormal]; - } else { - [self.extractBtuton setTitle:YMLocalizedString(@"DatingMicro_View_4") forState:UIControlStateNormal]; - [self.extractBtuton setBackgroundImage:nil forState:UIControlStateNormal]; - } - } else { - - if (userInfo.hasSelectUser) { - MiecreoscoopeMHTueueMatrix *sequence = [micQueue objectForKey:[NSString stringWithFormat:@"%d", userInfo.selectMicPosition]]; - NSString *selectNum; - if (sequence.userInfo.vipMic) { - selectNum = @"选VIP"; - } else { - selectNum = [NSString stringWithFormat:YMLocalizedString(@"Dating_Micro_View_6"), (userInfo.selectMicPosition + 1)]; - } - if (model.microState.datingMicType == DatingLoudspeakerGenre_Male) { - [self prohibitipositionExtractChampion:selectNum backmImageName:@"room_mode_dating_male_select"]; - } else { - [self prohibitipositionExtractChampion:selectNum backmImageName:@"room_mode_dating_female_select"]; - } - } else { - [self prohibitipositionExtractChampion:YMLocalizedString(@"Dating_Micro_View_7") backmImageName:@"room_mode_dating_not_select"]; - } - } - } - } else { - - if (userInfo) { - self.extractBtuton.hidden = NO; - if (userInfo.vipMic || position ==999) { - - if (userInfo.hasSelectUser) { - - if (userInfo.uid == [AccountAbstractStorage instance].acquireCid.integerValue) { - [self.extractBtuton setTitle:[NSString stringWithFormat:YMLocalizedString(@"Dating_Micro_View_8"), (userInfo.selectMicPosition + 1)] forState:UIControlStateNormal]; - [self.extractBtuton setBackgroundImage:nil forState:UIControlStateNormal]; - } else { - [self.extractBtuton setTitle:YMLocalizedString(@"Dating_Micro_View_9") forState:UIControlStateNormal]; - [self.extractBtuton setBackgroundImage:nil forState:UIControlStateNormal]; - } - } else { - [self.extractBtuton setTitle:YMLocalizedString(@"DatingMicro_View_10") forState:UIControlStateNormal]; - [self.extractBtuton setBackgroundImage:nil forState:UIControlStateNormal]; - } - } else { - - if (userInfo.hasSelectUser) { - - if (userInfo.uid == [AccountAbstractStorage instance].acquireCid.integerValue) { - MiecreoscoopeMHTueueMatrix *sequence = [micQueue objectForKey:[NSString stringWithFormat:@"%d", userInfo.selectMicPosition]]; - NSString *selectNum; - if (sequence.userInfo.vipMic) { - selectNum = @"选VIP"; - } else { - selectNum = [NSString stringWithFormat:YMLocalizedString(@"DatingMicro_View_12"), (userInfo.selectMicPosition + 1)]; - } - if (model.microState.datingMicType == DatingLoudspeakerGenre_Male) { - [self prohibitipositionExtractChampion:selectNum backmImageName:@"room_mode_dating_male_select"]; - } else { - [self prohibitipositionExtractChampion:selectNum backmImageName:@"room_mode_dating_female_select"]; - } - } else { - if (model.microState.datingMicType == DatingLoudspeakerGenre_Male) { - [self prohibitipositionExtractChampion:YMLocalizedString(@"DatingMicro_View_13") backmImageName:@"room_mode_dating_male_select"]; - } else { - [self prohibitipositionExtractChampion:YMLocalizedString(@"DatingMicro_View_14") backmImageName:@"room_mode_dating_female_select"]; - } - } - } else { - [self prohibitipositionExtractChampion:YMLocalizedString(@"DatingMicro_View_15") backmImageName:@"room_mode_dating_not_select"]; - } - } - } - } - } else if(roomInfo.blindDateState == ChamberDisportDateingGenre_Result || roomInfo.blindDateState == ChamberDisportDateingGenre_Finish) { - - if (userInfo) { - self.extractBtuton.hidden = NO; - if (userInfo.vipMic || position == 999) { - - if (userInfo.hasSelectUser) { - [self.extractBtuton setTitle:[NSString stringWithFormat:YMLocalizedString(@"DatingMicro_View_16"), (userInfo.selectMicPosition + 1)] forState:UIControlStateNormal]; - [self.extractBtuton setBackgroundImage:nil forState:UIControlStateNormal]; - } else { - [self.extractBtuton setTitle:YMLocalizedString(@"DatingMicro_View_17") forState:UIControlStateNormal]; - [self.extractBtuton setBackgroundImage:nil forState:UIControlStateNormal]; - } - } else { - - if (userInfo.hasSelectUser) { - MiecreoscoopeMHTueueMatrix *sequence = [micQueue objectForKey:[NSString stringWithFormat:@"%d", userInfo.selectMicPosition]]; - NSString *selectNum; - if (sequence.userInfo.vipMic) { - selectNum = @"选VIP"; - } else { - selectNum = [NSString stringWithFormat:YMLocalizedString(@"DatingMicro_View_19"), (userInfo.selectMicPosition + 1)]; - } - if (model.microState.datingMicType == DatingLoudspeakerGenre_Male) { - [self prohibitipositionExtractChampion:selectNum backmImageName:@"room_mode_dating_male_select"]; - } else { - [self prohibitipositionExtractChampion:selectNum backmImageName:@"room_mode_dating_female_select"]; - } - } else { - [self prohibitipositionExtractChampion:YMLocalizedString(@"DatingMicro_View_20") backmImageName:@"room_mode_dating_not_select"]; - } - } - } - - } -} - -- (void)prohibitipositionExtractChampion:(NSString *)title backmImageName:(NSString *)backImageName { - [self.extractBtuton setTitle:title forState:UIControlStateNormal]; - [self.extractBtuton setBackgroundImage:[UIImage imageNamed:backImageName] forState:UIControlStateNormal]; -} - - -- (UIImageView *)engagementGenreRegard { - if (!_engagementGenreRegard) { - _engagementGenreRegard = [[UIImageView alloc] init]; - _engagementGenreRegard.userInteractionEnabled = YES; - } - return _engagementGenreRegard; -} - -- (NetIndicateRegard *)capIndicateRegard { - if (!_capIndicateRegard) { - _capIndicateRegard = [[NetIndicateRegard alloc] init]; - } - return _capIndicateRegard; -} - -- (UIButton *)extractBtuton { - if (!_extractBtuton) { - _extractBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_extractBtuton setTitle:YMLocalizedString(@"DatingMicro_View_21") forState:UIControlStateNormal]; - _extractBtuton.titleLabel.font = [UIFont systemFontOfSize:9]; - _extractBtuton.userInteractionEnabled = NO; - _extractBtuton.hidden = YES; - } - return _extractBtuton; -} - -- (UIImageView *)vipIntelligencePenetrateIndicateRegard { - if (!_vipIntelligencePenetrateIndicateRegard) { - _vipIntelligencePenetrateIndicateRegard = [[UIImageView alloc] init]; - _vipIntelligencePenetrateIndicateRegard.userInteractionEnabled = YES; - _vipIntelligencePenetrateIndicateRegard.hidden = YES; - } - return _vipIntelligencePenetrateIndicateRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/Dating/MiecreoscoopeEngagementProgressRegard.h b/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/Dating/MiecreoscoopeEngagementProgressRegard.h deleted file mode 100644 index 2e99ebea..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/Dating/MiecreoscoopeEngagementProgressRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// MiecreoscoopeEngagementProgressRegard.h -// YUMI -// -// Created by YUMI on 2022/1/4. -// - -#import -#import "ChamberAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@interface MiecreoscoopeEngagementProgressRegard : UIView -@property (nonatomic,assign) ChamberDisportDateingGenre blindDateState; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/Dating/MiecreoscoopeEngagementProgressRegard.m b/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/Dating/MiecreoscoopeEngagementProgressRegard.m deleted file mode 100644 index f89e3878..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/Dating/MiecreoscoopeEngagementProgressRegard.m +++ /dev/null @@ -1,103 +0,0 @@ -// -// MiecreoscoopeEngagementProgressRegard.m -// YUMI -// -// Created by YUMI on 2022/1/4. -// - -#import "MiecreoscoopeEngagementProgressRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "MKJPopup.h" -#import "YUMIHtmlUrl.h" -#import "YUMIMacroUitls.h" -#import "YUMIChamberEngagementTissuePrecautiousRegard.h" - -@interface MiecreoscoopeEngagementProgressRegard () -@property (nonatomic,strong) UIImageView *courageSceneIndicateRegard; -@property (nonatomic,strong) UIButton *talkBtuton; - -@end - -@implementation MiecreoscoopeEngagementProgressRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.courageSceneIndicateRegard]; - [self addSubview:self.talkBtuton]; -} - -- (void)initChildLyRestrictions { - [self.courageSceneIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(95 * kScreenScale, 84 * kScreenScale)); - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self).offset(12 * kScreenScale); - }]; - - [self.talkBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.courageSceneIndicateRegard.mas_bottom).offset(8 * kScreenScale); - make.size.mas_equalTo(CGSizeMake(65 *kScreenScale, 21 * kScreenScale)); - make.centerX.mas_equalTo(self.courageSceneIndicateRegard); - }]; -} - -#pragma mark - Event Response -- (void)betowardsEngagementPreadominantRecognition { - [MKJPopup dismiss]; - YUMIChamberEngagementTissuePrecautiousRegard * webView = [[YUMIChamberEngagementTissuePrecautiousRegard alloc] init]; - webView.url = URLWithType(kRoomDatingRule); - [MKJPopup popupRegard:webView style:MKJPopupStyleAlert]; -} - -#pragma mark - Getters And Setters -- (void)setBlindDateState:(ChamberDisportDateingGenre)blindDateState { - _blindDateState = blindDateState; - NSString *talkTitle = YMLocalizedString(@"Micro_Dating_Progress_View_0"); - switch (_blindDateState) { - case ChamberDisportDateingGenre_Talk: - talkTitle = YMLocalizedString(@"Micro_Dating_Progress_View_1"); - break; - case ChamberDisportDateingGenre_Pick: - talkTitle = YMLocalizedString(@"Micro_Dating_Progress_View_2"); - break; - case ChamberDisportDateingGenre_Result: - talkTitle = YMLocalizedString(@"Micro_Dating_Progress_View_3"); - break; - default: - break; - } - [self.talkBtuton setTitle:talkTitle forState:UIControlStateNormal]; -} - -- (UIImageView *)courageSceneIndicateRegard { - if (!_courageSceneIndicateRegard) { - _courageSceneIndicateRegard = [[UIImageView alloc] init]; - _courageSceneIndicateRegard.userInteractionEnabled = YES; - _courageSceneIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_mode_dating_heart_pic"]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(betowardsEngagementPreadominantRecognition)]; - [_courageSceneIndicateRegard addGestureRecognizer:tap]; - } - return _courageSceneIndicateRegard; -} - -- (UIButton *)talkBtuton { - if (_talkBtuton == nil) { - _talkBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_talkBtuton setTitle:YMLocalizedString(@"Micro_Dating_Progress_View_4") forState:UIControlStateNormal]; - [_talkBtuton setTitleColor:UIColorFromRGB(0xFFE1E8) forState:UIControlStateNormal]; - _talkBtuton.titleLabel.font = [UIFont boldSystemFontOfSize:13]; - _talkBtuton.titleLabel.textAlignment = NSTextAlignmentCenter; - [_talkBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_scope_mode_dating_progress_background"] forState:UIControlStateNormal]; - } - return _talkBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/LittleGame/TraitCompetitionMiecreoscoopeRegard.h b/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/LittleGame/TraitCompetitionMiecreoscoopeRegard.h deleted file mode 100644 index c954b218..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/LittleGame/TraitCompetitionMiecreoscoopeRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// TraitCompetitionMiecreoscoopeRegard.h -// YUMI -// -// Created by YUMI on 2022/2/11. -// - -#import "MiecreoscoopeRegard.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface TraitCompetitionMiecreoscoopeRegard : MiecreoscoopeRegard - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/LittleGame/TraitCompetitionMiecreoscoopeRegard.m b/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/LittleGame/TraitCompetitionMiecreoscoopeRegard.m deleted file mode 100644 index 8cd4196e..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/LittleGame/TraitCompetitionMiecreoscoopeRegard.m +++ /dev/null @@ -1,103 +0,0 @@ -// -// TraitCompetitionMiecreoscoopeRegard.m -// YUMI -// -// Created by YUMI on 2022/2/11. -// - -#import "TraitCompetitionMiecreoscoopeRegard.h" -#import -#import "DJDKMIMOMColor.h" - -@interface TraitCompetitionMiecreoscoopeRegard () -@property (nonatomic,strong) UIButton *declareBtuton; -@end - -@implementation TraitCompetitionMiecreoscoopeRegard - - -- (void)initSubViews { - [super initSubViews]; - [self insertSubview:self.declareBtuton belowSubview:self.loudspeakerDeclareIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [super initChildLyRestrictions]; - [self.declareBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(40); - make.height.mas_equalTo(16); - make.centerX.mas_equalTo(self); - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_bottom); - }]; -} - -- (void)prohibitipositionMiecreoscoopeRegard:(MiecreoscoopeMHTueueMatrix *)model { - [super prohibitipositionMiecreoscoopeRegard:model]; - ConsumerAbstractMatrix * info = model.userInfo; - self.declareBtuton.hidden = NO; - self.seaxualityIndicateRegard.hidden = YES; - if (info.uid == self.acquireChamberAbstract.uid) { - [self.declareBtuton setTitle:YMLocalizedString(@"Little_Game_Micro_View_0") forState:UIControlStateNormal]; - [self.declareBtuton setBackgroundColor:UIColorFromRGB(0x20AAF5)]; - } else { - if (info.gameStatus == LittleGameDisportPosition_NoIn) { - self.declareBtuton.hidden = YES; - } else if (info.gameStatus == LittleGameDisportPosition_IsIn) { - [self.declareBtuton setTitle:YMLocalizedString(@"Little_Game_Micro_View_1") forState:UIControlStateNormal]; - [self.declareBtuton setBackgroundColor:UIColorFromRGB(0xFC4F6D)]; - } else if (info.gameStatus == LittleGameDisportPosition_Ready) { - [self.declareBtuton setTitle:YMLocalizedString(@"Little_Game_Micro_View_2") forState:UIControlStateNormal]; - [self.declareBtuton setBackgroundColor:UIColorFromRGB(0x56D41A)]; - } else if (info.gameStatus == LittleGameDisportPosition_Plying) { - [self.declareBtuton setTitle:YMLocalizedString(@"Little_Game_Micro_View_3") forState:UIControlStateNormal]; - [self.declareBtuton setBackgroundColor:UIColorFromRGB(0xFFA936)]; - } else { - self.declareBtuton.hidden = YES; - } - } - if (info.nick.length > 0) { - NSString *nickStr = info.nick; - if (nickStr.length > 3) { - nickStr = [NSString stringWithFormat:@"%@…", [nickStr substringToIndex:3]]; - } - self.monicerSequencignation.text = nickStr; - } - - if (model.microState.position == -1) { - self.monicerSequencignation.hidden = NO; - self.postionSequencignation.hidden = NO; - } - - [self.stackView mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_bottom).offset(6); - }]; -} - -- (void)prohibitipositionConsumer:(ConsumerAbstractMatrix *)userInfo { - [super prohibitipositionConsumer:userInfo]; - - [self.presentBWSttessRegard removeFromSuperview]; - [self addSubview:self.presentBWSttessRegard]; - [self.presentBWSttessRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(16); - make.top.mas_equalTo(self.stackView.mas_bottom).mas_offset(5); - make.centerX.mas_equalTo(self.intelligenceportraitIndicateRegard); - }]; -} - -#pragma mark - Getters And Setters -- (UIButton *)declareBtuton { - if (!_declareBtuton) { - _declareBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_declareBtuton setTitle:YMLocalizedString(@"Little_Game_Micro_View_4") forState:UIControlStateNormal]; - [_declareBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _declareBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - [_declareBtuton setBackgroundColor:UIColorFromRGB(0xFFA936)]; - _declareBtuton.layer.masksToBounds = YES; - _declareBtuton.layer.cornerRadius = 8; - _declareBtuton.layer.borderColor = UIColor.whiteColor.CGColor; - _declareBtuton.layer.borderWidth = 1; - } - return _declareBtuton; -} -@end diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MicroRegardCeremony.h b/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MicroRegardCeremony.h deleted file mode 100644 index 7c2bcb2f..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MicroRegardCeremony.h +++ /dev/null @@ -1,64 +0,0 @@ -// -// YMRoomPositionDataSourceProtocol.h -// YUMI -// -// Created by zu on 2021/10/27. -// - -#import -#import "MiecreoscoopeMHTueueMatrix.h" -#import "MiecreoscoopeStateMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "ChamberAbstractMatrix.h" -#import "ChamberAcceptDischargeAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@protocol MicroRegardCeremony - -- (void)initSubViews; - - -- (void)initChildLyRestrictions; - - -- (void)EvidenceDepartureManner:(BOOL)isLeaveMode; - - -- (void)prohibitipositionMiecreoscoopeRegard:(MiecreoscoopeMHTueueMatrix *)model; - - -- (void)prohibitipositionConsumer:(ConsumerAbstractMatrix *)userInfo; - - -- (void)consumerSpeaking; - - -- (void)EvidenceingAccept:(ChamberAcceptDischargeAbstractMatrix *)receiveInfo; - - -- (void)prohibitipositionPresentBWSttess:(long long)giftValue; - - -- (void)EvidencePresentBWSttessManner:(BOOL)isGiftValue; - - -- (void)replacementPresentBWSttess; - - -- (void)prohibitipositionChamberAbstract:(ChamberAbstractMatrix *)roomInfo; - - -- (ChamberAbstractMatrix *)acquireChamberAbstract; - - -- (void)prohibitipositionLoudspeakerInthecaseofmtowardsion:(NSMutableDictionary *)micQueue; - -- (void)refurbishPolariztowardsionisHighPrototype:(BOOL)isHighLevel isExhibit:(BOOL)isExhibit; - - -- (void)replacementPositonPrototypeApexknot; - -- (NSMutableDictionary*)acquireMiecreoscoopeInthecaseofmtowardsion; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MiecreoscoopeMagnificentWaveRegard.h b/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MiecreoscoopeMagnificentWaveRegard.h deleted file mode 100644 index 216d33e5..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MiecreoscoopeMagnificentWaveRegard.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// MiecreoscoopeMagnificentWaveRegard.h -// YUMI -// -// Created by YUMI on 2022/1/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface MiecreoscoopeMagnificentWaveRegard : UIView - -- (void)inititowardseSurgeBrectifynessAboutWeebsite:(NSString *)url; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MiecreoscoopeMagnificentWaveRegard.m b/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MiecreoscoopeMagnificentWaveRegard.m deleted file mode 100644 index 471dfa8d..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MiecreoscoopeMagnificentWaveRegard.m +++ /dev/null @@ -1,88 +0,0 @@ -// -// MiecreoscoopeMagnificentWaveRegard.m -// YUMI -// -// Created by YUMI on 2022/1/18. -// - -#import "MiecreoscoopeMagnificentWaveRegard.h" -#import "SVGA.h" -#import -#import "YUMIMacroUitls.h" - -@interface MiecreoscoopeMagnificentWaveRegard() - -@property (nonatomic, strong) SVGAImageView *svgExhibitionRegard; - -@property (strong, nonatomic) SVGAParser *anatomiser; - -@property (nonatomic,assign) BOOL isBrectifynessing; - -@end - -@implementation MiecreoscoopeMagnificentWaveRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Public Method -- (void)inititowardseSurgeBrectifynessAboutWeebsite:(NSString *)url { - if (self.isBrectifynessing) { - return; - } - @kWeakify(self); - [self.anatomiser parseWithURL:[NSURL URLWithString:url] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { - @kStrongify(self); - self.svgExhibitionRegard.loops = 1; - self.svgExhibitionRegard.clearsAfterStop = YES; - self.svgExhibitionRegard.videoItem = videoItem; - self.isBrectifynessing = YES; - [self.svgExhibitionRegard startAnimation]; - } failureBlock:^(NSError * _Nullable error) { - }]; -} - -- (void)suspeindSurgeBrectifyness { - self.isBrectifynessing = NO; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.svgExhibitionRegard]; - self.svgExhibitionRegard.delegate = self; -} - -- (void)initChildLyRestrictions { - [self.svgExhibitionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; -} - -#pragma mark - SVGAPlayerDelegate -- (void)svgaPlayerDidFinishedAnimation:(SVGAPlayer *)player { - [self suspeindSurgeBrectifyness]; -} - -- (SVGAImageView *)svgExhibitionRegard { - if (!_svgExhibitionRegard) { - _svgExhibitionRegard = [[SVGAImageView alloc] init]; - _svgExhibitionRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _svgExhibitionRegard; -} - -- (SVGAParser *)anatomiser { - if (!_anatomiser) { - _anatomiser = [[SVGAParser alloc]init]; - } - return _anatomiser; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MiecreoscoopePresentStressRegard.h b/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MiecreoscoopePresentStressRegard.h deleted file mode 100644 index f8f5f9d0..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MiecreoscoopePresentStressRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// MiecreoscoopePresentStressRegard.h -// YUMI -// -// Created by YUMI on 2021/12/13. -// - -#import "MiecreoscoopeRegard.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface MiecreoscoopePresentStressRegard : UIView -@property (nonatomic,assign) long long giftValue; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MiecreoscoopePresentStressRegard.m b/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MiecreoscoopePresentStressRegard.m deleted file mode 100644 index 3b798b35..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MiecreoscoopePresentStressRegard.m +++ /dev/null @@ -1,96 +0,0 @@ -// -// MiecreoscoopePresentStressRegard.m -// YUMI -// -// Created by YUMI on 2021/12/13. -// - -#import "MiecreoscoopePresentStressRegard.h" -#import - -@interface MiecreoscoopePresentStressRegard () -@property (nonatomic, strong) UIView *backgroundRegard; -@property (nonatomic, strong) UIImageView *figureIndicateRegard; -@property (nonatomic, strong) UILabel *bWSttessSequencignation; -@end - -@implementation MiecreoscoopePresentStressRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backgroundRegard]; - [self.backgroundRegard addSubview:self.figureIndicateRegard]; - [self.backgroundRegard addSubview:self.bWSttessSequencignation]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.backgroundRegard); - }]; - - [self.backgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.bWSttessSequencignation).mas_offset(4); - }]; - [self.figureIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.backgroundRegard).offset(4); - make.centerY.mas_equalTo(self.backgroundRegard); - make.width.height.mas_equalTo(11); - }]; - [self.bWSttessSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.figureIndicateRegard.mas_right).offset(3); - make.centerY.mas_equalTo(self.backgroundRegard); - }]; - -} -#pragma mark - Getters And Setters -- (void)setGiftValue:(long long)giftValue { - NSString *value; - if (giftValue < 1000000) { - value = @(giftValue).stringValue; - } else if (giftValue >= 100000000) { - value = @"9999万+"; - } else { - value = [NSString stringWithFormat:YMLocalizedString(@"Micro_Gift_Value_View_1"), giftValue/10000]; - } - self.bWSttessSequencignation.text = value; -} - -- (UIView *)backgroundRegard { - if (!_backgroundRegard) { - _backgroundRegard = [[UIView alloc] init]; - _backgroundRegard.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.3]; - _backgroundRegard.layer.cornerRadius = 8; - _backgroundRegard.layer.masksToBounds = YES; - } - return _backgroundRegard; -} - -- (UIImageView *)figureIndicateRegard { - if (_figureIndicateRegard == nil) { - _figureIndicateRegard = [[UIImageView alloc] init]; - _figureIndicateRegard.userInteractionEnabled = YES; - _figureIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_position_giftValue_heart"]; - } - return _figureIndicateRegard; -} - -- (UILabel *)bWSttessSequencignation { - if (_bWSttessSequencignation == nil) { - _bWSttessSequencignation = [[UILabel alloc] init]; - _bWSttessSequencignation.textColor = UIColor.whiteColor; - _bWSttessSequencignation.font = [UIFont systemFontOfSize:10]; - _bWSttessSequencignation.text = @"0"; - } - return _bWSttessSequencignation; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MiecreoscoopeRegard.h b/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MiecreoscoopeRegard.h deleted file mode 100644 index 23156769..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MiecreoscoopeRegard.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// MiecreoscoopeRegard.h -// YUMI -// -// Created by YUMI on 2021/10/15. -// - -#import -#import -#import "MicroRegardCeremony.h" -#import "NetIndicateRegard.h" -#import "MiecreoscoopePresentStressRegard.h" - -@class MiecreoscoopePresentStressRegard, MiecreoscoopeWaveRegard; -NS_ASSUME_NONNULL_BEGIN -@interface MiecreoscoopeRegard : UIView -@property (nonatomic,strong, readonly) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong, readonly) UILabel *postionSequencignation; -@property (nonatomic,strong, readonly) UILabel *monicerSequencignation; -@property (nonatomic,strong, readonly) YYAnimatedImageView *intelligencePenetrateIndicateRegard; -@property (nonatomic,strong, readonly) MiecreoscoopePresentStressRegard *presentBWSttessRegard; -@property (nonatomic,strong, readonly) UILabel *leaveSequencignation; -@property (nonatomic,strong, readonly) UIImageView *loudspeakerDeclareIndicateRegard; -@property (nonatomic,strong, readonly) MiecreoscoopeWaveRegard *animationView; -@property (nonatomic,strong, readonly) UIImageView *seaxualityIndicateRegard; -@property (nonatomic, strong, readonly) UIStackView *stackView; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MiecreoscoopeRegard.m b/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MiecreoscoopeRegard.m deleted file mode 100644 index 930c2437..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MiecreoscoopeRegard.m +++ /dev/null @@ -1,683 +0,0 @@ -// -// MiecreoscoopeRegard.m -// YUMI -// -// Created by YUMI on 2021/10/15. -// - -#import "MiecreoscoopeRegard.h" -#import -#import -#import "MiecreoscoopeWaveRegard.h" -#import "NetIndicateRegard.h" -#import "MiecreoscoopeMagnificentWaveRegard.h" -#import "YUMIChamberAcceptTool.h" -#import "YUMIHtmlUrl.h" -#import "ThemeColor+Room.h" -#import "XCCurrentVCStackExecutive.h" -#import "YUMITissueRegardGovernancer.h" -#import "SpriteSheetIndicateExecutive.h" -#import "YUMIMacroUitls.h" -#import "UIImage+Utils.h" -#import "ClientDisposition.h" -#import "ChamberAcceptAbstractMatrix.h" - -#define kScpaces 13 - -@interface MiecreoscoopeRegard () -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UIImageView *loudspeakerDeclareIndicateRegard; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UILabel *postionSequencignation; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UIImageView *seaxualityIndicateRegard; -@property (nonatomic,strong) MiecreoscoopeWaveRegard *animationView; -@property (nonatomic, strong) MiecreoscoopeMagnificentWaveRegard *magnificentWaveRegard; -@property (nonatomic,strong) UILabel *leaveSequencignation; -@property (nonatomic,strong) MiecreoscoopePresentStressRegard *presentBWSttessRegard; -@property (nonatomic, strong) UIImageView *forbidKickRegard; -@property (nonatomic,strong) MiecreoscoopeMHTueueMatrix *miecreoscoopeMatrix; -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@property (nonatomic,strong) ChamberAbstractMatrix *roomInfo; -@property (nonatomic,strong) UIImageView *positionFascinationIndiRegard; -@property (nonatomic,strong) YYAnimatedImageView *intelligencePenetrateIndicateRegard; -@property (nonatomic, strong) UIImageView *acceptIndicateRegard; -@property (nonatomic,strong) UIButton *groupGenreBtuton; -@property (nonatomic, strong) SpriteSheetIndicateExecutive *manager; -@property (nonatomic,strong) NSMutableDictionary *micQueue; -@end - - -@implementation MiecreoscoopeRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { - UIView *view = [super hitTest:point withEvent:event]; - if (!view) { - - CGPoint newPoint = [self.presentBWSttessRegard convertPoint:point fromView:self]; - - if (CGRectContainsPoint(self.presentBWSttessRegard.bounds, newPoint)) { - view = self.presentBWSttessRegard; - } - } - return view; -} - -- (void)layoutSubviews { - self.intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - self.intelligenceportraitIndicateRegard.layer.cornerRadius = self.frame.size.width / 2; -} - -- (void)initSubViews { - [self addSubview:self.magnificentWaveRegard]; - [self addSubview:self.animationView]; - [self addSubview:self.intelligenceportraitIndicateRegard]; - [self addSubview:self.intelligencePenetrateIndicateRegard]; - [self addSubview:self.positionFascinationIndiRegard]; - [self addSubview:self.loudspeakerDeclareIndicateRegard]; - [self addSubview:self.forbidKickRegard]; - [self addSubview:self.presentBWSttessRegard]; - [self addSubview:self.acceptIndicateRegard]; - [self addSubview:self.groupGenreBtuton]; - - [self addSubview:self.stackView]; - [self.stackView addArrangedSubview:self.postionSequencignation]; - [self.stackView addArrangedSubview:self.monicerSequencignation]; - [self.stackView addArrangedSubview:self.seaxualityIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.magnificentWaveRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.width.height.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_width).multipliedBy(1.4); - }]; - [self.animationView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.intelligenceportraitIndicateRegard); - }]; - - [self.intelligencePenetrateIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.width.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_width).multipliedBy(1.31); - make.height.mas_equalTo(self.intelligencePenetrateIndicateRegard.mas_width); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.height.mas_equalTo(self.mas_width); - }]; - - [self.loudspeakerDeclareIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.intelligenceportraitIndicateRegard); - }]; - [self.forbidKickRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.width.height.mas_equalTo(18); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_bottom).offset(10); - }]; - - [self.postionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(14); - }]; - - [self.presentBWSttessRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(16); - make.top.mas_equalTo(self.stackView.mas_bottom).mas_offset(5); - make.centerX.mas_equalTo(self.intelligenceportraitIndicateRegard); - }]; - - [self.acceptIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.width.height.mas_equalTo(80); - }]; - - [self.groupGenreBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(38, 16)); - make.centerX.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard); - }]; - - [self.positionFascinationIndiRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.equalTo(self.intelligenceportraitIndicateRegard).multipliedBy(1.4); - make.center.equalTo(self.intelligenceportraitIndicateRegard); - }]; -} - -- (UIView *)acquireIntelligenceportraitRegard { - return self.intelligenceportraitIndicateRegard; -} - -- (UIImage *)combineIndictowardseInSole:(ChamberAcceptDischargeAbstractMatrix *)acceptAbstract { - CGSize size = CGSizeMake(80, 80); - UIImage *result; - NSInteger faceCount = acceptAbstract.resultIndexes.count > 9 ? 9 : acceptAbstract.resultIndexes.count; - CGFloat x = 0; - CGFloat y = 0; - CGFloat width = 60; - CGFloat height = 60; - CGFloat spaceX3 = 0; - CGFloat spaceX2 = (size.width - width * 2) / 2; - CGFloat spaceX1 = (size.width - width) / 2; - CGFloat spaceY3 = 0; - CGFloat spaceY2 = (size.height - height * 2) / 2; - CGFloat spaceY1 = (size.height - height) / 2; - y = faceCount > 6 ? spaceY3 : (faceCount >= 3 ? spaceY2 : spaceY1); - x = faceCount % 3 == 0 && faceCount > 3 ? spaceX3 : (faceCount % 3 == 2 ? spaceX2 : spaceX1); - UIGraphicsBeginImageContextWithOptions(size, NO, [UIScreen mainScreen].scale); - for (int i = 0; i < faceCount; i++) { - NSInteger index = [acceptAbstract.resultIndexes[i] integerValue]; - ChamberAcceptAbstractMatrix *faceModel = [[YUMIChamberAcceptTool partowardsiciptowardsionAcceptUtensil] prohibiticoveryAcceptAbstractById:acceptAbstract.faceId]; - UIImage *singleImage = [[YUMIChamberAcceptTool partowardsiciptowardsionAcceptUtensil] prohibiticoveryAcceptIndictowardseById:acceptAbstract.faceId index:index]; - - if (faceCount == 1) { - return singleImage; - break; - } - - if (faceModel.displayType == FaceDisplayGenre_Flow) { - [singleImage drawInRect:CGRectMake(x, y, width, height)]; - if (i % 3 == 0) { - y += (height + spaceY3); - x = spaceX3; - } - else if (i == 2 && faceCount == 3) { - y += (height + spaceY3); - x = spaceX2; - } - else { - x += (width + spaceX3); - } - }else if (faceModel.displayType == FaceDisplayGenre_OverLay) { - CGFloat whBit = singleImage.size.width / singleImage.size.height; - width = size.width - (acceptAbstract.resultIndexes.count - 1) * kScpaces; - height = width / whBit; - x = 0 + i * kScpaces; - y = size.height / 2 - height / 2; - [singleImage drawInRect:CGRectMake(x, y, width, height)]; - } - } - result = UIGraphicsGetImageFromCurrentImageContext(); - UIGraphicsEndImageContext(); - return result; -} - -#pragma mark - MicroRegardCeremony -- (void)EvidenceDepartureManner:(BOOL)isLeaveMode { - if (isLeaveMode) { - [self insertSubview:self.leaveSequencignation belowSubview:self.presentBWSttessRegard]; - [self.leaveSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.intelligenceportraitIndicateRegard); - }]; - } else { - if ([self.subviews containsObject:self.leaveSequencignation]) { - [self.leaveSequencignation removeFromSuperview]; - } - } -} - -- (void)consumerSpeaking { - ConsumerAbstractMatrix * userInfo = self.miecreoscoopeMatrix.userInfo; - if (!userInfo.micCircle.length) { - [self.animationView inititowardseSurgeBrectifyness]; - return; - } - [self.magnificentWaveRegard inititowardseSurgeBrectifynessAboutWeebsite:userInfo.micCircle]; -} - -- (void)EvidenceingAccept:(ChamberAcceptDischargeAbstractMatrix *)receiveInfo{ - [self.acceptIndicateRegard.layer removeAnimationForKey:@"face"]; - UIImage * result; - if (receiveInfo.resultIndexes.count > 0) { - result = [self combineIndictowardseInSole:receiveInfo]; - receiveInfo.resultImage = result; - } - ChamberAcceptAbstractMatrix *dispositionAbstract = [[YUMIChamberAcceptTool partowardsiciptowardsionAcceptUtensil] prohibiticoveryAcceptAbstractById:receiveInfo.faceId]; - if (receiveInfo.resultIndexes.count > 0) { - - CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"contents"]; - animation.duration = dispositionAbstract.animDuration / 1000.0; - animation.delegate = self; - animation.repeatCount = dispositionAbstract.animRepeatCount; - animation.removedOnCompletion = YES; - animation.calculationMode = kCAAnimationDiscrete; - - - NSMutableArray *faceArray = [NSMutableArray array]; - - for (int i = (short)dispositionAbstract.animStartPos; i <= (short)dispositionAbstract.animEndPos; i ++) { - UIImage *image = [[YUMIChamberAcceptTool partowardsiciptowardsionAcceptUtensil] prohibiticoveryAcceptIndictowardseById:receiveInfo.faceId index:i]; - if (image) { - CGImageRef cgimg = image.CGImage; - [faceArray addObject:(__bridge UIImage *)cgimg]; - }else { - break; - } - - } - if (faceArray.count > 0) { - animation.values = faceArray; - }else { - return; - } - - CAKeyframeAnimation *resultAnimation = [CAKeyframeAnimation animationWithKeyPath:@"contents"]; - resultAnimation.duration = 3; - resultAnimation.delegate = self; - resultAnimation.beginTime = dispositionAbstract.animRepeatCount * dispositionAbstract.animDuration / 1000.0; - - NSMutableArray *resultArray = [NSMutableArray array]; - - if (receiveInfo.resultImage) { - [resultArray addObject:(__bridge UIImage *)receiveInfo.resultImage.CGImage]; - }else { - return; - } - if (resultArray.count > 0) { - resultAnimation.values = resultArray; - }else { - return; - } - - resultAnimation.removedOnCompletion = YES; - - CAAnimationGroup *group = [CAAnimationGroup animation]; - group.animations = @[animation,resultAnimation]; - group.duration = 3 + (dispositionAbstract.animDuration / 1000.0) * dispositionAbstract.animRepeatCount; - group.delegate = self; - [self.acceptIndicateRegard.layer addAnimation:group forKey:@"face"]; - } else { - - - CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"contents"]; - animation.duration = dispositionAbstract.animDuration / 1000.0; - animation.delegate = self; - animation.repeatCount = dispositionAbstract.animRepeatCount; - animation.removedOnCompletion = YES; - animation.calculationMode = kCAAnimationDiscrete; - - NSMutableArray *faceArray = [NSMutableArray array]; - - for (int i = (short)dispositionAbstract.animStartPos; i <= (short)dispositionAbstract.animEndPos; i ++) { - UIImage *image = [[YUMIChamberAcceptTool partowardsiciptowardsionAcceptUtensil] prohibiticoveryAcceptIndictowardseById:receiveInfo.faceId index:i];; - if (image) { - CGImageRef cgimg = image.CGImage; - [faceArray addObject:(__bridge UIImage *)cgimg]; - }else { - break; - } - } - if (faceArray.count > 0) { - animation.values = [faceArray copy]; - [self.acceptIndicateRegard.layer addAnimation:animation forKey:@"face"]; - } - } -} - - -- (void)refurbishPolariztowardsionisHighPrototype:(BOOL)isHighLevel - isExhibit:(BOOL)isExhibit { - self.positionFascinationIndiRegard.hidden = !isExhibit; - if (isHighLevel) { - self.positionFascinationIndiRegard.image = [UIImage imageNamed:@"yumi_scope_game_position_mine"]; - }else { - self.positionFascinationIndiRegard.image = [UIImage imageNamed:@"yumi_scope_game_position_crown"]; - } -} - - -- (void)replacementPositonPrototypeApexknot{ - self.positionFascinationIndiRegard.hidden = YES; -} - - -- (void)prohibitipositionMiecreoscoopeRegard:(MiecreoscoopeMHTueueMatrix *)model { - self.miecreoscoopeMatrix = model; - MiecreoscoopeStateMatrix * micStats = model.microState; - ConsumerAbstractMatrix * userInfo = model.userInfo; - [self prohibitipositionMiecreoscoopeDeclare:micStats]; - [self prohibitipositionConsumer:userInfo]; -} - -- (void)prohibitipositionMiecreoscoopeDeclare:(MiecreoscoopeStateMatrix *)micState { - self.loudspeakerDeclareIndicateRegard.hidden = micState.micState == MiecreoscoopeLoudspeakerDeclareGenre_Open; - UIImage *image; - if (micState.posState == MiecreoscoopePosDeclareGenre_Free) { - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - image = [UIImage imageNamed:@"yumi_scope_position_normal"]; - }else{ - image = [UIImage imageNamed:@"yumi_scope_position_normal1"]; - } - } else { - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - image = [UIImage imageNamed:@"yumi_scope_position_lock"]; - }else{ - image = [UIImage imageNamed:@"yumi_scope_position_lock1"]; - } - } - CGSize scaledToSize = CGSizeMake(self.frame.size.width, self.frame.size.width); - UIGraphicsBeginImageContextWithOptions(scaledToSize, false, 0.0); - - [image drawInRect:CGRectMake(1, 1, scaledToSize.width - 2, scaledToSize.height - 2)]; - UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); - UIGraphicsEndImageContext(); - self.intelligenceportraitIndicateRegard.backgroundColor = [UIColor colorWithPatternImage:newImage]; - self.postionSequencignation.text = [NSString stringWithFormat:@"%d", micState.position + 1]; - if (self.roomInfo.type == ChamberGenre_Anchor || (self.roomInfo.roomModeType == ChamberModeGenre_Open_AcrossRoomPK_mode && self.roomInfo.roomId > 0) || (self.roomInfo.roomModeType == ChamberModeGenre_Open_Blind && micState.position == 999)) { - self.positionFascinationIndiRegard.hidden = YES; - } -} - -- (void)prohibitipositionConsumer:(ConsumerAbstractMatrix *)userInfo { - self.userInfo = userInfo; - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - self.monicerSequencignation.text = YMLocalizedString(@"Micro_View_0"); - self.postionSequencignation.hidden = NO; - } else { - self.monicerSequencignation.text = YMLocalizedString(@"Micro_View_1"); - self.postionSequencignation.hidden = YES; - } - self.monicerSequencignation.hidden = NO; - self.seaxualityIndicateRegard.hidden = YES; - self.forbidKickRegard.hidden = YES; - if (userInfo) { - self.intelligenceportraitIndicateRegard.imageUrl = userInfo.avatar; - if (userInfo.gender == GenderGenre_Male) { - [self.postionSequencignation setBackgroundColor:[DJDKMIMOMColor polariztowardsionMaleMonicerEncouragePrettify]]; - } else if(userInfo.gender == GenderGenre_Female){ - [self.postionSequencignation setBackgroundColor:[DJDKMIMOMColor polariztowardsionFemaleMonicerEncouragePrettify]]; - } - NSString *nickStr = userInfo.nick; - if (userInfo.nick.length > 5) { - nickStr = [NSString stringWithFormat:@"%@…", [userInfo.nick substringToIndex:5]]; - } - self.monicerSequencignation.text = nickStr.length > 0 ? nickStr : @""; - if (userInfo.micNickColor.length) { - self.monicerSequencignation.textColor = [self colorAboutHexBWSttr:userInfo.micNickColor]; - } else { - self.monicerSequencignation.textColor = [DJDKMIMOMColor polariztowardsionMonicerPrettify]; - } - if (self.miecreoscoopeMatrix.microState.position == -1) { - self.seaxualityIndicateRegard.hidden = NO; - self.postionSequencignation.hidden = YES; - self.seaxualityIndicateRegard.image = [UIImage imageNamed:userInfo.gender == GenderGenre_Male ? @"yumi_same_male" : @"yumi_same_female"]; - } - self.forbidKickRegard.hidden = !userInfo.preventKick; - } else { - self.monicerSequencignation.textColor = [DJDKMIMOMColor polariztowardsionMonicerPrettify]; - self.intelligenceportraitIndicateRegard.image = nil; - [self.postionSequencignation setBackgroundColor:[DJDKMIMOMColor polariztowardsionOrdinaryMonicerEncouragePrettify]]; - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - if (self.miecreoscoopeMatrix.microState.position == -1) { - self.monicerSequencignation.hidden = YES; - self.postionSequencignation.hidden = YES; - } - } else { - self.monicerSequencignation.hidden = YES; - } - } - NSString * headWearUrl = userInfo.headwearEffect.length ? userInfo.headwearEffect : userInfo.headWearUrl.length ? userInfo.headWearUrl : userInfo.headwearPic; - if (headWearUrl.length > 0 && !userInfo.vipMic) { - self.intelligencePenetrateIndicateRegard.hidden = NO; - NSURL *url = [NSURL URLWithString:userInfo.headWearUrl]; - @kWeakify(self); - [self.manager chamberSpriteSheetIndictowardseAboutWEEBSITE:url completionBlock:^(YYSpriteSheetImage * _Nullable sprit) { - @kStrongify(self); - self.intelligencePenetrateIndicateRegard.image = sprit; - } failureBlock:^(NSError * _Nullable error) { - }]; - } else { - self.intelligencePenetrateIndicateRegard.hidden = YES; - } - - if (self.miecreoscoopeMatrix.microState.position == -1) { - [self.presentBWSttessRegard removeFromSuperview]; - [self.stackView addArrangedSubview:self.presentBWSttessRegard]; - } - - self.groupGenreBtuton.hidden = YES; - if (self.roomInfo.roomModeType == ChamberModeGenre_Open_PK_Mode) { - if (userInfo.groupType == GroupGenre_Red) { - self.groupGenreBtuton.hidden = NO; - [self.groupGenreBtuton setTitle:YMLocalizedString(@"Micro_View_2") forState:UIControlStateNormal]; - [self.groupGenreBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFC4A95), UIColorFromRGB(0xFE6075)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } else if(userInfo.groupType == GroupGenre_Blue) { - self.groupGenreBtuton.hidden = NO; - [self.groupGenreBtuton setTitle:YMLocalizedString(@"Micro_View_3") forState:UIControlStateNormal]; - [self.groupGenreBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0x3571FE), UIColorFromRGB(0x7994FC)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } - } -} - -- (void)prohibitipositionPresentBWSttess:(long long)giftValue { - self.presentBWSttessRegard.giftValue = giftValue; -} - -- (void)EvidencePresentBWSttessManner:(BOOL)isGiftValue { - self.presentBWSttessRegard.hidden = !isGiftValue; -} - -- (void)replacementPresentBWSttess { - self.presentBWSttessRegard.giftValue = 0; -} - -- (void)prohibitipositionChamberAbstract:(ChamberAbstractMatrix *)roomInfo { - self.roomInfo = roomInfo; -} - -- (ChamberAbstractMatrix *)acquireChamberAbstract { - return self.roomInfo; -} - -- (void)prohibitipositionLoudspeakerInthecaseofmtowardsion:(NSMutableDictionary *)micQueue { - self.micQueue = micQueue; -} - - -- (NSMutableDictionary*)acquireMiecreoscoopeInthecaseofmtowardsion { - return self.micQueue; -} - - -#pragma mark - Event Response -- (void)betowardsPresentBWSttessRecognition { - if (self.presentBWSttessRegard.hidden) return; - if (self.userInfo && self.userInfo.uid > 0) { - YUMITissueRegardGovernancer * webVewC = [[YUMITissueRegardGovernancer alloc] init]; - webVewC.roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; - if (self.roomInfo.leaveMode && self.userInfo.uid == self.roomInfo.uid) { - webVewC.url = [NSString stringWithFormat:@"%@?uid=%ld", URLWithType(kRoomCharmRankURL), self.miecreoscoopeMatrix.userInfo.uid ? self.miecreoscoopeMatrix.userInfo.uid : self.roomInfo.uid]; - } else { - webVewC.url = [NSString stringWithFormat:@"%@?uid=%ld", URLWithType(kRoomCharmRankURL), self.miecreoscoopeMatrix.userInfo.uid]; - } - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:webVewC animated:YES]; - } -} - -- (UIColor *)colorAboutHexBWSttr: (NSString *) hexString { - NSString *colorString = [[hexString stringByReplacingOccurrencesOfString: @"#" withString: @""] uppercaseString]; - CGFloat alpha, red, blue, green; - alpha = 1.0f; - red = [self colorComponentByvirtueof: colorString start: 0 length: 2]; - green = [self colorComponentByvirtueof: colorString start: 2 length: 2]; - blue = [self colorComponentByvirtueof: colorString start: 4 length: 2]; - return [UIColor colorWithRed: red green: green blue: blue alpha: alpha]; -} - -- (CGFloat) colorComponentByvirtueof: (NSString *) string start: (NSUInteger) start length: (NSUInteger) length { - NSString *substring = [string substringWithRange: NSMakeRange(start, length)]; - NSString *fullHex = length == 2 ? substring : [NSString stringWithFormat: @"%@%@", substring, substring]; - unsigned hexComponent; - [[NSScanner scannerWithString: fullHex] scanHexInt: &hexComponent]; - return hexComponent / 255.0; -} - -#pragma mark - Getters And Setters -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] init]; - _intelligenceportraitIndicateRegard.userInteractionEnabled = YES; - } - return _intelligenceportraitIndicateRegard; -} - -- (UIImageView *)loudspeakerDeclareIndicateRegard { - if (!_loudspeakerDeclareIndicateRegard) { - _loudspeakerDeclareIndicateRegard = [[UIImageView alloc] init]; - _loudspeakerDeclareIndicateRegard.userInteractionEnabled = YES; - _loudspeakerDeclareIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_position_mute"]; - _loudspeakerDeclareIndicateRegard.hidden = YES; - } - return _loudspeakerDeclareIndicateRegard; -} - -- (UIImageView *)forbidKickRegard { - if (!_forbidKickRegard) { - _forbidKickRegard = [[UIImageView alloc] init]; - _forbidKickRegard.image = [UIImage imageNamed:@"yumi_scope_position_forbid_kicked"]; - _forbidKickRegard.hidden = YES; - } - return _forbidKickRegard; -} - -- (MiecreoscoopeWaveRegard *)animationView { - if (!_animationView) { - _animationView = [[MiecreoscoopeWaveRegard alloc] init]; - } - return _animationView; -} - -- (MiecreoscoopeMagnificentWaveRegard *)magnificentWaveRegard { - if (!_magnificentWaveRegard) { - _magnificentWaveRegard = [[MiecreoscoopeMagnificentWaveRegard alloc] init]; - } - return _magnificentWaveRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:11]; - _monicerSequencignation.textColor = [DJDKMIMOMColor polariztowardsionMonicerPrettify]; - _monicerSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _monicerSequencignation; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentCenter; - _stackView.spacing = 2; - } - return _stackView; -} - -- (UILabel *)postionSequencignation { - if (!_postionSequencignation) { - _postionSequencignation = [[UILabel alloc] init]; - _postionSequencignation.font = [UIFont systemFontOfSize:10]; - _postionSequencignation.textAlignment = NSTextAlignmentCenter; - _postionSequencignation.textColor = [UIColor colorWithWhite:1 alpha:1]; - _postionSequencignation.layer.masksToBounds = YES; - _postionSequencignation.layer.cornerRadius = 7; - [_postionSequencignation setBackgroundColor:[DJDKMIMOMColor polariztowardsionOrdinaryMonicerEncouragePrettify]]; - } - return _postionSequencignation; -} - -- (UIImageView *)seaxualityIndicateRegard { - if (!_seaxualityIndicateRegard) { - _seaxualityIndicateRegard = [[UIImageView alloc] init]; - _seaxualityIndicateRegard.userInteractionEnabled = YES; - _seaxualityIndicateRegard.hidden = YES; - } - return _seaxualityIndicateRegard; -} - -- (UILabel *)leaveSequencignation { - if (!_leaveSequencignation) { - _leaveSequencignation = [[UILabel alloc] init]; - _leaveSequencignation .text = YMLocalizedString(@"Micro_View_4"); - _leaveSequencignation .font = [UIFont systemFontOfSize:16]; - _leaveSequencignation .textColor = UIColor.whiteColor; - _leaveSequencignation.textAlignment = NSTextAlignmentCenter; - _leaveSequencignation.backgroundColor = [UIColor colorWithWhite:0 alpha:0.45]; - _leaveSequencignation.layer.cornerRadius = 50 * kScreenScale / 2; - _leaveSequencignation.layer.masksToBounds = YES; - _leaveSequencignation.userInteractionEnabled = YES; - } - return _leaveSequencignation ; -} - -- (MiecreoscoopePresentStressRegard *)presentBWSttessRegard { - if (!_presentBWSttessRegard) { - _presentBWSttessRegard = [[MiecreoscoopePresentStressRegard alloc] init]; - _presentBWSttessRegard.hidden = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(betowardsPresentBWSttessRecognition)]; - [_presentBWSttessRegard addGestureRecognizer:tap]; - } - return _presentBWSttessRegard; -} - -- (SpriteSheetIndicateExecutive *)manager { - if (!_manager) { - _manager = [[SpriteSheetIndicateExecutive alloc] init]; - } - return _manager; -} - -- (YYAnimatedImageView *)intelligencePenetrateIndicateRegard { - if (!_intelligencePenetrateIndicateRegard) { - _intelligencePenetrateIndicateRegard = [[YYAnimatedImageView alloc] init]; - _intelligencePenetrateIndicateRegard.backgroundColor = [UIColor clearColor]; - _intelligencePenetrateIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _intelligencePenetrateIndicateRegard; -} - -- (UIImageView *)acceptIndicateRegard { - if (!_acceptIndicateRegard) { - _acceptIndicateRegard = [[UIImageView alloc] init]; - _acceptIndicateRegard.backgroundColor = [UIColor clearColor]; - _acceptIndicateRegard.userInteractionEnabled = YES; - } - return _acceptIndicateRegard; -} - -- (UIButton *)groupGenreBtuton { - if (!_groupGenreBtuton) { - _groupGenreBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_groupGenreBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _groupGenreBtuton.titleLabel.font = [UIFont systemFontOfSize:9.0]; - _groupGenreBtuton.layer.masksToBounds = YES; - _groupGenreBtuton.layer.cornerRadius = 8; - } - return _groupGenreBtuton; -} - -- (UIImageView *)positionFascinationIndiRegard { - if (!_positionFascinationIndiRegard) { - _positionFascinationIndiRegard = [[UIImageView alloc] init]; - _positionFascinationIndiRegard.userInteractionEnabled = NO; - _positionFascinationIndiRegard.hidden = YES; - } - return _positionFascinationIndiRegard; -} - - - -@end diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MiecreoscoopeWaveRegard.h b/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MiecreoscoopeWaveRegard.h deleted file mode 100644 index f5d49699..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MiecreoscoopeWaveRegard.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// MiecreoscoopeWaveRegard.h -// YUMI -// -// Created by YUMI on 2021/10/20. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface MiecreoscoopeWaveRegard : UIView -- (void)inititowardseSurgeBrectifyness; - -- (void)suspeindSurgeBrectifyness; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MiecreoscoopeWaveRegard.m b/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MiecreoscoopeWaveRegard.m deleted file mode 100644 index fbfab3dc..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/MiecreoscoopeWaveRegard.m +++ /dev/null @@ -1,111 +0,0 @@ -// -// MiecreoscoopeWaveRegard.m -// YUMI -// -// Created by YUMI on 2021/10/20. -// - -#import "MiecreoscoopeWaveRegard.h" -#import -#import - -@interface MiecreoscoopeWaveRegard () -@property (nonatomic,strong) UIView * thresholdRegard; -@property (nonatomic,assign) BOOL isBrectifynessing; - -@end - -@implementation MiecreoscoopeWaveRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -- (void)layoutSubviews { - [super layoutSubviews]; - self.thresholdRegard.layer.cornerRadius = self.frame.size.width / 2; -} - -#pragma mark - Public Method -- (void)inititowardseSurgeBrectifyness { - if (self.isBrectifynessing) { - return; - } - self.isBrectifynessing = YES; - self.thresholdRegard.hidden = NO; - [self brectifynessAboutThickness:self.thresholdRegard]; - -} -- (void)suspeindSurgeBrectifyness { - self.isBrectifynessing = NO; - self.thresholdRegard.hidden = YES; - [self.thresholdRegard.layer removeAllAnimations]; -} - - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.thresholdRegard]; - self.thresholdRegard.hidden = YES; -} - - -- (void)initChildLyRestrictions { - [self.thresholdRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; -} - -- (void)brectifynessAboutThickness:(UIView *)view { - int animtionDura = 1; - POPBasicAnimation *animation2 = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerScaleXY]; - animation2.beginTime = CACurrentMediaTime(); - animation2.duration = animtionDura; - animation2.fromValue = [NSValue valueWithCGSize:CGSizeMake(1.f, 1.f)]; - animation2.toValue = [NSValue valueWithCGSize:CGSizeMake(1.4f, 1.4f)]; - - POPBasicAnimation *animation3 = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerOpacity]; - animation3.duration = 0.6 * animtionDura; - animation3.beginTime = CACurrentMediaTime(); - animation3.fromValue = @1.0; - animation3.toValue = @0.8; - animation3.repeatCount = 1; - animation3.removedOnCompletion = YES; - - POPBasicAnimation *animation4 = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerOpacity]; - animation4.duration = 0.4* animtionDura; - animation4.beginTime = CACurrentMediaTime() + 0.6 * animtionDura; - animation4.fromValue = @0.8; - animation4.toValue = @0.0; - animation4.repeatCount = 1; - animation4.removedOnCompletion = YES; - - if (view == self.thresholdRegard) { - [animation4 setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - self.isBrectifynessing = NO; - }]; - } - - [view.layer pop_addAnimation:animation2 forKey:@"animation2"]; - [view.layer pop_addAnimation:animation3 forKey:@"animation3"]; - [view.layer pop_addAnimation:animation4 forKey:@"animation4"]; - - -} -#pragma mark - Getters And Setters -- (UIView *)thresholdRegard { - if (!_thresholdRegard) { - _thresholdRegard = [[UIView alloc] init]; - _thresholdRegard.backgroundColor = [UIColor colorWithWhite:1 alpha:0.3]; - _thresholdRegard.layer.borderWidth = 1; - _thresholdRegard.layer.borderColor = [UIColor whiteColor].CGColor; - } - return _thresholdRegard; -} -@end diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/SocialMiecreoscoopeRegard.h b/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/SocialMiecreoscoopeRegard.h deleted file mode 100644 index 4d21e228..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/SocialMiecreoscoopeRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// SocialMiecreoscoopeRegard.h -// YUMI -// -// Created by YUMI on 2022/4/27. -// - -#import "MiecreoscoopeRegard.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface SocialMiecreoscoopeRegard : MiecreoscoopeRegard - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/SocialMiecreoscoopeRegard.m b/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/SocialMiecreoscoopeRegard.m deleted file mode 100644 index d36e2c32..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/MiecreoscoopeRegard/SocialMiecreoscoopeRegard.m +++ /dev/null @@ -1,62 +0,0 @@ -// -// SocialMiecreoscoopeRegard.m -// YUMI -// -// Created by YUMI on 2022/4/27. -// - -#import "SocialMiecreoscoopeRegard.h" -#import "ThemeColor+Room.h" -#import "ClientDisposition.h" -@interface SocialMiecreoscoopeRegard () - -@property (nonatomic, assign) NSInteger position; - -@end - -@implementation SocialMiecreoscoopeRegard - -- (void)prohibitipositionMiecreoscoopeRegard:(MiecreoscoopeMHTueueMatrix *)model { - self.position = model.microState.position; - [super prohibitipositionMiecreoscoopeRegard:model]; - MiecreoscoopeStateMatrix * micState = model.microState; - ConsumerAbstractMatrix * userInfo = model.userInfo; - - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild && userInfo == nil && micState.position == 7) { - self.monicerSequencignation.text = YMLocalizedString(@"Social_Micro_View_0"); - } - UIImage *image; - if (micState.posState == MiecreoscoopePosDeclareGenre_Free) { - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - image = [UIImage imageNamed:@"yumi_scope_position_normal"]; - }else{ - image = [UIImage imageNamed:@"yumi_scope_position_normal1"]; - } - } else { - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - image = [UIImage imageNamed:@"yumi_scope_position_lock"]; - }else{ - image = [UIImage imageNamed:@"yumi_scope_position_lock1"]; - } - } - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild && micState.position == 7 && self.acquireChamberAbstract.roomModeType != ChamberModeGenre_Open_PK_Mode) { - image = [UIImage imageNamed:@"yumi_scope_position_boss"]; - } - CGSize scaledToSize = CGSizeMake(self.frame.size.width, self.frame.size.width); - UIGraphicsBeginImageContextWithOptions(scaledToSize, false, 0.0); - - [image drawInRect:CGRectMake(1, 1, scaledToSize.width - 2, scaledToSize.height - 2)]; - UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); - UIGraphicsEndImageContext(); - self.intelligenceportraitIndicateRegard.backgroundColor = [UIColor colorWithPatternImage:newImage]; -} - -- (void)prohibitipositionConsumer:(ConsumerAbstractMatrix *)userInfo { - [super prohibitipositionConsumer:userInfo]; - if (self.position == 7) { - [self.postionSequencignation setBackgroundColor:[DJDKMIMOMColor polariztowardsionBossEncourageConcludePrettify]]; - - } -} - -@end diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/Model/MiecreoscoopeCallforExtMatrix.h b/YuMi/Modules/YMRoom/View/PhaseRegard/Model/MiecreoscoopeCallforExtMatrix.h deleted file mode 100644 index de32c029..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/Model/MiecreoscoopeCallforExtMatrix.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// MiecreoscoopeCallforExtMatrix.h -// YUMI -// -// Created by YUMI on 2022/5/12. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface MiecreoscoopeCallforExtMatrix : NSObject - -@property (nonatomic, copy) NSString *uid; - -@property (nonatomic, copy) NSString *micPosition; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/Model/MiecreoscoopeCallforExtMatrix.m b/YuMi/Modules/YMRoom/View/PhaseRegard/Model/MiecreoscoopeCallforExtMatrix.m deleted file mode 100644 index 347b42a1..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/Model/MiecreoscoopeCallforExtMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// MiecreoscoopeCallforExtMatrix.m -// YUMI -// -// Created by YUMI on 2022/5/12. -// - -#import "MiecreoscoopeCallforExtMatrix.h" - -@implementation MiecreoscoopeCallforExtMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/Model/MiecreoscoopeExtMatrix.h b/YuMi/Modules/YMRoom/View/PhaseRegard/Model/MiecreoscoopeExtMatrix.h deleted file mode 100644 index 699e16d6..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/Model/MiecreoscoopeExtMatrix.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// MiecreoscoopeExtMatrix.h -// YUMI -// -// Created by YUMI on 2022/1/18. -// - -#import -#import "YUMINNNN.h" -#import "ConsumerVipAbstractVo.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface MiecreoscoopeExtMatrix : NSObject -@property (nonatomic,assign) GenderGenre gender; -@property (nonatomic,copy) NSString *avatar; -@property (nonatomic,assign) NSInteger uid; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,copy) NSString *headWearUrl; -@property (nonatomic,assign) BOOL vipMic; -@property (nonatomic, copy) NSString *micCircle; -@property (nonatomic, copy) NSString *micNickColor; -@property (nonatomic, assign) LittleGameDisportPosition gameStatus; -@property (nonatomic, assign) BOOL preventKick; -@property (nonatomic, assign) BOOL enterHide; -@property (nonatomic,assign) GroupGenre groupType; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/Model/MiecreoscoopeExtMatrix.m b/YuMi/Modules/YMRoom/View/PhaseRegard/Model/MiecreoscoopeExtMatrix.m deleted file mode 100644 index e21ac978..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/Model/MiecreoscoopeExtMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// MiecreoscoopeExtMatrix.m -// YUMI -// -// Created by YUMI on 2022/1/18. -// - -#import "MiecreoscoopeExtMatrix.h" - -@implementation MiecreoscoopeExtMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/Model/MiecreoscoopeMHTueueMatrix.h b/YuMi/Modules/YMRoom/View/PhaseRegard/Model/MiecreoscoopeMHTueueMatrix.h deleted file mode 100644 index 5d2a3da9..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/Model/MiecreoscoopeMHTueueMatrix.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// MiecreoscoopeMHTueueMatrix.h -// YUMI -// -// Created by YUMI on 2021/10/21. -// - -#import "NSObject+MJExtension.h" -#import "MiecreoscoopeStateMatrix.h" -NS_ASSUME_NONNULL_BEGIN -@class ConsumerAbstractMatrix; -@interface MiecreoscoopeMHTueueMatrix : NSObject -@property (nonatomic, strong) MiecreoscoopeStateMatrix *microState; -@property (nonatomic, strong, nullable) ConsumerAbstractMatrix *userInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/Model/MiecreoscoopeMHTueueMatrix.m b/YuMi/Modules/YMRoom/View/PhaseRegard/Model/MiecreoscoopeMHTueueMatrix.m deleted file mode 100644 index 9d2ecd2d..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/Model/MiecreoscoopeMHTueueMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// MiecreoscoopeMHTueueMatrix.m -// YUMI -// -// Created by YUMI on 2021/10/21. -// - -#import "MiecreoscoopeMHTueueMatrix.h" - -@implementation MiecreoscoopeMHTueueMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/Model/MiecreoscoopeStateMatrix.h b/YuMi/Modules/YMRoom/View/PhaseRegard/Model/MiecreoscoopeStateMatrix.h deleted file mode 100644 index bc43d92f..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/Model/MiecreoscoopeStateMatrix.h +++ /dev/null @@ -1,37 +0,0 @@ -// -// MiecreoscoopeStateMatrix.h -// YUMI -// -// Created by YUMI on 2021/10/21. -// - -#import "NSObject+MJExtension.h" - -NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSInteger, MiecreoscoopePosDeclareGenre) { - MiecreoscoopePosDeclareGenre_Free = 0, - MiecreoscoopePosDeclareGenre_Lock = 1, -}; - -typedef NS_ENUM(NSInteger, MiecreoscoopeLoudspeakerDeclareGenre) { - MiecreoscoopeLoudspeakerDeclareGenre_Open = 0, - MiecreoscoopeLoudspeakerDeclareGenre_Close = 1, -}; - -typedef NS_ENUM(NSUInteger, DatingLoudspeakerGenre) { - - DatingLoudspeakerGenre_Other = 0, - - DatingLoudspeakerGenre_Male = 1, - - DatingLoudspeakerGenre_Female = 2, -}; - -@interface MiecreoscoopeStateMatrix : NSObject -@property (nonatomic, assign) int position; -@property (nonatomic, assign) MiecreoscoopePosDeclareGenre posState; -@property (nonatomic, assign) MiecreoscoopeLoudspeakerDeclareGenre micState; -@property (nonatomic,assign) DatingLoudspeakerGenre datingMicType; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/Model/MiecreoscoopeStateMatrix.m b/YuMi/Modules/YMRoom/View/PhaseRegard/Model/MiecreoscoopeStateMatrix.m deleted file mode 100644 index 34e77b27..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/Model/MiecreoscoopeStateMatrix.m +++ /dev/null @@ -1,21 +0,0 @@ -// -// MiecreoscoopeStateMatrix.m -// YUMI -// -// Created by YUMI on 2021/10/21. -// - -#import "MiecreoscoopeStateMatrix.h" - -@implementation MiecreoscoopeStateMatrix - -- (instancetype)init { - self = [super init]; - if (self) { - _posState = MiecreoscoopePosDeclareGenre_Free; - _micState = MiecreoscoopeLoudspeakerDeclareGenre_Open; - } - return self; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/PhaseRegard.h b/YuMi/Modules/YMRoom/View/PhaseRegard/PhaseRegard.h deleted file mode 100644 index 6f9884c1..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/PhaseRegard.h +++ /dev/null @@ -1,55 +0,0 @@ -// -// PhaseRegard.h -// YUMI -// -// Created by zu on 2021/10/25. -// - -#import -#import "ChamberHostRepresendtation.h" -#import "ChamberGuestRepresendtation.h" -#import "MicroRegardCeremony.h" - -NS_ASSUME_NONNULL_BEGIN - -@class MiecreoscoopeMHTueueMatrix; - -@protocol StageRegardRepresendtation - -- (NSInteger)computtowardsionHLOfMircoRegard; - -- (CGFloat)hightInthecaseofPhaseRegard; - -- (UIView *)miecreoscoopeRegardInthecaseofIndictowardsrix:(NSInteger)index; - -- (CGRect)rectInthecaseofRegardTowardsIndictowardsrix:(NSInteger)index; - -- (void)didChosenTowardsIndictowardsrix:(NSInteger)index; -@end - -@protocol StageRegardCeremony - -- (NSInteger)polariztowardsionToIndictowardsrix:(NSString*)position; - -- (NSString *)indexToPolariztowardsion:(NSInteger)index; - -- (NSInteger)acquireIndictowardsrixByCid:(NSString *)uid; - -- (MiecreoscoopeMHTueueMatrix *)prohibiticoveryMiecreoscoopeAbstractByCid:(NSString *)uid; - -- (UIView *)prohibiticoveryMiecreoscoopeRegardByCid:(NSString *)uid; - -- (UIView *)prohibiticoveryMiecreoscoopeRegardByIndictowardsrix:(NSInteger)index; - -- (UIView *)prohibiticoveryMiecreoscoopeRegardByPolariztowardsion:(NSString *)position; -@end - -@interface PhaseRegard : UIView - -@property (nonatomic, weak, readonly) id hostRepresedtation; - -- (instancetype)initWithDelegate:(id)delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/PhaseRegard.m b/YuMi/Modules/YMRoom/View/PhaseRegard/PhaseRegard.m deleted file mode 100644 index 01650918..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/PhaseRegard.m +++ /dev/null @@ -1,853 +0,0 @@ -// -// PhaseRegard.m -// YUMI -// -// Created by zu on 2021/10/25. -// - -#import "PhaseRegard.h" -#import -#import -#import -#import "RealtimackExecutive.h" -#import "RtcRepresendtation.h" -#import "MKJPopup.h" -#import "YUMIMacroUitls.h" -#import "YUMIPresentStorage.h" -#import "XNDJTBWGLoadingTool.h" -#import "Api+Room.h" -#import "AccountAbstractStorage.h" -#import "YUMIChamberMiniExecutive.h" -#import "StatsticsticsServingFacilitater.h" -#import "NSArray+Safe.h" -#import "ClientDisposition.h" -#import "ChamberAbstractMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "MiecreoscoopeStateMatrix.h" -#import "MiecreoscoopeMHTueueMatrix.h" -#import "AttachmentMatrix.h" -#import "PresentAchieveAbstractMatrix.h" -#import "PresentStressAbstractMatrix.h" -#import "MiecreoscoopeExtMatrix.h" -#import "ChamberAcceptDischargeAbstractMatrix.h" -#import "MiecreoscoopeCallforExtMatrix.h" -#import "ChamberCombatChooseConsumerMatrix.h" -#import "NetIndicateRegard.h" -#import "YUMIConsumerSolitaireRegardGovernancer.h" -#import "YUMIChamberCallforConsumerRegardGovernancer.h" - -@interface PhaseRegard() - - -@property (nonatomic, strong) NSMutableArray *miecreoscoopeRegards; -@property (nonatomic, strong) NSMutableDictionary *micQueue; - -@property (nonatomic, weak) id hostRepresedtation; - -@property (nonatomic,assign) BOOL isRoadliceImport; - -@property (nonatomic, assign) BOOL isUpwardsingLoudspeaker; -@property (nonatomic, assign) BOOL possessAcquireFormationAbstractSuccess; - -@end - -@implementation PhaseRegard - -- (instancetype)initWithDelegate:(id)delegate { - self = [super init]; - if (self) { - _hostRepresedtation = delegate; - _isRoadliceImport = NO; - NSInteger microCount = self.computtowardsionHLOfMircoRegard; - for (int i = 0; i < microCount; i++) { - UIView* microView = [self miecreoscoopeRegardInthecaseofIndictowardsrix:i]; - if (microView) { - microView.tag = i; - microView.frame = [self rectInthecaseofRegardTowardsIndictowardsrix:i]; - [self addSubview:microView]; - UITapGestureRecognizer* tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(miecreoscoopeRegardBetowardslictowardsioned:)]; - [microView addGestureRecognizer:tap]; - [self.miecreoscoopeRegards insertObject:microView atIndex:i]; - } - } - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(self.hightInthecaseofPhaseRegard); - }]; - - if (_hostRepresedtation.acquireChamberAbstract) { - [self initRtc]; - [self initNEMCMiecreoscoopeInthecaseofmtowardsions]; - } else { - [self miecreoscoopeInthecaseofmtowardsionRefurbishd:NO]; - } - } - return self; -} - -#pragma mark - init functions - -- (void)initRtc { - ChamberAbstractMatrix* roomInfo = self.hostRepresedtation.acquireChamberAbstract; - - RtcEngineType type; - if ([roomInfo.audioSdkType isEqualToString:@"wujie"]) { - type = RtcEngineType_WJ; - } else if ([roomInfo.audioSdkType isEqualToString:@"zego"]) { - type = RtcEngineType_Zego; - } else if ([roomInfo.audioSdkType isEqualToString:@"trtc"]) { - type = RtcEngineType_TRTC; - } else { - type = RtcEngineType_Agora; - } - [RealtimackExecutive initEngineAboutGenre:type delegate:self]; - switch (type) { - - case RtcEngineType_TRTC: - { - NSInteger roomId = roomInfo.roomId > INT_MAX ? roomInfo.uid : roomInfo.roomId; - [[RealtimackExecutive instance] enterRoom:[NSString stringWithFormat:@"%ld", roomId] trtcSign:roomInfo.trtcSig]; - } - break; - - default: - [[RealtimackExecutive instance] enterRoom:[NSString stringWithFormat:@"%ld", (long)roomInfo.roomId]]; - break; - } -} - -- (void)initNEMCMiecreoscoopeInthecaseofmtowardsions { - ChamberAbstractMatrix* roomInfo = self.hostRepresedtation.acquireChamberAbstract; - - [[NIMSDK sharedSDK].chatroomManager fetchChatroomInfo:[NSString stringWithFormat:@"%ld", (long)roomInfo.roomId] completion:^(NSError * _Nullable error, NIMChatroom * _Nullable chatroom) { - if (error) { - return; - } - NSDictionary *info = (NSDictionary *)[chatroom.ext toJSONGroal]; - NSDictionary *micState = [info[@"micQueue"] toJSONGroal]; - for (NSString *position in micState.allKeys) { - MiecreoscoopeStateMatrix *state = [MiecreoscoopeStateMatrix mtowardsrixAboutJSON:micState[position]]; - MiecreoscoopeMHTueueMatrix *sequence = [self.micQueue objectForKey:position]; - sequence.microState = state; - } - [self miecreoscoopeInthecaseofmtowardsionRefurbishd: NO]; - }]; - self.possessAcquireFormationAbstractSuccess = NO; - - [[NIMSDK sharedSDK].chatroomManager fetchChatroomQueue:[NSString stringWithFormat:@"%ld", (long)roomInfo.roomId] completion:^(NSError * _Nullable error, NSArray *> * _Nullable info) { - if (error) return; - BOOL ownerRTCChange = NO; - for (NSDictionary *item in info) { - ConsumerAbstractMatrix *userInfo = [ConsumerAbstractMatrix mtowardsrixAboutJSON:item.allValues.firstObject]; - NSString *position = item.allKeys.firstObject; - MiecreoscoopeMHTueueMatrix *sequence = [self.micQueue objectForKey:position]; - sequence.userInfo = userInfo; - if (userInfo.uid == [AccountAbstractStorage instance].acquireCid.integerValue) { - ownerRTCChange = YES; - } - } - [self miecreoscoopeInthecaseofmtowardsionRefurbishd:ownerRTCChange]; - [self.hostRepresedtation onMiecreoscoopeInthecaseofmtowardsionRefurbish:self.micQueue]; - self.possessAcquireFormationAbstractSuccess = YES; - }]; - - - [self initPresentBWSttess]; -} - -- (void)initPresentBWSttess{ - ChamberAbstractMatrix* roomInfo = self.hostRepresedtation.acquireChamberAbstract; - - [Api chamberMiecreoscoopePresentBWSttess:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - [self presentBWSttessRefurbish:data.data]; - } - } roomUid:[NSString stringWithFormat:@"%ld", roomInfo.uid] uid:[AccountAbstractStorage instance].acquireCid]; -} - -#pragma mark - update views as data changed - -- (void)miecreoscoopeInthecaseofmtowardsionRefurbishd:(BOOL)isHandleRTC { - BOOL selfNeedBroadcast = NO; - ChamberAbstractMatrix * roomInfo = self.hostRepresedtation.acquireChamberAbstract; - if (![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - roomInfo.showGiftValue = NO; - } - BOOL leaveMode = roomInfo.leaveMode; - NSMutableArray *statisMicArray = [NSMutableArray array]; - for (int i = 0; i < self.computtowardsionHLOfMircoRegard; i++) { - MiecreoscoopeMHTueueMatrix * model = [self.micQueue objectForKey:[self indexToPolariztowardsion:i]]; - - UIView * view = [self prohibiticoveryMiecreoscoopeRegardByIndictowardsrix:i]; - [view prohibitipositionChamberAbstract:roomInfo]; - [view prohibitipositionLoudspeakerInthecaseofmtowardsion:self.micQueue]; - [view prohibitipositionMiecreoscoopeRegard:model]; - [view EvidenceDepartureManner:i == 0 && leaveMode]; - if (leaveMode && i == 0) { - if (!roomInfo.showGiftValue) { - [view replacementPresentBWSttess]; - } - } else { - if (model.userInfo == nil || !roomInfo.showGiftValue) [view replacementPresentBWSttess]; - } - [view EvidencePresentBWSttessManner:roomInfo.showGiftValue]; - if (self.hostRepresedtation.getUserInfo.uid && model.userInfo.uid == self.hostRepresedtation.getUserInfo.uid) { - selfNeedBroadcast = model.microState.micState == MiecreoscoopeLoudspeakerDeclareGenre_Open; - if (model.microState.micState == MiecreoscoopeLoudspeakerDeclareGenre_Close) { - [RealtimackExecutive instance].localDelicate = YES; - } - if (roomInfo.type == ChamberGenre_Anchor && [[AccountAbstractStorage instance].acquireCid isEqualToString:[NSString stringWithFormat:@"%ld", roomInfo.uid]]) { - selfNeedBroadcast = YES; - } - } - if (model.userInfo) { - NSString *str = [NSString stringWithFormat:@"micIndex:%d,uid:%ld", i, model.userInfo.uid]; - [statisMicArray addObject:str]; - } - } - if (statisMicArray.count) { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_mike_show eventAttributes:@{@"roomMicShow": statisMicArray.toJSONBWSttr}]; - } - if (leaveMode) { - ConsumerAbstractMatrix *owner = [[ConsumerAbstractMatrix alloc] init]; - owner.avatar = roomInfo.avatar; - owner.nick = roomInfo.nick; - owner.uid = roomInfo.uid; - owner.gender = roomInfo.gender; - UIView *ownerView = [self prohibiticoveryMiecreoscoopeRegardByIndictowardsrix:0]; - [ownerView prohibitipositionConsumer:owner]; - } - - if (self.isRoadliceImport || !isHandleRTC) { - return; - } - [[RealtimackExecutive instance] pingencourage:selfNeedBroadcast]; -} - -- (void)presentBWSttessRefurbish:(NSDictionary *)dic { - PresentStressAbstractMatrix * model = [PresentStressAbstractMatrix mtowardsrixAboutImpactbasket:dic]; - for (int i = 0; i < model.giftValueVos.count; i++) { - PresentStressSpecificMatrix * giftValueModel = [model.giftValueVos secureGroalTowardsIndictowardsrix1:i]; - UIView * view = [self prohibiticoveryMiecreoscoopeRegardByCid:giftValueModel.uid]; - if (self.hostRepresedtation.acquireChamberAbstract.leaveMode && giftValueModel.uid.integerValue == self.hostRepresedtation.acquireChamberAbstract.uid) { - view = [self prohibiticoveryMiecreoscoopeRegardByIndictowardsrix:0]; - } - if (view == nil) continue; - [view prohibitipositionPresentBWSttess:giftValueModel.giftValue]; - } - [self refurbishPostionProvisionAboutChamberOnLoudspeakerPresentBWSttess:model]; -} - - -- (void)refurbishPostionProvisionAboutChamberOnLoudspeakerPresentBWSttess:(PresentStressAbstractMatrix *)roomOnMicGiftValue{ - if (self.hostRepresedtation.acquireChamberAbstract.type == ChamberGenre_Anchor || self.hostRepresedtation.acquireChamberAbstract.roomModeType == ChamberModeGenre_Open_Blind) return; - - NSMutableArray *validGifts = [NSMutableArray array]; - for (PresentStressSpecificMatrix *value in roomOnMicGiftValue.giftValueVos) { - if (value.giftValue > 0) { - [validGifts addObject:value]; - } - } - if (validGifts.count == 0) return; - NSMutableArray *newOnMicGifts = [NSMutableArray array]; - - for (PresentStressSpecificMatrix *value in validGifts) { - for (MiecreoscoopeMHTueueMatrix *item in self.micQueue.allValues) { - BOOL isOwnerPosition = item.microState.position == -1; - if (!isOwnerPosition && item.userInfo.uid == value.uid.integerValue) { - [newOnMicGifts addObject:value]; - } - } - } - if (newOnMicGifts.count == 0) return; - - NSSortDescriptor *giftValueSortD = [NSSortDescriptor sortDescriptorWithKey:@"giftValue" ascending:NO]; - NSArray *giftValuesSortArray = [[newOnMicGifts sortedArrayUsingDescriptors:@[giftValueSortD]] mutableCopy]; - NSString *highest = nil; - NSString *lowest = nil; - NSInteger sortArrayCount = giftValuesSortArray.count; - if (sortArrayCount == 1) { - highest = giftValuesSortArray.firstObject.uid; - }else if (sortArrayCount == 2) { - if (giftValuesSortArray.firstObject.giftValue != giftValuesSortArray.lastObject.giftValue) { - highest = giftValuesSortArray.firstObject.uid; - lowest = giftValuesSortArray.lastObject.uid; - } - }else{ - - if (giftValuesSortArray.firstObject.giftValue != giftValuesSortArray.lastObject.giftValue) { - - if (giftValuesSortArray.firstObject.giftValue != giftValuesSortArray[1].giftValue) { - highest = giftValuesSortArray.firstObject.uid; - } - - if (giftValuesSortArray.lastObject.giftValue != giftValuesSortArray[sortArrayCount-2].giftValue) { - lowest = giftValuesSortArray.lastObject.uid; - } - } - } - for (MiecreoscoopeMHTueueMatrix *item in self.micQueue.allValues) { - if (highest && item.userInfo.uid == highest.integerValue) { - UIView * view = [self prohibiticoveryMiecreoscoopeRegardByCid:highest]; - [view refurbishPolariztowardsionisHighPrototype:YES isExhibit:YES]; - continue; - } - if (lowest && item.userInfo.uid == lowest.integerValue) { - UIView * view = [self prohibiticoveryMiecreoscoopeRegardByCid:lowest]; - [view refurbishPolariztowardsionisHighPrototype:NO isExhibit:YES]; - } - } -} - -#pragma mark - ChamberGuestRepresendtation -- (void)onChamberRoadliceImported { - self.isRoadliceImport = YES; - ChamberAbstractMatrix* roomInfo = self.hostRepresedtation.acquireChamberAbstract; - - RtcEngineType type; - if ([roomInfo.audioSdkType isEqualToString:@"wujie"]) { - type = RtcEngineType_WJ; - } else if ([roomInfo.audioSdkType isEqualToString:@"zego"]) { - type = RtcEngineType_Zego; - } else if ([roomInfo.audioSdkType isEqualToString:@"trtc"]) { - type = RtcEngineType_TRTC; - } else { - type = RtcEngineType_Agora; - } - [RealtimackExecutive initEngineAboutGenre:type delegate:self]; - [self miecreoscoopeInthecaseofmtowardsionRefurbishd:NO]; - [self initNEMCMiecreoscoopeInthecaseofmtowardsions]; -} - -- (void)onChamberImported { - self.isRoadliceImport = NO; - - [self miecreoscoopeInthecaseofmtowardsionRefurbishd:NO]; - [self initRtc]; - [self initNEMCMiecreoscoopeInthecaseofmtowardsions]; -} - -- (NSMutableDictionary *)acquireMiecreoscoopeInthecaseofmtowardsion { - return self.micQueue; -} - -- (void)onChamberRefurbish { - self.isRoadliceImport = NO; -} - -- (void)shankNEMCCircularCommunictowardsion:(NIMMessage *)message { - NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; - NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; - BOOL microQueueChanged = NO; - BOOL ownerRTCChanged = NO; - switch (content.eventType) { - case NIMChatroomEventTypeInfoUpdated: - { - NSDictionary *data = [content.notifyExt toJSONGroal]; - int type = [data[@"type"] intValue]; - NSArray* microStates; - switch (type) { - case 2: - microStates = @[[MiecreoscoopeStateMatrix mtowardsrixAboutJSON:data[@"micInfo"]]]; - break; - case 3: - microStates = [MiecreoscoopeStateMatrix mtowardsrixsAboutGarment:data[@"micInfo"]]; - break; - } - if (microStates && microStates.count > 0) { - for (MiecreoscoopeStateMatrix *microState in microStates) { - MiecreoscoopeMHTueueMatrix *micSequence = [self.micQueue objectForKey:[NSString stringWithFormat:@"%d", microState.position]]; - micSequence.microState = microState; - } - microQueueChanged = YES; - } - } - break; - - case NIMChatroomEventTypeQueueChange: - { - NSDictionary* data = (NSDictionary *)content.ext; - NSString* position = [data objectForKey:NIMChatroomEventInfoQueueChangeItemKey]; - ConsumerAbstractMatrix* userInfo = [ConsumerAbstractMatrix mtowardsrixAboutJSON:[data objectForKey:NIMChatroomEventInfoQueueChangeItemValueKey]]; - NSInteger changeType = [data[NIMChatroomEventInfoQueueChangeTypeKey] integerValue]; - if (userInfo.uid == [AccountAbstractStorage instance].acquireCid.integerValue) { - ownerRTCChanged = YES; - } - - for (MiecreoscoopeMHTueueMatrix *sequence in self.micQueue.allValues) { - if (userInfo.uid == sequence.userInfo.uid) { - sequence.userInfo = nil; - } - } - - if (changeType == 1) { - MiecreoscoopeMHTueueMatrix *sequence = [self.micQueue objectForKey:position]; - sequence.userInfo = userInfo; - if (self.hostRepresedtation.acquireChamberAbstract.showGiftValue && userInfo.uid == [AccountAbstractStorage instance].acquireCid.integerValue) { - ChamberAbstractMatrix * roomInfo =self.hostRepresedtation.acquireChamberAbstract; - NSString * roomUid = [NSString stringWithFormat:@"%ld", roomInfo.uid]; - NSString * uid = [NSString stringWithFormat:@"%ld", userInfo.uid]; - [Api chamberPresentBWSttessupburdenLoudspeaker:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NIMMessage * message = [[NIMMessage alloc] init]; - AttachmentMatrix * attachMent = [[AttachmentMatrix alloc] init]; - attachMent.first = IndividualityCommunicationGenre_Room_GiftValue; - attachMent.second = Custom_Message_Sub_Room_GiftValue_Sync; - attachMent.data = data.data; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachMent; - message.messageObject = object; - - NSString * sessionId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; - } - } roomUid:roomUid micUid:uid position:position uid:uid]; - } - - if (sequence && sequence.userInfo.uid == [AccountAbstractStorage instance].acquireCid.integerValue) { - [RealtimackExecutive instance].localDelicate = YES; - } - } - - microQueueChanged = YES; - } - break; - case NIMChatroomEventTypeExit: - case NIMChatroomEventTypeKicked: - { - for (NIMChatroomNotificationMember *member in content.targets) { - for (MiecreoscoopeMHTueueMatrix *sequence in self.micQueue.allValues) { - if (member.userId.integerValue == sequence.userInfo.uid) { - sequence.userInfo = nil; - microQueueChanged = YES; - } - } - } - } - break; - default: - break; - } - - if (microQueueChanged) { - self.isRoadliceImport = NO; - [self miecreoscoopeInthecaseofmtowardsionRefurbishd:ownerRTCChanged]; - [self.hostRepresedtation onMiecreoscoopeInthecaseofmtowardsionRefurbish:self.micQueue]; - } -} - -- (void)shankNEMCIndividualityCommunictowardsion:(NIMMessage *)message { - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentMatrix class]]) { - AttachmentMatrix *attachment = (AttachmentMatrix *)obj.attachment; - if(attachment.first == IndividualityCommunicationGenre_Queue && attachment.second == Custom_Message_Sub_Queue_Invite) { - NSDictionary *dic = attachment.data; - MiecreoscoopeCallforExtMatrix *inviteModel = [MiecreoscoopeCallforExtMatrix mtowardsrixAboutImpactbasket:dic]; - if (inviteModel.uid.integerValue == self.hostRepresedtation.getUserInfo.uid) { - NSString *position = inviteModel.micPosition; - - MiecreoscoopeMHTueueMatrix *micro = [self.micQueue objectForKey:position]; - if (!micro || micro.userInfo) return; - - ChamberAbstractMatrix* roomInfo = self.hostRepresedtation.acquireChamberAbstract; - NSString* roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - ConsumerAbstractMatrix* userInfo = self.hostRepresedtation.getUserInfo; - - NIMChatroomQueueUpdateRequest *request = [[NIMChatroomQueueUpdateRequest alloc]init]; - request.key = position; - request.value = [[self consumerAbstractToInthecaseofmtowardsionExt:userInfo] toJSONBWSttr]; - request.roomId = roomId; - request.transient = YES; - - [[NIMSDK sharedSDK].chatroomManager updateChatroomQueueObject:request completion:^(NSError * _Nullable error) { - if (error) return; - [RealtimackExecutive instance].localDelicate = YES; - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.title = YMLocalizedString(@"Stage_View_0"); - config.message = @"你已被房主或管理员拉上麦,但并未开启麦克风。如需要说话,请打开麦克风。"; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - - } cancelHandler:^{ - - }]; - }]; - } - } else if(attachment.first == IndividualityCommunicationGenre_Room_GiftValue && attachment.second == Custom_Message_Sub_Room_GiftValue_Sync) { - [self presentBWSttessRefurbish:attachment.data]; - } else if(attachment.first == IndividualityCommunicationGenre_Gift && (attachment.second == Custom_Message_Sub_Gift_Send || attachment.second == Custom_Message_Sub_Gift_LuckySend || attachment.second == Custom_Message_Sub_Gift_ChannelNotify)) { - [self presentBWSttessRefurbish:attachment.data]; - }else if(attachment.first == IndividualityCommunicationGenre_AllMicroSend && (attachment.second == Custom_Message_Sub_AllMicroSend || attachment.second == Custom_Message_Sub_AllBatchSend || attachment.second == Custom_Message_Sub_AllMicroLuckySend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend)) { - [self presentBWSttessRefurbish:attachment.data]; - } else if (attachment.first == IndividualityCommunicationGenre_Face && attachment.second == Custom_Message_Sub_Face_Send) { - [self EvidenceConsumerAccept:attachment.data]; - }else if (attachment.first == IndividualityCommunicationGenre_Room_PK && attachment.second == Custom_Message_Sub_Room_PK_Manager_Up_Mic) { - NSDictionary * dic = attachment.data; - - NSString * uid = [AccountAbstractStorage instance].acquireCid; - if (dic.allKeys.count > 0 && [dic.allKeys containsObject:uid] && [dic objectForKey:uid]) { - ChamberCombatChooseConsumerMatrix * pkUserInfo = [ChamberCombatChooseConsumerMatrix mtowardsrixAboutImpactbasket:[dic objectForKey:uid]]; - NSString * position = [NSString stringWithFormat:@"%d", pkUserInfo.position]; - NSString* roomId = [NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.roomId]; - MiecreoscoopeMHTueueMatrix *micro = [self.micQueue objectForKey:position]; - if (micro && micro.userInfo && micro.userInfo.uid != pkUserInfo.uid.integerValue) return; - ConsumerAbstractMatrix * userInfo = self.hostRepresedtation.getUserInfo; - userInfo.groupType = pkUserInfo.groupType; - NIMChatroomQueueUpdateRequest *request = [[NIMChatroomQueueUpdateRequest alloc]init]; - request.key = position; - request.value = [[self consumerAbstractToInthecaseofmtowardsionExt:userInfo] toJSONBWSttr]; - request.roomId = roomId; - request.transient = YES; - [[NIMSDK sharedSDK].chatroomManager updateChatroomQueueObject:request completion:^(NSError * _Nullable error) { - if (error) return; - }]; - } - } - } -} - -#pragma mark - RtcRepresendtation - 讲话的波纹回调 -- (void)consumersSpeaking:(NSMutableArray *)uids { - if ([RealtimackExecutive instance].isRemoteDelicate) { - return; - } - for (NSString* uid in uids) { - if ([RealtimackExecutive instance].isLocalDelicate && uid.integerValue == self.hostRepresedtation.getUserInfo.uid) { - continue; - } - UIView* microView = [self prohibiticoveryMiecreoscoopeRegardByCid:uid]; - if (microView) { - [microView consumerSpeaking]; - } - } -} - -#pragma mark - 表情 -- (void)EvidenceConsumerAccept:(NSDictionary *)faceDic { - if ([faceDic[@"data"] isKindOfClass:[NSArray class]]) { - NSArray *arr = faceDic[@"data"]; - for (int i = 0; i < arr.count; i++) { - NSDictionary *dict = [arr secureGroalTowardsIndictowardsrix1:i]; - ChamberAcceptDischargeAbstractMatrix * receiveInfo = [ChamberAcceptDischargeAbstractMatrix mtowardsrixAboutImpactbasket:dict]; - UIView * view = [self prohibiticoveryMiecreoscoopeRegardByCid:[NSString stringWithFormat:@"%ld",receiveInfo.uid]]; - if (view == nil) continue; - [view EvidenceingAccept:receiveInfo]; - } - } - -} - -#pragma mark - StageRegardRepresendtation - 留给子 View 重写的模板方法 -- (void)didChosenTowardsIndictowardsrix:(NSInteger)index { - - MiecreoscoopeMHTueueMatrix* micModel = [self.micQueue objectForKey:[self indexToPolariztowardsion:index]]; - ConsumerAbstractMatrix* userInfo = self.hostRepresedtation.getUserInfo; - ChamberAbstractMatrix* roomInfo = self.hostRepresedtation.acquireChamberAbstract; - NSString* position = [self indexToPolariztowardsion:index]; - NSString* uid = [NSString stringWithFormat:@"%ld", userInfo.uid]; - NSString* roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - - - NSString * targetUid; - if (roomInfo.leaveMode && [position isEqualToString:@"-1"]) { - targetUid = [NSString stringWithFormat:@"%ld", roomInfo.uid]; - } - if (micModel.userInfo && micModel.userInfo.uid > 0) { - targetUid = [NSString stringWithFormat:@"%ld", micModel.userInfo.uid]; - } - - if (targetUid && targetUid.length > 0) { - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMIConsumerSolitaireAbstractMatrix * model = [[YUMIConsumerSolitaireAbstractMatrix alloc] init]; - model.uid = targetUid; - model.position = position; - model.posState = micModel.microState.posState; - model.micState = micModel.microState.micState; - model.nick = userInfo.nick; - model.roomInfo = roomInfo; - model.micQueue = self.micQueue; - model.delegate = self.hostRepresedtation; - model.superMangerList = self.hostRepresedtation.acquireChamberSenstowardsionalManagementSttowardsement; - YUMIConsumerSolitaireRegardGovernancer * userCardVC = [[YUMIConsumerSolitaireRegardGovernancer alloc] initWithUser:model]; - [self.hostRepresedtation.acquireUniversalNev presentViewController:userCardVC animated:YES completion:nil]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"userCard"}]; - } else { - - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = roomId; - request.userIds = @[uid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - NIMChatroomMember * member = members.firstObject; - if (!member) return; - - if (member.type == NIMTeamMemberTypeOwner || member.type == NIMTeamMemberTypeManager) { - MKJActionSheetDisposition *lockMic = [MKJActionSheetDisposition normalTitle:YMLocalizedString(@"Stage_View_2") ticktackPerformance:^{ - NIMChatroomQueueRemoveRequest *request = [[NIMChatroomQueueRemoveRequest alloc]init]; - request.key = position; - request.roomId = roomId; - [[NIMSDK sharedSDK].chatroomManager removeChatroomQueueObject:request completion:^(NSError * _Nullable error, NSDictionary * _Nullable element) { - NSLog(@"%@", error); - }]; - }]; - [MKJPopup performanceSheetAboutProvisions:@[lockMic]]; - } - }]; - } - return; - } - - if (roomInfo.leaveMode && roomInfo.uid == [AccountAbstractStorage instance].acquireCid.integerValue) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"Stage_View_3")]; - return; - } - - - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = roomId; - request.userIds = @[uid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - NIMChatroomMember * member = members.firstObject; - if (!member) return; - - void(^nimUpQueue)(NSString*, BOOL) = ^ (NSString* up, BOOL isFromDownMic){ - if (!self.possessAcquireFormationAbstractSuccess) { - return; - } - MiecreoscoopeMHTueueMatrix* micModel = [self.micQueue objectForKey:up]; - if (micModel.userInfo) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:@"该麦位已经有人了哦~"]; - return; - } - NIMChatroomQueueUpdateRequest *request = [[NIMChatroomQueueUpdateRequest alloc]init]; - request.key = up; - request.value = [[self consumerAbstractToInthecaseofmtowardsionExt:userInfo] toJSONBWSttr]; - request.roomId = roomId; - request.transient = YES; - [[NIMSDK sharedSDK].chatroomManager updateChatroomQueueObject:request completion:^(NSError * _Nullable error) { - if (isFromDownMic) { - self.isUpwardsingLoudspeaker = NO; - } - if (error) { - - } - }]; - }; - - - void(^nimDownQueue)(NSString*, NSString*) = ^ (NSString* firstDown, NSString* nextUp){ - NIMChatroomQueueRemoveRequest *request = [[NIMChatroomQueueRemoveRequest alloc]init]; - request.key = firstDown; - request.roomId = roomId; - [[NIMSDK sharedSDK].chatroomManager removeChatroomQueueObject:request completion:^(NSError * _Nullable error, NSDictionary * _Nullable element) { - if (!error && nextUp) { - nimUpQueue(nextUp, YES); - } else { - self.isUpwardsingLoudspeaker = NO; - } - }]; - }; - - - if (member.type == NIMTeamMemberTypeOwner || member.type == NIMTeamMemberTypeManager) { - - NSString * upTitle = YMLocalizedString(@"Stage_View_5"); - if (![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - upTitle = YMLocalizedString(@"Stage_View_6"); - } - MKJActionSheetDisposition *upMic = [MKJActionSheetDisposition normalTitle:upTitle ticktackPerformance:^{ - NSString* selfUid = [NSString stringWithFormat:@"%ld", (long)self.hostRepresedtation.getUserInfo.uid]; - UIView* microView = [self prohibiticoveryMiecreoscoopeRegardByCid:selfUid]; - if (microView) { - nimDownQueue([self indexToPolariztowardsion:microView.tag], position); - } else { - nimUpQueue(position, NO); - } - }]; - - - NSString * lockTitle; - if (roomInfo.roomModeType == ChamberModeGenre_Open_Micro_Mode) { - lockTitle = micModel.microState.posState == MiecreoscoopePosDeclareGenre_Free ? @"切换为排麦" : YMLocalizedString(@"Stage_View_8"); - }else { - lockTitle = micModel.microState.posState == MiecreoscoopePosDeclareGenre_Free ? @"锁麦" : YMLocalizedString(@"Stage_View_10"); - } - if (![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - lockTitle = micModel.microState.posState == MiecreoscoopePosDeclareGenre_Free ? @"锁定坑位" : YMLocalizedString(@"Stage_View_12"); - } - MKJActionSheetDisposition *lockMic = [MKJActionSheetDisposition normalTitle:lockTitle ticktackPerformance:^{ - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.uid]; - NSString * state = micModel.microState.posState == MiecreoscoopePosDeclareGenre_Free ? @"1" : @"0"; - NSString * ticket = [[AccountAbstractStorage instance] acquireTicket]; - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - [Api miecreoscoopeSpokeImplementtowardsion:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - - } roomUid:roomUid state:state position:position ticket:ticket uid:uid]; - }]; - - - NSString * muteTitle = micModel.microState.micState == MiecreoscoopeLoudspeakerDeclareGenre_Open ? @"闭麦" : YMLocalizedString(@"Stage_View_14"); - if (![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - muteTitle = micModel.microState.micState == MiecreoscoopeLoudspeakerDeclareGenre_Open ? @"关闭麦位话筒" : YMLocalizedString(@"Stage_View_16"); - } - MKJActionSheetDisposition *muteMic = [MKJActionSheetDisposition normalTitle:muteTitle ticktackPerformance:^{ - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.uid]; - NSString * state = micModel.microState.micState == MiecreoscoopeLoudspeakerDeclareGenre_Open ? @"1" : @"0"; - NSString * ticket = [[AccountAbstractStorage instance] acquireTicket]; - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - [Api miecreoscoopeBretowardshaedImplementtowardsion:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - - } roomUid:roomUid state:state position:position ticket:ticket uid:uid]; - }]; - - - NSString * inviteTitle = ([position isEqualToString:@"-1"] && roomInfo.roomModeType == ChamberModeGenre_Open_Blind) ? @"抱Ta上麦当主持" : YMLocalizedString(@"Stage_View_18"); - MKJActionSheetDisposition *inviteMic = [MKJActionSheetDisposition normalTitle:inviteTitle ticktackPerformance:^{ - YUMIChamberCallforConsumerRegardGovernancer * inviteUserMicVC = [[YUMIChamberCallforConsumerRegardGovernancer alloc] init]; - inviteUserMicVC.isExecutiveOrMaintainrietary = ([position isEqualToString:@"-1"] && roomInfo.roomModeType == ChamberModeGenre_Open_Blind); - inviteUserMicVC.roomId = roomId; - inviteUserMicVC.position = position; - inviteUserMicVC.blindDateVipUid = roomInfo.blindDateVipUid; - [self.hostRepresedtation.acquireUniversalNev pushViewController:inviteUserMicVC animated:YES]; - }]; - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - [MKJPopup performanceSheetAboutProvisions:@[upMic,inviteMic, lockMic, muteMic]]; - } else { - [MKJPopup performanceSheetAboutProvisions:@[ muteMic,upMic, lockMic]]; - } - - } else { - - if (micModel.microState.posState == MiecreoscoopePosDeclareGenre_Lock) { - if (roomInfo.roomModeType == ChamberModeGenre_Open_Micro_Mode) { - if ([self acquireIndictowardsrixByCid:[AccountAbstractStorage instance].acquireCid] != -1) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"Stage_View_19")]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:@"需要排麦才可以上麦哦~"]; - } - } - return; - }; - - NSString* selfUid = [NSString stringWithFormat:@"%ld", (long)self.hostRepresedtation.getUserInfo.uid]; - UIView* microView = [self prohibiticoveryMiecreoscoopeRegardByCid:selfUid]; - if (microView) { - if (self.isUpwardsingLoudspeaker) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"Stage_View_21")]; - } else { - self.isUpwardsingLoudspeaker = YES; - nimDownQueue([self indexToPolariztowardsion:microView.tag], position); - } - } else { - nimUpQueue(position, NO); - } - } - }]; -} - -- (NSInteger)computtowardsionHLOfMircoRegard { - return 0; -} - -- (CGFloat)hightInthecaseofPhaseRegard { - return 0; -} - -- (nonnull UIView *)miecreoscoopeRegardInthecaseofIndictowardsrix:(NSInteger)index { - return [self prohibiticoveryMiecreoscoopeRegardByIndictowardsrix:index]; -} - -- (CGRect)rectInthecaseofRegardTowardsIndictowardsrix:(NSInteger)index { - return CGRectZero; -} - -#pragma mark - StageRegardCeremony - 基本上都是工具方法 -- (NSInteger)polariztowardsionToIndictowardsrix:(NSString*)position { - return position.intValue + 1; -} - -- (NSString *)indexToPolariztowardsion:(NSInteger)index { - return [NSString stringWithFormat:@"%ld", (long)(index - 1)]; -} - -- (NSInteger)acquireIndictowardsrixByCid:(NSString *)uid { - UIView * view = [self prohibiticoveryMiecreoscoopeRegardByCid:uid]; - if (view) { - return [self.miecreoscoopeRegards indexOfObject:view]; - } - return -1; -} - -- (MiecreoscoopeMHTueueMatrix *)prohibiticoveryMiecreoscoopeAbstractByCid:(NSString *)uid { - for (MiecreoscoopeMHTueueMatrix *model in self.micQueue.allValues) { - if (model.userInfo && model.userInfo.uid == uid.intValue) { - return model; - } - } - return nil; -} - -- (UIView *)prohibiticoveryMiecreoscoopeRegardByCid:(NSString *)uid { - for (int i = 0; i < self.computtowardsionHLOfMircoRegard; i++) { - MiecreoscoopeMHTueueMatrix* model = [self.micQueue objectForKey:[self indexToPolariztowardsion:i]]; - if (model.userInfo && model.userInfo.uid == uid.intValue) { - return [self prohibiticoveryMiecreoscoopeRegardByIndictowardsrix:i]; - } - } - return nil; -} - -- (UIView *)prohibiticoveryMiecreoscoopeRegardByIndictowardsrix:(NSInteger)index { - if (self.miecreoscoopeRegards && self.miecreoscoopeRegards.count > index) { - return [self.miecreoscoopeRegards secureGroalTowardsIndictowardsrix1:index]; - } - return nil; -} - -- (UIView *)prohibiticoveryMiecreoscoopeRegardByPolariztowardsion:(NSString *)position { - return [self prohibiticoveryMiecreoscoopeRegardByIndictowardsrix:[self polariztowardsionToIndictowardsrix:position]]; -} - -#pragma mark - private utils function - -- (NSDictionary *)consumerAbstractToInthecaseofmtowardsionExt:(ConsumerAbstractMatrix *)userInfo { - MiecreoscoopeExtMatrix * extModel = [[MiecreoscoopeExtMatrix alloc] init]; - extModel.gender = userInfo.gender; - extModel.avatar = userInfo.avatar; - extModel.uid = userInfo.uid; - extModel.nick = userInfo.nick; - extModel.headWearUrl = userInfo.headwearEffect.length > 0 ? userInfo.headwearEffect : userInfo.headwearPic; - extModel.micCircle = userInfo.micCircle; - extModel.micNickColor = userInfo.micNickColor; - extModel.preventKick = userInfo.userVipInfoVO.preventKick; - extModel.enterHide = userInfo.userVipInfoVO.enterHide; - extModel.groupType = userInfo.groupType; - return [extModel mtowardsrix2dictionary]; -} - - -- (void)miecreoscoopeRegardBetowardslictowardsioned:(UITapGestureRecognizer *)sender { - [self didChosenTowardsIndictowardsrix:sender.view.tag]; -} - -- (NSMutableArray *)miecreoscoopeRegards { - if (!_miecreoscoopeRegards) { - _miecreoscoopeRegards = [NSMutableArray arrayWithCapacity:self.computtowardsionHLOfMircoRegard]; - } - return _miecreoscoopeRegards; -} - -- (NSMutableDictionary *)micQueue { - if (!_micQueue) { - _micQueue= [NSMutableDictionary dictionary]; - for (int i = 0; i < self.computtowardsionHLOfMircoRegard; i++) { - NSString* position = [self indexToPolariztowardsion:i]; - MiecreoscoopeMHTueueMatrix *micSequence = [[MiecreoscoopeMHTueueMatrix alloc]init]; - micSequence.userInfo = nil; - micSequence.microState = [[MiecreoscoopeStateMatrix alloc]init]; - micSequence.microState.position = [position intValue]; - [self.micQueue setObject:micSequence forKey:position]; - } - } - return _micQueue; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/SocialPhaseRegard.h b/YuMi/Modules/YMRoom/View/PhaseRegard/SocialPhaseRegard.h deleted file mode 100644 index 9f99983f..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/SocialPhaseRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// SocialPhaseRegard.h -// YUMI -// -// Created by zu on 2021/10/26. -// - -#import "PhaseRegard.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface SocialPhaseRegard : PhaseRegard - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/PhaseRegard/SocialPhaseRegard.m b/YuMi/Modules/YMRoom/View/PhaseRegard/SocialPhaseRegard.m deleted file mode 100644 index 6d2e0a54..00000000 --- a/YuMi/Modules/YMRoom/View/PhaseRegard/SocialPhaseRegard.m +++ /dev/null @@ -1,89 +0,0 @@ -// -// SocialPhaseRegard.m -// YUMI -// -// Created by zu on 2021/10/26. -// - -#import "SocialPhaseRegard.h" -#import "SocialMiecreoscoopeRegard.h" -#import "MiecreoscoopePresentStressRegard.h" -#import "YUMIMacroUitls.h" -#import "ChamberAbstractMatrix.h" -#import "ClientDisposition.h" -#define ownerTopMargin 35 -#define ownerWidth (45 + 5) * kScreenScale -#define ownerHeight (ownerWidth + 10 + 12) -#define mcWidth (45 + 5) * kScreenScale -#define mcHeight (mcWidth + 10 + 12 + 5+16) -#define paddingH 22 * kScreenScale -#define marginV1 38 -#define marginH (KScreenWidth - paddingH * 2 - mcWidth * 4) / 3 -#define firstRowTop ownerHeight + marginV1 + ownerTopMargin -#define marginV2 15 -#define secondRowTop (firstRowTop + mcHeight + marginV2) - -@implementation SocialPhaseRegard - -- (NSInteger)computtowardsionHLOfMircoRegard { - return 9; -} - -- (UIView *)miecreoscoopeRegardInthecaseofIndictowardsrix:(NSInteger)index { - UIView * microView = [super miecreoscoopeRegardInthecaseofIndictowardsrix:index]; - if (microView) { - return microView; - } - return [[SocialMiecreoscoopeRegard alloc]init]; -} - - -- (CGRect)rectInthecaseofRegardTowardsIndictowardsrix:(NSInteger)index { - if (index == 0) { - return CGRectMake(KScreenWidth / 2 - ownerWidth / 2, ownerTopMargin, ownerWidth, ownerHeight); - } - - if (index >= 1 && index <= 4) { - return CGRectMake(paddingH + (mcWidth + marginH) * (index - 1), firstRowTop, mcWidth, mcHeight); - } - - if (index >= 5 && index < 9) { - return CGRectMake(paddingH + (mcWidth + marginH) * (index - 4 - 1), secondRowTop, mcWidth, mcHeight); - } - - return [super rectInthecaseofRegardTowardsIndictowardsrix:index]; -} - -- (CGFloat)hightInthecaseofPhaseRegard { - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - return ownerTopMargin + ownerHeight + marginV1 + mcHeight + marginV2 + mcHeight + marginV2; - } else { - return ownerTopMargin + ownerHeight + marginV1 + mcHeight + marginV2 + mcHeight + marginV2 - 20; - } - -} - -- (CGPoint)brectifynessSpeckTowardsPhaseRegardByCid:(NSString *)uid { - NSInteger index = [self acquireIndictowardsrixByCid:uid]; - - CGPoint point = CGPointZero; - if (index == -1 && self.hostRepresedtation.acquireChamberAbstract.leaveMode && self.hostRepresedtation.acquireChamberAbstract.uid == uid.integerValue) { - point = CGPointMake(KScreenWidth / 2, ownerWidth / 2 - 10 + ownerTopMargin); - } - - if (index == 0) { - point = CGPointMake(KScreenWidth / 2, ownerWidth / 2 - 10 + ownerTopMargin); - } - - if (index >= 1 && index <= 4) { - point = CGPointMake(paddingH + (mcWidth + marginH) * (index - 1) + mcWidth / 2, firstRowTop + mcWidth / 2- 10); - } - - if (index >= 5 && index <= 9) { - point = CGPointMake(paddingH + (mcWidth + marginH) * (index - 4 - 1) + mcWidth / 2, secondRowTop + mcWidth / 2 - 10); - } - point = [self convertPoint:point toView:nil]; - return point; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/QuickMessageView/XPRoomQuickMessageContainView.h b/YuMi/Modules/YMRoom/View/QuickMessageView/XPRoomQuickMessageContainView.h new file mode 100644 index 00000000..bf14ccfa --- /dev/null +++ b/YuMi/Modules/YMRoom/View/QuickMessageView/XPRoomQuickMessageContainView.h @@ -0,0 +1,21 @@ +// +// YMRoomQuickMessageContainView.h +// YUMI +// +// Created by YUMI on 2022/9/28. +// + +#import +#import "RoomHostDelegate.h" +#import "RoomGuestDelegate.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomQuickMessageContainView : UIView + +- (instancetype)initWithDelegate:(id)delegate; + +@property (nonatomic, strong) NSArray *titleArray; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/QuickMessageView/XPRoomQuickMessageContainView.m b/YuMi/Modules/YMRoom/View/QuickMessageView/XPRoomQuickMessageContainView.m new file mode 100644 index 00000000..05ca1fda --- /dev/null +++ b/YuMi/Modules/YMRoom/View/QuickMessageView/XPRoomQuickMessageContainView.m @@ -0,0 +1,190 @@ +// +// YMRoomQuickMessageContainView.m +// YUMI +// +// Created by YUMI on 2022/9/28. +// + +#import "XPRoomQuickMessageContainView.h" +#import "XPRoomQuidkMessageCell.h" +#import +#import +///Tool +#import "AccountInfoStorage.h" +#import "YUMIConstant.h" +#import "XNDJTDDLoadingTool.h" +#import "NSArray+Safe.h" +#import "ClientConfig.h" +///Model +#import "XPMessageRemoteExtModel.h" +#import "UserInfoModel.h" +#import "RoomInfoModel.h" + +@interface XPRoomQuickMessageContainView () + +@property (nonatomic, strong) UICollectionView *collectionView; +///关闭 +@property (nonatomic,strong) UIButton *closeButton; +///代理 +@property (nonatomic,weak) id delegate; +///最后发送消息的时间 +@property (nonatomic, assign) long long lastSendTime; + +@end + +@implementation XPRoomQuickMessageContainView + +- (instancetype)initWithDelegate:(id)delegate { + self = [super init]; + if (self) { + self.delegate = delegate; + self.clipsToBounds = YES; + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.collectionView]; + [self addSubview:self.closeButton]; +} + +- (void)initSubViewConstraints { + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self).offset(15); + make.right.mas_equalTo(self.closeButton.mas_left).offset(-8); + make.top.bottom.mas_equalTo(self); + }]; + + [self.closeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-8); + make.width.height.mas_equalTo(30); + make.centerY.mas_equalTo(self); + }]; +} + +#pragma mark - UICollectionViewDataSource +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.titleArray.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPRoomQuidkMessageCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPRoomQuidkMessageCell class]) forIndexPath:indexPath]; + if (self.titleArray.count > 0) { + cell.title = [self.titleArray safeObjectAtIndex1:indexPath.row]; + } + return cell; +} + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + NSString *str = [self.titleArray safeObjectAtIndex1:indexPath.row]; + NSDictionary *dic = @{NSFontAttributeName:[UIFont systemFontOfSize:12]}; + CGSize size = [str boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, 25) options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil].size; + return CGSizeMake(size.width + 10, 30); +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + if (self.titleArray.count > 0) { + NSDate *datenow = [NSDate date];//现在时间 + long time2 = (long)([datenow timeIntervalSince1970]*1000); + long aTime = (time2 - self.lastSendTime) / 1000; + if (aTime < 10) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPRoomQuickMessageContainView0")]; + return; + } + self.lastSendTime = time2; + NSString *str = [self.titleArray safeObjectAtIndex1:indexPath.row]; + [self sendText:str]; + } +} + +- (void)sendText:(NSString *)text { + if ([self.delegate getRoomInfo].isCloseScreen) { + return; + } + //移除记录关闭次数 + [[NSUserDefaults standardUserDefaults] removeObjectForKey:kRoomQuickMessageCloseCount]; + [[NSUserDefaults standardUserDefaults] synchronize]; + + UserInfoModel * userInfo = [self.delegate getUserInfo]; + XPMessageRemoteExtModel *extModel = [[XPMessageRemoteExtModel alloc] init]; + extModel.defUser = userInfo.defUser; + extModel.erbanNo = userInfo.erbanNo; + extModel.carName = userInfo.carName; + extModel.inRoomNameplatePic = userInfo.nameplatePic; + extModel.inRoomNameplateWord = userInfo.nameplateWord; + extModel.charmUrl = userInfo.userLevelVo.charmUrl; + extModel.experLevelSeq = userInfo.userLevelVo.experLevelSeq; + extModel.experUrl = userInfo.userLevelVo.experUrl; + extModel.newUser = userInfo.newUser; + extModel.vipIcon = userInfo.userVipInfoVO.vipIcon; + extModel.androidBubbleUrl = userInfo.androidBubbleUrl; + extModel.iosBubbleUrl = userInfo.iosBubbleUrl; + extModel.fromSayHelloChannel = userInfo.fromSayHelloChannel; + + NIMMessage * message = [[NIMMessage alloc] init]; + message.text = text; + NSMutableDictionary *remoteExt = [NSMutableDictionary dictionaryWithObject:extModel.model2dictionary forKey:[AccountInfoStorage instance].getUid]; + message.remoteExt = remoteExt; + + ///网易易盾 拦截高风险 + NIMAntiSpamOption *option = [[NIMAntiSpamOption alloc]init]; + option.yidunEnabled = YES; + option.businessId = KeyWithType(keyType_YiDunBussinessId); + message.antiSpamOption = option; + NSString * sessionId = [NSString stringWithFormat:@"%ld", [self.delegate getRoomInfo].roomId]; + //构造会话 + NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session completion:^(NSError * _Nullable error) { + }]; +} + +- (void)onCloseButtonClick:(UIButton *)sender { + [self mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(0); + }]; + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + //记录关闭的次数 + NSNumber *count = [defaults objectForKey:kRoomQuickMessageCloseCount]; + [defaults setObject:@(count.intValue +1) forKey:kRoomQuickMessageCloseCount]; + [defaults synchronize]; + +} + +#pragma mark - Getters And Setters +- (void)setTitleArray:(NSArray *)titleArray { + if (![ClientConfig shareConfig].canOpen) { + self.hidden = YES; + return; + } + _titleArray = titleArray; + [self.collectionView reloadData]; +} + +- (UICollectionView *)collectionView{ + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + layout.minimumInteritemSpacing = 8; + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.showsHorizontalScrollIndicator = NO; + _collectionView.backgroundColor = [UIColor clearColor]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + [_collectionView registerClass:[XPRoomQuidkMessageCell class] forCellWithReuseIdentifier:NSStringFromClass([XPRoomQuidkMessageCell class])]; + } + return _collectionView; +} + +- (UIButton *)closeButton { + if (!_closeButton) { + _closeButton = [[UIButton alloc] init]; + [_closeButton setImage:[UIImage imageNamed:@"room_gift_graffiti_close"] forState:UIControlStateNormal]; + [_closeButton addTarget:self action:@selector(onCloseButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + } + return _closeButton; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/QuickMessageView/XPRoomQuidkMessageCell.h b/YuMi/Modules/YMRoom/View/QuickMessageView/XPRoomQuidkMessageCell.h new file mode 100644 index 00000000..9f05105e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/QuickMessageView/XPRoomQuidkMessageCell.h @@ -0,0 +1,18 @@ +// +// YMRoomQuidkMessageCell.h +// YUMI +// +// Created by YUMI on 2022/9/28. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomQuidkMessageCell : UICollectionViewCell + +@property (nonatomic, copy) NSString *title; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/QuickMessageView/XPRoomQuidkMessageCell.m b/YuMi/Modules/YMRoom/View/QuickMessageView/XPRoomQuidkMessageCell.m new file mode 100644 index 00000000..5167591a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/QuickMessageView/XPRoomQuidkMessageCell.m @@ -0,0 +1,68 @@ +// +// YMRoomQuidkMessageCell.m +// YUMI +// +// Created by YUMI on 2022/9/28. +// + +#import "XPRoomQuidkMessageCell.h" +///Third +#import +///Model +#import "RoomTagModel.h" +#import "DJDKMIMOMColor.h" +#import "RoomClassifyModel.h" + +@interface XPRoomQuidkMessageCell () + +@property (nonatomic, strong) UIView *bgView; + +@property (nonatomic, strong) UILabel *tagLabel; + +@end + +@implementation XPRoomQuidkMessageCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self addSubview:self.bgView]; + [self addSubview:self.tagLabel]; + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(22); + make.left.right.mas_equalTo(self.contentView); + make.centerY.mas_equalTo(self.contentView); + }]; + [self.tagLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self); + }]; + } + return self; +} + +- (void)setTitle:(NSString *)title { + self.tagLabel.text = title; +} + +#pragma mark - Getter & Setter +- (UILabel *)tagLabel { + if (!_tagLabel) { + _tagLabel = [[UILabel alloc] init]; + _tagLabel.textColor = UIColor.whiteColor; + _tagLabel.font = [UIFont systemFontOfSize:12]; + _tagLabel.textAlignment = NSTextAlignmentCenter; + } + return _tagLabel; +} + +- (UIView *)bgView { + if (!_bgView) { + _bgView = [[UIView alloc] init]; + _bgView.backgroundColor = UIColorRGBAlpha(0xffffff, 0.3); + _bgView.layer.cornerRadius = 11; + _bgView.layer.masksToBounds = YES; + } + return _bgView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/QuickMessageView/YUMIChamberMHTuickCommunicationContainRegard.h b/YuMi/Modules/YMRoom/View/QuickMessageView/YUMIChamberMHTuickCommunicationContainRegard.h deleted file mode 100644 index a80e4d74..00000000 --- a/YuMi/Modules/YMRoom/View/QuickMessageView/YUMIChamberMHTuickCommunicationContainRegard.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMRoomQuickMessageContainView.h -// YUMI -// -// Created by YUMI on 2022/9/28. -// - -#import -#import "ChamberHostRepresendtation.h" -#import "ChamberGuestRepresendtation.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberMHTuickCommunicationContainRegard : UIView - -- (instancetype)initWithDelegate:(id)delegate; - -@property (nonatomic, strong) NSArray *titleArray; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/QuickMessageView/YUMIChamberMHTuickCommunicationContainRegard.m b/YuMi/Modules/YMRoom/View/QuickMessageView/YUMIChamberMHTuickCommunicationContainRegard.m deleted file mode 100644 index 93ed1da3..00000000 --- a/YuMi/Modules/YMRoom/View/QuickMessageView/YUMIChamberMHTuickCommunicationContainRegard.m +++ /dev/null @@ -1,185 +0,0 @@ -// -// YMRoomQuickMessageContainView.m -// YUMI -// -// Created by YUMI on 2022/9/28. -// - -#import "YUMIChamberMHTuickCommunicationContainRegard.h" -#import "YUMIChamberMHTuidkCommunicationElement.h" -#import -#import -#import "AccountAbstractStorage.h" -#import "YUMIConstant.h" -#import "XNDJTBWGLoadingTool.h" -#import "NSArray+Safe.h" -#import "ClientDisposition.h" -#import "YUMICommunicationRemoteExtMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "ChamberAbstractMatrix.h" - -@interface YUMIChamberMHTuickCommunicationContainRegard () - -@property (nonatomic, strong) UICollectionView *collectionView; -@property (nonatomic,strong) UIButton *concludeBtuton; -@property (nonatomic,weak) id delegate; -@property (nonatomic, assign) long long lastDischargeIntratemporal; - -@end - -@implementation YUMIChamberMHTuickCommunicationContainRegard - -- (instancetype)initWithDelegate:(id)delegate { - self = [super init]; - if (self) { - self.delegate = delegate; - self.clipsToBounds = YES; - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.collectionView]; - [self addSubview:self.concludeBtuton]; -} - -- (void)initChildLyRestrictions { - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self).offset(15); - make.right.mas_equalTo(self.concludeBtuton.mas_left).offset(-8); - make.top.bottom.mas_equalTo(self); - }]; - - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-8); - make.width.height.mas_equalTo(30); - make.centerY.mas_equalTo(self); - }]; -} - -#pragma mark - UICollectionViewDataSource -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.titleArray.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMIChamberMHTuidkCommunicationElement *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIChamberMHTuidkCommunicationElement class]) forIndexPath:indexPath]; - if (self.titleArray.count > 0) { - cell.title = [self.titleArray secureGroalTowardsIndictowardsrix1:indexPath.row]; - } - return cell; -} - -- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { - NSString *str = [self.titleArray secureGroalTowardsIndictowardsrix1:indexPath.row]; - NSDictionary *dic = @{NSFontAttributeName:[UIFont systemFontOfSize:12]}; - CGSize size = [str boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, 25) options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil].size; - return CGSizeMake(size.width + 10, 30); -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - if (self.titleArray.count > 0) { - NSDate *datenow = [NSDate date]; - long time2 = (long)([datenow timeIntervalSince1970]*1000); - long aTime = (time2 - self.lastDischargeIntratemporal) / 1000; - if (aTime < 10) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Room_Quick_Message_Contain_View_0")]; - return; - } - self.lastDischargeIntratemporal = time2; - NSString *str = [self.titleArray secureGroalTowardsIndictowardsrix1:indexPath.row]; - [self sendText:str]; - } -} - -- (void)sendText:(NSString *)text { - if ([self.delegate acquireChamberAbstract].isCloseScreen) { - return; - } - - [[NSUserDefaults standardUserDefaults] removeObjectForKey:kRoomQuickMessageCloseCount]; - [[NSUserDefaults standardUserDefaults] synchronize]; - - ConsumerAbstractMatrix * userInfo = [self.delegate getUserInfo]; - YUMICommunicationRemoteExtMatrix *extModel = [[YUMICommunicationRemoteExtMatrix alloc] init]; - extModel.defUser = userInfo.defUser; - extModel.erbanNo = userInfo.erbanNo; - extModel.carName = userInfo.carName; - extModel.inRoomNameplatePic = userInfo.nameplatePic; - extModel.inRoomNameplateWord = userInfo.nameplateWord; - extModel.charmUrl = userInfo.userLevelVo.charmUrl; - extModel.experLevelSeq = userInfo.userLevelVo.experLevelSeq; - extModel.experUrl = userInfo.userLevelVo.experUrl; - extModel.newUser = userInfo.newUser; - extModel.vipIcon = userInfo.userVipInfoVO.vipIcon; - extModel.androidBubbleUrl = userInfo.androidBubbleUrl; - extModel.iosBubbleUrl = userInfo.iosBubbleUrl; - extModel.fromSayHelloChannel = userInfo.fromSayHelloChannel; - - NIMMessage * message = [[NIMMessage alloc] init]; - message.text = text; - NSMutableDictionary *remoteExt = [NSMutableDictionary dictionaryWithObject:extModel.mtowardsrix2dictionary forKey:[AccountAbstractStorage instance].acquireCid]; - message.remoteExt = remoteExt; - - - NIMAntiSpamOption *option = [[NIMAntiSpamOption alloc]init]; - option.yidunEnabled = YES; - option.businessId = KeyWithType(keyType_YiDunBussinessId); - message.antiSpamOption = option; - NSString * sessionId = [NSString stringWithFormat:@"%ld", [self.delegate acquireChamberAbstract].roomId]; - - NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session completion:^(NSError * _Nullable error) { - }]; -} - -- (void)onConcludeBtutonTicktack:(UIButton *)sender { - [self mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(0); - }]; - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - - NSNumber *count = [defaults objectForKey:kRoomQuickMessageCloseCount]; - [defaults setObject:@(count.intValue +1) forKey:kRoomQuickMessageCloseCount]; - [defaults synchronize]; - -} - -#pragma mark - Getters And Setters -- (void)setTitleArray:(NSArray *)titleArray { - if (![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - self.hidden = YES; - return; - } - _titleArray = titleArray; - [self.collectionView reloadData]; -} - -- (UICollectionView *)collectionView{ - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; - layout.minimumInteritemSpacing = 8; - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.showsHorizontalScrollIndicator = NO; - _collectionView.backgroundColor = [UIColor clearColor]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - [_collectionView registerClass:[YUMIChamberMHTuidkCommunicationElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIChamberMHTuidkCommunicationElement class])]; - } - return _collectionView; -} - -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [[UIButton alloc] init]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_scope_present_graffiti_close"] forState:UIControlStateNormal]; - [_concludeBtuton addTarget:self action:@selector(onConcludeBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - } - return _concludeBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/QuickMessageView/YUMIChamberMHTuidkCommunicationElement.h b/YuMi/Modules/YMRoom/View/QuickMessageView/YUMIChamberMHTuidkCommunicationElement.h deleted file mode 100644 index f280ad0c..00000000 --- a/YuMi/Modules/YMRoom/View/QuickMessageView/YUMIChamberMHTuidkCommunicationElement.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMRoomQuidkMessageCell.h -// YUMI -// -// Created by YUMI on 2022/9/28. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberMHTuidkCommunicationElement : UICollectionViewCell - -@property (nonatomic, copy) NSString *title; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/QuickMessageView/YUMIChamberMHTuidkCommunicationElement.m b/YuMi/Modules/YMRoom/View/QuickMessageView/YUMIChamberMHTuidkCommunicationElement.m deleted file mode 100644 index 6655b154..00000000 --- a/YuMi/Modules/YMRoom/View/QuickMessageView/YUMIChamberMHTuidkCommunicationElement.m +++ /dev/null @@ -1,66 +0,0 @@ -// -// YMRoomQuidkMessageCell.m -// YUMI -// -// Created by YUMI on 2022/9/28. -// - -#import "YUMIChamberMHTuidkCommunicationElement.h" -#import -#import "ChamberCoupleMatrix.h" -#import "DJDKMIMOMColor.h" -#import "ChamberClassifyMatrix.h" - -@interface YUMIChamberMHTuidkCommunicationElement () - -@property (nonatomic, strong) UIView *backgroundRegard; - -@property (nonatomic, strong) UILabel *coupleSequencignation; - -@end - -@implementation YUMIChamberMHTuidkCommunicationElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self addSubview:self.backgroundRegard]; - [self addSubview:self.coupleSequencignation]; - [self.backgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(22); - make.left.right.mas_equalTo(self.contentView); - make.centerY.mas_equalTo(self.contentView); - }]; - [self.coupleSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.mas_equalTo(self); - }]; - } - return self; -} - -- (void)setTitle:(NSString *)title { - self.coupleSequencignation.text = title; -} - -#pragma mark - Getter & Setter -- (UILabel *)coupleSequencignation { - if (!_coupleSequencignation) { - _coupleSequencignation = [[UILabel alloc] init]; - _coupleSequencignation.textColor = UIColor.whiteColor; - _coupleSequencignation.font = [UIFont systemFontOfSize:12]; - _coupleSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _coupleSequencignation; -} - -- (UIView *)backgroundRegard { - if (!_backgroundRegard) { - _backgroundRegard = [[UIView alloc] init]; - _backgroundRegard.backgroundColor = UIColorRGBAlpha(0xffffff, 0.3); - _backgroundRegard.layer.cornerRadius = 11; - _backgroundRegard.layer.masksToBounds = YES; - } - return _backgroundRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/ReleaseRadio/Api/Api+RoomRadio.h b/YuMi/Modules/YMRoom/View/ReleaseRadio/Api/Api+RoomRadio.h index 598f4a62..40e1cdb4 100644 --- a/YuMi/Modules/YMRoom/View/ReleaseRadio/Api/Api+RoomRadio.h +++ b/YuMi/Modules/YMRoom/View/ReleaseRadio/Api/Api+RoomRadio.h @@ -11,7 +11,11 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (RoomRadio) -+ (void)prohibitichargeChamberWireless:(HttpRequestHelperCompletion)completion roomId:(NSString *)roomId msg:(NSString *)msg; +// 发送开黑广播消息 +/// @param completion 完成 +/// @param roomId 房间ID +/// @param message 消息内容 ++ (void)sendRoomRadio:(HttpRequestHelperCompletion)completion roomId:(NSString *)roomId msg:(NSString *)msg; @end diff --git a/YuMi/Modules/YMRoom/View/ReleaseRadio/Api/Api+RoomRadio.m b/YuMi/Modules/YMRoom/View/ReleaseRadio/Api/Api+RoomRadio.m index 729b92a0..8c959da4 100644 --- a/YuMi/Modules/YMRoom/View/ReleaseRadio/Api/Api+RoomRadio.m +++ b/YuMi/Modules/YMRoom/View/ReleaseRadio/Api/Api+RoomRadio.m @@ -9,9 +9,10 @@ #import @implementation Api (RoomRadio) -+ (void)prohibitichargeChamberWireless:(HttpRequestHelperCompletion)completion roomId:(NSString *)roomId msg:(NSString *)msg { - NSString * fang = [NSString stringFromBase64String:@"YnJvYWQvc2VuZA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomId, msg, nil]; +// 发送开黑广播消息 ++ (void)sendRoomRadio:(HttpRequestHelperCompletion)completion roomId:(NSString *)roomId msg:(NSString *)msg { + NSString * fang = [NSString stringFromBase64String:@"YnJvYWQvc2VuZA=="];// + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomId, msg, nil]; } @end diff --git a/YuMi/Modules/YMRoom/View/ReleaseRadio/Model/XPReleaseRadioModel.h b/YuMi/Modules/YMRoom/View/ReleaseRadio/Model/XPReleaseRadioModel.h new file mode 100644 index 00000000..28d2de44 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ReleaseRadio/Model/XPReleaseRadioModel.h @@ -0,0 +1,32 @@ +// +// YMReleaseRadioModel.h +// YUMI +// +// Created by YUMI on 2021/12/31. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPReleaseRadioModel : NSObject + +///剩余次数 +@property (nonatomic, assign) NSInteger availableTimes; +///广播最大字数限制 +@property (nonatomic, assign) NSInteger maxWords; +///广播最少字数限制 +@property (nonatomic, assign) NSInteger minWords; +///再次发送广播时间间隔(分钟) +@property (nonatomic, assign) NSInteger minutes; +///再次发送广播的倒计秒数 +@property (nonatomic, assign) NSInteger seconds; +///发布广播总次数 +@property (nonatomic, assign) NSInteger total; +///推荐广播消息集合 +@property (nonatomic, strong) NSArray *recommends; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ReleaseRadio/Model/XPReleaseRadioModel.m b/YuMi/Modules/YMRoom/View/ReleaseRadio/Model/XPReleaseRadioModel.m new file mode 100644 index 00000000..1970e2ea --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ReleaseRadio/Model/XPReleaseRadioModel.m @@ -0,0 +1,12 @@ +// +// YMReleaseRadioModel.m +// YUMI +// +// Created by YUMI on 2021/12/31. +// + +#import "XPReleaseRadioModel.h" + +@implementation XPReleaseRadioModel + +@end diff --git a/YuMi/Modules/YMRoom/View/ReleaseRadio/Model/YUMIReleaseWirelessMatrix.h b/YuMi/Modules/YMRoom/View/ReleaseRadio/Model/YUMIReleaseWirelessMatrix.h deleted file mode 100644 index d5cce61a..00000000 --- a/YuMi/Modules/YMRoom/View/ReleaseRadio/Model/YUMIReleaseWirelessMatrix.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YMReleaseRadioModel.h -// YUMI -// -// Created by YUMI on 2021/12/31. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIReleaseWirelessMatrix : NSObject - -@property (nonatomic, assign) NSInteger availableTimes; -@property (nonatomic, assign) NSInteger maxWords; -@property (nonatomic, assign) NSInteger minWords; -@property (nonatomic, assign) NSInteger minutes; -@property (nonatomic, assign) NSInteger seconds; -@property (nonatomic, assign) NSInteger total; -@property (nonatomic, strong) NSArray *recommends; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ReleaseRadio/Model/YUMIReleaseWirelessMatrix.m b/YuMi/Modules/YMRoom/View/ReleaseRadio/Model/YUMIReleaseWirelessMatrix.m deleted file mode 100644 index 94751ceb..00000000 --- a/YuMi/Modules/YMRoom/View/ReleaseRadio/Model/YUMIReleaseWirelessMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMReleaseRadioModel.m -// YUMI -// -// Created by YUMI on 2021/12/31. -// - -#import "YUMIReleaseWirelessMatrix.h" - -@implementation YUMIReleaseWirelessMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/ReleaseRadio/Presenter/XPReleaseRadioPresenter.h b/YuMi/Modules/YMRoom/View/ReleaseRadio/Presenter/XPReleaseRadioPresenter.h new file mode 100644 index 00000000..9dedc5ce --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ReleaseRadio/Presenter/XPReleaseRadioPresenter.h @@ -0,0 +1,21 @@ +// +// YMReleaseRadioPresenter.h +// YUMI +// +// Created by YUMI on 2021/12/31. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPReleaseRadioPresenter : BaseMvpPresenter + +///发送房间广播 +/// @param roomId 房间ID +/// @param message 广播内容 +- (void)releaseRoomRadioWithRoomId:(NSString *)roomId message:(NSString *)message; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ReleaseRadio/Presenter/XPReleaseRadioPresenter.m b/YuMi/Modules/YMRoom/View/ReleaseRadio/Presenter/XPReleaseRadioPresenter.m new file mode 100644 index 00000000..66fd5637 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ReleaseRadio/Presenter/XPReleaseRadioPresenter.m @@ -0,0 +1,22 @@ +// +// YMReleaseRadioPresenter.m +// YUMI +// +// Created by YUMI on 2021/12/31. +// + +#import "XPReleaseRadioPresenter.h" +#import "Api+RoomRadio.h" +#import "XPReleaseRadioModel.h" +#import "XPReleaseRadioProtocol.h" +#import "AccountInfoStorage.h" + +@implementation XPReleaseRadioPresenter + +- (void)releaseRoomRadioWithRoomId:(NSString *)roomId message:(NSString *)message { + [Api sendRoomRadio:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] releaseRoomRadioSuccess]; + }] roomId:roomId msg:message]; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/ReleaseRadio/Presenter/YUMIReleaseWirelessExternalizer.h b/YuMi/Modules/YMRoom/View/ReleaseRadio/Presenter/YUMIReleaseWirelessExternalizer.h deleted file mode 100644 index 7b7ec19e..00000000 --- a/YuMi/Modules/YMRoom/View/ReleaseRadio/Presenter/YUMIReleaseWirelessExternalizer.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMReleaseRadioPresenter.h -// YUMI -// -// Created by YUMI on 2021/12/31. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIReleaseWirelessExternalizer : BaseMvpExternalizer - -- (void)releaseChamberWirelessAboutChamberId:(NSString *)roomId message:(NSString *)message; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ReleaseRadio/Presenter/YUMIReleaseWirelessExternalizer.m b/YuMi/Modules/YMRoom/View/ReleaseRadio/Presenter/YUMIReleaseWirelessExternalizer.m deleted file mode 100644 index da838f1a..00000000 --- a/YuMi/Modules/YMRoom/View/ReleaseRadio/Presenter/YUMIReleaseWirelessExternalizer.m +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMReleaseRadioPresenter.m -// YUMI -// -// Created by YUMI on 2021/12/31. -// - -#import "YUMIReleaseWirelessExternalizer.h" -#import "Api+RoomRadio.h" -#import "YUMIReleaseWirelessMatrix.h" -#import "FBCReleaseRadioCeremony.h" -#import "AccountAbstractStorage.h" - -@implementation YUMIReleaseWirelessExternalizer - -- (void)releaseChamberWirelessAboutChamberId:(NSString *)roomId message:(NSString *)message { - [Api prohibitichargeChamberWireless:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] releaseChamberWirelessAccomplishment]; - }] roomId:roomId msg:message]; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/ReleaseRadio/Protocol/FBCReleaseRadioCeremony.h b/YuMi/Modules/YMRoom/View/ReleaseRadio/Protocol/FBCReleaseRadioCeremony.h deleted file mode 100644 index f3b1432c..00000000 --- a/YuMi/Modules/YMRoom/View/ReleaseRadio/Protocol/FBCReleaseRadioCeremony.h +++ /dev/null @@ -1,14 +0,0 @@ -// -// YMReleaseRadioProtocol.h -// YUMI -// -// Created by YUMI on 2021/12/31. -// - -#import - -@protocol FBCReleaseRadioCeremony - -- (void)releaseChamberWirelessAccomplishment; - -@end diff --git a/YuMi/Modules/YMRoom/View/ReleaseRadio/Protocol/XPReleaseRadioProtocol.h b/YuMi/Modules/YMRoom/View/ReleaseRadio/Protocol/XPReleaseRadioProtocol.h new file mode 100644 index 00000000..31c82cad --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ReleaseRadio/Protocol/XPReleaseRadioProtocol.h @@ -0,0 +1,15 @@ +// +// YMReleaseRadioProtocol.h +// YUMI +// +// Created by YUMI on 2021/12/31. +// + +#import + +@protocol XPReleaseRadioProtocol + +///发布广播成功 +- (void)releaseRoomRadioSuccess; + +@end diff --git a/YuMi/Modules/YMRoom/View/ReleaseRadio/View/Cell/XPReleaseRadioTableViewCell.h b/YuMi/Modules/YMRoom/View/ReleaseRadio/View/Cell/XPReleaseRadioTableViewCell.h new file mode 100644 index 00000000..11722db4 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ReleaseRadio/View/Cell/XPReleaseRadioTableViewCell.h @@ -0,0 +1,26 @@ +// +// YMReleaseRadioTableViewCell.h +// YUMI +// +// Created by YUMI on 2021/12/30. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPReleaseRadioTableViewCell; +@protocol XPReleaseRadioTableViewCellDelegate + +- (void)xPReleaseRadioTableViewCellDidSelectCell:(XPReleaseRadioTableViewCell *)cell; + +@end + +@interface XPReleaseRadioTableViewCell : UITableViewCell + +@property (nonatomic, copy) NSString *title; + +@property (nonatomic, weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ReleaseRadio/View/Cell/XPReleaseRadioTableViewCell.m b/YuMi/Modules/YMRoom/View/ReleaseRadio/View/Cell/XPReleaseRadioTableViewCell.m new file mode 100644 index 00000000..c9a116cb --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ReleaseRadio/View/Cell/XPReleaseRadioTableViewCell.m @@ -0,0 +1,87 @@ +// +// YMReleaseRadioTableViewCell.m +// YUMI +// +// Created by YUMI on 2021/12/30. +// + +#import "XPReleaseRadioTableViewCell.h" +#import "DJDKMIMOMColor.h" +#import + +@interface XPReleaseRadioTableViewCell() + +///背景 +@property (nonatomic, strong) UIView *bgView; +///标题 +@property (nonatomic, strong) UILabel *titleLabel; + +@end + +@implementation XPReleaseRadioTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.bgView]; + [self.contentView addSubview:self.titleLabel]; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onBgViewClick:)]; + [self.bgView addGestureRecognizer:tap]; +} + +- (void)initSubViewConstraints { + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.contentView); + make.centerY.mas_equalTo(self.contentView); + make.height.mas_equalTo(24); + make.right.mas_equalTo(self.titleLabel).mas_offset(8); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.bgView).mas_offset(8); + make.centerY.mas_equalTo(self.contentView); + make.height.mas_equalTo(18); + }]; +} + +- (void)setTitle:(NSString *)title { + self.titleLabel.text = title; +} + +#pragma mark - event +- (void)onBgViewClick:(UITapGestureRecognizer *)ges { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPReleaseRadioTableViewCellDidSelectCell:)]) { + [self.delegate xPReleaseRadioTableViewCellDidSelectCell:self]; + } +} + +#pragma mark - Getters And Setters +- (UIView *)bgView { + if (!_bgView) { + _bgView = [[UIView alloc] init]; + _bgView.layer.cornerRadius = 12; + _bgView.layer.masksToBounds = YES; + _bgView.layer.borderColor = UIColorFromRGB(0xE9EBEC).CGColor; + _bgView.layer.borderWidth = 1; + _bgView.backgroundColor = UIColorFromRGB(0xFAFAFE); + } + return _bgView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:12]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/ReleaseRadio/View/Cell/YUMIReleaseWirelessTabulationRegardElement.h b/YuMi/Modules/YMRoom/View/ReleaseRadio/View/Cell/YUMIReleaseWirelessTabulationRegardElement.h deleted file mode 100644 index 4e239401..00000000 --- a/YuMi/Modules/YMRoom/View/ReleaseRadio/View/Cell/YUMIReleaseWirelessTabulationRegardElement.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YMReleaseRadioTableViewCell.h -// YUMI -// -// Created by YUMI on 2021/12/30. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIReleaseWirelessTabulationRegardElement; -@protocol FBCReleaseRadioTabulationViweElementRepresendtation - -- (void)yUMIReleaseWirelessTarbsultowardsionViweElementDidChosenElement:(YUMIReleaseWirelessTabulationRegardElement *)cell; - -@end - -@interface YUMIReleaseWirelessTabulationRegardElement : UITableViewCell - -@property (nonatomic, copy) NSString *title; - -@property (nonatomic, weak) id delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ReleaseRadio/View/Cell/YUMIReleaseWirelessTabulationRegardElement.m b/YuMi/Modules/YMRoom/View/ReleaseRadio/View/Cell/YUMIReleaseWirelessTabulationRegardElement.m deleted file mode 100644 index 9340b49b..00000000 --- a/YuMi/Modules/YMRoom/View/ReleaseRadio/View/Cell/YUMIReleaseWirelessTabulationRegardElement.m +++ /dev/null @@ -1,85 +0,0 @@ -// -// YMReleaseRadioTableViewCell.m -// YUMI -// -// Created by YUMI on 2021/12/30. -// - -#import "YUMIReleaseWirelessTabulationRegardElement.h" -#import "DJDKMIMOMColor.h" -#import - -@interface YUMIReleaseWirelessTabulationRegardElement() - -@property (nonatomic, strong) UIView *backgroundRegard; -@property (nonatomic, strong) UILabel *titleLabel; - -@end - -@implementation YUMIReleaseWirelessTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.backgroundRegard]; - [self.contentView addSubview:self.titleLabel]; - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onBackgroundRegardTicktack:)]; - [self.backgroundRegard addGestureRecognizer:tap]; -} - -- (void)initChildLyRestrictions { - [self.backgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.contentView); - make.centerY.mas_equalTo(self.contentView); - make.height.mas_equalTo(24); - make.right.mas_equalTo(self.titleLabel).mas_offset(8); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.backgroundRegard).mas_offset(8); - make.centerY.mas_equalTo(self.contentView); - make.height.mas_equalTo(18); - }]; -} - -- (void)setTitle:(NSString *)title { - self.titleLabel.text = title; -} - -#pragma mark - event -- (void)onBackgroundRegardTicktack:(UITapGestureRecognizer *)ges { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIReleaseWirelessTarbsultowardsionViweElementDidChosenElement:)]) { - [self.delegate yUMIReleaseWirelessTarbsultowardsionViweElementDidChosenElement:self]; - } -} - -#pragma mark - Getters And Setters -- (UIView *)backgroundRegard { - if (!_backgroundRegard) { - _backgroundRegard = [[UIView alloc] init]; - _backgroundRegard.layer.cornerRadius = 12; - _backgroundRegard.layer.masksToBounds = YES; - _backgroundRegard.layer.borderColor = UIColorFromRGB(0xE9EBEC).CGColor; - _backgroundRegard.layer.borderWidth = 1; - _backgroundRegard.backgroundColor = UIColorFromRGB(0xFAFAFE); - } - return _backgroundRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:12]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/ReleaseRadio/View/XPReleaseRadioView.h b/YuMi/Modules/YMRoom/View/ReleaseRadio/View/XPReleaseRadioView.h new file mode 100644 index 00000000..f65f6d0b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ReleaseRadio/View/XPReleaseRadioView.h @@ -0,0 +1,16 @@ +// +// YMReleaseRadioView.h +// YUMI +// +// Created by YUMI on 2021/12/29. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPReleaseRadioView : UIView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ReleaseRadio/View/XPReleaseRadioView.m b/YuMi/Modules/YMRoom/View/ReleaseRadio/View/XPReleaseRadioView.m new file mode 100644 index 00000000..30f07dd5 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ReleaseRadio/View/XPReleaseRadioView.m @@ -0,0 +1,19 @@ +// +// YMReleaseRadioView.m +// YUMI +// +// Created by YUMI on 2021/12/29. +// + +#import "XPReleaseRadioView.h" + +@implementation XPReleaseRadioView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + + } + return self; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/ReleaseRadio/View/XPReleaseRadioViewController.h b/YuMi/Modules/YMRoom/View/ReleaseRadio/View/XPReleaseRadioViewController.h new file mode 100644 index 00000000..ac81e5cc --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ReleaseRadio/View/XPReleaseRadioViewController.h @@ -0,0 +1,22 @@ +// +// YMReleaseRadioViewController.h +// YUMI +// +// Created by YUMI on 2021/12/29. +// + +#import "MvpViewController.h" +#import "RoomHostDelegate.h" + +NS_ASSUME_NONNULL_BEGIN + +@class XPReleaseRadioModel; +@interface XPReleaseRadioViewController : MvpViewController + +- (instancetype)initWithDelegate:(id)delegate; + +@property (nonatomic, strong) XPReleaseRadioModel *model; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ReleaseRadio/View/XPReleaseRadioViewController.m b/YuMi/Modules/YMRoom/View/ReleaseRadio/View/XPReleaseRadioViewController.m new file mode 100644 index 00000000..9ffdf7b3 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/ReleaseRadio/View/XPReleaseRadioViewController.m @@ -0,0 +1,516 @@ +// +// YMReleaseRadioViewController.m +// YUMI +// +// Created by YUMI on 2021/12/29. +// + +#import "XPReleaseRadioViewController.h" +///tool +#import +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "XNDJTDDLoadingTool.h" +///Third +#import +#import "UIImage+Utils.h" +#import "NSArray+Safe.h" +///view +#import "XPReleaseRadioTableViewCell.h" +///P +#import "XPReleaseRadioPresenter.h" +#import "XPReleaseRadioProtocol.h" +///model +#import "RoomInfoModel.h" +#import "XPReleaseRadioModel.h" + +static NSString *const KXPReleaseRadioTableViewCellIdentifier = @"KXPReleaseRadioTableViewCellIdentifier"; + +@interface XPReleaseRadioViewController () + +///host代理 +@property (nonatomic,weak) idhostDelegate; + +///上面点击的view +@property (nonatomic,strong) UIView *topTapView; +///下面点击的view +@property (nonatomic,strong) UIView *bottomTapView; +///中间内容的容器 +@property (nonatomic,strong) UIImageView *backView; +///关闭按钮 +@property (nonatomic, strong) UIButton *closeButton; +///顶部标题 +@property (nonatomic,strong) UILabel *headLabel; +///顶部描述 +@property (nonatomic,strong) UILabel *headDescLabel; +///广播内容标题 +@property (nonatomic,strong) UILabel *radioTitleLabel; +///剩余次数容器 +@property (nonatomic, strong) UIStackView *releaseNumView; +///剩余次数标题 +@property (nonatomic, strong) UILabel *releaseNumTitle; +///剩余次数 +@property (nonatomic, strong) UILabel *releaseNumLabel; +///广播输入框 +@property (nonatomic,strong) YYTextView *radioTextView; +///字数计数 +@property (nonatomic,strong) UILabel *maxCountLabel; +///广播文字列表 +@property (nonatomic, strong) UITableView *tableView; +///发布按钮 +@property (nonatomic, strong) UIButton *releaseButton; +///发布时间说明(可以发布时显示) +@property (nonatomic, strong) UILabel *releaseTimeDescLabel; +///发布后倒计时说明容器 +@property (nonatomic,strong) UIView *countDownStackView; +///倒计时 +@property (nonatomic,strong) UILabel *countDownLabel; +///倒计时说明 +@property (nonatomic, strong) UILabel *countDownDescLabel; + +@property (strong, nonatomic) dispatch_source_t timer; + +@end + +@implementation XPReleaseRadioViewController + +- (instancetype)initWithDelegate:(id)delegate { + if (self = [super init]) { + self.hostDelegate = delegate; + } + return self; +} + +- (XPReleaseRadioPresenter *)createPresenter { + return [[XPReleaseRadioPresenter alloc] init]; +} + +- (void)dealloc { + if (self.timer != nil) { + dispatch_source_cancel(self.timer); + } +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - XPReleaseRadioProtocol +///发布广播成功 +- (void)releaseRoomRadioSuccess { + [XNDJTDDLoadingTool showSuccessWithMessage:YMLocalizedString(@"XPReleaseRadioViewController0")]; + [self dismissViewControllerAnimated:YES completion:nil]; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + [self.view endEditing:YES]; +} + +#pragma mark - tableViewDelegate +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.model.recommends.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + XPReleaseRadioTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:KXPReleaseRadioTableViewCellIdentifier]; + cell.title = [self.model.recommends safeObjectAtIndex1:indexPath.row]; + cell.selectionStyle = UITableViewCellSelectionStyleNone; + cell.delegate = self; + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [self.radioTextView resignFirstResponder]; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 32; +} + +#pragma mark - XPReleaseRadioTableViewCellDelegate +- (void)xPReleaseRadioTableViewCellDidSelectCell:(XPReleaseRadioTableViewCell *)cell { + NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; + self.radioTextView.text = [self.model.recommends safeObjectAtIndex1:indexPath.row]; + [self.radioTextView endEditing:YES]; +} + +- (void)setModel:(XPReleaseRadioModel *)model { + _model = model; + [self setupData]; + [self.tableView reloadData]; +} + +- (void)setupData { + self.releaseNumLabel.text = [NSString stringWithFormat:@"%zd/%zd",self.model.availableTimes, self.model.total]; + self.releaseTimeDescLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPReleaseRadioViewController1"), self.model.minutes]; + self.radioTextView.placeholderText = [NSString stringWithFormat:@"输入内容不能少于%zd个字,请文明发言哦~", self.model.minWords] ; + self.releaseTimeDescLabel.hidden = self.model.seconds > 0; + self.countDownStackView.hidden = self.model.seconds <= 0; + if (self.model.seconds > 0) { + [self openCountdown:self.model.seconds]; + } +} + +#pragma mark - Private Method +- (void)initSubViews { + self.view.backgroundColor = [UIColor clearColor]; + [self.view addSubview:self.topTapView]; + [self.view addSubview:self.backView]; + [self.view addSubview:self.bottomTapView]; + + [self.backView addSubview:self.closeButton]; + [self.backView addSubview:self.headLabel]; + [self.backView addSubview:self.headDescLabel]; + [self.backView addSubview:self.radioTitleLabel]; + [self.backView addSubview:self.releaseNumView]; + [self.releaseNumView addArrangedSubview:self.releaseNumTitle]; + [self.releaseNumView addArrangedSubview:self.releaseNumLabel]; + + [self.backView addSubview:self.radioTextView]; + [self.backView addSubview:self.maxCountLabel]; + [self.backView addSubview:self.tableView]; + [self.backView addSubview:self.releaseButton]; + [self.backView addSubview:self.releaseTimeDescLabel]; + [self.backView addSubview:self.countDownStackView]; + + [self.countDownStackView addSubview:self.countDownLabel]; + [self.countDownStackView addSubview:self.countDownDescLabel]; +} + +- (void)initSubViewConstraints { + [self.topTapView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.left.right.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.backView.mas_top); + }]; + + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(300); + make.height.mas_equalTo(398); + make.centerY.centerX.mas_equalTo(self.view); + }]; + + [self.bottomTapView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.top.mas_equalTo(self.backView.mas_bottom); + make.bottom.mas_equalTo(self.view); + }]; + + [self.closeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(22); + make.top.mas_equalTo(self.backView).mas_offset(11); + make.right.mas_equalTo(self.backView).mas_offset(-15); + }]; + + [self.headLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.backView); + make.top.mas_equalTo(self.backView).offset(24); + make.height.mas_equalTo(24); + }]; + + [self.headDescLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.backView); + make.top.mas_equalTo(self.headLabel.mas_bottom).offset(12); + make.height.mas_equalTo(14); + }]; + + [self.radioTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.headDescLabel.mas_bottom).offset(16); + make.height.mas_equalTo(16); + make.left.mas_equalTo(self.backView).mas_offset(16); + }]; + + [self.releaseNumView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.radioTitleLabel); + make.left.mas_equalTo(self.radioTitleLabel.mas_right).mas_offset(4); + make.height.mas_equalTo(20); + }]; + + [self.radioTextView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backView).inset(16); + make.top.mas_equalTo(self.radioTitleLabel.mas_bottom).mas_offset(8); + make.height.mas_equalTo(65); + }]; + + [self.maxCountLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.bottom.mas_equalTo(self.radioTextView).inset(3); + make.height.mas_equalTo(12); + }]; + + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.radioTextView); + make.top.mas_equalTo(self.radioTextView.mas_bottom).mas_offset(8); + make.height.mas_equalTo(115); + }]; + + [self.releaseButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.tableView.mas_bottom).mas_offset(8); + make.centerX.mas_equalTo(self.backView); + make.width.mas_equalTo(188); + make.height.mas_equalTo(40); + }]; + + [self.releaseTimeDescLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.backView); + make.top.mas_equalTo(self.releaseButton.mas_bottom).mas_offset(10); + make.height.mas_equalTo(14); + }]; + + [self.countDownStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(15); + make.centerX.mas_equalTo(self.backView); + make.top.mas_equalTo(self.releaseButton.mas_bottom).mas_offset(10); + }]; + [self.countDownLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.bottom.mas_equalTo(self.countDownStackView); + make.right.mas_equalTo(self.countDownDescLabel.mas_left); + }]; + [self.countDownDescLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.right.bottom.mas_equalTo(self.countDownStackView); + }]; +} + +- (void)openCountdown:(NSInteger)countDown{ + __block NSInteger time = countDown; //倒计时时间 + if (_timer != nil) { + dispatch_source_cancel(_timer); + } + dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); + _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); + dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行 + dispatch_source_set_event_handler(_timer, ^{ + if(time <= 0){ //倒计时结束,关闭 + @kWeakify(self); + dispatch_source_cancel(self.timer); + dispatch_async(dispatch_get_main_queue(), ^{ + @kStrongify(self); + self.releaseTimeDescLabel.hidden = NO; + self.countDownStackView.hidden = YES; + if (self.model.availableTimes > 0 && self.radioTextView.text.length >= self.model.minWords) { + self.releaseButton.enabled = YES; + } + }); + }else{ + NSInteger seconds = time; + dispatch_async(dispatch_get_main_queue(), ^{ + //设置按钮显示读秒效果 + self.countDownLabel.text = [NSString stringWithFormat:@"%zds", seconds]; + }); + time--; + } + }); + dispatch_resume(_timer); +} + +- (void)onReleaseButtonClick:(UIButton *)button { + [self.presenter releaseRoomRadioWithRoomId:@(self.hostDelegate.getRoomInfo.roomId).stringValue message:self.radioTextView.text]; +} + +#pragma mark - Event Response +- (void)dismissTapRecognizer:(UITapGestureRecognizer *)tap { + [self dismissViewControllerAnimated:YES completion:nil]; +} + +- (void)onCloseButtonClick:(UIButton *)button { + [self dismissViewControllerAnimated:YES completion:nil]; +} + +#pragma mark - YYTextViewDelegate +- (void)textViewDidChange:(YYTextView *)textView { + NSInteger maxLength = self.model.maxWords ? self.model.maxWords : 20; + NSInteger minLength = self.model.minWords ? self.model.minWords : 5; + if (textView.text.length > maxLength) { + textView.text = [textView.text substringToIndex:maxLength]; + } + self.maxCountLabel.text = [NSString stringWithFormat:@"%zd/%ld", textView.text.length, maxLength]; + if (textView.text.length >= minLength) { + if (self.model.availableTimes > 0 && self.countDownStackView.hidden) { + self.releaseButton.enabled = YES; + } + } else { + self.releaseButton.enabled = NO; + } +} + +#pragma mark - Getters And Setters +- (UIView *)topTapView { + if (!_topTapView) { + _topTapView = [[UIView alloc] init]; + _topTapView.backgroundColor = [UIColor clearColor]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissTapRecognizer:)]; + [_topTapView addGestureRecognizer:tap]; + } + return _topTapView; +} +- (UIView *)bottomTapView { + if (!_bottomTapView) { + _bottomTapView = [[UIView alloc] init]; + _bottomTapView.backgroundColor = [UIColor clearColor]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissTapRecognizer:)]; + [_bottomTapView addGestureRecognizer:tap]; + } + return _bottomTapView; +} +- (UIImageView *)backView { + if (!_backView) { + _backView = [[UIImageView alloc] init]; + _backView.userInteractionEnabled = YES; + _backView.image = [UIImage imageNamed:@"room_radio_back"]; + } + return _backView; +} +- (UIButton *)closeButton { + if (!_closeButton) { + _closeButton = [[UIButton alloc] init]; + [_closeButton setBackgroundImage:[UIImage imageNamed:@"room_radio_release_close"] forState:UIControlStateNormal]; + [_closeButton addTarget:self action:@selector(onCloseButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + } + return _closeButton; +} +- (UILabel *)headLabel { + if (!_headLabel) { + _headLabel = [[UILabel alloc] init]; + _headLabel.text = YMLocalizedString(@"XPReleaseRadioViewController3"); + _headLabel.font = [UIFont systemFontOfSize:24 weight:UIFontWeightSemibold]; + _headLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _headLabel; +} +- (UILabel *)headDescLabel { + if (!_headDescLabel) { + _headDescLabel = [[UILabel alloc] init]; + _headDescLabel.text = @"你将在首页发布一条广播,邀请其他用户进入当前房间!"; + _headDescLabel.font = [UIFont systemFontOfSize:10]; + _headDescLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _headDescLabel; +} +- (UILabel *)radioTitleLabel { + if (!_radioTitleLabel) { + UILabel *label = [[UILabel alloc] init]; + label.text = YMLocalizedString(@"XPReleaseRadioViewController5"); + label.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + label.textColor = [DJDKMIMOMColor mainTextColor]; + _radioTitleLabel = label; + } + return _radioTitleLabel; +} +- (UIStackView *)releaseNumView { + if (!_releaseNumView) { + _releaseNumView = [[UIStackView alloc] init]; + _releaseNumView.axis = UILayoutConstraintAxisHorizontal; + _releaseNumView.distribution = UIStackViewDistributionFill; + _releaseNumView.alignment = UIStackViewAlignmentCenter; + _releaseNumView.spacing = 2; + } + return _releaseNumView; +} +- (UILabel *)releaseNumTitle { + if (!_releaseNumTitle) { + UILabel *label = [[UILabel alloc] init]; + label.text = YMLocalizedString(@"XPReleaseRadioViewController6"); + label.font = [UIFont systemFontOfSize:12]; + label.textColor = [DJDKMIMOMColor secondTextColor]; + _releaseNumTitle = label; + } + return _releaseNumTitle; +} +- (UILabel *)releaseNumLabel { + if (!_releaseNumLabel) { + UILabel *label = [[UILabel alloc] init]; + label.text = @"0/3"; + label.font = [UIFont systemFontOfSize:12]; + label.textColor = UIColorFromRGB(0xFF9F00); + _releaseNumLabel = label; + } + return _releaseNumLabel; +} +- (YYTextView *)radioTextView { + if (!_radioTextView) { + _radioTextView = [[YYTextView alloc] init]; + _radioTextView.backgroundColor = UIColorFromRGB(0xF1F1FA); + _radioTextView.layer.cornerRadius = 8; + _radioTextView.layer.masksToBounds = YES; + _radioTextView.placeholderText = @"输入内容不能少于5个字,请文明发言哦~"; + _radioTextView.placeholderTextColor = [DJDKMIMOMColor textThirdColor]; + _radioTextView.placeholderFont = [UIFont systemFontOfSize:12]; + _radioTextView.font = [UIFont systemFontOfSize:12]; + _radioTextView.textColor = [DJDKMIMOMColor mainTextColor]; + _radioTextView.delegate = self; + } + return _radioTextView; +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] init]; + _tableView.delegate = self; + _tableView.dataSource = self; + [_tableView registerClass:XPReleaseRadioTableViewCell.class forCellReuseIdentifier:KXPReleaseRadioTableViewCellIdentifier]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + } + return _tableView; +} +- (UIButton *)releaseButton { + if (!_releaseButton) { + _releaseButton = [[UIButton alloc] init]; + [_releaseButton setTitle:YMLocalizedString(@"XPReleaseRadioViewController8") forState:UIControlStateNormal]; + [_releaseButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_releaseButton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0xD2D5D7)] forState:UIControlStateDisabled]; + [_releaseButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFFA936), UIColorFromRGB(0xFFCB47)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(188, 40)] forState:UIControlStateNormal]; + _releaseButton.enabled = NO; + _releaseButton.layer.cornerRadius = 20; + _releaseButton.layer.masksToBounds = YES; + [_releaseButton addTarget:self action:@selector(onReleaseButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + } + return _releaseButton; +} +- (UILabel *)releaseTimeDescLabel { + if (!_releaseTimeDescLabel) { + _releaseTimeDescLabel = [[UILabel alloc] init]; + _releaseTimeDescLabel.text = YMLocalizedString(@"XPReleaseRadioViewController9"); + _releaseTimeDescLabel.font = [UIFont systemFontOfSize:10]; + _releaseTimeDescLabel.textColor = [DJDKMIMOMColor textThirdColor]; + } + return _releaseTimeDescLabel; +} +- (UIView *)countDownStackView { + if (!_countDownStackView) { + _countDownStackView = [[UIView alloc] init]; + _countDownStackView.hidden = YES; + } + return _countDownStackView; +} +- (UILabel *)countDownLabel { + if (!_countDownLabel) { + UILabel *label = [[UILabel alloc] init]; + label.text = @"0s"; + label.font = [UIFont systemFontOfSize:10]; + label.textColor = UIColorFromRGB(0xFDA615); + _countDownLabel = label; + } + return _countDownLabel; +} +- (UILabel *)countDownDescLabel { + if (!_countDownDescLabel) { + UILabel *label = [[UILabel alloc] init]; + label.text = YMLocalizedString(@"XPReleaseRadioViewController10"); + label.font = [UIFont systemFontOfSize:10]; + label.textColor = [DJDKMIMOMColor textThirdColor]; + _countDownDescLabel = label; + } + return _countDownDescLabel; +} + +- (UILabel *)maxCountLabel { + if (!_maxCountLabel) { + UILabel *label = [[UILabel alloc] init]; + label.text = @"0/20"; + label.font = [UIFont systemFontOfSize:12]; + label.textColor = [DJDKMIMOMColor textThirdColor]; + _maxCountLabel = label; + } + return _maxCountLabel; +} +@end diff --git a/YuMi/Modules/YMRoom/View/ReleaseRadio/View/YUMIReleaseWirelessRegard.h b/YuMi/Modules/YMRoom/View/ReleaseRadio/View/YUMIReleaseWirelessRegard.h deleted file mode 100644 index 66894cfa..00000000 --- a/YuMi/Modules/YMRoom/View/ReleaseRadio/View/YUMIReleaseWirelessRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMReleaseRadioView.h -// YUMI -// -// Created by YUMI on 2021/12/29. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIReleaseWirelessRegard : UIView - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ReleaseRadio/View/YUMIReleaseWirelessRegard.m b/YuMi/Modules/YMRoom/View/ReleaseRadio/View/YUMIReleaseWirelessRegard.m deleted file mode 100644 index 584979f0..00000000 --- a/YuMi/Modules/YMRoom/View/ReleaseRadio/View/YUMIReleaseWirelessRegard.m +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMReleaseRadioView.m -// YUMI -// -// Created by YUMI on 2021/12/29. -// - -#import "YUMIReleaseWirelessRegard.h" - -@implementation YUMIReleaseWirelessRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - - } - return self; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/ReleaseRadio/View/YUMIReleaseWirelessRegardGovernancer.h b/YuMi/Modules/YMRoom/View/ReleaseRadio/View/YUMIReleaseWirelessRegardGovernancer.h deleted file mode 100644 index 3ddbd6f6..00000000 --- a/YuMi/Modules/YMRoom/View/ReleaseRadio/View/YUMIReleaseWirelessRegardGovernancer.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMReleaseRadioViewController.h -// YUMI -// -// Created by YUMI on 2021/12/29. -// - -#import "MvpRegardGovernancer.h" -#import "ChamberHostRepresendtation.h" - -NS_ASSUME_NONNULL_BEGIN - -@class YUMIReleaseWirelessMatrix; -@interface YUMIReleaseWirelessRegardGovernancer : MvpRegardGovernancer - -- (instancetype)initWithDelegate:(id)delegate; - -@property (nonatomic, strong) YUMIReleaseWirelessMatrix *model; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ReleaseRadio/View/YUMIReleaseWirelessRegardGovernancer.m b/YuMi/Modules/YMRoom/View/ReleaseRadio/View/YUMIReleaseWirelessRegardGovernancer.m deleted file mode 100644 index 94447aee..00000000 --- a/YuMi/Modules/YMRoom/View/ReleaseRadio/View/YUMIReleaseWirelessRegardGovernancer.m +++ /dev/null @@ -1,491 +0,0 @@ -// -// YMReleaseRadioViewController.m -// YUMI -// -// Created by YUMI on 2021/12/29. -// - -#import "YUMIReleaseWirelessRegardGovernancer.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "XNDJTBWGLoadingTool.h" -#import -#import "UIImage+Utils.h" -#import "NSArray+Safe.h" -#import "YUMIReleaseWirelessTabulationRegardElement.h" -#import "YUMIReleaseWirelessExternalizer.h" -#import "FBCReleaseRadioCeremony.h" -#import "ChamberAbstractMatrix.h" -#import "YUMIReleaseWirelessMatrix.h" - -static NSString *const KXPReleaseRadioTableViewCellIdentifier = @"KXPReleaseRadioTableViewCellIdentifier"; - -@interface YUMIReleaseWirelessRegardGovernancer () - -@property (nonatomic,weak) idhostRepresedtation; - -@property (nonatomic,strong) UIView *apexBeatRegard; -@property (nonatomic,strong) UIView *extremeBeatRegard; -@property (nonatomic,strong) UIImageView *encourageRegard; -@property (nonatomic, strong) UIButton *concludeBtuton; -@property (nonatomic,strong) UILabel *intelligenceSequencignation; -@property (nonatomic,strong) UILabel *intelligenceSequenceSequencignation; -@property (nonatomic,strong) UILabel *radioChampionSequencignation; -@property (nonatomic, strong) UIStackView *releaseFigureRegard; -@property (nonatomic, strong) UILabel *releaseFigureChampion; -@property (nonatomic, strong) UILabel *releaseFigureSequencignation; -@property (nonatomic,strong) YYTextView *radioEssayRegard; -@property (nonatomic,strong) UILabel *largestComputationSequencignation; -@property (nonatomic, strong) UITableView *tableView; -@property (nonatomic, strong) UIButton *releaseBtuton; -@property (nonatomic, strong) UILabel *releaseIntratemporalSequenceSequencignation; -@property (nonatomic,strong) UIView *computationPubescenceHierarchyRegard; -@property (nonatomic,strong) UILabel *computationPubescenceSequencignation; -@property (nonatomic, strong) UILabel *computationPubescenceSequenceSequencignation; - -@property (strong, nonatomic) dispatch_source_t timer; - -@end - -@implementation YUMIReleaseWirelessRegardGovernancer - -- (instancetype)initWithDelegate:(id)delegate { - if (self = [super init]) { - self.hostRepresedtation = delegate; - } - return self; -} - -- (YUMIReleaseWirelessExternalizer *)producePresimport { - return [[YUMIReleaseWirelessExternalizer alloc] init]; -} - -- (void)dealloc { - if (self.timer != nil) { - dispatch_source_cancel(self.timer); - } -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - FBCReleaseRadioCeremony -- (void)releaseChamberWirelessAccomplishment { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:YMLocalizedString(@"YUMI_Release_Radio_View_Controller_0")]; - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { - [self.view endEditing:YES]; -} - -#pragma mark - tableViewDelegate -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.model.recommends.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - YUMIReleaseWirelessTabulationRegardElement *cell = [tableView dequeueReusableCellWithIdentifier:KXPReleaseRadioTableViewCellIdentifier]; - cell.title = [self.model.recommends secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.selectionStyle = UITableViewCellSelectionStyleNone; - cell.delegate = self; - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [self.radioEssayRegard resignFirstResponder]; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 32; -} - -#pragma mark - FBCReleaseRadioTabulationViweElementRepresendtation -- (void)yUMIReleaseWirelessTarbsultowardsionViweElementDidChosenElement:(YUMIReleaseWirelessTabulationRegardElement *)cell { - NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; - self.radioEssayRegard.text = [self.model.recommends secureGroalTowardsIndictowardsrix1:indexPath.row]; - [self.radioEssayRegard endEditing:YES]; -} - -- (void)setModel:(YUMIReleaseWirelessMatrix *)model { - _model = model; - [self setupData]; - [self.tableView reloadData]; -} - -- (void)setupData { - self.releaseFigureSequencignation.text = [NSString stringWithFormat:@"%zd/%zd",self.model.availableTimes, self.model.total]; - self.releaseIntratemporalSequenceSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Release_Radio_View_Controller_1"), self.model.minutes]; - self.radioEssayRegard.placeholderText = [NSString stringWithFormat:@"输入内容不能少于%zd个字,请文明发言哦~", self.model.minWords] ; - self.releaseIntratemporalSequenceSequencignation.hidden = self.model.seconds > 0; - self.computationPubescenceHierarchyRegard.hidden = self.model.seconds <= 0; - if (self.model.seconds > 0) { - [self unfoildComputtowardsiondown:self.model.seconds]; - } -} - -#pragma mark - Private Method -- (void)initSubViews { - self.view.backgroundColor = [UIColor clearColor]; - [self.view addSubview:self.apexBeatRegard]; - [self.view addSubview:self.encourageRegard]; - [self.view addSubview:self.extremeBeatRegard]; - - [self.encourageRegard addSubview:self.concludeBtuton]; - [self.encourageRegard addSubview:self.intelligenceSequencignation]; - [self.encourageRegard addSubview:self.intelligenceSequenceSequencignation]; - [self.encourageRegard addSubview:self.radioChampionSequencignation]; - [self.encourageRegard addSubview:self.releaseFigureRegard]; - [self.releaseFigureRegard addArrangedSubview:self.releaseFigureChampion]; - [self.releaseFigureRegard addArrangedSubview:self.releaseFigureSequencignation]; - - [self.encourageRegard addSubview:self.radioEssayRegard]; - [self.encourageRegard addSubview:self.largestComputationSequencignation]; - [self.encourageRegard addSubview:self.tableView]; - [self.encourageRegard addSubview:self.releaseBtuton]; - [self.encourageRegard addSubview:self.releaseIntratemporalSequenceSequencignation]; - [self.encourageRegard addSubview:self.computationPubescenceHierarchyRegard]; - - [self.computationPubescenceHierarchyRegard addSubview:self.computationPubescenceSequencignation]; - [self.computationPubescenceHierarchyRegard addSubview:self.computationPubescenceSequenceSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.apexBeatRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.left.right.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.encourageRegard.mas_top); - }]; - - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(300); - make.height.mas_equalTo(398); - make.centerY.centerX.mas_equalTo(self.view); - }]; - - [self.extremeBeatRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.top.mas_equalTo(self.encourageRegard.mas_bottom); - make.bottom.mas_equalTo(self.view); - }]; - - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(22); - make.top.mas_equalTo(self.encourageRegard).mas_offset(11); - make.right.mas_equalTo(self.encourageRegard).mas_offset(-15); - }]; - - [self.intelligenceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.encourageRegard); - make.top.mas_equalTo(self.encourageRegard).offset(24); - make.height.mas_equalTo(24); - }]; - - [self.intelligenceSequenceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.encourageRegard); - make.top.mas_equalTo(self.intelligenceSequencignation.mas_bottom).offset(12); - make.height.mas_equalTo(14); - }]; - - [self.radioChampionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.intelligenceSequenceSequencignation.mas_bottom).offset(16); - make.height.mas_equalTo(16); - make.left.mas_equalTo(self.encourageRegard).mas_offset(16); - }]; - - [self.releaseFigureRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.radioChampionSequencignation); - make.left.mas_equalTo(self.radioChampionSequencignation.mas_right).mas_offset(4); - make.height.mas_equalTo(20); - }]; - - [self.radioEssayRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageRegard).inset(16); - make.top.mas_equalTo(self.radioChampionSequencignation.mas_bottom).mas_offset(8); - make.height.mas_equalTo(65); - }]; - - [self.largestComputationSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.bottom.mas_equalTo(self.radioEssayRegard).inset(3); - make.height.mas_equalTo(12); - }]; - - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.radioEssayRegard); - make.top.mas_equalTo(self.radioEssayRegard.mas_bottom).mas_offset(8); - make.height.mas_equalTo(115); - }]; - - [self.releaseBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.tableView.mas_bottom).mas_offset(8); - make.centerX.mas_equalTo(self.encourageRegard); - make.width.mas_equalTo(188); - make.height.mas_equalTo(40); - }]; - - [self.releaseIntratemporalSequenceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.encourageRegard); - make.top.mas_equalTo(self.releaseBtuton.mas_bottom).mas_offset(10); - make.height.mas_equalTo(14); - }]; - - [self.computationPubescenceHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(15); - make.centerX.mas_equalTo(self.encourageRegard); - make.top.mas_equalTo(self.releaseBtuton.mas_bottom).mas_offset(10); - }]; - [self.computationPubescenceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.top.bottom.mas_equalTo(self.computationPubescenceHierarchyRegard); - make.right.mas_equalTo(self.computationPubescenceSequenceSequencignation.mas_left); - }]; - [self.computationPubescenceSequenceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.right.bottom.mas_equalTo(self.computationPubescenceHierarchyRegard); - }]; -} - -- (void)unfoildComputtowardsiondown:(NSInteger)countDown{ - __block NSInteger time = countDown; - if (_timer != nil) { - dispatch_source_cancel(_timer); - } - dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); - _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); - dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); - dispatch_source_set_event_handler(_timer, ^{ - if(time <= 0){ - @kWeakify(self); - dispatch_source_cancel(self.timer); - dispatch_async(dispatch_get_main_queue(), ^{ - @kStrongify(self); - self.releaseIntratemporalSequenceSequencignation.hidden = NO; - self.computationPubescenceHierarchyRegard.hidden = YES; - if (self.model.availableTimes > 0 && self.radioEssayRegard.text.length >= self.model.minWords) { - self.releaseBtuton.enabled = YES; - } - }); - }else{ - NSInteger seconds = time; - dispatch_async(dispatch_get_main_queue(), ^{ - - self.computationPubescenceSequencignation.text = [NSString stringWithFormat:@"%zds", seconds]; - }); - time--; - } - }); - dispatch_resume(_timer); -} - -- (void)onReleaseBtutonTicktack:(UIButton *)button { - [self.presimport releaseChamberWirelessAboutChamberId:@(self.hostRepresedtation.acquireChamberAbstract.roomId).stringValue message:self.radioEssayRegard.text]; -} - -#pragma mark - Event Response -- (void)prohibitiaplictowardsionearBetowardsRecognition:(UITapGestureRecognizer *)tap { - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)onConcludeBtutonTicktack:(UIButton *)button { - [self dismissViewControllerAnimated:YES completion:nil]; -} - -#pragma mark - YYTextViewDelegate -- (void)textViewDidChange:(YYTextView *)textView { - NSInteger maxLength = self.model.maxWords ? self.model.maxWords : 20; - NSInteger minLength = self.model.minWords ? self.model.minWords : 5; - if (textView.text.length > maxLength) { - textView.text = [textView.text substringToIndex:maxLength]; - } - self.largestComputationSequencignation.text = [NSString stringWithFormat:@"%zd/%ld", textView.text.length, maxLength]; - if (textView.text.length >= minLength) { - if (self.model.availableTimes > 0 && self.computationPubescenceHierarchyRegard.hidden) { - self.releaseBtuton.enabled = YES; - } - } else { - self.releaseBtuton.enabled = NO; - } -} - -#pragma mark - Getters And Setters -- (UIView *)apexBeatRegard { - if (!_apexBeatRegard) { - _apexBeatRegard = [[UIView alloc] init]; - _apexBeatRegard.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(prohibitiaplictowardsionearBetowardsRecognition:)]; - [_apexBeatRegard addGestureRecognizer:tap]; - } - return _apexBeatRegard; -} -- (UIView *)extremeBeatRegard { - if (!_extremeBeatRegard) { - _extremeBeatRegard = [[UIView alloc] init]; - _extremeBeatRegard.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(prohibitiaplictowardsionearBetowardsRecognition:)]; - [_extremeBeatRegard addGestureRecognizer:tap]; - } - return _extremeBeatRegard; -} -- (UIImageView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIImageView alloc] init]; - _encourageRegard.userInteractionEnabled = YES; - _encourageRegard.image = [UIImage imageNamed:@"yumi_scope_radio_back"]; - } - return _encourageRegard; -} -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [[UIButton alloc] init]; - [_concludeBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_scope_radio_release_close"] forState:UIControlStateNormal]; - [_concludeBtuton addTarget:self action:@selector(onConcludeBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - } - return _concludeBtuton; -} -- (UILabel *)intelligenceSequencignation { - if (!_intelligenceSequencignation) { - _intelligenceSequencignation = [[UILabel alloc] init]; - _intelligenceSequencignation.text = YMLocalizedString(@"YUMI_Release_Radio_View_Controller_3"); - _intelligenceSequencignation.font = [UIFont systemFontOfSize:24 weight:UIFontWeightSemibold]; - _intelligenceSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _intelligenceSequencignation; -} -- (UILabel *)intelligenceSequenceSequencignation { - if (!_intelligenceSequenceSequencignation) { - _intelligenceSequenceSequencignation = [[UILabel alloc] init]; - _intelligenceSequenceSequencignation.text = @"你将在首页发布一条广播,邀请其他用户进入当前房间!"; - _intelligenceSequenceSequencignation.font = [UIFont systemFontOfSize:10]; - _intelligenceSequenceSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _intelligenceSequenceSequencignation; -} -- (UILabel *)radioChampionSequencignation { - if (!_radioChampionSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.text = YMLocalizedString(@"YUMI_Release_Radio_View_Controller_5"); - label.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; - label.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _radioChampionSequencignation = label; - } - return _radioChampionSequencignation; -} -- (UIStackView *)releaseFigureRegard { - if (!_releaseFigureRegard) { - _releaseFigureRegard = [[UIStackView alloc] init]; - _releaseFigureRegard.axis = UILayoutConstraintAxisHorizontal; - _releaseFigureRegard.distribution = UIStackViewDistributionFill; - _releaseFigureRegard.alignment = UIStackViewAlignmentCenter; - _releaseFigureRegard.spacing = 2; - } - return _releaseFigureRegard; -} -- (UILabel *)releaseFigureChampion { - if (!_releaseFigureChampion) { - UILabel *label = [[UILabel alloc] init]; - label.text = YMLocalizedString(@"YUMI_Release_Radio_View_Controller_6"); - label.font = [UIFont systemFontOfSize:12]; - label.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _releaseFigureChampion = label; - } - return _releaseFigureChampion; -} -- (UILabel *)releaseFigureSequencignation { - if (!_releaseFigureSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.text = @"0/3"; - label.font = [UIFont systemFontOfSize:12]; - label.textColor = UIColorFromRGB(0xFF9F00); - _releaseFigureSequencignation = label; - } - return _releaseFigureSequencignation; -} -- (YYTextView *)radioEssayRegard { - if (!_radioEssayRegard) { - _radioEssayRegard = [[YYTextView alloc] init]; - _radioEssayRegard.backgroundColor = UIColorFromRGB(0xF1F1FA); - _radioEssayRegard.layer.cornerRadius = 8; - _radioEssayRegard.layer.masksToBounds = YES; - _radioEssayRegard.placeholderText = @"输入内容不能少于5个字,请文明发言哦~"; - _radioEssayRegard.placeholderTextColor = [DJDKMIMOMColor essayTertiusPrettify]; - _radioEssayRegard.placeholderFont = [UIFont systemFontOfSize:12]; - _radioEssayRegard.font = [UIFont systemFontOfSize:12]; - _radioEssayRegard.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _radioEssayRegard.delegate = self; - } - return _radioEssayRegard; -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] init]; - _tableView.delegate = self; - _tableView.dataSource = self; - [_tableView registerClass:YUMIReleaseWirelessTabulationRegardElement.class forCellReuseIdentifier:KXPReleaseRadioTableViewCellIdentifier]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - } - return _tableView; -} -- (UIButton *)releaseBtuton { - if (!_releaseBtuton) { - _releaseBtuton = [[UIButton alloc] init]; - [_releaseBtuton setTitle:YMLocalizedString(@"YUMI_Release_Radio_View_Controller_8") forState:UIControlStateNormal]; - [_releaseBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_releaseBtuton setBackgroundImage:[UIImage imageWithColor:UIColorFromRGB(0xD2D5D7)] forState:UIControlStateDisabled]; - [_releaseBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFFA936), UIColorFromRGB(0xFFCB47)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(188, 40)] forState:UIControlStateNormal]; - _releaseBtuton.enabled = NO; - _releaseBtuton.layer.cornerRadius = 20; - _releaseBtuton.layer.masksToBounds = YES; - [_releaseBtuton addTarget:self action:@selector(onReleaseBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - } - return _releaseBtuton; -} -- (UILabel *)releaseIntratemporalSequenceSequencignation { - if (!_releaseIntratemporalSequenceSequencignation) { - _releaseIntratemporalSequenceSequencignation = [[UILabel alloc] init]; - _releaseIntratemporalSequenceSequencignation.text = YMLocalizedString(@"YUMI_Release_Radio_View_Controller_9"); - _releaseIntratemporalSequenceSequencignation.font = [UIFont systemFontOfSize:10]; - _releaseIntratemporalSequenceSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - } - return _releaseIntratemporalSequenceSequencignation; -} -- (UIView *)computationPubescenceHierarchyRegard { - if (!_computationPubescenceHierarchyRegard) { - _computationPubescenceHierarchyRegard = [[UIView alloc] init]; - _computationPubescenceHierarchyRegard.hidden = YES; - } - return _computationPubescenceHierarchyRegard; -} -- (UILabel *)computationPubescenceSequencignation { - if (!_computationPubescenceSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.text = @"0s"; - label.font = [UIFont systemFontOfSize:10]; - label.textColor = UIColorFromRGB(0xFDA615); - _computationPubescenceSequencignation = label; - } - return _computationPubescenceSequencignation; -} -- (UILabel *)computationPubescenceSequenceSequencignation { - if (!_computationPubescenceSequenceSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.text = YMLocalizedString(@"YUMI_Release_Radio_View_Controller_10"); - label.font = [UIFont systemFontOfSize:10]; - label.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - _computationPubescenceSequenceSequencignation = label; - } - return _computationPubescenceSequenceSequencignation; -} - -- (UILabel *)largestComputationSequencignation { - if (!_largestComputationSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.text = @"0/20"; - label.font = [UIFont systemFontOfSize:12]; - label.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - _largestComputationSequencignation = label; - } - return _largestComputationSequencignation; -} -@end diff --git a/YuMi/Modules/YMRoom/View/RoomAnimationProtocol.h b/YuMi/Modules/YMRoom/View/RoomAnimationProtocol.h new file mode 100644 index 00000000..5a1d79ad --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomAnimationProtocol.h @@ -0,0 +1,29 @@ +// +// RoomAnimationProtocol.h +// YUMI +// +// Created by zu on 2022/1/13. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** XPRoomAnimationView 用到的协议。 + + RoomVC 的子 View 之间的通信协议,通过 RoomHostDelegate 和 RoomGuestDelegate 继承实现。 + + 调用方向:XPRoomAnimationView —> RoomHostDelegate —> RoomAnimationProtocol(RoomGuestDelegate继承) + + */ +@protocol RoomAnimationProtocol + +@optional +/** + * StageView 专用。 + */ +- (CGPoint)animationPointAtStageViewByUid:(NSString *)uid; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomGuestDelegate.h b/YuMi/Modules/YMRoom/View/RoomGuestDelegate.h new file mode 100644 index 00000000..02646330 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomGuestDelegate.h @@ -0,0 +1,44 @@ +// +// RoomGuestDelegate.h +// YUMI +// +// Created by zu on 2021/10/27. +// + +#import +#import "MicroQueueProtocol.h" +#import "RoomAnimationProtocol.h" + +@class NIMMessage, NIMRecentSession; +@class AttachmentModel; + +NS_ASSUME_NONNULL_BEGIN + +/** RoomVC 子 View 的通用协议。 + + 调用方向:RoomVC —> RoomGuestDelegate + + **Note:** + + 继承 MicroQueueProtocol、RoomAnimationProtocol 等协议用于子 View 做实现。 + 实现后的调用方向:子 View —> RoomHostDelegate —> XXXProtocol(RoomGuestDelegate)。 + + */ +@protocol RoomGuestDelegate + +@optional + +- (void)onRoomUpdate; +- (void)onUserUpdate; +- (void)onRoomEntered; +/// 个播 可以切换房间 +- (void)onRoomChange; +- (void)onRoomMiniEntered;///最小化进房 +- (void)handleNIMNotificationMessage:(NIMMessage *)message; +- (void)handleNIMCustomMessage:(NIMMessage *)message; +- (void)handleNIMTextMessage:(NIMMessage *)message; +- (void)addNIMRecentSession:(NIMRecentSession *)session; +- (void)removeNIMRecentSession:(NIMRecentSession *)session; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomHeaderView/RoomHeaderView.h b/YuMi/Modules/YMRoom/View/RoomHeaderView/RoomHeaderView.h new file mode 100644 index 00000000..432ab8fa --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomHeaderView/RoomHeaderView.h @@ -0,0 +1,20 @@ +// +// YMRoomInfoView.h +// YUMI +// +// Created by YUMI on 2021/10/11. +// + +#import +#import "RoomHostDelegate.h" +#import "RoomGuestDelegate.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RoomHeaderView : UIView + +- (instancetype)initWithDelegate:(id)delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomHeaderView/RoomHeaderView.m b/YuMi/Modules/YMRoom/View/RoomHeaderView/RoomHeaderView.m new file mode 100644 index 00000000..83168572 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomHeaderView/RoomHeaderView.m @@ -0,0 +1,542 @@ +// +// YMRoomInfoView.m +// YUMI +// +// Created by YUMI on 2021/10/11. +// + +#import "RoomHeaderView.h" +///Third +#import +#import +#import +#import +#import "TTPopup.h" +#import +///Tool +#import "UIImage+Utils.h" +#import "UIButton+EnlargeTouchArea.h" +#import "YUMIMacroUitls.h" +#import "ThemeColor+Room.h" +#import "TTPopup.h" +#import "XNDJTDDLoadingTool.h" +#import "YUMIHtmlUrl.h" +#import "AccountInfoStorage.h" +#import "HttpRequestHelper.h" +#import "Api+Room.h" +#import "XCCurrentVCStackManager.h" +#import "StatisticsServiceHelper.h" +#import "NSMutableDictionary+Saft.h" +#import "ClientConfig.h" +///Model +#import "RoomInfoModel.h" +#import "UserInfoModel.h" +#import "AttachMentModel.h" +#import "MicroQueueModel.h" +#import "XPRoomRecommendModel.h" +///View +#import "XPShareView.h" +#import "XPRoomRecommendView.h" +///VC +#import "XPWebViewcontroller.h" +#import "XPRoomOnLineViewController.h" +#import "XPRoomViewController.h" + +@interface RoomHeaderView () + +///返回按钮 +@property (nonatomic, strong) UIButton *backButton; +///容器 +@property (nonatomic,strong) UIStackView *nickStackView; +/// +@property (nonatomic,strong) UIStackView *titleStackView; +///房间名字 +@property (nonatomic,strong) MarqueeLabel *titleLabel; +///礼物特效 +@property (nonatomic,strong) UIImageView *giftEffectImageView; +///锁房标识 +@property (nonatomic,strong) UIImageView *lockRoomImageView; +/// +@property (nonatomic,strong) UIStackView *onlineStackView; +///绿色的小圆点 +@property (nonatomic,strong) UIView * greenDotView; +///id和在线人数 +@property (nonatomic,strong) YYLabel *idLabel; +///收藏 +@property (nonatomic,strong) UIButton *collectButton; +///设置 +@property (nonatomic,strong) UIButton *settingButton; +@property (nonatomic, weak) id hostDelegate; +///右侧推荐房间 +@property (nonatomic, strong) XPRoomRecommendView *recommendRoomView; + +///是否已发送过收藏房间公屏消息 +@property (nonatomic, assign) BOOL hadShowCollectInScreen; + +@end + +@implementation RoomHeaderView + +- (instancetype)initWithDelegate:(id)delegate { + self = [super init]; + if (self) { + _hostDelegate = delegate; + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Event Response +- (void)backButtonAction:(UIButton *)sender { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_return_click eventAttributes:@{@"roomUid" : @(self.hostDelegate.getRoomInfo.uid)}]; + [self.hostDelegate miniRoom]; +} + +- (void)shareButtonAction:(UIButton *)sender{ + [self showSharePanel]; +} + +- (void)settingButtonAction:(UIButton *)sender { + + if (![ClientConfig shareConfig].canOpen) { + TTActionSheetConfig *exit = [TTActionSheetConfig normalTitle:YMLocalizedString(@"RoomHeaderView0") clickAction:^{ + [self.hostDelegate exitRoom]; + }]; + + TTActionSheetConfig *report = [TTActionSheetConfig normalTitle:YMLocalizedString(@"RoomHeaderView1") clickAction:^{ + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"RoomHeaderView2")]; + }); + }]; + + [TTPopup actionSheetWithItems:@[exit, report]]; + return; + } + + self.recommendRoomView.frame = CGRectMake(KScreenWidth, 0, 250, KScreenHeight); + FFPopup *popup = [FFPopup popupWithContentView:self.recommendRoomView]; + popup.showType = FFPopupShowType_SlideInFromRight; + popup.dismissType = FFPopupDismissType_SlideOutToRight; + popup.maskType = FFPopupMaskType_Dimmed; + popup.dimmedMaskAlpha = 0.0; + popup.shouldDismissOnBackgroundTouch = YES; + FFPopupHorizontalLayout horizontalLayout = FFPopupHorizontalLayout_Right; + FFPopupVerticalLayout verticalLayout = FFPopupVerticalLayout_Center; + [popup showWithLayout:FFPopupLayoutMake(horizontalLayout, verticalLayout) duration:0.0]; + popup.didFinishDismissingBlock = ^{ + [self.recommendRoomView removeFromSuperview]; + }; + popup.didFinishShowingBlock = ^{ + + }; + [Api reqeustRecommendRoom:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + NSArray *array = [XPRoomRecommendModel modelsWithArray:data.data]; + self.recommendRoomView.roomList = [NSMutableArray arrayWithArray:array]; + } + } roomId:[NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.roomId]]; +} + +- (void)onlineTapRecognizer { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_online_list_click eventAttributes:@{@"roomUid" : @(self.hostDelegate.getRoomInfo.uid)}]; + XPRoomOnLineViewController * onlineVC = [[XPRoomOnLineViewController alloc] initWithDelegate:self.hostDelegate]; + [self.hostDelegate.getCurrentNav pushViewController:onlineVC animated:YES]; +} +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backButton]; + [self addSubview:self.nickStackView]; + [self addSubview:self.collectButton]; + [self addSubview:self.settingButton]; + + [self.nickStackView addArrangedSubview:self.titleStackView]; + [self.nickStackView addArrangedSubview:self.onlineStackView]; + + [self.onlineStackView addArrangedSubview:self.greenDotView]; + [self.onlineStackView addArrangedSubview:self.idLabel]; + + [self.titleStackView addArrangedSubview:self.titleLabel]; + [self.titleStackView addArrangedSubview:self.giftEffectImageView]; + [self.titleStackView addArrangedSubview:self.lockRoomImageView]; +} + +- (void)initSubViewConstraints { + [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self).offset(14); + make.height.width.equalTo(@22); + make.centerY.mas_equalTo(self.settingButton); + }]; + // 设置 + [self.settingButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-15); + make.bottom.mas_equalTo(-11); + make.width.height.mas_equalTo(22); + }]; + + [self.collectButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.equalTo(self.settingButton); + make.right.equalTo(self.settingButton.mas_left).offset(-8); + make.width.height.mas_equalTo(22); + }]; + + [self.nickStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.settingButton); + make.left.mas_equalTo(self.backButton.mas_right).offset(10); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_lessThanOrEqualTo(100); + make.height.mas_equalTo(21); + }]; + [self.greenDotView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(3,3)); + }]; + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(14); + }]; + + [self.giftEffectImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(10,10)); + }]; + + [self.lockRoomImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(10,10)); + }]; +} +#pragma mark - RoomGuestDelegate +- (void)onRoomEntered { + RoomInfoModel* roomInfo = self.hostDelegate.getRoomInfo; + ///最小化进房 人数不对的问题 + [[[NIMSDK sharedSDK] chatroomManager] fetchChatroomInfo:[NSString stringWithFormat:@"%ld", (long)self.hostDelegate.getRoomInfo.roomId] completion:^(NSError * _Nullable error, NIMChatroom * _Nullable chatroom) { + if (error == nil) { + self.idLabel.text = [NSString stringWithFormat:@"在线:%ld ID:%ld", (long)(chatroom.onlineUserCount > 0 ? chatroom.onlineUserCount : 0), (long)roomInfo.erbanNo]; + } else { + self.idLabel.text = [NSString stringWithFormat:@"在线:%ld ID:%ld", (long)(roomInfo.onlineNum > 0 ? roomInfo.onlineNum : 0), (long)roomInfo.erbanNo]; + } + }]; + + if (roomInfo) { + self.titleLabel.text = roomInfo.title; + self.giftEffectImageView.hidden = roomInfo.hasAnimationEffect; + if (roomInfo.uid == [AccountInfoStorage instance].getUid.integerValue) { + self.collectButton.hidden = YES; + } else { + self.collectButton.hidden = NO; + self.collectButton.selected = roomInfo.isRoomFans; + } + self.lockRoomImageView.hidden = roomInfo.roomPwd.length <= 0; + } + + if (![ClientConfig shareConfig].canOpen) { + self.onlineStackView.hidden = YES; + } +} + +- (void)onRoomUpdate { + RoomInfoModel* roomInfo = self.hostDelegate.getRoomInfo; + self.titleLabel.text = roomInfo.title; + self.idLabel.text = [NSString stringWithFormat:@"在线:%ld ID:%ld", (long)(roomInfo.onlineNum > 0 ? roomInfo.onlineNum : 0), (long)roomInfo.erbanNo]; + self.giftEffectImageView.hidden = roomInfo.hasAnimationEffect; + if (roomInfo.uid == [AccountInfoStorage instance].getUid.integerValue) { + self.collectButton.hidden = YES; + } else { + self.collectButton.hidden = NO; + self.collectButton.selected = roomInfo.isRoomFans; + } + self.lockRoomImageView.hidden = roomInfo.roomPwd.length <= 0; + if (![ClientConfig shareConfig].canOpen) { + self.onlineStackView.hidden = YES; + } +} +#pragma mark - Event Response +- (void)showSharePanel { + XPShareItem *cycle = [XPShareItem itemWitTag:XPShareItemTagMoments title:YMLocalizedString(@"RoomHeaderView6") imageName:@"share_wechat_circle_normal" disableImageName:@"share_wechat_circle_disable"]; + XPShareItem *wechat = [XPShareItem itemWitTag:XPShareItemTagWeChat title:YMLocalizedString(@"RoomHeaderView7") imageName:@"share_wechat_normal" disableImageName:@"share_wechat_disable"]; + XPShareItem *qq = [XPShareItem itemWitTag:XPShareItemTagQQ title:YMLocalizedString(@"RoomHeaderView8") imageName:@"share_qq_normal" disableImageName:@"share_qq_disable"]; + XPShareItem *qqzone = [XPShareItem itemWitTag:XPShareItemTagQQZone title:YMLocalizedString(@"RoomHeaderView9") imageName:@"share_qqzone_normal" disableImageName:@"share_qqzone_disable"]; + NSArray * items = @[wechat,cycle, qq, qqzone]; + RoomInfoModel * roomInfo = [self.hostDelegate getRoomInfo]; + XPShareInfoModel * shareInfo = [[XPShareInfoModel alloc] init]; + shareInfo.shareTitle = YMLocalizedString(@"RoomHeaderView10"); + shareInfo.shareContent = [NSString stringWithFormat:@"%@ 这个房间很好玩,推荐给你,快来和我一起玩吧~", roomInfo.title]; + shareInfo.shareImageUrl = [self.hostDelegate getRoomInfo].avatar; + shareInfo.type = ShareType_Room; + shareInfo.roomUid = roomInfo.uid; + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * urlString = [NSString stringWithFormat:@"%@/%@?shareUid=%@&uid=%ld&room_name=%@&room_id=%ld&room_avatar=%@&share_name=%@",API_HOST_URL,URLWithType(kShareRoomURL),uid,roomInfo.uid,roomInfo.title,roomInfo.erbanNo,roomInfo.avatar,roomInfo.nick]; + shareInfo.shareUrl = urlString; + CGFloat margin = 15; + CGSize itemSize = CGSizeMake((KScreenWidth-2*margin)/4, 65); + XPShareView *shareView = [[XPShareView alloc] initWithItems:items itemSize:itemSize shareInfo:shareInfo]; + shareView.delegate = self; + [TTPopup popupView:shareView style:TTPopupStyleActionSheet]; +} + +///保存一下分享的内容的 不需要处理错误码 +- (void)saveShare:(XPShareInfoModel *)shareInfo { + NSMutableDictionary *params = [NSMutableDictionary dictionary]; + NSString *uid = [AccountInfoStorage instance].getUid; + NSString *ticket = [AccountInfoStorage instance].getTicket; + [params safeSetObject:uid forKey:@"uid"]; + [params safeSetObject:@(shareInfo.shareType) forKey:@"shareType"]; + [params safeSetObject:ticket forKey:@"ticket"]; + [params safeSetObject:@(shareInfo.type) forKey:@"sharePageId"]; + if (shareInfo.shareUrl.length > 0) { + [params safeSetObject:shareInfo.shareUrl forKey:@"shareUrl"]; + } + if (shareInfo.roomUid > 0) { + [params safeSetObject:@(shareInfo.roomUid) forKey:@"targetUid"]; + } + [HttpRequestHelper POST:@"usershare/save" params:params success:^(BaseModel * _Nonnull data) { + + } failure:^(NSInteger resCode, NSString * _Nonnull message) { + + }]; +} + +- (void)collectButtonAction:(UIButton *)sender { + NSString * type = sender.selected ? @"2" : @"1"; + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; + [Api collectRoom:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + sender.selected= !sender.selected; + if ([type isEqualToString:@"1"]) {///收藏的话 + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_collect_icon_click eventAttributes:@{@"roomUid" : @(self.hostDelegate.getRoomInfo.uid)}]; + [XNDJTDDLoadingTool showSuccessWithMessage:YMLocalizedString(@"RoomHeaderView12")]; + if (self.hadShowCollectInScreen) { + return; + } + self.hadShowCollectInScreen = YES; + NSMutableDictionary * dic = [NSMutableDictionary dictionary]; + [dic safeSetObject:[AccountInfoStorage instance].getUid forKey:@"uid"]; + [dic safeSetObject:self.hostDelegate.getUserInfo.nick forKey:@"nick"]; + [dic safeSetObject:[NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid] forKey:@"targetUid"]; + [dic safeSetObject:self.hostDelegate.getRoomInfo.nick forKey:@"targetNick"]; + NSDictionary * data = @{@"data":dic}; + AttachmentModel *attachment = [[AttachmentModel alloc]init]; + attachment.first = CustomMessageType_Collection_Room; + attachment.second = Custom_Message_Sub_Collect_Room_Tips; + attachment.data = data; + NIMMessage *message = [[NIMMessage alloc]init]; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachment; + message.messageObject = object; + NSString *sessionId = [NSString stringWithFormat:@"%ld",self.hostDelegate.getRoomInfo.roomId]; + //构造会话 + NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; + } + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } roomUid:roomUid uid:uid type:type roomUids:NULL]; +} + +#pragma mark - XCShareViewDelegate +- (void)shareView:(XPShareView *)shareView shareFail:(NSString *)message { + [TTPopup dismiss]; + [XNDJTDDLoadingTool showErrorWithMessage:message]; +} + +- (void)shareView:(XPShareView *)shareView didSuccess:(XPShareInfoModel *)shareInfo{ + [TTPopup dismiss]; + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"RoomHeaderView13")]; + AttachmentModel * attachMent = [[AttachmentModel alloc] init]; + attachMent.first = CustomMessageType_Room_Tip; + attachMent.second = Custom_Message_Sub_Room_Tip_ShareRoom; + NSMutableDictionary * dic = [NSMutableDictionary dictionary]; + NSString * uid = [AccountInfoStorage instance].getUid; + [dic safeSetObject:uid forKey:@"uid"]; + NSMutableDictionary * userDic = [NSMutableDictionary dictionary]; + UserInfoModel * userInfo = [self.hostDelegate getUserInfo]; + RoomInfoModel * roomInfo = [self.hostDelegate getRoomInfo]; + [userDic safeSetObject:roomInfo.nick.length > 0 ? roomInfo.nick : @"" forKey:@"targetNick"]; + [userDic safeSetObject:@(roomInfo.uid) forKey:@"targetUid"]; + [userDic safeSetObject:userInfo.nick.length > 0 ? userInfo.nick : @"" forKey:@"nick"]; + [dic safeSetObject:userDic forKey:@"data"]; + attachMent.data = dic; + NSString *sessionID = [NSString stringWithFormat:@"%ld", [self.hostDelegate getRoomInfo].roomId]; + + NIMMessage *message = [[NIMMessage alloc]init]; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachMent; + message.messageObject = object; + //构造会话 + NIMSession *session = [NIMSession session:sessionID type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; + ///上报一下 + [self saveShare:shareInfo]; +} + +- (void)shareViewDidClickCancel:(XPShareView *)shareView { + [TTPopup dismiss]; +} + +#pragma mark - XPRoomRecommendViewDelegate +- (void)xPRoomRecommendViewReport { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_icon_click eventAttributes:@{@"reportRoom" : @(self.hostDelegate.getRoomInfo.uid)}]; + [FFPopup dismissPopupForView:self.recommendRoomView animated:NO]; + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + NSString *urlstr = [NSString stringWithFormat:@"%@?reportUid=%ld&source=ROOM", URLWithType(kReportRoomURL),self.hostDelegate.getRoomInfo.uid]; + webVC.url = urlstr; + [[self.hostDelegate getCurrentNav] pushViewController:webVC animated:YES]; +} + +- (void)xPRoomRecommendViewMiniRoom { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_icon_click eventAttributes:@{@"miniRoom" : @(self.hostDelegate.getRoomInfo.uid)}]; + [FFPopup dismissPopupForView:self.recommendRoomView animated:NO]; + [self.hostDelegate miniRoom]; +} + +- (void)xPRoomRecommendViewExitRoom { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_icon_click eventAttributes:@{@"exitRoom" : @(self.hostDelegate.getRoomInfo.uid)}]; + [FFPopup dismissPopupForView:self.recommendRoomView animated:NO]; + [self.hostDelegate exitRoom]; +} + +- (void)xPRoomRecommendViewShare { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_icon_click eventAttributes:@{@"shareRoom" : @(self.hostDelegate.getRoomInfo.uid)}]; + [FFPopup dismissPopupForView:self.recommendRoomView animated:NO]; + [self showSharePanel]; +} + +- (void)xPRoomRecommendViewJumpToRoom:(NSString *)roomUid { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_icon_click eventAttributes:@{@"jumpToRoom" : roomUid}]; + [FFPopup dismissPopupForView:self.recommendRoomView animated:NO]; + [self.hostDelegate exitRoom]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [XPRoomViewController openRoom:roomUid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; + }); +} + +#pragma mark - Getters And Setters +- (UIButton *)backButton{ + if (!_backButton) { + _backButton = [[UIButton alloc] init]; + [_backButton setImage:[UIImage imageNamed:@"room_info_back"] forState:UIControlStateNormal]; + [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_backButton setEnlargeEdgeWithTop:15 right:15 bottom:15 left:15]; + } + return _backButton; +} + +- (UIButton *)settingButton { + if (!_settingButton) { + _settingButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_settingButton setImage:[UIImage imageNamed:@"room_info_setting"] forState:UIControlStateNormal]; + [_settingButton addTarget:self action:@selector(settingButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_settingButton setEnlargeEdgeWithTop:8 right:8 bottom:8 left:8]; + } + return _settingButton; +} + +- (UIButton *)collectButton { + if (!_collectButton) { + _collectButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_collectButton setImage:[UIImage imageNamed:@"room_collect_normal"] forState:UIControlStateNormal]; + [_collectButton setImage:[UIImage imageNamed:@"room_collect_selected"] forState:UIControlStateSelected]; + [_collectButton addTarget:self action:@selector(collectButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_collectButton setEnlargeEdgeWithTop:8 right:8 bottom:8 left:8]; + _collectButton.adjustsImageWhenHighlighted = NO; + _collectButton.hidden = YES; + } + return _collectButton; +} + +- (UIStackView *)nickStackView { + if (!_nickStackView) { + _nickStackView = [[UIStackView alloc] init]; + _nickStackView.axis = UILayoutConstraintAxisVertical; + _nickStackView.distribution = UIStackViewDistributionFill; + _nickStackView.alignment = UIStackViewAlignmentLeading; + } + return _nickStackView; +} + +- (UIStackView *)titleStackView { + if (!_titleStackView) { + _titleStackView = [[UIStackView alloc] init]; + _titleStackView.axis = UILayoutConstraintAxisHorizontal; + _titleStackView.distribution = UIStackViewDistributionFill; + _titleStackView.alignment = UIStackViewAlignmentCenter; + _titleStackView.spacing = 5; + } + return _titleStackView; +} + +- (MarqueeLabel *)titleLabel{ + if (!_titleLabel) { + _titleLabel = [[MarqueeLabel alloc] init]; + _titleLabel.scrollDuration = 8.0; + _titleLabel.fadeLength = 6.0f; + _titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Bold" size:15]; + _titleLabel.textColor = [DJDKMIMOMColor roomOwnerNickColor]; + _titleLabel.userInteractionEnabled = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onlineTapRecognizer)]; + [_titleLabel addGestureRecognizer:tap]; + } + return _titleLabel; +} + +- (UIImageView *)giftEffectImageView { + if (!_giftEffectImageView) { + _giftEffectImageView = [[UIImageView alloc] init]; + _giftEffectImageView.userInteractionEnabled = YES; + _giftEffectImageView.image = [UIImage imageNamed:@"room_info_gift_effect"]; + } + return _giftEffectImageView; +} + +- (UIImageView *)lockRoomImageView { + if (!_lockRoomImageView) { + _lockRoomImageView = [[UIImageView alloc] init]; + _lockRoomImageView.userInteractionEnabled = YES; + _lockRoomImageView.image = [UIImage imageNamed:@"room_info_lock_room"]; + _lockRoomImageView.hidden = YES; + } + return _lockRoomImageView; +} + +- (UIStackView *)onlineStackView { + if (!_onlineStackView) { + _onlineStackView = [[UIStackView alloc] init]; + _onlineStackView.axis = UILayoutConstraintAxisHorizontal; + _onlineStackView.distribution = UIStackViewDistributionFill; + _onlineStackView.alignment = UIStackViewAlignmentCenter; + _onlineStackView.spacing = 2; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onlineTapRecognizer)]; + [_onlineStackView addGestureRecognizer:tap]; + } + return _onlineStackView; +} + +- (UIView *)greenDotView { + if (!_greenDotView) { + _greenDotView = [[UIView alloc] init]; + _greenDotView.backgroundColor = [DJDKMIMOMColor roomOnLineIdenColor]; + _greenDotView.layer.masksToBounds = YES; + _greenDotView.layer.cornerRadius = 1.5; + } + return _greenDotView; +} + +- (YYLabel *)idLabel { + if (!_idLabel) { + _idLabel = [[YYLabel alloc] init]; + _idLabel.textColor = [DJDKMIMOMColor roomOwnerNickColor]; + _idLabel.font = [UIFont systemFontOfSize:10]; + } + return _idLabel; +} + +- (XPRoomRecommendView *)recommendRoomView { + if (!_recommendRoomView) { + _recommendRoomView = [[XPRoomRecommendView alloc] init]; + self.recommendRoomView.delegate = self; + } + return _recommendRoomView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomHostDelegate.h b/YuMi/Modules/YMRoom/View/RoomHostDelegate.h new file mode 100644 index 00000000..f31b3e42 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomHostDelegate.h @@ -0,0 +1,41 @@ +// +// RoomDelegate.h +// YUMI +// +// Created by zu on 2021/10/26. +// + +#import +#import "MicroQueueProtocol.h" +#import "RoomAnimationProtocol.h" + +NS_ASSUME_NONNULL_BEGIN + +@class RoomInfoModel; +@class UserInfoModel; + +/** RoomVC 与子 View 之间的通信协议。 + + 调用方向:子 View —> RoomHostDelegate。 + + **Note:** + + 继承 MicroQueueProtocol、RoomAnimationProtocol 等协议是为了做桥接。 + 实现后的调用方向:子 View —> RoomHostDelegate —> XXXProtocol(RoomGuestDelegate)。 + + */ +@protocol RoomHostDelegate + +- (RoomInfoModel*)getRoomInfo; +- (UserInfoModel*)getUserInfo; +- (void)exitRoom; +- (void)miniRoom; +- (UINavigationController *)getCurrentNav; +- (NSArray *)getRoomSuperAdminList; +///获取房间PK队伍的 +- (NSArray *)getRoomPKGroupTeamList; +///房间内PK是否正在进行 +- (BOOL)isRoomPKPlaying; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Api/Api+RoomPK.h b/YuMi/Modules/YMRoom/View/RoomPK/Api/Api+RoomPK.h index 526ea85b..4a6b951a 100644 --- a/YuMi/Modules/YMRoom/View/RoomPK/Api/Api+RoomPK.h +++ b/YuMi/Modules/YMRoom/View/RoomPK/Api/Api+RoomPK.h @@ -11,34 +11,67 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (RoomPK) -+ (void)acquireChamberCombatReflectionSttowardsement:(HttpRequestHelperCompletion)completion +/// 获取房间内PK记录 +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param pageSize 一页多少个 +/// @param page 多少页 ++ (void)getRoomPKRecordList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid pageSize:(NSString *)pageSize page:(NSString *)page; -+ (void)acquireChamberCombatSpecific:(HttpRequestHelperCompletion)completion +/// 获取当前房间PK 详情 +/// @param completion 完成 +/// @param roomUid 房主的uid ++ (void)getRoomPKDetail:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; -+ (void)unfoildChamberCombat:(HttpRequestHelperCompletion)completion +/// 开启房间PK +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param operUid 操作者的uid ++ (void)openRoomPK:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid; -+ (void)concludeChamberCombat:(HttpRequestHelperCompletion)completion +/// 关闭房间PK +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param operUid 操作者的uid ++ (void)closeRoomPK:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid; -+ (void)produceChamberCombat:(HttpRequestHelperCompletion)completion +/// 创建一个PK +/// @param completion 完成 +/// @param pkMode pk的类型 目前只有团队 2 +/// @param voteMode 统计类型 1礼物价值 2 送礼人数 +/// @param duration 持续的时间 +/// @param roomUid 房主的uid +/// @param operUid 操作者的uid ++ (void)createRoomPK:(HttpRequestHelperCompletion)completion pkMode:(NSString *)pkMode voteMode:(NSString *)voteMode duration:(NSString *)duration roomUid:(NSString *)roomUid operUid:(NSString *)operUid; -+ (void)examineChamberCombatConsequent:(HttpRequestHelperCompletion)completion +/// 查询房间PK结果 +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param operUid 操作者的uid +/// @param pkId Pk的id ++ (void)checkRoomPKResult:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid pkId:(NSString *)pkId; -+ (void)begainChamberCombat:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid pkId:(NSString *)pkId joinUsers:(NSString *)joinUsers; +/// 开始PK +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param pkId 当前PK的ID +/// @param joinUsers 参加的人 jsonstring ++ (void)begainRoomPK:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid pkId:(NSString *)pkId joinUsers:(NSString *)joinUsers; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Api/Api+RoomPK.m b/YuMi/Modules/YMRoom/View/RoomPK/Api/Api+RoomPK.m index 83ea28bd..99147c3f 100644 --- a/YuMi/Modules/YMRoom/View/RoomPK/Api/Api+RoomPK.m +++ b/YuMi/Modules/YMRoom/View/RoomPK/Api/Api+RoomPK.m @@ -10,39 +10,72 @@ @implementation Api (RoomPK) -+ (void)acquireChamberCombatReflectionSttowardsement:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid pageSize:(NSString *)pageSize page:(NSString *)page { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9way9yZWNvcmVk"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, pageSize, page, nil]; +/// 获取房间内PK记录 +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param pageSize 一页多少个 +/// @param page 多少页 ++ (void)getRoomPKRecordList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid pageSize:(NSString *)pageSize page:(NSString *)page { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9way9yZWNvcmVk"];///room/pk/recored + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, pageSize, page, nil]; } -+ (void)acquireChamberCombatSpecific:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9way9nZXQ="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, nil]; +/// 获取当前房间PK 详情 +/// @param completion 完成 +/// @param roomUid 房主的uid ++ (void)getRoomPKDetail:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9way9nZXQ="];///room/pk/get + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, nil]; } -+ (void)unfoildChamberCombat:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9way9lbmFibGU="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, operUid, nil]; +/// 开启房间PK +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param operUid 操作者的uid ++ (void)openRoomPK:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9way9lbmFibGU="];///room/pk/enable + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, operUid, nil]; } -+ (void)concludeChamberCombat:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9way9lbmFibGU="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodDELETE completion:completion, __FUNCTION__, roomUid, operUid, nil]; +/// 关闭房间PK +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param operUid 操作者的uid ++ (void)closeRoomPK:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9way9lbmFibGU="];///room/pk/enable + [self makeRequest:fang method:HttpRequestHelperMethodDELETE completion:completion, __FUNCTION__, roomUid, operUid, nil]; } -+ (void)produceChamberCombat:(HttpRequestHelperCompletion)completion pkMode:(NSString *)pkMode voteMode:(NSString *)voteMode duration:(NSString *)duration roomUid:(NSString *)roomUid operUid:(NSString *)operUid { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9way9jcmVhdGU="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion,__FUNCTION__, pkMode, voteMode, duration, roomUid, operUid, nil]; +/// 创建一个PK +/// @param completion 完成 +/// @param pkMode pk的类型 目前只有团队 2 +/// @param voteMode 统计类型 1礼物价值 2 送礼人数 +/// @param duration 持续的时间 +/// @param roomUid 房主的uid +/// @param operUid 操作者的uid ++ (void)createRoomPK:(HttpRequestHelperCompletion)completion pkMode:(NSString *)pkMode voteMode:(NSString *)voteMode duration:(NSString *)duration roomUid:(NSString *)roomUid operUid:(NSString *)operUid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9way9jcmVhdGU="];///room/pk/create + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion,__FUNCTION__, pkMode, voteMode, duration, roomUid, operUid, nil]; } -+ (void)examineChamberCombatConsequent:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid pkId:(NSString *)pkId { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9way9xdWVyeQ=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, operUid, pkId, nil]; +/// 查询房间PK结果 +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param operUid 操作者的uid +/// @param pkId Pk的id ++ (void)checkRoomPKResult:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid pkId:(NSString *)pkId { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9way9xdWVyeQ=="];///room/pk/query + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, operUid, pkId, nil]; } -+ (void)begainChamberCombat:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid pkId:(NSString *)pkId joinUsers:(NSString *)joinUsers { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9way9iZWdpbg=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, pkId, joinUsers, nil]; +/// 开始PK +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param pkId 当前PK的ID +/// @param joinUsers 参加的人 jsonstring ++ (void)begainRoomPK:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid pkId:(NSString *)pkId joinUsers:(NSString *)joinUsers { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9way9iZWdpbg=="];///room/pk/begin + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, pkId, joinUsers, nil]; } diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatAbstractMatrix.h b/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatAbstractMatrix.h deleted file mode 100644 index 2ca85f8d..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatAbstractMatrix.h +++ /dev/null @@ -1,38 +0,0 @@ -// -// ChamberCombatAbstractMatrix.h -// YUMI -// -// Created by YUMI on 2022/3/21. -// - -#import -#import "YUMINNNN.h" -#import "ChamberCombatSquadMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger,ChamberCombatPositionGenre){ - - ChamberCombatPositionGenre_NonStart= 1, - - ChamberCombatPositionGenre_Playing = 2, - - ChamberCombatPositionGenre_End = 3, - - ChamberCombatPositionGenre_ReStart = 4, -}; - -@interface ChamberCombatAbstractMatrix : NSObject -@property (nonatomic,assign) CGFloat duration; -@property (nonatomic,copy) NSString *operUid; -@property (nonatomic,copy) NSString * pkId; -@property (nonatomic, assign) ChamberCombatVoteModeGenre voteMode; -@property (nonatomic,copy) NSString *roomUid; -@property (nonatomic,assign) ChamberCombatPositionGenre pkStatus; -@property (nonatomic, assign) long endTime; -@property (nonatomic,assign) NSInteger pkMode; -@property (nonatomic, assign) ChamberCombatResultGenre result; -@property (nonatomic, copy) NSDictionary *> *> *sendGiftUids; -@property (nonatomic, strong) NSArray * teams; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatAbstractMatrix.m b/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatAbstractMatrix.m deleted file mode 100644 index 1e596ad9..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatAbstractMatrix.m +++ /dev/null @@ -1,16 +0,0 @@ -// -// ChamberCombatAbstractMatrix.m -// YUMI -// -// Created by YUMI on 2022/3/21. -// - -#import "ChamberCombatAbstractMatrix.h" - -@implementation ChamberCombatAbstractMatrix -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{@"teams":ChamberCombatSquadMatrix.class}; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatChooseConsumerMatrix.h b/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatChooseConsumerMatrix.h deleted file mode 100644 index ee065b58..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatChooseConsumerMatrix.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// ChamberCombatChooseConsumerMatrix.h -// YUMI -// -// Created by YUMI on 2022/3/21. -// - -#import -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -@interface ChamberCombatChooseConsumerMatrix : NSObject -@property (nonatomic,assign) GroupGenre groupType; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,copy) NSString *uid; -@property (nonatomic,assign) int position; -@property (nonatomic,copy) NSString *title; -@property (nonatomic,copy) NSString *imageName; -@property (nonatomic,copy) NSString *avatar; -@property (nonatomic,assign) BOOL isSelect; -@property (nonatomic,assign) BOOL isEnableChoose; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatChooseConsumerMatrix.m b/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatChooseConsumerMatrix.m deleted file mode 100644 index 1db5502e..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatChooseConsumerMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ChamberCombatChooseConsumerMatrix.m -// YUMI -// -// Created by YUMI on 2022/3/21. -// - -#import "ChamberCombatChooseConsumerMatrix.h" - -@implementation ChamberCombatChooseConsumerMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatIntratemporalProvisionMatrix.h b/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatIntratemporalProvisionMatrix.h deleted file mode 100644 index 574a15f0..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatIntratemporalProvisionMatrix.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// ChamberCombatIntratemporalProvisionMatrix.h -// YUMI -// -// Created by YUMI on 2022/3/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface ChamberCombatIntratemporalProvisionMatrix : NSObject -@property (nonatomic,copy) NSString *title; -@property (nonatomic,assign) int time; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatIntratemporalProvisionMatrix.m b/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatIntratemporalProvisionMatrix.m deleted file mode 100644 index bdd20fbd..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatIntratemporalProvisionMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ChamberCombatIntratemporalProvisionMatrix.m -// YUMI -// -// Created by YUMI on 2022/3/18. -// - -#import "ChamberCombatIntratemporalProvisionMatrix.h" - -@implementation ChamberCombatIntratemporalProvisionMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatReflectionMatrix.h b/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatReflectionMatrix.h deleted file mode 100644 index ada35455..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatReflectionMatrix.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// ChamberCombatReflectionMatrix.h -// YUMI -// -// Created by YUMI on 2022/3/17. -// - -#import -#import "YUMINNNN.h" -#import "ChamberCombatSquadMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@interface ChamberCombatReflectionMatrix : NSObject -@property (nonatomic, copy) NSString * pkId; -@property (nonatomic, assign) ChamberCombatResultGenre result; -@property (nonatomic, assign) ChamberCombatVoteModeGenre voteMode; -@property (nonatomic, strong) NSArray * teams; -@property (nonatomic, assign) long beginTime; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatReflectionMatrix.m b/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatReflectionMatrix.m deleted file mode 100644 index dbc59281..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatReflectionMatrix.m +++ /dev/null @@ -1,14 +0,0 @@ -// -// ChamberCombatReflectionMatrix.m -// YUMI -// -// Created by YUMI on 2022/3/17. -// - -#import "ChamberCombatReflectionMatrix.h" - -@implementation ChamberCombatReflectionMatrix -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{@"teams":ChamberCombatSquadMatrix.class}; -} -@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatSpecificAbstractMatrix.h b/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatSpecificAbstractMatrix.h deleted file mode 100644 index 0a709bfc..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatSpecificAbstractMatrix.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// ChamberCombatSpecificAbstractMatrix.h -// YUMI -// -// Created by YUMI on 2022/3/29. -// - -#import -#import "ChamberCombatAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@interface ChamberCombatSpecificAbstractMatrix : NSObject - -@property (nonatomic, assign) long now; - -@property (nonatomic, strong) ChamberCombatAbstractMatrix *roomPK; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatSpecificAbstractMatrix.m b/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatSpecificAbstractMatrix.m deleted file mode 100644 index 5ab6d724..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatSpecificAbstractMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ChamberCombatSpecificAbstractMatrix.m -// YUMI -// -// Created by YUMI on 2022/3/29. -// - -#import "ChamberCombatSpecificAbstractMatrix.h" - -@implementation ChamberCombatSpecificAbstractMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatSquadMatrix.h b/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatSquadMatrix.h deleted file mode 100644 index 4a07ac5c..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatSquadMatrix.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// ChamberCombatSquadMatrix.h -// YUMI -// -// Created by YUMI on 2022/3/18. -// - -#import -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN -@class ChamberCombatSquadConsumerMatrix; -@interface ChamberCombatSquadMatrix : NSObject -@property (nonatomic, assign) GroupGenre team; -@property (nonatomic, strong) NSArray* teamMembers; -@property (nonatomic, assign) NSInteger mvp; -@property (nonatomic, assign) long long score; -@property (nonatomic, strong) ChamberCombatSquadConsumerMatrix * protector; -@property (nonatomic, assign) long long protecScore; -@end - - -@interface ChamberCombatSquadConsumerMatrix : NSObject -@property (nonatomic,copy) NSString *avatar; -@property (nonatomic,copy) NSString *erbanNo; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,copy) NSString *uid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatSquadMatrix.m b/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatSquadMatrix.m deleted file mode 100644 index 52cb39a0..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/Model/ChamberCombatSquadMatrix.m +++ /dev/null @@ -1,21 +0,0 @@ -// -// ChamberCombatSquadMatrix.m -// YUMI -// -// Created by YUMI on 2022/3/18. -// - -#import "ChamberCombatSquadMatrix.h" - -@implementation ChamberCombatSquadMatrix -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{@"teamMembers":ChamberCombatSquadConsumerMatrix.class}; -} -@end - - -@implementation ChamberCombatSquadConsumerMatrix - - - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKChooseUserModel.h b/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKChooseUserModel.h new file mode 100644 index 00000000..b0ca7301 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKChooseUserModel.h @@ -0,0 +1,33 @@ +// +// RoomPKChooseUserModel.h +// YUMI +// +// Created by YUMI on 2022/3/21. +// + +#import +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +@interface RoomPKChooseUserModel : NSObject +///类型 +@property (nonatomic,assign) GroupType groupType; +///用户名 +@property (nonatomic,copy) NSString *nick; +///用户的uid +@property (nonatomic,copy) NSString *uid; +///坑位 +@property (nonatomic,assign) int position; +///标题 +@property (nonatomic,copy) NSString *title; +///图片的名称 +@property (nonatomic,copy) NSString *imageName; +///用户的头像 +@property (nonatomic,copy) NSString *avatar; +///是否选中了 +@property (nonatomic,assign) BOOL isSelect; +///是否可选 +@property (nonatomic,assign) BOOL isEnableChoose; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKChooseUserModel.m b/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKChooseUserModel.m new file mode 100644 index 00000000..6272b10e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKChooseUserModel.m @@ -0,0 +1,12 @@ +// +// RoomPKChooseUserModel.m +// YUMI +// +// Created by YUMI on 2022/3/21. +// + +#import "RoomPKChooseUserModel.h" + +@implementation RoomPKChooseUserModel + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKDetailInfoModel.h b/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKDetailInfoModel.h new file mode 100644 index 00000000..5a0b0f38 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKDetailInfoModel.h @@ -0,0 +1,19 @@ +// +// RoomPKDetailInfoModel.h +// YUMI +// +// Created by YUMI on 2022/3/29. +// + +#import +#import "RoomPKInfoModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface RoomPKDetailInfoModel : NSObject +/** 当前时间*/ +@property (nonatomic, assign) long now; +/** PK的实体*/ +@property (nonatomic, strong) RoomPKInfoModel *roomPK; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKDetailInfoModel.m b/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKDetailInfoModel.m new file mode 100644 index 00000000..56e51aca --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKDetailInfoModel.m @@ -0,0 +1,12 @@ +// +// RoomPKDetailInfoModel.m +// YUMI +// +// Created by YUMI on 2022/3/29. +// + +#import "RoomPKDetailInfoModel.h" + +@implementation RoomPKDetailInfoModel + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKInfoModel.h b/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKInfoModel.h new file mode 100644 index 00000000..0a531b0c --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKInfoModel.h @@ -0,0 +1,49 @@ +// +// RoomPKInfoModel.h +// YUMI +// +// Created by YUMI on 2022/3/21. +// + +#import +#import "YUMINNNN.h" +#import "RoomPKTeamModel.h" +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger,RoomPKStatusType){ + ///准备中 + RoomPKStatusType_NonStart= 1, + ///正在进行中 + RoomPKStatusType_Playing = 2, + ///结束 + RoomPKStatusType_End = 3, + ///重新开始 + RoomPKStatusType_ReStart = 4, +}; + +@interface RoomPKInfoModel : NSObject +///持续的时间 +@property (nonatomic,assign) CGFloat duration; +///操作者的uid +@property (nonatomic,copy) NSString *operUid; +///当前PK的id +@property (nonatomic,copy) NSString * pkId; +///pk统计的模式 +@property (nonatomic, assign) RoomPKVoteModeType voteMode; +///房主的uid +@property (nonatomic,copy) NSString *roomUid; +///当前PK的状态 +@property (nonatomic,assign) RoomPKStatusType pkStatus; +///PK结束时间(重新开始立即结束,否则为beginTime+duration) +@property (nonatomic, assign) long endTime; +///PK的模式(1:个人模式;2.团队模式) 都是团队模式 就不写枚举了 +@property (nonatomic,assign) NSInteger pkMode; +///pk的结果 +@property (nonatomic, assign) RoomPKResultType result; +/// {红队or蓝队 : { 队员uid : 送礼人uid }} +@property (nonatomic, copy) NSDictionary *> *> *sendGiftUids; +///参与PK的队伍 +@property (nonatomic, strong) NSArray * teams; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKInfoModel.m b/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKInfoModel.m new file mode 100644 index 00000000..b28185c2 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKInfoModel.m @@ -0,0 +1,16 @@ +// +// RoomPKInfoModel.m +// YUMI +// +// Created by YUMI on 2022/3/21. +// + +#import "RoomPKInfoModel.h" + +@implementation RoomPKInfoModel ++ (NSDictionary *)objectClassInArray { + return @{@"teams":RoomPKTeamModel.class}; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKRecordModel.h b/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKRecordModel.h new file mode 100644 index 00000000..10d7d309 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKRecordModel.h @@ -0,0 +1,26 @@ +// +// RoomPKRecordModel.h +// YUMI +// +// Created by YUMI on 2022/3/17. +// + +#import +#import "YUMINNNN.h" +#import "RoomPKTeamModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface RoomPKRecordModel : NSObject +///pk的主键 +@property (nonatomic, copy) NSString * pkId; +///PK结果 +@property (nonatomic, assign) RoomPKResultType result; +///投票类型(1.按礼物价值;2.按送礼物人数) +@property (nonatomic, assign) RoomPKVoteModeType voteMode; +///参与PK的队伍 +@property (nonatomic, strong) NSArray * teams; +///PK开始时间 +@property (nonatomic, assign) long beginTime; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKRecordModel.m b/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKRecordModel.m new file mode 100644 index 00000000..fb28b4f1 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKRecordModel.m @@ -0,0 +1,16 @@ +// +// RoomPKRecordModel.m +// YUMI +// +// Created by YUMI on 2022/3/17. +// + +#import "RoomPKRecordModel.h" + +@implementation RoomPKRecordModel +///扩展方法 按需索取 重写即可 +///如果一个模型中 包含一个数组 数组中是另一个模型 ++ (NSDictionary *)objectClassInArray { + return @{@"teams":RoomPKTeamModel.class}; +} +@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKTeamModel.h b/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKTeamModel.h new file mode 100644 index 00000000..69d2badf --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKTeamModel.h @@ -0,0 +1,39 @@ +// +// RoomPKTeamModel.h +// YUMI +// +// Created by YUMI on 2022/3/18. +// + +#import +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN +@class RoomPKTeamUserModel; +@interface RoomPKTeamModel : NSObject +///队伍的类型 +@property (nonatomic, assign) GroupType team; +///队伍成员 +@property (nonatomic, strong) NSArray* teamMembers; +///队伍MVP +@property (nonatomic, assign) NSInteger mvp; +///队伍战斗值 +@property (nonatomic, assign) long long score; +///队伍守护者 +@property (nonatomic, strong) RoomPKTeamUserModel * protector; +///守护值 +@property (nonatomic, assign) long long protecScore; +@end + + +@interface RoomPKTeamUserModel : NSObject +///头像 +@property (nonatomic,copy) NSString *avatar; +///id +@property (nonatomic,copy) NSString *erbanNo; +///昵称 +@property (nonatomic,copy) NSString *nick; +///用户的uid +@property (nonatomic,copy) NSString *uid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKTeamModel.m b/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKTeamModel.m new file mode 100644 index 00000000..5c1f900f --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKTeamModel.m @@ -0,0 +1,23 @@ +// +// RoomPKTeamModel.m +// YUMI +// +// Created by YUMI on 2022/3/18. +// + +#import "RoomPKTeamModel.h" + +@implementation RoomPKTeamModel +///扩展方法 按需索取 重写即可 +///如果一个模型中 包含一个数组 数组中是另一个模型 ++ (NSDictionary *)objectClassInArray { + return @{@"teamMembers":RoomPKTeamUserModel.class}; +} +@end + + +@implementation RoomPKTeamUserModel + + + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKTimeItemModel.h b/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKTimeItemModel.h new file mode 100644 index 00000000..03e44186 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKTimeItemModel.h @@ -0,0 +1,19 @@ +// +// RoomPKTimeItemModel.h +// YUMI +// +// Created by YUMI on 2022/3/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RoomPKTimeItemModel : NSObject +///标题 +@property (nonatomic,copy) NSString *title; +///时间 秒 +@property (nonatomic,assign) int time; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKTimeItemModel.m b/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKTimeItemModel.m new file mode 100644 index 00000000..06dac66a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/Model/RoomPKTimeItemModel.m @@ -0,0 +1,12 @@ +// +// RoomPKTimeItemModel.m +// YUMI +// +// Created by YUMI on 2022/3/18. +// + +#import "RoomPKTimeItemModel.h" + +@implementation RoomPKTimeItemModel + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Presenter/XPRoomPKPresenter.h b/YuMi/Modules/YMRoom/View/RoomPK/Presenter/XPRoomPKPresenter.h new file mode 100644 index 00000000..8e721550 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/Presenter/XPRoomPKPresenter.h @@ -0,0 +1,29 @@ +// +// YMRoomPKPresenter.h +// YUMI +// +// Created by YUMI on 2022/3/17. +// + +#import "BaseMvpPresenter.h" +#import "RoomPKRecordModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomPKPresenter : BaseMvpPresenter +/// 开启房间内PK +/// @param roomUid 房主的uid +- (void)openRoomPK:(NSString *)roomUid; + +/// 关闭房间PK +/// @param roomUid 房主的uid +- (void)closeRoomPK:(NSString *)roomUid; + +/// 创建PK +/// @param pkMode pk的模式 +/// @param voteMode 投票的模式 +/// @param duration 持续的时间 +/// @param roomUid 房主的uid +- (void)createRoomPKMode:(NSInteger)pkMode voteMode:(RoomPKVoteModeType)voteMode duration:(int)duration roomUid:(NSString *)roomUid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Presenter/XPRoomPKPresenter.m b/YuMi/Modules/YMRoom/View/RoomPK/Presenter/XPRoomPKPresenter.m new file mode 100644 index 00000000..0442f0b2 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/Presenter/XPRoomPKPresenter.m @@ -0,0 +1,51 @@ +// +// YMRoomPKPresenter.m +// YUMI +// +// Created by YUMI on 2022/3/17. +// + +#import "XPRoomPKPresenter.h" +#import "RoomPKInfoModel.h" +#import "Api+RoomPK.h" +#import "XPRoomPKProtocol.h" +#import "AccountInfoStorage.h" +@implementation XPRoomPKPresenter + +/// 开启房间内PK +/// @param roomUid 房主的uid +- (void)openRoomPK:(NSString *)roomUid{ + NSString * operUid = [AccountInfoStorage instance].getUid; + [Api openRoomPK:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] openRoomPKSuccess]; + } showLoading:YES] roomUid:roomUid operUid:operUid]; +} + + +/// 关闭房间PK +/// @param roomUid 房主的uid +- (void)closeRoomPK:(NSString *)roomUid { + NSString * operUid = [AccountInfoStorage instance].getUid; + [Api closeRoomPK:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] closeRoomPKSuccess]; + }] roomUid:roomUid operUid:operUid]; +} + + +/// 创建PK +/// @param pkMode pk的模式 +/// @param voteMode 投票的模式 +/// @param duration 持续的时间 +/// @param roomUid 房主的uid +- (void)createRoomPKMode:(NSInteger)pkMode voteMode:(RoomPKVoteModeType)voteMode duration:(int)duration roomUid:(NSString *)roomUid { + NSString *pkModeStr = [NSString stringWithFormat:@"%ld", pkMode]; + NSString *voteModeStr = [NSString stringWithFormat:@"%ld", voteMode]; + NSString *durationStr = [NSString stringWithFormat:@"%d", duration]; + NSString * uid = [AccountInfoStorage instance].getUid; + [Api createRoomPK:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + RoomPKInfoModel * roomPkInfo = [RoomPKInfoModel modelWithDictionary:data.data]; + [[self getView] createRoomPKSuccess:roomPkInfo]; + } showLoading:YES] pkMode:pkModeStr voteMode:voteModeStr duration:durationStr roomUid:roomUid operUid:uid]; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Presenter/XPRoomPKRecordPresenter.h b/YuMi/Modules/YMRoom/View/RoomPK/Presenter/XPRoomPKRecordPresenter.h new file mode 100644 index 00000000..f6ee2386 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/Presenter/XPRoomPKRecordPresenter.h @@ -0,0 +1,22 @@ +// +// YMRoomPKRecordPresenter.h +// YUMI +// +// Created by YUMI on 2022/3/18. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomPKRecordPresenter : BaseMvpPresenter + +/// 获取房间pk记录 +/// @param roomUid 房主uid +/// @param page 当前页数 +/// @param pageSize 一页多少 +/// @param state 上啦还是 下拉 +- (void)getRoomPKRecordList:(NSString *)roomUid page:(int)page pageSize:(int)pageSize state:(int)state; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Presenter/XPRoomPKRecordPresenter.m b/YuMi/Modules/YMRoom/View/RoomPK/Presenter/XPRoomPKRecordPresenter.m new file mode 100644 index 00000000..7ca6f867 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/Presenter/XPRoomPKRecordPresenter.m @@ -0,0 +1,26 @@ +// +// YMRoomPKRecordPresenter.m +// YUMI +// +// Created by YUMI on 2022/3/18. +// + +#import "XPRoomPKRecordPresenter.h" +#import "Api+RoomPK.h" +#import "RoomPKRecordModel.h" +#import "XPRoomPKRecordProtocol.h" +#import "AccountInfoStorage.h" +@implementation XPRoomPKRecordPresenter + +- (void)getRoomPKRecordList:(NSString *)roomUid page:(int)page pageSize:(int)pageSize state:(int)state { + NSString * pageStr = [NSString stringWithFormat:@"%d", page]; + NSString * pageSizeStr = [NSString stringWithFormat:@"%d", pageSize]; + [Api getRoomPKRecordList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray *list = [RoomPKRecordModel modelsWithArray:data.data[@"records"]]; + [[self getView] getRoomPKRecordListSuccess:list state:state]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getRoomPKRecordListFail:msg state:state]; + }] roomUid:roomUid pageSize:pageSizeStr page:pageStr]; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Presenter/YUMIChamberCombatExternalizer.h b/YuMi/Modules/YMRoom/View/RoomPK/Presenter/YUMIChamberCombatExternalizer.h deleted file mode 100644 index b848facd..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/Presenter/YUMIChamberCombatExternalizer.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YMRoomPKPresenter.h -// YUMI -// -// Created by YUMI on 2022/3/17. -// - -#import "BaseMvpExternalizer.h" -#import "ChamberCombatReflectionMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberCombatExternalizer : BaseMvpExternalizer -- (void)unfoildChamberCombat:(NSString *)roomUid; - -- (void)concludeChamberCombat:(NSString *)roomUid; - -- (void)produceChamberCombatManner:(NSInteger)pkMode voteMode:(ChamberCombatVoteModeGenre)voteMode duration:(int)duration roomUid:(NSString *)roomUid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Presenter/YUMIChamberCombatExternalizer.m b/YuMi/Modules/YMRoom/View/RoomPK/Presenter/YUMIChamberCombatExternalizer.m deleted file mode 100644 index 9e4f2d82..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/Presenter/YUMIChamberCombatExternalizer.m +++ /dev/null @@ -1,42 +0,0 @@ -// -// YMRoomPKPresenter.m -// YUMI -// -// Created by YUMI on 2022/3/17. -// - -#import "YUMIChamberCombatExternalizer.h" -#import "ChamberCombatAbstractMatrix.h" -#import "Api+RoomPK.h" -#import "FBCChamberCombatCeremony.h" -#import "AccountAbstractStorage.h" -@implementation YUMIChamberCombatExternalizer - -- (void)unfoildChamberCombat:(NSString *)roomUid{ - NSString * operUid = [AccountAbstractStorage instance].acquireCid; - [Api unfoildChamberCombat:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] unfoildChamberCombatAccomplishment]; - } EvidenceChambering:YES] roomUid:roomUid operUid:operUid]; -} - - -- (void)concludeChamberCombat:(NSString *)roomUid { - NSString * operUid = [AccountAbstractStorage instance].acquireCid; - [Api concludeChamberCombat:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] concludeChamberCombatAccomplishment]; - }] roomUid:roomUid operUid:operUid]; -} - - -- (void)produceChamberCombatManner:(NSInteger)pkMode voteMode:(ChamberCombatVoteModeGenre)voteMode duration:(int)duration roomUid:(NSString *)roomUid { - NSString *pkModeStr = [NSString stringWithFormat:@"%ld", pkMode]; - NSString *voteModeStr = [NSString stringWithFormat:@"%ld", voteMode]; - NSString *durationStr = [NSString stringWithFormat:@"%d", duration]; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api produceChamberCombat:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ChamberCombatAbstractMatrix * roomPkInfo = [ChamberCombatAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] produceChamberCombatAccomplishment:roomPkInfo]; - } EvidenceChambering:YES] pkMode:pkModeStr voteMode:voteModeStr duration:durationStr roomUid:roomUid operUid:uid]; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Presenter/YUMIChamberCombatReflectionExternalizer.h b/YuMi/Modules/YMRoom/View/RoomPK/Presenter/YUMIChamberCombatReflectionExternalizer.h deleted file mode 100644 index 3147c190..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/Presenter/YUMIChamberCombatReflectionExternalizer.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMRoomPKRecordPresenter.h -// YUMI -// -// Created by YUMI on 2022/3/18. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberCombatReflectionExternalizer : BaseMvpExternalizer - -- (void)acquireChamberCombatReflectionSttowardsement:(NSString *)roomUid page:(int)page pageSize:(int)pageSize state:(int)state; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Presenter/YUMIChamberCombatReflectionExternalizer.m b/YuMi/Modules/YMRoom/View/RoomPK/Presenter/YUMIChamberCombatReflectionExternalizer.m deleted file mode 100644 index ca0790fb..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/Presenter/YUMIChamberCombatReflectionExternalizer.m +++ /dev/null @@ -1,26 +0,0 @@ -// -// YMRoomPKRecordPresenter.m -// YUMI -// -// Created by YUMI on 2022/3/18. -// - -#import "YUMIChamberCombatReflectionExternalizer.h" -#import "Api+RoomPK.h" -#import "ChamberCombatReflectionMatrix.h" -#import "FBCChamberCombatRecordCeremony.h" -#import "AccountAbstractStorage.h" -@implementation YUMIChamberCombatReflectionExternalizer - -- (void)acquireChamberCombatReflectionSttowardsement:(NSString *)roomUid page:(int)page pageSize:(int)pageSize state:(int)state { - NSString * pageStr = [NSString stringWithFormat:@"%d", page]; - NSString * pageSizeStr = [NSString stringWithFormat:@"%d", pageSize]; - [Api acquireChamberCombatReflectionSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray *list = [ChamberCombatReflectionMatrix mtowardsrixsAboutGarment:data.data[@"records"]]; - [[self acquireRegard] acquireChamberCombatReflectionSttowardsementAccomplishment:list state:state]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireChamberCombatReflectionSttowardsementFlunk:msg state:state]; - }] roomUid:roomUid pageSize:pageSizeStr page:pageStr]; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Protocol/FBCChamberCombatCeremony.h b/YuMi/Modules/YMRoom/View/RoomPK/Protocol/FBCChamberCombatCeremony.h deleted file mode 100644 index c979265d..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/Protocol/FBCChamberCombatCeremony.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMRoomPKProtocol.h -// YUMI -// -// Created by YUMI on 2022/3/17. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ChamberCombatAbstractMatrix; -@protocol FBCChamberCombatCeremony - -- (void)unfoildChamberCombatAccomplishment; - -- (void)concludeChamberCombatAccomplishment; - -- (void)produceChamberCombatAccomplishment:(ChamberCombatAbstractMatrix *)roompkInfo; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Protocol/FBCChamberCombatRecordCeremony.h b/YuMi/Modules/YMRoom/View/RoomPK/Protocol/FBCChamberCombatRecordCeremony.h deleted file mode 100644 index 1210dba6..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/Protocol/FBCChamberCombatRecordCeremony.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMRoomPKRecordProtocol.h -// YUMI -// -// Created by YUMI on 2022/3/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCChamberCombatRecordCeremony - -- (void)acquireChamberCombatReflectionSttowardsementAccomplishment:(NSArray *)recordList state:(int)state; -- (void)acquireChamberCombatReflectionSttowardsementFlunk:(NSString *)message state:(int)state; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Protocol/XPRoomPKProtocol.h b/YuMi/Modules/YMRoom/View/RoomPK/Protocol/XPRoomPKProtocol.h new file mode 100644 index 00000000..0d6290aa --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/Protocol/XPRoomPKProtocol.h @@ -0,0 +1,25 @@ +// +// YMRoomPKProtocol.h +// YUMI +// +// Created by YUMI on 2022/3/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class RoomPKInfoModel; +@protocol XPRoomPKProtocol + +///开启房间PK成功 +- (void)openRoomPKSuccess; + +///开启房间PK成功 +- (void)closeRoomPKSuccess; + +///创建pk成功 +- (void)createRoomPKSuccess:(RoomPKInfoModel *)roompkInfo; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/Protocol/XPRoomPKRecordProtocol.h b/YuMi/Modules/YMRoom/View/RoomPK/Protocol/XPRoomPKRecordProtocol.h new file mode 100644 index 00000000..414aa13e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/Protocol/XPRoomPKRecordProtocol.h @@ -0,0 +1,19 @@ +// +// YMRoomPKRecordProtocol.h +// YUMI +// +// Created by YUMI on 2022/3/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPRoomPKRecordProtocol + +- (void)getRoomPKRecordListSuccess:(NSArray *)recordList state:(int)state; +- (void)getRoomPKRecordListFail:(NSString *)message state:(int)state; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKEmptyTableViewCell.h b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKEmptyTableViewCell.h new file mode 100644 index 00000000..22027296 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKEmptyTableViewCell.h @@ -0,0 +1,16 @@ +// +// YMRoomPKEmptyTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/3/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomPKEmptyTableViewCell : UITableViewCell + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKEmptyTableViewCell.m b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKEmptyTableViewCell.m new file mode 100644 index 00000000..56d8b34f --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKEmptyTableViewCell.m @@ -0,0 +1,72 @@ +// +// YMRoomPKEmptyTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/3/18. +// + +#import "XPRoomPKEmptyTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImageConstant.h" + +@interface XPRoomPKEmptyTableViewCell () +@property (nonatomic,strong) UIImageView *emptyImageView; +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPRoomPKEmptyTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.emptyImageView]; + [self.contentView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.emptyImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.contentView).offset(250); + make.size.mas_equalTo(CGSizeMake(100, 100)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.emptyImageView.mas_bottom).offset(20); + make.left.right.mas_equalTo(self.contentView); + }]; +} +#pragma mark - Getters And Setters +- (UIImageView *)emptyImageView { + if (!_emptyImageView) { + _emptyImageView = [[UIImageView alloc] init]; + _emptyImageView.userInteractionEnabled = YES; + _emptyImageView.image = [UIImageConstant defalutEmptyPlaceholder]; + _emptyImageView.layer.masksToBounds = YES; + _emptyImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _emptyImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPRoomPKEmptyTableViewCell0"); + _titleLabel.font = [UIFont systemFontOfSize:16]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _titleLabel; +} +@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKRecordTableViewCell.h b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKRecordTableViewCell.h new file mode 100644 index 00000000..83fa7d9b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKRecordTableViewCell.h @@ -0,0 +1,17 @@ +// +// YMRoomPKRecordTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/3/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class RoomPKRecordModel; +@interface XPRoomPKRecordTableViewCell : UITableViewCell +//pk详情 +@property (nonatomic,strong) RoomPKRecordModel *pkDetailInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKRecordTableViewCell.m b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKRecordTableViewCell.m new file mode 100644 index 00000000..71f25b73 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKRecordTableViewCell.m @@ -0,0 +1,273 @@ +// +// YMRoomPKRecordTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/3/18. +// + +#import "XPRoomPKRecordTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "PLTimeUtil.h" +///Model +#import "RoomPKRecordModel.h" +///View +#import "XPRoomPKRecordNickView.h" + +@interface XPRoomPKRecordTableViewCell () +///成功的人 +@property (nonatomic,strong) XPRoomPKRecordNickView *winerUserView; +///失败的人 +@property (nonatomic,strong) XPRoomPKRecordNickView *loseUserView; +///vs +@property (nonatomic,strong) UIImageView *vsImageView; +///成功的分数 +@property (nonatomic,strong) UILabel * winerScoreLabel; +///成功 +@property (nonatomic,strong) UIButton *winerButton; +///失败的分数 +@property (nonatomic,strong) UILabel * loseScoreLabel; +///失败 +@property (nonatomic,strong) UIButton *loseButton; +///类型 +@property (nonatomic,strong) UILabel *pkTypeLabel; +///时间 +@property (nonatomic,strong) UILabel *dateLabel; +@end + +@implementation XPRoomPKRecordTableViewCell + + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.selectionStyle = UITableViewCellSelectionStyleNone; + self.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + [self.contentView addSubview:self.winerUserView]; + [self.contentView addSubview:self.loseUserView]; + [self.contentView addSubview:self.vsImageView]; + [self.contentView addSubview:self.winerScoreLabel]; + [self.contentView addSubview:self.pkTypeLabel]; + [self.contentView addSubview:self.loseScoreLabel]; + [self.contentView addSubview:self.winerButton]; + [self.contentView addSubview:self.dateLabel]; + [self.contentView addSubview:self.loseButton]; +} + +- (void)initSubViewConstraints { + + [self.winerUserView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.contentView).offset(15); + make.top.mas_equalTo(self.contentView).offset(31); + make.right.mas_equalTo(self.vsImageView.mas_left).offset(-20); + }]; + + [self.vsImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(29); + make.height.mas_equalTo(43); + make.centerY.mas_equalTo(self.winerUserView); + make.centerX.mas_equalTo(self.contentView); + }]; + + [self.loseUserView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.vsImageView.mas_right).offset(20); + make.width.centerY.mas_equalTo(self.winerUserView); + make.right.mas_equalTo(self.contentView).offset(-15); + }]; + + [self.winerScoreLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.width.mas_equalTo(self.winerUserView); + make.top.mas_equalTo(self.winerUserView.mas_bottom).offset(10); + }]; + + [self.pkTypeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.contentView); + make.centerY.mas_equalTo(self.winerScoreLabel); + }]; + + [self.loseScoreLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.width.mas_equalTo(self.loseUserView); + make.centerY.mas_equalTo(self.winerScoreLabel); + }]; + + [self.winerButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.winerUserView); + make.top.mas_equalTo(self.winerScoreLabel.mas_bottom).offset(7); + make.width.mas_equalTo(85); + make.height.mas_equalTo(19); + }]; + + [self.dateLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.winerButton); + make.centerX.mas_equalTo(self.contentView); + make.width.mas_equalTo(71); + }]; + + [self.loseButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.centerY.mas_equalTo(self.winerButton); + make.centerX.mas_equalTo(self.loseUserView); + }]; +} + +#pragma mark - Getters And Setters +- (void)setPkDetailInfo:(RoomPKRecordModel *)pkDetailInfo { + _pkDetailInfo = pkDetailInfo; + if (_pkDetailInfo) { + //先找出胜利的队伍和失败的队伍 + RoomPKTeamModel *redTeam; + RoomPKTeamModel * blueTeam; + for (RoomPKTeamModel *team in _pkDetailInfo.teams) { + if (team.team == GroupType_Red) { + redTeam = team; + }else{ + blueTeam = team; + } + } + + UIColor * winnerMemberViewColor; + UIColor * loseMemberViewColor; + UIImage * winnerImage;//红队胜利 + UIImage * loseImage;//胜利失败的按钮的颜色 + NSString * winnerTitle; + NSString * loseString; + //平局 + if (_pkDetailInfo.result == RoomPKResultType_Draw) { + winnerMemberViewColor = UIColorFromRGB(0xcccccc); + loseMemberViewColor = UIColorFromRGB(0xcccccc); + winnerImage = [UIImage imageNamed:@"room_pk_record_lose"]; + loseImage = [UIImage imageNamed:@"room_pk_record_lose"]; + winnerTitle = YMLocalizedString(@"XPRoomPKRecordTableViewCell0"); + loseString = YMLocalizedString(@"XPRoomPKRecordTableViewCell1"); + + //红方胜 + }else if (_pkDetailInfo.result == RoomPKResultType_Red){ + winnerMemberViewColor= UIColorFromRGB(0xFC4895); + loseMemberViewColor = UIColorFromRGB(0xcccccc); + winnerImage = [UIImage imageNamed:@"room_pk_record_winner"]; + loseImage = [UIImage imageNamed:@"room_pk_record_lose"]; + winnerTitle = YMLocalizedString(@"XPRoomPKRecordTableViewCell2"); + loseString = YMLocalizedString(@"XPRoomPKRecordTableViewCell3"); + //蓝方胜 + }else if (_pkDetailInfo.result == RoomPKResultType_Blue){ + winnerMemberViewColor = UIColorFromRGB(0xcccccc); + loseMemberViewColor = UIColorFromRGB(0x3B74FE); + winnerImage = [UIImage imageNamed:@"room_pk_record_lose"]; + loseImage = [UIImage imageNamed:@"room_pk_result_blue_victory_bg"]; + winnerTitle = YMLocalizedString(@"XPRoomPKRecordTableViewCell4"); + loseString = YMLocalizedString(@"XPRoomPKRecordTableViewCell5"); + } + + [self.winerButton setBackgroundImage:winnerImage forState:UIControlStateNormal]; + [self.loseButton setBackgroundImage:loseImage forState:UIControlStateNormal]; + [self.winerButton setTitle:winnerTitle forState:UIControlStateNormal]; + [self.loseButton setTitle:loseString forState:UIControlStateNormal]; + + self.winerScoreLabel.text = [NSString stringWithFormat:@"%lld",redTeam.score]; + self.loseScoreLabel.text = [NSString stringWithFormat:@"%lld",blueTeam.score]; + self.winerUserView.backgroundColor = winnerMemberViewColor; + self.loseUserView.backgroundColor = loseMemberViewColor; + + if (_pkDetailInfo.voteMode == RoomPKVoteModeType_GiftValue) { + self.pkTypeLabel.text = YMLocalizedString(@"XPRoomPKRecordTableViewCell6"); + }else{ + self.pkTypeLabel.text = YMLocalizedString(@"XPRoomPKRecordTableViewCell7"); + } + + self.winerUserView.userList = redTeam.teamMembers; + self.loseUserView.userList = blueTeam.teamMembers; + + self.dateLabel.text = [PLTimeUtil getDateWithTotalTimeWith:[NSString stringWithFormat:@"%ld", _pkDetailInfo.beginTime]]; + } +} + +- (XPRoomPKRecordNickView *)winerUserView { + if (!_winerUserView) { + _winerUserView = [[XPRoomPKRecordNickView alloc] init]; + } + return _winerUserView; +} + +- (XPRoomPKRecordNickView *)loseUserView { + if (!_loseUserView) { + _loseUserView = [[XPRoomPKRecordNickView alloc] init]; + } + return _loseUserView; +} + +- (UILabel *)pkTypeLabel{ + if (!_pkTypeLabel) { + _pkTypeLabel = [[UILabel alloc] init]; + _pkTypeLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _pkTypeLabel.font = [UIFont systemFontOfSize:13]; + _pkTypeLabel.textAlignment = NSTextAlignmentCenter; + } + return _pkTypeLabel; +} + +- (UILabel *)dateLabel{ + if (!_dateLabel) { + _dateLabel = [[UILabel alloc] init]; + _dateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _dateLabel.font = [UIFont systemFontOfSize:12]; + _dateLabel.textAlignment = NSTextAlignmentCenter; + _dateLabel.numberOfLines = 2; + } + return _dateLabel; +} + +- (UIButton *)winerButton{ + if (!_winerButton) { + _winerButton = [UIButton buttonWithType:UIButtonTypeCustom]; + _winerButton.titleLabel.font = [UIFont systemFontOfSize:13]; + [_winerButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + } + return _winerButton; +} + +- (UIButton *)loseButton{ + if (!_loseButton) { + _loseButton = [UIButton buttonWithType:UIButtonTypeCustom]; + _loseButton.titleLabel.font = [UIFont systemFontOfSize:13]; + [_loseButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + } + return _loseButton; +} + +- (UILabel *)loseScoreLabel{ + if (!_loseScoreLabel) { + _loseScoreLabel = [[UILabel alloc] init]; + _loseScoreLabel.font = [UIFont systemFontOfSize:18]; + _loseScoreLabel.textColor = [DJDKMIMOMColor appEmphasizeColor]; + _loseScoreLabel.textAlignment = NSTextAlignmentCenter; + } + return _loseScoreLabel; +} + +- (UILabel *)winerScoreLabel{ + if (!_winerScoreLabel) { + _winerScoreLabel = [[UILabel alloc] init]; + _winerScoreLabel.font = [UIFont systemFontOfSize:18]; + _winerScoreLabel.textColor = UIColorFromRGB(0xFE5372); + _winerScoreLabel.textAlignment = NSTextAlignmentCenter; + } + return _winerScoreLabel; +} + +- (UIImageView *)vsImageView{ + if (!_vsImageView) { + _vsImageView = [[UIImageView alloc] init]; + _vsImageView.image = [UIImage imageNamed:@"room_pk_vs_logo"]; + } + return _vsImageView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKTimeTableViewCell.h b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKTimeTableViewCell.h new file mode 100644 index 00000000..949412ab --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKTimeTableViewCell.h @@ -0,0 +1,19 @@ +// +// YMRoomPKTimeTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/3/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomPKTimeTableViewCell : UITableViewCell + +///选择的时间 +@property (nonatomic,copy) NSString *time; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKTimeTableViewCell.m b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKTimeTableViewCell.m new file mode 100644 index 00000000..608840de --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKTimeTableViewCell.m @@ -0,0 +1,92 @@ +// +// YMRoomPKTimeTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/3/17. +// + +#import "XPRoomPKTimeTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" + +@interface XPRoomPKTimeTableViewCell () +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///显示时间 +@property (nonatomic,strong) UILabel *timeLabel; +///箭头 +@property (nonatomic,strong) UIImageView *arrowImageView; +@end + +@implementation XPRoomPKTimeTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + self.selectionStyle = UITableViewCellSelectionStyleNone; + self.contentView.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; + [self.contentView addSubview:self.titleLabel]; + [self.contentView addSubview:self.timeLabel]; + [self.contentView addSubview:self.arrowImageView]; +} + +- (void)initSubViewConstraints { + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.contentView).offset(15); + make.centerY.mas_equalTo(self.contentView); + }]; + + [self.arrowImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.contentView).offset(-15); + make.size.mas_equalTo(CGSizeMake(6.5, 11)); + make.centerY.mas_equalTo(self.contentView); + }]; + + [self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.arrowImageView.mas_left).offset(-3); + make.centerY.mas_equalTo(self.contentView); + }]; +} +#pragma mark - Getters And Setters +- (void)setTime:(NSString *)time { + _time = time; + self.timeLabel.text = _time; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPRoomPKTimeTableViewCell0"); + _titleLabel.font = [UIFont boldSystemFontOfSize:15]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +- (UILabel *)timeLabel { + if (!_timeLabel) { + _timeLabel = [[UILabel alloc] init]; + _timeLabel.text = YMLocalizedString(@"XPRoomPKTimeTableViewCell1"); + _timeLabel.font = [UIFont systemFontOfSize:14]; + _timeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _timeLabel; +} + +- (UIImageView *)arrowImageView { + if (!_arrowImageView) { + _arrowImageView = [[UIImageView alloc] init]; + _arrowImageView.userInteractionEnabled = YES; + _arrowImageView.image = [UIImage imageNamed:@"common_right_arrow"]; + } + return _arrowImageView; +} +@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKTypeTableViewCell.h b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKTypeTableViewCell.h new file mode 100644 index 00000000..486c0226 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKTypeTableViewCell.h @@ -0,0 +1,16 @@ +// +// YMRoomPKTypeTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/3/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomPKTypeTableViewCell : UITableViewCell + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKTypeTableViewCell.m b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKTypeTableViewCell.m new file mode 100644 index 00000000..98b0adbb --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKTypeTableViewCell.m @@ -0,0 +1,88 @@ +// +// YMRoomPKTypeTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/3/17. +// + +#import "XPRoomPKTypeTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" + +@interface XPRoomPKTypeTableViewCell () +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///类型 +@property (nonatomic,strong) UILabel *typeLabel; +///分割线 +@property (nonatomic,strong) UIView * lineView; +@end + +@implementation XPRoomPKTypeTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + self.selectionStyle = UITableViewCellSelectionStyleNone; + self.contentView.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; + [self.contentView addSubview:self.titleLabel]; + [self.contentView addSubview:self.typeLabel]; + [self.contentView addSubview:self.lineView]; +} + +- (void)initSubViewConstraints { + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.contentView).offset(15); + make.centerY.mas_equalTo(self.contentView); + }]; + + + [self.typeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.titleLabel.mas_right).offset(20); + make.centerY.mas_equalTo(self.contentView); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.contentView); + make.left.right.mas_equalTo(self.contentView).inset(15); + make.height.mas_equalTo(1); + }]; +} +#pragma mark - Getters And Setters +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPRoomPKTypeTableViewCell0"); + _titleLabel.font = [UIFont boldSystemFontOfSize:15]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +- (UILabel *)typeLabel { + if (!_typeLabel) { + _typeLabel = [[UILabel alloc] init]; + _typeLabel.text = @"按团队PK"; + _typeLabel.font = [UIFont systemFontOfSize:14]; + _typeLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _typeLabel; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _lineView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKUserCollectionViewCell.h b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKUserCollectionViewCell.h new file mode 100644 index 00000000..31d81cce --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKUserCollectionViewCell.h @@ -0,0 +1,17 @@ +// +// YMRoomPKUserCollectionViewCell.h +// YUMI +// +// Created by YUMI on 2022/3/21. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class RoomPKChooseUserModel; +@interface XPRoomPKUserCollectionViewCell : UICollectionViewCell +///用户信息 +@property (nonatomic,strong) RoomPKChooseUserModel *userInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKUserCollectionViewCell.m b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKUserCollectionViewCell.m new file mode 100644 index 00000000..2489ee56 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKUserCollectionViewCell.m @@ -0,0 +1,126 @@ +// +// YMRoomPKUserCollectionViewCell.m +// YUMI +// +// Created by YUMI on 2022/3/21. +// + +#import "XPRoomPKUserCollectionViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "RoomPKChooseUserModel.h" + +@interface XPRoomPKUserCollectionViewCell () +///头像 +@property (nonatomic,strong) NetImageView *ownerAvatarImageView; +///房主 +@property (nonatomic,strong) UILabel *ownerLabel; +///是否选择过了 +@property (nonatomic,strong) UIButton *chooseButton; +@end + +@implementation XPRoomPKUserCollectionViewCell +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + + +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.ownerAvatarImageView]; + [self.contentView addSubview:self.ownerLabel]; + [self.contentView addSubview:self.chooseButton]; +} + +- (void)initSubViewConstraints { + [self.ownerAvatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.contentView); + make.height.mas_equalTo(self.ownerAvatarImageView.mas_width); + }]; + + [self.ownerLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.ownerAvatarImageView.mas_bottom).offset(5); + make.height.mas_equalTo(14); + }]; + + [self.chooseButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.bottom.mas_equalTo(self.ownerAvatarImageView); + make.width.height.mas_equalTo(16); + }]; +} + +#pragma mark - Event Response +- (void)chooseButtonAction:(UIButton *)sender { + sender.selected = !sender.selected; +} +#pragma mark - Getters And Setters +- (void)setUserInfo:(RoomPKChooseUserModel *)userInfo { + _userInfo = userInfo; + if (_userInfo) { + if (_userInfo.imageName) { + _ownerAvatarImageView.image = [UIImage imageNamed:_userInfo.imageName]; + } + + if (_userInfo.avatar) { + _ownerAvatarImageView.imageUrl = _userInfo.avatar; + } + self.ownerLabel.text = _userInfo.title; + + if (_userInfo.uid.length > 0 && _userInfo.isEnableChoose) { + self.chooseButton.hidden = NO; + self.chooseButton.selected = _userInfo.isSelect; + } else { + self.chooseButton.hidden = YES; + } + } +} + +- (NetImageView *)ownerAvatarImageView { + if (!_ownerAvatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _ownerAvatarImageView = [[NetImageView alloc] initWithConfig:config]; + _ownerAvatarImageView.layer.masksToBounds = YES; + _ownerAvatarImageView.layer.cornerRadius = 46/2; + _ownerAvatarImageView.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + } + return _ownerAvatarImageView; +} + +- (UILabel *)ownerLabel { + if (!_ownerLabel) { + _ownerLabel = [[UILabel alloc] init]; + _ownerLabel.font = [UIFont systemFontOfSize:10]; + _ownerLabel.backgroundColor = [UIColor colorWithRed:(CGFloat)204 / (CGFloat)255 green:(CGFloat)204 / (CGFloat)255 blue:(CGFloat)204 / (CGFloat)255 alpha:1]; + _ownerLabel.layer.masksToBounds = YES; + _ownerLabel.layer.cornerRadius = 7; + _ownerLabel.textColor = [UIColor whiteColor]; + _ownerLabel.textAlignment = NSTextAlignmentCenter; + } + return _ownerLabel; +} + + +- (UIButton *)chooseButton { + if (!_chooseButton) { + _chooseButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_chooseButton setImage:[UIImage imageNamed:@"room_pk_user_unselect"] forState:UIControlStateNormal]; + [_chooseButton setImage:[UIImage imageNamed:@"room_pk_vote_select"] forState:UIControlStateSelected]; + [_chooseButton addTarget:self action:@selector(chooseButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _chooseButton.hidden = YES; + } + return _chooseButton; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKVoteTableViewCell.h b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKVoteTableViewCell.h new file mode 100644 index 00000000..5e29eff2 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKVoteTableViewCell.h @@ -0,0 +1,26 @@ +// +// YMRoomPKVoteTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/3/17. +// + +#import +#import "RoomPKRecordModel.h" +NS_ASSUME_NONNULL_BEGIN + +@class XPRoomPKVoteTableViewCell; +@protocol XPRoomPKVoteTableViewCellDelegate + +///选择了什么类型 +- (void)xPRoomPKVoteTableViewCell:(XPRoomPKVoteTableViewCell *)view didChooseVoteType:(RoomPKVoteModeType)VoteType; + +@end + + +@interface XPRoomPKVoteTableViewCell : UITableViewCell +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKVoteTableViewCell.m b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKVoteTableViewCell.m new file mode 100644 index 00000000..2cce195e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/XPRoomPKVoteTableViewCell.m @@ -0,0 +1,187 @@ +// +// YMRoomPKVoteTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/3/17. +// + +#import "XPRoomPKVoteTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" + +@interface XPRoomPKVoteTableViewCell () +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///礼物价值容器 +@property (nonatomic,strong) UIStackView *giftValueStackView; +///选择礼物价值 +@property (nonatomic,strong) UIButton *giftValueChooseButton; +///礼物价值 +@property (nonatomic,strong) UILabel *giftValueLabel; +///送礼人数容器 +@property (nonatomic,strong) UIStackView *giftNumStackView; +///选择送礼人数 +@property (nonatomic,strong) UIButton *giftNumChooseButton; +///送礼人数 +@property (nonatomic,strong) UILabel *giftNumLabel; +///类型 +@property (nonatomic,strong) UILabel *typeLabel; +///分割线 +@property (nonatomic,strong) UIView * lineView; +@end + +@implementation XPRoomPKVoteTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + self.selectionStyle = UITableViewCellSelectionStyleNone; + self.contentView.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; + [self.contentView addSubview:self.titleLabel]; + [self.contentView addSubview:self.giftValueStackView]; + [self.contentView addSubview:self.giftNumStackView]; + [self.contentView addSubview:self.lineView]; + + [self.giftValueStackView addArrangedSubview:self.giftValueChooseButton]; + [self.giftValueStackView addArrangedSubview:self.giftValueLabel]; + + [self.giftNumStackView addArrangedSubview:self.giftNumChooseButton]; + [self.giftNumStackView addArrangedSubview:self.giftNumLabel]; +} + +- (void)initSubViewConstraints { + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.contentView).offset(15); + make.centerY.mas_equalTo(self.contentView); + }]; + + + [self.giftValueStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.contentView).offset(92); + make.top.bottom.mas_equalTo(self.contentView); + }]; + + [self.giftValueChooseButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(15, 15)); + }]; + + [self.giftNumStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.giftValueStackView.mas_right).offset(15); + make.top.bottom.mas_equalTo(self.contentView); + }]; + + [self.giftNumChooseButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(15, 15)); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.contentView); + make.left.right.mas_equalTo(self.contentView).inset(15); + make.height.mas_equalTo(1); + }]; +} + +#pragma mark - Event Response +- (void)chooseRoomPKVoteAction:(UIButton *)sender { + self.giftValueChooseButton.selected = NO; + self.giftNumChooseButton.selected = NO; + sender.selected = !sender.selected; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomPKVoteTableViewCell:didChooseVoteType:)]) { + [self.delegate xPRoomPKVoteTableViewCell:self didChooseVoteType:sender.tag]; + } +} + +#pragma mark - Getters And Setters +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPRoomPKVoteTableViewCell0"); + _titleLabel.font = [UIFont boldSystemFontOfSize:15]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +- (UIStackView *)giftValueStackView { + if (!_giftValueStackView) { + _giftValueStackView = [[UIStackView alloc] init]; + _giftValueStackView.axis = UILayoutConstraintAxisHorizontal; + _giftValueStackView.distribution = UIStackViewDistributionFill; + _giftValueStackView.alignment = UIStackViewAlignmentCenter; + _giftValueStackView.spacing = 5; + } + return _giftValueStackView; +} + +- (UIButton *)giftValueChooseButton { + if (!_giftValueChooseButton) { + _giftValueChooseButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_giftValueChooseButton setImage:[UIImage imageNamed:@"room_pk_vote_normal"] forState:UIControlStateNormal]; + [_giftValueChooseButton setImage:[UIImage imageNamed:@"room_pk_vote_select"] forState:UIControlStateSelected]; + _giftValueChooseButton.tag = RoomPKVoteModeType_GiftValue; + [_giftValueChooseButton addTarget:self action:@selector(chooseRoomPKVoteAction:) forControlEvents:UIControlEventTouchUpInside]; + _giftValueChooseButton.selected = YES; + } + return _giftValueChooseButton; +} + +- (UILabel *)giftValueLabel { + if (!_giftValueLabel) { + _giftValueLabel = [[UILabel alloc] init]; + _giftValueLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _giftValueLabel.font = [UIFont systemFontOfSize:14]; + _giftValueLabel.text = YMLocalizedString(@"XPRoomPKVoteTableViewCell1"); + } + return _giftValueLabel; +} + +- (UIStackView *)giftNumStackView { + if (!_giftNumStackView) { + _giftNumStackView = [[UIStackView alloc] init]; + _giftNumStackView.axis = UILayoutConstraintAxisHorizontal; + _giftNumStackView.distribution = UIStackViewDistributionFill; + _giftNumStackView.alignment = UIStackViewAlignmentCenter; + _giftNumStackView.spacing = 5; + } + return _giftNumStackView; +} + +- (UIButton *)giftNumChooseButton { + if (!_giftNumChooseButton) { + _giftNumChooseButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_giftNumChooseButton setImage:[UIImage imageNamed:@"room_pk_vote_normal"] forState:UIControlStateNormal]; + [_giftNumChooseButton setImage:[UIImage imageNamed:@"room_pk_vote_select"] forState:UIControlStateSelected]; + _giftNumChooseButton.tag = RoomPKVoteModeType_NumberPerson; + [_giftNumChooseButton addTarget:self action:@selector(chooseRoomPKVoteAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _giftNumChooseButton; +} + +- (UILabel *)giftNumLabel { + if (!_giftNumLabel) { + _giftNumLabel = [[UILabel alloc] init]; + _giftNumLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _giftNumLabel.font = [UIFont systemFontOfSize:14]; + _giftNumLabel.text = YMLocalizedString(@"XPRoomPKVoteTableViewCell2"); + } + return _giftNumLabel; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _lineView; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatConsumerAssembletionRegardElement.h b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatConsumerAssembletionRegardElement.h deleted file mode 100644 index 62977698..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatConsumerAssembletionRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomPKUserCollectionViewCell.h -// YUMI -// -// Created by YUMI on 2022/3/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ChamberCombatChooseConsumerMatrix; -@interface YUMIChamberCombatConsumerAssembletionRegardElement : UICollectionViewCell -@property (nonatomic,strong) ChamberCombatChooseConsumerMatrix *userInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatConsumerAssembletionRegardElement.m b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatConsumerAssembletionRegardElement.m deleted file mode 100644 index ec07cb32..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatConsumerAssembletionRegardElement.m +++ /dev/null @@ -1,121 +0,0 @@ -// -// YMRoomPKUserCollectionViewCell.m -// YUMI -// -// Created by YUMI on 2022/3/21. -// - -#import "YUMIChamberCombatConsumerAssembletionRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "ChamberCombatChooseConsumerMatrix.h" - -@interface YUMIChamberCombatConsumerAssembletionRegardElement () -@property (nonatomic,strong) NetIndicateRegard *maintainrietaryIntelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *maintainrietarySequencignation; -@property (nonatomic,strong) UIButton *concludeBtuton; -@end - -@implementation YUMIChamberCombatConsumerAssembletionRegardElement -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - - -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.maintainrietaryIntelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.maintainrietarySequencignation]; - [self.contentView addSubview:self.concludeBtuton]; -} - -- (void)initChildLyRestrictions { - [self.maintainrietaryIntelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.contentView); - make.height.mas_equalTo(self.maintainrietaryIntelligenceportraitIndicateRegard.mas_width); - }]; - - [self.maintainrietarySequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.maintainrietaryIntelligenceportraitIndicateRegard.mas_bottom).offset(5); - make.height.mas_equalTo(14); - }]; - - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.bottom.mas_equalTo(self.maintainrietaryIntelligenceportraitIndicateRegard); - make.width.height.mas_equalTo(16); - }]; -} - -#pragma mark - Event Response -- (void)concludeBtutonPerformance:(UIButton *)sender { - sender.selected = !sender.selected; -} -#pragma mark - Getters And Setters -- (void)setUserInfo:(ChamberCombatChooseConsumerMatrix *)userInfo { - _userInfo = userInfo; - if (_userInfo) { - if (_userInfo.imageName) { - _maintainrietaryIntelligenceportraitIndicateRegard.image = [UIImage imageNamed:_userInfo.imageName]; - } - - if (_userInfo.avatar) { - _maintainrietaryIntelligenceportraitIndicateRegard.imageUrl = _userInfo.avatar; - } - self.maintainrietarySequencignation.text = _userInfo.title; - - if (_userInfo.uid.length > 0 && _userInfo.isEnableChoose) { - self.concludeBtuton.hidden = NO; - self.concludeBtuton.selected = _userInfo.isSelect; - } else { - self.concludeBtuton.hidden = YES; - } - } -} - -- (NetIndicateRegard *)maintainrietaryIntelligenceportraitIndicateRegard { - if (!_maintainrietaryIntelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _maintainrietaryIntelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _maintainrietaryIntelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _maintainrietaryIntelligenceportraitIndicateRegard.layer.cornerRadius = 46/2; - _maintainrietaryIntelligenceportraitIndicateRegard.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - } - return _maintainrietaryIntelligenceportraitIndicateRegard; -} - -- (UILabel *)maintainrietarySequencignation { - if (!_maintainrietarySequencignation) { - _maintainrietarySequencignation = [[UILabel alloc] init]; - _maintainrietarySequencignation.font = [UIFont systemFontOfSize:10]; - _maintainrietarySequencignation.backgroundColor = [UIColor colorWithRed:(CGFloat)204 / (CGFloat)255 green:(CGFloat)204 / (CGFloat)255 blue:(CGFloat)204 / (CGFloat)255 alpha:1]; - _maintainrietarySequencignation.layer.masksToBounds = YES; - _maintainrietarySequencignation.layer.cornerRadius = 7; - _maintainrietarySequencignation.textColor = [UIColor whiteColor]; - _maintainrietarySequencignation.textAlignment = NSTextAlignmentCenter; - } - return _maintainrietarySequencignation; -} - - -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_scope_pk_user_unselect"] forState:UIControlStateNormal]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_scope_pk_vote_select"] forState:UIControlStateSelected]; - [_concludeBtuton addTarget:self action:@selector(concludeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _concludeBtuton.hidden = YES; - } - return _concludeBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatDispossessTabulationRegardElement.h b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatDispossessTabulationRegardElement.h deleted file mode 100644 index 975fc63b..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatDispossessTabulationRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomPKEmptyTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/3/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberCombatDispossessTabulationRegardElement : UITableViewCell - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatDispossessTabulationRegardElement.m b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatDispossessTabulationRegardElement.m deleted file mode 100644 index fca042ad..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatDispossessTabulationRegardElement.m +++ /dev/null @@ -1,70 +0,0 @@ -// -// YMRoomPKEmptyTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/3/18. -// - -#import "YUMIChamberCombatDispossessTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIIndicateConstant.h" - -@interface YUMIChamberCombatDispossessTabulationRegardElement () -@property (nonatomic,strong) UIImageView *dispossessIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@end - -@implementation YUMIChamberCombatDispossessTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.dispossessIndicateRegard]; - [self.contentView addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.dispossessIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.contentView).offset(250); - make.size.mas_equalTo(CGSizeMake(100, 100)); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.dispossessIndicateRegard.mas_bottom).offset(20); - make.left.right.mas_equalTo(self.contentView); - }]; -} -#pragma mark - Getters And Setters -- (UIImageView *)dispossessIndicateRegard { - if (!_dispossessIndicateRegard) { - _dispossessIndicateRegard = [[UIImageView alloc] init]; - _dispossessIndicateRegard.userInteractionEnabled = YES; - _dispossessIndicateRegard.image = [UIIndicateConstant defalutDispossessDepapossessor]; - _dispossessIndicateRegard.layer.masksToBounds = YES; - _dispossessIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _dispossessIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Room_PK_Empty_Table_View_Cell_0"); - _titleLabel.font = [UIFont systemFontOfSize:16]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _titleLabel; -} -@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatGenreTabulationRegardElement.h b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatGenreTabulationRegardElement.h deleted file mode 100644 index 6eb83e4d..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatGenreTabulationRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomPKTypeTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/3/17. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberCombatGenreTabulationRegardElement : UITableViewCell - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatGenreTabulationRegardElement.m b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatGenreTabulationRegardElement.m deleted file mode 100644 index be38b2cc..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatGenreTabulationRegardElement.m +++ /dev/null @@ -1,83 +0,0 @@ -// -// YMRoomPKTypeTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/3/17. -// - -#import "YUMIChamberCombatGenreTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" - -@interface YUMIChamberCombatGenreTabulationRegardElement () -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UILabel *genreSequencignation; -@property (nonatomic,strong) UIView * burlywoodRegard; -@end - -@implementation YUMIChamberCombatGenreTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - self.selectionStyle = UITableViewCellSelectionStyleNone; - self.contentView.backgroundColor = [DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]; - [self.contentView addSubview:self.titleLabel]; - [self.contentView addSubview:self.genreSequencignation]; - [self.contentView addSubview:self.burlywoodRegard]; -} - -- (void)initChildLyRestrictions { - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.contentView).offset(15); - make.centerY.mas_equalTo(self.contentView); - }]; - - - [self.genreSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.titleLabel.mas_right).offset(20); - make.centerY.mas_equalTo(self.contentView); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.contentView); - make.left.right.mas_equalTo(self.contentView).inset(15); - make.height.mas_equalTo(1); - }]; -} -#pragma mark - Getters And Setters -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Room_PK_Type_Table_View_Cell_0"); - _titleLabel.font = [UIFont boldSystemFontOfSize:15]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -- (UILabel *)genreSequencignation { - if (!_genreSequencignation) { - _genreSequencignation = [[UILabel alloc] init]; - _genreSequencignation.text = @"按团队PK"; - _genreSequencignation.font = [UIFont systemFontOfSize:14]; - _genreSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _genreSequencignation; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _burlywoodRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatIntratemporalTabulationRegardElement.h b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatIntratemporalTabulationRegardElement.h deleted file mode 100644 index 03901db7..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatIntratemporalTabulationRegardElement.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMRoomPKTimeTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/3/17. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberCombatIntratemporalTabulationRegardElement : UITableViewCell - -@property (nonatomic,copy) NSString *time; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatIntratemporalTabulationRegardElement.m b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatIntratemporalTabulationRegardElement.m deleted file mode 100644 index 1fba9170..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatIntratemporalTabulationRegardElement.m +++ /dev/null @@ -1,87 +0,0 @@ -// -// YMRoomPKTimeTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/3/17. -// - -#import "YUMIChamberCombatIntratemporalTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" - -@interface YUMIChamberCombatIntratemporalTabulationRegardElement () -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UILabel *intratemporalSequencignation; -@property (nonatomic,strong) UIImageView *arrowIndicateRegard; -@end - -@implementation YUMIChamberCombatIntratemporalTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - self.selectionStyle = UITableViewCellSelectionStyleNone; - self.contentView.backgroundColor = [DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]; - [self.contentView addSubview:self.titleLabel]; - [self.contentView addSubview:self.intratemporalSequencignation]; - [self.contentView addSubview:self.arrowIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.contentView).offset(15); - make.centerY.mas_equalTo(self.contentView); - }]; - - [self.arrowIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.contentView).offset(-15); - make.size.mas_equalTo(CGSizeMake(6.5, 11)); - make.centerY.mas_equalTo(self.contentView); - }]; - - [self.intratemporalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.arrowIndicateRegard.mas_left).offset(-3); - make.centerY.mas_equalTo(self.contentView); - }]; -} -#pragma mark - Getters And Setters -- (void)setTime:(NSString *)time { - _time = time; - self.intratemporalSequencignation.text = _time; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Room_PK_Time_Table_View_Cell_0"); - _titleLabel.font = [UIFont boldSystemFontOfSize:15]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -- (UILabel *)intratemporalSequencignation { - if (!_intratemporalSequencignation) { - _intratemporalSequencignation = [[UILabel alloc] init]; - _intratemporalSequencignation.text = YMLocalizedString(@"YUMI_Room_PK_Time_Table_View_Cell_1"); - _intratemporalSequencignation.font = [UIFont systemFontOfSize:14]; - _intratemporalSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _intratemporalSequencignation; -} - -- (UIImageView *)arrowIndicateRegard { - if (!_arrowIndicateRegard) { - _arrowIndicateRegard = [[UIImageView alloc] init]; - _arrowIndicateRegard.userInteractionEnabled = YES; - _arrowIndicateRegard.image = [UIImage imageNamed:@"yumi_same_right_arrow"]; - } - return _arrowIndicateRegard; -} -@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatReflectionTabulationRegardElement.h b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatReflectionTabulationRegardElement.h deleted file mode 100644 index f12119fe..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatReflectionTabulationRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomPKRecordTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/3/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ChamberCombatReflectionMatrix; -@interface YUMIChamberCombatReflectionTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) ChamberCombatReflectionMatrix *combatSpecificAbstract; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatReflectionTabulationRegardElement.m b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatReflectionTabulationRegardElement.m deleted file mode 100644 index 03937bc9..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatReflectionTabulationRegardElement.m +++ /dev/null @@ -1,260 +0,0 @@ -// -// YMRoomPKRecordTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/3/18. -// - -#import "YUMIChamberCombatReflectionTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "PLIntratemporalUtil.h" -#import "ChamberCombatReflectionMatrix.h" -#import "YUMIChamberCombatReflectionNickRegard.h" - -@interface YUMIChamberCombatReflectionTabulationRegardElement () -@property (nonatomic,strong) YUMIChamberCombatReflectionNickRegard *victoryerConsumerRegard; -@property (nonatomic,strong) YUMIChamberCombatReflectionNickRegard *loseConsumerRegard; -@property (nonatomic,strong) UIImageView *vsIndicateRegard; -@property (nonatomic,strong) UILabel * victoryerEarnSequencignation; -@property (nonatomic,strong) UIButton *victoryerBtuton; -@property (nonatomic,strong) UILabel * loseEarnSequencignation; -@property (nonatomic,strong) UIButton *loseBtuton; -@property (nonatomic,strong) UILabel *combateGenreSequencignation; -@property (nonatomic,strong) UILabel *engagementSequencignation; -@end - -@implementation YUMIChamberCombatReflectionTabulationRegardElement - - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.selectionStyle = UITableViewCellSelectionStyleNone; - self.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - [self.contentView addSubview:self.victoryerConsumerRegard]; - [self.contentView addSubview:self.loseConsumerRegard]; - [self.contentView addSubview:self.vsIndicateRegard]; - [self.contentView addSubview:self.victoryerEarnSequencignation]; - [self.contentView addSubview:self.combateGenreSequencignation]; - [self.contentView addSubview:self.loseEarnSequencignation]; - [self.contentView addSubview:self.victoryerBtuton]; - [self.contentView addSubview:self.engagementSequencignation]; - [self.contentView addSubview:self.loseBtuton]; -} - -- (void)initChildLyRestrictions { - - [self.victoryerConsumerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.contentView).offset(15); - make.top.mas_equalTo(self.contentView).offset(31); - make.right.mas_equalTo(self.vsIndicateRegard.mas_left).offset(-20); - }]; - - [self.vsIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(29); - make.height.mas_equalTo(43); - make.centerY.mas_equalTo(self.victoryerConsumerRegard); - make.centerX.mas_equalTo(self.contentView); - }]; - - [self.loseConsumerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.vsIndicateRegard.mas_right).offset(20); - make.width.centerY.mas_equalTo(self.victoryerConsumerRegard); - make.right.mas_equalTo(self.contentView).offset(-15); - }]; - - [self.victoryerEarnSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.width.mas_equalTo(self.victoryerConsumerRegard); - make.top.mas_equalTo(self.victoryerConsumerRegard.mas_bottom).offset(10); - }]; - - [self.combateGenreSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.contentView); - make.centerY.mas_equalTo(self.victoryerEarnSequencignation); - }]; - - [self.loseEarnSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.width.mas_equalTo(self.loseConsumerRegard); - make.centerY.mas_equalTo(self.victoryerEarnSequencignation); - }]; - - [self.victoryerBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.victoryerConsumerRegard); - make.top.mas_equalTo(self.victoryerEarnSequencignation.mas_bottom).offset(7); - make.width.mas_equalTo(85); - make.height.mas_equalTo(19); - }]; - - [self.engagementSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.victoryerBtuton); - make.centerX.mas_equalTo(self.contentView); - make.width.mas_equalTo(71); - }]; - - [self.loseBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.centerY.mas_equalTo(self.victoryerBtuton); - make.centerX.mas_equalTo(self.loseConsumerRegard); - }]; -} - -#pragma mark - Getters And Setters -- (void)setCombatSpecificAbstract:(ChamberCombatReflectionMatrix *)combatSpecificAbstract { - _combatSpecificAbstract = combatSpecificAbstract; - if (_combatSpecificAbstract) { - - ChamberCombatSquadMatrix *redTeam; - ChamberCombatSquadMatrix * blueTeam; - for (ChamberCombatSquadMatrix *team in _combatSpecificAbstract.teams) { - if (team.team == GroupGenre_Red) { - redTeam = team; - }else{ - blueTeam = team; - } - } - - UIColor * winnerMemberViewColor; - UIColor * loseMemberViewColor; - UIImage * winnerImage; - UIImage * loseImage; - NSString * winnerTitle; - NSString * loseString; - - if (_combatSpecificAbstract.result == ChamberCombatResultGenre_Draw) { - winnerMemberViewColor = UIColorFromRGB(0xcccccc); - loseMemberViewColor = UIColorFromRGB(0xcccccc); - winnerImage = [UIImage imageNamed:@"yumi_scope_pk_record_lose"]; - loseImage = [UIImage imageNamed:@"yumi_scope_pk_record_lose"]; - winnerTitle = YMLocalizedString(@"YUMI_Room_PK_Record_Table_View_Cell_0"); - loseString = YMLocalizedString(@"YUMI_Room_PK_Record_Table_View_Cell_1"); - - - }else if (_combatSpecificAbstract.result == ChamberCombatResultGenre_Red){ - winnerMemberViewColor= UIColorFromRGB(0xFC4895); - loseMemberViewColor = UIColorFromRGB(0xcccccc); - winnerImage = [UIImage imageNamed:@"yumi_scope_pk_record_winner"]; - loseImage = [UIImage imageNamed:@"yumi_scope_pk_record_lose"]; - winnerTitle = YMLocalizedString(@"YUMI_Room_PK_Record_Table_View_Cell_2"); - loseString = YMLocalizedString(@"YUMI_Room_PK_Record_Table_View_Cell_3"); - - }else if (_combatSpecificAbstract.result == ChamberCombatResultGenre_Blue){ - winnerMemberViewColor = UIColorFromRGB(0xcccccc); - loseMemberViewColor = UIColorFromRGB(0x3B74FE); - winnerImage = [UIImage imageNamed:@"yumi_scope_pk_record_lose"]; - loseImage = [UIImage imageNamed:@"yumi_scope_pk_result_blue_victory_background"]; - winnerTitle = YMLocalizedString(@"YUMI_Room_PK_Record_Table_View_Cell_4"); - loseString = YMLocalizedString(@"YUMI_Room_PK_Record_Table_View_Cell_5"); - } - - [self.victoryerBtuton setBackgroundImage:winnerImage forState:UIControlStateNormal]; - [self.loseBtuton setBackgroundImage:loseImage forState:UIControlStateNormal]; - [self.victoryerBtuton setTitle:winnerTitle forState:UIControlStateNormal]; - [self.loseBtuton setTitle:loseString forState:UIControlStateNormal]; - - self.victoryerEarnSequencignation.text = [NSString stringWithFormat:@"%lld",redTeam.score]; - self.loseEarnSequencignation.text = [NSString stringWithFormat:@"%lld",blueTeam.score]; - self.victoryerConsumerRegard.backgroundColor = winnerMemberViewColor; - self.loseConsumerRegard.backgroundColor = loseMemberViewColor; - - if (_combatSpecificAbstract.voteMode == ChamberCombatVoteModeGenre_GiftValue) { - self.combateGenreSequencignation.text = YMLocalizedString(@"YUMI_Room_PK_Record_Table_View_Cell_6"); - }else{ - self.combateGenreSequencignation.text = YMLocalizedString(@"YUMI_Room_PK_Record_Table_View_Cell_7"); - } - - self.victoryerConsumerRegard.consumerStatement = redTeam.teamMembers; - self.loseConsumerRegard.consumerStatement = blueTeam.teamMembers; - - self.engagementSequencignation.text = [PLIntratemporalUtil acquireEngagementAboutGeneralIntrtowardsemporalAbout:[NSString stringWithFormat:@"%ld", _combatSpecificAbstract.beginTime]]; - } -} - -- (YUMIChamberCombatReflectionNickRegard *)victoryerConsumerRegard { - if (!_victoryerConsumerRegard) { - _victoryerConsumerRegard = [[YUMIChamberCombatReflectionNickRegard alloc] init]; - } - return _victoryerConsumerRegard; -} - -- (YUMIChamberCombatReflectionNickRegard *)loseConsumerRegard { - if (!_loseConsumerRegard) { - _loseConsumerRegard = [[YUMIChamberCombatReflectionNickRegard alloc] init]; - } - return _loseConsumerRegard; -} - -- (UILabel *)combateGenreSequencignation{ - if (!_combateGenreSequencignation) { - _combateGenreSequencignation = [[UILabel alloc] init]; - _combateGenreSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _combateGenreSequencignation.font = [UIFont systemFontOfSize:13]; - _combateGenreSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _combateGenreSequencignation; -} - -- (UILabel *)engagementSequencignation{ - if (!_engagementSequencignation) { - _engagementSequencignation = [[UILabel alloc] init]; - _engagementSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _engagementSequencignation.font = [UIFont systemFontOfSize:12]; - _engagementSequencignation.textAlignment = NSTextAlignmentCenter; - _engagementSequencignation.numberOfLines = 2; - } - return _engagementSequencignation; -} - -- (UIButton *)victoryerBtuton{ - if (!_victoryerBtuton) { - _victoryerBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - _victoryerBtuton.titleLabel.font = [UIFont systemFontOfSize:13]; - [_victoryerBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - } - return _victoryerBtuton; -} - -- (UIButton *)loseBtuton{ - if (!_loseBtuton) { - _loseBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - _loseBtuton.titleLabel.font = [UIFont systemFontOfSize:13]; - [_loseBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - } - return _loseBtuton; -} - -- (UILabel *)loseEarnSequencignation{ - if (!_loseEarnSequencignation) { - _loseEarnSequencignation = [[UILabel alloc] init]; - _loseEarnSequencignation.font = [UIFont systemFontOfSize:18]; - _loseEarnSequencignation.textColor = [DJDKMIMOMColor aplictowardsionUnderlinePrettify]; - _loseEarnSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _loseEarnSequencignation; -} - -- (UILabel *)victoryerEarnSequencignation{ - if (!_victoryerEarnSequencignation) { - _victoryerEarnSequencignation = [[UILabel alloc] init]; - _victoryerEarnSequencignation.font = [UIFont systemFontOfSize:18]; - _victoryerEarnSequencignation.textColor = UIColorFromRGB(0xFE5372); - _victoryerEarnSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _victoryerEarnSequencignation; -} - -- (UIImageView *)vsIndicateRegard{ - if (!_vsIndicateRegard) { - _vsIndicateRegard = [[UIImageView alloc] init]; - _vsIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_vs_logo"]; - } - return _vsIndicateRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatVoteTabulationRegardElement.h b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatVoteTabulationRegardElement.h deleted file mode 100644 index ae578d06..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatVoteTabulationRegardElement.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YMRoomPKVoteTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/3/17. -// - -#import -#import "ChamberCombatReflectionMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@class YUMIChamberCombatVoteTabulationRegardElement; -@protocol FBCChamberCombatVoteTabulationViweElementRepresendtation - -- (void)yUMIChamberCombatVoteTarbsultowardsionViweElement:(YUMIChamberCombatVoteTabulationRegardElement *)view didChooseVoteType:(ChamberCombatVoteModeGenre)VoteType; - -@end - - -@interface YUMIChamberCombatVoteTabulationRegardElement : UITableViewCell -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatVoteTabulationRegardElement.m b/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatVoteTabulationRegardElement.m deleted file mode 100644 index c9e9f630..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/Cell/YUMIChamberCombatVoteTabulationRegardElement.m +++ /dev/null @@ -1,176 +0,0 @@ -// -// YMRoomPKVoteTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/3/17. -// - -#import "YUMIChamberCombatVoteTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" - -@interface YUMIChamberCombatVoteTabulationRegardElement () -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UIStackView *presentBWSttessHierarchyRegard; -@property (nonatomic,strong) UIButton *presentBWSttessConcludeBtuton; -@property (nonatomic,strong) UILabel *presentBWSttessSequencignation; -@property (nonatomic,strong) UIStackView *presentFigureHierarchyRegard; -@property (nonatomic,strong) UIButton *presentFigureConcludeBtuton; -@property (nonatomic,strong) UILabel *presentFigureSequencignation; -@property (nonatomic,strong) UILabel *genreSequencignation; -@property (nonatomic,strong) UIView * burlywoodRegard; -@end - -@implementation YUMIChamberCombatVoteTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - self.selectionStyle = UITableViewCellSelectionStyleNone; - self.contentView.backgroundColor = [DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]; - [self.contentView addSubview:self.titleLabel]; - [self.contentView addSubview:self.presentBWSttessHierarchyRegard]; - [self.contentView addSubview:self.presentFigureHierarchyRegard]; - [self.contentView addSubview:self.burlywoodRegard]; - - [self.presentBWSttessHierarchyRegard addArrangedSubview:self.presentBWSttessConcludeBtuton]; - [self.presentBWSttessHierarchyRegard addArrangedSubview:self.presentBWSttessSequencignation]; - - [self.presentFigureHierarchyRegard addArrangedSubview:self.presentFigureConcludeBtuton]; - [self.presentFigureHierarchyRegard addArrangedSubview:self.presentFigureSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.contentView).offset(15); - make.centerY.mas_equalTo(self.contentView); - }]; - - - [self.presentBWSttessHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.contentView).offset(92); - make.top.bottom.mas_equalTo(self.contentView); - }]; - - [self.presentBWSttessConcludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(15, 15)); - }]; - - [self.presentFigureHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.presentBWSttessHierarchyRegard.mas_right).offset(15); - make.top.bottom.mas_equalTo(self.contentView); - }]; - - [self.presentFigureConcludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(15, 15)); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.contentView); - make.left.right.mas_equalTo(self.contentView).inset(15); - make.height.mas_equalTo(1); - }]; -} - -#pragma mark - Event Response -- (void)concludeChamberCombatVotePerformance:(UIButton *)sender { - self.presentBWSttessConcludeBtuton.selected = NO; - self.presentFigureConcludeBtuton.selected = NO; - sender.selected = !sender.selected; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberCombatVoteTarbsultowardsionViweElement:didChooseVoteType:)]) { - [self.delegate yUMIChamberCombatVoteTarbsultowardsionViweElement:self didChooseVoteType:sender.tag]; - } -} - -#pragma mark - Getters And Setters -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Room_PK_Vote_Table_View_Cell_0"); - _titleLabel.font = [UIFont boldSystemFontOfSize:15]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -- (UIStackView *)presentBWSttessHierarchyRegard { - if (!_presentBWSttessHierarchyRegard) { - _presentBWSttessHierarchyRegard = [[UIStackView alloc] init]; - _presentBWSttessHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _presentBWSttessHierarchyRegard.distribution = UIStackViewDistributionFill; - _presentBWSttessHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _presentBWSttessHierarchyRegard.spacing = 5; - } - return _presentBWSttessHierarchyRegard; -} - -- (UIButton *)presentBWSttessConcludeBtuton { - if (!_presentBWSttessConcludeBtuton) { - _presentBWSttessConcludeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_presentBWSttessConcludeBtuton setImage:[UIImage imageNamed:@"yumi_scope_pk_vote_normal"] forState:UIControlStateNormal]; - [_presentBWSttessConcludeBtuton setImage:[UIImage imageNamed:@"yumi_scope_pk_vote_select"] forState:UIControlStateSelected]; - _presentBWSttessConcludeBtuton.tag = ChamberCombatVoteModeGenre_GiftValue; - [_presentBWSttessConcludeBtuton addTarget:self action:@selector(concludeChamberCombatVotePerformance:) forControlEvents:UIControlEventTouchUpInside]; - _presentBWSttessConcludeBtuton.selected = YES; - } - return _presentBWSttessConcludeBtuton; -} - -- (UILabel *)presentBWSttessSequencignation { - if (!_presentBWSttessSequencignation) { - _presentBWSttessSequencignation = [[UILabel alloc] init]; - _presentBWSttessSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _presentBWSttessSequencignation.font = [UIFont systemFontOfSize:14]; - _presentBWSttessSequencignation.text = YMLocalizedString(@"YUMI_Room_PK_Vote_Table_View_Cell_1"); - } - return _presentBWSttessSequencignation; -} - -- (UIStackView *)presentFigureHierarchyRegard { - if (!_presentFigureHierarchyRegard) { - _presentFigureHierarchyRegard = [[UIStackView alloc] init]; - _presentFigureHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _presentFigureHierarchyRegard.distribution = UIStackViewDistributionFill; - _presentFigureHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _presentFigureHierarchyRegard.spacing = 5; - } - return _presentFigureHierarchyRegard; -} - -- (UIButton *)presentFigureConcludeBtuton { - if (!_presentFigureConcludeBtuton) { - _presentFigureConcludeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_presentFigureConcludeBtuton setImage:[UIImage imageNamed:@"yumi_scope_pk_vote_normal"] forState:UIControlStateNormal]; - [_presentFigureConcludeBtuton setImage:[UIImage imageNamed:@"yumi_scope_pk_vote_select"] forState:UIControlStateSelected]; - _presentFigureConcludeBtuton.tag = ChamberCombatVoteModeGenre_NumberPerson; - [_presentFigureConcludeBtuton addTarget:self action:@selector(concludeChamberCombatVotePerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _presentFigureConcludeBtuton; -} - -- (UILabel *)presentFigureSequencignation { - if (!_presentFigureSequencignation) { - _presentFigureSequencignation = [[UILabel alloc] init]; - _presentFigureSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _presentFigureSequencignation.font = [UIFont systemFontOfSize:14]; - _presentFigureSequencignation.text = YMLocalizedString(@"YUMI_Room_PK_Vote_Table_View_Cell_2"); - } - return _presentFigureSequencignation; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _burlywoodRegard; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRomPKResultTitleLabel.h b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRomPKResultTitleLabel.h new file mode 100644 index 00000000..420edebd --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRomPKResultTitleLabel.h @@ -0,0 +1,21 @@ +// +// YMRomPKResultTitleLabel.h +// YUMI +// +// Created by YUMI on 2022/3/31. +// + +#import +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPRomPKResultTitleLabel : UIView +///类型 +@property (nonatomic,assign) GroupType groupType; +///显示标题 +@property (nonatomic,copy) NSString *title; +///显示内容 +@property (nonatomic,copy) NSString *content; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRomPKResultTitleLabel.m b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRomPKResultTitleLabel.m new file mode 100644 index 00000000..d4aee6f0 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRomPKResultTitleLabel.m @@ -0,0 +1,92 @@ +// +// YMRomPKResultTitleLabel.m +// YUMI +// +// Created by YUMI on 2022/3/31. +// + +#import "XPRomPKResultTitleLabel.h" +///Third +#import +#import "DJDKMIMOMColor.h" + +@interface XPRomPKResultTitleLabel () +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///显示内容 +@property (nonatomic,strong) UILabel *contentLabel; +@end + +@implementation XPRomPKResultTitleLabel + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.titleLabel]; + [self addSubview:self.contentLabel]; +} + +- (void)initSubViewConstraints { + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self); + make.centerY.mas_equalTo(self); + }]; + + [self.contentLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.titleLabel.mas_right).offset(10); + make.centerY.mas_equalTo(self.titleLabel); + }]; +} + +#pragma mark - Getters And Setters +- (void)setGroupType:(GroupType)groupType { + _groupType = groupType; + if (_groupType == GroupType_Red) { + self.contentLabel.textColor = UIColorFromRGB(0xfd4d0e); + } else if(_groupType == GroupType_Blue) { + self.contentLabel.textColor = UIColorFromRGB(0x59b9fb); + } +} + +- (void)setContent:(NSString *)content { + _content = content; + if (_content) { + self.contentLabel.text = _content; + } +} + +- (void)setTitle:(NSString *)title { + _title = title; + if (_title) { + self.titleLabel.text = _title; + } +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:14]; + _titleLabel.textColor = [UIColor whiteColor]; + } + return _titleLabel; +} + +- (UILabel *)contentLabel { + if (!_contentLabel) { + _contentLabel = [[UILabel alloc] init]; + _contentLabel.font = [UIFont systemFontOfSize:14]; + } + return _contentLabel; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKPanelUserView.h b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKPanelUserView.h new file mode 100644 index 00000000..6b7715e5 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKPanelUserView.h @@ -0,0 +1,28 @@ +// +// YMRoomPKPanelUserView.h +// YUMI +// +// Created by YUMI on 2022/3/28. +// + +#import +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN +@class XPRoomPKPanelUserView, RoomPKChooseUserModel; +@protocol XPRoomPKPanelUserViewDelegate +///选择红队还是蓝队的添加人 +- (void)xPRoomPKPanelUserView:(XPRoomPKPanelUserView *)view didClickAddButton:(GroupType)type; + +@end +@interface XPRoomPKPanelUserView : UIView +///是否展示添加的按钮 +@property (nonatomic,assign) BOOL isShowAdd; +///高度 +@property (nonatomic,assign) CGFloat itemHeight; +@property (nonatomic,assign) GroupType type; +@property (nonatomic,strong, nullable) NSArray *userArray; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKPanelUserView.m b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKPanelUserView.m new file mode 100644 index 00000000..5d24d17d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKPanelUserView.m @@ -0,0 +1,310 @@ +// +// YMRoomPKPanelUserView.m +// YUMI +// +// Created by YUMI on 2022/3/28. +// + +#import "XPRoomPKPanelUserView.h" +///Third +#import +///Tool +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" +#import "NSArray+Safe.h" +///Model +#import "RoomPKChooseUserModel.h" + +@interface XPRoomPKPanelUserView () +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///人员 +@property (nonatomic,strong) UIView * userView; +///第一个人 +@property (nonatomic,strong) NetImageView *firstUserView; +///第二个人 +@property (nonatomic,strong) NetImageView *secondUserView; +///第三个人 +@property (nonatomic,strong) NetImageView *thirdUserView; +///第四个人 +@property (nonatomic,strong) NetImageView *fourthUserView; +///第五个人 +@property (nonatomic,strong) NetImageView *fifthUserView; +///添加按钮 +@property (nonatomic,strong) UIButton *addButton; +/// +@property (nonatomic,strong) NSArray *viewArray; +@end + +@implementation XPRoomPKPanelUserView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + CGFloat itemheight = self.itemHeight; + self.firstUserView.layer.cornerRadius = itemheight / 2; + self.secondUserView.layer.cornerRadius = itemheight / 2; + self.thirdUserView.layer.cornerRadius = itemheight / 2; + self.fourthUserView.layer.cornerRadius = itemheight / 2; + self.fifthUserView.layer.cornerRadius = itemheight / 2; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.isShowAdd = YES; + [self addSubview:self.stackView]; + [self.stackView addArrangedSubview:self.addButton]; + [self.stackView addArrangedSubview:self.userView]; + [self.userView addSubview:self.fifthUserView]; + [self.userView addSubview:self.fourthUserView]; + [self.userView addSubview:self.thirdUserView]; + [self.userView addSubview:self.secondUserView]; + [self.userView addSubview:self.firstUserView]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.stackView.mas_left); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.top.bottom.mas_equalTo(self); + }]; + + [self.addButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(25); + }]; + + [self.userView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(0); + }]; +} + +#pragma mark - Event Response +- (void)addButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomPKPanelUserView:didClickAddButton:)]) { + [self.delegate xPRoomPKPanelUserView:self didClickAddButton:self.type]; + } +} + +- (void)didTapUserViewRecognizer { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomPKPanelUserView:didClickAddButton:)]) { + [self.delegate xPRoomPKPanelUserView:self didClickAddButton:self.type]; + } +} + +#pragma mark - Getters And Setters +- (void)setUserArray:(NSArray *)userArray { + _userArray = userArray; + if (_userArray.count > 0) { + self.userView.hidden = NO; + self.addButton.hidden = YES; + for (int i = 0 ; i< self.viewArray.count; i++) { + NetImageView * view = [self.viewArray safeObjectAtIndex1:i]; + if (i < self.userArray.count) { + RoomPKChooseUserModel * userInfo = [self.userArray safeObjectAtIndex1:i]; + view.hidden = NO; + view.imageUrl = userInfo.avatar; + } else { + view.hidden = YES; + } + } + CGFloat userViewWidth = (_userArray.count - 1) * 5 + self.itemHeight; + [self.userView mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(userViewWidth); + }]; + } else { + self.userView.hidden = YES; + self.addButton.hidden = self.isShowAdd ? NO : YES; + } +} + +- (void)setType:(GroupType)type { + _type = type; + if (_type == GroupType_Red) { + CGColorRef color = UIColorFromRGB(0xFFA572).CGColor; + self.firstUserView.layer.borderColor = color; + self.secondUserView.layer.borderColor = color; + self.thirdUserView.layer.borderColor = color; + self.fourthUserView.layer.borderColor = color; + self.fifthUserView.layer.borderColor = color; + [self.addButton setImage:[UIImage imageNamed:@"room_pk_progrss_red_add"] forState:UIControlStateNormal]; + [self.firstUserView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(self.mas_height); + make.right.centerY.mas_equalTo(self.userView); + }]; + + [self.secondUserView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.centerY.mas_equalTo(self.firstUserView); + make.left.mas_equalTo(self.firstUserView.mas_left).offset(-5); + }]; + + [self.thirdUserView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.centerY.mas_equalTo(self.firstUserView); + make.left.mas_equalTo(self.secondUserView.mas_left).offset(-5); + }]; + + [self.fourthUserView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.centerY.mas_equalTo(self.firstUserView); + make.left.mas_equalTo(self.thirdUserView.mas_left).offset(-5); + }]; + + [self.fifthUserView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.centerY.mas_equalTo(self.firstUserView); + make.left.mas_equalTo(self.fourthUserView.mas_left).offset(-5); + }]; + self.viewArray = @[self.firstUserView, self.secondUserView, self.thirdUserView, self.fourthUserView, self.fifthUserView]; + } else { + CGColorRef color = UIColorFromRGB(0x3ECAFC).CGColor; + self.firstUserView.layer.borderColor = color; + self.secondUserView.layer.borderColor = color; + self.thirdUserView.layer.borderColor = color; + self.fourthUserView.layer.borderColor = color; + self.fifthUserView.layer.borderColor = color; + [self.addButton setImage:[UIImage imageNamed:@"room_pk_progrss_blue_add"] forState:UIControlStateNormal]; + [self.fifthUserView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(self.mas_height); + make.left.centerY.mas_equalTo(self.userView); + }]; + + [self.fourthUserView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.centerY.mas_equalTo(self.fifthUserView); + make.left.mas_equalTo(self.fifthUserView.mas_left).offset(5); + }]; + + [self.thirdUserView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.centerY.mas_equalTo(self.fifthUserView); + make.left.mas_equalTo(self.fourthUserView.mas_left).offset(5); + }]; + + + [self.secondUserView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.centerY.mas_equalTo(self.fifthUserView); + make.left.mas_equalTo(self.thirdUserView.mas_left).offset(5); + }]; + + [self.firstUserView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.centerY.mas_equalTo(self.fifthUserView); + make.left.mas_equalTo(self.secondUserView.mas_left).offset(5); + }]; + self.viewArray = @[self.fifthUserView, self.fourthUserView, self.thirdUserView, self.secondUserView, self.firstUserView]; + } +} + +- (void)setIsShowAdd:(BOOL)isShowAdd { + _isShowAdd = isShowAdd; + self.addButton.hidden = !_isShowAdd; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 0; + } + return _stackView; +} + +- (UIView *)userView { + if (!_userView) { + _userView = [[UIView alloc] init]; + _userView.backgroundColor = [UIColor clearColor]; + _userView.hidden = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapUserViewRecognizer)]; + [_userView addGestureRecognizer:tap]; + } + return _userView; +} + +- (NetImageView *)firstUserView { + if (!_firstUserView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _firstUserView = [[NetImageView alloc] initWithConfig:config]; + _firstUserView.layer.masksToBounds = YES; + _firstUserView.layer.cornerRadius = 25/2; + _firstUserView.layer.borderWidth = 1; + _firstUserView.userInteractionEnabled = YES; + } + return _firstUserView; +} + +- (NetImageView *)secondUserView { + if (!_secondUserView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _secondUserView = [[NetImageView alloc] initWithConfig:config]; + _secondUserView.layer.masksToBounds = YES; + _secondUserView.layer.cornerRadius = 25/2; + _secondUserView.layer.borderWidth = 1; + _secondUserView.userInteractionEnabled = YES; + } + return _secondUserView; +} + + +- (NetImageView *)thirdUserView { + if (!_thirdUserView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _thirdUserView = [[NetImageView alloc] initWithConfig:config]; + _thirdUserView.layer.masksToBounds = YES; + _thirdUserView.layer.cornerRadius = 25/2; + _thirdUserView.layer.borderWidth = 1; + _secondUserView.userInteractionEnabled = YES; + } + return _thirdUserView; +} + +- (NetImageView *)fourthUserView { + if (!_fourthUserView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _fourthUserView = [[NetImageView alloc] initWithConfig:config]; + _fourthUserView.layer.masksToBounds = YES; + _fourthUserView.layer.cornerRadius = 25/2; + _fourthUserView.layer.borderWidth = 1; + _fourthUserView.userInteractionEnabled = YES; + } + return _fourthUserView; +} + +- (NetImageView *)fifthUserView { + if (!_fifthUserView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _fifthUserView = [[NetImageView alloc] initWithConfig:config]; + _fifthUserView.layer.masksToBounds = YES; + _fifthUserView.layer.cornerRadius = 25/2; + _fifthUserView.layer.borderWidth = 1; + _fifthUserView.userInteractionEnabled = YES; + } + return _fifthUserView; +} + +- (UIButton *)addButton { + if (!_addButton) { + _addButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_addButton addTarget:self action:@selector(addButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _addButton; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKRecordNickView.h b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKRecordNickView.h new file mode 100644 index 00000000..fed5822e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKRecordNickView.h @@ -0,0 +1,17 @@ +// +// YMRoomPKRecordNickView.h +// YUMI +// +// Created by YUMI on 2022/3/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class RoomPKTeamUserModel; +@interface XPRoomPKRecordNickView : UIView +///用户列表 +@property (nonatomic,strong) NSArray *userList; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKRecordNickView.m b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKRecordNickView.m new file mode 100644 index 00000000..f822b197 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKRecordNickView.m @@ -0,0 +1,232 @@ +// +// YMRoomPKRecordNickView.m +// YUMI +// +// Created by YUMI on 2022/3/18. +// + +#import "XPRoomPKRecordNickView.h" +///Third +#import +///Model +#import "RoomPKTeamModel.h" +#import "NSArray+Safe.h" + +@interface XPRoomPKRecordNickView () +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///左边的容器 +@property (nonatomic,strong) UIStackView *leftStackView; +///第一个名字 +@property (nonatomic,strong) UILabel *firstNickLabel; +///第二个名字 +@property (nonatomic,strong) UILabel *secondNickLabel; +///右边的容器 +@property (nonatomic,strong) UIStackView *rightStackView; +///第三个名字 +@property (nonatomic,strong) UILabel *thirdNickLabel; +///第四个名字 +@property (nonatomic,strong) UILabel *fourthNickLabel; +///分割线 +@property (nonatomic,strong) UIImageView *lineImageView; +/// +@property (nonatomic,strong) NSArray *viewArray; +@end + +@implementation XPRoomPKRecordNickView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.layer.masksToBounds = YES; + self.layer.cornerRadius = 8; + [self addSubview:self.stackView]; + [self addSubview:self.lineImageView]; + [self.stackView addArrangedSubview:self.leftStackView]; + [self.stackView addArrangedSubview:self.rightStackView]; + + [self.leftStackView addArrangedSubview:self.firstNickLabel]; + [self.leftStackView addArrangedSubview:self.thirdNickLabel]; + + [self.rightStackView addArrangedSubview:self.secondNickLabel]; + [self.rightStackView addArrangedSubview:self.fourthNickLabel]; + + self.viewArray = @[self.firstNickLabel, self.secondNickLabel, self.thirdNickLabel, self.fourthNickLabel]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.stackView).offset(10); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self).offset(10); + make.left.right.mas_equalTo(self); + }]; + + [self.firstNickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(15); + }]; + + [self.secondNickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(15); + }]; + + [self.thirdNickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(15); + }]; + + [self.fourthNickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(15); + }]; + + [self.lineImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self).offset(5); + make.bottom.mas_equalTo(self).offset(-5); + make.width.mas_equalTo(1); + }]; +} + +#pragma mark - Getters And Setters +- (void)setUserList:(NSArray *)userList { + _userList = userList; + if (_userList.count > 0) { + self.firstNickLabel.hidden = YES; + self.secondNickLabel.hidden = YES; + self.thirdNickLabel.hidden = YES; + self.fourthNickLabel.hidden = YES; + self.lineImageView.hidden = YES; + self.leftStackView.hidden = YES; + self.rightStackView.hidden = YES; + if (_userList.count == 1) { + self.firstNickLabel.hidden = NO; + self.leftStackView.hidden = NO; + } else if(_userList.count ==2) { + self.firstNickLabel.hidden = NO; + self.leftStackView.hidden = NO; + self.rightStackView.hidden = NO; + self.secondNickLabel.hidden = NO; + self.lineImageView.hidden = NO; + } else if(_userList.count == 3) { + self.firstNickLabel.hidden = NO; + self.leftStackView.hidden = NO; + self.rightStackView.hidden = NO; + self.secondNickLabel.hidden = NO; + self.thirdNickLabel.hidden = NO; + self.lineImageView.hidden = NO; + } else { + self.firstNickLabel.hidden = NO; + self.secondNickLabel.hidden = NO; + self.thirdNickLabel.hidden = NO; + self.fourthNickLabel.hidden = NO; + self.lineImageView.hidden = NO; + self.leftStackView.hidden = NO; + self.rightStackView.hidden = NO; + self.lineImageView.hidden = NO; + } + for (int i = 0; i < _userList.count; i++) { + RoomPKTeamUserModel * userInfo = [_userList safeObjectAtIndex1:i]; + UILabel * label = [self.viewArray safeObjectAtIndex1:i]; + label.text = userInfo.nick; + } + } +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFillEqually; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 2; + } + return _stackView; +} + + +- (UIStackView *)leftStackView { + if (!_leftStackView) { + _leftStackView = [[UIStackView alloc] init]; + _leftStackView.axis = UILayoutConstraintAxisVertical; + _leftStackView.distribution = UIStackViewDistributionFill; + _leftStackView.alignment = UIStackViewAlignmentFill; + _leftStackView.spacing = 2; + } + return _leftStackView; +} + +- (UILabel *)firstNickLabel { + if (!_firstNickLabel) { + _firstNickLabel = [[UILabel alloc] init]; + _firstNickLabel.font = [UIFont systemFontOfSize:12]; + _firstNickLabel.textColor = [UIColor whiteColor]; + _firstNickLabel.textAlignment = NSTextAlignmentCenter; + } + return _firstNickLabel; +} + +- (UILabel *)secondNickLabel { + if (!_secondNickLabel) { + _secondNickLabel = [[UILabel alloc] init]; + _secondNickLabel.font = [UIFont systemFontOfSize:12]; + _secondNickLabel.textColor = [UIColor whiteColor]; + _secondNickLabel.textAlignment = NSTextAlignmentCenter; + } + return _secondNickLabel; +} + + +- (UIStackView *)rightStackView { + if (!_rightStackView) { + _rightStackView = [[UIStackView alloc] init]; + _rightStackView.axis = UILayoutConstraintAxisVertical; + _rightStackView.distribution =UIStackViewDistributionFill; + _rightStackView.alignment = UIStackViewAlignmentFill; + _rightStackView.spacing = 2; + } + return _rightStackView; +} + +- (UILabel *)thirdNickLabel { + if (!_thirdNickLabel) { + _thirdNickLabel = [[UILabel alloc] init]; + _thirdNickLabel.font = [UIFont systemFontOfSize:12]; + _thirdNickLabel.textColor = [UIColor whiteColor]; + _thirdNickLabel.textAlignment = NSTextAlignmentCenter; + } + return _thirdNickLabel; +} + +- (UILabel *)fourthNickLabel { + if (!_fourthNickLabel) { + _fourthNickLabel = [[UILabel alloc] init]; + _fourthNickLabel.font = [UIFont systemFontOfSize:12]; + _fourthNickLabel.textColor = [UIColor whiteColor]; + _fourthNickLabel.textAlignment = NSTextAlignmentCenter; + } + return _fourthNickLabel; +} + +- (UIImageView *)lineImageView { + if (!_lineImageView) { + _lineImageView = [[UIImageView alloc] init]; + _lineImageView.userInteractionEnabled = YES; + _lineImageView.image = [UIImage imageNamed:@"room_pk_record_line_bg"]; + } + return _lineImageView; +} + + + + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKSelectUserView.h b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKSelectUserView.h new file mode 100644 index 00000000..e093e542 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKSelectUserView.h @@ -0,0 +1,33 @@ +// +// YMRoomPKSelectUserView.h +// YUMI +// +// Created by YUMI on 2022/3/21. +// + +#import +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN +@class MicroQueueModel, XPRoomPKSelectUserView, RoomPKChooseUserModel; + +@protocol XPRoomPKSelectUserViewDelegate + +- (void)xPRoomPKSelectUserView:(XPRoomPKSelectUserView *)view groupType:(GroupType)groupType didChooseUserInfos:(NSArray *)userInfos; + +@end + +@interface XPRoomPKSelectUserView : UIView +///红队的成员 +@property (nonatomic,copy) NSArray *redUserArray; +///蓝队的成员 +@property (nonatomic,copy) NSArray *blueUserArray; +///红队的还是蓝队的 +@property (nonatomic,assign) GroupType groupType; +///麦序的信息 +@property (nonatomic,copy) NSArray *microQueueArray; +///代理 +@property (nonatomic,weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKSelectUserView.m b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKSelectUserView.m new file mode 100644 index 00000000..51e3410f --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKSelectUserView.m @@ -0,0 +1,404 @@ +// +// YMRoomPKSelectUserView.m +// YUMI +// +// Created by YUMI on 2022/3/21. +// + +#import "XPRoomPKSelectUserView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "YUMIMacroUitls.h" +#import "UIImage+Utils.h" +#import "NSArray+Safe.h" +///Model +#import "RoomPKChooseUserModel.h" +#import "MicroQueueModel.h" +#import "UserInfoModel.h" +///View +#import "XPRoomPKUserCollectionViewCell.h" +@interface XPRoomPKSelectUserView () +///头像 +@property (nonatomic,strong) NetImageView *ownerAvatarImageView; +///房主 +@property (nonatomic,strong) UILabel *ownerLabel; +///是否选择 +@property (nonatomic,strong) UIButton *chooseButton; +///列表 +@property (nonatomic,strong) UICollectionView *collectionView; +///确定 +@property (nonatomic,strong) UIButton *confirmButton; +///坑位的数组 +@property (nonatomic,strong) NSArray * userPositionArray; +///房主信息 +@property (nonatomic,strong) RoomPKChooseUserModel *ownerUserInfo; +///选中的数组 +@property (nonatomic,strong) NSMutableArray *chooseArray; + +@end + +@implementation XPRoomPKSelectUserView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor whiteColor]; + self.layer.masksToBounds = YES; + self.layer.cornerRadius = 12; + [self addSubview:self.ownerAvatarImageView]; + [self addSubview:self.ownerLabel]; + [self addSubview:self.chooseButton]; + [self addSubview:self.collectionView]; + [self addSubview:self.confirmButton]; +} + +- (void)initSubViewConstraints { + [self.ownerAvatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(22); + make.centerX.mas_equalTo(self); + make.width.mas_equalTo(46); + make.height.mas_equalTo(46); + }]; + + [self.ownerLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.ownerAvatarImageView); + make.top.mas_equalTo(self.ownerAvatarImageView.mas_bottom).offset(5); + make.height.mas_equalTo(14); + }]; + + [self.chooseButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.bottom.mas_equalTo(self.ownerAvatarImageView); + make.width.height.mas_equalTo(16); + }]; + + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self); + make.top.mas_equalTo(self.ownerLabel.mas_bottom).offset(10); + make.height.mas_equalTo(65 * 2 + 10); + }]; + + [self.confirmButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.collectionView.mas_bottom).offset(15); + make.centerX.mas_equalTo(self); + make.width.mas_equalTo(140); + make.height.mas_equalTo(38); + }]; + + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth - 40 * 2); + make.bottom.mas_equalTo(self.confirmButton.mas_bottom).offset(15); + }]; +} + + +#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.userPositionArray.count; +} + +- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { + return 10; +} + +- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section { + return (KScreenWidth - 40 * 2 - 46 * 4 - 15 * 2)/ 3; +} + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + return CGSizeMake(46, 65); +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPRoomPKUserCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPRoomPKUserCollectionViewCell class]) forIndexPath:indexPath]; + RoomPKChooseUserModel * model = [self.userPositionArray safeObjectAtIndex1:indexPath.row]; + cell.userInfo = model; + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + [collectionView deselectItemAtIndexPath:indexPath animated:YES]; + RoomPKChooseUserModel * model = [self.userPositionArray safeObjectAtIndex1:indexPath.row]; + if (!model.isEnableChoose) {return;} + if (model.uid.length > 0) { + model.isSelect = !model.isSelect; + __block RoomPKChooseUserModel * selectModel; + [self.chooseArray enumerateObjectsUsingBlock:^(RoomPKChooseUserModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.uid == model.uid) { + selectModel = obj; + *stop = YES; + } + }]; + if (selectModel && !model.isSelect) { + selectModel.groupType = GroupType_default; + } + + if (model.isSelect && selectModel == nil) { + [self.chooseArray addObject:model]; + } + } + [self.collectionView reloadData]; +} + +#pragma mark - Event Response +- (void)confirmButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomPKSelectUserView:groupType:didChooseUserInfos:)]) { + [self.delegate xPRoomPKSelectUserView:self groupType:self.groupType didChooseUserInfos:self.chooseArray]; + } +} + +- (void)chooseButtonAction:(UIButton *)sender { + if (self.chooseButton.hidden) {return;} + sender.selected = !sender.selected; + self.ownerUserInfo.isSelect = !self.ownerUserInfo.isSelect; + __block RoomPKChooseUserModel * selectModel; + [self.chooseArray enumerateObjectsUsingBlock:^(RoomPKChooseUserModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.uid == self.ownerUserInfo.uid) { + selectModel = obj; + *stop = YES; + } + }]; + if (selectModel && !self.ownerUserInfo.isSelect) { + selectModel.groupType = GroupType_default; + } + + if (self.ownerUserInfo.isSelect && selectModel == nil) { + [self.chooseArray addObject:self.ownerUserInfo]; + } +} + +- (void)didTapRecognizer:(UITapGestureRecognizer *)tap { + if (self.chooseButton.hidden) {return;} + self.chooseButton.selected = !self.chooseButton.selected; + self.ownerUserInfo.isSelect = !self.ownerUserInfo.isSelect; + __block RoomPKChooseUserModel * selectModel; + [self.chooseArray enumerateObjectsUsingBlock:^(RoomPKChooseUserModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.uid == self.ownerUserInfo.uid) { + selectModel = obj; + *stop = YES; + } + }]; + if (selectModel && !self.ownerUserInfo.isSelect) { + selectModel.groupType = GroupType_default; + } + + if (self.ownerUserInfo.isSelect && selectModel == nil) { + [self.chooseArray addObject:self.ownerUserInfo]; + } +} + +#pragma mark - Getters And Setters +- (void)setGroupType:(GroupType)groupType { + _groupType = groupType; + if (_groupType == GroupType_Red) { + [self.chooseArray addObjectsFromArray:self.redUserArray]; + } else if (_groupType == GroupType_Blue) { + [self.chooseArray addObjectsFromArray:self.blueUserArray]; + } +} + +- (void)setMicroQueueArray:(NSArray *)microQueueArray { + _microQueueArray = microQueueArray; + for (int i = 0; i< microQueueArray.count; i++) { + MicroQueueModel * microModel = [microQueueArray safeObjectAtIndex1:i]; + if (microModel.userInfo && microModel.userInfo.uid > 0) { + int position = microModel.microState.position; + if (position < self.userPositionArray.count) { + + RoomPKChooseUserModel * userInfoModel = [self.userPositionArray safeObjectAtIndex1:position]; + userInfoModel.title = microModel.userInfo.nick; + userInfoModel.avatar = microModel.userInfo.avatar; + userInfoModel.uid = [NSString stringWithFormat:@"%ld", microModel.userInfo.uid]; + userInfoModel.position = position; + userInfoModel.nick = microModel.userInfo.nick; + userInfoModel.groupType = self.groupType; + userInfoModel.isEnableChoose = YES; + if (self.groupType == GroupType_Red) { + for (int i = 0; i *)chooseArray { + if (!_chooseArray) { + _chooseArray = [NSMutableArray array]; + } + return _chooseArray; +} + +- (RoomPKChooseUserModel *)ownerUserInfo { + if (!_ownerUserInfo) { + _ownerUserInfo = [[RoomPKChooseUserModel alloc] init]; + } + return _ownerUserInfo; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKTimePickerView.h b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKTimePickerView.h new file mode 100644 index 00000000..f560b007 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKTimePickerView.h @@ -0,0 +1,23 @@ +// +// YMRoomPKTimePickerView.h +// YUMI +// +// Created by YUMI on 2022/3/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class RoomPKTimeItemModel, XPRoomPKTimePickerView; +@protocol XPRoomPKTimePickerViewDelegate + +- (void)xPRoomPKTimePickerView:(XPRoomPKTimePickerView *)view timeModel:(RoomPKTimeItemModel *)model; + +@end + +@interface XPRoomPKTimePickerView : UIView +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKTimePickerView.m b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKTimePickerView.m new file mode 100644 index 00000000..06bf5f9e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKTimePickerView.m @@ -0,0 +1,251 @@ +// +// YMRoomPKTimePickerView.m +// YUMI +// +// Created by YUMI on 2022/3/18. +// + +#import "XPRoomPKTimePickerView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "TTPopup.h" +#import "NSArray+Safe.h" +///Model +#import "RoomPKTimeItemModel.h" +@interface XPRoomPKTimePickerView () +///选择器 +@property (nonatomic,strong) UIPickerView *pickView; +///取消 +@property (nonatomic,strong) UIButton *cancelButton; +///确定 +@property (nonatomic,strong) UIButton *confirmButton; +///数据源 +@property (nonatomic,strong) NSMutableArray *> *datasource; +///0秒钟 +@property (nonatomic,strong) RoomPKTimeItemModel *zeroModel; +///30秒钟 +@property (nonatomic,strong) RoomPKTimeItemModel *thirdModel; +///选择的分钟 +@property (nonatomic,strong) RoomPKTimeItemModel *selectMinModel; +///选择的秒钟 +@property (nonatomic,strong) RoomPKTimeItemModel *selectSecondModel; +///最终选中的 +@property (nonatomic,strong) RoomPKTimeItemModel *selectModel; +@end + +@implementation XPRoomPKTimePickerView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor whiteColor]; + + [self addSubview:self.cancelButton]; + [self addSubview:self.confirmButton]; + [self addSubview:self.pickView]; + + NSMutableArray * minArray = [NSMutableArray array]; + for (int i = 0 ; i < 31; i++) { + RoomPKTimeItemModel * timeModel = [[RoomPKTimeItemModel alloc] init]; + timeModel.title = [NSString stringWithFormat:YMLocalizedString(@"XPRoomPKTimePickerView0"), i]; + timeModel.time = i; + [minArray addObject:timeModel]; + } + self.selectMinModel = minArray.firstObject; + self.selectSecondModel = self.zeroModel; + NSMutableArray * secondArray = [NSMutableArray array]; + [secondArray addObject:self.thirdModel]; + + self.selectSecondModel = self.thirdModel; + + [self.datasource addObject:minArray]; + [self.datasource addObject:secondArray]; + + CAShapeLayer * layer = [CAShapeLayer layer]; + layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, 234+ kSafeAreaBottomHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)].CGPath; + self.layer.masksToBounds = YES; + self.layer.mask = layer; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth); + make.height.mas_equalTo(234 + kSafeAreaBottomHeight); + }]; + + [self.cancelButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(10); + make.top.mas_equalTo(10); + make.width.mas_equalTo(40); + make.height.mas_equalTo(25); + }]; + + [self.confirmButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-10); + make.top.mas_equalTo(10); + make.width.mas_equalTo(40); + make.height.mas_equalTo(25); + }]; + + [self.pickView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(45); + make.left.right.mas_equalTo(10); + make.bottom.mas_equalTo(-kSafeAreaBottomHeight); + }]; +} + +#pragma mark - UIPickerViewDataSource +- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { + return self.datasource.count; +} + +- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { + return self.datasource[component].count; +} + +- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { + RoomPKTimeItemModel * model = [[self.datasource safeObjectAtIndex1:component] safeObjectAtIndex1:row]; + return model.title; +} +#pragma mark - UIPickerViewDelegate +- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { + if (component == 0) { + RoomPKTimeItemModel * model = [[self.datasource safeObjectAtIndex1:component] safeObjectAtIndex1:row]; + self.selectMinModel = model; + if ([model.title isEqualToString:YMLocalizedString(@"XPRoomPKTimePickerView1")]) { + self.selectSecondModel = self.thirdModel; + NSMutableArray * array = [self.datasource safeObjectAtIndex1:1]; + if ([array containsObject:self.zeroModel]) { + [array removeObject:self.zeroModel]; + } + + if (![array containsObject:self.thirdModel]) { + [array addObject:self.thirdModel]; + } + }else if ([model.title isEqualToString:YMLocalizedString(@"XPRoomPKTimePickerView2")]) { + self.selectSecondModel = self.zeroModel; + NSMutableArray * array = [self.datasource safeObjectAtIndex1:1]; + if ([array containsObject:self.thirdModel]) { + [array removeObject:self.thirdModel]; + } + + if (![array containsObject:self.zeroModel]) { + [array insertObject:self.zeroModel atIndex:0]; + } + } else { + self.selectSecondModel = self.zeroModel; + NSMutableArray * array = [self.datasource safeObjectAtIndex1:1]; + if (![array containsObject:self.zeroModel]) { + [array insertObject:self.zeroModel atIndex:0]; + } + + if (![array containsObject:self.thirdModel]) { + [array addObject:self.thirdModel]; + } + } + [pickerView reloadComponent:1]; + } else { + RoomPKTimeItemModel * model = [[self.datasource safeObjectAtIndex1:component] safeObjectAtIndex1:row]; + self.selectSecondModel = model; + } +} + +#pragma mark - Event Response +- (void)confirmButtonAction:(UIButton *)sender { + [TTPopup dismiss]; + NSString * title; + if (self.selectMinModel.time > 0) { + title = [NSString stringWithFormat:YMLocalizedString(@"XPRoomPKTimePickerView3"), self.selectMinModel.time, self.selectSecondModel.time]; + } else { + title = [NSString stringWithFormat:YMLocalizedString(@"XPRoomPKTimePickerView4"), self.selectSecondModel.time]; + } + self.selectModel.title = title; + self.selectModel.time = self.selectMinModel.time * 60 + self.selectSecondModel.time; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomPKTimePickerView:timeModel:)]) { + [self.delegate xPRoomPKTimePickerView:self timeModel:self.selectModel]; + } +} + +- (void)cancelButtonAction:(UIButton *)sender { + [TTPopup dismiss]; +} + +#pragma mark - Getters And Setters +- (UIButton *)cancelButton { + if (!_cancelButton) { + _cancelButton = [[UIButton alloc] init]; + [_cancelButton setTitle:YMLocalizedString(@"XPRoomPKTimePickerView5") forState:UIControlStateNormal]; + [_cancelButton setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateNormal]; + _cancelButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_cancelButton addTarget:self action:@selector(cancelButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _cancelButton; +} + +- (UIButton *)confirmButton { + if (!_confirmButton) { + _confirmButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_confirmButton setTitle:YMLocalizedString(@"XPRoomPKTimePickerView6") forState:UIControlStateNormal]; + [_confirmButton setTitleColor:[DJDKMIMOMColor appMainColor] forState:UIControlStateNormal]; + _confirmButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_confirmButton addTarget:self action:@selector(confirmButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _confirmButton; +} + +- (UIPickerView *)pickView { + if (!_pickView) { + _pickView = [[UIPickerView alloc] init]; + _pickView.backgroundColor = [UIColor whiteColor]; + _pickView.delegate = self; + _pickView.dataSource = self; + } + return _pickView; +} + +- (NSMutableArray *> *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + +- (RoomPKTimeItemModel *)zeroModel { + if (!_zeroModel) { + RoomPKTimeItemModel * zeroModel = [[RoomPKTimeItemModel alloc] init]; + zeroModel.title = YMLocalizedString(@"XPRoomPKTimePickerView7"); + zeroModel.time = 0; + _zeroModel = zeroModel; + } + return _zeroModel; +} + +- (RoomPKTimeItemModel *)thirdModel { + if (!_thirdModel) { + _thirdModel = [[RoomPKTimeItemModel alloc] init]; + _thirdModel.title = YMLocalizedString(@"XPRoomPKTimePickerView8"); + _thirdModel.time = 30; + } + return _thirdModel; +} + +- (RoomPKTimeItemModel *)selectModel { + if (!_selectModel) { + _selectModel = [[RoomPKTimeItemModel alloc] init]; + } + return _selectModel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKUserView.h b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKUserView.h new file mode 100644 index 00000000..2db49b99 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKUserView.h @@ -0,0 +1,23 @@ +// +// YMRoomPKUserView.h +// YUMI +// +// Created by YUMI on 2022/3/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(NSInteger,RoomPKUserViewType) { + RoomPKUserViewType_Red = 1, + RoomPKUserViewType_Blue +}; +@class RoomPKChooseUserModel; + +@interface XPRoomPKUserView : UIView +@property (nonatomic,assign) RoomPKUserViewType type; +///用户信息 +@property (nonatomic,strong, nullable) RoomPKChooseUserModel *userInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKUserView.m b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKUserView.m new file mode 100644 index 00000000..6429ac49 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/XPRoomPKUserView.m @@ -0,0 +1,125 @@ +// +// YMRoomPKUserView.m +// YUMI +// +// Created by YUMI on 2022/3/17. +// + +#import "XPRoomPKUserView.h" +///Third +#import +///Tool +#import "NetImageView.h" +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +///Model +#import "RoomPKChooseUserModel.h" + +@interface XPRoomPKUserView () +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///昵称 +@property (nonatomic,strong) UIButton *nickButton; +@end + +@implementation XPRoomPKUserView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.avatarImageView]; + [self addSubview:self.nickButton]; +} + +- (void)initSubViewConstraints { + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.top.mas_equalTo(self); + make.height.width.mas_equalTo(50); + }]; + + [self.nickButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self); + make.top.mas_equalTo(self.avatarImageView.mas_bottom).offset(3); + make.height.mas_equalTo(14); + }]; +} + +#pragma mark - Getters And Setters +- (void)setUserInfo:(RoomPKChooseUserModel *)userInfo { + _userInfo = userInfo; + if (_userInfo) { + if (_userInfo.avatar.length > 0) { + self.avatarImageView.imageUrl = _userInfo.avatar; + } + if (_userInfo.title.length > 0) { + [self.nickButton setTitle:_userInfo.title forState:UIControlStateNormal]; + } + } else { + if (self.type == RoomPKUserViewType_Red) { + self.avatarImageView.image = [UIImage imageNamed:@"room_pk_position_red_bg"]; + [self.nickButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFC4A95), UIColorFromRGB(0xFE6075)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } else if(self.type == RoomPKUserViewType_Blue) { + self.avatarImageView.image = [UIImage imageNamed:@"room_pk_position_blue_bg"]; + [self.nickButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0x3571FE), UIColorFromRGB(0x7994FC)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } + [self.nickButton setTitle:YMLocalizedString(@"XPRoomPKUserView0") forState:UIControlStateNormal]; + } +} + +- (void)setType:(RoomPKUserViewType)type { + _type = type; + switch (_type) { + case RoomPKUserViewType_Red: + { + self.avatarImageView.image = [UIImage imageNamed:@"room_pk_position_red_bg"]; + [self.nickButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFC4A95), UIColorFromRGB(0xFE6075)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } + break; + case RoomPKUserViewType_Blue: + { + self.avatarImageView.image = [UIImage imageNamed:@"room_pk_position_blue_bg"]; + [self.nickButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0x3571FE), UIColorFromRGB(0x7994FC)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } + + default: + break; + } +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 50/2; + _avatarImageView.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + } + return _avatarImageView; +} + +- (UIButton *)nickButton { + if (!_nickButton) { + _nickButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_nickButton setTitle:YMLocalizedString(@"XPRoomPKUserView1") forState:UIControlStateNormal]; + [_nickButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _nickButton.titleLabel.font = [UIFont systemFontOfSize:10]; + _nickButton.layer.masksToBounds = YES; + _nickButton.layer.cornerRadius = 7; + } + return _nickButton; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatChosenConsumerRegard.h b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatChosenConsumerRegard.h deleted file mode 100644 index 2fea2e7c..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatChosenConsumerRegard.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// YMRoomPKSelectUserView.h -// YUMI -// -// Created by YUMI on 2022/3/21. -// - -#import -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN -@class MiecreoscoopeMHTueueMatrix, YUMIChamberCombatChosenConsumerRegard, ChamberCombatChooseConsumerMatrix; - -@protocol FBCChamberCombatChosenConsumerRegardRepresendtation - -- (void)yUMIChamberCombatChosenConsumerRegard:(YUMIChamberCombatChosenConsumerRegard *)view groupType:(GroupGenre)groupType didChooseUserInfos:(NSArray *)userInfos; - -@end - -@interface YUMIChamberCombatChosenConsumerRegard : UIView -@property (nonatomic,copy) NSArray *deficitConsumerGarment; -@property (nonatomic,copy) NSArray *disappointedConsumerGarment; -@property (nonatomic,assign) GroupGenre groupType; -@property (nonatomic,copy) NSArray *miecreoscoopeFormationGarment; -@property (nonatomic,weak) id delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatChosenConsumerRegard.m b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatChosenConsumerRegard.m deleted file mode 100644 index cf3d0568..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatChosenConsumerRegard.m +++ /dev/null @@ -1,392 +0,0 @@ -// -// YMRoomPKSelectUserView.m -// YUMI -// -// Created by YUMI on 2022/3/21. -// - -#import "YUMIChamberCombatChosenConsumerRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "YUMIMacroUitls.h" -#import "UIImage+Utils.h" -#import "NSArray+Safe.h" -#import "ChamberCombatChooseConsumerMatrix.h" -#import "MiecreoscoopeMHTueueMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "YUMIChamberCombatConsumerAssembletionRegardElement.h" -@interface YUMIChamberCombatChosenConsumerRegard () -@property (nonatomic,strong) NetIndicateRegard *maintainrietaryIntelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *maintainrietarySequencignation; -@property (nonatomic,strong) UIButton *concludeBtuton; -@property (nonatomic,strong) UICollectionView *collectionView; -@property (nonatomic,strong) UIButton *acknowledgementBtuton; -@property (nonatomic,strong) NSArray * consumerPositionGarment; -@property (nonatomic,strong) ChamberCombatChooseConsumerMatrix *maintainrietaryConsumerAbstract; -@property (nonatomic,strong) NSMutableArray *concludeGarment; - -@end - -@implementation YUMIChamberCombatChosenConsumerRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor whiteColor]; - self.layer.masksToBounds = YES; - self.layer.cornerRadius = 12; - [self addSubview:self.maintainrietaryIntelligenceportraitIndicateRegard]; - [self addSubview:self.maintainrietarySequencignation]; - [self addSubview:self.concludeBtuton]; - [self addSubview:self.collectionView]; - [self addSubview:self.acknowledgementBtuton]; -} - -- (void)initChildLyRestrictions { - [self.maintainrietaryIntelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(22); - make.centerX.mas_equalTo(self); - make.width.mas_equalTo(46); - make.height.mas_equalTo(46); - }]; - - [self.maintainrietarySequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.maintainrietaryIntelligenceportraitIndicateRegard); - make.top.mas_equalTo(self.maintainrietaryIntelligenceportraitIndicateRegard.mas_bottom).offset(5); - make.height.mas_equalTo(14); - }]; - - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.bottom.mas_equalTo(self.maintainrietaryIntelligenceportraitIndicateRegard); - make.width.height.mas_equalTo(16); - }]; - - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self); - make.top.mas_equalTo(self.maintainrietarySequencignation.mas_bottom).offset(10); - make.height.mas_equalTo(65 * 2 + 10); - }]; - - [self.acknowledgementBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.collectionView.mas_bottom).offset(15); - make.centerX.mas_equalTo(self); - make.width.mas_equalTo(140); - make.height.mas_equalTo(38); - }]; - - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth - 40 * 2); - make.bottom.mas_equalTo(self.acknowledgementBtuton.mas_bottom).offset(15); - }]; -} - - -#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.consumerPositionGarment.count; -} - -- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { - return 10; -} - -- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section { - return (KScreenWidth - 40 * 2 - 46 * 4 - 15 * 2)/ 3; -} - -- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { - return CGSizeMake(46, 65); -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMIChamberCombatConsumerAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIChamberCombatConsumerAssembletionRegardElement class]) forIndexPath:indexPath]; - ChamberCombatChooseConsumerMatrix * model = [self.consumerPositionGarment secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.userInfo = model; - return cell; -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - [collectionView deselectItemAtIndexPath:indexPath animated:YES]; - ChamberCombatChooseConsumerMatrix * model = [self.consumerPositionGarment secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (!model.isEnableChoose) {return;} - if (model.uid.length > 0) { - model.isSelect = !model.isSelect; - __block ChamberCombatChooseConsumerMatrix * chosenMatrix; - [self.concludeGarment enumerateObjectsUsingBlock:^(ChamberCombatChooseConsumerMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.uid == model.uid) { - chosenMatrix = obj; - *stop = YES; - } - }]; - if (chosenMatrix && !model.isSelect) { - chosenMatrix.groupType = GroupGenre_default; - } - - if (model.isSelect && chosenMatrix == nil) { - [self.concludeGarment addObject:model]; - } - } - [self.collectionView reloadData]; -} - -#pragma mark - Event Response -- (void)acknowledgementBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberCombatChosenConsumerRegard:groupType:didChooseUserInfos:)]) { - [self.delegate yUMIChamberCombatChosenConsumerRegard:self groupType:self.groupType didChooseUserInfos:self.concludeGarment]; - } -} - -- (void)concludeBtutonPerformance:(UIButton *)sender { - if (self.concludeBtuton.hidden) {return;} - sender.selected = !sender.selected; - self.maintainrietaryConsumerAbstract.isSelect = !self.maintainrietaryConsumerAbstract.isSelect; - __block ChamberCombatChooseConsumerMatrix * chosenMatrix; - [self.concludeGarment enumerateObjectsUsingBlock:^(ChamberCombatChooseConsumerMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.uid == self.maintainrietaryConsumerAbstract.uid) { - chosenMatrix = obj; - *stop = YES; - } - }]; - if (chosenMatrix && !self.maintainrietaryConsumerAbstract.isSelect) { - chosenMatrix.groupType = GroupGenre_default; - } - - if (self.maintainrietaryConsumerAbstract.isSelect && chosenMatrix == nil) { - [self.concludeGarment addObject:self.maintainrietaryConsumerAbstract]; - } -} - -- (void)didBetowardsRecognition:(UITapGestureRecognizer *)tap { - if (self.concludeBtuton.hidden) {return;} - self.concludeBtuton.selected = !self.concludeBtuton.selected; - self.maintainrietaryConsumerAbstract.isSelect = !self.maintainrietaryConsumerAbstract.isSelect; - __block ChamberCombatChooseConsumerMatrix * chosenMatrix; - [self.concludeGarment enumerateObjectsUsingBlock:^(ChamberCombatChooseConsumerMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.uid == self.maintainrietaryConsumerAbstract.uid) { - chosenMatrix = obj; - *stop = YES; - } - }]; - if (chosenMatrix && !self.maintainrietaryConsumerAbstract.isSelect) { - chosenMatrix.groupType = GroupGenre_default; - } - - if (self.maintainrietaryConsumerAbstract.isSelect && chosenMatrix == nil) { - [self.concludeGarment addObject:self.maintainrietaryConsumerAbstract]; - } -} - -#pragma mark - Getters And Setters -- (void)setGroupType:(GroupGenre)groupType { - _groupType = groupType; - if (_groupType == GroupGenre_Red) { - [self.concludeGarment addObjectsFromArray:self.deficitConsumerGarment]; - } else if (_groupType == GroupGenre_Blue) { - [self.concludeGarment addObjectsFromArray:self.disappointedConsumerGarment]; - } -} - -- (void)setMiecreoscoopeFormationGarment:(NSArray *)miecreoscoopeFormationGarment { - _miecreoscoopeFormationGarment = miecreoscoopeFormationGarment; - for (int i = 0; i< miecreoscoopeFormationGarment.count; i++) { - MiecreoscoopeMHTueueMatrix * miecreoscoopeMatrix = [miecreoscoopeFormationGarment secureGroalTowardsIndictowardsrix1:i]; - if (miecreoscoopeMatrix.userInfo && miecreoscoopeMatrix.userInfo.uid > 0) { - int position = miecreoscoopeMatrix.microState.position; - if (position < self.consumerPositionGarment.count) { - - ChamberCombatChooseConsumerMatrix * userInfoModel = [self.consumerPositionGarment secureGroalTowardsIndictowardsrix1:position]; - userInfoModel.title = miecreoscoopeMatrix.userInfo.nick; - userInfoModel.avatar = miecreoscoopeMatrix.userInfo.avatar; - userInfoModel.uid = [NSString stringWithFormat:@"%ld", miecreoscoopeMatrix.userInfo.uid]; - userInfoModel.position = position; - userInfoModel.nick = miecreoscoopeMatrix.userInfo.nick; - userInfoModel.groupType = self.groupType; - userInfoModel.isEnableChoose = YES; - if (self.groupType == GroupGenre_Red) { - for (int i = 0; i *)concludeGarment { - if (!_concludeGarment) { - _concludeGarment = [NSMutableArray array]; - } - return _concludeGarment; -} - -- (ChamberCombatChooseConsumerMatrix *)maintainrietaryConsumerAbstract { - if (!_maintainrietaryConsumerAbstract) { - _maintainrietaryConsumerAbstract = [[ChamberCombatChooseConsumerMatrix alloc] init]; - } - return _maintainrietaryConsumerAbstract; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatConsumerRegard.h b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatConsumerRegard.h deleted file mode 100644 index ce39fda2..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatConsumerRegard.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMRoomPKUserView.h -// YUMI -// -// Created by YUMI on 2022/3/17. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSInteger,ChamberCombatConsumerRegardGenre) { - ChamberCombatConsumerRegardGenre_Red = 1, - ChamberCombatConsumerRegardGenre_Blue -}; -@class ChamberCombatChooseConsumerMatrix; - -@interface YUMIChamberCombatConsumerRegard : UIView -@property (nonatomic,assign) ChamberCombatConsumerRegardGenre type; -@property (nonatomic,strong, nullable) ChamberCombatChooseConsumerMatrix *userInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatConsumerRegard.m b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatConsumerRegard.m deleted file mode 100644 index 982f7749..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatConsumerRegard.m +++ /dev/null @@ -1,119 +0,0 @@ -// -// YMRoomPKUserView.m -// YUMI -// -// Created by YUMI on 2022/3/17. -// - -#import "YUMIChamberCombatConsumerRegard.h" -#import -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "ChamberCombatChooseConsumerMatrix.h" - -@interface YUMIChamberCombatConsumerRegard () -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UIButton *monicerBtuton; -@end - -@implementation YUMIChamberCombatConsumerRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.intelligenceportraitIndicateRegard]; - [self addSubview:self.monicerBtuton]; -} - -- (void)initChildLyRestrictions { - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.top.mas_equalTo(self); - make.height.width.mas_equalTo(50); - }]; - - [self.monicerBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_bottom).offset(3); - make.height.mas_equalTo(14); - }]; -} - -#pragma mark - Getters And Setters -- (void)setUserInfo:(ChamberCombatChooseConsumerMatrix *)userInfo { - _userInfo = userInfo; - if (_userInfo) { - if (_userInfo.avatar.length > 0) { - self.intelligenceportraitIndicateRegard.imageUrl = _userInfo.avatar; - } - if (_userInfo.title.length > 0) { - [self.monicerBtuton setTitle:_userInfo.title forState:UIControlStateNormal]; - } - } else { - if (self.type == ChamberCombatConsumerRegardGenre_Red) { - self.intelligenceportraitIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_position_red_background"]; - [self.monicerBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFC4A95), UIColorFromRGB(0xFE6075)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } else if(self.type == ChamberCombatConsumerRegardGenre_Blue) { - self.intelligenceportraitIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_position_blue_background"]; - [self.monicerBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0x3571FE), UIColorFromRGB(0x7994FC)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } - [self.monicerBtuton setTitle:YMLocalizedString(@"YUMI_Room_PK_User_View_0") forState:UIControlStateNormal]; - } -} - -- (void)setType:(ChamberCombatConsumerRegardGenre)type { - _type = type; - switch (_type) { - case ChamberCombatConsumerRegardGenre_Red: - { - self.intelligenceportraitIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_position_red_background"]; - [self.monicerBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFC4A95), UIColorFromRGB(0xFE6075)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } - break; - case ChamberCombatConsumerRegardGenre_Blue: - { - self.intelligenceportraitIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_position_blue_background"]; - [self.monicerBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0x3571FE), UIColorFromRGB(0x7994FC)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } - - default: - break; - } -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 50/2; - _intelligenceportraitIndicateRegard.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - } - return _intelligenceportraitIndicateRegard; -} - -- (UIButton *)monicerBtuton { - if (!_monicerBtuton) { - _monicerBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_monicerBtuton setTitle:YMLocalizedString(@"YUMI_Room_PK_User_View_1") forState:UIControlStateNormal]; - [_monicerBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _monicerBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - _monicerBtuton.layer.masksToBounds = YES; - _monicerBtuton.layer.cornerRadius = 7; - } - return _monicerBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatFasciaboardConsumerRegard.h b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatFasciaboardConsumerRegard.h deleted file mode 100644 index bb21a4e7..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatFasciaboardConsumerRegard.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YMRoomPKPanelUserView.h -// YUMI -// -// Created by YUMI on 2022/3/28. -// - -#import -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN -@class YUMIChamberCombatFasciaboardConsumerRegard, ChamberCombatChooseConsumerMatrix; -@protocol FBCChamberCombatPanelConsumerRegardRepresendtation -- (void)yUMIChamberCombatFasciaboardConsumerRegard:(YUMIChamberCombatFasciaboardConsumerRegard *)view didClickAddButton:(GroupGenre)type; - -@end -@interface YUMIChamberCombatFasciaboardConsumerRegard : UIView -@property (nonatomic,assign) BOOL isExhibitAccelerate; -@property (nonatomic,assign) CGFloat itemAltitude; -@property (nonatomic,assign) GroupGenre type; -@property (nonatomic,strong, nullable) NSArray *consumerGarment; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatFasciaboardConsumerRegard.m b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatFasciaboardConsumerRegard.m deleted file mode 100644 index e1eee2ce..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatFasciaboardConsumerRegard.m +++ /dev/null @@ -1,298 +0,0 @@ -// -// YMRoomPKPanelUserView.m -// YUMI -// -// Created by YUMI on 2022/3/28. -// - -#import "YUMIChamberCombatFasciaboardConsumerRegard.h" -#import -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "NSArray+Safe.h" -#import "ChamberCombatChooseConsumerMatrix.h" - -@interface YUMIChamberCombatFasciaboardConsumerRegard () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UIView * consumerRegard; -@property (nonatomic,strong) NetIndicateRegard *thresholdConsumerRegard; -@property (nonatomic,strong) NetIndicateRegard *instantConsumerRegard; -@property (nonatomic,strong) NetIndicateRegard *tertiusConsumerRegard; -@property (nonatomic,strong) NetIndicateRegard *fourthConsumerRegard; -@property (nonatomic,strong) NetIndicateRegard *fifthConsumerRegard; -@property (nonatomic,strong) UIButton *accelerateBtuton; -@property (nonatomic,strong) NSArray *viewGarment; -@end - -@implementation YUMIChamberCombatFasciaboardConsumerRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -- (void)layoutSubviews { - [super layoutSubviews]; - CGFloat itemheight = self.itemAltitude; - self.thresholdConsumerRegard.layer.cornerRadius = itemheight / 2; - self.instantConsumerRegard.layer.cornerRadius = itemheight / 2; - self.tertiusConsumerRegard.layer.cornerRadius = itemheight / 2; - self.fourthConsumerRegard.layer.cornerRadius = itemheight / 2; - self.fifthConsumerRegard.layer.cornerRadius = itemheight / 2; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.isExhibitAccelerate = YES; - [self addSubview:self.stackView]; - [self.stackView addArrangedSubview:self.accelerateBtuton]; - [self.stackView addArrangedSubview:self.consumerRegard]; - [self.consumerRegard addSubview:self.fifthConsumerRegard]; - [self.consumerRegard addSubview:self.fourthConsumerRegard]; - [self.consumerRegard addSubview:self.tertiusConsumerRegard]; - [self.consumerRegard addSubview:self.instantConsumerRegard]; - [self.consumerRegard addSubview:self.thresholdConsumerRegard]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.stackView.mas_left); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.top.bottom.mas_equalTo(self); - }]; - - [self.accelerateBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(25); - }]; - - [self.consumerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(0); - }]; -} - -#pragma mark - Event Response -- (void)accelertowardseBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberCombatFasciaboardConsumerRegard:didClickAddButton:)]) { - [self.delegate yUMIChamberCombatFasciaboardConsumerRegard:self didClickAddButton:self.type]; - } -} - -- (void)didBetowardsConsumerRegardRecognition { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberCombatFasciaboardConsumerRegard:didClickAddButton:)]) { - [self.delegate yUMIChamberCombatFasciaboardConsumerRegard:self didClickAddButton:self.type]; - } -} - -#pragma mark - Getters And Setters -- (void)setConsumerGarment:(NSArray *)consumerGarment { - _consumerGarment = consumerGarment; - if (_consumerGarment.count > 0) { - self.consumerRegard.hidden = NO; - self.accelerateBtuton.hidden = YES; - for (int i = 0 ; i< self.viewGarment.count; i++) { - NetIndicateRegard * view = [self.viewGarment secureGroalTowardsIndictowardsrix1:i]; - if (i < self.consumerGarment.count) { - ChamberCombatChooseConsumerMatrix * userInfo = [self.consumerGarment secureGroalTowardsIndictowardsrix1:i]; - view.hidden = NO; - view.imageUrl = userInfo.avatar; - } else { - view.hidden = YES; - } - } - CGFloat userViewWidth = (_consumerGarment.count - 1) * 5 + self.itemAltitude; - [self.consumerRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(userViewWidth); - }]; - } else { - self.consumerRegard.hidden = YES; - self.accelerateBtuton.hidden = self.isExhibitAccelerate ? NO : YES; - } -} - -- (void)setType:(GroupGenre)type { - _type = type; - if (_type == GroupGenre_Red) { - CGColorRef color = UIColorFromRGB(0xFFA572).CGColor; - self.thresholdConsumerRegard.layer.borderColor = color; - self.instantConsumerRegard.layer.borderColor = color; - self.tertiusConsumerRegard.layer.borderColor = color; - self.fourthConsumerRegard.layer.borderColor = color; - self.fifthConsumerRegard.layer.borderColor = color; - [self.accelerateBtuton setImage:[UIImage imageNamed:@"yumi_scope_pk_progrss_red_add"] forState:UIControlStateNormal]; - [self.thresholdConsumerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(self.mas_height); - make.right.centerY.mas_equalTo(self.consumerRegard); - }]; - - [self.instantConsumerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.thresholdConsumerRegard); - make.left.mas_equalTo(self.thresholdConsumerRegard.mas_left).offset(-5); - }]; - - [self.tertiusConsumerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.thresholdConsumerRegard); - make.left.mas_equalTo(self.instantConsumerRegard.mas_left).offset(-5); - }]; - - [self.fourthConsumerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.thresholdConsumerRegard); - make.left.mas_equalTo(self.tertiusConsumerRegard.mas_left).offset(-5); - }]; - - [self.fifthConsumerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.thresholdConsumerRegard); - make.left.mas_equalTo(self.fourthConsumerRegard.mas_left).offset(-5); - }]; - self.viewGarment = @[self.thresholdConsumerRegard, self.instantConsumerRegard, self.tertiusConsumerRegard, self.fourthConsumerRegard, self.fifthConsumerRegard]; - } else { - CGColorRef color = UIColorFromRGB(0x3ECAFC).CGColor; - self.thresholdConsumerRegard.layer.borderColor = color; - self.instantConsumerRegard.layer.borderColor = color; - self.tertiusConsumerRegard.layer.borderColor = color; - self.fourthConsumerRegard.layer.borderColor = color; - self.fifthConsumerRegard.layer.borderColor = color; - [self.accelerateBtuton setImage:[UIImage imageNamed:@"yumi_scope_pk_progrss_blue_add"] forState:UIControlStateNormal]; - [self.fifthConsumerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(self.mas_height); - make.left.centerY.mas_equalTo(self.consumerRegard); - }]; - - [self.fourthConsumerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.fifthConsumerRegard); - make.left.mas_equalTo(self.fifthConsumerRegard.mas_left).offset(5); - }]; - - [self.tertiusConsumerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.fifthConsumerRegard); - make.left.mas_equalTo(self.fourthConsumerRegard.mas_left).offset(5); - }]; - - - [self.instantConsumerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.fifthConsumerRegard); - make.left.mas_equalTo(self.tertiusConsumerRegard.mas_left).offset(5); - }]; - - [self.thresholdConsumerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.fifthConsumerRegard); - make.left.mas_equalTo(self.instantConsumerRegard.mas_left).offset(5); - }]; - self.viewGarment = @[self.fifthConsumerRegard, self.fourthConsumerRegard, self.tertiusConsumerRegard, self.instantConsumerRegard, self.thresholdConsumerRegard]; - } -} - -- (void)setIsExhibitAccelerate:(BOOL)isExhibitAccelerate { - _isExhibitAccelerate = isExhibitAccelerate; - self.accelerateBtuton.hidden = !_isExhibitAccelerate; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 0; - } - return _stackView; -} - -- (UIView *)consumerRegard { - if (!_consumerRegard) { - _consumerRegard = [[UIView alloc] init]; - _consumerRegard.backgroundColor = [UIColor clearColor]; - _consumerRegard.hidden = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didBetowardsConsumerRegardRecognition)]; - [_consumerRegard addGestureRecognizer:tap]; - } - return _consumerRegard; -} - -- (NetIndicateRegard *)thresholdConsumerRegard { - if (!_thresholdConsumerRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _thresholdConsumerRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _thresholdConsumerRegard.layer.masksToBounds = YES; - _thresholdConsumerRegard.layer.cornerRadius = 25/2; - _thresholdConsumerRegard.layer.borderWidth = 1; - _thresholdConsumerRegard.userInteractionEnabled = YES; - } - return _thresholdConsumerRegard; -} - -- (NetIndicateRegard *)instantConsumerRegard { - if (!_instantConsumerRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _instantConsumerRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _instantConsumerRegard.layer.masksToBounds = YES; - _instantConsumerRegard.layer.cornerRadius = 25/2; - _instantConsumerRegard.layer.borderWidth = 1; - _instantConsumerRegard.userInteractionEnabled = YES; - } - return _instantConsumerRegard; -} - - -- (NetIndicateRegard *)tertiusConsumerRegard { - if (!_tertiusConsumerRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _tertiusConsumerRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _tertiusConsumerRegard.layer.masksToBounds = YES; - _tertiusConsumerRegard.layer.cornerRadius = 25/2; - _tertiusConsumerRegard.layer.borderWidth = 1; - _instantConsumerRegard.userInteractionEnabled = YES; - } - return _tertiusConsumerRegard; -} - -- (NetIndicateRegard *)fourthConsumerRegard { - if (!_fourthConsumerRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _fourthConsumerRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _fourthConsumerRegard.layer.masksToBounds = YES; - _fourthConsumerRegard.layer.cornerRadius = 25/2; - _fourthConsumerRegard.layer.borderWidth = 1; - _fourthConsumerRegard.userInteractionEnabled = YES; - } - return _fourthConsumerRegard; -} - -- (NetIndicateRegard *)fifthConsumerRegard { - if (!_fifthConsumerRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _fifthConsumerRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _fifthConsumerRegard.layer.masksToBounds = YES; - _fifthConsumerRegard.layer.cornerRadius = 25/2; - _fifthConsumerRegard.layer.borderWidth = 1; - _fifthConsumerRegard.userInteractionEnabled = YES; - } - return _fifthConsumerRegard; -} - -- (UIButton *)accelerateBtuton { - if (!_accelerateBtuton) { - _accelerateBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_accelerateBtuton addTarget:self action:@selector(accelertowardseBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _accelerateBtuton; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatIntratemporalPickerRegard.h b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatIntratemporalPickerRegard.h deleted file mode 100644 index 178d3ed9..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatIntratemporalPickerRegard.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMRoomPKTimePickerView.h -// YUMI -// -// Created by YUMI on 2022/3/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ChamberCombatIntratemporalProvisionMatrix, YUMIChamberCombatIntratemporalPickerRegard; -@protocol FBCChamberCombatTimePickerRegardRepresendtation - -- (void)yUMIChamberCombatIntrtowardsemporalExtracterRegard:(YUMIChamberCombatIntratemporalPickerRegard *)view timeModel:(ChamberCombatIntratemporalProvisionMatrix *)model; - -@end - -@interface YUMIChamberCombatIntratemporalPickerRegard : UIView -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatIntratemporalPickerRegard.m b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatIntratemporalPickerRegard.m deleted file mode 100644 index da442780..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatIntratemporalPickerRegard.m +++ /dev/null @@ -1,239 +0,0 @@ -// -// YMRoomPKTimePickerView.m -// YUMI -// -// Created by YUMI on 2022/3/18. -// - -#import "YUMIChamberCombatIntratemporalPickerRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "MKJPopup.h" -#import "NSArray+Safe.h" -#import "ChamberCombatIntratemporalProvisionMatrix.h" -@interface YUMIChamberCombatIntratemporalPickerRegard () -@property (nonatomic,strong) UIPickerView *extractRegard; -@property (nonatomic,strong) UIButton *revocationBtuton; -@property (nonatomic,strong) UIButton *acknowledgementBtuton; -@property (nonatomic,strong) NSMutableArray *> *datasource; -@property (nonatomic,strong) ChamberCombatIntratemporalProvisionMatrix *zeroMatrix; -@property (nonatomic,strong) ChamberCombatIntratemporalProvisionMatrix *tertiusMatrix; -@property (nonatomic,strong) ChamberCombatIntratemporalProvisionMatrix *chosenMinMatrix; -@property (nonatomic,strong) ChamberCombatIntratemporalProvisionMatrix *chosenInstantMatrix; -@property (nonatomic,strong) ChamberCombatIntratemporalProvisionMatrix *chosenMatrix; -@end - -@implementation YUMIChamberCombatIntratemporalPickerRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor whiteColor]; - - [self addSubview:self.revocationBtuton]; - [self addSubview:self.acknowledgementBtuton]; - [self addSubview:self.extractRegard]; - - NSMutableArray * minArray = [NSMutableArray array]; - for (int i = 0 ; i < 31; i++) { - ChamberCombatIntratemporalProvisionMatrix * timeModel = [[ChamberCombatIntratemporalProvisionMatrix alloc] init]; - timeModel.title = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Room_PK_Time_Picker_View_0"), i]; - timeModel.time = i; - [minArray addObject:timeModel]; - } - self.chosenMinMatrix = minArray.firstObject; - self.chosenInstantMatrix = self.zeroMatrix; - NSMutableArray * secondArray = [NSMutableArray array]; - [secondArray addObject:self.tertiusMatrix]; - - self.chosenInstantMatrix = self.tertiusMatrix; - - [self.datasource addObject:minArray]; - [self.datasource addObject:secondArray]; - - CAShapeLayer * layer = [CAShapeLayer layer]; - layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, 234+ kSafeAreaBottomHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)].CGPath; - self.layer.masksToBounds = YES; - self.layer.mask = layer; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth); - make.height.mas_equalTo(234 + kSafeAreaBottomHeight); - }]; - - [self.revocationBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(10); - make.top.mas_equalTo(10); - make.width.mas_equalTo(40); - make.height.mas_equalTo(25); - }]; - - [self.acknowledgementBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-10); - make.top.mas_equalTo(10); - make.width.mas_equalTo(40); - make.height.mas_equalTo(25); - }]; - - [self.extractRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(45); - make.left.right.mas_equalTo(10); - make.bottom.mas_equalTo(-kSafeAreaBottomHeight); - }]; -} - -#pragma mark - UIPickerViewDataSource -- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { - return self.datasource.count; -} - -- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { - return self.datasource[component].count; -} - -- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { - ChamberCombatIntratemporalProvisionMatrix * model = [[self.datasource secureGroalTowardsIndictowardsrix1:component] secureGroalTowardsIndictowardsrix1:row]; - return model.title; -} -#pragma mark - UIPickerViewDelegate -- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { - if (component == 0) { - ChamberCombatIntratemporalProvisionMatrix * model = [[self.datasource secureGroalTowardsIndictowardsrix1:component] secureGroalTowardsIndictowardsrix1:row]; - self.chosenMinMatrix = model; - if ([model.title isEqualToString:YMLocalizedString(@"YUMI_Room_PK_Time_Picker_View_1")]) { - self.chosenInstantMatrix = self.tertiusMatrix; - NSMutableArray * array = [self.datasource secureGroalTowardsIndictowardsrix1:1]; - if ([array containsObject:self.zeroMatrix]) { - [array removeObject:self.zeroMatrix]; - } - - if (![array containsObject:self.tertiusMatrix]) { - [array addObject:self.tertiusMatrix]; - } - }else if ([model.title isEqualToString:YMLocalizedString(@"YUMI_Room_PK_Time_Picker_View_2")]) { - self.chosenInstantMatrix = self.zeroMatrix; - NSMutableArray * array = [self.datasource secureGroalTowardsIndictowardsrix1:1]; - if ([array containsObject:self.tertiusMatrix]) { - [array removeObject:self.tertiusMatrix]; - } - - if (![array containsObject:self.zeroMatrix]) { - [array insertObject:self.zeroMatrix atIndex:0]; - } - } else { - self.chosenInstantMatrix = self.zeroMatrix; - NSMutableArray * array = [self.datasource secureGroalTowardsIndictowardsrix1:1]; - if (![array containsObject:self.zeroMatrix]) { - [array insertObject:self.zeroMatrix atIndex:0]; - } - - if (![array containsObject:self.tertiusMatrix]) { - [array addObject:self.tertiusMatrix]; - } - } - [pickerView reloadComponent:1]; - } else { - ChamberCombatIntratemporalProvisionMatrix * model = [[self.datasource secureGroalTowardsIndictowardsrix1:component] secureGroalTowardsIndictowardsrix1:row]; - self.chosenInstantMatrix = model; - } -} - -#pragma mark - Event Response -- (void)acknowledgementBtutonPerformance:(UIButton *)sender { - [MKJPopup dismiss]; - NSString * title; - if (self.chosenMinMatrix.time > 0) { - title = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Room_PK_Time_Picker_View_3"), self.chosenMinMatrix.time, self.chosenInstantMatrix.time]; - } else { - title = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Room_PK_Time_Picker_View_4"), self.chosenInstantMatrix.time]; - } - self.chosenMatrix.title = title; - self.chosenMatrix.time = self.chosenMinMatrix.time * 60 + self.chosenInstantMatrix.time; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberCombatIntrtowardsemporalExtracterRegard:timeModel:)]) { - [self.delegate yUMIChamberCombatIntrtowardsemporalExtracterRegard:self timeModel:self.chosenMatrix]; - } -} - -- (void)revoctowardsionBtutonPerformance:(UIButton *)sender { - [MKJPopup dismiss]; -} - -#pragma mark - Getters And Setters -- (UIButton *)revocationBtuton { - if (!_revocationBtuton) { - _revocationBtuton = [[UIButton alloc] init]; - [_revocationBtuton setTitle:YMLocalizedString(@"YUMI_Room_PK_Time_Picker_View_5") forState:UIControlStateNormal]; - [_revocationBtuton setTitleColor:[DJDKMIMOMColor instantEssayPrettify] forState:UIControlStateNormal]; - _revocationBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_revocationBtuton addTarget:self action:@selector(revoctowardsionBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _revocationBtuton; -} - -- (UIButton *)acknowledgementBtuton { - if (!_acknowledgementBtuton) { - _acknowledgementBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_acknowledgementBtuton setTitle:YMLocalizedString(@"YUMI_Room_PK_Time_Picker_View_6") forState:UIControlStateNormal]; - [_acknowledgementBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionMainPrettify] forState:UIControlStateNormal]; - _acknowledgementBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_acknowledgementBtuton addTarget:self action:@selector(acknowledgementBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _acknowledgementBtuton; -} - -- (UIPickerView *)extractRegard { - if (!_extractRegard) { - _extractRegard = [[UIPickerView alloc] init]; - _extractRegard.backgroundColor = [UIColor whiteColor]; - _extractRegard.delegate = self; - _extractRegard.dataSource = self; - } - return _extractRegard; -} - -- (NSMutableArray *> *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - -- (ChamberCombatIntratemporalProvisionMatrix *)zeroMatrix { - if (!_zeroMatrix) { - ChamberCombatIntratemporalProvisionMatrix * zeroMatrix = [[ChamberCombatIntratemporalProvisionMatrix alloc] init]; - zeroMatrix.title = YMLocalizedString(@"YUMI_Room_PK_Time_Picker_View_7"); - zeroMatrix.time = 0; - _zeroMatrix = zeroMatrix; - } - return _zeroMatrix; -} - -- (ChamberCombatIntratemporalProvisionMatrix *)tertiusMatrix { - if (!_tertiusMatrix) { - _tertiusMatrix = [[ChamberCombatIntratemporalProvisionMatrix alloc] init]; - _tertiusMatrix.title = YMLocalizedString(@"YUMI_Room_PK_Time_Picker_View_8"); - _tertiusMatrix.time = 30; - } - return _tertiusMatrix; -} - -- (ChamberCombatIntratemporalProvisionMatrix *)chosenMatrix { - if (!_chosenMatrix) { - _chosenMatrix = [[ChamberCombatIntratemporalProvisionMatrix alloc] init]; - } - return _chosenMatrix; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatReflectionNickRegard.h b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatReflectionNickRegard.h deleted file mode 100644 index e799dd12..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatReflectionNickRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomPKRecordNickView.h -// YUMI -// -// Created by YUMI on 2022/3/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ChamberCombatSquadConsumerMatrix; -@interface YUMIChamberCombatReflectionNickRegard : UIView -@property (nonatomic,strong) NSArray *consumerStatement; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatReflectionNickRegard.m b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatReflectionNickRegard.m deleted file mode 100644 index 60d9735b..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIChamberCombatReflectionNickRegard.m +++ /dev/null @@ -1,221 +0,0 @@ -// -// YMRoomPKRecordNickView.m -// YUMI -// -// Created by YUMI on 2022/3/18. -// - -#import "YUMIChamberCombatReflectionNickRegard.h" -#import -#import "ChamberCombatSquadMatrix.h" -#import "NSArray+Safe.h" - -@interface YUMIChamberCombatReflectionNickRegard () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UIStackView *contraryHierarchyRegard; -@property (nonatomic,strong) UILabel *thresholdMonicerSequencignation; -@property (nonatomic,strong) UILabel *instantMonicerSequencignation; -@property (nonatomic,strong) UIStackView *rectifyHierarchyRegard; -@property (nonatomic,strong) UILabel *tertiusMonicerSequencignation; -@property (nonatomic,strong) UILabel *fourthMonicerSequencignation; -@property (nonatomic,strong) UIImageView *burlywoodIndicateRegard; -@property (nonatomic,strong) NSArray *viewGarment; -@end - -@implementation YUMIChamberCombatReflectionNickRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.layer.masksToBounds = YES; - self.layer.cornerRadius = 8; - [self addSubview:self.stackView]; - [self addSubview:self.burlywoodIndicateRegard]; - [self.stackView addArrangedSubview:self.contraryHierarchyRegard]; - [self.stackView addArrangedSubview:self.rectifyHierarchyRegard]; - - [self.contraryHierarchyRegard addArrangedSubview:self.thresholdMonicerSequencignation]; - [self.contraryHierarchyRegard addArrangedSubview:self.tertiusMonicerSequencignation]; - - [self.rectifyHierarchyRegard addArrangedSubview:self.instantMonicerSequencignation]; - [self.rectifyHierarchyRegard addArrangedSubview:self.fourthMonicerSequencignation]; - - self.viewGarment = @[self.thresholdMonicerSequencignation, self.instantMonicerSequencignation, self.tertiusMonicerSequencignation, self.fourthMonicerSequencignation]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.stackView).offset(10); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self).offset(10); - make.left.right.mas_equalTo(self); - }]; - - [self.thresholdMonicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(15); - }]; - - [self.instantMonicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(15); - }]; - - [self.tertiusMonicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(15); - }]; - - [self.fourthMonicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(15); - }]; - - [self.burlywoodIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self).offset(5); - make.bottom.mas_equalTo(self).offset(-5); - make.width.mas_equalTo(1); - }]; -} - -#pragma mark - Getters And Setters -- (void)setConsumerStatement:(NSArray *)consumerStatement { - _consumerStatement = consumerStatement; - if (_consumerStatement.count > 0) { - self.thresholdMonicerSequencignation.hidden = YES; - self.instantMonicerSequencignation.hidden = YES; - self.tertiusMonicerSequencignation.hidden = YES; - self.fourthMonicerSequencignation.hidden = YES; - self.burlywoodIndicateRegard.hidden = YES; - self.contraryHierarchyRegard.hidden = YES; - self.rectifyHierarchyRegard.hidden = YES; - if (_consumerStatement.count == 1) { - self.thresholdMonicerSequencignation.hidden = NO; - self.contraryHierarchyRegard.hidden = NO; - } else if(_consumerStatement.count ==2) { - self.thresholdMonicerSequencignation.hidden = NO; - self.contraryHierarchyRegard.hidden = NO; - self.rectifyHierarchyRegard.hidden = NO; - self.instantMonicerSequencignation.hidden = NO; - self.burlywoodIndicateRegard.hidden = NO; - } else if(_consumerStatement.count == 3) { - self.thresholdMonicerSequencignation.hidden = NO; - self.contraryHierarchyRegard.hidden = NO; - self.rectifyHierarchyRegard.hidden = NO; - self.instantMonicerSequencignation.hidden = NO; - self.tertiusMonicerSequencignation.hidden = NO; - self.burlywoodIndicateRegard.hidden = NO; - } else { - self.thresholdMonicerSequencignation.hidden = NO; - self.instantMonicerSequencignation.hidden = NO; - self.tertiusMonicerSequencignation.hidden = NO; - self.fourthMonicerSequencignation.hidden = NO; - self.burlywoodIndicateRegard.hidden = NO; - self.contraryHierarchyRegard.hidden = NO; - self.rectifyHierarchyRegard.hidden = NO; - self.burlywoodIndicateRegard.hidden = NO; - } - for (int i = 0; i < _consumerStatement.count; i++) { - ChamberCombatSquadConsumerMatrix * userInfo = [_consumerStatement secureGroalTowardsIndictowardsrix1:i]; - UILabel * label = [self.viewGarment secureGroalTowardsIndictowardsrix1:i]; - label.text = userInfo.nick; - } - } -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFillEqually; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 2; - } - return _stackView; -} - - -- (UIStackView *)contraryHierarchyRegard { - if (!_contraryHierarchyRegard) { - _contraryHierarchyRegard = [[UIStackView alloc] init]; - _contraryHierarchyRegard.axis = UILayoutConstraintAxisVertical; - _contraryHierarchyRegard.distribution = UIStackViewDistributionFill; - _contraryHierarchyRegard.alignment = UIStackViewAlignmentFill; - _contraryHierarchyRegard.spacing = 2; - } - return _contraryHierarchyRegard; -} - -- (UILabel *)thresholdMonicerSequencignation { - if (!_thresholdMonicerSequencignation) { - _thresholdMonicerSequencignation = [[UILabel alloc] init]; - _thresholdMonicerSequencignation.font = [UIFont systemFontOfSize:12]; - _thresholdMonicerSequencignation.textColor = [UIColor whiteColor]; - _thresholdMonicerSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _thresholdMonicerSequencignation; -} - -- (UILabel *)instantMonicerSequencignation { - if (!_instantMonicerSequencignation) { - _instantMonicerSequencignation = [[UILabel alloc] init]; - _instantMonicerSequencignation.font = [UIFont systemFontOfSize:12]; - _instantMonicerSequencignation.textColor = [UIColor whiteColor]; - _instantMonicerSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _instantMonicerSequencignation; -} - - -- (UIStackView *)rectifyHierarchyRegard { - if (!_rectifyHierarchyRegard) { - _rectifyHierarchyRegard = [[UIStackView alloc] init]; - _rectifyHierarchyRegard.axis = UILayoutConstraintAxisVertical; - _rectifyHierarchyRegard.distribution =UIStackViewDistributionFill; - _rectifyHierarchyRegard.alignment = UIStackViewAlignmentFill; - _rectifyHierarchyRegard.spacing = 2; - } - return _rectifyHierarchyRegard; -} - -- (UILabel *)tertiusMonicerSequencignation { - if (!_tertiusMonicerSequencignation) { - _tertiusMonicerSequencignation = [[UILabel alloc] init]; - _tertiusMonicerSequencignation.font = [UIFont systemFontOfSize:12]; - _tertiusMonicerSequencignation.textColor = [UIColor whiteColor]; - _tertiusMonicerSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _tertiusMonicerSequencignation; -} - -- (UILabel *)fourthMonicerSequencignation { - if (!_fourthMonicerSequencignation) { - _fourthMonicerSequencignation = [[UILabel alloc] init]; - _fourthMonicerSequencignation.font = [UIFont systemFontOfSize:12]; - _fourthMonicerSequencignation.textColor = [UIColor whiteColor]; - _fourthMonicerSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _fourthMonicerSequencignation; -} - -- (UIImageView *)burlywoodIndicateRegard { - if (!_burlywoodIndicateRegard) { - _burlywoodIndicateRegard = [[UIImageView alloc] init]; - _burlywoodIndicateRegard.userInteractionEnabled = YES; - _burlywoodIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_record_line_background"]; - } - return _burlywoodIndicateRegard; -} - - - - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIRomCombatConsequentChampionDesignation.h b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIRomCombatConsequentChampionDesignation.h deleted file mode 100644 index ad21303a..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIRomCombatConsequentChampionDesignation.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMRomPKResultTitleLabel.h -// YUMI -// -// Created by YUMI on 2022/3/31. -// - -#import -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIRomCombatConsequentChampionDesignation : UIView -@property (nonatomic,assign) GroupGenre groupType; -@property (nonatomic,copy) NSString *title; -@property (nonatomic,copy) NSString *content; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIRomCombatConsequentChampionDesignation.m b/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIRomCombatConsequentChampionDesignation.m deleted file mode 100644 index 84885483..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/SubViews/YUMIRomCombatConsequentChampionDesignation.m +++ /dev/null @@ -1,89 +0,0 @@ -// -// YMRomPKResultTitleLabel.m -// YUMI -// -// Created by YUMI on 2022/3/31. -// - -#import "YUMIRomCombatConsequentChampionDesignation.h" -#import -#import "DJDKMIMOMColor.h" - -@interface YUMIRomCombatConsequentChampionDesignation () -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UILabel *satisfperformanceSequencignation; -@end - -@implementation YUMIRomCombatConsequentChampionDesignation - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.titleLabel]; - [self addSubview:self.satisfperformanceSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self); - make.centerY.mas_equalTo(self); - }]; - - [self.satisfperformanceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.titleLabel.mas_right).offset(10); - make.centerY.mas_equalTo(self.titleLabel); - }]; -} - -#pragma mark - Getters And Setters -- (void)setGroupType:(GroupGenre)groupType { - _groupType = groupType; - if (_groupType == GroupGenre_Red) { - self.satisfperformanceSequencignation.textColor = UIColorFromRGB(0xfd4d0e); - } else if(_groupType == GroupGenre_Blue) { - self.satisfperformanceSequencignation.textColor = UIColorFromRGB(0x59b9fb); - } -} - -- (void)setContent:(NSString *)content { - _content = content; - if (_content) { - self.satisfperformanceSequencignation.text = _content; - } -} - -- (void)setTitle:(NSString *)title { - _title = title; - if (_title) { - self.titleLabel.text = _title; - } -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:14]; - _titleLabel.textColor = [UIColor whiteColor]; - } - return _titleLabel; -} - -- (UILabel *)satisfperformanceSequencignation { - if (!_satisfperformanceSequencignation) { - _satisfperformanceSequencignation = [[UILabel alloc] init]; - _satisfperformanceSequencignation.font = [UIFont systemFontOfSize:14]; - } - return _satisfperformanceSequencignation; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKPlayingView.h b/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKPlayingView.h new file mode 100644 index 00000000..9ed4b1a4 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKPlayingView.h @@ -0,0 +1,36 @@ +// +// YMRoomPKPlayingView.h +// YUMI +// +// Created by YUMI on 2022/3/29. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class RoomPKInfoModel, RoomPKChooseUserModel, XPRoomPKPlayingView; +@protocol XPRoomPKPlayingViewDelegate + +///点击了重新开始PK +- (void)xPRoomPKPlayingView:(XPRoomPKPlayingView *)view didClickResetBegin:(UIButton *)sender; + +@end + +@interface XPRoomPKPlayingView : UIView +///代理 +@property (nonatomic,weak) id delegate; +///是否是管理员 +@property (nonatomic,assign) BOOL isManager; +///PK详情 +@property (nonatomic,strong) RoomPKInfoModel *pkDetailInfo; +///红色的 +@property (nonatomic,strong) NSArray *redChooseArray; +///蓝色的 +@property (nonatomic,strong) NSArray *blueChooseArray; +///当前显示的时间 +@property (nonatomic,copy) NSString *currentTime; +- (void)configRedTeamScore:(long)redTeamScore blueTeamScore:(long)blueTeamScore; +- (void)clearRoomPKData; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKPlayingView.m b/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKPlayingView.m new file mode 100644 index 00000000..323609f4 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKPlayingView.m @@ -0,0 +1,378 @@ +// +// YMRoomPKPlayingView.m +// YUMI +// +// Created by YUMI on 2022/3/29. +// + +#import "XPRoomPKPlayingView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "TTPopup.h" +#import "UIImage+Utils.h" +///Model +#import "RoomPKDetailInfoModel.h" +///View +#import "XPRoomPKPanelUserView.h" + +@interface XPRoomPKPlayingView () +///背景 +@property (nonatomic,strong) UIImageView *backImageView; +///开始 +@property (nonatomic,strong) UIButton *beginButton; +///时间 +@property (nonatomic,strong) UILabel *timeLabel; +///红队的容器 +@property (nonatomic,strong) XPRoomPKPanelUserView * redTeamView; +///红队的分数 +@property (nonatomic,strong) UILabel *redScoreLabel; +///蓝队的容器 +@property (nonatomic,strong) XPRoomPKPanelUserView * blueTeamView; +///蓝队的分数 +@property (nonatomic,strong) UILabel *blueScoreLabel; +///进度的容器 +@property (nonatomic,strong) UIView * progressView; +///红队的进度 +@property (nonatomic,strong) UIImageView * redProgressView; +///蓝队的进度 +@property (nonatomic,strong) UIImageView * blueProgressView; +///进度的分割线 +@property (nonatomic,strong) UIImageView *progressLineView; +///收起 +@property (nonatomic,strong) UIButton *foldButton; +///显示Pk模式 +@property (nonatomic,strong) UILabel *voteModeLabel; +///显示pk +@property (nonatomic,strong) UILabel *pkLabel; +@end + + +@implementation XPRoomPKPlayingView +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Public Method +- (void)configRedTeamScore:(long)redTeamScore blueTeamScore:(long)blueTeamScore { + self.redScoreLabel.text = [NSString stringWithFormat:@"%ld", redTeamScore]; + self.blueScoreLabel.text = [NSString stringWithFormat:@"%ld", blueTeamScore]; + if (redTeamScore > 0 || blueTeamScore > 0) { + CGFloat redScale = (CGFloat)redTeamScore / (CGFloat)(redTeamScore + blueTeamScore); + if (redScale == 1) { + redScale = 0.99; + } + [self.redProgressView mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo((56 + 45) * 2 * redScale); + }]; + } +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backImageView]; + + [self.backImageView addSubview:self.timeLabel]; + [self.backImageView addSubview:self.redTeamView]; + [self.backImageView addSubview:self.redScoreLabel]; + [self.backImageView addSubview:self.blueTeamView]; + [self.backImageView addSubview:self.blueScoreLabel]; + [self.backImageView addSubview:self.progressView]; + [self.backImageView addSubview:self.beginButton]; + [self.backImageView addSubview:self.voteModeLabel]; + [self.backImageView addSubview:self.pkLabel]; + [self.backImageView addSubview:self.foldButton]; + + [self.progressView addSubview:self.redProgressView]; + [self.progressView addSubview:self.blueProgressView]; + [self.progressView addSubview:self.progressLineView]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(260); + make.height.mas_equalTo(153); + }]; + + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + [self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.backImageView); + make.top.mas_equalTo(self.backImageView); + }]; + + [self.redTeamView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.backImageView.mas_centerX).offset(-56); + make.top.mas_equalTo(self.backImageView).offset(25); + make.height.mas_equalTo(45); + }]; + + [self.voteModeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.backImageView); + make.top.mas_equalTo(self.backImageView).offset(36); + }]; + + [self.pkLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.backImageView); + make.top.mas_equalTo(self.voteModeLabel.mas_bottom).offset(6); + }]; + + [self.blueTeamView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backImageView.mas_centerX).offset(56); + make.centerY.mas_equalTo(self.redTeamView); + make.height.mas_equalTo(45); + }]; + + [self.progressView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(56 * 2 + 45 * 2); + make.height.mas_equalTo(7); + make.centerX.mas_equalTo(self.backImageView); + make.top.mas_equalTo(self.redTeamView.mas_bottom).offset(23); + }]; + + [self.redProgressView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.bottom.mas_equalTo(self.progressView); + make.width.mas_equalTo(56 + 45); + }]; + + [self.blueProgressView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.top.bottom.mas_equalTo(self.progressView); + make.left.mas_equalTo(self.redProgressView.mas_right); + }]; + + [self.progressLineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(2.5, 12.5)); + make.centerX.mas_equalTo(self.blueProgressView.mas_left).offset(-1.2); + make.centerY.mas_equalTo(self.progressView); + }]; + + [self.redScoreLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.progressView); + make.top.mas_equalTo(self.progressView.mas_bottom).offset(3); + }]; + + [self.blueScoreLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.redScoreLabel); + make.right.mas_equalTo(self.progressView); + }]; + + [self.beginButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(90, 24)); + make.centerX.mas_equalTo(self.backImageView); + make.bottom.mas_equalTo(self.backImageView.mas_bottom).offset(-15); + }]; + + [self.foldButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(0); + make.right.mas_equalTo(0); + make.width.mas_equalTo(30.5); + make.height.mas_equalTo(17.5); + }]; +} + +- (void)clearRoomPKData { + self.redScoreLabel.text = @"0"; + self.blueScoreLabel.text = @"0"; + [self.redProgressView mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(56 + 45); + }]; +} + +#pragma mark - Event Response +- (void)beginButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomPKPlayingView:didClickResetBegin:)]) { + [self.delegate xPRoomPKPlayingView:self didClickResetBegin:sender]; + } +} + +- (void)foldButtonAction:(UIButton *)sender { + [TTPopup dismiss]; +} + +#pragma mark - Getters And Setters +- (void)setIsManager:(BOOL)isManager { + _isManager = isManager; + self.beginButton.hidden = !_isManager; +} + +- (void)setPkDetailInfo:(RoomPKInfoModel *)pkDetailInfo { + _pkDetailInfo = pkDetailInfo; + if (_pkDetailInfo) { + self.voteModeLabel.text = _pkDetailInfo.voteMode == RoomPKVoteModeType_GiftValue ? @"按礼物价值" : YMLocalizedString(@"XPRoomPKPlayingView1"); + } +} + +- (void)setCurrentTime:(NSString *)currentTime { + _currentTime = currentTime; + self.timeLabel.text = _currentTime; +} + +- (void)setRedChooseArray:(NSArray *)redChooseArray { + _redChooseArray = redChooseArray; + self.redTeamView.userArray = _redChooseArray; +} + +- (void)setBlueChooseArray:(NSArray *)blueChooseArray { + _blueChooseArray = blueChooseArray; + self.blueTeamView.userArray = _blueChooseArray; +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.image = [UIImage imageNamed:@"room_pk_playing_bg"]; + } + return _backImageView; +} + +- (UILabel *)timeLabel { + if (!_timeLabel) { + _timeLabel = [[UILabel alloc] init]; + _timeLabel.font = [UIFont systemFontOfSize:10]; + _timeLabel.textColor = UIColorFromRGB(0x602A06); + _timeLabel.textAlignment = NSTextAlignmentCenter; + _timeLabel.text= @"00:00"; + } + return _timeLabel; +} + +- (UILabel *)voteModeLabel { + if (!_voteModeLabel) { + _voteModeLabel = [[UILabel alloc] init]; + _voteModeLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + _voteModeLabel.textColor = UIColorFromRGB(0x79674E); + _voteModeLabel.textAlignment = NSTextAlignmentCenter; + } + return _voteModeLabel; +} + +- (UILabel *)pkLabel { + if (!_pkLabel) { + _pkLabel = [[UILabel alloc] init]; + _pkLabel.text= @"PK"; + _pkLabel.textAlignment = NSTextAlignmentCenter; + _pkLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium];; + _pkLabel.textColor = UIColorFromRGB(0x79674E); + } + return _pkLabel; +} + + +- (XPRoomPKPanelUserView *)redTeamView { + if (!_redTeamView) { + _redTeamView = [[XPRoomPKPanelUserView alloc] init]; + _redTeamView.itemHeight = 45; + _redTeamView.isShowAdd = NO; + _redTeamView.type = GroupType_Red; + } + return _redTeamView; +} + +- (XPRoomPKPanelUserView *)blueTeamView { + if (!_blueTeamView) { + _blueTeamView = [[XPRoomPKPanelUserView alloc] init]; + _blueTeamView.itemHeight = 45; + _blueTeamView.isShowAdd = NO; + _blueTeamView.type = GroupType_Blue; + } + return _blueTeamView; +} + +- (UIView *)progressView { + if (!_progressView) { + _progressView = [[UIView alloc] init]; + _progressView.backgroundColor = [UIColor clearColor]; + _progressView.layer.masksToBounds = YES; + _progressView.layer.cornerRadius = 3.5; + } + return _progressView; +} + +- (UIImageView *)redProgressView { + if (!_redProgressView) { + _redProgressView = [[UIImageView alloc] init]; + _redProgressView.userInteractionEnabled = YES; + _redProgressView.image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFA96AE), UIColorFromRGB(0xE943F8)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)]; + _redProgressView.contentMode = UIViewContentModeScaleAspectFill; + _redProgressView.layer.masksToBounds = YES; + } + return _redProgressView; +} + +- (UIImageView *)blueProgressView { + if (!_blueProgressView) { + _blueProgressView = [[UIImageView alloc] init]; + _blueProgressView.userInteractionEnabled = YES; + _blueProgressView.image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0x4F7AFF), UIColorFromRGB(0x44C0FE)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)]; + _blueProgressView.contentMode = UIViewContentModeScaleAspectFill; + _blueProgressView.layer.masksToBounds = YES; + } + return _blueProgressView; +} + +- (UIImageView *)progressLineView { + if (!_progressLineView) { + _progressLineView = [[UIImageView alloc] init]; + _progressLineView.userInteractionEnabled = YES; + _progressLineView.image = [UIImage imageNamed:@"room_pk_progrss_line_bg"]; + } + return _progressLineView; +} + +- (UILabel *)redScoreLabel { + if (!_redScoreLabel) { + _redScoreLabel = [[UILabel alloc] init]; + _redScoreLabel.text = @"0"; + _redScoreLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _redScoreLabel.textColor = UIColor.whiteColor; + _redScoreLabel.textAlignment = NSTextAlignmentCenter; + } + return _redScoreLabel; +} + +- (UILabel *)blueScoreLabel { + if (!_blueScoreLabel) { + _blueScoreLabel = [[UILabel alloc] init]; + _blueScoreLabel.text = @"0"; + _blueScoreLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _blueScoreLabel.textColor = UIColor.whiteColor; + _blueScoreLabel.textAlignment = NSTextAlignmentCenter; + } + return _blueScoreLabel; +} + +- (UIButton *)beginButton { + if (!_beginButton) { + _beginButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_beginButton setTitle:YMLocalizedString(@"XPRoomPKPlayingView2") forState:UIControlStateNormal]; + [_beginButton setTitleColor:UIColorFromRGB(0x602A06) forState:UIControlStateNormal]; + _beginButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_beginButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFFDAA8), UIColorFromRGB(0xFFBD64)] gradientType:GradientTypeUpleftToLowright imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _beginButton.layer.masksToBounds = YES; + _beginButton.layer.cornerRadius = 12; + [_beginButton addTarget:self action:@selector(beginButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _beginButton; +} + +- (UIButton *)foldButton { + if (!_foldButton) { + _foldButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_foldButton setImage:[UIImage imageNamed:@"room_pk_playing_fold"] forState:UIControlStateNormal]; + [_foldButton setImage:[UIImage imageNamed:@"room_pk_playing_fold"] forState:UIControlStateSelected]; + [_foldButton addTarget:self action:@selector(foldButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _foldButton; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKProgressView.h b/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKProgressView.h new file mode 100644 index 00000000..2979028b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKProgressView.h @@ -0,0 +1,32 @@ +// +// YMRoomPKProgressView.h +// YUMI +// +// Created by YUMI on 2022/3/28. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class MicroQueueModel, AttachmentModel, RoomInfoModel, RoomPKChooseUserModel; +@interface XPRoomPKProgressView : UIView +@property (nonatomic, strong) NSMutableDictionary *micQueue; +///房间信息 +@property (nonatomic,strong) RoomInfoModel *roomInfo; +///是否是管理员 +@property (nonatomic,assign) BOOL isManager; +///红色的 +@property (nonatomic,strong, readonly) NSArray *redChooseArray; +///蓝色的 +@property (nonatomic,strong, readonly) NSArray *blueChooseArray; +///收到礼物 +- (void)roomPKReceiveGift:(AttachmentModel *)attachment; +///进房请求当前房间PK详情 +- (void)enterRoomGetRoomPKDetailInfo; +///处理pK的状态 +- (void)handleRoomPKCustomMessage:(AttachmentModel *)attachment; +///房间PK是否在进行中 +- (BOOL)isRoomPKPlaying; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKProgressView.m b/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKProgressView.m new file mode 100644 index 00000000..ff10c0ca --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKProgressView.m @@ -0,0 +1,1109 @@ +// +// YMRoomPKProgressView.m +// YUMI +// +// Created by YUMI on 2022/3/28. +// + +#import "XPRoomPKProgressView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "TTPopup.h" +#import "UIImage+Utils.h" +#import "Api+RoomPK.h" +#import "AccountInfoStorage.h" +#import "XNDJTDDLoadingTool.h" +#import "XPGiftStorage.h" +#import "GiftReceiveInfoModel.h" +#import "GiftInfoModel.h" +#import "XCCurrentVCStackManager.h" +#import "NSArray+Safe.h" +///Model +#import "RoomPKDetailInfoModel.h" +#import "MicroQueueModel.h" +#import "UserInfoModel.h" +#import "RoomPKChooseUserModel.h" +#import "AttachmentModel.h" +#import "MicroExtModel.h" +#import "XPArrangeMicInfoModel.h" +#import "RoomInfoModel.h" +///View +#import "XPRoomPKPanelUserView.h" +#import "XPRoomPKSelectUserView.h" +#import "XPRoomPKPlayingView.h" +#import "XPRoomPKPlayingView.h" +#import "XPRoomPKResultView.h" +#import "XPArrangeMicViewController.h" + +@interface XPRoomPKProgressView () +///背景 +@property (nonatomic,strong) UIImageView *backImageView; +///开始 +@property (nonatomic,strong) UIButton *beginButton; +///时间 +@property (nonatomic,strong) UILabel *timeLabel; +///红队的容器 +@property (nonatomic,strong) XPRoomPKPanelUserView * redTeamView; +///红队的分数 +@property (nonatomic,strong) UILabel *redScoreLabel; +///蓝队的容器 +@property (nonatomic,strong) XPRoomPKPanelUserView * blueTeamView; +///蓝队的分数 +@property (nonatomic,strong) UILabel *blueScoreLabel; +///进度的容器 +@property (nonatomic,strong) UIView * progressView; +///红队的进度 +@property (nonatomic,strong) UIImageView * redProgressView; +///蓝队的进度 +@property (nonatomic,strong) UIImageView * blueProgressView; +///进度的分割线 +@property (nonatomic,strong) UIImageView *progressLineView; +///倒计时 +@property (strong, nonatomic) dispatch_source_t timer; +///当前的时间 +@property (nonatomic,assign) CGFloat currentTime; +///检查失败的次数 +@property (nonatomic,assign) int checkResultNum; +///正在pk中的面板 +@property (nonatomic,strong) XPRoomPKPlayingView *roomPKPlayingView; +///红队的分数 +@property (nonatomic,assign) long redTeamScore; +///蓝的分数 +@property (nonatomic,assign) long blueTeamScore; +///红队收到礼物个数(按照收礼个数) +@property (nonatomic, strong) NSMutableDictionary * redTeamGiftPersonDic; +///蓝队收到礼物个数(按照收礼个数) +@property (nonatomic, strong) NSMutableDictionary * blueTeamGiftPersonDic; +///红色的 +@property (nonatomic,strong) NSArray *redChooseArray; +///蓝色的 +@property (nonatomic,strong) NSArray *blueChooseArray; +///是否收到了Pk的结果 +@property (nonatomic,assign) BOOL isReceivePKResult; +///pk详情 +@property (nonatomic,strong) RoomPKInfoModel *roomPKInfo; +///是否正在进行中 +@property (nonatomic,assign) BOOL isPlaying; +@end + + +@implementation XPRoomPKProgressView + +- (void)dealloc { + [self stopRoomPKCountDown]; +} + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Public Method +- (void)handleRoomPKCustomMessage:(AttachmentModel *)attachment { + if (attachment.second == Custom_Message_Sub_Room_PK_Start) { + [XNDJTDDLoadingTool showSuccessWithMessage:YMLocalizedString(@"XPRoomPKProgressView0")]; + RoomPKInfoModel * pkInfo = [RoomPKInfoModel modelWithDictionary:attachment.data]; + self.roomPKInfo = pkInfo; + [self startRoomPKCountDown:pkInfo.duration]; + [self handleRoomPKInfoChangeState]; + }else if (attachment.second == Custom_Message_Sub_Room_PK_Mode_Open){ + RoomPKInfoModel * pkInfo = [RoomPKInfoModel modelWithDictionary:attachment.data]; + self.roomPKInfo = pkInfo; + [self handleRoomPKInfoChangeState]; + } else if(attachment.second == Custom_Message_Sub_Room_PK_Re_Start) { + RoomPKInfoModel * pkInfo = [RoomPKInfoModel modelWithDictionary:attachment.data]; + self.roomPKInfo = pkInfo; + [self handleRoomPKInfoChangeState]; + } else if(attachment.second == Custom_Message_Sub_Room_PK_Result) { + [TTPopup dismiss]; + RoomPKInfoModel * pkInfo = [RoomPKInfoModel modelWithDictionary:attachment.data]; + self.isReceivePKResult = YES; + [self stopRoomPKCountDown]; + [self clearRoomPKTeamData]; + self.checkResultNum = 1; + if (pkInfo.pkStatus == RoomPKStatusType_ReStart) {///重新开始了 需要重新赋值 + self.roomPKInfo = pkInfo; + } else { + if ([pkInfo.pkId isEqualToString:self.roomPKInfo.pkId]) { + [self clearRoomPKTeamData]; + self.roomPKInfo = pkInfo; + [self resetRoomPKGroupType]; + + } + } + if (pkInfo.pkStatus == RoomPKStatusType_End) { + XPRoomPKResultView * result = [[XPRoomPKResultView alloc] init]; + result.roomPKResultInfoModel = pkInfo; + [TTPopup popupView:result style:TTPopupStyleAlert]; + } + [self handleRoomPKInfoChangeState]; + } else if(attachment.second == Custom_Message_Sub_Room_PK_Mode_Close) { + [XNDJTDDLoadingTool showSuccessWithMessage:YMLocalizedString(@"XPRoomPKProgressView1")]; + [self stopRoomPKCountDown]; + [self clearRoomPKTeamData]; + [self removeFromSuperview]; + [self resetRoomPKGroupType]; + } +} + +- (void)roomPKReceiveGift:(AttachmentModel *)attachment { + if (self.roomPKInfo.pkStatus == RoomPKStatusType_Playing) { + GiftReceiveInfoModel *giftReceiveInfo = [GiftReceiveInfoModel modelWithJSON:attachment.data]; + GiftInfoModel *giftInfo = giftReceiveInfo.gift == nil ? giftReceiveInfo.giftInfo : giftReceiveInfo.gift; + if (giftInfo == nil) { + giftInfo = [[XPGiftStorage shareStorage] findGiftInfo:giftReceiveInfo.giftId]; + } + if (attachment.first == CustomMessageType_AllMicroSend) { + if (attachment.second == Custom_Message_Sub_AllBatchSend || attachment.second == Custom_Message_Sub_AllMicroSend) {///普通礼物 + NSArray *targetUids = giftReceiveInfo.targetUids; + if (giftReceiveInfo.targetUids.count <=0) { + if (giftReceiveInfo.targetUsers.count > 0) { + targetUids = [giftReceiveInfo.targetUsers valueForKeyPath:@"uid"]; + } else { + targetUids = giftReceiveInfo.targetUid.integerValue > 0? @[giftReceiveInfo.targetUid] : @[]; + } + } + if (self.roomPKInfo.voteMode == RoomPKVoteModeType_NumberPerson) { // 按送礼人数计算 + [self canculeRoomPKSendGiftNumPerson:targetUids sendUid:giftReceiveInfo.uid]; + } else { + [self canculeRoomGiftValueReceiveInfo:targetUids giftPrice:giftInfo.goldPrice * giftReceiveInfo.giftNum]; + } + } else if(attachment.second == Custom_Message_Sub_AllMicroLuckySend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend) {///福袋礼物 + if (giftReceiveInfo.luckyGiftList) { + __block NSInteger goldPrice = 0; + [giftReceiveInfo.luckyGiftList.giftList enumerateObjectsUsingBlock:^(GiftListsInfo * _Nonnull giftListInfo, NSUInteger idx, BOOL * _Nonnull stop) { + GiftInfoModel *giftInfo = [[XPGiftStorage shareStorage] findGiftInfo:[NSString stringWithFormat:@"%ld", giftListInfo.giftId]]; + goldPrice += giftInfo.goldPrice * giftListInfo.giftNum; + }]; + NSArray *targetUids; + if (giftReceiveInfo.luckyGiftList.user.uid > 0) { + targetUids = @[[NSString stringWithFormat:@"%ld", giftReceiveInfo.luckyGiftList.user.uid]]; + } + if (self.roomPKInfo.voteMode == RoomPKVoteModeType_NumberPerson) { // 按送礼人数计算 + [self canculeRoomPKSendGiftNumPerson:targetUids sendUid:giftReceiveInfo.uid]; + } else { + [self canculeRoomGiftValueReceiveInfo:targetUids giftPrice:goldPrice]; + } + } + } + } else if(attachment.first == CustomMessageType_Gift) { + if (attachment.second == Custom_Message_Sub_Gift_LuckySend) { + __block NSInteger goldPrice = 0; + [giftReceiveInfo.luckyGiftList.giftList enumerateObjectsUsingBlock:^(GiftListsInfo * _Nonnull giftListInfo, NSUInteger idx, BOOL * _Nonnull stop) { + GiftInfoModel *giftInfo = [[XPGiftStorage shareStorage] findGiftInfo:[NSString stringWithFormat:@"%ld", giftListInfo.giftId]]; + goldPrice += giftInfo.goldPrice * giftListInfo.giftNum; + }]; + NSArray *targetUids; + if (giftReceiveInfo.luckyGiftList.user.uid > 0) { + targetUids = @[[NSString stringWithFormat:@"%ld", giftReceiveInfo.luckyGiftList.user.uid]]; + } + if (self.roomPKInfo.voteMode == RoomPKVoteModeType_NumberPerson) { // 按送礼人数计算 + [self canculeRoomPKSendGiftNumPerson:targetUids sendUid:giftReceiveInfo.uid]; + } else { + [self canculeRoomGiftValueReceiveInfo:targetUids giftPrice:goldPrice]; + } + } else { + NSArray *targetUids = giftReceiveInfo.targetUids; + if (giftReceiveInfo.targetUids.count <=0) { + if (giftReceiveInfo.targetUsers.count > 0) { + targetUids = [giftReceiveInfo.targetUsers valueForKeyPath:@"uid"]; + } else { + targetUids = giftReceiveInfo.targetUid.integerValue > 0? @[giftReceiveInfo.targetUid] : @[]; + } + } + if (self.roomPKInfo.voteMode == RoomPKVoteModeType_NumberPerson) { // 按送礼人数计算 + [self canculeRoomPKSendGiftNumPerson:targetUids sendUid:giftReceiveInfo.uid]; + } else { + [self canculeRoomGiftValueReceiveInfo:targetUids giftPrice:giftInfo.goldPrice * giftReceiveInfo.giftNum]; + } + } + } + + } +} + +- (void)enterRoomGetRoomPKDetailInfo { + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; + [Api getRoomPKDetail:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + RoomPKDetailInfoModel * pkDetailInfo = [RoomPKDetailInfoModel modelWithDictionary:data.data]; + self.roomPKInfo = pkDetailInfo.roomPK; + [self handleRoomPKInfoChangeState]; + if (self.roomPKInfo.pkStatus == RoomPKStatusType_Playing) { + [self startRoomPKCountDown:(self.roomPKInfo.endTime - pkDetailInfo.now) / 1000]; + } + NSMutableDictionary * queue = self.micQueue; + ///配置一下麦序的信息 + NSMutableArray * redArray = [NSMutableArray array]; + NSMutableArray * blueArray = [NSMutableArray array]; + if (self.roomPKInfo.pkStatus == RoomPKStatusType_Playing) { + for (int i = 0; i < self.roomPKInfo.teams.count; i++) { + RoomPKTeamModel * teamInfo = [self.roomPKInfo.teams safeObjectAtIndex1:i]; + if (teamInfo.team == GroupType_Red) { + self.redTeamScore = teamInfo.score; + for (int i = 0; i < teamInfo.teamMembers.count; i++) { + RoomPKTeamUserModel * teamUserModel = [teamInfo.teamMembers safeObjectAtIndex1:i]; + RoomPKChooseUserModel * redInfo = [[RoomPKChooseUserModel alloc] init]; + redInfo.avatar = teamUserModel.avatar; + redInfo.uid = teamUserModel.uid; + redInfo.groupType = GroupType_Red; + redInfo.position = [self findMicroInfoByUid:teamUserModel.uid].microState.position; + redInfo.nick = teamUserModel.nick; + [redArray addObject:redInfo]; + } + } else if(teamInfo.team == GroupType_Blue) { + self.blueTeamScore = teamInfo.score; + for (int i = 0; i < teamInfo.teamMembers.count; i++) { + RoomPKTeamUserModel * teamUserModel = [teamInfo.teamMembers safeObjectAtIndex1:i]; + RoomPKChooseUserModel * blueInfo = [[RoomPKChooseUserModel alloc] init]; + blueInfo.avatar = teamUserModel.avatar; + blueInfo.uid = teamUserModel.uid; + blueInfo.groupType = GroupType_Blue; + blueInfo.position = [self findMicroInfoByUid:teamUserModel.uid].microState.position; + blueInfo.nick = teamUserModel.nick; + [blueArray addObject:blueInfo]; + } + } + } + [self configRedTeamScore:self.redTeamScore blueTeamScore:self.blueTeamScore]; + } else { + for (int i = 0 ; i < queue.allValues.count; i++) { + MicroQueueModel * micModel = [queue.allValues safeObjectAtIndex1:i]; + if (micModel.userInfo && micModel.userInfo.uid > 0) { + UserInfoModel * userInfo = micModel.userInfo; + if (userInfo.groupType == GroupType_Red) { + RoomPKChooseUserModel * redInfo = [[RoomPKChooseUserModel alloc] init]; + redInfo.avatar = userInfo.avatar; + redInfo.uid = [NSString stringWithFormat:@"%ld", userInfo.uid]; + redInfo.groupType = userInfo.groupType; + redInfo.position = micModel.microState.position; + redInfo.nick = userInfo.nick; + [redArray addObject:redInfo]; + } else if(userInfo.groupType == GroupType_Blue) { + RoomPKChooseUserModel * blueInfo = [[RoomPKChooseUserModel alloc] init]; + blueInfo.avatar = userInfo.avatar; + blueInfo.uid = [NSString stringWithFormat:@"%ld", userInfo.uid]; + blueInfo.groupType = userInfo.groupType; + blueInfo.position = micModel.microState.position; + blueInfo.nick = userInfo.nick; + [blueArray addObject:blueInfo]; + } + } + } + + } + self.redChooseArray = redArray.copy; + self.blueChooseArray = blueArray.copy; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } roomUid:roomUid]; +} + +- (BOOL)isRoomPKPlaying { + return self.isPlaying; +} + +#pragma mark - 查询pk结果的 +- (void)checkRoomPKResult{ + if (self.checkResultNum > 2) { + //pk请求已经不行了 只能结束了 + [self clearRoomPKTeamData]; + [self resetRoomPKGroupType]; + return; + } + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + if (!self.isReceivePKResult) { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; + if (self.roomPKInfo.pkId.length > 0) { + NSString * pkId = self.roomPKInfo.pkId; + [Api checkRoomPKResult:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + self.checkResultNum = 1; + self.isReceivePKResult = YES; + } else { + self.checkResultNum++; + [self checkRoomPKResult]; + } + } roomUid:roomUid operUid:uid pkId:pkId]; + } + + } + }); +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backImageView]; + [self addSubview:self.beginButton]; + + [self.backImageView addSubview:self.timeLabel]; + [self.backImageView addSubview:self.redTeamView]; + [self.backImageView addSubview:self.redScoreLabel]; + [self.backImageView addSubview:self.blueTeamView]; + [self.backImageView addSubview:self.blueScoreLabel]; + [self.backImageView addSubview:self.progressView]; + + [self.progressView addSubview:self.redProgressView]; + [self.progressView addSubview:self.blueProgressView]; + [self.progressView addSubview:self.progressLineView]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(260); + make.bottom.mas_equalTo(self.beginButton.mas_bottom); + }]; + + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(260, 60)); + make.top.left.mas_equalTo(self); + }]; + + [self.beginButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(90, 24)); + make.centerX.mas_equalTo(self.backImageView); + make.centerY.mas_equalTo(self.backImageView.mas_bottom); + }]; + + [self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.backImageView); + make.top.mas_equalTo(self.backImageView); + }]; + + [self.progressView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(85 * 2); + make.height.mas_equalTo(7); + make.centerX.mas_equalTo(self.backImageView); + make.top.mas_equalTo(self.backImageView).offset(23); + }]; + + [self.redTeamView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.progressView.mas_left); + make.centerY.mas_equalTo(self.progressView); + make.height.mas_equalTo(25); + make.left.mas_greaterThanOrEqualTo(15); + }]; + + [self.blueTeamView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.progressView.mas_right); + make.centerY.mas_equalTo(self.progressView); + make.height.mas_equalTo(25); + make.right.mas_lessThanOrEqualTo(-15); + }]; + + [self.redProgressView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.bottom.mas_equalTo(self.progressView); + make.width.mas_equalTo(85); + }]; + + [self.blueProgressView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.top.bottom.mas_equalTo(self.progressView); + make.left.mas_equalTo(self.redProgressView.mas_right); + }]; + + [self.progressLineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(2.5, 12.5)); + make.centerX.mas_equalTo(self.blueProgressView.mas_left).offset(-1.2); + make.centerY.mas_equalTo(self.progressView); + }]; + + + [self.redScoreLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.redTeamView); + make.top.mas_equalTo(self.redTeamView.mas_bottom).offset(5); + make.left.mas_lessThanOrEqualTo(self.backImageView); + }]; + + [self.blueScoreLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.blueTeamView); + make.centerY.mas_equalTo(self.redScoreLabel); + make.right.mas_lessThanOrEqualTo(self.backImageView); + }]; +} + +- (BOOL)isOnMicro:(NSString *)uid { + for (int i = 0; i < self.micQueue.allValues.count; i++) { + MicroQueueModel * micModel = [self.micQueue.allValues safeObjectAtIndex1:i]; + if (micModel.userInfo && micModel.userInfo.uid > 0 && micModel.userInfo.uid == uid.integerValue) { + return YES; + } + } + return NO; +} + +- (MicroQueueModel *)findMicroInfoByUid:(NSString *)uid { + for (MicroQueueModel *model in self.micQueue.allValues) { + if (model.userInfo && model.userInfo.uid == uid.intValue) { + return model; + } + } + return nil; +} + +- (void)canculeRoomGiftValueReceiveInfo:(NSArray *)targetUids giftPrice:(NSInteger)giftPrice{ + for (RoomPKChooseUserModel * userInfo in self.redChooseArray) { + for (NSString * uid in targetUids) { + NSString * userId = uid; + if ([userId isKindOfClass:[NSNumber class]]) { + userId = ((NSNumber *)userId).stringValue; + } + if (userId.integerValue == userInfo.uid.integerValue) { + self.redTeamScore += giftPrice; + break; + } + } + } + + for (RoomPKChooseUserModel * userInfo in self.blueChooseArray) { + for (NSString * uid in targetUids) { + NSString * userId = uid; + if ([userId isKindOfClass:[NSNumber class]]) { + userId = ((NSNumber *)userId).stringValue; + } + if (userId.integerValue == userInfo.uid.integerValue) { + self.blueTeamScore += giftPrice; + break; + } + } + } + [self configRedTeamScore:self.redTeamScore blueTeamScore:self.blueTeamScore]; +} + +- (void)canculeRoomPKSendGiftNumPerson:(NSArray *)sendGiftUses sendUid:(NSString *)sendUid{ + /** + 1.先取出红队队员 -> 判断这个队员是否是接收礼物者 -> 是接收礼物则先判断送礼uid中是否存在送礼人 -> 存在不变, 不存在则+1 + 2.蓝队同理 + **/ + if (!self.redTeamGiftPersonDic) { + self.redTeamGiftPersonDic = [NSMutableDictionary dictionary]; + // 取出红队 + NSDictionary *redDict = self.roomPKInfo.sendGiftUids[@"2"]; + // 先创建好 {队员uid : Set} + for (RoomPKTeamUserModel *info in self.redChooseArray) { + [self.redTeamGiftPersonDic setObject:[NSMutableSet set] forKey:info.uid]; + } + for (NSString *key in redDict) { + // key为队员uid 值为数组 + NSArray *sendGiftUids = [redDict objectForKey:key]; + NSMutableSet *set = [NSMutableSet set]; + [set addObjectsFromArray:sendGiftUids]; + [self.redTeamGiftPersonDic setObject:set forKey:key]; + } + } + + if (!self.blueTeamGiftPersonDic) { + self.blueTeamGiftPersonDic = [NSMutableDictionary dictionary]; + // 取出蓝队 + NSDictionary *blueDict = self.roomPKInfo.sendGiftUids[@"1"]; + // 先创建好 {队员uid : Set} + for (RoomPKTeamUserModel *info in self.blueChooseArray) { + [self.blueTeamGiftPersonDic setObject:[NSMutableSet set] forKey:info.uid]; + } + + for (NSString *key in blueDict) { + // key为队员uid 值为数组 + NSArray *sendGiftUids = [blueDict objectForKey:key]; + NSMutableSet *set = [NSMutableSet set]; + [set addObjectsFromArray:sendGiftUids]; + [self.blueTeamGiftPersonDic setObject:set forKey:key]; + } + } + + for (RoomPKTeamUserModel *infor in self.redChooseArray) { + for (NSString *uid in sendGiftUses) { + NSString * userId = uid; + if ([userId isKindOfClass:[NSNumber class]]) { + userId = ((NSNumber *)userId).stringValue; + } + if (userId.integerValue == infor.uid.integerValue) { + NSMutableSet *set = [self.redTeamGiftPersonDic objectForKey:infor.uid]; + if ([set containsObject:sendUid]) { + continue; + } else { + [set addObject:sendUid]; + } + } + } + } + + for (RoomPKTeamUserModel *infor in self.blueChooseArray) { + for (NSString *uid in sendGiftUses) { + NSString * userId = uid; + if ([userId isKindOfClass:[NSNumber class]]) { + userId = ((NSNumber *)userId).stringValue; + } + if (userId.integerValue == infor.uid.integerValue) { + NSMutableSet *set = [self.blueTeamGiftPersonDic objectForKey:infor.uid]; + if ([set containsObject:sendUid]) { + continue; + } else { + [set addObject:sendUid]; + } + } + } + } + + + long blueTeamtotal = 0; + long redTeamtotal = 0; + for (NSString *key in self.redTeamGiftPersonDic) { + NSMutableSet *set = [self.redTeamGiftPersonDic objectForKey:key]; + redTeamtotal = redTeamtotal + set.count; + } + + for (NSString *key in self.blueTeamGiftPersonDic) { + NSMutableSet *set = [self.blueTeamGiftPersonDic objectForKey:key]; + blueTeamtotal = blueTeamtotal + set.count; + } + [self configRedTeamScore:redTeamtotal blueTeamScore:blueTeamtotal]; +} + +- (void)handleRoomPKInfoChangeState { + self.isPlaying = NO; + if (self.roomPKInfo) { + switch (_roomPKInfo.pkStatus) { + case RoomPKStatusType_End: + [self handleBeginButtonState]; + break; + case RoomPKStatusType_Playing: + { + [TTPopup dismiss]; + [self handleBeginButtonState]; + self.isPlaying = YES; + self.roomPKPlayingView.pkDetailInfo = self.roomPKInfo; + self.roomPKPlayingView.redChooseArray = self.redChooseArray; + self.roomPKPlayingView.blueChooseArray = self.blueChooseArray; + [self.roomPKPlayingView configRedTeamScore:self.redTeamScore blueTeamScore:self.blueTeamScore]; + [TTPopup popupView:self.roomPKPlayingView style:TTPopupStyleAlert]; + } + break; + case RoomPKStatusType_ReStart: + case RoomPKStatusType_NonStart: + { + [self handleBeginButtonState]; + [self clearRoomPKTeamData]; + [self stopRoomPKCountDown]; + } + + break; + default: + break; + } + } +} + +- (void)resetRoomPKGroupType { + NSString * uid = [AccountInfoStorage instance].getUid; + if ([self isOnMicro:uid]) { + MicroQueueModel * micModel = [self findMicroInfoByUid:uid]; + if (micModel.userInfo && micModel.userInfo.uid > 0 && micModel.userInfo.groupType != GroupType_default) { + micModel.userInfo.groupType = GroupType_default; + NIMChatroomQueueUpdateRequest *request = [[NIMChatroomQueueUpdateRequest alloc]init]; + request.key = [NSString stringWithFormat:@"%d", micModel.microState.position]; + request.value = [[self userInfoToQueueExt:micModel.userInfo] toJSONString]; + NSString * roomId = [NSString stringWithFormat:@"%ld", self.roomInfo.roomId]; + request.roomId = roomId; + request.transient = YES; + [[NIMSDK sharedSDK].chatroomManager updateChatroomQueueObject:request completion:^(NSError * _Nullable error) { + }]; + } + } +} + +- (NSDictionary *)userInfoToQueueExt:(UserInfoModel *)userInfo { + MicroExtModel * extModel = [[MicroExtModel alloc] init]; + extModel.gender = userInfo.gender; + extModel.avatar = userInfo.avatar; + extModel.uid = userInfo.uid; + extModel.nick = userInfo.nick; + extModel.headWearUrl = userInfo.headwearEffect.length > 0 ? userInfo.headwearEffect : userInfo.headwearPic; + extModel.micCircle = userInfo.micCircle; + extModel.micNickColor = userInfo.micNickColor; + extModel.groupType = userInfo.groupType; + return [extModel model2dictionary]; +} + +- (NSString *)roomPKTeamJsonString { + NSMutableArray * teamArray = [NSMutableArray array]; + for (int i = 0; i < self.redChooseArray.count; i++) { + RoomPKChooseUserModel * userInfo = [self.redChooseArray safeObjectAtIndex1:i]; + NSMutableDictionary * redDic = [NSMutableDictionary dictionary]; + [redDic setObject:userInfo.uid forKey:@"uid"]; + [redDic setObject:@(userInfo.groupType) forKey:@"type"]; + [teamArray addObject:redDic]; + } + + for (int i = 0; i < self.blueChooseArray.count; i++) { + RoomPKChooseUserModel * userInfo = [self.blueChooseArray safeObjectAtIndex1:i]; + NSMutableDictionary * blueDic = [NSMutableDictionary dictionary]; + [blueDic setObject:userInfo.uid forKey:@"uid"]; + [blueDic setObject:@(userInfo.groupType) forKey:@"type"]; + [teamArray addObject:blueDic]; + } + if (teamArray.count > 0) { + return [teamArray toJSONString]; + } + return @""; +} + +- (void)startRoomPKCountDown:(CGFloat)time { + __block long tempTime = time; //倒计时时间 + __weak typeof(self) weakSelf = self; + self.currentTime = tempTime; + if (self.timer != nil) { + dispatch_source_cancel(self.timer); + } + dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); + self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); + dispatch_source_set_timer(self.timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行 + dispatch_source_set_event_handler(self.timer, ^{ + typeof(weakSelf) self = weakSelf; + if(tempTime <= 0){ //倒计时结束,关闭 + self.currentTime = 0; + dispatch_source_cancel(self.timer); + dispatch_async(dispatch_get_main_queue(), ^{ + [self checkRoomPKResult]; + }); + } else { + dispatch_async(dispatch_get_main_queue(), ^{ + //设置按钮显示读秒效果 + NSInteger minute = tempTime / 60; + NSInteger second = (tempTime % 60); + NSString *timeStr = [NSString stringWithFormat:@"%02zd:%02zd", minute, second]; + self.timeLabel.text= timeStr; + self.roomPKPlayingView.currentTime = timeStr; + }); + tempTime--; + self.currentTime = tempTime; + } + }); + dispatch_resume(self.timer); +} + +- (void)stopRoomPKCountDown { + if (self.timer) { + dispatch_source_cancel(_timer); + _timer = nil; + } +} + +- (void)clearRoomPKTeamData { + [self.roomPKPlayingView clearRoomPKData]; + self.redScoreLabel.text = @"0"; + self.blueScoreLabel.text = @"0"; + self.redTeamScore = 0; + self.blueTeamScore = 0; + self.redTeamGiftPersonDic = nil; + self.blueTeamGiftPersonDic = nil; + self.timeLabel.text = YMLocalizedString(@"XPRoomPKProgressView2"); + [self.redProgressView mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(85); + }]; +} + +- (void)configRedTeamScore:(long)redTeamScore blueTeamScore:(long)blueTeamScore { + self.redTeamScore = redTeamScore; + self.blueTeamScore = blueTeamScore; + self.redScoreLabel.text = [NSString stringWithFormat:@"%ld", redTeamScore]; + self.blueScoreLabel.text = [NSString stringWithFormat:@"%ld", blueTeamScore]; + if (redTeamScore > 0 || blueTeamScore > 0) { + CGFloat redScale = (CGFloat)redTeamScore / (CGFloat)(redTeamScore + blueTeamScore); + if (redScale == 1) { + redScale = 0.99; + } + + + [self.redProgressView mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(85 * 2 * redScale); + }]; + } + [self.roomPKPlayingView configRedTeamScore:redTeamScore blueTeamScore:blueTeamScore]; +} + +- (void)handleBeginButtonState { + if (self.roomPKInfo) { + if (self.roomPKInfo.pkStatus == RoomPKStatusType_Playing) { + self.beginButton.hidden = YES; + } else { + self.beginButton.hidden = !self.isManager; + } + } else { + self.beginButton.hidden = !self.isManager; + } +} + +#pragma mark - XPRoomPKPanelUserViewDelegate +- (void)xPRoomPKPanelUserView:(XPRoomPKPanelUserView *)view didClickAddButton:(GroupType)type { + [TTPopup dismiss]; + if (self.roomPKInfo.pkStatus == RoomPKStatusType_Playing) { + self.roomPKPlayingView.pkDetailInfo = self.roomPKInfo; + self.roomPKPlayingView.redChooseArray = self.redChooseArray; + self.roomPKPlayingView.blueChooseArray = self.blueChooseArray; + [self.roomPKPlayingView configRedTeamScore:self.redTeamScore blueTeamScore:self.blueTeamScore]; + [TTPopup popupView:self.roomPKPlayingView style:TTPopupStyleAlert]; + return; + } + + if (self.isManager) { + XPRoomPKSelectUserView * chooseUserView = [[XPRoomPKSelectUserView alloc] init]; + chooseUserView.delegate = self; + chooseUserView.redUserArray = self.redChooseArray; + chooseUserView.blueUserArray = self.blueChooseArray; + chooseUserView.groupType = type; + chooseUserView.microQueueArray = self.micQueue.allValues; + [TTPopup popupView:chooseUserView style:TTPopupStyleAlert]; + } else { + XPArrangeMicInfoModel * info = [[XPArrangeMicInfoModel alloc] init]; + info.roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; + info.roomId = [NSString stringWithFormat:@"%ld", self.roomInfo.roomId]; + info.nick = self.roomInfo.nick; + info.roomAvatar = self.roomInfo.avatar; + info.roomTitle = self.roomInfo.title; + info.micQueue = self.micQueue; + info.isManager = self.isManager; + info.type = ArrangeMicType_Room_PK; + XPArrangeMicViewController * arrangeMicVC = [[XPArrangeMicViewController alloc] initWithInfo:info]; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController presentViewController:arrangeMicVC animated:YES completion:nil]; + } +} + +#pragma mark - XPRoomPKSelectUserViewDelegate +- (void)xPRoomPKSelectUserView:(XPRoomPKSelectUserView *)view groupType:(GroupType)groupType didChooseUserInfos:(NSArray *)userInfos { + [TTPopup dismiss]; + if (groupType == GroupType_Red) { + self.redChooseArray = userInfos; + } else { + self.blueChooseArray = userInfos; + } + if (self.redChooseArray.count > 0 || self.blueChooseArray.count > 0) { + NSMutableDictionary * dic = [NSMutableDictionary dictionary]; + for (int i = 0 ; i< self.redChooseArray.count; i++) { + RoomPKChooseUserModel * model = [self.redChooseArray safeObjectAtIndex1:i]; + if (model.uid.integerValue <= 0) { + continue; + } + NSMutableDictionary * data =[[model model2dictionary] mutableCopy]; + [data removeObjectForKey:@"title"]; + [data removeObjectForKey:@"imageName"]; + [data removeObjectForKey:@"userUrl"]; + [data removeObjectForKey:@"isSelect"]; + [data removeObjectForKey:@"isEnableChoose"]; + [dic setValue:data forKey:model.uid]; + } + + for (int i = 0 ; i< self.blueChooseArray.count; i++) { + RoomPKChooseUserModel * model = [self.blueChooseArray safeObjectAtIndex1:i]; + if (model.uid.integerValue <= 0) { + continue; + } + NSMutableDictionary * data =[[model model2dictionary] mutableCopy]; + [data removeObjectForKey:@"title"]; + [data removeObjectForKey:@"imageName"]; + [data removeObjectForKey:@"userUrl"]; + [data removeObjectForKey:@"isSelect"]; + [data removeObjectForKey:@"isEnableChoose"]; + [dic setValue:data forKey:model.uid]; + } + + if (dic.allKeys.count > 0) { + AttachmentModel * attachment = [[AttachmentModel alloc] init]; + attachment.first = CustomMessageType_Room_PK; + attachment.second = Custom_Message_Sub_Room_PK_Manager_Up_Mic; + attachment.data = dic; + NSString * roomId = [NSString stringWithFormat:@"%ld", self.roomInfo.roomId]; + NSString *sessionID = roomId; + NIMMessage *message = [[NIMMessage alloc]init]; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachment; + message.messageObject = object; + //构造会话 + NIMSession *session = [NIMSession session:sessionID type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; + } + } +} + +#pragma mark - XPRoomPKPlayingViewDelegate +- (void)xPRoomPKPlayingView:(XPRoomPKPlayingView *)view didClickResetBegin:(UIButton *)sender { + [TTPopup dismiss]; + [TTPopup alertWithMessage:@"重新开始将会提前结束本次PK\n确认重新开始吗?" confirmHandler:^{ + RoomPKInfoModel * roompkInfo = self.roomPKInfo; + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; + [Api createRoomPK:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + RoomPKInfoModel * newRoomPKInfo = [RoomPKInfoModel modelWithDictionary:data.data]; + self.roomPKInfo = newRoomPKInfo; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } pkMode:[NSString stringWithFormat:@"%ld", roompkInfo.pkMode] voteMode:[NSString stringWithFormat:@"%ld", roompkInfo.voteMode] duration:[NSString stringWithFormat:@"%0.f", roompkInfo.duration] roomUid:roomUid operUid:[AccountInfoStorage instance].getUid]; + } cancelHandler:^{ + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + if (self.roomPKInfo.pkStatus == RoomPKStatusType_Playing) { + self.roomPKPlayingView.pkDetailInfo = self.roomPKInfo; + self.roomPKPlayingView.redChooseArray = self.redChooseArray; + self.roomPKPlayingView.blueChooseArray = self.blueChooseArray; + [self.roomPKPlayingView configRedTeamScore:self.redTeamScore blueTeamScore:self.blueTeamScore]; + [TTPopup popupView:self.roomPKPlayingView style:TTPopupStyleAlert]; + } + }); + }]; +} + +#pragma mark - Event Response +- (void)beginButtonAction:(UIButton *)sender { + if (self.roomPKInfo != nil) { + RoomPKInfoModel * roompkInfo = self.roomPKInfo; + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; + if (self.redChooseArray.count > 0 && self.blueChooseArray.count > 0) { + if (self.roomPKInfo.pkStatus == RoomPKStatusType_End || self.roomPKInfo.pkStatus == RoomPKStatusType_ReStart) { + [TTPopup alertWithMessage:@"是否再次开始PK?" confirmHandler:^{ + [Api createRoomPK:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + RoomPKInfoModel * newRoomPKInfo = [RoomPKInfoModel modelWithDictionary:data.data]; + self.roomPKInfo = newRoomPKInfo; + NSString * teamJsonStr = [self roomPKTeamJsonString]; + ///开始PK + [Api begainRoomPK:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + RoomPKInfoModel * roomPKInfo = [RoomPKInfoModel modelWithDictionary:data.data]; + self.roomPKInfo = roomPKInfo; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } roomUid:roomUid pkId:newRoomPKInfo.pkId joinUsers:teamJsonStr]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } pkMode:[NSString stringWithFormat:@"%ld", roompkInfo.pkMode] voteMode:[NSString stringWithFormat:@"%ld", roompkInfo.voteMode] duration:[NSString stringWithFormat:@"%0.f", roompkInfo.duration] roomUid:roomUid operUid:[AccountInfoStorage instance].getUid]; + } cancelHandler:^{ + + }]; + } else if(self.roomPKInfo.pkStatus == RoomPKStatusType_Playing) { + [self didTapBackImageRecognizer]; + } else if(self.roomPKInfo.pkStatus == RoomPKStatusType_NonStart) { + [TTPopup alertWithMessage:@"当前正在准备阶段,是否确认准备开始PK?" confirmHandler:^{ + NSString * teamJsonStr = [self roomPKTeamJsonString]; + ///开始PK + [Api begainRoomPK:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + RoomPKInfoModel * roomPKInfo = [RoomPKInfoModel modelWithDictionary:data.data]; + self.roomPKInfo = roomPKInfo; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } roomUid:roomUid pkId:self.roomPKInfo.pkId joinUsers:teamJsonStr]; + } cancelHandler:^{ + + }]; + } + } else { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPRoomPKProgressView6")]; + } + }else { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPRoomPKProgressView7")]; + [self enterRoomGetRoomPKDetailInfo]; + } +} + +- (void)didTapBackImageRecognizer { + if (self.roomPKInfo.pkStatus == RoomPKStatusType_Playing) { + [TTPopup dismiss]; + self.roomPKPlayingView.pkDetailInfo = self.roomPKInfo; + self.roomPKPlayingView.redChooseArray = self.redChooseArray; + self.roomPKPlayingView.blueChooseArray = self.blueChooseArray; + [self.roomPKPlayingView configRedTeamScore:self.redTeamScore blueTeamScore:self.blueTeamScore]; + [TTPopup popupView:self.roomPKPlayingView style:TTPopupStyleAlert]; + } +} + +#pragma mark - Getters And Setters +- (void)setMicQueue:(NSMutableDictionary *)micQueue { + _micQueue = micQueue; + if (self.roomPKInfo.pkStatus != RoomPKStatusType_Playing) { + NSMutableArray * redArray = [NSMutableArray array]; + NSMutableArray * blueArray = [NSMutableArray array]; + for (int i = 0 ; i < _micQueue.allValues.count; i++) { + MicroQueueModel * micModel = [_micQueue.allValues safeObjectAtIndex1:i]; + if (micModel.userInfo && micModel.userInfo.uid > 0) { + UserInfoModel * userInfo = micModel.userInfo; + if (userInfo.groupType == GroupType_Red) { + RoomPKChooseUserModel * redInfo = [[RoomPKChooseUserModel alloc] init]; + redInfo.avatar = userInfo.avatar; + redInfo.uid = [NSString stringWithFormat:@"%ld", userInfo.uid]; + redInfo.nick = userInfo.nick; + redInfo.groupType = userInfo.groupType; + redInfo.position = micModel.microState.position; + [redArray addObject:redInfo]; + } else if(userInfo.groupType == GroupType_Blue) { + RoomPKChooseUserModel * blueInfo = [[RoomPKChooseUserModel alloc] init]; + blueInfo.avatar = userInfo.avatar; + blueInfo.nick = userInfo.nick; + blueInfo.uid = [NSString stringWithFormat:@"%ld", userInfo.uid]; + blueInfo.groupType = userInfo.groupType; + blueInfo.position = micModel.microState.position; + [blueArray addObject:blueInfo]; + } + } + } + self.redChooseArray = redArray.copy; + self.blueChooseArray = blueArray.copy; + } +} + + +- (void)setIsManager:(BOOL)isManager { + _isManager = isManager; + [self handleBeginButtonState]; + self.roomPKPlayingView.isManager = _isManager; +} + +- (void)setRedChooseArray:(NSArray *)redChooseArray { + _redChooseArray = redChooseArray; + self.redTeamView.userArray = _redChooseArray; + self.roomPKPlayingView.redChooseArray = _redChooseArray; +} + +- (void)setBlueChooseArray:(NSArray *)blueChooseArray { + _blueChooseArray = blueChooseArray; + self.blueTeamView.userArray = _blueChooseArray; + self.roomPKPlayingView.blueChooseArray = _blueChooseArray; +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.image = [UIImage imageNamed:@"room_pk_progrss_bg"]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapBackImageRecognizer)]; + [_backImageView addGestureRecognizer:tap]; + } + return _backImageView; +} + +- (UILabel *)timeLabel { + if (!_timeLabel) { + _timeLabel = [[UILabel alloc] init]; + _timeLabel.font = [UIFont systemFontOfSize:10]; + _timeLabel.textColor = UIColorFromRGB(0x602A06); + _timeLabel.textAlignment = NSTextAlignmentCenter; + _timeLabel.text= YMLocalizedString(@"XPRoomPKProgressView8"); + } + return _timeLabel; +} + +- (XPRoomPKPanelUserView *)redTeamView { + if (!_redTeamView) { + _redTeamView = [[XPRoomPKPanelUserView alloc] init]; + _redTeamView.itemHeight = 25; + _redTeamView.type = GroupType_Red; + _redTeamView.delegate = self; + } + return _redTeamView; +} + +- (XPRoomPKPanelUserView *)blueTeamView { + if (!_blueTeamView) { + _blueTeamView = [[XPRoomPKPanelUserView alloc] init]; + _blueTeamView.itemHeight = 25; + _blueTeamView.type = GroupType_Blue; + _blueTeamView.delegate = self; + } + return _blueTeamView; +} + +- (UIView *)progressView { + if (!_progressView) { + _progressView = [[UIView alloc] init]; + _progressView.backgroundColor = [UIColor clearColor]; + } + return _progressView; +} + +- (UIImageView *)redProgressView { + if (!_redProgressView) { + _redProgressView = [[UIImageView alloc] init]; + _redProgressView.userInteractionEnabled = YES; + _redProgressView.image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFA96AE), UIColorFromRGB(0xE943F8)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)]; + _redProgressView.contentMode = UIViewContentModeScaleAspectFill; + _redProgressView.layer.masksToBounds = YES; + } + return _redProgressView; +} + +- (UIImageView *)blueProgressView { + if (!_blueProgressView) { + _blueProgressView = [[UIImageView alloc] init]; + _blueProgressView.userInteractionEnabled = YES; + _blueProgressView.image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0x4F7AFF), UIColorFromRGB(0x44C0FE)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)]; + _blueProgressView.contentMode = UIViewContentModeScaleAspectFill; + _blueProgressView.layer.masksToBounds = YES; + } + return _blueProgressView; +} + +- (UIImageView *)progressLineView { + if (!_progressLineView) { + _progressLineView = [[UIImageView alloc] init]; + _progressLineView.userInteractionEnabled = YES; + _progressLineView.image = [UIImage imageNamed:@"room_pk_progrss_line_bg"]; + } + return _progressLineView; +} + +- (UILabel *)redScoreLabel { + if (!_redScoreLabel) { + _redScoreLabel = [[UILabel alloc] init]; + _redScoreLabel.text = @"0"; + _redScoreLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _redScoreLabel.textColor = UIColor.whiteColor; + _redScoreLabel.textAlignment = NSTextAlignmentCenter; + } + return _redScoreLabel; +} + +- (UILabel *)blueScoreLabel { + if (!_blueScoreLabel) { + _blueScoreLabel = [[UILabel alloc] init]; + _blueScoreLabel.text = @"0"; + _blueScoreLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _blueScoreLabel.textColor = UIColor.whiteColor; + _blueScoreLabel.textAlignment = NSTextAlignmentCenter; + } + return _blueScoreLabel; +} + +- (UIButton *)beginButton { + if (!_beginButton) { + _beginButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_beginButton setTitle:@"开始PK" forState:UIControlStateNormal]; + [_beginButton setTitleColor:UIColorFromRGB(0x602A06) forState:UIControlStateNormal]; + _beginButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_beginButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFFDAA8), UIColorFromRGB(0xFFBD64)] gradientType:GradientTypeUpleftToLowright imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _beginButton.layer.masksToBounds = YES; + _beginButton.layer.cornerRadius = 12; + _beginButton.hidden = YES; + [_beginButton addTarget:self action:@selector(beginButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _beginButton; +} + +- (XPRoomPKPlayingView *)roomPKPlayingView { + if (!_roomPKPlayingView) { + _roomPKPlayingView = [[XPRoomPKPlayingView alloc] init]; + _roomPKPlayingView.delegate = self; + } + return _roomPKPlayingView; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKRecordViewController.h b/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKRecordViewController.h new file mode 100644 index 00000000..5f4e34a6 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKRecordViewController.h @@ -0,0 +1,16 @@ +// +// YMRoomPKRecordViewController.h +// YUMI +// +// Created by YUMI on 2022/3/18. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomPKRecordViewController : MvpViewController +@property (nonatomic,copy) NSString *roomUid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKRecordViewController.m b/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKRecordViewController.m new file mode 100644 index 00000000..662c5c61 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKRecordViewController.m @@ -0,0 +1,169 @@ +// +// YMRoomPKRecordViewController.m +// YUMI +// +// Created by YUMI on 2022/3/18. +// + +#import "XPRoomPKRecordViewController.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" +///Model +#import "RoomPKRecordModel.h" +///View +#import "XPRoomPKRecordTableViewCell.h" +#import "XPRoomPKEmptyTableViewCell.h" +///P +#import "XPRoomPKRecordPresenter.h" +#import "XPRoomPKRecordProtocol.h" +@interface XPRoomPKRecordViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +/// +@property (nonatomic,strong) NSMutableArray *datasource; +///当前的页数 +@property (nonatomic,assign) int page; +///是否有跟多的数据 +@property (nonatomic,assign) BOOL hasMoreData; +@end + +@implementation XPRoomPKRecordViewController + +- (XPRoomPKRecordPresenter *)createPresenter { + return [[XPRoomPKRecordPresenter alloc] init];; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initHeaderAndFooterRrfresh]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPRoomPKRecordViewController0"); + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +- (void)initHeaderAndFooterRrfresh { + self.hasMoreData = YES; + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; + + [self headerRefresh]; +} + +- (void)headerRefresh { + self.page = 1; + [self.presenter getRoomPKRecordList:self.roomUid page:self.page pageSize:20 state:0]; +} + +- (void)footerRefresh { + if (!self.hasMoreData) { + [self showErrorToast:YMLocalizedString(@"XPRoomPKRecordViewController1")]; + return; + } + self.page++; + [self.presenter getRoomPKRecordList:self.roomUid page:self.page pageSize:20 state:1]; +} + + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + return 170; + } + return (KScreenHeight - kNavigationHeight); +} +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPRoomPKRecordTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPRoomPKRecordTableViewCell class])]; + if (cell == nil) { + cell = [[XPRoomPKRecordTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPRoomPKRecordTableViewCell class])]; + } + RoomPKRecordModel * recordModel = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.pkDetailInfo = recordModel; + return cell; + } + + XPRoomPKEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPRoomPKEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPRoomPKEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPRoomPKEmptyTableViewCell class])]; + } + return cell; +} + +#pragma mark - XPRoomPKRecordProtocol +- (void)getRoomPKRecordListFail:(NSString *)message state:(int)state { + if (state == 0) { + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_header endRefreshing]; + } +} + +- (void)getRoomPKRecordListSuccess:(NSArray *)recordList state:(int)state { + if (state == 0) { + [self.datasource removeAllObjects]; + [self.tableView.mj_header endRefreshing]; + } else { + [self.tableView.mj_footer endRefreshing]; + } + self.hasMoreData = recordList.count > 0; + if (recordList.count > 0) { + [self.datasource addObjectsFromArray:recordList]; + } + [self.tableView reloadData]; +} +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPRoomPKRecordTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPRoomPKRecordTableViewCell class])]; + [_tableView registerClass:[XPRoomPKEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPRoomPKEmptyTableViewCell class])]; + } + return _tableView; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKResultView.h b/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKResultView.h new file mode 100644 index 00000000..80bad6b9 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKResultView.h @@ -0,0 +1,16 @@ +// +// YMRoomPKResultView.h +// YUMI +// +// Created by YUMI on 2022/3/31. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class RoomPKInfoModel; +@interface XPRoomPKResultView : UIView +@property (nonatomic,strong) RoomPKInfoModel *roomPKResultInfoModel; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKResultView.m b/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKResultView.m new file mode 100644 index 00000000..e2ddda4f --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKResultView.m @@ -0,0 +1,790 @@ +// +// YMRoomPKResultView.m +// YUMI +// +// Created by YUMI on 2022/3/31. +// + +#import "XPRoomPKResultView.h" +///Third +#import +///Tool +#import "YUMIMacroUitls.h" +#import "NetImageView.h" +#import "AccountInfoStorage.h" +#import "DJDKMIMOMColor.h" +#import "NSArray+Safe.h" +///Model +#import "RoomPKInfoModel.h" +///View +#import "XPRomPKResultTitleLabel.h" + +#define kRedTeamColor UIColorFromRGB(0xfd4d0e) +#define kBlueTeamColor UIColorFromRGB(0x59b9fb) + + +@interface XPRoomPKResultView () +/// +@property (nonatomic,strong) UIImageView *topImageView; +/// +@property (nonatomic,strong) UIImageView *bottomImageView; +///背景 +@property (nonatomic,strong) UIImageView *contentImageView; +///第一个人 +@property (nonatomic,strong) NetImageView *firstUserView; +///第二个人 +@property (nonatomic,strong) NetImageView *secondUserView; +///第三个人 +@property (nonatomic,strong) NetImageView *thirdUserView; +///第四个人 +@property (nonatomic,strong) NetImageView *fourthUserView; +///第五个人 +@property (nonatomic,strong) NetImageView *fifthUserView; +///是否是MVP +@property (nonatomic,strong) UIImageView *mvpImageView; +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///选手的容器 +@property (nonatomic,strong) UIView * pkUserContaierView; +///PK选手 +@property (nonatomic,strong) UILabel *pkUserLabel; +///输的一方显示文案 +@property (nonatomic,strong) UILabel *failDesLabel; +///战斗值 +@property (nonatomic,strong) XPRomPKResultTitleLabel *fightScoreLable; +///守护者 +@property (nonatomic,strong) XPRomPKResultTitleLabel *guardPersonLable; +///守护值 +@property (nonatomic,strong) XPRomPKResultTitleLabel *guardScoreLable; +///红队后者蓝队战绩 +@property (nonatomic,strong) UIButton *resultButton; +///查看对方的战绩 +@property (nonatomic,strong) UIButton *checkButton; +///存放用户的数组 +@property (nonatomic,strong) NSArray *userViewArray; +///查看其他的 +@property (nonatomic,assign) BOOL isChecOther; +@end + +@implementation XPRoomPKResultView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.contentImageView]; + [self addSubview:self.topImageView]; + [self addSubview:self.bottomImageView]; + + [self.contentImageView addSubview:self.stackView]; + [self.contentImageView addSubview:self.resultButton]; + [self.contentImageView addSubview:self.failDesLabel]; + [self.contentImageView addSubview:self.checkButton]; + + [self.stackView addArrangedSubview:self.pkUserContaierView]; + [self.stackView addArrangedSubview:self.fightScoreLable]; + [self.stackView addArrangedSubview:self.guardPersonLable]; + [self.stackView addArrangedSubview:self.guardScoreLable]; + + [self.pkUserContaierView addSubview:self.pkUserLabel]; + [self.pkUserContaierView addSubview:self.firstUserView]; + [self.pkUserContaierView addSubview:self.secondUserView]; + [self.pkUserContaierView addSubview:self.thirdUserView]; + [self.pkUserContaierView addSubview:self.fourthUserView]; + [self.pkUserContaierView addSubview:self.fifthUserView]; + [self.pkUserContaierView addSubview:self.mvpImageView]; + self.userViewArray = @[self.firstUserView, self.secondUserView, self.thirdUserView, self.fourthUserView, self.fifthUserView]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth); + make.bottom.mas_equalTo(self.bottomImageView.mas_bottom); + }]; + + [self.topImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.top.mas_equalTo(self); + make.width.mas_equalTo(385); + make.height.mas_equalTo(243); + }]; + + [self.contentImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.topImageView).offset(97); + make.left.right.mas_equalTo(self); + make.height.mas_equalTo(170); // 根据类型变化 + }]; + + [self.bottomImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.contentImageView.mas_bottom).offset(-6); + make.centerX.mas_equalTo(self); + make.width.mas_equalTo(375); + make.height.mas_equalTo(16); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.contentImageView).offset(48); + make.left.mas_equalTo(self.contentImageView).offset(20); + make.right.mas_equalTo(self.contentImageView); + }]; + + [self.pkUserContaierView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(35); + }]; + + [self.fightScoreLable mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(15); + }]; + + [self.guardScoreLable mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(15); + }]; + + [self.guardPersonLable mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(15); + }]; + + [self.resultButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.bottom.mas_equalTo(self.failDesLabel.mas_top).offset(-10); + make.width.mas_equalTo(230); + make.height.mas_equalTo(30); + }]; + + [self.failDesLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.checkButton.mas_top).offset(-10); + make.left.right.mas_equalTo(self.contentImageView); + }]; + + [self.checkButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(16); + make.left.right.mas_equalTo(self.contentImageView); + make.bottom.mas_equalTo(self.contentImageView.mas_bottom).offset(-15); + }]; + + [self.pkUserLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.centerY.mas_equalTo(self.pkUserContaierView); + }]; + + [self.firstUserView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(35, 35)); + make.left.mas_equalTo(self.pkUserLabel.mas_right).offset(10); + make.centerY.mas_equalTo(self.pkUserContaierView); + }]; + + [self.secondUserView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.centerY.mas_equalTo(self.firstUserView); + make.left.mas_equalTo(self.firstUserView.mas_right).offset(5); + }]; + + [self.thirdUserView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.centerY.mas_equalTo(self.firstUserView); + make.left.mas_equalTo(self.secondUserView.mas_right).offset(5); + }]; + + [self.fourthUserView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.centerY.mas_equalTo(self.firstUserView); + make.left.mas_equalTo(self.thirdUserView.mas_right).offset(5); + }]; + + [self.fifthUserView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.centerY.mas_equalTo(self.firstUserView); + make.left.mas_equalTo(self.fourthUserView.mas_right).offset(5); + }]; + + [self.mvpImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.firstUserView); + make.top.mas_equalTo(self.firstUserView.mas_top).offset(-3); + make.width.mas_equalTo(35); + make.height.mas_equalTo(17); + }]; +} + +- (void)loadTeamMemberUserAvatar:(NSArray *)members mvpUserId:(NSInteger)mvpUserId{ + self.mvpImageView.hidden = YES; + for (int i = 0; i< self.userViewArray.count; i++) { + NetImageView * imageView = [self.userViewArray safeObjectAtIndex1:i]; + if (i < members.count) { + RoomPKTeamUserModel * userInfo = [members safeObjectAtIndex1:i]; + imageView.imageUrl = userInfo.avatar; + imageView.hidden = NO; + if (mvpUserId == userInfo.uid.integerValue) { + self.mvpImageView.hidden = NO; + [self.mvpImageView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(imageView); + make.top.mas_equalTo(self.firstUserView.mas_top).offset(3); + make.width.mas_equalTo(35); + make.height.mas_equalTo(17); + }]; + } + } else { + imageView.hidden = YES; + } + } +} + +#pragma mark - Event Response +- (void)checkButtonAction:(UIButton *)sender { + self.isChecOther = !self.isChecOther; + if (self.roomPKResultInfoModel) { + RoomPKTeamModel * redTeam; + RoomPKTeamModel * blueTeam; + GroupType myType = GroupType_default; + for (RoomPKTeamModel * teamInfo in _roomPKResultInfoModel.teams) { + if (myType == GroupType_default) { + for (RoomPKTeamUserModel * userInfo in teamInfo.teamMembers) { + if (userInfo.uid.integerValue == [AccountInfoStorage instance].getUid.integerValue) { + myType = teamInfo.team; + break; + } + } + } + + if (teamInfo.team == GroupType_Red) { + redTeam = teamInfo; + } else if(teamInfo.team == GroupType_Blue) { + blueTeam = teamInfo; + } + } + if (myType == GroupType_Red) {///我是红队的 + [self handleMyInRedPKTeam:redTeam bluePKTeam:blueTeam]; + } else if(myType == GroupType_Blue) {///我是蓝队的 + [self handleMyInBluePKTeam:redTeam bluePKTeam:blueTeam]; + } else { + [self handleMyInAudiencePKTeam:redTeam bluePKTeam:blueTeam]; + } + } +} + +#pragma mark - Getters And Setters +- (void)setRoomPKResultInfoModel:(RoomPKInfoModel *)roomPKResultInfoModel { + _roomPKResultInfoModel = roomPKResultInfoModel; + if (_roomPKResultInfoModel) { + RoomPKTeamModel * redTeam; + RoomPKTeamModel * blueTeam; + GroupType myType = GroupType_default; + for (RoomPKTeamModel * teamInfo in _roomPKResultInfoModel.teams) { + if (teamInfo.team == GroupType_Red) { + redTeam = teamInfo; + } else if(teamInfo.team == GroupType_Blue) { + blueTeam = teamInfo; + } + + if (myType == GroupType_default) { + for (RoomPKTeamUserModel * userInfo in teamInfo.teamMembers) { + if (userInfo.uid.integerValue == [AccountInfoStorage instance].getUid.integerValue) { + myType = teamInfo.team; + break; + } + } + } + } + self.failDesLabel.hidden = YES; + if (myType == GroupType_Red) {///我是红队的 + [self handleMyInRedPKTeam:redTeam bluePKTeam:blueTeam]; + } else if(myType == GroupType_Blue) {///我是蓝队的 + [self handleMyInBluePKTeam:redTeam bluePKTeam:blueTeam]; + } else { + [self handleMyInAudiencePKTeam:redTeam bluePKTeam:blueTeam]; + } + } +} +// 自己是红队时布局 +- (void)handleMyInRedPKTeam:(RoomPKTeamModel *)redPKTeam bluePKTeam:(RoomPKTeamModel *)bluePKTeam { + if (self.isChecOther) { // 查看对方战绩 + + if (self.roomPKResultInfoModel.result == RoomPKResultType_Draw) { // win + // 看到的是 平局 + self.bottomImageView.image = [UIImage imageNamed:@"room_pk_result_bottom_loser_bg"]; + self.topImageView.image = [UIImage imageNamed:@"room_pk_result_top_draw_bg"]; + } else if(self.roomPKResultInfoModel.result == RoomPKResultType_Blue) { // loser + // 看到的是 蓝队 win + self.topImageView.image = [UIImage imageNamed:@"room_pk_result_top_win_bg"]; + self.bottomImageView.image = [UIImage imageNamed:@"room_pk_result_bottom_win_bg"]; + } else { + self.topImageView.image = [UIImage imageNamed:@"room_pk_result_top_loser_bg"]; + self.bottomImageView.image = [UIImage imageNamed:@"room_pk_result_bottom_loser_bg"]; + } + + [self.resultButton setTitle:@"· 蓝队战绩 ·" forState:UIControlStateNormal]; + [self.resultButton setTitleColor:kBlueTeamColor forState:UIControlStateNormal]; + [self.checkButton setTitle:@"查看我的战绩>" forState:UIControlStateNormal]; + [self.checkButton setTitleColor:kRedTeamColor forState:UIControlStateNormal]; + self.fightScoreLable.groupType = GroupType_Blue; + self.guardScoreLable.groupType = GroupType_Blue; + self.guardPersonLable.groupType = GroupType_Blue; + self.fightScoreLable.content = [NSString stringWithFormat:@"%lld", bluePKTeam.score]; + if (bluePKTeam.protector.nick.length) { + self.guardPersonLable.content = [NSString stringWithFormat:@"%@", bluePKTeam.protector.nick]; + } else { + self.guardPersonLable.content = YMLocalizedString(@"XPRoomPKResultView2"); + } + self.guardScoreLable.content = [NSString stringWithFormat:@"%lld", bluePKTeam.protecScore]; + [self loadTeamMemberUserAvatar:bluePKTeam.teamMembers mvpUserId:bluePKTeam.mvp]; + CGFloat bgHeight = 224; + if (self.roomPKResultInfoModel.result == RoomPKResultType_Draw || self.roomPKResultInfoModel.voteMode == RoomPKVoteModeType_NumberPerson) { + self.guardScoreLable.hidden = YES; + self.guardPersonLable.hidden = YES; + } else { + self.guardScoreLable.hidden = NO; + self.guardPersonLable.hidden = NO; + bgHeight = 264; + } + [self.contentImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(bgHeight); // 根据类型变化 + }]; + + return; + } + + if (self.roomPKResultInfoModel.result == RoomPKResultType_Red) { // win + self.topImageView.image = [UIImage imageNamed:@"room_pk_result_top_win_bg"]; + self.bottomImageView.image = [UIImage imageNamed:@"room_pk_result_bottom_win_bg"]; + } else if (self.roomPKResultInfoModel.result == RoomPKResultType_Blue) { // loser + self.topImageView.image = [UIImage imageNamed:@"room_pk_result_top_loser_bg"]; + self.bottomImageView.image = [UIImage imageNamed:@"room_pk_result_bottom_loser_bg"]; + self.failDesLabel.hidden = NO; + } else { // 平局 + self.topImageView.image = [UIImage imageNamed:@"room_pk_result_top_draw_bg"]; + self.bottomImageView.image = [UIImage imageNamed:@"room_pk_result_bottom_loser_bg"]; + } + [self.resultButton setTitle:@"· 红队战绩 ·" forState:UIControlStateNormal]; + [self.checkButton setTitle:@"查看对方战绩>" forState:UIControlStateNormal]; + [self.resultButton setTitleColor:kRedTeamColor forState:UIControlStateNormal]; + [self.checkButton setTitleColor:kBlueTeamColor forState:UIControlStateNormal]; + self.fightScoreLable.groupType = GroupType_Red; + self.guardScoreLable.groupType = GroupType_Red; + self.guardPersonLable.groupType = GroupType_Red; + self.fightScoreLable.content = [NSString stringWithFormat:@"%lld", redPKTeam.score]; + if (redPKTeam.protector.nick.length) { + self.guardPersonLable.content = [NSString stringWithFormat:@"%@", redPKTeam.protector.nick]; + } else { + self.guardPersonLable.content = YMLocalizedString(@"XPRoomPKResultView5"); + } + self.guardScoreLable.content = [NSString stringWithFormat:@"%lld", redPKTeam.protecScore]; + [self loadTeamMemberUserAvatar:redPKTeam.teamMembers mvpUserId:redPKTeam.mvp]; + + CGFloat bgHeight = 224; + if (self.roomPKResultInfoModel.result == RoomPKResultType_Draw || self.roomPKResultInfoModel.voteMode == RoomPKVoteModeType_NumberPerson) { + self.guardScoreLable.hidden = YES; + self.guardPersonLable.hidden = YES; + } else { + self.guardScoreLable.hidden = NO; + self.guardPersonLable.hidden = NO; + bgHeight = 264; + } + [self.contentImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(bgHeight); // 根据类型变化 + }]; +} + +// 自己是蓝队时布局 +- (void)handleMyInBluePKTeam:(RoomPKTeamModel *)redPKTeam bluePKTeam:(RoomPKTeamModel *)bluePKTeam { + if (self.isChecOther) { // 查看对方战绩 + if (self.roomPKResultInfoModel.result == RoomPKResultType_Draw) { // win + // 看到的是 平局 + self.bottomImageView.image = [UIImage imageNamed:@"room_pk_result_bottom_loser_bg"]; + self.topImageView.image = [UIImage imageNamed:@"room_pk_result_top_draw_bg"]; + } else if(self.roomPKResultInfoModel.result == RoomPKResultType_Blue) { // loser + // 看到的是 蓝队 win + self.topImageView.image = [UIImage imageNamed:@"room_pk_result_top_loser_bg"]; + self.bottomImageView.image = [UIImage imageNamed:@"room_pk_result_bottom_loser_bg"]; + } else { + self.topImageView.image = [UIImage imageNamed:@"room_pk_result_top_win_bg"]; + self.bottomImageView.image = [UIImage imageNamed:@"room_pk_result_bottom_win_bg"]; + } + + [self.resultButton setTitle:@"· 红队战绩 ·" forState:UIControlStateNormal]; + [self.resultButton setTitleColor:kRedTeamColor forState:UIControlStateNormal]; + [self.checkButton setTitle:@"查看我的战绩>" forState:UIControlStateNormal]; + [self.checkButton setTitleColor:kBlueTeamColor forState:UIControlStateNormal]; + self.fightScoreLable.groupType = GroupType_Red; + self.guardScoreLable.groupType = GroupType_Red; + self.guardPersonLable.groupType = GroupType_Red; + self.fightScoreLable.content = [NSString stringWithFormat:@"%lld", redPKTeam.score]; + if (redPKTeam.protector.nick.length) { + self.guardPersonLable.content = [NSString stringWithFormat:@"%@", redPKTeam.protector.nick]; + } else { + self.guardPersonLable.content = YMLocalizedString(@"XPRoomPKResultView8"); + } + self.guardScoreLable.content = [NSString stringWithFormat:@"%lld", redPKTeam.protecScore]; + [self loadTeamMemberUserAvatar:redPKTeam.teamMembers mvpUserId:redPKTeam.mvp]; + CGFloat bgHeight = 224; + if (self.roomPKResultInfoModel.result == RoomPKResultType_Draw || self.roomPKResultInfoModel.voteMode == RoomPKVoteModeType_NumberPerson) { + self.guardScoreLable.hidden = YES; + self.guardPersonLable.hidden = YES; + } else { + self.guardScoreLable.hidden = NO; + self.guardPersonLable.hidden = NO; + bgHeight = 264; + } + [self.contentImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(bgHeight); // 根据类型变化 + }]; + return; + } + + if (self.roomPKResultInfoModel.result == RoomPKResultType_Blue) { // win + self.topImageView.image = [UIImage imageNamed:@"room_pk_result_top_win_bg"]; + self.bottomImageView.image = [UIImage imageNamed:@"room_pk_result_bottom_win_bg"]; + } else if (self.roomPKResultInfoModel.result == RoomPKResultType_Red) { // loser + self.failDesLabel.hidden = NO; + self.topImageView.image = [UIImage imageNamed:@"room_pk_result_top_loser_bg"]; + self.bottomImageView.image = [UIImage imageNamed:@"room_pk_result_bottom_loser_bg"]; + } else { // 平局 + self.bottomImageView.image = [UIImage imageNamed:@"room_pk_result_bottom_loser_bg"]; + self.topImageView.image = [UIImage imageNamed:@"room_pk_result_top_draw_bg"]; + } + [self.resultButton setTitle:@"· 蓝队战绩 ·" forState:UIControlStateNormal]; + [self.resultButton setTitleColor:kBlueTeamColor forState:UIControlStateNormal]; + [self.checkButton setTitle:@"查看红队战绩>" forState:UIControlStateNormal]; + [self.checkButton setTitleColor:kRedTeamColor forState:UIControlStateNormal]; + + self.fightScoreLable.groupType = GroupType_Blue; + self.guardScoreLable.groupType = GroupType_Blue; + self.guardPersonLable.groupType = GroupType_Blue; + self.fightScoreLable.content = [NSString stringWithFormat:@"%lld", bluePKTeam.score]; + if (bluePKTeam.protector.nick.length) { + self.guardPersonLable.content = [NSString stringWithFormat:@"%@", bluePKTeam.protector.nick]; + } else { + self.guardPersonLable.content = YMLocalizedString(@"XPRoomPKResultView11"); + } + self.guardScoreLable.content = [NSString stringWithFormat:@"%lld", bluePKTeam.protecScore]; + [self loadTeamMemberUserAvatar:bluePKTeam.teamMembers mvpUserId:bluePKTeam.mvp]; + CGFloat bgHeight = 204; + if (self.roomPKResultInfoModel.result == RoomPKResultType_Draw || self.roomPKResultInfoModel.voteMode == RoomPKVoteModeType_NumberPerson) { + self.guardScoreLable.hidden = YES; + self.guardPersonLable.hidden = YES; + } else { + self.guardScoreLable.hidden = NO; + self.guardPersonLable.hidden = NO; + bgHeight = 264; + } + [self.contentImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(bgHeight); // 根据类型变化 + }]; +} + +// 观众时的布局 +- (void)handleMyInAudiencePKTeam:(RoomPKTeamModel *)redPKTeam bluePKTeam:(RoomPKTeamModel *)bluePKTeam { + // 观众弹的是胜利方, 点击查看其它的则是查看失败方, 平局没有查看对方的情况 + if (self.isChecOther) { // 查看失败方战绩 + self.topImageView.image = [UIImage imageNamed:@"room_pk_result_top_loser_bg"]; + self.bottomImageView.image = [UIImage imageNamed:@"room_pk_result_bottom_loser_bg"]; + if (self.roomPKResultInfoModel.result == RoomPKResultType_Blue) { + [self.resultButton setTitle:@"· 红队战绩 ·" forState:UIControlStateNormal]; + [self.resultButton setTitleColor:kRedTeamColor forState:UIControlStateNormal]; + [self.checkButton setTitle:@"查看蓝队战绩>" forState:UIControlStateNormal]; + [self.checkButton setTitleColor:kBlueTeamColor forState:UIControlStateNormal]; + self.fightScoreLable.groupType = GroupType_Red; + self.guardScoreLable.groupType = GroupType_Red; + self.guardPersonLable.groupType = GroupType_Red; + self.fightScoreLable.content = [NSString stringWithFormat:@"%lld", redPKTeam.score]; + if (redPKTeam.protector.nick.length) { + self.guardPersonLable.content = [NSString stringWithFormat:@"%@", redPKTeam.protector.nick]; + } else { + self.guardPersonLable.content = YMLocalizedString(@"XPRoomPKResultView14"); + } + self.guardScoreLable.content = [NSString stringWithFormat:@"%lld", redPKTeam.protecScore]; + } else { + [self.resultButton setTitle:@"· 蓝队战绩 ·" forState:UIControlStateNormal]; + [self.resultButton setTitleColor:kBlueTeamColor forState:UIControlStateNormal]; + [self.checkButton setTitle:@"查看红队战绩>" forState:UIControlStateNormal]; + [self.checkButton setTitleColor:kRedTeamColor forState:UIControlStateNormal]; + self.fightScoreLable.groupType = GroupType_Blue; + self.guardScoreLable.groupType = GroupType_Blue; + self.guardPersonLable.groupType = GroupType_Blue; + self.fightScoreLable.content = [NSString stringWithFormat:@"%lld", bluePKTeam.score]; + if (bluePKTeam.protector.nick.length) { + self.guardPersonLable.content = [NSString stringWithFormat:@"%@", bluePKTeam.protector.nick]; + } else { + self.guardPersonLable.content = YMLocalizedString(@"XPRoomPKResultView17"); + } + self.guardScoreLable.content = [NSString stringWithFormat:@"%lld", bluePKTeam.protecScore]; + } + CGFloat bgHeight = 204; + if (self.roomPKResultInfoModel.voteMode == RoomPKVoteModeType_GiftValue) { + self.guardScoreLable.hidden = NO; + self.guardPersonLable.hidden = NO; + bgHeight = 264; + } else { // RoomPKVoteModeType_NumberPerson + self.guardScoreLable.hidden = YES; + self.guardPersonLable.hidden = YES; + bgHeight = 204; + } + + [self loadTeamMemberUserAvatar:bluePKTeam.teamMembers mvpUserId:bluePKTeam.mvp]; + [self.contentImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(bgHeight); // 根据类型变化 + }]; + return; // 返回 + } + + // 弹胜利方的框 + if (self.roomPKResultInfoModel.result == RoomPKResultType_Blue) { // win + self.topImageView.image = [UIImage imageNamed:@"room_pk_result_top_win_bg"]; + self.bottomImageView.image = [UIImage imageNamed:@"room_pk_result_bottom_win_bg"]; + [self.resultButton setTitle:@"· 蓝队胜利 ·" forState:UIControlStateNormal]; + [self.resultButton setTitleColor:kBlueTeamColor forState:UIControlStateNormal]; + [self.checkButton setTitle:@"查看红队战绩>" forState:UIControlStateNormal]; + [self.checkButton setTitleColor:kRedTeamColor forState:UIControlStateNormal]; + + self.fightScoreLable.groupType = GroupType_Blue; + self.guardScoreLable.groupType = GroupType_Blue; + self.guardPersonLable.groupType = GroupType_Blue; + self.fightScoreLable.content = [NSString stringWithFormat:@"%lld", bluePKTeam.score]; + if (bluePKTeam.protector.nick.length) { + self.guardPersonLable.content = [NSString stringWithFormat:@"%@", bluePKTeam.protector.nick]; + } else { + self.guardPersonLable.content = YMLocalizedString(@"XPRoomPKResultView20"); + } + self.guardScoreLable.content = [NSString stringWithFormat:@"%lld", bluePKTeam.protecScore]; + [self loadTeamMemberUserAvatar:bluePKTeam.teamMembers mvpUserId:bluePKTeam.mvp]; + } else if (self.roomPKResultInfoModel.result == RoomPKResultType_Red) { // loser + self.topImageView.image = [UIImage imageNamed:@"room_pk_result_top_win_bg"]; + self.bottomImageView.image = [UIImage imageNamed:@"room_pk_result_bottom_win_bg"]; + [self.resultButton setTitle:@"· 红队胜利 ·" forState:UIControlStateNormal]; + [self.resultButton setTitleColor:kRedTeamColor forState:UIControlStateNormal]; + [self.checkButton setTitle:@"查看蓝队战绩>" forState:UIControlStateNormal]; + [self.checkButton setTitleColor:kBlueTeamColor forState:UIControlStateNormal]; + + self.fightScoreLable.groupType = GroupType_Red; + self.guardScoreLable.groupType = GroupType_Red; + self.guardPersonLable.groupType = GroupType_Red; + self.fightScoreLable.content = [NSString stringWithFormat:@"%lld", redPKTeam.score]; + if (redPKTeam.protector.nick.length) { + self.guardPersonLable.content = [NSString stringWithFormat:@"%@", redPKTeam.protector.nick]; + } else { + self.guardPersonLable.content = YMLocalizedString(@"XPRoomPKResultView23"); + } + self.guardScoreLable.content = [NSString stringWithFormat:@"%lld", redPKTeam.protecScore]; + [self loadTeamMemberUserAvatar:redPKTeam.teamMembers mvpUserId:redPKTeam.mvp]; + } else { // 平局 + self.bottomImageView.image = [UIImage imageNamed:@"room_pk_result_bottom_loser_bg"]; + self.topImageView.image = [UIImage imageNamed:@"room_pk_result_top_draw_bg"]; + [self.resultButton setTitle:@"· 势均力敌 ·" forState:UIControlStateNormal]; + [self.resultButton setTitleColor:kRedTeamColor forState:UIControlStateNormal]; + self.checkButton.hidden = YES; + self.fightScoreLable.groupType = GroupType_Red; + self.pkUserContaierView.hidden = YES; + self.fightScoreLable.title = @"本局平局 战斗值:"; + self.fightScoreLable.content = [NSString stringWithFormat:@"%lld", redPKTeam.score]; + [self loadTeamMemberUserAvatar:redPKTeam.teamMembers mvpUserId:redPKTeam.mvp]; + } + + CGFloat bgHeight = 200; + if (self.roomPKResultInfoModel.result == RoomPKResultType_Draw || self.roomPKResultInfoModel.voteMode == RoomPKVoteModeType_NumberPerson) { + self.guardScoreLable.hidden = YES; + self.guardPersonLable.hidden = YES; + } else { + self.guardScoreLable.hidden = NO; + self.guardPersonLable.hidden = NO; + bgHeight = 264; + } + [self.contentImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(bgHeight); // 根据类型变化 + }]; +} + +- (UIImageView *)topImageView { + if (!_topImageView) { + _topImageView = [[UIImageView alloc] init]; + _topImageView.userInteractionEnabled = YES; + } + return _topImageView; +} + +- (UIImageView *)contentImageView { + if (!_contentImageView) { + _contentImageView = [[UIImageView alloc] init]; + _contentImageView.userInteractionEnabled = YES; + _contentImageView.image = [UIImage imageNamed:@"room_pk_result_content_bg"]; + } + return _contentImageView; +} + +- (UIImageView *)bottomImageView { + if (!_bottomImageView) { + _bottomImageView = [[UIImageView alloc] init]; + _bottomImageView.userInteractionEnabled = YES; + } + return _bottomImageView; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 10; + } + return _stackView; +} + +- (UIView *)pkUserContaierView { + if (!_pkUserContaierView) { + _pkUserContaierView = [[UIView alloc] init]; + _pkUserContaierView.backgroundColor = [UIColor clearColor]; + } + return _pkUserContaierView; +} + +- (UILabel *)pkUserLabel { + if (!_pkUserLabel) { + _pkUserLabel = [[UILabel alloc] init]; + _pkUserLabel.font = [UIFont systemFontOfSize:14]; + _pkUserLabel.textColor = [UIColor whiteColor]; + _pkUserLabel.text = @"PK选手:"; + } + return _pkUserLabel; +} + +- (XPRomPKResultTitleLabel *)fightScoreLable { + if (!_fightScoreLable) { + _fightScoreLable = [[XPRomPKResultTitleLabel alloc] init]; + _fightScoreLable.title = @"战斗值:"; + } + return _fightScoreLable; +} + +- (XPRomPKResultTitleLabel *)guardPersonLable { + if (!_guardPersonLable) { + _guardPersonLable = [[XPRomPKResultTitleLabel alloc] init]; + _guardPersonLable.title = @"守护者:"; + } + return _guardPersonLable; +} + +- (XPRomPKResultTitleLabel *)guardScoreLable { + if (!_guardScoreLable) { + _guardScoreLable = [[XPRomPKResultTitleLabel alloc] init]; + _guardScoreLable.title = @"守护值:"; + } + return _guardScoreLable; +} + +- (UIButton *)resultButton { + if (!_resultButton) { + _resultButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_resultButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _resultButton.titleLabel.font = [UIFont systemFontOfSize:16]; + [_resultButton setBackgroundImage:[UIImage imageNamed:@"room_pk_result_loser_result_bg"] forState:UIControlStateNormal]; + } + return _resultButton; +} + +- (UIButton *)checkButton { + if (!_checkButton) { + _checkButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_checkButton setTitle:YMLocalizedString(@"XPRoomPKResultView30") forState:UIControlStateNormal]; + [_checkButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _checkButton.titleLabel.font = [UIFont systemFontOfSize:15]; + _checkButton.layer.masksToBounds = YES; + _checkButton.layer.cornerRadius = 10; + [_checkButton addTarget:self action:@selector(checkButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _checkButton; +} + +- (NetImageView *)firstUserView { + if (!_firstUserView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _firstUserView = [[NetImageView alloc] initWithConfig:config]; + _firstUserView.layer.masksToBounds = YES; + _firstUserView.layer.cornerRadius = 35/2; + _firstUserView.layer.borderWidth = 1; + _firstUserView.userInteractionEnabled = YES; + } + return _firstUserView; +} + +- (NetImageView *)secondUserView { + if (!_secondUserView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _secondUserView = [[NetImageView alloc] initWithConfig:config]; + _secondUserView.layer.masksToBounds = YES; + _secondUserView.layer.cornerRadius = 35/2; + _secondUserView.layer.borderWidth = 1; + _secondUserView.userInteractionEnabled = YES; + } + return _secondUserView; +} + + +- (NetImageView *)thirdUserView { + if (!_thirdUserView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _thirdUserView = [[NetImageView alloc] initWithConfig:config]; + _thirdUserView.layer.masksToBounds = YES; + _thirdUserView.layer.cornerRadius = 35/2; + _thirdUserView.layer.borderWidth = 1; + _thirdUserView.userInteractionEnabled = YES; + } + return _thirdUserView; +} + +- (NetImageView *)fourthUserView { + if (!_fourthUserView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _fourthUserView = [[NetImageView alloc] initWithConfig:config]; + _fourthUserView.layer.masksToBounds = YES; + _fourthUserView.layer.cornerRadius = 35/2; + _fourthUserView.layer.borderWidth = 1; + _fourthUserView.userInteractionEnabled = YES; + } + return _fourthUserView; +} + +- (NetImageView *)fifthUserView { + if (!_fifthUserView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _fifthUserView = [[NetImageView alloc] initWithConfig:config]; + _fifthUserView.layer.masksToBounds = YES; + _fifthUserView.layer.cornerRadius = 35/2; + _fifthUserView.layer.borderWidth = 1; + _fifthUserView.userInteractionEnabled = YES; + } + return _fifthUserView; +} + +- (UIImageView *)mvpImageView { + if (!_mvpImageView) { + _mvpImageView = [[UIImageView alloc] init]; + _mvpImageView.userInteractionEnabled = YES; + _mvpImageView.image = [UIImage imageNamed:@"room_pk_result_user_mvp"]; + _mvpImageView.hidden = YES; + } + return _mvpImageView; +} + +- (UILabel *)failDesLabel { + if (!_failDesLabel) { + _failDesLabel = [[UILabel alloc] init]; + _failDesLabel.font = [UIFont systemFontOfSize:15]; + _failDesLabel.textColor = UIColorFromRGB(0x666666); + _failDesLabel.textAlignment = NSTextAlignmentCenter; + _failDesLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPRoomPKResultView31"), AppName]; + } + return _failDesLabel; +} + + + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKViewController.h b/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKViewController.h new file mode 100644 index 00000000..9819e8d3 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKViewController.h @@ -0,0 +1,16 @@ +// +// YMRoomPKViewController.h +// YUMI +// +// Created by YUMI on 2022/3/17. +// + +#import "MvpViewController.h" +#import "RoomHostDelegate.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomPKViewController : MvpViewController +- (instancetype)initWithDelegate:(id)delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKViewController.m b/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKViewController.m new file mode 100644 index 00000000..2be7c594 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomPK/View/XPRoomPKViewController.m @@ -0,0 +1,509 @@ +// +// YMRoomPKViewController.m +// YUMI +// +// Created by YUMI on 2022/3/17. +// + +#import "XPRoomPKViewController.h" +///Third +#import +///Tool +#import "TTPopup.h" +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "NSObject+MJExtension.h" +#import "NSArray+Safe.h" +///Model +#import "RoomPKTimeItemModel.h" +#import "RoomInfoModel.h" +#import "RoomPKChooseUserModel.h" +#import "AttachmentModel.h" +#import "RoomPKChooseUserModel.h" +///View +#import "XPRoomPKVoteTableViewCell.h" +#import "XPRoomPKTypeTableViewCell.h" +#import "XPRoomPKTimeTableViewCell.h" +#import "XPRoomPKUserView.h" +#import "XPRoomPKTimePickerView.h" +#import "XPRoomPKRecordViewController.h" +#import "XPRoomPKSelectUserView.h" +///P +#import "XPRoomPKPresenter.h" +#import "XPRoomPKProtocol.h" +@interface XPRoomPKViewController () +///用户的容器 +@property (nonatomic,strong) UIView * userContainerView; +///红队 +@property (nonatomic,strong) NSArray *redTeamViews; +///蓝队 +@property (nonatomic,strong) NSArray *blueTeamViews; +///房间pklogo +@property (nonatomic,strong) UIImageView *roomPKLogoImageView; +///列表 +@property (nonatomic,strong) UITableView *tableView; +///创建pk的容器 +@property (nonatomic,strong) UIStackView *createPKStackView; +///创建PK +@property (nonatomic,strong) UIButton *createPKButton; +///再次创建 +@property (nonatomic,strong) UIButton *onceAgainPKButton; +///关闭PK +@property (nonatomic,strong) UIButton *closePKButton; +///代理 +@property (nonatomic,assign) id hostDelegate; +///类型 +@property (nonatomic,assign) RoomPKVoteModeType voteType; +///时间 +@property (nonatomic,assign) int duraTime; +///红队的成员 +@property (nonatomic,strong) NSMutableArray *redUserArray; +///蓝队的成员 +@property (nonatomic,strong) NSMutableArray *blueUserArray; +@end + +@implementation XPRoomPKViewController + +- (XPRoomPKPresenter *)createPresenter { + return [[XPRoomPKPresenter alloc] init]; +} + +- (instancetype)initWithDelegate:(id)delegate { + if (self = [super init]) { + self.hostDelegate = delegate; + } + return self; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = @"创建PK"; + self.duraTime = 30; + self.voteType = RoomPKVoteModeType_GiftValue; + NSArray * array = self.hostDelegate.getRoomPKGroupTeamList; + self.redUserArray = [array safeObjectAtIndex1:0]; + self.blueUserArray = [array safeObjectAtIndex1:1]; + for (RoomPKChooseUserModel * userInfo in self.redUserArray) { + userInfo.groupType = GroupType_default; + } + + for (RoomPKChooseUserModel * userInfo in self.blueUserArray) { + userInfo.groupType = GroupType_default; + } + + [self addNavigationItemWithTitles:@[YMLocalizedString(@"XPRoomPKViewController1")] titleColor:[DJDKMIMOMColor mainTextColor] isLeft:NO target:self action:@selector(rightNavAction:) tags:nil]; + [self.view addSubview:self.userContainerView]; + [self.view addSubview:self.tableView]; + [self.view addSubview:self.createPKStackView]; + + [self.createPKStackView addArrangedSubview:self.createPKButton]; + [self.createPKStackView addArrangedSubview:self.onceAgainPKButton]; + [self.createPKStackView addArrangedSubview:self.closePKButton]; + + [self.userContainerView addSubview:self.roomPKLogoImageView]; + [self initUserContainerSubViews]; + + + if (self.hostDelegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode) { + self.onceAgainPKButton.hidden = NO; + self.closePKButton.hidden = NO; + self.createPKButton.hidden = YES; + } else { + self.createPKButton.hidden = NO; + } +} + +- (void)initSubViewConstraints { + XPRoomPKUserView * userView = [self.redTeamViews lastObject]; + [self.userContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.top.mas_equalTo(self.view).offset(10); + make.bottom.mas_equalTo(userView.mas_bottom).offset(20); + }]; + + [self.roomPKLogoImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self.userContainerView); + make.width.mas_equalTo(43); + make.height.mas_equalTo(64); + }]; + + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.top.mas_equalTo(self.userContainerView.mas_bottom); + }]; + + [self.createPKStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view).inset(47); + make.bottom.mas_equalTo(self.view).offset(-kSafeAreaBottomHeight - 20); + }]; + + [self.createPKButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(44); + }]; + + [self.onceAgainPKButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(44); + }]; + + [self.closePKButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(44); + }]; +} + +- (void)initUserContainerSubViews { + CGFloat itemWidth = 60; + CGFloat itemHeight = 67; + CGFloat pkItemWidth = 72; + CGFloat pkItemMargeHeight = 10; + CGFloat itemSpace = (KScreenWidth - itemWidth * 4 - 72 - 13 * 2)/ 2; + NSMutableArray * redArray = [NSMutableArray array]; + for (int i = 0; i< 4; i++) { + XPRoomPKUserView * redView = [[XPRoomPKUserView alloc] init]; + [redArray addObject:redView]; + redView.type = RoomPKUserViewType_Red; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(redDidTapRecognizer:)]; + [redView addGestureRecognizer:tap]; + [self.userContainerView addSubview:redView]; + [redView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(itemWidth, itemHeight)); + make.left.mas_equalTo(self.userContainerView).offset(13+ i % 2 * (itemWidth + itemSpace)); + make.top.mas_equalTo(self.userContainerView).offset(i / 2 *(itemHeight + pkItemMargeHeight)); + }]; + } + self.redTeamViews = [redArray copy]; + + NSMutableArray * blueArray = [NSMutableArray array]; + for (int i = 0; i< 4; i++) { + XPRoomPKUserView * blueView = [[XPRoomPKUserView alloc] init]; + [blueArray addObject:blueView]; + blueView.type = RoomPKUserViewType_Blue; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(blueDidTapRecognizer:)]; + [blueView addGestureRecognizer:tap]; + [self.userContainerView addSubview:blueView]; + [blueView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(itemWidth, itemHeight)); + make.left.mas_equalTo(self.userContainerView).offset(13 + itemWidth * 2 + itemSpace + pkItemWidth + i % 2 * (itemWidth + itemSpace)); + make.top.mas_equalTo(self.userContainerView).offset(i / 2 *(itemHeight + pkItemMargeHeight)); + }]; + } + self.blueTeamViews = [blueArray copy]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return 3; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 50; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (indexPath.row == 0) { + XPRoomPKTypeTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPRoomPKTypeTableViewCell class])]; + if (cell == nil) { + cell = [[XPRoomPKTypeTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPRoomPKTypeTableViewCell class])]; + } + return cell; + } else if(indexPath.row == 1) { + XPRoomPKVoteTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPRoomPKVoteTableViewCell class])]; + if (cell == nil) { + cell = [[XPRoomPKVoteTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPRoomPKVoteTableViewCell class])]; + } + cell.delegate = self; + return cell; + } else { + XPRoomPKTimeTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPRoomPKTimeTableViewCell class])]; + if (cell == nil) { + cell = [[XPRoomPKTimeTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPRoomPKTimeTableViewCell class])]; + } + return cell; + } +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (indexPath.row == 2) { + XPRoomPKTimePickerView * timePicker = [[XPRoomPKTimePickerView alloc] init]; + timePicker.delegate = self; + [TTPopup popupView:timePicker style:TTPopupStyleActionSheet]; + } +} +#pragma mark - XPRoomPKTimePickerViewDelegate +- (void)xPRoomPKTimePickerView:(XPRoomPKTimePickerView *)view timeModel:(RoomPKTimeItemModel *)model { + XPRoomPKTimeTableViewCell * cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:2 inSection:0]]; + self.duraTime = model.time; + cell.time = model.title; +} + +#pragma mark - XPRoomPKVoteTableViewCellDelegate +- (void)xPRoomPKVoteTableViewCell:(XPRoomPKVoteTableViewCell *)view didChooseVoteType:(RoomPKVoteModeType)VoteType { + self.voteType = VoteType; +} + +#pragma mark - XPRoomPKSelectUserViewDelegate +- (void)xPRoomPKSelectUserView:(XPRoomPKSelectUserView *)view groupType:(GroupType)groupType didChooseUserInfos:(NSArray *)userInfos { + [TTPopup dismiss]; + if (groupType == GroupType_Red) { + self.redUserArray = [NSMutableArray arrayWithArray:userInfos];; + } else { + self.blueUserArray = [NSMutableArray arrayWithArray:userInfos]; + } + + if (self.redUserArray.count > 0) { + for (int i = 0; i< self.redTeamViews.count; i++) { + XPRoomPKUserView * userView = [self.redTeamViews safeObjectAtIndex1:i]; + userView.userInfo = nil; + } + } + + if (self.blueUserArray.count > 0) { + for (int i = 0; i< self.blueTeamViews.count; i++) { + XPRoomPKUserView * userView = [self.blueTeamViews safeObjectAtIndex1:i]; + userView.userInfo = nil; + } + } + + + for (int i = 0; i < self.redUserArray.count; i++) { + RoomPKChooseUserModel * userInfo = [self.redUserArray safeObjectAtIndex1:i]; + if (i < self.redTeamViews.count) { + XPRoomPKUserView * userView = [self.redTeamViews safeObjectAtIndex1:i]; + if (userInfo.groupType == GroupType_Red) { + userView.userInfo = userInfo; + } else { + userView.userInfo = nil; + [self.redUserArray removeObject:userInfo]; + } + } + } + for (int i = 0; i < self.blueUserArray.count; i++) { + RoomPKChooseUserModel * userInfo = [self.blueUserArray safeObjectAtIndex1:i]; + if (i < self.blueTeamViews.count) { + XPRoomPKUserView * userView = [self.blueTeamViews safeObjectAtIndex1:i]; + if (userInfo.groupType == GroupType_Blue) { + userView.userInfo = userInfo; + } else { + userView.userInfo = nil; + [self.blueUserArray removeObject:userInfo]; + } + } + } +} + +#pragma mark - XPRoomPKProtocol +- (void)openRoomPKSuccess { + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; + [self.presenter createRoomPKMode:2 voteMode:self.voteType duration:self.duraTime roomUid:roomUid]; +} + +- (void)closeRoomPKSuccess { + [self.navigationController popViewControllerAnimated:YES]; +} + +- (void)createRoomPKSuccess:(RoomPKInfoModel *)roompkInfo { + [self showSuccessToast:YMLocalizedString(@"XPRoomPKViewController2")]; + if (self.redUserArray.count > 0 || self.blueUserArray.count > 0) { + NSMutableDictionary * dic = [NSMutableDictionary dictionary]; + for (int i = 0 ; i< self.redUserArray.count; i++) { + RoomPKChooseUserModel * model = [self.redUserArray safeObjectAtIndex1:i]; + if (model.uid.integerValue <= 0) { + continue; + } + NSMutableDictionary * data =[[model model2dictionary] mutableCopy]; + [data removeObjectForKey:@"title"]; + [data removeObjectForKey:@"imageName"]; + [data removeObjectForKey:@"userUrl"]; + [data removeObjectForKey:@"isSelect"]; + [data removeObjectForKey:@"isEnableChoose"]; + [dic setValue:data forKey:model.uid]; + } + + for (int i = 0 ; i< self.blueUserArray.count; i++) { + RoomPKChooseUserModel * model = [self.blueUserArray safeObjectAtIndex1:i]; + if (model.uid.integerValue <= 0) { + continue; + } + NSMutableDictionary * data =[[model model2dictionary] mutableCopy]; + [data removeObjectForKey:@"title"]; + [data removeObjectForKey:@"imageName"]; + [data removeObjectForKey:@"userUrl"]; + [data removeObjectForKey:@"isSelect"]; + [data removeObjectForKey:@"isEnableChoose"]; + [dic setValue:data forKey:model.uid]; + } + + if (dic.allKeys.count > 0) { + AttachmentModel * attachment = [[AttachmentModel alloc] init]; + attachment.first = CustomMessageType_Room_PK; + attachment.second = Custom_Message_Sub_Room_PK_Manager_Up_Mic; + attachment.data = dic; + NSString *sessionID = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.roomId]; + NIMMessage *message = [[NIMMessage alloc]init]; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachment; + message.messageObject = object; + //构造会话 + NIMSession *session = [NIMSession session:sessionID type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; + } + } + [self.navigationController popViewControllerAnimated:YES]; +} + +#pragma mark - Event Response +- (void)createPKButtonAction:(UIButton *)sender { + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; + [self.presenter openRoomPK:roomUid]; +} + +- (void)closePKButtonAction:(UIButton *)sender { + NSString * title = @"结束PK,会关闭现在进行的PK并恢复普通房间模式,确定关闭当前PK吗?"; + [TTPopup alertWithMessage:title confirmHandler:^{ + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; + [self.presenter closeRoomPK:roomUid]; + } cancelHandler:^{ + + }]; + +} + +- (void)onceAgainPKButtonAction:(UIButton *)sender { + NSString * title = @"创建此PK,会覆盖现在进行的PK,\n 确定覆盖当前PK吗?"; + [TTPopup alertWithMessage:title confirmHandler:^{ + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; + [self.presenter createRoomPKMode:2 voteMode:self.voteType duration:self.duraTime roomUid:roomUid]; + } cancelHandler:^{ + + }]; +} + +- (void)rightNavAction:(UIButton *)sender { + XPRoomPKRecordViewController * recordVC = [[XPRoomPKRecordViewController alloc] init]; + recordVC.roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; + [self.navigationController pushViewController:recordVC animated:YES]; +} + +- (void)redDidTapRecognizer:(UITapGestureRecognizer *)tap { + XPRoomPKSelectUserView * chooseUserView = [[XPRoomPKSelectUserView alloc] init]; + chooseUserView.delegate = self; + chooseUserView.redUserArray = self.redUserArray; + chooseUserView.blueUserArray = self.blueUserArray; + chooseUserView.groupType = GroupType_Red; + chooseUserView.microQueueArray = self.hostDelegate.getMicroQueue.allValues; + [TTPopup popupView:chooseUserView style:TTPopupStyleAlert]; +} + +- (void)blueDidTapRecognizer:(UITapGestureRecognizer *)tap { + XPRoomPKSelectUserView * chooseUserView = [[XPRoomPKSelectUserView alloc] init]; + chooseUserView.delegate = self; + chooseUserView.redUserArray = self.redUserArray; + chooseUserView.blueUserArray = self.blueUserArray; + chooseUserView.groupType = GroupType_Blue; + chooseUserView.microQueueArray = self.hostDelegate.getMicroQueue.allValues; + [TTPopup popupView:chooseUserView style:TTPopupStyleAlert]; +} + +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + _tableView.scrollEnabled = NO; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPRoomPKVoteTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPRoomPKVoteTableViewCell class])]; + [_tableView registerClass:[XPRoomPKTypeTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPRoomPKTypeTableViewCell class])]; + [_tableView registerClass:[XPRoomPKTimeTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPRoomPKTimeTableViewCell class])]; + } + return _tableView; +} + +- (UIStackView *)createPKStackView { + if (!_createPKStackView) { + _createPKStackView = [[UIStackView alloc] init]; + _createPKStackView.axis = UILayoutConstraintAxisVertical; + _createPKStackView.distribution = UIStackViewDistributionFill; + _createPKStackView.alignment = UIStackViewAlignmentFill; + _createPKStackView.spacing = 10; + } + return _createPKStackView; +} + +- (UIButton *)createPKButton { + if (!_createPKButton) { + _createPKButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_createPKButton setTitle:YMLocalizedString(@"XPRoomPKViewController5") forState:UIControlStateNormal]; + [_createPKButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _createPKButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_createPKButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _createPKButton.layer.masksToBounds = YES; + _createPKButton.layer.cornerRadius = 22; + [_createPKButton addTarget:self action:@selector(createPKButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _createPKButton; +} + +- (UIButton *)onceAgainPKButton { + if (!_onceAgainPKButton) { + _onceAgainPKButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_onceAgainPKButton setTitle:YMLocalizedString(@"XPRoomPKViewController6") forState:UIControlStateNormal]; + [_onceAgainPKButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _onceAgainPKButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_onceAgainPKButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _onceAgainPKButton.layer.masksToBounds = YES; + _onceAgainPKButton.layer.cornerRadius = 22; + [_onceAgainPKButton addTarget:self action:@selector(onceAgainPKButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _onceAgainPKButton.hidden = YES; + } + return _onceAgainPKButton; +} + +- (UIButton *)closePKButton { + if (!_closePKButton) { + _closePKButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_closePKButton setTitle:YMLocalizedString(@"XPRoomPKViewController7") forState:UIControlStateNormal]; + [_closePKButton setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateNormal]; + _closePKButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_closePKButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor disableButtonColor], [DJDKMIMOMColor disableButtonColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _closePKButton.layer.masksToBounds = YES; + _closePKButton.layer.cornerRadius = 22; + [_closePKButton addTarget:self action:@selector(closePKButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _closePKButton.hidden= YES; + } + return _closePKButton; +} + + +- (UIView *)userContainerView { + if (!_userContainerView) { + _userContainerView = [[UIView alloc] init]; + _userContainerView.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; + } + return _userContainerView; +} + +- (UIImageView *)roomPKLogoImageView { + if (!_roomPKLogoImageView) { + _roomPKLogoImageView = [[UIImageView alloc] init]; + _roomPKLogoImageView.userInteractionEnabled = YES; + _roomPKLogoImageView.image = [UIImage imageNamed:@"room_pk_vs_logo"]; + } + return _roomPKLogoImageView; +} + + + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatConsequentRegard.h b/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatConsequentRegard.h deleted file mode 100644 index 48495f52..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatConsequentRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomPKResultView.h -// YUMI -// -// Created by YUMI on 2022/3/31. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ChamberCombatAbstractMatrix; -@interface YUMIChamberCombatConsequentRegard : UIView -@property (nonatomic,strong) ChamberCombatAbstractMatrix *chamberCombatConsequentAbstractMatrix; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatConsequentRegard.m b/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatConsequentRegard.m deleted file mode 100644 index 3a971874..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatConsequentRegard.m +++ /dev/null @@ -1,763 +0,0 @@ -// -// YMRoomPKResultView.m -// YUMI -// -// Created by YUMI on 2022/3/31. -// - -#import "YUMIChamberCombatConsequentRegard.h" -#import -#import "YUMIMacroUitls.h" -#import "NetIndicateRegard.h" -#import "AccountAbstractStorage.h" -#import "DJDKMIMOMColor.h" -#import "NSArray+Safe.h" -#import "ChamberCombatAbstractMatrix.h" -#import "YUMIRomCombatConsequentChampionDesignation.h" - -#define kRedTeamColor UIColorFromRGB(0xfd4d0e) -#define kBlueTeamColor UIColorFromRGB(0x59b9fb) - - -@interface YUMIChamberCombatConsequentRegard () -@property (nonatomic,strong) UIImageView *apexIndicateRegard; -@property (nonatomic,strong) UIImageView *extremeIndicateRegard; -@property (nonatomic,strong) UIImageView *satisfperformanceIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *thresholdConsumerRegard; -@property (nonatomic,strong) NetIndicateRegard *instantConsumerRegard; -@property (nonatomic,strong) NetIndicateRegard *tertiusConsumerRegard; -@property (nonatomic,strong) NetIndicateRegard *fourthConsumerRegard; -@property (nonatomic,strong) NetIndicateRegard *fifthConsumerRegard; -@property (nonatomic,strong) UIImageView *mvpIndicateRegard; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UIView * combateConsumerContaierRegard; -@property (nonatomic,strong) UILabel *combateConsumerSequencignation; -@property (nonatomic,strong) UILabel *failSequencSequencignation; -@property (nonatomic,strong) YUMIRomCombatConsequentChampionDesignation *fightEarnSequencigntion; -@property (nonatomic,strong) YUMIRomCombatConsequentChampionDesignation *guardFeatureSequencigntion; -@property (nonatomic,strong) YUMIRomCombatConsequentChampionDesignation *guardEarnSequencigntion; -@property (nonatomic,strong) UIButton *consequentBtuton; -@property (nonatomic,strong) UIButton *examineBtuton; -@property (nonatomic,strong) NSArray *consumerRegardGarment; -@property (nonatomic,assign) BOOL isChecSeparate; -@end - -@implementation YUMIChamberCombatConsequentRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.satisfperformanceIndicateRegard]; - [self addSubview:self.apexIndicateRegard]; - [self addSubview:self.extremeIndicateRegard]; - - [self.satisfperformanceIndicateRegard addSubview:self.stackView]; - [self.satisfperformanceIndicateRegard addSubview:self.consequentBtuton]; - [self.satisfperformanceIndicateRegard addSubview:self.failSequencSequencignation]; - [self.satisfperformanceIndicateRegard addSubview:self.examineBtuton]; - - [self.stackView addArrangedSubview:self.combateConsumerContaierRegard]; - [self.stackView addArrangedSubview:self.fightEarnSequencigntion]; - [self.stackView addArrangedSubview:self.guardFeatureSequencigntion]; - [self.stackView addArrangedSubview:self.guardEarnSequencigntion]; - - [self.combateConsumerContaierRegard addSubview:self.combateConsumerSequencignation]; - [self.combateConsumerContaierRegard addSubview:self.thresholdConsumerRegard]; - [self.combateConsumerContaierRegard addSubview:self.instantConsumerRegard]; - [self.combateConsumerContaierRegard addSubview:self.tertiusConsumerRegard]; - [self.combateConsumerContaierRegard addSubview:self.fourthConsumerRegard]; - [self.combateConsumerContaierRegard addSubview:self.fifthConsumerRegard]; - [self.combateConsumerContaierRegard addSubview:self.mvpIndicateRegard]; - self.consumerRegardGarment = @[self.thresholdConsumerRegard, self.instantConsumerRegard, self.tertiusConsumerRegard, self.fourthConsumerRegard, self.fifthConsumerRegard]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth); - make.bottom.mas_equalTo(self.extremeIndicateRegard.mas_bottom); - }]; - - [self.apexIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.top.mas_equalTo(self); - make.width.mas_equalTo(385); - make.height.mas_equalTo(243); - }]; - - [self.satisfperformanceIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.apexIndicateRegard).offset(97); - make.left.right.mas_equalTo(self); - make.height.mas_equalTo(170); - }]; - - [self.extremeIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.satisfperformanceIndicateRegard.mas_bottom).offset(-6); - make.centerX.mas_equalTo(self); - make.width.mas_equalTo(375); - make.height.mas_equalTo(16); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.satisfperformanceIndicateRegard).offset(48); - make.left.mas_equalTo(self.satisfperformanceIndicateRegard).offset(20); - make.right.mas_equalTo(self.satisfperformanceIndicateRegard); - }]; - - [self.combateConsumerContaierRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(35); - }]; - - [self.fightEarnSequencigntion mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(15); - }]; - - [self.guardEarnSequencigntion mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(15); - }]; - - [self.guardFeatureSequencigntion mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(15); - }]; - - [self.consequentBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.bottom.mas_equalTo(self.failSequencSequencignation.mas_top).offset(-10); - make.width.mas_equalTo(230); - make.height.mas_equalTo(30); - }]; - - [self.failSequencSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.examineBtuton.mas_top).offset(-10); - make.left.right.mas_equalTo(self.satisfperformanceIndicateRegard); - }]; - - [self.examineBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(16); - make.left.right.mas_equalTo(self.satisfperformanceIndicateRegard); - make.bottom.mas_equalTo(self.satisfperformanceIndicateRegard.mas_bottom).offset(-15); - }]; - - [self.combateConsumerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.centerY.mas_equalTo(self.combateConsumerContaierRegard); - }]; - - [self.thresholdConsumerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(35, 35)); - make.left.mas_equalTo(self.combateConsumerSequencignation.mas_right).offset(10); - make.centerY.mas_equalTo(self.combateConsumerContaierRegard); - }]; - - [self.instantConsumerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.thresholdConsumerRegard); - make.left.mas_equalTo(self.thresholdConsumerRegard.mas_right).offset(5); - }]; - - [self.tertiusConsumerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.thresholdConsumerRegard); - make.left.mas_equalTo(self.instantConsumerRegard.mas_right).offset(5); - }]; - - [self.fourthConsumerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.thresholdConsumerRegard); - make.left.mas_equalTo(self.tertiusConsumerRegard.mas_right).offset(5); - }]; - - [self.fifthConsumerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.thresholdConsumerRegard); - make.left.mas_equalTo(self.fourthConsumerRegard.mas_right).offset(5); - }]; - - [self.mvpIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.thresholdConsumerRegard); - make.top.mas_equalTo(self.thresholdConsumerRegard.mas_top).offset(-3); - make.width.mas_equalTo(35); - make.height.mas_equalTo(17); - }]; -} - -- (void)chamberSquadComponentConsumerIntelligenceportrait:(NSArray *)members mvpUserId:(NSInteger)mvpUserId{ - self.mvpIndicateRegard.hidden = YES; - for (int i = 0; i< self.consumerRegardGarment.count; i++) { - NetIndicateRegard * imageView = [self.consumerRegardGarment secureGroalTowardsIndictowardsrix1:i]; - if (i < members.count) { - ChamberCombatSquadConsumerMatrix * userInfo = [members secureGroalTowardsIndictowardsrix1:i]; - imageView.imageUrl = userInfo.avatar; - imageView.hidden = NO; - if (mvpUserId == userInfo.uid.integerValue) { - self.mvpIndicateRegard.hidden = NO; - [self.mvpIndicateRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(imageView); - make.top.mas_equalTo(self.thresholdConsumerRegard.mas_top).offset(3); - make.width.mas_equalTo(35); - make.height.mas_equalTo(17); - }]; - } - } else { - imageView.hidden = YES; - } - } -} - -#pragma mark - Event Response -- (void)examineBtutonPerformance:(UIButton *)sender { - self.isChecSeparate = !self.isChecSeparate; - if (self.chamberCombatConsequentAbstractMatrix) { - ChamberCombatSquadMatrix * redTeam; - ChamberCombatSquadMatrix * blueTeam; - GroupGenre myType = GroupGenre_default; - for (ChamberCombatSquadMatrix * teamInfo in _chamberCombatConsequentAbstractMatrix.teams) { - if (myType == GroupGenre_default) { - for (ChamberCombatSquadConsumerMatrix * userInfo in teamInfo.teamMembers) { - if (userInfo.uid.integerValue == [AccountAbstractStorage instance].acquireCid.integerValue) { - myType = teamInfo.team; - break; - } - } - } - - if (teamInfo.team == GroupGenre_Red) { - redTeam = teamInfo; - } else if(teamInfo.team == GroupGenre_Blue) { - blueTeam = teamInfo; - } - } - if (myType == GroupGenre_Red) { - [self shankMieyInDeficitCombatSquad:redTeam bluePKTeam:blueTeam]; - } else if(myType == GroupGenre_Blue) { - [self shankMieyInBlueCombatSquad:redTeam bluePKTeam:blueTeam]; - } else { - [self shankMieyInAudienceCombatSquad:redTeam bluePKTeam:blueTeam]; - } - } -} - -#pragma mark - Getters And Setters -- (void)setChamberCombatConsequentAbstractMatrix:(ChamberCombatAbstractMatrix *)chamberCombatConsequentAbstractMatrix { - _chamberCombatConsequentAbstractMatrix = chamberCombatConsequentAbstractMatrix; - if (_chamberCombatConsequentAbstractMatrix) { - ChamberCombatSquadMatrix * redTeam; - ChamberCombatSquadMatrix * blueTeam; - GroupGenre myType = GroupGenre_default; - for (ChamberCombatSquadMatrix * teamInfo in _chamberCombatConsequentAbstractMatrix.teams) { - if (teamInfo.team == GroupGenre_Red) { - redTeam = teamInfo; - } else if(teamInfo.team == GroupGenre_Blue) { - blueTeam = teamInfo; - } - - if (myType == GroupGenre_default) { - for (ChamberCombatSquadConsumerMatrix * userInfo in teamInfo.teamMembers) { - if (userInfo.uid.integerValue == [AccountAbstractStorage instance].acquireCid.integerValue) { - myType = teamInfo.team; - break; - } - } - } - } - self.failSequencSequencignation.hidden = YES; - if (myType == GroupGenre_Red) { - [self shankMieyInDeficitCombatSquad:redTeam bluePKTeam:blueTeam]; - } else if(myType == GroupGenre_Blue) { - [self shankMieyInBlueCombatSquad:redTeam bluePKTeam:blueTeam]; - } else { - [self shankMieyInAudienceCombatSquad:redTeam bluePKTeam:blueTeam]; - } - } -} -- (void)shankMieyInDeficitCombatSquad:(ChamberCombatSquadMatrix *)redPKTeam bluePKTeam:(ChamberCombatSquadMatrix *)bluePKTeam { - if (self.isChecSeparate) { - - if (self.chamberCombatConsequentAbstractMatrix.result == ChamberCombatResultGenre_Draw) { - - self.extremeIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_bottom_loser_background"]; - self.apexIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_top_draw_background"]; - } else if(self.chamberCombatConsequentAbstractMatrix.result == ChamberCombatResultGenre_Blue) { - - self.apexIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_top_win_background"]; - self.extremeIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_bottom_win_background"]; - } else { - self.apexIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_top_loser_background"]; - self.extremeIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_bottom_loser_background"]; - } - - [self.consequentBtuton setTitle:@"· 蓝队战绩 ·" forState:UIControlStateNormal]; - [self.consequentBtuton setTitleColor:kBlueTeamColor forState:UIControlStateNormal]; - [self.examineBtuton setTitle:@"查看我的战绩>" forState:UIControlStateNormal]; - [self.examineBtuton setTitleColor:kRedTeamColor forState:UIControlStateNormal]; - self.fightEarnSequencigntion.groupType = GroupGenre_Blue; - self.guardEarnSequencigntion.groupType = GroupGenre_Blue; - self.guardFeatureSequencigntion.groupType = GroupGenre_Blue; - self.fightEarnSequencigntion.content = [NSString stringWithFormat:@"%lld", bluePKTeam.score]; - if (bluePKTeam.protector.nick.length) { - self.guardFeatureSequencigntion.content = [NSString stringWithFormat:@"%@", bluePKTeam.protector.nick]; - } else { - self.guardFeatureSequencigntion.content = YMLocalizedString(@"YUMI_Room_PK_Result_View_2"); - } - self.guardEarnSequencigntion.content = [NSString stringWithFormat:@"%lld", bluePKTeam.protecScore]; - [self chamberSquadComponentConsumerIntelligenceportrait:bluePKTeam.teamMembers mvpUserId:bluePKTeam.mvp]; - CGFloat bgHeight = 224; - if (self.chamberCombatConsequentAbstractMatrix.result == ChamberCombatResultGenre_Draw || self.chamberCombatConsequentAbstractMatrix.voteMode == ChamberCombatVoteModeGenre_NumberPerson) { - self.guardEarnSequencigntion.hidden = YES; - self.guardFeatureSequencigntion.hidden = YES; - } else { - self.guardEarnSequencigntion.hidden = NO; - self.guardFeatureSequencigntion.hidden = NO; - bgHeight = 264; - } - [self.satisfperformanceIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(bgHeight); - }]; - - return; - } - - if (self.chamberCombatConsequentAbstractMatrix.result == ChamberCombatResultGenre_Red) { - self.apexIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_top_win_background"]; - self.extremeIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_bottom_win_background"]; - } else if (self.chamberCombatConsequentAbstractMatrix.result == ChamberCombatResultGenre_Blue) { - self.apexIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_top_loser_background"]; - self.extremeIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_bottom_loser_background"]; - self.failSequencSequencignation.hidden = NO; - } else { - self.apexIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_top_draw_background"]; - self.extremeIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_bottom_loser_background"]; - } - [self.consequentBtuton setTitle:@"· 红队战绩 ·" forState:UIControlStateNormal]; - [self.examineBtuton setTitle:@"查看对方战绩>" forState:UIControlStateNormal]; - [self.consequentBtuton setTitleColor:kRedTeamColor forState:UIControlStateNormal]; - [self.examineBtuton setTitleColor:kBlueTeamColor forState:UIControlStateNormal]; - self.fightEarnSequencigntion.groupType = GroupGenre_Red; - self.guardEarnSequencigntion.groupType = GroupGenre_Red; - self.guardFeatureSequencigntion.groupType = GroupGenre_Red; - self.fightEarnSequencigntion.content = [NSString stringWithFormat:@"%lld", redPKTeam.score]; - if (redPKTeam.protector.nick.length) { - self.guardFeatureSequencigntion.content = [NSString stringWithFormat:@"%@", redPKTeam.protector.nick]; - } else { - self.guardFeatureSequencigntion.content = YMLocalizedString(@"YUMI_Room_PK_Result_View_5"); - } - self.guardEarnSequencigntion.content = [NSString stringWithFormat:@"%lld", redPKTeam.protecScore]; - [self chamberSquadComponentConsumerIntelligenceportrait:redPKTeam.teamMembers mvpUserId:redPKTeam.mvp]; - - CGFloat bgHeight = 224; - if (self.chamberCombatConsequentAbstractMatrix.result == ChamberCombatResultGenre_Draw || self.chamberCombatConsequentAbstractMatrix.voteMode == ChamberCombatVoteModeGenre_NumberPerson) { - self.guardEarnSequencigntion.hidden = YES; - self.guardFeatureSequencigntion.hidden = YES; - } else { - self.guardEarnSequencigntion.hidden = NO; - self.guardFeatureSequencigntion.hidden = NO; - bgHeight = 264; - } - [self.satisfperformanceIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(bgHeight); - }]; -} - -- (void)shankMieyInBlueCombatSquad:(ChamberCombatSquadMatrix *)redPKTeam bluePKTeam:(ChamberCombatSquadMatrix *)bluePKTeam { - if (self.isChecSeparate) { - if (self.chamberCombatConsequentAbstractMatrix.result == ChamberCombatResultGenre_Draw) { - - self.extremeIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_bottom_loser_background"]; - self.apexIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_top_draw_background"]; - } else if(self.chamberCombatConsequentAbstractMatrix.result == ChamberCombatResultGenre_Blue) { - - self.apexIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_top_loser_background"]; - self.extremeIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_bottom_loser_background"]; - } else { - self.apexIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_top_win_background"]; - self.extremeIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_bottom_win_background"]; - } - - [self.consequentBtuton setTitle:@"· 红队战绩 ·" forState:UIControlStateNormal]; - [self.consequentBtuton setTitleColor:kRedTeamColor forState:UIControlStateNormal]; - [self.examineBtuton setTitle:@"查看我的战绩>" forState:UIControlStateNormal]; - [self.examineBtuton setTitleColor:kBlueTeamColor forState:UIControlStateNormal]; - self.fightEarnSequencigntion.groupType = GroupGenre_Red; - self.guardEarnSequencigntion.groupType = GroupGenre_Red; - self.guardFeatureSequencigntion.groupType = GroupGenre_Red; - self.fightEarnSequencigntion.content = [NSString stringWithFormat:@"%lld", redPKTeam.score]; - if (redPKTeam.protector.nick.length) { - self.guardFeatureSequencigntion.content = [NSString stringWithFormat:@"%@", redPKTeam.protector.nick]; - } else { - self.guardFeatureSequencigntion.content = YMLocalizedString(@"YUMI_Room_PK_Result_View_8"); - } - self.guardEarnSequencigntion.content = [NSString stringWithFormat:@"%lld", redPKTeam.protecScore]; - [self chamberSquadComponentConsumerIntelligenceportrait:redPKTeam.teamMembers mvpUserId:redPKTeam.mvp]; - CGFloat bgHeight = 224; - if (self.chamberCombatConsequentAbstractMatrix.result == ChamberCombatResultGenre_Draw || self.chamberCombatConsequentAbstractMatrix.voteMode == ChamberCombatVoteModeGenre_NumberPerson) { - self.guardEarnSequencigntion.hidden = YES; - self.guardFeatureSequencigntion.hidden = YES; - } else { - self.guardEarnSequencigntion.hidden = NO; - self.guardFeatureSequencigntion.hidden = NO; - bgHeight = 264; - } - [self.satisfperformanceIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(bgHeight); - }]; - return; - } - - if (self.chamberCombatConsequentAbstractMatrix.result == ChamberCombatResultGenre_Blue) { - self.apexIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_top_win_background"]; - self.extremeIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_bottom_win_background"]; - } else if (self.chamberCombatConsequentAbstractMatrix.result == ChamberCombatResultGenre_Red) { - self.failSequencSequencignation.hidden = NO; - self.apexIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_top_loser_background"]; - self.extremeIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_bottom_loser_background"]; - } else { - self.extremeIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_bottom_loser_background"]; - self.apexIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_top_draw_background"]; - } - [self.consequentBtuton setTitle:@"· 蓝队战绩 ·" forState:UIControlStateNormal]; - [self.consequentBtuton setTitleColor:kBlueTeamColor forState:UIControlStateNormal]; - [self.examineBtuton setTitle:@"查看红队战绩>" forState:UIControlStateNormal]; - [self.examineBtuton setTitleColor:kRedTeamColor forState:UIControlStateNormal]; - - self.fightEarnSequencigntion.groupType = GroupGenre_Blue; - self.guardEarnSequencigntion.groupType = GroupGenre_Blue; - self.guardFeatureSequencigntion.groupType = GroupGenre_Blue; - self.fightEarnSequencigntion.content = [NSString stringWithFormat:@"%lld", bluePKTeam.score]; - if (bluePKTeam.protector.nick.length) { - self.guardFeatureSequencigntion.content = [NSString stringWithFormat:@"%@", bluePKTeam.protector.nick]; - } else { - self.guardFeatureSequencigntion.content = YMLocalizedString(@"YUMI_Room_PK_Result_View_11"); - } - self.guardEarnSequencigntion.content = [NSString stringWithFormat:@"%lld", bluePKTeam.protecScore]; - [self chamberSquadComponentConsumerIntelligenceportrait:bluePKTeam.teamMembers mvpUserId:bluePKTeam.mvp]; - CGFloat bgHeight = 204; - if (self.chamberCombatConsequentAbstractMatrix.result == ChamberCombatResultGenre_Draw || self.chamberCombatConsequentAbstractMatrix.voteMode == ChamberCombatVoteModeGenre_NumberPerson) { - self.guardEarnSequencigntion.hidden = YES; - self.guardFeatureSequencigntion.hidden = YES; - } else { - self.guardEarnSequencigntion.hidden = NO; - self.guardFeatureSequencigntion.hidden = NO; - bgHeight = 264; - } - [self.satisfperformanceIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(bgHeight); - }]; -} - -- (void)shankMieyInAudienceCombatSquad:(ChamberCombatSquadMatrix *)redPKTeam bluePKTeam:(ChamberCombatSquadMatrix *)bluePKTeam { - - if (self.isChecSeparate) { - self.apexIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_top_loser_background"]; - self.extremeIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_bottom_loser_background"]; - if (self.chamberCombatConsequentAbstractMatrix.result == ChamberCombatResultGenre_Blue) { - [self.consequentBtuton setTitle:@"· 红队战绩 ·" forState:UIControlStateNormal]; - [self.consequentBtuton setTitleColor:kRedTeamColor forState:UIControlStateNormal]; - [self.examineBtuton setTitle:@"查看蓝队战绩>" forState:UIControlStateNormal]; - [self.examineBtuton setTitleColor:kBlueTeamColor forState:UIControlStateNormal]; - self.fightEarnSequencigntion.groupType = GroupGenre_Red; - self.guardEarnSequencigntion.groupType = GroupGenre_Red; - self.guardFeatureSequencigntion.groupType = GroupGenre_Red; - self.fightEarnSequencigntion.content = [NSString stringWithFormat:@"%lld", redPKTeam.score]; - if (redPKTeam.protector.nick.length) { - self.guardFeatureSequencigntion.content = [NSString stringWithFormat:@"%@", redPKTeam.protector.nick]; - } else { - self.guardFeatureSequencigntion.content = YMLocalizedString(@"YUMI_Room_PK_Result_View_14"); - } - self.guardEarnSequencigntion.content = [NSString stringWithFormat:@"%lld", redPKTeam.protecScore]; - } else { - [self.consequentBtuton setTitle:@"· 蓝队战绩 ·" forState:UIControlStateNormal]; - [self.consequentBtuton setTitleColor:kBlueTeamColor forState:UIControlStateNormal]; - [self.examineBtuton setTitle:@"查看红队战绩>" forState:UIControlStateNormal]; - [self.examineBtuton setTitleColor:kRedTeamColor forState:UIControlStateNormal]; - self.fightEarnSequencigntion.groupType = GroupGenre_Blue; - self.guardEarnSequencigntion.groupType = GroupGenre_Blue; - self.guardFeatureSequencigntion.groupType = GroupGenre_Blue; - self.fightEarnSequencigntion.content = [NSString stringWithFormat:@"%lld", bluePKTeam.score]; - if (bluePKTeam.protector.nick.length) { - self.guardFeatureSequencigntion.content = [NSString stringWithFormat:@"%@", bluePKTeam.protector.nick]; - } else { - self.guardFeatureSequencigntion.content = YMLocalizedString(@"YUMI_Room_PK_Result_View_17"); - } - self.guardEarnSequencigntion.content = [NSString stringWithFormat:@"%lld", bluePKTeam.protecScore]; - } - CGFloat bgHeight = 204; - if (self.chamberCombatConsequentAbstractMatrix.voteMode == ChamberCombatVoteModeGenre_GiftValue) { - self.guardEarnSequencigntion.hidden = NO; - self.guardFeatureSequencigntion.hidden = NO; - bgHeight = 264; - } else { - self.guardEarnSequencigntion.hidden = YES; - self.guardFeatureSequencigntion.hidden = YES; - bgHeight = 204; - } - - [self chamberSquadComponentConsumerIntelligenceportrait:bluePKTeam.teamMembers mvpUserId:bluePKTeam.mvp]; - [self.satisfperformanceIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(bgHeight); - }]; - return; - } - - - if (self.chamberCombatConsequentAbstractMatrix.result == ChamberCombatResultGenre_Blue) { - self.apexIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_top_win_background"]; - self.extremeIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_bottom_win_background"]; - [self.consequentBtuton setTitle:@"· 蓝队胜利 ·" forState:UIControlStateNormal]; - [self.consequentBtuton setTitleColor:kBlueTeamColor forState:UIControlStateNormal]; - [self.examineBtuton setTitle:@"查看红队战绩>" forState:UIControlStateNormal]; - [self.examineBtuton setTitleColor:kRedTeamColor forState:UIControlStateNormal]; - - self.fightEarnSequencigntion.groupType = GroupGenre_Blue; - self.guardEarnSequencigntion.groupType = GroupGenre_Blue; - self.guardFeatureSequencigntion.groupType = GroupGenre_Blue; - self.fightEarnSequencigntion.content = [NSString stringWithFormat:@"%lld", bluePKTeam.score]; - if (bluePKTeam.protector.nick.length) { - self.guardFeatureSequencigntion.content = [NSString stringWithFormat:@"%@", bluePKTeam.protector.nick]; - } else { - self.guardFeatureSequencigntion.content = YMLocalizedString(@"YUMI_Room_PK_Result_View_20"); - } - self.guardEarnSequencigntion.content = [NSString stringWithFormat:@"%lld", bluePKTeam.protecScore]; - [self chamberSquadComponentConsumerIntelligenceportrait:bluePKTeam.teamMembers mvpUserId:bluePKTeam.mvp]; - } else if (self.chamberCombatConsequentAbstractMatrix.result == ChamberCombatResultGenre_Red) { - self.apexIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_top_win_background"]; - self.extremeIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_bottom_win_background"]; - [self.consequentBtuton setTitle:@"· 红队胜利 ·" forState:UIControlStateNormal]; - [self.consequentBtuton setTitleColor:kRedTeamColor forState:UIControlStateNormal]; - [self.examineBtuton setTitle:@"查看蓝队战绩>" forState:UIControlStateNormal]; - [self.examineBtuton setTitleColor:kBlueTeamColor forState:UIControlStateNormal]; - - self.fightEarnSequencigntion.groupType = GroupGenre_Red; - self.guardEarnSequencigntion.groupType = GroupGenre_Red; - self.guardFeatureSequencigntion.groupType = GroupGenre_Red; - self.fightEarnSequencigntion.content = [NSString stringWithFormat:@"%lld", redPKTeam.score]; - if (redPKTeam.protector.nick.length) { - self.guardFeatureSequencigntion.content = [NSString stringWithFormat:@"%@", redPKTeam.protector.nick]; - } else { - self.guardFeatureSequencigntion.content = YMLocalizedString(@"YUMI_Room_PK_Result_View_23"); - } - self.guardEarnSequencigntion.content = [NSString stringWithFormat:@"%lld", redPKTeam.protecScore]; - [self chamberSquadComponentConsumerIntelligenceportrait:redPKTeam.teamMembers mvpUserId:redPKTeam.mvp]; - } else { - self.extremeIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_bottom_loser_background"]; - self.apexIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_top_draw_background"]; - [self.consequentBtuton setTitle:@"· 势均力敌 ·" forState:UIControlStateNormal]; - [self.consequentBtuton setTitleColor:kRedTeamColor forState:UIControlStateNormal]; - self.examineBtuton.hidden = YES; - self.fightEarnSequencigntion.groupType = GroupGenre_Red; - self.combateConsumerContaierRegard.hidden = YES; - self.fightEarnSequencigntion.title = @"本局平局 战斗值:"; - self.fightEarnSequencigntion.content = [NSString stringWithFormat:@"%lld", redPKTeam.score]; - [self chamberSquadComponentConsumerIntelligenceportrait:redPKTeam.teamMembers mvpUserId:redPKTeam.mvp]; - } - - CGFloat bgHeight = 200; - if (self.chamberCombatConsequentAbstractMatrix.result == ChamberCombatResultGenre_Draw || self.chamberCombatConsequentAbstractMatrix.voteMode == ChamberCombatVoteModeGenre_NumberPerson) { - self.guardEarnSequencigntion.hidden = YES; - self.guardFeatureSequencigntion.hidden = YES; - } else { - self.guardEarnSequencigntion.hidden = NO; - self.guardFeatureSequencigntion.hidden = NO; - bgHeight = 264; - } - [self.satisfperformanceIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(bgHeight); - }]; -} - -- (UIImageView *)apexIndicateRegard { - if (!_apexIndicateRegard) { - _apexIndicateRegard = [[UIImageView alloc] init]; - _apexIndicateRegard.userInteractionEnabled = YES; - } - return _apexIndicateRegard; -} - -- (UIImageView *)satisfperformanceIndicateRegard { - if (!_satisfperformanceIndicateRegard) { - _satisfperformanceIndicateRegard = [[UIImageView alloc] init]; - _satisfperformanceIndicateRegard.userInteractionEnabled = YES; - _satisfperformanceIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_matter_background"]; - } - return _satisfperformanceIndicateRegard; -} - -- (UIImageView *)extremeIndicateRegard { - if (!_extremeIndicateRegard) { - _extremeIndicateRegard = [[UIImageView alloc] init]; - _extremeIndicateRegard.userInteractionEnabled = YES; - } - return _extremeIndicateRegard; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 10; - } - return _stackView; -} - -- (UIView *)combateConsumerContaierRegard { - if (!_combateConsumerContaierRegard) { - _combateConsumerContaierRegard = [[UIView alloc] init]; - _combateConsumerContaierRegard.backgroundColor = [UIColor clearColor]; - } - return _combateConsumerContaierRegard; -} - -- (UILabel *)combateConsumerSequencignation { - if (!_combateConsumerSequencignation) { - _combateConsumerSequencignation = [[UILabel alloc] init]; - _combateConsumerSequencignation.font = [UIFont systemFontOfSize:14]; - _combateConsumerSequencignation.textColor = [UIColor whiteColor]; - _combateConsumerSequencignation.text = @"PK选手:"; - } - return _combateConsumerSequencignation; -} - -- (YUMIRomCombatConsequentChampionDesignation *)fightEarnSequencigntion { - if (!_fightEarnSequencigntion) { - _fightEarnSequencigntion = [[YUMIRomCombatConsequentChampionDesignation alloc] init]; - _fightEarnSequencigntion.title = @"战斗值:"; - } - return _fightEarnSequencigntion; -} - -- (YUMIRomCombatConsequentChampionDesignation *)guardFeatureSequencigntion { - if (!_guardFeatureSequencigntion) { - _guardFeatureSequencigntion = [[YUMIRomCombatConsequentChampionDesignation alloc] init]; - _guardFeatureSequencigntion.title = @"守护者:"; - } - return _guardFeatureSequencigntion; -} - -- (YUMIRomCombatConsequentChampionDesignation *)guardEarnSequencigntion { - if (!_guardEarnSequencigntion) { - _guardEarnSequencigntion = [[YUMIRomCombatConsequentChampionDesignation alloc] init]; - _guardEarnSequencigntion.title = @"守护值:"; - } - return _guardEarnSequencigntion; -} - -- (UIButton *)consequentBtuton { - if (!_consequentBtuton) { - _consequentBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_consequentBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _consequentBtuton.titleLabel.font = [UIFont systemFontOfSize:16]; - [_consequentBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_scope_pk_result_loser_result_background"] forState:UIControlStateNormal]; - } - return _consequentBtuton; -} - -- (UIButton *)examineBtuton { - if (!_examineBtuton) { - _examineBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_examineBtuton setTitle:YMLocalizedString(@"YUMI_Room_PK_Result_View_30") forState:UIControlStateNormal]; - [_examineBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _examineBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - _examineBtuton.layer.masksToBounds = YES; - _examineBtuton.layer.cornerRadius = 10; - [_examineBtuton addTarget:self action:@selector(examineBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _examineBtuton; -} - -- (NetIndicateRegard *)thresholdConsumerRegard { - if (!_thresholdConsumerRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _thresholdConsumerRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _thresholdConsumerRegard.layer.masksToBounds = YES; - _thresholdConsumerRegard.layer.cornerRadius = 35/2; - _thresholdConsumerRegard.layer.borderWidth = 1; - _thresholdConsumerRegard.userInteractionEnabled = YES; - } - return _thresholdConsumerRegard; -} - -- (NetIndicateRegard *)instantConsumerRegard { - if (!_instantConsumerRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _instantConsumerRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _instantConsumerRegard.layer.masksToBounds = YES; - _instantConsumerRegard.layer.cornerRadius = 35/2; - _instantConsumerRegard.layer.borderWidth = 1; - _instantConsumerRegard.userInteractionEnabled = YES; - } - return _instantConsumerRegard; -} - - -- (NetIndicateRegard *)tertiusConsumerRegard { - if (!_tertiusConsumerRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _tertiusConsumerRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _tertiusConsumerRegard.layer.masksToBounds = YES; - _tertiusConsumerRegard.layer.cornerRadius = 35/2; - _tertiusConsumerRegard.layer.borderWidth = 1; - _tertiusConsumerRegard.userInteractionEnabled = YES; - } - return _tertiusConsumerRegard; -} - -- (NetIndicateRegard *)fourthConsumerRegard { - if (!_fourthConsumerRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _fourthConsumerRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _fourthConsumerRegard.layer.masksToBounds = YES; - _fourthConsumerRegard.layer.cornerRadius = 35/2; - _fourthConsumerRegard.layer.borderWidth = 1; - _fourthConsumerRegard.userInteractionEnabled = YES; - } - return _fourthConsumerRegard; -} - -- (NetIndicateRegard *)fifthConsumerRegard { - if (!_fifthConsumerRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _fifthConsumerRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _fifthConsumerRegard.layer.masksToBounds = YES; - _fifthConsumerRegard.layer.cornerRadius = 35/2; - _fifthConsumerRegard.layer.borderWidth = 1; - _fifthConsumerRegard.userInteractionEnabled = YES; - } - return _fifthConsumerRegard; -} - -- (UIImageView *)mvpIndicateRegard { - if (!_mvpIndicateRegard) { - _mvpIndicateRegard = [[UIImageView alloc] init]; - _mvpIndicateRegard.userInteractionEnabled = YES; - _mvpIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_result_user_mvp"]; - _mvpIndicateRegard.hidden = YES; - } - return _mvpIndicateRegard; -} - -- (UILabel *)failSequencSequencignation { - if (!_failSequencSequencignation) { - _failSequencSequencignation = [[UILabel alloc] init]; - _failSequencSequencignation.font = [UIFont systemFontOfSize:15]; - _failSequencSequencignation.textColor = UIColorFromRGB(0x666666); - _failSequencSequencignation.textAlignment = NSTextAlignmentCenter; - _failSequencSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Room_PK_Result_View_31"), AppName]; - } - return _failSequencSequencignation; -} - - - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatDisportingRegard.h b/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatDisportingRegard.h deleted file mode 100644 index 04e436b5..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatDisportingRegard.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// YMRoomPKPlayingView.h -// YUMI -// -// Created by YUMI on 2022/3/29. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ChamberCombatAbstractMatrix, ChamberCombatChooseConsumerMatrix, YUMIChamberCombatDisportingRegard; -@protocol FBCChamberCombatPlayingRegardRepresendtation - -- (void)yUMIChamberCombatDisportingRegard:(YUMIChamberCombatDisportingRegard *)view didClickResetBegin:(UIButton *)sender; - -@end - -@interface YUMIChamberCombatDisportingRegard : UIView -@property (nonatomic,weak) id delegate; -@property (nonatomic,assign) BOOL isManager; -@property (nonatomic,strong) ChamberCombatAbstractMatrix *combatSpecificAbstract; -@property (nonatomic,strong) NSArray *deficitConcludeGarment; -@property (nonatomic,strong) NSArray *disappointedConcludeGarment; -@property (nonatomic,copy) NSString *currentTime; -- (void)prohibitipositionDeficitSquadEarn:(long)deficitSquadEarn disappointedSquadEarn:(long)disappointedSquadEarn; -- (void)prohibititinctChamberCombatTowardsoloudspeaker; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatDisportingRegard.m b/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatDisportingRegard.m deleted file mode 100644 index 059bd819..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatDisportingRegard.m +++ /dev/null @@ -1,360 +0,0 @@ -// -// YMRoomPKPlayingView.m -// YUMI -// -// Created by YUMI on 2022/3/29. -// - -#import "YUMIChamberCombatDisportingRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "MKJPopup.h" -#import "UIImage+Utils.h" -#import "ChamberCombatSpecificAbstractMatrix.h" -#import "YUMIChamberCombatFasciaboardConsumerRegard.h" - -@interface YUMIChamberCombatDisportingRegard () -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) UIButton *beginBtuton; -@property (nonatomic,strong) UILabel *intratemporalSequencignation; -@property (nonatomic,strong) YUMIChamberCombatFasciaboardConsumerRegard * deficitSquadRegard; -@property (nonatomic,strong) UILabel *deficitEarnSequencignation; -@property (nonatomic,strong) YUMIChamberCombatFasciaboardConsumerRegard * disappointedSquadRegard; -@property (nonatomic,strong) UILabel *disappointedEarnSequencignation; -@property (nonatomic,strong) UIView * progressView; -@property (nonatomic,strong) UIImageView * deficitGrowthRegard; -@property (nonatomic,strong) UIImageView * disappointedGrowthRegard; -@property (nonatomic,strong) UIImageView *growthBurlywoodRegard; -@property (nonatomic,strong) UIButton *foldBtuton; -@property (nonatomic,strong) UILabel *voteMannerSequencignation; -@property (nonatomic,strong) UILabel *combateSequencignation; -@end - - -@implementation YUMIChamberCombatDisportingRegard -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Public Method -- (void)prohibitipositionDeficitSquadEarn:(long)deficitSquadEarn disappointedSquadEarn:(long)disappointedSquadEarn { - self.deficitEarnSequencignation.text = [NSString stringWithFormat:@"%ld", deficitSquadEarn]; - self.disappointedEarnSequencignation.text = [NSString stringWithFormat:@"%ld", disappointedSquadEarn]; - if (deficitSquadEarn > 0 || disappointedSquadEarn > 0) { - CGFloat redScale = (CGFloat)deficitSquadEarn / (CGFloat)(deficitSquadEarn + disappointedSquadEarn); - if (redScale == 1) { - redScale = 0.99; - } - [self.deficitGrowthRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo((56 + 45) * 2 * redScale); - }]; - } -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.encourageIndicateRegard]; - - [self.encourageIndicateRegard addSubview:self.intratemporalSequencignation]; - [self.encourageIndicateRegard addSubview:self.deficitSquadRegard]; - [self.encourageIndicateRegard addSubview:self.deficitEarnSequencignation]; - [self.encourageIndicateRegard addSubview:self.disappointedSquadRegard]; - [self.encourageIndicateRegard addSubview:self.disappointedEarnSequencignation]; - [self.encourageIndicateRegard addSubview:self.progressView]; - [self.encourageIndicateRegard addSubview:self.beginBtuton]; - [self.encourageIndicateRegard addSubview:self.voteMannerSequencignation]; - [self.encourageIndicateRegard addSubview:self.combateSequencignation]; - [self.encourageIndicateRegard addSubview:self.foldBtuton]; - - [self.progressView addSubview:self.deficitGrowthRegard]; - [self.progressView addSubview:self.disappointedGrowthRegard]; - [self.progressView addSubview:self.growthBurlywoodRegard]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(260); - make.height.mas_equalTo(153); - }]; - - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.intratemporalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.encourageIndicateRegard); - make.top.mas_equalTo(self.encourageIndicateRegard); - }]; - - [self.deficitSquadRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.encourageIndicateRegard.mas_centerX).offset(-56); - make.top.mas_equalTo(self.encourageIndicateRegard).offset(25); - make.height.mas_equalTo(45); - }]; - - [self.voteMannerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.encourageIndicateRegard); - make.top.mas_equalTo(self.encourageIndicateRegard).offset(36); - }]; - - [self.combateSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.encourageIndicateRegard); - make.top.mas_equalTo(self.voteMannerSequencignation.mas_bottom).offset(6); - }]; - - [self.disappointedSquadRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageIndicateRegard.mas_centerX).offset(56); - make.centerY.mas_equalTo(self.deficitSquadRegard); - make.height.mas_equalTo(45); - }]; - - [self.progressView mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(56 * 2 + 45 * 2); - make.height.mas_equalTo(7); - make.centerX.mas_equalTo(self.encourageIndicateRegard); - make.top.mas_equalTo(self.deficitSquadRegard.mas_bottom).offset(23); - }]; - - [self.deficitGrowthRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.top.bottom.mas_equalTo(self.progressView); - make.width.mas_equalTo(56 + 45); - }]; - - [self.disappointedGrowthRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.top.bottom.mas_equalTo(self.progressView); - make.left.mas_equalTo(self.deficitGrowthRegard.mas_right); - }]; - - [self.growthBurlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(2.5, 12.5)); - make.centerX.mas_equalTo(self.disappointedGrowthRegard.mas_left).offset(-1.2); - make.centerY.mas_equalTo(self.progressView); - }]; - - [self.deficitEarnSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.progressView); - make.top.mas_equalTo(self.progressView.mas_bottom).offset(3); - }]; - - [self.disappointedEarnSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.deficitEarnSequencignation); - make.right.mas_equalTo(self.progressView); - }]; - - [self.beginBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(90, 24)); - make.centerX.mas_equalTo(self.encourageIndicateRegard); - make.bottom.mas_equalTo(self.encourageIndicateRegard.mas_bottom).offset(-15); - }]; - - [self.foldBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(0); - make.right.mas_equalTo(0); - make.width.mas_equalTo(30.5); - make.height.mas_equalTo(17.5); - }]; -} - -- (void)prohibititinctChamberCombatTowardsoloudspeaker { - self.deficitEarnSequencignation.text = @"0"; - self.disappointedEarnSequencignation.text = @"0"; - [self.deficitGrowthRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(56 + 45); - }]; -} - -#pragma mark - Event Response -- (void)instituteBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberCombatDisportingRegard:didClickResetBegin:)]) { - [self.delegate yUMIChamberCombatDisportingRegard:self didClickResetBegin:sender]; - } -} - -- (void)foldBtutonPerformance:(UIButton *)sender { - [MKJPopup dismiss]; -} - -#pragma mark - Getters And Setters -- (void)setIsManager:(BOOL)isManager { - _isManager = isManager; - self.beginBtuton.hidden = !_isManager; -} - -- (void)setCombatSpecificAbstract:(ChamberCombatAbstractMatrix *)combatSpecificAbstract { - _combatSpecificAbstract = combatSpecificAbstract; - if (_combatSpecificAbstract) { - self.voteMannerSequencignation.text = _combatSpecificAbstract.voteMode == ChamberCombatVoteModeGenre_GiftValue ? @"按礼物价值" : YMLocalizedString(@"YUMI_Room_PK_Playing_View_1"); - } -} - -- (void)setCurrentTime:(NSString *)currentTime { - _currentTime = currentTime; - self.intratemporalSequencignation.text = _currentTime; -} - -- (void)setDeficitConcludeGarment:(NSArray *)deficitConcludeGarment { - _deficitConcludeGarment = deficitConcludeGarment; - self.deficitSquadRegard.consumerGarment = _deficitConcludeGarment; -} - -- (void)setDisappointedConcludeGarment:(NSArray *)disappointedConcludeGarment { - _disappointedConcludeGarment = disappointedConcludeGarment; - self.disappointedSquadRegard.consumerGarment = _disappointedConcludeGarment; -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_playing_background"]; - } - return _encourageIndicateRegard; -} - -- (UILabel *)intratemporalSequencignation { - if (!_intratemporalSequencignation) { - _intratemporalSequencignation = [[UILabel alloc] init]; - _intratemporalSequencignation.font = [UIFont systemFontOfSize:10]; - _intratemporalSequencignation.textColor = UIColorFromRGB(0x602A06); - _intratemporalSequencignation.textAlignment = NSTextAlignmentCenter; - _intratemporalSequencignation.text= @"00:00"; - } - return _intratemporalSequencignation; -} - -- (UILabel *)voteMannerSequencignation { - if (!_voteMannerSequencignation) { - _voteMannerSequencignation = [[UILabel alloc] init]; - _voteMannerSequencignation.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - _voteMannerSequencignation.textColor = UIColorFromRGB(0x79674E); - _voteMannerSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _voteMannerSequencignation; -} - -- (UILabel *)combateSequencignation { - if (!_combateSequencignation) { - _combateSequencignation = [[UILabel alloc] init]; - _combateSequencignation.text= @"PK"; - _combateSequencignation.textAlignment = NSTextAlignmentCenter; - _combateSequencignation.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium];; - _combateSequencignation.textColor = UIColorFromRGB(0x79674E); - } - return _combateSequencignation; -} - - -- (YUMIChamberCombatFasciaboardConsumerRegard *)deficitSquadRegard { - if (!_deficitSquadRegard) { - _deficitSquadRegard = [[YUMIChamberCombatFasciaboardConsumerRegard alloc] init]; - _deficitSquadRegard.itemAltitude = 45; - _deficitSquadRegard.isExhibitAccelerate = NO; - _deficitSquadRegard.type = GroupGenre_Red; - } - return _deficitSquadRegard; -} - -- (YUMIChamberCombatFasciaboardConsumerRegard *)disappointedSquadRegard { - if (!_disappointedSquadRegard) { - _disappointedSquadRegard = [[YUMIChamberCombatFasciaboardConsumerRegard alloc] init]; - _disappointedSquadRegard.itemAltitude = 45; - _disappointedSquadRegard.isExhibitAccelerate = NO; - _disappointedSquadRegard.type = GroupGenre_Blue; - } - return _disappointedSquadRegard; -} - -- (UIView *)progressView { - if (!_progressView) { - _progressView = [[UIView alloc] init]; - _progressView.backgroundColor = [UIColor clearColor]; - _progressView.layer.masksToBounds = YES; - _progressView.layer.cornerRadius = 3.5; - } - return _progressView; -} - -- (UIImageView *)deficitGrowthRegard { - if (!_deficitGrowthRegard) { - _deficitGrowthRegard = [[UIImageView alloc] init]; - _deficitGrowthRegard.userInteractionEnabled = YES; - _deficitGrowthRegard.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFA96AE), UIColorFromRGB(0xE943F8)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)]; - _deficitGrowthRegard.contentMode = UIViewContentModeScaleAspectFill; - _deficitGrowthRegard.layer.masksToBounds = YES; - } - return _deficitGrowthRegard; -} - -- (UIImageView *)disappointedGrowthRegard { - if (!_disappointedGrowthRegard) { - _disappointedGrowthRegard = [[UIImageView alloc] init]; - _disappointedGrowthRegard.userInteractionEnabled = YES; - _disappointedGrowthRegard.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0x4F7AFF), UIColorFromRGB(0x44C0FE)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)]; - _disappointedGrowthRegard.contentMode = UIViewContentModeScaleAspectFill; - _disappointedGrowthRegard.layer.masksToBounds = YES; - } - return _disappointedGrowthRegard; -} - -- (UIImageView *)growthBurlywoodRegard { - if (!_growthBurlywoodRegard) { - _growthBurlywoodRegard = [[UIImageView alloc] init]; - _growthBurlywoodRegard.userInteractionEnabled = YES; - _growthBurlywoodRegard.image = [UIImage imageNamed:@"yumi_scope_pk_progrss_line_background"]; - } - return _growthBurlywoodRegard; -} - -- (UILabel *)deficitEarnSequencignation { - if (!_deficitEarnSequencignation) { - _deficitEarnSequencignation = [[UILabel alloc] init]; - _deficitEarnSequencignation.text = @"0"; - _deficitEarnSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _deficitEarnSequencignation.textColor = UIColor.whiteColor; - _deficitEarnSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _deficitEarnSequencignation; -} - -- (UILabel *)disappointedEarnSequencignation { - if (!_disappointedEarnSequencignation) { - _disappointedEarnSequencignation = [[UILabel alloc] init]; - _disappointedEarnSequencignation.text = @"0"; - _disappointedEarnSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _disappointedEarnSequencignation.textColor = UIColor.whiteColor; - _disappointedEarnSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _disappointedEarnSequencignation; -} - -- (UIButton *)beginBtuton { - if (!_beginBtuton) { - _beginBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_beginBtuton setTitle:YMLocalizedString(@"YUMI_Room_PK_Playing_View_2") forState:UIControlStateNormal]; - [_beginBtuton setTitleColor:UIColorFromRGB(0x602A06) forState:UIControlStateNormal]; - _beginBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_beginBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFFDAA8), UIColorFromRGB(0xFFBD64)] gradientType:GradientGenreUpleftToLowright imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _beginBtuton.layer.masksToBounds = YES; - _beginBtuton.layer.cornerRadius = 12; - [_beginBtuton addTarget:self action:@selector(instituteBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _beginBtuton; -} - -- (UIButton *)foldBtuton { - if (!_foldBtuton) { - _foldBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_foldBtuton setImage:[UIImage imageNamed:@"yumi_scope_pk_playing_fold"] forState:UIControlStateNormal]; - [_foldBtuton setImage:[UIImage imageNamed:@"yumi_scope_pk_playing_fold"] forState:UIControlStateSelected]; - [_foldBtuton addTarget:self action:@selector(foldBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _foldBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatProgressRegard.h b/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatProgressRegard.h deleted file mode 100644 index 2fdd00a5..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatProgressRegard.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YMRoomPKProgressView.h -// YUMI -// -// Created by YUMI on 2022/3/28. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class MiecreoscoopeMHTueueMatrix, AttachmentMatrix, ChamberAbstractMatrix, ChamberCombatChooseConsumerMatrix; -@interface YUMIChamberCombatProgressRegard : UIView -@property (nonatomic, strong) NSMutableDictionary *micQueue; -@property (nonatomic,strong) ChamberAbstractMatrix *roomInfo; -@property (nonatomic,assign) BOOL isManager; -@property (nonatomic,strong, readonly) NSArray *deficitConcludeGarment; -@property (nonatomic,strong, readonly) NSArray *disappointedConcludeGarment; -- (void)chamberCombatReceivePresent:(AttachmentMatrix *)attachment; -- (void)importChamberAcquireChamberCombatSpecificAbstract; -- (void)shankChamberCombatIndividualityCommunictowardsion:(AttachmentMatrix *)attachment; -- (BOOL)isChamberCombatDisporting; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatProgressRegard.m b/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatProgressRegard.m deleted file mode 100644 index 784d17d5..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatProgressRegard.m +++ /dev/null @@ -1,1078 +0,0 @@ -// -// YMRoomPKProgressView.m -// YUMI -// -// Created by YUMI on 2022/3/28. -// - -#import "YUMIChamberCombatProgressRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "MKJPopup.h" -#import "UIImage+Utils.h" -#import "Api+RoomPK.h" -#import "AccountAbstractStorage.h" -#import "XNDJTBWGLoadingTool.h" -#import "YUMIPresentStorage.h" -#import "PresentAchieveAbstractMatrix.h" -#import "PresentAbstractMatrix.h" -#import "XCCurrentVCStackExecutive.h" -#import "NSArray+Safe.h" -#import "ChamberCombatSpecificAbstractMatrix.h" -#import "MiecreoscoopeMHTueueMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "ChamberCombatChooseConsumerMatrix.h" -#import "AttachmentMatrix.h" -#import "MiecreoscoopeExtMatrix.h" -#import "YUMIScheduleLoudspeakerAbstractMatrix.h" -#import "ChamberAbstractMatrix.h" -#import "YUMIChamberCombatFasciaboardConsumerRegard.h" -#import "YUMIChamberCombatChosenConsumerRegard.h" -#import "YUMIChamberCombatDisportingRegard.h" -#import "YUMIChamberCombatDisportingRegard.h" -#import "YUMIChamberCombatConsequentRegard.h" -#import "YUMIScheduleLoudspeakerRegardGovernancer.h" - -@interface YUMIChamberCombatProgressRegard () -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) UIButton *beginBtuton; -@property (nonatomic,strong) UILabel *intratemporalSequencignation; -@property (nonatomic,strong) YUMIChamberCombatFasciaboardConsumerRegard * deficitSquadRegard; -@property (nonatomic,strong) UILabel *deficitEarnSequencignation; -@property (nonatomic,strong) YUMIChamberCombatFasciaboardConsumerRegard * disappointedSquadRegard; -@property (nonatomic,strong) UILabel *disappointedEarnSequencignation; -@property (nonatomic,strong) UIView * progressView; -@property (nonatomic,strong) UIImageView * deficitGrowthRegard; -@property (nonatomic,strong) UIImageView * disappointedGrowthRegard; -@property (nonatomic,strong) UIImageView *growthBurlywoodRegard; -@property (strong, nonatomic) dispatch_source_t timer; -@property (nonatomic,assign) CGFloat currentTime; -@property (nonatomic,assign) int examineConsequentFigure; -@property (nonatomic,strong) YUMIChamberCombatDisportingRegard *chamberCombatDisportingRegard; -@property (nonatomic,assign) long deficitSquadEarn; -@property (nonatomic,assign) long disappointedSquadEarn; -@property (nonatomic, strong) NSMutableDictionary * deficitSquadPresentFeaturePackbask; -@property (nonatomic, strong) NSMutableDictionary * disappointedSquadPresentFeaturePackbask; -@property (nonatomic,strong) NSArray *deficitConcludeGarment; -@property (nonatomic,strong) NSArray *disappointedConcludeGarment; -@property (nonatomic,assign) BOOL isAchieveCombatConsequent; -@property (nonatomic,strong) ChamberCombatAbstractMatrix *chamberCombatAbstract; -@property (nonatomic,assign) BOOL isPlaying; -@end - - -@implementation YUMIChamberCombatProgressRegard - -- (void)dealloc { - [self suspeindChamberCombatComputtowardsionPubescence]; -} - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Public Method -- (void)shankChamberCombatIndividualityCommunictowardsion:(AttachmentMatrix *)attachment { - if (attachment.second == Custom_Message_Sub_Room_PK_Start) { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:YMLocalizedString(@"YUMI_Room_PK_Progress_View_0")]; - ChamberCombatAbstractMatrix * pkInfo = [ChamberCombatAbstractMatrix mtowardsrixAboutImpactbasket:attachment.data]; - self.chamberCombatAbstract = pkInfo; - [self inititowardseChamberCombatComputtowardsionPubescence:pkInfo.duration]; - [self shankChamberCombatAbstractDiversifictowardsionDeclare]; - }else if (attachment.second == Custom_Message_Sub_Room_PK_Mode_Open){ - ChamberCombatAbstractMatrix * pkInfo = [ChamberCombatAbstractMatrix mtowardsrixAboutImpactbasket:attachment.data]; - self.chamberCombatAbstract = pkInfo; - [self shankChamberCombatAbstractDiversifictowardsionDeclare]; - } else if(attachment.second == Custom_Message_Sub_Room_PK_Re_Start) { - ChamberCombatAbstractMatrix * pkInfo = [ChamberCombatAbstractMatrix mtowardsrixAboutImpactbasket:attachment.data]; - self.chamberCombatAbstract = pkInfo; - [self shankChamberCombatAbstractDiversifictowardsionDeclare]; - } else if(attachment.second == Custom_Message_Sub_Room_PK_Result) { - [MKJPopup dismiss]; - ChamberCombatAbstractMatrix * pkInfo = [ChamberCombatAbstractMatrix mtowardsrixAboutImpactbasket:attachment.data]; - self.isAchieveCombatConsequent = YES; - [self suspeindChamberCombatComputtowardsionPubescence]; - [self prohibititinctChamberCombatSquadTowardsoloudspeaker]; - self.examineConsequentFigure = 1; - if (pkInfo.pkStatus == ChamberCombatPositionGenre_ReStart) { - self.chamberCombatAbstract = pkInfo; - } else { - if ([pkInfo.pkId isEqualToString:self.chamberCombatAbstract.pkId]) { - [self prohibititinctChamberCombatSquadTowardsoloudspeaker]; - self.chamberCombatAbstract = pkInfo; - [self replacementChamberCombatGroupGenre]; - - } - } - if (pkInfo.pkStatus == ChamberCombatPositionGenre_End) { - YUMIChamberCombatConsequentRegard * result = [[YUMIChamberCombatConsequentRegard alloc] init]; - result.chamberCombatConsequentAbstractMatrix = pkInfo; - [MKJPopup popupRegard:result style:MKJPopupStyleAlert]; - } - [self shankChamberCombatAbstractDiversifictowardsionDeclare]; - } else if(attachment.second == Custom_Message_Sub_Room_PK_Mode_Close) { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:YMLocalizedString(@"YUMI_Room_PK_Progress_View_1")]; - [self suspeindChamberCombatComputtowardsionPubescence]; - [self prohibititinctChamberCombatSquadTowardsoloudspeaker]; - [self removeFromSuperview]; - [self replacementChamberCombatGroupGenre]; - } -} - -- (void)chamberCombatReceivePresent:(AttachmentMatrix *)attachment { - if (self.chamberCombatAbstract.pkStatus == ChamberCombatPositionGenre_Playing) { - PresentAchieveAbstractMatrix *giftReceiveInfo = [PresentAchieveAbstractMatrix mtowardsrixAboutJSON:attachment.data]; - PresentAbstractMatrix *giftInfo = giftReceiveInfo.gift == nil ? giftReceiveInfo.giftInfo : giftReceiveInfo.gift; - if (giftInfo == nil) { - giftInfo = [[YUMIPresentStorage partowardsiciptowardsionStorage] prohibiticoveryPresentAbstract:giftReceiveInfo.giftId]; - } - if (attachment.first == IndividualityCommunicationGenre_AllMicroSend) { - if (attachment.second == Custom_Message_Sub_AllBatchSend || attachment.second == Custom_Message_Sub_AllMicroSend) { - NSArray *targetUids = giftReceiveInfo.targetUids; - if (giftReceiveInfo.targetUids.count <=0) { - if (giftReceiveInfo.targetUsers.count > 0) { - targetUids = [giftReceiveInfo.targetUsers valueForKeyPath:@"uid"]; - } else { - targetUids = giftReceiveInfo.targetUid.integerValue > 0? @[giftReceiveInfo.targetUid] : @[]; - } - } - if (self.chamberCombatAbstract.voteMode == ChamberCombatVoteModeGenre_NumberPerson) { - [self canculeChamberCombatDischargePresentFigureFetowardsure:targetUids sendUid:giftReceiveInfo.uid]; - } else { - [self canculeChamberPresentBWSttessReceiveAbstract:targetUids giftPrice:giftInfo.goldPrice * giftReceiveInfo.giftNum]; - } - } else if(attachment.second == Custom_Message_Sub_AllMicroLuckySend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend) { - if (giftReceiveInfo.luckyGiftList) { - __block NSInteger goldPrice = 0; - [giftReceiveInfo.luckyGiftList.giftList enumerateObjectsUsingBlock:^(PresentStatementsAbstract * _Nonnull giftListInfo, NSUInteger idx, BOOL * _Nonnull stop) { - PresentAbstractMatrix *giftInfo = [[YUMIPresentStorage partowardsiciptowardsionStorage] prohibiticoveryPresentAbstract:[NSString stringWithFormat:@"%ld", giftListInfo.giftId]]; - goldPrice += giftInfo.goldPrice * giftListInfo.giftNum; - }]; - NSArray *targetUids; - if (giftReceiveInfo.luckyGiftList.user.uid > 0) { - targetUids = @[[NSString stringWithFormat:@"%ld", giftReceiveInfo.luckyGiftList.user.uid]]; - } - if (self.chamberCombatAbstract.voteMode == ChamberCombatVoteModeGenre_NumberPerson) { - [self canculeChamberCombatDischargePresentFigureFetowardsure:targetUids sendUid:giftReceiveInfo.uid]; - } else { - [self canculeChamberPresentBWSttessReceiveAbstract:targetUids giftPrice:goldPrice]; - } - } - } - } else if(attachment.first == IndividualityCommunicationGenre_Gift) { - if (attachment.second == Custom_Message_Sub_Gift_LuckySend) { - __block NSInteger goldPrice = 0; - [giftReceiveInfo.luckyGiftList.giftList enumerateObjectsUsingBlock:^(PresentStatementsAbstract * _Nonnull giftListInfo, NSUInteger idx, BOOL * _Nonnull stop) { - PresentAbstractMatrix *giftInfo = [[YUMIPresentStorage partowardsiciptowardsionStorage] prohibiticoveryPresentAbstract:[NSString stringWithFormat:@"%ld", giftListInfo.giftId]]; - goldPrice += giftInfo.goldPrice * giftListInfo.giftNum; - }]; - NSArray *targetUids; - if (giftReceiveInfo.luckyGiftList.user.uid > 0) { - targetUids = @[[NSString stringWithFormat:@"%ld", giftReceiveInfo.luckyGiftList.user.uid]]; - } - if (self.chamberCombatAbstract.voteMode == ChamberCombatVoteModeGenre_NumberPerson) { - [self canculeChamberCombatDischargePresentFigureFetowardsure:targetUids sendUid:giftReceiveInfo.uid]; - } else { - [self canculeChamberPresentBWSttessReceiveAbstract:targetUids giftPrice:goldPrice]; - } - } else { - NSArray *targetUids = giftReceiveInfo.targetUids; - if (giftReceiveInfo.targetUids.count <=0) { - if (giftReceiveInfo.targetUsers.count > 0) { - targetUids = [giftReceiveInfo.targetUsers valueForKeyPath:@"uid"]; - } else { - targetUids = giftReceiveInfo.targetUid.integerValue > 0? @[giftReceiveInfo.targetUid] : @[]; - } - } - if (self.chamberCombatAbstract.voteMode == ChamberCombatVoteModeGenre_NumberPerson) { - [self canculeChamberCombatDischargePresentFigureFetowardsure:targetUids sendUid:giftReceiveInfo.uid]; - } else { - [self canculeChamberPresentBWSttessReceiveAbstract:targetUids giftPrice:giftInfo.goldPrice * giftReceiveInfo.giftNum]; - } - } - } - - } -} - -- (void)importChamberAcquireChamberCombatSpecificAbstract { - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; - [Api acquireChamberCombatSpecific:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - ChamberCombatSpecificAbstractMatrix * combatSpecificAbstract = [ChamberCombatSpecificAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - self.chamberCombatAbstract = combatSpecificAbstract.roomPK; - [self shankChamberCombatAbstractDiversifictowardsionDeclare]; - if (self.chamberCombatAbstract.pkStatus == ChamberCombatPositionGenre_Playing) { - [self inititowardseChamberCombatComputtowardsionPubescence:(self.chamberCombatAbstract.endTime - combatSpecificAbstract.now) / 1000]; - } - NSMutableDictionary * queue = self.micQueue; - - NSMutableArray * redArray = [NSMutableArray array]; - NSMutableArray * blueArray = [NSMutableArray array]; - if (self.chamberCombatAbstract.pkStatus == ChamberCombatPositionGenre_Playing) { - for (int i = 0; i < self.chamberCombatAbstract.teams.count; i++) { - ChamberCombatSquadMatrix * teamInfo = [self.chamberCombatAbstract.teams secureGroalTowardsIndictowardsrix1:i]; - if (teamInfo.team == GroupGenre_Red) { - self.deficitSquadEarn = teamInfo.score; - for (int i = 0; i < teamInfo.teamMembers.count; i++) { - ChamberCombatSquadConsumerMatrix * teamUserModel = [teamInfo.teamMembers secureGroalTowardsIndictowardsrix1:i]; - ChamberCombatChooseConsumerMatrix * redInfo = [[ChamberCombatChooseConsumerMatrix alloc] init]; - redInfo.avatar = teamUserModel.avatar; - redInfo.uid = teamUserModel.uid; - redInfo.groupType = GroupGenre_Red; - redInfo.position = [self prohibiticoveryMiecreoscoopeAbstractByCid:teamUserModel.uid].microState.position; - redInfo.nick = teamUserModel.nick; - [redArray addObject:redInfo]; - } - } else if(teamInfo.team == GroupGenre_Blue) { - self.disappointedSquadEarn = teamInfo.score; - for (int i = 0; i < teamInfo.teamMembers.count; i++) { - ChamberCombatSquadConsumerMatrix * teamUserModel = [teamInfo.teamMembers secureGroalTowardsIndictowardsrix1:i]; - ChamberCombatChooseConsumerMatrix * blueInfo = [[ChamberCombatChooseConsumerMatrix alloc] init]; - blueInfo.avatar = teamUserModel.avatar; - blueInfo.uid = teamUserModel.uid; - blueInfo.groupType = GroupGenre_Blue; - blueInfo.position = [self prohibiticoveryMiecreoscoopeAbstractByCid:teamUserModel.uid].microState.position; - blueInfo.nick = teamUserModel.nick; - [blueArray addObject:blueInfo]; - } - } - } - [self prohibitipositionDeficitSquadEarn:self.deficitSquadEarn disappointedSquadEarn:self.disappointedSquadEarn]; - } else { - for (int i = 0 ; i < queue.allValues.count; i++) { - MiecreoscoopeMHTueueMatrix * micModel = [queue.allValues secureGroalTowardsIndictowardsrix1:i]; - if (micModel.userInfo && micModel.userInfo.uid > 0) { - ConsumerAbstractMatrix * userInfo = micModel.userInfo; - if (userInfo.groupType == GroupGenre_Red) { - ChamberCombatChooseConsumerMatrix * redInfo = [[ChamberCombatChooseConsumerMatrix alloc] init]; - redInfo.avatar = userInfo.avatar; - redInfo.uid = [NSString stringWithFormat:@"%ld", userInfo.uid]; - redInfo.groupType = userInfo.groupType; - redInfo.position = micModel.microState.position; - redInfo.nick = userInfo.nick; - [redArray addObject:redInfo]; - } else if(userInfo.groupType == GroupGenre_Blue) { - ChamberCombatChooseConsumerMatrix * blueInfo = [[ChamberCombatChooseConsumerMatrix alloc] init]; - blueInfo.avatar = userInfo.avatar; - blueInfo.uid = [NSString stringWithFormat:@"%ld", userInfo.uid]; - blueInfo.groupType = userInfo.groupType; - blueInfo.position = micModel.microState.position; - blueInfo.nick = userInfo.nick; - [blueArray addObject:blueInfo]; - } - } - } - - } - self.deficitConcludeGarment = redArray.copy; - self.disappointedConcludeGarment = blueArray.copy; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } roomUid:roomUid]; -} - -- (BOOL)isChamberCombatDisporting { - return self.isPlaying; -} - -#pragma mark - 查询pk结果的 -- (void)examineChamberCombatConsequent{ - if (self.examineConsequentFigure > 2) { - - [self prohibititinctChamberCombatSquadTowardsoloudspeaker]; - [self replacementChamberCombatGroupGenre]; - return; - } - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - if (!self.isAchieveCombatConsequent) { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; - if (self.chamberCombatAbstract.pkId.length > 0) { - NSString * pkId = self.chamberCombatAbstract.pkId; - [Api examineChamberCombatConsequent:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - self.examineConsequentFigure = 1; - self.isAchieveCombatConsequent = YES; - } else { - self.examineConsequentFigure++; - [self examineChamberCombatConsequent]; - } - } roomUid:roomUid operUid:uid pkId:pkId]; - } - - } - }); -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.encourageIndicateRegard]; - [self addSubview:self.beginBtuton]; - - [self.encourageIndicateRegard addSubview:self.intratemporalSequencignation]; - [self.encourageIndicateRegard addSubview:self.deficitSquadRegard]; - [self.encourageIndicateRegard addSubview:self.deficitEarnSequencignation]; - [self.encourageIndicateRegard addSubview:self.disappointedSquadRegard]; - [self.encourageIndicateRegard addSubview:self.disappointedEarnSequencignation]; - [self.encourageIndicateRegard addSubview:self.progressView]; - - [self.progressView addSubview:self.deficitGrowthRegard]; - [self.progressView addSubview:self.disappointedGrowthRegard]; - [self.progressView addSubview:self.growthBurlywoodRegard]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(260); - make.bottom.mas_equalTo(self.beginBtuton.mas_bottom); - }]; - - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(260, 60)); - make.top.left.mas_equalTo(self); - }]; - - [self.beginBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(90, 24)); - make.centerX.mas_equalTo(self.encourageIndicateRegard); - make.centerY.mas_equalTo(self.encourageIndicateRegard.mas_bottom); - }]; - - [self.intratemporalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.encourageIndicateRegard); - make.top.mas_equalTo(self.encourageIndicateRegard); - }]; - - [self.progressView mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(85 * 2); - make.height.mas_equalTo(7); - make.centerX.mas_equalTo(self.encourageIndicateRegard); - make.top.mas_equalTo(self.encourageIndicateRegard).offset(23); - }]; - - [self.deficitSquadRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.progressView.mas_left); - make.centerY.mas_equalTo(self.progressView); - make.height.mas_equalTo(25); - make.left.mas_greaterThanOrEqualTo(15); - }]; - - [self.disappointedSquadRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.progressView.mas_right); - make.centerY.mas_equalTo(self.progressView); - make.height.mas_equalTo(25); - make.right.mas_lessThanOrEqualTo(-15); - }]; - - [self.deficitGrowthRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.top.bottom.mas_equalTo(self.progressView); - make.width.mas_equalTo(85); - }]; - - [self.disappointedGrowthRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.top.bottom.mas_equalTo(self.progressView); - make.left.mas_equalTo(self.deficitGrowthRegard.mas_right); - }]; - - [self.growthBurlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(2.5, 12.5)); - make.centerX.mas_equalTo(self.disappointedGrowthRegard.mas_left).offset(-1.2); - make.centerY.mas_equalTo(self.progressView); - }]; - - - [self.deficitEarnSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.deficitSquadRegard); - make.top.mas_equalTo(self.deficitSquadRegard.mas_bottom).offset(5); - make.left.mas_lessThanOrEqualTo(self.encourageIndicateRegard); - }]; - - [self.disappointedEarnSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.disappointedSquadRegard); - make.centerY.mas_equalTo(self.deficitEarnSequencignation); - make.right.mas_lessThanOrEqualTo(self.encourageIndicateRegard); - }]; -} - -- (BOOL)isOnMicro:(NSString *)uid { - for (int i = 0; i < self.micQueue.allValues.count; i++) { - MiecreoscoopeMHTueueMatrix * micModel = [self.micQueue.allValues secureGroalTowardsIndictowardsrix1:i]; - if (micModel.userInfo && micModel.userInfo.uid > 0 && micModel.userInfo.uid == uid.integerValue) { - return YES; - } - } - return NO; -} - -- (MiecreoscoopeMHTueueMatrix *)prohibiticoveryMiecreoscoopeAbstractByCid:(NSString *)uid { - for (MiecreoscoopeMHTueueMatrix *model in self.micQueue.allValues) { - if (model.userInfo && model.userInfo.uid == uid.intValue) { - return model; - } - } - return nil; -} - -- (void)canculeChamberPresentBWSttessReceiveAbstract:(NSArray *)targetUids giftPrice:(NSInteger)giftPrice{ - for (ChamberCombatChooseConsumerMatrix * userInfo in self.deficitConcludeGarment) { - for (NSString * uid in targetUids) { - NSString * userId = uid; - if ([userId isKindOfClass:[NSNumber class]]) { - userId = ((NSNumber *)userId).stringValue; - } - if (userId.integerValue == userInfo.uid.integerValue) { - self.deficitSquadEarn += giftPrice; - break; - } - } - } - - for (ChamberCombatChooseConsumerMatrix * userInfo in self.disappointedConcludeGarment) { - for (NSString * uid in targetUids) { - NSString * userId = uid; - if ([userId isKindOfClass:[NSNumber class]]) { - userId = ((NSNumber *)userId).stringValue; - } - if (userId.integerValue == userInfo.uid.integerValue) { - self.disappointedSquadEarn += giftPrice; - break; - } - } - } - [self prohibitipositionDeficitSquadEarn:self.deficitSquadEarn disappointedSquadEarn:self.disappointedSquadEarn]; -} - -- (void)canculeChamberCombatDischargePresentFigureFetowardsure:(NSArray *)sendGiftUses sendUid:(NSString *)sendUid{ - - if (!self.deficitSquadPresentFeaturePackbask) { - self.deficitSquadPresentFeaturePackbask = [NSMutableDictionary dictionary]; - - NSDictionary *redDict = self.chamberCombatAbstract.sendGiftUids[@"2"]; - - for (ChamberCombatSquadConsumerMatrix *info in self.deficitConcludeGarment) { - [self.deficitSquadPresentFeaturePackbask setObject:[NSMutableSet set] forKey:info.uid]; - } - for (NSString *key in redDict) { - - NSArray *sendGiftUids = [redDict objectForKey:key]; - NSMutableSet *set = [NSMutableSet set]; - [set addObjectsFromArray:sendGiftUids]; - [self.deficitSquadPresentFeaturePackbask setObject:set forKey:key]; - } - } - - if (!self.disappointedSquadPresentFeaturePackbask) { - self.disappointedSquadPresentFeaturePackbask = [NSMutableDictionary dictionary]; - - NSDictionary *blueDict = self.chamberCombatAbstract.sendGiftUids[@"1"]; - - for (ChamberCombatSquadConsumerMatrix *info in self.disappointedConcludeGarment) { - [self.disappointedSquadPresentFeaturePackbask setObject:[NSMutableSet set] forKey:info.uid]; - } - - for (NSString *key in blueDict) { - - NSArray *sendGiftUids = [blueDict objectForKey:key]; - NSMutableSet *set = [NSMutableSet set]; - [set addObjectsFromArray:sendGiftUids]; - [self.disappointedSquadPresentFeaturePackbask setObject:set forKey:key]; - } - } - - for (ChamberCombatSquadConsumerMatrix *infor in self.deficitConcludeGarment) { - for (NSString *uid in sendGiftUses) { - NSString * userId = uid; - if ([userId isKindOfClass:[NSNumber class]]) { - userId = ((NSNumber *)userId).stringValue; - } - if (userId.integerValue == infor.uid.integerValue) { - NSMutableSet *set = [self.deficitSquadPresentFeaturePackbask objectForKey:infor.uid]; - if ([set containsObject:sendUid]) { - continue; - } else { - [set addObject:sendUid]; - } - } - } - } - - for (ChamberCombatSquadConsumerMatrix *infor in self.disappointedConcludeGarment) { - for (NSString *uid in sendGiftUses) { - NSString * userId = uid; - if ([userId isKindOfClass:[NSNumber class]]) { - userId = ((NSNumber *)userId).stringValue; - } - if (userId.integerValue == infor.uid.integerValue) { - NSMutableSet *set = [self.disappointedSquadPresentFeaturePackbask objectForKey:infor.uid]; - if ([set containsObject:sendUid]) { - continue; - } else { - [set addObject:sendUid]; - } - } - } - } - - - long blueTeamtotal = 0; - long redTeamtotal = 0; - for (NSString *key in self.deficitSquadPresentFeaturePackbask) { - NSMutableSet *set = [self.deficitSquadPresentFeaturePackbask objectForKey:key]; - redTeamtotal = redTeamtotal + set.count; - } - - for (NSString *key in self.disappointedSquadPresentFeaturePackbask) { - NSMutableSet *set = [self.disappointedSquadPresentFeaturePackbask objectForKey:key]; - blueTeamtotal = blueTeamtotal + set.count; - } - [self prohibitipositionDeficitSquadEarn:redTeamtotal disappointedSquadEarn:blueTeamtotal]; -} - -- (void)shankChamberCombatAbstractDiversifictowardsionDeclare { - self.isPlaying = NO; - if (self.chamberCombatAbstract) { - switch (_chamberCombatAbstract.pkStatus) { - case ChamberCombatPositionGenre_End: - [self shankBeginBtutonDeclare]; - break; - case ChamberCombatPositionGenre_Playing: - { - [MKJPopup dismiss]; - [self shankBeginBtutonDeclare]; - self.isPlaying = YES; - self.chamberCombatDisportingRegard.combatSpecificAbstract = self.chamberCombatAbstract; - self.chamberCombatDisportingRegard.deficitConcludeGarment = self.deficitConcludeGarment; - self.chamberCombatDisportingRegard.disappointedConcludeGarment = self.disappointedConcludeGarment; - [self.chamberCombatDisportingRegard prohibitipositionDeficitSquadEarn:self.deficitSquadEarn disappointedSquadEarn:self.disappointedSquadEarn]; - [MKJPopup popupRegard:self.chamberCombatDisportingRegard style:MKJPopupStyleAlert]; - } - break; - case ChamberCombatPositionGenre_ReStart: - case ChamberCombatPositionGenre_NonStart: - { - [self shankBeginBtutonDeclare]; - [self prohibititinctChamberCombatSquadTowardsoloudspeaker]; - [self suspeindChamberCombatComputtowardsionPubescence]; - } - - break; - default: - break; - } - } -} - -- (void)replacementChamberCombatGroupGenre { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - if ([self isOnMicro:uid]) { - MiecreoscoopeMHTueueMatrix * micModel = [self prohibiticoveryMiecreoscoopeAbstractByCid:uid]; - if (micModel.userInfo && micModel.userInfo.uid > 0 && micModel.userInfo.groupType != GroupGenre_default) { - micModel.userInfo.groupType = GroupGenre_default; - NIMChatroomQueueUpdateRequest *request = [[NIMChatroomQueueUpdateRequest alloc]init]; - request.key = [NSString stringWithFormat:@"%d", micModel.microState.position]; - request.value = [[self consumerAbstractToInthecaseofmtowardsionExt:micModel.userInfo] toJSONBWSttr]; - NSString * roomId = [NSString stringWithFormat:@"%ld", self.roomInfo.roomId]; - request.roomId = roomId; - request.transient = YES; - [[NIMSDK sharedSDK].chatroomManager updateChatroomQueueObject:request completion:^(NSError * _Nullable error) { - }]; - } - } -} - -- (NSDictionary *)consumerAbstractToInthecaseofmtowardsionExt:(ConsumerAbstractMatrix *)userInfo { - MiecreoscoopeExtMatrix * extModel = [[MiecreoscoopeExtMatrix alloc] init]; - extModel.gender = userInfo.gender; - extModel.avatar = userInfo.avatar; - extModel.uid = userInfo.uid; - extModel.nick = userInfo.nick; - extModel.headWearUrl = userInfo.headwearEffect.length > 0 ? userInfo.headwearEffect : userInfo.headwearPic; - extModel.micCircle = userInfo.micCircle; - extModel.micNickColor = userInfo.micNickColor; - extModel.groupType = userInfo.groupType; - return [extModel mtowardsrix2dictionary]; -} - -- (NSString *)chamberCombatSquadJsonBWSttr { - NSMutableArray * teamArray = [NSMutableArray array]; - for (int i = 0; i < self.deficitConcludeGarment.count; i++) { - ChamberCombatChooseConsumerMatrix * userInfo = [self.deficitConcludeGarment secureGroalTowardsIndictowardsrix1:i]; - NSMutableDictionary * redDic = [NSMutableDictionary dictionary]; - [redDic setObject:userInfo.uid forKey:@"uid"]; - [redDic setObject:@(userInfo.groupType) forKey:@"type"]; - [teamArray addObject:redDic]; - } - - for (int i = 0; i < self.disappointedConcludeGarment.count; i++) { - ChamberCombatChooseConsumerMatrix * userInfo = [self.disappointedConcludeGarment secureGroalTowardsIndictowardsrix1:i]; - NSMutableDictionary * blueDic = [NSMutableDictionary dictionary]; - [blueDic setObject:userInfo.uid forKey:@"uid"]; - [blueDic setObject:@(userInfo.groupType) forKey:@"type"]; - [teamArray addObject:blueDic]; - } - if (teamArray.count > 0) { - return [teamArray toJSONBWSttr]; - } - return @""; -} - -- (void)inititowardseChamberCombatComputtowardsionPubescence:(CGFloat)time { - __block long tempTime = time; - __weak typeof(self) weakSelf = self; - self.currentTime = tempTime; - if (self.timer != nil) { - dispatch_source_cancel(self.timer); - } - dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); - self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); - dispatch_source_set_timer(self.timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); - dispatch_source_set_event_handler(self.timer, ^{ - typeof(weakSelf) self = weakSelf; - if(tempTime <= 0){ - self.currentTime = 0; - dispatch_source_cancel(self.timer); - dispatch_async(dispatch_get_main_queue(), ^{ - [self examineChamberCombatConsequent]; - }); - } else { - dispatch_async(dispatch_get_main_queue(), ^{ - - NSInteger minute = tempTime / 60; - NSInteger second = (tempTime % 60); - NSString *timeStr = [NSString stringWithFormat:@"%02zd:%02zd", minute, second]; - self.intratemporalSequencignation.text= timeStr; - self.chamberCombatDisportingRegard.currentTime = timeStr; - }); - tempTime--; - self.currentTime = tempTime; - } - }); - dispatch_resume(self.timer); -} - -- (void)suspeindChamberCombatComputtowardsionPubescence { - if (self.timer) { - dispatch_source_cancel(_timer); - _timer = nil; - } -} - -- (void)prohibititinctChamberCombatSquadTowardsoloudspeaker { - [self.chamberCombatDisportingRegard prohibititinctChamberCombatTowardsoloudspeaker]; - self.deficitEarnSequencignation.text = @"0"; - self.disappointedEarnSequencignation.text = @"0"; - self.deficitSquadEarn = 0; - self.disappointedSquadEarn = 0; - self.deficitSquadPresentFeaturePackbask = nil; - self.disappointedSquadPresentFeaturePackbask = nil; - self.intratemporalSequencignation.text = YMLocalizedString(@"YUMI_Room_PK_Progress_View_2"); - [self.deficitGrowthRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(85); - }]; -} - -- (void)prohibitipositionDeficitSquadEarn:(long)deficitSquadEarn disappointedSquadEarn:(long)disappointedSquadEarn { - self.deficitSquadEarn = deficitSquadEarn; - self.disappointedSquadEarn = disappointedSquadEarn; - self.deficitEarnSequencignation.text = [NSString stringWithFormat:@"%ld", deficitSquadEarn]; - self.disappointedEarnSequencignation.text = [NSString stringWithFormat:@"%ld", disappointedSquadEarn]; - if (deficitSquadEarn > 0 || disappointedSquadEarn > 0) { - CGFloat redScale = (CGFloat)deficitSquadEarn / (CGFloat)(deficitSquadEarn + disappointedSquadEarn); - if (redScale == 1) { - redScale = 0.99; - } - - - [self.deficitGrowthRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(85 * 2 * redScale); - }]; - } - [self.chamberCombatDisportingRegard prohibitipositionDeficitSquadEarn:deficitSquadEarn disappointedSquadEarn:disappointedSquadEarn]; -} - -- (void)shankBeginBtutonDeclare { - if (self.chamberCombatAbstract) { - if (self.chamberCombatAbstract.pkStatus == ChamberCombatPositionGenre_Playing) { - self.beginBtuton.hidden = YES; - } else { - self.beginBtuton.hidden = !self.isManager; - } - } else { - self.beginBtuton.hidden = !self.isManager; - } -} - -#pragma mark - FBCChamberCombatPanelConsumerRegardRepresendtation -- (void)yUMIChamberCombatFasciaboardConsumerRegard:(YUMIChamberCombatFasciaboardConsumerRegard *)view didClickAddButton:(GroupGenre)type { - [MKJPopup dismiss]; - if (self.chamberCombatAbstract.pkStatus == ChamberCombatPositionGenre_Playing) { - self.chamberCombatDisportingRegard.combatSpecificAbstract = self.chamberCombatAbstract; - self.chamberCombatDisportingRegard.deficitConcludeGarment = self.deficitConcludeGarment; - self.chamberCombatDisportingRegard.disappointedConcludeGarment = self.disappointedConcludeGarment; - [self.chamberCombatDisportingRegard prohibitipositionDeficitSquadEarn:self.deficitSquadEarn disappointedSquadEarn:self.disappointedSquadEarn]; - [MKJPopup popupRegard:self.chamberCombatDisportingRegard style:MKJPopupStyleAlert]; - return; - } - - if (self.isManager) { - YUMIChamberCombatChosenConsumerRegard * chooseUserView = [[YUMIChamberCombatChosenConsumerRegard alloc] init]; - chooseUserView.delegate = self; - chooseUserView.deficitConsumerGarment = self.deficitConcludeGarment; - chooseUserView.disappointedConsumerGarment = self.disappointedConcludeGarment; - chooseUserView.groupType = type; - chooseUserView.miecreoscoopeFormationGarment = self.micQueue.allValues; - [MKJPopup popupRegard:chooseUserView style:MKJPopupStyleAlert]; - } else { - YUMIScheduleLoudspeakerAbstractMatrix * info = [[YUMIScheduleLoudspeakerAbstractMatrix alloc] init]; - info.roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; - info.roomId = [NSString stringWithFormat:@"%ld", self.roomInfo.roomId]; - info.nick = self.roomInfo.nick; - info.roomAvatar = self.roomInfo.avatar; - info.roomTitle = self.roomInfo.title; - info.micQueue = self.micQueue; - info.isManager = self.isManager; - info.type = ArrangeLoudspeakerGenre_Room_PK; - YUMIScheduleLoudspeakerRegardGovernancer * arrangeMicVC = [[YUMIScheduleLoudspeakerRegardGovernancer alloc] initAboutAbstract:info]; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController presentViewController:arrangeMicVC animated:YES completion:nil]; - } -} - -#pragma mark - FBCChamberCombatChosenConsumerRegardRepresendtation -- (void)yUMIChamberCombatChosenConsumerRegard:(YUMIChamberCombatChosenConsumerRegard *)view groupType:(GroupGenre)groupType didChooseUserInfos:(NSArray *)userInfos { - [MKJPopup dismiss]; - if (groupType == GroupGenre_Red) { - self.deficitConcludeGarment = userInfos; - } else { - self.disappointedConcludeGarment = userInfos; - } - if (self.deficitConcludeGarment.count > 0 || self.disappointedConcludeGarment.count > 0) { - NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - for (int i = 0 ; i< self.deficitConcludeGarment.count; i++) { - ChamberCombatChooseConsumerMatrix * model = [self.deficitConcludeGarment secureGroalTowardsIndictowardsrix1:i]; - if (model.uid.integerValue <= 0) { - continue; - } - NSMutableDictionary * data =[[model mtowardsrix2dictionary] mutableCopy]; - [data removeObjectForKey:@"title"]; - [data removeObjectForKey:@"imageName"]; - [data removeObjectForKey:@"userUrl"]; - [data removeObjectForKey:@"isSelect"]; - [data removeObjectForKey:@"isEnableChoose"]; - [dic setValue:data forKey:model.uid]; - } - - for (int i = 0 ; i< self.disappointedConcludeGarment.count; i++) { - ChamberCombatChooseConsumerMatrix * model = [self.disappointedConcludeGarment secureGroalTowardsIndictowardsrix1:i]; - if (model.uid.integerValue <= 0) { - continue; - } - NSMutableDictionary * data =[[model mtowardsrix2dictionary] mutableCopy]; - [data removeObjectForKey:@"title"]; - [data removeObjectForKey:@"imageName"]; - [data removeObjectForKey:@"userUrl"]; - [data removeObjectForKey:@"isSelect"]; - [data removeObjectForKey:@"isEnableChoose"]; - [dic setValue:data forKey:model.uid]; - } - - if (dic.allKeys.count > 0) { - AttachmentMatrix * attachment = [[AttachmentMatrix alloc] init]; - attachment.first = IndividualityCommunicationGenre_Room_PK; - attachment.second = Custom_Message_Sub_Room_PK_Manager_Up_Mic; - attachment.data = dic; - NSString * roomId = [NSString stringWithFormat:@"%ld", self.roomInfo.roomId]; - NSString *sessionID = roomId; - NIMMessage *message = [[NIMMessage alloc]init]; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachment; - message.messageObject = object; - - NIMSession *session = [NIMSession session:sessionID type:NIMSessionTypeChatroom]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; - } - } -} - -#pragma mark - FBCChamberCombatPlayingRegardRepresendtation -- (void)yUMIChamberCombatDisportingRegard:(YUMIChamberCombatDisportingRegard *)view didClickResetBegin:(UIButton *)sender { - [MKJPopup dismiss]; - [MKJPopup precautiousAboutCommunictowardsion:@"重新开始将会提前结束本次PK\n确认重新开始吗?" acknowledgementHandler:^{ - ChamberCombatAbstractMatrix * roompkInfo = self.chamberCombatAbstract; - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; - [Api produceChamberCombat:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - ChamberCombatAbstractMatrix * newRoomPKInfo = [ChamberCombatAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - self.chamberCombatAbstract = newRoomPKInfo; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } pkMode:[NSString stringWithFormat:@"%ld", roompkInfo.pkMode] voteMode:[NSString stringWithFormat:@"%ld", roompkInfo.voteMode] duration:[NSString stringWithFormat:@"%0.f", roompkInfo.duration] roomUid:roomUid operUid:[AccountAbstractStorage instance].acquireCid]; - } cancelHandler:^{ - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - if (self.chamberCombatAbstract.pkStatus == ChamberCombatPositionGenre_Playing) { - self.chamberCombatDisportingRegard.combatSpecificAbstract = self.chamberCombatAbstract; - self.chamberCombatDisportingRegard.deficitConcludeGarment = self.deficitConcludeGarment; - self.chamberCombatDisportingRegard.disappointedConcludeGarment = self.disappointedConcludeGarment; - [self.chamberCombatDisportingRegard prohibitipositionDeficitSquadEarn:self.deficitSquadEarn disappointedSquadEarn:self.disappointedSquadEarn]; - [MKJPopup popupRegard:self.chamberCombatDisportingRegard style:MKJPopupStyleAlert]; - } - }); - }]; -} - -#pragma mark - Event Response -- (void)instituteBtutonPerformance:(UIButton *)sender { - if (self.chamberCombatAbstract != nil) { - ChamberCombatAbstractMatrix * roompkInfo = self.chamberCombatAbstract; - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; - if (self.deficitConcludeGarment.count > 0 && self.disappointedConcludeGarment.count > 0) { - if (self.chamberCombatAbstract.pkStatus == ChamberCombatPositionGenre_End || self.chamberCombatAbstract.pkStatus == ChamberCombatPositionGenre_ReStart) { - [MKJPopup precautiousAboutCommunictowardsion:@"是否再次开始PK?" acknowledgementHandler:^{ - [Api produceChamberCombat:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - ChamberCombatAbstractMatrix * newRoomPKInfo = [ChamberCombatAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - self.chamberCombatAbstract = newRoomPKInfo; - NSString * teamJsonStr = [self chamberCombatSquadJsonBWSttr]; - - [Api begainChamberCombat:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - ChamberCombatAbstractMatrix * chamberCombatAbstract = [ChamberCombatAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - self.chamberCombatAbstract = chamberCombatAbstract; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } roomUid:roomUid pkId:newRoomPKInfo.pkId joinUsers:teamJsonStr]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } pkMode:[NSString stringWithFormat:@"%ld", roompkInfo.pkMode] voteMode:[NSString stringWithFormat:@"%ld", roompkInfo.voteMode] duration:[NSString stringWithFormat:@"%0.f", roompkInfo.duration] roomUid:roomUid operUid:[AccountAbstractStorage instance].acquireCid]; - } cancelHandler:^{ - - }]; - } else if(self.chamberCombatAbstract.pkStatus == ChamberCombatPositionGenre_Playing) { - [self didBetowardsEncourageIndictowardseRecognition]; - } else if(self.chamberCombatAbstract.pkStatus == ChamberCombatPositionGenre_NonStart) { - [MKJPopup precautiousAboutCommunictowardsion:@"当前正在准备阶段,是否确认准备开始PK?" acknowledgementHandler:^{ - NSString * teamJsonStr = [self chamberCombatSquadJsonBWSttr]; - - [Api begainChamberCombat:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - ChamberCombatAbstractMatrix * chamberCombatAbstract = [ChamberCombatAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - self.chamberCombatAbstract = chamberCombatAbstract; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } roomUid:roomUid pkId:self.chamberCombatAbstract.pkId joinUsers:teamJsonStr]; - } cancelHandler:^{ - - }]; - } - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Room_PK_Progress_View_6")]; - } - }else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Room_PK_Progress_View_7")]; - [self importChamberAcquireChamberCombatSpecificAbstract]; - } -} - -- (void)didBetowardsEncourageIndictowardseRecognition { - if (self.chamberCombatAbstract.pkStatus == ChamberCombatPositionGenre_Playing) { - [MKJPopup dismiss]; - self.chamberCombatDisportingRegard.combatSpecificAbstract = self.chamberCombatAbstract; - self.chamberCombatDisportingRegard.deficitConcludeGarment = self.deficitConcludeGarment; - self.chamberCombatDisportingRegard.disappointedConcludeGarment = self.disappointedConcludeGarment; - [self.chamberCombatDisportingRegard prohibitipositionDeficitSquadEarn:self.deficitSquadEarn disappointedSquadEarn:self.disappointedSquadEarn]; - [MKJPopup popupRegard:self.chamberCombatDisportingRegard style:MKJPopupStyleAlert]; - } -} - -#pragma mark - Getters And Setters -- (void)setMicQueue:(NSMutableDictionary *)micQueue { - _micQueue = micQueue; - if (self.chamberCombatAbstract.pkStatus != ChamberCombatPositionGenre_Playing) { - NSMutableArray * redArray = [NSMutableArray array]; - NSMutableArray * blueArray = [NSMutableArray array]; - for (int i = 0 ; i < _micQueue.allValues.count; i++) { - MiecreoscoopeMHTueueMatrix * micModel = [_micQueue.allValues secureGroalTowardsIndictowardsrix1:i]; - if (micModel.userInfo && micModel.userInfo.uid > 0) { - ConsumerAbstractMatrix * userInfo = micModel.userInfo; - if (userInfo.groupType == GroupGenre_Red) { - ChamberCombatChooseConsumerMatrix * redInfo = [[ChamberCombatChooseConsumerMatrix alloc] init]; - redInfo.avatar = userInfo.avatar; - redInfo.uid = [NSString stringWithFormat:@"%ld", userInfo.uid]; - redInfo.nick = userInfo.nick; - redInfo.groupType = userInfo.groupType; - redInfo.position = micModel.microState.position; - [redArray addObject:redInfo]; - } else if(userInfo.groupType == GroupGenre_Blue) { - ChamberCombatChooseConsumerMatrix * blueInfo = [[ChamberCombatChooseConsumerMatrix alloc] init]; - blueInfo.avatar = userInfo.avatar; - blueInfo.nick = userInfo.nick; - blueInfo.uid = [NSString stringWithFormat:@"%ld", userInfo.uid]; - blueInfo.groupType = userInfo.groupType; - blueInfo.position = micModel.microState.position; - [blueArray addObject:blueInfo]; - } - } - } - self.deficitConcludeGarment = redArray.copy; - self.disappointedConcludeGarment = blueArray.copy; - } -} - - -- (void)setIsManager:(BOOL)isManager { - _isManager = isManager; - [self shankBeginBtutonDeclare]; - self.chamberCombatDisportingRegard.isManager = _isManager; -} - -- (void)setDeficitConcludeGarment:(NSArray *)deficitConcludeGarment { - _deficitConcludeGarment = deficitConcludeGarment; - self.deficitSquadRegard.consumerGarment = _deficitConcludeGarment; - self.chamberCombatDisportingRegard.deficitConcludeGarment = _deficitConcludeGarment; -} - -- (void)setDisappointedConcludeGarment:(NSArray *)disappointedConcludeGarment { - _disappointedConcludeGarment = disappointedConcludeGarment; - self.disappointedSquadRegard.consumerGarment = _disappointedConcludeGarment; - self.chamberCombatDisportingRegard.disappointedConcludeGarment = _disappointedConcludeGarment; -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_progrss_background"]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didBetowardsEncourageIndictowardseRecognition)]; - [_encourageIndicateRegard addGestureRecognizer:tap]; - } - return _encourageIndicateRegard; -} - -- (UILabel *)intratemporalSequencignation { - if (!_intratemporalSequencignation) { - _intratemporalSequencignation = [[UILabel alloc] init]; - _intratemporalSequencignation.font = [UIFont systemFontOfSize:10]; - _intratemporalSequencignation.textColor = UIColorFromRGB(0x602A06); - _intratemporalSequencignation.textAlignment = NSTextAlignmentCenter; - _intratemporalSequencignation.text= YMLocalizedString(@"YUMI_Room_PK_Progress_View_8"); - } - return _intratemporalSequencignation; -} - -- (YUMIChamberCombatFasciaboardConsumerRegard *)deficitSquadRegard { - if (!_deficitSquadRegard) { - _deficitSquadRegard = [[YUMIChamberCombatFasciaboardConsumerRegard alloc] init]; - _deficitSquadRegard.itemAltitude = 25; - _deficitSquadRegard.type = GroupGenre_Red; - _deficitSquadRegard.delegate = self; - } - return _deficitSquadRegard; -} - -- (YUMIChamberCombatFasciaboardConsumerRegard *)disappointedSquadRegard { - if (!_disappointedSquadRegard) { - _disappointedSquadRegard = [[YUMIChamberCombatFasciaboardConsumerRegard alloc] init]; - _disappointedSquadRegard.itemAltitude = 25; - _disappointedSquadRegard.type = GroupGenre_Blue; - _disappointedSquadRegard.delegate = self; - } - return _disappointedSquadRegard; -} - -- (UIView *)progressView { - if (!_progressView) { - _progressView = [[UIView alloc] init]; - _progressView.backgroundColor = [UIColor clearColor]; - } - return _progressView; -} - -- (UIImageView *)deficitGrowthRegard { - if (!_deficitGrowthRegard) { - _deficitGrowthRegard = [[UIImageView alloc] init]; - _deficitGrowthRegard.userInteractionEnabled = YES; - _deficitGrowthRegard.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFA96AE), UIColorFromRGB(0xE943F8)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)]; - _deficitGrowthRegard.contentMode = UIViewContentModeScaleAspectFill; - _deficitGrowthRegard.layer.masksToBounds = YES; - } - return _deficitGrowthRegard; -} - -- (UIImageView *)disappointedGrowthRegard { - if (!_disappointedGrowthRegard) { - _disappointedGrowthRegard = [[UIImageView alloc] init]; - _disappointedGrowthRegard.userInteractionEnabled = YES; - _disappointedGrowthRegard.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0x4F7AFF), UIColorFromRGB(0x44C0FE)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)]; - _disappointedGrowthRegard.contentMode = UIViewContentModeScaleAspectFill; - _disappointedGrowthRegard.layer.masksToBounds = YES; - } - return _disappointedGrowthRegard; -} - -- (UIImageView *)growthBurlywoodRegard { - if (!_growthBurlywoodRegard) { - _growthBurlywoodRegard = [[UIImageView alloc] init]; - _growthBurlywoodRegard.userInteractionEnabled = YES; - _growthBurlywoodRegard.image = [UIImage imageNamed:@"yumi_scope_pk_progrss_line_background"]; - } - return _growthBurlywoodRegard; -} - -- (UILabel *)deficitEarnSequencignation { - if (!_deficitEarnSequencignation) { - _deficitEarnSequencignation = [[UILabel alloc] init]; - _deficitEarnSequencignation.text = @"0"; - _deficitEarnSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _deficitEarnSequencignation.textColor = UIColor.whiteColor; - _deficitEarnSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _deficitEarnSequencignation; -} - -- (UILabel *)disappointedEarnSequencignation { - if (!_disappointedEarnSequencignation) { - _disappointedEarnSequencignation = [[UILabel alloc] init]; - _disappointedEarnSequencignation.text = @"0"; - _disappointedEarnSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _disappointedEarnSequencignation.textColor = UIColor.whiteColor; - _disappointedEarnSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _disappointedEarnSequencignation; -} - -- (UIButton *)beginBtuton { - if (!_beginBtuton) { - _beginBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_beginBtuton setTitle:@"开始PK" forState:UIControlStateNormal]; - [_beginBtuton setTitleColor:UIColorFromRGB(0x602A06) forState:UIControlStateNormal]; - _beginBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_beginBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFFDAA8), UIColorFromRGB(0xFFBD64)] gradientType:GradientGenreUpleftToLowright imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _beginBtuton.layer.masksToBounds = YES; - _beginBtuton.layer.cornerRadius = 12; - _beginBtuton.hidden = YES; - [_beginBtuton addTarget:self action:@selector(instituteBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _beginBtuton; -} - -- (YUMIChamberCombatDisportingRegard *)chamberCombatDisportingRegard { - if (!_chamberCombatDisportingRegard) { - _chamberCombatDisportingRegard = [[YUMIChamberCombatDisportingRegard alloc] init]; - _chamberCombatDisportingRegard.delegate = self; - } - return _chamberCombatDisportingRegard; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatReflectionRegardGovernancer.h b/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatReflectionRegardGovernancer.h deleted file mode 100644 index 63e2db9d..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatReflectionRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomPKRecordViewController.h -// YUMI -// -// Created by YUMI on 2022/3/18. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberCombatReflectionRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,copy) NSString *roomUid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatReflectionRegardGovernancer.m b/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatReflectionRegardGovernancer.m deleted file mode 100644 index b10aa360..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatReflectionRegardGovernancer.m +++ /dev/null @@ -1,160 +0,0 @@ -// -// YMRoomPKRecordViewController.m -// YUMI -// -// Created by YUMI on 2022/3/18. -// - -#import "YUMIChamberCombatReflectionRegardGovernancer.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "ChamberCombatReflectionMatrix.h" -#import "YUMIChamberCombatReflectionTabulationRegardElement.h" -#import "YUMIChamberCombatDispossessTabulationRegardElement.h" -#import "YUMIChamberCombatReflectionExternalizer.h" -#import "FBCChamberCombatRecordCeremony.h" -@interface YUMIChamberCombatReflectionRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,assign) int page; -@property (nonatomic,assign) BOOL hasFurthaerAtoloudspeaker; -@end - -@implementation YUMIChamberCombatReflectionRegardGovernancer - -- (YUMIChamberCombatReflectionExternalizer *)producePresimport { - return [[YUMIChamberCombatReflectionExternalizer alloc] init];; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initIntelligencerGrantedTerminalerRrfresh]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Room_PK_Record_View_Controller_0"); - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -- (void)initIntelligencerGrantedTerminalerRrfresh { - self.hasFurthaerAtoloudspeaker = YES; - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - - [self intelligenceerRenovtowardseh]; -} - -- (void)intelligenceerRenovtowardseh { - self.page = 1; - [self.presimport acquireChamberCombatReflectionSttowardsement:self.roomUid page:self.page pageSize:20 state:0]; -} - -- (void)footerRenovtowardseh { - if (!self.hasFurthaerAtoloudspeaker) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Room_PK_Record_View_Controller_1")]; - return; - } - self.page++; - [self.presimport acquireChamberCombatReflectionSttowardsement:self.roomUid page:self.page pageSize:20 state:1]; -} - - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - return 170; - } - return (KScreenHeight - kNavigationHeight); -} -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMIChamberCombatReflectionTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIChamberCombatReflectionTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIChamberCombatReflectionTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIChamberCombatReflectionTabulationRegardElement class])]; - } - ChamberCombatReflectionMatrix * reflectionMatrix = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.combatSpecificAbstract = reflectionMatrix; - return cell; - } - - YUMIChamberCombatDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIChamberCombatDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIChamberCombatDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIChamberCombatDispossessTabulationRegardElement class])]; - } - return cell; -} - -#pragma mark - FBCChamberCombatRecordCeremony -- (void)acquireChamberCombatReflectionSttowardsementFlunk:(NSString *)message state:(int)state { - if (state == 0) { - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_header endRefreshing]; - } -} - -- (void)acquireChamberCombatReflectionSttowardsementAccomplishment:(NSArray *)recordList state:(int)state { - if (state == 0) { - [self.datasource removeAllObjects]; - [self.tableView.mj_header endRefreshing]; - } else { - [self.tableView.mj_footer endRefreshing]; - } - self.hasFurthaerAtoloudspeaker = recordList.count > 0; - if (recordList.count > 0) { - [self.datasource addObjectsFromArray:recordList]; - } - [self.tableView reloadData]; -} -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIChamberCombatReflectionTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIChamberCombatReflectionTabulationRegardElement class])]; - [_tableView registerClass:[YUMIChamberCombatDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIChamberCombatDispossessTabulationRegardElement class])]; - } - return _tableView; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatRegardGovernancer.h b/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatRegardGovernancer.h deleted file mode 100644 index c2a720fc..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomPKViewController.h -// YUMI -// -// Created by YUMI on 2022/3/17. -// - -#import "MvpRegardGovernancer.h" -#import "ChamberHostRepresendtation.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberCombatRegardGovernancer : MvpRegardGovernancer -- (instancetype)initWithDelegate:(id)delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatRegardGovernancer.m b/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatRegardGovernancer.m deleted file mode 100644 index 7e313fc8..00000000 --- a/YuMi/Modules/YMRoom/View/RoomPK/View/YUMIChamberCombatRegardGovernancer.m +++ /dev/null @@ -1,490 +0,0 @@ -// -// YMRoomPKViewController.m -// YUMI -// -// Created by YUMI on 2022/3/17. -// - -#import "YUMIChamberCombatRegardGovernancer.h" -#import -#import "MKJPopup.h" -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "NSObject+MJExtension.h" -#import "NSArray+Safe.h" -#import "ChamberCombatIntratemporalProvisionMatrix.h" -#import "ChamberAbstractMatrix.h" -#import "ChamberCombatChooseConsumerMatrix.h" -#import "AttachmentMatrix.h" -#import "ChamberCombatChooseConsumerMatrix.h" -#import "YUMIChamberCombatVoteTabulationRegardElement.h" -#import "YUMIChamberCombatGenreTabulationRegardElement.h" -#import "YUMIChamberCombatIntratemporalTabulationRegardElement.h" -#import "YUMIChamberCombatConsumerRegard.h" -#import "YUMIChamberCombatIntratemporalPickerRegard.h" -#import "YUMIChamberCombatReflectionRegardGovernancer.h" -#import "YUMIChamberCombatChosenConsumerRegard.h" -#import "YUMIChamberCombatExternalizer.h" -#import "FBCChamberCombatCeremony.h" -@interface YUMIChamberCombatRegardGovernancer () -@property (nonatomic,strong) UIView * consumerAccommoengagementdRegard; -@property (nonatomic,strong) NSArray *deficitSquadRegards; -@property (nonatomic,strong) NSArray *disappointedSquadRegards; -@property (nonatomic,strong) UIImageView *chamberCombatBrandIndicateRegard; -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) UIStackView *produceCombatHierarchyRegard; -@property (nonatomic,strong) UIButton *produceCombatBtuton; -@property (nonatomic,strong) UIButton *onceFurthaeroverCombatBtuton; -@property (nonatomic,strong) UIButton *concludeCombatBtuton; -@property (nonatomic,assign) id hostRepresedtation; -@property (nonatomic,assign) ChamberCombatVoteModeGenre voteGenre; -@property (nonatomic,assign) int duraIntratemporal; -@property (nonatomic,strong) NSMutableArray *deficitConsumerGarment; -@property (nonatomic,strong) NSMutableArray *disappointedConsumerGarment; -@end - -@implementation YUMIChamberCombatRegardGovernancer - -- (YUMIChamberCombatExternalizer *)producePresimport { - return [[YUMIChamberCombatExternalizer alloc] init]; -} - -- (instancetype)initWithDelegate:(id)delegate { - if (self = [super init]) { - self.hostRepresedtation = delegate; - } - return self; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = @"创建PK"; - self.duraIntratemporal = 30; - self.voteGenre = ChamberCombatVoteModeGenre_GiftValue; - NSArray * array = self.hostRepresedtation.acquireChamberCombatGroupSquadSttowardsement; - self.deficitConsumerGarment = [array secureGroalTowardsIndictowardsrix1:0]; - self.disappointedConsumerGarment = [array secureGroalTowardsIndictowardsrix1:1]; - for (ChamberCombatChooseConsumerMatrix * userInfo in self.deficitConsumerGarment) { - userInfo.groupType = GroupGenre_default; - } - - for (ChamberCombatChooseConsumerMatrix * userInfo in self.disappointedConsumerGarment) { - userInfo.groupType = GroupGenre_default; - } - - [self accelertowardseBreeadcrumbProvisionAboutChampions:@[YMLocalizedString(@"YUMI_Room_PK_View_Controller_1")] titleColor:[DJDKMIMOMColor mainEssayPrettify] isContrary:NO target:self action:@selector(rectifyNevPerformance:) tags:nil]; - [self.view addSubview:self.consumerAccommoengagementdRegard]; - [self.view addSubview:self.tableView]; - [self.view addSubview:self.produceCombatHierarchyRegard]; - - [self.produceCombatHierarchyRegard addArrangedSubview:self.produceCombatBtuton]; - [self.produceCombatHierarchyRegard addArrangedSubview:self.onceFurthaeroverCombatBtuton]; - [self.produceCombatHierarchyRegard addArrangedSubview:self.concludeCombatBtuton]; - - [self.consumerAccommoengagementdRegard addSubview:self.chamberCombatBrandIndicateRegard]; - [self initConsumerAccommoengagementdChildLys]; - - - if (self.hostRepresedtation.acquireChamberAbstract.roomModeType == ChamberModeGenre_Open_PK_Mode) { - self.onceFurthaeroverCombatBtuton.hidden = NO; - self.concludeCombatBtuton.hidden = NO; - self.produceCombatBtuton.hidden = YES; - } else { - self.produceCombatBtuton.hidden = NO; - } -} - -- (void)initChildLyRestrictions { - YUMIChamberCombatConsumerRegard * consumerRegard = [self.deficitSquadRegards lastObject]; - [self.consumerAccommoengagementdRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.top.mas_equalTo(self.view).offset(10); - make.bottom.mas_equalTo(consumerRegard.mas_bottom).offset(20); - }]; - - [self.chamberCombatBrandIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.mas_equalTo(self.consumerAccommoengagementdRegard); - make.width.mas_equalTo(43); - make.height.mas_equalTo(64); - }]; - - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.top.mas_equalTo(self.consumerAccommoengagementdRegard.mas_bottom); - }]; - - [self.produceCombatHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view).inset(47); - make.bottom.mas_equalTo(self.view).offset(-kSafeAreaBottomHeight - 20); - }]; - - [self.produceCombatBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(44); - }]; - - [self.onceFurthaeroverCombatBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(44); - }]; - - [self.concludeCombatBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(44); - }]; -} - -- (void)initConsumerAccommoengagementdChildLys { - CGFloat itemWidth = 60; - CGFloat itemAltitude = 67; - CGFloat pkItemWidth = 72; - CGFloat pkItemMargeHeight = 10; - CGFloat itemSpace = (KScreenWidth - itemWidth * 4 - 72 - 13 * 2)/ 2; - NSMutableArray * redArray = [NSMutableArray array]; - for (int i = 0; i< 4; i++) { - YUMIChamberCombatConsumerRegard * redView = [[YUMIChamberCombatConsumerRegard alloc] init]; - [redArray addObject:redView]; - redView.type = ChamberCombatConsumerRegardGenre_Red; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(deficitDidBetowardsRecognition:)]; - [redView addGestureRecognizer:tap]; - [self.consumerAccommoengagementdRegard addSubview:redView]; - [redView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(itemWidth, itemAltitude)); - make.left.mas_equalTo(self.consumerAccommoengagementdRegard).offset(13+ i % 2 * (itemWidth + itemSpace)); - make.top.mas_equalTo(self.consumerAccommoengagementdRegard).offset(i / 2 *(itemAltitude + pkItemMargeHeight)); - }]; - } - self.deficitSquadRegards = [redArray copy]; - - NSMutableArray * blueArray = [NSMutableArray array]; - for (int i = 0; i< 4; i++) { - YUMIChamberCombatConsumerRegard * blueView = [[YUMIChamberCombatConsumerRegard alloc] init]; - [blueArray addObject:blueView]; - blueView.type = ChamberCombatConsumerRegardGenre_Blue; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(prohibitiaplictowardsionointedDidBetowardsRecognition:)]; - [blueView addGestureRecognizer:tap]; - [self.consumerAccommoengagementdRegard addSubview:blueView]; - [blueView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(itemWidth, itemAltitude)); - make.left.mas_equalTo(self.consumerAccommoengagementdRegard).offset(13 + itemWidth * 2 + itemSpace + pkItemWidth + i % 2 * (itemWidth + itemSpace)); - make.top.mas_equalTo(self.consumerAccommoengagementdRegard).offset(i / 2 *(itemAltitude + pkItemMargeHeight)); - }]; - } - self.disappointedSquadRegards = [blueArray copy]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return 3; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 50; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (indexPath.row == 0) { - YUMIChamberCombatGenreTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIChamberCombatGenreTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIChamberCombatGenreTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIChamberCombatGenreTabulationRegardElement class])]; - } - return cell; - } else if(indexPath.row == 1) { - YUMIChamberCombatVoteTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIChamberCombatVoteTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIChamberCombatVoteTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIChamberCombatVoteTabulationRegardElement class])]; - } - cell.delegate = self; - return cell; - } else { - YUMIChamberCombatIntratemporalTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIChamberCombatIntratemporalTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIChamberCombatIntratemporalTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIChamberCombatIntratemporalTabulationRegardElement class])]; - } - return cell; - } -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (indexPath.row == 2) { - YUMIChamberCombatIntratemporalPickerRegard * timePicker = [[YUMIChamberCombatIntratemporalPickerRegard alloc] init]; - timePicker.delegate = self; - [MKJPopup popupRegard:timePicker style:MKJPopupStyleActionSheet]; - } -} -#pragma mark - FBCChamberCombatTimePickerRegardRepresendtation -- (void)yUMIChamberCombatIntrtowardsemporalExtracterRegard:(YUMIChamberCombatIntratemporalPickerRegard *)view timeModel:(ChamberCombatIntratemporalProvisionMatrix *)model { - YUMIChamberCombatIntratemporalTabulationRegardElement * cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:2 inSection:0]]; - self.duraIntratemporal = model.time; - cell.time = model.title; -} - -#pragma mark - FBCChamberCombatVoteTabulationViweElementRepresendtation -- (void)yUMIChamberCombatVoteTarbsultowardsionViweElement:(YUMIChamberCombatVoteTabulationRegardElement *)view didChooseVoteType:(ChamberCombatVoteModeGenre)VoteType { - self.voteGenre = VoteType; -} - -#pragma mark - FBCChamberCombatChosenConsumerRegardRepresendtation -- (void)yUMIChamberCombatChosenConsumerRegard:(YUMIChamberCombatChosenConsumerRegard *)view groupType:(GroupGenre)groupType didChooseUserInfos:(NSArray *)userInfos { - [MKJPopup dismiss]; - if (groupType == GroupGenre_Red) { - self.deficitConsumerGarment = [NSMutableArray arrayWithArray:userInfos];; - } else { - self.disappointedConsumerGarment = [NSMutableArray arrayWithArray:userInfos]; - } - - if (self.deficitConsumerGarment.count > 0) { - for (int i = 0; i< self.deficitSquadRegards.count; i++) { - YUMIChamberCombatConsumerRegard * consumerRegard = [self.deficitSquadRegards secureGroalTowardsIndictowardsrix1:i]; - consumerRegard.userInfo = nil; - } - } - - if (self.disappointedConsumerGarment.count > 0) { - for (int i = 0; i< self.disappointedSquadRegards.count; i++) { - YUMIChamberCombatConsumerRegard * consumerRegard = [self.disappointedSquadRegards secureGroalTowardsIndictowardsrix1:i]; - consumerRegard.userInfo = nil; - } - } - - - for (int i = 0; i < self.deficitConsumerGarment.count; i++) { - ChamberCombatChooseConsumerMatrix * userInfo = [self.deficitConsumerGarment secureGroalTowardsIndictowardsrix1:i]; - if (i < self.deficitSquadRegards.count) { - YUMIChamberCombatConsumerRegard * consumerRegard = [self.deficitSquadRegards secureGroalTowardsIndictowardsrix1:i]; - if (userInfo.groupType == GroupGenre_Red) { - consumerRegard.userInfo = userInfo; - } else { - consumerRegard.userInfo = nil; - [self.deficitConsumerGarment removeObject:userInfo]; - } - } - } - for (int i = 0; i < self.disappointedConsumerGarment.count; i++) { - ChamberCombatChooseConsumerMatrix * userInfo = [self.disappointedConsumerGarment secureGroalTowardsIndictowardsrix1:i]; - if (i < self.disappointedSquadRegards.count) { - YUMIChamberCombatConsumerRegard * consumerRegard = [self.disappointedSquadRegards secureGroalTowardsIndictowardsrix1:i]; - if (userInfo.groupType == GroupGenre_Blue) { - consumerRegard.userInfo = userInfo; - } else { - consumerRegard.userInfo = nil; - [self.disappointedConsumerGarment removeObject:userInfo]; - } - } - } -} - -#pragma mark - FBCChamberCombatCeremony -- (void)unfoildChamberCombatAccomplishment { - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.uid]; - [self.presimport produceChamberCombatManner:2 voteMode:self.voteGenre duration:self.duraIntratemporal roomUid:roomUid]; -} - -- (void)concludeChamberCombatAccomplishment { - [self.navigationController popViewControllerAnimated:YES]; -} - -- (void)produceChamberCombatAccomplishment:(ChamberCombatAbstractMatrix *)roompkInfo { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Room_PK_View_Controller_2")]; - if (self.deficitConsumerGarment.count > 0 || self.disappointedConsumerGarment.count > 0) { - NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - for (int i = 0 ; i< self.deficitConsumerGarment.count; i++) { - ChamberCombatChooseConsumerMatrix * model = [self.deficitConsumerGarment secureGroalTowardsIndictowardsrix1:i]; - if (model.uid.integerValue <= 0) { - continue; - } - NSMutableDictionary * data =[[model mtowardsrix2dictionary] mutableCopy]; - [data removeObjectForKey:@"title"]; - [data removeObjectForKey:@"imageName"]; - [data removeObjectForKey:@"userUrl"]; - [data removeObjectForKey:@"isSelect"]; - [data removeObjectForKey:@"isEnableChoose"]; - [dic setValue:data forKey:model.uid]; - } - - for (int i = 0 ; i< self.disappointedConsumerGarment.count; i++) { - ChamberCombatChooseConsumerMatrix * model = [self.disappointedConsumerGarment secureGroalTowardsIndictowardsrix1:i]; - if (model.uid.integerValue <= 0) { - continue; - } - NSMutableDictionary * data =[[model mtowardsrix2dictionary] mutableCopy]; - [data removeObjectForKey:@"title"]; - [data removeObjectForKey:@"imageName"]; - [data removeObjectForKey:@"userUrl"]; - [data removeObjectForKey:@"isSelect"]; - [data removeObjectForKey:@"isEnableChoose"]; - [dic setValue:data forKey:model.uid]; - } - - if (dic.allKeys.count > 0) { - AttachmentMatrix * attachment = [[AttachmentMatrix alloc] init]; - attachment.first = IndividualityCommunicationGenre_Room_PK; - attachment.second = Custom_Message_Sub_Room_PK_Manager_Up_Mic; - attachment.data = dic; - NSString *sessionID = [NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.roomId]; - NIMMessage *message = [[NIMMessage alloc]init]; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachment; - message.messageObject = object; - - NIMSession *session = [NIMSession session:sessionID type:NIMSessionTypeChatroom]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; - } - } - [self.navigationController popViewControllerAnimated:YES]; -} - -#pragma mark - Event Response -- (void)produceCombatBtutonPerformance:(UIButton *)sender { - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.uid]; - [self.presimport unfoildChamberCombat:roomUid]; -} - -- (void)concludeCombatBtutonPerformance:(UIButton *)sender { - NSString * title = @"结束PK,会关闭现在进行的PK并恢复普通房间模式,确定关闭当前PK吗?"; - [MKJPopup precautiousAboutCommunictowardsion:title acknowledgementHandler:^{ - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.uid]; - [self.presimport concludeChamberCombat:roomUid]; - } cancelHandler:^{ - - }]; - -} - -- (void)onceAgainCombatBtutonPerformance:(UIButton *)sender { - NSString * title = @"创建此PK,会覆盖现在进行的PK,\n 确定覆盖当前PK吗?"; - [MKJPopup precautiousAboutCommunictowardsion:title acknowledgementHandler:^{ - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.uid]; - [self.presimport produceChamberCombatManner:2 voteMode:self.voteGenre duration:self.duraIntratemporal roomUid:roomUid]; - } cancelHandler:^{ - - }]; -} - -- (void)rectifyNevPerformance:(UIButton *)sender { - YUMIChamberCombatReflectionRegardGovernancer * recordVC = [[YUMIChamberCombatReflectionRegardGovernancer alloc] init]; - recordVC.roomUid = [NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.uid]; - [self.navigationController pushViewController:recordVC animated:YES]; -} - -- (void)deficitDidBetowardsRecognition:(UITapGestureRecognizer *)tap { - YUMIChamberCombatChosenConsumerRegard * chooseUserView = [[YUMIChamberCombatChosenConsumerRegard alloc] init]; - chooseUserView.delegate = self; - chooseUserView.deficitConsumerGarment = self.deficitConsumerGarment; - chooseUserView.disappointedConsumerGarment = self.disappointedConsumerGarment; - chooseUserView.groupType = GroupGenre_Red; - chooseUserView.miecreoscoopeFormationGarment = self.hostRepresedtation.acquireMiecreoscoopeInthecaseofmtowardsion.allValues; - [MKJPopup popupRegard:chooseUserView style:MKJPopupStyleAlert]; -} - -- (void)prohibitiaplictowardsionointedDidBetowardsRecognition:(UITapGestureRecognizer *)tap { - YUMIChamberCombatChosenConsumerRegard * chooseUserView = [[YUMIChamberCombatChosenConsumerRegard alloc] init]; - chooseUserView.delegate = self; - chooseUserView.deficitConsumerGarment = self.deficitConsumerGarment; - chooseUserView.disappointedConsumerGarment = self.disappointedConsumerGarment; - chooseUserView.groupType = GroupGenre_Blue; - chooseUserView.miecreoscoopeFormationGarment = self.hostRepresedtation.acquireMiecreoscoopeInthecaseofmtowardsion.allValues; - [MKJPopup popupRegard:chooseUserView style:MKJPopupStyleAlert]; -} - -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - _tableView.scrollEnabled = NO; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIChamberCombatVoteTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIChamberCombatVoteTabulationRegardElement class])]; - [_tableView registerClass:[YUMIChamberCombatGenreTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIChamberCombatGenreTabulationRegardElement class])]; - [_tableView registerClass:[YUMIChamberCombatIntratemporalTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIChamberCombatIntratemporalTabulationRegardElement class])]; - } - return _tableView; -} - -- (UIStackView *)produceCombatHierarchyRegard { - if (!_produceCombatHierarchyRegard) { - _produceCombatHierarchyRegard = [[UIStackView alloc] init]; - _produceCombatHierarchyRegard.axis = UILayoutConstraintAxisVertical; - _produceCombatHierarchyRegard.distribution = UIStackViewDistributionFill; - _produceCombatHierarchyRegard.alignment = UIStackViewAlignmentFill; - _produceCombatHierarchyRegard.spacing = 10; - } - return _produceCombatHierarchyRegard; -} - -- (UIButton *)produceCombatBtuton { - if (!_produceCombatBtuton) { - _produceCombatBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_produceCombatBtuton setTitle:YMLocalizedString(@"YUMI_Room_PK_View_Controller_5") forState:UIControlStateNormal]; - [_produceCombatBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _produceCombatBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_produceCombatBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _produceCombatBtuton.layer.masksToBounds = YES; - _produceCombatBtuton.layer.cornerRadius = 22; - [_produceCombatBtuton addTarget:self action:@selector(produceCombatBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _produceCombatBtuton; -} - -- (UIButton *)onceFurthaeroverCombatBtuton { - if (!_onceFurthaeroverCombatBtuton) { - _onceFurthaeroverCombatBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_onceFurthaeroverCombatBtuton setTitle:YMLocalizedString(@"YUMI_Room_PK_View_Controller_6") forState:UIControlStateNormal]; - [_onceFurthaeroverCombatBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _onceFurthaeroverCombatBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_onceFurthaeroverCombatBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _onceFurthaeroverCombatBtuton.layer.masksToBounds = YES; - _onceFurthaeroverCombatBtuton.layer.cornerRadius = 22; - [_onceFurthaeroverCombatBtuton addTarget:self action:@selector(onceAgainCombatBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _onceFurthaeroverCombatBtuton.hidden = YES; - } - return _onceFurthaeroverCombatBtuton; -} - -- (UIButton *)concludeCombatBtuton { - if (!_concludeCombatBtuton) { - _concludeCombatBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_concludeCombatBtuton setTitle:YMLocalizedString(@"YUMI_Room_PK_View_Controller_7") forState:UIControlStateNormal]; - [_concludeCombatBtuton setTitleColor:[DJDKMIMOMColor prohibitionBtutonEssayPrettify] forState:UIControlStateNormal]; - _concludeCombatBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_concludeCombatBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor prohibitionBtutonPrettify], [DJDKMIMOMColor prohibitionBtutonPrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _concludeCombatBtuton.layer.masksToBounds = YES; - _concludeCombatBtuton.layer.cornerRadius = 22; - [_concludeCombatBtuton addTarget:self action:@selector(concludeCombatBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _concludeCombatBtuton.hidden= YES; - } - return _concludeCombatBtuton; -} - - -- (UIView *)consumerAccommoengagementdRegard { - if (!_consumerAccommoengagementdRegard) { - _consumerAccommoengagementdRegard = [[UIView alloc] init]; - _consumerAccommoengagementdRegard.backgroundColor = [DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]; - } - return _consumerAccommoengagementdRegard; -} - -- (UIImageView *)chamberCombatBrandIndicateRegard { - if (!_chamberCombatBrandIndicateRegard) { - _chamberCombatBrandIndicateRegard = [[UIImageView alloc] init]; - _chamberCombatBrandIndicateRegard.userInteractionEnabled = YES; - _chamberCombatBrandIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_pk_vs_logo"]; - } - return _chamberCombatBrandIndicateRegard; -} - - - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomRank/ThemeColor+RoomRank.h b/YuMi/Modules/YMRoom/View/RoomRank/ThemeColor+RoomRank.h index dea0f8ba..c9aebc93 100644 --- a/YuMi/Modules/YMRoom/View/RoomRank/ThemeColor+RoomRank.h +++ b/YuMi/Modules/YMRoom/View/RoomRank/ThemeColor+RoomRank.h @@ -10,11 +10,16 @@ NS_ASSUME_NONNULL_BEGIN @interface ThemeColor (RoomRank) -+ (UIColor *)chamberRtowardseChampionEncouragePrettify; -+ (UIColor *)chamberRtowardseChosenChampionPrettify; -+ (UIColor *)chamberRtowardseOrdinaryChampionPrettify; -+ (UIColor *)chamberRtowardseIntegralPrettify; -+ (UIColor *)chamberRtowardseMonicerPrettify; +/// 房间榜单标题背景颜色 0xFFFFFF 0.2 ++ (UIColor *)roomRankTitleBackColor; +/// 房间榜单标题选中颜色 0x7898F3 ++ (UIColor *)roomRankSelectTitleColor; +/// 房间榜单标题普通颜色 0xFFFFFF 0.6 ++ (UIColor *)roomRankNormalTitleColor; +/// 房间榜单积分的字体的颜色 0xFF7979 ++ (UIColor *)roomRankIntegralColor; +/// 房间榜单名字的字体的颜色 0xFFFFFF ++ (UIColor *)roomRankNickColor; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomRank/ThemeColor+RoomRank.m b/YuMi/Modules/YMRoom/View/RoomRank/ThemeColor+RoomRank.m index b2ebf172..ff5e825d 100644 --- a/YuMi/Modules/YMRoom/View/RoomRank/ThemeColor+RoomRank.m +++ b/YuMi/Modules/YMRoom/View/RoomRank/ThemeColor+RoomRank.m @@ -10,23 +10,28 @@ @implementation ThemeColor (RoomRank) -+ (UIColor *)chamberRtowardseChampionEncouragePrettify { +/// 房间榜单标题背景颜色 0xFFFFFF 0.2 ++ (UIColor *)roomRankTitleBackColor { return UIColorRGBAlpha(0xFFFFFF, 0.2); } -+ (UIColor *)chamberRtowardseChosenChampionPrettify { +/// 房间榜单标题选中颜色 0x7898F3 ++ (UIColor *)roomRankSelectTitleColor { return UIColorFromRGB(0x7898F3); } -+ (UIColor *)chamberRtowardseOrdinaryChampionPrettify { +/// 房间榜单标题普通颜色 0xFFFFFF 0.6 ++ (UIColor *)roomRankNormalTitleColor { return UIColorRGBAlpha(0xFFFFFF, 0.6); } -+ (UIColor *)chamberRtowardseIntegralPrettify { +/// 房间榜单积分的字体的颜色 0xFF7979 ++ (UIColor *)roomRankIntegralColor { return UIColorFromRGB(0xFF7979); } -+ (UIColor *)chamberRtowardseMonicerPrettify { +/// 房间榜单名字的字体的颜色 0xFFFFFF ++ (UIColor *)roomRankNickColor { return UIColorFromRGB(0xFFFFFF); } diff --git a/YuMi/Modules/YMRoom/View/RoomRank/View/Cell/XPRoomRankTableViewCell.m b/YuMi/Modules/YMRoom/View/RoomRank/View/Cell/XPRoomRankTableViewCell.m new file mode 100644 index 00000000..c60cc178 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomRank/View/Cell/XPRoomRankTableViewCell.m @@ -0,0 +1,173 @@ +// +// XPRoomRankTableViewCell.m +// xplan-ios +// +// Created by 冯硕 on 2021/12/14. +// + +#import "XPRoomRankTableViewCell.h" +///Third +#import +///Tool +#import "ThemeColor+RoomRank.h" +#import "NetImageView.h" +#import "RoomRankModel.h" +@interface XPRoomRankTableViewCell () +///排名 +@property (nonatomic, strong) UILabel *rankLabel; +///头像 +@property (nonatomic, strong) NetImageView *avatarImageView; +///性别 +@property (nonatomic, strong) UIImageView *genderImageView; +///昵称 +@property (nonatomic, strong) UILabel *nickNameLabel; +///ID +@property (nonatomic, strong) UILabel *idLabel; +///金币数量 +@property (nonatomic, strong) UILabel *coinNumberLabel; +@end + +@implementation XPRoomRankTableViewCell + + +#pragma mark - Life Style +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{ + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + self.autoresizingMask = UIViewAutoresizingNone; + self.selectionStyle = UITableViewCellSelectionStyleNone;//被选中的样式 + [self setupSubView]; + [self setupConstraints]; + } + return self; +} + +#pragma mark - Private +- (void)setupSubView { + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.rankLabel]; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.nickNameLabel]; + [self.contentView addSubview:self.genderImageView]; + [self.contentView addSubview:self.idLabel]; + [self.contentView addSubview:self.coinNumberLabel]; +} +- (void)setupConstraints{ + [self.rankLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(15); + make.centerY.mas_equalTo(0); + make.width.mas_equalTo(50); + make.height.mas_equalTo(20); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.equalTo(@50); + make.left.equalTo(self.rankLabel.mas_right).offset(10); + make.centerY.equalTo(self.contentView); + }]; + + [self.nickNameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(16); + make.bottom.mas_equalTo(self.avatarImageView.mas_centerY).offset(-1.5); + }]; + + [self.genderImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nickNameLabel.mas_right).offset(3); + make.centerY.mas_equalTo(self.nickNameLabel); + make.width.height.mas_equalTo(13); + }]; + + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.avatarImageView.mas_centerY).offset(1.5); + make.left.mas_equalTo(self.nickNameLabel); + make.right.mas_lessThanOrEqualTo(self.coinNumberLabel.mas_left).offset(-10); + }]; + + [self.coinNumberLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(0); + make.right.mas_equalTo(-28); + }]; +} + + +- (void)setRankModel:(RoomRankModel *)rankModel { + _rankModel = rankModel; + self.idLabel.text = [NSString stringWithFormat:@"ID:%@", rankModel.erbanNo]; + + self.rankLabel.text = rankModel.ranking; + + NSString *numStr = [NSString stringWithFormat:@"%@",rankModel.goldAmount]; + if (rankModel.goldAmount.doubleValue > 10000) { + CGFloat numF = [rankModel.goldAmount doubleValue] / 10000.0; + numStr = [NSString stringWithFormat:YMLocalizedString(@"XPRoomRankTableViewCell0"),numF]; + numStr = [numStr stringByReplacingOccurrencesOfString:@".0" withString:@""]; + } + self.genderImageView.image = rankModel.gender == GenderType_Female ? [UIImage imageNamed:@"common_female"] : [UIImage imageNamed:@"common_male"]; + self.coinNumberLabel.text = numStr; + self.avatarImageView.imageUrl = rankModel.avatar; + self.nickNameLabel.text = rankModel.nick; +} +#pragma mark - Getters And Setters +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + _avatarImageView = [[NetImageView alloc] init]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 25; + _avatarImageView.image = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView.contentMode = UIViewContentModeScaleAspectFill; + } + return _avatarImageView;; +} + + +- (UILabel *)rankLabel { + if (!_rankLabel) { + _rankLabel = [[UILabel alloc] init]; + _rankLabel.font = [UIFont systemFontOfSize:18]; + _rankLabel.textAlignment = NSTextAlignmentCenter; + _rankLabel.textColor = [ThemeColor secondTextColor]; + } + return _rankLabel; +} + +- (UIImageView *)genderImageView { + if (!_genderImageView) { + _genderImageView = [[UIImageView alloc] init]; + _genderImageView.image = [UIImage imageNamed:@"common_sex_female"]; + _genderImageView.hidden = YES; + [_genderImageView setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + } + return _genderImageView; +} + +- (UILabel *)nickNameLabel { + if (!_nickNameLabel) { + _nickNameLabel = [[UILabel alloc] init]; + _nickNameLabel.font = [UIFont systemFontOfSize:14]; + _nickNameLabel.textColor = [ThemeColor mainTextColor]; + } + return _nickNameLabel; +} +- (UILabel *)idLabel { + if (!_idLabel) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:12]; + label.textColor = [ThemeColor textThirdColor]; + label.textAlignment = NSTextAlignmentRight; + _idLabel = label; + } + return _idLabel; +} + +- (UILabel *)coinNumberLabel{ + if (!_coinNumberLabel) { + _coinNumberLabel = [[UILabel alloc] init]; + _coinNumberLabel.font = [UIFont systemFontOfSize:16]; + _coinNumberLabel.textColor = [ThemeColor roomRankIntegralColor]; + _coinNumberLabel.textAlignment = NSTextAlignmentRight; + [_coinNumberLabel setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + } + return _coinNumberLabel; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomRank/View/Cell/YUMIChamberRateTabulationRegardElement.m b/YuMi/Modules/YMRoom/View/RoomRank/View/Cell/YUMIChamberRateTabulationRegardElement.m deleted file mode 100644 index c8dd6e63..00000000 --- a/YuMi/Modules/YMRoom/View/RoomRank/View/Cell/YUMIChamberRateTabulationRegardElement.m +++ /dev/null @@ -1,165 +0,0 @@ -// -// YUMIChamberRateTabulationRegardElement.m -// xplan-ios -// -// Created by 冯硕 on 2021/12/14. -// - -#import "YUMIChamberRateTabulationRegardElement.h" -#import -#import "ThemeColor+RoomRank.h" -#import "NetIndicateRegard.h" -#import "RoomRankModel.h" -@interface YUMIChamberRateTabulationRegardElement () -@property (nonatomic, strong) UILabel *rateSequencignation; -@property (nonatomic, strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic, strong) UIImageView *genderIndicateRegard; -@property (nonatomic, strong) UILabel *monicerConstituteSequencignation; -@property (nonatomic, strong) UILabel *idSequencignation; -@property (nonatomic, strong) UILabel *tangerineDigitalSequencignation; -@end - -@implementation YUMIChamberRateTabulationRegardElement - - -#pragma mark - Life Style -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{ - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - self.autoresizingMask = UIViewAutoresizingNone; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self setupChildLy]; - [self setupRestrictions]; - } - return self; -} - -#pragma mark - Private -- (void)setupChildLy { - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.rateSequencignation]; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.monicerConstituteSequencignation]; - [self.contentView addSubview:self.genderIndicateRegard]; - [self.contentView addSubview:self.idSequencignation]; - [self.contentView addSubview:self.tangerineDigitalSequencignation]; -} -- (void)setupRestrictions{ - [self.rateSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(15); - make.centerY.mas_equalTo(0); - make.width.mas_equalTo(50); - make.height.mas_equalTo(20); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.equalTo(@50); - make.left.equalTo(self.rateSequencignation.mas_right).offset(10); - make.centerY.equalTo(self.contentView); - }]; - - [self.monicerConstituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(16); - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(-1.5); - }]; - - [self.genderIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.monicerConstituteSequencignation.mas_right).offset(3); - make.centerY.mas_equalTo(self.monicerConstituteSequencignation); - make.width.height.mas_equalTo(13); - }]; - - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY).offset(1.5); - make.left.mas_equalTo(self.monicerConstituteSequencignation); - make.right.mas_lessThanOrEqualTo(self.tangerineDigitalSequencignation.mas_left).offset(-10); - }]; - - [self.tangerineDigitalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(0); - make.right.mas_equalTo(-28); - }]; -} - - -- (void)setRtowardseMtowardsrix:(RoomRankModel *)rankModel { - _rankModel = rankModel; - self.idSequencignation.text = [NSString stringWithFormat:@"ID:%@", rankModel.erbanNo]; - - self.rateSequencignation.text = rankModel.ranking; - - NSString *numStr = [NSString stringWithFormat:@"%@",rankModel.goldAmount]; - if (rankModel.goldAmount.doubleValue > 10000) { - CGFloat numF = [rankModel.goldAmount doubleValue] / 10000.0; - numStr = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Room_Rank_Table_View_Cell_0"),numF]; - numStr = [numStr stringByReplacingOccurrencesOfString:@".0" withString:@""]; - } - self.genderIndicateRegard.image = rankModel.gender == GenderGenre_Female ? [UIImage imageNamed:@"yumi_same_female"] : [UIImage imageNamed:@"yumi_same_male"]; - self.tangerineDigitalSequencignation.text = numStr; - self.intelligenceportraitIndicateRegard.imageUrl = rankModel.avatar; - self.monicerConstituteSequencignation.text = rankModel.nick; -} -#pragma mark - Getters And Setters -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] init]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 25; - _intelligenceportraitIndicateRegard.image = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _intelligenceportraitIndicateRegard;; -} - - -- (UILabel *)rateSequencignation { - if (!_rateSequencignation) { - _rateSequencignation = [[UILabel alloc] init]; - _rateSequencignation.font = [UIFont systemFontOfSize:18]; - _rateSequencignation.textAlignment = NSTextAlignmentCenter; - _rateSequencignation.textColor = [ThemeColor instantEssayPrettify]; - } - return _rateSequencignation; -} - -- (UIImageView *)genderIndicateRegard { - if (!_genderIndicateRegard) { - _genderIndicateRegard = [[UIImageView alloc] init]; - _genderIndicateRegard.image = [UIImage imageNamed:@"common_sex_female"]; - _genderIndicateRegard.hidden = YES; - [_genderIndicateRegard setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - } - return _genderIndicateRegard; -} - -- (UILabel *)monicerConstituteSequencignation { - if (!_monicerConstituteSequencignation) { - _monicerConstituteSequencignation = [[UILabel alloc] init]; - _monicerConstituteSequencignation.font = [UIFont systemFontOfSize:14]; - _monicerConstituteSequencignation.textColor = [ThemeColor mainEssayPrettify]; - } - return _monicerConstituteSequencignation; -} -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:12]; - label.textColor = [ThemeColor essayTertiusPrettify]; - label.textAlignment = NSTextAlignmentRight; - _idSequencignation = label; - } - return _idSequencignation; -} - -- (UILabel *)tangerineDigitalSequencignation{ - if (!_tangerineDigitalSequencignation) { - _tangerineDigitalSequencignation = [[UILabel alloc] init]; - _tangerineDigitalSequencignation.font = [UIFont systemFontOfSize:16]; - _tangerineDigitalSequencignation.textColor = [ThemeColor chamberRtowardseIntegralPrettify]; - _tangerineDigitalSequencignation.textAlignment = NSTextAlignmentRight; - [_tangerineDigitalSequencignation setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - } - return _tangerineDigitalSequencignation; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomRank/View/SubViews/XPRoomRankUserInfoView.m b/YuMi/Modules/YMRoom/View/RoomRank/View/SubViews/XPRoomRankUserInfoView.m new file mode 100644 index 00000000..64384d76 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomRank/View/SubViews/XPRoomRankUserInfoView.m @@ -0,0 +1,224 @@ +// +// XPRoomRankUserInfoView.m +// xplan-ios +// +// Created by 冯硕 on 2021/12/14. +// + +#import "XPRoomRankUserInfoView.h" +///Third +#import +///Tool +#import "NetImageView.h" +#import "ThemeColor+RoomRank.h" +///Model +#import "RoomRankModel.h" + +@interface XPRoomRankUserInfoView () +///皇冠 +@property (nonatomic,strong) UIImageView *crownImageView; +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///昵称和性别的容器 +@property (nonatomic,strong) UIStackView *stackView; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///性别 +@property (nonatomic,strong) UIImageView *sexImageView; +///id +@property (nonatomic,strong) UILabel *idLabel; +///金币 +@property (nonatomic,strong) UILabel *coinLabel; +@end + +@implementation XPRoomRankUserInfoView + + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + self.avatarImageView.layer.cornerRadius = self.avatarImageView.bounds.size.width / 2; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.avatarImageView]; + [self addSubview:self.crownImageView]; + [self addSubview:self.stackView]; + [self addSubview:self.idLabel]; + [self addSubview:self.coinLabel]; + + [self.stackView addArrangedSubview:self.nickLabel]; + [self.stackView addArrangedSubview:self.sexImageView]; + + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(recognizer:)]; + [self addGestureRecognizer:tap]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.coinLabel.mas_bottom); + }]; + + [self.crownImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.centerX.mas_equalTo(self); + make.width.mas_equalTo(87); + make.height.mas_equalTo(99); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.crownImageView).inset(6); + make.bottom.mas_equalTo(self.crownImageView.mas_bottom).offset(-6); + make.height.mas_equalTo(self.avatarImageView.mas_width); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self.crownImageView.mas_bottom).offset(4); + }]; + + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self); + make.top.mas_equalTo(self.stackView.mas_bottom).offset(1); + }]; + + [self.coinLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.idLabel.mas_bottom).offset(2); + make.left.right.mas_equalTo(self); + }]; +} + +#pragma mark - Event Response +- (void)recognizer:(UITapGestureRecognizer *)tap { + if (self.delegate && [self.delegate respondsToSelector:@selector(didTapUserInfo:)]) { + [self.delegate didTapUserInfo:self.rankModel.uid]; + } +} + +#pragma mark - Getters And Setters +- (void)setRankModel:(RoomRankModel *)rankModel { + _rankModel = rankModel; + self.idLabel.text = [NSString stringWithFormat:@"ID:%@", rankModel.erbanNo]; + NSString *numStr = [NSString stringWithFormat:@"%@",rankModel.goldAmount]; + if (rankModel.goldAmount.doubleValue > 10000) { + CGFloat numF = [rankModel.goldAmount doubleValue] / 10000.0; + numStr = [NSString stringWithFormat:YMLocalizedString(@"XPRoomRankUserInfoView0"),numF]; + numStr = [numStr stringByReplacingOccurrencesOfString:@".0" withString:@""]; + } + self.sexImageView.hidden = NO; + self.sexImageView.image = rankModel.gender == GenderType_Female ? [UIImage imageNamed:@"common_female"] : [UIImage imageNamed:@"common_male"]; + self.coinLabel.text = numStr; + self.avatarImageView.imageUrl = rankModel.avatar; + self.nickLabel.text = rankModel.nick; +} + + +- (void)setType:(RankUserInfoType)type { + NSString * crownName; + NSString * avatarPlace; + switch (type) { + case RankUserInfoType_First: + crownName = @"room_rank_crown_first"; + avatarPlace = @"room_rank_avatar_first_place"; + break; + case RankUserInfoType_Second: + crownName = @"room_rank_crown_second"; + avatarPlace = @"room_rank_avatar_second_place"; + break; + case RankUserInfoType_Third: + crownName = @"room_rank_crown_third"; + avatarPlace = @"room_rank_avatar_third_place"; + break; + default: + break; + } + + if (crownName.length >0) { + self.crownImageView.image = [UIImage imageNamed:crownName]; + } + + if (avatarPlace.length > 0) { + self.avatarImageView.image = [UIImage imageNamed:avatarPlace]; + } + self.sexImageView.hidden = YES; +} + +- (UIImageView *)crownImageView { + if (!_crownImageView) { + _crownImageView = [[UIImageView alloc] init]; + _crownImageView.userInteractionEnabled = YES; + } + return _crownImageView; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + _avatarImageView = [[NetImageView alloc] init]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.image = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView.contentMode = UIViewContentModeScaleAspectFill; + } + return _avatarImageView;; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentCenter; + _stackView.spacing = 4; + } + return _stackView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.textAlignment = NSTextAlignmentCenter; + _nickLabel.font = [UIFont systemFontOfSize:14]; + _nickLabel.text = YMLocalizedString(@"XPRoomRankUserInfoView1"); + _nickLabel.textAlignment = NSTextAlignmentCenter; + _nickLabel.textColor = [ThemeColor roomRankNickColor]; + } + return _nickLabel; +} + +- (UIImageView *)sexImageView { + if (!_sexImageView) { + _sexImageView = [[UIImageView alloc] init]; + _sexImageView.userInteractionEnabled = YES; + } + return _sexImageView; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.textAlignment = NSTextAlignmentCenter; + _idLabel.font = [UIFont systemFontOfSize:10]; + _idLabel.textColor = [ThemeColor roomRankNormalTitleColor]; + } + return _idLabel; +} + +- (UILabel *)coinLabel { + if (!_coinLabel) { + _coinLabel = [[UILabel alloc] init]; + _coinLabel.font = [UIFont boldSystemFontOfSize:14]; + _coinLabel.textColor = [ThemeColor roomRankIntegralColor]; + _coinLabel.textAlignment = NSTextAlignmentCenter; + } + return _coinLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomRank/View/SubViews/YUMIChamberRateConsumerAbstractRegard.m b/YuMi/Modules/YMRoom/View/RoomRank/View/SubViews/YUMIChamberRateConsumerAbstractRegard.m deleted file mode 100644 index f53bd163..00000000 --- a/YuMi/Modules/YMRoom/View/RoomRank/View/SubViews/YUMIChamberRateConsumerAbstractRegard.m +++ /dev/null @@ -1,214 +0,0 @@ -// -// YUMIChamberRateConsumerAbstractRegard.m -// xplan-ios -// -// Created by 冯硕 on 2021/12/14. -// - -#import "YUMIChamberRateConsumerAbstractRegard.h" -#import -#import "NetIndicateRegard.h" -#import "ThemeColor+RoomRank.h" -#import "RoomRankModel.h" - -@interface YUMIChamberRateConsumerAbstractRegard () -@property (nonatomic,strong) UIImageView *crownIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UIImageView *seaxualityIndicateRegard; -@property (nonatomic,strong) UILabel *idSequencignation; -@property (nonatomic,strong) UILabel *tangerineSequencignation; -@end - -@implementation YUMIChamberRateConsumerAbstractRegard - - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -- (void)layoutSubviews { - [super layoutSubviews]; - self.intelligenceportraitIndicateRegard.layer.cornerRadius = self.intelligenceportraitIndicateRegard.bounds.size.width / 2; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.intelligenceportraitIndicateRegard]; - [self addSubview:self.crownIndicateRegard]; - [self addSubview:self.stackView]; - [self addSubview:self.idSequencignation]; - [self addSubview:self.tangerineSequencignation]; - - [self.stackView addArrangedSubview:self.monicerSequencignation]; - [self.stackView addArrangedSubview:self.seaxualityIndicateRegard]; - - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(recognizer:)]; - [self addGestureRecognizer:tap]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.tangerineSequencignation.mas_bottom); - }]; - - [self.crownIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.centerX.mas_equalTo(self); - make.width.mas_equalTo(87); - make.height.mas_equalTo(99); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.crownIndicateRegard).inset(6); - make.bottom.mas_equalTo(self.crownIndicateRegard.mas_bottom).offset(-6); - make.height.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_width); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self.crownIndicateRegard.mas_bottom).offset(4); - }]; - - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self); - make.top.mas_equalTo(self.stackView.mas_bottom).offset(1); - }]; - - [self.tangerineSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.idSequencignation.mas_bottom).offset(2); - make.left.right.mas_equalTo(self); - }]; -} - -#pragma mark - Event Response -- (void)recognizer:(UITapGestureRecognizer *)tap { - if (self.delegate && [self.delegate respondsToSelector:@selector(didTapUserInfo:)]) { - [self.delegate didTapUserInfo:self.rankModel.uid]; - } -} - -#pragma mark - Getters And Setters -- (void)setRtowardseMtowardsrix:(RoomRankModel *)rankModel { - _rankModel = rankModel; - self.idSequencignation.text = [NSString stringWithFormat:@"ID:%@", rankModel.erbanNo]; - NSString *numStr = [NSString stringWithFormat:@"%@",rankModel.goldAmount]; - if (rankModel.goldAmount.doubleValue > 10000) { - CGFloat numF = [rankModel.goldAmount doubleValue] / 10000.0; - numStr = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Room_Rank_User_Info_View_0"),numF]; - numStr = [numStr stringByReplacingOccurrencesOfString:@".0" withString:@""]; - } - self.seaxualityIndicateRegard.hidden = NO; - self.seaxualityIndicateRegard.image = rankModel.gender == GenderGenre_Female ? [UIImage imageNamed:@"yumi_same_female"] : [UIImage imageNamed:@"yumi_same_male"]; - self.tangerineSequencignation.text = numStr; - self.intelligenceportraitIndicateRegard.imageUrl = rankModel.avatar; - self.monicerSequencignation.text = rankModel.nick; -} - - -- (void)setType:(RankUserInfoType)type { - NSString * crownName; - NSString * avatarPlace; - switch (type) { - case RankUserInfoType_First: - crownName = @"room_rank_crown_first"; - avatarPlace = @"room_rank_avatar_first_place"; - break; - case RankUserInfoType_Second: - crownName = @"room_rank_crown_second"; - avatarPlace = @"room_rank_avatar_second_place"; - break; - case RankUserInfoType_Third: - crownName = @"room_rank_crown_third"; - avatarPlace = @"room_rank_avatar_third_place"; - break; - default: - break; - } - - if (crownName.length >0) { - self.crownIndicateRegard.image = [UIImage imageNamed:crownName]; - } - - if (avatarPlace.length > 0) { - self.intelligenceportraitIndicateRegard.image = [UIImage imageNamed:avatarPlace]; - } - self.seaxualityIndicateRegard.hidden = YES; -} - -- (UIImageView *)crownIndicateRegard { - if (!_crownIndicateRegard) { - _crownIndicateRegard = [[UIImageView alloc] init]; - _crownIndicateRegard.userInteractionEnabled = YES; - } - return _crownIndicateRegard; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] init]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.image = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _intelligenceportraitIndicateRegard;; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentCenter; - _stackView.spacing = 4; - } - return _stackView; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.textAlignment = NSTextAlignmentCenter; - _monicerSequencignation.font = [UIFont systemFontOfSize:14]; - _monicerSequencignation.text = YMLocalizedString(@"YUMI_Room_Rank_User_Info_View_1"); - _monicerSequencignation.textAlignment = NSTextAlignmentCenter; - _monicerSequencignation.textColor = [ThemeColor chamberRtowardseMonicerPrettify]; - } - return _monicerSequencignation; -} - -- (UIImageView *)seaxualityIndicateRegard { - if (!_seaxualityIndicateRegard) { - _seaxualityIndicateRegard = [[UIImageView alloc] init]; - _seaxualityIndicateRegard.userInteractionEnabled = YES; - } - return _seaxualityIndicateRegard; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.textAlignment = NSTextAlignmentCenter; - _idSequencignation.font = [UIFont systemFontOfSize:10]; - _idSequencignation.textColor = [ThemeColor chamberRtowardseOrdinaryChampionPrettify]; - } - return _idSequencignation; -} - -- (UILabel *)tangerineSequencignation { - if (!_tangerineSequencignation) { - _tangerineSequencignation = [[UILabel alloc] init]; - _tangerineSequencignation.font = [UIFont boldSystemFontOfSize:14]; - _tangerineSequencignation.textColor = [ThemeColor chamberRtowardseIntegralPrettify]; - _tangerineSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _tangerineSequencignation; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomRank/View/XPRoomRankViewController.m b/YuMi/Modules/YMRoom/View/RoomRank/View/XPRoomRankViewController.m new file mode 100644 index 00000000..3f145f11 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomRank/View/XPRoomRankViewController.m @@ -0,0 +1,234 @@ +// +// XPRoomRankViewController.m +// xplan-ios +// +// Created by 冯硕 on 2021/12/14. +// + +#import "XPRoomRankViewController.h" +///Third +#import +#import +#import +///Tool +#import "ThemeColor+RoomRank.h" +#import "XPMacro.h" +///Model +#import "MicroQueueModel.h" +#import "UserInfoModel.h" +#import "MicroStateModel.h" +#import "RoomInfoModel.h" +///View +#import "XPRoomDayRankViewController.h" +#import "XPUserCardViewController.h" +@interface XPRoomRankViewController () +///顶部的View +@property (nonatomic,strong) UIView * topView; +///显示内容的 +@property (nonatomic,strong) UIView * backView; +///分页标题 +@property (nonatomic, strong) NSArray *titles; +///分页控件 +@property (nonatomic, strong) JXCategoryTitleView *titleView; +///分页lineView +@property (nonatomic, strong) JXCategoryListContainerView *contentView; +///顶部的背景视图 +@property (nonatomic,strong) UIImageView *headBackImageView; +///财富榜 +@property (nonatomic,strong) XPRoomDayRankViewController *wealthRankVC; +///魅力榜 +@property (nonatomic,strong) XPRoomDayRankViewController *charmRankVC; +///房间的uid +@property (nonatomic,copy) NSString *roomUid; +///host +@property (nonatomic,weak) idhostDelegate; +@end + +@implementation XPRoomRankViewController + +- (instancetype)initWithRoomUid:(NSString *)roomUid delegate:(id)delegate; { + if (self = [super init]) { + self.roomUid = roomUid; + self.hostDelegate = delegate; + self.modalPresentationStyle = UIModalPresentationOverFullScreen; + } + return self; +} + + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - JXCategoryViewDelegate +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { + return self.titles.count; +} + +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { + if (index == 0) { + return self.wealthRankVC; + } + return self.charmRankVC; +} + +#pragma mark - XPRoomRankHostDelegate +- (NSString *)getRoomUid { + return self.roomUid; +} + +- (void)didSelectUser:(NSString *)uid { + if (uid.integerValue <=0) return; + [self dismissViewControllerAnimated:YES completion:nil]; + RoomInfoModel * roomInfo = self.hostDelegate.getRoomInfo; + NSString * targetUid = uid; + XPUserCardInfoModel * model = [[XPUserCardInfoModel alloc] init]; + [[self.hostDelegate.getMicroQueue allValues] enumerateObjectsUsingBlock:^(MicroQueueModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (uid.integerValue == obj.userInfo.uid) { + model.position = [NSString stringWithFormat:@"%d", obj.microState.position]; + model.posState = obj.microState.posState; + model.micState = obj.microState.micState; + *stop = YES; + } + }]; + model.nick = self.hostDelegate.getUserInfo.nick; + model.uid = targetUid; + model.roomInfo = roomInfo; + model.micQueue = self.hostDelegate.getMicroQueue; + model.delegate = self.hostDelegate; + XPUserCardViewController * userCardVC = [[XPUserCardViewController alloc] initWithUser:model]; + [self.hostDelegate.getCurrentNav presentViewController:userCardVC animated:YES completion:nil]; +} +#pragma mark - Private Method +- (void)initSubViews { + self.view.backgroundColor = [UIColor clearColor]; + [self.view addSubview:self.topView]; + [self.view addSubview:self.backView]; + + [self.backView addSubview:self.headBackImageView]; + [self.backView addSubview:self.titleView]; + [self.backView addSubview:self.contentView]; +} + +- (void)initSubViewConstraints { + [self.topView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.backView.mas_top); + }]; + + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.bottom.right.mas_equalTo(self.view); + make.height.mas_equalTo(550); + }]; + + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backView).inset(30); + make.height.mas_equalTo(36); + make.top.mas_equalTo(self.backView).offset(25); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.backView); + make.top.mas_equalTo(self.titleView.mas_bottom); + }]; + + [self.headBackImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.left.top.mas_equalTo(self.backView); + make.height.mas_equalTo(100); + }]; +} +#pragma mark - Event Response +- (void)disMissRoomRankCongnizer { + [self dismissViewControllerAnimated:YES completion:nil]; +} + +#pragma mark - Getters And Setters +- (JXCategoryTitleView *)titleView { + if (!_titleView) { + _titleView = [[JXCategoryTitleView alloc] init]; + _titleView.delegate = self; + _titleView.titles = self.titles; + _titleView.layer.masksToBounds= YES; + _titleView.layer.cornerRadius = 36/2; + _titleView.backgroundColor = [ThemeColor roomRankTitleBackColor]; + _titleView.titleColor = [ThemeColor roomRankNormalTitleColor]; + _titleView.titleSelectedColor = [ThemeColor roomRankSelectTitleColor]; + _titleView.titleFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:15]; + _titleView.titleSelectedFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:15]; + _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; + _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; + _titleView.defaultSelectedIndex = 0; + _titleView.cellWidth = (KScreenWidth - 30* 2)/2; + _titleView.cellSpacing = 0; + _titleView.averageCellSpacingEnabled = YES; + _titleView.listContainer = self.contentView; + + JXCategoryIndicatorBackgroundView *backgroundView = [[JXCategoryIndicatorBackgroundView alloc] init]; + backgroundView.indicatorHeight = 34; + backgroundView.indicatorColor = [UIColor whiteColor]; + backgroundView.indicatorWidth = (KScreenWidth - 30* 2)/2; + backgroundView.layer.cornerRadius = 17; + backgroundView.layer.masksToBounds = YES; + _titleView.indicators = @[backgroundView]; + } + return _titleView; +} + +- (JXCategoryListContainerView *)contentView { + if (!_contentView) { + _contentView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; + _contentView.defaultSelectedIndex = 0; + } + return _contentView; +} + +- (NSArray *)titles { + return @[@"贡献榜", YMLocalizedString(@"XPRoomRankViewController1")]; +} + +- (UIView *)topView { + if (!_topView) { + _topView = [[UIView alloc] init]; + _topView.backgroundColor = [UIColor clearColor]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(disMissRoomRankCongnizer)]; + [_topView addGestureRecognizer:tap]; + } + return _topView; +} + +- (UIView *)backView { + if (!_backView) { + _backView = [[UIView alloc] init]; + _backView.backgroundColor = [UIColor clearColor]; + } + return _backView; +} + +- (UIImageView *)headBackImageView { + if (!_headBackImageView) { + _headBackImageView = [[UIImageView alloc] init]; + _headBackImageView.userInteractionEnabled = YES; + _headBackImageView.image = [UIImage imageNamed:@"room_rank_header_bg"]; + } + return _headBackImageView; +} + +- (XPRoomDayRankViewController *)charmRankVC { + if (!_charmRankVC) { + _charmRankVC = [[XPRoomDayRankViewController alloc] initWithDelegate:self]; + _charmRankVC.type = RoomRankType_Charm; + } + return _charmRankVC; +} + +- (XPRoomDayRankViewController *)wealthRankVC { + if (!_wealthRankVC) { + _wealthRankVC = [[XPRoomDayRankViewController alloc] initWithDelegate:self]; + _wealthRankVC.type = RoomRankType_Contribute; + } + return _wealthRankVC; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomRank/View/YUMIChamberRateRegardGovernancer.m b/YuMi/Modules/YMRoom/View/RoomRank/View/YUMIChamberRateRegardGovernancer.m deleted file mode 100644 index db02fe45..00000000 --- a/YuMi/Modules/YMRoom/View/RoomRank/View/YUMIChamberRateRegardGovernancer.m +++ /dev/null @@ -1,220 +0,0 @@ -// -// YUMIChamberRateRegardGovernancer.m -// xplan-ios -// -// Created by 冯硕 on 2021/12/14. -// - -#import "YUMIChamberRateRegardGovernancer.h" -#import -#import -#import -#import "ThemeColor+RoomRank.h" -#import "XPMacro.h" -#import "MiecreoscoopeMHTueueMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "MiecreoscoopeStateMatrix.h" -#import "ChamberAbstractMatrix.h" -#import "XPRoomDayRankViewController.h" -#import "YUMIConsumerSolitaireRegardGovernancer.h" -@interface YUMIChamberRateRegardGovernancer () -@property (nonatomic,strong) UIView * apexRegard; -@property (nonatomic,strong) UIView * encourageRegard; -@property (nonatomic, strong) NSArray *titles; -@property (nonatomic, strong) JXCategoryTitleView *titleView; -@property (nonatomic, strong) JXCategoryListContainerView *contentView; -@property (nonatomic,strong) UIImageView *intelligenceEncourageIndicateRegard; -@property (nonatomic,strong) XPRoomDayRankViewController *wealthRateVewC; -@property (nonatomic,strong) XPRoomDayRankViewController *fascinationRateVewC; -@property (nonatomic,copy) NSString *roomUid; -@property (nonatomic,weak) idhostRepresedtation; -@end - -@implementation YUMIChamberRateRegardGovernancer - -- (instancetype)initAboutChamberCid:(NSString *)roomUid delegate:(id)delegate; { - if (self = [super init]) { - self.roomUid = roomUid; - self.hostRepresedtation = delegate; - self.modalPresentationStyle = UIModalPresentationOverFullScreen; - } - return self; -} - - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - JXCategoryViewDelegate -- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { - return self.titles.count; -} - -- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { - if (index == 0) { - return self.wealthRateVewC; - } - return self.fascinationRateVewC; -} - -#pragma mark - XPRoomRankHostDelegate -- (NSString *)acquireChamberCid { - return self.roomUid; -} - -- (void)didChosenConsumer:(NSString *)uid { - if (uid.integerValue <=0) return; - [self dismissViewControllerAnimated:YES completion:nil]; - ChamberAbstractMatrix * roomInfo = self.hostRepresedtation.acquireChamberAbstract; - NSString * targetUid = uid; - YUMIConsumerSolitaireAbstractMatrix * model = [[YUMIConsumerSolitaireAbstractMatrix alloc] init]; - [[self.hostRepresedtation.acquireMiecreoscoopeInthecaseofmtowardsion allValues] enumerateObjectsUsingBlock:^(MiecreoscoopeMHTueueMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (uid.integerValue == obj.userInfo.uid) { - model.position = [NSString stringWithFormat:@"%d", obj.microState.position]; - model.posState = obj.microState.posState; - model.micState = obj.microState.micState; - *stop = YES; - } - }]; - model.nick = self.hostRepresedtation.getUserInfo.nick; - model.uid = targetUid; - model.roomInfo = roomInfo; - model.micQueue = self.hostRepresedtation.acquireMiecreoscoopeInthecaseofmtowardsion; - model.delegate = self.hostRepresedtation; - YUMIConsumerSolitaireRegardGovernancer * userCardVC = [[YUMIConsumerSolitaireRegardGovernancer alloc] initWithUser:model]; - [self.hostRepresedtation.acquireUniversalNev presentViewController:userCardVC animated:YES completion:nil]; -} -#pragma mark - Private Method -- (void)initSubViews { - self.view.backgroundColor = [UIColor clearColor]; - [self.view addSubview:self.apexRegard]; - [self.view addSubview:self.encourageRegard]; - - [self.encourageRegard addSubview:self.intelligenceEncourageIndicateRegard]; - [self.encourageRegard addSubview:self.titleView]; - [self.encourageRegard addSubview:self.contentView]; -} - -- (void)initChildLyRestrictions { - [self.apexRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.encourageRegard.mas_top); - }]; - - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.bottom.right.mas_equalTo(self.view); - make.height.mas_equalTo(550); - }]; - - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageRegard).inset(30); - make.height.mas_equalTo(36); - make.top.mas_equalTo(self.encourageRegard).offset(25); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.encourageRegard); - make.top.mas_equalTo(self.titleView.mas_bottom); - }]; - - [self.intelligenceEncourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.left.top.mas_equalTo(self.encourageRegard); - make.height.mas_equalTo(100); - }]; -} -#pragma mark - Event Response -- (void)prohibitiaplictowardsionarChamberRtowardseCongnizer { - [self dismissViewControllerAnimated:YES completion:nil]; -} - -#pragma mark - Getters And Setters -- (JXCategoryTitleView *)titleView { - if (!_titleView) { - _titleView = [[JXCategoryTitleView alloc] init]; - _titleView.delegate = self; - _titleView.titles = self.titles; - _titleView.layer.masksToBounds= YES; - _titleView.layer.cornerRadius = 36/2; - _titleView.backgroundColor = [ThemeColor chamberRtowardseChampionEncouragePrettify]; - _titleView.titleColor = [ThemeColor chamberRtowardseOrdinaryChampionPrettify]; - _titleView.titleSelectedColor = [ThemeColor chamberRtowardseChosenChampionPrettify]; - _titleView.titleFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:15]; - _titleView.titleSelectedFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:15]; - _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; - _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; - _titleView.defaultSelectedIndex = 0; - _titleView.cellWidth = (KScreenWidth - 30* 2)/2; - _titleView.cellSpacing = 0; - _titleView.averageCellSpacingEnabled = YES; - _titleView.listContainer = self.contentView; - - JXCategoryIndicatorBackgroundView *backgroundView = [[JXCategoryIndicatorBackgroundView alloc] init]; - backgroundView.indicatorHeight = 34; - backgroundView.indicatorColor = [UIColor whiteColor]; - backgroundView.indicatorWidth = (KScreenWidth - 30* 2)/2; - backgroundView.layer.cornerRadius = 17; - backgroundView.layer.masksToBounds = YES; - _titleView.indicators = @[backgroundView]; - } - return _titleView; -} - -- (JXCategoryListContainerView *)contentView { - if (!_contentView) { - _contentView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; - _contentView.defaultSelectedIndex = 0; - } - return _contentView; -} - -- (NSArray *)titles { - return @[@"贡献榜", YMLocalizedString(@"YUMI_Room_Rank_View_Controller_1")]; -} - -- (UIView *)apexRegard { - if (!_apexRegard) { - _apexRegard = [[UIView alloc] init]; - _apexRegard.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(prohibitiaplictowardsionarChamberRtowardseCongnizer)]; - [_apexRegard addGestureRecognizer:tap]; - } - return _apexRegard; -} - -- (UIView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIView alloc] init]; - _encourageRegard.backgroundColor = [UIColor clearColor]; - } - return _encourageRegard; -} - -- (UIImageView *)intelligenceEncourageIndicateRegard { - if (!_intelligenceEncourageIndicateRegard) { - _intelligenceEncourageIndicateRegard = [[UIImageView alloc] init]; - _intelligenceEncourageIndicateRegard.userInteractionEnabled = YES; - _intelligenceEncourageIndicateRegard.image = [UIImage imageNamed:@"room_rank_header_bg"]; - } - return _intelligenceEncourageIndicateRegard; -} - -- (XPRoomDayRankViewController *)fascinationRateVewC { - if (!_fascinationRateVewC) { - _fascinationRateVewC = [[XPRoomDayRankViewController alloc] initWithDelegate:self]; - _fascinationRateVewC.type = RoomRankType_Charm; - } - return _fascinationRateVewC; -} - -- (XPRoomDayRankViewController *)wealthRateVewC { - if (!_wealthRateVewC) { - _wealthRateVewC = [[XPRoomDayRankViewController alloc] initWithDelegate:self]; - _wealthRateVewC.type = RoomRankType_Contribute; - } - return _wealthRateVewC; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomRecommend/Model/XPRoomRecommendModel.h b/YuMi/Modules/YMRoom/View/RoomRecommend/Model/XPRoomRecommendModel.h new file mode 100644 index 00000000..286571bb --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomRecommend/Model/XPRoomRecommendModel.h @@ -0,0 +1,32 @@ +// +// YMRoomRecommendModel.h +// YUMI +// +// Created by YUMI on 2022/4/28. +// + +#import +#import "YUMINNNN.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomRecommendModel : NSObject + +@property (nonatomic, assign) NSInteger roomId; +@property (nonatomic, assign) NSInteger uid; +@property (nonatomic, assign) NSInteger isPermitRoom; +//@property (nonatomic, strong) NSArray *micUsers;//群成员列表 +@property (nonatomic, copy) NSString *title; +@property (nonatomic, assign) NSInteger onlineNum; +@property (nonatomic, assign) NSInteger micUserCount; +@property (nonatomic, copy) NSString *tagPict; +@property (nonatomic, copy) NSString *roomTag; +@property (nonatomic, copy) NSString *avatar; +@property (nonatomic , assign) GenderType gender; +@property (nonatomic, copy) NSString *infoUid; +@property (nonatomic, copy) NSString *nick; +@property (nonatomic, copy) NSString *roomPwd; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomRecommend/Model/XPRoomRecommendModel.m b/YuMi/Modules/YMRoom/View/RoomRecommend/Model/XPRoomRecommendModel.m new file mode 100644 index 00000000..25abfe15 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomRecommend/Model/XPRoomRecommendModel.m @@ -0,0 +1,12 @@ +// +// YMRoomRecommendModel.m +// YUMI +// +// Created by YUMI on 2022/4/28. +// + +#import "XPRoomRecommendModel.h" + +@implementation XPRoomRecommendModel + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomRecommend/Model/YUMIChamberEncourageMatrix.h b/YuMi/Modules/YMRoom/View/RoomRecommend/Model/YUMIChamberEncourageMatrix.h deleted file mode 100644 index 8a466bea..00000000 --- a/YuMi/Modules/YMRoom/View/RoomRecommend/Model/YUMIChamberEncourageMatrix.h +++ /dev/null @@ -1,31 +0,0 @@ -// -// YMRoomRecommendModel.h -// YUMI -// -// Created by YUMI on 2022/4/28. -// - -#import -#import "YUMINNNN.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberEncourageMatrix : NSObject - -@property (nonatomic, assign) NSInteger roomId; -@property (nonatomic, assign) NSInteger uid; -@property (nonatomic, assign) NSInteger isPermitRoom; -@property (nonatomic, copy) NSString *title; -@property (nonatomic, assign) NSInteger onlineNum; -@property (nonatomic, assign) NSInteger micUserCount; -@property (nonatomic, copy) NSString *tagPict; -@property (nonatomic, copy) NSString *roomTag; -@property (nonatomic, copy) NSString *avatar; -@property (nonatomic , assign) GenderGenre gender; -@property (nonatomic, copy) NSString *infoUid; -@property (nonatomic, copy) NSString *nick; -@property (nonatomic, copy) NSString *roomPwd; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomRecommend/Model/YUMIChamberEncourageMatrix.m b/YuMi/Modules/YMRoom/View/RoomRecommend/Model/YUMIChamberEncourageMatrix.m deleted file mode 100644 index 8215c59a..00000000 --- a/YuMi/Modules/YMRoom/View/RoomRecommend/Model/YUMIChamberEncourageMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMRoomRecommendModel.m -// YUMI -// -// Created by YUMI on 2022/4/28. -// - -#import "YUMIChamberEncourageMatrix.h" - -@implementation YUMIChamberEncourageMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/XPRoomInsideOperationCell.h b/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/XPRoomInsideOperationCell.h new file mode 100644 index 00000000..d36f164e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/XPRoomInsideOperationCell.h @@ -0,0 +1,19 @@ +// +// YMRoomInsideOperationCell.h +// YUMI +// +// Created by YUMI on 2022/9/30. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomInsideOperationCell : UICollectionViewCell + +@property (nonatomic, copy) NSString *title; +@property (nonatomic, copy) NSString *imageName; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/XPRoomInsideOperationCell.m b/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/XPRoomInsideOperationCell.m new file mode 100644 index 00000000..3075b78e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/XPRoomInsideOperationCell.m @@ -0,0 +1,70 @@ +// +// YMRoomInsideOperationCell.m +// YUMI +// +// Created by YUMI on 2022/9/30. +// + +#import "XPRoomInsideOperationCell.h" +///Third +#import + +@interface XPRoomInsideOperationCell() + +@property (nonatomic, strong) UIImageView *imageView; +@property (nonatomic, strong) UILabel *titleLabel; + +@end + +@implementation XPRoomInsideOperationCell + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initView]; + [self initContraints]; + } + return self; +} + +- (void)initView { + [self addSubview:self.imageView]; + [self addSubview:self.titleLabel]; +} + +- (void)initContraints { + [self.imageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.centerX.mas_equalTo(self); + make.width.height.mas_equalTo(52); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.imageView.mas_bottom).mas_offset(4); + make.centerX.mas_equalTo(self); + make.height.mas_equalTo(12); + }]; +} + +- (void)setTitle:(NSString *)title { + self.titleLabel.text = title; +} +- (void)setImageName:(NSString *)imageName { + self.imageView.image = [UIImage imageNamed:imageName]; +} + +- (UIImageView *)imageView { + if (!_imageView) { + _imageView = [[UIImageView alloc] init]; + } + return _imageView; +} + +- (UILabel *)titleLabel{ + if (!_titleLabel) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:10]; + label.textColor = [UIColor whiteColor]; + _titleLabel = label; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/XPRoomInsideRecommendCell.h b/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/XPRoomInsideRecommendCell.h new file mode 100644 index 00000000..7a2208b1 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/XPRoomInsideRecommendCell.h @@ -0,0 +1,19 @@ +// +// YMRoomInsideRecommendCell.h +// YUMI +// +// Created by YUMI on 2022/4/28. +// + +#import +#import "XPRoomRecommendModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomInsideRecommendCell : UITableViewCell + +@property (nonatomic, strong) XPRoomRecommendModel *model; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/XPRoomInsideRecommendCell.m b/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/XPRoomInsideRecommendCell.m new file mode 100644 index 00000000..600af1da --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/XPRoomInsideRecommendCell.m @@ -0,0 +1,138 @@ +// +// YMRoomInsideRecommendCell.m +// YUMI +// +// Created by YUMI on 2022/4/28. +// + +#import "XPRoomInsideRecommendCell.h" +#import "NetImageView.h" +///Third +#import +///Tool +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" + +@interface XPRoomInsideRecommendCell () + +///头像 +@property (nonatomic, strong) NetImageView *avatarImageView; +///显示名字 +@property (nonatomic,strong) UILabel *nickLabel; +///标签 +@property (nonatomic,strong) NetImageView *tagImageView; +///显示🔥 +@property (nonatomic,strong) UIImageView *hotImageView; +///显示在线人数 +@property (nonatomic,strong) UILabel *numberLabel; + +@end + +@implementation XPRoomInsideRecommendCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self addSubview:self.avatarImageView]; + [self addSubview:self.nickLabel]; + [self addSubview:self.tagImageView]; + [self addSubview:self.hotImageView]; + [self addSubview:self.numberLabel]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(12); + make.left.mas_equalTo(15); + make.width.height.mas_equalTo(72); + }]; + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.avatarImageView).mas_offset(12); + make.left.mas_equalTo(self.avatarImageView.mas_right).mas_offset(7); + make.height.mas_equalTo(14); + make.right.mas_equalTo(0); + }]; + [self.tagImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nickLabel); + make.width.mas_equalTo(43); + make.height.mas_equalTo(18); + make.top.mas_equalTo(self.nickLabel.mas_bottom).mas_offset(12); + }]; + [self.hotImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.tagImageView.mas_right).mas_offset(12); + make.width.height.mas_equalTo(13); + make.centerY.mas_equalTo(self.tagImageView); + }]; + [self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.hotImageView.mas_right).mas_offset(3); + make.centerY.mas_equalTo(self.tagImageView); + make.right.mas_equalTo(0); + make.height.mas_equalTo(12); + }]; +} +#pragma mark - Getters And Setters +- (void)setModel:(XPRoomRecommendModel *)model { + _model = model; + self.avatarImageView.imageUrl = model.avatar; + self.nickLabel.text = model.title; + self.tagImageView.imageUrl = model.tagPict; + self.numberLabel.text = [NSString stringWithFormat:@"%ld", model.onlineNum]; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 8; + } + return _avatarImageView; +} + +- (NetImageView *)tagImageView { + if (!_tagImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _tagImageView = [[NetImageView alloc] initWithConfig:config]; + } + return _tagImageView; +} + +- (UIImageView *)hotImageView { + if (!_hotImageView) { + _hotImageView = [[UIImageView alloc] init]; + _hotImageView.userInteractionEnabled = YES; + _hotImageView.image = [UIImage imageNamed:@"room_like_collect_room_hot"]; + } + return _hotImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont boldSystemFontOfSize:14]; + _nickLabel.textColor = [UIColor whiteColor]; + } + return _nickLabel; +} + +- (UILabel *)numberLabel { + if (!_numberLabel) { + _numberLabel = [[UILabel alloc] init]; + _numberLabel.font = [UIFont systemFontOfSize:12]; + _numberLabel.textColor = [UIColor whiteColor]; + } + return _numberLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/XPRoomInsideRecommendEmptyCell.h b/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/XPRoomInsideRecommendEmptyCell.h new file mode 100644 index 00000000..0e84eef4 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/XPRoomInsideRecommendEmptyCell.h @@ -0,0 +1,17 @@ +// +// YMRoomInsideRecommendEmptyCell.h +// YUMI +// +// Created by YUMI on 2022/4/28. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomInsideRecommendEmptyCell : UITableViewCell + +@end + +NS_ASSUME_NONNULL_END + diff --git a/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/XPRoomInsideRecommendEmptyCell.m b/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/XPRoomInsideRecommendEmptyCell.m new file mode 100644 index 00000000..9e9afa39 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/XPRoomInsideRecommendEmptyCell.m @@ -0,0 +1,56 @@ +// +// YMRoomInsideRecommendEmptyCell.m +// YUMI +// +// Created by YUMI on 2022/4/28. +// + +#import "XPRoomInsideRecommendEmptyCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImageConstant.h" + +@interface XPRoomInsideRecommendEmptyCell () +///空文本 +@property (nonatomic,strong) UILabel *emptyLabel; +@end + +@implementation XPRoomInsideRecommendEmptyCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.emptyLabel]; +} + +- (void)initSubViewConstraints { + [self.emptyLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView); + make.centerY.mas_equalTo(self.contentView); + }]; +} + +#pragma mark - Getters And Setters +- (UILabel *)emptyLabel { + if (!_emptyLabel) { + _emptyLabel = [[UILabel alloc] init]; + _emptyLabel.text = YMLocalizedString(@"XPRoomInsideRecommendEmptyCell"); + _emptyLabel.font = [UIFont systemFontOfSize:14]; + _emptyLabel.textAlignment = NSTextAlignmentCenter; + _emptyLabel.textColor = [UIColor whiteColor]; + } + return _emptyLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/YUMIChamberInsideEncourageDispossessElement.h b/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/YUMIChamberInsideEncourageDispossessElement.h deleted file mode 100644 index fd3f4a9e..00000000 --- a/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/YUMIChamberInsideEncourageDispossessElement.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMRoomInsideRecommendEmptyCell.h -// YUMI -// -// Created by YUMI on 2022/4/28. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberInsideEncourageDispossessElement : UITableViewCell - -@end - -NS_ASSUME_NONNULL_END - diff --git a/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/YUMIChamberInsideEncourageDispossessElement.m b/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/YUMIChamberInsideEncourageDispossessElement.m deleted file mode 100644 index 5571fd53..00000000 --- a/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/YUMIChamberInsideEncourageDispossessElement.m +++ /dev/null @@ -1,53 +0,0 @@ -// -// YMRoomInsideRecommendEmptyCell.m -// YUMI -// -// Created by YUMI on 2022/4/28. -// - -#import "YUMIChamberInsideEncourageDispossessElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIIndicateConstant.h" - -@interface YUMIChamberInsideEncourageDispossessElement () -@property (nonatomic,strong) UILabel *dispossessSequencignation; -@end - -@implementation YUMIChamberInsideEncourageDispossessElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.dispossessSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.dispossessSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView); - make.centerY.mas_equalTo(self.contentView); - }]; -} - -#pragma mark - Getters And Setters -- (UILabel *)dispossessSequencignation { - if (!_dispossessSequencignation) { - _dispossessSequencignation = [[UILabel alloc] init]; - _dispossessSequencignation.text = YMLocalizedString(@"YUMIChamberInsideEncourageDispossessElement"); - _dispossessSequencignation.font = [UIFont systemFontOfSize:14]; - _dispossessSequencignation.textAlignment = NSTextAlignmentCenter; - _dispossessSequencignation.textColor = [UIColor whiteColor]; - } - return _dispossessSequencignation; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/YUMIChamberInsideEncourageElement.h b/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/YUMIChamberInsideEncourageElement.h deleted file mode 100644 index 55d0ed0e..00000000 --- a/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/YUMIChamberInsideEncourageElement.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMRoomInsideRecommendCell.h -// YUMI -// -// Created by YUMI on 2022/4/28. -// - -#import -#import "YUMIChamberEncourageMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberInsideEncourageElement : UITableViewCell - -@property (nonatomic, strong) YUMIChamberEncourageMatrix *model; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/YUMIChamberInsideEncourageElement.m b/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/YUMIChamberInsideEncourageElement.m deleted file mode 100644 index f654a484..00000000 --- a/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/YUMIChamberInsideEncourageElement.m +++ /dev/null @@ -1,131 +0,0 @@ -// -// YMRoomInsideRecommendCell.m -// YUMI -// -// Created by YUMI on 2022/4/28. -// - -#import "YUMIChamberInsideEncourageElement.h" -#import "NetIndicateRegard.h" -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" - -@interface YUMIChamberInsideEncourageElement () - -@property (nonatomic, strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) NetIndicateRegard *coupleIndicateRegard; -@property (nonatomic,strong) UIImageView *thermalIndicateRegard; -@property (nonatomic,strong) UILabel *numberLabel; - -@end - -@implementation YUMIChamberInsideEncourageElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self addSubview:self.intelligenceportraitIndicateRegard]; - [self addSubview:self.monicerSequencignation]; - [self addSubview:self.coupleIndicateRegard]; - [self addSubview:self.thermalIndicateRegard]; - [self addSubview:self.numberLabel]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(12); - make.left.mas_equalTo(15); - make.width.height.mas_equalTo(72); - }]; - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard).mas_offset(12); - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).mas_offset(7); - make.height.mas_equalTo(14); - make.right.mas_equalTo(0); - }]; - [self.coupleIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.monicerSequencignation); - make.width.mas_equalTo(43); - make.height.mas_equalTo(18); - make.top.mas_equalTo(self.monicerSequencignation.mas_bottom).mas_offset(12); - }]; - [self.thermalIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.coupleIndicateRegard.mas_right).mas_offset(12); - make.width.height.mas_equalTo(13); - make.centerY.mas_equalTo(self.coupleIndicateRegard); - }]; - [self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.thermalIndicateRegard.mas_right).mas_offset(3); - make.centerY.mas_equalTo(self.coupleIndicateRegard); - make.right.mas_equalTo(0); - make.height.mas_equalTo(12); - }]; -} -#pragma mark - Getters And Setters -- (void)setModel:(YUMIChamberEncourageMatrix *)model { - _model = model; - self.intelligenceportraitIndicateRegard.imageUrl = model.avatar; - self.monicerSequencignation.text = model.title; - self.coupleIndicateRegard.imageUrl = model.tagPict; - self.numberLabel.text = [NSString stringWithFormat:@"%ld", model.onlineNum]; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 8; - } - return _intelligenceportraitIndicateRegard; -} - -- (NetIndicateRegard *)coupleIndicateRegard { - if (!_coupleIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _coupleIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - } - return _coupleIndicateRegard; -} - -- (UIImageView *)thermalIndicateRegard { - if (!_thermalIndicateRegard) { - _thermalIndicateRegard = [[UIImageView alloc] init]; - _thermalIndicateRegard.userInteractionEnabled = YES; - _thermalIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_like_collect_scope_hot"]; - } - return _thermalIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont boldSystemFontOfSize:14]; - _monicerSequencignation.textColor = [UIColor whiteColor]; - } - return _monicerSequencignation; -} - -- (UILabel *)numberLabel { - if (!_numberLabel) { - _numberLabel = [[UILabel alloc] init]; - _numberLabel.font = [UIFont systemFontOfSize:12]; - _numberLabel.textColor = [UIColor whiteColor]; - } - return _numberLabel; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/YUMIChamberInsideOperationElement.h b/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/YUMIChamberInsideOperationElement.h deleted file mode 100644 index b4a1a1d8..00000000 --- a/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/YUMIChamberInsideOperationElement.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMRoomInsideOperationCell.h -// YUMI -// -// Created by YUMI on 2022/9/30. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberInsideOperationElement : UICollectionViewCell - -@property (nonatomic, copy) NSString *title; -@property (nonatomic, copy) NSString *imageName; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/YUMIChamberInsideOperationElement.m b/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/YUMIChamberInsideOperationElement.m deleted file mode 100644 index c53a106d..00000000 --- a/YuMi/Modules/YMRoom/View/RoomRecommend/SubViews/YUMIChamberInsideOperationElement.m +++ /dev/null @@ -1,69 +0,0 @@ -// -// YMRoomInsideOperationCell.m -// YUMI -// -// Created by YUMI on 2022/9/30. -// - -#import "YUMIChamberInsideOperationElement.h" -#import - -@interface YUMIChamberInsideOperationElement() - -@property (nonatomic, strong) UIImageView *imageView; -@property (nonatomic, strong) UILabel *titleLabel; - -@end - -@implementation YUMIChamberInsideOperationElement - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initRegard]; - [self initContraints]; - } - return self; -} - -- (void)initRegard { - [self addSubview:self.imageView]; - [self addSubview:self.titleLabel]; -} - -- (void)initContraints { - [self.imageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.centerX.mas_equalTo(self); - make.width.height.mas_equalTo(52); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.imageView.mas_bottom).mas_offset(4); - make.centerX.mas_equalTo(self); - make.height.mas_equalTo(12); - }]; -} - -- (void)setTitle:(NSString *)title { - self.titleLabel.text = title; -} -- (void)setImageName:(NSString *)imageName { - self.imageView.image = [UIImage imageNamed:imageName]; -} - -- (UIImageView *)imageView { - if (!_imageView) { - _imageView = [[UIImageView alloc] init]; - } - return _imageView; -} - -- (UILabel *)titleLabel{ - if (!_titleLabel) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:10]; - label.textColor = [UIColor whiteColor]; - _titleLabel = label; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/RoomRecommend/XPRoomRecommendView.h b/YuMi/Modules/YMRoom/View/RoomRecommend/XPRoomRecommendView.h new file mode 100644 index 00000000..adbb7c3d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomRecommend/XPRoomRecommendView.h @@ -0,0 +1,34 @@ +// +// YMRoomRecommendView.h +// YUMI +// +// Created by YUMI on 2022/4/28. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPRoomRecommendViewDelegate + +///举报房间 +- (void)xPRoomRecommendViewReport; +///最小化房间 +- (void)xPRoomRecommendViewMiniRoom; +///退出房间 +- (void)xPRoomRecommendViewExitRoom; +///分享 +- (void)xPRoomRecommendViewShare; +///跳转到房间 +- (void)xPRoomRecommendViewJumpToRoom:(NSString *)roomUid; + +@end + +@interface XPRoomRecommendView : UIView + +@property (nonatomic, strong) NSMutableArray *roomList; + +@property (nonatomic, weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomRecommend/XPRoomRecommendView.m b/YuMi/Modules/YMRoom/View/RoomRecommend/XPRoomRecommendView.m new file mode 100644 index 00000000..dec14ef4 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/RoomRecommend/XPRoomRecommendView.m @@ -0,0 +1,207 @@ +// +// YMRoomRecommendView.m +// YUMI +// +// Created by YUMI on 2022/4/28. +// + +#import "XPRoomRecommendView.h" +///Third +#import +///Tool +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "NSArray+Safe.h" +///View +#import "XPRoomInsideRecommendCell.h" +#import "XPRoomInsideRecommendEmptyCell.h" +#import "XPRoomInsideOperationCell.h" + +@interface XPRoomRecommendView () + +///模糊背景 +@property (nonatomic, strong) UIToolbar *toolBar; +@property (nonatomic, strong) UITableView *tableView; + +@property (nonatomic, strong) UICollectionView *collectionView; +@property (nonatomic, strong) NSMutableArray *titleArray; +@property (nonatomic, strong) NSMutableArray *imageArray; +///为你推荐 +@property (nonatomic, strong) UILabel *recommentLabel; + +@end + +@implementation XPRoomRecommendView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self setUpUI]; + [self setUpConstraints]; + } + return self; +} + +#pragma mark - lifeCycle +- (void)setUpUI { + [self addSubview:self.toolBar]; + [self addSubview:self.collectionView]; + [self addSubview:self.recommentLabel]; + [self addSubview:self.tableView]; +} + +- (void)setRoomList:(NSMutableArray *)roomList { + _roomList = roomList; + [self.tableView reloadData]; +} + +#pragma mark - Constraints +- (void)setUpConstraints { + [self.toolBar mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.left.right.bottom.mas_equalTo(self); + }]; + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(0); + make.top.mas_equalTo(kStatusBarHeight + 8); + make.height.mas_equalTo(82*2); + }]; + [self.recommentLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.collectionView.mas_bottom).mas_offset(16); + make.left.mas_equalTo(11); + }]; + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(0); + make.top.mas_equalTo(self.recommentLabel.mas_bottom); + }]; +} +#pragma mark - UICollectionViewDataSource +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.titleArray.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPRoomInsideOperationCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPRoomInsideOperationCell class]) forIndexPath:indexPath]; + cell.title = [self.titleArray safeObjectAtIndex1:indexPath.row]; + cell.imageName = [self.imageArray safeObjectAtIndex1:indexPath.row]; + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + if (indexPath.row == 0) {//最小化房间 + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomRecommendViewMiniRoom)]) { + [self.delegate xPRoomRecommendViewMiniRoom]; + } + } else if (indexPath.row == 1) {//分享房间 + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomRecommendViewExitRoom)]) { + [self.delegate xPRoomRecommendViewExitRoom]; + } + } else if (indexPath.row == 2) {//退出房间 + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomRecommendViewReport)]) { + [self.delegate xPRoomRecommendViewReport]; + } + } else {//举报房间 + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomRecommendViewShare)]) { + [self.delegate xPRoomRecommendViewShare]; + } + + } +} + +#pragma mark - UITableViewDelegate +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.roomList.count ? self.roomList.count : 1; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.roomList.count > 0) { + XPRoomInsideRecommendCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPRoomInsideRecommendCell class])]; + XPRoomRecommendModel *model = [self.roomList safeObjectAtIndex1:indexPath.row]; + cell.model = model; + return cell; + } + XPRoomInsideRecommendEmptyCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPRoomInsideRecommendEmptyCell class])]; + if (cell == nil) { + cell = [[XPRoomInsideRecommendEmptyCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPRoomInsideRecommendEmptyCell class])]; + } + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.roomList.count > 0) { + XPRoomRecommendModel *model = [self.roomList safeObjectAtIndex1:indexPath.row]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomRecommendViewJumpToRoom:)]) { + [self.delegate xPRoomRecommendViewJumpToRoom:[NSString stringWithFormat:@"%ld", model.uid]]; + } + } +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return self.roomList.count > 0 ? 84 : KScreenHeight - kStatusBarHeight -8 - 120; +} + +#pragma mark - getter +- (UIToolbar *)toolBar { + if (!_toolBar) { + _toolBar = [[UIToolbar alloc] init]; + _toolBar.barStyle = UIBarStyleBlack; + _toolBar.translucent = YES; + } + return _toolBar; +} + +- (UILabel *)recommentLabel { + if (!_recommentLabel) { + _recommentLabel = [[UILabel alloc] init]; + _recommentLabel.text = YMLocalizedString(@"XPRoomRecommendView0"); + _recommentLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _recommentLabel.textColor = [UIColor whiteColor]; + } + return _recommentLabel; +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.showsVerticalScrollIndicator = NO; + [_tableView registerClass:[XPRoomInsideRecommendCell class] forCellReuseIdentifier:NSStringFromClass([XPRoomInsideRecommendCell class])]; + [_tableView registerClass:[XPRoomInsideRecommendEmptyCell class] forCellReuseIdentifier:NSStringFromClass([XPRoomInsideRecommendEmptyCell class])]; + _tableView.backgroundColor = [UIColor clearColor]; + } + return _tableView; +} + +- (UICollectionView *)collectionView { + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.scrollDirection = UICollectionViewScrollDirectionVertical; + layout.minimumLineSpacing = 14; + layout.minimumInteritemSpacing = (250 - 3 * 52) / 4; + layout.itemSize = CGSizeMake(52, 68); + layout.sectionInset = UIEdgeInsetsMake(0, (250 - 3 * 52) / 4, 0, (250 - 3 * 52) / 4); + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + [_collectionView registerClass:[XPRoomInsideOperationCell class] forCellWithReuseIdentifier:NSStringFromClass([XPRoomInsideOperationCell class])]; + _collectionView.delegate = self; + _collectionView.dataSource = self; + _collectionView.backgroundColor = [UIColor clearColor]; + } + return _collectionView; +} + +- (NSMutableArray *)titleArray { + if (!_titleArray) { + _titleArray = [NSMutableArray arrayWithObjects:@"收起房间", @"退出房间", YMLocalizedString(@"XPRoomRecommendView3"), nil]; + } + return _titleArray; +} + +- (NSMutableArray *)imageArray { + if (!_imageArray) { + _imageArray = [NSMutableArray arrayWithObjects:@"room_info_mini", @"room_info_exit", @"room_info_report", nil]; + } + return _imageArray; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/RoomRecommend/YUMIChamberEncourageRegard.h b/YuMi/Modules/YMRoom/View/RoomRecommend/YUMIChamberEncourageRegard.h deleted file mode 100644 index d041788c..00000000 --- a/YuMi/Modules/YMRoom/View/RoomRecommend/YUMIChamberEncourageRegard.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// YMRoomRecommendView.h -// YUMI -// -// Created by YUMI on 2022/4/28. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCChamberEncourageRegardRepresendtation - -- (void)yUMIChamberEncourageRegardReport; -- (void)yUMIChamberEncourageRegardRoadliceChamber; -- (void)yUMIChamberEncourageRegardExitChamber; -- (void)yUMIChamberEncourageRegardPartowardsiciptowardsion; -- (void)yUMIChamberEncourageRegardJumpToChamber:(NSString *)roomUid; - -@end - -@interface YUMIChamberEncourageRegard : UIView - -@property (nonatomic, strong) NSMutableArray *roomList; - -@property (nonatomic, weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/RoomRecommend/YUMIChamberEncourageRegard.m b/YuMi/Modules/YMRoom/View/RoomRecommend/YUMIChamberEncourageRegard.m deleted file mode 100644 index d9f3d5b7..00000000 --- a/YuMi/Modules/YMRoom/View/RoomRecommend/YUMIChamberEncourageRegard.m +++ /dev/null @@ -1,202 +0,0 @@ -// -// YMRoomRecommendView.m -// YUMI -// -// Created by YUMI on 2022/4/28. -// - -#import "YUMIChamberEncourageRegard.h" -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "NSArray+Safe.h" -#import "YUMIChamberInsideEncourageElement.h" -#import "YUMIChamberInsideEncourageDispossessElement.h" -#import "YUMIChamberInsideOperationElement.h" - -@interface YUMIChamberEncourageRegard () - -@property (nonatomic, strong) UIToolbar *utensilObstacle; -@property (nonatomic, strong) UITableView *tableView; - -@property (nonatomic, strong) UICollectionView *collectionView; -@property (nonatomic, strong) NSMutableArray *titleArray; -@property (nonatomic, strong) NSMutableArray *indicateGarment; -@property (nonatomic, strong) UILabel *rejudgementSequencignation; - -@end - -@implementation YUMIChamberEncourageRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self setUpwardsUI]; - [self setUpwardsRestrictions]; - } - return self; -} - -#pragma mark - lifeCycle -- (void)setUpwardsUI { - [self addSubview:self.utensilObstacle]; - [self addSubview:self.collectionView]; - [self addSubview:self.rejudgementSequencignation]; - [self addSubview:self.tableView]; -} - -- (void)setRoomList:(NSMutableArray *)roomList { - _roomList = roomList; - [self.tableView reloadData]; -} - -#pragma mark - Constraints -- (void)setUpwardsRestrictions { - [self.utensilObstacle mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.left.right.bottom.mas_equalTo(self); - }]; - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(0); - make.top.mas_equalTo(kStatusBarHeight + 8); - make.height.mas_equalTo(82*2); - }]; - [self.rejudgementSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.collectionView.mas_bottom).mas_offset(16); - make.left.mas_equalTo(11); - }]; - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(0); - make.top.mas_equalTo(self.rejudgementSequencignation.mas_bottom); - }]; -} -#pragma mark - UICollectionViewDataSource -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.titleArray.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMIChamberInsideOperationElement *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIChamberInsideOperationElement class]) forIndexPath:indexPath]; - cell.title = [self.titleArray secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.imageName = [self.indicateGarment secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - if (indexPath.row == 0) { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberEncourageRegardRoadliceChamber)]) { - [self.delegate yUMIChamberEncourageRegardRoadliceChamber]; - } - } else if (indexPath.row == 1) { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberEncourageRegardExitChamber)]) { - [self.delegate yUMIChamberEncourageRegardExitChamber]; - } - } else if (indexPath.row == 2) { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberEncourageRegardReport)]) { - [self.delegate yUMIChamberEncourageRegardReport]; - } - } else { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberEncourageRegardPartowardsiciptowardsion)]) { - [self.delegate yUMIChamberEncourageRegardPartowardsiciptowardsion]; - } - - } -} - -#pragma mark - UITableViewDelegate -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.roomList.count ? self.roomList.count : 1; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.roomList.count > 0) { - YUMIChamberInsideEncourageElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIChamberInsideEncourageElement class])]; - YUMIChamberEncourageMatrix *model = [self.roomList secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.model = model; - return cell; - } - YUMIChamberInsideEncourageDispossessElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIChamberInsideEncourageDispossessElement class])]; - if (cell == nil) { - cell = [[YUMIChamberInsideEncourageDispossessElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIChamberInsideEncourageDispossessElement class])]; - } - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.roomList.count > 0) { - YUMIChamberEncourageMatrix *model = [self.roomList secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberEncourageRegardJumpToChamber:)]) { - [self.delegate yUMIChamberEncourageRegardJumpToChamber:[NSString stringWithFormat:@"%ld", model.uid]]; - } - } -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return self.roomList.count > 0 ? 84 : KScreenHeight - kStatusBarHeight -8 - 120; -} - -#pragma mark - getter -- (UIToolbar *)utensilObstacle { - if (!_utensilObstacle) { - _utensilObstacle = [[UIToolbar alloc] init]; - _utensilObstacle.barStyle = UIBarStyleBlack; - _utensilObstacle.translucent = YES; - } - return _utensilObstacle; -} - -- (UILabel *)rejudgementSequencignation { - if (!_rejudgementSequencignation) { - _rejudgementSequencignation = [[UILabel alloc] init]; - _rejudgementSequencignation.text = YMLocalizedString(@"YUMI_Room_Recommend_View_0"); - _rejudgementSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _rejudgementSequencignation.textColor = [UIColor whiteColor]; - } - return _rejudgementSequencignation; -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.showsVerticalScrollIndicator = NO; - [_tableView registerClass:[YUMIChamberInsideEncourageElement class] forCellReuseIdentifier:NSStringFromClass([YUMIChamberInsideEncourageElement class])]; - [_tableView registerClass:[YUMIChamberInsideEncourageDispossessElement class] forCellReuseIdentifier:NSStringFromClass([YUMIChamberInsideEncourageDispossessElement class])]; - _tableView.backgroundColor = [UIColor clearColor]; - } - return _tableView; -} - -- (UICollectionView *)collectionView { - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.scrollDirection = UICollectionViewScrollDirectionVertical; - layout.minimumLineSpacing = 14; - layout.minimumInteritemSpacing = (250 - 3 * 52) / 4; - layout.itemSize = CGSizeMake(52, 68); - layout.sectionInset = UIEdgeInsetsMake(0, (250 - 3 * 52) / 4, 0, (250 - 3 * 52) / 4); - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - [_collectionView registerClass:[YUMIChamberInsideOperationElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIChamberInsideOperationElement class])]; - _collectionView.delegate = self; - _collectionView.dataSource = self; - _collectionView.backgroundColor = [UIColor clearColor]; - } - return _collectionView; -} - -- (NSMutableArray *)titleArray { - if (!_titleArray) { - _titleArray = [NSMutableArray arrayWithObjects:@"收起房间", @"退出房间", YMLocalizedString(@"YUMI_Room_Recommend_View_3"), nil]; - } - return _titleArray; -} - -- (NSMutableArray *)indicateGarment { - if (!_indicateGarment) { - _indicateGarment = [NSMutableArray arrayWithObjects:@"room_info_mini", @"room_info_exit", @"room_info_report", nil]; - } - return _indicateGarment; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/Api/Api+Sailing.h b/YuMi/Modules/YMRoom/View/Sailing/Api/Api+Sailing.h index 506a786e..78596492 100644 --- a/YuMi/Modules/YMRoom/View/Sailing/Api/Api+Sailing.h +++ b/YuMi/Modules/YMRoom/View/Sailing/Api/Api+Sailing.h @@ -10,11 +10,25 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (Sailing) -+ (void)acquireMarchingRtowardseSttowardsement:(HttpRequestHelperCompletion)compltion page:(NSString *)page pageSize:(NSString *)pageSize datetype:(NSString *)datetype; +/// 获取航海排行榜列表 +/// @param compltion 完成 +/// @param page 当前的页数 +/// @param pageSize 一个多少个 +/// @param datetype 类型 今日榜1 昨日榜2 ++ (void)getSailingRankList:(HttpRequestHelperCompletion)compltion page:(NSString *)page pageSize:(NSString *)pageSize datetype:(NSString *)datetype; -+ (void)acquireMarchingAbstract:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; +/// 获取航海的燃料 +/// @param completion 完成 +/// @param uid 用户的uid ++ (void)getSailingInfo:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; -+ (void)unfoildMarching:(HttpRequestHelperCompletion)completion uid:(NSString *)uid keyNum:(NSString *)keyNum sendMessage:(NSString *)sendMessage roomUid:(NSString *)roomUid; +/// 开始航海 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param keyNum 燃料数 +/// @param sendMessage 是否发消息 +/// @param roomUid 房间的uid ++ (void)openSailing:(HttpRequestHelperCompletion)completion uid:(NSString *)uid keyNum:(NSString *)keyNum sendMessage:(NSString *)sendMessage roomUid:(NSString *)roomUid; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/Api/Api+Sailing.m b/YuMi/Modules/YMRoom/View/Sailing/Api/Api+Sailing.m index 1a87273b..2d0890ee 100644 --- a/YuMi/Modules/YMRoom/View/Sailing/Api/Api+Sailing.m +++ b/YuMi/Modules/YMRoom/View/Sailing/Api/Api+Sailing.m @@ -10,21 +10,35 @@ @implementation Api (Sailing) -+ (void)acquireMarchingRtowardseSttowardsement:(HttpRequestHelperCompletion)compltion page:(NSString *)page pageSize:(NSString *)pageSize datetype:(NSString *)datetype { - NSString * fang = [NSString stringFromBase64String:@"bGluZWFybHlQb29sL3Jhbmtpbmdz"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:compltion, __FUNCTION__, page, pageSize, datetype, nil]; +/// 获取航海排行榜列表 +/// @param compltion 完成 +/// @param page 当前的页数 +/// @param pageSize 一个多少个 +/// @param datetype 类型 今日榜1 昨日榜2 ++ (void)getSailingRankList:(HttpRequestHelperCompletion)compltion page:(NSString *)page pageSize:(NSString *)pageSize datetype:(NSString *)datetype { + NSString * fang = [NSString stringFromBase64String:@"bGluZWFybHlQb29sL3Jhbmtpbmdz"];///linearlyPool/rankings + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:compltion, __FUNCTION__, page, pageSize, datetype, nil]; } -+ (void)acquireMarchingAbstract:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"bGluZWFybHlQb29sL3VzZXJrZXk="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, uid, nil]; +/// 获取航海的燃料 +/// @param completion 完成 +/// @param uid 用户的uid ++ (void)getSailingInfo:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"bGluZWFybHlQb29sL3VzZXJrZXk="];///linearlyPool/userkey + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, uid, nil]; } -+ (void)unfoildMarching:(HttpRequestHelperCompletion)completion uid:(NSString *)uid keyNum:(NSString *)keyNum sendMessage:(NSString *)sendMessage roomUid:(NSString *)roomUid { - NSString * fang = [NSString stringFromBase64String:@"bGluZWFybHlQb29sL2RyYXc="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion,__FUNCTION__, uid, keyNum, sendMessage, roomUid, nil]; +/// 开始航海 +/// @param completion 完成 +/// @param uid 用户的uid +/// @param keyNum 燃料数 +/// @param sendMessage 是否发消息 +/// @param roomUid 房间的uid ++ (void)openSailing:(HttpRequestHelperCompletion)completion uid:(NSString *)uid keyNum:(NSString *)keyNum sendMessage:(NSString *)sendMessage roomUid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@"bGluZWFybHlQb29sL2RyYXc="];///linearlyPool/draw + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion,__FUNCTION__, uid, keyNum, sendMessage, roomUid, nil]; } @end diff --git a/YuMi/Modules/YMRoom/View/Sailing/Model/ChamberMarchingAbstractMatrix.h b/YuMi/Modules/YMRoom/View/Sailing/Model/ChamberMarchingAbstractMatrix.h deleted file mode 100644 index 3dd392a9..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/Model/ChamberMarchingAbstractMatrix.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// ChamberMarchingAbstractMatrix.h -// YUMI -// -// Created by YUMI on 2022/8/12. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface ChamberMarchingAbstractMatrix : NSObject -@property (nonatomic, assign) NSInteger keyNum; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/Model/ChamberMarchingAbstractMatrix.m b/YuMi/Modules/YMRoom/View/Sailing/Model/ChamberMarchingAbstractMatrix.m deleted file mode 100644 index 94166930..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/Model/ChamberMarchingAbstractMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ChamberMarchingAbstractMatrix.m -// YUMI -// -// Created by YUMI on 2022/8/12. -// - -#import "ChamberMarchingAbstractMatrix.h" - -@implementation ChamberMarchingAbstractMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/Model/ChamberMarchingCaptureMatrix.h b/YuMi/Modules/YMRoom/View/Sailing/Model/ChamberMarchingCaptureMatrix.h deleted file mode 100644 index 2b449738..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/Model/ChamberMarchingCaptureMatrix.h +++ /dev/null @@ -1,48 +0,0 @@ -// -// ChamberMarchingCaptureMatrix.h -// YUMI -// -// Created by YUMI on 2022/8/15. -// - -#import - - -typedef enum : NSUInteger { - SailingPrizeLevelOne=1, - SailingPrizeLevelTwo, - SailingPrizeLevelThree, - SailingPrizeLevelFour, - SailingPrizeLevelFive -} SailingPrizeLevel; - -typedef NS_ENUM(NSUInteger, SailingPrizeGenre) { - SailingPrizeGenre_Gold = 1, - SailingPrizeGenre_Gift, - SailingPrizeGenre_Car, - SailingPrizeGenre_Headwear, - SailingPrizeGenre_Background, - SailingPrizeGenre_Matter, - SailingPrizeGenre_Beautif, - SailingPrizeGenre_WholeServer - -}; - -NS_ASSUME_NONNULL_BEGIN - -@interface ChamberMarchingCaptureMatrix : NSObject -@property (nonatomic, copy) NSString *prizeName; -@property (nonatomic, copy) NSString *prizeImgUrl; -@property (nonatomic, assign) SailingPrizeGenre prizeType; -@property (nonatomic, copy) NSString *prizeTypeDesc; -@property (nonatomic, assign) int prizeNum; -@property (nonatomic, assign) CGFloat platformValue; -@property (nonatomic, assign) SailingPrizeLevel prizeLevel; -@property (nonatomic, assign) NSInteger referenceId; -@property (nonatomic, assign) NSInteger prizeId; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,assign) NSInteger userLevelLimit; -@property (nonatomic,copy) NSString *uid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/Model/ChamberMarchingCaptureMatrix.m b/YuMi/Modules/YMRoom/View/Sailing/Model/ChamberMarchingCaptureMatrix.m deleted file mode 100644 index d91d55ca..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/Model/ChamberMarchingCaptureMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ChamberMarchingCaptureMatrix.m -// YUMI -// -// Created by YUMI on 2022/8/15. -// - -#import "ChamberMarchingCaptureMatrix.h" - -@implementation ChamberMarchingCaptureMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/Model/ChamberMarchingCaptureStatementMatrix.h b/YuMi/Modules/YMRoom/View/Sailing/Model/ChamberMarchingCaptureStatementMatrix.h deleted file mode 100644 index 7c1f1dd7..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/Model/ChamberMarchingCaptureStatementMatrix.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// ChamberMarchingCaptureStatementMatrix.h -// YUMI -// -// Created by YUMI on 2022/8/15. -// - -#import -#import "ChamberMarchingCaptureMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@interface ChamberMarchingCaptureStatementMatrix : NSObject -@property (nonatomic,strong) NSArray *prizeItemList; -@property (nonatomic,assign) NSInteger remainKeyNum; -@property (nonatomic,assign) BOOL specialStatus; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/Model/ChamberMarchingCaptureStatementMatrix.m b/YuMi/Modules/YMRoom/View/Sailing/Model/ChamberMarchingCaptureStatementMatrix.m deleted file mode 100644 index 805cbe5a..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/Model/ChamberMarchingCaptureStatementMatrix.m +++ /dev/null @@ -1,15 +0,0 @@ -// -// ChamberMarchingCaptureStatementMatrix.m -// YUMI -// -// Created by YUMI on 2022/8/15. -// - -#import "ChamberMarchingCaptureStatementMatrix.h" - -@implementation ChamberMarchingCaptureStatementMatrix -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{@"prizeItemList": ChamberMarchingCaptureMatrix.class}; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/Model/ChamberMarchingRateMatrix.h b/YuMi/Modules/YMRoom/View/Sailing/Model/ChamberMarchingRateMatrix.h deleted file mode 100644 index 15f7c391..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/Model/ChamberMarchingRateMatrix.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// ChamberMarchingRateMatrix.h -// YUMI -// -// Created by YUMI on 2022/8/12. -// - -#import -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -@interface ChamberMarchingRateMatrix : NSObject -@property (copy, nonatomic) NSString * uid; -@property (copy, nonatomic) NSString *nick; -@property (copy, nonatomic) NSString *avatar; -@property (nonatomic,strong) NSString *badge; -@property (nonatomic,strong) NSString *micDecorate; -@property (copy, nonatomic) NSString *goldAmount; -@property (strong, nonatomic) NSNumber *amount; -@property (copy, nonatomic) NSString *ranking; -@property (nonatomic,assign) BOOL hide; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/Model/ChamberMarchingRateMatrix.m b/YuMi/Modules/YMRoom/View/Sailing/Model/ChamberMarchingRateMatrix.m deleted file mode 100644 index 51fb96c5..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/Model/ChamberMarchingRateMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ChamberMarchingRateMatrix.m -// YUMI -// -// Created by YUMI on 2022/8/12. -// - -#import "ChamberMarchingRateMatrix.h" - -@implementation ChamberMarchingRateMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/Model/RoomSailingInfoModel.h b/YuMi/Modules/YMRoom/View/Sailing/Model/RoomSailingInfoModel.h new file mode 100644 index 00000000..2e2fc7c0 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/Model/RoomSailingInfoModel.h @@ -0,0 +1,17 @@ +// +// RoomSailingInfoModel.h +// YUMI +// +// Created by YUMI on 2022/8/12. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RoomSailingInfoModel : NSObject +///燃料的个数 +@property (nonatomic, assign) NSInteger keyNum; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/Model/RoomSailingInfoModel.m b/YuMi/Modules/YMRoom/View/Sailing/Model/RoomSailingInfoModel.m new file mode 100644 index 00000000..f8c31f57 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/Model/RoomSailingInfoModel.m @@ -0,0 +1,12 @@ +// +// RoomSailingInfoModel.m +// YUMI +// +// Created by YUMI on 2022/8/12. +// + +#import "RoomSailingInfoModel.h" + +@implementation RoomSailingInfoModel + +@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/Model/RoomSailingPrizeListModel.h b/YuMi/Modules/YMRoom/View/Sailing/Model/RoomSailingPrizeListModel.h new file mode 100644 index 00000000..247ffe7b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/Model/RoomSailingPrizeListModel.h @@ -0,0 +1,21 @@ +// +// RoomSailingPrizeListModel.h +// YUMI +// +// Created by YUMI on 2022/8/15. +// + +#import +#import "RoomSailingPrizeModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface RoomSailingPrizeListModel : NSObject +///奖品的数组 +@property (nonatomic,strong) NSArray *prizeItemList; +///剩余钥匙数 +@property (nonatomic,assign) NSInteger remainKeyNum; +///是否有元宝礼物 +@property (nonatomic,assign) BOOL specialStatus; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/Model/RoomSailingPrizeListModel.m b/YuMi/Modules/YMRoom/View/Sailing/Model/RoomSailingPrizeListModel.m new file mode 100644 index 00000000..c37fcdd2 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/Model/RoomSailingPrizeListModel.m @@ -0,0 +1,15 @@ +// +// RoomSailingPrizeListModel.m +// YUMI +// +// Created by YUMI on 2022/8/15. +// + +#import "RoomSailingPrizeListModel.h" + +@implementation RoomSailingPrizeListModel ++ (NSDictionary *)objectClassInArray { + return @{@"prizeItemList": RoomSailingPrizeModel.class}; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/Model/RoomSailingPrizeModel.h b/YuMi/Modules/YMRoom/View/Sailing/Model/RoomSailingPrizeModel.h new file mode 100644 index 00000000..b1366c54 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/Model/RoomSailingPrizeModel.h @@ -0,0 +1,51 @@ +// +// RoomSailingPrizeModel.h +// YUMI +// +// Created by YUMI on 2022/8/15. +// + +#import + + +typedef enum : NSUInteger { + SailingPrizeLevelOne=1, + SailingPrizeLevelTwo, + SailingPrizeLevelThree, + SailingPrizeLevelFour, + SailingPrizeLevelFive +} SailingPrizeLevel; + +//奖品类型。1-萌币,2-礼物,3-座驾,4-头饰,5-背景,6-实物,7-靓号,8-全麦礼物 +typedef NS_ENUM(NSUInteger, SailingPrizeType) { + SailingPrizeType_Gold = 1, + SailingPrizeType_Gift, + SailingPrizeType_Car, + SailingPrizeType_Headwear, + SailingPrizeType_Background, + SailingPrizeType_Matter, + SailingPrizeType_Beautif, + SailingPrizeType_WholeServer + +}; + +NS_ASSUME_NONNULL_BEGIN + +@interface RoomSailingPrizeModel : NSObject +@property (nonatomic, copy) NSString *prizeName;//奖品名称 +@property (nonatomic, copy) NSString *prizeImgUrl;//奖品icon +@property (nonatomic, assign) SailingPrizeType prizeType;//奖品类型 +@property (nonatomic, copy) NSString *prizeTypeDesc;//奖品类型描述 +@property (nonatomic, assign) int prizeNum;//奖品数量 +@property (nonatomic, assign) CGFloat platformValue;//价格 +@property (nonatomic, assign) SailingPrizeLevel prizeLevel;//奖品等级 +@property (nonatomic, assign) NSInteger referenceId;//相关实体id +@property (nonatomic, assign) NSInteger prizeId;//奖品id +@property (nonatomic,copy) NSString *nick; +///等级限制 大于这个等级才能加到公屏 +@property (nonatomic,assign) NSInteger userLevelLimit; +///用户的uid +@property (nonatomic,copy) NSString *uid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/Model/RoomSailingPrizeModel.m b/YuMi/Modules/YMRoom/View/Sailing/Model/RoomSailingPrizeModel.m new file mode 100644 index 00000000..9949616d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/Model/RoomSailingPrizeModel.m @@ -0,0 +1,12 @@ +// +// RoomSailingPrizeModel.m +// YUMI +// +// Created by YUMI on 2022/8/15. +// + +#import "RoomSailingPrizeModel.h" + +@implementation RoomSailingPrizeModel + +@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/Model/RoomSailingRankModel.h b/YuMi/Modules/YMRoom/View/Sailing/Model/RoomSailingRankModel.h new file mode 100644 index 00000000..5ac29dea --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/Model/RoomSailingRankModel.h @@ -0,0 +1,24 @@ +// +// RoomSailingRankModel.h +// YUMI +// +// Created by YUMI on 2022/8/12. +// + +#import +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +@interface RoomSailingRankModel : NSObject +@property (copy, nonatomic) NSString * uid; +@property (copy, nonatomic) NSString *nick; +@property (copy, nonatomic) NSString *avatar; //头像 +@property (nonatomic,strong) NSString *badge;//徽章 +@property (nonatomic,strong) NSString *micDecorate;//头饰 +@property (copy, nonatomic) NSString *goldAmount;//房间send/receive钻石总数 +@property (strong, nonatomic) NSNumber *amount;//房间许愿池排行榜钻石 +@property (copy, nonatomic) NSString *ranking;//排名 +@property (nonatomic,assign) BOOL hide;//是否榜单隐身 +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/Model/RoomSailingRankModel.m b/YuMi/Modules/YMRoom/View/Sailing/Model/RoomSailingRankModel.m new file mode 100644 index 00000000..c33af917 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/Model/RoomSailingRankModel.m @@ -0,0 +1,12 @@ +// +// RoomSailingRankModel.m +// YUMI +// +// Created by YUMI on 2022/8/12. +// + +#import "RoomSailingRankModel.h" + +@implementation RoomSailingRankModel + +@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/Presenter/Protocol/FBCSailingCeremony.h b/YuMi/Modules/YMRoom/View/Sailing/Presenter/Protocol/FBCSailingCeremony.h deleted file mode 100644 index ecf76ab3..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/Presenter/Protocol/FBCSailingCeremony.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMSailingProtocol.h -// YUMI -// -// Created by YUMI on 2022/8/12. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ChamberMarchingAbstractMatrix, ChamberMarchingCaptureStatementMatrix; -@protocol FBCSailingCeremony -- (void)acquireMarchingAbstractAccomplishment:(ChamberMarchingAbstractMatrix *)info; -- (void)unfoildMarchingAccomplishment:(ChamberMarchingCaptureStatementMatrix *)model; -- (void)unfoildMarchingFlunk:(NSString *)message; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/Presenter/Protocol/XPSailingProtocol.h b/YuMi/Modules/YMRoom/View/Sailing/Presenter/Protocol/XPSailingProtocol.h new file mode 100644 index 00000000..fae05324 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/Presenter/Protocol/XPSailingProtocol.h @@ -0,0 +1,21 @@ +// +// YMSailingProtocol.h +// YUMI +// +// Created by YUMI on 2022/8/12. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class RoomSailingInfoModel, RoomSailingPrizeListModel; +@protocol XPSailingProtocol +///获取航海的信息成功 +- (void)getSailingInfoSuccess:(RoomSailingInfoModel *)info; +///开启一个探索成功 +- (void)openSailingSuccess:(RoomSailingPrizeListModel *)model; +///探索一次失败 +- (void)openSailingFail:(NSString *)message; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/Presenter/XPSailingPresenter.h b/YuMi/Modules/YMRoom/View/Sailing/Presenter/XPSailingPresenter.h new file mode 100644 index 00000000..79914b6f --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/Presenter/XPSailingPresenter.h @@ -0,0 +1,20 @@ +// +// YMSailingPresenter.h +// YUMI +// +// Created by YUMI on 2022/8/12. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPSailingPresenter : BaseMvpPresenter +/// 获取航海信息 +- (void)getSailingInfo; + +///开始探索 +- (void)openSailing:(NSString *)roomUid sendMessage:(BOOL)sendMessage keyNum:(NSInteger)keyNum; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/Presenter/XPSailingPresenter.m b/YuMi/Modules/YMRoom/View/Sailing/Presenter/XPSailingPresenter.m new file mode 100644 index 00000000..209b019d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/Presenter/XPSailingPresenter.m @@ -0,0 +1,39 @@ +// +// YMSailingPresenter.m +// YUMI +// +// Created by YUMI on 2022/8/12. +// + +#import "XPSailingPresenter.h" +#import "Api+Sailing.h" +#import "AccountInfoStorage.h" +#import "RoomSailingInfoModel.h" +#import "RoomSailingPrizeListModel.h" +#import "XPSailingProtocol.h" + +@implementation XPSailingPresenter + +/// 获取航海信息 +- (void)getSailingInfo { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api getSailingInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + RoomSailingInfoModel * info = [RoomSailingInfoModel modelWithDictionary:data.data]; + [[self getView] getSailingInfoSuccess:info]; + }] uid:uid]; +} + +///开始探索 +- (void)openSailing:(NSString *)roomUid sendMessage:(BOOL)sendMessage keyNum:(NSInteger)keyNum { + NSString * keyNumStr = [NSString stringWithFormat:@"%ld", keyNum]; + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * sendMessageStr = [NSString stringWithFormat:@"%d", sendMessage]; + [Api openSailing:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + RoomSailingPrizeListModel * listModel = [RoomSailingPrizeListModel modelWithDictionary:data.data]; + [[self getView] openSailingSuccess:listModel]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] openSailingFail:msg]; + } ] uid:uid keyNum:keyNumStr sendMessage:sendMessageStr roomUid:roomUid]; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/Presenter/YUMIMarchingExternalizer.h b/YuMi/Modules/YMRoom/View/Sailing/Presenter/YUMIMarchingExternalizer.h deleted file mode 100644 index 90c4044f..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/Presenter/YUMIMarchingExternalizer.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMSailingPresenter.h -// YUMI -// -// Created by YUMI on 2022/8/12. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIMarchingExternalizer : BaseMvpExternalizer -- (void)acquireMarchingAbstract; - -- (void)unfoildMarching:(NSString *)roomUid sendMessage:(BOOL)sendMessage keyNum:(NSInteger)keyNum; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/Presenter/YUMIMarchingExternalizer.m b/YuMi/Modules/YMRoom/View/Sailing/Presenter/YUMIMarchingExternalizer.m deleted file mode 100644 index c3181d12..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/Presenter/YUMIMarchingExternalizer.m +++ /dev/null @@ -1,37 +0,0 @@ -// -// YMSailingPresenter.m -// YUMI -// -// Created by YUMI on 2022/8/12. -// - -#import "YUMIMarchingExternalizer.h" -#import "Api+Sailing.h" -#import "AccountAbstractStorage.h" -#import "ChamberMarchingAbstractMatrix.h" -#import "ChamberMarchingCaptureStatementMatrix.h" -#import "FBCSailingCeremony.h" - -@implementation YUMIMarchingExternalizer - -- (void)acquireMarchingAbstract { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api acquireMarchingAbstract:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ChamberMarchingAbstractMatrix * info = [ChamberMarchingAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireMarchingAbstractAccomplishment:info]; - }] uid:uid]; -} - -- (void)unfoildMarching:(NSString *)roomUid sendMessage:(BOOL)sendMessage keyNum:(NSInteger)keyNum { - NSString * keyNumStr = [NSString stringWithFormat:@"%ld", keyNum]; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * sendMessageStr = [NSString stringWithFormat:@"%d", sendMessage]; - [Api unfoildMarching:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ChamberMarchingCaptureStatementMatrix * listMatrix = [ChamberMarchingCaptureStatementMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] unfoildMarchingAccomplishment:listMatrix]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] unfoildMarchingFlunk:msg]; - } ] uid:uid keyNum:keyNumStr sendMessage:sendMessageStr roomUid:roomUid]; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/Cell/XPSailingEmptyTableViewCell.h b/YuMi/Modules/YMRoom/View/Sailing/View/Cell/XPSailingEmptyTableViewCell.h new file mode 100644 index 00000000..07ce1e43 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/View/Cell/XPSailingEmptyTableViewCell.h @@ -0,0 +1,16 @@ +// +// YMSailingEmptyTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/8/12. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPSailingEmptyTableViewCell : UITableViewCell + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/Cell/XPSailingEmptyTableViewCell.m b/YuMi/Modules/YMRoom/View/Sailing/View/Cell/XPSailingEmptyTableViewCell.m new file mode 100644 index 00000000..242dda0d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/View/Cell/XPSailingEmptyTableViewCell.m @@ -0,0 +1,73 @@ +// +// YMSailingEmptyTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/8/12. +// + +#import "XPSailingEmptyTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImageConstant.h" + +@interface XPSailingEmptyTableViewCell () +@property (nonatomic,strong) UIImageView *emptyImageView; +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPSailingEmptyTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.emptyImageView]; + [self.contentView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.emptyImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.contentView).offset(50); + make.size.mas_equalTo(CGSizeMake(100, 100)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.emptyImageView.mas_bottom).offset(20); + make.left.right.mas_equalTo(self.contentView); + }]; +} +#pragma mark - Getters And Setters +- (UIImageView *)emptyImageView { + if (!_emptyImageView) { + _emptyImageView = [[UIImageView alloc] init]; + _emptyImageView.userInteractionEnabled = YES; + _emptyImageView.image = [UIImageConstant defalutEmptyPlaceholder]; + _emptyImageView.layer.masksToBounds = YES; + _emptyImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _emptyImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPSailingEmptyTableViewCell0"); + _titleLabel.font = [UIFont systemFontOfSize:16]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/Cell/XPSailingPrizeCollectionViewCell.h b/YuMi/Modules/YMRoom/View/Sailing/View/Cell/XPSailingPrizeCollectionViewCell.h new file mode 100644 index 00000000..ba49df9e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/View/Cell/XPSailingPrizeCollectionViewCell.h @@ -0,0 +1,16 @@ +// +// YMSailingPrizeCollectionViewCell.h +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class RoomSailingPrizeModel; +@interface XPSailingPrizeCollectionViewCell : UICollectionViewCell +@property (nonatomic,strong) RoomSailingPrizeModel *prizeModel; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/Cell/XPSailingPrizeCollectionViewCell.m b/YuMi/Modules/YMRoom/View/Sailing/View/Cell/XPSailingPrizeCollectionViewCell.m new file mode 100644 index 00000000..296d64dd --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/View/Cell/XPSailingPrizeCollectionViewCell.m @@ -0,0 +1,85 @@ +// +// YMSailingPrizeCollectionViewCell.m +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import "XPSailingPrizeCollectionViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "RoomSailingPrizeModel.h" + +@interface XPSailingPrizeCollectionViewCell () +@property (nonatomic,strong) NetImageView *logoImageView; +@property (nonatomic,strong) UILabel *titleLabel; + +@end + +@implementation XPSailingPrizeCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.contentView.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.logoImageView]; + [self.contentView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.logoImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(42, 42)); + make.top.centerX.mas_equalTo(self.self.contentView); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.logoImageView); + make.top.mas_equalTo(self.logoImageView.mas_bottom).offset(5); + }]; +} + +#pragma mark - Getters And Setters +- (void)setPrizeModel:(RoomSailingPrizeModel *)prizeModel { + _prizeModel = prizeModel; + if (_prizeModel) { + self.logoImageView.imageUrl = _prizeModel.prizeImgUrl; + self.titleLabel.text = [NSString stringWithFormat:@"%@*%d", _prizeModel.prizeName, _prizeModel.prizeNum]; + } +} + +- (NetImageView *)logoImageView { + if (!_logoImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _logoImageView = [[NetImageView alloc] initWithConfig:config]; + _logoImageView.layer.masksToBounds = YES; + _logoImageView.layer.cornerRadius = 8; + _logoImageView.contentMode = UIViewContentModeScaleAspectFill; + } + return _logoImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:10]; + _titleLabel.textColor = UIColorFromRGB(0xA08161); + _titleLabel.numberOfLines = 2; + } + return _titleLabel; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/Cell/XPSailingRankTableViewCell.h b/YuMi/Modules/YMRoom/View/Sailing/View/Cell/XPSailingRankTableViewCell.h new file mode 100644 index 00000000..62b3aa35 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/View/Cell/XPSailingRankTableViewCell.h @@ -0,0 +1,16 @@ +// +// YMSailingRankTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/8/12. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class RoomSailingRankModel; +@interface XPSailingRankTableViewCell : UITableViewCell +@property (nonatomic,strong) RoomSailingRankModel *rankInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/Cell/XPSailingRankTableViewCell.m b/YuMi/Modules/YMRoom/View/Sailing/View/Cell/XPSailingRankTableViewCell.m new file mode 100644 index 00000000..87dc319d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/View/Cell/XPSailingRankTableViewCell.m @@ -0,0 +1,178 @@ +// +// YMSailingRankTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/8/12. +// + +#import "XPSailingRankTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +///Model +#import "RoomSailingRankModel.h" + +@interface XPSailingRankTableViewCell () +///背景 +@property (nonatomic,strong) UIView * backView; +///排名 +@property (nonatomic,strong) UIButton *rankButton; +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///钻石 +@property (nonatomic,strong) UILabel *coinLabel; +///钻石 +@property (nonatomic,strong) UIImageView *diamondImageView; + +@end + +@implementation XPSailingRankTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.backView]; + [self.backView addSubview:self.rankButton]; + [self.backView addSubview:self.avatarImageView]; + [self.backView addSubview:self.nickLabel]; + [self.backView addSubview:self.diamondImageView]; + [self.backView addSubview:self.coinLabel]; +} + +- (void)initSubViewConstraints { + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + make.top.mas_equalTo(self.contentView); + make.height.mas_equalTo(60); + }]; + + [self.rankButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(29, 20)); + make.left.mas_equalTo(self.backView).offset(15); + make.centerY.mas_equalTo(self.backView); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(50, 50)); + make.centerY.mas_equalTo(self.backView); + make.left.mas_equalTo(self.rankButton.mas_right).offset(24); + }]; + + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(5); + make.centerY.mas_equalTo(self.avatarImageView); + make.right.mas_lessThanOrEqualTo(self.diamondImageView.mas_left).offset(-5); + }]; + + + [self.diamondImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(14, 12)); + make.centerY.mas_equalTo(self.backView); + make.right.mas_equalTo(self.coinLabel.mas_left).offset(-2); + }]; + + [self.coinLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.backView).offset(-10); + make.centerY.mas_equalTo(self.backView); + make.width.mas_equalTo(80); + }]; + +} + +#pragma mark - Getters And Setters +- (void)setRankInfo:(RoomSailingRankModel *)rankInfo { + _rankInfo = rankInfo; + if (_rankInfo) { + self.avatarImageView.imageUrl = _rankInfo.avatar; + self.nickLabel.text = _rankInfo.nick; + self.coinLabel.text = _rankInfo.amount.stringValue; + if (_rankInfo.ranking.integerValue == 1) { + [self.rankButton setImage:[UIImage imageNamed:@"room_sailing_rank_first"] forState:UIControlStateNormal]; + [self.rankButton setTitle:@"" forState:UIControlStateNormal]; + } else if(_rankInfo.ranking.integerValue == 2) { + [self.rankButton setImage:[UIImage imageNamed:@"room_sailing_rank_second"] forState:UIControlStateNormal]; + [self.rankButton setTitle:@"" forState:UIControlStateNormal]; + } else if(_rankInfo.ranking.integerValue == 3) { + [self.rankButton setImage:[UIImage imageNamed:@"room_sailing_rank_third"] forState:UIControlStateNormal]; + [self.rankButton setTitle:@"" forState:UIControlStateNormal]; + } else { + [self.rankButton setTitle:_rankInfo.ranking forState:UIControlStateNormal]; + [self.rankButton setImage:nil forState:UIControlStateNormal]; + } + } +} + +- (UIView *)backView { + if (!_backView) { + _backView = [[UIView alloc] init]; + _backView.backgroundColor = [DJDKMIMOMColor colorWithHexString:@"#ffeec3"]; + _backView.layer.masksToBounds = YES; + _backView.layer.cornerRadius = 6; + } + return _backView; +} + +- (UIButton *)rankButton { + if (!_rankButton) { + _rankButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_rankButton setTitle:@"1" forState:UIControlStateNormal]; + [_rankButton setTitleColor:[DJDKMIMOMColor colorWithHexString:@"#CFAD79"] forState:UIControlStateNormal]; + _rankButton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; + } + return _rankButton; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 50/2; + } + return _avatarImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:12]; + _nickLabel.textColor = [DJDKMIMOMColor colorWithHexString:@"#A08161"]; + } + return _nickLabel; +} + +- (UIImageView *)diamondImageView { + if (!_diamondImageView) { + _diamondImageView = [[UIImageView alloc] init]; + _diamondImageView.userInteractionEnabled = YES; + _diamondImageView.image = [UIImage imageNamed:@"common_diamond"]; + } + return _diamondImageView; +} + +- (UILabel *)coinLabel { + if (!_coinLabel) { + _coinLabel = [[UILabel alloc] init]; + _coinLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; + _coinLabel.textColor = [DJDKMIMOMColor colorWithHexString:@"#64472E"]; + } + return _coinLabel; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/Cell/YUMIMarchingCaptureAssembletionRegardElement.h b/YuMi/Modules/YMRoom/View/Sailing/View/Cell/YUMIMarchingCaptureAssembletionRegardElement.h deleted file mode 100644 index 481102ba..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/View/Cell/YUMIMarchingCaptureAssembletionRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMSailingPrizeCollectionViewCell.h -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ChamberMarchingCaptureMatrix; -@interface YUMIMarchingCaptureAssembletionRegardElement : UICollectionViewCell -@property (nonatomic,strong) ChamberMarchingCaptureMatrix *captureMatrix; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/Cell/YUMIMarchingCaptureAssembletionRegardElement.m b/YuMi/Modules/YMRoom/View/Sailing/View/Cell/YUMIMarchingCaptureAssembletionRegardElement.m deleted file mode 100644 index 84a5a73e..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/View/Cell/YUMIMarchingCaptureAssembletionRegardElement.m +++ /dev/null @@ -1,83 +0,0 @@ -// -// YMSailingPrizeCollectionViewCell.m -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import "YUMIMarchingCaptureAssembletionRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "ChamberMarchingCaptureMatrix.h" - -@interface YUMIMarchingCaptureAssembletionRegardElement () -@property (nonatomic,strong) NetIndicateRegard *brandIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; - -@end - -@implementation YUMIMarchingCaptureAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.contentView.backgroundColor = [UIColor clearColor]; - [self.contentView addSubview:self.brandIndicateRegard]; - [self.contentView addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.brandIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(42, 42)); - make.top.centerX.mas_equalTo(self.self.contentView); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.brandIndicateRegard); - make.top.mas_equalTo(self.brandIndicateRegard.mas_bottom).offset(5); - }]; -} - -#pragma mark - Getters And Setters -- (void)setCaptureMatrix:(ChamberMarchingCaptureMatrix *)captureMatrix { - _captureMatrix = captureMatrix; - if (_captureMatrix) { - self.brandIndicateRegard.imageUrl = _captureMatrix.prizeImgUrl; - self.titleLabel.text = [NSString stringWithFormat:@"%@*%d", _captureMatrix.prizeName, _captureMatrix.prizeNum]; - } -} - -- (NetIndicateRegard *)brandIndicateRegard { - if (!_brandIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _brandIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _brandIndicateRegard.layer.masksToBounds = YES; - _brandIndicateRegard.layer.cornerRadius = 8; - _brandIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _brandIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:10]; - _titleLabel.textColor = UIColorFromRGB(0xA08161); - _titleLabel.numberOfLines = 2; - } - return _titleLabel; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/Cell/YUMIMarchingDispossessTabulationRegardElement.h b/YuMi/Modules/YMRoom/View/Sailing/View/Cell/YUMIMarchingDispossessTabulationRegardElement.h deleted file mode 100644 index 5c432fe5..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/View/Cell/YUMIMarchingDispossessTabulationRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMSailingEmptyTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/8/12. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIMarchingDispossessTabulationRegardElement : UITableViewCell - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/Cell/YUMIMarchingDispossessTabulationRegardElement.m b/YuMi/Modules/YMRoom/View/Sailing/View/Cell/YUMIMarchingDispossessTabulationRegardElement.m deleted file mode 100644 index 06f16e1f..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/View/Cell/YUMIMarchingDispossessTabulationRegardElement.m +++ /dev/null @@ -1,71 +0,0 @@ -// -// YMSailingEmptyTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/8/12. -// - -#import "YUMIMarchingDispossessTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIIndicateConstant.h" - -@interface YUMIMarchingDispossessTabulationRegardElement () -@property (nonatomic,strong) UIImageView *dispossessIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@end - -@implementation YUMIMarchingDispossessTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.dispossessIndicateRegard]; - [self.contentView addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.dispossessIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.contentView).offset(50); - make.size.mas_equalTo(CGSizeMake(100, 100)); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.dispossessIndicateRegard.mas_bottom).offset(20); - make.left.right.mas_equalTo(self.contentView); - }]; -} -#pragma mark - Getters And Setters -- (UIImageView *)dispossessIndicateRegard { - if (!_dispossessIndicateRegard) { - _dispossessIndicateRegard = [[UIImageView alloc] init]; - _dispossessIndicateRegard.userInteractionEnabled = YES; - _dispossessIndicateRegard.image = [UIIndicateConstant defalutDispossessDepapossessor]; - _dispossessIndicateRegard.layer.masksToBounds = YES; - _dispossessIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _dispossessIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Sailing_Empty_Table_View_Cell_0"); - _titleLabel.font = [UIFont systemFontOfSize:16]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/Cell/YUMIMarchingRateTabulationRegardElement.h b/YuMi/Modules/YMRoom/View/Sailing/View/Cell/YUMIMarchingRateTabulationRegardElement.h deleted file mode 100644 index 34635271..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/View/Cell/YUMIMarchingRateTabulationRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMSailingRankTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/8/12. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ChamberMarchingRateMatrix; -@interface YUMIMarchingRateTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) ChamberMarchingRateMatrix *rateAbstract; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/Cell/YUMIMarchingRateTabulationRegardElement.m b/YuMi/Modules/YMRoom/View/Sailing/View/Cell/YUMIMarchingRateTabulationRegardElement.m deleted file mode 100644 index 5ef62992..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/View/Cell/YUMIMarchingRateTabulationRegardElement.m +++ /dev/null @@ -1,169 +0,0 @@ -// -// YMSailingRankTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/8/12. -// - -#import "YUMIMarchingRateTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "ChamberMarchingRateMatrix.h" - -@interface YUMIMarchingRateTabulationRegardElement () -@property (nonatomic,strong) UIView * encourageRegard; -@property (nonatomic,strong) UIButton *rateBtuton; -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UILabel *tangerineSequencignation; -@property (nonatomic,strong) UIImageView *bWSttawberryIndicateRegard; - -@end - -@implementation YUMIMarchingRateTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.encourageRegard]; - [self.encourageRegard addSubview:self.rateBtuton]; - [self.encourageRegard addSubview:self.intelligenceportraitIndicateRegard]; - [self.encourageRegard addSubview:self.monicerSequencignation]; - [self.encourageRegard addSubview:self.bWSttawberryIndicateRegard]; - [self.encourageRegard addSubview:self.tangerineSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(15); - make.top.mas_equalTo(self.contentView); - make.height.mas_equalTo(60); - }]; - - [self.rateBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(29, 20)); - make.left.mas_equalTo(self.encourageRegard).offset(15); - make.centerY.mas_equalTo(self.encourageRegard); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(50, 50)); - make.centerY.mas_equalTo(self.encourageRegard); - make.left.mas_equalTo(self.rateBtuton.mas_right).offset(24); - }]; - - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(5); - make.centerY.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.right.mas_lessThanOrEqualTo(self.bWSttawberryIndicateRegard.mas_left).offset(-5); - }]; - - - [self.bWSttawberryIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(14, 12)); - make.centerY.mas_equalTo(self.encourageRegard); - make.right.mas_equalTo(self.tangerineSequencignation.mas_left).offset(-2); - }]; - - [self.tangerineSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.encourageRegard).offset(-10); - make.centerY.mas_equalTo(self.encourageRegard); - make.width.mas_equalTo(80); - }]; - -} - -#pragma mark - Getters And Setters -- (void)setRateAbstract:(ChamberMarchingRateMatrix *)rateAbstract { - _rateAbstract = rateAbstract; - if (_rateAbstract) { - self.intelligenceportraitIndicateRegard.imageUrl = _rateAbstract.avatar; - self.monicerSequencignation.text = _rateAbstract.nick; - self.tangerineSequencignation.text = _rateAbstract.amount.stringValue; - if (_rateAbstract.ranking.integerValue == 1) { - [self.rateBtuton setImage:[UIImage imageNamed:@"yumi_scope_sailing_order_first"] forState:UIControlStateNormal]; - [self.rateBtuton setTitle:@"" forState:UIControlStateNormal]; - } else if(_rateAbstract.ranking.integerValue == 2) { - [self.rateBtuton setImage:[UIImage imageNamed:@"yumi_scope_sailing_order_second"] forState:UIControlStateNormal]; - [self.rateBtuton setTitle:@"" forState:UIControlStateNormal]; - } else if(_rateAbstract.ranking.integerValue == 3) { - [self.rateBtuton setImage:[UIImage imageNamed:@"yumi_scope_sailing_order_third"] forState:UIControlStateNormal]; - [self.rateBtuton setTitle:@"" forState:UIControlStateNormal]; - } else { - [self.rateBtuton setTitle:_rateAbstract.ranking forState:UIControlStateNormal]; - [self.rateBtuton setImage:nil forState:UIControlStateNormal]; - } - } -} - -- (UIView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIView alloc] init]; - _encourageRegard.backgroundColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#ffeec3"]; - _encourageRegard.layer.masksToBounds = YES; - _encourageRegard.layer.cornerRadius = 6; - } - return _encourageRegard; -} - -- (UIButton *)rateBtuton { - if (!_rateBtuton) { - _rateBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_rateBtuton setTitle:@"1" forState:UIControlStateNormal]; - [_rateBtuton setTitleColor:[DJDKMIMOMColor colorAboutHexBWSttr:@"#CFAD79"] forState:UIControlStateNormal]; - _rateBtuton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; - } - return _rateBtuton; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 50/2; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:12]; - _monicerSequencignation.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#A08161"]; - } - return _monicerSequencignation; -} - -- (UIImageView *)bWSttawberryIndicateRegard { - if (!_bWSttawberryIndicateRegard) { - _bWSttawberryIndicateRegard = [[UIImageView alloc] init]; - _bWSttawberryIndicateRegard.userInteractionEnabled = YES; - _bWSttawberryIndicateRegard.image = [UIImage imageNamed:@"yumi_same_diamond"]; - } - return _bWSttawberryIndicateRegard; -} - -- (UILabel *)tangerineSequencignation { - if (!_tangerineSequencignation) { - _tangerineSequencignation = [[UILabel alloc] init]; - _tangerineSequencignation.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; - _tangerineSequencignation.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#64472E"]; - } - return _tangerineSequencignation; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingAnimationView.h b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingAnimationView.h new file mode 100644 index 00000000..2939e02a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingAnimationView.h @@ -0,0 +1,15 @@ +// +// YMSailingAnimationView.h +// YUMI +// +// Created by YUMI on 2022/8/19. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@interface XPSailingAnimationView : UIView +@property (nonatomic,strong) NSDictionary *prizeInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingAnimationView.m b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingAnimationView.m new file mode 100644 index 00000000..8de5e849 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingAnimationView.m @@ -0,0 +1,102 @@ +// +// YMSailingAnimationView.m +// YUMI +// +// Created by YUMI on 2022/8/19. +// + +#import "XPSailingAnimationView.h" +///Third +#import +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "RoomSailingPrizeModel.h" +#import "NSObject+MJExtension.h" +#import + + +@interface XPSailingAnimationView () +///背景图 +@property (nonatomic,strong) UIImageView *backImageView; +///房间名字 +@property (nonatomic,strong) MarqueeLabel *titleLabel; +@end + +@implementation XPSailingAnimationView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backImageView]; + [self.backImageView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backImageView).offset(89 * kScreenScale); + make.top.mas_equalTo(self.backImageView).offset(29 * kScreenScale); + make.right.mas_lessThanOrEqualTo(self.backImageView); + }]; +} + +- (NSAttributedString *)createAttribute:(NSString * )text color:(UIColor *)color fontSize:(CGFloat)fonSize { + NSDictionary * attribute = @{NSFontAttributeName:[UIFont systemFontOfSize:fonSize], NSForegroundColorAttributeName:color}; + NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:text attributes:attribute]; + return attr; +} + + + +#pragma mark - Getters And Setters +- (void)setPrizeInfo:(NSDictionary *)prizeInfo { + _prizeInfo = prizeInfo; + if (_prizeInfo) { + RoomSailingPrizeModel * info = [RoomSailingPrizeModel modelWithDictionary:_prizeInfo]; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + CGFloat fontSize = 12; + [attribute appendAttributedString:[self createAttribute:@"厉害了! " color:[UIColor whiteColor] fontSize:fontSize]]; + NSString * nick = info.nick; + if (nick.length > 6) { + nick = [nick substringToIndex:6]; + } + [attribute appendAttributedString:[self createAttribute:nick color:UIColorFromRGB(0xFFFE95) fontSize:fontSize]]; + [attribute appendAttributedString:[self createAttribute:@"在航海冒险中获得 " color:[UIColor whiteColor] fontSize:fontSize]]; + [attribute appendAttributedString:[self createAttribute:info.prizeName color:UIColorFromRGB(0xFFFE95) fontSize:fontSize]]; + if (info.prizeNum > 1) { + [attribute appendAttributedString:[self createAttribute:[NSString stringWithFormat:@" X%d", info.prizeNum] color:[UIColor whiteColor] fontSize:fontSize]]; + } + self.titleLabel.attributedText = attribute; + } +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.image = [UIImage imageNamed:@"room_sailing_animation_gift_bg"]; + } + return _backImageView; +} + +- (MarqueeLabel *)titleLabel{ + if (!_titleLabel) { + _titleLabel = [[MarqueeLabel alloc] init]; + _titleLabel.scrollDuration = 4.0; + _titleLabel.fadeLength = 15; + _titleLabel.userInteractionEnabled = YES; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingBuyFuelView.h b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingBuyFuelView.h new file mode 100644 index 00000000..4076e1f5 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingBuyFuelView.h @@ -0,0 +1,24 @@ +// +// YMSailingBuyFuelView.h +// YUMI +// +// Created by YUMI on 2022/8/23. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPSailingBuyFuelView; +@protocol XPSailingBuyFuelViewDelegate +///取消 +- (void)xPSailingBuyFuelView:(XPSailingBuyFuelView *)view didClickCancel:(UIButton *)sender; +///购买 +- (void)xPSailingBuyFuelView:(XPSailingBuyFuelView *)view didClickBuy:(UIButton *)sender; + +@end +@interface XPSailingBuyFuelView : UIView +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingBuyFuelView.m b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingBuyFuelView.m new file mode 100644 index 00000000..f5017d7e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingBuyFuelView.m @@ -0,0 +1,126 @@ +// +// YMSailingBuyFuelView.m +// YUMI +// +// Created by YUMI on 2022/8/23. +// + +#import "XPSailingBuyFuelView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" + +@interface XPSailingBuyFuelView () +///背景 +@property (nonatomic,strong) UIImageView *backImageView; +///内容 +@property (nonatomic,strong) UILabel *titleLabel; +///取消 +@property (nonatomic,strong) UIButton *cancelButton; +///购买 +@property (nonatomic,strong) UIButton *buyButton; + +@end + + +@implementation XPSailingBuyFuelView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backImageView]; + [self.backImageView addSubview:self.titleLabel]; + [self.backImageView addSubview:self.cancelButton]; + [self.backImageView addSubview:self.buyButton]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(280, 177)); + }]; + + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.backImageView).offset(54); + make.centerX.mas_equalTo(self.backImageView); + }]; + + [self.cancelButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(85, 24)); + make.right.mas_equalTo(self.backImageView.mas_centerX).offset(-10); + make.bottom.mas_equalTo(self.backImageView).offset(-24); + }]; + + [self.buyButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.centerY.mas_equalTo(self.cancelButton); + make.left.mas_equalTo(self.backImageView.mas_centerX).offset(10); + }]; +} + +#pragma mark - Event Response +- (void)cancelButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPSailingBuyFuelView:didClickCancel:)]) { + [self.delegate xPSailingBuyFuelView:self didClickCancel:sender]; + } +} + +- (void)buyButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPSailingBuyFuelView:didClickBuy:)]) { + [self.delegate xPSailingBuyFuelView:self didClickBuy:sender]; + } +} + +#pragma mark - Getters And Setters +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.image = [UIImage imageNamed:@"room_sailing_buy_fuel_bg"]; + } + return _backImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:15]; + _titleLabel.textColor = UIColorFromRGB(0x64472E); + _titleLabel.text = @"当前燃油不足 \n 可参与活动获得燃油哦~"; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.numberOfLines = 2; + } + return _titleLabel; +} + +- (UIButton *)cancelButton { + if (!_cancelButton) { + _cancelButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_cancelButton setImage:[UIImage imageNamed:@"room_sailing_buy_fuel_cancel"] forState:UIControlStateNormal]; + [_cancelButton setImage:[UIImage imageNamed:@"room_sailing_buy_fuel_cancel"] forState:UIControlStateSelected]; + [_cancelButton addTarget:self action:@selector(cancelButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _cancelButton; +} + +- (UIButton *)buyButton { + if (!_buyButton) { + _buyButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_buyButton setImage:[UIImage imageNamed:@"room_sailing_buy_fuel_sure"] forState:UIControlStateNormal]; + [_buyButton setImage:[UIImage imageNamed:@"room_sailing_buy_fuel_sure"] forState:UIControlStateSelected]; + [_buyButton addTarget:self action:@selector(buyButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _buyButton; +} +@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingGiftView.h b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingGiftView.h new file mode 100644 index 00000000..29ba1080 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingGiftView.h @@ -0,0 +1,16 @@ +// +// YMSailingGiftView.h +// YUMI +// +// Created by YUMI on 2022/8/19. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class RoomSailingPrizeModel; +@interface XPSailingGiftView : UIView +@property (nonatomic,strong) RoomSailingPrizeModel *prizeInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingGiftView.m b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingGiftView.m new file mode 100644 index 00000000..fa106dab --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingGiftView.m @@ -0,0 +1,88 @@ +// +// YMSailingGiftView.m +// YUMI +// +// Created by YUMI on 2022/8/19. +// + +#import "XPSailingGiftView.h" +///Third +#import +#import "RoomSailingPrizeModel.h" +#import "XPCandyTreeAnimationModel.h" + +@interface XPSailingGiftView () +///礼物背景 +@property (nonatomic,strong) UIImageView *backImageView; +///显示文字 +@property (nonatomic,strong) UILabel *titleLabel; +///动画完成 +@property (nonatomic,copy) void(^FinishBlock)(BOOL finish); +@end + +@implementation XPSailingGiftView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backImageView]; + [self addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self); + make.height.mas_equalTo(19); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backImageView.mas_left).offset(3); + make.centerY.mas_equalTo(self.backImageView); + }]; +} +#pragma mark - Getters And Setters +- (void)setPrizeInfo:(RoomSailingPrizeModel *)prizeInfo { + _prizeInfo = prizeInfo; + if (_prizeInfo) { + NSString * backImage= @"candy_tree_levle_third"; + if(_prizeInfo.prizeLevel == SailingPrizeLevelFour) { + backImage = @"candy_tree_levle_fourth"; + } else if(_prizeInfo.prizeLevel == SailingPrizeLevelFive) { + backImage = @"candy_tree_levle_fifth"; + } + self.backImageView.image = [UIImage imageNamed:backImage]; + if (_prizeInfo.prizeName.length > 7) { + _prizeInfo.prizeName = [_prizeInfo.prizeName substringToIndex:7]; + } + NSString * giftTitle = [NSString stringWithFormat:@"%@ x %d", _prizeInfo.prizeName, _prizeInfo.prizeNum]; + self.titleLabel.text = giftTitle; + } + [self layoutIfNeeded]; +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + } + return _backImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:10]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.textColor = [UIColor whiteColor]; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingPrizeView.h b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingPrizeView.h new file mode 100644 index 00000000..1e66dcc9 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingPrizeView.h @@ -0,0 +1,17 @@ +// +// YMSailingPrizeView.h +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class RoomSailingPrizeListModel; +@interface XPSailingPrizeView : UIView +@property (nonatomic,strong) RoomSailingPrizeListModel * prizeInfo; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingPrizeView.m b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingPrizeView.m new file mode 100644 index 00000000..8a7a6ab8 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingPrizeView.m @@ -0,0 +1,111 @@ +// +// YMSailingPrizeView.m +// YUMI +// +// Created by YUMI on 2022/8/18. +// + +#import "XPSailingPrizeView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NSArray+Safe.h" +///Model +#import "RoomSailingPrizeListModel.h" +///View +#import "XPSailingPrizeCollectionViewCell.h" + +@interface XPSailingPrizeView () + +///背景 +@property (nonatomic,strong) UIImageView *backImageView; +///列表 +@property (nonatomic,strong) UICollectionView *collectionView; +@end + + +@implementation XPSailingPrizeView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backImageView]; + [self.backImageView addSubview:self.collectionView]; +} + +- (void)initSubViewConstraints { + + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.backImageView).offset(75); + make.left.right.mas_equalTo(self.backImageView); + make.bottom.mas_equalTo(self).offset(-10); + }]; +} + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.prizeInfo.prizeItemList.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPSailingPrizeCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPSailingPrizeCollectionViewCell class]) forIndexPath:indexPath]; + cell.prizeModel = [self.prizeInfo.prizeItemList safeObjectAtIndex1:indexPath.row]; + return cell; +} +#pragma mark - Getters And Setters +- (void)setPrizeInfo:(RoomSailingPrizeListModel *)prizeInfo{ + _prizeInfo = prizeInfo; + [self.collectionView reloadData]; + if (_prizeInfo.specialStatus) { + if (_prizeInfo.prizeItemList.count > 5) { + self.backImageView.image = [UIImage imageNamed:@"room_sailing_prize_cowry_large"]; + }else { + self.backImageView.image = [UIImage imageNamed:@"room_sailing_prize_crowy"]; + } + } else { + if (prizeInfo.prizeItemList.count > 5) { + self.backImageView.image = [UIImage imageNamed:@"room_sailing_prize_normal_large"]; + }else { + self.backImageView.image = [UIImage imageNamed:@"room_sailing_prize_one"]; + } + } +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + } + return _backImageView; +} + +- (UICollectionView *)collectionView{ + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.sectionInset = UIEdgeInsetsMake(0, 21, 0, 21); + layout.itemSize = CGSizeMake(42, 47 + 21); + layout.minimumLineSpacing = 7; + layout.minimumInteritemSpacing = 7; + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.backgroundColor = [UIColor clearColor]; + [_collectionView registerClass:[XPSailingPrizeCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPSailingPrizeCollectionViewCell class])]; + + } + return _collectionView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingRankSubView.h b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingRankSubView.h new file mode 100644 index 00000000..34e2f0f8 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingRankSubView.h @@ -0,0 +1,21 @@ +// +// YMSailingRankSubView.h +// YUMI +// +// Created by YUMI on 2022/8/12. +// + +#import +#import +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, SailingRankType) { + SailingRankType_Today = 1, + SailingRankType_YesterDay = 2 +}; + +@interface XPSailingRankSubView : UIView +@property (nonatomic,assign) SailingRankType type; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingRankSubView.m b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingRankSubView.m new file mode 100644 index 00000000..cce02e99 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingRankSubView.m @@ -0,0 +1,177 @@ +// +// YMSailingRankSubView.m +// YUMI +// +// Created by YUMI on 2022/8/12. +// + +#import "XPSailingRankSubView.h" +///Third +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "Api+Sailing.h" +#import "XNDJTDDLoadingTool.h" +#import "NSArray+Safe.h" +///Model +#import "RoomSailingRankModel.h" +///View +#import "XPSailingEmptyTableViewCell.h" +#import "XPSailingRankTableViewCell.h" + +@interface XPSailingRankSubView () +///列表 +@property (nonatomic,strong) UITableView *tableView; +/// 数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +@property (nonatomic,assign) int page; +@property (nonatomic,assign) BOOL hasNoMoreData; +@end + +@implementation XPSailingRankSubView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initHeaderAndFooterRrfresh]; + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; + +} + +#pragma mark - 刷新的fangfa +- (void)headerRefresh { + self.page = 1; + NSString * page = [NSString stringWithFormat:@"%d", self.page]; + NSString * type = [NSString stringWithFormat:@"%ld", self.type]; + [Api getSailingRankList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + [self.tableView.mj_header endRefreshing]; + if (code == 200) { + [self.datasource removeAllObjects]; + NSArray * array = [RoomSailingRankModel modelsWithArray:data.data[@"rankVos"]]; + [self.datasource addObjectsFromArray:array]; + self.hasNoMoreData = NO; + [self.tableView reloadData]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } page:page pageSize:@"20" datetype:type]; + +} + +- (void)footerRefresh { + if (self.hasNoMoreData) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPSailingRankSubView0")]; + [self.tableView.mj_footer endRefreshing]; + return; + } + self.page++; + NSString * page = [NSString stringWithFormat:@"%d", self.page]; + NSString * type = [NSString stringWithFormat:@"%ld", self.type]; + [Api getSailingRankList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + [self.tableView.mj_footer endRefreshing]; + if (code == 200) { + NSArray * array = [RoomSailingRankModel modelsWithArray:data.data[@"rankVos"]]; + if (array.count > 0) { + [self.datasource addObjectsFromArray:array]; + self.hasNoMoreData = NO; + } else { + self.hasNoMoreData= YES; + } + [self.tableView reloadData]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } page:page pageSize:@"20" datetype:type]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return self.datasource.count > 0 ? 74 : 380; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0 ) { + XPSailingRankTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPSailingRankTableViewCell class])]; + if (cell == nil) { + cell = [[XPSailingRankTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPSailingRankTableViewCell class])]; + } + cell.rankInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + return cell; + } + XPSailingEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPSailingEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPSailingEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPSailingEmptyTableViewCell class])]; + } + return cell; +} + + +#pragma mark - JXCategoryListContentViewDelegate +- (UIView *)listView { + return self; +} + +- (void)setType:(SailingRankType)type { + _type = type; + [self headerRefresh]; +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPSailingEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPSailingEmptyTableViewCell class])]; + [_tableView registerClass:[XPSailingRankTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPSailingRankTableViewCell class])]; + } + return _tableView; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingRankView.h b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingRankView.h new file mode 100644 index 00000000..6d2084c9 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingRankView.h @@ -0,0 +1,16 @@ +// +// YMSailingRankView.h +// YUMI +// +// Created by YUMI on 2022/8/12. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPSailingRankView : UIView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingRankView.m b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingRankView.m new file mode 100644 index 00000000..a3d612e5 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingRankView.m @@ -0,0 +1,154 @@ +// +// YMSailingRankView.m +// YUMI +// +// Created by YUMI on 2022/8/12. +// + +#import "XPSailingRankView.h" +///Third +#import +#import +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +///View +#import "XPSailingRankSubView.h" + +@interface XPSailingRankView () +///分页标题 +@property (nonatomic, strong) NSArray *titles; +///分页控件 +@property (nonatomic, strong) JXCategoryTitleView *titleView; +///分页lineView +@property (nonatomic, strong) JXCategoryListContainerView *contentView; +///背景 +@property (nonatomic,strong) UIImageView *backImageView; +///今日榜单 +@property (nonatomic,strong) XPSailingRankSubView *todayView; +///昨日榜单 +@property (nonatomic,strong) XPSailingRankSubView *yesterdayView; + +@end + +@implementation XPSailingRankView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backImageView]; + [self addSubview:self.titleView]; + [self addSubview:self.contentView]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(KScreenWidth, 515)); + }]; + + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self); + make.top.mas_equalTo(self).offset(98); + make.height.mas_equalTo(30); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self); + make.top.mas_equalTo(self.titleView.mas_bottom); + }]; +} + +#pragma mark - JXCategoryViewDelegate +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { + return self.titles.count; +} + +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { + if (index == 0) { + return self.todayView; + } else { + return self.yesterdayView; + } +} + +#pragma mark - Getters And Setters +- (JXCategoryTitleView *)titleView { + if (!_titleView) { + _titleView = [[JXCategoryTitleView alloc] init]; + _titleView.delegate = self; + _titleView.titles = self.titles; + _titleView.backgroundColor = [UIColor clearColor]; + _titleView.titleColor = [DJDKMIMOMColor colorWithHexString:@"#825A3A"]; + _titleView.titleSelectedColor = [DJDKMIMOMColor colorWithHexString:@"#F4D398"]; + _titleView.titleFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:12]; + _titleView.titleSelectedFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:12]; + _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; + _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; + _titleView.defaultSelectedIndex = 0; + _titleView.cellWidth = KScreenWidth/ 2; + _titleView.cellSpacing = 0; + _titleView.listContainer = self.contentView; + + JXCategoryIndicatorLineView * indocator = [[JXCategoryIndicatorLineView alloc] init]; + indocator.indicatorColor = [DJDKMIMOMColor colorWithHexString:@"#F4D398"]; + indocator.indicatorWidth = 12; + indocator.indicatorHeight = 4; + indocator.indicatorCornerRadius = 2; + indocator.lineScrollOffsetX = 4; + _titleView.indicators = @[indocator]; + } + return _titleView; +} + +- (JXCategoryListContainerView *)contentView { + if (!_contentView) { + _contentView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; + _contentView.defaultSelectedIndex = 0; + } + return _contentView; +} + +- (NSArray *)titles { + return @[@"今日榜单", YMLocalizedString(@"XPSailingRankView1")]; +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.image = [UIImage imageNamed:@"room_sailing_rank_bg"]; + } + return _backImageView; +} + +- (XPSailingRankSubView *)todayView { + if (!_todayView) { + _todayView = [[XPSailingRankSubView alloc] init]; + _todayView.type = SailingRankType_Today; + } + return _todayView; +} + +- (XPSailingRankSubView *)yesterdayView { + if (!_yesterdayView) { + _yesterdayView = [[XPSailingRankSubView alloc] init]; + _yesterdayView.type = SailingRankType_YesterDay; + } + return _yesterdayView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingViewController.h b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingViewController.h new file mode 100644 index 00000000..bde23f2a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingViewController.h @@ -0,0 +1,15 @@ +// +// YMSailingViewController.h +// YUMI +// +// Created by YUMI on 2022/8/12. +// + +#import "MvpViewController.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPSailingViewController : MvpViewController +- (instancetype)initWithRoomUid:(NSString *)roomUid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingViewController.m b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingViewController.m new file mode 100644 index 00000000..f5d1984e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Sailing/View/XPSailingViewController.m @@ -0,0 +1,729 @@ +// +// YMSailingViewController.m +// YUMI +// +// Created by YUMI on 2022/8/12. +// + +#import "XPSailingViewController.h" +///Third +#import +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "TTPopup.h" +#import "YUMIHtmlUrl.h" +#import "UIButton+EnlargeTouchArea.h" +#import "NSArray+Safe.h" +///Model +#import "RoomSailingInfoModel.h" +#import "RoomSailingPrizeListModel.h" +#import "AttachmentModel.h" +#import "AccountInfoStorage.h" +///View +#import "XPSailingRankView.h" +#import "XPRoomHalfWebView.h" +#import "XPSailingPrizeView.h" +#import "XPSailingGiftView.h" +#import "XPSailingBuyFuelView.h" +///P +#import "XPSailingPresenter.h" +#import "XPSailingProtocol.h" + +NSString * const kSailingPrizeAlertKey = @"kSailingPrizeAlertKey"; + +#define KitemHeight (20 + 5) +@interface XPSailingViewController () +///顶部的View +@property (nonatomic,strong) UIView * topView; +///背景图 +@property (nonatomic,strong) UIImageView *backImageView; +/// +@property (nonatomic,strong) UIImageView *sailingImageView; +///动画管理类 +@property (strong, nonatomic) SVGAParser *parser; +///航海特效 +@property (nonatomic,strong) SVGAImageView *sailingView; +///动画管理类 +@property (strong, nonatomic) SVGAParser *parser1; +///航海开出元宝特效特效 +@property (nonatomic,strong) SVGAImageView *sailingCowryView; +///排行榜 +@property (nonatomic,strong) UIButton *rankButton; +///h获取燃油 +@property (nonatomic,strong) UIButton *getFuleButton; +///记录 +@property (nonatomic,strong) UIButton *recordButton; +///内容 +@property (nonatomic,strong) UIImageView *contentImageView; +///说明 +@property (nonatomic,strong) UIButton *descriptionButton; +///燃油 +@property (nonatomic,strong) UIButton *fuleButton; +///个数的容器 +@property (nonatomic,strong) UIStackView * numberView; +///加 +@property (nonatomic,strong) UIButton *addButton; +///减 +@property (nonatomic,strong) UIButton *reduButton; +///输入个数 +@property (nonatomic,strong) UITextField *textField; +///探索 +@property (nonatomic,strong) UIButton *exploreButton; +///消耗燃油 +@property (nonatomic,strong) UILabel *consumLabel; +///提示 +@property (nonatomic,strong) UIStackView *tipsStackView; +@property (nonatomic,strong) UIButton *boxButton; +@property (nonatomic,strong) UILabel *tipLabel; + +@property (nonatomic,strong) UIView * animationView; +@property (nonatomic,assign) NSInteger exploreCount; +///航海的信息 +@property (nonatomic,strong) RoomSailingInfoModel *sailingInfo; +///房主的uid +@property (nonatomic,strong) NSString *roomUid; +///等级 +@property (nonatomic,strong) NSArray *levelArray; +///奖励信息 +@property (nonatomic,strong) RoomSailingPrizeListModel *prizeInfo; +@end + +@implementation XPSailingViewController + +- (void)dealloc { + [[NIMSDK sharedSDK].systemNotificationManager removeDelegate:self]; +} + +- (instancetype)initWithRoomUid:(NSString *)roomUid { + if (self = [super init]) { + self.roomUid = roomUid; + self.modalPresentationStyle = UIModalPresentationOverFullScreen; + [[NIMSDK sharedSDK].systemNotificationManager addDelegate:self]; + } + return self; +} + +- (__kindof id)createPresenter { + return [[XPSailingPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self.presenter getSailingInfo]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.levelArray = @[@"1", @"10", @"50", @"100"]; + self.exploreCount = 0; + self.view.backgroundColor = [UIColor clearColor]; + [self.view addSubview:self.topView]; + [self.view addSubview:self.backImageView]; + + [self.backImageView addSubview:self.sailingView]; + [self.backImageView addSubview:self.sailingCowryView]; + [self.backImageView addSubview:self.sailingImageView]; + [self.backImageView addSubview:self.rankButton]; + [self.backImageView addSubview:self.getFuleButton]; + [self.backImageView addSubview:self.recordButton]; + [self.backImageView addSubview:self.contentImageView]; + + [self.contentImageView addSubview:self.descriptionButton]; + [self.contentImageView addSubview:self.animationView]; + [self.contentImageView addSubview:self.fuleButton]; + [self.contentImageView addSubview:self.numberView]; + [self.contentImageView addSubview:self.exploreButton]; + [self.contentImageView addSubview:self.tipsStackView]; + + [self.exploreButton addSubview:self.consumLabel]; + + [self.tipsStackView addArrangedSubview:self.boxButton]; + [self.tipsStackView addArrangedSubview:self.tipLabel]; + + [self.numberView addArrangedSubview:self.reduButton]; + [self.numberView addArrangedSubview:self.textField]; + [self.numberView addArrangedSubview:self.addButton]; +} + +- (void)initSubViewConstraints { + [self.topView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.backImageView.mas_top); + }]; + + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.height.mas_equalTo(515); + }]; + + [self.sailingView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.backImageView); + }]; + + [self.sailingCowryView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.backImageView); + }]; + + [self.sailingImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.backImageView); + }]; + + [self.rankButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(41, 32)); + make.top.mas_equalTo(self.backImageView).offset(129); + make.right.mas_equalTo(self.backImageView).offset(-12); + }]; + + [self.getFuleButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.right.mas_equalTo(self.rankButton); + make.top.mas_equalTo(self.rankButton.mas_bottom).offset(8); + }]; + + [self.recordButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.right.mas_equalTo(self.rankButton); + make.top.mas_equalTo(self.getFuleButton.mas_bottom).offset(8); + }]; + CGFloat kscale = 199.0f / 356.0f; + [self.contentImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backImageView).inset(9); + make.bottom.mas_equalTo(self.backImageView).offset(-34); + make.height.mas_equalTo((KScreenWidth - 18) * kscale); + }]; + + [self.descriptionButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(65, 22)); + make.right.mas_equalTo(self.contentImageView); + make.top.mas_equalTo(self.contentImageView).offset(42); + }]; + + [self.fuleButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.right.mas_equalTo(self.descriptionButton); + make.top.mas_equalTo(self.descriptionButton.mas_bottom).offset(4); + }]; + + [self.numberView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.contentImageView); + make.top.mas_equalTo(self.contentImageView).offset(77 * kScreenScale); + make.height.mas_equalTo(30 * kScreenScale); + }]; + + [self.reduButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(30 * kScreenScale);; + }]; + + [self.addButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(30 * kScreenScale); + }]; + + [self.textField mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(75 * kScreenScale); + }]; + + [self.exploreButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(150 * kScreenScale, 47 * kScreenScale)); + make.centerX.mas_equalTo(self.contentImageView); + make.top.mas_equalTo(self.numberView.mas_bottom).offset(12 * kScreenScale); + }]; + + [self.consumLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.exploreButton); + make.bottom.mas_equalTo(self.exploreButton.mas_bottom).offset(-7 * kScreenScale); + }]; + + [self.animationView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.contentImageView).offset(10); + make.bottom.mas_equalTo(self.contentImageView).offset(-50); + make.width.mas_equalTo(150); + make.height.mas_equalTo(KitemHeight * 5); + }]; + + [self.tipsStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.contentImageView); + make.bottom.mas_equalTo(self.contentImageView).offset(-20); + make.height.mas_equalTo(10); + }]; + + [self.boxButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(10); + }]; +} + +- (void)startSailingSVGA { + [self.sailingCowryView stopAnimation]; + [self.sailingView stopAnimation]; + @kWeakify(self); + NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/sailing_prize.svga", API_Image_URL]; + [self.parser parseWithURL:[NSURL URLWithString:anatomiser1Name] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { + @kStrongify(self); + self.sailingView.layer.masksToBounds = YES; + self.sailingView.contentMode = UIViewContentModeScaleAspectFill; + self.sailingView.loops = 1; + self.sailingView.clearsAfterStop = YES; + self.sailingView.videoItem = videoItem; + [self.sailingView startAnimation]; + } failureBlock:^(NSError * _Nonnull error) { + + }]; +} + +- (void)startSailingPrizeCowrySVGA { + @kWeakify(self); + NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/sailing_prize_cowry.svga", API_Image_URL]; + [self.parser1 parseWithURL:[NSURL URLWithString:anatomiser1Name] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { + @kStrongify(self); + self.sailingCowryView.layer.masksToBounds = YES; + self.sailingCowryView.contentMode = UIViewContentModeScaleAspectFill; + self.sailingCowryView.loops = 1; + self.sailingCowryView.clearsAfterStop = YES; + self.sailingCowryView.videoItem = videoItem; + [self.sailingCowryView startAnimation]; + } failureBlock:^(NSError * _Nonnull error) { + + }]; +} + +#pragma mark - XPSailingProtocol +- (void)getSailingInfoSuccess:(RoomSailingInfoModel *)info { + self.sailingInfo = info; + NSString * fuleStr = [NSString stringWithFormat:@"%ld", info.keyNum]; + [self.fuleButton setTitle:fuleStr forState:UIControlStateNormal]; +} + +- (void)openSailingSuccess:(RoomSailingPrizeListModel *)model { + self.prizeInfo = model; + self.sailingInfo.keyNum = model.remainKeyNum; + NSString * fuleStr = [NSString stringWithFormat:@"%ld", self.sailingInfo.keyNum]; + [self.fuleButton setTitle:fuleStr forState:UIControlStateNormal]; + self.exploreButton.userInteractionEnabled = YES; + NSString * key = [NSString stringWithFormat:@"%@_%@", kSailingPrizeAlertKey, [AccountInfoStorage instance].getUid]; + if (![[NSUserDefaults standardUserDefaults] boolForKey:key] && model.prizeItemList.count > 0) { + CGFloat height = 180; + if (model.prizeItemList.count> 5) { + height = 255; + } + XPSailingPrizeView * prizeView = [[XPSailingPrizeView alloc] initWithFrame:CGRectMake(0, 0, 283, height)]; + prizeView.prizeInfo = model; + [TTPopup popupView:prizeView style:TTPopupStyleAlert]; + } + + if (model.specialStatus) { + [self startSailingPrizeCowrySVGA]; + } + + + [model.prizeItemList enumerateObjectsUsingBlock:^(RoomSailingPrizeModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.prizeLevel > 2) { + ///取消所有的延迟加载的方法 + [NSObject cancelPreviousPerformRequestsWithTarget:self]; + + XPSailingGiftView * newAnimaView = [[XPSailingGiftView alloc] init]; + newAnimaView.prizeInfo = obj; + NSString * giftTitle = [NSString stringWithFormat:@"%@ x %d", obj.prizeName, obj.prizeNum]; + CGFloat widht = [giftTitle boundingRectWithSize:CGSizeMake(200, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:10]} context:nil].size.width + 10; + newAnimaView.frame = CGRectMake(0, 4 * (KitemHeight), widht, KitemHeight); + [self.animationView addSubview:newAnimaView]; + + if (self.animationView.subviews.count > 5) { + [self.animationView.subviews.firstObject removeFromSuperview]; + } + for (int i=0; i < self.animationView.subviews.count; i++) { + XPSailingGiftView * view = [self.animationView.subviews safeObjectAtIndex1:i]; + NSInteger offsetY= (self.animationView.subviews.count - i) * KitemHeight; + [UIView animateWithDuration:0.1 animations:^{ + CGRect rect = view.frame; + rect.origin.y = KitemHeight * 5 - offsetY; + view.frame = rect; + } completion:^(BOOL finished) { + if (i == (self.animationView.subviews.count -1)) { + [self.animationView.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + [self performSelector:@selector(giftViewRemoveFromSuperView:) withObject:obj afterDelay:15]; + }]; + } + }]; + } + } + }]; +} + +- (void)giftViewRemoveFromSuperView:(UIView *)view { + [view removeFromSuperview]; +} + +- (void)openSailingFail:(NSString *)message { + [self.sailingView stopAnimation]; + self.sailingImageView.hidden = NO; + self.exploreButton.userInteractionEnabled = YES; +} + +#pragma mark - SVGAPlayerDelegate +- (void)svgaPlayerDidFinishedAnimation:(SVGAPlayer *)player { + if (self.prizeInfo.specialStatus) { + if (player == self.sailingView) { + self.sailingImageView.hidden = NO; + } + } else { + self.sailingImageView.hidden = NO; + } +} + +#pragma mark - Event Response +- (void)dismissView { + [self dismissViewControllerAnimated:YES completion:nil]; +} + +- (void)rankButtonAction:(UIButton *)sender { + XPSailingRankView * rankView = [[XPSailingRankView alloc] init]; + [TTPopup popupView:rankView style:TTPopupStyleActionSheet]; +} + +- (void)getFuleButtonAction:(UIButton *)sender { + XPRoomHalfWebView * webView = [[XPRoomHalfWebView alloc] init]; + webView.url = URLWithType(kSailingActivityURL); + webView.isSailing = YES; + TTPopupService * config = [[TTPopupService alloc] init]; + config.contentView = webView; + config.didFinishDismissHandler = ^(BOOL isDismissOnBackgroundTouch) { + [self.presenter getSailingInfo]; + }; + [TTPopup popupWithConfig:config]; +} + +- (void)recordButtonAction:(UIButton *)sender { + XPRoomHalfWebView * webView = [[XPRoomHalfWebView alloc] init]; + webView.url = URLWithType(kSailingRecordURL); + webView.isSailing = YES; + [TTPopup popupView:webView style:TTPopupStyleActionSheet]; +} + +- (void)descriptionButtonAction:(UIButton *)sender { + XPRoomHalfWebView * webView = [[XPRoomHalfWebView alloc] init]; + webView.isSailing = YES; + webView.url = URLWithType(kSailingPlayDescdURL); + [TTPopup popupView:webView style:TTPopupStyleActionSheet]; +} + +- (void)addButtonAction:(UIButton *)sender { + self.exploreCount ++; + if (self.exploreCount >= self.levelArray.count) { + self.exploreCount = 3; + } +} + +- (void)reduButtonAction:(UIButton *)sender { + self.exploreCount --; + if (self.exploreCount <= 0) { + self.exploreCount = 0; + } +} + +- (void)exploreButtonAction:(UIButton *)sender { + self.prizeInfo = nil; + if (self.textField.text.integerValue > self.sailingInfo.keyNum) { + XPSailingBuyFuelView * buyView = [[XPSailingBuyFuelView alloc] init]; + buyView.delegate = self; + [TTPopup popupView:buyView style:TTPopupStyleAlert]; + } else { + self.sailingImageView.hidden = YES; + [self startSailingSVGA]; + NSString * roomUid = self.roomUid; + [self.presenter openSailing:roomUid sendMessage:YES keyNum:self.textField.text.integerValue]; + self.exploreButton.userInteractionEnabled = NO; + } +} + +- (void)boxButtonAction:(UIButton *)sender { + sender.selected = !sender.selected; + if (sender.selected) { + NSString * key = [NSString stringWithFormat:@"%@_%@", kSailingPrizeAlertKey, [AccountInfoStorage instance].getUid]; + [[NSUserDefaults standardUserDefaults] setBool:YES forKey:key]; + } else { + NSString * key = [NSString stringWithFormat:@"%@_%@", kSailingPrizeAlertKey, [AccountInfoStorage instance].getUid]; + [[NSUserDefaults standardUserDefaults] setBool:NO forKey:key]; + } +} +#pragma mark - NIMSystemNotificationManagerDelegate +- (void)onReceiveCustomSystemNotification:(NIMCustomSystemNotification *)notification { + if (notification.receiverType == NIMSessionTypeP2P) { + AttachmentModel *attachment = [AttachmentModel modelWithJSON:notification.content]; + if (attachment.first == CustomMessageType_Account && attachment.second == Custom_Message_Sub_Account_Changed){ + if (attachment.second == Custom_Message_Sub_Account_Changed) { + [self.presenter getSailingInfo]; + } + } + } +} + +- (void)xPSailingBuyFuelView:(XPSailingBuyFuelView *)view didClickBuy:(UIButton *)sender { + [TTPopup dismiss]; + [self getFuleButtonAction:self.getFuleButton]; +} + +- (void)xPSailingBuyFuelView:(XPSailingBuyFuelView *)view didClickCancel:(UIButton *)sender { + [TTPopup dismiss]; +} + +#pragma mark - Getters And Setters +- (void)setExploreCount:(NSInteger)exploreCount { + _exploreCount = exploreCount; + if (_exploreCount == 0) { + self.reduButton.enabled = NO; + } else { + self.reduButton.enabled = YES; + } + + if (_exploreCount == 3) { + self.addButton.enabled = NO; + } else { + self.addButton.enabled = YES; + } + NSString * count = [self.levelArray safeObjectAtIndex1:_exploreCount]; + self.textField.text = count; + self.consumLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPSailingViewController0"), count]; +} + +- (UIView *)topView { + if (!_topView) { + _topView = [[UIView alloc] init]; + _topView.backgroundColor = [UIColor clearColor]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissView)]; + [_topView addGestureRecognizer:tap]; + return _topView; + } + return _topView; +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.image = [UIImage imageNamed:@"room_sailing_bg"]; + _backImageView.contentMode = UIViewContentModeScaleAspectFill; + _backImageView.layer.masksToBounds = YES; + } + return _backImageView; +} + +- (UIButton *)rankButton { + if (!_rankButton) { + _rankButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_rankButton setImage:[UIImage imageNamed:@"room_sailing_rank"] forState:UIControlStateNormal]; + [_rankButton setImage:[UIImage imageNamed:@"room_sailing_rank"] forState:UIControlStateSelected]; + [_rankButton addTarget:self action:@selector(rankButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _rankButton; +} + +- (UIButton *)getFuleButton { + if (!_getFuleButton) { + _getFuleButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_getFuleButton setImage:[UIImage imageNamed:@"room_sailing_getfule"] forState:UIControlStateNormal]; + [_getFuleButton setImage:[UIImage imageNamed:@"room_sailing_getfule"] forState:UIControlStateSelected]; + [_getFuleButton addTarget:self action:@selector(getFuleButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _getFuleButton; +} + +- (UIButton *)recordButton { + if (!_recordButton) { + _recordButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_recordButton setImage:[UIImage imageNamed:@"room_sailing_record"] forState:UIControlStateNormal]; + [_recordButton setImage:[UIImage imageNamed:@"room_sailing_record"] forState:UIControlStateSelected]; + [_recordButton addTarget:self action:@selector(recordButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _recordButton; +} + +- (UIImageView *)contentImageView { + if (!_contentImageView) { + _contentImageView = [[UIImageView alloc] init]; + _contentImageView.userInteractionEnabled = YES; + _contentImageView.image = [UIImage imageNamed:@"room_sailing_explore_bg"]; + } + return _contentImageView; +} + +- (UIButton *)descriptionButton { + if (!_descriptionButton) { + _descriptionButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_descriptionButton setImage:[UIImage imageNamed:@"room_sailing_description"] forState:UIControlStateNormal]; + [_descriptionButton setImage:[UIImage imageNamed:@"room_sailing_description"] forState:UIControlStateSelected]; + [_descriptionButton addTarget:self action:@selector(descriptionButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _descriptionButton; +} + +- (UIButton *)fuleButton { + if (!_fuleButton) { + _fuleButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_fuleButton setTitle:@"0" forState:UIControlStateNormal]; + [_fuleButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _fuleButton.titleLabel.font = [UIFont systemFontOfSize:10]; + _fuleButton.titleEdgeInsets = UIEdgeInsetsMake(0, 15, 0, 0); + [_fuleButton setTitleColor:[DJDKMIMOMColor colorWithHexString:@"#643B29"] forState:UIControlStateNormal]; + [_fuleButton setBackgroundImage:[UIImage imageNamed:@"room_sailing_rule_bg"] forState:UIControlStateNormal]; + } + return _fuleButton; +} + +- (UIStackView *)numberView { + if (!_numberView) { + _numberView = [[UIStackView alloc] init]; + _numberView.axis = UILayoutConstraintAxisHorizontal; + _numberView.distribution = UIStackViewDistributionFill; + _numberView.alignment = UIStackViewAlignmentFill; + _numberView.spacing = 6; + } + return _numberView; +} + +- (UITextField *)textField { + if (!_textField) { + _textField = [[UITextField alloc] init]; + _textField.textColor = [DJDKMIMOMColor colorWithHexString:@"#64472E"]; + _textField.backgroundColor = [DJDKMIMOMColor colorWithHexString:@"#DACBB4"]; + _textField.font = [UIFont systemFontOfSize:15]; + _textField.layer.masksToBounds = YES; + _textField.layer.cornerRadius = 11; + _textField.text = @"1"; + _textField.enabled = NO; + _textField.textAlignment = NSTextAlignmentCenter; + } + return _textField; +} + + +- (UIButton *)addButton { + if (!_addButton) { + _addButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_addButton setImage:[UIImage imageNamed:@"room_sailing_add"] forState:UIControlStateNormal]; + [_addButton setImage:[UIImage imageNamed:@"room_sailing_add"] forState:UIControlStateSelected]; + [_addButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + [_addButton addTarget:self action:@selector(addButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _addButton; +} + +- (UIButton *)reduButton { + if (!_reduButton) { + _reduButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_reduButton setImage:[UIImage imageNamed:@"room_sailing_redu"] forState:UIControlStateNormal]; + [_reduButton setImage:[UIImage imageNamed:@"room_sailing_redu"] forState:UIControlStateSelected]; + [_reduButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + [_reduButton addTarget:self action:@selector(reduButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _reduButton; +} + +- (UIButton *)exploreButton { + if (!_exploreButton) { + _exploreButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_exploreButton setImage:[UIImage imageNamed:@"room_sailing_explore"] forState:UIControlStateNormal]; + [_exploreButton setImage:[UIImage imageNamed:@"room_sailing_explore"] forState:UIControlStateSelected]; + [_exploreButton addTarget:self action:@selector(exploreButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _exploreButton; +} + +- (UILabel *)consumLabel { + if (!_consumLabel) { + _consumLabel = [[UILabel alloc] init]; + _consumLabel.font = [UIFont systemFontOfSize:10]; + _consumLabel.textColor = [DJDKMIMOMColor colorWithHexString:@"#A08161"]; + _consumLabel.textAlignment = NSTextAlignmentCenter; + _consumLabel.text = YMLocalizedString(@"XPSailingViewController1"); + } + return _consumLabel; +} + +- (UIView *)animationView { + if (!_animationView) { + _animationView = [[UIView alloc] init]; + _animationView.backgroundColor = [UIColor clearColor]; + } + return _animationView; +} + +- (SVGAImageView *)sailingView { + if (!_sailingView) { + _sailingView = [[SVGAImageView alloc]init]; + _sailingView.backgroundColor = [UIColor clearColor]; + _sailingView.userInteractionEnabled = NO; + _sailingView.delegate = self; + } + return _sailingView; +} + +- (SVGAImageView *)sailingCowryView { + if (!_sailingCowryView) { + _sailingCowryView = [[SVGAImageView alloc]init]; + _sailingCowryView.backgroundColor = [UIColor clearColor]; + _sailingCowryView.userInteractionEnabled = NO; + _sailingCowryView.delegate = self; + } + return _sailingCowryView; +} + +- (SVGAParser *)parser { + if (!_parser) { + _parser = [[SVGAParser alloc]init]; + } + return _parser; +} + +- (SVGAParser *)parser1 { + if (!_parser1) { + _parser1 = [[SVGAParser alloc]init]; + } + return _parser1; +} + +- (UIImageView *)sailingImageView { + if (!_sailingImageView) { + _sailingImageView = [[UIImageView alloc] init]; + _sailingImageView.userInteractionEnabled = YES; + _sailingImageView.image = [UIImage imageNamed:@"room_sailing_sailing"]; + } + return _sailingImageView; +} + +- (UIStackView *)tipsStackView { + if (!_tipsStackView) { + _tipsStackView = [[UIStackView alloc] init]; + _tipsStackView.axis = UILayoutConstraintAxisHorizontal; + _tipsStackView.distribution = UIStackViewDistributionFill; + _tipsStackView.alignment = UIStackViewAlignmentFill; + _tipsStackView.spacing = 5; + } + return _tipsStackView; +} + +- (UIButton *)boxButton { + if (!_boxButton) { + _boxButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_boxButton setImage:[UIImage imageNamed:@"room_sailing_tips_normal"] forState:UIControlStateNormal]; + [_boxButton setImage:[UIImage imageNamed:@"room_sailing_tips_select"] forState:UIControlStateSelected]; + [_boxButton addTarget:self action:@selector(boxButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_boxButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + NSString * key = [NSString stringWithFormat:@"%@_%@", kSailingPrizeAlertKey, [AccountInfoStorage instance].getUid]; + _boxButton.selected = [[NSUserDefaults standardUserDefaults] boolForKey:key]; + } + return _boxButton; +} + +- (UILabel *)tipLabel { + if (!_tipLabel) { + _tipLabel = [[UILabel alloc] init]; + _tipLabel.font = [UIFont systemFontOfSize:10]; + _tipLabel.textColor = UIColorFromRGB(0xA16A2F); + _tipLabel.text = YMLocalizedString(@"XPSailingViewController2"); + } + return _tipLabel; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingBrightnessRegard.h b/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingBrightnessRegard.h deleted file mode 100644 index e1e3abdf..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingBrightnessRegard.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// YMSailingAnimationView.h -// YUMI -// -// Created by YUMI on 2022/8/19. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@interface YUMIMarchingBrightnessRegard : UIView -@property (nonatomic,strong) NSDictionary *captureAbstract; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingBrightnessRegard.m b/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingBrightnessRegard.m deleted file mode 100644 index f88db887..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingBrightnessRegard.m +++ /dev/null @@ -1,99 +0,0 @@ -// -// YMSailingAnimationView.m -// YUMI -// -// Created by YUMI on 2022/8/19. -// - -#import "YUMIMarchingBrightnessRegard.h" -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "ChamberMarchingCaptureMatrix.h" -#import "NSObject+MJExtension.h" -#import - - -@interface YUMIMarchingBrightnessRegard () -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) MarqueeLabel *titleLabel; -@end - -@implementation YUMIMarchingBrightnessRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.encourageIndicateRegard]; - [self.encourageIndicateRegard addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageIndicateRegard).offset(89 * kScreenScale); - make.top.mas_equalTo(self.encourageIndicateRegard).offset(29 * kScreenScale); - make.right.mas_lessThanOrEqualTo(self.encourageIndicateRegard); - }]; -} - -- (NSAttributedString *)produceIdiosyncracy:(NSString * )text color:(UIColor *)color fontSize:(CGFloat)fonSize { - NSDictionary * attribute = @{NSFontAttributeName:[UIFont systemFontOfSize:fonSize], NSForegroundColorAttributeName:color}; - NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:text attributes:attribute]; - return attr; -} - - - -#pragma mark - Getters And Setters -- (void)setCaptureAbstract:(NSDictionary *)captureAbstract { - _captureAbstract = captureAbstract; - if (_captureAbstract) { - ChamberMarchingCaptureMatrix * info = [ChamberMarchingCaptureMatrix mtowardsrixAboutImpactbasket:_captureAbstract]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - CGFloat fontSize = 12; - [attribute appendAttributedString:[self produceIdiosyncracy:@"厉害了! " color:[UIColor whiteColor] fontSize:fontSize]]; - NSString * nick = info.nick; - if (nick.length > 6) { - nick = [nick substringToIndex:6]; - } - [attribute appendAttributedString:[self produceIdiosyncracy:nick color:UIColorFromRGB(0xFFFE95) fontSize:fontSize]]; - [attribute appendAttributedString:[self produceIdiosyncracy:@"在航海冒险中获得 " color:[UIColor whiteColor] fontSize:fontSize]]; - [attribute appendAttributedString:[self produceIdiosyncracy:info.prizeName color:UIColorFromRGB(0xFFFE95) fontSize:fontSize]]; - if (info.prizeNum > 1) { - [attribute appendAttributedString:[self produceIdiosyncracy:[NSString stringWithFormat:@" X%d", info.prizeNum] color:[UIColor whiteColor] fontSize:fontSize]]; - } - self.titleLabel.attributedText = attribute; - } -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_sailing_animation_present_background"]; - } - return _encourageIndicateRegard; -} - -- (MarqueeLabel *)titleLabel{ - if (!_titleLabel) { - _titleLabel = [[MarqueeLabel alloc] init]; - _titleLabel.scrollDuration = 4.0; - _titleLabel.fadeLength = 15; - _titleLabel.userInteractionEnabled = YES; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingBuyFuelRegard.h b/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingBuyFuelRegard.h deleted file mode 100644 index 0ac22072..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingBuyFuelRegard.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMSailingBuyFuelView.h -// YUMI -// -// Created by YUMI on 2022/8/23. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIMarchingBuyFuelRegard; -@protocol FBCSailingBuyFuelRegardRepresendtation -- (void)yUMIMarchingAcquireFuelRegard:(YUMIMarchingBuyFuelRegard *)view didTicktackRevoctowardsion:(UIButton *)sender; -- (void)yUMIMarchingAcquireFuelRegard:(YUMIMarchingBuyFuelRegard *)view didClickBuy:(UIButton *)sender; - -@end -@interface YUMIMarchingBuyFuelRegard : UIView -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingBuyFuelRegard.m b/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingBuyFuelRegard.m deleted file mode 100644 index 9c6bc49b..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingBuyFuelRegard.m +++ /dev/null @@ -1,120 +0,0 @@ -// -// YMSailingBuyFuelView.m -// YUMI -// -// Created by YUMI on 2022/8/23. -// - -#import "YUMIMarchingBuyFuelRegard.h" -#import -#import "DJDKMIMOMColor.h" - -@interface YUMIMarchingBuyFuelRegard () -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UIButton *revocationBtuton; -@property (nonatomic,strong) UIButton *buyBtuton; - -@end - - -@implementation YUMIMarchingBuyFuelRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.encourageIndicateRegard]; - [self.encourageIndicateRegard addSubview:self.titleLabel]; - [self.encourageIndicateRegard addSubview:self.revocationBtuton]; - [self.encourageIndicateRegard addSubview:self.buyBtuton]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(280, 177)); - }]; - - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.encourageIndicateRegard).offset(54); - make.centerX.mas_equalTo(self.encourageIndicateRegard); - }]; - - [self.revocationBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(85, 24)); - make.right.mas_equalTo(self.encourageIndicateRegard.mas_centerX).offset(-10); - make.bottom.mas_equalTo(self.encourageIndicateRegard).offset(-24); - }]; - - [self.buyBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.revocationBtuton); - make.left.mas_equalTo(self.encourageIndicateRegard.mas_centerX).offset(10); - }]; -} - -#pragma mark - Event Response -- (void)revoctowardsionBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIMarchingAcquireFuelRegard:didTicktackRevoctowardsion:)]) { - [self.delegate yUMIMarchingAcquireFuelRegard:self didTicktackRevoctowardsion:sender]; - } -} - -- (void)acquireBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIMarchingAcquireFuelRegard:didClickBuy:)]) { - [self.delegate yUMIMarchingAcquireFuelRegard:self didClickBuy:sender]; - } -} - -#pragma mark - Getters And Setters -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_sailing_buy_fuel_background"]; - } - return _encourageIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:15]; - _titleLabel.textColor = UIColorFromRGB(0x64472E); - _titleLabel.text = @"当前燃油不足 \n 可参与活动获得燃油哦~"; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.numberOfLines = 2; - } - return _titleLabel; -} - -- (UIButton *)revocationBtuton { - if (!_revocationBtuton) { - _revocationBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_revocationBtuton setImage:[UIImage imageNamed:@"yumi_scope_sailing_buy_fuel_cancel"] forState:UIControlStateNormal]; - [_revocationBtuton setImage:[UIImage imageNamed:@"yumi_scope_sailing_buy_fuel_cancel"] forState:UIControlStateSelected]; - [_revocationBtuton addTarget:self action:@selector(revoctowardsionBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _revocationBtuton; -} - -- (UIButton *)buyBtuton { - if (!_buyBtuton) { - _buyBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_buyBtuton setImage:[UIImage imageNamed:@"yumi_scope_sailing_buy_fuel_sure"] forState:UIControlStateNormal]; - [_buyBtuton setImage:[UIImage imageNamed:@"yumi_scope_sailing_buy_fuel_sure"] forState:UIControlStateSelected]; - [_buyBtuton addTarget:self action:@selector(acquireBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _buyBtuton; -} -@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingCaptureRegard.h b/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingCaptureRegard.h deleted file mode 100644 index 4d9520e7..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingCaptureRegard.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMSailingPrizeView.h -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ChamberMarchingCaptureStatementMatrix; -@interface YUMIMarchingCaptureRegard : UIView -@property (nonatomic,strong) ChamberMarchingCaptureStatementMatrix * captureAbstract; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingCaptureRegard.m b/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingCaptureRegard.m deleted file mode 100644 index e7d329d7..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingCaptureRegard.m +++ /dev/null @@ -1,105 +0,0 @@ -// -// YMSailingPrizeView.m -// YUMI -// -// Created by YUMI on 2022/8/18. -// - -#import "YUMIMarchingCaptureRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "NSArray+Safe.h" -#import "ChamberMarchingCaptureStatementMatrix.h" -#import "YUMIMarchingCaptureAssembletionRegardElement.h" - -@interface YUMIMarchingCaptureRegard () - -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) UICollectionView *collectionView; -@end - - -@implementation YUMIMarchingCaptureRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.encourageIndicateRegard]; - [self.encourageIndicateRegard addSubview:self.collectionView]; -} - -- (void)initChildLyRestrictions { - - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.encourageIndicateRegard).offset(75); - make.left.right.mas_equalTo(self.encourageIndicateRegard); - make.bottom.mas_equalTo(self).offset(-10); - }]; -} - -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.captureAbstract.prizeItemList.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMIMarchingCaptureAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIMarchingCaptureAssembletionRegardElement class]) forIndexPath:indexPath]; - cell.captureMatrix = [self.captureAbstract.prizeItemList secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; -} -#pragma mark - Getters And Setters -- (void)setCaptureAbstract:(ChamberMarchingCaptureStatementMatrix *)captureAbstract{ - _captureAbstract = captureAbstract; - [self.collectionView reloadData]; - if (_captureAbstract.specialStatus) { - if (_captureAbstract.prizeItemList.count > 5) { - self.encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_sailing_prize_cowry_large"]; - }else { - self.encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_sailing_prize_crowy"]; - } - } else { - if (captureAbstract.prizeItemList.count > 5) { - self.encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_sailing_prize_normal_large"]; - }else { - self.encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_sailing_prize_one"]; - } - } -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - } - return _encourageIndicateRegard; -} - -- (UICollectionView *)collectionView{ - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.sectionInset = UIEdgeInsetsMake(0, 21, 0, 21); - layout.itemSize = CGSizeMake(42, 47 + 21); - layout.minimumLineSpacing = 7; - layout.minimumInteritemSpacing = 7; - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.backgroundColor = [UIColor clearColor]; - [_collectionView registerClass:[YUMIMarchingCaptureAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIMarchingCaptureAssembletionRegardElement class])]; - - } - return _collectionView; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingPresentRegard.h b/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingPresentRegard.h deleted file mode 100644 index 9d38e7d5..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingPresentRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMSailingGiftView.h -// YUMI -// -// Created by YUMI on 2022/8/19. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ChamberMarchingCaptureMatrix; -@interface YUMIMarchingPresentRegard : UIView -@property (nonatomic,strong) ChamberMarchingCaptureMatrix *captureAbstract; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingPresentRegard.m b/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingPresentRegard.m deleted file mode 100644 index 18455b21..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingPresentRegard.m +++ /dev/null @@ -1,84 +0,0 @@ -// -// YMSailingGiftView.m -// YUMI -// -// Created by YUMI on 2022/8/19. -// - -#import "YUMIMarchingPresentRegard.h" -#import -#import "ChamberMarchingCaptureMatrix.h" -#import "YUMIConfectioneryTimberBrightnessMatrix.h" - -@interface YUMIMarchingPresentRegard () -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,copy) void(^FinishBlock)(BOOL finish); -@end - -@implementation YUMIMarchingPresentRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.encourageIndicateRegard]; - [self addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.height.mas_equalTo(19); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.encourageIndicateRegard.mas_left).offset(3); - make.centerY.mas_equalTo(self.encourageIndicateRegard); - }]; -} -#pragma mark - Getters And Setters -- (void)setCaptureAbstract:(ChamberMarchingCaptureMatrix *)captureAbstract { - _captureAbstract = captureAbstract; - if (_captureAbstract) { - NSString * backImage= @"candy_tree_levle_third"; - if(_captureAbstract.prizeLevel == SailingPrizeLevelFour) { - backImage = @"candy_tree_levle_fourth"; - } else if(_captureAbstract.prizeLevel == SailingPrizeLevelFive) { - backImage = @"candy_tree_levle_fifth"; - } - self.encourageIndicateRegard.image = [UIImage imageNamed:backImage]; - if (_captureAbstract.prizeName.length > 7) { - _captureAbstract.prizeName = [_captureAbstract.prizeName substringToIndex:7]; - } - NSString * giftTitle = [NSString stringWithFormat:@"%@ x %d", _captureAbstract.prizeName, _captureAbstract.prizeNum]; - self.titleLabel.text = giftTitle; - } - [self layoutIfNeeded]; -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - } - return _encourageIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:10]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.textColor = [UIColor whiteColor]; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingRateMetroRegard.h b/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingRateMetroRegard.h deleted file mode 100644 index 1fd3a1af..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingRateMetroRegard.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMSailingRankSubView.h -// YUMI -// -// Created by YUMI on 2022/8/12. -// - -#import -#import -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, SailingRankGenre) { - SailingRankGenre_Today = 1, - SailingRankGenre_YesterDay = 2 -}; - -@interface YUMIMarchingRateMetroRegard : UIView -@property (nonatomic,assign) SailingRankGenre type; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingRateMetroRegard.m b/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingRateMetroRegard.m deleted file mode 100644 index 5a0a2a1c..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingRateMetroRegard.m +++ /dev/null @@ -1,171 +0,0 @@ -// -// YMSailingRankSubView.m -// YUMI -// -// Created by YUMI on 2022/8/12. -// - -#import "YUMIMarchingRateMetroRegard.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "Api+Sailing.h" -#import "XNDJTBWGLoadingTool.h" -#import "NSArray+Safe.h" -#import "ChamberMarchingRateMatrix.h" -#import "YUMIMarchingDispossessTabulationRegardElement.h" -#import "YUMIMarchingRateTabulationRegardElement.h" - -@interface YUMIMarchingRateMetroRegard () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,assign) int page; -@property (nonatomic,assign) BOOL hasNoFurthaerAtoloudspeaker; -@end - -@implementation YUMIMarchingRateMetroRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initIntelligencerGrantedTerminalerRrfresh]; - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - -} - -#pragma mark - 刷新的fangfa -- (void)intelligenceerRenovtowardseh { - self.page = 1; - NSString * page = [NSString stringWithFormat:@"%d", self.page]; - NSString * type = [NSString stringWithFormat:@"%ld", self.type]; - [Api acquireMarchingRtowardseSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - [self.tableView.mj_header endRefreshing]; - if (code == 200) { - [self.datasource removeAllObjects]; - NSArray * array = [ChamberMarchingRateMatrix mtowardsrixsAboutGarment:data.data[@"rankVos"]]; - [self.datasource addObjectsFromArray:array]; - self.hasNoFurthaerAtoloudspeaker = NO; - [self.tableView reloadData]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } page:page pageSize:@"20" datetype:type]; - -} - -- (void)footerRenovtowardseh { - if (self.hasNoFurthaerAtoloudspeaker) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Sailing_Rank_Sub_View_0")]; - [self.tableView.mj_footer endRefreshing]; - return; - } - self.page++; - NSString * page = [NSString stringWithFormat:@"%d", self.page]; - NSString * type = [NSString stringWithFormat:@"%ld", self.type]; - [Api acquireMarchingRtowardseSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - [self.tableView.mj_footer endRefreshing]; - if (code == 200) { - NSArray * array = [ChamberMarchingRateMatrix mtowardsrixsAboutGarment:data.data[@"rankVos"]]; - if (array.count > 0) { - [self.datasource addObjectsFromArray:array]; - self.hasNoFurthaerAtoloudspeaker = NO; - } else { - self.hasNoFurthaerAtoloudspeaker= YES; - } - [self.tableView reloadData]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } page:page pageSize:@"20" datetype:type]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return self.datasource.count > 0 ? 74 : 380; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0 ) { - YUMIMarchingRateTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIMarchingRateTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIMarchingRateTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIMarchingRateTabulationRegardElement class])]; - } - cell.rateAbstract = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; - } - YUMIMarchingDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIMarchingDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIMarchingDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIMarchingDispossessTabulationRegardElement class])]; - } - return cell; -} - - -#pragma mark - JXCategoryListContentViewDelegate -- (UIView *)listView { - return self; -} - -- (void)setType:(SailingRankGenre)type { - _type = type; - [self intelligenceerRenovtowardseh]; -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIMarchingDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIMarchingDispossessTabulationRegardElement class])]; - [_tableView registerClass:[YUMIMarchingRateTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIMarchingRateTabulationRegardElement class])]; - } - return _tableView; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingRateRegard.h b/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingRateRegard.h deleted file mode 100644 index e3bd23be..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingRateRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMSailingRankView.h -// YUMI -// -// Created by YUMI on 2022/8/12. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIMarchingRateRegard : UIView - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingRateRegard.m b/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingRateRegard.m deleted file mode 100644 index 455c4998..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingRateRegard.m +++ /dev/null @@ -1,145 +0,0 @@ -// -// YMSailingRankView.m -// YUMI -// -// Created by YUMI on 2022/8/12. -// - -#import "YUMIMarchingRateRegard.h" -#import -#import -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "YUMIMarchingRateMetroRegard.h" - -@interface YUMIMarchingRateRegard () -@property (nonatomic, strong) NSArray *titles; -@property (nonatomic, strong) JXCategoryTitleView *titleView; -@property (nonatomic, strong) JXCategoryListContainerView *contentView; -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) YUMIMarchingRateMetroRegard *todayRegard; -@property (nonatomic,strong) YUMIMarchingRateMetroRegard *yesterdayRegard; - -@end - -@implementation YUMIMarchingRateRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.encourageIndicateRegard]; - [self addSubview:self.titleView]; - [self addSubview:self.contentView]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(KScreenWidth, 515)); - }]; - - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self); - make.top.mas_equalTo(self).offset(98); - make.height.mas_equalTo(30); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self); - make.top.mas_equalTo(self.titleView.mas_bottom); - }]; -} - -#pragma mark - JXCategoryViewDelegate -- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { - return self.titles.count; -} - -- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { - if (index == 0) { - return self.todayRegard; - } else { - return self.yesterdayRegard; - } -} - -#pragma mark - Getters And Setters -- (JXCategoryTitleView *)titleView { - if (!_titleView) { - _titleView = [[JXCategoryTitleView alloc] init]; - _titleView.delegate = self; - _titleView.titles = self.titles; - _titleView.backgroundColor = [UIColor clearColor]; - _titleView.titleColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#825A3A"]; - _titleView.titleSelectedColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#F4D398"]; - _titleView.titleFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:12]; - _titleView.titleSelectedFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:12]; - _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; - _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; - _titleView.defaultSelectedIndex = 0; - _titleView.cellWidth = KScreenWidth/ 2; - _titleView.cellSpacing = 0; - _titleView.listContainer = self.contentView; - - JXCategoryIndicatorLineView * indocator = [[JXCategoryIndicatorLineView alloc] init]; - indocator.indicatorColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#F4D398"]; - indocator.indicatorWidth = 12; - indocator.indicatorHeight = 4; - indocator.indicatorCornerRadius = 2; - indocator.lineScrollOffsetX = 4; - _titleView.indicators = @[indocator]; - } - return _titleView; -} - -- (JXCategoryListContainerView *)contentView { - if (!_contentView) { - _contentView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; - _contentView.defaultSelectedIndex = 0; - } - return _contentView; -} - -- (NSArray *)titles { - return @[@"今日榜单", YMLocalizedString(@"YUMI_Sailing_Rank_View_1")]; -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_sailing_order_background"]; - } - return _encourageIndicateRegard; -} - -- (YUMIMarchingRateMetroRegard *)todayRegard { - if (!_todayRegard) { - _todayRegard = [[YUMIMarchingRateMetroRegard alloc] init]; - _todayRegard.type = SailingRankGenre_Today; - } - return _todayRegard; -} - -- (YUMIMarchingRateMetroRegard *)yesterdayRegard { - if (!_yesterdayRegard) { - _yesterdayRegard = [[YUMIMarchingRateMetroRegard alloc] init]; - _yesterdayRegard.type = SailingRankGenre_YesterDay; - } - return _yesterdayRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingRegardGovernancer.h b/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingRegardGovernancer.h deleted file mode 100644 index 80acf2ab..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingRegardGovernancer.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// YMSailingViewController.h -// YUMI -// -// Created by YUMI on 2022/8/12. -// - -#import "MvpRegardGovernancer.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIMarchingRegardGovernancer : MvpRegardGovernancer -- (instancetype)initAboutChamberCid:(NSString *)roomUid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingRegardGovernancer.m b/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingRegardGovernancer.m deleted file mode 100644 index bb23abe4..00000000 --- a/YuMi/Modules/YMRoom/View/Sailing/View/YUMIMarchingRegardGovernancer.m +++ /dev/null @@ -1,700 +0,0 @@ -// -// YMSailingViewController.m -// YUMI -// -// Created by YUMI on 2022/8/12. -// - -#import "YUMIMarchingRegardGovernancer.h" -#import -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "MKJPopup.h" -#import "YUMIHtmlUrl.h" -#import "UIButton+EnlargeTouchArea.h" -#import "NSArray+Safe.h" -#import "ChamberMarchingAbstractMatrix.h" -#import "ChamberMarchingCaptureStatementMatrix.h" -#import "AttachmentMatrix.h" -#import "AccountAbstractStorage.h" -#import "YUMIMarchingRateRegard.h" -#import "YUMIChamberHalfTissueRegard.h" -#import "YUMIMarchingCaptureRegard.h" -#import "YUMIMarchingPresentRegard.h" -#import "YUMIMarchingBuyFuelRegard.h" -#import "YUMIMarchingExternalizer.h" -#import "FBCSailingCeremony.h" - -NSString * const kSailingPrizeAlertKey = @"kSailingPrizeAlertKey"; - -#define KitemHeight (20 + 5) -@interface YUMIMarchingRegardGovernancer () -@property (nonatomic,strong) UIView * apexRegard; -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) UIImageView *marchingIndicateRegard; -@property (strong, nonatomic) SVGAParser *anatomiser; -@property (nonatomic,strong) SVGAImageView *marchingRegard; -@property (strong, nonatomic) SVGAParser *anatomiser1; -@property (nonatomic,strong) SVGAImageView *marchingCowryRegard; -@property (nonatomic,strong) UIButton *rateBtuton; -@property (nonatomic,strong) UIButton *acquireFuleBtuton; -@property (nonatomic,strong) UIButton *reflectionBtuton; -@property (nonatomic,strong) UIImageView *satisfperformanceIndicateRegard; -@property (nonatomic,strong) UIButton *sequenceriptionBtuton; -@property (nonatomic,strong) UIButton *fuleBtuton; -@property (nonatomic,strong) UIStackView * digitalRegard; -@property (nonatomic,strong) UIButton *accelerateBtuton; -@property (nonatomic,strong) UIButton *deficituBtuton; -@property (nonatomic,strong) UITextField *essayUniverse; -@property (nonatomic,strong) UIButton *exploreBtuton; -@property (nonatomic,strong) UILabel *consumSequencignation; -@property (nonatomic,strong) UIStackView *promptsHierarchyRegard; -@property (nonatomic,strong) UIButton *boxBtuton; -@property (nonatomic,strong) UILabel *tipLabel; - -@property (nonatomic,strong) UIView * animationView; -@property (nonatomic,assign) NSInteger exploreComputation; -@property (nonatomic,strong) ChamberMarchingAbstractMatrix *marchingAbstract; -@property (nonatomic,strong) NSString *roomUid; -@property (nonatomic,strong) NSArray *prototypeGarment; -@property (nonatomic,strong) ChamberMarchingCaptureStatementMatrix *captureAbstract; -@end - -@implementation YUMIMarchingRegardGovernancer - -- (void)dealloc { - [[NIMSDK sharedSDK].systemNotificationManager removeDelegate:self]; -} - -- (instancetype)initAboutChamberCid:(NSString *)roomUid { - if (self = [super init]) { - self.roomUid = roomUid; - self.modalPresentationStyle = UIModalPresentationOverFullScreen; - [[NIMSDK sharedSDK].systemNotificationManager addDelegate:self]; - } - return self; -} - -- (__kindof id)producePresimport { - return [[YUMIMarchingExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self.presimport acquireMarchingAbstract]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.prototypeGarment = @[@"1", @"10", @"50", @"100"]; - self.exploreComputation = 0; - self.view.backgroundColor = [UIColor clearColor]; - [self.view addSubview:self.apexRegard]; - [self.view addSubview:self.encourageIndicateRegard]; - - [self.encourageIndicateRegard addSubview:self.marchingRegard]; - [self.encourageIndicateRegard addSubview:self.marchingCowryRegard]; - [self.encourageIndicateRegard addSubview:self.marchingIndicateRegard]; - [self.encourageIndicateRegard addSubview:self.rateBtuton]; - [self.encourageIndicateRegard addSubview:self.acquireFuleBtuton]; - [self.encourageIndicateRegard addSubview:self.reflectionBtuton]; - [self.encourageIndicateRegard addSubview:self.satisfperformanceIndicateRegard]; - - [self.satisfperformanceIndicateRegard addSubview:self.sequenceriptionBtuton]; - [self.satisfperformanceIndicateRegard addSubview:self.animationView]; - [self.satisfperformanceIndicateRegard addSubview:self.fuleBtuton]; - [self.satisfperformanceIndicateRegard addSubview:self.digitalRegard]; - [self.satisfperformanceIndicateRegard addSubview:self.exploreBtuton]; - [self.satisfperformanceIndicateRegard addSubview:self.promptsHierarchyRegard]; - - [self.exploreBtuton addSubview:self.consumSequencignation]; - - [self.promptsHierarchyRegard addArrangedSubview:self.boxBtuton]; - [self.promptsHierarchyRegard addArrangedSubview:self.tipLabel]; - - [self.digitalRegard addArrangedSubview:self.deficituBtuton]; - [self.digitalRegard addArrangedSubview:self.essayUniverse]; - [self.digitalRegard addArrangedSubview:self.accelerateBtuton]; -} - -- (void)initChildLyRestrictions { - [self.apexRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.encourageIndicateRegard.mas_top); - }]; - - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.height.mas_equalTo(515); - }]; - - [self.marchingRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.encourageIndicateRegard); - }]; - - [self.marchingCowryRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.encourageIndicateRegard); - }]; - - [self.marchingIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.encourageIndicateRegard); - }]; - - [self.rateBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(41, 32)); - make.top.mas_equalTo(self.encourageIndicateRegard).offset(129); - make.right.mas_equalTo(self.encourageIndicateRegard).offset(-12); - }]; - - [self.acquireFuleBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.right.mas_equalTo(self.rateBtuton); - make.top.mas_equalTo(self.rateBtuton.mas_bottom).offset(8); - }]; - - [self.reflectionBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.right.mas_equalTo(self.rateBtuton); - make.top.mas_equalTo(self.acquireFuleBtuton.mas_bottom).offset(8); - }]; - CGFloat kscale = 199.0f / 356.0f; - [self.satisfperformanceIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageIndicateRegard).inset(9); - make.bottom.mas_equalTo(self.encourageIndicateRegard).offset(-34); - make.height.mas_equalTo((KScreenWidth - 18) * kscale); - }]; - - [self.sequenceriptionBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(65, 22)); - make.right.mas_equalTo(self.satisfperformanceIndicateRegard); - make.top.mas_equalTo(self.satisfperformanceIndicateRegard).offset(42); - }]; - - [self.fuleBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.right.mas_equalTo(self.sequenceriptionBtuton); - make.top.mas_equalTo(self.sequenceriptionBtuton.mas_bottom).offset(4); - }]; - - [self.digitalRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.satisfperformanceIndicateRegard); - make.top.mas_equalTo(self.satisfperformanceIndicateRegard).offset(77 * kScreenScale); - make.height.mas_equalTo(30 * kScreenScale); - }]; - - [self.deficituBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(30 * kScreenScale);; - }]; - - [self.accelerateBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(30 * kScreenScale); - }]; - - [self.essayUniverse mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(75 * kScreenScale); - }]; - - [self.exploreBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(150 * kScreenScale, 47 * kScreenScale)); - make.centerX.mas_equalTo(self.satisfperformanceIndicateRegard); - make.top.mas_equalTo(self.digitalRegard.mas_bottom).offset(12 * kScreenScale); - }]; - - [self.consumSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.exploreBtuton); - make.bottom.mas_equalTo(self.exploreBtuton.mas_bottom).offset(-7 * kScreenScale); - }]; - - [self.animationView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.satisfperformanceIndicateRegard).offset(10); - make.bottom.mas_equalTo(self.satisfperformanceIndicateRegard).offset(-50); - make.width.mas_equalTo(150); - make.height.mas_equalTo(KitemHeight * 5); - }]; - - [self.promptsHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.satisfperformanceIndicateRegard); - make.bottom.mas_equalTo(self.satisfperformanceIndicateRegard).offset(-20); - make.height.mas_equalTo(10); - }]; - - [self.boxBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(10); - }]; -} - -- (void)inititowardseMarchingSVGA { - [self.marchingCowryRegard stopAnimation]; - [self.marchingRegard stopAnimation]; - @kWeakify(self); - NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/sailing_prize.svga", API_Image_URL]; - [self.anatomiser parseWithURL:[NSURL URLWithString:anatomiser1Name] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { - @kStrongify(self); - self.marchingRegard.layer.masksToBounds = YES; - self.marchingRegard.contentMode = UIViewContentModeScaleAspectFill; - self.marchingRegard.loops = 1; - self.marchingRegard.clearsAfterStop = YES; - self.marchingRegard.videoItem = videoItem; - [self.marchingRegard startAnimation]; - } failureBlock:^(NSError * _Nonnull error) { - - }]; -} - -- (void)inititowardseMarchingCaptureCowrySVGA { - @kWeakify(self); - NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/sailing_prize_cowry.svga", API_Image_URL]; - [self.anatomiser1 parseWithURL:[NSURL URLWithString:anatomiser1Name] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { - @kStrongify(self); - self.marchingCowryRegard.layer.masksToBounds = YES; - self.marchingCowryRegard.contentMode = UIViewContentModeScaleAspectFill; - self.marchingCowryRegard.loops = 1; - self.marchingCowryRegard.clearsAfterStop = YES; - self.marchingCowryRegard.videoItem = videoItem; - [self.marchingCowryRegard startAnimation]; - } failureBlock:^(NSError * _Nonnull error) { - - }]; -} - -#pragma mark - FBCSailingCeremony -- (void)acquireMarchingAbstractAccomplishment:(ChamberMarchingAbstractMatrix *)info { - self.marchingAbstract = info; - NSString * fuleStr = [NSString stringWithFormat:@"%ld", info.keyNum]; - [self.fuleBtuton setTitle:fuleStr forState:UIControlStateNormal]; -} - -- (void)unfoildMarchingAccomplishment:(ChamberMarchingCaptureStatementMatrix *)model { - self.captureAbstract = model; - self.marchingAbstract.keyNum = model.remainKeyNum; - NSString * fuleStr = [NSString stringWithFormat:@"%ld", self.marchingAbstract.keyNum]; - [self.fuleBtuton setTitle:fuleStr forState:UIControlStateNormal]; - self.exploreBtuton.userInteractionEnabled = YES; - NSString * key = [NSString stringWithFormat:@"%@_%@", kSailingPrizeAlertKey, [AccountAbstractStorage instance].acquireCid]; - if (![[NSUserDefaults standardUserDefaults] boolForKey:key] && model.prizeItemList.count > 0) { - CGFloat height = 180; - if (model.prizeItemList.count> 5) { - height = 255; - } - YUMIMarchingCaptureRegard * prizeView = [[YUMIMarchingCaptureRegard alloc] initWithFrame:CGRectMake(0, 0, 283, height)]; - prizeView.captureAbstract = model; - [MKJPopup popupRegard:prizeView style:MKJPopupStyleAlert]; - } - - if (model.specialStatus) { - [self inititowardseMarchingCaptureCowrySVGA]; - } - - - [model.prizeItemList enumerateObjectsUsingBlock:^(ChamberMarchingCaptureMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.prizeLevel > 2) { - - [NSObject cancelPreviousPerformRequestsWithTarget:self]; - - YUMIMarchingPresentRegard * newAnimaView = [[YUMIMarchingPresentRegard alloc] init]; - newAnimaView.captureAbstract = obj; - NSString * giftTitle = [NSString stringWithFormat:@"%@ x %d", obj.prizeName, obj.prizeNum]; - CGFloat widht = [giftTitle boundingRectWithSize:CGSizeMake(200, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:10]} context:nil].size.width + 10; - newAnimaView.frame = CGRectMake(0, 4 * (KitemHeight), widht, KitemHeight); - [self.animationView addSubview:newAnimaView]; - - if (self.animationView.subviews.count > 5) { - [self.animationView.subviews.firstObject removeFromSuperview]; - } - for (int i=0; i < self.animationView.subviews.count; i++) { - YUMIMarchingPresentRegard * view = [self.animationView.subviews secureGroalTowardsIndictowardsrix1:i]; - NSInteger offsetY= (self.animationView.subviews.count - i) * KitemHeight; - [UIView animateWithDuration:0.1 animations:^{ - CGRect rect = view.frame; - rect.origin.y = KitemHeight * 5 - offsetY; - view.frame = rect; - } completion:^(BOOL finished) { - if (i == (self.animationView.subviews.count -1)) { - [self.animationView.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - [self performSelector:@selector(presentRegardTransltowardseByvirtueofSenstowardsionalRegard:) withObject:obj afterDelay:15]; - }]; - } - }]; - } - } - }]; -} - -- (void)presentRegardTransltowardseByvirtueofSenstowardsionalRegard:(UIView *)view { - [view removeFromSuperview]; -} - -- (void)unfoildMarchingFlunk:(NSString *)message { - [self.marchingRegard stopAnimation]; - self.marchingIndicateRegard.hidden = NO; - self.exploreBtuton.userInteractionEnabled = YES; -} - -#pragma mark - SVGAPlayerDelegate -- (void)svgaPlayerDidFinishedAnimation:(SVGAPlayer *)player { - if (self.captureAbstract.specialStatus) { - if (player == self.marchingRegard) { - self.marchingIndicateRegard.hidden = NO; - } - } else { - self.marchingIndicateRegard.hidden = NO; - } -} - -#pragma mark - Event Response -- (void)disappearRegard { - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)rtowardseBtutonPerformance:(UIButton *)sender { - YUMIMarchingRateRegard * rateRegard = [[YUMIMarchingRateRegard alloc] init]; - [MKJPopup popupRegard:rateRegard style:MKJPopupStyleActionSheet]; -} - -- (void)acquireFuleBtutonPerformance:(UIButton *)sender { - YUMIChamberHalfTissueRegard * webView = [[YUMIChamberHalfTissueRegard alloc] init]; - webView.url = URLWithType(kSailingActivityURL); - webView.isMarching = YES; - MKJPopupServing * config = [[MKJPopupServing alloc] init]; - config.contentView = webView; - config.didFinishDismissHandler = ^(BOOL isDismissOnBackgroundTouch) { - [self.presimport acquireMarchingAbstract]; - }; - [MKJPopup popupAboutDisposition:config]; -} - -- (void)reflectionBtutonPerformance:(UIButton *)sender { - YUMIChamberHalfTissueRegard * webView = [[YUMIChamberHalfTissueRegard alloc] init]; - webView.url = URLWithType(kSailingRecordURL); - webView.isMarching = YES; - [MKJPopup popupRegard:webView style:MKJPopupStyleActionSheet]; -} - -- (void)descriptionBtutonPerformance:(UIButton *)sender { - YUMIChamberHalfTissueRegard * webView = [[YUMIChamberHalfTissueRegard alloc] init]; - webView.isMarching = YES; - webView.url = URLWithType(kSailingPlayDescdURL); - [MKJPopup popupRegard:webView style:MKJPopupStyleActionSheet]; -} - -- (void)accelertowardseBtutonPerformance:(UIButton *)sender { - self.exploreComputation ++; - if (self.exploreComputation >= self.prototypeGarment.count) { - self.exploreComputation = 3; - } -} - -- (void)deficituBtutonPerformance:(UIButton *)sender { - self.exploreComputation --; - if (self.exploreComputation <= 0) { - self.exploreComputation = 0; - } -} - -- (void)eyumiloreBtutonPerformance:(UIButton *)sender { - self.captureAbstract = nil; - if (self.essayUniverse.text.integerValue > self.marchingAbstract.keyNum) { - YUMIMarchingBuyFuelRegard * buyView = [[YUMIMarchingBuyFuelRegard alloc] init]; - buyView.delegate = self; - [MKJPopup popupRegard:buyView style:MKJPopupStyleAlert]; - } else { - self.marchingIndicateRegard.hidden = YES; - [self inititowardseMarchingSVGA]; - NSString * roomUid = self.roomUid; - [self.presimport unfoildMarching:roomUid sendMessage:YES keyNum:self.essayUniverse.text.integerValue]; - self.exploreBtuton.userInteractionEnabled = NO; - } -} - -- (void)boxBtutonPerformance:(UIButton *)sender { - sender.selected = !sender.selected; - if (sender.selected) { - NSString * key = [NSString stringWithFormat:@"%@_%@", kSailingPrizeAlertKey, [AccountAbstractStorage instance].acquireCid]; - [[NSUserDefaults standardUserDefaults] setBool:YES forKey:key]; - } else { - NSString * key = [NSString stringWithFormat:@"%@_%@", kSailingPrizeAlertKey, [AccountAbstractStorage instance].acquireCid]; - [[NSUserDefaults standardUserDefaults] setBool:NO forKey:key]; - } -} -#pragma mark - NIMSystemNotificationManagerDelegate -- (void)onReceiveCustomSystemNotification:(NIMCustomSystemNotification *)notification { - if (notification.receiverType == NIMSessionTypeP2P) { - AttachmentMatrix *attachment = [AttachmentMatrix mtowardsrixAboutJSON:notification.content]; - if (attachment.first == IndividualityCommunicationGenre_Account && attachment.second == Custom_Message_Sub_Account_Changed){ - if (attachment.second == Custom_Message_Sub_Account_Changed) { - [self.presimport acquireMarchingAbstract]; - } - } - } -} - -- (void)yUMIMarchingAcquireFuelRegard:(YUMIMarchingBuyFuelRegard *)view didClickBuy:(UIButton *)sender { - [MKJPopup dismiss]; - [self acquireFuleBtutonPerformance:self.acquireFuleBtuton]; -} - -- (void)yUMIMarchingAcquireFuelRegard:(YUMIMarchingBuyFuelRegard *)view didTicktackRevoctowardsion:(UIButton *)sender { - [MKJPopup dismiss]; -} - -#pragma mark - Getters And Setters -- (void)setExploreComputation:(NSInteger)exploreComputation { - _exploreComputation = exploreComputation; - if (_exploreComputation == 0) { - self.deficituBtuton.enabled = NO; - } else { - self.deficituBtuton.enabled = YES; - } - - if (_exploreComputation == 3) { - self.accelerateBtuton.enabled = NO; - } else { - self.accelerateBtuton.enabled = YES; - } - NSString * count = [self.prototypeGarment secureGroalTowardsIndictowardsrix1:_exploreComputation]; - self.essayUniverse.text = count; - self.consumSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Sailing_View_Controller_0"), count]; -} - -- (UIView *)apexRegard { - if (!_apexRegard) { - _apexRegard = [[UIView alloc] init]; - _apexRegard.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(disappearRegard)]; - [_apexRegard addGestureRecognizer:tap]; - return _apexRegard; - } - return _apexRegard; -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_sailing_background"]; - _encourageIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _encourageIndicateRegard.layer.masksToBounds = YES; - } - return _encourageIndicateRegard; -} - -- (UIButton *)rateBtuton { - if (!_rateBtuton) { - _rateBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_rateBtuton setImage:[UIImage imageNamed:@"yumi_scope_sailing_rank"] forState:UIControlStateNormal]; - [_rateBtuton setImage:[UIImage imageNamed:@"yumi_scope_sailing_rank"] forState:UIControlStateSelected]; - [_rateBtuton addTarget:self action:@selector(rtowardseBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _rateBtuton; -} - -- (UIButton *)acquireFuleBtuton { - if (!_acquireFuleBtuton) { - _acquireFuleBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_acquireFuleBtuton setImage:[UIImage imageNamed:@"yumi_scope_sailing_getfule"] forState:UIControlStateNormal]; - [_acquireFuleBtuton setImage:[UIImage imageNamed:@"yumi_scope_sailing_getfule"] forState:UIControlStateSelected]; - [_acquireFuleBtuton addTarget:self action:@selector(acquireFuleBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _acquireFuleBtuton; -} - -- (UIButton *)reflectionBtuton { - if (!_reflectionBtuton) { - _reflectionBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_reflectionBtuton setImage:[UIImage imageNamed:@"yumi_scope_sailing_record"] forState:UIControlStateNormal]; - [_reflectionBtuton setImage:[UIImage imageNamed:@"yumi_scope_sailing_record"] forState:UIControlStateSelected]; - [_reflectionBtuton addTarget:self action:@selector(reflectionBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _reflectionBtuton; -} - -- (UIImageView *)satisfperformanceIndicateRegard { - if (!_satisfperformanceIndicateRegard) { - _satisfperformanceIndicateRegard = [[UIImageView alloc] init]; - _satisfperformanceIndicateRegard.userInteractionEnabled = YES; - _satisfperformanceIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_sailing_explore_background"]; - } - return _satisfperformanceIndicateRegard; -} - -- (UIButton *)sequenceriptionBtuton { - if (!_sequenceriptionBtuton) { - _sequenceriptionBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_sequenceriptionBtuton setImage:[UIImage imageNamed:@"yumi_scope_sailing_description"] forState:UIControlStateNormal]; - [_sequenceriptionBtuton setImage:[UIImage imageNamed:@"yumi_scope_sailing_description"] forState:UIControlStateSelected]; - [_sequenceriptionBtuton addTarget:self action:@selector(descriptionBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _sequenceriptionBtuton; -} - -- (UIButton *)fuleBtuton { - if (!_fuleBtuton) { - _fuleBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_fuleBtuton setTitle:@"0" forState:UIControlStateNormal]; - [_fuleBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _fuleBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - _fuleBtuton.titleEdgeInsets = UIEdgeInsetsMake(0, 15, 0, 0); - [_fuleBtuton setTitleColor:[DJDKMIMOMColor colorAboutHexBWSttr:@"#643B29"] forState:UIControlStateNormal]; - [_fuleBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_scope_sailing_rule_background"] forState:UIControlStateNormal]; - } - return _fuleBtuton; -} - -- (UIStackView *)digitalRegard { - if (!_digitalRegard) { - _digitalRegard = [[UIStackView alloc] init]; - _digitalRegard.axis = UILayoutConstraintAxisHorizontal; - _digitalRegard.distribution = UIStackViewDistributionFill; - _digitalRegard.alignment = UIStackViewAlignmentFill; - _digitalRegard.spacing = 6; - } - return _digitalRegard; -} - -- (UITextField *)essayUniverse { - if (!_essayUniverse) { - _essayUniverse = [[UITextField alloc] init]; - _essayUniverse.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#64472E"]; - _essayUniverse.backgroundColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#DACBB4"]; - _essayUniverse.font = [UIFont systemFontOfSize:15]; - _essayUniverse.layer.masksToBounds = YES; - _essayUniverse.layer.cornerRadius = 11; - _essayUniverse.text = @"1"; - _essayUniverse.enabled = NO; - _essayUniverse.textAlignment = NSTextAlignmentCenter; - } - return _essayUniverse; -} - - -- (UIButton *)accelerateBtuton { - if (!_accelerateBtuton) { - _accelerateBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_accelerateBtuton setImage:[UIImage imageNamed:@"yumi_scope_sailing_add"] forState:UIControlStateNormal]; - [_accelerateBtuton setImage:[UIImage imageNamed:@"yumi_scope_sailing_add"] forState:UIControlStateSelected]; - [_accelerateBtuton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:10]; - [_accelerateBtuton addTarget:self action:@selector(accelertowardseBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _accelerateBtuton; -} - -- (UIButton *)deficituBtuton { - if (!_deficituBtuton) { - _deficituBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_deficituBtuton setImage:[UIImage imageNamed:@"yumi_scope_sailing_redu"] forState:UIControlStateNormal]; - [_deficituBtuton setImage:[UIImage imageNamed:@"yumi_scope_sailing_redu"] forState:UIControlStateSelected]; - [_deficituBtuton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:10]; - [_deficituBtuton addTarget:self action:@selector(deficituBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _deficituBtuton; -} - -- (UIButton *)exploreBtuton { - if (!_exploreBtuton) { - _exploreBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_exploreBtuton setImage:[UIImage imageNamed:@"yumi_scope_sailing_explore"] forState:UIControlStateNormal]; - [_exploreBtuton setImage:[UIImage imageNamed:@"yumi_scope_sailing_explore"] forState:UIControlStateSelected]; - [_exploreBtuton addTarget:self action:@selector(eyumiloreBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _exploreBtuton; -} - -- (UILabel *)consumSequencignation { - if (!_consumSequencignation) { - _consumSequencignation = [[UILabel alloc] init]; - _consumSequencignation.font = [UIFont systemFontOfSize:10]; - _consumSequencignation.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#A08161"]; - _consumSequencignation.textAlignment = NSTextAlignmentCenter; - _consumSequencignation.text = YMLocalizedString(@"YUMI_Sailing_View_Controller_1"); - } - return _consumSequencignation; -} - -- (UIView *)animationView { - if (!_animationView) { - _animationView = [[UIView alloc] init]; - _animationView.backgroundColor = [UIColor clearColor]; - } - return _animationView; -} - -- (SVGAImageView *)marchingRegard { - if (!_marchingRegard) { - _marchingRegard = [[SVGAImageView alloc]init]; - _marchingRegard.backgroundColor = [UIColor clearColor]; - _marchingRegard.userInteractionEnabled = NO; - _marchingRegard.delegate = self; - } - return _marchingRegard; -} - -- (SVGAImageView *)marchingCowryRegard { - if (!_marchingCowryRegard) { - _marchingCowryRegard = [[SVGAImageView alloc]init]; - _marchingCowryRegard.backgroundColor = [UIColor clearColor]; - _marchingCowryRegard.userInteractionEnabled = NO; - _marchingCowryRegard.delegate = self; - } - return _marchingCowryRegard; -} - -- (SVGAParser *)anatomiser { - if (!_anatomiser) { - _anatomiser = [[SVGAParser alloc]init]; - } - return _anatomiser; -} - -- (SVGAParser *)anatomiser1 { - if (!_anatomiser1) { - _anatomiser1 = [[SVGAParser alloc]init]; - } - return _anatomiser1; -} - -- (UIImageView *)marchingIndicateRegard { - if (!_marchingIndicateRegard) { - _marchingIndicateRegard = [[UIImageView alloc] init]; - _marchingIndicateRegard.userInteractionEnabled = YES; - _marchingIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_sailing_sailing"]; - } - return _marchingIndicateRegard; -} - -- (UIStackView *)promptsHierarchyRegard { - if (!_promptsHierarchyRegard) { - _promptsHierarchyRegard = [[UIStackView alloc] init]; - _promptsHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _promptsHierarchyRegard.distribution = UIStackViewDistributionFill; - _promptsHierarchyRegard.alignment = UIStackViewAlignmentFill; - _promptsHierarchyRegard.spacing = 5; - } - return _promptsHierarchyRegard; -} - -- (UIButton *)boxBtuton { - if (!_boxBtuton) { - _boxBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_boxBtuton setImage:[UIImage imageNamed:@"yumi_scope_sailing_tips_normal"] forState:UIControlStateNormal]; - [_boxBtuton setImage:[UIImage imageNamed:@"yumi_scope_sailing_tips_select"] forState:UIControlStateSelected]; - [_boxBtuton addTarget:self action:@selector(boxBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_boxBtuton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:10]; - NSString * key = [NSString stringWithFormat:@"%@_%@", kSailingPrizeAlertKey, [AccountAbstractStorage instance].acquireCid]; - _boxBtuton.selected = [[NSUserDefaults standardUserDefaults] boolForKey:key]; - } - return _boxBtuton; -} - -- (UILabel *)tipLabel { - if (!_tipLabel) { - _tipLabel = [[UILabel alloc] init]; - _tipLabel.font = [UIFont systemFontOfSize:10]; - _tipLabel.textColor = UIColorFromRGB(0xA16A2F); - _tipLabel.text = YMLocalizedString(@"YUMI_Sailing_View_Controller_2"); - } - return _tipLabel; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Api/Api+Gift.h b/YuMi/Modules/YMRoom/View/SendGiftView/Api/Api+Gift.h index 24422c40..916ed574 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Api/Api+Gift.h +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Api/Api+Gift.h @@ -11,14 +11,32 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (Gift) -+ (void)requisitionImpactPresentSttowardsement:(HttpRequestHelperCompletion)complection +/// 请求背包礼物 +/// @param complection 完成 +/// @param uid 用户uid +/// @param ticket 用户ticket ++ (void)requestPackGiftList:(HttpRequestHelperCompletion)complection uid:(NSString *)uid ticket:(NSString *)ticket; -+ (void)requisitionOrdinaryPresentSttowardsement:(HttpRequestHelperCompletion)complection +/// 请求普通礼物列表 +/// @param complection 完成 +/// @param roomUid 房间的roomuid ++ (void)requestNormalGiftList:(HttpRequestHelperCompletion)complection roomUid:(NSString *)roomUid; -+ (void)requisitionDischargePresent:(HttpRequestHelperCompletion)complection +/// 送礼物的接口 +/// @param complection 完成 +/// @param targetUids 送给谁的 +/// @param giftNum 送的个数 +/// @param sendType 送的类型 +/// @param giftId 礼物的id +/// @param giftSource 礼物的来源 +/// @param giftType 礼物的类型 +/// @param roomUid 房间的ID +/// @param msg 喊话的 +/// @param uid 用户的id ++ (void)requestSendGift:(HttpRequestHelperCompletion)complection targetUids:(NSString *)targetUids giftNum:(NSString *)giftNum sendType:(NSString *)sendType @@ -29,7 +47,18 @@ NS_ASSUME_NONNULL_BEGIN msg:(NSString *)msg uid:(NSString *)uid; -+ (void)requisitionDischargeKellegFantowardsicsPresent:(HttpRequestHelperCompletion)completion +/// 送粉丝团入团礼物的接口 +/// @param completion 完成 +/// @param targetUids 送给谁的 +/// @param giftNum 送的个数 +/// @param sendType 送的类型 +/// @param giftId 礼物的id +/// @param giftSource 礼物的来源 +/// @param giftType 礼物的类型 +/// @param roomUid 房间的ID +/// @param msg 喊话的 +/// @param uid 用户的id ++ (void)requestSendAnchorFansGift:(HttpRequestHelperCompletion)completion targetUids:(NSString *)targetUids giftNum:(NSString *)giftNum sendType:(NSString *)sendType @@ -40,9 +69,12 @@ NS_ASSUME_NONNULL_BEGIN msg:(NSString *)msg uid:(NSString *)uid; -+ (void)requisitionLuckPresentWeeblogicBagReflection:(HttpRequestHelperCompletion)complection; +/// 请求福袋全服礼物全服记录 +/// @param complection 完成 ++ (void)requestLuckGiftServerBagRecord:(HttpRequestHelperCompletion)complection; -+ (void)requisitionDuodenaryStowardselliteThreshold:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; +/// 请求星座礼物信息 ++ (void)requestTwelveStarFirst:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Api/Api+Gift.m b/YuMi/Modules/YMRoom/View/SendGiftView/Api/Api+Gift.m index 18c6160c..c1a48e6b 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Api/Api+Gift.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Api/Api+Gift.m @@ -11,23 +11,43 @@ @implementation Api (Gift) -+ (void)requisitionImpactPresentSttowardsement:(HttpRequestHelperCompletion)complection uid:(NSString *)uid ticket:(NSString *)ticket { - NSString * fang = [NSString stringFromBase64String:@"YmFja3BhY2svbGlzdFVzZXJCYWNrcGFja1Yy"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, uid, ticket, nil]; +/// 请求背包礼物 +/// @param complection 完成 +/// @param uid 用户uid +/// @param ticket 用户ticket ++ (void)requestPackGiftList:(HttpRequestHelperCompletion)complection uid:(NSString *)uid ticket:(NSString *)ticket { + NSString * fang = [NSString stringFromBase64String:@"YmFja3BhY2svbGlzdFVzZXJCYWNrcGFja1Yy"];///backpack/listUserBackpackV2 + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, uid, ticket, nil]; } -+ (void)requisitionOrdinaryPresentSttowardsement:(HttpRequestHelperCompletion)complection roomUid:(NSString *)roomUid { - NSString * fang = [NSString stringFromBase64String:@"Z2lmdC9saXN0VjQ="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, roomUid, nil]; +/// 请求普通礼物列表 +/// @param complection 完成 +/// @param roomUid 房间的roomuid ++ (void)requestNormalGiftList:(HttpRequestHelperCompletion)complection roomUid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@"Z2lmdC9saXN0VjQ="];///gift/listV4 + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, roomUid, nil]; } -+ (void)requisitionLuckPresentWeeblogicBagReflection:(HttpRequestHelperCompletion)complection { - NSString * fang = [NSString stringFromBase64String:@"Z2lmdC9sdWNreUJhZy9zZXJ2aWNlTXNnL3JlY29yZA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, nil]; +/// 请求福袋全服礼物全服记录 +/// @param complection 完成 ++ (void)requestLuckGiftServerBagRecord:(HttpRequestHelperCompletion)complection { + NSString * fang = @"luckybag/getBannerList";///gift/luckyBag/serviceMsg/record + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, nil]; } -+ (void)requisitionDischargePresent:(HttpRequestHelperCompletion)complection +/// 送礼物的接口 +/// @param complection 完成 +/// @param targetUids 送给谁的 +/// @param giftNum 送的个数 +/// @param sendType 送的类型 +/// @param giftId 礼物的id +/// @param giftSource 礼物的来源 +/// @param giftType 礼物的类型 +/// @param roomUid 房间的ID +/// @param msg 喊话的 +/// @param uid 用户的id ++ (void)requestSendGift:(HttpRequestHelperCompletion)complection targetUids:(NSString *)targetUids giftNum:(NSString *)giftNum sendType:(NSString *)sendType @@ -37,12 +57,23 @@ roomUid:(NSString *)roomUid msg:(NSString *)msg uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"Z2lmdC9zZW5kVjQ="]; + NSString * fang = [NSString stringFromBase64String:@"Z2lmdC9zZW5kVjQ="];///gift/sendV4 NSString *method = fang; - [self manufactureDemand:method method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, targetUids, giftNum, sendType, giftId, giftSource, giftType, roomUid, msg, uid, nil]; + [self makeRequest:method method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, targetUids, giftNum, sendType, giftId, giftSource, giftType, roomUid, msg, uid, nil]; } -+ (void)requisitionDischargeKellegFantowardsicsPresent:(HttpRequestHelperCompletion)completion +/// 送粉丝团入团礼物的接口 +/// @param completion 完成 +/// @param targetUids 送给谁的 +/// @param giftNum 送的个数 +/// @param sendType 送的类型 +/// @param giftId 礼物的id +/// @param giftSource 礼物的来源 +/// @param giftType 礼物的类型 +/// @param roomUid 房间的ID +/// @param msg 喊话的 +/// @param uid 用户的id ++ (void)requestSendAnchorFansGift:(HttpRequestHelperCompletion)completion targetUids:(NSString *)targetUids giftNum:(NSString *)giftNum sendType:(NSString *)sendType @@ -52,15 +83,16 @@ roomUid:(NSString *)roomUid msg:(NSString *)msg uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"YW5jaG9yRmFuc1RlYW0vc2VuZEpvaW5UZWFtR2lmdA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, targetUids, giftNum, sendType, giftId, giftSource, giftType, roomUid, msg, uid, nil]; + NSString * fang = [NSString stringFromBase64String:@"YW5jaG9yRmFuc1RlYW0vc2VuZEpvaW5UZWFtR2lmdA=="];///anchorFansTeam/sendJoinTeamGift + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, targetUids, giftNum, sendType, giftId, giftSource, giftType, roomUid, msg, uid, nil]; } -+ (void)requisitionDuodenaryStowardselliteThreshold:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { +/// 请求星座礼物信息 ++ (void)requestTwelveStarFirst:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { NSMutableDictionary * params = [NSMutableDictionary dictionary]; - [params secureSetGroal:roomUid forKey:@"roomUid"]; - NSString * fang = [NSString stringFromBase64String:@"dHdlbHZlU3Rhci9nZXRMYXN0UmFua0ZpcnN0"]; - [HttpRequestFacilitater request:fang method:HttpRequestHelperMethodGET params:params completion:completion]; + [params safeSetObject:roomUid forKey:@"roomUid"]; + NSString * fang = [NSString stringFromBase64String:@"dHdlbHZlU3Rhci9nZXRMYXN0UmFua0ZpcnN0"];///twelveStar/getLastRankFirst + [HttpRequestHelper request:fang method:HttpRequestHelperMethodGET params:params completion:completion]; } @end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftInfoModel.h b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftInfoModel.h new file mode 100644 index 00000000..164488ca --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftInfoModel.h @@ -0,0 +1,121 @@ +// +// YMGiftInfoModel.h +// YUMI +// +// Created by YUMI on 2021/11/11. +// + +#import +#import "GiftNobleInfoModel.h" +#import "XPWeekStarRankUserModel.h" + +NS_ASSUME_NONNULL_BEGIN +//礼物类型 +typedef NS_ENUM(NSUInteger, GiftType) { + GiftType_Game = 2, // 游戏轰趴礼物 + GiftType_Lucky = 3, // 福袋礼物 + GiftType_LuckyPool = 5, //福袋奖池礼物 + GiftType_Noble = 7, // 贵族礼物 + GiftType_WeekStar = 8, //周星礼物 + GiftType_Graffiti = 10, //涂鸦礼物 + GiftType_Anchor = 11, //个播礼物 + GiftType_Punish = 12, //惩罚礼物 + GiftType_Twelve_Star = 13, //星座礼物 +}; + +//礼物类型 +typedef NS_ENUM(NSUInteger, GiftSourceType) { + GiftSourceType_Normal = 1, //普通礼物 + GiftSourceType_Pack = 2, // 背包礼物 +}; + +///礼物播放类型(0 无, 1 MP4、VAP播放) +typedef NS_ENUM(NSUInteger, GiftOtherViewType) { + GiftOtherViewTypeNormal = 0, + GiftOtherViewTypeMp4 = 1, +}; + +/** + 赠送类型 1给主播直接刷礼物,2私聊送个人礼物,3房间内给坑位上的人送礼物,5.公聊大厅给人送礼物 + + - GameRoomSendType_Room: 给主播直接刷礼物 + - GameRoomSendType_Chat: 2私聊送个人礼物 + - GameRoomSendType_OnMic: 3房间内给坑位上的人送礼物 + - GameRoomSendType_PublicChat: 公聊大厅给人送礼物 + - GameRoomSendType_Team 群聊礼物 + */ +typedef NS_ENUM(NSUInteger, GiftSendType) { + GiftSendType_Room = 1,///zho + GiftSendType_Chat = 2, + GiftSendType_OnMic = 3, +}; + +/** + 送礼物的类型,1全麦,2多人非全麦,3个人送礼w + - GameRoomSendGiftType_AllMic: 全麦 + - GameRoomSendGiftType_MutableOnMic: 多人w非全麦 + - GameRoomSendGiftType_ToOne: 对个人送礼 + */ +typedef NS_ENUM(NSUInteger, RoomSendGiftType) { + RoomSendGiftType_AllMic, + RoomSendGiftType_MutableOnMic, + RoomSendGiftType_ToOne, +}; + +@interface GiftInfoModel : NSObject +///礼物id +@property (nonatomic, assign)NSInteger giftId; +///礼物名字 +@property (nonatomic, strong)NSString *giftName; +///价格 +@property (nonatomic, assign)double goldPrice; +///礼物url +@property (nonatomic, copy)NSString *giftUrl; +///福袋svagUrl +@property (nonatomic, copy)NSString *luckyGiftSvgaUrl; +///玩法说明Url +@property (nonatomic, copy)NSString *giftExplainUrl; + +@property (nonatomic, assign) GiftType giftType;//礼物类型 +///是否有vgg特效 +@property (assign, nonatomic) BOOL hasVggPic; +///动效url +@property (copy, nonatomic) NSString *vggUrl; +///是否最新 +@property (assign, nonatomic) BOOL hasLatest; +///是否限时 +@property (assign, nonatomic) BOOL hasTimeLimit; +///是否特效 +@property (assign, nonatomic) BOOL hasEffect; +///是否是房间专属礼物 +@property (assign, nonatomic) BOOL roomExclude; +///是否支持发广播 +@property (nonatomic,assign) BOOL isSendMsg; +///礼物文件类型 0 其他, 1 mp4 +@property (nonatomic, assign) GiftOtherViewType otherViewType; +///mp4类型特效url +@property (nonatomic, copy) NSString *viewUrl; + +/**------------- 礼物背包 ----------------**/ +///个数 +@property (nonatomic, assign) NSInteger count; +@property (nonatomic, assign) NSInteger reciveCount; + +//isSelected 用于本地修改 +@property (nonatomic,assign) BOOL isSelected;//是否被选中 +///礼物来源 +@property (nonatomic,assign) GiftSourceType sourceType; +///贵族礼物专属信息 +@property (nonatomic, strong) GiftNobleInfoModel *giftVipInfo; + +/*----------周星礼物--------*/ +///上周周星礼物ID +@property (nonatomic, assign) NSInteger lastGiftId; +///上周对应礼物的魅力榜第一 +@property (nonatomic, strong) XPWeekStarRankUserModel *firstCharmRankUser; +///上周对应礼物豪气榜第一 +@property (nonatomic, strong) XPWeekStarRankUserModel *firstLevelRankUser; +@property (nonatomic,assign) BOOL isEmpty; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftInfoModel.m b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftInfoModel.m new file mode 100644 index 00000000..d82b9f3a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftInfoModel.m @@ -0,0 +1,12 @@ +// +// YMGiftInfoModel.m +// YUMI +// +// Created by YUMI on 2021/11/11. +// + +#import "GiftInfoModel.h" +#import "MJExtension.h" +@implementation GiftInfoModel +MJCodingImplementation +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftLuckyBroadcastModel.h b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftLuckyBroadcastModel.h new file mode 100644 index 00000000..2cbc8ee1 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftLuckyBroadcastModel.h @@ -0,0 +1,27 @@ +// +// GiftLuckyBroadcastModel.h +// YUMI +// +// Created by YUMI on 2022/10/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface GiftLuckyBroadcastModel : NSObject +///礼物名称 +@property (nonatomic,strong) NSString *giftName; +///价格 +@property (nonatomic, assign)double goldPrice; +///幸运礼物 +@property (nonatomic,strong) NSString *luckyBagName; +///昵称 +@property (nonatomic,strong) NSString *nick; +///房间标题 +@property (nonatomic,strong) NSString *roomTitle; +///房间的uid +@property (nonatomic,strong) NSString *roomUid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftLuckyBroadcastModel.m b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftLuckyBroadcastModel.m new file mode 100644 index 00000000..2eb9846e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftLuckyBroadcastModel.m @@ -0,0 +1,14 @@ +// +// GiftLuckyBroadcastModel.m +// YUMI +// +// Created by YUMI on 2022/10/17. +// + +#import "GiftLuckyBroadcastModel.h" + +@implementation GiftLuckyBroadcastModel + + + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftNobleInfoModel.h b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftNobleInfoModel.h new file mode 100644 index 00000000..18d509a7 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftNobleInfoModel.h @@ -0,0 +1,23 @@ +// +// GiftNobleInfoModel.h +// YUMI +// +// Created by YUMI on 2021/12/27. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface GiftNobleInfoModel : NSObject + +///贵族图标 +@property (nonatomic, copy)NSString *vipIcon; +///可用贵族等级 +@property (nonatomic, assign) NSInteger vipLevel; +///贵族名称 +@property (nonatomic, copy) NSString *vipName; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftNobleInfoModel.m b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftNobleInfoModel.m new file mode 100644 index 00000000..2c24cef1 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftNobleInfoModel.m @@ -0,0 +1,12 @@ +// +// GiftNobleInfoModel.m +// YUMI +// +// Created by YUMI on 2021/12/27. +// + +#import "GiftNobleInfoModel.h" +#import "MJExtension.h" +@implementation GiftNobleInfoModel +MJCodingImplementation +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftReceiveInfoModel.h b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftReceiveInfoModel.h new file mode 100644 index 00000000..9b946c7c --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftReceiveInfoModel.h @@ -0,0 +1,128 @@ +// +// GiftReceiveInfoModel.h +// YUMI +// +// Created by YUMI on 2021/11/16. +// +#import +#import "GiftInfoModel.h" + +typedef NS_ENUM(NSInteger, BroadCastLevel) { + BroadCastLevel_Normal = 1, + BroadCastLevel_Middle = 2, + ///最高级 + BroadCastLevel_High = 3, +}; + +NS_ASSUME_NONNULL_BEGIN +@class GiftValueInfoModel; +@interface GiftReceiveUserInfoModel : NSObject +///收礼物的人 +@property(nonatomic, strong)NSString *nick; +///收礼物的人的头像 +@property(nonatomic, strong)NSString *avatar; +///用户uid +@property(nonatomic, assign) NSInteger uid; +@end + +@interface GiftLuckyUserInfo : NSObject +@property(nonatomic, copy) NSString *nick; +//基础信息 +@property(nonatomic, assign) NSInteger uid; +@end + + +@interface GiftListsInfo : NSObject +@property (nonatomic, assign) NSInteger giftNum; +@property (nonatomic, assign) NSInteger prizeLevel; +@property (nonatomic, assign) NSInteger giftId; +@end + + +// 要多次发送消息 福袋相关的modle单独处理 + +@interface GiftLuckyBagGiftsInfo : NSObject +@property (nonatomic, strong) NSArray *giftList; +@property (nonatomic, strong) GiftLuckyUserInfo *user; +@end + +@interface GiftReceiveInfoModel : NSObject +///目标的uid +@property(nonatomic,copy)NSString * targetUid; +///目标的头像 +@property (nonatomic,copy) NSString *targetAvatar; +///目标的昵称 +@property (nonatomic,copy) NSString *targetNick; +@property (nonatomic,strong) NSArray *targetUids; +///礼物信息 +@property (nonatomic,strong) GiftInfoModel *gift; +///礼物信息 +@property (nonatomic,strong) GiftInfoModel *giftInfo; +///送礼物的人uid +@property(nonatomic, assign)NSString * uid; +///礼物的id +@property (nonatomic,copy) NSString *giftId; +///送礼物的人 +@property(nonatomic, strong)NSString *nick; +///送礼物的人的头像 +@property(nonatomic, strong)NSString *avatar; +///送礼物的个数 +@property (assign, nonatomic) NSInteger giftNum; +///礼物价格 +@property(nonatomic,assign) NSInteger giftGolds; +///礼物名字 +@property (nonatomic,strong)NSString *giftName; +///动效url +@property (copy,nonatomic) NSString *vggUrl; +///vap动效url +@property (nonatomic, copy) NSString *viewUrl; +///福袋svagUrl +@property (nonatomic, copy)NSString *luckyGiftSvgaUrl; +///非全麦 多人送礼时 +@property (nonatomic,strong) NSArray *targetUsers; +///福袋礼物需要展示的vg动画 +@property (nonatomic,strong) NSArray *displayGift; +///福袋随机获取的礼物 +@property (nonatomic,strong) NSArray *luckyBagGifts; +///多人接收到的具体福袋礼物 是对luckyBagGifts的分离 要多次发送消息使用 +@property (nonatomic,strong) GiftLuckyBagGiftsInfo* luckyGiftList; +///礼物来源 +@property (nonatomic,assign) GiftSourceType sourceType; +///房间送礼物的类型 +@property (nonatomic,assign) RoomSendGiftType roomSendGiftType; +///礼物值信息 +@property (nonatomic, strong) NSArray *giftValueVos; +///是否是背包礼物 +@property (nonatomic,assign) BOOL isLuckyBagGift; +///是不是全麦 +@property (nonatomic,assign) BOOL isBatch; +///播放哪个动画 +@property (nonatomic, assign) BOOL isShowAnimation; + +///礼物的地址 +@property (nonatomic,copy) NSString *giftUrl; +///是否可跳转房间 +@property (nonatomic,assign) BOOL isSkipRoom; +///全服礼物通知等级编号 +@property (nonatomic,assign) BroadCastLevel levelNum; +///停留的时间 +@property (nonatomic,assign) CGFloat notifyStaySecond; +///接收者的头像 +@property (nonatomic,copy) NSString *recvUserAvatar; +///接收者的昵称 +@property (nonatomic,copy) NSString *recvUserNick; +///发送者的头像 +@property (nonatomic, copy) NSString *sendUserAvatar; +///发送者的昵称 +@property (nonatomic, copy) NSString *sendUserNick; +///跳转的房间的uid +@property (nonatomic,assign) NSInteger roomUid; +///平台id +@property (nonatomic,copy) NSString *roomErbanNo; +///是否年度飘屏 +@property (nonatomic, assign) BOOL ceremonyGift; +///是否是房间外飘屏 +@property(nonatomic,assign) BOOL isHomeShow; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftReceiveInfoModel.m b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftReceiveInfoModel.m new file mode 100644 index 00000000..44700a9d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftReceiveInfoModel.m @@ -0,0 +1,44 @@ +// +// GiftReceiveInfoModel.m +// YUMI +// +// Created by YUMI on 2021/11/16. +// + +#import "GiftReceiveInfoModel.h" +#import "NSObject+MJExtension.h" + +@implementation GiftReceiveUserInfoModel + +@end + +@implementation GiftLuckyUserInfo + + +@end + +@implementation GiftListsInfo + + +@end + +@implementation GiftLuckyBagGiftsInfo + ++ (NSDictionary *)objectClassInArray { + return @{@"giftList":GiftListsInfo.class + }; +} + + +@end + +@implementation GiftReceiveInfoModel + ++ (NSDictionary *)objectClassInArray { + return @{@"targetUsers":GiftReceiveUserInfoModel.class, + @"displayGift":GiftInfoModel.class, + @"luckyBagGifts":GiftLuckyBagGiftsInfo.class + }; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftTwelveStarFirstModel.h b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftTwelveStarFirstModel.h new file mode 100644 index 00000000..2d75259a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftTwelveStarFirstModel.h @@ -0,0 +1,23 @@ +// +// GiftTwelveStarFirstModel.h +// YUMI +// +// Created by YUMI on 2022/12/7. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface GiftTwelveStarFirstModel : NSObject +@property (nonatomic, copy) NSString *avatar; +@property (nonatomic, copy) NSString *erbanNo; +@property (nonatomic, copy) NSString *markUrl; +@property (nonatomic, copy) NSString *nick; +@property (nonatomic, copy) NSString *twelveStarName; +@property (nonatomic, copy) NSString *uid; +@property (nonatomic, assign) NSInteger gender; +@property (nonatomic, copy) NSString *twelveId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftTwelveStarFirstModel.m b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftTwelveStarFirstModel.m new file mode 100644 index 00000000..a4583422 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftTwelveStarFirstModel.m @@ -0,0 +1,12 @@ +// +// GiftTwelveStarFirstModel.m +// YUMI +// +// Created by YUMI on 2022/12/7. +// + +#import "GiftTwelveStarFirstModel.h" + +@implementation GiftTwelveStarFirstModel + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftValueInfoModel.h b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftValueInfoModel.h new file mode 100644 index 00000000..6306c11a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftValueInfoModel.h @@ -0,0 +1,25 @@ +// +// MicroGiftValueModel.h +// YUMI +// +// Created by YUMI on 2021/12/13. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class GiftValueDetailModel; +@interface GiftValueInfoModel : NSObject +@property (nonatomic, copy) NSString *currentTime;//系统时间戳 +@property (nonatomic, strong) NSArray *giftValueVos; +@end + +@interface GiftValueDetailModel : NSObject +///用户的uid +@property (nonatomic, copy) NSString * uid; +///礼物值 +@property (nonatomic, assign) long long giftValue; +@end + + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftValueInfoModel.m b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftValueInfoModel.m new file mode 100644 index 00000000..c857308a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Model/GiftValueInfoModel.m @@ -0,0 +1,23 @@ +// +// MicroGiftValueModel.m +// YUMI +// +// Created by YUMI on 2021/12/13. +// + +#import "GiftValueInfoModel.h" + +@implementation GiftValueInfoModel + ++ (NSDictionary *)objectClassInArray { + return @{@"giftValueVos":GiftValueDetailModel.class}; +} + +@end + + +@implementation GiftValueDetailModel + + + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentAbstractMatrix.h b/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentAbstractMatrix.h deleted file mode 100644 index 9d47946d..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentAbstractMatrix.h +++ /dev/null @@ -1,83 +0,0 @@ -// -// YMGiftInfoModel.h -// YUMI -// -// Created by YUMI on 2021/11/11. -// - -#import -#import "PresentMagnificentAbstractMatrix.h" -#import "YUMIWeekSatelliteRateConsumerMatrix.h" - -NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSUInteger, PresentGenre) { - PresentGenre_Game = 2, - PresentGenre_Lucky = 3, - PresentGenre_LuckyPool = 5, - PresentGenre_Noble = 7, - PresentGenre_WeekStar = 8, - PresentGenre_Graffiti = 10, - PresentGenre_Anchor = 11, - PresentGenre_Punish = 12, - PresentGenre_Twelve_Star = 13, -}; - -typedef NS_ENUM(NSUInteger, PresentSourceGenre) { - PresentSourceGenre_Normal = 1, - PresentSourceGenre_Pack = 2, -}; - -typedef NS_ENUM(NSUInteger, PresentOtherRegardGenre) { - PresentOtherRegardGenreNormal = 0, - PresentOtherRegardGenreMp4 = 1, -}; - - -typedef NS_ENUM(NSUInteger, PresentDischargeGenre) { - PresentDischargeGenre_Room = 1, - PresentDischargeGenre_Chat = 2, - PresentDischargeGenre_OnMic = 3, -}; - - -typedef NS_ENUM(NSUInteger, ChamberDischargePresentGenre) { - ChamberDischargePresentGenre_AllMic, - ChamberDischargePresentGenre_MutableOnMic, - ChamberDischargePresentGenre_ToOne, -}; - -@interface PresentAbstractMatrix : NSObject -@property (nonatomic, assign)NSInteger giftId; -@property (nonatomic, strong)NSString *giftName; -@property (nonatomic, assign)double goldPrice; -@property (nonatomic, copy)NSString *giftUrl; -@property (nonatomic, copy)NSString *luckyGiftSvgaUrl; -@property (nonatomic, copy)NSString *giftExplainUrl; - -@property (nonatomic, assign) PresentGenre giftType; -@property (assign, nonatomic) BOOL hasVggPic; -@property (copy, nonatomic) NSString *vggUrl; -@property (assign, nonatomic) BOOL hasLatest; -@property (assign, nonatomic) BOOL hasTimeLimit; -@property (assign, nonatomic) BOOL hasEffect; -@property (assign, nonatomic) BOOL roomExclude; -@property (nonatomic,assign) BOOL isSendMsg; -@property (nonatomic, assign) PresentOtherRegardGenre otherViewType; -@property (nonatomic, copy) NSString *viewUrl; - - -@property (nonatomic, assign) NSInteger count; -@property (nonatomic, assign) NSInteger reciveCount; - -@property (nonatomic,assign) BOOL isSelected; -@property (nonatomic,assign) PresentSourceGenre sourceType; -@property (nonatomic, strong) PresentMagnificentAbstractMatrix *giftVipInfo; - - -@property (nonatomic, assign) NSInteger lastGiftId; -@property (nonatomic, strong) YUMIWeekSatelliteRateConsumerMatrix *firstCharmRankUser; -@property (nonatomic, strong) YUMIWeekSatelliteRateConsumerMatrix *firstLevelRankUser; -@property (nonatomic,assign) BOOL isEmpty; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentAbstractMatrix.m b/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentAbstractMatrix.m deleted file mode 100644 index 784405cd..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentAbstractMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMGiftInfoModel.m -// YUMI -// -// Created by YUMI on 2021/11/11. -// - -#import "PresentAbstractMatrix.h" -#import "MJExtension.h" -@implementation PresentAbstractMatrix -MJCodingImplementation -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentAchieveAbstractMatrix.h b/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentAchieveAbstractMatrix.h deleted file mode 100644 index 5d951113..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentAchieveAbstractMatrix.h +++ /dev/null @@ -1,65 +0,0 @@ -// -// PresentAchieveAbstractMatrix.h -// YUMI -// -// Created by YUMI on 2021/11/16. -// -#import -#import "PresentAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN -@class PresentStressAbstractMatrix; -@interface PresentAchieveConsumerAbstractMatrix : NSObject -@property(nonatomic, strong)NSString *nick; -@property(nonatomic, strong)NSString *avatar; -@property(nonatomic, assign) NSInteger uid; -@end - -@interface PresentFortunateConsumerAbstract : NSObject -@property(nonatomic, copy) NSString *nick; -@property(nonatomic, assign) NSInteger uid; -@end - - -@interface PresentStatementsAbstract : NSObject -@property (nonatomic, assign) NSInteger giftNum; -@property (nonatomic, assign) NSInteger prizeLevel; -@property (nonatomic, assign) NSInteger giftId; -@end - - - -@interface PresentFortunateBagPresentsAbstract : NSObject -@property (nonatomic, strong) NSArray *giftList; -@property (nonatomic, strong) PresentFortunateConsumerAbstract *user; -@end - -@interface PresentAchieveAbstractMatrix : NSObject -@property(nonatomic,copy)NSString * targetUid; -@property (nonatomic,copy) NSString *targetAvatar; -@property (nonatomic,copy) NSString *targetNick; -@property (nonatomic,strong) NSArray *targetUids; -@property (nonatomic,strong) PresentAbstractMatrix *gift; -@property (nonatomic,strong) PresentAbstractMatrix *giftInfo; -@property(nonatomic, assign)NSString * uid; -@property (nonatomic,copy) NSString *giftId; -@property(nonatomic, strong)NSString *nick; -@property(nonatomic, strong)NSString *avatar; -@property (assign, nonatomic) NSInteger giftNum; -@property (nonatomic,strong)NSString *giftName; -@property (copy,nonatomic) NSString *vggUrl; -@property (nonatomic, copy) NSString *viewUrl; -@property (nonatomic, copy)NSString *luckyGiftSvgaUrl; -@property (nonatomic,strong) NSArray *targetUsers; -@property (nonatomic,strong) NSArray *displayGift; -@property (nonatomic,strong) NSArray *luckyBagGifts; -@property (nonatomic,strong) PresentFortunateBagPresentsAbstract* luckyGiftList; -@property (nonatomic,assign) PresentSourceGenre sourceType; -@property (nonatomic,assign) ChamberDischargePresentGenre roomSendGiftType; -@property (nonatomic, strong) NSArray *giftValueVos; -@property (nonatomic,assign) BOOL isLuckyBagGift; -@property (nonatomic,assign) BOOL isBatch; -@property (nonatomic, assign) BOOL isShowAnimation; -@property(nonatomic,copy) NSString *key; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentAchieveAbstractMatrix.m b/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentAchieveAbstractMatrix.m deleted file mode 100644 index 7c32b71d..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentAchieveAbstractMatrix.m +++ /dev/null @@ -1,44 +0,0 @@ -// -// PresentAchieveAbstractMatrix.m -// YUMI -// -// Created by YUMI on 2021/11/16. -// - -#import "PresentAchieveAbstractMatrix.h" -#import "NSObject+MJExtension.h" - -@implementation PresentAchieveConsumerAbstractMatrix - -@end - -@implementation PresentFortunateConsumerAbstract - - -@end - -@implementation PresentStatementsAbstract - - -@end - -@implementation PresentFortunateBagPresentsAbstract - -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{@"giftList":PresentStatementsAbstract.class - }; -} - - -@end - -@implementation PresentAchieveAbstractMatrix - -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{@"targetUsers":PresentAchieveConsumerAbstractMatrix.class, - @"displayGift":PresentAbstractMatrix.class, - @"luckyBagGifts":PresentFortunateBagPresentsAbstract.class - }; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentFortunatePingbackMatrix.h b/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentFortunatePingbackMatrix.h deleted file mode 100644 index 894747b5..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentFortunatePingbackMatrix.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// PresentFortunatePingbackMatrix.h -// YUMI -// -// Created by YUMI on 2022/10/17. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface PresentFortunatePingbackMatrix : NSObject -@property (nonatomic,strong) NSString *giftName; -@property (nonatomic, assign)double goldPrice; -@property (nonatomic,strong) NSString *luckyBagName; -@property (nonatomic,strong) NSString *nick; -@property (nonatomic,strong) NSString *roomTitle; -@property (nonatomic,strong) NSString *roomUid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentFortunatePingbackMatrix.m b/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentFortunatePingbackMatrix.m deleted file mode 100644 index c6551c37..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentFortunatePingbackMatrix.m +++ /dev/null @@ -1,14 +0,0 @@ -// -// PresentFortunatePingbackMatrix.m -// YUMI -// -// Created by YUMI on 2022/10/17. -// - -#import "PresentFortunatePingbackMatrix.h" - -@implementation PresentFortunatePingbackMatrix - - - -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentMagnificentAbstractMatrix.h b/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentMagnificentAbstractMatrix.h deleted file mode 100644 index a730754e..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentMagnificentAbstractMatrix.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// PresentMagnificentAbstractMatrix.h -// YUMI -// -// Created by YUMI on 2021/12/27. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface PresentMagnificentAbstractMatrix : NSObject - -@property (nonatomic, copy)NSString *vipIcon; -@property (nonatomic, assign) NSInteger vipLevel; -@property (nonatomic, copy) NSString *vipName; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentMagnificentAbstractMatrix.m b/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentMagnificentAbstractMatrix.m deleted file mode 100644 index b4a6cb07..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentMagnificentAbstractMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// PresentMagnificentAbstractMatrix.m -// YUMI -// -// Created by YUMI on 2021/12/27. -// - -#import "PresentMagnificentAbstractMatrix.h" -#import "MJExtension.h" -@implementation PresentMagnificentAbstractMatrix -MJCodingImplementation -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentStressAbstractMatrix.h b/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentStressAbstractMatrix.h deleted file mode 100644 index 54ff50e4..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentStressAbstractMatrix.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// MicroGiftValueModel.h -// YUMI -// -// Created by YUMI on 2021/12/13. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class PresentStressSpecificMatrix; -@interface PresentStressAbstractMatrix : NSObject -@property (nonatomic, copy) NSString *currentTime; -@property (nonatomic, strong) NSArray *giftValueVos; -@end - -@interface PresentStressSpecificMatrix : NSObject -@property (nonatomic, copy) NSString * uid; -@property (nonatomic, assign) long long giftValue; -@end - - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentStressAbstractMatrix.m b/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentStressAbstractMatrix.m deleted file mode 100644 index 2ca191f1..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentStressAbstractMatrix.m +++ /dev/null @@ -1,23 +0,0 @@ -// -// MicroGiftValueModel.m -// YUMI -// -// Created by YUMI on 2021/12/13. -// - -#import "PresentStressAbstractMatrix.h" - -@implementation PresentStressAbstractMatrix - -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{@"giftValueVos":PresentStressSpecificMatrix.class}; -} - -@end - - -@implementation PresentStressSpecificMatrix - - - -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentTwelveSatelliteThresholdMatrix.h b/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentTwelveSatelliteThresholdMatrix.h deleted file mode 100644 index 52634e2d..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentTwelveSatelliteThresholdMatrix.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// PresentTwelveSatelliteThresholdMatrix.h -// YUMI -// -// Created by YUMI on 2022/12/7. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface PresentTwelveSatelliteThresholdMatrix : NSObject -@property (nonatomic, copy) NSString *avatar; -@property (nonatomic, copy) NSString *erbanNo; -@property (nonatomic, copy) NSString *markUrl; -@property (nonatomic, copy) NSString *nick; -@property (nonatomic, copy) NSString *twelveStarName; -@property (nonatomic, copy) NSString *uid; -@property (nonatomic, assign) NSInteger gender; -@property (nonatomic, copy) NSString *twelveId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentTwelveSatelliteThresholdMatrix.m b/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentTwelveSatelliteThresholdMatrix.m deleted file mode 100644 index b544edcb..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Model/PresentTwelveSatelliteThresholdMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// PresentTwelveSatelliteThresholdMatrix.m -// YUMI -// -// Created by YUMI on 2022/12/7. -// - -#import "PresentTwelveSatelliteThresholdMatrix.h" - -@implementation PresentTwelveSatelliteThresholdMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/XPGiftCountModel.h b/YuMi/Modules/YMRoom/View/SendGiftView/Model/XPGiftCountModel.h new file mode 100644 index 00000000..60d1f31b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Model/XPGiftCountModel.h @@ -0,0 +1,26 @@ +// +// YMGiftCountModel.h +// YUMI +// +// Created by YUMI on 2021/11/11. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPGiftCountModel : NSObject +/// +@property (nonatomic,copy) NSString *title; +///礼物的个数 +@property (nonatomic,copy) NSString *giftNumber; +/// 背包礼物的时候显示是全部 +@property (nonatomic,assign) BOOL isTotal; +///是否是自定义数量 默认为NO +@property (nonatomic, assign) BOOL isCustomCount; + ++ (instancetype)initCountModel:(NSString *)title giftNumber:(NSString *)giftNumber; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/XPGiftCountModel.m b/YuMi/Modules/YMRoom/View/SendGiftView/Model/XPGiftCountModel.m new file mode 100644 index 00000000..af2bb324 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Model/XPGiftCountModel.m @@ -0,0 +1,22 @@ +// +// YMGiftCountModel.m +// YUMI +// +// Created by YUMI on 2021/11/11. +// + +#import "XPGiftCountModel.h" + +@implementation XPGiftCountModel + + ++ (instancetype)initCountModel:(NSString *)title giftNumber:(NSString *)giftNumber { + XPGiftCountModel * model = [[XPGiftCountModel alloc] init]; + model.title = title; + model.giftNumber = giftNumber; + model.isTotal = NO; + model.isCustomCount = NO; + return model; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/XPGiftUserInfoModel.h b/YuMi/Modules/YMRoom/View/SendGiftView/Model/XPGiftUserInfoModel.h new file mode 100644 index 00000000..9f91752d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Model/XPGiftUserInfoModel.h @@ -0,0 +1,28 @@ +// +// YMGiftUserInfoModel.h +// YUMI +// +// Created by YUMI on 2021/11/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPGiftUserInfoModel : NSObject +///头像 +@property (nonatomic,copy) NSString * avatar; +///昵称 +@property (nonatomic,copy) NSString *nick; +///用户的uid +@property (nonatomic,assign) NSInteger uid; +///坑位 如果用户在坑位的话 就有值 如果没在坑位的话 就没有有值 +@property (nonatomic,copy) NSString * position; +///是否为相亲模式VIP坑位 +@property (nonatomic,assign) BOOL vipMic; +///是否选择 本地字段刷新页面使用 +@property (nonatomic,assign) BOOL isSelect; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/XPGiftUserInfoModel.m b/YuMi/Modules/YMRoom/View/SendGiftView/Model/XPGiftUserInfoModel.m new file mode 100644 index 00000000..2563bf89 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Model/XPGiftUserInfoModel.m @@ -0,0 +1,14 @@ +// +// YMGiftUserInfoModel.m +// YUMI +// +// Created by YUMI on 2021/11/17. +// + +#import "XPGiftUserInfoModel.h" + +@implementation XPGiftUserInfoModel + + + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/XPWeekStarRankUserModel.h b/YuMi/Modules/YMRoom/View/SendGiftView/Model/XPWeekStarRankUserModel.h new file mode 100644 index 00000000..a0826a93 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Model/XPWeekStarRankUserModel.h @@ -0,0 +1,29 @@ +// +// YMCharmRankUserModel.h +// YUMI +// +// Created by YUMI on 2022/5/7. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPWeekStarRankUserModel : NSObject + +///头像 +@property (nonatomic, copy) NSString *avatar; +///榜单值 +@property (nonatomic, assign) NSInteger amount; +///uid +@property (nonatomic, assign) NSInteger uid; +///二般号 +@property (nonatomic, assign) NSInteger erbanNo; +///昵称 +@property (nonatomic, copy) NSString *nick; +///礼物id +@property (nonatomic, assign) NSInteger giftId; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/XPWeekStarRankUserModel.m b/YuMi/Modules/YMRoom/View/SendGiftView/Model/XPWeekStarRankUserModel.m new file mode 100644 index 00000000..74d024e5 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Model/XPWeekStarRankUserModel.m @@ -0,0 +1,12 @@ +// +// YMCharmRankUserModel.m +// YUMI +// +// Created by YUMI on 2022/5/7. +// + +#import "XPWeekStarRankUserModel.h" + +@implementation XPWeekStarRankUserModel + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/YUMIExternalizeConsumerAbstractMatrix.h b/YuMi/Modules/YMRoom/View/SendGiftView/Model/YUMIExternalizeConsumerAbstractMatrix.h deleted file mode 100644 index a64bc568..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Model/YUMIExternalizeConsumerAbstractMatrix.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMGiftUserInfoModel.h -// YUMI -// -// Created by YUMI on 2021/11/17. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIExternalizeConsumerAbstractMatrix : NSObject -@property (nonatomic,copy) NSString * avatar; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic,assign) NSInteger uid; -@property (nonatomic,copy) NSString * position; -@property (nonatomic,assign) BOOL vipMic; -@property (nonatomic,assign) BOOL isSelect; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/YUMIExternalizeConsumerAbstractMatrix.m b/YuMi/Modules/YMRoom/View/SendGiftView/Model/YUMIExternalizeConsumerAbstractMatrix.m deleted file mode 100644 index 400cab4d..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Model/YUMIExternalizeConsumerAbstractMatrix.m +++ /dev/null @@ -1,14 +0,0 @@ -// -// YMGiftUserInfoModel.m -// YUMI -// -// Created by YUMI on 2021/11/17. -// - -#import "YUMIExternalizeConsumerAbstractMatrix.h" - -@implementation YUMIExternalizeConsumerAbstractMatrix - - - -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/YUMIPresentComputationMatrix.h b/YuMi/Modules/YMRoom/View/SendGiftView/Model/YUMIPresentComputationMatrix.h deleted file mode 100644 index f0967307..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Model/YUMIPresentComputationMatrix.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMGiftCountModel.h -// YUMI -// -// Created by YUMI on 2021/11/11. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIPresentComputationMatrix : NSObject -@property (nonatomic,copy) NSString *title; -@property (nonatomic,copy) NSString *giftNumber; -@property (nonatomic,assign) BOOL isTotal; -@property (nonatomic, assign) BOOL isCustomCount; - -+ (instancetype)initComputtowardsionMtowardsrix:(NSString *)title giftNumber:(NSString *)giftNumber; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/YUMIPresentComputationMatrix.m b/YuMi/Modules/YMRoom/View/SendGiftView/Model/YUMIPresentComputationMatrix.m deleted file mode 100644 index e128d1a8..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Model/YUMIPresentComputationMatrix.m +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMGiftCountModel.m -// YUMI -// -// Created by YUMI on 2021/11/11. -// - -#import "YUMIPresentComputationMatrix.h" - -@implementation YUMIPresentComputationMatrix - - -+ (instancetype)initComputtowardsionMtowardsrix:(NSString *)title giftNumber:(NSString *)giftNumber { - YUMIPresentComputationMatrix * model = [[YUMIPresentComputationMatrix alloc] init]; - model.title = title; - model.giftNumber = giftNumber; - model.isTotal = NO; - model.isCustomCount = NO; - return model; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/YUMIWeekSatelliteRateConsumerMatrix.h b/YuMi/Modules/YMRoom/View/SendGiftView/Model/YUMIWeekSatelliteRateConsumerMatrix.h deleted file mode 100644 index a5a587de..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Model/YUMIWeekSatelliteRateConsumerMatrix.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMCharmRankUserModel.h -// YUMI -// -// Created by YUMI on 2022/5/7. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIWeekSatelliteRateConsumerMatrix : NSObject - -@property (nonatomic, copy) NSString *avatar; -@property (nonatomic, assign) NSInteger amount; -@property (nonatomic, assign) NSInteger uid; -@property (nonatomic, assign) NSInteger erbanNo; -@property (nonatomic, copy) NSString *nick; -@property (nonatomic, assign) NSInteger giftId; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/YUMIWeekSatelliteRateConsumerMatrix.m b/YuMi/Modules/YMRoom/View/SendGiftView/Model/YUMIWeekSatelliteRateConsumerMatrix.m deleted file mode 100644 index 5ac06dc3..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Model/YUMIWeekSatelliteRateConsumerMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMCharmRankUserModel.m -// YUMI -// -// Created by YUMI on 2022/5/7. -// - -#import "YUMIWeekSatelliteRateConsumerMatrix.h" - -@implementation YUMIWeekSatelliteRateConsumerMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Presenter/XPGiftPresenter.h b/YuMi/Modules/YMRoom/View/SendGiftView/Presenter/XPGiftPresenter.h new file mode 100644 index 00000000..77b04ee0 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Presenter/XPGiftPresenter.h @@ -0,0 +1,51 @@ +// +// YMGiftPresenter.h +// YUMI +// +// Created by YUMI on 2021/11/9. +// + +#import "BaseMvpPresenter.h" +#import "GiftInfoModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPGiftPresenter : BaseMvpPresenter +/// 获取用户信息 +/// @param uid 查询的用户的uid +- (void)getUserInfo:(NSString *)uid; +/// 获取用户钱包信息 +- (void)getUserWallInfo; +/// 获取普通的礼物 +/// @param roomUid 房主的uid 获取房间专属礼物 +- (void)getNormalGiftList:(NSString *)roomUid; +/// 获取背包礼物 +- (void)getPackGiftList; +/// 送礼物 +/// @param targetUids 送礼物的人 +/// @param giftNum 礼物的个数 +/// @param sendType 送的类型 +/// @param giftId 送礼物的id +/// @param giftSource 送礼物的来源 +/// @param giftType 礼物的类型 +/// @param roomSendType 赠送的类型 +/// @param roomUid 房主的uid +/// @param msg 喊话的内容 +- (void)sendGift:(NSString *)targetUids + giftNum:(NSString *)giftNum + sendType:(GiftSendType)sendType + giftId:(NSString *)giftId + giftSource:(GiftSourceType)giftSource + giftType:(GiftType)giftType + roomSendType:(RoomSendGiftType)roomSendType + roomUid:(NSString *)roomUid + msg:(NSString *)msg; + + +///全服福袋记录记录 +- (void)luckyGiftBroadcastRecord; + +///星座礼物 +- (void)getTwelveStarLastRankFirst:(NSString *)roomUid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Presenter/XPGiftPresenter.m b/YuMi/Modules/YMRoom/View/SendGiftView/Presenter/XPGiftPresenter.m new file mode 100644 index 00000000..3fe4d73f --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Presenter/XPGiftPresenter.m @@ -0,0 +1,160 @@ +// +// YMGiftPresenter.m +// YUMI +// +// Created by YUMI on 2021/11/9. +// + +#import "XPGiftPresenter.h" +///Tool +#import "AccountInfoStorage.h" +#import "XPGiftStorage.h" +#import "Api+Gift.h" +#import "XNDJTDDLoadingTool.h" +///Model +#import "WalletInfoModel.h" +#import "GiftReceiveInfoModel.h" +#import "UserInfoModel.h" +#import "GiftLuckyBroadcastModel.h" +#import "GiftTwelveStarFirstModel.h" +///P +#import "XPGiftProtocol.h" + +@interface XPGiftPresenter () +/// +@property (nonatomic,weak) id view; +@end + +@implementation XPGiftPresenter +/// 获取用户信息 +/// @param uid 查询的用户的uid +- (void)getUserInfo:(NSString *)uid { + if (uid == nil) { + return; + } + [Api getUserInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + UserInfoModel * infoModel = [UserInfoModel modelWithDictionary:data.data]; + [[self getView] onGetUserInfoSuccess:infoModel]; + }] uid:uid]; +} + +/// 获取用户钱包信息 +- (void)getUserWallInfo { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + [Api getUserWalletInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + WalletInfoModel * model = [WalletInfoModel modelWithDictionary:data.data]; + [[self getView] getUserWalletInfo:model]; + }] uid:uid ticket:ticket]; +} + + +/// 获取普通的礼物 +/// @param roomUid 房主的uid 获取房间专属礼物 +- (void)getNormalGiftList:(NSString *)roomUid { + ///先不请求接口 从缓存中获取 + NSArray * arrary = [[XPGiftStorage shareStorage] getGiftDatasource:roomUid]; + if (arrary.count > 0) { + [[self getView] getNormalGiftListSuccess:arrary]; + } + + [Api requestNormalGiftList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray *luckyBagGift = [GiftInfoModel modelsWithArray:data.data[@"luckyBagGift"]]; // 福袋礼物 + NSArray *vipGift = [GiftInfoModel modelsWithArray:data.data[@"vipGift"]]; // 贵族礼物 + NSArray *luckyPoolGift = [GiftInfoModel modelsWithArray:data.data[@"luckyPoolGift"]];// 福袋奖池礼物 + NSArray *normalGift = [GiftInfoModel modelsWithArray:data.data[@"normalGift"]]; // 普通面板礼物 + NSArray *weekStarGift = [GiftInfoModel modelsWithArray:data.data[@"weekStarGift"]]; // 周星礼物 + NSArray *drawGift = [GiftInfoModel modelsWithArray:data.data[@"drawGift"]]; // 涂鸦礼物 + NSArray *penaltyGift = [GiftInfoModel modelsWithArray:data.data[@"penaltyGift"]]; // 惩罚礼物 + NSArray *anchorGift = [GiftInfoModel modelsWithArray:data.data[@"singlePopularGift"]]; // 个播礼物 + NSMutableArray *info = [NSMutableArray array]; + NSMutableArray *totalInfo = [NSMutableArray array]; + [info addObjectsFromArray:luckyBagGift]; + [info addObjectsFromArray:vipGift]; + [info addObjectsFromArray:normalGift]; + [info addObjectsFromArray:weekStarGift]; + [info addObjectsFromArray:drawGift]; + [info addObjectsFromArray:anchorGift]; + [info addObjectsFromArray:penaltyGift]; + [totalInfo addObjectsFromArray:info]; + [totalInfo addObjectsFromArray:luckyPoolGift]; + ///把礼物信息保存一下 + [[XPGiftStorage shareStorage] saveGiftDatasource:info roomUid:roomUid]; + [[XPGiftStorage shareStorage] writeGiftToDirectory:totalInfo]; + [[self getView] getNormalGiftListSuccess:info]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getNormalGiftListFail:msg]; + }] roomUid:roomUid]; +} + + +/// 获取背包礼物 +- (void)getPackGiftList { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + [Api requestPackGiftList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * info = [GiftInfoModel modelsWithArray:data.data]; + [[self getView] getPacketGiftListSuccess:info]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] getPacketGiftListFail:msg]; + }] uid:uid ticket:ticket]; +} + + +/// 送礼物 +/// @param targetUids 送礼物的人 +/// @param giftNum 礼物的个数 +/// @param sendType 送的类型 +/// @param giftId 送礼物的id +/// @param giftSource 送礼物的来源 +/// @param giftType 礼物的类型 +/// @param roomSendType 赠送的类型 +/// @param roomUid 房主的uid +/// @param msg 喊话的内容 +- (void)sendGift:(NSString *)targetUids + giftNum:(NSString *)giftNum + sendType:(GiftSendType)sendType + giftId:(NSString *)giftId + giftSource:(GiftSourceType)giftSource + giftType:(GiftType)giftType + roomSendType:(RoomSendGiftType)roomSendType + roomUid:(NSString *)roomUid + msg:(NSString *)msg + { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * giftSourceStr = [NSString stringWithFormat:@"%ld", giftSource]; + NSString * giftTypeStr = [NSString stringWithFormat:@"%ld", giftType]; + NSString * giftSendTypeStr = [NSString stringWithFormat:@"%ld", sendType]; + if (roomUid.length <=0) { + roomUid = @""; + } + [Api requestSendGift:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + GiftReceiveInfoModel *receive = [GiftReceiveInfoModel modelWithJSON:data.data]; + receive.sourceType = giftSource; + receive.roomSendGiftType = roomSendType; + NSArray * array = [targetUids componentsSeparatedByString:@","]; + [self.getView sendGiftSuccess:receive originDic:data.data uidCount:array.count]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] sendGiftFailWithCode:code msg:msg]; + }] targetUids:targetUids giftNum:giftNum sendType:giftSendTypeStr giftId:giftId giftSource:giftSourceStr giftType:giftTypeStr roomUid:roomUid msg:msg uid:uid]; +} + +///全服福袋记录记录 +- (void)luckyGiftBroadcastRecord { + [Api requestLuckGiftServerBagRecord:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [GiftLuckyBroadcastModel modelsWithArray:data.data]; + [[self getView] luckyGiftBroadcastRecordSuccess:array]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + NSLog(@"%@",msg); + }]]; +} + +///获取十二星座礼物banner +- (void)getTwelveStarLastRankFirst:(NSString *)roomUid { + [Api requestTwelveStarFirst:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + GiftTwelveStarFirstModel * model = [GiftTwelveStarFirstModel modelWithDictionary:data.data]; + [[self getView] getTwelveStarLastRankFirstSuccess:model]; + }] roomUid:roomUid]; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Presenter/XPGiftStorage.h b/YuMi/Modules/YMRoom/View/SendGiftView/Presenter/XPGiftStorage.h new file mode 100644 index 00000000..33d4b69b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Presenter/XPGiftStorage.h @@ -0,0 +1,35 @@ +// +// YMGiftStorage.h +// YUMI +// +// Created by YUMI on 2021/11/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class GiftInfoModel; +@interface XPGiftStorage : NSObject ++ (instancetype)shareStorage; +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)copy NS_UNAVAILABLE; +- (instancetype)mutableCopy NS_UNAVAILABLE; + +- (NSArray *)getGiftDatasource:(NSString *)roomuid; + +- (void)saveGiftDatasource:(NSArray *)giftArray roomUid:(NSString *)roomUid; + +/** + 这个不是最好的获取方式 可能由于没有房间uid 导致获取失败 + 目前用在公屏获取礼物 因为公屏的架构 传入一个房间id 的话 改动太大 先这样用着吧 + */ +/// 获取当前房间的数据中的礼物 +/// @param giftId 礼物的id +- (GiftInfoModel *)findGiftInfo:(NSString *)giftId; + +///礼物数据写入本地 +- (void)writeGiftToDirectory:(NSArray *)array; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Presenter/XPGiftStorage.m b/YuMi/Modules/YMRoom/View/SendGiftView/Presenter/XPGiftStorage.m new file mode 100644 index 00000000..61f4d12b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Presenter/XPGiftStorage.m @@ -0,0 +1,124 @@ +// +// YMGiftStorage.m +// YUMI +// +// Created by YUMI on 2021/11/17. +// + +#import "XPGiftStorage.h" +#import "GiftInfoModel.h" +#import "NSObject+MJExtension.h" +#import "NSArray+Safe.h" +@interface XPGiftStorage () +///key:房间id value:房间对应的礼物列表 +@property (nonatomic, strong) NSCache *> *roomGiftCache; +///当前房间的uid +@property (nonatomic,copy) NSString *currentRoomUid; +/// +@property (nonatomic,assign) BOOL isWriteToFile; +@end + +@implementation XPGiftStorage + ++ (instancetype)shareStorage { + static dispatch_once_t onceToken; + static XPGiftStorage * storage; + dispatch_once(&onceToken, ^{ + storage = [[XPGiftStorage alloc] init]; + }); + return storage; +} + + +- (void)saveGiftDatasource:(NSArray *)giftArray roomUid:(NSString *)roomUid { + if (giftArray.count > 0 && roomUid.length > 0) { + [self.roomGiftCache setObject:giftArray forKey:roomUid]; + } +} + +- (NSArray *)getGiftDatasource:(NSString *)roomuid { + if (roomuid.length > 0) { + self.currentRoomUid = roomuid; + NSArray *giftLists = [self.roomGiftCache objectForKey:roomuid]; + if (giftLists.count >= 0) { + return giftLists; + } + } + return nil; +} + +/// 获取当前房间的数据中的礼物 +/// @param giftId 礼物的id +- (GiftInfoModel *)findGiftInfo:(NSString *)giftId { + GiftInfoModel * giftInfo = [self getGiftInfoFromDirectory:giftId]; + if (giftInfo) { + return giftInfo; + } + + if (self.currentRoomUid) { + NSArray *giftLists = [self.roomGiftCache objectForKey:self.currentRoomUid]; + if (giftLists.count > 0) { + __block GiftInfoModel * giftInfo; + [giftLists enumerateObjectsUsingBlock:^(GiftInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.giftId == giftId.integerValue) { + giftInfo = obj; + *stop = YES; + } + }]; + return giftInfo; + } + } + return nil; +} + + +- (NSCache *> *)roomGiftCache { + if (!_roomGiftCache) { + _roomGiftCache = [[NSCache alloc] init]; + // 设置缓存数据的数目 + _roomGiftCache.countLimit = 10; + } + return _roomGiftCache; +} + +- (void)writeGiftToDirectory:(NSArray *)array { + ///因为不想每次都要大量的IO操作 就保存一份吧 + if (self.isWriteToFile) { + return; + } + NSString * path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject; + NSString * giftDirPath = [path stringByAppendingPathComponent:@"Gift"]; + //判断有没有文件夹 + BOOL isDir =NO; + NSFileManager *fileManager = [NSFileManager defaultManager]; + BOOL existed = [fileManager fileExistsAtPath:giftDirPath isDirectory:&isDir]; + if ( !(isDir ==YES && existed == YES) ){ + //如果没有文件夹则创建 + [fileManager createDirectoryAtPath:giftDirPath withIntermediateDirectories:YES attributes:nil error:nil]; + } + for (int i = 0; i< array.count; i++) { + GiftInfoModel * giftInfoModel = [array safeObjectAtIndex1:i]; + NSString *giftPath = [giftDirPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%ld", giftInfoModel.giftId]]; + [NSKeyedArchiver archiveRootObject:giftInfoModel.model2dictionary toFile:giftPath]; + } + self.isWriteToFile = YES; +} + +- (GiftInfoModel *)getGiftInfoFromDirectory:(NSString *)giftId { + //找到相应的目录 + NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; + NSString *pathFile = [path stringByAppendingPathComponent:@"Gift"]; + //判断有没有文件夹 + BOOL isDir =NO; + NSFileManager *fileManager = [NSFileManager defaultManager]; + BOOL existed = [fileManager fileExistsAtPath:pathFile isDirectory:&isDir]; + GiftInfoModel * giftInfo; + if (existed) { + NSString *aPath = [pathFile stringByAppendingPathComponent:giftId]; + NSDictionary * dic = [NSKeyedUnarchiver unarchiveObjectWithFile:aPath]; + giftInfo = [GiftInfoModel modelWithDictionary:dic]; + } + return giftInfo; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Presenter/YUMIPresentExternalizer.h b/YuMi/Modules/YMRoom/View/SendGiftView/Presenter/YUMIPresentExternalizer.h deleted file mode 100644 index 1704d9ae..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Presenter/YUMIPresentExternalizer.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// YMGiftPresenter.h -// YUMI -// -// Created by YUMI on 2021/11/9. -// - -#import "BaseMvpExternalizer.h" -#import "PresentAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIPresentExternalizer : BaseMvpExternalizer -- (void)getUserInfo:(NSString *)uid; -- (void)acquireConsumerRampartowardsAbstract; -- (void)acquireOrdinaryPresentSttowardsement:(NSString *)roomUid; -- (void)acquireImpactPresentSttowardsement; -- (void)prohibitichargePresent:(NSString *)targetUids - giftNum:(NSString *)giftNum - sendType:(PresentDischargeGenre)sendType - giftId:(NSString *)giftId - giftSource:(PresentSourceGenre)giftSource - giftType:(PresentGenre)giftType - roomSendType:(ChamberDischargePresentGenre)roomSendType - roomUid:(NSString *)roomUid - msg:(NSString *)msg; - - -- (void)fortuntowardsePresentBroadcastReflection; - -- (void)acquireDuodenaryStowardselliteRecentRtowardseThreshold:(NSString *)roomUid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Presenter/YUMIPresentExternalizer.m b/YuMi/Modules/YMRoom/View/SendGiftView/Presenter/YUMIPresentExternalizer.m deleted file mode 100644 index be865bde..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Presenter/YUMIPresentExternalizer.m +++ /dev/null @@ -1,136 +0,0 @@ -// -// YMGiftPresenter.m -// YUMI -// -// Created by YUMI on 2021/11/9. -// - -#import "YUMIPresentExternalizer.h" -#import "AccountAbstractStorage.h" -#import "YUMIPresentStorage.h" -#import "Api+Gift.h" -#import "XNDJTBWGLoadingTool.h" -#import "RamparatetAbstractMatrix.h" -#import "PresentAchieveAbstractMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "PresentFortunatePingbackMatrix.h" -#import "PresentTwelveSatelliteThresholdMatrix.h" -#import "FBCPresentCeremony.h" - -@interface YUMIPresentExternalizer () -@property (nonatomic,weak) id view; -@end - -@implementation YUMIPresentExternalizer -- (void)getUserInfo:(NSString *)uid { - if (uid == nil) { - return; - } - [Api getUserInfo:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ConsumerAbstractMatrix * infoMatrix = [ConsumerAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] dwellEarnConsumerAbstractAccomplishment:infoMatrix]; - }] uid:uid]; -} - -- (void)acquireConsumerRampartowardsAbstract { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - [Api acquireConsumerPocketbookAbstract:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - RamparatetAbstractMatrix * model = [RamparatetAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireConsumerPocketbookAbstract:model]; - }] uid:uid ticket:ticket]; -} - - -- (void)acquireOrdinaryPresentSttowardsement:(NSString *)roomUid { - - NSArray * arrary = [[YUMIPresentStorage partowardsiciptowardsionStorage] acquirePresentTowardsoloudspeakersource:roomUid]; - if (arrary.count > 0) { - [[self acquireRegard] acquireOrdinaryPresentSttowardsementAccomplishment:arrary]; - } - - [Api requisitionOrdinaryPresentSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray *luckyBagGift = [PresentAbstractMatrix mtowardsrixsAboutGarment:data.data[@"luckyBagGift"]]; - NSArray *vipGift = [PresentAbstractMatrix mtowardsrixsAboutGarment:data.data[@"vipGift"]]; - NSArray *luckyPoolGift = [PresentAbstractMatrix mtowardsrixsAboutGarment:data.data[@"luckyPoolGift"]]; - NSArray *normalGift = [PresentAbstractMatrix mtowardsrixsAboutGarment:data.data[@"normalGift"]]; - NSArray *weekStarGift = [PresentAbstractMatrix mtowardsrixsAboutGarment:data.data[@"weekStarGift"]]; - NSArray *drawGift = [PresentAbstractMatrix mtowardsrixsAboutGarment:data.data[@"drawGift"]]; - NSArray *penaltyGift = [PresentAbstractMatrix mtowardsrixsAboutGarment:data.data[@"penaltyGift"]]; - NSArray *anchorGift = [PresentAbstractMatrix mtowardsrixsAboutGarment:data.data[@"singlePopularGift"]]; - NSMutableArray *info = [NSMutableArray array]; - NSMutableArray *totalInfo = [NSMutableArray array]; - [info addObjectsFromArray:luckyBagGift]; - [info addObjectsFromArray:vipGift]; - [info addObjectsFromArray:normalGift]; - [info addObjectsFromArray:weekStarGift]; - [info addObjectsFromArray:drawGift]; - [info addObjectsFromArray:anchorGift]; - [info addObjectsFromArray:penaltyGift]; - [totalInfo addObjectsFromArray:info]; - [totalInfo addObjectsFromArray:luckyPoolGift]; - - [[YUMIPresentStorage partowardsiciptowardsionStorage] preservePresentTowardsoloudspeakersource:info roomUid:roomUid]; - [[YUMIPresentStorage partowardsiciptowardsionStorage] writePresentToDirectoryvisory:totalInfo]; - [[self acquireRegard] acquireOrdinaryPresentSttowardsementAccomplishment:info]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireOrdinaryPresentSttowardsementFlunk:msg]; - }] roomUid:roomUid]; -} - - -- (void)acquireImpactPresentSttowardsement { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - [Api requisitionImpactPresentSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * info = [PresentAbstractMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireShetowardshePresentSttowardsementAccomplishment:info]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] acquireShetowardshePresentSttowardsementFlunk:msg]; - }] uid:uid ticket:ticket]; -} - - -- (void)prohibitichargePresent:(NSString *)targetUids - giftNum:(NSString *)giftNum - sendType:(PresentDischargeGenre)sendType - giftId:(NSString *)giftId - giftSource:(PresentSourceGenre)giftSource - giftType:(PresentGenre)giftType - roomSendType:(ChamberDischargePresentGenre)roomSendType - roomUid:(NSString *)roomUid - msg:(NSString *)msg - { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * giftSourceStr = [NSString stringWithFormat:@"%ld", giftSource]; - NSString * giftTypeStr = [NSString stringWithFormat:@"%ld", giftType]; - NSString * giftSendTypeStr = [NSString stringWithFormat:@"%ld", sendType]; - if (roomUid.length <=0) { - roomUid = @""; - } - [Api requisitionDischargePresent:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - PresentAchieveAbstractMatrix *receive = [PresentAchieveAbstractMatrix mtowardsrixAboutJSON:data.data]; - receive.sourceType = giftSource; - receive.roomSendGiftType = roomSendType; - NSArray * array = [targetUids componentsSeparatedByString:@","]; - [self.acquireRegard prohibitichargePresentAccomplishment:receive originDic:data.data uidCount:array.count]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] prohibitichargePresentFlunkAboutCryptogram:code msg:msg]; - }] targetUids:targetUids giftNum:giftNum sendType:giftSendTypeStr giftId:giftId giftSource:giftSourceStr giftType:giftTypeStr roomUid:roomUid msg:msg uid:uid]; -} - -- (void)fortuntowardsePresentBroadcastReflection { - [Api requisitionLuckPresentWeeblogicBagReflection:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [PresentFortunatePingbackMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] fortuntowardsePresentBroadcastReflectionAccomplishment:array]; - }]]; -} - -- (void)acquireDuodenaryStowardselliteRecentRtowardseThreshold:(NSString *)roomUid { - [Api requisitionDuodenaryStowardselliteThreshold:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - PresentTwelveSatelliteThresholdMatrix * model = [PresentTwelveSatelliteThresholdMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireDuodenaryStowardselliteRecentRtowardseThresholdAccomplishment:model]; - }] roomUid:roomUid]; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Presenter/YUMIPresentStorage.h b/YuMi/Modules/YMRoom/View/SendGiftView/Presenter/YUMIPresentStorage.h deleted file mode 100644 index 8dd6871b..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Presenter/YUMIPresentStorage.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// YMGiftStorage.h -// YUMI -// -// Created by YUMI on 2021/11/17. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class PresentAbstractMatrix; -@interface YUMIPresentStorage : NSObject -+ (instancetype)partowardsiciptowardsionStorage; -- (instancetype)init NS_UNAVAILABLE; -- (instancetype)copy NS_UNAVAILABLE; -- (instancetype)mutableCopy NS_UNAVAILABLE; - -- (NSArray *)acquirePresentTowardsoloudspeakersource:(NSString *)roomuid; - -- (void)preservePresentTowardsoloudspeakersource:(NSArray *)presentGarment roomUid:(NSString *)roomUid; - - -- (PresentAbstractMatrix *)prohibiticoveryPresentAbstract:(NSString *)giftId; - -- (void)writePresentToDirectoryvisory:(NSArray *)array; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Presenter/YUMIPresentStorage.m b/YuMi/Modules/YMRoom/View/SendGiftView/Presenter/YUMIPresentStorage.m deleted file mode 100644 index 0ed93491..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Presenter/YUMIPresentStorage.m +++ /dev/null @@ -1,119 +0,0 @@ -// -// YMGiftStorage.m -// YUMI -// -// Created by YUMI on 2021/11/17. -// - -#import "YUMIPresentStorage.h" -#import "PresentAbstractMatrix.h" -#import "NSObject+MJExtension.h" -#import "NSArray+Safe.h" -@interface YUMIPresentStorage () -@property (nonatomic, strong) NSCache *> *chamberPresentConceal; -@property (nonatomic,copy) NSString *universalChamberCid; -@property (nonatomic,assign) BOOL isWriteToAccurate; -@end - -@implementation YUMIPresentStorage - -+ (instancetype)partowardsiciptowardsionStorage { - static dispatch_once_t onceToken; - static YUMIPresentStorage * storage; - dispatch_once(&onceToken, ^{ - storage = [[YUMIPresentStorage alloc] init]; - }); - return storage; -} - - -- (void)preservePresentTowardsoloudspeakersource:(NSArray *)presentGarment roomUid:(NSString *)roomUid { - if (presentGarment.count > 0 && roomUid.length > 0) { - [self.chamberPresentConceal setObject:presentGarment forKey:roomUid]; - } -} - -- (NSArray *)acquirePresentTowardsoloudspeakersource:(NSString *)roomuid { - if (roomuid.length > 0) { - self.universalChamberCid = roomuid; - NSArray *giftLists = [self.chamberPresentConceal objectForKey:roomuid]; - if (giftLists.count >= 0) { - return giftLists; - } - } - return nil; -} - -- (PresentAbstractMatrix *)prohibiticoveryPresentAbstract:(NSString *)giftId { - PresentAbstractMatrix * giftInfo = [self acquirePresentAbstractByvirtueofDirectoryvisory:giftId]; - if (giftInfo) { - return giftInfo; - } - - if (self.universalChamberCid) { - NSArray *giftLists = [self.chamberPresentConceal objectForKey:self.universalChamberCid]; - if (giftLists.count > 0) { - __block PresentAbstractMatrix * giftInfo; - [giftLists enumerateObjectsUsingBlock:^(PresentAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.giftId == giftId.integerValue) { - giftInfo = obj; - *stop = YES; - } - }]; - return giftInfo; - } - } - return nil; -} - - -- (NSCache *> *)chamberPresentConceal { - if (!_chamberPresentConceal) { - _chamberPresentConceal = [[NSCache alloc] init]; - - _chamberPresentConceal.countLimit = 10; - } - return _chamberPresentConceal; -} - -- (void)writePresentToDirectoryvisory:(NSArray *)array { - - if (self.isWriteToAccurate) { - return; - } - NSString * path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject; - NSString * giftDirPath = [path stringByAppendingPathComponent:@"Gift"]; - - BOOL isDir =NO; - NSFileManager *fileManager = [NSFileManager defaultManager]; - BOOL existed = [fileManager fileExistsAtPath:giftDirPath isDirectory:&isDir]; - if ( !(isDir ==YES && existed == YES) ){ - - [fileManager createDirectoryAtPath:giftDirPath withIntermediateDirectories:YES attributes:nil error:nil]; - } - for (int i = 0; i< array.count; i++) { - PresentAbstractMatrix * giftInfoModel = [array secureGroalTowardsIndictowardsrix1:i]; - NSString *giftPath = [giftDirPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%ld", giftInfoModel.giftId]]; - [NSKeyedArchiver archiveRootObject:giftInfoModel.mtowardsrix2dictionary toFile:giftPath]; - } - self.isWriteToAccurate = YES; -} - -- (PresentAbstractMatrix *)acquirePresentAbstractByvirtueofDirectoryvisory:(NSString *)giftId { - - NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; - NSString *pathFile = [path stringByAppendingPathComponent:@"Gift"]; - - BOOL isDir =NO; - NSFileManager *fileManager = [NSFileManager defaultManager]; - BOOL existed = [fileManager fileExistsAtPath:pathFile isDirectory:&isDir]; - PresentAbstractMatrix * giftInfo; - if (existed) { - NSString *aPath = [pathFile stringByAppendingPathComponent:giftId]; - NSDictionary * dic = [NSKeyedUnarchiver unarchiveObjectWithFile:aPath]; - giftInfo = [PresentAbstractMatrix mtowardsrixAboutImpactbasket:dic]; - } - return giftInfo; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Protocol/FBCPresentCeremony.h b/YuMi/Modules/YMRoom/View/SendGiftView/Protocol/FBCPresentCeremony.h deleted file mode 100644 index 063d6bc5..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Protocol/FBCPresentCeremony.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// YMGiftProtocol.h -// YUMI -// -// Created by YUMI on 2021/11/9. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class RamparatetAbstractMatrix, PresentAbstractMatrix, PresentAchieveAbstractMatrix, ConsumerAbstractMatrix, PresentTwelveSatelliteThresholdMatrix; -@protocol FBCPresentCeremony -- (void)dwellEarnConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo; -- (void)acquireConsumerPocketbookAbstract:(RamparatetAbstractMatrix *)balanceInfo; -- (void)acquireOrdinaryPresentSttowardsementAccomplishment:(NSArray *)giftList; -- (void)acquireOrdinaryPresentSttowardsementFlunk:(NSString *)message; -- (void)acquireShetowardshePresentSttowardsementAccomplishment:(NSArray *)giftList; -- (void)acquireShetowardshePresentSttowardsementFlunk:(NSString *)message; -- (void)prohibitichargePresentAccomplishment:(PresentAchieveAbstractMatrix *)receiveInfo originDic:(NSDictionary *)originDic uidCount:(NSInteger)uidCount; -- (void)prohibitichargePresentFlunkAboutCryptogram:(NSInteger)code msg:(NSString *)msg; - -- (void)fortuntowardsePresentBroadcastReflectionAccomplishment:(NSArray *)records; - -- (void)acquireDuodenaryStowardselliteRecentRtowardseThresholdAccomplishment:(PresentTwelveSatelliteThresholdMatrix *)model; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Protocol/XPGiftProtocol.h b/YuMi/Modules/YMRoom/View/SendGiftView/Protocol/XPGiftProtocol.h new file mode 100644 index 00000000..a5f29bce --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Protocol/XPGiftProtocol.h @@ -0,0 +1,38 @@ +// +// YMGiftProtocol.h +// YUMI +// +// Created by YUMI on 2021/11/9. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class WalletInfoModel, GiftInfoModel, GiftReceiveInfoModel, UserInfoModel, GiftTwelveStarFirstModel; +@protocol XPGiftProtocol +///获取用户信息成功 +- (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo; +///获取用户钱包信息成功 +- (void)getUserWalletInfo:(WalletInfoModel *)balanceInfo; +///获取普通礼物列表 +- (void)getNormalGiftListSuccess:(NSArray *)giftList; +///获取普通礼物列表失败 +- (void)getNormalGiftListFail:(NSString *)message; +///获取背包礼物列表 +- (void)getPacketGiftListSuccess:(NSArray *)giftList; +///获取背包礼物列表失败 +- (void)getPacketGiftListFail:(NSString *)message; +///送礼物成功 +- (void)sendGiftSuccess:(GiftReceiveInfoModel *)receiveInfo originDic:(NSDictionary *)originDic uidCount:(NSInteger)uidCount; +///送礼物失败 +- (void)sendGiftFailWithCode:(NSInteger)code msg:(NSString *)msg; + +///获取全服福袋礼物记录 +- (void)luckyGiftBroadcastRecordSuccess:(NSArray *)records; + +///获取周星礼物成功 +- (void)getTwelveStarLastRankFirstSuccess:(GiftTwelveStarFirstModel *)model; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/ThemeColor+SendGift.h b/YuMi/Modules/YMRoom/View/SendGiftView/ThemeColor+SendGift.h index 1a56f59e..727d2dbd 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/ThemeColor+SendGift.h +++ b/YuMi/Modules/YMRoom/View/SendGiftView/ThemeColor+SendGift.h @@ -1,5 +1,5 @@ // -// ThemeColor+SendGift.h +// ThemeColorSendGift.h // YUMI // // Created by YUMI on 2021/11/9. @@ -10,19 +10,32 @@ NS_ASSUME_NONNULL_BEGIN @interface DJDKMIMOMColor (SendGift) -+ (UIColor *)intelligenceportraitCoverPrettify; -+ (UIColor *)presentReindictPrettify; -+ (UIColor *)presentEncourageGroundPrettify; -+ (UIColor *)presentBalancePrettify; -+ (UIColor *)presentPeriodIndictowardsorPrettify; -+ (UIColor *)presentMaintainortionOrdinaryChampionPrettify; -+ (UIColor *)presentMaintainortionChosenChampionPrettify; -+ (UIColor *)presentConstituteChosenPrettify; -+ (UIColor *)presentValencyChosenPrettify; -+ (UIColor *)presentValencyOrdinaryPrettify; -+ (UIColor *)presentChosenBackgroundPrettify; -+ (UIColor *)presentDisportPreadominantPrettify; -+ (UIColor *)presentComputtowardsionChampionPrettify; +/// 没有选择送礼物的人的头像 UIColorRGBAlpha(0x000000, 0.3) ++ (UIColor *)avatarCoverColor; +/// 送礼物 充值 0xFFB606 ++ (UIColor *)giftRechargeColor; +/// 礼物主背景色 #0B0B0D ++ (UIColor *)giftBackGroundColor; +///钱包余额信息 0xffffff 0.5 ++ (UIColor *)giftBalanceColor; +/// 送礼物 分页指示器的颜色 ++ (UIColor *)giftPageIndicatorColor; +/// 分段控制器文字默认的颜色 #FFFFFF ++ (UIColor *)giftSegmentNormalTitleColor; +/// 分段控制器文字选中的颜色 #5FCCE4 ++ (UIColor *)giftSegmentSelectTitleColor; +/// 礼物选中的时候的颜色 0x5FCCE4 ++ (UIColor *)giftNameSelectColor; +/// 礼物选中的时候的颜色 0x5FCCE4 ++ (UIColor *)giftPriceSelectColor; +/// 礼物价格没有选中的时候的眼色ffffff ++ (UIColor *)giftPriceNormalColor; +/// 礼物选中的覆盖背景 (0x248CFE, 0.2) ++ (UIColor *)giftSelectBgColor; +///玩法规则的图片 7A797A ++ (UIColor *)giftPlayRuleColor; +///个数 FFFFFF ++ (UIColor *)giftCountTitleColor; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/ThemeColor+SendGift.m b/YuMi/Modules/YMRoom/View/SendGiftView/ThemeColor+SendGift.m index 257c7c47..1e78117a 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/ThemeColor+SendGift.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/ThemeColor+SendGift.m @@ -1,5 +1,5 @@ // -// ThemeColor+SendGift.m +// ThemeColorSendGift.m // YUMI // // Created by YUMI on 2021/11/9. @@ -9,48 +9,61 @@ @implementation DJDKMIMOMColor (SendGift) -+ (UIColor *)intelligenceportraitCoverPrettify { +/// 没有选择送礼物的人的头像 UIColorRGBAlpha(0x000000, 0.3) ++ (UIColor *)avatarCoverColor { return [UIColor colorWithWhite:0 alpha:0.3]; } -+ (UIColor *)presentReindictPrettify { +/// 送礼物 充值 0xFFB606 ++ (UIColor *)giftRechargeColor { return UIColorFromRGB(0xFFB606); } -+ (UIColor *)presentEncourageGroundPrettify { +/// 礼物主背景色 #0C0B0C ++ (UIColor *)giftBackGroundColor { return UIColorRGBAlpha(0x000000, 0.4); } -+ (UIColor *)presentBalancePrettify { +///钱包余额信息 0xffffff 0.5 ++ (UIColor *)giftBalanceColor { return UIColorRGBAlpha(0xFFFFFF, 0.35); } -+ (UIColor *)presentPeriodIndictowardsorPrettify { +/// 送礼物 分页指示器的颜色 ++ (UIColor *)giftPageIndicatorColor { return [UIColor whiteColor]; } -+ (UIColor *)presentMaintainortionOrdinaryChampionPrettify { +/// 分段控制器文字默认的颜色 #FFFFFF ++ (UIColor *)giftSegmentNormalTitleColor { return UIColorRGBAlpha(0xFFFFFF, 1); } -+ (UIColor *)presentMaintainortionChosenChampionPrettify { +/// 分段控制器文字选中的颜色 #5FCCE4 ++ (UIColor *)giftSegmentSelectTitleColor { return UIColorRGBAlpha(0x5FCCE4, 1); } -+ (UIColor *)presentConstituteChosenPrettify { +/// 礼物选中的时候的颜色 0x#5FCCE4 ++ (UIColor *)giftNameSelectColor { return UIColorFromRGB(0x5FCCE4); } -+ (UIColor *)presentValencyChosenPrettify { +/// 礼物选中的时候的颜色 0x5FCCE4 ++ (UIColor *)giftPriceSelectColor { return UIColorFromRGB(0x5FCCE4); } -+ (UIColor *)presentValencyOrdinaryPrettify { +/// 礼物价格没有选中的时候的眼色#ffffff ++ (UIColor *)giftPriceNormalColor { return UIColorRGBAlpha(0xffffff, 1);; } -+ (UIColor *)presentChosenBackgroundPrettify { +/// 礼物选中的覆盖背景 (0x248CFE, 0.2) ++ (UIColor *)giftSelectBgColor { return [UIColor clearColor]; } -+ (UIColor *)presentDisportPreadominantPrettify { +///玩法规则的图片 7A797A ++ (UIColor *)giftPlayRuleColor { return UIColorFromRGB(0x7A797A); } -+ (UIColor *)presentComputtowardsionChampionPrettify { +///玩法规则的图片 FFFFFF ++ (UIColor *)giftCountTitleColor { return UIColorFromRGB(0xFFFFFF); } diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftCollectionViewFlowLayout.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftCollectionViewFlowLayout.h new file mode 100644 index 00000000..3e7df0b9 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftCollectionViewFlowLayout.h @@ -0,0 +1,16 @@ +// +// YMGiftCollectionViewFlowLayout.h +// YUMI +// +// Created by YUMI on 2021/11/12. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPGiftCollectionViewFlowLayout : UICollectionViewFlowLayout + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftCollectionViewFlowLayout.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftCollectionViewFlowLayout.m new file mode 100644 index 00000000..779de4c4 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftCollectionViewFlowLayout.m @@ -0,0 +1,151 @@ +// +// YMGiftCollectionViewFlowLayout.m +// YUMI +// +// Created by YUMI on 2021/11/12. +// + +#import "XPGiftCollectionViewFlowLayout.h" + +@interface XPGiftCollectionViewFlowLayout () +@property (nonatomic, copy) NSMutableDictionary *sectionDic; +@property (nonatomic, strong) NSMutableArray *allAttributes; +@end + +@implementation XPGiftCollectionViewFlowLayout +#pragma mark - life cycle +- (instancetype)init { + self = [super init]; + if (self) { + self.scrollDirection = UICollectionViewScrollDirectionHorizontal; + } + return self; +} + +#pragma mark - overload + +- (void)prepareLayout { + + [super prepareLayout]; + + _sectionDic = [NSMutableDictionary dictionary]; + self.allAttributes = [NSMutableArray array]; + //获取section的数量 + NSUInteger section = [self.collectionView numberOfSections]; + + for (int sec = 0; sec < section; sec++) { + //获取每个section的cell个数 + NSUInteger count = [self.collectionView numberOfItemsInSection:sec]; + + for (NSUInteger item = 0; item *)layoutAttributesForElementsInRect:(CGRect)rect { + + return self.allAttributes; +} + +#pragma mark - private method + +- (void)applyLayoutAttributes:(UICollectionViewLayoutAttributes *)attributes { + + if(attributes.representedElementKind != nil){ + return; + } + CGFloat minLine = self.minimumLineSpacing; + CGFloat minSpacing = self.minimumInteritemSpacing; + + //attributes 的宽度 + CGFloat itemW = attributes.frame.size.width; + //attributes 的高度 + CGFloat itemH = attributes.frame.size.height; + UIEdgeInsets sectionInsets = self.sectionInset; + //collectionView 的宽度 + CGFloat width = self.collectionView.frame.size.width; + //collectionView 的高度 + CGFloat height = self.collectionView.frame.size.height; + //每个attributes的下标值 从0开始 + NSInteger itemIndex = attributes.indexPath.item; + + CGFloat stride = (self.scrollDirection == UICollectionViewScrollDirectionHorizontal) ? width : height; + + + //获取现在的attributes是第几组 + NSInteger section = attributes.indexPath.section; + //获取每个section的item的个数 + NSInteger itemCount = [self.collectionView numberOfItemsInSection:section]; + + + CGFloat offset = section * stride; + + //计算x方向item个数 + NSInteger xCount = (width / itemW); + //计算y方向item个数 + NSInteger yCount = (height / itemH); + //计算一页总个数 + NSInteger allCount = (xCount * yCount); + //获取每个section的页数,从0开始 + NSInteger page = itemIndex / allCount; + + //余数,用来计算item的x的偏移量 + NSInteger remain = (itemIndex % xCount); + //取商,用来计算item的y的偏移量 + NSInteger merchant = (itemIndex-page*allCount)/xCount; + + + //x方向每个item的偏移量 + CGFloat xCellOffset = remain * (itemW + minLine)+ sectionInsets.left; + //y方向每个item的偏移量 + CGFloat yCellOffset = merchant * (itemH + minSpacing); + + //获取每个section中item占了几页 + NSInteger pageRe = (itemCount % allCount == 0)? (itemCount / allCount) : (itemCount / allCount) + 1; + //将每个section与pageRe对应,计算下面的位置 + [_sectionDic setValue:@(pageRe) forKey:[NSString stringWithFormat:@"%ld", section]]; + + if(self.scrollDirection == UICollectionViewScrollDirectionHorizontal) { + + NSInteger actualLo = 0; + //将每个section中的页数相加 + for (NSString *key in [_sectionDic allKeys]) { + actualLo += [_sectionDic[key] integerValue]; + } + //获取到的最后的数减去最后一组的页码数 + actualLo -= [_sectionDic[[NSString stringWithFormat:@"%ld", [_sectionDic allKeys].count-1]] integerValue]; + xCellOffset += page*width + actualLo*width; + + } else { + + yCellOffset += offset; + } + + attributes.frame = CGRectMake(xCellOffset, yCellOffset, itemW, itemH); +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftCountCollectionViewCell.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftCountCollectionViewCell.h new file mode 100644 index 00000000..f91a91a3 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftCountCollectionViewCell.h @@ -0,0 +1,17 @@ +// +// YMGiftCountCollectionViewCell.h +// YUMI +// +// Created by YUMI on 2021/11/11. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPGiftCountModel; +@interface XPGiftCountCollectionViewCell : UICollectionViewCell +/// +@property (nonatomic,strong) XPGiftCountModel *countModel; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftCountCollectionViewCell.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftCountCollectionViewCell.m new file mode 100644 index 00000000..33510784 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftCountCollectionViewCell.m @@ -0,0 +1,103 @@ +// +// YMGiftCountCollectionViewCell.m +// YUMI +// +// Created by YUMI on 2021/11/11. +// + +#import "XPGiftCountCollectionViewCell.h" +///Third +#import +///Tool +#import "ThemeColor+SendGift.h" +///Model +#import "XPGiftCountModel.h" + +@interface XPGiftCountCollectionViewCell () +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///显示礼物个数 +@property (nonatomic,strong) UILabel *countLabel; +///显示其他数额的箭头 +@property (nonatomic,strong) UIImageView *arrowImageView; +@end + +@implementation XPGiftCountCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.titleLabel]; + [self.contentView addSubview:self.countLabel]; + [self.contentView addSubview:self.arrowImageView]; +} + +- (void)initSubViewConstraints { + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(20); + make.centerY.mas_equalTo(self.contentView); + }]; + [self.countLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-20); + make.centerY.mas_equalTo(0); + make.left.mas_greaterThanOrEqualTo(self.titleLabel.mas_right).offset(5); + }]; + + [self.arrowImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-20); + make.centerY.mas_equalTo(0); + make.width.height.mas_equalTo(10); + }]; +} + +#pragma mark - Getters And Setters +- (void)setCountModel:(XPGiftCountModel *)countModel { + _countModel = countModel; + if (_countModel) { + self.titleLabel.text = _countModel.title; + self.countLabel.text = _countModel.giftNumber; + if (_countModel.isCustomCount) { + self.arrowImageView.hidden = NO; + } else { + self.arrowImageView.hidden = YES; + } + } +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:13]; + _titleLabel.textColor = [DJDKMIMOMColor giftCountTitleColor]; + } + return _titleLabel; +} + +- (UILabel *)countLabel { + if (!_countLabel) { + _countLabel = [[UILabel alloc] init]; + _countLabel.font = [UIFont systemFontOfSize:14]; + _countLabel.textColor = [DJDKMIMOMColor appMainColor]; + _countLabel.textAlignment = NSTextAlignmentRight; + } + return _countLabel; +} + +- (UIImageView *)arrowImageView { + if (!_arrowImageView) { + _arrowImageView = [[UIImageView alloc] init]; + _arrowImageView.image = [UIImage imageNamed:@"gift_bar_recharge_arrow"]; + _arrowImageView.hidden = YES; + } + return _arrowImageView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftEmptyCollectionViewCell.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftEmptyCollectionViewCell.h new file mode 100644 index 00000000..e8c3a687 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftEmptyCollectionViewCell.h @@ -0,0 +1,16 @@ +// +// YMGiftEmptyCollectionViewCell.h +// YUMI +// +// Created by YUMI on 2021/11/15. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPGiftEmptyCollectionViewCell : UICollectionViewCell +@property (nonatomic,copy) NSString *emptyTitle; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftEmptyCollectionViewCell.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftEmptyCollectionViewCell.m new file mode 100644 index 00000000..163794f7 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftEmptyCollectionViewCell.m @@ -0,0 +1,77 @@ +// +// YMGiftEmptyCollectionViewCell.m +// YUMI +// +// Created by YUMI on 2021/11/15. +// + +#import "XPGiftEmptyCollectionViewCell.h" +///Third +#import +///Tool +#import "ThemeColor+SendGift.h" + +@interface XPGiftEmptyCollectionViewCell () +@property (nonatomic,strong) UIImageView *logoImageView; +@property (nonatomic,strong) UILabel *emptyPackTip; +@end + +@implementation XPGiftEmptyCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.logoImageView]; + [self.contentView addSubview:self.emptyPackTip]; +} + +- (void)initSubViewConstraints { + [self.logoImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(40, 40)); + make.bottom.mas_equalTo(self.mas_centerY).offset(-3); + make.centerX.mas_equalTo(self); + }]; + + [self.emptyPackTip mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.mas_centerY).offset(3); + make.centerX.mas_equalTo(self); + }]; +} + +#pragma mark - Getters And Setters +- (void)setEmptyTitle:(NSString *)emptyTitle { + _emptyTitle = emptyTitle; + if (_emptyTitle.length > 0) { + self.emptyPackTip.text = _emptyTitle; + } +} + +- (UILabel *)emptyPackTip { + if (!_emptyPackTip) { + _emptyPackTip = [[UILabel alloc] init]; + _emptyPackTip.text = @"背包暂无内容~";; + _emptyPackTip.textColor = [DJDKMIMOMColor secondTextColor]; + _emptyPackTip.font = [UIFont systemFontOfSize:12]; + _emptyPackTip.textAlignment = NSTextAlignmentCenter; + } + return _emptyPackTip; +} + +- (UIImageView *)logoImageView { + if (!_logoImageView) { + _logoImageView = [[UIImageView alloc] init]; + _logoImageView.userInteractionEnabled = YES; + _logoImageView.image = [UIImage imageNamed:@"gift_info_empty_bg"]; + } + return _logoImageView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftItemCollectionViewCell.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftItemCollectionViewCell.h new file mode 100644 index 00000000..bceec32a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftItemCollectionViewCell.h @@ -0,0 +1,22 @@ +// +// YMGiftItemCollectionViewCell.h +// YUMI +// +// Created by YUMI on 2021/11/12. +// + +#import +#import "XPSendGiftView.h" +NS_ASSUME_NONNULL_BEGIN +@class GiftInfoModel; +@interface XPGiftItemCollectionViewCell : UICollectionViewCell +/// +@property (nonatomic,strong) GiftInfoModel *giftInfo; +///当前用户贵族等级 +@property (nonatomic, assign) NSInteger curUserNobleLevel; +///使用的地方 +@property (nonatomic,assign) SendGiftType usingplaceType; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftItemCollectionViewCell.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftItemCollectionViewCell.m new file mode 100644 index 00000000..78f1b82e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftItemCollectionViewCell.m @@ -0,0 +1,300 @@ +// +// YMGiftItemCollectionViewCell.m +// YUMI +// +// Created by YUMI on 2021/11/12. +// + +#import "XPGiftItemCollectionViewCell.h" +///Third +#import +///Tool +#import "ThemeColor+SendGift.h" +#import "NetImageView.h" +///Model +#import "GiftInfoModel.h" + +@interface XPGiftItemCollectionViewCell () +///礼物图片 +@property (nonatomic,strong) NetImageView *giftImageView; +///礼物名称 +@property (nonatomic,strong) UILabel *giftNameLabel; +/// +@property (nonatomic,strong) UIStackView *priceStackView; +///价格 +@property (nonatomic,strong) UILabel *priceLabel; +///💎 +@property (nonatomic,strong) UIImageView *logoImageView; +/// +@property (nonatomic,strong) UIStackView *tagStackView; +///新的 +@property (nonatomic,strong) UIImageView *giftNewImageView; +///特别的 +@property (nonatomic,strong) UIImageView *specialImageView; +///限定 +@property (nonatomic,strong) UIImageView *limitImageView; +///专属 +@property (nonatomic,strong) UIImageView *exclusiveImageView; +/// +@property (nonatomic,strong) UIView * coverView; +/// +@property (nonatomic,strong) UILabel *giftNumLabel; +///贵族icon +@property (nonatomic, strong) NetImageView *nobleIconImageView; +///贵族礼物锁 +@property (nonatomic, strong) UIImageView *lockImageView; + +@end + +@implementation XPGiftItemCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.tagStackView]; + [self.contentView addSubview:self.giftImageView]; + [self.contentView addSubview:self.giftNameLabel]; + [self.contentView addSubview:self.priceStackView]; + [self.contentView addSubview:self.coverView]; + [self.contentView addSubview:self.giftNumLabel]; + [self.contentView addSubview:self.nobleIconImageView]; + [self.contentView addSubview:self.lockImageView]; + + [self.tagStackView addArrangedSubview:self.exclusiveImageView]; + [self.tagStackView addArrangedSubview:self.giftNewImageView]; + [self.tagStackView addArrangedSubview:self.limitImageView]; + [self.tagStackView addArrangedSubview:self.specialImageView]; + + [self.priceStackView addArrangedSubview:self.priceLabel]; + [self.priceStackView addArrangedSubview:self.logoImageView]; + +} + +- (void)initSubViewConstraints { + [self.tagStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.top.mas_equalTo(self.contentView).inset(3); + make.height.mas_equalTo(14); + }]; + + [self.coverView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + + [self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.contentView).offset(18); + make.centerX.mas_equalTo(self.contentView); + make.size.mas_equalTo(CGSizeMake(48, 48)); + }]; + + [self.giftNameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.giftImageView.mas_bottom).offset(3); + make.centerX.mas_equalTo(self.giftImageView); + }]; + + [self.priceStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.giftNameLabel.mas_bottom).offset(5); + make.centerX.equalTo(self.contentView); + make.height.mas_equalTo(10); + }]; + + [self.giftNumLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.contentView).offset(4.5); + make.left.equalTo(self.contentView).offset(6); + }]; + + [self.nobleIconImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(16); + make.right.mas_equalTo(self.tagStackView.mas_left).mas_offset(-2); + make.centerY.mas_equalTo(self.tagStackView); + }]; + [self.lockImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.bottom.mas_equalTo(self.contentView).mas_offset(-4); + make.width.height.mas_equalTo(16); + }]; +} + +- (UIImageView *)createImageView:(NSString *)imageName { + UIImageView * imageView = [[UIImageView alloc] init]; + imageView.userInteractionEnabled = YES; + imageView.image = [UIImage imageNamed:imageName]; + return imageView; +} + +#pragma mark - Getters And Setters +- (void)setGiftInfo:(GiftInfoModel *)giftInfo { + _giftInfo = giftInfo; + if (_giftInfo) { + self.giftImageView.imageUrl = giftInfo.giftUrl; + self.giftNameLabel.text = _giftInfo.giftName.length > 0 ? _giftInfo.giftName : @""; + self.coverView.hidden = !giftInfo.isSelected; + NSString *strr = [NSString stringWithFormat:@"%ld",(long)_giftInfo.goldPrice]; + self.priceLabel.text = strr; + self.giftNumLabel.hidden = giftInfo.count <=0 ; + self.giftNumLabel.text = [NSString stringWithFormat:@"x%ld",(long)giftInfo.count]; + + self.exclusiveImageView.hidden = !_giftInfo.roomExclude; + self.giftNewImageView.hidden = !_giftInfo.hasLatest; + self.limitImageView.hidden = !_giftInfo.hasTimeLimit; + self.specialImageView.hidden = !_giftInfo.hasEffect; + + if (_usingplaceType == SendGiftType_User) { + self.priceLabel.textColor = _giftInfo.isSelected ? [DJDKMIMOMColor giftPriceSelectColor] : [DJDKMIMOMColor secondTextColor]; + self.giftNameLabel.textColor = _giftInfo.isSelected ? [DJDKMIMOMColor giftNameSelectColor] : [DJDKMIMOMColor mainTextColor]; + self.giftNumLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } else { + self.priceLabel.textColor = _giftInfo.isSelected ? [DJDKMIMOMColor giftPriceSelectColor] : [DJDKMIMOMColor giftPriceNormalColor]; + self.giftNameLabel.textColor = _giftInfo.isSelected ? [DJDKMIMOMColor giftNameSelectColor] : [UIColor whiteColor]; + self.giftNumLabel.textColor = [DJDKMIMOMColor giftSegmentNormalTitleColor]; + } + + if (giftInfo.giftType == GiftType_Noble && giftInfo.giftVipInfo) { + self.nobleIconImageView.hidden = NO; + self.nobleIconImageView.imageUrl = giftInfo.giftVipInfo.vipIcon; + self.lockImageView.hidden = self.curUserNobleLevel >= giftInfo.giftVipInfo.vipLevel; + } else { + self.nobleIconImageView.hidden = YES; + self.lockImageView.hidden = YES; + } + } +} + +- (void)setUsingplaceType:(SendGiftType)usingplaceType { + _usingplaceType = usingplaceType; +} + +- (UIStackView *)tagStackView { + if (!_tagStackView) { + _tagStackView = [[UIStackView alloc] init]; + _tagStackView.axis = UILayoutConstraintAxisHorizontal; + _tagStackView.distribution = UIStackViewDistributionFill; + _tagStackView.alignment = UIStackViewAlignmentCenter; + _tagStackView.spacing = 2; + } + return _tagStackView; +} + +- (UIImageView *)exclusiveImageView { + if (!_exclusiveImageView) { + _exclusiveImageView = [self createImageView:@"gift_tag_exclude"]; + } + return _exclusiveImageView; +} + +- (UIImageView *)limitImageView { + if (!_limitImageView) { + _limitImageView = [self createImageView:@"gift_tag_time_limit"]; + } + return _limitImageView; +} + +- (UIImageView *)specialImageView { + if (!_specialImageView) { + _specialImageView = [self createImageView:@"gift_tag_effect"]; + } + return _specialImageView; +} +- (UIImageView *)giftNewImageView { + if (!_giftNewImageView) { + _giftNewImageView = [self createImageView:@"gift_tag_latest"]; + } + return _giftNewImageView; +} + +- (UIStackView *)priceStackView { + if (!_priceStackView) { + _priceStackView = [[UIStackView alloc] init]; + _priceStackView.axis = UILayoutConstraintAxisHorizontal; + _priceStackView.distribution = UIStackViewDistributionEqualSpacing; + _priceStackView.alignment = UIStackViewAlignmentCenter; + _priceStackView.spacing = 2; + } + return _priceStackView; +} + +- (UIImageView *)logoImageView { + if (!_logoImageView) { + _logoImageView = [self createImageView:@"gift_diamond"]; + } + return _logoImageView; +} + +- (UILabel *)priceLabel { + if (!_priceLabel) { + _priceLabel = [[UILabel alloc] init]; + _priceLabel.font = [UIFont systemFontOfSize:9]; + _priceLabel.textColor = [DJDKMIMOMColor giftPriceNormalColor]; + } + return _priceLabel; +} + + +- (UILabel *)giftNameLabel { + if (!_giftNameLabel) { + _giftNameLabel = [[UILabel alloc] init]; + _giftNameLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightSemibold]; + _giftNameLabel.textAlignment = NSTextAlignmentCenter; + _giftNameLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _giftNameLabel; +} + +- (UILabel *)giftNumLabel { + if (!_giftNumLabel) { + _giftNumLabel = [[UILabel alloc] init]; + _giftNumLabel.font = [UIFont systemFontOfSize:10]; + } + return _giftNumLabel; +} + +- (UIView *)coverView { + if (!_coverView) { + _coverView = [[UIView alloc] init]; + _coverView.backgroundColor = [DJDKMIMOMColor giftSelectBgColor]; + _coverView.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + _coverView.layer.masksToBounds =YES; + _coverView.layer.cornerRadius = 6; + _coverView.layer.borderWidth = 1; + _coverView.hidden = YES; + } + return _coverView; +} + +- (NetImageView *)giftImageView { + if (!_giftImageView) { + _giftImageView = [[NetImageView alloc] init]; + _giftImageView.backgroundColor = [UIColor clearColor]; + _giftImageView.layer.masksToBounds = YES; + _giftImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _giftImageView; +} + +- (NetImageView *)nobleIconImageView { + if (!_nobleIconImageView) { + _nobleIconImageView = [[NetImageView alloc] init]; + _nobleIconImageView.backgroundColor = [UIColor clearColor]; + _nobleIconImageView.hidden = YES; + _nobleIconImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _nobleIconImageView; +} + + +- (UIImageView *)lockImageView { + if (!_lockImageView) { + _lockImageView = [self createImageView:@"room_gift_noble_lock"]; + _lockImageView.hidden = YES; + } + return _lockImageView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftUserCollectionViewCell.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftUserCollectionViewCell.h new file mode 100644 index 00000000..88d68751 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftUserCollectionViewCell.h @@ -0,0 +1,17 @@ +// +// YMGiftUserCollectionViewCell.h +// YUMI +// +// Created by YUMI on 2021/11/9. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPGiftUserInfoModel; +@interface XPGiftUserCollectionViewCell : UICollectionViewCell +///数据模型 +@property (nonatomic,strong) XPGiftUserInfoModel *userInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftUserCollectionViewCell.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftUserCollectionViewCell.m new file mode 100644 index 00000000..cddf3ab3 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftUserCollectionViewCell.m @@ -0,0 +1,139 @@ +// +// YMGiftUserCollectionViewCell.m +// YUMI +// +// Created by YUMI on 2021/11/9. +// + +#import "XPGiftUserCollectionViewCell.h" +///Third +#import +///Tool +#import "ThemeColor+SendGift.h" +///Model +#import "UserInfoModel.h" +#import "MicroStateModel.h" +#import "XPGiftUserInfoModel.h" +///View +#import "NetImageView.h" + +@interface XPGiftUserCollectionViewCell () +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///背景图 +@property (nonatomic,strong) UIView * coverView; +///当前位置的 +@property (nonatomic,strong) UILabel *positionLabel; +@end + +@implementation XPGiftUserCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.coverView]; + [self.contentView addSubview:self.positionLabel]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.top.mas_equalTo(self.contentView); + make.width.height.mas_equalTo(38); + }]; + + [self.coverView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.avatarImageView); + }]; + + [self.positionLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(10); + make.centerY.mas_equalTo(self.avatarImageView.mas_bottom); + make.width.mas_equalTo(10); + make.centerX.mas_equalTo(self.avatarImageView); + }]; +} + +#pragma mark - Getters And Setters +- (void)setUserInfo:(XPGiftUserInfoModel *)userInfo { + _userInfo = userInfo; + if (_userInfo.position.length > 0) { + + if (_userInfo.vipMic) { + self.positionLabel.text = @"VIP"; + [self.positionLabel mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(28); + }]; + } else { + if (_userInfo.position.integerValue == -1) { + self.positionLabel.text = YMLocalizedString(@"XPGiftUserCollectionViewCell0"); + [self.positionLabel mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(28); + }]; + } else { + self.positionLabel.text = [NSString stringWithFormat:@"%ld", _userInfo.position.integerValue + 1]; + [self.positionLabel mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(10); + }]; + } + } + + } + self.avatarImageView.imageUrl = _userInfo.avatar; + if (_userInfo.isSelect) { + self.avatarImageView.layer.borderWidth = 2; + self.coverView.hidden = YES; + self.positionLabel.backgroundColor = [DJDKMIMOMColor appMainColor]; + _positionLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } else { + self.avatarImageView.layer.borderWidth = 0; + self.coverView.hidden = NO; + self.positionLabel.backgroundColor = [DJDKMIMOMColor textThirdColor]; + _positionLabel.textColor = [UIColor whiteColor]; + } +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 38/2; + _avatarImageView.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + } + return _avatarImageView; +} + +- (UIView *)coverView { + if (!_coverView) { + _coverView = [[UIView alloc] init]; + _coverView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.3]; + _coverView.layer.cornerRadius = 38/2; + _coverView.layer.masksToBounds = YES; + } + return _coverView; +} + +- (UILabel *)positionLabel{ + if (!_positionLabel) { + _positionLabel = [[UILabel alloc] init]; + _positionLabel.font = [UIFont systemFontOfSize:8]; + _positionLabel.textColor = [UIColor whiteColor]; + _positionLabel.textAlignment = NSTextAlignmentCenter; + _positionLabel.backgroundColor = UIColorFromRGB(0x999999); + _positionLabel.layer.masksToBounds = YES; + _positionLabel.layer.cornerRadius = 5; + } + return _positionLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftWeekStarCollectionViewCell.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftWeekStarCollectionViewCell.h new file mode 100644 index 00000000..835ca91f --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftWeekStarCollectionViewCell.h @@ -0,0 +1,27 @@ +// +// YMGiftWeekStarCollectionViewCell.h +// YUMI +// +// Created by YUMI on 2022/6/14. +// + +#import +#import "XPSendGiftView.h" +NS_ASSUME_NONNULL_BEGIN +@class XPGiftWeekStarCollectionViewCell, GiftInfoModel; +@protocol XPGiftWeekStarCollectionViewCellDelegate + +- (void)xPGiftWeekStarCollectionViewCell:(XPGiftWeekStarCollectionViewCell *)view didSelectGift:(GiftInfoModel *)giftInfo; + +@end + +@interface XPGiftWeekStarCollectionViewCell : UICollectionViewCell +///使用的地方 +@property (nonatomic,assign) SendGiftType usingplaceType; +///周星礼物 +@property (nonatomic,strong) NSArray *weekStarGiftList; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftWeekStarCollectionViewCell.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftWeekStarCollectionViewCell.m new file mode 100644 index 00000000..675ad423 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftWeekStarCollectionViewCell.m @@ -0,0 +1,150 @@ +// +// YMGiftWeekStarCollectionViewCell.m +// YUMI +// +// Created by YUMI on 2022/6/14. +// + +#import "XPGiftWeekStarCollectionViewCell.h" +///Third +#import +///Tool +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "ThemeColor+SendGift.h" +#import "XPGiftCollectionViewFlowLayout.h" +#import "NSArray+Safe.h" +///Model +#import "GiftInfoModel.h" +///View +#import "XPGiftItemCollectionViewCell.h" + +@interface XPGiftWeekStarCollectionViewCell () +///列表 +@property (nonatomic,strong) UICollectionView *collectionView; +///分页 +@property (nonatomic,strong) UIPageControl *pageController; +///选中的礼物 +@property (nonatomic,strong) GiftInfoModel *selectGiftInfo; +@end + +@implementation XPGiftWeekStarCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.collectionView]; + [self.contentView addSubview:self.pageController]; +} + +- (void)initSubViewConstraints { + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.contentView); + make.height.mas_equalTo(108 * 2); + }]; + + [self.pageController mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.collectionView.mas_bottom).offset(5); + make.left.right.mas_equalTo(self.contentView); + make.height.mas_equalTo(10); + }]; +} + + +#pragma mark - UICollectionViewDelegate And UICollectionDatasource +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + CGFloat itemWidth = (CGFloat)(KScreenWidth - 15 * 2 - 5 * 3) / (CGFloat)4; + return CGSizeMake(itemWidth, 105); +} + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.weekStarGiftList.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPGiftItemCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPGiftItemCollectionViewCell class]) forIndexPath:indexPath]; + GiftInfoModel * giftInfo; + giftInfo= [self.weekStarGiftList safeObjectAtIndex1:indexPath.item]; + if (giftInfo.giftId == self.selectGiftInfo.giftId) { + giftInfo.isSelected = YES; + } else { + giftInfo.isSelected = NO; + } + cell.usingplaceType = self.usingplaceType; + cell.giftInfo = giftInfo; + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + [collectionView deselectItemAtIndexPath:indexPath animated:YES]; + if (self.weekStarGiftList.count > 0) { + GiftInfoModel * giftInfo= [self.weekStarGiftList safeObjectAtIndex1:indexPath.item]; + self.selectGiftInfo = giftInfo; + [self.collectionView reloadData]; + + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGiftWeekStarCollectionViewCell:didSelectGift:)]) { + [self.delegate xPGiftWeekStarCollectionViewCell:self didSelectGift:giftInfo]; + } + } +} +#pragma mark - scrollviewdelegate +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + CGFloat offX = scrollView.contentOffset.x; + CGFloat width = CGRectGetWidth(scrollView.frame); + self.pageController.currentPage = ceilf(offX/width); +} + +#pragma mark - Getters And Setters +- (void)setWeekStarGiftList:(NSArray *)weekStarGiftList { + _weekStarGiftList = weekStarGiftList; + if (_weekStarGiftList.count > 0) { + self.selectGiftInfo = _weekStarGiftList.firstObject; + } + NSInteger page = 0; + if (_weekStarGiftList.count % 8 == 0) { //刚好满页 + page = _weekStarGiftList.count / 8; + } else { + page = _weekStarGiftList.count / 8 + 1; + } + self.pageController.hidden = page <= 1; + [self.pageController setNumberOfPages:page]; + self.pageController.currentPage = 0; + [self.collectionView reloadData]; +} + +- (UICollectionView *)collectionView{ + if (!_collectionView) { + XPGiftCollectionViewFlowLayout *layout = [[XPGiftCollectionViewFlowLayout alloc] init]; + layout.minimumLineSpacing = 5; + layout.minimumInteritemSpacing = 5; + layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0); + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.backgroundColor = [UIColor clearColor]; + _collectionView.pagingEnabled = YES; + _collectionView.showsHorizontalScrollIndicator = NO; + [_collectionView registerClass:[XPGiftItemCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPGiftItemCollectionViewCell class])]; + } + return _collectionView; +} + +- (UIPageControl *)pageController { + if (!_pageController) { + _pageController = [[UIPageControl alloc] init]; + _pageController.currentPageIndicatorTintColor = [DJDKMIMOMColor giftPageIndicatorColor]; + } + return _pageController; +} + + + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIExternalizeConsumerAssembletionRegardElement.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIExternalizeConsumerAssembletionRegardElement.h deleted file mode 100644 index 613b8592..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIExternalizeConsumerAssembletionRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMGiftUserCollectionViewCell.h -// YUMI -// -// Created by YUMI on 2021/11/9. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIExternalizeConsumerAbstractMatrix; -@interface YUMIExternalizeConsumerAssembletionRegardElement : UICollectionViewCell -@property (nonatomic,strong) YUMIExternalizeConsumerAbstractMatrix *userInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIExternalizeConsumerAssembletionRegardElement.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIExternalizeConsumerAssembletionRegardElement.m deleted file mode 100644 index 5b07f6c4..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIExternalizeConsumerAssembletionRegardElement.m +++ /dev/null @@ -1,132 +0,0 @@ -// -// YMGiftUserCollectionViewCell.m -// YUMI -// -// Created by YUMI on 2021/11/9. -// - -#import "YUMIExternalizeConsumerAssembletionRegardElement.h" -#import -#import "ThemeColor+SendGift.h" -#import "ConsumerAbstractMatrix.h" -#import "MiecreoscoopeStateMatrix.h" -#import "YUMIExternalizeConsumerAbstractMatrix.h" -#import "NetIndicateRegard.h" - -@interface YUMIExternalizeConsumerAssembletionRegardElement () -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UIView * coverView; -@property (nonatomic,strong) UILabel *positionSequencignation; -@end - -@implementation YUMIExternalizeConsumerAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.coverView]; - [self.contentView addSubview:self.positionSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.top.mas_equalTo(self.contentView); - make.width.height.mas_equalTo(38); - }]; - - [self.coverView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.intelligenceportraitIndicateRegard); - }]; - - [self.positionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(10); - make.centerY.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_bottom); - make.width.mas_equalTo(10); - make.centerX.mas_equalTo(self.intelligenceportraitIndicateRegard); - }]; -} - -#pragma mark - Getters And Setters -- (void)setUserInfo:(YUMIExternalizeConsumerAbstractMatrix *)userInfo { - _userInfo = userInfo; - if (_userInfo.position.length > 0) { - - if (_userInfo.vipMic) { - self.positionSequencignation.text = @"VIP"; - [self.positionSequencignation mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(28); - }]; - } else { - if (_userInfo.position.integerValue == -1) { - self.positionSequencignation.text = YMLocalizedString(@"YUMI_Gift_User_Collection_View_Cell_0"); - [self.positionSequencignation mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(28); - }]; - } else { - self.positionSequencignation.text = [NSString stringWithFormat:@"%ld", _userInfo.position.integerValue + 1]; - [self.positionSequencignation mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(10); - }]; - } - } - - } - self.intelligenceportraitIndicateRegard.imageUrl = _userInfo.avatar; - if (_userInfo.isSelect) { - self.intelligenceportraitIndicateRegard.layer.borderWidth = 2; - self.coverView.hidden = YES; - self.positionSequencignation.backgroundColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - _positionSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } else { - self.intelligenceportraitIndicateRegard.layer.borderWidth = 0; - self.coverView.hidden = NO; - self.positionSequencignation.backgroundColor = [DJDKMIMOMColor essayTertiusPrettify]; - _positionSequencignation.textColor = [UIColor whiteColor]; - } -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 38/2; - _intelligenceportraitIndicateRegard.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - } - return _intelligenceportraitIndicateRegard; -} - -- (UIView *)coverView { - if (!_coverView) { - _coverView = [[UIView alloc] init]; - _coverView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.3]; - _coverView.layer.cornerRadius = 38/2; - _coverView.layer.masksToBounds = YES; - } - return _coverView; -} - -- (UILabel *)positionSequencignation{ - if (!_positionSequencignation) { - _positionSequencignation = [[UILabel alloc] init]; - _positionSequencignation.font = [UIFont systemFontOfSize:8]; - _positionSequencignation.textColor = [UIColor whiteColor]; - _positionSequencignation.textAlignment = NSTextAlignmentCenter; - _positionSequencignation.backgroundColor = UIColorFromRGB(0x999999); - _positionSequencignation.layer.masksToBounds = YES; - _positionSequencignation.layer.cornerRadius = 5; - } - return _positionSequencignation; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentAssembletionRegardFlowProgramming.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentAssembletionRegardFlowProgramming.h deleted file mode 100644 index 6f4d4bef..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentAssembletionRegardFlowProgramming.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMGiftCollectionViewFlowLayout.h -// YUMI -// -// Created by YUMI on 2021/11/12. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIPresentAssembletionRegardFlowProgramming : UICollectionViewFlowLayout - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentAssembletionRegardFlowProgramming.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentAssembletionRegardFlowProgramming.m deleted file mode 100644 index e9571eec..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentAssembletionRegardFlowProgramming.m +++ /dev/null @@ -1,151 +0,0 @@ -// -// YMGiftCollectionViewFlowLayout.m -// YUMI -// -// Created by YUMI on 2021/11/12. -// - -#import "YUMIPresentAssembletionRegardFlowProgramming.h" - -@interface YUMIPresentAssembletionRegardFlowProgramming () -@property (nonatomic, copy) NSMutableDictionary *sectionPackbask; -@property (nonatomic, strong) NSMutableArray *entiretyIdiosyncracys; -@end - -@implementation YUMIPresentAssembletionRegardFlowProgramming -#pragma mark - life cycle -- (instancetype)init { - self = [super init]; - if (self) { - self.scrollDirection = UICollectionViewScrollDirectionHorizontal; - } - return self; -} - -#pragma mark - overload - -- (void)prepareLayout { - - [super prepareLayout]; - - _sectionPackbask = [NSMutableDictionary dictionary]; - self.entiretyIdiosyncracys = [NSMutableArray array]; - - NSUInteger section = [self.collectionView numberOfSections]; - - for (int sec = 0; sec < section; sec++) { - - NSUInteger count = [self.collectionView numberOfItemsInSection:sec]; - - for (NSUInteger item = 0; item *)layoutAttributesForElementsInRect:(CGRect)rect { - - return self.entiretyIdiosyncracys; -} - -#pragma mark - private method - -- (void)applyLayoutAttributes:(UICollectionViewLayoutAttributes *)attributes { - - if(attributes.representedElementKind != nil){ - return; - } - CGFloat minLine = self.minimumLineSpacing; - CGFloat minSpacing = self.minimumInteritemSpacing; - - - CGFloat itemW = attributes.frame.size.width; - - CGFloat itemH = attributes.frame.size.height; - UIEdgeInsets sectionInsets = self.sectionInset; - - CGFloat width = self.collectionView.frame.size.width; - - CGFloat height = self.collectionView.frame.size.height; - - NSInteger itemIndex = attributes.indexPath.item; - - CGFloat stride = (self.scrollDirection == UICollectionViewScrollDirectionHorizontal) ? width : height; - - - - NSInteger section = attributes.indexPath.section; - - NSInteger itemCount = [self.collectionView numberOfItemsInSection:section]; - - - CGFloat offset = section * stride; - - - NSInteger xCount = (width / itemW); - - NSInteger yCount = (height / itemH); - - NSInteger allCount = (xCount * yCount); - - NSInteger page = itemIndex / allCount; - - - NSInteger remain = (itemIndex % xCount); - - NSInteger merchant = (itemIndex-page*allCount)/xCount; - - - - CGFloat xCellOffset = remain * (itemW + minLine)+ sectionInsets.left; - - CGFloat yCellOffset = merchant * (itemH + minSpacing); - - - NSInteger pageRe = (itemCount % allCount == 0)? (itemCount / allCount) : (itemCount / allCount) + 1; - - [_sectionPackbask setValue:@(pageRe) forKey:[NSString stringWithFormat:@"%ld", section]]; - - if(self.scrollDirection == UICollectionViewScrollDirectionHorizontal) { - - NSInteger actualLo = 0; - - for (NSString *key in [_sectionPackbask allKeys]) { - actualLo += [_sectionPackbask[key] integerValue]; - } - - actualLo -= [_sectionPackbask[[NSString stringWithFormat:@"%ld", [_sectionPackbask allKeys].count-1]] integerValue]; - xCellOffset += page*width + actualLo*width; - - } else { - - yCellOffset += offset; - } - - attributes.frame = CGRectMake(xCellOffset, yCellOffset, itemW, itemH); -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentComputationAssembletionRegardElement.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentComputationAssembletionRegardElement.h deleted file mode 100644 index 492f4bbe..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentComputationAssembletionRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMGiftCountCollectionViewCell.h -// YUMI -// -// Created by YUMI on 2021/11/11. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIPresentComputationMatrix; -@interface YUMIPresentComputationAssembletionRegardElement : UICollectionViewCell -@property (nonatomic,strong) YUMIPresentComputationMatrix *computationMatrix; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentComputationAssembletionRegardElement.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentComputationAssembletionRegardElement.m deleted file mode 100644 index 09125551..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentComputationAssembletionRegardElement.m +++ /dev/null @@ -1,97 +0,0 @@ -// -// YMGiftCountCollectionViewCell.m -// YUMI -// -// Created by YUMI on 2021/11/11. -// - -#import "YUMIPresentComputationAssembletionRegardElement.h" -#import -#import "ThemeColor+SendGift.h" -#import "YUMIPresentComputationMatrix.h" - -@interface YUMIPresentComputationAssembletionRegardElement () -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UILabel *computationSequencignation; -@property (nonatomic,strong) UIImageView *arrowIndicateRegard; -@end - -@implementation YUMIPresentComputationAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.titleLabel]; - [self.contentView addSubview:self.computationSequencignation]; - [self.contentView addSubview:self.arrowIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(20); - make.centerY.mas_equalTo(self.contentView); - }]; - [self.computationSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-20); - make.centerY.mas_equalTo(0); - make.left.mas_greaterThanOrEqualTo(self.titleLabel.mas_right).offset(5); - }]; - - [self.arrowIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-20); - make.centerY.mas_equalTo(0); - make.width.height.mas_equalTo(10); - }]; -} - -#pragma mark - Getters And Setters -- (void)setComputationMatrix:(YUMIPresentComputationMatrix *)computationMatrix { - _computationMatrix = computationMatrix; - if (_computationMatrix) { - self.titleLabel.text = _computationMatrix.title; - self.computationSequencignation.text = _computationMatrix.giftNumber; - if (_computationMatrix.isCustomCount) { - self.arrowIndicateRegard.hidden = NO; - } else { - self.arrowIndicateRegard.hidden = YES; - } - } -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:13]; - _titleLabel.textColor = [DJDKMIMOMColor presentComputtowardsionChampionPrettify]; - } - return _titleLabel; -} - -- (UILabel *)computationSequencignation { - if (!_computationSequencignation) { - _computationSequencignation = [[UILabel alloc] init]; - _computationSequencignation.font = [UIFont systemFontOfSize:14]; - _computationSequencignation.textColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - _computationSequencignation.textAlignment = NSTextAlignmentRight; - } - return _computationSequencignation; -} - -- (UIImageView *)arrowIndicateRegard { - if (!_arrowIndicateRegard) { - _arrowIndicateRegard = [[UIImageView alloc] init]; - _arrowIndicateRegard.image = [UIImage imageNamed:@"yumi_present_let_recharge_arrow"]; - _arrowIndicateRegard.hidden = YES; - } - return _arrowIndicateRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentDispossessAssembletionRegardElement.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentDispossessAssembletionRegardElement.h deleted file mode 100644 index a471088c..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentDispossessAssembletionRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMGiftEmptyCollectionViewCell.h -// YUMI -// -// Created by YUMI on 2021/11/15. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIPresentDispossessAssembletionRegardElement : UICollectionViewCell -@property (nonatomic,copy) NSString *emptyTitle; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentDispossessAssembletionRegardElement.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentDispossessAssembletionRegardElement.m deleted file mode 100644 index 0664d04e..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentDispossessAssembletionRegardElement.m +++ /dev/null @@ -1,75 +0,0 @@ -// -// YMGiftEmptyCollectionViewCell.m -// YUMI -// -// Created by YUMI on 2021/11/15. -// - -#import "YUMIPresentDispossessAssembletionRegardElement.h" -#import -#import "ThemeColor+SendGift.h" - -@interface YUMIPresentDispossessAssembletionRegardElement () -@property (nonatomic,strong) UIImageView *brandIndicateRegard; -@property (nonatomic,strong) UILabel *dispossessImpactPrompt; -@end - -@implementation YUMIPresentDispossessAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.brandIndicateRegard]; - [self.contentView addSubview:self.dispossessImpactPrompt]; -} - -- (void)initChildLyRestrictions { - [self.brandIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(40, 40)); - make.bottom.mas_equalTo(self.mas_centerY).offset(-3); - make.centerX.mas_equalTo(self); - }]; - - [self.dispossessImpactPrompt mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.mas_centerY).offset(3); - make.centerX.mas_equalTo(self); - }]; -} - -#pragma mark - Getters And Setters -- (void)setEmptyTitle:(NSString *)emptyTitle { - _emptyTitle = emptyTitle; - if (_emptyTitle.length > 0) { - self.dispossessImpactPrompt.text = _emptyTitle; - } -} - -- (UILabel *)dispossessImpactPrompt { - if (!_dispossessImpactPrompt) { - _dispossessImpactPrompt = [[UILabel alloc] init]; - _dispossessImpactPrompt.text = @"背包暂无内容~";; - _dispossessImpactPrompt.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _dispossessImpactPrompt.font = [UIFont systemFontOfSize:12]; - _dispossessImpactPrompt.textAlignment = NSTextAlignmentCenter; - } - return _dispossessImpactPrompt; -} - -- (UIImageView *)brandIndicateRegard { - if (!_brandIndicateRegard) { - _brandIndicateRegard = [[UIImageView alloc] init]; - _brandIndicateRegard.userInteractionEnabled = YES; - _brandIndicateRegard.image = [UIImage imageNamed:@"yumi_present_gen_empty_background"]; - } - return _brandIndicateRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentProvisionAssembletionRegardElement.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentProvisionAssembletionRegardElement.h deleted file mode 100644 index 0ce1c805..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentProvisionAssembletionRegardElement.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMGiftItemCollectionViewCell.h -// YUMI -// -// Created by YUMI on 2021/11/12. -// - -#import -#import "YUMIDischargePresentRegard.h" -NS_ASSUME_NONNULL_BEGIN -@class PresentAbstractMatrix; -@interface YUMIPresentProvisionAssembletionRegardElement : UICollectionViewCell -@property (nonatomic,strong) PresentAbstractMatrix *giftInfo; -@property (nonatomic, assign) NSInteger curConsumerMagnificentPrototype; -@property (nonatomic,assign) DischargePresentGenre usingdeparatmentGenre; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentProvisionAssembletionRegardElement.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentProvisionAssembletionRegardElement.m deleted file mode 100644 index e1853371..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentProvisionAssembletionRegardElement.m +++ /dev/null @@ -1,283 +0,0 @@ -// -// YMGiftItemCollectionViewCell.m -// YUMI -// -// Created by YUMI on 2021/11/12. -// - -#import "YUMIPresentProvisionAssembletionRegardElement.h" -#import -#import "ThemeColor+SendGift.h" -#import "NetIndicateRegard.h" -#import "PresentAbstractMatrix.h" - -@interface YUMIPresentProvisionAssembletionRegardElement () -@property (nonatomic,strong) NetIndicateRegard *presentIndicateRegard; -@property (nonatomic,strong) UILabel *presentConstituteSequencignation; -@property (nonatomic,strong) UIStackView *valencyHierarchyRegard; -@property (nonatomic,strong) UILabel *valencySequencignation; -@property (nonatomic,strong) UIImageView *brandIndicateRegard; -@property (nonatomic,strong) UIStackView *coupleHierarchyRegard; -@property (nonatomic,strong) UIImageView *presentStrangeIndicateRegard; -@property (nonatomic,strong) UIImageView *specialIndicateRegard; -@property (nonatomic,strong) UIImageView *restrictionIndicateRegard; -@property (nonatomic,strong) UIImageView *exclusiveIndicateRegard; -@property (nonatomic,strong) UIView * coverView; -@property (nonatomic,strong) UILabel *presentFigureSequencignation; -@property (nonatomic, strong) NetIndicateRegard *magnificentFigureIndicateRegard; -@property (nonatomic, strong) UIImageView *spokeIndicateRegard; - -@end - -@implementation YUMIPresentProvisionAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.coupleHierarchyRegard]; - [self.contentView addSubview:self.presentIndicateRegard]; - [self.contentView addSubview:self.presentConstituteSequencignation]; - [self.contentView addSubview:self.valencyHierarchyRegard]; - [self.contentView addSubview:self.coverView]; - [self.contentView addSubview:self.presentFigureSequencignation]; - [self.contentView addSubview:self.magnificentFigureIndicateRegard]; - [self.contentView addSubview:self.spokeIndicateRegard]; - - [self.coupleHierarchyRegard addArrangedSubview:self.exclusiveIndicateRegard]; - [self.coupleHierarchyRegard addArrangedSubview:self.presentStrangeIndicateRegard]; - [self.coupleHierarchyRegard addArrangedSubview:self.restrictionIndicateRegard]; - [self.coupleHierarchyRegard addArrangedSubview:self.specialIndicateRegard]; - - [self.valencyHierarchyRegard addArrangedSubview:self.valencySequencignation]; - [self.valencyHierarchyRegard addArrangedSubview:self.brandIndicateRegard]; - -} - -- (void)initChildLyRestrictions { - [self.coupleHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.top.mas_equalTo(self.contentView).inset(3); - make.height.mas_equalTo(14); - }]; - - [self.coverView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - - [self.presentIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.contentView).offset(18); - make.centerX.mas_equalTo(self.contentView); - make.size.mas_equalTo(CGSizeMake(48, 48)); - }]; - - [self.presentConstituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.presentIndicateRegard.mas_bottom).offset(3); - make.centerX.mas_equalTo(self.presentIndicateRegard); - }]; - - [self.valencyHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.presentConstituteSequencignation.mas_bottom).offset(5); - make.centerX.equalTo(self.contentView); - make.height.mas_equalTo(10); - }]; - - [self.presentFigureSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.contentView).offset(4.5); - make.left.equalTo(self.contentView).offset(6); - }]; - - [self.magnificentFigureIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(16); - make.right.mas_equalTo(self.coupleHierarchyRegard.mas_left).mas_offset(-2); - make.centerY.mas_equalTo(self.coupleHierarchyRegard); - }]; - [self.spokeIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.bottom.mas_equalTo(self.contentView).mas_offset(-4); - make.width.height.mas_equalTo(16); - }]; -} - -- (UIImageView *)produceIndictowardseRegard:(NSString *)imageName { - UIImageView * imageView = [[UIImageView alloc] init]; - imageView.userInteractionEnabled = YES; - imageView.image = [UIImage imageNamed:imageName]; - return imageView; -} - -#pragma mark - Getters And Setters -- (void)setGiftInfo:(PresentAbstractMatrix *)giftInfo { - _giftInfo = giftInfo; - if (_giftInfo) { - self.presentIndicateRegard.imageUrl = giftInfo.giftUrl; - self.presentConstituteSequencignation.text = _giftInfo.giftName.length > 0 ? _giftInfo.giftName : @""; - self.coverView.hidden = !giftInfo.isSelected; - NSString *strr = [NSString stringWithFormat:@"%ld",(long)_giftInfo.goldPrice]; - self.valencySequencignation.text = strr; - self.presentFigureSequencignation.hidden = giftInfo.count <=0 ; - self.presentFigureSequencignation.text = [NSString stringWithFormat:@"x%ld",(long)giftInfo.count]; - - self.exclusiveIndicateRegard.hidden = !_giftInfo.roomExclude; - self.presentStrangeIndicateRegard.hidden = !_giftInfo.hasLatest; - self.restrictionIndicateRegard.hidden = !_giftInfo.hasTimeLimit; - self.specialIndicateRegard.hidden = !_giftInfo.hasEffect; - - if (_usingdeparatmentGenre == DischargePresentGenre_User) { - self.valencySequencignation.textColor = _giftInfo.isSelected ? [DJDKMIMOMColor presentValencyChosenPrettify] : [DJDKMIMOMColor instantEssayPrettify]; - self.presentConstituteSequencignation.textColor = _giftInfo.isSelected ? [DJDKMIMOMColor presentConstituteChosenPrettify] : [DJDKMIMOMColor mainEssayPrettify]; - self.presentFigureSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } else { - self.valencySequencignation.textColor = _giftInfo.isSelected ? [DJDKMIMOMColor presentValencyChosenPrettify] : [DJDKMIMOMColor presentValencyOrdinaryPrettify]; - self.presentConstituteSequencignation.textColor = _giftInfo.isSelected ? [DJDKMIMOMColor presentConstituteChosenPrettify] : [UIColor whiteColor]; - self.presentFigureSequencignation.textColor = [DJDKMIMOMColor presentMaintainortionOrdinaryChampionPrettify]; - } - - if (giftInfo.giftType == PresentGenre_Noble && giftInfo.giftVipInfo) { - self.magnificentFigureIndicateRegard.hidden = NO; - self.magnificentFigureIndicateRegard.imageUrl = giftInfo.giftVipInfo.vipIcon; - self.spokeIndicateRegard.hidden = self.curConsumerMagnificentPrototype >= giftInfo.giftVipInfo.vipLevel; - } else { - self.magnificentFigureIndicateRegard.hidden = YES; - self.spokeIndicateRegard.hidden = YES; - } - } -} - -- (void)setUsingdeparatmentGenre:(DischargePresentGenre)usingdeparatmentGenre { - _usingdeparatmentGenre = usingdeparatmentGenre; -} - -- (UIStackView *)coupleHierarchyRegard { - if (!_coupleHierarchyRegard) { - _coupleHierarchyRegard = [[UIStackView alloc] init]; - _coupleHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _coupleHierarchyRegard.distribution = UIStackViewDistributionFill; - _coupleHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _coupleHierarchyRegard.spacing = 2; - } - return _coupleHierarchyRegard; -} - -- (UIImageView *)exclusiveIndicateRegard { - if (!_exclusiveIndicateRegard) { - _exclusiveIndicateRegard = [self produceIndictowardseRegard:@"gift_tag_exclude"]; - } - return _exclusiveIndicateRegard; -} - -- (UIImageView *)restrictionIndicateRegard { - if (!_restrictionIndicateRegard) { - _restrictionIndicateRegard = [self produceIndictowardseRegard:@"gift_tag_time_limit"]; - } - return _restrictionIndicateRegard; -} - -- (UIImageView *)specialIndicateRegard { - if (!_specialIndicateRegard) { - _specialIndicateRegard = [self produceIndictowardseRegard:@"gift_tag_effect"]; - } - return _specialIndicateRegard; -} -- (UIImageView *)presentStrangeIndicateRegard { - if (!_presentStrangeIndicateRegard) { - _presentStrangeIndicateRegard = [self produceIndictowardseRegard:@"gift_tag_latest"]; - } - return _presentStrangeIndicateRegard; -} - -- (UIStackView *)valencyHierarchyRegard { - if (!_valencyHierarchyRegard) { - _valencyHierarchyRegard = [[UIStackView alloc] init]; - _valencyHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _valencyHierarchyRegard.distribution = UIStackViewDistributionEqualSpacing; - _valencyHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _valencyHierarchyRegard.spacing = 2; - } - return _valencyHierarchyRegard; -} - -- (UIImageView *)brandIndicateRegard { - if (!_brandIndicateRegard) { - _brandIndicateRegard = [self produceIndictowardseRegard:@"gift_diamond"]; - } - return _brandIndicateRegard; -} - -- (UILabel *)valencySequencignation { - if (!_valencySequencignation) { - _valencySequencignation = [[UILabel alloc] init]; - _valencySequencignation.font = [UIFont systemFontOfSize:9]; - _valencySequencignation.textColor = [DJDKMIMOMColor presentValencyOrdinaryPrettify]; - } - return _valencySequencignation; -} - - -- (UILabel *)presentConstituteSequencignation { - if (!_presentConstituteSequencignation) { - _presentConstituteSequencignation = [[UILabel alloc] init]; - _presentConstituteSequencignation.font = [UIFont systemFontOfSize:10 weight:UIFontWeightSemibold]; - _presentConstituteSequencignation.textAlignment = NSTextAlignmentCenter; - _presentConstituteSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _presentConstituteSequencignation; -} - -- (UILabel *)presentFigureSequencignation { - if (!_presentFigureSequencignation) { - _presentFigureSequencignation = [[UILabel alloc] init]; - _presentFigureSequencignation.font = [UIFont systemFontOfSize:10]; - } - return _presentFigureSequencignation; -} - -- (UIView *)coverView { - if (!_coverView) { - _coverView = [[UIView alloc] init]; - _coverView.backgroundColor = [DJDKMIMOMColor presentChosenBackgroundPrettify]; - _coverView.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - _coverView.layer.masksToBounds =YES; - _coverView.layer.cornerRadius = 6; - _coverView.layer.borderWidth = 1; - _coverView.hidden = YES; - } - return _coverView; -} - -- (NetIndicateRegard *)presentIndicateRegard { - if (!_presentIndicateRegard) { - _presentIndicateRegard = [[NetIndicateRegard alloc] init]; - _presentIndicateRegard.backgroundColor = [UIColor clearColor]; - _presentIndicateRegard.layer.masksToBounds = YES; - _presentIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _presentIndicateRegard; -} - -- (NetIndicateRegard *)magnificentFigureIndicateRegard { - if (!_magnificentFigureIndicateRegard) { - _magnificentFigureIndicateRegard = [[NetIndicateRegard alloc] init]; - _magnificentFigureIndicateRegard.backgroundColor = [UIColor clearColor]; - _magnificentFigureIndicateRegard.hidden = YES; - _magnificentFigureIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _magnificentFigureIndicateRegard; -} - - -- (UIImageView *)spokeIndicateRegard { - if (!_spokeIndicateRegard) { - _spokeIndicateRegard = [self produceIndictowardseRegard:@"room_gift_noble_lock"]; - _spokeIndicateRegard.hidden = YES; - } - return _spokeIndicateRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentWeekSatelliteAssembletionRegardElement.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentWeekSatelliteAssembletionRegardElement.h deleted file mode 100644 index 3df7a7c1..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentWeekSatelliteAssembletionRegardElement.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YMGiftWeekStarCollectionViewCell.h -// YUMI -// -// Created by YUMI on 2022/6/14. -// - -#import -#import "YUMIDischargePresentRegard.h" -NS_ASSUME_NONNULL_BEGIN -@class YUMIPresentWeekSatelliteAssembletionRegardElement, PresentAbstractMatrix; -@protocol FBCPresentWeekStarAssembletionRegardElementRepresendtation - -- (void)yUMIPresentZhouStowardselliteAssembletionRegardElement:(YUMIPresentWeekSatelliteAssembletionRegardElement *)view didSelectGift:(PresentAbstractMatrix *)giftInfo; - -@end - -@interface YUMIPresentWeekSatelliteAssembletionRegardElement : UICollectionViewCell -@property (nonatomic,assign) DischargePresentGenre usingdeparatmentGenre; -@property (nonatomic,strong) NSArray *zhouSatellitePresentStatement; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentWeekSatelliteAssembletionRegardElement.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentWeekSatelliteAssembletionRegardElement.m deleted file mode 100644 index f1b65705..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/YUMIPresentWeekSatelliteAssembletionRegardElement.m +++ /dev/null @@ -1,143 +0,0 @@ -// -// YMGiftWeekStarCollectionViewCell.m -// YUMI -// -// Created by YUMI on 2022/6/14. -// - -#import "YUMIPresentWeekSatelliteAssembletionRegardElement.h" -#import -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "ThemeColor+SendGift.h" -#import "YUMIPresentAssembletionRegardFlowProgramming.h" -#import "NSArray+Safe.h" -#import "PresentAbstractMatrix.h" -#import "YUMIPresentProvisionAssembletionRegardElement.h" - -@interface YUMIPresentWeekSatelliteAssembletionRegardElement () -@property (nonatomic,strong) UICollectionView *collectionView; -@property (nonatomic,strong) UIPageControl *periodGovernancer; -@property (nonatomic,strong) PresentAbstractMatrix *chosenPresentAbstract; -@end - -@implementation YUMIPresentWeekSatelliteAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.collectionView]; - [self.contentView addSubview:self.periodGovernancer]; -} - -- (void)initChildLyRestrictions { - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.contentView); - make.height.mas_equalTo(108 * 2); - }]; - - [self.periodGovernancer mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.collectionView.mas_bottom).offset(5); - make.left.right.mas_equalTo(self.contentView); - make.height.mas_equalTo(10); - }]; -} - - -#pragma mark - UICollectionViewDelegate And UICollectionDatasource -- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { - CGFloat itemWidth = (CGFloat)(KScreenWidth - 15 * 2 - 5 * 3) / (CGFloat)4; - return CGSizeMake(itemWidth, 105); -} - -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.zhouSatellitePresentStatement.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMIPresentProvisionAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIPresentProvisionAssembletionRegardElement class]) forIndexPath:indexPath]; - PresentAbstractMatrix * giftInfo; - giftInfo= [self.zhouSatellitePresentStatement secureGroalTowardsIndictowardsrix1:indexPath.item]; - if (giftInfo.giftId == self.chosenPresentAbstract.giftId) { - giftInfo.isSelected = YES; - } else { - giftInfo.isSelected = NO; - } - cell.usingdeparatmentGenre = self.usingdeparatmentGenre; - cell.giftInfo = giftInfo; - return cell; -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - [collectionView deselectItemAtIndexPath:indexPath animated:YES]; - if (self.zhouSatellitePresentStatement.count > 0) { - PresentAbstractMatrix * giftInfo= [self.zhouSatellitePresentStatement secureGroalTowardsIndictowardsrix1:indexPath.item]; - self.chosenPresentAbstract = giftInfo; - [self.collectionView reloadData]; - - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIPresentZhouStowardselliteAssembletionRegardElement:didSelectGift:)]) { - [self.delegate yUMIPresentZhouStowardselliteAssembletionRegardElement:self didSelectGift:giftInfo]; - } - } -} -#pragma mark - scrollviewdelegate -- (void)scrollViewDidScroll:(UIScrollView *)scrollView { - CGFloat offX = scrollView.contentOffset.x; - CGFloat width = CGRectGetWidth(scrollView.frame); - self.periodGovernancer.currentPage = ceilf(offX/width); -} - -#pragma mark - Getters And Setters -- (void)setZhouSatellitePresentStatement:(NSArray *)zhouSatellitePresentStatement { - _zhouSatellitePresentStatement = zhouSatellitePresentStatement; - if (_zhouSatellitePresentStatement.count > 0) { - self.chosenPresentAbstract = _zhouSatellitePresentStatement.firstObject; - } - NSInteger page = 0; - if (_zhouSatellitePresentStatement.count % 8 == 0) { - page = _zhouSatellitePresentStatement.count / 8; - } else { - page = _zhouSatellitePresentStatement.count / 8 + 1; - } - self.periodGovernancer.hidden = page <= 1; - [self.periodGovernancer setNumberOfPages:page]; - self.periodGovernancer.currentPage = 0; - [self.collectionView reloadData]; -} - -- (UICollectionView *)collectionView{ - if (!_collectionView) { - YUMIPresentAssembletionRegardFlowProgramming *layout = [[YUMIPresentAssembletionRegardFlowProgramming alloc] init]; - layout.minimumLineSpacing = 5; - layout.minimumInteritemSpacing = 5; - layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0); - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.backgroundColor = [UIColor clearColor]; - _collectionView.pagingEnabled = YES; - _collectionView.showsHorizontalScrollIndicator = NO; - [_collectionView registerClass:[YUMIPresentProvisionAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIPresentProvisionAssembletionRegardElement class])]; - } - return _collectionView; -} - -- (UIPageControl *)periodGovernancer { - if (!_periodGovernancer) { - _periodGovernancer = [[UIPageControl alloc] init]; - _periodGovernancer.currentPageIndicatorTintColor = [DJDKMIMOMColor presentPeriodIndictowardsorPrettify]; - } - return _periodGovernancer; -} - - - -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftBarView.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftBarView.h new file mode 100644 index 00000000..b3388a52 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftBarView.h @@ -0,0 +1,41 @@ +// +// YMGiftBottomView.h +// YUMI +// +// Created by YUMI on 2021/11/9. +// + +#import +#import "XPGiftInfoView.h" +NS_ASSUME_NONNULL_BEGIN +@class XPGiftBarView, XPGiftCountModel, WalletInfoModel; +@protocol XPGiftBarViewDelegate +///点击了充值的 +- (void)xPGiftBarViewDidClickRecharge:(XPGiftBarView *)view;; +///点击了送礼物的的 +- (void)xPGiftBarView:(XPGiftBarView *)view didClickSendGift:(XPGiftCountModel *)giftCount; +///点击了首充 +- (void)xPGiftBarViewDidClickFirstRecharge:(XPGiftBarView *)view;; +@end + +@interface XPGiftBarView : UIView +///使用的地方 +@property (nonatomic,assign) SendGiftType usingplaceType; +///涂鸦礼物的个数 +@property (nonatomic,assign) NSInteger drawGiftCount; +///代理 +@property (nonatomic,weak) id delegate; +///不同的tabbar +@property (nonatomic,assign) GiftSegmentType type; + +///更新礼物个数 +@property (nonatomic,strong) XPGiftCountModel *giftCountModel; +///钱包信息 +@property (nonatomic,strong) WalletInfoModel *walletInfoModel; +///是否展示首充 +@property (nonatomic,assign) BOOL isShowFirstRecharge; +///是否可用 +@property (nonatomic,assign) BOOL sendButtonIsEnable; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftBarView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftBarView.m new file mode 100644 index 00000000..7c24e2a9 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftBarView.m @@ -0,0 +1,501 @@ +// +// YMGiftBottomView.m +// YUMI +// +// Created by YUMI on 2021/11/9. +// + +#import "XPGiftBarView.h" +///Third +#import +///Tool +#import "YUMIMacroUitls.h" +#import "ThemeColor+SendGift.h" +#import "UIImage+Utils.h" +///Model +#import "XPGiftCountModel.h" +#import "WalletInfoModel.h" +///View +#import "XPGiftCountCollectionViewCell.h" +#import "XPGiftCountView.h" +@interface XPGiftBarView () + +///余额 +@property (nonatomic,strong) UILabel *balanceLabel; +/// +@property (nonatomic,strong) UIStackView *rechargeStackView; +///充值 +@property (nonatomic,strong) UILabel *rechargeLabel; +///去充值 +@property (nonatomic,strong) UIImageView *rechageImageView; +//赠送 +@property (nonatomic,strong) UIStackView *sendOperationView; +///个数 +@property (nonatomic,strong) UILabel *countLabel; +///箭头 +@property (nonatomic,strong) UIButton *arrowButton; +///赠送 +@property (nonatomic,strong) UIButton *sendGiftButton; +///首充 +@property (nonatomic,strong) UIButton *firstRechargeButton; +///自定义个数 +@property (nonatomic,strong) UIView *customCountView; +//输入框 +@property (nonatomic, strong) UITextField *editTextFiled; +//发送按钮 +@property (nonatomic, strong) UIButton *sureButton; +///送礼物的个数 +@property (nonatomic,strong) XPGiftCountView *giftCountView; + +@end + +@implementation XPGiftBarView + +- (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + [self addNotificationCenter]; + [self initEvents]; + } + return self; +} +#pragma mark - Response +- (void)sendButtonAction:(UIButton *)sender { + if (self.type == GiftSegmentType_Graffiti && self.drawGiftCount < 10) { + return; + } + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGiftBarView:didClickSendGift:)]) { + [self.delegate xPGiftBarView:self didClickSendGift:self.giftCountModel]; + } +} + +- (void)didTagRecharge:(UITapGestureRecognizer *)tap { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGiftBarViewDidClickRecharge:)]) { + [self.delegate xPGiftBarViewDidClickRecharge:self]; + } +} + +- (void)arrowButtonAction:(UIButton *)sender { + if (![[self.superview.superview subviews] containsObject:self.giftCountView]) { + [self.superview.superview addSubview:self.giftCountView]; + + [self.giftCountView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-15); + make.bottom.mas_equalTo(self.superview.superview.mas_bottom).offset(-45 -kSafeAreaBottomHeight); + make.width.mas_equalTo(135); + }]; + } + [self updateCountStatus]; +} + +- (void)sureButtonAction:(UIButton *)sender { + NSString *countStr = [self.editTextFiled.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; + if (countStr.integerValue == 0) { + countStr = @"1"; + } + [self.editTextFiled resignFirstResponder]; + self.editTextFiled.text = @""; + self.giftCountModel.giftNumber = countStr; + self.countLabel.text = countStr; +} + +- (void)firstRechargeButtonAction:(UIButton *)sender{ + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGiftBarViewDidClickFirstRecharge:)]) { + [self.delegate xPGiftBarViewDidClickFirstRecharge:self]; + } +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor= [UIColor clearColor]; + [self addSubview:self.balanceLabel]; + [self addSubview:self.rechargeStackView]; + [self addSubview:self.firstRechargeButton]; + [self addSubview:self.sendOperationView]; + + [self.rechargeStackView addArrangedSubview:self.rechargeLabel]; + [self.rechargeStackView addArrangedSubview:self.rechageImageView]; + + [self.sendOperationView addArrangedSubview:self.countLabel]; + [self.sendOperationView addArrangedSubview:self.arrowButton]; + [self.sendOperationView addArrangedSubview:self.sendGiftButton]; + + [self.customCountView addSubview:self.editTextFiled]; + [self.customCountView addSubview:self.sureButton]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(45); + }]; + + + [self.balanceLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(15); + make.centerY.mas_equalTo(self.sendOperationView); + }]; + + [self.rechargeStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.sendOperationView); + make.left.mas_equalTo(self.balanceLabel.mas_right).offset(12); + }]; + + [self.firstRechargeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(50, 14)); + make.left.mas_equalTo(self.rechargeStackView.mas_right).offset(4); + make.centerY.mas_equalTo(self.rechargeStackView); + }]; + + [self.sendOperationView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self).offset(-15); + make.bottom.mas_equalTo(-11); + make.height.mas_equalTo(30); + }]; + + [self.countLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(40); + make.height.mas_equalTo(30); + }]; + + + [self.arrowButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(30, 30)); + }]; + + [self.sendGiftButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(67, 30)); + }]; + + + [self.editTextFiled mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.customCountView).offset(15); + make.right.mas_equalTo(self.sureButton.mas_left).offset(-10); + make.top.bottom.mas_equalTo(self.customCountView); + }]; + + [self.sureButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(30); + make.width.mas_equalTo(@50); + make.centerY.mas_equalTo(self.customCountView); + make.right.mas_equalTo(self.customCountView).offset(-15); + }]; +} + +- (void)initEvents { + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTagRecharge:)]; + [self.rechargeStackView addGestureRecognizer:tap]; +} + +- (void)keyboardWillShow:(NSNotification *)notification { + CGRect keyboardRect = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; + CGFloat height = CGRectGetMinY(keyboardRect) - KScreenHeight; + if (height < 0) { + [UIView animateWithDuration:0.25 animations:^{ + CGRect rect = self.customCountView.superview.superview.superview.frame; + rect.origin.y = height; + self.customCountView.superview.superview.superview.frame = rect; + }]; + } +} + +//键盘隐藏 +- (void)keyboardWillHidden:(NSNotification *)notification { + [UIView animateWithDuration:0.25 animations:^{ + CGRect rect = self.customCountView.superview.superview.superview.frame; + rect.origin.y = 0; + self.customCountView.superview.superview.superview.frame = rect; + }]; + self.customCountView.hidden = YES; + self.editTextFiled.text = @""; +} + +- (void)addNotificationCenter { + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHidden:) name:UIKeyboardWillHideNotification object:nil]; +} + +- (void)updateCountStatus { + self.arrowButton.selected = !self.arrowButton.selected; + self.giftCountView.hidden = !self.arrowButton.selected; +} + +#pragma mark - XPGiftCountViewDelegate +- (void)xPGiftCountView:(XPGiftCountView *)view didClickItem:(XPGiftCountModel *)model { + self.arrowButton.selected = NO; + self.giftCountView.hidden= YES; + self.giftCountModel = model; + if (model.isCustomCount) { + if (![[self.superview.superview subviews] containsObject:self.customCountView]) { + [self.superview.superview addSubview:self.customCountView]; + + [self.customCountView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.superview.superview); + make.height.mas_equalTo(40); + }]; + } + self.customCountView.hidden = NO; + [self.editTextFiled becomeFirstResponder]; + } +} + +#pragma mark - UITextFieldDelegate +- (BOOL)textFieldShouldReturn:(UITextField *)textField { + NSString *countStr = [self.editTextFiled.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; + NSInteger count = [countStr integerValue]; + if (count > 9999) { + return NO; + } + [self.editTextFiled resignFirstResponder]; + self.editTextFiled.text = @""; + self.giftCountModel.giftNumber = textField.text; + return YES; +} + +- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { + NSString *regex =@"[0-9]*"; + NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex]; + if ([pred evaluateWithObject:string]) { + return YES; + } + return NO; +} +#pragma mark - Getters And Setters +- (void)setUsingplaceType:(SendGiftType)usingplaceType { + _usingplaceType = usingplaceType; + if (_usingplaceType == SendGiftType_User) { + self.countLabel.textColor = [DJDKMIMOMColor mainTextColor]; + [self.arrowButton setImage:[UIImage imageNamed:@"gift_bar_white_count_arrow"] forState:UIControlStateNormal]; + [self.arrowButton setImage:[UIImage imageNamed:@"gift_bar_white_count_up_arrow"] forState:UIControlStateSelected]; + } else { + self.countLabel.textColor = [DJDKMIMOMColor giftCountTitleColor]; + [self.arrowButton setImage:[UIImage imageNamed:@"gift_bar_count_arrow"] forState:UIControlStateNormal]; + [self.arrowButton setImage:[UIImage imageNamed:@"gift_bar_count_up_arrow"] forState:UIControlStateSelected]; + } +} + +- (void)setDrawGiftCount:(NSInteger)drawGiftCount { + _drawGiftCount = drawGiftCount; + if (_drawGiftCount >= 10) { + self.sendGiftButton.selected = NO; + self.sendOperationView.layer.borderWidth = 1; + } else { + self.sendGiftButton.selected = YES; + self.sendOperationView.layer.borderWidth = 0; + } +} + +- (void)setSendButtonIsEnable:(BOOL)sendButtonIsEnable { + _sendButtonIsEnable = sendButtonIsEnable; + [UIView animateWithDuration:0.3 animations:^{ + self.sendGiftButton.enabled = self.sendButtonIsEnable; + }]; +} + +- (void)setIsShowFirstRecharge:(BOOL)isShowFirstRecharge { + self.firstRechargeButton.hidden = !isShowFirstRecharge; +} + +- (void)setType:(GiftSegmentType)type { + _type = type; + if (!self.giftCountView.hidden) { + self.giftCountView.hidden = YES; + self.arrowButton.selected = NO; + } else { + if (_type == GiftSegmentType_Graffiti) { + self.countLabel.hidden = YES; + self.arrowButton.hidden = YES; + } else { + self.countLabel.hidden = NO; + self.arrowButton.hidden = NO; + } + } + self.giftCountView.segmentType = type; +} + +- (void)setGiftCountModel:(XPGiftCountModel *)giftCountModel { + _giftCountModel = giftCountModel; + self.arrowButton.selected = NO; + if (_giftCountModel) { + self.countLabel.text = _giftCountModel.giftNumber; + } +} + +- (void)setWalletInfoModel:(WalletInfoModel *)walletInfoModel { + _walletInfoModel = walletInfoModel; + if (_walletInfoModel) { + NSString * diamonds = _walletInfoModel.diamonds; + UIColor * normaleColor = [DJDKMIMOMColor giftBalanceColor]; + UIColor * highlightColor =[DJDKMIMOMColor giftCountTitleColor]; + if (_usingplaceType == SendGiftType_User) { + normaleColor = [DJDKMIMOMColor textThirdColor]; + highlightColor = [DJDKMIMOMColor giftNameSelectColor]; + } + NSString * title = [NSString stringWithFormat:@"余额:%@", diamonds]; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:normaleColor}]; + [attribute addAttribute:NSForegroundColorAttributeName value:highlightColor range:[title rangeOfString:diamonds]]; + self.balanceLabel.attributedText = attribute; + } +} + +- (UILabel *)balanceLabel { + if (!_balanceLabel) { + _balanceLabel = [[UILabel alloc] init]; + _balanceLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _balanceLabel.font = [UIFont systemFontOfSize:13]; + } + return _balanceLabel; +} + +- (UIStackView *)rechargeStackView { + if (!_rechargeStackView) { + _rechargeStackView = [[UIStackView alloc] init]; + _rechargeStackView.axis = UILayoutConstraintAxisHorizontal; + _rechargeStackView.distribution = UIStackViewDistributionFill; + _rechargeStackView.alignment = UIStackViewAlignmentCenter; + _rechargeStackView.spacing = 1; + } + return _rechargeStackView; +} + +- (UILabel *)rechargeLabel { + if (!_rechargeLabel) { + _rechargeLabel = [[UILabel alloc] init]; + _rechargeLabel.text = YMLocalizedString(@"XPGiftBarView1"); + _rechargeLabel.font = [UIFont systemFontOfSize:12]; + _rechargeLabel.textColor = [DJDKMIMOMColor giftRechargeColor]; + } + return _rechargeLabel; +} + +- (UIImageView *)rechageImageView { + if (!_rechageImageView) { + _rechageImageView = [[UIImageView alloc] init]; + _rechageImageView.userInteractionEnabled = YES; + _rechageImageView.image = [UIImage imageNamed:@"gift_bar_recharge_arrow"]; + } + return _rechageImageView; +} + + +- (UIStackView *)sendOperationView { + if (!_sendOperationView) { + _sendOperationView = [[UIStackView alloc] init]; + _sendOperationView.axis = UILayoutConstraintAxisHorizontal; + _sendOperationView.distribution = UIStackViewDistributionFill; + _sendOperationView.alignment = UIStackViewAlignmentCenter; + _sendOperationView.spacing = 0; + _sendOperationView.layer.masksToBounds = YES; + _sendOperationView.layer.cornerRadius = 15; + _sendOperationView.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + _sendOperationView.layer.borderWidth = 1; + } + return _sendOperationView; +} + + +- (UILabel *)countLabel { + if (!_countLabel) { + _countLabel = [[UILabel alloc] init]; + _countLabel.textAlignment = NSTextAlignmentCenter; + _countLabel.textColor = [DJDKMIMOMColor giftCountTitleColor]; + _countLabel.text = @"1"; + _countLabel.font = [UIFont systemFontOfSize:13]; + _countLabel.textAlignment = NSTextAlignmentCenter; + } + return _countLabel; +} + +- (UIButton *)arrowButton { + if (!_arrowButton) { + _arrowButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_arrowButton setImage:[UIImage imageNamed:@"gift_bar_count_arrow"] forState:UIControlStateNormal]; + [_arrowButton setImage:[UIImage imageNamed:@"gift_bar_count_up_arrow"] forState:UIControlStateSelected]; + [_arrowButton addTarget:self action:@selector(arrowButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _arrowButton; +} + +- (UIButton *)sendGiftButton { + if (!_sendGiftButton) { + _sendGiftButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_sendGiftButton setTitle:YMLocalizedString(@"XPGiftBarView2") forState:UIControlStateNormal]; + [_sendGiftButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + [_sendGiftButton setTitle:@"赠送中..." forState:UIControlStateDisabled]; + [_sendGiftButton setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateDisabled]; + [_sendGiftButton setTitle:YMLocalizedString(@"XPGiftBarView4") forState:UIControlStateSelected]; + [_sendGiftButton setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateSelected]; + [_sendGiftButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_sendGiftButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor disableButtonColor], [DJDKMIMOMColor disableButtonColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; + [_sendGiftButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor disableButtonColor], [DJDKMIMOMColor disableButtonColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateSelected]; + _sendGiftButton.titleLabel.font = [UIFont systemFontOfSize:12]; + _sendGiftButton.layer.masksToBounds = YES; + _sendGiftButton.layer.cornerRadius = 15; + [_sendGiftButton addTarget:self action:@selector(sendButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _sendGiftButton; +} + + +- (UITextField *)editTextFiled { + if (!_editTextFiled) { + _editTextFiled = [[UITextField alloc] init]; + NSAttributedString * attribute = [[NSAttributedString alloc] initWithString:YMLocalizedString(@"XPGiftBarView5") attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:17], NSForegroundColorAttributeName:[DJDKMIMOMColor secondTextColor]}]; + _editTextFiled.attributedPlaceholder = attribute; + _editTextFiled.borderStyle = UITextBorderStyleNone; + _editTextFiled.returnKeyType = UIReturnKeyDone; + _editTextFiled.delegate = self; + _editTextFiled.textColor = [DJDKMIMOMColor secondTextColor]; + _editTextFiled.keyboardType = UIKeyboardTypeNumberPad; + } + return _editTextFiled; +} + +- (UIButton *)sureButton { + if (!_sureButton) { + _sureButton = [[UIButton alloc] init]; + [_sureButton setTitle:YMLocalizedString(@"XPGiftBarView6") forState:UIControlStateNormal]; + _sureButton.titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _sureButton.titleLabel.font = [UIFont systemFontOfSize:15]; + _sureButton.backgroundColor = [DJDKMIMOMColor appMainColor]; + _sureButton.layer.cornerRadius = 5.0; + _sureButton.layer.masksToBounds = YES; + [_sureButton addTarget:self action:@selector(sureButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _sureButton; +} + + +- (UIView *)customCountView { + if (!_customCountView) { + _customCountView = [[UIView alloc] init]; + _customCountView.backgroundColor = [UIColor whiteColor]; + } + return _customCountView; +} + +- (XPGiftCountView *)giftCountView { + if (!_giftCountView) { + _giftCountView = [[XPGiftCountView alloc] init]; + _giftCountView.delegate = self; + _giftCountView.hidden = YES; + } + return _giftCountView; +} + +- (UIButton *)firstRechargeButton { + if (!_firstRechargeButton) { + _firstRechargeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_firstRechargeButton setImage:[UIImage imageNamed:@"gift_first_recharge_bg"] forState:UIControlStateNormal]; + [_firstRechargeButton setImage:[UIImage imageNamed:@"gift_first_recharge_bg"] forState:UIControlStateSelected]; + [_firstRechargeButton addTarget:self action:@selector(firstRechargeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _firstRechargeButton; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftCountView.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftCountView.h new file mode 100644 index 00000000..993748ea --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftCountView.h @@ -0,0 +1,26 @@ +// +// YMGiftCountView.h +// YUMI +// +// Created by YUMI on 2021/11/11. +// + +#import +#import "XPGiftInfoView.h" +NS_ASSUME_NONNULL_BEGIN +@class XPGiftCountView,XPGiftCountModel; +@protocol XPGiftCountViewDelegate + +///点击了多个个 +- (void)xPGiftCountView:(XPGiftCountView *)view didClickItem:(XPGiftCountModel *)model; + +@end + +@interface XPGiftCountView : UIView +///代理 +@property (nonatomic,weak) id delegate; +/// +@property (nonatomic,assign) GiftSegmentType segmentType; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftCountView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftCountView.m new file mode 100644 index 00000000..546e8eef --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftCountView.m @@ -0,0 +1,163 @@ +// +// YMGiftCountView.m +// YUMI +// +// Created by YUMI on 2021/11/11. +// + +#import "XPGiftCountView.h" +///Third +#import +#import "NSArray+Safe.h" +///Model +#import "XPGiftCountModel.h" +///View +#import "XPGiftCountCollectionViewCell.h" +@interface XPGiftCountView () +//列表 +@property (nonatomic,strong) UICollectionView *countCollectionView; +///礼物数量数据源 +@property (nonatomic, strong) NSArray *giftCountArray; +/// +@property (nonatomic,strong) UIVisualEffectView *effectView; +@end + +@implementation XPGiftCountView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + // 设置毛玻璃效果 + self.layer.cornerRadius = 12; + self.layer.masksToBounds = YES; + UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; + UIVisualEffectView *effectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect]; + self.effectView = effectView; + [self addSubview:effectView]; + self.giftCountArray = [self normalGiftCountDataArray]; + [self addSubview:self.countCollectionView]; + +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(0); + }]; + + [self.effectView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + [self.countCollectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; +} + +///普通礼物的 个数的数据源 +- (NSArray *)normalGiftCountDataArray { + NSMutableArray * datasource = [NSMutableArray array]; + XPGiftCountModel *_otherDic = [XPGiftCountModel initCountModel:YMLocalizedString(@"XPGiftCountView0") giftNumber:@""]; + _otherDic.isCustomCount = YES; + NSArray * array = [self commonGiftCountDataArray]; + [datasource addObjectsFromArray:array]; + [datasource addObject:_otherDic]; + return [datasource copy]; +} + +///背包礼物的数据源 +- (NSArray *)packGiftCountDataArray { + NSMutableArray * datasource = [NSMutableArray array]; + XPGiftCountModel *_allDic = [XPGiftCountModel initCountModel:YMLocalizedString(@"XPGiftCountView1") giftNumber:@"all"]; + _allDic.isTotal = YES; + // 其他数额 + XPGiftCountModel *_otherDic = [XPGiftCountModel initCountModel:YMLocalizedString(@"XPGiftCountView2") giftNumber:@""]; + _otherDic.isCustomCount = YES; + NSArray * array = [self commonGiftCountDataArray]; + [datasource addObjectsFromArray:array]; + [datasource addObject:_allDic]; + [datasource addObject:_otherDic]; + return [datasource copy]; +} + +///一些公用的数据 +- (NSArray *)commonGiftCountDataArray { + XPGiftCountModel *_1Dic = [XPGiftCountModel initCountModel:YMLocalizedString(@"XPGiftCountView3") giftNumber:@"1"]; + XPGiftCountModel *_10Dic = [XPGiftCountModel initCountModel:YMLocalizedString(@"XPGiftCountView4") giftNumber:@"10"]; + XPGiftCountModel *_66Dic = [XPGiftCountModel initCountModel:YMLocalizedString(@"XPGiftCountView5") giftNumber:@"66"]; + XPGiftCountModel *_99Dic = [XPGiftCountModel initCountModel:YMLocalizedString(@"XPGiftCountView6") giftNumber:@"99"]; + XPGiftCountModel *_188Dic = [XPGiftCountModel initCountModel:YMLocalizedString(@"XPGiftCountView7") giftNumber:@"188"]; + XPGiftCountModel *_520Dic = [XPGiftCountModel initCountModel:YMLocalizedString(@"XPGiftCountView8") giftNumber:@"520"]; + XPGiftCountModel *_1314Dic = [XPGiftCountModel initCountModel:YMLocalizedString(@"XPGiftCountView9") giftNumber:@"1314"]; + NSArray * array = @[_1Dic, _10Dic, _66Dic, _99Dic,_188Dic,_520Dic, _1314Dic]; + return array; +} + +#pragma mark - UICollectionViewDelegate && UICollectionViewDataSource +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.giftCountArray.count; +} + +- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPGiftCountCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPGiftCountCollectionViewCell class]) forIndexPath:indexPath]; + XPGiftCountModel *countItem = [self.giftCountArray safeObjectAtIndex1:indexPath.item]; + cell.countModel = countItem; + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + [collectionView deselectItemAtIndexPath:indexPath animated:YES]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGiftCountView:didClickItem:)]) { + XPGiftCountModel *countItem = [self.giftCountArray safeObjectAtIndex1:indexPath.item]; + [self.delegate xPGiftCountView:self didClickItem:countItem]; + } +} + +- (void)setSegmentType:(GiftSegmentType)segmentType { + _segmentType = segmentType; + if (_segmentType == GiftSegmentType_Pack) { + self.giftCountArray = [self packGiftCountDataArray]; + } else { + self.giftCountArray = [self normalGiftCountDataArray]; + } + + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGiftCountView:didClickItem:)]) { + XPGiftCountModel *countItem = [self.giftCountArray safeObjectAtIndex1:0]; + [self.delegate xPGiftCountView:self didClickItem:countItem]; + } + + [self mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(28 * self.giftCountArray.count + 10); + }]; + + + + [self.countCollectionView reloadData]; +} + + +#pragma mark - Getters And Setters +- (UICollectionView *)countCollectionView{ + if (!_countCollectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.itemSize = CGSizeMake(135, 28); + layout.minimumLineSpacing = 0; + layout.minimumInteritemSpacing = 0; + layout.sectionInset = UIEdgeInsetsMake(3, 0, 3, 0); + _countCollectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _countCollectionView.dataSource = self; + _countCollectionView.delegate = self; + _countCollectionView.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.1]; + [_countCollectionView registerClass:[XPGiftCountCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPGiftCountCollectionViewCell class])]; + } + return _countCollectionView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftHeadTypeView.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftHeadTypeView.h new file mode 100644 index 00000000..cde3add0 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftHeadTypeView.h @@ -0,0 +1,35 @@ +// +// YMGiftHeadTypeView.h +// YUMI +// +// Created by YUMI on 2022/9/29. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class XPGiftHeadTypeView; +@protocol XPGiftHeadTypeViewDelegate + +///点击了贵族 +- (void)xPGiftHeadTypeViewDidClickNoble:(XPGiftHeadTypeView *)view; +///点击了首充 +- (void)xPGiftHeadTypeViewDidClickFirstRecharge:(XPGiftHeadTypeView *)view; +///点击了礼物 +- (void)xPGiftHeadTypeViewDidClickGift:(XPGiftHeadTypeView *)view; +///点击了互动 +- (void)xPGiftHeadTypeViewDidClickInteraction:(XPGiftHeadTypeView *)view; + +@end + +@interface XPGiftHeadTypeView : UIView + +///是否展示首充 +@property (nonatomic,assign) BOOL isShowFirstRecharge; + +@property (nonatomic, weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftHeadTypeView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftHeadTypeView.m new file mode 100644 index 00000000..bfa19842 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftHeadTypeView.m @@ -0,0 +1,242 @@ +// +// YMGiftHeadTypeView.m +// YUMI +// +// Created by YUMI on 2022/9/29. +// + +#import "XPGiftHeadTypeView.h" +///Third +#import +#import +/// +#import "DJDKMIMOMColor.h" +#import "NSArray+Safe.h" + +static NSString *kHideGiftViewInteractDot = @"kHideGiftViewInteractDot";//是否隐藏互动红点 + +@interface XPGiftHeadTypeView() + +///礼物 +@property (nonatomic, strong) UIButton *giftButton; + +///分割线 +@property (nonatomic, strong) UIView *bottomDevideView; +///箭头 +@property (nonatomic, strong) UIImageView *arrowImageView; + +///红点 +@property (nonatomic, strong) UIView *redDotView; +///轮播图 +@property (nonatomic,strong) SDCycleScrollView *cycleScrollView; + +@property (nonatomic, strong) NSMutableArray *titleArray; + +@end + +@implementation XPGiftHeadTypeView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.giftButton]; +// [self addSubview:self.devideView]; +// [self addSubview:self.interactButton]; + [self addSubview:self.redDotView]; + [self addSubview:self.arrowImageView]; + [self addSubview:self.cycleScrollView]; + [self addSubview:self.bottomDevideView]; + self.redDotView.hidden = [[NSUserDefaults standardUserDefaults] boolForKey:kHideGiftViewInteractDot]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(44); + }]; + + [self.giftButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(16); + make.centerY.mas_equalTo(self); + make.width.mas_equalTo(40); + }]; + [self.arrowImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.bottomDevideView.mas_top); + make.centerX.mas_equalTo(self.giftButton); + make.size.mas_equalTo(CGSizeMake(9, 7)); + }]; +// [self.interactButton mas_makeConstraints:^(MASConstraintMaker *make) { +// make.centerY.mas_equalTo(self); +// make.left.mas_equalTo(self.devideView.mas_right).mas_offset(8); +// make.width.mas_equalTo(40); +// }]; + [self.redDotView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.giftButton.mas_right).mas_offset(-7); + make.bottom.mas_equalTo(self.giftButton.mas_top).mas_offset(9); + make.width.height.mas_equalTo(8); + }]; + +// [self.devideView mas_makeConstraints:^(MASConstraintMaker *make) { +// make.centerY.mas_equalTo(self); +// make.left.mas_equalTo(self.giftButton.mas_right).mas_offset(8); +// make.width.mas_equalTo(1); +// make.height.mas_equalTo(10); +// }]; + + [self.bottomDevideView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self); + make.left.right.mas_equalTo(0); + make.height.mas_equalTo(1); + }]; + + [self.cycleScrollView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-16); + make.centerY.mas_equalTo(self); + make.width.mas_equalTo(70); + make.height.mas_equalTo(30); + }]; +} + +#pragma mark - SDCycleScrollViewDelegate +- (void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didSelectItemAtIndex:(NSInteger)index { + if (self.titleArray.count > index) { + NSString *str = [self.titleArray safeObjectAtIndex1:index]; + if([str isEqualToString:YMLocalizedString(@"XPGiftHeadTypeView0")]) { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGiftHeadTypeViewDidClickFirstRecharge:)]) { + [self.delegate xPGiftHeadTypeViewDidClickFirstRecharge:self]; + } + } else { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGiftHeadTypeViewDidClickNoble:)]) { + [self.delegate xPGiftHeadTypeViewDidClickNoble:self]; + } + } + } +} + +#pragma mark - Response +- (void)giftButtonAction:(UIButton *)sender { + if (!sender.isSelected) { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGiftHeadTypeViewDidClickGift:)]) { + [self.delegate xPGiftHeadTypeViewDidClickGift:self]; + } + } + sender.selected = YES; + + sender.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; + [self.arrowImageView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.bottomDevideView.mas_top); + make.centerX.mas_equalTo(self.giftButton); + make.size.mas_equalTo(CGSizeMake(9, 7)); + }]; +} + +- (void)interactButtonAction:(UIButton *)sender { + if (!sender.isSelected) { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGiftHeadTypeViewDidClickInteraction:)]) { + [self.delegate xPGiftHeadTypeViewDidClickInteraction:self]; + } + } + sender.selected = YES; + self.giftButton.selected = NO; + if(![[NSUserDefaults standardUserDefaults] boolForKey:kHideGiftViewInteractDot]) { + self.redDotView.hidden = YES; + [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kHideGiftViewInteractDot]; + [[NSUserDefaults standardUserDefaults] synchronize]; + } + sender.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; + self.giftButton.titleLabel.font = [UIFont systemFontOfSize:14]; + + [self.arrowImageView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.bottomDevideView.mas_top); + make.centerX.mas_equalTo(self.giftButton); + make.size.mas_equalTo(CGSizeMake(9, 7)); + }]; +} + +#pragma mark - setter +- (void)setIsShowFirstRecharge:(BOOL)isShowFirstRecharge { + if (isShowFirstRecharge) { + self.titleArray = [NSMutableArray arrayWithObjects:YMLocalizedString(@"XPGiftHeadTypeView1"), nil]; + self.cycleScrollView.imageURLStringsGroup = @[@"gift_first_recharge_bg"]; + } else { + + } +} + +#pragma mark - getter +- (UIButton *)giftButton { + if (!_giftButton) { + UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; + button.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; + [button addTarget:self action:@selector(giftButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [button setTitle:YMLocalizedString(@"XPGiftHeadTypeView2") forState:UIControlStateNormal]; + [button setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateNormal]; + [button setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; + button.selected = YES; + _giftButton = button; + } + return _giftButton; +} + + + +- (UIView *)redDotView { + if (!_redDotView) { + _redDotView = [[UIView alloc] init]; + _redDotView.backgroundColor = UIColorFromRGB(0xFB486A); + _redDotView.layer.cornerRadius = 4; + _redDotView.layer.masksToBounds = YES; + _redDotView.layer.borderWidth = 1; + _redDotView.layer.borderColor = [UIColor whiteColor].CGColor; + } + return _redDotView; +} + + + +- (UIView *)bottomDevideView { + if (!_bottomDevideView) { + _bottomDevideView = [[UIView alloc] init]; + _bottomDevideView.backgroundColor = UIColorRGBAlpha(0xffffff, 0.1); + } + return _bottomDevideView; +} + +- (SDCycleScrollView *)cycleScrollView { + if (!_cycleScrollView) { + _cycleScrollView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectZero delegate:self placeholderImage:nil]; + _cycleScrollView.pageControlAliment = SDCycleScrollViewPageContolAlimentCenter; + _cycleScrollView.showPageControl = NO; + _cycleScrollView.backgroundColor = [UIColor colorWithWhite:1 alpha:0.00]; + _cycleScrollView.bannerImageViewContentMode = UIViewContentModeScaleAspectFit; + _cycleScrollView.pageControlBottomOffset = -10; + _cycleScrollView.autoScrollTimeInterval = 5; + } + return _cycleScrollView; +} + +- (NSMutableArray *)titleArray { + if (!_titleArray) { + _titleArray = [NSMutableArray array]; + } + return _titleArray; +} + +- (UIImageView *)arrowImageView { + if (!_arrowImageView) { + UIImageView *imageView = [[UIImageView alloc] init]; + imageView.image = [UIImage imageNamed:@"room_gift_panel_arrow"]; + + _arrowImageView = imageView; + } + return _arrowImageView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftInfoView.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftInfoView.h new file mode 100644 index 00000000..2ebd33e2 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftInfoView.h @@ -0,0 +1,63 @@ +// +// YMGiftMiddleView.h +// YUMI +// +// Created by YUMI on 2021/11/9. +// + +#import +#import "XPSendGiftView.h" +///Model +#import "RoomInfoModel.h" +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, GiftSegmentType) { + GiftSegmentType_Normal = 1, ///普通的礼物 + GiftSegmentType_Lucky,///幸运礼物 + GiftSegmentType_Noble,///贵族礼物 + GiftSegmentType_WeekStar, ///周星礼物 + GiftSegmentType_Pack,///背包礼物 + GiftSegmentType_Graffiti,///涂鸦礼物 + GiftSegmentType_Anchor,///个播 + GiftSegmentType_Punish,///惩罚礼物 +}; + + +@class GiftInfoModel,XPGiftInfoView, GiftReceiveInfoModel; + +@protocol XPGiftInfoViewDelegate + +///点击了切换不同礼物的tabbar +- (void)xPGiftInfoView:(XPGiftInfoView *)view didClickSegment:(GiftSegmentType)type; + +///点击了某个item +- (void)xPGiftInfoView:(XPGiftInfoView *)view didClickItem:(GiftInfoModel *)info type:(GiftSegmentType)type; + +@end + +@interface XPGiftInfoView : UIView +///使用的地方 +@property (nonatomic,assign) SendGiftType usingplaceType; +///普通礼物/幸运礼物/贵族礼物 +@property (nonatomic,strong) NSArray *normalOriginArray; +///背包礼物 +@property (nonatomic,strong) NSArray *packOriginArray; +///送背包礼物更新数据源 +- (void)updatePackSource:(GiftReceiveInfoModel *)giftReceiveInfo numberUser:(NSInteger)numberUser; +///代理 +@property (nonatomic,weak) id delegate; +///最后一次选中的礼物 +@property (nonatomic,strong,readonly) GiftInfoModel *lastSelectGift; +///当前用户贵族等级 +@property (nonatomic, assign) NSInteger curUserNobleLevel; + +@property (nonatomic, copy) NSString *defaultSelectGiftId; +///房间类型 +@property (nonatomic,assign) RoomType roomType; +///头部礼物类型变更 +/// - Parameter headType: 1:礼物 2:互动 +- (void)giftHeadTypeHadChange:(NSInteger)headType; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftInfoView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftInfoView.m new file mode 100644 index 00000000..21a78465 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftInfoView.m @@ -0,0 +1,781 @@ +// +// YMGiftMiddleView.m +// YUMI +// +// Created by YUMI on 2021/11/9. +// + +#import "XPGiftInfoView.h" +///Third +#import +///Tool +#import "YUMIMacroUitls.h" +#import "YUMIHtmlUrl.h" +#import "ThemeColor+SendGift.h" +#import "NSArray+Safe.h" +#import "UIImage+Utils.h" +///Model +#import "GiftInfoModel.h" +#import "GiftReceiveInfoModel.h" +#import "RoomInfoModel.h" +///View +#import "XPGiftItemCollectionViewCell.h" +#import "XPGiftEmptyCollectionViewCell.h" +#import "XPGiftWeekStarCollectionViewCell.h" +#import "XPGiftCollectionViewFlowLayout.h" + +static NSString *kSendGiftViewHidePunishNewIcon = @"kSendGiftViewHidePunishNewIcon";///是否隐藏惩罚礼物“新”标识 + +@interface XPGiftInfoView () +///滚动的容器 +@property (nonatomic,strong) UIScrollView *scrollView; +@property (nonatomic,strong) UIStackView *segmentStackView; +///导航条背景 +@property (nonatomic,strong) UIImageView *segmentBgView; +///普通礼物 +@property (nonatomic,strong) UIButton *normalGiftButton; +///背包礼物 +@property (nonatomic,strong) UIButton *packGiftButton; +///幸运礼物 +@property (nonatomic,strong) UIButton *luckyGiftButton; +///周星礼物 +@property (nonatomic, strong) UIButton *weekStarButton; +///涂鸦礼物 +@property (nonatomic,strong) UIButton *graffitiButton; +///惩罚礼物 +@property (nonatomic, strong) UIButton *punishButton; +///新标识图标 +@property (nonatomic, strong) UIImageView *freshIconImage; +///个播礼物 +@property (nonatomic,strong) UIButton *anchorButton; +///背包总价值 +@property (nonatomic,strong) UILabel *totalValueLabel; +/// +@property (nonatomic,strong) UIStackView *giftStackView; +///l礼物列表 +@property (nonatomic,strong) UICollectionView *giftcollectionView; +///分页控件 +@property (nonatomic, strong) UIPageControl *pageController; +///展示的数据源 +@property (nonatomic,strong) NSMutableArray *datasource; +///普通礼物的数据源 +@property (nonatomic,strong) NSArray *giftArray; +/////幸运礼物的数据源 +@property (nonatomic,strong) NSArray *giftLuckyArray; +///贵族礼物的数据源 +@property (nonatomic, strong) NSArray *giftNobleArray; +///周星礼物的数据源 +@property (nonatomic, strong) NSArray *giftWeekStarArray; +/////背包礼物的数据源 +@property (nonatomic,strong) NSArray *giftPackArray; +///涂鸦礼物数据源 +@property (nonatomic,strong) NSArray *giftGraffitiArray; +///个播礼物数据源 +@property (nonatomic,strong) NSArray *anchorArray; +///惩罚礼物数据源 +@property (nonatomic, strong) NSArray *punishArray; +///总的价值 +@property (nonatomic,strong) NSAttributedString *totalAttribute; +///当前展示的数据的类型 +@property (nonatomic,assign) GiftSegmentType segmentType; +///最后一次选中的礼物 +@property (nonatomic,strong) GiftInfoModel *lastSelectGift; + +@property (nonatomic, assign) NSInteger selectIndex; +///当前选中的page +@property (nonatomic,assign) NSInteger selectCurrentPage; +@end + +@implementation XPGiftInfoView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Response +- (void)didClickGiftSegmentAction:(UIButton *)sender { + self.normalGiftButton.selected = NO; + self.luckyGiftButton.selected = NO; + self.packGiftButton.selected = NO; + self.weekStarButton.selected = NO; + self.graffitiButton.selected = NO; + self.anchorButton.selected = NO; + self.punishButton.selected = NO; + sender.selected = !sender.selected; + self.segmentType = sender.tag; +} + +#pragma mark - Public Method +- (void)updatePackSource:(GiftReceiveInfoModel *)giftReceiveInfo numberUser:(NSInteger)numberUser { + GiftInfoModel * giftInfo = [self findGiftInfoByGiftId:giftReceiveInfo.giftId.integerValue]; + giftInfo.count -= giftReceiveInfo.giftNum * numberUser; + if (giftInfo.count == 0) { + [self.datasource removeObject:giftInfo]; + } + [self.giftcollectionView reloadData]; +} + +- (void)giftHeadTypeHadChange:(NSInteger)headType { + if (headType == 1) { + [self.graffitiButton removeFromSuperview]; + [self.punishButton removeFromSuperview]; + [self.freshIconImage removeFromSuperview]; + self.freshIconImage = nil; + [self.segmentStackView addArrangedSubview:self.normalGiftButton]; + [self.segmentStackView addArrangedSubview:self.luckyGiftButton]; + [self.segmentStackView addArrangedSubview:self.weekStarButton]; + if(self.roomType == RoomType_Anchor) { + [self.segmentStackView addArrangedSubview:self.anchorButton]; + [self didClickGiftSegmentAction:self.anchorButton]; + } + if(self.segmentType != GiftSegmentType_Pack) { + [self didClickGiftSegmentAction:self.normalGiftButton]; + } + } else { + [self.normalGiftButton removeFromSuperview]; + [self.luckyGiftButton removeFromSuperview]; + [self.weekStarButton removeFromSuperview]; + [self.anchorButton removeFromSuperview]; + [self.segmentStackView addArrangedSubview:self.graffitiButton]; + [self.segmentStackView addArrangedSubview:self.punishButton]; + BOOL hiden = [[NSUserDefaults standardUserDefaults] boolForKey:kSendGiftViewHidePunishNewIcon]; + if(!hiden) { + [self addSubview:self.freshIconImage]; + [self.freshIconImage mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.punishButton.mas_right).mas_offset(-5); + make.bottom.mas_equalTo(self.punishButton.mas_top).mas_offset(5); + make.size.mas_equalTo(CGSizeMake(24, 10)); + }]; + } + if(self.segmentType != GiftSegmentType_Pack) { + [self didClickGiftSegmentAction:self.graffitiButton]; + } + } +} + + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.segmentBgView]; + [self addSubview:self.scrollView]; + [self addSubview:self.giftStackView]; + [self addSubview:self.packGiftButton]; + [self addSubview:self.totalValueLabel]; + [self.scrollView addSubview:self.segmentStackView]; + ///分段控制 + [self.segmentStackView addArrangedSubview:self.normalGiftButton]; + [self.segmentStackView addArrangedSubview:self.luckyGiftButton]; + [self.segmentStackView addArrangedSubview:self.weekStarButton]; + [self.segmentStackView addArrangedSubview:self.anchorButton]; + ///礼物 + [self.giftStackView addArrangedSubview:self.giftcollectionView]; + [self.giftStackView addArrangedSubview:self.pageController]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(44 + 108 * 2 + 10 + 10 + 15); + }]; + + [self.segmentStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.bottom.leading.trailing.height.mas_equalTo(self.scrollView); + }]; + + [self.segmentBgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self); + make.height.mas_equalTo(self.scrollView); + }]; + + [self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self).mas_offset(15); + make.right.mas_equalTo(self.packGiftButton.mas_left); + make.top.mas_equalTo(self); + make.height.mas_equalTo(44); + }]; + [self.packGiftButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-15); + make.centerY.height.mas_equalTo(self.scrollView); + make.width.mas_equalTo(30); + }]; + [self.totalValueLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.packGiftButton.mas_left).mas_offset(-6); + make.centerY.mas_equalTo(self.packGiftButton); + }]; + + [self.giftStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.segmentStackView.mas_bottom).offset(10); + make.left.right.mas_equalTo(self); + make.height.mas_equalTo(108 * 2 + 20); + }]; + + + [self.pageController mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(10); + }]; +} + +- (void)resetSelectGift:(NSArray *)array { + for (GiftInfoModel * gift in array) { + gift.isSelected = NO; + } +} + +- (void)createPackTotalValueAttribute { + __block NSInteger giftTotal = 0; + [self.packOriginArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj isKindOfClass:GiftInfoModel.class]) { + GiftInfoModel *gift = (GiftInfoModel *)obj; + giftTotal += gift.count * gift.goldPrice; + } + }]; + NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:@"总价值:" attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:10],NSForegroundColorAttributeName:[DJDKMIMOMColor textThirdColor]}]; + [str appendAttributedString:[[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@",[self countFormatCoinStr:giftTotal]] attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12],NSForegroundColorAttributeName:[DJDKMIMOMColor appMainColor]}]]; + NSTextAttachment *attachImage = [[NSTextAttachment alloc] init]; + attachImage.image = [UIImage imageNamed:@"gift_diamond"]; + attachImage.bounds = CGRectMake(0, 0, 9, 9); + [str appendAttributedString:[[NSMutableAttributedString alloc] initWithAttributedString:[NSAttributedString attributedStringWithAttachment:attachImage]]]; + self.totalAttribute = str; +} + +/** + 将数量格式化为字符串 万之后用xx.xxW显示并保留小数点2位,最多显示9999W+; + @param number 数值 + @return 格式化后的字符串 + */ +- (NSString *)countFormatCoinStr:(NSInteger)number { + NSString *numStr = [NSString stringWithFormat:@"%li", number]; + NSInteger num = number; + if (num > 99990000) { + numStr = @"9999W+"; + } else if (num >= 10000) { + CGFloat numF = num / 10000.0; + numStr = [NSString stringWithFormat:@"%.2fW+", numF]; + } + return numStr; +} + +- (void)dealSelectGift:(GiftInfoModel *)giftInfo { + self.lastSelectGift = giftInfo; + if (self.segmentType == GiftSegmentType_Pack) { + giftInfo.sourceType = GiftSourceType_Pack; + } else { + giftInfo.sourceType = GiftSourceType_Normal; + } + giftInfo.isSelected = YES; +} + +// 根据礼物id查找 +- (GiftInfoModel *)findGiftInfoByGiftId:(NSInteger)giftId { + for (int i=0; i 0) { + [self resetSelectGift:self.datasource]; + GiftInfoModel * giftInfo= [self.datasource safeObjectAtIndex1:indexPath.item]; + [self dealSelectGift:giftInfo]; + [self.giftcollectionView reloadData]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGiftInfoView:didClickItem:type:)]) { + [self.delegate xPGiftInfoView:self didClickItem:giftInfo type:self.segmentType]; + } + } +} + +#pragma mark - XPGiftWeekStarCollectionViewCellDelegate +- (void)xPGiftWeekStarCollectionViewCell:(XPGiftWeekStarCollectionViewCell *)view didSelectGift:(GiftInfoModel *)giftInfo { + [self dealSelectGift:giftInfo]; +} + +#pragma mark - Getters And Setters +- (void)setRoomType:(RoomType)roomType { + _roomType = roomType; + if (_roomType == RoomType_Anchor) { + self.anchorButton.hidden = NO; + } +} + + +- (void)setSegmentType:(GiftSegmentType)segmentType { + if (segmentType == _segmentType) { + return; + } + [_datasource removeAllObjects]; + _segmentType = segmentType; + [self resetSelectGift:self.giftArray]; + [self resetSelectGift:self.packOriginArray]; + [self resetSelectGift:self.giftLuckyArray]; + [self resetSelectGift:self.giftNobleArray]; + [self resetSelectGift:self.giftWeekStarArray]; + [self resetSelectGift:self.giftGraffitiArray]; + [self resetSelectGift:self.anchorArray]; + [self resetSelectGift:self.punishArray]; + self.totalValueLabel.hidden = YES; + switch (_segmentType) { + case GiftSegmentType_Normal: + [self.datasource addObjectsFromArray:self.giftArray]; + break; + case GiftSegmentType_Lucky: + [self.datasource addObjectsFromArray:self.giftLuckyArray]; + break; + case GiftSegmentType_Noble: { + [self.datasource addObjectsFromArray:self.giftNobleArray]; + } + break; + case GiftSegmentType_WeekStar: { + [self.datasource addObjectsFromArray:self.giftWeekStarArray]; + } + break; + case GiftSegmentType_Pack: + { + [self.datasource addObjectsFromArray:self.packOriginArray]; + self.totalValueLabel.hidden = NO; + self.totalValueLabel.attributedText= self.totalAttribute; + } + break; + case GiftSegmentType_Graffiti: + [self.datasource addObjectsFromArray:self.giftGraffitiArray]; + break; + case GiftSegmentType_Anchor: + [self.datasource addObjectsFromArray:self.anchorArray]; + break; + case GiftSegmentType_Punish: + { + [self.datasource addObjectsFromArray:self.punishArray]; + [self.freshIconImage removeFromSuperview]; + self.freshIconImage = nil; + [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kSendGiftViewHidePunishNewIcon]; + [[NSUserDefaults standardUserDefaults] synchronize]; + } + break; + default: + [self.datasource addObjectsFromArray:self.giftArray]; + break; + } + NSInteger currentPage = 0; + if (self.datasource.count > 0) { + if (self.defaultSelectGiftId.length && (self.segmentType == GiftSegmentType_Normal | self.segmentType == GiftSegmentType_Pack)) { + for (int i = 0 ; i *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + +- (UIScrollView *)scrollView { + if (!_scrollView) { + _scrollView = [[UIScrollView alloc] init]; + _scrollView.backgroundColor = [UIColor clearColor]; + _scrollView.showsHorizontalScrollIndicator = NO; + } + return _scrollView; +} + +- (UIImageView *)segmentBgView { + if (!_segmentBgView) { + _segmentBgView = [[UIImageView alloc] init]; + _segmentBgView.userInteractionEnabled = YES; + _segmentBgView.contentMode = UIViewContentModeScaleAspectFill; + _segmentBgView.image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor colorWithHexString:@"#E5FFFF"], [DJDKMIMOMColor colorWithHexString:@"#FFFFFF"]] gradientType:GradientTypeTopToBottom imgSize:CGSizeMake(375, 44)]; + _segmentBgView.hidden = YES; + } + return _segmentBgView; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftLuckyGiftBroadcastView.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftLuckyGiftBroadcastView.h new file mode 100644 index 00000000..8b30385d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftLuckyGiftBroadcastView.h @@ -0,0 +1,28 @@ +// +// YMGiftLuckyGiftBoradCastView.h +// YUMI +// +// Created by YUMI on 2022/10/8. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPGiftLuckyGiftBroadcastViewDelegate + +///点击了玩法说明 +- (void)xPGiftLuckyGiftBroadcastViewPlayDescClick; + +@end + +@interface XPGiftLuckyGiftBroadcastView : UIView + +@property (nonatomic, weak) id delegate; + + +@property (nonatomic,strong) NSArray *records; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftLuckyGiftBroadcastView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftLuckyGiftBroadcastView.m new file mode 100644 index 00000000..54cda75b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftLuckyGiftBroadcastView.m @@ -0,0 +1,199 @@ +// +// YMGiftLuckyGiftBoradCastView.m +// YUMI +// +// Created by YUMI on 2022/10/8. +// + +#import "XPGiftLuckyGiftBroadcastView.h" +///Third +#import +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NSArray+Safe.h" +///Model +#import "GiftLuckyBroadcastModel.h" + + +@interface XPGiftLuckyGiftBroadcastCell : UICollectionViewCell +@property (nonatomic,strong) UILabel *titleLabel; +@property (nonatomic,strong) GiftLuckyBroadcastModel *giftInfo; +@end + +@implementation XPGiftLuckyGiftBroadcastCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.contentView); + }]; +} + +- (NSMutableAttributedString *)createTextAttribute:(NSString *)text color:(UIColor *)color { + if (text == nil || text.length <= 0) { + text = @""; + } + NSMutableAttributedString *attribute = [[NSMutableAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName:kFontMedium(11),NSForegroundColorAttributeName:color}]; + return attribute; +} + +#pragma mark - Getters And Setters +- (void)setGiftInfo:(GiftLuckyBroadcastModel *)giftInfo { + _giftInfo = giftInfo; + if (_giftInfo) { + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPGiftLuckyGiftBroadcastCell0") color:[UIColor whiteColor]]]; + NSString * nick = _giftInfo.nick; + if (nick.length > 6) { + nick = [NSString stringWithFormat:@"%@...",[nick substringToIndex:5]]; + } + [attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:@"%@ " , nick] color:[DJDKMIMOMColor colorWithHexString:@"#FFE785"]]]; + [attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:YMLocalizedString(@"XPGiftLuckyGiftBroadcastCell1"), giftInfo.luckyBagName] color:[UIColor whiteColor]]]; + [attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:@"%@ " , _giftInfo.giftName] color:[DJDKMIMOMColor colorWithHexString:@"#FFE785"]]]; + self.titleLabel.attributedText = attribute; + } +} + + + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.adjustsFontSizeToFitWidth = YES; + } + return _titleLabel; +} + +@end + +@interface XPGiftLuckyGiftBroadcastView() + +///背景 +@property (nonatomic, strong) UIImageView *bgImageView; +///玩法说明 +@property (nonatomic, strong) UIButton *playBtn; + +///文字轮播 +@property (nonatomic, strong) SDCycleScrollView *cycleScrollView; + +@end + +@implementation XPGiftLuckyGiftBroadcastView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.bgImageView]; + [self addSubview:self.playBtn]; + [self addSubview:self.cycleScrollView]; +} + +- (void)initSubViewConstraints { + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(0); + make.left.right.mas_equalTo(self).inset(kGetScaleWidth(6)); + make.height.mas_equalTo(kGetScaleWidth(56)); + }]; + + [self.playBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.trailing.mas_equalTo(-kGetScaleWidth(18)); + make.centerY.equalTo(self.bgImageView); + }]; + [self.cycleScrollView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(60)); + make.right.mas_equalTo(-kGetScaleWidth(70)); + make.top.bottom.mas_equalTo(self.bgImageView); + }]; + + +} + +#pragma mark - action +- (void)playButtonAction { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGiftLuckyGiftBroadcastViewPlayDescClick)]) { + [self.delegate xPGiftLuckyGiftBroadcastViewPlayDescClick]; + } +} +#pragma mark - SDCycleScrollViewDelegate +- (Class)customCollectionViewCellClassForCycleScrollView:(SDCycleScrollView *)view { + return XPGiftLuckyGiftBroadcastCell.class; +} + +- (void)setupCustomCell:(UICollectionViewCell *)cell forIndex:(NSInteger)index cycleScrollView:(SDCycleScrollView *)view { + XPGiftLuckyGiftBroadcastCell *myCell = (XPGiftLuckyGiftBroadcastCell *)cell; + GiftLuckyBroadcastModel * info = [self.records safeObjectAtIndex1:index]; + myCell.giftInfo = info; + +} +#pragma mark - Getters And Setters +- (void)setRecords:(NSArray *)records { + _records = records; + if (_records.count > 0) { + NSMutableArray * array = [NSMutableArray array]; + for (GiftLuckyBroadcastModel * item in _records) { + [array addObject:item.giftName]; + } + if (array.count > 0) { + self.cycleScrollView.imageURLStringsGroup = array; + [self.cycleScrollView autoScroll]; + } + } +} + +- (UIImageView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[UIImageView alloc] init]; + _bgImageView.image = [UIImage imageNamed:@"gift_lucky_broadcast_bg"]; + _bgImageView.contentMode = UIViewContentModeScaleToFill; + } + return _bgImageView; +} + +- (UIButton *)playBtn{ + if(!_playBtn){ + _playBtn = [UIButton new]; + [_playBtn setTitle:YMLocalizedString(@"XPGiftLuckyGiftBroadcastView0") forState:UIControlStateNormal]; + [_playBtn setTitleColor:UIColorFromRGB(0xEB547C) forState:UIControlStateNormal]; + _playBtn.titleLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightSemibold]; + [_playBtn addTarget:self action:@selector(playButtonAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _playBtn; +} + +- (SDCycleScrollView *)cycleScrollView { + if (!_cycleScrollView) { + _cycleScrollView = [[SDCycleScrollView alloc] init]; + _cycleScrollView.backgroundColor = [UIColor clearColor]; + _cycleScrollView.layer.masksToBounds = YES; + _cycleScrollView.delegate = self; + _cycleScrollView.showPageControl = NO; + _cycleScrollView.autoScrollTimeInterval = 3.0; + [_cycleScrollView disableScrollGesture]; + } + return _cycleScrollView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftTwelveStarBroadcastView.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftTwelveStarBroadcastView.h new file mode 100644 index 00000000..84b16ab5 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftTwelveStarBroadcastView.h @@ -0,0 +1,27 @@ +// +// YMGiftTwelveStarBroadcastView.h +// YUMI +// +// Created by YUMI on 2022/12/7. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class GiftTwelveStarFirstModel, XPGiftTwelveStarBroadcastView; + +@protocol XPGiftTwelveStarBroadcastViewDelegate + +- (void)xPGiftTwelveStarBroadcastView:(XPGiftTwelveStarBroadcastView *)view didClickDetail:(UIButton *)sender; +@end + +@interface XPGiftTwelveStarBroadcastView : UIView + +@property (nonatomic, strong) GiftTwelveStarFirstModel *giftInfo; + +///代理 +@property (nonatomic,weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftTwelveStarBroadcastView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftTwelveStarBroadcastView.m new file mode 100644 index 00000000..57444f7a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftTwelveStarBroadcastView.m @@ -0,0 +1,248 @@ +// +// YMGiftTwelveStarBroadcastView.m +// YUMI +// +// Created by YUMI on 2022/12/7. +// + +#import "XPGiftTwelveStarBroadcastView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "TTPopup.h" +#import "XCCurrentVCStackManager.h" +#import "XPWebViewController.h" +#import "YUMIHtmlUrl.h" +#import "NetImageView.h" +///Model +#import "GiftTwelveStarFirstModel.h" + +@interface XPGiftTwelveStarBroadcastView() + +@property (nonatomic, strong) UIView *mainView; +///背景 +@property (nonatomic, strong) UIImageView *bgImageView; +///活动入口 +@property (nonatomic, strong) UIButton *weekStarButton; +///魅力头像 +@property (nonatomic, strong) NetImageView *iconImageView; +///贡献头像 +@property (nonatomic, strong) NetImageView *avatarImageView; +///魅力标题 +@property (nonatomic, strong) UILabel *charmLabel; +///贡献标题 +@property (nonatomic, strong) UILabel *contributeLabel; + +@property (nonatomic, strong) UIImageView *sexImageView; + +@property (nonatomic, strong) UILabel *desLabel; + +@end + +@implementation XPGiftTwelveStarBroadcastView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.bgImageView]; + [self addSubview:self.mainView]; + [self.mainView addSubview:self.weekStarButton]; + [self.mainView addSubview:self.iconImageView]; + [self.mainView addSubview:self.avatarImageView]; + [self.mainView addSubview:self.charmLabel]; + [self.mainView addSubview:self.sexImageView]; + [self.mainView addSubview:self.contributeLabel]; + [self.mainView addSubview:self.desLabel]; + + self.iconImageView.hidden = YES; + self.avatarImageView.hidden = YES; + self.charmLabel.hidden = YES; + self.contributeLabel.hidden = YES; + self.sexImageView.hidden = YES; +} + +- (void)initSubViewConstraints { + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.width.mas_equalTo(355); + make.top.bottom.mas_equalTo(self); + }]; + [self.mainView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.bgImageView); + make.height.mas_equalTo(36); + make.bottom.mas_equalTo(0); + }]; + [self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.mainView).mas_offset(33); + make.width.height.mas_equalTo(30); + make.centerY.mas_equalTo(self.mainView); + }]; + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.iconImageView.mas_right).mas_offset(8); + make.width.height.mas_equalTo(24); + make.centerY.mas_equalTo(self.mainView); + }]; + [self.charmLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(14); + make.bottom.mas_equalTo(self.avatarImageView.mas_centerY); + make.left.mas_equalTo(self.avatarImageView.mas_right).mas_offset(8); + }]; + + [self.contributeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(14); + make.top.mas_equalTo(self.charmLabel.mas_bottom); + make.left.mas_equalTo(self.charmLabel); + }]; + [self.sexImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(10); + make.left.mas_equalTo(self.contributeLabel.mas_right).mas_offset(2); + make.centerY.mas_equalTo(self.contributeLabel); + }]; + [self.weekStarButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(18); + make.centerY.mas_equalTo(self.mainView); + make.right.mas_equalTo(self.mainView).mas_offset(-25); + make.width.mas_equalTo(64); + }]; + [self.desLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.mainView); + make.left.mas_equalTo(self.mainView).mas_offset(54); + }]; +} + +#pragma mark - action +- (void)playButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGiftTwelveStarBroadcastView:didClickDetail:)]) { + [self.delegate xPGiftTwelveStarBroadcastView:self didClickDetail:sender]; + } +} + +- (void)setGiftInfo:(GiftTwelveStarFirstModel *)giftInfo { + if (giftInfo.nick) { + self.iconImageView.imageUrl = giftInfo.markUrl; + self.avatarImageView.imageUrl = giftInfo.avatar; + self.charmLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPGiftTwelveStarBroadcastView0"), giftInfo.twelveStarName]; + self.contributeLabel.text = giftInfo.nick; + NSString *imageName = giftInfo.gender == 1 ? @"common_sex_male" : @"common_sex_female"; + self.sexImageView.image = [UIImage imageNamed:imageName]; + self.iconImageView.hidden = NO; + self.avatarImageView.hidden = NO; + self.charmLabel.hidden = NO; + self.contributeLabel.hidden = NO; + self.sexImageView.hidden = NO; + self.desLabel.hidden = YES; + } else { + self.iconImageView.hidden = YES; + self.avatarImageView.hidden = YES; + self.charmLabel.hidden = YES; + self.contributeLabel.hidden = YES; + self.sexImageView.hidden = YES; + self.desLabel.hidden = NO; + } +} + +- (UIView *)mainView { + if (!_mainView) { + _mainView = [[UIView alloc] init]; + } + return _mainView; +} + +- (UIImageView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[UIImageView alloc] init]; + _bgImageView.image = [UIImage imageNamed:@"gift_constellationBanner_bg"]; + _bgImageView.contentMode = UIViewContentModeScaleAspectFill; + _bgImageView.userInteractionEnabled = YES; + } + return _bgImageView; +} + +- (NetImageView *)iconImageView { + if (!_iconImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _iconImageView = [[NetImageView alloc] initWithConfig:config]; + _iconImageView.userInteractionEnabled = YES; + } + return _iconImageView; +} + +- (UILabel *)charmLabel { + if (!_charmLabel) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + label.textColor = UIColorFromRGB(0xFDE19B); + label.text = YMLocalizedString(@"XPGiftTwelveStarBroadcastView1"); + _charmLabel = label; + } + return _charmLabel; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 12; + _avatarImageView.userInteractionEnabled = YES; + } + return _avatarImageView; +} + +- (UILabel *)contributeLabel { + if (!_contributeLabel) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:10]; + label.textColor = [UIColor whiteColor]; + label.text = YMLocalizedString(@"XPGiftTwelveStarBroadcastView2"); + _contributeLabel = label; + } + return _contributeLabel; +} + +- (UIButton *)weekStarButton { + if (!_weekStarButton) { + UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; + button.backgroundColor = UIColorRGBAlpha(0x000000, 0.36); + [button addTarget:self action:@selector(playButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [button setTitle:@"活动详情 >" forState:UIControlStateNormal]; + [button setTitleColor:UIColorFromRGB(0x00EEFF) forState:UIControlStateNormal]; + button.titleLabel.font = [UIFont systemFontOfSize:10]; + button.layer.masksToBounds = YES; + button.layer.cornerRadius = 9; + _weekStarButton = button; + } + return _weekStarButton; +} + +- (UIImageView *)sexImageView { + if (!_sexImageView) { + _sexImageView = [[UIImageView alloc] init]; + } + return _sexImageView; +} + +- (UILabel *)desLabel { + if (!_desLabel) { + _desLabel = [[UILabel alloc] init]; + _desLabel.text = @"星座物语,限定开启星座月!"; + _desLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _desLabel.textColor = UIColorFromRGB(0xFDE19B); + } + return _desLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftUsersView.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftUsersView.h new file mode 100644 index 00000000..400919f2 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftUsersView.h @@ -0,0 +1,28 @@ +// +// YMGiftUsersView.h +// YUMI +// +// Created by YUMI on 2021/11/9. +// + +#import +#import "XPSendGiftView.h" +NS_ASSUME_NONNULL_BEGIN +@class XPGiftUserInfoModel, XPGiftUsersView; +@protocol XPGiftUsersViewDelegate +///选中的用户 +- (void)xPGiftUsersView:(XPGiftUsersView *)view didSelectUsers:(NSArray *)selectUids; + +@end +@interface XPGiftUsersView : UIView +///选中的人 送给谁礼物 +@property (nonatomic,strong, readonly) NSMutableArray *selectUserArray; +///是不是选择了全部麦上的人 +@property (nonatomic,assign, readonly) BOOL isSelectAll; +///麦序变化 赋值使用 +- (void)configGiftUsers:(NSArray *)users; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftUsersView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftUsersView.m new file mode 100644 index 00000000..c162830b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftUsersView.m @@ -0,0 +1,281 @@ +// +// YMGiftUsersView.m +// YUMI +// +// Created by YUMI on 2021/11/9. +// + +#import "XPGiftUsersView.h" +///Third +#import +///Tool +#import "AccountInfoStorage.h" +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "NSArray+Safe.h" +///Model +#import "UserInfoModel.h" +#import "XPGiftUserInfoModel.h" +///view +#import "XPGiftUserCollectionViewCell.h" +@interface XPGiftUsersView () +///麦上的送礼物 +@property (nonatomic,strong) UIStackView *stackView; +///全麦 +@property (nonatomic,strong) UIButton *allMicroButton; +///列表 +@property (nonatomic,strong) UICollectionView *collectionView; +///单独送一个人礼物 +@property (nonatomic,strong) UIStackView *oneStackView; +///昵称 +@property (nonatomic,strong) NetImageView *avatarImageView; +///头像 +@property (nonatomic,strong) UILabel *nickLabel; +///原始的数据 +@property (nonatomic,strong) NSArray *userArray; +///选中的人 +@property (nonatomic,strong) NSMutableArray *selectUserArray; +///是不是选择了全部麦上的人 +@property (nonatomic,assign) BOOL isSelectAll; +@end + +@implementation XPGiftUsersView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Response +- (void)allMicroButtonAction:(UIButton *)sender { + sender.selected = !sender.selected; + [self.userArray enumerateObjectsUsingBlock:^(XPGiftUserInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + obj.isSelect = sender.selected; + NSString * selectUid = [NSString stringWithFormat:@"%ld", obj.uid]; + if (obj.isSelect) { + if (![self.selectUserArray containsObject:selectUid]) { + [self.selectUserArray addObject:selectUid]; + } + } else { + if ([self.selectUserArray containsObject:selectUid]) { + [self.selectUserArray removeObject:selectUid]; + } + } + }]; + self.isSelectAll = sender.selected; + [self.collectionView reloadData]; + + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGiftUsersView:didSelectUsers:)]) { + [self.delegate xPGiftUsersView:self didSelectUsers:self.selectUserArray]; + } +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor];; + [self addSubview:self.stackView]; + [self addSubview:self.oneStackView]; + [self.stackView addArrangedSubview:self.allMicroButton]; + [self.stackView addArrangedSubview:self.collectionView]; + + [self.oneStackView addArrangedSubview:self.avatarImageView]; + [self.oneStackView addArrangedSubview:self.nickLabel]; + +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(43 + 15 * 2); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self).inset(15); + make.top.bottom.mas_equalTo(self); + }]; + + [self.oneStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self).inset(15); + make.top.bottom.mas_equalTo(self); + }]; + + [self.allMicroButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(50, 28)); + }]; + + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(43); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(38, 38)); + }]; +} + +/// 查找麦序 坑位上有人的麦序 +/// @param users 麦序列表 +- (NSArray *)findSendGiftAllUsers:(NSArray *)users { + NSMutableArray * tempArray = [NSMutableArray array]; + NSString * uid = [AccountInfoStorage instance].getUid; + NSArray * newArray = [users sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { + XPGiftUserInfoModel * model1 = obj1; + XPGiftUserInfoModel * model2 = obj2; + NSComparisonResult resuest = [model1.position compare:model2.position]; + return resuest; + }]; + + for (int i = 0; i < newArray.count; i++) { + XPGiftUserInfoModel * userInfo = [newArray safeObjectAtIndex1:i]; + if (userInfo && userInfo.uid > 0 && userInfo.uid != uid.integerValue) { ///自己在麦上不显示在送礼物列表中 + NSString * uid = [NSString stringWithFormat:@"%ld", userInfo.uid]; + if (userInfo.isSelect) { + [self.selectUserArray addObject:uid]; + } + [tempArray addObject:userInfo]; + } + } + return [tempArray copy]; +} + +#pragma mark - Public Method +- (void)configGiftUsers:(NSArray *)users { + self.userArray = [self findSendGiftAllUsers:users]; + if (users.count == 1 && users.firstObject.position == nil) {///只有一个 并且用户不再麦序中的话 + XPGiftUserInfoModel *userInfo = users.firstObject; + self.avatarImageView.imageUrl = userInfo.avatar; + self.nickLabel.text = userInfo.nick; + self.stackView.hidden = YES; + self.oneStackView.hidden = NO; + } else { + [self.collectionView reloadData]; + self.oneStackView.hidden = YES; + self.stackView.hidden = NO; + } +} + +#pragma mark - UICollectionViewDataSource And UICollectionViewDelegate +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.userArray.count; +} + +-(__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPGiftUserCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPGiftUserCollectionViewCell class]) forIndexPath:indexPath]; + XPGiftUserInfoModel * queue = [self.userArray safeObjectAtIndex1:indexPath.row]; + cell.userInfo = queue; + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + [collectionView deselectItemAtIndexPath:indexPath animated:YES]; + XPGiftUserInfoModel * queue = [self.userArray safeObjectAtIndex1:indexPath.row]; + queue.isSelect = !queue.isSelect; + [self.collectionView reloadData]; + NSString * selectUid = [NSString stringWithFormat:@"%ld", queue.uid]; + if (queue.isSelect) { + [self.selectUserArray addObject:selectUid]; + } else { + if ([self.selectUserArray containsObject:selectUid]) { + [self.selectUserArray removeObject:selectUid]; + } + } + if (self.selectUserArray.count == self.userArray.count) { + self.allMicroButton.selected = YES; + self.isSelectAll = YES; + } else { + self.allMicroButton.selected = NO; + self.isSelectAll = NO; + } + + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGiftUsersView:didSelectUsers:)]) { + [self.delegate xPGiftUsersView:self didSelectUsers:self.selectUserArray]; + } +} +#pragma mark - Getters And Setters +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentCenter; + _stackView.spacing = 10; + } + return _stackView; +} + +- (UIStackView *)oneStackView { + if (!_oneStackView) { + _oneStackView = [[UIStackView alloc] init]; + _oneStackView.axis = UILayoutConstraintAxisHorizontal; + _oneStackView.distribution = UIStackViewDistributionFill; + _oneStackView.alignment = UIStackViewAlignmentCenter; + _oneStackView.spacing = 10; + } + return _oneStackView; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 38/2; + } + return _avatarImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:15]; + _nickLabel.textColor = [UIColor whiteColor]; + } + return _nickLabel; +} + +- (UIButton *)allMicroButton { + if (!_allMicroButton) { + _allMicroButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_allMicroButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor cancelButtonGradientStartColor], [DJDKMIMOMColor cancelButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_allMicroButton setTitleColor:[DJDKMIMOMColor appMainColor] forState:UIControlStateNormal]; + [_allMicroButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateSelected]; + [_allMicroButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateSelected]; + [_allMicroButton setTitle:YMLocalizedString(@"XPGiftUsersView0") forState:UIControlStateSelected]; + [_allMicroButton setTitle:YMLocalizedString(@"XPGiftUsersView1") forState:UIControlStateNormal]; + _allMicroButton.titleLabel.font = [UIFont systemFontOfSize:13]; + _allMicroButton.layer.masksToBounds = YES; + _allMicroButton.layer.cornerRadius = 28 /2; + [_allMicroButton addTarget:self action:@selector(allMicroButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _allMicroButton; +} + +- (UICollectionView *)collectionView{ + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + layout.itemSize = CGSizeMake(38, 43); + layout.minimumInteritemSpacing = 4; + layout.sectionInset = UIEdgeInsetsMake(0, 0, 0,0); + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.backgroundColor = [UIColor clearColor]; + _collectionView.showsHorizontalScrollIndicator = NO; + [_collectionView registerClass:[XPGiftUserCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPGiftUserCollectionViewCell class])]; + } + return _collectionView; +} + +- (NSMutableArray *)selectUserArray { + if (!_selectUserArray) { + _selectUserArray = [NSMutableArray array]; + } + return _selectUserArray; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftWeekStarBroadcastView.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftWeekStarBroadcastView.h new file mode 100644 index 00000000..5f07541b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftWeekStarBroadcastView.h @@ -0,0 +1,28 @@ +// +// YMGiftWeekStarBroadcastView.h +// YUMI +// +// Created by YUMI on 2022/10/8. +// + +#import +#import "GiftInfoModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPGiftWeekStarBroadcastViewDelegate + +///点击了周星榜入口 +- (void)xPGiftWeekStarBroadcastViewWeekStarClick; + +@end + +@interface XPGiftWeekStarBroadcastView : UIView + +@property (nonatomic, weak) id delegate; + +@property (nonatomic, strong) GiftInfoModel *giftInfo; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftWeekStarBroadcastView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftWeekStarBroadcastView.m new file mode 100644 index 00000000..f99a6840 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftWeekStarBroadcastView.m @@ -0,0 +1,261 @@ +// +// YMGiftWeekStarBroadcastView.m +// YUMI +// +// Created by YUMI on 2022/10/8. +// + +#import "XPGiftWeekStarBroadcastView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" + +@interface XPGiftWeekStarBroadcastView() + +///背景 +@property (nonatomic, strong) UIImageView *bgImageView; +///周星榜入口 +@property (nonatomic, strong) UIButton *weekStarButton; +///魅力头像 +@property (nonatomic, strong) NetImageView *charmImageView; +///贡献头像 +@property (nonatomic, strong) NetImageView *contributeImageView; +///魅力标题 +@property (nonatomic, strong) UILabel *charmLabel; +///贡献标题 +@property (nonatomic, strong) UILabel *contributeLabel; +///魅力昵称背景 +@property (nonatomic, strong) UIView *charmBgView; +///魅力昵称 +@property (nonatomic, strong) UILabel *charmNickLabel; +///贡献昵称背景 +@property (nonatomic, strong) UIView *contributeBgView; +///贡献昵称 +@property (nonatomic, strong) UILabel *contributeNickLabel; + +@end + +@implementation XPGiftWeekStarBroadcastView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.bgImageView]; + [self addSubview:self.weekStarButton]; + [self addSubview:self.charmImageView]; + [self addSubview:self.charmLabel]; + [self addSubview:self.charmBgView]; + [self addSubview:self.charmNickLabel]; + [self addSubview:self.contributeImageView]; + [self addSubview:self.contributeLabel]; + [self addSubview:self.contributeBgView]; + [self addSubview:self.contributeNickLabel]; +} + +- (void)initSubViewConstraints { + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(0); + make.left.right.mas_equalTo(self).inset(10); + make.height.mas_equalTo(44); + }]; + [self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.bgImageView).mas_offset(10); + make.width.height.mas_equalTo(30); + make.centerY.mas_equalTo(self.bgImageView); + }]; + [self.charmLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.charmImageView); + make.height.mas_equalTo(12); + make.left.mas_equalTo(self.charmImageView.mas_right).mas_offset(12); + }]; + [self.charmBgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.charmNickLabel); + make.height.mas_equalTo(16); + make.left.right.mas_equalTo(self.charmNickLabel).inset(-6); + }]; + [self.charmNickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.charmLabel.mas_bottom).mas_offset(6); + make.height.mas_equalTo(12); + make.left.mas_equalTo(self.charmLabel); + }]; + + [self.contributeImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.charmLabel.mas_right).mas_offset(24); + make.width.height.mas_equalTo(30); + make.centerY.mas_equalTo(self.bgImageView); + }]; + [self.contributeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.contributeImageView); + make.height.mas_equalTo(12); + make.left.mas_equalTo(self.contributeImageView.mas_right).mas_offset(12); + }]; + [self.contributeBgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.contributeNickLabel); + make.height.mas_equalTo(16); + make.left.right.mas_equalTo(self.contributeNickLabel).inset(-6); + }]; + [self.contributeNickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.contributeLabel.mas_bottom).mas_offset(6); + make.height.mas_equalTo(12); + make.left.mas_equalTo(self.contributeLabel); + }]; + [self.weekStarButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(30); + make.centerY.mas_equalTo(self.bgImageView); + make.right.mas_equalTo(self.bgImageView).mas_offset(-7); + make.width.mas_equalTo(38); + }]; +} + +#pragma mark - action +- (void)playButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGiftWeekStarBroadcastViewWeekStarClick)]) { + [self.delegate xPGiftWeekStarBroadcastViewWeekStarClick]; + } +} + +- (void)setGiftInfo:(GiftInfoModel *)giftInfo { + if (giftInfo.firstCharmRankUser) { + self.charmImageView.imageUrl = giftInfo.firstCharmRankUser.avatar; + NSString * nick = giftInfo.firstCharmRankUser.nick; + if (nick.length > 8) { + nick = [nick substringFromIndex:8]; + } + self.charmNickLabel.text = nick; + } else { + self.charmImageView.image = [UIImageConstant defaultEmptyAvatarPlaceholder]; + self.charmNickLabel.text = YMLocalizedString(@"XPGiftWeekStarBroadcastView0"); + } + + if (giftInfo.firstLevelRankUser) { + self.contributeImageView.imageUrl = giftInfo.firstLevelRankUser.avatar; + NSString * nick = giftInfo.firstLevelRankUser.nick; + if (nick.length > 8) { + nick = [nick substringFromIndex:8]; + } + self.contributeNickLabel.text = nick; + } else { + self.contributeImageView.image = [UIImageConstant defaultEmptyAvatarPlaceholder]; + self.contributeNickLabel.text = YMLocalizedString(@"XPGiftWeekStarBroadcastView1"); + } +} + +- (UIImageView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[UIImageView alloc] init]; + _bgImageView.image = [UIImage imageNamed:@"gift_weekStar_background"]; + _bgImageView.contentMode = UIViewContentModeScaleAspectFill; + } + return _bgImageView; +} + +- (NetImageView *)charmImageView { + if (!_charmImageView) { + NetImageConfig *config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultEmptyAvatarPlaceholder]; + _charmImageView = [[NetImageView alloc] initWithConfig:config]; + _charmImageView.userInteractionEnabled = YES; + _charmImageView.layer.masksToBounds = YES; + _charmImageView.layer.cornerRadius = 15; + } + return _charmImageView; +} + +- (UILabel *)charmLabel { + if (!_charmLabel) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:10]; + label.textColor = [DJDKMIMOMColor mainTextColor]; + label.text = YMLocalizedString(@"XPGiftWeekStarBroadcastView2"); + _charmLabel = label; + } + return _charmLabel; +} + +- (UIView *)charmBgView { + if (!_charmBgView) { + UIView *view = [[UIView alloc] init]; + view.backgroundColor = UIColorRGBAlpha(0xffffff, 0.2); + view.layer.cornerRadius = 8; + view.layer.masksToBounds = YES; + _charmBgView = view; + } + return _charmBgView; +} + +- (UILabel *)charmNickLabel { + if (!_charmNickLabel) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:10]; + label.textColor = [UIColor whiteColor]; + label.text = YMLocalizedString(@"XPGiftWeekStarBroadcastView3"); + _charmNickLabel = label; + } + return _charmNickLabel; +} + +- (NetImageView *)contributeImageView { + if (!_contributeImageView) { + NetImageConfig *config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultEmptyAvatarPlaceholder]; + _contributeImageView = [[NetImageView alloc] initWithConfig:config]; + _contributeImageView.userInteractionEnabled = YES; + _contributeImageView.layer.masksToBounds = YES; + _contributeImageView.layer.cornerRadius = 15; + } + return _contributeImageView; +} + +- (UILabel *)contributeLabel { + if (!_contributeLabel) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:10]; + label.textColor = [DJDKMIMOMColor mainTextColor]; + label.text = YMLocalizedString(@"XPGiftWeekStarBroadcastView4"); + _contributeLabel = label; + } + return _contributeLabel; +} + +- (UIView *)contributeBgView { + if (!_contributeBgView) { + UIView *view = [[UIView alloc] init]; + view.backgroundColor = UIColorRGBAlpha(0xffffff, 0.2); + view.layer.cornerRadius = 8; + view.layer.masksToBounds = YES; + _contributeBgView = view; + } + return _contributeBgView; +} +- (UILabel *)contributeNickLabel { + if (!_contributeNickLabel) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:10]; + label.textColor = [UIColor whiteColor]; + label.text = YMLocalizedString(@"XPGiftWeekStarBroadcastView5"); + _contributeNickLabel = label; + } + return _contributeNickLabel; +} + +- (UIButton *)weekStarButton { + if (!_weekStarButton) { + UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; + [button setImage:[UIImage imageNamed:@"gift_weekStar_entrance"] forState:UIControlStateNormal]; + [button addTarget:self action:@selector(playButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _weekStarButton = button; + } + return _weekStarButton; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGraffitiGiftView.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGraffitiGiftView.h new file mode 100644 index 00000000..873b2eff --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGraffitiGiftView.h @@ -0,0 +1,37 @@ +// +// YMGraffitiGiftView.h +// YUMI +// +// Created by YUMI on 2022/8/22. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPGraffitiGiftView; +@protocol XPGraffitiGiftViewDelegate +///点击切换 +- (void)xPGraffitiGiftView:(XPGraffitiGiftView *)view didClickChange:(UILabel *)sender; +///点击了关闭 +- (void)xPGraffitiGiftView:(XPGraffitiGiftView *)view didClickClose:(UIButton *)sender; +///绘画完成了 +- (void)xPGraffitiGiftView:(XPGraffitiGiftView *)view didDrawCompletion:(NSArray *)pointArray; +@end + +@interface XPGraffitiGiftView : UIView +@property (nonatomic,strong) UIImage *image; +///代理 +@property (nonatomic,weak) id delegate; +///价格 +@property (nonatomic,assign) double price; +///动画的数据 +@property (nonatomic,strong) NSArray *animationArray; +///选择的用户个数 +@property (nonatomic,assign) NSInteger selectUidNumber; + +- (void)clearData; +- (void)cratePriceAttribute; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGraffitiGiftView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGraffitiGiftView.m new file mode 100644 index 00000000..1b427e30 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGraffitiGiftView.m @@ -0,0 +1,412 @@ +// +// YMGraffitiGiftView.m +// YUMI +// +// Created by YUMI on 2022/8/22. +// + +#import "XPGraffitiGiftView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "XNDJTDDLoadingTool.h" + +@interface XPGraffitiGiftView () +///回话的内容 +@property (nonatomic,strong) UIView * contentView; +///绘画的view +@property (nonatomic,strong) UIView * drawView; +///类型 +@property (nonatomic,strong) UIStackView *tipsStackView; +///✋🏻 +@property (nonatomic,strong) UIImageView *handImageView; +///提醒 +@property (nonatomic,strong) UILabel *tipsLabel; +///toolView +@property (nonatomic,strong) UIView * toolView; +///至少花多少个 +@property (nonatomic,strong) UILabel *titleLabel; +///类型 +@property (nonatomic,strong) UIStackView *toolStackView; +///撤销 +@property (nonatomic,strong) UIButton *repealButton; +///删除 +@property (nonatomic,strong) UIButton *deleteButton; +///关闭 +@property (nonatomic,strong) UIButton *closeButton; +///手指滑动的point +@property (nonatomic,assign) CGPoint panPoint; +///开始的point +@property (nonatomic,assign) CGPoint beginPoint; +///两个涂鸦的间距 +@property (nonatomic,assign) CGFloat step; +/// +@property (nonatomic,assign) int index; +///是否展示超过最大值的 +@property (nonatomic,assign) BOOL isShowMaxToast; +@property (nonatomic,strong) NSMutableArray *viewsArray; +@property (nonatomic,strong) NSMutableArray *indexArray; +@property (nonatomic,strong) NSMutableArray *> *pointArray; + +@end + +@implementation XPGraffitiGiftView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.isShowMaxToast = YES; + self.step = 10; + UIPanGestureRecognizer * panGes = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panAction:)]; + [self addGestureRecognizer:panGes]; + self.backgroundColor = [UIColor clearColor]; + [self addSubview:self.contentView]; + + [self.contentView addSubview:self.tipsStackView]; + [self.contentView addSubview:self.drawView]; + [self.contentView addSubview:self.toolView]; + + [self.tipsStackView addArrangedSubview:self.handImageView]; + [self.tipsStackView addArrangedSubview:self.tipsLabel]; + + [self.toolView addSubview:self.titleLabel]; + [self.toolView addSubview:self.toolStackView]; + + [self.toolStackView addArrangedSubview:self.repealButton]; + [self.toolStackView addArrangedSubview:self.deleteButton]; + [self.toolStackView addArrangedSubview:self.closeButton]; +} + +- (void)initSubViewConstraints { + CGFloat avatarHeight = (43 + 15 * 2); + CGFloat bottomHeight = (45); + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth); + make.height.mas_equalTo(KScreenHeight - avatarHeight - bottomHeight); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + + [self.tipsStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.contentView); + make.width.mas_equalTo(KScreenWidth); + }]; + + [self.drawView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.contentView).offset(kSafeAreaTopHeight); + make.left.right.mas_equalTo(self.contentView); + make.bottom.mas_equalTo(self.toolView.mas_top); + }]; + + [self.handImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(78, 93)); + }]; + + + [self.toolView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.left.right.mas_equalTo(self.contentView); + make.height.mas_equalTo(56); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.toolView).offset(15); + make.centerY.mas_equalTo(self.toolView); + }]; + + [self.toolStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.toolView).offset(-15); + make.height.mas_equalTo(22); + make.centerY.mas_equalTo(self.toolView); + }]; + + [self.repealButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(22); + }]; + + [self.deleteButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(22); + }]; + + [self.closeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(22); + }]; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + self.tipsStackView.hidden = YES; + UITouch *touch = touches.anyObject; + CGPoint point = [touch locationInView:self.contentView]; + self.beginPoint = point; +} + +- (void)panAction:(UIPanGestureRecognizer *)tap { + if (self.pointArray.count >= 300) { + if (self.isShowMaxToast) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPGraffitiGiftView0")]; + self.isShowMaxToast = YES; + } + return; + } + + if (tap.state == UIGestureRecognizerStateBegan) { + [self.indexArray addObject:[NSNumber numberWithInteger:self.viewsArray.count]]; + } else if(tap.state == UIGestureRecognizerStateEnded) { + self.isShowMaxToast = YES; + } + CGPoint point = [tap translationInView:self.contentView]; + CGFloat dx = [self myAbs:point.x - self.panPoint.x]; + CGFloat dy = [self myAbs:point.y - self.panPoint.y]; + CGPoint drawPoint = CGPointMake(self.beginPoint.x + point.x , self.beginPoint.y + point.y); + if ((dx * dx + dy * dy) > 2 * self.step * self.step) { + [self addSubView:drawPoint]; + self.panPoint = point; + } +} + +- (int)myAbs:(int)num { + if (num >= 0) { + return num; + } + return -num; +} + + +- (void)addSubView:(CGPoint)point { + UIImageView * imageView = [[UIImageView alloc] init]; + imageView.contentMode = UIViewContentModeScaleAspectFill; + imageView.layer.masksToBounds = YES; + imageView.image = self.image; + imageView.frame = CGRectMake(point.x, point.y, 20, 20); + [self.drawView addSubview:imageView]; + [self.viewsArray addObject:imageView]; + [self.pointArray addObject:@[@([self changeWidthDraw:point.x]), @([self changeHeightDraw:point.y])]]; + [self cratePriceAttribute]; + if (self.pointArray.count >= 10 && self.delegate && [self.delegate respondsToSelector:@selector(xPGraffitiGiftView:didDrawCompletion:)]) { + [self.delegate xPGraffitiGiftView:self didDrawCompletion:self.pointArray]; + } +} + +- (NSInteger)changeWidthDraw:(CGFloat)number { + return number / KScreenWidth * 1000; +} + +- (NSInteger)changeHeightDraw:(CGFloat)number { + return number / KScreenHeight * 1000; +} + +- (void)clearData { + [self.viewsArray makeObjectsPerformSelector:@selector(removeFromSuperview)]; + [self.viewsArray removeAllObjects]; + [self.pointArray removeAllObjects]; + [self.indexArray removeAllObjects]; +} +#pragma mark - Event Response + +- (void)repealButtonAction:(UIButton *)sender { + NSInteger index = [self.indexArray lastObject].integerValue; + if (index < self.viewsArray.count) { + NSArray * array = [self.viewsArray subarrayWithRange:NSMakeRange(index, self.viewsArray.count - index)]; + NSArray * array2 = [self.pointArray subarrayWithRange:NSMakeRange(index, self.pointArray.count - index)]; + [self.pointArray removeObjectsInArray:array2]; + [self.viewsArray removeObjectsInArray:array]; + if (array.count) { + [array makeObjectsPerformSelector:@selector(removeFromSuperview)]; + } + if (self.indexArray.count > 0) { + [self.indexArray removeLastObject]; + } + [self cratePriceAttribute]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGraffitiGiftView:didDrawCompletion:)]) { + [self.delegate xPGraffitiGiftView:self didDrawCompletion:self.pointArray]; + } + } +} + +- (void)deleteButtonAction:(UIButton *)sender { + [self clearData]; + [self cratePriceAttribute]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGraffitiGiftView:didDrawCompletion:)]) { + [self.delegate xPGraffitiGiftView:self didDrawCompletion:self.pointArray]; + } +} + +- (void)closeButtonAction:(UIButton *)sender { + [self clearData]; + [self cratePriceAttribute]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGraffitiGiftView:didDrawCompletion:)]) { + [self.delegate xPGraffitiGiftView:self didDrawCompletion:self.pointArray]; + } + + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGraffitiGiftView:didClickClose:)]) { + [self.delegate xPGraffitiGiftView:self didClickClose:sender]; + } +} + +- (void)cratePriceAttribute { + if (self.viewsArray.count < 10) { + NSString * title = YMLocalizedString(@"XPGraffitiGiftView1"); + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14], NSForegroundColorAttributeName:[UIColor whiteColor]}]; + self.titleLabel.attributedText = attribute; + } else { + NSInteger number = self.selectUidNumber > 0 ? self.selectUidNumber : 0; + NSString * count = [NSString stringWithFormat:@"%ld", self.viewsArray.count]; + NSString * price = [NSString stringWithFormat:@"%.0f", self.viewsArray.count * self.price * number]; + NSString * title = [NSString stringWithFormat:YMLocalizedString(@"XPGraffitiGiftView2"), count, price]; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14], NSForegroundColorAttributeName:[UIColor whiteColor]}]; + [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor appMainColor] range:[title rangeOfString:count]]; + [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor appMainColor] range:[title rangeOfString:price]]; + self.titleLabel.attributedText = attribute; + } + +} + +#pragma mark - Getters And Setters +- (void)setSelectUidNumber:(NSInteger)selectUidNumber { + _selectUidNumber = selectUidNumber; + [self cratePriceAttribute]; +} + +- (UIView *)contentView { + if (!_contentView) { + _contentView = [[UIView alloc] init]; + _contentView.backgroundColor = UIColorRGBAlpha(0x000000, 0.7); + } + return _contentView; +} + +- (UIView *)drawView { + if (!_drawView) { + _drawView = [[UIView alloc] init]; + _drawView.backgroundColor = [UIColor clearColor]; + _drawView.layer.masksToBounds = YES; + } + return _drawView; +} + +- (UIStackView *)tipsStackView { + if (!_tipsStackView) { + _tipsStackView = [[UIStackView alloc] init]; + _tipsStackView.axis = UILayoutConstraintAxisVertical; + _tipsStackView.distribution = UIStackViewDistributionFill; + _tipsStackView.alignment = UIStackViewAlignmentCenter; + _tipsStackView.spacing = 17; + } + return _tipsStackView; +} + +- (UIImageView *)handImageView { + if (!_handImageView) { + _handImageView = [[UIImageView alloc] init]; + _handImageView.userInteractionEnabled = YES; + _handImageView.image = [UIImage imageNamed:@"room_gift_graffiti_hand"]; + } + return _handImageView; +} + +- (UILabel *)tipsLabel { + if (!_tipsLabel) { + _tipsLabel = [[UILabel alloc] init]; + _tipsLabel.font = [UIFont systemFontOfSize:14]; + _tipsLabel.textColor = [DJDKMIMOMColor textThirdColor]; + _tipsLabel.text = YMLocalizedString(@"XPGraffitiGiftView3"); + } + return _tipsLabel; +} + +- (UIView *)toolView { + if (!_toolView) { + _toolView = [[UIView alloc] init]; + _toolView.backgroundColor = UIColorRGBAlpha(0xFFFFFF, 0.2); + CAShapeLayer * layer = [CAShapeLayer layer]; + layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, 56) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(8, 8)].CGPath; + _toolView.layer.mask = layer; + } + return _toolView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:14]; + _titleLabel.textColor = [UIColor whiteColor]; + _titleLabel.text = YMLocalizedString(@"XPGraffitiGiftView4"); + } + return _titleLabel; +} + +- (UIStackView *)toolStackView { + if (!_toolStackView) { + _toolStackView = [[UIStackView alloc] init]; + _toolStackView.axis = UILayoutConstraintAxisHorizontal; + _toolStackView.distribution = UIStackViewDistributionFill; + _toolStackView.alignment = UIStackViewAlignmentCenter; + _toolStackView.spacing = 12; + } + return _toolStackView; +} + +- (UIButton *)repealButton { + if (!_repealButton) { + _repealButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_repealButton setImage:[UIImage imageNamed:@"room_gift_graffiti_repeal"] forState:UIControlStateNormal]; + [_repealButton setImage:[UIImage imageNamed:@"room_gift_graffiti_repeal"] forState:UIControlStateSelected]; + [_repealButton addTarget:self action:@selector(repealButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _repealButton; +} + +- (UIButton *)deleteButton { + if (!_deleteButton) { + _deleteButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_deleteButton setImage:[UIImage imageNamed:@"room_gift_graffiti_delete"] forState:UIControlStateNormal]; + [_deleteButton setImage:[UIImage imageNamed:@"room_gift_graffiti_delete"] forState:UIControlStateSelected]; + [_deleteButton addTarget:self action:@selector(deleteButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _deleteButton; +} + +- (UIButton *)closeButton { + if (!_closeButton) { + _closeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_closeButton setImage:[UIImage imageNamed:@"room_gift_graffiti_close"] forState:UIControlStateNormal]; + [_closeButton setImage:[UIImage imageNamed:@"room_gift_graffiti_close"] forState:UIControlStateSelected]; + [_closeButton addTarget:self action:@selector(closeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _closeButton; +} + +- (NSMutableArray *)indexArray { + if (!_indexArray) { + _indexArray = [NSMutableArray array]; + } + return _indexArray; +} + +- (NSMutableArray *)pointArray { + if (!_pointArray) { + _pointArray = [NSMutableArray array]; + } + return _pointArray; +} + +- (NSMutableArray *)viewsArray { + if (!_viewsArray) { + _viewsArray = [NSMutableArray array]; + } + return _viewsArray; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPSendGiftView.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPSendGiftView.h new file mode 100644 index 00000000..d6e98759 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPSendGiftView.h @@ -0,0 +1,39 @@ +// +// YMSendGiftView.h +// YUMI +// +// Created by YUMI on 2021/11/9. +// + +#import "MvpViewController.h" +#import "RoomHostDelegate.h" +#import "XPGiftUserInfoModel.h" +NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(NSInteger, SendGiftType) { + SendGiftType_Room = 1, ///房间内送礼物 + SendGiftType_User, ///送给某一个人 +}; + +@interface XPSendGiftView : MvpViewController +///房间内才需要 +@property (nonatomic,weak) id delegate; +/// 送礼物的 +/// @param type 送礼物的类型 +/// @param uid 送礼物的人 +- (instancetype)initWithType:(SendGiftType)type uid:(NSString * __nullable)uid; + +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; +- (instancetype)copy NS_UNAVAILABLE; +- (instancetype)mutableCopy NS_UNAVAILABLE; + +///对外只需要一个 获取麦序的接口 +///完全封闭的一个组件 +- (void)configGiftUsers:(NSArray *)users; + +///选中的礼物id +@property (nonatomic, copy) NSString *selectGiftId; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPSendGiftView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPSendGiftView.m new file mode 100644 index 00000000..5cb4b1ff --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPSendGiftView.m @@ -0,0 +1,814 @@ +// +// YMSendGiftView.m +// YUMI +// +// Created by YUMI on 2021/11/9. +// + +#import "XPSendGiftView.h" +///Third +#import +#import +#import +///Tool +#import "YUMIMacroUitls.h" +#import "XPGiftPresenter.h" +#import "TTPopup.h" +#import "ThemeColor+SendGift.h" +#import "StatisticsServiceHelper.h" +#import "YUMIHtmlUrl.h" +#import "AccountInfoStorage.h" +#import "NSArray+Safe.h" +#import "ClientConfig.h" +#import "XCCurrentVCStackManager.h" +///Model +#import "GiftInfoModel.h" +#import "XPGiftCountModel.h" +#import "GiftReceiveInfoModel.h" +#import "AttachmentModel.h" +#import "RoomInfoModel.h" +#import "UserInfoModel.h" +#import "WalletInfoModel.h" +#import "XPMessageRemoteExtModel.h" +///View +#import "XPGiftUsersView.h" +#import "XPGiftInfoView.h" +#import "XPGiftBarView.h" +#import "XPRoomHalfWebView.h" +#import "XPGraffitiGiftView.h" +#import "XPGiftHeadTypeView.h" +#import "XPGiftLuckyGiftBroadcastView.h" +#import "XPGiftTwelveStarBroadcastView.h" +///P +#import "XPGiftProtocol.h" +///VC +#import "XPMineRechargeViewController.h" +#import "XPIAPRechargeViewController.h" +#import "XPWebViewController.h" + +UIKIT_EXTERN NSString * kShowFirstRechargeView; + +@interface XPSendGiftView ()< XPGiftBarViewDelegate, XPGiftProtocol, XPGiftInfoViewDelegate, XPGraffitiGiftViewDelegate, XPGiftUsersViewDelegate, XPGiftHeadTypeViewDelegate, XPGiftLuckyGiftBroadcastViewDelegate, XPGiftTwelveStarBroadcastViewDelegate> +///顶部的区域 +@property (nonatomic,strong) UIView * topView; +///内容区域 +@property (nonatomic,strong) UIView *contentView; +///模糊背景 +@property (nonatomic, strong) UIVisualEffectView *effectView; +/// +@property (nonatomic,strong) UIStackView *stackView; +///幸运礼物广播 +@property (nonatomic, strong) XPGiftLuckyGiftBroadcastView *luckyBroadcastView; +///星座礼物广播 +@property (nonatomic, strong) XPGiftTwelveStarBroadcastView *constellationBanner; +///礼物类型(普通/互动) +@property (nonatomic, strong) XPGiftHeadTypeView *headTypeView; +///送礼物的人 +@property (nonatomic,strong) XPGiftUsersView *userView; +///送的什么礼物 +@property (nonatomic,strong) XPGiftInfoView *giftInfoView; +///送多少礼物 +@property (nonatomic,strong) XPGiftBarView *giftBarView; +///底部的View +@property (nonatomic,strong) UIView * bottomView; +///涂鸦礼物 +@property (nonatomic,strong) XPGraffitiGiftView *graffitiView; +///房主的uid/私聊的话 就是用户的uid +@property (nonatomic,copy) NSString *roomUid; +///使用的地方 +@property (nonatomic,assign) SendGiftType usingplaceType; +///普通礼物的重试次数 +@property (nonatomic,assign) int normalGiftRetryCount; +///背包礼物的重试次数 +@property (nonatomic,assign) int packGiftRetryCount; +@property (nonatomic,strong) NSArray *userArray; +///涂鸦礼物的坐标 +@property (nonatomic,strong) NSArray *graffitiPoint; +///选择了滑块的类型 +@property (nonatomic,assign) GiftSegmentType segmentType; +///福袋礼物全服记录 +@property (nonatomic,strong) NSArray *records; +@end + +@implementation XPSendGiftView + +- (XPGiftPresenter *)createPresenter { + return [[XPGiftPresenter alloc] init]; +} + + +- (instancetype)initWithType:(SendGiftType)type uid:(NSString * __nullable)uid{ + if (self = [super init]) { + self.modalPresentationStyle = UIModalPresentationOverFullScreen; + self.roomUid = uid; + self.usingplaceType = type; + } + return self; +} + +- (void)viewDidLoad { + [self initSubViews]; + [self initSubViewConstraints]; + [self initHttpRequest]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.topView]; + [self.view addSubview:self.contentView]; + [self.contentView addSubview:self.effectView]; + [self.contentView addSubview:self.stackView]; + [self.stackView addArrangedSubview:self.graffitiView]; + [self.stackView addArrangedSubview:self.headTypeView]; + [self.stackView addArrangedSubview:self.userView]; + [self.stackView addArrangedSubview:self.giftInfoView]; + [self.stackView addArrangedSubview:self.giftBarView]; + [self.stackView addArrangedSubview:self.bottomView]; +} + +- (void)initSubViewConstraints { + [self.topView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.contentView.mas_top);; + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.stackView.mas_top); + make.left.right.bottom.mas_equalTo(self.view); + }]; + + [self.effectView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.contentView); + }]; + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.contentView); + }]; + + [self.bottomView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(kSafeAreaBottomHeight); + }]; +} + +- (void)initHttpRequest { + [self.presenter getUserInfo:[AccountInfoStorage instance].getUid]; + [self.presenter getUserWallInfo]; + [self.presenter getNormalGiftList:self.roomUid]; + [self.presenter getPackGiftList]; + [self.presenter luckyGiftBroadcastRecord]; +// [self.presenter getTwelveStarLastRankFirst:self.roomUid]; +} + +#pragma mark - Send Custom Message +- (void)sendGraffitiGiftMessage { + if (self.segmentType == GiftSegmentType_Graffiti && self.graffitiPoint.count > 0) { + AttachmentModel * attachment = [[AttachmentModel alloc] init]; + attachment.first = CustomMessageType_Graffiti_Gift; + attachment.second = Custom_Message_Sub_Graffiti_Gift; + NSMutableDictionary * dic = [NSMutableDictionary dictionary]; + [dic setValue:@(self.giftInfoView.lastSelectGift.giftId) forKey:@"giftId"]; + [dic setValue:self.graffitiPoint forKey:@"drawFixedArray"]; + attachment.data = dic; + [self sendCustomMessage:attachment]; + } +} + +- (void)sendCustomMessage:(GiftReceiveInfoModel *)receiveModel oringinDic:(NSDictionary *)originDic { + NSDictionary * dict = originDic; + if (receiveModel.roomSendGiftType == RoomSendGiftType_AllMic) { // 全麦 + NSMutableDictionary *data = [NSMutableDictionary dictionary]; + [data addEntriesFromDictionary:dict]; + if (receiveModel.gift.giftType == GiftType_Lucky) { // 如果是福袋 需要分开发送消息 + NSArray *luckyBagGifts = (NSArray *)[data objectForKey:@"luckyBagGifts"]; + if (luckyBagGifts.count >0) { + for (int i = 0; i < luckyBagGifts.count; i++) { + NSMutableDictionary * data1 = [NSMutableDictionary dictionary]; + [data1 addEntriesFromDictionary:dict]; + AttachmentModel * attachment = [[AttachmentModel alloc] init]; + attachment.first = CustomMessageType_AllMicroSend; + attachment.second = Custom_Message_Sub_AllMicroLuckySend; + NSDictionary * obj = [luckyBagGifts safeObjectAtIndex1:i]; + [data1 setObject:i == 0 ? @(YES):@(NO) forKey:@"isShowAnimation"]; + [data1 setObject:obj forKey:@"luckyGiftList"]; + [data1 setObject:receiveModel.gift.giftName forKey:@"giftName"]; + [data1 setObject:[obj valueForKeyPath:@"user.uid"] forKey:@"targetUid"]; + [data1 setObject:[dict valueForKeyPath:@"targetUsers.uid"] forKey:@"targetUids"]; + if ([dict valueForKeyPath:@"gift.luckyGiftSvgaUrl"]) { + [data1 setObject:[dict valueForKeyPath:@"gift.luckyGiftSvgaUrl"] forKey:@"luckyGiftSvgaUrl"]; + } + [data1 removeObjectForKey:@"luckyBagGifts"]; + [data1 removeObjectForKey:@"targetUsers"]; + [data1 removeObjectForKey:@"gift"]; + attachment.data = data1; + [self sendCustomMessage:attachment]; + } + } + }else { // 全麦赠送普通礼物 包含背包礼物 + AttachmentModel * attachment = [[AttachmentModel alloc] init]; + attachment.first = CustomMessageType_AllMicroSend; + attachment.second = Custom_Message_Sub_AllMicroSend; + [data setObject:[dict valueForKeyPath:@"targetUsers.uid"] forKey:@"targetUids"]; + attachment.data = data; + [self sendCustomMessage:attachment]; + } + } else if (receiveModel.roomSendGiftType == RoomSendGiftType_MutableOnMic) { // 多人非全麦 + NSMutableDictionary *data = [NSMutableDictionary dictionary]; + [data addEntriesFromDictionary:dict]; + if (receiveModel.gift.giftType == GiftType_Lucky) { // 多人非全麦 福袋礼物 + NSArray *luckyBagGifts = (NSArray *)[data objectForKey:@"luckyBagGifts"]; + if (luckyBagGifts.count >0) { + // 产品想一个消息 多次发送 只能遍历插入消息体 + [luckyBagGifts enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + NSMutableDictionary * data1 = [NSMutableDictionary dictionary]; + [data1 addEntriesFromDictionary:dict]; + AttachmentModel * attachment = [[AttachmentModel alloc] init]; + attachment.first = CustomMessageType_AllMicroSend; + attachment.second = Custom_Message_Sub_AllBatchMicroLuckySend; + [data1 setObject:idx == 0 ? @(YES):@(NO) forKey:@"isShowAnimation"]; + [data1 setObject:obj forKey:@"luckyGiftList"]; + [data1 setObject:receiveModel.gift.giftName forKey:@"giftName"]; + [data1 setObject:[obj valueForKeyPath:@"user.uid"] forKey:@"targetUid"]; + [data1 setObject:[dict valueForKeyPath:@"targetUsers.uid"] forKey:@"targetUids"]; + if ([dict valueForKeyPath:@"gift.luckyGiftSvgaUrl"]) { + [data1 setObject:[dict valueForKeyPath:@"gift.luckyGiftSvgaUrl"] forKey:@"luckyGiftSvgaUrl"]; + } + [data1 removeObjectForKey:@"luckyBagGifts"]; + [data1 removeObjectForKey:@"targetUsers"]; + attachment.data = data1; + [self sendCustomMessage:attachment]; + }]; + } + }else { // 多人非全麦 普通礼物 + AttachmentModel *attachment = [[AttachmentModel alloc] init]; + attachment.first = CustomMessageType_AllMicroSend; + attachment.second = Custom_Message_Sub_AllBatchSend; + attachment.data = data; + [self sendCustomMessage:attachment]; + } + } else if (receiveModel.roomSendGiftType == RoomSendGiftType_ToOne) { // 单人 + NSMutableDictionary *data = [NSMutableDictionary dictionary]; + [data addEntriesFromDictionary:dict]; + if (receiveModel.gift.giftType == GiftType_Lucky) { // 一对一 福袋礼物 + NSArray *luckyBagGifts = (NSArray *)[data objectForKey:@"luckyBagGifts"]; + [luckyBagGifts enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + NSMutableDictionary * data1 = [NSMutableDictionary dictionary]; + [data1 addEntriesFromDictionary:dict]; + AttachmentModel * attachment = [[AttachmentModel alloc] init]; + attachment.first = CustomMessageType_Gift; + attachment.second = Custom_Message_Sub_Gift_LuckySend; + [data1 setObject:idx == 0 ? @(YES):@(NO) forKey:@"isShowAnimation"]; + [data1 setObject:obj forKey:@"luckyGiftList"]; + [data1 setObject:receiveModel.gift.giftName forKey:@"giftName"]; + [data1 setObject:[obj valueForKeyPath:@"user.uid"] forKey:@"targetUid"]; + [data1 setObject:[obj valueForKeyPath:@"user.nick"] forKey:@"targetNick"]; + [data1 setObject:[dict valueForKeyPath:@"targetUsers.uid"] forKey:@"targetUids"]; + if ([dict valueForKeyPath:@"gift.luckyGiftSvgaUrl"]) { + [data1 setObject:[dict valueForKeyPath:@"gift.luckyGiftSvgaUrl"] forKey:@"luckyGiftSvgaUrl"]; + } + [data1 removeObjectForKey:@"luckyBagGifts"]; + [data1 removeObjectForKey:@"targetUsers"]; + attachment.data = data1; + [self sendCustomMessage:attachment]; + }]; + }else { // 一对一 普通礼物 + AttachmentModel *attachment = [[AttachmentModel alloc] init]; + attachment.first = CustomMessageType_Gift; + attachment.second = Custom_Message_Sub_Gift_Send; + NSDictionary *targetUsers = ((NSArray *)[data objectForKey:@"targetUsers"]).firstObject; + [data setObject:[targetUsers valueForKeyPath:@"uid"] forKey:@"targetUid"]; + [data setObject:[targetUsers valueForKeyPath:@"nick"] forKey:@"targetNick"]; + [data setObject:[targetUsers valueForKeyPath:@"avatar"] forKey:@"targetAvatar"]; + attachment.data = data; + [self sendCustomMessage:attachment]; + } + } + +} + +- (void)sendCustomMessage:(AttachmentModel *)attachment { + + NSString *sessionID = self.usingplaceType == SendGiftType_User ? [NSString stringWithFormat:@"%ld", self.userArray.firstObject.uid] : [NSString stringWithFormat:@"%ld", [self.delegate getRoomInfo].roomId]; + NIMMessage *message = [[NIMMessage alloc]init]; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachment; + message.messageObject = object; + + UserInfoModel *userInfo = [self.delegate getUserInfo]; + XPMessageRemoteExtModel *extModel = [[XPMessageRemoteExtModel alloc] init]; + extModel.androidBubbleUrl = userInfo.androidBubbleUrl; + extModel.iosBubbleUrl = userInfo.iosBubbleUrl; + extModel.fromSayHelloChannel = userInfo.fromSayHelloChannel; + NSMutableDictionary *remoteExt = [NSMutableDictionary dictionaryWithObject:extModel.model2dictionary forKey:[NSString stringWithFormat:@"%ld", userInfo.uid]]; + message.remoteExt = remoteExt; + NIMSessionType sessionType = self.usingplaceType == SendGiftType_Room ? NIMSessionTypeChatroom : NIMSessionTypeP2P; + //构造会话 + NIMSession *session = [NIMSession session:sessionID type:sessionType]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; +} + +#pragma mark - Deal Send Gift Data +- (NSString *)dealSendGiftCount:(XPGiftCountModel *)model gift:(GiftInfoModel *)gift { + NSString * count = @"1"; + if (model.isTotal) { + count = [NSString stringWithFormat:@"%ld", gift.count]; + } else { + count = model.giftNumber; + } + + if (self.segmentType == GiftSegmentType_Graffiti) { + count = [NSString stringWithFormat:@"%ld", self.graffitiPoint.count]; + } + return count; +} + +- (NSString *)dealSendGiftUids:(NSArray *)uids { + NSString *uidString = [[NSString alloc] init]; + for (NSString *item in uids) { + if (uidString.length > 0) { + uidString = [uidString stringByAppendingString:@","]; + } + uidString = [uidString stringByAppendingString:item]; + } + return uidString; +} + +- (RoomSendGiftType)dealRoomSendGiftType:(GiftInfoModel *)giftInfo giftCount:(XPGiftCountModel *)giftCount { + NSArray * uids = self.userView.selectUserArray; + RoomSendGiftType roomSendGiftType; + if (self.userView.isSelectAll) { + if (giftInfo.sourceType == GiftSourceType_Pack && giftCount.isTotal && giftInfo && uids.count > 1) { + [self showErrorToast:YMLocalizedString(@"XPSendGiftView0")]; + return -1; + } + roomSendGiftType = RoomSendGiftType_AllMic; + } else if(self.userView.selectUserArray.count > 1) { + if (giftInfo.sourceType == GiftSourceType_Pack && giftCount.isTotal) { + [self showErrorToast:YMLocalizedString(@"XPSendGiftView1")]; + return -1; + } + roomSendGiftType = RoomSendGiftType_MutableOnMic; + } else if(self.userView.selectUserArray.count == 1) { + roomSendGiftType = RoomSendGiftType_ToOne; + } else { + roomSendGiftType = -1; + } + return roomSendGiftType; +} + +#pragma mark - Public Method +- (void)configGiftUsers:(NSArray *)users { + self.userArray = users; + [self.userView configGiftUsers:users]; + if (users.count <= 0 || self.usingplaceType == SendGiftType_User) { + self.userView.hidden = YES; + } else { + self.userView.hidden = NO; + } +} +#pragma mark - XPGiftBarViewDelegate +- (void)xPGiftBarView:(XPGiftBarView *)view didClickSendGift:(XPGiftCountModel *)giftCount { +///总礼物 三要素 送礼物的人 送的什么礼物 送多少个礼物 + NSArray * uids = self.userView.selectUserArray; + GiftInfoModel * giftInfo = self.giftInfoView.lastSelectGift; + if (self.usingplaceType == SendGiftType_Room) { + if (uids.count > 0) { + ///送礼物的人 + NSString * uidString = [self dealSendGiftUids:uids]; + ///送礼物的个数 + NSString * giftNumber = [self dealSendGiftCount:giftCount gift:giftInfo]; + ///送的什么礼物 + NSString * giftId = [NSString stringWithFormat:@"%ld", giftInfo.giftId]; + ///给麦上的人送礼物 + GiftSendType sendType = GiftSendType_OnMic; + ///礼物来源 + GiftSourceType sourceType = giftInfo.sourceType; + ///送一个人 还是全麦 还是多人非全麦 + RoomSendGiftType roomSendType = [self dealRoomSendGiftType:giftInfo giftCount:giftCount]; + if (roomSendType == -1) { + return; + } + self.giftBarView.sendButtonIsEnable = NO; + ///发送消息 + [self.presenter sendGift:uidString giftNum:giftNumber sendType:sendType giftId:giftId giftSource:sourceType giftType:giftInfo.giftType roomSendType:roomSendType roomUid:self.roomUid msg:@""]; + } else { + [self showErrorToast:YMLocalizedString(@"XPSendGiftView2")]; + return; + } + } else if(self.usingplaceType == SendGiftType_User) { + ///送礼物的人 + NSString * uidString = [self dealSendGiftUids:uids]; + ///送礼物的个数 + NSString * giftNumber = [self dealSendGiftCount:giftCount gift:giftInfo]; + ///送的什么礼物 + NSString * giftId = [NSString stringWithFormat:@"%ld", giftInfo.giftId]; + ///给麦上的人送礼物 + GiftSendType sendType = GiftSendType_Chat; + ///礼物来源 + GiftSourceType sourceType = giftInfo.sourceType; + ///送一个人 还是全麦 还是多人非全麦 + RoomSendGiftType roomSendType = RoomSendGiftType_ToOne; + self.giftBarView.sendButtonIsEnable = NO; + [self.presenter sendGift:uidString giftNum:giftNumber sendType:sendType giftId:giftId giftSource:sourceType giftType:giftInfo.giftType roomSendType:roomSendType roomUid:self.roomUid msg:@""]; + } + +} + +///充值 +- (void)xPGiftBarViewDidClickRecharge:(XPGiftBarView *)view { + [self dismissViewControllerAnimated:NO completion:^{ +// XPMineRechargeViewController * rechargeVC = [[XPMineRechargeViewController alloc] init]; + XPIAPRechargeViewController * rechargeVC = [[XPIAPRechargeViewController alloc] init]; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:rechargeVC animated:YES]; + }]; +} + +- (void)xPGiftBarViewDidClickFirstRecharge:(XPGiftBarView *)view { + [self dismissViewControllerAnimated:NO completion:^{ + [[NSNotificationCenter defaultCenter]postNotificationName:kShowFirstRechargeView object:@{@"type":@"1",@"diamonds": self.giftBarView.walletInfoModel.diamonds ?: @"0"}]; + }]; +} + +#pragma mark - XPGiftLuckyGiftBroadcastViewDelegate +///点击了玩法说明 +- (void)xPGiftLuckyGiftBroadcastViewPlayDescClick { + NSString * giftExplainUrl; + if (self.segmentType == GiftSegmentType_Lucky) { + giftExplainUrl = [NSString stringWithFormat:URLWithType(kLuckyGiftPlayRuleURL), [NSString stringWithFormat:@"%ld", self.giftInfoView.lastSelectGift.giftId]]; + } else { + giftExplainUrl = self.giftInfoView.lastSelectGift.giftExplainUrl; + } + XPRoomHalfWebView * webView = [[XPRoomHalfWebView alloc] init]; + webView.url = giftExplainUrl; + [TTPopup popupView:webView style:TTPopupStyleActionSheet]; +} + +#pragma mark - XPGiftWeekStarBroadcastViewDelegate +///点击了周星榜入口 +- (void)xPGiftWeekStarBroadcastViewWeekStarClick { + [self dismissViewControllerAnimated:NO completion:^{ + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + webVC.roomUid = self.roomUid; + webVC.url = URLWithType(kNewWeekStarURL); + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:webVC animated:YES]; + }]; +} + +#pragma mark - XPGiftHeadTypeViewDelegate +///点击了贵族 +- (void)xPGiftHeadTypeViewDidClickNoble:(XPGiftHeadTypeView *)view { + [self dismissViewControllerAnimated:NO completion:^{ + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventvipEntranceGiftClick]; +// XPNobleCenterViewController * nobleVC = [[XPNobleCenterViewController alloc] initWithRoomUid:self.delegate.getRoomInfo.uid]; +// [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:nobleVC animated:YES]; + }]; +} +///点击了首充 +- (void)xPGiftHeadTypeViewDidClickFirstRecharge:(XPGiftHeadTypeView *)view { + [self dismissViewControllerAnimated:NO completion:^{ + [[NSNotificationCenter defaultCenter]postNotificationName:kShowFirstRechargeView object:@{@"type":@"1",@"diamonds": self.giftBarView.walletInfoModel.diamonds ?: @"0"}]; + }]; + +} +///点击了礼物 +- (void)xPGiftHeadTypeViewDidClickGift:(XPGiftHeadTypeView *)view { + [self.luckyBroadcastView removeFromSuperview]; + [self.giftInfoView giftHeadTypeHadChange:1]; + if (!self.graffitiView.hidden) {//清空涂鸦礼物 + [self.graffitiView clearData]; + [self.graffitiView cratePriceAttribute]; + [UIView animateWithDuration:0.2 animations:^{ + self.graffitiView.hidden = YES; + self.giftInfoView.hidden = NO; + }]; + } +} +///点击了互动 +- (void)xPGiftHeadTypeViewDidClickInteraction:(XPGiftHeadTypeView *)view { + [self.luckyBroadcastView removeFromSuperview]; + [self.giftInfoView giftHeadTypeHadChange:2]; +} + +#pragma mark - XPGiftInfoViewDelegate +- (void)xPGiftInfoView:(XPGiftInfoView *)view didClickSegment:(GiftSegmentType)type { + self.segmentType = type; + self.giftBarView.type = type; + self.giftBarView.drawGiftCount = 0; + if (type == GiftSegmentType_Lucky) { + [self.constellationBanner removeFromSuperview]; + if (!self.luckyBroadcastView.superview) { + [self.view addSubview:self.luckyBroadcastView]; + [self.luckyBroadcastView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.contentView.mas_top); + make.left.right.mas_equalTo(0); + make.height.mas_equalTo(kGetScaleWidth(56)); + }]; + } + } else if(type == GiftSegmentType_WeekStar) { + [self.luckyBroadcastView removeFromSuperview]; + if ([ClientConfig shareConfig].configInfo.twelveStarSwitch) { + self.constellationBanner.hidden = NO; + if (!self.constellationBanner.superview) { + [self.view addSubview:self.constellationBanner]; + [self.constellationBanner mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.contentView.mas_top); + make.left.right.mas_equalTo(0); + make.height.mas_equalTo(75); + }]; + } + } else { + self.constellationBanner.hidden = YES; + } + } else { + [self.luckyBroadcastView removeFromSuperview]; + [self.constellationBanner removeFromSuperview]; + } +} + +- (void)xPGiftInfoView:(XPGiftInfoView *)view didClickItem:(GiftInfoModel *)info type:(GiftSegmentType)type { + if (type == GiftSegmentType_Graffiti) { + self.giftInfoView.hidden = YES; + self.graffitiView.hidden = NO; + self.graffitiView.price = info.goldPrice; + self.giftBarView.drawGiftCount = 0; + self.graffitiView.selectUidNumber = self.userView.selectUserArray.count; + [[SDWebImageManager sharedManager] loadImageWithURL:[NSURL URLWithString:info.giftUrl] options:SDWebImageProgressiveLoad progress:nil completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, SDImageCacheType cacheType, BOOL finished, NSURL * _Nullable imageURL) { + if (error == nil && image) { + self.graffitiView.image = image; + } else { + self.giftInfoView.hidden = NO; + } + }]; + } else { + self.giftBarView.drawGiftCount = 10; + } +} + +#pragma mark - XPGiftUsersViewDelegate +- (void)xPGiftUsersView:(XPGiftUsersView *)view didSelectUsers:(NSArray *)selectUids { + self.graffitiView.selectUidNumber = selectUids.count; +} + +#pragma mark - XPGraffitiGiftViewDelegate +- (void)xPGraffitiGiftView:(XPGraffitiGiftView *)view didClickClose:(UIButton *)sender { + [UIView animateWithDuration:0.2 animations:^{ + self.graffitiView.hidden = YES; + self.giftInfoView.hidden = NO; + }]; +} + +- (void)xPGraffitiGiftView:(XPGraffitiGiftView *)view didClickChange:(UIButton *)sender { + [UIView animateWithDuration:0.2 animations:^{ + self.graffitiView.hidden = YES; + self.giftInfoView.hidden = NO; + }]; +} + +- (void)xPGraffitiGiftView:(XPGraffitiGiftView *)view didDrawCompletion:(NSArray *)pointArray { + self.graffitiPoint = pointArray; + self.giftBarView.drawGiftCount = self.graffitiPoint.count; +} + +#pragma mark - XPGiftTwelveStarBroadcastViewDelegate +- (void)xPGiftTwelveStarBroadcastView:(XPGiftTwelveStarBroadcastView *)view didClickDetail:(UIButton *)sender { + [self dismissViewControllerAnimated:NO completion:^{ + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + webVC.url = URLWithType(kXinZuoStarURL); + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:webVC animated:YES]; + }]; +} + +#pragma mark - XPGiftProtocol +- (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo { + self.headTypeView.isShowFirstRecharge = userInfo.isFirstCharge; + self.giftBarView.isShowFirstRecharge = userInfo.isFirstCharge; + self.giftInfoView.curUserNobleLevel = userInfo.userVipInfoVO.vipLevel; +} + +- (void)getUserWalletInfo:(WalletInfoModel *)balanceInfo { + self.giftBarView.walletInfoModel = balanceInfo; +} +///背包礼物 +- (void)getPacketGiftListSuccess:(NSArray *)giftList { + self.giftInfoView.packOriginArray = giftList; +} + +- (void)getPacketGiftListFail:(NSString *)message { + self.packGiftRetryCount ++; + if (self.packGiftRetryCount <= 10) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [self.presenter getPackGiftList]; + }); + } +} + +///普通礼物 /幸运礼物 +- (void)getNormalGiftListSuccess:(NSArray *)giftList { + self.giftInfoView.normalOriginArray = giftList; +} + +- (void)getNormalGiftListFail:(NSString *)message { + self.normalGiftRetryCount ++; + if (self.normalGiftRetryCount <= 10) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [self.presenter getNormalGiftList:self.roomUid]; + }); + } +} + +- (void)sendGiftSuccess:(GiftReceiveInfoModel *)receiveInfo originDic:(NSDictionary *)originDic uidCount:(NSInteger)uidCount{ + self.giftBarView.sendButtonIsEnable = YES; + if (receiveInfo.sourceType == GiftSourceType_Pack) { + ///更新个数 + [self.giftInfoView updatePackSource:receiveInfo numberUser:uidCount]; + } else { + [self.presenter getUserWallInfo]; + } + [self sendCustomMessage:receiveInfo oringinDic:originDic]; + ///发送涂鸦礼物消息 + [self sendGraffitiGiftMessage]; + if (self.segmentType == GiftSegmentType_Graffiti) { + NSString * title = [NSString stringWithFormat:YMLocalizedString(@"XPSendGiftView3"),self.giftInfoView.lastSelectGift.giftName]; + [self showSuccessToast:title]; + [self dismissViewControllerAnimated:YES completion:nil]; + } +} + +///送礼物失败 +- (void)sendGiftFailWithCode:(NSInteger)code msg:(NSString *)msg { + self.giftBarView.sendButtonIsEnable = YES; + if (code == 31005) {// 余额不足 + [self showNotSufficientFundsWithToast:msg]; + } else if (code == 8535) {//贵族等级未达到礼物等级 + GiftInfoModel * giftInfo = self.giftInfoView.lastSelectGift; + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.actionStyle = TTAlertActionConfirmStyle; + config.message = [NSString stringWithFormat:@"尚未达到赠送%@所需要的贵族等级哦\n所需贵族等级:%@", giftInfo.giftName, giftInfo.giftVipInfo.vipName]; + [TTPopup alertWithConfig:config confirmHandler:^{ + + } cancelHandler:^{ + + }]; + } else { + [self showErrorToast:msg]; + } +} + +/// 余额不足,是否弹首充弹窗 +- (void)showNotSufficientFundsWithToast:(NSString *)msg { + if (self.delegate.getUserInfo.isFirstCharge) { + [self dismissViewControllerAnimated:NO completion:^{ + [[NSNotificationCenter defaultCenter]postNotificationName:kShowFirstRechargeView object:@{@"type":self.delegate != nil ? @"2" : @"9",@"diamonds": self.giftBarView.walletInfoModel.diamonds ?: @"0"}]; + }]; + } else { + [self showErrorToast:msg]; + } +} + + +- (void)luckyGiftBroadcastRecordSuccess:(NSArray *)records { + self.records = records; + self.luckyBroadcastView.records = records; +} + +- (void)getTwelveStarLastRankFirstSuccess:(GiftTwelveStarFirstModel *)model { + self.constellationBanner.giftInfo = model; +} + +#pragma mark - Event Response +- (void)disMissViewRecognizer:(UITapGestureRecognizer *)tap { + [self dismissViewControllerAnimated:YES completion:nil]; +} + +#pragma mark - Getters And Setters +- (void)setUsingplaceType:(SendGiftType)usingplaceType { + _usingplaceType = usingplaceType; + self.giftBarView.usingplaceType = usingplaceType; + self.giftInfoView.usingplaceType = _usingplaceType; + self.headTypeView.hidden = _usingplaceType == SendGiftType_User; + self.userView.hidden = _usingplaceType == SendGiftType_User; + self.effectView.hidden = _usingplaceType == SendGiftType_User; + if (_usingplaceType == SendGiftType_User) { + self.contentView.backgroundColor = [UIColor whiteColor]; + } +} + +- (void)setSelectGiftId:(NSString *)selectGiftId { + _selectGiftId = selectGiftId; + self.giftInfoView.defaultSelectGiftId = selectGiftId; +} + +- (void)setDelegate:(id)delegate { + _delegate = delegate; + if (_delegate) { + self.giftInfoView.roomType = _delegate.getRoomInfo.type; + } +} + +- (UIView *)topView { + if (!_topView) { + _topView = [[UIView alloc] init]; + _topView.backgroundColor = [UIColor clearColor]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(disMissViewRecognizer:)]; + [_topView addGestureRecognizer:tap]; + } + return _topView; +} + +- (UIView *)contentView { + if (!_contentView) { + _contentView = [[UIView alloc] init]; + UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, KScreenHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(8, 8)]; + CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; + maskLayer.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); + maskLayer.path = maskPath.CGPath; + _contentView.layer.mask = maskLayer; + + } + return _contentView; +} + +- (XPGiftUsersView *)userView { + if (!_userView) { + _userView = [[XPGiftUsersView alloc] init]; + _userView.delegate = self; + } + return _userView; +} + +- (XPGiftInfoView *)giftInfoView { + if (!_giftInfoView) { + _giftInfoView = [[XPGiftInfoView alloc] init]; + _giftInfoView.delegate = self; + } + return _giftInfoView; +} + +- (XPGiftBarView *)giftBarView { + if (!_giftBarView) { + _giftBarView = [[XPGiftBarView alloc] init]; + _giftBarView.delegate = self; + } + return _giftBarView; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 0; + _stackView.backgroundColor = [UIColor clearColor]; + } + return _stackView; +} + +- (UIView *)bottomView { + if (!_bottomView) { + _bottomView = [[UIView alloc] init]; + _bottomView.backgroundColor = [UIColor clearColor]; + } + return _bottomView; +} + +- (XPGraffitiGiftView *)graffitiView { + if (!_graffitiView) { + _graffitiView = [[XPGraffitiGiftView alloc] init]; + _graffitiView.hidden = YES; + _graffitiView.delegate = self; + } + return _graffitiView; +} + +- (XPGiftHeadTypeView *)headTypeView { + if (!_headTypeView) { + _headTypeView = [[XPGiftHeadTypeView alloc] init]; + _headTypeView.delegate = self; + } + return _headTypeView; +} + +- (XPGiftLuckyGiftBroadcastView *)luckyBroadcastView { + if (!_luckyBroadcastView) { + _luckyBroadcastView = [[XPGiftLuckyGiftBroadcastView alloc] init]; + _luckyBroadcastView.delegate = self; + } + return _luckyBroadcastView; +} + +- (XPGiftTwelveStarBroadcastView *)constellationBanner { + if (!_constellationBanner) { + _constellationBanner = [[XPGiftTwelveStarBroadcastView alloc] init]; + _constellationBanner.delegate = self; + } + return _constellationBanner; +} + +- (UIVisualEffectView *)effectView { + if (!_effectView) { + UIBlurEffect *beffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; + _effectView = [[UIVisualEffectView alloc] initWithEffect:beffect]; + } + return _effectView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIDischargePresentRegard.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIDischargePresentRegard.h deleted file mode 100644 index 9ee708a8..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIDischargePresentRegard.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// YMSendGiftView.h -// YUMI -// -// Created by YUMI on 2021/11/9. -// - -#import "MvpRegardGovernancer.h" -#import "ChamberHostRepresendtation.h" -#import "YUMIExternalizeConsumerAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSInteger, DischargePresentGenre) { - DischargePresentGenre_Room = 1, - DischargePresentGenre_User, -}; - -@interface YUMIDischargePresentRegard : MvpRegardGovernancer -@property (nonatomic,weak) id delegate; -- (instancetype)initWithType:(DischargePresentGenre)type uid:(NSString * __nullable)uid; - -- (instancetype)init NS_UNAVAILABLE; -+ (instancetype)new NS_UNAVAILABLE; -- (instancetype)copy NS_UNAVAILABLE; -- (instancetype)mutableCopy NS_UNAVAILABLE; - -- (void)prohibitipositionPresentConsumers:(NSArray *)users; - -@property (nonatomic, copy) NSString *chosenPresentId; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIDischargePresentRegard.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIDischargePresentRegard.m deleted file mode 100644 index c810665d..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIDischargePresentRegard.m +++ /dev/null @@ -1,772 +0,0 @@ -// -// YMSendGiftView.m -// YUMI -// -// Created by YUMI on 2021/11/9. -// - -#import "YUMIDischargePresentRegard.h" -#import -#import -#import -#import "YUMIMacroUitls.h" -#import "YUMIPresentExternalizer.h" -#import "MKJPopup.h" -#import "ThemeColor+SendGift.h" -#import "StatsticsticsServingFacilitater.h" -#import "YUMIHtmlUrl.h" -#import "AccountAbstractStorage.h" -#import "NSArray+Safe.h" -#import "ClientDisposition.h" -#import "XCCurrentVCStackExecutive.h" -#import "PresentAbstractMatrix.h" -#import "YUMIPresentComputationMatrix.h" -#import "PresentAchieveAbstractMatrix.h" -#import "AttachmentMatrix.h" -#import "ChamberAbstractMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "RamparatetAbstractMatrix.h" -#import "YUMICommunicationRemoteExtMatrix.h" -#import "YUMIExternalizeConsumersRegard.h" -#import "YUMIPresentAbstractRegard.h" -#import "YUMIPresentObstacleRegard.h" -#import "YUMIChamberHalfTissueRegard.h" -#import "YUMIGraffitiPresentRegard.h" -#import "YUMIPresentIntelligenceGenreRegard.h" -#import "YUMIPresentFortunatePresentPingbackRegard.h" -#import "YUMIPresentTwelveSatellitePingbackRegard.h" -#import "FBCPresentCeremony.h" -#import "YUMIManeReindictRegardGovernancer.h" -#import "YUMIIAPReindictRegardGovernancer.h" -#import "YUMITissueRegardGovernancer.h" - -UIKIT_EXTERN NSString * kShowFirstRechargeView; - -@interface YUMIDischargePresentRegard ()< FBCPresentObstacleRegardRepresendtation, FBCPresentCeremony, FBCPresentAbstractRegardRepresendtation, FBCGraffitiPresentRegardRepresendtation, FBCPresentConsumersRegardRepresendtation, FBCPresentIntelligenceTypeRegardRepresendtation, FBCPresentLuckyPresentPingbackRegardRepresendtation, FBCPresentTwelveStarPingbackRegardRepresendtation> -@property (nonatomic,strong) UIView * apexRegard; -@property (nonatomic,strong) UIView *contentView; -@property (nonatomic, strong) UIVisualEffectView *impressionRegard; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic, strong) YUMIPresentFortunatePresentPingbackRegard *fortunatePingencourageRegard; -@property (nonatomic, strong) YUMIPresentTwelveSatellitePingbackRegard *constellationOriflamme; -@property (nonatomic, strong) YUMIPresentIntelligenceGenreRegard *intelligenceGenreRegard; -@property (nonatomic,strong) YUMIExternalizeConsumersRegard *consumerRegard; -@property (nonatomic,strong) YUMIPresentAbstractRegard *presentAbstractRegard; -@property (nonatomic,strong) YUMIPresentObstacleRegard *presentObstacleRegard; -@property (nonatomic,strong) UIView * bottomView; -@property (nonatomic,strong) YUMIGraffitiPresentRegard *doodleRegard; -@property (nonatomic,copy) NSString *roomUid; -@property (nonatomic,assign) DischargePresentGenre usingdeparatmentGenre; -@property (nonatomic,assign) int ordinaryPresentRetrialComputation; -@property (nonatomic,assign) int impactPresentRetrialComputation; -@property (nonatomic,strong) NSArray *consumerGarment; -@property (nonatomic,strong) NSArray *doodleSpeck; -@property (nonatomic,assign) PresentSegmentGenre segmentType; -@property (nonatomic,strong) NSArray *records; -@end - -@implementation YUMIDischargePresentRegard - -- (YUMIPresentExternalizer *)producePresimport { - return [[YUMIPresentExternalizer alloc] init]; -} - - -- (instancetype)initWithType:(DischargePresentGenre)type uid:(NSString * __nullable)uid{ - if (self = [super init]) { - self.modalPresentationStyle = UIModalPresentationOverFullScreen; - self.roomUid = uid; - self.usingdeparatmentGenre = type; - } - return self; -} - -- (void)viewDidLoad { - [self initSubViews]; - [self initChildLyRestrictions]; - [self initHyperessayDemand]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.apexRegard]; - [self.view addSubview:self.contentView]; - [self.contentView addSubview:self.impressionRegard]; - [self.contentView addSubview:self.stackView]; - [self.stackView addArrangedSubview:self.doodleRegard]; - [self.stackView addArrangedSubview:self.intelligenceGenreRegard]; - [self.stackView addArrangedSubview:self.consumerRegard]; - [self.stackView addArrangedSubview:self.presentAbstractRegard]; - [self.stackView addArrangedSubview:self.presentObstacleRegard]; - [self.stackView addArrangedSubview:self.bottomView]; -} - -- (void)initChildLyRestrictions { - [self.apexRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.contentView.mas_top);; - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.stackView.mas_top); - make.left.right.bottom.mas_equalTo(self.view); - }]; - - [self.impressionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.contentView); - }]; - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.contentView); - }]; - - [self.bottomView mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(kSafeAreaBottomHeight); - }]; -} - -- (void)initHyperessayDemand { - [self.presimport getUserInfo:[AccountAbstractStorage instance].acquireCid]; - [self.presimport acquireConsumerRampartowardsAbstract]; - [self.presimport acquireOrdinaryPresentSttowardsement:self.roomUid]; - [self.presimport acquireImpactPresentSttowardsement]; -} - -#pragma mark - Send Custom Message -- (void)prohibitichargeDoodlePresentCommunictowardsion { - if (self.segmentType == PresentSegmentGenre_Graffiti && self.doodleSpeck.count > 0) { - AttachmentMatrix * attachment = [[AttachmentMatrix alloc] init]; - attachment.first = IndividualityCommunicationGenre_Graffiti_Gift; - attachment.second = Custom_Message_Sub_Graffiti_Gift; - NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic setValue:@(self.presentAbstractRegard.lastChosenPresent.giftId) forKey:@"giftId"]; - [dic setValue:self.doodleSpeck forKey:@"drawFixedArray"]; - attachment.data = dic; - [self prohibitichargeIndividualityCommunictowardsion:attachment]; - } -} - -- (void)prohibitichargeIndividualityCommunictowardsion:(PresentAchieveAbstractMatrix *)achieveMatrix oringinDic:(NSDictionary *)originDic { - NSDictionary * dict = originDic; - if (achieveMatrix.roomSendGiftType == ChamberDischargePresentGenre_AllMic) { - NSMutableDictionary *data = [NSMutableDictionary dictionary]; - [data addEntriesFromDictionary:dict]; - if (achieveMatrix.gift.giftType == PresentGenre_Lucky) { - NSArray *luckyBagGifts = (NSArray *)[data objectForKey:@"luckyBagGifts"]; - if (luckyBagGifts.count >0) { - for (int i = 0; i < luckyBagGifts.count; i++) { - NSMutableDictionary * data1 = [NSMutableDictionary dictionary]; - [data1 addEntriesFromDictionary:dict]; - AttachmentMatrix * attachment = [[AttachmentMatrix alloc] init]; - attachment.first = IndividualityCommunicationGenre_AllMicroSend; - attachment.second = Custom_Message_Sub_AllMicroLuckySend; - NSDictionary * obj = [luckyBagGifts secureGroalTowardsIndictowardsrix1:i]; - [data1 setObject:i == 0 ? @(YES):@(NO) forKey:@"isShowAnimation"]; - [data1 setObject:obj forKey:@"luckyGiftList"]; - [data1 setObject:achieveMatrix.gift.giftName forKey:@"giftName"]; - [data1 setObject:[obj valueForKeyPath:@"user.uid"] forKey:@"targetUid"]; - [data1 setObject:[dict valueForKeyPath:@"targetUsers.uid"] forKey:@"targetUids"]; - if ([dict valueForKeyPath:@"gift.luckyGiftSvgaUrl"]) { - [data1 setObject:[dict valueForKeyPath:@"gift.luckyGiftSvgaUrl"] forKey:@"luckyGiftSvgaUrl"]; - } - [data1 removeObjectForKey:@"luckyBagGifts"]; - [data1 removeObjectForKey:@"targetUsers"]; - [data1 removeObjectForKey:@"gift"]; - attachment.data = data1; - [self prohibitichargeIndividualityCommunictowardsion:attachment]; - } - } - }else { - AttachmentMatrix * attachment = [[AttachmentMatrix alloc] init]; - attachment.first = IndividualityCommunicationGenre_AllMicroSend; - attachment.second = Custom_Message_Sub_AllMicroSend; - [data setObject:[dict valueForKeyPath:@"targetUsers.uid"] forKey:@"targetUids"]; - attachment.data = data; - [self prohibitichargeIndividualityCommunictowardsion:attachment]; - } - } else if (achieveMatrix.roomSendGiftType == ChamberDischargePresentGenre_MutableOnMic) { - NSMutableDictionary *data = [NSMutableDictionary dictionary]; - [data addEntriesFromDictionary:dict]; - if (achieveMatrix.gift.giftType == PresentGenre_Lucky) { - NSArray *luckyBagGifts = (NSArray *)[data objectForKey:@"luckyBagGifts"]; - if (luckyBagGifts.count >0) { - - [luckyBagGifts enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - NSMutableDictionary * data1 = [NSMutableDictionary dictionary]; - [data1 addEntriesFromDictionary:dict]; - AttachmentMatrix * attachment = [[AttachmentMatrix alloc] init]; - attachment.first = IndividualityCommunicationGenre_AllMicroSend; - attachment.second = Custom_Message_Sub_AllBatchMicroLuckySend; - [data1 setObject:idx == 0 ? @(YES):@(NO) forKey:@"isShowAnimation"]; - [data1 setObject:obj forKey:@"luckyGiftList"]; - [data1 setObject:achieveMatrix.gift.giftName forKey:@"giftName"]; - [data1 setObject:[obj valueForKeyPath:@"user.uid"] forKey:@"targetUid"]; - [data1 setObject:[dict valueForKeyPath:@"targetUsers.uid"] forKey:@"targetUids"]; - if ([dict valueForKeyPath:@"gift.luckyGiftSvgaUrl"]) { - [data1 setObject:[dict valueForKeyPath:@"gift.luckyGiftSvgaUrl"] forKey:@"luckyGiftSvgaUrl"]; - } - [data1 removeObjectForKey:@"luckyBagGifts"]; - [data1 removeObjectForKey:@"targetUsers"]; - attachment.data = data1; - [self prohibitichargeIndividualityCommunictowardsion:attachment]; - }]; - } - }else { - AttachmentMatrix *attachment = [[AttachmentMatrix alloc] init]; - attachment.first = IndividualityCommunicationGenre_AllMicroSend; - attachment.second = Custom_Message_Sub_AllBatchSend; - attachment.data = data; - [self prohibitichargeIndividualityCommunictowardsion:attachment]; - } - } else if (achieveMatrix.roomSendGiftType == ChamberDischargePresentGenre_ToOne) { - NSMutableDictionary *data = [NSMutableDictionary dictionary]; - [data addEntriesFromDictionary:dict]; - if (achieveMatrix.gift.giftType == PresentGenre_Lucky) { - NSArray *luckyBagGifts = (NSArray *)[data objectForKey:@"luckyBagGifts"]; - [luckyBagGifts enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - NSMutableDictionary * data1 = [NSMutableDictionary dictionary]; - [data1 addEntriesFromDictionary:dict]; - AttachmentMatrix * attachment = [[AttachmentMatrix alloc] init]; - attachment.first = IndividualityCommunicationGenre_Gift; - attachment.second = Custom_Message_Sub_Gift_LuckySend; - [data1 setObject:idx == 0 ? @(YES):@(NO) forKey:@"isShowAnimation"]; - [data1 setObject:obj forKey:@"luckyGiftList"]; - [data1 setObject:achieveMatrix.gift.giftName forKey:@"giftName"]; - [data1 setObject:[obj valueForKeyPath:@"user.uid"] forKey:@"targetUid"]; - [data1 setObject:[obj valueForKeyPath:@"user.nick"] forKey:@"targetNick"]; - [data1 setObject:[dict valueForKeyPath:@"targetUsers.uid"] forKey:@"targetUids"]; - if ([dict valueForKeyPath:@"gift.luckyGiftSvgaUrl"]) { - [data1 setObject:[dict valueForKeyPath:@"gift.luckyGiftSvgaUrl"] forKey:@"luckyGiftSvgaUrl"]; - } - [data1 removeObjectForKey:@"luckyBagGifts"]; - [data1 removeObjectForKey:@"targetUsers"]; - attachment.data = data1; - [self prohibitichargeIndividualityCommunictowardsion:attachment]; - }]; - }else { - AttachmentMatrix *attachment = [[AttachmentMatrix alloc] init]; - attachment.first = IndividualityCommunicationGenre_Gift; - attachment.second = Custom_Message_Sub_Gift_Send; - NSDictionary *targetUsers = ((NSArray *)[data objectForKey:@"targetUsers"]).firstObject; - [data setObject:[targetUsers valueForKeyPath:@"uid"] forKey:@"targetUid"]; - [data setObject:[targetUsers valueForKeyPath:@"nick"] forKey:@"targetNick"]; - [data setObject:[targetUsers valueForKeyPath:@"avatar"] forKey:@"targetAvatar"]; - attachment.data = data; - [self prohibitichargeIndividualityCommunictowardsion:attachment]; - } - } - -} - -- (void)prohibitichargeIndividualityCommunictowardsion:(AttachmentMatrix *)attachment { - - NSString *sessionID = self.usingdeparatmentGenre == DischargePresentGenre_User ? [NSString stringWithFormat:@"%ld", self.consumerGarment.firstObject.uid] : [NSString stringWithFormat:@"%ld", [self.delegate acquireChamberAbstract].roomId]; - NIMMessage *message = [[NIMMessage alloc]init]; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachment; - message.messageObject = object; - - ConsumerAbstractMatrix *userInfo = [self.delegate getUserInfo]; - YUMICommunicationRemoteExtMatrix *extModel = [[YUMICommunicationRemoteExtMatrix alloc] init]; - extModel.androidBubbleUrl = userInfo.androidBubbleUrl; - extModel.iosBubbleUrl = userInfo.iosBubbleUrl; - extModel.fromSayHelloChannel = userInfo.fromSayHelloChannel; - NSMutableDictionary *remoteExt = [NSMutableDictionary dictionaryWithObject:extModel.mtowardsrix2dictionary forKey:[NSString stringWithFormat:@"%ld", userInfo.uid]]; - message.remoteExt = remoteExt; - NIMSessionType sessionType = self.usingdeparatmentGenre == DischargePresentGenre_Room ? NIMSessionTypeChatroom : NIMSessionTypeP2P; - - NIMSession *session = [NIMSession session:sessionID type:sessionType]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; -} - -#pragma mark - Deal Send Gift Data -- (NSString *)castleDischargePresentComputtowardsion:(YUMIPresentComputationMatrix *)model gift:(PresentAbstractMatrix *)gift { - NSString * count = @"1"; - if (model.isTotal) { - count = [NSString stringWithFormat:@"%ld", gift.count]; - } else { - count = model.giftNumber; - } - - if (self.segmentType == PresentSegmentGenre_Graffiti) { - count = [NSString stringWithFormat:@"%ld", self.doodleSpeck.count]; - } - return count; -} - -- (NSString *)castleDischargePresentCids:(NSArray *)uids { - NSString *uidString = [[NSString alloc] init]; - for (NSString *item in uids) { - if (uidString.length > 0) { - uidString = [uidString stringByAppendingString:@","]; - } - uidString = [uidString stringByAppendingString:item]; - } - return uidString; -} - -- (ChamberDischargePresentGenre)castleChamberDischargePresentGenre:(PresentAbstractMatrix *)giftInfo presentComputation:(YUMIPresentComputationMatrix *)presentComputation { - NSArray * uids = self.consumerRegard.chosenConsumerGarment; - ChamberDischargePresentGenre roomSendGiftType; - if (self.consumerRegard.isChosenEntirety) { - if (giftInfo.sourceType == PresentSourceGenre_Pack && presentComputation.isTotal && giftInfo && uids.count > 1) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Send_Gift_View_0")]; - return -1; - } - roomSendGiftType = ChamberDischargePresentGenre_AllMic; - } else if(self.consumerRegard.chosenConsumerGarment.count > 1) { - if (giftInfo.sourceType == PresentSourceGenre_Pack && presentComputation.isTotal) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Send_Gift_View_1")]; - return -1; - } - roomSendGiftType = ChamberDischargePresentGenre_MutableOnMic; - } else if(self.consumerRegard.chosenConsumerGarment.count == 1) { - roomSendGiftType = ChamberDischargePresentGenre_ToOne; - } else { - roomSendGiftType = -1; - } - return roomSendGiftType; -} - -#pragma mark - Public Method -- (void)prohibitipositionPresentConsumers:(NSArray *)users { - self.consumerGarment = users; - [self.consumerRegard prohibitipositionPresentConsumers:users]; - if (users.count <= 0 || self.usingdeparatmentGenre == DischargePresentGenre_User) { - self.consumerRegard.hidden = YES; - } else { - self.consumerRegard.hidden = NO; - } -} -#pragma mark - FBCPresentObstacleRegardRepresendtation -- (void)yUMIPresentObstacleRegard:(YUMIPresentObstacleRegard *)view didClickSendGift:(YUMIPresentComputationMatrix *)presentComputation { - NSArray * uids = self.consumerRegard.chosenConsumerGarment; - PresentAbstractMatrix * giftInfo = self.presentAbstractRegard.lastChosenPresent; - if (self.usingdeparatmentGenre == DischargePresentGenre_Room) { - if (uids.count > 0) { - - NSString * uidString = [self castleDischargePresentCids:uids]; - - NSString * giftNumber = [self castleDischargePresentComputtowardsion:presentComputation gift:giftInfo]; - - NSString * giftId = [NSString stringWithFormat:@"%ld", giftInfo.giftId]; - - PresentDischargeGenre sendType = PresentDischargeGenre_OnMic; - - PresentSourceGenre sourceType = giftInfo.sourceType; - - ChamberDischargePresentGenre roomSendType = [self castleChamberDischargePresentGenre:giftInfo presentComputation:presentComputation]; - if (roomSendType == -1) { - return; - } - self.presentObstacleRegard.dischargeBtutonIsCapacitate = NO; - - [self.presimport prohibitichargePresent:uidString giftNum:giftNumber sendType:sendType giftId:giftId giftSource:sourceType giftType:giftInfo.giftType roomSendType:roomSendType roomUid:self.roomUid msg:@""]; - } else { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Send_Gift_View_2")]; - return; - } - } else if(self.usingdeparatmentGenre == DischargePresentGenre_User) { - - NSString * uidString = [self castleDischargePresentCids:uids]; - - NSString * giftNumber = [self castleDischargePresentComputtowardsion:presentComputation gift:giftInfo]; - - NSString * giftId = [NSString stringWithFormat:@"%ld", giftInfo.giftId]; - - PresentDischargeGenre sendType = PresentDischargeGenre_Chat; - - PresentSourceGenre sourceType = giftInfo.sourceType; - - ChamberDischargePresentGenre roomSendType = ChamberDischargePresentGenre_ToOne; - self.presentObstacleRegard.dischargeBtutonIsCapacitate = NO; - [self.presimport prohibitichargePresent:uidString giftNum:giftNumber sendType:sendType giftId:giftId giftSource:sourceType giftType:giftInfo.giftType roomSendType:roomSendType roomUid:self.roomUid msg:@""]; - } - -} - -- (void)yUMIPresentObstacleRegardDidTicktackReindict:(YUMIPresentObstacleRegard *)view { - [self dismissViewControllerAnimated:NO completion:^{ - YUMIIAPReindictRegardGovernancer * rechargeVC = [[YUMIIAPReindictRegardGovernancer alloc] init]; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:rechargeVC animated:YES]; - }]; -} - -- (void)yUMIPresentObstacleRegardDidTicktackThresholdReindict:(YUMIPresentObstacleRegard *)view { - [self dismissViewControllerAnimated:NO completion:^{ - [[NSNotificationCenter defaultCenter]postNotificationName:kShowFirstRechargeView object:@{@"type":@"1",@"diamonds": self.presentObstacleRegard.wentiretyetAbstractMatrix.diamonds ?: @"0"}]; - }]; -} - -#pragma mark - FBCPresentLuckyPresentPingbackRegardRepresendtation -- (void)yUMIPresentInthecaseoftuntowardsePresentBroadcastRegardDisportSequenceTicktack { - NSString * giftExplainUrl; - if (self.segmentType == PresentSegmentGenre_Lucky) { - giftExplainUrl = [NSString stringWithFormat:URLWithType(kLuckyGiftPlayRuleURL), [NSString stringWithFormat:@"%ld", self.presentAbstractRegard.lastChosenPresent.giftId]]; - } else { - giftExplainUrl = self.presentAbstractRegard.lastChosenPresent.giftExplainUrl; - } - YUMIChamberHalfTissueRegard * webView = [[YUMIChamberHalfTissueRegard alloc] init]; - webView.url = giftExplainUrl; - [MKJPopup popupRegard:webView style:MKJPopupStyleActionSheet]; -} - -#pragma mark - FBCPresentWeekStarPingbackRegardRepresendtation -- (void)yUMIPresentZhouStowardselliteBroadcastRegardZhouStowardselliteTicktack { - [self dismissViewControllerAnimated:NO completion:^{ - YUMITissueRegardGovernancer * webVewC = [[YUMITissueRegardGovernancer alloc] init]; - webVewC.roomUid = self.roomUid; - webVewC.url = URLWithType(kNewWeekStarURL); - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:webVewC animated:YES]; - }]; -} - -#pragma mark - FBCPresentIntelligenceTypeRegardRepresendtation -- (void)yUMIPresentIntelligenceGenreRegardDidTicktackMagnificent:(YUMIPresentIntelligenceGenreRegard *)view { - [self dismissViewControllerAnimated:NO completion:^{ - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventvipEntranceGiftClick]; - }]; -} -- (void)yUMIPresentIntelligenceGenreRegardDidTicktackThresholdReindict:(YUMIPresentIntelligenceGenreRegard *)view { - [self dismissViewControllerAnimated:NO completion:^{ - [[NSNotificationCenter defaultCenter]postNotificationName:kShowFirstRechargeView object:@{@"type":@"1",@"diamonds": self.presentObstacleRegard.wentiretyetAbstractMatrix.diamonds ?: @"0"}]; - }]; - -} -- (void)yUMIPresentIntelligenceGenreRegardDidTicktackPresent:(YUMIPresentIntelligenceGenreRegard *)view { - [self.fortunatePingencourageRegard removeFromSuperview]; - [self.presentAbstractRegard presentIntelligenceGenreHadDiversifictowardsion:1]; - if (!self.doodleRegard.hidden) { - [self.doodleRegard prohibititinctTowardsoloudspeaker]; - [self.doodleRegard crtowardseValencyIdiosyncracy]; - [UIView animateWithDuration:0.2 animations:^{ - self.doodleRegard.hidden = YES; - self.presentAbstractRegard.hidden = NO; - }]; - } -} -- (void)yUMIPresentIntelligenceGenreRegardDidTicktackInterperformance:(YUMIPresentIntelligenceGenreRegard *)view { - [self.fortunatePingencourageRegard removeFromSuperview]; - [self.presentAbstractRegard presentIntelligenceGenreHadDiversifictowardsion:2]; -} - -#pragma mark - FBCPresentAbstractRegardRepresendtation -- (void)yUMIPresentAbstractRegard:(YUMIPresentAbstractRegard *)view didClickSegment:(PresentSegmentGenre)type { - self.segmentType = type; - self.presentObstacleRegard.type = type; - self.presentObstacleRegard.drawPresentComputation = 0; - if (type == PresentSegmentGenre_Lucky) { - [self.constellationOriflamme removeFromSuperview]; - if (!self.fortunatePingencourageRegard.superview) { - [self.view addSubview:self.fortunatePingencourageRegard]; - [self.fortunatePingencourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.contentView.mas_top); - make.left.right.mas_equalTo(0); - make.height.mas_equalTo(48); - }]; - } - } else if(type == PresentSegmentGenre_WeekStar) { - [self.fortunatePingencourageRegard removeFromSuperview]; - if ([ClientDisposition partowardsiciptowardsionDisposition].dispositionAbstract.twelveStarSwitch) { - self.constellationOriflamme.hidden = NO; - if (!self.constellationOriflamme.superview) { - [self.view addSubview:self.constellationOriflamme]; - [self.constellationOriflamme mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.contentView.mas_top); - make.left.right.mas_equalTo(0); - make.height.mas_equalTo(75); - }]; - } - } else { - self.constellationOriflamme.hidden = YES; - } - } else { - [self.fortunatePingencourageRegard removeFromSuperview]; - [self.constellationOriflamme removeFromSuperview]; - } -} - -- (void)yUMIPresentAbstractRegard:(YUMIPresentAbstractRegard *)view didClickItem:(PresentAbstractMatrix *)info type:(PresentSegmentGenre)type { - if (type == PresentSegmentGenre_Graffiti) { - self.presentAbstractRegard.hidden = YES; - self.doodleRegard.hidden = NO; - self.doodleRegard.price = info.goldPrice; - self.presentObstacleRegard.drawPresentComputation = 0; - self.doodleRegard.chosenCidDigital = self.consumerRegard.chosenConsumerGarment.count; - [[SDWebImageManager sharedManager] loadImageWithURL:[NSURL URLWithString:info.giftUrl] options:SDWebImageProgressiveLoad progress:nil completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, SDImageCacheType cacheType, BOOL finished, NSURL * _Nullable imageURL) { - if (error == nil && image) { - self.doodleRegard.image = image; - } else { - self.presentAbstractRegard.hidden = NO; - } - }]; - } else { - self.presentObstacleRegard.drawPresentComputation = 10; - } -} - -#pragma mark - FBCPresentConsumersRegardRepresendtation -- (void)yUMIPresentConsumersRegard:(YUMIExternalizeConsumersRegard *)view didSelectUsers:(NSArray *)selectUids { - self.doodleRegard.chosenCidDigital = selectUids.count; -} - -#pragma mark - FBCGraffitiPresentRegardRepresendtation -- (void)yUMIDoodlePresentRegard:(YUMIGraffitiPresentRegard *)view didClickClose:(UIButton *)sender { - [UIView animateWithDuration:0.2 animations:^{ - self.doodleRegard.hidden = YES; - self.presentAbstractRegard.hidden = NO; - }]; -} - -- (void)yUMIDoodlePresentRegard:(YUMIGraffitiPresentRegard *)view didClickChange:(UIButton *)sender { - [UIView animateWithDuration:0.2 animations:^{ - self.doodleRegard.hidden = YES; - self.presentAbstractRegard.hidden = NO; - }]; -} - -- (void)yUMIDoodlePresentRegard:(YUMIGraffitiPresentRegard *)view didDrawCompletion:(NSArray *)speckGarment { - self.doodleSpeck = speckGarment; - self.presentObstacleRegard.drawPresentComputation = self.doodleSpeck.count; -} - -#pragma mark - FBCPresentTwelveStarPingbackRegardRepresendtation -- (void)yUMIPresentDuodenaryStowardselliteBroadcastRegard:(YUMIPresentTwelveSatellitePingbackRegard *)view didClickDetail:(UIButton *)sender { - [self dismissViewControllerAnimated:NO completion:^{ - YUMITissueRegardGovernancer * webVewC = [[YUMITissueRegardGovernancer alloc] init]; - webVewC.url = URLWithType(kXinZuoStarURL); - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:webVewC animated:YES]; - }]; -} - -#pragma mark - FBCPresentCeremony -- (void)dwellEarnConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo { - self.intelligenceGenreRegard.isExhibitThresholdReindict = userInfo.isFirstCharge; - self.presentObstacleRegard.isExhibitThresholdReindict = userInfo.isFirstCharge; - self.presentAbstractRegard.curConsumerMagnificentPrototype = userInfo.userVipInfoVO.vipLevel; -} - -- (void)acquireConsumerPocketbookAbstract:(RamparatetAbstractMatrix *)balanceInfo { - self.presentObstacleRegard.wentiretyetAbstractMatrix = balanceInfo; -} -- (void)acquireShetowardshePresentSttowardsementAccomplishment:(NSArray *)giftList { - self.presentAbstractRegard.impactDerivationGarment = giftList; -} - -- (void)acquireShetowardshePresentSttowardsementFlunk:(NSString *)message { - self.impactPresentRetrialComputation ++; - if (self.impactPresentRetrialComputation <= 10) { - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [self.presimport acquireImpactPresentSttowardsement]; - }); - } -} - -- (void)acquireOrdinaryPresentSttowardsementAccomplishment:(NSArray *)giftList { - self.presentAbstractRegard.ordinaryDerivationGarment = giftList; -} - -- (void)acquireOrdinaryPresentSttowardsementFlunk:(NSString *)message { - self.ordinaryPresentRetrialComputation ++; - if (self.ordinaryPresentRetrialComputation <= 10) { - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [self.presimport acquireOrdinaryPresentSttowardsement:self.roomUid]; - }); - } -} - -- (void)prohibitichargePresentAccomplishment:(PresentAchieveAbstractMatrix *)receiveInfo originDic:(NSDictionary *)originDic uidCount:(NSInteger)uidCount{ - self.presentObstacleRegard.dischargeBtutonIsCapacitate = YES; - if (receiveInfo.sourceType == PresentSourceGenre_Pack) { - - [self.presentAbstractRegard refurbishImpactProvenience:receiveInfo numberUser:uidCount]; - } else { - [self.presimport acquireConsumerRampartowardsAbstract]; - } - [self prohibitichargeIndividualityCommunictowardsion:receiveInfo oringinDic:originDic]; - - [self prohibitichargeDoodlePresentCommunictowardsion]; - if (self.segmentType == PresentSegmentGenre_Graffiti) { - NSString * title = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Send_Gift_View_3"),self.presentAbstractRegard.lastChosenPresent.giftName]; - [self EvidenceAccomplishmentToast:title]; - [self dismissViewControllerAnimated:YES completion:nil]; - } -} - -- (void)prohibitichargePresentFlunkAboutCryptogram:(NSInteger)code msg:(NSString *)msg { - self.presentObstacleRegard.dischargeBtutonIsCapacitate = YES; - if (code == 31005) { - [self EvidenceNgtowardsSufficientFundsAboutToast:msg]; - } else if (code == 8535) { - PresentAbstractMatrix * giftInfo = self.presentAbstractRegard.lastChosenPresent; - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.performanceStyle = TTAlertActionConfirmStyle; - config.message = [NSString stringWithFormat:@"尚未达到赠送%@所需要的贵族等级哦\n所需贵族等级:%@", giftInfo.giftName, giftInfo.giftVipInfo.vipName]; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - - } cancelHandler:^{ - - }]; - } else { - [self EvidenceMistakeToast:msg]; - } -} - -- (void)EvidenceNgtowardsSufficientFundsAboutToast:(NSString *)msg { - if (self.delegate.getUserInfo.isFirstCharge) { - [self dismissViewControllerAnimated:NO completion:^{ - [[NSNotificationCenter defaultCenter]postNotificationName:kShowFirstRechargeView object:@{@"type":self.delegate != nil ? @"2" : @"9",@"diamonds": self.presentObstacleRegard.wentiretyetAbstractMatrix.diamonds ?: @"0"}]; - }]; - } else { - [self EvidenceMistakeToast:msg]; - } -} - - -- (void)fortuntowardsePresentBroadcastReflectionAccomplishment:(NSArray *)records { - self.records = records; - self.fortunatePingencourageRegard.records = records; -} - -- (void)acquireDuodenaryStowardselliteRecentRtowardseThresholdAccomplishment:(PresentTwelveSatelliteThresholdMatrix *)model { - self.constellationOriflamme.giftInfo = model; -} - -#pragma mark - Event Response -- (void)prohibitiaplictowardsionarRegardRecognition:(UITapGestureRecognizer *)tap { - [self dismissViewControllerAnimated:YES completion:nil]; -} - -#pragma mark - Getters And Setters -- (void)setUsingdeparatmentGenre:(DischargePresentGenre)usingdeparatmentGenre { - _usingdeparatmentGenre = usingdeparatmentGenre; - self.presentObstacleRegard.usingdeparatmentGenre = usingdeparatmentGenre; - self.presentAbstractRegard.usingdeparatmentGenre = _usingdeparatmentGenre; - self.intelligenceGenreRegard.hidden = _usingdeparatmentGenre == DischargePresentGenre_User; - self.consumerRegard.hidden = _usingdeparatmentGenre == DischargePresentGenre_User; - self.impressionRegard.hidden = _usingdeparatmentGenre == DischargePresentGenre_User; - if (_usingdeparatmentGenre == DischargePresentGenre_User) { - self.contentView.backgroundColor = [UIColor whiteColor]; - } -} - -- (void)setChosenPresentId:(NSString *)chosenPresentId { - _chosenPresentId = chosenPresentId; - self.presentAbstractRegard.defaultChosenPresentId = chosenPresentId; -} - -- (void)setDelegate:(id)delegate { - _delegate = delegate; - if (_delegate) { - self.presentAbstractRegard.roomType = _delegate.acquireChamberAbstract.type; - } -} - -- (UIView *)apexRegard { - if (!_apexRegard) { - _apexRegard = [[UIView alloc] init]; - _apexRegard.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(prohibitiaplictowardsionarRegardRecognition:)]; - [_apexRegard addGestureRecognizer:tap]; - } - return _apexRegard; -} - -- (UIView *)contentView { - if (!_contentView) { - _contentView = [[UIView alloc] init]; - UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, KScreenHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(8, 8)]; - CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; - maskLayer.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); - maskLayer.path = maskPath.CGPath; - _contentView.layer.mask = maskLayer; - - } - return _contentView; -} - -- (YUMIExternalizeConsumersRegard *)consumerRegard { - if (!_consumerRegard) { - _consumerRegard = [[YUMIExternalizeConsumersRegard alloc] init]; - _consumerRegard.delegate = self; - } - return _consumerRegard; -} - -- (YUMIPresentAbstractRegard *)presentAbstractRegard { - if (!_presentAbstractRegard) { - _presentAbstractRegard = [[YUMIPresentAbstractRegard alloc] init]; - _presentAbstractRegard.delegate = self; - } - return _presentAbstractRegard; -} - -- (YUMIPresentObstacleRegard *)presentObstacleRegard { - if (!_presentObstacleRegard) { - _presentObstacleRegard = [[YUMIPresentObstacleRegard alloc] init]; - _presentObstacleRegard.delegate = self; - } - return _presentObstacleRegard; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 0; - _stackView.backgroundColor = [UIColor clearColor]; - } - return _stackView; -} - -- (UIView *)bottomView { - if (!_bottomView) { - _bottomView = [[UIView alloc] init]; - _bottomView.backgroundColor = [UIColor clearColor]; - } - return _bottomView; -} - -- (YUMIGraffitiPresentRegard *)doodleRegard { - if (!_doodleRegard) { - _doodleRegard = [[YUMIGraffitiPresentRegard alloc] init]; - _doodleRegard.hidden = YES; - _doodleRegard.delegate = self; - } - return _doodleRegard; -} - -- (YUMIPresentIntelligenceGenreRegard *)intelligenceGenreRegard { - if (!_intelligenceGenreRegard) { - _intelligenceGenreRegard = [[YUMIPresentIntelligenceGenreRegard alloc] init]; - _intelligenceGenreRegard.delegate = self; - } - return _intelligenceGenreRegard; -} - -- (YUMIPresentFortunatePresentPingbackRegard *)fortunatePingencourageRegard { - if (!_fortunatePingencourageRegard) { - _fortunatePingencourageRegard = [[YUMIPresentFortunatePresentPingbackRegard alloc] init]; - _fortunatePingencourageRegard.delegate = self; - } - return _fortunatePingencourageRegard; -} - -- (YUMIPresentTwelveSatellitePingbackRegard *)constellationOriflamme { - if (!_constellationOriflamme) { - _constellationOriflamme = [[YUMIPresentTwelveSatellitePingbackRegard alloc] init]; - _constellationOriflamme.delegate = self; - } - return _constellationOriflamme; -} - -- (UIVisualEffectView *)impressionRegard { - if (!_impressionRegard) { - UIBlurEffect *beffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; - _impressionRegard = [[UIVisualEffectView alloc] initWithEffect:beffect]; - } - return _impressionRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIExternalizeConsumersRegard.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIExternalizeConsumersRegard.h deleted file mode 100644 index fbb8185b..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIExternalizeConsumersRegard.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMGiftUsersView.h -// YUMI -// -// Created by YUMI on 2021/11/9. -// - -#import -#import "YUMIDischargePresentRegard.h" -NS_ASSUME_NONNULL_BEGIN -@class YUMIExternalizeConsumerAbstractMatrix, YUMIExternalizeConsumersRegard; -@protocol FBCPresentConsumersRegardRepresendtation -- (void)yUMIPresentConsumersRegard:(YUMIExternalizeConsumersRegard *)view didSelectUsers:(NSArray *)selectUids; - -@end -@interface YUMIExternalizeConsumersRegard : UIView -@property (nonatomic,strong, readonly) NSMutableArray *chosenConsumerGarment; -@property (nonatomic,assign, readonly) BOOL isChosenEntirety; -- (void)prohibitipositionPresentConsumers:(NSArray *)users; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIExternalizeConsumersRegard.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIExternalizeConsumersRegard.m deleted file mode 100644 index 9ae49df0..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIExternalizeConsumersRegard.m +++ /dev/null @@ -1,266 +0,0 @@ -// -// YMGiftUsersView.m -// YUMI -// -// Created by YUMI on 2021/11/9. -// - -#import "YUMIExternalizeConsumersRegard.h" -#import -#import "AccountAbstractStorage.h" -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "NSArray+Safe.h" -#import "ConsumerAbstractMatrix.h" -#import "YUMIExternalizeConsumerAbstractMatrix.h" -#import "YUMIExternalizeConsumerAssembletionRegardElement.h" -@interface YUMIExternalizeConsumersRegard () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UIButton *entiretyMiecreoscoopeBtuton; -@property (nonatomic,strong) UICollectionView *collectionView; -@property (nonatomic,strong) UIStackView *soleHierarchyRegard; -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) NSArray *consumerGarment; -@property (nonatomic,strong) NSMutableArray *chosenConsumerGarment; -@property (nonatomic,assign) BOOL isChosenEntirety; -@end - -@implementation YUMIExternalizeConsumersRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Response -- (void)entiretyMiecreoscoopeBtutonPerformance:(UIButton *)sender { - sender.selected = !sender.selected; - [self.consumerGarment enumerateObjectsUsingBlock:^(YUMIExternalizeConsumerAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - obj.isSelect = sender.selected; - NSString * selectUid = [NSString stringWithFormat:@"%ld", obj.uid]; - if (obj.isSelect) { - if (![self.chosenConsumerGarment containsObject:selectUid]) { - [self.chosenConsumerGarment addObject:selectUid]; - } - } else { - if ([self.chosenConsumerGarment containsObject:selectUid]) { - [self.chosenConsumerGarment removeObject:selectUid]; - } - } - }]; - self.isChosenEntirety = sender.selected; - [self.collectionView reloadData]; - - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIPresentConsumersRegard:didSelectUsers:)]) { - [self.delegate yUMIPresentConsumersRegard:self didSelectUsers:self.chosenConsumerGarment]; - } -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor];; - [self addSubview:self.stackView]; - [self addSubview:self.soleHierarchyRegard]; - [self.stackView addArrangedSubview:self.entiretyMiecreoscoopeBtuton]; - [self.stackView addArrangedSubview:self.collectionView]; - - [self.soleHierarchyRegard addArrangedSubview:self.intelligenceportraitIndicateRegard]; - [self.soleHierarchyRegard addArrangedSubview:self.monicerSequencignation]; - -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(43 + 15 * 2); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self).inset(15); - make.top.bottom.mas_equalTo(self); - }]; - - [self.soleHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self).inset(15); - make.top.bottom.mas_equalTo(self); - }]; - - [self.entiretyMiecreoscoopeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(50, 28)); - }]; - - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(43); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(38, 38)); - }]; -} - -- (NSArray *)prohibiticoveryDischargePresentEntiretyConsumers:(NSArray *)users { - NSMutableArray * tempArray = [NSMutableArray array]; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSArray * newArray = [users sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { - YUMIExternalizeConsumerAbstractMatrix * model1 = obj1; - YUMIExternalizeConsumerAbstractMatrix * model2 = obj2; - NSComparisonResult resuest = [model1.position compare:model2.position]; - return resuest; - }]; - - for (int i = 0; i < newArray.count; i++) { - YUMIExternalizeConsumerAbstractMatrix * userInfo = [newArray secureGroalTowardsIndictowardsrix1:i]; - if (userInfo && userInfo.uid > 0 && userInfo.uid != uid.integerValue) { - NSString * uid = [NSString stringWithFormat:@"%ld", userInfo.uid]; - if (userInfo.isSelect) { - [self.chosenConsumerGarment addObject:uid]; - } - [tempArray addObject:userInfo]; - } - } - return [tempArray copy]; -} - -#pragma mark - Public Method -- (void)prohibitipositionPresentConsumers:(NSArray *)users { - self.consumerGarment = [self prohibiticoveryDischargePresentEntiretyConsumers:users]; - if (users.count == 1 && users.firstObject.position == nil) { - YUMIExternalizeConsumerAbstractMatrix *userInfo = users.firstObject; - self.intelligenceportraitIndicateRegard.imageUrl = userInfo.avatar; - self.monicerSequencignation.text = userInfo.nick; - self.stackView.hidden = YES; - self.soleHierarchyRegard.hidden = NO; - } else { - [self.collectionView reloadData]; - self.soleHierarchyRegard.hidden = YES; - self.stackView.hidden = NO; - } -} - -#pragma mark - UICollectionViewDataSource And UICollectionViewDelegate -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.consumerGarment.count; -} - --(__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMIExternalizeConsumerAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIExternalizeConsumerAssembletionRegardElement class]) forIndexPath:indexPath]; - YUMIExternalizeConsumerAbstractMatrix * queue = [self.consumerGarment secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.userInfo = queue; - return cell; -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - [collectionView deselectItemAtIndexPath:indexPath animated:YES]; - YUMIExternalizeConsumerAbstractMatrix * queue = [self.consumerGarment secureGroalTowardsIndictowardsrix1:indexPath.row]; - queue.isSelect = !queue.isSelect; - [self.collectionView reloadData]; - NSString * selectUid = [NSString stringWithFormat:@"%ld", queue.uid]; - if (queue.isSelect) { - [self.chosenConsumerGarment addObject:selectUid]; - } else { - if ([self.chosenConsumerGarment containsObject:selectUid]) { - [self.chosenConsumerGarment removeObject:selectUid]; - } - } - if (self.chosenConsumerGarment.count == self.consumerGarment.count) { - self.entiretyMiecreoscoopeBtuton.selected = YES; - self.isChosenEntirety = YES; - } else { - self.entiretyMiecreoscoopeBtuton.selected = NO; - self.isChosenEntirety = NO; - } - - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIPresentConsumersRegard:didSelectUsers:)]) { - [self.delegate yUMIPresentConsumersRegard:self didSelectUsers:self.chosenConsumerGarment]; - } -} -#pragma mark - Getters And Setters -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentCenter; - _stackView.spacing = 10; - } - return _stackView; -} - -- (UIStackView *)soleHierarchyRegard { - if (!_soleHierarchyRegard) { - _soleHierarchyRegard = [[UIStackView alloc] init]; - _soleHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _soleHierarchyRegard.distribution = UIStackViewDistributionFill; - _soleHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _soleHierarchyRegard.spacing = 10; - } - return _soleHierarchyRegard; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 38/2; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:15]; - _monicerSequencignation.textColor = [UIColor whiteColor]; - } - return _monicerSequencignation; -} - -- (UIButton *)entiretyMiecreoscoopeBtuton { - if (!_entiretyMiecreoscoopeBtuton) { - _entiretyMiecreoscoopeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_entiretyMiecreoscoopeBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor revoctowardsionBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor revoctowardsionBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_entiretyMiecreoscoopeBtuton setTitleColor:[DJDKMIMOMColor aplictowardsionMainPrettify] forState:UIControlStateNormal]; - [_entiretyMiecreoscoopeBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateSelected]; - [_entiretyMiecreoscoopeBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateSelected]; - [_entiretyMiecreoscoopeBtuton setTitle:YMLocalizedString(@"YUMI_Gift_Users_View_0") forState:UIControlStateSelected]; - [_entiretyMiecreoscoopeBtuton setTitle:YMLocalizedString(@"YUMI_Gift_Users_View_1") forState:UIControlStateNormal]; - _entiretyMiecreoscoopeBtuton.titleLabel.font = [UIFont systemFontOfSize:13]; - _entiretyMiecreoscoopeBtuton.layer.masksToBounds = YES; - _entiretyMiecreoscoopeBtuton.layer.cornerRadius = 28 /2; - [_entiretyMiecreoscoopeBtuton addTarget:self action:@selector(entiretyMiecreoscoopeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _entiretyMiecreoscoopeBtuton; -} - -- (UICollectionView *)collectionView{ - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; - layout.itemSize = CGSizeMake(38, 43); - layout.minimumInteritemSpacing = 4; - layout.sectionInset = UIEdgeInsetsMake(0, 0, 0,0); - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.backgroundColor = [UIColor clearColor]; - _collectionView.showsHorizontalScrollIndicator = NO; - [_collectionView registerClass:[YUMIExternalizeConsumerAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIExternalizeConsumerAssembletionRegardElement class])]; - } - return _collectionView; -} - -- (NSMutableArray *)chosenConsumerGarment { - if (!_chosenConsumerGarment) { - _chosenConsumerGarment = [NSMutableArray array]; - } - return _chosenConsumerGarment; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIGraffitiPresentRegard.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIGraffitiPresentRegard.h deleted file mode 100644 index 3d282ab1..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIGraffitiPresentRegard.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// YMGraffitiGiftView.h -// YUMI -// -// Created by YUMI on 2022/8/22. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIGraffitiPresentRegard; -@protocol FBCGraffitiPresentRegardRepresendtation -- (void)yUMIDoodlePresentRegard:(YUMIGraffitiPresentRegard *)view didClickChange:(UILabel *)sender; -- (void)yUMIDoodlePresentRegard:(YUMIGraffitiPresentRegard *)view didClickClose:(UIButton *)sender; -- (void)yUMIDoodlePresentRegard:(YUMIGraffitiPresentRegard *)view didDrawCompletion:(NSArray *)speckGarment; -@end - -@interface YUMIGraffitiPresentRegard : UIView -@property (nonatomic,strong) UIImage *image; -@property (nonatomic,weak) id delegate; -@property (nonatomic,assign) double price; -@property (nonatomic,strong) NSArray *brectifynessGarment; -@property (nonatomic,assign) NSInteger chosenCidDigital; - -- (void)prohibititinctTowardsoloudspeaker; -- (void)crtowardseValencyIdiosyncracy; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIGraffitiPresentRegard.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIGraffitiPresentRegard.m deleted file mode 100644 index ab26a416..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIGraffitiPresentRegard.m +++ /dev/null @@ -1,394 +0,0 @@ -// -// YMGraffitiGiftView.m -// YUMI -// -// Created by YUMI on 2022/8/22. -// - -#import "YUMIGraffitiPresentRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "XNDJTBWGLoadingTool.h" - -@interface YUMIGraffitiPresentRegard () -@property (nonatomic,strong) UIView * contentView; -@property (nonatomic,strong) UIView * paletteRegard; -@property (nonatomic,strong) UIStackView *promptsHierarchyRegard; -@property (nonatomic,strong) UIImageView *handIndicateRegard; -@property (nonatomic,strong) UILabel *promptsSequencignation; -@property (nonatomic,strong) UIView * utensilRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UIStackView *utensilHierarchyRegard; -@property (nonatomic,strong) UIButton *repealBtuton; -@property (nonatomic,strong) UIButton *representationBtuton; -@property (nonatomic,strong) UIButton *concludeBtuton; -@property (nonatomic,assign) CGPoint panSpeck; -@property (nonatomic,assign) CGPoint beginSpeck; -@property (nonatomic,assign) CGFloat step; -@property (nonatomic,assign) int index; -@property (nonatomic,assign) BOOL isExhibitLargestToast; -@property (nonatomic,strong) NSMutableArray *regardsGarment; -@property (nonatomic,strong) NSMutableArray *indicatrixGarment; -@property (nonatomic,strong) NSMutableArray *> *speckGarment; - -@end - -@implementation YUMIGraffitiPresentRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.isExhibitLargestToast = YES; - self.step = 10; - UIPanGestureRecognizer * panGes = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panPerformance:)]; - [self addGestureRecognizer:panGes]; - self.backgroundColor = [UIColor clearColor]; - [self addSubview:self.contentView]; - - [self.contentView addSubview:self.promptsHierarchyRegard]; - [self.contentView addSubview:self.paletteRegard]; - [self.contentView addSubview:self.utensilRegard]; - - [self.promptsHierarchyRegard addArrangedSubview:self.handIndicateRegard]; - [self.promptsHierarchyRegard addArrangedSubview:self.promptsSequencignation]; - - [self.utensilRegard addSubview:self.titleLabel]; - [self.utensilRegard addSubview:self.utensilHierarchyRegard]; - - [self.utensilHierarchyRegard addArrangedSubview:self.repealBtuton]; - [self.utensilHierarchyRegard addArrangedSubview:self.representationBtuton]; - [self.utensilHierarchyRegard addArrangedSubview:self.concludeBtuton]; -} - -- (void)initChildLyRestrictions { - CGFloat avatarHeight = (43 + 15 * 2); - CGFloat bottomHeight = (45); - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth); - make.height.mas_equalTo(KScreenHeight - avatarHeight - bottomHeight); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - - [self.promptsHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.contentView); - make.width.mas_equalTo(KScreenWidth); - }]; - - [self.paletteRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.contentView).offset(kSafeAreaTopHeight); - make.left.right.mas_equalTo(self.contentView); - make.bottom.mas_equalTo(self.utensilRegard.mas_top); - }]; - - [self.handIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(78, 93)); - }]; - - - [self.utensilRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.left.right.mas_equalTo(self.contentView); - make.height.mas_equalTo(56); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.utensilRegard).offset(15); - make.centerY.mas_equalTo(self.utensilRegard); - }]; - - [self.utensilHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.utensilRegard).offset(-15); - make.height.mas_equalTo(22); - make.centerY.mas_equalTo(self.utensilRegard); - }]; - - [self.repealBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(22); - }]; - - [self.representationBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(22); - }]; - - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(22); - }]; -} - -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { - self.promptsHierarchyRegard.hidden = YES; - UITouch *touch = touches.anyObject; - CGPoint point = [touch locationInView:self.contentView]; - self.beginSpeck = point; -} - -- (void)panPerformance:(UIPanGestureRecognizer *)tap { - if (self.speckGarment.count >= 300) { - if (self.isExhibitLargestToast) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Graffiti_Gift_View_0")]; - self.isExhibitLargestToast = YES; - } - return; - } - - if (tap.state == UIGestureRecognizerStateBegan) { - [self.indicatrixGarment addObject:[NSNumber numberWithInteger:self.regardsGarment.count]]; - } else if(tap.state == UIGestureRecognizerStateEnded) { - self.isExhibitLargestToast = YES; - } - CGPoint point = [tap translationInView:self.contentView]; - CGFloat dx = [self mietyAbs:point.x - self.panSpeck.x]; - CGFloat dy = [self mietyAbs:point.y - self.panSpeck.y]; - CGPoint drawPoint = CGPointMake(self.beginSpeck.x + point.x , self.beginSpeck.y + point.y); - if ((dx * dx + dy * dy) > 2 * self.step * self.step) { - [self accelertowardseChildLy:drawPoint]; - self.panSpeck = point; - } -} - -- (int)mietyAbs:(int)num { - if (num >= 0) { - return num; - } - return -num; -} - - -- (void)accelertowardseChildLy:(CGPoint)point { - UIImageView * imageView = [[UIImageView alloc] init]; - imageView.contentMode = UIViewContentModeScaleAspectFill; - imageView.layer.masksToBounds = YES; - imageView.image = self.image; - imageView.frame = CGRectMake(point.x, point.y, 20, 20); - [self.paletteRegard addSubview:imageView]; - [self.regardsGarment addObject:imageView]; - [self.speckGarment addObject:@[@([self diversifictowardsionExtentsPalette:point.x]), @([self diversifictowardsionAltitudePalette:point.y])]]; - [self crtowardseValencyIdiosyncracy]; - if (self.speckGarment.count >= 10 && self.delegate && [self.delegate respondsToSelector:@selector(yUMIDoodlePresentRegard:didDrawCompletion:)]) { - [self.delegate yUMIDoodlePresentRegard:self didDrawCompletion:self.speckGarment]; - } -} - -- (NSInteger)diversifictowardsionExtentsPalette:(CGFloat)number { - return number / KScreenWidth * 1000; -} - -- (NSInteger)diversifictowardsionAltitudePalette:(CGFloat)number { - return number / KScreenHeight * 1000; -} - -- (void)prohibititinctTowardsoloudspeaker { - [self.regardsGarment makeObjectsPerformSelector:@selector(removeFromSuperview)]; - [self.regardsGarment removeAllObjects]; - [self.speckGarment removeAllObjects]; - [self.indicatrixGarment removeAllObjects]; -} -#pragma mark - Event Response - -- (void)repealBtutonPerformance:(UIButton *)sender { - NSInteger index = [self.indicatrixGarment lastObject].integerValue; - if (index < self.regardsGarment.count) { - NSArray * array = [self.regardsGarment subarrayWithRange:NSMakeRange(index, self.regardsGarment.count - index)]; - NSArray * array2 = [self.speckGarment subarrayWithRange:NSMakeRange(index, self.speckGarment.count - index)]; - [self.speckGarment removeObjectsInArray:array2]; - [self.regardsGarment removeObjectsInArray:array]; - if (array.count) { - [array makeObjectsPerformSelector:@selector(removeFromSuperview)]; - } - if (self.indicatrixGarment.count > 0) { - [self.indicatrixGarment removeLastObject]; - } - [self crtowardseValencyIdiosyncracy]; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIDoodlePresentRegard:didDrawCompletion:)]) { - [self.delegate yUMIDoodlePresentRegard:self didDrawCompletion:self.speckGarment]; - } - } -} - -- (void)representtowardsionBtutonPerformance:(UIButton *)sender { - [self prohibititinctTowardsoloudspeaker]; - [self crtowardseValencyIdiosyncracy]; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIDoodlePresentRegard:didDrawCompletion:)]) { - [self.delegate yUMIDoodlePresentRegard:self didDrawCompletion:self.speckGarment]; - } -} - -- (void)concludeBtutonPerformance:(UIButton *)sender { - [self prohibititinctTowardsoloudspeaker]; - [self crtowardseValencyIdiosyncracy]; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIDoodlePresentRegard:didDrawCompletion:)]) { - [self.delegate yUMIDoodlePresentRegard:self didDrawCompletion:self.speckGarment]; - } - - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIDoodlePresentRegard:didClickClose:)]) { - [self.delegate yUMIDoodlePresentRegard:self didClickClose:sender]; - } -} - -- (void)crtowardseValencyIdiosyncracy { - if (self.regardsGarment.count < 10) { - NSString * title = YMLocalizedString(@"YUMI_Graffiti_Gift_View_1"); - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14], NSForegroundColorAttributeName:[UIColor whiteColor]}]; - self.titleLabel.attributedText = attribute; - } else { - NSInteger number = self.chosenCidDigital > 0 ? self.chosenCidDigital : 0; - NSString * count = [NSString stringWithFormat:@"%ld", self.regardsGarment.count]; - NSString * price = [NSString stringWithFormat:@"%.0f", self.regardsGarment.count * self.price * number]; - NSString * title = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Graffiti_Gift_View_2"), count, price]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14], NSForegroundColorAttributeName:[UIColor whiteColor]}]; - [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor aplictowardsionMainPrettify] range:[title rangeOfString:count]]; - [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor aplictowardsionMainPrettify] range:[title rangeOfString:price]]; - self.titleLabel.attributedText = attribute; - } - -} - -#pragma mark - Getters And Setters -- (void)setChosenCidDigital:(NSInteger)chosenCidDigital { - _chosenCidDigital = chosenCidDigital; - [self crtowardseValencyIdiosyncracy]; -} - -- (UIView *)contentView { - if (!_contentView) { - _contentView = [[UIView alloc] init]; - _contentView.backgroundColor = UIColorRGBAlpha(0x000000, 0.7); - } - return _contentView; -} - -- (UIView *)paletteRegard { - if (!_paletteRegard) { - _paletteRegard = [[UIView alloc] init]; - _paletteRegard.backgroundColor = [UIColor clearColor]; - _paletteRegard.layer.masksToBounds = YES; - } - return _paletteRegard; -} - -- (UIStackView *)promptsHierarchyRegard { - if (!_promptsHierarchyRegard) { - _promptsHierarchyRegard = [[UIStackView alloc] init]; - _promptsHierarchyRegard.axis = UILayoutConstraintAxisVertical; - _promptsHierarchyRegard.distribution = UIStackViewDistributionFill; - _promptsHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _promptsHierarchyRegard.spacing = 17; - } - return _promptsHierarchyRegard; -} - -- (UIImageView *)handIndicateRegard { - if (!_handIndicateRegard) { - _handIndicateRegard = [[UIImageView alloc] init]; - _handIndicateRegard.userInteractionEnabled = YES; - _handIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_present_graffiti_hand"]; - } - return _handIndicateRegard; -} - -- (UILabel *)promptsSequencignation { - if (!_promptsSequencignation) { - _promptsSequencignation = [[UILabel alloc] init]; - _promptsSequencignation.font = [UIFont systemFontOfSize:14]; - _promptsSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - _promptsSequencignation.text = YMLocalizedString(@"YUMI_Graffiti_Gift_View_3"); - } - return _promptsSequencignation; -} - -- (UIView *)utensilRegard { - if (!_utensilRegard) { - _utensilRegard = [[UIView alloc] init]; - _utensilRegard.backgroundColor = UIColorRGBAlpha(0xFFFFFF, 0.2); - CAShapeLayer * layer = [CAShapeLayer layer]; - layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, 56) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(8, 8)].CGPath; - _utensilRegard.layer.mask = layer; - } - return _utensilRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:14]; - _titleLabel.textColor = [UIColor whiteColor]; - _titleLabel.text = YMLocalizedString(@"YUMI_Graffiti_Gift_View_4"); - } - return _titleLabel; -} - -- (UIStackView *)utensilHierarchyRegard { - if (!_utensilHierarchyRegard) { - _utensilHierarchyRegard = [[UIStackView alloc] init]; - _utensilHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _utensilHierarchyRegard.distribution = UIStackViewDistributionFill; - _utensilHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _utensilHierarchyRegard.spacing = 12; - } - return _utensilHierarchyRegard; -} - -- (UIButton *)repealBtuton { - if (!_repealBtuton) { - _repealBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_repealBtuton setImage:[UIImage imageNamed:@"yumi_scope_present_graffiti_repeal"] forState:UIControlStateNormal]; - [_repealBtuton setImage:[UIImage imageNamed:@"yumi_scope_present_graffiti_repeal"] forState:UIControlStateSelected]; - [_repealBtuton addTarget:self action:@selector(repealBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _repealBtuton; -} - -- (UIButton *)representationBtuton { - if (!_representationBtuton) { - _representationBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_representationBtuton setImage:[UIImage imageNamed:@"yumi_scope_present_graffiti_delete"] forState:UIControlStateNormal]; - [_representationBtuton setImage:[UIImage imageNamed:@"yumi_scope_present_graffiti_delete"] forState:UIControlStateSelected]; - [_representationBtuton addTarget:self action:@selector(representtowardsionBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _representationBtuton; -} - -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_scope_present_graffiti_close"] forState:UIControlStateNormal]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_scope_present_graffiti_close"] forState:UIControlStateSelected]; - [_concludeBtuton addTarget:self action:@selector(concludeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _concludeBtuton; -} - -- (NSMutableArray *)indicatrixGarment { - if (!_indicatrixGarment) { - _indicatrixGarment = [NSMutableArray array]; - } - return _indicatrixGarment; -} - -- (NSMutableArray *)speckGarment { - if (!_speckGarment) { - _speckGarment = [NSMutableArray array]; - } - return _speckGarment; -} - -- (NSMutableArray *)regardsGarment { - if (!_regardsGarment) { - _regardsGarment = [NSMutableArray array]; - } - return _regardsGarment; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentAbstractRegard.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentAbstractRegard.h deleted file mode 100644 index 78e29e0c..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentAbstractRegard.h +++ /dev/null @@ -1,50 +0,0 @@ -// -// YMGiftMiddleView.h -// YUMI -// -// Created by YUMI on 2021/11/9. -// - -#import -#import "YUMIDischargePresentRegard.h" -#import "ChamberAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, PresentSegmentGenre) { - PresentSegmentGenre_Normal = 1, - PresentSegmentGenre_Lucky, - PresentSegmentGenre_Noble, - PresentSegmentGenre_WeekStar, - PresentSegmentGenre_Pack, - PresentSegmentGenre_Graffiti, - PresentSegmentGenre_Anchor, - PresentSegmentGenre_Punish, -}; - - -@class PresentAbstractMatrix,YUMIPresentAbstractRegard, PresentAchieveAbstractMatrix; - -@protocol FBCPresentAbstractRegardRepresendtation - -- (void)yUMIPresentAbstractRegard:(YUMIPresentAbstractRegard *)view didClickSegment:(PresentSegmentGenre)type; - -- (void)yUMIPresentAbstractRegard:(YUMIPresentAbstractRegard *)view didClickItem:(PresentAbstractMatrix *)info type:(PresentSegmentGenre)type; - -@end - -@interface YUMIPresentAbstractRegard : UIView -@property (nonatomic,assign) DischargePresentGenre usingdeparatmentGenre; -@property (nonatomic,strong) NSArray *ordinaryDerivationGarment; -@property (nonatomic,strong) NSArray *impactDerivationGarment; -- (void)refurbishImpactProvenience:(PresentAchieveAbstractMatrix *)giftReceiveInfo numberUser:(NSInteger)numberUser; -@property (nonatomic,weak) id delegate; -@property (nonatomic,strong,readonly) PresentAbstractMatrix *lastChosenPresent; -@property (nonatomic, assign) NSInteger curConsumerMagnificentPrototype; - -@property (nonatomic, copy) NSString *defaultChosenPresentId; -@property (nonatomic,assign) ChamberGenre roomType; -- (void)presentIntelligenceGenreHadDiversifictowardsion:(NSInteger)headType; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentAbstractRegard.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentAbstractRegard.m deleted file mode 100644 index a8338912..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentAbstractRegard.m +++ /dev/null @@ -1,745 +0,0 @@ -// -// YMGiftMiddleView.m -// YUMI -// -// Created by YUMI on 2021/11/9. -// - -#import "YUMIPresentAbstractRegard.h" -#import -#import "YUMIMacroUitls.h" -#import "YUMIHtmlUrl.h" -#import "ThemeColor+SendGift.h" -#import "NSArray+Safe.h" -#import "UIImage+Utils.h" -#import "PresentAbstractMatrix.h" -#import "PresentAchieveAbstractMatrix.h" -#import "ChamberAbstractMatrix.h" -#import "YUMIPresentProvisionAssembletionRegardElement.h" -#import "YUMIPresentDispossessAssembletionRegardElement.h" -#import "YUMIPresentWeekSatelliteAssembletionRegardElement.h" -#import "YUMIPresentAssembletionRegardFlowProgramming.h" - -static NSString *kSendGiftViewHidePunishNewIcon = @"kSendGiftViewHidePunishNewIcon"; - -@interface YUMIPresentAbstractRegard () -@property (nonatomic,strong) UIScrollView *scrollView; -@property (nonatomic,strong) UIStackView *segmentHierarchyRegard; -@property (nonatomic,strong) UIImageView *segmentBackgroundRegard; -@property (nonatomic,strong) UIButton *ordinaryPresentBtuton; -@property (nonatomic,strong) UIButton *impactPresentBtuton; -@property (nonatomic,strong) UIButton *fortunatePresentBtuton; -@property (nonatomic, strong) UIButton *zhouSatelliteBtuton; -@property (nonatomic,strong) UIButton *doodleBtuton; -@property (nonatomic, strong) UIButton *punishBtuton; -@property (nonatomic, strong) UIImageView *freshFigureIndicate; -@property (nonatomic,strong) UIButton *kellegBtuton; -@property (nonatomic,strong) UILabel *generalBWSttessSequencignation; -@property (nonatomic,strong) UIStackView *presentHierarchyRegard; -@property (nonatomic,strong) UICollectionView *presentassembletionRegard; -@property (nonatomic, strong) UIPageControl *periodGovernancer; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,strong) NSArray *presentGarment; -@property (nonatomic,strong) NSArray *presentFortunateGarment; -@property (nonatomic, strong) NSArray *presentMagnificentGarment; -@property (nonatomic, strong) NSArray *presentZhouSatelliteGarment; -@property (nonatomic,strong) NSArray *presentImpactGarment; -@property (nonatomic,strong) NSArray *presentDoodleGarment; -@property (nonatomic,strong) NSArray *kellegGarment; -@property (nonatomic, strong) NSArray *punishGarment; -@property (nonatomic,strong) NSAttributedString *generalAttribute; -@property (nonatomic,assign) PresentSegmentGenre segmentType; -@property (nonatomic,strong) PresentAbstractMatrix *lastChosenPresent; - -@property (nonatomic, assign) NSInteger chosenIndicatrix; -@property (nonatomic,assign) NSInteger chosenUniversalPeriod; -@end - -@implementation YUMIPresentAbstractRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Response -- (void)didTicktackPresentMaintainortionPerformance:(UIButton *)sender { - self.ordinaryPresentBtuton.selected = NO; - self.fortunatePresentBtuton.selected = NO; - self.impactPresentBtuton.selected = NO; - self.zhouSatelliteBtuton.selected = NO; - self.doodleBtuton.selected = NO; - self.kellegBtuton.selected = NO; - self.punishBtuton.selected = NO; - sender.selected = !sender.selected; - self.segmentType = sender.tag; -} - -#pragma mark - Public Method -- (void)refurbishImpactProvenience:(PresentAchieveAbstractMatrix *)giftReceiveInfo numberUser:(NSInteger)numberUser { - PresentAbstractMatrix * giftInfo = [self prohibiticoveryPresentAbstractByPresentId:giftReceiveInfo.giftId.integerValue]; - giftInfo.count -= giftReceiveInfo.giftNum * numberUser; - if (giftInfo.count == 0) { - [self.datasource removeObject:giftInfo]; - } - [self.presentassembletionRegard reloadData]; -} - -- (void)presentIntelligenceGenreHadDiversifictowardsion:(NSInteger)headType { - if (headType == 1) { - [self.doodleBtuton removeFromSuperview]; - [self.punishBtuton removeFromSuperview]; - [self.freshFigureIndicate removeFromSuperview]; - self.freshFigureIndicate = nil; - [self.segmentHierarchyRegard addArrangedSubview:self.ordinaryPresentBtuton]; - [self.segmentHierarchyRegard addArrangedSubview:self.fortunatePresentBtuton]; - [self.segmentHierarchyRegard addArrangedSubview:self.zhouSatelliteBtuton]; - if(self.roomType == ChamberGenre_Anchor) { - [self.segmentHierarchyRegard addArrangedSubview:self.kellegBtuton]; - [self didTicktackPresentMaintainortionPerformance:self.kellegBtuton]; - } - if(self.segmentType != PresentSegmentGenre_Pack) { - [self didTicktackPresentMaintainortionPerformance:self.ordinaryPresentBtuton]; - } - } else { - [self.ordinaryPresentBtuton removeFromSuperview]; - [self.fortunatePresentBtuton removeFromSuperview]; - [self.zhouSatelliteBtuton removeFromSuperview]; - [self.kellegBtuton removeFromSuperview]; - [self.segmentHierarchyRegard addArrangedSubview:self.doodleBtuton]; - [self.segmentHierarchyRegard addArrangedSubview:self.punishBtuton]; - BOOL hiden = [[NSUserDefaults standardUserDefaults] boolForKey:kSendGiftViewHidePunishNewIcon]; - if(!hiden) { - [self addSubview:self.freshFigureIndicate]; - [self.freshFigureIndicate mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.punishBtuton.mas_right).mas_offset(-5); - make.bottom.mas_equalTo(self.punishBtuton.mas_top).mas_offset(5); - make.size.mas_equalTo(CGSizeMake(24, 10)); - }]; - } - if(self.segmentType != PresentSegmentGenre_Pack) { - [self didTicktackPresentMaintainortionPerformance:self.doodleBtuton]; - } - } -} - - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.segmentBackgroundRegard]; - [self addSubview:self.scrollView]; - [self addSubview:self.presentHierarchyRegard]; - [self addSubview:self.impactPresentBtuton]; - [self addSubview:self.generalBWSttessSequencignation]; - [self.scrollView addSubview:self.segmentHierarchyRegard]; - - [self.segmentHierarchyRegard addArrangedSubview:self.ordinaryPresentBtuton]; - [self.segmentHierarchyRegard addArrangedSubview:self.fortunatePresentBtuton]; - [self.segmentHierarchyRegard addArrangedSubview:self.zhouSatelliteBtuton]; - [self.segmentHierarchyRegard addArrangedSubview:self.kellegBtuton]; - - [self.presentHierarchyRegard addArrangedSubview:self.presentassembletionRegard]; - [self.presentHierarchyRegard addArrangedSubview:self.periodGovernancer]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(44 + 108 * 2 + 10 + 10 + 15); - }]; - - [self.segmentHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.bottom.leading.trailing.height.mas_equalTo(self.scrollView); - }]; - - [self.segmentBackgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.height.mas_equalTo(self.scrollView); - }]; - - [self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self).mas_offset(15); - make.right.mas_equalTo(self.impactPresentBtuton.mas_left); - make.top.mas_equalTo(self); - make.height.mas_equalTo(44); - }]; - [self.impactPresentBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-15); - make.centerY.height.mas_equalTo(self.scrollView); - make.width.mas_equalTo(30); - }]; - [self.generalBWSttessSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.impactPresentBtuton.mas_left).mas_offset(-6); - make.centerY.mas_equalTo(self.impactPresentBtuton); - }]; - - [self.presentHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.segmentHierarchyRegard.mas_bottom).offset(10); - make.left.right.mas_equalTo(self); - make.height.mas_equalTo(108 * 2 + 20); - }]; - - - [self.periodGovernancer mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(10); - }]; -} - -- (void)replacementChosenPresent:(NSArray *)array { - for (PresentAbstractMatrix * gift in array) { - gift.isSelected = NO; - } -} - -- (void)produceImpactGeneralBWSttessIdiosyncracy { - __block NSInteger giftTotal = 0; - [self.impactDerivationGarment enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj isKindOfClass:PresentAbstractMatrix.class]) { - PresentAbstractMatrix *gift = (PresentAbstractMatrix *)obj; - giftTotal += gift.count * gift.goldPrice; - } - }]; - NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:@"总价值:" attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:10],NSForegroundColorAttributeName:[DJDKMIMOMColor essayTertiusPrettify]}]; - [str appendAttributedString:[[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@",[self computtowardsionInitialiseTangerineBWStt:giftTotal]] attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12],NSForegroundColorAttributeName:[DJDKMIMOMColor aplictowardsionMainPrettify]}]]; - NSTextAttachment *attachImage = [[NSTextAttachment alloc] init]; - attachImage.image = [UIImage imageNamed:@"yumi_present_diamond"]; - attachImage.bounds = CGRectMake(0, 0, 9, 9); - [str appendAttributedString:[[NSMutableAttributedString alloc] initWithAttributedString:[NSAttributedString attributedStringWithAttachment:attachImage]]]; - self.generalAttribute = str; -} - - -- (NSString *)computtowardsionInitialiseTangerineBWStt:(NSInteger)number { - NSString *numStr = [NSString stringWithFormat:@"%li", number]; - NSInteger num = number; - if (num > 99990000) { - numStr = @"9999W+"; - } else if (num >= 10000) { - CGFloat numF = num / 10000.0; - numStr = [NSString stringWithFormat:@"%.2fW+", numF]; - } - return numStr; -} - -- (void)castleChosenPresent:(PresentAbstractMatrix *)giftInfo { - self.lastChosenPresent = giftInfo; - if (self.segmentType == PresentSegmentGenre_Pack) { - giftInfo.sourceType = PresentSourceGenre_Pack; - } else { - giftInfo.sourceType = PresentSourceGenre_Normal; - } - giftInfo.isSelected = YES; -} - -- (PresentAbstractMatrix *)prohibiticoveryPresentAbstractByPresentId:(NSInteger)giftId { - for (int i=0; i 0) { - [self replacementChosenPresent:self.datasource]; - PresentAbstractMatrix * giftInfo= [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.item]; - [self castleChosenPresent:giftInfo]; - [self.presentassembletionRegard reloadData]; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIPresentAbstractRegard:didClickItem:type:)]) { - [self.delegate yUMIPresentAbstractRegard:self didClickItem:giftInfo type:self.segmentType]; - } - } -} - -#pragma mark - FBCPresentWeekStarAssembletionRegardElementRepresendtation -- (void)yUMIPresentZhouStowardselliteAssembletionRegardElement:(YUMIPresentWeekSatelliteAssembletionRegardElement *)view didSelectGift:(PresentAbstractMatrix *)giftInfo { - [self castleChosenPresent:giftInfo]; -} - -#pragma mark - Getters And Setters -- (void)setRoomType:(ChamberGenre)roomType { - _roomType = roomType; - if (_roomType == ChamberGenre_Anchor) { - self.kellegBtuton.hidden = NO; - } -} - - -- (void)setSegmentType:(PresentSegmentGenre)segmentType { - if (segmentType == _segmentType) { - return; - } - [_datasource removeAllObjects]; - _segmentType = segmentType; - [self replacementChosenPresent:self.presentGarment]; - [self replacementChosenPresent:self.impactDerivationGarment]; - [self replacementChosenPresent:self.presentFortunateGarment]; - [self replacementChosenPresent:self.presentMagnificentGarment]; - [self replacementChosenPresent:self.presentZhouSatelliteGarment]; - [self replacementChosenPresent:self.presentDoodleGarment]; - [self replacementChosenPresent:self.kellegGarment]; - [self replacementChosenPresent:self.punishGarment]; - self.generalBWSttessSequencignation.hidden = YES; - switch (_segmentType) { - case PresentSegmentGenre_Normal: - [self.datasource addObjectsFromArray:self.presentGarment]; - break; - case PresentSegmentGenre_Lucky: - [self.datasource addObjectsFromArray:self.presentFortunateGarment]; - break; - case PresentSegmentGenre_Noble: { - [self.datasource addObjectsFromArray:self.presentMagnificentGarment]; - } - break; - case PresentSegmentGenre_WeekStar: { - [self.datasource addObjectsFromArray:self.presentZhouSatelliteGarment]; - } - break; - case PresentSegmentGenre_Pack: - { - [self.datasource addObjectsFromArray:self.impactDerivationGarment]; - self.generalBWSttessSequencignation.hidden = NO; - self.generalBWSttessSequencignation.attributedText= self.generalAttribute; - } - break; - case PresentSegmentGenre_Graffiti: - [self.datasource addObjectsFromArray:self.presentDoodleGarment]; - break; - case PresentSegmentGenre_Anchor: - [self.datasource addObjectsFromArray:self.kellegGarment]; - break; - case PresentSegmentGenre_Punish: - { - [self.datasource addObjectsFromArray:self.punishGarment]; - [self.freshFigureIndicate removeFromSuperview]; - self.freshFigureIndicate = nil; - [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kSendGiftViewHidePunishNewIcon]; - [[NSUserDefaults standardUserDefaults] synchronize]; - } - break; - default: - [self.datasource addObjectsFromArray:self.presentGarment]; - break; - } - NSInteger currentPage = 0; - if (self.datasource.count > 0) { - if (self.defaultChosenPresentId.length && (self.segmentType == PresentSegmentGenre_Normal | self.segmentType == PresentSegmentGenre_Pack)) { - for (int i = 0 ; i *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - -- (UIScrollView *)scrollView { - if (!_scrollView) { - _scrollView = [[UIScrollView alloc] init]; - _scrollView.backgroundColor = [UIColor clearColor]; - _scrollView.showsHorizontalScrollIndicator = NO; - } - return _scrollView; -} - -- (UIImageView *)segmentBackgroundRegard { - if (!_segmentBackgroundRegard) { - _segmentBackgroundRegard = [[UIImageView alloc] init]; - _segmentBackgroundRegard.userInteractionEnabled = YES; - _segmentBackgroundRegard.contentMode = UIViewContentModeScaleAspectFill; - _segmentBackgroundRegard.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor colorAboutHexBWSttr:@"#E5FFFF"], [DJDKMIMOMColor colorAboutHexBWSttr:@"#FFFFFF"]] gradientType:GradientGenreTopToBottom imgSize:CGSizeMake(375, 44)]; - _segmentBackgroundRegard.hidden = YES; - } - return _segmentBackgroundRegard; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentComputationRegard.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentComputationRegard.h deleted file mode 100644 index 2b1305dd..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentComputationRegard.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMGiftCountView.h -// YUMI -// -// Created by YUMI on 2021/11/11. -// - -#import -#import "YUMIPresentAbstractRegard.h" -NS_ASSUME_NONNULL_BEGIN -@class YUMIPresentComputationRegard,YUMIPresentComputationMatrix; -@protocol FBCPresentCountRegardRepresendtation - -- (void)yUMIPresentComputtowardsionRegard:(YUMIPresentComputationRegard *)view didClickItem:(YUMIPresentComputationMatrix *)model; - -@end - -@interface YUMIPresentComputationRegard : UIView -@property (nonatomic,weak) id delegate; -@property (nonatomic,assign) PresentSegmentGenre segmentType; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentComputationRegard.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentComputationRegard.m deleted file mode 100644 index 9c37eeb9..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentComputationRegard.m +++ /dev/null @@ -1,154 +0,0 @@ -// -// YMGiftCountView.m -// YUMI -// -// Created by YUMI on 2021/11/11. -// - -#import "YUMIPresentComputationRegard.h" -#import -#import "NSArray+Safe.h" -#import "YUMIPresentComputationMatrix.h" -#import "YUMIPresentComputationAssembletionRegardElement.h" -@interface YUMIPresentComputationRegard () -@property (nonatomic,strong) UICollectionView *computationAssembletionRegard; -@property (nonatomic, strong) NSArray *presentComputationGarment; -@property (nonatomic,strong) UIVisualEffectView *impressionRegard; -@end - -@implementation YUMIPresentComputationRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - - self.layer.cornerRadius = 12; - self.layer.masksToBounds = YES; - UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; - UIVisualEffectView *impressionRegard = [[UIVisualEffectView alloc] initWithEffect:blurEffect]; - self.impressionRegard = impressionRegard; - [self addSubview:impressionRegard]; - self.presentComputationGarment = [self ordinaryPresentComputtowardsionTowardsoloudspeakerGarment]; - [self addSubview:self.computationAssembletionRegard]; - -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(0); - }]; - - [self.impressionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.computationAssembletionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; -} - -- (NSArray *)ordinaryPresentComputtowardsionTowardsoloudspeakerGarment { - NSMutableArray * datasource = [NSMutableArray array]; - YUMIPresentComputationMatrix *_otherDic = [YUMIPresentComputationMatrix initComputtowardsionMtowardsrix:YMLocalizedString(@"YUMI_Gift_Count_View_0") giftNumber:@""]; - _otherDic.isCustomCount = YES; - NSArray * array = [self commonPresentComputtowardsionTowardsoloudspeakerGarment]; - [datasource addObjectsFromArray:array]; - [datasource addObject:_otherDic]; - return [datasource copy]; -} - -- (NSArray *)impactPresentComputtowardsionTowardsoloudspeakerGarment { - NSMutableArray * datasource = [NSMutableArray array]; - YUMIPresentComputationMatrix *_allDic = [YUMIPresentComputationMatrix initComputtowardsionMtowardsrix:YMLocalizedString(@"YUMI_Gift_Count_View_1") giftNumber:@"all"]; - _allDic.isTotal = YES; - - YUMIPresentComputationMatrix *_otherDic = [YUMIPresentComputationMatrix initComputtowardsionMtowardsrix:YMLocalizedString(@"YUMI_Gift_Count_View_2") giftNumber:@""]; - _otherDic.isCustomCount = YES; - NSArray * array = [self commonPresentComputtowardsionTowardsoloudspeakerGarment]; - [datasource addObjectsFromArray:array]; - [datasource addObject:_allDic]; - [datasource addObject:_otherDic]; - return [datasource copy]; -} - -- (NSArray *)commonPresentComputtowardsionTowardsoloudspeakerGarment { - YUMIPresentComputationMatrix *_1Dic = [YUMIPresentComputationMatrix initComputtowardsionMtowardsrix:YMLocalizedString(@"YUMI_Gift_Count_View_3") giftNumber:@"1"]; - YUMIPresentComputationMatrix *_10Dic = [YUMIPresentComputationMatrix initComputtowardsionMtowardsrix:YMLocalizedString(@"YUMI_Gift_Count_View_4") giftNumber:@"10"]; - YUMIPresentComputationMatrix *_66Dic = [YUMIPresentComputationMatrix initComputtowardsionMtowardsrix:YMLocalizedString(@"YUMI_Gift_Count_View_5") giftNumber:@"66"]; - YUMIPresentComputationMatrix *_99Dic = [YUMIPresentComputationMatrix initComputtowardsionMtowardsrix:YMLocalizedString(@"YUMI_Gift_Count_View_6") giftNumber:@"99"]; - YUMIPresentComputationMatrix *_188Dic = [YUMIPresentComputationMatrix initComputtowardsionMtowardsrix:YMLocalizedString(@"YUMI_Gift_Count_View_7") giftNumber:@"188"]; - YUMIPresentComputationMatrix *_520Dic = [YUMIPresentComputationMatrix initComputtowardsionMtowardsrix:YMLocalizedString(@"YUMI_Gift_Count_View_8") giftNumber:@"520"]; - YUMIPresentComputationMatrix *_1314Dic = [YUMIPresentComputationMatrix initComputtowardsionMtowardsrix:YMLocalizedString(@"YUMI_Gift_Count_View_9") giftNumber:@"1314"]; - NSArray * array = @[_1Dic, _10Dic, _66Dic, _99Dic,_188Dic,_520Dic, _1314Dic]; - return array; -} - -#pragma mark - UICollectionViewDelegate && UICollectionViewDataSource -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.presentComputationGarment.count; -} - -- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMIPresentComputationAssembletionRegardElement *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIPresentComputationAssembletionRegardElement class]) forIndexPath:indexPath]; - YUMIPresentComputationMatrix *countItem = [self.presentComputationGarment secureGroalTowardsIndictowardsrix1:indexPath.item]; - cell.computationMatrix = countItem; - return cell; -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - [collectionView deselectItemAtIndexPath:indexPath animated:YES]; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIPresentComputtowardsionRegard:didClickItem:)]) { - YUMIPresentComputationMatrix *countItem = [self.presentComputationGarment secureGroalTowardsIndictowardsrix1:indexPath.item]; - [self.delegate yUMIPresentComputtowardsionRegard:self didClickItem:countItem]; - } -} - -- (void)setSegmentType:(PresentSegmentGenre)segmentType { - _segmentType = segmentType; - if (_segmentType == PresentSegmentGenre_Pack) { - self.presentComputationGarment = [self impactPresentComputtowardsionTowardsoloudspeakerGarment]; - } else { - self.presentComputationGarment = [self ordinaryPresentComputtowardsionTowardsoloudspeakerGarment]; - } - - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIPresentComputtowardsionRegard:didClickItem:)]) { - YUMIPresentComputationMatrix *countItem = [self.presentComputationGarment secureGroalTowardsIndictowardsrix1:0]; - [self.delegate yUMIPresentComputtowardsionRegard:self didClickItem:countItem]; - } - - [self mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(28 * self.presentComputationGarment.count + 10); - }]; - - - - [self.computationAssembletionRegard reloadData]; -} - - -#pragma mark - Getters And Setters -- (UICollectionView *)computationAssembletionRegard{ - if (!_computationAssembletionRegard) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.itemSize = CGSizeMake(135, 28); - layout.minimumLineSpacing = 0; - layout.minimumInteritemSpacing = 0; - layout.sectionInset = UIEdgeInsetsMake(3, 0, 3, 0); - _computationAssembletionRegard = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _computationAssembletionRegard.dataSource = self; - _computationAssembletionRegard.delegate = self; - _computationAssembletionRegard.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.1]; - [_computationAssembletionRegard registerClass:[YUMIPresentComputationAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIPresentComputationAssembletionRegardElement class])]; - } - return _computationAssembletionRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentFortunatePresentPingbackRegard.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentFortunatePresentPingbackRegard.h deleted file mode 100644 index 62b59ad0..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentFortunatePresentPingbackRegard.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// YMGiftLuckyGiftBoradCastView.h -// YUMI -// -// Created by YUMI on 2022/10/8. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCPresentLuckyPresentPingbackRegardRepresendtation - -- (void)yUMIPresentInthecaseoftuntowardsePresentBroadcastRegardDisportSequenceTicktack; - -@end - -@interface YUMIPresentFortunatePresentPingbackRegard : UIView - -@property (nonatomic, weak) id delegate; - - -@property (nonatomic,strong) NSArray *records; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentFortunatePresentPingbackRegard.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentFortunatePresentPingbackRegard.m deleted file mode 100644 index bebc05a0..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentFortunatePresentPingbackRegard.m +++ /dev/null @@ -1,209 +0,0 @@ -// -// YMGiftLuckyGiftBoradCastView.m -// YUMI -// -// Created by YUMI on 2022/10/8. -// - -#import "YUMIPresentFortunatePresentPingbackRegard.h" -#import -#import -#import -#import "DJDKMIMOMColor.h" -#import "NSArray+Safe.h" -#import "PresentFortunatePingbackMatrix.h" - - -@interface YUMIPresentFortunatePresentPingbackElement : UICollectionViewCell -@property (nonatomic,strong) YYLabel *titleLabel; -@property (nonatomic,strong) PresentFortunatePingbackMatrix *giftInfo; -@end - -@implementation YUMIPresentFortunatePresentPingbackElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.contentView); - }]; -} - -- (NSMutableAttributedString *)produceEssayIdiosyncracy:(NSString *)text color:(UIColor *)color { - if (text == nil || text.length <= 0) { - text = @""; - } - NSMutableAttributedString *attribute = [[NSMutableAttributedString alloc] initWithString:text attributes:nil]; - attribute.yy_font = [UIFont systemFontOfSize:12]; - attribute.yy_color = color; - return attribute; -} - -#pragma mark - Getters And Setters -- (void)setGiftInfo:(PresentFortunatePingbackMatrix *)giftInfo { - _giftInfo = giftInfo; - if (_giftInfo) { - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:@"恭喜 " color:[UIColor whiteColor]]]; - NSString * nick = _giftInfo.nick; - if (nick.length > 6) { - nick = [nick substringToIndex:6]; - } - [attribute appendAttributedString:[self produceEssayIdiosyncracy:[NSString stringWithFormat:@"%@ " , nick] color:[DJDKMIMOMColor colorAboutHexBWSttr:@"#FFD436"]]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:[NSString stringWithFormat:@"开出%@获得 ", giftInfo.luckyBagName] color:[UIColor whiteColor]]]; - [attribute appendAttributedString:[self produceEssayIdiosyncracy:[NSString stringWithFormat:@"%@ " , _giftInfo.giftName] color:[DJDKMIMOMColor colorAboutHexBWSttr:@"#6FE3FF"]]]; - self.titleLabel.attributedText = attribute; - } -} - - - -- (YYLabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[YYLabel alloc] init]; - } - return _titleLabel; -} - -@end - -@interface YUMIPresentFortunatePresentPingbackRegard() - -@property (nonatomic, strong) UIImageView *backgroundIndicateRegard; -@property (nonatomic, strong) UIImageView *disportIndicateRegard; -@property (nonatomic, strong) UIImageView *figureIndicateRegard; -@property (nonatomic, strong) SDCycleScrollView *cycleTrundleRegard; - -@end - -@implementation YUMIPresentFortunatePresentPingbackRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backgroundIndicateRegard]; - [self addSubview:self.figureIndicateRegard]; - [self addSubview:self.disportIndicateRegard]; - [self addSubview:self.cycleTrundleRegard]; -} - -- (void)initChildLyRestrictions { - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(0); - make.left.right.mas_equalTo(self).inset(10); - make.height.mas_equalTo(37); - }]; - - [self.figureIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.backgroundIndicateRegard); - make.left.mas_equalTo(self.backgroundIndicateRegard).mas_offset(8); - make.width.height.mas_equalTo(20); - }]; - - [self.cycleTrundleRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.figureIndicateRegard.mas_right); - make.right.mas_equalTo(self.disportIndicateRegard.mas_left).offset(-5); - make.top.bottom.mas_equalTo(self.backgroundIndicateRegard); - }]; - - [self.disportIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.right.bottom.mas_equalTo(self.backgroundIndicateRegard); - make.width.mas_equalTo(67); - }]; -} - -#pragma mark - action -- (void)prohibitiportBtutonPerformance:(UITapGestureRecognizer *)tap { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIPresentInthecaseoftuntowardsePresentBroadcastRegardDisportSequenceTicktack)]) { - [self.delegate yUMIPresentInthecaseoftuntowardsePresentBroadcastRegardDisportSequenceTicktack]; - } -} -#pragma mark - SDCycleScrollViewDelegate -- (Class)customCollectionViewCellClassForCycleScrollView:(SDCycleScrollView *)view { - return YUMIPresentFortunatePresentPingbackElement.class; -} - -- (void)setupCustomCell:(UICollectionViewCell *)cell forIndex:(NSInteger)index cycleTrundleRegard:(SDCycleScrollView *)view { - YUMIPresentFortunatePresentPingbackElement *myCell = (YUMIPresentFortunatePresentPingbackElement *)cell; - PresentFortunatePingbackMatrix * info = [self.records secureGroalTowardsIndictowardsrix1:index]; - myCell.giftInfo = info; - -} -#pragma mark - Getters And Setters -- (void)setRecords:(NSArray *)records { - _records = records; - if (_records.count > 0) { - NSMutableArray * array = [NSMutableArray array]; - for (PresentFortunatePingbackMatrix * item in _records) { - [array addObject:item.giftName]; - } - if (array.count > 0) { - self.cycleTrundleRegard.imageURLStringsGroup = array; - [self.cycleTrundleRegard autoScroll]; - } - } -} - -- (UIImageView *)backgroundIndicateRegard { - if (!_backgroundIndicateRegard) { - _backgroundIndicateRegard = [[UIImageView alloc] init]; - _backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_present_lucky_broadcast_background"]; - _backgroundIndicateRegard.contentMode = UIViewContentModeScaleToFill; - } - return _backgroundIndicateRegard; -} - -- (UIImageView *)figureIndicateRegard { - if (!_figureIndicateRegard) { - _figureIndicateRegard = [[UIImageView alloc] init]; - _figureIndicateRegard.image = [UIImage imageNamed:@"yumi_present_lucky_broadcast_pic"]; - } - return _figureIndicateRegard; -} - -- (UIImageView *)disportIndicateRegard { - if (!_disportIndicateRegard) { - _disportIndicateRegard = [[UIImageView alloc] init]; - _disportIndicateRegard.image = [UIImage imageNamed:@"yumi_present_lucky_broadcast_playType"]; - _disportIndicateRegard.contentMode = UIViewContentModeScaleToFill; - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(prohibitiportBtutonPerformance:)]; - _disportIndicateRegard.userInteractionEnabled = YES; - [_disportIndicateRegard addGestureRecognizer:tap]; - } - return _disportIndicateRegard; -} - -- (SDCycleScrollView *)cycleTrundleRegard { - if (!_cycleTrundleRegard) { - _cycleTrundleRegard = [[SDCycleScrollView alloc] init]; - _cycleTrundleRegard.backgroundColor = [UIColor clearColor]; - _cycleTrundleRegard.layer.masksToBounds = YES; - _cycleTrundleRegard.delegate = self; - _cycleTrundleRegard.showPageControl = NO; - _cycleTrundleRegard.autoScrollTimeInterval = 3.0; - [_cycleTrundleRegard disableScrollGesture]; - } - return _cycleTrundleRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentIntelligenceGenreRegard.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentIntelligenceGenreRegard.h deleted file mode 100644 index b3a9fd99..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentIntelligenceGenreRegard.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// YMGiftHeadTypeView.h -// YUMI -// -// Created by YUMI on 2022/9/29. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class YUMIPresentIntelligenceGenreRegard; -@protocol FBCPresentIntelligenceTypeRegardRepresendtation - -- (void)yUMIPresentIntelligenceGenreRegardDidTicktackMagnificent:(YUMIPresentIntelligenceGenreRegard *)view; -- (void)yUMIPresentIntelligenceGenreRegardDidTicktackThresholdReindict:(YUMIPresentIntelligenceGenreRegard *)view; -- (void)yUMIPresentIntelligenceGenreRegardDidTicktackPresent:(YUMIPresentIntelligenceGenreRegard *)view; -- (void)yUMIPresentIntelligenceGenreRegardDidTicktackInterperformance:(YUMIPresentIntelligenceGenreRegard *)view; - -@end - -@interface YUMIPresentIntelligenceGenreRegard : UIView - -@property (nonatomic,assign) BOOL isExhibitThresholdReindict; - -@property (nonatomic, weak) id delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentIntelligenceGenreRegard.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentIntelligenceGenreRegard.m deleted file mode 100644 index 65e6a5ba..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentIntelligenceGenreRegard.m +++ /dev/null @@ -1,253 +0,0 @@ -// -// YMGiftHeadTypeView.m -// YUMI -// -// Created by YUMI on 2022/9/29. -// - -#import "YUMIPresentIntelligenceGenreRegard.h" -#import -#import -#import "DJDKMIMOMColor.h" -#import "NSArray+Safe.h" - -static NSString *kHideGiftViewInteractDot = @"kHideGiftViewInteractDot"; - -@interface YUMIPresentIntelligenceGenreRegard() - -@property (nonatomic, strong) UIButton *presentBtuton; -@property (nonatomic, strong) UIView *devideRegard; -@property (nonatomic, strong) UIView *extremeDevideRegard; -@property (nonatomic, strong) UIImageView *arrowIndicateRegard; -@property (nonatomic, strong) UIButton *interactBtuton; -@property (nonatomic, strong) UIView *deficitPointRegard; -@property (nonatomic,strong) SDCycleScrollView *cycleTrundleRegard; - -@property (nonatomic, strong) NSMutableArray *titleArray; - -@end - -@implementation YUMIPresentIntelligenceGenreRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.presentBtuton]; - [self addSubview:self.devideRegard]; - [self addSubview:self.interactBtuton]; - [self addSubview:self.deficitPointRegard]; - [self addSubview:self.arrowIndicateRegard]; - [self addSubview:self.cycleTrundleRegard]; - [self addSubview:self.extremeDevideRegard]; - self.deficitPointRegard.hidden = [[NSUserDefaults standardUserDefaults] boolForKey:kHideGiftViewInteractDot]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(44); - }]; - - [self.presentBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(16); - make.centerY.mas_equalTo(self); - make.width.mas_equalTo(40); - }]; - [self.arrowIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.extremeDevideRegard.mas_top); - make.centerX.mas_equalTo(self.presentBtuton); - make.size.mas_equalTo(CGSizeMake(9, 7)); - }]; - [self.interactBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self); - make.left.mas_equalTo(self.devideRegard.mas_right).mas_offset(8); - make.width.mas_equalTo(40); - }]; - [self.deficitPointRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.interactBtuton.mas_right).mas_offset(-7); - make.bottom.mas_equalTo(self.interactBtuton.mas_top).mas_offset(9); - make.width.height.mas_equalTo(8); - }]; - - [self.devideRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self); - make.left.mas_equalTo(self.presentBtuton.mas_right).mas_offset(8); - make.width.mas_equalTo(1); - make.height.mas_equalTo(10); - }]; - - [self.extremeDevideRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self); - make.left.right.mas_equalTo(0); - make.height.mas_equalTo(1); - }]; - - [self.cycleTrundleRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-16); - make.centerY.mas_equalTo(self); - make.width.mas_equalTo(70); - make.height.mas_equalTo(30); - }]; -} - -#pragma mark - SDCycleScrollViewDelegate -- (void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didSelectItemAtIndex:(NSInteger)index { - if (self.titleArray.count > index) { - NSString *str = [self.titleArray secureGroalTowardsIndictowardsrix1:index]; - if([str isEqualToString:YMLocalizedString(@"YUMI_Gift_Head_Type_View_0")]) { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIPresentIntelligenceGenreRegardDidTicktackThresholdReindict:)]) { - [self.delegate yUMIPresentIntelligenceGenreRegardDidTicktackThresholdReindict:self]; - } - } else { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIPresentIntelligenceGenreRegardDidTicktackMagnificent:)]) { - [self.delegate yUMIPresentIntelligenceGenreRegardDidTicktackMagnificent:self]; - } - } - } -} - -#pragma mark - Response -- (void)presentBtutonPerformance:(UIButton *)sender { - if (!sender.isSelected) { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIPresentIntelligenceGenreRegardDidTicktackPresent:)]) { - [self.delegate yUMIPresentIntelligenceGenreRegardDidTicktackPresent:self]; - } - } - sender.selected = YES; - self.interactBtuton.selected = NO; - sender.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; - self.interactBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - [self.arrowIndicateRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.extremeDevideRegard.mas_top); - make.centerX.mas_equalTo(self.presentBtuton); - make.size.mas_equalTo(CGSizeMake(9, 7)); - }]; -} - -- (void)interactBtutonPerformance:(UIButton *)sender { - if (!sender.isSelected) { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIPresentIntelligenceGenreRegardDidTicktackInterperformance:)]) { - [self.delegate yUMIPresentIntelligenceGenreRegardDidTicktackInterperformance:self]; - } - } - sender.selected = YES; - self.presentBtuton.selected = NO; - if(![[NSUserDefaults standardUserDefaults] boolForKey:kHideGiftViewInteractDot]) { - self.deficitPointRegard.hidden = YES; - [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kHideGiftViewInteractDot]; - [[NSUserDefaults standardUserDefaults] synchronize]; - } - sender.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; - self.presentBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - - [self.arrowIndicateRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.extremeDevideRegard.mas_top); - make.centerX.mas_equalTo(self.interactBtuton); - make.size.mas_equalTo(CGSizeMake(9, 7)); - }]; -} - -#pragma mark - setter -- (void)setIsExhibitThresholdReindict:(BOOL)isExhibitThresholdReindict { - if (isExhibitThresholdReindict) { - self.titleArray = [NSMutableArray arrayWithObjects:YMLocalizedString(@"YUMI_Gift_Head_Type_View_1"), nil]; - self.cycleTrundleRegard.imageURLStringsGroup = @[@"gift_first_recharge_bg"]; - } else { - - } -} - -#pragma mark - getter -- (UIButton *)presentBtuton { - if (!_presentBtuton) { - UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; - button.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; - [button addTarget:self action:@selector(presentBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [button setTitle:YMLocalizedString(@"YUMI_Gift_Head_Type_View_2") forState:UIControlStateNormal]; - [button setTitleColor:[DJDKMIMOMColor instantEssayPrettify] forState:UIControlStateNormal]; - [button setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; - button.selected = YES; - _presentBtuton = button; - } - return _presentBtuton; -} - -- (UIButton *)interactBtuton { - if (!_interactBtuton) { - UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; - button.titleLabel.font = [UIFont systemFontOfSize:14]; - [button addTarget:self action:@selector(interactBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [button setTitle:YMLocalizedString(@"YUMI_Gift_Head_Type_View_3") forState:UIControlStateNormal]; - [button setTitleColor:[DJDKMIMOMColor instantEssayPrettify] forState:UIControlStateNormal]; - [button setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; - _interactBtuton = button; - } - return _interactBtuton; -} - -- (UIView *)deficitPointRegard { - if (!_deficitPointRegard) { - _deficitPointRegard = [[UIView alloc] init]; - _deficitPointRegard.backgroundColor = UIColorFromRGB(0xFB486A); - _deficitPointRegard.layer.cornerRadius = 4; - _deficitPointRegard.layer.masksToBounds = YES; - _deficitPointRegard.layer.borderWidth = 1; - _deficitPointRegard.layer.borderColor = [UIColor whiteColor].CGColor; - } - return _deficitPointRegard; -} - -- (UIView *)devideRegard { - if (!_devideRegard) { - _devideRegard = [[UIView alloc] init]; - _devideRegard.backgroundColor = UIColorRGBAlpha(0xffffff, 0.1); - } - return _devideRegard; -} - -- (UIView *)extremeDevideRegard { - if (!_extremeDevideRegard) { - _extremeDevideRegard = [[UIView alloc] init]; - _extremeDevideRegard.backgroundColor = UIColorRGBAlpha(0xffffff, 0.1); - } - return _extremeDevideRegard; -} - -- (SDCycleScrollView *)cycleTrundleRegard { - if (!_cycleTrundleRegard) { - _cycleTrundleRegard = [SDCycleScrollView cycleScrollViewWithFrame:CGRectZero delegate:self placeholderImage:nil]; - _cycleTrundleRegard.pageControlAliment = SDCycleScrollViewPageContolAlimentCenter; - _cycleTrundleRegard.showPageControl = NO; - _cycleTrundleRegard.backgroundColor = [UIColor colorWithWhite:1 alpha:0.00]; - _cycleTrundleRegard.bannerImageViewContentMode = UIViewContentModeScaleAspectFit; - _cycleTrundleRegard.pageControlBottomOffset = -10; - _cycleTrundleRegard.autoScrollTimeInterval = 5; - } - return _cycleTrundleRegard; -} - -- (NSMutableArray *)titleArray { - if (!_titleArray) { - _titleArray = [NSMutableArray array]; - } - return _titleArray; -} - -- (UIImageView *)arrowIndicateRegard { - if (!_arrowIndicateRegard) { - UIImageView *imageView = [[UIImageView alloc] init]; - imageView.image = [UIImage imageNamed:@"yumi_scope_present_panel_arrow"]; - - _arrowIndicateRegard = imageView; - } - return _arrowIndicateRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentObstacleRegard.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentObstacleRegard.h deleted file mode 100644 index 11b09b82..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentObstacleRegard.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// YMGiftBottomView.h -// YUMI -// -// Created by YUMI on 2021/11/9. -// - -#import -#import "YUMIPresentAbstractRegard.h" -NS_ASSUME_NONNULL_BEGIN -@class YUMIPresentObstacleRegard, YUMIPresentComputationMatrix, RamparatetAbstractMatrix; -@protocol FBCPresentObstacleRegardRepresendtation -- (void)yUMIPresentObstacleRegardDidTicktackReindict:(YUMIPresentObstacleRegard *)view;; -- (void)yUMIPresentObstacleRegard:(YUMIPresentObstacleRegard *)view didClickSendGift:(YUMIPresentComputationMatrix *)presentComputation; -- (void)yUMIPresentObstacleRegardDidTicktackThresholdReindict:(YUMIPresentObstacleRegard *)view;; -@end - -@interface YUMIPresentObstacleRegard : UIView -@property (nonatomic,assign) DischargePresentGenre usingdeparatmentGenre; -@property (nonatomic,assign) NSInteger drawPresentComputation; -@property (nonatomic,weak) id delegate; -@property (nonatomic,assign) PresentSegmentGenre type; - -@property (nonatomic,strong) YUMIPresentComputationMatrix *presentComputationMatrix; -@property (nonatomic,strong) RamparatetAbstractMatrix *wentiretyetAbstractMatrix; -@property (nonatomic,assign) BOOL isExhibitThresholdReindict; -@property (nonatomic,assign) BOOL dischargeBtutonIsCapacitate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentObstacleRegard.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentObstacleRegard.m deleted file mode 100644 index 27373d1a..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentObstacleRegard.m +++ /dev/null @@ -1,483 +0,0 @@ -// -// YMGiftBottomView.m -// YUMI -// -// Created by YUMI on 2021/11/9. -// - -#import "YUMIPresentObstacleRegard.h" -#import -#import "YUMIMacroUitls.h" -#import "ThemeColor+SendGift.h" -#import "UIImage+Utils.h" -#import "YUMIPresentComputationMatrix.h" -#import "RamparatetAbstractMatrix.h" -#import "YUMIPresentComputationAssembletionRegardElement.h" -#import "YUMIPresentComputationRegard.h" -@interface YUMIPresentObstacleRegard () - -@property (nonatomic,strong) UILabel *balanceSequencignation; -@property (nonatomic,strong) UIStackView *reindictHierarchyRegard; -@property (nonatomic,strong) UILabel *reindictSequencignation; -@property (nonatomic,strong) UIImageView *rechageIndicateRegard; -@property (nonatomic,strong) UIStackView *dischargeOperationRegard; -@property (nonatomic,strong) UILabel *computationSequencignation; -@property (nonatomic,strong) UIButton *arrowBtuton; -@property (nonatomic,strong) UIButton *dischargePresentBtuton; -@property (nonatomic,strong) UIButton *thresholdReindictBtuton; -@property (nonatomic,strong) UIView *customComputationRegard; -@property (nonatomic, strong) UITextField *compileEssayAccurated; -@property (nonatomic, strong) UIButton *sureBtuton; -@property (nonatomic,strong) YUMIPresentComputationRegard *presentComputationRegard; - -@end - -@implementation YUMIPresentObstacleRegard - -- (void)dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - [self accelertowardseCircularConcentrtowardse]; - [self initOccurrences]; - } - return self; -} -#pragma mark - Response -- (void)prohibitichargeBtutonPerformance:(UIButton *)sender { - if (self.type == PresentSegmentGenre_Graffiti && self.drawPresentComputation < 10) { - return; - } - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIPresentObstacleRegard:didClickSendGift:)]) { - [self.delegate yUMIPresentObstacleRegard:self didClickSendGift:self.presentComputationMatrix]; - } -} - -- (void)didCoupleReindict:(UITapGestureRecognizer *)tap { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIPresentObstacleRegardDidTicktackReindict:)]) { - [self.delegate yUMIPresentObstacleRegardDidTicktackReindict:self]; - } -} - -- (void)arrowBtutonPerformance:(UIButton *)sender { - if (![[self.superview.superview subviews] containsObject:self.presentComputationRegard]) { - [self.superview.superview addSubview:self.presentComputationRegard]; - - [self.presentComputationRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-15); - make.bottom.mas_equalTo(self.superview.superview.mas_bottom).offset(-45 -kSafeAreaBottomHeight); - make.width.mas_equalTo(135); - }]; - } - [self refurbishComputtowardsionPosition]; -} - -- (void)sureBtutonPerformance:(UIButton *)sender { - NSString *countStr = [self.compileEssayAccurated.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; - if (countStr.integerValue == 0) { - countStr = @"1"; - } - [self.compileEssayAccurated resignFirstResponder]; - self.compileEssayAccurated.text = @""; - self.presentComputationMatrix.giftNumber = countStr; - self.computationSequencignation.text = countStr; -} - -- (void)thresholdReindictBtutonPerformance:(UIButton *)sender{ - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIPresentObstacleRegardDidTicktackThresholdReindict:)]) { - [self.delegate yUMIPresentObstacleRegardDidTicktackThresholdReindict:self]; - } -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor= [UIColor clearColor]; - [self addSubview:self.balanceSequencignation]; - [self addSubview:self.reindictHierarchyRegard]; - [self addSubview:self.thresholdReindictBtuton]; - [self addSubview:self.dischargeOperationRegard]; - - [self.reindictHierarchyRegard addArrangedSubview:self.reindictSequencignation]; - [self.reindictHierarchyRegard addArrangedSubview:self.rechageIndicateRegard]; - - [self.dischargeOperationRegard addArrangedSubview:self.computationSequencignation]; - [self.dischargeOperationRegard addArrangedSubview:self.arrowBtuton]; - [self.dischargeOperationRegard addArrangedSubview:self.dischargePresentBtuton]; - - [self.customComputationRegard addSubview:self.compileEssayAccurated]; - [self.customComputationRegard addSubview:self.sureBtuton]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(45); - }]; - - - [self.balanceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(15); - make.centerY.mas_equalTo(self.dischargeOperationRegard); - }]; - - [self.reindictHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.dischargeOperationRegard); - make.left.mas_equalTo(self.balanceSequencignation.mas_right).offset(12); - }]; - - [self.thresholdReindictBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(50, 14)); - make.left.mas_equalTo(self.reindictHierarchyRegard.mas_right).offset(4); - make.centerY.mas_equalTo(self.reindictHierarchyRegard); - }]; - - [self.dischargeOperationRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self).offset(-15); - make.bottom.mas_equalTo(-11); - make.height.mas_equalTo(30); - }]; - - [self.computationSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(40); - make.height.mas_equalTo(30); - }]; - - - [self.arrowBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(30, 30)); - }]; - - [self.dischargePresentBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(67, 30)); - }]; - - - [self.compileEssayAccurated mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.customComputationRegard).offset(15); - make.right.mas_equalTo(self.sureBtuton.mas_left).offset(-10); - make.top.bottom.mas_equalTo(self.customComputationRegard); - }]; - - [self.sureBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(30); - make.width.mas_equalTo(@50); - make.centerY.mas_equalTo(self.customComputationRegard); - make.right.mas_equalTo(self.customComputationRegard).offset(-15); - }]; -} - -- (void)initOccurrences { - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didCoupleReindict:)]; - [self.reindictHierarchyRegard addGestureRecognizer:tap]; -} - -- (void)keyboardWillShow:(NSNotification *)notification { - CGRect keyboardRect = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; - CGFloat height = CGRectGetMinY(keyboardRect) - KScreenHeight; - if (height < 0) { - [UIView animateWithDuration:0.25 animations:^{ - CGRect rect = self.customComputationRegard.superview.superview.superview.frame; - rect.origin.y = height; - self.customComputationRegard.superview.superview.superview.frame = rect; - }]; - } -} - -- (void)digitentiretyibraImmeditowardselyVeiled:(NSNotification *)notification { - [UIView animateWithDuration:0.25 animations:^{ - CGRect rect = self.customComputationRegard.superview.superview.superview.frame; - rect.origin.y = 0; - self.customComputationRegard.superview.superview.superview.frame = rect; - }]; - self.customComputationRegard.hidden = YES; - self.compileEssayAccurated.text = @""; -} - -- (void)accelertowardseCircularConcentrtowardse { - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(digitentiretyibraImmeditowardselyVeiled:) name:UIKeyboardWillHideNotification object:nil]; -} - -- (void)refurbishComputtowardsionPosition { - self.arrowBtuton.selected = !self.arrowBtuton.selected; - self.presentComputationRegard.hidden = !self.arrowBtuton.selected; -} - -#pragma mark - FBCPresentCountRegardRepresendtation -- (void)yUMIPresentComputtowardsionRegard:(YUMIPresentComputationRegard *)view didClickItem:(YUMIPresentComputationMatrix *)model { - self.arrowBtuton.selected = NO; - self.presentComputationRegard.hidden= YES; - self.presentComputationMatrix = model; - if (model.isCustomCount) { - if (![[self.superview.superview subviews] containsObject:self.customComputationRegard]) { - [self.superview.superview addSubview:self.customComputationRegard]; - - [self.customComputationRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.superview.superview); - make.height.mas_equalTo(40); - }]; - } - self.customComputationRegard.hidden = NO; - [self.compileEssayAccurated becomeFirstResponder]; - } -} - -#pragma mark - UITextFieldDelegate -- (BOOL)textFieldShouldReturn:(UITextField *)essayUniverse { - NSString *countStr = [self.compileEssayAccurated.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; - NSInteger count = [countStr integerValue]; - if (count > 9999) { - return NO; - } - [self.compileEssayAccurated resignFirstResponder]; - self.compileEssayAccurated.text = @""; - self.presentComputationMatrix.giftNumber = essayUniverse.text; - return YES; -} - -- (BOOL)essayUniverse:(UITextField *)essayUniverse shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { - NSString *regex =@"[0-9]*"; - NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex]; - if ([pred evaluateWithObject:string]) { - return YES; - } - return NO; -} -#pragma mark - Getters And Setters -- (void)setUsingdeparatmentGenre:(DischargePresentGenre)usingdeparatmentGenre { - _usingdeparatmentGenre = usingdeparatmentGenre; - if (_usingdeparatmentGenre == DischargePresentGenre_User) { - self.computationSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - [self.arrowBtuton setImage:[UIImage imageNamed:@"yumi_present_let_white_count_arrow"] forState:UIControlStateNormal]; - [self.arrowBtuton setImage:[UIImage imageNamed:@"yumi_present_let_white_count_up_arrow"] forState:UIControlStateSelected]; - } else { - self.computationSequencignation.textColor = [DJDKMIMOMColor presentComputtowardsionChampionPrettify]; - [self.arrowBtuton setImage:[UIImage imageNamed:@"yumi_present_let_count_arrow"] forState:UIControlStateNormal]; - [self.arrowBtuton setImage:[UIImage imageNamed:@"yumi_present_let_count_up_arrow"] forState:UIControlStateSelected]; - } -} - -- (void)setDrawPresentComputation:(NSInteger)drawPresentComputation { - _drawPresentComputation = drawPresentComputation; - if (_drawPresentComputation >= 10) { - self.dischargePresentBtuton.selected = NO; - self.dischargeOperationRegard.layer.borderWidth = 1; - } else { - self.dischargePresentBtuton.selected = YES; - self.dischargeOperationRegard.layer.borderWidth = 0; - } -} - -- (void)setDischargeBtutonIsCapacitate:(BOOL)dischargeBtutonIsCapacitate { - _dischargeBtutonIsCapacitate = dischargeBtutonIsCapacitate; - [UIView animateWithDuration:0.3 animations:^{ - self.dischargePresentBtuton.enabled = self.dischargeBtutonIsCapacitate; - }]; -} - -- (void)setIsExhibitThresholdReindict:(BOOL)isExhibitThresholdReindict { - self.thresholdReindictBtuton.hidden = !isExhibitThresholdReindict; -} - -- (void)setType:(PresentSegmentGenre)type { - _type = type; - if (!self.presentComputationRegard.hidden) { - self.presentComputationRegard.hidden = YES; - self.arrowBtuton.selected = NO; - } else { - if (_type == PresentSegmentGenre_Graffiti) { - self.computationSequencignation.hidden = YES; - self.arrowBtuton.hidden = YES; - } else { - self.computationSequencignation.hidden = NO; - self.arrowBtuton.hidden = NO; - } - } - self.presentComputationRegard.segmentType = type; -} - -- (void)setPresentComputationMatrix:(YUMIPresentComputationMatrix *)presentComputationMatrix { - _presentComputationMatrix = presentComputationMatrix; - self.arrowBtuton.selected = NO; - if (_presentComputationMatrix) { - self.computationSequencignation.text = _presentComputationMatrix.giftNumber; - } -} - -- (void)setWentiretyetAbstractMatrix:(RamparatetAbstractMatrix *)wentiretyetAbstractMatrix { - _wentiretyetAbstractMatrix = wentiretyetAbstractMatrix; - if (_wentiretyetAbstractMatrix) { - NSString * diamonds = _wentiretyetAbstractMatrix.diamonds; - UIColor * normaleColor = [DJDKMIMOMColor presentBalancePrettify]; - UIColor * highlightPrettify =[DJDKMIMOMColor presentComputtowardsionChampionPrettify]; - if (_usingdeparatmentGenre == DischargePresentGenre_User) { - normaleColor = [DJDKMIMOMColor essayTertiusPrettify]; - highlightPrettify = [DJDKMIMOMColor presentConstituteChosenPrettify]; - } - NSString * title = [NSString stringWithFormat:@"余额:%@", diamonds]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:normaleColor}]; - [attribute addAttribute:NSForegroundColorAttributeName value:highlightPrettify range:[title rangeOfString:diamonds]]; - self.balanceSequencignation.attributedText = attribute; - } -} - -- (UILabel *)balanceSequencignation { - if (!_balanceSequencignation) { - _balanceSequencignation = [[UILabel alloc] init]; - _balanceSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _balanceSequencignation.font = [UIFont systemFontOfSize:13]; - } - return _balanceSequencignation; -} - -- (UIStackView *)reindictHierarchyRegard { - if (!_reindictHierarchyRegard) { - _reindictHierarchyRegard = [[UIStackView alloc] init]; - _reindictHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _reindictHierarchyRegard.distribution = UIStackViewDistributionFill; - _reindictHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _reindictHierarchyRegard.spacing = 1; - } - return _reindictHierarchyRegard; -} - -- (UILabel *)reindictSequencignation { - if (!_reindictSequencignation) { - _reindictSequencignation = [[UILabel alloc] init]; - _reindictSequencignation.text = YMLocalizedString(@"YUMI_Gift_Bar_View_1"); - _reindictSequencignation.font = [UIFont systemFontOfSize:12]; - _reindictSequencignation.textColor = [DJDKMIMOMColor presentReindictPrettify]; - } - return _reindictSequencignation; -} - -- (UIImageView *)rechageIndicateRegard { - if (!_rechageIndicateRegard) { - _rechageIndicateRegard = [[UIImageView alloc] init]; - _rechageIndicateRegard.userInteractionEnabled = YES; - _rechageIndicateRegard.image = [UIImage imageNamed:@"yumi_present_let_recharge_arrow"]; - } - return _rechageIndicateRegard; -} - - -- (UIStackView *)dischargeOperationRegard { - if (!_dischargeOperationRegard) { - _dischargeOperationRegard = [[UIStackView alloc] init]; - _dischargeOperationRegard.axis = UILayoutConstraintAxisHorizontal; - _dischargeOperationRegard.distribution = UIStackViewDistributionFill; - _dischargeOperationRegard.alignment = UIStackViewAlignmentCenter; - _dischargeOperationRegard.spacing = 0; - _dischargeOperationRegard.layer.masksToBounds = YES; - _dischargeOperationRegard.layer.cornerRadius = 15; - _dischargeOperationRegard.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - _dischargeOperationRegard.layer.borderWidth = 1; - } - return _dischargeOperationRegard; -} - - -- (UILabel *)computationSequencignation { - if (!_computationSequencignation) { - _computationSequencignation = [[UILabel alloc] init]; - _computationSequencignation.textAlignment = NSTextAlignmentCenter; - _computationSequencignation.textColor = [DJDKMIMOMColor presentComputtowardsionChampionPrettify]; - _computationSequencignation.text = @"1"; - _computationSequencignation.font = [UIFont systemFontOfSize:13]; - _computationSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _computationSequencignation; -} - -- (UIButton *)arrowBtuton { - if (!_arrowBtuton) { - _arrowBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_arrowBtuton setImage:[UIImage imageNamed:@"yumi_present_let_count_arrow"] forState:UIControlStateNormal]; - [_arrowBtuton setImage:[UIImage imageNamed:@"yumi_present_let_count_up_arrow"] forState:UIControlStateSelected]; - [_arrowBtuton addTarget:self action:@selector(arrowBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _arrowBtuton; -} - -- (UIButton *)dischargePresentBtuton { - if (!_dischargePresentBtuton) { - _dischargePresentBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_dischargePresentBtuton setTitle:YMLocalizedString(@"YUMI_Gift_Bar_View_2") forState:UIControlStateNormal]; - [_dischargePresentBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateNormal]; - [_dischargePresentBtuton setTitle:@"赠送中..." forState:UIControlStateDisabled]; - [_dischargePresentBtuton setTitleColor:[DJDKMIMOMColor prohibitionBtutonEssayPrettify] forState:UIControlStateDisabled]; - [_dischargePresentBtuton setTitle:YMLocalizedString(@"YUMI_Gift_Bar_View_4") forState:UIControlStateSelected]; - [_dischargePresentBtuton setTitleColor:[DJDKMIMOMColor prohibitionBtutonEssayPrettify] forState:UIControlStateSelected]; - [_dischargePresentBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_dischargePresentBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor prohibitionBtutonPrettify], [DJDKMIMOMColor prohibitionBtutonPrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; - [_dischargePresentBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor prohibitionBtutonPrettify], [DJDKMIMOMColor prohibitionBtutonPrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateSelected]; - _dischargePresentBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - _dischargePresentBtuton.layer.masksToBounds = YES; - _dischargePresentBtuton.layer.cornerRadius = 15; - [_dischargePresentBtuton addTarget:self action:@selector(prohibitichargeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _dischargePresentBtuton; -} - - -- (UITextField *)compileEssayAccurated { - if (!_compileEssayAccurated) { - _compileEssayAccurated = [[UITextField alloc] init]; - NSAttributedString * attribute = [[NSAttributedString alloc] initWithString:YMLocalizedString(@"YUMI_Gift_Bar_View_5") attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:17], NSForegroundColorAttributeName:[DJDKMIMOMColor instantEssayPrettify]}]; - _compileEssayAccurated.attributedPlaceholder = attribute; - _compileEssayAccurated.borderStyle = UITextBorderStyleNone; - _compileEssayAccurated.returnKeyType = UIReturnKeyDone; - _compileEssayAccurated.delegate = self; - _compileEssayAccurated.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _compileEssayAccurated.keyboardType = UIKeyboardTypeNumberPad; - } - return _compileEssayAccurated; -} - -- (UIButton *)sureBtuton { - if (!_sureBtuton) { - _sureBtuton = [[UIButton alloc] init]; - [_sureBtuton setTitle:YMLocalizedString(@"YUMI_Gift_Bar_View_6") forState:UIControlStateNormal]; - _sureBtuton.titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _sureBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - _sureBtuton.backgroundColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - _sureBtuton.layer.cornerRadius = 5.0; - _sureBtuton.layer.masksToBounds = YES; - [_sureBtuton addTarget:self action:@selector(sureBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _sureBtuton; -} - - -- (UIView *)customComputationRegard { - if (!_customComputationRegard) { - _customComputationRegard = [[UIView alloc] init]; - _customComputationRegard.backgroundColor = [UIColor whiteColor]; - } - return _customComputationRegard; -} - -- (YUMIPresentComputationRegard *)presentComputationRegard { - if (!_presentComputationRegard) { - _presentComputationRegard = [[YUMIPresentComputationRegard alloc] init]; - _presentComputationRegard.delegate = self; - _presentComputationRegard.hidden = YES; - } - return _presentComputationRegard; -} - -- (UIButton *)thresholdReindictBtuton { - if (!_thresholdReindictBtuton) { - _thresholdReindictBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_thresholdReindictBtuton setImage:[UIImage imageNamed:@"yumi_present_first_recharge_background"] forState:UIControlStateNormal]; - [_thresholdReindictBtuton setImage:[UIImage imageNamed:@"yumi_present_first_recharge_background"] forState:UIControlStateSelected]; - [_thresholdReindictBtuton addTarget:self action:@selector(thresholdReindictBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _thresholdReindictBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentTwelveSatellitePingbackRegard.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentTwelveSatellitePingbackRegard.h deleted file mode 100644 index a3b23d37..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentTwelveSatellitePingbackRegard.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YMGiftTwelveStarBroadcastView.h -// YUMI -// -// Created by YUMI on 2022/12/7. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class PresentTwelveSatelliteThresholdMatrix, YUMIPresentTwelveSatellitePingbackRegard; - -@protocol FBCPresentTwelveStarPingbackRegardRepresendtation - -- (void)yUMIPresentDuodenaryStowardselliteBroadcastRegard:(YUMIPresentTwelveSatellitePingbackRegard *)view didClickDetail:(UIButton *)sender; -@end - -@interface YUMIPresentTwelveSatellitePingbackRegard : UIView - -@property (nonatomic, strong) PresentTwelveSatelliteThresholdMatrix *giftInfo; - -@property (nonatomic,weak) id delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentTwelveSatellitePingbackRegard.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentTwelveSatellitePingbackRegard.m deleted file mode 100644 index 4711591a..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentTwelveSatellitePingbackRegard.m +++ /dev/null @@ -1,239 +0,0 @@ -// -// YMGiftTwelveStarBroadcastView.m -// YUMI -// -// Created by YUMI on 2022/12/7. -// - -#import "YUMIPresentTwelveSatellitePingbackRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "MKJPopup.h" -#import "XCCurrentVCStackExecutive.h" -#import "YUMITissueRegardGovernancer.h" -#import "YUMIHtmlUrl.h" -#import "NetIndicateRegard.h" -#import "PresentTwelveSatelliteThresholdMatrix.h" - -@interface YUMIPresentTwelveSatellitePingbackRegard() - -@property (nonatomic, strong) UIView *mainView; -@property (nonatomic, strong) UIImageView *backgroundIndicateRegard; -@property (nonatomic, strong) UIButton *zhouSatelliteBtuton; -@property (nonatomic, strong) NetIndicateRegard *figureIndicateRegard; -@property (nonatomic, strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic, strong) UILabel *fascinationSequencignation; -@property (nonatomic, strong) UILabel *efficacySequencignation; - -@property (nonatomic, strong) UIImageView *seaxualityIndicateRegard; - -@property (nonatomic, strong) UILabel *sequencSequencignation; - -@end - -@implementation YUMIPresentTwelveSatellitePingbackRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backgroundIndicateRegard]; - [self addSubview:self.mainView]; - [self.mainView addSubview:self.zhouSatelliteBtuton]; - [self.mainView addSubview:self.figureIndicateRegard]; - [self.mainView addSubview:self.intelligenceportraitIndicateRegard]; - [self.mainView addSubview:self.fascinationSequencignation]; - [self.mainView addSubview:self.seaxualityIndicateRegard]; - [self.mainView addSubview:self.efficacySequencignation]; - [self.mainView addSubview:self.sequencSequencignation]; - - self.figureIndicateRegard.hidden = YES; - self.intelligenceportraitIndicateRegard.hidden = YES; - self.fascinationSequencignation.hidden = YES; - self.efficacySequencignation.hidden = YES; - self.seaxualityIndicateRegard.hidden = YES; -} - -- (void)initChildLyRestrictions { - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.width.mas_equalTo(355); - make.top.bottom.mas_equalTo(self); - }]; - [self.mainView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backgroundIndicateRegard); - make.height.mas_equalTo(36); - make.bottom.mas_equalTo(0); - }]; - [self.figureIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.mainView).mas_offset(33); - make.width.height.mas_equalTo(30); - make.centerY.mas_equalTo(self.mainView); - }]; - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.figureIndicateRegard.mas_right).mas_offset(8); - make.width.height.mas_equalTo(24); - make.centerY.mas_equalTo(self.mainView); - }]; - [self.fascinationSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(14); - make.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_centerY); - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).mas_offset(8); - }]; - - [self.efficacySequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(14); - make.top.mas_equalTo(self.fascinationSequencignation.mas_bottom); - make.left.mas_equalTo(self.fascinationSequencignation); - }]; - [self.seaxualityIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(10); - make.left.mas_equalTo(self.efficacySequencignation.mas_right).mas_offset(2); - make.centerY.mas_equalTo(self.efficacySequencignation); - }]; - [self.zhouSatelliteBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(18); - make.centerY.mas_equalTo(self.mainView); - make.right.mas_equalTo(self.mainView).mas_offset(-25); - make.width.mas_equalTo(64); - }]; - [self.sequencSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.mainView); - make.left.mas_equalTo(self.mainView).mas_offset(54); - }]; -} - -#pragma mark - action -- (void)prohibitiportBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIPresentDuodenaryStowardselliteBroadcastRegard:didClickDetail:)]) { - [self.delegate yUMIPresentDuodenaryStowardselliteBroadcastRegard:self didClickDetail:sender]; - } -} - -- (void)setGiftInfo:(PresentTwelveSatelliteThresholdMatrix *)giftInfo { - if (giftInfo.nick) { - self.figureIndicateRegard.imageUrl = giftInfo.markUrl; - self.intelligenceportraitIndicateRegard.imageUrl = giftInfo.avatar; - self.fascinationSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Gift_Twelve_Star_Broadcast_View_0"), giftInfo.twelveStarName]; - self.efficacySequencignation.text = giftInfo.nick; - NSString *imageName = giftInfo.gender == 1 ? @"common_sex_male" : @"common_sex_female"; - self.seaxualityIndicateRegard.image = [UIImage imageNamed:imageName]; - self.figureIndicateRegard.hidden = NO; - self.intelligenceportraitIndicateRegard.hidden = NO; - self.fascinationSequencignation.hidden = NO; - self.efficacySequencignation.hidden = NO; - self.seaxualityIndicateRegard.hidden = NO; - self.sequencSequencignation.hidden = YES; - } else { - self.figureIndicateRegard.hidden = YES; - self.intelligenceportraitIndicateRegard.hidden = YES; - self.fascinationSequencignation.hidden = YES; - self.efficacySequencignation.hidden = YES; - self.seaxualityIndicateRegard.hidden = YES; - self.sequencSequencignation.hidden = NO; - } -} - -- (UIView *)mainView { - if (!_mainView) { - _mainView = [[UIView alloc] init]; - } - return _mainView; -} - -- (UIImageView *)backgroundIndicateRegard { - if (!_backgroundIndicateRegard) { - _backgroundIndicateRegard = [[UIImageView alloc] init]; - _backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_present_constellationBanner_background"]; - _backgroundIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _backgroundIndicateRegard.userInteractionEnabled = YES; - } - return _backgroundIndicateRegard; -} - -- (NetIndicateRegard *)figureIndicateRegard { - if (!_figureIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _figureIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _figureIndicateRegard.userInteractionEnabled = YES; - } - return _figureIndicateRegard; -} - -- (UILabel *)fascinationSequencignation { - if (!_fascinationSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - label.textColor = UIColorFromRGB(0xFDE19B); - label.text = YMLocalizedString(@"YUMI_Gift_Twelve_Star_Broadcast_View_1"); - _fascinationSequencignation = label; - } - return _fascinationSequencignation; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 12; - _intelligenceportraitIndicateRegard.userInteractionEnabled = YES; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)efficacySequencignation { - if (!_efficacySequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:10]; - label.textColor = [UIColor whiteColor]; - label.text = YMLocalizedString(@"YUMI_Gift_Twelve_Star_Broadcast_View_2"); - _efficacySequencignation = label; - } - return _efficacySequencignation; -} - -- (UIButton *)zhouSatelliteBtuton { - if (!_zhouSatelliteBtuton) { - UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; - button.backgroundColor = UIColorRGBAlpha(0x000000, 0.36); - [button addTarget:self action:@selector(prohibitiportBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [button setTitle:@"活动详情 >" forState:UIControlStateNormal]; - [button setTitleColor:UIColorFromRGB(0x00EEFF) forState:UIControlStateNormal]; - button.titleLabel.font = [UIFont systemFontOfSize:10]; - button.layer.masksToBounds = YES; - button.layer.cornerRadius = 9; - _zhouSatelliteBtuton = button; - } - return _zhouSatelliteBtuton; -} - -- (UIImageView *)seaxualityIndicateRegard { - if (!_seaxualityIndicateRegard) { - _seaxualityIndicateRegard = [[UIImageView alloc] init]; - } - return _seaxualityIndicateRegard; -} - -- (UILabel *)sequencSequencignation { - if (!_sequencSequencignation) { - _sequencSequencignation = [[UILabel alloc] init]; - _sequencSequencignation.text = @"星座物语,限定开启星座月!"; - _sequencSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _sequencSequencignation.textColor = UIColorFromRGB(0xFDE19B); - } - return _sequencSequencignation; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentWeekSatellitePingbackRegard.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentWeekSatellitePingbackRegard.h deleted file mode 100644 index ce5375bb..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentWeekSatellitePingbackRegard.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// YMGiftWeekStarBroadcastView.h -// YUMI -// -// Created by YUMI on 2022/10/8. -// - -#import -#import "PresentAbstractMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCPresentWeekStarPingbackRegardRepresendtation - -- (void)yUMIPresentZhouStowardselliteBroadcastRegardZhouStowardselliteTicktack; - -@end - -@interface YUMIPresentWeekSatellitePingbackRegard : UIView - -@property (nonatomic, weak) id delegate; - -@property (nonatomic, strong) PresentAbstractMatrix *giftInfo; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentWeekSatellitePingbackRegard.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentWeekSatellitePingbackRegard.m deleted file mode 100644 index f048b689..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/YUMIPresentWeekSatellitePingbackRegard.m +++ /dev/null @@ -1,249 +0,0 @@ -// -// YMGiftWeekStarBroadcastView.m -// YUMI -// -// Created by YUMI on 2022/10/8. -// - -#import "YUMIPresentWeekSatellitePingbackRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" - -@interface YUMIPresentWeekSatellitePingbackRegard() - -@property (nonatomic, strong) UIImageView *backgroundIndicateRegard; -@property (nonatomic, strong) UIButton *zhouSatelliteBtuton; -@property (nonatomic, strong) NetIndicateRegard *fascinationIndicateRegard; -@property (nonatomic, strong) NetIndicateRegard *efficacyIndicateRegard; -@property (nonatomic, strong) UILabel *fascinationSequencignation; -@property (nonatomic, strong) UILabel *efficacySequencignation; -@property (nonatomic, strong) UIView *fascinationBackgroundRegard; -@property (nonatomic, strong) UILabel *fascinationMonicerSequencignation; -@property (nonatomic, strong) UIView *efficacyBackgroundRegard; -@property (nonatomic, strong) UILabel *efficacyMonicerSequencignation; - -@end - -@implementation YUMIPresentWeekSatellitePingbackRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backgroundIndicateRegard]; - [self addSubview:self.zhouSatelliteBtuton]; - [self addSubview:self.fascinationIndicateRegard]; - [self addSubview:self.fascinationSequencignation]; - [self addSubview:self.fascinationBackgroundRegard]; - [self addSubview:self.fascinationMonicerSequencignation]; - [self addSubview:self.efficacyIndicateRegard]; - [self addSubview:self.efficacySequencignation]; - [self addSubview:self.efficacyBackgroundRegard]; - [self addSubview:self.efficacyMonicerSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(0); - make.left.right.mas_equalTo(self).inset(10); - make.height.mas_equalTo(44); - }]; - [self.fascinationIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.backgroundIndicateRegard).mas_offset(10); - make.width.height.mas_equalTo(30); - make.centerY.mas_equalTo(self.backgroundIndicateRegard); - }]; - [self.fascinationSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.fascinationIndicateRegard); - make.height.mas_equalTo(12); - make.left.mas_equalTo(self.fascinationIndicateRegard.mas_right).mas_offset(12); - }]; - [self.fascinationBackgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.fascinationMonicerSequencignation); - make.height.mas_equalTo(16); - make.left.right.mas_equalTo(self.fascinationMonicerSequencignation).inset(-6); - }]; - [self.fascinationMonicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.fascinationSequencignation.mas_bottom).mas_offset(6); - make.height.mas_equalTo(12); - make.left.mas_equalTo(self.fascinationSequencignation); - }]; - - [self.efficacyIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.fascinationSequencignation.mas_right).mas_offset(24); - make.width.height.mas_equalTo(30); - make.centerY.mas_equalTo(self.backgroundIndicateRegard); - }]; - [self.efficacySequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.efficacyIndicateRegard); - make.height.mas_equalTo(12); - make.left.mas_equalTo(self.efficacyIndicateRegard.mas_right).mas_offset(12); - }]; - [self.efficacyBackgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.efficacyMonicerSequencignation); - make.height.mas_equalTo(16); - make.left.right.mas_equalTo(self.efficacyMonicerSequencignation).inset(-6); - }]; - [self.efficacyMonicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.efficacySequencignation.mas_bottom).mas_offset(6); - make.height.mas_equalTo(12); - make.left.mas_equalTo(self.efficacySequencignation); - }]; - [self.zhouSatelliteBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(30); - make.centerY.mas_equalTo(self.backgroundIndicateRegard); - make.right.mas_equalTo(self.backgroundIndicateRegard).mas_offset(-7); - make.width.mas_equalTo(38); - }]; -} - -#pragma mark - action -- (void)prohibitiportBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIPresentZhouStowardselliteBroadcastRegardZhouStowardselliteTicktack)]) { - [self.delegate yUMIPresentZhouStowardselliteBroadcastRegardZhouStowardselliteTicktack]; - } -} - -- (void)setGiftInfo:(PresentAbstractMatrix *)giftInfo { - if (giftInfo.firstCharmRankUser) { - self.fascinationIndicateRegard.imageUrl = giftInfo.firstCharmRankUser.avatar; - NSString * nick = giftInfo.firstCharmRankUser.nick; - if (nick.length > 8) { - nick = [nick substringFromIndex:8]; - } - self.fascinationMonicerSequencignation.text = nick; - } else { - self.fascinationIndicateRegard.image = [UIIndicateConstant deficiencyDispossessIntelligenceportraitDepapossessor]; - self.fascinationMonicerSequencignation.text = YMLocalizedString(@"YUMI_Gift_Week_Star_Broadcast_View_0"); - } - - if (giftInfo.firstLevelRankUser) { - self.efficacyIndicateRegard.imageUrl = giftInfo.firstLevelRankUser.avatar; - NSString * nick = giftInfo.firstLevelRankUser.nick; - if (nick.length > 8) { - nick = [nick substringFromIndex:8]; - } - self.efficacyMonicerSequencignation.text = nick; - } else { - self.efficacyIndicateRegard.image = [UIIndicateConstant deficiencyDispossessIntelligenceportraitDepapossessor]; - self.efficacyMonicerSequencignation.text = YMLocalizedString(@"YUMI_Gift_Week_Star_Broadcast_View_1"); - } -} - -- (UIImageView *)backgroundIndicateRegard { - if (!_backgroundIndicateRegard) { - _backgroundIndicateRegard = [[UIImageView alloc] init]; - _backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_present_weekStar_background"]; - _backgroundIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _backgroundIndicateRegard; -} - -- (NetIndicateRegard *)fascinationIndicateRegard { - if (!_fascinationIndicateRegard) { - NetIndicateDisposition *config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyDispossessIntelligenceportraitDepapossessor]; - _fascinationIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _fascinationIndicateRegard.userInteractionEnabled = YES; - _fascinationIndicateRegard.layer.masksToBounds = YES; - _fascinationIndicateRegard.layer.cornerRadius = 15; - } - return _fascinationIndicateRegard; -} - -- (UILabel *)fascinationSequencignation { - if (!_fascinationSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:10]; - label.textColor = [DJDKMIMOMColor mainEssayPrettify]; - label.text = YMLocalizedString(@"YUMI_Gift_Week_Star_Broadcast_View_2"); - _fascinationSequencignation = label; - } - return _fascinationSequencignation; -} - -- (UIView *)fascinationBackgroundRegard { - if (!_fascinationBackgroundRegard) { - UIView *view = [[UIView alloc] init]; - view.backgroundColor = UIColorRGBAlpha(0xffffff, 0.2); - view.layer.cornerRadius = 8; - view.layer.masksToBounds = YES; - _fascinationBackgroundRegard = view; - } - return _fascinationBackgroundRegard; -} - -- (UILabel *)fascinationMonicerSequencignation { - if (!_fascinationMonicerSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:10]; - label.textColor = [UIColor whiteColor]; - label.text = YMLocalizedString(@"YUMI_Gift_Week_Star_Broadcast_View_3"); - _fascinationMonicerSequencignation = label; - } - return _fascinationMonicerSequencignation; -} - -- (NetIndicateRegard *)efficacyIndicateRegard { - if (!_efficacyIndicateRegard) { - NetIndicateDisposition *config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyDispossessIntelligenceportraitDepapossessor]; - _efficacyIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _efficacyIndicateRegard.userInteractionEnabled = YES; - _efficacyIndicateRegard.layer.masksToBounds = YES; - _efficacyIndicateRegard.layer.cornerRadius = 15; - } - return _efficacyIndicateRegard; -} - -- (UILabel *)efficacySequencignation { - if (!_efficacySequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:10]; - label.textColor = [DJDKMIMOMColor mainEssayPrettify]; - label.text = YMLocalizedString(@"YUMI_Gift_Week_Star_Broadcast_View_4"); - _efficacySequencignation = label; - } - return _efficacySequencignation; -} - -- (UIView *)efficacyBackgroundRegard { - if (!_efficacyBackgroundRegard) { - UIView *view = [[UIView alloc] init]; - view.backgroundColor = UIColorRGBAlpha(0xffffff, 0.2); - view.layer.cornerRadius = 8; - view.layer.masksToBounds = YES; - _efficacyBackgroundRegard = view; - } - return _efficacyBackgroundRegard; -} -- (UILabel *)efficacyMonicerSequencignation { - if (!_efficacyMonicerSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:10]; - label.textColor = [UIColor whiteColor]; - label.text = YMLocalizedString(@"YUMI_Gift_Week_Star_Broadcast_View_5"); - _efficacyMonicerSequencignation = label; - } - return _efficacyMonicerSequencignation; -} - -- (UIButton *)zhouSatelliteBtuton { - if (!_zhouSatelliteBtuton) { - UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; - [button setImage:[UIImage imageNamed:@"yumi_present_weekStar_entrance"] forState:UIControlStateNormal]; - [button addTarget:self action:@selector(prohibitiportBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _zhouSatelliteBtuton = button; - } - return _zhouSatelliteBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Api/Api+RedPacket.h b/YuMi/Modules/YMRoom/View/SendRedPacket/Api/Api+RedPacket.h index ad0c4ea6..23240697 100644 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/Api/Api+RedPacket.h +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/Api/Api+RedPacket.h @@ -11,10 +11,21 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (RedPacket) -+ (void)prohibitichargeDeficitShetowardshe:(HttpRequestHelperCompletion)completion num:(NSString *)num goldNum:(NSString *)goldNum roomUId:(NSString *)roomUId type:(NSNumber *)type password:(NSString *)password message:(NSString *)message; +/// 发送红包 +/// @param completion 完成 +/// @param num 红包数量 +/// @param goldNum 钻石数量 +/// @param roomUId 房间uid,不知道谁写接口参数的,i要大写,不然房间红包不生效(无语) +/// @param type 类型 1:房间, 2:全服 +/// @param password 密码 +/// @param message 消息 ++ (void)sendRedPacket:(HttpRequestHelperCompletion)completion num:(NSString *)num goldNum:(NSString *)goldNum roomUId:(NSString *)roomUId type:(NSNumber *)type password:(NSString *)password message:(NSString *)message; -+ (void)unfoildDeficitShetowardshe:(HttpRequestHelperCompletion)completion redEnvelopeId:(NSString *)redEnvelopeId; +/// 抢红包 +/// @param completion 完成 +/// @param redEnvelopeId 红包id ++ (void)openRedPacket:(HttpRequestHelperCompletion)completion redEnvelopeId:(NSString *)redEnvelopeId; @end diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Api/Api+RedPacket.m b/YuMi/Modules/YMRoom/View/SendRedPacket/Api/Api+RedPacket.m index 8c3157a1..99037535 100644 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/Api/Api+RedPacket.m +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/Api/Api+RedPacket.m @@ -9,14 +9,14 @@ #import @implementation Api (RedPacket) -+ (void)prohibitichargeDeficitShetowardshe:(HttpRequestHelperCompletion)completion num:(NSString *)num goldNum:(NSString *)goldNum roomUId:(NSString *)roomUId type:(NSNumber *)type password:(NSString *)password message:(NSString *)message { - NSString * fang = [NSString stringFromBase64String:@"cmVkLWVudmVsb3Bl"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, num, goldNum, roomUId, type, password, message, nil]; ++ (void)sendRedPacket:(HttpRequestHelperCompletion)completion num:(NSString *)num goldNum:(NSString *)goldNum roomUId:(NSString *)roomUId type:(NSNumber *)type password:(NSString *)password message:(NSString *)message { + NSString * fang = [NSString stringFromBase64String:@"cmVkLWVudmVsb3Bl"];///red-envelope + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, num, goldNum, roomUId, type, password, message, nil]; } -+ (void)unfoildDeficitShetowardshe:(HttpRequestHelperCompletion)completion redEnvelopeId:(NSString *)redEnvelopeId { - NSString * fang = [NSString stringFromBase64String:@"cmVkLWVudmVsb3BlL29wZW4="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, redEnvelopeId, nil]; ++ (void)openRedPacket:(HttpRequestHelperCompletion)completion redEnvelopeId:(NSString *)redEnvelopeId { + NSString * fang = [NSString stringFromBase64String:@"cmVkLWVudmVsb3BlL29wZW4="];///red-envelope/open + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, redEnvelopeId, nil]; } @end diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Cell/XPOpenRedPacketCell.h b/YuMi/Modules/YMRoom/View/SendRedPacket/Cell/XPOpenRedPacketCell.h new file mode 100644 index 00000000..25d5bcfd --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/Cell/XPOpenRedPacketCell.h @@ -0,0 +1,19 @@ +// +// YMOpenRedPacketCell.h +// YUMI +// +// Created by YUMI on 2022/9/2. +// + +#import +#import "XPRedPacketResultModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPOpenRedPacketCell : UITableViewCell + +@property (nonatomic, strong) XPRedPacketPersonReceiveModel *model; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Cell/XPOpenRedPacketCell.m b/YuMi/Modules/YMRoom/View/SendRedPacket/Cell/XPOpenRedPacketCell.m new file mode 100644 index 00000000..26c806ae --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/Cell/XPOpenRedPacketCell.m @@ -0,0 +1,180 @@ +// +// YMOpenRedPacketCell.m +// YUMI +// +// Created by YUMI on 2022/9/2. +// + +#import "XPOpenRedPacketCell.h" +#import "DJDKMIMOMColor.h" +#import +#import "AccountInfoStorage.h" +#import "NetImageView.h" + +@interface XPOpenRedPacketCell() + +///头像 +@property (nonatomic, strong) NetImageView *avatarView; +///用户名 +@property (nonatomic, strong) UILabel *userNameLabel; +///时间 +@property(nonatomic, strong) UILabel *timeLabel; +///获得红包数 +@property (nonatomic, strong) UILabel *amountLabel; +///礼物图 +//@property (nonatomic, strong) XYRedPacketResultGiftView *giftView; +///钻号 +@property (nonatomic, strong) UIImageView *coinImageView; + +///底线 +@property (nonatomic, strong) UIView *lineView; + +@end + +@implementation XPOpenRedPacketCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; + if (self) { + [self initViews]; + } + return self; +} + +- (void)setModel:(XPRedPacketPersonReceiveModel *)model { + _model = model; + NSString *uid = [AccountInfoStorage instance].getUid; + BOOL isMe = model.userVO.uid == uid.integerValue; + if (isMe) { + self.userNameLabel.text = YMLocalizedString(@"XPOpenRedPacketCell0"); + self.userNameLabel.textColor = UIColorFromRGB(0xFDCD00); + } else { + NSString *name = model.userVO.nick; + if (model.userVO.nick.length > 6) { + name = [name substringToIndex:6]; + name = [name stringByAppendingString:@"..."]; + } + self.userNameLabel.text = name; + self.userNameLabel.textColor = UIColorFromRGB(0xFFFFFF); + } + self.avatarView.imageUrl = model.userVO.avatar; + NSDate *date = [NSDate dateWithTimeIntervalSince1970:model.createTime/1000]; + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; + [dateFormatter setDateFormat:@"yyyy/MM/dd HH:mm"]; + self.timeLabel.text = [dateFormatter stringFromDate:date]; + self.amountLabel.hidden = NO; + if (model.amount.doubleValue> 0) { + NSString *doubleString = [NSString stringWithFormat:@"%lf", model.amount.doubleValue]; + NSDecimalNumber *decNumber = [NSDecimalNumber decimalNumberWithString:doubleString]; + self.amountLabel.text = [NSString stringWithFormat:@"%@",decNumber.stringValue]; + }else { + self.amountLabel.text = @"0"; + } +} + +#pragma mark - UI +- (void)initViews { + [self.contentView addSubview:self.avatarView]; + [self.contentView addSubview:self.userNameLabel]; + [self.contentView addSubview:self.timeLabel]; + [self.contentView addSubview:self.amountLabel]; + [self.contentView addSubview:self.coinImageView]; + [self.contentView addSubview:self.lineView]; + + [self.avatarView mas_makeConstraints:^(MASConstraintMaker *make){ + make.height.width.mas_equalTo(30); + make.centerY.mas_equalTo(self.mas_centerY); + make.left.mas_equalTo(self.contentView.mas_left).offset(22); + }]; + + [self.userNameLabel mas_makeConstraints:^(MASConstraintMaker *make){ + make.left.mas_equalTo(self.avatarView.mas_right).offset(6.5); + make.top.mas_equalTo(self.avatarView.mas_top).offset(2.5); + make.height.mas_equalTo(14); + }]; + + [self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make){ + make.left.mas_equalTo(self.avatarView.mas_right).offset(6.5); + make.bottom.mas_equalTo(self.avatarView.mas_bottom); + }]; + + [self.coinImageView mas_makeConstraints:^(MASConstraintMaker *make){ + make.width.mas_equalTo(22); + make.height.mas_equalTo(22); + make.centerY.mas_equalTo(self.mas_centerY); + make.right.mas_equalTo(self.contentView.mas_right).offset(-22); + }]; + + [self.amountLabel mas_makeConstraints:^(MASConstraintMaker *make){ + make.centerY.mas_equalTo(self.mas_centerY); + make.right.mas_equalTo(self.coinImageView.mas_left).offset(-5); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make){ + make.left.mas_equalTo(self.avatarView.mas_left); + make.right.mas_equalTo(self.coinImageView.mas_right); + make.height.mas_equalTo(0.5); + }]; +} + +#pragma mark - Lazy Load +- (NetImageView *)avatarView { + if (!_avatarView) { + _avatarView = [[NetImageView alloc] init]; + _avatarView.layer.masksToBounds = YES; + _avatarView.layer.cornerRadius = 15; + _avatarView.layer.borderWidth = 1; + _avatarView.layer.borderColor = UIColorFromRGB(0xFFFFFF).CGColor; + } + return _avatarView; +} + +- (UILabel *)userNameLabel { + if (!_userNameLabel) { + _userNameLabel = [[UILabel alloc] init]; + _userNameLabel.text = YMLocalizedString(@"XPOpenRedPacketCell1"); + _userNameLabel.numberOfLines = 1; + _userNameLabel.font = [UIFont systemFontOfSize:15]; + } + return _userNameLabel; +} + +- (UILabel *)timeLabel { + if (!_timeLabel) { + _timeLabel = [[UILabel alloc] init]; + _timeLabel.text = @"00/00/00 00:00"; + _timeLabel.font = [UIFont systemFontOfSize:10]; + _timeLabel.textColor = UIColorRGBAlpha(0xffffff, 0.5); + _timeLabel.alpha = 0.5; + } + return _timeLabel; +} + +- (UILabel *)amountLabel { + if (!_amountLabel) { + _amountLabel = [[UILabel alloc] init]; + _amountLabel.text = YMLocalizedString(@"XPOpenRedPacketCell2"); + _amountLabel.textAlignment = NSTextAlignmentRight; + _amountLabel.font = [UIFont systemFontOfSize:20 weight:UIFontWeightMedium]; + _amountLabel.textColor = [UIColor whiteColor]; + } + return _amountLabel; +} + +- (UIImageView *)coinImageView { + if (!_coinImageView) { + _coinImageView = [[UIImageView alloc] init]; + [_coinImageView setImage:[UIImage imageNamed:@"common_diamond"]]; + } + return _coinImageView; +} + +- (UIView *)lineView{ + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = UIColorFromRGB(0xE2314D); + } + return _lineView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Cell/YUMIUnfoildDeficitSheatheElement.h b/YuMi/Modules/YMRoom/View/SendRedPacket/Cell/YUMIUnfoildDeficitSheatheElement.h deleted file mode 100644 index ced7e0b2..00000000 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/Cell/YUMIUnfoildDeficitSheatheElement.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMOpenRedPacketCell.h -// YUMI -// -// Created by YUMI on 2022/9/2. -// - -#import -#import "YUMIDeficitSheatheConsequentMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIUnfoildDeficitSheatheElement : UITableViewCell - -@property (nonatomic, strong) YUMIDeficitSheatheFeatureAchieveMatrix *model; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Cell/YUMIUnfoildDeficitSheatheElement.m b/YuMi/Modules/YMRoom/View/SendRedPacket/Cell/YUMIUnfoildDeficitSheatheElement.m deleted file mode 100644 index 00d0d98b..00000000 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/Cell/YUMIUnfoildDeficitSheatheElement.m +++ /dev/null @@ -1,172 +0,0 @@ -// -// YMOpenRedPacketCell.m -// YUMI -// -// Created by YUMI on 2022/9/2. -// - -#import "YUMIUnfoildDeficitSheatheElement.h" -#import "DJDKMIMOMColor.h" -#import -#import "AccountAbstractStorage.h" -#import "NetIndicateRegard.h" - -@interface YUMIUnfoildDeficitSheatheElement() - -@property (nonatomic, strong) NetIndicateRegard *intelligenceportraitRegard; -@property (nonatomic, strong) UILabel *consumerConstituteSequencignation; -@property(nonatomic, strong) UILabel *intratemporalSequencignation; -@property (nonatomic, strong) UILabel *amountSequencignation; -@property (nonatomic, strong) UIImageView *tangerineIndicateRegard; - -@property (nonatomic, strong) UIView *burlywoodRegard; - -@end - -@implementation YUMIUnfoildDeficitSheatheElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; - if (self) { - [self initRegards]; - } - return self; -} - -- (void)setModel:(YUMIDeficitSheatheFeatureAchieveMatrix *)model { - _model = model; - NSString *uid = [AccountAbstractStorage instance].acquireCid; - BOOL isMe = model.userVO.uid == uid.integerValue; - if (isMe) { - self.consumerConstituteSequencignation.text = YMLocalizedString(@"YUMI_Open_Red_Packet_Cell_0"); - self.consumerConstituteSequencignation.textColor = UIColorFromRGB(0xFDCD00); - } else { - NSString *name = model.userVO.nick; - if (model.userVO.nick.length > 6) { - name = [name substringToIndex:6]; - name = [name stringByAppendingString:@"..."]; - } - self.consumerConstituteSequencignation.text = name; - self.consumerConstituteSequencignation.textColor = UIColorFromRGB(0xFFFFFF); - } - self.intelligenceportraitRegard.imageUrl = model.userVO.avatar; - NSDate *date = [NSDate dateWithTimeIntervalSince1970:model.createTime/1000]; - NSDateFormatter *engagementInitialiser = [[NSDateFormatter alloc] init]; - [engagementInitialiser setDateFormat:@"yyyy/MM/dd HH:mm"]; - self.intratemporalSequencignation.text = [engagementInitialiser stringFromDate:date]; - self.amountSequencignation.hidden = NO; - if (model.amount.doubleValue> 0) { - NSString *doubleString = [NSString stringWithFormat:@"%lf", model.amount.doubleValue]; - NSDecimalNumber *decNumber = [NSDecimalNumber decimalNumberWithString:doubleString]; - self.amountSequencignation.text = [NSString stringWithFormat:@"%@",decNumber.stringValue]; - }else { - self.amountSequencignation.text = @"0"; - } -} - -#pragma mark - UI -- (void)initRegards { - [self.contentView addSubview:self.intelligenceportraitRegard]; - [self.contentView addSubview:self.consumerConstituteSequencignation]; - [self.contentView addSubview:self.intratemporalSequencignation]; - [self.contentView addSubview:self.amountSequencignation]; - [self.contentView addSubview:self.tangerineIndicateRegard]; - [self.contentView addSubview:self.burlywoodRegard]; - - [self.intelligenceportraitRegard mas_makeConstraints:^(MASConstraintMaker *make){ - make.height.width.mas_equalTo(30); - make.centerY.mas_equalTo(self.mas_centerY); - make.left.mas_equalTo(self.contentView.mas_left).offset(22); - }]; - - [self.consumerConstituteSequencignation mas_makeConstraints:^(MASConstraintMaker *make){ - make.left.mas_equalTo(self.intelligenceportraitRegard.mas_right).offset(6.5); - make.top.mas_equalTo(self.intelligenceportraitRegard.mas_top).offset(2.5); - make.height.mas_equalTo(14); - }]; - - [self.intratemporalSequencignation mas_makeConstraints:^(MASConstraintMaker *make){ - make.left.mas_equalTo(self.intelligenceportraitRegard.mas_right).offset(6.5); - make.bottom.mas_equalTo(self.intelligenceportraitRegard.mas_bottom); - }]; - - [self.tangerineIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make){ - make.width.mas_equalTo(22); - make.height.mas_equalTo(22); - make.centerY.mas_equalTo(self.mas_centerY); - make.right.mas_equalTo(self.contentView.mas_right).offset(-22); - }]; - - [self.amountSequencignation mas_makeConstraints:^(MASConstraintMaker *make){ - make.centerY.mas_equalTo(self.mas_centerY); - make.right.mas_equalTo(self.tangerineIndicateRegard.mas_left).offset(-5); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make){ - make.left.mas_equalTo(self.intelligenceportraitRegard.mas_left); - make.right.mas_equalTo(self.tangerineIndicateRegard.mas_right); - make.height.mas_equalTo(0.5); - }]; -} - -#pragma mark - Lazy Load -- (NetIndicateRegard *)intelligenceportraitRegard { - if (!_intelligenceportraitRegard) { - _intelligenceportraitRegard = [[NetIndicateRegard alloc] init]; - _intelligenceportraitRegard.layer.masksToBounds = YES; - _intelligenceportraitRegard.layer.cornerRadius = 15; - _intelligenceportraitRegard.layer.borderWidth = 1; - _intelligenceportraitRegard.layer.borderColor = UIColorFromRGB(0xFFFFFF).CGColor; - } - return _intelligenceportraitRegard; -} - -- (UILabel *)consumerConstituteSequencignation { - if (!_consumerConstituteSequencignation) { - _consumerConstituteSequencignation = [[UILabel alloc] init]; - _consumerConstituteSequencignation.text = YMLocalizedString(@"YUMI_Open_Red_Packet_Cell_1"); - _consumerConstituteSequencignation.numberOfLines = 1; - _consumerConstituteSequencignation.font = [UIFont systemFontOfSize:15]; - } - return _consumerConstituteSequencignation; -} - -- (UILabel *)intratemporalSequencignation { - if (!_intratemporalSequencignation) { - _intratemporalSequencignation = [[UILabel alloc] init]; - _intratemporalSequencignation.text = @"00/00/00 00:00"; - _intratemporalSequencignation.font = [UIFont systemFontOfSize:10]; - _intratemporalSequencignation.textColor = UIColorRGBAlpha(0xffffff, 0.5); - _intratemporalSequencignation.alpha = 0.5; - } - return _intratemporalSequencignation; -} - -- (UILabel *)amountSequencignation { - if (!_amountSequencignation) { - _amountSequencignation = [[UILabel alloc] init]; - _amountSequencignation.text = YMLocalizedString(@"YUMI_Open_Red_Packet_Cell_2"); - _amountSequencignation.textAlignment = NSTextAlignmentRight; - _amountSequencignation.font = [UIFont systemFontOfSize:20 weight:UIFontWeightMedium]; - _amountSequencignation.textColor = [UIColor whiteColor]; - } - return _amountSequencignation; -} - -- (UIImageView *)tangerineIndicateRegard { - if (!_tangerineIndicateRegard) { - _tangerineIndicateRegard = [[UIImageView alloc] init]; - [_tangerineIndicateRegard setImage:[UIImage imageNamed:@"yumi_same_diamond"]]; - } - return _tangerineIndicateRegard; -} - -- (UIView *)burlywoodRegard{ - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = UIColorFromRGB(0xE2314D); - } - return _burlywoodRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPOpenRedPacketModel.h b/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPOpenRedPacketModel.h new file mode 100644 index 00000000..ec028800 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPOpenRedPacketModel.h @@ -0,0 +1,29 @@ +// +// YMOpenRedPacketModel.h +// YUMI +// +// Created by YUMI on 2022/9/16. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPOpenRedPacketModel : NSObject + +//打开红包的用户ID +@property (nonatomic, copy) NSString *openRedEnvelopeId; +///打开红包的用户昵称 +@property (nonatomic, copy) NSString *openRedEnvelopeUserNick; +///获取的钻石数量 +@property (nonatomic, copy) NSString *amount; +///发送红包的用户ID +@property (nonatomic, copy) NSString *redEnvelopeMasterId; +///发送红包的用户昵称 +@property (nonatomic, copy) NSString *redEnvelopeMasterNick; +///红包类型 +@property (nonatomic, assign) NSInteger redEnvelopeType; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPOpenRedPacketModel.m b/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPOpenRedPacketModel.m new file mode 100644 index 00000000..8e905719 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPOpenRedPacketModel.m @@ -0,0 +1,12 @@ +// +// YMOpenRedPacketModel.m +// YUMI +// +// Created by YUMI on 2022/9/16. +// + +#import "XPOpenRedPacketModel.h" + +@implementation XPOpenRedPacketModel + +@end diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPReceiveRedPacketModel.h b/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPReceiveRedPacketModel.h new file mode 100644 index 00000000..d0929b1e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPReceiveRedPacketModel.h @@ -0,0 +1,31 @@ +// +// YMReceiveRedPacketModel.h +// YUMI +// +// Created by YUMI on 2022/9/2. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPReceiveRedPacketModel : NSObject + +///发送者头像 +@property (nonatomic, copy) NSString *sendUserAvatar; +///发送者昵称 +@property (nonatomic, copy) NSString *sendUserNick; +///房间UID +@property (nonatomic, copy) NSString *roomUid; +///红包类型 +@property (nonatomic, assign) NSInteger redEnvelopeType; +///房间标题 +@property (nonatomic, copy) NSString *roomTitle; +///红包ID +@property (nonatomic, copy) NSString *redEnvelopeId; +///红包祝福语 +@property (nonatomic, copy) NSString *redEnvelopeMessage; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPReceiveRedPacketModel.m b/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPReceiveRedPacketModel.m new file mode 100644 index 00000000..5dad1b3f --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPReceiveRedPacketModel.m @@ -0,0 +1,12 @@ +// +// YMReceiveRedPacketModel.m +// YUMI +// +// Created by YUMI on 2022/9/2. +// + +#import "XPReceiveRedPacketModel.h" + +@implementation XPReceiveRedPacketModel + +@end diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPRedPacketModel.h b/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPRedPacketModel.h new file mode 100644 index 00000000..cd162867 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPRedPacketModel.h @@ -0,0 +1,43 @@ +// +// YMRedPacketModel.h +// YUMI +// +// Created by YUMI on 2022/9/2. +// + +#import +#import "UserInfoModel.h" + +NS_ASSUME_NONNULL_BEGIN + +// 红包类型 1:房间钻石红包 2:全服钻石红包 3:房间礼物红包 4:全服礼物红包 +typedef enum : NSUInteger { + RedPacketType_RoomDiamond = 1, + RedPacketType_AllDiamond = 2, + RedPacketType_RoomGift = 3, + RedPacketType_AllGift = 4 +} RedPacketType; + +@interface XPRedPacketModel : NSObject + +@property (nonatomic, assign) RedPacketType type; + +@property (nonatomic, copy) NSString *redEnvelopeId; + +@property (nonatomic, copy) NSString *message; +///红包厅主id +@property (nonatomic, copy) NSString *roomUId; +///发红包用户id +@property (nonatomic, copy) NSString *userId; +///发送者信息 +@property (nonatomic, strong) UserInfoModel *userVO; +/// 红包总数 +@property (nonatomic, copy) NSString *totalNum; +/// 红包总额 +@property (nonatomic, copy) NSString *redEnvelopeAmount; +/// 已领取数量 +@property (nonatomic, copy) NSString *pickNum; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPRedPacketModel.m b/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPRedPacketModel.m new file mode 100644 index 00000000..daacffc7 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPRedPacketModel.m @@ -0,0 +1,16 @@ +// +// YMRedPacketModel.m +// YUMI +// +// Created by YUMI on 2022/9/2. +// + +#import "XPRedPacketModel.h" + +@implementation XPRedPacketModel + ++ (NSDictionary *)replacedKeyFromPropertyName { + return @{@"redEnvelopeId":@"id"}; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPRedPacketResultModel.h b/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPRedPacketResultModel.h new file mode 100644 index 00000000..ce86c2ff --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPRedPacketResultModel.h @@ -0,0 +1,54 @@ +// +// YMRedPacketResultModel.h +// YUMI +// +// Created by YUMI on 2022/9/2. +// + +#import +#import "XPRedPacketModel.h" + +NS_ASSUME_NONNULL_BEGIN + +/* +当前用户的红包状态 +ING(1, “开抢中”), +TIME_OUT(2, “过时”), +REMAIN_ZERO(3, “抢光了”), +SUCCESS(4, “抢到了”), +WILL(5, “将要开始”), +TIME_OUT_BACK(6, “超时已退还”), + */ +typedef enum : NSUInteger { + RedPacketState_Ing = 1, + RedPacketState_Time_Out = 2, + RedPacketState_Remain_Zero = 3, + RedPacketState_Success = 4, + RedPacketState_will = 5, + RedPacketState_Time_Out_Back = 6, +} RedPacketState; + +@class UserInfoModel, XPRedPacketPersonReceiveModel; +@interface XPRedPacketResultModel : NSObject + +@property (nonatomic, copy) NSString *currentUserAmount; + +@property (nonatomic, assign) RedPacketState redEnvelopeState; + +@property (nonatomic, strong) XPRedPacketModel *redEnvelopeVO; +///钻石红包领取详情 +@property (nonatomic, strong) NSArray *redEnvelopeItemVOs; + +@end + +@interface XPRedPacketPersonReceiveModel : NSObject + +@property (nonatomic, strong) NSNumber *amount; + +@property (nonatomic, strong) UserInfoModel *userVO; + +@property (nonatomic, assign) NSTimeInterval createTime; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPRedPacketResultModel.m b/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPRedPacketResultModel.m new file mode 100644 index 00000000..005250d0 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPRedPacketResultModel.m @@ -0,0 +1,22 @@ +// +// YMRedPacketResultModel.m +// YUMI +// +// Created by YUMI on 2022/9/2. +// + +#import "XPRedPacketResultModel.h" + +@implementation XPRedPacketResultModel + ++ (NSDictionary *)objectClassInArray { + return @{ + @"redEnvelopeItemVOs": XPRedPacketPersonReceiveModel.class + }; +} + +@end + +@implementation XPRedPacketPersonReceiveModel + +@end diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Model/YUMIAchieveDeficitSheatheMatrix.h b/YuMi/Modules/YMRoom/View/SendRedPacket/Model/YUMIAchieveDeficitSheatheMatrix.h deleted file mode 100644 index ba01a6b7..00000000 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/Model/YUMIAchieveDeficitSheatheMatrix.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YMReceiveRedPacketModel.h -// YUMI -// -// Created by YUMI on 2022/9/2. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIAchieveDeficitSheatheMatrix : NSObject - -@property (nonatomic, copy) NSString *sendUserAvatar; -@property (nonatomic, copy) NSString *sendUserNick; -@property (nonatomic, copy) NSString *roomUid; -@property (nonatomic, assign) NSInteger redEnvelopeType; -@property (nonatomic, copy) NSString *roomTitle; -@property (nonatomic, copy) NSString *redEnvelopeId; -@property (nonatomic, copy) NSString *redEnvelopeMessage; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Model/YUMIAchieveDeficitSheatheMatrix.m b/YuMi/Modules/YMRoom/View/SendRedPacket/Model/YUMIAchieveDeficitSheatheMatrix.m deleted file mode 100644 index ce1d27c3..00000000 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/Model/YUMIAchieveDeficitSheatheMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMReceiveRedPacketModel.m -// YUMI -// -// Created by YUMI on 2022/9/2. -// - -#import "YUMIAchieveDeficitSheatheMatrix.h" - -@implementation YUMIAchieveDeficitSheatheMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Model/YUMIDeficitSheatheConsequentMatrix.h b/YuMi/Modules/YMRoom/View/SendRedPacket/Model/YUMIDeficitSheatheConsequentMatrix.h deleted file mode 100644 index 66b82982..00000000 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/Model/YUMIDeficitSheatheConsequentMatrix.h +++ /dev/null @@ -1,45 +0,0 @@ -// -// YMRedPacketResultModel.h -// YUMI -// -// Created by YUMI on 2022/9/2. -// - -#import -#import "YUMIDeficitSheatheMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - - -typedef enum : NSUInteger { - RedPacketState_Ing = 1, - RedPacketState_Time_Out = 2, - RedPacketState_Remain_Zero = 3, - RedPacketState_Success = 4, - RedPacketState_will = 5, - RedPacketState_Time_Out_Back = 6, -} RedPacketState; - -@class ConsumerAbstractMatrix, YUMIDeficitSheatheFeatureAchieveMatrix; -@interface YUMIDeficitSheatheConsequentMatrix : NSObject - -@property (nonatomic, copy) NSString *currentUserAmount; - -@property (nonatomic, assign) RedPacketState redEnvelopeState; - -@property (nonatomic, strong) YUMIDeficitSheatheMatrix *redEnvelopeVO; -@property (nonatomic, strong) NSArray *redEnvelopeItemVOs; - -@end - -@interface YUMIDeficitSheatheFeatureAchieveMatrix : NSObject - -@property (nonatomic, strong) NSNumber *amount; - -@property (nonatomic, strong) ConsumerAbstractMatrix *userVO; - -@property (nonatomic, assign) NSTimeInterval createTime; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Model/YUMIDeficitSheatheConsequentMatrix.m b/YuMi/Modules/YMRoom/View/SendRedPacket/Model/YUMIDeficitSheatheConsequentMatrix.m deleted file mode 100644 index 322e00e8..00000000 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/Model/YUMIDeficitSheatheConsequentMatrix.m +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMRedPacketResultModel.m -// YUMI -// -// Created by YUMI on 2022/9/2. -// - -#import "YUMIDeficitSheatheConsequentMatrix.h" - -@implementation YUMIDeficitSheatheConsequentMatrix - -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{ - @"redEnvelopeItemVOs": YUMIDeficitSheatheFeatureAchieveMatrix.class - }; -} - -@end - -@implementation YUMIDeficitSheatheFeatureAchieveMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Model/YUMIDeficitSheatheMatrix.h b/YuMi/Modules/YMRoom/View/SendRedPacket/Model/YUMIDeficitSheatheMatrix.h deleted file mode 100644 index 1bd4a612..00000000 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/Model/YUMIDeficitSheatheMatrix.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// YMRedPacketModel.h -// YUMI -// -// Created by YUMI on 2022/9/2. -// - -#import -#import "ConsumerAbstractMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -typedef enum : NSUInteger { - RedPacketType_RoomDiamond = 1, - RedPacketType_AllDiamond = 2, - RedPacketType_RoomGift = 3, - RedPacketType_AllGift = 4 -} RedPacketType; - -@interface YUMIDeficitSheatheMatrix : NSObject - -@property (nonatomic, assign) RedPacketType type; - -@property (nonatomic, copy) NSString *redEnvelopeId; - -@property (nonatomic, copy) NSString *message; -@property (nonatomic, copy) NSString *roomUId; -@property (nonatomic, copy) NSString *userId; -@property (nonatomic, strong) ConsumerAbstractMatrix *userVO; -@property (nonatomic, copy) NSString *totalNum; -@property (nonatomic, copy) NSString *redEnvelopeAmount; -@property (nonatomic, copy) NSString *pickNum; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Model/YUMIDeficitSheatheMatrix.m b/YuMi/Modules/YMRoom/View/SendRedPacket/Model/YUMIDeficitSheatheMatrix.m deleted file mode 100644 index 2548afd1..00000000 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/Model/YUMIDeficitSheatheMatrix.m +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRedPacketModel.m -// YUMI -// -// Created by YUMI on 2022/9/2. -// - -#import "YUMIDeficitSheatheMatrix.h" - -@implementation YUMIDeficitSheatheMatrix - -+ (NSDictionary *)replacedDigitalByvirtueofMaintainertyConstitute { - return @{@"redEnvelopeId":@"id"}; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Model/YUMIUnfoildDeficitSheatheMatrix.h b/YuMi/Modules/YMRoom/View/SendRedPacket/Model/YUMIUnfoildDeficitSheatheMatrix.h deleted file mode 100644 index 552a15f1..00000000 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/Model/YUMIUnfoildDeficitSheatheMatrix.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMOpenRedPacketModel.h -// YUMI -// -// Created by YUMI on 2022/9/16. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIUnfoildDeficitSheatheMatrix : NSObject - -@property (nonatomic, copy) NSString *openRedEnvelopeId; -@property (nonatomic, copy) NSString *openRedEnvelopeUserNick; -@property (nonatomic, copy) NSString *amount; -@property (nonatomic, copy) NSString *redEnvelopeMasterId; -@property (nonatomic, copy) NSString *redEnvelopeMasterNick; -@property (nonatomic, assign) NSInteger redEnvelopeType; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Model/YUMIUnfoildDeficitSheatheMatrix.m b/YuMi/Modules/YMRoom/View/SendRedPacket/Model/YUMIUnfoildDeficitSheatheMatrix.m deleted file mode 100644 index ef4f04ee..00000000 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/Model/YUMIUnfoildDeficitSheatheMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMOpenRedPacketModel.m -// YUMI -// -// Created by YUMI on 2022/9/16. -// - -#import "YUMIUnfoildDeficitSheatheMatrix.h" - -@implementation YUMIUnfoildDeficitSheatheMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Presenter/XPRoomRedPacketPresenter.h b/YuMi/Modules/YMRoom/View/SendRedPacket/Presenter/XPRoomRedPacketPresenter.h new file mode 100644 index 00000000..83a9a0f1 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/Presenter/XPRoomRedPacketPresenter.h @@ -0,0 +1,31 @@ +// +// YMRoomRedPacketPresenter.h +// YUMI +// +// Created by YUMI on 2022/8/31. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomRedPacketPresenter : BaseMvpPresenter + +/// 获取钱包信息 +- (void)getUserWalletInfo; + +///获取当前用户信息 +- (void)getUserModel; + +/// 发送红包 +/// @param num 红包数量 +/// @param goldNum 钻石数量 +/// @param roomUid 房间uid +/// @param type 类型 1:房间, 2:全服 +/// @param pwd 密码 +/// @param message 消息 +- (void)sendRedPacketWithNum:(NSString *)num goldNum:(NSString *)goldNum roomUid:(NSString *)roomUid type:(NSNumber *)type password:(NSString *)pwd message:(NSString *)message; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Presenter/XPRoomRedPacketPresenter.m b/YuMi/Modules/YMRoom/View/SendRedPacket/Presenter/XPRoomRedPacketPresenter.m new file mode 100644 index 00000000..afae3974 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/Presenter/XPRoomRedPacketPresenter.m @@ -0,0 +1,48 @@ +// +// YMRoomRedPacketPresenter.m +// YUMI +// +// Created by YUMI on 2022/8/31. +// + +#import "XPRoomRedPacketPresenter.h" +#import "XPRoomRedPacketProtocol.h" +#import "Api+RedPacket.h" +#import "AccountInfoStorage.h" +#import "WalletInfoModel.h" +#import "UserInfoModel.h" +#import "DESEncrypt.h" +#import "YUMIConstant.h" + +@implementation XPRoomRedPacketPresenter + +/// 获取钱包信息 +- (void)getUserWalletInfo { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + if (!uid.length) { + return; + } + [Api getUserWalletInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + WalletInfoModel * model = [WalletInfoModel modelWithDictionary:data.data]; + [[self getView] getUserWalletInfo:model]; + }] uid:uid ticket:ticket]; +} + +///获取当前用户信息 +- (void)getUserModel { + NSString * uid = [[AccountInfoStorage instance] getUid]; + [Api getUserInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + UserInfoModel *userInfo = [UserInfoModel modelWithDictionary:data.data]; + [[self getView] onGetUserInfoSuccess:userInfo]; + } showLoading:NO] uid:uid]; +} + +- (void)sendRedPacketWithNum:(NSString *)num goldNum:(NSString *)goldNum roomUid:(NSString *)roomUid type:(NSNumber *)type password:(NSString *)pwd message:(NSString *)message { + NSString *password = [DESEncrypt encryptUseDES:pwd key:KeyWithType(KeyType_PasswordEncode)]; + [Api sendRedPacket:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] sendRedPacketSuccess]; + }] num:num goldNum:goldNum roomUId:roomUid type:type password:password message:message]; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Presenter/YUMIChamberDeficitSheatheExternalizer.h b/YuMi/Modules/YMRoom/View/SendRedPacket/Presenter/YUMIChamberDeficitSheatheExternalizer.h deleted file mode 100644 index 48b746db..00000000 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/Presenter/YUMIChamberDeficitSheatheExternalizer.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// YMRoomRedPacketPresenter.h -// YUMI -// -// Created by YUMI on 2022/8/31. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberDeficitSheatheExternalizer : BaseMvpExternalizer - -- (void)acquireConsumerPocketbookAbstract; - -- (void)acquireConsumerMtowardsrix; - -- (void)prohibitichargeDeficitShetowardsheAboutFigure:(NSString *)num goldNum:(NSString *)goldNum roomUid:(NSString *)roomUid type:(NSNumber *)type password:(NSString *)pwd message:(NSString *)message; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Presenter/YUMIChamberDeficitSheatheExternalizer.m b/YuMi/Modules/YMRoom/View/SendRedPacket/Presenter/YUMIChamberDeficitSheatheExternalizer.m deleted file mode 100644 index 3d69177a..00000000 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/Presenter/YUMIChamberDeficitSheatheExternalizer.m +++ /dev/null @@ -1,46 +0,0 @@ -// -// YMRoomRedPacketPresenter.m -// YUMI -// -// Created by YUMI on 2022/8/31. -// - -#import "YUMIChamberDeficitSheatheExternalizer.h" -#import "FBCChamberRedPacketCeremony.h" -#import "Api+RedPacket.h" -#import "AccountAbstractStorage.h" -#import "RamparatetAbstractMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "DESEncrypt.h" -#import "YUMIConstant.h" - -@implementation YUMIChamberDeficitSheatheExternalizer - -- (void)acquireConsumerPocketbookAbstract { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - if (!uid.length) { - return; - } - [Api acquireConsumerPocketbookAbstract:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - RamparatetAbstractMatrix * model = [RamparatetAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireConsumerPocketbookAbstract:model]; - }] uid:uid ticket:ticket]; -} - -- (void)acquireConsumerMtowardsrix { - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - [Api getUserInfo:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ConsumerAbstractMatrix *userInfo = [ConsumerAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] dwellEarnConsumerAbstractAccomplishment:userInfo]; - } EvidenceChambering:NO] uid:uid]; -} - -- (void)prohibitichargeDeficitShetowardsheAboutFigure:(NSString *)num goldNum:(NSString *)goldNum roomUid:(NSString *)roomUid type:(NSNumber *)type password:(NSString *)pwd message:(NSString *)message { - NSString *password = [DESEncrypt encryptUseDES:pwd key:KeyWithType(KeyGenre_PasswordEncode)]; - [Api prohibitichargeDeficitShetowardshe:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] prohibitichargeDeficitShetowardsheAccomplishment]; - }] num:num goldNum:goldNum roomUId:roomUid type:type password:password message:message]; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Protocol/FBCChamberRedPacketCeremony.h b/YuMi/Modules/YMRoom/View/SendRedPacket/Protocol/FBCChamberRedPacketCeremony.h deleted file mode 100644 index 352cb5ba..00000000 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/Protocol/FBCChamberRedPacketCeremony.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMRoomRedPacketProtocol.h -// YUMI -// -// Created by YUMI on 2022/8/31. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class RamparatetAbstractMatrix, ConsumerAbstractMatrix; - -@protocol FBCChamberRedPacketCeremony - -- (void)acquireConsumerPocketbookAbstract:(RamparatetAbstractMatrix *)balanceInfo; -- (void)dwellEarnConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo; - -- (void)prohibitichargeDeficitShetowardsheAccomplishment; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Protocol/XPRoomRedPacketProtocol.h b/YuMi/Modules/YMRoom/View/SendRedPacket/Protocol/XPRoomRedPacketProtocol.h new file mode 100644 index 00000000..47b3499a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/Protocol/XPRoomRedPacketProtocol.h @@ -0,0 +1,25 @@ +// +// YMRoomRedPacketProtocol.h +// YUMI +// +// Created by YUMI on 2022/8/31. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class WalletInfoModel, UserInfoModel; + +@protocol XPRoomRedPacketProtocol + +///获取用户钱包信息成功 +- (void)getUserWalletInfo:(WalletInfoModel *)balanceInfo; +///获取用户信息成功 +- (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo; + +- (void)sendRedPacketSuccess; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/XPReceiveRedPacketView.h b/YuMi/Modules/YMRoom/View/SendRedPacket/XPReceiveRedPacketView.h new file mode 100644 index 00000000..b97088fc --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/XPReceiveRedPacketView.h @@ -0,0 +1,27 @@ +// +// YMReceiveRedPacketView.h +// YUMI +// +// Created by YUMI on 2022/9/2. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class XPReceiveRedPacketModel, XPRedPacketModel; +@interface XPReceiveRedPacketView : UIView + +///是否在全服红包的房间内 +@property (nonatomic, assign) BOOL inAllPacketRoom; +///红包信息 +@property (nonatomic, strong) XPReceiveRedPacketModel *redPacketModel; + +@property (nonatomic, strong) XPRedPacketModel *receiveModel; + +@property (nonatomic, strong) UIView *alphaView; +//@property (nonatomic, strong) NSDictionary *dict; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/XPReceiveRedPacketView.m b/YuMi/Modules/YMRoom/View/SendRedPacket/XPReceiveRedPacketView.m new file mode 100644 index 00000000..d693dd83 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/XPReceiveRedPacketView.m @@ -0,0 +1,476 @@ +// +// YMReceiveRedPacketView.m +// YUMI +// +// Created by YUMI on 2022/9/2. +// + +#import "XPReceiveRedPacketView.h" +#import "XPReceiveRedPacketModel.h" +#import "NSObject+MJExtension.h" +#import "DJDKMIMOMColor.h" +#import +#import "NetImageView.h" +#import "TTPopUp.h" +#import "Api+RedPacket.h" +#import "XNDJTDDLoadingTool.h" +#import "XPRedPacketResultModel.h" +#import "XPOpenRedPacketCell.h" +#import "XCCurrentVCStackManager.h" +#import "XPRoomViewController.h" +#import "RoomHostDelegate.h" +#import "XPRoomMiniManager.h" +#import "RoomInfoModel.h" +#import "XPRedPacketModel.h" +#import "YUMIConstant.h" +#import "NSArray+Safe.h" + +@interface XPReceiveRedPacketView() + +@property (nonatomic, strong) XPRedPacketResultModel *resultData; + +///背景 +@property (nonatomic, strong) UIImageView *bgImageView; +///发送者头像 +@property (nonatomic, strong) NetImageView *sendAvatar; +///发送者昵称 +@property (nonatomic, strong) UILabel *sendNickLabel; +///收到的祝福语 +@property (nonatomic, strong) UILabel *sendWishLabel; +///开红包按钮 +@property (nonatomic, strong) UIButton *openButton; +///关闭 +@property (nonatomic, strong) UIButton *closeBtn; +///领取到容器 +@property (nonatomic, strong) UIView *diamondContentView; +@property (nonatomic, strong) UIImageView *diamondImage; +@property (nonatomic, strong) UILabel *diamondLabel; +///是否领到红包文案 +@property (nonatomic, strong) UILabel *getLabel; +///红包领取情况 +@property (nonatomic, strong) UILabel *openSituationLabel; +/// +@property (nonatomic, strong) UITableView *tableView; + +@end + +@implementation XPReceiveRedPacketView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.alphaView]; + [self addSubview:self.bgImageView]; + [self addSubview:self.sendAvatar]; + [self addSubview:self.sendNickLabel]; + [self addSubview:self.sendWishLabel]; + [self addSubview:self.openButton]; + [self addSubview:self.closeBtn]; +} + +- (void)initSubViewConstraints { + [self.alphaView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(310); + make.height.mas_equalTo(450); + make.centerX.centerY.mas_equalTo(self); + }]; + [self.closeBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.bgImageView.mas_bottom).mas_offset(25); + make.height.width.mas_equalTo(35); + make.centerX.mas_equalTo(self.bgImageView); + }]; + + [self.sendAvatar mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.bgImageView); + make.top.mas_equalTo(self.bgImageView).mas_offset(71); + make.width.height.mas_equalTo(88); + }]; + [self.sendNickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.bgImageView); + make.top.mas_equalTo(self.sendAvatar.mas_bottom).mas_offset(9); + make.height.mas_equalTo(18); + make.left.mas_equalTo(self.bgImageView).mas_offset(16); + }]; + [self.sendWishLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.bgImageView); + make.left.mas_equalTo(self.bgImageView).mas_offset(30); + make.top.mas_equalTo(self.sendNickLabel.mas_bottom).mas_offset(30); + }]; + [self.openButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.bgImageView); + make.width.height.mas_equalTo(107); + make.bottom.mas_equalTo(self.bgImageView).mas_offset(-75); + }]; +} + +- (void)setInAllPacketRoom:(BOOL)inAllPacketRoom { + _inAllPacketRoom = inAllPacketRoom; +} + +- (void)setRedPacketModel:(XPReceiveRedPacketModel *)redPacketModel { + _redPacketModel = redPacketModel; + self.sendAvatar.imageUrl = redPacketModel.sendUserAvatar; + self.sendWishLabel.text = redPacketModel.redEnvelopeMessage; + if (redPacketModel.redEnvelopeType == 1) { + self.sendNickLabel.text = redPacketModel.sendUserNick; + } else { + if (self.inAllPacketRoom) { + self.sendNickLabel.text = redPacketModel.sendUserNick; + } else { + NSString *nick = redPacketModel.sendUserNick; + if (redPacketModel.sendUserNick.length > 6) { + nick = [NSString stringWithFormat:@"%@...", [redPacketModel.sendUserNick substringToIndex:6]]; + } + NSString *roomTitle = redPacketModel.roomTitle; + if (redPacketModel.roomTitle.length > 6) { + roomTitle = [NSString stringWithFormat:@"%@...", [redPacketModel.roomTitle substringToIndex:6]]; + } + + NSMutableAttributedString *attribute = [[NSMutableAttributedString alloc] init]; + NSMutableAttributedString *roomAttr = [[NSMutableAttributedString alloc] initWithString:roomTitle attributes:@{NSForegroundColorAttributeName : UIColorFromRGB(0xFDCD00)}]; + NSMutableAttributedString *redPacketStr = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPReceiveRedPacketView0") attributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}]; + NSMutableAttributedString *nickAttr = [[NSMutableAttributedString alloc] initWithString:nick attributes:@{NSForegroundColorAttributeName : UIColorFromRGB(0xFDCD00)}]; + [attribute appendAttributedString:roomAttr]; + [attribute appendAttributedString:redPacketStr]; + [attribute appendAttributedString:nickAttr]; + self.sendNickLabel.attributedText = attribute; + + [self.openButton setImage:[UIImage imageNamed:@"redPacket_openRoom"] forState:UIControlStateNormal]; + [self.openButton mas_remakeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.bgImageView); + make.width.mas_equalTo(147); + make.height.mas_equalTo(67); + make.bottom.mas_equalTo(self.bgImageView).mas_offset(-97); + }]; + } + } +} + +- (void)setReceiveModel:(XPRedPacketModel *)receiveModel { + _receiveModel = receiveModel; + self.sendAvatar.imageUrl = receiveModel.userVO.avatar; + self.sendWishLabel.text = receiveModel.message; + self.sendNickLabel.text = receiveModel.userVO.nick; +} + +#pragma mark - action +- (void)onOpenButtonClick:(UIButton *)sender { + if (!self.redPacketModel) { + [self openRoomRedPacket:sender redEnvelopeId:self.receiveModel.redEnvelopeId]; + } else { + //判断是否为房内红包 + if (self.redPacketModel.redEnvelopeType == 1) { + //1、房内红包 + [self openRoomRedPacket:sender redEnvelopeId:self.redPacketModel.redEnvelopeId]; + } else { + //2、全服红包 + if (self.inAllPacketRoom) {//在全服红包的房间内,直接打开 + [self openRoomRedPacket:sender redEnvelopeId:self.redPacketModel.redEnvelopeId]; + } else {//不在房内,进入发红包的房间 + if ([XPRoomMiniManager shareManager].getRoomInfo) { + RoomInfoModel *roomInfo = [XPRoomMiniManager shareManager].getRoomInfo; + if (roomInfo.uid == self.redPacketModel.roomUid.integerValue) { + [XPRoomViewController openMiniRoom:[NSString stringWithFormat:@"%ld", roomInfo.uid] viewController:[[XCCurrentVCStackManager shareManager] getCurrentVC]]; + } else { + [XPRoomViewController openRoom:self.redPacketModel.roomUid viewController:[[XCCurrentVCStackManager shareManager] getCurrentVC]]; + } + } else { + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj isKindOfClass:[XPRoomViewController class]]) { + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController popToRootViewControllerAnimated:NO]; + XPRoomViewController * rooomVC = obj; + [rooomVC exitRoom]; + *stop = YES; + } + }]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [XPRoomViewController openRoom:self.redPacketModel.roomUid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; + }); + } + [self removeFromSuperview]; + } + } + } +} + +- (void)openRoomRedPacket:(UIButton *)sender redEnvelopeId:(NSString *)redEnvelopeId { + //1.1 开红包动画 + CABasicAnimation *transformAnima = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"]; + transformAnima.toValue = [NSNumber numberWithFloat:M_PI]; + transformAnima.duration = 0.3; + transformAnima.cumulative = NO; + transformAnima.autoreverses = YES; + transformAnima.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; + sender.layer.zPosition = 5; + sender.layer.zPosition = sender.layer.frame.size.width / 2.f; + transformAnima.repeatCount = 1; + [sender.layer addAnimation:transformAnima forKey:@"rotationAnimationY"]; + //1.2 网络请求 + [Api openRedPacket:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code != 200) { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + return;; + } + XPRedPacketResultModel *model = [XPRedPacketResultModel modelWithJSON:data.data]; + self.resultData = model; + [self showRedPacketResultViewWithResultData:model]; + // 如果打开红包成功 则记录当前红包状态 + NSArray *history = [[NSUserDefaults standardUserDefaults] objectForKey:kRedPacketHistory]; + NSMutableArray *tempArray = [NSMutableArray arrayWithArray:history]; + if (![tempArray containsObject:self.resultData.redEnvelopeVO.redEnvelopeId]) { + [tempArray addObject:self.resultData.redEnvelopeVO.redEnvelopeId]; + [[NSUserDefaults standardUserDefaults] setObject:tempArray forKey:kRedPacketHistory]; + [[NSUserDefaults standardUserDefaults] synchronize]; + } + + } redEnvelopeId:redEnvelopeId]; +} + +///显示红包结果 +- (void)showRedPacketResultViewWithResultData:(XPRedPacketResultModel *)resultData { + self.openButton.hidden = YES; + [self addSubview:self.getLabel]; + [self addSubview:self.openSituationLabel]; + [self addSubview:self.tableView]; + if (resultData.redEnvelopeState == RedPacketState_Success) {//抢到红包 + [self addSubview:self.diamondContentView]; + [self.diamondContentView addSubview:self.diamondImage]; + [self.diamondContentView addSubview:self.diamondLabel]; + [self.diamondContentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.bgImageView).mas_offset(30); + make.centerX.mas_equalTo(self); + make.height.mas_equalTo(27); + }]; + [self.diamondImage mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.diamondContentView); + make.centerY.mas_equalTo(self.diamondContentView); + make.width.height.mas_equalTo(24); + }]; + [self.diamondLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.diamondImage.mas_right).mas_offset(6); + make.centerY.mas_equalTo(self.diamondContentView); + make.right.top.mas_equalTo(self.diamondContentView); + }]; + [self.getLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self.diamondContentView.mas_bottom).mas_offset(10); + make.height.mas_equalTo(12); + }]; + self.diamondLabel.text = resultData.currentUserAmount; + self.getLabel.text = YMLocalizedString(@"XPReceiveRedPacketView1"); + } else if (resultData.redEnvelopeState == RedPacketState_Remain_Zero) {//抢光了 + self.getLabel.text = @"抢完了,下次早点来哦~"; + [self.getLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self.bgImageView).mas_offset(59); + make.height.mas_equalTo(12); + }]; + } + + [self.sendAvatar mas_remakeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.bgImageView).mas_offset(65); + make.top.mas_equalTo(self.bgImageView).mas_offset(128); + make.width.height.mas_equalTo(30); + }]; + self.sendAvatar.layer.borderWidth = 1; + self.sendAvatar.layer.cornerRadius = 15; + + [self.sendNickLabel mas_remakeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.sendAvatar); + make.height.mas_equalTo(18); + make.left.mas_equalTo(self.sendAvatar.mas_right).mas_offset(7); + }]; + [self.sendWishLabel mas_remakeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.bgImageView); + make.left.mas_equalTo(self.bgImageView).mas_offset(30); + make.top.mas_equalTo(self.sendNickLabel.mas_bottom).mas_offset(15); + }]; + [self.openSituationLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.sendWishLabel.mas_bottom).mas_offset(19); + make.height.mas_equalTo(10); + make.right.mas_equalTo(self.bgImageView).mas_offset(-38); + }]; + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.openSituationLabel.mas_bottom).mas_offset(5); + make.left.right.mas_equalTo(self.bgImageView).inset(20); + make.height.mas_equalTo(205); + }]; + self.bgImageView.image = [UIImage imageNamed:@"redPacket_result_bg"]; + self.sendAvatar.imageUrl = resultData.redEnvelopeVO.userVO.avatar; + NSString *nick = resultData.redEnvelopeVO.userVO.nick; + if (resultData.redEnvelopeVO.userVO.nick.length > 6) { + nick = [NSString stringWithFormat:@"%@...", [resultData.redEnvelopeVO.userVO.nick substringToIndex:6]]; + } + NSMutableAttributedString *attribute = [[NSMutableAttributedString alloc] init]; + NSMutableAttributedString *nickAttr = [[NSMutableAttributedString alloc] initWithString:nick attributes:@{NSForegroundColorAttributeName : UIColorFromRGB(0xFDCD00)}]; + NSMutableAttributedString *redPacketStr = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPReceiveRedPacketView3") attributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}]; + [attribute appendAttributedString:nickAttr]; + [attribute appendAttributedString:redPacketStr]; + self.sendNickLabel.attributedText = attribute; + self.sendWishLabel.text = resultData.redEnvelopeVO.message; + self.openSituationLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPReceiveRedPacketView4"), resultData.redEnvelopeVO.pickNum, resultData.redEnvelopeVO.totalNum]; + [self.tableView reloadData]; +} + +#pragma mark - tableviewDatasource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.resultData.redEnvelopeItemVOs.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ + XPOpenRedPacketCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPOpenRedPacketCell class]) forIndexPath:indexPath]; + cell.selectionStyle = UITableViewCellSelectionStyleNone; + XPRedPacketPersonReceiveModel *model = [self.resultData.redEnvelopeItemVOs safeObjectAtIndex1:indexPath.row]; + cell.model = model; + cell.backgroundColor = [UIColor clearColor]; + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 50; +} + +#pragma mark - action +- (void)onCloseButtonClick:(UIButton *)sender { + [self removeFromSuperview]; +} + +#pragma mark - getter +- (UIView *)alphaView { + if (!_alphaView) { + _alphaView = [[UIView alloc] init]; + _alphaView.backgroundColor = UIColorRGBAlpha(0x171213, 0.5); + } + return _alphaView; +} + +- (UIImageView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"redPacket_receive_bg"]]; + } + return _bgImageView; +} + +- (NetImageView *)sendAvatar { + if (!_sendAvatar) { + _sendAvatar = [[NetImageView alloc] init]; + _sendAvatar.layer.masksToBounds = YES; + _sendAvatar.layer.cornerRadius = 44; + _sendAvatar.layer.borderWidth = 2; + _sendAvatar.layer.borderColor = [UIColor whiteColor].CGColor; + } + return _sendAvatar; +} + +- (UIView *)sendNickLabel { + if (!_sendNickLabel) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:18]; + label.textColor = UIColorFromRGB(0xF6E36F); + label.textAlignment = NSTextAlignmentCenter; + _sendNickLabel = label; + } + return _sendNickLabel; +} + +- (UILabel *)sendWishLabel { + if (!_sendWishLabel) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + label.textColor = [UIColor whiteColor]; + label.numberOfLines = 0; + label.textAlignment = NSTextAlignmentCenter; + _sendWishLabel = label; + } + return _sendWishLabel; +} + +- (UIButton *)openButton { + if (!_openButton) { + _openButton = [[UIButton alloc] init]; + [_openButton setImage:[UIImage imageNamed:@"redPacket_open"] forState:UIControlStateNormal]; + [_openButton addTarget:self action:@selector(onOpenButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + } + return _openButton; +} + +- (UIButton *)closeBtn { + if (!_closeBtn) { + _closeBtn = [[UIButton alloc] init]; + [_closeBtn setImage:[UIImage imageNamed:@"common_close_white"] forState:UIControlStateNormal]; + [_closeBtn addTarget:self action:@selector(onCloseButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + } + return _closeBtn; +} + +- (UIView *)diamondContentView { + if (!_diamondContentView) { + _diamondContentView = [[UIView alloc] init]; + } + return _diamondContentView; +} + +- (UIImageView *)diamondImage { + if (!_diamondImage) { + _diamondImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"common_diamond"]]; + } + return _diamondImage; +} + +- (UILabel *)diamondLabel { + if (!_diamondLabel) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:36 weight:UIFontWeightMedium]; + label.textColor = UIColorFromRGB(0xE12D31); + _diamondLabel = label; + } + return _diamondLabel; +} + +- (UILabel *)getLabel { + if (!_getLabel) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:12]; + label.textColor = UIColorFromRGB(0xCF9380); + label.textAlignment = NSTextAlignmentCenter; + label.text = @"抢完了,下次早点来哦~"; + _getLabel = label; + } + return _getLabel; +} + +- (UILabel *)openSituationLabel { + if (!_openSituationLabel) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + label.textColor = UIColorRGBAlpha(0xffffff, 0.5); + _openSituationLabel = label; + } + return _openSituationLabel; +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] init]; + [_tableView registerClass:[XPOpenRedPacketCell class] forCellReuseIdentifier:NSStringFromClass([XPOpenRedPacketCell class])]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.layer.cornerRadius = 20; + _tableView.layer.masksToBounds = YES; + _tableView.backgroundColor = UIColorFromRGB(0xCC2247); + } + return _tableView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/XPRoomRedPacketPwdView.h b/YuMi/Modules/YMRoom/View/SendRedPacket/XPRoomRedPacketPwdView.h new file mode 100644 index 00000000..eb04cc64 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/XPRoomRedPacketPwdView.h @@ -0,0 +1,31 @@ +// +// YMRoomRedPacketPwdView.h +// YUMI +// +// Created by YUMI on 2022/8/31. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPRoomRedPacketPwdViewDelegate + +///完成输入密码 +- (void)xPRoomRedPacketPwdViewPwdComplete:(NSString *)pwd; + +//忘记密码 +- (void)xPRoomRedPacketPwdViewPwdForgetBtnClick; + +@end + +@interface XPRoomRedPacketPwdView : UIView + +@property (nonatomic, copy) NSString *diamonCount; + +@property (nonatomic, weak) id delegate; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/XPRoomRedPacketPwdView.m b/YuMi/Modules/YMRoom/View/SendRedPacket/XPRoomRedPacketPwdView.m new file mode 100644 index 00000000..0bd8aae5 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/XPRoomRedPacketPwdView.m @@ -0,0 +1,186 @@ +// +// YMRoomRedPacketPwdView.m +// YUMI +// +// Created by YUMI on 2022/8/31. +// + +#import "XPRoomRedPacketPwdView.h" +#import "LoginVerifCodeView.h" +#import "DJDKMIMOMColor.h" +#import +#import +#import "TTPopUp.h" + +@interface XPRoomRedPacketPwdView() + +@property (nonatomic, strong) UIView *diamondContentView; +@property (nonatomic, strong) UIButton *closeBtn; +@property (nonatomic, strong) UILabel *titleLabel; +@property (nonatomic, strong) UIImageView *diamondImage; +@property (nonatomic, strong) UILabel *diamondLabel; +@property (nonatomic, strong) LoginVerifCodeView *codeView; +@property (nonatomic, strong) UIButton *forgetBtn; + +@end + +@implementation XPRoomRedPacketPwdView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + [self initEvents]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; + self.layer.cornerRadius = 8; + self.layer.masksToBounds = YES; + [self addSubview:self.closeBtn]; + [self addSubview:self.titleLabel]; + [self addSubview:self.diamondContentView]; + [self.diamondContentView addSubview:self.diamondImage]; + [self.diamondContentView addSubview:self.diamondLabel]; + [self addSubview:self.codeView]; + [self addSubview:self.forgetBtn]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(360); + make.height.mas_equalTo(200); + }]; + [self.closeBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(16); + make.top.mas_equalTo(16); + make.height.width.mas_equalTo(30); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(20); + make.height.mas_equalTo(16); + }]; + [self.diamondContentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(16); + make.height.mas_equalTo(30); + }]; + [self.diamondImage mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(0); + make.centerY.mas_equalTo(self.diamondContentView); + make.width.height.mas_equalTo(24); + }]; + [self.diamondLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.diamondImage.mas_right).mas_offset(7.5); + make.centerY.mas_equalTo(self.diamondContentView); + make.right.mas_equalTo(0); + }]; + [self.codeView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self.diamondContentView.mas_bottom).mas_offset(16); + }]; + [self.forgetBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-12); + make.top.mas_equalTo(self.codeView.mas_bottom).mas_offset(8); + }]; + +} + +- (void)initEvents { + @weakify(self); + self.codeView.textFieldChangeBlock = ^(NSString * _Nonnull code) { + @strongify(self); + if (code.length == 6) { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomRedPacketPwdViewPwdComplete:)]) { + [self.delegate xPRoomRedPacketPwdViewPwdComplete:code]; + } + } + }; +} + +- (void)onCloseButtonClick:(UIButton *)sender { + [TTPopup dismiss]; +} + +- (void)onFogetButtonClick:(UIButton *)sender { + [TTPopup dismiss]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomRedPacketPwdViewPwdForgetBtnClick)]) { + [self.delegate xPRoomRedPacketPwdViewPwdForgetBtnClick]; + } +} + +- (void)setDiamonCount:(NSString *)diamonCount { + self.diamondLabel.text = diamonCount; +} + +- (UIView *)diamondContentView { + if (!_diamondContentView) { + _diamondContentView = [[UIView alloc] init]; + } + return _diamondContentView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + UILabel *label = [[UILabel alloc] init]; + label.text = YMLocalizedString(@"XPRoomRedPacketPwdView0"); + label.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + label.textColor = [DJDKMIMOMColor mainTextColor]; + _titleLabel = label; + } + return _titleLabel; +} + +- (UIImageView *)diamondImage { + if (!_diamondImage) { + _diamondImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"common_diamond"]]; + } + return _diamondImage; +} + +- (UILabel *)diamondLabel { + if (!_diamondLabel) { + UILabel *label = [[UILabel alloc] init]; + label.text = @""; + label.font = [UIFont systemFontOfSize:28 weight:UIFontWeightMedium]; + label.textColor = [DJDKMIMOMColor mainTextColor]; + _diamondLabel = label; + } + return _diamondLabel; +} + +- (UIButton *)closeBtn { + if (!_closeBtn) { + _closeBtn = [[UIButton alloc] init]; + [_closeBtn setImage:[UIImage imageNamed:@"send_redPacket_cancel"] forState:UIControlStateNormal]; + [_closeBtn addTarget:self action:@selector(onCloseButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + } + return _closeBtn; +} + +- (LoginVerifCodeView *)codeView { + if (!_codeView) { + _codeView= [[LoginVerifCodeView alloc] init]; + _codeView.number = 6; + _codeView.shouldBeSecurity = YES; + } + return _codeView; +} + +- (UIButton *)forgetBtn { + if (!_forgetBtn) { + _forgetBtn = [[UIButton alloc] init]; + [_forgetBtn addTarget:self action:@selector(onFogetButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + [_forgetBtn setTitle:@"忘记密码?" forState:UIControlStateNormal]; + [_forgetBtn setTitleColor:UIColorFromRGB(0xEA3B36) forState:UIControlStateNormal]; + _forgetBtn.font = [UIFont systemFontOfSize:13]; + } + return _forgetBtn; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/XPRoomSendRedPacketViewController.h b/YuMi/Modules/YMRoom/View/SendRedPacket/XPRoomSendRedPacketViewController.h new file mode 100644 index 00000000..644f8764 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/XPRoomSendRedPacketViewController.h @@ -0,0 +1,21 @@ +// +// YMRoomSendRedPacketViewController.h +// YUMI +// +// Created by YUMI on 2022/8/31. +// + +#import "MvpViewController.h" +#import "RoomHostDelegate.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomSendRedPacketViewController : MvpViewController + +- (instancetype)initWithDelegate:(id)delegate; + +@property (nonatomic, copy) NSString *roomUid; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/XPRoomSendRedPacketViewController.m b/YuMi/Modules/YMRoom/View/SendRedPacket/XPRoomSendRedPacketViewController.m new file mode 100644 index 00000000..c1569cfd --- /dev/null +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/XPRoomSendRedPacketViewController.m @@ -0,0 +1,734 @@ +// +// YMRoomSendRedPacketViewController.m +// YUMI +// +// Created by YUMI on 2022/8/31. +// + +#import "XPRoomSendRedPacketViewController.h" +///tool +#import +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "XNDJTDDLoadingTool.h" +#import "TTPopUp.h" +#import "YUMIHtmlUrl.h" +///Third +#import +#import "UIImage+Utils.h" +///view +#import "XPRoomRedPacketPwdView.h" +#import "XPMinePayPwdViewController.h" +#import "BaseNavigationController.h" +#import "XPMineRechargeViewController.h" +#import "XPIAPRechargeViewController.h" +#import "XPRoomHalfWebView.h" +#import "XPMineVerifIdentityViewController.h" +///P +#import "XPRoomRedPacketPresenter.h" +#import "XPRoomRedPacketProtocol.h" +///model +#import "WalletInfoModel.h" +#import "RoomInfoModel.h" +#import "UserInfoModel.h" + +@interface XPRoomSendRedPacketViewController () + +///host代理 +@property (nonatomic,weak) idhostDelegate; + +///上面点击的view +@property (nonatomic,strong) UIView *topTapView; +///下面点击的view +@property (nonatomic,strong) UIView *bottomTapView; +///中间内容的容器 +@property (nonatomic,strong) UIImageView *backView; +///厅内红包 +@property (nonatomic, strong) UIButton *roomButton; +///全服红包 +@property (nonatomic, strong) UIButton *allServerButton; +///选中类型指示器 +@property (nonatomic, strong) UIView *typeView; +///红包个数容器 +@property (nonatomic, strong) UIView *packetContentView; +///红包数量标题 +@property (nonatomic, strong) UILabel *packetTitle; +///红包数量输入框 +@property (nonatomic, strong) UITextField *packetTextField; +///红包数量单位 +@property (nonatomic, strong) UILabel *packetUnit; +///总钻石数容器 +@property (nonatomic, strong) UIView *diamondContentView; +///钻石数量标题 +@property (nonatomic, strong) UILabel *diamondTitle; +///钻石数量输入框 +@property (nonatomic, strong) UITextField *diamondTextField; +///钻石数量单位 +@property (nonatomic, strong) UILabel *diamondUnit; +///红包数量描述 +@property (nonatomic,strong) UILabel *countDesc; +///输入框背景 +@property (nonatomic, strong) UIView *descContentView; +///广播输入框 +@property (nonatomic,strong) UITextView *wishTextView; +///祝福语palceHolder +@property (nonatomic, strong) UILabel *wishPlaceHolderLabel; +///红包数量描述 +@property (nonatomic,strong) UILabel *wishCountLabel; +///祝福语描述 +@property (nonatomic, strong) UILabel *wishDesc; +///发布按钮 +@property (nonatomic, strong) UIButton *releaseButton; +///钻石图标 +@property (nonatomic, strong) UIImageView *diamondImage; +///钱包中钻石数量 +@property (nonatomic,strong) UILabel *walletDiamondLabel; +///充值按钮 +@property (nonatomic, strong) UIButton *rechargeButton; +///规则按钮 +@property (nonatomic, strong) UIButton *ruleButton; +///关闭按钮 +@property (nonatomic, strong) UIButton *closeButton; + +@end + +@implementation XPRoomSendRedPacketViewController + +- (instancetype)initWithDelegate:(id)delegate { + if (self = [super init]) { + self.hostDelegate = delegate; + } + return self; +} + +- (XPRoomRedPacketPresenter *)createPresenter { + return [[XPRoomRedPacketPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + self.view.backgroundColor = [UIColor clearColor]; + self.navigationController.view.backgroundColor = [UIColor clearColor]; + [self.navigationController setNavigationBarHidden:YES]; + [self initSubViews]; + [self initSubViewConstraints]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onTextViewChange:) name:UITextViewTextDidChangeNotification object:nil]; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [self.presenter getUserWalletInfo]; +} + +- (BOOL)isHiddenNavBar { + return YES; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.view.backgroundColor = [UIColor clearColor]; + [self.view addSubview:self.topTapView]; + [self.view addSubview:self.backView]; + [self.view addSubview:self.bottomTapView]; + + [self.backView addSubview:self.roomButton]; + [self.backView addSubview:self.allServerButton]; + [self.backView addSubview:self.typeView]; + + [self.backView addSubview:self.packetContentView]; + [self.packetContentView addSubview:self.packetTitle]; + [self.packetContentView addSubview:self.packetTextField]; + [self.packetContentView addSubview:self.packetUnit]; + + [self.backView addSubview:self.diamondContentView]; + [self.diamondContentView addSubview:self.diamondTitle]; + [self.diamondContentView addSubview:self.diamondTextField]; + [self.diamondContentView addSubview:self.diamondUnit]; + + [self.backView addSubview:self.countDesc]; + [self.backView addSubview:self.descContentView]; + [self.backView addSubview:self.wishTextView]; + [self.backView addSubview:self.wishPlaceHolderLabel]; + [self.backView addSubview:self.wishCountLabel]; + [self.backView addSubview:self.wishDesc]; + [self.backView addSubview:self.releaseButton]; + [self.backView addSubview:self.diamondImage]; + [self.backView addSubview:self.walletDiamondLabel]; + [self.backView addSubview:self.rechargeButton]; + [self.backView addSubview:self.ruleButton]; + [self.view addSubview:self.closeButton]; +} + +- (void)initSubViewConstraints { + [self.topTapView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.left.right.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.backView.mas_top); + }]; + + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(310); + make.height.mas_equalTo(450); + make.centerY.centerX.mas_equalTo(self.view); + }]; + + [self.bottomTapView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.top.mas_equalTo(self.backView.mas_bottom); + make.bottom.mas_equalTo(self.view); + }]; + + [self.roomButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.backView.mas_centerX).mas_offset(-17); + make.top.mas_equalTo(self.backView).offset(65); + make.height.mas_equalTo(18); + make.width.mas_equalTo(80); + }]; + + [self.allServerButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.roomButton); + make.height.mas_equalTo(18); + make.width.mas_equalTo(80); + make.left.mas_equalTo(self.backView.mas_centerX).mas_offset(17); + }]; + [self.typeView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.roomButton); + make.top.mas_equalTo(self.roomButton.mas_bottom).mas_offset(5); + make.width.mas_equalTo(8); + make.height.mas_equalTo(2); + }]; + + [self.packetContentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.roomButton.mas_bottom).mas_offset(32); + make.centerX.mas_equalTo(self.backView); + make.left.mas_equalTo(self.backView).mas_offset(30); + make.height.mas_equalTo(30); + }]; + [self.packetTitle mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.centerY.mas_equalTo(self.packetContentView); + make.left.mas_equalTo(15); + }]; + [self.packetTitle setContentHuggingPriority:UILayoutPriorityDefaultHigh forAxis:UILayoutConstraintAxisHorizontal]; + [self.packetTextField mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.centerY.mas_equalTo(self.packetContentView); + make.left.mas_equalTo(self.packetTitle.mas_right).mas_offset(4); + make.right.mas_equalTo(self.packetUnit.mas_left).mas_offset(-5); + }]; + [self.packetUnit mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.centerY.mas_equalTo(self.packetContentView); + make.right.mas_equalTo(self.packetContentView).mas_offset(-15); + make.width.mas_equalTo(12); + }]; + + [self.diamondContentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.packetContentView.mas_bottom).mas_offset(20); + make.centerX.mas_equalTo(self.backView); + make.left.mas_equalTo(self.packetContentView); + make.height.mas_equalTo(30); + }]; + [self.diamondTitle mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.centerY.mas_equalTo(self.diamondContentView); + make.left.mas_equalTo(15); + }]; + [self.diamondTitle setContentHuggingPriority:UILayoutPriorityDefaultHigh forAxis:UILayoutConstraintAxisHorizontal]; + [self.diamondTextField mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.centerY.mas_equalTo(self.diamondContentView); + make.left.mas_equalTo(self.diamondTitle.mas_right).mas_offset(4); + make.right.mas_equalTo(self.diamondUnit.mas_left).mas_offset(-5); + }]; + [self.diamondUnit mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.centerY.mas_equalTo(self.diamondContentView); + make.right.mas_equalTo(self.diamondContentView).mas_offset(-12); + make.width.mas_equalTo(26); + }]; + + [self.countDesc mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.backView); + make.top.mas_equalTo(self.diamondContentView.mas_bottom).mas_offset(5); + make.height.mas_equalTo(11); + }]; + [self.descContentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backView).inset(40); + make.top.mas_equalTo(self.countDesc.mas_bottom).mas_offset(27); + make.height.mas_equalTo(70); + }]; + [self.wishTextView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backView).inset(60); + make.centerY.mas_equalTo(self.descContentView); + make.height.mas_equalTo(17); + }]; + [self.wishPlaceHolderLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.centerY.mas_equalTo(self.descContentView); + }]; + [self.wishCountLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.bottom.mas_equalTo(self.descContentView).inset(5); + make.height.mas_equalTo(10); + }]; + [self.wishDesc mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.backView); + make.top.mas_equalTo(self.descContentView.mas_bottom).mas_offset(7); + make.height.mas_equalTo(10); + }]; + [self.releaseButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.wishDesc.mas_bottom).mas_offset(28); + make.centerX.mas_equalTo(self.backView); + make.width.mas_equalTo(150); + make.height.mas_equalTo(34); + }]; + + [self.diamondImage mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.releaseButton.mas_bottom).mas_offset(16); + make.left.mas_equalTo(self.backView).mas_offset(42);; + make.width.height.mas_equalTo(20); + }]; + + [self.walletDiamondLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.diamondImage.mas_right).mas_offset(5); + make.centerY.mas_equalTo(self.diamondImage); + }]; + [self.rechargeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.backView).mas_offset(-42); + make.centerY.mas_equalTo(self.diamondImage); + }]; + [self.ruleButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.backView).mas_offset(-23); + make.top.mas_equalTo(13); + make.width.height.mas_equalTo(30); + }]; + [self.closeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.view); + make.top.mas_equalTo(self.backView.mas_bottom).mas_offset(20); + make.width.height.mas_equalTo(35); + }]; +} + + +- (void)onReleaseButtonClick:(UIButton *)button { + //判断红包数量 + NSInteger packetCount = [self.packetTextField.text integerValue]; + if (packetCount > 100 || packetCount < 1) { + [self showErrorToast:@"红包数量不能小于1或大于100!"]; + return; + } + //判断钻石数量 + NSInteger diamonCount = [self.diamondTextField.text integerValue]; + if (diamonCount > 999999 || diamonCount < 100) { + [self showErrorToast:@"钻石数量不能小于100或大于999999!"]; + return; + } + if (diamonCount % 10 != 0) { + [self showErrorToast:@"钻石数必须为10的倍数!"]; + return; + } + [self.presenter getUserModel]; +} + +#pragma mark - XPRoomRedPacketProtocol +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + [self.view endEditing:YES]; +} + +///获取用户钱包信息成功 +- (void)getUserWalletInfo:(WalletInfoModel *)balanceInfo { + self.walletDiamondLabel.text = balanceInfo.diamonds; +} + +///获取用户信息成功 +- (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo { + if (userInfo.isBindPaymentPwd) { + XPRoomRedPacketPwdView *pwdView = [[XPRoomRedPacketPwdView alloc] init]; + pwdView.diamonCount = self.diamondTextField.text; + pwdView.delegate = self; + [TTPopup popupView:pwdView style:TTPopupStyleAlert]; + } else { + XPMinePayPwdViewController *vc = [[XPMinePayPwdViewController alloc] init]; + vc.userInfo = userInfo; + [self.navigationController pushViewController:vc animated:YES]; + } +} + +///发送红包成功 +- (void)sendRedPacketSuccess { + [self showSuccessToast:YMLocalizedString(@"XPRoomSendRedPacketViewController3")]; + [self dismissViewControllerAnimated:YES completion:nil]; +} + +#pragma mark - XPRoomRedPacketPwdViewDelegate +- (void)xPRoomRedPacketPwdViewPwdComplete:(NSString *)pwd { + [TTPopup dismiss]; + NSString *roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; + NSNumber *type = self.roomButton.isSelected ? @(1) : @(2); + NSString *message = self.wishTextView.text.length ? self.wishTextView.text : @"恭喜发财,大吉大利!"; + [self.presenter sendRedPacketWithNum:self.packetTextField.text goldNum:self.diamondTextField.text roomUid:roomUid type:type password:pwd message:message]; +} + +- (void)xPRoomRedPacketPwdViewPwdForgetBtnClick { + XPMineVerifIdentityViewController * VC = [[XPMineVerifIdentityViewController alloc] init]; + VC.userInfo = self.hostDelegate.getUserInfo; + [self.navigationController pushViewController:VC animated:YES]; +} + +#pragma mark - Event Response +- (void)dismissTapRecognizer:(UITapGestureRecognizer *)tap { + [self dismissViewControllerAnimated:YES completion:nil]; +} + +#pragma mark - private +- (void)onRoomButtonClick:(UIButton *)sender { + self.roomButton.selected = YES; + self.allServerButton.selected = NO; + [self.typeView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.roomButton); + make.top.mas_equalTo(self.roomButton.mas_bottom).mas_offset(4); + make.width.mas_equalTo(8); + make.height.mas_equalTo(2); + }]; + + NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc]initWithString:@"1-100" attributes:@{NSForegroundColorAttributeName: UIColorRGBAlpha(0xffffff, 0.3)}]; + self.packetTextField.attributedPlaceholder = attrString; + self.countDesc.text = YMLocalizedString(@"XPRoomSendRedPacketViewController5"); +} + +- (void)onAllServerButtonClick:(UIButton *)sender { + self.allServerButton.selected = YES; + self.roomButton.selected = NO; + [self.typeView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.allServerButton); + make.top.mas_equalTo(self.roomButton.mas_bottom).mas_offset(4); + make.width.mas_equalTo(8); + make.height.mas_equalTo(2); + }]; + NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc]initWithString:@"2-500" attributes:@{NSForegroundColorAttributeName: UIColorRGBAlpha(0xffffff, 0.3)}]; + self.packetTextField.attributedPlaceholder = attrString; + self.countDesc.text = YMLocalizedString(@"XPRoomSendRedPacketViewController6"); +} + +- (void)onRechargeButtonClick:(UIButton *)sender { +// XPMineRechargeViewController *rechargeVC = [[XPMineRechargeViewController alloc] init]; + XPIAPRechargeViewController * rechargeVC = [[XPIAPRechargeViewController alloc] init]; + [self.navigationController pushViewController:rechargeVC animated:YES]; +} + +- (void)onRuleButtonClick:(UIButton *)sender { + XPRoomHalfWebView * webView = [[XPRoomHalfWebView alloc] init]; + webView.url = URLWithType(kRedPacketRuleURL); + TTPopupService * config = [[TTPopupService alloc] init]; + config.contentView = webView; + [TTPopup popupWithConfig:config]; +} + +- (void)onCloseButtonClick:(UIButton *)sender { + [self dismissViewControllerAnimated:YES completion:nil]; +} + +#pragma mark - YYTextViewDelegate +- (void)textViewDidChange:(YYTextView *)textView { + NSInteger maxLength = 20; + if (textView.text.length > maxLength) { + textView.text = [textView.text substringToIndex:maxLength]; + } + self.wishCountLabel.text = [NSString stringWithFormat:@"%zd/%ld", textView.text.length, maxLength]; +} + +- (void)onTextViewChange:(NSNotification *)noti { + NSInteger maxLength = 20; + if (self.wishTextView.text.length > maxLength) { + self.wishTextView.text = [self.wishTextView.text substringToIndex:maxLength]; + } + if (self.wishTextView.text.length > 0) { + self.wishPlaceHolderLabel.hidden = YES; + [self.wishTextView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backView).inset(60); + make.centerY.mas_equalTo(self.descContentView); + make.height.mas_equalTo(42); + }]; + } else { + self.wishPlaceHolderLabel.hidden = NO; + [self.wishTextView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backView).inset(60); + make.centerY.mas_equalTo(self.descContentView); + make.height.mas_equalTo(17); + }]; + } + self.wishCountLabel.text = [NSString stringWithFormat:@"%zd/%ld", self.wishTextView.text.length, maxLength]; +} + +#pragma mark - Getters And Setters +- (UIView *)topTapView { + if (!_topTapView) { + _topTapView = [[UIView alloc] init]; + _topTapView.backgroundColor = [UIColor clearColor]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissTapRecognizer:)]; + [_topTapView addGestureRecognizer:tap]; + } + return _topTapView; +} +- (UIView *)bottomTapView { + if (!_bottomTapView) { + _bottomTapView = [[UIView alloc] init]; + _bottomTapView.backgroundColor = [UIColor clearColor]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissTapRecognizer:)]; + [_bottomTapView addGestureRecognizer:tap]; + } + return _bottomTapView; +} +- (UIImageView *)backView { + if (!_backView) { + _backView = [[UIImageView alloc] init]; + _backView.userInteractionEnabled = YES; + _backView.image = [UIImage imageNamed:@"send_redpacket_bg"]; + } + return _backView; +} + +- (UIButton *)roomButton { + if (!_roomButton) { + _roomButton = [[UIButton alloc] init]; + [_roomButton setTitle:YMLocalizedString(@"XPRoomSendRedPacketViewController7") forState:UIControlStateNormal]; + [_roomButton setTitleColor:UIColorRGBAlpha(0xffffff, 0.5) forState:UIControlStateNormal]; + [_roomButton setTitleColor:UIColorRGBAlpha(0xffffff, 1) forState:UIControlStateSelected]; + [_roomButton addTarget:self action:@selector(onRoomButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + _roomButton.selected = YES; + _roomButton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; + } + return _roomButton; +} + +- (UIButton *)allServerButton { + if (!_allServerButton) { + _allServerButton = [[UIButton alloc] init]; + [_allServerButton setTitle:YMLocalizedString(@"XPRoomSendRedPacketViewController8") forState:UIControlStateNormal]; + [_allServerButton setTitleColor:UIColorRGBAlpha(0xffffff, 0.5) forState:UIControlStateNormal]; + [_allServerButton setTitleColor:UIColorRGBAlpha(0xffffff, 1) forState:UIControlStateSelected]; + [_allServerButton addTarget:self action:@selector(onAllServerButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + _allServerButton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; + } + return _allServerButton; +} + +- (UIView *)typeView { + if (!_typeView) { + _typeView = [[UIView alloc] init]; + _typeView.backgroundColor = [UIColor whiteColor]; + _typeView.layer.cornerRadius = 1; + _typeView.layer.masksToBounds = YES; + } + return _typeView; +} + +- (UIView *)packetContentView { + if (!_packetContentView) { + _packetContentView = [[UIView alloc] init]; + _packetContentView.backgroundColor = UIColorFromRGB(0xCC2247); + _packetContentView.layer.cornerRadius = 15; + _packetContentView.layer.masksToBounds = YES; + } + return _packetContentView; +} + +- (UILabel *)packetTitle { + if (!_packetTitle) { + UILabel *label = [[UILabel alloc] init]; + label.text = YMLocalizedString(@"XPRoomSendRedPacketViewController9"); + label.font = [UIFont systemFontOfSize:12]; + label.textColor = UIColorRGBAlpha(0xffffff, 0.5); + _packetTitle = label; + } + return _packetTitle; +} + +- (UITextField *)packetTextField { + if (!_packetTextField) { + UITextField *label = [[UITextField alloc] init]; + label.keyboardType = UIKeyboardTypeNumberPad; + label.textAlignment = NSTextAlignmentRight; + NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc]initWithString:@"1-100" attributes:@{NSForegroundColorAttributeName: UIColorRGBAlpha(0xffffff, 0.5)}]; + label.attributedPlaceholder = attrString; + label.textColor = [UIColor whiteColor]; + label.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + _packetTextField = label; + } + return _packetTextField; +} + +- (UILabel *)packetUnit { + if (!_packetUnit) { + UILabel *label = [[UILabel alloc] init]; + label.text = YMLocalizedString(@"XPRoomSendRedPacketViewController10"); + label.font = [UIFont systemFontOfSize:12]; + label.textColor = UIColorRGBAlpha(0xffffff, 0.5); + _packetUnit = label; + } + return _packetUnit; +} + +- (UIView *)diamondContentView { + if (!_diamondContentView) { + _diamondContentView = [[UIView alloc] init]; + _diamondContentView.backgroundColor = UIColorFromRGB(0xCC2247); + _diamondContentView.layer.cornerRadius = 15; + _diamondContentView.layer.masksToBounds = YES; + } + return _diamondContentView; +} +- (UILabel *)diamondTitle { + if (!_diamondTitle) { + UILabel *label = [[UILabel alloc] init]; + label.text = YMLocalizedString(@"XPRoomSendRedPacketViewController11"); + label.font = [UIFont systemFontOfSize:12]; + label.textColor = UIColorRGBAlpha(0xffffff, 0.5); + _diamondTitle = label; + } + return _diamondTitle; +} + +- (UITextField *)diamondTextField { + if (!_diamondTextField) { + UITextField *label = [[UITextField alloc] init]; + label.keyboardType = UIKeyboardTypeNumberPad; + label.textAlignment = NSTextAlignmentRight; + NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc]initWithString:@"0" attributes:@{NSForegroundColorAttributeName: UIColorRGBAlpha(0xffffff, 0.5)}]; + label.attributedPlaceholder = attrString; + label.textColor = [UIColor whiteColor]; + label.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + _diamondTextField = label; + } + return _diamondTextField; +} + +- (UILabel *)diamondUnit { + if (!_diamondUnit) { + UILabel *label = [[UILabel alloc] init]; + label.text = YMLocalizedString(@"XPRoomSendRedPacketViewController12"); + label.font = [UIFont systemFontOfSize:12]; + label.textColor = UIColorRGBAlpha(0xffffff, 0.5); + _diamondUnit = label; + } + return _diamondUnit; +} + +- (UILabel *)countDesc { + if (!_countDesc) { + UILabel *label = [[UILabel alloc] init]; + label.text = YMLocalizedString(@"XPRoomSendRedPacketViewController13"); + label.font = [UIFont systemFontOfSize:11]; + label.textColor = [UIColor whiteColor]; + _countDesc = label; + } + return _countDesc; +} + +- (UIView *)descContentView { + if (!_descContentView) { + _descContentView = [[UIView alloc] init]; + _descContentView.backgroundColor = UIColorRGBAlpha(0xCC2247, 0.6); + _descContentView.layer.cornerRadius = 8; + _descContentView.layer.masksToBounds = YES; + } + return _descContentView; +} + +- (UITextView *)wishTextView { + if (!_wishTextView) { + _wishTextView = [[UITextView alloc] init]; + _wishTextView.layer.cornerRadius = 8; + _wishTextView.layer.masksToBounds = YES; + _wishTextView.backgroundColor = [UIColor clearColor]; + _wishTextView.showsVerticalScrollIndicator = NO; + _wishTextView.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + _wishTextView.textColor = [UIColor whiteColor]; + _wishTextView.textAlignment = NSTextAlignmentCenter; + } + return _wishTextView; +} + +- (UIButton *)releaseButton { + if (!_releaseButton) { + _releaseButton = [[UIButton alloc] init]; + [_releaseButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_releaseButton setBackgroundImage:[UIImage imageNamed:@"send_redPacket_button"] forState:UIControlStateNormal]; + [_releaseButton addTarget:self action:@selector(onReleaseButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + } + return _releaseButton; +} +- (UILabel *)wishDesc { + if (!_wishDesc) { + _wishDesc = [[UILabel alloc] init]; + _wishDesc.text = YMLocalizedString(@"XPRoomSendRedPacketViewController14"); + _wishDesc.font = [UIFont systemFontOfSize:10]; + _wishDesc.textColor = UIColorRGBAlpha(0xffffff, 0.5); + } + return _wishDesc; +} + + +- (UILabel *)wishCountLabel { + if (!_wishCountLabel) { + UILabel *label = [[UILabel alloc] init]; + label.text = @"0/20"; + label.font = [UIFont systemFontOfSize:10]; + label.textColor = UIColorFromRGB(0xFF8C9D); + _wishCountLabel = label; + } + return _wishCountLabel; +} + +- (UIImageView *)diamondImage { + if (!_diamondImage) { + _diamondImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"common_diamond"]]; + } + return _diamondImage; +} + +- (UILabel *)walletDiamondLabel { + if (!_walletDiamondLabel) { + _walletDiamondLabel = [[UILabel alloc] init]; + _walletDiamondLabel.textColor = [UIColor whiteColor]; + _walletDiamondLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + } + return _walletDiamondLabel; +} + +- (UILabel *)wishPlaceHolderLabel { + if (!_wishPlaceHolderLabel) { + UILabel *label = [[UILabel alloc] init]; + label.text = @"恭喜发财,大吉大利!"; + label.font = [UIFont systemFontOfSize:16]; + label.textColor = UIColorRGBAlpha(0xffffff, 0.5); + _wishPlaceHolderLabel = label; + } + return _wishPlaceHolderLabel; +} + +- (UIButton *)rechargeButton { + if (!_rechargeButton) { + _rechargeButton = [[UIButton alloc] init]; + [_rechargeButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_rechargeButton addTarget:self action:@selector(onRechargeButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + NSMutableAttributedString *title = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPRoomSendRedPacketViewController16")]; + NSRange titleRange = {0,[title length]}; + [title addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:titleRange]; + [_rechargeButton setAttributedTitle:title forState:UIControlStateNormal]; + _rechargeButton.titleLabel.font = [UIFont systemFontOfSize:13]; + } + return _rechargeButton; +} + +- (UIButton *)ruleButton { + if (!_ruleButton) { + _ruleButton = [[UIButton alloc] init]; + [_ruleButton addTarget:self action:@selector(onRuleButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + [_ruleButton setImage:[UIImage imageNamed:@"send_redPacket_help"] forState:UIControlStateNormal]; + } + return _ruleButton; +} + +- (UIButton *)closeButton { + if (!_closeButton) { + _closeButton = [[UIButton alloc] init]; + [_closeButton addTarget:self action:@selector(onCloseButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + [_closeButton setImage:[UIImage imageNamed:@"common_close_white"] forState:UIControlStateNormal]; + } + return _closeButton; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/YUMIAchieveDeficitSheatheRegard.h b/YuMi/Modules/YMRoom/View/SendRedPacket/YUMIAchieveDeficitSheatheRegard.h deleted file mode 100644 index 4eedb2dc..00000000 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/YUMIAchieveDeficitSheatheRegard.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YMReceiveRedPacketView.h -// YUMI -// -// Created by YUMI on 2022/9/2. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class YUMIAchieveDeficitSheatheMatrix, YUMIDeficitSheatheMatrix; -@interface YUMIAchieveDeficitSheatheRegard : UIView - -@property (nonatomic, assign) BOOL inEntiretySheatheChamber; -@property (nonatomic, strong) YUMIAchieveDeficitSheatheMatrix *deficitSheatheMatrix; - -@property (nonatomic, strong) YUMIDeficitSheatheMatrix *achieveMatrix; - -@property (nonatomic, strong) UIView *transparencyRegard; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/YUMIAchieveDeficitSheatheRegard.m b/YuMi/Modules/YMRoom/View/SendRedPacket/YUMIAchieveDeficitSheatheRegard.m deleted file mode 100644 index d6c1b699..00000000 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/YUMIAchieveDeficitSheatheRegard.m +++ /dev/null @@ -1,465 +0,0 @@ -// -// YMReceiveRedPacketView.m -// YUMI -// -// Created by YUMI on 2022/9/2. -// - -#import "YUMIAchieveDeficitSheatheRegard.h" -#import "YUMIAchieveDeficitSheatheMatrix.h" -#import "NSObject+MJExtension.h" -#import "DJDKMIMOMColor.h" -#import -#import "NetIndicateRegard.h" -#import "MKJPopup.h" -#import "Api+RedPacket.h" -#import "XNDJTBWGLoadingTool.h" -#import "YUMIDeficitSheatheConsequentMatrix.h" -#import "YUMIUnfoildDeficitSheatheElement.h" -#import "XCCurrentVCStackExecutive.h" -#import "YUMIChamberRegardGovernancer.h" -#import "ChamberHostRepresendtation.h" -#import "YUMIChamberMiniExecutive.h" -#import "ChamberAbstractMatrix.h" -#import "YUMIDeficitSheatheMatrix.h" -#import "YUMIConstant.h" -#import "NSArray+Safe.h" - -@interface YUMIAchieveDeficitSheatheRegard() - -@property (nonatomic, strong) YUMIDeficitSheatheConsequentMatrix *resultData; - -@property (nonatomic, strong) UIImageView *backgroundIndicateRegard; -@property (nonatomic, strong) NetIndicateRegard *dischargeIntelligenceportrait; -@property (nonatomic, strong) UILabel *dischargeMonicerSequencignation; -@property (nonatomic, strong) UILabel *dischargeSequencireSequencignation; -@property (nonatomic, strong) UIButton *unfoildBtuton; -@property (nonatomic, strong) UIButton *concludeBtuton; -@property (nonatomic, strong) UIView *bWSttawberrySatisfperformanceRegard; -@property (nonatomic, strong) UIImageView *bWSttawberryIndicate; -@property (nonatomic, strong) UILabel *bWSttawberrySequencignation; -@property (nonatomic, strong) UILabel *acquireSequencignation; -@property (nonatomic, strong) UILabel *unfoildSituationSequencignation; -@property (nonatomic, strong) UITableView *tableView; - -@end - -@implementation YUMIAchieveDeficitSheatheRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.transparencyRegard]; - [self addSubview:self.backgroundIndicateRegard]; - [self addSubview:self.dischargeIntelligenceportrait]; - [self addSubview:self.dischargeMonicerSequencignation]; - [self addSubview:self.dischargeSequencireSequencignation]; - [self addSubview:self.unfoildBtuton]; - [self addSubview:self.concludeBtuton]; -} - -- (void)initChildLyRestrictions { - [self.transparencyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(0); - }]; - [self.backgroundIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(310); - make.height.mas_equalTo(450); - make.centerX.centerY.mas_equalTo(self); - }]; - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.backgroundIndicateRegard.mas_bottom).mas_offset(25); - make.height.width.mas_equalTo(35); - make.centerX.mas_equalTo(self.backgroundIndicateRegard); - }]; - - [self.dischargeIntelligenceportrait mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.backgroundIndicateRegard); - make.top.mas_equalTo(self.backgroundIndicateRegard).mas_offset(71); - make.width.height.mas_equalTo(88); - }]; - [self.dischargeMonicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.backgroundIndicateRegard); - make.top.mas_equalTo(self.dischargeIntelligenceportrait.mas_bottom).mas_offset(9); - make.height.mas_equalTo(18); - make.left.mas_equalTo(self.backgroundIndicateRegard).mas_offset(16); - }]; - [self.dischargeSequencireSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.backgroundIndicateRegard); - make.left.mas_equalTo(self.backgroundIndicateRegard).mas_offset(30); - make.top.mas_equalTo(self.dischargeMonicerSequencignation.mas_bottom).mas_offset(30); - }]; - [self.unfoildBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.backgroundIndicateRegard); - make.width.height.mas_equalTo(107); - make.bottom.mas_equalTo(self.backgroundIndicateRegard).mas_offset(-75); - }]; -} - -- (void)setInEntiretySheatheChamber:(BOOL)inEntiretySheatheChamber { - _inEntiretySheatheChamber = inEntiretySheatheChamber; -} - -- (void)setDeficitSheatheMatrix:(YUMIAchieveDeficitSheatheMatrix *)deficitSheatheMatrix { - _deficitSheatheMatrix = deficitSheatheMatrix; - self.dischargeIntelligenceportrait.imageUrl = deficitSheatheMatrix.sendUserAvatar; - self.dischargeSequencireSequencignation.text = deficitSheatheMatrix.redEnvelopeMessage; - if (deficitSheatheMatrix.redEnvelopeType == 1) { - self.dischargeMonicerSequencignation.text = deficitSheatheMatrix.sendUserNick; - } else { - if (self.inEntiretySheatheChamber) { - self.dischargeMonicerSequencignation.text = deficitSheatheMatrix.sendUserNick; - } else { - NSString *nick = deficitSheatheMatrix.sendUserNick; - if (deficitSheatheMatrix.sendUserNick.length > 6) { - nick = [NSString stringWithFormat:@"%@...", [deficitSheatheMatrix.sendUserNick substringToIndex:6]]; - } - NSString *roomTitle = deficitSheatheMatrix.roomTitle; - if (deficitSheatheMatrix.roomTitle.length > 6) { - roomTitle = [NSString stringWithFormat:@"%@...", [deficitSheatheMatrix.roomTitle substringToIndex:6]]; - } - - NSMutableAttributedString *attribute = [[NSMutableAttributedString alloc] init]; - NSMutableAttributedString *roomAttr = [[NSMutableAttributedString alloc] initWithString:roomTitle attributes:@{NSForegroundColorAttributeName : UIColorFromRGB(0xFDCD00)}]; - NSMutableAttributedString *redPacketStr = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"YUMI_Receive_Red_Packet_View_0") attributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}]; - NSMutableAttributedString *nickAttr = [[NSMutableAttributedString alloc] initWithString:nick attributes:@{NSForegroundColorAttributeName : UIColorFromRGB(0xFDCD00)}]; - [attribute appendAttributedString:roomAttr]; - [attribute appendAttributedString:redPacketStr]; - [attribute appendAttributedString:nickAttr]; - self.dischargeMonicerSequencignation.attributedText = attribute; - - [self.unfoildBtuton setImage:[UIImage imageNamed:@"yumi_redPacket_openRoom"] forState:UIControlStateNormal]; - [self.unfoildBtuton mas_remakeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.backgroundIndicateRegard); - make.width.mas_equalTo(147); - make.height.mas_equalTo(67); - make.bottom.mas_equalTo(self.backgroundIndicateRegard).mas_offset(-97); - }]; - } - } -} - -- (void)setAchieveMatrix:(YUMIDeficitSheatheMatrix *)achieveMatrix { - _achieveMatrix = achieveMatrix; - self.dischargeIntelligenceportrait.imageUrl = achieveMatrix.userVO.avatar; - self.dischargeSequencireSequencignation.text = achieveMatrix.message; - self.dischargeMonicerSequencignation.text = achieveMatrix.userVO.nick; -} - -#pragma mark - action -- (void)onUnfoildBtutonTicktack:(UIButton *)sender { - if (!self.deficitSheatheMatrix) { - [self unfoildChamberDeficitShetowardshe:sender redEnvelopeId:self.achieveMatrix.redEnvelopeId]; - } else { - - if (self.deficitSheatheMatrix.redEnvelopeType == 1) { - - [self unfoildChamberDeficitShetowardshe:sender redEnvelopeId:self.deficitSheatheMatrix.redEnvelopeId]; - } else { - - if (self.inEntiretySheatheChamber) { - [self unfoildChamberDeficitShetowardshe:sender redEnvelopeId:self.deficitSheatheMatrix.redEnvelopeId]; - } else { - if ([YUMIChamberMiniExecutive shareManager].acquireChamberAbstract) { - ChamberAbstractMatrix *roomInfo = [YUMIChamberMiniExecutive shareManager].acquireChamberAbstract; - if (roomInfo.uid == self.deficitSheatheMatrix.roomUid.integerValue) { - [YUMIChamberRegardGovernancer unfoildRoadliceChamber:[NSString stringWithFormat:@"%ld", roomInfo.uid] viewController:[[XCCurrentVCStackExecutive shareManager] getCurrentVC]]; - } else { - [YUMIChamberRegardGovernancer unfoildChamber:self.deficitSheatheMatrix.roomUid viewController:[[XCCurrentVCStackExecutive shareManager] getCurrentVC]]; - } - } else { - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj isKindOfClass:[YUMIChamberRegardGovernancer class]]) { - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController popToRootViewControllerAnimated:NO]; - YUMIChamberRegardGovernancer * rooomVC = obj; - [rooomVC exitRoom]; - *stop = YES; - } - }]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [YUMIChamberRegardGovernancer unfoildChamber:self.deficitSheatheMatrix.roomUid viewController:[XCCurrentVCStackExecutive shareManager].getCurrentVC]; - }); - } - [self removeFromSuperview]; - } - } - } -} - -- (void)unfoildChamberDeficitShetowardshe:(UIButton *)sender redEnvelopeId:(NSString *)redEnvelopeId { - - CABasicAnimation *transformAnima = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"]; - transformAnima.toValue = [NSNumber numberWithFloat:M_PI]; - transformAnima.duration = 0.3; - transformAnima.cumulative = NO; - transformAnima.autoreverses = YES; - transformAnima.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; - sender.layer.zPosition = 5; - sender.layer.zPosition = sender.layer.frame.size.width / 2.f; - transformAnima.repeatCount = 1; - [sender.layer addAnimation:transformAnima forKey:@"rotationAnimationY"]; - - [Api unfoildDeficitShetowardshe:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code != 200) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - return;; - } - YUMIDeficitSheatheConsequentMatrix *model = [YUMIDeficitSheatheConsequentMatrix mtowardsrixAboutJSON:data.data]; - self.resultData = model; - [self EvidenceDeficitShetowardsheConsequentRegardAboutConsequentTowardsoloudspeaker:model]; - - NSArray *history = [[NSUserDefaults standardUserDefaults] objectForKey:kRedPacketHistory]; - NSMutableArray *tempArray = [NSMutableArray arrayWithArray:history]; - if (![tempArray containsObject:self.resultData.redEnvelopeVO.redEnvelopeId]) { - [tempArray addObject:self.resultData.redEnvelopeVO.redEnvelopeId]; - [[NSUserDefaults standardUserDefaults] setObject:tempArray forKey:kRedPacketHistory]; - [[NSUserDefaults standardUserDefaults] synchronize]; - } - - } redEnvelopeId:redEnvelopeId]; -} - -- (void)EvidenceDeficitShetowardsheConsequentRegardAboutConsequentTowardsoloudspeaker:(YUMIDeficitSheatheConsequentMatrix *)resultData { - self.unfoildBtuton.hidden = YES; - [self addSubview:self.acquireSequencignation]; - [self addSubview:self.unfoildSituationSequencignation]; - [self addSubview:self.tableView]; - if (resultData.redEnvelopeState == RedPacketState_Success) { - [self addSubview:self.bWSttawberrySatisfperformanceRegard]; - [self.bWSttawberrySatisfperformanceRegard addSubview:self.bWSttawberryIndicate]; - [self.bWSttawberrySatisfperformanceRegard addSubview:self.bWSttawberrySequencignation]; - [self.bWSttawberrySatisfperformanceRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.backgroundIndicateRegard).mas_offset(30); - make.centerX.mas_equalTo(self); - make.height.mas_equalTo(27); - }]; - [self.bWSttawberryIndicate mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.bWSttawberrySatisfperformanceRegard); - make.centerY.mas_equalTo(self.bWSttawberrySatisfperformanceRegard); - make.width.height.mas_equalTo(24); - }]; - [self.bWSttawberrySequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.bWSttawberryIndicate.mas_right).mas_offset(6); - make.centerY.mas_equalTo(self.bWSttawberrySatisfperformanceRegard); - make.right.top.mas_equalTo(self.bWSttawberrySatisfperformanceRegard); - }]; - [self.acquireSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self.bWSttawberrySatisfperformanceRegard.mas_bottom).mas_offset(10); - make.height.mas_equalTo(12); - }]; - self.bWSttawberrySequencignation.text = resultData.currentUserAmount; - self.acquireSequencignation.text = YMLocalizedString(@"YUMI_Receive_Red_Packet_View_1"); - } else if (resultData.redEnvelopeState == RedPacketState_Remain_Zero) { - self.acquireSequencignation.text = @"抢完了,下次早点来哦~"; - [self.acquireSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self.backgroundIndicateRegard).mas_offset(59); - make.height.mas_equalTo(12); - }]; - } - - [self.dischargeIntelligenceportrait mas_remakeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.backgroundIndicateRegard).mas_offset(65); - make.top.mas_equalTo(self.backgroundIndicateRegard).mas_offset(128); - make.width.height.mas_equalTo(30); - }]; - self.dischargeIntelligenceportrait.layer.borderWidth = 1; - self.dischargeIntelligenceportrait.layer.cornerRadius = 15; - - [self.dischargeMonicerSequencignation mas_remakeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.dischargeIntelligenceportrait); - make.height.mas_equalTo(18); - make.left.mas_equalTo(self.dischargeIntelligenceportrait.mas_right).mas_offset(7); - }]; - [self.dischargeSequencireSequencignation mas_remakeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.backgroundIndicateRegard); - make.left.mas_equalTo(self.backgroundIndicateRegard).mas_offset(30); - make.top.mas_equalTo(self.dischargeMonicerSequencignation.mas_bottom).mas_offset(15); - }]; - [self.unfoildSituationSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.dischargeSequencireSequencignation.mas_bottom).mas_offset(19); - make.height.mas_equalTo(10); - make.right.mas_equalTo(self.backgroundIndicateRegard).mas_offset(-38); - }]; - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.unfoildSituationSequencignation.mas_bottom).mas_offset(5); - make.left.right.mas_equalTo(self.backgroundIndicateRegard).inset(20); - make.height.mas_equalTo(205); - }]; - self.backgroundIndicateRegard.image = [UIImage imageNamed:@"yumi_redPacket_result_background"]; - self.dischargeIntelligenceportrait.imageUrl = resultData.redEnvelopeVO.userVO.avatar; - NSString *nick = resultData.redEnvelopeVO.userVO.nick; - if (resultData.redEnvelopeVO.userVO.nick.length > 6) { - nick = [NSString stringWithFormat:@"%@...", [resultData.redEnvelopeVO.userVO.nick substringToIndex:6]]; - } - NSMutableAttributedString *attribute = [[NSMutableAttributedString alloc] init]; - NSMutableAttributedString *nickAttr = [[NSMutableAttributedString alloc] initWithString:nick attributes:@{NSForegroundColorAttributeName : UIColorFromRGB(0xFDCD00)}]; - NSMutableAttributedString *redPacketStr = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"YUMI_Receive_Red_Packet_View_3") attributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}]; - [attribute appendAttributedString:nickAttr]; - [attribute appendAttributedString:redPacketStr]; - self.dischargeMonicerSequencignation.attributedText = attribute; - self.dischargeSequencireSequencignation.text = resultData.redEnvelopeVO.message; - self.unfoildSituationSequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Receive_Red_Packet_View_4"), resultData.redEnvelopeVO.pickNum, resultData.redEnvelopeVO.totalNum]; - [self.tableView reloadData]; -} - -#pragma mark - tableviewDatasource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.resultData.redEnvelopeItemVOs.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ - YUMIUnfoildDeficitSheatheElement *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIUnfoildDeficitSheatheElement class]) forIndexPath:indexPath]; - cell.selectionStyle = UITableViewCellSelectionStyleNone; - YUMIDeficitSheatheFeatureAchieveMatrix *model = [self.resultData.redEnvelopeItemVOs secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.model = model; - cell.backgroundColor = [UIColor clearColor]; - return cell; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 50; -} - -#pragma mark - action -- (void)onConcludeBtutonTicktack:(UIButton *)sender { - [self removeFromSuperview]; -} - -#pragma mark - getter -- (UIView *)transparencyRegard { - if (!_transparencyRegard) { - _transparencyRegard = [[UIView alloc] init]; - _transparencyRegard.backgroundColor = UIColorRGBAlpha(0x171213, 0.5); - } - return _transparencyRegard; -} - -- (UIImageView *)backgroundIndicateRegard { - if (!_backgroundIndicateRegard) { - _backgroundIndicateRegard = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yumi_redPacket_receive_background"]]; - } - return _backgroundIndicateRegard; -} - -- (NetIndicateRegard *)dischargeIntelligenceportrait { - if (!_dischargeIntelligenceportrait) { - _dischargeIntelligenceportrait = [[NetIndicateRegard alloc] init]; - _dischargeIntelligenceportrait.layer.masksToBounds = YES; - _dischargeIntelligenceportrait.layer.cornerRadius = 44; - _dischargeIntelligenceportrait.layer.borderWidth = 2; - _dischargeIntelligenceportrait.layer.borderColor = [UIColor whiteColor].CGColor; - } - return _dischargeIntelligenceportrait; -} - -- (UIView *)dischargeMonicerSequencignation { - if (!_dischargeMonicerSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:18]; - label.textColor = UIColorFromRGB(0xF6E36F); - label.textAlignment = NSTextAlignmentCenter; - _dischargeMonicerSequencignation = label; - } - return _dischargeMonicerSequencignation; -} - -- (UILabel *)dischargeSequencireSequencignation { - if (!_dischargeSequencireSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; - label.textColor = [UIColor whiteColor]; - label.numberOfLines = 0; - label.textAlignment = NSTextAlignmentCenter; - _dischargeSequencireSequencignation = label; - } - return _dischargeSequencireSequencignation; -} - -- (UIButton *)unfoildBtuton { - if (!_unfoildBtuton) { - _unfoildBtuton = [[UIButton alloc] init]; - [_unfoildBtuton setImage:[UIImage imageNamed:@"yumi_redPacket_open"] forState:UIControlStateNormal]; - [_unfoildBtuton addTarget:self action:@selector(onUnfoildBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - } - return _unfoildBtuton; -} - -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [[UIButton alloc] init]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_same_close_white"] forState:UIControlStateNormal]; - [_concludeBtuton addTarget:self action:@selector(onConcludeBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - } - return _concludeBtuton; -} - -- (UIView *)bWSttawberrySatisfperformanceRegard { - if (!_bWSttawberrySatisfperformanceRegard) { - _bWSttawberrySatisfperformanceRegard = [[UIView alloc] init]; - } - return _bWSttawberrySatisfperformanceRegard; -} - -- (UIImageView *)bWSttawberryIndicate { - if (!_bWSttawberryIndicate) { - _bWSttawberryIndicate = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yumi_same_diamond"]]; - } - return _bWSttawberryIndicate; -} - -- (UILabel *)bWSttawberrySequencignation { - if (!_bWSttawberrySequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:36 weight:UIFontWeightMedium]; - label.textColor = UIColorFromRGB(0xE12D31); - _bWSttawberrySequencignation = label; - } - return _bWSttawberrySequencignation; -} - -- (UILabel *)acquireSequencignation { - if (!_acquireSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:12]; - label.textColor = UIColorFromRGB(0xCF9380); - label.textAlignment = NSTextAlignmentCenter; - label.text = @"抢完了,下次早点来哦~"; - _acquireSequencignation = label; - } - return _acquireSequencignation; -} - -- (UILabel *)unfoildSituationSequencignation { - if (!_unfoildSituationSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - label.textColor = UIColorRGBAlpha(0xffffff, 0.5); - _unfoildSituationSequencignation = label; - } - return _unfoildSituationSequencignation; -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] init]; - [_tableView registerClass:[YUMIUnfoildDeficitSheatheElement class] forCellReuseIdentifier:NSStringFromClass([YUMIUnfoildDeficitSheatheElement class])]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.layer.cornerRadius = 20; - _tableView.layer.masksToBounds = YES; - _tableView.backgroundColor = UIColorFromRGB(0xCC2247); - } - return _tableView; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/YUMIChamberDeficitSheathePwordRegard.h b/YuMi/Modules/YMRoom/View/SendRedPacket/YUMIChamberDeficitSheathePwordRegard.h deleted file mode 100644 index a9abc9a7..00000000 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/YUMIChamberDeficitSheathePwordRegard.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// YMRoomRedPacketPwdView.h -// YUMI -// -// Created by YUMI on 2022/8/31. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCChamberRedPacketPwordRegardRepresendtation - -- (void)yUMIChamberDeficitShetowardshePwordRegardPwordAccomplish:(NSString *)pwd; - -- (void)yUMIChamberDeficitShetowardshePwordRegardPwordInthecaseofacquireBtutonTicktack; - -@end - -@interface YUMIChamberDeficitSheathePwordRegard : UIView - -@property (nonatomic, copy) NSString *diamonComputation; - -@property (nonatomic, weak) id delegate; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/YUMIChamberDeficitSheathePwordRegard.m b/YuMi/Modules/YMRoom/View/SendRedPacket/YUMIChamberDeficitSheathePwordRegard.m deleted file mode 100644 index 7090d256..00000000 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/YUMIChamberDeficitSheathePwordRegard.m +++ /dev/null @@ -1,186 +0,0 @@ -// -// YMRoomRedPacketPwdView.m -// YUMI -// -// Created by YUMI on 2022/8/31. -// - -#import "YUMIChamberDeficitSheathePwordRegard.h" -#import "SurmountValidationCodeRegard.h" -#import "DJDKMIMOMColor.h" -#import -#import -#import "MKJPopup.h" - -@interface YUMIChamberDeficitSheathePwordRegard() - -@property (nonatomic, strong) UIView *bWSttawberrySatisfperformanceRegard; -@property (nonatomic, strong) UIButton *concludeBtuton; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UIImageView *bWSttawberryIndicate; -@property (nonatomic, strong) UILabel *bWSttawberrySequencignation; -@property (nonatomic, strong) SurmountValidationCodeRegard *cryptogramRegard; -@property (nonatomic, strong) UIButton *forgetBtuton; - -@end - -@implementation YUMIChamberDeficitSheathePwordRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - [self initOccurrences]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]; - self.layer.cornerRadius = 8; - self.layer.masksToBounds = YES; - [self addSubview:self.concludeBtuton]; - [self addSubview:self.titleLabel]; - [self addSubview:self.bWSttawberrySatisfperformanceRegard]; - [self.bWSttawberrySatisfperformanceRegard addSubview:self.bWSttawberryIndicate]; - [self.bWSttawberrySatisfperformanceRegard addSubview:self.bWSttawberrySequencignation]; - [self addSubview:self.cryptogramRegard]; - [self addSubview:self.forgetBtuton]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(360); - make.height.mas_equalTo(200); - }]; - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(16); - make.top.mas_equalTo(16); - make.height.width.mas_equalTo(30); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(20); - make.height.mas_equalTo(16); - }]; - [self.bWSttawberrySatisfperformanceRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(16); - make.height.mas_equalTo(30); - }]; - [self.bWSttawberryIndicate mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(0); - make.centerY.mas_equalTo(self.bWSttawberrySatisfperformanceRegard); - make.width.height.mas_equalTo(24); - }]; - [self.bWSttawberrySequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.bWSttawberryIndicate.mas_right).mas_offset(7.5); - make.centerY.mas_equalTo(self.bWSttawberrySatisfperformanceRegard); - make.right.mas_equalTo(0); - }]; - [self.cryptogramRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self.bWSttawberrySatisfperformanceRegard.mas_bottom).mas_offset(16); - }]; - [self.forgetBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-12); - make.top.mas_equalTo(self.cryptogramRegard.mas_bottom).mas_offset(8); - }]; - -} - -- (void)initOccurrences { - @weakify(self); - self.cryptogramRegard.textFieldChangeBlock = ^(NSString * _Nonnull code) { - @strongify(self); - if (code.length == 6) { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberDeficitShetowardshePwordRegardPwordAccomplish:)]) { - [self.delegate yUMIChamberDeficitShetowardshePwordRegardPwordAccomplish:code]; - } - } - }; -} - -- (void)onConcludeBtutonTicktack:(UIButton *)sender { - [MKJPopup dismiss]; -} - -- (void)onFoacquireBtutonTicktack:(UIButton *)sender { - [MKJPopup dismiss]; - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberDeficitShetowardshePwordRegardPwordInthecaseofacquireBtutonTicktack)]) { - [self.delegate yUMIChamberDeficitShetowardshePwordRegardPwordInthecaseofacquireBtutonTicktack]; - } -} - -- (void)setDiamonComputation:(NSString *)diamonComputation { - self.bWSttawberrySequencignation.text = diamonComputation; -} - -- (UIView *)bWSttawberrySatisfperformanceRegard { - if (!_bWSttawberrySatisfperformanceRegard) { - _bWSttawberrySatisfperformanceRegard = [[UIView alloc] init]; - } - return _bWSttawberrySatisfperformanceRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - UILabel *label = [[UILabel alloc] init]; - label.text = YMLocalizedString(@"YUMI_Room_Red_Packet_Pwd_View_0"); - label.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; - label.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleLabel = label; - } - return _titleLabel; -} - -- (UIImageView *)bWSttawberryIndicate { - if (!_bWSttawberryIndicate) { - _bWSttawberryIndicate = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yumi_same_diamond"]]; - } - return _bWSttawberryIndicate; -} - -- (UILabel *)bWSttawberrySequencignation { - if (!_bWSttawberrySequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.text = @""; - label.font = [UIFont systemFontOfSize:28 weight:UIFontWeightMedium]; - label.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _bWSttawberrySequencignation = label; - } - return _bWSttawberrySequencignation; -} - -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [[UIButton alloc] init]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_send_redPacket_cancel"] forState:UIControlStateNormal]; - [_concludeBtuton addTarget:self action:@selector(onConcludeBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - } - return _concludeBtuton; -} - -- (SurmountValidationCodeRegard *)cryptogramRegard { - if (!_cryptogramRegard) { - _cryptogramRegard= [[SurmountValidationCodeRegard alloc] init]; - _cryptogramRegard.number = 6; - _cryptogramRegard.shouldBeAssurance = YES; - } - return _cryptogramRegard; -} - -- (UIButton *)forgetBtuton { - if (!_forgetBtuton) { - _forgetBtuton = [[UIButton alloc] init]; - [_forgetBtuton addTarget:self action:@selector(onFoacquireBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - [_forgetBtuton setTitle:@"忘记密码?" forState:UIControlStateNormal]; - [_forgetBtuton setTitleColor:UIColorFromRGB(0xEA3B36) forState:UIControlStateNormal]; - _forgetBtuton.font = [UIFont systemFontOfSize:13]; - } - return _forgetBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/YUMIChamberDischargeDeficitSheatheRegardGovernancer.h b/YuMi/Modules/YMRoom/View/SendRedPacket/YUMIChamberDischargeDeficitSheatheRegardGovernancer.h deleted file mode 100644 index 1243c210..00000000 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/YUMIChamberDischargeDeficitSheatheRegardGovernancer.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// YMRoomSendRedPacketViewController.h -// YUMI -// -// Created by YUMI on 2022/8/31. -// - -#import "MvpRegardGovernancer.h" -#import "ChamberHostRepresendtation.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberDischargeDeficitSheatheRegardGovernancer : MvpRegardGovernancer - -- (instancetype)initWithDelegate:(id)delegate; - -@property (nonatomic, copy) NSString *roomUid; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/YUMIChamberDischargeDeficitSheatheRegardGovernancer.m b/YuMi/Modules/YMRoom/View/SendRedPacket/YUMIChamberDischargeDeficitSheatheRegardGovernancer.m deleted file mode 100644 index 761169b7..00000000 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/YUMIChamberDischargeDeficitSheatheRegardGovernancer.m +++ /dev/null @@ -1,698 +0,0 @@ -// -// YMRoomSendRedPacketViewController.m -// YUMI -// -// Created by YUMI on 2022/8/31. -// - -#import "YUMIChamberDischargeDeficitSheatheRegardGovernancer.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "XNDJTBWGLoadingTool.h" -#import "MKJPopup.h" -#import "YUMIHtmlUrl.h" -#import -#import "UIImage+Utils.h" -#import "YUMIChamberDeficitSheathePwordRegard.h" -#import "YUMIManeIntersectPwordRegardGovernancer.h" -#import "BaseNevigationGovernancer.h" -#import "YUMIManeReindictRegardGovernancer.h" -#import "YUMIIAPReindictRegardGovernancer.h" -#import "YUMIChamberHalfTissueRegard.h" -#import "YUMIManeValidationIdentityRegardGovernancer.h" -#import "YUMIChamberDeficitSheatheExternalizer.h" -#import "FBCChamberRedPacketCeremony.h" -#import "RamparatetAbstractMatrix.h" -#import "ChamberAbstractMatrix.h" -#import "ConsumerAbstractMatrix.h" - -@interface YUMIChamberDischargeDeficitSheatheRegardGovernancer () - -@property (nonatomic,weak) idhostRepresedtation; - -@property (nonatomic,strong) UIView *apexBeatRegard; -@property (nonatomic,strong) UIView *extremeBeatRegard; -@property (nonatomic,strong) UIImageView *encourageRegard; -@property (nonatomic, strong) UIButton *chamberBtuton; -@property (nonatomic, strong) UIButton *entiretyWeeblogicBtuton; -@property (nonatomic, strong) UIView *genreRegard; -@property (nonatomic, strong) UIView *sheatheSatisfperformanceRegard; -@property (nonatomic, strong) UILabel *sheatheChampion; -@property (nonatomic, strong) UITextField *sheatheEssayUniverse; -@property (nonatomic, strong) UILabel *sheatheComponents; -@property (nonatomic, strong) UIView *bWSttawberrySatisfperformanceRegard; -@property (nonatomic, strong) UILabel *bWSttawberryChampion; -@property (nonatomic, strong) UITextField *bWSttawberryEssayUniverse; -@property (nonatomic, strong) UILabel *bWSttawberryComponents; -@property (nonatomic,strong) UILabel *computationSequence; -@property (nonatomic, strong) UIView *sequenceSatisfperformanceRegard; -@property (nonatomic,strong) UITextView *sequencireEssayRegard; -@property (nonatomic, strong) UILabel *sequencireDeparatmentMaintainrietarySequencignation; -@property (nonatomic,strong) UILabel *sequencireComputationSequencignation; -@property (nonatomic, strong) UILabel *sequencireSequence; -@property (nonatomic, strong) UIButton *releaseBtuton; -@property (nonatomic, strong) UIImageView *bWSttawberryIndicate; -@property (nonatomic,strong) UILabel *wentiretyetBWSttawberrySequencignation; -@property (nonatomic, strong) UIButton *reindictBtuton; -@property (nonatomic, strong) UIButton *preadominantBtuton; -@property (nonatomic, strong) UIButton *concludeBtuton; - -@end - -@implementation YUMIChamberDischargeDeficitSheatheRegardGovernancer - -- (instancetype)initWithDelegate:(id)delegate { - if (self = [super init]) { - self.hostRepresedtation = delegate; - } - return self; -} - -- (YUMIChamberDeficitSheatheExternalizer *)producePresimport { - return [[YUMIChamberDeficitSheatheExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - self.view.backgroundColor = [UIColor clearColor]; - self.navigationController.view.backgroundColor = [UIColor clearColor]; - [self.navigationController setNavigationBarHidden:YES]; - [self initSubViews]; - [self initChildLyRestrictions]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onEssayRegardDiversifictowardsion:) name:UITextViewTextDidChangeNotification object:nil]; -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - [self.presimport acquireConsumerPocketbookAbstract]; -} - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.view.backgroundColor = [UIColor clearColor]; - [self.view addSubview:self.apexBeatRegard]; - [self.view addSubview:self.encourageRegard]; - [self.view addSubview:self.extremeBeatRegard]; - - [self.encourageRegard addSubview:self.chamberBtuton]; - [self.encourageRegard addSubview:self.entiretyWeeblogicBtuton]; - [self.encourageRegard addSubview:self.genreRegard]; - - [self.encourageRegard addSubview:self.sheatheSatisfperformanceRegard]; - [self.sheatheSatisfperformanceRegard addSubview:self.sheatheChampion]; - [self.sheatheSatisfperformanceRegard addSubview:self.sheatheEssayUniverse]; - [self.sheatheSatisfperformanceRegard addSubview:self.sheatheComponents]; - - [self.encourageRegard addSubview:self.bWSttawberrySatisfperformanceRegard]; - [self.bWSttawberrySatisfperformanceRegard addSubview:self.bWSttawberryChampion]; - [self.bWSttawberrySatisfperformanceRegard addSubview:self.bWSttawberryEssayUniverse]; - [self.bWSttawberrySatisfperformanceRegard addSubview:self.bWSttawberryComponents]; - - [self.encourageRegard addSubview:self.computationSequence]; - [self.encourageRegard addSubview:self.sequenceSatisfperformanceRegard]; - [self.encourageRegard addSubview:self.sequencireEssayRegard]; - [self.encourageRegard addSubview:self.sequencireDeparatmentMaintainrietarySequencignation]; - [self.encourageRegard addSubview:self.sequencireComputationSequencignation]; - [self.encourageRegard addSubview:self.sequencireSequence]; - [self.encourageRegard addSubview:self.releaseBtuton]; - [self.encourageRegard addSubview:self.bWSttawberryIndicate]; - [self.encourageRegard addSubview:self.wentiretyetBWSttawberrySequencignation]; - [self.encourageRegard addSubview:self.reindictBtuton]; - [self.encourageRegard addSubview:self.preadominantBtuton]; - [self.view addSubview:self.concludeBtuton]; -} - -- (void)initChildLyRestrictions { - [self.apexBeatRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.left.right.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.encourageRegard.mas_top); - }]; - - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(310); - make.height.mas_equalTo(450); - make.centerY.centerX.mas_equalTo(self.view); - }]; - - [self.extremeBeatRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.top.mas_equalTo(self.encourageRegard.mas_bottom); - make.bottom.mas_equalTo(self.view); - }]; - - [self.chamberBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.encourageRegard.mas_centerX).mas_offset(-17); - make.top.mas_equalTo(self.encourageRegard).offset(65); - make.height.mas_equalTo(18); - make.width.mas_equalTo(80); - }]; - - [self.entiretyWeeblogicBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.chamberBtuton); - make.height.mas_equalTo(18); - make.width.mas_equalTo(80); - make.left.mas_equalTo(self.encourageRegard.mas_centerX).mas_offset(17); - }]; - [self.genreRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.chamberBtuton); - make.top.mas_equalTo(self.chamberBtuton.mas_bottom).mas_offset(5); - make.width.mas_equalTo(8); - make.height.mas_equalTo(2); - }]; - - [self.sheatheSatisfperformanceRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.chamberBtuton.mas_bottom).mas_offset(32); - make.centerX.mas_equalTo(self.encourageRegard); - make.left.mas_equalTo(self.encourageRegard).mas_offset(30); - make.height.mas_equalTo(30); - }]; - [self.sheatheChampion mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.centerY.mas_equalTo(self.sheatheSatisfperformanceRegard); - make.left.mas_equalTo(15); - }]; - [self.sheatheChampion setContentHuggingPriority:UILayoutPriorityDefaultHigh forAxis:UILayoutConstraintAxisHorizontal]; - [self.sheatheEssayUniverse mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.centerY.mas_equalTo(self.sheatheSatisfperformanceRegard); - make.left.mas_equalTo(self.sheatheChampion.mas_right).mas_offset(4); - make.right.mas_equalTo(self.sheatheComponents.mas_left).mas_offset(-5); - }]; - [self.sheatheComponents mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.centerY.mas_equalTo(self.sheatheSatisfperformanceRegard); - make.right.mas_equalTo(self.sheatheSatisfperformanceRegard).mas_offset(-15); - make.width.mas_equalTo(12); - }]; - - [self.bWSttawberrySatisfperformanceRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.sheatheSatisfperformanceRegard.mas_bottom).mas_offset(20); - make.centerX.mas_equalTo(self.encourageRegard); - make.left.mas_equalTo(self.sheatheSatisfperformanceRegard); - make.height.mas_equalTo(30); - }]; - [self.bWSttawberryChampion mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.centerY.mas_equalTo(self.bWSttawberrySatisfperformanceRegard); - make.left.mas_equalTo(15); - }]; - [self.bWSttawberryChampion setContentHuggingPriority:UILayoutPriorityDefaultHigh forAxis:UILayoutConstraintAxisHorizontal]; - [self.bWSttawberryEssayUniverse mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.centerY.mas_equalTo(self.bWSttawberrySatisfperformanceRegard); - make.left.mas_equalTo(self.bWSttawberryChampion.mas_right).mas_offset(4); - make.right.mas_equalTo(self.bWSttawberryComponents.mas_left).mas_offset(-5); - }]; - [self.bWSttawberryComponents mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.centerY.mas_equalTo(self.bWSttawberrySatisfperformanceRegard); - make.right.mas_equalTo(self.bWSttawberrySatisfperformanceRegard).mas_offset(-12); - make.width.mas_equalTo(26); - }]; - - [self.computationSequence mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.encourageRegard); - make.top.mas_equalTo(self.bWSttawberrySatisfperformanceRegard.mas_bottom).mas_offset(5); - make.height.mas_equalTo(11); - }]; - [self.sequenceSatisfperformanceRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageRegard).inset(40); - make.top.mas_equalTo(self.computationSequence.mas_bottom).mas_offset(27); - make.height.mas_equalTo(70); - }]; - [self.sequencireEssayRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageRegard).inset(60); - make.centerY.mas_equalTo(self.sequenceSatisfperformanceRegard); - make.height.mas_equalTo(17); - }]; - [self.sequencireDeparatmentMaintainrietarySequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.centerY.mas_equalTo(self.sequenceSatisfperformanceRegard); - }]; - [self.sequencireComputationSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.bottom.mas_equalTo(self.sequenceSatisfperformanceRegard).inset(5); - make.height.mas_equalTo(10); - }]; - [self.sequencireSequence mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.encourageRegard); - make.top.mas_equalTo(self.sequenceSatisfperformanceRegard.mas_bottom).mas_offset(7); - make.height.mas_equalTo(10); - }]; - [self.releaseBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.sequencireSequence.mas_bottom).mas_offset(28); - make.centerX.mas_equalTo(self.encourageRegard); - make.width.mas_equalTo(150); - make.height.mas_equalTo(34); - }]; - - [self.bWSttawberryIndicate mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.releaseBtuton.mas_bottom).mas_offset(16); - make.left.mas_equalTo(self.encourageRegard).mas_offset(42);; - make.width.height.mas_equalTo(20); - }]; - - [self.wentiretyetBWSttawberrySequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.bWSttawberryIndicate.mas_right).mas_offset(5); - make.centerY.mas_equalTo(self.bWSttawberryIndicate); - }]; - [self.reindictBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.encourageRegard).mas_offset(-42); - make.centerY.mas_equalTo(self.bWSttawberryIndicate); - }]; - [self.preadominantBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.encourageRegard).mas_offset(-23); - make.top.mas_equalTo(13); - make.width.height.mas_equalTo(30); - }]; - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.view); - make.top.mas_equalTo(self.encourageRegard.mas_bottom).mas_offset(20); - make.width.height.mas_equalTo(35); - }]; -} - - -- (void)onReleaseBtutonTicktack:(UIButton *)button { - - NSInteger packetCount = [self.sheatheEssayUniverse.text integerValue]; - if (packetCount > 100 || packetCount < 1) { - [self EvidenceMistakeToast:@"红包数量不能小于1或大于100!"]; - return; - } - - NSInteger diamonComputation = [self.bWSttawberryEssayUniverse.text integerValue]; - if (diamonComputation > 999999 || diamonComputation < 100) { - [self EvidenceMistakeToast:@"钻石数量不能小于100或大于999999!"]; - return; - } - if (diamonComputation % 10 != 0) { - [self EvidenceMistakeToast:@"钻石数必须为10的倍数!"]; - return; - } - [self.presimport acquireConsumerMtowardsrix]; -} - -#pragma mark - FBCChamberRedPacketCeremony -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { - [self.view endEditing:YES]; -} - -- (void)acquireConsumerPocketbookAbstract:(RamparatetAbstractMatrix *)balanceInfo { - self.wentiretyetBWSttawberrySequencignation.text = balanceInfo.diamonds; -} - -- (void)dwellEarnConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo { - if (userInfo.isBindPaymentPwd) { - YUMIChamberDeficitSheathePwordRegard *pwdView = [[YUMIChamberDeficitSheathePwordRegard alloc] init]; - pwdView.diamonComputation = self.bWSttawberryEssayUniverse.text; - pwdView.delegate = self; - [MKJPopup popupRegard:pwdView style:MKJPopupStyleAlert]; - } else { - YUMIManeIntersectPwordRegardGovernancer *vc = [[YUMIManeIntersectPwordRegardGovernancer alloc] init]; - vc.userInfo = userInfo; - [self.navigationController pushViewController:vc animated:YES]; - } -} - -- (void)prohibitichargeDeficitShetowardsheAccomplishment { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Room_Send_Red_Packet_View_Controller_3")]; - [self dismissViewControllerAnimated:YES completion:nil]; -} - -#pragma mark - FBCChamberRedPacketPwordRegardRepresendtation -- (void)yUMIChamberDeficitShetowardshePwordRegardPwordAccomplish:(NSString *)pwd { - [MKJPopup dismiss]; - NSString *roomUid = [NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.uid]; - NSNumber *type = self.chamberBtuton.isSelected ? @(1) : @(2); - NSString *message = self.sequencireEssayRegard.text.length ? self.sequencireEssayRegard.text : @"恭喜发财,大吉大利!"; - [self.presimport prohibitichargeDeficitShetowardsheAboutFigure:self.sheatheEssayUniverse.text goldNum:self.bWSttawberryEssayUniverse.text roomUid:roomUid type:type password:pwd message:message]; -} - -- (void)yUMIChamberDeficitShetowardshePwordRegardPwordInthecaseofacquireBtutonTicktack { - YUMIManeValidationIdentityRegardGovernancer * VC = [[YUMIManeValidationIdentityRegardGovernancer alloc] init]; - VC.userInfo = self.hostRepresedtation.getUserInfo; - [self.navigationController pushViewController:VC animated:YES]; -} - -#pragma mark - Event Response -- (void)prohibitiaplictowardsionearBetowardsRecognition:(UITapGestureRecognizer *)tap { - [self dismissViewControllerAnimated:YES completion:nil]; -} - -#pragma mark - private -- (void)onChamberBtutonTicktack:(UIButton *)sender { - self.chamberBtuton.selected = YES; - self.entiretyWeeblogicBtuton.selected = NO; - [self.genreRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.chamberBtuton); - make.top.mas_equalTo(self.chamberBtuton.mas_bottom).mas_offset(4); - make.width.mas_equalTo(8); - make.height.mas_equalTo(2); - }]; - - NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc]initWithString:@"1-100" attributes:@{NSForegroundColorAttributeName: UIColorRGBAlpha(0xffffff, 0.3)}]; - self.sheatheEssayUniverse.attributedPlaceholder = attrString; - self.computationSequence.text = YMLocalizedString(@"YUMI_Room_Send_Red_Packet_View_Controller_5"); -} - -- (void)onEntiretyWeeblogicBtutonTicktack:(UIButton *)sender { - self.entiretyWeeblogicBtuton.selected = YES; - self.chamberBtuton.selected = NO; - [self.genreRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.entiretyWeeblogicBtuton); - make.top.mas_equalTo(self.chamberBtuton.mas_bottom).mas_offset(4); - make.width.mas_equalTo(8); - make.height.mas_equalTo(2); - }]; - NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc]initWithString:@"2-500" attributes:@{NSForegroundColorAttributeName: UIColorRGBAlpha(0xffffff, 0.3)}]; - self.sheatheEssayUniverse.attributedPlaceholder = attrString; - self.computationSequence.text = YMLocalizedString(@"YUMI_Room_Send_Red_Packet_View_Controller_6"); -} - -- (void)onReindictBtutonTicktack:(UIButton *)sender { - YUMIIAPReindictRegardGovernancer * rechargeVC = [[YUMIIAPReindictRegardGovernancer alloc] init]; - [self.navigationController pushViewController:rechargeVC animated:YES]; -} - -- (void)onPreadominantBtutonTicktack:(UIButton *)sender { - YUMIChamberHalfTissueRegard * webView = [[YUMIChamberHalfTissueRegard alloc] init]; - webView.url = URLWithType(kRedPacketRuleURL); - MKJPopupServing * config = [[MKJPopupServing alloc] init]; - config.contentView = webView; - [MKJPopup popupAboutDisposition:config]; -} - -- (void)onConcludeBtutonTicktack:(UIButton *)sender { - [self dismissViewControllerAnimated:YES completion:nil]; -} - -#pragma mark - YYTextViewDelegate -- (void)textViewDidChange:(YYTextView *)textView { - NSInteger maxLength = 20; - if (textView.text.length > maxLength) { - textView.text = [textView.text substringToIndex:maxLength]; - } - self.sequencireComputationSequencignation.text = [NSString stringWithFormat:@"%zd/%ld", textView.text.length, maxLength]; -} - -- (void)onEssayRegardDiversifictowardsion:(NSNotification *)noti { - NSInteger maxLength = 20; - if (self.sequencireEssayRegard.text.length > maxLength) { - self.sequencireEssayRegard.text = [self.sequencireEssayRegard.text substringToIndex:maxLength]; - } - if (self.sequencireEssayRegard.text.length > 0) { - self.sequencireDeparatmentMaintainrietarySequencignation.hidden = YES; - [self.sequencireEssayRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageRegard).inset(60); - make.centerY.mas_equalTo(self.sequenceSatisfperformanceRegard); - make.height.mas_equalTo(42); - }]; - } else { - self.sequencireDeparatmentMaintainrietarySequencignation.hidden = NO; - [self.sequencireEssayRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageRegard).inset(60); - make.centerY.mas_equalTo(self.sequenceSatisfperformanceRegard); - make.height.mas_equalTo(17); - }]; - } - self.sequencireComputationSequencignation.text = [NSString stringWithFormat:@"%zd/%ld", self.sequencireEssayRegard.text.length, maxLength]; -} - -#pragma mark - Getters And Setters -- (UIView *)apexBeatRegard { - if (!_apexBeatRegard) { - _apexBeatRegard = [[UIView alloc] init]; - _apexBeatRegard.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(prohibitiaplictowardsionearBetowardsRecognition:)]; - [_apexBeatRegard addGestureRecognizer:tap]; - } - return _apexBeatRegard; -} -- (UIView *)extremeBeatRegard { - if (!_extremeBeatRegard) { - _extremeBeatRegard = [[UIView alloc] init]; - _extremeBeatRegard.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(prohibitiaplictowardsionearBetowardsRecognition:)]; - [_extremeBeatRegard addGestureRecognizer:tap]; - } - return _extremeBeatRegard; -} -- (UIImageView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIImageView alloc] init]; - _encourageRegard.userInteractionEnabled = YES; - _encourageRegard.image = [UIImage imageNamed:@"yumi_send_redpacket_background"]; - } - return _encourageRegard; -} - -- (UIButton *)chamberBtuton { - if (!_chamberBtuton) { - _chamberBtuton = [[UIButton alloc] init]; - [_chamberBtuton setTitle:YMLocalizedString(@"YUMI_Room_Send_Red_Packet_View_Controller_7") forState:UIControlStateNormal]; - [_chamberBtuton setTitleColor:UIColorRGBAlpha(0xffffff, 0.5) forState:UIControlStateNormal]; - [_chamberBtuton setTitleColor:UIColorRGBAlpha(0xffffff, 1) forState:UIControlStateSelected]; - [_chamberBtuton addTarget:self action:@selector(onChamberBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - _chamberBtuton.selected = YES; - _chamberBtuton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; - } - return _chamberBtuton; -} - -- (UIButton *)entiretyWeeblogicBtuton { - if (!_entiretyWeeblogicBtuton) { - _entiretyWeeblogicBtuton = [[UIButton alloc] init]; - [_entiretyWeeblogicBtuton setTitle:YMLocalizedString(@"YUMI_Room_Send_Red_Packet_View_Controller_8") forState:UIControlStateNormal]; - [_entiretyWeeblogicBtuton setTitleColor:UIColorRGBAlpha(0xffffff, 0.5) forState:UIControlStateNormal]; - [_entiretyWeeblogicBtuton setTitleColor:UIColorRGBAlpha(0xffffff, 1) forState:UIControlStateSelected]; - [_entiretyWeeblogicBtuton addTarget:self action:@selector(onEntiretyWeeblogicBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - _entiretyWeeblogicBtuton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; - } - return _entiretyWeeblogicBtuton; -} - -- (UIView *)genreRegard { - if (!_genreRegard) { - _genreRegard = [[UIView alloc] init]; - _genreRegard.backgroundColor = [UIColor whiteColor]; - _genreRegard.layer.cornerRadius = 1; - _genreRegard.layer.masksToBounds = YES; - } - return _genreRegard; -} - -- (UIView *)sheatheSatisfperformanceRegard { - if (!_sheatheSatisfperformanceRegard) { - _sheatheSatisfperformanceRegard = [[UIView alloc] init]; - _sheatheSatisfperformanceRegard.backgroundColor = UIColorFromRGB(0xCC2247); - _sheatheSatisfperformanceRegard.layer.cornerRadius = 15; - _sheatheSatisfperformanceRegard.layer.masksToBounds = YES; - } - return _sheatheSatisfperformanceRegard; -} - -- (UILabel *)sheatheChampion { - if (!_sheatheChampion) { - UILabel *label = [[UILabel alloc] init]; - label.text = YMLocalizedString(@"YUMI_Room_Send_Red_Packet_View_Controller_9"); - label.font = [UIFont systemFontOfSize:12]; - label.textColor = UIColorRGBAlpha(0xffffff, 0.5); - _sheatheChampion = label; - } - return _sheatheChampion; -} - -- (UITextField *)sheatheEssayUniverse { - if (!_sheatheEssayUniverse) { - UITextField *label = [[UITextField alloc] init]; - label.keyboardType = UIKeyboardTypeNumberPad; - label.textAlignment = NSTextAlignmentRight; - NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc]initWithString:@"1-100" attributes:@{NSForegroundColorAttributeName: UIColorRGBAlpha(0xffffff, 0.5)}]; - label.attributedPlaceholder = attrString; - label.textColor = [UIColor whiteColor]; - label.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - _sheatheEssayUniverse = label; - } - return _sheatheEssayUniverse; -} - -- (UILabel *)sheatheComponents { - if (!_sheatheComponents) { - UILabel *label = [[UILabel alloc] init]; - label.text = YMLocalizedString(@"YUMI_Room_Send_Red_Packet_View_Controller_10"); - label.font = [UIFont systemFontOfSize:12]; - label.textColor = UIColorRGBAlpha(0xffffff, 0.5); - _sheatheComponents = label; - } - return _sheatheComponents; -} - -- (UIView *)bWSttawberrySatisfperformanceRegard { - if (!_bWSttawberrySatisfperformanceRegard) { - _bWSttawberrySatisfperformanceRegard = [[UIView alloc] init]; - _bWSttawberrySatisfperformanceRegard.backgroundColor = UIColorFromRGB(0xCC2247); - _bWSttawberrySatisfperformanceRegard.layer.cornerRadius = 15; - _bWSttawberrySatisfperformanceRegard.layer.masksToBounds = YES; - } - return _bWSttawberrySatisfperformanceRegard; -} -- (UILabel *)bWSttawberryChampion { - if (!_bWSttawberryChampion) { - UILabel *label = [[UILabel alloc] init]; - label.text = YMLocalizedString(@"YUMI_Room_Send_Red_Packet_View_Controller_11"); - label.font = [UIFont systemFontOfSize:12]; - label.textColor = UIColorRGBAlpha(0xffffff, 0.5); - _bWSttawberryChampion = label; - } - return _bWSttawberryChampion; -} - -- (UITextField *)bWSttawberryEssayUniverse { - if (!_bWSttawberryEssayUniverse) { - UITextField *label = [[UITextField alloc] init]; - label.keyboardType = UIKeyboardTypeNumberPad; - label.textAlignment = NSTextAlignmentRight; - NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc]initWithString:@"0" attributes:@{NSForegroundColorAttributeName: UIColorRGBAlpha(0xffffff, 0.5)}]; - label.attributedPlaceholder = attrString; - label.textColor = [UIColor whiteColor]; - label.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - _bWSttawberryEssayUniverse = label; - } - return _bWSttawberryEssayUniverse; -} - -- (UILabel *)bWSttawberryComponents { - if (!_bWSttawberryComponents) { - UILabel *label = [[UILabel alloc] init]; - label.text = YMLocalizedString(@"YUMI_Room_Send_Red_Packet_View_Controller_12"); - label.font = [UIFont systemFontOfSize:12]; - label.textColor = UIColorRGBAlpha(0xffffff, 0.5); - _bWSttawberryComponents = label; - } - return _bWSttawberryComponents; -} - -- (UILabel *)computationSequence { - if (!_computationSequence) { - UILabel *label = [[UILabel alloc] init]; - label.text = YMLocalizedString(@"YUMI_Room_Send_Red_Packet_View_Controller_13"); - label.font = [UIFont systemFontOfSize:11]; - label.textColor = [UIColor whiteColor]; - _computationSequence = label; - } - return _computationSequence; -} - -- (UIView *)sequenceSatisfperformanceRegard { - if (!_sequenceSatisfperformanceRegard) { - _sequenceSatisfperformanceRegard = [[UIView alloc] init]; - _sequenceSatisfperformanceRegard.backgroundColor = UIColorRGBAlpha(0xCC2247, 0.6); - _sequenceSatisfperformanceRegard.layer.cornerRadius = 8; - _sequenceSatisfperformanceRegard.layer.masksToBounds = YES; - } - return _sequenceSatisfperformanceRegard; -} - -- (UITextView *)sequencireEssayRegard { - if (!_sequencireEssayRegard) { - _sequencireEssayRegard = [[UITextView alloc] init]; - _sequencireEssayRegard.layer.cornerRadius = 8; - _sequencireEssayRegard.layer.masksToBounds = YES; - _sequencireEssayRegard.backgroundColor = [UIColor clearColor]; - _sequencireEssayRegard.showsVerticalScrollIndicator = NO; - _sequencireEssayRegard.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; - _sequencireEssayRegard.textColor = [UIColor whiteColor]; - _sequencireEssayRegard.textAlignment = NSTextAlignmentCenter; - } - return _sequencireEssayRegard; -} - -- (UIButton *)releaseBtuton { - if (!_releaseBtuton) { - _releaseBtuton = [[UIButton alloc] init]; - [_releaseBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - [_releaseBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_send_redPacket_button"] forState:UIControlStateNormal]; - [_releaseBtuton addTarget:self action:@selector(onReleaseBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - } - return _releaseBtuton; -} -- (UILabel *)sequencireSequence { - if (!_sequencireSequence) { - _sequencireSequence = [[UILabel alloc] init]; - _sequencireSequence.text = YMLocalizedString(@"YUMI_Room_Send_Red_Packet_View_Controller_14"); - _sequencireSequence.font = [UIFont systemFontOfSize:10]; - _sequencireSequence.textColor = UIColorRGBAlpha(0xffffff, 0.5); - } - return _sequencireSequence; -} - - -- (UILabel *)sequencireComputationSequencignation { - if (!_sequencireComputationSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.text = @"0/20"; - label.font = [UIFont systemFontOfSize:10]; - label.textColor = UIColorFromRGB(0xFF8C9D); - _sequencireComputationSequencignation = label; - } - return _sequencireComputationSequencignation; -} - -- (UIImageView *)bWSttawberryIndicate { - if (!_bWSttawberryIndicate) { - _bWSttawberryIndicate = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yumi_same_diamond"]]; - } - return _bWSttawberryIndicate; -} - -- (UILabel *)wentiretyetBWSttawberrySequencignation { - if (!_wentiretyetBWSttawberrySequencignation) { - _wentiretyetBWSttawberrySequencignation = [[UILabel alloc] init]; - _wentiretyetBWSttawberrySequencignation.textColor = [UIColor whiteColor]; - _wentiretyetBWSttawberrySequencignation.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - } - return _wentiretyetBWSttawberrySequencignation; -} - -- (UILabel *)sequencireDeparatmentMaintainrietarySequencignation { - if (!_sequencireDeparatmentMaintainrietarySequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.text = @"恭喜发财,大吉大利!"; - label.font = [UIFont systemFontOfSize:16]; - label.textColor = UIColorRGBAlpha(0xffffff, 0.5); - _sequencireDeparatmentMaintainrietarySequencignation = label; - } - return _sequencireDeparatmentMaintainrietarySequencignation; -} - -- (UIButton *)reindictBtuton { - if (!_reindictBtuton) { - _reindictBtuton = [[UIButton alloc] init]; - [_reindictBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - [_reindictBtuton addTarget:self action:@selector(onReindictBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - NSMutableAttributedString *title = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"YUMI_Room_Send_Red_Packet_View_Controller_16")]; - NSRange titleRange = {0,[title length]}; - [title addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:titleRange]; - [_reindictBtuton setAttributedTitle:title forState:UIControlStateNormal]; - _reindictBtuton.titleLabel.font = [UIFont systemFontOfSize:13]; - } - return _reindictBtuton; -} - -- (UIButton *)preadominantBtuton { - if (!_preadominantBtuton) { - _preadominantBtuton = [[UIButton alloc] init]; - [_preadominantBtuton addTarget:self action:@selector(onPreadominantBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - [_preadominantBtuton setImage:[UIImage imageNamed:@"yumi_send_redPacket_help"] forState:UIControlStateNormal]; - } - return _preadominantBtuton; -} - -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [[UIButton alloc] init]; - [_concludeBtuton addTarget:self action:@selector(onConcludeBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_same_close_white"] forState:UIControlStateNormal]; - } - return _concludeBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/Setting/Api/Api+RoomSetting.h b/YuMi/Modules/YMRoom/View/Setting/Api/Api+RoomSetting.h index 28ec57d8..baa4d21f 100644 --- a/YuMi/Modules/YMRoom/View/Setting/Api/Api+RoomSetting.h +++ b/YuMi/Modules/YMRoom/View/Setting/Api/Api+RoomSetting.h @@ -11,25 +11,63 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (RoomSetting) -+ (void)acquireChamberAbstract:(HttpRequestHelperCompletion)complection uid:(NSString *)uid intoUid:(NSString *)intoUid; +/// 获取房间信息 +/// @param complection 完成 +/// @param uid 用户的uid +/// @param intoUid 自己的Uid 判断当前进房用户是否是平台超管 判断进房用户是否开启青少年 ++ (void)getRoomInfo:(HttpRequestHelperCompletion)complection uid:(NSString *)uid intoUid:(NSString *)intoUid; -+ (void)unfoildChamberScheduleLoudspeaker:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid; +/// 开启房间排麦 +/// @param completion 完成 +/// @param roomUid 房间的uid +/// @param operUid 操作者的uid ++ (void)openRoomArrangeMic:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid; -+ (void)concludeChamberScheduleLoudspeaker:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid; +/// 关闭房间排麦 +/// @param completion 完成 +/// @param roomUid 房间的uid +/// @param operUid 操作者的uid ++ (void)closeRoomArrangeMic:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid; -+ (void)unfoildChamberDepartureManner:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid uid:(NSString *)uid; +/// 开启房间离开模式 +/// @param completion 完成 +/// @param roomUid 房间的uid +/// @param uid 操作者的uid ++ (void)openRoomLeaveMode:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid uid:(NSString *)uid; -+ (void)concludeChamberDepartureManner:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid uid:(NSString *)uid; +/// 关闭房间离开模式 +/// @param completion 完成 +/// @param roomUid 房间的uid +/// @param uid 操作者的uid ++ (void)closeRoomLeaveMode:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid uid:(NSString *)uid; -+ (void)acquireChamberCoupleSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; +/// 获取房间所有的tag +/// @param completion 完成 +/// @param uid uid ++ (void)getRoomTagList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; -+ (void)executiveRefurbishChamberAbstract:(HttpRequestHelperCompletion)completion params:(NSDictionary *)params; +/// 管理员更新房间信息 +/// @param completion 完成 +/// @param params 需要的参数 ++ (void)managerUpdateRoomInfo:(HttpRequestHelperCompletion)completion params:(NSDictionary *)params; -+ (void)proprietaryRefurbishChamberAbstract:(HttpRequestHelperCompletion)completion params:(NSDictionary *)params; +/// 房主更新房间信息 +/// @param completion 完成 +/// @param params 需要的参数 ++ (void)ownerUpdateRoomInfo:(HttpRequestHelperCompletion)completion params:(NSDictionary *)params; -+ (void)refurbishChamberAbstractCommunictowardsionDeclare:(HttpRequestHelperCompletion)complection roomId:(NSString *)roomId isCloseScreen:(NSString *)isCloseScreen ticket:(NSString *)ticket uid:(NSString *)uid; +/// 更新房间信息 公屏开关 +/// @param complection 完成 +/// @param roomId 房间的id +/// @param isCloseScreen 是否关闭公屏 +/// @param ticket ticket +/// @param uid uid ++ (void)updateRoomInfoMessageState:(HttpRequestHelperCompletion)complection roomId:(NSString *)roomId isCloseScreen:(NSString *)isCloseScreen ticket:(NSString *)ticket uid:(NSString *)uid; -+ (void)acquireChamberCtowardsegorizeifySttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; +/// 获取房间所有的分类tag +/// @param completion 完成 +/// @param uid uid ++ (void)getRoomClassifyList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; @end diff --git a/YuMi/Modules/YMRoom/View/Setting/Api/Api+RoomSetting.m b/YuMi/Modules/YMRoom/View/Setting/Api/Api+RoomSetting.m index 348cfc3a..d1f80df2 100644 --- a/YuMi/Modules/YMRoom/View/Setting/Api/Api+RoomSetting.m +++ b/YuMi/Modules/YMRoom/View/Setting/Api/Api+RoomSetting.m @@ -9,55 +9,93 @@ #import @implementation Api (RoomSetting) -+ (void)acquireChamberAbstract:(HttpRequestHelperCompletion)complection uid:(NSString *)uid intoUid:(NSString *)intoUid { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9nZXQ="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, uid, intoUid, nil]; +/// 获取房间信息 +/// @param complection 完成 +/// @param uid 用户的uid +/// @param intoUid 自己的Uid 判断当前进房用户是否是平台超管 判断进房用户是否开启青少年 ++ (void)getRoomInfo:(HttpRequestHelperCompletion)complection uid:(NSString *)uid intoUid:(NSString *)intoUid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9nZXQ="];///room/get + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, uid, intoUid, nil]; } -+ (void)unfoildChamberScheduleLoudspeaker:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9xdWV1ZS9lbmFibGU="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, operUid, nil]; +/// 开启房间排麦 +/// @param completion 完成 +/// @param roomUid 房间的uid +/// @param operUid 操作者的uid ++ (void)openRoomArrangeMic:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9xdWV1ZS9lbmFibGU="];///room/queue/enable + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, operUid, nil]; } -+ (void)concludeChamberScheduleLoudspeaker:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9xdWV1ZS9lbmFibGU="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodDELETE completion:completion, __FUNCTION__, roomUid, operUid, nil]; +/// 关闭房间排麦 +/// @param completion 完成 +/// @param roomUid 房间的uid +/// @param operUid 操作者的uid ++ (void)closeRoomArrangeMic:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid operUid:(NSString *)operUid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9xdWV1ZS9lbmFibGU="];///room/queue/enable + [self makeRequest:fang method:HttpRequestHelperMethodDELETE completion:completion, __FUNCTION__, roomUid, operUid, nil]; } -+ (void)unfoildChamberDepartureManner:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9sZWF2ZS9tb2RlL29wZW4="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, uid, nil]; +/// 开启房间离开模式 +/// @param completion 完成 +/// @param roomUid 房间的uid +/// @param uid 操作者的uid ++ (void)openRoomLeaveMode:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9sZWF2ZS9tb2RlL29wZW4="];///room/leave/mode/open + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, uid, nil]; } -+ (void)concludeChamberDepartureManner:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9sZWF2ZS9tb2RlL2Nsb3Nl"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, uid, nil]; +/// 关闭房间离开模式 +/// @param completion 完成 +/// @param roomUid 房间的uid +/// @param uid 操作者的uid ++ (void)closeRoomLeaveMode:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9sZWF2ZS9tb2RlL2Nsb3Nl"];///"room/leave/mode/close + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, uid, nil]; } -+ (void)acquireChamberCoupleSttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS90YWcvdjQvYWxs"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, nil]; +/// 获取房间所有的tag +/// @param completion 完成 +/// @param uid uid ++ (void)getRoomTagList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS90YWcvdjQvYWxs"];///room/tag/v4/all + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, nil]; } -+ (void)executiveRefurbishChamberAbstract:(HttpRequestHelperCompletion)completion params:(NSDictionary *)params { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS91cGRhdGVCeUFkbWlu"]; - [HttpRequestFacilitater request:fang method:HttpRequestHelperMethodPOST params:params completion:completion]; +/// 管理员更新房间信息 +/// @param completion 完成 +/// @param params 需要的参数 ++ (void)managerUpdateRoomInfo:(HttpRequestHelperCompletion)completion params:(NSDictionary *)params { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS91cGRhdGVCeUFkbWlu"];///room/updateByAdmin + [HttpRequestHelper request:fang method:HttpRequestHelperMethodPOST params:params completion:completion]; } -+ (void)proprietaryRefurbishChamberAbstract:(HttpRequestHelperCompletion)completion params:(NSDictionary *)params { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS91cGRhdGU="]; - [HttpRequestFacilitater request:fang method:HttpRequestHelperMethodPOST params:params completion:completion]; +/// 房主更新房间信息 +/// @param completion 完成 +/// @param params 需要的参数 ++ (void)ownerUpdateRoomInfo:(HttpRequestHelperCompletion)completion params:(NSDictionary *)params { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS91cGRhdGU="];///room/update + [HttpRequestHelper request:fang method:HttpRequestHelperMethodPOST params:params completion:completion]; } -+ (void)refurbishChamberAbstractCommunictowardsionDeclare:(HttpRequestHelperCompletion)complection roomId:(NSString *)roomId isCloseScreen:(NSString *)isCloseScreen ticket:(NSString *)ticket uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9zZXRDbG9zZVNjcmVlbg=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, roomId, isCloseScreen, ticket, uid, nil]; +/// 更新房间信息 公屏开关 +/// @param complection 完成 +/// @param roomId 房间的id +/// @param isCloseScreen 是否关闭公屏 +/// @param ticket ticket +/// @param uid uid ++ (void)updateRoomInfoMessageState:(HttpRequestHelperCompletion)complection roomId:(NSString *)roomId isCloseScreen:(NSString *)isCloseScreen ticket:(NSString *)ticket uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9zZXRDbG9zZVNjcmVlbg=="];///room/setCloseScreen + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, roomId, isCloseScreen, ticket, uid, nil]; } -+ (void)acquireChamberCtowardsegorizeifySttowardsement:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"c2luZ2xlL2Jyb2FkY2FzdC9zb3J0"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil]; +/// 获取房间所有的分类tag +/// @param completion 完成 +/// @param uid uid ++ (void)getRoomClassifyList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"c2luZ2xlL2Jyb2FkY2FzdC9zb3J0"];///single/broadcast/sort + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil]; } @end diff --git a/YuMi/Modules/YMRoom/View/Setting/Model/ChamberClassifyMatrix.h b/YuMi/Modules/YMRoom/View/Setting/Model/ChamberClassifyMatrix.h deleted file mode 100644 index 56e46b60..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/Model/ChamberClassifyMatrix.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// ChamberClassifyMatrix.h -// YUMI -// -// Created by YUMI on 2022/7/15. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface ChamberClassifyMatrix : NSObject - -@property (nonatomic,copy) NSString *cid; -@property (nonatomic, copy) NSString *sortName; -@property (nonatomic, copy) NSString *sortDesc; - -@property (nonatomic, assign) NSInteger seq; -@property (nonatomic,assign) BOOL isSelect; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/Model/ChamberClassifyMatrix.m b/YuMi/Modules/YMRoom/View/Setting/Model/ChamberClassifyMatrix.m deleted file mode 100644 index 4a2ae586..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/Model/ChamberClassifyMatrix.m +++ /dev/null @@ -1,16 +0,0 @@ -// -// ChamberClassifyMatrix.m -// YUMI -// -// Created by YUMI on 2022/7/15. -// - -#import "ChamberClassifyMatrix.h" - -@implementation ChamberClassifyMatrix - -+ (NSDictionary *)replacedDigitalByvirtueofMaintainertyConstitute { - return @{@"cid":@"id"}; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/Setting/Model/ChamberCoupleMatrix.h b/YuMi/Modules/YMRoom/View/Setting/Model/ChamberCoupleMatrix.h deleted file mode 100644 index 5f5767df..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/Model/ChamberCoupleMatrix.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// ChamberCoupleMatrix.h -// YUMI -// -// Created by YUMI on 2021/12/29. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface ChamberCoupleMatrix : NSObject -@property (nonatomic,copy) NSString *tid; -@property (nonatomic, copy) NSString *name; -@property (nonatomic,assign) BOOL isSelect; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/Model/ChamberCoupleMatrix.m b/YuMi/Modules/YMRoom/View/Setting/Model/ChamberCoupleMatrix.m deleted file mode 100644 index 0a5573f7..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/Model/ChamberCoupleMatrix.m +++ /dev/null @@ -1,14 +0,0 @@ -// -// ChamberCoupleMatrix.m -// YUMI -// -// Created by YUMI on 2021/12/29. -// - -#import "ChamberCoupleMatrix.h" - -@implementation ChamberCoupleMatrix -+ (NSDictionary *)replacedDigitalByvirtueofMaintainertyConstitute { - return @{@"tid":@"id"}; -} -@end diff --git a/YuMi/Modules/YMRoom/View/Setting/Model/RoomClassifyModel.h b/YuMi/Modules/YMRoom/View/Setting/Model/RoomClassifyModel.h new file mode 100644 index 00000000..8f8525a2 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/Model/RoomClassifyModel.h @@ -0,0 +1,27 @@ +// +// RoomClassifyModel.h +// YUMI +// +// Created by YUMI on 2022/7/15. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RoomClassifyModel : NSObject + +///tag的id +@property (nonatomic,copy) NSString *cid; +///名字 +@property (nonatomic, copy) NSString *sortName; +///描述 +@property (nonatomic, copy) NSString *sortDesc; + +@property (nonatomic, assign) NSInteger seq; +///是否选择 +@property (nonatomic,assign) BOOL isSelect; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/Model/RoomClassifyModel.m b/YuMi/Modules/YMRoom/View/Setting/Model/RoomClassifyModel.m new file mode 100644 index 00000000..d2518d00 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/Model/RoomClassifyModel.m @@ -0,0 +1,16 @@ +// +// RoomClassifyModel.m +// YUMI +// +// Created by YUMI on 2022/7/15. +// + +#import "RoomClassifyModel.h" + +@implementation RoomClassifyModel + ++ (NSDictionary *)replacedKeyFromPropertyName { + return @{@"cid":@"id"}; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/Setting/Model/RoomTagModel.h b/YuMi/Modules/YMRoom/View/Setting/Model/RoomTagModel.h new file mode 100644 index 00000000..cfa4f367 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/Model/RoomTagModel.h @@ -0,0 +1,21 @@ +// +// RoomTagModel.h +// YUMI +// +// Created by YUMI on 2021/12/29. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RoomTagModel : NSObject +///tag的id +@property (nonatomic,copy) NSString *tid; +///名字 +@property (nonatomic, copy) NSString *name; +///是否选择 +@property (nonatomic,assign) BOOL isSelect; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/Model/RoomTagModel.m b/YuMi/Modules/YMRoom/View/Setting/Model/RoomTagModel.m new file mode 100644 index 00000000..24b079b7 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/Model/RoomTagModel.m @@ -0,0 +1,14 @@ +// +// RoomTagModel.m +// YUMI +// +// Created by YUMI on 2021/12/29. +// + +#import "RoomTagModel.h" + +@implementation RoomTagModel ++ (NSDictionary *)replacedKeyFromPropertyName { + return @{@"tid":@"id"}; +} +@end diff --git a/YuMi/Modules/YMRoom/View/Setting/Model/XPRoomSettingItemModel.h b/YuMi/Modules/YMRoom/View/Setting/Model/XPRoomSettingItemModel.h new file mode 100644 index 00000000..c12f195f --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/Model/XPRoomSettingItemModel.h @@ -0,0 +1,49 @@ +// +// YMRoomSettingItemModel.h +// YUMI +// +// Created by YUMI on 2021/12/27. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, RoomSettingItemType) { + ///房间标题 + RoomSettingItemType_Title = 1, + ///房间上锁 + RoomSettingItemType_Lock, + ///房间密码 + RoomSettingItemType_Pwd, + ///房间分类 + RoomSettingItemType_Class, + ///房间标签 + RoomSettingItemType_Tag, + ///管理员 + RoomSettingItemType_Manager_List, + ///黑名单 + RoomSettingItemType_Black_List, + ///礼物特效 + RoomSettingItemType_Gift_Effect, + ///公屏显示 + RoomSettingItemType_Message_Screen, + ///排麦 + RoomSettingItemType_Arrange_Mic, + ///排麦 + RoomSettingItemType_Leave_Model, +}; + +@interface XPRoomSettingItemModel : NSObject +///标题 +@property (nonatomic,copy)NSString *title; +///副标题 +@property (nonatomic,copy) NSString *subTitle; +///开启的状态 +@property (nonatomic,assign) BOOL switchState; +///类型 +@property (nonatomic,assign) RoomSettingItemType type; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/Model/XPRoomSettingItemModel.m b/YuMi/Modules/YMRoom/View/Setting/Model/XPRoomSettingItemModel.m new file mode 100644 index 00000000..814625ea --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/Model/XPRoomSettingItemModel.m @@ -0,0 +1,12 @@ +// +// YMRoomSettingItemModel.m +// YUMI +// +// Created by YUMI on 2021/12/27. +// + +#import "XPRoomSettingItemModel.h" + +@implementation XPRoomSettingItemModel + +@end diff --git a/YuMi/Modules/YMRoom/View/Setting/Model/YUMIChamberInstanllingProvisionMatrix.h b/YuMi/Modules/YMRoom/View/Setting/Model/YUMIChamberInstanllingProvisionMatrix.h deleted file mode 100644 index 1084b181..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/Model/YUMIChamberInstanllingProvisionMatrix.h +++ /dev/null @@ -1,45 +0,0 @@ -// -// YMRoomSettingItemModel.h -// YUMI -// -// Created by YUMI on 2021/12/27. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, ChamberInstanllingProvisionGenre) { - - ChamberInstanllingProvisionGenre_Title = 1, - - ChamberInstanllingProvisionGenre_Lock, - - ChamberInstanllingProvisionGenre_Pwd, - - ChamberInstanllingProvisionGenre_Class, - - ChamberInstanllingProvisionGenre_Tag, - - ChamberInstanllingProvisionGenre_Manager_List, - - ChamberInstanllingProvisionGenre_Black_List, - - ChamberInstanllingProvisionGenre_Gift_Effect, - - ChamberInstanllingProvisionGenre_Message_Screen, - - ChamberInstanllingProvisionGenre_Arrange_Mic, - - ChamberInstanllingProvisionGenre_Leave_Model, -}; - -@interface YUMIChamberInstanllingProvisionMatrix : NSObject -@property (nonatomic,copy)NSString *title; -@property (nonatomic,copy) NSString *subTitle; -@property (nonatomic,assign) BOOL switchState; -@property (nonatomic,assign) ChamberInstanllingProvisionGenre type; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/Model/YUMIChamberInstanllingProvisionMatrix.m b/YuMi/Modules/YMRoom/View/Setting/Model/YUMIChamberInstanllingProvisionMatrix.m deleted file mode 100644 index 7e34b196..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/Model/YUMIChamberInstanllingProvisionMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMRoomSettingItemModel.m -// YUMI -// -// Created by YUMI on 2021/12/27. -// - -#import "YUMIChamberInstanllingProvisionMatrix.h" - -@implementation YUMIChamberInstanllingProvisionMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomSettingPresenter.h b/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomSettingPresenter.h new file mode 100644 index 00000000..a4342afe --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomSettingPresenter.h @@ -0,0 +1,63 @@ +// +// YMRoomSettingPresenter.h +// YUMI +// +// Created by YUMI on 2021/12/27. +// + +#import "BaseMvpPresenter.h" +#import "RoomInfoModel.h" +#import "XPRoomSettingItemModel.h" +NS_ASSUME_NONNULL_BEGIN +@class RoomInfoModel; +@interface XPRoomSettingPresenter : BaseMvpPresenter + +- (void)getRoomSettingList:(RoomInfoModel *)roomInfo isSuperAdmin:(BOOL)isSuperAdmin; + +///获取房间信息 +- (void)getRoomInfo:(NSString *)roomUid; + +/// 开启排麦 +/// @param roomUid 房主的uid +- (void)openRoomArrangeMic:(NSString *)roomUid; + +/// 关闭排麦 +/// @param roomUid 房主的uid +- (void)closeRoomArrangeMic:(NSString *)roomUid; + +/// 关闭离开模式 +/// @param roomUid 房主的uid +- (void)closeRoomLeaveMode:(NSString *)roomUid; + +/// 开启离开模式 +/// @param roomUid 房主的uid +- (void)openRoomLeaveMode:(NSString *)roomUid; + +/// 更新公屏状态 +/// @param isCloseScreen 是否关闭公屏 +/// @param roomId 房间的id +- (void)updateRoomMessageScreenState:(BOOL)isCloseScreen roomId:(NSString *)roomId; + +/// 更新房间信息 +/// @param title 房间标题 +/// @param roomPwd 房间密码 +/// @param tagId 房间tag +/// @param classifyId 房间分类 +/// @param hasAnimationEffect 是否开启房间特效 +/// @param roomUid 房间uid +/// @param roomId 群聊的id +/// @param type 房间类型 +/// @param itemType 更新的类型 +- (void)updateRoomInfo:(NSString *)title + roomPwd:(NSString *)roomPwd + tagId:(NSString *)tagId + classifyId:(NSString *)classifyId + hasAnimationEffect:(BOOL)hasAnimationEffect + roomUid:(NSString *)roomUid + roomId:(NSString *)roomId + type:(RoomType)type + itemType:(RoomSettingItemType)itemType + mgId:(NSString *)mgId; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomSettingPresenter.m b/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomSettingPresenter.m new file mode 100644 index 00000000..31b40829 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomSettingPresenter.m @@ -0,0 +1,353 @@ +// +// YMRoomSettingPresenter.m +// YUMI +// +// Created by YUMI on 2021/12/27. +// + +#import "XPRoomSettingPresenter.h" +#import +///Tool +#import "AccountInfoStorage.h" +#import "Api+RoomSetting.h" +#import "DESEncrypt.h" +#import "YUMIConstant.h" +#import "ClientConfig.h" +///Model +#import "RoomInfoModel.h" +///P +#import "XPRoomSettingProtocol.h" + +@implementation XPRoomSettingPresenter + +- (void)getRoomSettingList:(RoomInfoModel *)roomInfo isSuperAdmin:(BOOL)isSuperAdmin { + XPRoomSettingItemModel * titleItem = [[XPRoomSettingItemModel alloc] init]; + titleItem.title = YMLocalizedString(@"XPRoomSettingPresenter0"); + titleItem.subTitle = roomInfo.title; + titleItem.type = RoomSettingItemType_Title; + + XPRoomSettingItemModel * lockItem = [[XPRoomSettingItemModel alloc] init]; + lockItem.title = YMLocalizedString(@"XPRoomSettingPresenter1"); + lockItem.switchState = roomInfo.roomPwd.length > 0; + lockItem.type = RoomSettingItemType_Lock; + + XPRoomSettingItemModel * pwdItem; + if (roomInfo.roomPwd.length > 0) { + pwdItem = [[XPRoomSettingItemModel alloc] init]; + NSString * roomPwd = [DESEncrypt decryptUseDES:roomInfo.roomPwd key:KeyWithType(KeyType_PasswordEncode)]; + pwdItem.title = roomPwd; + pwdItem.type = RoomSettingItemType_Pwd; + } + + XPRoomSettingItemModel *classItem = [[XPRoomSettingItemModel alloc] init]; + classItem.title = YMLocalizedString(@"XPRoomSettingPresenter2"); + classItem.subTitle = roomInfo.sortName; + classItem.type = RoomSettingItemType_Class; + + XPRoomSettingItemModel *tagItem = [[XPRoomSettingItemModel alloc] init]; + tagItem.title = YMLocalizedString(@"XPRoomSettingPresenter3"); + tagItem.subTitle = roomInfo.roomTag; + tagItem.type = RoomSettingItemType_Tag; + + XPRoomSettingItemModel * managerItem = [[XPRoomSettingItemModel alloc] init]; + managerItem.title = YMLocalizedString(@"XPRoomSettingPresenter4"); + managerItem.type = RoomSettingItemType_Manager_List; + + XPRoomSettingItemModel * blackItem = [[XPRoomSettingItemModel alloc] init]; + blackItem.title = YMLocalizedString(@"XPRoomSettingPresenter5"); + blackItem.type = RoomSettingItemType_Black_List; + + XPRoomSettingItemModel * giftEffectItem = [[XPRoomSettingItemModel alloc] init]; + giftEffectItem.title = YMLocalizedString(@"XPRoomSettingPresenter6"); + giftEffectItem.switchState = roomInfo.hasAnimationEffect; + giftEffectItem.type = RoomSettingItemType_Gift_Effect; + + XPRoomSettingItemModel * messageScreedItem = [[XPRoomSettingItemModel alloc] init]; + messageScreedItem.title = YMLocalizedString(@"XPRoomSettingPresenter7"); + messageScreedItem.switchState = !roomInfo.isCloseScreen; + messageScreedItem.type = RoomSettingItemType_Message_Screen; + + XPRoomSettingItemModel * arrangeMicItem = [[XPRoomSettingItemModel alloc] init]; + arrangeMicItem.title = YMLocalizedString(@"XPRoomSettingPresenter8"); + arrangeMicItem.switchState = roomInfo.roomModeType == RoomModeType_Open_Micro_Mode; + arrangeMicItem.type = RoomSettingItemType_Arrange_Mic; + + XPRoomSettingItemModel * leaveItem = [[XPRoomSettingItemModel alloc] init]; + leaveItem.title = YMLocalizedString(@"XPRoomSettingPresenter9"); + leaveItem.switchState = roomInfo.leaveMode; + leaveItem.type = RoomSettingItemType_Leave_Model; + + NSString * roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + NSString * uid = [AccountInfoStorage instance].getUid; + ///获取房间角色 + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = roomId; + request.userIds = @[uid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + NSArray * array; + if (error == nil) { + NIMChatroomMember * member = members.firstObject; + if (roomInfo.type == RoomType_Anchor) { + if (member.type == NIMChatroomMemberTypeCreator || isSuperAdmin) { + if (roomInfo.isPermitRoom == PermitRoomType_Licnese) { + if (roomInfo.roomPwd.length > 0) { + array = @[ + @[titleItem, lockItem, pwdItem], + @[classItem, tagItem], + @[managerItem, blackItem, giftEffectItem, messageScreedItem] + ]; + } else { + array = @[ + @[titleItem, lockItem], + @[classItem, tagItem], + @[managerItem, blackItem, giftEffectItem, messageScreedItem] + ]; + } + } else { + if (roomInfo.roomPwd.length > 0) { + array = @[ + @[titleItem, lockItem, pwdItem], + @[classItem, tagItem], + @[managerItem, blackItem, giftEffectItem, messageScreedItem] + ]; + } else { + array = @[ + @[titleItem, lockItem], + @[classItem, tagItem], + @[managerItem, blackItem, giftEffectItem, messageScreedItem] + ]; + } + } + } else { + if (roomInfo.roomPwd.length > 0) { + array = @[ + @[titleItem, lockItem, pwdItem], + @[tagItem], + @[managerItem, blackItem, giftEffectItem, messageScreedItem] + ]; + } else { + array = @[ + @[titleItem, lockItem], + @[tagItem], + @[blackItem, giftEffectItem] + ]; + } + } + } else { + if (member.type == NIMChatroomMemberTypeCreator) { + if (roomInfo.isPermitRoom == PermitRoomType_Licnese) { + if (roomInfo.roomPwd.length > 0) { + array = @[ + @[titleItem, lockItem,pwdItem], + @[tagItem], + @[managerItem, blackItem, giftEffectItem, messageScreedItem, arrangeMicItem, leaveItem] + ]; + } else { + array = @[ + @[titleItem, lockItem], + @[tagItem], + @[managerItem, blackItem, giftEffectItem, messageScreedItem, arrangeMicItem, leaveItem] + ]; + } + } else { + if (roomInfo.type == RoomType_MiniGame) { + if (roomInfo.roomPwd.length > 0) { + array = @[ + @[titleItem, lockItem, pwdItem], + @[tagItem], + @[managerItem, blackItem, giftEffectItem, messageScreedItem] + ]; + }else { + array = @[ + @[titleItem, lockItem], + @[tagItem], + @[managerItem, blackItem, giftEffectItem, messageScreedItem] + ]; + } + } else { + if (roomInfo.roomPwd.length > 0) { + array = @[ + @[titleItem, lockItem, pwdItem], + @[tagItem], + @[managerItem, blackItem, giftEffectItem, messageScreedItem, arrangeMicItem] + ]; + }else { + array = @[ + @[titleItem, lockItem], + @[tagItem], + @[managerItem, blackItem, giftEffectItem, messageScreedItem, arrangeMicItem] + ]; + } + } + } + }else if(isSuperAdmin) { + if (roomInfo.roomPwd.length > 0) { + array = @[ + @[titleItem, lockItem,pwdItem], + @[tagItem], + @[managerItem,blackItem, giftEffectItem, messageScreedItem, arrangeMicItem] + ]; + } else { + array = @[ + @[titleItem, lockItem], + @[tagItem], + @[managerItem,blackItem, giftEffectItem, messageScreedItem, arrangeMicItem] + ]; + } + } else if(member.type == NIMChatroomMemberTypeManager) { + if (roomInfo.roomPwd.length > 0) { + array = @[ + @[titleItem, lockItem,pwdItem], + @[tagItem], + @[blackItem, giftEffectItem, messageScreedItem, arrangeMicItem] + ]; + } else { + array = @[ + @[titleItem, lockItem], + @[tagItem], + @[blackItem, giftEffectItem, messageScreedItem, arrangeMicItem] + ]; + } + } + } + if(![ClientConfig shareConfig].canOpen) { + array = @[ + @[messageScreedItem, titleItem], + @[lockItem], + @[managerItem, blackItem] + ]; + } + [[self getView] getRoomSettingListSuccess:array]; + } + }]; +} + + + +/// 获取房间信息 +/// @param roomUid 房主的uid +- (void)getRoomInfo:(NSString *)roomUid { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api getRoomInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + RoomInfoModel * roomInfo = [RoomInfoModel modelWithDictionary:data.data]; + [[self getView] getRoomInfoSuccess:roomInfo]; + } showLoading:YES] uid:roomUid intoUid:uid]; +} +/// 开启排麦 +/// @param roomUid 房主的uid +- (void)openRoomArrangeMic:(NSString *)roomUid { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api openRoomArrangeMic:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] openRoomArrangeMicSuccess]; + } showLoading:YES] roomUid:roomUid operUid:uid]; +} + +/// 关闭排麦 +/// @param roomUid 房主的uid +- (void)closeRoomArrangeMic:(NSString *)roomUid { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api closeRoomArrangeMic:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] closeRoomArrangeMicSuccess]; + } showLoading:YES] roomUid:roomUid operUid:uid]; +} + +/// 开启离开模式 +/// @param roomUid 房主的uid +- (void)openRoomLeaveMode:(NSString *)roomUid { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api openRoomLeaveMode:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] openRoomArrangeMicSuccess]; + } showLoading:YES] roomUid:roomUid uid:uid]; +} + +/// 关闭离开模式 +/// @param roomUid 房主的uid +- (void)closeRoomLeaveMode:(NSString *)roomUid { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api closeRoomLeaveMode:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] closeRoomArrangeMicSuccess]; + } showLoading:YES] roomUid:roomUid uid:uid]; +} + +/// 更新公屏状态 +/// @param isCloseScreen 是否关闭公屏 +/// @param roomId 房间的id +- (void)updateRoomMessageScreenState:(BOOL)isCloseScreen roomId:(NSString *)roomId { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + NSString * isCleScreenStr = isCloseScreen ? @"1" : @"0"; + [Api updateRoomInfoMessageState:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + RoomInfoModel * roomInfo = [RoomInfoModel modelWithDictionary:data.data]; + [[self getView] updateRoomMessageScreenStateSuccess:roomInfo]; + } showLoading:YES] roomId:roomId isCloseScreen:isCleScreenStr ticket:ticket uid:uid]; +} + + +/// 更新房间信息 +/// @param title 房间标题 +/// @param roomPwd 房间密码 +/// @param tagId 房间tag +/// @param hasAnimationEffect 是否开启房间特效 +/// @param roomUid 房间uid +/// @param roomId 群聊的id +/// @param mgId 小游戏的id +- (void)updateRoomInfo:(NSString *)title roomPwd:(NSString *)roomPwd tagId:(NSString *)tagId classifyId:(NSString *)classifyId hasAnimationEffect:(BOOL)hasAnimationEffect roomUid:(NSString *)roomUid roomId:(NSString *)roomId type:(RoomType)type itemType:(RoomSettingItemType)itemType mgId:(NSString *)mgId{ + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + NSMutableDictionary * params = [NSMutableDictionary dictionary]; + [params setObject:ticket forKey:@"ticket"]; + [params setObject:uid forKey:@"uid"]; + [params setObject:roomUid forKey:@"roomUid"]; + if (title.length > 0) { + [params setObject:title forKey:@"title"]; + } + + if (roomPwd.length > 0) { + [params setObject:roomPwd forKey:@"roomPwd"]; + } else{ + [params setObject:@"" forKey:@"roomPwd"]; + } + + if (tagId.length > 0) { + [params setObject:tagId forKey:@"tagId"]; + } + if (classifyId.length > 0) { + [params setObject:classifyId forKey:@"singleRoomSortId"]; + } + [params setObject:@(type) forKey:@"type"]; + + [params setObject:@(hasAnimationEffect) forKey:@"hasAnimationEffect"]; + + if (mgId.length > 0) { + [params setObject:mgId forKey:@"mgId"]; + } + ///获取房间角色 + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = roomId; + request.userIds = @[uid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + if (error == nil) { + NIMChatroomMember * member = members.firstObject; + if (member.type == NIMTeamMemberTypeOwner) { + [Api ownerUpdateRoomInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + RoomInfoModel * roomInfo = [RoomInfoModel modelWithJSON:data.data]; + [[self getView] updateRoomInfoSuccess:roomInfo itemType:itemType]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] updateRoomInfoFail:msg]; + } showLoading:YES] params:params]; + } else if(member.type == NIMTeamMemberTypeManager) { + [Api managerUpdateRoomInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + RoomInfoModel * roomInfo = [RoomInfoModel modelWithJSON:data.data]; + [[self getView] updateRoomInfoSuccess:roomInfo itemType:itemType]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] updateRoomInfoFail:msg]; + } showLoading:YES] params:params]; + } + } else { + [[self getView] updateRoomInfoFail:YMLocalizedString(@"XPRoomSettingPresenter10")]; + } + }]; + +} + +@end diff --git a/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomTagPresenter.h b/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomTagPresenter.h new file mode 100644 index 00000000..94474414 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomTagPresenter.h @@ -0,0 +1,21 @@ +// +// YMRoomTagPresenter.h +// YUMI +// +// Created by YUMI on 2021/12/28. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomTagPresenter : BaseMvpPresenter + +///获取房间标签列表 +- (void)getRoomTagList; +///获取房间分类列表 +- (void)getRoomClassifyList; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomTagPresenter.m b/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomTagPresenter.m new file mode 100644 index 00000000..1905fd77 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomTagPresenter.m @@ -0,0 +1,34 @@ +// +// YMRoomTagPresenter.m +// YUMI +// +// Created by YUMI on 2021/12/28. +// + +#import "XPRoomTagPresenter.h" +#import "Api+RoomSetting.h" +#import "AccountInfoStorage.h" +#import "XPRoomTagProtocol.h" +#import "RoomTagModel.h" +#import "RoomClassifyModel.h" + + +@implementation XPRoomTagPresenter + +- (void)getRoomTagList { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api getRoomTagList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [RoomTagModel modelsWithArray:data.data]; + [[self getView] getRoomTagListSuccess:array]; + }] uid:uid]; +} + +- (void)getRoomClassifyList { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api getRoomClassifyList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [RoomClassifyModel modelsWithArray:data.data]; + [[self getView] getRoomClassifyListSuccess:array]; + }] uid:uid]; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomTopicPresenter.h b/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomTopicPresenter.h new file mode 100644 index 00000000..ee76d0cc --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomTopicPresenter.h @@ -0,0 +1,17 @@ +// +// YMRoomTopicPresenter.h +// YUMI +// +// Created by YUMI on 2022/3/14. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN +@class RoomInfoModel; +@interface XPRoomTopicPresenter : BaseMvpPresenter +///更新房间信息 +- (void)roomTopicUpdate:(NSString *)roomDesc introduction:(NSString *)introduction roomInfo:(RoomInfoModel *)roomInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomTopicPresenter.m b/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomTopicPresenter.m new file mode 100644 index 00000000..74cfdb25 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomTopicPresenter.m @@ -0,0 +1,68 @@ +// +// YMRoomTopicPresenter.m +// YUMI +// +// Created by YUMI on 2022/3/14. +// + +#import "XPRoomTopicPresenter.h" +#import +#import "YUMIConstant.h" +#import "DESEncrypt.h" +#import "AccountInfoStorage.h" +#import "Api+RoomSetting.h" +#import "XPRoomTopicProtocol.h" +#import "RoomInfoModel.h" +#import "NSMutableDictionary+Saft.h" + +@implementation XPRoomTopicPresenter + +///更新房间信息 +- (void)roomTopicUpdate:(NSString *)roomDesc introduction:(NSString *)introduction roomInfo:(RoomInfoModel *)roomInfo { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + NSMutableDictionary * params = [NSMutableDictionary dictionary]; + [params safeSetObject:ticket forKey:@"ticket"]; + [params safeSetObject:uid forKey:@"uid"]; + [params safeSetObject:[NSString stringWithFormat:@"%ld", roomInfo.uid] forKey:@"roomUid"]; + if (roomInfo.title.length > 0) { + [params safeSetObject:roomInfo.title forKey:@"title"]; + } + + if (roomInfo.roomPwd.length > 0) { + [params safeSetObject:roomInfo.roomPwd forKey:@"roomPwd"]; + } + + if (roomInfo.tagId > 0) { + [params safeSetObject:[NSString stringWithFormat:@"%ld", roomInfo.tagId] forKey:@"tagId"]; + } + + [params safeSetObject:roomDesc forKey:@"roomDesc"]; + if (introduction.length > 0) { + [params safeSetObject:introduction forKey:@"introduction"]; + } + [params safeSetObject:@(roomInfo.hasAnimationEffect) forKey:@"hasAnimationEffect"]; + ///获取房间角色 + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + request.userIds = @[uid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + if (error == nil) { + NIMChatroomMember * member = members.firstObject; + if (member.type == NIMTeamMemberTypeOwner) { + [Api ownerUpdateRoomInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] updateRoomTopicSuccess]; + } showLoading:YES] params:params]; + } else if(member.type == NIMTeamMemberTypeManager) { + [Api managerUpdateRoomInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] updateRoomTopicSuccess]; + } showLoading:YES] params:params]; + } + } else { + [[self getView] updateRoomTopicFail:YMLocalizedString(@"XPRoomTopicPresenter0")]; + } + }]; + +} + +@end diff --git a/YuMi/Modules/YMRoom/View/Setting/Presenter/YUMIChamberCoupleExternalizer.h b/YuMi/Modules/YMRoom/View/Setting/Presenter/YUMIChamberCoupleExternalizer.h deleted file mode 100644 index 15780316..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/Presenter/YUMIChamberCoupleExternalizer.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMRoomTagPresenter.h -// YUMI -// -// Created by YUMI on 2021/12/28. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberCoupleExternalizer : BaseMvpExternalizer - -- (void)acquireChamberCoupleSttowardsement; -- (void)acquireChamberCtowardsegorizeifySttowardsement; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/Presenter/YUMIChamberCoupleExternalizer.m b/YuMi/Modules/YMRoom/View/Setting/Presenter/YUMIChamberCoupleExternalizer.m deleted file mode 100644 index 5d5fbee1..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/Presenter/YUMIChamberCoupleExternalizer.m +++ /dev/null @@ -1,34 +0,0 @@ -// -// YMRoomTagPresenter.m -// YUMI -// -// Created by YUMI on 2021/12/28. -// - -#import "YUMIChamberCoupleExternalizer.h" -#import "Api+RoomSetting.h" -#import "AccountAbstractStorage.h" -#import "FBCChamberTagCeremony.h" -#import "ChamberCoupleMatrix.h" -#import "ChamberClassifyMatrix.h" - - -@implementation YUMIChamberCoupleExternalizer - -- (void)acquireChamberCoupleSttowardsement { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api acquireChamberCoupleSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [ChamberCoupleMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireChamberCoupleSttowardsementAccomplishment:array]; - }] uid:uid]; -} - -- (void)acquireChamberCtowardsegorizeifySttowardsement { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api acquireChamberCtowardsegorizeifySttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [ChamberClassifyMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireChamberCtowardsegorizeifySttowardsementAccomplishment:array]; - }] uid:uid]; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/Setting/Presenter/YUMIChamberInstanllingExternalizer.h b/YuMi/Modules/YMRoom/View/Setting/Presenter/YUMIChamberInstanllingExternalizer.h deleted file mode 100644 index 7e6af484..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/Presenter/YUMIChamberInstanllingExternalizer.h +++ /dev/null @@ -1,41 +0,0 @@ -// -// YMRoomSettingPresenter.h -// YUMI -// -// Created by YUMI on 2021/12/27. -// - -#import "BaseMvpExternalizer.h" -#import "ChamberAbstractMatrix.h" -#import "YUMIChamberInstanllingProvisionMatrix.h" -NS_ASSUME_NONNULL_BEGIN -@class ChamberAbstractMatrix; -@interface YUMIChamberInstanllingExternalizer : BaseMvpExternalizer - -- (void)acquireChamberInstanllingSttowardsement:(ChamberAbstractMatrix *)roomInfo isSuperAdmin:(BOOL)isSuperAdmin; - -- (void)acquireChamberAbstract:(NSString *)roomUid; - -- (void)unfoildChamberScheduleLoudspeaker:(NSString *)roomUid; - -- (void)concludeChamberScheduleLoudspeaker:(NSString *)roomUid; - -- (void)concludeChamberDepartureManner:(NSString *)roomUid; - -- (void)unfoildChamberDepartureManner:(NSString *)roomUid; - -- (void)refurbishChamberCommunictowardsioncreenDeclare:(BOOL)isCloseScreen roomId:(NSString *)roomId; - -- (void)refurbishChamberAbstract:(NSString *)title - roomPwd:(NSString *)roomPwd - tagId:(NSString *)tagId - classifyId:(NSString *)classifyId - hasAnimationEffect:(BOOL)hasAnimationEffect - roomUid:(NSString *)roomUid - roomId:(NSString *)roomId - type:(ChamberGenre)type - itemType:(ChamberInstanllingProvisionGenre)itemType - mgId:(NSString *)mgId; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/Presenter/YUMIChamberInstanllingExternalizer.m b/YuMi/Modules/YMRoom/View/Setting/Presenter/YUMIChamberInstanllingExternalizer.m deleted file mode 100644 index dc5d403f..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/Presenter/YUMIChamberInstanllingExternalizer.m +++ /dev/null @@ -1,329 +0,0 @@ -// -// YMRoomSettingPresenter.m -// YUMI -// -// Created by YUMI on 2021/12/27. -// - -#import "YUMIChamberInstanllingExternalizer.h" -#import -#import "AccountAbstractStorage.h" -#import "Api+RoomSetting.h" -#import "DESEncrypt.h" -#import "YUMIConstant.h" -#import "ClientDisposition.h" -#import "ChamberAbstractMatrix.h" -#import "FBCChamberInstanllingCeremony.h" - -@implementation YUMIChamberInstanllingExternalizer - -- (void)acquireChamberInstanllingSttowardsement:(ChamberAbstractMatrix *)roomInfo isSuperAdmin:(BOOL)isSuperAdmin { - YUMIChamberInstanllingProvisionMatrix * titleItem = [[YUMIChamberInstanllingProvisionMatrix alloc] init]; - titleItem.title = YMLocalizedString(@"YUMI_Room_Setting_Presenter_0"); - titleItem.subTitle = roomInfo.title; - titleItem.type = ChamberInstanllingProvisionGenre_Title; - - YUMIChamberInstanllingProvisionMatrix * lockItem = [[YUMIChamberInstanllingProvisionMatrix alloc] init]; - lockItem.title = YMLocalizedString(@"YUMI_Room_Setting_Presenter_1"); - lockItem.switchState = roomInfo.roomPwd.length > 0; - lockItem.type = ChamberInstanllingProvisionGenre_Lock; - - YUMIChamberInstanllingProvisionMatrix * pwdItem; - if (roomInfo.roomPwd.length > 0) { - pwdItem = [[YUMIChamberInstanllingProvisionMatrix alloc] init]; - NSString * roomPwd = [DESEncrypt decryptUseDES:roomInfo.roomPwd key:KeyWithType(KeyGenre_PasswordEncode)]; - pwdItem.title = roomPwd; - pwdItem.type = ChamberInstanllingProvisionGenre_Pwd; - } - - YUMIChamberInstanllingProvisionMatrix *classItem = [[YUMIChamberInstanllingProvisionMatrix alloc] init]; - classItem.title = YMLocalizedString(@"YUMI_Room_Setting_Presenter_2"); - classItem.subTitle = roomInfo.sortName; - classItem.type = ChamberInstanllingProvisionGenre_Class; - - YUMIChamberInstanllingProvisionMatrix *tagItem = [[YUMIChamberInstanllingProvisionMatrix alloc] init]; - tagItem.title = YMLocalizedString(@"YUMI_Room_Setting_Presenter_3"); - tagItem.subTitle = roomInfo.roomTag; - tagItem.type = ChamberInstanllingProvisionGenre_Tag; - - YUMIChamberInstanllingProvisionMatrix * executiveProvision = [[YUMIChamberInstanllingProvisionMatrix alloc] init]; - executiveProvision.title = YMLocalizedString(@"YUMI_Room_Setting_Presenter_4"); - executiveProvision.type = ChamberInstanllingProvisionGenre_Manager_List; - - YUMIChamberInstanllingProvisionMatrix * blackProvision = [[YUMIChamberInstanllingProvisionMatrix alloc] init]; - blackProvision.title = YMLocalizedString(@"YUMI_Room_Setting_Presenter_5"); - blackProvision.type = ChamberInstanllingProvisionGenre_Black_List; - - YUMIChamberInstanllingProvisionMatrix * giftEffectItem = [[YUMIChamberInstanllingProvisionMatrix alloc] init]; - giftEffectItem.title = YMLocalizedString(@"YUMI_Room_Setting_Presenter_6"); - giftEffectItem.switchState = roomInfo.hasAnimationEffect; - giftEffectItem.type = ChamberInstanllingProvisionGenre_Gift_Effect; - - YUMIChamberInstanllingProvisionMatrix * messageScreedItem = [[YUMIChamberInstanllingProvisionMatrix alloc] init]; - messageScreedItem.title = YMLocalizedString(@"YUMI_Room_Setting_Presenter_7"); - messageScreedItem.switchState = !roomInfo.isCloseScreen; - messageScreedItem.type = ChamberInstanllingProvisionGenre_Message_Screen; - - YUMIChamberInstanllingProvisionMatrix * arrangeMicItem = [[YUMIChamberInstanllingProvisionMatrix alloc] init]; - arrangeMicItem.title = YMLocalizedString(@"YUMI_Room_Setting_Presenter_8"); - arrangeMicItem.switchState = roomInfo.roomModeType == ChamberModeGenre_Open_Micro_Mode; - arrangeMicItem.type = ChamberInstanllingProvisionGenre_Arrange_Mic; - - YUMIChamberInstanllingProvisionMatrix * leaveItem = [[YUMIChamberInstanllingProvisionMatrix alloc] init]; - leaveItem.title = YMLocalizedString(@"YUMI_Room_Setting_Presenter_9"); - leaveItem.switchState = roomInfo.leaveMode; - leaveItem.type = ChamberInstanllingProvisionGenre_Leave_Model; - - NSString * roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = roomId; - request.userIds = @[uid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - NSArray * array; - if (error == nil) { - NIMChatroomMember * member = members.firstObject; - if (roomInfo.type == ChamberGenre_Anchor) { - if (member.type == NIMChatroomMemberTypeCreator || isSuperAdmin) { - if (roomInfo.isPermitRoom == PermitChamberGenre_Licnese) { - if (roomInfo.roomPwd.length > 0) { - array = @[ - @[titleItem, lockItem, pwdItem], - @[classItem, tagItem], - @[executiveProvision, blackProvision, giftEffectItem, messageScreedItem] - ]; - } else { - array = @[ - @[titleItem, lockItem], - @[classItem, tagItem], - @[executiveProvision, blackProvision, giftEffectItem, messageScreedItem] - ]; - } - } else { - if (roomInfo.roomPwd.length > 0) { - array = @[ - @[titleItem, lockItem, pwdItem], - @[classItem, tagItem], - @[executiveProvision, blackProvision, giftEffectItem, messageScreedItem] - ]; - } else { - array = @[ - @[titleItem, lockItem], - @[classItem, tagItem], - @[executiveProvision, blackProvision, giftEffectItem, messageScreedItem] - ]; - } - } - } else { - if (roomInfo.roomPwd.length > 0) { - array = @[ - @[titleItem, lockItem, pwdItem], - @[tagItem], - @[executiveProvision, blackProvision, giftEffectItem, messageScreedItem] - ]; - } else { - array = @[ - @[titleItem, lockItem], - @[tagItem], - @[blackProvision, giftEffectItem] - ]; - } - } - } else { - if (member.type == NIMChatroomMemberTypeCreator) { - if (roomInfo.isPermitRoom == PermitChamberGenre_Licnese) { - if (roomInfo.roomPwd.length > 0) { - array = @[ - @[titleItem, lockItem,pwdItem], - @[tagItem], - @[executiveProvision, blackProvision, giftEffectItem, messageScreedItem, arrangeMicItem, leaveItem] - ]; - } else { - array = @[ - @[titleItem, lockItem], - @[tagItem], - @[executiveProvision, blackProvision, giftEffectItem, messageScreedItem, arrangeMicItem, leaveItem] - ]; - } - } else { - if (roomInfo.type == ChamberGenre_MiniGame) { - if (roomInfo.roomPwd.length > 0) { - array = @[ - @[titleItem, lockItem, pwdItem], - @[tagItem], - @[executiveProvision, blackProvision, giftEffectItem, messageScreedItem] - ]; - }else { - array = @[ - @[titleItem, lockItem], - @[tagItem], - @[executiveProvision, blackProvision, giftEffectItem, messageScreedItem] - ]; - } - } else { - if (roomInfo.roomPwd.length > 0) { - array = @[ - @[titleItem, lockItem, pwdItem], - @[tagItem], - @[executiveProvision, blackProvision, giftEffectItem, messageScreedItem, arrangeMicItem] - ]; - }else { - array = @[ - @[titleItem, lockItem], - @[tagItem], - @[executiveProvision, blackProvision, giftEffectItem, messageScreedItem, arrangeMicItem] - ]; - } - } - } - }else if(isSuperAdmin) { - if (roomInfo.roomPwd.length > 0) { - array = @[ - @[titleItem, lockItem,pwdItem], - @[tagItem], - @[executiveProvision,blackProvision, giftEffectItem, messageScreedItem, arrangeMicItem] - ]; - } else { - array = @[ - @[titleItem, lockItem], - @[tagItem], - @[executiveProvision,blackProvision, giftEffectItem, messageScreedItem, arrangeMicItem] - ]; - } - } else if(member.type == NIMChatroomMemberTypeManager) { - if (roomInfo.roomPwd.length > 0) { - array = @[ - @[titleItem, lockItem,pwdItem], - @[tagItem], - @[blackProvision, giftEffectItem, messageScreedItem, arrangeMicItem] - ]; - } else { - array = @[ - @[titleItem, lockItem], - @[tagItem], - @[blackProvision, giftEffectItem, messageScreedItem, arrangeMicItem] - ]; - } - } - } - if(![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - array = @[ - @[messageScreedItem, titleItem], - @[lockItem], - @[executiveProvision, blackProvision] - ]; - } - [[self acquireRegard] acquireChamberInstanllingSttowardsementAccomplishment:array]; - } - }]; -} - - - -- (void)acquireChamberAbstract:(NSString *)roomUid { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api acquireChamberAbstract:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ChamberAbstractMatrix * roomInfo = [ChamberAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireChamberAbstractAccomplishment:roomInfo]; - } EvidenceChambering:YES] uid:roomUid intoUid:uid]; -} -- (void)unfoildChamberScheduleLoudspeaker:(NSString *)roomUid { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api unfoildChamberScheduleLoudspeaker:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] unfoildChamberScheduleLoudspeakerAccomplishment]; - } EvidenceChambering:YES] roomUid:roomUid operUid:uid]; -} - -- (void)concludeChamberScheduleLoudspeaker:(NSString *)roomUid { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api concludeChamberScheduleLoudspeaker:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] concludeChamberScheduleLoudspeakerAccomplishment]; - } EvidenceChambering:YES] roomUid:roomUid operUid:uid]; -} - -- (void)unfoildChamberDepartureManner:(NSString *)roomUid { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api unfoildChamberDepartureManner:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] unfoildChamberScheduleLoudspeakerAccomplishment]; - } EvidenceChambering:YES] roomUid:roomUid uid:uid]; -} - -- (void)concludeChamberDepartureManner:(NSString *)roomUid { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api concludeChamberDepartureManner:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] concludeChamberScheduleLoudspeakerAccomplishment]; - } EvidenceChambering:YES] roomUid:roomUid uid:uid]; -} - -- (void)refurbishChamberCommunictowardsioncreenDeclare:(BOOL)isCloseScreen roomId:(NSString *)roomId { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - NSString * isCleScreenStr = isCloseScreen ? @"1" : @"0"; - [Api refurbishChamberAbstractCommunictowardsionDeclare:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ChamberAbstractMatrix * roomInfo = [ChamberAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] refurbishChamberCommunictowardsioncreenDeclareAccomplishment:roomInfo]; - } EvidenceChambering:YES] roomId:roomId isCloseScreen:isCleScreenStr ticket:ticket uid:uid]; -} - - -- (void)refurbishChamberAbstract:(NSString *)title roomPwd:(NSString *)roomPwd tagId:(NSString *)tagId classifyId:(NSString *)classifyId hasAnimationEffect:(BOOL)hasAnimationEffect roomUid:(NSString *)roomUid roomId:(NSString *)roomId type:(ChamberGenre)type itemType:(ChamberInstanllingProvisionGenre)itemType mgId:(NSString *)mgId{ - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - NSMutableDictionary * params = [NSMutableDictionary dictionary]; - [params setObject:ticket forKey:@"ticket"]; - [params setObject:uid forKey:@"uid"]; - [params setObject:roomUid forKey:@"roomUid"]; - if (title.length > 0) { - [params setObject:title forKey:@"title"]; - } - - if (roomPwd.length > 0) { - [params setObject:roomPwd forKey:@"roomPwd"]; - } else{ - [params setObject:@"" forKey:@"roomPwd"]; - } - - if (tagId.length > 0) { - [params setObject:tagId forKey:@"tagId"]; - } - if (classifyId.length > 0) { - [params setObject:classifyId forKey:@"singleRoomSortId"]; - } - [params setObject:@(type) forKey:@"type"]; - - [params setObject:@(hasAnimationEffect) forKey:@"hasAnimationEffect"]; - - if (mgId.length > 0) { - [params setObject:mgId forKey:@"mgId"]; - } - - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = roomId; - request.userIds = @[uid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - if (error == nil) { - NIMChatroomMember * member = members.firstObject; - if (member.type == NIMTeamMemberTypeOwner) { - [Api proprietaryRefurbishChamberAbstract:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ChamberAbstractMatrix * roomInfo = [ChamberAbstractMatrix mtowardsrixAboutJSON:data.data]; - [[self acquireRegard] refurbishChamberAbstractAccomplishment:roomInfo itemType:itemType]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] refurbishChamberAbstractFlunk:msg]; - } EvidenceChambering:YES] params:params]; - } else if(member.type == NIMTeamMemberTypeManager) { - [Api executiveRefurbishChamberAbstract:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ChamberAbstractMatrix * roomInfo = [ChamberAbstractMatrix mtowardsrixAboutJSON:data.data]; - [[self acquireRegard] refurbishChamberAbstractAccomplishment:roomInfo itemType:itemType]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] refurbishChamberAbstractFlunk:msg]; - } EvidenceChambering:YES] params:params]; - } - } else { - [[self acquireRegard] refurbishChamberAbstractFlunk:YMLocalizedString(@"YUMI_Room_Setting_Presenter_10")]; - } - }]; - -} - -@end diff --git a/YuMi/Modules/YMRoom/View/Setting/Presenter/YUMIChamberMotifExternalizer.h b/YuMi/Modules/YMRoom/View/Setting/Presenter/YUMIChamberMotifExternalizer.h deleted file mode 100644 index 705e9b5e..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/Presenter/YUMIChamberMotifExternalizer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomTopicPresenter.h -// YUMI -// -// Created by YUMI on 2022/3/14. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN -@class ChamberAbstractMatrix; -@interface YUMIChamberMotifExternalizer : BaseMvpExternalizer -- (void)chamberMotifRefurbish:(NSString *)roomDesc introduction:(NSString *)introduction roomInfo:(ChamberAbstractMatrix *)roomInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/Presenter/YUMIChamberMotifExternalizer.m b/YuMi/Modules/YMRoom/View/Setting/Presenter/YUMIChamberMotifExternalizer.m deleted file mode 100644 index 250d8b97..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/Presenter/YUMIChamberMotifExternalizer.m +++ /dev/null @@ -1,67 +0,0 @@ -// -// YMRoomTopicPresenter.m -// YUMI -// -// Created by YUMI on 2022/3/14. -// - -#import "YUMIChamberMotifExternalizer.h" -#import -#import "YUMIConstant.h" -#import "DESEncrypt.h" -#import "AccountAbstractStorage.h" -#import "Api+RoomSetting.h" -#import "FBCChamberMotifCeremony.h" -#import "ChamberAbstractMatrix.h" -#import "NSMutableDictionary+Saft.h" - -@implementation YUMIChamberMotifExternalizer - -- (void)chamberMotifRefurbish:(NSString *)roomDesc introduction:(NSString *)introduction roomInfo:(ChamberAbstractMatrix *)roomInfo { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - NSMutableDictionary * params = [NSMutableDictionary dictionary]; - [params secureSetGroal:ticket forKey:@"ticket"]; - [params secureSetGroal:uid forKey:@"uid"]; - [params secureSetGroal:[NSString stringWithFormat:@"%ld", roomInfo.uid] forKey:@"roomUid"]; - if (roomInfo.title.length > 0) { - [params secureSetGroal:roomInfo.title forKey:@"title"]; - } - - if (roomInfo.roomPwd.length > 0) { - [params secureSetGroal:roomInfo.roomPwd forKey:@"roomPwd"]; - } - - if (roomInfo.tagId > 0) { - [params secureSetGroal:[NSString stringWithFormat:@"%ld", roomInfo.tagId] forKey:@"tagId"]; - } - - [params secureSetGroal:roomDesc forKey:@"roomDesc"]; - if (introduction.length > 0) { - [params secureSetGroal:introduction forKey:@"introduction"]; - } - [params secureSetGroal:@(roomInfo.hasAnimationEffect) forKey:@"hasAnimationEffect"]; - - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - request.userIds = @[uid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - if (error == nil) { - NIMChatroomMember * member = members.firstObject; - if (member.type == NIMTeamMemberTypeOwner) { - [Api proprietaryRefurbishChamberAbstract:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] refurbishChamberMotifAccomplishment]; - } EvidenceChambering:YES] params:params]; - } else if(member.type == NIMTeamMemberTypeManager) { - [Api executiveRefurbishChamberAbstract:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] refurbishChamberMotifAccomplishment]; - } EvidenceChambering:YES] params:params]; - } - } else { - [[self acquireRegard] refurbishChamberMotifFlunk:YMLocalizedString(@"YUMI_Room_Topic_Presenter_0")]; - } - }]; - -} - -@end diff --git a/YuMi/Modules/YMRoom/View/Setting/Protocol/FBCChamberInstanllingCeremony.h b/YuMi/Modules/YMRoom/View/Setting/Protocol/FBCChamberInstanllingCeremony.h deleted file mode 100644 index f2ea3d4a..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/Protocol/FBCChamberInstanllingCeremony.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YMRoomSettingProtocol.h -// YUMI -// -// Created by YUMI on 2021/12/27. -// - -#import -#import "YUMIChamberInstanllingProvisionMatrix.h" - -NS_ASSUME_NONNULL_BEGIN -@class ChamberAbstractMatrix; -@protocol FBCChamberInstanllingCeremony - -- (void)acquireChamberInstanllingSttowardsementAccomplishment:(NSArray *)list; -- (void)acquireChamberAbstractAccomplishment:(ChamberAbstractMatrix *)roomInfo; -- (void)unfoildChamberScheduleLoudspeakerAccomplishment; -- (void)concludeChamberScheduleLoudspeakerAccomplishment; -- (void)refurbishChamberCommunictowardsioncreenDeclareAccomplishment:(ChamberAbstractMatrix *)roomInfo; -- (void)unfoildChamberDepartureMannerAccomplishment; -- (void)concludeChamberDepartureMannerAccomplishment; -- (void)refurbishChamberAbstractAccomplishment:(ChamberAbstractMatrix *)roomInfo itemType:(ChamberInstanllingProvisionGenre)itemType; -- (void)refurbishChamberAbstractFlunk:(NSString *)message; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/Protocol/FBCChamberMotifCeremony.h b/YuMi/Modules/YMRoom/View/Setting/Protocol/FBCChamberMotifCeremony.h deleted file mode 100644 index 237857b1..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/Protocol/FBCChamberMotifCeremony.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMRoomTopicProtocol.h -// YUMI -// -// Created by YUMI on 2022/3/14. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCChamberMotifCeremony - -- (void)refurbishChamberMotifAccomplishment; -- (void)refurbishChamberMotifFlunk:(NSString *)message; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/Protocol/FBCChamberTagCeremony.h b/YuMi/Modules/YMRoom/View/Setting/Protocol/FBCChamberTagCeremony.h deleted file mode 100644 index 1124c6b6..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/Protocol/FBCChamberTagCeremony.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YMRoomTagProtocol.h -// YUMI -// -// Created by YUMI on 2021/12/28. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCChamberTagCeremony - -- (void)acquireChamberCoupleSttowardsementAccomplishment:(NSArray *)array; - -- (void)acquireChamberCtowardsegorizeifySttowardsementAccomplishment:(NSArray *)array; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/Protocol/XPRoomSettingProtocol.h b/YuMi/Modules/YMRoom/View/Setting/Protocol/XPRoomSettingProtocol.h new file mode 100644 index 00000000..2a5edd8a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/Protocol/XPRoomSettingProtocol.h @@ -0,0 +1,35 @@ +// +// YMRoomSettingProtocol.h +// YUMI +// +// Created by YUMI on 2021/12/27. +// + +#import +#import "XPRoomSettingItemModel.h" + +NS_ASSUME_NONNULL_BEGIN +@class RoomInfoModel; +@protocol XPRoomSettingProtocol + +///房间设置的列表数据 +- (void)getRoomSettingListSuccess:(NSArray *)list; +///获取房间信息成功 +- (void)getRoomInfoSuccess:(RoomInfoModel *)roomInfo; +///开启排麦成功 +- (void)openRoomArrangeMicSuccess; +///关闭排麦成功 +- (void)closeRoomArrangeMicSuccess; +///更新房间公屏的开启状态 +- (void)updateRoomMessageScreenStateSuccess:(RoomInfoModel *)roomInfo; +///开启离线成功 +- (void)openRoomLeaveModeSuccess; +///关闭离线成功 +- (void)closeRoomLeaveModeSuccess; +///更新房间信息成功 +- (void)updateRoomInfoSuccess:(RoomInfoModel *)roomInfo itemType:(RoomSettingItemType)itemType; +///更新房间信息失败 +- (void)updateRoomInfoFail:(NSString *)message; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/Protocol/XPRoomTagProtocol.h b/YuMi/Modules/YMRoom/View/Setting/Protocol/XPRoomTagProtocol.h new file mode 100644 index 00000000..29f12eaf --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/Protocol/XPRoomTagProtocol.h @@ -0,0 +1,20 @@ +// +// YMRoomTagProtocol.h +// YUMI +// +// Created by YUMI on 2021/12/28. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPRoomTagProtocol + +- (void)getRoomTagListSuccess:(NSArray *)array; + +- (void)getRoomClassifyListSuccess:(NSArray *)array; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/Protocol/XPRoomTopicProtocol.h b/YuMi/Modules/YMRoom/View/Setting/Protocol/XPRoomTopicProtocol.h new file mode 100644 index 00000000..9cc21de5 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/Protocol/XPRoomTopicProtocol.h @@ -0,0 +1,20 @@ +// +// YMRoomTopicProtocol.h +// YUMI +// +// Created by YUMI on 2022/3/14. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPRoomTopicProtocol + +///更新房间话题成功 +- (void)updateRoomTopicSuccess; +///更新房间话题失败 +- (void)updateRoomTopicFail:(NSString *)message; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomOnlineTableViewCell.h b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomOnlineTableViewCell.h new file mode 100644 index 00000000..f492db47 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomOnlineTableViewCell.h @@ -0,0 +1,28 @@ +// +// YMRoomOnlineTableViewCell.h +// YUMI +// +// Created by YUMI on 2021/12/30. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class NIMChatroomMember; +typedef NS_ENUM(NSInteger, RoomOnLineType) { + ///所有的用户 + RoomOnLineType_All_User = 0, + ///抱人上麦的用户 + RoomOnLineType_Invite_User +}; + +@interface XPRoomOnlineTableViewCell : UITableViewCell +///在线列表的类型 +@property (nonatomic,assign) RoomOnLineType onlineType; +///云信用户实体 +@property (strong, nonatomic) NIMChatroomMember *member; +///是否在麦序上 +@property (nonatomic,assign) BOOL isOnMicro; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomOnlineTableViewCell.m b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomOnlineTableViewCell.m new file mode 100644 index 00000000..b604e0dd --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomOnlineTableViewCell.m @@ -0,0 +1,379 @@ +// +// YMRoomOnlineTableViewCell.m +// YUMI +// +// Created by YUMI on 2021/12/30. +// + +#import "XPRoomOnlineTableViewCell.h" +///Third +#import +#import +///Tool +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "XPMessageRemoteExtModel.h" + +@interface XPRoomOnlineTableViewCell () +///显示头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///性别 +@property (nonatomic,strong) UIImageView *sexImageView; +///姓名 和 等级 总的容器 +@property (nonatomic,strong) UIStackView *stackView; +///姓名的容器 +@property (nonatomic,strong) UIStackView *nickStackView; +///显示姓名 +@property (nonatomic,strong) UILabel *nickLabel; +///魅力等级 等级 铭牌 +@property (nonatomic,strong) UIStackView *tagStackView; +///角色的 +@property (nonatomic,strong) UIButton *roleButton; +///美丽等级 +@property (nonatomic,strong) NetImageView *charmImageView; +///等级 +@property (nonatomic,strong) NetImageView *experImageView; +///铭牌的容器 +@property (nonatomic,strong) UIView * namePlateView; +///铭牌图片 +@property (nonatomic,strong) NetImageView *nameplateImageView; +///铭牌文字 +@property (nonatomic,strong) UILabel *nameplateLabel; +///分割线 +@property (nonatomic,strong) UIView * lineView; +///在麦上显示标签 +@property (strong, nonatomic) UILabel *onMicroStatusLabel; +@end + +@implementation XPRoomOnlineTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.stackView]; + [self.contentView addSubview:self.lineView]; + [self.contentView addSubview:self.onMicroStatusLabel]; + + [self.stackView addArrangedSubview:self.nickStackView]; + [self.stackView addArrangedSubview:self.tagStackView]; + + [self.nickStackView addArrangedSubview:self.nickLabel]; + [self.nickStackView addArrangedSubview:self.sexImageView]; + + [self.tagStackView addArrangedSubview:self.roleButton]; + [self.tagStackView addArrangedSubview:self.experImageView]; + [self.tagStackView addArrangedSubview:self.charmImageView]; + [self.tagStackView addArrangedSubview:self.namePlateView]; + + ///铭牌 + [self.namePlateView addSubview:self.nameplateImageView]; + [self.namePlateView addSubview:self.nameplateLabel]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.contentView).offset(15); + make.width.height.mas_equalTo(40); + make.centerY.mas_equalTo(self.contentView.mas_centerY); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self); + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(10); + }]; + + [self.tagStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(25); + }]; + + [self.roleButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(38, 15)); + }]; + + [self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(25); + }]; + + [self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(25); + }]; + + [self.namePlateView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(25); + make.width.mas_equalTo(self.nameplateImageView.mas_width); + }]; + + + [self.nameplateImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(25); + make.width.mas_equalTo(60); + make.left.top.mas_equalTo(self.namePlateView); + }]; + + [self.nameplateLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.bottom.mas_equalTo(self.nameplateImageView); + make.right.mas_equalTo(self.namePlateView).offset(-2); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nickLabel); + make.right.mas_equalTo(self.contentView).offset(-15); + make.bottom.mas_equalTo(self.contentView); + make.height.mas_equalTo(0.5); + }]; + + [self.onMicroStatusLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.contentView); + make.right.mas_equalTo(-15); + make.width.mas_equalTo(32); + make.height.mas_equalTo(14); + }]; +} + + +#pragma mark - Getters And Setters +- (void)setMember:(NIMChatroomMember *)member { + _member = member; + if (_member) { + NSDictionary * extDic = [member.roomExt toJSONObject]; + XPMessageRemoteExtModel * userInfo = [XPMessageRemoteExtModel modelWithDictionary:[extDic objectForKey:member.userId]]; + if (userInfo.gender) { + self.sexImageView.image = userInfo.gender == GenderType_Female ? [UIImage imageNamed:@"common_female"] : [UIImage imageNamed:@"common_male"]; + } else { + NIMUser *user = [[NIMSDK sharedSDK].userManager userInfo:_member.userId]; + self.sexImageView.image = user.userInfo.gender == NIMUserGenderFemale ? [UIImage imageNamed:@"common_female"] : [UIImage imageNamed:@"common_male"]; + } + if (extDic.allKeys.count > 0 || (member.type == NIMTeamMemberTypeOwner || member.type == NIMChatroomMemberTypeManager)) { + self.tagStackView.hidden = NO; + + if (userInfo.experUrl) { + self.experImageView.imageUrl = userInfo.experUrl; + } + self.experImageView.hidden = userInfo.experUrl.length <= 0; + + if (userInfo.charmUrl) { + self.charmImageView.imageUrl = userInfo.charmUrl; + } + self.charmImageView.hidden = userInfo.charmUrl.length <= 0; + + if (userInfo.inRoomNameplatePic.length>0 && userInfo.inRoomNameplateWord.length>0) { + self.nameplateImageView.imageUrl = userInfo.inRoomNameplatePic; + self.nameplateLabel.text = userInfo.inRoomNameplateWord; + self.namePlateView.hidden = NO; + } else { + self.namePlateView.hidden = YES; + } + + if (_member.type == NIMTeamMemberTypeOwner) { + self.roleButton.hidden = NO; + [self.roleButton setBackgroundColor:[DJDKMIMOMColor appEmphasizeColor2]]; + [self.roleButton setTitle:YMLocalizedString(@"XPRoomOnlineTableViewCell0") forState:UIControlStateNormal]; + } else if(_member.type == NIMChatroomMemberTypeManager) { + self.roleButton.hidden = NO; + [self.roleButton setBackgroundColor:[DJDKMIMOMColor appEmphasizeColor]]; + [self.roleButton setTitle:YMLocalizedString(@"XPRoomOnlineTableViewCell1") forState:UIControlStateNormal]; + } else { + self.roleButton.hidden = YES; + } + } else { + self.tagStackView.hidden = YES; + } + if (userInfo.enterHide) { + self.nickLabel.text = YMLocalizedString(@"XPRoomOnlineTableViewCell2"); + self.avatarImageView.image = [UIImage imageNamed:@"room_secretMan"]; + self.sexImageView.hidden = YES; + self.tagStackView.hidden = YES; + self.isOnMicro = NO; + } else { + self.avatarImageView.imageUrl = _member.roomAvatar; + self.nickLabel.text = _member.roomNickname; + self.sexImageView.hidden = NO; + } + } +} + +- (void)setIsOnMicro:(BOOL)isOnMicro { + self.onMicroStatusLabel.hidden = !isOnMicro; +} + +- (void)setOnlineType:(RoomOnLineType)onlineType { + _onlineType = onlineType; + switch (_onlineType) { + case RoomOnLineType_All_User: + self.nickLabel.textColor = [UIColor whiteColor]; + self.backgroundColor = [UIColor clearColor]; + break; + case RoomOnLineType_Invite_User: + self.nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + self.backgroundColor = [UIColor clearColor]; + self.isOnMicro = NO; + break; + default: + break; + } +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 40/2; + _avatarImageView.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + } + return _avatarImageView; +} + +- (UIImageView *)sexImageView { + if (!_sexImageView) { + _sexImageView = [[UIImageView alloc] init]; + _sexImageView.userInteractionEnabled = YES; + } + return _sexImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:15]; + _nickLabel.textColor = [UIColor whiteColor]; + } + return _nickLabel; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFillProportionally; + _stackView.alignment = UIStackViewAlignmentLeading; + _stackView.spacing = 5; + } + return _stackView; +} + +- (UIStackView *)nickStackView { + if (!_nickStackView) { + _nickStackView = [[UIStackView alloc] init]; + _nickStackView.axis = UILayoutConstraintAxisHorizontal; + _nickStackView.distribution = UIStackViewDistributionFill; + _nickStackView.alignment = UIStackViewAlignmentCenter; + _nickStackView.spacing = 3; + } + return _nickStackView; +} + +- (UIStackView *)tagStackView { + if (!_tagStackView) { + _tagStackView = [[UIStackView alloc] init]; + _tagStackView.axis = UILayoutConstraintAxisHorizontal; + _tagStackView.distribution = UIStackViewDistributionFill; + _tagStackView.alignment = UIStackViewAlignmentCenter; + _tagStackView.spacing = 2; + } + return _tagStackView; +} +- (NetImageView *)experImageView { + if (!_experImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserCardLevel; + _experImageView = [[NetImageView alloc] initWithConfig:config]; + _experImageView.userInteractionEnabled = YES; + _experImageView.hidden = YES; + _experImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _experImageView; +} + +- (NetImageView *)charmImageView { + if (!_charmImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserCardLevel; + _charmImageView = [[NetImageView alloc] initWithConfig:config]; + _charmImageView.userInteractionEnabled = YES; + _charmImageView.hidden = YES; + _charmImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _charmImageView; +} + +- (UIView *)namePlateView { + if (!_namePlateView) { + _namePlateView = [[UIView alloc] init]; + _namePlateView.backgroundColor = [UIColor clearColor]; + _namePlateView.hidden = YES; + } + return _namePlateView; +} + +- (NetImageView *)nameplateImageView { + if (!_nameplateImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserCardLevel; + _nameplateImageView = [[NetImageView alloc] initWithConfig:config]; + _nameplateImageView.userInteractionEnabled = YES; + _nameplateImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _nameplateImageView; +} + +- (UILabel *)nameplateLabel { + if (!_nameplateLabel) { + _nameplateLabel = [[UILabel alloc] init]; + _nameplateLabel.font = [UIFont systemFontOfSize:10]; + _nameplateLabel.textAlignment = NSTextAlignmentCenter; + _nameplateLabel.textColor = [UIColor whiteColor]; + } + return _nameplateLabel; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [UIColor colorWithWhite:1 alpha:0.1]; + } + return _lineView; +} + +- (UIButton *)roleButton { + if (!_roleButton) { + _roleButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_roleButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _roleButton.titleLabel.font = [UIFont systemFontOfSize:10]; + _roleButton.layer.masksToBounds = YES; + _roleButton.layer.cornerRadius = 15 / 2; + } + return _roleButton; +} + +- (UILabel *)onMicroStatusLabel { + if (!_onMicroStatusLabel) { + _onMicroStatusLabel = [[UILabel alloc] init]; + _onMicroStatusLabel.text = YMLocalizedString(@"XPRoomOnlineTableViewCell3"); + _onMicroStatusLabel.textColor = UIColor.whiteColor; + _onMicroStatusLabel.font = [UIFont systemFontOfSize:10]; + _onMicroStatusLabel.textAlignment = NSTextAlignmentCenter; + _onMicroStatusLabel.layer.cornerRadius = 7; + _onMicroStatusLabel.layer.masksToBounds = YES; + _onMicroStatusLabel.backgroundColor = [DJDKMIMOMColor appEmphasizeColor]; + } + return _onMicroStatusLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomRoleEmptyTableViewCell.h b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomRoleEmptyTableViewCell.h new file mode 100644 index 00000000..9c292884 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomRoleEmptyTableViewCell.h @@ -0,0 +1,16 @@ +// +// YMRoomRoleEmptyTableViewCell.h +// YUMI +// +// Created by YUMI on 2021/12/29. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomRoleEmptyTableViewCell : UITableViewCell +@property (nonatomic,strong, readonly) UILabel *titleLabel; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomRoleEmptyTableViewCell.m b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomRoleEmptyTableViewCell.m new file mode 100644 index 00000000..447dd23a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomRoleEmptyTableViewCell.m @@ -0,0 +1,70 @@ +// +// YMRoomRoleEmptyTableViewCell.m +// YUMI +// +// Created by YUMI on 2021/12/29. +// + +#import "XPRoomRoleEmptyTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImageConstant.h" + +@interface XPRoomRoleEmptyTableViewCell () +@property (nonatomic,strong) UIImageView *emptyImageView; +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPRoomRoleEmptyTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.emptyImageView]; + [self.contentView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.emptyImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.contentView).offset(150); + make.centerX.mas_equalTo(self.contentView); + make.size.mas_equalTo(CGSizeMake(200, 200)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.emptyImageView.mas_bottom).offset(20); + make.left.right.mas_equalTo(self.contentView); + }]; +} +#pragma mark - Getters And Setters +- (UIImageView *)emptyImageView { + if (!_emptyImageView) { + _emptyImageView = [[UIImageView alloc] init]; + _emptyImageView.userInteractionEnabled = YES; + _emptyImageView.image = [UIImageConstant defalutEmptyPlaceholder]; + _emptyImageView.layer.masksToBounds = YES; + _emptyImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _emptyImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPRoomRoleEmptyTableViewCell0"); + _titleLabel.font = [UIFont systemFontOfSize:16]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _titleLabel; +} +@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomRoleTableViewCell.h b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomRoleTableViewCell.h new file mode 100644 index 00000000..323d5907 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomRoleTableViewCell.h @@ -0,0 +1,28 @@ +// +// YMRoomRoleTableViewCell.h +// YUMI +// +// Created by YUMI on 2021/12/29. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class NIMChatroomMember, XPRoomRoleTableViewCell; +@protocol XPRoomRoleTableViewCellDelegate + +///点击了member +- (void)xPRoomRoleTableViewCell:(XPRoomRoleTableViewCell *)view didClickMember:(NIMChatroomMember *)member; + +@end + +@interface XPRoomRoleTableViewCell : UITableViewCell +///分割线 +@property (nonatomic,strong, readonly) UIView * lineView; +///云信用户实体 +@property (strong, nonatomic) NIMChatroomMember *member; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomRoleTableViewCell.m b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomRoleTableViewCell.m new file mode 100644 index 00000000..ba25be4b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomRoleTableViewCell.m @@ -0,0 +1,153 @@ +// +// YMRoomRoleTableViewCell.m +// YUMI +// +// Created by YUMI on 2021/12/29. +// + +#import "XPRoomRoleTableViewCell.h" +///Third +#import +#import +///Tool +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "XPMessageRemoteExtModel.h" + +@interface XPRoomRoleTableViewCell () +///显示头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///性别 +@property (nonatomic,strong) UIImageView *sexImageView; +///显示姓名 +@property (nonatomic,strong) UILabel *nickLabel; +///移除 +@property (nonatomic,strong) UIButton *removeButton; +///分割线 +@property (nonatomic,strong) UIView * lineView; +@end + +@implementation XPRoomRoleTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.avatarImageView]; + [self.contentView addSubview:self.nickLabel]; + [self.contentView addSubview:self.sexImageView]; + [self.contentView addSubview:self.removeButton]; + [self.contentView addSubview:self.lineView]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.contentView).offset(15); + make.width.height.mas_equalTo(40); + make.centerY.mas_equalTo(self.contentView.mas_centerY); + }]; + +[self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self); + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(10); +}]; + + [self.sexImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self); + make.left.mas_equalTo(self.nickLabel.mas_right).offset(10); + }]; + + [self.removeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.contentView.mas_centerY); + make.right.mas_equalTo(self.contentView).offset(-15); + make.width.mas_equalTo(65); + make.height.mas_equalTo(30); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nickLabel); + make.right.mas_equalTo(self.removeButton); + make.bottom.mas_equalTo(self.contentView); + make.height.mas_equalTo(1); + }]; +} + +#pragma mark - Event Response +- (void)removeButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomRoleTableViewCell:didClickMember:)]) { + [self.delegate xPRoomRoleTableViewCell:self didClickMember:self.member]; + } +} + +#pragma mark - Getters And Setters +- (void)setMember:(NIMChatroomMember *)member { + _member = member; + if (_member) { + self.avatarImageView.imageUrl = _member.roomAvatar; + self.nickLabel.text = _member.roomNickname; + } +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 40/2; + _avatarImageView.layer.borderColor = [DJDKMIMOMColor appMainColor].CGColor; + } + return _avatarImageView; +} + +- (UIImageView *)sexImageView { + if (!_sexImageView) { + _sexImageView = [[UIImageView alloc] init]; + _sexImageView.userInteractionEnabled = YES; + } + return _sexImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:15]; + _nickLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _nickLabel; +} + +- (UIButton *)removeButton { + if (!_removeButton) { + _removeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_removeButton setTitle:YMLocalizedString(@"XPRoomRoleTableViewCell0") forState:UIControlStateNormal]; + [_removeButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + _removeButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_removeButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientStartColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _removeButton.layer.masksToBounds = YES; + _removeButton.layer.cornerRadius = 15; + [_removeButton addTarget:self action:@selector(removeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _removeButton; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _lineView; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomSettingTableViewCell.h b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomSettingTableViewCell.h new file mode 100644 index 00000000..6421ccb2 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomSettingTableViewCell.h @@ -0,0 +1,26 @@ +// +// YMRoomSettingTableViewCell.h +// YUMI +// +// Created by YUMI on 2021/12/27. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPRoomSettingItemModel; +@protocol XPRoomSettingTableViewCellDelegate + +///改变了switch的状态 +- (void)didChangeSwitch:(UISwitch *)switchView itemModel:(XPRoomSettingItemModel *)itemModel; + +@end +@interface XPRoomSettingTableViewCell : UITableViewCell + +///显示 +@property (nonatomic,strong) XPRoomSettingItemModel *itemModel; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomSettingTableViewCell.m b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomSettingTableViewCell.m new file mode 100644 index 00000000..cfbdfc98 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomSettingTableViewCell.m @@ -0,0 +1,187 @@ +// +// YMRoomSettingTableViewCell.m +// YUMI +// +// Created by YUMI on 2021/12/27. +// + +#import "XPRoomSettingTableViewCell.h" +///Third +#import +///Tool +#import "ThemeColor+Room.h" +///Model +#import "XPRoomSettingItemModel.h" + +@interface XPRoomSettingTableViewCell () +///标题的容器 +@property (nonatomic,strong) UIStackView *titleStackView; +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///离开模式 +@property (nonatomic,strong) UILabel *leaveLabel; +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///副标题 +@property (nonatomic,strong) UILabel *subTitleLabel; +///开关 +@property (nonatomic,strong) UISwitch *switchView; +///箭头 +@property (nonatomic,strong) UIImageView *arrowImageView; +///分割线 +@property (nonatomic,strong) UIView * lineView; +@end + +@implementation XPRoomSettingTableViewCell +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + self.selectionStyle = UITableViewCellSelectionStyleNone; + self.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + [self.contentView addSubview:self.titleStackView]; + [self.contentView addSubview:self.stackView]; + [self.contentView addSubview:self.lineView]; + + [self.titleStackView addArrangedSubview:self.titleLabel]; + [self.titleStackView addArrangedSubview:self.leaveLabel]; + + [self.stackView addArrangedSubview:self.subTitleLabel]; + [self.stackView addArrangedSubview:self.switchView]; + [self.stackView addArrangedSubview:self.arrowImageView]; +} + +- (void)initSubViewConstraints { + [self.titleStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.contentView).offset(15); + make.centerY.mas_equalTo(self.contentView); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.contentView).offset(-15); + make.centerY.mas_equalTo(self.contentView); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + make.bottom.mas_equalTo(0); + make.height.mas_equalTo(0.5); + }]; +} +#pragma mark - Event Response +- (void)switchDidChange:(UISwitch *)swtich { + if (self.delegate && [self.delegate respondsToSelector:@selector(didChangeSwitch:itemModel:)]) { + [self.delegate didChangeSwitch:swtich itemModel:self.itemModel]; + } +} + +#pragma mark - Getters And Setters +- (void)setItemModel:(XPRoomSettingItemModel *)itemModel { + _itemModel = itemModel; + self.titleLabel.text = _itemModel.title; + if (_itemModel.type == RoomSettingItemType_Title || _itemModel.type == RoomSettingItemType_Class || _itemModel.type == RoomSettingItemType_Tag || _itemModel.type == RoomSettingItemType_Black_List || _itemModel.type == RoomSettingItemType_Manager_List || _itemModel.type == RoomSettingItemType_Pwd) { + self.switchView.hidden = YES; + self.arrowImageView.hidden = NO; + self.subTitleLabel.hidden = NO; + self.subTitleLabel.text = _itemModel.subTitle.length > 0 ? _itemModel.subTitle : @""; + } else { + self.switchView.hidden = NO; + self.arrowImageView.hidden = YES; + self.subTitleLabel.hidden = YES; + self.switchView.on = _itemModel.switchState; + } + + if (_itemModel.type == RoomSettingItemType_Leave_Model && _itemModel.switchState) { + self.leaveLabel.hidden = NO; + } else { + self.leaveLabel.hidden = YES; + } +} + +- (UIStackView *)titleStackView { + if (!_titleStackView) { + _titleStackView = [[UIStackView alloc] init]; + _titleStackView.axis = UILayoutConstraintAxisVertical; + _titleStackView.distribution = UIStackViewDistributionFill; + _titleStackView.alignment = UIStackViewAlignmentLeading; + _stackView.spacing = 3; + } + return _titleStackView; +} + +- (UILabel *)titleLabel { + if (_titleLabel == nil) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _titleLabel.font = [UIFont systemFontOfSize:15]; + [_titleLabel setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + } + return _titleLabel; +} + +- (UILabel *)leaveLabel { + if (!_leaveLabel) { + _leaveLabel = [[UILabel alloc] init]; + _leaveLabel.textColor = [DJDKMIMOMColor textThirdColor]; + _leaveLabel.font = [UIFont systemFontOfSize:13]; + _leaveLabel.text = YMLocalizedString(@"XPRoomSettingTableViewCell0"); + } + return _leaveLabel; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentCenter; + _stackView.spacing = 8; + } + return _stackView; +} + +- (UIImageView *)arrowImageView { + if (_arrowImageView == nil) { + _arrowImageView = [[UIImageView alloc] init]; + _arrowImageView.image = [UIImage imageNamed:@"room_setting_arrow"]; + [_arrowImageView setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + [_arrowImageView setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical]; + } + return _arrowImageView; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _lineView; +} + +- (UISwitch *)switchView { + if (!_switchView) { + _switchView = [[UISwitch alloc] init]; + _switchView.onTintColor = [DJDKMIMOMColor appEmphasizeColor]; + _switchView.tintColor = [DJDKMIMOMColor appMainColor]; + _switchView.backgroundColor = [UIColor clearColor]; + [_switchView addTarget:self action:@selector(switchDidChange:) forControlEvents:UIControlEventValueChanged]; + } + return _switchView; +} + +- (UILabel *)subTitleLabel { + if (!_subTitleLabel) { + _subTitleLabel = [[UILabel alloc] init]; + _subTitleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _subTitleLabel.font = [UIFont systemFontOfSize:12]; + } + return _subTitleLabel; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomSettingTagCell.h b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomSettingTagCell.h new file mode 100644 index 00000000..3971cf65 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomSettingTagCell.h @@ -0,0 +1,20 @@ +// +// YMRoomSettingTagCell.h +// YUMI +// +// Created by YUMI on 2021/12/28. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class RoomTagModel, RoomClassifyModel; + +@interface XPRoomSettingTagCell : UICollectionViewCell +///房间tag +@property (nonatomic,strong) RoomTagModel *roomTag; +@property (nonatomic, strong) RoomClassifyModel *roomClassify; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomSettingTagCell.m b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomSettingTagCell.m new file mode 100644 index 00000000..46100658 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomSettingTagCell.m @@ -0,0 +1,80 @@ +// +// YMRoomSettingTagCell.m +// YUMI +// +// Created by YUMI on 2021/12/28. +// + +#import "XPRoomSettingTagCell.h" +///Third +#import +///Model +#import "RoomTagModel.h" +#import "DJDKMIMOMColor.h" +#import "RoomClassifyModel.h" + +@interface XPRoomSettingTagCell () +@property (nonatomic, strong) UILabel *tagLabel; +@end + +@implementation XPRoomSettingTagCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + self.backgroundColor = [UIColor colorWithWhite:1 alpha:0.08]; + self.layer.cornerRadius = 13; + self.layer.masksToBounds = YES; + self.layer.borderWidth = 0.5; + [self addSubview:self.tagLabel]; + [self.tagLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self); + }]; + } + return self; +} + +- (void)setRoomTag:(RoomTagModel *)roomTag { + _roomTag = roomTag; + if (_roomTag) { + self.tagLabel.text = _roomTag.name; + if (_roomTag.isSelect) { + self.backgroundColor = UIColorFromRGB(0xFFF0C9); + self.tagLabel.textColor = UIColorFromRGB(0xFFA936); + self.layer.borderColor = UIColorFromRGB(0xFFBC51).CGColor; + } else { + self.backgroundColor = UIColorFromRGB(0xF1F1FA); + self.tagLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.layer.borderColor = UIColorFromRGB(0xF1F1FA).CGColor; + } + } +} + +- (void)setRoomClassify:(RoomClassifyModel *)roomClassify { + _roomClassify = roomClassify; + if (_roomClassify) { + self.tagLabel.text = _roomClassify.sortName; + if (_roomClassify.isSelect) { + self.backgroundColor = UIColorFromRGB(0xFFF0C9); + self.tagLabel.textColor = UIColorFromRGB(0xFFA936); + self.layer.borderColor = UIColorFromRGB(0xFFBC51).CGColor; + } else { + self.backgroundColor = UIColorFromRGB(0xF1F1FA); + self.tagLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.layer.borderColor = UIColorFromRGB(0xF1F1FA).CGColor; + } + } +} + +#pragma mark - Getter & Setter +- (UILabel *)tagLabel { + if (!_tagLabel) { + _tagLabel = [[UILabel alloc] init]; + _tagLabel.textColor = UIColor.whiteColor; + _tagLabel.font = [UIFont systemFontOfSize:12]; + } + return _tagLabel; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberInstanllingCoupleElement.h b/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberInstanllingCoupleElement.h deleted file mode 100644 index bdfb797b..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberInstanllingCoupleElement.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMRoomSettingTagCell.h -// YUMI -// -// Created by YUMI on 2021/12/28. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ChamberCoupleMatrix, ChamberClassifyMatrix; - -@interface YUMIChamberInstanllingCoupleElement : UICollectionViewCell -@property (nonatomic,strong) ChamberCoupleMatrix *roomTag; -@property (nonatomic, strong) ChamberClassifyMatrix *chamberCategorized; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberInstanllingCoupleElement.m b/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberInstanllingCoupleElement.m deleted file mode 100644 index 19804934..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberInstanllingCoupleElement.m +++ /dev/null @@ -1,78 +0,0 @@ -// -// YMRoomSettingTagCell.m -// YUMI -// -// Created by YUMI on 2021/12/28. -// - -#import "YUMIChamberInstanllingCoupleElement.h" -#import -#import "ChamberCoupleMatrix.h" -#import "DJDKMIMOMColor.h" -#import "ChamberClassifyMatrix.h" - -@interface YUMIChamberInstanllingCoupleElement () -@property (nonatomic, strong) UILabel *coupleSequencignation; -@end - -@implementation YUMIChamberInstanllingCoupleElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - self.backgroundColor = [UIColor colorWithWhite:1 alpha:0.08]; - self.layer.cornerRadius = 13; - self.layer.masksToBounds = YES; - self.layer.borderWidth = 0.5; - [self addSubview:self.coupleSequencignation]; - [self.coupleSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.mas_equalTo(self); - }]; - } - return self; -} - -- (void)setRoomTag:(ChamberCoupleMatrix *)roomTag { - _roomTag = roomTag; - if (_roomTag) { - self.coupleSequencignation.text = _roomTag.name; - if (_roomTag.isSelect) { - self.backgroundColor = UIColorFromRGB(0xFFF0C9); - self.coupleSequencignation.textColor = UIColorFromRGB(0xFFA936); - self.layer.borderColor = UIColorFromRGB(0xFFBC51).CGColor; - } else { - self.backgroundColor = UIColorFromRGB(0xF1F1FA); - self.coupleSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.layer.borderColor = UIColorFromRGB(0xF1F1FA).CGColor; - } - } -} - -- (void)setChamberCategorized:(ChamberClassifyMatrix *)chamberCategorized { - _chamberCategorized = chamberCategorized; - if (_chamberCategorized) { - self.coupleSequencignation.text = _chamberCategorized.sortName; - if (_chamberCategorized.isSelect) { - self.backgroundColor = UIColorFromRGB(0xFFF0C9); - self.coupleSequencignation.textColor = UIColorFromRGB(0xFFA936); - self.layer.borderColor = UIColorFromRGB(0xFFBC51).CGColor; - } else { - self.backgroundColor = UIColorFromRGB(0xF1F1FA); - self.coupleSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.layer.borderColor = UIColorFromRGB(0xF1F1FA).CGColor; - } - } -} - -#pragma mark - Getter & Setter -- (UILabel *)coupleSequencignation { - if (!_coupleSequencignation) { - _coupleSequencignation = [[UILabel alloc] init]; - _coupleSequencignation.textColor = UIColor.whiteColor; - _coupleSequencignation.font = [UIFont systemFontOfSize:12]; - } - return _coupleSequencignation; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberInstanllingTabulationRegardElement.h b/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberInstanllingTabulationRegardElement.h deleted file mode 100644 index 80fb2aed..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberInstanllingTabulationRegardElement.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMRoomSettingTableViewCell.h -// YUMI -// -// Created by YUMI on 2021/12/27. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIChamberInstanllingProvisionMatrix; -@protocol FBCChamberInstanllingTabulationViweElementRepresendtation - -- (void)didDiversifictowardsionSwop:(UISwitch *)switchView itemMatrix:(YUMIChamberInstanllingProvisionMatrix *)itemMatrix; - -@end -@interface YUMIChamberInstanllingTabulationRegardElement : UITableViewCell - -@property (nonatomic,strong) YUMIChamberInstanllingProvisionMatrix *itemMatrix; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberInstanllingTabulationRegardElement.m b/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberInstanllingTabulationRegardElement.m deleted file mode 100644 index 43780953..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberInstanllingTabulationRegardElement.m +++ /dev/null @@ -1,176 +0,0 @@ -// -// YMRoomSettingTableViewCell.m -// YUMI -// -// Created by YUMI on 2021/12/27. -// - -#import "YUMIChamberInstanllingTabulationRegardElement.h" -#import -#import "ThemeColor+Room.h" -#import "YUMIChamberInstanllingProvisionMatrix.h" - -@interface YUMIChamberInstanllingTabulationRegardElement () -@property (nonatomic,strong) UIStackView *championHierarchyRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UILabel *leaveSequencignation; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UILabel *subChampionSequencignation; -@property (nonatomic,strong) UISwitch *switchView; -@property (nonatomic,strong) UIImageView *arrowIndicateRegard; -@property (nonatomic,strong) UIView * burlywoodRegard; -@end - -@implementation YUMIChamberInstanllingTabulationRegardElement -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - self.selectionStyle = UITableViewCellSelectionStyleNone; - self.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - [self.contentView addSubview:self.championHierarchyRegard]; - [self.contentView addSubview:self.stackView]; - [self.contentView addSubview:self.burlywoodRegard]; - - [self.championHierarchyRegard addArrangedSubview:self.titleLabel]; - [self.championHierarchyRegard addArrangedSubview:self.leaveSequencignation]; - - [self.stackView addArrangedSubview:self.subChampionSequencignation]; - [self.stackView addArrangedSubview:self.switchView]; - [self.stackView addArrangedSubview:self.arrowIndicateRegard]; -} - -- (void)initChildLyRestrictions { - [self.championHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.contentView).offset(15); - make.centerY.mas_equalTo(self.contentView); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.contentView).offset(-15); - make.centerY.mas_equalTo(self.contentView); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(15); - make.bottom.mas_equalTo(0); - make.height.mas_equalTo(0.5); - }]; -} -#pragma mark - Event Response -- (void)swopDidDiversifictowardsion:(UISwitch *)swtich { - if (self.delegate && [self.delegate respondsToSelector:@selector(didDiversifictowardsionSwop:itemMatrix:)]) { - [self.delegate didDiversifictowardsionSwop:swtich itemMatrix:self.itemMatrix]; - } -} - -#pragma mark - Getters And Setters -- (void)setItemMatrix:(YUMIChamberInstanllingProvisionMatrix *)itemMatrix { - _itemMatrix = itemMatrix; - self.titleLabel.text = _itemMatrix.title; - if (_itemMatrix.type == ChamberInstanllingProvisionGenre_Title || _itemMatrix.type == ChamberInstanllingProvisionGenre_Class || _itemMatrix.type == ChamberInstanllingProvisionGenre_Tag || _itemMatrix.type == ChamberInstanllingProvisionGenre_Black_List || _itemMatrix.type == ChamberInstanllingProvisionGenre_Manager_List || _itemMatrix.type == ChamberInstanllingProvisionGenre_Pwd) { - self.switchView.hidden = YES; - self.arrowIndicateRegard.hidden = NO; - self.subChampionSequencignation.hidden = NO; - self.subChampionSequencignation.text = _itemMatrix.subTitle.length > 0 ? _itemMatrix.subTitle : @""; - } else { - self.switchView.hidden = NO; - self.arrowIndicateRegard.hidden = YES; - self.subChampionSequencignation.hidden = YES; - self.switchView.on = _itemMatrix.switchState; - } - - if (_itemMatrix.type == ChamberInstanllingProvisionGenre_Leave_Model && _itemMatrix.switchState) { - self.leaveSequencignation.hidden = NO; - } else { - self.leaveSequencignation.hidden = YES; - } -} - -- (UIStackView *)championHierarchyRegard { - if (!_championHierarchyRegard) { - _championHierarchyRegard = [[UIStackView alloc] init]; - _championHierarchyRegard.axis = UILayoutConstraintAxisVertical; - _championHierarchyRegard.distribution = UIStackViewDistributionFill; - _championHierarchyRegard.alignment = UIStackViewAlignmentLeading; - _stackView.spacing = 3; - } - return _championHierarchyRegard; -} - -- (UILabel *)titleLabel { - if (_titleLabel == nil) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleLabel.font = [UIFont systemFontOfSize:15]; - [_titleLabel setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - } - return _titleLabel; -} - -- (UILabel *)leaveSequencignation { - if (!_leaveSequencignation) { - _leaveSequencignation = [[UILabel alloc] init]; - _leaveSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - _leaveSequencignation.font = [UIFont systemFontOfSize:13]; - _leaveSequencignation.text = YMLocalizedString(@"YUMI_Room_Setting_Table_View_Cell_0"); - } - return _leaveSequencignation; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentCenter; - _stackView.spacing = 8; - } - return _stackView; -} - -- (UIImageView *)arrowIndicateRegard { - if (_arrowIndicateRegard == nil) { - _arrowIndicateRegard = [[UIImageView alloc] init]; - _arrowIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_setting_arrow"]; - [_arrowIndicateRegard setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - [_arrowIndicateRegard setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical]; - } - return _arrowIndicateRegard; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _burlywoodRegard; -} - -- (UISwitch *)switchView { - if (!_switchView) { - _switchView = [[UISwitch alloc] init]; - _switchView.onTintColor = [DJDKMIMOMColor aplictowardsionUnderlinePrettify]; - _switchView.tintColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - _switchView.backgroundColor = [UIColor clearColor]; - [_switchView addTarget:self action:@selector(swopDidDiversifictowardsion:) forControlEvents:UIControlEventValueChanged]; - } - return _switchView; -} - -- (UILabel *)subChampionSequencignation { - if (!_subChampionSequencignation) { - _subChampionSequencignation = [[UILabel alloc] init]; - _subChampionSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _subChampionSequencignation.font = [UIFont systemFontOfSize:12]; - } - return _subChampionSequencignation; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberOnlineTabulationRegardElement.h b/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberOnlineTabulationRegardElement.h deleted file mode 100644 index 472830ff..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberOnlineTabulationRegardElement.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YMRoomOnlineTableViewCell.h -// YUMI -// -// Created by YUMI on 2021/12/30. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class NIMChatroomMember; -typedef NS_ENUM(NSInteger, ChamberOnLineGenre) { - - ChamberOnLineGenre_All_User = 0, - - ChamberOnLineGenre_Invite_User -}; - -@interface YUMIChamberOnlineTabulationRegardElement : UITableViewCell -@property (nonatomic,assign) ChamberOnLineGenre onlineGenre; -@property (strong, nonatomic) NIMChatroomMember *member; -@property (nonatomic,assign) BOOL isOnMicro; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberOnlineTabulationRegardElement.m b/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberOnlineTabulationRegardElement.m deleted file mode 100644 index 5e611bbc..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberOnlineTabulationRegardElement.m +++ /dev/null @@ -1,363 +0,0 @@ -// -// YMRoomOnlineTableViewCell.m -// YUMI -// -// Created by YUMI on 2021/12/30. -// - -#import "YUMIChamberOnlineTabulationRegardElement.h" -#import -#import -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "YUMICommunicationRemoteExtMatrix.h" - -@interface YUMIChamberOnlineTabulationRegardElement () -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UIImageView *seaxualityIndicateRegard; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UIStackView *monicerHierarchyRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UIStackView *coupleHierarchyRegard; -@property (nonatomic,strong) UIButton *roleBtuton; -@property (nonatomic,strong) NetIndicateRegard *fascinationIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *experIndicateRegard; -@property (nonatomic,strong) UIView * constituteWoodentrayRegard; -@property (nonatomic,strong) NetIndicateRegard *materialIndicateRegard; -@property (nonatomic,strong) UILabel *materialSequencignation; -@property (nonatomic,strong) UIView * burlywoodRegard; -@property (strong, nonatomic) UILabel *onMiecreoscoopePositionSequencignation; -@end - -@implementation YUMIChamberOnlineTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.stackView]; - [self.contentView addSubview:self.burlywoodRegard]; - [self.contentView addSubview:self.onMiecreoscoopePositionSequencignation]; - - [self.stackView addArrangedSubview:self.monicerHierarchyRegard]; - [self.stackView addArrangedSubview:self.coupleHierarchyRegard]; - - [self.monicerHierarchyRegard addArrangedSubview:self.monicerSequencignation]; - [self.monicerHierarchyRegard addArrangedSubview:self.seaxualityIndicateRegard]; - - [self.coupleHierarchyRegard addArrangedSubview:self.roleBtuton]; - [self.coupleHierarchyRegard addArrangedSubview:self.experIndicateRegard]; - [self.coupleHierarchyRegard addArrangedSubview:self.fascinationIndicateRegard]; - [self.coupleHierarchyRegard addArrangedSubview:self.constituteWoodentrayRegard]; - - - [self.constituteWoodentrayRegard addSubview:self.materialIndicateRegard]; - [self.constituteWoodentrayRegard addSubview:self.materialSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.contentView).offset(15); - make.width.height.mas_equalTo(40); - make.centerY.mas_equalTo(self.contentView.mas_centerY); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self); - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(10); - }]; - - [self.coupleHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(25); - }]; - - [self.roleBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(38, 15)); - }]; - - [self.experIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(25); - }]; - - [self.fascinationIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(25); - }]; - - [self.constituteWoodentrayRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(25); - make.width.mas_equalTo(self.materialIndicateRegard.mas_width); - }]; - - - [self.materialIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(25); - make.width.mas_equalTo(60); - make.left.top.mas_equalTo(self.constituteWoodentrayRegard); - }]; - - [self.materialSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.bottom.mas_equalTo(self.materialIndicateRegard); - make.right.mas_equalTo(self.constituteWoodentrayRegard).offset(-2); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.monicerSequencignation); - make.right.mas_equalTo(self.contentView).offset(-15); - make.bottom.mas_equalTo(self.contentView); - make.height.mas_equalTo(0.5); - }]; - - [self.onMiecreoscoopePositionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.contentView); - make.right.mas_equalTo(-15); - make.width.mas_equalTo(32); - make.height.mas_equalTo(14); - }]; -} - - -#pragma mark - Getters And Setters -- (void)setMember:(NIMChatroomMember *)member { - _member = member; - if (_member) { - NSDictionary * extDic = [member.roomExt toJSONGroal]; - YUMICommunicationRemoteExtMatrix * userInfo = [YUMICommunicationRemoteExtMatrix mtowardsrixAboutImpactbasket:[extDic objectForKey:member.userId]]; - if (userInfo.gender) { - self.seaxualityIndicateRegard.image = userInfo.gender == GenderGenre_Female ? [UIImage imageNamed:@"yumi_same_female"] : [UIImage imageNamed:@"yumi_same_male"]; - } else { - NIMUser *user = [[NIMSDK sharedSDK].userManager userInfo:_member.userId]; - self.seaxualityIndicateRegard.image = user.userInfo.gender == NIMUserGenderFemale ? [UIImage imageNamed:@"yumi_same_female"] : [UIImage imageNamed:@"yumi_same_male"]; - } - if (extDic.allKeys.count > 0 || (member.type == NIMTeamMemberTypeOwner || member.type == NIMChatroomMemberTypeManager)) { - self.coupleHierarchyRegard.hidden = NO; - - if (userInfo.experUrl) { - self.experIndicateRegard.imageUrl = userInfo.experUrl; - } - self.experIndicateRegard.hidden = userInfo.experUrl.length <= 0; - - if (userInfo.charmUrl) { - self.fascinationIndicateRegard.imageUrl = userInfo.charmUrl; - } - self.fascinationIndicateRegard.hidden = userInfo.charmUrl.length <= 0; - - if (userInfo.inRoomNameplatePic.length>0 && userInfo.inRoomNameplateWord.length>0) { - self.materialIndicateRegard.imageUrl = userInfo.inRoomNameplatePic; - self.materialSequencignation.text = userInfo.inRoomNameplateWord; - self.constituteWoodentrayRegard.hidden = NO; - } else { - self.constituteWoodentrayRegard.hidden = YES; - } - - if (_member.type == NIMTeamMemberTypeOwner) { - self.roleBtuton.hidden = NO; - [self.roleBtuton setBackgroundColor:[DJDKMIMOMColor aplictowardsionUnderlinePrettify2]]; - [self.roleBtuton setTitle:YMLocalizedString(@"YUMI_Room_Online_Table_View_Cell_0") forState:UIControlStateNormal]; - } else if(_member.type == NIMChatroomMemberTypeManager) { - self.roleBtuton.hidden = NO; - [self.roleBtuton setBackgroundColor:[DJDKMIMOMColor aplictowardsionUnderlinePrettify]]; - [self.roleBtuton setTitle:YMLocalizedString(@"YUMI_Room_Online_Table_View_Cell_1") forState:UIControlStateNormal]; - } else { - self.roleBtuton.hidden = YES; - } - } else { - self.coupleHierarchyRegard.hidden = YES; - } - if (userInfo.enterHide) { - self.monicerSequencignation.text = YMLocalizedString(@"YUMI_Room_Online_Table_View_Cell_2"); - self.intelligenceportraitIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_secretMan"]; - self.seaxualityIndicateRegard.hidden = YES; - self.coupleHierarchyRegard.hidden = YES; - self.isOnMicro = NO; - } else { - self.intelligenceportraitIndicateRegard.imageUrl = _member.roomAvatar; - self.monicerSequencignation.text = _member.roomNickname; - self.seaxualityIndicateRegard.hidden = NO; - } - } -} - -- (void)setIsOnMicro:(BOOL)isOnMicro { - self.onMiecreoscoopePositionSequencignation.hidden = !isOnMicro; -} - -- (void)setOnlineGenre:(ChamberOnLineGenre)onlineGenre { - _onlineGenre = onlineGenre; - switch (_onlineGenre) { - case ChamberOnLineGenre_All_User: - self.monicerSequencignation.textColor = [UIColor whiteColor]; - self.backgroundColor = [UIColor clearColor]; - break; - case ChamberOnLineGenre_Invite_User: - self.monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - self.backgroundColor = [UIColor clearColor]; - self.isOnMicro = NO; - break; - default: - break; - } -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 40/2; - _intelligenceportraitIndicateRegard.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - } - return _intelligenceportraitIndicateRegard; -} - -- (UIImageView *)seaxualityIndicateRegard { - if (!_seaxualityIndicateRegard) { - _seaxualityIndicateRegard = [[UIImageView alloc] init]; - _seaxualityIndicateRegard.userInteractionEnabled = YES; - } - return _seaxualityIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:15]; - _monicerSequencignation.textColor = [UIColor whiteColor]; - } - return _monicerSequencignation; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFillProportionally; - _stackView.alignment = UIStackViewAlignmentLeading; - _stackView.spacing = 5; - } - return _stackView; -} - -- (UIStackView *)monicerHierarchyRegard { - if (!_monicerHierarchyRegard) { - _monicerHierarchyRegard = [[UIStackView alloc] init]; - _monicerHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _monicerHierarchyRegard.distribution = UIStackViewDistributionFill; - _monicerHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _monicerHierarchyRegard.spacing = 3; - } - return _monicerHierarchyRegard; -} - -- (UIStackView *)coupleHierarchyRegard { - if (!_coupleHierarchyRegard) { - _coupleHierarchyRegard = [[UIStackView alloc] init]; - _coupleHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _coupleHierarchyRegard.distribution = UIStackViewDistributionFill; - _coupleHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _coupleHierarchyRegard.spacing = 2; - } - return _coupleHierarchyRegard; -} -- (NetIndicateRegard *)experIndicateRegard { - if (!_experIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.imageType = ImageGenreUserCardLevel; - _experIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _experIndicateRegard.userInteractionEnabled = YES; - _experIndicateRegard.hidden = YES; - _experIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _experIndicateRegard; -} - -- (NetIndicateRegard *)fascinationIndicateRegard { - if (!_fascinationIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.imageType = ImageGenreUserCardLevel; - _fascinationIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _fascinationIndicateRegard.userInteractionEnabled = YES; - _fascinationIndicateRegard.hidden = YES; - _fascinationIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _fascinationIndicateRegard; -} - -- (UIView *)constituteWoodentrayRegard { - if (!_constituteWoodentrayRegard) { - _constituteWoodentrayRegard = [[UIView alloc] init]; - _constituteWoodentrayRegard.backgroundColor = [UIColor clearColor]; - _constituteWoodentrayRegard.hidden = YES; - } - return _constituteWoodentrayRegard; -} - -- (NetIndicateRegard *)materialIndicateRegard { - if (!_materialIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.imageType = ImageGenreUserCardLevel; - _materialIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _materialIndicateRegard.userInteractionEnabled = YES; - _materialIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _materialIndicateRegard; -} - -- (UILabel *)materialSequencignation { - if (!_materialSequencignation) { - _materialSequencignation = [[UILabel alloc] init]; - _materialSequencignation.font = [UIFont systemFontOfSize:10]; - _materialSequencignation.textAlignment = NSTextAlignmentCenter; - _materialSequencignation.textColor = [UIColor whiteColor]; - } - return _materialSequencignation; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [UIColor colorWithWhite:1 alpha:0.1]; - } - return _burlywoodRegard; -} - -- (UIButton *)roleBtuton { - if (!_roleBtuton) { - _roleBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_roleBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _roleBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - _roleBtuton.layer.masksToBounds = YES; - _roleBtuton.layer.cornerRadius = 15 / 2; - } - return _roleBtuton; -} - -- (UILabel *)onMiecreoscoopePositionSequencignation { - if (!_onMiecreoscoopePositionSequencignation) { - _onMiecreoscoopePositionSequencignation = [[UILabel alloc] init]; - _onMiecreoscoopePositionSequencignation.text = YMLocalizedString(@"YUMI_Room_Online_Table_View_Cell_3"); - _onMiecreoscoopePositionSequencignation.textColor = UIColor.whiteColor; - _onMiecreoscoopePositionSequencignation.font = [UIFont systemFontOfSize:10]; - _onMiecreoscoopePositionSequencignation.textAlignment = NSTextAlignmentCenter; - _onMiecreoscoopePositionSequencignation.layer.cornerRadius = 7; - _onMiecreoscoopePositionSequencignation.layer.masksToBounds = YES; - _onMiecreoscoopePositionSequencignation.backgroundColor = [DJDKMIMOMColor aplictowardsionUnderlinePrettify]; - } - return _onMiecreoscoopePositionSequencignation; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberRoleDispossessTabulationRegardElement.h b/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberRoleDispossessTabulationRegardElement.h deleted file mode 100644 index 5f998a5e..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberRoleDispossessTabulationRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomRoleEmptyTableViewCell.h -// YUMI -// -// Created by YUMI on 2021/12/29. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberRoleDispossessTabulationRegardElement : UITableViewCell -@property (nonatomic,strong, readonly) UILabel *titleLabel; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberRoleDispossessTabulationRegardElement.m b/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberRoleDispossessTabulationRegardElement.m deleted file mode 100644 index e7caa7fa..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberRoleDispossessTabulationRegardElement.m +++ /dev/null @@ -1,68 +0,0 @@ -// -// YMRoomRoleEmptyTableViewCell.m -// YUMI -// -// Created by YUMI on 2021/12/29. -// - -#import "YUMIChamberRoleDispossessTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIIndicateConstant.h" - -@interface YUMIChamberRoleDispossessTabulationRegardElement () -@property (nonatomic,strong) UIImageView *dispossessIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@end - -@implementation YUMIChamberRoleDispossessTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.dispossessIndicateRegard]; - [self.contentView addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.dispossessIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.contentView).offset(150); - make.centerX.mas_equalTo(self.contentView); - make.size.mas_equalTo(CGSizeMake(200, 200)); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.dispossessIndicateRegard.mas_bottom).offset(20); - make.left.right.mas_equalTo(self.contentView); - }]; -} -#pragma mark - Getters And Setters -- (UIImageView *)dispossessIndicateRegard { - if (!_dispossessIndicateRegard) { - _dispossessIndicateRegard = [[UIImageView alloc] init]; - _dispossessIndicateRegard.userInteractionEnabled = YES; - _dispossessIndicateRegard.image = [UIIndicateConstant defalutDispossessDepapossessor]; - _dispossessIndicateRegard.layer.masksToBounds = YES; - _dispossessIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _dispossessIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Room_Role_Empty_Table_View_Cell_0"); - _titleLabel.font = [UIFont systemFontOfSize:16]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _titleLabel; -} -@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberRoleTabulationRegardElement.h b/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberRoleTabulationRegardElement.h deleted file mode 100644 index 3c76d55b..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberRoleTabulationRegardElement.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YMRoomRoleTableViewCell.h -// YUMI -// -// Created by YUMI on 2021/12/29. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class NIMChatroomMember, YUMIChamberRoleTabulationRegardElement; -@protocol FBCChamberRoleTabulationViweElementRepresendtation - -- (void)yUMIChamberRoleTarbsultowardsionViweElement:(YUMIChamberRoleTabulationRegardElement *)view didClickMember:(NIMChatroomMember *)member; - -@end - -@interface YUMIChamberRoleTabulationRegardElement : UITableViewCell -@property (nonatomic,strong, readonly) UIView * burlywoodRegard; -@property (strong, nonatomic) NIMChatroomMember *member; -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberRoleTabulationRegardElement.m b/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberRoleTabulationRegardElement.m deleted file mode 100644 index c31e9c88..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/Cell/YUMIChamberRoleTabulationRegardElement.m +++ /dev/null @@ -1,146 +0,0 @@ -// -// YMRoomRoleTableViewCell.m -// YUMI -// -// Created by YUMI on 2021/12/29. -// - -#import "YUMIChamberRoleTabulationRegardElement.h" -#import -#import -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "YUMICommunicationRemoteExtMatrix.h" - -@interface YUMIChamberRoleTabulationRegardElement () -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UIImageView *seaxualityIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UIButton *removeBtuton; -@property (nonatomic,strong) UIView * burlywoodRegard; -@end - -@implementation YUMIChamberRoleTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.intelligenceportraitIndicateRegard]; - [self.contentView addSubview:self.monicerSequencignation]; - [self.contentView addSubview:self.seaxualityIndicateRegard]; - [self.contentView addSubview:self.removeBtuton]; - [self.contentView addSubview:self.burlywoodRegard]; -} - -- (void)initChildLyRestrictions { - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.contentView).offset(15); - make.width.height.mas_equalTo(40); - make.centerY.mas_equalTo(self.contentView.mas_centerY); - }]; - -[self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self); - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).offset(10); -}]; - - [self.seaxualityIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self); - make.left.mas_equalTo(self.monicerSequencignation.mas_right).offset(10); - }]; - - [self.removeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.contentView.mas_centerY); - make.right.mas_equalTo(self.contentView).offset(-15); - make.width.mas_equalTo(65); - make.height.mas_equalTo(30); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.monicerSequencignation); - make.right.mas_equalTo(self.removeBtuton); - make.bottom.mas_equalTo(self.contentView); - make.height.mas_equalTo(1); - }]; -} - -#pragma mark - Event Response -- (void)transltowardseBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberRoleTarbsultowardsionViweElement:didClickMember:)]) { - [self.delegate yUMIChamberRoleTarbsultowardsionViweElement:self didClickMember:self.member]; - } -} - -#pragma mark - Getters And Setters -- (void)setMember:(NIMChatroomMember *)member { - _member = member; - if (_member) { - self.intelligenceportraitIndicateRegard.imageUrl = _member.roomAvatar; - self.monicerSequencignation.text = _member.roomNickname; - } -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 40/2; - _intelligenceportraitIndicateRegard.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - } - return _intelligenceportraitIndicateRegard; -} - -- (UIImageView *)seaxualityIndicateRegard { - if (!_seaxualityIndicateRegard) { - _seaxualityIndicateRegard = [[UIImageView alloc] init]; - _seaxualityIndicateRegard.userInteractionEnabled = YES; - } - return _seaxualityIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:15]; - _monicerSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _monicerSequencignation; -} - -- (UIButton *)removeBtuton { - if (!_removeBtuton) { - _removeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_removeBtuton setTitle:YMLocalizedString(@"YUMI_Room_Role_Table_View_Cell_0") forState:UIControlStateNormal]; - [_removeBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - _removeBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_removeBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _removeBtuton.layer.masksToBounds = YES; - _removeBtuton.layer.cornerRadius = 15; - [_removeBtuton addTarget:self action:@selector(transltowardseBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _removeBtuton; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _burlywoodRegard; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomInviteUserViewController.h b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomInviteUserViewController.h new file mode 100644 index 00000000..d97ba04b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomInviteUserViewController.h @@ -0,0 +1,23 @@ +// +// YMRoomInviteUserViewController.h +// YUMI +// +// Created by YUMI on 2022/1/18. +// 抱用户上麦控制器 + +#import "BaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomInviteUserViewController : BaseViewController +///是否只展示管理员和房主 +@property (nonatomic,assign) BOOL isManagerOrOwner; +///相亲的时候VIp的uid 如果不是相亲 可以不传 +@property (nonatomic,assign) NSInteger blindDateVipUid; +///当前房间的id +@property (nonatomic,copy) NSString *roomId; +///坑位信息 +@property (nonatomic,copy) NSString *position; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomInviteUserViewController.m b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomInviteUserViewController.m new file mode 100644 index 00000000..9950346f --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomInviteUserViewController.m @@ -0,0 +1,373 @@ +// +// YMRoomInviteUserViewController.m +// YUMI +// +// Created by YUMI on 2022/1/18. +// + +#import "XPRoomInviteUserViewController.h" +///Third +#import +#import +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "AccountInfoStorage.h" +#import "Api.h" +#import "NSArray+Safe.h" +///Model +#import "UserInfoModel.h" +#import "MicroQueueModel.h" +#import "AttachmentModel.h" +#import "MicroExtModel.h" +///View +#import "XPRoomOnlineTableViewCell.h" +#import "XPRoomRoleEmptyTableViewCell.h" + +@interface XPRoomInviteUserViewController () +///总的数据 +@property (nonatomic,strong) NSMutableArray *originArray; +///需要显示的数据 +@property (nonatomic,strong) NSMutableArray *datasource; +///麦上用户的数据 +@property (nonatomic,strong) NSArray *micQueueArray; +///列表 +@property (nonatomic,strong) UITableView *tableView; +///最后一个 +@property (nonatomic,strong) NIMChatroomMember *lastMember; +///临时成员最后一个 +@property (nonatomic,strong) NIMChatroomMember *tmpLastMember; +@end + +@implementation XPRoomInviteUserViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initHeaderAndFooterRrfresh]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = self.isManagerOrOwner ? @"在线房主/管理员" : YMLocalizedString(@"XPRoomInviteUserViewController1"); + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; + + [self headerRefresh]; +} + +- (void)headerRefresh { + self.lastMember= nil; + self.tmpLastMember = nil; + [self.datasource removeAllObjects]; + [[self fetchChatRoomQueue] subscribeNext:^(id _Nullable x) { + NSArray * queueArray = x; + [[self loadChatRoomRegularMemberList] subscribeNext:^(id _Nullable x) { + NSArray * regularList = x; + [regularList enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + NIMChatroomMember * member = obj; + if (member.type == NIMTeamMemberTypeOwner) { + [self.datasource insertObject:member atIndex:0]; + }else { + [self.datasource addObject:member]; + } + }]; + + [[self loadChatRoomTmpMemberList] subscribeNext:^(id _Nullable x) { + NSArray * tmpList = x; + [self.datasource addObjectsFromArray:tmpList]; + for (NSInteger i = (self.datasource.count - 1); i >= 0; i--) { + NIMChatroomMember * member = [self.datasource safeObjectAtIndex1:i]; + for (UserInfoModel * userInfo in queueArray) { + if (member.userId.integerValue == userInfo.uid) { + [self.datasource removeObject:member]; + continue; + } + } + } + [self.tableView reloadData]; + }]; + + }]; + }]; + + +} + +- (void)footerRefresh { + [[self loadChatRoomRegularMemberList] subscribeNext:^(id _Nullable x) { + NSArray * regularList = x; + [regularList enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + NIMChatroomMember * member = obj; + if (member.type == NIMTeamMemberTypeOwner) { + [self.datasource insertObject:member atIndex:0]; + }else { + [self.datasource addObject:member]; + } + }]; + + [[self loadChatRoomTmpMemberList] subscribeNext:^(id _Nullable x) { + NSArray * tmpList = x; + [tmpList enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + [self.datasource addObject:obj]; + }]; + + for (NSInteger i = (self.datasource.count - 1); i >= 0; i--) { + NIMChatroomMember * member = [self.datasource safeObjectAtIndex1:i]; + for (UserInfoModel * userInfo in self.micQueueArray) { + if (member.userId.integerValue == userInfo.uid) { + [self.datasource removeObject:member]; + break;; + } + } + } + [self.tableView reloadData]; + }]; + + }]; +} + +- (RACSignal *)fetchChatRoomQueue { + return [RACSignal createSignal:^RACDisposable * _Nullable(id _Nonnull subscriber) { + [[NIMSDK sharedSDK].chatroomManager fetchChatroomQueue:self.roomId completion:^(NSError * _Nullable error, NSArray *> * _Nullable info) { + if (error == nil) { + NSMutableArray * array= [NSMutableArray array]; + for (NSDictionary *item in info) { + UserInfoModel *userInfo = [UserInfoModel modelWithJSON:item.allValues.firstObject]; + [array addObject:userInfo]; + } + self.micQueueArray = [array copy]; + [subscriber sendNext:self.micQueueArray]; + [subscriber sendCompleted]; + } else { + [subscriber sendNext:nil]; + [subscriber sendCompleted]; + } + + }]; + return nil; + }]; +} + +- (RACSignal *)loadChatRoomRegularMemberList { + return [RACSignal createSignal:^RACDisposable * _Nullable(id _Nonnull subscriber) { + NIMChatroomMemberRequest *request = [[NIMChatroomMemberRequest alloc] init]; + request.roomId = self.roomId; + request.type = NIMChatroomFetchMemberTypeRegular; + request.lastMember = self.lastMember; + request.limit = 200; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembers:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + if (error == nil) { + if (members.count > 0) { + self.lastMember = members.lastObject; + } + NSMutableArray * array = [NSMutableArray array]; + [members enumerateObjectsUsingBlock:^(NIMChatroomMember * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.isOnline && !obj.isInBlackList) { + if (self.isManagerOrOwner) { + if (obj.type == NIMChatroomMemberTypeCreator || obj.type == NIMChatroomMemberTypeManager) { + [array addObject:obj]; + } + } else { + [array addObject:obj]; + } + } + }]; + [subscriber sendNext:array]; + [subscriber sendCompleted]; + } else { + [subscriber sendNext:nil]; + [subscriber sendCompleted]; + } + }]; + return nil; + }]; + +} + + +- (RACSignal *)loadChatRoomTmpMemberList { + return [RACSignal createSignal:^RACDisposable * _Nullable(id _Nonnull subscriber) { + NIMChatroomMemberRequest *request = [[NIMChatroomMemberRequest alloc] init]; + request.roomId = self.roomId; + request.type = NIMChatroomFetchMemberTypeTemp; + request.lastMember = self.tmpLastMember; + request.limit = 20; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembers:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + [self.tableView.mj_header endRefreshing]; + [self.tableView.mj_footer endRefreshing]; + if (error == nil) { + if (members.count > 0) { + self.tmpLastMember = members.lastObject; + } + NSMutableArray * array = [NSMutableArray array]; + [members enumerateObjectsUsingBlock:^(NIMChatroomMember * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.isOnline && !obj.isInBlackList) { + if (self.isManagerOrOwner) { + if (obj.type == NIMChatroomMemberTypeCreator || obj.type == NIMChatroomMemberTypeManager) { + [array addObject:obj]; + } + } else { + [array addObject:obj]; + } + } + }]; + [subscriber sendNext:array]; + [subscriber sendCompleted]; + } else { + [subscriber sendNext:nil]; + [subscriber sendCompleted]; + } + }]; + return nil; + }]; +} + +/** + * 麦位更新扩展字段。 + */ +- (NSDictionary *)userInfoToQueueExt:(UserInfoModel *)userInfo { + MicroExtModel * extModel = [[MicroExtModel alloc] init]; + extModel.gender = userInfo.gender; + extModel.avatar = userInfo.avatar; + extModel.uid = userInfo.uid; + extModel.nick = userInfo.nick; + extModel.vipMic = userInfo.uid == self.blindDateVipUid; + extModel.headWearUrl = userInfo.headwearEffect.length > 0 ? userInfo.headwearEffect : userInfo.headwearPic; + extModel.micCircle = userInfo.micCircle; + extModel.micNickColor = userInfo.micNickColor; + extModel.preventKick = userInfo.userVipInfoVO.preventKick; + extModel.enterHide = userInfo.userVipInfoVO.enterHide; + return [extModel model2dictionary]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPRoomOnlineTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPRoomOnlineTableViewCell class])]; + if (cell == nil) { + cell = [[XPRoomOnlineTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPRoomOnlineTableViewCell class])]; + } + NIMChatroomMember * member = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.member = member; + cell.onlineType = RoomOnLineType_Invite_User; + return cell; + } + + XPRoomRoleEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPRoomRoleEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPRoomRoleEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPRoomRoleEmptyTableViewCell class])]; + } + cell.titleLabel.text = YMLocalizedString(@"XPRoomInviteUserViewController2"); + cell.backgroundColor = [UIColor clearColor]; + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + return 60; + } + return KScreenHeight - kNavigationHeight; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + NIMChatroomMember * member = [self.datasource safeObjectAtIndex1:indexPath.row]; + if ([AccountInfoStorage instance].getUid.integerValue == member.userId.integerValue) { + [Api getUserInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + UserInfoModel * userInfo = [UserInfoModel modelWithJSON:data.data]; + NIMChatroomQueueUpdateRequest *request = [[NIMChatroomQueueUpdateRequest alloc]init]; + request.key = self.position; + request.value = [[self userInfoToQueueExt:userInfo] toJSONString]; + request.roomId = self.roomId; + request.transient = YES; + [[NIMSDK sharedSDK].chatroomManager updateChatroomQueueObject:request completion:^(NSError * _Nullable error) { + if (error == nil) { + [self.navigationController popViewControllerAnimated:YES]; + } else { + [self showErrorToast:error.description]; + } + }]; + } + + } uid:member.userId]; + } else { + NSMutableDictionary * dic = [NSMutableDictionary dictionary]; + [dic setValue:@(self.position.integerValue) forKey:@"micPosition"]; + [dic setValue:@(member.userId.integerValue) forKey:@"uid"]; + AttachmentModel *attachement = [[AttachmentModel alloc]init]; + attachement.first = CustomMessageType_Queue; + attachement.second = Custom_Message_Sub_Queue_Invite; + attachement.data = dic; + + NIMMessage *message = [[NIMMessage alloc]init]; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachement; + message.messageObject = object; + //构造会话 + NIMSession *session = [NIMSession session:self.roomId type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; + [self.navigationController popViewControllerAnimated:YES]; + } + } +} + +#pragma mark - Event Response +- (void)backButtonAction:(UIButton *)sender { + [self.navigationController popViewControllerAnimated:YES]; +} + +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + _tableView.rowHeight = 60; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPRoomOnlineTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPRoomOnlineTableViewCell class])]; + [_tableView registerClass:[XPRoomRoleEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPRoomRoleEmptyTableViewCell class])]; + } + return _tableView; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} +@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomOnLineViewController.h b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomOnLineViewController.h new file mode 100644 index 00000000..c8bb4fd3 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomOnLineViewController.h @@ -0,0 +1,17 @@ +// +// YMRoomOnLineViewController.h +// YUMI +// +// Created by YUMI on 2021/12/29. +// + +#import "BaseViewController.h" +#import "RoomHostDelegate.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomOnLineViewController : BaseViewController + +- (instancetype)initWithDelegate:(id)delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomOnLineViewController.m b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomOnLineViewController.m new file mode 100644 index 00000000..1bb7ec30 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomOnLineViewController.m @@ -0,0 +1,458 @@ +// +// YMRoomOnLineViewController.m +// YUMI +// +// Created by YUMI on 2021/12/29. +// + +#import "XPRoomOnLineViewController.h" +///Third +#import +#import +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "UIButton+EnlargeTouchArea.h" +#import "NSArray+Safe.h" +///Model +#import "UserInfoModel.h" +#import "MicroQueueModel.h" +#import "RoomInfoModel.h" +#import "XPUserCardInfoModel.h" +#import "XPMessageRemoteExtModel.h" +///View +#import "XPRoomOnlineTableViewCell.h" +#import "XPRoomRoleEmptyTableViewCell.h" +///VC +#import "XPUserCardViewController.h" + +@interface XPRoomOnLineViewController () +///导航栏 +@property (nonatomic,strong) UIView * navView; +///返回按钮 +@property (nonatomic,strong) UIButton *backButton; +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///背景图 +@property (nonatomic,strong) UIImageView *backImageView; +///总的数据 +@property (nonatomic,strong) NSMutableArray *originArray; +///需要显示的数据 +@property (nonatomic,strong) NSMutableArray *datasource; +///列表 +@property (nonatomic,strong) UITableView *tableView; +///最后一个 +@property (nonatomic,strong) NIMChatroomMember *lastMember; +///临时成员最后一个 +@property (nonatomic,strong) NIMChatroomMember *tmpLastMember; +///host +@property (nonatomic,weak) idhostDelegate; +///房间的id +@property (nonatomic,copy) NSString *roomId; +///是否正在刷新 +@property (nonatomic, assign) BOOL refreshing; +@end + +@implementation XPRoomOnLineViewController +- (void)dealloc { + [[NIMSDK sharedSDK].chatManager removeDelegate:self]; +} + +- (instancetype)initWithDelegate:(id)delegate { + if (self = [super init]) { + self.hostDelegate = delegate; + self.roomId= [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.roomId]; + } + return self; +} + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + //监听云信消息 + [[NIMSDK sharedSDK].chatManager addDelegate:self]; + [self initHeaderAndFooterRrfresh]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.backImageView]; + [self.view addSubview:self.tableView]; + [self.view addSubview:self.navView]; + + [self.navView addSubview:self.backButton]; + [self.navView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; + + [self.navView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.height.mas_equalTo(kNavigationHeight); + }]; + + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.top.mas_equalTo(self.navView.mas_bottom); + }]; + + [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(22, 22)); + make.left.mas_equalTo(self.navView).offset(8); + make.centerY.mas_equalTo(self.titleLabel); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.navView); + make.centerY.equalTo(self.navView.mas_bottom).mas_offset(-22); + }]; +} + +- (void)initHeaderAndFooterRrfresh { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.tableView.mj_header = header; + + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; + footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; + self.tableView.mj_footer = footer; + + [self headerRefresh]; +} + +- (void)headerRefresh { + if (self.refreshing) { + return; + } + self.refreshing = YES; + self.lastMember= nil; + self.tmpLastMember = nil; + [self.datasource removeAllObjects]; + [[self loadChatRoomRegularMemberList] subscribeNext:^(id _Nullable x) { + NSArray * regularList = x; + [regularList enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + NIMChatroomMember * member = obj; + if (member.type == NIMTeamMemberTypeOwner) { + [self.datasource insertObject:member atIndex:0]; + }else { + [self.datasource addObject:member]; + } + }]; + + [[self loadChatRoomTmpMemberList] subscribeNext:^(id _Nullable x) { + NSArray * tmpList = x; + + [self.datasource addObjectsFromArray:tmpList]; + [self.tableView reloadData]; + self.refreshing = NO; + }]; + + }]; + +} + +- (void)footerRefresh { + if (self.refreshing) { + return; + } + self.refreshing = YES; + [[self loadChatRoomRegularMemberList] subscribeNext:^(id _Nullable x) { + NSArray * regularList = x; + [regularList enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + NIMChatroomMember * member = obj; + if (member.type == NIMTeamMemberTypeOwner) { + [self.datasource insertObject:member atIndex:0]; + }else { + [self.datasource addObject:member]; + } + }]; + + [[self loadChatRoomTmpMemberList] subscribeNext:^(id _Nullable x) { + NSArray * tmpList = x; + [tmpList enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + [self.datasource addObject:obj]; + }]; + [self.tableView reloadData]; + self.refreshing = NO; + }]; + + }]; +} + +- (RACSignal *)loadChatRoomRegularMemberList { + return [RACSignal createSignal:^RACDisposable * _Nullable(id _Nonnull subscriber) { + NIMChatroomMemberRequest *request = [[NIMChatroomMemberRequest alloc] init]; + request.roomId = self.roomId; + request.type = NIMChatroomFetchMemberTypeRegular; + request.lastMember = self.lastMember; + request.limit = 200; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembers:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + if (error == nil) { + if (members.count > 0) { + self.lastMember = members.lastObject; + } + NSMutableArray * array = [NSMutableArray array]; + [members enumerateObjectsUsingBlock:^(NIMChatroomMember * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.isOnline && !obj.isInBlackList) { + [array addObject:obj]; + } + }]; + [subscriber sendNext:array]; + [subscriber sendCompleted]; + } else { + [subscriber sendNext:nil]; + [subscriber sendCompleted]; + } + }]; + return nil; + }]; + +} + +- (RACSignal *)loadChatRoomTmpMemberList { + return [RACSignal createSignal:^RACDisposable * _Nullable(id _Nonnull subscriber) { + NIMChatroomMemberRequest *request = [[NIMChatroomMemberRequest alloc] init]; + request.roomId = self.roomId; + request.type = NIMChatroomFetchMemberTypeTemp; + request.lastMember = self.tmpLastMember; + request.limit = 20; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembers:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + [self.tableView.mj_header endRefreshing]; + [self.tableView.mj_footer endRefreshing]; + if (error == nil) { + if (members.count > 0) { + self.tmpLastMember = members.lastObject; + } + NSMutableArray * array = [NSMutableArray array]; + [members enumerateObjectsUsingBlock:^(NIMChatroomMember * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + BOOL isSuperAmind = NO; + if (obj.roomExt.length > 0) { + NSData *jsonData = [obj.roomExt dataUsingEncoding:NSUTF8StringEncoding]; + NSError *error; + NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error]; + XPMessageRemoteExtModel * model = [XPMessageRemoteExtModel modelWithDictionary:[dic objectForKey:obj.userId]]; + isSuperAmind = model.platformRole == 1; + } + + if (obj.isOnline && !obj.isInBlackList && !isSuperAmind) { + [array addObject:obj]; + } + }]; + [subscriber sendNext:array]; + [subscriber sendCompleted]; + } else { + [subscriber sendNext:nil]; + [subscriber sendCompleted]; + } + }]; + return nil; + }]; +} + +///判断是否在麦上 +- (BOOL)memberIsOnMicro:(NSString *)userId{ + NSArray *chatRoomMicSequences = [self.hostDelegate.getMicroQueue allValues] ; + if (chatRoomMicSequences != nil && chatRoomMicSequences.count > 0) { + for (int i = 0; i < chatRoomMicSequences.count; i ++) { + MicroQueueModel *chatRoomMicSequence = chatRoomMicSequences[i]; + if (chatRoomMicSequence.userInfo.uid == userId.integerValue) { + return YES; + } + } + } + return NO; +} + +#pragma mark - NIMChatManagerDelegate +- (void)onRecvMessages:(NSArray *)messages { + for (NIMMessage * message in messages) { + // 非房间内消息不处理 + if (message.session.sessionType != NIMSessionTypeChatroom) { + continue; + } + + // 非本房间不处理 + if (![message.session.sessionId isEqualToString:self.roomId]) { + continue; + } + if (message.messageType == NIMMessageTypeNotification) { + NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; + NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; + switch (content.eventType) { + case NIMChatroomEventTypeEnter: + case NIMChatroomEventTypeExit: + case NIMChatroomEventTypeAddManager: + case NIMChatroomEventTypeRemoveManager: + case NIMChatroomEventTypeAddBlack: + case NIMChatroomEventTypeRemoveBlack: + case NIMChatroomEventTypeQueueChange: + case NIMChatroomEventTypeKicked: + [self headerRefresh]; + break; + default: + break; + + + } + } + } +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPRoomOnlineTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPRoomOnlineTableViewCell class])]; + if (cell == nil) { + cell = [[XPRoomOnlineTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPRoomOnlineTableViewCell class])]; + } + NIMChatroomMember * member = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.isOnMicro = [self memberIsOnMicro:member.userId]; + cell.member = member; + return cell; + } + + XPRoomRoleEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPRoomRoleEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPRoomRoleEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPRoomRoleEmptyTableViewCell class])]; + } + cell.titleLabel.text = YMLocalizedString(@"XPRoomOnLineViewController0"); + cell.backgroundColor = [UIColor clearColor]; + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + return 60; + } + return KScreenHeight - kNavigationHeight; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + NIMChatroomMember * member = [self.datasource safeObjectAtIndex1:indexPath.row]; + NSDictionary * extDic = [member.roomExt toJSONObject]; + XPMessageRemoteExtModel * userInfo = [XPMessageRemoteExtModel modelWithDictionary:[extDic objectForKey:member.userId]]; + if (userInfo.enterHide) { + return; + } + RoomInfoModel * roomInfo = self.hostDelegate.getRoomInfo; + NSString * targetUid = member.userId; + XPUserCardInfoModel * model = [[XPUserCardInfoModel alloc] init]; + [[self.hostDelegate.getMicroQueue allValues] enumerateObjectsUsingBlock:^(MicroQueueModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (targetUid.integerValue == obj.userInfo.uid) { + model.position = [NSString stringWithFormat:@"%d", obj.microState.position]; + model.posState = obj.microState.posState; + model.micState = obj.microState.micState; + *stop = YES; + } + }]; + model.nick = self.hostDelegate.getUserInfo.nick; + model.uid = targetUid; + model.delegate = self.hostDelegate; + model.roomInfo = roomInfo; + model.superMangerList = self.hostDelegate.getRoomSuperAdminList; + model.micQueue = self.hostDelegate.getMicroQueue; + model.hideSendGiftItem = YES; + XPUserCardViewController * userCardVC = [[XPUserCardViewController alloc] initWithUser:model]; + [self.navigationController presentViewController:userCardVC animated:YES completion:nil]; + } + +} + +#pragma mark - Event Response +- (void)backButtonAction:(UIButton *)sender { + [self.navigationController popViewControllerAnimated:YES]; +} + +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + _tableView.rowHeight = 60; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPRoomOnlineTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPRoomOnlineTableViewCell class])]; + [_tableView registerClass:[XPRoomRoleEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPRoomRoleEmptyTableViewCell class])]; + } + return _tableView; +} + +- (UIButton *)backButton { + if (!_backButton) { + _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_backButton setImage:[UIImage imageNamed:@"home_search_white_back"] forState:UIControlStateNormal]; + [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_backButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + } + return _backButton; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.font = [UIFont systemFontOfSize:15]; + _titleLabel.text = YMLocalizedString(@"XPRoomOnLineViewController1"); + _titleLabel.textColor = [UIColor whiteColor]; + } + return _titleLabel; +} + +- (UIView *)navView { + if (!_navView) { + _navView = [[UIView alloc] init]; + _navView.backgroundColor = [UIColor clearColor]; + } + return _navView; +} + + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.layer.masksToBounds = YES; + _backImageView.contentMode = UIViewContentModeScaleAspectFill; + _backImageView.image = [UIImage imageNamed:@"room_background"]; + } + return _backImageView; +} + + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} +@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomRoleViewController.h b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomRoleViewController.h new file mode 100644 index 00000000..447b662f --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomRoleViewController.h @@ -0,0 +1,27 @@ +// +// YMRoomRoleViewController.h +// YUMI +// +// Created by YUMI on 2021/12/29. +// + +#import "BaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, RoomRoleListType) { + ///管理员 + RoomRoleListType_Manager = 1, + RoomRoleListType_Black, +}; + +@interface XPRoomRoleViewController : BaseViewController +///房间的id +@property (nonatomic,copy) NSString *roomId; +///类型 +@property (nonatomic,assign) RoomRoleListType type; +///超管列表 +@property (nonatomic,strong) NSArray *superAdmminList; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomRoleViewController.m b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomRoleViewController.m new file mode 100644 index 00000000..dd7fbc3e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomRoleViewController.m @@ -0,0 +1,196 @@ +// +// YMRoomRoleViewController.m +// YUMI +// +// Created by YUMI on 2021/12/29. +// 管理员 黑名单 + +#import "XPRoomRoleViewController.h" +///Third +#import +#import +#import "YUMIMacroUitls.h" +#import "XPRoomRoleTableViewCell.h" +#import "XPRoomRoleEmptyTableViewCell.h" +#import "GuildSuperAdminInfoModel.h" +#import "NSArray+Safe.h" + +@interface XPRoomRoleViewController () +///总的数据 +@property (nonatomic,strong) NSMutableArray *originArray; +///需要显示的数据 +@property (nonatomic,strong) NSMutableArray *datasource; +///列表 +@property (nonatomic,strong) UITableView *tableView; +///最后一个 +@property (nonatomic,strong) NIMChatroomMember *lastMember; +@end + +@implementation XPRoomRoleViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +- (void)loadChatRoomRegularMemberList { + NIMChatroomMemberRequest *request = [[NIMChatroomMemberRequest alloc] init]; + request.roomId = self.roomId; + request.type = NIMChatroomFetchMemberTypeRegular; + request.lastMember = self.lastMember; + request.limit = 200; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembers:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + if (error == nil) { + self.lastMember = members.lastObject; + [members enumerateObjectsUsingBlock:^(NIMChatroomMember * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (self.type == RoomRoleListType_Black) { + if (obj.isInBlackList) { + [self.datasource addObject:obj]; + } + } else if(self.type == RoomRoleListType_Manager) { + if (obj.type == NIMChatroomMemberTypeManager && ![self isRoomSuperAdmin:obj.userId]) { + [self.datasource addObject:obj]; + } + } + }]; + + [self.tableView reloadData]; + + if (members.count > 0) { + [self loadChatRoomRegularMemberList]; + } + } + }]; +} + +- (BOOL)isRoomSuperAdmin:(NSString *)uid { + BOOL isSuperAdmin = NO; + for (int i = 0; i< self.superAdmminList.count; i++) { + GuildSuperAdminInfoModel * superAdminInfo = [self.superAdmminList safeObjectAtIndex1:i]; + if ([superAdminInfo.uid isEqualToString:uid]) { + isSuperAdmin = YES; + break; + } + } + return isSuperAdmin; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPRoomRoleTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPRoomRoleTableViewCell class])]; + if (cell == nil) { + cell = [[XPRoomRoleTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPRoomRoleTableViewCell class])]; + } + cell.delegate = self; + cell.member = [self.datasource safeObjectAtIndex1:indexPath.row]; + if (indexPath.row == (self.datasource.count -1)) { + cell.lineView.hidden = YES; + } else { + cell.lineView.hidden = NO; + } + return cell; + } + + XPRoomRoleEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPRoomRoleEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPRoomRoleEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPRoomRoleEmptyTableViewCell class])]; + } + + if (self.type == RoomRoleListType_Black) { + cell.titleLabel.text = YMLocalizedString(@"XPRoomRoleViewController0"); + } else { + cell.titleLabel.text = YMLocalizedString(@"XPRoomRoleViewController1"); + } + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + return 55; + } + + return KScreenHeight - kNavigationHeight; +} + +#pragma mark - XPRoomRoleTableViewCellDelegate +- (void)xPRoomRoleTableViewCell:(NSString *)view didClickMember:(NIMChatroomMember *)member { + if (self.type == RoomRoleListType_Black) { + NIMChatroomMemberUpdateRequest *request = [[NIMChatroomMemberUpdateRequest alloc]init]; + request.roomId = self.roomId; + request.userId = member.userId; + request.enable = NO; + [[NIMSDK sharedSDK].chatroomManager updateMemberBlack:request completion:^(NSError * _Nullable error) { + if (error == nil) { + [self.datasource removeObject:member]; + [self.tableView reloadData]; + } + }]; + } else if(self.type == RoomRoleListType_Manager) { + NIMChatroomMemberUpdateRequest *request = [[NIMChatroomMemberUpdateRequest alloc]init]; + request.roomId = self.roomId; + request.userId = member.userId; + request.enable = NO; + [[NIMSDK sharedSDK].chatroomManager markMemberManager:request completion:^(NSError * _Nullable error) { + if (error == nil) { + [self.datasource removeObject:member]; + [self.tableView reloadData]; + } + }]; + } +} + + +#pragma mark - Getters And Setters +- (void)setType:(RoomRoleListType)type { + _type = type; + if (_type == RoomRoleListType_Black) { + self.title = YMLocalizedString(@"XPRoomRoleViewController2"); + } else { + self.title = YMLocalizedString(@"XPRoomRoleViewController3"); + } + [self loadChatRoomRegularMemberList]; +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + _tableView.rowHeight = 60; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPRoomRoleTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPRoomRoleTableViewCell class])]; + [_tableView registerClass:[XPRoomRoleEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPRoomRoleEmptyTableViewCell class])]; + } + return _tableView; +} + +- (NSMutableArray *)datasource { + if (!_datasource) { + _datasource = [NSMutableArray array]; + } + return _datasource; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomSettingInputView.h b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomSettingInputView.h new file mode 100644 index 00000000..7c6bfa6b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomSettingInputView.h @@ -0,0 +1,44 @@ +// +// YMRoomSettingInputView.h +// YUMI +// +// Created by YUMI on 2021/12/29. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(NSInteger, RoomSettingInputType) { + ///给房间设置标题 + RoomSettingInputType_Title = 1, + ///给房间设置密码 + RoomSettingInputType_Pwd, + ///进房输入密码 + RoomSettingInputType_Input_Pwd, +}; + +@class XPRoomSettingInputView; +@protocol XPRoomSettingInputViewDelegate +@optional +///点击了完成 +- (void)xPRoomSettingInputView:(XPRoomSettingInputView *)view didClickConfirm:(NSString *)text type:(RoomSettingInputType)type; +///点击了取消 +- (void)didClickCancel:(RoomSettingInputType)type; + +@end + +@interface XPRoomSettingInputView : UIView +///代理 +@property (nonatomic,weak) id delegate; +///最大文字个数,默认 0,无限制 +@property (nonatomic, assign) NSUInteger maxCount; +///类型 +@property (nonatomic,assign) RoomSettingInputType type; +///占位符 +@property (nonatomic,copy) NSString *placeHolder; +///密码是否错误 +@property (nonatomic,assign) BOOL isPwdError; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomSettingInputView.m b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomSettingInputView.m new file mode 100644 index 00000000..0f6ee289 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomSettingInputView.m @@ -0,0 +1,299 @@ +// +// YMRoomSettingInputView.m +// YUMI +// +// Created by YUMI on 2021/12/29. +// + +#import "XPRoomSettingInputView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "UIImage+Utils.h" +#import "TTPopup.h" + +@interface XPRoomSettingInputView () +/// 标题 +@property (nonatomic, strong) UILabel *titleLabel; +///容器 +@property (nonatomic,strong) UIStackView *stackView; +/// 取消按钮 +@property (nonatomic, strong) UIButton *cancelButton; +/// 确认按钮 +@property (nonatomic, strong) UIButton *confirmButton; +///显示个数 +@property (nonatomic, strong) UILabel *countLabel; +///输入框 +@property (nonatomic, strong) UITextField *contentTextField; +///输入错误的label +@property (nonatomic,strong) UILabel *failLabel; +@end + +@implementation XPRoomSettingInputView + +- (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Getters And Setters +- (void)addNotification { + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; +} + +- (void)initSubViews { + self.backgroundColor = [UIColor whiteColor]; + self.layer.masksToBounds= YES; + self.layer.cornerRadius = 15; + [self addSubview:self.titleLabel]; + [self addSubview:self.contentTextField]; + [self addSubview:self.countLabel]; + [self addSubview:self.failLabel]; + [self addSubview:self.stackView]; + [self.stackView addArrangedSubview:self.cancelButton]; + [self.stackView addArrangedSubview:self.confirmButton]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(KScreenWidth - 45 *2, 200)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(20); + }]; + + [self.contentTextField mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(15); + make.left.right.mas_equalTo(self).inset(15); + make.height.mas_equalTo(40); + }]; + + [self.failLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentTextField); + make.top.mas_equalTo(self.contentTextField.mas_bottom).offset(10); + }]; + + [self.countLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.contentTextField.mas_bottom).offset(4); + make.right.mas_equalTo(self.contentTextField).offset(-10); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self).inset(20); + make.height.mas_equalTo(43); + make.bottom.mas_equalTo(self.mas_bottom).offset(-20); + }]; + +} + +#pragma mark - Event Response +- (void)cancelButtonAction:(UIButton *)sender { + [TTPopup dismiss]; + if (self.delegate && [self.delegate respondsToSelector:@selector(didClickCancel:)]) { + [self.delegate didClickCancel:self.type]; + } +} + +- (void)confirmButtonAction:(UIButton *)sender { + if (self.type != RoomSettingInputType_Input_Pwd) { + [TTPopup dismiss]; + } + if (self.contentTextField.text.length > 0 && self.delegate && [self.delegate respondsToSelector:@selector(xPRoomSettingInputView:didClickConfirm:type:)]) { + [self.delegate xPRoomSettingInputView:self didClickConfirm:self.contentTextField.text type:self.type]; + } +} + + +- (void)keyboardWillShow:(NSNotification*)notification { + CGRect keyboardRect = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; + CGRect rect = [self.superview convertRect:self.frame toView:[UIApplication sharedApplication].keyWindow]; + CGFloat top = KScreenHeight / 2 + rect.size.height / 2; + CGFloat height = CGRectGetMinY(keyboardRect) - top; + if (height < 0) { + [UIView animateWithDuration:0.25 animations:^{ + self.superview.frame = CGRectMake(rect.origin.x, KScreenHeight / 2 - rect.size.height / 2 + (height - 10), rect.size.width, rect.size.height); + } completion:^(BOOL finished) { + + }]; + } +} + +- (void)keyboardWillHide:(NSNotification*)notification { + CGRect rect = [self.superview convertRect:self.frame toView:[UIApplication sharedApplication].keyWindow]; + [UIView animateWithDuration:0.25 animations:^{ + self.superview.frame = CGRectMake(rect.origin.x, KScreenHeight / 2 - rect.size.height / 2, rect.size.width, rect.size.height); + }]; +} +#pragma mark - mark +- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { + self.failLabel.hidden = YES; + //删除 + if (string.length == 0) { + [self updateCount:range.location]; + return YES; + } + + //字数不设限 + if (self.maxCount == 0) { + return YES; + } + + NSMutableString *mText = [NSMutableString stringWithString:textField.text]; + [mText insertString:string atIndex:range.location]; + + //字数在范围内 + if (mText.length > self.maxCount) { + //字数在范围外 + textField.text = [mText substringToIndex:self.maxCount]; + [self updateCount:textField.text.length]; + return NO; + } + + [self updateCount:mText.length]; + + return YES; +} + +/// 更新计数 +- (void)updateCount:(unsigned long)count { + self.countLabel.text = [NSString stringWithFormat:@"%lu/%lu", count, (unsigned long)self.maxCount]; +} + +#pragma mark - Getters And Setters +- (void)setType:(RoomSettingInputType)type { + _type = type; + if (_type == RoomSettingInputType_Pwd) { + self.contentTextField.keyboardType = UIKeyboardTypeNumberPad; + self.titleLabel.text = YMLocalizedString(@"XPRoomSettingInputView0"); + self.countLabel.hidden = NO; + self.contentTextField.keyboardType = UIKeyboardTypeNumberPad; + } else if(_type == RoomSettingInputType_Title) { + self.titleLabel.text = YMLocalizedString(@"XPRoomSettingInputView1"); + self.countLabel.hidden = NO; + } else if(_type == RoomSettingInputType_Input_Pwd) { + self.titleLabel.text = YMLocalizedString(@"XPRoomSettingInputView2"); + self.countLabel.hidden = YES; + self.contentTextField.keyboardType = UIKeyboardTypeNumberPad; + } +} + +- (void)setPlaceHolder:(NSString *)placeHolder { + _placeHolder = placeHolder; + if (_placeHolder.length > 0) { + NSAttributedString * attribute = [[NSAttributedString alloc] initWithString:_placeHolder attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:17],NSForegroundColorAttributeName: [DJDKMIMOMColor secondTextColor]}]; + self.contentTextField.attributedText = attribute; + } +} + +- (void)setIsPwdError:(BOOL)isPwdError { + _isPwdError = isPwdError; + if (_isPwdError) { + self.failLabel.hidden = NO; + } else { + self.failLabel.hidden = YES; + } +} + +- (UILabel *)titleLabel { + if (_titleLabel == nil) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textColor = [DJDKMIMOMColor alertTitleColor]; + _titleLabel.font = [UIFont systemFontOfSize:15]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} + +- (UILabel *)countLabel { + if (_countLabel == nil) { + _countLabel = [[UILabel alloc] init]; + _countLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _countLabel.font = [UIFont systemFontOfSize:10]; + _countLabel.textAlignment = NSTextAlignmentRight; + } + return _countLabel; +} + +- (UITextField *)contentTextField { + if (_contentTextField == nil) { + _contentTextField = [[UITextField alloc] init]; + _contentTextField.delegate = self; + _contentTextField.layer.cornerRadius = 20; + _contentTextField.layer.masksToBounds = YES; + _contentTextField.backgroundColor = UIColorFromRGB(0xF0F0F0); + _contentTextField.textColor = [DJDKMIMOMColor mainTextColor]; + _contentTextField.placeholder = YMLocalizedString(@"XPRoomSettingInputView3"); + _contentTextField.font = [UIFont systemFontOfSize:17]; + _contentTextField.leftView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 15, 10)]; + _contentTextField.leftViewMode = UITextFieldViewModeAlways; + _contentTextField.rightView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 15, 10)]; + _contentTextField.rightViewMode = UITextFieldViewModeAlways; + } + return _contentTextField; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFillEqually; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 16; + } + return _stackView; +} + +- (UIButton *)cancelButton { + if (!_cancelButton) { + _cancelButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_cancelButton setTitle:YMLocalizedString(@"XPRoomSettingInputView4") forState:UIControlStateNormal]; + [_cancelButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _cancelButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_cancelButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor cancelButtonGradientStartColor], [DJDKMIMOMColor cancelButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _cancelButton.layer.masksToBounds = YES; + _cancelButton.layer.cornerRadius = 10; + [_cancelButton addTarget:self action:@selector(cancelButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _cancelButton; +} + +- (UIButton *)confirmButton { + if (!_confirmButton) { + _confirmButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_confirmButton setTitle:YMLocalizedString(@"XPRoomSettingInputView5") forState:UIControlStateNormal]; + [_confirmButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _confirmButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_confirmButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _confirmButton.layer.masksToBounds = YES; + _confirmButton.layer.cornerRadius = 10; + [_confirmButton addTarget:self action:@selector(confirmButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _confirmButton; +} + +- (UILabel *)failLabel { + if (!_failLabel) { + _failLabel = [[UILabel alloc] init]; + _failLabel.text = YMLocalizedString(@"XPRoomSettingInputView6"); + _failLabel.font = [UIFont systemFontOfSize:15]; + _failLabel.textAlignment = NSTextAlignmentCenter; + _failLabel.textColor = [DJDKMIMOMColor appMainColor]; + _failLabel.hidden = YES; + } + return _failLabel; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomSettingViewController.h b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomSettingViewController.h new file mode 100644 index 00000000..ef40ddb1 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomSettingViewController.h @@ -0,0 +1,16 @@ +// +// YMRoomSettingViewController.h +// YUMI +// +// Created by YUMI on 2021/12/27. +// + +#import "MvpViewController.h" +#import "RoomHostDelegate.h" +NS_ASSUME_NONNULL_BEGIN +@class RoomInfoModel; +@interface XPRoomSettingViewController : MvpViewController +- (instancetype)initWithDelegate:(id)delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomSettingViewController.m b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomSettingViewController.m new file mode 100644 index 00000000..d3cdae9a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomSettingViewController.m @@ -0,0 +1,487 @@ +// +// YMRoomSettingViewController.m +// YUMI +// +// Created by YUMI on 2021/12/27. +// + +#import "XPRoomSettingViewController.h" +///Third +#import +///Tool +#import "ThemeColor+Room.h" +#import "YUMIMacroUitls.h" +#import "TTPopup.h" +#import "DESEncrypt.h" +#import "YUMIConstant.h" +#import "AccountInfoStorage.h" +#import "NSArray+Safe.h" +///Model +#import "RoomInfoModel.h" +#import "XPRoomSettingItemModel.h" +#import "AttachMentModel.h" +#import "MicroQueueModel.h" +#import "UserInfoModel.h" +#import "XPKickUserModel.h" +#import "GuildSuperAdminInfoModel.h" +///View +#import "XPRoomSettingTableViewCell.h" +#import "XPRoomSettingInputView.h" +#import "XPRoomTagListView.h" +///P +#import "XPRoomSettingPresenter.h" +#import "XPRoomSettingProtocol.h" +///VC +#import "XPRoomTagListViewController.h" +#import "XPRoomRoleViewController.h" + +@interface XPRoomSettingViewController () +///房间信息 +@property (nonatomic,strong) RoomInfoModel *roomInfo; +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSArray *datasource; +///代理 +@property (nonatomic,weak) id hostDelegate; +///是否是公会超管 +@property (nonatomic,assign) BOOL meIsSuperAdmin; +@end + +@implementation XPRoomSettingViewController + +- (instancetype)initWithDelegate:(id)delegate { + if (self = [super init]) { + self.hostDelegate = delegate; + self.roomInfo = self.hostDelegate.getRoomInfo; + } + return self; +} + +- (XPRoomSettingPresenter *)createPresenter { + return [[XPRoomSettingPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; + [self.presenter getRoomInfo:roomUid]; + ///自己是公会超管 + BOOL meIsSuperAdmin = NO; + for (GuildSuperAdminInfoModel *managerInfo in self.hostDelegate.getRoomSuperAdminList) { + if ([managerInfo.uid isEqualToString:[AccountInfoStorage instance].getUid]) { + meIsSuperAdmin = YES; + break; + } + } + self.meIsSuperAdmin = meIsSuperAdmin; + [self.presenter getRoomSettingList:self.roomInfo isSuperAdmin:meIsSuperAdmin]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPRoomSettingViewController0"); + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +- (void)handleRoomLeaveMode { + [self showLoading]; + NSString * ownerUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; + NSArray *chatRoomMicSequences = [self.hostDelegate.getMicroQueue allValues]; + ///房主是否在坑位上 + BOOL ownerIsOnMic = NO; + NSString * ownerPosition; + if (chatRoomMicSequences != nil && chatRoomMicSequences.count > 0) { + for (int i = 0; i < chatRoomMicSequences.count; i ++) { + MicroQueueModel *micqueueModel = chatRoomMicSequences[i]; + if (micqueueModel.userInfo && micqueueModel.userInfo.uid > 0) { + if (micqueueModel.userInfo.uid == ownerUid.integerValue) { + ownerIsOnMic = YES; + ownerPosition = [NSString stringWithFormat:@"%d", micqueueModel.microState.position]; + break; + } + } + } + } + NSString * roomId = [NSString stringWithFormat:@"%ld", self.roomInfo.roomId]; + ///能设置离线模式的只有房主 + if (ownerIsOnMic) { + NIMChatroomQueueRemoveRequest *request = [[NIMChatroomQueueRemoveRequest alloc]init]; + request.key = ownerPosition; + request.roomId = roomId; + [[NIMSDK sharedSDK].chatroomManager removeChatroomQueueObject:request completion:^(NSError * _Nullable error, NSDictionary * _Nullable element) { + + }]; + } + + NSString *position = @"-1"; // 房主位 + UserInfoModel *onMicInfo = [self.hostDelegate.getMicroQueue objectForKey:position].userInfo; + if (onMicInfo) { + NIMChatroomQueueRemoveRequest *request = [[NIMChatroomQueueRemoveRequest alloc]init]; + request.key = @"-1"; + request.roomId =roomId; + [[NIMSDK sharedSDK].chatroomManager removeChatroomQueueObject:request completion:^(NSError * _Nullable error, NSDictionary * _Nullable element) { + if (error == nil) { + XPKickUserModel *notifyModel = [[XPKickUserModel alloc] init]; + notifyModel.handleNick = onMicInfo.nick; + notifyModel.handleUid = [AccountInfoStorage instance].getUid.integerValue; + notifyModel.targetUid = onMicInfo.uid; + notifyModel.targetNick = onMicInfo.nick; + notifyModel.uid = onMicInfo.uid; + AttachmentModel *attachment = [[AttachmentModel alloc] init]; + attachment.first = CustomMessageType_Queue; + attachment.second = Custom_Message_Sub_Queue_Kick; + attachment.data = [notifyModel model2dictionary]; + + NSString * sessionId = [NSString stringWithFormat:@"%ld", self.roomInfo.roomId]; + NIMMessage *message = [[NIMMessage alloc]init]; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachment; + message.messageObject = object; + //构造会话 + NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; + } + }]; + } + + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.6 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; + [self hideHUD]; + [self.presenter openRoomLeaveMode:roomUid]; + }); + +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return self.datasource.count; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource[section].count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + XPRoomSettingTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPRoomSettingTableViewCell class])]; + if (cell == nil) { + cell = [[XPRoomSettingTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPRoomSettingTableViewCell class])]; + } + cell.delegate = self; + cell.itemModel = [[self.datasource safeObjectAtIndex1:indexPath.section] safeObjectAtIndex1:indexPath.row]; + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { +XPRoomSettingItemModel * itemModel = [[self.datasource safeObjectAtIndex1:indexPath.section] safeObjectAtIndex1:indexPath.row]; + if (itemModel.type == RoomSettingItemType_Leave_Model && itemModel.switchState) { + return 60; + } + return 50; +} + +-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { + UIView * view = [[UIView alloc] init]; + view.frame = CGRectMake(0, 0, KScreenWidth, 10); + view.backgroundColor = [UIColor clearColor]; + return view; +} +- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { + return 10; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + XPRoomSettingItemModel * itemModel = [[self.datasource safeObjectAtIndex1:indexPath.section] safeObjectAtIndex1:indexPath.row]; + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; + NSString * roomId = [NSString stringWithFormat:@"%ld", self.roomInfo.roomId]; + NSString * roomTag = [NSString stringWithFormat:@"%ld", self.roomInfo.tagId]; + NSString *roomClassifyId = self.roomInfo.singleRoomSortId; + switch (itemModel.type) { + case RoomSettingItemType_Class: + { + XPRoomTagListView *view = [[XPRoomTagListView alloc] init]; + view.tagType = RoomSettingSelectTagTypeClassify; + view.tagId = self.roomInfo.singleRoomSortId; + view.completion = ^(NSString * _Nonnull tag) { + NSString * mgId = [NSString stringWithFormat:@"%lld", self.roomInfo.mgId]; + [self.presenter updateRoomInfo:self.roomInfo.title roomPwd:self.roomInfo.roomPwd tagId:roomTag classifyId:tag hasAnimationEffect:self.roomInfo.hasAnimationEffect roomUid:roomUid roomId:roomId type:self.roomInfo.type itemType:itemModel.type mgId:mgId]; + }; + [TTPopup popupView:view style:TTPopupStyleAlert]; + } + break; + case RoomSettingItemType_Tag: + { + XPRoomTagListView *view = [[XPRoomTagListView alloc] init]; + view.tagType = RoomSettingSelectTagTypeTag; + view.tagId = [NSString stringWithFormat:@"%ld", self.roomInfo.tagId]; + view.completion = ^(NSString * _Nonnull tag) { + NSString * mgId = [NSString stringWithFormat:@"%lld", self.roomInfo.mgId]; + [self.presenter updateRoomInfo:self.roomInfo.title roomPwd:self.roomInfo.roomPwd tagId:tag classifyId:roomClassifyId hasAnimationEffect:self.roomInfo.hasAnimationEffect roomUid:roomUid roomId:roomId type:self.roomInfo.type itemType:itemModel.type mgId:mgId]; + }; + [TTPopup popupView:view style:TTPopupStyleAlert]; + } + break; + case RoomSettingItemType_Title: + { + XPRoomSettingInputView * titleView = [[XPRoomSettingInputView alloc] init]; + titleView.maxCount = 15; + titleView.delegate = self; + titleView.type = RoomSettingInputType_Title; + titleView.placeHolder = self.roomInfo.title; + [TTPopup popupView:titleView style:TTPopupStyleAlert]; + } + break; + + case RoomSettingItemType_Pwd: + { + XPRoomSettingInputView * titleView = [[XPRoomSettingInputView alloc] init]; + titleView.maxCount = 8; + titleView.delegate = self; + titleView.type = RoomSettingInputType_Pwd; + NSString * roomPwd = [DESEncrypt decryptUseDES:self.roomInfo.roomPwd key:KeyWithType(KeyType_PasswordEncode)]; + titleView.placeHolder = roomPwd; + [TTPopup popupView:titleView style:TTPopupStyleAlert]; + } + break; + case RoomSettingItemType_Manager_List: + { + XPRoomRoleViewController * managerVC = [[XPRoomRoleViewController alloc] init]; + managerVC.superAdmminList = self.hostDelegate.getRoomSuperAdminList; + managerVC.roomId = roomId; + managerVC.type = RoomRoleListType_Manager; + [self.navigationController pushViewController:managerVC animated:YES]; + } + break; + case RoomSettingItemType_Black_List: + { + XPRoomRoleViewController * managerVC = [[XPRoomRoleViewController alloc] init]; + managerVC.roomId = roomId; + managerVC.type = RoomRoleListType_Black; + [self.navigationController pushViewController:managerVC animated:YES]; + } + break; + default: + break; + } +} + +#pragma mark - XPRoomSettingInputViewDelegate +- (void)xPRoomSettingInputView:(XPRoomSettingInputView *)view didClickConfirm:(NSString *)text type:(RoomSettingInputType)type { + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; + NSString * roomId = [NSString stringWithFormat:@"%ld", self.roomInfo.roomId]; + NSString * roomTag = [NSString stringWithFormat:@"%ld", self.roomInfo.tagId]; + NSString * mgId = [NSString stringWithFormat:@"%lld", self.roomInfo.mgId]; + NSString * roomClassifyId = self.roomInfo.singleRoomSortId; + if (type == RoomSettingInputType_Pwd) { + NSString *pwdDes = [DESEncrypt encryptUseDES:text key:KeyWithType(KeyType_PasswordEncode)]; + [self.presenter updateRoomInfo:self.roomInfo.title roomPwd:pwdDes tagId:roomTag classifyId:roomClassifyId hasAnimationEffect:self.roomInfo.hasAnimationEffect roomUid:roomUid roomId:roomId type:self.roomInfo.type itemType:RoomSettingItemType_Pwd mgId:mgId]; + } else if(type == RoomSettingInputType_Title) { + [self.presenter updateRoomInfo:text roomPwd:self.roomInfo.roomPwd tagId:roomTag classifyId:roomClassifyId hasAnimationEffect:self.roomInfo.hasAnimationEffect roomUid:roomUid roomId:roomId type:self.roomInfo.type itemType:RoomSettingItemType_Title mgId:mgId]; + } +} + +#pragma mark - XPRoomSettingTableViewCellDelegate +- (void)didChangeSwitch:(UISwitch *)switchView itemModel:(XPRoomSettingItemModel *)itemModel { + BOOL isOn = switchView.on; + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; + NSString * roomId = [NSString stringWithFormat:@"%ld", self.roomInfo.roomId]; + NSString * roomTag = [NSString stringWithFormat:@"%ld", self.roomInfo.tagId]; + NSString * roomClassifyId = self.roomInfo.singleRoomSortId; + switch (itemModel.type) { + case RoomSettingItemType_Arrange_Mic: + { + if (self.roomInfo.roomModeType == RoomModeType_Open_Blind) return; + NSString *msg; + if (isOn) { + msg = @"开启排麦模式要排队才能上麦,确定开启吗?"; + } else { + msg = @"关闭排麦模式后会清空排麦列表哦,确定关闭吗?"; + } + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.title = YMLocalizedString(@"XPRoomSettingViewController3"); + config.message = msg; + config.shouldDismissOnBackgroundTouch = NO; + [TTPopup alertWithConfig:config confirmHandler:^{ + if (isOn) { + [self.presenter openRoomArrangeMic:roomUid]; + }else { + [self.presenter closeRoomArrangeMic:roomUid]; + } + } cancelHandler:^{ + }]; + + } + break; + case RoomSettingItemType_Leave_Model: + { + if (!isOn) { + [self.presenter closeRoomLeaveMode:roomUid]; + return; + } + + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.message = @"开启离开模式后,房主会固定显示在房主位,确认开启吗?"; + config.shouldDismissOnBackgroundTouch = NO; + + [TTPopup alertWithConfig:config confirmHandler:^{ + [self handleRoomLeaveMode]; + } cancelHandler:^{ + }]; + } + break; + case RoomSettingItemType_Lock: + { + if (isOn) { + XPRoomSettingInputView * titleView = [[XPRoomSettingInputView alloc] init]; + titleView.maxCount = 8; + titleView.delegate = self; + titleView.type = RoomSettingInputType_Pwd; + [TTPopup popupView:titleView style:TTPopupStyleAlert]; + } else { + NSString * mgId = [NSString stringWithFormat:@"%lld", self.roomInfo.mgId]; + [self.presenter updateRoomInfo:self.roomInfo.title roomPwd:@"" tagId:roomTag classifyId:roomClassifyId hasAnimationEffect:self.roomInfo.hasAnimationEffect roomUid:roomUid roomId:roomId type:self.roomInfo.type itemType:itemModel.type mgId:mgId]; + } + } + break; + case RoomSettingItemType_Gift_Effect: + { + if (isOn) { + NSString * mgId = [NSString stringWithFormat:@"%lld", self.roomInfo.mgId]; + [self.presenter updateRoomInfo:self.roomInfo.title roomPwd:self.roomInfo.roomPwd tagId:roomTag classifyId:roomClassifyId hasAnimationEffect:YES roomUid:roomUid roomId:roomId type:self.roomInfo.type itemType:itemModel.type mgId:mgId]; + return; + } + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.title = YMLocalizedString(@"XPRoomSettingViewController5"); + config.message = @"关闭后将看不到礼物特效,运作更加流畅。是否确认关闭礼物特效?"; + config.shouldDismissOnBackgroundTouch = NO; + + [TTPopup alertWithConfig:config confirmHandler:^{ + NSString * mgId = [NSString stringWithFormat:@"%lld", self.roomInfo.mgId]; + [self.presenter updateRoomInfo:self.roomInfo.title roomPwd:self.roomInfo.roomPwd tagId:roomTag classifyId:roomClassifyId hasAnimationEffect:NO roomUid:roomUid roomId:roomId type:self.roomInfo.type itemType:itemModel.type mgId:mgId]; + } cancelHandler:^{ + + }]; + } + break; + case RoomSettingItemType_Message_Screen: + { + if (isOn) { + [self.presenter updateRoomMessageScreenState:NO roomId:roomId]; + return; + } + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.title = YMLocalizedString(@"XPRoomSettingViewController7"); + config.message = @"关闭后将看不到聊天信息,运作更加流畅。是否确认关闭公屏?"; + config.shouldDismissOnBackgroundTouch = NO; + [TTPopup alertWithConfig:config confirmHandler:^{ + [self.presenter updateRoomMessageScreenState:YES roomId:roomId]; + } cancelHandler:^{ + + }]; + } + break; + default: + break; + } +} + +#pragma mark - XPRoomSettingProtocol +- (void)getRoomSettingListSuccess:(NSArray *)list { + self.datasource = list; + [self.tableView reloadData]; +} + +- (void)getRoomInfoSuccess:(RoomInfoModel *)roomInfo { + self.roomInfo = roomInfo; + [self.presenter getRoomSettingList:roomInfo isSuperAdmin:self.meIsSuperAdmin]; +} + +- (void)openRoomArrangeMicSuccess { + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; + [self.presenter getRoomInfo:roomUid]; +} + +- (void)closeRoomArrangeMicSuccess { + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; + [self.presenter getRoomInfo:roomUid]; +} + +- (void)updateRoomMessageScreenStateSuccess:(RoomInfoModel *)roomInfo { + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; + [self.presenter getRoomInfo:roomUid]; + ///发送公屏关闭开启的消息 + NSString *sessionID = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + AttachmentModel *attachement = [[AttachmentModel alloc]init]; + attachement.first = CustomMessageType_Update_RoomInfo; + attachement.second = Custom_Message_Sub_Update_RoomInfo_MessageState; + attachement.data = [roomInfo model2dictionary]; + NIMMessage *message = [[NIMMessage alloc]init]; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachement; + message.messageObject = object; + //构造会话 + NIMSession *session = [NIMSession session:sessionID type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; +} + +- (void)updateRoomInfoSuccess:(RoomInfoModel *)roomInfo itemType:(RoomSettingItemType)itemType { + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; + [self.presenter getRoomInfo:roomUid]; + if (itemType == RoomSettingItemType_Gift_Effect) { + NSString *sessionID = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + AttachmentModel *attachement = [[AttachmentModel alloc]init]; + attachement.first = CustomMessageType_Update_RoomInfo; + attachement.second = Custom_Message_Sub_Update_RoomInfo_AnimateEffect; + attachement.data = [roomInfo model2dictionary]; + NIMMessage *message = [[NIMMessage alloc]init]; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachement; + message.messageObject = object; + //构造会话 + NIMSession *session = [NIMSession session:sessionID type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; + } +} + +- (void)updateRoomInfoFail:(NSString *)message { + [self showErrorToast:message]; +} + +- (void)openRoomLeaveModeSuccess { + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; + [self.presenter getRoomInfo:roomUid]; +} + +- (void)closeRoomLeaveModeSuccess { + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; + [self.presenter getRoomInfo:roomUid]; +} + +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPRoomSettingTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPRoomSettingTableViewCell class])]; + } + return _tableView; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTagListView.h b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTagListView.h new file mode 100644 index 00000000..c89d1e64 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTagListView.h @@ -0,0 +1,30 @@ +// +// YMRoomTagListView.h +// YUMI +// +// Created by YUMI on 2022/7/20. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSUInteger, RoomSettingSelectTagType) { + RoomSettingSelectTagTypeTag,///房间标签 + RoomSettingSelectTagTypeClassify,///房间分类 +}; + +typedef void(^DidClickRoomTagCompletion)(NSString *tag); + +@interface XPRoomTagListView : UIView + +///选中的tagid +@property (nonatomic,copy) NSString *tagId; +///选择完成了 +@property (nonatomic,copy) DidClickRoomTagCompletion completion; +///标签类型 +@property (nonatomic, assign) RoomSettingSelectTagType tagType; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTagListView.m b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTagListView.m new file mode 100644 index 00000000..6fe5c560 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTagListView.m @@ -0,0 +1,244 @@ +// +// YMRoomTagListView.m +// YUMI +// +// Created by YUMI on 2022/7/20. +// + +#import "XPRoomTagListView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "TTPopup.h" +#import "UIImage+Utils.h" +#import "NSArray+Safe.h" +///Model +#import "RoomTagModel.h" +#import "RoomClassifyModel.h" +///View +#import "XPRoomSettingTagCell.h" +///P +#import "XPRoomTagPresenter.h" +#import "XPRoomTagProtocol.h" + +#import "Api+RoomSetting.h" +#import "AccountInfoStorage.h" +#import "XNDJTDDLoadingTool.h" + +@interface XPRoomTagListView() + +///完成 +@property (nonatomic, strong) UIButton *confirmButton; +///显示标题 +@property (nonatomic, strong) UILabel *titleLabel; +///列表 +@property (nonatomic, strong) UICollectionView *collectionView; +///数据 +@property (nonatomic,strong) NSArray *datasource; +///选中的tag +@property (nonatomic,strong) RoomTagModel *selectTagInfo; +///选中的分类 +@property (nonatomic, strong) RoomClassifyModel *selectClassifyInfo; + +@end + +@implementation XPRoomTagListView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +- (void)setTagType:(RoomSettingSelectTagType)tagType { + _tagType = tagType; + NSString * uid = [AccountInfoStorage instance].getUid; + if (tagType == RoomSettingSelectTagTypeTag) { + [Api getRoomTagList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + NSArray * array = [RoomTagModel modelsWithArray:data.data]; + self.datasource = array; + [self.collectionView reloadData]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + [TTPopup dismiss]; + } + } uid:uid]; + } else { + self.titleLabel.text = YMLocalizedString(@"XPRoomTagListView0"); + [Api getRoomClassifyList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + NSArray * array = [RoomClassifyModel modelsWithArray:data.data]; + self.datasource = array; + [self.collectionView reloadData]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + [TTPopup dismiss]; + } + } uid:uid]; + } +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor whiteColor]; + self.layer.cornerRadius = 12; + self.layer.masksToBounds = YES; + [self addSubview:self.confirmButton]; + [self addSubview:self.titleLabel]; + [self addSubview:self.collectionView]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(320); + make.height.mas_equalTo(227); + }]; + [self.confirmButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(38); + make.left.right.mas_equalTo(self).inset(30); + make.bottom.mas_equalTo(-15); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(15); + make.centerX.mas_equalTo(self); + make.height.mas_equalTo(21); + }]; + + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(26); + make.left.right.mas_equalTo(self).inset(32); + make.bottom.mas_equalTo(self.confirmButton.mas_top).offset(-30); + }]; +} + +#pragma mark - UICollectionViewDataSource +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPRoomSettingTagCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPRoomSettingTagCell class]) forIndexPath:indexPath]; + if (self.tagType == RoomSettingSelectTagTypeTag) { + RoomTagModel *homeTag = [self.datasource safeObjectAtIndex1:indexPath.row]; + if (self.selectTagInfo) { + if (homeTag.tid.intValue == self.selectTagInfo.tid.intValue) { + homeTag.isSelect = YES; + }else { + homeTag.isSelect = NO; + } + } else { + if (homeTag.tid.intValue == self.tagId.intValue) { + homeTag.isSelect = YES; + }else { + homeTag.isSelect = NO; + } + } + cell.roomTag = homeTag; + } else { + RoomClassifyModel *homeTag = [self.datasource safeObjectAtIndex1:indexPath.row]; + if (self.selectClassifyInfo) { + if (homeTag.cid.intValue == self.selectClassifyInfo.cid.intValue) { + homeTag.isSelect = YES; + }else { + homeTag.isSelect = NO; + } + } else { + if (homeTag.cid.intValue == self.tagId.intValue) { + homeTag.isSelect = YES; + }else { + homeTag.isSelect = NO; + } + } + cell.roomClassify = homeTag; + } + return cell; +} + +- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{ + return UIEdgeInsetsMake(10, 0, 10, 0);; +} + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + if (self.tagType == RoomSettingSelectTagTypeTag) { + RoomTagModel *homeTag = [self.datasource safeObjectAtIndex1:indexPath.row]; + CGFloat width = [homeTag.name boundingRectWithSize:CGSizeMake(200, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:12]} context:nil].size.width; + return CGSizeMake(width + 26, 26); + } else { + RoomClassifyModel *homeTag = [self.datasource safeObjectAtIndex1:indexPath.row]; + CGFloat width = [homeTag.sortName boundingRectWithSize:CGSizeMake(200, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:12]} context:nil].size.width; + return CGSizeMake(width + 26, 26); + } +} + +#pragma mark - UICollectionViewDelegate +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + [collectionView deselectItemAtIndexPath:indexPath animated:YES]; + if (self.tagType == RoomSettingSelectTagTypeTag) { + RoomTagModel * roomTag = [self.datasource safeObjectAtIndex1:indexPath.row]; + self.selectTagInfo = roomTag; + } else { + RoomClassifyModel *roomClassify = [self.datasource safeObjectAtIndex1:indexPath.row]; + self.selectClassifyInfo = roomClassify; + } + [collectionView reloadData]; +} + +#pragma mark - Event Response +- (void)confirmButtonAction:(UIButton *)sender { + [TTPopup dismiss]; + if (self.completion) { + if (self.tagType == RoomSettingSelectTagTypeTag) { + self.completion(self.selectTagInfo.tid); + } else { + self.completion(self.selectClassifyInfo.cid); + } + } +} + +#pragma mark - Getter & Setter +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightSemibold]; + _titleLabel.text = YMLocalizedString(@"XPRoomTagListView1"); + } + return _titleLabel; +} + +- (UICollectionView *)collectionView { + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.scrollDirection = UICollectionViewScrollDirectionVertical; + layout.minimumLineSpacing = 16; + layout.minimumInteritemSpacing = 10; + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.delegate = self; + _collectionView.dataSource = self; + _collectionView.backgroundColor = [UIColor clearColor]; + _collectionView.showsVerticalScrollIndicator = NO; + _collectionView.showsHorizontalScrollIndicator = NO; + [_collectionView registerClass:[XPRoomSettingTagCell class] forCellWithReuseIdentifier:NSStringFromClass([XPRoomSettingTagCell class])]; + } + return _collectionView; +} + +- (UIButton *)confirmButton { + if (_confirmButton == nil) { + _confirmButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_confirmButton setTitle:YMLocalizedString(@"XPRoomTagListView2") forState:UIControlStateNormal]; + _confirmButton.titleLabel.font = [UIFont systemFontOfSize:14]; + [_confirmButton addTarget:self action:@selector(confirmButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _confirmButton.layer.masksToBounds = YES; + _confirmButton.layer.cornerRadius = 19; + [_confirmButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } + return _confirmButton; +} +@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTagListViewController.h b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTagListViewController.h new file mode 100644 index 00000000..9a442840 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTagListViewController.h @@ -0,0 +1,29 @@ +// +// YMRoomTagListViewController.h +// YUMI +// +// Created by YUMI on 2021/12/28. +// + +#import "MvpViewController.h" + +typedef NS_ENUM(NSUInteger, RoomSettingTagType) { + RoomSettingTagTypeTag,///房间标签 + RoomSettingTagTypeClassify,///房间分类 +}; + +NS_ASSUME_NONNULL_BEGIN + +typedef void(^DidClickCompletion)(NSString *tag); + +@interface XPRoomTagListViewController : MvpViewController +///选中的tagid +@property (nonatomic,copy) NSString *tagId; +///选择完成了 +@property (nonatomic,copy) DidClickCompletion completion; +///标签类型 +@property (nonatomic, assign) RoomSettingTagType tagType; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTagListViewController.m b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTagListViewController.m new file mode 100644 index 00000000..e6bd3ac2 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTagListViewController.m @@ -0,0 +1,246 @@ +// +// YMRoomTagListViewController.m +// YUMI +// +// Created by YUMI on 2021/12/28. +// + +#import "XPRoomTagListViewController.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" +///Model +#import "RoomTagModel.h" +#import "RoomClassifyModel.h" +///View +#import "XPRoomSettingTagCell.h" +///P +#import "XPRoomTagPresenter.h" +#import "XPRoomTagProtocol.h" + +@interface XPRoomTagListViewController () +///关闭按钮 +@property (nonatomic, strong) UIButton *closeButton; +///完成 +@property (nonatomic, strong) UIButton *confirmButton; +///显示标题 +@property (nonatomic, strong) UILabel *titleLabel; +///列表 +@property (nonatomic, strong) UICollectionView *collectionView; +///数据 +@property (nonatomic,strong) NSArray *datasource; +///选中的tag +@property (nonatomic,strong) RoomTagModel *selectTagInfo; +///选中的分类 +@property (nonatomic, strong) RoomClassifyModel *selectClassifyInfo; + +@end + +@implementation XPRoomTagListViewController + +- (XPRoomTagPresenter *)createPresenter { + return [[XPRoomTagPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + if (self.tagType == RoomSettingTagTypeTag) { + [self.presenter getRoomTagList]; + } else { + [self.presenter getRoomClassifyList]; + self.titleLabel.text = @"快给您的房间选个分类吧!"; + } + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.view.backgroundColor = [UIColor colorWithWhite:0 alpha:0.95]; + [self.view addSubview:self.confirmButton]; + [self.view addSubview:self.closeButton]; + [self.view addSubview:self.titleLabel]; + [self.view addSubview:self.collectionView]; +} + +- (void)initSubViewConstraints { + [self.confirmButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(44); + make.left.right.mas_equalTo(self.view).inset(90); + make.bottom.mas_equalTo(-100); + }]; + + [self.closeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(32); + make.top.mas_equalTo(kStatusBarHeight + 6); + make.right.mas_equalTo(-23+5); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(135); + make.left.mas_equalTo(44); + make.height.mas_equalTo(24); + }]; + + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(30); + make.left.right.mas_equalTo(self.view).inset(44); + make.bottom.mas_equalTo(self.confirmButton.mas_top).offset(-30); + }]; +} + +#pragma mark - XPRoomTagProtocol +- (void)getRoomTagListSuccess:(NSArray *)array { + self.datasource = array; + [self.collectionView reloadData]; +} + + +- (void)getRoomClassifyListSuccess:(NSArray *)array { + self.datasource = array; + [self.collectionView reloadData]; +} + +#pragma mark - UICollectionViewDataSource +- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { + return 1; +} + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPRoomSettingTagCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPRoomSettingTagCell class]) forIndexPath:indexPath]; + if (self.tagType == RoomSettingTagTypeTag) { + RoomTagModel *homeTag = [self.datasource safeObjectAtIndex1:indexPath.row]; + if (self.selectTagInfo) { + if (homeTag.tid.intValue == self.selectTagInfo.tid.intValue) { + homeTag.isSelect = YES; + }else { + homeTag.isSelect = NO; + } + } else { + if (homeTag.tid.intValue == self.tagId.intValue) { + homeTag.isSelect = YES; + }else { + homeTag.isSelect = NO; + } + } + cell.roomTag = homeTag; + } else { + RoomClassifyModel *homeTag = [self.datasource safeObjectAtIndex1:indexPath.row]; + if (self.selectClassifyInfo) { + if (homeTag.cid.intValue == self.selectClassifyInfo.cid.intValue) { + homeTag.isSelect = YES; + }else { + homeTag.isSelect = NO; + } + } else { + if (homeTag.cid.intValue == self.tagId.intValue) { + homeTag.isSelect = YES; + }else { + homeTag.isSelect = NO; + } + } + cell.roomClassify = homeTag; + } + return cell; +} + +- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{ + return UIEdgeInsetsMake(10, 0, 10, 0);; +} + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + if (self.tagType == RoomSettingTagTypeTag) { + RoomTagModel *homeTag = [self.datasource safeObjectAtIndex1:indexPath.row]; + CGFloat width = [homeTag.name boundingRectWithSize:CGSizeMake(200, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:12]} context:nil].size.width; + return CGSizeMake(width + 26, 26); + } else { + RoomClassifyModel *homeTag = [self.datasource safeObjectAtIndex1:indexPath.row]; + CGFloat width = [homeTag.sortName boundingRectWithSize:CGSizeMake(200, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:12]} context:nil].size.width; + return CGSizeMake(width + 26, 26); + } +} + +#pragma mark - UICollectionViewDelegate +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + [collectionView deselectItemAtIndexPath:indexPath animated:YES]; + if (self.tagType == RoomSettingTagTypeTag) { + RoomTagModel * roomTag = [self.datasource safeObjectAtIndex1:indexPath.row]; + self.selectTagInfo = roomTag; + } else { + RoomClassifyModel *roomClassify = [self.datasource safeObjectAtIndex1:indexPath.row]; + self.selectClassifyInfo = roomClassify; + } + [collectionView reloadData]; +} + +#pragma mark - Event Response +- (void)confirmButtonAction:(UIButton *)sender { + [self dismissViewControllerAnimated:YES completion:nil]; + if (self.completion) { + if (self.tagType == RoomSettingTagTypeTag) { + self.completion(self.selectTagInfo.tid); + } else { + self.completion(self.selectClassifyInfo.cid); + } + } +} + +- (void)closeButtonAction:(UIButton *)sender { + [self dismissViewControllerAnimated:YES completion:nil]; +} +#pragma mark - Getter & Setter +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textColor = UIColor.whiteColor; + _titleLabel.font = [UIFont systemFontOfSize:22]; + _titleLabel.text = @"快给您的房间选个标签吧!"; + } + return _titleLabel; +} + +- (UICollectionView *)collectionView { + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.minimumLineSpacing = 10; + layout.minimumInteritemSpacing = 10; + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.delegate = self; + _collectionView.dataSource = self; + _collectionView.backgroundColor = [UIColor clearColor]; + _collectionView.showsVerticalScrollIndicator = NO; + _collectionView.showsHorizontalScrollIndicator = NO; + [_collectionView registerClass:[XPRoomSettingTagCell class] forCellWithReuseIdentifier:NSStringFromClass([XPRoomSettingTagCell class])]; + } + return _collectionView; +} + +- (UIButton *)closeButton { + if (_closeButton == nil) { + _closeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_closeButton setImage:[UIImage imageNamed:@"room_setting_tag_close"] forState:UIControlStateNormal]; + [_closeButton addTarget:self action:@selector(closeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _closeButton; +} + +- (UIButton *)confirmButton { + if (_confirmButton == nil) { + _confirmButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_confirmButton setTitle:YMLocalizedString(@"XPRoomTagListViewController2") forState:UIControlStateNormal]; + _confirmButton.titleLabel.font = [UIFont systemFontOfSize:16]; + _confirmButton.backgroundColor = [DJDKMIMOMColor mainTextColor]; + [_confirmButton addTarget:self action:@selector(confirmButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _confirmButton.layer.masksToBounds = YES; + _confirmButton.layer.cornerRadius = 22; + } + return _confirmButton; +} +@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTopicAlertView.h b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTopicAlertView.h new file mode 100644 index 00000000..8007010b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTopicAlertView.h @@ -0,0 +1,19 @@ +// +// YMRoomTopicAlertView.h +// YUMI +// +// Created by YUMI on 2022/3/15. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomTopicAlertView : UIView +///显示标题 +@property (nonatomic,copy) NSString *title; +///显示内容 +@property (nonatomic,copy) NSString *message; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTopicAlertView.m b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTopicAlertView.m new file mode 100644 index 00000000..bb8f03b1 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTopicAlertView.m @@ -0,0 +1,124 @@ +// +// YMRoomTopicAlertView.m +// YUMI +// +// Created by YUMI on 2022/3/15. +// + +#import "XPRoomTopicAlertView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "TTPopup.h" +#import "YUMIMacroUitls.h" + +@interface XPRoomTopicAlertView () + +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///显示文本 +@property (nonatomic,strong) UITextView *textView; +///关闭按钮 +@property (nonatomic,strong) UIButton *closeButton; + +@end + +@implementation XPRoomTopicAlertView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.layer.masksToBounds = YES; + self.layer.cornerRadius = 15; + self.backgroundColor = [UIColor whiteColor]; + [self addSubview:self.titleLabel]; + [self addSubview:self.textView]; + [self addSubview:self.closeButton]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth - 40 * 2); + make.bottom.mas_equalTo(self.closeButton.mas_bottom).offset(20); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self).inset(20); + }]; + + [self.textView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self).inset(20); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(15); + make.height.mas_equalTo(200); + }]; + + [self.closeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(124, 44)); + make.top.mas_equalTo(self.textView.mas_bottom).offset(20); + make.centerX.mas_equalTo(self); + }]; +} + +#pragma mark - Event Response +- (void)closeButtonAction:(UIButton *)sender { + [TTPopup dismiss]; +} + +#pragma mark - Getters And Setters +- (void)setTitle:(NSString *)title { + _title = title; + self.titleLabel.text = _title.length > 0 ? _title : YMLocalizedString(@"XPRoomTopicAlertView0"); +} + +- (void)setMessage:(NSString *)message { + _message = message; + self.textView.text = _message.length > 0 ? _message : YMLocalizedString(@"XPRoomTopicAlertView1"); +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.font = [UIFont fontWithName:@"PingFangSC-Medium" size:16]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + +- (UITextView *)textView { + if (!_textView) { + _textView = [[UITextView alloc] init]; + _textView.textColor = [DJDKMIMOMColor mainTextColor]; + _textView.backgroundColor = [UIColor clearColor]; + _textView.font = [UIFont systemFontOfSize:15]; + _textView.editable = NO; + } + return _textView; +} + +- (UIButton *)closeButton { + if (!_closeButton) { + _closeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_closeButton setTitle:YMLocalizedString(@"XPRoomTopicAlertView2") forState:UIControlStateNormal]; + [_closeButton setTitleColor:[DJDKMIMOMColor cancelButtonTextColor] forState:UIControlStateNormal]; + _closeButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_closeButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor cancelButtonGradientStartColor], [DJDKMIMOMColor cancelButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _closeButton.layer.masksToBounds = YES; + _closeButton.layer.cornerRadius = 22; + [_closeButton addTarget:self action:@selector(closeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _closeButton; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTopicViewController.h b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTopicViewController.h new file mode 100644 index 00000000..3d5a8f2e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTopicViewController.h @@ -0,0 +1,17 @@ +// +// YMRoomTopicViewController.h +// YUMI +// +// Created by YUMI on 2022/3/14. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN +@class RoomInfoModel; +@interface XPRoomTopicViewController : MvpViewController +///房间信息 +@property (nonatomic,strong) RoomInfoModel *roomInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTopicViewController.m b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTopicViewController.m new file mode 100644 index 00000000..b7304046 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomTopicViewController.m @@ -0,0 +1,245 @@ +// +// YMRoomTopicViewController.m +// YUMI +// +// Created by YUMI on 2022/3/14. +// + +#import "XPRoomTopicViewController.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "YUMIMacroUitls.h" +///Model +#import "RoomInfoModel.h" +///P +#import "XPRoomTopicPresenter.h" +#import "XPRoomTopicProtocol.h" + +@interface XPRoomTopicViewController () +///显示标题 +@property (nonatomic,strong) UITextField *textField; +///标题显示多少个 +@property (nonatomic,strong) UILabel *titleNumberLabel; +///显示内容 +@property (nonatomic,strong) UITextView *contentTextView; +///内容显示多少个 +@property (nonatomic,strong) UILabel *contentLabel; +///确认 +@property (nonatomic,strong) UIButton *confirmButton; +///容器 +@property (nonatomic,strong) UIView * contentView; +///占位的 +@property (nonatomic,strong) UILabel *placeLabel; +@end + +@implementation XPRoomTopicViewController + +- (XPRoomTopicPresenter *)createPresenter { + return [[XPRoomTopicPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + [self.view endEditing:YES]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"XPRoomTopicViewController0"); + [self.view addSubview:self.textField]; + [self.view addSubview:self.titleNumberLabel]; + [self.view addSubview:self.contentView]; + [self.view addSubview:self.contentLabel]; + [self.view addSubview:self.confirmButton]; + + [self.contentView addSubview:self.contentTextView]; + [self.contentView addSubview:self.placeLabel]; +} + +- (void)initSubViewConstraints { + [self.textField mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view).inset(15); + make.height.mas_equalTo(44); + make.top.mas_equalTo(self.view).offset(15); + }]; + + [self.titleNumberLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.view).offset(-15); + make.top.mas_equalTo(self.textField.mas_bottom).offset(5); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view).inset(15); + make.top.mas_equalTo(self.titleNumberLabel.mas_bottom).offset(15); + make.height.mas_equalTo(210); + }]; + + [self.contentTextView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.contentView).inset(5); + }]; + + [self.placeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.mas_equalTo(self.contentTextView); + }]; + + [self.contentLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.contentView);; + make.top.mas_equalTo(self.contentView.mas_bottom).offset(15); + }]; + + [self.confirmButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view).inset(47); + make.height.mas_equalTo(44); + make.bottom.mas_equalTo(self.view).offset(-kSafeAreaBottomHeight - 20); + }]; +} + +#pragma mark - UITextViewDelegate +- (void)textViewDidChange:(UITextView *)textView { + if (textView.text.length > 0) { + self.placeLabel.hidden = YES; + } else { + self.placeLabel.hidden = NO; + } + if (textView.text.length > 300) { + textView.text = [textView.text substringToIndex:300]; + } + self.contentLabel.text = [NSString stringWithFormat:@"%ld/300", textView.text.length]; +} + +- (void)textViewDidBeginEditing:(UITextView *)textView { + self.placeLabel.hidden = YES; +} + +#pragma mark - XPRoomTopicProtocol +- (void)updateRoomTopicSuccess { + [self.navigationController popViewControllerAnimated:YES]; +} + +- (void)updateRoomTopicFail:(NSString *)message { + [self showErrorToast:message]; +} + +#pragma mark - Event Response +- (void)confirmButtonAction:(UIButton *)sender { + if (self.textField.text.length <= 0) { + [self showErrorToast:YMLocalizedString(@"XPRoomTopicViewController1")]; + return; + } + [self.presenter roomTopicUpdate:self.textField.text introduction:self.contentTextView.text roomInfo:self.roomInfo]; +} + +- (void)textFiledDidChange:(UITextField *)textField { + if (textField.text.length > 15) { + textField.text = [textField.text substringToIndex:15]; + } + self.titleNumberLabel.text = [NSString stringWithFormat:@"%ld/15", textField.text.length]; +} + + +#pragma mark - Getters And Setters +- (void)setRoomInfo:(RoomInfoModel *)roomInfo { + _roomInfo = roomInfo; + if (_roomInfo) { + self.textField.text = _roomInfo.roomDesc; + self.contentTextView.text = _roomInfo.introduction; + self.titleNumberLabel.text = [NSString stringWithFormat:@"%ld/15", _roomInfo.roomDesc.length]; + self.contentLabel.text = [NSString stringWithFormat:@"%ld/300", _roomInfo.introduction.length]; + self.placeLabel.hidden = _roomInfo.introduction.length > 0; + } +} + +- (UITextField *)textField { + if (!_textField) { + _textField = [[UITextField alloc] init]; + _textField.layer.cornerRadius = 8; + _textField.layer.masksToBounds = YES; + _textField.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _textField.font = [UIFont systemFontOfSize:13]; + _textField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:YMLocalizedString(@"XPRoomTopicViewController2") attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:13], NSForegroundColorAttributeName : [DJDKMIMOMColor textThirdColor]}]; + _textField.tintColor = [DJDKMIMOMColor appMainColor]; + UIView *searchIconView = [[UIView alloc] init]; + searchIconView.frame = CGRectMake(0, 0, 7, 10); + _textField.leftView = searchIconView; + _textField.leftViewMode = UITextFieldViewModeAlways; + [_textField addTarget:self action:@selector(textFiledDidChange:) forControlEvents:UIControlEventEditingChanged]; + } + return _textField; +} + +- (UILabel *)titleNumberLabel { + if (!_titleNumberLabel) { + _titleNumberLabel = [[UILabel alloc] init]; + _titleNumberLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _titleNumberLabel.font = [UIFont systemFontOfSize:10]; + _titleNumberLabel.text = @"0/15"; + } + return _titleNumberLabel; +} + +- (UITextView *)contentTextView { + if (!_contentTextView) { + _contentTextView = [[UITextView alloc] init]; + _contentTextView.backgroundColor = [UIColor clearColor]; + _contentTextView.font = [UIFont systemFontOfSize:13]; + _contentTextView.tintColor = [UIColor clearColor]; + _contentTextView.textColor = [DJDKMIMOMColor mainTextColor]; + _contentTextView.tintColor = [DJDKMIMOMColor appMainColor]; + _contentTextView.delegate = self; + } + return _contentTextView; +} + +- (UILabel *)contentLabel { + if (!_contentLabel) { + _contentLabel = [[UILabel alloc] init]; + _contentLabel.font = [UIFont systemFontOfSize:10]; + _contentLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _contentLabel.text = @"0/300"; + } + return _contentLabel; +} + +- (UIView *)contentView { + if (!_contentView) { + _contentView = [[UIView alloc] init]; + _contentView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _contentView.layer.masksToBounds = YES; + _contentView.layer.cornerRadius = 8; + } + return _contentView; +} + +- (UILabel *)placeLabel { + if (!_placeLabel) { + _placeLabel = [[UILabel alloc] init]; + _placeLabel.text = YMLocalizedString(@"XPRoomTopicViewController3"); + _placeLabel.font = [UIFont systemFontOfSize:13]; + _placeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _placeLabel; +} + +- (UIButton *)confirmButton { + if (!_confirmButton) { + _confirmButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_confirmButton setTitle:YMLocalizedString(@"XPRoomTopicViewController4") forState:UIControlStateNormal]; + [_confirmButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _confirmButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_confirmButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _confirmButton.layer.masksToBounds = YES; + _confirmButton.layer.cornerRadius = 22; + [_confirmButton addTarget:self action:@selector(confirmButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _confirmButton; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberCallforConsumerRegardGovernancer.h b/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberCallforConsumerRegardGovernancer.h deleted file mode 100644 index af1827e5..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberCallforConsumerRegardGovernancer.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMRoomInviteUserViewController.h -// YUMI -// -// Created by YUMI on 2022/1/18. -// 抱用户上麦控制器 - -#import "BaseRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberCallforConsumerRegardGovernancer : BaseRegardGovernancer -@property (nonatomic,assign) BOOL isExecutiveOrMaintainrietary; -@property (nonatomic,assign) NSInteger blindDateVipUid; -@property (nonatomic,copy) NSString *roomId; -@property (nonatomic,copy) NSString *position; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberCallforConsumerRegardGovernancer.m b/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberCallforConsumerRegardGovernancer.m deleted file mode 100644 index 3267d862..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberCallforConsumerRegardGovernancer.m +++ /dev/null @@ -1,361 +0,0 @@ -// -// YMRoomInviteUserViewController.m -// YUMI -// -// Created by YUMI on 2022/1/18. -// - -#import "YUMIChamberCallforConsumerRegardGovernancer.h" -#import -#import -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "AccountAbstractStorage.h" -#import "Api.h" -#import "NSArray+Safe.h" -#import "ConsumerAbstractMatrix.h" -#import "MiecreoscoopeMHTueueMatrix.h" -#import "AttachmentMatrix.h" -#import "MiecreoscoopeExtMatrix.h" -#import "YUMIChamberOnlineTabulationRegardElement.h" -#import "YUMIChamberRoleDispossessTabulationRegardElement.h" - -@interface YUMIChamberCallforConsumerRegardGovernancer () -@property (nonatomic,strong) NSMutableArray *derivationGarment; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,strong) NSArray *loudspeakerFormationGarment; -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NIMChatroomMember *lastMember; -@property (nonatomic,strong) NIMChatroomMember *tmpRecentComponent; -@end - -@implementation YUMIChamberCallforConsumerRegardGovernancer - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initIntelligencerGrantedTerminalerRrfresh]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = self.isExecutiveOrMaintainrietary ? @"在线房主/管理员" : YMLocalizedString(@"YUMI_Room_Invite_User_View_Controller_1"); - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - - [self intelligenceerRenovtowardseh]; -} - -- (void)intelligenceerRenovtowardseh { - self.lastMember= nil; - self.tmpRecentComponent = nil; - [self.datasource removeAllObjects]; - [[self fetchChinwagChamberInthecaseofmtowardsion] subscribeNext:^(id _Nullable x) { - NSArray * queueArray = x; - [[self chamberChinwagChamberRegularComponentSttowardsement] subscribeNext:^(id _Nullable x) { - NSArray * regularList = x; - [regularList enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - NIMChatroomMember * member = obj; - if (member.type == NIMTeamMemberTypeOwner) { - [self.datasource insertObject:member atIndex:0]; - }else { - [self.datasource addObject:member]; - } - }]; - - [[self chamberChinwagChamberTmpComponentSttowardsement] subscribeNext:^(id _Nullable x) { - NSArray * tmpList = x; - [self.datasource addObjectsFromArray:tmpList]; - for (NSInteger i = (self.datasource.count - 1); i >= 0; i--) { - NIMChatroomMember * member = [self.datasource secureGroalTowardsIndictowardsrix1:i]; - for (ConsumerAbstractMatrix * userInfo in queueArray) { - if (member.userId.integerValue == userInfo.uid) { - [self.datasource removeObject:member]; - continue; - } - } - } - [self.tableView reloadData]; - }]; - - }]; - }]; - - -} - -- (void)footerRenovtowardseh { - [[self chamberChinwagChamberRegularComponentSttowardsement] subscribeNext:^(id _Nullable x) { - NSArray * regularList = x; - [regularList enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - NIMChatroomMember * member = obj; - if (member.type == NIMTeamMemberTypeOwner) { - [self.datasource insertObject:member atIndex:0]; - }else { - [self.datasource addObject:member]; - } - }]; - - [[self chamberChinwagChamberTmpComponentSttowardsement] subscribeNext:^(id _Nullable x) { - NSArray * tmpList = x; - [tmpList enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - [self.datasource addObject:obj]; - }]; - - for (NSInteger i = (self.datasource.count - 1); i >= 0; i--) { - NIMChatroomMember * member = [self.datasource secureGroalTowardsIndictowardsrix1:i]; - for (ConsumerAbstractMatrix * userInfo in self.loudspeakerFormationGarment) { - if (member.userId.integerValue == userInfo.uid) { - [self.datasource removeObject:member]; - break;; - } - } - } - [self.tableView reloadData]; - }]; - - }]; -} - -- (RACSignal *)fetchChinwagChamberInthecaseofmtowardsion { - return [RACSignal createSignal:^RACDisposable * _Nullable(id _Nonnull subscriber) { - [[NIMSDK sharedSDK].chatroomManager fetchChatroomQueue:self.roomId completion:^(NSError * _Nullable error, NSArray *> * _Nullable info) { - if (error == nil) { - NSMutableArray * array= [NSMutableArray array]; - for (NSDictionary *item in info) { - ConsumerAbstractMatrix *userInfo = [ConsumerAbstractMatrix mtowardsrixAboutJSON:item.allValues.firstObject]; - [array addObject:userInfo]; - } - self.loudspeakerFormationGarment = [array copy]; - [subscriber sendNext:self.loudspeakerFormationGarment]; - [subscriber sendCompleted]; - } else { - [subscriber sendNext:nil]; - [subscriber sendCompleted]; - } - - }]; - return nil; - }]; -} - -- (RACSignal *)chamberChinwagChamberRegularComponentSttowardsement { - return [RACSignal createSignal:^RACDisposable * _Nullable(id _Nonnull subscriber) { - NIMChatroomMemberRequest *request = [[NIMChatroomMemberRequest alloc] init]; - request.roomId = self.roomId; - request.type = NIMChatroomFetchMemberTypeRegular; - request.lastMember = self.lastMember; - request.limit = 200; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembers:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - if (error == nil) { - if (members.count > 0) { - self.lastMember = members.lastObject; - } - NSMutableArray * array = [NSMutableArray array]; - [members enumerateObjectsUsingBlock:^(NIMChatroomMember * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.isOnline && !obj.isInBlackList) { - if (self.isExecutiveOrMaintainrietary) { - if (obj.type == NIMChatroomMemberTypeCreator || obj.type == NIMChatroomMemberTypeManager) { - [array addObject:obj]; - } - } else { - [array addObject:obj]; - } - } - }]; - [subscriber sendNext:array]; - [subscriber sendCompleted]; - } else { - [subscriber sendNext:nil]; - [subscriber sendCompleted]; - } - }]; - return nil; - }]; - -} - - -- (RACSignal *)chamberChinwagChamberTmpComponentSttowardsement { - return [RACSignal createSignal:^RACDisposable * _Nullable(id _Nonnull subscriber) { - NIMChatroomMemberRequest *request = [[NIMChatroomMemberRequest alloc] init]; - request.roomId = self.roomId; - request.type = NIMChatroomFetchMemberTypeTemp; - request.lastMember = self.tmpRecentComponent; - request.limit = 20; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembers:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - [self.tableView.mj_header endRefreshing]; - [self.tableView.mj_footer endRefreshing]; - if (error == nil) { - if (members.count > 0) { - self.tmpRecentComponent = members.lastObject; - } - NSMutableArray * array = [NSMutableArray array]; - [members enumerateObjectsUsingBlock:^(NIMChatroomMember * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.isOnline && !obj.isInBlackList) { - if (self.isExecutiveOrMaintainrietary) { - if (obj.type == NIMChatroomMemberTypeCreator || obj.type == NIMChatroomMemberTypeManager) { - [array addObject:obj]; - } - } else { - [array addObject:obj]; - } - } - }]; - [subscriber sendNext:array]; - [subscriber sendCompleted]; - } else { - [subscriber sendNext:nil]; - [subscriber sendCompleted]; - } - }]; - return nil; - }]; -} - - -- (NSDictionary *)consumerAbstractToInthecaseofmtowardsionExt:(ConsumerAbstractMatrix *)userInfo { - MiecreoscoopeExtMatrix * extModel = [[MiecreoscoopeExtMatrix alloc] init]; - extModel.gender = userInfo.gender; - extModel.avatar = userInfo.avatar; - extModel.uid = userInfo.uid; - extModel.nick = userInfo.nick; - extModel.vipMic = userInfo.uid == self.blindDateVipUid; - extModel.headWearUrl = userInfo.headwearEffect.length > 0 ? userInfo.headwearEffect : userInfo.headwearPic; - extModel.micCircle = userInfo.micCircle; - extModel.micNickColor = userInfo.micNickColor; - extModel.preventKick = userInfo.userVipInfoVO.preventKick; - extModel.enterHide = userInfo.userVipInfoVO.enterHide; - return [extModel mtowardsrix2dictionary]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMIChamberOnlineTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIChamberOnlineTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIChamberOnlineTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIChamberOnlineTabulationRegardElement class])]; - } - NIMChatroomMember * member = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.member = member; - cell.onlineGenre = ChamberOnLineGenre_Invite_User; - return cell; - } - - YUMIChamberRoleDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIChamberRoleDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIChamberRoleDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIChamberRoleDispossessTabulationRegardElement class])]; - } - cell.titleLabel.text = YMLocalizedString(@"YUMI_Room_Invite_User_View_Controller_2"); - cell.backgroundColor = [UIColor clearColor]; - return cell; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - return 60; - } - return KScreenHeight - kNavigationHeight; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.datasource.count > 0) { - NIMChatroomMember * member = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - if ([AccountAbstractStorage instance].acquireCid.integerValue == member.userId.integerValue) { - [Api getUserInfo:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - ConsumerAbstractMatrix * userInfo = [ConsumerAbstractMatrix mtowardsrixAboutJSON:data.data]; - NIMChatroomQueueUpdateRequest *request = [[NIMChatroomQueueUpdateRequest alloc]init]; - request.key = self.position; - request.value = [[self consumerAbstractToInthecaseofmtowardsionExt:userInfo] toJSONBWSttr]; - request.roomId = self.roomId; - request.transient = YES; - [[NIMSDK sharedSDK].chatroomManager updateChatroomQueueObject:request completion:^(NSError * _Nullable error) { - if (error == nil) { - [self.navigationController popViewControllerAnimated:YES]; - } else { - [self EvidenceMistakeToast:error.description]; - } - }]; - } - - } uid:member.userId]; - } else { - NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic setValue:@(self.position.integerValue) forKey:@"micPosition"]; - [dic setValue:@(member.userId.integerValue) forKey:@"uid"]; - AttachmentMatrix *attachement = [[AttachmentMatrix alloc]init]; - attachement.first = IndividualityCommunicationGenre_Queue; - attachement.second = Custom_Message_Sub_Queue_Invite; - attachement.data = dic; - - NIMMessage *message = [[NIMMessage alloc]init]; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachement; - message.messageObject = object; - - NIMSession *session = [NIMSession session:self.roomId type:NIMSessionTypeChatroom]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; - [self.navigationController popViewControllerAnimated:YES]; - } - } -} - -#pragma mark - Event Response -- (void)encourageBtutonPerformance:(UIButton *)sender { - [self.navigationController popViewControllerAnimated:YES]; -} - -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - _tableView.rowHeight = 60; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIChamberOnlineTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIChamberOnlineTabulationRegardElement class])]; - [_tableView registerClass:[YUMIChamberRoleDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIChamberRoleDispossessTabulationRegardElement class])]; - } - return _tableView; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} -@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberCoupleStatementRegard.h b/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberCoupleStatementRegard.h deleted file mode 100644 index 8f1c9937..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberCoupleStatementRegard.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// YMRoomTagListView.h -// YUMI -// -// Created by YUMI on 2022/7/20. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSUInteger, ChamberInstanllingSelectTagGenre) { - ChamberInstanllingSelectTagGenreTag, - ChamberInstanllingSelectTagGenreClassify, -}; - -typedef void(^DidClickRoomTagCompletion)(NSString *tag); - -@interface YUMIChamberCoupleStatementRegard : UIView - -@property (nonatomic,copy) NSString *tagId; -@property (nonatomic,copy) DidClickRoomTagCompletion completion; -@property (nonatomic, assign) ChamberInstanllingSelectTagGenre coupleGenre; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberCoupleStatementRegard.m b/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberCoupleStatementRegard.m deleted file mode 100644 index d1b7d631..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberCoupleStatementRegard.m +++ /dev/null @@ -1,233 +0,0 @@ -// -// YMRoomTagListView.m -// YUMI -// -// Created by YUMI on 2022/7/20. -// - -#import "YUMIChamberCoupleStatementRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "MKJPopup.h" -#import "UIImage+Utils.h" -#import "NSArray+Safe.h" -#import "ChamberCoupleMatrix.h" -#import "ChamberClassifyMatrix.h" -#import "YUMIChamberInstanllingCoupleElement.h" -#import "YUMIChamberCoupleExternalizer.h" -#import "FBCChamberTagCeremony.h" - -#import "Api+RoomSetting.h" -#import "AccountAbstractStorage.h" -#import "XNDJTBWGLoadingTool.h" - -@interface YUMIChamberCoupleStatementRegard() - -@property (nonatomic, strong) UIButton *acknowledgementBtuton; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UICollectionView *collectionView; -@property (nonatomic,strong) NSArray *datasource; -@property (nonatomic,strong) ChamberCoupleMatrix *chosenCoupleAbstract; -@property (nonatomic, strong) ChamberClassifyMatrix *chosenCategorizedAbstract; - -@end - -@implementation YUMIChamberCoupleStatementRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -- (void)setCoupleGenre:(ChamberInstanllingSelectTagGenre)coupleGenre { - _coupleGenre = coupleGenre; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - if (coupleGenre == ChamberInstanllingSelectTagGenreTag) { - [Api acquireChamberCoupleSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSArray * array = [ChamberCoupleMatrix mtowardsrixsAboutGarment:data.data]; - self.datasource = array; - [self.collectionView reloadData]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - [MKJPopup dismiss]; - } - } uid:uid]; - } else { - self.titleLabel.text = YMLocalizedString(@"YUMI_Room_Tag_List_View_0"); - [Api acquireChamberCtowardsegorizeifySttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSArray * array = [ChamberClassifyMatrix mtowardsrixsAboutGarment:data.data]; - self.datasource = array; - [self.collectionView reloadData]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - [MKJPopup dismiss]; - } - } uid:uid]; - } -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor whiteColor]; - self.layer.cornerRadius = 12; - self.layer.masksToBounds = YES; - [self addSubview:self.acknowledgementBtuton]; - [self addSubview:self.titleLabel]; - [self addSubview:self.collectionView]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(320); - make.height.mas_equalTo(227); - }]; - [self.acknowledgementBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(38); - make.left.right.mas_equalTo(self).inset(30); - make.bottom.mas_equalTo(-15); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(15); - make.centerX.mas_equalTo(self); - make.height.mas_equalTo(21); - }]; - - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(26); - make.left.right.mas_equalTo(self).inset(32); - make.bottom.mas_equalTo(self.acknowledgementBtuton.mas_top).offset(-30); - }]; -} - -#pragma mark - UICollectionViewDataSource -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMIChamberInstanllingCoupleElement *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIChamberInstanllingCoupleElement class]) forIndexPath:indexPath]; - if (self.coupleGenre == ChamberInstanllingSelectTagGenreTag) { - ChamberCoupleMatrix *homeTag = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (self.chosenCoupleAbstract) { - if (homeTag.tid.intValue == self.chosenCoupleAbstract.tid.intValue) { - homeTag.isSelect = YES; - }else { - homeTag.isSelect = NO; - } - } else { - if (homeTag.tid.intValue == self.tagId.intValue) { - homeTag.isSelect = YES; - }else { - homeTag.isSelect = NO; - } - } - cell.roomTag = homeTag; - } else { - ChamberClassifyMatrix *homeTag = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (self.chosenCategorizedAbstract) { - if (homeTag.cid.intValue == self.chosenCategorizedAbstract.cid.intValue) { - homeTag.isSelect = YES; - }else { - homeTag.isSelect = NO; - } - } else { - if (homeTag.cid.intValue == self.tagId.intValue) { - homeTag.isSelect = YES; - }else { - homeTag.isSelect = NO; - } - } - cell.chamberCategorized = homeTag; - } - return cell; -} - -- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{ - return UIEdgeInsetsMake(10, 0, 10, 0);; -} - -- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { - if (self.coupleGenre == ChamberInstanllingSelectTagGenreTag) { - ChamberCoupleMatrix *homeTag = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - CGFloat width = [homeTag.name boundingRectWithSize:CGSizeMake(200, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:12]} context:nil].size.width; - return CGSizeMake(width + 26, 26); - } else { - ChamberClassifyMatrix *homeTag = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - CGFloat width = [homeTag.sortName boundingRectWithSize:CGSizeMake(200, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:12]} context:nil].size.width; - return CGSizeMake(width + 26, 26); - } -} - -#pragma mark - UICollectionViewDelegate -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - [collectionView deselectItemAtIndexPath:indexPath animated:YES]; - if (self.coupleGenre == ChamberInstanllingSelectTagGenreTag) { - ChamberCoupleMatrix * roomTag = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - self.chosenCoupleAbstract = roomTag; - } else { - ChamberClassifyMatrix *chamberCategorized = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - self.chosenCategorizedAbstract = chamberCategorized; - } - [collectionView reloadData]; -} - -#pragma mark - Event Response -- (void)acknowledgementBtutonPerformance:(UIButton *)sender { - [MKJPopup dismiss]; - if (self.completion) { - if (self.coupleGenre == ChamberInstanllingSelectTagGenreTag) { - self.completion(self.chosenCoupleAbstract.tid); - } else { - self.completion(self.chosenCategorizedAbstract.cid); - } - } -} - -#pragma mark - Getter & Setter -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightSemibold]; - _titleLabel.text = YMLocalizedString(@"YUMI_Room_Tag_List_View_1"); - } - return _titleLabel; -} - -- (UICollectionView *)collectionView { - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.scrollDirection = UICollectionViewScrollDirectionVertical; - layout.minimumLineSpacing = 16; - layout.minimumInteritemSpacing = 10; - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.delegate = self; - _collectionView.dataSource = self; - _collectionView.backgroundColor = [UIColor clearColor]; - _collectionView.showsVerticalScrollIndicator = NO; - _collectionView.showsHorizontalScrollIndicator = NO; - [_collectionView registerClass:[YUMIChamberInstanllingCoupleElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIChamberInstanllingCoupleElement class])]; - } - return _collectionView; -} - -- (UIButton *)acknowledgementBtuton { - if (_acknowledgementBtuton == nil) { - _acknowledgementBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_acknowledgementBtuton setTitle:YMLocalizedString(@"YUMI_Room_Tag_List_View_2") forState:UIControlStateNormal]; - _acknowledgementBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - [_acknowledgementBtuton addTarget:self action:@selector(acknowledgementBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _acknowledgementBtuton.layer.masksToBounds = YES; - _acknowledgementBtuton.layer.cornerRadius = 19; - [_acknowledgementBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - } - return _acknowledgementBtuton; -} -@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberCoupleStatementRegardGovernancer.h b/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberCoupleStatementRegardGovernancer.h deleted file mode 100644 index a23f4c12..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberCoupleStatementRegardGovernancer.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YMRoomTagListViewController.h -// YUMI -// -// Created by YUMI on 2021/12/28. -// - -#import "MvpRegardGovernancer.h" - -typedef NS_ENUM(NSUInteger, ChamberInstanllingTagGenre) { - ChamberInstanllingTagGenreTag, - ChamberInstanllingTagGenreClassify, -}; - -NS_ASSUME_NONNULL_BEGIN - -typedef void(^DidClickCompletion)(NSString *tag); - -@interface YUMIChamberCoupleStatementRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,copy) NSString *tagId; -@property (nonatomic,copy) DidClickCompletion completion; -@property (nonatomic, assign) ChamberInstanllingTagGenre coupleGenre; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberCoupleStatementRegardGovernancer.m b/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberCoupleStatementRegardGovernancer.m deleted file mode 100644 index 930af02c..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberCoupleStatementRegardGovernancer.m +++ /dev/null @@ -1,234 +0,0 @@ -// -// YMRoomTagListViewController.m -// YUMI -// -// Created by YUMI on 2021/12/28. -// - -#import "YUMIChamberCoupleStatementRegardGovernancer.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "ChamberCoupleMatrix.h" -#import "ChamberClassifyMatrix.h" -#import "YUMIChamberInstanllingCoupleElement.h" -#import "YUMIChamberCoupleExternalizer.h" -#import "FBCChamberTagCeremony.h" - -@interface YUMIChamberCoupleStatementRegardGovernancer () -@property (nonatomic, strong) UIButton *concludeBtuton; -@property (nonatomic, strong) UIButton *acknowledgementBtuton; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UICollectionView *collectionView; -@property (nonatomic,strong) NSArray *datasource; -@property (nonatomic,strong) ChamberCoupleMatrix *chosenCoupleAbstract; -@property (nonatomic, strong) ChamberClassifyMatrix *chosenCategorizedAbstract; - -@end - -@implementation YUMIChamberCoupleStatementRegardGovernancer - -- (YUMIChamberCoupleExternalizer *)producePresimport { - return [[YUMIChamberCoupleExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - if (self.coupleGenre == ChamberInstanllingTagGenreTag) { - [self.presimport acquireChamberCoupleSttowardsement]; - } else { - [self.presimport acquireChamberCtowardsegorizeifySttowardsement]; - self.titleLabel.text = @"快给您的房间选个分类吧!"; - } - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.view.backgroundColor = [UIColor colorWithWhite:0 alpha:0.95]; - [self.view addSubview:self.acknowledgementBtuton]; - [self.view addSubview:self.concludeBtuton]; - [self.view addSubview:self.titleLabel]; - [self.view addSubview:self.collectionView]; -} - -- (void)initChildLyRestrictions { - [self.acknowledgementBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(44); - make.left.right.mas_equalTo(self.view).inset(90); - make.bottom.mas_equalTo(-100); - }]; - - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(32); - make.top.mas_equalTo(kStatusBarHeight + 6); - make.right.mas_equalTo(-23+5); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(135); - make.left.mas_equalTo(44); - make.height.mas_equalTo(24); - }]; - - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(30); - make.left.right.mas_equalTo(self.view).inset(44); - make.bottom.mas_equalTo(self.acknowledgementBtuton.mas_top).offset(-30); - }]; -} - -#pragma mark - FBCChamberTagCeremony -- (void)acquireChamberCoupleSttowardsementAccomplishment:(NSArray *)array { - self.datasource = array; - [self.collectionView reloadData]; -} - - -- (void)acquireChamberCtowardsegorizeifySttowardsementAccomplishment:(NSArray *)array { - self.datasource = array; - [self.collectionView reloadData]; -} - -#pragma mark - UICollectionViewDataSource -- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { - return 1; -} - -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMIChamberInstanllingCoupleElement *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIChamberInstanllingCoupleElement class]) forIndexPath:indexPath]; - if (self.coupleGenre == ChamberInstanllingTagGenreTag) { - ChamberCoupleMatrix *homeTag = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (self.chosenCoupleAbstract) { - if (homeTag.tid.intValue == self.chosenCoupleAbstract.tid.intValue) { - homeTag.isSelect = YES; - }else { - homeTag.isSelect = NO; - } - } else { - if (homeTag.tid.intValue == self.tagId.intValue) { - homeTag.isSelect = YES; - }else { - homeTag.isSelect = NO; - } - } - cell.roomTag = homeTag; - } else { - ChamberClassifyMatrix *homeTag = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (self.chosenCategorizedAbstract) { - if (homeTag.cid.intValue == self.chosenCategorizedAbstract.cid.intValue) { - homeTag.isSelect = YES; - }else { - homeTag.isSelect = NO; - } - } else { - if (homeTag.cid.intValue == self.tagId.intValue) { - homeTag.isSelect = YES; - }else { - homeTag.isSelect = NO; - } - } - cell.chamberCategorized = homeTag; - } - return cell; -} - -- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{ - return UIEdgeInsetsMake(10, 0, 10, 0);; -} - -- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { - if (self.coupleGenre == ChamberInstanllingTagGenreTag) { - ChamberCoupleMatrix *homeTag = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - CGFloat width = [homeTag.name boundingRectWithSize:CGSizeMake(200, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:12]} context:nil].size.width; - return CGSizeMake(width + 26, 26); - } else { - ChamberClassifyMatrix *homeTag = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - CGFloat width = [homeTag.sortName boundingRectWithSize:CGSizeMake(200, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:12]} context:nil].size.width; - return CGSizeMake(width + 26, 26); - } -} - -#pragma mark - UICollectionViewDelegate -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - [collectionView deselectItemAtIndexPath:indexPath animated:YES]; - if (self.coupleGenre == ChamberInstanllingTagGenreTag) { - ChamberCoupleMatrix * roomTag = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - self.chosenCoupleAbstract = roomTag; - } else { - ChamberClassifyMatrix *chamberCategorized = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - self.chosenCategorizedAbstract = chamberCategorized; - } - [collectionView reloadData]; -} - -#pragma mark - Event Response -- (void)acknowledgementBtutonPerformance:(UIButton *)sender { - [self dismissViewControllerAnimated:YES completion:nil]; - if (self.completion) { - if (self.coupleGenre == ChamberInstanllingTagGenreTag) { - self.completion(self.chosenCoupleAbstract.tid); - } else { - self.completion(self.chosenCategorizedAbstract.cid); - } - } -} - -- (void)concludeBtutonPerformance:(UIButton *)sender { - [self dismissViewControllerAnimated:YES completion:nil]; -} -#pragma mark - Getter & Setter -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textColor = UIColor.whiteColor; - _titleLabel.font = [UIFont systemFontOfSize:22]; - _titleLabel.text = @"快给您的房间选个标签吧!"; - } - return _titleLabel; -} - -- (UICollectionView *)collectionView { - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.minimumLineSpacing = 10; - layout.minimumInteritemSpacing = 10; - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.delegate = self; - _collectionView.dataSource = self; - _collectionView.backgroundColor = [UIColor clearColor]; - _collectionView.showsVerticalScrollIndicator = NO; - _collectionView.showsHorizontalScrollIndicator = NO; - [_collectionView registerClass:[YUMIChamberInstanllingCoupleElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIChamberInstanllingCoupleElement class])]; - } - return _collectionView; -} - -- (UIButton *)concludeBtuton { - if (_concludeBtuton == nil) { - _concludeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_scope_setting_labelclose"] forState:UIControlStateNormal]; - [_concludeBtuton addTarget:self action:@selector(concludeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _concludeBtuton; -} - -- (UIButton *)acknowledgementBtuton { - if (_acknowledgementBtuton == nil) { - _acknowledgementBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_acknowledgementBtuton setTitle:YMLocalizedString(@"YUMI_Room_Tag_List_View_Controller_2") forState:UIControlStateNormal]; - _acknowledgementBtuton.titleLabel.font = [UIFont systemFontOfSize:16]; - _acknowledgementBtuton.backgroundColor = [DJDKMIMOMColor mainEssayPrettify]; - [_acknowledgementBtuton addTarget:self action:@selector(acknowledgementBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - _acknowledgementBtuton.layer.masksToBounds = YES; - _acknowledgementBtuton.layer.cornerRadius = 22; - } - return _acknowledgementBtuton; -} -@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberInstanllingIntrojectionRegard.h b/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberInstanllingIntrojectionRegard.h deleted file mode 100644 index ee37ade6..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberInstanllingIntrojectionRegard.h +++ /dev/null @@ -1,37 +0,0 @@ -// -// YMRoomSettingInputView.h -// YUMI -// -// Created by YUMI on 2021/12/29. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSInteger, ChamberInstanllingIntrojectionGenre) { - - ChamberInstanllingIntrojectionGenre_Title = 1, - - ChamberInstanllingIntrojectionGenre_Pwd, - - ChamberInstanllingIntrojectionGenre_Input_Pwd, -}; - -@class YUMIChamberInstanllingIntrojectionRegard; -@protocol FBCChamberInstanllingIntrojectionRegardRepresendtation -@optional -- (void)yUMIChamberInstanllingIntrojectionRegard:(YUMIChamberInstanllingIntrojectionRegard *)view didClickConfirm:(NSString *)text type:(ChamberInstanllingIntrojectionGenre)type; -- (void)didTicktackRevoctowardsion:(ChamberInstanllingIntrojectionGenre)type; - -@end - -@interface YUMIChamberInstanllingIntrojectionRegard : UIView -@property (nonatomic,weak) id delegate; -@property (nonatomic, assign) NSUInteger maxCount; -@property (nonatomic,assign) ChamberInstanllingIntrojectionGenre type; -@property (nonatomic,copy) NSString *deparatmentMaintainrietary; -@property (nonatomic,assign) BOOL isPwordError; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberInstanllingIntrojectionRegard.m b/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberInstanllingIntrojectionRegard.m deleted file mode 100644 index 9b4886f0..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberInstanllingIntrojectionRegard.m +++ /dev/null @@ -1,289 +0,0 @@ -// -// YMRoomSettingInputView.m -// YUMI -// -// Created by YUMI on 2021/12/29. -// - -#import "YUMIChamberInstanllingIntrojectionRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "UIImage+Utils.h" -#import "MKJPopup.h" - -@interface YUMIChamberInstanllingIntrojectionRegard () -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic, strong) UIButton *revocationBtuton; -@property (nonatomic, strong) UIButton *acknowledgementBtuton; -@property (nonatomic, strong) UILabel *computationSequencignation; -@property (nonatomic, strong) UITextField *satisfperformanceEssayUniverse; -@property (nonatomic,strong) UILabel *failSequencignation; -@end - -@implementation YUMIChamberInstanllingIntrojectionRegard - -- (void)dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Getters And Setters -- (void)accelertowardseCircular { - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; -} - -- (void)initSubViews { - self.backgroundColor = [UIColor whiteColor]; - self.layer.masksToBounds= YES; - self.layer.cornerRadius = 15; - [self addSubview:self.titleLabel]; - [self addSubview:self.satisfperformanceEssayUniverse]; - [self addSubview:self.computationSequencignation]; - [self addSubview:self.failSequencignation]; - [self addSubview:self.stackView]; - [self.stackView addArrangedSubview:self.revocationBtuton]; - [self.stackView addArrangedSubview:self.acknowledgementBtuton]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(KScreenWidth - 45 *2, 200)); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(20); - }]; - - [self.satisfperformanceEssayUniverse mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(15); - make.left.right.mas_equalTo(self).inset(15); - make.height.mas_equalTo(40); - }]; - - [self.failSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.satisfperformanceEssayUniverse); - make.top.mas_equalTo(self.satisfperformanceEssayUniverse.mas_bottom).offset(10); - }]; - - [self.computationSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.satisfperformanceEssayUniverse.mas_bottom).offset(4); - make.right.mas_equalTo(self.satisfperformanceEssayUniverse).offset(-10); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self).inset(20); - make.height.mas_equalTo(43); - make.bottom.mas_equalTo(self.mas_bottom).offset(-20); - }]; - -} - -#pragma mark - Event Response -- (void)revoctowardsionBtutonPerformance:(UIButton *)sender { - [MKJPopup dismiss]; - if (self.delegate && [self.delegate respondsToSelector:@selector(didTicktackRevoctowardsion:)]) { - [self.delegate didTicktackRevoctowardsion:self.type]; - } -} - -- (void)acknowledgementBtutonPerformance:(UIButton *)sender { - if (self.type != ChamberInstanllingIntrojectionGenre_Input_Pwd) { - [MKJPopup dismiss]; - } - if (self.satisfperformanceEssayUniverse.text.length > 0 && self.delegate && [self.delegate respondsToSelector:@selector(yUMIChamberInstanllingIntrojectionRegard:didClickConfirm:type:)]) { - [self.delegate yUMIChamberInstanllingIntrojectionRegard:self didClickConfirm:self.satisfperformanceEssayUniverse.text type:self.type]; - } -} - - -- (void)keyboardWillShow:(NSNotification*)notification { - CGRect keyboardRect = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; - CGRect rect = [self.superview convertRect:self.frame toView:[UIApplication sharedApplication].keyWindow]; - CGFloat top = KScreenHeight / 2 + rect.size.height / 2; - CGFloat height = CGRectGetMinY(keyboardRect) - top; - if (height < 0) { - [UIView animateWithDuration:0.25 animations:^{ - self.superview.frame = CGRectMake(rect.origin.x, KScreenHeight / 2 - rect.size.height / 2 + (height - 10), rect.size.width, rect.size.height); - } completion:^(BOOL finished) { - - }]; - } -} - -- (void)keyboardWillHide:(NSNotification*)notification { - CGRect rect = [self.superview convertRect:self.frame toView:[UIApplication sharedApplication].keyWindow]; - [UIView animateWithDuration:0.25 animations:^{ - self.superview.frame = CGRectMake(rect.origin.x, KScreenHeight / 2 - rect.size.height / 2, rect.size.width, rect.size.height); - }]; -} -#pragma mark - mark -- (BOOL)essayUniverse:(UITextField *)essayUniverse shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { - self.failSequencignation.hidden = YES; - - if (string.length == 0) { - [self refurbishComputtowardsion:range.location]; - return YES; - } - - - if (self.maxCount == 0) { - return YES; - } - - NSMutableString *mText = [NSMutableString stringWithString:essayUniverse.text]; - [mText insertString:string atIndex:range.location]; - - - if (mText.length > self.maxCount) { - - essayUniverse.text = [mText substringToIndex:self.maxCount]; - [self refurbishComputtowardsion:essayUniverse.text.length]; - return NO; - } - - [self refurbishComputtowardsion:mText.length]; - - return YES; -} - -- (void)refurbishComputtowardsion:(unsigned long)count { - self.computationSequencignation.text = [NSString stringWithFormat:@"%lu/%lu", count, (unsigned long)self.maxCount]; -} - -#pragma mark - Getters And Setters -- (void)setType:(ChamberInstanllingIntrojectionGenre)type { - _type = type; - if (_type == ChamberInstanllingIntrojectionGenre_Pwd) { - self.satisfperformanceEssayUniverse.keyboardType = UIKeyboardTypeNumberPad; - self.titleLabel.text = YMLocalizedString(@"YUMI_Room_Setting_Input_View_0"); - self.computationSequencignation.hidden = NO; - self.satisfperformanceEssayUniverse.keyboardType = UIKeyboardTypeNumberPad; - } else if(_type == ChamberInstanllingIntrojectionGenre_Title) { - self.titleLabel.text = YMLocalizedString(@"YUMI_Room_Setting_Input_View_1"); - self.computationSequencignation.hidden = NO; - } else if(_type == ChamberInstanllingIntrojectionGenre_Input_Pwd) { - self.titleLabel.text = YMLocalizedString(@"YUMI_Room_Setting_Input_View_2"); - self.computationSequencignation.hidden = YES; - self.satisfperformanceEssayUniverse.keyboardType = UIKeyboardTypeNumberPad; - } -} - -- (void)setDeparatmentMaintainrietary:(NSString *)deparatmentMaintainrietary { - _deparatmentMaintainrietary = deparatmentMaintainrietary; - if (_deparatmentMaintainrietary.length > 0) { - NSAttributedString * attribute = [[NSAttributedString alloc] initWithString:_deparatmentMaintainrietary attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:17],NSForegroundColorAttributeName: [DJDKMIMOMColor instantEssayPrettify]}]; - self.satisfperformanceEssayUniverse.attributedText = attribute; - } -} - -- (void)setIsPwordError:(BOOL)isPwordError { - _isPwordError = isPwordError; - if (_isPwordError) { - self.failSequencignation.hidden = NO; - } else { - self.failSequencignation.hidden = YES; - } -} - -- (UILabel *)titleLabel { - if (_titleLabel == nil) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textColor = [DJDKMIMOMColor precautiousChampionPrettify]; - _titleLabel.font = [UIFont systemFontOfSize:15]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} - -- (UILabel *)computationSequencignation { - if (_computationSequencignation == nil) { - _computationSequencignation = [[UILabel alloc] init]; - _computationSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - _computationSequencignation.font = [UIFont systemFontOfSize:10]; - _computationSequencignation.textAlignment = NSTextAlignmentRight; - } - return _computationSequencignation; -} - -- (UITextField *)satisfperformanceEssayUniverse { - if (_satisfperformanceEssayUniverse == nil) { - _satisfperformanceEssayUniverse = [[UITextField alloc] init]; - _satisfperformanceEssayUniverse.delegate = self; - _satisfperformanceEssayUniverse.layer.cornerRadius = 20; - _satisfperformanceEssayUniverse.layer.masksToBounds = YES; - _satisfperformanceEssayUniverse.backgroundColor = UIColorFromRGB(0xF0F0F0); - _satisfperformanceEssayUniverse.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _satisfperformanceEssayUniverse.placeholder = YMLocalizedString(@"YUMI_Room_Setting_Input_View_3"); - _satisfperformanceEssayUniverse.font = [UIFont systemFontOfSize:17]; - _satisfperformanceEssayUniverse.leftView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 15, 10)]; - _satisfperformanceEssayUniverse.leftViewMode = UITextFieldViewModeAlways; - _satisfperformanceEssayUniverse.rightView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 15, 10)]; - _satisfperformanceEssayUniverse.rightViewMode = UITextFieldViewModeAlways; - } - return _satisfperformanceEssayUniverse; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFillEqually; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 16; - } - return _stackView; -} - -- (UIButton *)revocationBtuton { - if (!_revocationBtuton) { - _revocationBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_revocationBtuton setTitle:YMLocalizedString(@"YUMI_Room_Setting_Input_View_4") forState:UIControlStateNormal]; - [_revocationBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _revocationBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_revocationBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor revoctowardsionBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor revoctowardsionBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _revocationBtuton.layer.masksToBounds = YES; - _revocationBtuton.layer.cornerRadius = 10; - [_revocationBtuton addTarget:self action:@selector(revoctowardsionBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _revocationBtuton; -} - -- (UIButton *)acknowledgementBtuton { - if (!_acknowledgementBtuton) { - _acknowledgementBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_acknowledgementBtuton setTitle:YMLocalizedString(@"YUMI_Room_Setting_Input_View_5") forState:UIControlStateNormal]; - [_acknowledgementBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _acknowledgementBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_acknowledgementBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _acknowledgementBtuton.layer.masksToBounds = YES; - _acknowledgementBtuton.layer.cornerRadius = 10; - [_acknowledgementBtuton addTarget:self action:@selector(acknowledgementBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _acknowledgementBtuton; -} - -- (UILabel *)failSequencignation { - if (!_failSequencignation) { - _failSequencignation = [[UILabel alloc] init]; - _failSequencignation.text = YMLocalizedString(@"YUMI_Room_Setting_Input_View_6"); - _failSequencignation.font = [UIFont systemFontOfSize:15]; - _failSequencignation.textAlignment = NSTextAlignmentCenter; - _failSequencignation.textColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - _failSequencignation.hidden = YES; - } - return _failSequencignation; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberInstanllingRegardGovernancer.h b/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberInstanllingRegardGovernancer.h deleted file mode 100644 index eec3143f..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberInstanllingRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomSettingViewController.h -// YUMI -// -// Created by YUMI on 2021/12/27. -// - -#import "MvpRegardGovernancer.h" -#import "ChamberHostRepresendtation.h" -NS_ASSUME_NONNULL_BEGIN -@class ChamberAbstractMatrix; -@interface YUMIChamberInstanllingRegardGovernancer : MvpRegardGovernancer -- (instancetype)initWithDelegate:(id)delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberInstanllingRegardGovernancer.m b/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberInstanllingRegardGovernancer.m deleted file mode 100644 index e1399e06..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberInstanllingRegardGovernancer.m +++ /dev/null @@ -1,476 +0,0 @@ -// -// YMRoomSettingViewController.m -// YUMI -// -// Created by YUMI on 2021/12/27. -// - -#import "YUMIChamberInstanllingRegardGovernancer.h" -#import -#import "ThemeColor+Room.h" -#import "YUMIMacroUitls.h" -#import "MKJPopup.h" -#import "DESEncrypt.h" -#import "YUMIConstant.h" -#import "AccountAbstractStorage.h" -#import "NSArray+Safe.h" -#import "ChamberAbstractMatrix.h" -#import "YUMIChamberInstanllingProvisionMatrix.h" -#import "AttachmentMatrix.h" -#import "MiecreoscoopeMHTueueMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "XCombatickConsumerMatrix.h" -#import "UnionSensationalManagementAbstractMatrix.h" -#import "YUMIChamberInstanllingTabulationRegardElement.h" -#import "YUMIChamberInstanllingIntrojectionRegard.h" -#import "YUMIChamberCoupleStatementRegard.h" -#import "YUMIChamberInstanllingExternalizer.h" -#import "FBCChamberInstanllingCeremony.h" -#import "YUMIChamberCoupleStatementRegardGovernancer.h" -#import "YUMIChamberRoleRegardGovernancer.h" - -@interface YUMIChamberInstanllingRegardGovernancer () -@property (nonatomic,strong) ChamberAbstractMatrix *roomInfo; -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSArray *datasource; -@property (nonatomic,weak) id hostRepresedtation; -@property (nonatomic,assign) BOOL meIsSensationalManagement; -@end - -@implementation YUMIChamberInstanllingRegardGovernancer - -- (instancetype)initWithDelegate:(id)delegate { - if (self = [super init]) { - self.hostRepresedtation = delegate; - self.roomInfo = self.hostRepresedtation.acquireChamberAbstract; - } - return self; -} - -- (YUMIChamberInstanllingExternalizer *)producePresimport { - return [[YUMIChamberInstanllingExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; - [self.presimport acquireChamberAbstract:roomUid]; - - BOOL meIsSensationalManagement = NO; - for (UnionSensationalManagementAbstractMatrix *executiveAbstract in self.hostRepresedtation.acquireChamberSenstowardsionalManagementSttowardsement) { - if ([executiveAbstract.uid isEqualToString:[AccountAbstractStorage instance].acquireCid]) { - meIsSensationalManagement = YES; - break; - } - } - self.meIsSensationalManagement = meIsSensationalManagement; - [self.presimport acquireChamberInstanllingSttowardsement:self.roomInfo isSuperAdmin:meIsSensationalManagement]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Room_Setting_View_Controller_0"); - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -- (void)shankChamberDepartureManner { - [self EvidenceChambering]; - NSString * ownerUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; - NSArray *chatRoomMicSequences = [self.hostRepresedtation.acquireMiecreoscoopeInthecaseofmtowardsion allValues]; - - BOOL ownerIsOnMic = NO; - NSString * ownerPosition; - if (chatRoomMicSequences != nil && chatRoomMicSequences.count > 0) { - for (int i = 0; i < chatRoomMicSequences.count; i ++) { - MiecreoscoopeMHTueueMatrix *micqueueModel = chatRoomMicSequences[i]; - if (micqueueModel.userInfo && micqueueModel.userInfo.uid > 0) { - if (micqueueModel.userInfo.uid == ownerUid.integerValue) { - ownerIsOnMic = YES; - ownerPosition = [NSString stringWithFormat:@"%d", micqueueModel.microState.position]; - break; - } - } - } - } - NSString * roomId = [NSString stringWithFormat:@"%ld", self.roomInfo.roomId]; - - if (ownerIsOnMic) { - NIMChatroomQueueRemoveRequest *request = [[NIMChatroomQueueRemoveRequest alloc]init]; - request.key = ownerPosition; - request.roomId = roomId; - [[NIMSDK sharedSDK].chatroomManager removeChatroomQueueObject:request completion:^(NSError * _Nullable error, NSDictionary * _Nullable element) { - - }]; - } - - NSString *position = @"-1"; - ConsumerAbstractMatrix *onMicInfo = [self.hostRepresedtation.acquireMiecreoscoopeInthecaseofmtowardsion objectForKey:position].userInfo; - if (onMicInfo) { - NIMChatroomQueueRemoveRequest *request = [[NIMChatroomQueueRemoveRequest alloc]init]; - request.key = @"-1"; - request.roomId =roomId; - [[NIMSDK sharedSDK].chatroomManager removeChatroomQueueObject:request completion:^(NSError * _Nullable error, NSDictionary * _Nullable element) { - if (error == nil) { - XCombatickConsumerMatrix *notifyModel = [[XCombatickConsumerMatrix alloc] init]; - notifyModel.handleNick = onMicInfo.nick; - notifyModel.handleUid = [AccountAbstractStorage instance].acquireCid.integerValue; - notifyModel.targetUid = onMicInfo.uid; - notifyModel.targetNick = onMicInfo.nick; - notifyModel.uid = onMicInfo.uid; - AttachmentMatrix *attachment = [[AttachmentMatrix alloc] init]; - attachment.first = IndividualityCommunicationGenre_Queue; - attachment.second = Custom_Message_Sub_Queue_Kick; - attachment.data = [notifyModel mtowardsrix2dictionary]; - - NSString * sessionId = [NSString stringWithFormat:@"%ld", self.roomInfo.roomId]; - NIMMessage *message = [[NIMMessage alloc]init]; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachment; - message.messageObject = object; - - NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; - } - }]; - } - - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.6 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; - [self brakeHUD]; - [self.presimport unfoildChamberDepartureManner:roomUid]; - }); - -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return self.datasource.count; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource[section].count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - YUMIChamberInstanllingTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIChamberInstanllingTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIChamberInstanllingTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIChamberInstanllingTabulationRegardElement class])]; - } - cell.delegate = self; - cell.itemMatrix = [[self.datasource secureGroalTowardsIndictowardsrix1:indexPath.section] secureGroalTowardsIndictowardsrix1:indexPath.row]; - return cell; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { -YUMIChamberInstanllingProvisionMatrix * itemMatrix = [[self.datasource secureGroalTowardsIndictowardsrix1:indexPath.section] secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (itemMatrix.type == ChamberInstanllingProvisionGenre_Leave_Model && itemMatrix.switchState) { - return 60; - } - return 50; -} - --(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { - UIView * view = [[UIView alloc] init]; - view.frame = CGRectMake(0, 0, KScreenWidth, 10); - view.backgroundColor = [UIColor clearColor]; - return view; -} -- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { - return 10; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - YUMIChamberInstanllingProvisionMatrix * itemMatrix = [[self.datasource secureGroalTowardsIndictowardsrix1:indexPath.section] secureGroalTowardsIndictowardsrix1:indexPath.row]; - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; - NSString * roomId = [NSString stringWithFormat:@"%ld", self.roomInfo.roomId]; - NSString * roomTag = [NSString stringWithFormat:@"%ld", self.roomInfo.tagId]; - NSString *roomClassifyId = self.roomInfo.singleRoomSortId; - switch (itemMatrix.type) { - case ChamberInstanllingProvisionGenre_Class: - { - YUMIChamberCoupleStatementRegard *view = [[YUMIChamberCoupleStatementRegard alloc] init]; - view.coupleGenre = ChamberInstanllingSelectTagGenreClassify; - view.tagId = self.roomInfo.singleRoomSortId; - view.completion = ^(NSString * _Nonnull tag) { - NSString * mgId = [NSString stringWithFormat:@"%lld", self.roomInfo.mgId]; - [self.presimport refurbishChamberAbstract:self.roomInfo.title roomPwd:self.roomInfo.roomPwd tagId:roomTag classifyId:tag hasAnimationEffect:self.roomInfo.hasAnimationEffect roomUid:roomUid roomId:roomId type:self.roomInfo.type itemType:itemMatrix.type mgId:mgId]; - }; - [MKJPopup popupRegard:view style:MKJPopupStyleAlert]; - } - break; - case ChamberInstanllingProvisionGenre_Tag: - { - YUMIChamberCoupleStatementRegard *view = [[YUMIChamberCoupleStatementRegard alloc] init]; - view.coupleGenre = ChamberInstanllingSelectTagGenreTag; - view.tagId = [NSString stringWithFormat:@"%ld", self.roomInfo.tagId]; - view.completion = ^(NSString * _Nonnull tag) { - NSString * mgId = [NSString stringWithFormat:@"%lld", self.roomInfo.mgId]; - [self.presimport refurbishChamberAbstract:self.roomInfo.title roomPwd:self.roomInfo.roomPwd tagId:tag classifyId:roomClassifyId hasAnimationEffect:self.roomInfo.hasAnimationEffect roomUid:roomUid roomId:roomId type:self.roomInfo.type itemType:itemMatrix.type mgId:mgId]; - }; - [MKJPopup popupRegard:view style:MKJPopupStyleAlert]; - } - break; - case ChamberInstanllingProvisionGenre_Title: - { - YUMIChamberInstanllingIntrojectionRegard * titleView = [[YUMIChamberInstanllingIntrojectionRegard alloc] init]; - titleView.maxCount = 15; - titleView.delegate = self; - titleView.type = ChamberInstanllingIntrojectionGenre_Title; - titleView.deparatmentMaintainrietary = self.roomInfo.title; - [MKJPopup popupRegard:titleView style:MKJPopupStyleAlert]; - } - break; - - case ChamberInstanllingProvisionGenre_Pwd: - { - YUMIChamberInstanllingIntrojectionRegard * titleView = [[YUMIChamberInstanllingIntrojectionRegard alloc] init]; - titleView.maxCount = 8; - titleView.delegate = self; - titleView.type = ChamberInstanllingIntrojectionGenre_Pwd; - NSString * roomPwd = [DESEncrypt decryptUseDES:self.roomInfo.roomPwd key:KeyWithType(KeyGenre_PasswordEncode)]; - titleView.deparatmentMaintainrietary = roomPwd; - [MKJPopup popupRegard:titleView style:MKJPopupStyleAlert]; - } - break; - case ChamberInstanllingProvisionGenre_Manager_List: - { - YUMIChamberRoleRegardGovernancer * managerVC = [[YUMIChamberRoleRegardGovernancer alloc] init]; - managerVC.sensationalAdmminStatement = self.hostRepresedtation.acquireChamberSenstowardsionalManagementSttowardsement; - managerVC.roomId = roomId; - managerVC.type = ChamberRoleStatementGenre_Manager; - [self.navigationController pushViewController:managerVC animated:YES]; - } - break; - case ChamberInstanllingProvisionGenre_Black_List: - { - YUMIChamberRoleRegardGovernancer * managerVC = [[YUMIChamberRoleRegardGovernancer alloc] init]; - managerVC.roomId = roomId; - managerVC.type = ChamberRoleStatementGenre_Black; - [self.navigationController pushViewController:managerVC animated:YES]; - } - break; - default: - break; - } -} - -#pragma mark - FBCChamberInstanllingIntrojectionRegardRepresendtation -- (void)yUMIChamberInstanllingIntrojectionRegard:(YUMIChamberInstanllingIntrojectionRegard *)view didClickConfirm:(NSString *)text type:(ChamberInstanllingIntrojectionGenre)type { - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; - NSString * roomId = [NSString stringWithFormat:@"%ld", self.roomInfo.roomId]; - NSString * roomTag = [NSString stringWithFormat:@"%ld", self.roomInfo.tagId]; - NSString * mgId = [NSString stringWithFormat:@"%lld", self.roomInfo.mgId]; - NSString * roomClassifyId = self.roomInfo.singleRoomSortId; - if (type == ChamberInstanllingIntrojectionGenre_Pwd) { - NSString *pwdDes = [DESEncrypt encryptUseDES:text key:KeyWithType(KeyGenre_PasswordEncode)]; - [self.presimport refurbishChamberAbstract:self.roomInfo.title roomPwd:pwdDes tagId:roomTag classifyId:roomClassifyId hasAnimationEffect:self.roomInfo.hasAnimationEffect roomUid:roomUid roomId:roomId type:self.roomInfo.type itemType:ChamberInstanllingProvisionGenre_Pwd mgId:mgId]; - } else if(type == ChamberInstanllingIntrojectionGenre_Title) { - [self.presimport refurbishChamberAbstract:text roomPwd:self.roomInfo.roomPwd tagId:roomTag classifyId:roomClassifyId hasAnimationEffect:self.roomInfo.hasAnimationEffect roomUid:roomUid roomId:roomId type:self.roomInfo.type itemType:ChamberInstanllingProvisionGenre_Title mgId:mgId]; - } -} - -#pragma mark - FBCChamberInstanllingTabulationViweElementRepresendtation -- (void)didDiversifictowardsionSwop:(UISwitch *)switchView itemMatrix:(YUMIChamberInstanllingProvisionMatrix *)itemMatrix { - BOOL isOn = switchView.on; - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; - NSString * roomId = [NSString stringWithFormat:@"%ld", self.roomInfo.roomId]; - NSString * roomTag = [NSString stringWithFormat:@"%ld", self.roomInfo.tagId]; - NSString * roomClassifyId = self.roomInfo.singleRoomSortId; - switch (itemMatrix.type) { - case ChamberInstanllingProvisionGenre_Arrange_Mic: - { - if (self.roomInfo.roomModeType == ChamberModeGenre_Open_Blind) return; - NSString *msg; - if (isOn) { - msg = @"开启排麦模式要排队才能上麦,确定开启吗?"; - } else { - msg = @"关闭排麦模式后会清空排麦列表哦,确定关闭吗?"; - } - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.title = YMLocalizedString(@"YUMI_Room_Setting_View_Controller_3"); - config.message = msg; - config.shouldDismissOnBackgroundTouch = NO; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - if (isOn) { - [self.presimport unfoildChamberScheduleLoudspeaker:roomUid]; - }else { - [self.presimport concludeChamberScheduleLoudspeaker:roomUid]; - } - } cancelHandler:^{ - }]; - - } - break; - case ChamberInstanllingProvisionGenre_Leave_Model: - { - if (!isOn) { - [self.presimport concludeChamberDepartureManner:roomUid]; - return; - } - - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.message = @"开启离开模式后,房主会固定显示在房主位,确认开启吗?"; - config.shouldDismissOnBackgroundTouch = NO; - - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [self shankChamberDepartureManner]; - } cancelHandler:^{ - }]; - } - break; - case ChamberInstanllingProvisionGenre_Lock: - { - if (isOn) { - YUMIChamberInstanllingIntrojectionRegard * titleView = [[YUMIChamberInstanllingIntrojectionRegard alloc] init]; - titleView.maxCount = 8; - titleView.delegate = self; - titleView.type = ChamberInstanllingIntrojectionGenre_Pwd; - [MKJPopup popupRegard:titleView style:MKJPopupStyleAlert]; - } else { - NSString * mgId = [NSString stringWithFormat:@"%lld", self.roomInfo.mgId]; - [self.presimport refurbishChamberAbstract:self.roomInfo.title roomPwd:@"" tagId:roomTag classifyId:roomClassifyId hasAnimationEffect:self.roomInfo.hasAnimationEffect roomUid:roomUid roomId:roomId type:self.roomInfo.type itemType:itemMatrix.type mgId:mgId]; - } - } - break; - case ChamberInstanllingProvisionGenre_Gift_Effect: - { - if (isOn) { - NSString * mgId = [NSString stringWithFormat:@"%lld", self.roomInfo.mgId]; - [self.presimport refurbishChamberAbstract:self.roomInfo.title roomPwd:self.roomInfo.roomPwd tagId:roomTag classifyId:roomClassifyId hasAnimationEffect:YES roomUid:roomUid roomId:roomId type:self.roomInfo.type itemType:itemMatrix.type mgId:mgId]; - return; - } - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.title = YMLocalizedString(@"YUMI_Room_Setting_View_Controller_5"); - config.message = @"关闭后将看不到礼物特效,运作更加流畅。是否确认关闭礼物特效?"; - config.shouldDismissOnBackgroundTouch = NO; - - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - NSString * mgId = [NSString stringWithFormat:@"%lld", self.roomInfo.mgId]; - [self.presimport refurbishChamberAbstract:self.roomInfo.title roomPwd:self.roomInfo.roomPwd tagId:roomTag classifyId:roomClassifyId hasAnimationEffect:NO roomUid:roomUid roomId:roomId type:self.roomInfo.type itemType:itemMatrix.type mgId:mgId]; - } cancelHandler:^{ - - }]; - } - break; - case ChamberInstanllingProvisionGenre_Message_Screen: - { - if (isOn) { - [self.presimport refurbishChamberCommunictowardsioncreenDeclare:NO roomId:roomId]; - return; - } - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.title = YMLocalizedString(@"YUMI_Room_Setting_View_Controller_7"); - config.message = @"关闭后将看不到聊天信息,运作更加流畅。是否确认关闭公屏?"; - config.shouldDismissOnBackgroundTouch = NO; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [self.presimport refurbishChamberCommunictowardsioncreenDeclare:YES roomId:roomId]; - } cancelHandler:^{ - - }]; - } - break; - default: - break; - } -} - -#pragma mark - FBCChamberInstanllingCeremony -- (void)acquireChamberInstanllingSttowardsementAccomplishment:(NSArray *)list { - self.datasource = list; - [self.tableView reloadData]; -} - -- (void)acquireChamberAbstractAccomplishment:(ChamberAbstractMatrix *)roomInfo { - self.roomInfo = roomInfo; - [self.presimport acquireChamberInstanllingSttowardsement:roomInfo isSuperAdmin:self.meIsSensationalManagement]; -} - -- (void)unfoildChamberScheduleLoudspeakerAccomplishment { - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; - [self.presimport acquireChamberAbstract:roomUid]; -} - -- (void)concludeChamberScheduleLoudspeakerAccomplishment { - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; - [self.presimport acquireChamberAbstract:roomUid]; -} - -- (void)refurbishChamberCommunictowardsioncreenDeclareAccomplishment:(ChamberAbstractMatrix *)roomInfo { - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; - [self.presimport acquireChamberAbstract:roomUid]; - - NSString *sessionID = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - AttachmentMatrix *attachement = [[AttachmentMatrix alloc]init]; - attachement.first = IndividualityCommunicationGenre_Update_RoomInfo; - attachement.second = Custom_Message_Sub_Update_RoomInfo_MessageState; - attachement.data = [roomInfo mtowardsrix2dictionary]; - NIMMessage *message = [[NIMMessage alloc]init]; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachement; - message.messageObject = object; - - NIMSession *session = [NIMSession session:sessionID type:NIMSessionTypeChatroom]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; -} - -- (void)refurbishChamberAbstractAccomplishment:(ChamberAbstractMatrix *)roomInfo itemType:(ChamberInstanllingProvisionGenre)itemType { - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; - [self.presimport acquireChamberAbstract:roomUid]; - if (itemType == ChamberInstanllingProvisionGenre_Gift_Effect) { - NSString *sessionID = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - AttachmentMatrix *attachement = [[AttachmentMatrix alloc]init]; - attachement.first = IndividualityCommunicationGenre_Update_RoomInfo; - attachement.second = Custom_Message_Sub_Update_RoomInfo_AnimateEffect; - attachement.data = [roomInfo mtowardsrix2dictionary]; - NIMMessage *message = [[NIMMessage alloc]init]; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachement; - message.messageObject = object; - - NIMSession *session = [NIMSession session:sessionID type:NIMSessionTypeChatroom]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; - } -} - -- (void)refurbishChamberAbstractFlunk:(NSString *)message { - [self EvidenceMistakeToast:message]; -} - -- (void)unfoildChamberDepartureMannerAccomplishment { - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; - [self.presimport acquireChamberAbstract:roomUid]; -} - -- (void)concludeChamberDepartureMannerAccomplishment { - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; - [self.presimport acquireChamberAbstract:roomUid]; -} - -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIChamberInstanllingTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIChamberInstanllingTabulationRegardElement class])]; - } - return _tableView; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberMotifPrecautiousRegard.h b/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberMotifPrecautiousRegard.h deleted file mode 100644 index 2c024057..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberMotifPrecautiousRegard.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMRoomTopicAlertView.h -// YUMI -// -// Created by YUMI on 2022/3/15. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberMotifPrecautiousRegard : UIView -@property (nonatomic,copy) NSString *title; -@property (nonatomic,copy) NSString *message; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberMotifPrecautiousRegard.m b/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberMotifPrecautiousRegard.m deleted file mode 100644 index eb8aa237..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberMotifPrecautiousRegard.m +++ /dev/null @@ -1,119 +0,0 @@ -// -// YMRoomTopicAlertView.m -// YUMI -// -// Created by YUMI on 2022/3/15. -// - -#import "YUMIChamberMotifPrecautiousRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "MKJPopup.h" -#import "YUMIMacroUitls.h" - -@interface YUMIChamberMotifPrecautiousRegard () - -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UITextView *textView; -@property (nonatomic,strong) UIButton *concludeBtuton; - -@end - -@implementation YUMIChamberMotifPrecautiousRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.layer.masksToBounds = YES; - self.layer.cornerRadius = 15; - self.backgroundColor = [UIColor whiteColor]; - [self addSubview:self.titleLabel]; - [self addSubview:self.textView]; - [self addSubview:self.concludeBtuton]; -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth - 40 * 2); - make.bottom.mas_equalTo(self.concludeBtuton.mas_bottom).offset(20); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self).inset(20); - }]; - - [self.textView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self).inset(20); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(15); - make.height.mas_equalTo(200); - }]; - - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(124, 44)); - make.top.mas_equalTo(self.textView.mas_bottom).offset(20); - make.centerX.mas_equalTo(self); - }]; -} - -#pragma mark - Event Response -- (void)concludeBtutonPerformance:(UIButton *)sender { - [MKJPopup dismiss]; -} - -#pragma mark - Getters And Setters -- (void)setTitle:(NSString *)title { - _title = title; - self.titleLabel.text = _title.length > 0 ? _title : YMLocalizedString(@"YUMI_Room_Topic_Alert_View_0"); -} - -- (void)setMessage:(NSString *)message { - _message = message; - self.textView.text = _message.length > 0 ? _message : YMLocalizedString(@"YUMI_Room_Topic_Alert_View_1"); -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.font = [UIFont fontWithName:@"PingFangSC-Medium" size:16]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - -- (UITextView *)textView { - if (!_textView) { - _textView = [[UITextView alloc] init]; - _textView.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _textView.backgroundColor = [UIColor clearColor]; - _textView.font = [UIFont systemFontOfSize:15]; - _textView.editable = NO; - } - return _textView; -} - -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_concludeBtuton setTitle:YMLocalizedString(@"YUMI_Room_Topic_Alert_View_2") forState:UIControlStateNormal]; - [_concludeBtuton setTitleColor:[DJDKMIMOMColor revoctowardsionBtutonEssayPrettify] forState:UIControlStateNormal]; - _concludeBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_concludeBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor revoctowardsionBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor revoctowardsionBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _concludeBtuton.layer.masksToBounds = YES; - _concludeBtuton.layer.cornerRadius = 22; - [_concludeBtuton addTarget:self action:@selector(concludeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _concludeBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberMotifRegardGovernancer.h b/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberMotifRegardGovernancer.h deleted file mode 100644 index 5cdbdd02..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberMotifRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMRoomTopicViewController.h -// YUMI -// -// Created by YUMI on 2022/3/14. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN -@class ChamberAbstractMatrix; -@interface YUMIChamberMotifRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,strong) ChamberAbstractMatrix *roomInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberMotifRegardGovernancer.m b/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberMotifRegardGovernancer.m deleted file mode 100644 index 4442add4..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberMotifRegardGovernancer.m +++ /dev/null @@ -1,234 +0,0 @@ -// -// YMRoomTopicViewController.m -// YUMI -// -// Created by YUMI on 2022/3/14. -// - -#import "YUMIChamberMotifRegardGovernancer.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "YUMIMacroUitls.h" -#import "ChamberAbstractMatrix.h" -#import "YUMIChamberMotifExternalizer.h" -#import "FBCChamberMotifCeremony.h" - -@interface YUMIChamberMotifRegardGovernancer () -@property (nonatomic,strong) UITextField *essayUniverse; -@property (nonatomic,strong) UILabel *championDigitalSequencignation; -@property (nonatomic,strong) UITextView *satisfperformanceEssayRegard; -@property (nonatomic,strong) UILabel *satisfperformanceSequencignation; -@property (nonatomic,strong) UIButton *acknowledgementBtuton; -@property (nonatomic,strong) UIView * contentView; -@property (nonatomic,strong) UILabel *deparatmentSequencignation; -@end - -@implementation YUMIChamberMotifRegardGovernancer - -- (YUMIChamberMotifExternalizer *)producePresimport { - return [[YUMIChamberMotifExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { - [self.view endEditing:YES]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Room_Topic_View_Controller_0"); - [self.view addSubview:self.essayUniverse]; - [self.view addSubview:self.championDigitalSequencignation]; - [self.view addSubview:self.contentView]; - [self.view addSubview:self.satisfperformanceSequencignation]; - [self.view addSubview:self.acknowledgementBtuton]; - - [self.contentView addSubview:self.satisfperformanceEssayRegard]; - [self.contentView addSubview:self.deparatmentSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.essayUniverse mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view).inset(15); - make.height.mas_equalTo(44); - make.top.mas_equalTo(self.view).offset(15); - }]; - - [self.championDigitalSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.view).offset(-15); - make.top.mas_equalTo(self.essayUniverse.mas_bottom).offset(5); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view).inset(15); - make.top.mas_equalTo(self.championDigitalSequencignation.mas_bottom).offset(15); - make.height.mas_equalTo(210); - }]; - - [self.satisfperformanceEssayRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.contentView).inset(5); - }]; - - [self.deparatmentSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.top.mas_equalTo(self.satisfperformanceEssayRegard); - }]; - - [self.satisfperformanceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.contentView);; - make.top.mas_equalTo(self.contentView.mas_bottom).offset(15); - }]; - - [self.acknowledgementBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view).inset(47); - make.height.mas_equalTo(44); - make.bottom.mas_equalTo(self.view).offset(-kSafeAreaBottomHeight - 20); - }]; -} - -#pragma mark - UITextViewDelegate -- (void)textViewDidChange:(UITextView *)textView { - if (textView.text.length > 0) { - self.deparatmentSequencignation.hidden = YES; - } else { - self.deparatmentSequencignation.hidden = NO; - } - if (textView.text.length > 300) { - textView.text = [textView.text substringToIndex:300]; - } - self.satisfperformanceSequencignation.text = [NSString stringWithFormat:@"%ld/300", textView.text.length]; -} - -- (void)textViewDidBeginEditing:(UITextView *)textView { - self.deparatmentSequencignation.hidden = YES; -} - -#pragma mark - FBCChamberMotifCeremony -- (void)refurbishChamberMotifAccomplishment { - [self.navigationController popViewControllerAnimated:YES]; -} - -- (void)refurbishChamberMotifFlunk:(NSString *)message { - [self EvidenceMistakeToast:message]; -} - -#pragma mark - Event Response -- (void)acknowledgementBtutonPerformance:(UIButton *)sender { - if (self.essayUniverse.text.length <= 0) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Room_Topic_View_Controller_1")]; - return; - } - [self.presimport chamberMotifRefurbish:self.essayUniverse.text introduction:self.satisfperformanceEssayRegard.text roomInfo:self.roomInfo]; -} - -- (void)essayAccurtowardsedDidDiversifictowardsion:(UITextField *)essayUniverse { - if (essayUniverse.text.length > 15) { - essayUniverse.text = [essayUniverse.text substringToIndex:15]; - } - self.championDigitalSequencignation.text = [NSString stringWithFormat:@"%ld/15", essayUniverse.text.length]; -} - - -#pragma mark - Getters And Setters -- (void)setRoomInfo:(ChamberAbstractMatrix *)roomInfo { - _roomInfo = roomInfo; - if (_roomInfo) { - self.essayUniverse.text = _roomInfo.roomDesc; - self.satisfperformanceEssayRegard.text = _roomInfo.introduction; - self.championDigitalSequencignation.text = [NSString stringWithFormat:@"%ld/15", _roomInfo.roomDesc.length]; - self.satisfperformanceSequencignation.text = [NSString stringWithFormat:@"%ld/300", _roomInfo.introduction.length]; - self.deparatmentSequencignation.hidden = _roomInfo.introduction.length > 0; - } -} - -- (UITextField *)essayUniverse { - if (!_essayUniverse) { - _essayUniverse = [[UITextField alloc] init]; - _essayUniverse.layer.cornerRadius = 8; - _essayUniverse.layer.masksToBounds = YES; - _essayUniverse.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _essayUniverse.font = [UIFont systemFontOfSize:13]; - _essayUniverse.attributedPlaceholder = [[NSAttributedString alloc] initWithString:YMLocalizedString(@"YUMI_Room_Topic_View_Controller_2") attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:13], NSForegroundColorAttributeName : [DJDKMIMOMColor essayTertiusPrettify]}]; - _essayUniverse.tintColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - UIView *searchIconView = [[UIView alloc] init]; - searchIconView.frame = CGRectMake(0, 0, 7, 10); - _essayUniverse.leftView = searchIconView; - _essayUniverse.leftViewMode = UITextFieldViewModeAlways; - [_essayUniverse addTarget:self action:@selector(essayAccurtowardsedDidDiversifictowardsion:) forControlEvents:UIControlEventEditingChanged]; - } - return _essayUniverse; -} - -- (UILabel *)championDigitalSequencignation { - if (!_championDigitalSequencignation) { - _championDigitalSequencignation = [[UILabel alloc] init]; - _championDigitalSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _championDigitalSequencignation.font = [UIFont systemFontOfSize:10]; - _championDigitalSequencignation.text = @"0/15"; - } - return _championDigitalSequencignation; -} - -- (UITextView *)satisfperformanceEssayRegard { - if (!_satisfperformanceEssayRegard) { - _satisfperformanceEssayRegard = [[UITextView alloc] init]; - _satisfperformanceEssayRegard.backgroundColor = [UIColor clearColor]; - _satisfperformanceEssayRegard.font = [UIFont systemFontOfSize:13]; - _satisfperformanceEssayRegard.tintColor = [UIColor clearColor]; - _satisfperformanceEssayRegard.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _satisfperformanceEssayRegard.tintColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - _satisfperformanceEssayRegard.delegate = self; - } - return _satisfperformanceEssayRegard; -} - -- (UILabel *)satisfperformanceSequencignation { - if (!_satisfperformanceSequencignation) { - _satisfperformanceSequencignation = [[UILabel alloc] init]; - _satisfperformanceSequencignation.font = [UIFont systemFontOfSize:10]; - _satisfperformanceSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _satisfperformanceSequencignation.text = @"0/300"; - } - return _satisfperformanceSequencignation; -} - -- (UIView *)contentView { - if (!_contentView) { - _contentView = [[UIView alloc] init]; - _contentView.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - _contentView.layer.masksToBounds = YES; - _contentView.layer.cornerRadius = 8; - } - return _contentView; -} - -- (UILabel *)deparatmentSequencignation { - if (!_deparatmentSequencignation) { - _deparatmentSequencignation = [[UILabel alloc] init]; - _deparatmentSequencignation.text = YMLocalizedString(@"YUMI_Room_Topic_View_Controller_3"); - _deparatmentSequencignation.font = [UIFont systemFontOfSize:13]; - _deparatmentSequencignation.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _deparatmentSequencignation; -} - -- (UIButton *)acknowledgementBtuton { - if (!_acknowledgementBtuton) { - _acknowledgementBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_acknowledgementBtuton setTitle:YMLocalizedString(@"YUMI_Room_Topic_View_Controller_4") forState:UIControlStateNormal]; - [_acknowledgementBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _acknowledgementBtuton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_acknowledgementBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _acknowledgementBtuton.layer.masksToBounds = YES; - _acknowledgementBtuton.layer.cornerRadius = 22; - [_acknowledgementBtuton addTarget:self action:@selector(acknowledgementBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _acknowledgementBtuton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberOnLineRegardGovernancer.h b/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberOnLineRegardGovernancer.h deleted file mode 100644 index 7f020f61..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberOnLineRegardGovernancer.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMRoomOnLineViewController.h -// YUMI -// -// Created by YUMI on 2021/12/29. -// - -#import "BaseRegardGovernancer.h" -#import "ChamberHostRepresendtation.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberOnLineRegardGovernancer : BaseRegardGovernancer - -- (instancetype)initWithDelegate:(id)delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberOnLineRegardGovernancer.m b/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberOnLineRegardGovernancer.m deleted file mode 100644 index c53b7524..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberOnLineRegardGovernancer.m +++ /dev/null @@ -1,440 +0,0 @@ -// -// YMRoomOnLineViewController.m -// YUMI -// -// Created by YUMI on 2021/12/29. -// - -#import "YUMIChamberOnLineRegardGovernancer.h" -#import -#import -#import -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "UIButton+EnlargeTouchArea.h" -#import "NSArray+Safe.h" -#import "ConsumerAbstractMatrix.h" -#import "MiecreoscoopeMHTueueMatrix.h" -#import "ChamberAbstractMatrix.h" -#import "YUMIConsumerSolitaireAbstractMatrix.h" -#import "YUMICommunicationRemoteExtMatrix.h" -#import "YUMIChamberOnlineTabulationRegardElement.h" -#import "YUMIChamberRoleDispossessTabulationRegardElement.h" -#import "YUMIConsumerSolitaireRegardGovernancer.h" - -@interface YUMIChamberOnLineRegardGovernancer () -@property (nonatomic,strong) UIView * nevRegard; -@property (nonatomic,strong) UIButton *backButton; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) NSMutableArray *derivationGarment; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NIMChatroomMember *lastMember; -@property (nonatomic,strong) NIMChatroomMember *tmpRecentComponent; -@property (nonatomic,weak) idhostRepresedtation; -@property (nonatomic,copy) NSString *roomId; -@property (nonatomic, assign) BOOL refreshing; -@end - -@implementation YUMIChamberOnLineRegardGovernancer -- (void)dealloc { - [[NIMSDK sharedSDK].chatManager removeDelegate:self]; -} - -- (instancetype)initWithDelegate:(id)delegate { - if (self = [super init]) { - self.hostRepresedtation = delegate; - self.roomId= [NSString stringWithFormat:@"%ld", self.hostRepresedtation.acquireChamberAbstract.roomId]; - } - return self; -} - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - - [[NIMSDK sharedSDK].chatManager addDelegate:self]; - [self initIntelligencerGrantedTerminalerRrfresh]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.encourageIndicateRegard]; - [self.view addSubview:self.tableView]; - [self.view addSubview:self.nevRegard]; - - [self.nevRegard addSubview:self.backButton]; - [self.nevRegard addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; - - [self.nevRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.height.mas_equalTo(kNavigationHeight); - }]; - - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.top.mas_equalTo(self.nevRegard.mas_bottom); - }]; - - [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(22, 22)); - make.left.mas_equalTo(self.nevRegard).offset(8); - make.centerY.mas_equalTo(self.titleLabel); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.nevRegard); - make.centerY.equalTo(self.nevRegard.mas_bottom).mas_offset(-22); - }]; -} - -- (void)initIntelligencerGrantedTerminalerRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(intelligenceerRenovtowardseh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRenovtowardseh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - - [self intelligenceerRenovtowardseh]; -} - -- (void)intelligenceerRenovtowardseh { - if (self.refreshing) { - return; - } - self.refreshing = YES; - self.lastMember= nil; - self.tmpRecentComponent = nil; - [self.datasource removeAllObjects]; - [[self chamberChinwagChamberRegularComponentSttowardsement] subscribeNext:^(id _Nullable x) { - NSArray * regularList = x; - [regularList enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - NIMChatroomMember * member = obj; - if (member.type == NIMTeamMemberTypeOwner) { - [self.datasource insertObject:member atIndex:0]; - }else { - [self.datasource addObject:member]; - } - }]; - - [[self chamberChinwagChamberTmpComponentSttowardsement] subscribeNext:^(id _Nullable x) { - NSArray * tmpList = x; - - [self.datasource addObjectsFromArray:tmpList]; - [self.tableView reloadData]; - self.refreshing = NO; - }]; - - }]; - -} - -- (void)footerRenovtowardseh { - if (self.refreshing) { - return; - } - self.refreshing = YES; - [[self chamberChinwagChamberRegularComponentSttowardsement] subscribeNext:^(id _Nullable x) { - NSArray * regularList = x; - [regularList enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - NIMChatroomMember * member = obj; - if (member.type == NIMTeamMemberTypeOwner) { - [self.datasource insertObject:member atIndex:0]; - }else { - [self.datasource addObject:member]; - } - }]; - - [[self chamberChinwagChamberTmpComponentSttowardsement] subscribeNext:^(id _Nullable x) { - NSArray * tmpList = x; - [tmpList enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - [self.datasource addObject:obj]; - }]; - [self.tableView reloadData]; - self.refreshing = NO; - }]; - - }]; -} - -- (RACSignal *)chamberChinwagChamberRegularComponentSttowardsement { - return [RACSignal createSignal:^RACDisposable * _Nullable(id _Nonnull subscriber) { - NIMChatroomMemberRequest *request = [[NIMChatroomMemberRequest alloc] init]; - request.roomId = self.roomId; - request.type = NIMChatroomFetchMemberTypeRegular; - request.lastMember = self.lastMember; - request.limit = 200; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembers:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - if (error == nil) { - if (members.count > 0) { - self.lastMember = members.lastObject; - } - NSMutableArray * array = [NSMutableArray array]; - [members enumerateObjectsUsingBlock:^(NIMChatroomMember * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.isOnline && !obj.isInBlackList) { - [array addObject:obj]; - } - }]; - [subscriber sendNext:array]; - [subscriber sendCompleted]; - } else { - [subscriber sendNext:nil]; - [subscriber sendCompleted]; - } - }]; - return nil; - }]; - -} - -- (RACSignal *)chamberChinwagChamberTmpComponentSttowardsement { - return [RACSignal createSignal:^RACDisposable * _Nullable(id _Nonnull subscriber) { - NIMChatroomMemberRequest *request = [[NIMChatroomMemberRequest alloc] init]; - request.roomId = self.roomId; - request.type = NIMChatroomFetchMemberTypeTemp; - request.lastMember = self.tmpRecentComponent; - request.limit = 20; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembers:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - [self.tableView.mj_header endRefreshing]; - [self.tableView.mj_footer endRefreshing]; - if (error == nil) { - if (members.count > 0) { - self.tmpRecentComponent = members.lastObject; - } - NSMutableArray * array = [NSMutableArray array]; - [members enumerateObjectsUsingBlock:^(NIMChatroomMember * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - BOOL isSuperAmind = NO; - if (obj.roomExt.length > 0) { - NSData *jsonData = [obj.roomExt dataUsingEncoding:NSUTF8StringEncoding]; - NSError *error; - NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error]; - YUMICommunicationRemoteExtMatrix * model = [YUMICommunicationRemoteExtMatrix mtowardsrixAboutImpactbasket:[dic objectForKey:obj.userId]]; - isSuperAmind = model.platformRole == 1; - } - - if (obj.isOnline && !obj.isInBlackList && !isSuperAmind) { - [array addObject:obj]; - } - }]; - [subscriber sendNext:array]; - [subscriber sendCompleted]; - } else { - [subscriber sendNext:nil]; - [subscriber sendCompleted]; - } - }]; - return nil; - }]; -} - -- (BOOL)componentIsOnMiecreoscoope:(NSString *)userId{ - NSArray *chatRoomMicSequences = [self.hostRepresedtation.acquireMiecreoscoopeInthecaseofmtowardsion allValues] ; - if (chatRoomMicSequences != nil && chatRoomMicSequences.count > 0) { - for (int i = 0; i < chatRoomMicSequences.count; i ++) { - MiecreoscoopeMHTueueMatrix *chatRoomMicSequence = chatRoomMicSequences[i]; - if (chatRoomMicSequence.userInfo.uid == userId.integerValue) { - return YES; - } - } - } - return NO; -} - -#pragma mark - NIMChatManagerDelegate -- (void)onRecvMessages:(NSArray *)messages { - for (NIMMessage * message in messages) { - - if (message.session.sessionType != NIMSessionTypeChatroom) { - continue; - } - - - if (![message.session.sessionId isEqualToString:self.roomId]) { - continue; - } - if (message.messageType == NIMMessageTypeNotification) { - NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; - NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; - switch (content.eventType) { - case NIMChatroomEventTypeEnter: - case NIMChatroomEventTypeExit: - case NIMChatroomEventTypeAddManager: - case NIMChatroomEventTypeRemoveManager: - case NIMChatroomEventTypeAddBlack: - case NIMChatroomEventTypeRemoveBlack: - case NIMChatroomEventTypeQueueChange: - case NIMChatroomEventTypeKicked: - [self intelligenceerRenovtowardseh]; - break; - default: - break; - - - } - } - } -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMIChamberOnlineTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIChamberOnlineTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIChamberOnlineTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIChamberOnlineTabulationRegardElement class])]; - } - NIMChatroomMember * member = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.isOnMicro = [self componentIsOnMiecreoscoope:member.userId]; - cell.member = member; - return cell; - } - - YUMIChamberRoleDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIChamberRoleDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIChamberRoleDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIChamberRoleDispossessTabulationRegardElement class])]; - } - cell.titleLabel.text = YMLocalizedString(@"YUMI_Room_On_Line_View_Controller_0"); - cell.backgroundColor = [UIColor clearColor]; - return cell; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - return 60; - } - return KScreenHeight - kNavigationHeight; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.datasource.count > 0) { - NIMChatroomMember * member = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - NSDictionary * extDic = [member.roomExt toJSONGroal]; - YUMICommunicationRemoteExtMatrix * userInfo = [YUMICommunicationRemoteExtMatrix mtowardsrixAboutImpactbasket:[extDic objectForKey:member.userId]]; - if (userInfo.enterHide) { - return; - } - ChamberAbstractMatrix * roomInfo = self.hostRepresedtation.acquireChamberAbstract; - NSString * targetUid = member.userId; - YUMIConsumerSolitaireAbstractMatrix * model = [[YUMIConsumerSolitaireAbstractMatrix alloc] init]; - [[self.hostRepresedtation.acquireMiecreoscoopeInthecaseofmtowardsion allValues] enumerateObjectsUsingBlock:^(MiecreoscoopeMHTueueMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (targetUid.integerValue == obj.userInfo.uid) { - model.position = [NSString stringWithFormat:@"%d", obj.microState.position]; - model.posState = obj.microState.posState; - model.micState = obj.microState.micState; - *stop = YES; - } - }]; - model.nick = self.hostRepresedtation.getUserInfo.nick; - model.uid = targetUid; - model.delegate = self.hostRepresedtation; - model.roomInfo = roomInfo; - model.superMangerList = self.hostRepresedtation.acquireChamberSenstowardsionalManagementSttowardsement; - model.micQueue = self.hostRepresedtation.acquireMiecreoscoopeInthecaseofmtowardsion; - model.hideSendGiftItem = YES; - YUMIConsumerSolitaireRegardGovernancer * userCardVC = [[YUMIConsumerSolitaireRegardGovernancer alloc] initWithUser:model]; - [self.navigationController presentViewController:userCardVC animated:YES completion:nil]; - } - -} - -#pragma mark - Event Response -- (void)encourageBtutonPerformance:(UIButton *)sender { - [self.navigationController popViewControllerAnimated:YES]; -} - -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - _tableView.rowHeight = 60; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIChamberOnlineTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIChamberOnlineTabulationRegardElement class])]; - [_tableView registerClass:[YUMIChamberRoleDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIChamberRoleDispossessTabulationRegardElement class])]; - } - return _tableView; -} - -- (UIButton *)backButton { - if (!_backButton) { - _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backButton setImage:[UIImage imageNamed:@"yumi_main_search_white_back"] forState:UIControlStateNormal]; - [_backButton addTarget:self action:@selector(encourageBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_backButton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:10]; - } - return _backButton; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.font = [UIFont systemFontOfSize:15]; - _titleLabel.text = YMLocalizedString(@"YUMI_Room_On_Line_View_Controller_1"); - _titleLabel.textColor = [UIColor whiteColor]; - } - return _titleLabel; -} - -- (UIView *)nevRegard { - if (!_nevRegard) { - _nevRegard = [[UIView alloc] init]; - _nevRegard.backgroundColor = [UIColor clearColor]; - } - return _nevRegard; -} - - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - _encourageIndicateRegard.layer.masksToBounds = YES; - _encourageIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_background"]; - } - return _encourageIndicateRegard; -} - - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} -@end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberRoleRegardGovernancer.h b/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberRoleRegardGovernancer.h deleted file mode 100644 index 01655ced..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberRoleRegardGovernancer.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// YMRoomRoleViewController.h -// YUMI -// -// Created by YUMI on 2021/12/29. -// - -#import "BaseRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, ChamberRoleStatementGenre) { - - ChamberRoleStatementGenre_Manager = 1, - ChamberRoleStatementGenre_Black, -}; - -@interface YUMIChamberRoleRegardGovernancer : BaseRegardGovernancer -@property (nonatomic,copy) NSString *roomId; -@property (nonatomic,assign) ChamberRoleStatementGenre type; -@property (nonatomic,strong) NSArray *sensationalAdmminStatement; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberRoleRegardGovernancer.m b/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberRoleRegardGovernancer.m deleted file mode 100644 index bf857cab..00000000 --- a/YuMi/Modules/YMRoom/View/Setting/View/YUMIChamberRoleRegardGovernancer.m +++ /dev/null @@ -1,191 +0,0 @@ -// -// YMRoomRoleViewController.m -// YUMI -// -// Created by YUMI on 2021/12/29. -// 管理员 黑名单 - -#import "YUMIChamberRoleRegardGovernancer.h" -#import -#import -#import "YUMIMacroUitls.h" -#import "YUMIChamberRoleTabulationRegardElement.h" -#import "YUMIChamberRoleDispossessTabulationRegardElement.h" -#import "UnionSensationalManagementAbstractMatrix.h" -#import "NSArray+Safe.h" - -@interface YUMIChamberRoleRegardGovernancer () -@property (nonatomic,strong) NSMutableArray *derivationGarment; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NIMChatroomMember *lastMember; -@end - -@implementation YUMIChamberRoleRegardGovernancer - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -- (void)chamberChinwagChamberRegularComponentSttowardsement { - NIMChatroomMemberRequest *request = [[NIMChatroomMemberRequest alloc] init]; - request.roomId = self.roomId; - request.type = NIMChatroomFetchMemberTypeRegular; - request.lastMember = self.lastMember; - request.limit = 200; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembers:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - if (error == nil) { - self.lastMember = members.lastObject; - [members enumerateObjectsUsingBlock:^(NIMChatroomMember * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (self.type == ChamberRoleStatementGenre_Black) { - if (obj.isInBlackList) { - [self.datasource addObject:obj]; - } - } else if(self.type == ChamberRoleStatementGenre_Manager) { - if (obj.type == NIMChatroomMemberTypeManager && ![self isChamberSenstowardsionalManagement:obj.userId]) { - [self.datasource addObject:obj]; - } - } - }]; - - [self.tableView reloadData]; - - if (members.count > 0) { - [self chamberChinwagChamberRegularComponentSttowardsement]; - } - } - }]; -} - -- (BOOL)isChamberSenstowardsionalManagement:(NSString *)uid { - BOOL isSuperAdmin = NO; - for (int i = 0; i< self.sensationalAdmminStatement.count; i++) { - UnionSensationalManagementAbstractMatrix * superAdminInfo = [self.sensationalAdmminStatement secureGroalTowardsIndictowardsrix1:i]; - if ([superAdminInfo.uid isEqualToString:uid]) { - isSuperAdmin = YES; - break; - } - } - return isSuperAdmin; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMIChamberRoleTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIChamberRoleTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIChamberRoleTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIChamberRoleTabulationRegardElement class])]; - } - cell.delegate = self; - cell.member = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (indexPath.row == (self.datasource.count -1)) { - cell.burlywoodRegard.hidden = YES; - } else { - cell.burlywoodRegard.hidden = NO; - } - return cell; - } - - YUMIChamberRoleDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIChamberRoleDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIChamberRoleDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIChamberRoleDispossessTabulationRegardElement class])]; - } - - if (self.type == ChamberRoleStatementGenre_Black) { - cell.titleLabel.text = YMLocalizedString(@"YUMI_Room_Role_View_Controller_0"); - } else { - cell.titleLabel.text = YMLocalizedString(@"YUMI_Room_Role_View_Controller_1"); - } - return cell; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - return 55; - } - - return KScreenHeight - kNavigationHeight; -} - -#pragma mark - FBCChamberRoleTabulationViweElementRepresendtation -- (void)yUMIChamberRoleTarbsultowardsionViweElement:(NSString *)view didClickMember:(NIMChatroomMember *)member { - if (self.type == ChamberRoleStatementGenre_Black) { - NIMChatroomMemberUpdateRequest *request = [[NIMChatroomMemberUpdateRequest alloc]init]; - request.roomId = self.roomId; - request.userId = member.userId; - request.enable = NO; - [[NIMSDK sharedSDK].chatroomManager updateMemberBlack:request completion:^(NSError * _Nullable error) { - if (error == nil) { - [self.datasource removeObject:member]; - [self.tableView reloadData]; - } - }]; - } else if(self.type == ChamberRoleStatementGenre_Manager) { - NIMChatroomMemberUpdateRequest *request = [[NIMChatroomMemberUpdateRequest alloc]init]; - request.roomId = self.roomId; - request.userId = member.userId; - request.enable = NO; - [[NIMSDK sharedSDK].chatroomManager markMemberManager:request completion:^(NSError * _Nullable error) { - if (error == nil) { - [self.datasource removeObject:member]; - [self.tableView reloadData]; - } - }]; - } -} - - -#pragma mark - Getters And Setters -- (void)setType:(ChamberRoleStatementGenre)type { - _type = type; - if (_type == ChamberRoleStatementGenre_Black) { - self.title = YMLocalizedString(@"YUMI_Room_Role_View_Controller_2"); - } else { - self.title = YMLocalizedString(@"YUMI_Room_Role_View_Controller_3"); - } - [self chamberChinwagChamberRegularComponentSttowardsement]; -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - _tableView.rowHeight = 60; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIChamberRoleTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIChamberRoleTabulationRegardElement class])]; - [_tableView registerClass:[YUMIChamberRoleDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIChamberRoleDispossessTabulationRegardElement class])]; - } - return _tableView; -} - -- (NSMutableArray *)datasource { - if (!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/StageView/AnchorPKStageView.h b/YuMi/Modules/YMRoom/View/StageView/AnchorPKStageView.h new file mode 100644 index 00000000..5f32ae1c --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/AnchorPKStageView.h @@ -0,0 +1,16 @@ +// +// AnchorPKStageView.h +// YUMI +// +// Created by YUMI on 2022/4/11. +// + +#import "StageView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface AnchorPKStageView : StageView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/StageView/AnchorPKStageView.m b/YuMi/Modules/YMRoom/View/StageView/AnchorPKStageView.m new file mode 100644 index 00000000..6d0ac68c --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/AnchorPKStageView.m @@ -0,0 +1,328 @@ +// +// AnchorPKStageView.m +// YUMI +// +// Created by YUMI on 2022/4/11. +// + +#import "AnchorPKStageView.h" +///Third +#import +#import +#import +///Tool +#import "AccountInfoStorage.h" +#import "YUMIMacroUitls.h" +#import "TTPopup.h" +#import "XNDJTDDLoadingTool.h" +#import "Api.h" +#import "NetImageView.h" +#import "Api+Room.h" +#import "RtcManager.h" +///Model +#import "RoomInfoModel.h" +#import "MicroExtModel.h" +#import "XPUserCardInfoModel.h" +///View +#import "AnchorPKMicroView.h" +#import "XPUserCardViewController.h" +#import "XPAnchorRandomPKRuleView.h" + +// 房主头像宽 58 + 光圈 5 +#define ownerWidth (85 + 5) +// 昵称高 12,距离头像间距 6 +#define ownerHeight (ownerWidth + 6 + 12) +// 下面 8 个坑位宽50 + 光圈 5 +#define mcWidth (50 + 5) * kScreenScale +#define mcHeight (mcWidth + 6 + 12) +// 左右 padding 12 +#define paddingH 12 * kScreenScale +// 房主与下面的坑位间隔 33 +#define marginV1 33 +// 下面 8 个坑位两两之间的间距 +#define marginH (KScreenWidth - paddingH * 2 - mcWidth * 4 - datingWidth) / 2 +// 第一行坑位与第二行坑位的间距 +#define marginV2 27 * kScreenScale +// 第一行坑位的顶部 +#define secondRowTop (firstRowTop + mcHeight + marginV2) +// 第二行坑位底部 padding +#define marginV3 15 + +///房主头像距上边距离 +#define topMargin 87 + +@interface AnchorPKStageView() + +///规则按钮 +@property (nonatomic, strong) UIButton *ruleButton; + +///动画管理类 +@property (strong, nonatomic) SVGAParser *parser; +///中间进度的动画 +@property (nonatomic, strong) SVGAImageView *svgDisplayView; + +@end + +@implementation AnchorPKStageView + +- (instancetype)initWithDelegate:(id)delegate { + if (self = [super initWithDelegate:delegate]) { + [self addSubview:self.svgDisplayView]; + [self addSubview:self.ruleButton]; + [self.svgDisplayView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(64); + make.height.mas_equalTo(74); + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(82); + }]; + [self.ruleButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(46); + make.height.mas_equalTo(18); + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self.svgDisplayView.mas_bottom).mas_offset(7); + }]; + + NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/anchorPK_vs.svga", API_Image_URL]; + [self.parser parseWithURL:[NSURL URLWithString:anatomiser1Name] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { + self.svgDisplayView.loops = INT_MAX; + self.svgDisplayView.clearsAfterStop = NO; + self.svgDisplayView.videoItem = videoItem; + [self.svgDisplayView startAnimation]; + } failureBlock:^(NSError * _Nonnull error) { + }]; + } + return self; +} + +- (NSInteger)countOfMircoView { + return 2; +} + +- (UIView *)findMicroViewByIndex:(NSInteger)index { + UIView * microView = [super findMicroViewByIndex:index]; + return microView; +} + +- (UIView *)microViewForIndex:(NSInteger)index { + UIView * microView = [super microViewForIndex:index]; + if (microView) { + return microView; + } + return [[AnchorPKMicroView alloc]init]; +} + +/** + * | ◯ | * 房主头像宽 150 + 光圈 5 + * | 20 ◯ ◯ ◯ ◯ 20 | * 左右 padding 20 + * | 15 | * 上下两排间距 15 + * | ◯ ◯ ◯ ◯ | * 右边 3 个坑位宽40 + 光圈 5 + * * 昵称高12,距离头像间距 6 + */ +- (CGRect)rectForViewAtIndex:(NSInteger)index { + if (index == 0) { + return CGRectMake((KScreenWidth - 64) * 0.5 - 26 - ownerWidth+2.5, topMargin, ownerWidth, ownerHeight); + } else { + return CGRectMake((KScreenWidth + 64) * 0.5 + 26 - 2.5, topMargin, ownerWidth, ownerHeight); + } + return [super rectForViewAtIndex:index]; +} + +- (CGFloat)hightForStageView { + return 330; +} + +- (CGPoint)animationPointAtStageViewByUid:(NSString *)uid { + NSInteger index = [self getIndexByUid:uid]; + CGPoint point = CGPointZero; + if (index == 0) { + point = CGPointMake(KScreenWidth / 2 - 32 - 26 - ownerWidth * 0.5, topMargin + ownerWidth / 2 - 10); + } + + point = [self convertPoint:point toView:nil]; + return point; +} + +- (void)onRoomEntered { + [super onRoomEntered]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [self autoUpMicAtIndex:-1]; + }); +} + +- (void)handleNIMNotificationMessage:(NIMMessage *)message { + [super handleNIMNotificationMessage:message]; + + NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; + NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; + switch (content.eventType) { + case NIMChatroomEventTypeQueueChange: // 麦序上下麦 + { + NSDictionary* data = (NSDictionary *)content.ext; + UserInfoModel* userInfo = [UserInfoModel modelWithJSON:[data objectForKey:NIMChatroomEventInfoQueueChangeItemValueKey]]; + NSInteger changeType = [data[NIMChatroomEventInfoQueueChangeTypeKey] integerValue]; + + if (changeType == 1) { // 上麦 + if (userInfo.uid == [AccountInfoStorage instance].getUid.integerValue) {///房主上麦 + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{//延迟1s,等待rtc角色变为主播才可发起跨房通话 + if (self.hostDelegate.getRoomInfo.pkRoomId && self.hostDelegate.getRoomInfo.pkUid) { + [[RtcManager instance] connectOtherRoom:self.hostDelegate.getRoomInfo.pkRoomId userId:self.hostDelegate.getRoomInfo.pkUid]; + } else { + [Api getAcrossRoomPKDetail:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + AcrossRoomPKPanelModel * acrossPKPanelInfo = [AcrossRoomPKPanelModel modelWithJSON:data.data]; + if (acrossPKPanelInfo.pkType == AcrossRoomPkTypeAnchor) { + self.hostDelegate.getRoomInfo.roundId = acrossPKPanelInfo.roundId; + self.hostDelegate.getRoomInfo.pkUid = acrossPKPanelInfo.aUid; + self.hostDelegate.getRoomInfo.pkRoomId = acrossPKPanelInfo.aRoomId; + self.hostDelegate.getRoomInfo.pkState = acrossPKPanelInfo.pkState; + self.hostDelegate.getRoomInfo.winUid = acrossPKPanelInfo.winUid; + if (acrossPKPanelInfo.aRoomId && acrossPKPanelInfo.aUid) { + [[RtcManager instance] connectOtherRoom:acrossPKPanelInfo.aRoomId userId:acrossPKPanelInfo.aUid]; + } + } else { + } + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } roomUid:[AccountInfoStorage instance].getUid]; + } + }); + } + } + } + break; + default: + break; + } +} + +- (void)autoUpMicAtIndex:(NSInteger)index { + NIMChatroomQueueUpdateRequest *request = [[NIMChatroomQueueUpdateRequest alloc]init]; + request.key = [NSString stringWithFormat:@"%zd", index]; + UserInfoModel* userInfo = self.hostDelegate.getUserInfo; + RoomInfoModel* roomInfo = self.hostDelegate.getRoomInfo; + if (roomInfo.uid != [[AccountInfoStorage instance].getUid integerValue]) { + return; + } + NSString* roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + request.value = [[self userInfoToQueueExt:userInfo] toJSONString]; + request.roomId = roomId; + request.transient = YES; + [[NIMSDK sharedSDK].chatroomManager updateChatroomQueueObject:request completion:^(NSError * _Nullable error) { + }]; +} +/** + * 麦位更新扩展字段。 + */ +- (NSDictionary *)userInfoToQueueExt:(UserInfoModel *)userInfo { + MicroExtModel * extModel = [[MicroExtModel alloc] init]; + extModel.gender = userInfo.gender; + extModel.avatar = userInfo.avatar; + extModel.uid = userInfo.uid; + extModel.nick = userInfo.nick; + extModel.vipMic = userInfo.uid == self.hostDelegate.getRoomInfo.blindDateVipUid; + extModel.headWearUrl = userInfo.headwearEffect.length > 0 ? userInfo.headwearEffect : userInfo.headwearPic; + extModel.micCircle = userInfo.micCircle; + extModel.micNickColor = userInfo.micNickColor; + extModel.enterHide = userInfo.userVipInfoVO.enterHide; + return [extModel model2dictionary]; +} + +/** + * index 处的坑位点击事件 + */ +- (void)didSelectAtIndex:(NSInteger)index { + MicroQueueModel* micModel = [self.getMicroQueue objectForKey:[self indexToPosition:index]]; + UserInfoModel* userInfo = self.hostDelegate.getUserInfo; + RoomInfoModel* roomInfo = self.hostDelegate.getRoomInfo; + NSString* position = [self indexToPosition:index]; + NSString* uid = [NSString stringWithFormat:@"%ld", userInfo.uid]; + NSString* roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + + // 1. 麦位上有人,弹窗用户资料卡 + NSString * targetUid; + if (roomInfo.leaveMode && [position isEqualToString:@"-1"]) { + targetUid = [NSString stringWithFormat:@"%ld", roomInfo.uid]; + } + if (micModel.userInfo && micModel.userInfo.uid > 0) { + targetUid = [NSString stringWithFormat:@"%ld", micModel.userInfo.uid]; + } + + if (targetUid && targetUid.length > 0) { + XPUserCardInfoModel * model = [[XPUserCardInfoModel alloc] init]; + model.uid = targetUid; + model.position = position; + model.posState = micModel.microState.posState; + model.micState = micModel.microState.micState; + model.nick = userInfo.nick; + model.roomInfo = roomInfo; + model.micQueue = self.getMicroQueue; + model.delegate = self.hostDelegate; + model.superMangerList = self.hostDelegate.getRoomSuperAdminList; + XPUserCardViewController * userCardVC = [[XPUserCardViewController alloc] initWithUser:model]; + [self.hostDelegate.getCurrentNav presentViewController:userCardVC animated:YES completion:nil]; + return; + } +} + +- (NSString *)indexToPosition:(NSInteger)index { + if (index == 9) { + return @"999"; + } + return [super indexToPosition:index]; +} + +- (NSInteger)positionToIndex:(NSString *)position { + if (position.intValue == 999) { + return 9; + } + return [super positionToIndex:position]; +} + +#pragma mark - event +- (void)onRuleButtonClick:(UIButton *)button { + [Api requestAnchorPkRule:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + XPAnchorRandomPKRuleView *view = [[XPAnchorRandomPKRuleView alloc] init]; + view.ruleString = data.data; + [TTPopup popupView:view style:TTPopupStyleAlert]; + } + }]; +} + +#pragma mark - RtcDelegate - 讲话的波纹回调 +- (void)usersSpeaking:(NSMutableArray *)uids { + return; +} + +#pragma mark - getter +- (UIButton *)ruleButton { + if (!_ruleButton) { + _ruleButton = [[UIButton alloc] init]; + [_ruleButton setTitle:YMLocalizedString(@"AnchorPKStageView0") forState:UIControlStateNormal]; + [_ruleButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _ruleButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_ruleButton setBackgroundImage:[UIImage imageNamed:@"anchorPk_panel_ruleBg"] forState:UIControlStateNormal]; + [_ruleButton addTarget:self action:@selector(onRuleButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + } + return _ruleButton; +} + +- (SVGAImageView *)svgDisplayView { + if (_svgDisplayView == nil) { + _svgDisplayView = [[SVGAImageView alloc]init]; + _svgDisplayView.contentMode = UIViewContentModeScaleToFill; + _svgDisplayView.userInteractionEnabled = NO; + _svgDisplayView.backgroundColor = [UIColor clearColor]; + } + return _svgDisplayView; +} + +- (SVGAParser *)parser { + if (!_parser) { + _parser = [[SVGAParser alloc]init]; + } + return _parser; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/StageView/AnchorStageView.h b/YuMi/Modules/YMRoom/View/StageView/AnchorStageView.h new file mode 100644 index 00000000..a741d690 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/AnchorStageView.h @@ -0,0 +1,16 @@ +// +// AnchorStageView.h +// YUMI +// +// Created by YUMI on 2022/2/14. +// + +#import "StageView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface AnchorStageView : StageView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/StageView/AnchorStageView.m b/YuMi/Modules/YMRoom/View/StageView/AnchorStageView.m new file mode 100644 index 00000000..5e43e4b4 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/AnchorStageView.m @@ -0,0 +1,241 @@ +// +// AnchorStageView.m +// YUMI +// +// Created by YUMI on 2022/2/14. +// + +#import "AnchorStageView.h" +///Third +#import +#import +///Tool +#import "AccountInfoStorage.h" +#import "XNDJTDDLoadingTool.h" +#import "YUMIMacroUitls.h" +#import "TTPopup.h" +#import "Api+Room.h" +///Model +#import "RoomInfoModel.h" +#import "MicroExtModel.h" +#import "XPUserCardInfoModel.h" +#import "AttachmentModel.h" +///View +#import "AnchorMicroView.h" +#import "XPUserCardViewController.h" +#import "XPRoomInviteUserViewController.h" + +// 房主头像宽 150 + 光圈 5 +#define ownerWidth (120 + 5) +// 昵称高21,距离头像间距 6 +#define ownerHeight (ownerWidth + 6 + 20) +///房主头像距上边距离 +#define topMargin 60 +// 底部 3 个坑位宽40 + 光圈 5 +#define mcWidth (40 + 5) +#define mcHeight (mcWidth + 6 + 12) +// 底部3 个坑位顶部距房主坑位距离 padding 30 +#define paddingH 35 +// 下边坑位的左右间距 +#define marginW 50 + +@implementation AnchorStageView + +- (NSInteger)countOfMircoView { + return 4; +} + +- (UIView *)microViewForIndex:(NSInteger)index { + UIView * microView = [super microViewForIndex:index]; + if (microView) { + return microView; + } + return [[AnchorMicroView alloc]init]; +} + +/** + * | ◯ | * 房主头像宽 150 + 光圈 5 + * | 20 ◯ ◯ ◯ ◯ 20 | * 左右 padding 20 + * | 15 | * 上下两排间距 15 + * | ◯ ◯ ◯ ◯ | * 右边 3 个坑位宽40 + 光圈 5 + * * 昵称高12,距离头像间距 6 + */ +- (CGRect)rectForViewAtIndex:(NSInteger)index { + if (index == 0) { + return CGRectMake((KScreenWidth - ownerWidth) * 0.5, topMargin, ownerWidth, ownerHeight); + } + if (index >= 1 && index <= 3) { + return CGRectMake((KScreenWidth - mcWidth) * 0.5 - marginW - mcWidth + (marginW+mcWidth) * (index-1), topMargin+ownerHeight + paddingH, mcWidth, mcHeight); + } + + return [super rectForViewAtIndex:index]; +} + +- (CGFloat)hightForStageView { + return topMargin + ownerHeight + paddingH + mcHeight + 10; +} + +- (CGPoint)animationPointAtStageViewByUid:(NSString *)uid { + NSInteger index = [self getIndexByUid:uid]; + CGPoint point = CGPointZero; + if (index == 0) { + point = CGPointMake(KScreenWidth / 2, topMargin + ownerWidth / 2 - 10); + } + + if (index >= 1 && index <= 3) { + point = CGPointMake((KScreenWidth - mcWidth) * 0.5 - (marginW+mcWidth*1.5) + (marginW+mcWidth*1.5) * (index-1) + mcWidth * 0.5, topMargin+ownerHeight + paddingH + mcWidth * 0.5 - 10); + } + + point = [self convertPoint:point toView:nil]; + return point; +} + +- (void)onRoomEntered { + [super onRoomEntered]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [self autoUpMicAtIndex:-1]; + }); +} + +- (void)autoUpMicAtIndex:(NSInteger)index { + NIMChatroomQueueUpdateRequest *request = [[NIMChatroomQueueUpdateRequest alloc]init]; + request.key = [NSString stringWithFormat:@"%zd", index]; + UserInfoModel* userInfo = self.hostDelegate.getUserInfo; + RoomInfoModel* roomInfo = self.hostDelegate.getRoomInfo; + if (roomInfo.uid != [[AccountInfoStorage instance].getUid integerValue]) { + return; + } + NSString* roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + request.value = [[self userInfoToQueueExt:userInfo] toJSONString]; + request.roomId = roomId; + request.transient = YES; + [[NIMSDK sharedSDK].chatroomManager updateChatroomQueueObject:request completion:^(NSError * _Nullable error) { + }]; +} + +/** + * index 处的坑位点击事件 + */ +- (void)didSelectAtIndex:(NSInteger)index { + MicroQueueModel* micModel = [self.getMicroQueue objectForKey:[self indexToPosition:index]]; + UserInfoModel* userInfo = self.hostDelegate.getUserInfo; + RoomInfoModel* roomInfo = self.hostDelegate.getRoomInfo; + NSString* position = [self indexToPosition:index]; + NSString* uid = [NSString stringWithFormat:@"%ld", userInfo.uid]; + NSString* roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + + // 1. 麦位上有人,弹窗用户资料卡 + NSString * targetUid; + if (roomInfo.leaveMode && [position isEqualToString:@"-1"]) { + targetUid = [NSString stringWithFormat:@"%ld", roomInfo.uid]; + } + if (micModel.userInfo && micModel.userInfo.uid > 0) { + targetUid = [NSString stringWithFormat:@"%ld", micModel.userInfo.uid]; + } + + if (targetUid && targetUid.length > 0) { + XPUserCardInfoModel * model = [[XPUserCardInfoModel alloc] init]; + model.uid = targetUid; + model.position = position; + model.posState = micModel.microState.posState; + model.micState = micModel.microState.micState; + model.nick = userInfo.nick; + model.roomInfo = roomInfo; + model.micQueue = self.getMicroQueue; + model.delegate = self.hostDelegate; + model.superMangerList = self.hostDelegate.getRoomSuperAdminList; + XPUserCardViewController * userCardVC = [[XPUserCardViewController alloc] initWithUser:model]; + [self.hostDelegate.getCurrentNav presentViewController:userCardVC animated:YES completion:nil]; + return; + } + + // 2. 空麦位,上麦逻辑 + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = roomId; + request.userIds = @[uid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + NIMChatroomMember * member = members.firstObject; + if (!member) return; + // 2.0.0 锁麦/解锁 + NSString * lockTitle = micModel.microState.posState == MicroPosStateType_Free ? @"锁麦" : YMLocalizedString(@"AnchorStageView1"); + TTActionSheetConfig *lockMic = [TTActionSheetConfig normalTitle:lockTitle clickAction:^{ + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; + NSString * state = micModel.microState.posState == MicroPosStateType_Free ? @"1" : @"0"; + NSString * ticket = [[AccountInfoStorage instance] getTicket]; + NSString * uid = [[AccountInfoStorage instance] getUid]; + [Api microLockCompletion:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + + } roomUid:roomUid state:state position:position ticket:ticket uid:uid]; + }]; + // 2.0.1 闭麦/开麦 + NSString * muteTitle = micModel.microState.micState == MicroMicStateType_Open ? @"闭麦" : YMLocalizedString(@"AnchorStageView3"); + TTActionSheetConfig *muteMic = [TTActionSheetConfig normalTitle:muteTitle clickAction:^{ + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; + NSString * state = micModel.microState.micState == MicroMicStateType_Open ? @"1" : @"0"; + NSString * ticket = [[AccountInfoStorage instance] getTicket]; + NSString * uid = [[AccountInfoStorage instance] getUid]; + [Api microMuteCompletion:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + + } roomUid:roomUid state:state position:position ticket:ticket uid:uid]; + }]; + // 2.1 房主点击了空麦位 + if (member.type == NIMTeamMemberTypeOwner) { + // 抱Ta上麦 + TTActionSheetConfig *inviteMic = [TTActionSheetConfig normalTitle:YMLocalizedString(@"AnchorStageView4") clickAction:^{ + XPRoomInviteUserViewController * inviteUserMicVC = [[XPRoomInviteUserViewController alloc] init]; + inviteUserMicVC.roomId = roomId; + inviteUserMicVC.position = position; + inviteUserMicVC.blindDateVipUid = roomInfo.blindDateVipUid; + [self.hostDelegate.getCurrentNav pushViewController:inviteUserMicVC animated:YES]; + }]; + + [TTPopup actionSheetWithItems:@[inviteMic, lockMic, muteMic]]; + } else if (member.type == NIMTeamMemberTypeManager) {//管理员点击了空麦位 + [TTPopup actionSheetWithItems:@[lockMic, muteMic]]; + } else { + // 2.2 非房主点击了空麦位 + NSString* selfUid = [NSString stringWithFormat:@"%ld", (long)self.hostDelegate.getUserInfo.uid]; + UIView* microView = [self findMicroViewByUid:selfUid]; + if (microView) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"AnchorStageView5")]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:@"让主播抱你上麦进行更多互动吧~"]; + [self sendMessageToRoomOwnerWithUserModel:self.hostDelegate.getUserInfo]; + } + } + }]; +} + +- (void)sendMessageToRoomOwnerWithUserModel:(UserInfoModel *)userInfo { + NIMMessage * message = [[NIMMessage alloc] init]; + AttachmentModel * attachMent = [[AttachmentModel alloc] init]; + attachMent.first = CustomMessageType_AnchorRoom_AudienceUpMic; + attachMent.data = [userInfo model2dictionary]; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachMent; + message.messageObject = object; + //构造会话 + NSString * sessionId = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.roomId]; + NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; +} + +#pragma mark - private utils function +/** + * 麦位更新扩展字段。 + */ +- (NSDictionary *)userInfoToQueueExt:(UserInfoModel *)userInfo { + MicroExtModel * extModel = [[MicroExtModel alloc] init]; + extModel.gender = userInfo.gender; + extModel.avatar = userInfo.avatar; + extModel.uid = userInfo.uid; + extModel.nick = userInfo.nick; + extModel.headWearUrl = userInfo.headwearEffect.length > 0 ? userInfo.headwearEffect : userInfo.headwearPic; + extModel.micCircle = userInfo.micCircle; + extModel.micNickColor = userInfo.micNickColor; + extModel.preventKick = userInfo.userVipInfoVO.preventKick; + extModel.enterHide = userInfo.userVipInfoVO.enterHide; + return [extModel model2dictionary]; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/StageView/DatingStageView.h b/YuMi/Modules/YMRoom/View/StageView/DatingStageView.h new file mode 100644 index 00000000..b59f8dfb --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/DatingStageView.h @@ -0,0 +1,16 @@ +// +// DatingStageView.h +// YUMI +// +// Created by YUMI on 2022/1/4. +// + +#import "StageView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface DatingStageView : StageView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/StageView/DatingStageView.m b/YuMi/Modules/YMRoom/View/StageView/DatingStageView.m new file mode 100644 index 00000000..62ce6137 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/DatingStageView.m @@ -0,0 +1,292 @@ +// +// DatingStageView.m +// YUMI +// +// Created by YUMI on 2022/1/4. +// + +#import "DatingStageView.h" +///Third +#import +#import +///Tool +#import "AccountInfoStorage.h" +#import "YUMIMacroUitls.h" +#import "TTPopup.h" +#import "XNDJTDDLoadingTool.h" +#import "Api.h" +///Model +#import "RoomInfoModel.h" +#import "MicroExtModel.h" +///View +#import "DatingMicroView.h" +#import "MicroDatingProgressView.h" +#import "XPRoomDatingVipUpMicView.h" + +//房主距离顶部间距 +#define ownerTopMargin 35 +// 房主头像宽 58 + 光圈 5 +#define ownerWidth (45 + 5) * kScreenScale +// 昵称高 12,距离头像间距 10 +#define ownerHeight (ownerWidth + 10 + 12) +// 下面 8 个坑位宽50 + 光圈 5 +#define mcWidth (45 + 5) * kScreenScale +#define mcHeight (mcWidth + 10 + 12 + 5+16) +// 左右 padding 12 +#define paddingH 12 * kScreenScale +// 房主与下面的坑位间隔 33 +#define marginV1 38 +// 相亲的宽度 +#define datingWidth 100 * kScreenScale +// 下面 8 个坑位两两之间的间距 +#define marginH (KScreenWidth - paddingH * 2 - mcWidth * 4 - datingWidth) / 2 +// 第一行坑位的顶部 +#define firstRowTop (ownerHeight + marginV1 + ownerTopMargin) +// 第一行坑位与第二行坑位的间距 +#define marginV2 17 * kScreenScale +// 第一行坑位的顶部 +#define secondRowTop (firstRowTop + mcHeight + marginV2) +// 第二行坑位底部 padding +#define marginV3 15 + +@interface DatingStageView() +///相亲进行的阶段 +@property (nonatomic,strong) MicroDatingProgressView *datingProgressView; + +@end + +@implementation DatingStageView + +- (instancetype)initWithDelegate:(id)delegate { + if (self = [super initWithDelegate:delegate]) { + [self addSubview:self.datingProgressView]; + [self.datingProgressView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(datingWidth); + make.bottom.mas_equalTo(self); + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(firstRowTop); + }]; + } + return self; +} + +- (NSInteger)countOfMircoView { + return 10; +} + +- (UIView *)findMicroViewByIndex:(NSInteger)index { + UIView * microView = [super findMicroViewByIndex:index]; + if (microView) { + if ([self micVipIsOnNormalPosition] && index == 9) { + microView.hidden = YES; + } else { + microView.hidden = NO; + } + return microView; + } + return microView; +} + +- (UIView *)microViewForIndex:(NSInteger)index { + UIView * microView = [super microViewForIndex:index]; + if (microView) { + return microView; + } + return [[DatingMicroView alloc]init]; +} + +/** + * | ◯ | * 房主头像宽 58 + 光圈 5 + * | 33 ◯ | * 房主与下面的坑位间隔 33 + * | 12 ◯ ◯ 100 ◯ ◯ 12 | * 左右 padding 12 + * | 15 | * 上下两排间距 15 + * | ◯ ◯ 100 ◯ ◯ | * 下面 8 个坑位宽50 + 光圈 5 + * * 昵称高12,距离头像间距 6 + */ +- (CGRect)rectForViewAtIndex:(NSInteger)index { + ///相亲模式坑位 + if (index == 0) { + return CGRectMake(KScreenWidth / 2 - ownerWidth / 2, ownerTopMargin, ownerWidth, ownerHeight); + } + + + if (index >= 1 && index <= 4) { + CGRect rect = CGRectMake(paddingH + mcWidth * (index - 1) + datingWidth * (index / 3) + marginH * (index / 2), firstRowTop, mcWidth, mcHeight); + return rect; + } + + if (index >= 5 && index <= 8) { + return CGRectMake(paddingH + mcWidth * (index - 4 - 1) + marginH *((index -4)/ 2) + datingWidth * (index / 7), secondRowTop, mcWidth, mcHeight); + } + + if (index == 9) { + return CGRectMake(KScreenWidth- mcWidth - 20, 45, mcWidth, mcHeight); + } + return [super rectForViewAtIndex:index]; +} + +- (CGFloat)hightForStageView { + return ownerTopMargin + ownerHeight + marginV1 + mcHeight + marginV2 + mcHeight + marginV3; +} + +- (CGPoint)animationPointAtStageViewByUid:(NSString *)uid { + NSInteger index = [self getIndexByUid:uid]; + CGPoint point = CGPointZero; + if (index == 0) { + point = CGPointMake(KScreenWidth / 2, ownerWidth / 2 - 10 + ownerTopMargin); + } + + if (index >= 1 && index <= 4) { + point = CGPointMake(paddingH + mcWidth * (index - 1) + datingWidth * (index / 3) + marginH * (index / 2) + mcWidth / 2, firstRowTop + mcWidth / 2- 10); + } + + if (index >= 5 && index <= 8) { + point = CGPointMake(paddingH + mcWidth * (index - 4 - 1) + marginH *((index -4)/ 2) + datingWidth * (index / 7) + mcWidth / 2, secondRowTop + mcWidth / 2 - 10); + } + + if (index == 9) { + point = CGPointMake(KScreenWidth- mcWidth - 20 + mcWidth / 2, 45 + mcWidth / 2); + } + + point = [self convertPoint:point toView:nil]; + return point; +} + +/** + * 麦位更新扩展字段。 + */ +- (NSDictionary *)userInfoToQueueExt:(UserInfoModel *)userInfo { + MicroExtModel * extModel = [[MicroExtModel alloc] init]; + extModel.gender = userInfo.gender; + extModel.avatar = userInfo.avatar; + extModel.uid = userInfo.uid; + extModel.nick = userInfo.nick; + extModel.vipMic = userInfo.uid == self.hostDelegate.getRoomInfo.blindDateVipUid; + extModel.headWearUrl = userInfo.headwearEffect.length > 0 ? userInfo.headwearEffect : userInfo.headwearPic; + extModel.micCircle = userInfo.micCircle; + extModel.micNickColor = userInfo.micNickColor; + extModel.preventKick = userInfo.userVipInfoVO.preventKick;; + extModel.enterHide = userInfo.userVipInfoVO.enterHide; + return [extModel model2dictionary]; +} + +- (BOOL)micVipIsOnNormalPosition { + __block BOOL isHidden = NO; + [self.hostDelegate.getMicroQueue.allValues enumerateObjectsUsingBlock:^(MicroQueueModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.microState.position != -1 && obj.microState.position != 999 && obj.userInfo && obj.userInfo.vipMic) { + isHidden = YES; + } + }]; + return isHidden; +} + +/** + * index 处的坑位点击事件 + */ +- (void)didSelectAtIndex:(NSInteger)index { + MicroQueueModel* micModel = [self.hostDelegate.getMicroQueue objectForKey:[self indexToPosition:index]]; + RoomInfoModel * roomInfo = self.hostDelegate.getRoomInfo; + UserInfoModel * userInfo = self.hostDelegate.getUserInfo; + // 2. 空麦位,上麦逻辑 + if (index != 9 && (!micModel.userInfo || micModel.userInfo.uid <= 0)) { + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + request.userIds = @[[AccountInfoStorage instance].getUid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + NIMChatroomMember * member = members.firstObject; + if (member.type == NIMChatroomMemberTypeManager || member.type == NIMChatroomMemberTypeCreator) { + [super didSelectAtIndex:index]; + } else { + if (micModel.microState.posState == MicroPosStateType_Lock) { + if ([super getIndexByUid:[AccountInfoStorage instance].getUid] != -1) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"DatingStageView0")]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:@"需要排麦才可以上麦哦~"]; + } + } else { + [super didSelectAtIndex:index]; + } + } + }]; + return; + } + + if (index == 9) { + if (micModel.userInfo && micModel.userInfo.uid > 0) { + [super didSelectAtIndex:index]; + } else { + if (roomInfo.blindDateVipUid == [AccountInfoStorage instance].getUid.integerValue) { + NSString * position = [self indexToPosition:index]; + // 2.1.3 闭麦/开麦 + NSString * muteTitle = micModel.microState.micState == MicroMicStateType_Open ? @"闭麦" : YMLocalizedString(@"DatingStageView3"); + TTActionSheetConfig *muteMic = [TTActionSheetConfig normalTitle:muteTitle clickAction:^{ + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; + NSString * state = micModel.microState.micState == MicroMicStateType_Open ? @"1" : @"0"; + NSString * ticket = [[AccountInfoStorage instance] getTicket]; + NSString * uid = [[AccountInfoStorage instance] getUid]; + [Api microMuteCompletion:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + + } roomUid:roomUid state:state position:position ticket:ticket uid:uid]; + }]; + + //上麦 + TTActionSheetConfig *upMic = [TTActionSheetConfig normalTitle:YMLocalizedString(@"DatingStageView4") clickAction:^{ + NIMChatroomQueueUpdateRequest *request = [[NIMChatroomQueueUpdateRequest alloc]init]; + request.key = @"999"; + request.value = [[self userInfoToQueueExt:userInfo] toJSONString]; + request.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + request.transient = YES; + [[NIMSDK sharedSDK].chatroomManager updateChatroomQueueObject:request completion:^(NSError * _Nullable error) { + + }]; + }]; + + [TTPopup actionSheetWithItems:@[upMic, muteMic]]; + + } else { + XPRoomDatingVipUpMicView *view = [[XPRoomDatingVipUpMicView alloc] initWithFrame:CGRectMake(0, 0, 260, 325 + 35 + 20)]; + [TTPopup popupView:view style:TTPopupStyleAlert]; + } + } + } else { + [super didSelectAtIndex:index]; + } +} + +- (NSString *)indexToPosition:(NSInteger)index { + if (index == 9) { + return @"999"; + } + return [super indexToPosition:index]; +} + +- (NSInteger)positionToIndex:(NSString *)position { + if (position.intValue == 999) { + return 9; + } + return [super positionToIndex:position]; +} + +- (void)onRoomUpdate { + [super onRoomUpdate]; + if (self.hostDelegate.getRoomInfo.roomModeType == RoomModeType_Open_Blind) { + self.datingProgressView.blindDateState = self.hostDelegate.getRoomInfo.blindDateState; + } +} + + +- (void)onRoomEntered { + [super onRoomEntered]; + if (self.hostDelegate.getRoomInfo.roomModeType == RoomModeType_Open_Blind) { + self.datingProgressView.blindDateState = self.hostDelegate.getRoomInfo.blindDateState; + } +} + +- (MicroDatingProgressView *)datingProgressView { + if (!_datingProgressView) { + _datingProgressView = [[MicroDatingProgressView alloc] init]; + } + return _datingProgressView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/StageView/MicroView/Anchor/AnchorMicroView.h b/YuMi/Modules/YMRoom/View/StageView/MicroView/Anchor/AnchorMicroView.h new file mode 100644 index 00000000..e0491b28 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/MicroView/Anchor/AnchorMicroView.h @@ -0,0 +1,16 @@ +// +// AnchorMicroView.h +// YUMI +// +// Created by YUMI on 2022/2/14. +// + +#import "MicroView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface AnchorMicroView : MicroView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/StageView/MicroView/Anchor/AnchorMicroView.m b/YuMi/Modules/YMRoom/View/StageView/MicroView/Anchor/AnchorMicroView.m new file mode 100644 index 00000000..d67cbc2c --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/MicroView/Anchor/AnchorMicroView.m @@ -0,0 +1,149 @@ +// +// AnchorMicroView.m +// YUMI +// +// Created by YUMI on 2022/2/14. +// + +#import "AnchorMicroView.h" +///Third +#import +#import +//SVGA动画播放 +#import "SVGA.h" +#import "SVGAParserManager.h" +#import "YUMIMacroUitls.h" +///View +#import "MicroWaveView.h" + +@interface AnchorMicroView () + +///个播主播的动画 +@property (nonatomic, strong) SVGAImageView *svgDisplayView; +@property (nonatomic, strong) SVGAParserManager *parserManager; +///当前坑位 +@property (nonatomic, assign) NSInteger position; + +@end + +@implementation AnchorMicroView + +- (void)initSubViews { + [super initSubViews]; + [self insertSubview:self.svgDisplayView belowSubview:self.avatarImageView]; +} + +- (void)initSubViewConstraints { + [super initSubViewConstraints]; + [self.svgDisplayView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(180); + make.center.equalTo(self.avatarImageView); + }]; +} + +#pragma mark - MicroViewProtocol +- (void)showGiftValueMode:(BOOL)isGiftValue { + if (self.position != -1) { + self.giftValueView.hidden = YES; + } else { + self.giftValueView.hidden = !isGiftValue; + } +} + +///重写父类方法,个播房默认一直为离开模式,不在此处处理离开模式蒙层 +- (void)showLeaveMode:(BOOL)isLeaveMode { +} + +- (void)configMicroView:(MicroQueueModel *)model { + [super configMicroView:model]; + UserInfoModel * userInfo = model.userInfo; + int position = model.microState.position; + self.position = position; + if (position != -1 && userInfo == nil) { + self.nickLabel.text = @""; + } + if (position == 0 || position == 1 || position == 2) { + self.headWearImageView.hidden = NO; + } else { + self.headWearImageView.hidden = YES; + } + ///更新离开模式蒙层 + if (position == -1) { + if (userInfo) { + if ([self.subviews containsObject:self.leaveLabel]) { + [self.leaveLabel removeFromSuperview]; + } + } else { + if (![self.subviews containsObject:self.leaveLabel]) { + [self insertSubview:self.leaveLabel belowSubview:self.giftValueView]; + [self.leaveLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.avatarImageView); + }]; + self.leaveLabel.layer.cornerRadius = self.frame.size.width * 0.5; + self.leaveLabel.layer.masksToBounds = YES; + } + } + self.micStateImageView.image = [UIImage imageNamed:@"room_position_mute_Anchor"]; + [self.micStateImageView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.avatarImageView).mas_offset(-2); + make.right.mas_equalTo(self.avatarImageView).mas_offset(-(120 / 4) +11); + make.width.height.mas_equalTo(22); + }]; + ///主播添加光圈动画 + self.svgDisplayView.hidden = NO; + @weakify(self); + NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/anchor_room_speak.svga", API_Image_URL]; + NSURL *bgUrl = [NSURL fileURLWithPath:anatomiser1Name]; + [self.parserManager loadSvgaWithURL:bgUrl completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { + @strongify(self); + self.svgDisplayView.loops = INT_MAX; + self.svgDisplayView.clearsAfterStop = NO; + self.svgDisplayView.videoItem = videoItem; + [self.svgDisplayView startAnimation]; + } failureBlock:^(NSError * _Nullable error) { + }]; + } else { + self.svgDisplayView.hidden = YES; + } +} + +- (void)configUser:(UserInfoModel *)userInfo { + [super configUser:userInfo]; + self.postionLabel.hidden = YES; + if (self.position == -1) {///房主不需要截取昵称的5个字符 + self.nickLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; + NSString *nickStr = userInfo.nick; + if (userInfo.nick.length > 10) { + nickStr = [NSString stringWithFormat:@"%@…", [userInfo.nick substringToIndex:10]]; + } + self.nickLabel.text = nickStr.length > 0 ? nickStr : @""; + } +} + +- (void)userSpeaking { + if (self.position != -1) { + [self.animationView startWaveAnimation]; + } +} + +#pragma mark - setter and getter +- (SVGAParserManager *)parserManager { + if (!_parserManager) { + _parserManager = [[SVGAParserManager alloc]init]; + } + return _parserManager; +} + +- (SVGAImageView *)svgDisplayView { + if (_svgDisplayView == nil) { + _svgDisplayView = [[SVGAImageView alloc]init]; + _svgDisplayView.contentMode = UIViewContentModeScaleToFill; + _svgDisplayView.userInteractionEnabled = NO; + _svgDisplayView.frame = CGRectMake(0, 0, 384, 384); + _svgDisplayView.hidden = YES; + _svgDisplayView.backgroundColor = [UIColor clearColor]; + } + return _svgDisplayView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/StageView/MicroView/Anchor/AnchorPKMicroView.h b/YuMi/Modules/YMRoom/View/StageView/MicroView/Anchor/AnchorPKMicroView.h new file mode 100644 index 00000000..d0fb2f68 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/MicroView/Anchor/AnchorPKMicroView.h @@ -0,0 +1,16 @@ +// +// AnchorPKMicroView.h +// YUMI +// +// Created by YUMI on 2022/4/11. +// + +#import "MicroView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface AnchorPKMicroView : MicroView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/StageView/MicroView/Anchor/AnchorPKMicroView.m b/YuMi/Modules/YMRoom/View/StageView/MicroView/Anchor/AnchorPKMicroView.m new file mode 100644 index 00000000..391fe3a0 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/MicroView/Anchor/AnchorPKMicroView.m @@ -0,0 +1,152 @@ +// +// AnchorPKMicroView.m +// YUMI +// +// Created by YUMI on 2022/4/11. +// + +#import "AnchorPKMicroView.h" +///Third +#import +#import +#import "SVGAParserManager.h" +#import +#import "YUMIMacroUitls.h" +@interface AnchorPKMicroView () + +///个播主播的动画 +@property (nonatomic, strong) SVGAImageView *svgDisplayView; +@property (nonatomic, strong) SVGAParserManager *parserManager; + +///当前坑位 +@property (nonatomic, assign) NSInteger position; + +@end + +@implementation AnchorPKMicroView + +- (void)initSubViews { + [super initSubViews]; + [self insertSubview:self.svgDisplayView belowSubview:self.avatarImageView]; +} + +- (void)initSubViewConstraints { + [super initSubViewConstraints]; + [self.svgDisplayView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(85 * 1.5); + make.center.equalTo(self.avatarImageView); + }]; +} + +#pragma mark - MicroViewProtocol +- (void)showGiftValueMode:(BOOL)isGiftValue { + self.giftValueView.hidden = YES; + if (self.position != -1) { + self.giftValueView.hidden = YES; + } else { + self.giftValueView.hidden = !isGiftValue; + } +} + +///重写父类方法,个播房默认一直为离开模式,不在此处处理离开模式蒙层 +- (void)showLeaveMode:(BOOL)isLeaveMode { +} + +- (void)configMicroView:(MicroQueueModel *)model { + [super configMicroView:model]; + RoomInfoModel * roomInfo = self.getRoomInfo; + UserInfoModel * userInfo = model.userInfo; + int position = model.microState.position; + self.position = position; + if (position != -1 && userInfo == nil) { + self.nickLabel.text = @""; + } + if (roomInfo.type == RoomType_Anchor && roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode) { + self.stackView.hidden = YES; + } + self.nickLabel.hidden = YES; + self.postionLabel.hidden = YES; + self.headWearImageView.hidden = YES; + + NSString *nickStr = userInfo.nick; + if (userInfo.nick.length > 5) { + nickStr = [NSString stringWithFormat:@"%@…", [userInfo.nick substringToIndex:5]]; + } + + ///更新离开模式蒙层 + if (position == -1) { + if (userInfo) { + if ([self.subviews containsObject:self.leaveLabel]) { + [self.leaveLabel removeFromSuperview]; + } + } else { + if (![self.subviews containsObject:self.leaveLabel]) { + [self insertSubview:self.leaveLabel belowSubview:self.giftValueView]; + [self.leaveLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.avatarImageView); + }]; + self.leaveLabel.layer.cornerRadius = self.frame.size.width * 0.5; + self.leaveLabel.layer.masksToBounds = YES; + } + } + self.micStateImageView.image = [UIImage imageNamed:@"room_position_mute_Anchor"]; + [self.micStateImageView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.avatarImageView).mas_offset(-2); + make.right.mas_equalTo(self.avatarImageView).mas_offset(-(120 / 4) +11); + make.width.height.mas_equalTo(22); + }]; + } + [self.stackView mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.avatarImageView.mas_bottom).mas_offset(17); + }]; + + ///主播添加光圈动画 + self.svgDisplayView.hidden = NO; + @weakify(self); + NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/anchor_room_speak.svga", API_Image_URL]; + NSURL *bgUrl = [NSURL fileURLWithPath:anatomiser1Name]; + [self.parserManager loadSvgaWithURL:bgUrl completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { + @strongify(self); + self.svgDisplayView.loops = INT_MAX; + self.svgDisplayView.clearsAfterStop = NO; + self.svgDisplayView.videoItem = videoItem; + [self.svgDisplayView startAnimation]; + } failureBlock:^(NSError * _Nullable error) { + }]; + +} + +- (void)configUser:(UserInfoModel *)userInfo { + [super configUser:userInfo]; + self.sexImageView.hidden = YES; + if (self.position == -1) { + [self.giftValueView removeFromSuperview]; + } + [self addSubview:self.giftValueView]; + [self.giftValueView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(16); + make.top.mas_equalTo(self.stackView.mas_bottom).mas_offset(10); + make.centerX.mas_equalTo(self.avatarImageView); + }]; +} + +#pragma mark - getter +- (SVGAParserManager *)parserManager { + if (!_parserManager) { + _parserManager = [[SVGAParserManager alloc]init]; + } + return _parserManager; +} + +- (SVGAImageView *)svgDisplayView { + if (_svgDisplayView == nil) { + _svgDisplayView = [[SVGAImageView alloc]init]; + _svgDisplayView.contentMode = UIViewContentModeScaleToFill; + _svgDisplayView.userInteractionEnabled = NO; + _svgDisplayView.frame = CGRectMake(0, 0, 384, 384); + _svgDisplayView.hidden = YES; + _svgDisplayView.backgroundColor = [UIColor clearColor]; + } + return _svgDisplayView; +} +@end diff --git a/YuMi/Modules/YMRoom/View/StageView/MicroView/Dating/DatingMicroView.h b/YuMi/Modules/YMRoom/View/StageView/MicroView/Dating/DatingMicroView.h new file mode 100644 index 00000000..56e28b64 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/MicroView/Dating/DatingMicroView.h @@ -0,0 +1,16 @@ +// +// DatingMicroView.h +// YUMI +// +// Created by YUMI on 2022/1/5. +// + +#import "MicroView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface DatingMicroView : MicroView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/StageView/MicroView/Dating/DatingMicroView.m b/YuMi/Modules/YMRoom/View/StageView/MicroView/Dating/DatingMicroView.m new file mode 100644 index 00000000..764e05aa --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/MicroView/Dating/DatingMicroView.m @@ -0,0 +1,312 @@ +// +// DatingMicroView.m +// YUMI +// +// Created by YUMI on 2022/1/5. +// + +#import "DatingMicroView.h" +///Third +#import +///Tool +#import "NetImageView.h" +#import "AccountInfoStorage.h" + +@interface DatingMicroView () +///相亲模式的 帽子的图片 +@property (nonatomic,strong) NetImageView *capImageView; +///是不是选择了人 +@property (nonatomic,strong) UIButton *pickButton; +///相亲是男方 还是女方 +@property (nonatomic,strong) UIImageView *datingTypeView; +///相亲的vip头像框 +@property (nonatomic,strong) UIImageView *vipHeadWearImageView; +@end + +@implementation DatingMicroView + +- (void)initSubViews { + [super initSubViews]; + [self insertSubview:self.capImageView aboveSubview:self.headWearImageView]; + [self insertSubview:self.datingTypeView belowSubview:self.headWearImageView]; + [self insertSubview:self.vipHeadWearImageView aboveSubview:self.datingTypeView]; + [self addSubview:self.pickButton]; + +} + +- (void)initSubViewConstraints { + [super initSubViewConstraints]; + [self.capImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.headWearImageView); + }]; + + [self.pickButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(37, 14)); + make.centerX.mas_equalTo(self.avatarImageView); + make.centerY.mas_equalTo(self.avatarImageView.mas_bottom).mas_offset(-2); + }]; + + [self.datingTypeView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.avatarImageView); + }]; + + [self.vipHeadWearImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.capImageView); + }]; +} + + +- (void)configMicroView:(MicroQueueModel *)model { + [super configMicroView:model]; + RoomInfoModel * roomInfo = self.getRoomInfo; + UserInfoModel * userInfo = model.userInfo; + NSMutableDictionary * micQueue = [self getMicroQueue]; + NSString * typeImageName = @""; + int position = model.microState.position; + + if (userInfo == nil || userInfo.uid <= 0) { + if (position == -1) { + self.postionLabel.hidden = YES; + self.nickLabel.text = YMLocalizedString(@"DatingMicroView0"); + self.sexImageView.hidden = YES; + self.nickLabel.hidden = NO; + } else if(position == 999) { + self.postionLabel.hidden = YES; + self.nickLabel.hidden = YES; + self.sexImageView.hidden = YES; + } + } else { + if (position == 999) { + self.postionLabel.hidden = YES; + self.nickLabel.hidden = NO; + self.sexImageView.hidden = YES; + } else { + if (position == -1) { + self.postionLabel.hidden = YES; + self.sexImageView.hidden = NO; + } else { + self.postionLabel.hidden = NO; + self.sexImageView.hidden = YES; + } + self.nickLabel.hidden = NO; + } + } + NSString *nickStr = userInfo.nick; + if (userInfo.nick.length > 5) { + nickStr = [NSString stringWithFormat:@"%@…", [userInfo.nick substringToIndex:5]]; + } + ///相亲的对象 男神队 女神队 + if (position == 2 || position == 3 || position == 6 || position == 7) { + self.nickLabel.text = nickStr.length > 0 ? nickStr : YMLocalizedString(@"DatingMicroView1"); + self.datingTypeView.hidden = NO; + typeImageName = @"room_position_dating_male_bg"; + self.datingTypeView.image = [UIImage imageNamed:typeImageName]; + model.microState.datingMicType = DatingMicType_Female; + } else if(position == 0 || position == 1 || position == 4 || position == 5){ + self.nickLabel.text = nickStr.length > 0 ? nickStr : YMLocalizedString(@"DatingMicroView2"); + self.datingTypeView.hidden = NO; + typeImageName = @"room_position_dating_female_bg"; + self.datingTypeView.image = [UIImage imageNamed:typeImageName]; + model.microState.datingMicType = DatingMicType_Male; + } else { + self.datingTypeView.hidden = YES; + model.microState.datingMicType = DatingMicType_Other; + } + ///相亲的帽子 + if (userInfo && userInfo.capUrl.length > 0) { + self.capImageView.imageUrl = userInfo.capUrl; + self.capImageView.hidden = NO; + } else { + self.capImageView.hidden = YES; + } + + if (model && position == 999) {///相亲模式VIP坑位不显示头饰(显示默认头饰) + self.vipHeadWearImageView.hidden = NO; + if (roomInfo.blindDateState == RoomPlayDateingType_Talk || roomInfo.blindDateState == RoomPlayDateingType_Finish) { + self.vipHeadWearImageView.image = [UIImage imageNamed:@"room_mode_dating_vip_title"]; + } else { + if (userInfo) { + self.vipHeadWearImageView.image = [UIImage imageNamed:@"room_mode_dating_vip"]; + } else { + self.vipHeadWearImageView.image = [UIImage imageNamed:@"room_mode_dating_vip_title"]; + } + } + } else { + if (position != -1 && userInfo && userInfo.vipMic) { + self.vipHeadWearImageView.hidden = NO; + if (roomInfo.blindDateState == RoomPlayDateingType_Talk || roomInfo.blindDateState == RoomPlayDateingType_Finish) { + self.vipHeadWearImageView.image = [UIImage imageNamed:@"room_mode_dating_vip_title"]; + } else { + self.vipHeadWearImageView.image = [UIImage imageNamed:@"room_mode_dating_vip"]; + } + } else { + self.vipHeadWearImageView.hidden = YES; + } + } + + self.pickButton.hidden = YES; + if (position == -1) {return;} + ///相亲进行的阶段 + if (roomInfo.blindDateState == RoomPlayDateingType_Pick) { + ///如果我是主持的话 主持人视角 可以看到麦上用户的选择情况,精准到选择对象 + MicroQueueModel * presideModel = [self.getMicroQueue objectForKey:@"-1"]; + if (presideModel.userInfo && presideModel.userInfo.uid == [AccountInfoStorage instance].getUid.integerValue) { + if (userInfo) { + self.pickButton.hidden = NO; + if (userInfo.vipMic || position == 999) { + ///是不是选择了人 + if (userInfo.hasSelectUser) { + [self.pickButton setTitle:[NSString stringWithFormat:YMLocalizedString(@"DatingMicroView3"), (userInfo.selectMicPosition + 1)] forState:UIControlStateNormal]; + [self.pickButton setBackgroundImage:nil forState:UIControlStateNormal]; + } else { + [self.pickButton setTitle:YMLocalizedString(@"DatingMicroView4") forState:UIControlStateNormal]; + [self.pickButton setBackgroundImage:nil forState:UIControlStateNormal]; + } + } else { + ///是不是选择了人 + if (userInfo.hasSelectUser) { + MicroQueueModel *sequence = [micQueue objectForKey:[NSString stringWithFormat:@"%d", userInfo.selectMicPosition]]; + NSString *selectNum; + if (sequence.userInfo.vipMic) { + selectNum = @"选VIP"; + } else { + selectNum = [NSString stringWithFormat:YMLocalizedString(@"DatingMicroView6"), (userInfo.selectMicPosition + 1)]; + } + if (model.microState.datingMicType == DatingMicType_Male) { + [self configPickTitle:selectNum backmImageName:@"room_mode_dating_male_select"]; + } else { + [self configPickTitle:selectNum backmImageName:@"room_mode_dating_female_select"]; + } + } else { + [self configPickTitle:YMLocalizedString(@"DatingMicroView7") backmImageName:@"room_mode_dating_not_select"]; + } + } + } + } else { + ///观众视角视角 嘉po 动对象 + if (userInfo) { + self.pickButton.hidden = NO; + if (userInfo.vipMic || position ==999) { + ///是不是选择了人 + if (userInfo.hasSelectUser) { + ///如果是自己的话 + if (userInfo.uid == [AccountInfoStorage instance].getUid.integerValue) { + [self.pickButton setTitle:[NSString stringWithFormat:YMLocalizedString(@"DatingMicroView8"), (userInfo.selectMicPosition + 1)] forState:UIControlStateNormal]; + [self.pickButton setBackgroundImage:nil forState:UIControlStateNormal]; + } else { + [self.pickButton setTitle:YMLocalizedString(@"DatingMicroView9") forState:UIControlStateNormal]; + [self.pickButton setBackgroundImage:nil forState:UIControlStateNormal]; + } + } else { + [self.pickButton setTitle:YMLocalizedString(@"DatingMicroView10") forState:UIControlStateNormal]; + [self.pickButton setBackgroundImage:nil forState:UIControlStateNormal]; + } + } else { + ///是不是选择了人 + if (userInfo.hasSelectUser) { + ///如果是自己的话 + if (userInfo.uid == [AccountInfoStorage instance].getUid.integerValue) { + MicroQueueModel *sequence = [micQueue objectForKey:[NSString stringWithFormat:@"%d", userInfo.selectMicPosition]]; + NSString *selectNum; + if (sequence.userInfo.vipMic) { + selectNum = @"选VIP"; + } else { + selectNum = [NSString stringWithFormat:YMLocalizedString(@"DatingMicroView12"), (userInfo.selectMicPosition + 1)]; + } + if (model.microState.datingMicType == DatingMicType_Male) { + [self configPickTitle:selectNum backmImageName:@"room_mode_dating_male_select"]; + } else { + [self configPickTitle:selectNum backmImageName:@"room_mode_dating_female_select"]; + } + } else { + if (model.microState.datingMicType == DatingMicType_Male) { + [self configPickTitle:YMLocalizedString(@"DatingMicroView13") backmImageName:@"room_mode_dating_male_select"]; + } else { + [self configPickTitle:YMLocalizedString(@"DatingMicroView14") backmImageName:@"room_mode_dating_female_select"]; + } + } + } else { + [self configPickTitle:YMLocalizedString(@"DatingMicroView15") backmImageName:@"room_mode_dating_not_select"]; + } + } + } + } + } else if(roomInfo.blindDateState == RoomPlayDateingType_Result || roomInfo.blindDateState == RoomPlayDateingType_Finish) { + ///公布结果的时候 都可以看到 + if (userInfo) { + self.pickButton.hidden = NO; + if (userInfo.vipMic || position == 999) { + ///是不是选择了人 + if (userInfo.hasSelectUser) { + [self.pickButton setTitle:[NSString stringWithFormat:YMLocalizedString(@"DatingMicroView16"), (userInfo.selectMicPosition + 1)] forState:UIControlStateNormal]; + [self.pickButton setBackgroundImage:nil forState:UIControlStateNormal]; + } else { + [self.pickButton setTitle:YMLocalizedString(@"DatingMicroView17") forState:UIControlStateNormal]; + [self.pickButton setBackgroundImage:nil forState:UIControlStateNormal]; + } + } else { + ///是不是选择了人 + if (userInfo.hasSelectUser) { + MicroQueueModel *sequence = [micQueue objectForKey:[NSString stringWithFormat:@"%d", userInfo.selectMicPosition]]; + NSString *selectNum; + if (sequence.userInfo.vipMic) { + selectNum = @"选VIP"; + } else { + selectNum = [NSString stringWithFormat:YMLocalizedString(@"DatingMicroView19"), (userInfo.selectMicPosition + 1)]; + } + if (model.microState.datingMicType == DatingMicType_Male) { + [self configPickTitle:selectNum backmImageName:@"room_mode_dating_male_select"]; + } else { + [self configPickTitle:selectNum backmImageName:@"room_mode_dating_female_select"]; + } + } else { + [self configPickTitle:YMLocalizedString(@"DatingMicroView20") backmImageName:@"room_mode_dating_not_select"]; + } + } + } + + } +} + +- (void)configPickTitle:(NSString *)title backmImageName:(NSString *)backImageName { + [self.pickButton setTitle:title forState:UIControlStateNormal]; + [self.pickButton setBackgroundImage:[UIImage imageNamed:backImageName] forState:UIControlStateNormal]; +} + + +- (UIImageView *)datingTypeView { + if (!_datingTypeView) { + _datingTypeView = [[UIImageView alloc] init]; + _datingTypeView.userInteractionEnabled = YES; + } + return _datingTypeView; +} + +- (NetImageView *)capImageView { + if (!_capImageView) { + _capImageView = [[NetImageView alloc] init]; + } + return _capImageView; +} + +- (UIButton *)pickButton { + if (!_pickButton) { + _pickButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_pickButton setTitle:YMLocalizedString(@"DatingMicroView21") forState:UIControlStateNormal]; + _pickButton.titleLabel.font = [UIFont systemFontOfSize:9]; + _pickButton.userInteractionEnabled = NO; + _pickButton.hidden = YES; + } + return _pickButton; +} + +- (UIImageView *)vipHeadWearImageView { + if (!_vipHeadWearImageView) { + _vipHeadWearImageView = [[UIImageView alloc] init]; + _vipHeadWearImageView.userInteractionEnabled = YES; + _vipHeadWearImageView.hidden = YES; + } + return _vipHeadWearImageView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/StageView/MicroView/Dating/MicroDatingProgressView.h b/YuMi/Modules/YMRoom/View/StageView/MicroView/Dating/MicroDatingProgressView.h new file mode 100644 index 00000000..0111e7c3 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/MicroView/Dating/MicroDatingProgressView.h @@ -0,0 +1,17 @@ +// +// MicroDatingProgressView.h +// YUMI +// +// Created by YUMI on 2022/1/4. +// + +#import +#import "RoomInfoModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface MicroDatingProgressView : UIView +///相亲的阶段 +@property (nonatomic,assign) RoomPlayDateingType blindDateState; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/StageView/MicroView/Dating/MicroDatingProgressView.m b/YuMi/Modules/YMRoom/View/StageView/MicroView/Dating/MicroDatingProgressView.m new file mode 100644 index 00000000..f0a595e6 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/MicroView/Dating/MicroDatingProgressView.m @@ -0,0 +1,108 @@ +// +// MicroDatingProgressView.m +// YUMI +// +// Created by YUMI on 2022/1/4. +// + +#import "MicroDatingProgressView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "TTPopup.h" +#import "YUMIHtmlUrl.h" +#import "YUMIMacroUitls.h" +///View +#import "XPRoomDatingWebAlertView.h" + +@interface MicroDatingProgressView () +///心动现场 +@property (nonatomic,strong) UIImageView *heartSceneImageView; +///嘉宾交流 +@property (nonatomic,strong) UIButton *talkButton; + +@end + +@implementation MicroDatingProgressView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.heartSceneImageView]; + [self addSubview:self.talkButton]; +} + +- (void)initSubViewConstraints { + [self.heartSceneImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(95 * kScreenScale, 84 * kScreenScale)); + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self).offset(12 * kScreenScale); + }]; + + [self.talkButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.heartSceneImageView.mas_bottom).offset(8 * kScreenScale); + make.size.mas_equalTo(CGSizeMake(65 *kScreenScale, 21 * kScreenScale)); + make.centerX.mas_equalTo(self.heartSceneImageView); + }]; +} + +#pragma mark - Event Response +- (void)tapDatingRuleRecognizer { + [TTPopup dismiss]; + XPRoomDatingWebAlertView * webView = [[XPRoomDatingWebAlertView alloc] init]; + webView.url = URLWithType(kRoomDatingRule); + [TTPopup popupView:webView style:TTPopupStyleAlert]; +} + +#pragma mark - Getters And Setters +- (void)setBlindDateState:(RoomPlayDateingType)blindDateState { + _blindDateState = blindDateState; + NSString *talkTitle = YMLocalizedString(@"MicroDatingProgressView0"); + switch (_blindDateState) { + case RoomPlayDateingType_Talk: + talkTitle = YMLocalizedString(@"MicroDatingProgressView1"); + break; + case RoomPlayDateingType_Pick: + talkTitle = YMLocalizedString(@"MicroDatingProgressView2"); + break; + case RoomPlayDateingType_Result: + talkTitle = YMLocalizedString(@"MicroDatingProgressView3"); + break; + default: + break; + } + [self.talkButton setTitle:talkTitle forState:UIControlStateNormal]; +} + +- (UIImageView *)heartSceneImageView { + if (!_heartSceneImageView) { + _heartSceneImageView = [[UIImageView alloc] init]; + _heartSceneImageView.userInteractionEnabled = YES; + _heartSceneImageView.image = [UIImage imageNamed:@"room_mode_dating_heart_icon"]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapDatingRuleRecognizer)]; + [_heartSceneImageView addGestureRecognizer:tap]; + } + return _heartSceneImageView; +} + +- (UIButton *)talkButton { + if (_talkButton == nil) { + _talkButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_talkButton setTitle:YMLocalizedString(@"MicroDatingProgressView4") forState:UIControlStateNormal]; + [_talkButton setTitleColor:UIColorFromRGB(0xFFE1E8) forState:UIControlStateNormal]; + _talkButton.titleLabel.font = [UIFont boldSystemFontOfSize:13]; + _talkButton.titleLabel.textAlignment = NSTextAlignmentCenter; + [_talkButton setBackgroundImage:[UIImage imageNamed:@"room_mode_dating_progress_bg"] forState:UIControlStateNormal]; + } + return _talkButton; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/StageView/MicroView/LittleGame/LittleGameMicroView.h b/YuMi/Modules/YMRoom/View/StageView/MicroView/LittleGame/LittleGameMicroView.h new file mode 100644 index 00000000..4506bd40 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/MicroView/LittleGame/LittleGameMicroView.h @@ -0,0 +1,16 @@ +// +// LittleGameMicroView.h +// YUMI +// +// Created by YUMI on 2022/2/11. +// + +#import "MicroView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface LittleGameMicroView : MicroView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/StageView/MicroView/LittleGame/LittleGameMicroView.m b/YuMi/Modules/YMRoom/View/StageView/MicroView/LittleGame/LittleGameMicroView.m new file mode 100644 index 00000000..1ea57bda --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/MicroView/LittleGame/LittleGameMicroView.m @@ -0,0 +1,106 @@ +// +// LittleGameMicroView.m +// YUMI +// +// Created by YUMI on 2022/2/11. +// + +#import "LittleGameMicroView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" + +@interface LittleGameMicroView () +///状态的按钮 +@property (nonatomic,strong) UIButton *stateButton; +@end + +@implementation LittleGameMicroView + + +- (void)initSubViews { + [super initSubViews]; + [self insertSubview:self.stateButton belowSubview:self.micStateImageView]; +} + +- (void)initSubViewConstraints { + [super initSubViewConstraints]; + [self.stateButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(40); + make.height.mas_equalTo(16); + make.centerX.mas_equalTo(self); + make.bottom.mas_equalTo(self.avatarImageView.mas_bottom); + }]; +} + +- (void)configMicroView:(MicroQueueModel *)model { + [super configMicroView:model]; + UserInfoModel * info = model.userInfo; + self.stateButton.hidden = NO; + self.sexImageView.hidden = YES; + if (info.uid == self.getRoomInfo.uid) {//房主 + [self.stateButton setTitle:YMLocalizedString(@"LittleGameMicroView0") forState:UIControlStateNormal]; + [self.stateButton setBackgroundColor:UIColorFromRGB(0x20AAF5)]; + } else { + if (info.gameStatus == LittleGamePlayStatus_NoIn) { //未加入游戏 + self.stateButton.hidden = YES; + } else if (info.gameStatus == LittleGamePlayStatus_IsIn) { + [self.stateButton setTitle:YMLocalizedString(@"LittleGameMicroView1") forState:UIControlStateNormal]; + [self.stateButton setBackgroundColor:UIColorFromRGB(0xFC4F6D)]; + } else if (info.gameStatus == LittleGamePlayStatus_Ready) { + [self.stateButton setTitle:YMLocalizedString(@"LittleGameMicroView2") forState:UIControlStateNormal]; + [self.stateButton setBackgroundColor:UIColorFromRGB(0x56D41A)]; + } else if (info.gameStatus == LittleGamePlayStatus_Plying) { + [self.stateButton setTitle:YMLocalizedString(@"LittleGameMicroView3") forState:UIControlStateNormal]; + [self.stateButton setBackgroundColor:UIColorFromRGB(0xFFA936)]; + } else { + self.stateButton.hidden = YES; + } + } + if (info.nick.length > 0) { + NSString *nickStr = info.nick; + if (nickStr.length > 3) { + nickStr = [NSString stringWithFormat:@"%@…", [nickStr substringToIndex:3]]; + } + self.nickLabel.text = nickStr; + } + + if (model.microState.position == -1) { + self.nickLabel.hidden = NO; + self.postionLabel.hidden = NO; + } + + [self.stackView mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.avatarImageView.mas_bottom).offset(6); + }]; +} + +- (void)configUser:(UserInfoModel *)userInfo { + [super configUser:userInfo]; + + [self.giftValueView removeFromSuperview]; + [self addSubview:self.giftValueView]; + [self.giftValueView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(16); + make.top.mas_equalTo(self.stackView.mas_bottom).mas_offset(5); + make.centerX.mas_equalTo(self.avatarImageView); + }]; +} + +#pragma mark - Getters And Setters +- (UIButton *)stateButton { + if (!_stateButton) { + _stateButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_stateButton setTitle:YMLocalizedString(@"LittleGameMicroView4") forState:UIControlStateNormal]; + [_stateButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _stateButton.titleLabel.font = [UIFont systemFontOfSize:10]; + [_stateButton setBackgroundColor:UIColorFromRGB(0xFFA936)]; + _stateButton.layer.masksToBounds = YES; + _stateButton.layer.cornerRadius = 8; + _stateButton.layer.borderColor = UIColor.whiteColor.CGColor; + _stateButton.layer.borderWidth = 1; + } + return _stateButton; +} +@end diff --git a/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroGiftValueView.h b/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroGiftValueView.h new file mode 100644 index 00000000..ca7b5994 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroGiftValueView.h @@ -0,0 +1,17 @@ +// +// MicroGiftValueView.h +// YUMI +// +// Created by YUMI on 2021/12/13. +// + +#import "MicroView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MicroGiftValueView : UIView +///当前的礼物值 +@property (nonatomic,assign) long long giftValue; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroGiftValueView.m b/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroGiftValueView.m new file mode 100644 index 00000000..34a4abac --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroGiftValueView.m @@ -0,0 +1,104 @@ +// +// MicroGiftValueView.m +// YUMI +// +// Created by YUMI on 2021/12/13. +// + +#import "MicroGiftValueView.h" +///Third +#import + +@interface MicroGiftValueView () +///背景图 +//@property (nonatomic, strong) UIImageView *bgImageView; +///背景 +@property (nonatomic, strong) UIView *bgView; +///心形图标 +@property (nonatomic, strong) UIImageView *iconImageView; +///礼物值 +@property (nonatomic, strong) UILabel *valueLabel; +@end + +@implementation MicroGiftValueView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.bgView]; + [self.bgView addSubview:self.iconImageView]; + [self.bgView addSubview:self.valueLabel]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { +// make.right.mas_equalTo(self.valueLabel.mas_right).offset(3); + make.edges.mas_equalTo(self.bgView); + }]; + + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { +// make.edges.mas_equalTo(self); + make.right.mas_equalTo(self.valueLabel).mas_offset(4); + }]; + [self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.bgView).offset(4); + make.centerY.mas_equalTo(self.bgView); + make.width.height.mas_equalTo(11); + }]; + [self.valueLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.iconImageView.mas_right).offset(3); + make.centerY.mas_equalTo(self.bgView); + }]; + +} +#pragma mark - Getters And Setters +- (void)setGiftValue:(long long)giftValue { + NSString *value; + if (giftValue < 1000000) { + value = @(giftValue).stringValue; + } else if (giftValue >= 100000000) { + value = @"9999万+"; + } else { + value = [NSString stringWithFormat:YMLocalizedString(@"MicroGiftValueView1"), giftValue/10000]; + } + self.valueLabel.text = value; +} + +- (UIView *)bgView { + if (!_bgView) { + _bgView = [[UIView alloc] init]; + _bgView.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.3]; + _bgView.layer.cornerRadius = 8; + _bgView.layer.masksToBounds = YES; + } + return _bgView; +} + +- (UIImageView *)iconImageView { + if (_iconImageView == nil) { + _iconImageView = [[UIImageView alloc] init]; + _iconImageView.userInteractionEnabled = YES; + _iconImageView.image = [UIImage imageNamed:@"room_position_giftValue_heart"]; + } + return _iconImageView; +} + +- (UILabel *)valueLabel { + if (_valueLabel == nil) { + _valueLabel = [[UILabel alloc] init]; + _valueLabel.textColor = UIColor.whiteColor; + _valueLabel.font = [UIFont systemFontOfSize:10]; + _valueLabel.text = @"0"; + } + return _valueLabel; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroNobleWaveView.h b/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroNobleWaveView.h new file mode 100644 index 00000000..76b51cbd --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroNobleWaveView.h @@ -0,0 +1,19 @@ +// +// MicroNobleWaveView.h +// YUMI +// +// Created by YUMI on 2022/1/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface MicroNobleWaveView : UIView + +///开始展示声波动画 +- (void)startWaveAnimationWithUrl:(NSString *)url; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroNobleWaveView.m b/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroNobleWaveView.m new file mode 100644 index 00000000..4051b785 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroNobleWaveView.m @@ -0,0 +1,93 @@ +// +// MicroNobleWaveView.m +// YUMI +// +// Created by YUMI on 2022/1/18. +// + +#import "MicroNobleWaveView.h" +//SVGA动画播放 +#import "SVGA.h" +///Third +#import +#import "YUMIMacroUitls.h" + +@interface MicroNobleWaveView() + +@property (nonatomic, strong) SVGAImageView *svgDisplayView; + +@property (strong, nonatomic) SVGAParser *parser; + +//是否正在动画中 +@property (nonatomic,assign) BOOL isAnimationing; + +@end + +@implementation MicroNobleWaveView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Public Method +///开始展示声波动画 +- (void)startWaveAnimationWithUrl:(NSString *)url { + if (self.isAnimationing) { + return; + } + @kWeakify(self); + [self.parser parseWithURL:[NSURL URLWithString:url] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { + @kStrongify(self); + self.svgDisplayView.loops = 1; + self.svgDisplayView.clearsAfterStop = YES; + self.svgDisplayView.videoItem = videoItem; + self.isAnimationing = YES; + [self.svgDisplayView startAnimation]; + } failureBlock:^(NSError * _Nullable error) { + }]; +} + +///结束声波动画 +- (void)stopWaveAnimation { + self.isAnimationing = NO; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.svgDisplayView]; + self.svgDisplayView.delegate = self; +} + +- (void)initSubViewConstraints { + [self.svgDisplayView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; +} + +#pragma mark - SVGAPlayerDelegate +- (void)svgaPlayerDidFinishedAnimation:(SVGAPlayer *)player { + [self stopWaveAnimation]; +} + +- (SVGAImageView *)svgDisplayView { + if (!_svgDisplayView) { + _svgDisplayView = [[SVGAImageView alloc] init]; + _svgDisplayView.contentMode = UIViewContentModeScaleAspectFit; + } + return _svgDisplayView; +} + +- (SVGAParser *)parser { + if (!_parser) { + _parser = [[SVGAParser alloc]init]; + } + return _parser; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroView.h b/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroView.h new file mode 100644 index 00000000..2d4fb67d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroView.h @@ -0,0 +1,40 @@ +// +// MicroView.h +// YUMI +// +// Created by YUMI on 2021/10/15. +// + +#import +#import +#import "MicroViewProtocol.h" +#import "NetImageView.h" +#import "MicroGiftValueView.h" + +@class MicroGiftValueView, MicroWaveView; +NS_ASSUME_NONNULL_BEGIN +@interface MicroView : UIView +///头像 +@property (nonatomic,strong, readonly) NetImageView *avatarImageView; +///几号坑位 +@property (nonatomic,strong, readonly) UILabel *postionLabel; +///用户名/号麦位 +@property (nonatomic,strong, readonly) UILabel *nickLabel; +///头饰 +@property (nonatomic,strong, readonly) YYAnimatedImageView *headWearImageView; +///礼物值 +@property (nonatomic,strong, readonly) MicroGiftValueView *giftValueView; +///离开模式 +@property (nonatomic,strong, readonly) UILabel *leaveLabel; +///坑位是否闭麦的 +@property (nonatomic,strong, readonly) UIImageView *micStateImageView; +///声波动画 +@property (nonatomic,strong, readonly) MicroWaveView *animationView; +///0 号麦位显示性别 +@property (nonatomic,strong, readonly) UIImageView *sexImageView; +///昵称容器 +@property (nonatomic, strong, readonly) UIStackView *stackView; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroView.m b/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroView.m new file mode 100644 index 00000000..5cd7b1c1 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroView.m @@ -0,0 +1,712 @@ +// +// MicroView.m +// YUMI +// +// Created by YUMI on 2021/10/15. +// + +#import "MicroView.h" +///Third +#import +#import +///View +#import "MicroWaveView.h" +#import "NetImageView.h" +#import "MicroNobleWaveView.h" +///Tool +#import "XPRoomFaceTool.h" +#import "YUMIHtmlUrl.h" +#import "ThemeColor+Room.h" +#import "XCCurrentVCStackManager.h" +#import "XPWebViewController.h" +#import "SpriteSheetImageManager.h" +#import "YUMIMacroUitls.h" +#import "UIImage+Utils.h" +#import "ClientConfig.h" +///Model +#import "RoomFaceInfoModel.h" + +#define kScpaces 13 + +@interface MicroView () +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///坑位是否闭麦的 +@property (nonatomic,strong) UIImageView *micStateImageView; +///昵称容器 +@property (nonatomic,strong) UIStackView *stackView; +///几号坑位 +@property (nonatomic,strong) UILabel *postionLabel; +///用户名/号麦位 +@property (nonatomic,strong) UILabel *nickLabel; +///0 号麦位显示性别 +@property (nonatomic,strong) UIImageView *sexImageView; +///声波动画 +@property (nonatomic,strong) MicroWaveView *animationView; +///贵族声波动画 +@property (nonatomic, strong) MicroNobleWaveView *nobleWaveView; +///离开模式 +@property (nonatomic,strong) UILabel *leaveLabel; +///礼物值 +@property (nonatomic,strong) MicroGiftValueView *giftValueView; +///防被踢 +@property (nonatomic, strong) UIImageView *forbidKickView; +///麦序的信息 +@property (nonatomic,strong) MicroQueueModel *microModel; +///麦位的用户信息 +@property (nonatomic,strong) UserInfoModel *userInfo; +///当前房间的信息 +@property (nonatomic,strong) RoomInfoModel *roomInfo; +///礼物值高低 +@property (nonatomic,strong) UIImageView *positionCharmImgView; +///头饰 +@property (nonatomic,strong) YYAnimatedImageView *headWearImageView; +///表情 +@property (nonatomic, strong) UIImageView *faceImageView; +///pk类型的按钮 +@property (nonatomic,strong) UIButton *groupTypeButton; +///头饰播放 +@property (nonatomic, strong) SpriteSheetImageManager *manager; +///当前的麦序 +@property (nonatomic,strong) NSMutableDictionary *micQueue; +@end + + +@implementation MicroView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +// 在view中重写以下方法,其中 self.longPreGetrueMaskView 就是那个希望被触发点击事件的按钮 +- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { + UIView *view = [super hitTest:point withEvent:event]; + if (!view) { + // 转换坐标系 + CGPoint newPoint = [self.giftValueView convertPoint:point fromView:self]; + // 判断触摸点 + if (CGRectContainsPoint(self.giftValueView.bounds, newPoint)) { + view = self.giftValueView; + } + } + return view; +} + +- (void)layoutSubviews { + self.avatarImageView.layer.masksToBounds = YES; + self.avatarImageView.layer.cornerRadius = self.frame.size.width / 2; +} + +- (void)initSubViews { + [self addSubview:self.nobleWaveView]; + [self addSubview:self.animationView]; + [self addSubview:self.avatarImageView]; + [self addSubview:self.headWearImageView]; + [self addSubview:self.positionCharmImgView]; + [self addSubview:self.micStateImageView]; + [self addSubview:self.forbidKickView]; + [self addSubview:self.giftValueView]; + [self addSubview:self.faceImageView]; + [self addSubview:self.groupTypeButton]; + + [self addSubview:self.stackView]; + [self.stackView addArrangedSubview:self.postionLabel]; + [self.stackView addArrangedSubview:self.nickLabel]; + [self.stackView addArrangedSubview:self.sexImageView]; +} + +- (void)initSubViewConstraints { + [self.nobleWaveView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self.avatarImageView); + make.width.height.mas_equalTo(self.avatarImageView.mas_width).multipliedBy(1.4); + }]; + [self.animationView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.avatarImageView); + }]; + + [self.headWearImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self.avatarImageView); + make.width.mas_equalTo(self.avatarImageView.mas_width).multipliedBy(1.31); + make.height.mas_equalTo(self.headWearImageView.mas_width); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self); + make.height.mas_equalTo(self.mas_width); + }]; + + [self.micStateImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.avatarImageView); + }]; + [self.forbidKickView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.bottom.mas_equalTo(self.avatarImageView); + make.width.height.mas_equalTo(18); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self.avatarImageView.mas_bottom).offset(10); + }]; + + [self.postionLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(14); + }]; + + [self.giftValueView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(16); + make.top.mas_equalTo(self.stackView.mas_bottom).mas_offset(5); + make.centerX.mas_equalTo(self.avatarImageView); + }]; + + [self.faceImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self.avatarImageView); + make.width.height.mas_equalTo(80); + }]; + + [self.groupTypeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(38, 16)); + make.centerX.mas_equalTo(self.avatarImageView); + make.bottom.mas_equalTo(self.avatarImageView); + }]; + + [self.positionCharmImgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.equalTo(self.avatarImageView).multipliedBy(1.4); + make.center.equalTo(self.avatarImageView); + }]; +} + +- (UIView *)getAvatarView { + return self.avatarImageView; +} + +- (UIImage *)combineImageInOne:(RoomFaceSendInfoModel *)faceInfo { + CGSize size = CGSizeMake(80, 80); + UIImage *result; + NSInteger faceCount = faceInfo.resultIndexes.count > 9 ? 9 : faceInfo.resultIndexes.count; + CGFloat x = 0; + CGFloat y = 0; + CGFloat width = 60; + CGFloat height = 60; + CGFloat spaceX3 = 0; //三张图时的X间距 + CGFloat spaceX2 = (size.width - width * 2) / 2; //两张图时的X边距 + CGFloat spaceX1 = (size.width - width) / 2; //一张图时的X边距 + CGFloat spaceY3 = 0; //三张图时的Y间距 + CGFloat spaceY2 = (size.height - height * 2) / 2; //两张图时的Y间距 + CGFloat spaceY1 = (size.height - height) / 2; //一张图时的Y间距 + y = faceCount > 6 ? spaceY3 : (faceCount >= 3 ? spaceY2 : spaceY1); + x = faceCount % 3 == 0 && faceCount > 3 ? spaceX3 : (faceCount % 3 == 2 ? spaceX2 : spaceX1); + UIGraphicsBeginImageContextWithOptions(size, NO, [UIScreen mainScreen].scale); + for (int i = 0; i < faceCount; i++) { + NSInteger index = [faceInfo.resultIndexes[i] integerValue]; + RoomFaceInfoModel *faceModel = [[XPRoomFaceTool shareFaceTool] findFaceInfoById:faceInfo.faceId]; + UIImage *singleImage = [[XPRoomFaceTool shareFaceTool] findFaceImageById:faceInfo.faceId index:index]; + + if (faceCount == 1) { //只有一张图片的时候直接返回不做处理 + return singleImage; + break; + } + + if (faceModel.displayType == FaceDisplayType_Flow) { + [singleImage drawInRect:CGRectMake(x, y, width, height)]; + if (i % 3 == 0) { // 换行 + y += (height + spaceY3); + x = spaceX3; + } + else if (i == 2 && faceCount == 3) { // 换行,只有三个时 + y += (height + spaceY3); + x = spaceX2; + } + else { + x += (width + spaceX3); + } + }else if (faceModel.displayType == FaceDisplayType_OverLay) { + CGFloat whBit = singleImage.size.width / singleImage.size.height; + width = size.width - (faceInfo.resultIndexes.count - 1) * kScpaces; + height = width / whBit; + x = 0 + i * kScpaces; + y = size.height / 2 - height / 2; + [singleImage drawInRect:CGRectMake(x, y, width, height)]; + } + } + result = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + return result; +} + +#pragma mark - MicroViewProtocol +- (void)showLeaveMode:(BOOL)isLeaveMode { + if (isLeaveMode) { + [self insertSubview:self.leaveLabel belowSubview:self.giftValueView]; + [self.leaveLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.avatarImageView); + }]; + } else { + if ([self.subviews containsObject:self.leaveLabel]) { + [self.leaveLabel removeFromSuperview]; + } + } +} + +- (void)userSpeaking { + UserInfoModel * userInfo = self.microModel.userInfo; + if (!userInfo.micCircle.length) { + [self.animationView startWaveAnimation]; + return; + } + [self.nobleWaveView startWaveAnimationWithUrl:userInfo.micCircle]; +} + +- (void)showingFace:(RoomFaceSendInfoModel *)receiveInfo{ + [self.faceImageView.layer removeAnimationForKey:@"face"]; + UIImage * result; + if (receiveInfo.resultIndexes.count > 0) { + result = [self combineImageInOne:receiveInfo]; + receiveInfo.resultImage = result; + } + RoomFaceInfoModel *configInfo = [[XPRoomFaceTool shareFaceTool] findFaceInfoById:receiveInfo.faceId]; + if (receiveInfo.resultIndexes.count > 0) { + /*==================== 动画数组 ================= */ + CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"contents"]; + animation.duration = configInfo.animDuration / 1000.0; + animation.delegate = self; + animation.repeatCount = configInfo.animRepeatCount; + animation.removedOnCompletion = YES; + animation.calculationMode = kCAAnimationDiscrete; + + //存放图片的数组 + NSMutableArray *faceArray = [NSMutableArray array]; + + for (int i = (short)configInfo.animStartPos; i <= (short)configInfo.animEndPos; i ++) { + UIImage *image = [[XPRoomFaceTool shareFaceTool] findFaceImageById:receiveInfo.faceId index:i]; + if (image) { + CGImageRef cgimg = image.CGImage; + [faceArray addObject:(__bridge UIImage *)cgimg]; + }else { + break; + } + + } + if (faceArray.count > 0) { + animation.values = faceArray; + }else { + return; + } + /*==================== 结果数组 ================= */ + CAKeyframeAnimation *resultAnimation = [CAKeyframeAnimation animationWithKeyPath:@"contents"]; + resultAnimation.duration = 3; + resultAnimation.delegate = self; + resultAnimation.beginTime = configInfo.animRepeatCount * configInfo.animDuration / 1000.0; + //存放图片的数组 + NSMutableArray *resultArray = [NSMutableArray array]; + + if (receiveInfo.resultImage) { + [resultArray addObject:(__bridge UIImage *)receiveInfo.resultImage.CGImage]; + }else { + return; + } + if (resultArray.count > 0) { + resultAnimation.values = resultArray; + }else { + return; + } + + resultAnimation.removedOnCompletion = YES; + + CAAnimationGroup *group = [CAAnimationGroup animation]; + group.animations = @[animation,resultAnimation]; + group.duration = 3 + (configInfo.animDuration / 1000.0) * configInfo.animRepeatCount; + group.delegate = self; + [self.faceImageView.layer addAnimation:group forKey:@"face"]; + } else { + /*==================== 动画数组 ================= */ + //创建CAKeyframeAnimation + CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"contents"]; + animation.duration = configInfo.animDuration / 1000.0; + animation.delegate = self; + animation.repeatCount = configInfo.animRepeatCount; + animation.removedOnCompletion = YES; + animation.calculationMode = kCAAnimationDiscrete; + //存放图片的数组 + NSMutableArray *faceArray = [NSMutableArray array]; + + for (int i = (short)configInfo.animStartPos; i <= (short)configInfo.animEndPos; i ++) { + UIImage *image = [[XPRoomFaceTool shareFaceTool] findFaceImageById:receiveInfo.faceId index:i];; + if (image) { + CGImageRef cgimg = image.CGImage; + [faceArray addObject:(__bridge UIImage *)cgimg]; + }else { + break; + } + } + if (faceArray.count > 0) { + animation.values = [faceArray copy]; + [self.faceImageView.layer addAnimation:animation forKey:@"face"]; + } + } +} + +/** + 更新坑位等级头饰 + */ +- (void)updatePositionisHighLevel:(BOOL)isHighLevel + isShow:(BOOL)isShow { + self.positionCharmImgView.hidden = !isShow; + if (isHighLevel) { + self.positionCharmImgView.image = [UIImage imageNamed:@"room_game_position_mine"]; + }else { + self.positionCharmImgView.image = [UIImage imageNamed:@"room_game_position_crown"]; + } +} + +/** + 重置头饰 + */ +- (void)resetPositonLevelHeadwear{ + self.positionCharmImgView.hidden = YES; +} + + +- (void)configMicroView:(MicroQueueModel *)model { + self.microModel = model; + MicroStateModel * micStats = model.microState; + UserInfoModel * userInfo = model.userInfo; + [self configMicroState:micStats]; + [self configUser:userInfo]; +} + +- (void)configMicroState:(MicroStateModel *)micState { + self.micStateImageView.hidden = micState.micState == MicroMicStateType_Open; + UIImage *image; + if (micState.posState == MicroPosStateType_Free) { + if ([ClientConfig shareConfig].canOpen) { + image = [UIImage imageNamed:@"room_position_normal"]; + }else{ + image = [UIImage imageNamed:@"room_position_normal1"]; + } + } else { + if ([ClientConfig shareConfig].canOpen) { + image = [UIImage imageNamed:@"room_position_lock"]; + }else{ + image = [UIImage imageNamed:@"room_position_lock1"]; + } + } + CGSize scaledToSize = CGSizeMake(self.frame.size.width, self.frame.size.width); + UIGraphicsBeginImageContextWithOptions(scaledToSize, false, 0.0); + // 缩小 “1” 点儿,防止默认背景的边缘被裁减。 + [image drawInRect:CGRectMake(1, 1, scaledToSize.width - 2, scaledToSize.height - 2)]; + UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + self.avatarImageView.backgroundColor = [UIColor colorWithPatternImage:newImage]; + self.postionLabel.text = [NSString stringWithFormat:@"%d", micState.position + 1]; + if (self.roomInfo.type == RoomType_Anchor || (self.roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode && self.roomInfo.roomId > 0) || (self.roomInfo.roomModeType == RoomModeType_Open_Blind && micState.position == 999)) { + self.positionCharmImgView.hidden = YES; + } +} + +- (void)configUser:(UserInfoModel *)userInfo { + self.userInfo = userInfo; + if ([ClientConfig shareConfig].canOpen) { + self.nickLabel.text = YMLocalizedString(@"MicroView0"); + self.postionLabel.hidden = NO; + } else { + self.nickLabel.text = YMLocalizedString(@"MicroView1"); + self.postionLabel.hidden = YES; + } + self.nickLabel.hidden = NO; + self.sexImageView.hidden = YES; + self.forbidKickView.hidden = YES; + if (userInfo) { + self.avatarImageView.imageUrl = userInfo.avatar; + if (userInfo.gender == GenderType_Male) { + [self.postionLabel setBackgroundColor:[DJDKMIMOMColor positionMaleNickBackColor]]; + } else if(userInfo.gender == GenderType_Female){ + [self.postionLabel setBackgroundColor:[DJDKMIMOMColor positionFemaleNickBackColor]]; + } + NSString *nickStr = userInfo.nick; + if (userInfo.nick.length > 5) { + nickStr = [NSString stringWithFormat:@"%@…", [userInfo.nick substringToIndex:5]]; + } + self.nickLabel.text = nickStr.length > 0 ? nickStr : @""; + if (userInfo.micNickColor.length) { + self.nickLabel.textColor = [self colorWithHexString:userInfo.micNickColor]; + } else { + self.nickLabel.textColor = [DJDKMIMOMColor positionNickColor]; + } + if (self.microModel.microState.position == -1) { + self.sexImageView.hidden = NO; + self.postionLabel.hidden = YES; + self.sexImageView.image = [UIImage imageNamed:userInfo.gender == GenderType_Male ? @"common_male" : @"common_female"]; + } + self.forbidKickView.hidden = !userInfo.preventKick; + } else { + self.nickLabel.textColor = [DJDKMIMOMColor positionNickColor]; + self.avatarImageView.image = nil; + [self.postionLabel setBackgroundColor:[DJDKMIMOMColor positionNormalNickBackColor]]; + if ([ClientConfig shareConfig].canOpen) { + if (self.microModel.microState.position == -1) { + self.nickLabel.hidden = YES; + self.postionLabel.hidden = YES; + } + } else { + self.nickLabel.hidden = YES; + } + } + NSString * headWearUrl = userInfo.headwearEffect.length ? userInfo.headwearEffect : userInfo.headWearUrl.length ? userInfo.headWearUrl : userInfo.headwearPic; + if (headWearUrl.length > 0 && !userInfo.vipMic) { + self.headWearImageView.hidden = NO; + NSURL *url = [NSURL URLWithString:userInfo.headWearUrl]; + @kWeakify(self); + [self.manager loadSpriteSheetImageWithURL:url completionBlock:^(YYSpriteSheetImage * _Nullable sprit) { + @kStrongify(self); + self.headWearImageView.image = sprit; + } failureBlock:^(NSError * _Nullable error) { + }]; + } else { + self.headWearImageView.hidden = YES; + } + + if (self.microModel.microState.position == -1) { + [self.giftValueView removeFromSuperview]; + [self.stackView addArrangedSubview:self.giftValueView]; + } + + self.groupTypeButton.hidden = YES; + if (self.roomInfo.roomModeType == RoomModeType_Open_PK_Mode) { + if (userInfo.groupType == GroupType_Red) { + self.groupTypeButton.hidden = NO; + [self.groupTypeButton setTitle:YMLocalizedString(@"MicroView2") forState:UIControlStateNormal]; + [self.groupTypeButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFC4A95), UIColorFromRGB(0xFE6075)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } else if(userInfo.groupType == GroupType_Blue) { + self.groupTypeButton.hidden = NO; + [self.groupTypeButton setTitle:YMLocalizedString(@"MicroView3") forState:UIControlStateNormal]; + [self.groupTypeButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0x3571FE), UIColorFromRGB(0x7994FC)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + } + } +} + +- (void)configGiftValue:(long long)giftValue { + self.giftValueView.giftValue = giftValue; +} + +- (void)showGiftValueMode:(BOOL)isGiftValue { + self.giftValueView.hidden = !isGiftValue; +} + +- (void)resetGiftValue { + self.giftValueView.giftValue = 0; +} + +- (void)configRoomInfo:(RoomInfoModel *)roomInfo { + self.roomInfo = roomInfo; +} + +- (RoomInfoModel *)getRoomInfo { + return self.roomInfo; +} + +- (void)configMicQueue:(NSMutableDictionary *)micQueue { + self.micQueue = micQueue; +} + + +- (NSMutableDictionary*)getMicroQueue { + return self.micQueue; +} + + +#pragma mark - Event Response +- (void)tapGiftValueRecognizer { + if (self.giftValueView.hidden) return; + if (self.userInfo && self.userInfo.uid > 0) { + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + webVC.roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; + if (self.roomInfo.leaveMode && self.userInfo.uid == self.roomInfo.uid) { ///离开模式 + webVC.url = [NSString stringWithFormat:@"%@?uid=%ld", URLWithType(kRoomCharmRankURL), self.microModel.userInfo.uid ? self.microModel.userInfo.uid : self.roomInfo.uid]; + } else { + webVC.url = [NSString stringWithFormat:@"%@?uid=%ld", URLWithType(kRoomCharmRankURL), self.microModel.userInfo.uid]; + } + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:webVC animated:YES]; + } +} + +- (UIColor *)colorWithHexString: (NSString *) hexString { + NSString *colorString = [[hexString stringByReplacingOccurrencesOfString: @"#" withString: @""] uppercaseString]; + CGFloat alpha, red, blue, green; + alpha = 1.0f; + red = [self colorComponentFrom: colorString start: 0 length: 2]; + green = [self colorComponentFrom: colorString start: 2 length: 2]; + blue = [self colorComponentFrom: colorString start: 4 length: 2]; + return [UIColor colorWithRed: red green: green blue: blue alpha: alpha]; +} + +- (CGFloat) colorComponentFrom: (NSString *) string start: (NSUInteger) start length: (NSUInteger) length { + NSString *substring = [string substringWithRange: NSMakeRange(start, length)]; + NSString *fullHex = length == 2 ? substring : [NSString stringWithFormat: @"%@%@", substring, substring]; + unsigned hexComponent; + [[NSScanner scannerWithString: fullHex] scanHexInt: &hexComponent]; + return hexComponent / 255.0; +} + +#pragma mark - Getters And Setters +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + _avatarImageView = [[NetImageView alloc] init]; + _avatarImageView.userInteractionEnabled = YES; + } + return _avatarImageView; +} + +- (UIImageView *)micStateImageView { + if (!_micStateImageView) { + _micStateImageView = [[UIImageView alloc] init]; + _micStateImageView.userInteractionEnabled = YES; + _micStateImageView.image = [UIImage imageNamed:@"room_position_mute"]; + _micStateImageView.hidden = YES; + } + return _micStateImageView; +} + +- (UIImageView *)forbidKickView { + if (!_forbidKickView) { + _forbidKickView = [[UIImageView alloc] init]; + _forbidKickView.image = [UIImage imageNamed:@"room_position_forbid_kicked"]; + _forbidKickView.hidden = YES; + } + return _forbidKickView; +} + +- (MicroWaveView *)animationView { + if (!_animationView) { + _animationView = [[MicroWaveView alloc] init]; + } + return _animationView; +} + +- (MicroNobleWaveView *)nobleWaveView { + if (!_nobleWaveView) { + _nobleWaveView = [[MicroNobleWaveView alloc] init]; + } + return _nobleWaveView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:11]; + _nickLabel.textColor = [DJDKMIMOMColor positionNickColor]; + _nickLabel.textAlignment = NSTextAlignmentCenter; + } + return _nickLabel; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentCenter; + _stackView.spacing = 2; + } + return _stackView; +} + +- (UILabel *)postionLabel { + if (!_postionLabel) { + _postionLabel = [[UILabel alloc] init]; + _postionLabel.font = [UIFont systemFontOfSize:10]; + _postionLabel.textAlignment = NSTextAlignmentCenter; + _postionLabel.textColor = [UIColor colorWithWhite:1 alpha:1]; + _postionLabel.layer.masksToBounds = YES; + _postionLabel.layer.cornerRadius = 7; + [_postionLabel setBackgroundColor:[DJDKMIMOMColor positionNormalNickBackColor]]; + } + return _postionLabel; +} + +- (UIImageView *)sexImageView { + if (!_sexImageView) { + _sexImageView = [[UIImageView alloc] init]; + _sexImageView.userInteractionEnabled = YES; + _sexImageView.hidden = YES; + } + return _sexImageView; +} + +- (UILabel *)leaveLabel { + if (!_leaveLabel) { + _leaveLabel = [[UILabel alloc] init]; + _leaveLabel .text = YMLocalizedString(@"MicroView4"); + _leaveLabel .font = [UIFont systemFontOfSize:16]; + _leaveLabel .textColor = UIColor.whiteColor; + _leaveLabel.textAlignment = NSTextAlignmentCenter; + _leaveLabel.backgroundColor = [UIColor colorWithWhite:0 alpha:0.45]; + _leaveLabel.layer.cornerRadius = 50 * kScreenScale / 2; + _leaveLabel.layer.masksToBounds = YES; + _leaveLabel.userInteractionEnabled = YES; + } + return _leaveLabel ; +} + +- (MicroGiftValueView *)giftValueView { + if (!_giftValueView) { + _giftValueView = [[MicroGiftValueView alloc] init]; + _giftValueView.hidden = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGiftValueRecognizer)]; + [_giftValueView addGestureRecognizer:tap]; + } + return _giftValueView; +} + +- (SpriteSheetImageManager *)manager { + if (!_manager) { + _manager = [[SpriteSheetImageManager alloc] init]; + } + return _manager; +} + +- (YYAnimatedImageView *)headWearImageView { + if (!_headWearImageView) { + _headWearImageView = [[YYAnimatedImageView alloc] init]; + _headWearImageView.backgroundColor = [UIColor clearColor]; + _headWearImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _headWearImageView; +} + +- (UIImageView *)faceImageView { + if (!_faceImageView) { + _faceImageView = [[UIImageView alloc] init]; + _faceImageView.backgroundColor = [UIColor clearColor]; + _faceImageView.userInteractionEnabled = YES; + } + return _faceImageView; +} + +- (UIButton *)groupTypeButton { + if (!_groupTypeButton) { + _groupTypeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_groupTypeButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _groupTypeButton.titleLabel.font = [UIFont systemFontOfSize:9.0]; + _groupTypeButton.layer.masksToBounds = YES; + _groupTypeButton.layer.cornerRadius = 8; + } + return _groupTypeButton; +} + +- (UIImageView *)positionCharmImgView { + if (!_positionCharmImgView) { + _positionCharmImgView = [[UIImageView alloc] init]; + _positionCharmImgView.userInteractionEnabled = NO; + _positionCharmImgView.hidden = YES; + } + return _positionCharmImgView; +} + + + +@end diff --git a/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroViewProtocol.h b/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroViewProtocol.h new file mode 100644 index 00000000..4eea5754 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroViewProtocol.h @@ -0,0 +1,96 @@ +// +// YMRoomPositionDataSourceProtocol.h +// YUMI +// +// Created by zu on 2021/10/27. +// + +#import +#import "MicroQueueModel.h" +#import "MicroStateModel.h" +#import "UserInfoModel.h" +#import "RoomInfoModel.h" +#import "RoomFaceSendInfoModel.h" +NS_ASSUME_NONNULL_BEGIN + +@protocol MicroViewProtocol +/** + 初始化子view + */ +- (void)initSubViews; + +/** + 给子view 添加约束 + */ +- (void)initSubViewConstraints; + +/** + * 离开模式。 + */ +- (void)showLeaveMode:(BOOL)isLeaveMode; + +/** + * 设置麦位信息和用户信息。 + */ +- (void)configMicroView:(MicroQueueModel *)model; + +/** + * 设置用户信息。 + */ +- (void)configUser:(UserInfoModel *)userInfo; + +/** + * 用户正在讲话(播放光圈)。 + */ +- (void)userSpeaking; + +/** + * 展示用户表情 + */ +- (void)showingFace:(RoomFaceSendInfoModel *)receiveInfo; + +/** + * 礼物值。 + */ +- (void)configGiftValue:(long long)giftValue; + +/** + * 礼物值模式 + */ +- (void)showGiftValueMode:(BOOL)isGiftValue; + +/** + * 礼物值清零 + */ +- (void)resetGiftValue; + +/** + * 设置房间信息房间的信息 + */ +- (void)configRoomInfo:(RoomInfoModel *)roomInfo; + +/** + * 获取当前房间的信息 + */ +- (RoomInfoModel *)getRoomInfo; + +/** + * 设置当前房间的麦序 + */ +- (void)configMicQueue:(NSMutableDictionary *)micQueue; +/** + 更新坑位等级头饰 + */ +- (void)updatePositionisHighLevel:(BOOL)isHighLevel isShow:(BOOL)isShow; + +/** + 重置头饰 + */ +- (void)resetPositonLevelHeadwear; +/** + * 获取当前的麦序 + */ +- (NSMutableDictionary*)getMicroQueue; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroWaveView.h b/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroWaveView.h new file mode 100644 index 00000000..d2c7c5b2 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroWaveView.h @@ -0,0 +1,20 @@ +// +// MicroWaveView.h +// YUMI +// +// Created by YUMI on 2021/10/20. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface MicroWaveView : UIView +///开始展示声波动画 +- (void)startWaveAnimation; + +///结束声波动画 +- (void)stopWaveAnimation; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroWaveView.m b/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroWaveView.m new file mode 100644 index 00000000..739e96b7 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroWaveView.m @@ -0,0 +1,116 @@ +// +// MicroWaveView.m +// YUMI +// +// Created by YUMI on 2021/10/20. +// + +#import "MicroWaveView.h" +///Third +#import +#import + +@interface MicroWaveView () +//声波动画图层 +@property (nonatomic,strong) UIView * firstView; +//是否正在动画中 +@property (nonatomic,assign) BOOL isAnimationing; + +@end + +@implementation MicroWaveView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + self.firstView.layer.cornerRadius = self.frame.size.width / 2; +} + +#pragma mark - Public Method +///开始展示声波动画 +- (void)startWaveAnimation { + if (self.isAnimationing) { + return; + } + self.isAnimationing = YES; + self.firstView.hidden = NO; + [self animationWithLayer:self.firstView]; + +} +///结束声波动画 +- (void)stopWaveAnimation { + self.isAnimationing = NO; + self.firstView.hidden = YES; + [self.firstView.layer removeAllAnimations]; +} + + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.firstView]; + self.firstView.hidden = YES; +} + + +- (void)initSubViewConstraints { + [self.firstView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; +} + +- (void)animationWithLayer:(UIView *)view { + int animtionDura = 1; + POPBasicAnimation *animation2 = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerScaleXY]; + animation2.beginTime = CACurrentMediaTime(); + animation2.duration = animtionDura; + animation2.fromValue = [NSValue valueWithCGSize:CGSizeMake(1.f, 1.f)]; + animation2.toValue = [NSValue valueWithCGSize:CGSizeMake(1.4f, 1.4f)]; + + POPBasicAnimation *animation3 = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerOpacity]; + animation3.duration = 0.6 * animtionDura; + animation3.beginTime = CACurrentMediaTime(); + animation3.fromValue = @1.0; + animation3.toValue = @0.8; + animation3.repeatCount = 1; + animation3.removedOnCompletion = YES; + + POPBasicAnimation *animation4 = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerOpacity]; + animation4.duration = 0.4* animtionDura; + animation4.beginTime = CACurrentMediaTime() + 0.6 * animtionDura; + animation4.fromValue = @0.8; + animation4.toValue = @0.0; + animation4.repeatCount = 1; + animation4.removedOnCompletion = YES; + + if (view == self.firstView) { + [animation4 setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + self.isAnimationing = NO; + }]; + } + + [view.layer pop_addAnimation:animation2 forKey:@"animation2"]; + [view.layer pop_addAnimation:animation3 forKey:@"animation3"]; + [view.layer pop_addAnimation:animation4 forKey:@"animation4"]; + + +} +#pragma mark - Getters And Setters +- (UIView *)firstView { + if (!_firstView) { + _firstView = [[UIView alloc] init]; + _firstView.backgroundColor = [UIColor colorWithWhite:1 alpha:0.3]; + _firstView.layer.borderWidth = 1; + _firstView.layer.borderColor = [UIColor whiteColor].CGColor; + } + return _firstView; +} +@end diff --git a/YuMi/Modules/YMRoom/View/StageView/MicroView/SocialMicroView.h b/YuMi/Modules/YMRoom/View/StageView/MicroView/SocialMicroView.h new file mode 100644 index 00000000..bcebd3e4 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/MicroView/SocialMicroView.h @@ -0,0 +1,16 @@ +// +// SocialMicroView.h +// YUMI +// +// Created by YUMI on 2022/4/27. +// + +#import "MicroView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface SocialMicroView : MicroView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/StageView/MicroView/SocialMicroView.m b/YuMi/Modules/YMRoom/View/StageView/MicroView/SocialMicroView.m new file mode 100644 index 00000000..1de100d0 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/MicroView/SocialMicroView.m @@ -0,0 +1,63 @@ +// +// SocialMicroView.m +// YUMI +// +// Created by YUMI on 2022/4/27. +// + +#import "SocialMicroView.h" +#import "ThemeColor+Room.h" +#import "ClientConfig.h" +@interface SocialMicroView () + +///当前坑位 +@property (nonatomic, assign) NSInteger position; + +@end + +@implementation SocialMicroView + +- (void)configMicroView:(MicroQueueModel *)model { + self.position = model.microState.position; + [super configMicroView:model]; + MicroStateModel * micState = model.microState; + UserInfoModel * userInfo = model.userInfo; + + if ([ClientConfig shareConfig].canOpen && userInfo == nil && micState.position == 7) { + self.nickLabel.text = YMLocalizedString(@"SocialMicroView0"); + } + UIImage *image; + if (micState.posState == MicroPosStateType_Free) { + if ([ClientConfig shareConfig].canOpen) { + image = [UIImage imageNamed:@"room_position_normal"]; + }else{ + image = [UIImage imageNamed:@"room_position_normal1"]; + } + } else { + if ([ClientConfig shareConfig].canOpen) { + image = [UIImage imageNamed:@"room_position_lock"]; + }else{ + image = [UIImage imageNamed:@"room_position_lock1"]; + } + } + if ([ClientConfig shareConfig].canOpen && micState.position == 7 && self.getRoomInfo.roomModeType != RoomModeType_Open_PK_Mode) { + image = [UIImage imageNamed:@"room_position_boss"]; + } + CGSize scaledToSize = CGSizeMake(self.frame.size.width, self.frame.size.width); + UIGraphicsBeginImageContextWithOptions(scaledToSize, false, 0.0); + // 缩小 “1” 点儿,防止默认背景的边缘被裁减。 + [image drawInRect:CGRectMake(1, 1, scaledToSize.width - 2, scaledToSize.height - 2)]; + UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + self.avatarImageView.backgroundColor = [UIColor colorWithPatternImage:newImage]; +} + +- (void)configUser:(UserInfoModel *)userInfo { + [super configUser:userInfo]; + if (self.position == 7) { + [self.postionLabel setBackgroundColor:[DJDKMIMOMColor positionBossBackEndColor]]; + + } +} + +@end diff --git a/YuMi/Modules/YMRoom/View/StageView/Model/MicroExtModel.h b/YuMi/Modules/YMRoom/View/StageView/Model/MicroExtModel.h new file mode 100644 index 00000000..ecbdebb9 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/Model/MicroExtModel.h @@ -0,0 +1,41 @@ +// +// MicroExtModel.h +// YUMI +// +// Created by YUMI on 2022/1/18. +// + +#import +#import "YUMINNNN.h" +#import "UserVipInfoVo.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MicroExtModel : NSObject +/// +@property (nonatomic,assign) GenderType gender; +/// +@property (nonatomic,copy) NSString *avatar; +/// +@property (nonatomic,assign) NSInteger uid; +/// +@property (nonatomic,copy) NSString *nick; +/// +@property (nonatomic,copy) NSString *headWearUrl; +/// +@property (nonatomic,assign) BOOL vipMic; +///麦位光圈链接 +@property (nonatomic, copy) NSString *micCircle; +///麦位昵称颜色 +@property (nonatomic, copy) NSString *micNickColor; +/// 小游戏状态 0 未加入游戏;1 加入游戏未准备;2 加入游戏已准备 3 游戏中 +@property (nonatomic, assign) LittleGamePlayStatus gameStatus; +///是否防被踢 +@property (nonatomic, assign) BOOL preventKick; +///是否隐身进房 +@property (nonatomic, assign) BOOL enterHide; +///pk的类型 +@property (nonatomic,assign) GroupType groupType; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/StageView/Model/MicroExtModel.m b/YuMi/Modules/YMRoom/View/StageView/Model/MicroExtModel.m new file mode 100644 index 00000000..3a7f6d9d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/Model/MicroExtModel.m @@ -0,0 +1,12 @@ +// +// MicroExtModel.m +// YUMI +// +// Created by YUMI on 2022/1/18. +// + +#import "MicroExtModel.h" + +@implementation MicroExtModel + +@end diff --git a/YuMi/Modules/YMRoom/View/StageView/Model/MicroInviteExtModel.h b/YuMi/Modules/YMRoom/View/StageView/Model/MicroInviteExtModel.h new file mode 100644 index 00000000..ee9addce --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/Model/MicroInviteExtModel.h @@ -0,0 +1,20 @@ +// +// MicroInviteExtModel.h +// YUMI +// +// Created by YUMI on 2022/5/12. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface MicroInviteExtModel : NSObject + +@property (nonatomic, copy) NSString *uid; + +@property (nonatomic, copy) NSString *micPosition; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/StageView/Model/MicroInviteExtModel.m b/YuMi/Modules/YMRoom/View/StageView/Model/MicroInviteExtModel.m new file mode 100644 index 00000000..09ba0b33 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/Model/MicroInviteExtModel.m @@ -0,0 +1,12 @@ +// +// MicroInviteExtModel.m +// YUMI +// +// Created by YUMI on 2022/5/12. +// + +#import "MicroInviteExtModel.h" + +@implementation MicroInviteExtModel + +@end diff --git a/YuMi/Modules/YMRoom/View/StageView/Model/MicroQueueModel.h b/YuMi/Modules/YMRoom/View/StageView/Model/MicroQueueModel.h new file mode 100644 index 00000000..9056312e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/Model/MicroQueueModel.h @@ -0,0 +1,19 @@ +// +// MicroQueueModel.h +// YUMI +// +// Created by YUMI on 2021/10/21. +// + +#import "NSObject+MJExtension.h" +#import "MicroStateModel.h" +NS_ASSUME_NONNULL_BEGIN +@class UserInfoModel; +@interface MicroQueueModel : NSObject +///麦序的状态 +@property (nonatomic, strong) MicroStateModel *microState; +///麦序上是否有人 +@property (nonatomic, strong, nullable) UserInfoModel *userInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/StageView/Model/MicroQueueModel.m b/YuMi/Modules/YMRoom/View/StageView/Model/MicroQueueModel.m new file mode 100644 index 00000000..b0c7b24b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/Model/MicroQueueModel.m @@ -0,0 +1,12 @@ +// +// MicroQueueModel.m +// YUMI +// +// Created by YUMI on 2021/10/21. +// + +#import "MicroQueueModel.h" + +@implementation MicroQueueModel + +@end diff --git a/YuMi/Modules/YMRoom/View/StageView/Model/MicroStateModel.h b/YuMi/Modules/YMRoom/View/StageView/Model/MicroStateModel.h new file mode 100644 index 00000000..8bcd7545 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/Model/MicroStateModel.h @@ -0,0 +1,41 @@ +// +// MicroStateModel.h +// YUMI +// +// Created by YUMI on 2021/10/21. +// + +#import "NSObject+MJExtension.h" + +NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(NSInteger, MicroPosStateType) { + MicroPosStateType_Free = 0,///空闲 + MicroPosStateType_Lock = 1,///上锁 +}; + +typedef NS_ENUM(NSInteger, MicroMicStateType) { + MicroMicStateType_Open = 0,///开麦 + MicroMicStateType_Close = 1,///锁麦 +}; + +typedef NS_ENUM(NSUInteger, DatingMicType) { + ///默认的 + DatingMicType_Other = 0, + //男神 + DatingMicType_Male = 1, + //女神 + DatingMicType_Female = 2, +}; + +@interface MicroStateModel : NSObject +///坑位的序号 +@property (nonatomic, assign) int position; +///坑位状态 锁坑/开坑 +@property (nonatomic, assign) MicroPosStateType posState; +///麦序的状态 闭麦/开麦 +@property (nonatomic, assign) MicroMicStateType micState; +///相亲房的 男神女神位置的 1 男 2 女 本地字段 +@property (nonatomic,assign) DatingMicType datingMicType; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/StageView/Model/MicroStateModel.m b/YuMi/Modules/YMRoom/View/StageView/Model/MicroStateModel.m new file mode 100644 index 00000000..b230ea2c --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/Model/MicroStateModel.m @@ -0,0 +1,21 @@ +// +// MicroStateModel.m +// YUMI +// +// Created by YUMI on 2021/10/21. +// + +#import "MicroStateModel.h" + +@implementation MicroStateModel + +- (instancetype)init { + self = [super init]; + if (self) { + _posState = MicroPosStateType_Free; + _micState = MicroMicStateType_Open; + } + return self; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/StageView/SocialStageView.h b/YuMi/Modules/YMRoom/View/StageView/SocialStageView.h new file mode 100644 index 00000000..bfa2c2db --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/SocialStageView.h @@ -0,0 +1,16 @@ +// +// SocialStageView.h +// YUMI +// +// Created by zu on 2021/10/26. +// + +#import "StageView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface SocialStageView : StageView + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/StageView/SocialStageView.m b/YuMi/Modules/YMRoom/View/StageView/SocialStageView.m new file mode 100644 index 00000000..8259964a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/SocialStageView.m @@ -0,0 +1,106 @@ +// +// SocialStageView.m +// YUMI +// +// Created by zu on 2021/10/26. +// + +#import "SocialStageView.h" +#import "SocialMicroView.h" +#import "MicroGiftValueView.h" +#import "YUMIMacroUitls.h" +#import "RoomInfoModel.h" +#import "ClientConfig.h" +//房主距离顶部间距 +#define ownerTopMargin 35 +// 房主头像宽 58 + 光圈 5 +#define ownerWidth (45 + 5) * kScreenScale +// 昵称高12,距离头像间距 10 +#define ownerHeight (ownerWidth + 10 + 12) +// 下面 8 个坑位宽55 + 光圈 5 +#define mcWidth (45 + 5) * kScreenScale +#define mcHeight (mcWidth + 10 + 12 + 5+16) +// 左右 padding 20 +#define paddingH 22 * kScreenScale +// 房主与下面的坑位间隔 33 +#define marginV1 38 +// 下面 8 个坑位两两之间的间距 +#define marginH (KScreenWidth - paddingH * 2 - mcWidth * 4) / 3 +// 第一行坑位的顶部 +#define firstRowTop ownerHeight + marginV1 + ownerTopMargin +// 第一行坑位与第二行坑位的间距 +#define marginV2 15 +// 第一行坑位的顶部 +#define secondRowTop (firstRowTop + mcHeight + marginV2) + +@implementation SocialStageView + +- (NSInteger)countOfMircoView { + return 9; +} + +- (UIView *)microViewForIndex:(NSInteger)index { + UIView * microView = [super microViewForIndex:index]; + if (microView) { + return microView; + } + return [[SocialMicroView alloc]init]; +} + +/** + * | ◯ | * 房主头像宽 58 + 光圈 5 + * | 33 | * 房主与下面的坑位间隔 33 + * | 20 ◯ ◯ ◯ ◯ 20 | * 左右 padding 20 + * | 15 | * 上下两排间距 15 + * | ◯ ◯ ◯ ◯ | * 下面 8 个坑位宽55 + 光圈 5 + * * 昵称高12,距离头像间距 6 + */ +- (CGRect)rectForViewAtIndex:(NSInteger)index { + if (index == 0) { + return CGRectMake(KScreenWidth / 2 - ownerWidth / 2, ownerTopMargin, ownerWidth, ownerHeight); + } + + if (index >= 1 && index <= 4) { + return CGRectMake(paddingH + (mcWidth + marginH) * (index - 1), firstRowTop, mcWidth, mcHeight); + } + + if (index >= 5 && index < 9) { + return CGRectMake(paddingH + (mcWidth + marginH) * (index - 4 - 1), secondRowTop, mcWidth, mcHeight); + } + + return [super rectForViewAtIndex:index]; +} + +- (CGFloat)hightForStageView { + if ([ClientConfig shareConfig].canOpen) { + return ownerTopMargin + ownerHeight + marginV1 + mcHeight + marginV2 + mcHeight + marginV2; + } else { + return ownerTopMargin + ownerHeight + marginV1 + mcHeight + marginV2 + mcHeight + marginV2 - 20; + } + +} + +- (CGPoint)animationPointAtStageViewByUid:(NSString *)uid { + NSInteger index = [self getIndexByUid:uid]; + + CGPoint point = CGPointZero; + if (index == -1 && self.hostDelegate.getRoomInfo.leaveMode && self.hostDelegate.getRoomInfo.uid == uid.integerValue) { + point = CGPointMake(KScreenWidth / 2, ownerWidth / 2 - 10 + ownerTopMargin); + } + + if (index == 0) { + point = CGPointMake(KScreenWidth / 2, ownerWidth / 2 - 10 + ownerTopMargin); + } + + if (index >= 1 && index <= 4) { + point = CGPointMake(paddingH + (mcWidth + marginH) * (index - 1) + mcWidth / 2, firstRowTop + mcWidth / 2- 10); + } + + if (index >= 5 && index <= 9) { + point = CGPointMake(paddingH + (mcWidth + marginH) * (index - 4 - 1) + mcWidth / 2, secondRowTop + mcWidth / 2 - 10); + } + point = [self convertPoint:point toView:nil]; + return point; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/StageView/StageView.h b/YuMi/Modules/YMRoom/View/StageView/StageView.h new file mode 100644 index 00000000..42a81c64 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/StageView.h @@ -0,0 +1,79 @@ +// +// StageView.h +// YUMI +// +// Created by zu on 2021/10/25. +// + +#import +#import "RoomHostDelegate.h" +#import "RoomGuestDelegate.h" +#import "MicroViewProtocol.h" + +NS_ASSUME_NONNULL_BEGIN + +@class MicroQueueModel; + +@protocol StageViewDelegate +/** + * 坑位数目 + */ +- (NSInteger)countOfMircoView; +/** + * 坑位区域的高度(宽度默认屏幕宽度) + */ +- (CGFloat)hightForStageView; +/** + * index 处的坑位 + */ +- (UIView *)microViewForIndex:(NSInteger)index; +/** + * index 处的坑位的区域 + */ +- (CGRect)rectForViewAtIndex:(NSInteger)index; +/** + * index 处的坑位点击事件 + */ +- (void)didSelectAtIndex:(NSInteger)index; +@end + +@protocol StageViewProtocol +/** + * 网易云信的麦序转成坑位的 index。 + */ +- (NSInteger)positionToIndex:(NSString*)position; +/** + * 坑位的 index 转成网易云信的麦序。 + */ +- (NSString *)indexToPosition:(NSInteger)index; +/** + * 根据 uid 获取该用户的坑位 index,如果 uid 没在坑位上返回 -1。 + */ +- (NSInteger)getIndexByUid:(NSString *)uid; +/** + * 根据 uid 查找该用户的坑位信息,用户不在麦位上将返回 nil。 + */ +- (MicroQueueModel *)findMicroInfoByUid:(NSString *)uid; +/** + * 根据 uid 查找该用户的上麦的坑位 View,用户不在麦位上将返回 nil。 + */ +- (UIView *)findMicroViewByUid:(NSString *)uid; +/** + * 根据 index 查找坑位 View。 + */ +- (UIView *)findMicroViewByIndex:(NSInteger)index; +/** + * 根据 position 查找坑位 View。 + */ +- (UIView *)findMicroViewByPosition:(NSString *)position; +@end + +@interface StageView : UIView + +@property (nonatomic, weak, readonly) id hostDelegate; + +- (instancetype)initWithDelegate:(id)delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/StageView/StageView.m b/YuMi/Modules/YMRoom/View/StageView/StageView.m new file mode 100644 index 00000000..9ac33769 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/StageView/StageView.m @@ -0,0 +1,892 @@ +// +// StageView.m +// YUMI +// +// Created by zu on 2021/10/25. +// + +#import "StageView.h" +#import +#import +#import +// Tools +#import "RtcManager.h" +#import "RtcDelegate.h" +#import "TTPopup.h" +#import "YUMIMacroUitls.h" +#import "XPGiftStorage.h" +#import "XNDJTDDLoadingTool.h" +#import "Api+Room.h" +#import "AccountInfoStorage.h" +#import "XPRoomMiniManager.h" +#import "StatisticsServiceHelper.h" +#import "NSArray+Safe.h" +#import "ClientConfig.h" +// Models +#import "RoomInfoModel.h" +#import "UserInfoModel.h" +#import "MicroStateModel.h" +#import "MicroQueueModel.h" +#import "AttachmentModel.h" +#import "GiftReceiveInfoModel.h" +#import "GiftValueInfoModel.h" +#import "MicroExtModel.h" +#import "RoomFaceSendInfoModel.h" +#import "MicroInviteExtModel.h" +#import "RoomPKChooseUserModel.h" +// Views +#import "NetImageView.h" +#import "XPUserCardViewController.h" +#import "XPRoomInviteUserViewController.h" + +@interface StageView() + +/** 云信麦序的 position 和本类 index 的关系。 + * + * **Note:** + * + * 网易云信返回的麦序(position)从 -1 开始。 + * - 使用者:MicroStateModel、self.micQueue 。 + * + * 麦位 View 的 index 从 0 开始。 + * - 使用者:StageViewDelegate、self.microViews 。 + */ +@property (nonatomic, strong) NSMutableArray *microViews; +@property (nonatomic, strong) NSMutableDictionary *micQueue; + +@property (nonatomic, weak) id hostDelegate; + +///是否是最小化进房 +@property (nonatomic,assign) BOOL isMiniEnter; +/** + * 是否正在上麦。 + * 防止快速点击连续上麦。 + */ +@property (nonatomic, assign) BOOL isUpingMic; +///是否已获取麦上用户信息,防止没获取到信息时点击上麦,把麦上的人挤下来 +@property (nonatomic, assign) BOOL hadGetQueueInfoSuccess; + +@end + +@implementation StageView + +- (instancetype)initWithDelegate:(id)delegate { + self = [super init]; + if (self) { + _hostDelegate = delegate; + _isMiniEnter = NO; + NSInteger microCount = self.countOfMircoView; + for (int i = 0; i < microCount; i++) { + UIView* microView = [self microViewForIndex:i]; + if (microView) { + microView.tag = i; + microView.frame = [self rectForViewAtIndex:i]; + [self addSubview:microView]; + UITapGestureRecognizer* tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(microViewTapped:)]; + [microView addGestureRecognizer:tap]; + [self.microViews insertObject:microView atIndex:i]; + } + } + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(self.hightForStageView); + }]; + + if (_hostDelegate.getRoomInfo) { + [self initRtc]; + [self initNIMMicroQueues]; + } else { + [self microQueueUpdated:NO]; + } + } + return self; +} + +#pragma mark - init functions +/** + * 既然是 initXXX,就不要随意调用或者添加逻辑。 + * 目前 init 要么在 [self initWithDelegate] ,要么在 [self onRoomEntered] 里面延迟初始化。因为初始化依赖房间信息。 + */ +- (void)initRtc { + RoomInfoModel* roomInfo = self.hostDelegate.getRoomInfo; + // 加入语音房间。 + RtcEngineType type; + if ([roomInfo.audioSdkType isEqualToString:@"wujie"]) { + type = RtcEngineType_WJ; + } else if ([roomInfo.audioSdkType isEqualToString:@"zego"]) { + type = RtcEngineType_Zego; + } else if ([roomInfo.audioSdkType isEqualToString:@"trtc"]) { + type = RtcEngineType_TRTC; + } else { + type = RtcEngineType_Agora; + } + [RtcManager initEngineWithType:type delegate:self]; + switch (type) { + /** + * 🐴 Agora + * 🐴 Zego + * 🦄️ TRTC + * TRTC,就你 🦄️ 不一样? + */ + case RtcEngineType_TRTC: + { + NSInteger roomId = roomInfo.roomId > INT_MAX ? roomInfo.uid : roomInfo.roomId; + [[RtcManager instance] enterRoom:[NSString stringWithFormat:@"%ld", roomId] trtcSign:roomInfo.trtcSig]; + } + break; + + default: + [[RtcManager instance] enterRoom:[NSString stringWithFormat:@"%ld", (long)roomInfo.roomId]]; + break; + } +} + +- (void)initNIMMicroQueues { + RoomInfoModel* roomInfo = self.hostDelegate.getRoomInfo; + // 获取麦位的状态,并初始化 self.micQueue 。 + [[NIMSDK sharedSDK].chatroomManager fetchChatroomInfo:[NSString stringWithFormat:@"%ld", (long)roomInfo.roomId] completion:^(NSError * _Nullable error, NIMChatroom * _Nullable chatroom) { + if (error) { + return; + } + NSDictionary *info = (NSDictionary *)[chatroom.ext toJSONObject]; + NSDictionary *micState = [info[@"micQueue"] toJSONObject]; + for (NSString *position in micState.allKeys) { + MicroStateModel *state = [MicroStateModel modelWithJSON:micState[position]]; + MicroQueueModel *sequence = [self.micQueue objectForKey:position]; + sequence.microState = state; + } + [self microQueueUpdated: NO]; + }]; + self.hadGetQueueInfoSuccess = NO; + // 获取麦位的用户,并初始化 self.micQueue 。 + [[NIMSDK sharedSDK].chatroomManager fetchChatroomQueue:[NSString stringWithFormat:@"%ld", (long)roomInfo.roomId] completion:^(NSError * _Nullable error, NSArray *> * _Nullable info) { + if (error) return; + BOOL ownerRTCChange = NO; + for (NSDictionary *item in info) { + UserInfoModel *userInfo = [UserInfoModel modelWithJSON:item.allValues.firstObject]; + NSString *position = item.allKeys.firstObject; + MicroQueueModel *sequence = [self.micQueue objectForKey:position]; + sequence.userInfo = userInfo; + if (userInfo.uid == [AccountInfoStorage instance].getUid.integerValue) { + ownerRTCChange = YES; + } + } + [self microQueueUpdated:ownerRTCChange]; + [self.hostDelegate onMicroQueueUpdate:self.micQueue]; + self.hadGetQueueInfoSuccess = YES; + }]; + + // 拿到麦序后初始化礼物值 + [self initGiftValue]; +} + +- (void)initGiftValue{ + RoomInfoModel* roomInfo = self.hostDelegate.getRoomInfo; + // 获取礼物值 + [Api roomMicroGiftValue:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + [self giftValueUpdate:data.data]; + } + } roomUid:[NSString stringWithFormat:@"%ld", roomInfo.uid] uid:[AccountInfoStorage instance].getUid]; +} + +#pragma mark - update views as data changed +/** 麦位状态或者卖上用户发生变化后,通过该方法刷新麦位的界面状态。 + * 且会根据当前用户和麦位状态等,决定音频推拉流。 + * + * **Note:** 也即意味着其他的方法(回调),仅更新 self.micQueue 数据。 + */ +- (void)microQueueUpdated:(BOOL)isHandleRTC { + BOOL selfNeedBroadcast = NO; + RoomInfoModel * roomInfo = self.hostDelegate.getRoomInfo; + if (![ClientConfig shareConfig].canOpen) { + roomInfo.showGiftValue = NO; + } + BOOL leaveMode = roomInfo.leaveMode; + NSMutableArray *statisMicArray = [NSMutableArray array]; + for (int i = 0; i < self.countOfMircoView; i++) { + MicroQueueModel * model = [self.micQueue objectForKey:[self indexToPosition:i]]; + + UIView * view = [self findMicroViewByIndex:i]; + [view configRoomInfo:roomInfo]; + [view configMicQueue:self.micQueue]; + [view configMicroView:model]; + [view showLeaveMode:i == 0 && leaveMode]; + if (leaveMode && i == 0) { + if (!roomInfo.showGiftValue) {//离开模式,大头位在隐藏礼物值时才重设礼物值 + [view resetGiftValue]; + } + } else { + if (model.userInfo == nil || !roomInfo.showGiftValue) [view resetGiftValue]; + } + [view showGiftValueMode:roomInfo.showGiftValue]; + if (self.hostDelegate.getUserInfo.uid && model.userInfo.uid == self.hostDelegate.getUserInfo.uid) { + selfNeedBroadcast = model.microState.micState == MicroMicStateType_Open; + if (model.microState.micState == MicroMicStateType_Close) { + [RtcManager instance].localMuted = YES; + } + if (roomInfo.type == RoomType_Anchor && [[AccountInfoStorage instance].getUid isEqualToString:[NSString stringWithFormat:@"%ld", roomInfo.uid]]) { + selfNeedBroadcast = YES;///个播房房主默认角色为主播 + } + } + if (model.userInfo) { + NSString *str = [NSString stringWithFormat:@"micIndex:%d,uid:%ld", i, model.userInfo.uid]; + [statisMicArray addObject:str]; + } + } + if (statisMicArray.count) { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_mike_show eventAttributes:@{@"roomMicShow": statisMicArray.toJSONString}]; + } + if (leaveMode) { + UserInfoModel *owner = [[UserInfoModel alloc] init]; + owner.avatar = roomInfo.avatar; + owner.nick = roomInfo.nick; + owner.uid = roomInfo.uid; + owner.gender = roomInfo.gender; + UIView *ownerView = [self findMicroViewByIndex:0]; + [ownerView configUser:owner]; + } + + if (self.isMiniEnter || !isHandleRTC) { + return; + } + [[RtcManager instance] broadcast:selfNeedBroadcast]; +} + +- (void)giftValueUpdate:(NSDictionary *)dic { + GiftValueInfoModel * model = [GiftValueInfoModel modelWithDictionary:dic]; + for (int i = 0; i < model.giftValueVos.count; i++) { + GiftValueDetailModel * giftValueModel = [model.giftValueVos safeObjectAtIndex1:i]; + UIView * view = [self findMicroViewByUid:giftValueModel.uid]; + if (self.hostDelegate.getRoomInfo.leaveMode && giftValueModel.uid.integerValue == self.hostDelegate.getRoomInfo.uid) { + view = [self findMicroViewByIndex:0]; + } + if (view == nil) continue; + [view configGiftValue:giftValueModel.giftValue]; + } + [self updatePostionItemWithRoomOnMicGiftValue:model]; +} + +/** + 更新坑位的等级头饰 + */ +- (void)updatePostionItemWithRoomOnMicGiftValue:(GiftValueInfoModel *)roomOnMicGiftValue{ + if (self.hostDelegate.getRoomInfo.type == RoomType_Anchor || self.hostDelegate.getRoomInfo.roomModeType == RoomModeType_Open_Blind) return; + // 过滤礼物值为0的 + NSMutableArray *validGifts = [NSMutableArray array]; + for (GiftValueDetailModel *value in roomOnMicGiftValue.giftValueVos) { + if (value.giftValue > 0) { + [validGifts addObject:value]; + } + } + if (validGifts.count == 0) return; + NSMutableArray *newOnMicGifts = [NSMutableArray array]; + // 过滤厅主 + for (GiftValueDetailModel *value in validGifts) { + for (MicroQueueModel *item in self.micQueue.allValues) { + BOOL isOwnerPosition = item.microState.position == -1; + if (!isOwnerPosition && item.userInfo.uid == value.uid.integerValue) { + [newOnMicGifts addObject:value]; + } + } + } + if (newOnMicGifts.count == 0) return; + // 排序 + NSSortDescriptor *giftValueSortD = [NSSortDescriptor sortDescriptorWithKey:@"giftValue" ascending:NO]; + NSArray *giftValuesSortArray = [[newOnMicGifts sortedArrayUsingDescriptors:@[giftValueSortD]] mutableCopy]; + NSString *highest = nil; + NSString *lowest = nil; + NSInteger sortArrayCount = giftValuesSortArray.count; + if (sortArrayCount == 1) { + highest = giftValuesSortArray.firstObject.uid; + }else if (sortArrayCount == 2) { + if (giftValuesSortArray.firstObject.giftValue != giftValuesSortArray.lastObject.giftValue) { + highest = giftValuesSortArray.firstObject.uid; + lowest = giftValuesSortArray.lastObject.uid; + } + }else{ + // 如果第一个和最后一个不相等 + if (giftValuesSortArray.firstObject.giftValue != giftValuesSortArray.lastObject.giftValue) { + // 如果第一个和第二个不相等,则必有最高 + if (giftValuesSortArray.firstObject.giftValue != giftValuesSortArray[1].giftValue) { + highest = giftValuesSortArray.firstObject.uid; + } + // 如果最后一个和倒数第二个不相等,则必有最低 + if (giftValuesSortArray.lastObject.giftValue != giftValuesSortArray[sortArrayCount-2].giftValue) { + lowest = giftValuesSortArray.lastObject.uid; + } + } + } + for (MicroQueueModel *item in self.micQueue.allValues) { + if (highest && item.userInfo.uid == highest.integerValue) { + UIView * view = [self findMicroViewByUid:highest]; + [view updatePositionisHighLevel:YES isShow:YES]; + continue; + } + if (lowest && item.userInfo.uid == lowest.integerValue) { + UIView * view = [self findMicroViewByUid:lowest]; + [view updatePositionisHighLevel:NO isShow:YES]; + } + } +} + +#pragma mark - RoomGuestDelegate +- (void)onRoomMiniEntered { + self.isMiniEnter = YES; + RoomInfoModel* roomInfo = self.hostDelegate.getRoomInfo; + // 加入语音房间。 + RtcEngineType type; + if ([roomInfo.audioSdkType isEqualToString:@"wujie"]) { + type = RtcEngineType_WJ; + } else if ([roomInfo.audioSdkType isEqualToString:@"zego"]) { + type = RtcEngineType_Zego; + } else if ([roomInfo.audioSdkType isEqualToString:@"trtc"]) { + type = RtcEngineType_TRTC; + } else { + type = RtcEngineType_Agora; + } + [RtcManager initEngineWithType:type delegate:self]; + [self microQueueUpdated:NO]; + [self initNIMMicroQueues]; +} + +- (void)onRoomEntered { + self.isMiniEnter = NO; + ///这行代码是为了 拿到房间信息的时候已经确定了是否显示礼物值 如果等到进房成功之后在显示的话可能会有一点卡顿的感觉@fengshuo + [self microQueueUpdated:NO]; + [self initRtc]; + [self initNIMMicroQueues]; +} + +- (NSMutableDictionary *)getMicroQueue { + return self.micQueue; +} + +- (void)onRoomUpdate { + self.isMiniEnter = NO; +// [self microQueueUpdated]; +} + +- (void)handleNIMNotificationMessage:(NIMMessage *)message { + NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; + NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; + BOOL microQueueChanged = NO; + BOOL ownerRTCChanged = NO; + switch (content.eventType) { + case NIMChatroomEventTypeInfoUpdated: // 麦序状态更新 + { + NSDictionary *data = [content.notifyExt toJSONObject]; + int type = [data[@"type"] intValue]; + NSArray* microStates; + switch (type) { + case 2: + microStates = @[[MicroStateModel modelWithJSON:data[@"micInfo"]]]; + break; + case 3: + microStates = [MicroStateModel modelsWithArray:data[@"micInfo"]]; + break; + } + if (microStates && microStates.count > 0) { + for (MicroStateModel *microState in microStates) { + MicroQueueModel *micSequence = [self.micQueue objectForKey:[NSString stringWithFormat:@"%d", microState.position]]; + micSequence.microState = microState; + } + microQueueChanged = YES; + } + } + break; + + case NIMChatroomEventTypeQueueChange: // 麦序上下麦 + { + NSDictionary* data = (NSDictionary *)content.ext; + NSString* position = [data objectForKey:NIMChatroomEventInfoQueueChangeItemKey]; + UserInfoModel* userInfo = [UserInfoModel modelWithJSON:[data objectForKey:NIMChatroomEventInfoQueueChangeItemValueKey]]; + NSInteger changeType = [data[NIMChatroomEventInfoQueueChangeTypeKey] integerValue]; + if (userInfo.uid == [AccountInfoStorage instance].getUid.integerValue) { + ownerRTCChanged = YES; + } + // 先清除该用户旧的麦位 + for (MicroQueueModel *sequence in self.micQueue.allValues) { + if (userInfo.uid == sequence.userInfo.uid) { + sequence.userInfo = nil; + } + } + + if (changeType == 1) { // 上麦 + MicroQueueModel *sequence = [self.micQueue objectForKey:position]; + sequence.userInfo = userInfo; + if (self.hostDelegate.getRoomInfo.showGiftValue && userInfo.uid == [AccountInfoStorage instance].getUid.integerValue) { + RoomInfoModel * roomInfo =self.hostDelegate.getRoomInfo; + NSString * roomUid = [NSString stringWithFormat:@"%ld", roomInfo.uid]; + NSString * uid = [NSString stringWithFormat:@"%ld", userInfo.uid]; + [Api roomGiftValueUpMic:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + NIMMessage * message = [[NIMMessage alloc] init]; + AttachmentModel * attachMent = [[AttachmentModel alloc] init]; + attachMent.first = CustomMessageType_Room_GiftValue; + attachMent.second = Custom_Message_Sub_Room_GiftValue_Sync; + attachMent.data = data.data; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachMent; + message.messageObject = object; + //构造会话 + NSString * sessionId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; + } + } roomUid:roomUid micUid:uid position:position uid:uid]; + } + //如果是当前用户上麦,关闭自己的麦克风 + if (sequence && sequence.userInfo.uid == [AccountInfoStorage instance].getUid.integerValue) { + [RtcManager instance].localMuted = YES; + } + } + + microQueueChanged = YES; + } + break; + case NIMChatroomEventTypeExit: + case NIMChatroomEventTypeKicked: + { + for (NIMChatroomNotificationMember *member in content.targets) { + for (MicroQueueModel *sequence in self.micQueue.allValues) { + if (member.userId.integerValue == sequence.userInfo.uid) { + sequence.userInfo = nil; + microQueueChanged = YES; + } + } + } + } + break; + default: + break; + } + + if (microQueueChanged) { + self.isMiniEnter = NO; + [self microQueueUpdated:ownerRTCChanged]; + [self.hostDelegate onMicroQueueUpdate:self.micQueue]; + } +} + +- (void)handleNIMCustomMessage:(NIMMessage *)message { + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) { + AttachmentModel *attachment = (AttachmentModel *)obj.attachment; + if(attachment.first == CustomMessageType_Queue && attachment.second == Custom_Message_Sub_Queue_Invite) { + NSDictionary *dic = attachment.data; + MicroInviteExtModel *inviteModel = [MicroInviteExtModel modelWithDictionary:dic]; + if (inviteModel.uid.integerValue == self.hostDelegate.getUserInfo.uid) { + NSString *position = inviteModel.micPosition; + + MicroQueueModel *micro = [self.micQueue objectForKey:position]; + if (!micro || micro.userInfo) return; // 当前麦位有人,什么都不做。 + + RoomInfoModel* roomInfo = self.hostDelegate.getRoomInfo; + NSString* roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + UserInfoModel* userInfo = self.hostDelegate.getUserInfo; + + NIMChatroomQueueUpdateRequest *request = [[NIMChatroomQueueUpdateRequest alloc]init]; + request.key = position; + request.value = [[self userInfoToQueueExt:userInfo] toJSONString]; + request.roomId = roomId; + request.transient = YES; + + [[NIMSDK sharedSDK].chatroomManager updateChatroomQueueObject:request completion:^(NSError * _Nullable error) { + if (error) return; + [RtcManager instance].localMuted = YES; + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.title = YMLocalizedString(@"StageView0"); + config.message = @"你已被房主或管理员拉上麦,但并未开启麦克风。如需要说话,请打开麦克风。"; + [TTPopup alertWithConfig:config confirmHandler:^{ + + } cancelHandler:^{ + + }]; + }]; + } + } else if(attachment.first == CustomMessageType_Room_GiftValue && attachment.second == Custom_Message_Sub_Room_GiftValue_Sync) { + [self giftValueUpdate:attachment.data]; + } else if(attachment.first == CustomMessageType_Gift && (attachment.second == Custom_Message_Sub_Gift_Send || attachment.second == Custom_Message_Sub_Gift_LuckySend || attachment.second == Custom_Message_Sub_Gift_ChannelNotify)) { + [self giftValueUpdate:attachment.data]; + }else if(attachment.first == CustomMessageType_AllMicroSend && (attachment.second == Custom_Message_Sub_AllMicroSend || attachment.second == Custom_Message_Sub_AllBatchSend || attachment.second == Custom_Message_Sub_AllMicroLuckySend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend)) { + [self giftValueUpdate:attachment.data]; + } else if (attachment.first == CustomMessageType_Face && attachment.second == Custom_Message_Sub_Face_Send) { + [self showUserFace:attachment.data]; + }else if (attachment.first == CustomMessageType_Room_PK && attachment.second == Custom_Message_Sub_Room_PK_Manager_Up_Mic) { + NSDictionary * dic = attachment.data; + ///更新麦序 + NSString * uid = [AccountInfoStorage instance].getUid; + if (dic.allKeys.count > 0 && [dic.allKeys containsObject:uid] && [dic objectForKey:uid]) { + RoomPKChooseUserModel * pkUserInfo = [RoomPKChooseUserModel modelWithDictionary:[dic objectForKey:uid]]; + NSString * position = [NSString stringWithFormat:@"%d", pkUserInfo.position]; + NSString* roomId = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.roomId]; + MicroQueueModel *micro = [self.micQueue objectForKey:position]; + if (micro && micro.userInfo && micro.userInfo.uid != pkUserInfo.uid.integerValue) return; + UserInfoModel * userInfo = self.hostDelegate.getUserInfo; + userInfo.groupType = pkUserInfo.groupType; + NIMChatroomQueueUpdateRequest *request = [[NIMChatroomQueueUpdateRequest alloc]init]; + request.key = position; + request.value = [[self userInfoToQueueExt:userInfo] toJSONString]; + request.roomId = roomId; + request.transient = YES; + [[NIMSDK sharedSDK].chatroomManager updateChatroomQueueObject:request completion:^(NSError * _Nullable error) { + if (error) return; + }]; + } + } + } +} + +#pragma mark - RtcDelegate - 讲话的波纹回调 +- (void)usersSpeaking:(NSMutableArray *)uids { + if ([RtcManager instance].isRemoteMuted) { + return; + } + for (NSString* uid in uids) { + if ([RtcManager instance].isLocalMuted && uid.integerValue == self.hostDelegate.getUserInfo.uid) { + continue; + } + UIView* microView = [self findMicroViewByUid:uid]; + if (microView) { + [microView userSpeaking]; + } + } +} + +#pragma mark - 表情 +- (void)showUserFace:(NSDictionary *)faceDic { + if ([faceDic[@"data"] isKindOfClass:[NSArray class]]) { + NSArray *arr = faceDic[@"data"]; + for (int i = 0; i < arr.count; i++) { + NSDictionary *dict = [arr safeObjectAtIndex1:i]; + RoomFaceSendInfoModel * receiveInfo = [RoomFaceSendInfoModel modelWithDictionary:dict]; + UIView * view = [self findMicroViewByUid:[NSString stringWithFormat:@"%ld",receiveInfo.uid]]; + if (view == nil) continue; + [view showingFace:receiveInfo]; + } + } + +} + +#pragma mark - StageViewDelegate - 留给子 View 重写的模板方法 +- (void)didSelectAtIndex:(NSInteger)index { + + MicroQueueModel* micModel = [self.micQueue objectForKey:[self indexToPosition:index]]; + UserInfoModel* userInfo = self.hostDelegate.getUserInfo; + RoomInfoModel* roomInfo = self.hostDelegate.getRoomInfo; + NSString* position = [self indexToPosition:index]; + NSString* uid = [NSString stringWithFormat:@"%ld", userInfo.uid]; + NSString* roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + + // 1. 麦位上有人,弹窗用户资料卡 + NSString * targetUid; + if (roomInfo.leaveMode && [position isEqualToString:@"-1"]) { + targetUid = [NSString stringWithFormat:@"%ld", roomInfo.uid]; + } + if (micModel.userInfo && micModel.userInfo.uid > 0) { + targetUid = [NSString stringWithFormat:@"%ld", micModel.userInfo.uid]; + } + + if (targetUid && targetUid.length > 0) { + if ([ClientConfig shareConfig].canOpen) { + XPUserCardInfoModel * model = [[XPUserCardInfoModel alloc] init]; + model.uid = targetUid; + model.position = position; + model.posState = micModel.microState.posState; + model.micState = micModel.microState.micState; + model.nick = userInfo.nick; + model.roomInfo = roomInfo; + model.micQueue = self.micQueue; + model.delegate = self.hostDelegate; + model.superMangerList = self.hostDelegate.getRoomSuperAdminList; + XPUserCardViewController * userCardVC = [[XPUserCardViewController alloc] initWithUser:model]; + [self.hostDelegate.getCurrentNav presentViewController:userCardVC animated:YES completion:nil]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"userCard"}]; + } else { + // 2. 空麦位,上麦逻辑 + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = roomId; + request.userIds = @[uid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + NIMChatroomMember * member = members.firstObject; + if (!member) return; + // 2.1 管理员点击了空麦位 + if (member.type == NIMTeamMemberTypeOwner || member.type == NIMTeamMemberTypeManager) { + TTActionSheetConfig *lockMic = [TTActionSheetConfig normalTitle:YMLocalizedString(@"StageView2") clickAction:^{ + NIMChatroomQueueRemoveRequest *request = [[NIMChatroomQueueRemoveRequest alloc]init]; + request.key = position; + request.roomId = roomId; + [[NIMSDK sharedSDK].chatroomManager removeChatroomQueueObject:request completion:^(NSError * _Nullable error, NSDictionary * _Nullable element) { + NSLog(@"%@", error); + }]; + }]; + [TTPopup actionSheetWithItems:@[lockMic]]; + } + }]; + } + return; + } + + if (roomInfo.leaveMode && roomInfo.uid == [AccountInfoStorage instance].getUid.integerValue) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"StageView3")]; + return; + } + + // 2. 空麦位,上麦逻辑 + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = roomId; + request.userIds = @[uid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + NIMChatroomMember * member = members.firstObject; + if (!member) return; + + void(^nimUpQueue)(NSString*, BOOL) = ^ (NSString* up, BOOL isFromDownMic){ + if (!self.hadGetQueueInfoSuccess) { + return; + } + MicroQueueModel* micModel = [self.micQueue objectForKey:up]; + if (micModel.userInfo) {///麦上已经有人,不上麦 + [XNDJTDDLoadingTool showErrorWithMessage:@"该麦位已经有人了哦~"]; + return; + } + NIMChatroomQueueUpdateRequest *request = [[NIMChatroomQueueUpdateRequest alloc]init]; + request.key = up; + request.value = [[self userInfoToQueueExt:userInfo] toJSONString]; + request.roomId = roomId; + request.transient = YES; + [[NIMSDK sharedSDK].chatroomManager updateChatroomQueueObject:request completion:^(NSError * _Nullable error) { + if (isFromDownMic) { + self.isUpingMic = NO; + } + if (error) { + + } + }]; + }; + + /** + * @param firstDown 先下麦 + * @param nextUp 下麦成功后再上的麦位,为nil的时候代表不需要上麦 + */ + void(^nimDownQueue)(NSString*, NSString*) = ^ (NSString* firstDown, NSString* nextUp){ + NIMChatroomQueueRemoveRequest *request = [[NIMChatroomQueueRemoveRequest alloc]init]; + request.key = firstDown; + request.roomId = roomId; + [[NIMSDK sharedSDK].chatroomManager removeChatroomQueueObject:request completion:^(NSError * _Nullable error, NSDictionary * _Nullable element) { + if (!error && nextUp) { + nimUpQueue(nextUp, YES); + } else { + self.isUpingMic = NO; + } + }]; + }; + + // 2.1 管理员点击了空麦位 + if (member.type == NIMTeamMemberTypeOwner || member.type == NIMTeamMemberTypeManager) { + // 2.1.1 上麦 + NSString * upTitle = YMLocalizedString(@"StageView5"); + if (![ClientConfig shareConfig].canOpen) { + upTitle = YMLocalizedString(@"StageView6"); + } + TTActionSheetConfig *upMic = [TTActionSheetConfig normalTitle:upTitle clickAction:^{ + NSString* selfUid = [NSString stringWithFormat:@"%ld", (long)self.hostDelegate.getUserInfo.uid]; + UIView* microView = [self findMicroViewByUid:selfUid]; + if (microView) { + nimDownQueue([self indexToPosition:microView.tag], position); + } else { + nimUpQueue(position, NO); + } + }]; + + // 2.1.2 锁麦/解锁 + NSString * lockTitle; + if (roomInfo.roomModeType == RoomModeType_Open_Micro_Mode) { + lockTitle = micModel.microState.posState == MicroPosStateType_Free ? @"切换为排麦" : YMLocalizedString(@"StageView8"); + }else { + lockTitle = micModel.microState.posState == MicroPosStateType_Free ? @"锁麦" : YMLocalizedString(@"StageView10"); + } + if (![ClientConfig shareConfig].canOpen) { + lockTitle = micModel.microState.posState == MicroPosStateType_Free ? @"锁定坑位" : YMLocalizedString(@"StageView12"); + } + TTActionSheetConfig *lockMic = [TTActionSheetConfig normalTitle:lockTitle clickAction:^{ + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; + NSString * state = micModel.microState.posState == MicroPosStateType_Free ? @"1" : @"0"; + NSString * ticket = [[AccountInfoStorage instance] getTicket]; + NSString * uid = [[AccountInfoStorage instance] getUid]; + [Api microLockCompletion:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + + } roomUid:roomUid state:state position:position ticket:ticket uid:uid]; + }]; + + // 2.1.3 闭麦/开麦 + NSString * muteTitle = micModel.microState.micState == MicroMicStateType_Open ? @"闭麦" : YMLocalizedString(@"StageView14"); + if (![ClientConfig shareConfig].canOpen) { + muteTitle = micModel.microState.micState == MicroMicStateType_Open ? @"关闭麦位话筒" : YMLocalizedString(@"StageView16"); + } + TTActionSheetConfig *muteMic = [TTActionSheetConfig normalTitle:muteTitle clickAction:^{ + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; + NSString * state = micModel.microState.micState == MicroMicStateType_Open ? @"1" : @"0"; + NSString * ticket = [[AccountInfoStorage instance] getTicket]; + NSString * uid = [[AccountInfoStorage instance] getUid]; + [Api microMuteCompletion:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + + } roomUid:roomUid state:state position:position ticket:ticket uid:uid]; + }]; + + // 抱Ta上麦 + NSString * inviteTitle = ([position isEqualToString:@"-1"] && roomInfo.roomModeType == RoomModeType_Open_Blind) ? @"抱Ta上麦当主持" : YMLocalizedString(@"StageView18"); + TTActionSheetConfig *inviteMic = [TTActionSheetConfig normalTitle:inviteTitle clickAction:^{ + XPRoomInviteUserViewController * inviteUserMicVC = [[XPRoomInviteUserViewController alloc] init]; + inviteUserMicVC.isManagerOrOwner = ([position isEqualToString:@"-1"] && roomInfo.roomModeType == RoomModeType_Open_Blind); + inviteUserMicVC.roomId = roomId; + inviteUserMicVC.position = position; + inviteUserMicVC.blindDateVipUid = roomInfo.blindDateVipUid; + [self.hostDelegate.getCurrentNav pushViewController:inviteUserMicVC animated:YES]; + }]; + if ([ClientConfig shareConfig].canOpen) { + [TTPopup actionSheetWithItems:@[upMic,inviteMic, lockMic, muteMic]]; + } else { + [TTPopup actionSheetWithItems:@[ muteMic,upMic, lockMic]]; + } + + } else { + // 2.2 非管理员点击了空麦位 + if (micModel.microState.posState == MicroPosStateType_Lock) { + if (roomInfo.roomModeType == RoomModeType_Open_Micro_Mode) { + if ([self getIndexByUid:[AccountInfoStorage instance].getUid] != -1) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"StageView19")]; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:@"需要排麦才可以上麦哦~"]; + } + } + return; + }; + + NSString* selfUid = [NSString stringWithFormat:@"%ld", (long)self.hostDelegate.getUserInfo.uid]; + UIView* microView = [self findMicroViewByUid:selfUid]; + if (microView) { + if (self.isUpingMic) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"StageView21")]; + } else { + self.isUpingMic = YES; + nimDownQueue([self indexToPosition:microView.tag], position); + } + } else { + nimUpQueue(position, NO); + } + } + }]; +} + +- (NSInteger)countOfMircoView { + return 0; +} + +- (CGFloat)hightForStageView { + return 0; +} + +- (nonnull UIView *)microViewForIndex:(NSInteger)index { + return [self findMicroViewByIndex:index]; +} + +- (CGRect)rectForViewAtIndex:(NSInteger)index { + return CGRectZero; +} + +#pragma mark - StageViewProtocol - 基本上都是工具方法 +- (NSInteger)positionToIndex:(NSString*)position { + return position.intValue + 1; +} + +- (NSString *)indexToPosition:(NSInteger)index { + return [NSString stringWithFormat:@"%ld", (long)(index - 1)]; +} + +- (NSInteger)getIndexByUid:(NSString *)uid { + UIView * view = [self findMicroViewByUid:uid]; + if (view) { + return [self.microViews indexOfObject:view]; + } + return -1; +} + +- (MicroQueueModel *)findMicroInfoByUid:(NSString *)uid { + for (MicroQueueModel *model in self.micQueue.allValues) { + if (model.userInfo && model.userInfo.uid == uid.intValue) { + return model; + } + } + return nil; +} + +- (UIView *)findMicroViewByUid:(NSString *)uid { + for (int i = 0; i < self.countOfMircoView; i++) { + MicroQueueModel* model = [self.micQueue objectForKey:[self indexToPosition:i]]; + if (model.userInfo && model.userInfo.uid == uid.intValue) { + return [self findMicroViewByIndex:i]; + } + } + return nil; +} + +- (UIView *)findMicroViewByIndex:(NSInteger)index { + if (self.microViews && self.microViews.count > index) { + return [self.microViews safeObjectAtIndex1:index]; + } + return nil; +} + +- (UIView *)findMicroViewByPosition:(NSString *)position { + return [self findMicroViewByIndex:[self positionToIndex:position]]; +} + +#pragma mark - private utils function +/** + * 麦位更新扩展字段。 + */ +- (NSDictionary *)userInfoToQueueExt:(UserInfoModel *)userInfo { + MicroExtModel * extModel = [[MicroExtModel alloc] init]; + extModel.gender = userInfo.gender; + extModel.avatar = userInfo.avatar; + extModel.uid = userInfo.uid; + extModel.nick = userInfo.nick; + extModel.headWearUrl = userInfo.headwearEffect.length > 0 ? userInfo.headwearEffect : userInfo.headwearPic; + extModel.micCircle = userInfo.micCircle; + extModel.micNickColor = userInfo.micNickColor; + extModel.preventKick = userInfo.userVipInfoVO.preventKick; + extModel.enterHide = userInfo.userVipInfoVO.enterHide; + extModel.groupType = userInfo.groupType; + return [extModel model2dictionary]; +} + +/** + * 麦位的点击响应入口。 + */ +- (void)microViewTapped:(UITapGestureRecognizer *)sender { + [self didSelectAtIndex:sender.view.tag]; +} + +- (NSMutableArray *)microViews { + if (!_microViews) { + _microViews = [NSMutableArray arrayWithCapacity:self.countOfMircoView]; + } + return _microViews; +} + +- (NSMutableDictionary *)micQueue { + if (!_micQueue) { + _micQueue= [NSMutableDictionary dictionary]; + for (int i = 0; i < self.countOfMircoView; i++) { + NSString* position = [self indexToPosition:i]; + MicroQueueModel *micSequence = [[MicroQueueModel alloc]init]; + micSequence.userInfo = nil; + micSequence.microState = [[MicroStateModel alloc]init]; + micSequence.microState.position = [position intValue]; + [self.micQueue setObject:micSequence forKey:position]; + } + } + return _micQueue; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/TaskTip/XPTaskCompleteTipView.h b/YuMi/Modules/YMRoom/View/TaskTip/XPTaskCompleteTipView.h new file mode 100644 index 00000000..6f00dab4 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/TaskTip/XPTaskCompleteTipView.h @@ -0,0 +1,20 @@ +// +// YMTaskCompleteTipView.h +// YUMI +// +// Created by YUMI on 2022/8/2. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPTaskCompleteTipView : UIView + +@property (nonatomic, copy) NSString *desc; + +@property (nonatomic, copy) NSString *url; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/TaskTip/XPTaskCompleteTipView.m b/YuMi/Modules/YMRoom/View/TaskTip/XPTaskCompleteTipView.m new file mode 100644 index 00000000..589fbe80 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/TaskTip/XPTaskCompleteTipView.m @@ -0,0 +1,107 @@ +// +// YMTaskCompleteTipView.m +// YUMI +// +// Created by YUMI on 2022/8/2. +// + +#import "XPTaskCompleteTipView.h" +///tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "UIImage+Utils.h" +///Third +#import + +@interface XPTaskCompleteTipView() + +///背景 +@property (nonatomic, strong) UIImageView *mainView; +///昵称 +@property (nonatomic, strong) UILabel *nickLabel; +///昵称 +@property (nonatomic, strong) UILabel *gotoLabel; + +@end + + +@implementation XPTaskCompleteTipView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initContraints]; + } + return self; +} + +- (void)initSubViews { + [self addSubview:self.mainView]; + [self addSubview:self.nickLabel]; + [self addSubview:self.gotoLabel]; +} + +- (void)initContraints { + [self.mainView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.centerY.mas_equalTo(self); + make.height.mas_equalTo(20); + make.width.mas_equalTo(150); + }]; + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self); + make.left.mas_equalTo(self.mainView).mas_offset(15); + }]; + [self.gotoLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nickLabel.mas_right).mas_offset(4); + make.centerY.mas_equalTo(self.mainView); + }]; +} + +- (void)setDesc:(NSString *)desc { + _desc = desc; + if (desc.length) { + self.nickLabel.text = desc; + } +} + +- (void)setUrl:(NSString *)url { + _url = url; +} + +#pragma mark - getter +- (UIImageView *)mainView { + if (!_mainView) { + _mainView = [[UIImageView alloc] init]; + _mainView.layer.cornerRadius = 10; + _mainView.layer.masksToBounds = YES; + _mainView.image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0x5FCCE4), UIColorFromRGB(0xE15AFF)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(150, 20)]; + } + return _mainView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:12]; + label.textColor = UIColorRGBAlpha(0x000000, 0.5); + [label sizeToFit]; + label.text = YMLocalizedString(@"XPTaskCompleteTipView0"); + _nickLabel = label; + } + return _nickLabel; +} + +- (UILabel *)gotoLabel { + if (!_gotoLabel) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:12]; + label.textColor = [UIColor whiteColor]; + [label sizeToFit]; + label.text = YMLocalizedString(@"XPTaskCompleteTipView1"); + _gotoLabel = label; + } + return _gotoLabel; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/TaskTip/YUMImissionCompleteTipRegard.h b/YuMi/Modules/YMRoom/View/TaskTip/YUMImissionCompleteTipRegard.h deleted file mode 100644 index 37e400ed..00000000 --- a/YuMi/Modules/YMRoom/View/TaskTip/YUMImissionCompleteTipRegard.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// YMTaskCompleteTipView.h -// YUMI -// -// Created by YUMI on 2022/8/2. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMImissionCompleteTipRegard : UIView - -@property (nonatomic, copy) NSString *desc; - -@property (nonatomic, copy) NSString *url; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/TaskTip/YUMImissionCompleteTipRegard.m b/YuMi/Modules/YMRoom/View/TaskTip/YUMImissionCompleteTipRegard.m deleted file mode 100644 index 5326231a..00000000 --- a/YuMi/Modules/YMRoom/View/TaskTip/YUMImissionCompleteTipRegard.m +++ /dev/null @@ -1,102 +0,0 @@ -// -// YMTaskCompleteTipView.m -// YUMI -// -// Created by YUMI on 2022/8/2. -// - -#import "YUMImissionCompleteTipRegard.h" -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "UIImage+Utils.h" -#import - -@interface YUMImissionCompleteTipRegard() - -@property (nonatomic, strong) UIImageView *mainView; -@property (nonatomic, strong) UILabel *monicerSequencignation; -@property (nonatomic, strong) UILabel *gotoSequencignation; - -@end - - -@implementation YUMImissionCompleteTipRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initContraints]; - } - return self; -} - -- (void)initSubViews { - [self addSubview:self.mainView]; - [self addSubview:self.monicerSequencignation]; - [self addSubview:self.gotoSequencignation]; -} - -- (void)initContraints { - [self.mainView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.centerY.mas_equalTo(self); - make.height.mas_equalTo(20); - make.width.mas_equalTo(150); - }]; - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self); - make.left.mas_equalTo(self.mainView).mas_offset(15); - }]; - [self.gotoSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.monicerSequencignation.mas_right).mas_offset(4); - make.centerY.mas_equalTo(self.mainView); - }]; -} - -- (void)setDesc:(NSString *)desc { - _desc = desc; - if (desc.length) { - self.monicerSequencignation.text = desc; - } -} - -- (void)setUrl:(NSString *)url { - _url = url; -} - -#pragma mark - getter -- (UIImageView *)mainView { - if (!_mainView) { - _mainView = [[UIImageView alloc] init]; - _mainView.layer.cornerRadius = 10; - _mainView.layer.masksToBounds = YES; - _mainView.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0x5FCCE4), UIColorFromRGB(0xE15AFF)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(150, 20)]; - } - return _mainView; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:12]; - label.textColor = UIColorRGBAlpha(0x000000, 0.5); - [label sizeToFit]; - label.text = YMLocalizedString(@"YUMI_Task_Complete_Tip_View_0"); - _monicerSequencignation = label; - } - return _monicerSequencignation; -} - -- (UILabel *)gotoSequencignation { - if (!_gotoSequencignation) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:12]; - label.textColor = [UIColor whiteColor]; - [label sizeToFit]; - label.text = YMLocalizedString(@"YUMI_Task_Complete_Tip_View_1"); - _gotoSequencignation = label; - } - return _gotoSequencignation; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/ThemeColor+Room.h b/YuMi/Modules/YMRoom/View/ThemeColor+Room.h index 65372e03..21e6cffd 100644 --- a/YuMi/Modules/YMRoom/View/ThemeColor+Room.h +++ b/YuMi/Modules/YMRoom/View/ThemeColor+Room.h @@ -1,5 +1,5 @@ // -// ThemeColor+Room.h +// ThemeColorRoom.h // YUMI // // Created by zu on 2021/10/27. @@ -10,31 +10,54 @@ NS_ASSUME_NONNULL_BEGIN @interface DJDKMIMOMColor (Room) -+ (UIColor *)chamberOwnerMonicerPrettify; +///房主昵称的颜色 0xFFFFFF ++ (UIColor *)roomOwnerNickColor; -+ (UIColor *)chamberOnBurlywoodIdenPrettify; ++ (UIColor *)roomOnLineIdenColor; -+ (UIColor *)polariztowardsionMaleMonicerEncouragePrettify; -+ (UIColor *)polariztowardsionFemaleMonicerEncouragePrettify; -+ (UIColor *)polariztowardsionOrdinaryMonicerEncouragePrettify; -+ (UIColor *)polariztowardsionBossEncourageInititowardsePrettify; -+ (UIColor *)polariztowardsionBossEncourageConcludePrettify; -+ (UIColor *)polariztowardsionMonicerPrettify; -+ (UIColor *)communictowardsionIntumescePrettify; -+ (UIColor *)communictowardsionEssayPrettify; -+ (UIColor *)communictowardsionMonicerPrettify; -+ (UIColor *)communictowardsionDeficiencyEssayPrettify; -+ (UIColor *)communictowardsionRegardPromptPrettify; +///男用户的坑位的背景色 ++ (UIColor *)positionMaleNickBackColor; +///女用户的坑位的背景色 ++ (UIColor *)positionFemaleNickBackColor; +/// 没有用户的 坑位的背景色 ++ (UIColor *)positionNormalNickBackColor; +///老板位 坑位开始背景色 ++ (UIColor *)positionBossBackStartColor; +///老板位 坑位结束背景色 ++ (UIColor *)positionBossBackEndColor; +///坑位的昵称的颜色 0xFFFFFF ++ (UIColor *)positionNickColor; +// ------公屏相关颜色 Start------ / +///公屏默认背景的颜色 ++ (UIColor *)messageBubbleColor; +///公屏文字的颜色 ++ (UIColor *)messageTextColor; +///公屏名字的颜色 ++ (UIColor *)messageNickColor; +///默认的文字的颜色 ++ (UIColor *)messageDefaultTextColor; +///获取公屏提示 颜色 #FFFFFE 0.5 ++ (UIColor *)messageViewTipColor; +// ------公屏相关颜色 END------ / -+ (UIColor *)presentBroadcastDigitalPrettify; -+ (UIColor *)presentBroadcastMonicerPrettify; +// ------房间内礼物 Start------ / +///礼物广播显示 个数的颜色 #FEF563 ++ (UIColor *)giftBroadcastNumberColor; +///礼物广播 显示的名字的颜色 #2F0060 ++ (UIColor *)giftBroadcastNickColor; +// ------房间内礼物 End------ / -+ (UIColor *)confectioneryTimberDiamondPrettify; -+ (UIColor *)confectioneryTimberMonicerPrettify; -+ (UIColor *)confectioneryTimberDividerPrettify; +/// 糖果树记录钻石的颜色 ++ (UIColor *)candyTreeDiamondColor; +/// 糖果树名字的颜色 ++ (UIColor *)candyTreeNickColor; +/// 糖果树的分割线颜色 ++ (UIColor *)candyTreeDividerColor; -+ (UIColor *)brectifynessPresentDigitalPrettify; -+ (UIColor *)chamberFurthaerParrotEssayPrettify; +///动画礼物个数的颜色 0xFFF226 ++ (UIColor *)animationGiftNumberColor; +///更多menu文字颜色 0xFFFFFF ++ (UIColor *)roomMoreMenuTextColor; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/ThemeColor+Room.m b/YuMi/Modules/YMRoom/View/ThemeColor+Room.m index ae295805..5ef30db6 100644 --- a/YuMi/Modules/YMRoom/View/ThemeColor+Room.m +++ b/YuMi/Modules/YMRoom/View/ThemeColor+Room.m @@ -1,5 +1,5 @@ // -// ThemeColor+Room.m +// ThemeColorRoom.m // YUMI // // Created by zu on 2021/10/27. @@ -10,83 +10,104 @@ @implementation DJDKMIMOMColor (Room) #pragma mark -房间内相关的颜色 -+ (UIColor *)chamberOwnerMonicerPrettify { +///房主昵称的颜色 0xFFFFFF ++ (UIColor *)roomOwnerNickColor { return UIColorFromRGB(0xFFFFFF); } -+ (UIColor *)chamberOnBurlywoodIdenPrettify { ++ (UIColor *)roomOnLineIdenColor { return UIColorFromRGB(0x3EFED7); } -+ (UIColor *)polariztowardsionMaleMonicerEncouragePrettify { +///男用户的坑位的背景色 ++ (UIColor *)positionMaleNickBackColor { return UIColorFromRGB(0x3EBBFE); } -+ (UIColor *)polariztowardsionFemaleMonicerEncouragePrettify { +///女用户的坑位的背景色 ++ (UIColor *)positionFemaleNickBackColor { return UIColorFromRGB(0xFF5E83); } -+ (UIColor *)polariztowardsionMonicerPrettify { +///坑位的昵称的颜色 0xFFFFFF ++ (UIColor *)positionNickColor { return UIColorFromRGB(0xFFFFFF); } -+ (UIColor *)polariztowardsionOrdinaryMonicerEncouragePrettify { +/// 没有用户的 坑位的背景色 ++ (UIColor *)positionNormalNickBackColor { return [UIColor colorWithWhite:1 alpha:0.2]; } -+ (UIColor *)polariztowardsionBossEncourageInititowardsePrettify { +///老板位 坑位开始背景色 ++ (UIColor *)positionBossBackStartColor { return UIColorFromRGB(0xEFCC95); } -+ (UIColor *)polariztowardsionBossEncourageConcludePrettify { +///老板位 坑位结束背景色 ++ (UIColor *)positionBossBackEndColor { return UIColorFromRGB(0xF1B54D); } +// ------公屏相关颜色 Start------ / -+ (UIColor *)communictowardsionIntumescePrettify { +///公屏默认背景的颜色 ++ (UIColor *)messageBubbleColor { return UIColorRGBAlpha(0xFFFFFF, 0.15); } -+ (UIColor *)communictowardsionEssayPrettify { +///公屏文字的颜色 ++ (UIColor *)messageTextColor { return [UIColor whiteColor]; } -+ (UIColor *)communictowardsionMonicerPrettify { +///公屏名字的颜色 ++ (UIColor *)messageNickColor { return UIColorFromRGB(0xFFD98C); } -+ (UIColor *)communictowardsionDeficiencyEssayPrettify { +///默认的文字的颜色 ++ (UIColor *)messageDefaultTextColor { return [UIColor colorWithWhite:1 alpha:0.5]; } -+ (UIColor *)communictowardsionRegardPromptPrettify{ +///获取公屏提示 颜色 #FFFFFE 0.5 ++ (UIColor *)messageViewTipColor{ return UIColorRGBAlpha(0xfffffe, 0.5); } +// ------公屏相关颜色 END------ / -+ (UIColor *)presentBroadcastMonicerPrettify { +///礼物广播 显示的名字的颜色 #2F0060 ++ (UIColor *)giftBroadcastNickColor { return UIColorFromRGB(0xFFFFFF); } -+ (UIColor *)presentBroadcastDigitalPrettify { +///礼物广播显示 个数的颜色 #FEF563 ++ (UIColor *)giftBroadcastNumberColor { return UIColorFromRGB(0xFEF563); } -+ (UIColor *)confectioneryTimberDiamondPrettify { +/// 糖果树记录钻石的颜色 ++ (UIColor *)candyTreeDiamondColor { return UIColorFromRGB(0xFFD67E); } -+ (UIColor *)confectioneryTimberDividerPrettify { +/// 糖果树的分割线颜色 ++ (UIColor *)candyTreeDividerColor { return UIColorFromRGB(0xEDEDED); } -+ (UIColor *)confectioneryTimberMonicerPrettify { +/// 糖果树名字的颜色 ++ (UIColor *)candyTreeNickColor { return UIColorFromRGB(0xF8CBFF); } -+ (UIColor *)brectifynessPresentDigitalPrettify { +///动画礼物个数的颜色 0xFFF226 ++ (UIColor *)animationGiftNumberColor { return UIColorFromRGB(0xFFF226); } -+ (UIColor *)chamberFurthaerParrotEssayPrettify { +///更多menu文字颜色 0xFFFFFF ++ (UIColor *)roomMoreMenuTextColor { return UIColorFromRGB(0xFFFFFF); } @end diff --git a/YuMi/Modules/YMRoom/View/UserCard/Api/Api+UserCard.h b/YuMi/Modules/YMRoom/View/UserCard/Api/Api+UserCard.h index 9e0fe4ad..aa3e5389 100644 --- a/YuMi/Modules/YMRoom/View/UserCard/Api/Api+UserCard.h +++ b/YuMi/Modules/YMRoom/View/UserCard/Api/Api+UserCard.h @@ -10,24 +10,50 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (UserCard) -+ (void)considertowardsionPositionImplementtowardsion:(HttpRequestHelperCompletion)completion +/// 查询两个人的关注状态 +/// @param completion 完成 +/// @param uid 自己的uid +/// @param isLikeUid 要查询的那个人的uid ++ (void)attentionStatusCompletion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid isLikeUid:(NSString *)isLikeUid; -+ (void)considertowardsionImplementtowardsion:(HttpRequestHelperCompletion)completion +/// 关注某人 +/// @param completion 完成 +/// @param uid 发起关注的人 +/// @param likedUid 被关注的人 +/// @param ticket ticket +/// @param type l类型默认1 ++ (void)attentionCompletion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid likedUid:(NSString *)likedUid ticket:(NSString *)ticket type:(NSString *)type; -+ (void)sanitaryMiecreoscoopePresentBWSttess:(HttpRequestHelperCompletion)completion +/// 清除礼物值 +/// @param completion 完成 +/// @param roomUid 房间的uid +/// @param micUid 需要清除的uid +/// @param uid 操作者的uid ++ (void)cleanMicroGiftValue:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid micUid:(NSString *)micUid uid:(NSString *)uid; -+ (void)chamberEngagementExtractConsumer:(HttpRequestHelperCompletion)completion roomUserId:(NSString *)roomUserId chosenUserId:(NSString *)chosenUserId electorUserId:(NSString *)electorUserId; +/// 心动选人阶段 选择 +/// @param completion 完成 +/// @param roomUserId 房主的uid +/// @param chosenUserId 心动的uid +/// @param electorUserId 自己的uid ++ (void)roomDatingPickUser:(HttpRequestHelperCompletion)completion roomUserId:(NSString *)roomUserId chosenUserId:(NSString *)chosenUserId electorUserId:(NSString *)electorUserId; -+ (void)senstowardsionalManagementShankConsumer:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid targetUid:(NSString *)targetUid opt:(NSString *)opt isSet:(NSNumber *)isSet; +/// 超管处理房间的人 +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param targetUid 目标用户的uid +/// @param opt 1: 设置为管理员;2:设置普通等级用户;-1:设为黑名单用户;-2:设为禁言用户 +/// @param isSet true 设置,false 取消设置 ++ (void)superAdminHandleUser:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid targetUid:(NSString *)targetUid opt:(NSString *)opt isSet:(NSNumber *)isSet; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/UserCard/Api/Api+UserCard.m b/YuMi/Modules/YMRoom/View/UserCard/Api/Api+UserCard.m index 83a34947..9130c560 100644 --- a/YuMi/Modules/YMRoom/View/UserCard/Api/Api+UserCard.m +++ b/YuMi/Modules/YMRoom/View/UserCard/Api/Api+UserCard.m @@ -11,30 +11,56 @@ @implementation Api (UserCard) -+ (void)considertowardsionPositionImplementtowardsion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid isLikeUid:(NSString *)isLikeUid { - NSString * fang = [NSString stringFromBase64String:@"ZmFucy9pc2xpa2U="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, uid, isLikeUid, nil]; +/// 查询两个人的关注状态 +/// @param completion 完成 +/// @param uid 自己的uid +/// @param isLikeUid 要查询的那个人的uid ++ (void)attentionStatusCompletion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid isLikeUid:(NSString *)isLikeUid { + NSString * fang = [NSString stringFromBase64String:@"ZmFucy9pc2xpa2U="];///fans/islike + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, uid, isLikeUid, nil]; } -+ (void)considertowardsionImplementtowardsion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid likedUid:(NSString *)likedUid ticket:(NSString *)ticket type:(NSString *)type { - NSString * fang = [NSString stringFromBase64String:@"ZmFucy9saWtl"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, likedUid, ticket, type, nil]; +/// 关注某人 +/// @param completion 完成 +/// @param uid 发起关注的人 +/// @param likedUid 被关注的人 +/// @param ticket ticket +/// @param type 1 关注 2取消关注 ++ (void)attentionCompletion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid likedUid:(NSString *)likedUid ticket:(NSString *)ticket type:(NSString *)type { + NSString * fang = [NSString stringFromBase64String:@"ZmFucy9saWtl"];///fans/like + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, likedUid, ticket, type, nil]; } -+ (void)sanitaryMiecreoscoopePresentBWSttess:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid micUid:(NSString *)micUid uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9naWZ0L3ZhbHVlL2NsZWFu"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodDELETE completion:completion, __FUNCTION__, roomUid, micUid, uid, nil]; +/// 清除礼物值 +/// @param completion 完成 +/// @param roomUid 房间的uid +/// @param micUid 需要清除的uid +/// @param uid 操作者的uid ++ (void)cleanMicroGiftValue:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid micUid:(NSString *)micUid uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9naWZ0L3ZhbHVlL2NsZWFu"];///room/gift/value/clean + [self makeRequest:fang method:HttpRequestHelperMethodDELETE completion:completion, __FUNCTION__, roomUid, micUid, uid, nil]; } -+ (void)chamberEngagementExtractConsumer:(HttpRequestHelperCompletion)completion roomUserId:(NSString *)roomUserId chosenUserId:(NSString *)chosenUserId electorUserId:(NSString *)electorUserId { - NSString * fang = [NSString stringFromBase64String:@"YmxpbmQtZGF0ZS9jb25uZWN0aW9u"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUserId, chosenUserId, electorUserId, nil]; +/// 心动选人阶段 选择 +/// @param completion 完成 +/// @param roomUserId 房主的uid +/// @param chosenUserId 心动的uid +/// @param electorUserId 自己的uid ++ (void)roomDatingPickUser:(HttpRequestHelperCompletion)completion roomUserId:(NSString *)roomUserId chosenUserId:(NSString *)chosenUserId electorUserId:(NSString *)electorUserId { + NSString * fang = [NSString stringFromBase64String:@"YmxpbmQtZGF0ZS9jb25uZWN0aW9u"];///blind-date/connection + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUserId, chosenUserId, electorUserId, nil]; } -+ (void)senstowardsionalManagementShankConsumer:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid targetUid:(NSString *)targetUid opt:(NSString *)opt isSet:(NSNumber *)isSet { - NSString * fang = [NSString stringFromBase64String:@"c3VwZXIvc2V0L2NoYXRyb29tL3JvbGU="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, targetUid, opt,isSet, nil]; +/// 超管处理房间的人 +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param targetUid 目标用户的uid +/// @param opt 1: 设置为管理员;2:设置普通等级用户;-1:设为黑名单用户;-2:设为禁言用户 +/// @param isSet true 设置,false 取消设置 ++ (void)superAdminHandleUser:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid targetUid:(NSString *)targetUid opt:(NSString *)opt isSet:(NSNumber *)isSet { + NSString * fang = [NSString stringFromBase64String:@"c3VwZXIvc2V0L2NoYXRyb29tL3JvbGU="];///super/set/chatroom/role + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, targetUid, opt,isSet, nil]; } @end diff --git a/YuMi/Modules/YMRoom/View/UserCard/Model/XPUserCardInfoModel.h b/YuMi/Modules/YMRoom/View/UserCard/Model/XPUserCardInfoModel.h new file mode 100644 index 00000000..182b72f8 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/UserCard/Model/XPUserCardInfoModel.h @@ -0,0 +1,40 @@ +// +// YMUserCardInfoModel.h +// YUMI +// +// Created by YUMI on 2021/11/26. +// + +#import +#import "RoomHostDelegate.h" +#import "RoomInfoModel.h" +#import "MicroQueueModel.h" +#import "GuildSuperAdminInfoModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPUserCardInfoModel : NSObject +///用户的UID +@property (nonatomic,copy) NSString *uid; +///如果在坑位上的话 就传入 如果在坑位上的话 就传 如果不再的话 就传nil +@property (nonatomic,copy) NSString *position; +///操作人的昵称 +@property (nonatomic,copy) NSString *nick; +///坑位状态 锁坑/开坑 +@property (nonatomic, assign) MicroPosStateType posState; +///麦序的状态 闭麦/开麦 +@property (nonatomic, assign) MicroMicStateType micState; +///房间信息 +@property (nonatomic,strong) RoomInfoModel *roomInfo; +///超管列表 +@property (nonatomic,strong) NSArray *superMangerList; +///麦序 +@property (nonatomic,strong) NSMutableDictionary *micQueue; +///是否隐藏送礼按钮 +@property (nonatomic, assign) BOOL hideSendGiftItem; +//TODO: 先只改用户卡片中的 其实这个属性是不需要的 但是从用户卡片送礼物的VC 是需要delegate 所以先放在这里吧 +///协议 +@property (nonatomic,weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/UserCard/Model/XPUserCardInfoModel.m b/YuMi/Modules/YMRoom/View/UserCard/Model/XPUserCardInfoModel.m new file mode 100644 index 00000000..8ff87f21 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/UserCard/Model/XPUserCardInfoModel.m @@ -0,0 +1,12 @@ +// +// YMUserCardInfoModel.m +// YUMI +// +// Created by YUMI on 2021/11/26. +// + +#import "XPUserCardInfoModel.h" + +@implementation XPUserCardInfoModel + +@end diff --git a/YuMi/Modules/YMRoom/View/UserCard/Model/XPUserCardItemModel.h b/YuMi/Modules/YMRoom/View/UserCard/Model/XPUserCardItemModel.h new file mode 100644 index 00000000..2886bdf8 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/UserCard/Model/XPUserCardItemModel.h @@ -0,0 +1,51 @@ +// +// YMUserCardItemModel.h +// YUMI +// +// Created by YUMI on 2021/11/24. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(NSUInteger, UserCardItemType){ + UserCardItemType_Gift = 1, + ///私聊 + UserCardItemType_Chat = 2, + ///关注 + UserCardItemType_Attention = 3, + ///设置管理 + UserCardItemType_Manager = 4, + ///拉黑 + UserCardItemType_Black = 5, + ///踢出房间 + UserCardItemType_KickOut = 6, + ///邀请上麦 + UserCardItemType_Invite_Micro = 7, + ///@TA + UserCardItemType_AtUser = 8, +}; + + +@interface XPUserCardItemModel : NSObject + +///普通状态的图片名字 +@property (nonatomic,copy) NSString *imageName; +///选择状态的图片的名字 +@property (nonatomic,copy) NSString *selectImageName; +///普通状态下的标题 +@property (nonatomic,copy) NSString *title; +///选择状态下的标题 +@property (nonatomic,copy) NSString *selectTitle; +///类型 +@property (nonatomic,assign) UserCardItemType type; +///是否是选中状态 +@property (nonatomic,assign) BOOL isSelect; +///坑位 +@property (nonatomic,copy) NSString *position; +///是否可以点击 +@property (nonatomic,assign) BOOL isEnable; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/UserCard/Model/XPUserCardItemModel.m b/YuMi/Modules/YMRoom/View/UserCard/Model/XPUserCardItemModel.m new file mode 100644 index 00000000..41172ac7 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/UserCard/Model/XPUserCardItemModel.m @@ -0,0 +1,19 @@ +// +// YMUserCardItemModel.m +// YUMI +// +// Created by YUMI on 2021/11/24. +// + +#import "XPUserCardItemModel.h" + +@implementation XPUserCardItemModel + +- (instancetype)init { + if (self = [super init]) { + self.isEnable = YES; + } + return self; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/UserCard/Model/XPUserCardMicroItemModel.h b/YuMi/Modules/YMRoom/View/UserCard/Model/XPUserCardMicroItemModel.h new file mode 100644 index 00000000..2189d1fa --- /dev/null +++ b/YuMi/Modules/YMRoom/View/UserCard/Model/XPUserCardMicroItemModel.h @@ -0,0 +1,31 @@ +// +// YMUserCardMicroItemModel.h +// YUMI +// +// Created by YUMI on 2021/11/26. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(NSInteger, UserCardMicroType) { + ///开麦 闭麦 + UserCardMicroType_Mute = 1, + ///上麦 下麦 + UserCardMicroType_UpDown, + ///锁麦 解锁 + UserCardMicroType_Lock, + ///清除礼物值 + UserCardMicroType_Clean_Gift_Value +}; + +@interface XPUserCardMicroItemModel : NSObject +///显示标题 +@property (nonatomic,copy) NSString *title; +///类型 +@property (nonatomic,assign) UserCardMicroType type; +///状态 +@property (nonatomic,assign) BOOL status; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/UserCard/Model/XPUserCardMicroItemModel.m b/YuMi/Modules/YMRoom/View/UserCard/Model/XPUserCardMicroItemModel.m new file mode 100644 index 00000000..1a341be2 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/UserCard/Model/XPUserCardMicroItemModel.m @@ -0,0 +1,12 @@ +// +// YMUserCardMicroItemModel.m +// YUMI +// +// Created by YUMI on 2021/11/26. +// + +#import "XPUserCardMicroItemModel.h" + +@implementation XPUserCardMicroItemModel + +@end diff --git a/YuMi/Modules/YMRoom/View/UserCard/Model/YUMIConsumerSolitaireAbstractMatrix.h b/YuMi/Modules/YMRoom/View/UserCard/Model/YUMIConsumerSolitaireAbstractMatrix.h deleted file mode 100644 index 55906048..00000000 --- a/YuMi/Modules/YMRoom/View/UserCard/Model/YUMIConsumerSolitaireAbstractMatrix.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// YMUserCardInfoModel.h -// YUMI -// -// Created by YUMI on 2021/11/26. -// - -#import -#import "ChamberHostRepresendtation.h" -#import "ChamberAbstractMatrix.h" -#import "MiecreoscoopeMHTueueMatrix.h" -#import "UnionSensationalManagementAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIConsumerSolitaireAbstractMatrix : NSObject -@property (nonatomic,copy) NSString *uid; -@property (nonatomic,copy) NSString *position; -@property (nonatomic,copy) NSString *nick; -@property (nonatomic, assign) MiecreoscoopePosDeclareGenre posState; -@property (nonatomic, assign) MiecreoscoopeLoudspeakerDeclareGenre micState; -@property (nonatomic,strong) ChamberAbstractMatrix *roomInfo; -@property (nonatomic,strong) NSArray *superMangerList; -@property (nonatomic,strong) NSMutableDictionary *micQueue; -@property (nonatomic, assign) BOOL hideSendGiftItem; -@property (nonatomic,weak) id delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/UserCard/Model/YUMIConsumerSolitaireAbstractMatrix.m b/YuMi/Modules/YMRoom/View/UserCard/Model/YUMIConsumerSolitaireAbstractMatrix.m deleted file mode 100644 index 0d909abd..00000000 --- a/YuMi/Modules/YMRoom/View/UserCard/Model/YUMIConsumerSolitaireAbstractMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMUserCardInfoModel.m -// YUMI -// -// Created by YUMI on 2021/11/26. -// - -#import "YUMIConsumerSolitaireAbstractMatrix.h" - -@implementation YUMIConsumerSolitaireAbstractMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/UserCard/Model/YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix.h b/YuMi/Modules/YMRoom/View/UserCard/Model/YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix.h deleted file mode 100644 index 6497904b..00000000 --- a/YuMi/Modules/YMRoom/View/UserCard/Model/YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// YMUserCardMicroItemModel.h -// YUMI -// -// Created by YUMI on 2021/11/26. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSInteger, ConsumerSolitaireMiecreoscoopeGenre) { - - ConsumerSolitaireMiecreoscoopeGenre_Mute = 1, - - ConsumerSolitaireMiecreoscoopeGenre_UpDown, - - ConsumerSolitaireMiecreoscoopeGenre_Lock, - - ConsumerSolitaireMiecreoscoopeGenre_Clean_Gift_Value -}; - -@interface YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix : NSObject -@property (nonatomic,copy) NSString *title; -@property (nonatomic,assign) ConsumerSolitaireMiecreoscoopeGenre type; -@property (nonatomic,assign) BOOL status; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/UserCard/Model/YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix.m b/YuMi/Modules/YMRoom/View/UserCard/Model/YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix.m deleted file mode 100644 index 987595b3..00000000 --- a/YuMi/Modules/YMRoom/View/UserCard/Model/YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMUserCardMicroItemModel.m -// YUMI -// -// Created by YUMI on 2021/11/26. -// - -#import "YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix.h" - -@implementation YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/UserCard/Model/YUMIConsumerSolitaireProvisionMatrix.h b/YuMi/Modules/YMRoom/View/UserCard/Model/YUMIConsumerSolitaireProvisionMatrix.h deleted file mode 100644 index b4ae54ad..00000000 --- a/YuMi/Modules/YMRoom/View/UserCard/Model/YUMIConsumerSolitaireProvisionMatrix.h +++ /dev/null @@ -1,43 +0,0 @@ -// -// YMUserCardItemModel.h -// YUMI -// -// Created by YUMI on 2021/11/24. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSUInteger, ConsumerSolitaireProvisionGenre){ - ConsumerSolitaireProvisionGenre_Gift = 1, - - ConsumerSolitaireProvisionGenre_Chat = 2, - - ConsumerSolitaireProvisionGenre_Attention = 3, - - ConsumerSolitaireProvisionGenre_Manager = 4, - - ConsumerSolitaireProvisionGenre_Black = 5, - - ConsumerSolitaireProvisionGenre_KickOut = 6, - - ConsumerSolitaireProvisionGenre_Invite_Micro = 7, - - ConsumerSolitaireProvisionGenre_AtUser = 8, -}; - - -@interface YUMIConsumerSolitaireProvisionMatrix : NSObject - -@property (nonatomic,copy) NSString *imageName; -@property (nonatomic,copy) NSString *selectImageName; -@property (nonatomic,copy) NSString *title; -@property (nonatomic,copy) NSString *selectTitle; -@property (nonatomic,assign) ConsumerSolitaireProvisionGenre type; -@property (nonatomic,assign) BOOL isSelect; -@property (nonatomic,copy) NSString *position; -@property (nonatomic,assign) BOOL isEnable; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/UserCard/Model/YUMIConsumerSolitaireProvisionMatrix.m b/YuMi/Modules/YMRoom/View/UserCard/Model/YUMIConsumerSolitaireProvisionMatrix.m deleted file mode 100644 index e21e8c1e..00000000 --- a/YuMi/Modules/YMRoom/View/UserCard/Model/YUMIConsumerSolitaireProvisionMatrix.m +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMUserCardItemModel.m -// YUMI -// -// Created by YUMI on 2021/11/24. -// - -#import "YUMIConsumerSolitaireProvisionMatrix.h" - -@implementation YUMIConsumerSolitaireProvisionMatrix - -- (instancetype)init { - if (self = [super init]) { - self.isEnable = YES; - } - return self; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/UserCard/Presenter/XPUserCardPresenter.h b/YuMi/Modules/YMRoom/View/UserCard/Presenter/XPUserCardPresenter.h new file mode 100644 index 00000000..1e940612 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/UserCard/Presenter/XPUserCardPresenter.h @@ -0,0 +1,94 @@ +// +// YMUserCardPresenter.h +// YUMI +// +// Created by YUMI on 2021/11/24. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN +@class XPUserCardInfoModel, UserInfoModel; +@interface XPUserCardPresenter : BaseMvpPresenter +/// 获取用户信息 +/// @param uid 查询的用户的uid +- (void)getUserInfo:(NSString *)uid; + +/// 获取用户卡片中中间操作按钮的数据源 +/// @param userInfo 目标用户 +- (void)getFunctionItemsByUserInfo:(XPUserCardInfoModel *)userInfo; + +/// 用户卡片底部的操作按钮 +/// @param userInfo 目标用户的信息 +- (void)getMicroFunctionItemsByUserInfo:(XPUserCardInfoModel *)userInfo; + +///抱她上麦的 数据 +/// @param micCount 当前麦序的个数 +- (void)getRoomMicroItems:(int)micCount cardInfo:(XPUserCardInfoModel *)cardInfo; + +/// 关注用户 /取消该关注 +/// @param targetUid 目标用户的uid +/// @param status 是否关注 yes 关注 NO 取消关注 +- (void)attentionUser:(NSString *)targetUid status:(BOOL)status; + +/// 加入黑名单 +/// @param targetUid 目标用户的uid +/// @param roomId 房间的uid +- (void)makeUserBlack:(NSString *)targetUid roomId:(NSString *)roomId; + +/// 设置/取消 管理员 +/// @param targetUid 目标用户的id +/// @param roomId 房间的id +/// @param enable YES设置 NO取消 +- (void)makeUserManager:(NSString *)targetUid roomId:(NSString *)roomId enable:(BOOL)enable; + +/// 踢出房间 +/// @param targetUid 用户的uid +/// @param roomId 房间的uid +- (void)makeKickUser:(NSString *)targetUid roomId:(NSString *)roomId; + +/// 超管踢管理员 +/// @param targetNick 目标用户的昵称 +/// @param cardInfo 用户信息 +- (void)superAdminKickUser:(NSString *)targetNick cardInfo:(XPUserCardInfoModel *)cardInfo; +// 锁麦 开锁 +/// @param roomUid 房间的uid +/// @param state YES 锁坑位,NO取消锁 +/// @param position 操作的坑位 +- (void)microLock:(NSString *)roomUid state:(BOOL)state position:(NSString *)position; + +/// 闭麦 开麦 +/// @param roomUid 房间的uid +/// @param state NO 开麦 YES 锁麦 +/// @param position 操作的坑位 +- (void)microMute:(NSString *)roomUid state:(BOOL)state position:(NSString *)position; + +/// 抱下麦 +/// @param position 坑位信息 +/// @param roomId 房间id +- (void)kickDownMicro:(NSString *)position roomId:(NSString *)roomId; + +/// 抱她上麦 +/// @param roomId 房间的id +/// @param position 抱到几号坑 +/// @param userInfo 用户信息 +- (void)upMicro:(NSString *)roomId position:(NSString *)position userInfo:(UserInfoModel *)userInfo; + +/// 清除用户的礼物值 +/// @param roomUid 房间的uid +/// @param micUid 被清除的uid +- (void)cleanUserGiftValue:(NSString *)roomUid micUid:(NSString *)micUid; + +/// 心动选人 +/// @param roomUid 房主的uid +/// @param chosenUserId 被选择的uid +- (void)pickHeartUser:(NSString *)roomUid chosenUserId:(NSString *)chosenUserId; + +/// 超管处理用户 +/// @param targetUid 目标用户的uid +/// @param opt 1: 设置为管理员;2:设置普通等级用户;-1:设为黑名单用户;-2:设为禁言用户 +/// @param roomUid 房主的uid +- (void)superAdminHandleUser:(NSString *)targetUid opt:(NSString *)opt roomUid:(NSString *)roomUid isSet:(BOOL)isSet; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/UserCard/Presenter/XPUserCardPresenter.m b/YuMi/Modules/YMRoom/View/UserCard/Presenter/XPUserCardPresenter.m new file mode 100644 index 00000000..587dea4a --- /dev/null +++ b/YuMi/Modules/YMRoom/View/UserCard/Presenter/XPUserCardPresenter.m @@ -0,0 +1,686 @@ +// +// YMUserCardPresenter.m +// YUMI +// +// Created by YUMI on 2021/11/24. +// + +#import "XPUserCardPresenter.h" +///Third +#import +#import +///Tool +#import "Api+UserCard.h" +#import "AccountInfoStorage.h" +///Model +#import "UserInfoModel.h" +#import "XPUserCardItemModel.h" +#import "XPUserCardInfoModel.h" +#import "XPUserCardMicroItemModel.h" +#import "XPKickUserModel.h" +#import "AttachmentModel.h" +///P +#import "XPUserCardProtocol.h" + +@interface XPUserCardPresenter () +///礼物的 +@property (nonatomic,strong) XPUserCardItemModel *giftItem; +///私聊 +@property (nonatomic,strong) XPUserCardItemModel *chatItem; +///关注 +@property (nonatomic,strong) XPUserCardItemModel *attentionItem; +///设置管理员 +@property (nonatomic,strong) XPUserCardItemModel *managerItem; +///踢出房间 +@property (nonatomic,strong) XPUserCardItemModel *kikoutItem; +///加入黑名单 +@property (nonatomic,strong) XPUserCardItemModel *blackItem; +///@TA +@property (nonatomic, strong) XPUserCardItemModel *atItem; +///操作的数组 +@property (nonatomic,strong) NSMutableArray * functionArray; +@end + +@implementation XPUserCardPresenter + +/// 获取用户信息 +/// @param uid 查询的用户的uid +- (void)getUserInfo:(NSString *)uid { + if (uid == nil) { + return; + } + [Api getUserInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + UserInfoModel * infoModel = [UserInfoModel modelWithDictionary:data.data]; + [[self getView] onGetUserInfoSuccess:infoModel]; + }] uid:uid]; +} + + +/// 两个人的关注状态 +/// @param uid 自己的uid +/// @param targetUid 对方的uid +- (void)userAttentionStatus:(NSString *)uid targetUid:(NSString *)targetUid { + [Api attentionStatusCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + BOOL isLike = ((NSNumber *)data.data).boolValue; + self.attentionItem.isSelect = isLike; + [[self getView] onGetFunctionArraySccess:self.functionArray]; + }] uid:uid isLikeUid:targetUid]; +} + + +/// 获取用户卡片中中间操作按钮的数据源 +/// @param userInfo 目标用户 +- (void)getFunctionItemsByUserInfo:(XPUserCardInfoModel *)userInfo{ + NSString * uid = [[AccountInfoStorage instance] getUid]; + NSString * targetUid = userInfo.uid; + NSString * roomId = [NSString stringWithFormat:@"%ld", userInfo.roomInfo.roomId]; + if ([uid isEqualToString:targetUid]) { ///查看自己的话 没有中间的数据 + return; + } else { + [self.functionArray removeAllObjects]; + if (!userInfo.hideSendGiftItem) { + [self.functionArray addObject:self.giftItem]; + } + [self.functionArray addObject:self.chatItem]; + [self.functionArray addObject:self.atItem]; + [self.functionArray addObject:self.attentionItem]; + ///获取一下关注的状态 + [self userAttentionStatus:uid targetUid:targetUid]; + ///自己是公会超管 + BOOL meIsSuperAdmin = NO; + ///用户卡片的那个人事公会超管 + BOOL heIsSuperAdmin = NO; + for (GuildSuperAdminInfoModel *managerInfo in userInfo.superMangerList) { + if ([managerInfo.uid isEqualToString:userInfo.uid]) { + heIsSuperAdmin = YES; + } + if ([managerInfo.uid isEqualToString:[AccountInfoStorage instance].getUid]) { + meIsSuperAdmin = YES; + } + } + @weakify(self); + if (meIsSuperAdmin) { + if (heIsSuperAdmin) { + [[self getView] onGetFunctionArraySccess:self.functionArray]; + } else { + ///查看 目标用户是否是管理员 + [[self rac_queryChatRoomMember:targetUid roomId:roomId] subscribeNext:^(id _Nullable x) { + NIMChatroomMember * targetMember = x; + if (targetMember == nil) {return;} + if (targetMember.type == NIMChatroomMemberTypeCreator) { ///目标是房主的话 + [[self getView] onGetFunctionArraySccess:self.functionArray]; + } else { + if (targetMember && targetMember.type == NIMChatroomMemberTypeManager) { + self.managerItem.isSelect = YES; + } + [self.functionArray addObject:self.managerItem]; + [self.functionArray addObject:self.kikoutItem]; + [self.functionArray addObject:self.blackItem]; + [[self getView] onGetFunctionArraySccess:self.functionArray]; + } + }]; + } + } else { + [[self rac_queryChatRoomMember:uid roomId:roomId] subscribeNext:^(id _Nullable x) { + @strongify(self); + NIMChatroomMember * member = x; + if (member == nil) {return;} + if (member.type == NIMChatroomMemberTypeCreator) {///房主 踢出房间 设置管理员 拉黑 + if (heIsSuperAdmin) { + [[self getView] onGetFunctionArraySccess:self.functionArray]; + } else { + [self.functionArray addObject:self.kikoutItem]; + [self.functionArray addObject:self.managerItem]; + [self.functionArray addObject:self.blackItem]; + ///查看 目标用户是否是管理员 + [[self rac_queryChatRoomMember:targetUid roomId:roomId] subscribeNext:^(id _Nullable x) { + NIMChatroomMember * targetMember = x; + if (targetMember && targetMember.type == NIMChatroomMemberTypeManager) { + self.managerItem.isSelect = YES; + } + [[self getView] onGetFunctionArraySccess:self.functionArray]; + }]; + } + } else if(member.type == NIMChatroomMemberTypeManager) {///操作者是 管理员 踢出房间 拉黑 + ///查看 目标用户是否是管理员 + [[self rac_queryChatRoomMember:targetUid roomId:roomId] subscribeNext:^(id _Nullable x) { + NIMChatroomMember * targetMember = x; + if (targetMember == nil) {return;} + if (targetMember.type == NIMChatroomMemberTypeManager || targetMember.type == NIMChatroomMemberTypeCreator || heIsSuperAdmin) { ///目标是管理员 + [[self getView] onGetFunctionArraySccess:self.functionArray]; + } else { + [self.functionArray addObject:self.kikoutItem]; + [self.functionArray addObject:self.blackItem]; + [[self getView] onGetFunctionArraySccess:self.functionArray]; + } + }]; + } else { + [[self getView] onGetFunctionArraySccess:self.functionArray]; + } + }]; + } + } +} + +///抱她上麦的 数据 +/// @param micCount 当前麦序的个数 +- (void)getRoomMicroItems:(int)micCount cardInfo:(XPUserCardInfoModel *)cardInfo { + [self.functionArray removeAllObjects]; + RoomInfoModel * roomInfo = cardInfo.roomInfo; + NSMutableDictionary * micQueue = cardInfo.micQueue; + for (int i = 0; i < micCount; i++) { + XPUserCardItemModel * item = [[XPUserCardItemModel alloc] init]; + item.type = UserCardItemType_Invite_Micro; + if (i == 0) { + item.title = roomInfo.roomModeType == RoomModeType_Open_Blind ? @"主持位" : YMLocalizedString(@"XPUserCardPresenter1"); + item.imageName = roomInfo.leaveMode ? @"usercard_invite_micro_owner_disable" : @"usercard_invite_micro_owner"; + if (roomInfo.leaveMode) { + item.isEnable = NO; + } + } else { + if (roomInfo.roomModeType == RoomModeType_Open_Blind) { + if (i == 1 || i == 2 || i == 5 || i == 6) { + item.title = [NSString stringWithFormat:YMLocalizedString(@"XPUserCardPresenter2"), i]; + } else{ + item.title = [NSString stringWithFormat:YMLocalizedString(@"XPUserCardPresenter3"), i]; + } + } else { + item.title = [NSString stringWithFormat:YMLocalizedString(@"XPUserCardPresenter4"), i]; + } + + } + MicroQueueModel * micModel = [micQueue objectForKey:[NSString stringWithFormat:@"%d", i -1]]; + if (micModel && micModel.userInfo && micModel.userInfo.uid > 0) { + item.isEnable = NO; + item.imageName = @"usercard_invite_micro_disable"; + } else { + item.isEnable = YES; + item.imageName = @"usercard_invite_micro_normal"; + } + item.position = [NSString stringWithFormat:@"%d", (i - 1)]; + [self.functionArray addObject:item]; + } + [[self getView] onGetFunctionArraySccess:self.functionArray]; +} + +/// 用户卡片底部的操作按钮 +/// @param userInfo 目标用户的信息 +- (void)getMicroFunctionItemsByUserInfo:(XPUserCardInfoModel *)userInfo { + NSString * uid = [[AccountInfoStorage instance] getUid]; + NSString * targetUid = userInfo.uid; + RoomInfoModel * roomInfo = userInfo.roomInfo; + NSString * roomId = [NSString stringWithFormat:@"%ld", userInfo.roomInfo.roomId]; + MicroQueueModel * micQueue = [userInfo.micQueue objectForKey:userInfo.position]; + NSMutableArray * array = [NSMutableArray array]; + XPUserCardMicroItemModel * muteItem = [[XPUserCardMicroItemModel alloc] init]; + muteItem.title = userInfo.micState == MicroMicStateType_Open ? @"闭麦" : YMLocalizedString(@"XPUserCardPresenter6"); + muteItem.status = userInfo.micState == MicroMicStateType_Open; + muteItem.type = UserCardMicroType_Mute; + + XPUserCardMicroItemModel * upDownItem = [[XPUserCardMicroItemModel alloc] init]; + upDownItem.title = userInfo.position.length <= 0 ? @"抱Ta上麦" : [uid isEqualToString:targetUid] ? @"下麦旁听" : YMLocalizedString(@"XPUserCardPresenter9"); + upDownItem.status = userInfo.position.length > 0 ? YES : NO; + upDownItem.type = UserCardMicroType_UpDown; + + XPUserCardMicroItemModel * lockItem = [[XPUserCardMicroItemModel alloc] init]; + lockItem.title = userInfo.posState == MicroPosStateType_Free ? @"锁麦" : YMLocalizedString(@"XPUserCardPresenter11"); + lockItem.status = userInfo.posState == MicroPosStateType_Free; + lockItem.type = UserCardMicroType_Lock; + + XPUserCardMicroItemModel * giftValueItem = [[XPUserCardMicroItemModel alloc] init]; + giftValueItem.title = YMLocalizedString(@"XPUserCardPresenter12"); + giftValueItem.type = UserCardMicroType_Clean_Gift_Value; + ///自己是公会超管 + BOOL meIsSuperAdmin = NO; + ///用户卡片的那个人事公会超管 + BOOL heIsSuperAdmin = NO; + for (GuildSuperAdminInfoModel *managerInfo in userInfo.superMangerList) { + if ([managerInfo.uid isEqualToString:userInfo.uid]) { + heIsSuperAdmin = YES; + } + if ([managerInfo.uid isEqualToString:[AccountInfoStorage instance].getUid]) { + meIsSuperAdmin = YES; + } + } + if ([targetUid isEqualToString:uid]) {///自己看自己 + @weakify(self); + [[self rac_queryChatRoomMember:targetUid roomId:roomId] subscribeNext:^(id _Nullable x) { + @strongify(self); + NIMChatroomMember * member = x; + if (member == nil) {return;} + if (userInfo.roomInfo.type == RoomType_Anchor) {///个播房点击自己 + if (member.type == NIMChatroomMemberTypeCreator) { + [array addObject:muteItem]; + [array addObject:lockItem]; + if (roomInfo.showGiftValue) { + [array addObject:giftValueItem]; + } + } else if(member.type == NIMTeamMemberTypeManager || meIsSuperAdmin) { + [array addObject:muteItem]; + if (userInfo.position.length > 0) { + [array addObject:upDownItem]; + } + [array addObject:lockItem]; + if (userInfo.roomInfo.type == RoomType_Anchor && userInfo.roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode) {//个播PK中不显示上麦 + [array removeAllObjects]; + } + } else { + if (userInfo.position.length > 0) { + [array addObject:upDownItem]; + } + if (userInfo.roomInfo.type == RoomType_Anchor && userInfo.roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode) {//个播PK中不显示上麦 + [array removeAllObjects]; + } + } + } else { + if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager || meIsSuperAdmin) { + if (userInfo.roomInfo.leaveMode && userInfo.uid.integerValue == userInfo.roomInfo.uid && [userInfo.position isEqualToString:@"-1"]) { + [array addObject:muteItem]; + [array addObject:upDownItem]; + [array addObject:lockItem]; + if (roomInfo.showGiftValue) { + [array addObject:giftValueItem]; + } + } else { + if (userInfo.position.length > 0) { + [array addObject:muteItem]; + [array addObject:upDownItem]; + if (![userInfo.position isEqualToString:@"999"]) { + [array addObject:lockItem]; + } + if (roomInfo.showGiftValue) { + [array addObject:giftValueItem]; + } + } else { + [array addObject:upDownItem]; + } + } + } else { + if (userInfo.position.length > 0) { + [array addObject:upDownItem]; + } + } + } + [[self getView] onGetMicroFunctionArraySuccess:array]; + }]; + } else {///不是自己看自己 + @weakify(self); + [[self rac_queryChatRoomMember:uid roomId:roomId] subscribeNext:^(id _Nullable x) { + @strongify(self); + NIMChatroomMember * member = x; + if (member == nil) {return;} + if (member.type == NIMChatroomMemberTypeCreator) { + if (userInfo.position.length > 0) { + if (micQueue.userInfo.vipMic) { + [array addObject:muteItem]; + if (roomInfo.showGiftValue) { + [array addObject:giftValueItem]; + } + } else { + [array addObject:muteItem]; + [array addObject:upDownItem]; + [array addObject:lockItem]; + if (userInfo.roomInfo.type != RoomType_Anchor) {//非个播房显示清除礼物值 + if (roomInfo.showGiftValue) { + [array addObject:giftValueItem]; + } + } + } + } else { + [array addObject:upDownItem]; + } + if (userInfo.roomInfo.type == RoomType_Anchor && userInfo.roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode) { + [array removeAllObjects]; + } + [[self getView] onGetMicroFunctionArraySuccess:array]; + } else if(member.type == NIMChatroomMemberTypeManager || meIsSuperAdmin) {/// 管理员 + [[self rac_queryChatRoomMember:targetUid roomId:roomId] subscribeNext:^(id _Nullable x) { + NIMChatroomMember * targetMember = x; + if (targetMember == nil) {return;} + if (userInfo.roomInfo.type == RoomType_Anchor) {//个播模式 + if (userInfo.position.length > 0) { + if (targetMember.type != NIMChatroomMemberTypeManager && targetMember.type != NIMChatroomMemberTypeCreator) { + [array addObject:muteItem]; + } + if (targetMember.type != NIMChatroomMemberTypeCreator) { + [array addObject:upDownItem]; + } + [array addObject:lockItem]; + } + + if (userInfo.uid.integerValue == userInfo.roomInfo.uid && [userInfo.position isEqualToString:@"-1"]) { + [array addObject:giftValueItem]; + } + + } else { + if (targetMember.type == NIMChatroomMemberTypeCreator) { + if (userInfo.position.length > 0) { + if (!micQueue.userInfo.vipMic) { + [array addObject:lockItem]; + } + } else { + [array addObject:upDownItem]; + } + if (roomInfo.showGiftValue) { + [array addObject:giftValueItem]; + } + } else {///目标者是普通用户 + if (userInfo.position.length > 0) { + if (targetMember.type != NIMChatroomMemberTypeManager) { + [array addObject:muteItem]; + } + if (!micQueue.userInfo.vipMic) { + [array addObject:upDownItem]; + [array addObject:lockItem]; + } + if (roomInfo.showGiftValue) { + [array addObject:giftValueItem]; + } + } else { + [array addObject:upDownItem]; + } + } + } + if (userInfo.roomInfo.type == RoomType_Anchor && userInfo.roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode) { + [array removeAllObjects]; + } + [[self getView] onGetMicroFunctionArraySuccess:array]; + }]; + } + }]; + } +} + +/// 关注用户 /取消该关注 +/// @param targetUid 目标用户的uid +/// @param status 是否关注 yes 关注 NO 取消关注 +- (void)attentionUser:(NSString *)targetUid status:(BOOL)status { + NSString * uid = [[AccountInfoStorage instance] getUid]; + NSString * ticket = [[AccountInfoStorage instance] getTicket]; + NSString * type = status ? @"1" : @"2"; + [Api attentionCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + self.attentionItem.isSelect = status; + [[self getView] attentionUserSuccess:self.attentionItem]; + }] uid:uid likedUid:targetUid ticket:ticket type:type]; +} + + +/// 加入黑名单 +/// @param targetUid 目标用户的uid +/// @param roomId 房间的uid +- (void)makeUserBlack:(NSString *)targetUid roomId:(NSString *)roomId{ + NIMChatroomMemberUpdateRequest *request = [[NIMChatroomMemberUpdateRequest alloc]init]; + request.roomId = roomId; + request.userId = targetUid; + request.enable = YES; + [[NIMSDK sharedSDK].chatroomManager updateMemberBlack:request completion:^(NSError * _Nullable error) { + [[self getView] makeUserBlackFinish:error]; + }]; +} + + +/// 设置/取消 管理员 +/// @param targetUid 目标用户的id +/// @param roomId 房间的id +/// @param enable YES设置 NO取消 +- (void)makeUserManager:(NSString *)targetUid roomId:(NSString *)roomId enable:(BOOL)enable{ + NIMChatroomMemberUpdateRequest *request = [[NIMChatroomMemberUpdateRequest alloc]init]; + request.roomId = roomId; + request.userId = targetUid; + request.enable = enable; + [[NIMSDK sharedSDK].chatroomManager markMemberManager:request completion:^(NSError * _Nullable error) { + if (error == nil) { + self.managerItem.isSelect = enable; + } + [[self getView] markUserManagerFinish:self.managerItem error:error]; + }]; +} + + +/// 踢出房间 +/// @param targetUid 用户的uid +/// @param roomId 房间的uid +- (void)makeKickUser:(NSString *)targetUid roomId:(NSString *)roomId { + NSString * uid = [[AccountInfoStorage instance] getUid]; + NIMChatroomMemberKickRequest *request = [[NIMChatroomMemberKickRequest alloc] init]; + request.roomId = roomId; + request.userId = targetUid; + request.notifyExt = [@{@"reason":@"kick",@"account":targetUid,@"handleUid":uid} toJSONString]; + [[NIMSDK sharedSDK].chatroomManager kickMember:request completion:^(NSError * _Nullable error) { + [[self getView] makeKickUserFinish:error]; + }]; +} + +/// 超管踢管理员 +/// @param targetNick 目标用户的昵称 +/// @param cardInfo 用户信息 +- (void)superAdminKickUser:(NSString *)targetNick cardInfo:(XPUserCardInfoModel *)cardInfo { + NSString * targetUid = cardInfo.uid; + NSString * roomId = [NSString stringWithFormat:@"%ld", cardInfo.roomInfo.roomId]; + [[self rac_queryChatRoomMember:targetUid roomId:roomId] subscribeNext:^(id _Nullable x) { + NIMChatroomMember * member = x; + if (member == nil) {return;} + if (member.type == NIMChatroomMemberTypeManager) { + XPKickUserModel *notifyModel = [[XPKickUserModel alloc] init]; + notifyModel.handleNick = cardInfo.nick; + notifyModel.handleUid = [AccountInfoStorage instance].getUid.integerValue; + notifyModel.targetUid = cardInfo.uid.integerValue; + notifyModel.targetNick = targetNick; + AttachmentModel *attachment = [[AttachmentModel alloc] init]; + attachment.first = CustomMessageType_Hall_Super_Admin; + attachment.second = Custom_Message_Sub_Hall_Super_Admin_Kick_Manager_Out_Room; + attachment.data = [notifyModel model2dictionary]; + NSString * sessionId = [NSString stringWithFormat:@"%ld", cardInfo.roomInfo.roomId]; + NIMMessage *message = [[NIMMessage alloc]init]; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachment; + message.messageObject = object; + //构造会话 + NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom]; + NSError * error; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:&error]; + [[self getView] superAdminKickUserFinish:error]; + } else { + [self makeKickUser:cardInfo.uid roomId:roomId]; + } + }]; +} + +/// 闭麦 开麦 +/// @param roomUid 房间的uid +/// @param state NO 开麦 YES 闭麦 +/// @param position 操作的坑位 +- (void)microMute:(NSString *)roomUid state:(BOOL)state position:(NSString *)position { + NSString * uid = [[AccountInfoStorage instance] getUid]; + NSString * ticket = [[AccountInfoStorage instance] getTicket]; + NSString * stateStr = state ? @"1" : @"0"; + [Api microMuteCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] muteMicroSusccess]; + }] roomUid:roomUid state:stateStr position:position ticket:ticket uid:uid]; +} + +// 锁麦 开锁 +/// @param roomUid 房间的uid +/// @param state YES 锁坑位,NO取消锁 +/// @param position 操作的坑位 +- (void)microLock:(NSString *)roomUid state:(BOOL)state position:(NSString *)position { + NSString * uid = [[AccountInfoStorage instance] getUid]; + NSString * ticket = [[AccountInfoStorage instance] getTicket]; + NSString * stateStr = state ? @"1" : @"0"; + [Api microLockCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] lockMicroSusccess]; + }] roomUid:roomUid state:stateStr position:position ticket:ticket uid:uid]; +} + +/// 抱下麦 +/// @param position 坑位信息 +/// @param roomId 房间id +- (void)kickDownMicro:(NSString *)position roomId:(NSString *)roomId { + NIMChatroomQueueRemoveRequest *request = [[NIMChatroomQueueRemoveRequest alloc]init]; + request.key = position; + request.roomId = roomId; + [[NIMSDK sharedSDK].chatroomManager removeChatroomQueueObject:request completion:^(NSError * _Nullable error, NSDictionary * _Nullable element) { + if (error == nil ) { + [[self getView] kickDownMicroSuccess]; + } + }]; +} + + +/// 抱她上麦 +/// @param roomId 房间的id +/// @param position 抱到几号坑 +/// @param userInfo 用户信息 +- (void)upMicro:(NSString *)roomId position:(NSString *)position userInfo:(UserInfoModel *)userInfo { + NIMChatroomQueueUpdateRequest *request = [[NIMChatroomQueueUpdateRequest alloc]init]; + request.key = position; + request.value = [userInfo toJSONString]; + request.roomId = roomId; + request.transient = YES; + [[NIMSDK sharedSDK].chatroomManager updateChatroomQueueObject:request completion:^(NSError * _Nullable error) { + if (error == nil) { + [[self getView] upMicroSuccess]; + } + }]; +} + + +/// 清除用户的礼物值 +/// @param roomUid 房间的uid +/// @param micUid 被清除的uid +- (void)cleanUserGiftValue:(NSString *)roomUid micUid:(NSString *)micUid { + NSString * uid = [[AccountInfoStorage instance] getUid]; + [Api cleanMicroGiftValue:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] cleanUserGiftValueSuccess:data.data]; + }] roomUid:roomUid micUid:micUid uid:uid]; +} + + +/// 心动选人 +/// @param roomUid 房主的uid +/// @param chosenUserId 被选择的uid +- (void)pickHeartUser:(NSString *)roomUid chosenUserId:(NSString *)chosenUserId { + NSString * uid = [[AccountInfoStorage instance] getUid]; + [Api roomDatingPickUser:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] roomDatingPickHeartUserSuccess]; + }] roomUserId:roomUid chosenUserId:chosenUserId electorUserId:uid]; +} + + +/// 超管处理用户 +/// @param targetUid 目标用户的uid +/// @param opt 1: 设置为管理员;2:设置普通等级用户;-1:设为黑名单用户;-2:设为禁言用户 +/// @param roomUid 房主的uid +- (void)superAdminHandleUser:(NSString *)targetUid opt:(NSString *)opt roomUid:(NSString *)roomUid isSet:(BOOL)isSet{ + [Api superAdminHandleUser:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] superAdminHandleUserSuccess:opt]; + }] roomUid:roomUid targetUid:targetUid opt:opt isSet:@(isSet)]; +} + +#pragma mark - Private Method +///获取房间角色 +- (RACSignal *)rac_queryChatRoomMember:(NSString *)uid roomId:(NSString *)roomId{ + return [RACSignal createSignal:^RACDisposable *(id subscriber) { + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = roomId; + request.userIds = @[uid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + if (error == nil) { + [subscriber sendNext:members.firstObject]; + [subscriber sendCompleted]; + }else { + [subscriber sendNext:nil]; + [subscriber sendCompleted]; + } + }]; + return nil; + }]; +} + +#pragma mark - Getters And Setters +- (NSMutableArray *)functionArray { + if (!_functionArray) { + _functionArray = [NSMutableArray array]; + } + return _functionArray; +} + +- (XPUserCardItemModel *)giftItem { + if (!_giftItem) { + _giftItem = [[XPUserCardItemModel alloc] init]; + _giftItem.title = YMLocalizedString(@"XPUserCardPresenter13"); + _giftItem.imageName = @"usercard_sendgift_normal"; + _giftItem.selectImageName = @"usercard_sendgift_normal"; + _giftItem.type = UserCardItemType_Gift; + } + return _giftItem; +} + +- (XPUserCardItemModel *)chatItem { + if (!_chatItem) { + _chatItem = [[XPUserCardItemModel alloc] init]; + _chatItem.title = YMLocalizedString(@"XPUserCardPresenter14"); + _chatItem.imageName = @"usercard_chat_normal"; + _chatItem.selectImageName = @"usercard_chat_normal"; + _chatItem.type = UserCardItemType_Chat; + } + return _chatItem; +} + +- (XPUserCardItemModel *)atItem { + if (!_atItem) { + _atItem = [[XPUserCardItemModel alloc] init]; + _atItem.title = @"@TA"; + _atItem.imageName = @"usercard_chat_normal"; + _atItem.selectImageName = @"usercard_chat_normal"; + _atItem.type = UserCardItemType_AtUser; + } + return _atItem; +} + +- (XPUserCardItemModel *)attentionItem { + if (!_attentionItem) { + _attentionItem = [[XPUserCardItemModel alloc] init]; + _attentionItem.title = @"关注Ta"; + _attentionItem.imageName = @"usercard_attention_normal"; + _attentionItem.selectTitle = YMLocalizedString(@"XPUserCardPresenter16"); + _attentionItem.selectImageName = @"usercard_attention_disable"; + _attentionItem.type = UserCardItemType_Attention; + } + return _attentionItem; +} + +- ( XPUserCardItemModel *)kikoutItem { + if (!_kikoutItem) { + _kikoutItem = [[XPUserCardItemModel alloc] init]; + _kikoutItem.title = YMLocalizedString(@"XPUserCardPresenter17"); + _kikoutItem.imageName = @"usercard_kickout_normal"; + _kikoutItem.selectImageName = @"usercard_kickout_normal"; + _kikoutItem.type = UserCardItemType_KickOut; + } + return _kikoutItem; +} + +- (XPUserCardItemModel *)managerItem { + if (!_managerItem) { + _managerItem = [[XPUserCardItemModel alloc] init]; + _managerItem.title = YMLocalizedString(@"XPUserCardPresenter18"); + _managerItem.imageName = @"usercard_manager_normal"; + _managerItem.selectTitle = YMLocalizedString(@"XPUserCardPresenter19"); + _managerItem.selectImageName = @"usercard_manager_disable"; + _managerItem.type = UserCardItemType_Manager; + } + return _managerItem; +} + +- (XPUserCardItemModel *)blackItem { + if (!_blackItem) { + _blackItem = [[XPUserCardItemModel alloc] init]; + _blackItem.title = YMLocalizedString(@"XPUserCardPresenter20"); + _blackItem.imageName = @"usercard_blacklist_normal"; + _blackItem.type = UserCardItemType_Black; + } + return _blackItem; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/UserCard/Presenter/YUMIConsumerSolitaireExternalizer.h b/YuMi/Modules/YMRoom/View/UserCard/Presenter/YUMIConsumerSolitaireExternalizer.h deleted file mode 100644 index a5f6e6e0..00000000 --- a/YuMi/Modules/YMRoom/View/UserCard/Presenter/YUMIConsumerSolitaireExternalizer.h +++ /dev/null @@ -1,45 +0,0 @@ -// -// YMUserCardPresenter.h -// YUMI -// -// Created by YUMI on 2021/11/24. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN -@class YUMIConsumerSolitaireAbstractMatrix, ConsumerAbstractMatrix; -@interface YUMIConsumerSolitaireExternalizer : BaseMvpExternalizer -- (void)getUserInfo:(NSString *)uid; - -- (void)acquireObligtowardsionProvisionsByConsumerAbstract:(YUMIConsumerSolitaireAbstractMatrix *)userInfo; - -- (void)acquireMiecreoscoopeObligtowardsionProvisionsByConsumerAbstract:(YUMIConsumerSolitaireAbstractMatrix *)userInfo; - -- (void)acquireChamberMiecreoscoopeProvisions:(int)micCount automobiledAbstract:(YUMIConsumerSolitaireAbstractMatrix *)automobiledAbstract; - -- (void)considertowardsionConsumer:(NSString *)targetUid status:(BOOL)status; - -- (void)manufactureConsumerDenigrtowardse:(NSString *)targetUid roomId:(NSString *)roomId; - -- (void)manufactureConsumerExecutive:(NSString *)targetUid roomId:(NSString *)roomId enable:(BOOL)enable; - -- (void)manufactureAbandonConsumer:(NSString *)targetUid roomId:(NSString *)roomId; - -- (void)senstowardsionalManagementAbandonConsumer:(NSString *)targetNick automobiledAbstract:(YUMIConsumerSolitaireAbstractMatrix *)automobiledAbstract; -- (void)miecreoscoopeSpoke:(NSString *)roomUid state:(BOOL)state position:(NSString *)position; - -- (void)miecreoscoopeBretowardshaed:(NSString *)roomUid state:(BOOL)state position:(NSString *)position; - -- (void)kickPubescenceMiecreoscoope:(NSString *)position roomId:(NSString *)roomId; - -- (void)upMiecreoscoope:(NSString *)roomId position:(NSString *)position userInfo:(ConsumerAbstractMatrix *)userInfo; - -- (void)sanitaryConsumerPresentBWSttess:(NSString *)roomUid micUid:(NSString *)micUid; - -- (void)extractCourageConsumer:(NSString *)roomUid chosenUserId:(NSString *)chosenUserId; - -- (void)senstowardsionalManagementShankConsumer:(NSString *)targetUid opt:(NSString *)opt roomUid:(NSString *)roomUid isSet:(BOOL)isSet; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/UserCard/Presenter/YUMIConsumerSolitaireExternalizer.m b/YuMi/Modules/YMRoom/View/UserCard/Presenter/YUMIConsumerSolitaireExternalizer.m deleted file mode 100644 index 6d7f5538..00000000 --- a/YuMi/Modules/YMRoom/View/UserCard/Presenter/YUMIConsumerSolitaireExternalizer.m +++ /dev/null @@ -1,621 +0,0 @@ -// -// YMUserCardPresenter.m -// YUMI -// -// Created by YUMI on 2021/11/24. -// - -#import "YUMIConsumerSolitaireExternalizer.h" -#import -#import -#import "Api+UserCard.h" -#import "AccountAbstractStorage.h" -#import "ConsumerAbstractMatrix.h" -#import "YUMIConsumerSolitaireProvisionMatrix.h" -#import "YUMIConsumerSolitaireAbstractMatrix.h" -#import "YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix.h" -#import "XCombatickConsumerMatrix.h" -#import "AttachmentMatrix.h" -#import "FBCConsumerSolitaireCeremony.h" - -@interface YUMIConsumerSolitaireExternalizer () -@property (nonatomic,strong) YUMIConsumerSolitaireProvisionMatrix *presentProvision; -@property (nonatomic,strong) YUMIConsumerSolitaireProvisionMatrix *chinwagProvision; -@property (nonatomic,strong) YUMIConsumerSolitaireProvisionMatrix *considerationProvision; -@property (nonatomic,strong) YUMIConsumerSolitaireProvisionMatrix *executiveProvision; -@property (nonatomic,strong) YUMIConsumerSolitaireProvisionMatrix *kikoutProvision; -@property (nonatomic,strong) YUMIConsumerSolitaireProvisionMatrix *blackProvision; -@property (nonatomic, strong) YUMIConsumerSolitaireProvisionMatrix *atProvision; -@property (nonatomic,strong) NSMutableArray * functionGarment; -@end - -@implementation YUMIConsumerSolitaireExternalizer - -- (void)getUserInfo:(NSString *)uid { - if (uid == nil) { - return; - } - [Api getUserInfo:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - ConsumerAbstractMatrix * infoMatrix = [ConsumerAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] dwellEarnConsumerAbstractAccomplishment:infoMatrix]; - }] uid:uid]; -} - - -- (void)consumerConsidertowardsionPosition:(NSString *)uid targetUid:(NSString *)targetUid { - [Api considertowardsionPositionImplementtowardsion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - BOOL isLike = ((NSNumber *)data.data).boolValue; - self.considerationProvision.isSelect = isLike; - [[self acquireRegard] dwellEarnObligtowardsionGarmentSccess:self.functionGarment]; - }] uid:uid isLikeUid:targetUid]; -} - - -- (void)acquireObligtowardsionProvisionsByConsumerAbstract:(YUMIConsumerSolitaireAbstractMatrix *)userInfo{ - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - NSString * targetUid = userInfo.uid; - NSString * roomId = [NSString stringWithFormat:@"%ld", userInfo.roomInfo.roomId]; - if ([uid isEqualToString:targetUid]) { - return; - } else { - [self.functionGarment removeAllObjects]; - if (!userInfo.hideSendGiftItem) { - [self.functionGarment addObject:self.presentProvision]; - } - [self.functionGarment addObject:self.chinwagProvision]; - [self.functionGarment addObject:self.atProvision]; - [self.functionGarment addObject:self.considerationProvision]; - - [self consumerConsidertowardsionPosition:uid targetUid:targetUid]; - - BOOL meIsSensationalManagement = NO; - - BOOL heIsSuperAdmin = NO; - for (UnionSensationalManagementAbstractMatrix *executiveAbstract in userInfo.superMangerList) { - if ([executiveAbstract.uid isEqualToString:userInfo.uid]) { - heIsSuperAdmin = YES; - } - if ([executiveAbstract.uid isEqualToString:[AccountAbstractStorage instance].acquireCid]) { - meIsSensationalManagement = YES; - } - } - @weakify(self); - if (meIsSensationalManagement) { - if (heIsSuperAdmin) { - [[self acquireRegard] dwellEarnObligtowardsionGarmentSccess:self.functionGarment]; - } else { - - [[self rac_queryChinwagChamberComponent:targetUid roomId:roomId] subscribeNext:^(id _Nullable x) { - NIMChatroomMember * targetMember = x; - if (targetMember == nil) {return;} - if (targetMember.type == NIMChatroomMemberTypeCreator) { - [[self acquireRegard] dwellEarnObligtowardsionGarmentSccess:self.functionGarment]; - } else { - if (targetMember && targetMember.type == NIMChatroomMemberTypeManager) { - self.executiveProvision.isSelect = YES; - } - [self.functionGarment addObject:self.executiveProvision]; - [self.functionGarment addObject:self.kikoutProvision]; - [self.functionGarment addObject:self.blackProvision]; - [[self acquireRegard] dwellEarnObligtowardsionGarmentSccess:self.functionGarment]; - } - }]; - } - } else { - [[self rac_queryChinwagChamberComponent:uid roomId:roomId] subscribeNext:^(id _Nullable x) { - @strongify(self); - NIMChatroomMember * member = x; - if (member == nil) {return;} - if (member.type == NIMChatroomMemberTypeCreator) { - if (heIsSuperAdmin) { - [[self acquireRegard] dwellEarnObligtowardsionGarmentSccess:self.functionGarment]; - } else { - [self.functionGarment addObject:self.kikoutProvision]; - [self.functionGarment addObject:self.executiveProvision]; - [self.functionGarment addObject:self.blackProvision]; - - [[self rac_queryChinwagChamberComponent:targetUid roomId:roomId] subscribeNext:^(id _Nullable x) { - NIMChatroomMember * targetMember = x; - if (targetMember && targetMember.type == NIMChatroomMemberTypeManager) { - self.executiveProvision.isSelect = YES; - } - [[self acquireRegard] dwellEarnObligtowardsionGarmentSccess:self.functionGarment]; - }]; - } - } else if(member.type == NIMChatroomMemberTypeManager) { - - [[self rac_queryChinwagChamberComponent:targetUid roomId:roomId] subscribeNext:^(id _Nullable x) { - NIMChatroomMember * targetMember = x; - if (targetMember == nil) {return;} - if (targetMember.type == NIMChatroomMemberTypeManager || targetMember.type == NIMChatroomMemberTypeCreator || heIsSuperAdmin) { - [[self acquireRegard] dwellEarnObligtowardsionGarmentSccess:self.functionGarment]; - } else { - [self.functionGarment addObject:self.kikoutProvision]; - [self.functionGarment addObject:self.blackProvision]; - [[self acquireRegard] dwellEarnObligtowardsionGarmentSccess:self.functionGarment]; - } - }]; - } else { - [[self acquireRegard] dwellEarnObligtowardsionGarmentSccess:self.functionGarment]; - } - }]; - } - } -} - -- (void)acquireChamberMiecreoscoopeProvisions:(int)micCount automobiledAbstract:(YUMIConsumerSolitaireAbstractMatrix *)automobiledAbstract { - [self.functionGarment removeAllObjects]; - ChamberAbstractMatrix * roomInfo = automobiledAbstract.roomInfo; - NSMutableDictionary * micQueue = automobiledAbstract.micQueue; - for (int i = 0; i < micCount; i++) { - YUMIConsumerSolitaireProvisionMatrix * item = [[YUMIConsumerSolitaireProvisionMatrix alloc] init]; - item.type = ConsumerSolitaireProvisionGenre_Invite_Micro; - if (i == 0) { - item.title = roomInfo.roomModeType == ChamberModeGenre_Open_Blind ? @"主持位" : YMLocalizedString(@"YUMI_User_Card_Presenter_1"); - item.imageName = roomInfo.leaveMode ? @"usercard_invite_micro_owner_disable" : @"usercard_invite_micro_owner"; - if (roomInfo.leaveMode) { - item.isEnable = NO; - } - } else { - if (roomInfo.roomModeType == ChamberModeGenre_Open_Blind) { - if (i == 1 || i == 2 || i == 5 || i == 6) { - item.title = [NSString stringWithFormat:YMLocalizedString(@"YUMI_User_Card_Presenter_2"), i]; - } else{ - item.title = [NSString stringWithFormat:YMLocalizedString(@"YUMI_User_Card_Presenter_3"), i]; - } - } else { - item.title = [NSString stringWithFormat:YMLocalizedString(@"YUMI_User_Card_Presenter_4"), i]; - } - - } - MiecreoscoopeMHTueueMatrix * micModel = [micQueue objectForKey:[NSString stringWithFormat:@"%d", i -1]]; - if (micModel && micModel.userInfo && micModel.userInfo.uid > 0) { - item.isEnable = NO; - item.imageName = @"usercard_invite_micro_disable"; - } else { - item.isEnable = YES; - item.imageName = @"usercard_invite_micro_normal"; - } - item.position = [NSString stringWithFormat:@"%d", (i - 1)]; - [self.functionGarment addObject:item]; - } - [[self acquireRegard] dwellEarnObligtowardsionGarmentSccess:self.functionGarment]; -} - -- (void)acquireMiecreoscoopeObligtowardsionProvisionsByConsumerAbstract:(YUMIConsumerSolitaireAbstractMatrix *)userInfo { - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - NSString * targetUid = userInfo.uid; - ChamberAbstractMatrix * roomInfo = userInfo.roomInfo; - NSString * roomId = [NSString stringWithFormat:@"%ld", userInfo.roomInfo.roomId]; - MiecreoscoopeMHTueueMatrix * micQueue = [userInfo.micQueue objectForKey:userInfo.position]; - NSMutableArray * array = [NSMutableArray array]; - YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix * muteItem = [[YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix alloc] init]; - muteItem.title = userInfo.micState == MiecreoscoopeLoudspeakerDeclareGenre_Open ? @"闭麦" : YMLocalizedString(@"YUMI_User_Card_Presenter_6"); - muteItem.status = userInfo.micState == MiecreoscoopeLoudspeakerDeclareGenre_Open; - muteItem.type = ConsumerSolitaireMiecreoscoopeGenre_Mute; - - YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix * upDownItem = [[YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix alloc] init]; - upDownItem.title = userInfo.position.length <= 0 ? @"抱Ta上麦" : [uid isEqualToString:targetUid] ? @"下麦旁听" : YMLocalizedString(@"YUMI_User_Card_Presenter_9"); - upDownItem.status = userInfo.position.length > 0 ? YES : NO; - upDownItem.type = ConsumerSolitaireMiecreoscoopeGenre_UpDown; - - YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix * lockItem = [[YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix alloc] init]; - lockItem.title = userInfo.posState == MiecreoscoopePosDeclareGenre_Free ? @"锁麦" : YMLocalizedString(@"YUMI_User_Card_Presenter_11"); - lockItem.status = userInfo.posState == MiecreoscoopePosDeclareGenre_Free; - lockItem.type = ConsumerSolitaireMiecreoscoopeGenre_Lock; - - YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix * giftValueItem = [[YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix alloc] init]; - giftValueItem.title = YMLocalizedString(@"YUMI_User_Card_Presenter_12"); - giftValueItem.type = ConsumerSolitaireMiecreoscoopeGenre_Clean_Gift_Value; - - BOOL meIsSensationalManagement = NO; - - BOOL heIsSuperAdmin = NO; - for (UnionSensationalManagementAbstractMatrix *executiveAbstract in userInfo.superMangerList) { - if ([executiveAbstract.uid isEqualToString:userInfo.uid]) { - heIsSuperAdmin = YES; - } - if ([executiveAbstract.uid isEqualToString:[AccountAbstractStorage instance].acquireCid]) { - meIsSensationalManagement = YES; - } - } - if ([targetUid isEqualToString:uid]) { - @weakify(self); - [[self rac_queryChinwagChamberComponent:targetUid roomId:roomId] subscribeNext:^(id _Nullable x) { - @strongify(self); - NIMChatroomMember * member = x; - if (member == nil) {return;} - if (userInfo.roomInfo.type == ChamberGenre_Anchor) { - if (member.type == NIMChatroomMemberTypeCreator) { - [array addObject:muteItem]; - [array addObject:lockItem]; - if (roomInfo.showGiftValue) { - [array addObject:giftValueItem]; - } - } else if(member.type == NIMTeamMemberTypeManager || meIsSensationalManagement) { - [array addObject:muteItem]; - if (userInfo.position.length > 0) { - [array addObject:upDownItem]; - } - [array addObject:lockItem]; - if (userInfo.roomInfo.type == ChamberGenre_Anchor && userInfo.roomInfo.roomModeType == ChamberModeGenre_Open_AcrossRoomPK_mode) { - [array removeAllObjects]; - } - } else { - if (userInfo.position.length > 0) { - [array addObject:upDownItem]; - } - if (userInfo.roomInfo.type == ChamberGenre_Anchor && userInfo.roomInfo.roomModeType == ChamberModeGenre_Open_AcrossRoomPK_mode) { - [array removeAllObjects]; - } - } - } else { - if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager || meIsSensationalManagement) { - if (userInfo.roomInfo.leaveMode && userInfo.uid.integerValue == userInfo.roomInfo.uid && [userInfo.position isEqualToString:@"-1"]) { - [array addObject:muteItem]; - [array addObject:upDownItem]; - [array addObject:lockItem]; - if (roomInfo.showGiftValue) { - [array addObject:giftValueItem]; - } - } else { - if (userInfo.position.length > 0) { - [array addObject:muteItem]; - [array addObject:upDownItem]; - if (![userInfo.position isEqualToString:@"999"]) { - [array addObject:lockItem]; - } - if (roomInfo.showGiftValue) { - [array addObject:giftValueItem]; - } - } else { - [array addObject:upDownItem]; - } - } - } else { - if (userInfo.position.length > 0) { - [array addObject:upDownItem]; - } - } - } - [[self acquireRegard] dwellEarnMiecreoscoopeObligtowardsionGarmentAccomplishment:array]; - }]; - } else { - @weakify(self); - [[self rac_queryChinwagChamberComponent:uid roomId:roomId] subscribeNext:^(id _Nullable x) { - @strongify(self); - NIMChatroomMember * member = x; - if (member == nil) {return;} - if (member.type == NIMChatroomMemberTypeCreator) { - if (userInfo.position.length > 0) { - if (micQueue.userInfo.vipMic) { - [array addObject:muteItem]; - if (roomInfo.showGiftValue) { - [array addObject:giftValueItem]; - } - } else { - [array addObject:muteItem]; - [array addObject:upDownItem]; - [array addObject:lockItem]; - if (userInfo.roomInfo.type != ChamberGenre_Anchor) { - if (roomInfo.showGiftValue) { - [array addObject:giftValueItem]; - } - } - } - } else { - [array addObject:upDownItem]; - } - if (userInfo.roomInfo.type == ChamberGenre_Anchor && userInfo.roomInfo.roomModeType == ChamberModeGenre_Open_AcrossRoomPK_mode) { - [array removeAllObjects]; - } - [[self acquireRegard] dwellEarnMiecreoscoopeObligtowardsionGarmentAccomplishment:array]; - } else if(member.type == NIMChatroomMemberTypeManager || meIsSensationalManagement) { - [[self rac_queryChinwagChamberComponent:targetUid roomId:roomId] subscribeNext:^(id _Nullable x) { - NIMChatroomMember * targetMember = x; - if (targetMember == nil) {return;} - if (userInfo.roomInfo.type == ChamberGenre_Anchor) { - if (userInfo.position.length > 0) { - if (targetMember.type != NIMChatroomMemberTypeManager && targetMember.type != NIMChatroomMemberTypeCreator) { - [array addObject:muteItem]; - } - if (targetMember.type != NIMChatroomMemberTypeCreator) { - [array addObject:upDownItem]; - } - [array addObject:lockItem]; - } - - if (userInfo.uid.integerValue == userInfo.roomInfo.uid && [userInfo.position isEqualToString:@"-1"]) { - [array addObject:giftValueItem]; - } - - } else { - if (targetMember.type == NIMChatroomMemberTypeCreator) { - if (userInfo.position.length > 0) { - if (!micQueue.userInfo.vipMic) { - [array addObject:lockItem]; - } - } else { - [array addObject:upDownItem]; - } - if (roomInfo.showGiftValue) { - [array addObject:giftValueItem]; - } - } else { - if (userInfo.position.length > 0) { - if (targetMember.type != NIMChatroomMemberTypeManager) { - [array addObject:muteItem]; - } - if (!micQueue.userInfo.vipMic) { - [array addObject:upDownItem]; - [array addObject:lockItem]; - } - if (roomInfo.showGiftValue) { - [array addObject:giftValueItem]; - } - } else { - [array addObject:upDownItem]; - } - } - } - if (userInfo.roomInfo.type == ChamberGenre_Anchor && userInfo.roomInfo.roomModeType == ChamberModeGenre_Open_AcrossRoomPK_mode) { - [array removeAllObjects]; - } - [[self acquireRegard] dwellEarnMiecreoscoopeObligtowardsionGarmentAccomplishment:array]; - }]; - } - }]; - } -} - -- (void)considertowardsionConsumer:(NSString *)targetUid status:(BOOL)status { - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - NSString * ticket = [[AccountAbstractStorage instance] acquireTicket]; - NSString * type = status ? @"1" : @"2"; - [Api considertowardsionImplementtowardsion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - self.considerationProvision.isSelect = status; - [[self acquireRegard] considertowardsionConsumerAccomplishment:self.considerationProvision]; - }] uid:uid likedUid:targetUid ticket:ticket type:type]; -} - - -- (void)manufactureConsumerDenigrtowardse:(NSString *)targetUid roomId:(NSString *)roomId{ - NIMChatroomMemberUpdateRequest *request = [[NIMChatroomMemberUpdateRequest alloc]init]; - request.roomId = roomId; - request.userId = targetUid; - request.enable = YES; - [[NIMSDK sharedSDK].chatroomManager updateMemberBlack:request completion:^(NSError * _Nullable error) { - [[self acquireRegard] manufactureConsumerDenigrtowardseAccomplish:error]; - }]; -} - - -- (void)manufactureConsumerExecutive:(NSString *)targetUid roomId:(NSString *)roomId enable:(BOOL)enable{ - NIMChatroomMemberUpdateRequest *request = [[NIMChatroomMemberUpdateRequest alloc]init]; - request.roomId = roomId; - request.userId = targetUid; - request.enable = enable; - [[NIMSDK sharedSDK].chatroomManager markMemberManager:request completion:^(NSError * _Nullable error) { - if (error == nil) { - self.executiveProvision.isSelect = enable; - } - [[self acquireRegard] markConsumerExecutiveAccomplish:self.executiveProvision error:error]; - }]; -} - - -- (void)manufactureAbandonConsumer:(NSString *)targetUid roomId:(NSString *)roomId { - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - NIMChatroomMemberKickRequest *request = [[NIMChatroomMemberKickRequest alloc] init]; - request.roomId = roomId; - request.userId = targetUid; - request.notifyExt = [@{@"reason":@"kick",@"account":targetUid,@"handleUid":uid} toJSONBWSttr]; - [[NIMSDK sharedSDK].chatroomManager kickMember:request completion:^(NSError * _Nullable error) { - [[self acquireRegard] manufactureAbandonConsumerAccomplish:error]; - }]; -} - -- (void)senstowardsionalManagementAbandonConsumer:(NSString *)targetNick automobiledAbstract:(YUMIConsumerSolitaireAbstractMatrix *)automobiledAbstract { - NSString * targetUid = automobiledAbstract.uid; - NSString * roomId = [NSString stringWithFormat:@"%ld", automobiledAbstract.roomInfo.roomId]; - [[self rac_queryChinwagChamberComponent:targetUid roomId:roomId] subscribeNext:^(id _Nullable x) { - NIMChatroomMember * member = x; - if (member == nil) {return;} - if (member.type == NIMChatroomMemberTypeManager) { - XCombatickConsumerMatrix *notifyModel = [[XCombatickConsumerMatrix alloc] init]; - notifyModel.handleNick = automobiledAbstract.nick; - notifyModel.handleUid = [AccountAbstractStorage instance].acquireCid.integerValue; - notifyModel.targetUid = automobiledAbstract.uid.integerValue; - notifyModel.targetNick = targetNick; - AttachmentMatrix *attachment = [[AttachmentMatrix alloc] init]; - attachment.first = IndividualityCommunicationGenre_Hall_Super_Admin; - attachment.second = Custom_Message_Sub_Hall_Super_Admin_Kick_Manager_Out_Room; - attachment.data = [notifyModel mtowardsrix2dictionary]; - NSString * sessionId = [NSString stringWithFormat:@"%ld", automobiledAbstract.roomInfo.roomId]; - NIMMessage *message = [[NIMMessage alloc]init]; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachment; - message.messageObject = object; - - NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom]; - NSError * error; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:&error]; - [[self acquireRegard] senstowardsionalManagementAbandonConsumerAccomplish:error]; - } else { - [self manufactureAbandonConsumer:automobiledAbstract.uid roomId:roomId]; - } - }]; -} - -- (void)miecreoscoopeBretowardshaed:(NSString *)roomUid state:(BOOL)state position:(NSString *)position { - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - NSString * ticket = [[AccountAbstractStorage instance] acquireTicket]; - NSString * stateStr = state ? @"1" : @"0"; - [Api miecreoscoopeBretowardshaedImplementtowardsion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] muteMiecreoscoopeSusccess]; - }] roomUid:roomUid state:stateStr position:position ticket:ticket uid:uid]; -} - -- (void)miecreoscoopeSpoke:(NSString *)roomUid state:(BOOL)state position:(NSString *)position { - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - NSString * ticket = [[AccountAbstractStorage instance] acquireTicket]; - NSString * stateStr = state ? @"1" : @"0"; - [Api miecreoscoopeSpokeImplementtowardsion:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] lockMiecreoscoopeSusccess]; - }] roomUid:roomUid state:stateStr position:position ticket:ticket uid:uid]; -} - -- (void)kickPubescenceMiecreoscoope:(NSString *)position roomId:(NSString *)roomId { - NIMChatroomQueueRemoveRequest *request = [[NIMChatroomQueueRemoveRequest alloc]init]; - request.key = position; - request.roomId = roomId; - [[NIMSDK sharedSDK].chatroomManager removeChatroomQueueObject:request completion:^(NSError * _Nullable error, NSDictionary * _Nullable element) { - if (error == nil ) { - [[self acquireRegard] kickPubescenceMiecreoscoopeAccomplishment]; - } - }]; -} - - -- (void)upMiecreoscoope:(NSString *)roomId position:(NSString *)position userInfo:(ConsumerAbstractMatrix *)userInfo { - NIMChatroomQueueUpdateRequest *request = [[NIMChatroomQueueUpdateRequest alloc]init]; - request.key = position; - request.value = [userInfo toJSONBWSttr]; - request.roomId = roomId; - request.transient = YES; - [[NIMSDK sharedSDK].chatroomManager updateChatroomQueueObject:request completion:^(NSError * _Nullable error) { - if (error == nil) { - [[self acquireRegard] upMiecreoscoopeAccomplishment]; - } - }]; -} - - -- (void)sanitaryConsumerPresentBWSttess:(NSString *)roomUid micUid:(NSString *)micUid { - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - [Api sanitaryMiecreoscoopePresentBWSttess:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] sanitaryConsumerPresentBWSttessAccomplishment:data.data]; - }] roomUid:roomUid micUid:micUid uid:uid]; -} - - -- (void)extractCourageConsumer:(NSString *)roomUid chosenUserId:(NSString *)chosenUserId { - NSString * uid = [[AccountAbstractStorage instance] acquireCid]; - [Api chamberEngagementExtractConsumer:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] chamberEngagementExtractCourageConsumerAccomplishment]; - }] roomUserId:roomUid chosenUserId:chosenUserId electorUserId:uid]; -} - - -- (void)senstowardsionalManagementShankConsumer:(NSString *)targetUid opt:(NSString *)opt roomUid:(NSString *)roomUid isSet:(BOOL)isSet{ - [Api senstowardsionalManagementShankConsumer:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] senstowardsionalManagementShankConsumerAccomplishment:opt]; - }] roomUid:roomUid targetUid:targetUid opt:opt isSet:@(isSet)]; -} - -#pragma mark - Private Method -- (RACSignal *)rac_queryChinwagChamberComponent:(NSString *)uid roomId:(NSString *)roomId{ - return [RACSignal createSignal:^RACDisposable *(id subscriber) { - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = roomId; - request.userIds = @[uid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - if (error == nil) { - [subscriber sendNext:members.firstObject]; - [subscriber sendCompleted]; - }else { - [subscriber sendNext:nil]; - [subscriber sendCompleted]; - } - }]; - return nil; - }]; -} - -#pragma mark - Getters And Setters -- (NSMutableArray *)functionGarment { - if (!_functionGarment) { - _functionGarment = [NSMutableArray array]; - } - return _functionGarment; -} - -- (YUMIConsumerSolitaireProvisionMatrix *)presentProvision { - if (!_presentProvision) { - _presentProvision = [[YUMIConsumerSolitaireProvisionMatrix alloc] init]; - _presentProvision.title = YMLocalizedString(@"YUMI_User_Card_Presenter_13"); - _presentProvision.imageName = @"usercard_sendgift_normal"; - _presentProvision.selectImageName = @"usercard_sendgift_normal"; - _presentProvision.type = ConsumerSolitaireProvisionGenre_Gift; - } - return _presentProvision; -} - -- (YUMIConsumerSolitaireProvisionMatrix *)chinwagProvision { - if (!_chinwagProvision) { - _chinwagProvision = [[YUMIConsumerSolitaireProvisionMatrix alloc] init]; - _chinwagProvision.title = YMLocalizedString(@"YUMI_User_Card_Presenter_14"); - _chinwagProvision.imageName = @"usercard_chat_normal"; - _chinwagProvision.selectImageName = @"usercard_chat_normal"; - _chinwagProvision.type = ConsumerSolitaireProvisionGenre_Chat; - } - return _chinwagProvision; -} - -- (YUMIConsumerSolitaireProvisionMatrix *)atProvision { - if (!_atProvision) { - _atProvision = [[YUMIConsumerSolitaireProvisionMatrix alloc] init]; - _atProvision.title = @"@TA"; - _atProvision.imageName = @"usercard_chat_normal"; - _atProvision.selectImageName = @"usercard_chat_normal"; - _atProvision.type = ConsumerSolitaireProvisionGenre_AtUser; - } - return _atProvision; -} - -- (YUMIConsumerSolitaireProvisionMatrix *)considerationProvision { - if (!_considerationProvision) { - _considerationProvision = [[YUMIConsumerSolitaireProvisionMatrix alloc] init]; - _considerationProvision.title = @"关注Ta"; - _considerationProvision.imageName = @"usercard_attention_normal"; - _considerationProvision.selectTitle = YMLocalizedString(@"YUMI_User_Card_Presenter_16"); - _considerationProvision.selectImageName = @"usercard_attention_disable"; - _considerationProvision.type = ConsumerSolitaireProvisionGenre_Attention; - } - return _considerationProvision; -} - -- ( YUMIConsumerSolitaireProvisionMatrix *)kikoutProvision { - if (!_kikoutProvision) { - _kikoutProvision = [[YUMIConsumerSolitaireProvisionMatrix alloc] init]; - _kikoutProvision.title = YMLocalizedString(@"YUMI_User_Card_Presenter_17"); - _kikoutProvision.imageName = @"usercard_kickout_normal"; - _kikoutProvision.selectImageName = @"usercard_kickout_normal"; - _kikoutProvision.type = ConsumerSolitaireProvisionGenre_KickOut; - } - return _kikoutProvision; -} - -- (YUMIConsumerSolitaireProvisionMatrix *)executiveProvision { - if (!_executiveProvision) { - _executiveProvision = [[YUMIConsumerSolitaireProvisionMatrix alloc] init]; - _executiveProvision.title = YMLocalizedString(@"YUMI_User_Card_Presenter_18"); - _executiveProvision.imageName = @"usercard_manager_normal"; - _executiveProvision.selectTitle = YMLocalizedString(@"YUMI_User_Card_Presenter_19"); - _executiveProvision.selectImageName = @"usercard_manager_disable"; - _executiveProvision.type = ConsumerSolitaireProvisionGenre_Manager; - } - return _executiveProvision; -} - -- (YUMIConsumerSolitaireProvisionMatrix *)blackProvision { - if (!_blackProvision) { - _blackProvision = [[YUMIConsumerSolitaireProvisionMatrix alloc] init]; - _blackProvision.title = YMLocalizedString(@"YUMI_User_Card_Presenter_20"); - _blackProvision.imageName = @"usercard_blacklist_normal"; - _blackProvision.type = ConsumerSolitaireProvisionGenre_Black; - } - return _blackProvision; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/UserCard/Protocol/FBCConsumerSolitaireCeremony.h b/YuMi/Modules/YMRoom/View/UserCard/Protocol/FBCConsumerSolitaireCeremony.h deleted file mode 100644 index d91e5ca4..00000000 --- a/YuMi/Modules/YMRoom/View/UserCard/Protocol/FBCConsumerSolitaireCeremony.h +++ /dev/null @@ -1,31 +0,0 @@ -// -// YMUserCardProtocol.h -// YUMI -// -// Created by YUMI on 2021/11/24. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ConsumerAbstractMatrix, YUMIConsumerSolitaireProvisionMatrix, YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix; -@protocol FBCConsumerSolitaireCeremony - -- (void)dwellEarnConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo; -- (void)dwellEarnObligtowardsionGarmentSccess:(NSArray *)array; -- (void)dwellEarnMiecreoscoopeObligtowardsionGarmentAccomplishment:(NSArray *)array; -- (void)considertowardsionConsumerAccomplishment:(YUMIConsumerSolitaireProvisionMatrix *)item; -- (void)manufactureConsumerDenigrtowardseAccomplish:(NSError *)error; -- (void)markConsumerExecutiveAccomplish:(YUMIConsumerSolitaireProvisionMatrix *)item error:(NSError *)error; -- (void)manufactureAbandonConsumerAccomplish:(NSError *)error; -- (void)senstowardsionalManagementAbandonConsumerAccomplish:(NSError *)error; -- (void)kickPubescenceMiecreoscoopeAccomplishment; -- (void)upMiecreoscoopeAccomplishment; -- (void)muteMiecreoscoopeSusccess; -- (void)lockMiecreoscoopeSusccess; -- (void)sanitaryConsumerPresentBWSttessAccomplishment:(NSDictionary *)dic; -- (void)chamberEngagementExtractCourageConsumerAccomplishment; -- (void)senstowardsionalManagementShankConsumerAccomplishment:(NSString *)opt; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/UserCard/Protocol/XPUserCardProtocol.h b/YuMi/Modules/YMRoom/View/UserCard/Protocol/XPUserCardProtocol.h new file mode 100644 index 00000000..f75cb785 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/UserCard/Protocol/XPUserCardProtocol.h @@ -0,0 +1,46 @@ +// +// YMUserCardProtocol.h +// YUMI +// +// Created by YUMI on 2021/11/24. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class UserInfoModel, XPUserCardItemModel, XPUserCardMicroItemModel; +@protocol XPUserCardProtocol + +///获取用户信息成功 +- (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo; +///获取用户卡片中 functioin的数据源 +- (void)onGetFunctionArraySccess:(NSArray *)array; +///获取用户卡片中 操作麦的 functioin的数据源 +- (void)onGetMicroFunctionArraySuccess:(NSArray *)array; +///关注成功 +- (void)attentionUserSuccess:(XPUserCardItemModel *)item; +///加入黑名单 +- (void)makeUserBlackFinish:(NSError *)error; +///设置管理 取消管理员 成功 +- (void)markUserManagerFinish:(XPUserCardItemModel *)item error:(NSError *)error; +/// 踢出房间 +- (void)makeKickUserFinish:(NSError *)error; +///超管踢管理出房间 +- (void)superAdminKickUserFinish:(NSError *)error; +///抱下麦成功 +- (void)kickDownMicroSuccess; +///抱上麦成功 +- (void)upMicroSuccess; +///操作静音成功 +- (void)muteMicroSusccess; +///操作锁坑成功 +- (void)lockMicroSusccess; +///清除用户礼物值成功 +- (void)cleanUserGiftValueSuccess:(NSDictionary *)dic; +///选择心动成功 +- (void)roomDatingPickHeartUserSuccess; +///超管处理用户操作成功 +- (void)superAdminHandleUserSuccess:(NSString *)opt; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/UserCard/ThemeColor+UserCard.h b/YuMi/Modules/YMRoom/View/UserCard/ThemeColor+UserCard.h index 8689de38..5d18383a 100644 --- a/YuMi/Modules/YMRoom/View/UserCard/ThemeColor+UserCard.h +++ b/YuMi/Modules/YMRoom/View/UserCard/ThemeColor+UserCard.h @@ -1,5 +1,5 @@ // -// ThemeColor+UserCard.h +// ThemeColorUserCard.h // YUMI // // Created by YUMI on 2021/11/24. @@ -10,10 +10,14 @@ NS_ASSUME_NONNULL_BEGIN @interface DJDKMIMOMColor (UserCard) -+ (UIColor *)consumerMonicerPrettify; -+ (UIColor *)consumerMetroChampionPrettify; -+ (UIColor *)consumerMiecreoscoopeChampionPrettify; -+ (UIColor *)consumerDividerPrettify; +///名字的颜色 FFFFF ++ (UIColor *)userNickColor; +/// 0x66666 ++ (UIColor *)userSubTitleColor; +/// 操作坑位的字体颜色 333333 ++ (UIColor *)userMicroTitleColor; +/// 用户卡片 分割线的颜色 #F1F1F1 ++ (UIColor *)userDividerColor; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/UserCard/ThemeColor+UserCard.m b/YuMi/Modules/YMRoom/View/UserCard/ThemeColor+UserCard.m index d64b13de..42804ea7 100644 --- a/YuMi/Modules/YMRoom/View/UserCard/ThemeColor+UserCard.m +++ b/YuMi/Modules/YMRoom/View/UserCard/ThemeColor+UserCard.m @@ -1,5 +1,5 @@ // -// ThemeColor+UserCard.m +// ThemeColorUserCard.m // YUMI // // Created by YUMI on 2021/11/24. @@ -9,18 +9,22 @@ @implementation DJDKMIMOMColor (UserCard) -+ (UIColor *)consumerMonicerPrettify { +///名字的颜色 FFFFF ++ (UIColor *)userNickColor { return UIColorFromRGB(0xFFFFFF); } -+ (UIColor *)consumerMetroChampionPrettify { +/// 0x66666 ++ (UIColor *)userSubTitleColor { return UIColorFromRGB(0x666666); } -+ (UIColor *)consumerMiecreoscoopeChampionPrettify { +/// 操作坑位的字体颜色 333333 ++ (UIColor *)userMicroTitleColor { return UIColorFromRGB(0x333333); } -+ (UIColor *)consumerDividerPrettify { +/// 用户卡片 分割线的颜色 #F1F1F1 ++ (UIColor *)userDividerColor { return UIColorFromRGB(0xF1F1F1); } diff --git a/YuMi/Modules/YMRoom/View/UserCard/View/Cell/XPUserCardItemCollectionViewCell.h b/YuMi/Modules/YMRoom/View/UserCard/View/Cell/XPUserCardItemCollectionViewCell.h new file mode 100644 index 00000000..ded56bcf --- /dev/null +++ b/YuMi/Modules/YMRoom/View/UserCard/View/Cell/XPUserCardItemCollectionViewCell.h @@ -0,0 +1,17 @@ +// +// YMUserCardItemCollectionViewCell.h +// YUMI +// +// Created by YUMI on 2021/11/24. +// + +#import +#import "XPUserCardItemModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPUserCardItemCollectionViewCell : UICollectionViewCell +/// +@property (nonatomic,strong) XPUserCardItemModel *itemModel; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/UserCard/View/Cell/XPUserCardItemCollectionViewCell.m b/YuMi/Modules/YMRoom/View/UserCard/View/Cell/XPUserCardItemCollectionViewCell.m new file mode 100644 index 00000000..5de25e17 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/UserCard/View/Cell/XPUserCardItemCollectionViewCell.m @@ -0,0 +1,88 @@ +// +// YMUserCardItemCollectionViewCell.m +// YUMI +// +// Created by YUMI on 2021/11/24. +// + +#import "XPUserCardItemCollectionViewCell.h" +///Third +#import +///Tool +#import "ThemeColor+UserCard.h" + +@interface XPUserCardItemCollectionViewCell () +///显示图片 +@property (nonatomic,strong) UIButton *logoButton; +///标题 +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPUserCardItemCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.logoButton]; + [self.contentView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.logoButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(35, 35)); + make.centerX.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.contentView); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.logoButton.mas_bottom).offset(8); + }]; +} +#pragma mark - Getters And Setters +- (void)setItemModel:(XPUserCardItemModel *)itemModel { + _itemModel = itemModel; + if (_itemModel.title.length > 0) { + self.titleLabel.text = _itemModel.title; + } + + if (_itemModel.isSelect && _itemModel.selectTitle.length > 0) { + self.titleLabel.text = _itemModel.selectTitle; + } + + if (_itemModel.imageName) { + [self.logoButton setImage:[UIImage imageNamed:_itemModel.imageName] forState:UIControlStateNormal]; + } + if (_itemModel.selectImageName) { + [self.logoButton setImage:[UIImage imageNamed:_itemModel.selectImageName] forState:UIControlStateSelected]; + } + self.logoButton.selected = _itemModel.isSelect; + self.logoButton.enabled = _itemModel.isEnable; +} + + +- (UIButton *)logoButton { + if (!_logoButton) { + _logoButton = [UIButton buttonWithType:UIButtonTypeCustom]; + _logoButton.userInteractionEnabled = NO; + } + return _logoButton; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:10]; + _titleLabel.textColor = [DJDKMIMOMColor userSubTitleColor]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/UserCard/View/Cell/YUMIConsumerSolitaireProvisionAssembletionRegardElement.h b/YuMi/Modules/YMRoom/View/UserCard/View/Cell/YUMIConsumerSolitaireProvisionAssembletionRegardElement.h deleted file mode 100644 index 240e5d51..00000000 --- a/YuMi/Modules/YMRoom/View/UserCard/View/Cell/YUMIConsumerSolitaireProvisionAssembletionRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMUserCardItemCollectionViewCell.h -// YUMI -// -// Created by YUMI on 2021/11/24. -// - -#import -#import "YUMIConsumerSolitaireProvisionMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIConsumerSolitaireProvisionAssembletionRegardElement : UICollectionViewCell -@property (nonatomic,strong) YUMIConsumerSolitaireProvisionMatrix *itemMatrix; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/UserCard/View/Cell/YUMIConsumerSolitaireProvisionAssembletionRegardElement.m b/YuMi/Modules/YMRoom/View/UserCard/View/Cell/YUMIConsumerSolitaireProvisionAssembletionRegardElement.m deleted file mode 100644 index 83763ab9..00000000 --- a/YuMi/Modules/YMRoom/View/UserCard/View/Cell/YUMIConsumerSolitaireProvisionAssembletionRegardElement.m +++ /dev/null @@ -1,84 +0,0 @@ -// -// YMUserCardItemCollectionViewCell.m -// YUMI -// -// Created by YUMI on 2021/11/24. -// - -#import "YUMIConsumerSolitaireProvisionAssembletionRegardElement.h" -#import -#import "ThemeColor+UserCard.h" - -@interface YUMIConsumerSolitaireProvisionAssembletionRegardElement () -@property (nonatomic,strong) UIButton *brandBtuton; -@property (nonatomic,strong) UILabel *titleLabel; -@end - -@implementation YUMIConsumerSolitaireProvisionAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.brandBtuton]; - [self.contentView addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.brandBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(35, 35)); - make.centerX.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.contentView); - }]; - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.brandBtuton.mas_bottom).offset(8); - }]; -} -#pragma mark - Getters And Setters -- (void)setItemMatrix:(YUMIConsumerSolitaireProvisionMatrix *)itemMatrix { - _itemMatrix = itemMatrix; - if (_itemMatrix.title.length > 0) { - self.titleLabel.text = _itemMatrix.title; - } - - if (_itemMatrix.isSelect && _itemMatrix.selectTitle.length > 0) { - self.titleLabel.text = _itemMatrix.selectTitle; - } - - if (_itemMatrix.imageName) { - [self.brandBtuton setImage:[UIImage imageNamed:_itemMatrix.imageName] forState:UIControlStateNormal]; - } - if (_itemMatrix.selectImageName) { - [self.brandBtuton setImage:[UIImage imageNamed:_itemMatrix.selectImageName] forState:UIControlStateSelected]; - } - self.brandBtuton.selected = _itemMatrix.isSelect; - self.brandBtuton.enabled = _itemMatrix.isEnable; -} - - -- (UIButton *)brandBtuton { - if (!_brandBtuton) { - _brandBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - _brandBtuton.userInteractionEnabled = NO; - } - return _brandBtuton; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:10]; - _titleLabel.textColor = [DJDKMIMOMColor consumerMetroChampionPrettify]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/XPUserCardSkillCardView.h b/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/XPUserCardSkillCardView.h new file mode 100644 index 00000000..7f629574 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/XPUserCardSkillCardView.h @@ -0,0 +1,18 @@ +// +// YMUserCardSkillCardView.h +// YUMI +// +// Created by YUMI on 2022/1/25. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPUserCardSkillCardView : UIView + +@property (nonatomic, strong) NSArray *dataArray; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/XPUserCardSkillCardView.m b/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/XPUserCardSkillCardView.m new file mode 100644 index 00000000..ef1090ed --- /dev/null +++ b/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/XPUserCardSkillCardView.m @@ -0,0 +1,98 @@ +// +// YMUserCardSkillCardView.m +// YUMI +// +// Created by YUMI on 2022/1/25. +// + +#import "XPUserCardSkillCardView.h" +#import "XPUserCardSkillCollectionViewCell.h" +///Third +#import +///Tool +#import "YUMIMacroUitls.h" +#import "ThemeColor+UserCard.h" +#import "NSArray+Safe.h" + +@interface XPUserCardSkillCardView() + +@property (nonatomic, strong) UICollectionView *collectionView; + +@end + +@implementation XPUserCardSkillCardView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubView]; + [self initContraints]; + } + return self; +} + +- (void)initSubView { + [self addSubview:self.collectionView]; +} + +- (void)initContraints { + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.right.bottom.mas_equalTo(0); + }]; +} + +#pragma mark - UICollectionViewDelegate +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.dataArray.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPUserCardSkillCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPUserCardSkillCollectionViewCell class]) forIndexPath:indexPath]; + cell.imageView.imageUrl = [self.dataArray safeObjectAtIndex1:indexPath.item]; + return cell; +} + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + CGFloat height = 30; + CGFloat width = 60; + XPUserCardSkillCollectionViewCell * cell = (XPUserCardSkillCollectionViewCell *)[collectionView cellForItemAtIndexPath:indexPath]; + + UIImage* image = cell.imageView.image; + if (image) { + CGFloat scale = image.size.width / image.size.height; + return CGSizeMake(20 * scale, height); + } else { + NSURL *imgUrl = [NSURL URLWithString:[self.dataArray safeObjectAtIndex1:indexPath.item]]; + UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; + CGFloat scale = myImage.size.width / myImage.size.height; + if (scale == 0) { + return CGSizeMake(60, height); + }else { + return CGSizeMake(20 * scale, height); + } + } + return CGSizeMake(width, height); +} + +- (void)setDataArray:(NSArray *)dataArray { + _dataArray = [NSArray arrayWithArray:dataArray]; + [self.collectionView reloadData]; +} + +- (UICollectionView *)collectionView{ + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.itemSize = CGSizeMake(60, 30); + layout.minimumLineSpacing = 0; + layout.minimumInteritemSpacing = 8; + layout.sectionInset = UIEdgeInsetsMake(0, 12, 0, 12); + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.showsHorizontalScrollIndicator = NO; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.backgroundColor = [UIColor clearColor]; + [_collectionView registerClass:[XPUserCardSkillCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPUserCardSkillCollectionViewCell class])]; + } + return _collectionView; +} +@end diff --git a/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/XPUserCardSkillCollectionViewCell.h b/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/XPUserCardSkillCollectionViewCell.h new file mode 100644 index 00000000..9d364941 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/XPUserCardSkillCollectionViewCell.h @@ -0,0 +1,19 @@ +// +// YMUserCardSkillCollectionViewCell.h +// YUMI +// +// Created by YUMI on 2022/1/25. +// + +#import +#import "NetImageView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPUserCardSkillCollectionViewCell : UICollectionViewCell + +@property (nonatomic, strong) NetImageView *imageView; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/XPUserCardSkillCollectionViewCell.m b/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/XPUserCardSkillCollectionViewCell.m new file mode 100644 index 00000000..8ded8fab --- /dev/null +++ b/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/XPUserCardSkillCollectionViewCell.m @@ -0,0 +1,43 @@ +// +// YMUserCardSkillCollectionViewCell.m +// YUMI +// +// Created by YUMI on 2022/1/25. +// + +#import "XPUserCardSkillCollectionViewCell.h" +///Third +#import + +@implementation XPUserCardSkillCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.imageView]; +} + +- (void)initSubViewConstraints { + [self.imageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(0); + make.top.bottom.mas_equalTo(self.contentView).inset(5); + }]; +} + +#pragma mark - Getters And Setters +- (NetImageView *)imageView { + if (!_imageView) { + _imageView = [[NetImageView alloc] init]; + _imageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _imageView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/YUMIConsumerSolitaireCommunicationAssembletionRegardElement.h b/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/YUMIConsumerSolitaireCommunicationAssembletionRegardElement.h deleted file mode 100644 index c91d8df8..00000000 --- a/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/YUMIConsumerSolitaireCommunicationAssembletionRegardElement.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMUserCardSkillCollectionViewCell.h -// YUMI -// -// Created by YUMI on 2022/1/25. -// - -#import -#import "NetIndicateRegard.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIConsumerSolitaireCommunicationAssembletionRegardElement : UICollectionViewCell - -@property (nonatomic, strong) NetIndicateRegard *imageView; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/YUMIConsumerSolitaireCommunicationAssembletionRegardElement.m b/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/YUMIConsumerSolitaireCommunicationAssembletionRegardElement.m deleted file mode 100644 index f1db730b..00000000 --- a/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/YUMIConsumerSolitaireCommunicationAssembletionRegardElement.m +++ /dev/null @@ -1,42 +0,0 @@ -// -// YMUserCardSkillCollectionViewCell.m -// YUMI -// -// Created by YUMI on 2022/1/25. -// - -#import "YUMIConsumerSolitaireCommunicationAssembletionRegardElement.h" -#import - -@implementation YUMIConsumerSolitaireCommunicationAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.imageView]; -} - -- (void)initChildLyRestrictions { - [self.imageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(0); - make.top.bottom.mas_equalTo(self.contentView).inset(5); - }]; -} - -#pragma mark - Getters And Setters -- (NetIndicateRegard *)imageView { - if (!_imageView) { - _imageView = [[NetIndicateRegard alloc] init]; - _imageView.contentMode = UIViewContentModeScaleAspectFit; - } - return _imageView; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/YUMIConsumerSolitaireCommunicationSolitaireRegard.h b/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/YUMIConsumerSolitaireCommunicationSolitaireRegard.h deleted file mode 100644 index 0c759957..00000000 --- a/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/YUMIConsumerSolitaireCommunicationSolitaireRegard.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMUserCardSkillCardView.h -// YUMI -// -// Created by YUMI on 2022/1/25. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIConsumerSolitaireCommunicationSolitaireRegard : UIView - -@property (nonatomic, strong) NSArray *atoloudspeakerGarment; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/YUMIConsumerSolitaireCommunicationSolitaireRegard.m b/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/YUMIConsumerSolitaireCommunicationSolitaireRegard.m deleted file mode 100644 index bb1aebac..00000000 --- a/YuMi/Modules/YMRoom/View/UserCard/View/SubViews/YUMIConsumerSolitaireCommunicationSolitaireRegard.m +++ /dev/null @@ -1,96 +0,0 @@ -// -// YMUserCardSkillCardView.m -// YUMI -// -// Created by YUMI on 2022/1/25. -// - -#import "YUMIConsumerSolitaireCommunicationSolitaireRegard.h" -#import "YUMIConsumerSolitaireCommunicationAssembletionRegardElement.h" -#import -#import "YUMIMacroUitls.h" -#import "ThemeColor+UserCard.h" -#import "NSArray+Safe.h" - -@interface YUMIConsumerSolitaireCommunicationSolitaireRegard() - -@property (nonatomic, strong) UICollectionView *collectionView; - -@end - -@implementation YUMIConsumerSolitaireCommunicationSolitaireRegard - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initChildLy]; - [self initContraints]; - } - return self; -} - -- (void)initChildLy { - [self addSubview:self.collectionView]; -} - -- (void)initContraints { - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.top.right.bottom.mas_equalTo(0); - }]; -} - -#pragma mark - UICollectionViewDelegate -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.atoloudspeakerGarment.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMIConsumerSolitaireCommunicationAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIConsumerSolitaireCommunicationAssembletionRegardElement class]) forIndexPath:indexPath]; - cell.imageView.imageUrl = [self.atoloudspeakerGarment secureGroalTowardsIndictowardsrix1:indexPath.item]; - return cell; -} - -- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { - CGFloat height = 30; - CGFloat width = 60; - YUMIConsumerSolitaireCommunicationAssembletionRegardElement * cell = (YUMIConsumerSolitaireCommunicationAssembletionRegardElement *)[collectionView cellForItemAtIndexPath:indexPath]; - - UIImage* image = cell.imageView.image; - if (image) { - CGFloat scale = image.size.width / image.size.height; - return CGSizeMake(20 * scale, height); - } else { - NSURL *imgUrl = [NSURL URLWithString:[self.atoloudspeakerGarment secureGroalTowardsIndictowardsrix1:indexPath.item]]; - UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; - CGFloat scale = myImage.size.width / myImage.size.height; - if (scale == 0) { - return CGSizeMake(60, height); - }else { - return CGSizeMake(20 * scale, height); - } - } - return CGSizeMake(width, height); -} - -- (void)setAtoloudspeakerGarment:(NSArray *)atoloudspeakerGarment { - _atoloudspeakerGarment = [NSArray arrayWithArray:atoloudspeakerGarment]; - [self.collectionView reloadData]; -} - -- (UICollectionView *)collectionView{ - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.itemSize = CGSizeMake(60, 30); - layout.minimumLineSpacing = 0; - layout.minimumInteritemSpacing = 8; - layout.sectionInset = UIEdgeInsetsMake(0, 12, 0, 12); - layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.showsHorizontalScrollIndicator = NO; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.backgroundColor = [UIColor clearColor]; - [_collectionView registerClass:[YUMIConsumerSolitaireCommunicationAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIConsumerSolitaireCommunicationAssembletionRegardElement class])]; - } - return _collectionView; -} -@end diff --git a/YuMi/Modules/YMRoom/View/UserCard/View/XPUserCardViewController.h b/YuMi/Modules/YMRoom/View/UserCard/View/XPUserCardViewController.h new file mode 100644 index 00000000..400b9045 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/UserCard/View/XPUserCardViewController.h @@ -0,0 +1,18 @@ +// +// YMUserCardViewController.h +// YUMI +// +// Created by YUMI on 2021/11/24. +// + +#import "MvpViewController.h" +#import "RoomhostDelegate.h" +#import "XPUserCardInfoModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPUserCardViewController : MvpViewController +- (instancetype)initWithUser:(XPUserCardInfoModel *)cardInfo; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/UserCard/View/XPUserCardViewController.m b/YuMi/Modules/YMRoom/View/UserCard/View/XPUserCardViewController.m new file mode 100644 index 00000000..bd584e38 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/UserCard/View/XPUserCardViewController.m @@ -0,0 +1,1404 @@ +// +// YMUserCardViewController.m +// YUMI +// +// Created by YUMI on 2021/11/24. +// + +#import "XPUserCardViewController.h" +///Third +#import +#import +///Tool +#import "YUMIMacroUitls.h" +#import "ThemeColor+UserCard.h" +#import "TTPopup.h" +#import "YUMIHtmlUrl.h" +#import "XNDJTDDLoadingTool.h" +#import "AccountInfoStorage.h" +#import "SpriteSheetImageManager.h" +#import "UIImage+Utils.h" +#import "XCCurrentVCStackManager.h" +#import "StatisticsServiceHelper.h" +#import "NSArray+Safe.h" +#import "NSMutableDictionary+Saft.h" +#import "ClientConfig.h" +///Model +#import "UserInfoModel.h" +#import "XPUserCardItemModel.h" +#import "RoomInfoModel.h" +#import "AttachmentModel.h" +#import "XPKickUserModel.h" +#import "XPUserCardMicroItemModel.h" +#import "MicroQueueModel.h" +#import "MicroStateModel.h" +///View +#import "XPSendGiftView.h" +#import "NetImageView.h" +#import "XPUserCardItemCollectionViewCell.h" +#import "XPUserCardSkillCardView.h" +#import "XPRoomSendTextView.h" +#import "XPRoomHalfMessageView.h" +///P +#import "XPUserCardPresenter.h" +#import "XPUserCardProtocol.h" +///VC +#import "XPWebViewController.h" +#import "XPMineUserInfoViewController.h" +#import "XPMineSimpleUserInfoViewController.h" +#import "SessionViewController.h" + +@interface XPUserCardViewController () +///上面点击的view +@property (nonatomic,strong) UIView *topTapView; +///下面点击的view +@property (nonatomic,strong) UIView *bottomTapView; +///背景 +@property (nonatomic,strong) UIView *backView; +///最外层的容器 +@property (nonatomic,strong) UIStackView *stackView; +///展示用户的信息 +@property (nonatomic,strong) UIView * userInfoView; +///贵族资料卡头饰 +@property (nonatomic, strong) NetImageView *nobleImageView; +///模糊效果 +@property (strong, nonatomic) UIVisualEffectView *effectView; +///头像背景 +@property (nonatomic,strong) NetImageView *backImageView; +///头饰 +@property (nonatomic,strong) YYAnimatedImageView *headWearImageView; +///头饰播放 +@property (nonatomic, strong) SpriteSheetImageManager *manager; +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///名字 +@property (nonatomic,strong) UILabel *nickLabel; +///性别 +@property (nonatomic,strong) UIImageView *sexImageView; +///新用户 +@property (nonatomic,strong) UIImageView *newUserImageView; +///官方的 +@property (nonatomic,strong) UIImageView *officalImageView; +///魅力等级 等级 铭牌 +@property (nonatomic,strong) UIStackView *tagStackView; +///魅力等级 +@property (nonatomic,strong) NetImageView *charmImageView; +///贵族icon +@property (nonatomic, strong) NetImageView *nobleIconImageView; +///等级 +@property (nonatomic,strong) NetImageView *experImageView; +///铭牌的容器 +@property (nonatomic,strong) UIView * namePlateView; +///铭牌图片 +@property (nonatomic,strong) NetImageView *nameplateImageView; +///铭牌文字 +@property (nonatomic,strong) UILabel *nameplateLabel; +///ID +@property (nonatomic,strong) UILabel *idLabel; +///复制ID +@property (nonatomic,strong) UIImageView *copysIdImageView; +///举报 +@property (nonatomic,strong) UIButton *reportButton; +///关闭 +@property (nonatomic,strong) UIButton *closeButton; +///列表 +@property (nonatomic,strong) UICollectionView *collectionView; +///技能卡列表 +@property (nonatomic, strong) XPUserCardSkillCardView *skillCardView; +///分割线 +@property (nonatomic,strong) UIView * sepLineView; +///操作的容器 +@property (nonatomic,strong) UIStackView *operaStackView; +///选择心动 +@property (nonatomic,strong) UIButton *pickHeartButton; +///选择心动的容器 +@property (nonatomic,strong) UIView * pickHeartView; +///展示用户的uid +@property (nonatomic,strong) XPUserCardInfoModel *cardInfo; +///数据源 +@property (nonatomic,copy) NSArray *datasource; +///操作麦序的数据 +@property (nonatomic,copy) NSArray * microItems; +///目标用户的信息 +@property (nonatomic,strong) UserInfoModel *targetUserInfo; + +@end + +@implementation XPUserCardViewController + +- (instancetype)initWithUser:(XPUserCardInfoModel *)cardInfo { + if (self = [super init]) { + self.modalPresentationStyle = UIModalPresentationOverFullScreen; + self.cardInfo = cardInfo; + } + return self; +} + +#pragma mark - Life Style +- (XPUserCardPresenter *)createPresenter { + return [[XPUserCardPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initHttp]; + [self initSubViews]; + [self initSubViewConstraints]; + [self initEvent]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.view.backgroundColor = [UIColor clearColor]; + ///设置颜色 stackView 设置背景色 会失败 + [self.view addSubview:self.topTapView]; + [self.view addSubview:self.backView]; + [self.view addSubview:self.bottomTapView]; + + [self.backView addSubview:self.stackView]; + [self.view addSubview:self.nobleImageView]; + + [self.stackView addArrangedSubview:self.userInfoView]; + [self.stackView addArrangedSubview:self.skillCardView]; + [self.stackView addArrangedSubview:self.collectionView]; + [self.stackView addArrangedSubview:self.sepLineView]; + [self.stackView addArrangedSubview:self.operaStackView]; + [self.stackView addArrangedSubview:self.pickHeartView]; + ///用户信息 + [self.userInfoView addSubview:self.backImageView]; + [self.userInfoView addSubview:self.effectView]; + [self.userInfoView addSubview:self.avatarImageView]; + [self.userInfoView addSubview:self.headWearImageView]; + [self.userInfoView addSubview:self.nobleIconImageView]; + [self.userInfoView addSubview:self.nickLabel]; + [self.userInfoView addSubview:self.sexImageView]; + [self.userInfoView addSubview:self.tagStackView]; + [self.userInfoView addSubview:self.idLabel]; + [self.userInfoView addSubview:self.copysIdImageView]; + [self.userInfoView addSubview:self.reportButton]; + [self.userInfoView addSubview:self.closeButton]; + ///用户信息中的标签 + [self.tagStackView addArrangedSubview:self.newUserImageView]; + [self.tagStackView addArrangedSubview:self.officalImageView]; + [self.tagStackView addArrangedSubview:self.experImageView]; + [self.tagStackView addArrangedSubview:self.charmImageView]; + [self.tagStackView addArrangedSubview:self.namePlateView]; + ///铭牌 + [self.namePlateView addSubview:self.nameplateImageView]; + [self.namePlateView addSubview:self.nameplateLabel]; + + [self.pickHeartView addSubview:self.pickHeartButton]; + [self configRoomDatingPickHeart]; +} + +- (void)initSubViewConstraints { + [self.topTapView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.left.right.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.backView.mas_top); + }]; + + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view).inset(45); + make.centerY.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.stackView.mas_bottom); + }]; + + [self.bottomTapView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.left.right.mas_equalTo(self.view); + make.top.mas_equalTo(self.backView.mas_bottom); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(KScreenWidth - 90); + make.top.centerX.mas_equalTo(self.backView); + }]; + + [self.userInfoView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(self.stackView); + make.height.mas_equalTo(110); + }]; + CGFloat nobleMargin = (KScreenWidth - 45) * 45.0 / (KScreenWidth - 90); + [self.nobleImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(180); + make.top.mas_equalTo(self.backView).mas_offset(-70); + make.right.mas_equalTo(self.backView).offset(nobleMargin*0.5); + make.left.mas_equalTo(self.backView).mas_offset(-nobleMargin*0.5); + }]; + [self.skillCardView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(self.userInfoView); + make.height.mas_equalTo(0); + }]; + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(self.userInfoView); + make.height.mas_equalTo(0); + }]; + + [self.sepLineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(KScreenWidth - 45 * 2 - 10 * 2, 1)); + }]; + + [self.operaStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(self.userInfoView); + make.height.mas_equalTo(40); + }]; + ///用户信息的子view + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.userInfoView); + }]; + + [self.effectView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.userInfoView); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(50, 50)); + make.left.mas_equalTo(self.userInfoView).offset(15); + make.top.mas_equalTo(self.userInfoView).offset(30); + }]; + + [self.headWearImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self.avatarImageView); + make.width.mas_equalTo(self.avatarImageView.mas_width).multipliedBy(1.31); + make.height.mas_equalTo(self.headWearImageView.mas_width); + }]; + + [self.nobleIconImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.headWearImageView.mas_right).offset(5); + make.top.mas_equalTo(self.avatarImageView); + make.height.mas_equalTo(20); + make.width.mas_equalTo(0); + }]; + + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nobleIconImageView.mas_right); + make.top.mas_equalTo(self.avatarImageView); + }]; + + [self.sexImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(14, 14)); + make.left.mas_equalTo(self.nickLabel.mas_right).offset(4); + make.centerY.mas_equalTo(self.nickLabel); + }]; + + [self.tagStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nobleIconImageView); + make.top.mas_equalTo(self.nobleIconImageView.mas_bottom).offset(3); + make.height.mas_equalTo(20); + }]; + + [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nobleIconImageView); + make.top.mas_equalTo(self.tagStackView.mas_bottom).offset(3); + }]; + + [self.copysIdImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(15, 15)); + make.left.mas_equalTo(self.idLabel.mas_right).offset(2); + make.centerY.mas_equalTo(self.idLabel); + }]; + + [self.closeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(22, 22)); + make.top.mas_equalTo(self.userInfoView).offset(5); + make.right.mas_equalTo(self.userInfoView).offset(-6); + }]; + + [self.reportButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.closeButton); + make.right.mas_equalTo(self.closeButton.mas_left).offset(-5); + }]; + + [self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(20); + }]; + + [self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(20); + }]; + + [self.newUserImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(15); + }]; + + [self.officalImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(20); + }]; + + [self.namePlateView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(20); + make.width.mas_equalTo(self.nameplateImageView.mas_width); + }]; + + + [self.nameplateImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(20); + make.width.mas_equalTo(60); + make.left.top.mas_equalTo(self.namePlateView); + }]; + + [self.nameplateLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.bottom.mas_equalTo(self.nameplateImageView); + make.right.mas_equalTo(self.namePlateView).offset(-2); + }]; + + [self.pickHeartView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(200); + make.height.mas_equalTo(40); + }]; + + [self.pickHeartButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.centerY.mas_equalTo(self.pickHeartView); + make.height.mas_equalTo(30); + }]; +} + +- (void)initEvent { + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(disMisssVc:)]; + [self.topTapView addGestureRecognizer:tap]; + UITapGestureRecognizer * bottomTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(disMisssVc:)]; + [self.bottomTapView addGestureRecognizer:bottomTap]; + + UITapGestureRecognizer * userInfoTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(gotoUserInfoVC:)]; + [self.avatarImageView addGestureRecognizer:userInfoTap]; +} + +- (void)initHttp { + [self.presenter getUserInfo:self.cardInfo.uid]; + [self.presenter getFunctionItemsByUserInfo:self.cardInfo]; + [self.presenter getMicroFunctionItemsByUserInfo:self.cardInfo]; +} + +- (void)configRoomDatingPickHeart { + self.pickHeartView.hidden = YES; + if (self.cardInfo.roomInfo.roomModeType == RoomModeType_Open_Blind && self.cardInfo.roomInfo.blindDateState == RoomPlayDateingType_Pick && [AccountInfoStorage instance].getUid.integerValue != self.cardInfo.uid.integerValue) { + __block MicroQueueModel * selfMicqueue; + __block MicroQueueModel * targetMicqueue; + [self.cardInfo.micQueue.allValues enumerateObjectsUsingBlock:^(MicroQueueModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.userInfo && obj.userInfo.uid == [AccountInfoStorage instance].getUid.integerValue) { + selfMicqueue = obj; + } else if(obj.userInfo && obj.userInfo.uid == self.cardInfo.uid.integerValue) { + targetMicqueue = obj; + } + }]; + if (selfMicqueue.userInfo && selfMicqueue.userInfo.uid > 0 && !selfMicqueue.userInfo.hasSelectUser && selfMicqueue.microState.position != -1 && targetMicqueue.microState.position != -1) { + self.pickHeartView.hidden = NO; + } + } +} + +- (void)updateCollectionHeight:(NSArray *)array { + if (array.count > 0) { + CGFloat collectionHeight = 16 + 10; + NSInteger page = array.count / 4; + if (page > 0) { + if (array.count % 4 ==0) { + collectionHeight += (page * 55 + (page-1) * 16); + } else { + collectionHeight += ((page + 1) * 55 + page * 16); + } + } else { + collectionHeight += 55; + } + [self.collectionView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(collectionHeight); + }]; + } +} + +///拉黑/踢出房间 发送自定义消息 +- (void)sendCustomMessageKickOrBlackUser:(int)first second:(int)second { + RoomInfoModel * roomInfo = self.cardInfo.roomInfo; + XPKickUserModel *notifyModel = [[XPKickUserModel alloc] init]; + notifyModel.handleNick = self.cardInfo.nick; + notifyModel.handleUid = [AccountInfoStorage instance].getUid.integerValue; + notifyModel.targetUid = self.cardInfo.uid.integerValue; + notifyModel.targetNick = self.targetUserInfo.nick; + notifyModel.uid = self.cardInfo.uid.integerValue; + AttachmentModel *attachment = [[AttachmentModel alloc] init]; + attachment.first = first; + attachment.second = second; + attachment.data = [notifyModel model2dictionary]; + NSString * sessionId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + + NIMMessage *message = [[NIMMessage alloc]init]; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachment; + message.messageObject = object; + //构造会话 + NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; +} + +- (NSArray *)configGiftUsers:(NSMutableDictionary *)queue { + NSMutableArray * array = [NSMutableArray array]; + BOOL receiveIsOnMic = NO; + for (MicroQueueModel * microModel in queue.allValues) { + if (microModel.userInfo && microModel.userInfo.uid >0) { + UserInfoModel * userInfo = microModel.userInfo; + if (userInfo.uid == self.cardInfo.uid.integerValue) { + receiveIsOnMic = YES; + } + } + } + if (receiveIsOnMic) { + for (MicroQueueModel * microModel in queue.allValues) { + if (microModel.userInfo && microModel.userInfo.uid >0) { + UserInfoModel * userInfo = microModel.userInfo; + XPGiftUserInfoModel * userModel = [[XPGiftUserInfoModel alloc] init]; + userModel.avatar = userInfo.avatar; + userModel.vipMic = userInfo.vipMic; + userModel.position = [NSString stringWithFormat:@"%d", microModel.microState.position]; + userModel.uid = userInfo.uid; + if (userInfo.uid == self.cardInfo.uid.integerValue) { + userModel.isSelect = YES; + } + if (self.cardInfo.roomInfo.type == RoomType_Anchor && microModel.microState.position == -1) {///个播房一直为离开模式,不需要添加房主位 + continue; + } + [array addObject:userModel]; + } + } + + RoomInfoModel * roomInfo = self.cardInfo.roomInfo; + if (roomInfo.leaveMode) { + XPGiftUserInfoModel * userModel = [[XPGiftUserInfoModel alloc] init]; + userModel.avatar = roomInfo.avatar; + userModel.position = @"-1"; + userModel.uid = self.cardInfo.uid.integerValue; + if (roomInfo.uid == self.cardInfo.uid.integerValue) { + userModel.isSelect = YES; + } + [array addObject:userModel]; + } else if (roomInfo.type == RoomType_Anchor) { + BOOL hadContainerOwner = NO; + for (UserInfoModel *userModel in array) { + if (userModel.uid == roomInfo.uid) { + hadContainerOwner = YES; + break; + } + } + if (!hadContainerOwner) { + XPGiftUserInfoModel * userModel = [[XPGiftUserInfoModel alloc] init]; + userModel.avatar = roomInfo.avatar; + userModel.position = @"-1"; + userModel.uid = self.cardInfo.uid.integerValue; + if (roomInfo.uid == self.cardInfo.uid.integerValue) { + userModel.isSelect = YES; + } + [array addObject:userModel]; + } + } + } else { + XPGiftUserInfoModel * userModel = [[XPGiftUserInfoModel alloc] init]; + userModel.avatar = self.targetUserInfo.avatar; + userModel.nick = self.targetUserInfo.nick; + userModel.uid = self.cardInfo.uid.integerValue; + userModel.isSelect = YES; + [array addObject:userModel]; + } + return array; +} + +//自己是否在游戏中 +- (BOOL)isInSudGame:(NSString *)uid { + BOOL isGamePlaying = NO; + if (self.cardInfo.roomInfo.type == RoomType_MiniGame) { + for (int i = -1; i<5; i++) { + NSMutableDictionary * micQueue = self.cardInfo.micQueue; + MicroQueueModel *micSequence = [micQueue objectForKey:[NSString stringWithFormat:@"%d", i]]; + if (micSequence == nil || micSequence.userInfo == nil) { + continue; + } + if (micSequence.userInfo.uid == uid.integerValue && micSequence.userInfo.gameStatus == LittleGamePlayStatus_Plying) { + isGamePlaying = YES; + break; + } + } + } + return isGamePlaying; +} + + +#pragma mark - XPUserCardProtocol +- (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo { + self.targetUserInfo = userInfo; + self.avatarImageView.imageUrl = userInfo.avatar; + self.backImageView.imageUrl = userInfo.avatar; + self.nobleImageView.imageUrl = userInfo.userInfoCardPic; + self.nobleIconImageView.imageUrl = userInfo.userVipInfoVO.vipIcon; + if (userInfo.userVipInfoVO && userInfo.userVipInfoVO.vipIcon) {//贵族icon + [self.nobleIconImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(20); + }]; + [self.nickLabel mas_updateConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nobleIconImageView.mas_right).mas_offset(2); + }]; + } + NSString * nick = userInfo.nick; + if (nick.length > 10) { + nick = [NSString stringWithFormat:@"%@…", [nick substringToIndex:10]]; + } + self.nickLabel.text = nick.length > 0 ? nick : @""; + self.sexImageView.image = userInfo.gender == GenderType_Female ? [UIImage imageNamed:@"common_female"] : [UIImage imageNamed:@"common_male"]; + self.officalImageView.hidden = userInfo.defUser != UserLevelType_Offical; + self.newUserImageView.hidden = !userInfo.newUser; + if (userInfo.newUser) { + if (userInfo.fromSayHelloChannel) { + self.newUserImageView.image = [UIImage imageNamed:@"room_new_user_greet_new"]; + } else { + self.newUserImageView.image = [UIImage imageNamed:@"common_new_user"]; + } + } + if (userInfo.userLevelVo.experUrl) { + self.experImageView.imageUrl = userInfo.userLevelVo.experUrl; + } + self.experImageView.hidden = userInfo.userLevelVo.experUrl.length <= 0; + + if (userInfo.userLevelVo.charmUrl) { + self.charmImageView.imageUrl = userInfo.userLevelVo.charmUrl; + } + self.charmImageView.hidden = userInfo.userLevelVo.charmUrl.length <= 0; + self.copysIdImageView.hidden = NO; + if (userInfo.nameplateWord.length>0 && userInfo.nameplatePic.length>0) { + self.nameplateImageView.imageUrl = userInfo.nameplatePic; + self.nameplateLabel.text = userInfo.nameplateWord; + self.namePlateView.hidden = NO; + } else { + self.namePlateView.hidden = YES; + } + self.idLabel.text = [NSString stringWithFormat:@"ID:%ld", userInfo.erbanNo]; + + NSString * headwearUrl= userInfo.headwearEffect.length > 0 ? userInfo.headwearEffect : userInfo.headwearPic; + self.headWearImageView.hidden = headwearUrl.length <= 0; + if (headwearUrl.length > 0) { + NSURL *url = [NSURL URLWithString:headwearUrl]; + @kWeakify(self); + [self.manager loadSpriteSheetImageWithURL:url completionBlock:^(YYSpriteSheetImage * _Nullable sprit) { + @kStrongify(self); + self.headWearImageView.image = sprit; + } failureBlock:^(NSError * _Nullable error) { + }]; + } + if (userInfo.uid == [AccountInfoStorage instance].getUid.integerValue) { + self.reportButton.hidden = YES; + } else { + self.reportButton.hidden = NO; + } + if (userInfo.absCardPics.count) { + [self.skillCardView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(30); + }]; + } + self.skillCardView.dataArray = userInfo.absCardPics; +} + +- (void)onGetFunctionArraySccess:(NSArray *)array { + if (array.count <= 0) {return;} + self.datasource = array; + self.collectionView.hidden = NO; + [self.collectionView reloadData]; + [self updateCollectionHeight:self.datasource]; +} + +- (void)onGetMicroFunctionArraySuccess:(NSArray *)array { + if (array.count <= 0) {return;} + self.microItems = array; + self.operaStackView.hidden = NO; + self.sepLineView.hidden = NO; + for (XPUserCardMicroItemModel * model in array) { + UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom]; + [button setTitle:model.title forState:UIControlStateNormal]; + button.titleLabel.font = [UIFont systemFontOfSize:13]; + button.tag = model.type; + button.selected = model.status; + [button setTitleColor:[DJDKMIMOMColor userMicroTitleColor] forState:UIControlStateNormal]; + [button addTarget:self action:@selector(microButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [self.operaStackView addArrangedSubview:button]; + } +} + +- (void)attentionUserSuccess:(XPUserCardItemModel *)item { + ///其实这个遍历 有没有都行 只是为了预防 在vc中修改了数据源中的item 还是判断一下吧 + [self.datasource enumerateObjectsUsingBlock:^(XPUserCardItemModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (item.type == obj.type) { + obj.isSelect = item.isSelect; + *stop = YES; + } + }]; + [self.collectionView reloadData]; +} + +- (void)makeKickUserFinish:(NSError *)error { + if (error == nil && self.targetUserInfo) { + [self dismissViewControllerAnimated:YES completion:nil]; + [self sendCustomMessageKickOrBlackUser:CustomMessageType_Kick_User second:Custom_Message_Sub_Kick_BeKicked]; + } else if (error.code == 404) { + [self showErrorToast:YMLocalizedString(@"XPUserCardViewController0")]; + } +} + +- (void)superAdminKickUserFinish:(NSError *)error { + [self dismissViewControllerAnimated:YES completion:nil]; +} + +- (void)markUserManagerFinish:(XPUserCardItemModel *)item error:(NSError *)error { + if (error == nil) { + [self.datasource enumerateObjectsUsingBlock:^(XPUserCardItemModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (item.type == obj.type) { + obj.isSelect = item.isSelect; + *stop = YES; + } + }]; + [self.collectionView reloadData]; + } +} + +- (void)makeUserBlackFinish:(NSError *)error { + if (error == nil && self.targetUserInfo) { + [self dismissViewControllerAnimated:YES completion:nil]; + if (self.cardInfo.position.length > 0) { + NIMChatroomQueueRemoveRequest *request = [[NIMChatroomQueueRemoveRequest alloc]init]; + request.key = self.cardInfo.position; + request.roomId = [NSString stringWithFormat:@"%ld", self.cardInfo.roomInfo.roomId]; + [[NIMSDK sharedSDK].chatroomManager removeChatroomQueueObject:request completion:^(NSError * _Nullable error, NSDictionary * _Nullable element) { + if (error == nil ) { + } + }]; + } + [self sendCustomMessageKickOrBlackUser:CustomMessageType_Kick_User second:Custom_Message_Sub_Kick_BlackList]; + } else if (error.code == 417) { + [self showErrorToast:YMLocalizedString(@"XPUserCardViewController1")]; + } +} + +- (void)lockMicroSusccess { + [self dismissViewControllerAnimated:YES completion:nil]; +} + +- (void)muteMicroSusccess { + [self dismissViewControllerAnimated:YES completion:nil]; +} + +- (void)kickDownMicroSuccess { + if (self.cardInfo.uid.integerValue != [AccountInfoStorage instance].getUid.integerValue) { + [self sendCustomMessageKickOrBlackUser:CustomMessageType_Queue second:Custom_Message_Sub_Queue_Kick]; + } + [self dismissViewControllerAnimated:YES completion:nil]; +} + +- (void)upMicroSuccess { + [self dismissViewControllerAnimated:YES completion:nil]; +} + +- (void)cleanUserGiftValueSuccess:(NSDictionary *)dic { + [self showSuccessToast:YMLocalizedString(@"XPUserCardViewController2")]; + NIMMessage * message = [[NIMMessage alloc] init]; + AttachmentModel * attachMent = [[AttachmentModel alloc] init]; + attachMent.first = CustomMessageType_Room_GiftValue; + attachMent.second = Custom_Message_Sub_Room_GiftValue_Sync; + attachMent.data = dic; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachMent; + message.messageObject = object; + //构造会话 + NSString * sessionId = [NSString stringWithFormat:@"%ld", self.cardInfo.roomInfo.roomId]; + NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; + [self dismissViewControllerAnimated:YES completion:nil]; +} + +- (void)roomDatingPickHeartUserSuccess { + [self dismissViewControllerAnimated:YES completion:nil]; +} + +- (void)superAdminHandleUserSuccess:(NSString *)opt { + [self showSuccessToast:YMLocalizedString(@"XPUserCardViewController3")]; + [self dismissViewControllerAnimated:YES completion:nil]; + if ([opt isEqualToString:@"-1"]) {///拉黑 + if (self.cardInfo.position.length > 0) { + NIMChatroomQueueRemoveRequest *request = [[NIMChatroomQueueRemoveRequest alloc]init]; + request.key = self.cardInfo.position; + request.roomId = [NSString stringWithFormat:@"%ld", self.cardInfo.roomInfo.roomId]; + [[NIMSDK sharedSDK].chatroomManager removeChatroomQueueObject:request completion:^(NSError * _Nullable error, NSDictionary * _Nullable element) { + if (error == nil ) { + } + }]; + } + [self sendCustomMessageKickOrBlackUser:CustomMessageType_Kick_User second:Custom_Message_Sub_Kick_BlackList]; + } +} + +- (BOOL)shouldHideSendGiftItem { + return self.shouldHideSendGiftItem; +} + +#pragma mark - UICollectionViewDelegate +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + [collectionView deselectItemAtIndexPath:indexPath animated:YES]; + ///自己是公会超管 + BOOL meIsSuperAdmin = NO; + for (GuildSuperAdminInfoModel *managerInfo in self.cardInfo.superMangerList) { + if ([managerInfo.uid isEqualToString:[AccountInfoStorage instance].getUid]) { + meIsSuperAdmin = YES; + } + } + if (self.datasource.count > 0) { + XPUserCardItemModel * model = [self.datasource safeObjectAtIndex1:indexPath.item]; + NSString * roomId = [NSString stringWithFormat:@"%ld", self.cardInfo.roomInfo.roomId];; + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.cardInfo.roomInfo.uid];; + switch (model.type) { + case UserCardItemType_Chat: + { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"chat"}]; + [self dismissViewControllerAnimated:YES completion:^{ + UIViewController * controller = (UIViewController *)self.cardInfo.delegate; + XPRoomHalfMessageView *halfMessageView = [[XPRoomHalfMessageView alloc] initWithFrame:CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight) controller:controller]; + halfMessageView.chatUserId = self.cardInfo.uid; + [controller.view addSubview:halfMessageView]; + [UIView animateWithDuration:.35 animations:^{ + CGRect rect = halfMessageView.frame; + rect.origin.y = 0; + halfMessageView.frame = rect; + }]; + }]; + + } + break; + case UserCardItemType_Gift: + { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"sendGift"}]; + [self dismissViewControllerAnimated:NO completion:nil]; + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.cardInfo.roomInfo.uid]; + XPSendGiftView * giftView = [[XPSendGiftView alloc] initWithType:SendGiftType_Room uid:roomUid]; + giftView.delegate = self.cardInfo.delegate; + NSArray *users = [self configGiftUsers:self.cardInfo.delegate.getMicroQueue]; + [giftView configGiftUsers:users]; + [self.presentingViewController presentViewController:giftView animated:YES completion:nil]; + } + break; + case UserCardItemType_Attention: + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"attention"}]; + [self.presenter attentionUser:self.cardInfo.uid status:!model.isSelect]; + break; + case UserCardItemType_KickOut: + { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"kickout"}]; + // 1、判断是否为防被踢用户 + if (self.targetUserInfo.userVipInfoVO.preventKick) { + //2、判断是否为管理员操作 + if (self.cardInfo.roomInfo.uid != [AccountInfoStorage instance].getUid.integerValue) { + [self showErrorToast:[NSString stringWithFormat:@"该用户为%@贵族,只有房主才可以踢出哦~", self.targetUserInfo.userVipInfoVO.vipName]]; + } else {//房主操作 + NSString *message = [NSString stringWithFormat:@"该用户为%@贵族\n确认是否要将其踢出房间?", self.targetUserInfo.userVipInfoVO.vipName]; + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.title = @""; + config.message = message; + [TTPopup alertWithConfig:config confirmHandler:^{ + if ([self isInSudGame:self.cardInfo.uid]) { + NSString *message = [NSString stringWithFormat:@"游戏模式下默认该玩家退出游戏是否要将此用户踢出房间?"]; + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.title = @""; + config.message = message; + [TTPopup alertWithConfig:config confirmHandler:^{ + [self.presenter makeKickUser:self.cardInfo.uid roomId:roomId]; + } cancelHandler:^{ + }]; + } else { + [self.presenter makeKickUser:self.cardInfo.uid roomId:roomId]; + } + } cancelHandler:^{ + }]; + } + return; + } + if ([self isInSudGame:self.cardInfo.uid]) { + NSString *message = [NSString stringWithFormat:@"游戏模式下默认该玩家退出游戏是否要将此用户踢出房间?"]; + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.title = @""; + config.message = message; + [TTPopup alertWithConfig:config confirmHandler:^{ + if (meIsSuperAdmin) { + [self.presenter superAdminKickUser:self.targetUserInfo.nick cardInfo:self.cardInfo]; + } else { + [self.presenter makeKickUser:self.cardInfo.uid roomId:roomId]; + } + } cancelHandler:^{ + }]; + } else { + NSString *message = [NSString stringWithFormat:@"是否需要将%@踢出房间?",self.targetUserInfo.nick]; + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.title = YMLocalizedString(@"XPUserCardViewController9"); + config.message = message; + [TTPopup alertWithConfig:config confirmHandler:^{ + if (meIsSuperAdmin) { + [self.presenter superAdminKickUser:self.targetUserInfo.nick cardInfo:self.cardInfo]; + } else { + [self.presenter makeKickUser:self.cardInfo.uid roomId:roomId]; + } + } cancelHandler:^{ + }]; + } + } + break; + case UserCardItemType_Black: + { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"blacklist"}]; + // 1、判断是否为防被踢用户 + if (self.targetUserInfo.userVipInfoVO.preventKick) { + //2、判断是否为管理员操作 + if (self.cardInfo.roomInfo.uid != [AccountInfoStorage instance].getUid.integerValue) { + [self showErrorToast:[NSString stringWithFormat:@"该用户为%@贵族,只有房主才可以踢出哦~", self.targetUserInfo.userVipInfoVO.vipName]]; + } else {//房主操作 + NSString *message = [NSString stringWithFormat:@"该用户为%@贵族\n确认是否要将其拉黑?", self.targetUserInfo.userVipInfoVO.vipName]; + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.title = @""; + config.message = message; + [TTPopup alertWithConfig:config confirmHandler:^{ + if ([self isInSudGame:self.cardInfo.uid]) { + NSString *message = [NSString stringWithFormat:@"游戏模式下默认该玩家退出游戏是否要将此用户踢出房间?"]; + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.title = @""; + config.message = message; + [TTPopup alertWithConfig:config confirmHandler:^{ + [self.presenter makeKickUser:self.cardInfo.uid roomId:roomId]; + } cancelHandler:^{ + }]; + } else { + [self.presenter makeKickUser:self.cardInfo.uid roomId:roomId]; + } + } cancelHandler:^{ + }]; + } + return; + } + if ([self isInSudGame:self.cardInfo.uid]) { + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.title = @""; + config.message = [NSString stringWithFormat: YMLocalizedString(@"XPUserCardViewController13"), self.targetUserInfo.nick]; + [TTPopup alertWithConfig:config confirmHandler:^{ + if (meIsSuperAdmin) { + [self.presenter superAdminHandleUser:self.cardInfo.uid opt:@"-1" roomUid:roomUid isSet:YES]; + } else { + [self.presenter makeUserBlack:self.cardInfo.uid roomId:roomId]; + } + } cancelHandler:^{ + }]; + } else { + NSString *title = [NSString stringWithFormat:@"你正在拉黑%@",self.targetUserInfo.nick]; + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.title = title; + config.message = YMLocalizedString(@"XPUserCardViewController15"); + [TTPopup alertWithConfig:config confirmHandler:^{ + if (meIsSuperAdmin) { + [self.presenter superAdminHandleUser:self.cardInfo.uid opt:@"-1" roomUid:roomUid isSet:YES]; + }else { + [self.presenter makeUserBlack:self.cardInfo.uid roomId:roomId]; + } + } cancelHandler:^{ + }]; + } + } + break; + case UserCardItemType_Manager: + { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"manager"}]; + if (meIsSuperAdmin) { + [self.presenter superAdminHandleUser:self.cardInfo.uid opt:@"1" roomUid:roomUid isSet:!model.isSelect]; + } else { + [self.presenter makeUserManager:self.cardInfo.uid roomId:roomId enable:!model.isSelect]; + } + } + break; + case UserCardItemType_Invite_Micro: + { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"invite_micro"}]; + if ([AccountInfoStorage instance].getUid.integerValue == self.targetUserInfo.uid) { + [self.presenter upMicro:roomId position:model.position userInfo:self.targetUserInfo]; + } else { + if (self.cardInfo.roomInfo.leaveMode && [model.position isEqualToString:@"-1"]) { + return; + } + NSMutableDictionary * dic = [NSMutableDictionary dictionary]; + [dic safeSetObject:@(model.position.integerValue) forKey:@"micPosition"]; + [dic safeSetObject:@(self.targetUserInfo.uid) forKey:@"uid"]; + AttachmentModel *attachement = [[AttachmentModel alloc]init]; + attachement.first = CustomMessageType_Queue; + attachement.second = Custom_Message_Sub_Queue_Invite; + attachement.data = dic; + + NIMMessage *message = [[NIMMessage alloc]init]; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachement; + message.messageObject = object; + //构造会话 + NIMSession *session = [NIMSession session:roomId type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; + [self dismissViewControllerAnimated:YES completion:nil]; + } + } + break; + case UserCardItemType_AtUser: + { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"atUser"}]; + if (self.cardInfo.roomInfo.isCloseScreen) { + [self showErrorToast:YMLocalizedString(@"XPUserCardViewController16")]; + return; + } + [self dismissViewControllerAnimated:NO completion:^{ + UIViewController *vc = self.cardInfo.delegate.getCurrentNav.viewControllers[0]; + [XPRoomSendTextView showTextView:vc.view delegate:self.cardInfo.delegate atUid:self.cardInfo.uid atNick:self.targetUserInfo.nick]; + }]; + } + default: + break; + } + } +} + +#pragma mark - UICollectionViewDataSource +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPUserCardItemCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPUserCardItemCollectionViewCell class]) forIndexPath:indexPath]; + cell.itemModel = [self.datasource safeObjectAtIndex1:indexPath.item]; + return cell; +} + +#pragma mark - Event Response +- (void)microButtonAction:(UIButton *)sender { + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.cardInfo.roomInfo.uid];; + NSString * roomId = [NSString stringWithFormat:@"%ld", self.cardInfo.roomInfo.roomId];; + switch (sender.tag) { + case UserCardMicroType_UpDown: + { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"downMic"}]; + if (sender.selected) { + if ([self isInSudGame:self.cardInfo.uid]) { + if (self.cardInfo.uid.integerValue == [AccountInfoStorage instance].getUid.integerValue) { + [self showErrorToast:@"游戏中不可主动下麦!"]; + [self dismissViewControllerAnimated:YES completion:nil]; + } else { + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.message = @"抱Ta下麦后默认该玩家退出游戏,是否继续?"; + [TTPopup alertWithConfig:config confirmHandler:^{ + [self.presenter kickDownMicro:self.cardInfo.position roomId:roomId]; + } cancelHandler:^{ + }]; + } + + return; + }else { + [self.presenter kickDownMicro:self.cardInfo.position roomId:roomId]; + } + } else { + self.operaStackView.hidden = YES; + int micCount = self.cardInfo.roomInfo.type == RoomType_Anchor ? 4 : self.cardInfo.roomInfo.type == RoomType_MiniGame ? 6 : 9; + [self.presenter getRoomMicroItems:micCount cardInfo:self.cardInfo]; + } + } + break; + case UserCardMicroType_Lock: + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"lockMic"}]; + [self.presenter microLock:roomUid state:sender.selected position:self.cardInfo.position]; + break; + case UserCardMicroType_Mute: + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"muteMic"}]; + [self.presenter microMute:roomUid state:sender.selected position:self.cardInfo.position]; + break; + case UserCardMicroType_Clean_Gift_Value: + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"cleanGiftValue"}]; + [self.presenter cleanUserGiftValue:roomUid micUid:self.cardInfo.uid]; + break; + default: + break; + } +} + +- (void)reportButtonAction:(UIButton *)sender { + [self dismissViewControllerAnimated:YES completion:nil]; + XPWebViewController *vc = [[XPWebViewController alloc]init]; + NSString *urlstr = [NSString stringWithFormat:@"%@?reportUid=%@&source=USERCARD",URLWithType(kReportRoomURL),self.cardInfo.uid]; + vc.url = urlstr; + [(UINavigationController *)self.presentingViewController pushViewController:vc animated:YES]; +} + +- (void)closeButtonAction:(UIButton *)sender { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"close"}]; + [self dismissViewControllerAnimated:YES completion:nil]; +} + +- (void)disMisssVc:(UITapGestureRecognizer *)tap { + [self dismissViewControllerAnimated:YES completion:nil]; +} + +- (void)gotoUserInfoVC:(UITapGestureRecognizer *)tap { + [self dismissViewControllerAnimated:YES completion:nil]; + + if ([ClientConfig shareConfig].canOpen) { + XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init]; + userInfoVC.uid = self.cardInfo.uid.integerValue; + [((UINavigationController *)self.presentingViewController) pushViewController:userInfoVC animated:YES]; + }else{ + XPMineSimpleUserInfoViewController * userInfoVC = [[XPMineSimpleUserInfoViewController alloc] init]; + userInfoVC.uid = self.cardInfo.uid.integerValue; + [((UINavigationController *)self.presentingViewController) pushViewController:userInfoVC animated:YES]; + } +} + +- (void)pickHeartButtonAction:(UIButton *)sender { + if (self.cardInfo.position.length > 0) { + TTAlertConfig * config = [[TTAlertConfig alloc] init]; + config.title = [NSString stringWithFormat:@"确认选择%d号嘉宾吗?", (self.cardInfo.position.intValue + 1)]; + config.message = YMLocalizedString(@"XPUserCardViewController20"); + config.messageColor = UIColorFromRGB(0xFE5D7F); + config.messageFont = [UIFont systemFontOfSize:14]; + [TTPopup alertWithConfig:config confirmHandler:^{ + [self.presenter pickHeartUser:[NSString stringWithFormat:@"%ld", self.cardInfo.roomInfo.uid] chosenUserId:self.cardInfo.uid]; + } cancelHandler:^{ + + }]; + } +} + +- (void)copysIdRecognizer { + [UIPasteboard generalPasteboard].string = [NSString stringWithFormat:@"%ld", self.targetUserInfo.erbanNo]; + [XNDJTDDLoadingTool showSuccessWithMessage:YMLocalizedString(@"XPUserCardViewController21")]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventID_datacard_copyid_click]; +} + +#pragma mark - Getters And Setters + +- (UIView *)topTapView { + if (!_topTapView) { + _topTapView = [[UIView alloc] init]; + _topTapView.backgroundColor = [UIColor clearColor]; + } + return _topTapView; +} +- (UIView *)bottomTapView { + if (!_bottomTapView) { + _bottomTapView = [[UIView alloc] init]; + _bottomTapView.backgroundColor = [UIColor clearColor]; + } + return _bottomTapView; +} + +- (UIView *)backView { + if (!_backView) { + _backView = [[UIView alloc] init]; + _backView.backgroundColor = [UIColor whiteColor]; + _backView.layer.masksToBounds = YES; + _backView.layer.cornerRadius = 12; + } + return _backView; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentCenter; + _stackView.spacing = 0; + } + return _stackView; +} + +- (UIView *)userInfoView { + if (!_userInfoView) { + _userInfoView = [[UIView alloc] init]; + _userInfoView.backgroundColor = [UIColor clearColor]; + } + return _userInfoView; +} + +- (UIVisualEffectView *)effectView { + if (!_effectView) { + UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; + _effectView = [[UIVisualEffectView alloc]initWithEffect:effect]; + } + return _effectView; +} + +- (NetImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[NetImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.layer.masksToBounds = YES; + _backImageView.layer.cornerRadius = 25; + _backImageView.contentMode = UIViewContentModeScaleAspectFill; + _backImageView.image = [UIImageConstant defaultAvatarPlaceholder]; + } + return _backImageView; +} + +- (NetImageView *)nobleImageView { + if (!_nobleImageView) { + _nobleImageView = [[NetImageView alloc] init]; + _nobleImageView.contentMode = UIViewContentModeScaleToFill; + _nobleImageView.layer.masksToBounds = YES; + } + return _nobleImageView; +} + +- (UIButton *)reportButton { + if (!_reportButton) { + _reportButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_reportButton setTitle:YMLocalizedString(@"XPUserCardViewController22") forState:UIControlStateNormal]; + [_reportButton setTitleColor:[DJDKMIMOMColor userNickColor] forState:UIControlStateNormal]; + _reportButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_reportButton addTarget:self action:@selector(reportButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _reportButton; +} + +- (UIButton *)closeButton { + if (!_closeButton) { + _closeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_closeButton setImage:[UIImage imageNamed:@"usercard_close"] forState:UIControlStateNormal]; + [_closeButton setImage:[UIImage imageNamed:@"usercard_close"] forState:UIControlStateSelected]; + [_closeButton addTarget:self action:@selector(closeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _closeButton; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserIcon; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.userInteractionEnabled = YES; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 25; + _avatarImageView.contentMode = UIViewContentModeScaleAspectFill; + } + return _avatarImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:15]; + _nickLabel.textColor = [DJDKMIMOMColor userNickColor]; + } + return _nickLabel; +} + +- (UIImageView *)sexImageView { + if (!_sexImageView) { + _sexImageView = [[UIImageView alloc] init]; + _sexImageView.userInteractionEnabled = YES; + } + return _sexImageView; +} + +- (UIStackView *)tagStackView { + if (!_tagStackView) { + _tagStackView = [[UIStackView alloc] init]; + _tagStackView.axis = UILayoutConstraintAxisHorizontal; + _tagStackView.distribution = UIStackViewDistributionFill; + _tagStackView.alignment = UIStackViewAlignmentCenter; + _tagStackView.spacing = 2; + } + return _tagStackView; +} +- (NetImageView *)experImageView { + if (!_experImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserCardLevel; + _experImageView = [[NetImageView alloc] initWithConfig:config]; + _experImageView.userInteractionEnabled = YES; + _experImageView.hidden = YES; + _experImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _experImageView; +} + +- (NetImageView *)charmImageView { + if (!_charmImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserCardLevel; + _charmImageView = [[NetImageView alloc] initWithConfig:config]; + _charmImageView.userInteractionEnabled = YES; + _charmImageView.hidden = YES; + _charmImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _charmImageView; +} + +- (NetImageView *)nobleIconImageView { + if (!_nobleIconImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserCardLevel; + _nobleIconImageView = [[NetImageView alloc] initWithConfig:config]; + _nobleIconImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _nobleIconImageView; +} + +- (UIView *)namePlateView { + if (!_namePlateView) { + _namePlateView = [[UIView alloc] init]; + _namePlateView.backgroundColor = [UIColor clearColor]; + _namePlateView.hidden = YES; + } + return _namePlateView; +} + +- (NetImageView *)nameplateImageView { + if (!_nameplateImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserCardLevel; + _nameplateImageView = [[NetImageView alloc] initWithConfig:config]; + _nameplateImageView.userInteractionEnabled = YES; + _nameplateImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _nameplateImageView; +} + +- (UILabel *)nameplateLabel { + if (!_nameplateLabel) { + _nameplateLabel = [[UILabel alloc] init]; + _nameplateLabel.font = [UIFont systemFontOfSize:10]; + _nameplateLabel.textAlignment = NSTextAlignmentCenter; + _nameplateLabel.textColor = [DJDKMIMOMColor userNickColor]; + } + return _nameplateLabel; +} + +- (UIImageView *)newUserImageView { + if (!_newUserImageView) { + _newUserImageView = [[UIImageView alloc] init]; + _newUserImageView.userInteractionEnabled = YES; + _newUserImageView.image = [UIImage imageNamed:@"common_new_user"]; + _newUserImageView.hidden = YES; + } + return _newUserImageView; +} + +- (UIImageView *)officalImageView { + if (!_officalImageView) { + _officalImageView = [[UIImageView alloc] init]; + _officalImageView.userInteractionEnabled = YES; + _officalImageView.image = [UIImage imageNamed:@"common_offical"]; + _officalImageView.hidden = YES; + } + return _officalImageView; +} + +- (UILabel *)idLabel { + if (!_idLabel) { + _idLabel = [[UILabel alloc] init]; + _idLabel.font = [UIFont systemFontOfSize:10]; + _idLabel.textColor = [DJDKMIMOMColor textThirdColor]; + _idLabel.userInteractionEnabled = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(copysIdRecognizer)]; + [_idLabel addGestureRecognizer:tap]; + } + return _idLabel; +} + +- (XPUserCardSkillCardView *)skillCardView { + if (!_skillCardView) { + _skillCardView = [[XPUserCardSkillCardView alloc] init]; + } + return _skillCardView; +} + +- (UICollectionView *)collectionView{ + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.itemSize = CGSizeMake((KScreenWidth - 45 * 2)/ 4, 55); + layout.minimumLineSpacing = 16; + layout.minimumInteritemSpacing = 0; + layout.sectionInset = UIEdgeInsetsMake(16, 0, 10, 0); + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.hidden = YES; + _collectionView.backgroundColor = [UIColor clearColor]; + [_collectionView registerClass:[XPUserCardItemCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPUserCardItemCollectionViewCell class])]; + } + return _collectionView; +} + +- (UIView *)sepLineView { + if (!_sepLineView) { + _sepLineView = [[UIView alloc] init]; + _sepLineView.backgroundColor = [DJDKMIMOMColor userDividerColor]; + _sepLineView.hidden = YES; + } + return _sepLineView; +} + +- (UIStackView *)operaStackView { + if (!_operaStackView) { + _operaStackView = [[UIStackView alloc] init]; + _operaStackView.axis = UILayoutConstraintAxisHorizontal; + _operaStackView.distribution = UIStackViewDistributionFillEqually; + _operaStackView.alignment = UIStackViewAlignmentFill; + _operaStackView.spacing = 0; + _operaStackView.hidden = YES; + } + return _operaStackView; +} + +- (SpriteSheetImageManager *)manager { + if (!_manager) { + _manager = [[SpriteSheetImageManager alloc] init]; + } + return _manager; +} + +- (YYAnimatedImageView *)headWearImageView { + if (!_headWearImageView) { + _headWearImageView = [[YYAnimatedImageView alloc] init]; + _headWearImageView.backgroundColor = [UIColor clearColor]; + _headWearImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _headWearImageView; +} + +- (UIView *)pickHeartView { + if (!_pickHeartView) { + _pickHeartView = [[UIView alloc] init]; + _pickHeartView.backgroundColor = [UIColor clearColor]; + _pickHeartView.hidden = YES; + } + return _pickHeartView; +} + +- (UIButton *)pickHeartButton { + if (!_pickHeartButton) { + _pickHeartButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_pickHeartButton setTitle:YMLocalizedString(@"XPUserCardViewController23") forState:UIControlStateNormal]; + [_pickHeartButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _pickHeartButton.titleLabel.font = [UIFont systemFontOfSize:13]; + [_pickHeartButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFA7186), UIColorFromRGB(0xFA4972)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _pickHeartButton.layer.masksToBounds = YES; + _pickHeartButton.layer.cornerRadius = 15; + [_pickHeartButton addTarget:self action:@selector(pickHeartButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _pickHeartButton; +} + +- (UIImageView *)copysIdImageView { + if (!_copysIdImageView) { + _copysIdImageView = [[UIImageView alloc] init]; + _copysIdImageView.userInteractionEnabled = YES; + _copysIdImageView.image = [UIImage imageNamed:@"mine_user_id_copy_white"]; + _copysIdImageView.hidden = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(copysIdRecognizer)]; + [_copysIdImageView addGestureRecognizer:tap]; + } + return _copysIdImageView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/UserCard/View/YUMIConsumerSolitaireRegardGovernancer.h b/YuMi/Modules/YMRoom/View/UserCard/View/YUMIConsumerSolitaireRegardGovernancer.h deleted file mode 100644 index 8d3bb6c8..00000000 --- a/YuMi/Modules/YMRoom/View/UserCard/View/YUMIConsumerSolitaireRegardGovernancer.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMUserCardViewController.h -// YUMI -// -// Created by YUMI on 2021/11/24. -// - -#import "MvpRegardGovernancer.h" -#import "ChamberHostRepresendtation.h" -#import "YUMIConsumerSolitaireAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIConsumerSolitaireRegardGovernancer : MvpRegardGovernancer -- (instancetype)initWithUser:(YUMIConsumerSolitaireAbstractMatrix *)automobiledAbstract; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/UserCard/View/YUMIConsumerSolitaireRegardGovernancer.m b/YuMi/Modules/YMRoom/View/UserCard/View/YUMIConsumerSolitaireRegardGovernancer.m deleted file mode 100644 index 91aca54f..00000000 --- a/YuMi/Modules/YMRoom/View/UserCard/View/YUMIConsumerSolitaireRegardGovernancer.m +++ /dev/null @@ -1,1360 +0,0 @@ -// -// YMUserCardViewController.m -// YUMI -// -// Created by YUMI on 2021/11/24. -// - -#import "YUMIConsumerSolitaireRegardGovernancer.h" -#import -#import -#import "YUMIMacroUitls.h" -#import "ThemeColor+UserCard.h" -#import "MKJPopup.h" -#import "YUMIHtmlUrl.h" -#import "XNDJTBWGLoadingTool.h" -#import "AccountAbstractStorage.h" -#import "SpriteSheetIndicateExecutive.h" -#import "UIImage+Utils.h" -#import "XCCurrentVCStackExecutive.h" -#import "StatsticsticsServingFacilitater.h" -#import "NSArray+Safe.h" -#import "NSMutableDictionary+Saft.h" -#import "ClientDisposition.h" -#import "ConsumerAbstractMatrix.h" -#import "YUMIConsumerSolitaireProvisionMatrix.h" -#import "ChamberAbstractMatrix.h" -#import "AttachmentMatrix.h" -#import "XCombatickConsumerMatrix.h" -#import "YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix.h" -#import "MiecreoscoopeMHTueueMatrix.h" -#import "MiecreoscoopeStateMatrix.h" -#import "YUMIDischargePresentRegard.h" -#import "NetIndicateRegard.h" -#import "YUMIConsumerSolitaireProvisionAssembletionRegardElement.h" -#import "YUMIConsumerSolitaireCommunicationSolitaireRegard.h" -#import "YUMIChamberDischargeEssayRegard.h" -#import "YUMIChamberHalfCommunicationRegard.h" -#import "YUMIConsumerSolitaireExternalizer.h" -#import "FBCConsumerSolitaireCeremony.h" -#import "YUMITissueRegardGovernancer.h" -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -#import "YUMIManeSimpleConsumerAbstractRegardGovernancer.h" -#import "InterlocutionRegardGovernancer.h" - -@interface YUMIConsumerSolitaireRegardGovernancer () -@property (nonatomic,strong) UIView *apexBeatRegard; -@property (nonatomic,strong) UIView *extremeBeatRegard; -@property (nonatomic,strong) UIView *encourageRegard; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UIView * consumerAbstractRegard; -@property (nonatomic, strong) NetIndicateRegard *magnificentIndicateRegard; -@property (strong, nonatomic) UIVisualEffectView *impressionRegard; -@property (nonatomic,strong) NetIndicateRegard *encourageIndicateRegard; -@property (nonatomic,strong) YYAnimatedImageView *intelligencePenetrateIndicateRegard; -@property (nonatomic, strong) SpriteSheetIndicateExecutive *manager; -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UILabel *monicerSequencignation; -@property (nonatomic,strong) UIImageView *seaxualityIndicateRegard; -@property (nonatomic,strong) UIImageView *strangeConsumerIndicateRegard; -@property (nonatomic,strong) UIImageView *officalIndicateRegard; -@property (nonatomic,strong) UIStackView *coupleHierarchyRegard; -@property (nonatomic,strong) NetIndicateRegard *fascinationIndicateRegard; -@property (nonatomic, strong) NetIndicateRegard *magnificentFigureIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *experIndicateRegard; -@property (nonatomic,strong) UIView * constituteWoodentrayRegard; -@property (nonatomic,strong) NetIndicateRegard *materialIndicateRegard; -@property (nonatomic,strong) UILabel *materialSequencignation; -@property (nonatomic,strong) UILabel *idSequencignation; -@property (nonatomic,strong) UIImageView *copysIdIndicateRegard; -@property (nonatomic,strong) UIButton *reportBtuton; -@property (nonatomic,strong) UIButton *concludeBtuton; -@property (nonatomic,strong) UICollectionView *collectionView; -@property (nonatomic, strong) YUMIConsumerSolitaireCommunicationSolitaireRegard *communicationSolitaireRegard; -@property (nonatomic,strong) UIView * sepBurlywoodRegard; -@property (nonatomic,strong) UIStackView *operaHierarchyRegard; -@property (nonatomic,strong) UIButton *extractCourageBtuton; -@property (nonatomic,strong) UIView * extractCourageRegard; -@property (nonatomic,strong) YUMIConsumerSolitaireAbstractMatrix *automobiledAbstract; -@property (nonatomic,copy) NSArray *datasource; -@property (nonatomic,copy) NSArray * miecreoscoopeProvisions; -@property (nonatomic,strong) ConsumerAbstractMatrix *targetConsumerAbstract; - -@end - -@implementation YUMIConsumerSolitaireRegardGovernancer - -- (instancetype)initWithUser:(YUMIConsumerSolitaireAbstractMatrix *)automobiledAbstract { - if (self = [super init]) { - self.modalPresentationStyle = UIModalPresentationOverFullScreen; - self.automobiledAbstract = automobiledAbstract; - } - return self; -} - -#pragma mark - Life Style -- (YUMIConsumerSolitaireExternalizer *)producePresimport { - return [[YUMIConsumerSolitaireExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initHyperessay]; - [self initSubViews]; - [self initChildLyRestrictions]; - [self initOccurrence]; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.view.backgroundColor = [UIColor clearColor]; - - [self.view addSubview:self.apexBeatRegard]; - [self.view addSubview:self.encourageRegard]; - [self.view addSubview:self.extremeBeatRegard]; - - [self.encourageRegard addSubview:self.stackView]; - [self.view addSubview:self.magnificentIndicateRegard]; - - [self.stackView addArrangedSubview:self.consumerAbstractRegard]; - [self.stackView addArrangedSubview:self.communicationSolitaireRegard]; - [self.stackView addArrangedSubview:self.collectionView]; - [self.stackView addArrangedSubview:self.sepBurlywoodRegard]; - [self.stackView addArrangedSubview:self.operaHierarchyRegard]; - [self.stackView addArrangedSubview:self.extractCourageRegard]; - - [self.consumerAbstractRegard addSubview:self.encourageIndicateRegard]; - [self.consumerAbstractRegard addSubview:self.impressionRegard]; - [self.consumerAbstractRegard addSubview:self.intelligenceportraitIndicateRegard]; - [self.consumerAbstractRegard addSubview:self.intelligencePenetrateIndicateRegard]; - [self.consumerAbstractRegard addSubview:self.magnificentFigureIndicateRegard]; - [self.consumerAbstractRegard addSubview:self.monicerSequencignation]; - [self.consumerAbstractRegard addSubview:self.seaxualityIndicateRegard]; - [self.consumerAbstractRegard addSubview:self.coupleHierarchyRegard]; - [self.consumerAbstractRegard addSubview:self.idSequencignation]; - [self.consumerAbstractRegard addSubview:self.copysIdIndicateRegard]; - [self.consumerAbstractRegard addSubview:self.reportBtuton]; - [self.consumerAbstractRegard addSubview:self.concludeBtuton]; - - [self.coupleHierarchyRegard addArrangedSubview:self.strangeConsumerIndicateRegard]; - [self.coupleHierarchyRegard addArrangedSubview:self.officalIndicateRegard]; - [self.coupleHierarchyRegard addArrangedSubview:self.experIndicateRegard]; - [self.coupleHierarchyRegard addArrangedSubview:self.fascinationIndicateRegard]; - [self.coupleHierarchyRegard addArrangedSubview:self.constituteWoodentrayRegard]; - - [self.constituteWoodentrayRegard addSubview:self.materialIndicateRegard]; - [self.constituteWoodentrayRegard addSubview:self.materialSequencignation]; - - [self.extractCourageRegard addSubview:self.extractCourageBtuton]; - [self prohibitipositionChamberEngagementExtractCourage]; -} - -- (void)initChildLyRestrictions { - [self.apexBeatRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.left.right.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.encourageRegard.mas_top); - }]; - - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view).inset(45); - make.centerY.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.stackView.mas_bottom); - }]; - - [self.extremeBeatRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.left.right.mas_equalTo(self.view); - make.top.mas_equalTo(self.encourageRegard.mas_bottom); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth - 90); - make.top.centerX.mas_equalTo(self.encourageRegard); - }]; - - [self.consumerAbstractRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(self.stackView); - make.height.mas_equalTo(110); - }]; - CGFloat nobleMargin = (KScreenWidth - 45) * 45.0 / (KScreenWidth - 90); - [self.magnificentIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(180); - make.top.mas_equalTo(self.encourageRegard).mas_offset(-70); - make.right.mas_equalTo(self.encourageRegard).offset(nobleMargin*0.5); - make.left.mas_equalTo(self.encourageRegard).mas_offset(-nobleMargin*0.5); - }]; - [self.communicationSolitaireRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(self.consumerAbstractRegard); - make.height.mas_equalTo(0); - }]; - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(self.consumerAbstractRegard); - make.height.mas_equalTo(0); - }]; - - [self.sepBurlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(KScreenWidth - 45 * 2 - 10 * 2, 1)); - }]; - - [self.operaHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(self.consumerAbstractRegard); - make.height.mas_equalTo(40); - }]; - - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.consumerAbstractRegard); - }]; - - [self.impressionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.consumerAbstractRegard); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(50, 50)); - make.left.mas_equalTo(self.consumerAbstractRegard).offset(15); - make.top.mas_equalTo(self.consumerAbstractRegard).offset(30); - }]; - - [self.intelligencePenetrateIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.width.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_width).multipliedBy(1.31); - make.height.mas_equalTo(self.intelligencePenetrateIndicateRegard.mas_width); - }]; - - [self.magnificentFigureIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.intelligencePenetrateIndicateRegard.mas_right).offset(5); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.height.mas_equalTo(20); - make.width.mas_equalTo(0); - }]; - - [self.monicerSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.magnificentFigureIndicateRegard.mas_right); - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard); - }]; - - [self.seaxualityIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(14, 14)); - make.left.mas_equalTo(self.monicerSequencignation.mas_right).offset(4); - make.centerY.mas_equalTo(self.monicerSequencignation); - }]; - - [self.coupleHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.magnificentFigureIndicateRegard); - make.top.mas_equalTo(self.magnificentFigureIndicateRegard.mas_bottom).offset(3); - make.height.mas_equalTo(20); - }]; - - [self.idSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.magnificentFigureIndicateRegard); - make.top.mas_equalTo(self.coupleHierarchyRegard.mas_bottom).offset(3); - }]; - - [self.copysIdIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(15, 15)); - make.left.mas_equalTo(self.idSequencignation.mas_right).offset(2); - make.centerY.mas_equalTo(self.idSequencignation); - }]; - - [self.concludeBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(22, 22)); - make.top.mas_equalTo(self.consumerAbstractRegard).offset(5); - make.right.mas_equalTo(self.consumerAbstractRegard).offset(-6); - }]; - - [self.reportBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.concludeBtuton); - make.right.mas_equalTo(self.concludeBtuton.mas_left).offset(-5); - }]; - - [self.experIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(20); - }]; - - [self.fascinationIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(20); - }]; - - [self.strangeConsumerIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(15); - }]; - - [self.officalIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(20); - }]; - - [self.constituteWoodentrayRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(20); - make.width.mas_equalTo(self.materialIndicateRegard.mas_width); - }]; - - - [self.materialIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(20); - make.width.mas_equalTo(60); - make.left.top.mas_equalTo(self.constituteWoodentrayRegard); - }]; - - [self.materialSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.bottom.mas_equalTo(self.materialIndicateRegard); - make.right.mas_equalTo(self.constituteWoodentrayRegard).offset(-2); - }]; - - [self.extractCourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(200); - make.height.mas_equalTo(40); - }]; - - [self.extractCourageBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.centerY.mas_equalTo(self.extractCourageRegard); - make.height.mas_equalTo(30); - }]; -} - -- (void)initOccurrence { - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(prohibitiaplictowardsionarsVc:)]; - [self.apexBeatRegard addGestureRecognizer:tap]; - UITapGestureRecognizer * bottomTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(prohibitiaplictowardsionarsVc:)]; - [self.extremeBeatRegard addGestureRecognizer:bottomTap]; - - UITapGestureRecognizer * userInfoTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(passtoConsumerAbstractVewC:)]; - [self.intelligenceportraitIndicateRegard addGestureRecognizer:userInfoTap]; -} - -- (void)initHyperessay { - [self.presimport getUserInfo:self.automobiledAbstract.uid]; - [self.presimport acquireObligtowardsionProvisionsByConsumerAbstract:self.automobiledAbstract]; - [self.presimport acquireMiecreoscoopeObligtowardsionProvisionsByConsumerAbstract:self.automobiledAbstract]; -} - -- (void)prohibitipositionChamberEngagementExtractCourage { - self.extractCourageRegard.hidden = YES; - if (self.automobiledAbstract.roomInfo.roomModeType == ChamberModeGenre_Open_Blind && self.automobiledAbstract.roomInfo.blindDateState == ChamberDisportDateingGenre_Pick && [AccountAbstractStorage instance].acquireCid.integerValue != self.automobiledAbstract.uid.integerValue) { - __block MiecreoscoopeMHTueueMatrix * selfMicqueue; - __block MiecreoscoopeMHTueueMatrix * targetMicqueue; - [self.automobiledAbstract.micQueue.allValues enumerateObjectsUsingBlock:^(MiecreoscoopeMHTueueMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.userInfo && obj.userInfo.uid == [AccountAbstractStorage instance].acquireCid.integerValue) { - selfMicqueue = obj; - } else if(obj.userInfo && obj.userInfo.uid == self.automobiledAbstract.uid.integerValue) { - targetMicqueue = obj; - } - }]; - if (selfMicqueue.userInfo && selfMicqueue.userInfo.uid > 0 && !selfMicqueue.userInfo.hasSelectUser && selfMicqueue.microState.position != -1 && targetMicqueue.microState.position != -1) { - self.extractCourageRegard.hidden = NO; - } - } -} - -- (void)refurbishAssembletionAltitude:(NSArray *)array { - if (array.count > 0) { - CGFloat collectionHeight = 16 + 10; - NSInteger page = array.count / 4; - if (page > 0) { - if (array.count % 4 ==0) { - collectionHeight += (page * 55 + (page-1) * 16); - } else { - collectionHeight += ((page + 1) * 55 + page * 16); - } - } else { - collectionHeight += 55; - } - [self.collectionView mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(collectionHeight); - }]; - } -} - -- (void)prohibitichargeIndividualityCommunictowardsionAbandonOrDenigrtowardseConsumer:(int)first second:(int)second { - ChamberAbstractMatrix * roomInfo = self.automobiledAbstract.roomInfo; - XCombatickConsumerMatrix *notifyModel = [[XCombatickConsumerMatrix alloc] init]; - notifyModel.handleNick = self.automobiledAbstract.nick; - notifyModel.handleUid = [AccountAbstractStorage instance].acquireCid.integerValue; - notifyModel.targetUid = self.automobiledAbstract.uid.integerValue; - notifyModel.targetNick = self.targetConsumerAbstract.nick; - notifyModel.uid = self.automobiledAbstract.uid.integerValue; - AttachmentMatrix *attachment = [[AttachmentMatrix alloc] init]; - attachment.first = first; - attachment.second = second; - attachment.data = [notifyModel mtowardsrix2dictionary]; - NSString * sessionId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - - NIMMessage *message = [[NIMMessage alloc]init]; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachment; - message.messageObject = object; - - NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; -} - -- (NSArray *)prohibitipositionPresentConsumers:(NSMutableDictionary *)queue { - NSMutableArray * array = [NSMutableArray array]; - BOOL receiveIsOnMic = NO; - for (MiecreoscoopeMHTueueMatrix * miecreoscoopeMatrix in queue.allValues) { - if (miecreoscoopeMatrix.userInfo && miecreoscoopeMatrix.userInfo.uid >0) { - ConsumerAbstractMatrix * userInfo = miecreoscoopeMatrix.userInfo; - if (userInfo.uid == self.automobiledAbstract.uid.integerValue) { - receiveIsOnMic = YES; - } - } - } - if (receiveIsOnMic) { - for (MiecreoscoopeMHTueueMatrix * miecreoscoopeMatrix in queue.allValues) { - if (miecreoscoopeMatrix.userInfo && miecreoscoopeMatrix.userInfo.uid >0) { - ConsumerAbstractMatrix * userInfo = miecreoscoopeMatrix.userInfo; - YUMIExternalizeConsumerAbstractMatrix * userModel = [[YUMIExternalizeConsumerAbstractMatrix alloc] init]; - userModel.avatar = userInfo.avatar; - userModel.vipMic = userInfo.vipMic; - userModel.position = [NSString stringWithFormat:@"%d", miecreoscoopeMatrix.microState.position]; - userModel.uid = userInfo.uid; - if (userInfo.uid == self.automobiledAbstract.uid.integerValue) { - userModel.isSelect = YES; - } - if (self.automobiledAbstract.roomInfo.type == ChamberGenre_Anchor && miecreoscoopeMatrix.microState.position == -1) { - continue; - } - [array addObject:userModel]; - } - } - - ChamberAbstractMatrix * roomInfo = self.automobiledAbstract.roomInfo; - if (roomInfo.leaveMode) { - YUMIExternalizeConsumerAbstractMatrix * userModel = [[YUMIExternalizeConsumerAbstractMatrix alloc] init]; - userModel.avatar = roomInfo.avatar; - userModel.position = @"-1"; - userModel.uid = self.automobiledAbstract.uid.integerValue; - if (roomInfo.uid == self.automobiledAbstract.uid.integerValue) { - userModel.isSelect = YES; - } - [array addObject:userModel]; - } else if (roomInfo.type == ChamberGenre_Anchor) { - BOOL hadContainerOwner = NO; - for (ConsumerAbstractMatrix *userModel in array) { - if (userModel.uid == roomInfo.uid) { - hadContainerOwner = YES; - break; - } - } - if (!hadContainerOwner) { - YUMIExternalizeConsumerAbstractMatrix * userModel = [[YUMIExternalizeConsumerAbstractMatrix alloc] init]; - userModel.avatar = roomInfo.avatar; - userModel.position = @"-1"; - userModel.uid = self.automobiledAbstract.uid.integerValue; - if (roomInfo.uid == self.automobiledAbstract.uid.integerValue) { - userModel.isSelect = YES; - } - [array addObject:userModel]; - } - } - } else { - YUMIExternalizeConsumerAbstractMatrix * userModel = [[YUMIExternalizeConsumerAbstractMatrix alloc] init]; - userModel.avatar = self.targetConsumerAbstract.avatar; - userModel.nick = self.targetConsumerAbstract.nick; - userModel.uid = self.automobiledAbstract.uid.integerValue; - userModel.isSelect = YES; - [array addObject:userModel]; - } - return array; -} - -- (BOOL)isInYoudCompetition:(NSString *)uid { - BOOL isGamePlaying = NO; - if (self.automobiledAbstract.roomInfo.type == ChamberGenre_MiniGame) { - for (int i = -1; i<5; i++) { - NSMutableDictionary * micQueue = self.automobiledAbstract.micQueue; - MiecreoscoopeMHTueueMatrix *micSequence = [micQueue objectForKey:[NSString stringWithFormat:@"%d", i]]; - if (micSequence == nil || micSequence.userInfo == nil) { - continue; - } - if (micSequence.userInfo.uid == uid.integerValue && micSequence.userInfo.gameStatus == LittleGameDisportPosition_Plying) { - isGamePlaying = YES; - break; - } - } - } - return isGamePlaying; -} - - -#pragma mark - FBCConsumerSolitaireCeremony -- (void)dwellEarnConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo { - self.targetConsumerAbstract = userInfo; - self.intelligenceportraitIndicateRegard.imageUrl = userInfo.avatar; - self.encourageIndicateRegard.imageUrl = userInfo.avatar; - self.magnificentIndicateRegard.imageUrl = userInfo.userInfoCardPic; - self.magnificentFigureIndicateRegard.imageUrl = userInfo.userVipInfoVO.vipIcon; - if (userInfo.userVipInfoVO && userInfo.userVipInfoVO.vipIcon) { - [self.magnificentFigureIndicateRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(20); - }]; - [self.monicerSequencignation mas_updateConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.magnificentFigureIndicateRegard.mas_right).mas_offset(2); - }]; - } - NSString * nick = userInfo.nick; - if (nick.length > 10) { - nick = [NSString stringWithFormat:@"%@…", [nick substringToIndex:10]]; - } - self.monicerSequencignation.text = nick.length > 0 ? nick : @""; - self.seaxualityIndicateRegard.image = userInfo.gender == GenderGenre_Female ? [UIImage imageNamed:@"yumi_same_female"] : [UIImage imageNamed:@"yumi_same_male"]; - self.officalIndicateRegard.hidden = userInfo.defUser != ConsumerPrototypeGenre_Offical; - self.strangeConsumerIndicateRegard.hidden = !userInfo.newUser; - if (userInfo.newUser) { - if (userInfo.fromSayHelloChannel) { - self.strangeConsumerIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_new_user_greet_new"]; - } else { - self.strangeConsumerIndicateRegard.image = [UIImage imageNamed:@"yumi_same_new_user"]; - } - } - if (userInfo.userLevelVo.experUrl) { - self.experIndicateRegard.imageUrl = userInfo.userLevelVo.experUrl; - } - self.experIndicateRegard.hidden = userInfo.userLevelVo.experUrl.length <= 0; - - if (userInfo.userLevelVo.charmUrl) { - self.fascinationIndicateRegard.imageUrl = userInfo.userLevelVo.charmUrl; - } - self.fascinationIndicateRegard.hidden = userInfo.userLevelVo.charmUrl.length <= 0; - self.copysIdIndicateRegard.hidden = NO; - if (userInfo.nameplateWord.length>0 && userInfo.nameplatePic.length>0) { - self.materialIndicateRegard.imageUrl = userInfo.nameplatePic; - self.materialSequencignation.text = userInfo.nameplateWord; - self.constituteWoodentrayRegard.hidden = NO; - } else { - self.constituteWoodentrayRegard.hidden = YES; - } - self.idSequencignation.text = [NSString stringWithFormat:@"ID:%ld", userInfo.erbanNo]; - - NSString * headwearUrl= userInfo.headwearEffect.length > 0 ? userInfo.headwearEffect : userInfo.headwearPic; - self.intelligencePenetrateIndicateRegard.hidden = headwearUrl.length <= 0; - if (headwearUrl.length > 0) { - NSURL *url = [NSURL URLWithString:headwearUrl]; - @kWeakify(self); - [self.manager chamberSpriteSheetIndictowardseAboutWEEBSITE:url completionBlock:^(YYSpriteSheetImage * _Nullable sprit) { - @kStrongify(self); - self.intelligencePenetrateIndicateRegard.image = sprit; - } failureBlock:^(NSError * _Nullable error) { - }]; - } - if (userInfo.uid == [AccountAbstractStorage instance].acquireCid.integerValue) { - self.reportBtuton.hidden = YES; - } else { - self.reportBtuton.hidden = NO; - } - if (userInfo.absCardPics.count) { - [self.communicationSolitaireRegard mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(30); - }]; - } - self.communicationSolitaireRegard.atoloudspeakerGarment = userInfo.absCardPics; -} - -- (void)dwellEarnObligtowardsionGarmentSccess:(NSArray *)array { - if (array.count <= 0) {return;} - self.datasource = array; - self.collectionView.hidden = NO; - [self.collectionView reloadData]; - [self refurbishAssembletionAltitude:self.datasource]; -} - -- (void)dwellEarnMiecreoscoopeObligtowardsionGarmentAccomplishment:(NSArray *)array { - if (array.count <= 0) {return;} - self.miecreoscoopeProvisions = array; - self.operaHierarchyRegard.hidden = NO; - self.sepBurlywoodRegard.hidden = NO; - for (YUMIConsumerSolitaireMiecreoscoopeProvisionMatrix * model in array) { - UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom]; - [button setTitle:model.title forState:UIControlStateNormal]; - button.titleLabel.font = [UIFont systemFontOfSize:13]; - button.tag = model.type; - button.selected = model.status; - [button setTitleColor:[DJDKMIMOMColor consumerMiecreoscoopeChampionPrettify] forState:UIControlStateNormal]; - [button addTarget:self action:@selector(miecreoscoopeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [self.operaHierarchyRegard addArrangedSubview:button]; - } -} - -- (void)considertowardsionConsumerAccomplishment:(YUMIConsumerSolitaireProvisionMatrix *)item { - - [self.datasource enumerateObjectsUsingBlock:^(YUMIConsumerSolitaireProvisionMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (item.type == obj.type) { - obj.isSelect = item.isSelect; - *stop = YES; - } - }]; - [self.collectionView reloadData]; -} - -- (void)manufactureAbandonConsumerAccomplish:(NSError *)error { - if (error == nil && self.targetConsumerAbstract) { - [self dismissViewControllerAnimated:YES completion:nil]; - [self prohibitichargeIndividualityCommunictowardsionAbandonOrDenigrtowardseConsumer:IndividualityCommunicationGenre_Kick_User second:Custom_Message_Sub_Kick_BeKicked]; - } else if (error.code == 404) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_User_Card_View_Controller_0")]; - } -} - -- (void)senstowardsionalManagementAbandonConsumerAccomplish:(NSError *)error { - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)markConsumerExecutiveAccomplish:(YUMIConsumerSolitaireProvisionMatrix *)item error:(NSError *)error { - if (error == nil) { - [self.datasource enumerateObjectsUsingBlock:^(YUMIConsumerSolitaireProvisionMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (item.type == obj.type) { - obj.isSelect = item.isSelect; - *stop = YES; - } - }]; - [self.collectionView reloadData]; - } -} - -- (void)manufactureConsumerDenigrtowardseAccomplish:(NSError *)error { - if (error == nil && self.targetConsumerAbstract) { - [self dismissViewControllerAnimated:YES completion:nil]; - if (self.automobiledAbstract.position.length > 0) { - NIMChatroomQueueRemoveRequest *request = [[NIMChatroomQueueRemoveRequest alloc]init]; - request.key = self.automobiledAbstract.position; - request.roomId = [NSString stringWithFormat:@"%ld", self.automobiledAbstract.roomInfo.roomId]; - [[NIMSDK sharedSDK].chatroomManager removeChatroomQueueObject:request completion:^(NSError * _Nullable error, NSDictionary * _Nullable element) { - if (error == nil ) { - } - }]; - } - [self prohibitichargeIndividualityCommunictowardsionAbandonOrDenigrtowardseConsumer:IndividualityCommunicationGenre_Kick_User second:Custom_Message_Sub_Kick_BlackList]; - } else if (error.code == 417) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_User_Card_View_Controller_1")]; - } -} - -- (void)lockMiecreoscoopeSusccess { - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)muteMiecreoscoopeSusccess { - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)kickPubescenceMiecreoscoopeAccomplishment { - if (self.automobiledAbstract.uid.integerValue != [AccountAbstractStorage instance].acquireCid.integerValue) { - [self prohibitichargeIndividualityCommunictowardsionAbandonOrDenigrtowardseConsumer:IndividualityCommunicationGenre_Queue second:Custom_Message_Sub_Queue_Kick]; - } - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)upMiecreoscoopeAccomplishment { - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)sanitaryConsumerPresentBWSttessAccomplishment:(NSDictionary *)dic { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_User_Card_View_Controller_2")]; - NIMMessage * message = [[NIMMessage alloc] init]; - AttachmentMatrix * attachMent = [[AttachmentMatrix alloc] init]; - attachMent.first = IndividualityCommunicationGenre_Room_GiftValue; - attachMent.second = Custom_Message_Sub_Room_GiftValue_Sync; - attachMent.data = dic; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachMent; - message.messageObject = object; - - NSString * sessionId = [NSString stringWithFormat:@"%ld", self.automobiledAbstract.roomInfo.roomId]; - NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)chamberEngagementExtractCourageConsumerAccomplishment { - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)senstowardsionalManagementShankConsumerAccomplishment:(NSString *)opt { - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_User_Card_View_Controller_3")]; - [self dismissViewControllerAnimated:YES completion:nil]; - if ([opt isEqualToString:@"-1"]) { - if (self.automobiledAbstract.position.length > 0) { - NIMChatroomQueueRemoveRequest *request = [[NIMChatroomQueueRemoveRequest alloc]init]; - request.key = self.automobiledAbstract.position; - request.roomId = [NSString stringWithFormat:@"%ld", self.automobiledAbstract.roomInfo.roomId]; - [[NIMSDK sharedSDK].chatroomManager removeChatroomQueueObject:request completion:^(NSError * _Nullable error, NSDictionary * _Nullable element) { - if (error == nil ) { - } - }]; - } - [self prohibitichargeIndividualityCommunictowardsionAbandonOrDenigrtowardseConsumer:IndividualityCommunicationGenre_Kick_User second:Custom_Message_Sub_Kick_BlackList]; - } -} - -- (BOOL)shouldBrakeDischargePresentProvision { - return self.shouldBrakeDischargePresentProvision; -} - -#pragma mark - UICollectionViewDelegate -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - [collectionView deselectItemAtIndexPath:indexPath animated:YES]; - - BOOL meIsSensationalManagement = NO; - for (UnionSensationalManagementAbstractMatrix *executiveAbstract in self.automobiledAbstract.superMangerList) { - if ([executiveAbstract.uid isEqualToString:[AccountAbstractStorage instance].acquireCid]) { - meIsSensationalManagement = YES; - } - } - if (self.datasource.count > 0) { - YUMIConsumerSolitaireProvisionMatrix * model = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.item]; - NSString * roomId = [NSString stringWithFormat:@"%ld", self.automobiledAbstract.roomInfo.roomId];; - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.automobiledAbstract.roomInfo.uid];; - switch (model.type) { - case ConsumerSolitaireProvisionGenre_Chat: - { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"chat"}]; - [self dismissViewControllerAnimated:YES completion:^{ - UIViewController * controller = (UIViewController *)self.automobiledAbstract.delegate; - YUMIChamberHalfCommunicationRegard *halfMessageView = [[YUMIChamberHalfCommunicationRegard alloc] initWithFrame:CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight) controller:controller]; - halfMessageView.chatConsumerId = self.automobiledAbstract.uid; - [controller.view addSubview:halfMessageView]; - [UIView animateWithDuration:.35 animations:^{ - CGRect rect = halfMessageView.frame; - rect.origin.y = 0; - halfMessageView.frame = rect; - }]; - }]; - - } - break; - case ConsumerSolitaireProvisionGenre_Gift: - { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"sendGift"}]; - [self dismissViewControllerAnimated:NO completion:nil]; - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.automobiledAbstract.roomInfo.uid]; - YUMIDischargePresentRegard * presentRegard = [[YUMIDischargePresentRegard alloc] initWithType:DischargePresentGenre_Room uid:roomUid]; - presentRegard.delegate = self.automobiledAbstract.delegate; - NSArray *users = [self prohibitipositionPresentConsumers:self.automobiledAbstract.delegate.acquireMiecreoscoopeInthecaseofmtowardsion]; - [presentRegard prohibitipositionPresentConsumers:users]; - [self.presentingViewController presentViewController:presentRegard animated:YES completion:nil]; - } - break; - case ConsumerSolitaireProvisionGenre_Attention: - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"attention"}]; - [self.presimport considertowardsionConsumer:self.automobiledAbstract.uid status:!model.isSelect]; - break; - case ConsumerSolitaireProvisionGenre_KickOut: - { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"kickout"}]; - - if (self.targetConsumerAbstract.userVipInfoVO.preventKick) { - - if (self.automobiledAbstract.roomInfo.uid != [AccountAbstractStorage instance].acquireCid.integerValue) { - [self EvidenceMistakeToast:[NSString stringWithFormat:@"该用户为%@贵族,只有房主才可以踢出哦~", self.targetConsumerAbstract.userVipInfoVO.vipName]]; - } else { - NSString *message = [NSString stringWithFormat:@"该用户为%@贵族\n确认是否要将其踢出房间?", self.targetConsumerAbstract.userVipInfoVO.vipName]; - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.title = @""; - config.message = message; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - if ([self isInYoudCompetition:self.automobiledAbstract.uid]) { - NSString *message = [NSString stringWithFormat:@"游戏模式下默认该玩家退出游戏是否要将此用户踢出房间?"]; - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.title = @""; - config.message = message; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [self.presimport manufactureAbandonConsumer:self.automobiledAbstract.uid roomId:roomId]; - } cancelHandler:^{ - }]; - } else { - [self.presimport manufactureAbandonConsumer:self.automobiledAbstract.uid roomId:roomId]; - } - } cancelHandler:^{ - }]; - } - return; - } - if ([self isInYoudCompetition:self.automobiledAbstract.uid]) { - NSString *message = [NSString stringWithFormat:@"游戏模式下默认该玩家退出游戏是否要将此用户踢出房间?"]; - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.title = @""; - config.message = message; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - if (meIsSensationalManagement) { - [self.presimport senstowardsionalManagementAbandonConsumer:self.targetConsumerAbstract.nick automobiledAbstract:self.automobiledAbstract]; - } else { - [self.presimport manufactureAbandonConsumer:self.automobiledAbstract.uid roomId:roomId]; - } - } cancelHandler:^{ - }]; - } else { - NSString *message = [NSString stringWithFormat:@"是否需要将%@踢出房间?",self.targetConsumerAbstract.nick]; - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.title = YMLocalizedString(@"YUMI_User_Card_View_Controller_9"); - config.message = message; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - if (meIsSensationalManagement) { - [self.presimport senstowardsionalManagementAbandonConsumer:self.targetConsumerAbstract.nick automobiledAbstract:self.automobiledAbstract]; - } else { - [self.presimport manufactureAbandonConsumer:self.automobiledAbstract.uid roomId:roomId]; - } - } cancelHandler:^{ - }]; - } - } - break; - case ConsumerSolitaireProvisionGenre_Black: - { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"blacklist"}]; - - if (self.targetConsumerAbstract.userVipInfoVO.preventKick) { - - if (self.automobiledAbstract.roomInfo.uid != [AccountAbstractStorage instance].acquireCid.integerValue) { - [self EvidenceMistakeToast:[NSString stringWithFormat:@"该用户为%@贵族,只有房主才可以踢出哦~", self.targetConsumerAbstract.userVipInfoVO.vipName]]; - } else { - NSString *message = [NSString stringWithFormat:@"该用户为%@贵族\n确认是否要将其拉黑?", self.targetConsumerAbstract.userVipInfoVO.vipName]; - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.title = @""; - config.message = message; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - if ([self isInYoudCompetition:self.automobiledAbstract.uid]) { - NSString *message = [NSString stringWithFormat:@"游戏模式下默认该玩家退出游戏是否要将此用户踢出房间?"]; - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.title = @""; - config.message = message; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [self.presimport manufactureAbandonConsumer:self.automobiledAbstract.uid roomId:roomId]; - } cancelHandler:^{ - }]; - } else { - [self.presimport manufactureAbandonConsumer:self.automobiledAbstract.uid roomId:roomId]; - } - } cancelHandler:^{ - }]; - } - return; - } - if ([self isInYoudCompetition:self.automobiledAbstract.uid]) { - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.title = @""; - config.message = [NSString stringWithFormat: YMLocalizedString(@"YUMI_User_Card_View_Controller_13"), self.targetConsumerAbstract.nick]; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - if (meIsSensationalManagement) { - [self.presimport senstowardsionalManagementShankConsumer:self.automobiledAbstract.uid opt:@"-1" roomUid:roomUid isSet:YES]; - } else { - [self.presimport manufactureConsumerDenigrtowardse:self.automobiledAbstract.uid roomId:roomId]; - } - } cancelHandler:^{ - }]; - } else { - NSString *title = [NSString stringWithFormat:@"你正在拉黑%@",self.targetConsumerAbstract.nick]; - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.title = title; - config.message = YMLocalizedString(@"YUMI_User_Card_View_Controller_15"); - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - if (meIsSensationalManagement) { - [self.presimport senstowardsionalManagementShankConsumer:self.automobiledAbstract.uid opt:@"-1" roomUid:roomUid isSet:YES]; - }else { - [self.presimport manufactureConsumerDenigrtowardse:self.automobiledAbstract.uid roomId:roomId]; - } - } cancelHandler:^{ - }]; - } - } - break; - case ConsumerSolitaireProvisionGenre_Manager: - { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"manager"}]; - if (meIsSensationalManagement) { - [self.presimport senstowardsionalManagementShankConsumer:self.automobiledAbstract.uid opt:@"1" roomUid:roomUid isSet:!model.isSelect]; - } else { - [self.presimport manufactureConsumerExecutive:self.automobiledAbstract.uid roomId:roomId enable:!model.isSelect]; - } - } - break; - case ConsumerSolitaireProvisionGenre_Invite_Micro: - { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"invite_micro"}]; - if ([AccountAbstractStorage instance].acquireCid.integerValue == self.targetConsumerAbstract.uid) { - [self.presimport upMiecreoscoope:roomId position:model.position userInfo:self.targetConsumerAbstract]; - } else { - if (self.automobiledAbstract.roomInfo.leaveMode && [model.position isEqualToString:@"-1"]) { - return; - } - NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic secureSetGroal:@(model.position.integerValue) forKey:@"micPosition"]; - [dic secureSetGroal:@(self.targetConsumerAbstract.uid) forKey:@"uid"]; - AttachmentMatrix *attachement = [[AttachmentMatrix alloc]init]; - attachement.first = IndividualityCommunicationGenre_Queue; - attachement.second = Custom_Message_Sub_Queue_Invite; - attachement.data = dic; - - NIMMessage *message = [[NIMMessage alloc]init]; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachement; - message.messageObject = object; - - NIMSession *session = [NIMSession session:roomId type:NIMSessionTypeChatroom]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; - [self dismissViewControllerAnimated:YES completion:nil]; - } - } - break; - case ConsumerSolitaireProvisionGenre_AtUser: - { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"atUser"}]; - if (self.automobiledAbstract.roomInfo.isCloseScreen) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_User_Card_View_Controller_16")]; - return; - } - [self dismissViewControllerAnimated:NO completion:^{ - UIViewController *vc = self.automobiledAbstract.delegate.acquireUniversalNev.viewControllers[0]; - [YUMIChamberDischargeEssayRegard EvidenceEssayRegard:vc.view delegate:self.automobiledAbstract.delegate atUid:self.automobiledAbstract.uid atNick:self.targetConsumerAbstract.nick]; - }]; - } - default: - break; - } - } -} - -#pragma mark - UICollectionViewDataSource -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - YUMIConsumerSolitaireProvisionAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([YUMIConsumerSolitaireProvisionAssembletionRegardElement class]) forIndexPath:indexPath]; - cell.itemMatrix = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.item]; - return cell; -} - -#pragma mark - Event Response -- (void)miecreoscoopeBtutonPerformance:(UIButton *)sender { - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.automobiledAbstract.roomInfo.uid];; - NSString * roomId = [NSString stringWithFormat:@"%ld", self.automobiledAbstract.roomInfo.roomId];; - switch (sender.tag) { - case ConsumerSolitaireMiecreoscoopeGenre_UpDown: - { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"downMic"}]; - if (sender.selected) { - if ([self isInYoudCompetition:self.automobiledAbstract.uid]) { - if (self.automobiledAbstract.uid.integerValue == [AccountAbstractStorage instance].acquireCid.integerValue) { - [self EvidenceMistakeToast:@"游戏中不可主动下麦!"]; - [self dismissViewControllerAnimated:YES completion:nil]; - } else { - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.message = @"抱Ta下麦后默认该玩家退出游戏,是否继续?"; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [self.presimport kickPubescenceMiecreoscoope:self.automobiledAbstract.position roomId:roomId]; - } cancelHandler:^{ - }]; - } - - return; - }else { - [self.presimport kickPubescenceMiecreoscoope:self.automobiledAbstract.position roomId:roomId]; - } - } else { - self.operaHierarchyRegard.hidden = YES; - int micCount = self.automobiledAbstract.roomInfo.type == ChamberGenre_Anchor ? 4 : self.automobiledAbstract.roomInfo.type == ChamberGenre_MiniGame ? 6 : 9; - [self.presimport acquireChamberMiecreoscoopeProvisions:micCount automobiledAbstract:self.automobiledAbstract]; - } - } - break; - case ConsumerSolitaireMiecreoscoopeGenre_Lock: - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"lockMic"}]; - [self.presimport miecreoscoopeSpoke:roomUid state:sender.selected position:self.automobiledAbstract.position]; - break; - case ConsumerSolitaireMiecreoscoopeGenre_Mute: - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"muteMic"}]; - [self.presimport miecreoscoopeBretowardshaed:roomUid state:sender.selected position:self.automobiledAbstract.position]; - break; - case ConsumerSolitaireMiecreoscoopeGenre_Clean_Gift_Value: - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"cleanGiftValue"}]; - [self.presimport sanitaryConsumerPresentBWSttess:roomUid micUid:self.automobiledAbstract.uid]; - break; - default: - break; - } -} - -- (void)respondBtutonPerformance:(UIButton *)sender { - [self dismissViewControllerAnimated:YES completion:nil]; - YUMITissueRegardGovernancer *vc = [[YUMITissueRegardGovernancer alloc]init]; - NSString *urlstr = [NSString stringWithFormat:@"%@?reportUid=%@&source=USERCARD",URLWithType(kReportRoomURL),self.automobiledAbstract.uid]; - vc.url = urlstr; - [(UINavigationController *)self.presentingViewController pushViewController:vc animated:YES]; -} - -- (void)concludeBtutonPerformance:(UIButton *)sender { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventroom_mike_click eventAttributes:@{@"actionType" : @"close"}]; - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)prohibitiaplictowardsionarsVc:(UITapGestureRecognizer *)tap { - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)passtoConsumerAbstractVewC:(UITapGestureRecognizer *)tap { - [self dismissViewControllerAnimated:YES completion:nil]; - - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMIManeConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = self.automobiledAbstract.uid.integerValue; - [((UINavigationController *)self.presentingViewController) pushViewController:userInfoVC animated:YES]; - }else{ - YUMIManeSimpleConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeSimpleConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = self.automobiledAbstract.uid.integerValue; - [((UINavigationController *)self.presentingViewController) pushViewController:userInfoVC animated:YES]; - } -} - -- (void)extractCourageBtutonPerformance:(UIButton *)sender { - if (self.automobiledAbstract.position.length > 0) { - MKJPrecautiousDisposition * config = [[MKJPrecautiousDisposition alloc] init]; - config.title = [NSString stringWithFormat:@"确认选择%d号嘉宾吗?", (self.automobiledAbstract.position.intValue + 1)]; - config.message = YMLocalizedString(@"YUMI_User_Card_View_Controller_20"); - config.communicationPrettify = UIColorFromRGB(0xFE5D7F); - config.communicationLetterform = [UIFont systemFontOfSize:14]; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [self.presimport extractCourageConsumer:[NSString stringWithFormat:@"%ld", self.automobiledAbstract.roomInfo.uid] chosenUserId:self.automobiledAbstract.uid]; - } cancelHandler:^{ - - }]; - } -} - -- (void)copysIdRecognition { - [UIPasteboard generalPasteboard].string = [NSString stringWithFormat:@"%ld", self.targetConsumerAbstract.erbanNo]; - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:YMLocalizedString(@"YUMI_User_Card_View_Controller_21")]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventID_datacard_copyid_click]; -} - -#pragma mark - Getters And Setters - -- (UIView *)apexBeatRegard { - if (!_apexBeatRegard) { - _apexBeatRegard = [[UIView alloc] init]; - _apexBeatRegard.backgroundColor = [UIColor clearColor]; - } - return _apexBeatRegard; -} -- (UIView *)extremeBeatRegard { - if (!_extremeBeatRegard) { - _extremeBeatRegard = [[UIView alloc] init]; - _extremeBeatRegard.backgroundColor = [UIColor clearColor]; - } - return _extremeBeatRegard; -} - -- (UIView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIView alloc] init]; - _encourageRegard.backgroundColor = [UIColor whiteColor]; - _encourageRegard.layer.masksToBounds = YES; - _encourageRegard.layer.cornerRadius = 12; - } - return _encourageRegard; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentCenter; - _stackView.spacing = 0; - } - return _stackView; -} - -- (UIView *)consumerAbstractRegard { - if (!_consumerAbstractRegard) { - _consumerAbstractRegard = [[UIView alloc] init]; - _consumerAbstractRegard.backgroundColor = [UIColor clearColor]; - } - return _consumerAbstractRegard; -} - -- (UIVisualEffectView *)impressionRegard { - if (!_impressionRegard) { - UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; - _impressionRegard = [[UIVisualEffectView alloc]initWithEffect:effect]; - } - return _impressionRegard; -} - -- (NetIndicateRegard *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[NetIndicateRegard alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - _encourageIndicateRegard.layer.masksToBounds = YES; - _encourageIndicateRegard.layer.cornerRadius = 25; - _encourageIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - _encourageIndicateRegard.image = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - } - return _encourageIndicateRegard; -} - -- (NetIndicateRegard *)magnificentIndicateRegard { - if (!_magnificentIndicateRegard) { - _magnificentIndicateRegard = [[NetIndicateRegard alloc] init]; - _magnificentIndicateRegard.contentMode = UIViewContentModeScaleToFill; - _magnificentIndicateRegard.layer.masksToBounds = YES; - } - return _magnificentIndicateRegard; -} - -- (UIButton *)reportBtuton { - if (!_reportBtuton) { - _reportBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_reportBtuton setTitle:YMLocalizedString(@"YUMI_User_Card_View_Controller_22") forState:UIControlStateNormal]; - [_reportBtuton setTitleColor:[DJDKMIMOMColor consumerMonicerPrettify] forState:UIControlStateNormal]; - _reportBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_reportBtuton addTarget:self action:@selector(respondBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _reportBtuton; -} - -- (UIButton *)concludeBtuton { - if (!_concludeBtuton) { - _concludeBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_usercard_close"] forState:UIControlStateNormal]; - [_concludeBtuton setImage:[UIImage imageNamed:@"yumi_usercard_close"] forState:UIControlStateSelected]; - [_concludeBtuton addTarget:self action:@selector(concludeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _concludeBtuton; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.imageType = ImageGenreUserIcon; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.userInteractionEnabled = YES; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 25; - _intelligenceportraitIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _intelligenceportraitIndicateRegard; -} - -- (UILabel *)monicerSequencignation { - if (!_monicerSequencignation) { - _monicerSequencignation = [[UILabel alloc] init]; - _monicerSequencignation.font = [UIFont systemFontOfSize:15]; - _monicerSequencignation.textColor = [DJDKMIMOMColor consumerMonicerPrettify]; - } - return _monicerSequencignation; -} - -- (UIImageView *)seaxualityIndicateRegard { - if (!_seaxualityIndicateRegard) { - _seaxualityIndicateRegard = [[UIImageView alloc] init]; - _seaxualityIndicateRegard.userInteractionEnabled = YES; - } - return _seaxualityIndicateRegard; -} - -- (UIStackView *)coupleHierarchyRegard { - if (!_coupleHierarchyRegard) { - _coupleHierarchyRegard = [[UIStackView alloc] init]; - _coupleHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _coupleHierarchyRegard.distribution = UIStackViewDistributionFill; - _coupleHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _coupleHierarchyRegard.spacing = 2; - } - return _coupleHierarchyRegard; -} -- (NetIndicateRegard *)experIndicateRegard { - if (!_experIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.imageType = ImageGenreUserCardLevel; - _experIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _experIndicateRegard.userInteractionEnabled = YES; - _experIndicateRegard.hidden = YES; - _experIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _experIndicateRegard; -} - -- (NetIndicateRegard *)fascinationIndicateRegard { - if (!_fascinationIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.imageType = ImageGenreUserCardLevel; - _fascinationIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _fascinationIndicateRegard.userInteractionEnabled = YES; - _fascinationIndicateRegard.hidden = YES; - _fascinationIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _fascinationIndicateRegard; -} - -- (NetIndicateRegard *)magnificentFigureIndicateRegard { - if (!_magnificentFigureIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.imageType = ImageGenreUserCardLevel; - _magnificentFigureIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _magnificentFigureIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _magnificentFigureIndicateRegard; -} - -- (UIView *)constituteWoodentrayRegard { - if (!_constituteWoodentrayRegard) { - _constituteWoodentrayRegard = [[UIView alloc] init]; - _constituteWoodentrayRegard.backgroundColor = [UIColor clearColor]; - _constituteWoodentrayRegard.hidden = YES; - } - return _constituteWoodentrayRegard; -} - -- (NetIndicateRegard *)materialIndicateRegard { - if (!_materialIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.imageType = ImageGenreUserCardLevel; - _materialIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _materialIndicateRegard.userInteractionEnabled = YES; - _materialIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _materialIndicateRegard; -} - -- (UILabel *)materialSequencignation { - if (!_materialSequencignation) { - _materialSequencignation = [[UILabel alloc] init]; - _materialSequencignation.font = [UIFont systemFontOfSize:10]; - _materialSequencignation.textAlignment = NSTextAlignmentCenter; - _materialSequencignation.textColor = [DJDKMIMOMColor consumerMonicerPrettify]; - } - return _materialSequencignation; -} - -- (UIImageView *)strangeConsumerIndicateRegard { - if (!_strangeConsumerIndicateRegard) { - _strangeConsumerIndicateRegard = [[UIImageView alloc] init]; - _strangeConsumerIndicateRegard.userInteractionEnabled = YES; - _strangeConsumerIndicateRegard.image = [UIImage imageNamed:@"yumi_same_new_user"]; - _strangeConsumerIndicateRegard.hidden = YES; - } - return _strangeConsumerIndicateRegard; -} - -- (UIImageView *)officalIndicateRegard { - if (!_officalIndicateRegard) { - _officalIndicateRegard = [[UIImageView alloc] init]; - _officalIndicateRegard.userInteractionEnabled = YES; - _officalIndicateRegard.image = [UIImage imageNamed:@"yumi_same_offical"]; - _officalIndicateRegard.hidden = YES; - } - return _officalIndicateRegard; -} - -- (UILabel *)idSequencignation { - if (!_idSequencignation) { - _idSequencignation = [[UILabel alloc] init]; - _idSequencignation.font = [UIFont systemFontOfSize:10]; - _idSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - _idSequencignation.userInteractionEnabled = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(copysIdRecognition)]; - [_idSequencignation addGestureRecognizer:tap]; - } - return _idSequencignation; -} - -- (YUMIConsumerSolitaireCommunicationSolitaireRegard *)communicationSolitaireRegard { - if (!_communicationSolitaireRegard) { - _communicationSolitaireRegard = [[YUMIConsumerSolitaireCommunicationSolitaireRegard alloc] init]; - } - return _communicationSolitaireRegard; -} - -- (UICollectionView *)collectionView{ - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.itemSize = CGSizeMake((KScreenWidth - 45 * 2)/ 4, 55); - layout.minimumLineSpacing = 16; - layout.minimumInteritemSpacing = 0; - layout.sectionInset = UIEdgeInsetsMake(16, 0, 10, 0); - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.hidden = YES; - _collectionView.backgroundColor = [UIColor clearColor]; - [_collectionView registerClass:[YUMIConsumerSolitaireProvisionAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([YUMIConsumerSolitaireProvisionAssembletionRegardElement class])]; - } - return _collectionView; -} - -- (UIView *)sepBurlywoodRegard { - if (!_sepBurlywoodRegard) { - _sepBurlywoodRegard = [[UIView alloc] init]; - _sepBurlywoodRegard.backgroundColor = [DJDKMIMOMColor consumerDividerPrettify]; - _sepBurlywoodRegard.hidden = YES; - } - return _sepBurlywoodRegard; -} - -- (UIStackView *)operaHierarchyRegard { - if (!_operaHierarchyRegard) { - _operaHierarchyRegard = [[UIStackView alloc] init]; - _operaHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _operaHierarchyRegard.distribution = UIStackViewDistributionFillEqually; - _operaHierarchyRegard.alignment = UIStackViewAlignmentFill; - _operaHierarchyRegard.spacing = 0; - _operaHierarchyRegard.hidden = YES; - } - return _operaHierarchyRegard; -} - -- (SpriteSheetIndicateExecutive *)manager { - if (!_manager) { - _manager = [[SpriteSheetIndicateExecutive alloc] init]; - } - return _manager; -} - -- (YYAnimatedImageView *)intelligencePenetrateIndicateRegard { - if (!_intelligencePenetrateIndicateRegard) { - _intelligencePenetrateIndicateRegard = [[YYAnimatedImageView alloc] init]; - _intelligencePenetrateIndicateRegard.backgroundColor = [UIColor clearColor]; - _intelligencePenetrateIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _intelligencePenetrateIndicateRegard; -} - -- (UIView *)extractCourageRegard { - if (!_extractCourageRegard) { - _extractCourageRegard = [[UIView alloc] init]; - _extractCourageRegard.backgroundColor = [UIColor clearColor]; - _extractCourageRegard.hidden = YES; - } - return _extractCourageRegard; -} - -- (UIButton *)extractCourageBtuton { - if (!_extractCourageBtuton) { - _extractCourageBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_extractCourageBtuton setTitle:YMLocalizedString(@"YUMI_User_Card_View_Controller_23") forState:UIControlStateNormal]; - [_extractCourageBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _extractCourageBtuton.titleLabel.font = [UIFont systemFontOfSize:13]; - [_extractCourageBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFA7186), UIColorFromRGB(0xFA4972)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _extractCourageBtuton.layer.masksToBounds = YES; - _extractCourageBtuton.layer.cornerRadius = 15; - [_extractCourageBtuton addTarget:self action:@selector(extractCourageBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _extractCourageBtuton; -} - -- (UIImageView *)copysIdIndicateRegard { - if (!_copysIdIndicateRegard) { - _copysIdIndicateRegard = [[UIImageView alloc] init]; - _copysIdIndicateRegard.userInteractionEnabled = YES; - _copysIdIndicateRegard.image = [UIImage imageNamed:@"yumi_center_user_id_copy_white"]; - _copysIdIndicateRegard.hidden = YES; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(copysIdRecognition)]; - [_copysIdIndicateRegard addGestureRecognizer:tap]; - } - return _copysIdIndicateRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/Api/Api+WishGift.h b/YuMi/Modules/YMRoom/View/WishGift/Api/Api+WishGift.h index 474c14c8..e8b9ac56 100644 --- a/YuMi/Modules/YMRoom/View/WishGift/Api/Api+WishGift.h +++ b/YuMi/Modules/YMRoom/View/WishGift/Api/Api+WishGift.h @@ -10,15 +10,39 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (WishGift) -+ (void)desirePresentAccelertowardse:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; -+ (void)desirePresentRepresenttowardsionProvision:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid itemId:(NSString *)itemId; -+ (void)desirePresentAccelertowardseProvision:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid giftId:(NSString *)giftId itemId:(NSString *)itemId seq:(NSString *)seq targetNum:(NSString *)targetNum; -+ (void)desirePresentSttowardsement:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; -+ (void)desirePresentAssistConsumerSttowardsement:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; -+ (void)desirePresentCondfigSttowardsement:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid level:(NSString *)level; -+ (void)desirePresentHerstorySttowardsement:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; +///添加心愿礼物 +/// @param roomUid 房主的uid ++ (void)wishGiftAdd:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; +/// 删除心愿礼物 +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param itemId item id ++ (void)wishGiftDeleteItem:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid itemId:(NSString *)itemId; +/// 创建心愿礼物 +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param giftId 礼物id +/// @param itemId item id +/// @param seq 编号 1 2 3 +/// @param targetNum 目标数量 ++ (void)wishGiftAddItem:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid giftId:(NSString *)giftId itemId:(NSString *)itemId seq:(NSString *)seq targetNum:(NSString *)targetNum; +/// 获取房间心愿礼物列表 +/// @param roomUid 房主的uid ++ (void)wishGiftList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; +/// 获取房间心愿礼物助力用户列表 +/// @param roomUid 房主的uid ++ (void)wishGiftAssistUserList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; +/// 获取心愿礼物配置列表 +/// @param roomUid 房主的uid +/// @param level 等级 ++ (void)wishGiftCondfigList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid level:(NSString *)level; +/// 获取房间历史心愿列表 +/// @param roomUid 房主的uid ++ (void)wishGiftHistoryList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; -+ (void)desirePresentDischargeCelebrtowardse:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; +/// 发送心愿完成庆祝特效 +/// @param roomUid 房主的uid ++ (void)wishGiftSendCelebrate:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; @end diff --git a/YuMi/Modules/YMRoom/View/WishGift/Api/Api+WishGift.m b/YuMi/Modules/YMRoom/View/WishGift/Api/Api+WishGift.m index 3bf5bfa0..bc412824 100644 --- a/YuMi/Modules/YMRoom/View/WishGift/Api/Api+WishGift.m +++ b/YuMi/Modules/YMRoom/View/WishGift/Api/Api+WishGift.m @@ -10,52 +10,76 @@ #import @implementation Api (WishGift) -+ (void)desirePresentAccelertowardse:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { - NSString * fang = [NSString stringFromBase64String:@"d2lzaEdpZnQvYWRk"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, nil]; +///添加心愿礼物 +/// @param roomUid 房主的uid ++ (void)wishGiftAdd:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@"d2lzaEdpZnQvYWRk"];// + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, nil]; } -+ (void)desirePresentRepresenttowardsionProvision:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid itemId:(NSString *)itemId { - NSString * fang = [NSString stringFromBase64String:@"d2lzaEdpZnQvZGVsSXRlbQ=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, itemId, nil]; +/// 删除心愿礼物 +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param itemId item id ++ (void)wishGiftDeleteItem:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid itemId:(NSString *)itemId { + NSString * fang = [NSString stringFromBase64String:@"d2lzaEdpZnQvZGVsSXRlbQ=="];// + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, itemId, nil]; } -+ (void)desirePresentAccelertowardseProvision:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid giftId:(NSString *)giftId itemId:(NSString *)itemId seq:(NSString *)seq targetNum:(NSString *)targetNum { +/// 创建心愿礼物 +/// @param completion 完成 +/// @param roomUid 房主的uid +/// @param giftId 礼物id +/// @param itemId item id +/// @param seq 编号 1 2 3 +/// @param targetNum 目标数量 ++ (void)wishGiftAddItem:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid giftId:(NSString *)giftId itemId:(NSString *)itemId seq:(NSString *)seq targetNum:(NSString *)targetNum { NSMutableDictionary * dic = [NSMutableDictionary dictionary]; if (itemId.length > 0) { - [dic secureSetGroal:itemId forKey:@"itemId"]; + [dic safeSetObject:itemId forKey:@"itemId"]; } - [dic secureSetGroal:roomUid forKey:@"roomUid"]; - [dic secureSetGroal:giftId forKey:@"giftId"]; - [dic secureSetGroal:seq forKey:@"seq"]; - [dic secureSetGroal:targetNum forKey:@"targetNum"]; - NSString * fang = [NSString stringFromBase64String:@"d2lzaEdpZnQvYWRkSXRlbQ=="]; - [HttpRequestFacilitater request:fang method:HttpRequestHelperMethodPOST params:dic completion:completion]; + [dic safeSetObject:roomUid forKey:@"roomUid"]; + [dic safeSetObject:giftId forKey:@"giftId"]; + [dic safeSetObject:seq forKey:@"seq"]; + [dic safeSetObject:targetNum forKey:@"targetNum"]; + NSString * fang = [NSString stringFromBase64String:@"d2lzaEdpZnQvYWRkSXRlbQ=="];//wishGift/addItem + [HttpRequestHelper request:fang method:HttpRequestHelperMethodPOST params:dic completion:completion]; } -+ (void)desirePresentSttowardsement:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { - NSString * fang = [NSString stringFromBase64String:@"d2lzaEdpZnQvbGlzdA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, nil]; +/// 获取房间心愿礼物列表 +/// @param roomUid 房主的uid ++ (void)wishGiftList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@"d2lzaEdpZnQvbGlzdA=="];//wishGift/list + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, nil]; } -+ (void)desirePresentAssistConsumerSttowardsement:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { - NSString * fang = [NSString stringFromBase64String:@"d2lzaEdpZnQvbGlzdEFzc2lzdFVzZXI="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, nil]; +/// 获取房间心愿礼物助力用户列表 +/// @param roomUid 房主的uid ++ (void)wishGiftAssistUserList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@"d2lzaEdpZnQvbGlzdEFzc2lzdFVzZXI="];// + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, nil]; } -+ (void)desirePresentCondfigSttowardsement:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid level:(NSString *)level { - NSString * fang = [NSString stringFromBase64String:@"d2lzaEdpZnQvbGlzdENvbmZpZw=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, level, nil]; +/// 获取心愿礼物配置列表 +/// @param roomUid 房主的uid +/// @param level 等级 ++ (void)wishGiftCondfigList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid level:(NSString *)level { + NSString * fang = [NSString stringFromBase64String:@"d2lzaEdpZnQvbGlzdENvbmZpZw=="];// + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, level, nil]; } -+ (void)desirePresentHerstorySttowardsement:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { - NSString * fang = [NSString stringFromBase64String:@"d2lzaEdpZnQvbGlzdFdpc2hHaWZ0SGlzdG9yeQ=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, nil]; +/// 获取房间历史心愿列表 +/// @param roomUid 房主的uid ++ (void)wishGiftHistoryList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@"d2lzaEdpZnQvbGlzdFdpc2hHaWZ0SGlzdG9yeQ=="];//wishGift/listWishGiftHistory + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, nil]; } -+ (void)desirePresentDischargeCelebrtowardse:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { - NSString * fang = [NSString stringFromBase64String:@"d2lzaEdpZnQvc2VuZENlbGVicmF0ZQ=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, nil]; +/// 发送心愿完成庆祝特效 +/// @param roomUid 房主的uid ++ (void)wishGiftSendCelebrate:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@"d2lzaEdpZnQvc2VuZENlbGVicmF0ZQ=="];//wishGift/sendCelebrate + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, nil]; } @end diff --git a/YuMi/Modules/YMRoom/View/WishGift/Model/DesireExternalizeConsumerMatrix.h b/YuMi/Modules/YMRoom/View/WishGift/Model/DesireExternalizeConsumerMatrix.h deleted file mode 100644 index 37f435fb..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/Model/DesireExternalizeConsumerMatrix.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// DesireExternalizeConsumerMatrix.h -// YUMI -// -// Created by YUMI on 2022/10/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface DesireExternalizeConsumerMatrix : NSObject -@property (nonatomic, copy) NSString *avatar; -@property (nonatomic, assign) NSInteger erbanNo; -@property (nonatomic, copy) NSString *nick; -@property (nonatomic, assign) NSInteger uid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/Model/DesireExternalizeConsumerMatrix.m b/YuMi/Modules/YMRoom/View/WishGift/Model/DesireExternalizeConsumerMatrix.m deleted file mode 100644 index 4c643c7a..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/Model/DesireExternalizeConsumerMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// DesireExternalizeConsumerMatrix.m -// YUMI -// -// Created by YUMI on 2022/10/18. -// - -#import "DesireExternalizeConsumerMatrix.h" - -@implementation DesireExternalizeConsumerMatrix - -@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/Model/DesirePresentAbstractMatrix.h b/YuMi/Modules/YMRoom/View/WishGift/Model/DesirePresentAbstractMatrix.h deleted file mode 100644 index 667a2e6d..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/Model/DesirePresentAbstractMatrix.h +++ /dev/null @@ -1,31 +0,0 @@ -// -// DesirePresentAbstractMatrix.h -// YUMI -// -// Created by YUMI on 2022/10/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(int, WishPresentPrototype) { - WishPresentPrototype_Normal = 1, - WishPresentPrototype_Middle = 2, - WishPresentPrototype_High = 3 -}; - - -@interface DesirePresentAbstractMatrix : NSObject -@property (nonatomic, assign) NSInteger actualNum; -@property (nonatomic, assign) NSInteger giftId; -@property (nonatomic, copy) NSString *giftName; -@property (nonatomic, assign) NSInteger goldPrice; -@property (nonatomic, assign) NSInteger itemId; -@property (nonatomic, assign) NSInteger targetNum; -@property (nonatomic,copy) NSString *giftUrl; -@property (nonatomic,assign) NSInteger row; -@property (nonatomic,strong) NSString *createTime; -@property (nonatomic,copy) NSString *levelName; -@property (nonatomic,assign) WishPresentPrototype level; -@end -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/Model/DesirePresentAbstractMatrix.m b/YuMi/Modules/YMRoom/View/WishGift/Model/DesirePresentAbstractMatrix.m deleted file mode 100644 index d9ac2837..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/Model/DesirePresentAbstractMatrix.m +++ /dev/null @@ -1,13 +0,0 @@ -// -// DesirePresentAbstractMatrix.m -// YUMI -// -// Created by YUMI on 2022/10/18. -// - -#import "DesirePresentAbstractMatrix.h" - -@implementation DesirePresentAbstractMatrix - -@end - diff --git a/YuMi/Modules/YMRoom/View/WishGift/Model/DesirePresentAbstractRefurbishMatrix.h b/YuMi/Modules/YMRoom/View/WishGift/Model/DesirePresentAbstractRefurbishMatrix.h deleted file mode 100644 index 235b9398..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/Model/DesirePresentAbstractRefurbishMatrix.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// DesirePresentAbstractRefurbishMatrix.h -// YUMI -// -// Created by YUMI on 2022/10/28. -// - -#import -#import "DesirePresentAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@interface DesirePresentAbstractRefurbishMatrix : NSObject -@property (nonatomic,strong) NSString *senderUid; -@property (nonatomic,copy) NSArray *gifts; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/Model/DesirePresentAbstractRefurbishMatrix.m b/YuMi/Modules/YMRoom/View/WishGift/Model/DesirePresentAbstractRefurbishMatrix.m deleted file mode 100644 index f33948f1..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/Model/DesirePresentAbstractRefurbishMatrix.m +++ /dev/null @@ -1,15 +0,0 @@ -// -// DesirePresentAbstractRefurbishMatrix.m -// YUMI -// -// Created by YUMI on 2022/10/28. -// - -#import "DesirePresentAbstractRefurbishMatrix.h" - -@implementation DesirePresentAbstractRefurbishMatrix -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{@"gifts":DesirePresentAbstractMatrix.class}; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/Model/DesirePresentHistoryMatrix.h b/YuMi/Modules/YMRoom/View/WishGift/Model/DesirePresentHistoryMatrix.h deleted file mode 100644 index abf6e4b1..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/Model/DesirePresentHistoryMatrix.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// DesirePresentHistoryMatrix.h -// YUMI -// -// Created by YUMI on 2022/10/20. -// - -#import -#import "DesirePresentAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@interface DesirePresentHistoryMatrix : NSObject - -@property (nonatomic,strong) NSString *createDate; -@property (nonatomic,strong) NSArray *gifts; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/Model/DesirePresentHistoryMatrix.m b/YuMi/Modules/YMRoom/View/WishGift/Model/DesirePresentHistoryMatrix.m deleted file mode 100644 index dc99b2de..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/Model/DesirePresentHistoryMatrix.m +++ /dev/null @@ -1,15 +0,0 @@ -// -// DesirePresentHistoryMatrix.m -// YUMI -// -// Created by YUMI on 2022/10/20. -// - -#import "DesirePresentHistoryMatrix.h" - -@implementation DesirePresentHistoryMatrix -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{@"gifts" : DesirePresentAbstractMatrix.class}; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/Model/WishGiftHistoryModel.h b/YuMi/Modules/YMRoom/View/WishGift/Model/WishGiftHistoryModel.h new file mode 100644 index 00000000..9ff4c92b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/Model/WishGiftHistoryModel.h @@ -0,0 +1,21 @@ +// +// WishGiftHistoryModel.h +// YUMI +// +// Created by YUMI on 2022/10/20. +// + +#import +#import "WishGiftInfoModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface WishGiftHistoryModel : NSObject + +///创建时间 +@property (nonatomic,strong) NSString *createDate; +///礼物列表 +@property (nonatomic,strong) NSArray *gifts; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/Model/WishGiftHistoryModel.m b/YuMi/Modules/YMRoom/View/WishGift/Model/WishGiftHistoryModel.m new file mode 100644 index 00000000..60803ffa --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/Model/WishGiftHistoryModel.m @@ -0,0 +1,15 @@ +// +// WishGiftHistoryModel.m +// YUMI +// +// Created by YUMI on 2022/10/20. +// + +#import "WishGiftHistoryModel.h" + +@implementation WishGiftHistoryModel ++ (NSDictionary *)objectClassInArray { + return @{@"gifts" : WishGiftInfoModel.class}; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/Model/WishGiftInfoModel.h b/YuMi/Modules/YMRoom/View/WishGift/Model/WishGiftInfoModel.h new file mode 100644 index 00000000..2e1c2615 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/Model/WishGiftInfoModel.h @@ -0,0 +1,42 @@ +// +// WishGiftInfoModel.h +// YUMI +// +// Created by YUMI on 2022/10/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(int, WishGiftLevel) { + WishGiftLevel_Normal = 1, + WishGiftLevel_Middle = 2, + WishGiftLevel_High = 3 +}; + + +@interface WishGiftInfoModel : NSObject +/// 实际收到数量 +@property (nonatomic, assign) NSInteger actualNum; +///礼物id +@property (nonatomic, assign) NSInteger giftId; +///礼物名称 +@property (nonatomic, copy) NSString *giftName; +/// 礼物价值 +@property (nonatomic, assign) NSInteger goldPrice; +/// 礼物心愿itemid +@property (nonatomic, assign) NSInteger itemId; +/// 目标数量 +@property (nonatomic, assign) NSInteger targetNum; +///礼物图片 +@property (nonatomic,copy) NSString *giftUrl; +///本地字段 +@property (nonatomic,assign) NSInteger row; +///创建的时间 +@property (nonatomic,strong) NSString *createTime; +///等级的名称 +@property (nonatomic,copy) NSString *levelName; +///等级 +@property (nonatomic,assign) WishGiftLevel level; +@end +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/Model/WishGiftInfoModel.m b/YuMi/Modules/YMRoom/View/WishGift/Model/WishGiftInfoModel.m new file mode 100644 index 00000000..fdc2c572 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/Model/WishGiftInfoModel.m @@ -0,0 +1,13 @@ +// +// WishGiftInfoModel.m +// YUMI +// +// Created by YUMI on 2022/10/18. +// + +#import "WishGiftInfoModel.h" + +@implementation WishGiftInfoModel + +@end + diff --git a/YuMi/Modules/YMRoom/View/WishGift/Model/WishGiftInfoUpdateModel.h b/YuMi/Modules/YMRoom/View/WishGift/Model/WishGiftInfoUpdateModel.h new file mode 100644 index 00000000..fe8c383d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/Model/WishGiftInfoUpdateModel.h @@ -0,0 +1,19 @@ +// +// WishGiftInfoUpdateModel.h +// YUMI +// +// Created by YUMI on 2022/10/28. +// + +#import +#import "WishGiftInfoModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface WishGiftInfoUpdateModel : NSObject +///送礼物的人 +@property (nonatomic,strong) NSString *senderUid; +///礼物 +@property (nonatomic,copy) NSArray *gifts; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/Model/WishGiftInfoUpdateModel.m b/YuMi/Modules/YMRoom/View/WishGift/Model/WishGiftInfoUpdateModel.m new file mode 100644 index 00000000..dfd23c56 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/Model/WishGiftInfoUpdateModel.m @@ -0,0 +1,15 @@ +// +// WishGiftInfoUpdateModel.m +// YUMI +// +// Created by YUMI on 2022/10/28. +// + +#import "WishGiftInfoUpdateModel.h" + +@implementation WishGiftInfoUpdateModel ++ (NSDictionary *)objectClassInArray { + return @{@"gifts":WishGiftInfoModel.class}; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/Model/WishGiftUserModel.h b/YuMi/Modules/YMRoom/View/WishGift/Model/WishGiftUserModel.h new file mode 100644 index 00000000..dc33b1be --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/Model/WishGiftUserModel.h @@ -0,0 +1,19 @@ +// +// WishGiftUserModel.h +// YUMI +// +// Created by YUMI on 2022/10/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface WishGiftUserModel : NSObject +@property (nonatomic, copy) NSString *avatar; +@property (nonatomic, assign) NSInteger erbanNo; +@property (nonatomic, copy) NSString *nick; +@property (nonatomic, assign) NSInteger uid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/Model/WishGiftUserModel.m b/YuMi/Modules/YMRoom/View/WishGift/Model/WishGiftUserModel.m new file mode 100644 index 00000000..7c739461 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/Model/WishGiftUserModel.m @@ -0,0 +1,12 @@ +// +// WishGiftUserModel.m +// YUMI +// +// Created by YUMI on 2022/10/18. +// + +#import "WishGiftUserModel.h" + +@implementation WishGiftUserModel + +@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/Presenter/XPWishGiftPresenter.h b/YuMi/Modules/YMRoom/View/WishGift/Presenter/XPWishGiftPresenter.h new file mode 100644 index 00000000..b25f53bf --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/Presenter/XPWishGiftPresenter.h @@ -0,0 +1,31 @@ +// +// WishGiftPresenter.h +// YUMI +// +// Created by YUMI on 2022/10/18. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPWishGiftPresenter : BaseMvpPresenter + +/// 添加许愿礼物 +- (void)addWishGift:(NSString *)roomUid; + +///创建心愿礼物 +- (void)createWishGiftItem:(NSString *)roomUid itemId:(NSString *)itemId giftId:(NSString *)giftId seq:(int)seq targetNum:(int)targetNum; +///删除心愿礼物 +- (void)deleteWishGiftItem:(NSString *)roomUid itemId:(NSString *)itemId; +///房间许愿礼物列表 +- (void)wishGiftList:(NSString *)roomUid; +///助理用户列表 +- (void)wishGiftAssistUserList:(NSString *)roomUid; +/// 心愿礼物配置表 +- (void)wishGiftConfigList:(NSString *)roomUid level:(NSString *)level ; +///获取房间历史列表 +- (void)wishGiftHistroyList:(NSString *)roomUid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/Presenter/XPWishGiftPresenter.m b/YuMi/Modules/YMRoom/View/WishGift/Presenter/XPWishGiftPresenter.m new file mode 100644 index 00000000..50e9c718 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/Presenter/XPWishGiftPresenter.m @@ -0,0 +1,65 @@ +// +// WishGiftPresenter.m +// YUMI +// +// Created by YUMI on 2022/10/18. +// + +#import "XPWishGiftPresenter.h" +#import "Api+WishGift.h" +#import "XPWishGiftProtocol.h" +#import "WishGiftInfoModel.h" +#import "WishGiftUserModel.h" +#import "WishGiftHistoryModel.h" + +@implementation XPWishGiftPresenter + +/// 添加许愿礼物 +- (void)addWishGift:(NSString *)roomUid { + [Api wishGiftAdd:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] addWishGiftSuccess]; + } showLoading:YES] roomUid:roomUid]; +} + +///创建心愿礼物 +- (void)createWishGiftItem:(NSString *)roomUid itemId:(NSString *)itemId giftId:(NSString *)giftId seq:(int)seq targetNum:(int)targetNum { + [Api wishGiftAddItem:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] createWishGiftItemSuccess]; + } showLoading:YES] roomUid:roomUid giftId:giftId itemId:itemId seq:[NSString stringWithFormat:@"%d", seq] targetNum:[NSString stringWithFormat:@"%d", targetNum]]; +} +///删除心愿礼物 +- (void)deleteWishGiftItem:(NSString *)roomUid itemId:(NSString *)itemId { + [Api wishGiftDeleteItem:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] deleteWishGiftItemSuccess]; + } showLoading:YES] roomUid:roomUid itemId:itemId]; +} +///房间许愿礼物列表 +- (void)wishGiftList:(NSString *)roomUid { + [Api wishGiftList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [WishGiftInfoModel modelsWithArray:data.data]; + [[self getView] getWishGiftListSuccess:array]; + }] roomUid:roomUid]; +} +///助理用户列表 +- (void)wishGiftAssistUserList:(NSString *)roomUid { + [Api wishGiftAssistUserList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [WishGiftUserModel modelsWithArray:data.data]; + [[self getView] getWishGiftAssistUserListSuccess:array]; + }] roomUid:roomUid]; +} +/// 心愿礼物配置表 +- (void)wishGiftConfigList:(NSString *)roomUid level:(NSString *)level { + [Api wishGiftCondfigList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [WishGiftInfoModel modelsWithArray:data.data]; + [[self getView] wishGiftConfigListSucces:array level:level]; + }] roomUid:roomUid level:level]; +} +///获取房间历史列表 +- (void)wishGiftHistroyList:(NSString *)roomUid { + [Api wishGiftHistoryList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [WishGiftHistoryModel modelsWithArray:data.data]; + [[self getView] wishGiftHistroyListSuccess:array]; + } showLoading:YES] roomUid:roomUid]; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/Presenter/YUMIDesirePresentExternalizer.h b/YuMi/Modules/YMRoom/View/WishGift/Presenter/YUMIDesirePresentExternalizer.h deleted file mode 100644 index d5e0124d..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/Presenter/YUMIDesirePresentExternalizer.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// WishGiftPresenter.h -// YUMI -// -// Created by YUMI on 2022/10/18. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIDesirePresentExternalizer : BaseMvpExternalizer - -- (void)accelertowardseSequencirePresent:(NSString *)roomUid; - -- (void)produceSequencirePresentProvision:(NSString *)roomUid itemId:(NSString *)itemId giftId:(NSString *)giftId seq:(int)seq targetNum:(int)targetNum; -- (void)representtowardsionSequencirePresentProvision:(NSString *)roomUid itemId:(NSString *)itemId; -- (void)desirePresentSttowardsement:(NSString *)roomUid; -- (void)desirePresentAssistConsumerSttowardsement:(NSString *)roomUid; -- (void)desirePresentDispositionSttowardsement:(NSString *)roomUid level:(NSString *)level ; -- (void)desirePresentHistroySttowardsement:(NSString *)roomUid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/Presenter/YUMIDesirePresentExternalizer.m b/YuMi/Modules/YMRoom/View/WishGift/Presenter/YUMIDesirePresentExternalizer.m deleted file mode 100644 index 20e0ff2a..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/Presenter/YUMIDesirePresentExternalizer.m +++ /dev/null @@ -1,58 +0,0 @@ -// -// WishGiftPresenter.m -// YUMI -// -// Created by YUMI on 2022/10/18. -// - -#import "YUMIDesirePresentExternalizer.h" -#import "Api+WishGift.h" -#import "FBCDesirePresentCeremony.h" -#import "DesirePresentAbstractMatrix.h" -#import "DesireExternalizeConsumerMatrix.h" -#import "DesirePresentHistoryMatrix.h" - -@implementation YUMIDesirePresentExternalizer - -- (void)accelertowardseSequencirePresent:(NSString *)roomUid { - [Api desirePresentAccelertowardse:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] accelertowardseSequencirePresentAccomplishment]; - } EvidenceChambering:YES] roomUid:roomUid]; -} - -- (void)produceSequencirePresentProvision:(NSString *)roomUid itemId:(NSString *)itemId giftId:(NSString *)giftId seq:(int)seq targetNum:(int)targetNum { - [Api desirePresentAccelertowardseProvision:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] produceSequencirePresentProvisionAccomplishment]; - } EvidenceChambering:YES] roomUid:roomUid giftId:giftId itemId:itemId seq:[NSString stringWithFormat:@"%d", seq] targetNum:[NSString stringWithFormat:@"%d", targetNum]]; -} -- (void)representtowardsionSequencirePresentProvision:(NSString *)roomUid itemId:(NSString *)itemId { - [Api desirePresentRepresenttowardsionProvision:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] representtowardsionSequencirePresentProvisionAccomplishment]; - } EvidenceChambering:YES] roomUid:roomUid itemId:itemId]; -} -- (void)desirePresentSttowardsement:(NSString *)roomUid { - [Api desirePresentSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [DesirePresentAbstractMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireSequencirePresentSttowardsementAccomplishment:array]; - }] roomUid:roomUid]; -} -- (void)desirePresentAssistConsumerSttowardsement:(NSString *)roomUid { - [Api desirePresentAssistConsumerSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [DesireExternalizeConsumerMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] acquireSequencirePresentAssistConsumerSttowardsementAccomplishment:array]; - }] roomUid:roomUid]; -} -- (void)desirePresentDispositionSttowardsement:(NSString *)roomUid level:(NSString *)level { - [Api desirePresentCondfigSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [DesirePresentAbstractMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] desirePresentDispositionSttowardsementSucces:array level:level]; - }] roomUid:roomUid level:level]; -} -- (void)desirePresentHistroySttowardsement:(NSString *)roomUid { - [Api desirePresentHerstorySttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [DesirePresentHistoryMatrix mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] desirePresentHistroySttowardsementAccomplishment:array]; - } EvidenceChambering:YES] roomUid:roomUid]; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/Protocol/FBCDesirePresentCeremony.h b/YuMi/Modules/YMRoom/View/WishGift/Protocol/FBCDesirePresentCeremony.h deleted file mode 100644 index c141e831..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/Protocol/FBCDesirePresentCeremony.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// YMWishGiftProtocol.h -// YUMI -// -// Created by YUMI on 2022/10/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCDesirePresentCeremony -@optional -- (void)accelertowardseSequencirePresentAccomplishment; - -- (void)produceSequencirePresentProvisionAccomplishment; - -- (void)representtowardsionSequencirePresentProvisionAccomplishment; -- (void)acquireSequencirePresentSttowardsementAccomplishment:(NSArray *)list; - -- (void)acquireSequencirePresentAssistConsumerSttowardsementAccomplishment:(NSArray *)list; - -- (void)desirePresentDispositionSttowardsementSucces:(NSArray *)list level:(NSString *)level; - -- (void)desirePresentHistroySttowardsementAccomplishment:(NSArray *)list; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/Protocol/XPWishGiftProtocol.h b/YuMi/Modules/YMRoom/View/WishGift/Protocol/XPWishGiftProtocol.h new file mode 100644 index 00000000..1bdaa3d5 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/Protocol/XPWishGiftProtocol.h @@ -0,0 +1,35 @@ +// +// YMWishGiftProtocol.h +// YUMI +// +// Created by YUMI on 2022/10/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPWishGiftProtocol +@optional +///添加礼物心愿成功 +- (void)addWishGiftSuccess; + +///创建心愿单成功 +- (void)createWishGiftItemSuccess; + +///删除心愿单成功 +- (void)deleteWishGiftItemSuccess; +///获取心愿礼物列表 +- (void)getWishGiftListSuccess:(NSArray *)list; + +///助理用户列表 +- (void)getWishGiftAssistUserListSuccess:(NSArray *)list; + +///礼物配置列表 +- (void)wishGiftConfigListSucces:(NSArray *)list level:(NSString *)level; + +///历史心愿成功 +- (void)wishGiftHistroyListSuccess:(NSArray *)list; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/Cell/XPWishGiftEmptyTableViewCell.h b/YuMi/Modules/YMRoom/View/WishGift/View/Cell/XPWishGiftEmptyTableViewCell.h new file mode 100644 index 00000000..476cdd93 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/View/Cell/XPWishGiftEmptyTableViewCell.h @@ -0,0 +1,16 @@ +// +// YMWishGiftEmptyTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/10/19. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPWishGiftEmptyTableViewCell : UITableViewCell + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/Cell/XPWishGiftEmptyTableViewCell.m b/YuMi/Modules/YMRoom/View/WishGift/View/Cell/XPWishGiftEmptyTableViewCell.m new file mode 100644 index 00000000..03aadc00 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/View/Cell/XPWishGiftEmptyTableViewCell.m @@ -0,0 +1,73 @@ +// +// YMWishGiftEmptyTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/10/19. +// + +#import "XPWishGiftEmptyTableViewCell.h" + +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImageConstant.h" + +@interface XPWishGiftEmptyTableViewCell () +@property (nonatomic,strong) UIImageView *emptyImageView; +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPWishGiftEmptyTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.emptyImageView]; + [self.contentView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.emptyImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.contentView).offset(150); + make.centerX.mas_equalTo(self.contentView); + make.size.mas_equalTo(CGSizeMake(200, 200)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.emptyImageView.mas_bottom).offset(20); + make.left.right.mas_equalTo(self.contentView); + }]; +} +#pragma mark - Getters And Setters +- (UIImageView *)emptyImageView { + if (!_emptyImageView) { + _emptyImageView = [[UIImageView alloc] init]; + _emptyImageView.userInteractionEnabled = YES; + _emptyImageView.image = [UIImageConstant defalutEmptyPlaceholder]; + _emptyImageView.layer.masksToBounds = YES; + _emptyImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _emptyImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPWishGiftEmptyTableViewCell0"); + _titleLabel.font = [UIFont systemFontOfSize:16]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _titleLabel; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/Cell/XPWishGiftHistoryTableViewCell.h b/YuMi/Modules/YMRoom/View/WishGift/View/Cell/XPWishGiftHistoryTableViewCell.h new file mode 100644 index 00000000..08a4ff6d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/View/Cell/XPWishGiftHistoryTableViewCell.h @@ -0,0 +1,20 @@ +// +// YMWishGiftHistoryTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/10/19. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class WishGiftInfoModel; +@interface XPWishGiftHistoryTableViewCell : UITableViewCell +///是不是第一个 +@property (nonatomic,assign) BOOL isTop; +///是不是底部 +@property (nonatomic,assign) BOOL isBottom; +@property (nonatomic,strong) WishGiftInfoModel *giftInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/Cell/XPWishGiftHistoryTableViewCell.m b/YuMi/Modules/YMRoom/View/WishGift/View/Cell/XPWishGiftHistoryTableViewCell.m new file mode 100644 index 00000000..84a5cbaf --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/View/Cell/XPWishGiftHistoryTableViewCell.m @@ -0,0 +1,173 @@ +// +// YMWishGiftHistoryTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/10/19. +// + +#import "XPWishGiftHistoryTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "NetImageView.h" +#import "WishGiftInfoModel.h" +#import "UIView+Corner.h" +#import "YUMIMacroUitls.h" + +@interface XPWishGiftHistoryTableViewCell () +///容器 +@property (nonatomic,strong) UIView *backView; +///等级 +@property (nonatomic,strong) UILabel *levleLabel; +///礼物图片 +@property (nonatomic,strong) NetImageView *giftImageView; +///礼物名称 +@property (nonatomic,strong) UILabel *giftLabel; +///目标 +@property (nonatomic,strong) UILabel *targetNumLabel; +///分割下 +@property (nonatomic,strong) UIView *lineView; + +@end +@implementation XPWishGiftHistoryTableViewCell + + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.selectionStyle = UITableViewCellSelectionStyleNone; + self.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.backView]; + + [self.backView addSubview:self.levleLabel]; + [self.backView addSubview:self.giftImageView]; + [self.backView addSubview:self.giftLabel]; + [self.backView addSubview:self.targetNumLabel]; + [self.backView addSubview:self.lineView]; +} + +- (void)initSubViewConstraints { + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.equalTo(self.contentView).inset(15); + make.top.bottom.mas_equalTo(self.contentView); + }]; + + [self.levleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.backView); + make.left.mas_equalTo(self.backView).offset(15); + }]; + + [self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(24, 24)); + make.centerY.mas_equalTo(self.backView); + make.left.mas_equalTo(self.levleLabel.mas_right).offset(20); + }]; + + [self.giftLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.backView); + make.left.mas_equalTo(self.giftImageView.mas_right).offset(8); + make.right.lessThanOrEqualTo(self.targetNumLabel.mas_left).offset(-5); + }]; + + [self.targetNumLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.backView); + make.right.mas_equalTo(self.backView).offset(-15); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backView).inset(13); + make.bottom.mas_equalTo(self.backView); + make.height.mas_equalTo(1); + }]; + +} +#pragma mark - Getters And Setters +- (void)setIsTop:(BOOL)isTop { + _isTop = isTop; + if(_isTop) { + [self.backView setCornerWithLeftTopCorner:8 rightTopCorner:8 bottomLeftCorner:0 bottomRightCorner:0 size:(CGSizeMake(KScreenWidth - 30, 44))]; + } +} + +- (void)setIsBottom:(BOOL)isBottom { + _isBottom = isBottom; + if (_isBottom) { + [self.backView setCornerWithLeftTopCorner:0 rightTopCorner:0 bottomLeftCorner:8 bottomRightCorner:8 size:(CGSizeMake(KScreenWidth - 30, 44))]; + } +} + +- (void)setGiftInfo:(WishGiftInfoModel *)giftInfo { + _giftInfo = giftInfo; + if (_giftInfo) { + self.levleLabel.text = [NSString stringWithFormat:@"%ld", _giftInfo.row]; + self.giftImageView.imageUrl = _giftInfo.giftUrl; + self.giftLabel.text = _giftInfo.giftName; + self.targetNumLabel.text = [NSString stringWithFormat:@"%ld/%ld", _giftInfo.actualNum, _giftInfo.targetNum]; + } +} + +- (UIView *)backView { + if (!_backView) { + _backView = [[UIView alloc] init]; + _backView.backgroundColor = [UIColor whiteColor]; + } + return _backView; +} + +- (UILabel *)levleLabel { + if (!_levleLabel) { + _levleLabel = [[UILabel alloc] init]; + _levleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; + _levleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _levleLabel; +} + +- (NetImageView *)giftImageView { + if (!_giftImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _giftImageView = [[NetImageView alloc] initWithConfig:config]; + _giftImageView.layer.masksToBounds = YES; + _giftImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _giftImageView; +} + +- (UILabel *)giftLabel { + if (!_giftLabel) { + _giftLabel = [[UILabel alloc] init]; + _giftLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; + _giftLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _giftLabel; +} + +- (UILabel *)targetNumLabel { + if (!_targetNumLabel) { + _targetNumLabel = [[UILabel alloc] init]; + _targetNumLabel.font = [UIFont systemFontOfSize:14]; + _targetNumLabel.textColor = [DJDKMIMOMColor textThirdColor]; + } + return _targetNumLabel; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _lineView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/Cell/XPWishGiftTableViewCell.h b/YuMi/Modules/YMRoom/View/WishGift/View/Cell/XPWishGiftTableViewCell.h new file mode 100644 index 00000000..75a51203 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/View/Cell/XPWishGiftTableViewCell.h @@ -0,0 +1,30 @@ +// +// YMWishGiftTableViewCell.h +// YUMI +// +// Created by YUMI on 2022/10/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPWishGiftTableViewCell, WishGiftInfoModel; +@protocol XPWishGiftTableViewCellDelegate + +///更新礼物信息 +- (void)xPWishGiftTableViewCell:(XPWishGiftTableViewCell *)view didUpdateWishGift:(WishGiftInfoModel *)info; + +///删除礼物信息 +- (void)xPWishGiftTableViewCell:(XPWishGiftTableViewCell *)view didClearWishGift:(WishGiftInfoModel *)info; + +@end + +@interface XPWishGiftTableViewCell : UITableViewCell +///代理 +@property (nonatomic,weak) id delegate; +@property (nonatomic,strong) WishGiftInfoModel *giftInfo; +///是否隐藏编辑 +@property (nonatomic,assign) BOOL isHiddenEdit; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/Cell/XPWishGiftTableViewCell.m b/YuMi/Modules/YMRoom/View/WishGift/View/Cell/XPWishGiftTableViewCell.m new file mode 100644 index 00000000..113db0ac --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/View/Cell/XPWishGiftTableViewCell.m @@ -0,0 +1,235 @@ +// +// YMWishGiftTableViewCell.m +// YUMI +// +// Created by YUMI on 2022/10/18. +// + +#import "XPWishGiftTableViewCell.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "NetImageView.h" +#import "WishGiftInfoModel.h" + +@interface XPWishGiftTableViewCell () + +///等级 +@property (nonatomic,strong) UILabel *levleLabel; +///礼物图片 +@property (nonatomic,strong) NetImageView *giftImageView; +///礼物名称 +@property (nonatomic,strong) UILabel *giftLabel; +///目标和编辑删除的容器 +@property (nonatomic,strong) UIStackView *stackView; +///目标 +@property (nonatomic,strong) UILabel *targetNumLabel; +///编辑 删除 +@property (nonatomic,strong) UIStackView *editStackView; +///编辑 +@property (nonatomic,strong) UIButton *updateButton; +///删除 +@property (nonatomic,strong) UIButton *clearButton; +///分割下 +@property (nonatomic,strong) UIView *lineView; + +@end +@implementation XPWishGiftTableViewCell + + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.selectionStyle = UITableViewCellSelectionStyleNone; + self.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.levleLabel]; + [self.contentView addSubview:self.giftImageView]; + [self.contentView addSubview:self.giftLabel]; + [self.contentView addSubview:self.stackView]; + [self.contentView addSubview:self.lineView]; + + [self.stackView addArrangedSubview:self.targetNumLabel]; + [self.stackView addArrangedSubview:self.editStackView]; + + [self.editStackView addArrangedSubview:self.updateButton]; + [self.editStackView addArrangedSubview:self.clearButton]; +} + +- (void)initSubViewConstraints { + [self.levleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.contentView); + make.left.mas_equalTo(self.contentView).offset(15); + }]; + + [self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(24, 24)); + make.centerY.mas_equalTo(self.contentView); + make.left.mas_equalTo(self.levleLabel.mas_right).offset(20); + }]; + + [self.giftLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.contentView); + make.left.mas_equalTo(self.giftImageView.mas_right).offset(8); + make.right.lessThanOrEqualTo(self.targetNumLabel.mas_left).offset(-5); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(18); + make.right.mas_equalTo(self.contentView).offset(-15); + make.centerY.mas_equalTo(self.contentView); + }]; + + [self.updateButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(44); + }]; + + [self.clearButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(44); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(13); + make.bottom.mas_equalTo(self.contentView); + make.height.mas_equalTo(1); + }]; + +} + +#pragma mark - Event Response +- (void)updateButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPWishGiftTableViewCell:didUpdateWishGift:)]) { + [self.delegate xPWishGiftTableViewCell:self didUpdateWishGift:self.giftInfo]; + } +} + + +- (void)clearButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPWishGiftTableViewCell:didClearWishGift:)]) { + [self.delegate xPWishGiftTableViewCell:self didClearWishGift:self.giftInfo]; + } +} + +#pragma mark - Getters And Setters +- (void)setIsHiddenEdit:(BOOL)isHiddenEdit { + _isHiddenEdit = isHiddenEdit; + self.editStackView.hidden = _isHiddenEdit; +} + +- (void)setGiftInfo:(WishGiftInfoModel *)giftInfo { + _giftInfo = giftInfo; + if (_giftInfo) { + self.levleLabel.text = [NSString stringWithFormat:@"%ld", _giftInfo.row]; + self.giftImageView.imageUrl = _giftInfo.giftUrl; + self.giftLabel.text = _giftInfo.giftName; + self.targetNumLabel.text = [NSString stringWithFormat:@"%ld/%ld", _giftInfo.actualNum, _giftInfo.targetNum]; + } +} + +- (UILabel *)levleLabel { + if (!_levleLabel) { + _levleLabel = [[UILabel alloc] init]; + _levleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; + _levleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _levleLabel; +} + +- (NetImageView *)giftImageView { + if (!_giftImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _giftImageView = [[NetImageView alloc] initWithConfig:config]; + _giftImageView.layer.masksToBounds = YES; + _giftImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _giftImageView; +} + +- (UILabel *)giftLabel { + if (!_giftLabel) { + _giftLabel = [[UILabel alloc] init]; + _giftLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; + _giftLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _giftLabel; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 26; + } + return _stackView; +} + +- (UILabel *)targetNumLabel { + if (!_targetNumLabel) { + _targetNumLabel = [[UILabel alloc] init]; + _targetNumLabel.font = [UIFont systemFontOfSize:14]; + _targetNumLabel.textColor = [DJDKMIMOMColor textThirdColor]; + } + return _targetNumLabel; +} + +- (UIStackView *)editStackView { + if (!_editStackView) { + _editStackView = [[UIStackView alloc] init]; + _editStackView.axis = UILayoutConstraintAxisHorizontal; + _editStackView.distribution = UIStackViewDistributionFill; + _editStackView.alignment = UIStackViewAlignmentFill; + _editStackView.spacing = 5; + } + return _editStackView; +} + +- (UIButton *)updateButton { + if (!_updateButton) { + _updateButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_updateButton setTitle:YMLocalizedString(@"XPWishGiftTableViewCell0") forState:UIControlStateNormal]; + [_updateButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + _updateButton.titleLabel.font = [UIFont systemFontOfSize:10]; + [_updateButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor cancelButtonGradientStartColor], [DJDKMIMOMColor cancelButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _updateButton.layer.masksToBounds = YES; + _updateButton.layer.cornerRadius = 9; + [_updateButton addTarget:self action:@selector(updateButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _updateButton; +} + +- (UIButton *)clearButton { + if (!_clearButton) { + _clearButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_clearButton setTitle:YMLocalizedString(@"XPWishGiftTableViewCell1") forState:UIControlStateNormal]; + [_clearButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + _clearButton.titleLabel.font = [UIFont systemFontOfSize:10]; + [_clearButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _clearButton.layer.masksToBounds = YES; + _clearButton.layer.cornerRadius = 9; + [_clearButton addTarget:self action:@selector(clearButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _clearButton; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [DJDKMIMOMColor dividerColor]; + } + return _lineView; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/Cell/YUMIDesirePresentDispossessTabulationRegardElement.h b/YuMi/Modules/YMRoom/View/WishGift/View/Cell/YUMIDesirePresentDispossessTabulationRegardElement.h deleted file mode 100644 index 9d490078..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/View/Cell/YUMIDesirePresentDispossessTabulationRegardElement.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMWishGiftEmptyTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/10/19. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIDesirePresentDispossessTabulationRegardElement : UITableViewCell - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/Cell/YUMIDesirePresentDispossessTabulationRegardElement.m b/YuMi/Modules/YMRoom/View/WishGift/View/Cell/YUMIDesirePresentDispossessTabulationRegardElement.m deleted file mode 100644 index 61b0f1c4..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/View/Cell/YUMIDesirePresentDispossessTabulationRegardElement.m +++ /dev/null @@ -1,71 +0,0 @@ -// -// YMWishGiftEmptyTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/10/19. -// - -#import "YUMIDesirePresentDispossessTabulationRegardElement.h" - -#import -#import "DJDKMIMOMColor.h" -#import "UIIndicateConstant.h" - -@interface YUMIDesirePresentDispossessTabulationRegardElement () -@property (nonatomic,strong) UIImageView *dispossessIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@end - -@implementation YUMIDesirePresentDispossessTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.dispossessIndicateRegard]; - [self.contentView addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.dispossessIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.contentView).offset(150); - make.centerX.mas_equalTo(self.contentView); - make.size.mas_equalTo(CGSizeMake(200, 200)); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.dispossessIndicateRegard.mas_bottom).offset(20); - make.left.right.mas_equalTo(self.contentView); - }]; -} -#pragma mark - Getters And Setters -- (UIImageView *)dispossessIndicateRegard { - if (!_dispossessIndicateRegard) { - _dispossessIndicateRegard = [[UIImageView alloc] init]; - _dispossessIndicateRegard.userInteractionEnabled = YES; - _dispossessIndicateRegard.image = [UIIndicateConstant defalutDispossessDepapossessor]; - _dispossessIndicateRegard.layer.masksToBounds = YES; - _dispossessIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _dispossessIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"YUMI_Wish_Gift_Empty_Table_View_Cell_0"); - _titleLabel.font = [UIFont systemFontOfSize:16]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - _titleLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _titleLabel; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/Cell/YUMIDesirePresentHistoryTabulationRegardElement.h b/YuMi/Modules/YMRoom/View/WishGift/View/Cell/YUMIDesirePresentHistoryTabulationRegardElement.h deleted file mode 100644 index 08151a12..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/View/Cell/YUMIDesirePresentHistoryTabulationRegardElement.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YMWishGiftHistoryTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/10/19. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class DesirePresentAbstractMatrix; -@interface YUMIDesirePresentHistoryTabulationRegardElement : UITableViewCell -@property (nonatomic,assign) BOOL isApex; -@property (nonatomic,assign) BOOL isExtreme; -@property (nonatomic,strong) DesirePresentAbstractMatrix *giftInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/Cell/YUMIDesirePresentHistoryTabulationRegardElement.m b/YuMi/Modules/YMRoom/View/WishGift/View/Cell/YUMIDesirePresentHistoryTabulationRegardElement.m deleted file mode 100644 index a70abba0..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/View/Cell/YUMIDesirePresentHistoryTabulationRegardElement.m +++ /dev/null @@ -1,165 +0,0 @@ -// -// YMWishGiftHistoryTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/10/19. -// - -#import "YUMIDesirePresentHistoryTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "NetIndicateRegard.h" -#import "DesirePresentAbstractMatrix.h" -#import "UIView+Corner.h" -#import "YUMIMacroUitls.h" - -@interface YUMIDesirePresentHistoryTabulationRegardElement () -@property (nonatomic,strong) UIView *encourageRegard; -@property (nonatomic,strong) UILabel *prottypeSequencignation; -@property (nonatomic,strong) NetIndicateRegard *presentIndicateRegard; -@property (nonatomic,strong) UILabel *presentSequencignation; -@property (nonatomic,strong) UILabel *targetFigureSequencignation; -@property (nonatomic,strong) UIView *burlywoodRegard; - -@end -@implementation YUMIDesirePresentHistoryTabulationRegardElement - - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.selectionStyle = UITableViewCellSelectionStyleNone; - self.backgroundColor = [UIColor clearColor]; - [self.contentView addSubview:self.encourageRegard]; - - [self.encourageRegard addSubview:self.prottypeSequencignation]; - [self.encourageRegard addSubview:self.presentIndicateRegard]; - [self.encourageRegard addSubview:self.presentSequencignation]; - [self.encourageRegard addSubview:self.targetFigureSequencignation]; - [self.encourageRegard addSubview:self.burlywoodRegard]; -} - -- (void)initChildLyRestrictions { - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.equalTo(self.contentView).inset(15); - make.top.bottom.mas_equalTo(self.contentView); - }]; - - [self.prottypeSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.encourageRegard); - make.left.mas_equalTo(self.encourageRegard).offset(15); - }]; - - [self.presentIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(24, 24)); - make.centerY.mas_equalTo(self.encourageRegard); - make.left.mas_equalTo(self.prottypeSequencignation.mas_right).offset(20); - }]; - - [self.presentSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.encourageRegard); - make.left.mas_equalTo(self.presentIndicateRegard.mas_right).offset(8); - make.right.lessThanOrEqualTo(self.targetFigureSequencignation.mas_left).offset(-5); - }]; - - [self.targetFigureSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.encourageRegard); - make.right.mas_equalTo(self.encourageRegard).offset(-15); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageRegard).inset(13); - make.bottom.mas_equalTo(self.encourageRegard); - make.height.mas_equalTo(1); - }]; - -} -#pragma mark - Getters And Setters -- (void)setIsApex:(BOOL)isApex { - _isApex = isApex; - if(_isApex) { - [self.encourageRegard setMonopolizeAboutContraryApexMonopolize:8 rightTopCorner:8 bottomLeftCorner:0 bottomRightCorner:0 size:(CGSizeMake(KScreenWidth - 30, 44))]; - } -} - -- (void)setIsExtreme:(BOOL)isExtreme { - _isExtreme = isExtreme; - if (_isExtreme) { - [self.encourageRegard setMonopolizeAboutContraryApexMonopolize:0 rightTopCorner:0 bottomLeftCorner:8 bottomRightCorner:8 size:(CGSizeMake(KScreenWidth - 30, 44))]; - } -} - -- (void)setGiftInfo:(DesirePresentAbstractMatrix *)giftInfo { - _giftInfo = giftInfo; - if (_giftInfo) { - self.prottypeSequencignation.text = [NSString stringWithFormat:@"%ld", _giftInfo.row]; - self.presentIndicateRegard.imageUrl = _giftInfo.giftUrl; - self.presentSequencignation.text = _giftInfo.giftName; - self.targetFigureSequencignation.text = [NSString stringWithFormat:@"%ld/%ld", _giftInfo.actualNum, _giftInfo.targetNum]; - } -} - -- (UIView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIView alloc] init]; - _encourageRegard.backgroundColor = [UIColor whiteColor]; - } - return _encourageRegard; -} - -- (UILabel *)prottypeSequencignation { - if (!_prottypeSequencignation) { - _prottypeSequencignation = [[UILabel alloc] init]; - _prottypeSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; - _prottypeSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _prottypeSequencignation; -} - -- (NetIndicateRegard *)presentIndicateRegard { - if (!_presentIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _presentIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _presentIndicateRegard.layer.masksToBounds = YES; - _presentIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _presentIndicateRegard; -} - -- (UILabel *)presentSequencignation { - if (!_presentSequencignation) { - _presentSequencignation = [[UILabel alloc] init]; - _presentSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; - _presentSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _presentSequencignation; -} - -- (UILabel *)targetFigureSequencignation { - if (!_targetFigureSequencignation) { - _targetFigureSequencignation = [[UILabel alloc] init]; - _targetFigureSequencignation.font = [UIFont systemFontOfSize:14]; - _targetFigureSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - } - return _targetFigureSequencignation; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _burlywoodRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/Cell/YUMIDesirePresentTabulationRegardElement.h b/YuMi/Modules/YMRoom/View/WishGift/View/Cell/YUMIDesirePresentTabulationRegardElement.h deleted file mode 100644 index 07ed841f..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/View/Cell/YUMIDesirePresentTabulationRegardElement.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// YMWishGiftTableViewCell.h -// YUMI -// -// Created by YUMI on 2022/10/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class YUMIDesirePresentTabulationRegardElement, DesirePresentAbstractMatrix; -@protocol FBCDesirePresentTabulationViweElementRepresendtation - -- (void)fBCHopePresentTarbsultowardsionViweElement:(YUMIDesirePresentTabulationRegardElement *)view didUpdateWishGift:(DesirePresentAbstractMatrix *)info; - -- (void)fBCHopePresentTarbsultowardsionViweElement:(YUMIDesirePresentTabulationRegardElement *)view didClearWishGift:(DesirePresentAbstractMatrix *)info; - -@end - -@interface YUMIDesirePresentTabulationRegardElement : UITableViewCell -@property (nonatomic,weak) id delegate; -@property (nonatomic,strong) DesirePresentAbstractMatrix *giftInfo; -@property (nonatomic,assign) BOOL isVeiledCompile; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/Cell/YUMIDesirePresentTabulationRegardElement.m b/YuMi/Modules/YMRoom/View/WishGift/View/Cell/YUMIDesirePresentTabulationRegardElement.m deleted file mode 100644 index 699e21a0..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/View/Cell/YUMIDesirePresentTabulationRegardElement.m +++ /dev/null @@ -1,224 +0,0 @@ -// -// YMWishGiftTableViewCell.m -// YUMI -// -// Created by YUMI on 2022/10/18. -// - -#import "YUMIDesirePresentTabulationRegardElement.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "NetIndicateRegard.h" -#import "DesirePresentAbstractMatrix.h" - -@interface YUMIDesirePresentTabulationRegardElement () - -@property (nonatomic,strong) UILabel *prottypeSequencignation; -@property (nonatomic,strong) NetIndicateRegard *presentIndicateRegard; -@property (nonatomic,strong) UILabel *presentSequencignation; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UILabel *targetFigureSequencignation; -@property (nonatomic,strong) UIStackView *compileHierarchyRegard; -@property (nonatomic,strong) UIButton *refurbishBtuton; -@property (nonatomic,strong) UIButton *distinctBtuton; -@property (nonatomic,strong) UIView *burlywoodRegard; - -@end -@implementation YUMIDesirePresentTabulationRegardElement - - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.selectionStyle = UITableViewCellSelectionStyleNone; - self.backgroundColor = [UIColor clearColor]; - [self.contentView addSubview:self.prottypeSequencignation]; - [self.contentView addSubview:self.presentIndicateRegard]; - [self.contentView addSubview:self.presentSequencignation]; - [self.contentView addSubview:self.stackView]; - [self.contentView addSubview:self.burlywoodRegard]; - - [self.stackView addArrangedSubview:self.targetFigureSequencignation]; - [self.stackView addArrangedSubview:self.compileHierarchyRegard]; - - [self.compileHierarchyRegard addArrangedSubview:self.refurbishBtuton]; - [self.compileHierarchyRegard addArrangedSubview:self.distinctBtuton]; -} - -- (void)initChildLyRestrictions { - [self.prottypeSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.contentView); - make.left.mas_equalTo(self.contentView).offset(15); - }]; - - [self.presentIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(24, 24)); - make.centerY.mas_equalTo(self.contentView); - make.left.mas_equalTo(self.prottypeSequencignation.mas_right).offset(20); - }]; - - [self.presentSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.contentView); - make.left.mas_equalTo(self.presentIndicateRegard.mas_right).offset(8); - make.right.lessThanOrEqualTo(self.targetFigureSequencignation.mas_left).offset(-5); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(18); - make.right.mas_equalTo(self.contentView).offset(-15); - make.centerY.mas_equalTo(self.contentView); - }]; - - [self.refurbishBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(44); - }]; - - [self.distinctBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(44); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(13); - make.bottom.mas_equalTo(self.contentView); - make.height.mas_equalTo(1); - }]; - -} - -#pragma mark - Event Response -- (void)refurbishBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCHopePresentTarbsultowardsionViweElement:didUpdateWishGift:)]) { - [self.delegate fBCHopePresentTarbsultowardsionViweElement:self didUpdateWishGift:self.giftInfo]; - } -} - - -- (void)prohibititinctBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCHopePresentTarbsultowardsionViweElement:didClearWishGift:)]) { - [self.delegate fBCHopePresentTarbsultowardsionViweElement:self didClearWishGift:self.giftInfo]; - } -} - -#pragma mark - Getters And Setters -- (void)setIsVeiledCompile:(BOOL)isVeiledCompile { - _isVeiledCompile = isVeiledCompile; - self.compileHierarchyRegard.hidden = _isVeiledCompile; -} - -- (void)setGiftInfo:(DesirePresentAbstractMatrix *)giftInfo { - _giftInfo = giftInfo; - if (_giftInfo) { - self.prottypeSequencignation.text = [NSString stringWithFormat:@"%ld", _giftInfo.row]; - self.presentIndicateRegard.imageUrl = _giftInfo.giftUrl; - self.presentSequencignation.text = _giftInfo.giftName; - self.targetFigureSequencignation.text = [NSString stringWithFormat:@"%ld/%ld", _giftInfo.actualNum, _giftInfo.targetNum]; - } -} - -- (UILabel *)prottypeSequencignation { - if (!_prottypeSequencignation) { - _prottypeSequencignation = [[UILabel alloc] init]; - _prottypeSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; - _prottypeSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _prottypeSequencignation; -} - -- (NetIndicateRegard *)presentIndicateRegard { - if (!_presentIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _presentIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _presentIndicateRegard.layer.masksToBounds = YES; - _presentIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _presentIndicateRegard; -} - -- (UILabel *)presentSequencignation { - if (!_presentSequencignation) { - _presentSequencignation = [[UILabel alloc] init]; - _presentSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; - _presentSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _presentSequencignation; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 26; - } - return _stackView; -} - -- (UILabel *)targetFigureSequencignation { - if (!_targetFigureSequencignation) { - _targetFigureSequencignation = [[UILabel alloc] init]; - _targetFigureSequencignation.font = [UIFont systemFontOfSize:14]; - _targetFigureSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - } - return _targetFigureSequencignation; -} - -- (UIStackView *)compileHierarchyRegard { - if (!_compileHierarchyRegard) { - _compileHierarchyRegard = [[UIStackView alloc] init]; - _compileHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _compileHierarchyRegard.distribution = UIStackViewDistributionFill; - _compileHierarchyRegard.alignment = UIStackViewAlignmentFill; - _compileHierarchyRegard.spacing = 5; - } - return _compileHierarchyRegard; -} - -- (UIButton *)refurbishBtuton { - if (!_refurbishBtuton) { - _refurbishBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_refurbishBtuton setTitle:YMLocalizedString(@"YUMI_Wish_Gift_Table_View_Cell_0") forState:UIControlStateNormal]; - [_refurbishBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - _refurbishBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - [_refurbishBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor revoctowardsionBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor revoctowardsionBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _refurbishBtuton.layer.masksToBounds = YES; - _refurbishBtuton.layer.cornerRadius = 9; - [_refurbishBtuton addTarget:self action:@selector(refurbishBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _refurbishBtuton; -} - -- (UIButton *)distinctBtuton { - if (!_distinctBtuton) { - _distinctBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_distinctBtuton setTitle:YMLocalizedString(@"YUMI_Wish_Gift_Table_View_Cell_1") forState:UIControlStateNormal]; - [_distinctBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - _distinctBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - [_distinctBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _distinctBtuton.layer.masksToBounds = YES; - _distinctBtuton.layer.cornerRadius = 9; - [_distinctBtuton addTarget:self action:@selector(prohibititinctBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _distinctBtuton; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [DJDKMIMOMColor dividerPrettify]; - } - return _burlywoodRegard; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/View/XPWishGiftEnterView.h b/YuMi/Modules/YMRoom/View/WishGift/View/View/XPWishGiftEnterView.h new file mode 100644 index 00000000..54573af1 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/View/View/XPWishGiftEnterView.h @@ -0,0 +1,17 @@ +// +// YMWishGiftEnterView.h +// YUMI +// +// Created by YUMI on 2022/10/20. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@interface XPWishGiftEnterView : UIView +@property (nonatomic,strong) NSArray * giftList; +///是否在左边 +@property (nonatomic,assign) BOOL isLeft; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/View/XPWishGiftEnterView.m b/YuMi/Modules/YMRoom/View/WishGift/View/View/XPWishGiftEnterView.m new file mode 100644 index 00000000..d5dd1ae5 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/View/View/XPWishGiftEnterView.m @@ -0,0 +1,240 @@ +// +// YMWishGiftEnterView.m +// YUMI +// +// Created by YUMI on 2022/10/20. +// + +#import "XPWishGiftEnterView.h" +///Third +#import +#import +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "UIImage+Utils.h" +#import "UIView+Corner.h" +#import "NSArray+Safe.h" +///Model +#import "WishGiftInfoModel.h" + +@interface XPWishGiftEnterCell : UICollectionViewCell +///礼物 +@property (nonatomic,strong) NetImageView *giftImageView; +///礼物名称 +@property (nonatomic,strong) UILabel *giftLabel; +///进度 +@property (nonatomic,strong) UILabel *progressLabel; +///进度 +@property (nonatomic,strong) UIProgressView *progressView; +@property (nonatomic,strong) WishGiftInfoModel *giftInfo; +@end + +@implementation XPWishGiftEnterCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.contentView.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.giftImageView]; + [self.contentView addSubview:self.giftLabel]; + [self.contentView addSubview:self.progressLabel]; + [self.contentView addSubview:self.progressView]; +} + +- (void)initSubViewConstraints { + + [self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.bottom.mas_equalTo(self.contentView); + make.width.mas_equalTo(self.giftImageView.mas_height); + }]; + + [self.giftLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.giftImageView.mas_right).offset(6); + make.top.mas_equalTo(self.contentView).offset(0); + make.right.mas_equalTo(self.contentView).offset(-2); + }]; + + [self.progressLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.giftLabel); + make.right.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.giftLabel.mas_bottom).offset(1); + }]; + + [self.progressView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(3); + make.bottom.mas_equalTo(self.contentView.mas_bottom).offset(-2); + make.left.mas_equalTo(self.giftImageView.mas_right).offset(2); + make.right.mas_equalTo(self.contentView).offset(-5); + }]; +} + +- (NSAttributedString *)createProgressAttribute { + NSString * targetNum = [NSString stringWithFormat:@"/%ld", self.giftInfo.targetNum]; + NSString * actualNum = (self.giftInfo.actualNum > self.giftInfo.targetNum) ? [NSString stringWithFormat:@"%ld+", self.giftInfo.targetNum] : [NSString stringWithFormat:@"%ld", self.giftInfo.actualNum]; + NSString * title = [NSString stringWithFormat:@"%@%@", actualNum, targetNum]; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:10], NSForegroundColorAttributeName:[DJDKMIMOMColor colorWithHexString:@"#FFC300"]}]; + if (self.giftInfo.targetNum <= self.giftInfo.actualNum) { + [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor colorWithHexString:@"#FFC300"] range:[title rangeOfString:targetNum]]; + } else { + [attribute addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithWhite:1 alpha:1] range:[title rangeOfString:targetNum]]; + } + return attribute; +} + +#pragma mark - Getters And Setters +- (void)setGiftInfo:(WishGiftInfoModel *)giftInfo { + _giftInfo = giftInfo; + if (_giftInfo) { + self.giftImageView.imageUrl = _giftInfo.giftUrl; + self.giftLabel.text = _giftInfo.giftName; + CGFloat value = (CGFloat)giftInfo.actualNum / (CGFloat)giftInfo.targetNum; + if (value > 1){ + value = 1; + } + [self.progressView setProgress:value animated:NO]; + self.progressLabel.attributedText = [self createProgressAttribute]; + self.progressLabel.textAlignment = NSTextAlignmentCenter; + } +} + +- (UIProgressView *)progressView { + if(!_progressView) { + _progressView = [[UIProgressView alloc] init]; + _progressView.layer.masksToBounds = YES; + _progressView.layer.cornerRadius = 1.5; + _progressView.trackImage = [UIImage imageWithColor:[DJDKMIMOMColor colorWithHexString:@"#17093E"]]; + _progressView.progressImage = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor colorWithHexString:@"#FFA0C3"], [DJDKMIMOMColor colorWithHexString:@"#C176FF"]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(1, 1)]; + } + return _progressView; +} + +- (NetImageView *)giftImageView { + if (!_giftImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _giftImageView = [[NetImageView alloc] initWithConfig:config]; + _giftImageView.layer.masksToBounds = YES; + _giftImageView.layer.cornerRadius = 15; + _giftImageView.layer.borderWidth = 0.5; + _giftImageView.layer.borderColor = UIColorRGBAlpha(0xFFEEBE, 0.7).CGColor; + _giftImageView.contentMode = UIViewContentModeScaleAspectFill; + } + return _giftImageView; +} + +- (UILabel *)giftLabel { + if (!_giftLabel) { + _giftLabel = [[UILabel alloc] init]; + _giftLabel.font = [UIFont systemFontOfSize:10]; + _giftLabel.textAlignment = NSTextAlignmentCenter; + _giftLabel.textColor = [UIColor whiteColor]; + _giftLabel.textAlignment = NSTextAlignmentCenter; + } + return _giftLabel; +} + +- (UILabel *)progressLabel { + if (!_progressLabel) { + _progressLabel = [[UILabel alloc] init]; + } + return _progressLabel; +} + +@end + +@interface XPWishGiftEnterView() +///文字轮播 +@property (nonatomic, strong) SDCycleScrollView *cycleScrollView; + +@end + +@implementation XPWishGiftEnterView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + self.isLeft = NO; + } + return self; +} + + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor colorWithWhite:1 alpha:0.2]; + [self addSubview:self.cycleScrollView]; + self.layer.masksToBounds = YES; +} + +- (void)initSubViewConstraints { + [self.cycleScrollView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + +} + +#pragma mark - SDCycleScrollViewDelegate +- (Class)customCollectionViewCellClassForCycleScrollView:(SDCycleScrollView *)view { + return XPWishGiftEnterCell.class; +} + +- (void)setupCustomCell:(UICollectionViewCell *)cell forIndex:(NSInteger)index cycleScrollView:(SDCycleScrollView *)view { + XPWishGiftEnterCell *myCell = (XPWishGiftEnterCell *)cell; + WishGiftInfoModel * info = [self.giftList safeObjectAtIndex1:index]; + myCell.giftInfo = info; +} +#pragma mark - Getters And Setters +- (void)setIsLeft:(BOOL)isLeft { + _isLeft = isLeft; + for (CALayer * layer in self.layer.sublayers) { + if ([layer isKindOfClass:[CAShapeLayer class]]) { + [layer removeFromSuperlayer]; + } + } + + if (_isLeft) { + [self setCornerWithLeftTopCorner:0 rightTopCorner:15 bottomLeftCorner:0 bottomRightCorner:15 size:CGSizeMake(81, 30)]; + } else { + [self setCornerWithLeftTopCorner:15 rightTopCorner:0 bottomLeftCorner:15 bottomRightCorner:0 size:CGSizeMake(81, 30)]; + } +} + +- (void)setGiftList:(NSArray *)giftList { + _giftList = giftList; + if (_giftList.count > 0) { + NSMutableArray * array = [NSMutableArray array]; + for (WishGiftInfoModel * item in _giftList) { + [array addObject:item.giftName]; + } + if (array.count > 0) { + self.cycleScrollView.imageURLStringsGroup = array; + [self.cycleScrollView autoScroll]; + } + } +} + +- (SDCycleScrollView *)cycleScrollView { + if (!_cycleScrollView) { + _cycleScrollView = [[SDCycleScrollView alloc] init]; + _cycleScrollView.backgroundColor = [UIColor clearColor]; + _cycleScrollView.layer.masksToBounds = YES; + _cycleScrollView.delegate = self; + _cycleScrollView.showPageControl = NO; + _cycleScrollView.autoScrollTimeInterval = 10.0; + } + return _cycleScrollView; +} +@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/View/XPWishGiftInfoView.h b/YuMi/Modules/YMRoom/View/WishGift/View/View/XPWishGiftInfoView.h new file mode 100644 index 00000000..d35eef97 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/View/View/XPWishGiftInfoView.h @@ -0,0 +1,28 @@ +// +// YMWishGiftInfoView.h +// YUMI +// +// Created by YUMI on 2022/10/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class WishGiftInfoModel, XPWishGiftInfoView; + +@protocol XPWishGiftInfoViewDelegate + +- (void)xPWishGiftInfoView:(XPWishGiftInfoView *)view didClickSender:(WishGiftInfoModel *)info; + +@end + +@interface XPWishGiftInfoView : UIView + +@property (nonatomic,strong) WishGiftInfoModel *giftInfo; + +///代理 +@property (nonatomic,weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/View/XPWishGiftInfoView.m b/YuMi/Modules/YMRoom/View/WishGift/View/View/XPWishGiftInfoView.m new file mode 100644 index 00000000..ee26400d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/View/View/XPWishGiftInfoView.m @@ -0,0 +1,245 @@ +// +// YMWishGiftInfoView.m +// YUMI +// +// Created by YUMI on 2022/10/18. +// + +#import "XPWishGiftInfoView.h" +///Third +#import +///Tool +#import "NetImageView.h" +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +///Model +#import "WishGiftInfoModel.h" + +@interface XPWishGiftInfoView () +///背景 +@property (nonatomic,strong) UIImageView *bgView; +///礼物的图片 +@property (nonatomic,strong) NetImageView *giftImageView; +///礼物名称 +@property (nonatomic,strong) UILabel *giftLabel; +///价格 +@property (nonatomic,strong) UILabel *priceLabel; +///进度 +@property (nonatomic,strong) UILabel *progressLabel; +///进度条 +@property (nonatomic,strong) UIProgressView *progressView; +///赠送按钮 +@property (nonatomic,strong) UIButton *senderButton; +///完成按钮 +@property (nonatomic,strong) UIImageView *completionImageView; + +@end + +@implementation XPWishGiftInfoView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.bgView]; + [self.bgView addSubview:self.giftImageView]; + [self.bgView addSubview:self.giftLabel]; + [self.bgView addSubview:self.priceLabel]; + [self.bgView addSubview:self.progressLabel]; + [self.bgView addSubview:self.progressView]; + [self.bgView addSubview:self.senderButton]; +} + +- (void)initSubViewConstraints { + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self); + }]; + + [self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(50, 50)); + make.top.mas_equalTo(self.bgView).offset(6); + make.centerX.mas_equalTo(self.bgView); + }]; + + [self.giftLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.bgView).inset(2); + make.top.mas_equalTo(self.giftImageView.mas_bottom).offset(4); + }]; + + [self.priceLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.bgView).inset(2); + make.top.mas_equalTo(self.giftLabel.mas_bottom).offset(4); + }]; + + [self.progressView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.bgView).inset(10); + make.top.mas_equalTo(self.priceLabel.mas_bottom).offset(10); + make.height.mas_equalTo(5); + }]; + + [self.progressLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.bgView); + make.top.mas_equalTo(self.progressView.mas_bottom).offset(4); + }]; + + [self.senderButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(76, 22)); + make.centerX.mas_equalTo(self.bgView); + make.bottom.mas_equalTo(self.bgView.mas_bottom).offset(-10); + }]; +} + +- (NSAttributedString *)createProgressAttribute { + NSString * targetNum = [NSString stringWithFormat:@"/%ld", self.giftInfo.targetNum]; + NSString * actualNum = (self.giftInfo.actualNum > self.giftInfo.targetNum) ? [NSString stringWithFormat:@"%ld+", self.giftInfo.targetNum] : [NSString stringWithFormat:@"%ld", self.giftInfo.actualNum]; + NSString * title = [NSString stringWithFormat:@"%@%@", actualNum, targetNum]; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:10], NSForegroundColorAttributeName:[DJDKMIMOMColor colorWithHexString:@"#FFA0C3"]}]; + if (self.giftInfo.targetNum <= self.giftInfo.actualNum) { + [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor colorWithHexString:@"#FFA0C3"] range:[title rangeOfString:targetNum]]; + } else { + [attribute addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithWhite:1 alpha:0.5] range:[title rangeOfString:targetNum]]; + } + return attribute; +} + +#pragma mark - Event Response +- (void)senderButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPWishGiftInfoView:didClickSender:)]) { + [self.delegate xPWishGiftInfoView:self didClickSender:self.giftInfo]; + } +} + +#pragma mark - Getters And Setters +- (void)setGiftInfo:(WishGiftInfoModel *)giftInfo { + _giftInfo = giftInfo; + if (_giftInfo) { + self.giftImageView.imageUrl = giftInfo.giftUrl; + self.giftLabel.text = _giftInfo.giftName; + self.priceLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPWishGiftInfoView0"), _giftInfo.goldPrice]; + CGFloat value = (CGFloat)giftInfo.actualNum / (CGFloat)giftInfo.targetNum; + if (value > 1) { + value = 1; + } + self.progressView.progress = value; + self.progressLabel.attributedText = [self createProgressAttribute]; + self.progressLabel.textAlignment = NSTextAlignmentCenter; + self.completionImageView.hidden = _giftInfo.targetNum != _giftInfo.actualNum; + } +} + +- (UIImageView *)bgView { + if (!_bgView) { + _bgView = [[UIImageView alloc] init]; + _bgView.userInteractionEnabled = YES; + _bgView.image = [UIImage imageNamed:@"room_wish_gift_panel_gift_bg"]; + } + return _bgView; +} + +- (UIImageView *)completionImageView { + if (!_completionImageView) { + _completionImageView = [[UIImageView alloc] init]; + _completionImageView.userInteractionEnabled = YES; + _completionImageView.image = [UIImage imageNamed:@"room_wish_gift_completion"]; + } + return _completionImageView; +} + + +- (NetImageView *)giftImageView { + if (!_giftImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _giftImageView = [[NetImageView alloc] initWithConfig:config]; + _giftImageView.layer.masksToBounds = YES; + _giftImageView.layer.cornerRadius = 20; + _giftImageView.contentMode = UIViewContentModeScaleAspectFill; + } + return _giftImageView; +} + +- (UILabel *)giftLabel { + if (!_giftLabel) { + _giftLabel = [[UILabel alloc] init]; + _giftLabel.font = [UIFont systemFontOfSize:14]; + _giftLabel.textAlignment = NSTextAlignmentCenter; + _giftLabel.textColor = [UIColor whiteColor]; + } + return _giftLabel; +} + +- (UILabel *)priceLabel { + if (!_priceLabel) { + _priceLabel = [[UILabel alloc] init]; + _priceLabel.font = [UIFont systemFontOfSize:12]; + _priceLabel.textColor = [UIColor colorWithWhite:1 alpha:0.5]; + _priceLabel.textAlignment = NSTextAlignmentCenter; + } + return _priceLabel; +} + +- (UIProgressView *)progressView { + if(!_progressView) { + _progressView = [[UIProgressView alloc] init]; + _progressView.progressImage = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor colorWithHexString:@"#FFA0C3"], [DJDKMIMOMColor colorWithHexString:@"#C176FF"]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(1, 1)]; + _progressView.layer.masksToBounds = YES; + _progressView.layer.cornerRadius = 2.5; + _progressView.trackImage = [UIImage imageWithColor:[DJDKMIMOMColor colorWithHexString:@"#17093E"]]; + } + return _progressView; +} + +-(UIImage *)getGradientImageWithColors:(NSArray*)colors imgSize:(CGSize)imgSize +{ + NSMutableArray *arRef = [NSMutableArray array]; + for(UIColor *ref in colors) { + [arRef addObject:(id)ref.CGColor]; + + } + UIGraphicsBeginImageContextWithOptions(imgSize, YES, 1); + CGContextRef context = UIGraphicsGetCurrentContext(); + CGContextSaveGState(context); + CGColorSpaceRef colorSpace = CGColorGetColorSpace([[colors lastObject] CGColor]); + CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (CFArrayRef)arRef, NULL); + CGPoint start = CGPointMake(0.0, 0.0); + CGPoint end = CGPointMake(imgSize.width, imgSize.height); + CGContextDrawLinearGradient(context, gradient, start, end, kCGGradientDrawsBeforeStartLocation); + UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); + CGGradientRelease(gradient); + CGContextRestoreGState(context); + CGColorSpaceRelease(colorSpace); + UIGraphicsEndImageContext(); + return image; +} + +- (UILabel *)progressLabel { + if (!_progressLabel) { + _progressLabel = [[UILabel alloc] init]; + } + return _progressLabel; +} + +- (UIButton *)senderButton { + if (!_senderButton) { + _senderButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_senderButton setTitle:YMLocalizedString(@"XPWishGiftInfoView1") forState:UIControlStateNormal]; + [_senderButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _senderButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_senderButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor colorWithHexString:@"#FFA0C3"], [DJDKMIMOMColor colorWithHexString:@"#C176FF"]] gradientType:GradientTypeUpleftToLowright imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _senderButton.layer.masksToBounds = YES; + _senderButton.layer.cornerRadius = 11; + [_senderButton addTarget:self action:@selector(senderButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _senderButton; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/View/XPWishGiftListView.h b/YuMi/Modules/YMRoom/View/WishGift/View/View/XPWishGiftListView.h new file mode 100644 index 00000000..f8971d97 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/View/View/XPWishGiftListView.h @@ -0,0 +1,30 @@ +// +// YMWishGiftListView.h +// YUMI +// +// Created by YUMI on 2022/10/18. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class WishGiftInfoModel, XPWishGiftListView; + +@protocol XPWishGiftListViewDelegate + +///点击了某个item +- (void)xPWishGiftListView:(XPWishGiftListView *)view didSelectItem:(WishGiftInfoModel *)info; + +@end + +@interface XPWishGiftListView : UIView + +///显示的数据源 +@property (nonatomic,strong) NSArray *datasource; + +///代理 +@property (nonatomic,weak) id delegate; +- (void)configDefaultInfo:(WishGiftInfoModel *)giftInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/View/XPWishGiftListView.m b/YuMi/Modules/YMRoom/View/WishGift/View/View/XPWishGiftListView.m new file mode 100644 index 00000000..4b30d713 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/View/View/XPWishGiftListView.m @@ -0,0 +1,259 @@ +// +// YMWishGiftListView.m +// YUMI +// +// Created by YUMI on 2022/10/18. +// + +#import "XPWishGiftListView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NSArray+Safe.h" +///Model +#import "WishGiftInfoModel.h" + +@interface XPWishGiftListTableViewCell : UITableViewCell +///显示内容 +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPWishGiftListTableViewCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +- (void)initSubViews { + self.backgroundColor = UIColor.clearColor; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(13); + make.centerY.mas_equalTo(self.contentView); + }]; +} + +#pragma mark - Getters And Setters + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:14]; + _titleLabel.textColor = [DJDKMIMOMColor secondTextColor]; + } + return _titleLabel; +} + +@end + + +@interface XPWishGiftListView () +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///选中的时候容器 +@property (nonatomic,strong) UIView *selectView; +///标题 +@property (nonatomic,strong) UILabel *titlelable; +///箭头 +@property (nonatomic,strong) UIImageView *arrowImageView; +///列表 +@property (nonatomic,strong) UITableView *tableView; +///原始数据源 +@property (nonatomic,strong) NSArray *gameList; +///s是否选择 +@property (nonatomic,assign) BOOL isSelect; +@end + +@implementation XPWishGiftListView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + + } + return self; +} +#pragma mark - Public Method +- (void)configDefaultInfo:(WishGiftInfoModel *)giftInfo { + if (giftInfo.levelName) { + self.titlelable.text = giftInfo.levelName; + } else { + self.titlelable.text = giftInfo.giftName; + } +} + +#pragma mark - Private Method +- (void)initSubViews { + self.layer.masksToBounds = YES; + self.layer.cornerRadius = 4; + self.backgroundColor = UIColor.clearColor; + [self addSubview:self.stackView]; + [self.stackView addArrangedSubview:self.selectView]; + [self.stackView addArrangedSubview:self.tableView]; + + [self.selectView addSubview:self.titlelable]; + [self.selectView addSubview:self.arrowImageView]; + +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.stackView.mas_bottom); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self); + make.top.mas_equalTo(self); + }]; + + [self.selectView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(36); + }]; + + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(36); + }]; + + [self.arrowImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(22, 22)); + make.right.mas_equalTo(self.selectView.mas_right).offset(-11); + make.centerY.mas_equalTo(self.selectView); + }]; + + [self.titlelable mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.selectView); + make.left.mas_equalTo(self.selectView).offset(13); + }]; +} + + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + XPWishGiftListTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPWishGiftListTableViewCell class])]; + if (cell == nil) { + cell = [[XPWishGiftListTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPWishGiftListTableViewCell class])]; + } + if (self.datasource.count > 0 ) { + WishGiftInfoModel * giftInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + if (giftInfo.level > 0) { + cell.titleLabel.text = giftInfo.levelName; + } else { + cell.titleLabel.text = giftInfo.giftName; + } + } + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 36; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.datasource.count > 0) { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPWishGiftListView:didSelectItem:)]) { + WishGiftInfoModel * giftInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + [self configDefaultInfo:giftInfo]; + [self.delegate xPWishGiftListView:self didSelectItem:giftInfo]; + } + self.tableView.hidden = YES; + } +} + +#pragma mark - Event Response +- (void)gamePlayButtonAction:(UIButton *)sender { + self.isSelect = !self.isSelect; + self.tableView.hidden = !self.isSelect; + if (!self.tableView.hidden) { + if (_datasource.count > 0 && _datasource.count < 4) { + [self.tableView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(36 * self.datasource.count); + }]; + } else { + [self.tableView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(36 * 3); + }]; + } + } +} + +#pragma mark - Getters And Setters +- (void)setDatasource:(NSArray *)datasource { + _datasource = datasource; + [self.tableView reloadData]; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 0; + } + return _stackView; +} + +- (UIView *)selectView { + if (!_selectView) { + _selectView = [[UIView alloc] init]; + _selectView.backgroundColor = [UIColor clearColor]; + _selectView.backgroundColor = [DJDKMIMOMColor colorWithHexString:@"#E4E4E4"]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(gamePlayButtonAction:)]; + [_selectView addGestureRecognizer:tap]; + } + return _selectView; +} +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [DJDKMIMOMColor colorWithHexString:@"#F4F4F4"]; + _tableView.hidden = YES; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPWishGiftListTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPWishGiftListTableViewCell class])]; + } + return _tableView; +} + +- (UIImageView *)arrowImageView { + if (!_arrowImageView) { + _arrowImageView = [[UIImageView alloc] init]; + _arrowImageView.userInteractionEnabled = YES; + _arrowImageView.image = [UIImage imageNamed:@"room_wish_create_arrow"]; + } + return _arrowImageView; +} + +- (UILabel *)titlelable { + if (!_titlelable) { + _titlelable = [[UILabel alloc] init]; + _titlelable.font = [UIFont systemFontOfSize:14]; + _titlelable.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titlelable; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/View/XPWishGiftSectionView.h b/YuMi/Modules/YMRoom/View/WishGift/View/View/XPWishGiftSectionView.h new file mode 100644 index 00000000..197aa73b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/View/View/XPWishGiftSectionView.h @@ -0,0 +1,16 @@ +// +// YMWishGiftSectionView.h +// YUMI +// +// Created by YUMI on 2022/10/19. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPWishGiftSectionView : UIView +@property (nonatomic,copy) NSString *title; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/View/XPWishGiftSectionView.m b/YuMi/Modules/YMRoom/View/WishGift/View/View/XPWishGiftSectionView.m new file mode 100644 index 00000000..9612c6e6 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/View/View/XPWishGiftSectionView.m @@ -0,0 +1,55 @@ +// +// YMWishGiftSectionView.m +// YUMI +// +// Created by YUMI on 2022/10/19. +// + +#import "XPWishGiftSectionView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" + +@interface XPWishGiftSectionView () +///标题 +@property (nonatomic,strong) UILabel *titleLabel; +@end + +@implementation XPWishGiftSectionView +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +- (void)initSubViews { + [self addSubview:self.titleLabel]; +} + +- (void)initSubViewConstraints { + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self).offset(24); + make.centerY.mas_equalTo(self); + }]; +} + +- (void)setTitle:(NSString *)title { + _title = title; + self.titleLabel.text = _title; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + } + return _titleLabel; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/View/YUMIDesirePresentAbstractRegard.h b/YuMi/Modules/YMRoom/View/WishGift/View/View/YUMIDesirePresentAbstractRegard.h deleted file mode 100644 index ca89be7c..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/View/View/YUMIDesirePresentAbstractRegard.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// YMWishGiftInfoView.h -// YUMI -// -// Created by YUMI on 2022/10/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class DesirePresentAbstractMatrix, YUMIDesirePresentAbstractRegard; - -@protocol FBCDesirePresentAbstractRegardRepresendtation - -- (void)fBCHopePresentAbstractRegard:(YUMIDesirePresentAbstractRegard *)view didClickSender:(DesirePresentAbstractMatrix *)info; - -@end - -@interface YUMIDesirePresentAbstractRegard : UIView - -@property (nonatomic,strong) DesirePresentAbstractMatrix *giftInfo; - -@property (nonatomic,weak) id delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/View/YUMIDesirePresentAbstractRegard.m b/YuMi/Modules/YMRoom/View/WishGift/View/View/YUMIDesirePresentAbstractRegard.m deleted file mode 100644 index 6fbf0404..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/View/View/YUMIDesirePresentAbstractRegard.m +++ /dev/null @@ -1,234 +0,0 @@ -// -// YMWishGiftInfoView.m -// YUMI -// -// Created by YUMI on 2022/10/18. -// - -#import "YUMIDesirePresentAbstractRegard.h" -#import -#import "NetIndicateRegard.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "DesirePresentAbstractMatrix.h" - -@interface YUMIDesirePresentAbstractRegard () -@property (nonatomic,strong) UIImageView *backgroundRegard; -@property (nonatomic,strong) NetIndicateRegard *presentIndicateRegard; -@property (nonatomic,strong) UILabel *presentSequencignation; -@property (nonatomic,strong) UILabel *valencySequencignation; -@property (nonatomic,strong) UILabel *growthSequencignation; -@property (nonatomic,strong) UIProgressView *progressView; -@property (nonatomic,strong) UIButton *dischargeerBtuton; -@property (nonatomic,strong) UIImageView *completionIndicateRegard; - -@end - -@implementation YUMIDesirePresentAbstractRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backgroundRegard]; - [self.backgroundRegard addSubview:self.presentIndicateRegard]; - [self.backgroundRegard addSubview:self.presentSequencignation]; - [self.backgroundRegard addSubview:self.valencySequencignation]; - [self.backgroundRegard addSubview:self.growthSequencignation]; - [self.backgroundRegard addSubview:self.progressView]; - [self.backgroundRegard addSubview:self.dischargeerBtuton]; -} - -- (void)initChildLyRestrictions { - [self.backgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self); - }]; - - [self.presentIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(50, 50)); - make.top.mas_equalTo(self.backgroundRegard).offset(6); - make.centerX.mas_equalTo(self.backgroundRegard); - }]; - - [self.presentSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backgroundRegard).inset(2); - make.top.mas_equalTo(self.presentIndicateRegard.mas_bottom).offset(4); - }]; - - [self.valencySequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backgroundRegard).inset(2); - make.top.mas_equalTo(self.presentSequencignation.mas_bottom).offset(4); - }]; - - [self.progressView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backgroundRegard).inset(10); - make.top.mas_equalTo(self.valencySequencignation.mas_bottom).offset(10); - make.height.mas_equalTo(5); - }]; - - [self.growthSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backgroundRegard); - make.top.mas_equalTo(self.progressView.mas_bottom).offset(4); - }]; - - [self.dischargeerBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(76, 22)); - make.centerX.mas_equalTo(self.backgroundRegard); - make.bottom.mas_equalTo(self.backgroundRegard.mas_bottom).offset(-10); - }]; -} - -- (NSAttributedString *)produceDirectoryvanceIdiosyncracy { - NSString * targetNum = [NSString stringWithFormat:@"/%ld", self.giftInfo.targetNum]; - NSString * actualNum = (self.giftInfo.actualNum > self.giftInfo.targetNum) ? [NSString stringWithFormat:@"%ld+", self.giftInfo.targetNum] : [NSString stringWithFormat:@"%ld", self.giftInfo.actualNum]; - NSString * title = [NSString stringWithFormat:@"%@%@", actualNum, targetNum]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:10], NSForegroundColorAttributeName:[DJDKMIMOMColor colorAboutHexBWSttr:@"#FFA0C3"]}]; - if (self.giftInfo.targetNum <= self.giftInfo.actualNum) { - [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor colorAboutHexBWSttr:@"#FFA0C3"] range:[title rangeOfString:targetNum]]; - } else { - [attribute addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithWhite:1 alpha:0.5] range:[title rangeOfString:targetNum]]; - } - return attribute; -} - -#pragma mark - Event Response -- (void)prohibitichargeerBtutonPerformance:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCHopePresentAbstractRegard:didClickSender:)]) { - [self.delegate fBCHopePresentAbstractRegard:self didClickSender:self.giftInfo]; - } -} - -#pragma mark - Getters And Setters -- (void)setGiftInfo:(DesirePresentAbstractMatrix *)giftInfo { - _giftInfo = giftInfo; - if (_giftInfo) { - self.presentIndicateRegard.imageUrl = giftInfo.giftUrl; - self.presentSequencignation.text = _giftInfo.giftName; - self.valencySequencignation.text = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Wish_Gift_Info_View_0"), _giftInfo.goldPrice]; - CGFloat value = (CGFloat)giftInfo.actualNum / (CGFloat)giftInfo.targetNum; - if (value > 1) { - value = 1; - } - self.progressView.progress = value; - self.growthSequencignation.attributedText = [self produceDirectoryvanceIdiosyncracy]; - self.growthSequencignation.textAlignment = NSTextAlignmentCenter; - self.completionIndicateRegard.hidden = _giftInfo.targetNum != _giftInfo.actualNum; - } -} - -- (UIImageView *)backgroundRegard { - if (!_backgroundRegard) { - _backgroundRegard = [[UIImageView alloc] init]; - _backgroundRegard.userInteractionEnabled = YES; - _backgroundRegard.image = [UIImage imageNamed:@"yumi_scope_wish_present_panel_present_background"]; - } - return _backgroundRegard; -} - -- (UIImageView *)completionIndicateRegard { - if (!_completionIndicateRegard) { - _completionIndicateRegard = [[UIImageView alloc] init]; - _completionIndicateRegard.userInteractionEnabled = YES; - _completionIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_wish_present_completion"]; - } - return _completionIndicateRegard; -} - - -- (NetIndicateRegard *)presentIndicateRegard { - if (!_presentIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _presentIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _presentIndicateRegard.layer.masksToBounds = YES; - _presentIndicateRegard.layer.cornerRadius = 20; - _presentIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _presentIndicateRegard; -} - -- (UILabel *)presentSequencignation { - if (!_presentSequencignation) { - _presentSequencignation = [[UILabel alloc] init]; - _presentSequencignation.font = [UIFont systemFontOfSize:14]; - _presentSequencignation.textAlignment = NSTextAlignmentCenter; - _presentSequencignation.textColor = [UIColor whiteColor]; - } - return _presentSequencignation; -} - -- (UILabel *)valencySequencignation { - if (!_valencySequencignation) { - _valencySequencignation = [[UILabel alloc] init]; - _valencySequencignation.font = [UIFont systemFontOfSize:12]; - _valencySequencignation.textColor = [UIColor colorWithWhite:1 alpha:0.5]; - _valencySequencignation.textAlignment = NSTextAlignmentCenter; - } - return _valencySequencignation; -} - -- (UIProgressView *)progressView { - if(!_progressView) { - _progressView = [[UIProgressView alloc] init]; - _progressView.progressImage = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor colorAboutHexBWSttr:@"#FFA0C3"], [DJDKMIMOMColor colorAboutHexBWSttr:@"#C176FF"]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(1, 1)]; - _progressView.layer.masksToBounds = YES; - _progressView.layer.cornerRadius = 2.5; - _progressView.trackImage = [UIImage imageWithColor:[DJDKMIMOMColor colorAboutHexBWSttr:@"#17093E"]]; - } - return _progressView; -} - --(UIImage *)acquireObliquityIndictowardseAboutPrettifys:(NSArray*)colors imgSize:(CGSize)imgSize -{ - NSMutableArray *arRef = [NSMutableArray array]; - for(UIColor *ref in colors) { - [arRef addObject:(id)ref.CGColor]; - - } - UIGraphicsBeginImageContextWithOptions(imgSize, YES, 1); - CGContextRef context = UIGraphicsGetCurrentContext(); - CGContextSaveGState(context); - CGColorSpaceRef colorSpace = CGColorGetColorSpace([[colors lastObject] CGColor]); - CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (CFArrayRef)arRef, NULL); - CGPoint start = CGPointMake(0.0, 0.0); - CGPoint end = CGPointMake(imgSize.width, imgSize.height); - CGContextDrawLinearGradient(context, gradient, start, end, kCGGradientDrawsBeforeStartLocation); - UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); - CGGradientRelease(gradient); - CGContextRestoreGState(context); - CGColorSpaceRelease(colorSpace); - UIGraphicsEndImageContext(); - return image; -} - -- (UILabel *)growthSequencignation { - if (!_growthSequencignation) { - _growthSequencignation = [[UILabel alloc] init]; - } - return _growthSequencignation; -} - -- (UIButton *)dischargeerBtuton { - if (!_dischargeerBtuton) { - _dischargeerBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_dischargeerBtuton setTitle:YMLocalizedString(@"YUMI_Wish_Gift_Info_View_1") forState:UIControlStateNormal]; - [_dischargeerBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _dischargeerBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_dischargeerBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor colorAboutHexBWSttr:@"#FFA0C3"], [DJDKMIMOMColor colorAboutHexBWSttr:@"#C176FF"]] gradientType:GradientGenreUpleftToLowright imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _dischargeerBtuton.layer.masksToBounds = YES; - _dischargeerBtuton.layer.cornerRadius = 11; - [_dischargeerBtuton addTarget:self action:@selector(prohibitichargeerBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _dischargeerBtuton; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/View/YUMIDesirePresentDivisionRegard.h b/YuMi/Modules/YMRoom/View/WishGift/View/View/YUMIDesirePresentDivisionRegard.h deleted file mode 100644 index 901e316b..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/View/View/YUMIDesirePresentDivisionRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMWishGiftSectionView.h -// YUMI -// -// Created by YUMI on 2022/10/19. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIDesirePresentDivisionRegard : UIView -@property (nonatomic,copy) NSString *title; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/View/YUMIDesirePresentDivisionRegard.m b/YuMi/Modules/YMRoom/View/WishGift/View/View/YUMIDesirePresentDivisionRegard.m deleted file mode 100644 index b3d186cd..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/View/View/YUMIDesirePresentDivisionRegard.m +++ /dev/null @@ -1,52 +0,0 @@ -// -// YMWishGiftSectionView.m -// YUMI -// -// Created by YUMI on 2022/10/19. -// - -#import "YUMIDesirePresentDivisionRegard.h" -#import -#import "DJDKMIMOMColor.h" - -@interface YUMIDesirePresentDivisionRegard () -@property (nonatomic,strong) UILabel *titleLabel; -@end - -@implementation YUMIDesirePresentDivisionRegard -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -- (void)initSubViews { - [self addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self).offset(24); - make.centerY.mas_equalTo(self); - }]; -} - -- (void)setTitle:(NSString *)title { - _title = title; - self.titleLabel.text = _title; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _titleLabel; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/View/YUMIDesirePresentImportRegard.h b/YuMi/Modules/YMRoom/View/WishGift/View/View/YUMIDesirePresentImportRegard.h deleted file mode 100644 index 75360de6..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/View/View/YUMIDesirePresentImportRegard.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMWishGiftEnterView.h -// YUMI -// -// Created by YUMI on 2022/10/20. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@interface YUMIDesirePresentImportRegard : UIView -@property (nonatomic,strong) NSArray * giftList; -@property (nonatomic,assign) BOOL isContrary; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/View/YUMIDesirePresentImportRegard.m b/YuMi/Modules/YMRoom/View/WishGift/View/View/YUMIDesirePresentImportRegard.m deleted file mode 100644 index 9b2afbab..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/View/View/YUMIDesirePresentImportRegard.m +++ /dev/null @@ -1,232 +0,0 @@ -// -// YMWishGiftEnterView.m -// YUMI -// -// Created by YUMI on 2022/10/20. -// - -#import "YUMIDesirePresentImportRegard.h" -#import -#import -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "UIImage+Utils.h" -#import "UIView+Corner.h" -#import "NSArray+Safe.h" -#import "DesirePresentAbstractMatrix.h" - -@interface YUMIDesirePresentImportElement : UICollectionViewCell -@property (nonatomic,strong) NetIndicateRegard *presentIndicateRegard; -@property (nonatomic,strong) UILabel *presentSequencignation; -@property (nonatomic,strong) UILabel *growthSequencignation; -@property (nonatomic,strong) UIProgressView *progressView; -@property (nonatomic,strong) DesirePresentAbstractMatrix *giftInfo; -@end - -@implementation YUMIDesirePresentImportElement - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.contentView.backgroundColor = [UIColor clearColor]; - [self.contentView addSubview:self.presentIndicateRegard]; - [self.contentView addSubview:self.presentSequencignation]; - [self.contentView addSubview:self.growthSequencignation]; - [self.contentView addSubview:self.progressView]; -} - -- (void)initChildLyRestrictions { - - [self.presentIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.top.bottom.mas_equalTo(self.contentView); - make.width.mas_equalTo(self.presentIndicateRegard.mas_height); - }]; - - [self.presentSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.presentIndicateRegard.mas_right).offset(6); - make.top.mas_equalTo(self.contentView).offset(0); - make.right.mas_equalTo(self.contentView).offset(-2); - }]; - - [self.growthSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.presentSequencignation); - make.right.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.presentSequencignation.mas_bottom).offset(1); - }]; - - [self.progressView mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(3); - make.bottom.mas_equalTo(self.contentView.mas_bottom).offset(-2); - make.left.mas_equalTo(self.presentIndicateRegard.mas_right).offset(2); - make.right.mas_equalTo(self.contentView).offset(-5); - }]; -} - -- (NSAttributedString *)produceDirectoryvanceIdiosyncracy { - NSString * targetNum = [NSString stringWithFormat:@"/%ld", self.giftInfo.targetNum]; - NSString * actualNum = (self.giftInfo.actualNum > self.giftInfo.targetNum) ? [NSString stringWithFormat:@"%ld+", self.giftInfo.targetNum] : [NSString stringWithFormat:@"%ld", self.giftInfo.actualNum]; - NSString * title = [NSString stringWithFormat:@"%@%@", actualNum, targetNum]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:10], NSForegroundColorAttributeName:[DJDKMIMOMColor colorAboutHexBWSttr:@"#FFC300"]}]; - if (self.giftInfo.targetNum <= self.giftInfo.actualNum) { - [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor colorAboutHexBWSttr:@"#FFC300"] range:[title rangeOfString:targetNum]]; - } else { - [attribute addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithWhite:1 alpha:1] range:[title rangeOfString:targetNum]]; - } - return attribute; -} - -#pragma mark - Getters And Setters -- (void)setGiftInfo:(DesirePresentAbstractMatrix *)giftInfo { - _giftInfo = giftInfo; - if (_giftInfo) { - self.presentIndicateRegard.imageUrl = _giftInfo.giftUrl; - self.presentSequencignation.text = _giftInfo.giftName; - CGFloat value = (CGFloat)giftInfo.actualNum / (CGFloat)giftInfo.targetNum; - if (value > 1){ - value = 1; - } - [self.progressView setProgress:value animated:NO]; - self.growthSequencignation.attributedText = [self produceDirectoryvanceIdiosyncracy]; - self.growthSequencignation.textAlignment = NSTextAlignmentCenter; - } -} - -- (UIProgressView *)progressView { - if(!_progressView) { - _progressView = [[UIProgressView alloc] init]; - _progressView.layer.masksToBounds = YES; - _progressView.layer.cornerRadius = 1.5; - _progressView.trackImage = [UIImage imageWithColor:[DJDKMIMOMColor colorAboutHexBWSttr:@"#17093E"]]; - _progressView.progressImage = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor colorAboutHexBWSttr:@"#FFA0C3"], [DJDKMIMOMColor colorAboutHexBWSttr:@"#C176FF"]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(1, 1)]; - } - return _progressView; -} - -- (NetIndicateRegard *)presentIndicateRegard { - if (!_presentIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _presentIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _presentIndicateRegard.layer.masksToBounds = YES; - _presentIndicateRegard.layer.cornerRadius = 15; - _presentIndicateRegard.layer.borderWidth = 0.5; - _presentIndicateRegard.layer.borderColor = UIColorRGBAlpha(0xFFEEBE, 0.7).CGColor; - _presentIndicateRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _presentIndicateRegard; -} - -- (UILabel *)presentSequencignation { - if (!_presentSequencignation) { - _presentSequencignation = [[UILabel alloc] init]; - _presentSequencignation.font = [UIFont systemFontOfSize:10]; - _presentSequencignation.textAlignment = NSTextAlignmentCenter; - _presentSequencignation.textColor = [UIColor whiteColor]; - _presentSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _presentSequencignation; -} - -- (UILabel *)growthSequencignation { - if (!_growthSequencignation) { - _growthSequencignation = [[UILabel alloc] init]; - } - return _growthSequencignation; -} - -@end - -@interface YUMIDesirePresentImportRegard() -@property (nonatomic, strong) SDCycleScrollView *cycleTrundleRegard; - -@end - -@implementation YUMIDesirePresentImportRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - self.isContrary = NO; - } - return self; -} - - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor colorWithWhite:1 alpha:0.2]; - [self addSubview:self.cycleTrundleRegard]; - self.layer.masksToBounds = YES; -} - -- (void)initChildLyRestrictions { - [self.cycleTrundleRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - -} - -#pragma mark - SDCycleScrollViewDelegate -- (Class)customCollectionViewCellClassForCycleScrollView:(SDCycleScrollView *)view { - return YUMIDesirePresentImportElement.class; -} - -- (void)setupCustomCell:(UICollectionViewCell *)cell forIndex:(NSInteger)index cycleTrundleRegard:(SDCycleScrollView *)view { - YUMIDesirePresentImportElement *myCell = (YUMIDesirePresentImportElement *)cell; - DesirePresentAbstractMatrix * info = [self.giftList secureGroalTowardsIndictowardsrix1:index]; - myCell.giftInfo = info; -} -#pragma mark - Getters And Setters -- (void)setIsContrary:(BOOL)isContrary { - _isContrary = isContrary; - for (CALayer * layer in self.layer.sublayers) { - if ([layer isKindOfClass:[CAShapeLayer class]]) { - [layer removeFromSuperlayer]; - } - } - - if (_isContrary) { - [self setMonopolizeAboutContraryApexMonopolize:0 rightTopCorner:15 bottomLeftCorner:0 bottomRightCorner:15 size:CGSizeMake(81, 30)]; - } else { - [self setMonopolizeAboutContraryApexMonopolize:15 rightTopCorner:0 bottomLeftCorner:15 bottomRightCorner:0 size:CGSizeMake(81, 30)]; - } -} - -- (void)setGiftList:(NSArray *)giftList { - _giftList = giftList; - if (_giftList.count > 0) { - NSMutableArray * array = [NSMutableArray array]; - for (DesirePresentAbstractMatrix * item in _giftList) { - [array addObject:item.giftName]; - } - if (array.count > 0) { - self.cycleTrundleRegard.imageURLStringsGroup = array; - [self.cycleTrundleRegard autoScroll]; - } - } -} - -- (SDCycleScrollView *)cycleTrundleRegard { - if (!_cycleTrundleRegard) { - _cycleTrundleRegard = [[SDCycleScrollView alloc] init]; - _cycleTrundleRegard.backgroundColor = [UIColor clearColor]; - _cycleTrundleRegard.layer.masksToBounds = YES; - _cycleTrundleRegard.delegate = self; - _cycleTrundleRegard.showPageControl = NO; - _cycleTrundleRegard.autoScrollTimeInterval = 10.0; - } - return _cycleTrundleRegard; -} -@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/View/YUMIDesirePresentStatementRegard.h b/YuMi/Modules/YMRoom/View/WishGift/View/View/YUMIDesirePresentStatementRegard.h deleted file mode 100644 index 737662e3..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/View/View/YUMIDesirePresentStatementRegard.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// YMWishGiftListView.h -// YUMI -// -// Created by YUMI on 2022/10/18. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class DesirePresentAbstractMatrix, YUMIDesirePresentStatementRegard; - -@protocol FBCDesirePresentStatementRegardRepresendtation - -- (void)fBCHopePresentSttowardsementRegard:(YUMIDesirePresentStatementRegard *)view didSelectItem:(DesirePresentAbstractMatrix *)info; - -@end - -@interface YUMIDesirePresentStatementRegard : UIView - -@property (nonatomic,strong) NSArray *datasource; - -@property (nonatomic,weak) id delegate; -- (void)prohibitipositionDeficiencyAbstract:(DesirePresentAbstractMatrix *)giftInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/View/YUMIDesirePresentStatementRegard.m b/YuMi/Modules/YMRoom/View/WishGift/View/View/YUMIDesirePresentStatementRegard.m deleted file mode 100644 index a59d83d9..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/View/View/YUMIDesirePresentStatementRegard.m +++ /dev/null @@ -1,248 +0,0 @@ -// -// YMWishGiftListView.m -// YUMI -// -// Created by YUMI on 2022/10/18. -// - -#import "YUMIDesirePresentStatementRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "NSArray+Safe.h" -#import "DesirePresentAbstractMatrix.h" - -@interface YUMIDesirePresentStatementTabulationRegardElement : UITableViewCell -@property (nonatomic,strong) UILabel *titleLabel; -@end - -@implementation YUMIDesirePresentStatementTabulationRegardElement - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -- (void)initSubViews { - self.backgroundColor = UIColor.clearColor; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.titleLabel]; -} - -- (void)initChildLyRestrictions { - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(13); - make.centerY.mas_equalTo(self.contentView); - }]; -} - -#pragma mark - Getters And Setters - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:14]; - _titleLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - } - return _titleLabel; -} - -@end - - -@interface YUMIDesirePresentStatementRegard () -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UIView *chosenRegard; -@property (nonatomic,strong) UILabel *championdesigntion; -@property (nonatomic,strong) UIImageView *arrowIndicateRegard; -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSArray *competitionStatement; -@property (nonatomic,assign) BOOL isSelect; -@end - -@implementation YUMIDesirePresentStatementRegard - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - - } - return self; -} -#pragma mark - Public Method -- (void)prohibitipositionDeficiencyAbstract:(DesirePresentAbstractMatrix *)giftInfo { - if (giftInfo.levelName) { - self.championdesigntion.text = giftInfo.levelName; - } else { - self.championdesigntion.text = giftInfo.giftName; - } -} - -#pragma mark - Private Method -- (void)initSubViews { - self.layer.masksToBounds = YES; - self.layer.cornerRadius = 4; - self.backgroundColor = UIColor.clearColor; - [self addSubview:self.stackView]; - [self.stackView addArrangedSubview:self.chosenRegard]; - [self.stackView addArrangedSubview:self.tableView]; - - [self.chosenRegard addSubview:self.championdesigntion]; - [self.chosenRegard addSubview:self.arrowIndicateRegard]; - -} - -- (void)initChildLyRestrictions { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.stackView.mas_bottom); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self); - make.top.mas_equalTo(self); - }]; - - [self.chosenRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(36); - }]; - - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(36); - }]; - - [self.arrowIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(22, 22)); - make.right.mas_equalTo(self.chosenRegard.mas_right).offset(-11); - make.centerY.mas_equalTo(self.chosenRegard); - }]; - - [self.championdesigntion mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.chosenRegard); - make.left.mas_equalTo(self.chosenRegard).offset(13); - }]; -} - - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - YUMIDesirePresentStatementTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIDesirePresentStatementTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIDesirePresentStatementTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIDesirePresentStatementTabulationRegardElement class])]; - } - if (self.datasource.count > 0 ) { - DesirePresentAbstractMatrix * giftInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - if (giftInfo.level > 0) { - cell.titleLabel.text = giftInfo.levelName; - } else { - cell.titleLabel.text = giftInfo.giftName; - } - } - return cell; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 36; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (self.datasource.count > 0) { - if (self.delegate && [self.delegate respondsToSelector:@selector(fBCHopePresentSttowardsementRegard:didSelectItem:)]) { - DesirePresentAbstractMatrix * giftInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - [self prohibitipositionDeficiencyAbstract:giftInfo]; - [self.delegate fBCHopePresentSttowardsementRegard:self didSelectItem:giftInfo]; - } - self.tableView.hidden = YES; - } -} - -#pragma mark - Event Response -- (void)competitionDisportBtutonPerformance:(UIButton *)sender { - self.isSelect = !self.isSelect; - self.tableView.hidden = !self.isSelect; - if (!self.tableView.hidden) { - if (_datasource.count > 0 && _datasource.count < 4) { - [self.tableView mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(36 * self.datasource.count); - }]; - } else { - [self.tableView mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(36 * 3); - }]; - } - } -} - -#pragma mark - Getters And Setters -- (void)setDatasource:(NSArray *)datasource { - _datasource = datasource; - [self.tableView reloadData]; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 0; - } - return _stackView; -} - -- (UIView *)chosenRegard { - if (!_chosenRegard) { - _chosenRegard = [[UIView alloc] init]; - _chosenRegard.backgroundColor = [UIColor clearColor]; - _chosenRegard.backgroundColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#E4E4E4"]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(competitionDisportBtutonPerformance:)]; - [_chosenRegard addGestureRecognizer:tap]; - } - return _chosenRegard; -} -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#F4F4F4"]; - _tableView.hidden = YES; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIDesirePresentStatementTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIDesirePresentStatementTabulationRegardElement class])]; - } - return _tableView; -} - -- (UIImageView *)arrowIndicateRegard { - if (!_arrowIndicateRegard) { - _arrowIndicateRegard = [[UIImageView alloc] init]; - _arrowIndicateRegard.userInteractionEnabled = YES; - _arrowIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_wish_create_arrow"]; - } - return _arrowIndicateRegard; -} - -- (UILabel *)championdesigntion { - if (!_championdesigntion) { - _championdesigntion = [[UILabel alloc] init]; - _championdesigntion.font = [UIFont systemFontOfSize:14]; - _championdesigntion.textColor = [DJDKMIMOMColor mainEssayPrettify]; - } - return _championdesigntion; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/XPWishGiftCreateItemViewController.h b/YuMi/Modules/YMRoom/View/WishGift/View/XPWishGiftCreateItemViewController.h new file mode 100644 index 00000000..ed7fb9a2 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/View/XPWishGiftCreateItemViewController.h @@ -0,0 +1,29 @@ +// +// YMWishGiftCreateItemViewController.h +// YUMI +// +// Created by YUMI on 2022/10/18. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN +@class WishGiftInfoModel; +@interface XPWishGiftCreateItemViewController : MvpViewController +///初级礼物 +@property (nonatomic,strong) NSArray *levelOneGiftList; +///中级礼物 +@property (nonatomic,strong) NSArray *levelTwoGiftList; +///高级礼物 +@property (nonatomic,strong) NSArray *levelThirdGiftList; +///房主的uid +@property (nonatomic,strong) NSString *roomUid; + +///需要修改的礼物信息 +@property (nonatomic,strong) WishGiftInfoModel *modifiGiftInfo; + +///创建完成 +@property (nonatomic,copy) void(^Dismiss)(BOOL finish); +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/XPWishGiftCreateItemViewController.m b/YuMi/Modules/YMRoom/View/WishGift/View/XPWishGiftCreateItemViewController.m new file mode 100644 index 00000000..1f12fcde --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/View/XPWishGiftCreateItemViewController.m @@ -0,0 +1,522 @@ +// +// YMWishGiftCreateItemViewController.m +// YUMI +// +// Created by YUMI on 2022/10/18. +// + +#import "XPWishGiftCreateItemViewController.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "NSArray+Safe.h" +///View +#import "XPWishGiftListView.h" +#import "WishGiftInfoModel.h" +///P +#import "XPWishGiftPresenter.h" +#import "XPWishGiftProtocol.h" + +@interface XPWishGiftCreateItemViewController () +///背景 +@property (nonatomic,strong) UIView *topView; +///背景 +@property (nonatomic,strong) UIView * bottomView; +///背景 +@property (nonatomic,strong) UIView *backView; +///等级 +@property (nonatomic,strong) XPWishGiftListView *levelView; +///礼物 +@property (nonatomic,strong) XPWishGiftListView *giftView; +///数量 +@property (nonatomic,strong) UIStackView *numberStackView; +///减 +@property (nonatomic,strong) UIButton *subtractButton; +///输入框 +@property (nonatomic,strong) UITextField *textField; +///添加 +@property (nonatomic,strong) UIButton *addButton; +///关闭按钮 +@property (nonatomic,strong) UIButton *sureButton; +///个数 +@property (nonatomic,assign) int number; +///礼物等级 +@property (nonatomic,strong) NSArray *levelLists; +///礼物等级 +@property (nonatomic,strong) WishGiftInfoModel *levleInfo; +///礼物信息 +@property (nonatomic,strong) WishGiftInfoModel *giftInfo; +@end + +@implementation XPWishGiftCreateItemViewController + +- (__kindof id)createPresenter { + return [[XPWishGiftPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + self.view.backgroundColor = UIColorRGBAlpha(0x000000, 0.5); + [self initWishGiftCongifList]; + [self initSubViews]; + [self initSubViewConstraints]; +} + + +#pragma mark - Private Method +- (void)initWishGiftCongifList { + if (self.modifiGiftInfo == nil) { + self.number = 10; + self.levleInfo = self.levelLists.firstObject; + [self handleLevleDatasource:self.levleInfo.level]; + [self.levelView configDefaultInfo:self.levleInfo]; + if (self.levelOneGiftList.count > 0) { + self.giftInfo = self.levelOneGiftList.firstObject; + [self.giftView configDefaultInfo:self.giftInfo]; + [self handleGiftDatasource:self.levelOneGiftList giftId:self.giftInfo.giftId];; + } + } + [self loadWishGiftLevelList]; +} + +- (void)loadWishGiftLevelList { + if (self.levelOneGiftList.count <= 0) { + [self.presenter wishGiftConfigList:self.roomUid level:@"1"]; + } else if(self.levelTwoGiftList.count <= 0) { + [self.presenter wishGiftConfigList:self.roomUid level:@"2"]; + } else if(self.levelThirdGiftList.count <= 0) { + [self.presenter wishGiftConfigList:self.roomUid level:@"3"]; + } +} + +- (void)initSubViews { + [self.view addSubview:self.topView]; + [self.view addSubview:self.backView]; + [self.view addSubview:self.bottomView]; + + [self.backView addSubview:self.sureButton]; + [self.backView addSubview:self.numberStackView]; + [self.backView addSubview:self.giftView]; + [self.backView addSubview:self.levelView]; + + [self.numberStackView addArrangedSubview:self.subtractButton]; + [self.numberStackView addArrangedSubview:self.textField]; + [self.numberStackView addArrangedSubview:self.addButton]; +} + +- (void)initSubViewConstraints { + [self.topView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.top.left.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.backView.mas_top); + }]; + + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view).inset(38); + make.height.mas_equalTo(245); + make.centerY.mas_equalTo(self.view); + }]; + + [self.bottomView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.top.mas_equalTo(self.backView.mas_bottom); + }]; + + [self.levelView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backView).inset(30); + make.top.mas_equalTo(self.backView).offset(36); + }]; + + + [self.giftView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backView).inset(30); + make.top.mas_equalTo(self.backView).offset(84); + }]; + + [self.numberStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.levelView); + make.height.mas_equalTo(36); + make.bottom.mas_equalTo(self.sureButton.mas_top).offset(-20); + }]; + + [self.subtractButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(36); + }]; + + [self.addButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(36); + }]; + + [self.sureButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(129, 37)); + make.centerX.mas_equalTo(self.backView); + make.bottom.mas_equalTo(self.backView.mas_bottom).offset(-20); + }]; +} + +- (int)addMaxCount { + if ([self.levleInfo.levelName isEqualToString:YMLocalizedString(@"XPWishGiftCreateItemViewController0")]) { + return 999; + } else if ([self.levleInfo.levelName isEqualToString:YMLocalizedString(@"XPWishGiftCreateItemViewController1")]) { + return 99; + } else { + return 30; + } +} + +- (BOOL)canAddMaxCount:(int)count { + if ([self.levleInfo.levelName isEqualToString:YMLocalizedString(@"XPWishGiftCreateItemViewController2")]) { + return count <= 999; + } else if ([self.levleInfo.levelName isEqualToString:YMLocalizedString(@"XPWishGiftCreateItemViewController3")]) { + return count <= 99; + } else { + return count <= 30; + } +} + +- (BOOL)canSubtractMinCount:(int)count { + if ([self.levleInfo.levelName isEqualToString:YMLocalizedString(@"XPWishGiftCreateItemViewController4")]) { + return count >= 10; + } else if ([self.levleInfo.levelName isEqualToString:YMLocalizedString(@"XPWishGiftCreateItemViewController5")]) { + return count >= 10; + } else { + return count >= 1; + } +} + +- (int)subtractMinCount { + if ([self.levleInfo.levelName isEqualToString:YMLocalizedString(@"XPWishGiftCreateItemViewController6")]) { + return 10; + } else if ([self.levleInfo.levelName isEqualToString:YMLocalizedString(@"XPWishGiftCreateItemViewController7")]) { + return 10; + } else { + return 1; + } +} + + +- (void)handleLevleDatasource:(WishGiftLevel)levele { + NSMutableArray * array = [self.levelLists mutableCopy]; + for (int i = 0;i < self.levelLists.count;i++) { + WishGiftInfoModel * infor = [self.levelLists safeObjectAtIndex1:i]; + if (infor.level == levele) { + [array removeObject:infor]; + } + } + self.levelView.datasource = array.copy; +} + +- (void)handleGiftDatasource:(NSArray *)levels giftId:(NSInteger)giftId { + NSMutableArray * array = [levels mutableCopy]; + for (int i = 0;i < levels.count;i++) { + WishGiftInfoModel * infor = [levels safeObjectAtIndex1:i]; + if (infor.giftId == giftId) { + [array removeObject:infor]; + } + } + self.giftView.datasource = array.copy; +} + +#pragma mark - XPWishGiftListViewDelegate +- (void)xPWishGiftListView:(XPWishGiftListView *)view didSelectItem:(WishGiftInfoModel *)info { + if (view == self.levelView) { + self.levleInfo = info; + ///处理等级 + [self handleLevleDatasource:info.level]; + WishGiftInfoModel * giftInfo; + if (info.level == WishGiftLevel_Normal) { + ///处理等级对应的礼物 + if (self.levelOneGiftList.count > 0) { + giftInfo = self.levelOneGiftList.firstObject; + } + self.textField.text = @"10"; + [self handleGiftDatasource:self.levelOneGiftList giftId:giftInfo.giftId]; + } else if (info.level == WishGiftLevel_Middle) { + if (self.levelTwoGiftList.count > 0) { + giftInfo = self.levelTwoGiftList.firstObject; + } + self.textField.text = @"10"; + [self handleGiftDatasource:self.levelTwoGiftList giftId:giftInfo.giftId]; + } else { + if (self.levelThirdGiftList.count > 0) { + giftInfo = self.levelThirdGiftList.firstObject; + } + self.textField.text = @"1"; + [self handleGiftDatasource:self.levelThirdGiftList giftId:giftInfo.giftId]; + } + self.giftInfo = giftInfo; + self.number = self.textField.text.intValue; + [self.giftView configDefaultInfo:giftInfo]; + } else { + self.giftInfo = info; + [self.giftView configDefaultInfo:info]; + if (self.levleInfo.level == WishGiftLevel_Normal) { + [self handleGiftDatasource:self.levelOneGiftList giftId:info.giftId]; + } else if (self.levleInfo.level == WishGiftLevel_Middle) { + [self handleGiftDatasource:self.levelTwoGiftList giftId:info.giftId]; + } else { + [self handleGiftDatasource:self.levelThirdGiftList giftId:info.giftId]; + } + } +} + +#pragma mark - XPWishGiftProtocol +- (void)wishGiftConfigListSucces:(NSArray *)list level:(NSString *)level { + if (level.intValue == 1) { + self.levelOneGiftList = list; + if (list.count > 0 && !self.modifiGiftInfo) { + self.giftInfo = list.firstObject; + [self.giftView configDefaultInfo:self.giftInfo]; + [self handleGiftDatasource:self.levelOneGiftList giftId:self.giftInfo.giftId];; + } + if (self.modifiGiftInfo) { + [self handleGiftDatasource:self.levelThirdGiftList giftId:_modifiGiftInfo.giftId]; + } + } else if (level.intValue == 2) { + self.levelTwoGiftList = list; + if (self.modifiGiftInfo) { + [self handleGiftDatasource:self.levelTwoGiftList giftId:_modifiGiftInfo.giftId]; + } + } else { + self.levelThirdGiftList = list; + if (self.modifiGiftInfo) { + [self handleGiftDatasource:self.levelThirdGiftList giftId:_modifiGiftInfo.giftId]; + } + } +} + +- (void)createWishGiftItemSuccess { + [self disMissView]; + if(self.Dismiss) { + self.Dismiss(YES); + } +} + +#pragma mark - Event Response +- (void)subtractButtonAction:(UIButton *)sener { + if([self canSubtractMinCount:self.number]) { + self.number --; + } else { + self.number = [self subtractMinCount]; + } + self.textField.text = [NSString stringWithFormat:@"%d", self.number]; +} + +- (void)addButtonAction:(UIButton *)sener { + if([self canAddMaxCount:self.number]) { + self.number ++; + } else { + self.number = [self addMaxCount]; + } + self.textField.text = [NSString stringWithFormat:@"%d", self.number]; +} + +- (void)textFieldDidChanged:(UITextField *)textField { + self.number = textField.text.intValue; +} + +- (void)disMissView { + [self dismissViewControllerAnimated:YES completion:nil]; +} +#pragma mark - Event Response +- (void)sureButtonAction:(UIButton *)sender { + if (![self canSubtractMinCount:self.number]) { + NSString * toast = [NSString stringWithFormat:@"礼物数量范围需为%d~%d", [self subtractMinCount], [self addMaxCount]]; + [self showErrorToast:toast]; + self.textField.text = [NSString stringWithFormat:@"%d", [self subtractMinCount]]; + self.number = [self subtractMinCount]; + return; + } else if(![self canAddMaxCount:self.number]){ + NSString * toast = [NSString stringWithFormat:@"礼物数量范围需为%d~%d", [self subtractMinCount], [self addMaxCount]]; + [self showErrorToast:toast]; + self.textField.text = [NSString stringWithFormat:@"%d", [self addMaxCount]]; + self.number = [self addMaxCount]; + return; + } + NSString * itemId = self.modifiGiftInfo ? [NSString stringWithFormat:@"%ld", self.modifiGiftInfo.itemId] : @""; + [self.presenter createWishGiftItem:self.roomUid itemId:itemId giftId:[NSString stringWithFormat:@"%ld", self.giftInfo.giftId] seq:self.levleInfo.level targetNum:self.number]; +} + +#pragma mark - Getters And Setters +- (void)setModifiGiftInfo:(WishGiftInfoModel *)modifiGiftInfo { + _modifiGiftInfo = modifiGiftInfo; + if (_modifiGiftInfo) { + WishGiftInfoModel * levelInfo; + for (WishGiftInfoModel * info in self.levelLists) { + if (info.level == _modifiGiftInfo.level) { + levelInfo = info; + } + } + if (levelInfo) { + self.levleInfo = levelInfo; + self.giftInfo = _modifiGiftInfo; + [self.levelView configDefaultInfo:levelInfo]; + [self.giftView configDefaultInfo:_modifiGiftInfo]; + ///处理等级 + [self handleLevleDatasource:levelInfo.level]; + ///处理等级 + if (_modifiGiftInfo.level == WishGiftLevel_Normal) { + if (self.levelOneGiftList.count <=0) { + [self.presenter wishGiftConfigList:self.roomUid level:@"1"]; + } else { + [self handleGiftDatasource:self.levelOneGiftList giftId:_modifiGiftInfo.giftId]; + } + } else if (_modifiGiftInfo.level == WishGiftLevel_Middle) { + if (self.levelTwoGiftList.count <= 0) { + [self.presenter wishGiftConfigList:self.roomUid level:@"2"]; + } else { + [self handleGiftDatasource:self.levelTwoGiftList giftId:_modifiGiftInfo.giftId]; + } + } else { + if (self.levelThirdGiftList.count <= 0) { + [self.presenter wishGiftConfigList:self.roomUid level:@"3"]; + } else { + [self handleGiftDatasource:self.levelThirdGiftList giftId:_modifiGiftInfo.giftId]; + } + } + self.textField.text = [NSString stringWithFormat:@"%ld", _modifiGiftInfo.targetNum]; + self.number = (int)_modifiGiftInfo.targetNum; + + } else { + [self disMissView]; + } + } +} + +- (UIView *)topView { + if (!_topView) { + _topView = [[UIView alloc] init]; + _topView.backgroundColor = [UIColor clearColor]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(disMissView)]; + [_topView addGestureRecognizer:tap]; + } + return _topView; +} + + +- (UIView *)bottomView { + if (!_bottomView) { + _bottomView = [[UIView alloc] init]; + _bottomView.backgroundColor = [UIColor clearColor]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(disMissView)]; + [_bottomView addGestureRecognizer:tap]; + } + return _bottomView; +} + + +- (UIView *)backView { + if (!_backView) { + _backView = [[UIView alloc] init]; + _backView.layer.masksToBounds = YES; + _backView.layer.cornerRadius = 20; + _backView.backgroundColor = [UIColor whiteColor]; + } + return _backView; +} + +- (XPWishGiftListView *)levelView { + if(!_levelView) { + _levelView = [[XPWishGiftListView alloc] init]; + _levelView.delegate = self; + } + return _levelView; +} + +- (XPWishGiftListView *)giftView { + if(!_giftView) { + _giftView = [[XPWishGiftListView alloc] init]; + _giftView.delegate = self; + } + return _giftView; +} + +- (UIButton *)subtractButton { + if (!_subtractButton) { + _subtractButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_subtractButton setImage:[UIImage imageNamed:@"room_wish_gift_subtract"] forState:UIControlStateNormal]; + [_subtractButton setImage:[UIImage imageNamed:@"room_wish_gift_subtract"] forState:UIControlStateSelected]; + [_subtractButton addTarget:self action:@selector(subtractButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _subtractButton; +} + + +- (UIButton *)addButton { + if (!_addButton) { + _addButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_addButton setImage:[UIImage imageNamed:@"room_wish_gift_add"] forState:UIControlStateNormal]; + [_addButton setImage:[UIImage imageNamed:@"room_wish_gift_add"] forState:UIControlStateSelected]; + [_addButton addTarget:self action:@selector(addButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _addButton; +} + +- (UIStackView *)numberStackView { + if (!_numberStackView) { + _numberStackView = [[UIStackView alloc] init]; + _numberStackView.axis = UILayoutConstraintAxisHorizontal; + _numberStackView.distribution = UIStackViewDistributionFill; + _numberStackView.alignment = UIStackViewAlignmentFill; + _numberStackView.spacing = 10; + } + return _numberStackView; +} + +- (UITextField *)textField { + if (!_textField) { + _textField = [[UITextField alloc] init]; + _textField.layer.cornerRadius = 4; + _textField.layer.masksToBounds = YES; + _textField.tintColor = [DJDKMIMOMColor secondTextColor]; + _textField.textColor = [DJDKMIMOMColor mainTextColor]; + _textField.backgroundColor = [UIColor clearColor]; + _textField.font = [UIFont systemFontOfSize:10]; + _textField.clearButtonMode = UITextFieldViewModeWhileEditing; + _textField.returnKeyType = UIReturnKeySearch; + _textField.enablesReturnKeyAutomatically = YES; + _textField.text = @"10"; + _textField.textAlignment = NSTextAlignmentCenter; + _textField.keyboardType = UIKeyboardTypeNumberPad; + _textField.backgroundColor = [DJDKMIMOMColor colorWithHexString:@"#E4E4E4"]; + [_textField addTarget:self action:@selector(textFieldDidChanged:) forControlEvents:UIControlEventEditingChanged]; + } + return _textField; +} + +- (UIButton *)sureButton { + if (!_sureButton) { + _sureButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_sureButton setTitle:YMLocalizedString(@"XPWishGiftCreateItemViewController10") forState:UIControlStateNormal]; + [_sureButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + _sureButton.titleLabel.font = [UIFont systemFontOfSize:14]; + [_sureButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _sureButton.layer.masksToBounds = YES; + _sureButton.layer.cornerRadius = 10; + [_sureButton addTarget:self action:@selector(sureButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _sureButton; +} + +- (NSArray *)levelLists { + if (!_levelLists) { + WishGiftInfoModel * levelOne = [[WishGiftInfoModel alloc] init]; + levelOne.levelName = YMLocalizedString(@"XPWishGiftCreateItemViewController11"); + levelOne.level = WishGiftLevel_Normal; + + WishGiftInfoModel * levelTwo = [[WishGiftInfoModel alloc] init]; + levelTwo.levelName = YMLocalizedString(@"XPWishGiftCreateItemViewController12"); + levelTwo.level = WishGiftLevel_Middle; + + WishGiftInfoModel * levelThree = [[WishGiftInfoModel alloc] init]; + levelThree.levelName = YMLocalizedString(@"XPWishGiftCreateItemViewController13"); + levelThree.level = WishGiftLevel_High; + _levelLists = @[levelOne, levelTwo, levelThree]; + } + return _levelLists; +} + + + +@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/XPWishGiftCreateViewController.h b/YuMi/Modules/YMRoom/View/WishGift/View/XPWishGiftCreateViewController.h new file mode 100644 index 00000000..6f5e8b20 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/View/XPWishGiftCreateViewController.h @@ -0,0 +1,16 @@ +// +// YMWishGiftCreateViewController.h +// YUMI +// +// Created by YUMI on 2022/10/18. +// + +#import "MvpViewController.h" +#import "RoomHostDelegate.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPWishGiftCreateViewController : MvpViewController +- (instancetype)initWithDelegate:(id)delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/XPWishGiftCreateViewController.m b/YuMi/Modules/YMRoom/View/WishGift/View/XPWishGiftCreateViewController.m new file mode 100644 index 00000000..d2e167d5 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/View/XPWishGiftCreateViewController.m @@ -0,0 +1,333 @@ +// +// YMWishGiftCreateViewController.m +// YUMI +// +// Created by YUMI on 2022/10/18. +// + +#import "XPWishGiftCreateViewController.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "TTPopup.h" +#import "YUMIMacroUitls.h" +#import "NSArray+Safe.h" +///Model +#import "WishGiftInfoModel.h" +#import "RoomInfoModel.h" +///View +#import "XPWishGiftTableViewCell.h" +#import "XPWishGiftHistoryViewController.h" +#import "XPWishGiftCreateItemViewController.h" +///P +#import "XPWishGiftPresenter.h" +#import "XPWishGiftProtocol.h" +@interface XPWishGiftCreateViewController () +///设置心愿 +@property (nonatomic,strong) UILabel *configLabel; +///清除心愿 +@property (nonatomic,strong) UIButton *clearWishButton; +///添加心愿 +@property (nonatomic,strong) UIButton *addWishButton; +///列表 +@property (nonatomic,strong) UITableView *tableView; +///创建 +@property (nonatomic,strong) UIButton *createButton; +///数据源 +@property (nonatomic,strong) NSArray *datasource; +///房主的uid +@property (nonatomic,strong) NSString *roomUid; +///代理 +@property (nonatomic,weak) id delegate; +///初级礼物 +@property (nonatomic,strong) NSArray *levelOneGiftList; +///中级礼物 +@property (nonatomic,strong) NSArray *levelTwoGiftList; +///高级礼物 +@property (nonatomic,strong) NSArray *levelThirdGiftList; +@end + +@implementation XPWishGiftCreateViewController + +- (__kindof id)createPresenter { + return [[XPWishGiftPresenter alloc] init]; +} +- (instancetype)initWithDelegate:(id)delegate{ + if (self = [super init]) { + self.delegate = delegate; + self.roomUid = [NSString stringWithFormat:@"%ld", [self.delegate getRoomInfo].uid]; + [self initWishGiftList]; + [self initWishLevleGiftList]; + RoomInfoModel * roomInfo = [self.delegate getRoomInfo]; + if (roomInfo.hasOpenWishGift) { + self.addWishButton.hidden = YES; + self.clearWishButton.hidden = YES; + [self.createButton setTitle:YMLocalizedString(@"XPWishGiftCreateViewController0") forState:UIControlStateNormal]; + self.createButton.enabled = NO; + } + } + return self; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initWishGiftList { + [self.presenter wishGiftList:self.roomUid]; +} + +- (void)initWishLevleGiftList { + [self.presenter wishGiftConfigList:self.roomUid level:@"1"]; + [self.presenter wishGiftConfigList:self.roomUid level:@"2"]; + [self.presenter wishGiftConfigList:self.roomUid level:@"3"]; +} + +- (void)initSubViews { + self.title = YMLocalizedString(@"XPWishGiftCreateViewController1"); + [self.view addSubview:self.configLabel]; + [self.view addSubview:self.clearWishButton]; + [self.view addSubview:self.addWishButton]; + [self.view addSubview:self.tableView]; + [self.view addSubview:self.createButton]; + [self addNavigationItemWithTitles:@[YMLocalizedString(@"XPWishGiftCreateViewController2")] titleColor:[DJDKMIMOMColor secondTextColor] isLeft:NO target:self action:@selector(rightButtonAction:) tags:nil]; +} + +- (void)initSubViewConstraints { + [self.configLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.view).offset(24); + make.top.mas_equalTo(self.view).offset(14); + }]; + + [self.clearWishButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(60, 20)); + make.centerY.mas_equalTo(self.configLabel); + make.right.mas_equalTo(self.addWishButton.mas_left).offset(-10); + }]; + + [self.addWishButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.equalTo(self.configLabel); + make.right.mas_equalTo(self.view).offset(-18); + make.size.mas_equalTo(CGSizeMake(60, 20)); + }]; + + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view).inset(15); + make.height.mas_equalTo(135); + make.top.mas_equalTo(self.configLabel.mas_bottom).offset(13); + }]; + + [self.createButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view).inset(80); + make.height.mas_equalTo(37); + make.top.mas_equalTo(self.tableView.mas_bottom).offset(48); + }]; +} +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + XPWishGiftTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPWishGiftTableViewCell class])]; + if (cell == nil) { + cell = [[XPWishGiftTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPWishGiftTableViewCell class])]; + } + WishGiftInfoModel *giftInfo = [self.datasource safeObjectAtIndex1:indexPath.row]; + giftInfo.row = indexPath.row + 1; + cell.giftInfo = giftInfo; + cell.delegate = self; + RoomInfoModel * roomInfo = [self.delegate getRoomInfo]; + cell.isHiddenEdit = roomInfo.hasOpenWishGift; + return cell; +} + +#pragma mark - XPWishGiftTableViewCellDelegate +- (void)xPWishGiftTableViewCell:(XPWishGiftTableViewCell *)view didClearWishGift:(WishGiftInfoModel *)info { + if (info) { + TTAlertConfig * config = [[TTAlertConfig alloc] init]; + config.title = @""; + config.message = @"确认删除该条数据?"; + [TTPopup alertWithConfig:config confirmHandler:^{ + [self.presenter deleteWishGiftItem:self.roomUid itemId:[NSString stringWithFormat:@"%ld", info.itemId]]; + } cancelHandler:^{ + + }]; + } +} + +- (void)xPWishGiftTableViewCell:(XPWishGiftTableViewCell *)view didUpdateWishGift:(WishGiftInfoModel *)info { + XPWishGiftCreateItemViewController * createItemVC = [[XPWishGiftCreateItemViewController alloc] init]; + createItemVC.roomUid = self.roomUid; + createItemVC.levelOneGiftList = self.levelOneGiftList; + createItemVC.levelTwoGiftList = self.levelTwoGiftList; + createItemVC.levelThirdGiftList = self.levelThirdGiftList; + createItemVC.modifiGiftInfo = info; + @kWeakify(self); + createItemVC.Dismiss = ^(BOOL finish) { + @kStrongify(self); + [self initWishGiftList]; + }; + createItemVC.modalPresentationStyle = UIModalPresentationOverFullScreen; + [self.navigationController presentViewController:createItemVC animated:YES completion:nil]; +} + +#pragma mark - XPWishGiftProtocol +- (void)addWishGiftSuccess { + [self.navigationController popViewControllerAnimated:YES]; +} + +- (void)getWishGiftListSuccess:(NSArray *)list { + self.datasource = list; + [self.tableView reloadData]; +} + +- (void)deleteWishGiftItemSuccess { + [self initWishGiftList]; +} + +- (void)wishGiftConfigListSucces:(NSArray *)list level:(NSString *)level { + if (level.intValue == 1) { + self.levelOneGiftList = list; + } else if (level.intValue == 2) { + self.levelTwoGiftList = list; + } else { + self.levelThirdGiftList = list; + } +} + +#pragma mark - Event Response +- (void)rightButtonAction:(UIButton *)sender { + XPWishGiftHistoryViewController * historyVC = [[XPWishGiftHistoryViewController alloc] init]; + historyVC.roomUid = self.roomUid; + [self.navigationController pushViewController:historyVC animated:YES]; +} + +- (void)clearButtonAction:(UIButton *)sender { + if (self.datasource.count > 0) { + TTAlertConfig * config = [[TTAlertConfig alloc] init]; + config.title = @""; + config.message = @"确认清空当前数据?"; + [TTPopup alertWithConfig:config confirmHandler:^{ + [self.presenter deleteWishGiftItem:self.roomUid itemId:@"-1"]; + } cancelHandler:^{ + + }]; + } else { + [self showErrorToast:YMLocalizedString(@"XPWishGiftCreateViewController5")]; + } +} + +- (void)addWishButtonAction:(UIButton *)sender { + if (self.datasource.count == 3) { + [self showErrorToast:@"最多只可添加三个心愿呦~"]; + return; + } + XPWishGiftCreateItemViewController * createItemVC = [[XPWishGiftCreateItemViewController alloc] init]; + createItemVC.levelOneGiftList = self.levelOneGiftList; + createItemVC.levelTwoGiftList = self.levelTwoGiftList; + createItemVC.levelThirdGiftList = self.levelThirdGiftList; + createItemVC.roomUid = self.roomUid; + @kWeakify(self); + createItemVC.Dismiss = ^(BOOL finish) { + @kStrongify(self); + [self initWishGiftList]; + }; + createItemVC.modalPresentationStyle = UIModalPresentationOverFullScreen; + [self.navigationController presentViewController:createItemVC animated:YES completion:nil]; +} + +- (void)createButtonAction:(UIButton *)sender { + if (self.datasource.count > 0) { + TTAlertConfig * config = [[TTAlertConfig alloc] init]; + config.title = @""; + config.message = YMLocalizedString(@"XPWishGiftCreateViewController7"); + [TTPopup alertWithConfig:config confirmHandler:^{ + [self.presenter addWishGift:self.roomUid]; + } cancelHandler:^{ + + }]; + } else { + [self showErrorToast:YMLocalizedString(@"XPWishGiftCreateViewController8")]; + } +} + +#pragma mark - Getters And Setters +- (UILabel *)configLabel { + if (!_configLabel) { + _configLabel = [[UILabel alloc] init]; + _configLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; + _configLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _configLabel.text = YMLocalizedString(@"XPWishGiftCreateViewController9"); + } + return _configLabel; +} + +- (UIButton *)clearWishButton { + if (!_clearWishButton) { + _clearWishButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_clearWishButton setTitle:YMLocalizedString(@"XPWishGiftCreateViewController10") forState:UIControlStateNormal]; + [_clearWishButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _clearWishButton.titleLabel.font = [UIFont systemFontOfSize:10]; + _clearWishButton.backgroundColor = [DJDKMIMOMColor colorWithHexString:@"#C7DAEA"]; + _clearWishButton.layer.masksToBounds = YES; + _clearWishButton.layer.cornerRadius = 10; + [_clearWishButton addTarget:self action:@selector(clearButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _clearWishButton; +} + +- (UIButton *)addWishButton { + if (!_addWishButton) { + _addWishButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_addWishButton setTitle:YMLocalizedString(@"XPWishGiftCreateViewController11") forState:UIControlStateNormal]; + [_addWishButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _addWishButton.titleLabel.font = [UIFont systemFontOfSize:10]; + [_addWishButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _addWishButton.layer.masksToBounds = YES; + _addWishButton.layer.cornerRadius = 10; + [_addWishButton addTarget:self action:@selector(addWishButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _addWishButton; +} + + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor whiteColor]; + _tableView.layer.masksToBounds = YES; + _tableView.layer.cornerRadius = 8; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPWishGiftTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPWishGiftTableViewCell class])]; + } + return _tableView; +} + +- (UIButton *)createButton { + if (!_createButton) { + _createButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_createButton setTitle:YMLocalizedString(@"XPWishGiftCreateViewController12") forState:UIControlStateNormal]; + [_createButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _createButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_createButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _createButton.layer.masksToBounds = YES; + _createButton.layer.cornerRadius = 37 / 2; + [_createButton addTarget:self action:@selector(createButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _createButton; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/XPWishGiftHistoryViewController.h b/YuMi/Modules/YMRoom/View/WishGift/View/XPWishGiftHistoryViewController.h new file mode 100644 index 00000000..7a2025e4 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/View/XPWishGiftHistoryViewController.h @@ -0,0 +1,16 @@ +// +// YMWishGiftHistoryViewController.h +// YUMI +// +// Created by YUMI on 2022/10/18. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPWishGiftHistoryViewController : MvpViewController +@property (nonatomic,strong) NSString *roomUid; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/XPWishGiftHistoryViewController.m b/YuMi/Modules/YMRoom/View/WishGift/View/XPWishGiftHistoryViewController.m new file mode 100644 index 00000000..386d6194 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/View/XPWishGiftHistoryViewController.m @@ -0,0 +1,162 @@ +// +// YMWishGiftHistoryViewController.m +// YUMI +// +// Created by YUMI on 2022/10/18. +// + +#import "XPWishGiftHistoryViewController.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "PLTimeUtil.h" +#import "NSArray+Safe.h" +///Model +#import "WishGiftHistoryModel.h" +///View +#import "XPWishGiftHistoryTableViewCell.h" +#import "XPWishGiftEmptyTableViewCell.h" +#import "XPWishGiftSectionView.h" +///P +#import "XPWishGiftPresenter.h" +#import "XPWishGiftProtocol.h" + +@interface XPWishGiftHistoryViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///数据源 +@property (nonatomic,strong) NSArray *datasource; +@end + +@implementation XPWishGiftHistoryViewController + +- (__kindof id)createPresenter { + return [[XPWishGiftPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initWishGiftHistoryList]; + [self initSubViews]; + [self initSubViewConstraints]; +} + + +- (void)initSubViews { + self.title = YMLocalizedString(@"XPWishGiftHistoryViewController0"); + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.view); + }]; +} + +- (void)initWishGiftHistoryList { + [self.presenter wishGiftHistroyList:self.roomUid]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return self.datasource.count > 0 ? self.datasource.count : 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + return 44; + } + return (KScreenHeight - kNavigationHeight); +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + if (self.datasource.count > 0) { + WishGiftHistoryModel *info = [self.datasource safeObjectAtIndex1:section]; + return info.gifts.count; + } + return 0; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.datasource.count > 0) { + XPWishGiftHistoryTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPWishGiftHistoryTableViewCell class])]; + if (cell == nil) { + cell = [[XPWishGiftHistoryTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPWishGiftHistoryTableViewCell class])]; + } + WishGiftHistoryModel *historyInfo = [self.datasource safeObjectAtIndex1:indexPath.section]; + WishGiftInfoModel * info= [historyInfo.gifts safeObjectAtIndex1:indexPath.row]; + info.row = (indexPath.row + 1); + cell.giftInfo = info; + if (indexPath.row == 0) { + cell.isTop = YES; + } else { + cell.isTop = NO; + } + + if (indexPath.row == historyInfo.gifts.count -1) { + cell.isBottom = YES; + } else { + cell.isBottom = false; + } + return cell; + } + + XPWishGiftEmptyTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPWishGiftEmptyTableViewCell class])]; + if (cell == nil) { + cell = [[XPWishGiftEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPWishGiftEmptyTableViewCell class])]; + } + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { + return 0.01; +} + +- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { + return [[UIView alloc] init];; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { + return self.datasource.count > 0 ? 45 : 0.01; +} + +- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { + if (self.datasource.count > 0) { + XPWishGiftSectionView * view = [[XPWishGiftSectionView alloc] init]; + view.frame = CGRectMake(0, 0, KScreenWidth, 45); + WishGiftHistoryModel *historyInfo = [self.datasource safeObjectAtIndex1:section]; + view.title = historyInfo.createDate; + return view; + } + return [UIView new]; +} + +#pragma mark - XPWishGiftProtocol +///历史心愿成功 +- (void)wishGiftHistroyListSuccess:(NSArray *)list { + self.datasource = list; + [self.tableView reloadData]; +} + +#pragma mark - Getters And Setters +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPWishGiftHistoryTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPWishGiftHistoryTableViewCell class])]; + [self.tableView registerClass:[XPWishGiftEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPWishGiftEmptyTableViewCell class])]; + } + return _tableView; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/XPWishGiftViewController.h b/YuMi/Modules/YMRoom/View/WishGift/View/XPWishGiftViewController.h new file mode 100644 index 00000000..ae39d4dc --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/View/XPWishGiftViewController.h @@ -0,0 +1,29 @@ +// +// YMWishGIftViewController.h +// YUMI +// +// Created by YUMI on 2022/10/18. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPWishGiftViewControllerDelegate + +- (void)xPWishGiftViewControllerSendClick:(NSString *)giftId; + +@end + +@interface XPWishGiftViewController : MvpViewController + +- (instancetype)initWithRoomUid:(NSString *)roomUid; + +///代理 +@property (nonatomic,weak) id delegate; + +- (void)getWishGiftListSuccess:(NSArray *)list; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/XPWishGiftViewController.m b/YuMi/Modules/YMRoom/View/WishGift/View/XPWishGiftViewController.m new file mode 100644 index 00000000..259b595d --- /dev/null +++ b/YuMi/Modules/YMRoom/View/WishGift/View/XPWishGiftViewController.m @@ -0,0 +1,379 @@ +// +// YMWishGIftViewController.m +// YUMI +// +// Created by YUMI on 2022/10/18. +// + +#import "XPWishGiftViewController.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "YUMIMacroUitls.h" +#import "StatisticsServiceHelper.h" +#import "NSArray+Safe.h" +///View +#import "XPWishGiftInfoView.h" +///Model +#import "WishGiftInfoModel.h" +#import "WishGiftUserModel.h" +///P +#import "XPWishGiftPresenter.h" +#import "XPWishGiftProtocol.h" +@interface XPWishGiftViewController () +///顶部的view +@property (nonatomic,strong) UIView *topView; +///背景 +@property (nonatomic,strong) UIImageView *backImageView; +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///提示 +@property (nonatomic,strong) UILabel *tipsLbel; +///分割线 +@property (nonatomic,strong) UIView *lineView; +///头像的容器 +@property (nonatomic,strong) UIStackView *userStackView; +///第一个头像 +@property (nonatomic,strong) NetImageView *firstAvatarImageView; +///第二个头像 +@property (nonatomic,strong) NetImageView *secondAvatarImageView; +///第三个头像 +@property (nonatomic,strong) NetImageView *thirdAvatarImageView; +@property (nonatomic,strong) NSArray * avatarViews; +///贡献的人数 +@property (nonatomic,strong) UILabel *assistNumLabel; +///礼物 +@property (nonatomic,strong) UIStackView *giftStackView; +///第一个 +@property (nonatomic,strong) XPWishGiftInfoView *firstView; +///第二个 +@property (nonatomic,strong) XPWishGiftInfoView *secondView; +///第三个 +@property (nonatomic,strong) XPWishGiftInfoView *thirdView; +///礼物数组 +@property (nonatomic,strong) NSArray *giftViews; +///房主的uid +@property (nonatomic,strong) NSString *roomUid; +@end + +@implementation XPWishGiftViewController + +- (instancetype)initWithRoomUid:(NSString *)roomUid { + if (self = [super init]) { + self.roomUid = roomUid; + [self initDefaultData]; + } + return self; +} + +- (__kindof id)createPresenter { + return [[XPWishGiftPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +- (void)initDefaultData { + [self.presenter wishGiftAssistUserList:self.roomUid]; + [self.presenter wishGiftList:self.roomUid]; +} + +- (void)initSubViews { + self.view.backgroundColor = [UIColor clearColor]; + [self.view addSubview:self.topView]; + [self.view addSubview:self.backImageView]; + [self.backImageView addSubview:self.titleLabel]; + [self.backImageView addSubview:self.tipsLbel]; + [self.backImageView addSubview:self.lineView]; + [self.backImageView addSubview:self.userStackView]; + [self.backImageView addSubview:self.assistNumLabel]; + [self.backImageView addSubview:self.giftStackView]; + + [self.userStackView addArrangedSubview:self.firstAvatarImageView]; + [self.userStackView addArrangedSubview:self.secondAvatarImageView]; + [self.userStackView addArrangedSubview:self.thirdAvatarImageView]; + + [self.giftStackView addArrangedSubview:self.firstView]; + [self.giftStackView addArrangedSubview:self.secondView]; + [self.giftStackView addArrangedSubview:self.thirdView]; + self.giftViews = @[self.firstView, self.secondView, self.thirdView]; +} + +- (void)initSubViewConstraints { + [self.topView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.right.equalTo(self.view); + make.bottom.mas_equalTo(self.backImageView.mas_top); + }]; + + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.view); + make.height.mas_equalTo(283 + kSafeAreaBottomHeight); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.backImageView); + make.top.mas_equalTo(self.backImageView).offset(16); + }]; + + [self.tipsLbel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.backImageView); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(8); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backImageView); + make.top.mas_equalTo(self.tipsLbel.mas_bottom).offset(12); + make.height.mas_equalTo(0.5); + }]; + + [self.userStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(28); + make.left.mas_equalTo(self.backImageView).offset(16); + make.top.mas_equalTo(self.lineView.mas_bottom).offset(10); + }]; + + [self.firstAvatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(28); + }]; + + [self.secondAvatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(28); + }]; + + [self.thirdAvatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(28); + }]; + + [self.assistNumLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backImageView).inset(15); + make.centerY.mas_equalTo(self.userStackView); + }]; + + [self.giftStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.backImageView); + make.height.mas_equalTo(165); + make.bottom.mas_equalTo(self.backImageView).offset(-9 -kSafeAreaBottomHeight); + }]; + + [self.firstView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(106); + }]; + + [self.secondView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(106); + }]; + + [self.thirdView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(106); + }]; +} + +#pragma mark - XPWishGiftInfoViewDelegate +- (void)xPWishGiftInfoView:(XPWishGiftInfoView *)view didClickSender:(WishGiftInfoModel *)info { + [self disMissView]; + if (info.giftId > 0 && self.delegate && [self.delegate respondsToSelector:@selector(xPWishGiftViewControllerSendClick:)]) { + NSString * giftId = [NSString stringWithFormat:@"%ld", info.giftId]; + [self.delegate xPWishGiftViewControllerSendClick:giftId]; + } + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventRoom_wishlist_panel_click eventAttributes:@{@"giftName" : info.giftName.length > 0 ? info.giftName : @""}]; +} + +#pragma mark - XPWishGiftProtocol +- (void)getWishGiftAssistUserListSuccess:(NSArray *)list { + for (int i = 0; i < self.userStackView.arrangedSubviews.count; i++) { + NetImageView * imageView = [self.userStackView.subviews safeObjectAtIndex1:i]; + if (i < list.count) { + WishGiftUserModel * userInfo = [list safeObjectAtIndex1:i]; + imageView.hidden = NO; + imageView.imageUrl = userInfo.avatar; + }else { + imageView.hidden = YES; + } + } + + NSString * number = [NSString stringWithFormat:@"%ld", list.count]; + if (list.count <= 0) { + NSString * title = YMLocalizedString(@"XPWishGiftViewController0"); + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:[DJDKMIMOMColor textThirdColor]}]; + self.assistNumLabel.attributedText = attribute; + self.assistNumLabel.textAlignment = NSTextAlignmentCenter; + } else { + NSString * title = [NSString stringWithFormat:@"%@%@", number, YMLocalizedString(@"XPWishGiftViewController1")]; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:[DJDKMIMOMColor textThirdColor]}]; + [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor colorWithHexString:@"#FFC300"] range:[title rangeOfString:number]]; + self.assistNumLabel.attributedText = attribute; + self.assistNumLabel.textAlignment = NSTextAlignmentRight; + } + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventRoom_wishlist_panel_show]; +} + +- (void)getWishGiftListSuccess:(NSArray *)list { + int finishNumber = 0; + for (WishGiftInfoModel * info in list) { + if (info.actualNum >= info.targetNum) { + finishNumber ++; + } + } + + for (int i = 0; i < self.giftViews.count; i++) { + XPWishGiftInfoView * view = [self.giftViews safeObjectAtIndex1:i]; + if(i < list.count) { + WishGiftInfoModel * info = [list safeObjectAtIndex1:i]; + view.giftInfo = info; + view.hidden = NO; + } else { + view.hidden = YES; + } + } + self.titleLabel.text = [NSString stringWithFormat:@"今日心愿礼物%d/%ld",finishNumber,list.count]; +} + +#pragma mark - Event Response +- (void)disMissView { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventRoom_wishlist_panel_close_click]; + [self dismissViewControllerAnimated:YES completion:nil]; +} + +#pragma mark - Getters And Setters +- (UIView *)topView { + if (!_topView) { + _topView = [[UIView alloc] init]; + _topView.backgroundColor = [UIColor clearColor]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(disMissView)]; + [_topView addGestureRecognizer:tap]; + } + return _topView; +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.image = [UIImage imageNamed:@"room_wish_gift_panel_bg"]; + } + return _backImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _titleLabel.textColor = [UIColor whiteColor]; + } + return _titleLabel; +} + +- (UILabel *)tipsLbel { + if (!_tipsLbel) { + _tipsLbel = [[UILabel alloc] init]; + _tipsLbel.font = [UIFont systemFontOfSize:10]; + _tipsLbel.text = @"-当日设置的心愿,会在次日0点失效-"; + _tipsLbel.textColor = [DJDKMIMOMColor textThirdColor]; + } + return _tipsLbel; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [UIColor colorWithWhite:1 alpha:0.1]; + } + return _lineView; +} + +- (UIStackView *)userStackView { + if (!_userStackView) { + _userStackView = [[UIStackView alloc] init]; + _userStackView.axis = UILayoutConstraintAxisHorizontal; + _userStackView.distribution = UIStackViewDistributionFill; + _userStackView.alignment = UIStackViewAlignmentCenter; + _userStackView.spacing = 4; + } + return _userStackView; +} + +- (NetImageView *)firstAvatarImageView { + if (!_firstAvatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _firstAvatarImageView = [[NetImageView alloc] initWithConfig:config]; + _firstAvatarImageView.layer.masksToBounds = YES; + _firstAvatarImageView.layer.cornerRadius = 28/2; + } + return _firstAvatarImageView; +} + +- (NetImageView *)secondAvatarImageView { + if (!_secondAvatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _secondAvatarImageView = [[NetImageView alloc] initWithConfig:config]; + _secondAvatarImageView.layer.masksToBounds = YES; + _secondAvatarImageView.layer.cornerRadius = 28/2; + } + return _secondAvatarImageView; +} + +- (NetImageView *)thirdAvatarImageView { + if (!_thirdAvatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _thirdAvatarImageView = [[NetImageView alloc] initWithConfig:config]; + _thirdAvatarImageView.layer.masksToBounds = YES; + _thirdAvatarImageView.layer.cornerRadius = 28/2; + } + return _thirdAvatarImageView; +} + +- (UILabel *)assistNumLabel { + if (!_assistNumLabel) { + _assistNumLabel = [[UILabel alloc] init]; + } + return _assistNumLabel; +} + +- (UIStackView *)giftStackView { + if (!_giftStackView) { + _giftStackView = [[UIStackView alloc] init]; + _giftStackView.axis = UILayoutConstraintAxisHorizontal; + _giftStackView.distribution = UIStackViewDistributionFill; + _giftStackView.alignment = UIStackViewAlignmentFill; + _giftStackView.spacing = 12; + } + return _giftStackView; +} + +- (XPWishGiftInfoView *)firstView { + if(!_firstView) { + _firstView = [[XPWishGiftInfoView alloc] init]; + _firstView.delegate = self; + } + return _firstView; +} + +- (XPWishGiftInfoView *)secondView { + if(!_secondView) { + _secondView = [[XPWishGiftInfoView alloc] init]; + _secondView.delegate = self; + } + return _secondView; +} + +- (XPWishGiftInfoView *)thirdView { + if(!_thirdView) { + _thirdView = [[XPWishGiftInfoView alloc] init]; + _thirdView.delegate = self; + } + return _thirdView; +} + + +@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/YUMIDesirePresentCreateProvisionRegardGovernancer.h b/YuMi/Modules/YMRoom/View/WishGift/View/YUMIDesirePresentCreateProvisionRegardGovernancer.h deleted file mode 100644 index c6014a9a..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/View/YUMIDesirePresentCreateProvisionRegardGovernancer.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// YMWishGiftCreateItemViewController.h -// YUMI -// -// Created by YUMI on 2022/10/18. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN -@class DesirePresentAbstractMatrix; -@interface YUMIDesirePresentCreateProvisionRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,strong) NSArray *prototypeSolePresentStatement; -@property (nonatomic,strong) NSArray *prototypeTwoPresentStatement; -@property (nonatomic,strong) NSArray *prototypeTertiusPresentStatement; -@property (nonatomic,strong) NSString *roomUid; - -@property (nonatomic,strong) DesirePresentAbstractMatrix *modifiPresentAbstract; - -@property (nonatomic,copy) void(^Dismiss)(BOOL finish); -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/YUMIDesirePresentCreateProvisionRegardGovernancer.m b/YuMi/Modules/YMRoom/View/WishGift/View/YUMIDesirePresentCreateProvisionRegardGovernancer.m deleted file mode 100644 index 501ec2be..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/View/YUMIDesirePresentCreateProvisionRegardGovernancer.m +++ /dev/null @@ -1,504 +0,0 @@ -// -// YMWishGiftCreateItemViewController.m -// YUMI -// -// Created by YUMI on 2022/10/18. -// - -#import "YUMIDesirePresentCreateProvisionRegardGovernancer.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "NSArray+Safe.h" -#import "YUMIDesirePresentStatementRegard.h" -#import "DesirePresentAbstractMatrix.h" -#import "YUMIDesirePresentExternalizer.h" -#import "FBCDesirePresentCeremony.h" - -@interface YUMIDesirePresentCreateProvisionRegardGovernancer () -@property (nonatomic,strong) UIView *apexRegard; -@property (nonatomic,strong) UIView * bottomView; -@property (nonatomic,strong) UIView *encourageRegard; -@property (nonatomic,strong) YUMIDesirePresentStatementRegard *prototypeRegard; -@property (nonatomic,strong) YUMIDesirePresentStatementRegard *presentRegard; -@property (nonatomic,strong) UIStackView *digitalHierarchyRegard; -@property (nonatomic,strong) UIButton *subtractBtuton; -@property (nonatomic,strong) UITextField *essayUniverse; -@property (nonatomic,strong) UIButton *accelerateBtuton; -@property (nonatomic,strong) UIButton *sureBtuton; -@property (nonatomic,assign) int number; -@property (nonatomic,strong) NSArray *prototypeStatements; -@property (nonatomic,strong) DesirePresentAbstractMatrix *prottypeAbstract; -@property (nonatomic,strong) DesirePresentAbstractMatrix *giftInfo; -@end - -@implementation YUMIDesirePresentCreateProvisionRegardGovernancer - -- (__kindof id)producePresimport { - return [[YUMIDesirePresentExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - self.view.backgroundColor = UIColorRGBAlpha(0x000000, 0.5); - [self initSequencirePresentCongifSttowardsement]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - - -#pragma mark - Private Method -- (void)initSequencirePresentCongifSttowardsement { - if (self.modifiPresentAbstract == nil) { - self.number = 10; - self.prottypeAbstract = self.prototypeStatements.firstObject; - [self shankProttypeTowardsoloudspeakersource:self.prottypeAbstract.level]; - [self.prototypeRegard prohibitipositionDeficiencyAbstract:self.prottypeAbstract]; - if (self.prototypeSolePresentStatement.count > 0) { - self.giftInfo = self.prototypeSolePresentStatement.firstObject; - [self.presentRegard prohibitipositionDeficiencyAbstract:self.giftInfo]; - [self shankPresentTowardsoloudspeakersource:self.prototypeSolePresentStatement giftId:self.giftInfo.giftId];; - } - } - [self chamberSequencirePresentPrototypeSttowardsement]; -} - -- (void)chamberSequencirePresentPrototypeSttowardsement { - if (self.prototypeSolePresentStatement.count <= 0) { - [self.presimport desirePresentDispositionSttowardsement:self.roomUid level:@"1"]; - } else if(self.prototypeTwoPresentStatement.count <= 0) { - [self.presimport desirePresentDispositionSttowardsement:self.roomUid level:@"2"]; - } else if(self.prototypeTertiusPresentStatement.count <= 0) { - [self.presimport desirePresentDispositionSttowardsement:self.roomUid level:@"3"]; - } -} - -- (void)initSubViews { - [self.view addSubview:self.apexRegard]; - [self.view addSubview:self.encourageRegard]; - [self.view addSubview:self.bottomView]; - - [self.encourageRegard addSubview:self.sureBtuton]; - [self.encourageRegard addSubview:self.digitalHierarchyRegard]; - [self.encourageRegard addSubview:self.presentRegard]; - [self.encourageRegard addSubview:self.prototypeRegard]; - - [self.digitalHierarchyRegard addArrangedSubview:self.subtractBtuton]; - [self.digitalHierarchyRegard addArrangedSubview:self.essayUniverse]; - [self.digitalHierarchyRegard addArrangedSubview:self.accelerateBtuton]; -} - -- (void)initChildLyRestrictions { - [self.apexRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.top.left.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.encourageRegard.mas_top); - }]; - - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view).inset(38); - make.height.mas_equalTo(245); - make.centerY.mas_equalTo(self.view); - }]; - - [self.bottomView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.top.mas_equalTo(self.encourageRegard.mas_bottom); - }]; - - [self.prototypeRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageRegard).inset(30); - make.top.mas_equalTo(self.encourageRegard).offset(36); - }]; - - - [self.presentRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageRegard).inset(30); - make.top.mas_equalTo(self.encourageRegard).offset(84); - }]; - - [self.digitalHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.prototypeRegard); - make.height.mas_equalTo(36); - make.bottom.mas_equalTo(self.sureBtuton.mas_top).offset(-20); - }]; - - [self.subtractBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(36); - }]; - - [self.accelerateBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(36); - }]; - - [self.sureBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(129, 37)); - make.centerX.mas_equalTo(self.encourageRegard); - make.bottom.mas_equalTo(self.encourageRegard.mas_bottom).offset(-20); - }]; -} - -- (int)accelertowardseLargestComputtowardsion { - if ([self.prottypeAbstract.levelName isEqualToString:YMLocalizedString(@"YUMI_Wish_Gift_Create_Item_View_Controller_0")]) { - return 999; - } else if ([self.prottypeAbstract.levelName isEqualToString:YMLocalizedString(@"YUMI_Wish_Gift_Create_Item_View_Controller_1")]) { - return 99; - } else { - return 30; - } -} - -- (BOOL)canAccelertowardseLargestComputtowardsion:(int)count { - if ([self.prottypeAbstract.levelName isEqualToString:YMLocalizedString(@"YUMI_Wish_Gift_Create_Item_View_Controller_2")]) { - return count <= 999; - } else if ([self.prottypeAbstract.levelName isEqualToString:YMLocalizedString(@"YUMI_Wish_Gift_Create_Item_View_Controller_3")]) { - return count <= 99; - } else { - return count <= 30; - } -} - -- (BOOL)canMetrotractMinComputtowardsion:(int)count { - if ([self.prottypeAbstract.levelName isEqualToString:YMLocalizedString(@"YUMI_Wish_Gift_Create_Item_View_Controller_4")]) { - return count >= 10; - } else if ([self.prottypeAbstract.levelName isEqualToString:YMLocalizedString(@"YUMI_Wish_Gift_Create_Item_View_Controller_5")]) { - return count >= 10; - } else { - return count >= 1; - } -} - -- (int)subtractMinComputtowardsion { - if ([self.prottypeAbstract.levelName isEqualToString:YMLocalizedString(@"YUMI_Wish_Gift_Create_Item_View_Controller_6")]) { - return 10; - } else if ([self.prottypeAbstract.levelName isEqualToString:YMLocalizedString(@"YUMI_Wish_Gift_Create_Item_View_Controller_7")]) { - return 10; - } else { - return 1; - } -} - - -- (void)shankProttypeTowardsoloudspeakersource:(WishPresentPrototype)levele { - NSMutableArray * array = [self.prototypeStatements mutableCopy]; - for (int i = 0;i < self.prototypeStatements.count;i++) { - DesirePresentAbstractMatrix * infor = [self.prototypeStatements secureGroalTowardsIndictowardsrix1:i]; - if (infor.level == levele) { - [array removeObject:infor]; - } - } - self.prototypeRegard.datasource = array.copy; -} - -- (void)shankPresentTowardsoloudspeakersource:(NSArray *)levels giftId:(NSInteger)giftId { - NSMutableArray * array = [levels mutableCopy]; - for (int i = 0;i < levels.count;i++) { - DesirePresentAbstractMatrix * infor = [levels secureGroalTowardsIndictowardsrix1:i]; - if (infor.giftId == giftId) { - [array removeObject:infor]; - } - } - self.presentRegard.datasource = array.copy; -} - -#pragma mark - FBCDesirePresentStatementRegardRepresendtation -- (void)fBCHopePresentSttowardsementRegard:(YUMIDesirePresentStatementRegard *)view didSelectItem:(DesirePresentAbstractMatrix *)info { - if (view == self.prototypeRegard) { - self.prottypeAbstract = info; - - [self shankProttypeTowardsoloudspeakersource:info.level]; - DesirePresentAbstractMatrix * giftInfo; - if (info.level == WishPresentPrototype_Normal) { - - if (self.prototypeSolePresentStatement.count > 0) { - giftInfo = self.prototypeSolePresentStatement.firstObject; - } - self.essayUniverse.text = @"10"; - [self shankPresentTowardsoloudspeakersource:self.prototypeSolePresentStatement giftId:giftInfo.giftId]; - } else if (info.level == WishPresentPrototype_Middle) { - if (self.prototypeTwoPresentStatement.count > 0) { - giftInfo = self.prototypeTwoPresentStatement.firstObject; - } - self.essayUniverse.text = @"10"; - [self shankPresentTowardsoloudspeakersource:self.prototypeTwoPresentStatement giftId:giftInfo.giftId]; - } else { - if (self.prototypeTertiusPresentStatement.count > 0) { - giftInfo = self.prototypeTertiusPresentStatement.firstObject; - } - self.essayUniverse.text = @"1"; - [self shankPresentTowardsoloudspeakersource:self.prototypeTertiusPresentStatement giftId:giftInfo.giftId]; - } - self.giftInfo = giftInfo; - self.number = self.essayUniverse.text.intValue; - [self.presentRegard prohibitipositionDeficiencyAbstract:giftInfo]; - } else { - self.giftInfo = info; - [self.presentRegard prohibitipositionDeficiencyAbstract:info]; - if (self.prottypeAbstract.level == WishPresentPrototype_Normal) { - [self shankPresentTowardsoloudspeakersource:self.prototypeSolePresentStatement giftId:info.giftId]; - } else if (self.prottypeAbstract.level == WishPresentPrototype_Middle) { - [self shankPresentTowardsoloudspeakersource:self.prototypeTwoPresentStatement giftId:info.giftId]; - } else { - [self shankPresentTowardsoloudspeakersource:self.prototypeTertiusPresentStatement giftId:info.giftId]; - } - } -} - -#pragma mark - FBCDesirePresentCeremony -- (void)desirePresentDispositionSttowardsementSucces:(NSArray *)list level:(NSString *)level { - if (level.intValue == 1) { - self.prototypeSolePresentStatement = list; - if (list.count > 0 && !self.modifiPresentAbstract) { - self.giftInfo = list.firstObject; - [self.presentRegard prohibitipositionDeficiencyAbstract:self.giftInfo]; - [self shankPresentTowardsoloudspeakersource:self.prototypeSolePresentStatement giftId:self.giftInfo.giftId];; - } - if (self.modifiPresentAbstract) { - [self shankPresentTowardsoloudspeakersource:self.prototypeTertiusPresentStatement giftId:_modifiPresentAbstract.giftId]; - } - } else if (level.intValue == 2) { - self.prototypeTwoPresentStatement = list; - if (self.modifiPresentAbstract) { - [self shankPresentTowardsoloudspeakersource:self.prototypeTwoPresentStatement giftId:_modifiPresentAbstract.giftId]; - } - } else { - self.prototypeTertiusPresentStatement = list; - if (self.modifiPresentAbstract) { - [self shankPresentTowardsoloudspeakersource:self.prototypeTertiusPresentStatement giftId:_modifiPresentAbstract.giftId]; - } - } -} - -- (void)produceSequencirePresentProvisionAccomplishment { - [self prohibitiaplictowardsionarRegard]; - if(self.Dismiss) { - self.Dismiss(YES); - } -} - -#pragma mark - Event Response -- (void)subtractBtutonPerformance:(UIButton *)sener { - if([self canMetrotractMinComputtowardsion:self.number]) { - self.number --; - } else { - self.number = [self subtractMinComputtowardsion]; - } - self.essayUniverse.text = [NSString stringWithFormat:@"%d", self.number]; -} - -- (void)accelertowardseBtutonPerformance:(UIButton *)sener { - if([self canAccelertowardseLargestComputtowardsion:self.number]) { - self.number ++; - } else { - self.number = [self accelertowardseLargestComputtowardsion]; - } - self.essayUniverse.text = [NSString stringWithFormat:@"%d", self.number]; -} - -- (void)essayUniverseDidDiversifictowardsiond:(UITextField *)essayUniverse { - self.number = essayUniverse.text.intValue; -} - -- (void)prohibitiaplictowardsionarRegard { - [self dismissViewControllerAnimated:YES completion:nil]; -} -#pragma mark - Event Response -- (void)sureBtutonPerformance:(UIButton *)sender { - if (![self canMetrotractMinComputtowardsion:self.number]) { - NSString * toast = [NSString stringWithFormat:@"礼物数量范围需为%d~%d", [self subtractMinComputtowardsion], [self accelertowardseLargestComputtowardsion]]; - [self EvidenceMistakeToast:toast]; - self.essayUniverse.text = [NSString stringWithFormat:@"%d", [self subtractMinComputtowardsion]]; - self.number = [self subtractMinComputtowardsion]; - return; - } else if(![self canAccelertowardseLargestComputtowardsion:self.number]){ - NSString * toast = [NSString stringWithFormat:@"礼物数量范围需为%d~%d", [self subtractMinComputtowardsion], [self accelertowardseLargestComputtowardsion]]; - [self EvidenceMistakeToast:toast]; - self.essayUniverse.text = [NSString stringWithFormat:@"%d", [self accelertowardseLargestComputtowardsion]]; - self.number = [self accelertowardseLargestComputtowardsion]; - return; - } - NSString * itemId = self.modifiPresentAbstract ? [NSString stringWithFormat:@"%ld", self.modifiPresentAbstract.itemId] : @""; - [self.presimport produceSequencirePresentProvision:self.roomUid itemId:itemId giftId:[NSString stringWithFormat:@"%ld", self.giftInfo.giftId] seq:self.prottypeAbstract.level targetNum:self.number]; -} - -#pragma mark - Getters And Setters -- (void)setModifiPresentAbstract:(DesirePresentAbstractMatrix *)modifiPresentAbstract { - _modifiPresentAbstract = modifiPresentAbstract; - if (_modifiPresentAbstract) { - DesirePresentAbstractMatrix * prototypeAbstract; - for (DesirePresentAbstractMatrix * info in self.prototypeStatements) { - if (info.level == _modifiPresentAbstract.level) { - prototypeAbstract = info; - } - } - if (prototypeAbstract) { - self.prottypeAbstract = prototypeAbstract; - self.giftInfo = _modifiPresentAbstract; - [self.prototypeRegard prohibitipositionDeficiencyAbstract:prototypeAbstract]; - [self.presentRegard prohibitipositionDeficiencyAbstract:_modifiPresentAbstract]; - - [self shankProttypeTowardsoloudspeakersource:prototypeAbstract.level]; - - if (_modifiPresentAbstract.level == WishPresentPrototype_Normal) { - if (self.prototypeSolePresentStatement.count <=0) { - [self.presimport desirePresentDispositionSttowardsement:self.roomUid level:@"1"]; - } else { - [self shankPresentTowardsoloudspeakersource:self.prototypeSolePresentStatement giftId:_modifiPresentAbstract.giftId]; - } - } else if (_modifiPresentAbstract.level == WishPresentPrototype_Middle) { - if (self.prototypeTwoPresentStatement.count <= 0) { - [self.presimport desirePresentDispositionSttowardsement:self.roomUid level:@"2"]; - } else { - [self shankPresentTowardsoloudspeakersource:self.prototypeTwoPresentStatement giftId:_modifiPresentAbstract.giftId]; - } - } else { - if (self.prototypeTertiusPresentStatement.count <= 0) { - [self.presimport desirePresentDispositionSttowardsement:self.roomUid level:@"3"]; - } else { - [self shankPresentTowardsoloudspeakersource:self.prototypeTertiusPresentStatement giftId:_modifiPresentAbstract.giftId]; - } - } - self.essayUniverse.text = [NSString stringWithFormat:@"%ld", _modifiPresentAbstract.targetNum]; - self.number = (int)_modifiPresentAbstract.targetNum; - - } else { - [self prohibitiaplictowardsionarRegard]; - } - } -} - -- (UIView *)apexRegard { - if (!_apexRegard) { - _apexRegard = [[UIView alloc] init]; - _apexRegard.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(prohibitiaplictowardsionarRegard)]; - [_apexRegard addGestureRecognizer:tap]; - } - return _apexRegard; -} - - -- (UIView *)bottomView { - if (!_bottomView) { - _bottomView = [[UIView alloc] init]; - _bottomView.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(prohibitiaplictowardsionarRegard)]; - [_bottomView addGestureRecognizer:tap]; - } - return _bottomView; -} - - -- (UIView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIView alloc] init]; - _encourageRegard.layer.masksToBounds = YES; - _encourageRegard.layer.cornerRadius = 20; - _encourageRegard.backgroundColor = [UIColor whiteColor]; - } - return _encourageRegard; -} - -- (YUMIDesirePresentStatementRegard *)prototypeRegard { - if(!_prototypeRegard) { - _prototypeRegard = [[YUMIDesirePresentStatementRegard alloc] init]; - _prototypeRegard.delegate = self; - } - return _prototypeRegard; -} - -- (YUMIDesirePresentStatementRegard *)presentRegard { - if(!_presentRegard) { - _presentRegard = [[YUMIDesirePresentStatementRegard alloc] init]; - _presentRegard.delegate = self; - } - return _presentRegard; -} - -- (UIButton *)subtractBtuton { - if (!_subtractBtuton) { - _subtractBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_subtractBtuton setImage:[UIImage imageNamed:@"yumi_scope_wish_present_subtract"] forState:UIControlStateNormal]; - [_subtractBtuton setImage:[UIImage imageNamed:@"yumi_scope_wish_present_subtract"] forState:UIControlStateSelected]; - [_subtractBtuton addTarget:self action:@selector(subtractBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _subtractBtuton; -} - - -- (UIButton *)accelerateBtuton { - if (!_accelerateBtuton) { - _accelerateBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_accelerateBtuton setImage:[UIImage imageNamed:@"yumi_scope_wish_present_add"] forState:UIControlStateNormal]; - [_accelerateBtuton setImage:[UIImage imageNamed:@"yumi_scope_wish_present_add"] forState:UIControlStateSelected]; - [_accelerateBtuton addTarget:self action:@selector(accelertowardseBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _accelerateBtuton; -} - -- (UIStackView *)digitalHierarchyRegard { - if (!_digitalHierarchyRegard) { - _digitalHierarchyRegard = [[UIStackView alloc] init]; - _digitalHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _digitalHierarchyRegard.distribution = UIStackViewDistributionFill; - _digitalHierarchyRegard.alignment = UIStackViewAlignmentFill; - _digitalHierarchyRegard.spacing = 10; - } - return _digitalHierarchyRegard; -} - -- (UITextField *)essayUniverse { - if (!_essayUniverse) { - _essayUniverse = [[UITextField alloc] init]; - _essayUniverse.layer.cornerRadius = 4; - _essayUniverse.layer.masksToBounds = YES; - _essayUniverse.tintColor = [DJDKMIMOMColor instantEssayPrettify]; - _essayUniverse.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _essayUniverse.backgroundColor = [UIColor clearColor]; - _essayUniverse.font = [UIFont systemFontOfSize:10]; - _essayUniverse.clearButtonMode = UITextFieldViewModeWhileEditing; - _essayUniverse.returnKeyType = UIReturnKeySearch; - _essayUniverse.enablesReturnKeyAutomatically = YES; - _essayUniverse.text = @"10"; - _essayUniverse.textAlignment = NSTextAlignmentCenter; - _essayUniverse.keyboardType = UIKeyboardTypeNumberPad; - _essayUniverse.backgroundColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#E4E4E4"]; - [_essayUniverse addTarget:self action:@selector(essayUniverseDidDiversifictowardsiond:) forControlEvents:UIControlEventEditingChanged]; - } - return _essayUniverse; -} - -- (UIButton *)sureBtuton { - if (!_sureBtuton) { - _sureBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_sureBtuton setTitle:YMLocalizedString(@"YUMI_Wish_Gift_Create_Item_View_Controller_10") forState:UIControlStateNormal]; - [_sureBtuton setTitleColor:[DJDKMIMOMColor acknowledgementBtutonEssayPrettify] forState:UIControlStateNormal]; - _sureBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - [_sureBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _sureBtuton.layer.masksToBounds = YES; - _sureBtuton.layer.cornerRadius = 10; - [_sureBtuton addTarget:self action:@selector(sureBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _sureBtuton; -} - -- (NSArray *)prototypeStatements { - if (!_prototypeStatements) { - DesirePresentAbstractMatrix * levelOne = [[DesirePresentAbstractMatrix alloc] init]; - levelOne.levelName = YMLocalizedString(@"YUMI_Wish_Gift_Create_Item_View_Controller_11"); - levelOne.level = WishPresentPrototype_Normal; - - DesirePresentAbstractMatrix * levelTwo = [[DesirePresentAbstractMatrix alloc] init]; - levelTwo.levelName = YMLocalizedString(@"YUMI_Wish_Gift_Create_Item_View_Controller_12"); - levelTwo.level = WishPresentPrototype_Middle; - - DesirePresentAbstractMatrix * levelThree = [[DesirePresentAbstractMatrix alloc] init]; - levelThree.levelName = YMLocalizedString(@"YUMI_Wish_Gift_Create_Item_View_Controller_13"); - levelThree.level = WishPresentPrototype_High; - _prototypeStatements = @[levelOne, levelTwo, levelThree]; - } - return _prototypeStatements; -} - - - -@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/YUMIDesirePresentCreateRegardGovernancer.h b/YuMi/Modules/YMRoom/View/WishGift/View/YUMIDesirePresentCreateRegardGovernancer.h deleted file mode 100644 index e99358e6..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/View/YUMIDesirePresentCreateRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMWishGiftCreateViewController.h -// YUMI -// -// Created by YUMI on 2022/10/18. -// - -#import "MvpRegardGovernancer.h" -#import "ChamberHostRepresendtation.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIDesirePresentCreateRegardGovernancer : MvpRegardGovernancer -- (instancetype)initWithDelegate:(id)delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/YUMIDesirePresentCreateRegardGovernancer.m b/YuMi/Modules/YMRoom/View/WishGift/View/YUMIDesirePresentCreateRegardGovernancer.m deleted file mode 100644 index 0e08d513..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/View/YUMIDesirePresentCreateRegardGovernancer.m +++ /dev/null @@ -1,317 +0,0 @@ -// -// YMWishGiftCreateViewController.m -// YUMI -// -// Created by YUMI on 2022/10/18. -// - -#import "YUMIDesirePresentCreateRegardGovernancer.h" -#import -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "MKJPopup.h" -#import "YUMIMacroUitls.h" -#import "NSArray+Safe.h" -#import "DesirePresentAbstractMatrix.h" -#import "ChamberAbstractMatrix.h" -#import "YUMIDesirePresentTabulationRegardElement.h" -#import "YUMIDesirePresentHistoryRegardGovernancer.h" -#import "YUMIDesirePresentCreateProvisionRegardGovernancer.h" -#import "YUMIDesirePresentExternalizer.h" -#import "FBCDesirePresentCeremony.h" -@interface YUMIDesirePresentCreateRegardGovernancer () -@property (nonatomic,strong) UILabel *dispositionSequencignation; -@property (nonatomic,strong) UIButton *distinctSequencireBtuton; -@property (nonatomic,strong) UIButton *accelerateSequencireBtuton; -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) UIButton *produceBtuton; -@property (nonatomic,strong) NSArray *datasource; -@property (nonatomic,strong) NSString *roomUid; -@property (nonatomic,weak) id delegate; -@property (nonatomic,strong) NSArray *prototypeSolePresentStatement; -@property (nonatomic,strong) NSArray *prototypeTwoPresentStatement; -@property (nonatomic,strong) NSArray *prototypeTertiusPresentStatement; -@end - -@implementation YUMIDesirePresentCreateRegardGovernancer - -- (__kindof id)producePresimport { - return [[YUMIDesirePresentExternalizer alloc] init]; -} -- (instancetype)initWithDelegate:(id)delegate{ - if (self = [super init]) { - self.delegate = delegate; - self.roomUid = [NSString stringWithFormat:@"%ld", [self.delegate acquireChamberAbstract].uid]; - [self initSequencirePresentSttowardsement]; - [self initSequencireProttypePresentSttowardsement]; - ChamberAbstractMatrix * roomInfo = [self.delegate acquireChamberAbstract]; - if (roomInfo.hasOpenWishGift) { - self.accelerateSequencireBtuton.hidden = YES; - self.distinctSequencireBtuton.hidden = YES; - [self.produceBtuton setTitle:YMLocalizedString(@"YUMI_Wish_Gift_Create_View_Controller_0") forState:UIControlStateNormal]; - self.produceBtuton.enabled = NO; - } - } - return self; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -#pragma mark - Private Method -- (void)initSequencirePresentSttowardsement { - [self.presimport desirePresentSttowardsement:self.roomUid]; -} - -- (void)initSequencireProttypePresentSttowardsement { - [self.presimport desirePresentDispositionSttowardsement:self.roomUid level:@"1"]; - [self.presimport desirePresentDispositionSttowardsement:self.roomUid level:@"2"]; - [self.presimport desirePresentDispositionSttowardsement:self.roomUid level:@"3"]; -} - -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Wish_Gift_Create_View_Controller_1"); - [self.view addSubview:self.dispositionSequencignation]; - [self.view addSubview:self.distinctSequencireBtuton]; - [self.view addSubview:self.accelerateSequencireBtuton]; - [self.view addSubview:self.tableView]; - [self.view addSubview:self.produceBtuton]; - [self accelertowardseBreeadcrumbProvisionAboutChampions:@[YMLocalizedString(@"YUMI_Wish_Gift_Create_View_Controller_2")] titleColor:[DJDKMIMOMColor instantEssayPrettify] isContrary:NO target:self action:@selector(rectifyBtutonPerformance:) tags:nil]; -} - -- (void)initChildLyRestrictions { - [self.dispositionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.view).offset(24); - make.top.mas_equalTo(self.view).offset(14); - }]; - - [self.distinctSequencireBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(60, 20)); - make.centerY.mas_equalTo(self.dispositionSequencignation); - make.right.mas_equalTo(self.accelerateSequencireBtuton.mas_left).offset(-10); - }]; - - [self.accelerateSequencireBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.equalTo(self.dispositionSequencignation); - make.right.mas_equalTo(self.view).offset(-18); - make.size.mas_equalTo(CGSizeMake(60, 20)); - }]; - - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view).inset(15); - make.height.mas_equalTo(135); - make.top.mas_equalTo(self.dispositionSequencignation.mas_bottom).offset(13); - }]; - - [self.produceBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view).inset(80); - make.height.mas_equalTo(37); - make.top.mas_equalTo(self.tableView.mas_bottom).offset(48); - }]; -} -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - YUMIDesirePresentTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIDesirePresentTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIDesirePresentTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIDesirePresentTabulationRegardElement class])]; - } - DesirePresentAbstractMatrix *giftInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - giftInfo.row = indexPath.row + 1; - cell.giftInfo = giftInfo; - cell.delegate = self; - ChamberAbstractMatrix * roomInfo = [self.delegate acquireChamberAbstract]; - cell.isVeiledCompile = roomInfo.hasOpenWishGift; - return cell; -} - -#pragma mark - FBCDesirePresentTabulationViweElementRepresendtation -- (void)fBCHopePresentTarbsultowardsionViweElement:(YUMIDesirePresentTabulationRegardElement *)view didClearWishGift:(DesirePresentAbstractMatrix *)info { - if (info) { - MKJPrecautiousDisposition * config = [[MKJPrecautiousDisposition alloc] init]; - config.title = @""; - config.message = @"确认删除该条数据?"; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [self.presimport representtowardsionSequencirePresentProvision:self.roomUid itemId:[NSString stringWithFormat:@"%ld", info.itemId]]; - } cancelHandler:^{ - - }]; - } -} - -- (void)fBCHopePresentTarbsultowardsionViweElement:(YUMIDesirePresentTabulationRegardElement *)view didUpdateWishGift:(DesirePresentAbstractMatrix *)info { - YUMIDesirePresentCreateProvisionRegardGovernancer * createItemVC = [[YUMIDesirePresentCreateProvisionRegardGovernancer alloc] init]; - createItemVC.roomUid = self.roomUid; - createItemVC.prototypeSolePresentStatement = self.prototypeSolePresentStatement; - createItemVC.prototypeTwoPresentStatement = self.prototypeTwoPresentStatement; - createItemVC.prototypeTertiusPresentStatement = self.prototypeTertiusPresentStatement; - createItemVC.modifiPresentAbstract = info; - @kWeakify(self); - createItemVC.Dismiss = ^(BOOL finish) { - @kStrongify(self); - [self initSequencirePresentSttowardsement]; - }; - createItemVC.modalPresentationStyle = UIModalPresentationOverFullScreen; - [self.navigationController presentViewController:createItemVC animated:YES completion:nil]; -} - -#pragma mark - FBCDesirePresentCeremony -- (void)accelertowardseSequencirePresentAccomplishment { - [self.navigationController popViewControllerAnimated:YES]; -} - -- (void)acquireSequencirePresentSttowardsementAccomplishment:(NSArray *)list { - self.datasource = list; - [self.tableView reloadData]; -} - -- (void)representtowardsionSequencirePresentProvisionAccomplishment { - [self initSequencirePresentSttowardsement]; -} - -- (void)desirePresentDispositionSttowardsementSucces:(NSArray *)list level:(NSString *)level { - if (level.intValue == 1) { - self.prototypeSolePresentStatement = list; - } else if (level.intValue == 2) { - self.prototypeTwoPresentStatement = list; - } else { - self.prototypeTertiusPresentStatement = list; - } -} - -#pragma mark - Event Response -- (void)rectifyBtutonPerformance:(UIButton *)sender { - YUMIDesirePresentHistoryRegardGovernancer * historyVC = [[YUMIDesirePresentHistoryRegardGovernancer alloc] init]; - historyVC.roomUid = self.roomUid; - [self.navigationController pushViewController:historyVC animated:YES]; -} - -- (void)prohibititinctBtutonPerformance:(UIButton *)sender { - if (self.datasource.count > 0) { - MKJPrecautiousDisposition * config = [[MKJPrecautiousDisposition alloc] init]; - config.title = @""; - config.message = @"确认清空当前数据?"; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [self.presimport representtowardsionSequencirePresentProvision:self.roomUid itemId:@"-1"]; - } cancelHandler:^{ - - }]; - } else { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Wish_Gift_Create_View_Controller_5")]; - } -} - -- (void)accelertowardseSequencireBtutonPerformance:(UIButton *)sender { - if (self.datasource.count == 3) { - [self EvidenceMistakeToast:@"最多只可添加三个心愿呦~"]; - return; - } - YUMIDesirePresentCreateProvisionRegardGovernancer * createItemVC = [[YUMIDesirePresentCreateProvisionRegardGovernancer alloc] init]; - createItemVC.prototypeSolePresentStatement = self.prototypeSolePresentStatement; - createItemVC.prototypeTwoPresentStatement = self.prototypeTwoPresentStatement; - createItemVC.prototypeTertiusPresentStatement = self.prototypeTertiusPresentStatement; - createItemVC.roomUid = self.roomUid; - @kWeakify(self); - createItemVC.Dismiss = ^(BOOL finish) { - @kStrongify(self); - [self initSequencirePresentSttowardsement]; - }; - createItemVC.modalPresentationStyle = UIModalPresentationOverFullScreen; - [self.navigationController presentViewController:createItemVC animated:YES completion:nil]; -} - -- (void)produceBtutonPerformance:(UIButton *)sender { - if (self.datasource.count > 0) { - MKJPrecautiousDisposition * config = [[MKJPrecautiousDisposition alloc] init]; - config.title = @""; - config.message = YMLocalizedString(@"YUMI_Wish_Gift_Create_View_Controller_7"); - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [self.presimport accelertowardseSequencirePresent:self.roomUid]; - } cancelHandler:^{ - - }]; - } else { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Wish_Gift_Create_View_Controller_8")]; - } -} - -#pragma mark - Getters And Setters -- (UILabel *)dispositionSequencignation { - if (!_dispositionSequencignation) { - _dispositionSequencignation = [[UILabel alloc] init]; - _dispositionSequencignation.font = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; - _dispositionSequencignation.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _dispositionSequencignation.text = YMLocalizedString(@"YUMI_Wish_Gift_Create_View_Controller_9"); - } - return _dispositionSequencignation; -} - -- (UIButton *)distinctSequencireBtuton { - if (!_distinctSequencireBtuton) { - _distinctSequencireBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_distinctSequencireBtuton setTitle:YMLocalizedString(@"YUMI_Wish_Gift_Create_View_Controller_10") forState:UIControlStateNormal]; - [_distinctSequencireBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _distinctSequencireBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - _distinctSequencireBtuton.backgroundColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#C7DAEA"]; - _distinctSequencireBtuton.layer.masksToBounds = YES; - _distinctSequencireBtuton.layer.cornerRadius = 10; - [_distinctSequencireBtuton addTarget:self action:@selector(prohibititinctBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _distinctSequencireBtuton; -} - -- (UIButton *)accelerateSequencireBtuton { - if (!_accelerateSequencireBtuton) { - _accelerateSequencireBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_accelerateSequencireBtuton setTitle:YMLocalizedString(@"YUMI_Wish_Gift_Create_View_Controller_11") forState:UIControlStateNormal]; - [_accelerateSequencireBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _accelerateSequencireBtuton.titleLabel.font = [UIFont systemFontOfSize:10]; - [_accelerateSequencireBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _accelerateSequencireBtuton.layer.masksToBounds = YES; - _accelerateSequencireBtuton.layer.cornerRadius = 10; - [_accelerateSequencireBtuton addTarget:self action:@selector(accelertowardseSequencireBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _accelerateSequencireBtuton; -} - - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor whiteColor]; - _tableView.layer.masksToBounds = YES; - _tableView.layer.cornerRadius = 8; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIDesirePresentTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIDesirePresentTabulationRegardElement class])]; - } - return _tableView; -} - -- (UIButton *)produceBtuton { - if (!_produceBtuton) { - _produceBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_produceBtuton setTitle:YMLocalizedString(@"YUMI_Wish_Gift_Create_View_Controller_12") forState:UIControlStateNormal]; - [_produceBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _produceBtuton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_produceBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify], [DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _produceBtuton.layer.masksToBounds = YES; - _produceBtuton.layer.cornerRadius = 37 / 2; - [_produceBtuton addTarget:self action:@selector(produceBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _produceBtuton; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/YUMIDesirePresentHistoryRegardGovernancer.h b/YuMi/Modules/YMRoom/View/WishGift/View/YUMIDesirePresentHistoryRegardGovernancer.h deleted file mode 100644 index 89109a1e..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/View/YUMIDesirePresentHistoryRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMWishGiftHistoryViewController.h -// YUMI -// -// Created by YUMI on 2022/10/18. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIDesirePresentHistoryRegardGovernancer : MvpRegardGovernancer -@property (nonatomic,strong) NSString *roomUid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/YUMIDesirePresentHistoryRegardGovernancer.m b/YuMi/Modules/YMRoom/View/WishGift/View/YUMIDesirePresentHistoryRegardGovernancer.m deleted file mode 100644 index 6a9c3238..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/View/YUMIDesirePresentHistoryRegardGovernancer.m +++ /dev/null @@ -1,154 +0,0 @@ -// -// YMWishGiftHistoryViewController.m -// YUMI -// -// Created by YUMI on 2022/10/18. -// - -#import "YUMIDesirePresentHistoryRegardGovernancer.h" -#import -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "PLIntratemporalUtil.h" -#import "NSArray+Safe.h" -#import "DesirePresentHistoryMatrix.h" -#import "YUMIDesirePresentHistoryTabulationRegardElement.h" -#import "YUMIDesirePresentDispossessTabulationRegardElement.h" -#import "YUMIDesirePresentDivisionRegard.h" -#import "YUMIDesirePresentExternalizer.h" -#import "FBCDesirePresentCeremony.h" - -@interface YUMIDesirePresentHistoryRegardGovernancer () -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSArray *datasource; -@end - -@implementation YUMIDesirePresentHistoryRegardGovernancer - -- (__kindof id)producePresimport { - return [[YUMIDesirePresentExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSequencirePresentHerstorySttowardsement]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - - -- (void)initSubViews { - self.title = YMLocalizedString(@"YUMI_Wish_Gift_History_View_Controller_0"); - [self.view addSubview:self.tableView]; -} - -- (void)initChildLyRestrictions { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.view); - }]; -} - -- (void)initSequencirePresentHerstorySttowardsement { - [self.presimport desirePresentHistroySttowardsement:self.roomUid]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return self.datasource.count > 0 ? self.datasource.count : 1; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - return 44; - } - return (KScreenHeight - kNavigationHeight); -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - if (self.datasource.count > 0) { - DesirePresentHistoryMatrix *info = [self.datasource secureGroalTowardsIndictowardsrix1:section]; - return info.gifts.count; - } - return 0; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - if (self.datasource.count > 0) { - YUMIDesirePresentHistoryTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIDesirePresentHistoryTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIDesirePresentHistoryTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIDesirePresentHistoryTabulationRegardElement class])]; - } - DesirePresentHistoryMatrix *historyInfo = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.section]; - DesirePresentAbstractMatrix * info= [historyInfo.gifts secureGroalTowardsIndictowardsrix1:indexPath.row]; - info.row = (indexPath.row + 1); - cell.giftInfo = info; - if (indexPath.row == 0) { - cell.isApex = YES; - } else { - cell.isApex = NO; - } - - if (indexPath.row == historyInfo.gifts.count -1) { - cell.isExtreme = YES; - } else { - cell.isExtreme = false; - } - return cell; - } - - YUMIDesirePresentDispossessTabulationRegardElement * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([YUMIDesirePresentDispossessTabulationRegardElement class])]; - if (cell == nil) { - cell = [[YUMIDesirePresentDispossessTabulationRegardElement alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([YUMIDesirePresentDispossessTabulationRegardElement class])]; - } - return cell; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { - return 0.01; -} - -- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { - return [[UIView alloc] init];; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { - return self.datasource.count > 0 ? 45 : 0.01; -} - -- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { - if (self.datasource.count > 0) { - YUMIDesirePresentDivisionRegard * view = [[YUMIDesirePresentDivisionRegard alloc] init]; - view.frame = CGRectMake(0, 0, KScreenWidth, 45); - DesirePresentHistoryMatrix *historyInfo = [self.datasource secureGroalTowardsIndictowardsrix1:section]; - view.title = historyInfo.createDate; - return view; - } - return [UIView new]; -} - -#pragma mark - FBCDesirePresentCeremony -- (void)desirePresentHistroySttowardsementAccomplishment:(NSArray *)list { - self.datasource = list; - [self.tableView reloadData]; -} - -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[YUMIDesirePresentHistoryTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIDesirePresentHistoryTabulationRegardElement class])]; - [self.tableView registerClass:[YUMIDesirePresentDispossessTabulationRegardElement class] forCellReuseIdentifier:NSStringFromClass([YUMIDesirePresentDispossessTabulationRegardElement class])]; - } - return _tableView; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/YUMIDesirePresentRegardGovernancer.h b/YuMi/Modules/YMRoom/View/WishGift/View/YUMIDesirePresentRegardGovernancer.h deleted file mode 100644 index 390a9214..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/View/YUMIDesirePresentRegardGovernancer.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// YMWishGIftViewController.h -// YUMI -// -// Created by YUMI on 2022/10/18. -// - -#import "MvpRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCDesirePresentRegardGovernancerRepresendtation - -- (void)fBCHopePresentRegardGovernancerDischargeTicktack:(NSString *)giftId; - -@end - -@interface YUMIDesirePresentRegardGovernancer : MvpRegardGovernancer - -- (instancetype)initAboutChamberCid:(NSString *)roomUid; - -@property (nonatomic,weak) id delegate; - -- (void)acquireSequencirePresentSttowardsementAccomplishment:(NSArray *)list; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/WishGift/View/YUMIDesirePresentRegardGovernancer.m b/YuMi/Modules/YMRoom/View/WishGift/View/YUMIDesirePresentRegardGovernancer.m deleted file mode 100644 index 59ad156a..00000000 --- a/YuMi/Modules/YMRoom/View/WishGift/View/YUMIDesirePresentRegardGovernancer.m +++ /dev/null @@ -1,358 +0,0 @@ -// -// YMWishGIftViewController.m -// YUMI -// -// Created by YUMI on 2022/10/18. -// - -#import "YUMIDesirePresentRegardGovernancer.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "YUMIMacroUitls.h" -#import "StatsticsticsServingFacilitater.h" -#import "NSArray+Safe.h" -#import "YUMIDesirePresentAbstractRegard.h" -#import "DesirePresentAbstractMatrix.h" -#import "DesireExternalizeConsumerMatrix.h" -#import "YUMIDesirePresentExternalizer.h" -#import "FBCDesirePresentCeremony.h" -@interface YUMIDesirePresentRegardGovernancer () -@property (nonatomic,strong) UIView *apexRegard; -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) UILabel *titleLabel; -@property (nonatomic,strong) UILabel *promptsGbsel; -@property (nonatomic,strong) UIView *burlywoodRegard; -@property (nonatomic,strong) UIStackView *consumerHierarchyRegard; -@property (nonatomic,strong) NetIndicateRegard *thresholdIntelligenceportraitIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *instantIntelligenceportraitIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *tertiusIntelligenceportraitIndicateRegard; -@property (nonatomic,strong) NSArray * intelligenceportraitRegards; -@property (nonatomic,strong) UILabel *assistFigureSequencignation; -@property (nonatomic,strong) UIStackView *presentHierarchyRegard; -@property (nonatomic,strong) YUMIDesirePresentAbstractRegard *thresholdRegard; -@property (nonatomic,strong) YUMIDesirePresentAbstractRegard *instantRegard; -@property (nonatomic,strong) YUMIDesirePresentAbstractRegard *tertiusRegard; -@property (nonatomic,strong) NSArray *presentRegards; -@property (nonatomic,strong) NSString *roomUid; -@end - -@implementation YUMIDesirePresentRegardGovernancer - -- (instancetype)initAboutChamberCid:(NSString *)roomUid { - if (self = [super init]) { - self.roomUid = roomUid; - [self initDeficiencyTowardsoloudspeaker]; - } - return self; -} - -- (__kindof id)producePresimport { - return [[YUMIDesirePresentExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initChildLyRestrictions]; -} - -- (void)initDeficiencyTowardsoloudspeaker { - [self.presimport desirePresentAssistConsumerSttowardsement:self.roomUid]; - [self.presimport desirePresentSttowardsement:self.roomUid]; -} - -- (void)initSubViews { - self.view.backgroundColor = [UIColor clearColor]; - [self.view addSubview:self.apexRegard]; - [self.view addSubview:self.encourageIndicateRegard]; - [self.encourageIndicateRegard addSubview:self.titleLabel]; - [self.encourageIndicateRegard addSubview:self.promptsGbsel]; - [self.encourageIndicateRegard addSubview:self.burlywoodRegard]; - [self.encourageIndicateRegard addSubview:self.consumerHierarchyRegard]; - [self.encourageIndicateRegard addSubview:self.assistFigureSequencignation]; - [self.encourageIndicateRegard addSubview:self.presentHierarchyRegard]; - - [self.consumerHierarchyRegard addArrangedSubview:self.thresholdIntelligenceportraitIndicateRegard]; - [self.consumerHierarchyRegard addArrangedSubview:self.instantIntelligenceportraitIndicateRegard]; - [self.consumerHierarchyRegard addArrangedSubview:self.tertiusIntelligenceportraitIndicateRegard]; - - [self.presentHierarchyRegard addArrangedSubview:self.thresholdRegard]; - [self.presentHierarchyRegard addArrangedSubview:self.instantRegard]; - [self.presentHierarchyRegard addArrangedSubview:self.tertiusRegard]; - self.presentRegards = @[self.thresholdRegard, self.instantRegard, self.tertiusRegard]; -} - -- (void)initChildLyRestrictions { - [self.apexRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.top.right.equalTo(self.view); - make.bottom.mas_equalTo(self.encourageIndicateRegard.mas_top); - }]; - - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.height.mas_equalTo(283 + kSafeAreaBottomHeight); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.encourageIndicateRegard); - make.top.mas_equalTo(self.encourageIndicateRegard).offset(16); - }]; - - [self.promptsGbsel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.encourageIndicateRegard); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(8); - }]; - - [self.burlywoodRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageIndicateRegard); - make.top.mas_equalTo(self.promptsGbsel.mas_bottom).offset(12); - make.height.mas_equalTo(0.5); - }]; - - [self.consumerHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(28); - make.left.mas_equalTo(self.encourageIndicateRegard).offset(16); - make.top.mas_equalTo(self.burlywoodRegard.mas_bottom).offset(10); - }]; - - [self.thresholdIntelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(28); - }]; - - [self.instantIntelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(28); - }]; - - [self.tertiusIntelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(28); - }]; - - [self.assistFigureSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.encourageIndicateRegard).inset(15); - make.centerY.mas_equalTo(self.consumerHierarchyRegard); - }]; - - [self.presentHierarchyRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.encourageIndicateRegard); - make.height.mas_equalTo(165); - make.bottom.mas_equalTo(self.encourageIndicateRegard).offset(-9 -kSafeAreaBottomHeight); - }]; - - [self.thresholdRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(106); - }]; - - [self.instantRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(106); - }]; - - [self.tertiusRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(106); - }]; -} - -#pragma mark - FBCDesirePresentAbstractRegardRepresendtation -- (void)fBCHopePresentAbstractRegard:(YUMIDesirePresentAbstractRegard *)view didClickSender:(DesirePresentAbstractMatrix *)info { - [self prohibitiaplictowardsionarRegard]; - if (info.giftId > 0 && self.delegate && [self.delegate respondsToSelector:@selector(fBCHopePresentRegardGovernancerDischargeTicktack:)]) { - NSString * giftId = [NSString stringWithFormat:@"%ld", info.giftId]; - [self.delegate fBCHopePresentRegardGovernancerDischargeTicktack:giftId]; - } - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventRoom_wishlist_panel_click eventAttributes:@{@"giftName" : info.giftName.length > 0 ? info.giftName : @""}]; -} - -#pragma mark - FBCDesirePresentCeremony -- (void)acquireSequencirePresentAssistConsumerSttowardsementAccomplishment:(NSArray *)list { - for (int i = 0; i < self.consumerHierarchyRegard.arrangedSubviews.count; i++) { - NetIndicateRegard * imageView = [self.consumerHierarchyRegard.subviews secureGroalTowardsIndictowardsrix1:i]; - if (i < list.count) { - DesireExternalizeConsumerMatrix * userInfo = [list secureGroalTowardsIndictowardsrix1:i]; - imageView.hidden = NO; - imageView.imageUrl = userInfo.avatar; - }else { - imageView.hidden = YES; - } - } - - NSString * number = [NSString stringWithFormat:@"%ld", list.count]; - if (list.count <= 0) { - NSString * title = YMLocalizedString(@"YUMI_Wish_Gift_View_Controller_0"); - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:[DJDKMIMOMColor essayTertiusPrettify]}]; - self.assistFigureSequencignation.attributedText = attribute; - self.assistFigureSequencignation.textAlignment = NSTextAlignmentCenter; - } else { - NSString * title = [NSString stringWithFormat:@"%@%@", number, YMLocalizedString(@"YUMI_Wish_Gift_View_Controller_1")]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:[DJDKMIMOMColor essayTertiusPrettify]}]; - [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor colorAboutHexBWSttr:@"#FFC300"] range:[title rangeOfString:number]]; - self.assistFigureSequencignation.attributedText = attribute; - self.assistFigureSequencignation.textAlignment = NSTextAlignmentRight; - } - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventRoom_wishlist_panel_show]; -} - -- (void)acquireSequencirePresentSttowardsementAccomplishment:(NSArray *)list { - int finishNumber = 0; - for (DesirePresentAbstractMatrix * info in list) { - if (info.actualNum >= info.targetNum) { - finishNumber ++; - } - } - - for (int i = 0; i < self.presentRegards.count; i++) { - YUMIDesirePresentAbstractRegard * view = [self.presentRegards secureGroalTowardsIndictowardsrix1:i]; - if(i < list.count) { - DesirePresentAbstractMatrix * info = [list secureGroalTowardsIndictowardsrix1:i]; - view.giftInfo = info; - view.hidden = NO; - } else { - view.hidden = YES; - } - } - self.titleLabel.text = [NSString stringWithFormat:@"今日心愿礼物%d/%ld",finishNumber,list.count]; -} - -#pragma mark - Event Response -- (void)prohibitiaplictowardsionarRegard { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventRoom_wishlist_panel_close_click]; - [self dismissViewControllerAnimated:YES completion:nil]; -} - -#pragma mark - Getters And Setters -- (UIView *)apexRegard { - if (!_apexRegard) { - _apexRegard = [[UIView alloc] init]; - _apexRegard.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(prohibitiaplictowardsionarRegard)]; - [_apexRegard addGestureRecognizer:tap]; - } - return _apexRegard; -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - _encourageIndicateRegard.image = [UIImage imageNamed:@"yumi_scope_wish_present_panel_background"]; - } - return _encourageIndicateRegard; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; - _titleLabel.textColor = [UIColor whiteColor]; - } - return _titleLabel; -} - -- (UILabel *)promptsGbsel { - if (!_promptsGbsel) { - _promptsGbsel = [[UILabel alloc] init]; - _promptsGbsel.font = [UIFont systemFontOfSize:10]; - _promptsGbsel.text = @"-当日设置的心愿,会在次日0点失效-"; - _promptsGbsel.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - } - return _promptsGbsel; -} - -- (UIView *)burlywoodRegard { - if (!_burlywoodRegard) { - _burlywoodRegard = [[UIView alloc] init]; - _burlywoodRegard.backgroundColor = [UIColor colorWithWhite:1 alpha:0.1]; - } - return _burlywoodRegard; -} - -- (UIStackView *)consumerHierarchyRegard { - if (!_consumerHierarchyRegard) { - _consumerHierarchyRegard = [[UIStackView alloc] init]; - _consumerHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _consumerHierarchyRegard.distribution = UIStackViewDistributionFill; - _consumerHierarchyRegard.alignment = UIStackViewAlignmentCenter; - _consumerHierarchyRegard.spacing = 4; - } - return _consumerHierarchyRegard; -} - -- (NetIndicateRegard *)thresholdIntelligenceportraitIndicateRegard { - if (!_thresholdIntelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _thresholdIntelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _thresholdIntelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _thresholdIntelligenceportraitIndicateRegard.layer.cornerRadius = 28/2; - } - return _thresholdIntelligenceportraitIndicateRegard; -} - -- (NetIndicateRegard *)instantIntelligenceportraitIndicateRegard { - if (!_instantIntelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _instantIntelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _instantIntelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _instantIntelligenceportraitIndicateRegard.layer.cornerRadius = 28/2; - } - return _instantIntelligenceportraitIndicateRegard; -} - -- (NetIndicateRegard *)tertiusIntelligenceportraitIndicateRegard { - if (!_tertiusIntelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _tertiusIntelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _tertiusIntelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _tertiusIntelligenceportraitIndicateRegard.layer.cornerRadius = 28/2; - } - return _tertiusIntelligenceportraitIndicateRegard; -} - -- (UILabel *)assistFigureSequencignation { - if (!_assistFigureSequencignation) { - _assistFigureSequencignation = [[UILabel alloc] init]; - } - return _assistFigureSequencignation; -} - -- (UIStackView *)presentHierarchyRegard { - if (!_presentHierarchyRegard) { - _presentHierarchyRegard = [[UIStackView alloc] init]; - _presentHierarchyRegard.axis = UILayoutConstraintAxisHorizontal; - _presentHierarchyRegard.distribution = UIStackViewDistributionFill; - _presentHierarchyRegard.alignment = UIStackViewAlignmentFill; - _presentHierarchyRegard.spacing = 12; - } - return _presentHierarchyRegard; -} - -- (YUMIDesirePresentAbstractRegard *)thresholdRegard { - if(!_thresholdRegard) { - _thresholdRegard = [[YUMIDesirePresentAbstractRegard alloc] init]; - _thresholdRegard.delegate = self; - } - return _thresholdRegard; -} - -- (YUMIDesirePresentAbstractRegard *)instantRegard { - if(!_instantRegard) { - _instantRegard = [[YUMIDesirePresentAbstractRegard alloc] init]; - _instantRegard.delegate = self; - } - return _instantRegard; -} - -- (YUMIDesirePresentAbstractRegard *)tertiusRegard { - if(!_tertiusRegard) { - _tertiusRegard = [[YUMIDesirePresentAbstractRegard alloc] init]; - _tertiusRegard.delegate = self; - } - return _tertiusRegard; -} - - -@end diff --git a/YuMi/Modules/YMRoom/View/XPMiniRoomView.h b/YuMi/Modules/YMRoom/View/XPMiniRoomView.h new file mode 100644 index 00000000..4d7f98dd --- /dev/null +++ b/YuMi/Modules/YMRoom/View/XPMiniRoomView.h @@ -0,0 +1,21 @@ +// +// XPMiniRoomView.h +// YuMi +// +// Created by YuMi on 2021/12/3. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class RoomInfoModel, UserInfoModel; +@interface XPMiniRoomView : UIView +///进房需要的控制器 +@property (nonatomic,weak) UIViewController * controller; +///房间最小化 初始化 +- (void)configRoomMiniView:(RoomInfoModel *)roomInfo userInfo:(UserInfoModel *)userInfo micQueue:(NSMutableDictionary *)micQueue; +///隐藏最小化的view +- (void)hiddenRoomMiniView; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/XPMiniRoomView.m b/YuMi/Modules/YMRoom/View/XPMiniRoomView.m new file mode 100644 index 00000000..526dd841 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/XPMiniRoomView.m @@ -0,0 +1,890 @@ +// +// XPMiniRoomView.m +// YuMi +// +// Created by YuMi on 2021/12/3. +// + +#import "XPMiniRoomView.h" +///Third +#import +#import +///Tool +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "RtcManager.h" +#import "UIButton+EnlargeTouchArea.h" +#import "TTPopup.h" +#import "XNDJTDDLoadingTool.h" +#import "XPRoomMiniManager.h" +#import "AccountInfoStorage.h" +#import "Api+ArrangeMic.h" +#import "Api+Room.h" +#import "XPCoreDataManager.h" +#import "NSArray+Safe.h" +#import "NSDate+DateUtils.h" +///Model +#import "RoomInfoModel.h" +#import "MicroQueueModel.h" +#import "MicroStateModel.h" +#import "UserInfoModel.h" +#import "AttachmentModel.h" +#import "ArrangeMicModel.h" +#import "RoomFaceSendInfoModel.h" +#import "MicroInviteExtModel.h" +#import "Music+CoreDataClass.h" +#import "RoomPKChooseUserModel.h" +#import "RoomSailingPrizeModel.h" +///View +#import "XPRoomViewController.h" +#import "XPNoteView.h" +#import "XPSkillCardPlayerManager.h" + +UIKIT_EXTERN NSString * kRoomBackMusicPlayMusicFinishKey; +UIKIT_EXTERN NSString * kRoomBackMusicAudioMixingVolumeKey; +UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey; +UIKIT_EXTERN NSString * kRoomBackMusicPlayMusicOrderKey; +UIKIT_EXTERN NSString *kRoomKickoutTime; + +@interface XPMiniRoomView () +///底部的底图 +@property (nonatomic,strong) UIImageView *backImageView; +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///返回 +@property (nonatomic,strong) UIButton *backBtn; + +/// +@property (nonatomic,strong) UIImageView *playView; +///房间最小化 +@property (nonatomic,strong) RoomInfoModel *roomInfo; +///房间最小化的时候 传入的用户信息 +@property (nonatomic,strong) UserInfoModel *userInfo; +///当前最小化的房间的uid 如果没有的话 为nil +@property (nonatomic,strong) NSString *currentRoomUid; +///房间的id +@property (nonatomic,strong) NSString *currentRoomId; +///麦序 +@property (nonatomic, strong) NSMutableDictionary *micQueue; +///正在播放的音乐 +@property (nonatomic,strong) Music *currentMusic; +///当前的下表 +@property (nonatomic,assign) NSInteger currentIndex; +///数据库请求 +@property (nonatomic,strong) NSFetchRequest *request; +///音符 +@property (nonatomic,strong) XPNoteView *noteView; + +@end + + +@implementation XPMiniRoomView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [[NIMSDK sharedSDK].chatroomManager addDelegate:self]; + [[NIMSDK sharedSDK].chatManager addDelegate:self]; + [[NIMSDK sharedSDK].loginManager addDelegate:self]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(roomBackMusicPlayFinish:) name:kRoomBackMusicPlayMusicFinishKey object:nil]; + [self initEvents]; + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Public Method +- (void)configRoomMiniView:(RoomInfoModel *)roomInfo userInfo:(UserInfoModel *)userInfo micQueue:(NSMutableDictionary *)micQueue { + self.hidden = NO; + self.currentRoomUid = [NSString stringWithFormat:@"%ld", roomInfo.uid]; + self.currentRoomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + self.roomInfo = roomInfo; + self.userInfo = userInfo; + self.micQueue = micQueue; + [self startAvatarAnimation]; + } + +- (void)hiddenRoomMiniView { + [self.avatarImageView.layer removeAllAnimations]; + + self.currentRoomUid = nil; + self.currentRoomId = nil; + self.roomInfo = nil; + self.userInfo = nil; + self.micQueue = nil; + self.hidden = YES; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.frame = CGRectMake(KScreenWidth - 74, KScreenHeight - kNavigationHeight - kTabBarHeight - 140, 67, 75); + + [self addSubview:self.backImageView]; + + [self.backImageView addSubview:self.avatarImageView]; + [self.backImageView addSubview:self.playView]; + [self.backImageView addSubview:self.noteView]; + [self addSubview:self.backBtn]; + self.backImageView.layer.cornerRadius = 57/2; + self.backImageView.layer.masksToBounds = YES; + self.backImageView.layer.borderWidth = 2; + self.backImageView.layer.borderColor = [UIColor whiteColor].CGColor; +} + +- (void)initSubViewConstraints { + + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.bottom.equalTo(self); + make.width.height.mas_equalTo(57); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.backImageView); + }]; + [self.noteView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self.avatarImageView); + make.height.mas_equalTo(14); + make.width.mas_equalTo(20); + }]; + + [self.playView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.equalTo(self.backImageView); + make.width.mas_equalTo(15); + make.height.mas_equalTo(12); + }]; + [self.backBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(20); + make.left.equalTo(self.backImageView.mas_left).mas_offset(47); + make.bottom.equalTo(self.backImageView.mas_bottom).mas_offset(-50); + }]; +} + + +- (void)initEvents { + UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(roomMiniTag:)]; + pan.delaysTouchesBegan = YES; + [self addGestureRecognizer:pan]; + + UITapGestureRecognizer *enterRoomTag = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(enterRomRecognizer:)]; + [self addGestureRecognizer:enterRoomTag]; +} + +- (void)startAvatarAnimation { + CABasicAnimation *rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; + rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 ]; + rotationAnimation.duration = 3; + rotationAnimation.cumulative = YES; + rotationAnimation.repeatCount = MAXFLOAT; + rotationAnimation.removedOnCompletion = NO; + [self.avatarImageView.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"]; +} + +- (void)cancelRoomArrangeMic { + ///退出排麦 + if (self.roomInfo.roomModeType == RoomModeType_Open_Micro_Mode || self.roomInfo.roomModeType == RoomModeType_Open_Blind) { + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; + NSString * uid = [AccountInfoStorage instance].getUid; + [Api getRoomArrangeMicList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + ArrangeMicModel * arrangeMicModel= [ArrangeMicModel modelWithJSON:data.data]; + if (arrangeMicModel.myPos.intValue > 0) { + __block NSString * grouptype = @"0"; + if (self.roomInfo.roomModeType == RoomModeType_Open_Blind) { + [arrangeMicModel.queue enumerateObjectsUsingBlock:^(ArrangeMicUserModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.uid.integerValue == [AccountInfoStorage instance].getUid.integerValue) { + grouptype = [NSString stringWithFormat:@"%ld", obj.groupType]; + *stop = YES; + } + }]; + } + [Api cancelArrangeMic:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {} roomUid:roomUid operUid:uid groupType:grouptype]; + } + } + } roomUid:roomUid operUid:uid page:@"1" pageSize:@"50"]; + }else if(self.roomInfo.roomModeType == RoomModeType_Open_PK_Mode) { + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; + NSString * uid = [AccountInfoStorage instance].getUid; + [Api getRoomPKUserList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + ArrangeMicModel * arrangeMicModel= [ArrangeMicModel modelWithJSON:data.data]; + if (arrangeMicModel.myPos.intValue > 0) { + __block NSString * grouptype = @"0"; + [arrangeMicModel.queue enumerateObjectsUsingBlock:^(ArrangeMicUserModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.uid.integerValue == [AccountInfoStorage instance].getUid.integerValue) { + grouptype = [NSString stringWithFormat:@"%ld", obj.groupType]; + *stop = YES; + } + }]; + [Api cancelRoomPKArrangeMic:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + + } roomUid:roomUid operUid:uid groupType:grouptype]; + } + } + } roomUid:roomUid operUid:uid page:@"1" pageSize:@"50"]; + } +} + +///自定义消息 是否可以加到 公屏 需要自己维护 +- (BOOL)isCanDisplayMessage:(NIMMessage *)message { + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) { + AttachmentModel *attachment = (AttachmentModel *)obj.attachment; + if (attachment.first == CustomMessageType_Face && attachment.second == Custom_Message_Sub_Face_Send) { + if ([attachment.data[@"data"] isKindOfClass:[NSArray class]]) { + NSArray * array = [RoomFaceSendInfoModel modelsWithArray:attachment.data[@"data"]]; + for (int i = 0; i< array.count; i++) { + RoomFaceSendInfoModel * sendInfo = [array safeObjectAtIndex1:i]; + if (sendInfo.resultIndexes.count <=0) { + return NO; + } + } + } + }else if (attachment.first == CustomMessageType_Room_PK && attachment.second == Custom_Message_Sub_Room_PK_Manager_Up_Mic) { + if (attachment.data && [attachment.data allKeys].count > 0) { + for (NSDictionary * dic in [attachment.data allValues]) { + RoomPKChooseUserModel * userModel = [RoomPKChooseUserModel modelWithDictionary:dic]; + if (userModel.groupType == GroupType_Red || userModel.groupType == GroupType_Blue) { + return YES; + } + } + } + return NO; + } else if(attachment.first == CustomMessageType_Room_Sailing && (attachment.second == Custom_Message_Sub_Sailing_AllRoom_Notify || attachment.second == Custom_Message_Sub_Sailing_InRoom_NeedAllMicSend)) { + RoomSailingPrizeModel * prizeModel = [RoomSailingPrizeModel modelWithDictionary:attachment.data]; + if (self.userInfo.userLevelVo.experLevelSeq > prizeModel.userLevelLimit) { + return YES; + } + } + return [[[self supportMessageDic] objectForKey:@(attachment.first)] containsObject:@(attachment.second)]; + } + return NO; +} + +- (NSDictionary *)supportMessageDic { + return @{ + @(CustomMessageType_AllMicroSend): + [NSSet setWithObjects: + @(Custom_Message_Sub_AllMicroSend), + @(Custom_Message_Sub_AllMicroLuckySend), + @(Custom_Message_Sub_AllBatchSend), + @(Custom_Message_Sub_AllBatchMicroLuckySend), + nil], + @(CustomMessageType_Gift): + [NSSet setWithObjects: + @(Custom_Message_Sub_Gift_Send), + @(Custom_Message_Sub_Gift_LuckySend), + nil], + @(CustomMessageType_Room_Tip): + [NSSet setWithObjects: + @(Custom_Message_Sub_Room_Tip_ShareRoom), + @(Custom_Message_Sub_Room_Tip_Attention_Owner), + nil], + @(CustomMessageType_Kick_User): + [NSSet setWithObjects: + @(Custom_Message_Sub_Kick_BeKicked), + @(Custom_Message_Sub_Kick_BlackList), + nil], + @(CustomMessageType_Queue): + [NSSet setWithObjects: + @(Custom_Message_Sub_Queue_Kick), + nil], + @(CustomMessageType_Look_Love): + [NSSet setWithObjects: + @(Custom_Message_Sub_Look_Love_Me), + @(Custom_Message_Sub_Look_Love_InRoom), + @(Custom_Message_Sub_Look_Love_AllRoom), + @(Custom_Message_Sub_Look_Love_AllRoom_Notify), + @(Custom_Message_Sub_Look_Love_InRoom_NeedAllMicSend), + nil], + @(CustomMessageType_Arrange_Mic): + [NSSet setWithObjects: + @(Custom_Message_Sub_Arrange_Mic_Mode_Open), + @(Custom_Message_Sub_Arrange_Mic_Mode_Close), + @(Custom_Message_Sub_Arrange_Mic_Free_Mic_Open), + @(Custom_Message_Sub_Arrange_Mic_Free_Mic_Close), + nil], + @(CustomMessageType_Update_RoomInfo): + [NSSet setWithObjects: + @(Custom_Message_Sub_Update_RoomInfo_MessageState), + @(Custom_Message_Sub_Update_RoomInfo_AnimateEffect), + nil], + @(CustomMessageType_Collection_Room): + [NSSet setWithObjects: + @(Custom_Message_Sub_Collect_Room_Tips), + nil], + @(CustomMessageType_RoomPlay_Dating): + [NSSet setWithObjects: + @(Custom_Message_Sub_Room_Play_Dating_Pick_Heart), + @(Custom_Message_Sub_Room_Play_Dating_Result_Mutual), + @(Custom_Message_Sub_Room_Play_Dating_Result_Not_Mutual), + nil], + @(CustomMessageType_Noble_VIP): + [NSSet setWithObjects: + @(Custom_Message_Sub_Room_Open_Noble_VIP), + @(Custom_Message_Sub_Room_Noble_LevelUp), + @(Custom_Message_Sub_AllRoom_Noble_LevelUp_Suspend), + nil], + @(CustomMessageType_Face): + [NSSet setWithObjects: + @(Custom_Message_Sub_Face_Send), + nil], + @(CustomMessageType_Anchor_FansTeam): + [NSSet setWithObjects: + @(Custom_Message_Sub_FansTeam_Open_Success), + @(Custom_Message_Sub_FansTeam_Open_Fail), + @(Custom_Message_Sub_FansTeam_Join_Success), + @(Custom_Message_Sub_FansTeam_Out_Success), + nil], + @(CustomMessageType_Hall_Super_Admin): + [NSSet setWithObjects: + @(Custom_Message_Sub_Hall_Super_Admin_Kick_Manager_Out_Room), + nil], + @(CustomMessageType_Room_PK): + [NSSet setWithObjects: + @(Custom_Message_Sub_Room_PK_Manager_Up_Mic), + @(Custom_Message_Sub_Room_PK_Mode_Close), + @(Custom_Message_Sub_Room_PK_Result), + @(Custom_Message_Sub_Room_PK_Mode_Open), + @(Custom_Message_Sub_Room_PK_Start), + @(Custom_Message_Sub_Room_PK_Re_Start), + nil], + @(CustomMessageType_LuckyBag): + [NSSet setWithObjects: + @(Custom_Message_Sub_Room_Gift_LuckBag_Server), + nil], + @(CustomMessageType_Gift_Compound): + [NSSet setWithObjects:@(Custom_Message_Sub_Gift_Compound), + nil], + @(CustomMessageType_Room_Sailing): + [NSSet setWithObjects: + @(Custom_Message_Sub_Sailing_Me), + @(Custom_Message_Sub_Sailing_InRoom), + @(Custom_Message_Sub_Sailing_AllRoom), + @(Custom_Message_Sub_Sailing_AllRoom_Notify), + @(Custom_Message_Sub_Sailing_InRoom_NeedAllMicSend), + nil], + }; +} + +#pragma mark - NIMChatroomManagerDelegate +- (void)chatroomBeKicked:(NIMChatroomBeKickedResult *)result { + ///如果不是最小化的是 没必要监听 + if ([XPRoomMiniManager shareManager].getRoomInfo == nil) return; + if (result.reason == 2) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPMiniRoomView0")]; + } else if (result.reason == 5) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPMiniRoomView1")]; + } + [[XPRoomMiniManager shareManager] configRoomInfo:nil]; + [[XPRoomMiniManager shareManager] configUserInfo:nil]; + [[XPRoomMiniManager shareManager] configCurrentMusic:nil isPlaying:NO]; + [[XPRoomMiniManager shareManager] resetLocalMessage]; + [[RtcManager instance] exitRoom]; + [self cancelRoomArrangeMic]; + [self hiddenRoomMiniView]; + NSMutableDictionary *kickoutDic = [[NSUserDefaults standardUserDefaults]valueForKey:kRoomKickoutTime]; + if(kickoutDic == nil){ + kickoutDic = [NSMutableDictionary new]; + } + NSString *time = [NSDate getNowTimeTimestamp]; + [kickoutDic setValue:time forKey:@(self.roomInfo.roomId).stringValue]; + [[NSUserDefaults standardUserDefaults]synchronize]; +} + +#pragma mark - NIMLoginManagerDelegate +- (void)onKickout:(NIMLoginKickoutResult *)result { + ///如果不是最小化的是 没必要监听 + if ([XPRoomMiniManager shareManager].getRoomInfo == nil) return; + [[XPRoomMiniManager shareManager] configRoomInfo:nil]; + [[XPRoomMiniManager shareManager] configUserInfo:nil]; + [[XPRoomMiniManager shareManager] configCurrentMusic:nil isPlaying:NO]; + [[XPRoomMiniManager shareManager] resetLocalMessage]; + [[RtcManager instance] exitRoom]; + [self hiddenRoomMiniView]; +} +#pragma mark - NIMChatManagerDelegate +- (void)onRecvMessages:(NSArray *)messages { + ///如果不是最小化的是 没必要监听 + if ([XPRoomMiniManager shareManager].getRoomInfo == nil) return; + + for (NIMMessage * message in messages) { + // 非房间内消息不处理 + if (message.session.sessionType != NIMSessionTypeChatroom) { + continue; + } + + // 非本房间不处理 + if (![message.session.sessionId isEqualToString:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]) { + continue; + } + + if (message.messageType == NIMMessageTypeNotification) { + NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; + NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; + [self handleNIMNotificationMessage:content]; + [self handleNIMNotificationSaveMessage:message]; + } else if (message.messageType == NIMMessageTypeCustom) { + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) { + [self handleNIMCustomMessage:obj.attachment]; + if ([self isCanDisplayMessage:message]) { + [[XPRoomMiniManager shareManager] saveRoomMessage:message]; + } + } + }else if(message.messageType == NIMMessageTypeText) { + [self handleNIMTextMessage:message]; + } else if(message.messageType == NIMMessageTypeTip) { + [self handleNIMTextMessage:message]; + } + } +} + +- (void)handleNIMNotificationMessage:(NIMChatroomNotificationContent *)content { + BOOL microQueueChanged = NO; + switch (content.eventType) { + case NIMChatroomEventTypeInfoUpdated: // 麦序状态更新 + { + NSDictionary *data = [content.notifyExt toJSONObject]; + int type = [data[@"type"] intValue]; + NSArray* microStates; + switch (type) { + case 2: + microStates = @[[MicroStateModel modelWithJSON:data[@"micInfo"]]]; + break; + case 3: + microStates = [MicroStateModel modelsWithArray:data[@"micInfo"]]; + break; + } + if (microStates && microStates.count > 0) { + for (MicroStateModel *microState in microStates) { + MicroQueueModel *micSequence = [self.micQueue objectForKey:[NSString stringWithFormat:@"%d", microState.position]]; + micSequence.microState = microState; + } + microQueueChanged = YES; + } + + NSMutableDictionary *lastRoomInfoDic = [NSMutableDictionary dictionaryWithDictionary:[self.roomInfo model2dictionary]]; + [lastRoomInfoDic addEntriesFromDictionary: ((NSString *)data[@"roomInfo"]).toJSONObject]; + RoomInfoModel *newRoomInfo = [RoomInfoModel modelWithJSON:lastRoomInfoDic]; + //TODO: 从小游戏房间切换到普通房间的话 mgid不会被清除掉 + if (newRoomInfo.type != RoomType_MiniGame) { + newRoomInfo.mgId = 0; + } + if (newRoomInfo.roomModeType == RoomModeType_Open_Blind && self.roomInfo.roomModeType != RoomModeType_Open_Blind) { + ///普通房 切换为相亲房 + newRoomInfo.datingState = RoomDatingStateChangeType_Open; + } else if(newRoomInfo.roomModeType != RoomModeType_Open_Blind && self.roomInfo.roomModeType == RoomModeType_Open_Blind) { + ///关闭了相亲房 + newRoomInfo.datingState = RoomDatingStateChangeType_Close; + } else { + newRoomInfo.datingState = RoomDatingStateChangeType_Normal; + } + self.roomInfo = newRoomInfo; + } + break; + + case NIMChatroomEventTypeQueueChange: // 麦序上下麦 + { + NSDictionary* data = (NSDictionary *)content.ext; + NSString* position = [data objectForKey:NIMChatroomEventInfoQueueChangeItemKey]; + UserInfoModel* userInfo = [UserInfoModel modelWithJSON:[data objectForKey:NIMChatroomEventInfoQueueChangeItemValueKey]]; + NSInteger changeType = [data[NIMChatroomEventInfoQueueChangeTypeKey] integerValue]; + + // 先清除该用户旧的麦位 + for (MicroQueueModel *sequence in self.micQueue.allValues) { + if (userInfo.uid == sequence.userInfo.uid) { + sequence.userInfo = nil; + } + } + + if (changeType == 1) { // 上麦 + MicroQueueModel *sequence = [self.micQueue objectForKey:position]; + sequence.userInfo = userInfo; + } + + microQueueChanged = YES; + } + break; + case NIMChatroomEventTypeExit: + case NIMChatroomEventTypeKicked: + { + for (NIMChatroomNotificationMember *member in content.targets) { + for (MicroQueueModel *sequence in self.micQueue.allValues) { + if (member.userId.integerValue == sequence.userInfo.uid) { + sequence.userInfo = nil; + microQueueChanged = YES; + } + } + } + } + break; + default: + break; + } + + if (microQueueChanged) { + [self microQueueUpdated]; + } +} + +- (void)microQueueUpdated { + BOOL selfNeedBroadcast = NO; + for (int i = 0; i < self.micQueue.allKeys.count; i++) { + MicroQueueModel * model = [self.micQueue objectForKey:[NSString stringWithFormat:@"%d", i]]; + if (model.userInfo.uid == [AccountInfoStorage instance].getUid.integerValue) { + selfNeedBroadcast = model.microState.micState == MicroMicStateType_Open; + } + } + if (self.roomInfo.type == RoomType_Anchor && [[AccountInfoStorage instance].getUid isEqualToString:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]) { + selfNeedBroadcast = YES;///个播房房主默认角色为主播 + } + [[RtcManager instance] broadcast:selfNeedBroadcast]; +} + +- (void)handleNIMCustomMessage:(AttachmentModel *)attachment { + if(attachment.first == CustomMessageType_Queue && attachment.second == Custom_Message_Sub_Queue_Invite) { + NSDictionary *dic = attachment.data; + MicroInviteExtModel *inviteModel = [MicroInviteExtModel modelWithDictionary:dic]; + if (inviteModel.uid.integerValue == self.userInfo.uid) { + NSString *position = inviteModel.micPosition; + + MicroQueueModel *micro = [self.micQueue objectForKey:position]; + if (!micro || micro.userInfo) return; // 当前麦位有人,什么都不做。 + + RoomInfoModel* roomInfo = self.roomInfo; + NSString* roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + UserInfoModel* userInfo = self.userInfo; + + NIMChatroomQueueUpdateRequest *request = [[NIMChatroomQueueUpdateRequest alloc]init]; + request.key = position; + request.value = [[self configUpdateChatRoomQueueExt:userInfo] toJSONString]; + request.roomId = roomId; + request.transient = YES; + + [[NIMSDK sharedSDK].chatroomManager updateChatroomQueueObject:request completion:^(NSError * _Nullable error) { + if (error) return; + [self cancelRoomArrangeMic]; + [RtcManager instance].localMuted = YES; + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.title = YMLocalizedString(@"XPMiniRoomView2"); + config.message = @"你已被房主或管理员拉上麦,但并未开启麦克风。如需要说话,请打开麦克风。"; + [TTPopup alertWithConfig:config confirmHandler:^{ + + } cancelHandler:^{ + + }]; + }]; + } + } else if (attachment.first == CustomMessageType_Update_RoomInfo && attachment.second == Custom_Message_Sub_Update_RoomInfo_MessageState) { + [[XPRoomMiniManager shareManager] resetLocalMessage]; + } +} + +#pragma mark - 最小化 公屏的显示问题 +///添加信息 +- (void)addRoomMessage:(NIMMessage *)message { + if (self.roomInfo.isCloseScreen) { + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) { + AttachmentModel *attachment = (AttachmentModel *)obj.attachment; + if (attachment.first == CustomMessageType_Update_RoomInfo && attachment.second == Custom_Message_Sub_Update_RoomInfo_MessageState){ + [[XPRoomMiniManager shareManager] saveRoomMessage:message]; + } + } + } else { + [[XPRoomMiniManager shareManager] saveRoomMessage:message]; + } +} + +- (void)handleNIMNotificationSaveMessage:(NIMMessage *)message { + NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; + NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; + RoomInfoModel * roomInfo = self.roomInfo; + if (content.eventType == NIMChatroomEventTypeEnter) { + if (roomInfo.isCloseScreen) { + AttachmentModel *attachement = [[AttachmentModel alloc]init]; + attachement.first = CustomMessageType_Update_RoomInfo; + attachement.second = Custom_Message_Sub_Update_RoomInfo_MessageState; + attachement.data = @{@"roomInfo":self.roomInfo.model2dictionary}; + NIMMessage *message = [[NIMMessage alloc]init]; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachement; + message.messageObject = object; + [self addRoomMessage:message]; + return; + } else { + [self addRoomMessage:message]; + NIMChatroomNotificationMember *member = content.targets[0]; + if (member.userId.integerValue == [AccountInfoStorage instance].getUid.integerValue) { + if (!roomInfo.hasAnimationEffect) { + [self roomInfoNoGiftAnimationMessage:message]; + } + } + } + } else if(content.eventType == NIMChatroomEventTypeInfoUpdated) { + if (roomInfo.isCloseScreen) {return;} + if (roomInfo.datingState == RoomDatingStateChangeType_Open) { + [self addRoomMessage:message]; + } + } +} + +- (void)handleNIMTextMessage:(NIMMessage *)message { + [self addRoomMessage:message]; +} + +- (void)roomInfoNoGiftAnimationMessage:(NIMMessage *)message { + AttachmentModel *attachement = [[AttachmentModel alloc]init]; + attachement.first = CustomMessageType_Update_RoomInfo; + attachement.second = Custom_Message_Sub_Update_RoomInfo_AnimateEffect; + NIMMessage *tempMessage = [[NIMMessage alloc]init]; + NIMCustomObject *customObject = [[NIMCustomObject alloc]init]; + customObject.attachment = attachement; + tempMessage.messageObject = customObject; + [self addRoomMessage:tempMessage]; +} + +- (NSDictionary *)configUpdateChatRoomQueueExt:(UserInfoModel *)userInfo { + NSMutableDictionary * dic = [NSMutableDictionary dictionary]; + [dic setValue:@(userInfo.gender) forKey:@"gender"]; + [dic setValue:userInfo.avatar forKey:@"avatar"]; + [dic setValue:@(userInfo.uid) forKey:@"uid"]; + [dic setValue:userInfo.nick forKey:@"nick"]; + NSString * headWearUrl = userInfo.headwearEffect.length > 0 ? userInfo.headwearEffect : userInfo.headwearPic; + if (headWearUrl.length > 0) { + [dic setValue:headWearUrl forKey:@"headWearUrl"]; + } + if (userInfo.micCircle.length) { + [dic setValue:userInfo.micCircle forKey:@"micCircle"]; + } + if (userInfo.micNickColor.length) { + [dic setValue:userInfo.micNickColor forKey:@"micNickColor"]; + } + [dic setValue:@(userInfo.userVipInfoVO.enterHide) forKey:@"enterHide"]; + [dic setValue:@(userInfo.userVipInfoVO.preventKick) forKey:@"preventKick"]; + return dic; +} + +#pragma mark - Event Response +- (void)closeButtonAction:(UIButton *)sender { + if([XPRoomMiniManager shareManager].curState){ + [XPRoomMiniManager shareManager].curState = nil; + } + [XPRoomMiniManager shareManager].curState = nil; + [[NIMSDK sharedSDK].chatroomManager exitChatroom:self.currentRoomId completion:nil]; + [self reportOutRoom]; + [[RtcManager instance] exitRoom]; + [[XPRoomMiniManager shareManager] configRoomInfo:nil]; + [[XPRoomMiniManager shareManager] configUserInfo:nil]; + [[XPRoomMiniManager shareManager] configCurrentMusic:nil isPlaying:NO]; + [[XPRoomMiniManager shareManager] resetLocalMessage]; + [self hiddenRoomMiniView]; + [XPSkillCardPlayerManager shareInstance].isMineInMic = NO; +} + +- (void)reportOutRoom { + if ([[AccountInfoStorage instance] getTicket].length < 1) { + return; + } + [Api requestReportUserOutRoom:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + + } uid:[[AccountInfoStorage instance] getUid] roomUid:self.currentRoomUid ticket:[[AccountInfoStorage instance] getTicket]]; +} + +- (void)enterRomRecognizer:(UITapGestureRecognizer *)tap { + if (self.currentRoomUid > 0 && self.controller) { + [XPRoomViewController openMiniRoom:self.currentRoomUid viewController:self.controller]; + } +} + +- (void)roomMiniTag:(UIPanGestureRecognizer*)p { + UIWindow *appWindow = [UIApplication sharedApplication].delegate.window; + CGPoint panPoint = [p locationInView:appWindow]; + if (p.state == UIGestureRecognizerStateBegan) { + self.alpha = 1; + } else if(p.state == UIGestureRecognizerStateChanged) { + self.center = CGPointMake(panPoint.x, panPoint.y); + } else if(p.state == UIGestureRecognizerStateEnded + || p.state == UIGestureRecognizerStateCancelled) { + self.alpha = 1; + CGFloat touchWidth = self.frame.size.width; + CGFloat touchHeight = self.frame.size.height; + CGFloat screenWidth = [[UIScreen mainScreen] bounds].size.width; + CGFloat screenHeight = [[UIScreen mainScreen] bounds].size.height; + // fabs 是取绝对值的意思 + CGFloat left = fabs(panPoint.x); + CGFloat right = fabs(screenWidth - left); + CGFloat top = fabs(panPoint.y); + CGFloat bottom = fabs(screenHeight - top); + CGFloat minSpace = 0; + minSpace = MIN(MIN(MIN(top, left), bottom), right); + CGPoint newCenter; + CGFloat targetY = 0; + //校正Y + if (panPoint.y < 15 + touchHeight / 2.0) { + targetY = 15 + touchHeight / 2.0; + }else if (panPoint.y > (screenHeight - touchHeight / 2.0 - 15)) { + targetY = screenHeight - touchHeight / 2.0 - 15; + }else{ + targetY = panPoint.y; + } + + if (minSpace == left) { + newCenter = CGPointMake(15+touchWidth/2.0, targetY); + }else if (minSpace == right) { + newCenter = CGPointMake(screenWidth - touchWidth/2.0 - 15, targetY); + }else if (minSpace == top) { + newCenter = CGPointMake(panPoint.x, touchWidth / 3); + }else { + newCenter = CGPointMake(panPoint.x, screenHeight - touchWidth / 3); + } + [UIView animateWithDuration:0.25 animations:^{ + if (newCenter.y + self.frame.size.height / 2 > KScreenHeight - kSafeAreaBottomHeight - 44) { + self.center = CGPointMake(newCenter.x, KScreenHeight - self.frame.size.height / 2 - kSafeAreaBottomHeight - 44); + }else { + self.center = newCenter; + } + }]; + } +} +#pragma mark - 背景音乐的播放 +- (void)roomBackMusicPlayFinish:(NSNotification *)notification { + NSString * filePath = [notification object]; + Music * currentMusic = [XPRoomMiniManager shareManager].getCurrentMusic; + if (filePath && currentMusic) { + self.currentMusic = currentMusic; + NSArray * array = [[XPCoreDataManager shareInstance].managedObjectContext executeFetchRequest:self.request error:nil]; + __block NSInteger currentIndex = 0; + [array enumerateObjectsUsingBlock:^(Music * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj.musicName isEqualToString:currentMusic.musicId]) { + currentIndex = idx; + *stop = YES; + } + }]; + self.currentIndex = currentIndex; + NSInteger order = [[NSUserDefaults standardUserDefaults] integerForKey:kRoomBackMusicPlayMusicOrderKey]; + if (order == 0) { + NSInteger index = self.currentIndex +1; + [self playNextMusic:index]; + } else { + [self playNextMusic:currentIndex]; + } + } +} + +- (void)playNextMusic:(NSInteger)index { + NSArray * array = [[XPCoreDataManager shareInstance].managedObjectContext executeFetchRequest:self.request error:nil]; + if (index >= array.count) { + index = 0; + if (self.currentMusic) { + [[RtcManager instance] changePlayState:BackMusicPlayState_Resume]; + } else { + Music * music = [array safeObjectAtIndex1:index]; + [self playCurrentMusic:music index:index]; + } + } else { + Music * music = [array safeObjectAtIndex1:index]; + [self playCurrentMusic:music index:index]; + } +} + +- (void)playCurrentMusic:(Music *)music index:(NSInteger)index { + NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; + int musicVolum = (int)[defaults integerForKey:kRoomBackMusicAudioMixingVolumeKey]; + musicVolum = musicVolum > 0 ? musicVolum : 50; + + int captureVolum = (int)[defaults integerForKey:kRoomBackMusicCaptureVolumeKey]; + captureVolum = captureVolum > 0 ? captureVolum : 50; + + + self.currentMusic = music; + self.currentIndex = index; + NSString * documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; + documentsPath = [NSString stringWithFormat:@"%@/music/",documentsPath]; + NSString * musicPath; + if (music.musicName) { + musicPath = [documentsPath stringByAppendingString:music.musicName]; + } else { + return; + } + [[RtcManager instance] playBackMusic:musicPath musicId:0 completion:^(NSString * filePath) { + NSInteger order = [[NSUserDefaults standardUserDefaults] integerForKey:kRoomBackMusicPlayMusicOrderKey]; + if (order == 0) { + NSInteger index = self.currentIndex + 1; + [self playNextMusic:index]; + } else { + [self playNextMusic:self.currentIndex]; + } + }]; + [[RtcManager instance] updateUserSound:captureVolum]; + [[RtcManager instance] updateMusicSound:musicVolum]; +} + +#pragma mark - Getters And Setters +- (void)setRoomInfo:(RoomInfoModel *)roomInfo { + _roomInfo = roomInfo; + if (_roomInfo) { + self.avatarImageView.imageUrl = _roomInfo.avatar; + if (_roomInfo.title.length > 8) { + _roomInfo.title = [NSString stringWithFormat:@"%@…", [_roomInfo.title substringToIndex:8]]; + } + } +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; +// _backImageView.image = [UIImage imageNamed:@"room_mini_background"]; + } + return _backImageView; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + + _avatarImageView.userInteractionEnabled = YES; + } + return _avatarImageView; +} + +- (UIImageView *)playView{ + if (!_playView){ + _playView = [UIImageView new]; +// _playView.image = [UIImage imageNamed:@"home_mine_room_play"]; + } + return _playView; +} + +-(UIButton *)backBtn{ + if (!_backBtn){ + _backBtn = [UIButton new]; + [_backBtn setBackgroundImage:[UIImage imageNamed:@"min_room_back"] forState:UIControlStateNormal]; + [_backBtn setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + [_backBtn addTarget:self action:@selector(closeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _backBtn; +} + +- (NSFetchRequest *)request { + if (!_request) { + _request = [NSFetchRequest fetchRequestWithEntityName:@"Music"]; + } + return _request; +} +- (XPNoteView *)noteView { + if (!_noteView) { + _noteView = [[XPNoteView alloc] init]; + _noteView.userInteractionEnabled = YES; + _noteView.pillarColor = [UIColor colorWithWhite:1 alpha:1]; + _noteView.pillarWidth = 3; + [_noteView startAnimation]; + } + return _noteView; +} +@end diff --git a/YuMi/Modules/YMRoom/View/XPRoomMiniManager.h b/YuMi/Modules/YMRoom/View/XPRoomMiniManager.h new file mode 100644 index 00000000..9c6d5818 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/XPRoomMiniManager.h @@ -0,0 +1,38 @@ +// +// YMRoomMiniManager.h +// YUMI +// +// Created by YUMI on 2021/12/8. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class RoomInfoModel, NIMMessage, Music, UserInfoModel; +@interface XPRoomMiniManager : NSObject + +///最小化时,免费礼物的倒计时还在,用来判断是否弹出获得免费礼物弹窗 +@property (nonatomic,copy) NSString *_Nullable curState; ++ (instancetype)shareManager; + +- (RoomInfoModel *)getRoomInfo; + +- (void)configRoomInfo:(RoomInfoModel * _Nullable)roomInfo; + +- (UserInfoModel *)getUserInfo; + +- (void)configUserInfo:(UserInfoModel * _Nullable)userInfo; +///保存一下 房间的公屏防止最小化出去之后 被清空了 +- (void)saveRoomMessage:(NIMMessage *)message; +- (NSArray *)getLocalCurrentRoomMessage; +- (void)resetLocalMessage; + +///获取当前播放的歌曲 +- (Music *)getCurrentMusic; +///是否正在播放 +- (BOOL)musicPlaying; +///最小化的时候也要保存一下当前播放的歌曲 +- (void)configCurrentMusic:(Music * _Nullable)roomInfo isPlaying:(BOOL)isPlaying; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/XPRoomMiniManager.m b/YuMi/Modules/YMRoom/View/XPRoomMiniManager.m new file mode 100644 index 00000000..cbd7bef4 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/XPRoomMiniManager.m @@ -0,0 +1,89 @@ +// +// YMRoomMiniManager.m +// YUMI +// +// Created by YUMI on 2021/12/8. +// + +#import "XPRoomMiniManager.h" +#import "XPRoomMessageConstant.h" + +@interface XPRoomMiniManager () +///公屏消息 +@property (nonatomic,strong) NSMutableArray *messageArray; +///房间信息 +@property (nonatomic,strong) RoomInfoModel *roomInfo; +///当前播放的歌曲 +@property (nonatomic,strong) Music *musicInfo; +///是否正在播放 +@property (nonatomic,assign) BOOL isPlaying; +///用户信息 +@property (nonatomic,strong) UserInfoModel *userInfo; +@end + +@implementation XPRoomMiniManager + ++ (instancetype)shareManager { + static dispatch_once_t onceToken = 0; + static id instance; + dispatch_once(&onceToken, ^{ + instance = [[XPRoomMiniManager alloc] init]; + }); + return instance; +} + +- (RoomInfoModel *)getRoomInfo { + return self.roomInfo; +} + +- (void)configRoomInfo:(RoomInfoModel *_Nullable)roomInfo { + self.roomInfo = roomInfo; +} + +- (UserInfoModel *)getUserInfo { + return self.userInfo; +} + +- (void)configUserInfo:(UserInfoModel * _Nullable)userInfo { + self.userInfo = userInfo; +} + +///获取当前播放的歌曲 +- (Music *)getCurrentMusic { + return self.musicInfo; +} + +- (BOOL)musicPlaying { + return self.isPlaying; +} + +///最小化的时候也要保存一下当前播放的歌曲 +- (void)configCurrentMusic:(Music *)music isPlaying:(BOOL)isPlaying { + self.musicInfo = music; + self.isPlaying = isPlaying; +} + +///保存一下 房间的公屏防止最小化出去之后 被清空了 +- (void)saveRoomMessage:(NIMMessage *)message { + [self.messageArray addObject:message]; + if (self.messageArray.count > kRoomMessageMaxLength) { + NSIndexSet *set = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, kRoomMessageMaxLength/2)]; + NSArray *needRemoveMsgArray = [self.messageArray objectsAtIndexes:set]; + [self.messageArray removeObjectsInArray:needRemoveMsgArray]; + } +} +- (NSArray *)getLocalCurrentRoomMessage { + return [self.messageArray copy]; +} +- (void)resetLocalMessage { + [self.messageArray removeAllObjects]; +} + +- (NSMutableArray *)messageArray { + if (!_messageArray) { + _messageArray = [NSMutableArray array]; + } + return _messageArray; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/XPRoomViewController.h b/YuMi/Modules/YMRoom/View/XPRoomViewController.h new file mode 100644 index 00000000..91777755 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/XPRoomViewController.h @@ -0,0 +1,55 @@ +// +// YMRoomViewController.h +// YUMI +// +// Created by YUMI on 2021/10/11. +// + +#import "MvpViewController.h" +#import "XPMessageRemoteExtModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomViewController : MvpViewController + +/** XPRoomViewController 不允许外部 init ,请通过该方法启动房间。 + * @params roomUid 房主uid + * @params viewController 启动方 + */ ++ (BOOL)openRoom:(NSString*)roomUid viewController:(UIViewController*)viewController; + +/**最小化进房 + * @params roomUid 房主uid + * @params viewController 启动方 + */ ++ (BOOL)openMiniRoom:(NSString*)roomUid viewController:(UIViewController*)viewController; + +/** 跟随进房 + * @params roomUid 房主uid + * @params fromNick 跟随的人用户昵称 + * @params fromType 跟随的类型 + * @params fromUid 跟随人的uid + * @params viewController 启动方 + */ ++ (BOOL)openRoom:(NSString*)roomUid fromNick:(NSString * __nullable)fromNick fromType:(UserEnterRoomFromType)fromType fromUid:(NSString * __nullable)fromUid viewController:(UIViewController*)viewController; + +/** XPRoomViewController 不允许外部 init ,请通过该方法启动房间。 + * @params roomUid 房主uid + * @params viewController 启动方 + * @params mgId 小游戏的id + */ ++ (BOOL)openRoom:(NSString*)roomUid mgId:(NSString *)mgId viewController:(UIViewController*)viewController; + +/// h5进房并弹出礼物面板 +/// @param roomUid 房主Uid +/// @param giftId 礼物id +/// @param viewController 启动方 ++ (BOOL)openRoom:(NSString *)roomUid giftId:(NSString *)giftId viewController:(UIViewController *)viewController; + +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; +- (id)copy NS_UNAVAILABLE; +- (id)mutableCopy NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/XPRoomViewController.m b/YuMi/Modules/YMRoom/View/XPRoomViewController.m new file mode 100644 index 00000000..ae73911e --- /dev/null +++ b/YuMi/Modules/YMRoom/View/XPRoomViewController.m @@ -0,0 +1,1753 @@ +// +// YMRoomViewController.m +// YUMI +// +// Created by YUMI on 2021/10/11. +// + +#import "XPRoomViewController.h" +///Third +#import +#import +///Tool +#import "YUMIMacroUitls.h" +#import "YUMIConstant.h" +#import "AccountInfoStorage.h" +#import "RtcManager.h" +#import "XPRoomMiniManager.h" +#import "TTPopup.h" +#import "Api+ArrangeMic.h" +#import "Api+Room.h" +#import "DESEncrypt.h" +#import "StatisticsServiceHelper.h" +#import "NSArray+Safe.h" +#import "NSMutableDictionary+Saft.h" +#import "XPSkillCardPlayerManager.h" +#import "XCCurrentVCStackManager.h" +///Model +#import "RoomInfoModel.h" +#import "UserInfoModel.h" +#import "AttachmentModel.h" +#import "ArrangeMicModel.h" +#import "XPReleaseRadioModel.h" +#import "GuildSuperAdminInfoModel.h" +#import "XPKickUserModel.h" +#import "ContentLevelUpgradeModel.h" +#import "XPReceiveRedPacketModel.h" +#import "XPRedPacketModel.h" +#import "FirstChargeRoomWindowModel.h" +///View +#import "BaseNavigationController.h" +#import "XPRoomActivityContainerView.h" +#import "XPRoomBackContainerView.h" +#import "XPRoomMenuContainerView.h" +#import "XPRoomQuickMessageContainView.h" +#import "XPRoomMessageContainerView.h" +#import "RoomHeaderView.h" +#import "SocialStageView.h" +#import "DatingStageView.h" +#import "AnchorStageView.h" +#import "AnchorPkStageView.h" +#import "XPRoomAnimationView.h" +#import "XPRoomFunctionContainerView.h" +#import "XPArrangeMicViewController.h" +#import "XPRoomSettingInputView.h" +#import "AnchorRoomScrollView.h" +#import "AnchorRoomSrollTipView.h" +#import "XPReceiveRedPacketView.h" +#import "XPFirstRechargeView.h" +///P +#import "XPRoomPresenter.h" +#import "XPRoomProtocol.h" + +#import "RoomHostDelegate.h" +#import "RoomGuestDelegate.h" + +#import "XNDJTDDLoadingTool.h" + +UIKIT_EXTERN NSString * const kRoomGiftEffectUpdateNotificationKey; +UIKIT_EXTERN NSString * const kRoomMiniNotificationKey; +UIKIT_EXTERN NSString * kNewUserRechargeKey; +UIKIT_EXTERN NSString * kShowFirstRechargeView; + +NSString * const kHadShowAnchorRoomTipKey = @"kHadShowAnchorRoomTipKey";//是否展示过个播房上划用户引导 +NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出过非自己房间 + +@interface XPRoomViewController () +///背景 +@property (nonatomic,strong) XPRoomBackContainerView *backContainerView; + +///个播上下切换view +@property (nonatomic, strong) AnchorRoomScrollView *anchorScrollView; +///房间信息 +@property (nonatomic,strong) RoomHeaderView *roomHeaderView; +///坑位信息 +@property (nonatomic,strong) StageView *stageView; +///公屏 +@property (nonatomic,strong) XPRoomMessageContainerView *messageContainerView; +///快捷发言 +@property (nonatomic, strong) XPRoomQuickMessageContainView *quickMessageContainerView; +///底部操作栏 +@property (nonatomic,strong) XPRoomMenuContainerView *menuContainerView; +///活动 +@property (nonatomic,strong) XPRoomActivityContainerView *activityContainerView; +///动画的view +@property (nonatomic,strong) XPRoomAnimationView *animationView; +///功能view的的容器 +@property (nonatomic,strong) XPRoomFunctionContainerView *functionView; +///房间的Uid +@property (nonatomic,copy) NSString * roomUid; +///小游戏的id +@property (nonatomic,copy) NSString *mgId; +///礼物id +@property (nonatomic, copy) NSString *giftId; +///用户信息 +@property (nonatomic,strong) UserInfoModel *userInfo; +///房间信息 +@property (nonatomic,strong) RoomInfoModel *roomInfo; +///本地是否修改过礼物特效显示 当前房间如果设置过礼物特效是否显示的话 就不再跟随房间礼物特效的更新而更新 +@property (nonatomic,assign) BOOL hasAnimationEffect; +///跟随的 +@property (nonatomic,copy) NSString *fromNick; +@property (nonatomic,assign) UserEnterRoomFromType fromType; +@property (nonatomic,copy) NSString *fromUid; +///超管列表 +@property (nonatomic,strong) NSArray *superMangerList; +///是否请求过了超管 +@property (nonatomic,assign) BOOL isRequestSuperAdmin; +///是否是最小化进房 +@property (nonatomic,assign) BOOL isMiniEnter; +///个播上划引导 +@property (nonatomic, strong) AnchorRoomSrollTipView *anchorScrollTipView; + +///滚动过的个播列表 +@property (nonatomic,strong) NSMutableArray *anchorRoomList; +///序号 +@property (nonatomic,assign) NSInteger anchorIndex; +@property (nonatomic,strong) XPFirstRechargeView *firstRechargeView; +@property (nonatomic,assign) BOOL isShowFirstRecharge; +@end + +@implementation XPRoomViewController + ++ (BOOL)openRoom:(NSString *)roomUid viewController:(UIViewController *)viewController { + return [self openRoom:roomUid fromNick:nil fromType:0 fromUid:nil viewController:viewController]; +} + ++ (BOOL) openRoom:(NSString*)roomUid fromNick:(NSString * __nullable)fromNick fromType:(UserEnterRoomFromType)fromType fromUid:(NSString * __nullable)fromUid viewController:(UIViewController*)viewController { + XPRoomViewController * roomVC = [[self alloc] init]; + roomVC.roomUid = roomUid; + roomVC.fromUid = fromUid; + roomVC.fromType = fromType; + roomVC.fromNick = fromNick; + BaseNavigationController * baseNav = [[BaseNavigationController alloc] initWithRootViewController:roomVC]; + baseNav.modalPresentationStyle = UIModalPresentationFullScreen; + [viewController presentViewController:baseNav animated:YES completion:nil]; + return YES; +} + +/**最小化进房 + * @params roomUid 房主uid + * @params viewController 启动方 + */ ++ (BOOL)openMiniRoom:(NSString*)roomUid viewController:(UIViewController*)viewController { + XPRoomViewController * roomVC = [[self alloc] init]; + roomVC.roomUid = roomUid; + roomVC.isMiniEnter = YES; + BaseNavigationController * baseNav = [[BaseNavigationController alloc] initWithRootViewController:roomVC]; + baseNav.modalPresentationStyle = UIModalPresentationFullScreen; + [viewController presentViewController:baseNav animated:YES completion:nil]; + return roomVC; +} + +/** XPRoomViewController 不允许外部 init ,请通过该方法启动房间。 + * @params roomUid 房主uid + * @params viewController 启动方 + * @params mgId 小游戏的id + */ ++ (BOOL)openRoom:(NSString*)roomUid mgId:(NSString *)mgId viewController:(UIViewController*)viewController { + XPRoomViewController * roomVC = [[self alloc] init]; + roomVC.roomUid = roomUid; + roomVC.mgId = mgId; + BaseNavigationController * baseNav = [[BaseNavigationController alloc] initWithRootViewController:roomVC]; + baseNav.modalPresentationStyle = UIModalPresentationFullScreen; + [viewController presentViewController:baseNav animated:YES completion:nil]; + return YES; +} + +/// h5进房并弹出礼物面板 +/// @param roomUid 房主Uid +/// @param giftId 礼物id +/// @param viewController 启动方 ++ (BOOL)openRoom:(NSString *)roomUid giftId:(NSString *)giftId viewController:(UIViewController *)viewController { + XPRoomViewController * roomVC = [[self alloc] init]; + roomVC.roomUid = roomUid; + roomVC.giftId = giftId; + BaseNavigationController * baseNav = [[BaseNavigationController alloc] initWithRootViewController:roomVC]; + baseNav.modalPresentationStyle = UIModalPresentationFullScreen; + [viewController presentViewController:baseNav animated:YES completion:nil]; + return YES; +} + +- (void)dealloc { +#warning to dox - 时刻注意这个方法 功能做完的时候删除此方法 + NSLog(@"房间销毁了"); + [XPSkillCardPlayerManager shareInstance].isInRoomFirstRecharge = NO; + [XPSkillCardPlayerManager shareInstance].isInRoom = NO; + [XPSkillCardPlayerManager shareInstance].roomUid = @""; + if([[XPRoomMiniManager shareManager] getRoomInfo]==nil){ + [XPSkillCardPlayerManager shareInstance].isMineInMic = NO; + } + [[NIMSDK sharedSDK].chatroomManager removeDelegate:self]; + [[NIMSDK sharedSDK].chatManager removeDelegate:self]; + [[NIMSDK sharedSDK].loginManager removeDelegate:self]; + [[NIMSDK sharedSDK].conversationManager removeDelegate:self]; + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +- (XPRoomPresenter *)createPresenter { + return [[XPRoomPresenter alloc] init]; +} + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self exitOldRoom]; + [self initSubViews]; + [self initSubViewConstraints]; + if (self.isMiniEnter) { + [self initEnterRoomSuccess:[XPRoomMiniManager shareManager].getRoomInfo user:[XPRoomMiniManager shareManager].getUserInfo]; + } else { + [XNDJTDDLoadingTool showAnchorLoading:self.navigationController.view]; + [self.presenter initEnterRoom:self.roomUid user:[AccountInfoStorage instance].getUid]; + } + /// 公屏 福袋礼物爆出的礼物 需要依赖 当前房间中的礼物列表 需要提前获取礼物列表 可以拿到礼物 没有想到别的方法去解决这个问题 有需要改的在修改吧 + [self.presenter getNormalGiftList:self.roomUid]; + ///获取房间超管列表 + [self.presenter getRoomSuperAdmin:self.roomUid]; + ///获取首充次数 + [self.presenter getRoomFirstCharegWindow:self.roomUid]; + //监听云信消息x + [[NIMSDK sharedSDK].chatroomManager addDelegate:self]; + [[NIMSDK sharedSDK].chatManager addDelegate:self]; + [[NIMSDK sharedSDK].loginManager addDelegate:self]; + [[NIMSDK sharedSDK].conversationManager addDelegate:self]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myGiftEffectUpdate:) name:kRoomGiftEffectUpdateNotificationKey object:nil]; + [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(showRoomFirstChargeWindowFormNot:) name:kShowFirstRechargeView object:nil]; + [XPSkillCardPlayerManager shareInstance].isInRoom = YES; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + [self.menuContainerView menuResignFirstResponder]; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent; +} + +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + if([XPSkillCardPlayerManager shareInstance].isInRoomFirstRecharge == YES && self.isShowFirstRecharge == NO){ + [XPSkillCardPlayerManager shareInstance].isInRoomFirstRecharge = NO; + ///获取首充次数 + [self.presenter getRoomFirstCharegWindow:self.roomUid]; + } +} + +#pragma mark - Private Method +- (void)initSubViews { + self.view.backgroundColor = [UIColor clearColor]; + [self.view addSubview:self.backContainerView]; + [self.view addSubview:self.stageView]; + [self.view addSubview:self.messageContainerView]; + [self.view addSubview:self.quickMessageContainerView]; + [self.view addSubview:self.menuContainerView]; + [self.view addSubview:self.activityContainerView]; + [self.view addSubview:self.roomHeaderView]; + [self.view addSubview:self.functionView]; + [self.view addSubview:self.animationView]; +} + +- (void)initSubViewConstraints { + [self.backContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; + + [self.roomHeaderView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.view); + make.height.mas_equalTo(kNavigationHeight); + }]; + + [self.stageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.top.mas_equalTo(self.roomHeaderView.mas_bottom); + make.height.mas_equalTo(self.stageView.hightForStageView); + }]; + + [self.messageContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.stageView.mas_bottom); + make.bottom.equalTo(self.quickMessageContainerView.mas_top).offset(-5); + make.left.equalTo(self.view); + make.right.equalTo(self.activityContainerView.mas_left).offset(-10); + }]; + CGFloat quickMsgHeight = 30; + //记录最后关闭时间 + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSNumber *closeCount = [defaults objectForKey:kRoomQuickMessageCloseCount]; + if (closeCount.intValue > 3) { + quickMsgHeight = 0; + } else { + quickMsgHeight = 30; + } + [self.quickMessageContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.menuContainerView.mas_top); + make.height.mas_equalTo(quickMsgHeight); + make.left.right.mas_equalTo(self.view); + }]; + [self.menuContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.bottom.mas_equalTo(-kSafeAreaBottomHeight- 8); + make.height.mas_equalTo(40); + }]; + + [self.activityContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.messageContainerView); + make.right.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).offset(-5); + make.width.mas_equalTo(80); + }]; + + [self.animationView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; + + [self.functionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +- (void)updateViewConstraintsOnAnchorRoom { + [self.anchorScrollView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; + [self.backContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.anchorScrollView.middleImageView); + }]; + [self.roomHeaderView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.anchorScrollView.middleImageView); + make.height.mas_equalTo(kNavigationHeight); + }]; + [self.stageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.anchorScrollView.middleImageView); + make.top.mas_equalTo(self.roomHeaderView.mas_bottom); + make.height.mas_equalTo(self.stageView.hightForStageView); + }]; + [self.messageContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.stageView.mas_bottom); + make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).mas_offset(-5); + make.left.equalTo(self.anchorScrollView.middleImageView); + make.right.equalTo(self.activityContainerView.mas_left).offset(-10); + }]; + [self.quickMessageContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(30); + make.bottom.mas_equalTo(self.backContainerView).mas_offset(-5-40-8-kSafeAreaBottomHeight); + make.left.equalTo(self.anchorScrollView.middleImageView); + make.right.equalTo(self.activityContainerView.mas_left).offset(-10); + }]; + [self.menuContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.anchorScrollView.middleImageView); + make.bottom.mas_equalTo(self.anchorScrollView.middleImageView).offset(-kSafeAreaBottomHeight- 8); + make.height.mas_equalTo(40); + }]; + [self.activityContainerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.messageContainerView); + make.right.mas_equalTo(self.anchorScrollView.middleImageView); + make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).mas_offset(-5); + make.width.mas_equalTo(80); + }]; + [self.functionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.anchorScrollView.middleImageView); + }]; +} + +- (void)exitOldRoom { + NSString * roomUid = [NSString stringWithFormat:@"%ld", [XPRoomMiniManager shareManager].getRoomInfo.uid]; + if (roomUid.integerValue > 0 && roomUid.integerValue != self.roomUid.integerValue) { + //有最小化房间 并且要进入的房间和最小化的房间不一样的话 就先退掉 最小化的房间 + NSString * roomId = [NSString stringWithFormat:@"%ld", [XPRoomMiniManager shareManager].getRoomInfo.roomId]; + [self.presenter exitNIMRoom:roomId]; + [[RtcManager instance] exitRoom]; + [[XPRoomMiniManager shareManager] resetLocalMessage]; + [self.presenter reportUserOutRoom:roomUid]; + } +} + +- (void)userEnterRoomSuccess { + AttachmentModel *attachment = [[AttachmentModel alloc]init]; + attachment.first = CustomMessageType_Car_Notify; + attachment.second = Custom_Message_Sub_Car_EnterRoom; + NSMutableDictionary *att = [NSMutableDictionary dictionary]; + if (self.userInfo.userVipInfoVO.enterHide) {///贵族隐身进房,不发座驾消息 + return; + } + if (self.userInfo.viewUrl.length > 0) { + [att safeSetObject:self.userInfo.nick forKey:@"nick"]; + [att safeSetObject:self.userInfo.viewUrl forKey:@"viewUrl"]; + [att safeSetObject:@(self.userInfo.otherViewType) forKey:@"otherViewType"]; + } else if (self.userInfo.carEffect.length > 0) { + [att safeSetObject:self.userInfo.carEffect forKey:@"effect"]; + [att safeSetObject:self.userInfo.nick forKey:@"nick"]; + } else { + return; + } + attachment.data = att; + NSString *sessionID = [NSString stringWithFormat:@"%ld",self.roomInfo.roomId]; + NIMMessage *message = [[NIMMessage alloc]init]; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachment; + message.messageObject = object; + //构造会话 + NIMSession *session = [NIMSession session:sessionID type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; +} + +- (void)changeStageViewOnRoomUpdate { + if (self.roomInfo.roomModeType == RoomModeType_Open_Blind && ![self.stageView isKindOfClass:[DatingStageView class]]) { + [self.stageView removeFromSuperview]; + self.stageView = nil; + self.stageView = [[DatingStageView alloc] initWithDelegate:self]; + } else if(self.roomInfo.datingState == RoomDatingStateChangeType_Close && ![self.stageView isKindOfClass:[SocialStageView class]]) { + [self.stageView removeFromSuperview]; + self.stageView = nil; + self.stageView = [[SocialStageView alloc] initWithDelegate:self]; + } else if (self.roomInfo.type == RoomType_Anchor) { + if (self.roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode && ![self.stageView isKindOfClass:[AnchorPKStageView class]]) { + [self.stageView removeFromSuperview]; + self.stageView = nil; + self.stageView = [[AnchorPKStageView alloc] initWithDelegate:self]; + } else if(self.roomInfo.roomModeType == RoomModeType_Normal_Mode && ![self.stageView isKindOfClass:[AnchorStageView class]]) { + [self.stageView removeFromSuperview]; + self.stageView = nil; + self.stageView = [[AnchorStageView alloc] initWithDelegate:self]; + } + }else if(self.roomInfo.hadChangeRoomType && ![self.stageView isKindOfClass:[SocialStageView class]]) { + [self.stageView removeFromSuperview]; + self.stageView = nil; + self.stageView = [[SocialStageView alloc] initWithDelegate:self]; + } else { + return; + } + + + if (!self.stageView.superview) { + [self.view insertSubview:self.stageView belowSubview:self.roomHeaderView]; + } + + + if (self.roomInfo.type == RoomType_MiniGame) { + [self.stageView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.top.mas_equalTo(self.roomHeaderView.mas_bottom).offset(26 + 4); + make.height.mas_equalTo(self.stageView.hightForStageView); + }]; + + [self.messageContainerView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(70); + make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).offset(-5); + make.left.mas_equalTo(self.view); + make.right.mas_equalTo(self.activityContainerView.mas_left).offset(-10); + }]; + + [self.activityContainerView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(65); + make.right.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).offset(-5); + make.width.mas_equalTo(80); + }]; + } else { + [self.stageView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.top.mas_equalTo(self.roomHeaderView.mas_bottom); + make.height.mas_equalTo(self.stageView.hightForStageView); + }]; + + [self.messageContainerView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.stageView.mas_bottom); + make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).offset(-5); + make.left.mas_equalTo(self.view); + make.right.mas_equalTo(self.activityContainerView.mas_left).offset(-10); + }]; + + [self.activityContainerView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.messageContainerView); + make.right.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).offset(-5); + make.width.mas_equalTo(80); + }]; + } +} + +- (void)changeStageViewOnAnchorRoom { + if (self.roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode && ![self.stageView isKindOfClass:[AnchorPKStageView class]]) { + [self.stageView removeFromSuperview]; + self.stageView = nil; + self.stageView = [[AnchorPKStageView alloc] initWithDelegate:self]; + } else if(self.roomInfo.roomModeType == RoomModeType_Normal_Mode && ![self.stageView isKindOfClass:[AnchorStageView class]]) { + [self.stageView removeFromSuperview]; + self.stageView = nil; + self.stageView = [[AnchorStageView alloc] initWithDelegate:self]; + } + if (!self.stageView.superview) { + [self.anchorScrollView insertSubview:self.stageView belowSubview:self.roomHeaderView]; + } + + [self.stageView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.anchorScrollView.middleImageView); + make.top.mas_equalTo(self.roomHeaderView.mas_bottom); + make.height.mas_equalTo(self.stageView.hightForStageView); + }]; + [self.messageContainerView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.stageView.mas_bottom); + make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).mas_offset(-5); + make.left.mas_equalTo(self.anchorScrollView.middleImageView); + make.right.mas_equalTo(self.activityContainerView.mas_left).offset(-10); + }]; + + CGFloat quickMsgHeight = 30; + //记录最后关闭时间 + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSNumber *closeCount = [defaults objectForKey:kRoomQuickMessageCloseCount]; + if (closeCount.intValue > 3 || self.roomInfo.speakTemplate.count <=0) { + quickMsgHeight = 0; + } else { + quickMsgHeight = 30; + } + self.quickMessageContainerView.titleArray = self.roomInfo.speakTemplate; + [self.quickMessageContainerView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(quickMsgHeight); + make.bottom.mas_equalTo(self.backContainerView).mas_offset(-5-40-8-kSafeAreaBottomHeight); + make.left.right.mas_equalTo(self.anchorScrollView.middleImageView); + }]; + [self.activityContainerView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.messageContainerView); + make.right.mas_equalTo(self.anchorScrollView.middleImageView); + make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).mas_offset(-5); + make.width.mas_equalTo(80); + }]; +} + +-(void)showRoomFirstChargeWindowFormNot:(NSNotification *)not{ + if(not != nil){ + NSDictionary *parameter = not.object; + if(parameter != nil){ + self.firstRechargeView.type = parameter[@"type"]; + self.firstRechargeView.diamonds = parameter[@"diamonds"]; + } + } + [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(showRoomFirstChargeWindow) object:nil]; + [[UIApplication sharedApplication].keyWindow addSubview:self.firstRechargeView]; + [self.presenter updateRoomFirstCharegWindow:self.roomUid]; + +} +-(void)showRoomFirstChargeWindow{ + if([XPSkillCardPlayerManager shareInstance].isInRoomFirstRecharge == YES){ + self.isShowFirstRecharge = NO; + return; + } + UIViewController *viewController = [XCCurrentVCStackManager shareManager].getCurrentVC; + if(![viewController isKindOfClass:[XPRoomViewController class]]){ + [viewController dismissViewControllerAnimated:YES completion:nil]; + } + self.isShowFirstRecharge = NO; + [self.presenter updateRoomFirstCharegWindow:self.roomUid]; + [[UIApplication sharedApplication].keyWindow addSubview:self.firstRechargeView]; + +} + +- (void)cancelRoomArrangeMic { + ///退出排麦 + if (self.roomInfo.roomModeType == RoomModeType_Open_Micro_Mode || self.roomInfo.roomModeType == RoomModeType_Open_Blind) { + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; + NSString * uid = [AccountInfoStorage instance].getUid; + [Api getRoomArrangeMicList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + ArrangeMicModel * arrangeMicModel= [ArrangeMicModel modelWithJSON:data.data]; + if (arrangeMicModel.myPos.intValue > 0) { + __block NSString * grouptype = @"0"; + if (self.roomInfo.roomModeType == RoomModeType_Open_Blind) { + [arrangeMicModel.queue enumerateObjectsUsingBlock:^(ArrangeMicUserModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.uid.integerValue == [AccountInfoStorage instance].getUid.integerValue) { + grouptype = [NSString stringWithFormat:@"%ld", obj.groupType]; + *stop = YES; + } + }]; + + } + [Api cancelArrangeMic:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {} roomUid:roomUid operUid:uid groupType:grouptype]; + } + } + } roomUid:roomUid operUid:uid page:@"1" pageSize:@"50"]; + }else if(self.roomInfo.roomModeType == RoomModeType_Open_PK_Mode) { + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; + NSString * uid = [AccountInfoStorage instance].getUid; + [Api getRoomPKUserList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + ArrangeMicModel * arrangeMicModel= [ArrangeMicModel modelWithJSON:data.data]; + if (arrangeMicModel.myPos.intValue > 0) { + __block NSString * grouptype = @"0"; + [arrangeMicModel.queue enumerateObjectsUsingBlock:^(ArrangeMicUserModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.uid.integerValue == [AccountInfoStorage instance].getUid.integerValue) { + grouptype = [NSString stringWithFormat:@"%ld", obj.groupType]; + *stop = YES; + } + }]; + [Api cancelRoomPKArrangeMic:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + + } roomUid:roomUid operUid:uid groupType:grouptype]; + } + } + } roomUid:roomUid operUid:uid page:@"1" pageSize:@"50"]; + } +} + +///超管进入密码房间 +- (void)superAdminEnterPwdRoom:(RoomInfoModel *)roomInfo { + __block BOOL isSuperAdmin = NO; + [self.superMangerList enumerateObjectsUsingBlock:^(GuildSuperAdminInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj.uid isEqualToString:[AccountInfoStorage instance].getUid]) { + isSuperAdmin = YES; + *stop = YES; + } + }]; + if (!isSuperAdmin) { + XPRoomSettingInputView * titleView = [[XPRoomSettingInputView alloc] init]; + titleView.maxCount = 15; + titleView.delegate = self; + titleView.type = RoomSettingInputType_Input_Pwd; + TTPopupConfig * config = [[TTPopupConfig alloc] init]; + config.contentView = titleView; + config.maskBackgroundAlpha = 1; + config.shouldDismissOnBackgroundTouch = NO; + [TTPopup popupWithConfig:config]; + } else { + self.roomInfo.datingState = roomInfo.roomModeType == RoomModeType_Open_Blind ? RoomDatingStateChangeType_Open : RoomDatingStateChangeType_Normal; + [self changeStageViewOnRoomUpdate]; + [self.roomHeaderView onRoomEntered]; + [self.activityContainerView onRoomEntered]; + [self.menuContainerView onRoomEntered]; + [self.backContainerView onRoomEntered]; + if ([XPRoomMiniManager shareManager].getRoomInfo.uid != self.roomUid.integerValue) {// 最小化进房 还是原来的房间的话 不需要重新进入云信 因为压根没退 + [self.presenter enterNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; + [self.functionView onRoomEntered]; + [self.messageContainerView onRoomEntered]; + } else { + //虽然没退出房间 但是队列还是要拿的 + [self.stageView onRoomMiniEntered]; + [self.messageContainerView onRoomMiniEntered]; + [self.functionView onRoomMiniEntered]; + [self.functionView onRoomEntered]; + } + [[XPRoomMiniManager shareManager] configRoomInfo:nil]; + [[XPRoomMiniManager shareManager] configUserInfo:nil]; + [[XPRoomMiniManager shareManager] configCurrentMusic:nil isPlaying:NO]; + } +} + +///超管进个播有密码房间 +- (void)handleSuperManagerEnterAnchorRoom:(RoomInfoModel *)roomInfo { + __block BOOL isSuperAdmin = NO; + [self.superMangerList enumerateObjectsUsingBlock:^(GuildSuperAdminInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj.uid isEqualToString:[AccountInfoStorage instance].getUid]) { + isSuperAdmin = YES; + *stop = YES; + } + }]; + if (!isSuperAdmin) { + XPRoomSettingInputView * titleView = [[XPRoomSettingInputView alloc] init]; + titleView.maxCount = 15; + titleView.delegate = self; + titleView.type = RoomSettingInputType_Input_Pwd; + TTPopupConfig * config = [[TTPopupConfig alloc] init]; + config.contentView = titleView; + config.maskBackgroundAlpha = 1; + config.shouldDismissOnBackgroundTouch = NO; + [TTPopup popupWithConfig:config]; + } else { + self.roomInfo.datingState = roomInfo.roomModeType == RoomModeType_Open_Blind ? RoomDatingStateChangeType_Open : RoomDatingStateChangeType_Normal; + if (!self.anchorScrollView.superview) { + [self.view insertSubview:self.anchorScrollView belowSubview:self.menuContainerView]; + } + [self.backContainerView removeFromSuperview]; + [self.stageView removeFromSuperview]; + [self.messageContainerView removeFromSuperview]; + [self.quickMessageContainerView removeFromSuperview]; + [self.activityContainerView removeFromSuperview]; + [self.roomHeaderView removeFromSuperview]; + [self.functionView removeFromSuperview]; + + [self.anchorScrollView addSubview:self.backContainerView]; + [self.anchorScrollView addSubview:self.stageView]; + [self.anchorScrollView addSubview:self.messageContainerView]; + [self.anchorScrollView addSubview:self.quickMessageContainerView]; + [self.anchorScrollView addSubview:self.activityContainerView]; + [self.anchorScrollView addSubview:self.roomHeaderView]; + [self.anchorScrollView addSubview:self.functionView]; + if (!self.menuContainerView.superview) { + [self.view addSubview:self.menuContainerView]; + } + [self.view bringSubviewToFront:self.animationView]; + + [self updateViewConstraintsOnAnchorRoom]; + [self changeStageViewOnAnchorRoom]; + + [self.roomHeaderView onRoomEntered]; + [self.activityContainerView onRoomEntered]; + [self.menuContainerView onRoomEntered]; + [self.backContainerView onRoomEntered]; + if ([XPRoomMiniManager shareManager].getRoomInfo.uid != self.roomUid.integerValue) {// 最小化进房 还是原来的房间的话 不需要重新进入云信 因为压根没退 + [self.presenter enterNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; + [self.functionView onRoomEntered]; + [self.messageContainerView onRoomEntered]; + } else { + //虽然没退出房间 但是队列还是要拿的 + [self.stageView onRoomMiniEntered]; + [self.messageContainerView onRoomMiniEntered]; + [self.functionView onRoomMiniEntered]; + [self.functionView onRoomEntered]; + } + [[XPRoomMiniManager shareManager] configRoomInfo:nil]; + [[XPRoomMiniManager shareManager] configUserInfo:nil]; + [[XPRoomMiniManager shareManager] configCurrentMusic:nil isPlaying:NO]; + } +} + +///展示个播上划引导 +- (void)showAnchorScrollTipView { + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSString *anchoScrollTip = [defaults objectForKey:kHadShowAnchorRoomTipKey]; + if (!anchoScrollTip) { + UIWindow *window = [UIApplication sharedApplication].delegate.window; + [window addSubview:self.anchorScrollTipView]; + [window bringSubviewToFront:self.anchorScrollTipView]; + } +} + +///判断是否被踢出房间 +- (BOOL)isKictOutLatest:(RoomInfoModel *)roomInfo { + NSString *currentUid = [AccountInfoStorage instance].getUid; + NSString *key = [NSString stringWithFormat:@"%@_%ld", currentUid, roomInfo.uid]; + NSString *kictOutTime = [[NSUserDefaults standardUserDefaults] objectForKey:key]; + if (kictOutTime) { + NSDate* date = [NSDate dateWithTimeIntervalSinceNow:0]; + NSTimeInterval time = [date timeIntervalSince1970]; + NSString *currentTime = [NSString stringWithFormat:@"%.0f", time]; + //是否超过5分钟 + if ([currentTime intValue] - [kictOutTime intValue] > 5 * 60) { + [[NSUserDefaults standardUserDefaults] removeObjectForKey:key]; + [[NSUserDefaults standardUserDefaults] synchronize]; + return NO; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPRoomViewController0")]; + [self dismissViewControllerAnimated:YES completion:nil]; + return YES; + } + } else { + return NO; + } +} + +#pragma mark - 本地礼物特效更新 +- (void)myGiftEffectUpdate:(NSNotification *)notification { + NSDictionary * dic = notification.object; + self.roomInfo.hasAnimationEffect = ((NSNumber *)dic[@"hasAnimationEffect"]).boolValue; + self.hasAnimationEffect = self.roomInfo.hasAnimationEffect; + [self.roomHeaderView onRoomUpdate]; +} +#pragma mark - XPRoomProtocol +- (void)initEnterRoomSuccess:(RoomInfoModel *)roomInfo user:(UserInfoModel *)userInfo { + [XNDJTDDLoadingTool hideHUDInView:self.navigationController.view]; + [XPSkillCardPlayerManager shareInstance].roomUid = @(roomInfo.uid).stringValue; + userInfo.fromUid = self.fromUid; + userInfo.fromType = self.fromType; + userInfo.fromNick = self.fromNick; + self.hasAnimationEffect = roomInfo.hasAnimationEffect; + self.roomInfo = roomInfo; + self.userInfo = userInfo; + //判断5分钟内是否被踢出过房间 + if ([self isKictOutLatest:roomInfo]) { + return; + } + if (roomInfo.type == RoomType_Anchor) {//个播房,获取下一个房间 + [self handleInitAnchorRoom]; + [self showAnchorScrollTipView]; + return; + } + if (roomInfo.valid) { // 房间有效,直接进入房间 + if (roomInfo.roomPwd.length > 0 && roomInfo.uid != [AccountInfoStorage instance].getUid.integerValue && [XPRoomMiniManager shareManager].getRoomInfo.uid != self.roomUid.integerValue) {//进房密码的情况 + if (!self.isRequestSuperAdmin) { + [Api getRoomSuperAdminList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + NSArray * array = [GuildSuperAdminInfoModel modelsWithArray:data.data]; + self.superMangerList = array; + [self superAdminEnterPwdRoom:roomInfo]; + } roomUid:self.roomUid]; + } else { + [self superAdminEnterPwdRoom:roomInfo]; + } + } else { + self.roomInfo.datingState = roomInfo.roomModeType == RoomModeType_Open_Blind ? RoomDatingStateChangeType_Open : RoomDatingStateChangeType_Normal; + [self changeStageViewOnRoomUpdate]; + [self.roomHeaderView onRoomEntered]; + [self.activityContainerView onRoomEntered]; + [self.menuContainerView onRoomEntered]; + [self.backContainerView onRoomEntered]; + self.quickMessageContainerView.titleArray = self.roomInfo.speakTemplate; + if ([XPRoomMiniManager shareManager].getRoomInfo.uid != self.roomUid.integerValue) {// 最小化进房 还是原来的房间的话 不需要重新进入云信 因为压根没退 + [self.presenter enterNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; + [self.functionView onRoomEntered]; + [self.messageContainerView onRoomEntered]; + } else { + //虽然没退出房间 但是队列还是要拿的 + [self.stageView onRoomMiniEntered]; + [self.messageContainerView onRoomMiniEntered]; + [self.functionView onRoomMiniEntered]; + [self.functionView onRoomEntered]; + } + [[XPRoomMiniManager shareManager] configRoomInfo:nil]; + [[XPRoomMiniManager shareManager] configUserInfo:nil]; + [[XPRoomMiniManager shareManager] configCurrentMusic:nil isPlaying:NO]; + } + } else { // 房间无效,分是否为自己房间进行处理 + if ([self.roomUid isEqualToString:[NSString stringWithFormat:@"%ld", userInfo.uid]]) { // 当前用户进入自己房间 + if (roomInfo.roomId > 0) { // 存在房间信息,直接使用房间信息开房 + if (roomInfo.type == RoomType_MiniGame && roomInfo.mgId > 0) { + self.mgId = [NSString stringWithFormat:@"%lld", roomInfo.mgId]; + } + [self.presenter openRoom:roomInfo.title type:roomInfo.type roomPwd:roomInfo.roomPwd roomDesc:roomInfo.roomDesc backPic:@"" mgId:self.mgId]; + } else { // 不存在房间信息,全新开房 + NSString* title = [NSString stringWithFormat:YMLocalizedString(@"XPRoomViewController1"), userInfo.nick]; + RoomType type = RoomType_Game; + if (self.mgId.length > 0) { + type = RoomType_MiniGame; + } + [self.presenter openRoom:title type:type roomPwd:@"" roomDesc:@"" backPic:@"" mgId:self.mgId]; + } + } else { // 当前用户进入别人房间 + // TODO: 房主已经下线。 + [self showSuccessToast:YMLocalizedString(@"XPRoomViewController2")]; + [self enterRoomFail:0]; + } + } +} + +- (void)openRoomSuccess:(RoomInfoModel *)roomInfo { + [XNDJTDDLoadingTool hideHUDInView:self.navigationController.view]; + [self hideHUD]; + self.roomInfo = roomInfo; + if (roomInfo.type == RoomType_Anchor) { + [self handleInitAnchorRoom]; + [self showAnchorScrollTipView]; + return; + } + [self changeStageViewOnRoomUpdate]; + [self.roomHeaderView onRoomEntered]; + [self.activityContainerView onRoomEntered]; + [self.backContainerView onRoomEntered]; + [self.functionView onRoomEntered]; + [self.messageContainerView onRoomEntered]; + self.quickMessageContainerView.titleArray = self.roomInfo.speakTemplate; + [self.presenter enterNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; +} + +- (void)enterRoomSuccess:(NIMChatroom *)chatRoom { + [XNDJTDDLoadingTool hideHUDInView:self.navigationController.view]; + // room/get中的房间在线人数 是定时更新的 不是及时刷新 + self.roomInfo.onlineNum = chatRoom.onlineUserCount; + [self.stageView onRoomEntered]; + [self.functionView onRoomEntered]; + //上报进房 + if (self.roomInfo != nil) { + [self.presenter reportUserInterRoom:[NSString stringWithFormat:@"%zd", self.roomInfo.uid]]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventuser_visit_room eventAttributes:@{@"roomUid" : @(self.roomInfo.uid)}]; + } + if (self.giftId.length) { + ///有的时候 拉取麦序的话 可能会有点延迟 导致送礼物的人 没有拉取到 + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [[NSNotificationCenter defaultCenter] postNotificationName:@"kShowGiftView" object:@{@"giftId": self.giftId}]; + }); + } + //获取一下红包信息 + [self.presenter getRedPacket:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]; +} + +- (void)enterRoomFail:(NSInteger)code { + [XNDJTDDLoadingTool hideHUDInView:self.navigationController.view]; + [self hideHUD]; + if (code == 13003) { + [self showErrorToast:YMLocalizedString(@"XPRoomViewController3")]; + } + [self dismissViewControllerAnimated:YES completion:nil]; +} + +///请求房间超管成功 +///这个接口本来是想和roominfo 和userinfo 一起请求的 但是 进房的同步操作 只有超管进入密码房间才会有同步的问题 +- (void)getRoomSuperAdminScuccess:(NSArray *)list { + self.isRequestSuperAdmin = YES; + self.superMangerList = list; +} + +///获取推荐滚动的个播房列表(只有第一次进房获取) +- (void)getNextAnchorRoomSuccess:(RoomInfoModel *)roomInfo { + [self hideHUD]; + if (roomInfo) { //获取下一个房间成功 + if (![self.anchorRoomList containsObject:self.roomUid]) { + [self.anchorRoomList addObject:self.roomUid]; + } + self.anchorIndex = self.anchorRoomList.count -1; + //1、退出房间操作 + self.anchorScrollView.isCanScrollTop = YES; + self.anchorScrollView.contentOffset = CGPointMake(0, KScreenHeight); + self.isRequestSuperAdmin = NO; + [self exitOldRoom]; + [self.presenter exitNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; + [[XPRoomMiniManager shareManager] resetLocalMessage]; + [[RtcManager instance] exitRoom]; + [self.presenter reportUserOutRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]; + [self.functionView onRoomChange]; + //2、移除房间子控件 + [self.stageView removeFromSuperview]; + [self.messageContainerView removeFromSuperview]; + [self.quickMessageContainerView removeFromSuperview]; + [self.activityContainerView removeFromSuperview]; + [self.roomHeaderView removeFromSuperview]; + [self.functionView removeFromSuperview]; + self.functionView = nil; + self.messageContainerView = nil; + self.stageView = nil; + [self.menuContainerView removeFromSuperview]; + self.menuContainerView = nil; + //3、重新进入房间 + self.roomUid = [NSString stringWithFormat:@"%zd", roomInfo.uid]; + [self.presenter initEnterRoom:self.roomUid user:[AccountInfoStorage instance].getUid]; + /// 公屏 福袋礼物爆出的礼物 需要依赖 当前房间中的礼物列表 需要提前获取礼物列表 可以拿到礼物 没有想到别的方法去解决这个问题 有需要改的在修改吧 + [self.presenter getNormalGiftList:self.roomUid]; + ///获取房间超管列表 + [self.presenter getRoomSuperAdmin:self.roomUid]; + } else { + if (self.anchorScrollView.isCanScrollTop) { + self.anchorScrollView.contentOffset = CGPointMake(0, KScreenHeight); + } else { + self.anchorScrollView.contentOffset = CGPointMake(0, 0); + } + [self showErrorToast:YMLocalizedString(@"XPRoomViewController4")]; + } +} + +- (void)getCurrentRoomInfoSuccess:(RoomInfoModel *)roomInfo { + [self hideHUD]; + self.anchorScrollView.contentOffset = CGPointMake(0, KScreenHeight); + if (roomInfo && roomInfo.valid) { + //1、退出房间操作 + self.isRequestSuperAdmin = NO; + [self exitOldRoom]; + [self.presenter exitNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; + [[XPRoomMiniManager shareManager] resetLocalMessage]; + [[RtcManager instance] exitRoom]; + [self.presenter reportUserOutRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]; + //2、移除房间子控件 +// [self.backContainerView removeFromSuperview]; + [self.stageView removeFromSuperview]; + [self.messageContainerView removeFromSuperview]; + [self.quickMessageContainerView removeFromSuperview]; + [self.activityContainerView removeFromSuperview]; + [self.roomHeaderView removeFromSuperview]; + [self.functionView removeFromSuperview]; + self.functionView = nil; + self.messageContainerView = nil; + self.stageView = nil; + [self.menuContainerView removeFromSuperview]; + self.menuContainerView = nil; + //3、重新进入房间 + self.roomUid = [NSString stringWithFormat:@"%zd", roomInfo.uid]; + [self.presenter initEnterRoom:self.roomUid user:[AccountInfoStorage instance].getUid]; + /// 公屏 福袋礼物爆出的礼物 需要依赖 当前房间中的礼物列表 需要提前获取礼物列表 可以拿到礼物 没有想到别的方法去解决这个问题 有需要改的在修改吧 + [self.presenter getNormalGiftList:self.roomUid]; + ///获取房间超管列表 + [self.presenter getRoomSuperAdmin:self.roomUid]; + } else { + [self showErrorToast:YMLocalizedString(@"XPRoomViewController5")]; + } +} + +///个播房初始化一些操作 +- (void)handleInitAnchorRoom { + if (self.roomInfo.valid) { // 房间有效,直接进入房间 + if (self.roomInfo.roomPwd.length > 0 && self.roomInfo.uid != [AccountInfoStorage instance].getUid.integerValue && [XPRoomMiniManager shareManager].getRoomInfo.uid != self.roomUid.integerValue) {//进房密码的情况 + if (!self.isRequestSuperAdmin) { + [Api getRoomSuperAdminList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + NSArray * array = [GuildSuperAdminInfoModel modelsWithArray:data.data]; + self.superMangerList = array; + [self handleSuperManagerEnterAnchorRoom:self.roomInfo]; + } roomUid:self.roomUid]; + } else { + [self handleSuperManagerEnterAnchorRoom:self.roomInfo]; + } + } else { + self.roomInfo.datingState = self.roomInfo.roomModeType == RoomModeType_Open_Blind ? RoomDatingStateChangeType_Open : RoomDatingStateChangeType_Normal; + if (!self.anchorScrollView.superview) { + [self.view addSubview:self.anchorScrollView]; + } + [self.backContainerView removeFromSuperview]; + [self.stageView removeFromSuperview]; + [self.messageContainerView removeFromSuperview]; + [self.quickMessageContainerView removeFromSuperview]; + [self.activityContainerView removeFromSuperview]; + [self.roomHeaderView removeFromSuperview]; + [self.functionView removeFromSuperview]; + [self.menuContainerView removeFromSuperview]; + + [self.anchorScrollView addSubview:self.backContainerView]; + [self.anchorScrollView addSubview:self.stageView]; + [self.anchorScrollView addSubview:self.messageContainerView]; + [self.anchorScrollView addSubview:self.quickMessageContainerView]; + [self.anchorScrollView addSubview:self.activityContainerView]; + [self.anchorScrollView addSubview:self.roomHeaderView]; + [self.anchorScrollView addSubview:self.functionView]; + [self.anchorScrollView addSubview:self.menuContainerView]; + [self.view bringSubviewToFront:self.animationView]; + + [self updateViewConstraintsOnAnchorRoom]; + [self changeStageViewOnAnchorRoom]; + + [self.roomHeaderView onRoomEntered]; + [self.activityContainerView onRoomEntered]; + [self.menuContainerView onRoomEntered]; + [self.backContainerView onRoomEntered]; + if ([XPRoomMiniManager shareManager].getRoomInfo.uid != self.roomUid.integerValue) {// 最小化进房 还是原来的房间的话 不需要重新进入云信 因为压根没退 + [self.presenter enterNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; + [self.functionView onRoomEntered]; + [self.messageContainerView onRoomEntered]; + } else { + //虽然没退出房间 但是队列还是要拿的 + [self.stageView onRoomMiniEntered]; + [self.messageContainerView onRoomMiniEntered]; + [self.functionView onRoomMiniEntered]; + [self.functionView onRoomEntered]; + } + [[XPRoomMiniManager shareManager] configRoomInfo:nil]; + [[XPRoomMiniManager shareManager] configUserInfo:nil]; + [[XPRoomMiniManager shareManager] configCurrentMusic:nil isPlaying:NO]; + } + } else { // 房间无效,分是否为自己房间进行处理 + if ([self.roomUid isEqualToString:[NSString stringWithFormat:@"%ld", self.userInfo.uid]]) { // 当前用户进入自己房间 + if (self.roomInfo.roomId > 0) { // 存在房间信息,直接使用房间信息开房 + if (self.roomInfo.type == RoomType_MiniGame && self.roomInfo.mgId > 0) { + self.mgId = [NSString stringWithFormat:@"%lld", self.roomInfo.mgId]; + } + [self.presenter openRoom:self.roomInfo.title type:self.roomInfo.type roomPwd:self.roomInfo.roomPwd roomDesc:self.roomInfo.roomDesc backPic:@"" mgId:self.mgId]; + } else { // 不存在房间信息,全新开房 + NSString* title = [NSString stringWithFormat:YMLocalizedString(@"XPRoomViewController6"), self.userInfo.nick]; + RoomType type = RoomType_Game; + if (self.mgId.length > 0) { + type = RoomType_MiniGame; + } + [self.presenter openRoom:title type:type roomPwd:@"" roomDesc:@"" backPic:@"" mgId:self.mgId]; + } + } else { // 当前用户进入别人房间 + // TODO: 房主已经下线。 + [self showSuccessToast:YMLocalizedString(@"XPRoomViewController7")]; + [self enterRoomFail:0]; + } + } +} + +- (void)getRedPacketSuccess:(NSArray *)list { + if (list.count == 0) { + return; + } + for (XPRedPacketModel *data in list) { + XPReceiveRedPacketView *view = [[XPReceiveRedPacketView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; + view.receiveModel = data; + for (UIView *subView in self.view.subviews) { + if([subView isKindOfClass:[XPReceiveRedPacketView class]]) { + view.alphaView.backgroundColor = [UIColor clearColor]; + break; + } + } + [self.view addSubview:view]; + [self.view bringSubviewToFront:view]; + } +} + +- (void)getRoomFirstChargeWindowSuccess:(FirstChargeRoomWindowModel *)model{ + if(model.needToShow == NO || model.showAfterSecond <= 0 || self.isShowFirstRecharge == YES)return; + self.isShowFirstRecharge = YES; + [self performSelector:@selector(showRoomFirstChargeWindow) withObject:nil afterDelay:model.showAfterSecond]; +} + +#pragma mark - NIMChatroomManagerDelegate +- (void)chatroomBeKicked:(NIMChatroomBeKickedResult *)result { + if (result.reason == 2) { + [self showErrorToast:YMLocalizedString(@"XPRoomViewController8")]; + ///保存被踢出时的时间 + NSDate* date = [NSDate dateWithTimeIntervalSinceNow:0];//获取当前时间0秒后的时间 + NSTimeInterval time=[date timeIntervalSince1970]; + NSString *currentTime = [NSString stringWithFormat:@"%.0f", time]; + NSString *key = [NSString stringWithFormat:@"%@_%ld", [AccountInfoStorage instance].getUid, self.roomInfo.uid]; + [[NSUserDefaults standardUserDefaults] setObject:currentTime forKey:key]; + [[NSUserDefaults standardUserDefaults] synchronize]; + } else if (result.reason == 5) { + [self showErrorToast:YMLocalizedString(@"XPRoomViewController9")]; + } + [self.presenter exitNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; + [[XPRoomMiniManager shareManager] resetLocalMessage]; + [self cancelRoomArrangeMic]; + [[RtcManager instance] exitRoom]; + [self.presenter reportUserOutRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]; + [self dismissViewControllerAnimated:YES completion:nil]; +} + +#pragma mark - NIMChatManagerDelegate +- (void)onRecvMessages:(NSArray *)messages { + for (NIMMessage * message in messages) { + ///房间内收到p2p的消息 比如升级消息 + if (message.session.sessionType == NIMSessionTypeP2P) { + if(message.messageType == NIMMessageTypeCustom) { + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) { + AttachmentModel * attachment = obj.attachment; + if (attachment.first == CustomMessageType_User_UpGrade) { + ContentLevelUpgradeModel * levelInfo = [ContentLevelUpgradeModel modelWithDictionary:attachment.data]; + if (attachment.second == Custom_Message_Sub_User_UpGrade_Exper) { + self.userInfo.userLevelVo.experLevelSeq = levelInfo.levelSeq; + } else if(attachment.second == Custom_Message_Sub_User_UpGrade_Charm) { + self.userInfo.userLevelVo.charmLevelSeq = levelInfo.levelSeq; + } + } + } + } + } + + // 非房间内消息不处理 + if (message.session.sessionType != NIMSessionTypeChatroom) { + continue; + } + + // 非本房间不处理 + if (![message.session.sessionId isEqualToString:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]) { + continue; + } + + if (message.messageType == NIMMessageTypeNotification) { + NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; + NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; + NSInteger onLineNumber = self.roomInfo.onlineNum; + switch (content.eventType) { + case NIMChatroomEventTypeInfoUpdated: // 麦序状态更新 + { + NSDictionary *data = [content.notifyExt toJSONObject]; + int type = [data[@"type"] intValue]; + switch (type) { + case 1: + case 3: + { + NSMutableDictionary *lastRoomInfoDic = [NSMutableDictionary dictionaryWithDictionary:[self.roomInfo model2dictionary]]; + [lastRoomInfoDic addEntriesFromDictionary: ((NSString *)data[@"roomInfo"]).toJSONObject]; + RoomInfoModel *newRoomInfo = [RoomInfoModel modelWithJSON:lastRoomInfoDic]; + //TODO: 从小游戏房间切换到普通房间的话 mgid不会被清除掉 + if (newRoomInfo.type != RoomType_MiniGame) { + newRoomInfo.mgId = 0; + } + newRoomInfo.hasAnimationEffect = self.hasAnimationEffect; + if (newRoomInfo.roomModeType == RoomModeType_Open_Blind && self.roomInfo.roomModeType != RoomModeType_Open_Blind) { + ///普通房 切换为相亲房 + newRoomInfo.datingState = RoomDatingStateChangeType_Open; + } else if(newRoomInfo.roomModeType != RoomModeType_Open_Blind && self.roomInfo.roomModeType == RoomModeType_Open_Blind) { + ///关闭了相亲房 + newRoomInfo.datingState = RoomDatingStateChangeType_Close; + } else { + newRoomInfo.datingState = RoomDatingStateChangeType_Normal; + } + //房间类型是否变更了(从个播->普通,个播->小游戏等) + newRoomInfo.hadChangeRoomType = self.roomInfo.type != newRoomInfo.type; + BOOL anchorToOther = newRoomInfo.type != RoomType_Anchor && self.roomInfo.type == RoomType_Anchor;//个播变其他房 + self.roomInfo = newRoomInfo; + [self.backContainerView onRoomUpdate]; + self.quickMessageContainerView.titleArray = self.roomInfo.speakTemplate; + if (self.roomInfo.type == RoomType_Anchor && self.roomInfo.hadChangeRoomType) {///从其他房变为个播房 + [self handleInitAnchorRoom]; + [self showAnchorScrollTipView]; + } else if (anchorToOther) { + [self.anchorScrollView removeFromSuperview]; + [self.backContainerView removeFromSuperview]; + [self.stageView removeFromSuperview]; + [self.messageContainerView removeFromSuperview]; + [self.quickMessageContainerView removeFromSuperview]; + [self.activityContainerView removeFromSuperview]; + [self.roomHeaderView removeFromSuperview]; + [self.functionView removeFromSuperview]; + + [self.view addSubview:self.backContainerView]; + [self.view addSubview:self.stageView]; + [self.view addSubview:self.messageContainerView]; + [self.view addSubview:self.quickMessageContainerView]; + [self.view addSubview:self.activityContainerView]; + [self.view addSubview:self.roomHeaderView]; + [self.view addSubview:self.functionView]; + [self.view bringSubviewToFront:self.menuContainerView]; + [self.view bringSubviewToFront:self.animationView]; + [self initSubViewConstraints]; + [self changeStageViewOnRoomUpdate]; + [self.stageView onRoomUpdate]; + [self.menuContainerView onRoomUpdate]; + [self.functionView onRoomUpdate]; + [self.activityContainerView onRoomUpdate]; + [self.messageContainerView onRoomUpdate]; + } else { + if (self.roomInfo.type == RoomType_Anchor) { + [self changeStageViewOnAnchorRoom]; + } else { + [self changeStageViewOnRoomUpdate]; + } + [self.stageView onRoomUpdate]; + [self.menuContainerView onRoomUpdate]; + [self.functionView onRoomUpdate]; + [self.activityContainerView onRoomUpdate]; + [self.messageContainerView onRoomUpdate]; + } + } + break; + } + } + break; + case NIMChatroomEventTypeEnter: + if (content.source.userId.integerValue != [AccountInfoStorage instance].getUid.integerValue && self.userInfo.platformRole != 1) { + onLineNumber += 1; + }else {///如果是自己的话 如果有坐骑的话 + [self userEnterRoomSuccess]; + ///在活动页面 判断是否显示 相亲加入的按钮 所以需要等用户进房成功之后才能获取 房间角色 + [self.activityContainerView onRoomUpdate]; + [self.menuContainerView onRoomUpdate]; + } + break; + case NIMChatroomEventTypeAddBlack: + case NIMChatroomEventTypeKicked: + case NIMChatroomEventTypeExit: + onLineNumber -= 1; + break; + case NIMChatroomEventTypeQueueChange: // 麦序上下麦 + { + NSDictionary* data = (NSDictionary *)content.ext; + UserInfoModel* userInfo = [UserInfoModel modelWithJSON:[data objectForKey:NIMChatroomEventInfoQueueChangeItemValueKey]]; + NSInteger changeType = [data[NIMChatroomEventInfoQueueChangeTypeKey] integerValue]; + if (changeType == 1 && userInfo.uid == [AccountInfoStorage instance].getUid.integerValue) { + [self cancelRoomArrangeMic]; + } + } + break; + default: + break; + } + self.roomInfo.onlineNum = onLineNumber; + [self.roomHeaderView onRoomUpdate]; + [self.stageView handleNIMNotificationMessage:message]; + [self.animationView handleNIMNotificationMessage:message]; + [self.messageContainerView handleNIMNotificationMessage:message]; + [self.activityContainerView handleNIMNotificationMessage:message]; + [self.menuContainerView handleNIMNotificationMessage:message]; + [self.functionView handleNIMNotificationMessage:message]; + if([self.stageView findMicroViewByUid:@(self.userInfo.uid).stringValue] != nil){ + [XPSkillCardPlayerManager shareInstance].isMineInMic = YES; + }else{ + [XPSkillCardPlayerManager shareInstance].isMineInMic = NO; + }; + } else if (message.messageType == NIMMessageTypeCustom) { + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) { + AttachmentModel * attachment = obj.attachment; + [self.stageView handleNIMCustomMessage:message]; + [self.animationView handleNIMCustomMessage:message]; + [self.menuContainerView handleNIMCustomMessage:message]; + [self.activityContainerView handleNIMCustomMessage:message]; + [self.functionView handleNIMCustomMessage:message]; + if (attachment.first == CustomMessageType_First_Recharge_Reward && attachment.second == Custom_Message_Sub_Room_First_Recharge_Reward) { + self.userInfo.isFirstCharge = NO; + [self.menuContainerView onRoomUpdate]; + [self.activityContainerView onRoomUpdate]; + } else if (attachment.first == CustomMessageType_Update_RoomInfo && attachment.second == Custom_Message_Sub_Update_RoomInfo_MessageState) { + ///兼容安卓和iOS 协议不同的问题 + NSDictionary * dic= attachment.data[@"roomInfo"]; + if (dic.allKeys.count <=0) { + dic = attachment.data; + } + RoomInfoModel * roomInfo = [RoomInfoModel modelWithDictionary:dic]; + self.roomInfo.isCloseScreen = roomInfo.isCloseScreen; + [self.menuContainerView onRoomUpdate]; + } else if(attachment.first == CustomMessageType_Queue && attachment.second == Custom_Message_Sub_Queue_Invite) { + NSDictionary *dic = attachment.data; + NSString *uid = dic[@"uid"]; + if (uid.integerValue == [AccountInfoStorage instance].getUid.integerValue) { + [self cancelRoomArrangeMic]; + } + } else if(attachment.first == CustomMessageType_Hall_Super_Admin && attachment.second == Custom_Message_Sub_Hall_Super_Admin_Kick_Manager_Out_Room) { + XPKickUserModel * userInfo = [XPKickUserModel modelWithJSON:attachment.data]; + if (userInfo.targetUid == [AccountInfoStorage instance].getUid.integerValue) { + [self.presenter exitNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; + [[XPRoomMiniManager shareManager] resetLocalMessage]; + [self cancelRoomArrangeMic]; + [[RtcManager instance] exitRoom]; + [self.presenter reportUserOutRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]; + [self dismissViewControllerAnimated:YES completion:nil]; + } + } else if (attachment.first == CustomMessageType_RedPacket) { + if (attachment.second == Custom_Message_Sub_RoomDiamandRedPacket) { + XPReceiveRedPacketView *view = [[XPReceiveRedPacketView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; + XPReceiveRedPacketModel *data = [XPReceiveRedPacketModel modelWithJSON:attachment.data]; + view.redPacketModel = data; + for (UIView *subView in self.view.subviews) { + if([subView isKindOfClass:[XPReceiveRedPacketView class]]) { + view.alphaView.backgroundColor = [UIColor clearColor]; + break; + } + } + [self.view addSubview:view]; + [self.view bringSubviewToFront:view]; + } + } + [self.messageContainerView handleNIMCustomMessage:message]; + } + } else if(message.messageType == NIMMessageTypeText) { + [self.messageContainerView handleNIMTextMessage:message]; + } else if(message.messageType == NIMMessageTypeTip) { + [self.messageContainerView handleNIMTextMessage:message]; + } + } +} + +//发送消息成功回调 +- (void)sendMessage:(NIMMessage *)message didCompleteWithError:(NSError *)error { + // 非本房间不处理 + if (![message.session.sessionId isEqualToString:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]) { + return; + } + + if (message.yidunAntiSpamRes) { + NSDictionary * spamRes = message.yidunAntiSpamRes.toJSONObject; + NSDictionary * spamResExt = ((NSString *)spamRes[@"ext"]).toJSONObject; + if ([spamResExt[@"antispam"][@"suggestion"] intValue] == 2) { + [self showErrorToast:@"消息中可能含有违规信息,请停止发送类似信息!"]; + return; + } + } + + if (error) return; + if (message.messageType == NIMMessageTypeCustom) { + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) { + AttachmentModel * attachment = obj.attachment; + [self.stageView handleNIMCustomMessage:message]; + [self.animationView handleNIMCustomMessage:message]; + [self.functionView handleNIMCustomMessage:message]; + if (attachment.first == CustomMessageType_Update_RoomInfo && attachment.second == Custom_Message_Sub_Update_RoomInfo_MessageState) { + RoomInfoModel * roomInfo = [RoomInfoModel modelWithDictionary:attachment.data[@"roomInfo"]]; + self.roomInfo.isCloseScreen = roomInfo.isCloseScreen; + [self.menuContainerView onRoomUpdate]; + } + [self.messageContainerView handleNIMCustomMessage:message]; + } + }else if(message.messageType == NIMMessageTypeText) { + [self.messageContainerView handleNIMTextMessage:message];; + } +} + +#pragma mark - NIMLoginManagerDelegate +- (void)onKickout:(NIMLoginKickoutResult *)result { + [self exitRoom]; + [self dismissViewControllerAnimated:YES completion:nil]; +} + +#pragma mark - NIMConversationManagerDelegate +- (void)didAddRecentSession:(NIMRecentSession *)recentSession + totalUnreadCount:(NSInteger)totalUnreadCount { + [self.menuContainerView addNIMRecentSession:recentSession]; +} + +- (void)didUpdateRecentSession:(NIMRecentSession *)recentSession + totalUnreadCount:(NSInteger)totalUnreadCount { + [self.menuContainerView addNIMRecentSession:recentSession]; +} + +- (void)didRemoveRecentSession:(NIMRecentSession *)recentSession + totalUnreadCount:(NSInteger)totalUnreadCount { + [self.menuContainerView removeNIMRecentSession:recentSession]; +} + +#pragma mark - RoomDelegate +- (RoomInfoModel *)getRoomInfo { + return self.roomInfo; +} + +- (UserInfoModel *)getUserInfo { + return self.userInfo; +} + +- (void)exitRoom { + [self.menuContainerView menuResignFirstResponder]; + if (self.roomInfo.roomModeType == RoomModeType_Open_Micro_Mode || self.roomInfo.roomModeType == RoomModeType_Open_Blind) { + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; + NSString * uid = [AccountInfoStorage instance].getUid; + [Api getRoomArrangeMicList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + ArrangeMicModel * arrangeMicModel= [ArrangeMicModel modelWithJSON:data.data]; + if (arrangeMicModel.myPos.intValue > 0) { + [TTPopup alertWithMessage:@"退出房间后将退出目前排麦,再次进入需要重新排麦,确认退出房间吗?" confirmHandler:^{ + __block NSString * grouptype = @"0"; + if (self.roomInfo.roomModeType == RoomModeType_Open_Blind) { + [arrangeMicModel.queue enumerateObjectsUsingBlock:^(ArrangeMicUserModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.uid.integerValue == [AccountInfoStorage instance].getUid.integerValue) { + grouptype = [NSString stringWithFormat:@"%ld", obj.groupType]; + *stop = YES; + } + }]; + } + [Api cancelArrangeMic:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + + } roomUid:roomUid operUid:uid groupType:grouptype]; + [self.presenter exitNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; + [[XPRoomMiniManager shareManager] resetLocalMessage]; + [[RtcManager instance] exitRoom]; + [self.presenter reportUserOutRoom:roomUid]; + [self handleFirstOutRoom]; + [self dismissViewControllerAnimated:YES completion:nil]; + } cancelHandler:^{ + + }]; + return; + } + } + [self.presenter exitNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; + [[XPRoomMiniManager shareManager] resetLocalMessage]; + [[RtcManager instance] exitRoom]; + [self.presenter reportUserOutRoom:roomUid]; + [self handleFirstOutRoom]; + [self dismissViewControllerAnimated:YES completion:nil]; + } roomUid:roomUid operUid:uid page:@"1" pageSize:@"50"]; + } else if(self.roomInfo.roomModeType == RoomModeType_Open_PK_Mode) { + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; + NSString * uid = [AccountInfoStorage instance].getUid; + [Api getRoomPKUserList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + ArrangeMicModel * arrangeMicModel= [ArrangeMicModel modelWithJSON:data.data]; + if (arrangeMicModel.myPos.intValue > 0) { + [TTPopup alertWithMessage:@"退出房间后将退出目前排麦,再次进入需要重新排麦,确认退出房间吗?" confirmHandler:^{ + __block NSString * grouptype = @"0"; + [arrangeMicModel.queue enumerateObjectsUsingBlock:^(ArrangeMicUserModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj.uid.integerValue == [AccountInfoStorage instance].getUid.integerValue) { + grouptype = [NSString stringWithFormat:@"%ld", obj.groupType]; + *stop = YES; + } + }]; + [Api cancelRoomPKArrangeMic:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + + } roomUid:roomUid operUid:uid groupType:grouptype]; + [self.presenter exitNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; + [[XPRoomMiniManager shareManager] resetLocalMessage]; + [[RtcManager instance] exitRoom]; + [self handleFirstOutRoom]; + [self dismissViewControllerAnimated:YES completion:nil]; + } cancelHandler:^{ + + }]; + return; + } + } + [self.presenter exitNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; + [[XPRoomMiniManager shareManager] resetLocalMessage]; + [[RtcManager instance] exitRoom]; + [self handleFirstOutRoom]; + [self dismissViewControllerAnimated:YES completion:nil]; + } roomUid:roomUid operUid:uid page:@"1" pageSize:@"50"]; + } else { + [self.presenter exitNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; + [[XPRoomMiniManager shareManager] resetLocalMessage]; + [[RtcManager instance] exitRoom]; + [self.presenter reportUserOutRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]; + [self handleFirstOutRoom]; + [self dismissViewControllerAnimated:YES completion:nil]; + } +} + +- (void)miniRoom { + [self.menuContainerView menuResignFirstResponder]; + [[XPRoomMiniManager shareManager] configRoomInfo:self.roomInfo]; + [[XPRoomMiniManager shareManager] configUserInfo:self.userInfo]; + [[XPRoomMiniManager shareManager] configCurrentMusic:self.functionView.getCurrentMusic isPlaying:self.functionView.isPlaying]; + NSMutableDictionary * dic = [NSMutableDictionary dictionary]; + [dic safeSetObject:self.roomInfo.model2dictionary forKey:@"roomInfo"]; + [dic safeSetObject:self.userInfo.model2dictionary forKey:@"userInfo"]; + [dic safeSetObject:self.getMicroQueue forKey:@"microQueue"]; + [[NSNotificationCenter defaultCenter] postNotificationName:kRoomMiniNotificationKey object:nil userInfo:dic]; + [self.view endEditing:YES]; + [self handleFirstOutRoom]; + [self dismissViewControllerAnimated:YES completion:nil]; +} + +- (UINavigationController *)getCurrentNav { + return self.navigationController; +} + +- (NSMutableDictionary *)getMicroQueue { + return [self.stageView getMicroQueue]; +} + +- (NSArray *)getRoomSuperAdminList { + return self.superMangerList; +} + +- (NSArray *)getRoomPKGroupTeamList { + return [self.functionView getRoomPKGroupTeamList]; +} + +- (BOOL)isRoomPKPlaying { + return [self.functionView isRoomPKPlaying]; +} + +- (void)onMicroQueueUpdate:(NSMutableDictionary *)queue { + [self.menuContainerView onMicroQueueUpdate:queue]; + [self.functionView onRoomUpdate]; + [self.functionView onMicroQueueUpdate:queue]; + + BOOL isOnMic = false; + for (MicroQueueModel * info in queue.allValues) { + if (info.userInfo.uid > 0 && [AccountInfoStorage instance].getUid.integerValue == info.userInfo.uid) { + isOnMic = YES; + break; + } + } + + if (isOnMic) { + self.anchorScrollView.scrollEnabled = NO; + } else { + self.anchorScrollView.scrollEnabled = YES; + } +} + +- (CGPoint)animationPointAtStageViewByUid:(NSString *)uid { + return [self.stageView animationPointAtStageViewByUid:uid]; +} + +#pragma mark - 首次退出非自己的房间,处理是否需要弹新用户充值优惠 +- (void)handleFirstOutRoom { + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + if (![defaults boolForKey:kHadQuitOtherRoomKey] && self.userInfo.uid != self.roomInfo.uid && self.userInfo.showLimitCharge) { + [defaults setBool:YES forKey:kHadQuitOtherRoomKey]; + [defaults synchronize]; + [[NSNotificationCenter defaultCenter] postNotificationName:kNewUserRechargeKey object:nil]; + } +} +#pragma mark - AnchorRoomScrollViewDelegate +- (void)anchorScrollViewScrollToNext:(AnchorRoomScrollView *)anchorScrollView { + if (!self) { + return; + } + [self.view endEditing:YES]; + [self showAnchorLoading]; + [self.presenter getCycleAnchorRoomList:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]; +} + + +- (void)anchorScrollViewScrollToPrevious:(AnchorRoomScrollView *)anchorScrollView { + if (!self || self.anchorRoomList.count <= 0) { + return; + } + [self.view endEditing:YES]; + [self showAnchorLoading]; + if (self.anchorIndex < self.anchorRoomList.count) { + NSString * roomUid = [self.anchorRoomList safeObjectAtIndex1:self.anchorIndex]; + [self.presenter getCurrentRoomInfo:roomUid]; + self.anchorIndex --; + }else { + [self showErrorToast:YMLocalizedString(@"XPRoomViewController13")]; + self.anchorScrollView.contentOffset = CGPointMake(0, KScreenHeight); + } +} + +#pragma mark - XPRoomSettingInputViewDelegate +///点击了完成 +- (void)xPRoomSettingInputView:(XPRoomSettingInputView *)view didClickConfirm:(NSString *)text type:(RoomSettingInputType)type { + NSString *pwdDes = [DESEncrypt encryptUseDES:text key:KeyWithType(KeyType_PasswordEncode)]; + if ([pwdDes isEqualToString:self.roomInfo.roomPwd]) { + [TTPopup dismiss]; + view.isPwdError = NO; + if (self.roomInfo.type == RoomType_Anchor) { + if (!self.anchorScrollView.superview) { + [self.view insertSubview:self.anchorScrollView belowSubview:self.menuContainerView]; + } + [self.backContainerView removeFromSuperview]; + [self.stageView removeFromSuperview]; + [self.messageContainerView removeFromSuperview]; + [self.quickMessageContainerView removeFromSuperview]; + [self.activityContainerView removeFromSuperview]; + [self.roomHeaderView removeFromSuperview]; + [self.functionView removeFromSuperview]; + + [self.anchorScrollView addSubview:self.backContainerView]; + [self.anchorScrollView addSubview:self.stageView]; + [self.anchorScrollView addSubview:self.messageContainerView]; + [self.anchorScrollView addSubview:self.quickMessageContainerView]; + [self.anchorScrollView addSubview:self.activityContainerView]; + [self.anchorScrollView addSubview:self.roomHeaderView]; + [self.anchorScrollView addSubview:self.functionView]; + if (!self.menuContainerView.superview) { + [self.view addSubview:self.menuContainerView]; + } + [self.view bringSubviewToFront:self.animationView]; + + [self updateViewConstraintsOnAnchorRoom]; + [self changeStageViewOnAnchorRoom]; + + [self.roomHeaderView onRoomEntered]; + [self.activityContainerView onRoomEntered]; + [self.menuContainerView onRoomEntered]; + [self.backContainerView onRoomEntered]; + if ([XPRoomMiniManager shareManager].getRoomInfo.uid != self.roomUid.integerValue) {// 最小化进房 还是原来的房间的话 不需要重新进入云信 因为压根没退 + [self.presenter enterNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; + [self.functionView onRoomEntered]; + [self.messageContainerView onRoomEntered]; + } else { + //虽然没退出房间 但是队列还是要拿的 + [self.stageView onRoomMiniEntered]; + [self.messageContainerView onRoomMiniEntered]; + [self.functionView onRoomMiniEntered]; + [self.functionView onRoomEntered]; + } + [[XPRoomMiniManager shareManager] configRoomInfo:nil]; + [[XPRoomMiniManager shareManager] configUserInfo:nil]; + [[XPRoomMiniManager shareManager] configCurrentMusic:nil isPlaying:NO]; + } else { + [self.roomHeaderView onRoomEntered]; + [self.activityContainerView onRoomEntered]; + [self.menuContainerView onRoomEntered]; + [self changeStageViewOnRoomUpdate]; + [self.backContainerView onRoomEntered]; + [self.functionView onRoomEntered]; + [self.presenter enterNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; + [self.messageContainerView onRoomEntered]; + [[XPRoomMiniManager shareManager] configRoomInfo:nil]; + [[XPRoomMiniManager shareManager] configUserInfo:nil]; + [[XPRoomMiniManager shareManager] configCurrentMusic:nil isPlaying:NO]; + } + } else { + view.isPwdError = YES; + } +} + +- (void)didClickCancel:(RoomSettingInputType)type { + if (type == RoomSettingInputType_Input_Pwd) { + [self enterRoomFail:0]; + } +} + +- (XPRoomBackContainerView *)backContainerView { + if (!_backContainerView) { + _backContainerView = [[XPRoomBackContainerView alloc] initWithdelegate:self]; + } + return _backContainerView; +} + +- (RoomHeaderView *)roomHeaderView { + if (!_roomHeaderView) { + _roomHeaderView = [[RoomHeaderView alloc] initWithDelegate:self]; + } + return _roomHeaderView; +} + +- (XPRoomMessageContainerView *)messageContainerView { + if (!_messageContainerView) { + _messageContainerView = [[XPRoomMessageContainerView alloc] initWithDelegate:self]; + } + return _messageContainerView; +} + +- (XPRoomQuickMessageContainView *)quickMessageContainerView { + if(!_quickMessageContainerView) { + _quickMessageContainerView = [[XPRoomQuickMessageContainView alloc] initWithDelegate:self]; + } + return _quickMessageContainerView; +} + +- (XPRoomMenuContainerView *)menuContainerView { + if (!_menuContainerView) { + _menuContainerView = [[XPRoomMenuContainerView alloc] initWithDelegate:self]; + } + return _menuContainerView; +} + +- (XPRoomActivityContainerView *)activityContainerView { + if (!_activityContainerView) { + _activityContainerView = [[XPRoomActivityContainerView alloc] initWithdelegate:self]; + } + return _activityContainerView; +} + +- (XPRoomAnimationView *)animationView { + if (!_animationView) { + _animationView = [[XPRoomAnimationView alloc] initWithDelegate:self]; + } + return _animationView; +} + +- (XPRoomFunctionContainerView *)functionView { + if (!_functionView) { + _functionView = [[XPRoomFunctionContainerView alloc] initWithdelegate:self]; + } + return _functionView; +} + +- (StageView *)stageView { + if (!_stageView) { + _stageView = [[SocialStageView alloc] initWithDelegate:self]; + } + return _stageView; +} + +- (AnchorRoomScrollView *)anchorScrollView { + if (!_anchorScrollView) { + _anchorScrollView = [[AnchorRoomScrollView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; + _anchorScrollView.anchorScrollDelegate = self; + _anchorScrollView.hostDelegate = self; + if (@available(iOS 11.0, *)) { + _anchorScrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + } + return _anchorScrollView; +} + +- (AnchorRoomSrollTipView *)anchorScrollTipView { + if (!_anchorScrollTipView) { + _anchorScrollTipView = [[AnchorRoomSrollTipView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; + } + return _anchorScrollTipView; +} + +- (NSMutableArray *)anchorRoomList { + if (!_anchorRoomList) { + _anchorRoomList = [NSMutableArray array]; + } + return _anchorRoomList; +} + +- (XPFirstRechargeView *)firstRechargeView{ + if (!_firstRechargeView){ + XPFirstRechargeView *firstRechargeView = [[XPFirstRechargeView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; + firstRechargeView.delegate = self; + + _firstRechargeView = firstRechargeView; + } + return _firstRechargeView; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/YUMIChamberMiniExecutive.h b/YuMi/Modules/YMRoom/View/YUMIChamberMiniExecutive.h deleted file mode 100644 index 3029dff6..00000000 --- a/YuMi/Modules/YMRoom/View/YUMIChamberMiniExecutive.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// YMRoomMiniManager.h -// YUMI -// -// Created by YUMI on 2021/12/8. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ChamberAbstractMatrix, NIMMessage, Manual, ConsumerAbstractMatrix; -@interface YUMIChamberMiniExecutive : NSObject - -@property (nonatomic,copy) NSString *_Nullable curDeclare; -+ (instancetype)shareManager; - -- (ChamberAbstractMatrix *)acquireChamberAbstract; - -- (void)prohibitipositionChamberAbstract:(ChamberAbstractMatrix * _Nullable)roomInfo; - -- (ConsumerAbstractMatrix *)getUserInfo; - -- (void)prohibitipositionConsumerAbstract:(ConsumerAbstractMatrix * _Nullable)userInfo; -- (void)preserveChamberCommunictowardsion:(NIMMessage *)message; -- (NSArray *)acquireProvincialUniversalChamberCommunictowardsion; -- (void)replacementProvincialCommunictowardsion; - -- (Manual *)acquireUniversalManual; -- (BOOL)manualDisporting; -- (void)prohibitipositionUniversalManual:(Manual * _Nullable)roomInfo isPlaying:(BOOL)isPlaying; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/YUMIChamberMiniExecutive.m b/YuMi/Modules/YMRoom/View/YUMIChamberMiniExecutive.m deleted file mode 100644 index e4c632f2..00000000 --- a/YuMi/Modules/YMRoom/View/YUMIChamberMiniExecutive.m +++ /dev/null @@ -1,81 +0,0 @@ -// -// YMRoomMiniManager.m -// YUMI -// -// Created by YUMI on 2021/12/8. -// - -#import "YUMIChamberMiniExecutive.h" -#import "XPRoomMessageConstant.h" - -@interface YUMIChamberMiniExecutive () -@property (nonatomic,strong) NSMutableArray *communicationGarment; -@property (nonatomic,strong) ChamberAbstractMatrix *roomInfo; -@property (nonatomic,strong) Manual *manualAbstract; -@property (nonatomic,assign) BOOL isPlaying; -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@end - -@implementation YUMIChamberMiniExecutive - -+ (instancetype)shareManager { - static dispatch_once_t onceToken = 0; - static id instance; - dispatch_once(&onceToken, ^{ - instance = [[YUMIChamberMiniExecutive alloc] init]; - }); - return instance; -} - -- (ChamberAbstractMatrix *)acquireChamberAbstract { - return self.roomInfo; -} - -- (void)prohibitipositionChamberAbstract:(ChamberAbstractMatrix *_Nullable)roomInfo { - self.roomInfo = roomInfo; -} - -- (ConsumerAbstractMatrix *)getUserInfo { - return self.userInfo; -} - -- (void)prohibitipositionConsumerAbstract:(ConsumerAbstractMatrix * _Nullable)userInfo { - self.userInfo = userInfo; -} - -- (Manual *)acquireUniversalManual { - return self.manualAbstract; -} - -- (BOOL)manualDisporting { - return self.isPlaying; -} - -- (void)prohibitipositionUniversalManual:(Manual *)manual isPlaying:(BOOL)isPlaying { - self.manualAbstract = manual; - self.isPlaying = isPlaying; -} - -- (void)preserveChamberCommunictowardsion:(NIMMessage *)message { - [self.communicationGarment addObject:message]; - if (self.communicationGarment.count > kChamberCommunicationLargestLongness) { - NSIndexSet *set = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, kChamberCommunicationLargestLongness/2)]; - NSArray *needRemoveMsgArray = [self.communicationGarment objectsAtIndexes:set]; - [self.communicationGarment removeObjectsInArray:needRemoveMsgArray]; - } -} -- (NSArray *)acquireProvincialUniversalChamberCommunictowardsion { - return [self.communicationGarment copy]; -} -- (void)replacementProvincialCommunictowardsion { - [self.communicationGarment removeAllObjects]; -} - -- (NSMutableArray *)communicationGarment { - if (!_communicationGarment) { - _communicationGarment = [NSMutableArray array]; - } - return _communicationGarment; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/YUMIChamberRegardGovernancer.h b/YuMi/Modules/YMRoom/View/YUMIChamberRegardGovernancer.h deleted file mode 100644 index cca7a058..00000000 --- a/YuMi/Modules/YMRoom/View/YUMIChamberRegardGovernancer.h +++ /dev/null @@ -1,35 +0,0 @@ -// -// YMRoomViewController.h -// YUMI -// -// Created by YUMI on 2021/10/11. -// - -#import "MvpRegardGovernancer.h" -#import "YUMICommunicationRemoteExtMatrix.h" -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIChamberRegardGovernancer : MvpRegardGovernancer - - -+ (BOOL)unfoildChamber:(NSString*)roomUid viewController:(UIViewController*)viewController; - - -+ (BOOL)unfoildRoadliceChamber:(NSString*)roomUid viewController:(UIViewController*)viewController; - - -+ (BOOL)unfoildChamber:(NSString*)roomUid fromNick:(NSString * __nullable)fromNick fromType:(ConsumerEnterChamberFromGenre)fromType fromUid:(NSString * __nullable)fromUid viewController:(UIViewController*)viewController; - - -+ (BOOL)unfoildChamber:(NSString*)roomUid mgId:(NSString *)mgId viewController:(UIViewController*)viewController; - -+ (BOOL)unfoildChamber:(NSString *)roomUid giftId:(NSString *)giftId viewController:(UIViewController *)viewController; - -- (instancetype)init NS_UNAVAILABLE; -+ (instancetype)new NS_UNAVAILABLE; -- (id)copy NS_UNAVAILABLE; -- (id)mutableCopy NS_UNAVAILABLE; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/YUMIChamberRegardGovernancer.m b/YuMi/Modules/YMRoom/View/YUMIChamberRegardGovernancer.m deleted file mode 100644 index 5cd3e836..00000000 --- a/YuMi/Modules/YMRoom/View/YUMIChamberRegardGovernancer.m +++ /dev/null @@ -1,1703 +0,0 @@ -// -// YMRoomViewController.m -// YUMI -// -// Created by YUMI on 2021/10/11. -// - -#import "YUMIChamberRegardGovernancer.h" -#import -#import -#import "YUMIMacroUitls.h" -#import "YUMIConstant.h" -#import "AccountAbstractStorage.h" -#import "RealtimackExecutive.h" -#import "YUMIChamberMiniExecutive.h" -#import "MKJPopup.h" -#import "Api+ArrangeMic.h" -#import "Api+Room.h" -#import "DESEncrypt.h" -#import "StatsticsticsServingFacilitater.h" -#import "NSArray+Safe.h" -#import "NSMutableDictionary+Saft.h" -#import "YUMICommunicationSolitaireDisporterExecutive.h" -#import "XCCurrentVCStackExecutive.h" -#import "ChamberAbstractMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "AttachmentMatrix.h" -#import "ScheduleLoudspeakerMatrix.h" -#import "YUMIReleaseWirelessMatrix.h" -#import "UnionSensationalManagementAbstractMatrix.h" -#import "XCombatickConsumerMatrix.h" -#import "SatisfactionPrototypeAscensionMatrix.h" -#import "YUMIAchieveDeficitSheatheMatrix.h" -#import "YUMIDeficitSheatheMatrix.h" -#import "ThresholdChargeChamberWindowMatrix.h" -#import "BaseNevigationGovernancer.h" -#import "YUMIChamberImportpriseAccommodatedRegard.h" -#import "YUMIChamberBackAccommodatedRegard.h" -#import "YUMIChamberParrotAccommodatedRegard.h" -#import "YUMIChamberMHTuickCommunicationContainRegard.h" -#import "YUMIChamberCommunicationAccommodatedRegard.h" -#import "ChamberIntelligencerRegard.h" -#import "SocialPhaseRegard.h" -#import "EngagementPhaseRegard.h" -#import "KellegPhaseRegard.h" -#import "KellegCombatPhaseRegard.h" -#import "YUMIChamberBrightnessRegard.h" -#import "YUMIChamberFunctionAccommodatedRegard.h" -#import "YUMIScheduleLoudspeakerRegardGovernancer.h" -#import "YUMIChamberInstanllingIntrojectionRegard.h" -#import "KellegChamberScrollRegard.h" -#import "KellegChamberSrollTipRegard.h" -#import "YUMIAchieveDeficitSheatheRegard.h" -#import "YUMIThresholdReindictRegard.h" -#import "YUMIChamberExternalizer.h" -#import "FBCChamberCeremony.h" - -#import "ChamberHostRepresendtation.h" -#import "ChamberGuestRepresendtation.h" - -#import "XNDJTBWGLoadingTool.h" - -UIKIT_EXTERN NSString * const kRoomGiftEffectUpdateNotificationKey; -UIKIT_EXTERN NSString * const kRoomMiniNotificationKey; -UIKIT_EXTERN NSString * kNewUserRechargeKey; -UIKIT_EXTERN NSString * kShowFirstRechargeView; - -NSString * const kHadShowAnchorRoomTipKey = @"kHadShowAnchorRoomTipKey"; -NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey"; - -@interface YUMIChamberRegardGovernancer () -@property (nonatomic,strong) YUMIChamberBackAccommodatedRegard *encourageAccommoengagementdRegard; - -@property (nonatomic, strong) KellegChamberScrollRegard *kellegTrundleRegard; -@property (nonatomic,strong) ChamberIntelligencerRegard *chamberIntelligenceerRegard; -@property (nonatomic,strong) PhaseRegard *scoupleeRegard; -@property (nonatomic,strong) YUMIChamberCommunicationAccommodatedRegard *communicationAccommoengagementdRegard; -@property (nonatomic, strong) YUMIChamberMHTuickCommunicationContainRegard *quickCommunicationAccommoengagementdRegard; -@property (nonatomic,strong) YUMIChamberParrotAccommodatedRegard *parrotAccommoengagementdRegard; -@property (nonatomic,strong) YUMIChamberImportpriseAccommodatedRegard *importpriseAccommoengagementdRegard; -@property (nonatomic,strong) YUMIChamberBrightnessRegard *animationView; -@property (nonatomic,strong) YUMIChamberFunctionAccommodatedRegard *functionRegard; -@property (nonatomic,copy) NSString * roomUid; -@property (nonatomic,copy) NSString *mgId; -@property (nonatomic, copy) NSString *giftId; -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@property (nonatomic,strong) ChamberAbstractMatrix *roomInfo; -@property (nonatomic,assign) BOOL hasAnimationEffect; -@property (nonatomic,copy) NSString *fromNick; -@property (nonatomic,assign) ConsumerEnterChamberFromGenre fromType; -@property (nonatomic,copy) NSString *fromUid; -@property (nonatomic,strong) NSArray *superMangerList; -@property (nonatomic,assign) BOOL isDemandSensationalManagement; -@property (nonatomic,assign) BOOL isRoadliceImport; -@property (nonatomic, strong) KellegChamberSrollTipRegard *kellegTrundlePromptRegard; - -@property (nonatomic,strong) NSMutableArray *kellegChamberStatement; -@property (nonatomic,assign) NSInteger kellegIndicatrix; -@property (nonatomic,strong) YUMIThresholdReindictRegard *thresholdReindictRegard; -@property (nonatomic,assign) BOOL isExhibitThresholdReindict; -@end - -@implementation YUMIChamberRegardGovernancer - -+ (BOOL)unfoildChamber:(NSString *)roomUid viewController:(UIViewController *)viewController { - return [self unfoildChamber:roomUid fromNick:nil fromType:0 fromUid:nil viewController:viewController]; -} - -+ (BOOL) unfoildChamber:(NSString*)roomUid fromNick:(NSString * __nullable)fromNick fromType:(ConsumerEnterChamberFromGenre)fromType fromUid:(NSString * __nullable)fromUid viewController:(UIViewController*)viewController { - YUMIChamberRegardGovernancer * chamberVewC = [[self alloc] init]; - chamberVewC.roomUid = roomUid; - chamberVewC.fromUid = fromUid; - chamberVewC.fromType = fromType; - chamberVewC.fromNick = fromNick; - BaseNevigationGovernancer * baseNav = [[BaseNevigationGovernancer alloc] initWithRootViewController:chamberVewC]; - baseNav.modalPresentationStyle = UIModalPresentationFullScreen; - [viewController presentViewController:baseNav animated:YES completion:nil]; - return YES; -} - - -+ (BOOL)unfoildRoadliceChamber:(NSString*)roomUid viewController:(UIViewController*)viewController { - YUMIChamberRegardGovernancer * chamberVewC = [[self alloc] init]; - chamberVewC.roomUid = roomUid; - chamberVewC.isRoadliceImport = YES; - BaseNevigationGovernancer * baseNav = [[BaseNevigationGovernancer alloc] initWithRootViewController:chamberVewC]; - baseNav.modalPresentationStyle = UIModalPresentationFullScreen; - [viewController presentViewController:baseNav animated:YES completion:nil]; - return chamberVewC; -} - - -+ (BOOL)unfoildChamber:(NSString*)roomUid mgId:(NSString *)mgId viewController:(UIViewController*)viewController { - YUMIChamberRegardGovernancer * chamberVewC = [[self alloc] init]; - chamberVewC.roomUid = roomUid; - chamberVewC.mgId = mgId; - BaseNevigationGovernancer * baseNav = [[BaseNevigationGovernancer alloc] initWithRootViewController:chamberVewC]; - baseNav.modalPresentationStyle = UIModalPresentationFullScreen; - [viewController presentViewController:baseNav animated:YES completion:nil]; - return YES; -} - -+ (BOOL)unfoildChamber:(NSString *)roomUid giftId:(NSString *)giftId viewController:(UIViewController *)viewController { - YUMIChamberRegardGovernancer * chamberVewC = [[self alloc] init]; - chamberVewC.roomUid = roomUid; - chamberVewC.giftId = giftId; - BaseNevigationGovernancer * baseNav = [[BaseNevigationGovernancer alloc] initWithRootViewController:chamberVewC]; - baseNav.modalPresentationStyle = UIModalPresentationFullScreen; - [viewController presentViewController:baseNav animated:YES completion:nil]; - return YES; -} - -- (void)dealloc { -#warning to dox - 时刻注意这个方法 功能做完的时候删除此方法 - NSLog(@"房间销毁了"); - [YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance].isInChamberThresholdReindict = NO; - [YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance].isInRoom = NO; - [YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance].roomUid = @""; - if([[YUMIChamberMiniExecutive shareManager] acquireChamberAbstract]==nil){ - [YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance].isManeInLoudspeaker = NO; - } - [[NIMSDK sharedSDK].chatroomManager removeDelegate:self]; - [[NIMSDK sharedSDK].chatManager removeDelegate:self]; - [[NIMSDK sharedSDK].loginManager removeDelegate:self]; - [[NIMSDK sharedSDK].conversationManager removeDelegate:self]; - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - -- (YUMIChamberExternalizer *)producePresimport { - return [[YUMIChamberExternalizer alloc] init]; -} - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self routeInthecaseofmerChamber]; - [self initSubViews]; - [self initChildLyRestrictions]; - if (self.isRoadliceImport) { - [self initImportChamberAccomplishment:[YUMIChamberMiniExecutive shareManager].acquireChamberAbstract user:[YUMIChamberMiniExecutive shareManager].getUserInfo]; - } else { - [XNDJTBWGLoadingTool EvidenceKellegChambering:self.navigationController.view]; - [self.presimport initImportChamber:self.roomUid user:[AccountAbstractStorage instance].acquireCid]; - } - - [self.presimport acquireOrdinaryPresentSttowardsement:self.roomUid]; - - [self.presimport acquireChamberSenstowardsionalManagement:self.roomUid]; - - [self.presimport acquireChamberThresholdCharegWindow:self.roomUid]; - - [[NIMSDK sharedSDK].chatroomManager addDelegate:self]; - [[NIMSDK sharedSDK].chatManager addDelegate:self]; - [[NIMSDK sharedSDK].loginManager addDelegate:self]; - [[NIMSDK sharedSDK].conversationManager addDelegate:self]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(mietyPresentImpressionRefurbish:) name:kRoomGiftEffectUpdateNotificationKey object:nil]; - [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(EvidenceChamberThresholdInstructionWindowInthecaseofmNgtowards:) name:kShowFirstRechargeView object:nil]; - [YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance].isInRoom = YES; -} - -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { - [self.parrotAccommoengagementdRegard parrotResignThresholdResponder]; -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent; -} - -- (void)viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; - if([YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance].isInChamberThresholdReindict == YES && self.isExhibitThresholdReindict == NO){ - [YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance].isInChamberThresholdReindict = NO; - - [self.presimport acquireChamberThresholdCharegWindow:self.roomUid]; - } -} - -#pragma mark - Private Method -- (void)initSubViews { - self.view.backgroundColor = [UIColor clearColor]; - [self.view addSubview:self.encourageAccommoengagementdRegard]; - [self.view addSubview:self.scoupleeRegard]; - [self.view addSubview:self.communicationAccommoengagementdRegard]; - [self.view addSubview:self.quickCommunicationAccommoengagementdRegard]; - [self.view addSubview:self.parrotAccommoengagementdRegard]; - [self.view addSubview:self.importpriseAccommoengagementdRegard]; - [self.view addSubview:self.chamberIntelligenceerRegard]; - [self.view addSubview:self.functionRegard]; - [self.view addSubview:self.animationView]; -} - -- (void)initChildLyRestrictions { - [self.encourageAccommoengagementdRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; - - [self.chamberIntelligenceerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.height.mas_equalTo(kNavigationHeight); - }]; - - [self.scoupleeRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.top.mas_equalTo(self.chamberIntelligenceerRegard.mas_bottom); - make.height.mas_equalTo(self.scoupleeRegard.hightInthecaseofPhaseRegard); - }]; - - [self.communicationAccommoengagementdRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.scoupleeRegard.mas_bottom); - make.bottom.equalTo(self.quickCommunicationAccommoengagementdRegard.mas_top).offset(-5); - make.left.equalTo(self.view); - make.right.equalTo(self.importpriseAccommoengagementdRegard.mas_left).offset(-10); - }]; - CGFloat quickMsgHeight = 30; - - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - NSNumber *closeCount = [defaults objectForKey:kRoomQuickMessageCloseCount]; - if (closeCount.intValue > 3) { - quickMsgHeight = 0; - } else { - quickMsgHeight = 30; - } - [self.quickCommunicationAccommoengagementdRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.parrotAccommoengagementdRegard.mas_top); - make.height.mas_equalTo(quickMsgHeight); - make.left.right.mas_equalTo(self.view); - }]; - [self.parrotAccommoengagementdRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.bottom.mas_equalTo(-kSafeAreaBottomHeight- 8); - make.height.mas_equalTo(40); - }]; - - [self.importpriseAccommoengagementdRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.communicationAccommoengagementdRegard); - make.right.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.quickCommunicationAccommoengagementdRegard.mas_top).offset(-5); - make.width.mas_equalTo(80); - }]; - - [self.animationView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; - - [self.functionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; -} - -- (void)refurbishRegardRestrictionsOnKellegChamber { - [self.kellegTrundleRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; - [self.encourageAccommoengagementdRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.kellegTrundleRegard.middleIndicateRegard); - }]; - [self.chamberIntelligenceerRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.kellegTrundleRegard.middleIndicateRegard); - make.height.mas_equalTo(kNavigationHeight); - }]; - [self.scoupleeRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.kellegTrundleRegard.middleIndicateRegard); - make.top.mas_equalTo(self.chamberIntelligenceerRegard.mas_bottom); - make.height.mas_equalTo(self.scoupleeRegard.hightInthecaseofPhaseRegard); - }]; - [self.communicationAccommoengagementdRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.scoupleeRegard.mas_bottom); - make.bottom.mas_equalTo(self.quickCommunicationAccommoengagementdRegard.mas_top).mas_offset(-5); - make.left.equalTo(self.kellegTrundleRegard.middleIndicateRegard); - make.right.equalTo(self.importpriseAccommoengagementdRegard.mas_left).offset(-10); - }]; - [self.quickCommunicationAccommoengagementdRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(30); - make.bottom.mas_equalTo(self.encourageAccommoengagementdRegard).mas_offset(-5-40-8-kSafeAreaBottomHeight); - make.left.equalTo(self.kellegTrundleRegard.middleIndicateRegard); - make.right.equalTo(self.importpriseAccommoengagementdRegard.mas_left).offset(-10); - }]; - [self.parrotAccommoengagementdRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.kellegTrundleRegard.middleIndicateRegard); - make.bottom.mas_equalTo(self.kellegTrundleRegard.middleIndicateRegard).offset(-kSafeAreaBottomHeight- 8); - make.height.mas_equalTo(40); - }]; - [self.importpriseAccommoengagementdRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.communicationAccommoengagementdRegard); - make.right.mas_equalTo(self.kellegTrundleRegard.middleIndicateRegard); - make.bottom.mas_equalTo(self.quickCommunicationAccommoengagementdRegard.mas_top).mas_offset(-5); - make.width.mas_equalTo(80); - }]; - [self.functionRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.kellegTrundleRegard.middleIndicateRegard); - }]; -} - -- (void)routeInthecaseofmerChamber { - NSString * roomUid = [NSString stringWithFormat:@"%ld", [YUMIChamberMiniExecutive shareManager].acquireChamberAbstract.uid]; - if (roomUid.integerValue > 0 && roomUid.integerValue != self.roomUid.integerValue) { - - NSString * roomId = [NSString stringWithFormat:@"%ld", [YUMIChamberMiniExecutive shareManager].acquireChamberAbstract.roomId]; - [self.presimport routeNEMCChamber:roomId]; - [[RealtimackExecutive instance] exitRoom]; - [[YUMIChamberMiniExecutive shareManager] replacementProvincialCommunictowardsion]; - [self.presimport respondConsumerOptowardssideChamber:roomUid]; - } -} - -- (void)consumerImportChamberAccomplishment { - AttachmentMatrix *attachment = [[AttachmentMatrix alloc]init]; - attachment.first = IndividualityCommunicationGenre_Car_Notify; - attachment.second = Custom_Message_Sub_Car_EnterRoom; - NSMutableDictionary *att = [NSMutableDictionary dictionary]; - if (self.userInfo.userVipInfoVO.enterHide) { - return; - } - if (self.userInfo.viewUrl.length > 0) { - [att secureSetGroal:self.userInfo.nick forKey:@"nick"]; - [att secureSetGroal:self.userInfo.viewUrl forKey:@"viewUrl"]; - [att secureSetGroal:@(self.userInfo.otherViewType) forKey:@"otherViewType"]; - } else if (self.userInfo.carEffect.length > 0) { - [att secureSetGroal:self.userInfo.carEffect forKey:@"effect"]; - [att secureSetGroal:self.userInfo.nick forKey:@"nick"]; - } else { - return; - } - attachment.data = att; - NSString *sessionID = [NSString stringWithFormat:@"%ld",self.roomInfo.roomId]; - NIMMessage *message = [[NIMMessage alloc]init]; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachment; - message.messageObject = object; - - NIMSession *session = [NIMSession session:sessionID type:NIMSessionTypeChatroom]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; -} - -- (void)diversifictowardsionPhaseRegardOnChamberRefurbish { - if (self.roomInfo.roomModeType == ChamberModeGenre_Open_Blind && ![self.scoupleeRegard isKindOfClass:[EngagementPhaseRegard class]]) { - [self.scoupleeRegard removeFromSuperview]; - self.scoupleeRegard = nil; - self.scoupleeRegard = [[EngagementPhaseRegard alloc] initWithDelegate:self]; - } else if(self.roomInfo.datingState == ChamberDatingDeclareChangeGenre_Close && ![self.scoupleeRegard isKindOfClass:[SocialPhaseRegard class]]) { - [self.scoupleeRegard removeFromSuperview]; - self.scoupleeRegard = nil; - self.scoupleeRegard = [[SocialPhaseRegard alloc] initWithDelegate:self]; - } else if (self.roomInfo.type == ChamberGenre_Anchor) { - if (self.roomInfo.roomModeType == ChamberModeGenre_Open_AcrossRoomPK_mode && ![self.scoupleeRegard isKindOfClass:[KellegCombatPhaseRegard class]]) { - [self.scoupleeRegard removeFromSuperview]; - self.scoupleeRegard = nil; - self.scoupleeRegard = [[KellegCombatPhaseRegard alloc] initWithDelegate:self]; - } else if(self.roomInfo.roomModeType == ChamberModeGenre_Normal_Mode && ![self.scoupleeRegard isKindOfClass:[KellegPhaseRegard class]]) { - [self.scoupleeRegard removeFromSuperview]; - self.scoupleeRegard = nil; - self.scoupleeRegard = [[KellegPhaseRegard alloc] initWithDelegate:self]; - } - }else if(self.roomInfo.hadChangeRoomType && ![self.scoupleeRegard isKindOfClass:[SocialPhaseRegard class]]) { - [self.scoupleeRegard removeFromSuperview]; - self.scoupleeRegard = nil; - self.scoupleeRegard = [[SocialPhaseRegard alloc] initWithDelegate:self]; - } else { - return; - } - - - if (!self.scoupleeRegard.superview) { - [self.view insertSubview:self.scoupleeRegard belowSubview:self.chamberIntelligenceerRegard]; - } - - - if (self.roomInfo.type == ChamberGenre_MiniGame) { - [self.scoupleeRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.top.mas_equalTo(self.chamberIntelligenceerRegard.mas_bottom).offset(26 + 4); - make.height.mas_equalTo(self.scoupleeRegard.hightInthecaseofPhaseRegard); - }]; - - [self.communicationAccommoengagementdRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(70); - make.bottom.mas_equalTo(self.quickCommunicationAccommoengagementdRegard.mas_top).offset(-5); - make.left.mas_equalTo(self.view); - make.right.mas_equalTo(self.importpriseAccommoengagementdRegard.mas_left).offset(-10); - }]; - - [self.importpriseAccommoengagementdRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(65); - make.right.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.quickCommunicationAccommoengagementdRegard.mas_top).offset(-5); - make.width.mas_equalTo(80); - }]; - } else { - [self.scoupleeRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.top.mas_equalTo(self.chamberIntelligenceerRegard.mas_bottom); - make.height.mas_equalTo(self.scoupleeRegard.hightInthecaseofPhaseRegard); - }]; - - [self.communicationAccommoengagementdRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.scoupleeRegard.mas_bottom); - make.bottom.mas_equalTo(self.quickCommunicationAccommoengagementdRegard.mas_top).offset(-5); - make.left.mas_equalTo(self.view); - make.right.mas_equalTo(self.importpriseAccommoengagementdRegard.mas_left).offset(-10); - }]; - - [self.importpriseAccommoengagementdRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.communicationAccommoengagementdRegard); - make.right.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.quickCommunicationAccommoengagementdRegard.mas_top).offset(-5); - make.width.mas_equalTo(80); - }]; - } -} - -- (void)diversifictowardsionPhaseRegardOnKellegChamber { - if (self.roomInfo.roomModeType == ChamberModeGenre_Open_AcrossRoomPK_mode && ![self.scoupleeRegard isKindOfClass:[KellegCombatPhaseRegard class]]) { - [self.scoupleeRegard removeFromSuperview]; - self.scoupleeRegard = nil; - self.scoupleeRegard = [[KellegCombatPhaseRegard alloc] initWithDelegate:self]; - } else if(self.roomInfo.roomModeType == ChamberModeGenre_Normal_Mode && ![self.scoupleeRegard isKindOfClass:[KellegPhaseRegard class]]) { - [self.scoupleeRegard removeFromSuperview]; - self.scoupleeRegard = nil; - self.scoupleeRegard = [[KellegPhaseRegard alloc] initWithDelegate:self]; - } - if (!self.scoupleeRegard.superview) { - [self.kellegTrundleRegard insertSubview:self.scoupleeRegard belowSubview:self.chamberIntelligenceerRegard]; - } - - [self.scoupleeRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.kellegTrundleRegard.middleIndicateRegard); - make.top.mas_equalTo(self.chamberIntelligenceerRegard.mas_bottom); - make.height.mas_equalTo(self.scoupleeRegard.hightInthecaseofPhaseRegard); - }]; - [self.communicationAccommoengagementdRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.scoupleeRegard.mas_bottom); - make.bottom.mas_equalTo(self.quickCommunicationAccommoengagementdRegard.mas_top).mas_offset(-5); - make.left.mas_equalTo(self.kellegTrundleRegard.middleIndicateRegard); - make.right.mas_equalTo(self.importpriseAccommoengagementdRegard.mas_left).offset(-10); - }]; - - CGFloat quickMsgHeight = 30; - - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - NSNumber *closeCount = [defaults objectForKey:kRoomQuickMessageCloseCount]; - if (closeCount.intValue > 3 || self.roomInfo.speakTemplate.count <=0) { - quickMsgHeight = 0; - } else { - quickMsgHeight = 30; - } - self.quickCommunicationAccommoengagementdRegard.titleArray = self.roomInfo.speakTemplate; - [self.quickCommunicationAccommoengagementdRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(quickMsgHeight); - make.bottom.mas_equalTo(self.encourageAccommoengagementdRegard).mas_offset(-5-40-8-kSafeAreaBottomHeight); - make.left.right.mas_equalTo(self.kellegTrundleRegard.middleIndicateRegard); - }]; - [self.importpriseAccommoengagementdRegard mas_remakeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.communicationAccommoengagementdRegard); - make.right.mas_equalTo(self.kellegTrundleRegard.middleIndicateRegard); - make.bottom.mas_equalTo(self.quickCommunicationAccommoengagementdRegard.mas_top).mas_offset(-5); - make.width.mas_equalTo(80); - }]; -} - --(void)EvidenceChamberThresholdInstructionWindowInthecaseofmNgtowards:(NSNotification *)not{ - if(not != nil){ - NSDictionary *parameter = not.object; - if(parameter != nil){ - self.thresholdReindictRegard.type = parameter[@"type"]; - self.thresholdReindictRegard.diamonds = parameter[@"diamonds"]; - } - } - [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(EvidenceChamberThresholdInstructionWindow) object:nil]; - [[UIApplication sharedApplication].keyWindow addSubview:self.thresholdReindictRegard]; - [self.presimport refurbishChamberThresholdCharegWindow:self.roomUid]; - -} --(void)EvidenceChamberThresholdInstructionWindow{ - if([YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance].isInChamberThresholdReindict == YES){ - self.isExhibitThresholdReindict = NO; - return; - } - UIViewController *viewController = [XCCurrentVCStackExecutive shareManager].getCurrentVC; - if(![viewController isKindOfClass:[YUMIChamberRegardGovernancer class]]){ - [viewController dismissViewControllerAnimated:YES completion:nil]; - } - self.isExhibitThresholdReindict = NO; - [self.presimport refurbishChamberThresholdCharegWindow:self.roomUid]; - [[UIApplication sharedApplication].keyWindow addSubview:self.thresholdReindictRegard]; - -} - -- (void)revoctowardsionChamberScheduleLoudspeaker { - - if (self.roomInfo.roomModeType == ChamberModeGenre_Open_Micro_Mode || self.roomInfo.roomModeType == ChamberModeGenre_Open_Blind) { - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api acquireChamberScheduleLoudspeakerSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - ScheduleLoudspeakerMatrix * arrangeMicModel= [ScheduleLoudspeakerMatrix mtowardsrixAboutJSON:data.data]; - if (arrangeMicModel.myPos.intValue > 0) { - __block NSString * grouptype = @"0"; - if (self.roomInfo.roomModeType == ChamberModeGenre_Open_Blind) { - [arrangeMicModel.queue enumerateObjectsUsingBlock:^(ScheduleLoudspeakerConsumerMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.uid.integerValue == [AccountAbstractStorage instance].acquireCid.integerValue) { - grouptype = [NSString stringWithFormat:@"%ld", obj.groupType]; - *stop = YES; - } - }]; - - } - [Api revoctowardsionScheduleLoudspeaker:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) {} roomUid:roomUid operUid:uid groupType:grouptype]; - } - } - } roomUid:roomUid operUid:uid page:@"1" pageSize:@"50"]; - }else if(self.roomInfo.roomModeType == ChamberModeGenre_Open_PK_Mode) { - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api acquireChamberCombatConsumerSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - ScheduleLoudspeakerMatrix * arrangeMicModel= [ScheduleLoudspeakerMatrix mtowardsrixAboutJSON:data.data]; - if (arrangeMicModel.myPos.intValue > 0) { - __block NSString * grouptype = @"0"; - [arrangeMicModel.queue enumerateObjectsUsingBlock:^(ScheduleLoudspeakerConsumerMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.uid.integerValue == [AccountAbstractStorage instance].acquireCid.integerValue) { - grouptype = [NSString stringWithFormat:@"%ld", obj.groupType]; - *stop = YES; - } - }]; - [Api revoctowardsionChamberCombatScheduleLoudspeaker:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - - } roomUid:roomUid operUid:uid groupType:grouptype]; - } - } - } roomUid:roomUid operUid:uid page:@"1" pageSize:@"50"]; - } -} - -- (void)senstowardsionalManagementImportPwordChamber:(ChamberAbstractMatrix *)roomInfo { - __block BOOL isSuperAdmin = NO; - [self.superMangerList enumerateObjectsUsingBlock:^(UnionSensationalManagementAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj.uid isEqualToString:[AccountAbstractStorage instance].acquireCid]) { - isSuperAdmin = YES; - *stop = YES; - } - }]; - if (!isSuperAdmin) { - YUMIChamberInstanllingIntrojectionRegard * titleView = [[YUMIChamberInstanllingIntrojectionRegard alloc] init]; - titleView.maxCount = 15; - titleView.delegate = self; - titleView.type = ChamberInstanllingIntrojectionGenre_Input_Pwd; - TTPopupConfig * config = [[TTPopupConfig alloc] init]; - config.contentView = titleView; - config.maskEncouragegroundTransparency = 1; - config.shouldDismissOnBackgroundTouch = NO; - [MKJPopup popupAboutDisposition:config]; - } else { - self.roomInfo.datingState = roomInfo.roomModeType == ChamberModeGenre_Open_Blind ? ChamberDatingDeclareChangeGenre_Open : ChamberDatingDeclareChangeGenre_Normal; - [self diversifictowardsionPhaseRegardOnChamberRefurbish]; - [self.chamberIntelligenceerRegard onChamberImported]; - [self.importpriseAccommoengagementdRegard onChamberImported]; - [self.parrotAccommoengagementdRegard onChamberImported]; - [self.encourageAccommoengagementdRegard onChamberImported]; - if ([YUMIChamberMiniExecutive shareManager].acquireChamberAbstract.uid != self.roomUid.integerValue) { - [self.presimport importNEMCChamber:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; - [self.functionRegard onChamberImported]; - [self.communicationAccommoengagementdRegard onChamberImported]; - } else { - - [self.scoupleeRegard onChamberRoadliceImported]; - [self.communicationAccommoengagementdRegard onChamberRoadliceImported]; - [self.functionRegard onChamberRoadliceImported]; - [self.functionRegard onChamberImported]; - } - [[YUMIChamberMiniExecutive shareManager] prohibitipositionChamberAbstract:nil]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionConsumerAbstract:nil]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionUniversalManual:nil isPlaying:NO]; - } -} - -- (void)shankSenstowardsionalExecutiveImportKellegChamber:(ChamberAbstractMatrix *)roomInfo { - __block BOOL isSuperAdmin = NO; - [self.superMangerList enumerateObjectsUsingBlock:^(UnionSensationalManagementAbstractMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj.uid isEqualToString:[AccountAbstractStorage instance].acquireCid]) { - isSuperAdmin = YES; - *stop = YES; - } - }]; - if (!isSuperAdmin) { - YUMIChamberInstanllingIntrojectionRegard * titleView = [[YUMIChamberInstanllingIntrojectionRegard alloc] init]; - titleView.maxCount = 15; - titleView.delegate = self; - titleView.type = ChamberInstanllingIntrojectionGenre_Input_Pwd; - TTPopupConfig * config = [[TTPopupConfig alloc] init]; - config.contentView = titleView; - config.maskEncouragegroundTransparency = 1; - config.shouldDismissOnBackgroundTouch = NO; - [MKJPopup popupAboutDisposition:config]; - } else { - self.roomInfo.datingState = roomInfo.roomModeType == ChamberModeGenre_Open_Blind ? ChamberDatingDeclareChangeGenre_Open : ChamberDatingDeclareChangeGenre_Normal; - if (!self.kellegTrundleRegard.superview) { - [self.view insertSubview:self.kellegTrundleRegard belowSubview:self.parrotAccommoengagementdRegard]; - } - [self.encourageAccommoengagementdRegard removeFromSuperview]; - [self.scoupleeRegard removeFromSuperview]; - [self.communicationAccommoengagementdRegard removeFromSuperview]; - [self.quickCommunicationAccommoengagementdRegard removeFromSuperview]; - [self.importpriseAccommoengagementdRegard removeFromSuperview]; - [self.chamberIntelligenceerRegard removeFromSuperview]; - [self.functionRegard removeFromSuperview]; - - [self.kellegTrundleRegard addSubview:self.encourageAccommoengagementdRegard]; - [self.kellegTrundleRegard addSubview:self.scoupleeRegard]; - [self.kellegTrundleRegard addSubview:self.communicationAccommoengagementdRegard]; - [self.kellegTrundleRegard addSubview:self.quickCommunicationAccommoengagementdRegard]; - [self.kellegTrundleRegard addSubview:self.importpriseAccommoengagementdRegard]; - [self.kellegTrundleRegard addSubview:self.chamberIntelligenceerRegard]; - [self.kellegTrundleRegard addSubview:self.functionRegard]; - if (!self.parrotAccommoengagementdRegard.superview) { - [self.view addSubview:self.parrotAccommoengagementdRegard]; - } - [self.view bringSubviewToFront:self.animationView]; - - [self refurbishRegardRestrictionsOnKellegChamber]; - [self diversifictowardsionPhaseRegardOnKellegChamber]; - - [self.chamberIntelligenceerRegard onChamberImported]; - [self.importpriseAccommoengagementdRegard onChamberImported]; - [self.parrotAccommoengagementdRegard onChamberImported]; - [self.encourageAccommoengagementdRegard onChamberImported]; - if ([YUMIChamberMiniExecutive shareManager].acquireChamberAbstract.uid != self.roomUid.integerValue) { - [self.presimport importNEMCChamber:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; - [self.functionRegard onChamberImported]; - [self.communicationAccommoengagementdRegard onChamberImported]; - } else { - - [self.scoupleeRegard onChamberRoadliceImported]; - [self.communicationAccommoengagementdRegard onChamberRoadliceImported]; - [self.functionRegard onChamberRoadliceImported]; - [self.functionRegard onChamberImported]; - } - [[YUMIChamberMiniExecutive shareManager] prohibitipositionChamberAbstract:nil]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionConsumerAbstract:nil]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionUniversalManual:nil isPlaying:NO]; - } -} - -- (void)EvidenceKellegTrundlePromptRegard { - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - NSString *anchoScrollTip = [defaults objectForKey:kHadShowAnchorRoomTipKey]; - if (!anchoScrollTip) { - UIWindow *window = [UIApplication sharedApplication].delegate.window; - [window addSubview:self.kellegTrundlePromptRegard]; - [window bringSubviewToFront:self.kellegTrundlePromptRegard]; - } -} - -- (BOOL)isKictOptowardssideRecently:(ChamberAbstractMatrix *)roomInfo { - NSString *currentUid = [AccountAbstractStorage instance].acquireCid; - NSString *key = [NSString stringWithFormat:@"%@_%ld", currentUid, roomInfo.uid]; - NSString *kictOutTime = [[NSUserDefaults standardUserDefaults] objectForKey:key]; - if (kictOutTime) { - NSDate* date = [NSDate dateWithTimeIntervalSinceNow:0]; - NSTimeInterval time = [date timeIntervalSince1970]; - NSString *currentTime = [NSString stringWithFormat:@"%.0f", time]; - - if ([currentTime intValue] - [kictOutTime intValue] > 5 * 60) { - [[NSUserDefaults standardUserDefaults] removeObjectForKey:key]; - [[NSUserDefaults standardUserDefaults] synchronize]; - return NO; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Room_View_Controller_0")]; - [self dismissViewControllerAnimated:YES completion:nil]; - return YES; - } - } else { - return NO; - } -} - -#pragma mark - 本地礼物特效更新 -- (void)mietyPresentImpressionRefurbish:(NSNotification *)notification { - NSDictionary * dic = notification.object; - self.roomInfo.hasAnimationEffect = ((NSNumber *)dic[@"hasAnimationEffect"]).boolValue; - self.hasAnimationEffect = self.roomInfo.hasAnimationEffect; - [self.chamberIntelligenceerRegard onChamberRefurbish]; -} -#pragma mark - FBCChamberCeremony -- (void)initImportChamberAccomplishment:(ChamberAbstractMatrix *)roomInfo user:(ConsumerAbstractMatrix *)userInfo { - [XNDJTBWGLoadingTool brakeHUDInRegard:self.navigationController.view]; - [YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance].roomUid = @(roomInfo.uid).stringValue; - userInfo.fromUid = self.fromUid; - userInfo.fromType = self.fromType; - userInfo.fromNick = self.fromNick; - self.hasAnimationEffect = roomInfo.hasAnimationEffect; - self.roomInfo = roomInfo; - self.userInfo = userInfo; - - if ([self isKictOptowardssideRecently:roomInfo]) { - return; - } - if (roomInfo.type == ChamberGenre_Anchor) { - [self shankInitKellegChamber]; - [self EvidenceKellegTrundlePromptRegard]; - return; - } - if (roomInfo.valid) { - if (roomInfo.roomPwd.length > 0 && roomInfo.uid != [AccountAbstractStorage instance].acquireCid.integerValue && [YUMIChamberMiniExecutive shareManager].acquireChamberAbstract.uid != self.roomUid.integerValue) { - if (!self.isDemandSensationalManagement) { - [Api acquireChamberSenstowardsionalManagementSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - NSArray * array = [UnionSensationalManagementAbstractMatrix mtowardsrixsAboutGarment:data.data]; - self.superMangerList = array; - [self senstowardsionalManagementImportPwordChamber:roomInfo]; - } roomUid:self.roomUid]; - } else { - [self senstowardsionalManagementImportPwordChamber:roomInfo]; - } - } else { - self.roomInfo.datingState = roomInfo.roomModeType == ChamberModeGenre_Open_Blind ? ChamberDatingDeclareChangeGenre_Open : ChamberDatingDeclareChangeGenre_Normal; - [self diversifictowardsionPhaseRegardOnChamberRefurbish]; - [self.chamberIntelligenceerRegard onChamberImported]; - [self.importpriseAccommoengagementdRegard onChamberImported]; - [self.parrotAccommoengagementdRegard onChamberImported]; - [self.encourageAccommoengagementdRegard onChamberImported]; - self.quickCommunicationAccommoengagementdRegard.titleArray = self.roomInfo.speakTemplate; - if ([YUMIChamberMiniExecutive shareManager].acquireChamberAbstract.uid != self.roomUid.integerValue) { - [self.presimport importNEMCChamber:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; - [self.functionRegard onChamberImported]; - [self.communicationAccommoengagementdRegard onChamberImported]; - } else { - - [self.scoupleeRegard onChamberRoadliceImported]; - [self.communicationAccommoengagementdRegard onChamberRoadliceImported]; - [self.functionRegard onChamberRoadliceImported]; - [self.functionRegard onChamberImported]; - } - [[YUMIChamberMiniExecutive shareManager] prohibitipositionChamberAbstract:nil]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionConsumerAbstract:nil]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionUniversalManual:nil isPlaying:NO]; - } - } else { - if ([self.roomUid isEqualToString:[NSString stringWithFormat:@"%ld", userInfo.uid]]) { - if (roomInfo.roomId > 0) { - if (roomInfo.type == ChamberGenre_MiniGame && roomInfo.mgId > 0) { - self.mgId = [NSString stringWithFormat:@"%lld", roomInfo.mgId]; - } - [self.presimport unfoildChamber:roomInfo.title type:roomInfo.type roomPwd:roomInfo.roomPwd roomDesc:roomInfo.roomDesc backPic:@"" mgId:self.mgId]; - } else { - NSString* title = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Room_View_Controller_1"), userInfo.nick]; - ChamberGenre type = ChamberGenre_Game; - if (self.mgId.length > 0) { - type = ChamberGenre_MiniGame; - } - [self.presimport unfoildChamber:title type:type roomPwd:@"" roomDesc:@"" backPic:@"" mgId:self.mgId]; - } - } else { - - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Room_View_Controller_2")]; - [self importChamberFlunk:0]; - } - } -} - -- (void)unfoildChamberAccomplishment:(ChamberAbstractMatrix *)roomInfo { - [XNDJTBWGLoadingTool brakeHUDInRegard:self.navigationController.view]; - [self brakeHUD]; - self.roomInfo = roomInfo; - if (roomInfo.type == ChamberGenre_Anchor) { - [self shankInitKellegChamber]; - [self EvidenceKellegTrundlePromptRegard]; - return; - } - [self diversifictowardsionPhaseRegardOnChamberRefurbish]; - [self.chamberIntelligenceerRegard onChamberImported]; - [self.importpriseAccommoengagementdRegard onChamberImported]; - [self.encourageAccommoengagementdRegard onChamberImported]; - [self.functionRegard onChamberImported]; - [self.communicationAccommoengagementdRegard onChamberImported]; - self.quickCommunicationAccommoengagementdRegard.titleArray = self.roomInfo.speakTemplate; - [self.presimport importNEMCChamber:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; -} - -- (void)importChamberAccomplishment:(NIMChatroom *)chatRoom { - [XNDJTBWGLoadingTool brakeHUDInRegard:self.navigationController.view]; - - self.roomInfo.onlineNum = chatRoom.onlineUserCount; - [self.scoupleeRegard onChamberImported]; - [self.functionRegard onChamberImported]; - - if (self.roomInfo != nil) { - [self.presimport respondConsumerInterChamber:[NSString stringWithFormat:@"%zd", self.roomInfo.uid]]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventuser_visit_room eventAttributes:@{@"roomUid" : @(self.roomInfo.uid)}]; - } - if (self.giftId.length) { - - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [[NSNotificationCenter defaultCenter] postNotificationName:@"kShowGiftView" object:@{@"giftId": self.giftId}]; - }); - } - - [self.presimport acquireDeficitShetowardshe:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]; -} - -- (void)importChamberFlunk:(NSInteger)code { - [XNDJTBWGLoadingTool brakeHUDInRegard:self.navigationController.view]; - [self brakeHUD]; - if (code == 13003) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Room_View_Controller_3")]; - } - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)acquireChamberSenstowardsionalManagementScuccess:(NSArray *)list { - self.isDemandSensationalManagement = YES; - self.superMangerList = list; -} - -- (void)acquireLtowardsterKellegChamberAccomplishment:(ChamberAbstractMatrix *)roomInfo { - [self brakeHUD]; - if (roomInfo) { - if (![self.kellegChamberStatement containsObject:self.roomUid]) { - [self.kellegChamberStatement addObject:self.roomUid]; - } - self.kellegIndicatrix = self.kellegChamberStatement.count -1; - - self.kellegTrundleRegard.isCanTrundleApex = YES; - self.kellegTrundleRegard.contentOffset = CGPointMake(0, KScreenHeight); - self.isDemandSensationalManagement = NO; - [self routeInthecaseofmerChamber]; - [self.presimport routeNEMCChamber:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; - [[YUMIChamberMiniExecutive shareManager] replacementProvincialCommunictowardsion]; - [[RealtimackExecutive instance] exitRoom]; - [self.presimport respondConsumerOptowardssideChamber:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]; - [self.functionRegard onChamberDiversifictowardsion]; - - [self.scoupleeRegard removeFromSuperview]; - [self.communicationAccommoengagementdRegard removeFromSuperview]; - [self.quickCommunicationAccommoengagementdRegard removeFromSuperview]; - [self.importpriseAccommoengagementdRegard removeFromSuperview]; - [self.chamberIntelligenceerRegard removeFromSuperview]; - [self.functionRegard removeFromSuperview]; - self.functionRegard = nil; - self.communicationAccommoengagementdRegard = nil; - self.scoupleeRegard = nil; - [self.parrotAccommoengagementdRegard removeFromSuperview]; - self.parrotAccommoengagementdRegard = nil; - - self.roomUid = [NSString stringWithFormat:@"%zd", roomInfo.uid]; - [self.presimport initImportChamber:self.roomUid user:[AccountAbstractStorage instance].acquireCid]; - - [self.presimport acquireOrdinaryPresentSttowardsement:self.roomUid]; - - [self.presimport acquireChamberSenstowardsionalManagement:self.roomUid]; - } else { - if (self.kellegTrundleRegard.isCanTrundleApex) { - self.kellegTrundleRegard.contentOffset = CGPointMake(0, KScreenHeight); - } else { - self.kellegTrundleRegard.contentOffset = CGPointMake(0, 0); - } - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Room_View_Controller_4")]; - } -} - -- (void)acquireUniversalChamberAbstractAccomplishment:(ChamberAbstractMatrix *)roomInfo { - [self brakeHUD]; - self.kellegTrundleRegard.contentOffset = CGPointMake(0, KScreenHeight); - if (roomInfo && roomInfo.valid) { - - self.isDemandSensationalManagement = NO; - [self routeInthecaseofmerChamber]; - [self.presimport routeNEMCChamber:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; - [[YUMIChamberMiniExecutive shareManager] replacementProvincialCommunictowardsion]; - [[RealtimackExecutive instance] exitRoom]; - [self.presimport respondConsumerOptowardssideChamber:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]; - - [self.scoupleeRegard removeFromSuperview]; - [self.communicationAccommoengagementdRegard removeFromSuperview]; - [self.quickCommunicationAccommoengagementdRegard removeFromSuperview]; - [self.importpriseAccommoengagementdRegard removeFromSuperview]; - [self.chamberIntelligenceerRegard removeFromSuperview]; - [self.functionRegard removeFromSuperview]; - self.functionRegard = nil; - self.communicationAccommoengagementdRegard = nil; - self.scoupleeRegard = nil; - [self.parrotAccommoengagementdRegard removeFromSuperview]; - self.parrotAccommoengagementdRegard = nil; - - self.roomUid = [NSString stringWithFormat:@"%zd", roomInfo.uid]; - [self.presimport initImportChamber:self.roomUid user:[AccountAbstractStorage instance].acquireCid]; - - [self.presimport acquireOrdinaryPresentSttowardsement:self.roomUid]; - - [self.presimport acquireChamberSenstowardsionalManagement:self.roomUid]; - } else { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Room_View_Controller_5")]; - } -} - -- (void)shankInitKellegChamber { - if (self.roomInfo.valid) { - if (self.roomInfo.roomPwd.length > 0 && self.roomInfo.uid != [AccountAbstractStorage instance].acquireCid.integerValue && [YUMIChamberMiniExecutive shareManager].acquireChamberAbstract.uid != self.roomUid.integerValue) { - if (!self.isDemandSensationalManagement) { - [Api acquireChamberSenstowardsionalManagementSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - NSArray * array = [UnionSensationalManagementAbstractMatrix mtowardsrixsAboutGarment:data.data]; - self.superMangerList = array; - [self shankSenstowardsionalExecutiveImportKellegChamber:self.roomInfo]; - } roomUid:self.roomUid]; - } else { - [self shankSenstowardsionalExecutiveImportKellegChamber:self.roomInfo]; - } - } else { - self.roomInfo.datingState = self.roomInfo.roomModeType == ChamberModeGenre_Open_Blind ? ChamberDatingDeclareChangeGenre_Open : ChamberDatingDeclareChangeGenre_Normal; - if (!self.kellegTrundleRegard.superview) { - [self.view addSubview:self.kellegTrundleRegard]; - } - [self.encourageAccommoengagementdRegard removeFromSuperview]; - [self.scoupleeRegard removeFromSuperview]; - [self.communicationAccommoengagementdRegard removeFromSuperview]; - [self.quickCommunicationAccommoengagementdRegard removeFromSuperview]; - [self.importpriseAccommoengagementdRegard removeFromSuperview]; - [self.chamberIntelligenceerRegard removeFromSuperview]; - [self.functionRegard removeFromSuperview]; - [self.parrotAccommoengagementdRegard removeFromSuperview]; - - [self.kellegTrundleRegard addSubview:self.encourageAccommoengagementdRegard]; - [self.kellegTrundleRegard addSubview:self.scoupleeRegard]; - [self.kellegTrundleRegard addSubview:self.communicationAccommoengagementdRegard]; - [self.kellegTrundleRegard addSubview:self.quickCommunicationAccommoengagementdRegard]; - [self.kellegTrundleRegard addSubview:self.importpriseAccommoengagementdRegard]; - [self.kellegTrundleRegard addSubview:self.chamberIntelligenceerRegard]; - [self.kellegTrundleRegard addSubview:self.functionRegard]; - [self.kellegTrundleRegard addSubview:self.parrotAccommoengagementdRegard]; - [self.view bringSubviewToFront:self.animationView]; - - [self refurbishRegardRestrictionsOnKellegChamber]; - [self diversifictowardsionPhaseRegardOnKellegChamber]; - - [self.chamberIntelligenceerRegard onChamberImported]; - [self.importpriseAccommoengagementdRegard onChamberImported]; - [self.parrotAccommoengagementdRegard onChamberImported]; - [self.encourageAccommoengagementdRegard onChamberImported]; - if ([YUMIChamberMiniExecutive shareManager].acquireChamberAbstract.uid != self.roomUid.integerValue) { - [self.presimport importNEMCChamber:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; - [self.functionRegard onChamberImported]; - [self.communicationAccommoengagementdRegard onChamberImported]; - } else { - - [self.scoupleeRegard onChamberRoadliceImported]; - [self.communicationAccommoengagementdRegard onChamberRoadliceImported]; - [self.functionRegard onChamberRoadliceImported]; - [self.functionRegard onChamberImported]; - } - [[YUMIChamberMiniExecutive shareManager] prohibitipositionChamberAbstract:nil]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionConsumerAbstract:nil]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionUniversalManual:nil isPlaying:NO]; - } - } else { - if ([self.roomUid isEqualToString:[NSString stringWithFormat:@"%ld", self.userInfo.uid]]) { - if (self.roomInfo.roomId > 0) { - if (self.roomInfo.type == ChamberGenre_MiniGame && self.roomInfo.mgId > 0) { - self.mgId = [NSString stringWithFormat:@"%lld", self.roomInfo.mgId]; - } - [self.presimport unfoildChamber:self.roomInfo.title type:self.roomInfo.type roomPwd:self.roomInfo.roomPwd roomDesc:self.roomInfo.roomDesc backPic:@"" mgId:self.mgId]; - } else { - NSString* title = [NSString stringWithFormat:YMLocalizedString(@"YUMI_Room_View_Controller_6"), self.userInfo.nick]; - ChamberGenre type = ChamberGenre_Game; - if (self.mgId.length > 0) { - type = ChamberGenre_MiniGame; - } - [self.presimport unfoildChamber:title type:type roomPwd:@"" roomDesc:@"" backPic:@"" mgId:self.mgId]; - } - } else { - - [self EvidenceAccomplishmentToast:YMLocalizedString(@"YUMI_Room_View_Controller_7")]; - [self importChamberFlunk:0]; - } - } -} - -- (void)acquireDeficitShetowardsheAccomplishment:(NSArray *)list { - if (list.count == 0) { - return; - } - for (YUMIDeficitSheatheMatrix *data in list) { - YUMIAchieveDeficitSheatheRegard *view = [[YUMIAchieveDeficitSheatheRegard alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; - view.achieveMatrix = data; - for (UIView *subView in self.view.subviews) { - if([subView isKindOfClass:[YUMIAchieveDeficitSheatheRegard class]]) { - view.transparencyRegard.backgroundColor = [UIColor clearColor]; - break; - } - } - [self.view addSubview:view]; - [self.view bringSubviewToFront:view]; - } -} - -- (void)acquireChamberThresholdInstructionWindowAccomplishment:(ThresholdChargeChamberWindowMatrix *)model{ - if(model.needToShow == NO || model.showAfterSecond <= 0 || self.isExhibitThresholdReindict == YES)return; - self.isExhibitThresholdReindict = YES; - [self performSelector:@selector(EvidenceChamberThresholdInstructionWindow) withObject:nil afterDelay:model.showAfterSecond]; -} - -#pragma mark - NIMChatroomManagerDelegate -- (void)chatroomBeKicked:(NIMChatroomBeKickedResult *)result { - if (result.reason == 2) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Room_View_Controller_8")]; - - NSDate* date = [NSDate dateWithTimeIntervalSinceNow:0]; - NSTimeInterval time=[date timeIntervalSince1970]; - NSString *currentTime = [NSString stringWithFormat:@"%.0f", time]; - NSString *key = [NSString stringWithFormat:@"%@_%ld", [AccountAbstractStorage instance].acquireCid, self.roomInfo.uid]; - [[NSUserDefaults standardUserDefaults] setObject:currentTime forKey:key]; - [[NSUserDefaults standardUserDefaults] synchronize]; - } else if (result.reason == 5) { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Room_View_Controller_9")]; - } - [self.presimport routeNEMCChamber:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; - [[YUMIChamberMiniExecutive shareManager] replacementProvincialCommunictowardsion]; - [self revoctowardsionChamberScheduleLoudspeaker]; - [[RealtimackExecutive instance] exitRoom]; - [self.presimport respondConsumerOptowardssideChamber:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]; - [self dismissViewControllerAnimated:YES completion:nil]; -} - -#pragma mark - NIMChatManagerDelegate -- (void)onRecvMessages:(NSArray *)messages { - for (NIMMessage * message in messages) { - - if (message.session.sessionType == NIMSessionTypeP2P) { - if(message.messageType == NIMMessageTypeCustom) { - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentMatrix class]]) { - AttachmentMatrix * attachment = obj.attachment; - if (attachment.first == IndividualityCommunicationGenre_User_UpGrade) { - SatisfactionPrototypeAscensionMatrix * prototypeAbstract = [SatisfactionPrototypeAscensionMatrix mtowardsrixAboutImpactbasket:attachment.data]; - if (attachment.second == Custom_Message_Sub_User_UpGrade_Exper) { - self.userInfo.userLevelVo.experLevelSeq = prototypeAbstract.levelSeq; - } else if(attachment.second == Custom_Message_Sub_User_UpGrade_Charm) { - self.userInfo.userLevelVo.charmLevelSeq = prototypeAbstract.levelSeq; - } - } - } - } - } - - - if (message.session.sessionType != NIMSessionTypeChatroom) { - continue; - } - - - if (![message.session.sessionId isEqualToString:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]) { - continue; - } - - if (message.messageType == NIMMessageTypeNotification) { - NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; - NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; - NSInteger onLineNumber = self.roomInfo.onlineNum; - switch (content.eventType) { - case NIMChatroomEventTypeInfoUpdated: - { - NSDictionary *data = [content.notifyExt toJSONGroal]; - int type = [data[@"type"] intValue]; - switch (type) { - case 1: - case 3: - { - NSMutableDictionary *lastRoomInfoDic = [NSMutableDictionary dictionaryWithDictionary:[self.roomInfo mtowardsrix2dictionary]]; - [lastRoomInfoDic addEntriesFromDictionary: ((NSString *)data[@"roomInfo"]).toJSONGroal]; - ChamberAbstractMatrix *newRoomInfo = [ChamberAbstractMatrix mtowardsrixAboutJSON:lastRoomInfoDic]; - - if (newRoomInfo.type != ChamberGenre_MiniGame) { - newRoomInfo.mgId = 0; - } - newRoomInfo.hasAnimationEffect = self.hasAnimationEffect; - if (newRoomInfo.roomModeType == ChamberModeGenre_Open_Blind && self.roomInfo.roomModeType != ChamberModeGenre_Open_Blind) { - - newRoomInfo.datingState = ChamberDatingDeclareChangeGenre_Open; - } else if(newRoomInfo.roomModeType != ChamberModeGenre_Open_Blind && self.roomInfo.roomModeType == ChamberModeGenre_Open_Blind) { - - newRoomInfo.datingState = ChamberDatingDeclareChangeGenre_Close; - } else { - newRoomInfo.datingState = ChamberDatingDeclareChangeGenre_Normal; - } - - newRoomInfo.hadChangeRoomType = self.roomInfo.type != newRoomInfo.type; - BOOL anchorToOther = newRoomInfo.type != ChamberGenre_Anchor && self.roomInfo.type == ChamberGenre_Anchor; - self.roomInfo = newRoomInfo; - [self.encourageAccommoengagementdRegard onChamberRefurbish]; - self.quickCommunicationAccommoengagementdRegard.titleArray = self.roomInfo.speakTemplate; - if (self.roomInfo.type == ChamberGenre_Anchor && self.roomInfo.hadChangeRoomType) { - [self shankInitKellegChamber]; - [self EvidenceKellegTrundlePromptRegard]; - } else if (anchorToOther) { - [self.kellegTrundleRegard removeFromSuperview]; - [self.encourageAccommoengagementdRegard removeFromSuperview]; - [self.scoupleeRegard removeFromSuperview]; - [self.communicationAccommoengagementdRegard removeFromSuperview]; - [self.quickCommunicationAccommoengagementdRegard removeFromSuperview]; - [self.importpriseAccommoengagementdRegard removeFromSuperview]; - [self.chamberIntelligenceerRegard removeFromSuperview]; - [self.functionRegard removeFromSuperview]; - - [self.view addSubview:self.encourageAccommoengagementdRegard]; - [self.view addSubview:self.scoupleeRegard]; - [self.view addSubview:self.communicationAccommoengagementdRegard]; - [self.view addSubview:self.quickCommunicationAccommoengagementdRegard]; - [self.view addSubview:self.importpriseAccommoengagementdRegard]; - [self.view addSubview:self.chamberIntelligenceerRegard]; - [self.view addSubview:self.functionRegard]; - [self.view bringSubviewToFront:self.parrotAccommoengagementdRegard]; - [self.view bringSubviewToFront:self.animationView]; - [self initChildLyRestrictions]; - [self diversifictowardsionPhaseRegardOnChamberRefurbish]; - [self.scoupleeRegard onChamberRefurbish]; - [self.parrotAccommoengagementdRegard onChamberRefurbish]; - [self.functionRegard onChamberRefurbish]; - [self.importpriseAccommoengagementdRegard onChamberRefurbish]; - [self.communicationAccommoengagementdRegard onChamberRefurbish]; - } else { - if (self.roomInfo.type == ChamberGenre_Anchor) { - [self diversifictowardsionPhaseRegardOnKellegChamber]; - } else { - [self diversifictowardsionPhaseRegardOnChamberRefurbish]; - } - [self.scoupleeRegard onChamberRefurbish]; - [self.parrotAccommoengagementdRegard onChamberRefurbish]; - [self.functionRegard onChamberRefurbish]; - [self.importpriseAccommoengagementdRegard onChamberRefurbish]; - [self.communicationAccommoengagementdRegard onChamberRefurbish]; - } - } - break; - } - } - break; - case NIMChatroomEventTypeEnter: - if (content.source.userId.integerValue != [AccountAbstractStorage instance].acquireCid.integerValue && self.userInfo.platformRole != 1) { - onLineNumber += 1; - }else { - [self consumerImportChamberAccomplishment]; - - [self.importpriseAccommoengagementdRegard onChamberRefurbish]; - [self.parrotAccommoengagementdRegard onChamberRefurbish]; - } - break; - case NIMChatroomEventTypeAddBlack: - case NIMChatroomEventTypeKicked: - case NIMChatroomEventTypeExit: - onLineNumber -= 1; - break; - case NIMChatroomEventTypeQueueChange: - { - NSDictionary* data = (NSDictionary *)content.ext; - ConsumerAbstractMatrix* userInfo = [ConsumerAbstractMatrix mtowardsrixAboutJSON:[data objectForKey:NIMChatroomEventInfoQueueChangeItemValueKey]]; - NSInteger changeType = [data[NIMChatroomEventInfoQueueChangeTypeKey] integerValue]; - if (changeType == 1 && userInfo.uid == [AccountAbstractStorage instance].acquireCid.integerValue) { - [self revoctowardsionChamberScheduleLoudspeaker]; - } - } - break; - default: - break; - } - self.roomInfo.onlineNum = onLineNumber; - [self.chamberIntelligenceerRegard onChamberRefurbish]; - [self.scoupleeRegard shankNEMCCircularCommunictowardsion:message]; - [self.animationView shankNEMCCircularCommunictowardsion:message]; - [self.communicationAccommoengagementdRegard shankNEMCCircularCommunictowardsion:message]; - [self.importpriseAccommoengagementdRegard shankNEMCCircularCommunictowardsion:message]; - [self.parrotAccommoengagementdRegard shankNEMCCircularCommunictowardsion:message]; - [self.functionRegard shankNEMCCircularCommunictowardsion:message]; - if([self.scoupleeRegard prohibiticoveryMiecreoscoopeRegardByCid:@(self.userInfo.uid).stringValue] != nil){ - [YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance].isManeInLoudspeaker = YES; - }else{ - [YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance].isManeInLoudspeaker = NO; - }; - } else if (message.messageType == NIMMessageTypeCustom) { - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentMatrix class]]) { - AttachmentMatrix * attachment = obj.attachment; - [self.scoupleeRegard shankNEMCIndividualityCommunictowardsion:message]; - [self.animationView shankNEMCIndividualityCommunictowardsion:message]; - [self.parrotAccommoengagementdRegard shankNEMCIndividualityCommunictowardsion:message]; - [self.importpriseAccommoengagementdRegard shankNEMCIndividualityCommunictowardsion:message]; - [self.functionRegard shankNEMCIndividualityCommunictowardsion:message]; - if (attachment.first == IndividualityCommunicationGenre_First_Recharge_Reward && attachment.second == Custom_Message_Sub_Room_First_Recharge_Reward) { - self.userInfo.isFirstCharge = NO; - [self.parrotAccommoengagementdRegard onChamberRefurbish]; - [self.importpriseAccommoengagementdRegard onChamberRefurbish]; - } else if (attachment.first == IndividualityCommunicationGenre_Update_RoomInfo && attachment.second == Custom_Message_Sub_Update_RoomInfo_MessageState) { - - NSDictionary * dic= attachment.data[@"roomInfo"]; - if (dic.allKeys.count <=0) { - dic = attachment.data; - } - ChamberAbstractMatrix * roomInfo = [ChamberAbstractMatrix mtowardsrixAboutImpactbasket:dic]; - self.roomInfo.isCloseScreen = roomInfo.isCloseScreen; - [self.parrotAccommoengagementdRegard onChamberRefurbish]; - } else if(attachment.first == IndividualityCommunicationGenre_Queue && attachment.second == Custom_Message_Sub_Queue_Invite) { - NSDictionary *dic = attachment.data; - NSString *uid = dic[@"uid"]; - if (uid.integerValue == [AccountAbstractStorage instance].acquireCid.integerValue) { - [self revoctowardsionChamberScheduleLoudspeaker]; - } - } else if(attachment.first == IndividualityCommunicationGenre_Hall_Super_Admin && attachment.second == Custom_Message_Sub_Hall_Super_Admin_Kick_Manager_Out_Room) { - XCombatickConsumerMatrix * userInfo = [XCombatickConsumerMatrix mtowardsrixAboutJSON:attachment.data]; - if (userInfo.targetUid == [AccountAbstractStorage instance].acquireCid.integerValue) { - [self.presimport routeNEMCChamber:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; - [[YUMIChamberMiniExecutive shareManager] replacementProvincialCommunictowardsion]; - [self revoctowardsionChamberScheduleLoudspeaker]; - [[RealtimackExecutive instance] exitRoom]; - [self.presimport respondConsumerOptowardssideChamber:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]; - [self dismissViewControllerAnimated:YES completion:nil]; - } - } else if (attachment.first == IndividualityCommunicationGenre_RedPacket) { - if (attachment.second == Custom_Message_Sub_RoomDiamandRedPacket) { - YUMIAchieveDeficitSheatheRegard *view = [[YUMIAchieveDeficitSheatheRegard alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; - YUMIAchieveDeficitSheatheMatrix *data = [YUMIAchieveDeficitSheatheMatrix mtowardsrixAboutJSON:attachment.data]; - view.deficitSheatheMatrix = data; - for (UIView *subView in self.view.subviews) { - if([subView isKindOfClass:[YUMIAchieveDeficitSheatheRegard class]]) { - view.transparencyRegard.backgroundColor = [UIColor clearColor]; - break; - } - } - [self.view addSubview:view]; - [self.view bringSubviewToFront:view]; - } - } - [self.communicationAccommoengagementdRegard shankNEMCIndividualityCommunictowardsion:message]; - } - } else if(message.messageType == NIMMessageTypeText) { - [self.communicationAccommoengagementdRegard shankNEMCEssayCommunictowardsion:message]; - } else if(message.messageType == NIMMessageTypeTip) { - [self.communicationAccommoengagementdRegard shankNEMCEssayCommunictowardsion:message]; - } - } -} - -- (void)sendMessage:(NIMMessage *)message didCompleteWithError:(NSError *)error { - - if (![message.session.sessionId isEqualToString:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]) { - return; - } - - if (message.yidunAntiSpamRes) { - NSDictionary * spamRes = message.yidunAntiSpamRes.toJSONGroal; - NSDictionary * spamResExt = ((NSString *)spamRes[@"ext"]).toJSONGroal; - if ([spamResExt[@"antispam"][@"suggestion"] intValue] == 2) { - [self EvidenceMistakeToast:@"消息中可能含有违规信息,请停止发送类似信息!"]; - return; - } - } - - if (error) return; - if (message.messageType == NIMMessageTypeCustom) { - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentMatrix class]]) { - AttachmentMatrix * attachment = obj.attachment; - [self.scoupleeRegard shankNEMCIndividualityCommunictowardsion:message]; - [self.animationView shankNEMCIndividualityCommunictowardsion:message]; - [self.functionRegard shankNEMCIndividualityCommunictowardsion:message]; - if (attachment.first == IndividualityCommunicationGenre_Update_RoomInfo && attachment.second == Custom_Message_Sub_Update_RoomInfo_MessageState) { - ChamberAbstractMatrix * roomInfo = [ChamberAbstractMatrix mtowardsrixAboutImpactbasket:attachment.data[@"roomInfo"]]; - self.roomInfo.isCloseScreen = roomInfo.isCloseScreen; - [self.parrotAccommoengagementdRegard onChamberRefurbish]; - } - [self.communicationAccommoengagementdRegard shankNEMCIndividualityCommunictowardsion:message]; - } - }else if(message.messageType == NIMMessageTypeText) { - [self.communicationAccommoengagementdRegard shankNEMCEssayCommunictowardsion:message];; - } -} - -#pragma mark - NIMLoginManagerDelegate -- (void)onKickout:(NIMLoginKickoutResult *)result { - [self exitRoom]; - [self dismissViewControllerAnimated:YES completion:nil]; -} - -#pragma mark - NIMConversationManagerDelegate -- (void)didAddRecentSession:(NIMRecentSession *)recentSession - totalUnreadCount:(NSInteger)totalUnreadCount { - [self.parrotAccommoengagementdRegard accelertowardseNEMCLtowardsterdaInterlocution:recentSession]; -} - -- (void)didUpdateRecentSession:(NIMRecentSession *)recentSession - totalUnreadCount:(NSInteger)totalUnreadCount { - [self.parrotAccommoengagementdRegard accelertowardseNEMCLtowardsterdaInterlocution:recentSession]; -} - -- (void)didRemoveRecentSession:(NIMRecentSession *)recentSession - totalUnreadCount:(NSInteger)totalUnreadCount { - [self.parrotAccommoengagementdRegard transltowardseNEMCLtowardsterdaInterlocution:recentSession]; -} - -#pragma mark - RoomDelegate -- (ChamberAbstractMatrix *)acquireChamberAbstract { - return self.roomInfo; -} - -- (ConsumerAbstractMatrix *)getUserInfo { - return self.userInfo; -} - -- (void)exitRoom { - [self.parrotAccommoengagementdRegard parrotResignThresholdResponder]; - if (self.roomInfo.roomModeType == ChamberModeGenre_Open_Micro_Mode || self.roomInfo.roomModeType == ChamberModeGenre_Open_Blind) { - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api acquireChamberScheduleLoudspeakerSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - ScheduleLoudspeakerMatrix * arrangeMicModel= [ScheduleLoudspeakerMatrix mtowardsrixAboutJSON:data.data]; - if (arrangeMicModel.myPos.intValue > 0) { - [MKJPopup precautiousAboutCommunictowardsion:@"退出房间后将退出目前排麦,再次进入需要重新排麦,确认退出房间吗?" acknowledgementHandler:^{ - __block NSString * grouptype = @"0"; - if (self.roomInfo.roomModeType == ChamberModeGenre_Open_Blind) { - [arrangeMicModel.queue enumerateObjectsUsingBlock:^(ScheduleLoudspeakerConsumerMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.uid.integerValue == [AccountAbstractStorage instance].acquireCid.integerValue) { - grouptype = [NSString stringWithFormat:@"%ld", obj.groupType]; - *stop = YES; - } - }]; - } - [Api revoctowardsionScheduleLoudspeaker:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - - } roomUid:roomUid operUid:uid groupType:grouptype]; - [self.presimport routeNEMCChamber:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; - [[YUMIChamberMiniExecutive shareManager] replacementProvincialCommunictowardsion]; - [[RealtimackExecutive instance] exitRoom]; - [self.presimport respondConsumerOptowardssideChamber:roomUid]; - [self shankThresholdOptowardssideChamber]; - [self dismissViewControllerAnimated:YES completion:nil]; - } cancelHandler:^{ - - }]; - return; - } - } - [self.presimport routeNEMCChamber:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; - [[YUMIChamberMiniExecutive shareManager] replacementProvincialCommunictowardsion]; - [[RealtimackExecutive instance] exitRoom]; - [self.presimport respondConsumerOptowardssideChamber:roomUid]; - [self shankThresholdOptowardssideChamber]; - [self dismissViewControllerAnimated:YES completion:nil]; - } roomUid:roomUid operUid:uid page:@"1" pageSize:@"50"]; - } else if(self.roomInfo.roomModeType == ChamberModeGenre_Open_PK_Mode) { - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api acquireChamberCombatConsumerSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - ScheduleLoudspeakerMatrix * arrangeMicModel= [ScheduleLoudspeakerMatrix mtowardsrixAboutJSON:data.data]; - if (arrangeMicModel.myPos.intValue > 0) { - [MKJPopup precautiousAboutCommunictowardsion:@"退出房间后将退出目前排麦,再次进入需要重新排麦,确认退出房间吗?" acknowledgementHandler:^{ - __block NSString * grouptype = @"0"; - [arrangeMicModel.queue enumerateObjectsUsingBlock:^(ScheduleLoudspeakerConsumerMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.uid.integerValue == [AccountAbstractStorage instance].acquireCid.integerValue) { - grouptype = [NSString stringWithFormat:@"%ld", obj.groupType]; - *stop = YES; - } - }]; - [Api revoctowardsionChamberCombatScheduleLoudspeaker:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - - } roomUid:roomUid operUid:uid groupType:grouptype]; - [self.presimport routeNEMCChamber:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; - [[YUMIChamberMiniExecutive shareManager] replacementProvincialCommunictowardsion]; - [[RealtimackExecutive instance] exitRoom]; - [self shankThresholdOptowardssideChamber]; - [self dismissViewControllerAnimated:YES completion:nil]; - } cancelHandler:^{ - - }]; - return; - } - } - [self.presimport routeNEMCChamber:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; - [[YUMIChamberMiniExecutive shareManager] replacementProvincialCommunictowardsion]; - [[RealtimackExecutive instance] exitRoom]; - [self shankThresholdOptowardssideChamber]; - [self dismissViewControllerAnimated:YES completion:nil]; - } roomUid:roomUid operUid:uid page:@"1" pageSize:@"50"]; - } else { - [self.presimport routeNEMCChamber:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; - [[YUMIChamberMiniExecutive shareManager] replacementProvincialCommunictowardsion]; - [[RealtimackExecutive instance] exitRoom]; - [self.presimport respondConsumerOptowardssideChamber:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]; - [self shankThresholdOptowardssideChamber]; - [self dismissViewControllerAnimated:YES completion:nil]; - } -} - -- (void)miniChamber { - [self.parrotAccommoengagementdRegard parrotResignThresholdResponder]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionChamberAbstract:self.roomInfo]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionConsumerAbstract:self.userInfo]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionUniversalManual:self.functionRegard.acquireUniversalManual isPlaying:self.functionRegard.isPlaying]; - NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic secureSetGroal:self.roomInfo.mtowardsrix2dictionary forKey:@"roomInfo"]; - [dic secureSetGroal:self.userInfo.mtowardsrix2dictionary forKey:@"userInfo"]; - [dic secureSetGroal:self.acquireMiecreoscoopeInthecaseofmtowardsion forKey:@"microQueue"]; - [[NSNotificationCenter defaultCenter] postNotificationName:kRoomMiniNotificationKey object:nil userInfo:dic]; - [self.view endEditing:YES]; - [self shankThresholdOptowardssideChamber]; - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (UINavigationController *)acquireUniversalNev { - return self.navigationController; -} - -- (NSMutableDictionary *)acquireMiecreoscoopeInthecaseofmtowardsion { - return [self.scoupleeRegard acquireMiecreoscoopeInthecaseofmtowardsion]; -} - -- (NSArray *)acquireChamberSenstowardsionalManagementSttowardsement { - return self.superMangerList; -} - -- (NSArray *)acquireChamberCombatGroupSquadSttowardsement { - return [self.functionRegard acquireChamberCombatGroupSquadSttowardsement]; -} - -- (BOOL)isChamberCombatDisporting { - return [self.functionRegard isChamberCombatDisporting]; -} - -- (void)onMiecreoscoopeInthecaseofmtowardsionRefurbish:(NSMutableDictionary *)queue { - [self.parrotAccommoengagementdRegard onMiecreoscoopeInthecaseofmtowardsionRefurbish:queue]; - [self.functionRegard onChamberRefurbish]; - [self.functionRegard onMiecreoscoopeInthecaseofmtowardsionRefurbish:queue]; - - BOOL isOnMic = false; - for (MiecreoscoopeMHTueueMatrix * info in queue.allValues) { - if (info.userInfo.uid > 0 && [AccountAbstractStorage instance].acquireCid.integerValue == info.userInfo.uid) { - isOnMic = YES; - break; - } - } - - if (isOnMic) { - self.kellegTrundleRegard.scrollEnabled = NO; - } else { - self.kellegTrundleRegard.scrollEnabled = YES; - } -} - -- (CGPoint)brectifynessSpeckTowardsPhaseRegardByCid:(NSString *)uid { - return [self.scoupleeRegard brectifynessSpeckTowardsPhaseRegardByCid:uid]; -} - -#pragma mark - 首次退出非自己的房间,处理是否需要弹新用户充值优惠 -- (void)shankThresholdOptowardssideChamber { - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - if (![defaults boolForKey:kHadQuitOtherRoomKey] && self.userInfo.uid != self.roomInfo.uid && self.userInfo.showLimitCharge) { - [defaults setBool:YES forKey:kHadQuitOtherRoomKey]; - [defaults synchronize]; - [[NSNotificationCenter defaultCenter] postNotificationName:kNewUserRechargeKey object:nil]; - } -} -#pragma mark - KellegChamberScrollRegardRepresendtation -- (void)kellegTrundleRegardTrundleToLtowardster:(KellegChamberScrollRegard *)kellegTrundleRegard { - if (!self) { - return; - } - [self.view endEditing:YES]; - [self EvidenceKellegChambering]; - [self.presimport acquireCycleKellegChamberSttowardsement:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]; -} - - -- (void)kellegTrundleRegardTrundleToPrevious:(KellegChamberScrollRegard *)kellegTrundleRegard { - if (!self || self.kellegChamberStatement.count <= 0) { - return; - } - [self.view endEditing:YES]; - [self EvidenceKellegChambering]; - if (self.kellegIndicatrix < self.kellegChamberStatement.count) { - NSString * roomUid = [self.kellegChamberStatement secureGroalTowardsIndictowardsrix1:self.kellegIndicatrix]; - [self.presimport acquireUniversalChamberAbstract:roomUid]; - self.kellegIndicatrix --; - }else { - [self EvidenceMistakeToast:YMLocalizedString(@"YUMI_Room_View_Controller_13")]; - self.kellegTrundleRegard.contentOffset = CGPointMake(0, KScreenHeight); - } -} - -#pragma mark - FBCChamberInstanllingIntrojectionRegardRepresendtation -- (void)yUMIChamberInstanllingIntrojectionRegard:(YUMIChamberInstanllingIntrojectionRegard *)view didClickConfirm:(NSString *)text type:(ChamberInstanllingIntrojectionGenre)type { - NSString *pwdDes = [DESEncrypt encryptUseDES:text key:KeyWithType(KeyGenre_PasswordEncode)]; - if ([pwdDes isEqualToString:self.roomInfo.roomPwd]) { - [MKJPopup dismiss]; - view.isPwordError = NO; - if (self.roomInfo.type == ChamberGenre_Anchor) { - if (!self.kellegTrundleRegard.superview) { - [self.view insertSubview:self.kellegTrundleRegard belowSubview:self.parrotAccommoengagementdRegard]; - } - [self.encourageAccommoengagementdRegard removeFromSuperview]; - [self.scoupleeRegard removeFromSuperview]; - [self.communicationAccommoengagementdRegard removeFromSuperview]; - [self.quickCommunicationAccommoengagementdRegard removeFromSuperview]; - [self.importpriseAccommoengagementdRegard removeFromSuperview]; - [self.chamberIntelligenceerRegard removeFromSuperview]; - [self.functionRegard removeFromSuperview]; - - [self.kellegTrundleRegard addSubview:self.encourageAccommoengagementdRegard]; - [self.kellegTrundleRegard addSubview:self.scoupleeRegard]; - [self.kellegTrundleRegard addSubview:self.communicationAccommoengagementdRegard]; - [self.kellegTrundleRegard addSubview:self.quickCommunicationAccommoengagementdRegard]; - [self.kellegTrundleRegard addSubview:self.importpriseAccommoengagementdRegard]; - [self.kellegTrundleRegard addSubview:self.chamberIntelligenceerRegard]; - [self.kellegTrundleRegard addSubview:self.functionRegard]; - if (!self.parrotAccommoengagementdRegard.superview) { - [self.view addSubview:self.parrotAccommoengagementdRegard]; - } - [self.view bringSubviewToFront:self.animationView]; - - [self refurbishRegardRestrictionsOnKellegChamber]; - [self diversifictowardsionPhaseRegardOnKellegChamber]; - - [self.chamberIntelligenceerRegard onChamberImported]; - [self.importpriseAccommoengagementdRegard onChamberImported]; - [self.parrotAccommoengagementdRegard onChamberImported]; - [self.encourageAccommoengagementdRegard onChamberImported]; - if ([YUMIChamberMiniExecutive shareManager].acquireChamberAbstract.uid != self.roomUid.integerValue) { - [self.presimport importNEMCChamber:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; - [self.functionRegard onChamberImported]; - [self.communicationAccommoengagementdRegard onChamberImported]; - } else { - - [self.scoupleeRegard onChamberRoadliceImported]; - [self.communicationAccommoengagementdRegard onChamberRoadliceImported]; - [self.functionRegard onChamberRoadliceImported]; - [self.functionRegard onChamberImported]; - } - [[YUMIChamberMiniExecutive shareManager] prohibitipositionChamberAbstract:nil]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionConsumerAbstract:nil]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionUniversalManual:nil isPlaying:NO]; - } else { - [self.chamberIntelligenceerRegard onChamberImported]; - [self.importpriseAccommoengagementdRegard onChamberImported]; - [self.parrotAccommoengagementdRegard onChamberImported]; - [self diversifictowardsionPhaseRegardOnChamberRefurbish]; - [self.encourageAccommoengagementdRegard onChamberImported]; - [self.functionRegard onChamberImported]; - [self.presimport importNEMCChamber:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; - [self.communicationAccommoengagementdRegard onChamberImported]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionChamberAbstract:nil]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionConsumerAbstract:nil]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionUniversalManual:nil isPlaying:NO]; - } - } else { - view.isPwordError = YES; - } -} - -- (void)didTicktackRevoctowardsion:(ChamberInstanllingIntrojectionGenre)type { - if (type == ChamberInstanllingIntrojectionGenre_Input_Pwd) { - [self importChamberFlunk:0]; - } -} - -- (YUMIChamberBackAccommodatedRegard *)encourageAccommoengagementdRegard { - if (!_encourageAccommoengagementdRegard) { - _encourageAccommoengagementdRegard = [[YUMIChamberBackAccommodatedRegard alloc] initAboutdelegtowardse:self]; - } - return _encourageAccommoengagementdRegard; -} - -- (ChamberIntelligencerRegard *)chamberIntelligenceerRegard { - if (!_chamberIntelligenceerRegard) { - _chamberIntelligenceerRegard = [[ChamberIntelligencerRegard alloc] initWithDelegate:self]; - } - return _chamberIntelligenceerRegard; -} - -- (YUMIChamberCommunicationAccommodatedRegard *)communicationAccommoengagementdRegard { - if (!_communicationAccommoengagementdRegard) { - _communicationAccommoengagementdRegard = [[YUMIChamberCommunicationAccommodatedRegard alloc] initWithDelegate:self]; - } - return _communicationAccommoengagementdRegard; -} - -- (YUMIChamberMHTuickCommunicationContainRegard *)quickCommunicationAccommoengagementdRegard { - if(!_quickCommunicationAccommoengagementdRegard) { - _quickCommunicationAccommoengagementdRegard = [[YUMIChamberMHTuickCommunicationContainRegard alloc] initWithDelegate:self]; - } - return _quickCommunicationAccommoengagementdRegard; -} - -- (YUMIChamberParrotAccommodatedRegard *)parrotAccommoengagementdRegard { - if (!_parrotAccommoengagementdRegard) { - _parrotAccommoengagementdRegard = [[YUMIChamberParrotAccommodatedRegard alloc] initWithDelegate:self]; - } - return _parrotAccommoengagementdRegard; -} - -- (YUMIChamberImportpriseAccommodatedRegard *)importpriseAccommoengagementdRegard { - if (!_importpriseAccommoengagementdRegard) { - _importpriseAccommoengagementdRegard = [[YUMIChamberImportpriseAccommodatedRegard alloc] initAboutdelegtowardse:self]; - } - return _importpriseAccommoengagementdRegard; -} - -- (YUMIChamberBrightnessRegard *)animationView { - if (!_animationView) { - _animationView = [[YUMIChamberBrightnessRegard alloc] initWithDelegate:self]; - } - return _animationView; -} - -- (YUMIChamberFunctionAccommodatedRegard *)functionRegard { - if (!_functionRegard) { - _functionRegard = [[YUMIChamberFunctionAccommodatedRegard alloc] initAboutdelegtowardse:self]; - } - return _functionRegard; -} - -- (PhaseRegard *)scoupleeRegard { - if (!_scoupleeRegard) { - _scoupleeRegard = [[SocialPhaseRegard alloc] initWithDelegate:self]; - } - return _scoupleeRegard; -} - -- (KellegChamberScrollRegard *)kellegTrundleRegard { - if (!_kellegTrundleRegard) { - _kellegTrundleRegard = [[KellegChamberScrollRegard alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; - _kellegTrundleRegard.kellegTrundleRepresedtation = self; - _kellegTrundleRegard.hostRepresedtation = self; - if (@available(iOS 11.0, *)) { - _kellegTrundleRegard.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - } - return _kellegTrundleRegard; -} - -- (KellegChamberSrollTipRegard *)kellegTrundlePromptRegard { - if (!_kellegTrundlePromptRegard) { - _kellegTrundlePromptRegard = [[KellegChamberSrollTipRegard alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; - } - return _kellegTrundlePromptRegard; -} - -- (NSMutableArray *)kellegChamberStatement { - if (!_kellegChamberStatement) { - _kellegChamberStatement = [NSMutableArray array]; - } - return _kellegChamberStatement; -} - -- (YUMIThresholdReindictRegard *)thresholdReindictRegard{ - if (!_thresholdReindictRegard){ - YUMIThresholdReindictRegard *thresholdReindictRegard = [[YUMIThresholdReindictRegard alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; - thresholdReindictRegard.delegate = self; - - _thresholdReindictRegard = thresholdReindictRegard; - } - return _thresholdReindictRegard; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/YUMIMiniChamberRegard.h b/YuMi/Modules/YMRoom/View/YUMIMiniChamberRegard.h deleted file mode 100644 index bb289f56..00000000 --- a/YuMi/Modules/YMRoom/View/YUMIMiniChamberRegard.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// YUMIMiniChamberRegard.h -// YuMi -// -// Created by YuMi on 2021/12/3. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ChamberAbstractMatrix, ConsumerAbstractMatrix; -@interface YUMIMiniChamberRegard : UIView -@property (nonatomic,weak) UIViewController * controller; -- (void)prohibitipositionChamberRoadliceRegard:(ChamberAbstractMatrix *)roomInfo userInfo:(ConsumerAbstractMatrix *)userInfo micQueue:(NSMutableDictionary *)micQueue; -- (void)hiddenChamberRoadliceRegard; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/YUMIMiniChamberRegard.m b/YuMi/Modules/YMRoom/View/YUMIMiniChamberRegard.m deleted file mode 100644 index 6b87e997..00000000 --- a/YuMi/Modules/YMRoom/View/YUMIMiniChamberRegard.m +++ /dev/null @@ -1,869 +0,0 @@ -// -// YUMIMiniChamberRegard.m -// YuMi -// -// Created by YuMi on 2021/12/3. -// - -#import "YUMIMiniChamberRegard.h" -#import -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "RealtimackExecutive.h" -#import "UIButton+EnlargeTouchArea.h" -#import "MKJPopup.h" -#import "XNDJTBWGLoadingTool.h" -#import "YUMIChamberMiniExecutive.h" -#import "AccountAbstractStorage.h" -#import "Api+ArrangeMic.h" -#import "Api+Room.h" -#import "YUMICoreAtomicExecutive.h" -#import "NSArray+Safe.h" -#import "NSDate+DateUtils.h" -#import "ChamberAbstractMatrix.h" -#import "MiecreoscoopeMHTueueMatrix.h" -#import "MiecreoscoopeStateMatrix.h" -#import "ConsumerAbstractMatrix.h" -#import "AttachmentMatrix.h" -#import "ScheduleLoudspeakerMatrix.h" -#import "ChamberAcceptDischargeAbstractMatrix.h" -#import "MiecreoscoopeCallforExtMatrix.h" -#import "Manual+CoreDataClass.h" -#import "ChamberCombatChooseConsumerMatrix.h" -#import "ChamberMarchingCaptureMatrix.h" -#import "YUMIChamberRegardGovernancer.h" -#import "YUMINoteRegard.h" -#import "YUMICommunicationSolitaireDisporterExecutive.h" - -UIKIT_EXTERN NSString * kRoomBackMusicPlayMusicFinishKey; -UIKIT_EXTERN NSString * kRoomBackMusicAudioMixingVolumeKey; -UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey; -UIKIT_EXTERN NSString * kRoomBackMusicPlayMusicOrderKey; -UIKIT_EXTERN NSString *kRoomKickoutTime; - -@interface YUMIMiniChamberRegard () -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic,strong) UIButton *encourageBtuton; - -@property (nonatomic,strong) UIImageView *disportRegard; -@property (nonatomic,strong) ChamberAbstractMatrix *roomInfo; -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@property (nonatomic,strong) NSString *universalChamberCid; -@property (nonatomic,strong) NSString *universalChamberId; -@property (nonatomic, strong) NSMutableDictionary *micQueue; -@property (nonatomic,strong) Manual *universalManual; -@property (nonatomic,assign) NSInteger currentIndex; -@property (nonatomic,strong) NSFetchRequest *request; -@property (nonatomic,strong) YUMINoteRegard *bookRegard; - -@end - - -@implementation YUMIMiniChamberRegard - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [[NIMSDK sharedSDK].chatroomManager addDelegate:self]; - [[NIMSDK sharedSDK].chatManager addDelegate:self]; - [[NIMSDK sharedSDK].loginManager addDelegate:self]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(chamberEncourageManualDisportAccomplish:) name:kRoomBackMusicPlayMusicFinishKey object:nil]; - [self initOccurrences]; - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} -#pragma mark - Public Method -- (void)prohibitipositionChamberRoadliceRegard:(ChamberAbstractMatrix *)roomInfo userInfo:(ConsumerAbstractMatrix *)userInfo micQueue:(NSMutableDictionary *)micQueue { - self.hidden = NO; - self.universalChamberCid = [NSString stringWithFormat:@"%ld", roomInfo.uid]; - self.universalChamberId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - self.roomInfo = roomInfo; - self.userInfo = userInfo; - self.micQueue = micQueue; - [self inititowardseIntelligenceportraitBrectifyness]; - } - -- (void)hiddenChamberRoadliceRegard { - [self.intelligenceportraitIndicateRegard.layer removeAllAnimations]; - - self.universalChamberCid = nil; - self.universalChamberId = nil; - self.roomInfo = nil; - self.userInfo = nil; - self.micQueue = nil; - self.hidden = YES; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.frame = CGRectMake(KScreenWidth - 74, KScreenHeight - kNavigationHeight - kTabBarHeight - 140, 67, 75); - - [self addSubview:self.encourageIndicateRegard]; - - [self.encourageIndicateRegard addSubview:self.intelligenceportraitIndicateRegard]; - [self.encourageIndicateRegard addSubview:self.disportRegard]; - [self.encourageIndicateRegard addSubview:self.bookRegard]; - [self addSubview:self.encourageBtuton]; - self.encourageIndicateRegard.layer.cornerRadius = 57/2; - self.encourageIndicateRegard.layer.masksToBounds = YES; - self.encourageIndicateRegard.layer.borderWidth = 2; - self.encourageIndicateRegard.layer.borderColor = [UIColor whiteColor].CGColor; -} - -- (void)initChildLyRestrictions { - - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.bottom.equalTo(self); - make.width.height.mas_equalTo(57); - }]; - - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.encourageIndicateRegard); - }]; - [self.bookRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.mas_equalTo(self.intelligenceportraitIndicateRegard); - make.height.mas_equalTo(14); - make.width.mas_equalTo(20); - }]; - - [self.disportRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.equalTo(self.encourageIndicateRegard); - make.width.mas_equalTo(15); - make.height.mas_equalTo(12); - }]; - [self.encourageBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(20); - make.left.equalTo(self.encourageIndicateRegard.mas_left).mas_offset(47); - make.bottom.equalTo(self.encourageIndicateRegard.mas_bottom).mas_offset(-50); - }]; -} - - -- (void)initOccurrences { - UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(chamberRoadliceCouple:)]; - pan.delaysTouchesBegan = YES; - [self addGestureRecognizer:pan]; - - UITapGestureRecognizer *enterRoomTag = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(importRomRecognition:)]; - [self addGestureRecognizer:enterRoomTag]; -} - -- (void)inititowardseIntelligenceportraitBrectifyness { - CABasicAnimation *rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; - rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 ]; - rotationAnimation.duration = 3; - rotationAnimation.cumulative = YES; - rotationAnimation.repeatCount = MAXFLOAT; - rotationAnimation.removedOnCompletion = NO; - [self.intelligenceportraitIndicateRegard.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"]; -} - -- (void)revoctowardsionChamberScheduleLoudspeaker { - - if (self.roomInfo.roomModeType == ChamberModeGenre_Open_Micro_Mode || self.roomInfo.roomModeType == ChamberModeGenre_Open_Blind) { - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api acquireChamberScheduleLoudspeakerSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - ScheduleLoudspeakerMatrix * arrangeMicModel= [ScheduleLoudspeakerMatrix mtowardsrixAboutJSON:data.data]; - if (arrangeMicModel.myPos.intValue > 0) { - __block NSString * grouptype = @"0"; - if (self.roomInfo.roomModeType == ChamberModeGenre_Open_Blind) { - [arrangeMicModel.queue enumerateObjectsUsingBlock:^(ScheduleLoudspeakerConsumerMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.uid.integerValue == [AccountAbstractStorage instance].acquireCid.integerValue) { - grouptype = [NSString stringWithFormat:@"%ld", obj.groupType]; - *stop = YES; - } - }]; - } - [Api revoctowardsionScheduleLoudspeaker:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) {} roomUid:roomUid operUid:uid groupType:grouptype]; - } - } - } roomUid:roomUid operUid:uid page:@"1" pageSize:@"50"]; - }else if(self.roomInfo.roomModeType == ChamberModeGenre_Open_PK_Mode) { - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid]; - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api acquireChamberCombatConsumerSttowardsement:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - ScheduleLoudspeakerMatrix * arrangeMicModel= [ScheduleLoudspeakerMatrix mtowardsrixAboutJSON:data.data]; - if (arrangeMicModel.myPos.intValue > 0) { - __block NSString * grouptype = @"0"; - [arrangeMicModel.queue enumerateObjectsUsingBlock:^(ScheduleLoudspeakerConsumerMatrix * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.uid.integerValue == [AccountAbstractStorage instance].acquireCid.integerValue) { - grouptype = [NSString stringWithFormat:@"%ld", obj.groupType]; - *stop = YES; - } - }]; - [Api revoctowardsionChamberCombatScheduleLoudspeaker:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - - } roomUid:roomUid operUid:uid groupType:grouptype]; - } - } - } roomUid:roomUid operUid:uid page:@"1" pageSize:@"50"]; - } -} - -- (BOOL)isCanExhibitionCommunictowardsion:(NIMMessage *)message { - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentMatrix class]]) { - AttachmentMatrix *attachment = (AttachmentMatrix *)obj.attachment; - if (attachment.first == IndividualityCommunicationGenre_Face && attachment.second == Custom_Message_Sub_Face_Send) { - if ([attachment.data[@"data"] isKindOfClass:[NSArray class]]) { - NSArray * array = [ChamberAcceptDischargeAbstractMatrix mtowardsrixsAboutGarment:attachment.data[@"data"]]; - for (int i = 0; i< array.count; i++) { - ChamberAcceptDischargeAbstractMatrix * sendInfo = [array secureGroalTowardsIndictowardsrix1:i]; - if (sendInfo.resultIndexes.count <=0) { - return NO; - } - } - } - }else if (attachment.first == IndividualityCommunicationGenre_Room_PK && attachment.second == Custom_Message_Sub_Room_PK_Manager_Up_Mic) { - if (attachment.data && [attachment.data allKeys].count > 0) { - for (NSDictionary * dic in [attachment.data allValues]) { - ChamberCombatChooseConsumerMatrix * userModel = [ChamberCombatChooseConsumerMatrix mtowardsrixAboutImpactbasket:dic]; - if (userModel.groupType == GroupGenre_Red || userModel.groupType == GroupGenre_Blue) { - return YES; - } - } - } - return NO; - } else if(attachment.first == IndividualityCommunicationGenre_Room_Sailing && (attachment.second == Custom_Message_Sub_Sailing_AllRoom_Notify || attachment.second == Custom_Message_Sub_Sailing_InRoom_NeedAllMicSend)) { - ChamberMarchingCaptureMatrix * captureMatrix = [ChamberMarchingCaptureMatrix mtowardsrixAboutImpactbasket:attachment.data]; - if (self.userInfo.userLevelVo.experLevelSeq > captureMatrix.userLevelLimit) { - return YES; - } - } - return [[[self supportCommunictowardsionDic] objectForKey:@(attachment.first)] containsObject:@(attachment.second)]; - } - return NO; -} - -- (NSDictionary *)supportCommunictowardsionDic { - return @{ - @(IndividualityCommunicationGenre_AllMicroSend): - [NSSet setWithObjects: - @(Custom_Message_Sub_AllMicroSend), - @(Custom_Message_Sub_AllMicroLuckySend), - @(Custom_Message_Sub_AllBatchSend), - @(Custom_Message_Sub_AllBatchMicroLuckySend), - nil], - @(IndividualityCommunicationGenre_Gift): - [NSSet setWithObjects: - @(Custom_Message_Sub_Gift_Send), - @(Custom_Message_Sub_Gift_LuckySend), - nil], - @(IndividualityCommunicationGenre_Room_Tip): - [NSSet setWithObjects: - @(Custom_Message_Sub_Room_Tip_ShareRoom), - @(Custom_Message_Sub_Room_Tip_Attention_Owner), - nil], - @(IndividualityCommunicationGenre_Kick_User): - [NSSet setWithObjects: - @(Custom_Message_Sub_Kick_BeKicked), - @(Custom_Message_Sub_Kick_BlackList), - nil], - @(IndividualityCommunicationGenre_Queue): - [NSSet setWithObjects: - @(Custom_Message_Sub_Queue_Kick), - nil], - @(IndividualityCommunicationGenre_Look_Love): - [NSSet setWithObjects: - @(Custom_Message_Sub_Look_Love_Me), - @(Custom_Message_Sub_Look_Love_InRoom), - @(Custom_Message_Sub_Look_Love_AllRoom), - @(Custom_Message_Sub_Look_Love_AllRoom_Notify), - @(Custom_Message_Sub_Look_Love_InRoom_NeedAllMicSend), - nil], - @(IndividualityCommunicationGenre_Arrange_Mic): - [NSSet setWithObjects: - @(Custom_Message_Sub_Arrange_Mic_Mode_Open), - @(Custom_Message_Sub_Arrange_Mic_Mode_Close), - @(Custom_Message_Sub_Arrange_Mic_Free_Mic_Open), - @(Custom_Message_Sub_Arrange_Mic_Free_Mic_Close), - nil], - @(IndividualityCommunicationGenre_Update_RoomInfo): - [NSSet setWithObjects: - @(Custom_Message_Sub_Update_RoomInfo_MessageState), - @(Custom_Message_Sub_Update_RoomInfo_AnimateEffect), - nil], - @(IndividualityCommunicationGenre_Collection_Room): - [NSSet setWithObjects: - @(Custom_Message_Sub_Collect_Room_Tips), - nil], - @(IndividualityCommunicationGenre_RoomPlay_Dating): - [NSSet setWithObjects: - @(Custom_Message_Sub_Room_Play_Dating_Pick_Heart), - @(Custom_Message_Sub_Room_Play_Dating_Result_Mutual), - @(Custom_Message_Sub_Room_Play_Dating_Result_Not_Mutual), - nil], - @(IndividualityCommunicationGenre_Noble_VIP): - [NSSet setWithObjects: - @(Custom_Message_Sub_Room_Open_Noble_VIP), - @(Custom_Message_Sub_Room_Noble_LevelUp), - @(Custom_Message_Sub_AllRoom_Noble_LevelUp_Suspend), - nil], - @(IndividualityCommunicationGenre_Face): - [NSSet setWithObjects: - @(Custom_Message_Sub_Face_Send), - nil], - @(IndividualityCommunicationGenre_Anchor_FansTeam): - [NSSet setWithObjects: - @(Custom_Message_Sub_FansTeam_Open_Success), - @(Custom_Message_Sub_FansTeam_Open_Fail), - @(Custom_Message_Sub_FansTeam_Join_Success), - @(Custom_Message_Sub_FansTeam_Out_Success), - nil], - @(IndividualityCommunicationGenre_Hall_Super_Admin): - [NSSet setWithObjects: - @(Custom_Message_Sub_Hall_Super_Admin_Kick_Manager_Out_Room), - nil], - @(IndividualityCommunicationGenre_Room_PK): - [NSSet setWithObjects: - @(Custom_Message_Sub_Room_PK_Manager_Up_Mic), - @(Custom_Message_Sub_Room_PK_Mode_Close), - @(Custom_Message_Sub_Room_PK_Result), - @(Custom_Message_Sub_Room_PK_Mode_Open), - @(Custom_Message_Sub_Room_PK_Start), - @(Custom_Message_Sub_Room_PK_Re_Start), - nil], - @(IndividualityCommunicationGenre_LuckyBag): - [NSSet setWithObjects: - @(Custom_Message_Sub_Room_Gift_LuckBag_Server), - nil], - @(IndividualityCommunicationGenre_Gift_Compound): - [NSSet setWithObjects:@(Custom_Message_Sub_Gift_Compound), - nil], - @(IndividualityCommunicationGenre_Room_Sailing): - [NSSet setWithObjects: - @(Custom_Message_Sub_Sailing_Me), - @(Custom_Message_Sub_Sailing_InRoom), - @(Custom_Message_Sub_Sailing_AllRoom), - @(Custom_Message_Sub_Sailing_AllRoom_Notify), - @(Custom_Message_Sub_Sailing_InRoom_NeedAllMicSend), - nil], - }; -} - -#pragma mark - NIMChatroomManagerDelegate -- (void)chatroomBeKicked:(NIMChatroomBeKickedResult *)result { - - if ([YUMIChamberMiniExecutive shareManager].acquireChamberAbstract == nil) return; - if (result.reason == 2) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Mini_Room_View_0")]; - } else if (result.reason == 5) { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"YUMI_Mini_Room_View_1")]; - } - [[YUMIChamberMiniExecutive shareManager] prohibitipositionChamberAbstract:nil]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionConsumerAbstract:nil]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionUniversalManual:nil isPlaying:NO]; - [[YUMIChamberMiniExecutive shareManager] replacementProvincialCommunictowardsion]; - [[RealtimackExecutive instance] exitRoom]; - [self revoctowardsionChamberScheduleLoudspeaker]; - [self hiddenChamberRoadliceRegard]; - NSMutableDictionary *kickoutDic = [[NSUserDefaults standardUserDefaults]valueForKey:kRoomKickoutTime]; - if(kickoutDic == nil){ - kickoutDic = [NSMutableDictionary new]; - } - NSString *time = [NSDate acquireNowIntrtowardsemporalIntrtowardsemporalstamp]; - [kickoutDic setValue:time forKey:@(self.roomInfo.roomId).stringValue]; - [[NSUserDefaults standardUserDefaults]synchronize]; -} - -#pragma mark - NIMLoginManagerDelegate -- (void)onKickout:(NIMLoginKickoutResult *)result { - - if ([YUMIChamberMiniExecutive shareManager].acquireChamberAbstract == nil) return; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionChamberAbstract:nil]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionConsumerAbstract:nil]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionUniversalManual:nil isPlaying:NO]; - [[YUMIChamberMiniExecutive shareManager] replacementProvincialCommunictowardsion]; - [[RealtimackExecutive instance] exitRoom]; - [self hiddenChamberRoadliceRegard]; -} -#pragma mark - NIMChatManagerDelegate -- (void)onRecvMessages:(NSArray *)messages { - - if ([YUMIChamberMiniExecutive shareManager].acquireChamberAbstract == nil) return; - - for (NIMMessage * message in messages) { - - if (message.session.sessionType != NIMSessionTypeChatroom) { - continue; - } - - - if (![message.session.sessionId isEqualToString:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]) { - continue; - } - - if (message.messageType == NIMMessageTypeNotification) { - NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; - NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; - [self shankNEMCCircularCommunictowardsion:content]; - [self shankNEMCCircularPreserveCommunictowardsion:message]; - } else if (message.messageType == NIMMessageTypeCustom) { - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentMatrix class]]) { - [self shankNEMCIndividualityCommunictowardsion:obj.attachment]; - if ([self isCanExhibitionCommunictowardsion:message]) { - [[YUMIChamberMiniExecutive shareManager] preserveChamberCommunictowardsion:message]; - } - } - }else if(message.messageType == NIMMessageTypeText) { - [self shankNEMCEssayCommunictowardsion:message]; - } else if(message.messageType == NIMMessageTypeTip) { - [self shankNEMCEssayCommunictowardsion:message]; - } - } -} - -- (void)shankNEMCCircularCommunictowardsion:(NIMChatroomNotificationContent *)content { - BOOL microQueueChanged = NO; - switch (content.eventType) { - case NIMChatroomEventTypeInfoUpdated: - { - NSDictionary *data = [content.notifyExt toJSONGroal]; - int type = [data[@"type"] intValue]; - NSArray* microStates; - switch (type) { - case 2: - microStates = @[[MiecreoscoopeStateMatrix mtowardsrixAboutJSON:data[@"micInfo"]]]; - break; - case 3: - microStates = [MiecreoscoopeStateMatrix mtowardsrixsAboutGarment:data[@"micInfo"]]; - break; - } - if (microStates && microStates.count > 0) { - for (MiecreoscoopeStateMatrix *microState in microStates) { - MiecreoscoopeMHTueueMatrix *micSequence = [self.micQueue objectForKey:[NSString stringWithFormat:@"%d", microState.position]]; - micSequence.microState = microState; - } - microQueueChanged = YES; - } - - NSMutableDictionary *lastRoomInfoDic = [NSMutableDictionary dictionaryWithDictionary:[self.roomInfo mtowardsrix2dictionary]]; - [lastRoomInfoDic addEntriesFromDictionary: ((NSString *)data[@"roomInfo"]).toJSONGroal]; - ChamberAbstractMatrix *newRoomInfo = [ChamberAbstractMatrix mtowardsrixAboutJSON:lastRoomInfoDic]; - - if (newRoomInfo.type != ChamberGenre_MiniGame) { - newRoomInfo.mgId = 0; - } - if (newRoomInfo.roomModeType == ChamberModeGenre_Open_Blind && self.roomInfo.roomModeType != ChamberModeGenre_Open_Blind) { - - newRoomInfo.datingState = ChamberDatingDeclareChangeGenre_Open; - } else if(newRoomInfo.roomModeType != ChamberModeGenre_Open_Blind && self.roomInfo.roomModeType == ChamberModeGenre_Open_Blind) { - - newRoomInfo.datingState = ChamberDatingDeclareChangeGenre_Close; - } else { - newRoomInfo.datingState = ChamberDatingDeclareChangeGenre_Normal; - } - self.roomInfo = newRoomInfo; - } - break; - - case NIMChatroomEventTypeQueueChange: - { - NSDictionary* data = (NSDictionary *)content.ext; - NSString* position = [data objectForKey:NIMChatroomEventInfoQueueChangeItemKey]; - ConsumerAbstractMatrix* userInfo = [ConsumerAbstractMatrix mtowardsrixAboutJSON:[data objectForKey:NIMChatroomEventInfoQueueChangeItemValueKey]]; - NSInteger changeType = [data[NIMChatroomEventInfoQueueChangeTypeKey] integerValue]; - - - for (MiecreoscoopeMHTueueMatrix *sequence in self.micQueue.allValues) { - if (userInfo.uid == sequence.userInfo.uid) { - sequence.userInfo = nil; - } - } - - if (changeType == 1) { - MiecreoscoopeMHTueueMatrix *sequence = [self.micQueue objectForKey:position]; - sequence.userInfo = userInfo; - } - - microQueueChanged = YES; - } - break; - case NIMChatroomEventTypeExit: - case NIMChatroomEventTypeKicked: - { - for (NIMChatroomNotificationMember *member in content.targets) { - for (MiecreoscoopeMHTueueMatrix *sequence in self.micQueue.allValues) { - if (member.userId.integerValue == sequence.userInfo.uid) { - sequence.userInfo = nil; - microQueueChanged = YES; - } - } - } - } - break; - default: - break; - } - - if (microQueueChanged) { - [self miecreoscoopeInthecaseofmtowardsionRefurbishd]; - } -} - -- (void)miecreoscoopeInthecaseofmtowardsionRefurbishd { - BOOL selfNeedBroadcast = NO; - for (int i = 0; i < self.micQueue.allKeys.count; i++) { - MiecreoscoopeMHTueueMatrix * model = [self.micQueue objectForKey:[NSString stringWithFormat:@"%d", i]]; - if (model.userInfo.uid == [AccountAbstractStorage instance].acquireCid.integerValue) { - selfNeedBroadcast = model.microState.micState == MiecreoscoopeLoudspeakerDeclareGenre_Open; - } - } - if (self.roomInfo.type == ChamberGenre_Anchor && [[AccountAbstractStorage instance].acquireCid isEqualToString:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]) { - selfNeedBroadcast = YES; - } - [[RealtimackExecutive instance] pingencourage:selfNeedBroadcast]; -} - -- (void)shankNEMCIndividualityCommunictowardsion:(AttachmentMatrix *)attachment { - if(attachment.first == IndividualityCommunicationGenre_Queue && attachment.second == Custom_Message_Sub_Queue_Invite) { - NSDictionary *dic = attachment.data; - MiecreoscoopeCallforExtMatrix *inviteModel = [MiecreoscoopeCallforExtMatrix mtowardsrixAboutImpactbasket:dic]; - if (inviteModel.uid.integerValue == self.userInfo.uid) { - NSString *position = inviteModel.micPosition; - - MiecreoscoopeMHTueueMatrix *micro = [self.micQueue objectForKey:position]; - if (!micro || micro.userInfo) return; - - ChamberAbstractMatrix* roomInfo = self.roomInfo; - NSString* roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - ConsumerAbstractMatrix* userInfo = self.userInfo; - - NIMChatroomQueueUpdateRequest *request = [[NIMChatroomQueueUpdateRequest alloc]init]; - request.key = position; - request.value = [[self prohibitipositionRefurbishChinwagChamberInthecaseofmtowardsionExt:userInfo] toJSONBWSttr]; - request.roomId = roomId; - request.transient = YES; - - [[NIMSDK sharedSDK].chatroomManager updateChatroomQueueObject:request completion:^(NSError * _Nullable error) { - if (error) return; - [self revoctowardsionChamberScheduleLoudspeaker]; - [RealtimackExecutive instance].localDelicate = YES; - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.title = YMLocalizedString(@"YUMI_Mini_Room_View_2"); - config.message = @"你已被房主或管理员拉上麦,但并未开启麦克风。如需要说话,请打开麦克风。"; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - - } cancelHandler:^{ - - }]; - }]; - } - } else if (attachment.first == IndividualityCommunicationGenre_Update_RoomInfo && attachment.second == Custom_Message_Sub_Update_RoomInfo_MessageState) { - [[YUMIChamberMiniExecutive shareManager] replacementProvincialCommunictowardsion]; - } -} - -#pragma mark - 最小化 公屏的显示问题 -- (void)accelertowardseChamberCommunictowardsion:(NIMMessage *)message { - if (self.roomInfo.isCloseScreen) { - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentMatrix class]]) { - AttachmentMatrix *attachment = (AttachmentMatrix *)obj.attachment; - if (attachment.first == IndividualityCommunicationGenre_Update_RoomInfo && attachment.second == Custom_Message_Sub_Update_RoomInfo_MessageState){ - [[YUMIChamberMiniExecutive shareManager] preserveChamberCommunictowardsion:message]; - } - } - } else { - [[YUMIChamberMiniExecutive shareManager] preserveChamberCommunictowardsion:message]; - } -} - -- (void)shankNEMCCircularPreserveCommunictowardsion:(NIMMessage *)message { - NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; - NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; - ChamberAbstractMatrix * roomInfo = self.roomInfo; - if (content.eventType == NIMChatroomEventTypeEnter) { - if (roomInfo.isCloseScreen) { - AttachmentMatrix *attachement = [[AttachmentMatrix alloc]init]; - attachement.first = IndividualityCommunicationGenre_Update_RoomInfo; - attachement.second = Custom_Message_Sub_Update_RoomInfo_MessageState; - attachement.data = @{@"roomInfo":self.roomInfo.mtowardsrix2dictionary}; - NIMMessage *message = [[NIMMessage alloc]init]; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachement; - message.messageObject = object; - [self accelertowardseChamberCommunictowardsion:message]; - return; - } else { - [self accelertowardseChamberCommunictowardsion:message]; - NIMChatroomNotificationMember *member = content.targets[0]; - if (member.userId.integerValue == [AccountAbstractStorage instance].acquireCid.integerValue) { - if (!roomInfo.hasAnimationEffect) { - [self chamberAbstractNoPresentBrectifynessCommunictowardsion:message]; - } - } - } - } else if(content.eventType == NIMChatroomEventTypeInfoUpdated) { - if (roomInfo.isCloseScreen) {return;} - if (roomInfo.datingState == ChamberDatingDeclareChangeGenre_Open) { - [self accelertowardseChamberCommunictowardsion:message]; - } - } -} - -- (void)shankNEMCEssayCommunictowardsion:(NIMMessage *)message { - [self accelertowardseChamberCommunictowardsion:message]; -} - -- (void)chamberAbstractNoPresentBrectifynessCommunictowardsion:(NIMMessage *)message { - AttachmentMatrix *attachement = [[AttachmentMatrix alloc]init]; - attachement.first = IndividualityCommunicationGenre_Update_RoomInfo; - attachement.second = Custom_Message_Sub_Update_RoomInfo_AnimateEffect; - NIMMessage *tempMessage = [[NIMMessage alloc]init]; - NIMCustomObject *customObject = [[NIMCustomObject alloc]init]; - customObject.attachment = attachement; - tempMessage.messageObject = customObject; - [self accelertowardseChamberCommunictowardsion:tempMessage]; -} - -- (NSDictionary *)prohibitipositionRefurbishChinwagChamberInthecaseofmtowardsionExt:(ConsumerAbstractMatrix *)userInfo { - NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic setValue:@(userInfo.gender) forKey:@"gender"]; - [dic setValue:userInfo.avatar forKey:@"avatar"]; - [dic setValue:@(userInfo.uid) forKey:@"uid"]; - [dic setValue:userInfo.nick forKey:@"nick"]; - NSString * headWearUrl = userInfo.headwearEffect.length > 0 ? userInfo.headwearEffect : userInfo.headwearPic; - if (headWearUrl.length > 0) { - [dic setValue:headWearUrl forKey:@"headWearUrl"]; - } - if (userInfo.micCircle.length) { - [dic setValue:userInfo.micCircle forKey:@"micCircle"]; - } - if (userInfo.micNickColor.length) { - [dic setValue:userInfo.micNickColor forKey:@"micNickColor"]; - } - [dic setValue:@(userInfo.userVipInfoVO.enterHide) forKey:@"enterHide"]; - [dic setValue:@(userInfo.userVipInfoVO.preventKick) forKey:@"preventKick"]; - return dic; -} - -#pragma mark - Event Response -- (void)concludeBtutonPerformance:(UIButton *)sender { - if([YUMIChamberMiniExecutive shareManager].curDeclare){ - [YUMIChamberMiniExecutive shareManager].curDeclare = nil; - } - [YUMIChamberMiniExecutive shareManager].curDeclare = nil; - [[NIMSDK sharedSDK].chatroomManager exitChatroom:self.universalChamberId completion:nil]; - [self respondOptowardssideChamber]; - [[RealtimackExecutive instance] exitRoom]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionChamberAbstract:nil]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionConsumerAbstract:nil]; - [[YUMIChamberMiniExecutive shareManager] prohibitipositionUniversalManual:nil isPlaying:NO]; - [[YUMIChamberMiniExecutive shareManager] replacementProvincialCommunictowardsion]; - [self hiddenChamberRoadliceRegard]; - [YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance].isManeInLoudspeaker = NO; -} - -- (void)respondOptowardssideChamber { - if ([[AccountAbstractStorage instance] acquireTicket].length < 1) { - return; - } - [Api requisitionReportConsumerOptowardssideChamber:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - - } uid:[[AccountAbstractStorage instance] acquireCid] roomUid:self.universalChamberCid ticket:[[AccountAbstractStorage instance] acquireTicket]]; -} - -- (void)importRomRecognition:(UITapGestureRecognizer *)tap { - if (self.universalChamberCid > 0 && self.controller) { - [YUMIChamberRegardGovernancer unfoildRoadliceChamber:self.universalChamberCid viewController:self.controller]; - } -} - -- (void)chamberRoadliceCouple:(UIPanGestureRecognizer*)p { - UIWindow *appWindow = [UIApplication sharedApplication].delegate.window; - CGPoint panSpeck = [p locationInView:appWindow]; - if (p.state == UIGestureRecognizerStateBegan) { - self.alpha = 1; - } else if(p.state == UIGestureRecognizerStateChanged) { - self.center = CGPointMake(panSpeck.x, panSpeck.y); - } else if(p.state == UIGestureRecognizerStateEnded - || p.state == UIGestureRecognizerStateCancelled) { - self.alpha = 1; - CGFloat touchWidth = self.frame.size.width; - CGFloat touchHeight = self.frame.size.height; - CGFloat screenWidth = [[UIScreen mainScreen] bounds].size.width; - CGFloat screenHeight = [[UIScreen mainScreen] bounds].size.height; - - CGFloat left = fabs(panSpeck.x); - CGFloat right = fabs(screenWidth - left); - CGFloat top = fabs(panSpeck.y); - CGFloat bottom = fabs(screenHeight - top); - CGFloat minSpace = 0; - minSpace = MIN(MIN(MIN(top, left), bottom), right); - CGPoint newCenter; - CGFloat targetY = 0; - - if (panSpeck.y < 15 + touchHeight / 2.0) { - targetY = 15 + touchHeight / 2.0; - }else if (panSpeck.y > (screenHeight - touchHeight / 2.0 - 15)) { - targetY = screenHeight - touchHeight / 2.0 - 15; - }else{ - targetY = panSpeck.y; - } - - if (minSpace == left) { - newCenter = CGPointMake(15+touchWidth/2.0, targetY); - }else if (minSpace == right) { - newCenter = CGPointMake(screenWidth - touchWidth/2.0 - 15, targetY); - }else if (minSpace == top) { - newCenter = CGPointMake(panSpeck.x, touchWidth / 3); - }else { - newCenter = CGPointMake(panSpeck.x, screenHeight - touchWidth / 3); - } - [UIView animateWithDuration:0.25 animations:^{ - if (newCenter.y + self.frame.size.height / 2 > KScreenHeight - kSafeAreaBottomHeight - 44) { - self.center = CGPointMake(newCenter.x, KScreenHeight - self.frame.size.height / 2 - kSafeAreaBottomHeight - 44); - }else { - self.center = newCenter; - } - }]; - } -} -#pragma mark - 背景音乐的播放 -- (void)chamberEncourageManualDisportAccomplish:(NSNotification *)notification { - NSString * filePath = [notification object]; - Manual * universalManual = [YUMIChamberMiniExecutive shareManager].acquireUniversalManual; - if (filePath && universalManual) { - self.universalManual = universalManual; - NSArray * array = [[YUMICoreAtomicExecutive partowardsiciptowardsionInstance].managedObjectContext executeFetchRequest:self.request error:nil]; - __block NSInteger currentIndex = 0; - [array enumerateObjectsUsingBlock:^(Manual * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj.musicName isEqualToString:universalManual.musicId]) { - currentIndex = idx; - *stop = YES; - } - }]; - self.currentIndex = currentIndex; - NSInteger order = [[NSUserDefaults standardUserDefaults] integerForKey:kRoomBackMusicPlayMusicOrderKey]; - if (order == 0) { - NSInteger index = self.currentIndex +1; - [self prohibitiportLtowardsterManual:index]; - } else { - [self prohibitiportLtowardsterManual:currentIndex]; - } - } -} - -- (void)prohibitiportLtowardsterManual:(NSInteger)index { - NSArray * array = [[YUMICoreAtomicExecutive partowardsiciptowardsionInstance].managedObjectContext executeFetchRequest:self.request error:nil]; - if (index >= array.count) { - index = 0; - if (self.universalManual) { - [[RealtimackExecutive instance] diversifictowardsionDisportDeclare:BackMusicDisportDeclare_Resume]; - } else { - Manual * manual = [array secureGroalTowardsIndictowardsrix1:index]; - [self prohibitiportUniversalManual:manual index:index]; - } - } else { - Manual * manual = [array secureGroalTowardsIndictowardsrix1:index]; - [self prohibitiportUniversalManual:manual index:index]; - } -} - -- (void)prohibitiportUniversalManual:(Manual *)manual index:(NSInteger)index { - NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; - int manualQuantm = (int)[defaults integerForKey:kRoomBackMusicAudioMixingVolumeKey]; - manualQuantm = manualQuantm > 0 ? manualQuantm : 50; - - int captureQuantm = (int)[defaults integerForKey:kRoomBackMusicCaptureVolumeKey]; - captureQuantm = captureQuantm > 0 ? captureQuantm : 50; - - - self.universalManual = manual; - self.currentIndex = index; - NSString * documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; - documentsPath = [NSString stringWithFormat:@"%@/music/",documentsPath]; - NSString * musicPath; - if (manual.musicName) { - musicPath = [documentsPath stringByAppendingString:manual.musicName]; - } else { - return; - } - [[RealtimackExecutive instance] prohibitiportEncourageManual:musicPath musicId:0 completion:^(NSString * filePath) { - NSInteger order = [[NSUserDefaults standardUserDefaults] integerForKey:kRoomBackMusicPlayMusicOrderKey]; - if (order == 0) { - NSInteger index = self.currentIndex + 1; - [self prohibitiportLtowardsterManual:index]; - } else { - [self prohibitiportLtowardsterManual:self.currentIndex]; - } - }]; - [[RealtimackExecutive instance] refurbishConsumerSound:captureQuantm]; - [[RealtimackExecutive instance] refurbishManualSound:manualQuantm]; -} - -#pragma mark - Getters And Setters -- (void)setRoomInfo:(ChamberAbstractMatrix *)roomInfo { - _roomInfo = roomInfo; - if (_roomInfo) { - self.intelligenceportraitIndicateRegard.imageUrl = _roomInfo.avatar; - if (_roomInfo.title.length > 8) { - _roomInfo.title = [NSString stringWithFormat:@"%@…", [_roomInfo.title substringToIndex:8]]; - } - } -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.userInteractionEnabled = YES; - } - return _encourageIndicateRegard; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.imageType = ImageGenreUserIcon; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - - _intelligenceportraitIndicateRegard.userInteractionEnabled = YES; - } - return _intelligenceportraitIndicateRegard; -} - -- (UIImageView *)disportRegard{ - if (!_disportRegard){ - _disportRegard = [UIImageView new]; - } - return _disportRegard; -} - --(UIButton *)encourageBtuton{ - if (!_encourageBtuton){ - _encourageBtuton = [UIButton new]; - [_encourageBtuton setBackgroundImage:[UIImage imageNamed:@"yumi_min_scope_back"] forState:UIControlStateNormal]; - [_encourageBtuton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:10]; - [_encourageBtuton addTarget:self action:@selector(concludeBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - } - return _encourageBtuton; -} - -- (NSFetchRequest *)request { - if (!_request) { - _request = [NSFetchRequest fetchRequestWithEntityName:@"Manual"]; - } - return _request; -} -- (YUMINoteRegard *)bookRegard { - if (!_bookRegard) { - _bookRegard = [[YUMINoteRegard alloc] init]; - _bookRegard.userInteractionEnabled = YES; - _bookRegard.pillarPrettify = [UIColor colorWithWhite:1 alpha:1]; - _bookRegard.pillarExtents = 3; - [_bookRegard startAnimation]; - } - return _bookRegard; -} -@end diff --git a/YuMi/Modules/YMTabbar/Api/Api+Main.h b/YuMi/Modules/YMTabbar/Api/Api+Main.h index e0ca9399..58dca800 100644 --- a/YuMi/Modules/YMTabbar/Api/Api+Main.h +++ b/YuMi/Modules/YMTabbar/Api/Api+Main.h @@ -11,28 +11,49 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (Main) -+ (void)requisitionTicket:(HttpRequestHelperCompletion)completion access_token:(NSString *)accessToken issue_type:(NSString *)issueType; ++ (void)requestTicket:(HttpRequestHelperCompletion)completion access_token:(NSString *)accessToken issue_type:(NSString *)issueType; -+ (void)aplictowardsionInitObserverJuliangDirectory:(HttpRequestHelperCompletion)complection; +/// 巨量广告回调 参数中有一个id 是系统的关键字 不知道怎么使用上面的那种方法构建参数 ++ (void)appInitObserverJuliangAd:(HttpRequestHelperCompletion)complection; -+ (void)clientInitDisposition:(HttpRequestHelperCompletion)complection; +/// 初始化配置 +/// @param complection 完成 ++ (void)clientInitConfig:(HttpRequestHelperCompletion)complection; -+ (void)examineCentiretyforConsumerInChamber:(HttpRequestHelperCompletion)completion centiretyforCryptogram:(NSString *)centiretyforCryptogram; +///邀请码进房 +/// @param completion 完成 +/// @param inviteCode 邀请码 ++ (void)checkInviteUserInRoom:(HttpRequestHelperCompletion)completion inviteCode:(NSString *)inviteCode; -+ (void)strangeConsumerBewelcometoAbstract:(HttpRequestHelperCompletion)completion; +/// 新用户打招呼 +/// @param completion 完成 ++ (void)newUserGreetInfo:(HttpRequestHelperCompletion)completion; -+ (void)shortDeficitucedEncourageChamber:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; +/// 推荐进入的房间 +/// @param completion 完成 +/// @param uid 用户的uid ++ (void)shortCutRecommendRoom:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; -+ (void)requisitionStrangeConsumerReindictSttowardsement:(HttpRequestHelperCompletion)completion; +/// 获取新用户充值优惠列表 +/// @param completion 完成 ++ (void)requestNewUserRechargeList:(HttpRequestHelperCompletion)completion; -+ (void)requisitionKellegSolitaireAbstract:(HttpRequestHelperCompletion)completion; +/// 获取主播卡片信息 +/// @param completion 完成 ++ (void)requestAnchorCardInfo:(HttpRequestHelperCompletion)completion; -+ (void)requisitionReleaseRefurbish:(HttpRequestHelperCompletion)completion appVersion:(NSString *)appVersion os:(NSString *)os channel:(NSString *)channel; +/// 获取版本更新 +/// @param appVersion 当前版本 +/// @param os os +/// @param channel cannel ++ (void)requestVersionUpdate:(HttpRequestHelperCompletion)completion appVersion:(NSString *)appVersion os:(NSString *)os channel:(NSString *)channel; -+ (void)requisitionClientInititowardseAplictowardsion:(HttpRequestHelperCompletion)completion; +/// app 启动调用此接口 主要功能:给主播分流 登录成功之后调用 ++ (void)requestClientStartApp:(HttpRequestHelperCompletion)completion; -+ (void)requisitionClientCourageBrtowards:(HttpRequestHelperCompletion)completion; +///心跳接口,每 30 秒调用一次,用来更新用户在线状态 登录成功之后调用 ++ (void)requestClientHeartBrat:(HttpRequestHelperCompletion)completion; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/Api/Api+Main.m b/YuMi/Modules/YMTabbar/Api/Api+Main.m index 7deddc5c..5efe7d94 100644 --- a/YuMi/Modules/YMTabbar/Api/Api+Main.m +++ b/YuMi/Modules/YMTabbar/Api/Api+Main.m @@ -12,84 +12,105 @@ #import @implementation Api (Main) -+ (void)requisitionTicket:(HttpRequestHelperCompletion)completion access_token:(NSString *)accessToken issue_type:(NSString *)issueType { - NSString * fang = [NSString stringFromBase64String:@"b2F1dGgvdGlja2V0"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, accessToken, issueType, nil]; ++ (void)requestTicket:(HttpRequestHelperCompletion)completion access_token:(NSString *)accessToken issue_type:(NSString *)issueType { + NSString * fang = [NSString stringFromBase64String:@"b2F1dGgvdGlja2V0"];///oauth/ticket + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, accessToken, issueType, nil]; } -+ (void)aplictowardsionInitObserverJuliangDirectory:(HttpRequestHelperCompletion)complection { +/// 巨量广告回调 参数中有一个id 是系统的关键字 不知道怎么使用上面的那种方法构建参数 ++ (void)appInitObserverJuliangAd:(HttpRequestHelperCompletion)complection { NSMutableDictionary * params = [NSMutableDictionary dictionary]; - - - - - - - - - [params secureSetGroal:@"0" forKey:@"evenType"]; + /// @param complection 完成 + /// @param evenType //事件类型 0:激活 + /// @param idfa idfa + /// @param idfaMd5 idfa的MD5 + /// @param ip ip + /// @param muid iOS:取idfa原值 + /// @param fid idfa + /// @param platOs 1 + [params safeSetObject:@"0" forKey:@"evenType"]; if ([YYUtility idfa].length > 0) { - [params secureSetGroal:[YYUtility idfa] forKey:@"idfa"]; - [params secureSetGroal:[[YYUtility idfa] MD5String] forKey:@"idfaMd5"]; - [params secureSetGroal:[YYUtility idfa] forKey:@"muid"]; - [params secureSetGroal:[YYUtility idfa] forKey:@"id"]; + [params safeSetObject:[YYUtility idfa] forKey:@"idfa"]; + [params safeSetObject:[[YYUtility idfa] MD5String] forKey:@"idfaMd5"]; + [params safeSetObject:[YYUtility idfa] forKey:@"muid"];//iOS:取idfa原值 + [params safeSetObject:[YYUtility idfa] forKey:@"id"]; } - if ([YYUtility ipAccelerateress].length > 0) { - [params secureSetGroal:[YYUtility ipAccelerateress] forKey:@"ip"]; + if ([YYUtility ipAddress].length > 0) { + [params safeSetObject:[YYUtility ipAddress] forKey:@"ip"]; } - [params secureSetGroal:@(1) forKey:@"platOs"]; - [params secureSetGroal:@"" forKey:@"imei"]; - [params secureSetGroal:@"" forKey:@"ua"]; - NSString * fang = [NSString stringFromBase64String:@"anVsaWFuZy9hZC9hY3RpdmVUcmFjaw=="]; - [HttpRequestFacilitater request:fang method:HttpRequestHelperMethodPOST params:params completion:complection]; + [params safeSetObject:@(1) forKey:@"platOs"]; + [params safeSetObject:@"" forKey:@"imei"]; + [params safeSetObject:@"" forKey:@"ua"]; + NSString * fang = [NSString stringFromBase64String:@"anVsaWFuZy9hZC9hY3RpdmVUcmFjaw=="];///juliang/ad/activeTrack + [HttpRequestHelper request:fang method:HttpRequestHelperMethodPOST params:params completion:complection]; } -+ (void)clientInitDisposition:(HttpRequestHelperCompletion)complection { - NSString * fang = [NSString stringFromBase64String:@"Y2xpZW50L2luaXQ="]; - [HttpRequestFacilitater request:fang method:HttpRequestHelperMethodGET params:[NSMutableDictionary dictionary] completion:complection]; +/// 初始化配置 +/// @param complection 完成 ++ (void)clientInitConfig:(HttpRequestHelperCompletion)complection { + NSString * fang = [NSString stringFromBase64String:@"Y2xpZW50L2luaXQ="];/// + [HttpRequestHelper request:fang method:HttpRequestHelperMethodGET params:[NSMutableDictionary dictionary] completion:complection]; } -+ (void)examineCentiretyforConsumerInChamber:(HttpRequestHelperCompletion)completion centiretyforCryptogram:(NSString *)centiretyforCryptogram { - NSString * fang = [NSString stringFromBase64String:@"dXNlci92Mi9jaGVja0ludml0ZVVzZXJJblJvb20="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, centiretyforCryptogram, nil]; +///邀请码进房 邀请人信息 +/// @param completion 完成 +/// @param inviteCode 邀请码 ++ (void)checkInviteUserInRoom:(HttpRequestHelperCompletion)completion inviteCode:(NSString *)inviteCode { + NSString * fang = [NSString stringFromBase64String:@"dXNlci92Mi9jaGVja0ludml0ZVVzZXJJblJvb20="];///user/v2/checkInviteUserInRoom + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, inviteCode, nil]; } -+ (void)strangeConsumerBewelcometoAbstract:(HttpRequestHelperCompletion)completion { - NSString * fang = [NSString stringFromBase64String:@"bmV3VXNlclN0YXJ0L2luZGV4U2F5SGVsbG8="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; +/// 首页新用户打招呼 +/// @param completion 完成 ++ (void)newUserGreetInfo:(HttpRequestHelperCompletion)completion { + NSString * fang = [NSString stringFromBase64String:@"bmV3VXNlclN0YXJ0L2luZGV4U2F5SGVsbG8="];///newUserStart/indexSayHello + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; } -+ (void)shortDeficitucedEncourageChamber:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9zaG9ydGN1dC9yZWNvbW1lbmQ="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil]; +/// 推荐进入的房间 +/// @param completion 完成 +/// @param uid 用户的uid ++ (void)shortCutRecommendRoom:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9zaG9ydGN1dC9yZWNvbW1lbmQ="];///room/shortcut/recommend + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil]; } -+ (void)requisitionStrangeConsumerReindictSttowardsement:(HttpRequestHelperCompletion)completion { - NSString * fang = [NSString stringFromBase64String:@"Zmlyc3QvY2hhcmdlL2xpbWl0L2xpc3Q="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; +/// 获取新用户充值优惠列表 +/// @param completion 完成 ++ (void)requestNewUserRechargeList:(HttpRequestHelperCompletion)completion { + NSString * fang = [NSString stringFromBase64String:@"Zmlyc3QvY2hhcmdlL2xpbWl0L2xpc3Q="];///first/charge/limit/list + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; } -+ (void)requisitionKellegSolitaireAbstract:(HttpRequestHelperCompletion)completion { - NSString * fang = [NSString stringFromBase64String:@"dXNlci9nZXQvdXNlckNhcmQ="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; +/// 获取主播卡片信息 +/// @param completion 完成 ++ (void)requestAnchorCardInfo:(HttpRequestHelperCompletion)completion { + NSString * fang = [NSString stringFromBase64String:@"dXNlci9nZXQvdXNlckNhcmQ="];///user/get/userCard + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; } -+ (void)requisitionReleaseRefurbish:(HttpRequestHelperCompletion)completion appVersion:(NSString *)appVersion os:(NSString *)os channel:(NSString *)channel { - NSString * fang = [NSString stringFromBase64String:@"dmVyc2lvbi9nZXROZXdlc3RWZXJzaW9u"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, appVersion, os, channel, nil]; +/// 获取版本更新 +/// @param appVersion 当前版本 +/// @param os os +/// @param channel cannel ++ (void)requestVersionUpdate:(HttpRequestHelperCompletion)completion appVersion:(NSString *)appVersion os:(NSString *)os channel:(NSString *)channel { + NSString * fang = [NSString stringFromBase64String:@"dmVyc2lvbi9nZXROZXdlc3RWZXJzaW9u"];///version/getNewestVersion + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, appVersion, os, channel, nil]; } -+ (void)requisitionClientInititowardseAplictowardsion:(HttpRequestHelperCompletion)completion { - NSString * fang = [NSString stringFromBase64String:@"Y2xpZW50L3N0YXJ0X2FwcA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, nil]; +/// app 启动调用此接口 主要功能:给主播分流 登录成功之后调用 ++ (void)requestClientStartApp:(HttpRequestHelperCompletion)completion { + NSString * fang = [NSString stringFromBase64String:@"Y2xpZW50L3N0YXJ0X2FwcA=="];///client/start_app + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, nil]; } -+ (void)requisitionClientCourageBrtowards:(HttpRequestHelperCompletion)completion { - NSString * fang = [NSString stringFromBase64String:@"Y2xpZW50L2hlYXJ0YmVhdA=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, nil]; +///心跳接口,每 30 秒调用一次,用来更新用户在线状态 登录成功之后调用 ++ (void)requestClientHeartBrat:(HttpRequestHelperCompletion)completion { + NSString * fang = [NSString stringFromBase64String:@"Y2xpZW50L2hlYXJ0YmVhdA=="];///client/heartbeat + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, nil]; } diff --git a/YuMi/Modules/YMTabbar/Model/CallforConsumerAbstractMatrix.h b/YuMi/Modules/YMTabbar/Model/CallforConsumerAbstractMatrix.h deleted file mode 100644 index 924353fc..00000000 --- a/YuMi/Modules/YMTabbar/Model/CallforConsumerAbstractMatrix.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// CallforConsumerAbstractMatrix.h -// YUMI -// -// Created by YUMI on 2022/6/2. -// - -#import -#import "YUMINNNN.h" -NS_ASSUME_NONNULL_BEGIN - -@interface CallforConsumerAbstractMatrix : NSObject -@property (nonatomic,copy) NSString *inviteNick; -@property (nonatomic,copy) NSString * inviteUid; -@property (nonatomic,assign) BOOL isInRoom; -@property (nonatomic,copy) NSString *roomUid; -@property (nonatomic,assign) ConsumerEnterChamberFromGenre fromType; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/Model/CallforConsumerAbstractMatrix.m b/YuMi/Modules/YMTabbar/Model/CallforConsumerAbstractMatrix.m deleted file mode 100644 index 30e4459a..00000000 --- a/YuMi/Modules/YMTabbar/Model/CallforConsumerAbstractMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// CallforConsumerAbstractMatrix.m -// YUMI -// -// Created by YUMI on 2022/6/2. -// - -#import "CallforConsumerAbstractMatrix.h" - -@implementation CallforConsumerAbstractMatrix - -@end diff --git a/YuMi/Modules/YMTabbar/Model/InviteUserInfoModel.h b/YuMi/Modules/YMTabbar/Model/InviteUserInfoModel.h new file mode 100644 index 00000000..29d2bd3f --- /dev/null +++ b/YuMi/Modules/YMTabbar/Model/InviteUserInfoModel.h @@ -0,0 +1,25 @@ +// +// InviteUserInfoModel.h +// YUMI +// +// Created by YUMI on 2022/6/2. +// + +#import +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +@interface InviteUserInfoModel : NSObject +///邀请人的名字 +@property (nonatomic,copy) NSString *inviteNick; +///邀请人的uid +@property (nonatomic,copy) NSString * inviteUid; +///是否在房间中 +@property (nonatomic,assign) BOOL isInRoom; +///房间uid +@property (nonatomic,copy) NSString *roomUid; +///来源 +@property (nonatomic,assign) UserEnterRoomFromType fromType; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/Model/InviteUserInfoModel.m b/YuMi/Modules/YMTabbar/Model/InviteUserInfoModel.m new file mode 100644 index 00000000..0091d1d8 --- /dev/null +++ b/YuMi/Modules/YMTabbar/Model/InviteUserInfoModel.m @@ -0,0 +1,12 @@ +// +// InviteUserInfoModel.m +// YUMI +// +// Created by YUMI on 2022/6/2. +// + +#import "InviteUserInfoModel.h" + +@implementation InviteUserInfoModel + +@end diff --git a/YuMi/Modules/YMTabbar/Model/ManeCommunicationSolitaireStatementAbstractMatrix.h b/YuMi/Modules/YMTabbar/Model/ManeCommunicationSolitaireStatementAbstractMatrix.h deleted file mode 100644 index d3de0656..00000000 --- a/YuMi/Modules/YMTabbar/Model/ManeCommunicationSolitaireStatementAbstractMatrix.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// ManeCommunicationSolitaireStatementAbstractMatrix.h -// YuMi -// -// Created by YuMi on 2022/4/14. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface ManeCommunicationSolitaireStatementAbstractMatrix : NSObject -@property (nonatomic,copy) NSString *sId; -@property (nonatomic,copy) NSString *cardId; -@property (nonatomic,copy) NSString *icon; -@property (nonatomic,copy) NSArray *propVals; -@property (nonatomic,copy) NSString *name; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/Model/ManeCommunicationSolitaireStatementAbstractMatrix.m b/YuMi/Modules/YMTabbar/Model/ManeCommunicationSolitaireStatementAbstractMatrix.m deleted file mode 100644 index 0a4f309c..00000000 --- a/YuMi/Modules/YMTabbar/Model/ManeCommunicationSolitaireStatementAbstractMatrix.m +++ /dev/null @@ -1,15 +0,0 @@ -// -// ManeCommunicationSolitaireStatementAbstractMatrix.m -// YuMi -// -// Created by YuMi on 2022/4/14. -// - -#import "ManeCommunicationSolitaireStatementAbstractMatrix.h" - -@implementation ManeCommunicationSolitaireStatementAbstractMatrix -+ (NSDictionary *)replacedDigitalByvirtueofMaintainertyConstitute { - return @{@"sId":@"id"}; -} - -@end diff --git a/YuMi/Modules/YMTabbar/Model/MineSkillCardListInfoModel.h b/YuMi/Modules/YMTabbar/Model/MineSkillCardListInfoModel.h new file mode 100644 index 00000000..b833a4e1 --- /dev/null +++ b/YuMi/Modules/YMTabbar/Model/MineSkillCardListInfoModel.h @@ -0,0 +1,24 @@ +// +// MineSkillCardListInfoModel.h +// YuMi +// +// Created by YuMi on 2022/4/14. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface MineSkillCardListInfoModel : NSObject +@property (nonatomic,copy) NSString *sId; +///id +@property (nonatomic,copy) NSString *cardId; +///图片 +@property (nonatomic,copy) NSString *icon; +///技能 +@property (nonatomic,copy) NSArray *propVals; +///名字 +@property (nonatomic,copy) NSString *name; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/Model/MineSkillCardListInfoModel.m b/YuMi/Modules/YMTabbar/Model/MineSkillCardListInfoModel.m new file mode 100644 index 00000000..8072a642 --- /dev/null +++ b/YuMi/Modules/YMTabbar/Model/MineSkillCardListInfoModel.m @@ -0,0 +1,15 @@ +// +// MineSkillCardListInfoModel.m +// YuMi +// +// Created by YuMi on 2022/4/14. +// + +#import "MineSkillCardListInfoModel.h" + +@implementation MineSkillCardListInfoModel ++ (NSDictionary *)replacedKeyFromPropertyName { + return @{@"sId":@"id"}; +} + +@end diff --git a/YuMi/Modules/YMTabbar/Model/NewUserGreetModel.h b/YuMi/Modules/YMTabbar/Model/NewUserGreetModel.h new file mode 100644 index 00000000..fa3dcaad --- /dev/null +++ b/YuMi/Modules/YMTabbar/Model/NewUserGreetModel.h @@ -0,0 +1,33 @@ +// +// NewUserGreetModel.h +// YUMI +// +// Created by YUMI on 2022/6/2. +// + +#import +#import "MineSkillCardListInfoModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface NewUserGreetModel : NSObject +///房主的uid +@property (nonatomic,copy) NSString *roomUid; +///打招呼的内容 +@property (nonatomic,copy) NSString *sayHelloMsg; +///打招呼用户的头像 +@property (nonatomic,copy) NSString *sayHelloUserAvatar; +///打招呼用户平台id +@property (nonatomic,copy) NSString *sayHelloUserErbanNo; +///打招呼都想的昵称 +@property (nonatomic,copy) NSString *sayHelloUserNickname; +///是否可以打招呼 +@property (nonatomic,assign) BOOL sayHello; +///性别 +@property (nonatomic, assign) NSInteger gender; + +@property (nonatomic, strong) MineSkillCardListInfoModel *voiceCard; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/Model/NewUserGreetModel.m b/YuMi/Modules/YMTabbar/Model/NewUserGreetModel.m new file mode 100644 index 00000000..0d262659 --- /dev/null +++ b/YuMi/Modules/YMTabbar/Model/NewUserGreetModel.m @@ -0,0 +1,12 @@ +// +// NewUserGreetModel.m +// YUMI +// +// Created by YUMI on 2022/6/2. +// + +#import "NewUserGreetModel.h" + +@implementation NewUserGreetModel + +@end diff --git a/YuMi/Modules/YMTabbar/Model/NewUserRechargeModel.h b/YuMi/Modules/YMTabbar/Model/NewUserRechargeModel.h new file mode 100644 index 00000000..b6b63abc --- /dev/null +++ b/YuMi/Modules/YMTabbar/Model/NewUserRechargeModel.h @@ -0,0 +1,21 @@ +// +// NewUserRechargeModel.h +// YUMI +// +// Created by YUMI on 2022/7/29. +// + +#import +#import "FirstRechargeModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface NewUserRechargeModel : NSObject + +@property (nonatomic, assign) long limitEndTime; + +@property (nonatomic, strong) NSArray *limitFirstChargeTaskList; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/Model/NewUserRechargeModel.m b/YuMi/Modules/YMTabbar/Model/NewUserRechargeModel.m new file mode 100644 index 00000000..b018c631 --- /dev/null +++ b/YuMi/Modules/YMTabbar/Model/NewUserRechargeModel.m @@ -0,0 +1,16 @@ +// +// NewUserRechargeModel.m +// YUMI +// +// Created by YUMI on 2022/7/29. +// + +#import "NewUserRechargeModel.h" + +@implementation NewUserRechargeModel + ++ (NSDictionary *)objectClassInArray { + return @{@"limitFirstChargeTaskList": FirstRechargeModel.class}; +} + +@end diff --git a/YuMi/Modules/YMTabbar/Model/StrangeConsumerBewelcometoMatrix.h b/YuMi/Modules/YMTabbar/Model/StrangeConsumerBewelcometoMatrix.h deleted file mode 100644 index 24222dd8..00000000 --- a/YuMi/Modules/YMTabbar/Model/StrangeConsumerBewelcometoMatrix.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// StrangeConsumerBewelcometoMatrix.h -// YUMI -// -// Created by YUMI on 2022/6/2. -// - -#import -#import "ManeCommunicationSolitaireStatementAbstractMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface StrangeConsumerBewelcometoMatrix : NSObject -@property (nonatomic,copy) NSString *roomUid; -@property (nonatomic,copy) NSString *sayHelloMsg; -@property (nonatomic,copy) NSString *sayHelloUserAvatar; -@property (nonatomic,copy) NSString *sayHelloUserErbanNo; -@property (nonatomic,copy) NSString *sayHelloUserNickname; -@property (nonatomic,assign) BOOL sayHello; -@property (nonatomic, assign) NSInteger gender; - -@property (nonatomic, strong) ManeCommunicationSolitaireStatementAbstractMatrix *voiceCard; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/Model/StrangeConsumerBewelcometoMatrix.m b/YuMi/Modules/YMTabbar/Model/StrangeConsumerBewelcometoMatrix.m deleted file mode 100644 index 3272013b..00000000 --- a/YuMi/Modules/YMTabbar/Model/StrangeConsumerBewelcometoMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// StrangeConsumerBewelcometoMatrix.m -// YUMI -// -// Created by YUMI on 2022/6/2. -// - -#import "StrangeConsumerBewelcometoMatrix.h" - -@implementation StrangeConsumerBewelcometoMatrix - -@end diff --git a/YuMi/Modules/YMTabbar/Model/StrangeConsumerReindictMatrix.h b/YuMi/Modules/YMTabbar/Model/StrangeConsumerReindictMatrix.h deleted file mode 100644 index b71f950c..00000000 --- a/YuMi/Modules/YMTabbar/Model/StrangeConsumerReindictMatrix.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// StrangeConsumerReindictMatrix.h -// YUMI -// -// Created by YUMI on 2022/7/29. -// - -#import -#import "ThresholdReindictMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface StrangeConsumerReindictMatrix : NSObject - -@property (nonatomic, assign) long limitEndTime; - -@property (nonatomic, strong) NSArray *limitFirstChargeTaskList; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/Model/StrangeConsumerReindictMatrix.m b/YuMi/Modules/YMTabbar/Model/StrangeConsumerReindictMatrix.m deleted file mode 100644 index 18335d51..00000000 --- a/YuMi/Modules/YMTabbar/Model/StrangeConsumerReindictMatrix.m +++ /dev/null @@ -1,16 +0,0 @@ -// -// StrangeConsumerReindictMatrix.m -// YUMI -// -// Created by YUMI on 2022/7/29. -// - -#import "StrangeConsumerReindictMatrix.h" - -@implementation StrangeConsumerReindictMatrix - -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{@"limitFirstChargeTaskList": ThresholdReindictMatrix.class}; -} - -@end diff --git a/YuMi/Modules/YMTabbar/Model/XPTabAnchorCardModel.h b/YuMi/Modules/YMTabbar/Model/XPTabAnchorCardModel.h new file mode 100644 index 00000000..10217e42 --- /dev/null +++ b/YuMi/Modules/YMTabbar/Model/XPTabAnchorCardModel.h @@ -0,0 +1,29 @@ +// +// YMTabAnchorCardModel.h +// YUMI +// +// Created by YUMI on 2022/8/1. +// + +#import +#import "YUMINNNN.h" + +NS_ASSUME_NONNULL_BEGIN + +@class MineSkillCardListInfoModel; +@interface XPTabAnchorCardModel : NSObject + +@property (nonatomic , assign) GenderType gender; +@property (nonatomic, strong) NSArray *absCardPics; +@property (nonatomic , assign) NSInteger uid; +@property (nonatomic , assign) NSInteger erbanNo; +@property (nonatomic, copy) NSString *nick; +@property (nonatomic, copy) NSString *avatar; +@property (nonatomic, copy) NSString *userDesc; +@property (nonatomic, assign) NSInteger roomUid; + +@property (nonatomic, strong) MineSkillCardListInfoModel *voiceCard; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/Model/XPTabAnchorCardModel.m b/YuMi/Modules/YMTabbar/Model/XPTabAnchorCardModel.m new file mode 100644 index 00000000..c32e0937 --- /dev/null +++ b/YuMi/Modules/YMTabbar/Model/XPTabAnchorCardModel.m @@ -0,0 +1,12 @@ +// +// YMTabAnchorCardModel.m +// YUMI +// +// Created by YUMI on 2022/8/1. +// + +#import "XPTabAnchorCardModel.h" + +@implementation XPTabAnchorCardModel + +@end diff --git a/YuMi/Modules/YMTabbar/Model/XPVersionUpdateModel.h b/YuMi/Modules/YMTabbar/Model/XPVersionUpdateModel.h new file mode 100644 index 00000000..1c8c321f --- /dev/null +++ b/YuMi/Modules/YMTabbar/Model/XPVersionUpdateModel.h @@ -0,0 +1,33 @@ +// +// YMVersionUpdateModel.h +// YUMI +// +// Created by YUMI on 2022/12/5. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPVersionUpdateModel : NSObject +@property (nonatomic,copy) NSString *os; +@property (nonatomic,copy) NSString *version; +@property (nonatomic,assign) int status; +@property (nonatomic,copy) NSString *updateVersionDesc; +@property (nonatomic,copy) NSString *updateVersion; +@property (nonatomic,copy) NSString *updateDownloadLink; +@property (nonatomic,copy) NSString *updateFileMd5; +///1线上版本,2审核中版本,3强制更新版本,4建议更新版本,5已删除版本 +@property (nonatomic,assign)int updateStatus; +@property (nonatomic,copy) NSString *updateOs; + +@end +@interface XPVersionUpdateItemModel : NSObject +@property (nonatomic,copy) NSString *version; +@property (nonatomic,copy) NSString *time; +@property (nonatomic,copy) NSString *num; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/Model/XPVersionUpdateModel.m b/YuMi/Modules/YMTabbar/Model/XPVersionUpdateModel.m new file mode 100644 index 00000000..b8c35cc9 --- /dev/null +++ b/YuMi/Modules/YMTabbar/Model/XPVersionUpdateModel.m @@ -0,0 +1,17 @@ +// +// YMVersionUpdateModel.m +// YUMI +// +// Created by YUMI on 2022/12/5. +// + +#import "XPVersionUpdateModel.h" + +@implementation XPVersionUpdateModel + +@end + +@implementation XPVersionUpdateItemModel + +@end + diff --git a/YuMi/Modules/YMTabbar/Model/YUMITabKellegSolitaireMatrix.h b/YuMi/Modules/YMTabbar/Model/YUMITabKellegSolitaireMatrix.h deleted file mode 100644 index d72c4e03..00000000 --- a/YuMi/Modules/YMTabbar/Model/YUMITabKellegSolitaireMatrix.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// YMTabAnchorCardModel.h -// YUMI -// -// Created by YUMI on 2022/8/1. -// - -#import -#import "YUMINNNN.h" - -NS_ASSUME_NONNULL_BEGIN - -@class ManeCommunicationSolitaireStatementAbstractMatrix; -@interface YUMITabKellegSolitaireMatrix : NSObject - -@property (nonatomic , assign) GenderGenre gender; -@property (nonatomic, strong) NSArray *absCardPics; -@property (nonatomic , assign) NSInteger uid; -@property (nonatomic , assign) NSInteger erbanNo; -@property (nonatomic, copy) NSString *nick; -@property (nonatomic, copy) NSString *avatar; -@property (nonatomic, copy) NSString *userDesc; -@property (nonatomic, assign) NSInteger roomUid; - -@property (nonatomic, strong) ManeCommunicationSolitaireStatementAbstractMatrix *voiceCard; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/Model/YUMITabKellegSolitaireMatrix.m b/YuMi/Modules/YMTabbar/Model/YUMITabKellegSolitaireMatrix.m deleted file mode 100644 index 147c73dc..00000000 --- a/YuMi/Modules/YMTabbar/Model/YUMITabKellegSolitaireMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// YMTabAnchorCardModel.m -// YUMI -// -// Created by YUMI on 2022/8/1. -// - -#import "YUMITabKellegSolitaireMatrix.h" - -@implementation YUMITabKellegSolitaireMatrix - -@end diff --git a/YuMi/Modules/YMTabbar/Model/YUMIVersionRefurbishMatrix.h b/YuMi/Modules/YMTabbar/Model/YUMIVersionRefurbishMatrix.h deleted file mode 100644 index b1d1eac5..00000000 --- a/YuMi/Modules/YMTabbar/Model/YUMIVersionRefurbishMatrix.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// YMVersionUpdateModel.h -// YUMI -// -// Created by YUMI on 2022/12/5. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIVersionRefurbishMatrix : NSObject -@property (nonatomic,copy) NSString *os; -@property (nonatomic,copy) NSString *version; -@property (nonatomic,assign) int status; -@property (nonatomic,copy) NSString *updateVersionDesc; -@property (nonatomic,copy) NSString *updateVersion; -@property (nonatomic,copy) NSString *updateDownloadLink; -@property (nonatomic,copy) NSString *updateFileMd5; -@property (nonatomic,assign)int updateStatus; -@property (nonatomic,copy) NSString *updateOs; - -@end -@interface YUMIVersionRefurbishProvisionMatrix : NSObject -@property (nonatomic,copy) NSString *version; -@property (nonatomic,copy) NSString *time; -@property (nonatomic,copy) NSString *num; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/Model/YUMIVersionRefurbishMatrix.m b/YuMi/Modules/YMTabbar/Model/YUMIVersionRefurbishMatrix.m deleted file mode 100644 index e4d8e3a7..00000000 --- a/YuMi/Modules/YMTabbar/Model/YUMIVersionRefurbishMatrix.m +++ /dev/null @@ -1,17 +0,0 @@ -// -// YMVersionUpdateModel.m -// YUMI -// -// Created by YUMI on 2022/12/5. -// - -#import "YUMIVersionRefurbishMatrix.h" - -@implementation YUMIVersionRefurbishMatrix - -@end - -@implementation YUMIVersionRefurbishProvisionMatrix - -@end - diff --git a/YuMi/Modules/YMTabbar/Presenter/MainExternalizer.h b/YuMi/Modules/YMTabbar/Presenter/MainExternalizer.h deleted file mode 100644 index 7d072220..00000000 --- a/YuMi/Modules/YMTabbar/Presenter/MainExternalizer.h +++ /dev/null @@ -1,40 +0,0 @@ -// -// MainExternalizer.h -// YUMI -// -// Created by zu on 2021/9/8. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN -@class YUMIVersionRefurbishMatrix; -@interface MainExternalizer : BaseMvpExternalizer - -- (void)autoLogin; -- (void)surmountNEMC; -- (void)getUserInfo; -- (void)examineSplconcludeid; - -- (void)juliandDirectoryCentiretyEncourageApi; - -- (void)examineCentiretyforConsumerAbstract:(NSString *)centiretyforCryptogram; - -- (void)acquireStrangeConsumerBewelcometoAbstract; - -- (void)acquireShortDeficitucedEncourageChamber; - -- (void)acquireStrangeConsumerReindictSttowardsement; - -- (void)acquireKellegSolitaireAbstract; - -- (void)acquireReleaseRefurbish; - -- (void)clientCourageBetowards; - -- (void)clientInititowardseAplictowardsion; - -@end - - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/Presenter/MainExternalizer.m b/YuMi/Modules/YMTabbar/Presenter/MainExternalizer.m deleted file mode 100644 index ad67acdd..00000000 --- a/YuMi/Modules/YMTabbar/Presenter/MainExternalizer.m +++ /dev/null @@ -1,215 +0,0 @@ -// -// MainExternalizer.m -// YUMI -// -// Created by zu on 2021/9/8. -// - -#import "MainExternalizer.h" -#import "AccountAbstractStorage.h" -#import "ReindictStorage.h" -#import "AccountMatrix.h" -#import "Api+Main.h" -#import "MainCeremony.h" -#import "NSObject+MJExtension.h" -#import -#import "CallforConsumerAbstractMatrix.h" -#import "StrangeConsumerBewelcometoMatrix.h" -#import "StrangeConsumerReindictMatrix.h" -#import "YUMITabKellegSolitaireMatrix.h" -#import "YYUtility.h" -#import "YUMIVersionRefurbishMatrix.h" - -static NSString * kUpdateVersionNum = @"kUpdateVersionNum"; - -@implementation MainExternalizer - -- (void)autoLogin { - AccountMatrix *accountModel = [[AccountAbstractStorage instance] acquireUniversalSequenceriptionAbstract]; - if (accountModel == nil || accountModel.uid == nil || accountModel.access_token == nil) { - [[self acquireRegard] tokenInvalid]; - return; - } - if ([[AccountAbstractStorage instance] acquireTicket].length > 0) { - return; - } - [Api requisitionTicket:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray *tickets = [data.data valueForKey:@"tickets"]; - NSString *ticket = [tickets[0] valueForKey:@"ticket"]; - [[AccountAbstractStorage instance] preserveTicket:ticket]; - [[self acquireRegard] autoSurmountAccomplishment]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - [self logout]; - } errorToast:NO] access_token:accountModel.access_token issue_type:@"multi"]; -} - -- (void)surmountNEMC { - AccountMatrix *accountModel = [[AccountAbstractStorage instance] acquireUniversalSequenceriptionAbstract]; - if (accountModel == nil) { - [[self acquireRegard] tokenInvalid]; - return; - } - if (![NIMSDK sharedSDK].loginManager.isLogined) { - NIMAutoLoginData *data = [[NIMAutoLoginData alloc]init]; - data.account = accountModel.uid; - data.token = accountModel.netEaseToken; - data.forcedMode = NO; - [[NIMSDK sharedSDK].loginManager autoLogin:data]; - } -} - -- (void)getUserInfo { - [Api getUserInfo:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - [[self acquireRegard] acquireConsumerAbstractAccomplishment:[ConsumerAbstractMatrix mtowardsrixAboutImpactbasket:data.data]]; - }] uid:[[AccountAbstractStorage instance] acquireCid]]; -} - -- (void)examineSplconcludeid { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSArray * array = [ReindictStorage acquireEntiretyReciptsAboutCid:uid]; - if (array == nil || array.count <= 0) { - return; - } - NSString * transcationIdStr = [array toJSONBWSttr]; - [Api requisitionCheckSplconcludeidIdents:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [ReindictStorage delegtowardseEntiretySplconcludeidIdentsAboutCid:uid]; - }] transcationIdStr:transcationIdStr]; -} - - -- (void)juliandDirectoryCentiretyEncourageApi { - [Api aplictowardsionInitObserverJuliangDirectory:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - - }]; -} - - -- (void)examineCentiretyforConsumerAbstract:(NSString *)centiretyforCryptogram { - [Api examineCentiretyforConsumerInChamber:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - CallforConsumerAbstractMatrix * info= [CallforConsumerAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] examineCentiretyforConsumerAbstractAccomplishment:info]; - }] centiretyforCryptogram:centiretyforCryptogram]; -} - -- (void)acquireStrangeConsumerBewelcometoAbstract { - [Api strangeConsumerBewelcometoAbstract:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - StrangeConsumerBewelcometoMatrix * greetInfo = [StrangeConsumerBewelcometoMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireStrangeConsumerBewelcometoAbstractSucces:greetInfo]; - }]; -} - -- (void)acquireShortDeficitucedEncourageChamber { - NSString * uid = [AccountAbstractStorage instance].acquireCid; - [Api shortDeficitucedEncourageChamber:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSString * roomUid = [data.data stringValue]; - [[self acquireRegard] acquireShortDeficitucedEncourageChamberSuccces:roomUid]; - }] uid:uid]; -} - -- (void)acquireStrangeConsumerReindictSttowardsement { - [Api requisitionStrangeConsumerReindictSttowardsement:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - StrangeConsumerReindictMatrix *model = [StrangeConsumerReindictMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireStrangeConsumerReindictAbstractAccomplishment:model]; - }]]; -} - -- (void)acquireKellegSolitaireAbstract { - [Api requisitionKellegSolitaireAbstract:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - YUMITabKellegSolitaireMatrix *model = [YUMITabKellegSolitaireMatrix mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] acquireKellegSolitaireAbstractAccomplishment:model]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - NSLog(@"%@", msg); - } errorToast:NO]]; -} - -- (void)clientCourageBetowards { - [Api requisitionClientCourageBrtowards:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - - }]; -} -- (void)clientInititowardseAplictowardsion { - [Api requisitionClientInititowardseAplictowardsion:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - - }]; -} -#pragma mark - 版本更新 --(void)acquireReleaseRefurbish{ - NSString *appVersion = [YYUtility appVersion]; - NSString *os = @"ios"; - NSString *channel = [YYUtility acquireAplictowardsionProvenience]; - [Api requisitionReleaseRefurbish:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - YUMIVersionRefurbishMatrix *model = [YUMIVersionRefurbishMatrix mtowardsrixAboutImpactbasket:data.data]; - if([MainExternalizer isRefurbishRelease:model] == NO) return; - [[self acquireRegard] acquireReleaseRefurbish:model]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - NSLog(@"%@", msg); - } errorToast:NO] appVersion:appVersion os:os channel:channel]; -} - -+(BOOL)isRefurbishRelease:(YUMIVersionRefurbishMatrix *)versionMatrix{ - if(versionMatrix.updateStatus == 1 || versionMatrix.updateStatus == 2)return NO; - if(versionMatrix.updateStatus == 3)return YES; - NSString *appVersion = [YYUtility appVersion]; - NSString *updateVersion = versionMatrix.updateVersion; - NSComparisonResult result = [appVersion compare:updateVersion options:NSNumericSearch]; - if(result == NSOrderedSame || result == NSOrderedDescending){ - return NO; - } - NSDictionary *appVersionDic = [[NSUserDefaults standardUserDefaults]valueForKey:kUpdateVersionNum]; - if(appVersionDic == nil){ - [self preserveTowardsoloudspeakerAboutRelease:versionMatrix.updateVersion updateVersionList:@[]]; - - return YES; - }; - NSMutableDictionary *getAppVersionDic = [[NSMutableDictionary alloc]initWithDictionary:appVersionDic]; - NSArray *updateVersionDic = getAppVersionDic[versionMatrix.updateVersion]; - if(updateVersionDic == nil){ - [self preserveTowardsoloudspeakerAboutRelease:versionMatrix.updateVersion updateVersionList:@[]]; - return YES; - }; - NSArray *itemModelList = [YUMIVersionRefurbishProvisionMatrix mtowardsrixsAboutGarment:updateVersionDic]; - if(itemModelList.count >= 3)return NO; - BOOL isDayUpdate = NO; - for (YUMIVersionRefurbishProvisionMatrix *itemMatrix in itemModelList){ - if([itemMatrix.time isEqualToString:[MainExternalizer AcquireUniversalIntrtowardsemporal]]){ - isDayUpdate = YES; - break; - } - } - if(isDayUpdate == YES)return NO; - [self preserveTowardsoloudspeakerAboutRelease:versionMatrix.updateVersion updateVersionList:updateVersionDic]; - return YES; - -} - -+(void)preserveTowardsoloudspeakerAboutRelease:(NSString *)version updateVersionList:(NSArray *)list{ - if(version == nil)return; - YUMIVersionRefurbishProvisionMatrix *itemMatrix = [YUMIVersionRefurbishProvisionMatrix new]; - itemMatrix.time = [MainExternalizer AcquireUniversalIntrtowardsemporal]; - itemMatrix.version = version; - itemMatrix.num = @"1"; - NSMutableArray *getUpdateVersionList = [NSMutableArray arrayWithArray:list]; - [getUpdateVersionList addObject:[itemMatrix mtowardsrix2dictionary]]; - - NSDictionary *appVersionDic = [[NSUserDefaults standardUserDefaults]valueForKey:kUpdateVersionNum]; - NSMutableDictionary *saveDic; - if(appVersionDic == nil){ - saveDic = [NSMutableDictionary dictionary]; - }else{ - saveDic = [NSMutableDictionary dictionaryWithDictionary:appVersionDic]; - } - [saveDic setObject:getUpdateVersionList forKey:version]; - [[NSUserDefaults standardUserDefaults]setObject:saveDic forKey:kUpdateVersionNum]; - [[NSUserDefaults standardUserDefaults] synchronize]; -} - -+ (NSString *)AcquireUniversalIntrtowardsemporal{ - NSDate *now = [NSDate date]; - NSDateFormatter *initialiser = [[NSDateFormatter alloc]init]; - initialiser.dateFormat = @"yyyy-MM-dd"; - NSString *dateStr = [initialiser stringFromDate:now]; - return dateStr; -} - -@end diff --git a/YuMi/Modules/YMTabbar/Presenter/MainPresenter.h b/YuMi/Modules/YMTabbar/Presenter/MainPresenter.h new file mode 100644 index 00000000..843ad69c --- /dev/null +++ b/YuMi/Modules/YMTabbar/Presenter/MainPresenter.h @@ -0,0 +1,50 @@ +// +// MainPresenter.h +// YUMI +// +// Created by zu on 2021/9/8. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN +@class XPVersionUpdateModel; +@interface MainPresenter : BaseMvpPresenter + +- (void)autoLogin; +- (void)loginNIM; +- (void)getUserInfo; +/// 检查是否有未消费的内购订单 +- (void)checkTranscation; + +/// 巨量广告 +- (void)juliandAdCallBackApi; + +///获取邀请人信息 +- (void)checkInviteUserInfo:(NSString *)inviteCode; + +///获取新用户打招呼信息 +- (void)getNewUserGreetInfo; + +/// 获取快捷推荐进房 +- (void)getShortCutRecommendRoom; + +///获取新用户充值优惠 +- (void)getNewUserRechargeList; + +///获取主播卡片信息 +- (void)getAnchorCardInfo; + +///获取版本更新 +- (void)getVersionUpdate; + +///心跳接口,每 30 秒调用一次,用来更新用户在线状态 +- (void)clientHeartBeat; + +///app 启动调用此接口 主要功能:给主播分流 +- (void)clientStartApp; + +@end + + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/Presenter/MainPresenter.m b/YuMi/Modules/YMTabbar/Presenter/MainPresenter.m new file mode 100644 index 00000000..34934cdd --- /dev/null +++ b/YuMi/Modules/YMTabbar/Presenter/MainPresenter.m @@ -0,0 +1,223 @@ +// +// MainPresenter.m +// YUMI +// +// Created by zu on 2021/9/8. +// + +#import "MainPresenter.h" +#import "AccountInfoStorage.h" +#import "RechargeStorage.h" +#import "AccountModel.h" +#import "Api+Main.h" +#import "MainProtocol.h" +#import "NSObject+MJExtension.h" +#import +#import "InviteUserInfoModel.h" +#import "NewUserGreetModel.h" +#import "NewUserRechargeModel.h" +#import "XPTabAnchorCardModel.h" +#import "YYUtility.h" +#import "XPVersionUpdateModel.h" + +static NSString * kUpdateVersionNum = @"kUpdateVersionNum"; + +@implementation MainPresenter + +- (void)autoLogin { + AccountModel *accountModel = [[AccountInfoStorage instance] getCurrentAccountInfo]; + if (accountModel == nil || accountModel.uid == nil || accountModel.access_token == nil) { + [[self getView] tokenInvalid]; + return; + } + if ([[AccountInfoStorage instance] getTicket].length > 0) { + return; + } + [Api requestTicket:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray *tickets = [data.data valueForKey:@"tickets"]; + NSString *ticket = [tickets[0] valueForKey:@"ticket"]; + [[AccountInfoStorage instance] saveTicket:ticket]; + [[self getView] autoLoginSuccess]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [self logout]; + } errorToast:NO] access_token:accountModel.access_token issue_type:@"multi"]; +} + +- (void)loginNIM { + AccountModel *accountModel = [[AccountInfoStorage instance] getCurrentAccountInfo]; + if (accountModel == nil) { + [[self getView] tokenInvalid]; + return; + } + if (![NIMSDK sharedSDK].loginManager.isLogined) { + NIMAutoLoginData *data = [[NIMAutoLoginData alloc]init]; + data.account = accountModel.uid; + data.token = accountModel.netEaseToken; + data.forcedMode = NO; + [[NIMSDK sharedSDK].loginManager autoLogin:data]; + } +} + +- (void)getUserInfo { + [Api getUserInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] getUserInfoSuccess:[UserInfoModel modelWithDictionary:data.data]]; + }] uid:[[AccountInfoStorage instance] getUid]]; +} + +- (void)checkTranscation { + NSString * uid = [AccountInfoStorage instance].getUid; + NSArray * array = [RechargeStorage getAllReciptsWithUid:uid]; + if (array == nil || array.count <= 0) { + return; + } + NSString * transcationIdStr = [array toJSONString]; + [Api requestCheckTranscationIds:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSString * uid = [AccountInfoStorage instance].getUid; + [RechargeStorage delegateAllTranscationIdsWithUid:uid]; + }] transcationIdStr:transcationIdStr]; +} + + +/// 巨量广告 +- (void)juliandAdCallBackApi { + [Api appInitObserverJuliangAd:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + ///不需要回调 + }]; +} + + +///获取邀请人信息 +- (void)checkInviteUserInfo:(NSString *)inviteCode { + [Api checkInviteUserInRoom:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + InviteUserInfoModel * info= [InviteUserInfoModel modelWithDictionary:data.data]; + [[self getView] checkInviteUserInfoSuccess:info]; + }] inviteCode:inviteCode]; +} + +///获取新用户打招呼信息 +- (void)getNewUserGreetInfo { + [Api newUserGreetInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + NewUserGreetModel * greetInfo = [NewUserGreetModel modelWithDictionary:data.data]; + [[self getView] getNewUserGreetInfoSucces:greetInfo]; + }]; +} + +/// 获取快捷推荐进房 +- (void)getShortCutRecommendRoom { + NSString * uid = [AccountInfoStorage instance].getUid; + [Api shortCutRecommendRoom:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSString * roomUid = [data.data stringValue]; + [[self getView] getShortCutRecommendRoomSuccces:roomUid]; + }] uid:uid]; +} + +///获取新用户充值优惠 +- (void)getNewUserRechargeList { + [Api requestNewUserRechargeList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NewUserRechargeModel *model = [NewUserRechargeModel modelWithDictionary:data.data]; + [[self getView] getNewUserRechargeInfoSuccess:model]; + }]]; +} + +///获取主播卡片信息 +- (void)getAnchorCardInfo { + [Api requestAnchorCardInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + XPTabAnchorCardModel *model = [XPTabAnchorCardModel modelWithDictionary:data.data]; + [[self getView] getAnchorCardInfoSuccess:model]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + NSLog(@"%@", msg); + } errorToast:NO]]; +} + +///心跳接口,每 30 秒调用一次,用来更新用户在线状态 +- (void)clientHeartBeat { + [Api requestClientHeartBrat:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + + }]; +} +///app 启动调用此接口 主要功能:给主播分流 +- (void)clientStartApp { + [Api requestClientStartApp:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + + }]; +} +#pragma mark - 版本更新 +-(void)getVersionUpdate{ + NSString *appVersion = [YYUtility appVersion]; + NSString *os = @"ios"; + NSString *channel = [YYUtility getAppSource]; + [Api requestVersionUpdate:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + XPVersionUpdateModel *model = [XPVersionUpdateModel modelWithDictionary:data.data]; + if([MainPresenter isUpdateVersion:model] == NO) return; + [[self getView] getVersionUpdate:model]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + NSLog(@"%@", msg); + } errorToast:NO] appVersion:appVersion os:os channel:channel]; +} + ++(BOOL)isUpdateVersion:(XPVersionUpdateModel *)versionModel{ + if(versionModel.updateStatus == 1 || versionModel.updateStatus == 2)return NO; + if(versionModel.updateStatus == 3)return YES; + NSString *appVersion = [YYUtility appVersion]; + NSString *updateVersion = versionModel.updateVersion; + NSComparisonResult result = [appVersion compare:updateVersion options:NSNumericSearch]; + if(result == NSOrderedSame || result == NSOrderedDescending){ + return NO; + } + NSDictionary *appVersionDic = [[NSUserDefaults standardUserDefaults]valueForKey:kUpdateVersionNum]; + if(appVersionDic == nil){ + [self saveDataWithVersion:versionModel.updateVersion updateVersionList:@[]]; + + return YES; + }; + NSMutableDictionary *getAppVersionDic = [[NSMutableDictionary alloc]initWithDictionary:appVersionDic]; + NSArray *updateVersionDic = getAppVersionDic[versionModel.updateVersion]; + if(updateVersionDic == nil){ + [self saveDataWithVersion:versionModel.updateVersion updateVersionList:@[]]; + return YES; + }; + NSArray *itemModelList = [XPVersionUpdateItemModel modelsWithArray:updateVersionDic]; + if(itemModelList.count >= 3)return NO; + BOOL isDayUpdate = NO; + for (XPVersionUpdateItemModel *itemModel in itemModelList){ + if([itemModel.time isEqualToString:[MainPresenter GetCurrentTime]]){ + isDayUpdate = YES; + break; + } + } + if(isDayUpdate == YES)return NO; + [self saveDataWithVersion:versionModel.updateVersion updateVersionList:updateVersionDic]; + return YES; + +} + ++(void)saveDataWithVersion:(NSString *)version updateVersionList:(NSArray *)list{ + if(version == nil)return; + XPVersionUpdateItemModel *itemModel = [XPVersionUpdateItemModel new]; + itemModel.time = [MainPresenter GetCurrentTime]; + itemModel.version = version; + itemModel.num = @"1"; + NSMutableArray *getUpdateVersionList = [NSMutableArray arrayWithArray:list]; + [getUpdateVersionList addObject:[itemModel model2dictionary]]; + + NSDictionary *appVersionDic = [[NSUserDefaults standardUserDefaults]valueForKey:kUpdateVersionNum]; + NSMutableDictionary *saveDic; + if(appVersionDic == nil){ + saveDic = [NSMutableDictionary dictionary]; + }else{ + saveDic = [NSMutableDictionary dictionaryWithDictionary:appVersionDic]; + } + [saveDic setObject:getUpdateVersionList forKey:version]; + [[NSUserDefaults standardUserDefaults]setObject:saveDic forKey:kUpdateVersionNum]; + [[NSUserDefaults standardUserDefaults] synchronize]; +} + ++ (NSString *)GetCurrentTime{ + NSDate *now = [NSDate date]; + NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; + formatter.dateFormat = @"yyyy-MM-dd"; + NSString *dateStr = [formatter stringFromDate:now]; + return dateStr; +} + +@end diff --git a/YuMi/Modules/YMTabbar/Protocol/MainCeremony.h b/YuMi/Modules/YMTabbar/Protocol/MainCeremony.h deleted file mode 100644 index 4f6a27c3..00000000 --- a/YuMi/Modules/YMTabbar/Protocol/MainCeremony.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// MainCeremony.h -// YUMI -// -// Created by zu on 2021/9/8. -// - -#import -#import "ConsumerAbstractMatrix.h" -@class CallforConsumerAbstractMatrix, StrangeConsumerBewelcometoMatrix, StrangeConsumerReindictMatrix, YUMITabKellegSolitaireMatrix, YUMIVersionRefurbishMatrix; -NS_ASSUME_NONNULL_BEGIN - -@protocol MainCeremony - -- (void)autoSurmountAccomplishment; -- (void)acquireConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo; - -- (void)examineCentiretyforConsumerAbstractAccomplishment:(CallforConsumerAbstractMatrix *)inviteInfo; -- (void)acquireStrangeConsumerBewelcometoAbstractSucces:(StrangeConsumerBewelcometoMatrix *)greetInfo; -- (void)acquireShortDeficitucedEncourageChamberSuccces:(NSString *)roomUid; - -- (void)acquireStrangeConsumerReindictAbstractAccomplishment:(StrangeConsumerReindictMatrix *)reindictAbstract; - -- (void)acquireKellegSolitaireAbstractAccomplishment:(YUMITabKellegSolitaireMatrix *)automobiledAbstract; - -- (void)acquireReleaseRefurbish:(YUMIVersionRefurbishMatrix *)versionMatrix; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/Protocol/MainProtocol.h b/YuMi/Modules/YMTabbar/Protocol/MainProtocol.h new file mode 100644 index 00000000..9b0d9fd2 --- /dev/null +++ b/YuMi/Modules/YMTabbar/Protocol/MainProtocol.h @@ -0,0 +1,36 @@ +// +// MainProtocol.h +// YUMI +// +// Created by zu on 2021/9/8. +// + +#import +#import "UserInfoModel.h" +@class InviteUserInfoModel, NewUserGreetModel, NewUserRechargeModel, XPTabAnchorCardModel, XPVersionUpdateModel; +NS_ASSUME_NONNULL_BEGIN + +@protocol MainProtocol + +- (void)autoLoginSuccess; +- (void)getUserInfoSuccess:(UserInfoModel *)userInfo; + +///获取邀请人的信息成功 +- (void)checkInviteUserInfoSuccess:(InviteUserInfoModel *)inviteInfo; +///获取新用户打招呼信息成功 +- (void)getNewUserGreetInfoSucces:(NewUserGreetModel *)greetInfo; +///快捷推荐进房成功 +- (void)getShortCutRecommendRoomSuccces:(NSString *)roomUid; + +///获取新用户充值列表成功 +- (void)getNewUserRechargeInfoSuccess:(NewUserRechargeModel *)rechargeInfo; + +///获取主播卡片信息成功 +- (void)getAnchorCardInfoSuccess:(XPTabAnchorCardModel *)cardInfo; + +///获取更新版本信息成功 +- (void)getVersionUpdate:(XPVersionUpdateModel *)versionModel; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/View/AnchorCard/XCombatellegSolitaireRegard.h b/YuMi/Modules/YMTabbar/View/AnchorCard/XCombatellegSolitaireRegard.h deleted file mode 100644 index 42af9691..00000000 --- a/YuMi/Modules/YMTabbar/View/AnchorCard/XCombatellegSolitaireRegard.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// YMAnchorCardView.h -// YUMI -// -// Created by YUMI on 2022/8/1. -// - -#import -#import "YUMITabKellegSolitaireMatrix.h" - -@protocol XCombatellegSolitaireRegardRepresendtation - -- (void)xCombatellegSolitaireRegardImportChamber:(NSString *)roomUid; - -- (void)xCombatellegSolitaireRegardTicktackIntelligenceportrait:(NSString *)uid; - -@end - -@interface XCombatellegSolitaireRegard : UIView - -@property (nonatomic, strong) YUMITabKellegSolitaireMatrix *automobiledAbstract; - -@property (nonatomic, weak) id delegate; - -@end diff --git a/YuMi/Modules/YMTabbar/View/AnchorCard/XCombatellegSolitaireRegard.m b/YuMi/Modules/YMTabbar/View/AnchorCard/XCombatellegSolitaireRegard.m deleted file mode 100644 index 533d3649..00000000 --- a/YuMi/Modules/YMTabbar/View/AnchorCard/XCombatellegSolitaireRegard.m +++ /dev/null @@ -1,500 +0,0 @@ -// -// YMAnchorCardView.m -// YUMI -// -// Created by YUMI on 2022/8/1. -// - -#import "XCombatellegSolitaireRegard.h" -#import -#import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "YUMIMacroUitls.h" -#import "UIImage+Utils.h" -#import "UIButton+EnlargeTouchArea.h" -#import -#import "StatsticsticsServingFacilitater.h" -#import "YUMICommunicationSolitaireDisporterExecutive.h" -#import "NSArray+Safe.h" -#import "XCombatellegSolitaireCommunicationAssembletionRegardElement.h" -#import "ManeCommunicationSolitaireStatementAbstractMatrix.h" - -@interface XCombatellegSolitaireRegard () - -@property (nonatomic, strong) UICollectionView *collectionView; -@property (nonatomic,strong) UIImageView *encourageIndicateRegard; -@property (nonatomic,strong) NetIndicateRegard *intelligenceportraitIndicateRegard; -@property (nonatomic, strong) UIImageView *genderIndicateRegard; -@property (nonatomic,strong) UIButton *monicerBtuton; -@property (nonatomic,strong) UILabel *sequenceSequencignation; -@property (nonatomic, strong) UIButton *importChamberBtuton; -@property (nonatomic, strong) UIView *computationBackgroundRegard; -@property (nonatomic, strong) UILabel *computationSequencignation; -@property (strong, nonatomic) dispatch_source_t timer; -@property (nonatomic,strong) UIButton *playButton; -@property (nonatomic,strong) UIImageView *bookIndicteRegard; -@property (nonatomic,assign) BOOL isPlaying; -@property (nonatomic, assign) BOOL isRelaxation; -@property (nonatomic, strong) UIImageView *transparencyIndicateRegard; - -@end - -@implementation XCombatellegSolitaireRegard - -- (void)dealloc { - if (_isRelaxation) { - [self resumeIntrtowardsemper]; - } - [self stopTimer]; - self.isPlaying = NO; - [self.bookIndicteRegard stopAnimating]; -} - -- (void)removeFromSuperview { - if (_isRelaxation) { - [self resumeIntrtowardsemper]; - } - [self stopTimer]; - [super removeFromSuperview]; -} - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.encourageIndicateRegard]; - [self addSubview:self.intelligenceportraitIndicateRegard]; - [self addSubview:self.genderIndicateRegard]; - [self addSubview:self.monicerBtuton]; - [self addSubview:self.sequenceSequencignation];; - [self addSubview:self.importChamberBtuton]; - [self addSubview:self.collectionView]; - [self addSubview:self.transparencyIndicateRegard]; - [self addSubview:self.computationBackgroundRegard]; - [self addSubview:self.computationSequencignation]; -} - -- (void)initChildLyRestrictions { - [self.encourageIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.bottom.mas_equalTo(0); - make.left.right.mas_equalTo(self).inset(10); - }]; - [self.intelligenceportraitIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(66, 66)); - make.top.mas_equalTo(12); - make.left.mas_equalTo(20); - }]; - [self.monicerBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard).mas_offset(13); - make.left.mas_equalTo(self.intelligenceportraitIndicateRegard.mas_right).mas_offset(8); - make.height.mas_equalTo(20); - }]; - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.monicerBtuton); - make.left.mas_equalTo(self.monicerBtuton.mas_right).mas_offset(4); - make.right.mas_equalTo(-51); - make.height.mas_equalTo(15); - }]; - [self.genderIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(14, 14)); - make.right.bottom.mas_equalTo(self.intelligenceportraitIndicateRegard).mas_offset(-4); - }]; - [self.sequenceSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.monicerBtuton); - make.top.mas_equalTo(self.monicerBtuton.mas_bottom).mas_offset(4); - make.height.mas_equalTo(17); - make.right.mas_equalTo(self.importChamberBtuton.mas_left).mas_offset(-15); - }]; - [self.importChamberBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(79, 24)); - make.top.mas_equalTo(51); - make.right.mas_equalTo(-20); - }]; - [self.computationBackgroundRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.right.mas_equalTo(self.encourageIndicateRegard); - make.size.mas_equalTo(CGSizeMake(48, 20)); - }]; - [self.computationSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.computationBackgroundRegard); - }]; - [self.transparencyIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.monicerBtuton); - make.size.mas_equalTo(CGSizeMake(44, 15)); - make.right.mas_equalTo(-51); - }]; -} - - #pragma mark - Event Response -- (void)importChamberBtutonTicktack:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(xCombatellegSolitaireRegardImportChamber:)]) { - NSString *uid; - if (self.automobiledAbstract.roomUid) { - uid = [NSString stringWithFormat:@"%zd", self.automobiledAbstract.roomUid]; - } else { - uid = [NSString stringWithFormat:@"%zd", self.automobiledAbstract.uid]; - } - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventPersonalshowTopCardRoomClick eventAttributes:@{@"roomUid" : uid}]; - [self.delegate xCombatellegSolitaireRegardImportChamber:uid]; - } -} - -- (void)dwellBetowardsIntelligenceportrait:(UITapGestureRecognizer *)ges { - if (self.delegate && [self.delegate respondsToSelector:@selector(xCombatellegSolitaireRegardTicktackIntelligenceportrait:)]) { - [self.delegate xCombatellegSolitaireRegardTicktackIntelligenceportrait:[NSString stringWithFormat:@"%zd", self.automobiledAbstract.uid]]; - } -} - -#pragma mark - 倒计时 -- (void)unfoildComputtowardsiondownAboutIntrtowardsemporal:(long)time { - __block long tempTime = time; - if (self.timer == nil) { - @kWeakify(self); - dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); - self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); - dispatch_source_set_timer(self.timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); - dispatch_source_set_event_handler(self.timer, ^{ - @kStrongify(self); - if(tempTime <= 0){ - dispatch_source_cancel(self.timer); - self.timer = nil; - dispatch_async(dispatch_get_main_queue(), ^{ - if (self.delegate && [self.delegate respondsToSelector:@selector(xCombatellegSolitaireRegardImportChamber:)]) { - [self.delegate xCombatellegSolitaireRegardImportChamber:nil]; - } - }); - } else { - dispatch_async(dispatch_get_main_queue(), ^{ - - self.computationSequencignation.text = [NSString stringWithFormat:@"剩余%zds", tempTime]; - }); - tempTime--; - } - }); - dispatch_resume(self.timer); - } -} - -#pragma mark - UICollectionViewDelegate -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.automobiledAbstract.absCardPics.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - XCombatellegSolitaireCommunicationAssembletionRegardElement * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XCombatellegSolitaireCommunicationAssembletionRegardElement class]) forIndexPath:indexPath]; - cell.imageView.imageUrl = [self.automobiledAbstract.absCardPics secureGroalTowardsIndictowardsrix1:indexPath.item]; - return cell; -} - -- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { - CGFloat height = 15; - CGFloat width = 30; - XCombatellegSolitaireCommunicationAssembletionRegardElement * cell = (XCombatellegSolitaireCommunicationAssembletionRegardElement *)[collectionView cellForItemAtIndexPath:indexPath]; - - UIImage* image = cell.imageView.image; - if (image) { - CGFloat scale = image.size.width / image.size.height; - return CGSizeMake(15 * scale, height); - } else { - NSURL *imgUrl = [NSURL URLWithString:[self.automobiledAbstract.absCardPics secureGroalTowardsIndictowardsrix1:indexPath.item]]; - UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; - CGFloat scale = myImage.size.width / myImage.size.height; - if (scale == 0) { - return CGSizeMake(30, height); - }else { - return CGSizeMake(15 * scale, height); - } - } - return CGSizeMake(width, height); -} - -#pragma mark - private -- (void)prohibitiportBtutonPerformance:(UIButton *)sender { - sender.selected = !sender.selected; - if (!self.isPlaying) { - if(self.automobiledAbstract.voiceCard.propVals.count) { - NSString *fileName = [[self.automobiledAbstract.voiceCard.name componentsSeparatedByString:@"/"] lastObject]; - fileName = [NSString stringWithFormat:@"%zd_%@", self.automobiledAbstract.uid, fileName]; - NSString * url = [self.automobiledAbstract.voiceCard.propVals secureGroalTowardsIndictowardsrix1:0]; - NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"mineSkillCardVoice"]; - NSString *fullPath = [filePath stringByAppendingPathComponent:fileName]; - if ([[NSFileManager defaultManager] fileExistsAtPath:fullPath]) { - self.isPlaying = YES; - sender.selected = YES; - [self pautilizeIntrtowardsemper]; - [self.bookIndicteRegard startAnimating]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventPersonalshowTopCardVoiceClick]; - [[YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance] prohibitiporterReputtowardsionAboutRoute:fullPath completionBlock:^{ - self.isPlaying = NO; - [self.bookIndicteRegard stopAnimating]; - sender.selected = NO; - [self resumeIntrtowardsemper]; - self.bookIndicteRegard.image = [UIImage imageNamed:@"yumi_center_voice_shengyin_32"]; - [[YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance] suspeindManual]; - }]; - } else { - if (![[NSFileManager defaultManager] fileExistsAtPath:filePath]) { - NSFileManager *fileMgr = [[NSFileManager alloc] init]; - [fileMgr createDirectoryAtPath:filePath withIntermediateDirectories:YES attributes:nil error:nil]; - } - [self downchamberVocalmusicAboutAccurtowardseConstitute:fileName musicUrl:url completion:^(BOOL isSuccess, NSString *editAudioPath) { - self.isPlaying = YES; - sender.selected = YES; - [self.bookIndicteRegard startAnimating]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventPersonalshowTopCardVoiceClick]; - [self pautilizeIntrtowardsemper]; - [[YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance] prohibitiporterReputtowardsionAboutRoute:fullPath completionBlock:^{ - self.isPlaying = NO; - sender.selected = NO; - [self.bookIndicteRegard stopAnimating]; - [self resumeIntrtowardsemper]; - self.bookIndicteRegard.image = [UIImage imageNamed:@"yumi_center_voice_shengyin_32"]; - [[YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance] suspeindManual]; - }]; - }]; - } - } - } else { - self.isPlaying = NO; - sender.selected = NO; - [self.bookIndicteRegard stopAnimating]; - self.bookIndicteRegard.image = [UIImage imageNamed:@"yumi_center_voice_shengyin_32"]; - [[YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance] suspeindManual]; - [self resumeIntrtowardsemper]; - } -} - -- (void)downchamberVocalmusicAboutAccurtowardseConstitute:(NSString *)fileName musicUrl:(NSString *)musicUrl completion:(void (^) (BOOL isSuccess, NSString *editAudioPath))completion { - AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; - NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:musicUrl]]; - NSURLSessionDownloadTask *download = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) { - } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) { - NSString *filePath = [[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"mineSkillCardVoice"] stringByAppendingPathComponent:fileName]; - return [NSURL fileURLWithPath:filePath]; - } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) { - if (!error) { - completion(YES, filePath.path); - } else { - completion(NO, nil); - } - }]; - [download resume]; -} - -- (void)pautilizeIntrtowardsemper{ - if(self.timer){ - dispatch_suspend(self.timer); - self.isRelaxation = YES; - } -} - -- (void)resumeIntrtowardsemper{ - if(self.timer){ - dispatch_resume(self.timer); - self.isRelaxation = NO; - } -} - -- (void)stopTimer{ - if(self.timer){ - dispatch_source_cancel(_timer); - _timer = nil; - } -} - -#pragma mark - Getters And Setters -- (void)setAutomobiledAbstract:(YUMITabKellegSolitaireMatrix *)automobiledAbstract { - _automobiledAbstract = automobiledAbstract; - if (_automobiledAbstract) { - self.intelligenceportraitIndicateRegard.imageUrl = automobiledAbstract.avatar; - NSString * nick = automobiledAbstract.nick; - if (nick.length > 6) { - nick = [nick substringToIndex:6]; - } - [self.monicerBtuton setTitle:nick forState:UIControlStateNormal]; - self.sequenceSequencignation.text = automobiledAbstract.userDesc; - self.genderIndicateRegard.image = automobiledAbstract.gender == GenderGenre_Female ? [UIImage imageNamed:@"yumi_same_female"] : [UIImage imageNamed:@"yumi_same_male"]; - [self unfoildComputtowardsiondownAboutIntrtowardsemporal:11]; - [self.collectionView reloadData]; - if (automobiledAbstract.voiceCard.propVals.count) { - [self addSubview:self.playButton]; - [self addSubview:self.bookIndicteRegard]; - [self.monicerBtuton mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.intelligenceportraitIndicateRegard).mas_offset(1); - }]; - [self.playButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(18); - make.left.mas_equalTo(self.monicerBtuton); - make.top.mas_equalTo(self.sequenceSequencignation.mas_bottom).mas_offset(4); - }]; - - [self.bookIndicteRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(79, 12)); - make.centerY.mas_equalTo(self.playButton); - make.left.mas_equalTo(self.playButton.mas_right).offset(5); - }]; - } - } -} - -- (UIImageView *)encourageIndicateRegard { - if (!_encourageIndicateRegard) { - _encourageIndicateRegard = [[UIImageView alloc] init]; - _encourageIndicateRegard.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xDAF8FC), UIColorFromRGB(0xF2F6DF)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(KScreenWidth - 20, 90)]; - _encourageIndicateRegard.layer.cornerRadius = 8; - _encourageIndicateRegard.layer.masksToBounds = YES; - } - return _encourageIndicateRegard; -} - -- (NetIndicateRegard *)intelligenceportraitIndicateRegard { - if (!_intelligenceportraitIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _intelligenceportraitIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _intelligenceportraitIndicateRegard.layer.masksToBounds = YES; - _intelligenceportraitIndicateRegard.layer.cornerRadius = 66/2; - _intelligenceportraitIndicateRegard.userInteractionEnabled = YES; - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dwellBetowardsIntelligenceportrait:)]; - [_intelligenceportraitIndicateRegard addGestureRecognizer:tap]; - } - return _intelligenceportraitIndicateRegard; -} - -- (UIImageView *)genderIndicateRegard { - if (!_genderIndicateRegard) { - _genderIndicateRegard = [[UIImageView alloc] init]; - } - return _genderIndicateRegard; -} - -- (UIButton *)monicerBtuton { - if (!_monicerBtuton) { - _monicerBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_monicerBtuton setTitleColor:[DJDKMIMOMColor mainEssayPrettify] forState:UIControlStateNormal]; - _monicerBtuton.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; - } - return _monicerBtuton; -} - -- (UILabel *)sequenceSequencignation { - if (!_sequenceSequencignation) { - _sequenceSequencignation = [[UILabel alloc] init]; - _sequenceSequencignation.font = [UIFont systemFontOfSize:12]; - _sequenceSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - } - return _sequenceSequencignation; -} - -- (UIButton *)importChamberBtuton { - if (!_importChamberBtuton) { - _importChamberBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_importChamberBtuton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _importChamberBtuton.titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightBold]; - [_importChamberBtuton setTitle:YMLocalizedString(@"YUMI_Anchor_Card_View_1") forState:UIControlStateNormal]; - [_importChamberBtuton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0xFFD436), UIColorFromRGB(0xFFB733)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_importChamberBtuton addTarget:self action:@selector(importChamberBtutonTicktack:) forControlEvents:UIControlEventTouchUpInside]; - _importChamberBtuton.layer.cornerRadius = 12; - _importChamberBtuton.layer.masksToBounds = YES; - } - return _importChamberBtuton; -} - -- (UIView *)computationBackgroundRegard { - if (!_computationBackgroundRegard) { - _computationBackgroundRegard = [[UIView alloc] init]; - _computationBackgroundRegard.backgroundColor = [UIColor whiteColor]; - UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 48, 20) byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(8, 8)]; - CAShapeLayer * layer = [CAShapeLayer layer]; - layer.path = path.CGPath; - _computationBackgroundRegard.layer.masksToBounds = YES; - _computationBackgroundRegard.layer.mask = layer;; - } - return _computationBackgroundRegard; -} - -- (UILabel *)computationSequencignation { - if (!_computationSequencignation) { - _computationSequencignation = [[UILabel alloc] init]; - _computationSequencignation.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - _computationSequencignation.textColor = [DJDKMIMOMColor essayTertiusPrettify]; - _computationSequencignation.textAlignment = NSTextAlignmentCenter; - } - return _computationSequencignation; -} - -- (UICollectionView *)collectionView{ - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.itemSize = CGSizeMake(30, 15); - layout.minimumLineSpacing = 0; - layout.minimumInteritemSpacing = 4; - layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.showsHorizontalScrollIndicator = NO; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.backgroundColor = [UIColor clearColor]; - [_collectionView registerClass:[XCombatellegSolitaireCommunicationAssembletionRegardElement class] forCellWithReuseIdentifier:NSStringFromClass([XCombatellegSolitaireCommunicationAssembletionRegardElement class])]; - } - return _collectionView; -} - -- (UIButton *)playButton { - if (!_playButton) { - _playButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_playButton setImage:[UIImage imageNamed:@"yumi_center_user_gen_skill_card_voice_play"] forState:UIControlStateNormal]; - [_playButton setImage:[UIImage imageNamed:@"yumi_center_user_gen_skill_card_voice_pause"] forState:UIControlStateSelected]; - [_playButton addTarget:self action:@selector(prohibitiportBtutonPerformance:) forControlEvents:UIControlEventTouchUpInside]; - [_playButton setEnlargeEdgeAboutApex:8 right:10 bottom:8 left:10]; - } - return _playButton; -} - -- (UIImageView *)bookIndicteRegard { - if (!_bookIndicteRegard) { - _bookIndicteRegard = [[UIImageView alloc] init]; - _bookIndicteRegard.userInteractionEnabled = YES; - _bookIndicteRegard.image = [UIImage imageNamed:@"yumi_center_voice_shengyin_32"]; - NSMutableArray * array = [NSMutableArray array]; - for (int i = 0 ; i< 40; i++) { - UIImage * image; - if ( i < 10) { - image = [UIImage imageNamed:[NSString stringWithFormat:@"mine_voice_shengyin_0%d", i]]; - } else { - image = [UIImage imageNamed:[NSString stringWithFormat:@"mine_voice_shengyin_%d", i]]; - } - if (image) { - [array addObject:image]; - } - - } - _bookIndicteRegard.animationImages = array; - _bookIndicteRegard.animationDuration = 1.2; - _bookIndicteRegard.animationRepeatCount = HUGE; - _bookIndicteRegard.contentMode = UIViewContentModeScaleAspectFill; - } - return _bookIndicteRegard; -} - -- (UIImageView *)transparencyIndicateRegard { - if (!_transparencyIndicateRegard) { - _transparencyIndicateRegard = [[UIImageView alloc] init]; - CAGradientLayer *gradientLayer = [CAGradientLayer layer]; - gradientLayer.colors = @[(__bridge id)UIColorRGBAlpha(0xffffff, 0).CGColor, (__bridge id)UIColorRGBAlpha(0xEFF6E3, 1).CGColor]; - gradientLayer.locations = @[@0, @1.0]; - gradientLayer.startPoint = CGPointMake(0, 0); - gradientLayer.endPoint = CGPointMake(1.0, 0); - gradientLayer.frame = CGRectMake(0, 0, 44, 15); - [_transparencyIndicateRegard.layer addSublayer:gradientLayer]; - } - return _transparencyIndicateRegard; -} - -@end diff --git a/YuMi/Modules/YMTabbar/View/AnchorCard/XPAnchorCardView.h b/YuMi/Modules/YMTabbar/View/AnchorCard/XPAnchorCardView.h new file mode 100644 index 00000000..5caba7aa --- /dev/null +++ b/YuMi/Modules/YMTabbar/View/AnchorCard/XPAnchorCardView.h @@ -0,0 +1,27 @@ +// +// YMAnchorCardView.h +// YUMI +// +// Created by YUMI on 2022/8/1. +// + +#import +#import "XPTabAnchorCardModel.h" + +@protocol XPAnchorCardViewDelegate + +///进入房间 +- (void)xPAnchorCardViewEnterRoom:(NSString *)roomUid; + +///点击头像 +- (void)xPAnchorCardViewClickAvatar:(NSString *)uid; + +@end + +@interface XPAnchorCardView : UIView + +@property (nonatomic, strong) XPTabAnchorCardModel *cardInfo; + +@property (nonatomic, weak) id delegate; + +@end diff --git a/YuMi/Modules/YMTabbar/View/AnchorCard/XPAnchorCardView.m b/YuMi/Modules/YMTabbar/View/AnchorCard/XPAnchorCardView.m new file mode 100644 index 00000000..354b9dcb --- /dev/null +++ b/YuMi/Modules/YMTabbar/View/AnchorCard/XPAnchorCardView.m @@ -0,0 +1,519 @@ +// +// YMAnchorCardView.m +// YUMI +// +// Created by YUMI on 2022/8/1. +// + +#import "XPAnchorCardView.h" +///Third +#import +///Tool +#import "DJDKMIMOMColor.h" +#import "NetImageView.h" +#import "YUMIMacroUitls.h" +#import "UIImage+Utils.h" +#import "UIButton+EnlargeTouchArea.h" +#import +#import "StatisticsServiceHelper.h" +#import "XPSkillCardPlayerManager.h" +///P +#import "NSArray+Safe.h" +///View +#import "XPAnchorCardSkillCollectionViewCell.h" +///Model +#import "MineSkillCardListInfoModel.h" + +@interface XPAnchorCardView () + +@property (nonatomic, strong) UICollectionView *collectionView; +///背景图 +@property (nonatomic,strong) UIImageView *backImageView; +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///性别 +@property (nonatomic, strong) UIImageView *genderImageView; +///昵称 +@property (nonatomic,strong) UIButton *nickButton; +///签名 +@property (nonatomic,strong) UILabel *descLabel; +///进入房间 +@property (nonatomic, strong) UIButton *enterRoomButton; +///倒计时背景 +@property (nonatomic, strong) UIView *countBgView; +///倒计时 +@property (nonatomic, strong) UILabel *countLabel; +///倒计时 +@property (strong, nonatomic) dispatch_source_t timer; +///播放 +@property (nonatomic,strong) UIButton *playButton; +///音符 +@property (nonatomic,strong) UIImageView *noteImaegView; +///播放完成 +@property (nonatomic,assign) BOOL isPlaying; +///定时器是否为挂起状态 +@property (nonatomic, assign) BOOL isSuspend; +///半透明遮罩 +@property (nonatomic, strong) UIImageView *alphaImageView; + +@end + +@implementation XPAnchorCardView + +- (void)dealloc { + if (_isSuspend) { + [self resumeTimer]; + } + [self stopTimer]; + self.isPlaying = NO; + [self.noteImaegView stopAnimating]; +} + +- (void)removeFromSuperview { + if (_isSuspend) { + [self resumeTimer]; + } + [self stopTimer]; + [super removeFromSuperview]; +} + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backImageView]; + [self addSubview:self.avatarImageView]; + [self addSubview:self.genderImageView]; + [self addSubview:self.nickButton]; + [self addSubview:self.descLabel];; + [self addSubview:self.enterRoomButton]; + [self addSubview:self.collectionView]; + [self addSubview:self.alphaImageView]; + [self addSubview:self.countBgView]; + [self addSubview:self.countLabel]; +} + +- (void)initSubViewConstraints { + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.bottom.mas_equalTo(0); + make.left.right.mas_equalTo(self).inset(10); + }]; + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(66, 66)); + make.top.mas_equalTo(12); + make.left.mas_equalTo(20); + }]; + [self.nickButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.avatarImageView).mas_offset(13); + make.left.mas_equalTo(self.avatarImageView.mas_right).mas_offset(8); + make.height.mas_equalTo(20); + }]; + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.nickButton); + make.left.mas_equalTo(self.nickButton.mas_right).mas_offset(4); + make.right.mas_equalTo(-51); + make.height.mas_equalTo(15); + }]; + [self.genderImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(14, 14)); + make.right.bottom.mas_equalTo(self.avatarImageView).mas_offset(-4); + }]; + [self.descLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nickButton); + make.top.mas_equalTo(self.nickButton.mas_bottom).mas_offset(4); + make.height.mas_equalTo(17); + make.right.mas_equalTo(self.enterRoomButton.mas_left).mas_offset(-15); + }]; + [self.enterRoomButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(79, 24)); + make.top.mas_equalTo(51); + make.right.mas_equalTo(-20); + }]; + [self.countBgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.right.mas_equalTo(self.backImageView); + make.size.mas_equalTo(CGSizeMake(48, 20)); + }]; + [self.countLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.countBgView); + }]; + [self.alphaImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.nickButton); + make.size.mas_equalTo(CGSizeMake(44, 15)); + make.right.mas_equalTo(-51); + }]; +} + + #pragma mark - Event Response +- (void)enterRoomButtonClick:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPAnchorCardViewEnterRoom:)]) { + NSString *uid; + if (self.cardInfo.roomUid) { + uid = [NSString stringWithFormat:@"%zd", self.cardInfo.roomUid]; + } else { + uid = [NSString stringWithFormat:@"%zd", self.cardInfo.uid]; + } + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventPersonalshowTopCardRoomClick eventAttributes:@{@"roomUid" : uid}]; + [self.delegate xPAnchorCardViewEnterRoom:uid]; + } +} + +- (void)onTapAvatar:(UITapGestureRecognizer *)ges { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPAnchorCardViewClickAvatar:)]) { + [self.delegate xPAnchorCardViewClickAvatar:[NSString stringWithFormat:@"%zd", self.cardInfo.uid]]; + } +} + +#pragma mark - 倒计时 +- (void)openCountdownWithTime:(long)time { + __block long tempTime = time; //倒计时时间 + if (self.timer == nil) { + @kWeakify(self); + dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); + self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); + dispatch_source_set_timer(self.timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行 + dispatch_source_set_event_handler(self.timer, ^{ + @kStrongify(self); + if(tempTime <= 0){ //倒计时结束,关闭 + dispatch_source_cancel(self.timer); + self.timer = nil; + dispatch_async(dispatch_get_main_queue(), ^{ + if (self.delegate && [self.delegate respondsToSelector:@selector(xPAnchorCardViewEnterRoom:)]) { + [self.delegate xPAnchorCardViewEnterRoom:nil]; + } + }); + } else { + dispatch_async(dispatch_get_main_queue(), ^{ + //设置按钮显示读秒效果 + self.countLabel.text = [NSString stringWithFormat:@"剩余%zds", tempTime]; + }); + tempTime--; + } + }); + dispatch_resume(self.timer); + } +} + +#pragma mark - UICollectionViewDelegate +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.cardInfo.absCardPics.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPAnchorCardSkillCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPAnchorCardSkillCollectionViewCell class]) forIndexPath:indexPath]; + cell.imageView.imageUrl = [self.cardInfo.absCardPics safeObjectAtIndex1:indexPath.item]; + return cell; +} + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + CGFloat height = 15; + CGFloat width = 30; + XPAnchorCardSkillCollectionViewCell * cell = (XPAnchorCardSkillCollectionViewCell *)[collectionView cellForItemAtIndexPath:indexPath]; + + UIImage* image = cell.imageView.image; + if (image) { + CGFloat scale = image.size.width / image.size.height; + return CGSizeMake(15 * scale, height); + } else { + NSURL *imgUrl = [NSURL URLWithString:[self.cardInfo.absCardPics safeObjectAtIndex1:indexPath.item]]; + UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; + CGFloat scale = myImage.size.width / myImage.size.height; + if (scale == 0) { + return CGSizeMake(30, height); + }else { + return CGSizeMake(15 * scale, height); + } + } + return CGSizeMake(width, height); +} + +#pragma mark - private +- (void)playButtonAction:(UIButton *)sender { + sender.selected = !sender.selected; + if (!self.isPlaying) { + if(self.cardInfo.voiceCard.propVals.count) { + NSString *fileName = [[self.cardInfo.voiceCard.name componentsSeparatedByString:@"/"] lastObject]; + fileName = [NSString stringWithFormat:@"%zd_%@", self.cardInfo.uid, fileName]; + NSString * url = [self.cardInfo.voiceCard.propVals safeObjectAtIndex1:0]; + NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"mineSkillCardVoice"]; + NSString *fullPath = [filePath stringByAppendingPathComponent:fileName]; + if ([[NSFileManager defaultManager] fileExistsAtPath:fullPath]) { + self.isPlaying = YES; + sender.selected = YES; + [self pauseTimer]; + [self.noteImaegView startAnimating]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventPersonalshowTopCardVoiceClick]; + [[XPSkillCardPlayerManager shareInstance] playerVoiceWithPath:fullPath completionBlock:^{ + self.isPlaying = NO; + [self.noteImaegView stopAnimating]; + sender.selected = NO; + [self resumeTimer]; + self.noteImaegView.image = [UIImage imageNamed:@"mine_voice_shengyin_32"]; + [[XPSkillCardPlayerManager shareInstance] stopMusic]; + }]; + } else { + if (![[NSFileManager defaultManager] fileExistsAtPath:filePath]) { + NSFileManager *fileMgr = [[NSFileManager alloc] init]; + [fileMgr createDirectoryAtPath:filePath withIntermediateDirectories:YES attributes:nil error:nil]; + } + [self downloadAudioWithFileName:fileName musicUrl:url completion:^(BOOL isSuccess, NSString *editAudioPath) { + self.isPlaying = YES; + sender.selected = YES; + [self.noteImaegView startAnimating]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventPersonalshowTopCardVoiceClick]; + [self pauseTimer]; + [[XPSkillCardPlayerManager shareInstance] playerVoiceWithPath:fullPath completionBlock:^{ + self.isPlaying = NO; + sender.selected = NO; + [self.noteImaegView stopAnimating]; + [self resumeTimer]; + self.noteImaegView.image = [UIImage imageNamed:@"mine_voice_shengyin_32"]; + [[XPSkillCardPlayerManager shareInstance] stopMusic]; + }]; + }]; + } + } + } else { + self.isPlaying = NO; + sender.selected = NO; + [self.noteImaegView stopAnimating]; + self.noteImaegView.image = [UIImage imageNamed:@"mine_voice_shengyin_32"]; + [[XPSkillCardPlayerManager shareInstance] stopMusic]; + [self resumeTimer]; + } +} + +- (void)downloadAudioWithFileName:(NSString *)fileName musicUrl:(NSString *)musicUrl completion:(void (^) (BOOL isSuccess, NSString *editAudioPath))completion { + AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; + NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:musicUrl]]; + NSURLSessionDownloadTask *download = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) { + } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) { + NSString *filePath = [[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"mineSkillCardVoice"] stringByAppendingPathComponent:fileName]; + return [NSURL fileURLWithPath:filePath]; + } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) { + if (!error) { + completion(YES, filePath.path); + } else { + completion(NO, nil); + } + }]; + [download resume]; +} + +- (void)pauseTimer{ + if(self.timer){ + dispatch_suspend(self.timer); + self.isSuspend = YES; + } +} + +- (void)resumeTimer{ + if(self.timer){ + dispatch_resume(self.timer); + self.isSuspend = NO; + } +} + +- (void)stopTimer{ + if(self.timer){ + dispatch_source_cancel(_timer); + _timer = nil; + } +} + +#pragma mark - Getters And Setters +- (void)setCardInfo:(XPTabAnchorCardModel *)cardInfo { + _cardInfo = cardInfo; + if (_cardInfo) { + self.avatarImageView.imageUrl = cardInfo.avatar; + NSString * nick = cardInfo.nick; + if (nick.length > 6) { + nick = [nick substringToIndex:6]; + } + [self.nickButton setTitle:nick forState:UIControlStateNormal]; + self.descLabel.text = cardInfo.userDesc; + self.genderImageView.image = cardInfo.gender == GenderType_Female ? [UIImage imageNamed:@"common_female"] : [UIImage imageNamed:@"common_male"]; + [self openCountdownWithTime:11]; + [self.collectionView reloadData]; + if (cardInfo.voiceCard.propVals.count) { + [self addSubview:self.playButton]; + [self addSubview:self.noteImaegView]; + [self.nickButton mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.avatarImageView).mas_offset(1); + }]; + [self.playButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(18); + make.left.mas_equalTo(self.nickButton); + make.top.mas_equalTo(self.descLabel.mas_bottom).mas_offset(4); + }]; + + [self.noteImaegView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(79, 12)); + make.centerY.mas_equalTo(self.playButton); + make.left.mas_equalTo(self.playButton.mas_right).offset(5); + }]; + } + } +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xDAF8FC), UIColorFromRGB(0xF2F6DF)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(KScreenWidth - 20, 90)]; + _backImageView.layer.cornerRadius = 8; + _backImageView.layer.masksToBounds = YES; + } + return _backImageView; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 66/2; + _avatarImageView.userInteractionEnabled = YES; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTapAvatar:)]; + [_avatarImageView addGestureRecognizer:tap]; + } + return _avatarImageView; +} + +- (UIImageView *)genderImageView { + if (!_genderImageView) { + _genderImageView = [[UIImageView alloc] init]; + } + return _genderImageView; +} + +- (UIButton *)nickButton { + if (!_nickButton) { + _nickButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_nickButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + _nickButton.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold]; + } + return _nickButton; +} + +- (UILabel *)descLabel { + if (!_descLabel) { + _descLabel = [[UILabel alloc] init]; + _descLabel.font = [UIFont systemFontOfSize:12]; + _descLabel.textColor = [DJDKMIMOMColor textThirdColor]; + } + return _descLabel; +} + +- (UIButton *)enterRoomButton { + if (!_enterRoomButton) { + _enterRoomButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_enterRoomButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _enterRoomButton.titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightBold]; + [_enterRoomButton setTitle:YMLocalizedString(@"XPAnchorCardView1") forState:UIControlStateNormal]; + [_enterRoomButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFFD436), UIColorFromRGB(0xFFB733)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_enterRoomButton addTarget:self action:@selector(enterRoomButtonClick:) forControlEvents:UIControlEventTouchUpInside]; + _enterRoomButton.layer.cornerRadius = 12; + _enterRoomButton.layer.masksToBounds = YES; + } + return _enterRoomButton; +} + +- (UIView *)countBgView { + if (!_countBgView) { + _countBgView = [[UIView alloc] init]; + _countBgView.backgroundColor = [UIColor whiteColor]; + UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 48, 20) byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(8, 8)]; + CAShapeLayer * layer = [CAShapeLayer layer]; + layer.path = path.CGPath; + _countBgView.layer.masksToBounds = YES; + _countBgView.layer.mask = layer;; + } + return _countBgView; +} + +- (UILabel *)countLabel { + if (!_countLabel) { + _countLabel = [[UILabel alloc] init]; + _countLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + _countLabel.textColor = [DJDKMIMOMColor textThirdColor]; + _countLabel.textAlignment = NSTextAlignmentCenter; + } + return _countLabel; +} + +- (UICollectionView *)collectionView{ + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.itemSize = CGSizeMake(30, 15); + layout.minimumLineSpacing = 0; + layout.minimumInteritemSpacing = 4; + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.showsHorizontalScrollIndicator = NO; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.backgroundColor = [UIColor clearColor]; + [_collectionView registerClass:[XPAnchorCardSkillCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPAnchorCardSkillCollectionViewCell class])]; + } + return _collectionView; +} + +- (UIButton *)playButton { + if (!_playButton) { + _playButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_playButton setImage:[UIImage imageNamed:@"mine_user_info_skill_card_voice_play"] forState:UIControlStateNormal]; + [_playButton setImage:[UIImage imageNamed:@"mine_user_info_skill_card_voice_pause"] forState:UIControlStateSelected]; + [_playButton addTarget:self action:@selector(playButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_playButton setEnlargeEdgeWithTop:8 right:10 bottom:8 left:10]; + } + return _playButton; +} + +- (UIImageView *)noteImaegView { + if (!_noteImaegView) { + _noteImaegView = [[UIImageView alloc] init]; + _noteImaegView.userInteractionEnabled = YES; + _noteImaegView.image = [UIImage imageNamed:@"mine_voice_shengyin_32"]; + NSMutableArray * array = [NSMutableArray array]; + for (int i = 0 ; i< 40; i++) { + UIImage * image; + if ( i < 10) { + image = [UIImage imageNamed:[NSString stringWithFormat:@"mine_voice_shengyin_0%d", i]]; + } else { + image = [UIImage imageNamed:[NSString stringWithFormat:@"mine_voice_shengyin_%d", i]]; + } + if (image) { + [array addObject:image]; + } + + } + _noteImaegView.animationImages = array; + _noteImaegView.animationDuration = 1.2; + _noteImaegView.animationRepeatCount = HUGE; + _noteImaegView.contentMode = UIViewContentModeScaleAspectFill; + } + return _noteImaegView; +} + +- (UIImageView *)alphaImageView { + if (!_alphaImageView) { + _alphaImageView = [[UIImageView alloc] init]; + CAGradientLayer *gradientLayer = [CAGradientLayer layer]; + gradientLayer.colors = @[(__bridge id)UIColorRGBAlpha(0xffffff, 0).CGColor, (__bridge id)UIColorRGBAlpha(0xEFF6E3, 1).CGColor]; + gradientLayer.locations = @[@0, @1.0]; + gradientLayer.startPoint = CGPointMake(0, 0); + gradientLayer.endPoint = CGPointMake(1.0, 0); + gradientLayer.frame = CGRectMake(0, 0, 44, 15); + [_alphaImageView.layer addSublayer:gradientLayer]; + } + return _alphaImageView; +} + +@end diff --git a/YuMi/Modules/YMTabbar/View/Cell/XCombatellegSolitaireCommunicationAssembletionRegardElement.h b/YuMi/Modules/YMTabbar/View/Cell/XCombatellegSolitaireCommunicationAssembletionRegardElement.h deleted file mode 100644 index 296cf316..00000000 --- a/YuMi/Modules/YMTabbar/View/Cell/XCombatellegSolitaireCommunicationAssembletionRegardElement.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMAnchorCardSkillCollectionViewCell.h -// YUMI -// -// Created by YUMI on 2022/8/2. -// - -#import -#import "NetIndicateRegard.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface XCombatellegSolitaireCommunicationAssembletionRegardElement : UICollectionViewCell - -@property (nonatomic, strong) NetIndicateRegard *imageView; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/View/Cell/XCombatellegSolitaireCommunicationAssembletionRegardElement.m b/YuMi/Modules/YMTabbar/View/Cell/XCombatellegSolitaireCommunicationAssembletionRegardElement.m deleted file mode 100644 index f0a52057..00000000 --- a/YuMi/Modules/YMTabbar/View/Cell/XCombatellegSolitaireCommunicationAssembletionRegardElement.m +++ /dev/null @@ -1,42 +0,0 @@ -// -// YMAnchorCardSkillCollectionViewCell.m -// YUMI -// -// Created by YUMI on 2022/8/2. -// - -#import "XCombatellegSolitaireCommunicationAssembletionRegardElement.h" -#import - -@implementation XCombatellegSolitaireCommunicationAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame { - if (self = [super initWithFrame:frame]) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.imageView]; -} - -- (void)initChildLyRestrictions { - [self.imageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(0); - make.top.bottom.mas_equalTo(self.contentView); - }]; -} - -#pragma mark - Getters And Setters -- (NetIndicateRegard *)imageView { - if (!_imageView) { - _imageView = [[NetIndicateRegard alloc] init]; - _imageView.contentMode = UIViewContentModeScaleAspectFit; - } - return _imageView; -} - -@end diff --git a/YuMi/Modules/YMTabbar/View/Cell/XPAnchorCardSkillCollectionViewCell.h b/YuMi/Modules/YMTabbar/View/Cell/XPAnchorCardSkillCollectionViewCell.h new file mode 100644 index 00000000..1d396ebb --- /dev/null +++ b/YuMi/Modules/YMTabbar/View/Cell/XPAnchorCardSkillCollectionViewCell.h @@ -0,0 +1,19 @@ +// +// YMAnchorCardSkillCollectionViewCell.h +// YUMI +// +// Created by YUMI on 2022/8/2. +// + +#import +#import "NetImageView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPAnchorCardSkillCollectionViewCell : UICollectionViewCell + +@property (nonatomic, strong) NetImageView *imageView; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/View/Cell/XPAnchorCardSkillCollectionViewCell.m b/YuMi/Modules/YMTabbar/View/Cell/XPAnchorCardSkillCollectionViewCell.m new file mode 100644 index 00000000..8f0d01d3 --- /dev/null +++ b/YuMi/Modules/YMTabbar/View/Cell/XPAnchorCardSkillCollectionViewCell.m @@ -0,0 +1,43 @@ +// +// YMAnchorCardSkillCollectionViewCell.m +// YUMI +// +// Created by YUMI on 2022/8/2. +// + +#import "XPAnchorCardSkillCollectionViewCell.h" +///Third +#import + +@implementation XPAnchorCardSkillCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.imageView]; +} + +- (void)initSubViewConstraints { + [self.imageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(0); + make.top.bottom.mas_equalTo(self.contentView); + }]; +} + +#pragma mark - Getters And Setters +- (NetImageView *)imageView { + if (!_imageView) { + _imageView = [[NetImageView alloc] init]; + _imageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _imageView; +} + +@end diff --git a/YuMi/Modules/YMTabbar/View/Cell/XPNewUserRechargeCollectionViewCell.h b/YuMi/Modules/YMTabbar/View/Cell/XPNewUserRechargeCollectionViewCell.h new file mode 100644 index 00000000..47b3c78f --- /dev/null +++ b/YuMi/Modules/YMTabbar/View/Cell/XPNewUserRechargeCollectionViewCell.h @@ -0,0 +1,20 @@ +// +// YMNewUserRechargeCollectionViewCell.h +// YUMI +// +// Created by YUMI on 2022/7/29. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class FirstRechargeRewardModel; +@interface XPNewUserRechargeCollectionViewCell : UICollectionViewCell + +///奖励的模型 +@property (nonatomic,strong) FirstRechargeRewardModel *rewardInfo; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/View/Cell/XPNewUserRechargeCollectionViewCell.m b/YuMi/Modules/YMTabbar/View/Cell/XPNewUserRechargeCollectionViewCell.m new file mode 100644 index 00000000..19504c8e --- /dev/null +++ b/YuMi/Modules/YMTabbar/View/Cell/XPNewUserRechargeCollectionViewCell.m @@ -0,0 +1,113 @@ +// +// YMNewUserRechargeCollectionViewCell.m +// YUMI +// +// Created by YUMI on 2022/7/29. +// + +#import "XPNewUserRechargeCollectionViewCell.h" +///Third +#import +///Tool +#import "ThemeColor+FirstRecharge.h" +#import "NetImageView.h" +#import "UIImage+Utils.h" +///Model +#import "FirstRechargeRewardModel.h" + +@interface XPNewUserRechargeCollectionViewCell () +///奖励的图片 +@property (nonatomic, strong) NetImageView *iconImageView; +///显示奖励图片 +@property (nonatomic, strong) UILabel *titleLabel; +///显示奖励的时间 +@property (nonatomic, strong) UIButton *timeButton; +@end + + +@implementation XPNewUserRechargeCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews{ + [self addSubview:self.iconImageView]; + [self addSubview:self.titleLabel]; + [self addSubview:self.timeButton]; +} + +- (void)initSubViewConstraints{ + [self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(0); + make.centerX.mas_equalTo(self.mas_centerX); + make.width.height.mas_equalTo(60); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.height.mas_equalTo(17); + make.top.mas_equalTo(self.iconImageView.mas_bottom).mas_offset(2); + make.left.mas_equalTo(0); + }]; + + [self.timeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.titleLabel.mas_bottom); + make.height.mas_equalTo(14); + make.centerX.mas_equalTo(self); + make.left.mas_equalTo(0); + }]; + +} + +#pragma mark - setupData +- (void)setRewardInfo:(FirstRechargeRewardModel *)rewardInfo { + _rewardInfo = rewardInfo; + self.timeButton.hidden = !(_rewardInfo.showTime > 0); + [self.timeButton setTitle:[NSString stringWithFormat:@"(%@)", _rewardInfo.showTime] forState:UIControlStateNormal]; + self.titleLabel.text = _rewardInfo.showText; + self.iconImageView.imageUrl = _rewardInfo.showPir; +} + + +- (UIImageView *)iconImageView { + if (!_iconImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserIcon; + _iconImageView = [[NetImageView alloc] initWithConfig:config]; + _iconImageView.backgroundColor = UIColorRGBAlpha(0xFF9CC3, 0.1); + _iconImageView.layer.cornerRadius = 8; + _iconImageView.layer.masksToBounds = YES; + _iconImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _iconImageView; +} + +- (UILabel *)titleLabel{ + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} + +- (UIButton *)timeButton{ + if (!_timeButton) { + _timeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_timeButton setTitleColor:[DJDKMIMOMColor textThirdColor] forState:UIControlStateNormal]; + _timeButton.titleLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + _timeButton.hidden = YES; + } + return _timeButton; +} + +@end diff --git a/YuMi/Modules/YMTabbar/View/Cell/YUMIStrangeConsumerReindictAssembletionRegardElement.h b/YuMi/Modules/YMTabbar/View/Cell/YUMIStrangeConsumerReindictAssembletionRegardElement.h deleted file mode 100644 index 374ec511..00000000 --- a/YuMi/Modules/YMTabbar/View/Cell/YUMIStrangeConsumerReindictAssembletionRegardElement.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMNewUserRechargeCollectionViewCell.h -// YUMI -// -// Created by YUMI on 2022/7/29. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class ThresholdReindictRewardMatrix; -@interface YUMIStrangeConsumerReindictAssembletionRegardElement : UICollectionViewCell - -@property (nonatomic,strong) ThresholdReindictRewardMatrix *compensationAbstract; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/View/Cell/YUMIStrangeConsumerReindictAssembletionRegardElement.m b/YuMi/Modules/YMTabbar/View/Cell/YUMIStrangeConsumerReindictAssembletionRegardElement.m deleted file mode 100644 index 1c3657d9..00000000 --- a/YuMi/Modules/YMTabbar/View/Cell/YUMIStrangeConsumerReindictAssembletionRegardElement.m +++ /dev/null @@ -1,107 +0,0 @@ -// -// YMNewUserRechargeCollectionViewCell.m -// YUMI -// -// Created by YUMI on 2022/7/29. -// - -#import "YUMIStrangeConsumerReindictAssembletionRegardElement.h" -#import -#import "ThemeColor+FirstRecharge.h" -#import "NetIndicateRegard.h" -#import "UIImage+Utils.h" -#import "ThresholdReindictRewardMatrix.h" - -@interface YUMIStrangeConsumerReindictAssembletionRegardElement () -@property (nonatomic, strong) NetIndicateRegard *figureIndicateRegard; -@property (nonatomic, strong) UILabel *titleLabel; -@property (nonatomic, strong) UIButton *intratemporalBtuton; -@end - - -@implementation YUMIStrangeConsumerReindictAssembletionRegardElement - -- (instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews{ - [self addSubview:self.figureIndicateRegard]; - [self addSubview:self.titleLabel]; - [self addSubview:self.intratemporalBtuton]; -} - -- (void)initChildLyRestrictions{ - [self.figureIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(0); - make.centerX.mas_equalTo(self.mas_centerX); - make.width.height.mas_equalTo(60); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.height.mas_equalTo(17); - make.top.mas_equalTo(self.figureIndicateRegard.mas_bottom).mas_offset(2); - make.left.mas_equalTo(0); - }]; - - [self.intratemporalBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.titleLabel.mas_bottom); - make.height.mas_equalTo(14); - make.centerX.mas_equalTo(self); - make.left.mas_equalTo(0); - }]; - -} - -#pragma mark - setupData -- (void)setCompensationAbstract:(ThresholdReindictRewardMatrix *)compensationAbstract { - _compensationAbstract = compensationAbstract; - self.intratemporalBtuton.hidden = !(_compensationAbstract.showTime > 0); - [self.intratemporalBtuton setTitle:[NSString stringWithFormat:@"(%@)", _compensationAbstract.showTime] forState:UIControlStateNormal]; - self.titleLabel.text = _compensationAbstract.showText; - self.figureIndicateRegard.imageUrl = _compensationAbstract.showPir; -} - - -- (UIImageView *)figureIndicateRegard { - if (!_figureIndicateRegard) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc] init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - config.imageType = ImageGenreUserIcon; - _figureIndicateRegard = [[NetIndicateRegard alloc] initWithConfig:config]; - _figureIndicateRegard.backgroundColor = UIColorRGBAlpha(0xFF9CC3, 0.1); - _figureIndicateRegard.layer.cornerRadius = 8; - _figureIndicateRegard.layer.masksToBounds = YES; - _figureIndicateRegard.contentMode = UIViewContentModeScaleAspectFit; - } - return _figureIndicateRegard; -} - -- (UILabel *)titleLabel{ - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} - -- (UIButton *)intratemporalBtuton{ - if (!_intratemporalBtuton) { - _intratemporalBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_intratemporalBtuton setTitleColor:[DJDKMIMOMColor essayTertiusPrettify] forState:UIControlStateNormal]; - _intratemporalBtuton.titleLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - _intratemporalBtuton.hidden = YES; - } - return _intratemporalBtuton; -} - -@end diff --git a/YuMi/Modules/YMTabbar/View/PIFullScreenBannerAnimation.h b/YuMi/Modules/YMTabbar/View/PIFullScreenBannerAnimation.h new file mode 100644 index 00000000..e667ee6a --- /dev/null +++ b/YuMi/Modules/YMTabbar/View/PIFullScreenBannerAnimation.h @@ -0,0 +1,19 @@ +// +// PIFullScreenBannerAnimation.h +// YuMi +// +// Created by duoban on 2023/7/12. +// + +#import +#import "PIBaseAnimationViewModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface PIFullScreenBannerAnimation : NSObject +- (void)receiveGift:(GiftReceiveInfoModel *)receiveInfo; +- (void)receiveCandyTreeGiftHighLevle:(AttachmentModel *)attatchment; +- (void)receiveLuckyGiftBigPrize:(AttachmentModel *)attachment; +-(void)receiveRoomGraffitiStarKitchen:(AttachmentModel *)attacment; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/View/PIFullScreenBannerAnimation.m b/YuMi/Modules/YMTabbar/View/PIFullScreenBannerAnimation.m new file mode 100644 index 00000000..de1ec671 --- /dev/null +++ b/YuMi/Modules/YMTabbar/View/PIFullScreenBannerAnimation.m @@ -0,0 +1,610 @@ +// +// PIFullScreenBannerAnimation.m +// YuMi +// +// Created by duoban on 2023/7/12. +// +#import "XPRoomAnimationView.h" +///Third +#import +#import +#import +#import +#import "QGVAPConfigModel.h" +#import "UIView+VAP.h" +#import +#import +///Tool +#import "XPGiftStorage.h" +#import "YUMIMacroUitls.h" +#import "ThemeColor+Room.h" +#import "NetImageView.h" +#import "XPRoomGiftAnimationParser.h" +#import "XCCurrentVCStackManager.h" +#import "AccountInfoStorage.h" +#import "ClientConfig.h" +///Model +#import "MicroQueueModel.h" +#import "MicroStateModel.h" +#import "UserInfoModel.h" +#import "GiftReceiveInfoModel.h" +#import "GiftInfoModel.h" +#import "RoomInfoModel.h" +#import "AttachmentModel.h" +#import "XPGiftBigPrizeModel.h" +#import "XPGiftBannerUserInfoModel.h" +#import "GiftReceiveInfoModel.h" +#import "XPMessageRemoteExtModel.h" +#import "DatingInfoModel.h" +#import "AcrossRoomPKPrizeModel.h" +#import "RoomHalfHourRankModel.h" +#import "ClientConfig.h" +///View +#import "XPRoomGiftBannerView.h" +#import "XPRoomGiftBroadcastView.h" +#import "XPRoomCandyGiftView.h" +#import "XPRoomDatingAnimationView.h" +#import "XPRoomNobleLevelUpView.h" +#import "QGVAPWrapView.h" +#import "XPAcrossRoomPKPrizeView.h" +#import "XPRoomViewController.h" +#import "XPRoomAnchorRankBannerView.h" +#import "XPRoomEnterHideTipView.h" +#import "XPRoomLicneseHourRankView.h" +#import "XPRoomLuckyBigPrizeView.h" +#import "XPRoomGiftCompoundView.h" +#import "XPSailingAnimationView.h" +#import "XPRoomGraffitiGiftAnimationView.h" +#import "XPRoomStarKitchenBannerView.h" +#import "XPWebViewController.h" +#import "PIBaseAnimationViewModel.h" +#import "PIFullScreenBannerAnimation.h" +#import "XPSkillCardPlayerManager.h" +@interface PIFullScreenBannerAnimation() +///礼物飘屏 PresentAchieveAbstractMatrix +@property(nonatomic,strong) NSMutableArray *animationListA; +///玩法飘屏 YUMIPresentBigCaptureMatrix +@property(nonatomic,strong) NSMutableArray *animationListB; +///礼物飘屏正在播放中 +@property(nonatomic,assign) BOOL isPlayOfA; +///玩法飘屏正在播放中 +@property(nonatomic,assign) BOOL isPlayOfB; +///animationListA播放完后,如果有animationListB,那么要在animationListA的位置上播放animationListB,只播放一次 +@property(nonatomic,assign) BOOL isAnimationListAFinish; +@end +@implementation PIFullScreenBannerAnimation + + +- (void)createGiftBroadcastViewAnimation:(GiftReceiveInfoModel *)giftModel { + self.isPlayOfA = YES; + XPRoomGiftBroadcastView * view = [[XPRoomGiftBroadcastView alloc] init]; + view.delegate = self; + view.frame = CGRectMake(KScreenWidth, 35 + statusbarHeight, KScreenWidth, 150); + view.broadcastModel = giftModel; + [kWindow addSubview:view]; + [self beginGiftBraodcastViewAnimation:view notifyStaySecond:giftModel.notifyStaySecond]; +} + +- (void)beginGiftBraodcastViewAnimation:(XPRoomGiftBroadcastView *)view notifyStaySecond:(int)notifyStaySecond{ + CGFloat startTime = notifyStaySecond > 0 ? notifyStaySecond : 3.0; + POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; + springAnimation.springSpeed = 12; + springAnimation.springBounciness = 10.f; + springAnimation.fromValue = [NSValue valueWithCGPoint:view.center]; + springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(0 + view.frame.size.width / 2, view.center.y)]; + [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + if (finished) { + [self removeGiftBroadcastOutAnimation:view stayTime:startTime]; + } + }]; + [view pop_addAnimation:springAnimation forKey:@"spingOutAnimation"]; +} + +- (void)removeGiftBroadcastOutAnimation:(XPRoomGiftBroadcastView *)view stayTime:(CGFloat)stayTime{ + POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; + moveAnimation.fromValue = [NSValue valueWithCGPoint:view.center]; + moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, view.center.y)]; + moveAnimation.beginTime = CACurrentMediaTime() + stayTime; + moveAnimation.duration = 0.5; + moveAnimation.repeatCount = 1; + moveAnimation.removedOnCompletion = YES; + @kWeakify(self); + [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + @kStrongify(self); + if (finished) { + [view removeFromSuperview]; + self.isPlayOfA = NO; + if (self.animationListA.count > 0) { + [self.animationListA removeObjectAtIndex:0]; + } + if (self.animationListA.count > 0 && self.isPlayOfB == NO && self.isPlayOfA == NO) { + [self createGiftBroadcastViewAnimation:self.animationListA.firstObject]; + } + } + }]; + + [view pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; +} + +/// 点击了关闭 +- (void)xPRoomGiftBroadcastView:(XPRoomGiftBroadcastView *)view didClickClose:(GiftReceiveInfoModel *)broadcastModel{ + [view removeFromSuperview]; + [view pop_removeAllAnimations]; + self.isPlayOfA = NO; + if (self.animationListA.count > 0) { + [self.animationListA removeObjectAtIndex:0]; + } + if (self.animationListA.count > 0 && self.isPlayOfB == NO && self.isPlayOfA == NO) { + [self createGiftBroadcastViewAnimation:self.animationListA.firstObject]; + } +} +///点击了进入房间 +- (void)xPRoomGiftBroadcastView:(XPRoomGiftBroadcastView *)view enterRoom:(NSString *)roomUid{ + if (roomUid.length > 0) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.7 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [XPRoomViewController openRoom:roomUid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; + }); + } +} +///收到了礼物 +- (void)receiveGift:(GiftReceiveInfoModel *)receiveInfo { + ///CPU警告的时候 需要停止接收动画 + GiftReceiveInfoModel *giftNotifyInfo = receiveInfo; + if (self.animationListA.count == 0 && self.isPlayOfB == NO && self.isPlayOfA == NO) { + [self createGiftBroadcastViewAnimation:giftNotifyInfo]; + } + [self.animationListA addObject:giftNotifyInfo]; + +} + +-(void)playAnimationACompletion{ + PIBaseAnimationViewModel *model = self.animationListB.firstObject; + if(model.type == GiftBannerType_Lucky){ + [self createBigPrizeAnimation:model]; + }else if (model.type == GiftBannerType_Love){ + [self createCandyTreeBannerAnimation:model]; + }else if(model.type == GiftBannerType_Nobleman){ + [self createNobleLevelUpBannerAnimation:model]; + }else if(model.type == GiftBannerType_kitchen){ + [self createStarKitchenBannerAnimation:model]; + }else if(model.type == GiftBannerType_AnchorHour){ + [self createAnchorHourRankAnimation:model]; + }else if(model.type == GiftBannerType_LicneseHour){ + [self createLicneseHourRankAnimation:model]; + } +} + +-(void)playAnimationWithModel{ + if(self.isAnimationListAFinish == YES)return; + if(self.animationListB.count <= 0){ + if(self.animationListA.count > 0 && self.isPlayOfB == NO && self.isPlayOfA == NO){ + [self createGiftBroadcastViewAnimation:self.animationListA.firstObject]; + } + return; + } + if(self.isPlayOfB == YES)return; + PIBaseAnimationViewModel *model = self.animationListB.firstObject; + if(model.type == GiftBannerType_Lucky){ + [self createBigPrizeAnimation:model]; + }else if (model.type == GiftBannerType_Love){ + [self createCandyTreeBannerAnimation:model]; + }else if(model.type == GiftBannerType_Nobleman){ + [self createNobleLevelUpBannerAnimation:model]; + }else if(model.type == GiftBannerType_kitchen){ + [self createStarKitchenBannerAnimation:model]; + }else if(model.type == GiftBannerType_AnchorHour){ + [self createAnchorHourRankAnimation:model]; + }else if(model.type == GiftBannerType_LicneseHour){ + [self createLicneseHourRankAnimation:model]; + } +} + + + + +#pragma mark - 福袋中 四级奖品 +- (void)receiveLuckyGiftBigPrize:(AttachmentModel *)attachment { + if (attachment.second == Custom_Message_Sub_Room_Gift_LuckBag || attachment.second == Custom_Message_Sub_Room_Gift_LuckBag_Server) { + PIBaseAnimationViewModel * prizeModel = [PIBaseAnimationViewModel modelWithDictionary:attachment.data]; + prizeModel.type = GiftBannerType_Lucky; + prizeModel.isInRoomVisiable = attachment.second == Custom_Message_Sub_Room_Gift_LuckBag; + + if(self.animationListB.count == 0 && self.isPlayOfB == NO){ + [self createBigPrizeAnimation:prizeModel]; + } + [self.animationListB addObject:prizeModel]; + + } +} + +- (void)createBigPrizeAnimation:(PIBaseAnimationViewModel *)prizeModel { + self.isPlayOfB = YES; + CGFloat top = 0 ; + if([XPSkillCardPlayerManager shareInstance].isInRoom == YES){ + top = self.isPlayOfA == YES ? 240 : (kNavigationHeight + 15); + }else{ + top = self.isPlayOfA == YES ? 225 - kSafeAreaTopHeight : (kSafeAreaTopHeight + 15); + } + XPRoomLuckyBigPrizeView * luckyGiftEffectView = [[XPRoomLuckyBigPrizeView alloc] initWithFrame:CGRectMake(KScreenWidth, top, 375, 60)]; + luckyGiftEffectView.delegate = self; + [kWindow addSubview:luckyGiftEffectView]; + + luckyGiftEffectView.giftInfo = prizeModel; + + POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; + springAnimation.springSpeed = 12; + springAnimation.springBounciness = 10.f; + springAnimation.fromValue = [NSValue valueWithCGPoint:luckyGiftEffectView.center]; + springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(KScreenWidth / 2, luckyGiftEffectView.center.y)]; + [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + if (finished) { + POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; + moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(KScreenWidth / 2, luckyGiftEffectView.center.y)]; + moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth, luckyGiftEffectView.center.y)]; + moveAnimation.beginTime = CACurrentMediaTime() + 3; + moveAnimation.duration = 0.5; + moveAnimation.repeatCount = 1; + moveAnimation.removedOnCompletion = YES; + [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + [luckyGiftEffectView removeFromSuperview]; + if (self.animationListB.count > 0) { + [self.animationListB removeObjectAtIndex:0]; + } + self.isPlayOfB = NO; + if(self.isAnimationListAFinish == YES){ + self.isAnimationListAFinish = NO; + [self playAnimationWithModel]; + return; + } + [self playAnimationWithModel]; + + }]; + [luckyGiftEffectView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; + } + }]; + [luckyGiftEffectView pop_addAnimation:springAnimation forKey:@"nobleLevelUpspingOutAnimation"]; +} +#pragma mark - XPRoomLuckyBigPrizeViewDelegate +- (void)xPRoomLuckyBigPrizeView:(XPRoomLuckyBigPrizeView *)view luckyGiftInfo:(PIBaseAnimationViewModel *)giftInfo { + if (!giftInfo.isInRoomVisiable && giftInfo.roomUid.length > 0 ) { + [XPRoomViewController openRoom:giftInfo.roomUid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; + } +} +#pragma mark - 糖果树横幅动画 +- (void)receiveCandyTreeGiftHighLevle:(AttachmentModel *)attatchment { + PIBaseAnimationViewModel *giftModel = [PIBaseAnimationViewModel new]; + giftModel.data = attatchment.data; + giftModel.second = attatchment.second; + giftModel.first = attatchment.first; + giftModel.type = GiftBannerType_Love; + if (self.animationListB.count == 0 && self.isPlayOfB == NO) { + [self createCandyTreeBannerAnimation:giftModel]; + } + [self.animationListB addObject:giftModel]; +} + +- (void)createCandyTreeBannerAnimation:(PIBaseAnimationViewModel *)attatchment { + CGFloat kscale = (CGFloat)60 / (CGFloat)375; + self.isPlayOfB = YES; + CGFloat top = 0 ; + if([XPSkillCardPlayerManager shareInstance].isInRoom == YES){ + top = self.isPlayOfA == YES ? 240 : (kNavigationHeight + 15); + }else{ + top = self.isPlayOfA == YES ? 225 - kSafeAreaTopHeight : (kSafeAreaTopHeight + 15); + } + + + XPRoomCandyGiftView *candyTreeView = [[XPRoomCandyGiftView alloc] initWithFrame:CGRectMake(KScreenWidth, top, KScreenWidth , KScreenWidth * kscale)]; + candyTreeView.isMaxLargeGift = attatchment.second == Custom_Message_Sub_Candy_Tree_InRoom_NeedAllMicSend; + candyTreeView.candyInfo = attatchment.data; + [kWindow addSubview:candyTreeView]; + POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; + springAnimation.springSpeed = 12; + springAnimation.springBounciness = 10.f; + springAnimation.fromValue = [NSValue valueWithCGPoint:candyTreeView.center]; + springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(candyTreeView.frame.size.width / 2, candyTreeView.center.y)]; + [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + if (finished) { + POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; + moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, candyTreeView.center.y)]; + moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, candyTreeView.center.y)]; + moveAnimation.beginTime = CACurrentMediaTime() + 3; + moveAnimation.duration = 0.5; + moveAnimation.repeatCount = 1; + moveAnimation.removedOnCompletion = YES; + @kWeakify(self); + [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + @kStrongify(self); + if (finished) { + [candyTreeView removeFromSuperview]; + self.isPlayOfB = NO; + if (self.animationListB.count > 0) { + [self.animationListB removeObjectAtIndex:0]; + } + if(self. isAnimationListAFinish == YES){ + + [self playAnimationWithModel]; + self.isAnimationListAFinish = NO; + return; + } + [self playAnimationWithModel]; + } + }]; + [candyTreeView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; + } + }]; + [candyTreeView pop_addAnimation:springAnimation forKey:@"candyTreespingOutAnimation"]; +} +#pragma mark - 贵族升级 +- (void)receiveNobleLevelUp:(AttachmentModel *)attachment { + PIBaseAnimationViewModel *nobleModel = [PIBaseAnimationViewModel new]; + nobleModel.data = attachment.data; + nobleModel.type = GiftBannerType_Nobleman; + + if (self.animationListB.count == 0 && self.isPlayOfB == NO) { + [self createNobleLevelUpBannerAnimation:nobleModel]; + } + [self.animationListB addObject:nobleModel]; +} + +- (void)createNobleLevelUpBannerAnimation:(PIBaseAnimationViewModel *)model { + self.isPlayOfB = YES; + CGFloat top = 0 ; + if([XPSkillCardPlayerManager shareInstance].isInRoom == YES){ + top = self.isPlayOfA == YES ? 240 : (kNavigationHeight + 15); + }else{ + top = self.isPlayOfA == YES ? 225 - kSafeAreaTopHeight : (kSafeAreaTopHeight + 15); + } + + XPRoomNobleLevelUpView *nobleLevelUpView = [[XPRoomNobleLevelUpView alloc] initWithFrame:CGRectMake(KScreenWidth, top, KScreenWidth, 90)]; + nobleLevelUpView.nobleInfo = model.data; + [kWindow addSubview:nobleLevelUpView]; + POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; + springAnimation.springSpeed = 12; + springAnimation.springBounciness = 10.f; + springAnimation.fromValue = [NSValue valueWithCGPoint:nobleLevelUpView.center]; + springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(nobleLevelUpView.frame.size.width / 2, nobleLevelUpView.center.y)]; + [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + if (finished) { + POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; + moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, nobleLevelUpView.center.y)]; + moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, nobleLevelUpView.center.y)]; + moveAnimation.beginTime = CACurrentMediaTime() + 3; + moveAnimation.duration = 0.5; + moveAnimation.repeatCount = 1; + moveAnimation.removedOnCompletion = YES; + @kWeakify(self); + [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + @kStrongify(self); + if (finished) { + self.isPlayOfB = NO; + [nobleLevelUpView removeFromSuperview]; + if (self.animationListB > 0) { + [self.animationListB removeObjectAtIndex:0]; + } + if(self.isAnimationListAFinish == YES){ + + [self playAnimationWithModel]; + self.isAnimationListAFinish = NO; + return; + } + [self playAnimationWithModel]; + } + }]; + [nobleLevelUpView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; + } + }]; + [nobleLevelUpView pop_addAnimation:springAnimation forKey:@"nobleLevelUpspingOutAnimation"]; +} +#pragma mark - 收到星级厨房飘屏 +-(void)receiveRoomGraffitiStarKitchen:(AttachmentModel *)attacment{ + PIBaseAnimationViewModel *roomGraffiti = [PIBaseAnimationViewModel new]; + roomGraffiti.data = attacment.data; + roomGraffiti.type = GiftBannerType_kitchen; + if(self.animationListB.count == 0 && self.isPlayOfB == NO){ + [self createStarKitchenBannerAnimation:roomGraffiti]; + } + [self.animationListB addObject:roomGraffiti]; +} + +- (void)createStarKitchenBannerAnimation:(PIBaseAnimationViewModel *)attacment{ + self.isPlayOfB = YES; + CGFloat top = 0 ; + if([XPSkillCardPlayerManager shareInstance].isInRoom == YES){ + top = self.isPlayOfA == YES ? 240 : (kNavigationHeight + 15); + }else{ + top = self.isPlayOfA == YES ? 225 - kSafeAreaTopHeight : (kSafeAreaTopHeight + 15); + } + XPRoomStarKitchenBannerView *starKitchenView = [[XPRoomStarKitchenBannerView alloc]initWithFrame:CGRectMake(0, top, KScreenWidth, kGetScaleWidth(60))]; + starKitchenView.isSvga = attacment.second == Custom_Message_Sub_Star_Kitchen_Server; + XPRoomStarKitchenModel *starModel = [XPRoomStarKitchenModel modelWithDictionary:attacment.data]; + starKitchenView.delegate = self; + starKitchenView.starModel = starModel; + [kWindow addSubview:starKitchenView]; + POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; + springAnimation.springSpeed = 12; + springAnimation.springBounciness = 10.f; + springAnimation.fromValue = [NSValue valueWithCGPoint:starKitchenView.center]; + springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(starKitchenView.frame.size.width / 2, starKitchenView.center.y)]; + [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + if (finished) { + POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; + moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, starKitchenView.center.y)]; + moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, starKitchenView.center.y)]; + moveAnimation.beginTime = CACurrentMediaTime() + 3; + moveAnimation.duration = 0.5; + moveAnimation.repeatCount = 1; + moveAnimation.removedOnCompletion = YES; + @kWeakify(self); + [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + @kStrongify(self); + if (finished) { + [starKitchenView removeFromSuperview]; + self.isPlayOfB = NO; + + if(self.animationListB.count > 0){ + [self.animationListB removeObjectAtIndex:0]; + } + if(self. isAnimationListAFinish == YES){ + + [self playAnimationWithModel]; + self.isAnimationListAFinish = NO; + return; + } + [self playAnimationWithModel]; + } + }]; + [starKitchenView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; + } + }]; + [starKitchenView pop_addAnimation:springAnimation forKey:@"starKitchenOutAnimation"]; +} +#pragma mark - XPRoomStarKitchenBannerViewDelegate +- (void)xPRoomStarKitchenBannerView:(XPRoomStarKitchenBannerView *)view didClick:(XPRoomStarKitchenModel *)starModel{ + if(starModel.skipUrl == nil || starModel.skipUrl.length == 0)return; + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + webVC.isPush = YES; + webVC.roomUid = starModel.roomUid; + webVC.url = starModel.skipUrl; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:webVC animated:YES]; + +} +#pragma mark - 牌照房小时榜飘屏 +- (void)receiveLicneseHourRank:(AttachmentModel *)attachment { + PIBaseAnimationViewModel *licneseModel =[PIBaseAnimationViewModel new]; + licneseModel.data = attachment.data; + licneseModel.type = GiftBannerType_AnchorHour; + if(self.animationListB.count == 0 && self.isPlayOfB == NO){ + [self createLicneseHourRankAnimation:licneseModel]; + } + [self.animationListB addObject:licneseModel]; +} +- (void)createLicneseHourRankAnimation:(PIBaseAnimationViewModel *)attachment { + self.isPlayOfB = YES; + CGFloat top = 0 ; + if([XPSkillCardPlayerManager shareInstance].isInRoom == YES){ + top = self.isPlayOfA == YES ? 240 : (kNavigationHeight + 15); + }else{ + top = self.isPlayOfA == YES ? 225 - kSafeAreaTopHeight : (kSafeAreaTopHeight + 15); + } XPRoomLicneseHourRankView *anchorRankView = [[XPRoomLicneseHourRankView alloc] initWithFrame:CGRectMake(KScreenWidth, top, 375, 60)]; + anchorRankView.delegate = self; + anchorRankView.licneseRankInfo = [RoomHalfHourRankModel modelWithDictionary:attachment.data]; + [kWindow addSubview:anchorRankView]; + POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; + springAnimation.springSpeed = 12; + springAnimation.springBounciness = 10.f; + springAnimation.fromValue = [NSValue valueWithCGPoint:anchorRankView.center]; + springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(KScreenWidth / 2, anchorRankView.center.y)]; + [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + if (finished) { + POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; + moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(KScreenWidth / 2, anchorRankView.center.y)]; + moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth, anchorRankView.center.y)]; + moveAnimation.beginTime = CACurrentMediaTime() + 3; + moveAnimation.duration = 0.5; + moveAnimation.repeatCount = 1; + moveAnimation.removedOnCompletion = YES; + [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + [anchorRankView removeFromSuperview]; + self.isPlayOfB = NO; + + if(self.animationListB.count > 0){ + [self.animationListB removeObjectAtIndex:0]; + } + if(self.isAnimationListAFinish == YES){ + self.isAnimationListAFinish = NO; + [self playAnimationWithModel]; + return; + } + [self playAnimationWithModel]; + }]; + [anchorRankView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; + } + }]; + [anchorRankView pop_addAnimation:springAnimation forKey:@"nobleLevelUpspingOutAnimation"]; +} +- (void)xPRoomLicneseHourRankView:(XPRoomLicneseHourRankView *)view rankInfo:(RoomHalfHourRankModel *)rankInfo { + + + [XPRoomViewController openRoom:rankInfo.uid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; + + +} + +#pragma mark - 个播小时榜飘屏 +- (void)receiveAnchorHourRank:(AttachmentModel *)attachment { + PIBaseAnimationViewModel *anchorModel =[PIBaseAnimationViewModel new]; + anchorModel.data = attachment.data; + anchorModel.type = GiftBannerType_AnchorHour; + if(self.animationListB.count == 0 && self.isPlayOfB == NO){ + [self createAnchorHourRankAnimation:anchorModel]; + } + [self.animationListB addObject:anchorModel]; +} +- (void)createAnchorHourRankAnimation:(PIBaseAnimationViewModel *)attachment { + self.isPlayOfB = YES; + CGFloat top = 0 ; + if([XPSkillCardPlayerManager shareInstance].isInRoom == YES){ + top = self.isPlayOfA == YES ? 240 : (kNavigationHeight + 15); + }else{ + top = self.isPlayOfA == YES ? 225 - kSafeAreaTopHeight : (kSafeAreaTopHeight + 15); + } XPRoomAnchorRankBannerView *anchorRankView = [[XPRoomAnchorRankBannerView alloc] initWithFrame:CGRectMake(KScreenWidth,top, KScreenWidth, 60)]; + anchorRankView.anchorRankInfo = [RoomHalfHourRankModel modelWithDictionary:attachment.data]; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(gotoTopRankAnchorRoom:)]; + [anchorRankView addGestureRecognizer:tap]; + [kWindow addSubview:anchorRankView]; + POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; + springAnimation.springSpeed = 12; + springAnimation.springBounciness = 10.f; + springAnimation.fromValue = [NSValue valueWithCGPoint:anchorRankView.center]; + springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(anchorRankView.frame.size.width / 2, anchorRankView.center.y)]; + [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + if (finished) { + POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; + moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, anchorRankView.center.y)]; + moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, anchorRankView.center.y)]; + moveAnimation.beginTime = CACurrentMediaTime() + 3; + moveAnimation.duration = 0.5; + moveAnimation.repeatCount = 1; + moveAnimation.removedOnCompletion = YES; + [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + [anchorRankView removeFromSuperview]; + self.isPlayOfB = NO; + if(self.animationListB.count > 0){ + [self.animationListB removeObjectAtIndex:0]; + } + if(self.isAnimationListAFinish == YES){ + self.isAnimationListAFinish = NO; + [self playAnimationWithModel]; + return; + } + [self playAnimationWithModel]; + }]; + [anchorRankView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; + } + }]; + [anchorRankView pop_addAnimation:springAnimation forKey:@"nobleLevelUpspingOutAnimation"]; +} +- (void)gotoTopRankAnchorRoom:(UITapGestureRecognizer *)tap { + XPRoomAnchorRankBannerView * view = (XPRoomAnchorRankBannerView *)tap.view; + if (view.anchorRankInfo.uid.integerValue > 0) { + + [XPRoomViewController openRoom:view.anchorRankInfo.uid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; + + } +} +#pragma mark - 懒加载 +- (NSMutableArray *)animationListA{ + if(!_animationListA){ + _animationListA = [NSMutableArray array]; + } + return _animationListA; +} +- (NSMutableArray *)animationListB{ + if(!_animationListB){ + _animationListB = [NSMutableArray array]; + } + return _animationListB; +} + +@end diff --git a/YuMi/Modules/YMTabbar/View/TabbarRegardGovernancer.h b/YuMi/Modules/YMTabbar/View/TabbarRegardGovernancer.h deleted file mode 100644 index 4cd26c4b..00000000 --- a/YuMi/Modules/YMTabbar/View/TabbarRegardGovernancer.h +++ /dev/null @@ -1,11 +0,0 @@ -// -// ViewController.h -// YUMI -// -// Created by admin on 2023/3/9. -// - -@interface TabbarRegardGovernancer : UITabBarController - -@end - diff --git a/YuMi/Modules/YMTabbar/View/TabbarRegardGovernancer.m b/YuMi/Modules/YMTabbar/View/TabbarRegardGovernancer.m deleted file mode 100644 index 70885aab..00000000 --- a/YuMi/Modules/YMTabbar/View/TabbarRegardGovernancer.m +++ /dev/null @@ -1,850 +0,0 @@ -// -// ViewController.m -// YUMI -// -// Created by admin on 2023/3/9. -// -#import -#import -#import -#import -#import -#import -#import -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "NSObject+MJExtension.h" -#import "XNDJTBWGLoadingTool.h" -#import "AccountAbstractStorage.h" -#import "MKJPopup.h" -#import "YUMIConstant.h" -#import "YUMIChamberMiniExecutive.h" -#import "ClientDisposition.h" -#import "RealtimackExecutive.h" -#import "XCCurrentVCStackExecutive.h" -#import "Api+Home.h" -#import "YUMIConstant.h" -#import "StatsticsticsServingFacilitater.h" -#import "Api+Monents.h" -#import "YUMIAdIndicateTool.h" -#import "YYUtility.h" -#import "YUMIWeakIntratemporalr.h" -#import "PLIntratemporalUtil.h" -#import "AccountMatrix.h" -#import "ChamberAbstractMatrix.h" -#import "AttachmentMatrix.h" -#import "YUMIManeVacationerUnReadMatrix.h" -#import "CallforConsumerAbstractMatrix.h" -#import "StrangeConsumerBewelcometoMatrix.h" -#import "DiscoveryStrangeBewelcometoCommunicationMatrix.h" -#import "YUMITabKellegSolitaireMatrix.h" -#import "ThresholdReindictMatrix.h" -#import "SeparationsUnReadMatrix.h" -#import "YUMIAchieveDeficitSheatheMatrix.h" -#import "YUMIChamberPresentBroadCastMatrix.h" -#import "YUMIVersionRefurbishMatrix.h" -#import "TabbarRegardGovernancer.h" -#import "YUMIBlankRegardGovernancer.h" -#import "YUMISurmountRegardGovernancer.h" -#import "BaseNevigationGovernancer.h" -#import "SurmountDilemmaMobileRegardGovernancer.h" -#import "SurmountFullAbstractRegardGovernancer.h" -#import "YUMIManeRegardGovernancer.h" -#import "InterlocutionStatementRegardGovernancer.h" -#import "YUMIStrangeResidenceRegardGovernancer.h" -#import "YUMIMiniChamberRegard.h" -#import "YUMIChamberRegardGovernancer.h" -#import "YUMIInterlocutionDiscoveryStrangePrecautiousRegard.h" -#import "XCombatellegSolitaireRegard.h" -#import "YUMImissionCompleteTipRegard.h" -#import "YUMITissueRegardGovernancer.h" -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -#import "YUMIManeSimpleConsumerAbstractRegardGovernancer.h" -#import "YUMISeparationsEncourageRegardGovernancer.h" -#import "YUMISeparationsRegardGovernancer.h" -#import "YUMIAchieveDeficitSheatheRegard.h" -#import "YUMIChamberYearImportpriseRegard.h" -#import "YUMIAscensionRegard.h" -#import "YUMITabObstacle.h" -#import "YUMIMomentStatementRegardGovernancer.h" -#import "YUMIResidenceSloganRegardGovernancer.h" -#import "YUMISimpleManeRegardGovernancer.h" -#import "MainExternalizer.h" -#import "MainCeremony.h" -#import "ChamberHostRepresendtation.h" - -UIKIT_EXTERN NSString * kUserCompleteInfoFinishKey; -NSString * const kUserFirstLoginKey = @"kUserFirstLoginKey"; -NSString * const kHadLaunchApp = @"kHadLaunchApp"; -NSString * const kLastShowAnchorCardTime = @"kLastShowAnchorCardTime"; -NSString * const kNetworkReachabilityKey = @"kNetworkReachabilityKey"; -UIKIT_EXTERN NSString * kNewUserRechargeKey; -UIKIT_EXTERN NSString *kTabShowAnchorCardKey; - -@interface TabbarRegardGovernancer () -{ - NSTimer * timer; -} - -@property (nonatomic, strong) MainExternalizer *presimport; -@property (nonatomic,strong) YUMIMiniChamberRegard *chamberManeRegard; -@property (nonatomic,copy) NSString *centiretyforCryptogram; -@property (nonatomic, assign) BOOL demandsExhibitStrangeConsumerReindict; -@property (nonatomic, assign) BOOL demandsExhibitKellegSolitaire; -@property (nonatomic, assign) BOOL delayExhibitKellegSolitaire; -@property (nonatomic, strong) XCombatellegSolitaireRegard *kellegSolitaireRegard; -@property (nonatomic, strong) YUMImissionCompleteTipRegard *taskPromptRegard; -@property (nonatomic,weak) iddelegate; -@property (nonatomic,strong) NSMutableArray *presentPingencourageFormation; -@property (nonatomic, assign) BOOL parentMode; -@property (nonatomic,assign) BOOL isThresholdConceivable; -@property (nonatomic,assign) BOOL isReload; -@end - -@implementation TabbarRegardGovernancer - -- (void)viewDidLoad { - [super viewDidLoad]; - YUMITabObstacle *tabBar = [[YUMITabObstacle alloc] init]; - [self setValue:tabBar forKey:@"tabBar"]; - - [self prohibitipositionTheme]; - [self initTarbss:NO]; - [[ClientDisposition partowardsiciptowardsionDisposition] clientInit]; - [[NIMSDK sharedSDK].loginManager addDelegate:self]; - [[NIMSDK sharedSDK].chatManager addDelegate:self]; - [[NIMSDK sharedSDK].systemNotificationManager addDelegate:self]; - [[NIMSDK sharedSDK].broadcastManager addDelegate:self]; - [self.presimport juliandDirectoryCentiretyEncourageApi]; - [self networkReachability]; - [self.view addSubview:self.chamberManeRegard]; - [[NSNotificationCenter defaultCenter] addObserverForName:kRoomMiniNotificationKey object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) { - [self prohibitipositionChamberRoadliceNRegard:note.userInfo]; - }]; - - [[NSNotificationCenter defaultCenter] addObserverForName:kUserCompleteInfoFinishKey object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) { - [self accomplishConsumerAbstractAccomplish:note.object]; - }]; - - [[NSNotificationCenter defaultCenter] addObserverForName:@"reloadnewtab" object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) { - if (self.isReload) { - [self initTarbss:YES]; - self.isReload = YES; - } - }]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(EvidenceStrangeConsumerReindict) name:kNewUserRechargeKey object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(EvidenceKellegSolitaireDigital:) name:kTabShowAnchorCardKey object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(teenagerPositionDiversifictowardsion:) name:kTeenagerStatusChange object:nil]; - -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - [self.navigationController setNavigationBarHidden:YES animated:YES]; - [self.presimport autoLogin]; - if ([YUMIChamberMiniExecutive shareManager].acquireChamberAbstract == nil) { - [self.chamberManeRegard hiddenChamberRoadliceRegard]; - } -} - -- (void)viewWillDisappear:(BOOL)animated { - [super viewWillDisappear:animated]; - self.delayExhibitKellegSolitaire = NO; - [self.kellegSolitaireRegard removeFromSuperview]; - self.kellegSolitaireRegard = nil; -} - -- (MainExternalizer *)presimport { - if (_presimport == nil) { - _presimport = [[MainExternalizer alloc] init]; - [_presimport towardsttowardschRegard:self]; - } - return _presimport; -} - - -- (void)autoSurmountAccomplishment { - [self.presimport surmountNEMC]; - [self.presimport getUserInfo]; - - [self.presimport examineSplconcludeid]; - - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - [self.presimport acquireReleaseRefurbish]; - - if (self.centiretyforCryptogram && self.centiretyforCryptogram.length > 0) { - - [self.presimport examineCentiretyforConsumerAbstract:self.centiretyforCryptogram]; - } - } - - - - - - YUMIAdIndicateTool.partowardsiciptowardsionIndictowardseUtensil.isImSurmount = YES; - - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - if ([self hadLaunchAplictowardsion] && [self canExhibitKellegSolitaire]) { - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - if (self.view.window && self.isViewLoaded) { - [self.presimport acquireKellegSolitaireAbstract]; - } - }); - } - if (self.demandsExhibitKellegSolitaire && !self.delayExhibitKellegSolitaire && !self.parentMode) { - [self.presimport acquireKellegSolitaireAbstract]; - [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kHadLaunchApp]; - [[NSUserDefaults standardUserDefaults] synchronize]; - } - } -} - -- (void)acquireConsumerAbstractAccomplishment:(ConsumerAbstractMatrix *)userInfo { - if (!userInfo.isBindPhone && [ClientDisposition partowardsiciptowardsionDisposition].iosMobileBind) { - SurmountDilemmaMobileRegardGovernancer * bindPhoneVC = [[SurmountDilemmaMobileRegardGovernancer alloc] init]; - BaseNevigationGovernancer * nav = [[BaseNevigationGovernancer alloc] initWithRootViewController:bindPhoneVC]; - nav.modalPresentationStyle = UIModalPresentationFullScreen; - [self.navigationController presentViewController:nav animated:YES completion:nil]; - return; - } - if (userInfo.nick == nil || userInfo.avatar == nil) { - [self accomplishConsumerAbstract]; - return; - } - [self initTarbss:YES]; - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - if (self.centiretyforCryptogram.length <= 0) { - [self initFlexibleImportChamber]; - } - if (self.centiretyforCryptogram) { - self.centiretyforCryptogram = nil; - } - [self separtowardsionsUnLireComputtowardsion]; - } - self.parentMode = userInfo.parentMode; - for (BaseRegardGovernancer *vc in self.viewControllers) { - vc.parentMode = self.parentMode; - } -} - -- (void)examineCentiretyforConsumerAbstractAccomplishment:(CallforConsumerAbstractMatrix *)inviteInfo { - if (inviteInfo && inviteInfo.isInRoom && !self.parentMode) { - [YUMIChamberRegardGovernancer unfoildChamber:inviteInfo.roomUid fromNick:inviteInfo.inviteNick fromType:inviteInfo.fromType fromUid:inviteInfo.inviteUid viewController:self]; - } else { - [self.presimport acquireShortDeficitucedEncourageChamber]; - } -} - -- (void)acquireShortDeficitucedEncourageChamberSuccces:(NSString *)roomUid { - if (self.parentMode) { - return; - } - if (roomUid.length > 0) { - [YUMIChamberRegardGovernancer unfoildChamber:roomUid viewController:self]; - } -} - -#pragma mark - app 启动调用此接口 主要功能: 给主播分流 -- (void)clientInititowardseAplictowardsion { -} -#pragma mark - 网络状态监听 -- (void)networkReachability{ - [[AFNetworkReachabilityManager sharedManager] startMonitoring]; - [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { - switch (status) { - case AFNetworkReachabilityStatusUnknown: - self.isThresholdConceivable = YES; - break; - case AFNetworkReachabilityStatusNotReachable: - self.isThresholdConceivable = YES; - break; - case AFNetworkReachabilityStatusReachableViaWWAN: - case AFNetworkReachabilityStatusReachableViaWiFi: - { - if (self.isThresholdConceivable) { - [[NSNotificationCenter defaultCenter] postNotificationName:kNetworkReachabilityKey object:nil userInfo:nil]; - [self.presimport autoLogin]; - [[ClientDisposition partowardsiciptowardsionDisposition] clientInit]; - } - self.isThresholdConceivable = YES; - } - break; - default: - break; - } - }]; -} - -#pragma mark - BaseMvpCeremony -- (void)tokenInvalid { - YUMISurmountRegardGovernancer *lvc = [[YUMISurmountRegardGovernancer alloc] init]; - BaseNevigationGovernancer * nav = [[BaseNevigationGovernancer alloc] initWithRootViewController:lvc]; - nav.modalPresentationStyle = UIModalPresentationFullScreen; - [self.navigationController presentViewController:nav animated:YES completion:nil]; - YUMIAdIndicateTool.partowardsiciptowardsionIndictowardseUtensil.isImSurmount = NO; -} - -- (void)accomplishConsumerAbstract { - SurmountFullAbstractRegardGovernancer * bindPhoneVC = [[SurmountFullAbstractRegardGovernancer alloc] init]; - BaseNevigationGovernancer * nav = [[BaseNevigationGovernancer alloc] initWithRootViewController:bindPhoneVC]; - nav.modalPresentationStyle = UIModalPresentationFullScreen; - [self.navigationController presentViewController:nav animated:YES completion:nil]; -} - -- (void)acquireKellegSolitaireAbstractAccomplishment:(YUMITabKellegSolitaireMatrix *)automobiledAbstract { - if (self.parentMode) { - return; - } - if (!self.kellegSolitaireRegard.superview && automobiledAbstract && self.isViewLoaded && self.view.window) { - self.kellegSolitaireRegard.frame = CGRectMake(0, -90-kStatusBarHeight, KScreenWidth, 90); - [UIView animateWithDuration:0.5 animations:^{ - self.kellegSolitaireRegard.frame = CGRectMake(0, kStatusBarHeight, KScreenWidth, 90); - } completion:nil]; - AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); - long time = (long)([[NSDate date] timeIntervalSince1970]*1000); - [[NSUserDefaults standardUserDefaults] setObject:@(time) forKey:kLastShowAnchorCardTime]; - [[NSUserDefaults standardUserDefaults] synchronize]; - self.kellegSolitaireRegard.automobiledAbstract = automobiledAbstract; - [self.view addSubview:self.kellegSolitaireRegard]; - UISwipeGestureRecognizer *recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(shankKellegSolitaireSwipeByvirtueof:)]; - [recognizer setDirection:(UISwipeGestureRecognizerDirectionUp)]; - [self.kellegSolitaireRegard addGestureRecognizer:recognizer]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventPersonalshowTopCardShow]; - } -} - -- (void)acquireReleaseRefurbish:(YUMIVersionRefurbishMatrix *)versionMatrix { - YUMIAscensionRegard *view = [[YUMIAscensionRegard alloc] init]; - view.versionMatrix = versionMatrix; - MKJPopupServing * service = [[MKJPopupServing alloc] init]; - service.contentView = view; - service.shouldDismissOnBackgroundTouch = NO; - [MKJPopup popupAboutDisposition:service]; -} - -#pragma mark - NIMLoginManagerDelegate -- (void)onAutoLoginFailed:(NSError *)error { - - if (error.code == 417) { - @weakify(self); - AccountMatrix* accountModel = [AccountAbstractStorage instance].acquireUniversalSequenceriptionAbstract; - [[NIMSDK sharedSDK].loginManager login:accountModel.uid token:accountModel.netEaseToken completion:^(NSError * _Nullable error) { - if (error) { - @strongify(self); - [self.presimport logout]; - } - }]; - return; - } - [self.presimport logout]; -} - -- (void)onKickout:(NIMLoginKickoutResult *)result { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:YMLocalizedString(@"Tabbar_View_Controller_0")]; - UIViewController *rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController; - if ([rootViewController presentedViewController]) { - [[rootViewController presentedViewController] dismissViewControllerAnimated:YES completion:^{ - if ([[XCCurrentVCStackExecutive shareManager] getCurrentVC].navigationController.viewControllers.count > 1) { - [[[XCCurrentVCStackExecutive shareManager] getCurrentVC].navigationController popToRootViewControllerAnimated:YES]; - } - if ([[UIApplication sharedApplication].delegate.window.rootViewController isKindOfClass:[UITabBarController class]]) { - UITabBarController *tabVC = (UITabBarController *)[UIApplication sharedApplication].delegate.window.rootViewController; - if (tabVC.selectedViewController.navigationController) { - [tabVC.selectedViewController.navigationController popToRootViewControllerAnimated:YES]; - } - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [tabVC setSelectedIndex:0]; - }); - } - }]; - }else { - if ([[XCCurrentVCStackExecutive shareManager] getCurrentVC].navigationController.viewControllers.count > 1) { - [[[XCCurrentVCStackExecutive shareManager] getCurrentVC].navigationController popToRootViewControllerAnimated:YES]; - } - if ([[UIApplication sharedApplication].delegate.window.rootViewController isKindOfClass:[UITabBarController class]]) { - UITabBarController *tabVC = (UITabBarController *)[UIApplication sharedApplication].delegate.window.rootViewController; - if (tabVC.selectedViewController) { - if ([tabVC.selectedViewController isKindOfClass:[UINavigationController class]]) { - [tabVC.selectedViewController popToRootViewControllerAnimated:YES]; - } else { - [tabVC.selectedViewController.navigationController popToRootViewControllerAnimated:YES]; - } - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [tabVC setSelectedIndex:0]; - }); - } - } - } - - if ([YUMIChamberMiniExecutive shareManager].acquireChamberAbstract) { - [[RealtimackExecutive instance] exitRoom]; - [[NIMSDK sharedSDK].chatroomManager exitChatroom:[NSString stringWithFormat:@"%ld", [YUMIChamberMiniExecutive shareManager].acquireChamberAbstract.roomId] completion:nil]; - [self.chamberManeRegard hiddenChamberRoadliceRegard]; - } - [self.presimport logout]; -} - -#pragma mark - NIMChatManagerDelegate - -- (void)onRecvMessages:(NSArray *)messages { - if (self.parentMode || ![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - return; - } - for (NIMMessage * message in messages) { - if (message.session.sessionType == NIMSessionTypeP2P) { - if(message.messageType == NIMMessageTypeCustom) { - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentMatrix class]]) { - AttachmentMatrix * attachment = obj.attachment; - if (attachment.first == IndividualityCommunicationGenre_FindNew && attachment.second == Custom_Message_Find_New_Greet_New_User) { - DiscoveryStrangeBewelcometoCommunicationMatrix * greetInfo = [DiscoveryStrangeBewelcometoCommunicationMatrix mtowardsrixAboutImpactbasket:attachment.data]; - if (greetInfo.uid.integerValue != [AccountAbstractStorage instance].acquireCid.integerValue) { - [MKJPopup dismiss]; - YUMIInterlocutionDiscoveryStrangePrecautiousRegard * alertView = [[YUMIInterlocutionDiscoveryStrangePrecautiousRegard alloc] init]; - alertView.userInfo = greetInfo; - MKJPopupServing *service = [[MKJPopupServing alloc] init]; - service.contentView = alertView; - service.shouldDismissOnBackgroundTouch = NO; - service.style = MKJPopupStyleAlert; - [MKJPopup popupAboutDisposition:service]; - } - } - } - } - } - } -} - - -- (void)onReceiveBroadcastMessage:(NIMBroadcastMessage *)broadcastMessage { - if (![ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - return; - } - if (broadcastMessage.content) { - NSDictionary *msgDictionary = [broadcastMessage.content toJSONGroal]; - AttachmentMatrix *attachment = [AttachmentMatrix mtowardsrixAboutJSON:msgDictionary[@"body"]]; - if (attachment.first == IndividualityCommunicationGenre_RedPacket && attachment.second == Custom_Message_Sub_AllDiamandRedPacket) { - YUMIAchieveDeficitSheatheMatrix *data = [YUMIAchieveDeficitSheatheMatrix mtowardsrixAboutImpactbasket:attachment.data]; - - __block BOOL isInRoom; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj isKindOfClass:[YUMIChamberRegardGovernancer class]]) { - YUMIChamberRegardGovernancer * chamberVewC = obj; - ChamberAbstractMatrix *roomInfo = [chamberVewC acquireChamberAbstract]; - YUMIAchieveDeficitSheatheRegard *view = [[YUMIAchieveDeficitSheatheRegard alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; - if (roomInfo.uid == data.roomUid.integerValue) { - view.inEntiretySheatheChamber = YES; - } else { - view.inEntiretySheatheChamber = NO; - } - YUMIAchieveDeficitSheatheMatrix *data = [YUMIAchieveDeficitSheatheMatrix mtowardsrixAboutJSON:attachment.data]; - view.deficitSheatheMatrix = data; - [chamberVewC.view addSubview:view]; - [chamberVewC.view bringSubviewToFront:view]; - *stop = YES; - isInRoom = YES; - } - }]; - if (!isInRoom) { - UIViewController *currentVc = [[XCCurrentVCStackExecutive shareManager] getCurrentVC]; - YUMIAchieveDeficitSheatheRegard *view = [[YUMIAchieveDeficitSheatheRegard alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; - view.inEntiretySheatheChamber = NO; - YUMIAchieveDeficitSheatheMatrix *data = [YUMIAchieveDeficitSheatheMatrix mtowardsrixAboutJSON:attachment.data]; - view.deficitSheatheMatrix = data; - [currentVc.view addSubview:view]; - [currentVc.view bringSubviewToFront:view]; - } - } else if (attachment.first == IndividualityCommunicationGenre_Gift && attachment.second == Custom_Message_Sub_Gift_ChannelNotify){ - [self achieveBroadcastPresent:attachment]; - }else if(attachment.first == IndividualityCommunicationGenre_Version_Update && attachment.second == Custom_Message_Version_Update_Value){ - NSString *osValue = attachment.data[@"updateOs"]; - if([osValue isEqualToString:@"ios"] && [AccountAbstractStorage instance].acquireCid.length > 0){ - YUMIVersionRefurbishMatrix *updateModel = [YUMIVersionRefurbishMatrix mtowardsrixAboutImpactbasket:attachment.data]; - [self acquireReleaseRefurbish:updateModel]; - } - } - } -} - - -- (void)onRecvRevokeMessageNotification:(NIMRevokeMessageNotification *)notification { - NIMMessage * message = notification.message; - if (message) { - NIMMessage * revokeMessage = [[NIMMessage alloc] init]; - [revokeMessage setValue:message.session forKey:@"session"]; - [revokeMessage setValue:@(NIMMessageTypeTip) forKey:@"messageType"]; - revokeMessage.timestamp = [PLIntratemporalUtil acquireNowIntrtowardsemporalIntrtowardsemporalstampMilliinstant].longLongValue; - revokeMessage.text = YMLocalizedString(@"Tabbar_View_Controller_1"); - [[NIMSDK sharedSDK].conversationManager saveMessage:revokeMessage forSession:message.session completion:nil]; - } -} - -- (void)prohibitipositionTheme { - self.view.backgroundColor = [DJDKMIMOMColor tabbarRegardPrettify]; - if (@available(iOS 10.0, *)) { - [[UITabBar appearance] setUnselectedItemTintColor:[DJDKMIMOMColor tabbarOrdinaryPrettify]]; - } -} - -- (void)initTarbss:(BOOL)logined { - self.viewControllers = nil; - NSArray *normalImageNames = @[@"tab_gameHome_normal",@"tab_monents_normal",@"tab_message_normal", @"tab_mine_normal"]; - NSArray *selectImageNames = @[@"tab_gameHome_selected",@"tab_monents_select",@"tab_message_selected", @"tab_mine_selected"]; - NSArray *tabLabel = @[@"首页",@"动态",@"消息", YMLocalizedString(@"Tabbar_View_Controller_5")]; - - UIViewController *game; - UIViewController *msg; - UIViewController *me; - UIViewController * home; - UIViewController * reminiscence; - if (logined) { - msg = [[InterlocutionStatementRegardGovernancer alloc] init]; - - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - home = [[YUMIStrangeResidenceRegardGovernancer alloc] init]; - reminiscence = [[YUMISeparationsRegardGovernancer alloc] init]; - me = [[YUMIManeRegardGovernancer alloc] init]; - }else{ - home = [[YUMIResidenceSloganRegardGovernancer alloc] init]; - reminiscence = [[YUMIMomentStatementRegardGovernancer alloc] init]; - me = [[YUMISimpleManeRegardGovernancer alloc] init]; - } - } else { - game = [[YUMIBlankRegardGovernancer alloc]init]; - msg = [[InterlocutionStatementRegardGovernancer alloc]init]; - me = [[YUMIBlankRegardGovernancer alloc]init]; - home = [[YUMIBlankRegardGovernancer alloc] init]; - reminiscence = [[YUMIBlankRegardGovernancer alloc] init]; - } - [self produceTarbsObstacleProvision:home title:tabLabel[0] image:normalImageNames[0] selectedImage:selectImageNames[0]]; - [self produceTarbsObstacleProvision:reminiscence title:tabLabel[1] image:normalImageNames[1] selectedImage:selectImageNames[1]]; - [self produceTarbsObstacleProvision:msg title:tabLabel[2] image:normalImageNames[2] selectedImage:selectImageNames[2]]; - [self produceTarbsObstacleProvision:me title:tabLabel[3] image:normalImageNames[3] selectedImage:selectImageNames[3]]; - self.viewControllers = @[home,reminiscence,msg,me]; - self.selectedIndex = 0; -} - -- (BaseNevigationGovernancer *)produceTarbsObstacleProvision:(UIViewController *)itemVc title:(NSString *)title image:(NSString *)image selectedImage:(NSString *)selectedImage{ - itemVc.title = title; - itemVc.tabBarItem.image = [[UIImage imageNamed:image] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; - itemVc.tabBarItem.selectedImage = [[UIImage imageNamed:selectedImage] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; - BaseNevigationGovernancer *nav = [[BaseNevigationGovernancer alloc] initWithRootViewController:itemVc]; - return nav; -} - -- (void)EvidenceAccomplishmentToast:(NSString *)msg { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; -} - -- (void)EvidenceMistakeToast:(NSString *)msg { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; -} - -- (void)EvidenceChambering { - [XNDJTBWGLoadingTool EvidenceChambering]; -} - -- (void)brakeHUD { - [XNDJTBWGLoadingTool brakeHUD]; -} - -#pragma mark - 动态 -- (void)separtowardsionsUnLireComputtowardsion { - [Api separtowardsionsUnLireComputtowardsion:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - SeparationsUnReadMatrix * model = [SeparationsUnReadMatrix mtowardsrixAboutImpactbasket:data.data]; - NSString *badge = model.total > 0 ? @(model.total).stringValue : nil; - if (model.total > 99) { - badge = @"99+"; - } - NSUInteger index = 1; - UITabBarItem *item = self.tabBar.items.count > index ? self.tabBar.items[index] : nil; - [item setBadgeValue:badge]; - } - } uid:[AccountAbstractStorage instance].acquireCid]; -} - -#pragma mark - 房间最小化 -- (void)prohibitipositionChamberRoadliceNRegard:(NSDictionary *)dic { - ConsumerAbstractMatrix * userInfo = [ConsumerAbstractMatrix mtowardsrixAboutImpactbasket:dic[@"userInfo"]]; - ChamberAbstractMatrix * roomInfo = [ChamberAbstractMatrix mtowardsrixAboutImpactbasket:dic[@"roomInfo"]]; - NSMutableDictionary * microQueue = dic[@"microQueue"]; - [self.chamberManeRegard prohibitipositionChamberRoadliceRegard:roomInfo userInfo:userInfo micQueue:microQueue]; -} - -#pragma mark - 快捷进房 -- (void)initFlexibleImportChamber { - NSString * key = [NSString stringWithFormat:@"%@_%@", kUserFirstLoginKey, [AccountAbstractStorage instance].acquireCid]; - BOOL isNotFirstLogin = [[NSUserDefaults standardUserDefaults] boolForKey:key]; - if (!isNotFirstLogin) { - - } -} - -- (void)accomplishConsumerAbstractAccomplish:(NSString *)centiretyforCryptogram { - self.centiretyforCryptogram = centiretyforCryptogram; -} -#pragma mark -NIMSystemNotificationManagerDelegate -- (void)onReceiveCustomSystemNotification:(NIMCustomSystemNotification *)notification { - if (self.parentMode) { - return; - } - if (notification.receiverType == NIMSessionTypeP2P) { - if (notification.content != nil) { - NSData *jsonData = [notification.content dataUsingEncoding:NSUTF8StringEncoding]; - NSError *err; - NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err]; - if(err) { - NSLog(@"json解析失败:%@",err); - return; - } - if ([dic[@"first"] integerValue] == IndividualityCommunicationGenre_First_VisitorRecord){ - AttachmentMatrix *attachment = [AttachmentMatrix mtowardsrixAboutJSON:notification.content]; - YUMIManeVacationerUnReadMatrix *model = [YUMIManeVacationerUnReadMatrix mtowardsrixAboutJSON:attachment.data]; - if ([model isKindOfClass:YUMIManeVacationerUnReadMatrix.class]) { - [[NSNotificationCenter defaultCenter] postNotificationName:kVisitorUnReadCountNotificationKey object:model]; - } - } else if ([dic[@"first"] intValue] == IndividualityCommunicationGenre_Task_Complete && [dic[@"second"] intValue] == Custom_Message_Sub_TaskComplete) { - if ([dic isKindOfClass:[NSDictionary class]]) { - NSDictionary *dict = dic[@"data"]; - [self shankImportpriseTaskPrompt:dict[@"taskCompleteMsg"] url:dic[@"taskUrl"]]; - } - } - } - } -} - -#pragma mark - 主播卡片弹窗 -- (void)EvidenceStrangeConsumerReindict { - self.demandsExhibitStrangeConsumerReindict = YES; -} - -- (void)EvidenceKellegSolitaireDigital:(NSNotification *)noti { - NSDictionary * dic = noti.object; - self.delayExhibitKellegSolitaire = [[dic objectForKey:@"delayShow"] boolValue]; - self.demandsExhibitKellegSolitaire = YES; -} - -- (BOOL)hadLaunchAplictowardsion { - return [[NSUserDefaults standardUserDefaults] valueForKey:kHadLaunchApp]; -} - -- (void)teenagerPositionDiversifictowardsion:(NSNotification *)noti { - NSDictionary * dic = noti.object; - self.parentMode = [[dic objectForKey:@"parentMode"] boolValue]; - for (BaseRegardGovernancer *vc in self.viewControllers) { - vc.parentMode = self.parentMode; - } - if ([YUMIChamberMiniExecutive shareManager].acquireChamberAbstract && self.parentMode) { - [[RealtimackExecutive instance] exitRoom]; - [[NIMSDK sharedSDK].chatroomManager exitChatroom:[NSString stringWithFormat:@"%ld", [YUMIChamberMiniExecutive shareManager].acquireChamberAbstract.roomId] completion:nil]; - [self.chamberManeRegard hiddenChamberRoadliceRegard]; - } -} - -- (BOOL)canExhibitKellegSolitaire { - if ([[YUMIChamberMiniExecutive shareManager] acquireChamberAbstract]) { - return NO; - } - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - NSNumber *lastTime = [defaults objectForKey:kLastShowAnchorCardTime]; - if ([lastTime longValue] < 1) { - return NO; - } - NSDate *datenow = [NSDate date]; - long time2 = (long)([datenow timeIntervalSince1970]*1000); - long aTime = (time2 - [lastTime longValue]) / 1000; - if (aTime > 15*60) { - return YES; - } else { - return NO; - } -} - -#pragma mark - 活动任务完成提示 -- (void)shankImportpriseTaskPrompt:(NSString *)msg url:(NSString *)url { - if (!self.taskPromptRegard.superview && url.length) { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventtask_toast_show]; - [self.view addSubview:self.taskPromptRegard]; - self.taskPromptRegard.desc = msg; - self.taskPromptRegard.url = url; - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(jumpToTask:)]; - [self.taskPromptRegard addGestureRecognizer:tap]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - if (self.taskPromptRegard.superview) { - [self.taskPromptRegard removeFromSuperview]; - } - self.taskPromptRegard = nil; - }); - } -} - -- (void)jumpToTask:(UITapGestureRecognizer *)ges { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:StatisticsServiceEventtask_toast_click]; - YUMITissueRegardGovernancer * webVewC =[[YUMITissueRegardGovernancer alloc] init]; - webVewC.url = self.taskPromptRegard.url; - [self.selectedViewController.navigationController pushViewController:webVewC animated:YES]; - if (self.taskPromptRegard.superview) { - [self.taskPromptRegard removeFromSuperview]; - } - self.taskPromptRegard = nil; -} - -#pragma mark - XCombatellegSolitaireRegardRepresendtation -- (void)xCombatellegSolitaireRegardImportChamber:(NSString *)roomUid { - if (roomUid.length) { - [self.kellegSolitaireRegard removeFromSuperview]; - self.kellegSolitaireRegard = nil; - self.demandsExhibitKellegSolitaire = NO; - [YUMIChamberRegardGovernancer unfoildChamber:roomUid viewController:self]; - } else { - [UIView animateWithDuration:0.5 animations:^{ - self.kellegSolitaireRegard.frame = CGRectMake(0, -90-kStatusBarHeight, KScreenWidth, 90); - } completion:^(BOOL finished) { - [self.kellegSolitaireRegard removeFromSuperview]; - self.kellegSolitaireRegard = nil; - self.demandsExhibitKellegSolitaire = NO; - }]; - } -} - -- (void)xCombatellegSolitaireRegardTicktackIntelligenceportrait:(NSString *)uid { - if (uid.length) { - - if ([ClientDisposition partowardsiciptowardsionDisposition].canUnfoild) { - YUMIManeConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = uid.integerValue; - [self.selectedViewController.navigationController pushViewController:userInfoVC animated:YES]; - }else{ - YUMIManeSimpleConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeSimpleConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = uid.integerValue; - [self.selectedViewController.navigationController pushViewController:userInfoVC animated:YES]; - } - [self.kellegSolitaireRegard removeFromSuperview]; - self.kellegSolitaireRegard = nil; - self.demandsExhibitKellegSolitaire = NO; - } else { - [self.kellegSolitaireRegard removeFromSuperview]; - self.kellegSolitaireRegard = nil; - self.demandsExhibitKellegSolitaire = NO; - } -} - -- (void)shankKellegSolitaireSwipeByvirtueof:(UISwipeGestureRecognizer *)recognizer{ - if(recognizer.direction == UISwipeGestureRecognizerDirectionUp) { - [UIView animateWithDuration:0.5 animations:^{ - self.kellegSolitaireRegard.frame = CGRectMake(0, -90-kStatusBarHeight, KScreenWidth, 90); - } completion:^(BOOL finished) { - [self.kellegSolitaireRegard removeFromSuperview]; - self.kellegSolitaireRegard = nil; - self.demandsExhibitKellegSolitaire = NO; - }]; - } -} - -#pragma mark - 年度礼物飘屏 -- (void)achieveBroadcastPresent:(AttachmentMatrix *)attachment { - YUMIChamberPresentBroadCastMatrix *giftNotifyInfo = [YUMIChamberPresentBroadCastMatrix mtowardsrixAboutJSON:attachment.data]; - if (!giftNotifyInfo.ceremonyGift) { - return; - } - if (self.presentPingencourageFormation.count == 0) { - [self producePresentBroadcastRegardBrectifyness:giftNotifyInfo]; - } - [self.presentPingencourageFormation addObject:giftNotifyInfo]; -} - -- (void)producePresentBroadcastRegardBrectifyness:(YUMIChamberPresentBroadCastMatrix *)presentMatrix { - YUMIChamberYearImportpriseRegard * view = [[YUMIChamberYearImportpriseRegard alloc] init]; - view.delegate = self; - view.frame = CGRectMake(KScreenWidth, 35 + statusbarHeight, KScreenWidth, 150); - view.model = presentMatrix; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.view addSubview:view]; - [self institutePresentBraodcastRegardBrectifyness:view notifyStaySecond:presentMatrix.notifyStaySecond]; -} - -- (void)institutePresentBraodcastRegardBrectifyness:(YUMIChamberYearImportpriseRegard *)view notifyStaySecond:(int)notifyStaySecond{ - CGFloat startTime = notifyStaySecond > 0 ? notifyStaySecond : 3.0; - POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; - springAnimation.springSpeed = 12; - springAnimation.springBounciness = 10.f; - springAnimation.fromValue = [NSValue valueWithCGPoint:view.center]; - springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(0 + view.frame.size.width / 2, view.center.y)]; - [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - if (finished) { - [self transltowardsePresentBroadcastOptowardssideBrectifyness:view stayTime:startTime]; - } - }]; - [view pop_addAnimation:springAnimation forKey:@"spingOutAnimation"]; -} - -- (void)transltowardsePresentBroadcastOptowardssideBrectifyness:(YUMIChamberYearImportpriseRegard *)view stayTime:(CGFloat)stayTime{ - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:view.center]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, view.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime() + stayTime; - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - @kWeakify(self); - [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - @kStrongify(self); - if (finished) { - [view removeFromSuperview]; - if (self.presentPingencourageFormation.count > 0) { - [self.presentPingencourageFormation removeObjectAtIndex:0]; - } - if (self.presentPingencourageFormation.count > 0) { - [self producePresentBroadcastRegardBrectifyness:self.presentPingencourageFormation.firstObject]; - } - } - }]; - - [view pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; -} - -#pragma mark - FBCChamberPresentPingbackRegardRepresendtation -- (void)yUMIChamberAnnmuImportpriseRegardImportChamber:(NSString *)roomUid{ - if (roomUid.length > 0) { - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.7 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [YUMIChamberRegardGovernancer unfoildChamber:roomUid viewController:[XCCurrentVCStackExecutive shareManager].getCurrentVC]; - }); - } -} - -#pragma mark - Getters And Setters -- (YUMIMiniChamberRegard *)chamberManeRegard { - if (!_chamberManeRegard) { - _chamberManeRegard = [[YUMIMiniChamberRegard alloc] init]; - _chamberManeRegard.controller = self; - _chamberManeRegard.hidden = YES; - } - return _chamberManeRegard; -} - -- (XCombatellegSolitaireRegard *)kellegSolitaireRegard { - if (!_kellegSolitaireRegard) { - _kellegSolitaireRegard = [[XCombatellegSolitaireRegard alloc] init]; - _kellegSolitaireRegard.delegate = self; - - } - return _kellegSolitaireRegard; -} - -- (YUMImissionCompleteTipRegard *)taskPromptRegard { - if (!_taskPromptRegard) { - _taskPromptRegard = [[YUMImissionCompleteTipRegard alloc] initWithFrame:CGRectMake(0, KScreenHeight - kSafeAreaBottomHeight-60-20, KScreenWidth, 20)]; - } - return _taskPromptRegard; -} - -- (NSMutableArray *)presentPingencourageFormation { - if (!_presentPingencourageFormation) { - _presentPingencourageFormation = [NSMutableArray array]; - } - return _presentPingencourageFormation; -} - -@end diff --git a/YuMi/Modules/YMTabbar/View/TabbarViewController.h b/YuMi/Modules/YMTabbar/View/TabbarViewController.h new file mode 100644 index 00000000..b26858be --- /dev/null +++ b/YuMi/Modules/YMTabbar/View/TabbarViewController.h @@ -0,0 +1,11 @@ +// +// ViewController.h +// YUMI +// +// Created by admin on 2023/3/9. +// + +@interface TabbarViewController : UITabBarController + +@end + diff --git a/YuMi/Modules/YMTabbar/View/TabbarViewController.m b/YuMi/Modules/YMTabbar/View/TabbarViewController.m new file mode 100644 index 00000000..7314a587 --- /dev/null +++ b/YuMi/Modules/YMTabbar/View/TabbarViewController.m @@ -0,0 +1,924 @@ +// +// ViewController.m +// YUMI +// +// Created by admin on 2023/3/9. +// +#import +///Third +#import +#import +#import +#import +#import +#import +///Tool +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "UIImage+Utils.h" +#import "NSObject+MJExtension.h" +#import "XNDJTDDLoadingTool.h" +#import "AccountInfoStorage.h" +#import "TTPopup.h" +#import "YUMIConstant.h" +#import "XPRoomMiniManager.h" +#import "ClientConfig.h" +#import "RtcManager.h" +#import "XCCurrentVCStackManager.h" +#import "Api+Home.h" +#import "YUMIConstant.h" +#import "StatisticsServiceHelper.h" +#import "Api+Monents.h" +#import "XPAdImageTool.h" +#import "YYUtility.h" +#import "XPWeakTimer.h" +#import "PLTimeUtil.h" +///Model +#import "AccountModel.h" +#import "RoomInfoModel.h" +#import "AttachmentModel.h" +#import "XPMineVisitorUnReadModel.h" +#import "InviteUserInfoModel.h" +#import "NewUserGreetModel.h" +#import "FindNewGreetMessageModel.h" +#import "XPTabAnchorCardModel.h" +#import "FirstRechargeModel.h" +#import "MonentsUnReadModel.h" +#import "XPReceiveRedPacketModel.h" +#import "GiftReceiveInfoModel.h" +#import "XPVersionUpdateModel.h" +///VC +#import "TabbarViewController.h" +#import "XPBlankViewController.h" +#import "XPLoginViewController.h" +#import "BaseNavigationController.h" +#import "LoginBindPhoneViewController.h" +#import "LoginFullInfoViewController.h" +#import "XPMineViewController.h" +#import "SessionListViewController.h" +#import "XPNewHomeViewController.h" +#import "XPMiniRoomView.h" +#import "XPRoomViewController.h" +#import "XPSessionFindNewAlertView.h" +#import "XPAnchorCardView.h" +#import "XPTaskCompleteTipView.h" +#import "XPWebViewController.h" +#import "XPMineUserInfoViewController.h" +#import "XPMineSimpleUserInfoViewController.h" +#import "XPMonentsRecommendViewController.h" +#import "XPMonentsViewController.h" +#import "XPReceiveRedPacketView.h" +#import "XPRoomYearActivityView.h" +#import "XPUpgradeView.h" +#import "XPTabBar.h" +#import "XPMomentListViewController.h" +#import "XPHomeSloganViewController.h" +#import "XPSimpleMineViewController.h" +///Present +#import "MainPresenter.h" +#import "MainProtocol.h" +#import "RoomHostDelegate.h" +#import "XPSkillCardPlayerManager.h" +#import "PIFullScreenBannerAnimation.h" +#import +UIKIT_EXTERN NSString * kUserCompleteInfoFinishKey; +NSString * const kUserFirstLoginKey = @"kUserFirstLoginKey"; +NSString * const kHadLaunchApp = @"kHadLaunchApp"; +NSString * const kLastShowAnchorCardTime = @"kLastShowAnchorCardTime"; +NSString * const kNetworkReachabilityKey = @"kNetworkReachabilityKey"; +UIKIT_EXTERN NSString * kNewUserRechargeKey; +UIKIT_EXTERN NSString *kTabShowAnchorCardKey; + +@interface TabbarViewController () +{ + NSTimer * timer; +} + +@property (nonatomic, strong) MainPresenter *presenter; +///房间最小化 +@property (nonatomic,strong) XPMiniRoomView *roomMineView; +///邀请码 +@property (nonatomic,copy) NSString *inviteCode; +///需要显示新用户充值优惠弹窗 +@property (nonatomic, assign) BOOL needShowNewUserRecharge; +///需要展示主播卡片(首次) +@property (nonatomic, assign) BOOL needShowAnchorCard; +///延迟弹出主播卡片 +@property (nonatomic, assign) BOOL delayShowAnchorCard; +///主播卡片 +@property (nonatomic, strong) XPAnchorCardView *anchorCardView; +///任务完成提示 +@property (nonatomic, strong) XPTaskCompleteTipView *taskTipView; +///全服广播 年度飘屏 +@property (nonatomic,strong) NSMutableArray *giftBroadcastQueue; +///青少年模式 +@property (nonatomic, assign) BOOL parentMode; +///是否是的第一次链接网络 +@property (nonatomic,assign) BOOL isFirstReachability; +///是否刷新了 +@property (nonatomic,assign) BOOL isReload; +///房间外的飘屏 +@property(nonatomic,strong) PIFullScreenBannerAnimation *roomAnimation; +@end + +@implementation TabbarViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + XPTabBar *tabBar = [[XPTabBar alloc] init]; + [self setValue:tabBar forKey:@"tabBar"]; + + [self configTheme]; + [self initTabs:NO]; + [[ClientConfig shareConfig] clientInit]; + [[NIMSDK sharedSDK].loginManager addDelegate:self]; + [[NIMSDK sharedSDK].chatManager addDelegate:self]; + [[NIMSDK sharedSDK].systemNotificationManager addDelegate:self]; + [[NIMSDK sharedSDK].broadcastManager addDelegate:self]; + [self.presenter juliandAdCallBackApi]; + [self networkReachability]; + [self.view addSubview:self.roomMineView]; + [[NSNotificationCenter defaultCenter] addObserverForName:kRoomMiniNotificationKey object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) { + [self configRoomMiniNView:note.userInfo]; + }]; + + [[NSNotificationCenter defaultCenter] addObserverForName:kUserCompleteInfoFinishKey object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) { + [self completeUserInfoFinish:note.object]; + }]; + + [[NSNotificationCenter defaultCenter] addObserverForName:@"reloadnewtab" object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) { + if (self.isReload) { + [self initTabs:YES]; + self.isReload = YES; + } + }]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showNewUserRecharge) name:kNewUserRechargeKey object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showAnchorCardKey:) name:kTabShowAnchorCardKey object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(teenagerStatusChange:) name:kTeenagerStatusChange object:nil]; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [self.navigationController setNavigationBarHidden:YES animated:YES]; + [self.presenter autoLogin]; + if ([XPRoomMiniManager shareManager].getRoomInfo == nil) { + [self.roomMineView hiddenRoomMiniView]; + } +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + self.delayShowAnchorCard = NO; + [self.anchorCardView removeFromSuperview]; + self.anchorCardView = nil; +} + +- (MainPresenter *)presenter { + if (_presenter == nil) { + _presenter = [[MainPresenter alloc] init]; + [_presenter attatchView:self]; + } + return _presenter; +} + +/** 登录成功(通过token且换取ticket后)。 + + 1. 登录云信。 + 2. 获取用户信息。 + 3. 其实目前多余回调V层,可以在P层里自行做这个逻辑。 + */ +- (void)autoLoginSuccess { + [self.presenter loginNIM]; + [self.presenter getUserInfo]; + ///登录成功之后 在验证是否有漏单的行为 + [self.presenter checkTranscation]; + ///检查更新 + if ([ClientConfig shareConfig].canOpen) { + [self.presenter getVersionUpdate]; + + if (self.inviteCode && self.inviteCode.length > 0) { + ///邀请码进房 + [self.presenter checkInviteUserInfo:self.inviteCode]; + } + } + + + ///主要功能:给主播分流 +// [self clientStartApp]; + +// ///开启心跳 记录用户登录状态 +// [[ClientConfig shareConfig] addHeartBratTimer]; + + XPAdImageTool.shareImageTool.isImLogin = YES; + + if ([ClientConfig shareConfig].canOpen) { + if ([self hadLaunchApp] && [self canShowAnchorCard]) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + if (self.view.window && self.isViewLoaded) { + [self.presenter getAnchorCardInfo]; + } + }); + } + if (self.needShowAnchorCard && !self.delayShowAnchorCard && !self.parentMode) { + [self.presenter getAnchorCardInfo]; + [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kHadLaunchApp];///第一次弹主播卡片 + [[NSUserDefaults standardUserDefaults] synchronize]; + } + } +} + +/// 获取用户信息后检查:1、是否绑定手机号;2、是否需要完善用户信息。 +/// 该逻辑仅在刷新ticket后执行一次。 +/// 当前服务端接口是有未完善信息的全局拦截的,在BaseMvpPresenter里会触发1415去完善用户信息。 +- (void)getUserInfoSuccess:(UserInfoModel *)userInfo { + if (!userInfo.isBindPhone && [ClientConfig shareConfig].iosPhoneBind) { + LoginBindPhoneViewController * bindPhoneVC = [[LoginBindPhoneViewController alloc] init]; + BaseNavigationController * nav = [[BaseNavigationController alloc] initWithRootViewController:bindPhoneVC]; + nav.modalPresentationStyle = UIModalPresentationFullScreen; + [self.navigationController presentViewController:nav animated:YES completion:nil]; + return; + } + if (userInfo.nick == nil || userInfo.avatar == nil) { + [self completeUserInfo]; + return; + } + [self initTabs:YES]; + if ([ClientConfig shareConfig].canOpen) { + if (self.inviteCode.length <= 0) { + [self initQuickEnterRoom]; + } + if (self.inviteCode) { + self.inviteCode = nil; + } + [self monentsUnReadCount]; + } + self.parentMode = userInfo.parentMode; + for (BaseViewController *vc in self.viewControllers) { + vc.parentMode = self.parentMode; + } +} + +- (void)checkInviteUserInfoSuccess:(InviteUserInfoModel *)inviteInfo { + if (inviteInfo && inviteInfo.isInRoom && !self.parentMode) { + [XPRoomViewController openRoom:inviteInfo.roomUid fromNick:inviteInfo.inviteNick fromType:inviteInfo.fromType fromUid:inviteInfo.inviteUid viewController:self]; + } else { //不在房间 + [self.presenter getShortCutRecommendRoom]; + } +} + +- (void)getShortCutRecommendRoomSuccces:(NSString *)roomUid { + if (self.parentMode) { + return; + } + if (roomUid.length > 0) { + [XPRoomViewController openRoom:roomUid viewController:self]; + } +} + +#pragma mark - app 启动调用此接口 主要功能: 给主播分流 +- (void)clientStartApp { +// [self.presenter clientStartApp]; +} +#pragma mark - 网络状态监听 +- (void)networkReachability{ + [[AFNetworkReachabilityManager sharedManager] startMonitoring]; + [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { + switch (status) { + case AFNetworkReachabilityStatusUnknown: + self.isFirstReachability = YES; + break; + case AFNetworkReachabilityStatusNotReachable: + self.isFirstReachability = YES; + break; + case AFNetworkReachabilityStatusReachableViaWWAN: + case AFNetworkReachabilityStatusReachableViaWiFi: + { + if (self.isFirstReachability) { + [[NSNotificationCenter defaultCenter] postNotificationName:kNetworkReachabilityKey object:nil userInfo:nil]; + [self.presenter autoLogin]; + [[ClientConfig shareConfig] clientInit]; + } + self.isFirstReachability = YES; + } + break; + default: + break; + } + }]; +} + +#pragma mark - BaseMvpProtocol +- (void)tokenInvalid { + XPLoginViewController *lvc = [[XPLoginViewController alloc] init]; + BaseNavigationController * nav = [[BaseNavigationController alloc] initWithRootViewController:lvc]; + nav.modalPresentationStyle = UIModalPresentationFullScreen; + [self.navigationController presentViewController:nav animated:YES completion:nil]; + XPAdImageTool.shareImageTool.isImLogin = NO; +} + +- (void)completeUserInfo { + LoginFullInfoViewController * bindPhoneVC = [[LoginFullInfoViewController alloc] init]; + BaseNavigationController * nav = [[BaseNavigationController alloc] initWithRootViewController:bindPhoneVC]; + nav.modalPresentationStyle = UIModalPresentationFullScreen; + [self.navigationController presentViewController:nav animated:YES completion:nil]; +} + +///获取主播卡片信息成功 +- (void)getAnchorCardInfoSuccess:(XPTabAnchorCardModel *)cardInfo { + if (self.parentMode) { + return; + } + if (!self.anchorCardView.superview && cardInfo && self.isViewLoaded && self.view.window) { + self.anchorCardView.frame = CGRectMake(0, -90-kStatusBarHeight, KScreenWidth, 90); + [UIView animateWithDuration:0.5 animations:^{ + self.anchorCardView.frame = CGRectMake(0, kStatusBarHeight, KScreenWidth, 90); + } completion:nil]; + AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);//默认震动效果 + long time = (long)([[NSDate date] timeIntervalSince1970]*1000); + [[NSUserDefaults standardUserDefaults] setObject:@(time) forKey:kLastShowAnchorCardTime]; + [[NSUserDefaults standardUserDefaults] synchronize]; + self.anchorCardView.cardInfo = cardInfo; + [self.view addSubview:self.anchorCardView]; + UISwipeGestureRecognizer *recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleAnchorCardSwipeFrom:)]; + [recognizer setDirection:(UISwipeGestureRecognizerDirectionUp)]; + [self.anchorCardView addGestureRecognizer:recognizer]; + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventPersonalshowTopCardShow]; + } +} + +///获取更新版本信息成功 +- (void)getVersionUpdate:(XPVersionUpdateModel *)versionModel { + XPUpgradeView *view = [[XPUpgradeView alloc] init]; + view.versionModel = versionModel; + TTPopupService * service = [[TTPopupService alloc] init]; + service.contentView = view; + service.shouldDismissOnBackgroundTouch = NO; + [TTPopup popupWithConfig:service]; +} + +#pragma mark - NIMLoginManagerDelegate +- (void)onAutoLoginFailed:(NSError *)error { + // 如果非上次登录设备 autoLogin 会返回 417 + if (error.code == 417) { + @weakify(self); + AccountModel* accountModel = [AccountInfoStorage instance].getCurrentAccountInfo; + [[NIMSDK sharedSDK].loginManager login:accountModel.uid token:accountModel.netEaseToken completion:^(NSError * _Nullable error) { + if (error) { + @strongify(self); + [self.presenter logout]; + } + }]; + return; + } + [self.presenter logout]; +} + +- (void)onKickout:(NIMLoginKickoutResult *)result { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"TabbarViewController0")]; + UIViewController *rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController; + if ([rootViewController presentedViewController]) { //有一个被present出来的控制器 要先dismiss + [[rootViewController presentedViewController] dismissViewControllerAnimated:YES completion:^{ + if ([[XCCurrentVCStackManager shareManager] getCurrentVC].navigationController.viewControllers.count > 1) { + [[[XCCurrentVCStackManager shareManager] getCurrentVC].navigationController popToRootViewControllerAnimated:YES]; + } + if ([[UIApplication sharedApplication].delegate.window.rootViewController isKindOfClass:[UITabBarController class]]) { + UITabBarController *tabVC = (UITabBarController *)[UIApplication sharedApplication].delegate.window.rootViewController; + if (tabVC.selectedViewController.navigationController) { + [tabVC.selectedViewController.navigationController popToRootViewControllerAnimated:YES]; + } + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [tabVC setSelectedIndex:0]; + }); + } + }]; + }else { //不是被present出来的 就有可能是rootvc或者是被push出来的 所以要判断nav是不是只有一个vc 如果有多个就pop + if ([[XCCurrentVCStackManager shareManager] getCurrentVC].navigationController.viewControllers.count > 1) { + [[[XCCurrentVCStackManager shareManager] getCurrentVC].navigationController popToRootViewControllerAnimated:YES]; + } + if ([[UIApplication sharedApplication].delegate.window.rootViewController isKindOfClass:[UITabBarController class]]) { + UITabBarController *tabVC = (UITabBarController *)[UIApplication sharedApplication].delegate.window.rootViewController; + if (tabVC.selectedViewController) { + if ([tabVC.selectedViewController isKindOfClass:[UINavigationController class]]) { + [tabVC.selectedViewController popToRootViewControllerAnimated:YES]; + } else { + [tabVC.selectedViewController.navigationController popToRootViewControllerAnimated:YES]; + } + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [tabVC setSelectedIndex:0]; + }); + } + } + } + + if ([XPRoomMiniManager shareManager].getRoomInfo) { + [[RtcManager instance] exitRoom]; + [[NIMSDK sharedSDK].chatroomManager exitChatroom:[NSString stringWithFormat:@"%ld", [XPRoomMiniManager shareManager].getRoomInfo.roomId] completion:nil]; + [self.roomMineView hiddenRoomMiniView]; + } + [self.presenter logout]; +} + +#pragma mark - NIMChatManagerDelegate + +- (void)onRecvMessages:(NSArray *)messages { + if (self.parentMode || ![ClientConfig shareConfig].canOpen) { + return; + } + for (NIMMessage * message in messages) { + if (message.session.sessionType == NIMSessionTypeP2P) { + if(message.messageType == NIMMessageTypeCustom) { + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) { + AttachmentModel * attachment = obj.attachment; + if (attachment.first == CustomMessageType_FindNew && attachment.second == Custom_Message_Find_New_Greet_New_User) { + FindNewGreetMessageModel * greetInfo = [FindNewGreetMessageModel modelWithDictionary:attachment.data]; + if (greetInfo.uid.integerValue != [AccountInfoStorage instance].getUid.integerValue) { + [TTPopup dismiss]; + XPSessionFindNewAlertView * alertView = [[XPSessionFindNewAlertView alloc] init]; + alertView.userInfo = greetInfo; + TTPopupService *service = [[TTPopupService alloc] init]; + service.contentView = alertView; + service.shouldDismissOnBackgroundTouch = NO; + service.style = TTPopupStyleAlert; + [TTPopup popupWithConfig:service]; + } + } + } + } + } + } +} + + +- (void)onReceiveBroadcastMessage:(NIMBroadcastMessage *)broadcastMessage { + if (![ClientConfig shareConfig].canOpen) { + return; + } + if (broadcastMessage.content) { + NSDictionary *msgDictionary = [broadcastMessage.content toJSONObject]; + AttachmentModel *attachment = [AttachmentModel modelWithJSON:msgDictionary[@"body"]]; + if (attachment.first == CustomMessageType_RedPacket && attachment.second == Custom_Message_Sub_AllDiamandRedPacket) { + XPReceiveRedPacketModel *data = [XPReceiveRedPacketModel modelWithDictionary:attachment.data]; + //判断是否在房间 + __block BOOL isInRoom; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj isKindOfClass:[XPRoomViewController class]]) { + XPRoomViewController * roomVC = obj; + RoomInfoModel *roomInfo = [roomVC getRoomInfo]; + XPReceiveRedPacketView *view = [[XPReceiveRedPacketView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; + if (roomInfo.uid == data.roomUid.integerValue) { + view.inAllPacketRoom = YES; + } else { + view.inAllPacketRoom = NO; + } + XPReceiveRedPacketModel *data = [XPReceiveRedPacketModel modelWithJSON:attachment.data]; + view.redPacketModel = data; + [roomVC.view addSubview:view]; + [roomVC.view bringSubviewToFront:view]; + *stop = YES; + isInRoom = YES; + } + }]; + if (!isInRoom) { + UIViewController *currentVc = [[XCCurrentVCStackManager shareManager] getCurrentVC]; + XPReceiveRedPacketView *view = [[XPReceiveRedPacketView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; + view.inAllPacketRoom = NO; + XPReceiveRedPacketModel *data = [XPReceiveRedPacketModel modelWithJSON:attachment.data]; + view.redPacketModel = data; + [currentVc.view addSubview:view]; + [currentVc.view bringSubviewToFront:view]; + } + } else if (attachment.first == CustomMessageType_Gift && attachment.second == Custom_Message_Sub_Gift_ChannelNotify){///广播 年度飘屏 + [self receiveBroadcastGift:attachment]; + }else if(attachment.first == CustomMessageType_Version_Update && attachment.second == Custom_Message_Version_Update_Value){ + NSString *osValue = attachment.data[@"updateOs"]; + if([osValue isEqualToString:@"ios"] && [AccountInfoStorage instance].getUid.length > 0){ + XPVersionUpdateModel *updateModel = [XPVersionUpdateModel modelWithDictionary:attachment.data]; + [self getVersionUpdate:updateModel]; + } + }else if(attachment.first == CustomMessageType_LuckyBag && attachment.second == Custom_Message_Sub_Room_Gift_LuckBag_FullScree){ + + if([XPSkillCardPlayerManager shareInstance].isInRoom == YES)return; + [self.roomAnimation receiveLuckyGiftBigPrize:attachment]; + }else if(attachment.first == CustomMessageType_Graffiti_Star_Kitchen && attachment.second == Custom_Message_Sub_Star_Kitchen_FullScreen){ + if([XPSkillCardPlayerManager shareInstance].isInRoom == YES)return; + [self.roomAnimation receiveRoomGraffitiStarKitchen:attachment]; + }else if(attachment.first == CustomMessageType_Look_Love && attachment.second == Custom_Message_Sub_Look_Love_InRoom_NeedAllMicSend){ + if([XPSkillCardPlayerManager shareInstance].isInRoom == YES)return; + [self.roomAnimation receiveCandyTreeGiftHighLevle:attachment]; + } + } +} + +///判断是否在房间 +-(BOOL)isInRoomWithData{ + //判断是否在房间 + __block BOOL isInRoom; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj isKindOfClass:[XPRoomViewController class]]) { + *stop = YES; + isInRoom = YES; + } + }]; + return isInRoom; +} +/** + * 收到消息被撤回的通知 + * + * @param notification 被撤回的消息信息 + * @discusssion 云信在收到消息撤回后,会先从本地数据库中找到对应消息并进行删除,之后通知上层消息已删除 + */ +- (void)onRecvRevokeMessageNotification:(NIMRevokeMessageNotification *)notification { + NIMMessage * message = notification.message; + if (message) { + NIMMessage * revokeMessage = [[NIMMessage alloc] init]; + [revokeMessage setValue:message.session forKey:@"session"]; + [revokeMessage setValue:@(NIMMessageTypeTip) forKey:@"messageType"]; + revokeMessage.timestamp = [PLTimeUtil getNowTimeTimestampMillisecond].longLongValue; + revokeMessage.text = YMLocalizedString(@"TabbarViewController1"); + [[NIMSDK sharedSDK].conversationManager saveMessage:revokeMessage forSession:message.session completion:nil]; + } +} + +- (void)configTheme { + self.view.backgroundColor = [DJDKMIMOMColor tabbarViewColor]; +// [[UITabBar appearance] setBackgroundImage:[UIImage imageWithColor:[DJDKMIMOMColor tabbarViewColor] size:CGSizeMake(KScreenWidth, kTabBarHeight)]]; +// [[UITabBar appearance] setShadowImage:[[UIImage alloc]init]]; + if (@available(iOS 10.0, *)) { + [[UITabBar appearance] setUnselectedItemTintColor:[DJDKMIMOMColor tabbarNormalColor]]; + } +} + +- (void)initTabs:(BOOL)logined { + self.viewControllers = nil; + NSArray *normalImageNames = @[@"tab_gameHome_normal",@"tab_monents_normal",@"tab_message_normal", @"tab_mine_normal"]; + NSArray *selectImageNames = @[@"tab_gameHome_selected",@"tab_monents_select",@"tab_message_selected", @"tab_mine_selected"]; + NSArray *tabLabel = @[@"首页",@"动态",@"消息", YMLocalizedString(@"TabbarViewController5")]; + + UIViewController *game; + UIViewController *msg; + UIViewController *me; + UIViewController * home; + UIViewController * monents; + if (logined) { + msg = [[SessionListViewController alloc] init]; + + if ([ClientConfig shareConfig].canOpen) { + home = [[XPNewHomeViewController alloc] init]; + monents = [[XPMonentsViewController alloc] init]; + me = [[XPMineViewController alloc] init]; + }else{ + home = [[XPHomeSloganViewController alloc] init]; + monents = [[XPMomentListViewController alloc] init]; + me = [[XPSimpleMineViewController alloc] init]; + } + } else { + game = [[XPBlankViewController alloc]init]; + msg = [[SessionListViewController alloc]init]; + me = [[XPBlankViewController alloc]init]; + home = [[XPBlankViewController alloc] init]; + monents = [[XPBlankViewController alloc] init]; + } + [self createTabBarItem:home title:tabLabel[0] image:normalImageNames[0] selectedImage:selectImageNames[0]]; + [self createTabBarItem:monents title:tabLabel[1] image:normalImageNames[1] selectedImage:selectImageNames[1]]; + [self createTabBarItem:msg title:tabLabel[2] image:normalImageNames[2] selectedImage:selectImageNames[2]]; + [self createTabBarItem:me title:tabLabel[3] image:normalImageNames[3] selectedImage:selectImageNames[3]]; + self.viewControllers = @[home,monents,msg,me]; + self.selectedIndex = 0; +} + +- (BaseNavigationController *)createTabBarItem:(UIViewController *)itemVc title:(NSString *)title image:(NSString *)image selectedImage:(NSString *)selectedImage{ + itemVc.title = title; + itemVc.tabBarItem.image = [[UIImage imageNamed:image] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; + itemVc.tabBarItem.selectedImage = [[UIImage imageNamed:selectedImage] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; + BaseNavigationController *nav = [[BaseNavigationController alloc] initWithRootViewController:itemVc]; + return nav; +} + +- (void)showSuccessToast:(NSString *)msg { + [XNDJTDDLoadingTool showSuccessWithMessage:msg]; +} + +- (void)showErrorToast:(NSString *)msg { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; +} + +- (void)showLoading { + [XNDJTDDLoadingTool showLoading]; +} + +- (void)hideHUD { + [XNDJTDDLoadingTool hideHUD]; +} + +#pragma mark - 动态 +- (void)monentsUnReadCount { + [Api monentsUnReadCount:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + MonentsUnReadModel * model = [MonentsUnReadModel modelWithDictionary:data.data]; + NSString *badge = model.total > 0 ? @(model.total).stringValue : nil; + if (model.total > 99) { + badge = @"99+"; + } + NSUInteger index = 1; + UITabBarItem *item = self.tabBar.items.count > index ? self.tabBar.items[index] : nil; + [item setBadgeValue:badge]; + } + } uid:[AccountInfoStorage instance].getUid]; +} + +#pragma mark - 房间最小化 +- (void)configRoomMiniNView:(NSDictionary *)dic { + UserInfoModel * userInfo = [UserInfoModel modelWithDictionary:dic[@"userInfo"]]; + RoomInfoModel * roomInfo = [RoomInfoModel modelWithDictionary:dic[@"roomInfo"]]; + NSMutableDictionary * microQueue = dic[@"microQueue"]; + [self.roomMineView configRoomMiniView:roomInfo userInfo:userInfo micQueue:microQueue]; +} + +#pragma mark - 快捷进房 +- (void)initQuickEnterRoom { + NSString * key = [NSString stringWithFormat:@"%@_%@", kUserFirstLoginKey, [AccountInfoStorage instance].getUid]; + BOOL isNotFirstLogin = [[NSUserDefaults standardUserDefaults] boolForKey:key]; + if (!isNotFirstLogin) { + ///新用户 +// [self.presenter getNewUserGreetInfo]; + } +} + +///跳转优先级 闪屏→linkedMe→邀请码→新用户打招呼引导→渠道指定房间 +- (void)completeUserInfoFinish:(NSString *)inviteCode { + self.inviteCode = inviteCode; +} +#pragma mark -NIMSystemNotificationManagerDelegate +- (void)onReceiveCustomSystemNotification:(NIMCustomSystemNotification *)notification { + if (self.parentMode) { + return; + } + if (notification.receiverType == NIMSessionTypeP2P) { + if (notification.content != nil) { + NSData *jsonData = [notification.content dataUsingEncoding:NSUTF8StringEncoding]; + NSError *err; + NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err]; + if(err) { + NSLog(@"json解析失败:%@",err); + return; + } + if ([dic[@"first"] integerValue] == CustomMessageType_First_VisitorRecord){//访客记录数量更新提示 + AttachmentModel *attachment = [AttachmentModel modelWithJSON:notification.content]; + XPMineVisitorUnReadModel *model = [XPMineVisitorUnReadModel modelWithJSON:attachment.data]; + if ([model isKindOfClass:XPMineVisitorUnReadModel.class]) { + [[NSNotificationCenter defaultCenter] postNotificationName:kVisitorUnReadCountNotificationKey object:model]; + } + } else if ([dic[@"first"] intValue] == CustomMessageType_Task_Complete && [dic[@"second"] intValue] == Custom_Message_Sub_TaskComplete) {///任务完成提醒 + if ([dic isKindOfClass:[NSDictionary class]]) { + NSDictionary *dict = dic[@"data"]; + [self handleActivityTaskTip:dict[@"taskCompleteMsg"] url:dic[@"taskUrl"]]; + } + } + } + } +} + +#pragma mark - 主播卡片弹窗 +//新用户专享充值弹窗 +- (void)showNewUserRecharge { + self.needShowNewUserRecharge = YES; +} + +///展示主播卡片 +- (void)showAnchorCardKey:(NSNotification *)noti { + NSDictionary * dic = noti.object; + self.delayShowAnchorCard = [[dic objectForKey:@"delayShow"] boolValue]; + self.needShowAnchorCard = YES; +} + +///判断第二次启动时弹出主播卡片 +- (BOOL)hadLaunchApp { + return [[NSUserDefaults standardUserDefaults] valueForKey:kHadLaunchApp]; +} + +///青少年模式改变 +- (void)teenagerStatusChange:(NSNotification *)noti { + NSDictionary * dic = noti.object; + self.parentMode = [[dic objectForKey:@"parentMode"] boolValue]; + for (BaseViewController *vc in self.viewControllers) { + vc.parentMode = self.parentMode; + } + if ([XPRoomMiniManager shareManager].getRoomInfo && self.parentMode) { + [[RtcManager instance] exitRoom]; + [[NIMSDK sharedSDK].chatroomManager exitChatroom:[NSString stringWithFormat:@"%ld", [XPRoomMiniManager shareManager].getRoomInfo.roomId] completion:nil]; + [self.roomMineView hiddenRoomMiniView]; + } +} + +- (BOOL)canShowAnchorCard { + if ([[XPRoomMiniManager shareManager] getRoomInfo]) {//在房间时不弹 + return NO; + } + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSNumber *lastTime = [defaults objectForKey:kLastShowAnchorCardTime]; + if ([lastTime longValue] < 1) { + return NO; + } + NSDate *datenow = [NSDate date];//现在时间 + long time2 = (long)([datenow timeIntervalSince1970]*1000); + long aTime = (time2 - [lastTime longValue]) / 1000; + if (aTime > 15*60) { + return YES; + } else { + return NO; + } +} + +#pragma mark - 活动任务完成提示 +- (void)handleActivityTaskTip:(NSString *)msg url:(NSString *)url { + if (!self.taskTipView.superview && url.length) { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventtask_toast_show]; + [self.view addSubview:self.taskTipView]; + self.taskTipView.desc = msg; + self.taskTipView.url = url; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(jumpToTask:)]; + [self.taskTipView addGestureRecognizer:tap]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + if (self.taskTipView.superview) { + [self.taskTipView removeFromSuperview]; + } + self.taskTipView = nil; + }); + } +} + +- (void)jumpToTask:(UITapGestureRecognizer *)ges { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventtask_toast_click]; + XPWebViewController * webVC =[[XPWebViewController alloc] init]; + webVC.url = self.taskTipView.url; + [self.selectedViewController.navigationController pushViewController:webVC animated:YES]; + if (self.taskTipView.superview) { + [self.taskTipView removeFromSuperview]; + } + self.taskTipView = nil; +} + +#pragma mark - XPAnchorCardViewDelegate +- (void)xPAnchorCardViewEnterRoom:(NSString *)roomUid { + if (roomUid.length) { + [self.anchorCardView removeFromSuperview]; + self.anchorCardView = nil; + self.needShowAnchorCard = NO; + [XPRoomViewController openRoom:roomUid viewController:self]; + } else { + [UIView animateWithDuration:0.5 animations:^{ + self.anchorCardView.frame = CGRectMake(0, -90-kStatusBarHeight, KScreenWidth, 90); + } completion:^(BOOL finished) { + [self.anchorCardView removeFromSuperview]; + self.anchorCardView = nil; + self.needShowAnchorCard = NO; + }]; + } +} + +- (void)xPAnchorCardViewClickAvatar:(NSString *)uid { + if (uid.length) { + + if ([ClientConfig shareConfig].canOpen) { + XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init]; + userInfoVC.uid = uid.integerValue; + [self.selectedViewController.navigationController pushViewController:userInfoVC animated:YES]; + }else{ + XPMineSimpleUserInfoViewController * userInfoVC = [[XPMineSimpleUserInfoViewController alloc] init]; + userInfoVC.uid = uid.integerValue; + [self.selectedViewController.navigationController pushViewController:userInfoVC animated:YES]; + } + [self.anchorCardView removeFromSuperview]; + self.anchorCardView = nil; + self.needShowAnchorCard = NO; + } else { + [self.anchorCardView removeFromSuperview]; + self.anchorCardView = nil; + self.needShowAnchorCard = NO; + } +} + +- (void)handleAnchorCardSwipeFrom:(UISwipeGestureRecognizer *)recognizer{ + if(recognizer.direction == UISwipeGestureRecognizerDirectionUp) { + [UIView animateWithDuration:0.5 animations:^{ + self.anchorCardView.frame = CGRectMake(0, -90-kStatusBarHeight, KScreenWidth, 90); + } completion:^(BOOL finished) { + [self.anchorCardView removeFromSuperview]; + self.anchorCardView = nil; + self.needShowAnchorCard = NO; + }]; + } +} + +#pragma mark - 年度礼物飘屏 +- (void)receiveBroadcastGift:(AttachmentModel *)attachment { + GiftReceiveInfoModel *giftNotifyInfo = [GiftReceiveInfoModel modelWithJSON:attachment.data]; + if (!giftNotifyInfo.ceremonyGift && giftNotifyInfo.isHomeShow == YES) { + [self.roomAnimation receiveGift:giftNotifyInfo]; + return; + } + if(giftNotifyInfo.isHomeShow == NO)return; + if (self.giftBroadcastQueue.count == 0) { + [self createGiftBroadcastViewAnimation:giftNotifyInfo]; + } + [self.giftBroadcastQueue addObject:giftNotifyInfo]; +} + +- (void)createGiftBroadcastViewAnimation:(GiftReceiveInfoModel *)giftModel { + XPRoomYearActivityView * view = [[XPRoomYearActivityView alloc] init]; + view.delegate = self; + view.frame = CGRectMake(KScreenWidth, 35 + statusbarHeight, KScreenWidth, 150); + view.model = giftModel; + [[XCCurrentVCStackManager shareManager].getCurrentVC.view addSubview:view]; + [self beginGiftBraodcastViewAnimation:view notifyStaySecond:giftModel.notifyStaySecond]; +} + +- (void)beginGiftBraodcastViewAnimation:(XPRoomYearActivityView *)view notifyStaySecond:(int)notifyStaySecond{ + CGFloat startTime = notifyStaySecond > 0 ? notifyStaySecond : 3.0; + POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; + springAnimation.springSpeed = 12; + springAnimation.springBounciness = 10.f; + springAnimation.fromValue = [NSValue valueWithCGPoint:view.center]; + springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(0 + view.frame.size.width / 2, view.center.y)]; + [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + if (finished) { + [self removeGiftBroadcastOutAnimation:view stayTime:startTime]; + } + }]; + [view pop_addAnimation:springAnimation forKey:@"spingOutAnimation"]; +} + +- (void)removeGiftBroadcastOutAnimation:(XPRoomYearActivityView *)view stayTime:(CGFloat)stayTime{ + POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; + moveAnimation.fromValue = [NSValue valueWithCGPoint:view.center]; + moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, view.center.y)]; + moveAnimation.beginTime = CACurrentMediaTime() + stayTime; + moveAnimation.duration = 0.5; + moveAnimation.repeatCount = 1; + moveAnimation.removedOnCompletion = YES; + @kWeakify(self); + [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + @kStrongify(self); + if (finished) { + [view removeFromSuperview]; + if (self.giftBroadcastQueue.count > 0) { + [self.giftBroadcastQueue removeObjectAtIndex:0]; + } + if (self.giftBroadcastQueue.count > 0) { + [self createGiftBroadcastViewAnimation:self.giftBroadcastQueue.firstObject]; + } + } + }]; + + [view pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; +} + +#pragma mark - XPRoomGiftBroadcastViewDelegate +- (void)xPRoomYearActivityViewEnterRoom:(NSString *)roomUid{ + if (roomUid.length > 0) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.7 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [XPRoomViewController openRoom:roomUid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; + }); + } +} + +#pragma mark - Getters And Setters +- (XPMiniRoomView *)roomMineView { + if (!_roomMineView) { + _roomMineView = [[XPMiniRoomView alloc] init]; + _roomMineView.controller = self; + _roomMineView.hidden = YES; + } + return _roomMineView; +} + +- (XPAnchorCardView *)anchorCardView { + if (!_anchorCardView) { + _anchorCardView = [[XPAnchorCardView alloc] init]; + _anchorCardView.delegate = self; + + } + return _anchorCardView; +} + +- (XPTaskCompleteTipView *)taskTipView { + if (!_taskTipView) { + _taskTipView = [[XPTaskCompleteTipView alloc] initWithFrame:CGRectMake(0, KScreenHeight - kSafeAreaBottomHeight-60-20, KScreenWidth, 20)]; + } + return _taskTipView; +} + +- (NSMutableArray *)giftBroadcastQueue { + if (!_giftBroadcastQueue) { + _giftBroadcastQueue = [NSMutableArray array]; + } + return _giftBroadcastQueue; +} +- (PIFullScreenBannerAnimation *)roomAnimation{ + if(!_roomAnimation){ + _roomAnimation = [[PIFullScreenBannerAnimation alloc]init]; + } + return _roomAnimation; +} +@end diff --git a/YuMi/Modules/YMTabbar/View/VersionUpdate/XPUpgradeView.h b/YuMi/Modules/YMTabbar/View/VersionUpdate/XPUpgradeView.h new file mode 100644 index 00000000..0866ec4e --- /dev/null +++ b/YuMi/Modules/YMTabbar/View/VersionUpdate/XPUpgradeView.h @@ -0,0 +1,19 @@ +// +// YMUpgradeView.h +// YUMI +// +// Created by YUMI on 2022/12/5. +// + +#import +#import "XPVersionUpdateModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPUpgradeView : UIView + +@property (nonatomic,strong) XPVersionUpdateModel *versionModel; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/View/VersionUpdate/XPUpgradeView.m b/YuMi/Modules/YMTabbar/View/VersionUpdate/XPUpgradeView.m new file mode 100644 index 00000000..ba4499e8 --- /dev/null +++ b/YuMi/Modules/YMTabbar/View/VersionUpdate/XPUpgradeView.m @@ -0,0 +1,222 @@ +// +// YMUpgradeView.m +// YUMI +// +// Created by YUMI on 2022/12/5. +// + +#import "XPUpgradeView.h" +#import +#import +#import "UIImage+Utils.h" +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" +#import "UIView+Corner.h" +#import "TTPopup.h" + +@interface XPUpgradeView() +///容器 +@property (nonatomic,strong) UIView *contentView; +///顶部 +@property (nonatomic,strong) UIImageView *topImageView; +///背景 +@property (nonatomic,strong) UIView *backView; +@property (nonatomic,strong) SZTextView *textView; +///容器 +@property (nonatomic,strong) UIStackView *stackView; +@property (nonatomic,strong) UIButton *updateBtn; +@property (nonatomic,strong) UIButton *cancelBtn; +///版本号 +@property (nonatomic,strong) UILabel *versionLabel; +@end + +@implementation XPUpgradeView + +- (instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if(self){ + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.contentView]; + + [self.contentView addSubview:self.topImageView]; + [self.contentView addSubview:self.backView]; + [self.topImageView addSubview:self.versionLabel]; + [self.backView addSubview:self.textView]; + [self.backView addSubview:self.stackView]; + [self.stackView addArrangedSubview:self.cancelBtn]; + [self.stackView addArrangedSubview:self.updateBtn]; +} +- (void)initSubViewConstraints { + CGFloat kwidth = (KScreenWidth - 100); + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(kwidth, 340)); + }]; + + [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self); + }]; + + CGFloat kscale = 140.0 / 275.0; + [self.topImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(kwidth, kwidth * kscale)); + make.top.mas_equalTo(self.contentView); + make.centerX.mas_equalTo(self.contentView); + }]; + + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.topImageView.mas_bottom); + }]; + + [self.versionLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.topImageView).offset(25); + make.top.mas_equalTo(self.topImageView).offset(90 * kScreenScale); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(36); + make.centerX.mas_equalTo(self.contentView); + make.bottom.mas_equalTo(self.contentView).offset(-20); + }]; + + [self.cancelBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo((kwidth - 11 - 16 * 2) / 2.0); + }]; + [self.updateBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(self.cancelBtn); + }]; + + [self.textView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.topImageView.mas_bottom).mas_offset(3); + make.left.mas_equalTo(17); + make.right.mas_equalTo(-17); + make.bottom.equalTo(self.stackView.mas_top).offset(-5); + }]; + +} + +-(void)setVersionModel:(XPVersionUpdateModel *)versionModel{ + _versionModel = versionModel; + if (_versionModel.updateVersionDesc) { + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:_versionModel.updateVersionDesc attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:[DJDKMIMOMColor mainTextColor]}]; + NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; + paragraphStyle.lineSpacing = 5; + [attribute addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, _versionModel.updateVersionDesc.length)]; + _textView.attributedText = attribute; + } + + _versionLabel.text = [NSString stringWithFormat:@"V%@", _versionModel.updateVersion]; + _cancelBtn.hidden = _versionModel.updateStatus == 3; +} + +-(void)updateAction{ + NSURL *url = [[NSURL alloc]initWithString:self.versionModel.updateDownloadLink]; + if ([[UIApplication sharedApplication] canOpenURL:url]) { + [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) { + if(self.versionModel.updateStatus != 3){ + [TTPopup dismiss]; + } + }]; + } +} +-(void)cancelAction{ + [TTPopup dismiss]; +} +#pragma mark - 懒加载 +- (UIView *)contentView { + if (!_contentView) { + _contentView = [[UIView alloc] init]; + _contentView.backgroundColor = [UIColor clearColor]; + _contentView.layer.cornerRadius = 12; + _contentView.layer.masksToBounds = YES; + } + return _contentView; +} + +- (UIView *)backView { + if (!_backView) { + _backView = [[UIView alloc] init]; + _backView.backgroundColor = [UIColor whiteColor]; + } + return _backView; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 10; + } + return _stackView; +} + +- (UIImageView *)topImageView{ + if (!_topImageView){ + _topImageView = [UIImageView new]; + _topImageView.backgroundColor = [UIColor clearColor]; + _topImageView.userInteractionEnabled = YES; + _topImageView.image = [UIImage imageNamed:@"version_update_top_bg"]; + } + return _topImageView; +} + +- (SZTextView *)textView { + if (!_textView) { + _textView = [[SZTextView alloc] init]; + _textView.textColor = [DJDKMIMOMColor mainTextColor]; + _textView.font = [UIFont systemFontOfSize:12]; + _textView.backgroundColor = [UIColor clearColor]; + _textView.editable = NO; + } + return _textView; +} + +- (UILabel *)versionLabel { + if (!_versionLabel) { + _versionLabel = [[UILabel alloc] init]; + _versionLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _versionLabel.textColor = [UIColor whiteColor]; + } + return _versionLabel; +} + +-(UIButton *)updateBtn{ + if (!_updateBtn){ + UIImage *image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)]; + _updateBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_updateBtn setTitle:YMLocalizedString(@"XPUpgradeView0") forState:UIControlStateNormal]; + _updateBtn.titleLabel.font = [UIFont systemFontOfSize:14]; + _updateBtn.titleLabel.textColor = [DJDKMIMOMColor confirmButtonTextColor]; + [_updateBtn setBackgroundImage:image forState:UIControlStateNormal]; + _updateBtn.layer.cornerRadius = 36 / 2; + _updateBtn.layer.masksToBounds = YES; + [_updateBtn addTarget:self action:@selector(updateAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _updateBtn; +} +-(UIButton *)cancelBtn{ + if (!_cancelBtn){ + _cancelBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + UIImage *image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor cancelButtonGradientStartColor],[DJDKMIMOMColor cancelButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)]; + [_cancelBtn setTitle:YMLocalizedString(@"XPUpgradeView1") forState:UIControlStateNormal]; + _cancelBtn.titleLabel.font = [UIFont systemFontOfSize:14]; + [_cancelBtn setTitleColor:[DJDKMIMOMColor cancelButtonTextColor] forState:UIControlStateNormal]; + [_cancelBtn setBackgroundImage:image forState:UIControlStateNormal]; + _cancelBtn.layer.cornerRadius = 36 / 2; + _cancelBtn.layer.masksToBounds = YES; + [_cancelBtn addTarget:self action:@selector(cancelAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _cancelBtn; + +} + +@end diff --git a/YuMi/Modules/YMTabbar/View/VersionUpdate/YUMIAscensionRegard.h b/YuMi/Modules/YMTabbar/View/VersionUpdate/YUMIAscensionRegard.h deleted file mode 100644 index c9745ccc..00000000 --- a/YuMi/Modules/YMTabbar/View/VersionUpdate/YUMIAscensionRegard.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YMUpgradeView.h -// YUMI -// -// Created by YUMI on 2022/12/5. -// - -#import -#import "YUMIVersionRefurbishMatrix.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIAscensionRegard : UIView - -@property (nonatomic,strong) YUMIVersionRefurbishMatrix *versionMatrix; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/View/VersionUpdate/YUMIAscensionRegard.m b/YuMi/Modules/YMTabbar/View/VersionUpdate/YUMIAscensionRegard.m deleted file mode 100644 index d85e65d7..00000000 --- a/YuMi/Modules/YMTabbar/View/VersionUpdate/YUMIAscensionRegard.m +++ /dev/null @@ -1,217 +0,0 @@ -// -// YMUpgradeView.m -// YUMI -// -// Created by YUMI on 2022/12/5. -// - -#import "YUMIAscensionRegard.h" -#import -#import -#import "UIImage+Utils.h" -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "UIView+Corner.h" -#import "MKJPopup.h" - -@interface YUMIAscensionRegard() -@property (nonatomic,strong) UIView *contentView; -@property (nonatomic,strong) UIImageView *apexIndicateRegard; -@property (nonatomic,strong) UIView *encourageRegard; -@property (nonatomic,strong) SZTextView *textView; -@property (nonatomic,strong) UIStackView *stackView; -@property (nonatomic,strong) UIButton *refurbishBtuton; -@property (nonatomic,strong) UIButton *revocationBtuton; -@property (nonatomic,strong) UILabel *versionSequencignation; -@end - -@implementation YUMIAscensionRegard - -- (instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if(self){ - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.contentView]; - - [self.contentView addSubview:self.apexIndicateRegard]; - [self.contentView addSubview:self.encourageRegard]; - [self.apexIndicateRegard addSubview:self.versionSequencignation]; - [self.encourageRegard addSubview:self.textView]; - [self.encourageRegard addSubview:self.stackView]; - [self.stackView addArrangedSubview:self.revocationBtuton]; - [self.stackView addArrangedSubview:self.refurbishBtuton]; -} -- (void)initChildLyRestrictions { - CGFloat kwidth = (KScreenWidth - 100); - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(kwidth, 340)); - }]; - - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self); - }]; - - CGFloat kscale = 140.0 / 275.0; - [self.apexIndicateRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(kwidth, kwidth * kscale)); - make.top.mas_equalTo(self.contentView); - make.centerX.mas_equalTo(self.contentView); - }]; - - [self.encourageRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.apexIndicateRegard.mas_bottom); - }]; - - [self.versionSequencignation mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.apexIndicateRegard).offset(25); - make.top.mas_equalTo(self.apexIndicateRegard).offset(90 * kScreenScale); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(36); - make.centerX.mas_equalTo(self.contentView); - make.bottom.mas_equalTo(self.contentView).offset(-20); - }]; - - [self.revocationBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo((kwidth - 11 - 16 * 2) / 2.0); - }]; - [self.refurbishBtuton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(self.revocationBtuton); - }]; - - [self.textView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.apexIndicateRegard.mas_bottom).mas_offset(3); - make.left.mas_equalTo(17); - make.right.mas_equalTo(-17); - make.bottom.equalTo(self.stackView.mas_top).offset(-5); - }]; - -} - --(void)setVersionMatrix:(YUMIVersionRefurbishMatrix *)versionMatrix{ - _versionMatrix = versionMatrix; - if (_versionMatrix.updateVersionDesc) { - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:_versionMatrix.updateVersionDesc attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12], NSForegroundColorAttributeName:[DJDKMIMOMColor mainEssayPrettify]}]; - NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; - paragraphStyle.lineSpacing = 5; - [attribute addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, _versionMatrix.updateVersionDesc.length)]; - _textView.attributedText = attribute; - } - - _versionSequencignation.text = [NSString stringWithFormat:@"V%@", _versionMatrix.updateVersion]; - _revocationBtuton.hidden = _versionMatrix.updateStatus == 3; -} - --(void)updateAction{ - NSURL *url = [[NSURL alloc]initWithString:self.versionMatrix.updateDownloadLink]; - if ([[UIApplication sharedApplication] canOpenURL:url]) { - [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) { - if(self.versionMatrix.updateStatus != 3){ - [MKJPopup dismiss]; - } - }]; - } -} --(void)revocationPerformance{ - [MKJPopup dismiss]; -} -#pragma mark - 懒加载 -- (UIView *)contentView { - if (!_contentView) { - _contentView = [[UIView alloc] init]; - _contentView.backgroundColor = [UIColor clearColor]; - _contentView.layer.cornerRadius = 12; - _contentView.layer.masksToBounds = YES; - } - return _contentView; -} - -- (UIView *)encourageRegard { - if (!_encourageRegard) { - _encourageRegard = [[UIView alloc] init]; - _encourageRegard.backgroundColor = [UIColor whiteColor]; - } - return _encourageRegard; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 10; - } - return _stackView; -} - -- (UIImageView *)apexIndicateRegard{ - if (!_apexIndicateRegard){ - _apexIndicateRegard = [UIImageView new]; - _apexIndicateRegard.backgroundColor = [UIColor clearColor]; - _apexIndicateRegard.userInteractionEnabled = YES; - _apexIndicateRegard.image = [UIImage imageNamed:@"yumi_version_update_top_background"]; - } - return _apexIndicateRegard; -} - -- (SZTextView *)textView { - if (!_textView) { - _textView = [[SZTextView alloc] init]; - _textView.textColor = [DJDKMIMOMColor mainEssayPrettify]; - _textView.font = [UIFont systemFontOfSize:12]; - _textView.backgroundColor = [UIColor clearColor]; - _textView.editable = NO; - } - return _textView; -} - -- (UILabel *)versionSequencignation { - if (!_versionSequencignation) { - _versionSequencignation = [[UILabel alloc] init]; - _versionSequencignation.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _versionSequencignation.textColor = [UIColor whiteColor]; - } - return _versionSequencignation; -} - --(UIButton *)refurbishBtuton{ - if (!_refurbishBtuton){ - UIImage *image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor acknowledgementBtutonObliquityInititowardsePrettify],[DJDKMIMOMColor acknowledgementBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)]; - _refurbishBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_refurbishBtuton setTitle:YMLocalizedString(@"YUMI_Upgrade_View_0") forState:UIControlStateNormal]; - _refurbishBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - _refurbishBtuton.titleLabel.textColor = [DJDKMIMOMColor acknowledgementBtutonEssayPrettify]; - [_refurbishBtuton setBackgroundImage:image forState:UIControlStateNormal]; - _refurbishBtuton.layer.cornerRadius = 36 / 2; - _refurbishBtuton.layer.masksToBounds = YES; - [_refurbishBtuton addTarget:self action:@selector(updateAction) forControlEvents:UIControlEventTouchUpInside]; - } - return _refurbishBtuton; -} --(UIButton *)revocationBtuton{ - if (!_revocationBtuton){ - _revocationBtuton = [UIButton buttonWithType:UIButtonTypeCustom]; - UIImage *image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor revoctowardsionBtutonObliquityInititowardsePrettify],[DJDKMIMOMColor revoctowardsionBtutonObliquityConcludePrettify]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)]; - [_revocationBtuton setTitle:YMLocalizedString(@"YUMI_Upgrade_View_1") forState:UIControlStateNormal]; - _revocationBtuton.titleLabel.font = [UIFont systemFontOfSize:14]; - [_revocationBtuton setTitleColor:[DJDKMIMOMColor revoctowardsionBtutonEssayPrettify] forState:UIControlStateNormal]; - [_revocationBtuton setBackgroundImage:image forState:UIControlStateNormal]; - _revocationBtuton.layer.cornerRadius = 36 / 2; - _revocationBtuton.layer.masksToBounds = YES; - [_revocationBtuton addTarget:self action:@selector(revocationPerformance) forControlEvents:UIControlEventTouchUpInside]; - } - return _revocationBtuton; - -} - -@end diff --git a/YuMi/Modules/YMTabbar/View/XPBlankViewController.h b/YuMi/Modules/YMTabbar/View/XPBlankViewController.h new file mode 100644 index 00000000..644daf07 --- /dev/null +++ b/YuMi/Modules/YMTabbar/View/XPBlankViewController.h @@ -0,0 +1,16 @@ +// +// YMBlankViewController.h +// YUMI +// +// Created by XY on 2023/2/23. +// + +#import "BaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPBlankViewController : BaseViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/View/XPBlankViewController.m b/YuMi/Modules/YMTabbar/View/XPBlankViewController.m new file mode 100644 index 00000000..e5f12674 --- /dev/null +++ b/YuMi/Modules/YMTabbar/View/XPBlankViewController.m @@ -0,0 +1,25 @@ +// +// YMBlankViewController.m +// YUMI +// +// Created by XY on 2023/2/23. +// + +#import "XPBlankViewController.h" + +@interface XPBlankViewController () + +@end + +@implementation XPBlankViewController + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. +} + +@end diff --git a/YuMi/Modules/YMTabbar/View/XPTabBar.h b/YuMi/Modules/YMTabbar/View/XPTabBar.h new file mode 100644 index 00000000..36e4c0ba --- /dev/null +++ b/YuMi/Modules/YMTabbar/View/XPTabBar.h @@ -0,0 +1,16 @@ +// +// YMTabBar.h +// YUMI +// +// Created by XY on 2023/2/15. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPTabBar : UITabBar + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/View/XPTabBar.m b/YuMi/Modules/YMTabbar/View/XPTabBar.m new file mode 100644 index 00000000..dd8499fb --- /dev/null +++ b/YuMi/Modules/YMTabbar/View/XPTabBar.m @@ -0,0 +1,89 @@ +// +// YMTabBar.m +// YUMI +// +// Created by XY on 2023/2/15. +// + +#import "XPTabBar.h" +#import "UIImage+Utils.h" +#import "YUMIMacroUitls.h" +#import "DJDKMIMOMColor.h" + +CGFloat tabBarHeight = 60.0; // TabBar高度 +CGFloat leftRightSpace = 8.0; // TabBar左右距离 +CGFloat bottomSpace = 29.0; // TabBar离底部距离 +NSInteger itemCount = 4; // tabBarItem的数量 + +@interface XPTabBar() + +/// 背景 +@property (nonatomic, strong) UIView *bgView; + +@end + +@implementation XPTabBar + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if(self) { + + [self addSubview:self.bgView]; + // 去除顶部横线 + [self setBackgroundImage:[UIImage new]]; + [self setShadowImage:[UIImage new]]; + + if (@available(iOS 15.0, *)) { + UITabBarAppearance *bar = [UITabBarAppearance new]; + bar.backgroundColor = [UIColor clearColor]; + bar.backgroundEffect = nil; + // 隐藏细线 + [bar configureWithTransparentBackground]; + bar.stackedLayoutAppearance.selected.titleTextAttributes = @{NSFontAttributeName:[UIFont systemFontOfSize:10],NSForegroundColorAttributeName:[DJDKMIMOMColor appMainColor]}; + bar.stackedLayoutAppearance.normal.titleTextAttributes = @{NSFontAttributeName:[UIFont systemFontOfSize:10],NSForegroundColorAttributeName:[DJDKMIMOMColor secondTextColor]}; + self.scrollEdgeAppearance = bar; + self.standardAppearance = bar; + } else { + self.backgroundColor = [UIColor clearColor]; + self.shadowImage = nil; + [[UITabBarItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor appMainColor]} forState:UIControlStateSelected]; + [[UITabBarItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor secondTextColor]} forState:UIControlStateNormal]; + } + self.translucent = YES; + } + return self; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + // 重设tabBar的位置 + self.frame = CGRectMake(0, KScreenHeight- tabBarHeight-bottomSpace, KScreenWidth, tabBarHeight); + + // 设置其他tabbarbtn的frame + CGFloat tabBarButtonW = (KScreenWidth-leftRightSpace*2)/itemCount; + CGFloat tabBarButtonIndex = 0; + for (UIView *child in self.subviews) { + Class class = NSClassFromString(@"UITabBarButton"); + if ([child isKindOfClass:class]) { + CGRect frame = CGRectMake(tabBarButtonIndex * tabBarButtonW+leftRightSpace, (tabBarHeight-49)/2, tabBarButtonW, 49); + child.frame = frame; + tabBarButtonIndex ++; + } + } +} + +- (UIView *)bgView { + if (!_bgView) { + _bgView = [[UIView alloc] init]; + _bgView.backgroundColor = [[DJDKMIMOMColor tabbarViewColor] colorWithAlphaComponent:0.95]; + _bgView.frame = CGRectMake(leftRightSpace, 0, KScreenWidth-leftRightSpace*2, tabBarHeight); + _bgView.layer.cornerRadius = tabBarHeight/2.0; + _bgView.layer.shadowColor = [UIColor.blackColor colorWithAlphaComponent:0.5].CGColor; + _bgView.layer.shadowOffset = CGSizeMake(0, 0); + _bgView.layer.shadowOpacity = 0.2; + _bgView.layer.shadowRadius = 5; + } + return _bgView; +} + +@end diff --git a/YuMi/Modules/YMTabbar/View/YUMIBlankRegardGovernancer.h b/YuMi/Modules/YMTabbar/View/YUMIBlankRegardGovernancer.h deleted file mode 100644 index 43b0e8d1..00000000 --- a/YuMi/Modules/YMTabbar/View/YUMIBlankRegardGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMBlankViewController.h -// YUMI -// -// Created by XY on 2023/2/23. -// - -#import "BaseRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMIBlankRegardGovernancer : BaseRegardGovernancer - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/View/YUMIBlankRegardGovernancer.m b/YuMi/Modules/YMTabbar/View/YUMIBlankRegardGovernancer.m deleted file mode 100644 index d6b520e3..00000000 --- a/YuMi/Modules/YMTabbar/View/YUMIBlankRegardGovernancer.m +++ /dev/null @@ -1,25 +0,0 @@ -// -// YMBlankViewController.m -// YUMI -// -// Created by XY on 2023/2/23. -// - -#import "YUMIBlankRegardGovernancer.h" - -@interface YUMIBlankRegardGovernancer () - -@end - -@implementation YUMIBlankRegardGovernancer - -- (BOOL)isVeiledNevObstacle { - return YES; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - -} - -@end diff --git a/YuMi/Modules/YMTabbar/View/YUMITabObstacle.h b/YuMi/Modules/YMTabbar/View/YUMITabObstacle.h deleted file mode 100644 index a1089a68..00000000 --- a/YuMi/Modules/YMTabbar/View/YUMITabObstacle.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// YMTabBar.h -// YUMI -// -// Created by XY on 2023/2/15. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface YUMITabObstacle : UITabBar - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/View/YUMITabObstacle.m b/YuMi/Modules/YMTabbar/View/YUMITabObstacle.m deleted file mode 100644 index 66081a34..00000000 --- a/YuMi/Modules/YMTabbar/View/YUMITabObstacle.m +++ /dev/null @@ -1,88 +0,0 @@ -// -// YMTabBar.m -// YUMI -// -// Created by XY on 2023/2/15. -// - -#import "YUMITabObstacle.h" -#import "UIImage+Utils.h" -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" - -CGFloat tabBarHeight = 60.0; -CGFloat leftRightSpace = 8.0; -CGFloat bottomSpace = 29.0; -NSInteger itemCount = 4; - -@interface YUMITabObstacle() - -@property (nonatomic, strong) UIView *backgroundRegard; - -@end - -@implementation YUMITabObstacle - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if(self) { - - [self addSubview:self.backgroundRegard]; - - [self setBackgroundImage:[UIImage new]]; - [self setShadowImage:[UIImage new]]; - - if (@available(iOS 15.0, *)) { - UITabBarAppearance *bar = [UITabBarAppearance new]; - bar.backgroundColor = [UIColor clearColor]; - bar.backgroundEffect = nil; - - [bar configureWithTransparentBackground]; - bar.stackedLayoutAppearance.selected.titleTextAttributes = @{NSFontAttributeName:[UIFont systemFontOfSize:10],NSForegroundColorAttributeName:[DJDKMIMOMColor aplictowardsionMainPrettify]}; - bar.stackedLayoutAppearance.normal.titleTextAttributes = @{NSFontAttributeName:[UIFont systemFontOfSize:10],NSForegroundColorAttributeName:[DJDKMIMOMColor instantEssayPrettify]}; - self.scrollEdgeAppearance = bar; - self.standardAppearance = bar; - } else { - self.backgroundColor = [UIColor clearColor]; - self.shadowImage = nil; - [[UITabBarItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor aplictowardsionMainPrettify]} forState:UIControlStateSelected]; - [[UITabBarItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor instantEssayPrettify]} forState:UIControlStateNormal]; - } - self.translucent = YES; - } - return self; -} - -- (void)layoutSubviews { - [super layoutSubviews]; - - self.frame = CGRectMake(0, KScreenHeight- tabBarHeight-bottomSpace, KScreenWidth, tabBarHeight); - - - CGFloat tabBarButtonW = (KScreenWidth-leftRightSpace*2)/itemCount; - CGFloat tabBarButtonIndex = 0; - for (UIView *child in self.subviews) { - Class class = NSClassFromString(@"UITabBarButton"); - if ([child isKindOfClass:class]) { - CGRect frame = CGRectMake(tabBarButtonIndex * tabBarButtonW+leftRightSpace, (tabBarHeight-49)/2, tabBarButtonW, 49); - child.frame = frame; - tabBarButtonIndex ++; - } - } -} - -- (UIView *)backgroundRegard { - if (!_backgroundRegard) { - _backgroundRegard = [[UIView alloc] init]; - _backgroundRegard.backgroundColor = [[DJDKMIMOMColor tabbarRegardPrettify] colorWithAlphaComponent:0.95]; - _backgroundRegard.frame = CGRectMake(leftRightSpace, 0, KScreenWidth-leftRightSpace*2, tabBarHeight); - _backgroundRegard.layer.cornerRadius = tabBarHeight/2.0; - _backgroundRegard.layer.shadowColor = [UIColor.blackColor colorWithAlphaComponent:0.5].CGColor; - _backgroundRegard.layer.shadowOffset = CGSizeMake(0, 0); - _backgroundRegard.layer.shadowOpacity = 0.2; - _backgroundRegard.layer.shadowRadius = 5; - } - return _backgroundRegard; -} - -@end diff --git a/YuMi/Modules/YMWeb/XPWebViewController.h b/YuMi/Modules/YMWeb/XPWebViewController.h new file mode 100644 index 00000000..1128791d --- /dev/null +++ b/YuMi/Modules/YMWeb/XPWebViewController.h @@ -0,0 +1,46 @@ +// +// XPWebViewController.h +// YuMi +// +// Created by zu on 2021/9/16. +// + +#import "BaseViewController.h" +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPWebViewControllerDelegate + +-(void)payHandler; + +@end + + +@interface XPWebViewController : BaseViewController +/// +@property (nonatomic,weak) id delegate; +@property (strong, nonatomic,readonly) WKWebView *webview; +///跳转方式,如果push的直接pushViewController,不用dismissViewControllerAnimated后再pushViewController +@property (nonatomic,assign) BOOL isPush; +//TODO: 先这样传进来 等修改了保存房间信息的manager 之后在修改 +@property (nonatomic,copy) NSString *roomUid; +///是否从精灵页面过来 +@property (nonatomic,assign) BOOL isFairyPay; + + +///XPWebViewController是否作为属性,yes则 +@property (nonatomic,assign) BOOL isProperty; +@property (copy, nonatomic) NSString *url; + +/// URL加载完成回调,result:加载结果成功/失败,error:失败原因 +@property (nonatomic, copy) void (^urlLoadCompleted)(BOOL result, NSError * _Nullable error); +///是都隐藏导航栏 目前适用于半屏的情况下 +@property (nonatomic,copy) void (^InitShowNavBlock)(BOOL show); +///关闭webView 目前适用于半屏的情况下 +@property (nonatomic,copy) void (^CloseWebViewBlock)(BOOL result); +- (instancetype)initWithCustomizeNav:(BOOL)isCustom; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMWeb/XPWebViewController.m b/YuMi/Modules/YMWeb/XPWebViewController.m new file mode 100644 index 00000000..cd582a3f --- /dev/null +++ b/YuMi/Modules/YMWeb/XPWebViewController.m @@ -0,0 +1,718 @@ +// +// XPWebViewController.m +// YuMi +// +// Created by zu on 2021/9/16. +// + +#import "XPWebViewController.h" +#import "AccountInfoStorage.h" +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "YYUtility.h" +#import "HttpRequestHelper.h" +#import "XPShareView.h" +#import "TTPopup.h" +#import +#import +#import "XCCurrentVCStackManager.h" +#import "XPMineUserInfoViewController.h" +#import "XPMineRechargeViewController.h" +///vc +#import "XPMineDressUpViewController.h" +#import "XPDressUpShopViewController.h" +#import "XPRoomViewController.h" +#import "RoomHostDelegate.h" +#import "WalletInfoModel.h" +#import "Api+Mine.h" +#import "XPSkillCardPlayerManager.h" +#import "XPWebViewNavView.h" +#import "XPIAPRechargeViewController.h" + +typedef NS_ENUM(NSUInteger, RightNavigationPushType){ + ///跳转h5页面 + RightNavigationPushType_Web = 1, + ///分享 + RightNavigationPushType_Share = 2, + ///跳转原生页面 + RightNavigationPushType_AppPage = 3, + ///分享图片 + RightNavigationPushType_SharePicture = 5 +}; + +@interface WeakWebViewScriptMessageDelegate : NSObject + +//WKScriptMessageHandler 这个协议类专门用来处理JavaScript调用原生OC的方法 +@property (nonatomic, weak) id scriptDelegate; + +- (instancetype)initWithDelegate:(id)scriptDelegate; + +@end +@implementation WeakWebViewScriptMessageDelegate + +- (instancetype)initWithDelegate:(id)scriptDelegate { + self = [super init]; + if (self) { + _scriptDelegate = scriptDelegate; + } + return self; +} + +//遵循WKScriptMessageHandler协议,必须实现如下方法,然后把方法向外传递 +//通过接收JS传出消息的name进行捕捉的回调方法 +- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message { + + if ([self.scriptDelegate respondsToSelector:@selector(userContentController:didReceiveScriptMessage:)]) { + [self.scriptDelegate userContentController:userContentController didReceiveScriptMessage:message]; + } +} + +@end + +@interface XPWebViewController () +@property (nonatomic,strong) WalletInfoModel *model ; +@property (strong, nonatomic) WKWebView *webview; +@property (strong, nonatomic) UIProgressView *progressView; +@property (nonatomic, strong) WKUserContentController *userContentController; +///分享的内容 +@property (nonatomic,copy) NSDictionary *shareDic; +/// +@property (nonatomic,strong) XPWebViewNavView *navView; +/// +@property (nonatomic,assign) BOOL isCustom; +@end + +NSString * const kJSOpenPurse = @"openPurse"; +NSString * const kJSOpenChargePage = @"openChargePage"; +NSString * const kJSChargePayPage = @"chargePayPage"; +NSString * const kJSChargePayClickPage = @"chargePayClickPage"; +NSString * const kJSOpenSharePage = @"openSharePage"; +NSString * const kJSGetUid = @"getUid"; +NSString * const kJSGetDeviceId = @"getDeviceId"; +NSString * const kJSGetTicket = @"getTicket"; +NSString * const kJSGetDeviceInfo = @"getDeviceInfo"; +NSString * const kJSOpenFaceLiveness = @"openFaceLiveness"; +NSString * const kJSInitNav = @"initNav"; +NSString * const kJSGetRoomUid = @"getRoomUid"; +NSString * const kOpenPersonPage = @"openPersonPage"; +NSString * const kInitShowNav = @"initShowNav"; +NSString * const kCloseWebView = @"closeWebView"; +NSString * const kJumpAppointPage = @"jumpAppointPage"; +NSString * const kJSOpenRoom = @"openRoom"; +NSString * const kJSOpenRoomForGiftId = @"openRoomForGiftId"; + +@implementation XPWebViewController + +- (instancetype)initWithCustomizeNav:(BOOL)isCustom +{ + self = [super init]; + if (self) { + self.isCustom = isCustom; + + } + return self; +} + +-(void)viewWillAppear:(BOOL)animated{ + [super viewWillAppear:animated]; + + if([XPSkillCardPlayerManager shareInstance].isInRoom == YES && self.isProperty == NO && [XPSkillCardPlayerManager shareInstance].isInRoomFirstRecharge == NO){ + [XPSkillCardPlayerManager shareInstance].isInRoomFirstRecharge = YES; + } + +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initView]; + +} + +- (void)initView { + if (self.navigationController.viewControllers.count > 1){ + UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"common_nav_back"] style:UIBarButtonItemStylePlain target:self action:@selector(backButtonClick)]; + + leftBarButtonItem.tintColor = [DJDKMIMOMColor mainTextColor]; + + self.navigationItem.leftBarButtonItem = leftBarButtonItem; + } + if (@available(iOS 11.0, *)) { + self.webview.scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + }else{ + self.automaticallyAdjustsScrollViewInsets = NO; + } + if(self.isCustom == YES){ + [self.view addSubview:self.navView]; + + [self.view addSubview:self.webview]; + [self.view addSubview:self.progressView]; + [self.navView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.equalTo(self.view); + make.height.mas_equalTo(kNavigationHeight); + }]; + [self.webview mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.equalTo(self.view); + make.top.equalTo(self.navView.mas_bottom); + }]; + [self.progressView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.equalTo(self.view); + make.height.mas_equalTo(1); + make.top.equalTo(self.navView.mas_bottom); + }]; + }else{ + [self.view addSubview:self.webview]; + [self.view addSubview:self.progressView]; + [self.webview mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.bottom.mas_equalTo(self.view); + }]; + } + + + + + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + [Api getUserWalletInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if(code == 200){ + WalletInfoModel * model = [WalletInfoModel modelWithDictionary:data.data]; + self.model = model; + } + + } uid:uid ticket:ticket]; +} +- (void)xPWebViewNavView:(XPWebViewNavView *)view didClickBack:(UIButton *)sender{ + if(self.isFairyPay){ + if(self.CloseWebViewBlock){ + self.CloseWebViewBlock(YES); + } + return; + } + [self dismissViewControllerAnimated:YES completion:nil]; +} +//加载完成 +- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation { + //加载完成后隐藏progressView + self.progressView.hidden = YES; + if (self.urlLoadCompleted) { + self.urlLoadCompleted(YES, nil); + } +} + +//加载失败 +- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error { + //加载失败同样需要隐藏progressView + self.progressView.hidden = YES; + if (self.urlLoadCompleted) { + self.urlLoadCompleted(NO, error); + } +} + +//捕抓打电话事件 +- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler { + NSURL *URL = navigationAction.request.URL; + NSString *scheme = [URL scheme]; + NSURLRequest *request = navigationAction.request; + // Judge is whether to jump to other app. + if (![scheme isEqualToString:@"https"] && ![scheme isEqualToString:@"http"]) { + BOOL canOpen = [[UIApplication sharedApplication] canOpenURL:request.URL]; + if (canOpen) { + [[UIApplication sharedApplication] openURL:request.URL]; + } + decisionHandler(WKNavigationActionPolicyCancel); + return; + } + decisionHandler(WKNavigationActionPolicyAllow); +} +- (void)webView:(WKWebView *)webView didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler{ + if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) { + dispatch_async(dispatch_get_main_queue(), ^{ + NSURLCredential *card = [[NSURLCredential alloc]initWithTrust:challenge.protectionSpace.serverTrust]; + completionHandler(NSURLSessionAuthChallengeUseCredential,card); + }); + + + } +} +- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message { + [self.webview evaluateJavaScript:@"document.location.href" completionHandler:^(id _Nullable response, NSError * _Nullable error) { + NSLog(@"%@", response); + NSString *currentUrl = [NSString stringWithFormat:@"%@", response]; + ///测试环境只要有host就执行,方便h5连接本地调试 +#ifdef DEBUG + if (currentUrl != nil) { +#else + if (currentUrl != nil && [currentUrl containsString:API_HOST_URL]) { +#endif + if ([message.name isEqualToString:kJSOpenSharePage]) { + if (message.body && message.body != [NSNull null]) { + NSDictionary *body; + //不知道是哪个蓝精灵弄的,变成了个dic,所以我们要判断类型 + if ([message.body isKindOfClass:[NSDictionary class]]) { + body = message.body; + } else if ([message.body isKindOfClass:[NSString class]]) { + body = [message.body toJSONObject]; + } + self.shareDic = body[@"data"]; + [self showSharePanel]; + } + } else if ([message.name isEqualToString:kJSGetUid]) { + NSString *uid = [[AccountInfoStorage instance] getUid]; + NSString *js = [NSString stringWithFormat:@"getMessage(\"uid\",%@)", uid]; + [self.webview evaluateJavaScript:js completionHandler:^(id _Nullable other, NSError * _Nullable error) { + NSLog(@"%@",error); + }]; + } else if ([message.name isEqualToString:kJSGetTicket]) { + NSString *ticket = [[AccountInfoStorage instance] getTicket]; + NSString *js = [NSString stringWithFormat:@"getMessage(\"ticket\",\"%@\")",ticket]; + [self.webview evaluateJavaScript:js completionHandler:^(id _Nullable other, NSError * _Nullable error) { + NSLog(@"%@",error); + }]; + } else if ([message.name isEqualToString:kJSGetDeviceId]) { + NSString *js = [NSString stringWithFormat:@"getMessage(\"deviceId\",\"%@\")",[YYUtility deviceUniqueIdentification]]; + [self.webview evaluateJavaScript:js completionHandler:^(id _Nullable other, NSError * _Nullable error) { + NSLog(@"%@",error); + }]; + } else if ([message.name isEqualToString:kJSGetDeviceInfo]) { + NSDictionary *basicParmars = [HttpRequestHelper configBaseParmars:[[NSDictionary alloc] init]]; + NSString *json = [basicParmars mj_JSONString]; + NSString *js = [NSString stringWithFormat:@"getMessage(\"deviceInfo\",%@)", json]; + [self.webview evaluateJavaScript:js completionHandler:^(id _Nullable ohter, NSError * _Nullable error) { + NSLog(@"%@", error); + }]; + } else if ([message.name isEqualToString:kJSOpenPurse]) { + + }else if([message.name isEqualToString:kJSChargePayPage]){ + NSString *money = [NSString stringWithFormat:@"%@",message.body] ; + + }else if([message.name isEqualToString:kJSChargePayClickPage]){ + if(message.body != nil && self.model.diamonds != nil){ + NSString *type = [NSString stringWithFormat:@"%@",message.body]; + } + }else if ([message.name isEqualToString:kJSOpenChargePage]) { + if(self.delegate && [self.delegate respondsToSelector:@selector(payHandler)]){ + [self.delegate payHandler]; + return; + } + + + + [TTPopup dismiss]; + if(self.isPush){ + XPIAPRechargeViewController * webVC =[[XPIAPRechargeViewController alloc] init]; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:webVC animated:YES]; + return; + } + UIViewController *controller = [XCCurrentVCStackManager shareManager].getCurrentVC; + if (controller.presentingViewController) { + [controller dismissViewControllerAnimated:NO completion:nil]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + + XPIAPRechargeViewController * webVC =[[XPIAPRechargeViewController alloc] init]; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:webVC animated:YES]; + }); + }else { + XPIAPRechargeViewController * webVC =[[XPIAPRechargeViewController alloc] init]; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:webVC animated:YES]; + } + } else if ([message.name isEqualToString:kOpenPersonPage]) { + NSString *uid = [NSString stringWithFormat:@"%@",message.body]; + if (uid.integerValue > 0) { + [TTPopup dismiss]; + XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init]; + userInfoVC.uid = uid.integerValue; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:userInfoVC animated:YES]; + } + } else if([message.name isEqualToString:kJSInitNav]) { + [self initNav:message.body]; + } else if([message.name isEqualToString:kJSGetRoomUid]) { + NSString *js = [NSString stringWithFormat:@"getMessage(\"roomUid\",\"%@\")",self.roomUid]; + [self.webview evaluateJavaScript:js completionHandler:^(id _Nullable other, NSError * _Nullable error) { + NSLog(@"%@",error); + }]; + } else if([message.name isEqualToString:kInitShowNav]) { + if (((NSNumber *)message.body).intValue == 0) { + if (self.InitShowNavBlock) { + self.InitShowNavBlock(YES); + return; + } + if (self.navigationController) { + [self.navigationController setNavigationBarHidden:YES]; + } + } + } else if([message.name isEqualToString:kCloseWebView]) { + if (self.CloseWebViewBlock) { + self.CloseWebViewBlock(YES); + return; + } + if (self.navigationController) { + [self.navigationController popViewControllerAnimated:YES]; + } + } else if ([message.name isEqualToString:kJumpAppointPage]) { + // h5与原生交互新协议 + NSDictionary *bodyDict; + if ([message.body isKindOfClass:[NSDictionary class]]) { + bodyDict = message.body; + } else if ([message.body isKindOfClass:[NSString class]]) { + NSString *str = (NSString *)message.body; + bodyDict = [str toJSONObject]; + } + NSInteger skyType = [bodyDict[@"routerType"] integerValue]; + [self handleRouterType:skyType message:message]; + } else if ([message.name isEqualToString:kJSOpenRoom]) { + NSString *uid = [NSString stringWithFormat:@"%@",message.body]; + if (uid.length > 0) { + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj isKindOfClass:[XPRoomViewController class]]) { + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController popToRootViewControllerAnimated:NO]; + XPRoomViewController * rooomVC = obj; + [rooomVC exitRoom]; + *stop = YES; + } + }]; + if(self.view.superview){ + [TTPopup dismiss]; + } + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [XPRoomViewController openRoom:uid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; + }); + } + } else if([message.name isEqualToString:kJSOpenRoomForGiftId]) { + NSLog(@"%@", message.body); + NSDictionary *bodyDict; + if ([message.body isKindOfClass:[NSDictionary class]]) { + bodyDict = message.body; + } else if ([message.body isKindOfClass:[NSString class]]) { + NSString *str = (NSString *)message.body; + bodyDict = [str toJSONObject]; + } + //房间页 传参:uid + NSString *uid = [NSString stringWithFormat:@"%@", bodyDict[@"uid"]]; + NSString *giftId = [NSString stringWithFormat:@"%@", bodyDict[@"giftId"]]; + if (uid.length) { + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj isKindOfClass:[XPRoomViewController class]]) { + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController popToRootViewControllerAnimated:NO]; + XPRoomViewController * rooomVC = obj; + [rooomVC exitRoom]; + *stop = YES; + } + }]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [XPRoomViewController openRoom:uid giftId:giftId viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; + }); + } + + } + } + }]; + } + +#pragma mark - private method +- (void)handleRouterType:(NSInteger)skyType message:(WKScriptMessage *)message { + NSDictionary *bodyDict = (NSDictionary *)message.body; + switch (skyType) { + case 1: + { + //房间页 传参:uid + NSString *uid = [NSString stringWithFormat:@"%@", bodyDict[@"routerVal"]]; + if (uid.length) { + [XPRoomViewController openRoom:uid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; + } + } + break; + case 7: + { + //座驾 + XPMineDressUpViewController *vc = [[XPMineDressUpViewController alloc] init]; + vc.currentIndex = 1; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:vc animated:YES]; + } + break; + case 8: + { + //头饰 + XPMineDressUpViewController *vc = [[XPMineDressUpViewController alloc] init]; + vc.currentIndex = 0; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:vc animated:YES]; + } + break; + default: + break; + } +} +- (void)setUrl:(NSString *)urlString{ + _url = urlString; + if (_url == nil) { + return; + } + if (![_url hasPrefix:@"http"] && ![_url hasPrefix:@"https"]){ + _url = [NSString stringWithFormat:@"%@/%@", API_HOST_URL, _url]; + } + + if (![_url containsString:@"?"]) { + _url = [NSString stringWithFormat:@"%@", _url]; + } else { + _url = [NSString stringWithFormat:@"%@", _url]; + } + + // 去掉 urlString 中的空格。 + NSString *noSpaceTextUrl = [_url stringByReplacingOccurrencesOfString:@" " withString:@""]; + + NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:noSpaceTextUrl]]; + [self.webview loadRequest:request]; +} +- (void)backButtonClick { + BOOL canGoBack = YES; + if (self.webview.backForwardList.backList.count <= 1) { + canGoBack = NO; + } + + if ([self.webview canGoBack]) { + [self.webview goBack]; + } else { + [self.navigationController popViewControllerAnimated:YES]; + [self.userContentController removeAllUserScripts]; + } +} +#pragma mark - 分享 +- (void)initNav:(NSDictionary *)response{ + if(!response || ![response isKindOfClass:[NSDictionary class]])return; + self.shareDic = response[@"data"]; + if ([response[@"type"] intValue]== RightNavigationPushType_Web) { + [self addNavigationItemWithTitles:@[response[@"data"][@"title"]] titleColor:[DJDKMIMOMColor alertTitleColor] isLeft:NO target:self action:@selector(gotoWebView) tags:nil]; + }else if ([response[@"type"] intValue]== RightNavigationPushType_Share || [response[@"type"] intValue]== RightNavigationPushType_SharePicture){ + [self addNavigationItemWithImageNames:@[@"family_person_share"] isLeft:NO + target:self action:@selector(showSharePanel) tags:nil]; + } +} + +- (void)gotoWebView { + if (self.shareDic[@"link"]) { + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + webVC.url = self.shareDic[@"link"]; + [self.navigationController pushViewController:webVC animated:YES]; + } +} + +- (void)showSharePanel { + if (self.shareDic.allKeys.count <= 0) { + return; + } + NSDictionary * dic = self.shareDic; + XPShareInfoModel * shareInfo = [[XPShareInfoModel alloc] init]; + shareInfo.shareTitle = self.shareDic[@"title"]; + shareInfo.shareContent = dic[@"desc"]; + shareInfo.shareImageUrl = dic[@"imgUrl"]; + shareInfo.type = ShareType_H5; + shareInfo.uid = [AccountInfoStorage instance].getUid; + NSString *urlStr = ((NSString *)dic[@"url"]).length > 0 ? dic[@"url"] : dic[@"showUrl"]; + if (urlStr.length) { + if ([urlStr containsString:@"?"]) { + urlStr = [NSString stringWithFormat:@"%@&shareUid=%@",urlStr,[AccountInfoStorage instance].getUid]; + } else { + urlStr = [NSString stringWithFormat:@"%@?shareUid=%@",urlStr,[AccountInfoStorage instance].getUid]; + } + } + shareInfo.shareUrl = urlStr; + XPShareItem *cycle = [XPShareItem itemWitTag:XPShareItemTagFaceBook title:@"FaceBook" imageName:@"share_fb" disableImageName:@"share_fb"]; + XPShareItem *wechat = [XPShareItem itemWitTag:XPShareItemTagLine title:@"Line" imageName:@"share_line" disableImageName:@"share_line"]; + XPShareItem *qq = [XPShareItem itemWitTag:XPShareItemTagCopyLink title:YMLocalizedString(@"RoomHeaderView3") imageName:@"share_copy_link" disableImageName:@"share_copy_link"]; + NSArray * items = @[wechat,cycle, qq]; + CGFloat margin = 15; + CGSize itemSize = CGSizeMake((KScreenWidth-2*margin)/4, 65); + XPShareView *shareView = [[XPShareView alloc] initWithItems:items itemSize:itemSize shareInfo:shareInfo]; + shareView.delegate = self; + + [TTPopup popupView:shareView style:TTPopupStyleActionSheet]; + +} + +#pragma mark - XCShareViewDelegate +- (void)shareViewDidClickCancle:(XPShareView *)shareView { + [TTPopup dismiss]; +} +- (void)shareView:(XPShareView *)shareView didSuccess:(XPShareInfoModel *)shareInfo { + [TTPopup dismiss]; + NSMutableDictionary *params = [NSMutableDictionary dictionary]; + NSString *uid = [AccountInfoStorage instance].getUid; + NSString *ticket = [AccountInfoStorage instance].getTicket; + [params setObject:uid forKey:@"uid"]; + [params setObject:@(shareInfo.shareType) forKey:@"shareType"]; + [params setObject:ticket forKey:@"ticket"]; + [params setObject:@(shareInfo.type) forKey:@"sharePageId"]; + if (shareInfo.shareUrl.length > 0) { + [params setObject:shareInfo.shareUrl forKey:@"shareUrl"]; + } + if (shareInfo.roomUid > 0) { + [params setObject:@(shareInfo.roomUid) forKey:@"targetUid"]; + } + + [HttpRequestHelper POST:@"usershare/save" params:params success:^(BaseModel * _Nonnull data) { + + } failure:^(NSInteger resCode, NSString * _Nonnull message) { + + }]; +} + +- (void)shareView:(XPShareView *)shareView shareFail:(NSString *)message { + [TTPopup dismiss]; + [self showErrorToast:message]; +} + +- (void)shareViewDidClickCancel:(XPShareView *)shareView { + [TTPopup dismiss]; +} + +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { + if ([keyPath isEqualToString:@"estimatedProgress"]) { + self.progressView.progress = self.webview.estimatedProgress; + if (self.progressView.progress == 1) { + __weak typeof (self)weakSelf = self; + [UIView animateWithDuration:0.25f delay:0.3f options:UIViewAnimationOptionCurveEaseOut animations:^{ + weakSelf.progressView.transform = CGAffineTransformMakeScale(1.0f, 1.0f); + } completion:^(BOOL finished) { + weakSelf.progressView.hidden = YES; + }]; + } + } else if ([keyPath isEqualToString:@"title"]) { + if (object == self.webview) { + self.navigationItem.title = self.webview.title; + if (self.urlLoadCompleted) {//半屏webview如果在加载完成回调后标题还会改变,在此处重新设置一遍 + self.urlLoadCompleted(YES, nil); + } + }else{ + [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; + } + } else { + [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; + } +} + +- (void)dealloc { + [self.webview removeObserver:self forKeyPath:@"estimatedProgress"]; + [self.webview removeObserver:self forKeyPath:@"title"]; +} + +- (WKWebView *)webview { + if (_webview == nil) { + WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc]init]; + + if (@available(iOS 10.0, *)) { + configuration.mediaTypesRequiringUserActionForPlayback = NO; + } else { + // Fallback on earlier versions + } + configuration.allowsInlineMediaPlayback = YES; + + NSString *uid = [[AccountInfoStorage instance] getUid]; + NSString *realCookie = [NSString stringWithFormat:@"%@=%@",@"uid",uid]; + + WKUserScript *cookieScript = [[WKUserScript alloc] initWithSource: [NSString stringWithFormat:@"document.cookie = '%@';", realCookie] injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:NO]; + [self.userContentController addUserScript:cookieScript]; + ///禁止缩放 + NSString *scaleJs = @"$('meta[name=description]').remove(); $('head').append( '' );"; + WKUserScript *scaleScript = [[WKUserScript alloc] initWithSource:scaleJs injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:NO]; + [self.userContentController addUserScript:scaleScript]; + + //根据生成的WKUserScript对象,初始化WKWebViewConfiguration + configuration.preferences.javaScriptEnabled = YES; + configuration.preferences.javaScriptCanOpenWindowsAutomatically = YES; + configuration.preferences.minimumFontSize = 10; + configuration.selectionGranularity = WKSelectionGranularityCharacter; + configuration.userContentController = self.userContentController; + + CGSize size = [UIScreen mainScreen].bounds.size; + _webview = [[WKWebView alloc]initWithFrame:CGRectMake(0, 0, size.width,size.height) configuration:configuration]; + + _webview.navigationDelegate = self; + //添加KVO,WKWebView有一个属性estimatedProgress,就是当前网页加载的进度,所以监听这个属性 + [_webview addObserver:self forKeyPath:@"estimatedProgress" options:NSKeyValueObservingOptionNew context:nil]; + //添加KVO,监听title属性 + [_webview addObserver:self forKeyPath:@"title" options:NSKeyValueObservingOptionNew context:NULL]; + + UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(backButtonClick)]; + [_webview addGestureRecognizer:swipeGesture]; + + [_webview.scrollView setShowsVerticalScrollIndicator:NO]; + [_webview.scrollView setShowsHorizontalScrollIndicator:NO]; + + //set useragent + __weak typeof(self) weakSelf = self; + [_webview evaluateJavaScript:@"navigator.userAgent" completionHandler:^(id result, NSError *error) { + NSString *userAgent = result; + + if (![userAgent containsString:@"pekoAppIos erbanAppIos"]){ + NSString *newUserAgent = [userAgent stringByAppendingString:@" pekoAppIos erbanAppIos"]; + NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:newUserAgent, @"UserAgent", nil]; + [[NSUserDefaults standardUserDefaults] registerDefaults:dictionary]; + [[NSUserDefaults standardUserDefaults] synchronize]; + [weakSelf.webview setCustomUserAgent:newUserAgent]; + } + + }]; + _webview.scrollView.bounces = NO; + } + return _webview; +} +- (UIProgressView *)progressView{ + if (!_progressView) { + _progressView = [[UIProgressView alloc] initWithFrame:CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, 1)]; + _progressView.progressTintColor = [DJDKMIMOMColor appMainColor]; + _progressView.trackTintColor = [UIColor clearColor]; + _progressView.transform = CGAffineTransformMakeScale(1.0f, 1.0f); + } + return _progressView; +} + +- (WKUserContentController *)userContentController{ + if (!_userContentController) { + //自定义的WKScriptMessageHandler 是为了解决内存不释放的问题 + WeakWebViewScriptMessageDelegate *weakScriptMessageDelegate = [[WeakWebViewScriptMessageDelegate alloc] initWithDelegate:self]; + _userContentController = [[WKUserContentController alloc] init]; + // 分享面板 + [_userContentController addScriptMessageHandler:weakScriptMessageDelegate name:kJSOpenSharePage]; + // 钱包页面 + [_userContentController addScriptMessageHandler:weakScriptMessageDelegate name:kJSOpenPurse]; + // 充值页面 + [_userContentController addScriptMessageHandler:weakScriptMessageDelegate name:kJSOpenChargePage]; + [_userContentController addScriptMessageHandler:weakScriptMessageDelegate name:kJSChargePayPage]; + [_userContentController addScriptMessageHandler:weakScriptMessageDelegate name:kJSChargePayClickPage]; + // 获取uid + [_userContentController addScriptMessageHandler:weakScriptMessageDelegate name:kJSGetUid]; + // 获取设备id + [_userContentController addScriptMessageHandler:weakScriptMessageDelegate name:kJSGetDeviceId]; + // 获取Ticket + [_userContentController addScriptMessageHandler:weakScriptMessageDelegate name:kJSGetTicket]; + // 获取设备info + [_userContentController addScriptMessageHandler:weakScriptMessageDelegate name:kJSGetDeviceInfo]; + // 实人认证: 打开原生人脸认证 + [_userContentController addScriptMessageHandler:weakScriptMessageDelegate name:kJSOpenFaceLiveness]; + // 分享按钮 + [_userContentController addScriptMessageHandler:weakScriptMessageDelegate name:kJSInitNav]; + // 获取房间uid + [_userContentController addScriptMessageHandler:weakScriptMessageDelegate name:kJSGetRoomUid]; + // 进入个人主页 + [_userContentController addScriptMessageHandler:weakScriptMessageDelegate name:kOpenPersonPage]; + // 隐藏导航栏 + [_userContentController addScriptMessageHandler:weakScriptMessageDelegate name:kInitShowNav]; + // 隐藏导航栏 + [_userContentController addScriptMessageHandler:weakScriptMessageDelegate name:kCloseWebView]; + //装扮及其他活动页面 + [_userContentController addScriptMessageHandler:weakScriptMessageDelegate name:kJumpAppointPage]; + //进入房间 + [_userContentController addScriptMessageHandler:weakScriptMessageDelegate name:kJSOpenRoom]; + //进房并弹出礼物面板 + [_userContentController addScriptMessageHandler:weakScriptMessageDelegate name:kJSOpenRoomForGiftId]; + } + return _userContentController; + +} +-(XPWebViewNavView *)navView{ + if (!_navView){ + _navView = [[XPWebViewNavView alloc]initWithFrame:CGRectZero]; + _navView.delegate = self; + } + return _navView; +} + +@end diff --git a/YuMi/Modules/YMWeb/XPWebViewNavView.h b/YuMi/Modules/YMWeb/XPWebViewNavView.h new file mode 100644 index 00000000..f5af434e --- /dev/null +++ b/YuMi/Modules/YMWeb/XPWebViewNavView.h @@ -0,0 +1,21 @@ +// +// XPWebViewNavView.h +// YuMi +// +// Created by YuMi on 2023/2/27. +// + +#import +@class XPWebViewNavView; +NS_ASSUME_NONNULL_BEGIN +@protocol XPWebViewNavViewDelegate +//点击了返回 +- (void)xPWebViewNavView:(XPWebViewNavView *)view didClickBack:(UIButton *)sender; + +@end +@interface XPWebViewNavView : UIView +/// +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMWeb/XPWebViewNavView.m b/YuMi/Modules/YMWeb/XPWebViewNavView.m new file mode 100644 index 00000000..e6417b73 --- /dev/null +++ b/YuMi/Modules/YMWeb/XPWebViewNavView.m @@ -0,0 +1,79 @@ +// +// XPWebViewNavView.m +// YuMi +// +// Created by YuMi on 2023/2/27. +// + +#import "XPWebViewNavView.h" +///Third +#import +#import "UIButton+EnlargeTouchArea.h" +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +@interface XPWebViewNavView() +///返回 +@property (nonatomic,strong) UIButton *backButton; +///标题 +@property (nonatomic,strong) UILabel *titleView; +@end +@implementation XPWebViewNavView + +-(instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if(self){ + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backButton]; + [self addSubview:self.titleView]; + +} +- (void)initSubViewConstraints { + [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(kGetScaleWidth(28)); + make.left.mas_equalTo(0); + make.bottom.mas_equalTo(-kGetScaleWidth(8)); + }]; + [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.equalTo(self.backButton); + make.centerX.equalTo(self); + }]; + +} +-(void)backButtonAction{ + if(self.delegate && [self.delegate respondsToSelector:@selector(xPWebViewNavView:didClickBack:)]){ + [self.delegate xPWebViewNavView:self didClickBack:self.backButton]; + } +} + +#pragma mark -懒加载 +- (UIButton *)backButton { + if (!_backButton) { + _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateNormal]; + [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateSelected]; + [_backButton addTarget:self action:@selector(backButtonAction) forControlEvents:UIControlEventTouchUpInside]; + [_backButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + } + return _backButton; +} + + +- (UILabel *)titleView { + if (!_titleView) { + _titleView = [[UILabel alloc] init]; + _titleView.font = [UIFont systemFontOfSize:17 weight:UIFontWeightSemibold]; + _titleView.textColor = UIColorFromRGB(0x1F1B4F); + _titleView.text = YMLocalizedString(@"XPWebViewNavView0"); + } + return _titleView; +} + + +@end diff --git a/YuMi/Modules/YMWeb/YUMITissueRegardGovernancer.h b/YuMi/Modules/YMWeb/YUMITissueRegardGovernancer.h deleted file mode 100644 index f8e6bb41..00000000 --- a/YuMi/Modules/YMWeb/YUMITissueRegardGovernancer.h +++ /dev/null @@ -1,38 +0,0 @@ -// -// YUMITissueRegardGovernancer.h -// YuMi -// -// Created by zu on 2021/9/16. -// - -#import "BaseRegardGovernancer.h" -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol FBCWebRegardGovernancerRepresendtation - --(void)payShankr; - -@end - - -@interface YUMITissueRegardGovernancer : BaseRegardGovernancer -@property (nonatomic,weak) id delegate; -@property (strong, nonatomic,readonly) WKWebView *webview; -@property (nonatomic,assign) BOOL isPush; -@property (nonatomic,copy) NSString *roomUid; -@property (nonatomic,assign) BOOL isFairyPay; - - -@property (nonatomic,assign) BOOL isMaintainerty; -@property (copy, nonatomic) NSString *url; - -@property (nonatomic, copy) void (^urlLoadCompleted)(BOOL result, NSError * _Nullable error); -@property (nonatomic,copy) void (^InitShowNavBlock)(BOOL show); -@property (nonatomic,copy) void (^CloseWebViewBlock)(BOOL result); -- (instancetype)initAboutIndividualityizeNev:(BOOL)isCustom; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMWeb/YUMITissueRegardGovernancer.m b/YuMi/Modules/YMWeb/YUMITissueRegardGovernancer.m deleted file mode 100644 index 809257be..00000000 --- a/YuMi/Modules/YMWeb/YUMITissueRegardGovernancer.m +++ /dev/null @@ -1,708 +0,0 @@ -// -// YUMITissueRegardGovernancer.m -// YuMi -// -// Created by zu on 2021/9/16. -// - -#import "YUMITissueRegardGovernancer.h" -#import "AccountAbstractStorage.h" -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "YYUtility.h" -#import "HttpRequestFacilitater.h" -#import "YUMIParaticipationRegard.h" -#import "MKJPopup.h" -#import -#import -#import "XCCurrentVCStackExecutive.h" -#import "YUMIManeConsumerAbstractRegardGovernancer.h" -#import "YUMIManeReindictRegardGovernancer.h" -#import "YUMIManePretendUpwardsRegardGovernancer.h" -#import "YUMIPretendUpwardsProcurementRegardGovernancer.h" -#import "YUMIChamberRegardGovernancer.h" -#import "ChamberHostRepresendtation.h" -#import "RamparatetAbstractMatrix.h" -#import "Api+Mine.h" -#import "YUMICommunicationSolitaireDisporterExecutive.h" -#import "YUMITissueRegardNevRegard.h" -#import "YUMIIAPReindictRegardGovernancer.h" - -typedef NS_ENUM(NSUInteger, RightNavigationPushGenre){ - - RightNavigationPushGenre_Web = 1, - - RightNavigationPushGenre_Share = 2, - - RightNavigationPushGenre_AppPage = 3, - - RightNavigationPushGenre_SharePicture = 5 -}; - -@interface WeakTissueRegardScriptCommunicationDelegate : NSObject - -@property (nonatomic, weak) id scriptRepresedtation; - -- (instancetype)initWithDelegate:(id)scriptRepresedtation; - -@end -@implementation WeakTissueRegardScriptCommunicationDelegate - -- (instancetype)initWithDelegate:(id)scriptRepresedtation { - self = [super init]; - if (self) { - _scriptRepresedtation = scriptRepresedtation; - } - return self; -} - -- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message { - - if ([self.scriptRepresedtation respondsToSelector:@selector(userContentController:didReceiveScriptMessage:)]) { - [self.scriptRepresedtation userContentController:userContentController didReceiveScriptMessage:message]; - } -} - -@end - -@interface YUMITissueRegardGovernancer () -@property (nonatomic,strong) RamparatetAbstractMatrix *model ; -@property (strong, nonatomic) WKWebView *webview; -@property (strong, nonatomic) UIProgressView *progressView; -@property (nonatomic, strong) WKUserContentController *consumerSatisfperformanceGovernancer; -@property (nonatomic,copy) NSDictionary *sharePackbask; -@property (nonatomic,strong) YUMITissueRegardNevRegard *nevRegard; -@property (nonatomic,assign) BOOL isCustom; -@end - -NSString * const kJSOpenPurse = @"openPurse"; -NSString * const kJSOpenChargePage = @"openChargePage"; -NSString * const kJSChargePayPage = @"chargePayPage"; -NSString * const kJSChargePayClickPage = @"chargePayClickPage"; -NSString * const kJSOpenSharePage = @"openSharePage"; -NSString * const kJSGetUid = @"getUid"; -NSString * const kJSGetDeviceId = @"getDeviceId"; -NSString * const kJSGetTicket = @"getTicket"; -NSString * const kJSGetDeviceInfo = @"getDeviceInfo"; -NSString * const kJSOpenFaceLiveness = @"openFaceLiveness"; -NSString * const kJSInitNav = @"initNav"; -NSString * const kJSGetRoomUid = @"getRoomUid"; -NSString * const kOpenPersonPage = @"openPersonPage"; -NSString * const kInitShowNav = @"initShowNav"; -NSString * const kCloseWebView = @"closeWebView"; -NSString * const kJumpAppointPage = @"jumpAppointPage"; -NSString * const kJSOpenRoom = @"openRoom"; -NSString * const kJSOpenRoomForGiftId = @"openRoomForGiftId"; - -@implementation YUMITissueRegardGovernancer - -- (instancetype)initAboutIndividualityizeNev:(BOOL)isCustom -{ - self = [super init]; - if (self) { - self.isCustom = isCustom; - - } - return self; -} - --(void)viewWillAppear:(BOOL)animated{ - [super viewWillAppear:animated]; - - if([YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance].isInRoom == YES && self.isMaintainerty == NO && [YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance].isInChamberThresholdReindict == NO){ - [YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance].isInChamberThresholdReindict = YES; - } - -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initRegard]; - -} - -- (void)initRegard { - if (self.navigationController.viewControllers.count > 1){ - UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"yumi_same_title_back"] style:UIBarButtonItemStylePlain target:self action:@selector(backButtonClick)]; - - leftBarButtonItem.tintColor = [DJDKMIMOMColor mainEssayPrettify]; - - self.navigationItem.leftBarButtonItem = leftBarButtonItem; - } - if (@available(iOS 11.0, *)) { - self.webview.scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - }else{ - self.automaticallyAdjustsScrollViewInsets = NO; - } - if(self.isCustom == YES){ - [self.view addSubview:self.nevRegard]; - - [self.view addSubview:self.webview]; - [self.view addSubview:self.progressView]; - [self.nevRegard mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.equalTo(self.view); - make.height.mas_equalTo(kNavigationHeight); - }]; - [self.webview mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.equalTo(self.view); - make.top.equalTo(self.nevRegard.mas_bottom); - }]; - [self.progressView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.equalTo(self.view); - make.height.mas_equalTo(1); - make.top.equalTo(self.nevRegard.mas_bottom); - }]; - }else{ - [self.view addSubview:self.webview]; - [self.view addSubview:self.progressView]; - [self.webview mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.bottom.mas_equalTo(self.view); - }]; - } - - - - - NSString * uid = [AccountAbstractStorage instance].acquireCid; - NSString * ticket = [AccountAbstractStorage instance].acquireTicket; - [Api acquireConsumerPocketbookAbstract:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if(code == 200){ - RamparatetAbstractMatrix * model = [RamparatetAbstractMatrix mtowardsrixAboutImpactbasket:data.data]; - self.model = model; - } - - } uid:uid ticket:ticket]; -} -- (void)yUMITissueRegardNevRegard:(YUMITissueRegardNevRegard *)view didClickBack:(UIButton *)sender{ - if(self.isFairyPay){ - if(self.CloseWebViewBlock){ - self.CloseWebViewBlock(YES); - } - return; - } - [self dismissViewControllerAnimated:YES completion:nil]; -} -- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation { - - self.progressView.hidden = YES; - if (self.urlLoadCompleted) { - self.urlLoadCompleted(YES, nil); - } -} - -- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error { - - self.progressView.hidden = YES; - if (self.urlLoadCompleted) { - self.urlLoadCompleted(NO, error); - } -} - -- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler { - NSURL *URL = navigationAction.request.URL; - NSString *scheme = [URL scheme]; - NSURLRequest *request = navigationAction.request; - - if (![scheme isEqualToString:@"https"] && ![scheme isEqualToString:@"http"]) { - BOOL canUnfoild = [[UIApplication sharedApplication] canOpenURL:request.URL]; - if (canUnfoild) { - [[UIApplication sharedApplication] openURL:request.URL]; - } - decisionHandler(WKNavigationActionPolicyCancel); - return; - } - decisionHandler(WKNavigationActionPolicyAllow); -} -- (void)webView:(WKWebView *)webView didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler{ - if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) { - dispatch_async(dispatch_get_main_queue(), ^{ - NSURLCredential *card = [[NSURLCredential alloc]initWithTrust:challenge.protectionSpace.serverTrust]; - completionHandler(NSURLSessionAuthChallengeUseCredential,card); - }); - - - } -} -- (void)consumerSatisfperformanceGovernancer:(WKUserContentController *)consumerSatisfperformanceGovernancer didReceiveScriptMessage:(WKScriptMessage *)message { - [self.webview evaluateJavaScript:@"document.location.href" completionHandler:^(id _Nullable response, NSError * _Nullable error) { - NSLog(@"%@", response); - NSString *currentUrl = [NSString stringWithFormat:@"%@", response]; - -#ifdef DEBUG - if (currentUrl != nil) { -#else - if (currentUrl != nil && [currentUrl containsString:API_HOST_URL]) { -#endif - if ([message.name isEqualToString:kJSOpenSharePage]) { - if (message.body && message.body != [NSNull null]) { - NSDictionary *body; - - if ([message.body isKindOfClass:[NSDictionary class]]) { - body = message.body; - } else if ([message.body isKindOfClass:[NSString class]]) { - body = [message.body toJSONGroal]; - } - self.sharePackbask = body[@"data"]; - [self EvidencePartowardsiciptowardsionFasciaboard]; - } - } else if ([message.name isEqualToString:kJSGetUid]) { - NSString *uid = [[AccountAbstractStorage instance] acquireCid]; - NSString *js = [NSString stringWithFormat:@"getMessage(\"uid\",%@)", uid]; - [self.webview evaluateJavaScript:js completionHandler:^(id _Nullable other, NSError * _Nullable error) { - NSLog(@"%@",error); - }]; - } else if ([message.name isEqualToString:kJSGetTicket]) { - NSString *ticket = [[AccountAbstractStorage instance] acquireTicket]; - NSString *js = [NSString stringWithFormat:@"getMessage(\"ticket\",\"%@\")",ticket]; - [self.webview evaluateJavaScript:js completionHandler:^(id _Nullable other, NSError * _Nullable error) { - NSLog(@"%@",error); - }]; - } else if ([message.name isEqualToString:kJSGetDeviceId]) { - NSString *js = [NSString stringWithFormat:@"getMessage(\"deviceId\",\"%@\")",[YYUtility instentiretytowardsionUniqueIdentifictowardsion]]; - [self.webview evaluateJavaScript:js completionHandler:^(id _Nullable other, NSError * _Nullable error) { - NSLog(@"%@",error); - }]; - } else if ([message.name isEqualToString:kJSGetDeviceInfo]) { - NSDictionary *basicParmars = [HttpRequestFacilitater prohibitipositionBaseParmars:[[NSDictionary alloc] init]]; - NSString *json = [basicParmars mj_JSONString]; - NSString *js = [NSString stringWithFormat:@"getMessage(\"deviceInfo\",%@)", json]; - [self.webview evaluateJavaScript:js completionHandler:^(id _Nullable ohter, NSError * _Nullable error) { - NSLog(@"%@", error); - }]; - } else if ([message.name isEqualToString:kJSOpenPurse]) { - - }else if([message.name isEqualToString:kJSChargePayPage]){ - NSString *money = [NSString stringWithFormat:@"%@",message.body] ; - - }else if([message.name isEqualToString:kJSChargePayClickPage]){ - if(message.body != nil && self.model.diamonds != nil){ - NSString *type = [NSString stringWithFormat:@"%@",message.body]; - } - }else if ([message.name isEqualToString:kJSOpenChargePage]) { - if(self.delegate && [self.delegate respondsToSelector:@selector(payShankr)]){ - [self.delegate payShankr]; - return; - } - - - - [MKJPopup dismiss]; - if(self.isPush){ - YUMIIAPReindictRegardGovernancer * webVewC =[[YUMIIAPReindictRegardGovernancer alloc] init]; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:webVewC animated:YES]; - return; - } - UIViewController *controller = [XCCurrentVCStackExecutive shareManager].getCurrentVC; - if (controller.presentingViewController) { - [controller dismissViewControllerAnimated:NO completion:nil]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - - YUMIIAPReindictRegardGovernancer * webVewC =[[YUMIIAPReindictRegardGovernancer alloc] init]; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:webVewC animated:YES]; - }); - }else { - YUMIIAPReindictRegardGovernancer * webVewC =[[YUMIIAPReindictRegardGovernancer alloc] init]; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:webVewC animated:YES]; - } - } else if ([message.name isEqualToString:kOpenPersonPage]) { - NSString *uid = [NSString stringWithFormat:@"%@",message.body]; - if (uid.integerValue > 0) { - [MKJPopup dismiss]; - YUMIManeConsumerAbstractRegardGovernancer * userInfoVC = [[YUMIManeConsumerAbstractRegardGovernancer alloc] init]; - userInfoVC.uid = uid.integerValue; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:userInfoVC animated:YES]; - } - } else if([message.name isEqualToString:kJSInitNav]) { - [self initNev:message.body]; - } else if([message.name isEqualToString:kJSGetRoomUid]) { - NSString *js = [NSString stringWithFormat:@"getMessage(\"roomUid\",\"%@\")",self.roomUid]; - [self.webview evaluateJavaScript:js completionHandler:^(id _Nullable other, NSError * _Nullable error) { - NSLog(@"%@",error); - }]; - } else if([message.name isEqualToString:kInitShowNav]) { - if (((NSNumber *)message.body).intValue == 0) { - if (self.InitShowNavBlock) { - self.InitShowNavBlock(YES); - return; - } - if (self.navigationController) { - [self.navigationController setNavigationBarHidden:YES]; - } - } - } else if([message.name isEqualToString:kCloseWebView]) { - if (self.CloseWebViewBlock) { - self.CloseWebViewBlock(YES); - return; - } - if (self.navigationController) { - [self.navigationController popViewControllerAnimated:YES]; - } - } else if ([message.name isEqualToString:kJumpAppointPage]) { - - NSDictionary *bodyDict; - if ([message.body isKindOfClass:[NSDictionary class]]) { - bodyDict = message.body; - } else if ([message.body isKindOfClass:[NSString class]]) { - NSString *str = (NSString *)message.body; - bodyDict = [str toJSONGroal]; - } - NSInteger skyType = [bodyDict[@"routerType"] integerValue]; - [self shankRouterGenre:skyType message:message]; - } else if ([message.name isEqualToString:kJSOpenRoom]) { - NSString *uid = [NSString stringWithFormat:@"%@",message.body]; - if (uid.length > 0) { - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj isKindOfClass:[YUMIChamberRegardGovernancer class]]) { - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController popToRootViewControllerAnimated:NO]; - YUMIChamberRegardGovernancer * rooomVC = obj; - [rooomVC exitRoom]; - *stop = YES; - } - }]; - if(self.view.superview){ - [MKJPopup dismiss]; - } - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [YUMIChamberRegardGovernancer unfoildChamber:uid viewController:[XCCurrentVCStackExecutive shareManager].getCurrentVC]; - }); - } - } else if([message.name isEqualToString:kJSOpenRoomForGiftId]) { - NSLog(@"%@", message.body); - NSDictionary *bodyDict; - if ([message.body isKindOfClass:[NSDictionary class]]) { - bodyDict = message.body; - } else if ([message.body isKindOfClass:[NSString class]]) { - NSString *str = (NSString *)message.body; - bodyDict = [str toJSONGroal]; - } - - NSString *uid = [NSString stringWithFormat:@"%@", bodyDict[@"uid"]]; - NSString *giftId = [NSString stringWithFormat:@"%@", bodyDict[@"giftId"]]; - if (uid.length) { - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj isKindOfClass:[YUMIChamberRegardGovernancer class]]) { - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController popToRootViewControllerAnimated:NO]; - YUMIChamberRegardGovernancer * rooomVC = obj; - [rooomVC exitRoom]; - *stop = YES; - } - }]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [YUMIChamberRegardGovernancer unfoildChamber:uid giftId:giftId viewController:[XCCurrentVCStackExecutive shareManager].getCurrentVC]; - }); - } - - } - } - }]; - } - -#pragma mark - private method -- (void)shankRouterGenre:(NSInteger)skyType message:(WKScriptMessage *)message { - NSDictionary *bodyDict = (NSDictionary *)message.body; - switch (skyType) { - case 1: - { - - NSString *uid = [NSString stringWithFormat:@"%@", bodyDict[@"routerVal"]]; - if (uid.length) { - [YUMIChamberRegardGovernancer unfoildChamber:uid viewController:[XCCurrentVCStackExecutive shareManager].getCurrentVC]; - } - } - break; - case 7: - { - - YUMIManePretendUpwardsRegardGovernancer *vc = [[YUMIManePretendUpwardsRegardGovernancer alloc] init]; - vc.currentIndex = 1; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:vc animated:YES]; - } - break; - case 8: - { - - YUMIManePretendUpwardsRegardGovernancer *vc = [[YUMIManePretendUpwardsRegardGovernancer alloc] init]; - vc.currentIndex = 0; - [[XCCurrentVCStackExecutive shareManager].getCurrentVC.navigationController pushViewController:vc animated:YES]; - } - break; - default: - break; - } -} -- (void)setUrl:(NSString *)urlString{ - _url = urlString; - if (_url == nil) { - return; - } - if (![_url hasPrefix:@"http"] && ![_url hasPrefix:@"https"]){ - _url = [NSString stringWithFormat:@"%@/%@", API_HOST_URL, _url]; - } - - if (![_url containsString:@"?"]) { - _url = [NSString stringWithFormat:@"%@", _url]; - } else { - _url = [NSString stringWithFormat:@"%@", _url]; - } - - - NSString *noSpaceTextUrl = [_url stringByReplacingOccurrencesOfString:@" " withString:@""]; - - NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:noSpaceTextUrl]]; - [self.webview loadRequest:request]; -} -- (void)backButtonClick { - BOOL canGoBack = YES; - if (self.webview.backForwardList.backList.count <= 1) { - canGoBack = NO; - } - - if ([self.webview canGoBack]) { - [self.webview goBack]; - } else { - [self.navigationController popViewControllerAnimated:YES]; - [self.consumerSatisfperformanceGovernancer removeAllUserScripts]; - } -} -#pragma mark - 分享 -- (void)initNev:(NSDictionary *)response{ - if(!response || ![response isKindOfClass:[NSDictionary class]])return; - self.sharePackbask = response[@"data"]; - if ([response[@"type"] intValue]== RightNavigationPushGenre_Web) { - [self accelertowardseBreeadcrumbProvisionAboutChampions:@[response[@"data"][@"title"]] titleColor:[DJDKMIMOMColor precautiousChampionPrettify] isContrary:NO target:self action:@selector(passtoTissueRegard) tags:nil]; - }else if ([response[@"type"] intValue]== RightNavigationPushGenre_Share || [response[@"type"] intValue]== RightNavigationPushGenre_SharePicture){ - [self accelertowardseBreeadcrumbProvisionAboutIndictowardseSaluttowardsion:@[@"family_person_share"] isContrary:NO - target:self action:@selector(EvidencePartowardsiciptowardsionFasciaboard) tags:nil]; - } -} - -- (void)passtoTissueRegard { - if (self.sharePackbask[@"link"]) { - YUMITissueRegardGovernancer * webVewC = [[YUMITissueRegardGovernancer alloc] init]; - webVewC.url = self.sharePackbask[@"link"]; - [self.navigationController pushViewController:webVewC animated:YES]; - } -} - -- (void)EvidencePartowardsiciptowardsionFasciaboard { - if (self.sharePackbask.allKeys.count <= 0) { - return; - } - NSDictionary * dic = self.sharePackbask; - YUMIParaticipationAbstractMatrix * shareInfo = [[YUMIParaticipationAbstractMatrix alloc] init]; - shareInfo.shareTitle = self.sharePackbask[@"title"]; - shareInfo.shareContent = dic[@"desc"]; - shareInfo.shareImageUrl = dic[@"imgUrl"]; - shareInfo.type = ShareGenre_H5; - shareInfo.uid = [AccountAbstractStorage instance].acquireCid; - NSString *urlStr = ((NSString *)dic[@"url"]).length > 0 ? dic[@"url"] : dic[@"showUrl"]; - if (urlStr.length) { - if ([urlStr containsString:@"?"]) { - urlStr = [NSString stringWithFormat:@"%@&shareUid=%@",urlStr,[AccountAbstractStorage instance].acquireCid]; - } else { - urlStr = [NSString stringWithFormat:@"%@?shareUid=%@",urlStr,[AccountAbstractStorage instance].acquireCid]; - } - } - shareInfo.shareUrl = urlStr; - YUMIParaticipationProvision *cycle = [YUMIParaticipationProvision itemWitCouple:XPShareItemTagFaceBook title:@"FaceBook" imageName:@"share_fb" disableImageName:@"share_fb"]; - YUMIParaticipationProvision *wechat = [YUMIParaticipationProvision itemWitCouple:XPShareItemTagLine title:@"Line" imageName:@"share_line" disableImageName:@"share_line"]; - YUMIParaticipationProvision *qq = [YUMIParaticipationProvision itemWitCouple:XPShareItemTagCopyLink title:YMLocalizedString(@"Room_Header_View_3") imageName:@"share_copy_link" disableImageName:@"share_copy_link"]; - NSArray * items = @[wechat,cycle, qq]; - CGFloat margin = 15; - CGSize itemSize = CGSizeMake((KScreenWidth-2*margin)/4, 65); - YUMIParaticipationRegard *partowardsiciptowardsionRegard = [[YUMIParaticipationRegard alloc] initWithItems:items itemSize:itemSize shareInfo:shareInfo]; - partowardsiciptowardsionRegard.delegate = self; - - [MKJPopup popupRegard:partowardsiciptowardsionRegard style:MKJPopupStyleActionSheet]; - -} - -#pragma mark - XCShareRegardRepresendtation -- (void)partowardsiciptowardsionRegardDidTicktackCancle:(YUMIParaticipationRegard *)partowardsiciptowardsionRegard { - [MKJPopup dismiss]; -} -- (void)partowardsiciptowardsionRegard:(YUMIParaticipationRegard *)partowardsiciptowardsionRegard didSuccess:(YUMIParaticipationAbstractMatrix *)shareInfo { - [MKJPopup dismiss]; - NSMutableDictionary *params = [NSMutableDictionary dictionary]; - NSString *uid = [AccountAbstractStorage instance].acquireCid; - NSString *ticket = [AccountAbstractStorage instance].acquireTicket; - [params setObject:uid forKey:@"uid"]; - [params setObject:@(shareInfo.shareType) forKey:@"shareType"]; - [params setObject:ticket forKey:@"ticket"]; - [params setObject:@(shareInfo.type) forKey:@"sharePageId"]; - if (shareInfo.shareUrl.length > 0) { - [params setObject:shareInfo.shareUrl forKey:@"shareUrl"]; - } - if (shareInfo.roomUid > 0) { - [params setObject:@(shareInfo.roomUid) forKey:@"targetUid"]; - } - - [HttpRequestFacilitater POST:@"usershare/save" params:params success:^(BaseMatrix * _Nonnull data) { - - } failure:^(NSInteger resCode, NSString * _Nonnull message) { - - }]; -} - -- (void)partowardsiciptowardsionRegard:(YUMIParaticipationRegard *)partowardsiciptowardsionRegard shareFail:(NSString *)message { - [MKJPopup dismiss]; - [self EvidenceMistakeToast:message]; -} - -- (void)partowardsiciptowardsionRegardDidTicktackRevoctowardsion:(YUMIParaticipationRegard *)partowardsiciptowardsionRegard { - [MKJPopup dismiss]; -} - -- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { - if ([keyPath isEqualToString:@"estimatedProgress"]) { - self.progressView.progress = self.webview.estimatedProgress; - if (self.progressView.progress == 1) { - __weak typeof (self)weakSelf = self; - [UIView animateWithDuration:0.25f delay:0.3f options:UIViewAnimationOptionCurveEaseOut animations:^{ - weakSelf.progressView.transform = CGAffineTransformMakeScale(1.0f, 1.0f); - } completion:^(BOOL finished) { - weakSelf.progressView.hidden = YES; - }]; - } - } else if ([keyPath isEqualToString:@"title"]) { - if (object == self.webview) { - self.navigationItem.title = self.webview.title; - if (self.urlLoadCompleted) { - self.urlLoadCompleted(YES, nil); - } - }else{ - [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; - } - } else { - [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; - } -} - -- (void)dealloc { - [self.webview removeObserver:self forKeyPath:@"estimatedProgress"]; - [self.webview removeObserver:self forKeyPath:@"title"]; -} - -- (WKWebView *)webview { - if (_webview == nil) { - WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc]init]; - - if (@available(iOS 10.0, *)) { - configuration.mediaTypesRequiringUserActionForPlayback = NO; - } else { - - } - configuration.allowsInlineMediaPlayback = YES; - - NSString *uid = [[AccountAbstractStorage instance] acquireCid]; - NSString *realCookie = [NSString stringWithFormat:@"%@=%@",@"uid",uid]; - - WKUserScript *cookieScript = [[WKUserScript alloc] initWithSource: [NSString stringWithFormat:@"document.cookie = '%@';", realCookie] injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:NO]; - [self.consumerSatisfperformanceGovernancer addUserScript:cookieScript]; - - NSString *scaleJs = @"$('meta[name=description]').remove(); $('head').append( '' );"; - WKUserScript *scaleScript = [[WKUserScript alloc] initWithSource:scaleJs injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:NO]; - [self.consumerSatisfperformanceGovernancer addUserScript:scaleScript]; - - - configuration.preferences.javaScriptEnabled = YES; - configuration.preferences.javaScriptCanOpenWindowsAutomatically = YES; - configuration.preferences.minimumFontSize = 10; - configuration.selectionGranularity = WKSelectionGranularityCharacter; - configuration.userContentController = self.consumerSatisfperformanceGovernancer; - - CGSize size = [UIScreen mainScreen].bounds.size; - _webview = [[WKWebView alloc]initWithFrame:CGRectMake(0, 0, size.width,size.height) configuration:configuration]; - - _webview.navigationDelegate = self; - - [_webview addObserver:self forKeyPath:@"estimatedProgress" options:NSKeyValueObservingOptionNew context:nil]; - - [_webview addObserver:self forKeyPath:@"title" options:NSKeyValueObservingOptionNew context:NULL]; - - UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(backButtonClick)]; - [_webview addGestureRecognizer:swipeGesture]; - - [_webview.scrollView setShowsVerticalScrollIndicator:NO]; - [_webview.scrollView setShowsHorizontalScrollIndicator:NO]; - - - __weak typeof(self) weakSelf = self; - [_webview evaluateJavaScript:@"navigator.userAgent" completionHandler:^(id result, NSError *error) { - NSString *userAgent = result; - - if (![userAgent containsString:@"pekoAppIos erbanAppIos"]){ - NSString *newUserAgent = [userAgent stringByAppendingString:@" pekoAppIos erbanAppIos"]; - NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:newUserAgent, @"UserAgent", nil]; - [[NSUserDefaults standardUserDefaults] registerDefaults:dictionary]; - [[NSUserDefaults standardUserDefaults] synchronize]; - [weakSelf.webview setCustomUserAgent:newUserAgent]; - } - - }]; - _webview.scrollView.bounces = NO; - } - return _webview; -} -- (UIProgressView *)progressView{ - if (!_progressView) { - _progressView = [[UIProgressView alloc] initWithFrame:CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, 1)]; - _progressView.progressTintColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - _progressView.trackTintColor = [UIColor clearColor]; - _progressView.transform = CGAffineTransformMakeScale(1.0f, 1.0f); - } - return _progressView; -} - -- (WKUserContentController *)consumerSatisfperformanceGovernancer{ - if (!_consumerSatisfperformanceGovernancer) { - - WeakTissueRegardScriptCommunicationDelegate *weakScriptMessageDelegate = [[WeakTissueRegardScriptCommunicationDelegate alloc] initWithDelegate:self]; - _consumerSatisfperformanceGovernancer = [[WKUserContentController alloc] init]; - - [_consumerSatisfperformanceGovernancer addScriptMessageHandler:weakScriptMessageDelegate name:kJSOpenSharePage]; - - [_consumerSatisfperformanceGovernancer addScriptMessageHandler:weakScriptMessageDelegate name:kJSOpenPurse]; - - [_consumerSatisfperformanceGovernancer addScriptMessageHandler:weakScriptMessageDelegate name:kJSOpenChargePage]; - [_consumerSatisfperformanceGovernancer addScriptMessageHandler:weakScriptMessageDelegate name:kJSChargePayPage]; - [_consumerSatisfperformanceGovernancer addScriptMessageHandler:weakScriptMessageDelegate name:kJSChargePayClickPage]; - - [_consumerSatisfperformanceGovernancer addScriptMessageHandler:weakScriptMessageDelegate name:kJSGetUid]; - - [_consumerSatisfperformanceGovernancer addScriptMessageHandler:weakScriptMessageDelegate name:kJSGetDeviceId]; - - [_consumerSatisfperformanceGovernancer addScriptMessageHandler:weakScriptMessageDelegate name:kJSGetTicket]; - - [_consumerSatisfperformanceGovernancer addScriptMessageHandler:weakScriptMessageDelegate name:kJSGetDeviceInfo]; - - [_consumerSatisfperformanceGovernancer addScriptMessageHandler:weakScriptMessageDelegate name:kJSOpenFaceLiveness]; - - [_consumerSatisfperformanceGovernancer addScriptMessageHandler:weakScriptMessageDelegate name:kJSInitNav]; - - [_consumerSatisfperformanceGovernancer addScriptMessageHandler:weakScriptMessageDelegate name:kJSGetRoomUid]; - - [_consumerSatisfperformanceGovernancer addScriptMessageHandler:weakScriptMessageDelegate name:kOpenPersonPage]; - - [_consumerSatisfperformanceGovernancer addScriptMessageHandler:weakScriptMessageDelegate name:kInitShowNav]; - - [_consumerSatisfperformanceGovernancer addScriptMessageHandler:weakScriptMessageDelegate name:kCloseWebView]; - - [_consumerSatisfperformanceGovernancer addScriptMessageHandler:weakScriptMessageDelegate name:kJumpAppointPage]; - - [_consumerSatisfperformanceGovernancer addScriptMessageHandler:weakScriptMessageDelegate name:kJSOpenRoom]; - - [_consumerSatisfperformanceGovernancer addScriptMessageHandler:weakScriptMessageDelegate name:kJSOpenRoomForGiftId]; - } - return _consumerSatisfperformanceGovernancer; - -} --(YUMITissueRegardNevRegard *)nevRegard{ - if (!_nevRegard){ - _nevRegard = [[YUMITissueRegardNevRegard alloc]initWithFrame:CGRectZero]; - _nevRegard.delegate = self; - } - return _nevRegard; -} - -@end diff --git a/YuMi/Modules/YMWeb/YUMITissueRegardNevRegard.h b/YuMi/Modules/YMWeb/YUMITissueRegardNevRegard.h deleted file mode 100644 index a92ff248..00000000 --- a/YuMi/Modules/YMWeb/YUMITissueRegardNevRegard.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// YUMITissueRegardNevRegard.h -// YuMi -// -// Created by YuMi on 2023/2/27. -// - -#import -@class YUMITissueRegardNevRegard; -NS_ASSUME_NONNULL_BEGIN -@protocol FBCWebRegardNevRegardRepresendtation -- (void)yUMITissueRegardNevRegard:(YUMITissueRegardNevRegard *)view didClickBack:(UIButton *)sender; - -@end -@interface YUMITissueRegardNevRegard : UIView -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMWeb/YUMITissueRegardNevRegard.m b/YuMi/Modules/YMWeb/YUMITissueRegardNevRegard.m deleted file mode 100644 index 4db668d1..00000000 --- a/YuMi/Modules/YMWeb/YUMITissueRegardNevRegard.m +++ /dev/null @@ -1,76 +0,0 @@ -// -// YUMITissueRegardNevRegard.m -// YuMi -// -// Created by YuMi on 2023/2/27. -// - -#import "YUMITissueRegardNevRegard.h" -#import -#import "UIButton+EnlargeTouchArea.h" -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -@interface YUMITissueRegardNevRegard() -@property (nonatomic,strong) UIButton *backButton; -@property (nonatomic,strong) UILabel *titleView; -@end -@implementation YUMITissueRegardNevRegard - --(instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if(self){ - [self initSubViews]; - [self initChildLyRestrictions]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backButton]; - [self addSubview:self.titleView]; - -} -- (void)initChildLyRestrictions { - [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(kGetScaleWidth(28)); - make.left.mas_equalTo(0); - make.bottom.mas_equalTo(-kGetScaleWidth(8)); - }]; - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.equalTo(self.backButton); - make.centerX.equalTo(self); - }]; - -} --(void)encourageBtutonPerformance{ - if(self.delegate && [self.delegate respondsToSelector:@selector(yUMITissueRegardNevRegard:didClickBack:)]){ - [self.delegate yUMITissueRegardNevRegard:self didClickBack:self.backButton]; - } -} - -#pragma mark -懒加载 -- (UIButton *)backButton { - if (!_backButton) { - _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backButton setImage:[UIImage imageNamed:@"yumi_same_title_back"] forState:UIControlStateNormal]; - [_backButton setImage:[UIImage imageNamed:@"yumi_same_title_back"] forState:UIControlStateSelected]; - [_backButton addTarget:self action:@selector(encourageBtutonPerformance) forControlEvents:UIControlEventTouchUpInside]; - [_backButton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:10]; - } - return _backButton; -} - - -- (UILabel *)titleView { - if (!_titleView) { - _titleView = [[UILabel alloc] init]; - _titleView.font = [UIFont systemFontOfSize:17 weight:UIFontWeightSemibold]; - _titleView.textColor = UIColorFromRGB(0x1F1B4F); - _titleView.text = YMLocalizedString(@"YUMI_Web_View_Nav_View_0"); - } - return _titleView; -} - - -@end diff --git a/YuMi/Network/HttpRequestFacilitater.h b/YuMi/Network/HttpRequestFacilitater.h deleted file mode 100644 index 3d7f5983..00000000 --- a/YuMi/Network/HttpRequestFacilitater.h +++ /dev/null @@ -1,62 +0,0 @@ -// -// HttpRequestFacilitater.h -// YUMI -// -// Created by zu on 2021/9/3. -// - -#import -#import "BaseMatrix.h" - -typedef NS_ENUM(NSUInteger, HttpRequestHelperMethod) { - HttpRequestHelperMethodPOST, - HttpRequestHelperMethodGET, - HttpRequestHelperMethodDELETE -}; - -static dispatch_once_t onceToken; - -typedef void(^HttpRequestHelperCompletion)(BaseMatrix* _Nullable data, NSInteger code, NSString * _Nullable msg); - -NS_ASSUME_NONNULL_BEGIN - -@interface HttpRequestFacilitater : NSObject - -+ (NSDictionary*)prohibitipositionBaseParmars:(NSDictionary *)parmars; - -+ (void)GET:(NSString *)method -params:(NSDictionary *)params -success:(void (^)(BaseMatrix *data))success - failure:(void (^)(NSInteger resCode, NSString *message))failure; - -+ (void)POST:(NSString *)method - params:(NSDictionary *)params - success:(void (^)(BaseMatrix *data))success - failure:(void (^)(NSInteger resCode, NSString *message))failure; - -+ (void)DELETE:(NSString *)method - params:(NSDictionary *)params - success:(void (^)(BaseMatrix *data))success - failure:(void (^)(NSInteger resCode, NSString *message))failure; - -+ (void)request:(NSString *)url - method:(HttpRequestHelperMethod)method - params:(NSDictionary *)params - success:(void (^)(BaseMatrix *data))success - failure:(void (^)(NSInteger resCode, NSString *message))failure; - -+ (void)request:(NSString *)path - method:(HttpRequestHelperMethod)method - params:(NSDictionary *)params - completion:(HttpRequestHelperCompletion)completion; - - -+ (void)postCommunictowardsionSolitaire:(NSString *)path - params:(NSString *)params - completion:(HttpRequestHelperCompletion)completion; -+ (void)postSkillCard:(NSString *)path - params:(NSString *)params - completion:(HttpRequestHelperCompletion)completion; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Network/HttpRequestFacilitater.m b/YuMi/Network/HttpRequestFacilitater.m deleted file mode 100644 index 06fabe4e..00000000 --- a/YuMi/Network/HttpRequestFacilitater.m +++ /dev/null @@ -1,391 +0,0 @@ -// -// HttpRequestFacilitater.m -// YUMI -// -// Created by zu on 2021/9/3. -// - -#import "HttpRequestFacilitater.h" -#import "YYUtility.h" -#import "AccountAbstractStorage.h" -#import "YYReachability.h" -#import -#import "YUMIMacroUitls.h" -@implementation HttpRequestFacilitater - -+(AFHTTPSessionManager *)requisitionExecutive -{ - static AFHTTPSessionManager *manager = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - manager = [[AFHTTPSessionManager manager]initWithBaseURL:[NSURL URLWithString:API_HOST_URL]]; - manager.responseSerializer = [AFJSONResponseSerializer serializer]; - manager.requestSerializer.HTTPShouldHandleCookies = YES; - - manager.securityPolicy.allowInvalidCertificates = YES; - AFSecurityPolicy *securityPolicy= [AFSecurityPolicy defaultPolicy]; - manager.securityPolicy = securityPolicy; - - [manager.securityPolicy setValidatesDomainName:NO]; - manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",@"text/plain",@"image/jpeg",@"image/png", nil]; - manager.requestSerializer.timeoutInterval = 60; - }); - return manager; -} - -+ (NSURLSessionDataTask * _Nullable)extracted:(void (^ _Nonnull)(NSInteger, NSString *))failure manager:(AFHTTPSessionManager *)manager method:(NSString * _Nonnull)method params:(NSDictionary * _Nonnull)params success:(void (^ _Nonnull)(BaseMatrix *))success { - return [manager GET:method parameters:params headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { - BaseMatrix *baseModel = [BaseMatrix mtowardsrixAboutImpactbasket:responseObject]; -#ifdef DEBUG - NSLog(@"\n%@", [baseModel toJSONBWSttr]); -#endif - success(baseModel); - } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { - [self shankNetMistake:error method:method failure:failure]; - }]; -} - -+ (void)GET:(NSString *)method - params:(NSDictionary *)params - success:(void (^)(BaseMatrix *data))success - failure:(void (^)(NSInteger resCode, NSString *message))failure -{ - if ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == 0) { - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.01 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - failure(-1, @"请检查网络连接。"); - }); - return; - } - - [self prohibitipositionIntelligencers]; - params = [self prohibitipositionBaseParmars:params]; -#ifdef DEBUG - NSLog(@"\nmethod:\n%@\nparameter:\n%@", method, params); -#endif - - AFHTTPSessionManager *manager = [HttpRequestFacilitater requisitionExecutive]; - [self extracted:failure manager:manager method:method params:params success:success]; -} - -+ (void)POST:(NSString *)method - params:(NSDictionary *)params - success:(void (^)(BaseMatrix *data))success - failure:(void (^)(NSInteger resCode, NSString *message))failure -{ - if ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == 0) { - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.01 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - failure(-1, @"请检查网络连接。"); - - }); - return; - } - - [self prohibitipositionIntelligencers]; - params = [self prohibitipositionBaseParmars:params]; -#ifdef DEBUG - NSLog(@"\nmethod:\n%@\nparameter:\n%@", method, params); -#endif - - AFHTTPSessionManager *manager = [HttpRequestFacilitater requisitionExecutive]; - [manager POST:method parameters:params headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { - BaseMatrix *baseModel = [BaseMatrix mtowardsrixAboutImpactbasket:responseObject]; -#ifdef DEBUG - NSLog(@"\n%@", [baseModel toJSONBWSttr]); -#endif - success(baseModel); - } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { - [self shankNetMistake:error method:method failure:failure]; - }]; -} - -+ (void)DELETE:(NSString *)method - params:(NSDictionary *)params - success:(void (^)(BaseMatrix *data))success - failure:(void (^)(NSInteger resCode, NSString *message))failure -{ - if ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == 0) { - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.01 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - failure(-1, @"请检查网络连接。"); - - }); - return; - } - - [self prohibitipositionIntelligencers]; - params = [self prohibitipositionBaseParmars:params]; -#ifdef DEBUG - NSLog(@"\nmethod:\n%@\nparameter:\n%@", method, params); -#endif - - AFHTTPSessionManager *manager = [HttpRequestFacilitater requisitionExecutive]; - [manager DELETE:method parameters:params headers:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { - BaseMatrix *baseModel = [BaseMatrix mtowardsrixAboutImpactbasket:responseObject]; -#ifdef DEBUG - NSLog(@"\n%@", [baseModel toJSONBWSttr]); -#endif - success(baseModel); - } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { - [self shankNetMistake:error method:method failure:failure]; - }]; -} - -+ (void)request:(NSString *)url - method:(HttpRequestHelperMethod)method - params:(NSDictionary *)params - success:(void (^)(BaseMatrix *data))success - failure:(void (^)(NSInteger resCode, NSString *message))failure -{ - switch (method) { - case HttpRequestHelperMethodGET: { - [self GET:url params:params success:success failure:failure]; - } - break; - case HttpRequestHelperMethodPOST:{ - [self POST:url params:params success:success failure:failure]; - } - break; - case HttpRequestHelperMethodDELETE:{ - [self DELETE:url params:params success:success failure:failure]; - } - break; - } -} - -+ (void)request:(NSString *)path - method:(HttpRequestHelperMethod)method - params:(NSDictionary *)params - completion:(HttpRequestHelperCompletion)completion -{ - [self request:path method:method params:params success:^(BaseMatrix *data) { - if (completion) { - completion(data, data.code, data.message); - } - } failure:^(NSInteger resCode, NSString *message) { - if (completion) { - completion(nil, resCode, message); - } - }]; -} - -+ (void)prohibitipositionIntelligencers -{ - AFHTTPSessionManager *client = [HttpRequestFacilitater requisitionExecutive]; - if ([[AccountAbstractStorage instance] acquireCid].length > 0) { - [client.requestSerializer setValue:[[AccountAbstractStorage instance] acquireCid] forHTTPHeaderField:@"pub_uid"]; - } else { - [client.requestSerializer setValue:nil forHTTPHeaderField:@"pub_uid"]; - } - if ([[AccountAbstractStorage instance] acquireTicket].length > 0) { - [client.requestSerializer setValue:[[AccountAbstractStorage instance] acquireTicket] forHTTPHeaderField:@"pub_ticket"]; - }else { - [client.requestSerializer setValue:nil forHTTPHeaderField:@"pub_ticket"]; - } -} - -+ (NSDictionary*)prohibitipositionBaseParmars:(NSDictionary *)parmars -{ - NSDictionary *defaultBasciParame = @{ - @"os" : @"iOS", - @"osVersion" : [YYUtility systemVersion], - @"netType" : ([YYUtility networkPosition] == ReachableViaWiFi) ? @2 : @1, - @"ispType" : @([YYUtility automobilerierAplictowardsionraiser]), - @"channel" : [YYUtility acquireAplictowardsionProvenience] ? : @"", - @"model" : [YYUtility mtowardsrixConstitute], - @"deviceId" : [YYUtility instentiretytowardsionUniqueIdentifictowardsion], - @"appVersion" : [YYUtility appVersion], - @"app" : [YYUtility appName] - }; - if (!parmars||![parmars isKindOfClass:[NSDictionary class]]){ - NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithDictionary:defaultBasciParame]; - return dic; - } - NSMutableDictionary * dic = [NSMutableDictionary dictionaryWithDictionary:parmars]; - for (NSString *parameKey in defaultBasciParame.allKeys) { - [dic setObject:defaultBasciParame[parameKey] forKey:parameKey]; - } - return dic; -} - -+ (void)shankNetMistake:(NSError *)error method:(NSString *)method - failure:(void (^)(NSInteger resCode, NSString *message))failure -{ -#ifdef DEBUG - NSLog(@"\n%@", error); -#endif - - NSHTTPURLResponse *response = error.userInfo[@"com.alamofire.serialization.response.error.response"]; - if (response && response.statusCode == 401) { - failure(response.statusCode, @"登录已过期。"); - } else { - - if (error.code == -1009 || error.code == -1001 || error.code == -1004 || error.code == -1003 || error.code == -1002 || error.code == 3840) { - failure(error.code, @""); - } else { - failure(error.code, error.localizedDescription.length > 0 ? error.localizedDescription : YMLocalizedString(@"Http_Request_Helper_4")); - } - NSString * code = error.code ? [NSString stringWithFormat:@"%ld", error.code] : @"9999"; - NSString * des = error.description.length > 0 ? error.description : YMLocalizedString(@"Http_Request_Helper_5"); - NSException *exception = [NSException exceptionWithName:@"229181" - reason:method - userInfo:@{@"code":code, @"desc":des}]; - - } -} - -+ (void)postCommunictowardsionSolitaire:(NSString *)path - params:(NSString *)params - completion:(HttpRequestHelperCompletion)completion{ - - if ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == 0) { - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.01 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - completion(nil, -1, @"请检查网络连接。"); - }); - return; - } - - [self prohibitipositionIntelligencers]; - NSDictionary *baseParams = [self prohibitipositionBaseParmars:nil]; -#ifdef DEBUG -#endif - - AFHTTPSessionManager *manager = [HttpRequestFacilitater requisitionExecutive]; - NSString *url = API_HOST_URL; - NSString *urlPath = [NSString stringWithFormat:@"%@/%@", url ,path]; - - #ifdef DEBUG - NSLog(@"url:%@,parameter:%@",urlPath, baseParams); - #endif - - __block NSString *requestUrl = @""; - [baseParams.allKeys enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - NSString *value = baseParams[obj]; - requestUrl = [requestUrl stringByAppendingString:[NSString stringWithFormat:@"%@=%@&", obj, value]]; - }]; - - urlPath = [NSString stringWithFormat:@"%@?%@", urlPath, requestUrl]; - - NSMutableURLRequest *request = [[AFJSONRequestSerializer serializer] requestWithMethod:@"POST" URLString:urlPath parameters:baseParams error:nil]; - request.timeoutInterval= [[[NSUserDefaults standardUserDefaults] valueForKey:@"timeoutInterval"] longValue]; - - [request setValue:@"application/json; charset=UTF-8" forHTTPHeaderField:@"Content-Type"]; - - if ([[AccountAbstractStorage instance] acquireCid].length > 0) { - [request setValue:[[AccountAbstractStorage instance] acquireCid] forHTTPHeaderField:@"pub_uid"]; - [manager.requestSerializer setValue:[[AccountAbstractStorage instance] acquireCid] forHTTPHeaderField:@"pub_uid"]; - } else { - [request setValue:nil forHTTPHeaderField:@"pub_uid"]; - } - if ([[AccountAbstractStorage instance] acquireTicket].length > 0) { - [request setValue:[[AccountAbstractStorage instance] acquireTicket] forHTTPHeaderField:@"pub_ticket"]; - [manager.requestSerializer setValue:[[AccountAbstractStorage instance] acquireTicket] forHTTPHeaderField:@"pub_ticket"]; - }else { - [request setValue:nil forHTTPHeaderField:@"pub_ticket"]; - } - - NSError *error; - - [request setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding]]; - - [[manager dataTaskWithRequest:request uploadProgress:nil downloadProgress:nil completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { - if (responseObject) { - BaseMatrix *baseModel = [BaseMatrix mtowardsrixAboutImpactbasket:responseObject]; - #ifdef DEBUG - NSLog(@"\n%@", [baseModel toJSONBWSttr]); - #endif - if (baseModel.code == 200) { - if (completion) { - completion(baseModel, 200, nil); - } - } else { - if (completion) { - completion(nil, baseModel.code, baseModel.message); - } - } - } - if (error) { - [self shankNetMistake:error method:path failure:^(NSInteger resCode, NSString *message) { - completion(nil, resCode, message); - }]; - } - }] resume]; -} -+ (void)postSkillCard:(NSString *)path - params:(NSString *)params - completion:(HttpRequestHelperCompletion)completion{ - - if ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == 0) { - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.01 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - completion(nil, -1, @"请检查网络连接。"); - }); - return; - } - - [self prohibitipositionIntelligencers]; - NSDictionary *baseParams = [self prohibitipositionBaseParmars:nil]; -#ifdef DEBUG -// NSLog(@"\nmethod:\n%@\nparameter:\n%@", method, params); -#endif - - AFHTTPSessionManager *manager = [HttpRequestFacilitater requisitionExecutive]; - NSString *url = API_HOST_URL; - NSString *urlPath = [NSString stringWithFormat:@"%@/%@", url ,path]; - - #ifdef DEBUG - NSLog(@"url:%@,parameter:%@",urlPath, baseParams); - #endif - - __block NSString *requestUrl = @""; - [baseParams.allKeys enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - NSString *value = baseParams[obj]; - requestUrl = [requestUrl stringByAppendingString:[NSString stringWithFormat:@"%@=%@&", obj, value]]; - }]; - - urlPath = [NSString stringWithFormat:@"%@?%@", urlPath, requestUrl]; - - NSMutableURLRequest *request = [[AFJSONRequestSerializer serializer] requestWithMethod:@"POST" URLString:urlPath parameters:baseParams error:nil]; - request.timeoutInterval= [[[NSUserDefaults standardUserDefaults] valueForKey:@"timeoutInterval"] longValue]; - - [request setValue:@"application/json; charset=UTF-8" forHTTPHeaderField:@"Content-Type"]; - - if ([[AccountAbstractStorage instance] acquireCid].length > 0) { - [request setValue:[[AccountAbstractStorage instance] acquireCid] forHTTPHeaderField:@"pub_uid"]; - [manager.requestSerializer setValue:[[AccountAbstractStorage instance] acquireCid] forHTTPHeaderField:@"pub_uid"]; - } else { - [request setValue:nil forHTTPHeaderField:@"pub_uid"]; - } - if ([[AccountAbstractStorage instance] acquireTicket].length > 0) { - [request setValue:[[AccountAbstractStorage instance] acquireTicket] forHTTPHeaderField:@"pub_ticket"]; - [manager.requestSerializer setValue:[[AccountAbstractStorage instance] acquireTicket] forHTTPHeaderField:@"pub_ticket"]; - }else { - [request setValue:nil forHTTPHeaderField:@"pub_ticket"]; - } - - NSError *error; - - [request setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding]]; - - [[manager dataTaskWithRequest:request uploadProgress:nil downloadProgress:nil completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { - if (responseObject) { - BaseMatrix *baseModel = [BaseMatrix mtowardsrixAboutImpactbasket:responseObject]; - #ifdef DEBUG - NSLog(@"\n%@", [baseModel toJSONBWSttr]); - #endif - if (baseModel.code == 200) { - if (completion) { - completion(baseModel, 200, nil); - } - } else { - if (completion) { - completion(nil, baseModel.code, baseModel.message); - } - } - } - if (error) { - [self shankNetMistake:error method:path failure:^(NSInteger resCode, NSString *message) { - completion(nil, resCode, message); - }]; - } - }] resume]; -} - -@end diff --git a/YuMi/Network/HttpRequestHelper.h b/YuMi/Network/HttpRequestHelper.h new file mode 100644 index 00000000..0110a2fe --- /dev/null +++ b/YuMi/Network/HttpRequestHelper.h @@ -0,0 +1,64 @@ +// +// HttpRequestHelper.h +// YUMI +// +// Created by zu on 2021/9/3. +// + +#import +#import "BaseModel.h" + +typedef NS_ENUM(NSUInteger, HttpRequestHelperMethod) { + HttpRequestHelperMethodPOST, + HttpRequestHelperMethodGET, + HttpRequestHelperMethodDELETE +}; + +static dispatch_once_t onceToken; + +typedef void(^HttpRequestHelperCompletion)(BaseModel* _Nullable data, NSInteger code, NSString * _Nullable msg); + +NS_ASSUME_NONNULL_BEGIN + +@interface HttpRequestHelper : NSObject + ++ (NSDictionary*)configBaseParmars:(NSDictionary *)parmars; + ++ (void)GET:(NSString *)method +params:(NSDictionary *)params +success:(void (^)(BaseModel *data))success + failure:(void (^)(NSInteger resCode, NSString *message))failure; + ++ (void)POST:(NSString *)method + params:(NSDictionary *)params + success:(void (^)(BaseModel *data))success + failure:(void (^)(NSInteger resCode, NSString *message))failure; + ++ (void)DELETE:(NSString *)method + params:(NSDictionary *)params + success:(void (^)(BaseModel *data))success + failure:(void (^)(NSInteger resCode, NSString *message))failure; + ++ (void)request:(NSString *)url + method:(HttpRequestHelperMethod)method + params:(NSDictionary *)params + success:(void (^)(BaseModel *data))success + failure:(void (^)(NSInteger resCode, NSString *message))failure; + ++ (void)request:(NSString *)path + method:(HttpRequestHelperMethod)method + params:(NSDictionary *)params + completion:(HttpRequestHelperCompletion)completion; + + +/// 增加或编辑技能卡专用接口 Post 请求参数放入到 body 里 使用 application/json 类型传递 +/// @param path 请求地址 +/// @param params 参数 +/// @param completion 回调 ++ (void)postSkillCard:(NSString *)path + params:(NSString *)params + completion:(HttpRequestHelperCompletion)completion; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Network/HttpRequestHelper.m b/YuMi/Network/HttpRequestHelper.m new file mode 100644 index 00000000..4ca2939a --- /dev/null +++ b/YuMi/Network/HttpRequestHelper.m @@ -0,0 +1,314 @@ +// +// HttpRequestHelper.m +// YUMI +// +// Created by zu on 2021/9/3. +// + +#import "HttpRequestHelper.h" +#import "YYUtility.h" +#import "AccountInfoStorage.h" +#import "YYReachability.h" +#import +#import "YUMIMacroUitls.h" +@implementation HttpRequestHelper + ++(AFHTTPSessionManager *)requestManager +{ + static AFHTTPSessionManager *manager = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + manager = [[AFHTTPSessionManager manager]initWithBaseURL:[NSURL URLWithString:API_HOST_URL]]; + manager.responseSerializer = [AFJSONResponseSerializer serializer]; + manager.requestSerializer.HTTPShouldHandleCookies = YES; + // 客户端是否信任非法证书 + manager.securityPolicy.allowInvalidCertificates = YES; + AFSecurityPolicy *securityPolicy= [AFSecurityPolicy defaultPolicy]; + manager.securityPolicy = securityPolicy; + // 是否在证书域字段中验证域名 + [manager.securityPolicy setValidatesDomainName:NO]; + manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",@"text/plain",@"image/jpeg",@"image/png", nil]; + manager.requestSerializer.timeoutInterval = 60; + }); + return manager; +} + ++ (void)GET:(NSString *)method + params:(NSDictionary *)params + success:(void (^)(BaseModel *data))success + failure:(void (^)(NSInteger resCode, NSString *message))failure +{ + if ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == 0) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.01 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + failure(-1, @"请检查网络连接。"); + }); + return; + } + + [self configHeaders]; + params = [self configBaseParmars:params]; +#ifdef DEBUG + NSLog(@"\nmethod:\n%@\nparameter:\n%@", method, params); +#endif + + AFHTTPSessionManager *manager = [HttpRequestHelper requestManager]; + [manager GET:method parameters:params headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { + BaseModel *baseModel = [BaseModel modelWithDictionary:responseObject]; +#ifdef DEBUG + NSLog(@"\n%@", [baseModel toJSONString]); +#endif + success(baseModel); + } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { + [self handleNetError:error method:method failure:failure]; + }]; +} + ++ (void)POST:(NSString *)method + params:(NSDictionary *)params + success:(void (^)(BaseModel *data))success + failure:(void (^)(NSInteger resCode, NSString *message))failure +{ + if ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == 0) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.01 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + failure(-1, @"请检查网络连接。"); + + }); + return; + } + + [self configHeaders]; + params = [self configBaseParmars:params]; +#ifdef DEBUG + NSLog(@"\nmethod:\n%@\nparameter:\n%@", method, params); +#endif + + AFHTTPSessionManager *manager = [HttpRequestHelper requestManager]; + [manager POST:method parameters:params headers:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { + BaseModel *baseModel = [BaseModel modelWithDictionary:responseObject]; +#ifdef DEBUG + NSLog(@"\n%@", [baseModel toJSONString]); +#endif + success(baseModel); + } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { + [self handleNetError:error method:method failure:failure]; + }]; +} + ++ (void)DELETE:(NSString *)method + params:(NSDictionary *)params + success:(void (^)(BaseModel *data))success + failure:(void (^)(NSInteger resCode, NSString *message))failure +{ + if ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == 0) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.01 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + failure(-1, @"请检查网络连接。"); + + }); + return; + } + + [self configHeaders]; + params = [self configBaseParmars:params]; +#ifdef DEBUG + NSLog(@"\nmethod:\n%@\nparameter:\n%@", method, params); +#endif + + AFHTTPSessionManager *manager = [HttpRequestHelper requestManager]; + [manager DELETE:method parameters:params headers:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { + BaseModel *baseModel = [BaseModel modelWithDictionary:responseObject]; +#ifdef DEBUG + NSLog(@"\n%@", [baseModel toJSONString]); +#endif + success(baseModel); + } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { + [self handleNetError:error method:method failure:failure]; + }]; +} + ++ (void)request:(NSString *)url + method:(HttpRequestHelperMethod)method + params:(NSDictionary *)params + success:(void (^)(BaseModel *data))success + failure:(void (^)(NSInteger resCode, NSString *message))failure +{ + switch (method) { + case HttpRequestHelperMethodGET: { + [self GET:url params:params success:success failure:failure]; + } + break; + case HttpRequestHelperMethodPOST:{ + [self POST:url params:params success:success failure:failure]; + } + break; + case HttpRequestHelperMethodDELETE:{ + [self DELETE:url params:params success:success failure:failure]; + } + break; + } +} + ++ (void)request:(NSString *)path + method:(HttpRequestHelperMethod)method + params:(NSDictionary *)params + completion:(HttpRequestHelperCompletion)completion +{ + [self request:path method:method params:params success:^(BaseModel *data) { + if (completion) { + completion(data, data.code, data.message); + } + } failure:^(NSInteger resCode, NSString *message) { + if (completion) { + completion(nil, resCode, message); + } + }]; +} + ++ (void)configHeaders +{ + AFHTTPSessionManager *client = [HttpRequestHelper requestManager]; + if ([[AccountInfoStorage instance] getUid].length > 0) { + [client.requestSerializer setValue:[[AccountInfoStorage instance] getUid] forHTTPHeaderField:@"pub_uid"]; + } else { + [client.requestSerializer setValue:nil forHTTPHeaderField:@"pub_uid"]; + } + if ([[AccountInfoStorage instance] getTicket].length > 0) { + [client.requestSerializer setValue:[[AccountInfoStorage instance] getTicket] forHTTPHeaderField:@"pub_ticket"]; + }else { + [client.requestSerializer setValue:nil forHTTPHeaderField:@"pub_ticket"]; + } +} + ++ (NSDictionary*)configBaseParmars:(NSDictionary *)parmars +{ + NSDictionary *defaultBasciParame = @{ + @"os" : @"iOS", + @"osVersion" : [YYUtility systemVersion], + @"netType" : ([YYUtility networkStatus] == ReachableViaWiFi) ? @2 : @1, + @"ispType" : @([YYUtility carrierIdentifier]), + @"channel" : [YYUtility getAppSource] ? : @"", + @"model" : [YYUtility modelName], + @"deviceId" : [YYUtility deviceUniqueIdentification], + @"appVersion" : [YYUtility appVersion], + @"app" : [YYUtility appName] + }; + if (!parmars||![parmars isKindOfClass:[NSDictionary class]]){ + NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithDictionary:defaultBasciParame]; + return dic; + } + NSMutableDictionary * dic = [NSMutableDictionary dictionaryWithDictionary:parmars]; + for (NSString *parameKey in defaultBasciParame.allKeys) { + [dic setObject:defaultBasciParame[parameKey] forKey:parameKey]; + } + return dic; +} + ++ (void)handleNetError:(NSError *)error method:(NSString *)method + failure:(void (^)(NSInteger resCode, NSString *message))failure +{ +#ifdef DEBUG + NSLog(@"\n%@", error); +#endif + // 别问,反正 oauth/ticket 接口要通过这种方式取错误码。 + NSHTTPURLResponse *response = error.userInfo[@"com.alamofire.serialization.response.error.response"]; + if (response && response.statusCode == 401) { + failure(response.statusCode, @"登录已过期。"); + } else { + + if (error.code == -1009 || error.code == -1001 || error.code == -1004 || error.code == -1003 || error.code == -1002 || error.code == 3840) { + failure(error.code, @""); + } else { + failure(error.code, error.localizedDescription.length > 0 ? error.localizedDescription : YMLocalizedString(@"HttpRequestHelper4")); + } + NSString * code = error.code ? [NSString stringWithFormat:@"%ld", error.code] : @"9999"; + NSString * des = error.description.length > 0 ? error.description : YMLocalizedString(@"HttpRequestHelper5"); + NSException *exception = [NSException exceptionWithName:@"229181" + reason:method + userInfo:@{@"code":code, @"desc":des}]; + + } +} + +/// 增加或编辑技能卡专用接口 Post 请求参数放入到 body 里 使用 application/json 类型传递 +/// @param path 请求地址 +/// @param params 参数 +/// @param completion 回调 ++ (void)postSkillCard:(NSString *)path + params:(NSString *)params + completion:(HttpRequestHelperCompletion)completion{ + + if ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == 0) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.01 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + completion(nil, -1, @"请检查网络连接。"); + }); + return; + } + + [self configHeaders]; + NSDictionary *baseParams = [self configBaseParmars:nil]; +#ifdef DEBUG +// NSLog(@"\nmethod:\n%@\nparameter:\n%@", method, params); +#endif + + AFHTTPSessionManager *manager = [HttpRequestHelper requestManager]; + NSString *url = API_HOST_URL; + NSString *urlPath = [NSString stringWithFormat:@"%@/%@", url ,path]; + + #ifdef DEBUG + NSLog(@"url:%@,parameter:%@",urlPath, baseParams); + #endif + + __block NSString *requestUrl = @""; + [baseParams.allKeys enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + NSString *value = baseParams[obj]; + requestUrl = [requestUrl stringByAppendingString:[NSString stringWithFormat:@"%@=%@&", obj, value]]; + }]; + + urlPath = [NSString stringWithFormat:@"%@?%@", urlPath, requestUrl]; + + NSMutableURLRequest *request = [[AFJSONRequestSerializer serializer] requestWithMethod:@"POST" URLString:urlPath parameters:baseParams error:nil]; + request.timeoutInterval= [[[NSUserDefaults standardUserDefaults] valueForKey:@"timeoutInterval"] longValue]; + + [request setValue:@"application/json; charset=UTF-8" forHTTPHeaderField:@"Content-Type"]; + + if ([[AccountInfoStorage instance] getUid].length > 0) { + [request setValue:[[AccountInfoStorage instance] getUid] forHTTPHeaderField:@"pub_uid"]; + [manager.requestSerializer setValue:[[AccountInfoStorage instance] getUid] forHTTPHeaderField:@"pub_uid"]; + } else { + [request setValue:nil forHTTPHeaderField:@"pub_uid"]; + } + if ([[AccountInfoStorage instance] getTicket].length > 0) { + [request setValue:[[AccountInfoStorage instance] getTicket] forHTTPHeaderField:@"pub_ticket"]; + [manager.requestSerializer setValue:[[AccountInfoStorage instance] getTicket] forHTTPHeaderField:@"pub_ticket"]; + }else { + [request setValue:nil forHTTPHeaderField:@"pub_ticket"]; + } + + NSError *error; + + [request setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding]]; + + [[manager dataTaskWithRequest:request uploadProgress:nil downloadProgress:nil completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { + if (responseObject) { + BaseModel *baseModel = [BaseModel modelWithDictionary:responseObject]; + #ifdef DEBUG + NSLog(@"\n%@", [baseModel toJSONString]); + #endif + if (baseModel.code == 200) { + if (completion) { + completion(baseModel, 200, nil); + } + } else { + if (completion) { + completion(nil, baseModel.code, baseModel.message); + } + } + } + if (error) { + [self handleNetError:error method:path failure:^(NSInteger resCode, NSString *message) { + completion(nil, resCode, message); + }]; + } + }] resume]; +} + +@end diff --git a/YuMi/PICustomClass/ContentTreasureFairyModel.h b/YuMi/PICustomClass/ContentTreasureFairyModel.h deleted file mode 100644 index 196e8e84..00000000 --- a/YuMi/PICustomClass/ContentTreasureFairyModel.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// ContentTreasureFairyModel.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/23. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface ContentTreasureFairyModel : NSObject -///用户uid -@property (nonatomic,copy) NSString *uid; -///目标用户的uid -@property (nonatomic,copy) NSString *targetUid; -///精灵的id -@property (nonatomic,copy) NSString *elfId; -///精灵的图片 -@property (nonatomic,copy) NSString *elfPicUrl; -///显示的内容 -@property (nonatomic,copy) NSString *msgContent; -///精灵的名称 -@property (nonatomic,copy) NSString *elfName; -///目标用户的昵称 -@property (nonatomic,copy) NSString *targetNick; -///用户的昵称 -@property (nonatomic,copy) NSString *nick; -///是否已经赠送过了 -@property (nonatomic,assign) BOOL isSended; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/ContentTreasureFairyModel.m b/YuMi/PICustomClass/ContentTreasureFairyModel.m deleted file mode 100644 index a030e53d..00000000 --- a/YuMi/PICustomClass/ContentTreasureFairyModel.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ContentTreasureFairyModel.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/23. -// - -#import "ContentTreasureFairyModel.h" - -@implementation ContentTreasureFairyModel - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/Api/Api+TreasureFairy.h b/YuMi/PICustomClass/TreasureFairy/Api/Api+TreasureFairy.h deleted file mode 100644 index c1267153..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Api/Api+TreasureFairy.h +++ /dev/null @@ -1,123 +0,0 @@ -// -// Api+TreasureFairy.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/15. -// - -#import "Api.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface Api (TreasureFairy) -/// 夺宝限制 -/// - Parameter completion: 完成 -+ (void)treasureFailyLimitInfo:(HttpRequestHelperCompletion)completion; -/// 夺宝奖池 -/// - Parameter completion: 完成 -+ (void)treasureFailyDrawList:(HttpRequestHelperCompletion)completion; - -/// 夺宝信息 -/// - Parameter completion: 完成 -+ (void)treasureFailyDrawInfo:(HttpRequestHelperCompletion)completion; - -/// 开始夺宝 -/// - Parameters: -/// - completion: 完成 -/// - roomUid: 房主的uid -/// - drawNum: 个数 -+ (void)treasureFailyDraw:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid drawNum:(NSString *)drawNum; - -/// 森林抽奖 -/// - Parameters: -/// - completion: 完成 -/// - roomUid: 抽奖次数 -/// - poolLevel: 奖池类型 1:初级;2:中级;3:高级; -+ (void)treasureFailyForestDraw:(HttpRequestHelperCompletion)completion drawNum:(NSString *)drawNum poolLevel:(NSString *)poolLevel; - -/// 森林抽奖记录 -/// - Parameters: -/// - completion: 完成 -/// - page: 页数 -/// - pageSize: 一页多少个 -+ (void)treasureFairyForestDrawRecord:(HttpRequestHelperCompletion)completion page:(NSString *)page pageSize:(NSString *)pageSize; - -/// 用户森林信息 -/// - Parameter completion: 完成 -+ (void)treasureFailyForestUserInfo:(HttpRequestHelperCompletion)completion; - -/// 猛犸森林奖池配置列表 -/// - Parameter completion: 完成 -/// - Parameter poolLevel: 奖池等级 -+ (void)treasureFailyForestItems:(HttpRequestHelperCompletion)completion poolLevel:(NSString *)poolLevel; - -/// 我的精灵 -/// - Parameter completion: 完成 -+ (void)treasureFairyMyBallList:(HttpRequestHelperCompletion)completion; - -/// 我的好友 -/// - Parameters: -/// - completion: 完成 -/// - nick: 昵称 -+ (void)treasureFairyFansFriendList:(HttpRequestHelperCompletion)completion nick:(NSString *)nick; - -/// 精灵赠送 -/// - Parameters: -/// - completion: 完成 -/// - elfId: 精灵id -/// - targetUid: 目标用户的uid -+ (void)treasureFairySendFairyBall:(HttpRequestHelperCompletion)completion elfId:(NSString *)elfId targetUid:(NSString *)targetUid; - -/// 索要 -/// - Parameters: -/// - completion: 完成 -/// - elfId: 精灵id -/// - targetUid: 目标用户的uid -+ (void)treasureFairyAskForFairyBall:(HttpRequestHelperCompletion)completion elfId:(NSString *)elfId targetUid:(NSString *)targetUid; - -/// 赠与和获赠记录 -/// - Parameter completion: 完成 -/// - Parameter page: 页数 -/// - Parameter page: 一页多少个 -+ (void)treasureFailySendAndAskRecordList:(HttpRequestHelperCompletion)completion page:(NSString *)page pageSize:(NSString *)pageSize; - -/// 精灵试炼 -/// - Parameter completion: 完成 -/// - Parameter page: 页数 -/// - Parameter page: 一页多少个 -+ (void)treasureFailyCompoundBall:(HttpRequestHelperCompletion)completion compoundLevel:(NSInteger)compoundLevel compoundReqs:(NSArray *)compoundReqs; - -/// 精灵试炼记录 -/// - Parameter completion: 完成 -/// - Parameter page: 页数 -/// - Parameter pageSize: 一页多少个 -+ (void)treasureFailyCompoundBallRecord:(HttpRequestHelperCompletion)completion page:(NSString *)page pageSize:(NSString *)pageSize; - -/// 兑换-精灵召回列表 -/// - Parameter completion: 完成 -/// - Parameter page: 页数 -/// - Parameter pageSize: 一页多少个 -+ (void)treasureFailyConvertElfList:(HttpRequestHelperCompletion)completion; - -/// 兑换-精灵 -/// - Parameter completion: 完成 -/// - Parameter itemId: id -+ (void)treasureFailyConvert:(HttpRequestHelperCompletion)completion itemId:(NSString *)itemId roomUid:(NSString *)roomUid; - -/// 兑换-碎片兑换列表 -/// - Parameter completion: 完成 -/// - Parameter page: 页数 -/// - Parameter pageSize: 一页多少个 -+ (void)treasureFailyFragmentExchangeList:(HttpRequestHelperCompletion)completion; - -/// 兑换记录 -/// - Parameters: -/// - completion: 完成 -/// - convertType: 1:精灵召唤 2:碎片兑换 -/// - page: 页数 -/// - pageSize: 一页多少个 -+ (void)treasureFairyConvertRecord:(HttpRequestHelperCompletion)completion convertType:(NSString *)convertType page:(NSString *)page pageSize:(NSString *)pageSize; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/Api/Api+TreasureFairy.m b/YuMi/PICustomClass/TreasureFairy/Api/Api+TreasureFairy.m deleted file mode 100644 index 3dc17475..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Api/Api+TreasureFairy.m +++ /dev/null @@ -1,164 +0,0 @@ -// -// Api+TreasureFairy.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/15. -// - -#import "Api+TreasureFairy.h" -#import "NSMutableDictionary+Saft.h" -@implementation Api (TreasureFairy) - -/// 夺宝限制 -/// - Parameter completion: 完成 -+ (void)treasureFailyLimitInfo:(HttpRequestHelperCompletion)completion { - [self manufactureDemand:@"act/seize-treasure/status" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; -} - -/// 夺宝奖池 -/// - Parameter completion: 完成 -+ (void)treasureFailyDrawList:(HttpRequestHelperCompletion)completion { - [self manufactureDemand:@"act/seize-treasure/draw/pool/list" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; -} - -/// 夺宝信息 -/// - Parameter completion: 完成 -+ (void)treasureFailyDrawInfo:(HttpRequestHelperCompletion)completion { - [self manufactureDemand:@"act/seize-treasure/user/draw/info" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; -} - -/// 开始夺宝 -/// - Parameters: -/// - completion: 完成 -/// - roomUid: 房主的uid -/// - drawNum: 个数 -+ (void)treasureFailyDraw:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid drawNum:(NSString *)drawNum { - [self manufactureDemand:@"act/seize-treasure/draw" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, drawNum, nil]; -} - -/// 森林抽奖 -/// - Parameters: -/// - completion: 完成 -/// - roomUid: 抽奖次数 -/// - poolLevel: 奖池类型 1:初级;2:中级;3:高级; -+ (void)treasureFailyForestDraw:(HttpRequestHelperCompletion)completion drawNum:(NSString *)drawNum poolLevel:(NSString *)poolLevel { - [self manufactureDemand:@"act/seize-treasure/forest/draw" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, drawNum, poolLevel, nil]; -} - -/// 森林抽奖记录 -/// - Parameters: -/// - completion: 完成 -/// - page: 页数 -/// - pageSize: 一页多少个 -+ (void)treasureFairyForestDrawRecord:(HttpRequestHelperCompletion)completion page:(NSString *)page pageSize:(NSString *)pageSize { - [self manufactureDemand:@"act/seize-treasure/forest/draw/record" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, page, pageSize, nil]; -} - -/// 用户森林信息 -/// - Parameter completion: 完成 -+ (void)treasureFailyForestUserInfo:(HttpRequestHelperCompletion)completion { - [self manufactureDemand:@"act/seize-treasure/user/forest/info" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; -} - -/// 猛犸森林奖池配置列表 -/// - Parameter completion: 完成 -/// - Parameter poolLevel: 奖池等级 -+ (void)treasureFailyForestItems:(HttpRequestHelperCompletion)completion poolLevel:(NSString *)poolLevel { - [self manufactureDemand:@"act/seize-treasure/draw/forest/item" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,poolLevel, nil]; -} - -/// 我的精灵 -/// - Parameter completion: 完成 -+ (void)treasureFairyMyBallList:(HttpRequestHelperCompletion)completion { - [self manufactureDemand:@"act/seize-treasure/elf/user/info" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; -} - -/// 我的好友 -/// - Parameters: -/// - completion: 完成 -/// - nick: 昵称 -+ (void)treasureFairyFansFriendList:(HttpRequestHelperCompletion)completion nick:(NSString *)nick { - NSMutableDictionary * params = [NSMutableDictionary dictionary]; - [params secureSetGroal:nick forKey:@"nick"]; - [HttpRequestFacilitater request:@"fans/friend/list" method:HttpRequestHelperMethodGET params:params completion:completion]; -} - -/// 精灵赠送 -/// - Parameters: -/// - completion: 完成 -/// - elfId: 精灵id -/// - targetUid: 目标用户的uid -+ (void)treasureFairySendFairyBall:(HttpRequestHelperCompletion)completion elfId:(NSString *)elfId targetUid:(NSString *)targetUid { - [self manufactureDemand:@"act/seize-treasure/elf/send" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,elfId, targetUid, nil]; -} - -/// 索要 -/// - Parameters: -/// - completion: 完成 -/// - elfId: 精灵id -/// - targetUid: 目标用户的uid -+ (void)treasureFairyAskForFairyBall:(HttpRequestHelperCompletion)completion elfId:(NSString *)elfId targetUid:(NSString *)targetUid { - [self manufactureDemand:@"act/seize-treasure/elf/askFor" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__,elfId, targetUid, nil]; -} - -/// 赠与和获赠记录 -/// - Parameter completion: 完成 -/// - Parameter page: 页数 -/// - Parameter page: 一页多少个 -+ (void)treasureFailySendAndAskRecordList:(HttpRequestHelperCompletion)completion page:(NSString *)page pageSize:(NSString *)pageSize { - [self manufactureDemand:@"act/seize-treasure/elf/record" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, page, pageSize,nil]; -} - -/// 精灵试炼 -/// - Parameter completion: 完成 -/// - Parameter page: 页数 -/// - Parameter page: 一页多少个 -+ (void)treasureFailyCompoundBall:(HttpRequestHelperCompletion)completion compoundLevel:(NSInteger)compoundLevel compoundReqs:(NSArray *)compoundReqs { - NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic secureSetGroal:@(compoundLevel) forKey:@"level"]; - [dic secureSetGroal:compoundReqs forKey:@"expendList"]; - [HttpRequestFacilitater postSkillCard:@"act/seize-treasure/elf/compound" params:dic.toJSONBWSttr completion:completion]; -} - -/// 精灵试炼记录 -/// - Parameter completion: 完成 -/// - Parameter page: 页数 -/// - Parameter pageSize: 一页多少个 -+ (void)treasureFailyCompoundBallRecord:(HttpRequestHelperCompletion)completion page:(NSString *)page pageSize:(NSString *)pageSize { - [self manufactureDemand:@"act/seize-treasure/elf/compound/record" method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, page, pageSize, nil]; -} - -/// 兑换-精灵召回列表 -/// - Parameter completion: 完成 -/// - Parameter page: 页数 -/// - Parameter pageSize: 一页多少个 -+ (void)treasureFailyConvertElfList:(HttpRequestHelperCompletion)completion { - [self manufactureDemand:@"act/seize-treasure/convert/elf/list" method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, nil]; -} - -/// 兑换-精灵 -/// - Parameter completion: 完成 -/// - Parameter itemId: id -+ (void)treasureFailyConvert:(HttpRequestHelperCompletion)completion itemId:(NSString *)itemId roomUid:(nonnull NSString *)roomUid { - [self manufactureDemand:@"act/seize-treasure/convert" method:HttpRequestHelperMethodPOST completion:completion,__FUNCTION__, itemId, roomUid,nil]; -} - -/// 兑换-碎片兑换列表 -/// - Parameter completion: 完成 -/// - Parameter page: 页数 -/// - Parameter pageSize: 一页多少个 -+ (void)treasureFailyFragmentExchangeList:(HttpRequestHelperCompletion)completion { - [self manufactureDemand:@"act/seize-treasure/convert/chip/list" method:HttpRequestHelperMethodGET completion:completion,__FUNCTION__, nil]; -} - -/// 兑换记录 -/// - Parameters: -/// - completion: 完成 -/// - convertType: 1:精灵召唤 2:碎片兑换 -/// - page: 页数 -/// - pageSize: 一页多少个 -+ (void)treasureFairyConvertRecord:(HttpRequestHelperCompletion)completion convertType:(NSString *)convertType page:(NSString *)page pageSize:(NSString *)pageSize { - [self manufactureDemand:@"act/seize-treasure/convert/record" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, convertType, page, pageSize, nil]; -} - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFailryMessageModel.h b/YuMi/PICustomClass/TreasureFairy/Model/TreasureFailryMessageModel.h deleted file mode 100644 index a2f55411..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFailryMessageModel.h +++ /dev/null @@ -1,35 +0,0 @@ -// -// TreasureFailryMessageModel.h -// xplan-ios -// -// Created by 冯硕 on 2023/3/1. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface TreasureFailryMessageModel : NSObject -///奖励的名称 -@property (nonatomic,copy) NSString *rewardName; -///奖励的个数 -@property (nonatomic,assign) NSInteger rewardNum; -///用户的uid -@property (nonatomic,copy) NSString *uid; -///昵称 -@property (nonatomic,copy) NSString *nick; -///所在房间的Uid -@property (nonatomic,copy) NSString *roomUid; -///奖励等级 -@property (nonatomic,assign) NSInteger rewardLevel; -///奖励类型 -@property (nonatomic,copy) NSString *rewardType; -///限制等级 -@property (nonatomic,assign) NSInteger userLevelLimit; -///礼物价值 -@property (nonatomic,assign) NSInteger rewardShowValue; -/// 奖励单位 -@property (nonatomic, copy) NSString *rewardUnit; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFailryMessageModel.m b/YuMi/PICustomClass/TreasureFairy/Model/TreasureFailryMessageModel.m deleted file mode 100644 index 3c0cc988..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFailryMessageModel.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// TreasureFailryMessageModel.m -// xplan-ios -// -// Created by 冯硕 on 2023/3/1. -// - -#import "TreasureFailryMessageModel.h" - -@implementation TreasureFailryMessageModel - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFailyKeyInfoModel.h b/YuMi/PICustomClass/TreasureFairy/Model/TreasureFailyKeyInfoModel.h deleted file mode 100644 index af70c40f..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFailyKeyInfoModel.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// TreasureFailyKeyInfoModel.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/17. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface TreasureFailyKeyInfoModel : NSObject -///门票数 -@property (nonatomic,assign) NSInteger drawTicketNum; -///幸运值 -@property (nonatomic,assign) NSInteger luckyNum; -///写一个幸运值 -@property (nonatomic,assign) NSInteger nextBallNum; -///需要幸运值 -@property (nonatomic,assign) NSInteger needLuckyNum; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFailyKeyInfoModel.m b/YuMi/PICustomClass/TreasureFairy/Model/TreasureFailyKeyInfoModel.m deleted file mode 100644 index 647c725e..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFailyKeyInfoModel.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// TreasureFailyKeyInfoModel.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/17. -// - -#import "TreasureFailyKeyInfoModel.h" - -@implementation TreasureFailyKeyInfoModel - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyBallInfoModel.h b/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyBallInfoModel.h deleted file mode 100644 index 68bf6303..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyBallInfoModel.h +++ /dev/null @@ -1,50 +0,0 @@ -// -// TreasureFairyBallInfoModel.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/22. -// - -#import -#import "TreasureFairyInfoModel.h" -NS_ASSUME_NONNULL_BEGIN -@class TreasureFairyBallModel; -@interface TreasureFairyBallInfoModel : NSObject -///头像 -@property (nonatomic,copy) NSString *avatar; -///昵称 -@property (nonatomic,copy) NSString *nick; -///精灵碎片 -@property (nonatomic,assign) NSInteger chipNum; -///史诗 -@property (nonatomic,copy) NSArray *middleElves; -///普通 -@property (nonatomic,copy) NSArray *lowElves; -///传说 -@property (nonatomic,copy) NSArray *highElves; -@end - -@interface TreasureFairyBallModel : NSObject -///id -@property (nonatomic,assign) NSInteger elfId; -///精灵名称 -@property (nonatomic,copy) NSString *elfName; -///精灵数量 -@property (nonatomic,assign) NSInteger elfNum; -///精灵图片 -@property (nonatomic,copy) NSString *elfPicUrl; -///精灵等级 -@property (nonatomic,assign) TreasureFairyStoreType elfLevel; -///是否翻转了 本地字段 -@property (nonatomic,assign) BOOL isFlip; -///选中的个数 最大为3 -@property (nonatomic,assign) NSInteger chooseNum; -///消息中使用的 -///昵称 赠送的时候使用 -@property (nonatomic,copy) NSString *nick; -///赠送的人的uid -@property (nonatomic,assign) NSInteger uid; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyBallInfoModel.m b/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyBallInfoModel.m deleted file mode 100644 index eeee241f..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyBallInfoModel.m +++ /dev/null @@ -1,26 +0,0 @@ -// -// TreasureFairyBallInfoModel.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/22. -// - -#import "TreasureFairyBallInfoModel.h" - -@implementation TreasureFairyBallInfoModel -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{ - @"highElves":TreasureFairyBallModel.class, - @"lowElves":TreasureFairyBallModel.class, - @"middleElves":TreasureFairyBallModel.class, - }; -} - -@end - - -@implementation TreasureFairyBallModel - - - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyConvertRecordModel.h b/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyConvertRecordModel.h deleted file mode 100644 index 3d44913b..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyConvertRecordModel.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// TreasureFairyConvertRecordModel.h -// xplan-ios -// -// Created by XY on 2023/3/1. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface TreasureFairyConvertRecordModel : NSObject - -@property (nonatomic, assign) NSInteger convertLevel; -@property (nonatomic, assign) NSInteger convertType; -@property (nonatomic, copy) NSString *createTime; -@property (nonatomic, assign) NSInteger recordId; -@property (nonatomic, copy) NSString *rewardName; -@property (nonatomic, copy) NSString *rewardNum; -@property (nonatomic, copy) NSString *rewardPicUrl; -@property (nonatomic, copy) NSString *rewardShowValue; -@property (nonatomic, copy) NSString *rewardType; -@property (nonatomic, copy) NSString *rewardUnit; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyConvertRecordModel.m b/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyConvertRecordModel.m deleted file mode 100644 index bc6b3497..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyConvertRecordModel.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// TreasureFairyConvertRecordModel.m -// xplan-ios -// -// Created by XY on 2023/3/1. -// - -#import "TreasureFairyConvertRecordModel.h" - -@implementation TreasureFairyConvertRecordModel - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyFragmentModel.h b/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyFragmentModel.h deleted file mode 100644 index 7c162530..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyFragmentModel.h +++ /dev/null @@ -1,39 +0,0 @@ -// -// TreasureFairyFragmentModel.h -// xplan-ios -// -// Created by XY on 2023/2/28. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface TreasureFairyFragmentModel : NSObject - -/// 消耗数量 -@property (nonatomic, assign) NSInteger expendNum; -/// 兑换项id -@property (nonatomic, assign) NSInteger itemId; -/// 兑换等级 -@property (nonatomic, assign) NSInteger level; -/// 奖励id -@property (nonatomic, assign) NSInteger rewardId; -/// 奖励名称 -@property (nonatomic, copy) NSString *rewardName; -/// 奖励数量 -@property (nonatomic, assign) NSInteger rewardNum; -/// 奖励图片url -@property (nonatomic, copy) NSString *rewardPicUrl; -/// 奖励价值 -@property (nonatomic, copy) NSString *rewardShowValue; -/// 奖励类型 activityProps:活动道具;gift:礼物;namePlate:铭牌;car:座驾;headwear:头饰;chatBubble:气泡;infoCard:资料卡; -@property (nonatomic, copy) NSString *rewardType; -/// 奖励单位 -@property (nonatomic, copy) NSString *rewardUnit; -/// 兑换类型 -@property (nonatomic, assign) NSInteger type; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyFragmentModel.m b/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyFragmentModel.m deleted file mode 100644 index dac41c46..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyFragmentModel.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// TreasureFairyFragmentModel.m -// xplan-ios -// -// Created by XY on 2023/2/28. -// - -#import "TreasureFairyFragmentModel.h" - -@implementation TreasureFairyFragmentModel - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyInfoModel.h b/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyInfoModel.h deleted file mode 100644 index 85f7255a..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyInfoModel.h +++ /dev/null @@ -1,54 +0,0 @@ -// -// TreasureFairyInfoModel.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/15. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, TreasureFairyStoreType) { - ///普通 - TreasureFairyStoreType_Normal = 1, - ///史诗 - TreasureFairyStoreType_Middle = 2, - ///传说 - TreasureFairyStoreType_High = 3 -}; - -typedef NS_ENUM(NSInteger, TreasureFairyPropType) { - ///碎片 - TreasureFairyPropType_Piece = 1, - ///精灵球 - TreasureFairyPropType_Ball = 2, - ///精灵 - TreasureFairyPropType_Fairy = 3 -}; - -@interface TreasureFairyInfoModel : NSObject -///奖励id -@property (nonatomic,assign) NSInteger rewardId; -///奖励的名称 -@property (nonatomic,copy) NSString *rewardName; -///奖励的个数 -@property (nonatomic,assign) NSInteger rewardNum; -///奖励的图片 -@property (nonatomic,copy) NSString *rewardPicUrl; -/// 展示概率 -@property (nonatomic,assign) CGFloat showRatio; -///礼物的等级 -@property (nonatomic,assign) NSInteger rewardLevel; -///礼物的index -@property (nonatomic,assign) NSInteger itemIndex; -#pragma mark - 夺宝记录 -///奖池等级 -@property (nonatomic,assign) TreasureFairyStoreType poolLevel; -///时间戳 -@property (nonatomic,copy) NSString *drawTime; -///森林开出的礼物类型 -@property (nonatomic,assign) TreasureFairyPropType propType; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyInfoModel.m b/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyInfoModel.m deleted file mode 100644 index 45b92c2f..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyInfoModel.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// TreasureFairyInfoModel.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/15. -// - -#import "TreasureFairyInfoModel.h" - -@implementation TreasureFairyInfoModel - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyLimitModel.h b/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyLimitModel.h deleted file mode 100644 index a78d3787..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyLimitModel.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// TreasureFairyLimitModel.h -// xplan-ios -// -// Created by 冯硕 on 2023/3/1. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface TreasureFairyLimitModel : NSObject -///是否开启 -@property (nonatomic,assign) BOOL open; -///等级限制 -@property (nonatomic,assign) NSInteger levelLimit; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyLimitModel.m b/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyLimitModel.m deleted file mode 100644 index 80398f90..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyLimitModel.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// TreasureFairyLimitModel.m -// xplan-ios -// -// Created by 冯硕 on 2023/3/1. -// - -#import "TreasureFairyLimitModel.h" - -@implementation TreasureFairyLimitModel - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyRewardModel.h b/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyRewardModel.h deleted file mode 100644 index f5664058..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyRewardModel.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// TreasureFairyRewardModel.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/28. -// - -#import -#import "TreasureFairyInfoModel.h" -NS_ASSUME_NONNULL_BEGIN - -@interface TreasureFairyRewardModel : NSObject -@property (nonatomic,assign) NSInteger itemId; -///奖励id -@property (nonatomic,assign) NSInteger rewardId; -///奖励的名称 -@property (nonatomic,copy) NSString *rewardName; -///奖励的个数 -@property (nonatomic,assign) NSInteger rewardNum; -///奖励的图片 -@property (nonatomic,copy) NSString *rewardPicUrl; -///奖励的价值 -@property (nonatomic,assign) NSInteger rewardShowValue; -///奖励的单位 -@property (nonatomic,assign) NSInteger rewardUnit; -///类型 -@property (nonatomic,assign) TreasureFairyStoreType level; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyRewardModel.m b/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyRewardModel.m deleted file mode 100644 index 533971c5..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyRewardModel.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// TreasureFairyRewardModel.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/28. -// - -#import "TreasureFairyRewardModel.h" - -@implementation TreasureFairyRewardModel - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairySendRecordModel.h b/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairySendRecordModel.h deleted file mode 100644 index e85ed4a3..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairySendRecordModel.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// TreasureFairySendRecordModel.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/23. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, TreasureFairySendRecordType) { - ///赠与 - TreasureFairySendRecordModel_Send = 2, - ///获赠 - TreasureFairySendRecordModel_Receive =3, -}; - -@interface TreasureFairySendRecordModel : NSObject -///时间戳 -@property (nonatomic,copy) NSString *createTime; -///图片 -@property (nonatomic,copy) NSString *elfPicUrl; -///头像 -@property (nonatomic,copy) NSString *targetAvatar; -///昵称 -@property (nonatomic,copy) NSString *targetNick; -///类型 -@property (nonatomic,assign) TreasureFairySendRecordType type; -///精灵名称 -@property (nonatomic,copy) NSString *elfName; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairySendRecordModel.m b/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairySendRecordModel.m deleted file mode 100644 index 9a57b7d7..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairySendRecordModel.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// TreasureFairySendRecordModel.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/23. -// - -#import "TreasureFairySendRecordModel.h" - -@implementation TreasureFairySendRecordModel - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyTrialsRecordModel.h b/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyTrialsRecordModel.h deleted file mode 100644 index f9c509e5..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyTrialsRecordModel.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// TreasureFairyTrialsRecordModel.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/27. -// - -#import -#import "TreasureFairyInfoModel.h" -#import "TreasureFairyBallInfoModel.h" -NS_ASSUME_NONNULL_BEGIN - -@interface TreasureFairyTrialsRecordModel : NSObject -///精灵等级 -@property (nonatomic,assign) TreasureFairyStoreType compoundLevel; -///创建的时间 -@property (nonatomic,copy) NSString *createTime; -///奖励的名称 -@property (nonatomic,copy) NSString *elfName; -///合成的元素 -@property (nonatomic,strong) NSArray *expendList; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyTrialsRecordModel.m b/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyTrialsRecordModel.m deleted file mode 100644 index e9a5d623..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyTrialsRecordModel.m +++ /dev/null @@ -1,16 +0,0 @@ -// -// TreasureFairyTrialsRecordModel.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/27. -// - -#import "TreasureFairyTrialsRecordModel.h" - -@implementation TreasureFairyTrialsRecordModel -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{ - @"expendList":TreasureFairyBallModel.class - }; -} -@end diff --git a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyUserInfoModel.h b/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyUserInfoModel.h deleted file mode 100644 index b1c33371..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyUserInfoModel.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// TreasureFairyUserInfoModel.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface TreasureFairyUserInfoModel : NSObject -///奖励的名称 -@property (nonatomic,copy) NSString *avatar; -///奖励的名称 -@property (nonatomic,copy) NSString *nick; -///高级精灵球个数 -@property (nonatomic,assign) NSInteger highBallNum; -///初级精灵球个数 -@property (nonatomic,assign) NSInteger lowBallNum; -///中级精灵球个数 -@property (nonatomic,assign) NSInteger middleBallNum; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyUserInfoModel.m b/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyUserInfoModel.m deleted file mode 100644 index 959261e1..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Model/TreasureFairyUserInfoModel.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// TreasureFairyUserInfoModel.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/21. -// - -#import "TreasureFairyUserInfoModel.h" - -@implementation TreasureFairyUserInfoModel - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/Presenter/XPTreasureFailyPresenter.h b/YuMi/PICustomClass/TreasureFairy/Presenter/XPTreasureFailyPresenter.h deleted file mode 100644 index c7b1929b..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Presenter/XPTreasureFailyPresenter.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// TreasureFailyPresenter.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/15. -// - -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface XPTreasureFailyPresenter : BaseMvpExternalizer -///获取夺宝信息 -- (void)getTreasureFailyInfo; -///夺宝奖励列表 -- (void)getTreasureFailyDrawList; -///开始夺宝 -- (void)drawTreasureFaily:(NSString *)roomUid drawNum:(NSInteger)drawNum; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/Presenter/XPTreasureFailyPresenter.m b/YuMi/PICustomClass/TreasureFairy/Presenter/XPTreasureFailyPresenter.m deleted file mode 100644 index c448f4fb..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Presenter/XPTreasureFailyPresenter.m +++ /dev/null @@ -1,42 +0,0 @@ -// -// TreasureFailyPresenter.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/15. -// - -#import "XPTreasureFailyPresenter.h" -#import "Api+TreasureFairy.h" -#import "TreasureFailyKeyInfoModel.h" -#import "TreasureFairyInfoModel.h" -#import "XPTreasureFailyProtocol.h" -@implementation XPTreasureFailyPresenter - -///获取夺宝信息 -- (void)getTreasureFailyInfo { - [Api treasureFailyDrawInfo:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - TreasureFailyKeyInfoModel * info = [TreasureFailyKeyInfoModel mtowardsrixAboutImpactbasket:data.data]; - [[self acquireRegard] getTreasureFailyInfoSuccess:info]; - }]]; -} - -///夺宝奖励列表 -- (void)getTreasureFailyDrawList { - [Api treasureFailyDrawList:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [TreasureFairyInfoModel mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] getTreasureFailyDrawListSuccess:array]; - }]]; -} - -///开始夺宝 -- (void)drawTreasureFaily:(NSString *)roomUid drawNum:(NSInteger)drawNum { - NSString * drawStr = [NSString stringWithFormat:@"%ld", drawNum]; - [Api treasureFailyDraw:[self produceHyperessayImplementtowardsion:^(BaseMatrix * _Nonnull data) { - NSArray * array = [TreasureFairyInfoModel mtowardsrixsAboutGarment:data.data]; - [[self acquireRegard] drawTreasureFailySuccess:array]; - } fail:^(NSInteger code, NSString * _Nullable msg) { - [[self acquireRegard] drawTreasureFailyFail:code]; - }] roomUid:roomUid drawNum:drawStr]; -} - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/Protocol/XPTreasureFailyProtocol.h b/YuMi/PICustomClass/TreasureFairy/Protocol/XPTreasureFailyProtocol.h deleted file mode 100644 index dfbd9330..00000000 --- a/YuMi/PICustomClass/TreasureFairy/Protocol/XPTreasureFailyProtocol.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// XPTreasureFailyProtocol.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/15. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class TreasureFailyKeyInfoModel; -@protocol XPTreasureFailyProtocol - -///获取夺宝精灵用户信息成功 -- (void)getTreasureFailyInfoSuccess:(TreasureFailyKeyInfoModel *)info; - -///夺宝精灵奖励列表 -- (void)getTreasureFailyDrawListSuccess:(NSArray *)list; - -///夺宝精灵 开始夺宝 -- (void)drawTreasureFailySuccess:(NSArray *)array; -- (void)drawTreasureFailyFail:(NSInteger)code; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFailyResultGiftCell.h b/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFailyResultGiftCell.h deleted file mode 100644 index 2aeacada..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFailyResultGiftCell.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// XPTreasureFailyResultGiftView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/16. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class TreasureFairyInfoModel; -@interface XPTreasureFailyResultGiftCell : UICollectionViewCell -///奖励信息 -@property (nonatomic,strong) TreasureFairyInfoModel *prizeInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFailyResultGiftCell.m b/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFailyResultGiftCell.m deleted file mode 100644 index 7de67601..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFailyResultGiftCell.m +++ /dev/null @@ -1,121 +0,0 @@ -// -// XPTreasureFailyResultGiftView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/16. -// - -#import "XPTreasureFailyResultGiftCell.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" - -///Model -#import "TreasureFairyInfoModel.h" - -@interface XPTreasureFailyResultGiftCell () -///背景 -@property (nonatomic,strong) UIImageView *backImageView; -///礼物名称 -@property (nonatomic,strong) NetIndicateRegard *giftImageView; -///个数 -@property (nonatomic,strong) UIButton *countButton; -///名字 -@property (nonatomic,strong) UILabel *nameLabel; -@end - -@implementation XPTreasureFailyResultGiftCell - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - [self.contentView addSubview:self.backImageView]; - [self.contentView addSubview:self.nameLabel]; - [self.backImageView addSubview:self.giftImageView]; - [self.backImageView addSubview:self.countButton]; -} - -- (void)initSubViewConstraints { - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.height.mas_equalTo(self.backImageView.mas_width); - - }]; - - [self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.backImageView).inset(10); - }]; - - [self.countButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(29.5, 30.5)); - make.bottom.right.mas_equalTo(self.backImageView); - }]; - - [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self); - make.top.mas_equalTo(self.backImageView.mas_bottom).offset(7); - }]; -} -#pragma mark - Getters And Setters -- (void)setPrizeInfo:(TreasureFairyInfoModel *)prizeInfo { - _prizeInfo = prizeInfo; - if (_prizeInfo) { - self.giftImageView.imageUrl = prizeInfo.rewardPicUrl; - [self.countButton setTitle:[NSString stringWithFormat:@"%ld", _prizeInfo.rewardNum] forState:UIControlStateNormal]; - self.nameLabel.text = _prizeInfo.rewardName; - } -} - -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_treasure_faily_result_gift_bg"]; - } - return _backImageView; -} - -- (NetIndicateRegard *)giftImageView { - if (!_giftImageView) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _giftImageView = [[NetIndicateRegard alloc] initWithConfig:config]; - _giftImageView.layer.masksToBounds = YES; - _giftImageView.contentMode = UIViewContentModeScaleAspectFill; - } - return _giftImageView; -} - -- (UIButton *)countButton { - if (!_countButton) { - _countButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_countButton setTitleColor:[DJDKMIMOMColor colorAboutHexBWSttr:@"#1F5764"] forState:UIControlStateNormal]; - _countButton.titleLabel.font = [UIFont systemFontOfSize:10]; - [_countButton setBackgroundImage:[UIImage imageNamed:@"room_treasure_fairy_result_coung_bg"] forState:UIControlStateNormal]; - } - return _countButton; -} - -- (UILabel *)nameLabel { - if (!_nameLabel) { - _nameLabel = [[UILabel alloc] init]; - _nameLabel.font = [UIFont systemFontOfSize:13]; - _nameLabel.textAlignment = NSTextAlignmentCenter; - _nameLabel.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#FFE8AA"]; - } - return _nameLabel; -} - - - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyFriendCell.h b/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyFriendCell.h deleted file mode 100644 index 727131c1..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyFriendCell.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// XPTreasureFairyFriendCell.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/23. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ConsumerAbstractMatrix; -@interface XPTreasureFairyFriendCell : UITableViewCell -@property (nonatomic,strong) ConsumerAbstractMatrix *userInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyFriendCell.m b/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyFriendCell.m deleted file mode 100644 index b31b19f1..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyFriendCell.m +++ /dev/null @@ -1,122 +0,0 @@ -// -// XPTreasureFairyFriendCell.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/23. -// - -#import "XPTreasureFairyFriendCell.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" - -///Model -#import "ConsumerAbstractMatrix.h" -@interface XPTreasureFairyFriendCell () -///背景 -@property (nonatomic,strong) UIView *backView; -///头像 -@property (nonatomic,strong) NetIndicateRegard *avatarImageView; -///昵称 -@property (nonatomic,strong) UILabel *nickLabel; -///签名 -@property (nonatomic,strong) UILabel *signLabel; -@end - - -@implementation XPTreasureFairyFriendCell - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.backView]; - [self.backView addSubview:self.avatarImageView]; - [self.backView addSubview:self.nickLabel]; - [self.backView addSubview:self.signLabel]; -} - -- (void)initSubViewConstraints { - [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(15); - make.top.mas_equalTo(self.contentView); - make.height.mas_equalTo(55); - }]; - - [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(49, 49)); - make.left.mas_equalTo(self.backView).offset(12); - make.centerY.mas_equalTo(self.backView); - }]; - - [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.avatarImageView.mas_right).offset(8); - make.right.mas_lessThanOrEqualTo(self.backView).offset(-5); - make.bottom.mas_equalTo(self.avatarImageView.mas_centerY).offset(-3); - }]; - - [self.signLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.nickLabel); - make.top.mas_equalTo(self.nickLabel.mas_bottom).offset(3); - }]; -} -#pragma mark - Getters And Setters -- (void)setUserInfo:(ConsumerAbstractMatrix *)userInfo { - _userInfo = userInfo; - if (_userInfo) { - self.avatarImageView.imageUrl = _userInfo.avatar; - self.nickLabel.text = _userInfo.nick; - self.signLabel.text = _userInfo.userDesc.length > 0 ? _userInfo.userDesc : @"这个人很懒,还没有签名嗷~"; - } -} - -- (UIView *)backView { - if (!_backView) { - _backView = [[UIView alloc] init]; - _backView.backgroundColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#00A69D"]; - _backView.layer.cornerRadius = 4; - _backView.layer.masksToBounds = YES; - } - return _backView; -} - -- (NetIndicateRegard *)avatarImageView { - if (!_avatarImageView) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _avatarImageView = [[NetIndicateRegard alloc] initWithConfig:config]; - _avatarImageView.layer.masksToBounds = YES; - _avatarImageView.layer.cornerRadius = 49/2; - _avatarImageView.layer.borderWidth = 0.5; - _avatarImageView.layer.borderColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#FFE8AA"].CGColor; - } - return _avatarImageView; -} - -- (UILabel *)nickLabel { - if (!_nickLabel) { - _nickLabel = [[UILabel alloc] init]; - _nickLabel.font = [UIFont systemFontOfSize:14]; - _nickLabel.textColor = [UIColor whiteColor]; - } - return _nickLabel; -} -- (UILabel *)signLabel { - if (!_signLabel) { - _signLabel = [[UILabel alloc] init]; - _signLabel.font = [UIFont systemFontOfSize:12]; - _signLabel.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#59FDFF"]; - } - return _signLabel; -} - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyPrizePoolCell.h b/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyPrizePoolCell.h deleted file mode 100644 index 57d559b9..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyPrizePoolCell.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// XPTreasureFairyPrizePoolCell.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class TreasureFairyInfoModel; -@interface XPTreasureFairyPrizePoolCell : UICollectionViewCell - -@property (nonatomic,strong) TreasureFairyInfoModel *info; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyPrizePoolCell.m b/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyPrizePoolCell.m deleted file mode 100644 index 685aa269..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyPrizePoolCell.m +++ /dev/null @@ -1,106 +0,0 @@ -// -// XPTreasureFairyPrizePoolCell.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/21. -// - -#import "XPTreasureFairyPrizePoolCell.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" - -#import "UIImage+Utils.h" -#import "TreasureFairyInfoModel.h" - -@interface XPTreasureFairyPrizePoolCell () - -///奖励的图片 -@property (nonatomic,strong) NetIndicateRegard *giftImageView; -///背景 -@property (nonatomic,strong) UIImageView *backImageView; -///奖励名称 -@property (nonatomic,strong) UILabel *nameLabel; - -@end - - -@implementation XPTreasureFairyPrizePoolCell - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - [self.contentView addSubview:self.backImageView]; - [self.contentView addSubview:self.giftImageView]; - [self.contentView addSubview:self.nameLabel]; -} - -- (void)initSubViewConstraints { - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(94, 115)); - make.centerX.mas_equalTo(self.contentView); - make.top.mas_equalTo(self.contentView); - }]; - - [self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(65, 65)); - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.backImageView).offset(18); - }]; - - [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backImageView); - make.bottom.mas_equalTo(self.backImageView).offset(-8); - }]; -} - -#pragma mark - Getters And Setters -- (void)setInfo:(TreasureFairyInfoModel *)info { - _info = info; - if (_info) { - self.giftImageView.imageUrl = _info.rewardPicUrl; - self.nameLabel.text = _info.rewardName; - } -} - -- (NetIndicateRegard *)giftImageView { - if (!_giftImageView) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _giftImageView = [[NetIndicateRegard alloc] initWithConfig:config]; - _giftImageView.layer.masksToBounds = YES; - _giftImageView.contentMode = UIViewContentModeScaleAspectFill; - } - return _giftImageView; -} - -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_prize_pool_bg"]; - } - return _backImageView; -} - -- (UILabel *)nameLabel { - if (!_nameLabel) { - _nameLabel = [[UILabel alloc] init]; - _nameLabel.font = [UIFont systemFontOfSize:15]; - _nameLabel.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#1F5764"]; - _nameLabel.textAlignment = NSTextAlignmentCenter; - } - return _nameLabel; -} - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyPrizeRecordCell.h b/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyPrizeRecordCell.h deleted file mode 100644 index fd2e11cf..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyPrizeRecordCell.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// XPTreasureFairyPrizeRecordCell.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class TreasureFairyInfoModel; -@interface XPTreasureFairyPrizeRecordCell : UITableViewCell -///礼物信息 -@property (nonatomic,strong) TreasureFairyInfoModel *recordInfo; -///时间 -@property (nonatomic,strong, readonly) UILabel *timeLabel; -///等级 -@property (nonatomic,strong, readonly) UILabel *levelLabel; -///奖励 -@property (nonatomic,strong, readonly) UILabel * prizeLabel; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyPrizeRecordCell.m b/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyPrizeRecordCell.m deleted file mode 100644 index 6d23456f..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyPrizeRecordCell.m +++ /dev/null @@ -1,134 +0,0 @@ -// -// XPTreasureFairyPrizeRecordCell.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/21. -// - -#import "XPTreasureFairyPrizeRecordCell.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" -#import "PLIntratemporalUtil.h" -///Model -#import "TreasureFairyInfoModel.h" - -@interface XPTreasureFairyPrizeRecordCell () -///容器 -@property (nonatomic,strong) UIStackView *stackView; -///时间 -@property (nonatomic,strong) UILabel *timeLabel; -///等级 -@property (nonatomic,strong) UILabel *levelLabel; -///奖励 -@property (nonatomic,strong) UILabel * prizeLabel; - -@end - -@implementation XPTreasureFairyPrizeRecordCell - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.stackView]; - [self.stackView addArrangedSubview:self.timeLabel]; - [self.stackView addArrangedSubview:self.levelLabel]; - [self.stackView addArrangedSubview:self.prizeLabel]; -} - -- (void)initSubViewConstraints { - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.contentView); - }]; -} -- (NSString *)getDateWithHHMMSS:(NSString *)time { - NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; - formatter.timeZone = [NSTimeZone timeZoneWithName:@"Asia/Beijing"]; - [formatter setDateStyle:NSDateFormatterMediumStyle]; - [formatter setTimeStyle:NSDateFormatterShortStyle]; - [formatter setDateFormat:@"HH:mm:ss"]; - NSDate* date = [NSDate dateWithTimeIntervalSince1970:[time doubleValue]/ 1000.0]; - NSString* dateString = [formatter stringFromDate:date]; - return dateString; -} - -- (NSString *)getDateWithYYMM:(NSString *)time { - NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; - formatter.timeZone = [NSTimeZone timeZoneWithName:@"Asia/Beijing"]; - [formatter setDateStyle:NSDateFormatterMediumStyle]; - [formatter setTimeStyle:NSDateFormatterShortStyle]; - [formatter setDateFormat:@"yyyy:MM:dd"]; - NSDate* date = [NSDate dateWithTimeIntervalSince1970:[time doubleValue]/ 1000.0]; - NSString* dateString = [formatter stringFromDate:date]; - return dateString; -} - -#pragma mark - Getters And Setters -- (void)setRecordInfo:(TreasureFairyInfoModel *)recordInfo { - _recordInfo = recordInfo; - if (_recordInfo) { - NSString * time = [NSString stringWithFormat:@"%@\n%@", [self getDateWithYYMM:_recordInfo.drawTime], [self getDateWithHHMMSS:_recordInfo.drawTime]]; - self.timeLabel.text = time; - if (_recordInfo.poolLevel == TreasureFairyStoreType_Normal) { - self.levelLabel.text = @"初级猛犸森林"; - } else if (_recordInfo.poolLevel == TreasureFairyStoreType_Middle) { - self.levelLabel.text = @"史诗猛犸森林"; - } else { - self.levelLabel.text = @"传说猛犸森林"; - } - self.prizeLabel.text = [NSString stringWithFormat:@"%@x%ld", _recordInfo.rewardName, _recordInfo.rewardNum]; - } -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFillEqually; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 0; - } - return _stackView; -} - -- (UILabel *)timeLabel { - if (!_timeLabel) { - _timeLabel = [[UILabel alloc] init]; - _timeLabel.font = [UIFont systemFontOfSize:12]; - _timeLabel.textColor = [UIColor whiteColor]; - _timeLabel.numberOfLines = 0; - _timeLabel.textAlignment = NSTextAlignmentCenter; - } - return _timeLabel; -} - -- (UILabel *)levelLabel { - if (!_levelLabel) { - _levelLabel = [[UILabel alloc] init]; - _levelLabel.font = [UIFont systemFontOfSize:12]; - _levelLabel.textColor = [UIColor whiteColor]; - _levelLabel.textAlignment = NSTextAlignmentCenter; - } - return _levelLabel; -} - -- (UILabel *)prizeLabel { - if (!_prizeLabel) { - _prizeLabel = [[UILabel alloc] init]; - _prizeLabel.font = [UIFont systemFontOfSize:12]; - _prizeLabel.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#FEF8A8"]; - _prizeLabel.textAlignment = NSTextAlignmentCenter; - } - return _prizeLabel; -} -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairySendRecordCell.h b/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairySendRecordCell.h deleted file mode 100644 index f8e21b3b..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairySendRecordCell.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// XPTreasureFairySendRecordCell.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/23. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class TreasureFairySendRecordModel; -@interface XPTreasureFairySendRecordCell : UITableViewCell -@property (nonatomic,strong) TreasureFairySendRecordModel *recordInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairySendRecordCell.m b/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairySendRecordCell.m deleted file mode 100644 index 6f37aef0..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairySendRecordCell.m +++ /dev/null @@ -1,143 +0,0 @@ -// -// XPTreasureFairySendRecordCell.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/23. -// - -#import "XPTreasureFairySendRecordCell.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" - -///Model -#import "TreasureFairySendRecordModel.h" - -@interface XPTreasureFairySendRecordCell () -///时间 -@property (nonatomic,strong) UILabel *timeLabel; -///背景 -@property (nonatomic,strong) UIView *backView; -///头像 -@property (nonatomic,strong) NetIndicateRegard *avatarImageView; -///标题 -@property (nonatomic,strong) UILabel *titleLabel; - - -@end - - -@implementation XPTreasureFairySendRecordCell -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.timeLabel]; - [self.contentView addSubview:self.backView]; - [self.backView addSubview:self.avatarImageView]; - [self.backView addSubview:self.titleLabel]; -} - -- (void)initSubViewConstraints { - [self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.contentView).offset(20); - make.top.mas_equalTo(self.contentView); - }]; - - [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.contentView).inset(20); - make.height.mas_equalTo(58); - make.top.mas_equalTo(self.timeLabel.mas_bottom).offset(8); - }]; - - [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(42, 42)); - make.left.mas_equalTo(self.backView).offset(12); - make.centerY.mas_equalTo(self.backView); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.avatarImageView.mas_right).offset(9); - make.centerY.mas_equalTo(self.avatarImageView); - make.right.mas_lessThanOrEqualTo(self.backView).offset(-5); - }]; -} - -- (NSString *)getDateWithTotalTimeWith:(NSString *)time { - NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; - formatter.timeZone = [NSTimeZone timeZoneWithName:@"Asia/Beijing"]; - [formatter setDateStyle:NSDateFormatterMediumStyle]; - [formatter setTimeStyle:NSDateFormatterShortStyle]; - [formatter setDateFormat:@"yyyy年MM月dd日 HH时mm分ss秒"]; - NSDate* date = [NSDate dateWithTimeIntervalSince1970:[time doubleValue]/ 1000.0]; - NSString* dateString = [formatter stringFromDate:date]; - return dateString; -} -#pragma mark - Getters And Setters -- (void)setRecordInfo:(TreasureFairySendRecordModel *)recordInfo { - _recordInfo = recordInfo; - if (_recordInfo) { - self.timeLabel.text = [self getDateWithTotalTimeWith:_recordInfo.createTime]; - self.avatarImageView.imageUrl = _recordInfo.elfPicUrl; - NSString * nick = self.recordInfo.targetNick; - if (_recordInfo.type == TreasureFairySendRecordModel_Send) { - self.titleLabel.text = [NSString stringWithFormat:@"你赠送%@一张“%@”精灵卡",nick,self.recordInfo.elfName]; - } else { - self.titleLabel.text = [NSString stringWithFormat:@"%@赠送了你一张“%@”精灵卡", nick,self.recordInfo.elfName]; - } - } -} - -- (UILabel *)timeLabel { - if (!_timeLabel) { - _timeLabel = [[UILabel alloc] init]; - _timeLabel.font = [UIFont systemFontOfSize:12]; - _timeLabel.textColor = [UIColor whiteColor]; - } - return _timeLabel; -} - -- (UIView *)backView { - if (!_backView) { - _backView = [[UIView alloc] init]; - _backView.backgroundColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#00A69D"]; - _backView.layer.masksToBounds = YES; - _backView.layer.cornerRadius = 8; - } - return _backView; -} - -- (NetIndicateRegard *)avatarImageView { - if (!_avatarImageView) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _avatarImageView = [[NetIndicateRegard alloc] initWithConfig:config]; - _avatarImageView.layer.masksToBounds = YES; - _avatarImageView.layer.cornerRadius = 4; - _avatarImageView.layer.borderColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#FFE8AA"].CGColor; - _avatarImageView.layer.borderWidth = 0.5; - _avatarImageView.contentMode = UIViewContentModeScaleAspectFill; - } - return _avatarImageView; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:12]; - _titleLabel.textColor = [UIColor whiteColor]; - _titleLabel.numberOfLines = 0; - } - return _titleLabel; -} - - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyShopingExchangeCell.h b/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyShopingExchangeCell.h deleted file mode 100644 index f09f3935..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyShopingExchangeCell.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// XPTreasureFairyShopingExchangeCell.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/28. -// - -#import - -@class TreasureFairyFragmentModel; -NS_ASSUME_NONNULL_BEGIN - -@protocol XPTreasureFairyShopingExchangeCellDelegate - -/// 兑换事件 -- (void)treasureFairyShopingExchangeAction:(TreasureFairyFragmentModel *)fragmentModel; - -@end - -@interface XPTreasureFairyShopingExchangeCell : UICollectionViewCell - -@property (nonatomic, strong) TreasureFairyFragmentModel *fragmemtModel; - -@property (nonatomic, weak) id delegate; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyShopingExchangeCell.m b/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyShopingExchangeCell.m deleted file mode 100644 index 11468555..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyShopingExchangeCell.m +++ /dev/null @@ -1,202 +0,0 @@ -// -// XPTreasureFairyShopingExchangeCell.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/28. -// - -#import "XPTreasureFairyShopingExchangeCell.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" - -#import "UIImage+Utils.h" -///Model -#import "TreasureFairyFragmentModel.h" - -@interface XPTreasureFairyShopingExchangeCell () -///背景图 -@property (nonatomic,strong) UIImageView *backImageView; -///精灵球 -@property (nonatomic,strong) NetIndicateRegard *ballImaegView; -///昵称 -@property (nonatomic,strong) UILabel *nameLabel; -///容器 -@property (nonatomic,strong) UIStackView *stackView; -///随便图片 -@property (nonatomic,strong) UIImageView *pieceImageView; -///随便个数 -@property (nonatomic,strong) UILabel *pieceCountLabel; -///兑换 -@property (nonatomic,strong) UIButton *exchangeButton; -@end - - -@implementation XPTreasureFairyShopingExchangeCell - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - self.contentView.backgroundColor = UIColor.clearColor; - self.backgroundColor = UIColor.clearColor; - [self initSubViews]; - [self initSubViewConstraints]; - - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.backImageView]; - [self.backImageView addSubview:self.ballImaegView]; - [self.backImageView addSubview:self.nameLabel]; - [self.backImageView addSubview:self.stackView]; - [self.backImageView addSubview:self.exchangeButton]; - - - [self.stackView addArrangedSubview:self.pieceImageView]; - [self.stackView addArrangedSubview:self.pieceCountLabel]; - -} - -- (void)initSubViewConstraints { - - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.contentView); - }]; - - [self.ballImaegView mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(80); - make.height.mas_equalTo(80); - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(54.0); - }]; - - [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(8); - make.right.mas_equalTo(-8); - make.bottom.mas_equalTo(self.stackView.mas_top).offset(-4); - }]; - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.exchangeButton.mas_top).offset(-7); - make.centerX.mas_equalTo(self.backImageView); - make.height.mas_equalTo(20); - }]; - [self.pieceImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(self.stackView.mas_height); - }]; - [self.exchangeButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.backImageView); - make.bottom.mas_equalTo(-26); - make.width.mas_equalTo(80); - make.height.mas_equalTo(25); - }]; -} - -- (void)layoutSubviews { - [super layoutSubviews]; - self.ballImaegView.layer.cornerRadius = self.ballImaegView.bounds.size.width/2.0; - self.ballImaegView.clipsToBounds = YES; -} - -- (void)setFragmemtModel:(TreasureFairyFragmentModel *)fragmemtModel { - _fragmemtModel = fragmemtModel; - NSString * utils = fragmemtModel.rewardUnit; - if ([fragmemtModel.rewardType isEqualToString:@"gift"]) { - utils = @"钻"; - self.nameLabel.text = [NSString stringWithFormat:@"%@(%@%@)",fragmemtModel.rewardName, fragmemtModel.rewardShowValue, utils]; - } else { - self.nameLabel.text = [NSString stringWithFormat:@"%@(%ld%@)",fragmemtModel.rewardName, fragmemtModel.rewardNum, utils]; - } - - self.ballImaegView.imageUrl = fragmemtModel.rewardPicUrl; - self.pieceCountLabel.text = [NSString stringWithFormat:@"%ld",fragmemtModel.expendNum]; - [self.exchangeButton setTitle:@"兑换" forState:UIControlStateNormal]; -} - -#pragma mark - Action - -- (void)exchangeBtnAction { - if (self.delegate && [self.delegate respondsToSelector:@selector(treasureFairyShopingExchangeAction:)]) { - [self.delegate treasureFairyShopingExchangeAction:self.fragmemtModel]; - } -} - -#pragma mark - Getters And Setters - -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_shop_exchange_bg"]; - _backImageView.userInteractionEnabled = YES; - } - return _backImageView; -} - -- (NetIndicateRegard *)ballImaegView { - if (!_ballImaegView) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _ballImaegView = [[NetIndicateRegard alloc] initWithConfig:config]; - _ballImaegView.clipsToBounds = YES; - _ballImaegView.contentMode = UIViewContentModeScaleAspectFit; - } - return _ballImaegView; -} - -- (UILabel *)nameLabel { - if (!_nameLabel) { - _nameLabel = [[UILabel alloc] init]; - _nameLabel.textColor = UIColor.whiteColor; - _nameLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightRegular]; - _nameLabel.textAlignment = NSTextAlignmentCenter; - } - return _nameLabel; -} - -- (UIImageView *)pieceImageView { - if (!_pieceImageView) { - _pieceImageView = [[UIImageView alloc] init]; - _pieceImageView.contentMode = UIViewContentModeScaleAspectFit; - _pieceImageView.image = [UIImage imageNamed:@"room_treasure_fairy_shop_fragment"]; - } - return _pieceImageView; -} - -- (UILabel *)pieceCountLabel { - if (!_pieceCountLabel) { - _pieceCountLabel = [[UILabel alloc] init]; - _pieceCountLabel.textColor = UIColor.whiteColor; - _pieceCountLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightRegular]; - _pieceCountLabel.textAlignment = NSTextAlignmentCenter; - } - return _pieceCountLabel; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.spacing = 4; - } - return _stackView; -} - -- (UIButton *)exchangeButton { - if (!_exchangeButton) { - _exchangeButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_exchangeButton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor colorAboutHexBWSttr:@"#3AEAC7"], [DJDKMIMOMColor colorAboutHexBWSttr:@"#FFFEBB"]] gradientType:GradientGenreTopToBottom imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_exchangeButton setTitleColor:[DJDKMIMOMColor colorAboutHexBWSttr:@"#1F5764"] forState:UIControlStateNormal]; - _exchangeButton.titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightRegular]; - _exchangeButton.layer.cornerRadius = 4; - _exchangeButton.clipsToBounds = YES; - [_exchangeButton addTarget:self action:@selector(exchangeBtnAction) forControlEvents:UIControlEventTouchUpInside]; - } - return _exchangeButton; -} - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyShopingRecordCell.h b/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyShopingRecordCell.h deleted file mode 100644 index a77ca04f..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyShopingRecordCell.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// XPTreasureFairyShopingRecordCell.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/27. -// - -#import - -@class TreasureFairyConvertRecordModel; -NS_ASSUME_NONNULL_BEGIN - -@interface XPTreasureFairyShopingRecordCell : UITableViewCell -///是否是召唤 -@property (nonatomic,assign) BOOL isSummon; -///时间 -@property (nonatomic,strong, readonly) UILabel *timeLabel; -///等级 -@property (nonatomic,strong, readonly) UILabel *levelLabel; -///奖励 -@property (nonatomic,strong, readonly) UILabel * prizeLabel; - -///记录模型 -@property (nonatomic, strong) TreasureFairyConvertRecordModel *recordModel; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyShopingRecordCell.m b/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyShopingRecordCell.m deleted file mode 100644 index 06755c93..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyShopingRecordCell.m +++ /dev/null @@ -1,158 +0,0 @@ -// -// XPTreasureFairyShopingRecordCell.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/27. -// - -#import "XPTreasureFairyShopingRecordCell.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" -#import "PLIntratemporalUtil.h" -///Model -#import "TreasureFairyConvertRecordModel.h" - -@interface XPTreasureFairyShopingRecordCell () -///容器 -@property (nonatomic,strong) UIStackView *stackView; -///时间 -@property (nonatomic,strong) UILabel *timeLabel; -///等级 -@property (nonatomic,strong) UILabel *levelLabel; -///奖励 -@property (nonatomic,strong) UILabel * prizeLabel; - -@end - -@implementation XPTreasureFairyShopingRecordCell - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.stackView]; - [self.stackView addArrangedSubview:self.timeLabel]; - [self.stackView addArrangedSubview:self.levelLabel]; - [self.stackView addArrangedSubview:self.prizeLabel]; -} - -- (void)initSubViewConstraints { - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.contentView); - }]; -} -- (NSString *)getDateWithHHMMSS:(NSString *)time { - NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; - formatter.timeZone = [NSTimeZone timeZoneWithName:@"Asia/Beijing"]; - [formatter setDateStyle:NSDateFormatterMediumStyle]; - [formatter setTimeStyle:NSDateFormatterShortStyle]; - [formatter setDateFormat:@"HH:mm:ss"]; - NSDate* date = [NSDate dateWithTimeIntervalSince1970:[time doubleValue]/ 1000.0]; - NSString* dateString = [formatter stringFromDate:date]; - return dateString; -} - -- (NSString *)getDateWithYYMM:(NSString *)time { - NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; - formatter.timeZone = [NSTimeZone timeZoneWithName:@"Asia/Beijing"]; - [formatter setDateStyle:NSDateFormatterMediumStyle]; - [formatter setTimeStyle:NSDateFormatterShortStyle]; - [formatter setDateFormat:@"yyyy:MM:dd"]; - NSDate* date = [NSDate dateWithTimeIntervalSince1970:[time doubleValue]/ 1000.0]; - NSString* dateString = [formatter stringFromDate:date]; - return dateString; -} - -#pragma mark - Getters And Setters - -- (void)setRecordModel:(TreasureFairyConvertRecordModel *)recordModel { - _recordModel = recordModel; - if (_recordModel != nil) { - NSString * time = [NSString stringWithFormat:@"%@\n%@", [self getDateWithYYMM:recordModel.createTime], [self getDateWithHHMMSS:recordModel.createTime]]; - self.timeLabel.text = time; - if (self.isSummon) { - NSString *level = @""; - if (recordModel.convertLevel == 1) { - level = @"初级召唤"; - }else if (recordModel.convertLevel == 2) { - level = @"史诗召唤"; - }else if (recordModel.convertLevel == 3) { - level = @"传说召唤"; - } - self.levelLabel.text = level; - self.prizeLabel.text = [NSString stringWithFormat:@"%@x%@",recordModel.rewardName, recordModel.rewardNum]; - }else{ - NSString *string1 = [NSString stringWithFormat:@"%@x%@\n",recordModel.rewardName, recordModel.rewardNum]; - NSString *string2 = [NSString stringWithFormat:@"%@钻", recordModel.rewardShowValue]; - NSString *string = [NSString stringWithFormat:@"%@%@",string1, string2]; - NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:string]; - NSRange range = NSMakeRange(string.length-string2.length, string2.length); - [attrStr addAttribute:NSForegroundColorAttributeName value:UIColor.whiteColor range:range]; - [attrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:11] range:range]; - self.prizeLabel.attributedText = attrStr; - } - } -} - -- (void)setIsSummon:(BOOL)isSummon { - _isSummon = isSummon; - if (_isSummon) { - self.levelLabel.hidden = NO; - } else { - self.levelLabel.hidden = YES; - } -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFillEqually; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 0; - } - return _stackView; -} - -- (UILabel *)timeLabel { - if (!_timeLabel) { - _timeLabel = [[UILabel alloc] init]; - _timeLabel.font = [UIFont systemFontOfSize:12]; - _timeLabel.textColor = [UIColor whiteColor]; - _timeLabel.numberOfLines = 0; - _timeLabel.textAlignment = NSTextAlignmentCenter; - } - return _timeLabel; -} - -- (UILabel *)levelLabel { - if (!_levelLabel) { - _levelLabel = [[UILabel alloc] init]; - _levelLabel.font = [UIFont systemFontOfSize:12]; - _levelLabel.textColor = [UIColor whiteColor]; - _levelLabel.textAlignment = NSTextAlignmentCenter; - } - return _levelLabel; -} - -- (UILabel *)prizeLabel { - if (!_prizeLabel) { - _prizeLabel = [[UILabel alloc] init]; - _prizeLabel.font = [UIFont systemFontOfSize:12]; - _prizeLabel.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#FEF8A8"]; - _prizeLabel.textAlignment = NSTextAlignmentCenter; - _prizeLabel.numberOfLines = 0; - } - return _prizeLabel; -} -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyStoreResultCell.h b/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyStoreResultCell.h deleted file mode 100644 index 5f052239..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyStoreResultCell.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// XPTreasureFairyStoreResultCell.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/20. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class TreasureFairyInfoModel, TreasureFairyBallModel; -@interface XPTreasureFairyStoreResultCell : UICollectionViewCell -///奖励信息 -@property (nonatomic,strong) TreasureFairyInfoModel *prizeInfo; - -///试炼精灵球信息 -@property (nonatomic,strong) TreasureFairyBallModel *ballInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyStoreResultCell.m b/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyStoreResultCell.m deleted file mode 100644 index 4caec584..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyStoreResultCell.m +++ /dev/null @@ -1,114 +0,0 @@ -// -// XPTreasureFairyStoreResultCell.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/20. -// - -#import "XPTreasureFairyStoreResultCell.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" - -#import "UIImage+Utils.h" -///Model -#import "TreasureFairyInfoModel.h" -#import "TreasureFairyBallInfoModel.h" - -@interface XPTreasureFairyStoreResultCell () -///背景 -@property (nonatomic,strong) UIImageView *backImageView; -///礼物名称 -@property (nonatomic,strong) NetIndicateRegard *giftImageView; -///名字 -@property (nonatomic,strong) UILabel *nameLabel; -@end - -@implementation XPTreasureFairyStoreResultCell - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - [self.contentView addSubview:self.backImageView]; - [self.contentView addSubview:self.nameLabel]; - [self.backImageView addSubview:self.giftImageView]; - -} - -- (void)initSubViewConstraints { - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.height.mas_equalTo(self.backImageView.mas_width); - }]; - - [self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.backImageView).inset(10); - }]; - - [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self); - make.top.mas_equalTo(self.backImageView.mas_bottom).offset(7); - }]; -} -#pragma mark - Getters And Setters -- (void)setPrizeInfo:(TreasureFairyInfoModel *)prizeInfo { - _prizeInfo = prizeInfo; - if (_prizeInfo) { - self.giftImageView.imageUrl = prizeInfo.rewardPicUrl; - self.nameLabel.text =[NSString stringWithFormat:@"%@x%ld", _prizeInfo.rewardName, _prizeInfo.rewardNum]; - } -} - - -- (void)setBallInfo:(TreasureFairyBallModel *)ballInfo{ - _ballInfo = ballInfo; - if (_ballInfo) { - self.giftImageView.imageUrl = _ballInfo.elfPicUrl; - self.nameLabel.text =[NSString stringWithFormat:@"%@", _ballInfo.elfName]; - } -} - -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor colorAboutHexBWSttr:@"#00B9AF"], [DJDKMIMOMColor colorAboutHexBWSttr:@"#006E7C"]] gradientType:GradientGenreTopToBottom imgSize:CGSizeMake(10, 10)]; - _backImageView.layer.masksToBounds = YES; - _backImageView.layer.borderWidth = 0.5; - _backImageView.layer.cornerRadius = 45; - _backImageView.layer.borderColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#F4FFC3"].CGColor; - } - return _backImageView; -} - -- (NetIndicateRegard *)giftImageView { - if (!_giftImageView) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _giftImageView = [[NetIndicateRegard alloc] initWithConfig:config]; - _giftImageView.layer.masksToBounds = YES; - _giftImageView.contentMode = UIViewContentModeScaleAspectFill; - } - return _giftImageView; -} - -- (UILabel *)nameLabel { - if (!_nameLabel) { - _nameLabel = [[UILabel alloc] init]; - _nameLabel.font = [UIFont systemFontOfSize:12]; - _nameLabel.textAlignment = NSTextAlignmentCenter; - _nameLabel.textColor = [UIColor whiteColor]; - } - return _nameLabel; -} -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyTrialsRecordCell.h b/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyTrialsRecordCell.h deleted file mode 100644 index 0da957b5..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyTrialsRecordCell.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// XPTreasureFairyTrialsRecordCell.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/27. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class TreasureFairyTrialsRecordModel; -@interface XPTreasureFairyTrialsRecordCell : UITableViewCell -@property (nonatomic,strong) TreasureFairyTrialsRecordModel *recordInfo; -///时间 -@property (nonatomic,strong, readonly) UILabel *timeLabel; -///等级 -@property (nonatomic,strong, readonly) UILabel *levelLabel; -///奖励 -@property (nonatomic,strong, readonly) UILabel * prizeLabel; -///投入的 -@property (nonatomic,strong, readonly) UILabel *trialsLabel; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyTrialsRecordCell.m b/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyTrialsRecordCell.m deleted file mode 100644 index 09c3388b..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/Cell/XPTreasureFairyTrialsRecordCell.m +++ /dev/null @@ -1,159 +0,0 @@ -// -// XPTreasureFairyTrialsRecordCell.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/27. -// - -#import "XPTreasureFairyTrialsRecordCell.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" -#import "PLIntratemporalUtil.h" -#import "NSArray+Safe.h" -///Model -#import "TreasureFairyTrialsRecordModel.h" - -@interface XPTreasureFairyTrialsRecordCell () -///容器 -@property (nonatomic,strong) UIStackView *stackView; -///时间 -@property (nonatomic,strong) UILabel *timeLabel; -///等级 -@property (nonatomic,strong) UILabel *levelLabel; -///投入的 -@property (nonatomic,strong) UILabel *trialsLabel; -///奖励 -@property (nonatomic,strong) UILabel * prizeLabel; - -@end - -@implementation XPTreasureFairyTrialsRecordCell - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = UITableViewCellSelectionStyleNone; - [self.contentView addSubview:self.stackView]; - [self.stackView addArrangedSubview:self.timeLabel]; - [self.stackView addArrangedSubview:self.levelLabel]; - [self.stackView addArrangedSubview:self.trialsLabel]; - [self.stackView addArrangedSubview:self.prizeLabel]; -} - -- (void)initSubViewConstraints { - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.contentView); - }]; -} -- (NSString *)getDateWithHHMMSS:(NSString *)time { - NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; - formatter.timeZone = [NSTimeZone timeZoneWithName:@"Asia/Beijing"]; - [formatter setDateStyle:NSDateFormatterMediumStyle]; - [formatter setTimeStyle:NSDateFormatterShortStyle]; - [formatter setDateFormat:@"HH:mm:ss"]; - NSDate* date = [NSDate dateWithTimeIntervalSince1970:[time doubleValue]/ 1000.0]; - NSString* dateString = [formatter stringFromDate:date]; - return dateString; -} - -- (NSString *)getDateWithYYMM:(NSString *)time { - NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; - formatter.timeZone = [NSTimeZone timeZoneWithName:@"Asia/Beijing"]; - [formatter setDateStyle:NSDateFormatterMediumStyle]; - [formatter setTimeStyle:NSDateFormatterShortStyle]; - [formatter setDateFormat:@"yyyy:MM:dd"]; - NSDate* date = [NSDate dateWithTimeIntervalSince1970:[time doubleValue]/ 1000.0]; - NSString* dateString = [formatter stringFromDate:date]; - return dateString; -} - -#pragma mark - Getters And Setters -- (void)setRecordInfo:(TreasureFairyTrialsRecordModel *)recordInfo { - _recordInfo = recordInfo; - if (_recordInfo) { - NSString * time = [NSString stringWithFormat:@"%@\n%@", [self getDateWithYYMM:_recordInfo.createTime], [self getDateWithHHMMSS:_recordInfo.createTime]]; - self.timeLabel.text = time; - if (_recordInfo.compoundLevel == TreasureFairyStoreType_Middle) { - self.levelLabel.text = @"传说试炼"; - } else { - self.levelLabel.text = @"史诗试炼"; - } - NSMutableString * trilasTitle = [[NSMutableString alloc] init]; - for (int i = 0; i < _recordInfo.expendList.count; i++) { - TreasureFairyBallModel * ballInfo = [_recordInfo.expendList secureGroalTowardsIndictowardsrix1:i]; - if (ballInfo.elfName.length > 0) { - [trilasTitle appendString:[NSString stringWithFormat:@"%@x%ld", ballInfo.elfName, ballInfo.elfNum]]; - } - - if (i <( _recordInfo.expendList.count -1)){ - [trilasTitle appendString:@"\n"]; - } - } - self.trialsLabel.text = trilasTitle; - self.prizeLabel.text = _recordInfo.elfName; - } -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFillEqually; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 0; - } - return _stackView; -} - -- (UILabel *)timeLabel { - if (!_timeLabel) { - _timeLabel = [[UILabel alloc] init]; - _timeLabel.font = [UIFont systemFontOfSize:12]; - _timeLabel.textColor = [UIColor whiteColor]; - _timeLabel.numberOfLines = 0; - _timeLabel.textAlignment = NSTextAlignmentCenter; - } - return _timeLabel; -} - -- (UILabel *)levelLabel { - if (!_levelLabel) { - _levelLabel = [[UILabel alloc] init]; - _levelLabel.font = [UIFont systemFontOfSize:12]; - _levelLabel.textColor = [UIColor whiteColor]; - _levelLabel.textAlignment = NSTextAlignmentCenter; - } - return _levelLabel; -} - -- (UILabel *)trialsLabel { - if (!_trialsLabel) { - _trialsLabel = [[UILabel alloc] init]; - _trialsLabel.font = [UIFont systemFontOfSize:12]; - _trialsLabel.textColor = [UIColor whiteColor]; - _trialsLabel.textAlignment = NSTextAlignmentCenter; - _trialsLabel.numberOfLines = 4; - } - return _trialsLabel; -} - -- (UILabel *)prizeLabel { - if (!_prizeLabel) { - _prizeLabel = [[UILabel alloc] init]; - _prizeLabel.font = [UIFont systemFontOfSize:12]; - _prizeLabel.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#FEF8A8"]; - _prizeLabel.textAlignment = NSTextAlignmentCenter; - } - return _prizeLabel; -} -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFailrySummonBallView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFailrySummonBallView.h deleted file mode 100644 index 48c1f27b..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFailrySummonBallView.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// XPTreasureFailrySummonBallView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/28. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class TreasureFairyBallModel; -@interface XPTreasureFailrySummonBallView : UIView -@property (nonatomic,strong) TreasureFairyBallModel *ballInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFailrySummonBallView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFailrySummonBallView.m deleted file mode 100644 index 6f6a518b..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFailrySummonBallView.m +++ /dev/null @@ -1,118 +0,0 @@ -// -// XPTreasureFailrySummonBallView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/28. -// 召唤的精灵球 - -#import "XPTreasureFailrySummonBallView.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" - -///Model -#import "TreasureFairyBallInfoModel.h" -@interface XPTreasureFailrySummonBallView () -///背景 -@property (nonatomic,strong) UIImageView *backImageView; -///精灵球 -@property (nonatomic,strong) NetIndicateRegard *ballImageView; -///名字 -@property (nonatomic,strong) UILabel *nameLabel; -///个数 -@property (nonatomic,strong) UILabel *countLabel; -@end - -@implementation XPTreasureFailrySummonBallView - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backImageView]; - [self addSubview:self.ballImageView]; - [self addSubview:self.nameLabel]; - [self addSubview:self.countLabel]; -} - -- (void)initSubViewConstraints { - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.ballImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(45, 45)); - make.top.mas_equalTo(self).offset(13); - make.centerX.mas_equalTo(self); - }]; - - [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.backImageView).offset(-1); - make.left.right.mas_equalTo(self.backImageView); - }]; - - [self.countLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(18, 18)); - make.left.mas_equalTo(self.backImageView).offset(61); - make.top.mas_equalTo(self.backImageView).offset(52); - }]; -} - -#pragma mark - Getters And Setters -- (void)setBallInfo:(TreasureFairyBallModel *)ballInfo { - _ballInfo =ballInfo; - if (_ballInfo) { - self.ballImageView.imageUrl = _ballInfo.elfPicUrl; - self.nameLabel.text = _ballInfo.elfName; - self.countLabel.text = [NSString stringWithFormat:@"%ld", _ballInfo.elfNum]; - } -} - -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_shoping_ball_bg"]; - } - return _backImageView; -} - -- (NetIndicateRegard *)ballImageView { - if (!_ballImageView) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _ballImageView = [[NetIndicateRegard alloc] initWithConfig:config]; - _ballImageView.contentMode = UIViewContentModeScaleAspectFill; - } - return _ballImageView; -} - -- (UILabel *)nameLabel { - if (!_nameLabel) { - _nameLabel = [[UILabel alloc] init]; - _nameLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; - _nameLabel.textColor = [UIColor whiteColor]; - _nameLabel.textAlignment = NSTextAlignmentCenter; - } - return _nameLabel; -} - -- (UILabel *)countLabel { - if (!_countLabel) { - _countLabel = [[UILabel alloc] init]; - _countLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - _countLabel.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#1F5764"]; - _countLabel.textAlignment = NSTextAlignmentCenter; - } - return _countLabel; -} - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFailyPrizeGiftView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFailyPrizeGiftView.h deleted file mode 100644 index 535c4f59..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFailyPrizeGiftView.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// XPTreasureFailyPrizeGiftView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/15. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface XPTreasureFailyPrizeGiftView : UIView -///显示的内容 -@property (nonatomic,copy) NSString *title; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFailyPrizeGiftView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFailyPrizeGiftView.m deleted file mode 100644 index e62f9a60..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFailyPrizeGiftView.m +++ /dev/null @@ -1,65 +0,0 @@ -// -// XPTreasureFailyPrizeGiftView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/15. -// - -#import "XPTreasureFailyPrizeGiftView.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" - -@interface XPTreasureFailyPrizeGiftView () - -///奖励的 -@property (nonatomic,strong) UIButton *prizeButton; - -@end - -@implementation XPTreasureFailyPrizeGiftView - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.prizeButton]; -} - -- (void)initSubViewConstraints { - [self.prizeButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self); - make.top.mas_equalTo(self).offset(6); - }]; -} - -#pragma mark - Getters And Setters -- (void)setTitle:(NSString *)title { - _title = title; - if (_title.length > 0) { - [self.prizeButton setTitle:title forState:UIControlStateNormal]; - } -} - -- (UIButton *)prizeButton { - if (!_prizeButton) { - UIButton * newAnimaView = [UIButton buttonWithType:UIButtonTypeCustom]; - newAnimaView.imageView.layer.masksToBounds = YES; - newAnimaView.imageView.contentMode = UIViewContentModeCenter; - [newAnimaView setBackgroundImage:[UIImage imageNamed:@"room_treasure_fairy_prize_bg"] forState:UIControlStateNormal]; - newAnimaView.titleLabel.font = [UIFont systemFontOfSize:12]; - [newAnimaView setTitleColor:[DJDKMIMOMColor colorAboutHexBWSttr:@"#FFE8AA"] forState:UIControlStateNormal]; - _prizeButton = newAnimaView; - } - return _prizeButton; -} - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFailyResultView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFailyResultView.h deleted file mode 100644 index a519493f..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFailyResultView.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// XPTreasureFailyResultView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/16. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface XPTreasureFailyResultView : UIView - -///数据 -@property (nonatomic,strong) NSArray *datasource; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFailyResultView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFailyResultView.m deleted file mode 100644 index 2d823f49..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFailyResultView.m +++ /dev/null @@ -1,156 +0,0 @@ -// -// XPTreasureFailyResultView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/16. -// - -#import "XPTreasureFailyResultView.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "MKJPopup.h" -#import "NSArray+Safe.h" -///View -#import "XPTreasureFailyResultGiftCell.h" - -@interface XPTreasureFailyResultView () -///顶部的View -@property (nonatomic,strong) UIView *bottomView; -///背景 -@property (nonatomic,strong) UIImageView *backImageView; -///只有一个cell的时候 -@property (nonatomic,strong) XPTreasureFailyResultGiftCell *oneGiftView; -///列表 -@property (nonatomic,strong) UICollectionView *collectionView; -@end - - -@implementation XPTreasureFailyResultView - - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backImageView]; - [self addSubview:self.bottomView]; - [self.backImageView addSubview:self.oneGiftView]; - [self.backImageView addSubview:self.collectionView]; -} - -- (void)initSubViewConstraints { - CGFloat kscale = 364.0 / 375.0; - self.frame = CGRectMake(0, 0, KScreenWidth, KScreenWidth * kscale + 89 * kScreenScale); - [self.bottomView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self); - make.top.mas_equalTo(self.backImageView.mas_bottom); - }]; - - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.height.mas_equalTo(KScreenWidth * kscale); - }]; - - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.backImageView).offset(87 * kScreenScale); - make.bottom.mas_equalTo(self.backImageView).offset((-182 + 89) * kScreenScale); - make.left.right.mas_equalTo(self.backImageView); - }]; - - [self.oneGiftView mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(115); - make.width.mas_equalTo(90); - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.backImageView).offset(129 * kScreenScale); - }]; -} - -#pragma mark - Event Response -- (void)dismissView { - [MKJPopup dismiss]; -} - -#pragma mark - UICollectionViewDelegate And UICollectionViewDataSoure -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - XPTreasureFailyResultGiftCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPTreasureFailyResultGiftCell class]) forIndexPath:indexPath]; - TreasureFairyInfoModel * info = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.prizeInfo = info; - return cell; -} - -#pragma mark - Getters And Setters -- (void)setDatasource:(NSArray *)datasource { - _datasource = datasource; - if (_datasource.count > 1) { - self.collectionView.hidden = NO; - self.oneGiftView.hidden = YES; - [self.collectionView reloadData]; - } else { - self.oneGiftView.hidden = NO; - self.collectionView.hidden = YES; - if (_datasource.count == 1) { - self.oneGiftView.prizeInfo = _datasource.firstObject; - } - } -} - -- (UICollectionView *)collectionView{ - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - CGFloat itemWidth = (KScreenWidth - 14 * 3 - 60) / 4.0; - layout.itemSize = CGSizeMake(itemWidth, itemWidth + 23); - layout.sectionInset = UIEdgeInsetsMake(0, 30, 0, 30); - layout.minimumLineSpacing = 11; - layout.minimumInteritemSpacing = 14; - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.backgroundColor = [UIColor clearColor]; - [_collectionView registerClass:[XPTreasureFailyResultGiftCell class] forCellWithReuseIdentifier:NSStringFromClass([XPTreasureFailyResultGiftCell class])]; - } - return _collectionView; -} - -- (UIView *)bottomView { - if (!_bottomView) { - _bottomView = [[UIView alloc] init]; - _bottomView.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissView)]; - [_bottomView addGestureRecognizer:tap]; - } - return _bottomView; -} - -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_result_bg"]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissView)]; - [_backImageView addGestureRecognizer:tap]; - } - return _backImageView; -} - -- (XPTreasureFailyResultGiftCell *)oneGiftView { - if (!_oneGiftView) { - _oneGiftView = [[XPTreasureFailyResultGiftCell alloc] init]; - } - return _oneGiftView; -} - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyBallContentView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyBallContentView.h deleted file mode 100644 index ec11d035..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyBallContentView.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// XPTreasureFairyBallContentView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/22. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class XPTreasureFairyBallContentView, TreasureFairyBallModel; -@protocol XPTreasureFairyBallContentViewDelegate -///索取 -- (void)xPTreasureFairyBallContentView:(XPTreasureFairyBallContentView *)view askInfo:(TreasureFairyBallModel *)askInfo; -///赠送 -- (void)xPTreasureFairyBallContentView:(XPTreasureFairyBallContentView *)view sendInfo:(TreasureFairyBallModel *)sendInfo; - -@end -@interface XPTreasureFairyBallContentView : UIView -///数据 -@property (nonatomic,strong) NSArray *datasource; -///代理 -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyBallContentView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyBallContentView.m deleted file mode 100644 index 9905d566..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyBallContentView.m +++ /dev/null @@ -1,155 +0,0 @@ -// -// XPTreasureFairyBallContentView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/22. -// - -#import "XPTreasureFairyBallContentView.h" -///Third -#import -///Tool -#import "NSArray+Safe.h" -///View -#import "XPTreasureFairyBallView.h" - -@interface XPTreasureFairyBallContentView () -///第一个 -@property (nonatomic,strong) XPTreasureFairyBallView *firstView; -///第二个 -@property (nonatomic,strong) XPTreasureFairyBallView *secondView; -///第三个 -@property (nonatomic,strong) XPTreasureFairyBallView *thirdView; -///第四个 -@property (nonatomic,strong) XPTreasureFairyBallView *fourthView; -///第五个 -@property (nonatomic,strong) XPTreasureFairyBallView *fifthView; -@property (nonatomic,strong) NSArray *viewList; -@end - -@implementation XPTreasureFairyBallContentView - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.firstView]; - [self addSubview:self.secondView]; - [self addSubview:self.thirdView]; - [self addSubview:self.fourthView]; - [self addSubview:self.fifthView]; - - self.viewList = @[self.firstView, self.secondView, self.thirdView, self.fourthView, self.fifthView]; -} - -- (void)initSubViewConstraints { - - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.fifthView.mas_bottom); - }]; - - [self.secondView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(115, 162)); - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self); - }]; - - [self.firstView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.secondView); - make.right.mas_equalTo(self.secondView.mas_left).offset(-4); - }]; - - [self.thirdView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.secondView); - make.left.mas_equalTo(self.secondView.mas_right).offset(4); - }]; - - [self.fourthView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(self.secondView); - make.top.mas_equalTo(self.firstView.mas_bottom).offset(10); - make.right.mas_equalTo(self.mas_centerX).offset(-20); - }]; - - [self.fifthView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.fourthView); - make.left.mas_equalTo(self.mas_centerX).offset(20); - }]; -} - -#pragma mark - XPTreasureFairyBallViewDelegate -- (void)xPTreasureFairyBallView:(XPTreasureFairyBallView *)view askBallInfo:(TreasureFairyBallModel *)info { - if (self.delegate && [self.delegate respondsToSelector:@selector(xPTreasureFairyBallContentView:askInfo:)]) { - [self.delegate xPTreasureFairyBallContentView:self askInfo:info]; - } -} - -- (void)xPTreasureFairyBallView:(XPTreasureFairyBallView *)view sendBallInfo:(TreasureFairyBallModel *)info { - if (self.delegate && [self.delegate respondsToSelector:@selector(xPTreasureFairyBallContentView:sendInfo:)]) { - [self.delegate xPTreasureFairyBallContentView:self sendInfo:info]; - } -} - - -#pragma mark - Getters And Setters -- (void)setDatasource:(NSArray *)datasource { - _datasource = datasource; - if (_datasource.count > 0) { - for (int i = 0; i < _datasource.count; i++) { - TreasureFairyBallModel * ballInfo = [_datasource secureGroalTowardsIndictowardsrix1:i]; - if (i < self.viewList.count) { - XPTreasureFairyBallView * view = [self.viewList secureGroalTowardsIndictowardsrix1:i]; - view.ballInfo = ballInfo; - } - } - } -} -- (XPTreasureFairyBallView *)firstView { - if(!_firstView) { - _firstView = [[XPTreasureFairyBallView alloc] init]; - _firstView.delegate = self; - } - return _firstView; -} - -- (XPTreasureFairyBallView *)secondView { - if(!_secondView) { - _secondView = [[XPTreasureFairyBallView alloc] init]; - _secondView.delegate = self; - } - return _secondView; -} - - -- (XPTreasureFairyBallView *)thirdView { - if(!_thirdView) { - _thirdView = [[XPTreasureFairyBallView alloc] init]; - _thirdView.delegate = self; - } - return _thirdView; -} - -- (XPTreasureFairyBallView *)fourthView { - if(!_fourthView) { - _fourthView = [[XPTreasureFairyBallView alloc] init]; - _fourthView.delegate = self; - } - return _fourthView; -} - -- (XPTreasureFairyBallView *)fifthView { - if(!_fifthView) { - _fifthView = [[XPTreasureFairyBallView alloc] init]; - _fifthView.delegate = self; - } - return _fifthView; -} - - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyBallView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyBallView.h deleted file mode 100644 index 2495c824..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyBallView.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// XPTreasureFairyBallView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/22. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class TreasureFairyBallModel, XPTreasureFairyBallView; -@protocol XPTreasureFairyBallViewDelegate -///索要 -- (void)xPTreasureFairyBallView:(XPTreasureFairyBallView *)view askBallInfo:(TreasureFairyBallModel *)info; -///赠送 -- (void)xPTreasureFairyBallView:(XPTreasureFairyBallView *)view sendBallInfo:(TreasureFairyBallModel *)info; -@end - -@interface XPTreasureFairyBallView : UIView -@property (nonatomic,strong) TreasureFairyBallModel *ballInfo; -///代理 -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyBallView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyBallView.m deleted file mode 100644 index aedad5c8..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyBallView.m +++ /dev/null @@ -1,296 +0,0 @@ -// -// XPTreasureFairyBallView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/22. -// - -#import "XPTreasureFairyBallView.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" - -///Model -#import "TreasureFairyBallInfoModel.h" -@interface XPTreasureFairyBallView () - -///背景 -@property (nonatomic,strong) UIImageView *backImageView; -///精灵名称 -@property (nonatomic,strong) UILabel *nameLabel; -///数量 -@property (nonatomic,strong) UILabel *numberLabel; -///精灵球 -@property (nonatomic,strong) NetIndicateRegard *ballImageView; -///容器 -@property (nonatomic,strong) UIStackView *stackView; -///没有获得 -@property (nonatomic,strong) UIButton *notGetButton; -///赠送 -@property (nonatomic,strong) UIButton *sendButton; -///索要 -@property (nonatomic,strong) UIButton *askButton; -///覆盖的 -@property (nonatomic,strong) UIImageView *coverImageView; -@end - -@implementation XPTreasureFairyBallView - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backImageView]; - [self addSubview:self.nameLabel]; - [self addSubview:self.ballImageView]; - [self addSubview:self.coverImageView]; - [self addSubview:self.numberLabel]; - [self addSubview:self.notGetButton]; - [self addSubview:self.stackView]; - - [self.stackView addArrangedSubview:self.sendButton]; - [self.stackView addArrangedSubview:self.askButton]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(flipRecognizer)]; - [self addGestureRecognizer:tap]; -} - -- (void)initSubViewConstraints { - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.coverImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.backImageView).offset(30); - }]; - - [self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.nameLabel.mas_bottom).offset(8); - }]; - - [self.ballImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(76, 76)); - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.backImageView).offset(74); - }]; - - [self.notGetButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(54, 54)); - make.top.mas_equalTo(self.backImageView).offset(60); - make.centerX.mas_equalTo(self.backImageView); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.notGetButton); - make.centerX.mas_equalTo(self.backImageView); - }]; - - [self.askButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(54, 54)); - }]; - - [self.sendButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(54, 54)); - }]; -} - -- (void)delayAction { - TreasureFairyBallModel * info = self.ballInfo; - info.isFlip = !info.isFlip; - self.ballInfo = info; -} - -#pragma mark - Event Response -- (void)flipRecognizer { - self.stackView.hidden = YES; - self.notGetButton.hidden = YES; - [self performSelector:@selector(delayAction) withObject:self afterDelay:0.5]; - [UIView beginAnimations:@"aa" context:nil]; - [UIView setAnimationDuration:0.5]; - [UIView setAnimationCurve:UIViewAnimationCurveLinear]; - [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self cache:NO]; - [UIView commitAnimations]; -} - -- (void)sendButtonAction:(UIButton *)sener { - if (self.delegate && [self.delegate respondsToSelector:@selector(xPTreasureFairyBallView:sendBallInfo:)]) { - [self.delegate xPTreasureFairyBallView:self sendBallInfo:self.ballInfo]; - } -} - -- (void)askButtonAction:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(xPTreasureFairyBallView:askBallInfo:)]) { - [self.delegate xPTreasureFairyBallView:self askBallInfo:self.ballInfo]; - } -} - -#pragma mark - Getters And Setters -- (void)setBallInfo:(TreasureFairyBallModel *)ballInfo { - _ballInfo = ballInfo; - if (_ballInfo) { - self.nameLabel.text = _ballInfo.elfName; - self.ballImageView.imageUrl = _ballInfo.elfPicUrl; - NSString * backImageName; - NSString * coverImageName; - - if (_ballInfo.elfLevel == TreasureFairyStoreType_High) { - backImageName = @"room_treasure_fairy_my_high_ball_bg"; - coverImageName = @"room_treasure_fairy_my_high_ball_cover"; - self.nameLabel.textColor = [UIColor whiteColor]; - self.numberLabel.textColor = [UIColor whiteColor]; - } else if (_ballInfo.elfLevel == TreasureFairyStoreType_Middle) { - backImageName = @"room_treasure_fairy_my_middle_ball_bg"; - coverImageName = @"room_treasure_fairy_my_middle_ball_cover"; - self.nameLabel.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#FFFED6"]; - self.numberLabel.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#59FDFF"]; - } else { - backImageName = @"room_treasure_fairy_my_low_ball_bg"; - coverImageName = @"room_treasure_fairy_my_low_ball_cover"; - self.nameLabel.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#A4FFFC"]; - self.numberLabel.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#FFE8AA"]; - } - - if (_ballInfo.elfNum <=0 || _ballInfo.isFlip) { - self.coverImageView.hidden = NO; - } else { - self.coverImageView.hidden = YES; - } - - if (_ballInfo.elfNum > 0) {///已获得 - self.numberLabel.hidden = NO; - self.notGetButton.hidden = YES; - self.numberLabel.text = [NSString stringWithFormat:@"x%ld", _ballInfo.elfNum]; - } else {///未获得 - self.numberLabel.hidden = YES; - if (_ballInfo.isFlip) { - self.notGetButton.hidden = YES; - } else { - self.notGetButton.hidden = NO; - } - } - - if (_ballInfo.isFlip) { - self.stackView.hidden = NO; - if (_ballInfo.elfNum > 0) { - self.sendButton.hidden = NO; - } else { - self.sendButton.hidden = YES; - } - } else { - self.stackView.hidden = YES; - } - - if (backImageName.length > 0) { - self.backImageView.image = [UIImage imageNamed:backImageName]; - } - - if (coverImageName.length > 0) { - self.coverImageView.image = [UIImage imageNamed:coverImageName]; - } - } -} - -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_ball_bg"]; - } - return _backImageView; -} -- (UILabel *)nameLabel { - if (!_nameLabel) { - _nameLabel = [[UILabel alloc] init]; - _nameLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - _nameLabel.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#A4FFFC"]; - _nameLabel.textAlignment = NSTextAlignmentCenter; - } - return _nameLabel; -} - -- (UILabel *)numberLabel { - if (!_numberLabel) { - _numberLabel = [[UILabel alloc] init]; - _numberLabel.font = [UIFont systemFontOfSize:12]; - _numberLabel.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#59FDFF"]; - _numberLabel.textAlignment = NSTextAlignmentCenter; - } - return _numberLabel; -} - -- (UIImageView *)coverImageView { - if (!_coverImageView) { - _coverImageView = [[UIImageView alloc] init]; - _coverImageView.userInteractionEnabled = YES; - } - return _coverImageView; -} - -- (NetIndicateRegard *)ballImageView { - if (!_ballImageView) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _ballImageView = [[NetIndicateRegard alloc] initWithConfig:config]; - _ballImageView.layer.masksToBounds = YES; - _ballImageView.contentMode = UIViewContentModeScaleAspectFill; - } - return _ballImageView; -} - -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 10; - _stackView.hidden = YES; - } - return _stackView; -} - -- (UIButton *)notGetButton { - if (!_notGetButton) { - _notGetButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_notGetButton setImage:[UIImage imageNamed:@"room_treasure_fairy_ball_not_get"] forState:UIControlStateNormal]; - [_notGetButton setImage:[UIImage imageNamed:@"room_treasure_fairy_ball_not_get"] forState:UIControlStateSelected]; - _notGetButton.hidden = YES; - _notGetButton.userInteractionEnabled = NO; - } - return _notGetButton; -} - -- (UIButton *)sendButton { - if (!_sendButton) { - _sendButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_sendButton setImage:[UIImage imageNamed:@"room_treasure_fairy_ball_send"] forState:UIControlStateNormal]; - [_sendButton setImage:[UIImage imageNamed:@"room_treasure_fairy_ball_send"] forState:UIControlStateSelected]; - [_sendButton addTarget:self action:@selector(sendButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _sendButton; -} - -- (UIButton *)askButton { - if (!_askButton) { - _askButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_askButton setImage:[UIImage imageNamed:@"room_treasure_fairy_ball_ask"] forState:UIControlStateNormal]; - [_askButton setImage:[UIImage imageNamed:@"room_treasure_fairy_ball_ask"] forState:UIControlStateSelected]; - [_askButton addTarget:self action:@selector(askButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _askButton; -} - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyDrawSubView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyDrawSubView.h deleted file mode 100644 index eab9ac1d..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyDrawSubView.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// XPTreasureFairyDrawSubView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/15. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class TreasureFairyInfoModel; -@interface XPTreasureFairyDrawSubView : UIView -@property (nonatomic,strong) TreasureFairyInfoModel *info; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyDrawSubView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyDrawSubView.m deleted file mode 100644 index 81459868..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyDrawSubView.m +++ /dev/null @@ -1,100 +0,0 @@ -// -// XPTreasureFairyDrawSubView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/15. -// - -#import "XPTreasureFairyDrawSubView.h" -///Third -#import -///Tool - -#import "DJDKMIMOMColor.h" -///Model -#import "TreasureFairyInfoModel.h" -@interface XPTreasureFairyDrawSubView () -///背景 -@property (nonatomic,strong) UIImageView *backImageView; -///精灵 -@property (nonatomic,strong) NetIndicateRegard *fairyView; -///礼物名称 -@property (nonatomic,strong) UILabel *nameLabel; -@end - -@implementation XPTreasureFairyDrawSubView - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backImageView]; - [self addSubview:self.fairyView]; - [self addSubview:self.nameLabel]; -} - -- (void)initSubViewConstraints { - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.fairyView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(40, 46)); - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.backImageView).offset(8); - }]; - - [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.fairyView.mas_bottom).offset(2); - }]; -} - -#pragma mark - Getters And Setters -- (void)setInfo:(TreasureFairyInfoModel *)info { - _info = info; - if (_info) { - self.fairyView.imageUrl = _info.rewardPicUrl; - self.nameLabel.text = _info.rewardName; - } -} - -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_draw_bg"]; - } - return _backImageView; -} - -- (NetIndicateRegard *)fairyView { - if (!_fairyView) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _fairyView = [[NetIndicateRegard alloc] initWithConfig:config]; - _fairyView.layer.masksToBounds = YES; - _fairyView.contentMode = UIViewContentModeScaleAspectFit; - } - return _fairyView; -} - -- (UILabel *)nameLabel { - if (!_nameLabel) { - _nameLabel = [[UILabel alloc] init]; - _nameLabel.font = [UIFont systemFontOfSize:12]; - _nameLabel.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#FFE8AA"]; - _nameLabel.textAlignment = NSTextAlignmentCenter; - _nameLabel.text = @"天空之城"; - } - return _nameLabel; -} - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyDrawView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyDrawView.h deleted file mode 100644 index d3736948..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyDrawView.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// XPTreasureFairyDrewView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/15. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class TreasureFailyKeyInfoModel, TreasureFairyInfoModel; - -typedef void(^AnimationCompletion)(BOOL finish); -@interface XPTreasureFairyDrawView : UIView -@property (nonatomic,strong) TreasureFailyKeyInfoModel *keyInfo; -///礼物的列表 -@property (nonatomic,strong) NSArray *failyList; - -- (void)startTimerCompletion:(AnimationCompletion)comletion; -///停止动画 -- (void)stopAnimation; - -///奖励的信息(最高奖励 动画要停止的位置) -@property (nonatomic,strong) TreasureFairyInfoModel *rewardInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyDrawView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyDrawView.m deleted file mode 100644 index d9ce3128..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyDrawView.m +++ /dev/null @@ -1,492 +0,0 @@ -// -// XPTreasureFairyDrewView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/15. -// - -#import "XPTreasureFairyDrawView.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" -#import "YUMIWeakIntratemporalr.h" -#import "NSArray+Safe.h" -#import "YUMIMacroUitls.h" -///Model -#import "TreasureFairyInfoModel.h" -#import "TreasureFailyKeyInfoModel.h" -///View -#import "XPTreasureFairyDrawSubView.h" - -@interface XPTreasureFairyDrawView () -{ - NSTimer * timer; -} -///动画的 -@property (nonatomic,strong) UIImageView *coverImageView; -///第一个 -@property (nonatomic,strong) XPTreasureFairyDrawSubView *firstView; -///第二个 -@property (nonatomic,strong) XPTreasureFairyDrawSubView *secondView; -///第三个 -@property (nonatomic,strong) XPTreasureFairyDrawSubView *thirdView; -///第四个 -@property (nonatomic,strong) XPTreasureFairyDrawSubView *fourthView; -///第五个 -@property (nonatomic,strong) XPTreasureFairyDrawSubView *fifView; -///第六个 -@property (nonatomic,strong) XPTreasureFairyDrawSubView *sixView; -///第七个 -@property (nonatomic,strong) XPTreasureFairyDrawSubView *sevenView; -///第八个 -@property (nonatomic,strong) XPTreasureFairyDrawSubView *eightView; -///第9个 -@property (nonatomic,strong) XPTreasureFairyDrawSubView *nineView; -///第10个 -@property (nonatomic,strong) XPTreasureFairyDrawSubView *tenView; -///第11个 -@property (nonatomic,strong) XPTreasureFairyDrawSubView *elevenView; -///第12个 -@property (nonatomic,strong) XPTreasureFairyDrawSubView *twelveView; -///存放view的数组 -@property (nonatomic,strong) NSArray *viewList; -///当前幸运值 -@property (nonatomic,strong) UIButton *currentValueButton; -///背景 -@property (nonatomic,strong) UIImageView *diamondBGView; -///钻石 -@property (nonatomic,strong) UIImageView *diamondImageView; -///进度 -@property (nonatomic,strong) UIImageView *coverDiamondView; -///额外获得 -@property (nonatomic,strong) UILabel *limitLabel; -///当前的index -@property (nonatomic,assign) NSInteger currentIndex; -///循环的次数 -@property (nonatomic,assign) NSInteger cycleCount; -///中奖的下标 -@property (nonatomic,assign) NSInteger rewardIndex; -@property (nonatomic,assign) NSInteger rewardNumber; -///结束了 -@property (nonatomic,copy) AnimationCompletion finishCompletion; -@end - - -@implementation XPTreasureFairyDrawView - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Public Method -- (void)startTimerCompletion:(AnimationCompletion)comletion { - self.finishCompletion = comletion; - if (timer == nil) { - timer = [YUMIWeakIntratemporalr scheduledTimerWithTimeInterval:0.07 target:self selector:@selector(run) userInfo:nil repeats:YES]; - [timer fire]; - } -} - -- (void)stopAnimation { - XPTreasureFairyDrawSubView * view = [self.viewList secureGroalTowardsIndictowardsrix1:self.rewardNumber]; - if (view) { - [self.coverImageView mas_remakeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(75 * kScreenScale, 81 * kScreenScale)); - make.center.equalTo(view); - }]; - } - [self stopTimer]; -} - -- (void)stopTimer { - [timer invalidate]; - timer = nil; - self.cycleCount = 0; - self.finishCompletion(YES); -} - -- (void)run { - self.currentIndex ++; - self.cycleCount ++; - ///拿到需要停止的奖品的位置 - if (self.cycleCount == (12 * 2 + self.rewardIndex)) { - [self stopTimer]; - XPTreasureFairyDrawSubView * view = [self.viewList secureGroalTowardsIndictowardsrix1:self.rewardNumber]; - if (view) { - [self.coverImageView mas_remakeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(75 * kScreenScale, 81 * kScreenScale)); - make.center.equalTo(view); - }]; - } - return; - } - - if (self.currentIndex >= self.viewList.count) { - self.currentIndex = 0; - } - XPTreasureFairyDrawSubView * view = [self.viewList secureGroalTowardsIndictowardsrix1:self.currentIndex]; - if (view) { - [self.coverImageView mas_remakeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(75 * kScreenScale, 81 * kScreenScale)); - make.center.equalTo(view); - }]; - } -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.firstView]; - [self addSubview:self.secondView]; - [self addSubview:self.thirdView]; - [self addSubview:self.fourthView]; - [self addSubview:self.fifView]; - [self addSubview:self.sixView]; - [self addSubview:self.sevenView]; - [self addSubview:self.eightView]; - [self addSubview:self.nineView]; - [self addSubview:self.tenView]; - [self addSubview:self.elevenView]; - [self addSubview:self.twelveView]; - [self addSubview:self.diamondBGView]; - [self addSubview:self.coverImageView]; - [self addSubview:self.currentValueButton]; - [self addSubview:self.coverDiamondView]; - [self addSubview:self.diamondImageView]; - [self addSubview:self.limitLabel]; - self.viewList = @[self.firstView, self.secondView, self.thirdView, self.fourthView, self.fifView, self.sixView, self.sevenView, self.eightView, self.nineView, self.tenView, self.elevenView, self.twelveView]; -} - -- (void)initSubViewConstraints { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.sevenView.mas_bottom); - }]; - - [self.coverImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(75 * kScreenScale, 81 * kScreenScale)); - make.center.equalTo(self.firstView); - }]; - - [self.firstView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(75 * kScreenScale, 75 * kScreenScale)); - make.left.mas_equalTo(self).offset(0); - make.top.mas_equalTo(self).offset(0); - }]; - - CGFloat margin = 15; - CGFloat topMargin = 11; - - [self.secondView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.equalTo(self.firstView); - make.left.mas_equalTo(self.firstView.mas_right).offset(margin); - }]; - - [self.thirdView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.equalTo(self.firstView); - make.left.mas_equalTo(self.secondView.mas_right).offset(margin); - }]; - - [self.fourthView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.equalTo(self.firstView); - make.left.mas_equalTo(self.thirdView.mas_right).offset(margin); - }]; - - [self.fifView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.equalTo(self.firstView); - make.left.mas_equalTo(self.fourthView); - make.top.mas_equalTo(self.fourthView.mas_bottom).offset(topMargin); - }]; - - [self.sixView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerX.equalTo(self.fifView); - make.top.mas_equalTo(self.fifView.mas_bottom).offset(topMargin); - }]; - - [self.sevenView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerX.equalTo(self.fifView); - make.top.mas_equalTo(self.sixView.mas_bottom).offset(topMargin); - }]; - - [self.eightView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.equalTo(self.sevenView); - make.right.mas_equalTo(self.sevenView.mas_left).offset(-margin); - }]; - - [self.nineView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.equalTo(self.sevenView); - make.right.mas_equalTo(self.eightView.mas_left).offset(-margin); - }]; - - [self.tenView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.equalTo(self.sevenView); - make.right.mas_equalTo(self.nineView.mas_left).offset(-margin); - }]; - - [self.elevenView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerX.equalTo(self.tenView); - make.bottom.mas_equalTo(self.tenView.mas_top).offset(-topMargin); - }]; - - [self.twelveView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerX.equalTo(self.tenView); - make.bottom.mas_equalTo(self.elevenView.mas_top).offset(-topMargin); - }]; - - [self.currentValueButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(106, 28)); - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self.firstView.mas_bottom).offset(10); - }]; - - [self.diamondBGView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(120, 125)); - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self.currentValueButton.mas_bottom).offset(5); - }]; - - [self.coverDiamondView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(120, 108)); - make.centerX.centerY.mas_equalTo(self.diamondBGView); - }]; - - [self.diamondImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.coverDiamondView); - make.top.mas_equalTo(self.coverDiamondView).offset(108); - }]; - - [self.limitLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self.diamondBGView.mas_bottom).offset(2); - }]; -} - -- (void)createExtraGetFairyAtrribute:(NSInteger)value { - NSString * valueStr = [NSString stringWithFormat:@"%ld", value]; - NSString * title = [NSString stringWithFormat:@"幸运值达到%@后,下次夺宝获赠精灵球", valueStr]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:10], NSForegroundColorAttributeName:[DJDKMIMOMColor colorAboutHexBWSttr:@"#59FDFF"]}]; - [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor colorAboutHexBWSttr:@"#FFE8AA"] range:[title rangeOfString:valueStr]]; - [attribute addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12 weight:UIFontWeightMedium] range:[title rangeOfString:valueStr]]; - self.limitLabel.attributedText = attribute; - self.limitLabel.textAlignment = NSTextAlignmentCenter; -} - -- (void)createCurrentFairyValueAtrribute:(NSInteger)value { - NSString * valueStr = [NSString stringWithFormat:@"%ld", value]; - NSString * title = [NSString stringWithFormat:@"当前幸运值: %@", valueStr]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:10], NSForegroundColorAttributeName:[UIColor whiteColor]}]; - [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor colorAboutHexBWSttr:@"#FFE8AA"] range:[title rangeOfString:valueStr]]; - [attribute addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12 weight:UIFontWeightMedium] range:[title rangeOfString:valueStr]]; - [self.currentValueButton setAttributedTitle:attribute forState:UIControlStateNormal]; -} - -#pragma mark - Getters And Setters -- (void)setKeyInfo:(TreasureFailyKeyInfoModel *)keyInfo { - _keyInfo = keyInfo; - if (_keyInfo) { - [self createExtraGetFairyAtrribute:_keyInfo.needLuckyNum]; - [self createCurrentFairyValueAtrribute:_keyInfo.luckyNum]; - CGFloat kscale = 0; - if (_keyInfo.needLuckyNum > 0) { - kscale = (CGFloat)_keyInfo.luckyNum / (CGFloat)_keyInfo.needLuckyNum; - if (kscale > 1) { - kscale = 1; - } - } - [self.diamondImageView mas_updateConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.coverDiamondView).offset(108 *(1 - kscale)); - }]; - } -} - -- (void)setFailyList:(NSArray *)failyList { - _failyList = failyList; - if (_failyList.count > 0) { - for (int i = 0; i < _failyList.count; i++) { - TreasureFairyInfoModel * info = [_failyList secureGroalTowardsIndictowardsrix1:i]; - if (i < self.viewList.count) { - XPTreasureFairyDrawSubView * view = [self.viewList secureGroalTowardsIndictowardsrix1:i]; - view.info = info; - } - } - } -} - -- (void)setRewardInfo:(TreasureFairyInfoModel *)rewardInfo { - _rewardInfo = rewardInfo; - if (_rewardInfo) { - for (int i = 0; i < self.failyList.count; i++) { - TreasureFairyInfoModel * info = [_failyList secureGroalTowardsIndictowardsrix1:i]; - if (info.itemIndex == _rewardInfo.itemIndex) { - self.rewardNumber = i; - if (i > self.currentIndex) { - self.rewardIndex = (i - self.currentIndex); - } else { - self.rewardIndex = (12 - self.currentIndex) + i +1; - } - break; - } - } - } -} - -- (XPTreasureFairyDrawSubView *)firstView { - if (!_firstView) { - _firstView = [[XPTreasureFairyDrawSubView alloc] init]; - _firstView.tag = 1001; - } - return _firstView; -} - -- (XPTreasureFairyDrawSubView *)secondView { - if (!_secondView) { - _secondView = [[XPTreasureFairyDrawSubView alloc] init]; - _secondView.tag = 1002; - } - return _secondView; -} - - -- (XPTreasureFairyDrawSubView *)thirdView { - if (!_thirdView) { - _thirdView = [[XPTreasureFairyDrawSubView alloc] init]; - _thirdView.tag = 1003; - } - return _thirdView; -} - -- (XPTreasureFairyDrawSubView *)fourthView { - if (!_fourthView) { - _fourthView = [[XPTreasureFairyDrawSubView alloc] init]; - _fourthView.tag = 1004; - } - return _fourthView; -} - -- (XPTreasureFairyDrawSubView *)fifView { - if (!_fifView) { - _fifView = [[XPTreasureFairyDrawSubView alloc] init]; - _fifView.tag = 1005; - } - return _fifView; -} - -- (XPTreasureFairyDrawSubView *)sixView { - if (!_sixView) { - _sixView = [[XPTreasureFairyDrawSubView alloc] init]; - _sixView.tag = 1006; - } - return _sixView; -} - -- (XPTreasureFairyDrawSubView *)sevenView { - if (!_sevenView) { - _sevenView = [[XPTreasureFairyDrawSubView alloc] init]; - _sevenView.tag = 1007; - } - return _sevenView; -} - -- (XPTreasureFairyDrawSubView *)eightView { - if (!_eightView) { - _eightView = [[XPTreasureFairyDrawSubView alloc] init]; - _eightView.tag = 1008; - } - return _eightView; -} - -- (XPTreasureFairyDrawSubView *)nineView { - if (!_nineView) { - _nineView = [[XPTreasureFairyDrawSubView alloc] init]; - _nineView.tag = 1009; - } - return _nineView; -} - -- (XPTreasureFairyDrawSubView *)tenView { - if (!_tenView) { - _tenView = [[XPTreasureFairyDrawSubView alloc] init]; - _tenView.tag = 1001; - } - return _tenView; -} - - -- (XPTreasureFairyDrawSubView *)elevenView { - if (!_elevenView) { - _elevenView = [[XPTreasureFairyDrawSubView alloc] init]; - _elevenView.tag = 1011; - } - return _elevenView; -} - -- (XPTreasureFairyDrawSubView *)twelveView { - if (!_twelveView) { - _twelveView = [[XPTreasureFairyDrawSubView alloc] init]; - _twelveView.tag = 1001; - } - return _twelveView; -} - -- (UIImageView *)coverImageView { - if (!_coverImageView) { - _coverImageView = [[UIImageView alloc] init]; - _coverImageView.userInteractionEnabled = YES; - _coverImageView.image = [UIImage imageNamed:@"room_treasure_fairy_draw_cover"]; - } - return _coverImageView; -} - -- (UIButton *)currentValueButton { - if (!_currentValueButton) { - _currentValueButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_currentValueButton setBackgroundImage:[UIImage imageNamed:@"room_treasure_fairy_draw_lucky_bg"] forState:UIControlStateNormal]; - } - return _currentValueButton; -} - -- (UIImageView *)diamondImageView { - if (!_diamondImageView) { - _diamondImageView = [[UIImageView alloc] init]; - _diamondImageView.userInteractionEnabled = YES; - _diamondImageView.image = [UIImage imageNamed:@"room_treasure_fairy_draw_diamond"]; - _diamondImageView.layer.masksToBounds = YES; - _diamondBGView.layer.masksToBounds = YES; - _diamondImageView.contentMode = UIViewContentModeBottom; - } - return _diamondImageView; -} - -- (UIImageView *)diamondBGView { - if (!_diamondBGView) { - _diamondBGView = [[UIImageView alloc] init]; - _diamondBGView.userInteractionEnabled = YES; - _diamondBGView.image = [UIImage imageNamed:@"room_treasure_fairy_draw_diamond_bg"]; - _diamondBGView.layer.masksToBounds = YES; - } - return _diamondBGView; -} - -- (UIImageView *)coverDiamondView { - if (!_coverDiamondView) { - _coverDiamondView = [[UIImageView alloc] init]; - _coverDiamondView.userInteractionEnabled = YES; - _coverDiamondView.image = [UIImage imageNamed:@"room_treasure_fairy_draw_diamond_cover"]; - } - return _coverDiamondView; -} - -- (UILabel *)limitLabel { - if (!_limitLabel) { - _limitLabel = [[UILabel alloc] init]; - } - return _limitLabel; -} - - - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyExchangeView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyExchangeView.h deleted file mode 100644 index f48e2cb7..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyExchangeView.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// XPTreasureFairyExchangeView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/27. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class TreasureFairyUserInfoModel; -@interface XPTreasureFairyExchangeView : UIView -///房主的uid -@property (nonatomic,strong) NSString *roomUid; -///用户信息 -@property (nonatomic,strong) TreasureFairyUserInfoModel *userInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyExchangeView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyExchangeView.m deleted file mode 100644 index 2c7d27a8..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyExchangeView.m +++ /dev/null @@ -1,301 +0,0 @@ -// -// XPTreasureFairyExchangeView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/27. -// - -#import "XPTreasureFairyExchangeView.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" - -#import "YUMIMacroUitls.h" -#import "Api+TreasureFairy.h" - -#import "MKJPopup.h" -///View -#import "XPTreasureFairyShopingExchangeCell.h" -#import "XPTreasureFairyStoreResultSmallView.h" -///Model -#import "TreasureFairyFragmentModel.h" -#import "TreasureFairyInfoModel.h" -#import "TreasureFairyBallInfoModel.h" -#import "TreasureFairyUserInfoModel.h" - - -@interface XPTreasureFairyExchangeView () - -///列表 -@property (nonatomic,strong) UICollectionView *collectionView; -///用户信息 -@property (nonatomic,strong) UIImageView *userImageView; -///头像 -@property (nonatomic,strong) NetIndicateRegard *avatarImageView; -///名字 -@property (nonatomic,strong) UILabel *nickLabel; -///我的碎片 -@property (nonatomic,strong) UILabel *fragmentTextLabel; -///碎片图片 -@property (nonatomic,strong) UIImageView *fragmentImageView; -///碎片数量 -@property (nonatomic,strong) UILabel *fragmentNumLabel; - -/// 碎片列表 -@property (nonatomic,strong) NSMutableArray *fragmentArray; - -@end - - -@implementation XPTreasureFairyExchangeView - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - [self initHttpRequest]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.collectionView]; - [self addSubview:self.userImageView]; - [self.userImageView addSubview:self.avatarImageView]; - [self.userImageView addSubview:self.nickLabel]; - [self.userImageView addSubview:self.fragmentTextLabel]; - [self.userImageView addSubview:self.fragmentImageView]; - [self.userImageView addSubview:self.fragmentNumLabel]; - -} - -- (void)initSubViewConstraints { - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - CGFloat kuserScale = 91.0 / 375.0; - [self.userImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(KScreenWidth, KScreenWidth * kuserScale)); - make.bottom.mas_equalTo(self); - make.centerX.mas_equalTo(self); - }]; - - [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(44, 44)); - make.left.mas_equalTo(self.userImageView).offset(15); - make.top.mas_equalTo(self.userImageView).offset(15 * kScreenScale); - }]; - - [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.avatarImageView.mas_right).offset(2); - make.centerY.mas_equalTo(self.avatarImageView); - }]; - - [self.fragmentNumLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-15); - make.centerY.mas_equalTo(self.avatarImageView); - }]; - - [self.fragmentImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.fragmentNumLabel.mas_left).offset(-4); - make.centerY.mas_equalTo(self.avatarImageView); - make.size.mas_equalTo(CGSizeMake(24, 24)); - }]; - - [self.fragmentTextLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.fragmentImageView.mas_left).offset(-2); - make.centerY.mas_equalTo(self.avatarImageView); - }]; - -} - -#pragma mark - Private Method -- (void)initHttpRequest { - [self getFragmentExchangeList]; - [self getMyBallList]; -} - -- (void)getFragmentExchangeList { - // 兑换列表 - [Api treasureFailyFragmentExchangeList:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSArray * fragmentList = [TreasureFairyFragmentModel mtowardsrixsAboutGarment:data.data]; - [self.fragmentArray removeAllObjects]; - [self.fragmentArray addObjectsFromArray:fragmentList]; - [self.collectionView reloadData]; - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; - } - }]; -} - -- (void)extracted { - [Api treasureFairyMyBallList:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - TreasureFairyBallInfoModel * info = [TreasureFairyBallInfoModel mtowardsrixAboutImpactbasket:data.data]; - self.fragmentNumLabel.text = [NSString stringWithFormat:@"%ld",info.chipNum]; - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; - } - }]; -} - -- (void)getMyBallList { - // 我的碎片 - [self extracted]; -} - -#pragma mark - UICollectionViewDelegate, UICollectionViewDataSource - -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.fragmentArray.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - XPTreasureFairyShopingExchangeCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPTreasureFairyShopingExchangeCell class]) forIndexPath:indexPath]; - TreasureFairyFragmentModel *model = self.fragmentArray[indexPath.row]; - cell.fragmemtModel = model; - cell.delegate = self; - return cell; -} - -#pragma mark - XPTreasureFairyShopingExchangeCellDelegate - -- (void)treasureFairyShopingExchangeAction:(TreasureFairyFragmentModel *)fragmentModel { - if (fragmentModel.itemId > 0) { - MKJPrecautiousDisposition * config = [[MKJPrecautiousDisposition alloc] init]; - config.title = @""; - NSString * untils; - if ([fragmentModel.rewardType isEqualToString:@"gift"]) { - untils = [NSString stringWithFormat:@"%@%@", fragmentModel.rewardShowValue, @"钻"]; - - } else { - untils = [NSString stringWithFormat:@"%ld%@", fragmentModel.rewardNum, fragmentModel.rewardUnit]; - } - config.title = @"提示"; - config.acknowledgementBtutonDisposition.title = @"兑换"; - config.message = [NSString stringWithFormat:@"您将要兑换“%@(%@)”", fragmentModel.rewardName, untils]; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [Api treasureFailyConvert:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:@"兑换成功~"]; - ///刷新我的碎片 - [self getMyBallList]; - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; - } - } itemId:[NSString stringWithFormat:@"%ld", fragmentModel.itemId] roomUid:self.roomUid]; - } cancelHandler:^{ - - }]; - - } -} - -#pragma mark - Getters And Setters -- (void)setUserInfo:(TreasureFairyUserInfoModel *)userInfo { - _userInfo = userInfo; - self.avatarImageView.imageUrl = userInfo.avatar; - NSString * nick = userInfo.nick; - if (nick.length > 6) { - nick = [NSString stringWithFormat:@"%@…", [nick substringToIndex:6]]; - } - self.nickLabel.text = nick; -} - - -- (UICollectionView *)collectionView { - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.scrollDirection = UICollectionViewScrollDirectionVertical; - CGFloat scale = 234.0/165.0; - CGFloat space = 15.0; - CGFloat itemWidth = (KScreenWidth - space*3)/2; - CGFloat itemHeight = scale*itemWidth; -// layout.itemSize = CGSizeMake(itemWidth, itemHeight); - layout.itemSize = CGSizeMake(165.0, 234.0); - layout.minimumInteritemSpacing = space; - layout.minimumLineSpacing = space; - - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.backgroundColor = UIColor.clearColor; - _collectionView.delegate = self; - _collectionView.dataSource = self; - CGFloat kuserScale = 91.0 / 375.0; - CGFloat insetsBottom = KScreenWidth * kuserScale; - _collectionView.contentInset = UIEdgeInsetsMake(0, space, insetsBottom, space); - [_collectionView registerClass:[XPTreasureFairyShopingExchangeCell class] forCellWithReuseIdentifier:NSStringFromClass([XPTreasureFairyShopingExchangeCell class])]; - } - return _collectionView; -} - -- (UIImageView *)userImageView { - if (!_userImageView) { - _userImageView = [[UIImageView alloc] init]; - _userImageView.userInteractionEnabled = YES; - _userImageView.image = [UIImage imageNamed:@"room_treasure_fairy_userinfo_bg"]; - } - return _userImageView; -} -- (NetIndicateRegard *)avatarImageView { - if (!_avatarImageView) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _avatarImageView = [[NetIndicateRegard alloc] initWithConfig:config]; - _avatarImageView.layer.masksToBounds = YES; - _avatarImageView.layer.cornerRadius = 44/2; - _avatarImageView.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - } - return _avatarImageView; -} - -- (UILabel *)nickLabel { - if (!_nickLabel) { - _nickLabel = [[UILabel alloc] init]; - _nickLabel.font = [UIFont systemFontOfSize:13]; - _nickLabel.textColor = [UIColor whiteColor]; - _nickLabel.text = @"昵称"; - } - return _nickLabel; -} - -- (UILabel *)fragmentTextLabel { - if (!_fragmentTextLabel) { - _fragmentTextLabel = [[UILabel alloc] init]; - _fragmentTextLabel.font = [UIFont systemFontOfSize:12]; - _fragmentTextLabel.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#1F5764"]; - _fragmentTextLabel.text = @"我的碎片:"; - } - return _fragmentTextLabel; -} - -- (UIImageView *)fragmentImageView { - if (!_fragmentImageView) { - _fragmentImageView = [[UIImageView alloc] init]; - _fragmentImageView.image = [UIImage imageNamed:@"room_treasure_fairy_shop_fragment"]; - } - return _fragmentImageView; -} - -- (UILabel *)fragmentNumLabel { - if (!_fragmentNumLabel) { - _fragmentNumLabel = [[UILabel alloc] init]; - _fragmentNumLabel.font = [UIFont systemFontOfSize:12]; - _fragmentNumLabel.textColor = [UIColor whiteColor]; - _fragmentNumLabel.text = @"0"; - } - return _fragmentNumLabel; -} - -- (NSMutableArray *)fragmentArray { - if (!_fragmentArray) { - _fragmentArray = [NSMutableArray array]; - } - return _fragmentArray; -} - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyFriendView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyFriendView.h deleted file mode 100644 index 1e69c1b6..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyFriendView.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// XPTreasureFairyFriendView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/23. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class TreasureFairyBallModel, XPTreasureFairyFriendView; -@protocol XPTreasureFairyFriendViewDelegate - -- (void)treasureFairyFriendFinish:(XPTreasureFairyFriendView *)view; - -@end -@interface XPTreasureFairyFriendView : UIView -@property (nonatomic,assign) BOOL isSend; -@property (nonatomic,strong) TreasureFairyBallModel *ballInfo; -///代理 -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyFriendView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyFriendView.m deleted file mode 100644 index a6b1f51f..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyFriendView.m +++ /dev/null @@ -1,315 +0,0 @@ -// -// XPTreasureFairyFriendView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/23. -// - -#import "XPTreasureFairyFriendView.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "Api+TreasureFairy.h" -#import "NSArray+Safe.h" -#import "MKJPopup.h" - -///Model -#import "ConsumerAbstractMatrix.h" -#import "TreasureFairyBallInfoModel.h" -///View -#import "XPTreasureFairyFriendCell.h" -#import "XPTreasureFairySendView.h" - -@interface XPTreasureFairyFriendView () -///返回按钮 -@property (nonatomic,strong) UIButton *backButton; -///消失 -@property (nonatomic,strong) UIView *dismissView; -///背景 -@property (nonatomic,strong) UIImageView *backImageView; -///显示标题 -@property (nonatomic,strong) UIImageView *titleImageView; -///标题 -@property (nonatomic,strong) UILabel *titleLabel; -///搜索 -@property (nonatomic,strong) UIView *searchView; -///输入框 -@property (nonatomic,strong) UITextField *searchTextField; -///列表 -@property (nonatomic,strong) UITableView *tableView; -///点击消失键盘 -@property (nonatomic,strong) UIButton *actionButton; -///好友 -@property (nonatomic,strong) NSArray *friendList; -///原始数据 -@property (nonatomic,strong) NSArray *originList; -@end - - -@implementation XPTreasureFairyFriendView - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self getMyFriendList]; - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -- (void)getMyFriendList { - [Api treasureFairyFansFriendList:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSArray * array = [ConsumerAbstractMatrix mtowardsrixsAboutGarment:data.data]; - self.friendList = array; - self.originList = array; - [self.tableView reloadData]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } nick:@""]; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.dismissView]; - [self addSubview:self.backImageView]; - [self addSubview:self.titleImageView]; - [self addSubview:self.actionButton]; - [self addSubview:self.backButton]; - [self.backImageView addSubview:self.searchView]; - [self.backImageView addSubview:self.tableView]; - - [self.searchView addSubview:self.searchTextField]; -} - -- (void)initSubViewConstraints { - CGFloat kscale = 580.0 / 375.0; - [self.dismissView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.bottom.mas_equalTo(self.backImageView.mas_top); - }]; - - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self); - make.height.mas_equalTo(KScreenWidth * kscale); - }]; - - [self.titleImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(180, 18)); - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.backImageView).offset(60* kScreenScale); - }]; - - [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(28, 28)); - make.left.mas_equalTo(self.backImageView).offset(15); - make.top.mas_equalTo(self.backImageView).offset(40 * kScreenScale); - }]; - - [self.searchView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backImageView).inset(15); - make.height.mas_equalTo(32); - make.top.mas_equalTo(self.backImageView).offset(103 * kScreenScale); - }]; - - [self.searchTextField mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.searchView).offset(15); - make.right.mas_equalTo(self.searchView).offset(-15); - make.top.bottom.mas_equalTo(self.searchView); - }]; - - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.searchView.mas_bottom).offset(13); - make.bottom.mas_equalTo(self.backImageView).offset(-10); - }]; - - [self.actionButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.backImageView).offset(40); - make.top.right.mas_equalTo(self.backImageView); - make.bottom.mas_equalTo(self.searchView.mas_top); - }]; -} -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.friendList.count; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 65; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - XPTreasureFairyFriendCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPTreasureFairyFriendCell class])]; - if (cell == nil) { - cell = [[XPTreasureFairyFriendCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPTreasureFairyFriendCell class])]; - } - ConsumerAbstractMatrix * info = [self.friendList secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.userInfo = info; - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - [self.searchTextField resignFirstResponder]; - if (self.friendList.count> 0) { - ConsumerAbstractMatrix * info = [self.friendList secureGroalTowardsIndictowardsrix1:indexPath.row]; - XPTreasureFairySendView * sendView = [[XPTreasureFairySendView alloc] init]; - self.ballInfo.nick = info.nick; - self.ballInfo.uid = info.uid; - sendView.isSend = self.isSend; - sendView.ballInfo = self.ballInfo; - [MKJPopup popupRegard:sendView style:MKJPopupStyleActionSheet]; - } -} - -#pragma mark - Event Response -- (void)dismissRecognizer { - [self.searchTextField resignFirstResponder]; - [UIView animateWithDuration:0.3 animations:^{ - CGRect rect = self.frame; - rect.origin.y = KScreenHeight; - self.frame = rect; - if (self.delegate && [self.delegate respondsToSelector:@selector(treasureFairyFriendFinish:)]) { - [self.delegate treasureFairyFriendFinish:self]; - } - } completion:^(BOOL finished) { - [self removeFromSuperview]; - }]; -} - -- (void)resignFirstResponse { - self.friendList = self.originList; - [self.tableView reloadData]; - [self.searchTextField resignFirstResponder]; -} - -- (void)textFieldDidChange:(UITextField *)textField { - if (textField.text.length == 0) { - self.friendList = self.originList; - [self.tableView reloadData]; - } -} - -- (BOOL)textFieldShouldReturn:(UITextField *)textField{ - NSString *searchStr = textField.text; - if (searchStr.length >= 0) { - [Api treasureFairyFansFriendList:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSArray * array = [ConsumerAbstractMatrix mtowardsrixsAboutGarment:data.data]; - self.friendList = array; - [self.tableView reloadData]; - } else { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; - } - } nick:searchStr]; - } - return YES; -} -#pragma mark - Getters And Setters -- (UIButton *)backButton { - if (!_backButton) { - _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backButton setImage:[UIImage imageNamed:@"room_treasure_fairy_back"] forState:UIControlStateNormal]; - [_backButton setImage:[UIImage imageNamed:@"room_treasure_fairy_back"] forState:UIControlStateSelected]; - [_backButton addTarget:self action:@selector(dismissRecognizer) forControlEvents:UIControlEventTouchUpInside]; - } - return _backButton; -} - -- (UIView *)dismissView { - if (!_dismissView) { - _dismissView = [[UIView alloc] init]; - _dismissView.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissRecognizer)]; - [_dismissView addGestureRecognizer:tap]; - } - return _dismissView; -} - -- (UIImageView *)titleImageView { - if (!_titleImageView) { - _titleImageView = [[UIImageView alloc] init]; - _titleImageView.userInteractionEnabled = YES; - _titleImageView.image = [UIImage imageNamed:@"room_treasure_my_friend_title"]; - } - return _titleImageView; -} - -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_my_friend_bg"]; - } - return _backImageView; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:17]; - _titleLabel.textColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - _titleLabel.text = @"好友"; - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} - -- (UIView *)searchView { - if (!_searchView) { - _searchView = [[UIView alloc] init]; - _searchView.backgroundColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#066A6E"]; - _searchView.layer.masksToBounds = YES; - _searchView.layer.cornerRadius = 16; - } - return _searchView; -} - -- (UITextField *)searchTextField { - if (!_searchTextField) { - _searchTextField = [[UITextField alloc] init]; - _searchTextField.layer.cornerRadius = 12; - _searchTextField.layer.masksToBounds = YES; - _searchTextField.tintColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#59FDFF"]; - _searchTextField.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#59FDFF"]; - _searchTextField.backgroundColor = [UIColor clearColor]; - _searchTextField.font = [UIFont systemFontOfSize:13]; - _searchTextField.delegate = self; - NSString *placeholder = [NSString stringWithFormat:@"搜索好友"]; - _searchTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholder attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:12], NSForegroundColorAttributeName : [DJDKMIMOMColor colorAboutHexBWSttr:@"#59FDFF"]}]; - _searchTextField.clearButtonMode = UITextFieldViewModeWhileEditing; - _searchTextField.returnKeyType = UIReturnKeySearch; - _searchTextField.enablesReturnKeyAutomatically = YES; - [_searchTextField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; - } - return _searchTextField; -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[XPTreasureFairyFriendCell class] forCellReuseIdentifier:NSStringFromClass([XPTreasureFairyFriendCell class])]; - } - return _tableView; -} -- (UIButton *)actionButton { - if (!_actionButton) { - _actionButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_actionButton addTarget:self action:@selector(resignFirstResponse) forControlEvents:UIControlEventTouchUpInside]; - } - return _actionButton; -} -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyMessageSendView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyMessageSendView.h deleted file mode 100644 index cb4ec418..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyMessageSendView.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// XPTreasureFairyMessageSendView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/23. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class ContentTreasureFairyModel; -typedef void(^SendCompletion)(BOOL success); -@interface XPTreasureFairyMessageSendView : UIView -@property (nonatomic,copy) SendCompletion finish; -@property (nonatomic,strong) ContentTreasureFairyModel *fairyInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyMessageSendView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyMessageSendView.m deleted file mode 100644 index 6ac4650a..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyMessageSendView.m +++ /dev/null @@ -1,183 +0,0 @@ -// -// XPTreasureFairyMessageSendView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/23. -// - -#import "XPTreasureFairyMessageSendView.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" -#import "MKJPopup.h" -#import "YUMIMacroUitls.h" -#import "Api+TreasureFairy.h" -///Model -#import "ContentTreasureFairyModel.h" - -@interface XPTreasureFairyMessageSendView () -///背景 -@property (nonatomic,strong) UIImageView *backImageView; -///显示标题 -@property (nonatomic,strong) UILabel *titleLabel; -///精灵球 -@property (nonatomic,strong) NetIndicateRegard *ballView; -///取消 -@property (nonatomic,strong) UIButton *cancleButton; -///确定 -@property (nonatomic,strong) UIButton *sureButton; - -@end - -@implementation XPTreasureFairyMessageSendView - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backImageView]; - - [self.backImageView addSubview:self.titleLabel]; - [self.backImageView addSubview:self.ballView]; - [self.backImageView addSubview:self.sureButton]; - [self.backImageView addSubview:self.cancleButton]; -} - -- (void)initSubViewConstraints { - self.frame = CGRectMake(0, 0, 281, 285); - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(281, 285)); - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backImageView).inset(30); - make.top.mas_equalTo(self.backImageView).offset(45); - }]; - - [self.ballView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(90, 90)); - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(19); - }]; - - [self.cancleButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(104, 32)); - make.top.mas_equalTo(self.ballView.mas_bottom).offset(15); - make.right.mas_equalTo(self.backImageView.mas_centerX).offset(-12); - }]; - - [self.sureButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.cancleButton); - make.left.mas_equalTo(self.backImageView.mas_centerX).offset(12); - }]; -} - -#pragma mark - Event Response -- (void)cancleButtonAction:(UIButton *)sender { - [MKJPopup dismiss]; -} - -- (void)sureButtonAction:(UIButton *)sender { - [MKJPopup dismiss]; - if (self.fairyInfo.elfId.integerValue > 0 && self.fairyInfo.uid.integerValue > 0) { - NSString * elfId = self.fairyInfo.elfId; - NSString * uid = self.fairyInfo.uid; - [Api treasureFairySendFairyBall:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - if (self.finish) { - self.finish(YES); - } - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:@"赠送成功"]; - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; - } - } elfId:elfId targetUid:uid]; - } -} - -- (void)dismissRecognizer { - [MKJPopup dismiss]; -} - -#pragma mark - Getters And Setters -- (void)setFairyInfo:(ContentTreasureFairyModel *)fairyInfo { - _fairyInfo = fairyInfo; - if (_fairyInfo) { - self.ballView.imageUrl = _fairyInfo.elfPicUrl; - NSString * nick = _fairyInfo.nick; - NSString * title = [NSString stringWithFormat:@"确定向“%@“赠送1张”%@“精灵卡吗?", nick, _fairyInfo.elfName]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:15], NSForegroundColorAttributeName:[UIColor whiteColor]}]; - [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor colorAboutHexBWSttr:@"#FEF8AA"] range:[title rangeOfString:nick]]; - self.titleLabel.attributedText = attribute; - self.titleLabel.textAlignment = NSTextAlignmentCenter; - } -} - -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_my_send_record_bg"]; - } - return _backImageView; -} - -- (NetIndicateRegard *)ballView { - if (!_ballView) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _ballView = [[NetIndicateRegard alloc] initWithConfig:config]; - _ballView.layer.masksToBounds = YES; - _ballView.layer.cornerRadius = 45; - _ballView.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - _ballView.layer.borderWidth = 0.5; - } - return _ballView; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.numberOfLines = 0; - } - return _titleLabel; -} - -- (UIButton *)cancleButton { - if (!_cancleButton) { - _cancleButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_cancleButton setTitle:@"关闭" forState:UIControlStateNormal]; - [_cancleButton setTitleColor:[DJDKMIMOMColor colorAboutHexBWSttr:@"#008573"] forState:UIControlStateNormal]; - _cancleButton.titleLabel.font = [UIFont systemFontOfSize:13]; - [_cancleButton setBackgroundImage:[UIImage imageNamed:@"room_treasure_fairy_store_result_close_bg"] forState:UIControlStateNormal]; - _cancleButton.layer.masksToBounds = YES; - _cancleButton.layer.cornerRadius = 10; - [_cancleButton addTarget:self action:@selector(cancleButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _cancleButton; -} - -- (UIButton *)sureButton { - if (!_sureButton) { - _sureButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_sureButton setTitleColor:[DJDKMIMOMColor colorAboutHexBWSttr:@"#8A4801"] forState:UIControlStateNormal]; - _sureButton.titleLabel.font = [UIFont systemFontOfSize:13]; - [_sureButton setTitle:@"赠送" forState:UIControlStateNormal]; - [_sureButton setBackgroundImage:[UIImage imageNamed:@"room_treasure_fairy_sure_bg"] forState:UIControlStateNormal]; - _sureButton.layer.masksToBounds = YES; - _sureButton.layer.cornerRadius = 10; - [_sureButton addTarget:self action:@selector(sureButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _sureButton; -} -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyMoreView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyMoreView.h deleted file mode 100644 index f1da929a..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyMoreView.h +++ /dev/null @@ -1,31 +0,0 @@ -// -// XPTreasureFairyMoreView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, TreasureFairyMoreType) { - TreasureFairyMoreType_Rule = 1, - ///记录 - TreasureFairyMoreType_Record, - ///达人 - TreasureFairyMoreType_Expet -}; -@class XPTreasureFairyMoreView; -@protocol XPTreasureFairyMoreViewDelegate - -- (void)xPTreasureFairyMoreView:(XPTreasureFairyMoreView *)view didClickButton:(TreasureFairyMoreType)type; - -@end - -@interface XPTreasureFairyMoreView : UIView -///代理 -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyMoreView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyMoreView.m deleted file mode 100644 index a9a9cd8a..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyMoreView.m +++ /dev/null @@ -1,133 +0,0 @@ -// -// XPTreasureFairyMoreView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/21. -// - -#import "XPTreasureFairyMoreView.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" - -@interface XPTreasureFairyMoreView () - -///背景 -@property (nonatomic,strong) UIImageView *backImageView; -///规则 -@property (nonatomic,strong) UIButton *ruleButton; -///记录 -@property (nonatomic,strong) UIButton *recordButton; -///达人 -@property (nonatomic,strong) UIButton *expetButton; - -@end - -@implementation XPTreasureFairyMoreView - - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backImageView]; - [self.backImageView addSubview:self.ruleButton]; - [self.backImageView addSubview:self.recordButton]; - [self.backImageView addSubview:self.expetButton]; -} - -- (void)initSubViewConstraints { - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self); - }]; - - [self.ruleButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backImageView); - make.height.mas_equalTo(30); - make.top.mas_equalTo(self.backImageView).offset(25); - }]; - - [self.recordButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backImageView); - make.height.mas_equalTo(self.recordButton); - make.top.mas_equalTo(self.ruleButton.mas_bottom).offset(3); - }]; - - [self.expetButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backImageView); - make.height.mas_equalTo(self.recordButton); - make.top.mas_equalTo(self.recordButton.mas_bottom).offset(3); - }]; -} - -#pragma mark - Event Response -- (void)ruleButtonAction:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(xPTreasureFairyMoreView:didClickButton:)]) { - [self.delegate xPTreasureFairyMoreView:self didClickButton:TreasureFairyMoreType_Rule]; - } -} - -- (void)expetButtonAction:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(xPTreasureFairyMoreView:didClickButton:)]) { - [self.delegate xPTreasureFairyMoreView:self didClickButton:TreasureFairyMoreType_Expet]; - } -} - -- (void)recordButtonAction:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(xPTreasureFairyMoreView:didClickButton:)]) { - [self.delegate xPTreasureFairyMoreView:self didClickButton:TreasureFairyMoreType_Record]; - } -} - -#pragma mark - Getters And Setters -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_more_title_bg"]; - } - return _backImageView; -} - -- (UIButton *)ruleButton { - if (!_ruleButton) { - _ruleButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_ruleButton setTitle:@"规则说明" forState:UIControlStateNormal]; - [_ruleButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _ruleButton.titleLabel.font = [UIFont systemFontOfSize:13]; - [_ruleButton addTarget:self action:@selector(ruleButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _ruleButton; -} - -- (UIButton *)expetButton { - if (!_expetButton) { - _expetButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_expetButton setTitle:@"夺宝达人" forState:UIControlStateNormal]; - [_expetButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _expetButton.titleLabel.font = [UIFont systemFontOfSize:13]; - [_expetButton addTarget:self action:@selector(expetButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _expetButton; -} - -- (UIButton *)recordButton { - if (!_recordButton) { - _recordButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_recordButton setTitle:@"奖励记录" forState:UIControlStateNormal]; - [_recordButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _recordButton.titleLabel.font = [UIFont systemFontOfSize:13]; - [_recordButton addTarget:self action:@selector(recordButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _recordButton; -} - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyMyView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyMyView.h deleted file mode 100644 index cd9f2082..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyMyView.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// XPTreasureFairyMyView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/22. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface XPTreasureFairyMyView : UIView - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyMyView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyMyView.m deleted file mode 100644 index eefc267d..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyMyView.m +++ /dev/null @@ -1,390 +0,0 @@ -// -// XPTreasureFairyMyView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/22. -// - -#import "XPTreasureFairyMyView.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "Api+TreasureFairy.h" - -#import "MKJPopup.h" -///Model -#import "TreasureFairyBallInfoModel.h" -///View -#import "XPTreasureFairyBallContentView.h" -#import "XPTreasureFairySendRecordView.h" -#import "XPTreasureFairyFriendView.h" -@interface XPTreasureFairyMyView () -///返回按钮 -@property (nonatomic,strong) UIButton *backButton; -///消失 -@property (nonatomic,strong) UIView *dismissView; -///背景 -@property (nonatomic,strong) UIImageView *backImageView; -///显示标题 -@property (nonatomic,strong) UIImageView *titleImageView; -///提示 -@property (nonatomic,strong) UIImageView *tipsImageView; -///记录 -@property (nonatomic,strong) UIButton *recordButton; -///分段控制器 -@property (nonatomic,strong) UIImageView *segmentView; -///低级 -@property (nonatomic,strong) UIButton *lowButton; -///中级 -@property (nonatomic,strong) UIButton *middleButton; -///高级 -@property (nonatomic,strong) UIButton *highButton; -///低级的球 -@property (nonatomic,strong) XPTreasureFairyBallContentView *lowView; -///中级的球 -@property (nonatomic,strong) XPTreasureFairyBallContentView *middleView; -///高级的球 -@property (nonatomic,strong) XPTreasureFairyBallContentView *highView; -///精灵信息 -@property (nonatomic,strong) TreasureFairyBallInfoModel *ballInfo; -@end - - -@implementation XPTreasureFairyMyView - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initHttpRequest]; - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initHttpRequest { - [Api treasureFairyMyBallList:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - TreasureFairyBallInfoModel * info = [TreasureFairyBallInfoModel mtowardsrixAboutImpactbasket:data.data]; - self.ballInfo = info; - self.lowView.datasource = info.lowElves ; - self.middleView.datasource = info.middleElves; - self.highView.datasource = info.highElves; - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; - } - }]; -} - -- (void)initSubViews { - [self addSubview:self.dismissView]; - [self addSubview:self.backImageView]; - [self addSubview:self.backButton]; - [self addSubview:self.titleImageView]; - [self addSubview:self.tipsImageView]; - [self addSubview:self.recordButton]; - [self addSubview:self.segmentView]; - [self addSubview:self.lowView]; - [self addSubview:self.middleView]; - [self addSubview:self.highView]; - - [self addSubview:self.lowButton]; - [self addSubview:self.middleButton]; - [self addSubview:self.highButton]; -} - -- (void)initSubViewConstraints { - CGFloat kscale = 580.0 / 375.0; - - [self.dismissView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.bottom.mas_equalTo(self.backImageView.mas_top); - }]; - - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self); - make.height.mas_equalTo(KScreenWidth * kscale); - }]; - - [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(28, 28)); - make.left.mas_equalTo(self.backImageView).offset(15); - make.top.mas_equalTo(self.backImageView).offset(40 * kScreenScale); - }]; - - [self.titleImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(153, 78)); - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.backImageView); - }]; - - [self.tipsImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.backImageView).offset(95); - make.size.mas_equalTo(CGSizeMake(235, 32)); - make.centerX.mas_equalTo(self.backImageView); - }]; - - [self.recordButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(50, 42)); - make.centerY.mas_equalTo(self.tipsImageView); - make.right.mas_equalTo(self.backImageView).offset(-15); - }]; - - [self.segmentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(345, 41)); - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.tipsImageView.mas_bottom).offset(16 * kScreenScale); - }]; - - [self.lowButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(107, 51)); - make.left.mas_equalTo(self.segmentView.mas_left).offset(5); - make.centerY.mas_equalTo(self.segmentView).offset(1.5); - }]; - - [self.middleButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.lowButton); - make.left.mas_equalTo(self.lowButton.mas_right).offset(7); - }]; - - [self.highButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.lowButton); - make.left.mas_equalTo(self.middleButton.mas_right).offset(7); - }]; - - [self.lowView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.segmentView.mas_bottom).offset(16 * kScreenScale); - }]; - - [self.middleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.lowView); - }]; - - [self.highView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.lowView); - }]; -} -#pragma mark - XPTreasureFairyFriendViewDelegate -- (void)treasureFairyFriendFinish:(XPTreasureFairyFriendView *)view { - [self initHttpRequest]; -} - -#pragma mark - XPTreasureFairyBallContentViewDelegate -- (void)xPTreasureFairyBallContentView:(XPTreasureFairyBallContentView *)view askInfo:(TreasureFairyBallModel *)askInfo { - XPTreasureFairyFriendView * friendView = [[XPTreasureFairyFriendView alloc] init]; - friendView.isSend = NO; - friendView.delegate = self; - friendView.ballInfo = askInfo; - friendView.frame = CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight); - [self addSubview:friendView]; - [UIView animateWithDuration:0.3 animations:^{ - CGRect rect = friendView.frame; - rect.origin.y = 0; - friendView.frame = rect; - }]; -} - -- (void)xPTreasureFairyBallContentView:(XPTreasureFairyBallContentView *)view sendInfo:(TreasureFairyBallModel *)sendInfo { - XPTreasureFairyFriendView * friendView = [[XPTreasureFairyFriendView alloc] init]; - friendView.delegate = self; - friendView.isSend = YES; - friendView.ballInfo = sendInfo; - friendView.frame = CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight); - [self addSubview:friendView]; - [UIView animateWithDuration:0.3 animations:^{ - CGRect rect = friendView.frame; - rect.origin.y = 0; - friendView.frame = rect; - }]; -} - -#pragma mark - Event Response -- (void)dismissRecognizer { - [UIView animateWithDuration:0.3 animations:^{ - CGRect rect = self.frame; - rect.origin.y = KScreenHeight; - self.frame = rect; - } completion:^(BOOL finished) { - [self removeFromSuperview]; - }]; -} - -- (void)lowButtonAction:(UIButton *)sender { - sender.selected = YES; - self.middleButton.selected = NO; - self.highButton.selected = NO; - self.lowView.hidden = NO; - self.middleView.hidden = YES; - self.highView.hidden = YES; - NSMutableArray * array = [NSMutableArray array]; - for (TreasureFairyBallModel * info in self.ballInfo.lowElves) { - info.isFlip = NO; - [array addObject:info]; - } - self.lowView.datasource = array; -} - -- (void)middleButtonAction:(UIButton *)sender { - sender.selected = YES; - self.lowButton.selected = NO; - self.highButton.selected = NO; - self.lowView.hidden = YES; - self.middleView.hidden = NO; - self.highView.hidden = YES; - NSMutableArray * array = [NSMutableArray array]; - for (TreasureFairyBallModel * info in self.ballInfo.middleElves) { - info.isFlip = NO; - [array addObject:info]; - } - self.middleView.datasource = array; -} - -- (void)highButtonAction:(UIButton *)sender { - sender.selected = YES; - self.lowButton.selected = NO; - self.middleButton.selected = NO; - self.lowView.hidden = YES; - self.middleView.hidden = YES; - self.highView.hidden = NO; - NSMutableArray * array = [NSMutableArray array]; - for (TreasureFairyBallModel * info in self.ballInfo.highElves) { - info.isFlip = NO; - [array addObject:info]; - } - self.highView.datasource = array; -} - -- (void)recordButtonAction:(UIButton *)sender { - XPTreasureFairySendRecordView * recordView = [[XPTreasureFairySendRecordView alloc] init]; - [MKJPopup popupRegard:recordView style:MKJPopupStyleActionSheet]; -} - -#pragma mark - Getters And Setters -- (UIButton *)backButton { - if (!_backButton) { - _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backButton setImage:[UIImage imageNamed:@"room_treasure_fairy_back"] forState:UIControlStateNormal]; - [_backButton setImage:[UIImage imageNamed:@"room_treasure_fairy_back"] forState:UIControlStateSelected]; - [_backButton addTarget:self action:@selector(dismissRecognizer) forControlEvents:UIControlEventTouchUpInside]; - } - return _backButton; -} - -- (UIView *)dismissView { - if (!_dismissView) { - _dismissView = [[UIView alloc] init]; - _dismissView.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissRecognizer)]; - [_dismissView addGestureRecognizer:tap]; - } - return _dismissView; -} - -- (UIImageView *)titleImageView { - if (!_titleImageView) { - _titleImageView = [[UIImageView alloc] init]; - _titleImageView.userInteractionEnabled = YES; - _titleImageView.image = [UIImage imageNamed:@"room_treasure_fairy_my_title"]; - } - return _titleImageView; -} - -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_bg"]; - } - return _backImageView; -} - -- (UIImageView *)tipsImageView { - if (!_tipsImageView) { - _tipsImageView = [[UIImageView alloc] init]; - _tipsImageView.userInteractionEnabled = YES; - _tipsImageView.image = [UIImage imageNamed:@"room_treasure_fairy_my_tips_bg"]; - } - return _tipsImageView; -} - -- (UIButton *)recordButton { - if (!_recordButton) { - _recordButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_recordButton setImage:[UIImage imageNamed:@"room_treasure_fairy_my_record_bg"] forState:UIControlStateNormal]; - [_recordButton setImage:[UIImage imageNamed:@"room_treasure_fairy_my_record_bg"] forState:UIControlStateSelected]; - [_recordButton addTarget:self action:@selector(recordButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _recordButton; -} - -- (UIImageView *)segmentView { - if (!_segmentView) { - _segmentView = [[UIImageView alloc] init]; - _segmentView.image = [UIImage imageNamed:@"room_treasure_fairy_my_segment_bg"]; - _segmentView.userInteractionEnabled = YES; - } - return _segmentView; -} - -- (UIButton *)lowButton { - if (!_lowButton) { - _lowButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_lowButton setImage:[UIImage imageNamed:@"room_treasure_fairy_my_low_title_normal"] forState:UIControlStateNormal]; - [_lowButton setImage:[UIImage imageNamed:@"room_treasure_fairy_my_low_title_select"] forState:UIControlStateSelected]; - [_lowButton addTarget:self action:@selector(lowButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - _lowButton.selected = YES; - } - return _lowButton; -} - -- (UIButton *)middleButton { - if (!_middleButton) { - _middleButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_middleButton setImage:[UIImage imageNamed:@"room_treasure_fairy_my_middle_title_normal"] forState:UIControlStateNormal]; - [_middleButton setImage:[UIImage imageNamed:@"room_treasure_fairy_my_middle_title_select"] forState:UIControlStateSelected]; - [_middleButton addTarget:self action:@selector(middleButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - _middleButton.selected = NO; - } - return _middleButton; -} - -- (UIButton *)highButton { - if (!_highButton) { - _highButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_highButton setImage:[UIImage imageNamed:@"room_treasure_fairy_my_high_title_normal"] forState:UIControlStateNormal]; - [_highButton setImage:[UIImage imageNamed:@"room_treasure_fairy_my_high_title_select"] forState:UIControlStateSelected]; - [_highButton addTarget:self action:@selector(highButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _highButton; -} - -- (XPTreasureFairyBallContentView *)lowView { - if (!_lowView) { - _lowView = [[XPTreasureFairyBallContentView alloc] init]; - _lowView.delegate = self; - } - return _lowView; -} - -- (XPTreasureFairyBallContentView *)middleView { - if (!_middleView) { - _middleView = [[XPTreasureFairyBallContentView alloc] init]; - _middleView.hidden= YES; - _middleView.delegate = self; - } - return _middleView; -} - -- (XPTreasureFairyBallContentView *)highView { - if (!_highView) { - _highView = [[XPTreasureFairyBallContentView alloc] init]; - _highView.hidden = YES; - _highView.delegate = self; - } - return _highView; -} -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyPoolRecordView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyPoolRecordView.h deleted file mode 100644 index 1dd54f4a..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyPoolRecordView.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// XPTreasureFairyPoolRecordView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface XPTreasureFairyPoolRecordView : UIView -@property (nonatomic,strong) NSArray *lowList; -@property (nonatomic,strong) NSArray *middleList; -@property (nonatomic,strong) NSArray *highList; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyPoolRecordView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyPoolRecordView.m deleted file mode 100644 index e68d8bba..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyPoolRecordView.m +++ /dev/null @@ -1,179 +0,0 @@ -// -// XPTreasureFairyPoolRecordView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/21. -// - -#import "XPTreasureFairyPoolRecordView.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" -#import "MKJPopup.h" -///View -#import "XPTreasureFairyPrizePoolView.h" -#import "XPTreasureFairyPrizeRecordView.h" - -@interface XPTreasureFairyPoolRecordView () - -///背景 -@property (nonatomic,strong) UIImageView *backImageView; -/// -@property (nonatomic,strong) UIView *bottomView; -///森林奖池 -@property (nonatomic,strong) UIButton *prizePoolButton; -///获奖记录 -@property (nonatomic,strong) UIButton *recordButton; -///记录 -@property (nonatomic,strong) XPTreasureFairyPrizeRecordView *recordView; -///奖池 -@property (nonatomic,strong) XPTreasureFairyPrizePoolView *poolView; -@end - -@implementation XPTreasureFairyPoolRecordView - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backImageView]; - [self addSubview:self.bottomView]; - [self.backImageView addSubview:self.prizePoolButton]; - [self.backImageView addSubview:self.recordButton]; - [self.backImageView addSubview:self.poolView]; - [self.backImageView addSubview:self.recordView]; -} - -- (void)initSubViewConstraints { - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.centerX.mas_equalTo(self); - make.size.mas_equalTo(CGSizeMake(321, 386)); - }]; - - [self.bottomView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self); - make.top.mas_equalTo(self.backImageView.mas_bottom); - }]; - - [self.prizePoolButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(120, 39)); - make.right.mas_equalTo(self.backImageView.mas_centerX).offset(-18); - make.top.mas_equalTo(self.backImageView); - }]; - - [self.recordButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(120, 39)); - make.left.mas_equalTo(self.backImageView.mas_centerX).offset(18); - make.top.mas_equalTo(self.backImageView); - }]; - - [self.recordView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backImageView).inset(5); - make.bottom.mas_equalTo(self.backImageView).offset(-30); - make.top.mas_equalTo(self.prizePoolButton.mas_bottom).offset(24); - }]; - - [self.poolView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backImageView).inset(5); - make.bottom.mas_equalTo(self.backImageView).offset(-30); - make.top.mas_equalTo(self.prizePoolButton.mas_bottom).offset(24); - }]; -} - - -#pragma mark - Event Response -- (void)prizePoolButtonAction:(UIButton *)sender { - self.recordButton.selected = NO; - self.prizePoolButton.selected = YES; - self.recordView.hidden = YES; - self.poolView.hidden = NO; -} - -- (void)recordButtonAction:(UIButton *)sender { - self.recordButton.selected = YES; - self.prizePoolButton.selected = NO; - self.recordView.hidden = NO; - self.poolView.hidden = YES; -} - -- (void)dismissView { - [MKJPopup dismiss]; -} - -#pragma mark - Getters And Setters -- (void)setLowList:(NSArray *)lowList { - self.poolView.lowList = lowList; -} - -- (void)setMiddleList:(NSArray *)middleList { - self.poolView.middleList = middleList; -} - -- (void)setHighList:(NSArray *)highList { - self.poolView.highList = highList; -} -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_pool_bg"]; - } - return _backImageView; -} - -- (UIView *)bottomView { - if (!_bottomView) { - _bottomView = [[UIView alloc] init]; - _bottomView.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissView)]; - [_bottomView addGestureRecognizer:tap]; - } - return _bottomView; -} - -- (UIButton *)prizePoolButton { - if (!_prizePoolButton) { - _prizePoolButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_prizePoolButton setImage:[UIImage imageNamed:@"room_treasure_fairy_pool_normal"] forState:UIControlStateNormal]; - [_prizePoolButton setImage:[UIImage imageNamed:@"room_treasure_fairy_pool_select"] forState:UIControlStateSelected]; - [_prizePoolButton addTarget:self action:@selector(prizePoolButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - _prizePoolButton.selected = YES; - } - return _prizePoolButton; -} - -- (UIButton *)recordButton { - if (!_recordButton) { - _recordButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_recordButton setImage:[UIImage imageNamed:@"room_treasure_fairy_record_normal"] forState:UIControlStateNormal]; - [_recordButton setImage:[UIImage imageNamed:@"room_treasure_fairy_record_select"] forState:UIControlStateSelected]; - [_recordButton addTarget:self action:@selector(recordButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - _recordButton.selected = NO; - } - return _recordButton; -} - -- (XPTreasureFairyPrizePoolView *)poolView { - if(!_poolView) { - _poolView = [[XPTreasureFairyPrizePoolView alloc] init]; - } - return _poolView; -} - -- (XPTreasureFairyPrizeRecordView *)recordView { - if (!_recordView) { - _recordView = [[XPTreasureFairyPrizeRecordView alloc] init]; - _recordView.hidden = YES; - } - return _recordView; -} - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyPrizePoolView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyPrizePoolView.h deleted file mode 100644 index 36066946..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyPrizePoolView.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// XPTreasureFairyPrizePoolView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface XPTreasureFairyPrizePoolView : UIView -@property (nonatomic,strong) NSArray *lowList; -@property (nonatomic,strong) NSArray *middleList; -@property (nonatomic,strong) NSArray *highList; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyPrizePoolView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyPrizePoolView.m deleted file mode 100644 index 0718812e..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyPrizePoolView.m +++ /dev/null @@ -1,171 +0,0 @@ -// -// XPTreasureFairyPrizePoolView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/21. -// - -#import "XPTreasureFairyPrizePoolView.h" -///Third -#import -#import -#import -#import -///Tool -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "UIImage+Utils.h" -#import "Api+TreasureFairy.h" - -///Model -#import "TreasureFairyInfoModel.h" -///View -#import "XPTreasureFairyPrizeSubView.h" -#import "XPTreasureFairyStoreView.h" - -@interface XPTreasureFairyPrizePoolView () -///分页标题 -@property (nonatomic, strong) NSArray *titles; -///分页控件 -@property (nonatomic, strong) JXCategoryTitleView *titleView; -///分页lineView -@property (nonatomic, strong) JXCategoryListContainerView *containerView; -///初级森林 -@property (nonatomic,strong) XPTreasureFairyPrizeSubView *normalView; -///史诗森林 -@property (nonatomic,strong) XPTreasureFairyPrizeSubView *middleView; -///高级森林 -@property (nonatomic,strong) XPTreasureFairyPrizeSubView *highView; -@end - -@implementation XPTreasureFairyPrizePoolView - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - self.backgroundColor = [UIColor clearColor]; - [self addSubview:self.titleView]; - [self addSubview:self.containerView]; -} - -- (void)initSubViewConstraints { - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self); - make.width.mas_equalTo(60 * 3 + 24 * 2); - make.height.mas_equalTo(30); - make.top.mas_equalTo(self).offset(0); - }]; - - [self.containerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self); - make.top.mas_equalTo(self.titleView.mas_bottom).offset(13); - }]; -} - -#pragma mark - JXCategoryViewDelegate -- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { - return self.titles.count; -} - -- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { - if (index == 0) { - return self.normalView; - } else if (index == 1) { - return self.middleView; - } else { - return self.highView; - } -} -#pragma mark - Event Response - -#pragma mark - Getters And Setters -- (void)setLowList:(NSArray *)lowList { - self.normalView.datasource = lowList; -} - -- (void)setMiddleList:(NSArray *)middleList { - self.middleView.datasource = middleList; -} - -- (void)setHighList:(NSArray *)highList { - self.highView.datasource = highList; -} - -- (JXCategoryTitleView *)titleView { - if (!_titleView) { - _titleView = [[JXCategoryTitleView alloc] init]; - _titleView.delegate = self; - _titleView.titles = self.titles; - _titleView.backgroundColor = [UIColor clearColor]; - _titleView.titleColor = [UIColor whiteColor]; - _titleView.titleSelectedColor = [UIColor whiteColor]; - _titleView.titleFont = [UIFont systemFontOfSize:15]; - _titleView.titleSelectedFont = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; - _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; - _titleView.defaultSelectedIndex = 0; - _titleView.cellSpacing = 24; - _titleView.cellWidthIncrement = 0; - _titleView.contentEdgeInsetLeft = 0; - _titleView.contentEdgeInsetRight = 0; - _titleView.cellWidth = 60; - _titleView.listContainer = self.containerView; - - JXCategoryIndicatorImageView *lineView = [[JXCategoryIndicatorImageView alloc] init]; - lineView.indicatorImageViewSize = CGSizeMake(60, 4); - lineView.verticalMargin = 2; - lineView.indicatorCornerRadius = 2; - lineView.indicatorImageView.image = [UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[UIColorFromRGB(0x69FFEB), UIColorFromRGB(0xEAFF89)] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(60, 4)]; - lineView.indicatorImageView.layer.masksToBounds = YES; - lineView.indicatorImageView.layer.cornerRadius = 2; - _titleView.indicators = @[lineView]; - } - return _titleView; -} - -- (JXCategoryListContainerView *)containerView { - if (!_containerView) { - _containerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; - _containerView.defaultSelectedIndex = 0; - _containerView.scrollView.tag = 1009; - } - return _containerView; -} - -- (NSArray *)titles { - if (!_titles) { - _titles = @[@"初级森林", @"史诗森林", @"传说森林"]; - } - return _titles; -} - -- (XPTreasureFairyPrizeSubView *)normalView { - if (!_normalView) { - _normalView = [[XPTreasureFairyPrizeSubView alloc] init]; - } - return _normalView; -} - -- (XPTreasureFairyPrizeSubView *)middleView { - if (!_middleView) { - _middleView = [[XPTreasureFairyPrizeSubView alloc] init]; - } - return _middleView; -} - -- (XPTreasureFairyPrizeSubView *)highView { - if (!_highView) { - _highView = [[XPTreasureFairyPrizeSubView alloc] init]; - } - return _highView; -} - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyPrizeRecordView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyPrizeRecordView.h deleted file mode 100644 index d7a4e9bc..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyPrizeRecordView.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// XPTreasureFairyPrizeRecordView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/21. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface XPTreasureFairyPrizeRecordView : UIView - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyPrizeRecordView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyPrizeRecordView.m deleted file mode 100644 index 7e6e859d..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyPrizeRecordView.m +++ /dev/null @@ -1,161 +0,0 @@ -// -// XPTreasureFairyPrizeRecordView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/21. -// - -#import "XPTreasureFairyPrizeRecordView.h" -///Third -#import -#import -///Tool -#import "DJDKMIMOMColor.h" -#import "Api+TreasureFairy.h" - -#import "NSArray+Safe.h" -///Model -#import "TreasureFairyInfoModel.h" -///View -#import "XPTreasureFairyPrizeRecordCell.h" - -@interface XPTreasureFairyPrizeRecordView () -///列表 -@property (nonatomic,strong) UITableView *tableView; -///数据源 -@property (nonatomic,strong) NSMutableArray *datasource; -///顶部的视图 -@property (nonatomic,strong) XPTreasureFairyPrizeRecordCell *headView; -@property (nonatomic,assign) NSInteger page; -@end -@implementation XPTreasureFairyPrizeRecordView - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initHeaderAndFooterRrfresh]; - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Refresh -- (void)initHeaderAndFooterRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - [self headerRefresh]; -} - -- (void)headerRefresh { - self.page = 1; - [Api treasureFairyForestDrawRecord:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - [self.tableView.mj_header endRefreshing]; - if (code == 200) { - [self.datasource removeAllObjects]; - NSArray * array = [TreasureFairyInfoModel mtowardsrixsAboutGarment:data.data]; - [self.datasource addObjectsFromArray:array]; - [self.tableView reloadData]; - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; - } - } page:@"1" pageSize:@"20"]; -} - -- (void)footerRefresh { - self.page++; - [Api treasureFairyForestDrawRecord:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - [self.tableView.mj_footer endRefreshing]; - if (code == 200) { - NSArray * array = [TreasureFairyInfoModel mtowardsrixsAboutGarment:data.data]; - if (array.count > 0) { - [self.datasource addObjectsFromArray:array]; - } - [self.tableView reloadData]; - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; - } - } page:[NSString stringWithFormat:@"%ld", self.page] pageSize:@"20"]; -} - - - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.tableView]; - self.tableView.tableHeaderView = self.headView; -} - -- (void)initSubViewConstraints { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.bottom.mas_equalTo(self).offset(-20); - }]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 44; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - XPTreasureFairyPrizeRecordCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPTreasureFairyPrizeRecordCell class])]; - if (cell == nil) { - cell = [[XPTreasureFairyPrizeRecordCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPTreasureFairyPrizeRecordCell class])]; - } - TreasureFairyInfoModel * info = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.recordInfo = info; - return cell; -} -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[XPTreasureFairyPrizeRecordCell class] forCellReuseIdentifier:NSStringFromClass([XPTreasureFairyPrizeRecordCell class])]; - } - return _tableView; -} - -- (XPTreasureFairyPrizeRecordCell *)headView { - if(!_headView) { - _headView = [[XPTreasureFairyPrizeRecordCell alloc] init]; - _headView.timeLabel.text = @"试炼时间"; - _headView.levelLabel.text = @"类型"; - _headView.prizeLabel.text = @"获得奖励"; - _headView.timeLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightMedium]; - _headView.levelLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightMedium]; - _headView.prizeLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightMedium]; - _headView.frame = CGRectMake(0, 0, 360, 30); - } - return _headView; -} - -- (NSMutableArray *)datasource { - if(!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyPrizeSubView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyPrizeSubView.h deleted file mode 100644 index a47130a5..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyPrizeSubView.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// XPTreasureFairyPrizeSubView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/21. -// - -#import -#import -NS_ASSUME_NONNULL_BEGIN - -@interface XPTreasureFairyPrizeSubView : UIView -///数据源 -@property (nonatomic,strong) NSArray *datasource; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyPrizeSubView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyPrizeSubView.m deleted file mode 100644 index 308daee9..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyPrizeSubView.m +++ /dev/null @@ -1,78 +0,0 @@ -// -// XPTreasureFairyPrizeSubView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/21. -// - -#import "XPTreasureFairyPrizeSubView.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" -#import "NSArray+Safe.h" -///View -#import "XPTreasureFairyPrizePoolCell.h" - -@interface XPTreasureFairyPrizeSubView () -///列表 -@property (nonatomic,strong) UICollectionView *collectionView; - -@end - -@implementation XPTreasureFairyPrizeSubView - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.collectionView]; -} - -- (void)initSubViewConstraints { - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self); - }]; -} - -#pragma mark - UICollectionViewDelegate, UICollectionViewDataSource> -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - XPTreasureFairyPrizePoolCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPTreasureFairyPrizePoolCell class]) forIndexPath:indexPath]; - TreasureFairyInfoModel * info = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.info = info; - return cell; -} - -#pragma mark - JXCategoryListContentViewDelegate -- (UIView *)listView { - return self; -} - -#pragma mark - Getters And Setters -- (UICollectionView *)collectionView{ - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.itemSize = CGSizeMake(90, 110); - layout.minimumLineSpacing = 10; - layout.minimumInteritemSpacing = 10; - layout.sectionInset = UIEdgeInsetsMake(0, 10, 0, 10); - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.backgroundColor = [UIColor clearColor]; - [_collectionView registerClass:[XPTreasureFairyPrizePoolCell class] forCellWithReuseIdentifier:NSStringFromClass([XPTreasureFairyPrizePoolCell class])]; - } - return _collectionView; -} -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairySendRecordView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairySendRecordView.h deleted file mode 100644 index 65bf662f..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairySendRecordView.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// XPTreasureFairySendRecordView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/23. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface XPTreasureFairySendRecordView : UIView - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairySendRecordView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairySendRecordView.m deleted file mode 100644 index dd3e5920..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairySendRecordView.m +++ /dev/null @@ -1,210 +0,0 @@ -// -// XPTreasureFairySendRecordView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/23. -// - -#import "XPTreasureFairySendRecordView.h" -///Third -#import -#import -///Tool -#import "DJDKMIMOMColor.h" -#import "Api+TreasureFairy.h" - -#import "NSArray+Safe.h" -#import "YUMIMacroUitls.h" -#import "MKJPopup.h" -///Model -#import "TreasureFairySendRecordModel.h" -///View -#import "XPTreasureFairySendRecordCell.h" -@interface XPTreasureFairySendRecordView () -///顶部的View -@property (nonatomic,strong) UIView *bottomView; -///显示标题 -@property (nonatomic,strong) UILabel *titleLabel; -///背景 -@property (nonatomic,strong) UIImageView *backImageView; -///列表 -@property (nonatomic,strong) UITableView *tableView; -@property (nonatomic,strong) NSMutableArray *datasource; -@property (nonatomic,assign) NSInteger page; -@end - -@implementation XPTreasureFairySendRecordView -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initHeaderAndFooterRrfresh]; - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Refresh -- (void)initHeaderAndFooterRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - [self headerRefresh]; -} - -- (void)headerRefresh { - self.page = 1; - [Api treasureFailySendAndAskRecordList:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - [self.tableView.mj_header endRefreshing]; - if (code == 200) { - [self.datasource removeAllObjects]; - NSArray * array = [TreasureFairySendRecordModel mtowardsrixsAboutGarment:data.data]; - [self.datasource addObjectsFromArray:array]; - [self.tableView reloadData]; - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; - } - } page:@"1" pageSize:@"20"]; -} - -- (void)footerRefresh { - self.page++; - [Api treasureFailySendAndAskRecordList:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - [self.tableView.mj_footer endRefreshing]; - if (code == 200) { - NSArray * array = [TreasureFairySendRecordModel mtowardsrixsAboutGarment:data.data]; - if (array.count > 0) { - [self.datasource addObjectsFromArray:array]; - } - [self.tableView reloadData]; - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; - } - } page:[NSString stringWithFormat:@"%ld", self.page] pageSize:@"20"]; -} -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backImageView]; - [self addSubview:self.bottomView]; - [self.backImageView addSubview:self.titleLabel]; - [self.backImageView addSubview:self.tableView]; -} - -- (void)initSubViewConstraints { - CGFloat kscale = 388.0 / 318.0; - self.frame = CGRectMake(0, 0, KScreenWidth, KScreenWidth * kscale + 134 * kScreenScale); - [self.bottomView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self); - make.top.mas_equalTo(self.backImageView.mas_bottom); - }]; - - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.top.mas_equalTo(self); - make.height.mas_equalTo(388); - make.width.mas_equalTo(318); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.backImageView).offset(52); - }]; - - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backImageView).inset(3); - make.top.mas_equalTo(self.backImageView).offset(82); - make.bottom.mas_equalTo(self.backImageView).offset(-42); - }]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 86; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - XPTreasureFairySendRecordCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPTreasureFairySendRecordCell class])]; - if (cell == nil) { - cell = [[XPTreasureFairySendRecordCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPTreasureFairySendRecordCell class])]; - } - TreasureFairySendRecordModel * record = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.recordInfo = record; - return cell; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; -} - -#pragma mark - Event Response -- (void)dismissView { - [MKJPopup dismiss]; -} -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[XPTreasureFairySendRecordCell class] forCellReuseIdentifier:NSStringFromClass([XPTreasureFairySendRecordCell class])]; - } - return _tableView; -} - -- (UIView *)bottomView { - if (!_bottomView) { - _bottomView = [[UIView alloc] init]; - _bottomView.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissView)]; - [_bottomView addGestureRecognizer:tap]; - } - return _bottomView; -} - -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_my_send_record_back"]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissView)]; - [_backImageView addGestureRecognizer:tap]; - } - return _backImageView; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - _titleLabel.textColor = [UIColor whiteColor]; - _titleLabel.text = @"收赠精灵记录"; - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} - -- (NSMutableArray *)datasource { - if(!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairySendView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairySendView.h deleted file mode 100644 index 1810c491..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairySendView.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// XPTreasureFairySendView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/23. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class TreasureFairyBallModel; -@interface XPTreasureFairySendView : UIView -///是否是赠送 -@property (nonatomic,assign) BOOL isSend; -///精灵球信息 -@property (nonatomic,strong) TreasureFairyBallModel *ballInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairySendView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairySendView.m deleted file mode 100644 index c7208e2f..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairySendView.m +++ /dev/null @@ -1,225 +0,0 @@ -// -// XPTreasureFairySendView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/23. -// - -#import "XPTreasureFairySendView.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" - -#import "MKJPopup.h" -#import "YUMIMacroUitls.h" -#import "Api+TreasureFairy.h" - -///Model -#import "TreasureFairyBallInfoModel.h" - -@interface XPTreasureFairySendView () -///消失 -@property (nonatomic,strong) UIView *dismissView; -///背景 -@property (nonatomic,strong) UIImageView *backImageView; -///显示标题 -@property (nonatomic,strong) UILabel *titleLabel; -///精灵球 -@property (nonatomic,strong) NetIndicateRegard *ballView; -///取消 -@property (nonatomic,strong) UIButton *cancleButton; -///确定 -@property (nonatomic,strong) UIButton *sureButton; - -@end - -@implementation XPTreasureFairySendView - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backImageView]; - [self addSubview:self.dismissView]; - - [self.backImageView addSubview:self.titleLabel]; - [self.backImageView addSubview:self.ballView]; - [self.backImageView addSubview:self.sureButton]; - [self.backImageView addSubview:self.cancleButton]; -} - -- (void)initSubViewConstraints { - self.frame = CGRectMake(0, 0, KScreenWidth, 285 + 183); - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(281, 285)); - make.centerX.mas_equalTo(self); - make.top.mas_equalTo(self); - }]; - - [self.dismissView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self); - make.top.mas_equalTo(self.backImageView.mas_bottom); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backImageView).inset(30); - make.top.mas_equalTo(self.backImageView).offset(45); - }]; - - [self.ballView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(90, 90)); - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(19); - }]; - - [self.cancleButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(104, 32)); - make.top.mas_equalTo(self.ballView.mas_bottom).offset(15); - make.right.mas_equalTo(self.backImageView.mas_centerX).offset(-12); - }]; - - [self.sureButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.cancleButton); - make.left.mas_equalTo(self.backImageView.mas_centerX).offset(12); - }]; -} - -#pragma mark - Event Response -- (void)cancleButtonAction:(UIButton *)sender { - [MKJPopup dismiss]; -} - -- (void)sureButtonAction:(UIButton *)sender { - [MKJPopup dismiss]; - if (self.ballInfo.elfId > 0 && self.ballInfo.uid > 0) { - NSString * elfId = [NSString stringWithFormat:@"%ld", self.ballInfo.elfId]; - NSString * uid = [NSString stringWithFormat:@"%ld", self.ballInfo.uid]; - if (self.isSend) { - [Api treasureFairySendFairyBall:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:@"赠送成功"]; - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; - } - } elfId:elfId targetUid:uid]; - } else { - [Api treasureFairyAskForFairyBall:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:@"已向好友发送索要信息"]; - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; - } - } elfId:elfId targetUid:uid]; - } - } -} - -- (void)dismissRecognizer { - [MKJPopup dismiss]; -} - -#pragma mark - Getters And Setters -- (void)setBallInfo:(TreasureFairyBallModel *)ballInfo { - _ballInfo = ballInfo; - if (_ballInfo) { - self.ballView.imageUrl = _ballInfo.elfPicUrl; - NSString * nick = _ballInfo.nick; - NSString * title; - if (self.isSend) { - title = [NSString stringWithFormat:@"确定赠送“%@“1张”%@“精灵卡吗?", nick, _ballInfo.elfName]; - } else { - title = [NSString stringWithFormat:@"确定向”%@“索要1张”%@“精灵卡吗?", nick, _ballInfo.elfName]; - } - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:15], NSForegroundColorAttributeName:[UIColor whiteColor]}]; - [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor colorAboutHexBWSttr:@"#FEF8AA"] range:[title rangeOfString:nick]]; - self.titleLabel.attributedText = attribute; - self.titleLabel.textAlignment = NSTextAlignmentCenter; - } -} - -- (void)setIsSend:(BOOL)isSend { - _isSend = isSend; - if (_isSend) { - [self.sureButton setTitle:@"确定" forState:UIControlStateNormal]; - } else { - [self.sureButton setTitle:@"索要" forState:UIControlStateNormal]; - } -} - -- (UIView *)dismissView { - if (!_dismissView) { - _dismissView = [[UIView alloc] init]; - _dismissView.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissRecognizer)]; - [_dismissView addGestureRecognizer:tap]; - } - return _dismissView; -} - -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_my_send_record_bg"]; - } - return _backImageView; -} - -- (NetIndicateRegard *)ballView { - if (!_ballView) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _ballView = [[NetIndicateRegard alloc] initWithConfig:config]; - _ballView.layer.masksToBounds = YES; - _ballView.layer.cornerRadius = 45; - _ballView.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - _ballView.layer.borderWidth = 0.5; - } - return _ballView; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.numberOfLines = 0; - } - return _titleLabel; -} - -- (UIButton *)cancleButton { - if (!_cancleButton) { - _cancleButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_cancleButton setTitle:@"关闭" forState:UIControlStateNormal]; - [_cancleButton setTitleColor:[DJDKMIMOMColor colorAboutHexBWSttr:@"#008573"] forState:UIControlStateNormal]; - _cancleButton.titleLabel.font = [UIFont systemFontOfSize:13]; - [_cancleButton setBackgroundImage:[UIImage imageNamed:@"room_treasure_fairy_store_result_close_bg"] forState:UIControlStateNormal]; - _cancleButton.layer.masksToBounds = YES; - _cancleButton.layer.cornerRadius = 10; - [_cancleButton addTarget:self action:@selector(cancleButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _cancleButton; -} - -- (UIButton *)sureButton { - if (!_sureButton) { - _sureButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_sureButton setTitleColor:[DJDKMIMOMColor colorAboutHexBWSttr:@"#8A4801"] forState:UIControlStateNormal]; - _sureButton.titleLabel.font = [UIFont systemFontOfSize:13]; - [_sureButton setBackgroundImage:[UIImage imageNamed:@"room_treasure_fairy_sure_bg"] forState:UIControlStateNormal]; - _sureButton.layer.masksToBounds = YES; - _sureButton.layer.cornerRadius = 10; - [_sureButton addTarget:self action:@selector(sureButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _sureButton; -} - - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyShopingRecordSubView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyShopingRecordSubView.h deleted file mode 100644 index 61d199a3..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyShopingRecordSubView.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// XPTreasureFairyShopingRecordSubView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/27. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface XPTreasureFairyShopingRecordSubView : UIView - -///是否是召唤 -@property (nonatomic,assign) BOOL isSummond; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyShopingRecordSubView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyShopingRecordSubView.m deleted file mode 100644 index e82fc9c4..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyShopingRecordSubView.m +++ /dev/null @@ -1,174 +0,0 @@ -// -// XPTreasureFairyShopingRecordSubView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/27. -// - -#import "XPTreasureFairyShopingRecordSubView.h" - -///Third -#import -#import -///Tool -#import "DJDKMIMOMColor.h" -#import "Api+TreasureFairy.h" - -#import "NSArray+Safe.h" -#import "YUMIMacroUitls.h" -///Model -#import "TreasureFairyConvertRecordModel.h" -///View -#import "XPTreasureFairyShopingRecordCell.h" - -@interface XPTreasureFairyShopingRecordSubView () -///列表 -@property (nonatomic,strong) UITableView *tableView; -///数据源 -@property (nonatomic,strong) NSMutableArray *datasource; -///顶部的视图 -@property (nonatomic,strong) XPTreasureFairyShopingRecordCell *headView; -@property (nonatomic,assign) NSInteger page; -@end -@implementation XPTreasureFairyShopingRecordSubView - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initHeaderAndFooterRrfresh]; - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Refresh -- (void)initHeaderAndFooterRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; -} - -- (void)headerRefresh { - self.page = 1; - [Api treasureFairyConvertRecord:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - [self.tableView.mj_header endRefreshing]; - if (code == 200) { - [self.datasource removeAllObjects]; - NSArray * array = [TreasureFairyConvertRecordModel mtowardsrixsAboutGarment:data.data]; - [self.datasource addObjectsFromArray:array]; - [self.tableView reloadData]; - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; - } - } convertType:self.isSummond? @"1":@"2" page:@"1" pageSize:@"20"]; -} - -- (void)footerRefresh { - self.page++; - [Api treasureFairyConvertRecord:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - [self.tableView.mj_footer endRefreshing]; - if (code == 200) { - NSArray * array = [TreasureFairyConvertRecordModel mtowardsrixsAboutGarment:data.data]; - if (array.count > 0) { - [self.datasource addObjectsFromArray:array]; - } - [self.tableView reloadData]; - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; - } - } convertType:self.isSummond?@"1":@"2" page:[NSString stringWithFormat:@"%ld", self.page] pageSize:@"20"]; -} -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.tableView]; - self.tableView.tableHeaderView = self.headView; -} - -- (void)initSubViewConstraints { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.bottom.mas_equalTo(self).offset(-20); - }]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 44; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - XPTreasureFairyShopingRecordCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPTreasureFairyShopingRecordCell class])]; - if (cell == nil) { - cell = [[XPTreasureFairyShopingRecordCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPTreasureFairyShopingRecordCell class])]; - } - TreasureFairyConvertRecordModel *recordModel = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.isSummon = self.isSummond; - cell.recordModel = recordModel; - return cell; -} - -#pragma mark - Getters And Setters -- (void)setIsSummond:(BOOL)isSummond { - _isSummond = isSummond; - self.headView.isSummon = _isSummond; - if (_isSummond) { - _headView.timeLabel.text = @"召唤时间"; - _headView.levelLabel.text = @"类型"; - _headView.prizeLabel.text = @"获得奖励"; - _headView.prizeLabel.textColor = UIColor.whiteColor; - } else { - _headView.timeLabel.text = @"兑换时间"; - _headView.prizeLabel.text = @"获得奖励"; - _headView.prizeLabel.textColor = UIColor.whiteColor; - } - [self headerRefresh]; -} - -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[XPTreasureFairyShopingRecordCell class] forCellReuseIdentifier:NSStringFromClass([XPTreasureFairyShopingRecordCell class])]; - } - return _tableView; -} - -- (XPTreasureFairyShopingRecordCell *)headView { - if(!_headView) { - _headView = [[XPTreasureFairyShopingRecordCell alloc] init]; - _headView.timeLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightMedium]; - _headView.levelLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightMedium]; - _headView.prizeLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightMedium]; - _headView.frame = CGRectMake(0, 0, KScreenWidth, 30); - } - return _headView; -} - -- (NSMutableArray *)datasource { - if(!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyShopingRecordView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyShopingRecordView.h deleted file mode 100644 index 5f98c2a3..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyShopingRecordView.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// XPTreasureFairyShopingRecordView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/27. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface XPTreasureFairyShopingRecordView : UIView - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyShopingRecordView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyShopingRecordView.m deleted file mode 100644 index 13dad07c..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyShopingRecordView.m +++ /dev/null @@ -1,168 +0,0 @@ -// -// XPTreasureFairyShopingRecordView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/27. -// - -#import "XPTreasureFairyShopingRecordView.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" -#import "MKJPopup.h" -///View -#import "XPTreasureFairyShopingRecordSubView.h" - -@interface XPTreasureFairyShopingRecordView () - -///背景 -@property (nonatomic,strong) UIImageView *backImageView; -/// -@property (nonatomic,strong) UIView *bottomView; -///精灵召唤 -@property (nonatomic,strong) UIButton *summonButton; -///随便兑换 -@property (nonatomic,strong) UIButton *exchangeButton; -///记录 -@property (nonatomic,strong) XPTreasureFairyShopingRecordSubView *summonView; -///奖池 -@property (nonatomic,strong) XPTreasureFairyShopingRecordSubView *exchangeView; -@end - -@implementation XPTreasureFairyShopingRecordView - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backImageView]; - [self addSubview:self.bottomView]; - [self.backImageView addSubview:self.summonButton]; - [self.backImageView addSubview:self.exchangeButton]; - [self.backImageView addSubview:self.summonView]; - [self.backImageView addSubview:self.exchangeView]; -} - -- (void)initSubViewConstraints { - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.centerX.mas_equalTo(self); - make.size.mas_equalTo(CGSizeMake(321, 386)); - }]; - - [self.bottomView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self); - make.top.mas_equalTo(self.backImageView.mas_bottom); - }]; - - [self.summonButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(120, 39)); - make.right.mas_equalTo(self.backImageView.mas_centerX).offset(-18); - make.top.mas_equalTo(self.backImageView); - }]; - - [self.exchangeButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(120, 39)); - make.left.mas_equalTo(self.backImageView.mas_centerX).offset(18); - make.top.mas_equalTo(self.backImageView); - }]; - - [self.summonView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backImageView).inset(5); - make.bottom.mas_equalTo(self.backImageView).offset(-30); - make.top.mas_equalTo(self.summonButton.mas_bottom).offset(24); - }]; - - [self.exchangeView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backImageView).inset(5); - make.bottom.mas_equalTo(self.backImageView).offset(-30); - make.top.mas_equalTo(self.exchangeButton.mas_bottom).offset(24); - }]; -} - - -#pragma mark - Event Response -- (void)summonButtonAction:(UIButton *)sender { - self.exchangeButton.selected = NO; - sender.selected = YES; - self.exchangeView.hidden = YES; - self.summonView.hidden = NO; -} - -- (void)exchangeButtonAction:(UIButton *)sender { - sender.selected = YES; - self.summonButton.selected = NO; - self.exchangeView.hidden = NO; - self.summonView.hidden = YES; -} - -- (void)dismissView { - [MKJPopup dismiss]; -} - -#pragma mark - Getters And Setters -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_pool_bg"]; - } - return _backImageView; -} - -- (UIView *)bottomView { - if (!_bottomView) { - _bottomView = [[UIView alloc] init]; - _bottomView.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissView)]; - [_bottomView addGestureRecognizer:tap]; - } - return _bottomView; -} - -- (UIButton *)summonButton { - if (!_summonButton) { - _summonButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_summonButton setImage:[UIImage imageNamed:@"room_treasure_fairy_shoping_summon_record_title_normal"] forState:UIControlStateNormal]; - [_summonButton setImage:[UIImage imageNamed:@"room_treasure_fairy_shoping_summon_record_title_select"] forState:UIControlStateSelected]; - [_summonButton addTarget:self action:@selector(summonButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - _summonButton.selected = YES; - } - return _summonButton; -} - -- (UIButton *)exchangeButton { - if (!_exchangeButton) { - _exchangeButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_exchangeButton setImage:[UIImage imageNamed:@"room_treasure_fairy_shoping_exchange_record_title_normal"] forState:UIControlStateNormal]; - [_exchangeButton setImage:[UIImage imageNamed:@"room_treasure_fairy_shoping_exchange_record_title_select"] forState:UIControlStateSelected]; - [_exchangeButton addTarget:self action:@selector(exchangeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - _exchangeButton.selected = NO; - } - return _exchangeButton; -} - -- (XPTreasureFairyShopingRecordSubView *)summonView { - if(!_summonView) { - _summonView = [[XPTreasureFairyShopingRecordSubView alloc] init]; - _summonView.isSummond = YES; - } - return _summonView; -} - -- (XPTreasureFairyShopingRecordSubView *)exchangeView { - if (!_exchangeView) { - _exchangeView = [[XPTreasureFairyShopingRecordSubView alloc] init]; - _exchangeView.hidden = YES; - _exchangeView.isSummond = NO; - } - return _exchangeView; -} -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyShopingView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyShopingView.h deleted file mode 100644 index 5e0c76f9..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyShopingView.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// XPTreasureFairyShopingView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/27. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class TreasureFairyUserInfoModel; -@interface XPTreasureFairyShopingView : UIView -///房主的uid -@property (nonatomic,strong) NSString *roomUid; -///用户信息 -@property (nonatomic,strong) TreasureFairyUserInfoModel *userInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyShopingView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyShopingView.m deleted file mode 100644 index 469590af..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyShopingView.m +++ /dev/null @@ -1,269 +0,0 @@ -// -// XPTreasureFairyShopingView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/27. -// -///兑换商店 -#import "XPTreasureFairyShopingView.h" -///Third -#import -///Tool -#import "YUMIMacroUitls.h" -#import "XPTreasureFairySummonView.h" -#import "XPTreasureFairyExchangeView.h" -#import "MKJPopup.h" -///View -#import "XPTreasureFairyShopingRecordView.h" - -@interface XPTreasureFairyShopingView () -///返回按钮 -@property (nonatomic,strong) UIButton *backButton; -///消失 -@property (nonatomic,strong) UIView *dismissView; -///背景 -@property (nonatomic,strong) UIImageView *backImageView; -///显示标题 -@property (nonatomic,strong) UIImageView *titleImageView; -///分段控制器 -@property (nonatomic,strong) UIImageView *segmentView; -///召唤 -@property (nonatomic,strong) UIButton *summondButton; -//兑换 -@property (nonatomic,strong) UIButton *exchangeButton; -///记录 -@property (nonatomic,strong) UIButton *recordButton; -///合成 -@property (nonatomic,strong) XPTreasureFairySummonView *summonView; -///兑换 -@property (nonatomic,strong) XPTreasureFairyExchangeView *exchangeView; -@end - -@implementation XPTreasureFairyShopingView - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.dismissView]; - [self addSubview:self.backImageView]; - [self.backImageView addSubview:self.titleImageView]; - [self.backImageView addSubview:self.backButton]; - [self.backImageView addSubview:self.recordButton]; - [self.backImageView addSubview:self.summonView]; - [self.backImageView addSubview:self.exchangeView]; - - [self.backImageView addSubview:self.segmentView]; - [self.backImageView addSubview:self.exchangeButton]; - [self.backImageView addSubview:self.summondButton]; -} - -- (void)initSubViewConstraints { - CGFloat kscale = 580.0 / 375.0; - [self.dismissView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.bottom.mas_equalTo(self); - }]; - - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self); - make.height.mas_equalTo(KScreenWidth * kscale); - }]; - - [self.titleImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(180, 18)); - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.backImageView).offset(60* kScreenScale); - }]; - - [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(28, 28)); - make.left.mas_equalTo(self.backImageView).offset(15); - make.top.mas_equalTo(self.backImageView).offset(40 * kScreenScale); - }]; - - [self.segmentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(345, 41)); - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.titleImageView.mas_bottom).offset(17 * kScreenScale); - }]; - - [self.summondButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(162, 51)); - make.left.mas_equalTo(self.segmentView.mas_left).offset(5); - make.centerY.mas_equalTo(self.segmentView).offset(1.5); - }]; - - [self.exchangeButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.summondButton); - make.left.mas_equalTo(self.summondButton.mas_right).offset(1); - }]; - - [self.summonView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.segmentView.mas_bottom).offset(15); - make.left.right.bottom.mas_equalTo(self.backImageView); - }]; - - [self.exchangeView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.summonView); - }]; - - [self.recordButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(23, 65)); - make.top.mas_equalTo(self.backButton); - make.right.mas_equalTo(self.backImageView).offset(0); - }]; -} -#pragma mark - Event Response -- (void)dismissRecognizer { - [UIView animateWithDuration:0.3 animations:^{ - CGRect rect = self.frame; - rect.origin.y = KScreenHeight; - self.frame = rect; - } completion:^(BOOL finished) { - [self removeFromSuperview]; - }]; -} - -- (void)recordButtonAction:(UIButton *)sender { - XPTreasureFairyShopingRecordView * result1 = [[XPTreasureFairyShopingRecordView alloc] init]; - CGFloat kscale1 = 580.0 / 375.0; - result1.frame = CGRectMake(0, 0, KScreenWidth, KScreenWidth * kscale1); - [MKJPopup popupRegard:result1 style:MKJPopupStyleActionSheet]; -} - -- (void)middleButtonAction:(UIButton *)sender { - sender.selected = YES; - self.exchangeButton.selected = NO; - [UIView animateWithDuration:0.3 animations:^{ - self.summonView.hidden = NO; - self.exchangeView.hidden = YES; - }]; - -} - -- (void)highButtonAction:(UIButton *)sender { - sender.selected = YES; - self.summondButton.selected = NO; - [UIView animateWithDuration:0.3 animations:^{ - self.summonView.hidden = YES; - self.exchangeView.hidden = NO; - }]; -} - - -#pragma mark - Getters And Setters -- (void)setRoomUid:(NSString *)roomUid { - _roomUid = roomUid; - self.exchangeView.roomUid = roomUid; - self.summonView.roomUid = roomUid; -} - -- (void)setUserInfo:(TreasureFairyUserInfoModel *)userInfo { - _userInfo = userInfo; - self.exchangeView.userInfo = userInfo; -} - -- (UIButton *)backButton { - if (!_backButton) { - _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backButton setImage:[UIImage imageNamed:@"room_treasure_fairy_back"] forState:UIControlStateNormal]; - [_backButton setImage:[UIImage imageNamed:@"room_treasure_fairy_back"] forState:UIControlStateSelected]; - [_backButton addTarget:self action:@selector(dismissRecognizer) forControlEvents:UIControlEventTouchUpInside]; - } - return _backButton; -} - -- (UIView *)dismissView { - if (!_dismissView) { - _dismissView = [[UIView alloc] init]; - _dismissView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissRecognizer)]; - [_dismissView addGestureRecognizer:tap]; - } - return _dismissView; -} - -- (UIImageView *)titleImageView { - if (!_titleImageView) { - _titleImageView = [[UIImageView alloc] init]; - _titleImageView.userInteractionEnabled = YES; - _titleImageView.image = [UIImage imageNamed:@"room_treasure_shoping_title"]; - } - return _titleImageView; -} - -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_my_friend_bg"]; - } - return _backImageView; -} - -- (UIImageView *)segmentView { - if (!_segmentView) { - _segmentView = [[UIImageView alloc] init]; - _segmentView.image = [UIImage imageNamed:@"room_treasure_fairy_my_segment_bg"]; - _segmentView.userInteractionEnabled = YES; - } - return _segmentView; -} - -- (UIButton *)summondButton { - if (!_summondButton) { - _summondButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_summondButton setImage:[UIImage imageNamed:@"room_treasure_fairy_shoping_summon_title_normal"] forState:UIControlStateNormal]; - [_summondButton setImage:[UIImage imageNamed:@"room_treasure_fairy_shoping_summon_title_select"] forState:UIControlStateSelected]; - [_summondButton addTarget:self action:@selector(middleButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - _summondButton.selected = YES; - } - return _summondButton; -} - -- (UIButton *)exchangeButton { - if (!_exchangeButton) { - _exchangeButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_exchangeButton setImage:[UIImage imageNamed:@"room_treasure_fairy_shoping_exchange_title_normal"] forState:UIControlStateNormal]; - [_exchangeButton setImage:[UIImage imageNamed:@"room_treasure_fairy_shoping_exchange_title_select"] forState:UIControlStateSelected]; - [_exchangeButton addTarget:self action:@selector(highButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _exchangeButton; -} - -- (UIButton *)recordButton { - if (!_recordButton) { - _recordButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_recordButton setBackgroundImage:[UIImage imageNamed:@"room_treasure_fairy_trials_record_bg"] forState:UIControlStateNormal]; - [_recordButton setBackgroundImage:[UIImage imageNamed:@"room_treasure_fairy_trials_record_bg"] forState:UIControlStateSelected]; - _recordButton.titleLabel.numberOfLines = 0; - _recordButton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_recordButton setTitle:@"兑\n换\n记\n录" forState:UIControlStateNormal]; - [_recordButton addTarget:self action:@selector(recordButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _recordButton; -} - -- (XPTreasureFairySummonView *)summonView { - if(!_summonView) { - _summonView = [[XPTreasureFairySummonView alloc] init]; - } - return _summonView; -} - -- (XPTreasureFairyExchangeView *)exchangeView { - if(!_exchangeView) { - _exchangeView = [[XPTreasureFairyExchangeView alloc] init]; - _exchangeView.hidden = YES; - } - return _exchangeView; -} -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyStoreResultSmallView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyStoreResultSmallView.h deleted file mode 100644 index b576d9a7..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyStoreResultSmallView.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// XPTreasureFairyStoreResultSmallView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/23. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface XPTreasureFairyStoreResultSmallView : UIView -///显示标题 -@property (nonatomic,strong, readonly) UILabel *titleLabel; -///是否是试炼的结果 -@property (nonatomic,assign) BOOL isTrialsResult; -@property (nonatomic,strong) NSArray *datasource; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyStoreResultSmallView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyStoreResultSmallView.m deleted file mode 100644 index eb22c3fc..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyStoreResultSmallView.m +++ /dev/null @@ -1,169 +0,0 @@ -// -// XPTreasureFairyStoreResultSmallView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/23. -// - -#import "XPTreasureFairyStoreResultSmallView.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "MKJPopup.h" -#import "NSArray+Safe.h" -///Model -#import "TreasureFairyInfoModel.h" -///View -#import "XPTreasureFairyStoreResultCell.h" - -@interface XPTreasureFairyStoreResultSmallView () -///顶部的View -@property (nonatomic,strong) UIView *bottomView; -///显示标题 -@property (nonatomic,strong) UILabel *titleLabel; -///背景 -@property (nonatomic,strong) UIImageView *backImageView; -///只有一个cell的时候 -@property (nonatomic,strong) XPTreasureFairyStoreResultCell *oneGiftView; -///关闭按钮 -@property (nonatomic,strong) UIButton *closeButton; -@end - - -@implementation XPTreasureFairyStoreResultSmallView - - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backImageView]; - [self addSubview:self.bottomView]; - [self.backImageView addSubview:self.titleLabel]; - [self.backImageView addSubview:self.oneGiftView]; - [self.backImageView addSubview:self.closeButton]; -} - -- (void)initSubViewConstraints { - self.frame = CGRectMake(0, 0, KScreenWidth, 281 + 183); - [self.bottomView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self); - make.top.mas_equalTo(self.backImageView.mas_bottom); - }]; - - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.top.mas_equalTo(self); - make.height.mas_equalTo(285); - make.width.mas_equalTo(281); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.backImageView).offset(54); - }]; - - [self.closeButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(104, 32)); - make.centerX.mas_equalTo(self.backImageView); - make.bottom.mas_equalTo(self.backImageView).offset(-31); - }]; - - [self.oneGiftView mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(110); - make.width.mas_equalTo(90); - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.backImageView).offset(84); - }]; -} - -#pragma mark - Event Response -- (void)closeButtonAction:(UIButton *)sender { - [MKJPopup dismiss]; -} - -- (void)dismissView { - [MKJPopup dismiss]; -} - - -#pragma mark - Getters And Setters -- (void)setDatasource:(NSArray *)datasource { - _datasource = datasource; - if(_datasource) { - if (self.isTrialsResult) { - TreasureFairyBallModel * info = [_datasource secureGroalTowardsIndictowardsrix1:0]; - self.titleLabel.text = @"获得精灵"; - self.oneGiftView.ballInfo = info; - } else { - TreasureFairyInfoModel * info = [_datasource secureGroalTowardsIndictowardsrix1:0]; - if (info.propType == TreasureFairyPropType_Piece) { - self.titleLabel.text = @"意外发现"; - } else { - self.titleLabel.text = @"获得精灵"; - } - self.oneGiftView.prizeInfo = info; - } - - } -} - -- (UIView *)bottomView { - if (!_bottomView) { - _bottomView = [[UIView alloc] init]; - _bottomView.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissView)]; - [_bottomView addGestureRecognizer:tap]; - } - return _bottomView; -} - -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_store_result_small_bg"]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissView)]; - [_backImageView addGestureRecognizer:tap]; - } - return _backImageView; -} - -- (XPTreasureFairyStoreResultCell *)oneGiftView { - if (!_oneGiftView) { - _oneGiftView = [[XPTreasureFairyStoreResultCell alloc] init]; - } - return _oneGiftView; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - _titleLabel.textColor = [UIColor whiteColor]; - _titleLabel.text = @"获得精灵"; - } - return _titleLabel; -} - -- (UIButton *)closeButton { - if (!_closeButton) { - _closeButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_closeButton setTitle:@"关闭" forState:UIControlStateNormal]; - [_closeButton setTitleColor:[DJDKMIMOMColor colorAboutHexBWSttr:@"#008573"] forState:UIControlStateNormal]; - _closeButton.titleLabel.font = [UIFont systemFontOfSize:13]; - [_closeButton setBackgroundImage:[UIImage imageNamed:@"room_treasure_fairy_store_result_close_bg"] forState:UIControlStateNormal]; - [_closeButton addTarget:self action:@selector(closeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _closeButton; -} - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyStoreResultView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyStoreResultView.h deleted file mode 100644 index 29a74338..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyStoreResultView.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// XPTreasureFairyStoreResultView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/20. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface XPTreasureFairyStoreResultView : UIView - -@property (nonatomic,strong) NSArray *datasource; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyStoreResultView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyStoreResultView.m deleted file mode 100644 index fc65c9c1..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyStoreResultView.m +++ /dev/null @@ -1,220 +0,0 @@ -// -// XPTreasureFairyStoreResultView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/20. -// - -#import "XPTreasureFairyStoreResultView.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "MKJPopup.h" -#import "NSArray+Safe.h" -///Model -#import "TreasureFairyInfoModel.h" -///View -#import "XPTreasureFairyStoreResultCell.h" - -@interface XPTreasureFairyStoreResultView () -///顶部的View -@property (nonatomic,strong) UIView *bottomView; -///显示标题 -@property (nonatomic,strong) UILabel *titleLabel; -///背景 -@property (nonatomic,strong) UIImageView *backImageView; -///只有一个cell的时候 -@property (nonatomic,strong) XPTreasureFairyStoreResultCell *oneGiftView; -///列表 -@property (nonatomic,strong) UICollectionView *collectionView; -///关闭按钮 -@property (nonatomic,strong) UIButton *closeButton; -@end - - -@implementation XPTreasureFairyStoreResultView - - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backImageView]; - [self addSubview:self.bottomView]; - [self.backImageView addSubview:self.titleLabel]; - [self.backImageView addSubview:self.oneGiftView]; - [self.backImageView addSubview:self.collectionView]; - [self.backImageView addSubview:self.closeButton]; -} - -- (void)initSubViewConstraints { - CGFloat kscale = 364.0 / 375.0; - self.frame = CGRectMake(0, 0, KScreenWidth, KScreenWidth * kscale + 89 * kScreenScale); - [self.bottomView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self); - make.top.mas_equalTo(self.backImageView.mas_bottom); - }]; - - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.top.mas_equalTo(self); - make.height.mas_equalTo(388); - make.width.mas_equalTo(318); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.backImageView).offset(52); - }]; - - [self.closeButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(104, 32)); - make.centerX.mas_equalTo(self.backImageView); - make.bottom.mas_equalTo(self.backImageView).offset(-31); - }]; - - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.backImageView).offset(87); - make.height.mas_equalTo(110 * 2 + 10); - make.left.right.mas_equalTo(self.backImageView); - }]; - - [self.oneGiftView mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(110); - make.width.mas_equalTo(90); - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.backImageView).offset(129 * kScreenScale); - }]; -} - -#pragma mark - Event Response -- (void)closeButtonAction:(UIButton *)sender { - [MKJPopup dismiss]; -} - -- (void)dismissView { - [MKJPopup dismiss]; -} - -#pragma mark - UICollectionViewDelegate And UICollectionViewDataSoure -- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - XPTreasureFairyStoreResultCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPTreasureFairyStoreResultCell class]) forIndexPath:indexPath]; - TreasureFairyInfoModel * info = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.prizeInfo = info; - return cell; -} - -#pragma mark - Getters And Setters -- (void)setDatasource:(NSArray *)datasource { - _datasource = datasource; - if (_datasource.count > 1) { - self.collectionView.hidden = NO; - self.oneGiftView.hidden = YES; - [self.collectionView reloadData]; - TreasureFairyInfoModel * pieceInfo; - for (TreasureFairyInfoModel * info in _datasource) { - if (info.propType == TreasureFairyPropType_Piece) { - pieceInfo = info; - break; - } - } - if (pieceInfo) { - self.titleLabel.text = @"意外发现"; - } else { - self.titleLabel.text = @"获得精灵"; - } - } else { - self.oneGiftView.hidden = NO; - self.collectionView.hidden = YES; - if (_datasource.count == 1) { - TreasureFairyInfoModel * info = [_datasource secureGroalTowardsIndictowardsrix1:0]; - if(info.propType == TreasureFairyPropType_Piece) { - self.titleLabel.text = @"意外发现"; - } else { - self.titleLabel.text = @"获得精灵"; - } - self.oneGiftView.prizeInfo = _datasource.firstObject; - } - } -} - -- (UICollectionView *)collectionView{ - if (!_collectionView) { - UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; - layout.itemSize = CGSizeMake(90, 110); - layout.sectionInset = UIEdgeInsetsMake(0, 13, 0, 13); - layout.minimumLineSpacing = 10; - layout.minimumInteritemSpacing = 10; - _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; - _collectionView.dataSource = self; - _collectionView.delegate = self; - _collectionView.backgroundColor = [UIColor clearColor]; - [_collectionView registerClass:[XPTreasureFairyStoreResultCell class] forCellWithReuseIdentifier:NSStringFromClass([XPTreasureFairyStoreResultCell class])]; - } - return _collectionView; -} - -- (UIView *)bottomView { - if (!_bottomView) { - _bottomView = [[UIView alloc] init]; - _bottomView.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissView)]; - [_bottomView addGestureRecognizer:tap]; - } - return _bottomView; -} - -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_store_result_bg"]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissView)]; - [_backImageView addGestureRecognizer:tap]; - } - return _backImageView; -} - -- (XPTreasureFairyStoreResultCell *)oneGiftView { - if (!_oneGiftView) { - _oneGiftView = [[XPTreasureFairyStoreResultCell alloc] init]; - } - return _oneGiftView; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - _titleLabel.textColor = [UIColor whiteColor]; - _titleLabel.text = @"获得精灵"; - } - return _titleLabel; -} - -- (UIButton *)closeButton { - if (!_closeButton) { - _closeButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_closeButton setTitle:@"关闭" forState:UIControlStateNormal]; - [_closeButton setTitleColor:[DJDKMIMOMColor colorAboutHexBWSttr:@"#008573"] forState:UIControlStateNormal]; - _closeButton.titleLabel.font = [UIFont systemFontOfSize:13]; - [_closeButton setBackgroundImage:[UIImage imageNamed:@"room_treasure_fairy_store_result_close_bg"] forState:UIControlStateNormal]; - [_closeButton addTarget:self action:@selector(closeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _closeButton; -} - - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyStoreView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyStoreView.h deleted file mode 100644 index 38be5d03..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyStoreView.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// XPTreasureFairyStoreView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/20. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - - - -@interface XPTreasureFairyStoreView : UIView -@property (nonatomic,strong) NSString *roomUid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyStoreView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyStoreView.m deleted file mode 100644 index a7714393..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyStoreView.m +++ /dev/null @@ -1,904 +0,0 @@ -// -// XPTreasureFairyStoreView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/20. -// 精灵密藏 - -#import "XPTreasureFairyStoreView.h" -///Third -#import -#import -///Tool - -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "MKJPopup.h" -#import "Api+TreasureFairy.h" - -#import "NSArray+Safe.h" -#import "YUMIWeakIntratemporalr.h" -///Model -#import "TreasureFairyInfoModel.h" -#import "TreasureFairyUserInfoModel.h" -///View -#import "XPTreasureFairyPoolRecordView.h" -#import "XPTreasureFairyStoreResultView.h" -#import "XPTreasureFairyStoreResultSmallView.h" -#import "XPTreasureFairyMyView.h" -#import "XPTreasureFairyTrialsView.h" -#import "XPTreasureFairyShopingView.h" - -@interface XPTreasureFairyStoreView () -{ - NSTimer * timer; -} -///返回按钮 -@property (nonatomic,strong) UIButton *backButton; -///消失 -@property (nonatomic,strong) UIView *dismissView; -///背景 -@property (nonatomic,strong) UIImageView *backImageView; -///显示标题 -@property (nonatomic,strong) UIImageView *titleImageView; -///顶部的工具 -@property (nonatomic,strong) UIStackView *toolStackView; -///我的精灵 -@property (nonatomic,strong) UIButton *myFairyButton; -///精灵历练 -@property (nonatomic,strong) UIButton *fairyExPerButton; -///兑换商店 -@property (nonatomic,strong) UIButton *shopingButton; -///奖池/记录 -@property (nonatomic,strong) UIButton *recordButton; -///左边 -@property (nonatomic,strong) UIButton *leftButton; -///又边的 -@property (nonatomic,strong) UIButton *rightButton; -///森林 -@property (nonatomic,strong) UIImageView *forestImageView; -///动画 -@property (nonatomic,strong) VAPView *forestView; -///提示 -@property (nonatomic,strong) UILabel *tipsLabel; -///覆盖的 -@property (nonatomic,strong) UIImageView *coverImageView; -///一次 -@property (nonatomic,strong) UIButton *oneButton; -///十次 -@property (nonatomic,strong) UIButton *tenButton; -///用户信息 -@property (nonatomic,strong) UIImageView *userImageView; -///头像 -@property (nonatomic,strong) NetIndicateRegard *avatarImageView; -///名字 -@property (nonatomic,strong) UILabel *nickLabel; -///初级 -@property (nonatomic,strong) UIImageView *normalImaegView; -///初级 -@property (nonatomic,strong) UILabel *normalLabel; -///中级 -@property (nonatomic,strong) UIImageView *middleImaegView; -///中级 -@property (nonatomic,strong) UILabel *middlelLabel; -///高级 -@property (nonatomic,strong) UIImageView *highImaegView; -///高级 -@property (nonatomic,strong) UILabel *highLabel; -///类型 -@property (nonatomic,assign) TreasureFairyStoreType storeType; -@property (nonatomic,strong) NSArray *lowList; -@property (nonatomic,strong) NSArray *middleList; -@property (nonatomic,strong) NSArray *highList; -///结果 -@property (nonatomic,strong) NSArray *resultList; -///是否结束了 -@property (nonatomic,assign) BOOL isFinish; -///是否已经展示结果 -@property (nonatomic,assign) BOOL isShowResult; -///用户信息 -@property (nonatomic,strong) TreasureFairyUserInfoModel *userInfo; -@end - -@implementation XPTreasureFairyStoreView - - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initHttpRequest]; - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initHttpRequest { - [Api treasureFailyForestUserInfo:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - TreasureFairyUserInfoModel * info = [TreasureFairyUserInfoModel mtowardsrixAboutJSON:data.data]; - self.userInfo = info; - self.avatarImageView.imageUrl = info.avatar; - NSString * nick = info.nick; - if (nick.length > 6) { - nick = [NSString stringWithFormat:@"%@…", [nick substringToIndex:6]]; - } - self.nickLabel.text = nick; - self.middlelLabel.text = [NSString stringWithFormat:@"%ld", info.middleBallNum]; - self.normalLabel.text = [NSString stringWithFormat:@"%ld", info.lowBallNum]; - self.highLabel.text = [NSString stringWithFormat:@"%ld", info.highBallNum]; - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; - } - }]; - - [Api treasureFailyForestItems:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSArray * array = [TreasureFairyInfoModel mtowardsrixsAboutGarment:data.data]; - self.lowList = array; - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; - } - } poolLevel:@"1"]; - - [Api treasureFailyForestItems:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSArray * array = [TreasureFairyInfoModel mtowardsrixsAboutGarment:data.data]; - self.middleList = array; - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; - } - } poolLevel:@"2"]; - - [Api treasureFailyForestItems:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSArray * array = [TreasureFairyInfoModel mtowardsrixsAboutGarment:data.data]; - self.highList = array; - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; - } - } poolLevel:@"3"]; -} - - -- (void)initSubViews { - [self addSubview:self.dismissView]; - [self addSubview:self.backImageView]; - [self addSubview:self.titleImageView]; - [self addSubview:self.backButton]; - [self addSubview:self.toolStackView]; - [self addSubview:self.forestImageView]; - [self addSubview:self.tipsLabel]; - [self addSubview:self.coverImageView]; - [self addSubview:self.leftButton]; - [self addSubview:self.rightButton]; - [self addSubview:self.oneButton]; - [self addSubview:self.tenButton]; - [self addSubview:self.userImageView]; - - [self.userImageView addSubview:self.avatarImageView]; - [self.userImageView addSubview:self.nickLabel]; - [self.userImageView addSubview:self.normalImaegView]; - [self.userImageView addSubview:self.normalLabel]; - [self.userImageView addSubview:self.middleImaegView]; - [self.userImageView addSubview:self.middlelLabel]; - [self.userImageView addSubview:self.highImaegView]; - [self.userImageView addSubview:self.highLabel]; - - [self.toolStackView addArrangedSubview:self.myFairyButton]; - [self.toolStackView addArrangedSubview:self.fairyExPerButton]; - [self.toolStackView addArrangedSubview:self.shopingButton]; - [self.toolStackView addArrangedSubview:self.recordButton]; - self.isFinish = YES; - self.storeType = TreasureFairyStoreType_Normal; -} - -- (void)initSubViewConstraints { - - CGFloat kscale = 580.0 / 375.0; - - [self.dismissView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.bottom.mas_equalTo(self.backImageView.mas_top); - }]; - - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self); - make.height.mas_equalTo(KScreenWidth * kscale); - }]; - - [self.titleImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(153, 78)); - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.backImageView); - }]; - - [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(28, 28)); - make.left.mas_equalTo(self.backImageView).offset(15); - make.top.mas_equalTo(self.backImageView).offset(40 * kScreenScale); - }]; - - [self.toolStackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.backImageView).offset(-15); - make.top.mas_equalTo(self.backImageView).offset(88 * kScreenScale); - }]; - - [self.recordButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(50, 42)); - }]; - - [self.shopingButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(50, 42)); - }]; - - [self.fairyExPerButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(50, 42)); - }]; - - [self.myFairyButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(50, 42)); - }]; - - [self.coverImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(370, 273)); - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.backImageView).offset(139 * kScreenScale); - }]; - - [self.forestImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(339, 261)); - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.coverImageView).offset(11 * kScreenScale); - }]; - - [self.leftButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(32, 32)); - make.left.mas_equalTo(self.coverImageView).offset(26 * kScreenScale); - make.centerY.mas_equalTo(self.forestImageView); - }]; - - [self.rightButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.coverImageView).offset(-26* kScreenScale); - make.size.centerY.mas_equalTo(self.leftButton); - }]; - - [self.tipsLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.backImageView); - make.bottom.mas_equalTo(self.coverImageView).offset(-11); - }]; - - [self.oneButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(140, 40)); - make.top.mas_equalTo(self.coverImageView.mas_bottom).offset(22); - make.right.mas_equalTo(self.coverImageView.mas_centerX).offset(-13); - }]; - - [self.tenButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.oneButton); - make.left.mas_equalTo(self.coverImageView.mas_centerX).offset(13); - }]; - - CGFloat kuserScale = 91.0 / 375.0; - [self.userImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(KScreenWidth, KScreenWidth * kuserScale)); - make.bottom.mas_equalTo(self.backImageView); - make.centerX.mas_equalTo(self.backImageView); - }]; - - [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(44, 44)); - make.left.mas_equalTo(self.userImageView).offset(15); - make.top.mas_equalTo(self.userImageView).offset(15 * kScreenScale); - }]; - - [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.avatarImageView.mas_right).offset(2); - make.centerY.mas_equalTo(self.avatarImageView); - }]; - - [self.highLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.userImageView).offset(-15); - make.centerY.mas_equalTo(self.avatarImageView); - }]; - - [self.highImaegView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(24, 24)); - make.centerY.mas_equalTo(self.highLabel); - make.right.mas_equalTo(self.highLabel.mas_left).offset(-4); - }]; - - [self.middlelLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.highImaegView.mas_left).offset(-5); - make.centerY.mas_equalTo(self.highLabel); - }]; - - [self.middleImaegView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.highImaegView); - make.right.mas_equalTo(self.middlelLabel.mas_left).offset(-4); - }]; - - [self.normalLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.middleImaegView.mas_left).offset(-5); - make.centerY.mas_equalTo(self.highLabel); - }]; - - [self.normalImaegView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.highImaegView); - make.right.mas_equalTo(self.normalLabel.mas_left).offset(-4); - }]; -} - -- (NSAttributedString *)createCountAttribute:(NSString *)fairyBall count:(NSInteger)count { - NSString * countStr = [NSString stringWithFormat:@"抓捕%ld次", count]; - NSString * ball = [NSString stringWithFormat:@"(%@X%ld)", fairyBall,count]; - NSString * title = [NSString stringWithFormat:@"%@ \n %@", countStr, ball]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:15 weight:UIFontWeightMedium], NSForegroundColorAttributeName:[UIColor whiteColor]}]; - [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor colorAboutHexBWSttr:@"#1F5764"] range:[title rangeOfString:ball]]; - [attribute addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:10] range:[title rangeOfString:ball]]; - return attribute; -} - -- (void)showResultAlertView:(NSArray *)array { - [MKJPopup dismiss]; - if (array.count > 0) { - NSMutableArray * resultList = [NSMutableArray array]; - TreasureFairyInfoModel * pieceInfo; - for (int i = 0; i< array.count; i++) { - TreasureFairyInfoModel * model = [array secureGroalTowardsIndictowardsrix1:i]; - if(model.propType == TreasureFairyPropType_Piece) { - pieceInfo = model; - } else { - [resultList addObject:model]; - } - } - if (pieceInfo) { - if (resultList.count > 0) { - if (resultList.count == 1) { - XPTreasureFairyStoreResultSmallView * result = [[XPTreasureFairyStoreResultSmallView alloc] init]; - result.datasource = resultList; - MKJPopupServing * config = [[MKJPopupServing alloc] init]; - config.style = MKJPopupStyleActionSheet; - config.contentView = result; - config.maskEncouragegroundTransparency = 0.5; - config.didFinishDismissHandler = ^(BOOL isDismissOnBackgroundTouch) { - XPTreasureFairyStoreResultSmallView * smallView = [[XPTreasureFairyStoreResultSmallView alloc] init]; - smallView.datasource = @[pieceInfo]; - MKJPopupServing * config = [[MKJPopupServing alloc] init]; - config.style = MKJPopupStyleActionSheet; - config.contentView = smallView; - config.maskEncouragegroundTransparency = 0.5; - config.didFinishDismissHandler = ^(BOOL isDismissOnBackgroundTouch) { - self.resultList = nil; - self.isFinish = YES; - self.isShowResult = NO; - }; - [MKJPopup popupAboutDisposition:config]; - }; - [MKJPopup popupAboutDisposition:config]; - } else { - XPTreasureFairyStoreResultView * result = [[XPTreasureFairyStoreResultView alloc] init]; - result.datasource = resultList; - MKJPopupServing * config = [[MKJPopupServing alloc] init]; - config.style = MKJPopupStyleActionSheet; - config.contentView = result; - config.maskEncouragegroundTransparency = 0.5; - config.didFinishDismissHandler = ^(BOOL isDismissOnBackgroundTouch) { - XPTreasureFairyStoreResultSmallView * smallView = [[XPTreasureFairyStoreResultSmallView alloc] init]; - smallView.datasource = @[pieceInfo]; - MKJPopupServing * config = [[MKJPopupServing alloc] init]; - config.style = MKJPopupStyleActionSheet; - config.contentView = smallView; - config.maskEncouragegroundTransparency = 0.5; - config.didFinishDismissHandler = ^(BOOL isDismissOnBackgroundTouch) { - self.resultList = nil; - self.isFinish = YES; - self.isShowResult = NO; - }; - [MKJPopup popupAboutDisposition:config]; - }; - [MKJPopup popupAboutDisposition:config]; - } - } else { - XPTreasureFairyStoreResultSmallView * smallView = [[XPTreasureFairyStoreResultSmallView alloc] init]; - smallView.datasource = @[pieceInfo]; - MKJPopupServing * config = [[MKJPopupServing alloc] init]; - config.style = MKJPopupStyleActionSheet; - config.contentView = smallView; - config.maskEncouragegroundTransparency = 0.5; - config.didFinishDismissHandler = ^(BOOL isDismissOnBackgroundTouch) { - self.resultList = nil; - self.isFinish = YES; - self.isShowResult = NO; - }; - [MKJPopup popupAboutDisposition:config]; - } - } else { - if (resultList.count == 1) { - XPTreasureFairyStoreResultSmallView * smallView = [[XPTreasureFairyStoreResultSmallView alloc] init]; - smallView.datasource = resultList; - MKJPopupServing * config = [[MKJPopupServing alloc] init]; - config.style = MKJPopupStyleActionSheet; - config.contentView = smallView; - config.maskEncouragegroundTransparency = 0.5; - config.didFinishDismissHandler = ^(BOOL isDismissOnBackgroundTouch) { - self.resultList = nil; - self.isFinish = YES; - self.isShowResult = NO; - }; - [MKJPopup popupAboutDisposition:config]; - } else { - XPTreasureFairyStoreResultView * result = [[XPTreasureFairyStoreResultView alloc] init]; - result.datasource = resultList; - MKJPopupServing * config = [[MKJPopupServing alloc] init]; - config.style = MKJPopupStyleActionSheet; - config.contentView = result; - config.maskEncouragegroundTransparency = 0.5; - config.didFinishDismissHandler = ^(BOOL isDismissOnBackgroundTouch) { - self.resultList = nil; - self.isFinish = YES; - self.isShowResult = NO; - }; - [MKJPopup popupAboutDisposition:config]; - } - } - } - ///更新钥匙数量 - [self initHttpRequest]; -} - -- (void)timeFinishShowResult { - if (self.isShowResult) { - return; - } - [self showResultAlertView:self.resultList]; -} - -- (void)drawForest:(NSInteger)number { - if (!self.isFinish) { - return; - } - - self.isFinish = NO; - [Api treasureFailyForestDraw:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSString * animtionName = @"treasure_fairy_one"; - if (number == 10) { - animtionName = @"treasure_fairy_ten"; - } - VAPView *view = [[VAPView alloc] initWithFrame:CGRectMake(0, 0, 159, 190)]; - view.contentMode = UIViewContentModeScaleAspectFill; - view.userInteractionEnabled = NO; - self.forestView = view; - view.hidden = NO; - [self addSubview:view]; - [view mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.forestImageView); - }]; - - NSString *filePath = [[NSBundle mainBundle] pathForResource:animtionName ofType:@"mp4"]; - [view setMute:YES]; - [view playHWDMP4:filePath repeatCount:1 delegate:self]; - - NSArray * array = [TreasureFairyInfoModel mtowardsrixsAboutGarment:data.data]; - self.resultList = array; - [self performSelector:@selector(timeFinishShowResult) withObject:nil afterDelay:1.9]; - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; - self.isFinish = YES; - self.isShowResult = NO; - } - } drawNum:[NSString stringWithFormat:@"%ld", number] poolLevel:[NSString stringWithFormat:@"%ld", self.storeType]]; -} - -#pragma mark - Event Response -- (void)recordButtonAction:(UIButton *)sender { - XPTreasureFairyPoolRecordView * result1 = [[XPTreasureFairyPoolRecordView alloc] init]; - result1.lowList = self.lowList; - result1.middleList = self.middleList; - result1.highList = self.highList; - result1.frame = CGRectMake(0, 0, KScreenWidth, 386 + 220); - [MKJPopup popupRegard:result1 style:MKJPopupStyleActionSheet]; -} - -- (void)shopingButtonAction:(UIButton *)sender { - XPTreasureFairyShopingView * view = [[ XPTreasureFairyShopingView alloc] init]; - view.userInfo = self.userInfo; - view.roomUid = self.roomUid; - view.frame = CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight); - [self addSubview:view]; - [UIView animateWithDuration:0.3 animations:^{ - CGRect rect = view.frame; - rect.origin.y = 0; - view.frame = rect; - }]; -} - -- (void)fairyExperButtonAction:(UIButton *)sender { - XPTreasureFairyTrialsView * view = [[ XPTreasureFairyTrialsView alloc] init]; - view.frame = CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight); - [self addSubview:view]; - [UIView animateWithDuration:0.3 animations:^{ - CGRect rect = view.frame; - rect.origin.y = 0; - view.frame = rect; - }]; -} - -- (void)myFairyButtonAction:(UIButton *)sender { - XPTreasureFairyMyView * view = [[XPTreasureFairyMyView alloc] init]; - view.frame = CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight); - [self addSubview:view]; - [UIView animateWithDuration:0.3 animations:^{ - CGRect rect = view.frame; - rect.origin.y = 0; - view.frame = rect; - }]; -} - -- (void)leftButtonAction:(UIButton *)sender { - self.storeType -=1; -} - -- (void)rightButtonAction:(UIButton *)sender { - self.storeType +=1; -} - -- (void)tenButtonAction:(UIButton *)sender { - [self drawForest:10]; -} - -- (void)oneButtonAction:(UIButton *)sender { - [self drawForest:1]; -} - -- (void)dismissRecognizer { - [UIView animateWithDuration:0.3 animations:^{ - CGRect rect = self.frame; - rect.origin.y = KScreenHeight; - self.frame = rect; - } completion:^(BOOL finished) { - [self removeFromSuperview]; - }]; -} - -- (void)coverRecognizer { - if (self.resultList.count > 0 && !self.isFinish) { - [self.forestView stopHWDMP4]; - [NSObject cancelPreviousPerformRequestsWithTarget:self]; - self.isShowResult = YES; - [self showResultAlertView:self.resultList]; - } -} - -#pragma mark - HWDMP4PlayDelegate -//即将开始播放时询问,true马上开始播放,false放弃播放 -- (BOOL)shouldStartPlayMP4:(VAPView *)container config:(QGVAPConfigModel *)config { - return YES; -} - -- (void)viewDidFinishPlayMP4:(NSInteger)totalFrameCount view:(VAPView *)container { - dispatch_async(dispatch_get_main_queue(), ^{ - [container removeFromSuperview]; - }); -} - -- (void)viewDidStopPlayMP4:(NSInteger)lastFrameIndex view:(VAPView *)container { - dispatch_async(dispatch_get_main_queue(), ^{ - [container removeFromSuperview]; - }); -} - -#pragma mark - Getters And Setters -- (void)setStoreType:(TreasureFairyStoreType)storeType { - _storeType = storeType; - switch (_storeType) { - case TreasureFairyStoreType_Normal: - { - self.leftButton.hidden = YES; - self.rightButton.hidden = NO; - [UIView animateWithDuration:0.3 animations:^{ - self.forestImageView.image = [UIImage imageNamed:@"room_treasure_fairy_store_forest_normal"]; - }]; - - [self.oneButton setAttributedTitle:[self createCountAttribute:@"初级球" count:1] forState:UIControlStateNormal]; - [self.tenButton setAttributedTitle:[self createCountAttribute:@"初级球" count:10] forState:UIControlStateNormal]; - self.oneButton.titleLabel.textAlignment = NSTextAlignmentCenter; - self.tenButton.titleLabel.textAlignment = NSTextAlignmentCenter; - _tipsLabel.text = @"使用初级球有一定几率抓到初级精灵"; - } - break; - case TreasureFairyStoreType_Middle: - { - self.leftButton.hidden = NO; - self.rightButton.hidden = NO; - [UIView animateWithDuration:0.3 animations:^{ - self.forestImageView.image = [UIImage imageNamed:@"room_treasure_fairy_store_middle_ball"]; - }]; - [self.oneButton setAttributedTitle:[self createCountAttribute:@"超级球" count:1] forState:UIControlStateNormal]; - [self.tenButton setAttributedTitle:[self createCountAttribute:@"超级球" count:10] forState:UIControlStateNormal]; - self.oneButton.titleLabel.textAlignment = NSTextAlignmentCenter; - self.tenButton.titleLabel.textAlignment = NSTextAlignmentCenter; - _tipsLabel.text = @"使用超级球有一定几率抓到史诗精灵"; - } - break; - case TreasureFairyStoreType_High: - { - self.leftButton.hidden = NO; - self.rightButton.hidden = YES; - [UIView animateWithDuration:0.3 animations:^{ - self.forestImageView.image = [UIImage imageNamed:@"room_treasure_fairy_store_high_ball"]; - }]; - [self.oneButton setAttributedTitle:[self createCountAttribute:@"大师球" count:1] forState:UIControlStateNormal]; - [self.tenButton setAttributedTitle:[self createCountAttribute:@"大师球" count:10] forState:UIControlStateNormal]; - self.oneButton.titleLabel.textAlignment = NSTextAlignmentCenter; - self.tenButton.titleLabel.textAlignment = NSTextAlignmentCenter; - _tipsLabel.text = @"使用大师球必定抓到传说精灵"; - } - break; - - default: - break; - } -} - -- (UIButton *)backButton { - if (!_backButton) { - _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backButton setImage:[UIImage imageNamed:@"room_treasure_fairy_back"] forState:UIControlStateNormal]; - [_backButton setImage:[UIImage imageNamed:@"room_treasure_fairy_back"] forState:UIControlStateSelected]; - [_backButton addTarget:self action:@selector(dismissRecognizer) forControlEvents:UIControlEventTouchUpInside]; - } - return _backButton; -} - -- (UIView *)dismissView { - if (!_dismissView) { - _dismissView = [[UIView alloc] init]; - _dismissView.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissRecognizer)]; - [_dismissView addGestureRecognizer:tap]; - } - return _dismissView; -} - -- (UIImageView *)titleImageView { - if (!_titleImageView) { - _titleImageView = [[UIImageView alloc] init]; - _titleImageView.userInteractionEnabled = YES; - _titleImageView.image = [UIImage imageNamed:@"room_treasure_store_title"]; - } - return _titleImageView; -} - -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_bg"]; - } - return _backImageView; -} - -- (UIStackView *)toolStackView { - if (!_toolStackView) { - _toolStackView = [[UIStackView alloc] init]; - _toolStackView.axis = UILayoutConstraintAxisHorizontal; - _toolStackView.distribution = UIStackViewDistributionFill; - _toolStackView.alignment = UIStackViewAlignmentFill; - _toolStackView.spacing = 5; - } - return _toolStackView; -} - -- (UIButton *)recordButton { - if (!_recordButton) { - _recordButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_recordButton setImage:[UIImage imageNamed:@"room_treasure_fairy_store_record_bg"] forState:UIControlStateNormal]; - [_recordButton setImage:[UIImage imageNamed:@"room_treasure_fairy_store_record_bg"] forState:UIControlStateSelected]; - [_recordButton addTarget:self action:@selector(recordButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _recordButton; -} - -- (UIButton *)fairyExPerButton { - if (!_fairyExPerButton) { - _fairyExPerButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_fairyExPerButton setImage:[UIImage imageNamed:@"room_treasure_fairy_store_exper_bg"] forState:UIControlStateNormal]; - [_fairyExPerButton setImage:[UIImage imageNamed:@"room_treasure_fairy_store_exper_bg"] forState:UIControlStateSelected]; - [_fairyExPerButton addTarget:self action:@selector(fairyExperButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _fairyExPerButton; -} - -- (UIButton *)shopingButton { - if (!_shopingButton) { - _shopingButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_shopingButton setImage:[UIImage imageNamed:@"room_treasure_fairy_store_shoping_bg"] forState:UIControlStateNormal]; - [_shopingButton setImage:[UIImage imageNamed:@"room_treasure_fairy_store_shoping_bg"] forState:UIControlStateSelected]; - [_shopingButton addTarget:self action:@selector(shopingButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _shopingButton; -} - - -- (UIButton *)myFairyButton { - if (!_myFairyButton) { - _myFairyButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_myFairyButton setImage:[UIImage imageNamed:@"room_treasure_fairy_my_bg"] forState:UIControlStateNormal]; - [_myFairyButton setImage:[UIImage imageNamed:@"room_treasure_fairy_my_bg"] forState:UIControlStateSelected]; - [_myFairyButton addTarget:self action:@selector(myFairyButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _myFairyButton; -} - -- (UIImageView *)forestImageView { - if (!_forestImageView) { - _forestImageView = [[UIImageView alloc] init]; - _forestImageView.userInteractionEnabled = YES; - _forestImageView.image = [UIImage imageNamed:@"room_treasure_fairy_store_forest_normal"]; - - } - return _forestImageView; -} - -- (UIImageView *)coverImageView { - if (!_coverImageView) { - _coverImageView = [[UIImageView alloc] init]; - _coverImageView.userInteractionEnabled = YES; - _coverImageView.image = [UIImage imageNamed:@"room_treasure_fairy_store_forest_cover"]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(coverRecognizer)]; - [_coverImageView addGestureRecognizer:tap]; - } - return _coverImageView; -} - -- (UIButton *)leftButton { - if (!_leftButton) { - _leftButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_leftButton setImage:[UIImage imageNamed:@"room_treasure_fairy_store_left"] forState:UIControlStateNormal]; - [_leftButton setImage:[UIImage imageNamed:@"room_treasure_fairy_store_left"] forState:UIControlStateSelected]; - [_leftButton addTarget:self action:@selector(leftButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - _leftButton.hidden = YES; - } - return _leftButton; -} - -- (UIButton *)rightButton { - if (!_rightButton) { - _rightButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_rightButton setImage:[UIImage imageNamed:@"room_treasure_fairy_store_left"] forState:UIControlStateNormal]; - [_rightButton setImage:[UIImage imageNamed:@"room_treasure_fairy_store_left"] forState:UIControlStateSelected]; - _rightButton.transform = CGAffineTransformMakeRotation(-M_PI); - [_rightButton addTarget:self action:@selector(rightButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _rightButton; -} - -- (UILabel *)tipsLabel { - if (!_tipsLabel) { - _tipsLabel = [[UILabel alloc] init]; - _tipsLabel.font = [UIFont systemFontOfSize:10]; - _tipsLabel.textColor = [UIColor whiteColor]; - _tipsLabel.textAlignment = NSTextAlignmentCenter; - } - return _tipsLabel; -} - -- (UIButton *)oneButton { - if (!_oneButton) { - _oneButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_oneButton setBackgroundImage:[UIImage imageNamed:@"room_treasure_fairy_store_one_bg"] forState:UIControlStateNormal]; - [_oneButton addTarget:self action:@selector(oneButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - _oneButton.titleLabel.numberOfLines = 2; - } - return _oneButton; -} - -- (UIButton *)tenButton { - if (!_tenButton) { - _tenButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_tenButton setBackgroundImage:[UIImage imageNamed:@"room_treasure_fairy_store_ten_bg"] forState:UIControlStateNormal]; - [_tenButton addTarget:self action:@selector(tenButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - _tenButton.titleLabel.numberOfLines = 2; - } - return _tenButton; -} - -- (UIImageView *)userImageView { - if (!_userImageView) { - _userImageView = [[UIImageView alloc] init]; - _userImageView.userInteractionEnabled = YES; - _userImageView.image = [UIImage imageNamed:@"room_treasure_fairy_userinfo_bg"]; - } - return _userImageView; -} -- (NetIndicateRegard *)avatarImageView { - if (!_avatarImageView) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _avatarImageView = [[NetIndicateRegard alloc] initWithConfig:config]; - _avatarImageView.layer.masksToBounds = YES; - _avatarImageView.layer.cornerRadius = 44/2; - _avatarImageView.layer.borderColor = [DJDKMIMOMColor aplictowardsionMainPrettify].CGColor; - } - return _avatarImageView; -} - -- (UILabel *)nickLabel { - if (!_nickLabel) { - _nickLabel = [[UILabel alloc] init]; - _nickLabel.font = [UIFont systemFontOfSize:13]; - _nickLabel.textColor = [UIColor whiteColor]; - _nickLabel.text = @"昵称"; - } - return _nickLabel; -} - -- (UIImageView *)normalImaegView { - if (!_normalImaegView) { - _normalImaegView = [[UIImageView alloc] init]; - _normalImaegView.userInteractionEnabled = YES; - _normalImaegView.image = [UIImage imageNamed:@"room_treasure_fairy_store_normal_ball_logo"]; - } - return _normalImaegView; -} - -- (UILabel *)normalLabel { - if (!_normalLabel) { - _normalLabel = [[UILabel alloc] init]; - _normalLabel.font = [UIFont systemFontOfSize:13]; - _normalLabel.textColor = [UIColor whiteColor]; - } - return _normalLabel; -} - -- (UIImageView *)middleImaegView { - if (!_middleImaegView) { - _middleImaegView = [[UIImageView alloc] init]; - _middleImaegView.userInteractionEnabled = YES; - _middleImaegView.image = [UIImage imageNamed:@"room_treasure_fairy_store_middle_ball_logo"]; - } - return _middleImaegView; -} - -- (UILabel *)middlelLabel { - if (!_middlelLabel) { - _middlelLabel = [[UILabel alloc] init]; - _middlelLabel.font = [UIFont systemFontOfSize:13]; - _middlelLabel.textColor = [UIColor whiteColor]; - } - return _middlelLabel; -} - - -- (UIImageView *)highImaegView { - if (!_highImaegView) { - _highImaegView = [[UIImageView alloc] init]; - _highImaegView.userInteractionEnabled = YES; - _highImaegView.image = [UIImage imageNamed:@"room_treasure_fairy_store_high_ball_logo"]; - } - return _highImaegView; -} - -- (UILabel *)highLabel { - if (!_highLabel) { - _highLabel = [[UILabel alloc] init]; - _highLabel.font = [UIFont systemFontOfSize:13]; - _highLabel.textColor = [UIColor whiteColor]; - } - return _highLabel; -} - -- (VAPView *)forestView { - if (!_forestView) { - _forestView = [[VAPView alloc] initWithFrame:CGRectMake(0, 0, 339, 269)]; - _forestView.contentMode = UIViewContentModeScaleAspectFill; - _forestView.hidden = NO; - } - return _forestView; -} - - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairySummonGiftView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairySummonGiftView.h deleted file mode 100644 index f6aad828..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairySummonGiftView.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// XPTreasureFairySummonGiftView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/28. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class TreasureFairyRewardModel; -@interface XPTreasureFairySummonGiftView : UIView -@property (nonatomic,strong) TreasureFairyRewardModel *rewardInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairySummonGiftView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairySummonGiftView.m deleted file mode 100644 index 9f604ab0..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairySummonGiftView.m +++ /dev/null @@ -1,136 +0,0 @@ -// -// XPTreasureFairySummonGiftView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/28. -// - -#import "XPTreasureFairySummonGiftView.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" - -///Model -#import "TreasureFairyRewardModel.h" - -@interface XPTreasureFairySummonGiftView () -///背景 -@property (nonatomic,strong) UIImageView *backImageView; -///礼物 -@property (nonatomic,strong) NetIndicateRegard *giftImageView; -///礼物名称 -@property (nonatomic,strong) UILabel *giftLabel; -///金币 -@property (nonatomic,strong) UILabel *coinLabel; -///分割线 -@property (nonatomic,strong) UIImageView *sepImageView; -@end - -@implementation XPTreasureFairySummonGiftView - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backImageView]; - [self.backImageView addSubview:self.giftImageView]; - [self.backImageView addSubview:self.giftLabel]; - [self.backImageView addSubview:self.sepImageView]; - [self.backImageView addSubview:self.coinLabel]; -} - -- (void)initSubViewConstraints { - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(82, 82)); - make.left.mas_equalTo(self.backImageView).offset(37); - make.centerY.mas_equalTo(self.backImageView); - }]; - - [self.sepImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(84, 3)); - make.centerY.mas_equalTo(self.giftImageView); - make.left.mas_equalTo(self.giftImageView.mas_right).offset(10); - }]; - - [self.giftLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.sepImageView); - make.bottom.mas_equalTo(self.sepImageView.mas_top).offset(-2); - }]; - - [self.coinLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.sepImageView); - make.top.mas_equalTo(self.sepImageView.mas_bottom).offset(2); - }]; -} -#pragma mark - Getters And Setters -- (void)setRewardInfo:(TreasureFairyRewardModel *)rewardInfo { - _rewardInfo = rewardInfo; - if (_rewardInfo) { - self.giftImageView.imageUrl = _rewardInfo.rewardPicUrl; - self.giftLabel.text = _rewardInfo.rewardName; - self.coinLabel.text = [NSString stringWithFormat:@"%ld钻", _rewardInfo.rewardShowValue]; - } -} - -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_shoping_gift_bg"]; - } - return _backImageView; -} - -- (NetIndicateRegard *)giftImageView { - if (!_giftImageView) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _giftImageView = [[NetIndicateRegard alloc] initWithConfig:config]; - _giftImageView.layer.masksToBounds = YES; - _giftImageView.contentMode = UIViewContentModeScaleAspectFill; - } - return _giftImageView; -} - -- (UILabel *)giftLabel { - if (!_giftLabel) { - _giftLabel = [[UILabel alloc] init]; - _giftLabel.font = [UIFont systemFontOfSize:13]; - _giftLabel.textColor = [UIColor whiteColor]; - _giftLabel.textAlignment = NSTextAlignmentCenter; - } - return _giftLabel; -} - -- (UIImageView *)sepImageView { - if (!_sepImageView) { - _sepImageView = [[UIImageView alloc] init]; - _sepImageView.userInteractionEnabled = YES; - _sepImageView.image = [UIImage imageNamed:@"room_treasure_fairy_shoping_gift_sep_bg"]; - } - return _sepImageView; -} - -- (UILabel *)coinLabel { - if (!_coinLabel) { - _coinLabel = [[UILabel alloc] init]; - _coinLabel.font = [UIFont systemFontOfSize:12]; - _coinLabel.textAlignment = NSTextAlignmentCenter; - _coinLabel.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#FFE8AA"]; - } - return _coinLabel; -} - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairySummonView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairySummonView.h deleted file mode 100644 index 70d1fc04..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairySummonView.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// XPTreasureFairySummonView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/27. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface XPTreasureFairySummonView : UIView -///房主的uid -@property (nonatomic,strong) NSString *roomUid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairySummonView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairySummonView.m deleted file mode 100644 index 079d113d..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairySummonView.m +++ /dev/null @@ -1,565 +0,0 @@ -// -// XPTreasureFairySummonView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/27. -// - -///精灵召唤 -#import "XPTreasureFairySummonView.h" -///Third -#import -#import -///Tool -#import "DJDKMIMOMColor.h" - -#import "YUMIMacroUitls.h" -#import "Api+TreasureFairy.h" - -#import "NSArray+Safe.h" -#import "MKJPopup.h" -///Model -#import "TreasureFairyBallInfoModel.h" -#import "TreasureFairyInfoModel.h" -#import "TreasureFairyRewardModel.h" -///View -#import "XPTreasureFairySummonGiftView.h" -#import "XPTreasureFailrySummonBallView.h" -#import "XPTreasureFairyStoreResultSmallView.h" -@interface XPTreasureFairySummonView () -///滚动的 -@property (nonatomic,strong) UIScrollView *scrollView; -///背景图 -@property (nonatomic,strong) UIImageView *backImageView; -///显示标题 -@property (nonatomic,strong) UIImageView *titleImageView; -///礼物 -@property (nonatomic,strong) UIImageView *giftBackImageView; -///左边 -@property (nonatomic,strong) UIButton *leftButton; -///右边的 -@property (nonatomic,strong) UIButton *rightButton; -///低级礼物 -@property (nonatomic,strong) XPTreasureFairySummonGiftView *lowGiftView; -///中级礼物 -@property (nonatomic,strong) XPTreasureFairySummonGiftView *middleGiftView; -///高级礼物 -@property (nonatomic,strong) XPTreasureFairySummonGiftView *highGiftView; -///礼物的 -@property (nonatomic,strong) UIImageView *ballBackView; -///合成 -@property (nonatomic,strong) UIButton *summonButton; -///第一个 -@property (nonatomic,strong) XPTreasureFailrySummonBallView *firstBallView; -///第二个 -@property (nonatomic,strong) XPTreasureFailrySummonBallView *secondBallView; -///第三个 -@property (nonatomic,strong) XPTreasureFailrySummonBallView *thirdBallView; -///第四个 -@property (nonatomic,strong) XPTreasureFailrySummonBallView *fourthBallView; -///第五个 -@property (nonatomic,strong) XPTreasureFailrySummonBallView *fifthBallView; -///召唤动画 -@property (nonatomic,strong) VAPView *summonVAPView; -///精灵球的数据 -@property (nonatomic,strong) NSArray *ballViewList; -///精灵球的信息 -@property (nonatomic,strong) TreasureFairyBallInfoModel *ballInfo; -///奖励信息 -@property (nonatomic,strong) TreasureFairyRewardModel *rewardInfo; -///类型 -@property (nonatomic,assign) TreasureFairyStoreType giftType; -///类型 -@property (nonatomic,assign) TreasureFairyStoreType currentGiftType; -///奖励的列标 -@property (nonatomic,strong) NSArray *rewardList; -@end - -@implementation XPTreasureFairySummonView - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initHttpRequest]; - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -- (void)layoutSubviews { - [super layoutSubviews]; - CGFloat kscale = 486.0 / 349.0; - self.scrollView.contentSize = CGSizeMake(KScreenWidth, (KScreenWidth - 26) * kscale); -} -#pragma mark - Private Method -- (void)initHttpRequest { - ///请求奖励的信息 - [Api treasureFailyConvertElfList:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSArray * rewardList = [TreasureFairyRewardModel mtowardsrixsAboutGarment:data.data]; - self.rewardList = rewardList; - ///请求我的精灵星系 - [Api treasureFairyMyBallList:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - TreasureFairyBallInfoModel * info = [TreasureFairyBallInfoModel mtowardsrixAboutImpactbasket:data.data]; - self.ballInfo = info; - self.giftType = self.currentGiftType ? self.currentGiftType : TreasureFairyStoreType_Normal; - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; - } - }]; - } else { - ///请求我的精灵星系 - [Api treasureFairyMyBallList:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - TreasureFairyBallInfoModel * info = [TreasureFairyBallInfoModel mtowardsrixAboutImpactbasket:data.data]; - self.ballInfo = info; - self.giftType = TreasureFairyStoreType_Normal; - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; - } - }]; - } - }]; -} - -- (void)initSubViews { - [self addSubview:self.scrollView]; - [self.scrollView addSubview:self.backImageView]; - [self.backImageView addSubview:self.titleImageView]; - [self.backImageView addSubview:self.lowGiftView]; - [self.backImageView addSubview:self.middleGiftView]; - [self.backImageView addSubview:self.highGiftView]; - [self.backImageView addSubview:self.leftButton]; - [self.backImageView addSubview:self.rightButton]; - [self.backImageView addSubview:self.ballBackView]; - [self.backImageView addSubview:self.summonButton]; - [self.backImageView addSubview:self.firstBallView]; - [self.backImageView addSubview:self.secondBallView]; - [self.backImageView addSubview:self.thirdBallView]; - [self.backImageView addSubview:self.fourthBallView]; - [self.backImageView addSubview:self.fifthBallView]; - self.ballViewList = @[self.firstBallView, self.secondBallView, self.thirdBallView, self.fourthBallView, self.fifthBallView]; -} - -- (void)initSubViewConstraints { - CGFloat kscale1 = 580.0 / 375.0; - self.scrollView.frame = CGRectMake(0, 0, KScreenWidth, KScreenWidth * kscale1 - 190* kScreenScale); - CGFloat kscale = 486.0 / 349.0; - - self.backImageView.frame = CGRectMake(13, 0, KScreenWidth - 26, (KScreenWidth - 26) * kscale); - - [self.titleImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(77, 18)); - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.backImageView).offset( 21 * kScreenScale); - }]; - - [self.lowGiftView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(250 * kScreenScale, 100 * kScreenScale)); - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.backImageView).offset(60 * kScreenScale); - }]; - - [self.middleGiftView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.lowGiftView); - }]; - - [self.highGiftView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.lowGiftView); - }]; - - [self.leftButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(24, 24)); - make.left.mas_equalTo(self.lowGiftView).offset(4); - make.centerY.mas_equalTo(self.lowGiftView); - }]; - - [self.rightButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(24, 24)); - make.right.mas_equalTo(self.lowGiftView).offset(-4); - make.centerY.mas_equalTo(self.lowGiftView); - }]; - - [self.ballBackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(349, 292)); - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.lowGiftView.mas_bottom).offset(6); - }]; - - [self.summonButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(124, 119)); - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.firstBallView.mas_bottom).offset(10); - }]; - - [self.firstBallView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(79, 79)); - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.lowGiftView.mas_bottom).offset(8); - }]; - - [self.secondBallView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(self.firstBallView); - make.top.mas_equalTo(self.firstBallView.mas_bottom).offset(7); - make.left.mas_equalTo(self.summonButton.mas_right).offset(16); - }]; - - [self.thirdBallView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(self.firstBallView); - make.top.mas_equalTo(self.summonButton.mas_bottom).offset(7); - make.left.mas_equalTo(self.backImageView.mas_centerX).offset(39); - }]; - - [self.fourthBallView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.top.mas_equalTo(self.thirdBallView); - make.right.mas_equalTo(self.backImageView.mas_centerX).offset(-39); - }]; - - - [self.fifthBallView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(self.firstBallView); - make.top.mas_equalTo(self.secondBallView); - make.right.mas_equalTo(self.summonButton.mas_left).offset(-14); - }]; - -} - -#pragma mark - Event Response -- (void)leftButtonAction:(UIButton *)sender { - self.giftType -=1; - self.currentGiftType = self.giftType; -} - -- (void)rightButtonAction:(UIButton *)sender { - self.giftType +=1; - self.currentGiftType = self.giftType; -} - -- (void)summonButtonAction:(UIButton *)sender { - if (self.rewardInfo.itemId > 0) { - [Api treasureFailyConvert:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - NSString * animtionName = @""; - if (self.giftType == TreasureFairyStoreType_High) { - animtionName = @"treasure_fairy_summon_high"; - }else if (self.giftType == TreasureFairyStoreType_Middle) { - animtionName = @"treasure_fairy_summon_middle"; - }else{ - animtionName = @"treasure_fairy_summon_normal"; - } - if (!self.summonVAPView.superview) { - [self.backImageView addSubview:self.summonVAPView]; - [self.summonVAPView mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(352); - make.height.mas_equalTo(326); - make.centerX.mas_equalTo(self.summonButton).offset(2); - make.centerY.mas_equalTo(self.summonButton).offset(8); - }]; - } - NSString *filePath = [[NSBundle mainBundle] pathForResource:animtionName ofType:@"mp4"]; - [self.summonVAPView setMute:YES]; - [self.summonVAPView playHWDMP4:filePath repeatCount:1 delegate:self]; - self.summonVAPView.alpha = 0;//UI说动画会闪一下,所以渐出显示 - /// 过渡一下 - self.summonButton.alpha = 0; - [UIView animateWithDuration:0.2 animations:^{ - self.firstBallView.alpha = 0; - self.secondBallView.alpha = 0; - self.thirdBallView.alpha = 0; - self.fourthBallView.alpha = 0; - self.fifthBallView.alpha = 0; - self.summonVAPView.alpha = 1; - }]; - /// vap动画时长为3s,在2.7s时显示结果效果 - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.7 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - ///重置数据 - self.firstBallView.alpha = 1; - self.secondBallView.alpha = 1; - self.thirdBallView.alpha = 1; - self.fourthBallView.alpha = 1; - self.fifthBallView.alpha = 1; - self.summonButton.alpha = 1; - - TreasureFairyInfoModel * info = [TreasureFairyInfoModel mtowardsrixAboutImpactbasket:data.data]; - XPTreasureFairyStoreResultSmallView * smallView = [[XPTreasureFairyStoreResultSmallView alloc] init]; - smallView.datasource = @[info]; - smallView.titleLabel.text = @"恭喜获得"; - [MKJPopup popupRegard:smallView style:MKJPopupStyleActionSheet]; - }); - - ///重新请求数据 - [self initHttpRequest]; - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; - } - } itemId:[NSString stringWithFormat:@"%ld", self.rewardInfo.itemId] roomUid:self.roomUid]; - } -} - -#pragma mark - HWDMP4PlayDelegate -//即将开始播放时询问,true马上开始播放,false放弃播放 -- (BOOL)shouldStartPlayMP4:(VAPView *)container config:(QGVAPConfigModel *)config { - return YES; -} - -- (void)viewDidFinishPlayMP4:(NSInteger)totalFrameCount view:(VAPView *)container { - dispatch_async(dispatch_get_main_queue(), ^{ - if (self.summonVAPView.superview) { - [self.summonVAPView removeFromSuperview]; - [self.summonVAPView stopHWDMP4]; - } - }); -} - -- (void)viewDidStopPlayMP4:(NSInteger)lastFrameIndex view:(VAPView *)container { - dispatch_async(dispatch_get_main_queue(), ^{ - if (self.summonVAPView.superview) { - [self.summonVAPView removeFromSuperview]; - [self.summonVAPView stopHWDMP4]; - } - }); -} - -#pragma mark - Getters And Setters -- (void)setGiftType:(TreasureFairyStoreType)giftType { - _giftType = giftType; - if (_giftType == TreasureFairyStoreType_High) { - self.lowGiftView.hidden = YES; - self.middleGiftView.hidden = YES; - self.highGiftView.hidden = NO; - self.leftButton.hidden = NO; - self.rightButton.hidden = YES; - self.titleImageView.image = [UIImage imageNamed:@"room_treasure_fairy_shoping_summond_high_title"]; - TreasureFairyRewardModel * rewardInfo; - for (TreasureFairyRewardModel * info in self.rewardList) { - if (info.level == TreasureFairyStoreType_High){ - rewardInfo = info; - break; - } - } - self.rewardInfo = rewardInfo; - self.highGiftView.rewardInfo = rewardInfo; - for (int i = 0; i < self.ballViewList.count; i++) { - XPTreasureFailrySummonBallView * view = [self.ballViewList secureGroalTowardsIndictowardsrix1:i]; - if (i < self.ballInfo.highElves.count) { - TreasureFairyBallModel * info = [self.ballInfo.highElves secureGroalTowardsIndictowardsrix1:i]; - view.ballInfo = info; - } - } - BOOL summonEnable = NO; - for (TreasureFairyBallModel * info in self.ballInfo.highElves) { - if (info.elfNum <= 0) { - summonEnable = NO; - break; - } else { - summonEnable = YES; - } - } - self.summonButton.enabled = summonEnable; - } else if(_giftType == TreasureFairyStoreType_Middle) { - self.lowGiftView.hidden = YES; - self.middleGiftView.hidden = NO; - self.highGiftView.hidden = YES; - self.titleImageView.image = [UIImage imageNamed:@"room_treasure_fairy_shoping_summond_middle_title"]; - self.leftButton.hidden = NO; - self.rightButton.hidden = NO; - TreasureFairyRewardModel * rewardInfo; - for (TreasureFairyRewardModel * info in self.rewardList) { - if (info.level == TreasureFairyStoreType_Middle){ - rewardInfo = info; - break; - } - } - self.rewardInfo = rewardInfo; - self.middleGiftView.rewardInfo = rewardInfo; - self.lowGiftView.rewardInfo = rewardInfo; - for (int i = 0; i < self.ballViewList.count; i++) { - XPTreasureFailrySummonBallView * view = [self.ballViewList secureGroalTowardsIndictowardsrix1:i]; - if (i < self.ballInfo.middleElves.count) { - TreasureFairyBallModel * info = [self.ballInfo.middleElves secureGroalTowardsIndictowardsrix1:i]; - view.ballInfo = info; - } - } - BOOL summonEnable = NO; - for (TreasureFairyBallModel * info in self.ballInfo.middleElves) { - if (info.elfNum <= 0) { - summonEnable = NO; - break; - } else { - summonEnable = YES; - } - } - self.summonButton.enabled = summonEnable; - } else { - self.lowGiftView.hidden = NO; - self.middleGiftView.hidden = YES; - self.highGiftView.hidden = YES; - self.titleImageView.image = [UIImage imageNamed:@"room_treasure_fairy_shoping_summond_low_title"]; - self.leftButton.hidden = YES; - self.rightButton.hidden = NO; - TreasureFairyRewardModel * rewardInfo; - for (TreasureFairyRewardModel * info in self.rewardList) { - if (info.level == TreasureFairyStoreType_Normal){ - rewardInfo = info; - break; - } - } - self.lowGiftView.rewardInfo = rewardInfo; - self.rewardInfo = rewardInfo; - for (int i = 0; i < self.ballViewList.count; i++) { - XPTreasureFailrySummonBallView * view = [self.ballViewList secureGroalTowardsIndictowardsrix1:i]; - if (i < self.ballInfo.lowElves.count) { - TreasureFairyBallModel * info = [self.ballInfo.lowElves secureGroalTowardsIndictowardsrix1:i]; - view.ballInfo = info; - } - } - BOOL summonEnable = NO; - for (TreasureFairyBallModel * info in self.ballInfo.lowElves) { - if (info.elfNum <= 0) { - summonEnable = NO; - break; - } else { - summonEnable = YES; - } - } - self.summonButton.enabled = summonEnable; - } -} - -- (UIScrollView *)scrollView { - if (!_scrollView) { - _scrollView = [[UIScrollView alloc] init]; - _scrollView.showsVerticalScrollIndicator = NO; - _scrollView.scrollEnabled = YES; - if (@available(iOS 11.0, *)) { - _scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - } - return _scrollView; -} - -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_shoping_summond"]; - } - return _backImageView; -} - -- (UIImageView *)titleImageView { - if (!_titleImageView) { - _titleImageView = [[UIImageView alloc] init]; - _titleImageView.userInteractionEnabled = YES; - } - return _titleImageView; -} - -- (UIButton *)leftButton { - if (!_leftButton) { - _leftButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_leftButton setImage:[UIImage imageNamed:@"room_treasure_fairy_shoping_left"] forState:UIControlStateNormal]; - [_leftButton setImage:[UIImage imageNamed:@"room_treasure_fairy_shoping_left"] forState:UIControlStateSelected]; - _leftButton.transform = CGAffineTransformMakeRotation(-M_PI); - [_leftButton addTarget:self action:@selector(leftButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - _leftButton.hidden = YES; - } - return _leftButton; -} - -- (UIButton *)rightButton { - if (!_rightButton) { - _rightButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_rightButton setImage:[UIImage imageNamed:@"room_treasure_fairy_shoping_left"] forState:UIControlStateNormal]; - [_rightButton setImage:[UIImage imageNamed:@"room_treasure_fairy_shoping_left"] forState:UIControlStateSelected]; - - [_rightButton addTarget:self action:@selector(rightButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _rightButton; -} - -- (XPTreasureFairySummonGiftView *)lowGiftView { - if(!_lowGiftView) { - _lowGiftView = [[XPTreasureFairySummonGiftView alloc] init]; - } - return _lowGiftView; -} - -- (XPTreasureFairySummonGiftView *)middleGiftView { - if(!_middleGiftView) { - _middleGiftView = [[XPTreasureFairySummonGiftView alloc] init]; - _middleGiftView.hidden = YES; - } - return _middleGiftView; -} - -- (XPTreasureFairySummonGiftView *)highGiftView { - if(!_highGiftView) { - _highGiftView = [[XPTreasureFairySummonGiftView alloc] init]; - _highGiftView.hidden = YES; - } - return _highGiftView; -} - -- (UIButton *)summonButton { - if (!_summonButton) { - _summonButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_summonButton setImage:[UIImage imageNamed:@"room_treasure_fairy_shoping_summond_normal"] forState:UIControlStateNormal]; - [_summonButton setImage:[UIImage imageNamed:@"room_treasure_fairy_shoping_summond_disable"] forState:UIControlStateDisabled]; - _summonButton.enabled = NO; - _summonButton.adjustsImageWhenHighlighted = NO; - [_summonButton addTarget:self action:@selector(summonButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _summonButton; -} - -- (XPTreasureFailrySummonBallView *)firstBallView { - if(!_firstBallView) { - _firstBallView = [[XPTreasureFailrySummonBallView alloc] init]; - } - return _firstBallView;; -} - -- (XPTreasureFailrySummonBallView *)secondBallView { - if(!_secondBallView) { - _secondBallView = [[XPTreasureFailrySummonBallView alloc] init]; - } - return _secondBallView;; -} - - -- (XPTreasureFailrySummonBallView *)thirdBallView { - if(!_thirdBallView) { - _thirdBallView = [[XPTreasureFailrySummonBallView alloc] init]; - } - return _thirdBallView;; -} - - -- (XPTreasureFailrySummonBallView *)fourthBallView { - if(!_fourthBallView) { - _fourthBallView = [[XPTreasureFailrySummonBallView alloc] init]; - } - return _fourthBallView;; -} - -- (XPTreasureFailrySummonBallView *)fifthBallView { - if(!_fifthBallView) { - _fifthBallView = [[XPTreasureFailrySummonBallView alloc] init]; - } - return _fifthBallView;; -} - -- (VAPView *)summonVAPView { - if (!_summonVAPView) { - _summonVAPView = [[VAPView alloc] initWithFrame:CGRectMake(0, 0, 352, 326)]; - _summonVAPView.contentMode = UIViewContentModeScaleAspectFill; - _summonVAPView.hidden = NO; - } - return _summonVAPView; -} - - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyTrialsBallView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyTrialsBallView.h deleted file mode 100644 index 12686bc9..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyTrialsBallView.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// XPTreasureFairyTrialsBallView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/24. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@class TreasureFairyBallModel; -@interface XPTreasureFairyTrialsBallView : UIView -///精灵球信息 -@property (nonatomic,strong) TreasureFairyBallModel *ballInfo; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyTrialsBallView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyTrialsBallView.m deleted file mode 100644 index b9343189..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyTrialsBallView.m +++ /dev/null @@ -1,154 +0,0 @@ -// -// XPTreasureFairyTrialsBallView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/24. -// - -#import "XPTreasureFairyTrialsBallView.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" - -#import "YUMIMacroUitls.h" -///Model -#import "TreasureFairyBallInfoModel.h" - -@interface XPTreasureFairyTrialsBallView () -///背景 -@property (nonatomic,strong) UIImageView *backImageView; -///精灵球 -@property (nonatomic,strong) NetIndicateRegard *ballImageView; -///底部的 -@property (nonatomic,strong) UIView *bottomView; -///名字 -@property (nonatomic,strong) UILabel *nameLabel; -///个数 -@property (nonatomic,strong) UILabel *countLabel; -///选中的时候覆盖的 -@property (nonatomic,strong) UIImageView *coverImageView; -@end - -@implementation XPTreasureFairyTrialsBallView - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backImageView]; - [self addSubview:self.coverImageView]; - [self.backImageView addSubview:self.ballImageView]; - [self.backImageView addSubview:self.bottomView]; - [self.bottomView addSubview:self.nameLabel]; - [self.bottomView addSubview:self.countLabel]; -} - -- (void)initSubViewConstraints { - [self.coverImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.ballImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.backImageView).offset(4); - make.left.right.mas_equalTo(self.backImageView).inset(10); - make.bottom.mas_equalTo(self.bottomView.mas_top).offset(-3); - }]; - - [self.bottomView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.backImageView); - make.height.mas_equalTo(30); - }]; - - [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.bottomView); - make.bottom.mas_equalTo(self.bottomView.mas_centerY).offset(-0.5); - }]; - - [self.countLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.bottomView); - make.top.mas_equalTo(self.bottomView.mas_centerY).offset(0.5); - }]; -} -#pragma mark - Getters And Setters -- (void)setBallInfo:(TreasureFairyBallModel *)ballInfo { - _ballInfo = ballInfo; - if (_ballInfo) { - self.ballImageView.imageUrl = _ballInfo.elfPicUrl; - self.nameLabel.text = _ballInfo.elfName; - self.countLabel.text= [NSString stringWithFormat:@"%ld/%ld", _ballInfo.chooseNum, _ballInfo.elfNum]; - self.coverImageView.hidden = _ballInfo.chooseNum <= 0; - } -} - -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_trials_my_ball_bg"]; - } - return _backImageView; -} - -- (UIImageView *)coverImageView { - if (!_coverImageView) { - _coverImageView = [[UIImageView alloc] init]; - _coverImageView.userInteractionEnabled = YES; - _coverImageView.image = [UIImage imageNamed:@"room_treasure_fairy_trials_my_ball_cover_bg"]; - _coverImageView.hidden = YES; - } - return _coverImageView; -} - -- (NetIndicateRegard *)ballImageView { - if (!_ballImageView) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - config.deparatmentMaintainrietary = [UIIndicateConstant deficiencyIntelligenceportraitDepapossessor]; - _ballImageView = [[NetIndicateRegard alloc] initWithConfig:config]; - _ballImageView.layer.masksToBounds = YES; - _ballImageView.contentMode = UIViewContentModeScaleAspectFit; - } - return _ballImageView; -} - -- (UIView *)bottomView { - if (!_bottomView) { - _bottomView = [[UIView alloc] init]; - _bottomView.backgroundColor = [UIColor clearColor]; - } - return _bottomView; -} - -- (UILabel *)nameLabel { - if (!_nameLabel) { - _nameLabel = [[UILabel alloc] init]; - _nameLabel.font = [UIFont systemFontOfSize:11]; - _nameLabel.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#1F5764"]; - _nameLabel.textAlignment = NSTextAlignmentCenter; - } - return _nameLabel; -} - -- (UILabel *)countLabel { - if (!_countLabel) { - _countLabel = [[UILabel alloc] init]; - _countLabel.font = [UIFont systemFontOfSize:11]; - _countLabel.textColor = [UIColor whiteColor]; - _countLabel.textAlignment = NSTextAlignmentCenter; - } - return _countLabel; -} - - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyTrialsContentView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyTrialsContentView.h deleted file mode 100644 index 7df55846..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyTrialsContentView.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// XPTreasureFairyTrialsContentView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/24. -// - -#import - -NS_ASSUME_NONNULL_BEGIN -@protocol XPTreasureFairyTrialsContentViewDelegate - -- (void)treasureFairyTrialsSuccess; - -@end -@interface XPTreasureFairyTrialsContentView : UIView -///是否是高级的 -@property (nonatomic,assign) BOOL isHigh; -@property (nonatomic,strong) NSArray *datasource; -///代理 -@property (nonatomic,weak) id delegate; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyTrialsContentView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyTrialsContentView.m deleted file mode 100644 index 268997ce..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyTrialsContentView.m +++ /dev/null @@ -1,633 +0,0 @@ -// -// XPTreasureFairyTrialsContentView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/24. -// - -#import "XPTreasureFairyTrialsContentView.h" -///Third -#import -#import -///Tool -#import "DJDKMIMOMColor.h" - -#import "YUMIMacroUitls.h" -#import "UIImage+Utils.h" -#import "NSArray+Safe.h" - -#import "Api+TreasureFairy.h" -#import "NSMutableDictionary+Saft.h" -#import "MKJPopup.h" -#import "UIButton+EnlargeTouchArea.h" -///Model -#import "TreasureFairyBallInfoModel.h" -///View -#import "XPTreasureFairyTrialsBallView.h" -#import "XPTreasureFairyStoreResultSmallView.h" - -@interface XPTreasureFairyTrialsContentView () -///背景图 -@property (nonatomic,strong) UIImageView *backImageView; -///试炼球的背景 -@property (nonatomic,strong) UIImageView *trialsBgImageView; -///动画 -@property (nonatomic,strong) VAPView *trialsView; -///一个试炼 -@property (nonatomic,strong) NetIndicateRegard *oneBallView; -///二个试炼 -@property (nonatomic,strong) NetIndicateRegard *twoBallView; -///三个试炼 -@property (nonatomic,strong) NetIndicateRegard *threeBallView; -///试炼 -@property (nonatomic,strong) UIButton *trialsButton; -///提示 -@property (nonatomic,strong) UILabel *tipsLabel; -///快捷投入 -@property (nonatomic,strong) UIButton *fastButton; -///重新投入 -@property (nonatomic,strong) UIButton *againButton; -///精灵球的背景 -@property (nonatomic,strong) UIImageView *ballBackView; -///第一个 -@property (nonatomic,strong) XPTreasureFairyTrialsBallView *firstView; -///第二个 -@property (nonatomic,strong) XPTreasureFairyTrialsBallView *secondView; -///第三个 -@property (nonatomic,strong) XPTreasureFairyTrialsBallView *thirdView; -///第四个 -@property (nonatomic,strong) XPTreasureFairyTrialsBallView *fourthView; -///第五个 -@property (nonatomic,strong) XPTreasureFairyTrialsBallView *fifthView; -///我的精灵球 -@property (nonatomic,strong) NSArray *viewList; -///球的列表 -@property (nonatomic,strong) NSArray *ballViewList; -///试炼的球 -@property (nonatomic,strong) NSMutableArray *ballList; -@property (nonatomic,strong) NSArray *originBallList; -@end - -@implementation XPTreasureFairyTrialsContentView - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backImageView]; - [self addSubview:self.trialsBgImageView]; - [self addSubview:self.trialsButton]; - [self addSubview:self.ballBackView]; - [self addSubview:self.tipsLabel]; - [self addSubview:self.fastButton]; - [self addSubview:self.againButton]; - - - [self.ballBackView addSubview:self.firstView]; - [self.ballBackView addSubview:self.secondView]; - [self.ballBackView addSubview:self.thirdView]; - [self.ballBackView addSubview:self.fourthView]; - [self.ballBackView addSubview:self.fifthView]; - - [self.trialsBgImageView addSubview:self.oneBallView]; - [self.trialsBgImageView addSubview:self.twoBallView]; - [self.trialsBgImageView addSubview:self.threeBallView]; - self.viewList = @[self.firstView, self.secondView, self.thirdView, self.fourthView, self.fifthView]; - self.ballViewList = @[self.oneBallView, self.twoBallView, self.threeBallView]; -} - -- (void)initSubViewConstraints { - CGFloat kscale = 292.0 / 375.0; - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.height.mas_equalTo(KScreenWidth * kscale); - }]; - - [self.trialsBgImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(342, 245)); - make.top.mas_equalTo(self.backImageView).offset(25 * kScreenScale); - make.centerX.mas_equalTo(self.backImageView); - }]; - - [self.oneBallView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(60, 60)); - make.left.mas_equalTo(self.trialsBgImageView).offset(29); - make.top.mas_equalTo(self.trialsBgImageView).offset(138); - }]; - - [self.twoBallView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(60, 60)); - make.left.mas_equalTo(self.trialsBgImageView).offset(141); - make.top.mas_equalTo(self.trialsBgImageView).offset(158); - }]; - - [self.threeBallView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(60, 60)); - make.left.mas_equalTo(self.trialsBgImageView).offset(253); - make.top.mas_equalTo(self.trialsBgImageView).offset(138); - }]; - - [self.trialsButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(142, 40)); - make.centerX.mas_equalTo(self.backImageView); - make.bottom.mas_equalTo(self.backImageView.mas_bottom); - }]; - - [self.tipsLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self).offset(15); - make.centerY.mas_equalTo(self.ballBackView.mas_top); - }]; - - [self.againButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(15); - make.width.mas_equalTo(75); - make.right.mas_equalTo(self.backImageView).offset(-15); - make.centerY.mas_equalTo(self.tipsLabel); - }]; - - [self.fastButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(20); - make.width.mas_equalTo(60); - make.right.mas_equalTo(self.againButton.mas_left).offset(-10); - make.centerY.mas_equalTo(self.tipsLabel); - }]; - - [self.ballBackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self); - make.height.mas_equalTo(KScreenWidth * (136.0 / 375.0)); - }]; - - CGFloat kPadding = (KScreenWidth - 66 *kScreenScale * 5 - 30) / 4.0; - [self.firstView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(66 * kScreenScale, 78 * kScreenScale)); - make.left.mas_equalTo(self.ballBackView).offset(15); - make.top.mas_equalTo(self.ballBackView).offset(26 * kScreenScale); - }]; - - [self.secondView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.firstView); - make.left.mas_equalTo(self.firstView.mas_right).offset(kPadding); - }]; - - [self.thirdView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.firstView); - make.left.mas_equalTo(self.secondView.mas_right).offset(kPadding); - }]; - - [self.fourthView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.firstView); - make.left.mas_equalTo(self.thirdView.mas_right).offset(kPadding); - }]; - - [self.fifthView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.firstView); - make.left.mas_equalTo(self.fourthView.mas_right).offset(kPadding); - }]; -} - -- (void)reloadBallViews { - for (int i = 0; i< self.ballViewList.count; i++) { - NetIndicateRegard * imageView = [self.ballViewList secureGroalTowardsIndictowardsrix1:i]; - imageView.image = nil; - } - - for (int i = 0; i< self.ballList.count; i++) { - TreasureFairyBallModel * info = [self.ballList secureGroalTowardsIndictowardsrix1:i]; - if (i < self.ballViewList.count) { - NetIndicateRegard * imageView = [self.ballViewList secureGroalTowardsIndictowardsrix1:i]; - imageView.imageUrl = info.elfPicUrl; - } - } -} - - -#pragma mark - Event Response -- (void)trialsButtonAction:(UIButton *)sender { - if (self.ballList.count == 3) { - NSMutableArray * array = [NSMutableArray array]; - for (int i = 0; i < self.ballList.count; i++) { - TreasureFairyBallModel * ballInfo = [self.ballList secureGroalTowardsIndictowardsrix1:i]; - NSMutableDictionary * dic = [NSMutableDictionary dictionary]; - [dic secureSetGroal:@(ballInfo.chooseNum) forKey:@"elfNum"]; - [dic secureSetGroal:@(ballInfo.elfId) forKey:@"elfId"]; - [array addObject:dic]; - } - NSInteger compoundLevel = self.isHigh ? 2 : 1; - sender.userInteractionEnabled = NO; - [Api treasureFailyCompoundBall:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - sender.userInteractionEnabled = YES; - if (code == 200) { - NSString * animtionName = @"treasure_fairy_trials_middle"; - if (self.isHigh) { - animtionName = @"treasure_fairy_trials_high"; - } - if (!self.trialsView.superview) { - [self.trialsBgImageView insertSubview:self.trialsView atIndex:0]; - [self.trialsView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.trialsBgImageView); - }]; - } - NSString *filePath = [[NSBundle mainBundle] pathForResource:animtionName ofType:@"mp4"]; - [self.trialsView setMute:YES]; - [self.trialsView playHWDMP4:filePath repeatCount:1 delegate:self]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.9 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - ///重置数据 - [self.ballList removeAllObjects]; - self.originBallList = nil; - for (NetIndicateRegard * imageView in self.ballViewList) { - imageView.image = nil; - } - if (self.delegate && [self.delegate respondsToSelector:@selector(treasureFairyTrialsSuccess)]) { - [self.delegate treasureFairyTrialsSuccess]; - } - TreasureFairyBallModel * model = [TreasureFairyBallModel mtowardsrixAboutImpactbasket:data.data]; - XPTreasureFairyStoreResultSmallView * smallView = [[XPTreasureFairyStoreResultSmallView alloc] init]; - smallView.isTrialsResult = YES; - smallView.datasource = @[model]; - [MKJPopup popupRegard:smallView style:MKJPopupStyleActionSheet]; - }); - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; - } - } compoundLevel:compoundLevel compoundReqs:array]; - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:@"精灵数量不足"]; - } - - -} - -- (void)fastButtonAction:(UIButton *)sender { - [self.ballList removeAllObjects]; - self.originBallList = nil; - for (int i = 0; i < self.datasource.count; i++) { - TreasureFairyBallModel * info = [self.datasource secureGroalTowardsIndictowardsrix1:i]; - info.chooseNum= 0; - } - - for (int i = 0; i < self.datasource.count; i++) { - TreasureFairyBallModel * info = [self.datasource secureGroalTowardsIndictowardsrix1:i]; - if (self.ballList.count ==3) { - break; - } - if (info.elfNum <= 0) { - continue; - } - - for (int j = 0; j< info.elfNum; j++) { - info.chooseNum += 1; - if (i < self.viewList.count) { - XPTreasureFairyTrialsBallView * ballView = [self.viewList secureGroalTowardsIndictowardsrix1:i]; - ballView.ballInfo = info; - } - TreasureFairyBallModel * ball = [TreasureFairyBallModel mtowardsrixAboutImpactbasket:[info mtowardsrix2dictionary]]; - ball.chooseNum = 1; - [self.ballList addObject:ball]; - - if (self.ballList.count ==3) { - break; - } - } - } - if (self.ballList.count < 3) { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:@"精灵数量不足"]; - } - self.originBallList = [self.ballList copy]; - [self reloadBallViews]; -} - -- (void)againButtonAction:(UIButton *)sender { - for (TreasureFairyBallModel * info in self.datasource) { - info.chooseNum = 0; - } - [self.ballList removeAllObjects]; - self.originBallList = nil; - for (int i = 0; i < self.ballViewList.count; i++) { - NetIndicateRegard * imageView = [self.ballViewList secureGroalTowardsIndictowardsrix1:i]; - imageView.image = nil; - } - - for (int i = 0; i < _datasource.count; i++) { - TreasureFairyBallModel * ballInfo = [self.datasource secureGroalTowardsIndictowardsrix1:i]; - ballInfo.chooseNum = 0; - if (i < self.viewList.count) { - XPTreasureFairyTrialsBallView * ballView = [self.viewList secureGroalTowardsIndictowardsrix1:i]; - ballView.ballInfo = ballInfo; - } - } -} - -- (void)fairyBallRecoginzer:(UITapGestureRecognizer *)tap { - XPTreasureFairyTrialsBallView * view = (XPTreasureFairyTrialsBallView *)tap.view; - TreasureFairyBallModel * ballInfo = view.ballInfo; - if (self.ballList.count >= 3) { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:@"试炼炉已满"]; - return; - } - if (ballInfo.elfNum > 0) { - if (ballInfo.chooseNum >= ballInfo.elfNum) { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:@"精灵数量不足"]; - } else { - TreasureFairyBallModel * ball = [TreasureFairyBallModel mtowardsrixAboutImpactbasket:[ballInfo mtowardsrix2dictionary]]; - ball.chooseNum = 1; - ballInfo.chooseNum ++; - [self.ballList addObject:ball]; - self.originBallList = [self.ballList copy]; - [self reloadBallViews]; - view.ballInfo = ballInfo; - } - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:@"你还未捕捉到该精灵"]; - } -} - -- (void)trialsBallRecogizner:(UITapGestureRecognizer *)tap { - if (self.originBallList.count <= 0) { - return; - } - NetIndicateRegard * ballView = (NetIndicateRegard *)tap.view; - NSInteger index= ballView.tag - 1000; - TreasureFairyBallModel * ballInfo = [self.originBallList secureGroalTowardsIndictowardsrix1:index]; - ballView.image = nil; - - for (int i = 0; i< self.datasource.count; i++) { - TreasureFairyBallModel * ball = [self.datasource secureGroalTowardsIndictowardsrix1:i]; - if (ball.elfId == ballInfo.elfId) { - if (i < self.viewList.count) { - XPTreasureFairyTrialsBallView * ballView = [self.viewList secureGroalTowardsIndictowardsrix1:i]; - ball.chooseNum -= 1; - if (ball.chooseNum < 0) { - ball.chooseNum = 0; - } - ballView.ballInfo = ball; - } - break; - } - } - [self.ballList removeObject:ballInfo]; - self.originBallList = [self.ballList copy]; - [self reloadBallViews]; - -// if (index < self.originBallList.count) { -// ballView.image = nil; -// TreasureFairyBallModel * ballInfo = [self.originBallList secureGroalTowardsIndictowardsrix1:index]; -// for (int i = 0; i< self.datasource.count; i++) { -// TreasureFairyBallModel * ball = [self.datasource secureGroalTowardsIndictowardsrix1:i]; -// if (ball.elfId == ballInfo.elfId) { -// ball.chooseNum --; -// if (ball.chooseNum < 0) { -// ball.chooseNum = 0; -// break; -// } -// if (i < self.viewList.count) { -// XPTreasureFairyTrialsBallView * ballView = [self.viewList secureGroalTowardsIndictowardsrix1:i]; -// ballView.ballInfo = ball; -// } -// break; -// } -// } -// [self.ballList removeObject:ballInfo]; -// } -} - -#pragma mark - HWDMP4PlayDelegate -//即将开始播放时询问,true马上开始播放,false放弃播放 -- (BOOL)shouldStartPlayMP4:(VAPView *)container config:(QGVAPConfigModel *)config { - return YES; -} - -- (void)viewDidFinishPlayMP4:(NSInteger)totalFrameCount view:(VAPView *)container { - dispatch_async(dispatch_get_main_queue(), ^{ - if (self.trialsView.superview) { - [self.trialsView removeFromSuperview]; - [self.trialsView stopHWDMP4]; - } - }); -} - -- (void)viewDidStopPlayMP4:(NSInteger)lastFrameIndex view:(VAPView *)container { - dispatch_async(dispatch_get_main_queue(), ^{ - if (self.trialsView.superview) { - [self.trialsView removeFromSuperview]; - [self.trialsView stopHWDMP4]; - } - }); -} - -#pragma mark - Getters And Setters -- (void)setDatasource:(NSArray *)datasource { - _datasource = datasource; - if (_datasource) { - for (int i = 0; i < _datasource.count; i++) { - TreasureFairyBallModel * ballInfo = [self.datasource secureGroalTowardsIndictowardsrix1:i]; - if (i < self.viewList.count) { - XPTreasureFairyTrialsBallView * ballView = [self.viewList secureGroalTowardsIndictowardsrix1:i]; - ballView.ballInfo = ballInfo; - } - } - } -} - -- (void)setIsHigh:(BOOL)isHigh { - _isHigh = isHigh; - if (_isHigh) { - self.backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_trials_high_bg"]; - _trialsBgImageView.image = [UIImage imageNamed:@"room_treasure_fairy_trials_high_ball_bg"]; - self.tipsLabel.text = @"点击投入试炼传说精灵"; - } else { - self.backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_trials_middle_bg"]; - _trialsBgImageView.image = [UIImage imageNamed:@"room_treasure_fairy_trials_middle_ball_bg"]; - self.tipsLabel.text = @"点击投入试炼史诗精灵"; - } -} - - -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _ballBackView.image = [UIImage imageNamed:@"room_treasure_fairy_trials_middle_bg"]; - } - return _backImageView; -} - -- (UIImageView *)trialsBgImageView { - if (!_trialsBgImageView) { - _trialsBgImageView = [[UIImageView alloc] init]; - _trialsBgImageView.userInteractionEnabled = YES; - _trialsBgImageView.image = [UIImage imageNamed:@"room_treasure_fairy_trials_middle_ball_bg"]; - } - return _trialsBgImageView; -} - -- (NetIndicateRegard *)oneBallView { - if (!_oneBallView) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - _oneBallView = [[NetIndicateRegard alloc] initWithConfig:config]; - _oneBallView.userInteractionEnabled = YES; - _oneBallView.layer.masksToBounds = YES; - _oneBallView.tag = 1000; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(trialsBallRecogizner:)]; - [_oneBallView addGestureRecognizer:tap]; - } - return _oneBallView; -} - -- (NetIndicateRegard *)twoBallView { - if (!_twoBallView) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - _twoBallView = [[NetIndicateRegard alloc] initWithConfig:config]; - _twoBallView.userInteractionEnabled = YES; - _twoBallView.layer.masksToBounds = YES; - _twoBallView.tag = 1001; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(trialsBallRecogizner:)]; - [_twoBallView addGestureRecognizer:tap]; - } - return _twoBallView; -} - - -- (NetIndicateRegard *)threeBallView { - if (!_threeBallView) { - NetIndicateDisposition * config = [[NetIndicateDisposition alloc]init]; - _threeBallView = [[NetIndicateRegard alloc] initWithConfig:config]; - _threeBallView.userInteractionEnabled = YES; - _threeBallView.layer.masksToBounds = YES; - _threeBallView.tag = 1002; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(trialsBallRecogizner:)]; - [_threeBallView addGestureRecognizer:tap]; - } - return _threeBallView; -} - -- (UIButton *)trialsButton { - if (!_trialsButton) { - _trialsButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_trialsButton setImage:[UIImage imageNamed:@"room_treasure_fairy_trials_sure_bg"] forState:UIControlStateNormal]; - [_trialsButton setImage:[UIImage imageNamed:@"room_treasure_fairy_trials_sure_bg"] forState:UIControlStateSelected]; - [_trialsButton addTarget:self action:@selector(trialsButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _trialsButton; -} - -- (UILabel *)tipsLabel { - if (!_tipsLabel) { - _tipsLabel = [[UILabel alloc] init]; - _tipsLabel.font = [UIFont systemFontOfSize:12]; - _tipsLabel.textColor = [DJDKMIMOMColor colorAboutHexBWSttr:@"#59FDFF"]; - } - return _tipsLabel; -} - -- (UIButton *)fastButton { - if (!_fastButton) { - _fastButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_fastButton setTitle:@"一键投入" forState:UIControlStateNormal]; - [_fastButton setTitleColor:[DJDKMIMOMColor colorAboutHexBWSttr:@"#1F5764"] forState:UIControlStateNormal]; - _fastButton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_fastButton setBackgroundImage:[UIImage gradientPrettifyIndictowardseByvirtueofPrettifys:@[[DJDKMIMOMColor colorAboutHexBWSttr:@"#3AEAC7"], [DJDKMIMOMColor colorAboutHexBWSttr:@"#FFFEBB"]] gradientType:GradientGenreLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _fastButton.layer.masksToBounds = YES; - _fastButton.layer.cornerRadius = 10; - [_fastButton setEnlargeEdgeAboutApex:10 right:5 bottom:10 left:10]; - [_fastButton addTarget:self action:@selector(fastButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _fastButton; -} - -- (UIButton *)againButton { - if (!_againButton) { - _againButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_againButton setTitle:@"重新投入" forState:UIControlStateNormal]; - [_againButton setImage:[UIImage imageNamed:@"room_treasure_fairy_trials_refresh_bg"] forState:UIControlStateNormal]; - [_againButton setTitleColor:[DJDKMIMOMColor colorAboutHexBWSttr:@"#FFE8AA"] forState:UIControlStateNormal]; - _againButton.titleLabel.font = [UIFont systemFontOfSize:12]; - _againButton.titleEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0); - [_againButton addTarget:self action:@selector(againButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _againButton; -} - -- (UIImageView *)ballBackView { - if (!_ballBackView) { - _ballBackView = [[UIImageView alloc] init]; - _ballBackView.userInteractionEnabled = YES; - _ballBackView.image = [UIImage imageNamed:@"room_treasure_fairy_trials_ball_back"]; - } - return _ballBackView; -} - -- (XPTreasureFairyTrialsBallView *)firstView { - if(!_firstView) { - _firstView = [[XPTreasureFairyTrialsBallView alloc] init]; - _firstView.tag = 1001; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(fairyBallRecoginzer:)]; - [_firstView addGestureRecognizer:tap]; - } - return _firstView; -} - -- (XPTreasureFairyTrialsBallView *)secondView { - if(!_secondView) { - _secondView = [[XPTreasureFairyTrialsBallView alloc] init]; - _secondView.tag = 1002; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(fairyBallRecoginzer:)]; - [_secondView addGestureRecognizer:tap]; - } - return _secondView; -} - -- (XPTreasureFairyTrialsBallView *)thirdView { - if(!_thirdView) { - _thirdView = [[XPTreasureFairyTrialsBallView alloc] init]; - _thirdView.tag = 1003; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(fairyBallRecoginzer:)]; - [_thirdView addGestureRecognizer:tap]; - } - return _thirdView; -} - -- (XPTreasureFairyTrialsBallView *)fourthView { - if(!_fourthView) { - _fourthView = [[XPTreasureFairyTrialsBallView alloc] init]; - _fourthView.tag = 1004; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(fairyBallRecoginzer:)]; - [_fourthView addGestureRecognizer:tap]; - } - return _fourthView; -} - -- (XPTreasureFairyTrialsBallView *)fifthView { - if(!_fifthView) { - _fifthView = [[XPTreasureFairyTrialsBallView alloc] init]; - _fifthView.tag = 1005; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(fairyBallRecoginzer:)]; - [_fifthView addGestureRecognizer:tap]; - } - return _fifthView; -} - -- (VAPView *)trialsView { - if (!_trialsView) { - _trialsView = [[VAPView alloc] initWithFrame:CGRectMake(0, 0, 342, 245)]; - _trialsView.contentMode = UIViewContentModeScaleAspectFill; - _trialsView.hidden = NO; - } - return _trialsView; -} - - -- (NSMutableArray *)ballList { - if (!_ballList) { - _ballList = [NSMutableArray array]; - } - return _ballList; -} - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyTrialsRecordView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyTrialsRecordView.h deleted file mode 100644 index 0e0752aa..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyTrialsRecordView.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// XPTreasureFairyTrialsRecordView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/27. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface XPTreasureFairyTrialsRecordView : UIView - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyTrialsRecordView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyTrialsRecordView.m deleted file mode 100644 index 76b9a3e5..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyTrialsRecordView.m +++ /dev/null @@ -1,229 +0,0 @@ -// -// XPTreasureFairyTrialsRecordView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/27. -// - -#import "XPTreasureFairyTrialsRecordView.h" -///Third -#import -#import -///Tool -#import "DJDKMIMOMColor.h" -#import "Api+TreasureFairy.h" - -#import "NSArray+Safe.h" -#import "YUMIMacroUitls.h" -#import "MKJPopup.h" -///Model -#import "TreasureFairyTrialsRecordModel.h" -///View -#import "XPTreasureFairyTrialsRecordCell.h" - -@interface XPTreasureFairyTrialsRecordView () -///顶部的View -@property (nonatomic,strong) UIView *bottomView; -///显示标题 -@property (nonatomic,strong) UILabel *titleLabel; -///背景 -@property (nonatomic,strong) UIImageView *backImageView; -///列表 -@property (nonatomic,strong) UITableView *tableView; -///数据源 -@property (nonatomic,strong) NSMutableArray *datasource; -///顶部的视图 -@property (nonatomic,strong) XPTreasureFairyTrialsRecordCell *headView; -@property (nonatomic,assign) NSInteger page; -@end -@implementation XPTreasureFairyTrialsRecordView - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initHeaderAndFooterRrfresh]; - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Refresh -- (void)initHeaderAndFooterRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor instantEssayPrettify]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - [self headerRefresh]; -} - -- (void)headerRefresh { - self.page = 1; - [Api treasureFailyCompoundBallRecord:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - [self.tableView.mj_header endRefreshing]; - if (code == 200) { - [self.datasource removeAllObjects]; - NSArray * array = [TreasureFairyTrialsRecordModel mtowardsrixsAboutGarment:data.data]; - [self.datasource addObjectsFromArray:array]; - [self.tableView reloadData]; - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; - } - } page:@"1" pageSize:@"20"]; -} - -- (void)footerRefresh { - self.page++; - [Api treasureFailyCompoundBallRecord:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - [self.tableView.mj_footer endRefreshing]; - if (code == 200) { - NSArray * array = [TreasureFairyTrialsRecordModel mtowardsrixsAboutGarment:data.data]; - if (array.count > 0) { - [self.datasource addObjectsFromArray:array]; - } - [self.tableView reloadData]; - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; - } - } page:[NSString stringWithFormat:@"%ld", self.page] pageSize:@"20"]; -} - - - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backImageView]; - [self addSubview:self.bottomView]; - [self.backImageView addSubview:self.titleLabel]; - [self.backImageView addSubview:self.tableView]; - self.tableView.tableHeaderView = self.headView; -} - -- (void)initSubViewConstraints { - CGFloat kscale = 387.0 / 318.0; - self.frame = CGRectMake(0, 0, KScreenWidth, KScreenWidth * kscale + 134 * kScreenScale); - [self.bottomView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self); - make.top.mas_equalTo(self.backImageView.mas_bottom); - }]; - - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.top.mas_equalTo(self); - make.height.mas_equalTo(387); - make.width.mas_equalTo(317); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.backImageView).offset(52); - }]; - - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backImageView).inset(3); - make.top.mas_equalTo(self.backImageView).offset(82); - make.bottom.mas_equalTo(self.backImageView).offset(-42); - }]; -} - -#pragma mark - UITableViewDelegate And UITableViewDataSource -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 50; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.datasource.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - XPTreasureFairyTrialsRecordCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPTreasureFairyTrialsRecordCell class])]; - if (cell == nil) { - cell = [[XPTreasureFairyTrialsRecordCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPTreasureFairyTrialsRecordCell class])]; - } - TreasureFairyTrialsRecordModel * info = [self.datasource secureGroalTowardsIndictowardsrix1:indexPath.row]; - cell.recordInfo = info; - return cell; -} - -#pragma mark - Event Response -- (void)dismissView { - [MKJPopup dismiss]; -} - -#pragma mark - Getters And Setters -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[XPTreasureFairyTrialsRecordCell class] forCellReuseIdentifier:NSStringFromClass([XPTreasureFairyTrialsRecordCell class])]; - } - return _tableView; -} - -- (XPTreasureFairyTrialsRecordCell *)headView { - if(!_headView) { - _headView = [[XPTreasureFairyTrialsRecordCell alloc] init]; - _headView.timeLabel.text = @"试炼时间"; - _headView.levelLabel.text = @"类型"; - _headView.trialsLabel.text = @"投入精灵"; - _headView.prizeLabel.text = @"获得奖励"; - _headView.timeLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightMedium]; - _headView.levelLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightMedium]; - _headView.prizeLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightMedium]; - _headView.frame = CGRectMake(0, 0, KScreenWidth, 30); - } - return _headView; -} - -- (UIView *)bottomView { - if (!_bottomView) { - _bottomView = [[UIView alloc] init]; - _bottomView.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissView)]; - [_bottomView addGestureRecognizer:tap]; - } - return _bottomView; -} - -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_trials_record_back"]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissView)]; - [_backImageView addGestureRecognizer:tap]; - } - return _backImageView; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - _titleLabel.textColor = [UIColor whiteColor]; - _titleLabel.text = @"试炼记录"; - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} - -- (NSMutableArray *)datasource { - if(!_datasource) { - _datasource = [NSMutableArray array]; - } - return _datasource; -} -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyTrialsView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyTrialsView.h deleted file mode 100644 index 4936a569..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyTrialsView.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// XPTreasureFairyTrialsView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/24. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface XPTreasureFairyTrialsView : UIView - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyTrialsView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyTrialsView.m deleted file mode 100644 index e3c41b05..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyTrialsView.m +++ /dev/null @@ -1,282 +0,0 @@ -// -// XPTreasureFairyTrialsView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/24. -// 精灵试炼 - -#import "XPTreasureFairyTrialsView.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "Api+TreasureFairy.h" - -#import "MKJPopup.h" -///Model -#import "TreasureFairyBallInfoModel.h" -///View -#import "XPTreasureFairyTrialsContentView.h" -#import "XPTreasureFairyTrialsRecordView.h" -@interface XPTreasureFairyTrialsView () -///返回按钮 -@property (nonatomic,strong) UIButton *backButton; -///消失 -@property (nonatomic,strong) UIView *dismissView; -///背景 -@property (nonatomic,strong) UIImageView *backImageView; -///显示标题 -@property (nonatomic,strong) UIImageView *titleImageView; -///记录 -@property (nonatomic,strong) UIButton *recordButton; -///分段控制器 -@property (nonatomic,strong) UIImageView *segmentView; -///中级 -@property (nonatomic,strong) UIButton *middleButton; -///高级 -@property (nonatomic,strong) UIButton *highButton; -///中级 -@property (nonatomic,strong) XPTreasureFairyTrialsContentView *middleView; -///高级 -@property (nonatomic,strong) XPTreasureFairyTrialsContentView *highView; -///精灵球信息 -@property (nonatomic,strong) TreasureFairyBallInfoModel *ballInfo; -@end - - -@implementation XPTreasureFairyTrialsView - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initHttpRequest]; - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initHttpRequest { - [Api treasureFairyMyBallList:^(BaseMatrix * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - TreasureFairyBallInfoModel * info = [TreasureFairyBallInfoModel mtowardsrixAboutImpactbasket:data.data]; - self.ballInfo = info; - self.middleView.datasource = info.lowElves; - self.highView.datasource = info.middleElves; - } else { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; - } - }]; -} - -- (void)initSubViews { - [self addSubview:self.dismissView]; - [self addSubview:self.backImageView]; - [self addSubview:self.backButton]; - [self addSubview:self.titleImageView]; - [self addSubview:self.segmentView]; - [self addSubview:self.middleView]; - [self addSubview:self.highView]; - [self addSubview:self.recordButton]; - - [self addSubview:self.middleButton]; - [self addSubview:self.highButton]; -} - -- (void)initSubViewConstraints { - CGFloat kscale = 580.0 / 375.0; - - [self.dismissView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self); - make.bottom.mas_equalTo(self.backImageView.mas_top); - }]; - - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self); - make.height.mas_equalTo(KScreenWidth * kscale); - }]; - - [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(28, 28)); - make.left.mas_equalTo(self.backImageView).offset(15); - make.top.mas_equalTo(self.backImageView).offset(40 * kScreenScale); - }]; - - [self.titleImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(153, 78)); - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.backImageView); - }]; - - [self.recordButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(24, 65)); - make.top.mas_equalTo(self.segmentView.mas_bottom).offset(10); - make.right.mas_equalTo(self.backImageView); - }]; - - [self.segmentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(345, 41)); - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.titleImageView.mas_bottom).offset(17 * kScreenScale); - }]; - - [self.middleButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(162, 51)); - make.left.mas_equalTo(self.segmentView.mas_left).offset(5); - make.centerY.mas_equalTo(self.segmentView).offset(1.5); - }]; - - [self.highButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.centerY.mas_equalTo(self.middleButton); - make.left.mas_equalTo(self.middleButton.mas_right).offset(1); - }]; - - [self.middleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.segmentView.mas_bottom).offset(-25 *kScreenScale); - }]; - - [self.highView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.middleView); - }]; -} - -#pragma mark - XPTreasureFairyTrialsContentViewDelegate -- (void)treasureFairyTrialsSuccess { - [self initHttpRequest]; -} - -#pragma mark - Event Response -- (void)dismissRecognizer { - [UIView animateWithDuration:0.3 animations:^{ - CGRect rect = self.frame; - rect.origin.y = KScreenHeight; - self.frame = rect; - } completion:^(BOOL finished) { - [self removeFromSuperview]; - }]; -} - -- (void)middleButtonAction:(UIButton *)sender { - sender.selected = YES; - self.highButton.selected = NO; - self.middleView.hidden = NO; - self.highView.hidden = YES; -} - -- (void)highButtonAction:(UIButton *)sender { - sender.selected = YES; - self.middleButton.selected = NO; - self.middleView.hidden = YES; - self.highView.hidden = NO; -} - -- (void)recordButtonAction:(UIButton *)sender { - XPTreasureFairyTrialsRecordView * recordView = [[XPTreasureFairyTrialsRecordView alloc] init]; - [MKJPopup popupRegard:recordView style:MKJPopupStyleActionSheet]; -} - -#pragma mark - Getters And Setters -- (UIButton *)backButton { - if (!_backButton) { - _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backButton setImage:[UIImage imageNamed:@"room_treasure_fairy_back"] forState:UIControlStateNormal]; - [_backButton setImage:[UIImage imageNamed:@"room_treasure_fairy_back"] forState:UIControlStateSelected]; - [_backButton addTarget:self action:@selector(dismissRecognizer) forControlEvents:UIControlEventTouchUpInside]; - } - return _backButton; -} - -- (UIView *)dismissView { - if (!_dismissView) { - _dismissView = [[UIView alloc] init]; - _dismissView.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissRecognizer)]; - [_dismissView addGestureRecognizer:tap]; - } - return _dismissView; -} - -- (UIImageView *)titleImageView { - if (!_titleImageView) { - _titleImageView = [[UIImageView alloc] init]; - _titleImageView.userInteractionEnabled = YES; - _titleImageView.image = [UIImage imageNamed:@"room_treasure_fairy_trials_title"]; - } - return _titleImageView; -} - -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_bg"]; - } - return _backImageView; -} - -- (UIButton *)recordButton { - if (!_recordButton) { - _recordButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_recordButton setBackgroundImage:[UIImage imageNamed:@"room_treasure_fairy_trials_record_bg"] forState:UIControlStateNormal]; - [_recordButton setBackgroundImage:[UIImage imageNamed:@"room_treasure_fairy_trials_record_bg"] forState:UIControlStateSelected]; - _recordButton.titleLabel.numberOfLines = 0; - _recordButton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_recordButton setTitle:@"试\n炼\n记\n录" forState:UIControlStateNormal]; - [_recordButton addTarget:self action:@selector(recordButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _recordButton; -} - -- (UIImageView *)segmentView { - if (!_segmentView) { - _segmentView = [[UIImageView alloc] init]; - _segmentView.image = [UIImage imageNamed:@"room_treasure_fairy_my_segment_bg"]; - _segmentView.userInteractionEnabled = YES; - } - return _segmentView; -} - -- (UIButton *)middleButton { - if (!_middleButton) { - _middleButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_middleButton setImage:[UIImage imageNamed:@"room_treasure_fairy_trials_middle_title_normal"] forState:UIControlStateNormal]; - [_middleButton setImage:[UIImage imageNamed:@"room_treasure_fairy_trials_middle_title_select"] forState:UIControlStateSelected]; - [_middleButton addTarget:self action:@selector(middleButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - _middleButton.selected = YES; - } - return _middleButton; -} - -- (UIButton *)highButton { - if (!_highButton) { - _highButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_highButton setImage:[UIImage imageNamed:@"room_treasure_fairy_trials_high_title_normal"] forState:UIControlStateNormal]; - [_highButton setImage:[UIImage imageNamed:@"room_treasure_fairy_trials_high_title_select"] forState:UIControlStateSelected]; - [_highButton addTarget:self action:@selector(highButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _highButton; -} - -- (XPTreasureFairyTrialsContentView *)middleView { - if (!_middleView) { - _middleView = [[XPTreasureFairyTrialsContentView alloc] init]; - _middleView.delegate = self; - _middleView.isHigh = NO; - _middleView.hidden= NO; - } - return _middleView; -} - -- (XPTreasureFairyTrialsContentView *)highView { - if (!_highView) { - _highView = [[XPTreasureFairyTrialsContentView alloc] init]; - _highView.delegate = self; - _highView.hidden = YES; - _highView.isHigh = YES; - } - return _highView; -} -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyWebView.h b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyWebView.h deleted file mode 100644 index 2e761a97..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyWebView.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// XPTreasureFairyWebView.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/17. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface XPTreasureFairyWebView : UIView -///地址 -@property (nonatomic,copy) NSString *url; -///房间uid -@property (nonatomic,copy) NSString *roomUid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyWebView.m b/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyWebView.m deleted file mode 100644 index 827c3708..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/View/XPTreasureFairyWebView.m +++ /dev/null @@ -1,92 +0,0 @@ -// -// XPTreasureFairyWebView.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/17. -// - -#import "XPTreasureFairyWebView.h" -///Third -#import -#import "YUMITissueRegardGovernancer.h" -///Tool -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "MKJPopup.h" - - -@interface XPTreasureFairyWebView () -///背景 -@property (nonatomic,strong) UIImageView *backImageView; -///加入h5 -@property (nonatomic, strong) YUMITissueRegardGovernancer *webVC; -@end - -@implementation XPTreasureFairyWebView -- (void)dealloc { - -} - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.backImageView]; - [self.backImageView addSubview:self.webVC.view]; - - self.webVC.CloseWebViewBlock = ^(BOOL result) { - [MKJPopup dismiss]; - }; -} - -- (void)initSubViewConstraints { - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); - }]; - - [self.webVC.view mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.backImageView).offset(20 * kScreenScale); - make.left.right.bottom.mas_equalTo(self.backImageView); - }]; -} - -#pragma mark - Getters And Setters -- (void)setUrl:(NSString *)url { - _url = url; - if (_url.length > 0) { - self.webVC.roomUid = self.roomUid; - self.webVC.url = _url; - } -} - -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_web_bg"]; - } - return _backImageView; -} - -- (YUMITissueRegardGovernancer *)webVC { - if (_webVC == nil) { - _webVC = [[YUMITissueRegardGovernancer alloc] init]; - _webVC.view.backgroundColor = [UIColor clearColor]; - _webVC.webview.scrollView.backgroundColor = [UIColor clearColor]; - _webVC.webview.opaque = NO; - _webVC.webview.scrollView.backgroundColor = [UIColor clearColor]; - } - return _webVC; -} - - - -@end diff --git a/YuMi/PICustomClass/TreasureFairy/View/XPTreasureFairyViewController.h b/YuMi/PICustomClass/TreasureFairy/View/XPTreasureFairyViewController.h deleted file mode 100644 index 72d0cecc..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/XPTreasureFairyViewController.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// XPTreasureFairyViewController.h -// xplan-ios -// -// Created by 冯硕 on 2023/2/15. -// - -#import "BaseRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface XPTreasureFairyViewController : BaseRegardGovernancer -///房主的uid -@property (nonatomic,strong) NSString *roomUid; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/TreasureFairy/View/XPTreasureFairyViewController.m b/YuMi/PICustomClass/TreasureFairy/View/XPTreasureFairyViewController.m deleted file mode 100644 index 4c8f687a..00000000 --- a/YuMi/PICustomClass/TreasureFairy/View/XPTreasureFairyViewController.m +++ /dev/null @@ -1,707 +0,0 @@ -// -// XPTreasureFairyViewController.m -// xplan-ios -// -// Created by 冯硕 on 2023/2/15. -// - -#import "XPTreasureFairyViewController.h" -///Third -#import -#import -///Tool -#import "YUMIMacroUitls.h" -#import "DJDKMIMOMColor.h" -#import "NSArray+Safe.h" -#import "MKJPopup.h" -#import "YUMIHtmlUrl.h" -#import "XCCurrentVCStackExecutive.h" -#import "UIButton+EnlargeTouchArea.h" -#import "StatsticsticsServingFacilitater.h" -#import "AccountAbstractStorage.h" -///Model -#import "TreasureFailyKeyInfoModel.h" -#import "TreasureFairyInfoModel.h" -#import "AttachmentMatrix.h" -///View -#import "XPTreasureFairyDrawView.h" -#import "XPTreasureFailyPrizeGiftView.h" -#import "XPTreasureFailyResultView.h" -#import "XPTreasureFairyWebView.h" -#import "YUMITissueRegardGovernancer.h" -#import "XPTreasureFairyStoreView.h" -#import "XPTreasureFairyMoreView.h" -#import "XPTreasureFairyMyView.h" -///P -#import "XPTreasureFailyPresenter.h" -#import "XPTreasureFailyProtocol.h" - -NSString * const kTreasureFairyPrizeAlertKey = @"kTreasureFairyPrizeAlertKey"; - -@interface XPTreasureFairyViewController () -///点击消失 -@property (nonatomic,strong) UIView *dismissView; -///背景 -@property (nonatomic,strong) UIImageView *backImageView; -///显示标题 -@property (nonatomic,strong) UIImageView *titleImageView; -///显示门票 -@property (nonatomic,strong) UIView *ticketView; -///门票背景 -@property (nonatomic,strong) UIImageView *ticketImageView; -///门票 -@property (nonatomic,strong) UILabel *ticketLabel; -///门票的背景 -@property (nonatomic,strong) UIImageView *tickBgImageView; -///门票+ -@property (nonatomic,strong) UIImageView *ticketAddImageView; -///我的精灵 -@property (nonatomic,strong) UIButton *myFairyButton; -///精灵密藏 -@property (nonatomic,strong) UIButton *treasureButton; -///更多 -@property (nonatomic,strong) UIButton *moreButton; -///精灵抽奖 -@property (nonatomic,strong) XPTreasureFairyDrawView *fairyDrawView; -///一次 -@property (nonatomic,strong) UIButton *oneButton; -///十次 -@property (nonatomic,strong) UIButton *tenButton; -///一百次 -@property (nonatomic,strong) UIButton *hundredButton; -///动画的容器 -@property (nonatomic,strong) UIView *animationView; -///更多 -@property (nonatomic,strong) XPTreasureFairyMoreView *moreView; -///提示 -@property (nonatomic,strong) UIStackView *tipsStackView; -@property (nonatomic,strong) UIButton *boxButton; -@property (nonatomic,strong) UILabel *tipLabel; -///用户信息 -@property (nonatomic,strong) TreasureFailyKeyInfoModel *keyInfo; -///当前选择的开出次数 -@property (nonatomic,strong) UIButton *countButton; -///是否正在奖励动画 -@property (nonatomic,assign) BOOL isRewardAnimting; -///抽奖是否结束了 -@property (nonatomic,assign) BOOL isDrawFinish; -@end - -@implementation XPTreasureFairyViewController - -- (__kindof id)producePresimport { - return [[XPTreasureFailyPresenter alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self initHttpRequest]; - [self initSubViews]; - [self initSubViewConstraints]; -} - -#pragma mark - Private Method -- (void)initHttpRequest { - [self.producePresimport getTreasureFailyInfo]; - [self.producePresimport getTreasureFailyDrawList]; -} - -- (void)initSubViews { - self.isDrawFinish = YES; - [[NIMSDK sharedSDK].systemNotificationManager addDelegate:self]; - self.view.backgroundColor = [UIColor clearColor]; - [self.view addSubview:self.dismissView]; - [self.view addSubview:self.backImageView]; - - [self.backImageView addSubview:self.ticketView]; - [self.backImageView addSubview:self.myFairyButton]; - [self.backImageView addSubview:self.treasureButton]; - [self.backImageView addSubview:self.moreButton]; - [self.backImageView addSubview:self.titleImageView]; - [self.backImageView addSubview:self.fairyDrawView]; - [self.backImageView addSubview:self.moreView]; - - [self.backImageView addSubview:self.oneButton]; - [self.backImageView addSubview:self.tenButton]; - [self.backImageView addSubview:self.hundredButton]; - [self.backImageView addSubview:self.animationView]; - [self.backImageView addSubview:self.tipsStackView]; - - [self.tipsStackView addArrangedSubview:self.boxButton]; - [self.tipsStackView addArrangedSubview:self.tipLabel]; - - [self.ticketView addSubview:self.tickBgImageView]; - [self.ticketView addSubview:self.ticketImageView]; - [self.tickBgImageView addSubview:self.ticketLabel]; - [self.tickBgImageView addSubview:self.ticketAddImageView]; -} - -- (void)initSubViewConstraints { - [self.dismissView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.backImageView.mas_top).offset(100); - }]; - - CGFloat kscale = 580.0 / 375.0; - - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(self.view); - make.height.mas_equalTo(KScreenWidth * kscale); - }]; - - [self.titleImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(153, 78)); - make.centerX.mas_equalTo(self.backImageView); - make.top.mas_equalTo(self.backImageView); - }]; - - [self.ticketView mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(31); - make.left.mas_equalTo(self.backImageView).offset(15); - make.right.mas_equalTo(self.tickBgImageView.mas_right); - make.top.mas_equalTo(self.backImageView).offset(97 * kScreenScale); - }]; - - [self.ticketImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(34, 31)); - make.left.mas_equalTo(self.ticketView).offset(0); - make.bottom.mas_equalTo(self.ticketView);; - }]; - - [self.tickBgImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(24); - make.width.mas_equalTo(77); - make.bottom.mas_equalTo(self.ticketView); - make.left.mas_equalTo(self.ticketView).offset(15); - }]; - - [self.ticketLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.tickBgImageView.mas_left).offset(20); - make.centerY.mas_equalTo(self.tickBgImageView); - }]; - - [self.ticketAddImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(14, 14)); - make.centerY.mas_equalTo(self.tickBgImageView); - make.right.mas_equalTo(self.tickBgImageView.mas_right).offset(-8); - }]; - - - [self.treasureButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(50, 42)); - make.centerY.mas_equalTo(self.myFairyButton); - make.right.mas_equalTo(self.myFairyButton.mas_left).offset(-4); - }]; - - [self.myFairyButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(50, 42)); - make.top.mas_equalTo(self.backImageView).offset(90 * kScreenScale); - make.right.mas_equalTo(self.moreButton.mas_left).offset(-4); - }]; - - [self.moreButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(50, 42)); - make.centerY.mas_equalTo(self.myFairyButton); - make.right.mas_equalTo(self.backImageView).offset(-15); - }]; - - [self.moreView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(111, 135)); - make.top.mas_equalTo(self.moreButton.mas_bottom).offset(-2); - make.right.mas_equalTo(self.backImageView).offset(-5); - }]; - - [self.fairyDrawView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.view); - make.width.mas_equalTo(75 * kScreenScale * 4 + 15 * 3); - make.top.mas_equalTo(self.myFairyButton.mas_bottom).offset(14 * kScreenScale); - }]; - - [self.oneButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(115, 45)); - make.right.mas_equalTo(self.tenButton.mas_left); - make.bottom.mas_equalTo(self.backImageView).offset(-35); - }]; - - [self.tenButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(115, 45)); - make.centerX.mas_equalTo(self.view.mas_centerX); - make.centerY.mas_equalTo(self.oneButton); - }]; - - [self.hundredButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(115, 45)); - make.left.mas_equalTo(self.tenButton.mas_right); - make.centerY.mas_equalTo(self.oneButton); - }]; - - [self.animationView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.backImageView).offset(15); - make.bottom.mas_equalTo(self.backImageView).offset(-88); - make.width.mas_equalTo(150); - make.height.mas_equalTo(30 * 5); - }]; - - [self.tipsStackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.fairyDrawView.mas_bottom).offset(0); - make.right.mas_equalTo(self.backImageView).offset(-19); - make.height.mas_equalTo(16); - }]; - - [self.boxButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(16); - }]; -} - -///开展开奖结果 -- (void)showTreasureFairyReward:(NSArray *)array { - [MKJPopup dismiss]; - XPTreasureFailyResultView * result = [[XPTreasureFailyResultView alloc] init]; - result.datasource = array; - MKJPopupServing * config = [[MKJPopupServing alloc] init]; - config.style = MKJPopupStyleActionSheet; - config.maskEncouragegroundTransparency = 0; - config.contentView = result; - [MKJPopup popupAboutDisposition:config]; -} - -#pragma mark - 开出的左下角动画 -- (void)createPrizeResult:(NSString *)title { - ///取消所有的延迟加载的方法 - [NSObject cancelPreviousPerformRequestsWithTarget:self]; - XPTreasureFailyPrizeGiftView * view = [[XPTreasureFailyPrizeGiftView alloc] init]; - view.title = title; - CGFloat widht = [title boundingRectWithSize:CGSizeMake(200, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12]} context:nil].size.width + 13; - view.frame = CGRectMake(0, 4 * 25 , widht, 25 + 6); - [self.animationView addSubview:view]; - - if (self.animationView.subviews.count > 5) { - [self.animationView.subviews.firstObject removeFromSuperview]; - } - for (int i=0; i < self.animationView.subviews.count; i++) { - XPTreasureFailyPrizeGiftView * view = [self.animationView.subviews secureGroalTowardsIndictowardsrix1:i]; - NSInteger offsetY= (self.animationView.subviews.count - i) * (25 + 6); - [UIView animateWithDuration:0.1 animations:^{ - CGRect rect = view.frame; - rect.origin.y = 25 * 5 - offsetY; - view.frame = rect; - } completion:^(BOOL finished) { - if (i == (self.animationView.subviews.count -1)) { - [self.animationView.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - [self performSelector:@selector(giftViewRemoveFromSuperView:) withObject:obj afterDelay:3]; - }]; - } - }]; - } -} - -- (void)giftViewRemoveFromSuperView:(UIView *)view { - [view removeFromSuperview]; -} - -#pragma mark - XPTreasureFailyProtocol -- (void)getTreasureFailyInfoSuccess:(TreasureFailyKeyInfoModel *)info { - self.keyInfo = info; - self.ticketLabel.text = [NSString stringWithFormat:@"%ld", info.drawTicketNum]; - self.fairyDrawView.keyInfo = info; -} - -- (void)getTreasureFailyDrawListSuccess:(NSArray *)list { - self.fairyDrawView.failyList = list; -} - -- (void)drawTreasureFailySuccess:(NSArray *)array { - self.countButton.enabled = YES; - ///刷新进度 - [self.producePresimport getTreasureFailyInfo]; - if (array.count > 0) { - self.fairyDrawView.rewardInfo = array.firstObject; - self.isRewardAnimting = YES; - @kWeakify(self); - [self.fairyDrawView startTimerCompletion:^(BOOL finish) { - @kStrongify(self); - self.isDrawFinish = YES; - self.isRewardAnimting = NO; - //是否展示结果 - NSString * key = [NSString stringWithFormat:@"%@_%@", kTreasureFairyPrizeAlertKey, [AccountAbstractStorage instance].acquireCid]; - if (![[NSUserDefaults standardUserDefaults] boolForKey:key] ) { - [self showTreasureFairyReward:array]; - } - }]; - } - - ///左下角的动画 - if (array.count > 0) { - for (TreasureFairyInfoModel * info in array) { - if (info.rewardLevel >= 3) { - NSString *title = [NSString stringWithFormat:@"%@x%ld", info.rewardName, info.rewardNum]; - [self createPrizeResult:title]; - } - } - } -} - -- (void)drawTreasureFailyFail:(NSInteger)code { - if (code == 21188) { - MKJPrecautiousDisposition * config = [[MKJPrecautiousDisposition alloc] init]; - config.message = @"购买限时装扮获得夺宝券"; - config.acknowledgementBtutonDisposition.title = @"去参与"; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [self ticketRecognizer]; - } cancelHandler:^{ - - }]; - - } - self.isDrawFinish = YES; - self.countButton.enabled = YES; -} - -#pragma mark - NIMSystemNotificationManagerDelegate -- (void)onReceiveCustomSystemNotification:(NIMCustomSystemNotification *)notification { - if (notification.receiverType == NIMSessionTypeP2P) { - AttachmentMatrix *attachment = [AttachmentMatrix mtowardsrixAboutJSON:notification.content]; - if (attachment.first == IndividualityCommunicationGenre_Account && attachment.second == Custom_Message_Sub_Account_Changed){ - if (attachment.second == Custom_Message_Sub_Account_Changed) { - [self.producePresimport getTreasureFailyInfo]; - } - } - } -} - -#pragma mark - XPTreasureFairyMoreViewDelegate -- (void)xPTreasureFairyMoreView:(XPTreasureFairyMoreView *)view didClickButton:(TreasureFairyMoreType)type { - view.hidden = YES; - NSString * url; - if (type == TreasureFairyMoreType_Rule) { - url = URLWithType(kTreasureRuleURL); - } else if (type == TreasureFairyMoreType_Expet) { - url = URLWithType(kTreasureRankListURL); - } else { - url = URLWithType(kTreasureRecordURL); - } - CGFloat kscale = 550.0 / 375.0; - XPTreasureFairyWebView * webView = [[XPTreasureFairyWebView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenWidth * kscale)]; - webView.url = url; - [MKJPopup popupRegard:webView style:MKJPopupStyleActionSheet]; - -} -#pragma mark - Event Response -- (void)dismissVC { - [self dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)ticketRecognizer { - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:@"treasure_elf_ticket_click" eventAttributes:nil]; - self.moreView.hidden = YES; - CGFloat kscale = 550.0 / 375.0; - XPTreasureFairyWebView * webView = [[XPTreasureFairyWebView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenWidth * kscale)]; - webView.url = URLWithType(kTreasureTicketBuyURL); - MKJPopupServing * config = [[MKJPopupServing alloc] init]; - config.style = MKJPopupStyleActionSheet; - config.contentView = webView; - config.maskEncouragegroundTransparency = 0.5; - @kWeakify(self); - config.didFinishDismissHandler = ^(BOOL isDismissOnBackgroundTouch) { - @kStrongify(self); - [self.producePresimport getTreasureFailyInfo]; - }; - [MKJPopup popupAboutDisposition:config]; -} - -- (void)fairyDrawRecognizer { - self.moreView.hidden = YES; - if (self.isRewardAnimting) { - [self.fairyDrawView stopAnimation]; - } -} - -- (void)myfairyButtonAction:(UIButton *)sender { - self.moreView.hidden = YES; - XPTreasureFairyMyView * view = [[XPTreasureFairyMyView alloc] init]; - view.frame = CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight); - [self.view addSubview:view]; - [UIView animateWithDuration:0.3 animations:^{ - CGRect rect = view.frame; - rect.origin.y = 0; - view.frame = rect; - }]; -} - -- (void)treasureButtonAction:(UIButton *)sender { - self.moreView.hidden = YES; - XPTreasureFairyStoreView * view = [[XPTreasureFairyStoreView alloc] init]; - view.roomUid = self.roomUid; - view.frame = CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight); - [self.view addSubview:view]; - [UIView animateWithDuration:0.3 animations:^{ - CGRect rect = view.frame; - rect.origin.y = 0; - view.frame = rect; - }]; -} - -- (void)moreButtonAction:(UIButton *)sender { - sender.selected = !sender.selected; - self.moreView.hidden = !sender.selected; -} - -- (void)hundredButtonAction:(UIButton *)sender { - if (!self.isDrawFinish) { - return; - } - self.countButton = sender; - sender.enabled = NO; - [self drawTreasureFairy:100]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:@"treasure_elf_lottery_click" eventAttributes:@{@"opencode": @"100次"}]; -} - -- (void)tenButtonAction:(UIButton *)sender { - if (!self.isDrawFinish) { - return; - } - self.countButton = sender; - sender.enabled = NO; - [self drawTreasureFairy:10]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:@"treasure_elf_lottery_click" eventAttributes:@{@"opencode": @"10次"}]; -} - -- (void)oneButtonAction:(UIButton *)sender { - if (!self.isDrawFinish) { - return; - } - self.countButton = sender; - sender.enabled = NO; - [self drawTreasureFairy:1]; - [StatsticsticsServingFacilitater trajectoryOccurrenceAboutDigital:@"treasure_elf_lottery_click" eventAttributes:@{@"opencode": @"1次"}]; -} - -- (void)drawTreasureFairy:(NSInteger)number { - self.isDrawFinish = NO; - self.moreView.hidden = YES; - if(self.keyInfo.drawTicketNum < number) { - self.countButton.enabled = YES; - self.isDrawFinish = YES; - MKJPrecautiousDisposition * config = [[MKJPrecautiousDisposition alloc] init]; - config.message = @"购买限时装扮获得夺宝券"; - config.acknowledgementBtutonDisposition.title = @"去参与"; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - [self ticketRecognizer]; - } cancelHandler:^{ - - }]; - return; - } - [self.producePresimport drawTreasureFaily:self.roomUid drawNum:number]; -} - -- (void)boxButtonAction:(UIButton *)sender { - sender.selected = !sender.selected; - if (sender.selected) { - NSString * key = [NSString stringWithFormat:@"%@_%@", kTreasureFairyPrizeAlertKey, [AccountAbstractStorage instance].acquireCid]; - [[NSUserDefaults standardUserDefaults] setBool:YES forKey:key]; - } else { - NSString * key = [NSString stringWithFormat:@"%@_%@", kTreasureFairyPrizeAlertKey, [AccountAbstractStorage instance].acquireCid]; - [[NSUserDefaults standardUserDefaults] setBool:NO forKey:key]; - } -} - -#pragma mark - Getters And Setters -- (UIView *)dismissView { - if (!_dismissView) { - _dismissView = [[UIView alloc] init]; - _dismissView.backgroundColor = UIColorRGBAlpha(0x000000, 0.6); - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissVC)]; - [_dismissView addGestureRecognizer:tap]; - } - return _dismissView; -} - -- (UIImageView *)titleImageView { - if (!_titleImageView) { - _titleImageView = [[UIImageView alloc] init]; - _titleImageView.userInteractionEnabled = YES; - _titleImageView.image = [UIImage imageNamed:@"room_treasure_page_title"]; - } - return _titleImageView; -} - -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_treasure_fairy_bg"]; - } - return _backImageView; -} - -- (UIImageView *)ticketImageView { - if (!_ticketImageView) { - _ticketImageView = [[UIImageView alloc] init]; - _ticketImageView.userInteractionEnabled = YES; - _ticketImageView.image = [UIImage imageNamed:@"room_treasure_fairy_ticket"]; - } - return _ticketImageView; -} - -- (UIImageView *)tickBgImageView { - if (!_tickBgImageView) { - _tickBgImageView = [[UIImageView alloc] init]; - _tickBgImageView.userInteractionEnabled = YES; - _tickBgImageView.contentMode = UIViewContentModeScaleAspectFit; - _tickBgImageView.layer.masksToBounds = YES; - _tickBgImageView.image = [UIImage imageNamed:@"room_treasure_fairy_ticket_bg"]; - } - return _tickBgImageView; -} - -- (UIImageView *)ticketAddImageView { - if (!_ticketAddImageView) { - _ticketAddImageView = [[UIImageView alloc] init]; - _ticketAddImageView.userInteractionEnabled = YES; - _ticketAddImageView.image = [UIImage imageNamed:@"room_treasure_fairy_ticket_add_bg"]; - } - return _ticketAddImageView; -} - -- (UIView *)ticketView { - if (!_ticketView) { - _ticketView = [[UIView alloc] init]; - _ticketView.backgroundColor = [UIColor clearColor]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(ticketRecognizer)]; - [_ticketView addGestureRecognizer:tap]; - } - return _ticketView; -} - -- (UILabel *)ticketLabel { - if (!_ticketLabel) { - _ticketLabel = [[UILabel alloc] init]; - _ticketLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - _ticketLabel.textColor = [UIColor whiteColor]; - _ticketLabel.userInteractionEnabled = YES; - } - return _ticketLabel; -} - -- (UIButton *)myFairyButton { - if (!_myFairyButton) { - _myFairyButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_myFairyButton setImage:[UIImage imageNamed:@"room_treasure_fairy_my_bg"] forState:UIControlStateNormal]; - [_myFairyButton setImage:[UIImage imageNamed:@"room_treasure_fairy_my_bg"] forState:UIControlStateSelected]; - [_myFairyButton addTarget:self action:@selector(myfairyButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _myFairyButton; -} - -- (UIButton *)treasureButton { - if (!_treasureButton) { - _treasureButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_treasureButton setImage:[UIImage imageNamed:@"room_treasure_fairy_treasure_bg"] forState:UIControlStateNormal]; - [_treasureButton setImage:[UIImage imageNamed:@"room_treasure_fairy_treasure_bg"] forState:UIControlStateSelected]; - [_treasureButton addTarget:self action:@selector(treasureButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _treasureButton; -} - -- (UIButton *)moreButton { - if (!_moreButton) { - _moreButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_moreButton setImage:[UIImage imageNamed:@"room_treasure_fairy_more_bg"] forState:UIControlStateNormal]; - [_moreButton setImage:[UIImage imageNamed:@"room_treasure_fairy_more_bg"] forState:UIControlStateSelected]; - [_moreButton addTarget:self action:@selector(moreButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _moreButton; -} - -- (XPTreasureFairyDrawView *)fairyDrawView { - if (!_fairyDrawView) { - _fairyDrawView = [[XPTreasureFairyDrawView alloc] init]; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(fairyDrawRecognizer)]; - [_fairyDrawView addGestureRecognizer:tap]; - } - return _fairyDrawView; -} - -- (UIButton *)oneButton { - if (!_oneButton) { - _oneButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_oneButton setImage:[UIImage imageNamed:@"room_treasure_fairy_one_bg"] forState:UIControlStateNormal]; - [_oneButton setImage:[UIImage imageNamed:@"room_treasure_fairy_one_bg"] forState:UIControlStateSelected]; - [_oneButton addTarget:self action:@selector(oneButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _oneButton; -} - -- (UIButton *)tenButton { - if (!_tenButton) { - _tenButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_tenButton setImage:[UIImage imageNamed:@"room_treasure_fairy_ten_bg"] forState:UIControlStateNormal]; - [_tenButton setImage:[UIImage imageNamed:@"room_treasure_fairy_ten_bg"] forState:UIControlStateSelected]; - [_tenButton addTarget:self action:@selector(tenButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _tenButton; -} - -- (UIButton *)hundredButton { - if (!_hundredButton) { - _hundredButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_hundredButton setImage:[UIImage imageNamed:@"room_treasure_fairy_hundred_bg"] forState:UIControlStateNormal]; - [_hundredButton setImage:[UIImage imageNamed:@"room_treasure_fairy_hundred_bg"] forState:UIControlStateSelected]; - [_hundredButton addTarget:self action:@selector(hundredButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _hundredButton; -} - -- (UIView *)animationView { - if (!_animationView) { - _animationView = [[UIView alloc] init]; - _animationView.backgroundColor = [UIColor clearColor]; - } - return _animationView; -} - -- (XPTreasureFairyMoreView *)moreView { - if (!_moreView) { - _moreView = [[XPTreasureFairyMoreView alloc] init]; - _moreView.delegate = self; - _moreView.hidden = YES; - } - return _moreView; -} - -- (UIStackView *)tipsStackView { - if (!_tipsStackView) { - _tipsStackView = [[UIStackView alloc] init]; - _tipsStackView.axis = UILayoutConstraintAxisHorizontal; - _tipsStackView.distribution = UIStackViewDistributionFill; - _tipsStackView.alignment = UIStackViewAlignmentFill; - _tipsStackView.spacing = 5; - } - return _tipsStackView; -} - -- (UIButton *)boxButton { - if (!_boxButton) { - _boxButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_boxButton setImage:[UIImage imageNamed:@"room_treaseure_fairy_tip_normal"] forState:UIControlStateNormal]; - [_boxButton setImage:[UIImage imageNamed:@"room_treaseure_fairy_tip_select"] forState:UIControlStateSelected]; - [_boxButton addTarget:self action:@selector(boxButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - [_boxButton setEnlargeEdgeAboutApex:10 right:10 bottom:10 left:10]; - NSString * key = [NSString stringWithFormat:@"%@_%@", kTreasureFairyPrizeAlertKey, [AccountAbstractStorage instance].acquireCid]; - _boxButton.selected = [[NSUserDefaults standardUserDefaults] boolForKey:key]; - } - return _boxButton; -} - -- (UILabel *)tipLabel { - if (!_tipLabel) { - _tipLabel = [[UILabel alloc] init]; - _tipLabel.font = [UIFont systemFontOfSize:11]; - _tipLabel.textColor = UIColorFromRGB(0xFBFFED); - _tipLabel.text = @"不展示结果弹框"; - } - return _tipLabel; -} - -@end diff --git a/YuMi/PICustomClass/XPTreasureFairyGiftView.h b/YuMi/PICustomClass/XPTreasureFairyGiftView.h deleted file mode 100644 index 2814a2a1..00000000 --- a/YuMi/PICustomClass/XPTreasureFairyGiftView.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// XPTreasureFairyGiftView.h -// xplan-ios -// -// Created by XY on 2023/3/1. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface XPTreasureFairyGiftView : UIView - -///是否是动态飘屏 -@property (nonatomic,assign) BOOL isMaxLargeGift; -/// 是否是抽奖(抽奖、召唤) -@property (nonatomic,assign) BOOL isDrawGift; -///夺宝信息 -@property (nonatomic,copy) NSDictionary *treasureInfo; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/PICustomClass/XPTreasureFairyGiftView.m b/YuMi/PICustomClass/XPTreasureFairyGiftView.m deleted file mode 100644 index 8dbb948d..00000000 --- a/YuMi/PICustomClass/XPTreasureFairyGiftView.m +++ /dev/null @@ -1,198 +0,0 @@ -// -// XPTreasureFairyGiftView.m -// xplan-ios -// -// Created by XY on 2023/3/1. -// - -#import "XPTreasureFairyGiftView.h" -///Third -#import -#import -#import "YUMISVGADisporter.h" -#import "YUMIMacroUitls.h" -#import "ThemeColor+Room.h" -#import "TreasureFailryMessageModel.h" -#import "NSObject+MJExtension.h" - -@interface XPTreasureFairyGiftView() - -///动画管理类 -@property (strong, nonatomic) SVGAParser *parser; -///夺宝特效 -@property (nonatomic,strong) YUMISVGADisporter *treasureView; -///背景图 -@property (nonatomic,strong) UIImageView *backImageView; -///容器 -@property (nonatomic,strong) UIView *titleView; -///显示文本内容 -@property (nonatomic,strong) UILabel *titleLabel; - -@end - -@implementation XPTreasureFairyGiftView - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} -#pragma mark - Private Method -- (void)initSubViews { - [self addSubview:self.treasureView]; - [self addSubview:self.backImageView]; - [self.backImageView addSubview:self.titleView]; - - [self.titleView addSubview:self.titleLabel]; -} - -- (void)initSubViewConstraints { - [self.treasureView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self); - }]; - - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self); - }]; - - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backImageView).inset(20); - make.height.mas_equalTo(28); - make.top.mas_equalTo(self.backImageView).offset(23); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.titleView); - make.centerY.mas_equalTo(self.titleView); - }]; -} - -- (NSAttributedString *)createAttribute:(NSString * )text color:(UIColor *)color fontSize:(CGFloat)fonSize { - NSDictionary * attribute = @{NSFontAttributeName:[UIFont systemFontOfSize:fonSize], NSForegroundColorAttributeName:color}; - NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:text attributes:attribute]; - return attr; -} - -#pragma mark - Getters And Setters -- (void)setTreasureInfo:(NSDictionary *)treasureInfo { - if (treasureInfo) { - TreasureFailryMessageModel * giftInfo = [TreasureFailryMessageModel mtowardsrixAboutImpactbasket:treasureInfo]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - CGFloat fontSize = self.isMaxLargeGift ? 22 : 13; -// CGFloat fontSize = 13; - if (self.isDrawGift) { - [attribute appendAttributedString:[self createAttribute:@"好运爆棚! " color:[DJDKMIMOMColor colorAboutHexBWSttr:@"#8C4700"] fontSize:fontSize]]; - NSString * nick = giftInfo.nick; - if (nick.length > 6) { - nick = [nick substringToIndex:6]; - } - [attribute appendAttributedString:[self createAttribute:nick color:[DJDKMIMOMColor colorAboutHexBWSttr:@"#EC4613"] fontSize:fontSize]]; - [attribute appendAttributedString:[self createAttribute:@"在夺宝精灵中获得 " color:[DJDKMIMOMColor colorAboutHexBWSttr:@"#8C4700"] fontSize:fontSize]]; - [attribute appendAttributedString:[self createAttribute:giftInfo.rewardName color:[DJDKMIMOMColor colorAboutHexBWSttr:@"#EC4613"] fontSize:fontSize]]; - if (giftInfo.rewardNum > 1) { - [attribute appendAttributedString:[self createAttribute:[NSString stringWithFormat:@" X%ld", giftInfo.rewardNum] color:[DJDKMIMOMColor colorAboutHexBWSttr:@"#EC4613"] fontSize:fontSize]]; - } - }else{ - NSString * nick = giftInfo.nick; - if (nick.length > 6) { - nick = [nick substringToIndex:6]; - } - [attribute appendAttributedString:[self createAttribute:@"厉害了!" color:[DJDKMIMOMColor colorAboutHexBWSttr:@"#8C4700"] fontSize:fontSize]]; - [attribute appendAttributedString:[self createAttribute:nick color:[DJDKMIMOMColor colorAboutHexBWSttr:@"#EC4613"] fontSize:fontSize]]; - [attribute appendAttributedString:[self createAttribute:@"在夺宝精灵中" color:[DJDKMIMOMColor colorAboutHexBWSttr:@"#8C4700"] fontSize:fontSize]]; -// NSString *level = @""; -// if (giftInfo.rewardLevel == 1) { -// level = @"初级"; -// }else if (giftInfo.rewardLevel == 2) { -// level = @"史诗"; -// }else if (giftInfo.rewardLevel == 3) { -// level = @"传说"; -// } -// [attribute appendAttributedString:[self createAttribute:level color:[DJDKMIMOMColor colorAboutHexBWSttr:@"#8C4700"] fontSize:fontSize]]; - [attribute appendAttributedString:[self createAttribute:@"召唤了" color:[DJDKMIMOMColor colorAboutHexBWSttr:@"#8C4700"] fontSize:fontSize]]; - [attribute appendAttributedString:[self createAttribute:[NSString stringWithFormat:@"%ld",giftInfo.rewardShowValue] color:[DJDKMIMOMColor colorAboutHexBWSttr:@"#F1390A"] fontSize:fontSize]]; - - if ([giftInfo.rewardType isEqualToString:@"gift"]) { - [attribute appendAttributedString:[self createAttribute:@"钻" color:[DJDKMIMOMColor colorAboutHexBWSttr:@"#F1390A"] fontSize:fontSize]]; - }else{ - [attribute appendAttributedString:[self createAttribute:giftInfo.rewardUnit color:[DJDKMIMOMColor colorAboutHexBWSttr:@"#F1390A"] fontSize:fontSize]]; - } - - [attribute appendAttributedString:[self createAttribute:giftInfo.rewardName color:[DJDKMIMOMColor colorAboutHexBWSttr:@"#F1390A"] fontSize:fontSize]]; - } - - NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new]; - paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping; - paragraphStyle.lineSpacing = 0.0f;//行间距 - paragraphStyle.alignment = NSTextAlignmentCenter; - paragraphStyle.baseWritingDirection = NSWritingDirectionLeftToRight; - [attribute addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, attribute.length)]; - [self.treasureView setAttributedText:attribute forKey:@"touming_text_name"]; - if (self.isMaxLargeGift) { - self.backImageView.hidden = YES; - self.treasureView.hidden = NO; - @kWeakify(self); - [self.parser parseWithNamed:@"treasure_fairy_gift_bg" inBundle:[NSBundle mainBundle] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { - @kStrongify(self); - self.treasureView.loops = 1; - self.treasureView.clearsAfterStop = NO; - self.treasureView.videoItem = videoItem; - - [self.treasureView startAnimation]; - } failureBlock:^(NSError * _Nonnull error) { - - }]; - } else { - self.backImageView.hidden = NO; - self.treasureView.hidden = YES; - self.titleLabel.attributedText = attribute; - self.titleLabel.textAlignment = NSTextAlignmentCenter; - } - } -} - -- (YUMISVGADisporter *)treasureView { - if (!_treasureView) { - _treasureView = [[YUMISVGADisporter alloc]init]; - _treasureView.backgroundColor = [UIColor clearColor]; - _treasureView.userInteractionEnabled = NO; - } - return _treasureView; -} - -- (SVGAParser *)parser { - if (!_parser) { - _parser = [[SVGAParser alloc]init]; - } - return _parser; -} - -- (UIView *)titleView { - if (!_titleView) { - _titleView = [[UIView alloc] init]; - _titleView.backgroundColor = [UIColor clearColor]; - } - return _titleView; -} - -- (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_treaseure_fairy_normal_gift_bg"]; - } - return _backImageView; -} - -- (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.numberOfLines = 2; - } - return _titleLabel; -} - -@end diff --git a/YuMi/PICustomClass/fairy/treasure_fairy_gift_bg.svga b/YuMi/PICustomClass/fairy/treasure_fairy_gift_bg.svga deleted file mode 100644 index 9307d13a..00000000 Binary files a/YuMi/PICustomClass/fairy/treasure_fairy_gift_bg.svga and /dev/null differ diff --git a/YuMi/PICustomClass/fairy/treasure_fairy_one.mp4 b/YuMi/PICustomClass/fairy/treasure_fairy_one.mp4 deleted file mode 100644 index 8b469c85..00000000 Binary files a/YuMi/PICustomClass/fairy/treasure_fairy_one.mp4 and /dev/null differ diff --git a/YuMi/PICustomClass/fairy/treasure_fairy_summon_high.mp4 b/YuMi/PICustomClass/fairy/treasure_fairy_summon_high.mp4 deleted file mode 100644 index e6803a84..00000000 Binary files a/YuMi/PICustomClass/fairy/treasure_fairy_summon_high.mp4 and /dev/null differ diff --git a/YuMi/PICustomClass/fairy/treasure_fairy_summon_middle.mp4 b/YuMi/PICustomClass/fairy/treasure_fairy_summon_middle.mp4 deleted file mode 100644 index 038edd4e..00000000 Binary files a/YuMi/PICustomClass/fairy/treasure_fairy_summon_middle.mp4 and /dev/null differ diff --git a/YuMi/PICustomClass/fairy/treasure_fairy_summon_normal.mp4 b/YuMi/PICustomClass/fairy/treasure_fairy_summon_normal.mp4 deleted file mode 100644 index ebc23eaa..00000000 Binary files a/YuMi/PICustomClass/fairy/treasure_fairy_summon_normal.mp4 and /dev/null differ diff --git a/YuMi/PICustomClass/fairy/treasure_fairy_ten.mp4 b/YuMi/PICustomClass/fairy/treasure_fairy_ten.mp4 deleted file mode 100644 index 578d6fa1..00000000 Binary files a/YuMi/PICustomClass/fairy/treasure_fairy_ten.mp4 and /dev/null differ diff --git a/YuMi/PICustomClass/fairy/treasure_fairy_trials_high.mp4 b/YuMi/PICustomClass/fairy/treasure_fairy_trials_high.mp4 deleted file mode 100644 index f6d4b245..00000000 Binary files a/YuMi/PICustomClass/fairy/treasure_fairy_trials_high.mp4 and /dev/null differ diff --git a/YuMi/PICustomClass/fairy/treasure_fairy_trials_middle.mp4 b/YuMi/PICustomClass/fairy/treasure_fairy_trials_middle.mp4 deleted file mode 100644 index 04849005..00000000 Binary files a/YuMi/PICustomClass/fairy/treasure_fairy_trials_middle.mp4 and /dev/null differ diff --git a/YuMi/Resources/Image/1242.png b/YuMi/Resources/Image/1242.png index 482fca03..a90162eb 100644 Binary files a/YuMi/Resources/Image/1242.png and b/YuMi/Resources/Image/1242.png differ diff --git a/YuMi/Structure/Base/BaseNavigationController.h b/YuMi/Structure/Base/BaseNavigationController.h new file mode 100644 index 00000000..0b228a01 --- /dev/null +++ b/YuMi/Structure/Base/BaseNavigationController.h @@ -0,0 +1,16 @@ +// +// BaseNavigationController.h +// YUMI +// +// Created by zu on 2021/9/7. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface BaseNavigationController : UINavigationController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/Base/BaseNavigationController.m b/YuMi/Structure/Base/BaseNavigationController.m new file mode 100644 index 00000000..07e6d7d8 --- /dev/null +++ b/YuMi/Structure/Base/BaseNavigationController.m @@ -0,0 +1,72 @@ +// +// BaseNavigationController.m +// YUMI +// +// Created by zu on 2021/9/7. +// + +#import "BaseNavigationController.h" +///Tool +#import "DJDKMIMOMColor.h" + +@interface BaseNavigationController () + +@end + +@implementation BaseNavigationController + +- (void)viewDidLoad { + [super viewDidLoad]; + if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) { + self.interactivePopGestureRecognizer.delegate = self; + } + [self themeConfig]; +} + +- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { + if(self.topViewController == viewController) return; + if (self.childViewControllers.count > 0) { + viewController.hidesBottomBarWhenPushed = YES; + UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"common_nav_back"] style:UIBarButtonItemStyleDone target:self action:@selector(backClick)]; + leftBarButtonItem.tintColor = [DJDKMIMOMColor mainTextColor]; + viewController.navigationItem.leftBarButtonItem = leftBarButtonItem; + } + viewController.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil]; + + [super pushViewController:viewController animated:animated]; +} + +- (void)backClick{ + [self popViewControllerAnimated:YES]; +} + +- (void)themeConfig { + self.navigationBar.shadowImage = [[UIImage alloc] init]; + self.navigationBar.barTintColor = [DJDKMIMOMColor appBackgroundColor]; + self.navigationBar.tintColor = [UIColor whiteColor]; + self.navigationBar.translucent = NO; + self.view.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; + [self.navigationBar setTitleTextAttributes:@{ + NSFontAttributeName:[UIFont systemFontOfSize:18 weight:UIFontWeightMedium], + NSForegroundColorAttributeName:[DJDKMIMOMColor mainTextColor] + }]; + + /// scrollEdgeAppearance 属性iOS15 强制适用于 所有导航器 如果为nil 则使用 standardAppearance属性中的设置,并修改为使用透明背景 @fengshuo + if (@available(iOS 15.0, *)) { + UINavigationBarAppearance *appearance = [UINavigationBarAppearance new]; + appearance.titleTextAttributes = @{NSFontAttributeName:[UIFont systemFontOfSize:18 weight:UIFontWeightMedium], + NSForegroundColorAttributeName:[DJDKMIMOMColor mainTextColor]}; + appearance.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + self.navigationBar.standardAppearance = appearance; + self.navigationBar.scrollEdgeAppearance = appearance; + } +} + +#pragma mark - UIGestureRecognizerDelegate + +- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { + return YES; +} + + +@end diff --git a/YuMi/Structure/Base/BaseNevigationGovernancer.h b/YuMi/Structure/Base/BaseNevigationGovernancer.h deleted file mode 100644 index fcf0ac04..00000000 --- a/YuMi/Structure/Base/BaseNevigationGovernancer.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// BaseNevigationGovernancer.h -// YUMI -// -// Created by zu on 2021/9/7. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface BaseNevigationGovernancer : UINavigationController - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/Base/BaseNevigationGovernancer.m b/YuMi/Structure/Base/BaseNevigationGovernancer.m deleted file mode 100644 index beb1d99d..00000000 --- a/YuMi/Structure/Base/BaseNevigationGovernancer.m +++ /dev/null @@ -1,71 +0,0 @@ -// -// BaseNevigationGovernancer.m -// YUMI -// -// Created by zu on 2021/9/7. -// - -#import "BaseNevigationGovernancer.h" -#import "DJDKMIMOMColor.h" - -@interface BaseNevigationGovernancer () - -@end - -@implementation BaseNevigationGovernancer - -- (void)viewDidLoad { - [super viewDidLoad]; - if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) { - self.interactivePopGestureRecognizer.delegate = self; - } - [self themeDisposition]; -} - -- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { - if(self.topViewController == viewController) return; - if (self.childViewControllers.count > 0) { - viewController.hidesBottomBarWhenPushed = YES; - UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"yumi_same_title_back"] style:UIBarButtonItemStyleDone target:self action:@selector(encourageTicktack)]; - leftBarButtonItem.tintColor = [DJDKMIMOMColor mainEssayPrettify]; - viewController.navigationItem.leftBarButtonItem = leftBarButtonItem; - } - viewController.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil]; - - [super pushViewController:viewController animated:animated]; -} - -- (void)encourageTicktack{ - [self popViewControllerAnimated:YES]; -} - -- (void)themeDisposition { - self.navigationBar.shadowImage = [[UIImage alloc] init]; - self.navigationBar.barTintColor = [DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]; - self.navigationBar.tintColor = [UIColor whiteColor]; - self.navigationBar.translucent = NO; - self.view.backgroundColor = [DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]; - [self.navigationBar setTitleTextAttributes:@{ - NSFontAttributeName:[UIFont systemFontOfSize:18 weight:UIFontWeightMedium], - NSForegroundColorAttributeName:[DJDKMIMOMColor mainEssayPrettify] - }]; - - - if (@available(iOS 15.0, *)) { - UINavigationBarAppearance *appearance = [UINavigationBarAppearance new]; - appearance.titleTextAttributes = @{NSFontAttributeName:[UIFont systemFontOfSize:18 weight:UIFontWeightMedium], - NSForegroundColorAttributeName:[DJDKMIMOMColor mainEssayPrettify]}; - appearance.backgroundColor = [DJDKMIMOMColor aplictowardsionElementEncouragegroundPrettify]; - self.navigationBar.standardAppearance = appearance; - self.navigationBar.scrollEdgeAppearance = appearance; - } -} - -#pragma mark - UIGestureRecognizerDelegate - -- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { - return YES; -} - - -@end diff --git a/YuMi/Structure/Base/BaseRegardGovernancer.h b/YuMi/Structure/Base/BaseRegardGovernancer.h deleted file mode 100644 index a7dfb34d..00000000 --- a/YuMi/Structure/Base/BaseRegardGovernancer.h +++ /dev/null @@ -1,66 +0,0 @@ -// -// BaseRegardGovernancer.h -// YUMI -// -// Created by admin on 2023/3/9. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -@protocol BaseRegardGovernancerCeremony - - -- (void)EvidenceAccomplishmentToast:(NSString *)msg; - - -- (void)EvidenceMistakeToast:(NSString *)msg; - - -- (void)EvidenceChambering; - - -- (void)brakeHUD; - - -- (void)EvidenceKellegChambering; - -@end - -@interface BaseRegardGovernancer : UIViewController - -@property(nonatomic,assign,getter=isVeiledNevObstacle) BOOL veiledNevObstacle; - -@property (nonatomic, assign) BOOL parentMode; - -- (void)brakeBreeadcrumbObstacle; - - -- (void)EvidenceBreeadcrumbObstacle; - - - -- (void)EvidencePositionObstacle; - - - -- (void)brakePositionObstacle; -#pragma mark - 导航栏添加操作按钮 - -- (void)accelertowardseBreeadcrumbProvisionAboutIndictowardseSaluttowardsion:(NSArray *)imageNames - isContrary:(BOOL)isContrary - target:(id)target - action:(SEL)action - tags:(NSArray * _Nullable)tags; - -- (void)accelertowardseBreeadcrumbProvisionAboutChampions:(NSArray *)titles titleColor:(UIColor *)titleColor isContrary:(BOOL)isContrary target:(id)target action:(SEL)action tags:(NSArray * _Nullable)tags; - -- (void)accelertowardseBreeadcrumbProvisionAboutProvisions:(NSArray *)items - isContrary:(BOOL)isContrary; - - - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/Base/BaseRegardGovernancer.m b/YuMi/Structure/Base/BaseRegardGovernancer.m deleted file mode 100644 index d8aad17f..00000000 --- a/YuMi/Structure/Base/BaseRegardGovernancer.m +++ /dev/null @@ -1,172 +0,0 @@ -// -// BaseRegardGovernancer.m -// YUMI -// -// Created by admin on 2023/3/9. -// - -#import "BaseRegardGovernancer.h" -#import "XNDJTBWGLoadingTool.h" -#import "DJDKMIMOMColor.h" - -@interface BaseRegardGovernancer () - -@end - -@implementation BaseRegardGovernancer - -- (void)viewWillAppear:(BOOL)animated{ - [super viewWillAppear:animated]; - if (@available(iOS 13.0, *)) { - [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDarkContent; - } else { - - [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault; - } - - [self.navigationController setNavigationBarHidden:self.isVeiledNevObstacle animated:animated]; - - if (@available(iOS 15.0, *)) { - [self.navigationController.navigationBar.subviews enumerateObjectsUsingBlock:^(UIView *view, NSUInteger idx, BOOL *stop) { - if ([[UIDevice currentDevice].systemVersion doubleValue] >= 10.0) { - - if ([view isKindOfClass:NSClassFromString(@"_UIBarBackground")]) { - [view.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj isKindOfClass:NSClassFromString(@"_UIBarBackgroundShadowView")]) { - obj.hidden = YES; - } - }]; - } - } - }]; - } -} -- (void)viewDidLoad { - [super viewDidLoad]; - [self themeDisposition]; -} - -- (void)themeDisposition { - self.view.backgroundColor = [DJDKMIMOMColor aplictowardsionEncouragegroundPrettify]; - [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault; -} - - -- (void)brakeBreeadcrumbObstacle { - [self.navigationController setNavigationBarHidden:YES animated:YES]; -} - - - -- (void)EvidenceBreeadcrumbObstacle { - [self.navigationController setNavigationBarHidden:NO]; -} - - -- (void)EvidencePositionObstacle { - [UIApplication sharedApplication].statusBarHidden = NO; -} - - -- (void)brakePositionObstacle { - [UIApplication sharedApplication].statusBarHidden = YES; -} - -- (void)EvidenceAccomplishmentToast:(NSString *)msg { - [XNDJTBWGLoadingTool EvidenceAccomplishmentAboutCommunictowardsion:msg]; -} - -- (void)EvidenceMistakeToast:(NSString *)msg { - [XNDJTBWGLoadingTool EvidenceMistakeAboutCommunictowardsion:msg]; -} - -- (void)EvidenceChambering { - [XNDJTBWGLoadingTool EvidenceChambering]; -} - -- (void)brakeHUD { - [XNDJTBWGLoadingTool brakeHUD]; -} - - -- (void)EvidenceKellegChambering { - [XNDJTBWGLoadingTool EvidenceKellegChambering]; -} -#pragma mark - 导航栏添加操作按钮 - -- (void)accelertowardseBreeadcrumbProvisionAboutIndictowardseSaluttowardsion:(NSArray *)imageNames isContrary:(BOOL)isContrary target:(id)target action:(SEL)action tags:(NSArray * _Nullable)tags { - NSMutableArray * items = [[NSMutableArray alloc] init]; - NSInteger i = 0; - for (NSString * imageName in imageNames) { - UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom]; - [btn setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal]; - btn.frame = CGRectMake(0, 0, 30, 30); - if(isContrary){ - [btn setImageEdgeInsets:UIEdgeInsetsMake(0, -10, 0, 10)]; - }else{ - [btn setImageEdgeInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; - } - [btn addTarget:target action:action forControlEvents:UIControlEventTouchUpInside]; - btn.tag = [tags[i++] integerValue]; - UIBarButtonItem * item = [[UIBarButtonItem alloc] initWithCustomView:btn]; - [items addObject:item]; - } - if (isContrary) { - self.navigationItem.leftBarButtonItems = items; - } else { - self.navigationItem.rightBarButtonItems = items; - } -} - -- (void)accelertowardseBreeadcrumbProvisionAboutChampions:(NSArray *)titles titleColor:(UIColor *)titleColor isContrary:(BOOL)isContrary target:(id)target action:(SEL)action tags:(NSArray * _Nullable)tags { - NSMutableArray * items = [[NSMutableArray alloc] init]; - - UIBarButtonItem* spaceItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; - - spaceItem.width= -10; - [items addObject:spaceItem]; - if (titleColor == nil) { - titleColor = [DJDKMIMOMColor mainEssayPrettify]; - } - NSInteger i = 0; - for (NSString * title in titles) { - UIButton * btn = [UIButton buttonWithType:UIButtonTypeSystem]; - btn.frame = CGRectMake(0, 0, 30, 20); - [btn setTitle:title forState:UIControlStateNormal]; - [btn addTarget:target action:action forControlEvents:UIControlEventTouchUpInside]; - btn.titleLabel.font = [UIFont systemFontOfSize:14]; - [btn setTitleColor:titleColor forState:UIControlStateNormal]; - btn.tag = [tags[i++] integerValue]; - [btn sizeToFit]; - UIBarButtonItem * item = [[UIBarButtonItem alloc] initWithCustomView:btn]; - [items addObject:item]; - } - if (isContrary) { - self.navigationItem.leftBarButtonItems = items; - } else { - self.navigationItem.rightBarButtonItems = items; - } -} - - -- (void)accelertowardseBreeadcrumbProvisionAboutProvisions:(NSArray *)views - isContrary:(BOOL)isContrary { - NSMutableArray * items = [[NSMutableArray alloc] init]; - - UIBarButtonItem* spaceItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; - - spaceItem.width= -10; - [items addObject:spaceItem]; - for (UIView * view in views) { - UIBarButtonItem * item = [[UIBarButtonItem alloc] initWithCustomView:view]; - [items addObject:item]; - } - if (isContrary) { - self.navigationItem.leftBarButtonItems = items; - } else { - self.navigationItem.rightBarButtonItems = items; - } -} - - -@end diff --git a/YuMi/Structure/Base/BaseViewController.h b/YuMi/Structure/Base/BaseViewController.h new file mode 100644 index 00000000..0347a109 --- /dev/null +++ b/YuMi/Structure/Base/BaseViewController.h @@ -0,0 +1,101 @@ +// +// BaseViewController.h +// YUMI +// +// Created by admin on 2023/3/9. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol BaseViewControllerProtocol + +/** + 成功 toast + */ +- (void)showSuccessToast:(NSString *)msg; + +/** + 失败 toast + */ +- (void)showErrorToast:(NSString *)msg; + +/** + 加载 loading + */ +- (void)showLoading; + +/** + 隐藏 XCHUDTool + */ +- (void)hideHUD; + +/** + 显示加载个播房loading + */ +- (void)showAnchorLoading; + +@end + +@interface BaseViewController : UIViewController + +// 是否隐藏导航 默认是不隐藏的 +@property(nonatomic,assign,getter=isHiddenNavBar) BOOL hiddenNavBar; + +///是否青少年模式 +@property (nonatomic, assign) BOOL parentMode; +/** + 显示/隐藏导航 + */ +- (void)hideNavigationBar; + +/** + 隐藏导航栏 + */ +- (void)showNavigationBar; + + +/** + 显示/隐藏状态栏 + */ +- (void)showStatusBar; + + +/** + 隐藏状态栏 + */ +- (void)hideStatusBar; +#pragma mark - 导航栏添加操作按钮 + +/// 添加图片 +/// @param imageNames 图片的数组 +/// @param isLeft 是否在左边 +/// @param target 接受事件的 +/// @param action 点击 +/// @param tags tag +- (void)addNavigationItemWithImageNames:(NSArray *)imageNames + isLeft:(BOOL)isLeft + target:(id)target + action:(SEL)action + tags:(NSArray * _Nullable)tags; + +/// 添加文字 不可点击的时候颜色 +/// @param titles 文字的数组 +/// @param titleColor 文字的颜色 +/// @param isLeft 是否在左边 +/// @param target 目标 +/// @param action 点击 +/// @param tags tag +- (void)addNavigationItemWithTitles:(NSArray *)titles titleColor:(UIColor *)titleColor isLeft:(BOOL)isLeft target:(id)target action:(SEL)action tags:(NSArray * _Nullable)tags; + +/// 自定义的View +/// @param isLeft 是否在左边 +- (void)addNavigationItemWithItems:(NSArray *)items + isLeft:(BOOL)isLeft; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/Base/BaseViewController.m b/YuMi/Structure/Base/BaseViewController.m new file mode 100644 index 00000000..b826e529 --- /dev/null +++ b/YuMi/Structure/Base/BaseViewController.m @@ -0,0 +1,198 @@ +// +// BaseViewController.m +// YUMI +// +// Created by admin on 2023/3/9. +// + +#import "BaseViewController.h" +///Tool +#import "XNDJTDDLoadingTool.h" +#import "DJDKMIMOMColor.h" + +@interface BaseViewController () + +@end + +@implementation BaseViewController + +- (void)viewWillAppear:(BOOL)animated{ + [super viewWillAppear:animated]; + if (@available(iOS 13.0, *)) { + [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDarkContent; + } else { + // Fallback on earlier versions + [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault; + } + // 根据子类属性重写判断是否隐藏导航栏 + [self.navigationController setNavigationBarHidden:self.isHiddenNavBar animated:animated]; + ///解决iOS15 导航栏下面有一条黑色的线 @fengshuo + if (@available(iOS 15.0, *)) { + [self.navigationController.navigationBar.subviews enumerateObjectsUsingBlock:^(UIView *view, NSUInteger idx, BOOL *stop) { + if ([[UIDevice currentDevice].systemVersion doubleValue] >= 10.0) { + //iOS10,改变了导航栏的私有接口为_UIBarBackground + if ([view isKindOfClass:NSClassFromString(@"_UIBarBackground")]) { + [view.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj isKindOfClass:NSClassFromString(@"_UIBarBackgroundShadowView")]) { + obj.hidden = YES; + } + }]; + } + } + }]; + } +} +- (void)viewDidLoad { + [super viewDidLoad]; + [self themeConfig]; +} + +- (void)themeConfig { + self.view.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; + [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault; +} + +/** + 隐藏导航条 + */ +- (void)hideNavigationBar { + [self.navigationController setNavigationBarHidden:YES animated:YES]; +} + + +/** + 显示导航条 + */ +- (void)showNavigationBar { + [self.navigationController setNavigationBarHidden:NO]; +} + +/** + 显示状态栏 + */ +- (void)showStatusBar { + [UIApplication sharedApplication].statusBarHidden = NO; +} + +/** + 隐藏状态栏 + */ +- (void)hideStatusBar { + [UIApplication sharedApplication].statusBarHidden = YES; +} + +- (void)showSuccessToast:(NSString *)msg { + [XNDJTDDLoadingTool showSuccessWithMessage:msg]; +} + +- (void)showErrorToast:(NSString *)msg { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; +} + +- (void)showLoading { + [XNDJTDDLoadingTool showLoading]; +} + +- (void)hideHUD { + [XNDJTDDLoadingTool hideHUD]; +} + +/** + 显示加载个播房loading + */ +- (void)showAnchorLoading { + [XNDJTDDLoadingTool showAnchorLoading]; +} +#pragma mark - 导航栏添加操作按钮 + +/// 添加图片 +/// @param imageNames 图片的数组 +/// @param isLeft 是否在左边 +/// @param target 接受事件的 +/// @param action 点击 +/// @param tags tag +- (void)addNavigationItemWithImageNames:(NSArray *)imageNames isLeft:(BOOL)isLeft target:(id)target action:(SEL)action tags:(NSArray * _Nullable)tags { + NSMutableArray * items = [[NSMutableArray alloc] init]; + NSInteger i = 0; + for (NSString * imageName in imageNames) { + UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom]; + [btn setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal]; + btn.frame = CGRectMake(0, 0, 30, 30); + if(isLeft){ + [btn setImageEdgeInsets:UIEdgeInsetsMake(0, -10, 0, 10)]; + }else{ + [btn setImageEdgeInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; + } + [btn addTarget:target action:action forControlEvents:UIControlEventTouchUpInside]; + btn.tag = [tags[i++] integerValue]; + UIBarButtonItem * item = [[UIBarButtonItem alloc] initWithCustomView:btn]; + [items addObject:item]; + } + if (isLeft) { + self.navigationItem.leftBarButtonItems = items; + } else { + self.navigationItem.rightBarButtonItems = items; + } +} + +/// 添加文字 不可点击的时候颜色 +/// @param titles 文字的数组 +/// @param titleColor 文字的颜色 +/// @param isLeft 是否在左边 +/// @param target 目标 +/// @param action 点击 +/// @param tags tag +- (void)addNavigationItemWithTitles:(NSArray *)titles titleColor:(UIColor *)titleColor isLeft:(BOOL)isLeft target:(id)target action:(SEL)action tags:(NSArray * _Nullable)tags { + NSMutableArray * items = [[NSMutableArray alloc] init]; + //调整按钮位置 + UIBarButtonItem* spaceItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; + //将宽度设为负值 + spaceItem.width= -10; + [items addObject:spaceItem]; + if (titleColor == nil) { + titleColor = [DJDKMIMOMColor mainTextColor]; + } + NSInteger i = 0; + for (NSString * title in titles) { + UIButton * btn = [UIButton buttonWithType:UIButtonTypeSystem]; + btn.frame = CGRectMake(0, 0, 30, 20); + [btn setTitle:title forState:UIControlStateNormal]; + [btn addTarget:target action:action forControlEvents:UIControlEventTouchUpInside]; + btn.titleLabel.font = [UIFont systemFontOfSize:14]; + [btn setTitleColor:titleColor forState:UIControlStateNormal]; + btn.tag = [tags[i++] integerValue]; + [btn sizeToFit]; + UIBarButtonItem * item = [[UIBarButtonItem alloc] initWithCustomView:btn]; + [items addObject:item]; + } + if (isLeft) { + self.navigationItem.leftBarButtonItems = items; + } else { + self.navigationItem.rightBarButtonItems = items; + } +} + + +/// 自定义的View +/// @param isLeft 是否在左边 +- (void)addNavigationItemWithItems:(NSArray *)views + isLeft:(BOOL)isLeft { + NSMutableArray * items = [[NSMutableArray alloc] init]; + //调整按钮位置 + UIBarButtonItem* spaceItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; + //将宽度设为负值 + spaceItem.width= -10; + [items addObject:spaceItem]; + for (UIView * view in views) { + UIBarButtonItem * item = [[UIBarButtonItem alloc] initWithCustomView:view]; + [items addObject:item]; + } + if (isLeft) { + self.navigationItem.leftBarButtonItems = items; + } else { + self.navigationItem.rightBarButtonItems = items; + } +} + + +@end diff --git a/YuMi/Structure/MVP/Api/Api.h b/YuMi/Structure/MVP/Api/Api.h index 0ae08384..afb49a98 100644 --- a/YuMi/Structure/MVP/Api/Api.h +++ b/YuMi/Structure/MVP/Api/Api.h @@ -6,42 +6,82 @@ // #import -#import "HttpRequestFacilitater.h" +#import "HttpRequestHelper.h" NS_ASSUME_NONNULL_BEGIN @interface Api : NSObject - -+ (void)manufactureDemand:(NSString *)route method:(HttpRequestHelperMethod)method completion:(HttpRequestHelperCompletion)completion, ...; +/** + route : 接口路径 + method : http 请求方法(POST、GET等) + completion : 网络请求完成的回调 + ... : 可变参数,第一个为 __FUNCTION__ ,接下来依次为该接口的协议参数 + */ ++ (void)makeRequest:(NSString *)route method:(HttpRequestHelperMethod)method completion:(HttpRequestHelperCompletion)completion, ...; + (void)getUserInfo:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; -+ (void)acquireConsumerAbstracts:(HttpRequestHelperCompletion)completion uids:(NSString *)uids; +///获取多个用户的信息 ++ (void)getUserInfos:(HttpRequestHelperCompletion)completion uids:(NSString *)uids; -+ (void)mobileSmsCryptogram:(HttpRequestHelperCompletion)completion mobile:(NSString *)mobile type:(NSString *)type phoneAreaCode:(NSString *)phoneAreaCode; +/// 获取手机号的验证码 +/// @param completion 请求完成 +/// @param mobile 手机号 +/// @param type 类型 请看XPEunm中的枚举 ++ (void)phoneSmsCode:(HttpRequestHelperCompletion)completion mobile:(NSString *)mobile type:(NSString *)type phoneAreaCode:(NSString *)phoneAreaCode; -+ (void)examineAplictowardsionartowardsusCryptogram:(HttpRequestHelperCompletion)complection +/// 校验手机号码 +/// @param complection 完成 +/// @param mobile 手机号 +/// @param code 验证码 +/// @param uid 用户的uid +/// @param ticket ticket ++ (void)checkMoblieCode:(HttpRequestHelperCompletion)complection mobile:(NSString *)mobile code:(NSString *)code uid:(NSString *)uid ticket:(NSString *)ticket; -+ (void)accomplishConsumerAbstract:(HttpRequestHelperCompletion)complection +/// 补全用户资料 +/// @param complection 完成 +/// @param userInfo 需要更新的用户信息 ++ (void)completeUserInfo:(HttpRequestHelperCompletion)complection userInfo:(NSDictionary *)userInfo; -+ (void)acquireConsumerPocketbookAbstract:(HttpRequestHelperCompletion)complection +/// 获取用户钱包余额信息 +/// @param complection 完成 +/// @param uid 用户uid +/// @param ticket ticketg ++ (void)getUserWalletInfo:(HttpRequestHelperCompletion)complection uid:(NSString *)uid ticket:(NSString *)ticket; -+ (void)requisitionCheckSplconcludeidIdents:(HttpRequestHelperCompletion)complection +/// 批量验证 +/// @param complection 完成 +/// @param transcationIdStr 需要验证的数据 ++ (void)requestCheckTranscationIds:(HttpRequestHelperCompletion)complection transcationIdStr:(NSString *)transcationIdStr; -+ (void)miecreoscoopeBretowardshaedImplementtowardsion:(HttpRequestHelperCompletion)complection +/// 锁麦/开麦 +/// @param complection 完成 +/// @param roomUid 房主的uid +/// @param state 0 开麦 1 锁麦 +/// @param position 坑位 +/// @param ticket 用户的ticket +/// @param uid uid ++ (void)microMuteCompletion:(HttpRequestHelperCompletion)complection roomUid:(NSString *)roomUid state:(NSString *)state position:(NSString *)position ticket:(NSString *)ticket uid:(NSString *)uid; -+ (void)miecreoscoopeSpokeImplementtowardsion:(HttpRequestHelperCompletion)complection +/// 锁坑/开锁 +/// @param complection 完成 +/// @param roomUid 房主的uid +/// @param state 1锁坑位,0取消锁(即取消锁坑位) +/// @param position 坑位 +/// @param ticket 用户的ticket +/// @param uid uid ++ (void)microLockCompletion:(HttpRequestHelperCompletion)complection roomUid:(NSString *)roomUid state:(NSString *)state position:(NSString *)position diff --git a/YuMi/Structure/MVP/Api/Api.m b/YuMi/Structure/MVP/Api/Api.m index 4b1fadc9..5b8476c3 100644 --- a/YuMi/Structure/MVP/Api/Api.m +++ b/YuMi/Structure/MVP/Api/Api.m @@ -9,14 +9,14 @@ #import @implementation Api -+ (void)manufactureDemand:(NSString *)route method:(HttpRequestHelperMethod)method completion:(HttpRequestHelperCompletion)completion, ... { ++ (void)makeRequest:(NSString *)route method:(HttpRequestHelperMethod)method completion:(HttpRequestHelperCompletion)completion, ... { va_list arg_lists; va_start(arg_lists, completion); - + // 获取第一个参数 __FUNCTION__ ,然后解析出来 key 。 const char *functionName = va_arg(arg_lists, const char *); NSString *fn = [[NSString alloc] initWithUTF8String:functionName]; - + // NSLog 一下 __FUNCTION__ 就知道为什么这么截取了。 NSRange blankRange = [fn rangeOfString:@":"]; NSUInteger start = blankRange.location + 1; NSUInteger length; @@ -29,7 +29,7 @@ } NSString *fromatParamKeys = [fn substringWithRange:NSMakeRange(start, length)]; - + // 构造请求的 NSMutableDictionary *params 。 NSMutableDictionary *params = [NSMutableDictionary dictionary]; NSArray *paramKeys = [fromatParamKeys componentsSeparatedByString:@":"]; @@ -40,58 +40,92 @@ }; va_end(arg_lists); - [HttpRequestFacilitater request:route method:method params:params completion:completion]; + [HttpRequestHelper request:route method:method params:params completion:completion]; } + (void)getUserInfo:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"dXNlci9nZXQ="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil]; + NSString * fang = [NSString stringFromBase64String:@"dXNlci9nZXQ="];///user/get + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil]; } -+ (void)acquireConsumerAbstracts:(HttpRequestHelperCompletion)completion uids:(NSString *)uids { - NSString * fang = [NSString stringFromBase64String:@"dXNlci9saXN0"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uids, nil]; ++ (void)getUserInfos:(HttpRequestHelperCompletion)completion uids:(NSString *)uids { + NSString * fang = [NSString stringFromBase64String:@"dXNlci9saXN0"];///user/list + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uids, nil]; } -+ (void)mobileSmsCryptogram:(HttpRequestHelperCompletion)completion mobile:(NSString *)mobile type:(NSString *)type phoneAreaCode:(NSString *)phoneAreaCode { - NSString * fang = [NSString stringFromBase64String:@"c21zL2dldENvZGU="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, mobile, type, phoneAreaCode,nil]; +/// 获取手机号的验证码 +/// @param completion 请求完成 +/// @param mobile 手机号 +/// @param type 类型 请看XPEunm中的枚举 ++ (void)phoneSmsCode:(HttpRequestHelperCompletion)completion mobile:(NSString *)mobile type:(NSString *)type phoneAreaCode:(NSString *)phoneAreaCode { + NSString * fang = [NSString stringFromBase64String:@"c21zL2dldENvZGU="];///sms/getCode + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, mobile, type, phoneAreaCode,nil]; } -+ (void)examineAplictowardsionartowardsusCryptogram:(HttpRequestHelperCompletion)complection +/// 校验手机号码 +/// @param complection 完成 +/// @param mobile 手机号 +/// @param code 验证码 +/// @param uid 用户的uid +/// @param ticket ticket ++ (void)checkMoblieCode:(HttpRequestHelperCompletion)complection mobile:(NSString *)mobile code:(NSString *)code uid:(NSString *)uid ticket:(NSString *)ticket { - NSString * fang = [NSString stringFromBase64String:@"c21zL3ZlcmlmeQ=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, mobile, code, uid, ticket,nil]; + NSString * fang = [NSString stringFromBase64String:@"c21zL3ZlcmlmeQ=="];///sms/verify + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, mobile, code, uid, ticket,nil]; } -+ (void)accomplishConsumerAbstract:(HttpRequestHelperCompletion)complection +/// 补全用户资料 +/// @param complection 完成 +/// @param userInfo 需要更新的用户信息 ++ (void)completeUserInfo:(HttpRequestHelperCompletion)complection userInfo:(NSDictionary *)userInfo { - NSString * fang = [NSString stringFromBase64String:@"dXNlci92Mi91cGRhdGU="]; - [HttpRequestFacilitater request:fang method:HttpRequestHelperMethodPOST params:userInfo completion:complection]; + NSString * fang = [NSString stringFromBase64String:@"dXNlci92Mi91cGRhdGU="];///user/v2/update + [HttpRequestHelper request:fang method:HttpRequestHelperMethodPOST params:userInfo completion:complection]; } -+ (void)acquireConsumerPocketbookAbstract:(HttpRequestHelperCompletion)complection uid:(NSString *)uid ticket:(NSString *)ticket { - NSString * fang = [NSString stringFromBase64String:@"cHVyc2UvcXVlcnk="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, uid, ticket,nil]; +/// 获取用户钱包余额信息 +/// @param complection 完成 +/// @param uid 用户uid +/// @param ticket ticketg ++ (void)getUserWalletInfo:(HttpRequestHelperCompletion)complection uid:(NSString *)uid ticket:(NSString *)ticket { + NSString * fang = [NSString stringFromBase64String:@"cHVyc2UvcXVlcnk="];///purse/query + [self makeRequest:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, uid, ticket,nil]; } -+ (void)requisitionCheckSplconcludeidIdents:(HttpRequestHelperCompletion)complection +/// 批量验证 +/// @param complection 完成 +/// @param transcationIdStr 需要验证的数据 ++ (void)requestCheckTranscationIds:(HttpRequestHelperCompletion)complection transcationIdStr:(NSString *)transcationIdStr { - NSString * fang = [NSString stringFromBase64String:@"dmVyaWZ5L2NoZWNrSU9TQ2hhcmdlUmVjb3Jk"]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__,transcationIdStr, nil]; + NSString * fang = [NSString stringFromBase64String:@"dmVyaWZ5L2NoZWNrSU9TQ2hhcmdlUmVjb3Jk"];///verify/checkIOSChargeRecord + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__,transcationIdStr, nil]; } -+ (void)miecreoscoopeBretowardshaedImplementtowardsion:(HttpRequestHelperCompletion)complection roomUid:(NSString *)roomUid state:(NSString *)state position:(NSString *)position ticket:(NSString *)ticket uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9taWMvbG9ja21pYw=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, roomUid, state, position, ticket, uid, nil]; +/// 锁麦/开麦 +/// @param complection 完成 +/// @param roomUid 房主的uid +/// @param state 0 开麦 1 锁麦 +/// @param position 坑位 +/// @param ticket 用户的ticket +/// @param uid uid ++ (void)microMuteCompletion:(HttpRequestHelperCompletion)complection roomUid:(NSString *)roomUid state:(NSString *)state position:(NSString *)position ticket:(NSString *)ticket uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9taWMvbG9ja21pYw=="];///@"room/mic/lockmic" + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, roomUid, state, position, ticket, uid, nil]; } -+ (void)miecreoscoopeSpokeImplementtowardsion:(HttpRequestHelperCompletion)complection roomUid:(NSString *)roomUid state:(NSString *)state position:(NSString *)position ticket:(NSString *)ticket uid:(NSString *)uid { - NSString * fang = [NSString stringFromBase64String:@"cm9vbS9taWMvbG9ja3Bvcw=="]; - [self manufactureDemand:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, roomUid, state, position, ticket, uid, nil]; +/// 锁坑/开锁 +/// @param complection 完成 +/// @param roomUid 房主的uid +/// @param state 1锁坑位,0取消锁(即取消锁坑位) +/// @param position 坑位 +/// @param ticket 用户的ticket +/// @param uid uid ++ (void)microLockCompletion:(HttpRequestHelperCompletion)complection roomUid:(NSString *)roomUid state:(NSString *)state position:(NSString *)position ticket:(NSString *)ticket uid:(NSString *)uid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9taWMvbG9ja3Bvcw=="];///room/mic/lockpos + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, roomUid, state, position, ticket, uid, nil]; } @end diff --git a/YuMi/Structure/MVP/Model/AccountAbstractStorage.h b/YuMi/Structure/MVP/Model/AccountAbstractStorage.h deleted file mode 100644 index 7d57ba78..00000000 --- a/YuMi/Structure/MVP/Model/AccountAbstractStorage.h +++ /dev/null @@ -1,31 +0,0 @@ -// -// DataUtils.h -// YYFaceAuth -// -// Created by chenran on 16/10/18. -// Copyright © 2016年 zhangji. All rights reserved. -// - -#import - -@class AccountMatrix, ThirdConsumerAbstract, ResidenceCoupleMatrix; -@interface AccountAbstractStorage : NSObject -@property (nonatomic, strong, readonly) AccountMatrix *accountModel; -@property (nonatomic,assign) BOOL isRequestRicket; -@property (nonatomic,strong) ThirdConsumerAbstract *thirdUserInfo; -+ (instancetype)instance; - -- (instancetype)init NS_UNAVAILABLE; -+ (instancetype)new NS_UNAVAILABLE; -- (id)copy NS_UNAVAILABLE; -- (id)mutableCopy NS_UNAVAILABLE; - -- (AccountMatrix *)acquireUniversalSequenceriptionAbstract; -- (void)preserveSequenceriptionAbstract:(AccountMatrix *)accountInfo; -- (void)preserveTicket:(NSString *)ticket; -- (NSString *)acquireTicket; -- (NSString *)acquireCid; - -- (NSArray *)acquireUniversalCoupleSttowardsement; -- (void)preserveCoupleSttowardsement:(NSArray *)tagList; -@end diff --git a/YuMi/Structure/MVP/Model/AccountAbstractStorage.m b/YuMi/Structure/MVP/Model/AccountAbstractStorage.m deleted file mode 100644 index e8e9dfd4..00000000 --- a/YuMi/Structure/MVP/Model/AccountAbstractStorage.m +++ /dev/null @@ -1,128 +0,0 @@ -// -// DataUtils.m -// YYFaceAuth -// -// Created by chenran on 16/10/18. -// Copyright © 2016年 zhangji. All rights reserved. -// -#define kFileName @"AccountInfo.data" -#define kDataKey @"accountInfo" -#import "AccountAbstractStorage.h" -#import "AccountMatrix.h" -#import "ResidenceCoupleMatrix.h" - -#define kTagListDataKey @"homeaaNewTagModel" -#define kTagListDataName @"HomeTagNewModel.data" -@interface AccountAbstractStorage() - -@property (nonatomic, copy) NSString *ticket; -@property (nonatomic, strong) AccountMatrix *accountModel; -@property (nonatomic,strong) NSArray *tagList; -@end - -@implementation AccountAbstractStorage - -static AccountAbstractStorage *_instance = nil; - -+ (AccountAbstractStorage *)instance { - - static dispatch_once_t onceToken; - - dispatch_once(&onceToken, ^{ - _instance = [[self alloc] init]; - }) ; - - return _instance; -} - --(NSString *) acquireAccurtowardseRoute{ - NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); - NSString *path = [[array objectAtIndex:0] stringByAppendingPathComponent:kFileName]; - if (![[NSFileManager defaultManager] fileExistsAtPath:path]) { - [[NSFileManager defaultManager] createFileAtPath:path contents:nil attributes:nil]; - } - return path; -} - -- (AccountMatrix *)acquireUniversalSequenceriptionAbstract -{ - if (self.accountModel != nil) { - return self.accountModel; - } - NSData *data = [[NSData alloc] initWithContentsOfFile:[self acquireAccurtowardseRoute]]; - - NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; - - self.accountModel = [unarchiver decodeObjectForKey:kDataKey]; - [unarchiver finishDecoding]; - return self.accountModel; -} - -- (void)preserveSequenceriptionAbstract:(AccountMatrix *)accountInfo -{ - if (accountInfo == nil) { - accountInfo = [[AccountMatrix alloc] init]; - } - self.accountModel = accountInfo; - NSMutableData *data = [[NSMutableData alloc] init]; - NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; - [archiver encodeObject:accountInfo forKey:kDataKey]; - [archiver finishEncoding]; - [data writeToFile:[self acquireAccurtowardseRoute] atomically:YES]; -} - -- (void)preserveTicket:(NSString *)t -{ - self.ticket = t; -} - -- (NSString *)acquireTicket -{ - if (self.ticket == nil) { - return @""; - } - return self.ticket; -} - -- (NSString *)acquireCid -{ - AccountMatrix *am = [self acquireUniversalSequenceriptionAbstract]; - if (am == nil) { - return @""; - } - return am.uid; -} - -- (NSArray *)acquireUniversalCoupleSttowardsement{ - if (self.tagList != nil) { - return self.tagList; - } - NSData *data = [[NSData alloc] initWithContentsOfFile:[self acquireCoupleSttowardsementAccurtowardseRoute]]; - - NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; - - self.tagList = [unarchiver decodeObjectForKey:kTagListDataKey]; - [unarchiver finishDecoding]; - return self.tagList != nil ? self.tagList : @[]; -} -- (void)preserveCoupleSttowardsement:(NSArray *)tagList{ - if(tagList == nil){ - tagList = @[]; - } - self.tagList = tagList; - NSMutableData *data = [[NSMutableData alloc] init]; - NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; - [archiver encodeObject:tagList forKey:kTagListDataKey]; - [archiver finishEncoding]; - [data writeToFile:[self acquireCoupleSttowardsementAccurtowardseRoute] atomically:YES]; -} - --(NSString *) acquireCoupleSttowardsementAccurtowardseRoute{ - NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); - NSString *path = [[array objectAtIndex:0] stringByAppendingPathComponent:kTagListDataName]; - if (![[NSFileManager defaultManager] fileExistsAtPath:path]) { - [[NSFileManager defaultManager] createFileAtPath:path contents:nil attributes:nil]; - } - return path; -} -@end diff --git a/YuMi/Structure/MVP/Model/AccountInfoStorage.h b/YuMi/Structure/MVP/Model/AccountInfoStorage.h new file mode 100644 index 00000000..265e4976 --- /dev/null +++ b/YuMi/Structure/MVP/Model/AccountInfoStorage.h @@ -0,0 +1,34 @@ +// +// DataUtils.h +// YYFaceAuth +// +// Created by chenran on 16/10/18. +// Copyright © 2016年 zhangji. All rights reserved. +// + +#import + +@class AccountModel, ThirdUserInfo, HomeTagModel; +@interface AccountInfoStorage : NSObject +@property (nonatomic, strong, readonly) AccountModel *accountModel; +///判断是否正在请求ticket,yes的话,不能用ticket请求数据,不然会出现401,要重新登录 +@property (nonatomic,assign) BOOL isRequestRicket; +///如果是第三方登录的话 保存一下用户信息 +@property (nonatomic,strong) ThirdUserInfo *thirdUserInfo; ++ (instancetype)instance; + +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; +- (id)copy NS_UNAVAILABLE; +- (id)mutableCopy NS_UNAVAILABLE; + +- (AccountModel *)getCurrentAccountInfo; +- (void)saveAccountInfo:(AccountModel *)accountInfo; +- (void)saveTicket:(NSString *)ticket; +- (NSString *)getTicket; +- (NSString *)getUid; + +///首页的tag列表,增加缓存,加快加载速度的优化 +- (NSArray *)getCurrentTagList; +- (void)saveTagList:(NSArray *)tagList; +@end diff --git a/YuMi/Structure/MVP/Model/AccountInfoStorage.m b/YuMi/Structure/MVP/Model/AccountInfoStorage.m new file mode 100644 index 00000000..3c3169b5 --- /dev/null +++ b/YuMi/Structure/MVP/Model/AccountInfoStorage.m @@ -0,0 +1,128 @@ +// +// DataUtils.m +// YYFaceAuth +// +// Created by chenran on 16/10/18. +// Copyright © 2016年 zhangji. All rights reserved. +// +#define kFileName @"AccountInfo.data" +#define kDataKey @"accountInfo" +#import "AccountInfoStorage.h" +#import "AccountModel.h" +#import "HomeTagModel.h" + +#define kTagListDataKey @"homeaaNewTagModel" +#define kTagListDataName @"HomeTagNewModel.data" +@interface AccountInfoStorage() + +@property (nonatomic, copy) NSString *ticket; +@property (nonatomic, strong) AccountModel *accountModel; +@property (nonatomic,strong) NSArray *tagList; +@end + +@implementation AccountInfoStorage + +static AccountInfoStorage *_instance = nil; + ++ (AccountInfoStorage *)instance { + + static dispatch_once_t onceToken; + + dispatch_once(&onceToken, ^{ + _instance = [[self alloc] init]; + }) ; + + return _instance; +} + +-(NSString *) getFilePath{ + NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + NSString *path = [[array objectAtIndex:0] stringByAppendingPathComponent:kFileName]; + if (![[NSFileManager defaultManager] fileExistsAtPath:path]) { + [[NSFileManager defaultManager] createFileAtPath:path contents:nil attributes:nil]; + } + return path; +} + +- (AccountModel *)getCurrentAccountInfo +{ + if (self.accountModel != nil) { + return self.accountModel; + } + NSData *data = [[NSData alloc] initWithContentsOfFile:[self getFilePath]]; + + NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; + //解档出数据模型 + self.accountModel = [unarchiver decodeObjectForKey:kDataKey]; + [unarchiver finishDecoding];//一定不要忘记finishDecoding,否则会报错 + return self.accountModel; +} + +- (void)saveAccountInfo:(AccountModel *)accountInfo +{ + if (accountInfo == nil) { + accountInfo = [[AccountModel alloc] init]; + } + self.accountModel = accountInfo; + NSMutableData *data = [[NSMutableData alloc] init]; + NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; + [archiver encodeObject:accountInfo forKey:kDataKey]; + [archiver finishEncoding]; + [data writeToFile:[self getFilePath] atomically:YES]; +} + +- (void)saveTicket:(NSString *)t +{ + self.ticket = t; +} + +- (NSString *)getTicket +{ + if (self.ticket == nil) { + return @""; + } + return self.ticket; +} + +- (NSString *)getUid +{ + AccountModel *am = [self getCurrentAccountInfo]; + if (am == nil) { + return @""; + } + return am.uid; +} + +- (NSArray *)getCurrentTagList{ + if (self.tagList != nil) { + return self.tagList; + } + NSData *data = [[NSData alloc] initWithContentsOfFile:[self getTagListFilePath]]; + + NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; + //解档出数据模型 + self.tagList = [unarchiver decodeObjectForKey:kTagListDataKey]; + [unarchiver finishDecoding];//一定不要忘记finishDecoding,否则会报错 + return self.tagList != nil ? self.tagList : @[]; +} +- (void)saveTagList:(NSArray *)tagList{ + if(tagList == nil){ + tagList = @[]; + } + self.tagList = tagList; + NSMutableData *data = [[NSMutableData alloc] init]; + NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; + [archiver encodeObject:tagList forKey:kTagListDataKey]; + [archiver finishEncoding]; + [data writeToFile:[self getTagListFilePath] atomically:YES]; +} + +-(NSString *) getTagListFilePath{ + NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + NSString *path = [[array objectAtIndex:0] stringByAppendingPathComponent:kTagListDataName]; + if (![[NSFileManager defaultManager] fileExistsAtPath:path]) { + [[NSFileManager defaultManager] createFileAtPath:path contents:nil attributes:nil]; + } + return path; +} +@end diff --git a/YuMi/Structure/MVP/Model/AccountMatrix.h b/YuMi/Structure/MVP/Model/AccountMatrix.h deleted file mode 100644 index a29757f4..00000000 --- a/YuMi/Structure/MVP/Model/AccountMatrix.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// TokenModel.h -// YUMI -// -// Created by zu on 2021/9/8. -// - -#import "NSObject+MJExtension.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface AccountMatrix : NSObject - -@property (nonatomic , assign) NSString *uid; -@property (nonatomic , copy) NSString *jti; -@property (nonatomic , copy) NSString *token_type; -@property (nonatomic , copy) NSString *refresh_token; -@property (nonatomic , copy) NSString *netEaseToken; -@property (nonatomic , copy) NSString *access_token; -@property (nonatomic , assign) NSNumber *expires_in; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/MVP/Model/AccountMatrix.m b/YuMi/Structure/MVP/Model/AccountMatrix.m deleted file mode 100644 index 57b328c3..00000000 --- a/YuMi/Structure/MVP/Model/AccountMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// TokenModel.m -// YUMI -// -// Created by zu on 2021/9/8. -// - -#import "AccountMatrix.h" - -@implementation AccountMatrix - -@end diff --git a/YuMi/Structure/MVP/Model/AccountModel.h b/YuMi/Structure/MVP/Model/AccountModel.h new file mode 100644 index 00000000..7554dc34 --- /dev/null +++ b/YuMi/Structure/MVP/Model/AccountModel.h @@ -0,0 +1,24 @@ +// +// TokenModel.h +// YUMI +// +// Created by zu on 2021/9/8. +// + +#import "NSObject+MJExtension.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface AccountModel : NSObject + +@property (nonatomic , assign) NSString *uid; +@property (nonatomic , copy) NSString *jti; +@property (nonatomic , copy) NSString *token_type; +@property (nonatomic , copy) NSString *refresh_token; +@property (nonatomic , copy) NSString *netEaseToken; +@property (nonatomic , copy) NSString *access_token; +@property (nonatomic , assign) NSNumber *expires_in; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/MVP/Model/AccountModel.m b/YuMi/Structure/MVP/Model/AccountModel.m new file mode 100644 index 00000000..7ec4be4c --- /dev/null +++ b/YuMi/Structure/MVP/Model/AccountModel.m @@ -0,0 +1,12 @@ +// +// TokenModel.m +// YUMI +// +// Created by zu on 2021/9/8. +// + +#import "AccountModel.h" + +@implementation AccountModel + +@end diff --git a/YuMi/Structure/MVP/Model/BaseMatrix.h b/YuMi/Structure/MVP/Model/BaseMatrix.h deleted file mode 100644 index 7fa886ab..00000000 --- a/YuMi/Structure/MVP/Model/BaseMatrix.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// BaseMatrix.h -// YUMI -// -// Created by zu on 2021/9/8. -// - -#import "NSObject+MJExtension.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface BaseMatrix : NSObject - -@property (nonatomic , strong) id data; -@property (nonatomic , assign) NSInteger code; -@property (nonatomic , copy) NSString *message; -@property (nonatomic,assign) long long cancelDate; -@property (nonatomic,copy) NSString * date; -@property (nonatomic,copy) NSString *reason; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/MVP/Model/BaseMatrix.m b/YuMi/Structure/MVP/Model/BaseMatrix.m deleted file mode 100644 index 0bcddfc7..00000000 --- a/YuMi/Structure/MVP/Model/BaseMatrix.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// BaseMatrix.m -// YUMI -// -// Created by zu on 2021/9/8. -// - -#import "BaseMatrix.h" - -@implementation BaseMatrix - -@end diff --git a/YuMi/Structure/MVP/Model/BaseModel.h b/YuMi/Structure/MVP/Model/BaseModel.h new file mode 100644 index 00000000..f8523a85 --- /dev/null +++ b/YuMi/Structure/MVP/Model/BaseModel.h @@ -0,0 +1,26 @@ +// +// BaseModel.h +// YUMI +// +// Created by zu on 2021/9/8. +// + +#import "NSObject+MJExtension.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface BaseModel : NSObject + +@property (nonatomic , strong) id data; +@property (nonatomic , assign) NSInteger code; +@property (nonatomic , copy) NSString *message; +///注销的时间戳 因为后端返回的内容和code在同一层级 安卓已经发出去了 兼容就写在这里吧 请不要模仿 +@property (nonatomic,assign) long long cancelDate; +///账号封禁返回的code +///时间 +@property (nonatomic,copy) NSString * date; +///封禁的理由 +@property (nonatomic,copy) NSString *reason; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/MVP/Model/BaseModel.m b/YuMi/Structure/MVP/Model/BaseModel.m new file mode 100644 index 00000000..f532d96a --- /dev/null +++ b/YuMi/Structure/MVP/Model/BaseModel.m @@ -0,0 +1,12 @@ +// +// BaseModel.m +// YUMI +// +// Created by zu on 2021/9/8. +// + +#import "BaseModel.h" + +@implementation BaseModel + +@end diff --git a/YuMi/Structure/MVP/Model/ConsumerAbstractCommunicationVo.h b/YuMi/Structure/MVP/Model/ConsumerAbstractCommunicationVo.h deleted file mode 100644 index f261a7ac..00000000 --- a/YuMi/Structure/MVP/Model/ConsumerAbstractCommunicationVo.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// ConsumerAbstractCommunicationVo.h -// YUMI -// -// Created by zu on 2021/9/14. -// - -#import "NSObject+MJExtension.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface ConsumerAbstractCommunicationVo : NSObject -@property (nonatomic , assign) BOOL liveTag; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/MVP/Model/ConsumerAbstractCommunicationVo.m b/YuMi/Structure/MVP/Model/ConsumerAbstractCommunicationVo.m deleted file mode 100644 index a22e506f..00000000 --- a/YuMi/Structure/MVP/Model/ConsumerAbstractCommunicationVo.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ConsumerAbstractCommunicationVo.m -// YUMI -// -// Created by zu on 2021/9/14. -// - -#import "ConsumerAbstractCommunicationVo.h" - -@implementation ConsumerAbstractCommunicationVo - -@end diff --git a/YuMi/Structure/MVP/Model/ConsumerAbstractMatrix.h b/YuMi/Structure/MVP/Model/ConsumerAbstractMatrix.h deleted file mode 100644 index 9222240a..00000000 --- a/YuMi/Structure/MVP/Model/ConsumerAbstractMatrix.h +++ /dev/null @@ -1,101 +0,0 @@ -// -// ConsumerAbstractMatrix.h -// YUMI -// -// Created by zu on 2021/9/14. -// - -#import "NSObject+MJExtension.h" -#import "ConsumerExpand.h" -#import "ConsumerPrototypeVo.h" -#import "ConsumerAbstractCommunicationVo.h" -#import "ConsumerVipAbstractVo.h" -#import "ConsumerAppearance.h" -#import "ConsumerPresentRamparatAbstractMatrix.h" -#import "YUMINNNN.h" -#import "SeparationsAbstractMatrix.h" -NS_ASSUME_NONNULL_BEGIN - - -@interface ConsumerAbstractMatrix : NSObject -@property (nonatomic , assign) NSInteger bindType; -@property (nonatomic , assign) NSInteger createTime; -@property (nonatomic , assign) BOOL parentMode; -@property (nonatomic , assign) BOOL isBindPhone; -@property (nonatomic , strong) ConsumerExpand * userExpand; -@property (nonatomic , assign) NSInteger erbanNo; -@property (nonatomic , assign) NSInteger registerDay; -@property (nonatomic , assign) BOOL isFirstCharge; -@property (nonatomic , assign) BOOL hasPrettyErbanNo; -@property (nonatomic , strong) ConsumerPrototypeVo * userLevelVo; -@property (nonatomic , assign) BOOL isBindApple; -@property (nonatomic , assign) NSInteger fansNum; -@property (nonatomic , assign) BOOL isBindBankCard; -@property (nonatomic , assign) BOOL hasRegPacket; -@property (nonatomic , assign) GenderGenre gender; -@property (nonatomic , assign) NSInteger platformRole; -@property (nonatomic , assign) NSInteger uid; -@property (nonatomic , assign) NSInteger defUser; -@property (nonatomic , copy) NSString * phone; -@property (nonatomic , copy) NSString * nick; -@property (nonatomic , assign) NSInteger remainDay; -@property (nonatomic , copy) NSString * avatar; -@property (nonatomic , copy) NSString * reviewingAvatar; -@property (nonatomic , assign) BOOL isReview; -@property (nonatomic , strong) ConsumerAbstractCommunicationVo * userInfoSkillVo; -@property (nonatomic , assign) BOOL newUser; -@property (nonatomic , assign) NSInteger followNum; -@property (nonatomic , assign) BOOL isBindPaymentPwd; -@property (nonatomic , assign) BOOL isBindXCZAccount; -@property (nonatomic , assign) BOOL isBindAlipay; -@property (nonatomic , assign) BOOL isBindPasswd; -@property (nonatomic, assign) NSInteger visitNum; -@property (nonatomic, assign) NSInteger inRoomNum; -@property (nonatomic, assign) BOOL showLimitCharge; -@property (nonatomic, assign) long limitChargeEndTime; -@property (nonatomic, strong) NSArray *privatePhoto; -@property (nonatomic,copy) NSString *userDesc; -@property (nonatomic,assign) long birth; -@property (nonatomic,assign) BOOL isCertified; -@property (nonatomic, copy) NSString *nameplatePic; -@property (nonatomic, copy) NSString *nameplateWord; -@property(nonatomic, copy) NSString * roomUid; -@property (nonatomic, copy) NSString *roomTitle; -@property (nonatomic,copy) NSString *carEffect; -@property (nonatomic, assign) NSInteger otherViewType; -@property (nonatomic, copy) NSString *viewUrl; -@property (nonatomic,copy) NSString *carName; -@property (nonatomic,copy) NSString *headwearEffect; -@property (nonatomic,copy) NSString *headwearPic; -@property (nonatomic,copy) NSString *headWearUrl; -#pragma mark - 相亲房的字段 -@property (nonatomic,assign) BOOL vipMic; -@property (nonatomic,copy) NSString *capUrl; -@property (nonatomic,assign) BOOL hasSelectUser; -@property (nonatomic,assign) int selectMicPosition; -@property (nonatomic, strong) ConsumerVipAbstractVo *userVipInfoVO; -@property (nonatomic, copy) NSString *userInfoCardPic; -@property (nonatomic, copy) NSString *micCircle; -@property (nonatomic, copy) NSString *micNickColor; - -@property (nonatomic, strong) NSArray *absCardPics; - -@property (nonatomic,copy) NSString *fromNick; -@property (nonatomic,assign) ConsumerEnterChamberFromGenre fromType; -@property (nonatomic,copy) NSString *fromUid; -@property (nonatomic, copy) NSString *androidBubbleUrl; -@property (nonatomic, copy) NSString *iosBubbleUrl; -#pragma mark - 小游戏 -@property (nonatomic, assign) LittleGameDisportPosition gameStatus; -@property (nonatomic, assign) GroupGenre groupType; -@property (nonatomic,strong) NSArray *userGiftWall; -@property (nonatomic,strong) NSArray *userLuckyBagGiftWall; -@property (nonatomic, assign) BOOL preventKick; -@property (nonatomic,assign) BOOL fromSayHelloChannel; -@property (nonatomic,assign) BOOL banAccount; -@property (nonatomic,strong) NSArray *dynamicInfo; -@property (nonatomic,strong) NSMutableAttributedString *levelAtt; -@property (nonatomic,strong) NSMutableAttributedString *idAtt; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/MVP/Model/ConsumerAbstractMatrix.m b/YuMi/Structure/MVP/Model/ConsumerAbstractMatrix.m deleted file mode 100644 index 2e841dc9..00000000 --- a/YuMi/Structure/MVP/Model/ConsumerAbstractMatrix.m +++ /dev/null @@ -1,32 +0,0 @@ -// -// ConsumerAbstractMatrix.m -// YUMI -// -// Created by zu on 2021/9/14. -// - -#import "ConsumerAbstractMatrix.h" - -@implementation ConsumerAbstractMatrix - -+ (NSDictionary *)objectCtowardsegorizeInGarment { - return @{ - @"privatePhoto":ConsumerAppearance.class, - @"userGiftWall":ConsumerPresentRamparatAbstractMatrix.class, - @"userLuckyBagGiftWall":ConsumerPresentRamparatAbstractMatrix.class, - @"dynamicInfo":SeparationsAbstractMatrix.class - }; -} - -+ (NSDictionary *)replacedDigitalByvirtueofMaintainertyConstitute { - return @{@"carEffect": @"carport.effect", - @"viewUrl": @"carport.viewUrl", - @"otherViewType": @"carport.otherViewType", - @"headwearEffect" : @"userHeadwear.effect", - @"headwearPic" : @"userHeadwear.pic", - @"carName": @"carport.name", - @"reviewingAvatar" : @"newAvatar" - }; -} - -@end diff --git a/YuMi/Structure/MVP/Model/ConsumerAppearance.h b/YuMi/Structure/MVP/Model/ConsumerAppearance.h deleted file mode 100644 index 868c464f..00000000 --- a/YuMi/Structure/MVP/Model/ConsumerAppearance.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// ConsumerAppearance.h -// YUMI -// -// Created by YUMI on 2021/9/23. -// - -#import "NSObject+MJExtension.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface ConsumerAppearance : NSObject -@property (copy, nonatomic) NSString *photoUrl; -@property (copy, nonatomic) NSString *pid; -@property (nonatomic, assign) BOOL isReview; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/MVP/Model/ConsumerAppearance.m b/YuMi/Structure/MVP/Model/ConsumerAppearance.m deleted file mode 100644 index f7bd2c4e..00000000 --- a/YuMi/Structure/MVP/Model/ConsumerAppearance.m +++ /dev/null @@ -1,13 +0,0 @@ -// -// ConsumerAppearance.m -// YUMI -// -// Created by YUMI on 2021/9/23. -// - -#import "ConsumerAppearance.h" - -@implementation ConsumerAppearance - - -@end diff --git a/YuMi/Structure/MVP/Model/ConsumerExpand.h b/YuMi/Structure/MVP/Model/ConsumerExpand.h deleted file mode 100644 index 6cebbe6a..00000000 --- a/YuMi/Structure/MVP/Model/ConsumerExpand.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// ConsumerExpand.h -// YUMI -// -// Created by zu on 2021/9/14. -// - -#import "NSObject+MJExtension.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface ConsumerExpand : NSObject -@property (nonatomic , assign) NSInteger id; -@property (nonatomic , assign) BOOL showLocation; -@property (nonatomic , assign) NSInteger uid; -@property (nonatomic , assign) BOOL showAge; -@property (nonatomic , assign) BOOL matchChat; -@property (nonatomic , assign) BOOL sysMsgNotify; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/MVP/Model/ConsumerExpand.m b/YuMi/Structure/MVP/Model/ConsumerExpand.m deleted file mode 100644 index 392eceae..00000000 --- a/YuMi/Structure/MVP/Model/ConsumerExpand.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ConsumerExpand.m -// YUMI -// -// Created by zu on 2021/9/14. -// - -#import "ConsumerExpand.h" - -@implementation ConsumerExpand - -@end diff --git a/YuMi/Structure/MVP/Model/ConsumerPrototypeVo.h b/YuMi/Structure/MVP/Model/ConsumerPrototypeVo.h deleted file mode 100644 index 0f2833f0..00000000 --- a/YuMi/Structure/MVP/Model/ConsumerPrototypeVo.h +++ /dev/null @@ -1,31 +0,0 @@ -// -// ConsumerPrototypeVo.h -// YUMI -// -// Created by zu on 2021/9/14. -// - -#import "NSObject+MJExtension.h" - -NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSInteger, ConsumerPrototypeGenre) { - ConsumerPrototypeGenre_Common = 1, - ConsumerPrototypeGenre_Offical = 2, - ConsumerPrototypeGenre_Robot = 3, -}; - -@interface ConsumerPrototypeVo : NSObject -@property (nonatomic , copy) NSString * experUrl; -@property (nonatomic , assign) NSInteger charmLevelSeq; -@property (nonatomic , copy) NSString * experLevelName; -@property (nonatomic , copy) NSString * charmLevelName; -@property (nonatomic , assign) NSInteger charmAmount; -@property (nonatomic , copy) NSString * experLevelGrp; -@property (nonatomic , copy) NSString * charmUrl; -@property (nonatomic , assign) NSInteger experLevelSeq; -@property (nonatomic , assign) NSInteger experAmount; -@property (nonatomic , copy) NSString * charmLevelGrp; -@property(nonatomic, assign) ConsumerPrototypeGenre defUser; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/MVP/Model/ConsumerPrototypeVo.m b/YuMi/Structure/MVP/Model/ConsumerPrototypeVo.m deleted file mode 100644 index df18dd32..00000000 --- a/YuMi/Structure/MVP/Model/ConsumerPrototypeVo.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ConsumerPrototypeVo.m -// YUMI -// -// Created by zu on 2021/9/14. -// - -#import "ConsumerPrototypeVo.h" - -@implementation ConsumerPrototypeVo - -@end diff --git a/YuMi/Structure/MVP/Model/ConsumerVipAbstractVo.h b/YuMi/Structure/MVP/Model/ConsumerVipAbstractVo.h deleted file mode 100644 index 412bad2b..00000000 --- a/YuMi/Structure/MVP/Model/ConsumerVipAbstractVo.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// ConsumerVipAbstractVo.h -// YUMI -// -// Created by YUMI on 2022/1/4. -// 贵族信息 - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface ConsumerVipAbstractVo : NSObject - -@property (nonatomic, copy) NSString *vipIcon; -@property (nonatomic, assign) NSInteger vipLevel; -@property (nonatomic, copy) NSString *friendNickColour; -@property (nonatomic, assign) BOOL preventKick; -@property (nonatomic, assign) BOOL enterHide; -@property (nonatomic, copy) NSString *enterRoomEffects; -@property (nonatomic, copy) NSString *vipName; -@property (nonatomic,assign) BOOL lookHomepageHide; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/MVP/Model/ConsumerVipAbstractVo.m b/YuMi/Structure/MVP/Model/ConsumerVipAbstractVo.m deleted file mode 100644 index d4b7b74d..00000000 --- a/YuMi/Structure/MVP/Model/ConsumerVipAbstractVo.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// ConsumerVipAbstractVo.m -// YUMI -// -// Created by YUMI on 2022/1/4. -// - -#import "ConsumerVipAbstractVo.h" - -@implementation ConsumerVipAbstractVo - -@end diff --git a/YuMi/Structure/MVP/Model/NSObject+AutoCoding.h b/YuMi/Structure/MVP/Model/NSObject+AutoCoding.h index 94f27060..76b615f7 100644 --- a/YuMi/Structure/MVP/Model/NSObject+AutoCoding.h +++ b/YuMi/Structure/MVP/Model/NSObject+AutoCoding.h @@ -1,22 +1,25 @@ -// -// NSObject+AutoCoding.h -// YYMobileFramework -// -// Created by wuwei on 14/6/13. -// Copyright (c) 2014年 YY Inc. All rights reserved. -// - -#import - -@interface NSObject (AutoCoding) - -+ (NSDictionary *)codableMaintainerties; -- (void)setAboutCryptogramr:(NSCoder *)aDecoder; - -- (NSDictionary *)codableMaintainerties; -- (NSDictionary *)dictionaryRepresentation; - -+ (instancetype)objectAboutStowardsisfperformancesHLOfAccurtowardse:(NSString *)path; -- (BOOL)writeToFile:(NSString *)filePath atomically:(BOOL)useAuxiliaryFile; - +// +// NSObject+AutoCoding.h +// YYMobileFramework +// +// Created by wuwei on 14/6/13. +// Copyright (c) 2014年 YY Inc. All rights reserved. +// + +#import + +@interface NSObject (AutoCoding) + +// Coding ++ (NSDictionary *)codableProperties; +- (void)setWithCoder:(NSCoder *)aDecoder; + +// Properties access +- (NSDictionary *)codableProperties; +- (NSDictionary *)dictionaryRepresentation; + +// Loading / Saving ++ (instancetype)objectWithContentsOfFile:(NSString *)path; +- (BOOL)writeToFile:(NSString *)filePath atomically:(BOOL)useAuxiliaryFile; + @end \ No newline at end of file diff --git a/YuMi/Structure/MVP/Model/NSObject+AutoCoding.m b/YuMi/Structure/MVP/Model/NSObject+AutoCoding.m index 0011c95b..6045f37c 100644 --- a/YuMi/Structure/MVP/Model/NSObject+AutoCoding.m +++ b/YuMi/Structure/MVP/Model/NSObject+AutoCoding.m @@ -20,22 +20,22 @@ static NSString *const AutocodingException = @"AutocodingException"; return YES; } -+ (instancetype)objectAboutStowardsisfperformancesHLOfAccurtowardse:(NSString *)filePath ++ (instancetype)objectWithContentsOfFile:(NSString *)filePath { - + //load the file NSData *data = [NSData dataWithContentsOfFile:filePath]; - + //attempt to deserialise data as a plist id object = nil; if (data) { NSPropertyListFormat format; object = [NSPropertyListSerialization propertyListWithData:data options:NSPropertyListImmutable format:&format error:NULL]; - + //success? if (object) { - + //check if object is an NSCoded unarchive if ([object respondsToSelector:@selector(objectForKey:)] && [(NSDictionary *)object objectForKey:@"$archiver"]) { object = [NSKeyedUnarchiver unarchiveObjectWithData:data]; @@ -43,40 +43,40 @@ static NSString *const AutocodingException = @"AutocodingException"; } else { - + //return raw data object = data; } } - + //return object return object; } - (BOOL)writeToFile:(NSString *)filePath atomically:(BOOL)useAuxiliaryFile { + //note: NSData, NSDictionary and NSArray already implement this method + //and do not save using NSCoding, however the objectWithContentsOfFile + //method will correctly recover these objects anyway - - - - + //archive object NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self]; return [data writeToFile:filePath atomically:useAuxiliaryFile]; } -+ (NSDictionary *)codableMaintainerties ++ (NSDictionary *)codableProperties { unsigned int propertyCount; - __autoreleasing NSMutableDictionary *codableMaintainerties = [NSMutableDictionary dictionary]; + __autoreleasing NSMutableDictionary *codableProperties = [NSMutableDictionary dictionary]; objc_property_t *properties = class_copyPropertyList(self, &propertyCount); for (unsigned int i = 0; i < propertyCount; i++) { - + //get property name objc_property_t property = properties[i]; const char *propertyName = property_getName(property); __autoreleasing NSString *key = @(propertyName); - - + //check if codable + //get property type Class propertyClass = nil; char *typeEncoding = property_copyAttributeValue(property, "T"); switch (typeEncoding[0]) @@ -126,28 +126,28 @@ static NSString *const AutocodingException = @"AutocodingException"; if (propertyClass && [propertyClass conformsToProtocol:@protocol(NSSecureCoding)]) { - + //check if there is a backing ivar char *ivar = property_copyAttributeValue(property, "V"); if (ivar) { - + //check if ivar has KVC-compliant name __autoreleasing NSString *ivarName = @(ivar); if ([ivarName isEqualToString:key] || [ivarName isEqualToString:[@"_" stringByAppendingString:key]]) { - - codableMaintainerties[key] = propertyClass; + //no setter, but setValue:forKey: will still work + codableProperties[key] = propertyClass; } free(ivar); } else { - + //check if property is dynamic and readwrite char *dynamic = property_copyAttributeValue(property, "D"); char *readonly = property_copyAttributeValue(property, "R"); if (dynamic && !readonly) { - - codableMaintainerties[key] = propertyClass; + //no ivar, but setValue:forKey: will still work + codableProperties[key] = propertyClass; } free(dynamic); free(readonly); @@ -156,33 +156,33 @@ static NSString *const AutocodingException = @"AutocodingException"; } free(properties); - return codableMaintainerties; + return codableProperties; } -- (NSDictionary *)codableMaintainerties +- (NSDictionary *)codableProperties { - __autoreleasing NSDictionary *codableMaintainerties = objc_getAssociatedObject([self class], _cmd); - if (!codableMaintainerties) + __autoreleasing NSDictionary *codableProperties = objc_getAssociatedObject([self class], _cmd); + if (!codableProperties) { - codableMaintainerties = [NSMutableDictionary dictionary]; + codableProperties = [NSMutableDictionary dictionary]; Class subclass = [self class]; while (subclass != [NSObject class]) { - [(NSMutableDictionary *)codableMaintainerties addEntriesFromDictionary:[subclass codableMaintainerties]]; + [(NSMutableDictionary *)codableProperties addEntriesFromDictionary:[subclass codableProperties]]; subclass = [subclass superclass]; } - codableMaintainerties = [NSDictionary dictionaryWithDictionary:codableMaintainerties]; + codableProperties = [NSDictionary dictionaryWithDictionary:codableProperties]; - - objc_setAssociatedObject([self class], _cmd, codableMaintainerties, OBJC_ASSOCIATION_RETAIN); + //make the association atomically so that we don't need to bother with an @synchronize + objc_setAssociatedObject([self class], _cmd, codableProperties, OBJC_ASSOCIATION_RETAIN); } - return codableMaintainerties; + return codableProperties; } - (NSDictionary *)dictionaryRepresentation { NSMutableDictionary *dict = [NSMutableDictionary dictionary]; - for (__unsafe_unretained NSString *key in [self codableMaintainerties]) + for (__unsafe_unretained NSString *key in [self codableProperties]) { id value = [self valueForKey:key]; if (value) @@ -193,11 +193,11 @@ static NSString *const AutocodingException = @"AutocodingException"; return dict; } -- (void)setAboutCryptogramr:(NSCoder *)aDecoder +- (void)setWithCoder:(NSCoder *)aDecoder { BOOL secureAvailable = [aDecoder respondsToSelector:@selector(decodeObjectOfClass:forKey:)]; BOOL secureSupported = [[self class] supportsSecureCoding]; - NSDictionary *properties = [self codableMaintainerties]; + NSDictionary *properties = [self codableProperties]; for (NSString *key in properties) { id object = nil; @@ -229,13 +229,13 @@ static NSString *const AutocodingException = @"AutocodingException"; - (instancetype)initWithCoder:(NSCoder *)aDecoder { - [self setAboutCryptogramr:aDecoder]; + [self setWithCoder:aDecoder]; return self; } - (void)encodeWithCoder:(NSCoder *)aCoder { - for (NSString *key in [self codableMaintainerties]) + for (NSString *key in [self codableProperties]) { id object = [self valueForKey:key]; if (object) [aCoder encodeObject:object forKey:key]; diff --git a/YuMi/Structure/MVP/Model/UserExpand.h b/YuMi/Structure/MVP/Model/UserExpand.h new file mode 100644 index 00000000..99545471 --- /dev/null +++ b/YuMi/Structure/MVP/Model/UserExpand.h @@ -0,0 +1,21 @@ +// +// UserExpand.h +// YUMI +// +// Created by zu on 2021/9/14. +// + +#import "NSObject+MJExtension.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface UserExpand : NSObject +@property (nonatomic , assign) NSInteger id; +@property (nonatomic , assign) BOOL showLocation; +@property (nonatomic , assign) NSInteger uid; +@property (nonatomic , assign) BOOL showAge; +@property (nonatomic , assign) BOOL matchChat; +@property (nonatomic , assign) BOOL sysMsgNotify; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/MVP/Model/UserExpand.m b/YuMi/Structure/MVP/Model/UserExpand.m new file mode 100644 index 00000000..9f0a03c6 --- /dev/null +++ b/YuMi/Structure/MVP/Model/UserExpand.m @@ -0,0 +1,12 @@ +// +// UserExpand.m +// YUMI +// +// Created by zu on 2021/9/14. +// + +#import "UserExpand.h" + +@implementation UserExpand + +@end diff --git a/YuMi/Structure/MVP/Model/UserInfoModel.h b/YuMi/Structure/MVP/Model/UserInfoModel.h new file mode 100644 index 00000000..64c76ff4 --- /dev/null +++ b/YuMi/Structure/MVP/Model/UserInfoModel.h @@ -0,0 +1,139 @@ +// +// UserInfoModel.h +// YUMI +// +// Created by zu on 2021/9/14. +// + +#import "NSObject+MJExtension.h" +#import "UserExpand.h" +#import "UserLevelVo.h" +#import "UserInfoSkillVo.h" +#import "UserVipInfoVo.h" +#import "UserPhoto.h" +#import "UserGiftWallInfoModel.h" +#import "YUMINNNN.h" +#import "MonentsInfoModel.h" +NS_ASSUME_NONNULL_BEGIN + + +@interface UserInfoModel : NSObject +@property (nonatomic , assign) NSInteger bindType; +@property (nonatomic , assign) NSInteger createTime; +@property (nonatomic , assign) BOOL parentMode; +@property (nonatomic , assign) BOOL isBindPhone; +@property (nonatomic , strong) UserExpand * userExpand; +@property (nonatomic , assign) NSInteger erbanNo; +@property (nonatomic , assign) NSInteger registerDay; +@property (nonatomic , assign) BOOL isFirstCharge; +@property (nonatomic , assign) BOOL hasPrettyErbanNo; +@property (nonatomic , strong) UserLevelVo * userLevelVo; +@property (nonatomic , assign) BOOL isBindApple; +@property (nonatomic , assign) NSInteger fansNum; +@property (nonatomic , assign) BOOL isBindBankCard; +@property (nonatomic , assign) BOOL hasRegPacket; +@property (nonatomic , assign) GenderType gender; +@property (nonatomic , assign) NSInteger platformRole; +@property (nonatomic , assign) NSInteger uid; +@property (nonatomic , assign) NSInteger defUser; +@property (nonatomic , copy) NSString * phone; +@property (nonatomic , copy) NSString * nick; +@property (nonatomic , assign) NSInteger remainDay; +@property (nonatomic , copy) NSString * avatar; +@property (nonatomic , copy) NSString * reviewingAvatar; +@property (nonatomic , assign) BOOL isReview; +@property (nonatomic , strong) UserInfoSkillVo * userInfoSkillVo; +@property (nonatomic , assign) BOOL newUser; +@property (nonatomic , assign) NSInteger followNum; +@property (nonatomic , assign) BOOL isBindPaymentPwd; +@property (nonatomic , assign) BOOL isBindXCZAccount; +@property (nonatomic , assign) BOOL isBindAlipay; +///是否绑定了密码 +@property (nonatomic , assign) BOOL isBindPasswd; +@property (nonatomic, assign) NSInteger visitNum;///访客数量 +@property (nonatomic, assign) NSInteger inRoomNum;///足迹 +///是否需要展示限时首充列表 +@property (nonatomic, assign) BOOL showLimitCharge; +///限时首充结束时间 +@property (nonatomic, assign) long limitChargeEndTime; +///相册 +@property (nonatomic, strong) NSArray *privatePhoto;//相册 +///签名 +@property (nonatomic,copy) NSString *userDesc; +///出生日期 +@property (nonatomic,assign) long birth; +///是否实名认证 +@property (nonatomic,assign) BOOL isCertified; +///铭牌背景 +@property (nonatomic, copy) NSString *nameplatePic; +///铭牌名称 +@property (nonatomic, copy) NSString *nameplateWord; +///如果在房间有直播中字段 +@property(nonatomic, copy) NSString * roomUid; +///如果在房间,房间的标题 +@property (nonatomic, copy) NSString *roomTitle; +///用户信息中的 座驾 并不需要CarModel 映射一下吧 +@property (nonatomic,copy) NSString *carEffect; +///座驾特效类型 0:普通, 1:VAP特效 +@property (nonatomic, assign) NSInteger otherViewType; +///用户信息中需要用VAP播放的座驾, 映射一下 +@property (nonatomic, copy) NSString *viewUrl; +///用户信息中的 座驾昵称 并不需要CarModel 映射一下吧 +@property (nonatomic,copy) NSString *carName; +///用户信息中的 头饰的动画 并不需要HeadwearModel 映射一下吧 +@property (nonatomic,copy) NSString *headwearEffect; +///用户信息中的 头饰的动画 如果没有的话 就用这个 并不需要HeadwearModel 映射一下吧 +@property (nonatomic,copy) NSString *headwearPic; +///头饰(新字段) 上麦的时候 在扩展字段中的 只用在坑位上 +@property (nonatomic,copy) NSString *headWearUrl; +#pragma mark - 相亲房的字段 +///是否为相亲模式VIP坑位 +@property (nonatomic,assign) BOOL vipMic; +///帽子 相亲中收到礼物值最高的那个人 男神 女神都有 +@property (nonatomic,copy) NSString *capUrl; +///是不是选择了人 +@property (nonatomic,assign) BOOL hasSelectUser; +///所选择的麦序 +@property (nonatomic,assign) int selectMicPosition; +///贵族信息 +@property (nonatomic, strong) UserVipInfoVo *userVipInfoVO; +///当前使用的资料卡装扮 +@property (nonatomic, copy) NSString *userInfoCardPic; +///麦位光圈链接 +@property (nonatomic, copy) NSString *micCircle; +///麦位昵称颜色 +@property (nonatomic, copy) NSString *micNickColor; + +///技能卡图标列表 +@property (nonatomic, strong) NSArray *absCardPics; + +///跟随的 本地添加的字段 +@property (nonatomic,copy) NSString *fromNick; +@property (nonatomic,assign) UserEnterRoomFromType fromType; +@property (nonatomic,copy) NSString *fromUid; +///安卓房间公屏气泡 +@property (nonatomic, copy) NSString *androidBubbleUrl; +///iOS房间公屏气泡 +@property (nonatomic, copy) NSString *iosBubbleUrl; +#pragma mark - 小游戏 +/// 小游戏状态 0 未加入游戏;1 加入游戏未准备;2 加入游戏已准备 3 游戏中 +@property (nonatomic, assign) LittleGamePlayStatus gameStatus; +///用户的参加PK的类型 +@property (nonatomic, assign) GroupType groupType; +///礼物墙中的礼物 +@property (nonatomic,strong) NSArray *userGiftWall; +///礼物墙中的幸运礼物礼物 +@property (nonatomic,strong) NSArray *userLuckyBagGiftWall; +///是否防被踢 +@property (nonatomic, assign) BOOL preventKick; +///是否符合渠道打招呼 +@property (nonatomic,assign) BOOL fromSayHelloChannel; +///是否是封号用户 +@property (nonatomic,assign) BOOL banAccount; +///用户的动态 +@property (nonatomic,strong) NSArray *dynamicInfo; +@property (nonatomic,strong) NSMutableAttributedString *levelAtt; +@property (nonatomic,strong) NSMutableAttributedString *idAtt; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/MVP/Model/UserInfoModel.m b/YuMi/Structure/MVP/Model/UserInfoModel.m new file mode 100644 index 00000000..074c5e0b --- /dev/null +++ b/YuMi/Structure/MVP/Model/UserInfoModel.m @@ -0,0 +1,33 @@ +// +// UserInfoModel.m +// YUMI +// +// Created by zu on 2021/9/14. +// + +#import "UserInfoModel.h" + +@implementation UserInfoModel + ++ (NSDictionary *)objectClassInArray { + return @{ + @"privatePhoto":UserPhoto.class, + @"userGiftWall":UserGiftWallInfoModel.class, + @"userLuckyBagGiftWall":UserGiftWallInfoModel.class, + @"dynamicInfo":MonentsInfoModel.class + }; +} + +///如果一个模型中需要字段映射的话 比如id -> ID name -> other.name ++ (NSDictionary *)replacedKeyFromPropertyName { + return @{@"carEffect": @"carport.effect", + @"viewUrl": @"carport.viewUrl", + @"otherViewType": @"carport.otherViewType", + @"headwearEffect" : @"userHeadwear.effect", + @"headwearPic" : @"userHeadwear.pic", + @"carName": @"carport.name", + @"reviewingAvatar" : @"newAvatar" + }; +} + +@end diff --git a/YuMi/Structure/MVP/Model/UserInfoSkillVo.h b/YuMi/Structure/MVP/Model/UserInfoSkillVo.h new file mode 100644 index 00000000..c1976419 --- /dev/null +++ b/YuMi/Structure/MVP/Model/UserInfoSkillVo.h @@ -0,0 +1,16 @@ +// +// UserInfoSkillVo.h +// YUMI +// +// Created by zu on 2021/9/14. +// + +#import "NSObject+MJExtension.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface UserInfoSkillVo : NSObject +@property (nonatomic , assign) BOOL liveTag; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/MVP/Model/UserInfoSkillVo.m b/YuMi/Structure/MVP/Model/UserInfoSkillVo.m new file mode 100644 index 00000000..ef16061a --- /dev/null +++ b/YuMi/Structure/MVP/Model/UserInfoSkillVo.m @@ -0,0 +1,12 @@ +// +// UserInfoSkillVo.m +// YUMI +// +// Created by zu on 2021/9/14. +// + +#import "UserInfoSkillVo.h" + +@implementation UserInfoSkillVo + +@end diff --git a/YuMi/Structure/MVP/Model/UserLevelVo.h b/YuMi/Structure/MVP/Model/UserLevelVo.h new file mode 100644 index 00000000..de734278 --- /dev/null +++ b/YuMi/Structure/MVP/Model/UserLevelVo.h @@ -0,0 +1,32 @@ +// +// UserLevelVo.h +// YUMI +// +// Created by zu on 2021/9/14. +// + +#import "NSObject+MJExtension.h" + +NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(NSInteger, UserLevelType) { + UserLevelType_Common = 1,///普通人 + UserLevelType_Offical = 2,///官方 + UserLevelType_Robot = 3, ///机器人 +}; + +@interface UserLevelVo : NSObject +@property (nonatomic , copy) NSString * experUrl; +@property (nonatomic , assign) NSInteger charmLevelSeq; +@property (nonatomic , copy) NSString * experLevelName; +@property (nonatomic , copy) NSString * charmLevelName; +@property (nonatomic , assign) NSInteger charmAmount; +@property (nonatomic , copy) NSString * experLevelGrp; +@property (nonatomic , copy) NSString * charmUrl; +@property (nonatomic , assign) NSInteger experLevelSeq; +@property (nonatomic , assign) NSInteger experAmount; +@property (nonatomic , copy) NSString * charmLevelGrp; +///账号类型 +@property(nonatomic, assign) UserLevelType defUser; //账号类型 +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/MVP/Model/UserLevelVo.m b/YuMi/Structure/MVP/Model/UserLevelVo.m new file mode 100644 index 00000000..b4a9eed4 --- /dev/null +++ b/YuMi/Structure/MVP/Model/UserLevelVo.m @@ -0,0 +1,12 @@ +// +// UserLevelVo.m +// YUMI +// +// Created by zu on 2021/9/14. +// + +#import "UserLevelVo.h" + +@implementation UserLevelVo + +@end diff --git a/YuMi/Structure/MVP/Model/UserPhoto.h b/YuMi/Structure/MVP/Model/UserPhoto.h new file mode 100644 index 00000000..44f86a73 --- /dev/null +++ b/YuMi/Structure/MVP/Model/UserPhoto.h @@ -0,0 +1,18 @@ +// +// UserPhoto.h +// YUMI +// +// Created by YUMI on 2021/9/23. +// + +#import "NSObject+MJExtension.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface UserPhoto : NSObject +@property (copy, nonatomic) NSString *photoUrl; +@property (copy, nonatomic) NSString *pid; +@property (nonatomic, assign) BOOL isReview; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/MVP/Model/UserPhoto.m b/YuMi/Structure/MVP/Model/UserPhoto.m new file mode 100644 index 00000000..a2b2ff54 --- /dev/null +++ b/YuMi/Structure/MVP/Model/UserPhoto.m @@ -0,0 +1,13 @@ +// +// UserPhoto.m +// YUMI +// +// Created by YUMI on 2021/9/23. +// + +#import "UserPhoto.h" + +@implementation UserPhoto + + +@end diff --git a/YuMi/Structure/MVP/Model/UserVipInfoVo.h b/YuMi/Structure/MVP/Model/UserVipInfoVo.h new file mode 100644 index 00000000..5294f0e4 --- /dev/null +++ b/YuMi/Structure/MVP/Model/UserVipInfoVo.h @@ -0,0 +1,33 @@ +// +// UserVipInfoVo.h +// YUMI +// +// Created by YUMI on 2022/1/4. +// 贵族信息 + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface UserVipInfoVo : NSObject + +///贵族图标 +@property (nonatomic, copy) NSString *vipIcon; +///贵族等级 +@property (nonatomic, assign) NSInteger vipLevel; +//用户好友昵称颜色 +@property (nonatomic, copy) NSString *friendNickColour; +///是否防被踢 +@property (nonatomic, assign) BOOL preventKick; +///是否隐身进房 +@property (nonatomic, assign) BOOL enterHide; +///贵族进房特效 +@property (nonatomic, copy) NSString *enterRoomEffects; +///贵族名称 +@property (nonatomic, copy) NSString *vipName; +///隐身访问主页 +@property (nonatomic,assign) BOOL lookHomepageHide; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/MVP/Model/UserVipInfoVo.m b/YuMi/Structure/MVP/Model/UserVipInfoVo.m new file mode 100644 index 00000000..1c41f3fc --- /dev/null +++ b/YuMi/Structure/MVP/Model/UserVipInfoVo.m @@ -0,0 +1,12 @@ +// +// UserVipInfoVo.m +// YUMI +// +// Created by YUMI on 2022/1/4. +// + +#import "UserVipInfoVo.h" + +@implementation UserVipInfoVo + +@end diff --git a/YuMi/Structure/MVP/Presenter/BaseMvpExternalizer.h b/YuMi/Structure/MVP/Presenter/BaseMvpExternalizer.h deleted file mode 100644 index d8617cf6..00000000 --- a/YuMi/Structure/MVP/Presenter/BaseMvpExternalizer.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// BaseMvpExternalizer.h -// YUMI -// -// Created by admin on 2023/3/9. -// - -#import -#import "BaseMvpCeremony.h" -#import "HttpRequestFacilitater.h" - -NS_ASSUME_NONNULL_BEGIN - -typedef void(^HttpSuccess)(BaseMatrix *data); -typedef void(^HttpFail)(NSInteger code, NSString * _Nullable msg); - -@interface BaseMvpExternalizer : NSObject - -- (void)towardsttowardschRegard:(id)view; -- (id)acquireRegard; -- (void)dettowardschRegard; -- (void)logout; -- (HttpRequestHelperCompletion)produceHyperessayImplementtowardsion:(HttpSuccess _Nonnull)success; -- (HttpRequestHelperCompletion)produceHyperessayImplementtowardsion:(HttpSuccess _Nonnull)success EvidenceChambering:(BOOL)loading; -- (HttpRequestHelperCompletion)produceHyperessayImplementtowardsion:(HttpSuccess _Nonnull)success errorToast:(BOOL)toast; -- (HttpRequestHelperCompletion)produceHyperessayImplementtowardsion:(HttpSuccess _Nonnull)success EvidenceChambering:(BOOL)loading errorToast:(BOOL)toast; -- (HttpRequestHelperCompletion)produceHyperessayImplementtowardsion:(HttpSuccess _Nonnull)success fail:(HttpFail _Nullable)fail; -- (HttpRequestHelperCompletion)produceHyperessayImplementtowardsion:(HttpSuccess _Nonnull)success fail:(HttpFail _Nullable)fail EvidenceChambering:(BOOL)loading; -- (HttpRequestHelperCompletion)produceHyperessayImplementtowardsion:(HttpSuccess _Nonnull)success fail:(HttpFail _Nullable)fail errorToast:(BOOL)toast; -- (HttpRequestHelperCompletion)produceHyperessayImplementtowardsion:(HttpSuccess _Nonnull)success fail:(HttpFail _Nullable)fail EvidenceChambering:(BOOL)loading errorToast:(BOOL)toast; - - - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/MVP/Presenter/BaseMvpExternalizer.m b/YuMi/Structure/MVP/Presenter/BaseMvpExternalizer.m deleted file mode 100644 index 0aa93b59..00000000 --- a/YuMi/Structure/MVP/Presenter/BaseMvpExternalizer.m +++ /dev/null @@ -1,128 +0,0 @@ -// -// BaseMvpExternalizer.m -// YUMI -// -// Created by admin on 2023/3/9. -// - -#import "BaseMvpExternalizer.h" -#import "AccountAbstractStorage.h" -#import -#import "ClientDisposition.h" -@interface BaseMvpExternalizer() - -@property (nonatomic, weak) id view; - -@end - -@implementation BaseMvpExternalizer - -- (void)towardsttowardschRegard:(id)view { - self.view = view; -} - -- (id)acquireRegard { - return self.view; -} - -- (void)logout { - - [[AccountAbstractStorage instance] preserveSequenceriptionAbstract:nil]; - [[AccountAbstractStorage instance] preserveTicket:nil]; - if ([NIMSDK sharedSDK].loginManager.isLogined) { - [[NIMSDK sharedSDK].loginManager logout:nil]; - } - - [[self acquireRegard] tokenInvalid]; - - -} - -- (HttpRequestHelperCompletion)produceHyperessayImplementtowardsion:(HttpSuccess)success { - return [self produceHyperessayImplementtowardsion:success fail:nil]; -} - -- (HttpRequestHelperCompletion)produceHyperessayImplementtowardsion:(HttpSuccess)success EvidenceChambering:(BOOL)loading { - return [self produceHyperessayImplementtowardsion:success fail:nil EvidenceChambering:loading]; -} - -- (HttpRequestHelperCompletion)produceHyperessayImplementtowardsion:(HttpSuccess)success errorToast:(BOOL)toast { - return [self produceHyperessayImplementtowardsion:success fail:nil errorToast:toast]; -} - -- (HttpRequestHelperCompletion)produceHyperessayImplementtowardsion:(HttpSuccess)success EvidenceChambering:(BOOL)loading errorToast:(BOOL)toast { - return [self produceHyperessayImplementtowardsion:success fail:nil EvidenceChambering:loading errorToast:toast]; -} - -- (HttpRequestHelperCompletion)produceHyperessayImplementtowardsion:(HttpSuccess)success fail:(HttpFail)fail { - return [self produceHyperessayImplementtowardsion:success fail:fail EvidenceChambering:NO errorToast:YES]; -} - -- (HttpRequestHelperCompletion)produceHyperessayImplementtowardsion:(HttpSuccess)success fail:(HttpFail)fail EvidenceChambering:(BOOL)loading { - return [self produceHyperessayImplementtowardsion:success fail:fail EvidenceChambering:loading errorToast:YES]; -} - -- (HttpRequestHelperCompletion)produceHyperessayImplementtowardsion:(HttpSuccess)success fail:(HttpFail)fail errorToast:(BOOL)toast { - return [self produceHyperessayImplementtowardsion:success fail:fail EvidenceChambering:NO errorToast:toast]; -} - -- (HttpRequestHelperCompletion)produceHyperessayImplementtowardsion:(HttpSuccess)success fail:(HttpFail)fail EvidenceChambering:(BOOL)loading errorToast:(BOOL)toast { - if (loading) { - [self.view EvidenceKellegChambering]; - } - return ^(BaseMatrix *data, NSInteger code, NSString * _Nullable msg) { - if (loading) { - [self.view brakeHUD]; - } - if (code == 200) { - success(data); - return; - } - - switch (code) { - case 401: - [self logout]; - return; - case 407: - case 408: - [[self acquireRegard] accomputtowardsionBanned:data]; - return; - case 1415: - [[self acquireRegard] accomplishConsumerAbstract]; - return; - case 3009: - [[self acquireRegard] accomputtowardsionRevoctowardsioned:data.mtowardsrix2dictionary]; - return; - case 31005: { - } - break; - case 30000: { - } - break; - case 10111: - [self.view brakeHUD]; - [[self acquireRegard] EvidenceRealConstituteTowardstesttowardsionentictowardsionPromptsPrecautiousRegard]; - return; - case 10108: - [self.view brakeHUD]; - [[self acquireRegard] EvidenceRealConstituteTowardstesttowardsionentictowardsionPromptsPrecautiousRegard]; - return; - case 25000: { - } - } - - if (toast) { - [self.view EvidenceMistakeToast:msg]; - } - - if (fail) { - fail(code, msg); - } - }; -} - -- (void)dettowardschRegard { - -} - -@end diff --git a/YuMi/Structure/MVP/Presenter/BaseMvpPresenter.h b/YuMi/Structure/MVP/Presenter/BaseMvpPresenter.h new file mode 100644 index 00000000..32824622 --- /dev/null +++ b/YuMi/Structure/MVP/Presenter/BaseMvpPresenter.h @@ -0,0 +1,36 @@ +// +// BaseMvpPresenter.h +// YUMI +// +// Created by admin on 2023/3/9. +// + +#import +#import "BaseMvpProtocol.h" +#import "HttpRequestHelper.h" + +NS_ASSUME_NONNULL_BEGIN + +typedef void(^HttpSuccess)(BaseModel *data); +typedef void(^HttpFail)(NSInteger code, NSString * _Nullable msg); + +@interface BaseMvpPresenter : NSObject + +- (void)attatchView:(id)view; +- (id)getView; +- (void)detatchView; +- (void)logout; +- (HttpRequestHelperCompletion)createHttpCompletion:(HttpSuccess _Nonnull)success; +- (HttpRequestHelperCompletion)createHttpCompletion:(HttpSuccess _Nonnull)success showLoading:(BOOL)loading; +- (HttpRequestHelperCompletion)createHttpCompletion:(HttpSuccess _Nonnull)success errorToast:(BOOL)toast; +- (HttpRequestHelperCompletion)createHttpCompletion:(HttpSuccess _Nonnull)success showLoading:(BOOL)loading errorToast:(BOOL)toast; +- (HttpRequestHelperCompletion)createHttpCompletion:(HttpSuccess _Nonnull)success fail:(HttpFail _Nullable)fail; +- (HttpRequestHelperCompletion)createHttpCompletion:(HttpSuccess _Nonnull)success fail:(HttpFail _Nullable)fail showLoading:(BOOL)loading; +- (HttpRequestHelperCompletion)createHttpCompletion:(HttpSuccess _Nonnull)success fail:(HttpFail _Nullable)fail errorToast:(BOOL)toast; +- (HttpRequestHelperCompletion)createHttpCompletion:(HttpSuccess _Nonnull)success fail:(HttpFail _Nullable)fail showLoading:(BOOL)loading errorToast:(BOOL)toast; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/MVP/Presenter/BaseMvpPresenter.m b/YuMi/Structure/MVP/Presenter/BaseMvpPresenter.m new file mode 100644 index 00000000..af525c2f --- /dev/null +++ b/YuMi/Structure/MVP/Presenter/BaseMvpPresenter.m @@ -0,0 +1,128 @@ +// +// BaseMvpPresenter.m +// YUMI +// +// Created by admin on 2023/3/9. +// + +#import "BaseMvpPresenter.h" +#import "AccountInfoStorage.h" +#import +#import "ClientConfig.h" +@interface BaseMvpPresenter() + +@property (nonatomic, weak) id view; + +@end + +@implementation BaseMvpPresenter + +- (void)attatchView:(id)view { + self.view = view; +} + +- (id)getView { + return self.view; +} + +- (void)logout { + // 1. 数据logout + [[AccountInfoStorage instance] saveAccountInfo:nil]; + [[AccountInfoStorage instance] saveTicket:nil]; + if ([NIMSDK sharedSDK].loginManager.isLogined) { + [[NIMSDK sharedSDK].loginManager logout:nil]; + } + // 2. 跳登录页面 + [[self getView] tokenInvalid]; + // ///关闭心跳 + // [[ClientConfig shareConfig] resetHeartBratTimer]; +} + +- (HttpRequestHelperCompletion)createHttpCompletion:(HttpSuccess)success { + return [self createHttpCompletion:success fail:nil]; +} + +- (HttpRequestHelperCompletion)createHttpCompletion:(HttpSuccess)success showLoading:(BOOL)loading { + return [self createHttpCompletion:success fail:nil showLoading:loading]; +} + +- (HttpRequestHelperCompletion)createHttpCompletion:(HttpSuccess)success errorToast:(BOOL)toast { + return [self createHttpCompletion:success fail:nil errorToast:toast]; +} + +- (HttpRequestHelperCompletion)createHttpCompletion:(HttpSuccess)success showLoading:(BOOL)loading errorToast:(BOOL)toast { + return [self createHttpCompletion:success fail:nil showLoading:loading errorToast:toast]; +} + +- (HttpRequestHelperCompletion)createHttpCompletion:(HttpSuccess)success fail:(HttpFail)fail { + return [self createHttpCompletion:success fail:fail showLoading:NO errorToast:YES]; +} + +- (HttpRequestHelperCompletion)createHttpCompletion:(HttpSuccess)success fail:(HttpFail)fail showLoading:(BOOL)loading { + return [self createHttpCompletion:success fail:fail showLoading:loading errorToast:YES]; +} + +- (HttpRequestHelperCompletion)createHttpCompletion:(HttpSuccess)success fail:(HttpFail)fail errorToast:(BOOL)toast { + return [self createHttpCompletion:success fail:fail showLoading:NO errorToast:toast]; +} + +- (HttpRequestHelperCompletion)createHttpCompletion:(HttpSuccess)success fail:(HttpFail)fail showLoading:(BOOL)loading errorToast:(BOOL)toast { + if (loading) { + [self.view showAnchorLoading]; + } + return ^(BaseModel *data, NSInteger code, NSString * _Nullable msg) { + if (loading) { + [self.view hideHUD]; + } + if (code == 200) { + success(data); + return; + } + + switch (code) { + case 401: // 登录过期 + [self logout]; + return; + case 407: + case 408: + [[self getView] accountBanned:data]; + return; + case 1415: // 未完善用户信息 + [[self getView] completeUserInfo]; + return; + case 3009: // 账号已注销 + [[self getView] accountCanceled:data.model2dictionary]; + return; + case 31005: {//余额不足 + } + break; + case 30000: {// 青少年模式进房错误,进行弹窗处理,同时不显示 toast。 + } + break; + case 10111: // 提现时,金额过大,需要先实名认证 + [self.view hideHUD]; + [[self getView] showRealNameAuthenticationTipsAlertView]; + return; + case 10108: // 未实名认证 + [self.view hideHUD]; + [[self getView] showRealNameAuthenticationTipsAlertView]; + return; + case 25000: {// 在青少年模式下,充值已达上限 + } + } + + if (toast) { + [self.view showErrorToast:msg]; + } + + if (fail) { + fail(code, msg); + } + }; +} + +- (void)detatchView { + +} + +@end diff --git a/YuMi/Structure/MVP/Protocol/BaseMvpCeremony.h b/YuMi/Structure/MVP/Protocol/BaseMvpCeremony.h deleted file mode 100644 index 831658b8..00000000 --- a/YuMi/Structure/MVP/Protocol/BaseMvpCeremony.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// BaseMvpCeremony.h -// YUMI -// -// Created by admin on 2023/3/9. -// - -#import -#import "BaseRegardGovernancer.h" - -NS_ASSUME_NONNULL_BEGIN -@class BaseMatrix; -@protocol BaseMvpCeremony - -- (void)tokenInvalid; -- (void)accomplishConsumerAbstract; -- (void)accomputtowardsionRevoctowardsioned:(NSDictionary *)data; - -- (void)EvidenceRealConstituteTowardstesttowardsionentictowardsionPromptsPrecautiousRegard; - -- (void)accomputtowardsionBanned:(BaseMatrix *)data; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/MVP/Protocol/BaseMvpProtocol.h b/YuMi/Structure/MVP/Protocol/BaseMvpProtocol.h new file mode 100644 index 00000000..90ed87af --- /dev/null +++ b/YuMi/Structure/MVP/Protocol/BaseMvpProtocol.h @@ -0,0 +1,27 @@ +// +// BaseMvpProtocol.h +// YUMI +// +// Created by admin on 2023/3/9. +// + +#import +#import "BaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN +@class BaseModel; +@protocol BaseMvpProtocol + +- (void)tokenInvalid; +- (void)completeUserInfo; +- (void)accountCanceled:(NSDictionary *)data; + +///实名认证弹窗 +- (void)showRealNameAuthenticationTipsAlertView; + +///封禁账号 +- (void)accountBanned:(BaseModel *)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/MVP/View/MvpRegardGovernancer.h b/YuMi/Structure/MVP/View/MvpRegardGovernancer.h deleted file mode 100644 index 81e886e8..00000000 --- a/YuMi/Structure/MVP/View/MvpRegardGovernancer.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// MvpRegardGovernancer.h -// YUMI -// -// Created by admin on 2023/3/9. -// - -#import "BaseRegardGovernancer.h" -#import "BaseMvpExternalizer.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface MvpRegardGovernancer : BaseRegardGovernancer - -@property (nonatomic, strong) __kindof T presimport; - -- (__kindof T)producePresimport; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/MVP/View/MvpRegardGovernancer.m b/YuMi/Structure/MVP/View/MvpRegardGovernancer.m deleted file mode 100644 index 87d3e087..00000000 --- a/YuMi/Structure/MVP/View/MvpRegardGovernancer.m +++ /dev/null @@ -1,115 +0,0 @@ -// -// MvpRegardGovernancer.m -// YUMI -// -// Created by admin on 2023/3/9. -// - -#import "MvpRegardGovernancer.h" -#import "BaseMvpCeremony.h" -#import "BaseMvpExternalizer.h" -#import "YUMISurmountRegardGovernancer.h" -#import "BaseNevigationGovernancer.h" -#import "SurmountFullAbstractRegardGovernancer.h" -#import "YUMITissueRegardGovernancer.h" -#import "MKJPopup.h" -#import "PLIntratemporalUtil.h" -#import "DJDKMIMOMColor.h" -#import "YUMIMacroUitls.h" -#import "YUMIHtmlUrl.h" - -@interface MvpRegardGovernancer () - -@end - -@implementation MvpRegardGovernancer - -- (__kindof id)presimport { - if (_presimport == nil) { - _presimport = [self producePresimport]; - [_presimport towardsttowardschRegard:self]; - } - return _presimport; -} - -- (__kindof id)producePresimport { - return [[BaseMvpExternalizer alloc] init]; -} - -- (void)viewDidLoad { - [super viewDidLoad]; -} - -- (void)tokenInvalid { - - YUMISurmountRegardGovernancer *loginVC = [[YUMISurmountRegardGovernancer alloc] init]; - BaseNevigationGovernancer * nav = [[BaseNevigationGovernancer alloc] initWithRootViewController:loginVC]; - nav.modalPresentationStyle = UIModalPresentationFullScreen; - [self.navigationController presentViewController:nav animated:YES completion:nil]; -} - -- (void)accomputtowardsionRevoctowardsioned:(NSDictionary *)data { - NSString *date = [NSString stringWithFormat:@"%.0f",[[data objectForKey:@"cancelDate"] doubleValue]]; - NSString *dateDes = [NSString stringWithFormat:@"注销时间:%@", [PLIntratemporalUtil acquireEngagementAboutYYMMDD:date]]; - NSString *msg = [NSString stringWithFormat:@"%@\n\n请联系客服(微信:kefu01)咨询哦!", dateDes]; - MKJPrecautiousCommunicationAttributedDisposition *dateAttrConfig = [[MKJPrecautiousCommunicationAttributedDisposition alloc] init]; - dateAttrConfig.text = dateDes; - dateAttrConfig.color = DJDKMIMOMColor.aplictowardsionMainPrettify; - - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.title = YMLocalizedString(@"Mvp_View_Controller_2"); - config.message = msg; - config.communicationAttributedDisposition = @[dateAttrConfig]; - - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - - } cancelHandler:^{ - - }]; -} - -- (void)accomplishConsumerAbstract { - SurmountFullAbstractRegardGovernancer * bindPhoneVC = [[SurmountFullAbstractRegardGovernancer alloc] init]; - BaseNevigationGovernancer * nav = [[BaseNevigationGovernancer alloc] initWithRootViewController:bindPhoneVC]; - nav.modalPresentationStyle = UIModalPresentationFullScreen; - [self.navigationController presentViewController:nav animated:YES completion:nil]; -} - -- (void)EvidenceRealConstituteTowardstesttowardsionentictowardsionPromptsPrecautiousRegard { - MKJPrecautiousDisposition *config = [[MKJPrecautiousDisposition alloc] init]; - config.message = YMLocalizedString(@"Mvp_View_Controller_3"); - config.communicationBurlywoodIntervacuum = 4; - config.acknowledgementBtutonDisposition.title = YMLocalizedString(@"Mvp_View_Controller_4"); - config.acknowledgementBtutonDisposition.titleColor = UIColor.whiteColor; - config.acknowledgementBtutonDisposition.backgroundColor = [DJDKMIMOMColor aplictowardsionMainPrettify]; - - MKJPrecautiousCommunicationAttributedDisposition *nameAttrConf = [[MKJPrecautiousCommunicationAttributedDisposition alloc] init]; - nameAttrConf.text = YMLocalizedString(@"Mvp_View_Controller_5"); - nameAttrConf.color = [DJDKMIMOMColor aplictowardsionMainPrettify]; - config.communicationAttributedDisposition = @[nameAttrConf]; - - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - - } cancelHandler:^{ - }]; -} - -- (void)accomputtowardsionBanned:(BaseMatrix *)data { - MKJPrecautiousDisposition * config = [[MKJPrecautiousDisposition alloc] init]; - config.title = YMLocalizedString(@"Mvp_View_Controller_6"); - NSString *dateDes = [PLIntratemporalUtil acquireEngagementAboutYYMMDD:data.date]; - NSString * title = [NSString stringWithFormat:@"您的账号因%@被封禁\n解封时间:%@", data.reason,dateDes]; - MKJPrecautiousCommunicationAttributedDisposition * inviteAlertConfig = [[MKJPrecautiousCommunicationAttributedDisposition alloc] init]; - inviteAlertConfig.text = dateDes; - inviteAlertConfig.color = [DJDKMIMOMColor aplictowardsionMainPrettify]; - inviteAlertConfig.font = [UIFont systemFontOfSize:15]; - config.message = title; - config.communicationAttributedDisposition = @[inviteAlertConfig]; - [MKJPopup precautiousAboutDisposition:config acknowledgementHandler:^{ - - } cancelHandler:^{ - - }]; -} - -@end diff --git a/YuMi/Structure/MVP/View/MvpViewController.h b/YuMi/Structure/MVP/View/MvpViewController.h new file mode 100644 index 00000000..e1ef8054 --- /dev/null +++ b/YuMi/Structure/MVP/View/MvpViewController.h @@ -0,0 +1,21 @@ +// +// MvpViewController.h +// YUMI +// +// Created by admin on 2023/3/9. +// + +#import "BaseViewController.h" +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface MvpViewController : BaseViewController + +@property (nonatomic, strong) __kindof T presenter; + +- (__kindof T)createPresenter; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/MVP/View/MvpViewController.m b/YuMi/Structure/MVP/View/MvpViewController.m new file mode 100644 index 00000000..608084ab --- /dev/null +++ b/YuMi/Structure/MVP/View/MvpViewController.m @@ -0,0 +1,118 @@ +// +// MvpViewController.m +// YUMI +// +// Created by admin on 2023/3/9. +// + +#import "MvpViewController.h" +#import "BaseMvpProtocol.h" +#import "BaseMvpPresenter.h" +#import "XPLoginViewController.h" +#import "BaseNavigationController.h" +#import "LoginFullInfoViewController.h" +#import "XPWebViewController.h" +//Tool +#import "TTPopup.h" +#import "PLTimeUtil.h" +#import "DJDKMIMOMColor.h" +#import "YUMIMacroUitls.h" +#import "YUMIHtmlUrl.h" + +@interface MvpViewController () + +@end + +@implementation MvpViewController + +- (__kindof id)presenter { + if (_presenter == nil) { + _presenter = [self createPresenter]; + [_presenter attatchView:self]; + } + return _presenter; +} + +- (__kindof id)createPresenter { + return [[BaseMvpPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; +} + +- (void)tokenInvalid { + + XPLoginViewController *loginVC = [[XPLoginViewController alloc] init]; + BaseNavigationController * nav = [[BaseNavigationController alloc] initWithRootViewController:loginVC]; + nav.modalPresentationStyle = UIModalPresentationFullScreen; + [self.navigationController presentViewController:nav animated:YES completion:nil]; +} + +- (void)accountCanceled:(NSDictionary *)data { + NSString *date = [NSString stringWithFormat:@"%.0f",[[data objectForKey:@"cancelDate"] doubleValue]]; + NSString *dateDes = [NSString stringWithFormat:@"注销时间:%@", [PLTimeUtil getDateWithYYMMDD:date]]; + NSString *msg = [NSString stringWithFormat:@"%@\n\n请联系客服(微信:kefu01)咨询哦!", dateDes]; + TTAlertMessageAttributedConfig *dateAttrConfig = [[TTAlertMessageAttributedConfig alloc] init]; + dateAttrConfig.text = dateDes; + dateAttrConfig.color = DJDKMIMOMColor.appMainColor; + + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.title = YMLocalizedString(@"MvpViewController2"); + config.message = msg; + config.messageAttributedConfig = @[dateAttrConfig]; + + [TTPopup alertWithConfig:config confirmHandler:^{ + + } cancelHandler:^{ + + }]; +} + +- (void)completeUserInfo { + LoginFullInfoViewController * bindPhoneVC = [[LoginFullInfoViewController alloc] init]; + BaseNavigationController * nav = [[BaseNavigationController alloc] initWithRootViewController:bindPhoneVC]; + nav.modalPresentationStyle = UIModalPresentationFullScreen; + [self.navigationController presentViewController:nav animated:YES completion:nil]; +} + +///实名认证弹窗 +- (void)showRealNameAuthenticationTipsAlertView { + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.message = YMLocalizedString(@"MvpViewController3"); + config.messageLineSpacing = 4; + config.confirmButtonConfig.title = YMLocalizedString(@"MvpViewController4"); + config.confirmButtonConfig.titleColor = UIColor.whiteColor; + config.confirmButtonConfig.backgroundColor = [DJDKMIMOMColor appMainColor]; + + TTAlertMessageAttributedConfig *nameAttrConf = [[TTAlertMessageAttributedConfig alloc] init]; + nameAttrConf.text = YMLocalizedString(@"MvpViewController5"); + nameAttrConf.color = [DJDKMIMOMColor appMainColor]; + config.messageAttributedConfig = @[nameAttrConf]; + + [TTPopup alertWithConfig:config confirmHandler:^{ + + } cancelHandler:^{ + }]; +} + +///封禁账号 +- (void)accountBanned:(BaseModel *)data { + TTAlertConfig * config = [[TTAlertConfig alloc] init]; + config.title = YMLocalizedString(@"MvpViewController6"); + NSString *dateDes = [PLTimeUtil getDateWithYYMMDD:data.date]; + NSString * title = [NSString stringWithFormat:@"您的账号因%@被封禁\n解封时间:%@", data.reason,dateDes]; + TTAlertMessageAttributedConfig * inviteAlertConfig = [[TTAlertMessageAttributedConfig alloc] init]; + inviteAlertConfig.text = dateDes; + inviteAlertConfig.color = [DJDKMIMOMColor appMainColor]; + inviteAlertConfig.font = [UIFont systemFontOfSize:15]; + config.message = title; + config.messageAttributedConfig = @[inviteAlertConfig]; + [TTPopup alertWithConfig:config confirmHandler:^{ + + } cancelHandler:^{ + + }]; +} + +@end diff --git a/YuMi/Structure/PrefixHeader.pch b/YuMi/Structure/PrefixHeader.pch index 13cb8dae..92a363fe 100644 --- a/YuMi/Structure/PrefixHeader.pch +++ b/YuMi/Structure/PrefixHeader.pch @@ -22,8 +22,12 @@ #import #import "NSArray+Safe.h" #import "UIImage+Utils.h" -#import "XNDJTBWGLoadingTool.h" +#import "XNDJTDDLoadingTool.h" #import "DJDKMIMOMColor.h" -#import "NetIndicateRegard.h" -#import "XNDJTBWGLoadingTool.h" +#import "YUMIHtmlUrl.h" +#import "NSArray+Safe.h" +#import "NSString+Utils.h" +#import "UIButton+EnlargeTouchArea.h" +#import "UIView+Corner.h" +#import "UILabel+Utils.h" #endif /* PrefixHeader_pch */ diff --git a/YuMi/Tools/Bundle/NSBundle+Localizable.h b/YuMi/Tools/Bundle/NSBundle+Localizable.h index 4c70191f..5468e45d 100644 --- a/YuMi/Tools/Bundle/NSBundle+Localizable.h +++ b/YuMi/Tools/Bundle/NSBundle+Localizable.h @@ -10,8 +10,8 @@ NS_ASSUME_NONNULL_BEGIN @interface NSBundle (Localizable) -+(NSString *)ymProvincializedBWSttrInthecaseofDigital:(NSString *)key; -+(NSString *)ymProvincializedBWSttrInthecaseofDigital:(NSString *)key value:(NSString *)value; ++(NSString *)ymLocalizedStringForKey:(NSString *)key; ++(NSString *)ymLocalizedStringForKey:(NSString *)key value:(NSString *)value; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Tools/Bundle/NSBundle+Localizable.m b/YuMi/Tools/Bundle/NSBundle+Localizable.m index 2d910831..52c0b9f4 100644 --- a/YuMi/Tools/Bundle/NSBundle+Localizable.m +++ b/YuMi/Tools/Bundle/NSBundle+Localizable.m @@ -8,12 +8,12 @@ #import "NSBundle+Localizable.h" @implementation NSBundle (Localizable) -+(NSString *)ymProvincializedBWSttrInthecaseofDigital:(NSString *)key ++(NSString *)ymLocalizedStringForKey:(NSString *)key { - return [self ymProvincializedBWSttrInthecaseofDigital:key value:nil]; + return [self ymLocalizedStringForKey:key value:nil]; } -+(NSString *)ymProvincializedBWSttrInthecaseofDigital:(NSString *)key value:(NSString *)value ++(NSString *)ymLocalizedStringForKey:(NSString *)key value:(NSString *)value { NSString *language = [NSLocale preferredLanguages].firstObject; @@ -21,16 +21,16 @@ language = @"en"; } else if ([language hasPrefix:@"zh"]) { if ([language rangeOfString:@"Hans"].location != NSNotFound) { - language = @"zh-Hans"; + language = @"zh-Hans"; // 简体中文 } else { - language = @"zh-Hant"; + language = @"zh-Hant"; // 繁體中文 } } else if([language hasPrefix:@"id"]){ language = @"id-ID"; } else { language = @"en"; } - language = @"zh-Hant"; + language = @"zh-Hant"; // 繁體中文 NSBundle * bundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:language ofType:@"lproj"]]; value = [bundle localizedStringForKey:key value:value table:nil]; diff --git a/YuMi/Tools/CardManager/XPSkillCardPlayerManager.h b/YuMi/Tools/CardManager/XPSkillCardPlayerManager.h new file mode 100644 index 00000000..0b64ca5d --- /dev/null +++ b/YuMi/Tools/CardManager/XPSkillCardPlayerManager.h @@ -0,0 +1,60 @@ +// +// XPSkillCardPlayerManager.h +// YuMi +// +// Created by GreenLand on 2022/3/9. +// + +#import +#import + +@interface XPSkillCardPlayerManager : NSObject + +///播放器 +@property (nonatomic, strong) AVAudioPlayer *player; +///是否正在播放 +@property (nonatomic,assign) BOOL isPlay; + +///播放音量大小 +@property (nonatomic, assign) CGFloat volume; +@property (nonatomic,assign) BOOL isInRoomFirstRecharge; +///是否在房间 +@property (nonatomic,assign) BOOL isInRoom; +///是否在首充不弹出界面 +///所在房间的id +@property (nonatomic,copy) NSString *roomUid; +///我是否在上麦,在麦上时不能录音 +@property (nonatomic,assign) BOOL isMineInMic; + ++ (instancetype)shareInstance ; + +/** + 播放一次音频 + + @param filePath 本地路径 + @param completionBlock 播放完成回调 + */ +- (void)playerVoiceWithPath:(NSString *)filePath completionBlock:(void (^)(void))completionBlock; + +/** + 新的播放一次音频 + + @param filePath 本地路径 + @param completionBlock 播放完成回调 + */ +- (void)playerNewVoiceWithPath:(NSString *)filePath completionBlock:(void (^)(void))completionBlock; +/** + 停止音乐 + */ +- (void)stopMusic; + +/** + 停止音乐 是否需要执行完成回调(更新UI) + */ +- (void)stopMusicIsNeedCompletion:(BOOL)isNeedCompletion; +///关闭麦克风、听筒 +- (void)closeMicroAndVoiceWithBroadcast:(BOOL)isBroadcast; +///恢复之前的 麦克风、听筒听筒状态 +- (void)recoverMicroAndVoiceWithBroadcast:(BOOL)isBroadcast; +@end + diff --git a/YuMi/Tools/CardManager/XPSkillCardPlayerManager.m b/YuMi/Tools/CardManager/XPSkillCardPlayerManager.m new file mode 100644 index 00000000..b7b95861 --- /dev/null +++ b/YuMi/Tools/CardManager/XPSkillCardPlayerManager.m @@ -0,0 +1,183 @@ +// +// XPSkillCardPlayerManager.m +// YuMi +// +// Created by GreenLand on 2022/3/9. +// + +#import "XPSkillCardPlayerManager.h" +#import "XPRoomMiniManager.h" +#import "RtcManager.h" + +@interface XPSkillCardPlayerManager() + +///是否关闭了声音、麦克风 +@property (nonatomic, assign) BOOL isCloseMuteAndMicro; +///记录当前房间的听筒是否开启 +@property (nonatomic, assign) BOOL isMute; +///记录当前房间是否关闭麦克风 +@property (nonatomic, assign) BOOL isCloseMicro; +/// +@property (nonatomic,assign) BOOL isBroadcast; + +///播放完成回调 +@property (nonatomic, copy) void (^playerCompletionBlock)(void); + +@end + +@implementation XPSkillCardPlayerManager + ++ (instancetype)shareInstance { + static dispatch_once_t once; + static XPSkillCardPlayerManager *sharedInstance; + dispatch_once(&once, ^{ + if (sharedInstance == NULL) { + sharedInstance = [[self alloc] init]; + [[AVAudioSession sharedInstance]setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionAllowBluetooth error:nil]; + [[AVAudioSession sharedInstance]setActive:YES error:nil]; + } + }); + return sharedInstance; +} + +- (void)playerVoiceWithPath:(NSString *)filePath completionBlock:(void (^)(void))completionBlock{ + [self playerMusicWithPath:filePath volume:1 loop:NO completionBlock:completionBlock]; +} +- (void)playerNewVoiceWithPath:(NSString *)filePath completionBlock:(void (^)(void))completionBlock{ + [self playerNewMusicWithPath:filePath volume:1 loop:NO completionBlock:completionBlock]; +} +/** + 播放音频 + + @param filePath 本地路径 + @param volume 声音大小 + @param loop 是否循环播放 + @param completionBlock 播放完成回调 + */ +- (void)playerMusicWithPath:(NSString *)filePath volume:(CGFloat)volume loop:(BOOL)loop completionBlock:(void (^)(void))completionBlock { + [[AVAudioSession sharedInstance]setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionAllowBluetooth error:nil]; + [self closeMicroAndVoiceWithBroadcast:YES]; + if (self.player) { + [self.player stop]; + self.player = nil; + } + NSLog(@"播放动画的路径:%@", filePath); + if (![[NSFileManager defaultManager] fileExistsAtPath:filePath]) return; + NSURL *url = [NSURL fileURLWithPath:filePath]; + NSError *AVerror = NULL; + self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&AVerror]; + self.player.numberOfLoops = loop ? -1 : 0; + self.player.volume = volume; + if (AVerror) {//无效链接 + if (completionBlock) { + completionBlock(); + } + return; + } + self.isPlay = YES; + self.player.delegate = self; + [self.player prepareToPlay]; + [self.player play]; + self.playerCompletionBlock = completionBlock; + + +} + +/** + 新的播放音频 + + @param filePath 本地路径 + @param volume 声音大小 + @param loop 是否循环播放 + @param completionBlock 播放完成回调 + */ +- (void)playerNewMusicWithPath:(NSString *)filePath volume:(CGFloat)volume loop:(BOOL)loop completionBlock:(void (^)(void))completionBlock { + [[AVAudioSession sharedInstance]setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionAllowBluetooth error:nil]; + [self closeMicroAndVoiceWithBroadcast:YES]; + + + dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)); + dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ + if (self.player) { + [self.player stop]; + self.player = nil; + } + NSLog(@"播放动画的路径:%@", filePath); + if (![[NSFileManager defaultManager] fileExistsAtPath:filePath]) return; + NSURL *url = [NSURL fileURLWithPath:filePath]; + NSError *AVerror = NULL; + self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&AVerror]; + self.player.numberOfLoops = loop ? -1 : 0; + self.player.volume = volume; + if (AVerror) {//无效链接 + if (completionBlock) { + completionBlock(); + } + return; + } + self.isPlay = YES; + self.player.delegate = self; + [self.player prepareToPlay]; + [self.player play]; + self.playerCompletionBlock = completionBlock; + }); +} + +- (void)stopMusic { + [self stopMusicIsNeedCompletion:NO]; +} + +- (void)stopMusicIsNeedCompletion:(BOOL)isNeedCompletion { + if (self.player) { + [self.player stop]; + self.player = nil; + if (isNeedCompletion && self.playerCompletionBlock) { + self.playerCompletionBlock(); + } + self.playerCompletionBlock = nil; + } + self.isPlay = NO; + self.volume = 1; + [self recoverMicroAndVoiceWithBroadcast:YES]; +} + +///关闭麦克风、听筒 +- (void)closeMicroAndVoiceWithBroadcast:(BOOL)isBroadcast{ + if (([XPSkillCardPlayerManager shareInstance].isInRoom == YES || [XPRoomMiniManager shareManager].getRoomInfo) && !self.isCloseMuteAndMicro) { + self.isMute = [RtcManager instance].isLocalMuted; + self.isCloseMicro = [RtcManager instance].isRemoteMuted; + + [[RtcManager instance] setLocalMuted:YES]; + [[RtcManager instance] setRemoteMuted:YES]; + if(isBroadcast == YES){ + self.isBroadcast = [RtcManager instance].broadcast; + [[RtcManager instance]broadcast:NO]; + } + + self.isCloseMuteAndMicro = YES; + } +} + +///恢复之前的 麦克风、听筒听筒状态 +- (void)recoverMicroAndVoiceWithBroadcast:(BOOL)isBroadcast { + if (([XPSkillCardPlayerManager shareInstance].isInRoom == YES || [XPRoomMiniManager shareManager].getRoomInfo) && self.isCloseMuteAndMicro) { + [[RtcManager instance] setLocalMuted:self.isMute]; + [[RtcManager instance] setRemoteMuted:self.isCloseMicro]; + if(isBroadcast == YES){ + [[RtcManager instance] broadcast:self.isBroadcast]; + } + self.isCloseMuteAndMicro = NO; + } +} + +#pragma mark - AVAudioPlayerDelegate +///播放完成回调 +- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag { + if (self.playerCompletionBlock) { + self.playerCompletionBlock(); + self.playerCompletionBlock = nil; + self.isPlay = NO; + } +} + +@end diff --git a/YuMi/Tools/CardManager/YUMICommunicationSolitaireDisporterExecutive.h b/YuMi/Tools/CardManager/YUMICommunicationSolitaireDisporterExecutive.h deleted file mode 100644 index cff432a0..00000000 --- a/YuMi/Tools/CardManager/YUMICommunicationSolitaireDisporterExecutive.h +++ /dev/null @@ -1,37 +0,0 @@ -// -// YUMICommunicationSolitaireDisporterExecutive.h -// YuMi -// -// Created by GreenLand on 2022/3/9. -// - -#import -#import - -@interface YUMICommunicationSolitaireDisporterExecutive : NSObject - -@property (nonatomic, strong) AVAudioPlayer *player; -@property (nonatomic,assign) BOOL isDisport; - -@property (nonatomic, assign) CGFloat volume; -@property (nonatomic,assign) BOOL isInChamberThresholdReindict; -@property (nonatomic,assign) BOOL isInRoom; -@property (nonatomic,copy) NSString *roomUid; -@property (nonatomic,assign) BOOL isManeInLoudspeaker; - -+ (instancetype)partowardsiciptowardsionInstance ; - - -- (void)prohibitiporterReputtowardsionAboutRoute:(NSString *)filePath completionBlock:(void (^)(void))completionBlock; - - -- (void)prohibitiporterStrangeReputtowardsionAboutRoute:(NSString *)filePath completionBlock:(void (^)(void))completionBlock; - -- (void)suspeindManual; - - -- (void)suspeindManualIsNeedImplementtowardsion:(BOOL)isNeedCompletion; -- (void)concludeMiecreoscoopeGrantedReputtowardsionAboutBroadcast:(BOOL)isPingencourage; -- (void)recoverMiecreoscoopeGrantedReputtowardsionAboutBroadcast:(BOOL)isPingencourage; -@end - diff --git a/YuMi/Tools/CardManager/YUMICommunicationSolitaireDisporterExecutive.m b/YuMi/Tools/CardManager/YUMICommunicationSolitaireDisporterExecutive.m deleted file mode 100644 index f51b6328..00000000 --- a/YuMi/Tools/CardManager/YUMICommunicationSolitaireDisporterExecutive.m +++ /dev/null @@ -1,161 +0,0 @@ -// -// YUMICommunicationSolitaireDisporterExecutive.m -// YuMi -// -// Created by GreenLand on 2022/3/9. -// - -#import "YUMICommunicationSolitaireDisporterExecutive.h" -#import "YUMIChamberMiniExecutive.h" -#import "RealtimackExecutive.h" - -@interface YUMICommunicationSolitaireDisporterExecutive() - -@property (nonatomic, assign) BOOL isConcludeBreathaedGrantedMiecreoscoope; -@property (nonatomic, assign) BOOL isBreathaed; -@property (nonatomic, assign) BOOL isConcludeMiecreoscoope; -@property (nonatomic,assign) BOOL isPingencourage; - -@property (nonatomic, copy) void (^playerCompletionBlock)(void); - -@end - -@implementation YUMICommunicationSolitaireDisporterExecutive - -+ (instancetype)partowardsiciptowardsionInstance { - static dispatch_once_t once; - static YUMICommunicationSolitaireDisporterExecutive *sharedInstance; - dispatch_once(&once, ^{ - if (sharedInstance == NULL) { - sharedInstance = [[self alloc] init]; - [[AVAudioSession sharedInstance]setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionAllowBluetooth error:nil]; - [[AVAudioSession sharedInstance]setActive:YES error:nil]; - } - }); - return sharedInstance; -} - -- (void)prohibitiporterReputtowardsionAboutRoute:(NSString *)filePath completionBlock:(void (^)(void))completionBlock{ - [self prohibitiporterManualAboutRoute:filePath volume:1 loop:NO completionBlock:completionBlock]; -} -- (void)prohibitiporterStrangeReputtowardsionAboutRoute:(NSString *)filePath completionBlock:(void (^)(void))completionBlock{ - [self prohibitiporterStrangeManualAboutRoute:filePath volume:1 loop:NO completionBlock:completionBlock]; -} - -- (void)prohibitiporterManualAboutRoute:(NSString *)filePath volume:(CGFloat)volume loop:(BOOL)loop completionBlock:(void (^)(void))completionBlock { - [[AVAudioSession sharedInstance]setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionAllowBluetooth error:nil]; - [self concludeMiecreoscoopeGrantedReputtowardsionAboutBroadcast:YES]; - if (self.player) { - [self.player stop]; - self.player = nil; - } - NSLog(@"播放动画的路径:%@", filePath); - if (![[NSFileManager defaultManager] fileExistsAtPath:filePath]) return; - NSURL *url = [NSURL fileURLWithPath:filePath]; - NSError *AVerror = NULL; - self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&AVerror]; - self.player.numberOfLoops = loop ? -1 : 0; - self.player.volume = volume; - if (AVerror) { - if (completionBlock) { - completionBlock(); - } - return; - } - self.isDisport = YES; - self.player.delegate = self; - [self.player prepareToPlay]; - [self.player play]; - self.playerCompletionBlock = completionBlock; - - -} - - -- (void)prohibitiporterStrangeManualAboutRoute:(NSString *)filePath volume:(CGFloat)volume loop:(BOOL)loop completionBlock:(void (^)(void))completionBlock { - [[AVAudioSession sharedInstance]setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionAllowBluetooth error:nil]; - [self concludeMiecreoscoopeGrantedReputtowardsionAboutBroadcast:YES]; - - - dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)); - dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ - if (self.player) { - [self.player stop]; - self.player = nil; - } - NSLog(@"播放动画的路径:%@", filePath); - if (![[NSFileManager defaultManager] fileExistsAtPath:filePath]) return; - NSURL *url = [NSURL fileURLWithPath:filePath]; - NSError *AVerror = NULL; - self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&AVerror]; - self.player.numberOfLoops = loop ? -1 : 0; - self.player.volume = volume; - if (AVerror) { - if (completionBlock) { - completionBlock(); - } - return; - } - self.isDisport = YES; - self.player.delegate = self; - [self.player prepareToPlay]; - [self.player play]; - self.playerCompletionBlock = completionBlock; - }); -} - -- (void)suspeindManual { - [self suspeindManualIsNeedImplementtowardsion:NO]; -} - -- (void)suspeindManualIsNeedImplementtowardsion:(BOOL)isNeedCompletion { - if (self.player) { - [self.player stop]; - self.player = nil; - if (isNeedCompletion && self.playerCompletionBlock) { - self.playerCompletionBlock(); - } - self.playerCompletionBlock = nil; - } - self.isDisport = NO; - self.volume = 1; - [self recoverMiecreoscoopeGrantedReputtowardsionAboutBroadcast:YES]; -} - -- (void)concludeMiecreoscoopeGrantedReputtowardsionAboutBroadcast:(BOOL)isPingencourage{ - if (([YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance].isInRoom == YES || [YUMIChamberMiniExecutive shareManager].acquireChamberAbstract) && !self.isConcludeBreathaedGrantedMiecreoscoope) { - self.isBreathaed = [RealtimackExecutive instance].isLocalDelicate; - self.isConcludeMiecreoscoope = [RealtimackExecutive instance].isRemoteDelicate; - - [[RealtimackExecutive instance] setLocalDelicate:YES]; - [[RealtimackExecutive instance] setRemoteDelicate:YES]; - if(isPingencourage == YES){ - self.isPingencourage = [RealtimackExecutive instance].pingencourage; - [[RealtimackExecutive instance]pingencourage:NO]; - } - - self.isConcludeBreathaedGrantedMiecreoscoope = YES; - } -} - -- (void)recoverMiecreoscoopeGrantedReputtowardsionAboutBroadcast:(BOOL)isPingencourage { - if (([YUMICommunicationSolitaireDisporterExecutive partowardsiciptowardsionInstance].isInRoom == YES || [YUMIChamberMiniExecutive shareManager].acquireChamberAbstract) && self.isConcludeBreathaedGrantedMiecreoscoope) { - [[RealtimackExecutive instance] setLocalDelicate:self.isBreathaed]; - [[RealtimackExecutive instance] setRemoteDelicate:self.isConcludeMiecreoscoope]; - if(isPingencourage == YES){ - [[RealtimackExecutive instance] pingencourage:self.isPingencourage]; - } - self.isConcludeBreathaedGrantedMiecreoscoope = NO; - } -} - -#pragma mark - AVAudioPlayerDelegate -- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag { - if (self.playerCompletionBlock) { - self.playerCompletionBlock(); - self.playerCompletionBlock = nil; - self.isDisport = NO; - } -} - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Categories/DDData.h b/YuMi/Tools/CocoaHttpServer/Core/Categories/DDData.h index 31161349..e47b6c1a 100755 --- a/YuMi/Tools/CocoaHttpServer/Core/Categories/DDData.h +++ b/YuMi/Tools/CocoaHttpServer/Core/Categories/DDData.h @@ -1,14 +1,14 @@ -#import - -@interface NSData (DDData) - -- (NSData *)md5Comprehconclude; - -- (NSData *)sha1Comprehconclude; - -- (NSString *)hexBWSttrBWSttess; - -- (NSString *)base64Programmconclude; -- (NSData *)base64Decryptogramd; - -@end +#import + +@interface NSData (DDData) + +- (NSData *)md5Digest; + +- (NSData *)sha1Digest; + +- (NSString *)hexStringValue; + +- (NSString *)base64Encoded; +- (NSData *)base64Decoded; + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Categories/DDData.m b/YuMi/Tools/CocoaHttpServer/Core/Categories/DDData.m index 8449f0a6..82c60df3 100755 --- a/YuMi/Tools/CocoaHttpServer/Core/Categories/DDData.m +++ b/YuMi/Tools/CocoaHttpServer/Core/Categories/DDData.m @@ -10,7 +10,7 @@ static char encodingTable[64] = { 'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v', 'w','x','y','z','0','1','2','3','4','5','6','7','8','9','+','/' }; -- (NSData *)md5Comprehconclude +- (NSData *)md5Digest { unsigned char result[CC_MD5_DIGEST_LENGTH]; @@ -18,7 +18,7 @@ static char encodingTable[64] = { return [NSData dataWithBytes:result length:CC_MD5_DIGEST_LENGTH]; } -- (NSData *)sha1Comprehconclude +- (NSData *)sha1Digest { unsigned char result[CC_SHA1_DIGEST_LENGTH]; @@ -26,7 +26,7 @@ static char encodingTable[64] = { return [NSData dataWithBytes:result length:CC_SHA1_DIGEST_LENGTH]; } -- (NSString *)hexBWSttrBWSttess +- (NSString *)hexStringValue { NSMutableString *stringBuffer = [NSMutableString stringWithCapacity:([self length] * 2)]; @@ -41,7 +41,7 @@ static char encodingTable[64] = { return [stringBuffer copy]; } -- (NSString *)base64Programmconclude +- (NSString *)base64Encoded { const unsigned char *bytes = [self bytes]; NSMutableString *result = [NSMutableString stringWithCapacity:[self length]]; @@ -93,7 +93,7 @@ static char encodingTable[64] = { return [NSString stringWithString:result]; } -- (NSData *)base64Decryptogramd +- (NSData *)base64Decoded { const unsigned char *bytes = [self bytes]; NSMutableData *result = [NSMutableData dataWithCapacity:[self length]]; diff --git a/YuMi/Tools/CocoaHttpServer/Core/Categories/DDNumber.h b/YuMi/Tools/CocoaHttpServer/Core/Categories/DDNumber.h index f4d1349c..cded5b94 100755 --- a/YuMi/Tools/CocoaHttpServer/Core/Categories/DDNumber.h +++ b/YuMi/Tools/CocoaHttpServer/Core/Categories/DDNumber.h @@ -1,12 +1,12 @@ -#import - - -@interface NSNumber (DDNumber) - -+ (BOOL)analyzeBWSttr:(NSString *)str intoSInt64:(SInt64 *)pNum; -+ (BOOL)analyzeBWSttr:(NSString *)str intoUInt64:(UInt64 *)pNum; - -+ (BOOL)analyzeBWSttr:(NSString *)str intoNSInteger:(NSInteger *)pNum; -+ (BOOL)analyzeBWSttr:(NSString *)str intoNSUInteger:(NSUInteger *)pNum; - -@end +#import + + +@interface NSNumber (DDNumber) + ++ (BOOL)parseString:(NSString *)str intoSInt64:(SInt64 *)pNum; ++ (BOOL)parseString:(NSString *)str intoUInt64:(UInt64 *)pNum; + ++ (BOOL)parseString:(NSString *)str intoNSInteger:(NSInteger *)pNum; ++ (BOOL)parseString:(NSString *)str intoNSUInteger:(NSUInteger *)pNum; + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Categories/DDNumber.m b/YuMi/Tools/CocoaHttpServer/Core/Categories/DDNumber.m index 7b634ff7..d384d39c 100755 --- a/YuMi/Tools/CocoaHttpServer/Core/Categories/DDNumber.m +++ b/YuMi/Tools/CocoaHttpServer/Core/Categories/DDNumber.m @@ -3,7 +3,7 @@ @implementation NSNumber (DDNumber) -+ (BOOL)analyzeBWSttr:(NSString *)str intoSInt64:(SInt64 *)pNum ++ (BOOL)parseString:(NSString *)str intoSInt64:(SInt64 *)pNum { if(str == nil) { @@ -13,7 +13,7 @@ errno = 0; - + // On both 32-bit and 64-bit machines, long long = 64 bit *pNum = strtoll([str UTF8String], NULL, 10); @@ -23,7 +23,7 @@ return YES; } -+ (BOOL)analyzeBWSttr:(NSString *)str intoUInt64:(UInt64 *)pNum ++ (BOOL)parseString:(NSString *)str intoUInt64:(UInt64 *)pNum { if(str == nil) { @@ -33,7 +33,7 @@ errno = 0; - + // On both 32-bit and 64-bit machines, unsigned long long = 64 bit *pNum = strtoull([str UTF8String], NULL, 10); @@ -43,7 +43,7 @@ return YES; } -+ (BOOL)analyzeBWSttr:(NSString *)str intoNSInteger:(NSInteger *)pNum ++ (BOOL)parseString:(NSString *)str intoNSInteger:(NSInteger *)pNum { if(str == nil) { @@ -53,8 +53,8 @@ errno = 0; - - + // On LP64, NSInteger = long = 64 bit + // Otherwise, NSInteger = int = long = 32 bit *pNum = strtol([str UTF8String], NULL, 10); @@ -64,7 +64,7 @@ return YES; } -+ (BOOL)analyzeBWSttr:(NSString *)str intoNSUInteger:(NSUInteger *)pNum ++ (BOOL)parseString:(NSString *)str intoNSUInteger:(NSUInteger *)pNum { if(str == nil) { @@ -74,8 +74,8 @@ errno = 0; - - + // On LP64, NSUInteger = unsigned long = 64 bit + // Otherwise, NSUInteger = unsigned int = unsigned long = 32 bit *pNum = strtoul([str UTF8String], NULL, 10); diff --git a/YuMi/Tools/CocoaHttpServer/Core/Categories/DDRange.h b/YuMi/Tools/CocoaHttpServer/Core/Categories/DDRange.h index fdb66ba2..2fb4862c 100755 --- a/YuMi/Tools/CocoaHttpServer/Core/Categories/DDRange.h +++ b/YuMi/Tools/CocoaHttpServer/Core/Categories/DDRange.h @@ -1,48 +1,56 @@ - - -#import -#import - -@class NSString; - -typedef struct _DDRange { - UInt64 location; - UInt64 length; -} DDRange; - -typedef DDRange *DDRangePointer; - -NS_INLINE DDRange DDMakeRange(UInt64 loc, UInt64 len) { - DDRange r; - r.location = loc; - r.length = len; - return r; -} - -NS_INLINE UInt64 DDMaxRange(DDRange range) { - return (range.location + range.length); -} - -NS_INLINE BOOL DDLocationInRange(UInt64 loc, DDRange range) { - return (loc - range.location < range.length); -} - -NS_INLINE BOOL DDEqualRanges(DDRange range1, DDRange range2) { - return ((range1.location == range2.location) && (range1.length == range2.length)); -} - -FOUNDATION_EXPORT DDRange DDUnionRange(DDRange range1, DDRange range2); -FOUNDATION_EXPORT DDRange DDIntersectionRange(DDRange range1, DDRange range2); -FOUNDATION_EXPORT NSString *DDStringFromRange(DDRange range); -FOUNDATION_EXPORT DDRange DDRangeFromString(NSString *aString); - -NSInteger DDRangeCompare(DDRangePointer pDDRange1, DDRangePointer pDDRange2); - -@interface NSValue (NSValueDDRangeExtensions) - -+ (NSValue *)valueAboutDDScope:(DDRange)range; -- (DDRange)ddrangeBWSttess; - -- (NSInteger)ddrangeContraprohibititinguish:(NSValue *)ddrangeBWSttess; - -@end +/** + * DDRange is the functional equivalent of a 64 bit NSRange. + * The HTTP Server is designed to support very large files. + * On 32 bit architectures (ppc, i386) NSRange uses unsigned 32 bit integers. + * This only supports a range of up to 4 gigabytes. + * By defining our own variant, we can support a range up to 16 exabytes. + * + * All effort is given such that DDRange functions EXACTLY the same as NSRange. +**/ + +#import +#import + +@class NSString; + +typedef struct _DDRange { + UInt64 location; + UInt64 length; +} DDRange; + +typedef DDRange *DDRangePointer; + +NS_INLINE DDRange DDMakeRange(UInt64 loc, UInt64 len) { + DDRange r; + r.location = loc; + r.length = len; + return r; +} + +NS_INLINE UInt64 DDMaxRange(DDRange range) { + return (range.location + range.length); +} + +NS_INLINE BOOL DDLocationInRange(UInt64 loc, DDRange range) { + return (loc - range.location < range.length); +} + +NS_INLINE BOOL DDEqualRanges(DDRange range1, DDRange range2) { + return ((range1.location == range2.location) && (range1.length == range2.length)); +} + +FOUNDATION_EXPORT DDRange DDUnionRange(DDRange range1, DDRange range2); +FOUNDATION_EXPORT DDRange DDIntersectionRange(DDRange range1, DDRange range2); +FOUNDATION_EXPORT NSString *DDStringFromRange(DDRange range); +FOUNDATION_EXPORT DDRange DDRangeFromString(NSString *aString); + +NSInteger DDRangeCompare(DDRangePointer pDDRange1, DDRangePointer pDDRange2); + +@interface NSValue (NSValueDDRangeExtensions) + ++ (NSValue *)valueWithDDRange:(DDRange)range; +- (DDRange)ddrangeValue; + +- (NSInteger)ddrangeCompare:(NSValue *)ddrangeValue; + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Categories/DDRange.m b/YuMi/Tools/CocoaHttpServer/Core/Categories/DDRange.m index 398fb658..379e7cf3 100755 --- a/YuMi/Tools/CocoaHttpServer/Core/Categories/DDRange.m +++ b/YuMi/Tools/CocoaHttpServer/Core/Categories/DDRange.m @@ -35,7 +35,7 @@ DDRange DDRangeFromString(NSString *aString) { DDRange result = DDMakeRange(0, 0); - + // NSRange will ignore '-' characters, but not '+' characters NSCharacterSet *cset = [NSCharacterSet characterSetWithCharactersInString:@"+0123456789"]; NSScanner *scanner = [NSScanner scannerWithString:aString]; @@ -47,17 +47,17 @@ DDRange DDRangeFromString(NSString *aString) BOOL found1 = [scanner scanCharactersFromSet:cset intoString:&str1]; BOOL found2 = [scanner scanCharactersFromSet:cset intoString:&str2]; - if(found1) [NSNumber analyzeBWSttr:str1 intoUInt64:&result.location]; - if(found2) [NSNumber analyzeBWSttr:str2 intoUInt64:&result.length]; + if(found1) [NSNumber parseString:str1 intoUInt64:&result.location]; + if(found2) [NSNumber parseString:str2 intoUInt64:&result.length]; return result; } NSInteger DDRangeCompare(DDRangePointer pDDRange1, DDRangePointer pDDRange2) { - - - + // Comparison basis: + // Which range would you encouter first if you started at zero, and began walking towards infinity. + // If you encouter both ranges at the same time, which range would end first. if(pDDRange1->location < pDDRange2->location) { @@ -81,22 +81,22 @@ NSInteger DDRangeCompare(DDRangePointer pDDRange1, DDRangePointer pDDRange2) @implementation NSValue (NSValueDDRangeExtensions) -+ (NSValue *)valueAboutDDScope:(DDRange)range ++ (NSValue *)valueWithDDRange:(DDRange)range { return [NSValue valueWithBytes:&range objCType:@encode(DDRange)]; } -- (DDRange)ddrangeBWSttess +- (DDRange)ddrangeValue { DDRange result; [self getValue:&result]; return result; } -- (NSInteger)ddrangeContraprohibititinguish:(NSValue *)other +- (NSInteger)ddrangeCompare:(NSValue *)other { - DDRange r1 = [self ddrangeBWSttess]; - DDRange r2 = [other ddrangeBWSttess]; + DDRange r1 = [self ddrangeValue]; + DDRange r2 = [other ddrangeValue]; return DDRangeCompare(&r1, &r2); } diff --git a/YuMi/Tools/CocoaHttpServer/Core/HTTPAuthenticationRequest.h b/YuMi/Tools/CocoaHttpServer/Core/HTTPAuthenticationRequest.h new file mode 100755 index 00000000..983e1620 --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/HTTPAuthenticationRequest.h @@ -0,0 +1,45 @@ +#import + +#if TARGET_OS_IPHONE + // Note: You may need to add the CFNetwork Framework to your project + #import +#endif + +@class HTTPMessage; + + +@interface HTTPAuthenticationRequest : NSObject +{ + BOOL isBasic; + BOOL isDigest; + + NSString *base64Credentials; + + NSString *username; + NSString *realm; + NSString *nonce; + NSString *uri; + NSString *qop; + NSString *nc; + NSString *cnonce; + NSString *response; +} +- (id)initWithRequest:(HTTPMessage *)request; + +- (BOOL)isBasic; +- (BOOL)isDigest; + +// Basic +- (NSString *)base64Credentials; + +// Digest +- (NSString *)username; +- (NSString *)realm; +- (NSString *)nonce; +- (NSString *)uri; +- (NSString *)qop; +- (NSString *)nc; +- (NSString *)cnonce; +- (NSString *)response; + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/HTTPAuthenticationRequest.m b/YuMi/Tools/CocoaHttpServer/Core/HTTPAuthenticationRequest.m new file mode 100755 index 00000000..80f275fa --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/HTTPAuthenticationRequest.m @@ -0,0 +1,194 @@ +#import "HTTPAuthenticationRequest.h" +#import "HTTPMessage.h" + +#if ! __has_feature(objc_arc) +#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). +#endif + +@interface HTTPAuthenticationRequest (PrivateAPI) +- (NSString *)quotedSubHeaderFieldValue:(NSString *)param fromHeaderFieldValue:(NSString *)header; +- (NSString *)nonquotedSubHeaderFieldValue:(NSString *)param fromHeaderFieldValue:(NSString *)header; +@end + + +@implementation HTTPAuthenticationRequest + +- (id)initWithRequest:(HTTPMessage *)request +{ + if ((self = [super init])) + { + NSString *authInfo = [request headerField:@"Authorization"]; + + isBasic = NO; + if ([authInfo length] >= 6) + { + isBasic = [[authInfo substringToIndex:6] caseInsensitiveCompare:@"Basic "] == NSOrderedSame; + } + + isDigest = NO; + if ([authInfo length] >= 7) + { + isDigest = [[authInfo substringToIndex:7] caseInsensitiveCompare:@"Digest "] == NSOrderedSame; + } + + if (isBasic) + { + NSMutableString *temp = [[authInfo substringFromIndex:6] mutableCopy]; + CFStringTrimWhitespace((__bridge CFMutableStringRef)temp); + + base64Credentials = [temp copy]; + } + + if (isDigest) + { + username = [self quotedSubHeaderFieldValue:@"username" fromHeaderFieldValue:authInfo]; + realm = [self quotedSubHeaderFieldValue:@"realm" fromHeaderFieldValue:authInfo]; + nonce = [self quotedSubHeaderFieldValue:@"nonce" fromHeaderFieldValue:authInfo]; + uri = [self quotedSubHeaderFieldValue:@"uri" fromHeaderFieldValue:authInfo]; + + // It appears from RFC 2617 that the qop is to be given unquoted + // Tests show that Firefox performs this way, but Safari does not + // Thus we'll attempt to retrieve the value as nonquoted, but we'll verify it doesn't start with a quote + qop = [self nonquotedSubHeaderFieldValue:@"qop" fromHeaderFieldValue:authInfo]; + if(qop && ([qop characterAtIndex:0] == '"')) + { + qop = [self quotedSubHeaderFieldValue:@"qop" fromHeaderFieldValue:authInfo]; + } + + nc = [self nonquotedSubHeaderFieldValue:@"nc" fromHeaderFieldValue:authInfo]; + cnonce = [self quotedSubHeaderFieldValue:@"cnonce" fromHeaderFieldValue:authInfo]; + response = [self quotedSubHeaderFieldValue:@"response" fromHeaderFieldValue:authInfo]; + } + } + return self; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Accessors: +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +- (BOOL)isBasic { + return isBasic; +} + +- (BOOL)isDigest { + return isDigest; +} + +- (NSString *)base64Credentials { + return base64Credentials; +} + +- (NSString *)username { + return username; +} + +- (NSString *)realm { + return realm; +} + +- (NSString *)nonce { + return nonce; +} + +- (NSString *)uri { + return uri; +} + +- (NSString *)qop { + return qop; +} + +- (NSString *)nc { + return nc; +} + +- (NSString *)cnonce { + return cnonce; +} + +- (NSString *)response { + return response; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Private API: +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * Retrieves a "Sub Header Field Value" from a given header field value. + * The sub header field is expected to be quoted. + * + * In the following header field: + * Authorization: Digest username="Mufasa", qop=auth, response="6629fae4939" + * The sub header field titled 'username' is quoted, and this method would return the value @"Mufasa". +**/ +- (NSString *)quotedSubHeaderFieldValue:(NSString *)param fromHeaderFieldValue:(NSString *)header +{ + if (header==nil || header.length == 0) return @""; + NSRange startRange = [header rangeOfString:[NSString stringWithFormat:@"%@=\"", param]]; + if(startRange.location == NSNotFound){ + // The param was not found anywhere in the header + return nil; + } + NSUInteger postStartRangeLocation = startRange.location + startRange.length; + NSUInteger postStartRangeLength = [header length] - postStartRangeLocation; + NSRange postStartRange = NSMakeRange(postStartRangeLocation, postStartRangeLength); + + NSRange endRange = [header rangeOfString:@"\"" options:0 range:postStartRange]; + if(endRange.location == NSNotFound) + { + // The ending double-quote was not found anywhere in the header + return nil; + } + + NSRange subHeaderRange = NSMakeRange(postStartRangeLocation, endRange.location - postStartRangeLocation); + return [header substringWithRange:subHeaderRange]; +} + +/** + * Retrieves a "Sub Header Field Value" from a given header field value. + * The sub header field is expected to not be quoted. + * + * In the following header field: + * Authorization: Digest username="Mufasa", qop=auth, response="6629fae4939" + * The sub header field titled 'qop' is nonquoted, and this method would return the value @"auth". +**/ +- (NSString *)nonquotedSubHeaderFieldValue:(NSString *)param fromHeaderFieldValue:(NSString *)header +{ + NSRange startRange = [header rangeOfString:[NSString stringWithFormat:@"%@=", param]]; + if(startRange.location == NSNotFound) + { + // The param was not found anywhere in the header + return nil; + } + + NSUInteger postStartRangeLocation = startRange.location + startRange.length; + NSUInteger postStartRangeLength = [header length] - postStartRangeLocation; + NSRange postStartRange = NSMakeRange(postStartRangeLocation, postStartRangeLength); + + NSRange endRange = [header rangeOfString:@"," options:0 range:postStartRange]; + if(endRange.location == NSNotFound) + { + // The ending comma was not found anywhere in the header + // However, if the nonquoted param is at the end of the string, there would be no comma + // This is only possible if there are no spaces anywhere + NSRange endRange2 = [header rangeOfString:@" " options:0 range:postStartRange]; + if(endRange2.location != NSNotFound) + { + return nil; + } + else + { + return [header substringWithRange:postStartRange]; + } + } + else + { + NSRange subHeaderRange = NSMakeRange(postStartRangeLocation, endRange.location - postStartRangeLocation); + return [header substringWithRange:subHeaderRange]; + } +} + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/HTTPConnection.h b/YuMi/Tools/CocoaHttpServer/Core/HTTPConnection.h new file mode 100755 index 00000000..80b9576f --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/HTTPConnection.h @@ -0,0 +1,119 @@ +#import + +@class GCDAsyncSocket; +@class HTTPMessage; +@class HTTPServer; +@class WebSocket; +@protocol HTTPResponse; + + +#define HTTPConnectionDidDieNotification @"HTTPConnectionDidDie" + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +@interface HTTPConfig : NSObject +{ + HTTPServer __unsafe_unretained *server; + NSString __strong *documentRoot; + dispatch_queue_t queue; +} + +- (id)initWithServer:(HTTPServer *)server documentRoot:(NSString *)documentRoot; +- (id)initWithServer:(HTTPServer *)server documentRoot:(NSString *)documentRoot queue:(dispatch_queue_t)q; + +@property (nonatomic, unsafe_unretained, readonly) HTTPServer *server; +@property (nonatomic, strong, readonly) NSString *documentRoot; +@property (nonatomic, readonly) dispatch_queue_t queue; + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +@interface HTTPConnection : NSObject +{ + dispatch_queue_t connectionQueue; + GCDAsyncSocket *asyncSocket; + HTTPConfig *config; + + BOOL started; + + HTTPMessage *request; + unsigned int numHeaderLines; + + BOOL sentResponseHeaders; + + NSString *nonce; + long lastNC; + + NSObject *httpResponse; + + NSMutableArray *ranges; + NSMutableArray *ranges_headers; + NSString *ranges_boundry; + int rangeIndex; + + UInt64 requestContentLength; + UInt64 requestContentLengthReceived; + UInt64 requestChunkSize; + UInt64 requestChunkSizeReceived; + + NSMutableArray *responseDataSizes; +} + +- (id)initWithAsyncSocket:(GCDAsyncSocket *)newSocket configuration:(HTTPConfig *)aConfig; + +- (void)start; +- (void)stop; + +- (void)startConnection; + +- (BOOL)supportsMethod:(NSString *)method atPath:(NSString *)path; +- (BOOL)expectsRequestBodyFromMethod:(NSString *)method atPath:(NSString *)path; + +- (BOOL)isSecureServer; +- (NSArray *)sslIdentityAndCertificates; + +- (BOOL)isPasswordProtected:(NSString *)path; +- (BOOL)useDigestAccessAuthentication; +- (NSString *)realm; +- (NSString *)passwordForUser:(NSString *)username; + +- (NSDictionary *)parseParams:(NSString *)query; +- (NSDictionary *)parseGetParams; + +- (NSString *)requestURI; + +- (NSArray *)directoryIndexFileNames; +- (NSString *)filePathForURI:(NSString *)path; +- (NSString *)filePathForURI:(NSString *)path allowDirectory:(BOOL)allowDirectory; +- (NSObject *)httpResponseForMethod:(NSString *)method URI:(NSString *)path; +- (WebSocket *)webSocketForURI:(NSString *)path; + +- (void)prepareForBodyWithSize:(UInt64)contentLength; +- (void)processBodyData:(NSData *)postDataChunk; +- (void)finishBody; + +- (void)handleVersionNotSupported:(NSString *)version; +- (void)handleAuthenticationFailed; +- (void)handleResourceNotFound; +- (void)handleInvalidRequest:(NSData *)data; +- (void)handleUnknownMethod:(NSString *)method; + +- (NSData *)preprocessResponse:(HTTPMessage *)response; +- (NSData *)preprocessErrorResponse:(HTTPMessage *)response; + +- (void)finishResponse; + +- (BOOL)shouldDie; +- (void)die; + +@end + +@interface HTTPConnection (AsynchronousHTTPResponse) +- (void)responseHasAvailableData:(NSObject *)sender; +- (void)responseDidAbort:(NSObject *)sender; +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/HTTPConnection.m b/YuMi/Tools/CocoaHttpServer/Core/HTTPConnection.m new file mode 100755 index 00000000..d4ac82f5 --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/HTTPConnection.m @@ -0,0 +1,2708 @@ +#import "GCDAsyncSocket.h" +#import "HTTPServer.h" +#import "HTTPConnection.h" +#import "HTTPMessage.h" +#import "HTTPResponse.h" +#import "HTTPAuthenticationRequest.h" +#import "DDNumber.h" +#import "DDRange.h" +#import "DDData.h" +#import "HTTPFileResponse.h" +#import "HTTPAsyncFileResponse.h" +#import "WebSocket.h" +#import "HTTPLogging.h" + +#if ! __has_feature(objc_arc) +#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). +#endif + +// Log levels: off, error, warn, info, verbose +// Other flags: trace +static const int httpLogLevel = HTTP_LOG_LEVEL_WARN; // | HTTP_LOG_FLAG_TRACE; + +// Define chunk size used to read in data for responses +// This is how much data will be read from disk into RAM at a time +#if TARGET_OS_IPHONE + #define READ_CHUNKSIZE (1024 * 256) +#else + #define READ_CHUNKSIZE (1024 * 512) +#endif + +// Define chunk size used to read in POST upload data +#if TARGET_OS_IPHONE + #define POST_CHUNKSIZE (1024 * 256) +#else + #define POST_CHUNKSIZE (1024 * 512) +#endif + +// Define the various timeouts (in seconds) for various parts of the HTTP process +#define TIMEOUT_READ_FIRST_HEADER_LINE 30 +#define TIMEOUT_READ_SUBSEQUENT_HEADER_LINE 30 +#define TIMEOUT_READ_BODY -1 +#define TIMEOUT_WRITE_HEAD 30 +#define TIMEOUT_WRITE_BODY -1 +#define TIMEOUT_WRITE_ERROR 30 +#define TIMEOUT_NONCE 300 + +// Define the various limits +// MAX_HEADER_LINE_LENGTH: Max length (in bytes) of any single line in a header (including \r\n) +// MAX_HEADER_LINES : Max number of lines in a single header (including first GET line) +#define MAX_HEADER_LINE_LENGTH 8190 +#define MAX_HEADER_LINES 100 +// MAX_CHUNK_LINE_LENGTH : For accepting chunked transfer uploads, max length of chunk size line (including \r\n) +#define MAX_CHUNK_LINE_LENGTH 200 + +// Define the various tags we'll use to differentiate what it is we're currently doing +#define HTTP_REQUEST_HEADER 10 +#define HTTP_REQUEST_BODY 11 +#define HTTP_REQUEST_CHUNK_SIZE 12 +#define HTTP_REQUEST_CHUNK_DATA 13 +#define HTTP_REQUEST_CHUNK_TRAILER 14 +#define HTTP_REQUEST_CHUNK_FOOTER 15 +#define HTTP_PARTIAL_RESPONSE 20 +#define HTTP_PARTIAL_RESPONSE_HEADER 21 +#define HTTP_PARTIAL_RESPONSE_BODY 22 +#define HTTP_CHUNKED_RESPONSE_HEADER 30 +#define HTTP_CHUNKED_RESPONSE_BODY 31 +#define HTTP_CHUNKED_RESPONSE_FOOTER 32 +#define HTTP_PARTIAL_RANGE_RESPONSE_BODY 40 +#define HTTP_PARTIAL_RANGES_RESPONSE_BODY 50 +#define HTTP_RESPONSE 90 +#define HTTP_FINAL_RESPONSE 91 + +// A quick note about the tags: +// +// The HTTP_RESPONSE and HTTP_FINAL_RESPONSE are designated tags signalling that the response is completely sent. +// That is, in the onSocket:didWriteDataWithTag: method, if the tag is HTTP_RESPONSE or HTTP_FINAL_RESPONSE, +// it is assumed that the response is now completely sent. +// Use HTTP_RESPONSE if it's the end of a response, and you want to start reading more requests afterwards. +// Use HTTP_FINAL_RESPONSE if you wish to terminate the connection after sending the response. +// +// If you are sending multiple data segments in a custom response, make sure that only the last segment has +// the HTTP_RESPONSE tag. For all other segments prior to the last segment use HTTP_PARTIAL_RESPONSE, or some other +// tag of your own invention. + +@interface HTTPConnection (PrivateAPI) +- (void)startReadingRequest; +- (void)sendResponseHeadersAndBody; +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +@implementation HTTPConnection + +static dispatch_queue_t recentNonceQueue; +static NSMutableArray *recentNonces; + +/** + * This method is automatically called (courtesy of Cocoa) before the first instantiation of this class. + * We use it to initialize any static variables. +**/ ++ (void)initialize +{ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + + // Initialize class variables + recentNonceQueue = dispatch_queue_create("HTTPConnection-Nonce", NULL); + recentNonces = [[NSMutableArray alloc] initWithCapacity:5]; + }); +} + +/** + * Generates and returns an authentication nonce. + * A nonce is a server-specified string uniquely generated for each 401 response. + * The default implementation uses a single nonce for each session. +**/ ++ (NSString *)generateNonce +{ + // We use the Core Foundation UUID class to generate a nonce value for us + // UUIDs (Universally Unique Identifiers) are 128-bit values guaranteed to be unique. + CFUUIDRef theUUID = CFUUIDCreate(NULL); + NSString *newNonce = (__bridge_transfer NSString *)CFUUIDCreateString(NULL, theUUID); + CFRelease(theUUID); + + // We have to remember that the HTTP protocol is stateless. + // Even though with version 1.1 persistent connections are the norm, they are not guaranteed. + // Thus if we generate a nonce for this connection, + // it should be honored for other connections in the near future. + // + // In fact, this is absolutely necessary in order to support QuickTime. + // When QuickTime makes it's initial connection, it will be unauthorized, and will receive a nonce. + // It then disconnects, and creates a new connection with the nonce, and proper authentication. + // If we don't honor the nonce for the second connection, QuickTime will repeat the process and never connect. + + dispatch_async(recentNonceQueue, ^{ @autoreleasepool { + + [recentNonces addObject:newNonce]; + }}); + + double delayInSeconds = TIMEOUT_NONCE; + dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); + dispatch_after(popTime, recentNonceQueue, ^{ @autoreleasepool { + + [recentNonces removeObject:newNonce]; + }}); + + return newNonce; +} + +/** + * Returns whether or not the given nonce is in the list of recently generated nonce's. +**/ ++ (BOOL)hasRecentNonce:(NSString *)recentNonce +{ + __block BOOL result = NO; + + dispatch_sync(recentNonceQueue, ^{ @autoreleasepool { + + result = [recentNonces containsObject:recentNonce]; + }}); + + return result; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Init, Dealloc: +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * Sole Constructor. + * Associates this new HTTP connection with the given AsyncSocket. + * This HTTP connection object will become the socket's delegate and take over responsibility for the socket. +**/ +- (id)initWithAsyncSocket:(GCDAsyncSocket *)newSocket configuration:(HTTPConfig *)aConfig +{ + if ((self = [super init])) + { + HTTPLogTrace(); + + if (aConfig.queue) + { + connectionQueue = aConfig.queue; + #if !OS_OBJECT_USE_OBJC + dispatch_retain(connectionQueue); + #endif + } + else + { + connectionQueue = dispatch_queue_create("HTTPConnection", NULL); + } + + // Take over ownership of the socket + asyncSocket = newSocket; + [asyncSocket setDelegate:self delegateQueue:connectionQueue]; + + // Store configuration + config = aConfig; + + // Initialize lastNC (last nonce count). + // Used with digest access authentication. + // These must increment for each request from the client. + lastNC = 0; + + // Create a new HTTP message + request = [[HTTPMessage alloc] initEmptyRequest]; + + numHeaderLines = 0; + + responseDataSizes = [[NSMutableArray alloc] initWithCapacity:5]; + } + return self; +} + +/** + * Standard Deconstructor. +**/ +- (void)dealloc +{ + HTTPLogTrace(); + + #if !OS_OBJECT_USE_OBJC + dispatch_release(connectionQueue); + #endif + + [asyncSocket setDelegate:nil delegateQueue:NULL]; + [asyncSocket disconnect]; + + if ([httpResponse respondsToSelector:@selector(connectionDidClose)]) + { + [httpResponse connectionDidClose]; + } +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Method Support +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * Returns whether or not the server will accept messages of a given method + * at a particular URI. +**/ +- (BOOL)supportsMethod:(NSString *)method atPath:(NSString *)path +{ + HTTPLogTrace(); + + // Override me to support methods such as POST. + // + // Things you may want to consider: + // - Does the given path represent a resource that is designed to accept this method? + // - If accepting an upload, is the size of the data being uploaded too big? + // To do this you can check the requestContentLength variable. + // + // For more information, you can always access the HTTPMessage request variable. + // + // You should fall through with a call to [super supportsMethod:method atPath:path] + // + // See also: expectsRequestBodyFromMethod:atPath: + + if ([method isEqualToString:@"GET"]) + return YES; + + if ([method isEqualToString:@"HEAD"]) + return YES; + + return NO; +} + +/** + * Returns whether or not the server expects a body from the given method. + * + * In other words, should the server expect a content-length header and associated body from this method. + * This would be true in the case of a POST, where the client is sending data, + * or for something like PUT where the client is supposed to be uploading a file. +**/ +- (BOOL)expectsRequestBodyFromMethod:(NSString *)method atPath:(NSString *)path +{ + HTTPLogTrace(); + + // Override me to add support for other methods that expect the client + // to send a body along with the request header. + // + // You should fall through with a call to [super expectsRequestBodyFromMethod:method atPath:path] + // + // See also: supportsMethod:atPath: + + if ([method isEqualToString:@"POST"]) + return YES; + + if ([method isEqualToString:@"PUT"]) + return YES; + + return NO; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark HTTPS +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * Returns whether or not the server is configured to be a secure server. + * In other words, all connections to this server are immediately secured, thus only secure connections are allowed. + * This is the equivalent of having an https server, where it is assumed that all connections must be secure. + * If this is the case, then unsecure connections will not be allowed on this server, and a separate unsecure server + * would need to be run on a separate port in order to support unsecure connections. + * + * Note: In order to support secure connections, the sslIdentityAndCertificates method must be implemented. +**/ +- (BOOL)isSecureServer +{ + HTTPLogTrace(); + + // Override me to create an https server... + + return NO; +} + +/** + * This method is expected to returns an array appropriate for use in kCFStreamSSLCertificates SSL Settings. + * It should be an array of SecCertificateRefs except for the first element in the array, which is a SecIdentityRef. +**/ +- (NSArray *)sslIdentityAndCertificates +{ + HTTPLogTrace(); + + // Override me to provide the proper required SSL identity. + + return nil; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Password Protection +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * Returns whether or not the requested resource is password protected. + * In this generic implementation, nothing is password protected. +**/ +- (BOOL)isPasswordProtected:(NSString *)path +{ + HTTPLogTrace(); + + // Override me to provide password protection... + // You can configure it for the entire server, or based on the current request + + return NO; +} + +/** + * Returns whether or not the authentication challenge should use digest access authentication. + * The alternative is basic authentication. + * + * If at all possible, digest access authentication should be used because it's more secure. + * Basic authentication sends passwords in the clear and should be avoided unless using SSL/TLS. +**/ +- (BOOL)useDigestAccessAuthentication +{ + HTTPLogTrace(); + + // Override me to customize the authentication scheme + // Make sure you understand the security risks of using the weaker basic authentication + + return YES; +} + +/** + * Returns the authentication realm. + * In this generic implmentation, a default realm is used for the entire server. +**/ +- (NSString *)realm +{ + HTTPLogTrace(); + + // Override me to provide a custom realm... + // You can configure it for the entire server, or based on the current request + + return @"defaultRealm@host.com"; +} + +/** + * Returns the password for the given username. +**/ +- (NSString *)passwordForUser:(NSString *)username +{ + HTTPLogTrace(); + + // Override me to provide proper password authentication + // You can configure a password for the entire server, or custom passwords for users and/or resources + + // Security Note: + // A nil password means no access at all. (Such as for user doesn't exist) + // An empty string password is allowed, and will be treated as any other password. (To support anonymous access) + + return nil; +} + +/** + * Returns whether or not the user is properly authenticated. +**/ +- (BOOL)isAuthenticated +{ + HTTPLogTrace(); + + // Extract the authentication information from the Authorization header + HTTPAuthenticationRequest *auth = [[HTTPAuthenticationRequest alloc] initWithRequest:request]; + + if ([self useDigestAccessAuthentication]) + { + // Digest Access Authentication (RFC 2617) + + if(![auth isDigest]) + { + // User didn't send proper digest access authentication credentials + return NO; + } + + if ([auth username] == nil) + { + // The client didn't provide a username + // Most likely they didn't provide any authentication at all + return NO; + } + + NSString *password = [self passwordForUser:[auth username]]; + if (password == nil) + { + // No access allowed (username doesn't exist in system) + return NO; + } + + NSString *url = [[request url] relativeString]; + + if (![url isEqualToString:[auth uri]]) + { + // Requested URL and Authorization URI do not match + // This could be a replay attack + // IE - attacker provides same authentication information, but requests a different resource + return NO; + } + + // The nonce the client provided will most commonly be stored in our local (cached) nonce variable + if (![nonce isEqualToString:[auth nonce]]) + { + // The given nonce may be from another connection + // We need to search our list of recent nonce strings that have been recently distributed + if ([[self class] hasRecentNonce:[auth nonce]]) + { + // Store nonce in local (cached) nonce variable to prevent array searches in the future + nonce = [[auth nonce] copy]; + + // The client has switched to using a different nonce value + // This may happen if the client tries to get a file in a directory with different credentials. + // The previous credentials wouldn't work, and the client would receive a 401 error + // along with a new nonce value. The client then uses this new nonce value and requests the file again. + // Whatever the case may be, we need to reset lastNC, since that variable is on a per nonce basis. + lastNC = 0; + } + else + { + // We have no knowledge of ever distributing such a nonce. + // This could be a replay attack from a previous connection in the past. + return NO; + } + } + + long authNC = strtol([[auth nc] UTF8String], NULL, 16); + + if (authNC <= lastNC) + { + // The nc value (nonce count) hasn't been incremented since the last request. + // This could be a replay attack. + return NO; + } + lastNC = authNC; + + NSString *HA1str = [NSString stringWithFormat:@"%@:%@:%@", [auth username], [auth realm], password]; + NSString *HA2str = [NSString stringWithFormat:@"%@:%@", [request method], [auth uri]]; + + NSString *HA1 = [[[HA1str dataUsingEncoding:NSUTF8StringEncoding] md5Digest] hexStringValue]; + + NSString *HA2 = [[[HA2str dataUsingEncoding:NSUTF8StringEncoding] md5Digest] hexStringValue]; + + NSString *responseStr = [NSString stringWithFormat:@"%@:%@:%@:%@:%@:%@", + HA1, [auth nonce], [auth nc], [auth cnonce], [auth qop], HA2]; + + NSString *response = [[[responseStr dataUsingEncoding:NSUTF8StringEncoding] md5Digest] hexStringValue]; + + return [response isEqualToString:[auth response]]; + } + else + { + // Basic Authentication + + if (![auth isBasic]) + { + // User didn't send proper base authentication credentials + return NO; + } + + // Decode the base 64 encoded credentials + NSString *base64Credentials = [auth base64Credentials]; + + NSData *temp = [[base64Credentials dataUsingEncoding:NSUTF8StringEncoding] base64Decoded]; + + NSString *credentials = [[NSString alloc] initWithData:temp encoding:NSUTF8StringEncoding]; + + // The credentials should be of the form "username:password" + // The username is not allowed to contain a colon + + NSRange colonRange = [credentials rangeOfString:@":"]; + + if (colonRange.length == 0) + { + // Malformed credentials + return NO; + } + + NSString *credUsername = [credentials substringToIndex:colonRange.location]; + NSString *credPassword = [credentials substringFromIndex:(colonRange.location + colonRange.length)]; + + NSString *password = [self passwordForUser:credUsername]; + if (password == nil) + { + // No access allowed (username doesn't exist in system) + return NO; + } + + return [password isEqualToString:credPassword]; + } +} + +/** + * Adds a digest access authentication challenge to the given response. +**/ +- (void)addDigestAuthChallenge:(HTTPMessage *)response +{ + HTTPLogTrace(); + + NSString *authFormat = @"Digest realm=\"%@\", qop=\"auth\", nonce=\"%@\""; + NSString *authInfo = [NSString stringWithFormat:authFormat, [self realm], [[self class] generateNonce]]; + + [response setHeaderField:@"WWW-Authenticate" value:authInfo]; +} + +/** + * Adds a basic authentication challenge to the given response. +**/ +- (void)addBasicAuthChallenge:(HTTPMessage *)response +{ + HTTPLogTrace(); + + NSString *authFormat = @"Basic realm=\"%@\""; + NSString *authInfo = [NSString stringWithFormat:authFormat, [self realm]]; + + [response setHeaderField:@"WWW-Authenticate" value:authInfo]; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Core +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * Starting point for the HTTP connection after it has been fully initialized (including subclasses). + * This method is called by the HTTP server. +**/ +- (void)start +{ + dispatch_async(connectionQueue, ^{ @autoreleasepool { + + if (!started) + { + started = YES; + [self startConnection]; + } + }}); +} + +/** + * This method is called by the HTTPServer if it is asked to stop. + * The server, in turn, invokes stop on each HTTPConnection instance. +**/ +- (void)stop +{ + dispatch_async(connectionQueue, ^{ @autoreleasepool { + + // Disconnect the socket. + // The socketDidDisconnect delegate method will handle everything else. + [asyncSocket disconnect]; + }}); +} + +/** + * Starting point for the HTTP connection. +**/ +- (void)startConnection +{ + // Override me to do any custom work before the connection starts. + // + // Be sure to invoke [super startConnection] when you're done. + + HTTPLogTrace(); + + if ([self isSecureServer]) + { + // We are configured to be an HTTPS server. + // That is, we secure via SSL/TLS the connection prior to any communication. + + NSArray *certificates = [self sslIdentityAndCertificates]; + + if ([certificates count] > 0) + { + // All connections are assumed to be secure. Only secure connections are allowed on this server. + NSMutableDictionary *settings = [NSMutableDictionary dictionaryWithCapacity:3]; + + // Configure this connection as the server + [settings setObject:[NSNumber numberWithBool:YES] + forKey:(NSString *)kCFStreamSSLIsServer]; + + [settings setObject:certificates + forKey:(NSString *)kCFStreamSSLCertificates]; + + // Configure this connection to use the highest possible SSL level + [settings setObject:(NSString *)kCFStreamSocketSecurityLevelNegotiatedSSL + forKey:(NSString *)kCFStreamSSLLevel]; + + [asyncSocket startTLS:settings]; + } + } + + [self startReadingRequest]; +} + +/** + * Starts reading an HTTP request. +**/ +- (void)startReadingRequest +{ + HTTPLogTrace(); + + [asyncSocket readDataToData:[GCDAsyncSocket CRLFData] + withTimeout:TIMEOUT_READ_FIRST_HEADER_LINE + maxLength:MAX_HEADER_LINE_LENGTH + tag:HTTP_REQUEST_HEADER]; +} + +/** + * Parses the given query string. + * + * For example, if the query is "q=John%20Mayer%20Trio&num=50" + * then this method would return the following dictionary: + * { + * q = "John Mayer Trio" + * num = "50" + * } +**/ +- (NSDictionary *)parseParams:(NSString *)query +{ + NSArray *components = [query componentsSeparatedByString:@"&"]; + NSMutableDictionary *result = [NSMutableDictionary dictionaryWithCapacity:[components count]]; + + NSUInteger i; + for (i = 0; i < [components count]; i++) + { + NSString *component = [components objectAtIndex:i]; + if ([component length] > 0) + { + NSRange range = [component rangeOfString:@"="]; + if (range.location != NSNotFound) + { + NSString *escapedKey = [component substringToIndex:(range.location + 0)]; + NSString *escapedValue = [component substringFromIndex:(range.location + 1)]; + + if ([escapedKey length] > 0) + { + CFStringRef k, v; + + k = CFURLCreateStringByReplacingPercentEscapes(NULL, (__bridge CFStringRef)escapedKey, CFSTR("")); + v = CFURLCreateStringByReplacingPercentEscapes(NULL, (__bridge CFStringRef)escapedValue, CFSTR("")); + + NSString *key, *value; + + key = (__bridge_transfer NSString *)k; + value = (__bridge_transfer NSString *)v; + + if (key) + { + if (value) + [result setObject:value forKey:key]; + else + [result setObject:[NSNull null] forKey:key]; + } + } + } + } + } + + return result; +} + +/** + * Parses the query variables in the request URI. + * + * For example, if the request URI was "/search.html?q=John%20Mayer%20Trio&num=50" + * then this method would return the following dictionary: + * { + * q = "John Mayer Trio" + * num = "50" + * } +**/ +- (NSDictionary *)parseGetParams +{ + if(![request isHeaderComplete]) return nil; + + NSDictionary *result = nil; + + NSURL *url = [request url]; + if(url) + { + NSString *query = [url query]; + if (query) + { + result = [self parseParams:query]; + } + } + + return result; +} + +/** + * Attempts to parse the given range header into a series of sequential non-overlapping ranges. + * If successfull, the variables 'ranges' and 'rangeIndex' will be updated, and YES will be returned. + * Otherwise, NO is returned, and the range request should be ignored. + **/ +- (BOOL)parseRangeRequest:(NSString *)rangeHeader withContentLength:(UInt64)contentLength +{ + HTTPLogTrace(); + + // Examples of byte-ranges-specifier values (assuming an entity-body of length 10000): + // + // - The first 500 bytes (byte offsets 0-499, inclusive): bytes=0-499 + // + // - The second 500 bytes (byte offsets 500-999, inclusive): bytes=500-999 + // + // - The final 500 bytes (byte offsets 9500-9999, inclusive): bytes=-500 + // + // - Or bytes=9500- + // + // - The first and last bytes only (bytes 0 and 9999): bytes=0-0,-1 + // + // - Several legal but not canonical specifications of the second 500 bytes (byte offsets 500-999, inclusive): + // bytes=500-600,601-999 + // bytes=500-700,601-999 + // + + NSRange eqsignRange = [rangeHeader rangeOfString:@"="]; + + if(eqsignRange.location == NSNotFound) return NO; + + NSUInteger tIndex = eqsignRange.location; + NSUInteger fIndex = eqsignRange.location + eqsignRange.length; + + NSMutableString *rangeType = [[rangeHeader substringToIndex:tIndex] mutableCopy]; + NSMutableString *rangeValue = [[rangeHeader substringFromIndex:fIndex] mutableCopy]; + + CFStringTrimWhitespace((__bridge CFMutableStringRef)rangeType); + CFStringTrimWhitespace((__bridge CFMutableStringRef)rangeValue); + + if([rangeType caseInsensitiveCompare:@"bytes"] != NSOrderedSame) return NO; + + NSArray *rangeComponents = [rangeValue componentsSeparatedByString:@","]; + + if([rangeComponents count] == 0) return NO; + + ranges = [[NSMutableArray alloc] initWithCapacity:[rangeComponents count]]; + + rangeIndex = 0; + + // Note: We store all range values in the form of DDRange structs, wrapped in NSValue objects. + // Since DDRange consists of UInt64 values, the range extends up to 16 exabytes. + + NSUInteger i; + for (i = 0; i < [rangeComponents count]; i++) + { + NSString *rangeComponent = [rangeComponents objectAtIndex:i]; + + NSRange dashRange = [rangeComponent rangeOfString:@"-"]; + + if (dashRange.location == NSNotFound) + { + // We're dealing with an individual byte number + + UInt64 byteIndex; + if(![NSNumber parseString:rangeComponent intoUInt64:&byteIndex]) return NO; + + if(byteIndex >= contentLength) return NO; + + [ranges addObject:[NSValue valueWithDDRange:DDMakeRange(byteIndex, 1)]]; + } + else + { + // We're dealing with a range of bytes + + tIndex = dashRange.location; + fIndex = dashRange.location + dashRange.length; + + NSString *r1str = [rangeComponent substringToIndex:tIndex]; + NSString *r2str = [rangeComponent substringFromIndex:fIndex]; + + UInt64 r1, r2; + + BOOL hasR1 = [NSNumber parseString:r1str intoUInt64:&r1]; + BOOL hasR2 = [NSNumber parseString:r2str intoUInt64:&r2]; + + if (!hasR1) + { + // We're dealing with a "-[#]" range + // + // r2 is the number of ending bytes to include in the range + + if(!hasR2) return NO; + if(r2 > contentLength) return NO; + + UInt64 startIndex = contentLength - r2; + + [ranges addObject:[NSValue valueWithDDRange:DDMakeRange(startIndex, r2)]]; + } + else if (!hasR2) + { + // We're dealing with a "[#]-" range + // + // r1 is the starting index of the range, which goes all the way to the end + + if(r1 >= contentLength) return NO; + + [ranges addObject:[NSValue valueWithDDRange:DDMakeRange(r1, contentLength - r1)]]; + } + else + { + // We're dealing with a normal "[#]-[#]" range + // + // Note: The range is inclusive. So 0-1 has a length of 2 bytes. + + if(r1 > r2) return NO; + if(r2 >= contentLength) return NO; + + [ranges addObject:[NSValue valueWithDDRange:DDMakeRange(r1, r2 - r1 + 1)]]; + } + } + } + + if([ranges count] == 0) return NO; + + // Now make sure none of the ranges overlap + + for (i = 0; i < [ranges count] - 1; i++) + { + DDRange range1 = [[ranges objectAtIndex:i] ddrangeValue]; + + NSUInteger j; + for (j = i+1; j < [ranges count]; j++) + { + DDRange range2 = [[ranges objectAtIndex:j] ddrangeValue]; + + DDRange iRange = DDIntersectionRange(range1, range2); + + if(iRange.length != 0) + { + return NO; + } + } + } + + // Sort the ranges + + [ranges sortUsingSelector:@selector(ddrangeCompare:)]; + + return YES; +} + +- (NSString *)requestURI +{ + if(request == nil) return nil; + + return [[request url] relativeString]; +} + +/** + * This method is called after a full HTTP request has been received. + * The current request is in the HTTPMessage request variable. +**/ +- (void)replyToHTTPRequest +{ + HTTPLogTrace(); + + if (HTTP_LOG_VERBOSE) + { + NSData *tempData = [request messageData]; + + NSString *tempStr = [[NSString alloc] initWithData:tempData encoding:NSUTF8StringEncoding]; + HTTPLogVerbose(@"%@[%p]: Received HTTP request:\n%@", THIS_FILE, self, tempStr); + } + + // Check the HTTP version + // We only support version 1.0 and 1.1 + + NSString *version = [request version]; + if (![version isEqualToString:HTTPVersion1_1] && ![version isEqualToString:HTTPVersion1_0]) + { + [self handleVersionNotSupported:version]; + return; + } + + // Extract requested URI + NSString *uri = [self requestURI]; + + // Check for WebSocket request + if ([WebSocket isWebSocketRequest:request]) + { + HTTPLogVerbose(@"isWebSocket"); + + WebSocket *ws = [self webSocketForURI:uri]; + + if (ws == nil) + { + [self handleResourceNotFound]; + } + else + { + [ws start]; + + [[config server] addWebSocket:ws]; + + // The WebSocket should now be the delegate of the underlying socket. + // But gracefully handle the situation if it forgot. + if ([asyncSocket delegate] == self) + { + HTTPLogWarn(@"%@[%p]: WebSocket forgot to set itself as socket delegate", THIS_FILE, self); + + // Disconnect the socket. + // The socketDidDisconnect delegate method will handle everything else. + [asyncSocket disconnect]; + } + else + { + // The WebSocket is using the socket, + // so make sure we don't disconnect it in the dealloc method. + asyncSocket = nil; + + [self die]; + + // Note: There is a timing issue here that should be pointed out. + // + // A bug that existed in previous versions happend like so: + // - We invoked [self die] + // - This caused us to get released, and our dealloc method to start executing + // - Meanwhile, AsyncSocket noticed a disconnect, and began to dispatch a socketDidDisconnect at us + // - The dealloc method finishes execution, and our instance gets freed + // - The socketDidDisconnect gets run, and a crash occurs + // + // So the issue we want to avoid is releasing ourself when there is a possibility + // that AsyncSocket might be gearing up to queue a socketDidDisconnect for us. + // + // In this particular situation notice that we invoke [asyncSocket delegate]. + // This method is synchronous concerning AsyncSocket's internal socketQueue. + // Which means we can be sure, when it returns, that AsyncSocket has already + // queued any delegate methods for us if it was going to. + // And if the delegate methods are queued, then we've been properly retained. + // Meaning we won't get released / dealloc'd until the delegate method has finished executing. + // + // In this rare situation, the die method will get invoked twice. + } + } + + return; + } + + // Check Authentication (if needed) + // If not properly authenticated for resource, issue Unauthorized response + if ([self isPasswordProtected:uri] && ![self isAuthenticated]) + { + [self handleAuthenticationFailed]; + return; + } + + // Extract the method + NSString *method = [request method]; + + // Note: We already checked to ensure the method was supported in onSocket:didReadData:withTag: + + // Respond properly to HTTP 'GET' and 'HEAD' commands + httpResponse = [self httpResponseForMethod:method URI:uri]; + + if (httpResponse == nil) + { + [self handleResourceNotFound]; + return; + } + + [self sendResponseHeadersAndBody]; +} + +/** + * Prepares a single-range response. + * + * Note: The returned HTTPMessage is owned by the sender, who is responsible for releasing it. +**/ +- (HTTPMessage *)newUniRangeResponse:(UInt64)contentLength +{ + HTTPLogTrace(); + + // Status Code 206 - Partial Content + HTTPMessage *response = [[HTTPMessage alloc] initResponseWithStatusCode:206 description:nil version:HTTPVersion1_1]; + + DDRange range = [[ranges objectAtIndex:0] ddrangeValue]; + + NSString *contentLengthStr = [NSString stringWithFormat:@"%qu", range.length]; + [response setHeaderField:@"Content-Length" value:contentLengthStr]; + + NSString *rangeStr = [NSString stringWithFormat:@"%qu-%qu", range.location, DDMaxRange(range) - 1]; + NSString *contentRangeStr = [NSString stringWithFormat:@"bytes %@/%qu", rangeStr, contentLength]; + [response setHeaderField:@"Content-Range" value:contentRangeStr]; + + return response; +} + +/** + * Prepares a multi-range response. + * + * Note: The returned HTTPMessage is owned by the sender, who is responsible for releasing it. +**/ +- (HTTPMessage *)newMultiRangeResponse:(UInt64)contentLength +{ + HTTPLogTrace(); + + // Status Code 206 - Partial Content + HTTPMessage *response = [[HTTPMessage alloc] initResponseWithStatusCode:206 description:nil version:HTTPVersion1_1]; + + // We have to send each range using multipart/byteranges + // So each byterange has to be prefix'd and suffix'd with the boundry + // Example: + // + // HTTP/1.1 206 Partial Content + // Content-Length: 220 + // Content-Type: multipart/byteranges; boundary=4554d24e986f76dd6 + // + // + // --4554d24e986f76dd6 + // Content-Range: bytes 0-25/4025 + // + // [...] + // --4554d24e986f76dd6 + // Content-Range: bytes 3975-4024/4025 + // + // [...] + // --4554d24e986f76dd6-- + + ranges_headers = [[NSMutableArray alloc] initWithCapacity:[ranges count]]; + + CFUUIDRef theUUID = CFUUIDCreate(NULL); + ranges_boundry = (__bridge_transfer NSString *)CFUUIDCreateString(NULL, theUUID); + CFRelease(theUUID); + + NSString *startingBoundryStr = [NSString stringWithFormat:@"\r\n--%@\r\n", ranges_boundry]; + NSString *endingBoundryStr = [NSString stringWithFormat:@"\r\n--%@--\r\n", ranges_boundry]; + + UInt64 actualContentLength = 0; + + NSUInteger i; + for (i = 0; i < [ranges count]; i++) + { + DDRange range = [[ranges objectAtIndex:i] ddrangeValue]; + + NSString *rangeStr = [NSString stringWithFormat:@"%qu-%qu", range.location, DDMaxRange(range) - 1]; + NSString *contentRangeVal = [NSString stringWithFormat:@"bytes %@/%qu", rangeStr, contentLength]; + NSString *contentRangeStr = [NSString stringWithFormat:@"Content-Range: %@\r\n\r\n", contentRangeVal]; + + NSString *fullHeader = [startingBoundryStr stringByAppendingString:contentRangeStr]; + NSData *fullHeaderData = [fullHeader dataUsingEncoding:NSUTF8StringEncoding]; + + [ranges_headers addObject:fullHeaderData]; + + actualContentLength += [fullHeaderData length]; + actualContentLength += range.length; + } + + NSData *endingBoundryData = [endingBoundryStr dataUsingEncoding:NSUTF8StringEncoding]; + + actualContentLength += [endingBoundryData length]; + + NSString *contentLengthStr = [NSString stringWithFormat:@"%qu", actualContentLength]; + [response setHeaderField:@"Content-Length" value:contentLengthStr]; + + NSString *contentTypeStr = [NSString stringWithFormat:@"multipart/byteranges; boundary=%@", ranges_boundry]; + [response setHeaderField:@"Content-Type" value:contentTypeStr]; + + return response; +} + +/** + * Returns the chunk size line that must precede each chunk of data when using chunked transfer encoding. + * This consists of the size of the data, in hexadecimal, followed by a CRLF. +**/ +- (NSData *)chunkedTransferSizeLineForLength:(NSUInteger)length +{ + return [[NSString stringWithFormat:@"%lx\r\n", (unsigned long)length] dataUsingEncoding:NSUTF8StringEncoding]; +} + +/** + * Returns the data that signals the end of a chunked transfer. +**/ +- (NSData *)chunkedTransferFooter +{ + // Each data chunk is preceded by a size line (in hex and including a CRLF), + // followed by the data itself, followed by another CRLF. + // After every data chunk has been sent, a zero size line is sent, + // followed by optional footer (which are just more headers), + // and followed by a CRLF on a line by itself. + + return [@"\r\n0\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]; +} + +- (void)sendResponseHeadersAndBody +{ + if ([httpResponse respondsToSelector:@selector(delayResponseHeaders)]) + { + if ([httpResponse delayResponseHeaders]) + { + return; + } + } + + BOOL isChunked = NO; + + if ([httpResponse respondsToSelector:@selector(isChunked)]) + { + isChunked = [httpResponse isChunked]; + } + + // If a response is "chunked", this simply means the HTTPResponse object + // doesn't know the content-length in advance. + + UInt64 contentLength = 0; + + if (!isChunked) + { + contentLength = [httpResponse contentLength]; + } + + // Check for specific range request + NSString *rangeHeader = [request headerField:@"Range"]; + + BOOL isRangeRequest = NO; + + // If the response is "chunked" then we don't know the exact content-length. + // This means we'll be unable to process any range requests. + // This is because range requests might include a range like "give me the last 100 bytes" + + if (!isChunked && rangeHeader) + { + if ([self parseRangeRequest:rangeHeader withContentLength:contentLength]) + { + isRangeRequest = YES; + } + } + + HTTPMessage *response; + + if (!isRangeRequest) + { + // Create response + // Default status code: 200 - OK + NSInteger status = 200; + + if ([httpResponse respondsToSelector:@selector(status)]) + { + status = [httpResponse status]; + } + response = [[HTTPMessage alloc] initResponseWithStatusCode:status description:nil version:HTTPVersion1_1]; + + if (isChunked) + { + [response setHeaderField:@"Transfer-Encoding" value:@"chunked"]; + } + else + { + NSString *contentLengthStr = [NSString stringWithFormat:@"%qu", contentLength]; + [response setHeaderField:@"Content-Length" value:contentLengthStr]; + } + } + else + { + if ([ranges count] == 1) + { + response = [self newUniRangeResponse:contentLength]; + } + else + { + response = [self newMultiRangeResponse:contentLength]; + } + } + + BOOL isZeroLengthResponse = !isChunked && (contentLength == 0); + + // If they issue a 'HEAD' command, we don't have to include the file + // If they issue a 'GET' command, we need to include the file + + if ([[request method] isEqualToString:@"HEAD"] || isZeroLengthResponse) + { + NSData *responseData = [self preprocessResponse:response]; + [asyncSocket writeData:responseData withTimeout:TIMEOUT_WRITE_HEAD tag:HTTP_RESPONSE]; + + sentResponseHeaders = YES; + } + else + { + // Write the header response + NSData *responseData = [self preprocessResponse:response]; + [asyncSocket writeData:responseData withTimeout:TIMEOUT_WRITE_HEAD tag:HTTP_PARTIAL_RESPONSE_HEADER]; + + sentResponseHeaders = YES; + + // Now we need to send the body of the response + if (!isRangeRequest) + { + // Regular request + NSData *data = [httpResponse readDataOfLength:READ_CHUNKSIZE]; + + if ([data length] > 0) + { + [responseDataSizes addObject:[NSNumber numberWithUnsignedInteger:[data length]]]; + + if (isChunked) + { + NSData *chunkSize = [self chunkedTransferSizeLineForLength:[data length]]; + [asyncSocket writeData:chunkSize withTimeout:TIMEOUT_WRITE_HEAD tag:HTTP_CHUNKED_RESPONSE_HEADER]; + + [asyncSocket writeData:data withTimeout:TIMEOUT_WRITE_BODY tag:HTTP_CHUNKED_RESPONSE_BODY]; + + if ([httpResponse isDone]) + { + NSData *footer = [self chunkedTransferFooter]; + [asyncSocket writeData:footer withTimeout:TIMEOUT_WRITE_HEAD tag:HTTP_RESPONSE]; + } + else + { + NSData *footer = [GCDAsyncSocket CRLFData]; + [asyncSocket writeData:footer withTimeout:TIMEOUT_WRITE_HEAD tag:HTTP_CHUNKED_RESPONSE_FOOTER]; + } + } + else + { + long tag = [httpResponse isDone] ? HTTP_RESPONSE : HTTP_PARTIAL_RESPONSE_BODY; + [asyncSocket writeData:data withTimeout:TIMEOUT_WRITE_BODY tag:tag]; + } + } + } + else + { + // Client specified a byte range in request + + if ([ranges count] == 1) + { + // Client is requesting a single range + DDRange range = [[ranges objectAtIndex:0] ddrangeValue]; + + [httpResponse setOffset:range.location]; + + NSUInteger bytesToRead = range.length < READ_CHUNKSIZE ? (NSUInteger)range.length : READ_CHUNKSIZE; + + NSData *data = [httpResponse readDataOfLength:bytesToRead]; + + if ([data length] > 0) + { + [responseDataSizes addObject:[NSNumber numberWithUnsignedInteger:[data length]]]; + + long tag = [data length] == range.length ? HTTP_RESPONSE : HTTP_PARTIAL_RANGE_RESPONSE_BODY; + [asyncSocket writeData:data withTimeout:TIMEOUT_WRITE_BODY tag:tag]; + } + } + else + { + // Client is requesting multiple ranges + // We have to send each range using multipart/byteranges + + // Write range header + NSData *rangeHeaderData = [ranges_headers objectAtIndex:0]; + [asyncSocket writeData:rangeHeaderData withTimeout:TIMEOUT_WRITE_HEAD tag:HTTP_PARTIAL_RESPONSE_HEADER]; + + // Start writing range body + DDRange range = [[ranges objectAtIndex:0] ddrangeValue]; + + [httpResponse setOffset:range.location]; + + NSUInteger bytesToRead = range.length < READ_CHUNKSIZE ? (NSUInteger)range.length : READ_CHUNKSIZE; + + NSData *data = [httpResponse readDataOfLength:bytesToRead]; + + if ([data length] > 0) + { + [responseDataSizes addObject:[NSNumber numberWithUnsignedInteger:[data length]]]; + + [asyncSocket writeData:data withTimeout:TIMEOUT_WRITE_BODY tag:HTTP_PARTIAL_RANGES_RESPONSE_BODY]; + } + } + } + } + +} + +/** + * Returns the number of bytes of the http response body that are sitting in asyncSocket's write queue. + * + * We keep track of this information in order to keep our memory footprint low while + * working with asynchronous HTTPResponse objects. +**/ +- (NSUInteger)writeQueueSize +{ + NSUInteger result = 0; + + NSUInteger i; + for(i = 0; i < [responseDataSizes count]; i++) + { + result += [[responseDataSizes objectAtIndex:i] unsignedIntegerValue]; + } + + return result; +} + +/** + * Sends more data, if needed, without growing the write queue over its approximate size limit. + * The last chunk of the response body will be sent with a tag of HTTP_RESPONSE. + * + * This method should only be called for standard (non-range) responses. +**/ +- (void)continueSendingStandardResponseBody +{ + HTTPLogTrace(); + + // This method is called when either asyncSocket has finished writing one of the response data chunks, + // or when an asynchronous HTTPResponse object informs us that it has more available data for us to send. + // In the case of the asynchronous HTTPResponse, we don't want to blindly grab the new data, + // and shove it onto asyncSocket's write queue. + // Doing so could negatively affect the memory footprint of the application. + // Instead, we always ensure that we place no more than READ_CHUNKSIZE bytes onto the write queue. + // + // Note that this does not affect the rate at which the HTTPResponse object may generate data. + // The HTTPResponse is free to do as it pleases, and this is up to the application's developer. + // If the memory footprint is a concern, the developer creating the custom HTTPResponse object may freely + // use the calls to readDataOfLength as an indication to start generating more data. + // This provides an easy way for the HTTPResponse object to throttle its data allocation in step with the rate + // at which the socket is able to send it. + + NSUInteger writeQueueSize = [self writeQueueSize]; + + if(writeQueueSize >= READ_CHUNKSIZE) return; + + NSUInteger available = READ_CHUNKSIZE - writeQueueSize; + NSData *data = [httpResponse readDataOfLength:available]; + + if ([data length] > 0) + { + [responseDataSizes addObject:[NSNumber numberWithUnsignedInteger:[data length]]]; + + BOOL isChunked = NO; + + if ([httpResponse respondsToSelector:@selector(isChunked)]) + { + isChunked = [httpResponse isChunked]; + } + + if (isChunked) + { + NSData *chunkSize = [self chunkedTransferSizeLineForLength:[data length]]; + [asyncSocket writeData:chunkSize withTimeout:TIMEOUT_WRITE_HEAD tag:HTTP_CHUNKED_RESPONSE_HEADER]; + + [asyncSocket writeData:data withTimeout:TIMEOUT_WRITE_BODY tag:HTTP_CHUNKED_RESPONSE_BODY]; + + if([httpResponse isDone]) + { + NSData *footer = [self chunkedTransferFooter]; + [asyncSocket writeData:footer withTimeout:TIMEOUT_WRITE_HEAD tag:HTTP_RESPONSE]; + } + else + { + NSData *footer = [GCDAsyncSocket CRLFData]; + [asyncSocket writeData:footer withTimeout:TIMEOUT_WRITE_HEAD tag:HTTP_CHUNKED_RESPONSE_FOOTER]; + } + } + else + { + long tag = [httpResponse isDone] ? HTTP_RESPONSE : HTTP_PARTIAL_RESPONSE_BODY; + [asyncSocket writeData:data withTimeout:TIMEOUT_WRITE_BODY tag:tag]; + } + } +} + +/** + * Sends more data, if needed, without growing the write queue over its approximate size limit. + * The last chunk of the response body will be sent with a tag of HTTP_RESPONSE. + * + * This method should only be called for single-range responses. +**/ +- (void)continueSendingSingleRangeResponseBody +{ + HTTPLogTrace(); + + // This method is called when either asyncSocket has finished writing one of the response data chunks, + // or when an asynchronous response informs us that is has more available data for us to send. + // In the case of the asynchronous response, we don't want to blindly grab the new data, + // and shove it onto asyncSocket's write queue. + // Doing so could negatively affect the memory footprint of the application. + // Instead, we always ensure that we place no more than READ_CHUNKSIZE bytes onto the write queue. + // + // Note that this does not affect the rate at which the HTTPResponse object may generate data. + // The HTTPResponse is free to do as it pleases, and this is up to the application's developer. + // If the memory footprint is a concern, the developer creating the custom HTTPResponse object may freely + // use the calls to readDataOfLength as an indication to start generating more data. + // This provides an easy way for the HTTPResponse object to throttle its data allocation in step with the rate + // at which the socket is able to send it. + + NSUInteger writeQueueSize = [self writeQueueSize]; + + if(writeQueueSize >= READ_CHUNKSIZE) return; + + DDRange range = [[ranges objectAtIndex:0] ddrangeValue]; + + UInt64 offset = [httpResponse offset]; + UInt64 bytesRead = offset - range.location; + UInt64 bytesLeft = range.length - bytesRead; + + if (bytesLeft > 0) + { + NSUInteger available = READ_CHUNKSIZE - writeQueueSize; + NSUInteger bytesToRead = bytesLeft < available ? (NSUInteger)bytesLeft : available; + + NSData *data = [httpResponse readDataOfLength:bytesToRead]; + + if ([data length] > 0) + { + [responseDataSizes addObject:[NSNumber numberWithUnsignedInteger:[data length]]]; + + long tag = [data length] == bytesLeft ? HTTP_RESPONSE : HTTP_PARTIAL_RANGE_RESPONSE_BODY; + [asyncSocket writeData:data withTimeout:TIMEOUT_WRITE_BODY tag:tag]; + } + } +} + +/** + * Sends more data, if needed, without growing the write queue over its approximate size limit. + * The last chunk of the response body will be sent with a tag of HTTP_RESPONSE. + * + * This method should only be called for multi-range responses. +**/ +- (void)continueSendingMultiRangeResponseBody +{ + HTTPLogTrace(); + + // This method is called when either asyncSocket has finished writing one of the response data chunks, + // or when an asynchronous HTTPResponse object informs us that is has more available data for us to send. + // In the case of the asynchronous HTTPResponse, we don't want to blindly grab the new data, + // and shove it onto asyncSocket's write queue. + // Doing so could negatively affect the memory footprint of the application. + // Instead, we always ensure that we place no more than READ_CHUNKSIZE bytes onto the write queue. + // + // Note that this does not affect the rate at which the HTTPResponse object may generate data. + // The HTTPResponse is free to do as it pleases, and this is up to the application's developer. + // If the memory footprint is a concern, the developer creating the custom HTTPResponse object may freely + // use the calls to readDataOfLength as an indication to start generating more data. + // This provides an easy way for the HTTPResponse object to throttle its data allocation in step with the rate + // at which the socket is able to send it. + + NSUInteger writeQueueSize = [self writeQueueSize]; + + if(writeQueueSize >= READ_CHUNKSIZE) return; + + DDRange range = [[ranges objectAtIndex:rangeIndex] ddrangeValue]; + + UInt64 offset = [httpResponse offset]; + UInt64 bytesRead = offset - range.location; + UInt64 bytesLeft = range.length - bytesRead; + + if (bytesLeft > 0) + { + NSUInteger available = READ_CHUNKSIZE - writeQueueSize; + NSUInteger bytesToRead = bytesLeft < available ? (NSUInteger)bytesLeft : available; + + NSData *data = [httpResponse readDataOfLength:bytesToRead]; + + if ([data length] > 0) + { + [responseDataSizes addObject:[NSNumber numberWithUnsignedInteger:[data length]]]; + + [asyncSocket writeData:data withTimeout:TIMEOUT_WRITE_BODY tag:HTTP_PARTIAL_RANGES_RESPONSE_BODY]; + } + } + else + { + if (++rangeIndex < [ranges count]) + { + // Write range header + NSData *rangeHeader = [ranges_headers objectAtIndex:rangeIndex]; + [asyncSocket writeData:rangeHeader withTimeout:TIMEOUT_WRITE_HEAD tag:HTTP_PARTIAL_RESPONSE_HEADER]; + + // Start writing range body + range = [[ranges objectAtIndex:rangeIndex] ddrangeValue]; + + [httpResponse setOffset:range.location]; + + NSUInteger available = READ_CHUNKSIZE - writeQueueSize; + NSUInteger bytesToRead = range.length < available ? (NSUInteger)range.length : available; + + NSData *data = [httpResponse readDataOfLength:bytesToRead]; + + if ([data length] > 0) + { + [responseDataSizes addObject:[NSNumber numberWithUnsignedInteger:[data length]]]; + + [asyncSocket writeData:data withTimeout:TIMEOUT_WRITE_BODY tag:HTTP_PARTIAL_RANGES_RESPONSE_BODY]; + } + } + else + { + // We're not done yet - we still have to send the closing boundry tag + NSString *endingBoundryStr = [NSString stringWithFormat:@"\r\n--%@--\r\n", ranges_boundry]; + NSData *endingBoundryData = [endingBoundryStr dataUsingEncoding:NSUTF8StringEncoding]; + + [asyncSocket writeData:endingBoundryData withTimeout:TIMEOUT_WRITE_HEAD tag:HTTP_RESPONSE]; + } + } +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Responses +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * Returns an array of possible index pages. + * For example: {"index.html", "index.htm"} +**/ +- (NSArray *)directoryIndexFileNames +{ + HTTPLogTrace(); + + // Override me to support other index pages. + + return [NSArray arrayWithObjects:@"index.html", @"index.htm", nil]; +} + +- (NSString *)filePathForURI:(NSString *)path +{ + return [self filePathForURI:path allowDirectory:NO]; +} + +/** + * Converts relative URI path into full file-system path. +**/ +- (NSString *)filePathForURI:(NSString *)path allowDirectory:(BOOL)allowDirectory +{ + HTTPLogTrace(); + + // Override me to perform custom path mapping. + // For example you may want to use a default file other than index.html, or perhaps support multiple types. + + NSString *documentRoot = [config documentRoot]; + + // Part 0: Validate document root setting. + // + // If there is no configured documentRoot, + // then it makes no sense to try to return anything. + + if (documentRoot == nil) + { + HTTPLogWarn(@"%@[%p]: No configured document root", THIS_FILE, self); + return nil; + } + + // Part 1: Strip parameters from the url + // + // E.g.: /page.html?q=22&var=abc -> /page.html + + NSURL *docRoot = [NSURL fileURLWithPath:documentRoot isDirectory:YES]; + if (docRoot == nil) + { + HTTPLogWarn(@"%@[%p]: Document root is invalid file path", THIS_FILE, self); + return nil; + } + + NSString *relativePath = [[NSURL URLWithString:path relativeToURL:docRoot] relativePath]; + + // Part 2: Append relative path to document root (base path) + // + // E.g.: relativePath="/images/icon.png" + // documentRoot="/Users/robbie/Sites" + // fullPath="/Users/robbie/Sites/images/icon.png" + // + // We also standardize the path. + // + // E.g.: "Users/robbie/Sites/images/../index.html" -> "/Users/robbie/Sites/index.html" + + NSString *fullPath = [[documentRoot stringByAppendingPathComponent:relativePath] stringByStandardizingPath]; + + if ([relativePath isEqualToString:@"/"]) + { + fullPath = [fullPath stringByAppendingString:@"/"]; + } + + // Part 3: Prevent serving files outside the document root. + // + // Sneaky requests may include ".." in the path. + // + // E.g.: relativePath="../Documents/TopSecret.doc" + // documentRoot="/Users/robbie/Sites" + // fullPath="/Users/robbie/Documents/TopSecret.doc" + // + // E.g.: relativePath="../Sites_Secret/TopSecret.doc" + // documentRoot="/Users/robbie/Sites" + // fullPath="/Users/robbie/Sites_Secret/TopSecret" + + if (![documentRoot hasSuffix:@"/"]) + { + documentRoot = [documentRoot stringByAppendingString:@"/"]; + } + + if (![fullPath hasPrefix:documentRoot]) + { + HTTPLogWarn(@"%@[%p]: Request for file outside document root", THIS_FILE, self); + return nil; + } + + // Part 4: Search for index page if path is pointing to a directory + if (!allowDirectory) + { + BOOL isDir = NO; + if ([[NSFileManager defaultManager] fileExistsAtPath:fullPath isDirectory:&isDir] && isDir) + { + NSArray *indexFileNames = [self directoryIndexFileNames]; + + for (NSString *indexFileName in indexFileNames) + { + NSString *indexFilePath = [fullPath stringByAppendingPathComponent:indexFileName]; + + if ([[NSFileManager defaultManager] fileExistsAtPath:indexFilePath isDirectory:&isDir] && !isDir) + { + return indexFilePath; + } + } + + // No matching index files found in directory + return nil; + } + } + + return fullPath; +} + +/** + * This method is called to get a response for a request. + * You may return any object that adopts the HTTPResponse protocol. + * The HTTPServer comes with two such classes: HTTPFileResponse and HTTPDataResponse. + * HTTPFileResponse is a wrapper for an NSFileHandle object, and is the preferred way to send a file response. + * HTTPDataResponse is a wrapper for an NSData object, and may be used to send a custom response. +**/ +- (NSObject *)httpResponseForMethod:(NSString *)method URI:(NSString *)path +{ + HTTPLogTrace(); + + // Override me to provide custom responses. + + NSString *filePath = [self filePathForURI:path allowDirectory:NO]; + + BOOL isDir = NO; + + if (filePath && [[NSFileManager defaultManager] fileExistsAtPath:filePath isDirectory:&isDir] && !isDir) + { + return [[HTTPFileResponse alloc] initWithFilePath:filePath forConnection:self]; + + // Use me instead for asynchronous file IO. + // Generally better for larger files. + + // return [[[HTTPAsyncFileResponse alloc] initWithFilePath:filePath forConnection:self] autorelease]; + } + + return nil; +} + +- (WebSocket *)webSocketForURI:(NSString *)path +{ + HTTPLogTrace(); + + // Override me to provide custom WebSocket responses. + // To do so, simply override the base WebSocket implementation, and add your custom functionality. + // Then return an instance of your custom WebSocket here. + // + // For example: + // + // if ([path isEqualToString:@"/myAwesomeWebSocketStream"]) + // { + // return [[[MyWebSocket alloc] initWithRequest:request socket:asyncSocket] autorelease]; + // } + // + // return [super webSocketForURI:path]; + + return nil; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Uploads +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * This method is called after receiving all HTTP headers, but before reading any of the request body. +**/ +- (void)prepareForBodyWithSize:(UInt64)contentLength +{ + // Override me to allocate buffers, file handles, etc. +} + +/** + * This method is called to handle data read from a POST / PUT. + * The given data is part of the request body. +**/ +- (void)processBodyData:(NSData *)postDataChunk +{ + // Override me to do something useful with a POST / PUT. + // If the post is small, such as a simple form, you may want to simply append the data to the request. + // If the post is big, such as a file upload, you may want to store the file to disk. + // + // Remember: In order to support LARGE POST uploads, the data is read in chunks. + // This prevents a 50 MB upload from being stored in RAM. + // The size of the chunks are limited by the POST_CHUNKSIZE definition. + // Therefore, this method may be called multiple times for the same POST request. +} + +/** + * This method is called after the request body has been fully read but before the HTTP request is processed. +**/ +- (void)finishBody +{ + // Override me to perform any final operations on an upload. + // For example, if you were saving the upload to disk this would be + // the hook to flush any pending data to disk and maybe close the file. +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Errors +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * Called if the HTML version is other than what is supported +**/ +- (void)handleVersionNotSupported:(NSString *)version +{ + // Override me for custom error handling of unsupported http version responses + // If you simply want to add a few extra header fields, see the preprocessErrorResponse: method. + // You can also use preprocessErrorResponse: to add an optional HTML body. + + HTTPLogWarn(@"HTTP Server: Error 505 - Version Not Supported: %@ (%@)", version, [self requestURI]); + + HTTPMessage *response = [[HTTPMessage alloc] initResponseWithStatusCode:505 description:nil version:HTTPVersion1_1]; + [response setHeaderField:@"Content-Length" value:@"0"]; + + NSData *responseData = [self preprocessErrorResponse:response]; + [asyncSocket writeData:responseData withTimeout:TIMEOUT_WRITE_ERROR tag:HTTP_RESPONSE]; + +} + +/** + * Called if the authentication information was required and absent, or if authentication failed. +**/ +- (void)handleAuthenticationFailed +{ + // Override me for custom handling of authentication challenges + // If you simply want to add a few extra header fields, see the preprocessErrorResponse: method. + // You can also use preprocessErrorResponse: to add an optional HTML body. + + HTTPLogInfo(@"HTTP Server: Error 401 - Unauthorized (%@)", [self requestURI]); + + // Status Code 401 - Unauthorized + HTTPMessage *response = [[HTTPMessage alloc] initResponseWithStatusCode:401 description:nil version:HTTPVersion1_1]; + [response setHeaderField:@"Content-Length" value:@"0"]; + + if ([self useDigestAccessAuthentication]) + { + [self addDigestAuthChallenge:response]; + } + else + { + [self addBasicAuthChallenge:response]; + } + + NSData *responseData = [self preprocessErrorResponse:response]; + [asyncSocket writeData:responseData withTimeout:TIMEOUT_WRITE_ERROR tag:HTTP_RESPONSE]; + +} + +/** + * Called if we receive some sort of malformed HTTP request. + * The data parameter is the invalid HTTP header line, including CRLF, as read from GCDAsyncSocket. + * The data parameter may also be nil if the request as a whole was invalid, such as a POST with no Content-Length. +**/ +- (void)handleInvalidRequest:(NSData *)data +{ + // Override me for custom error handling of invalid HTTP requests + // If you simply want to add a few extra header fields, see the preprocessErrorResponse: method. + // You can also use preprocessErrorResponse: to add an optional HTML body. + + HTTPLogWarn(@"HTTP Server: Error 400 - Bad Request (%@)", [self requestURI]); + + // Status Code 400 - Bad Request + HTTPMessage *response = [[HTTPMessage alloc] initResponseWithStatusCode:400 description:nil version:HTTPVersion1_1]; + [response setHeaderField:@"Content-Length" value:@"0"]; + [response setHeaderField:@"Connection" value:@"close"]; + + NSData *responseData = [self preprocessErrorResponse:response]; + [asyncSocket writeData:responseData withTimeout:TIMEOUT_WRITE_ERROR tag:HTTP_FINAL_RESPONSE]; + + + // Note: We used the HTTP_FINAL_RESPONSE tag to disconnect after the response is sent. + // We do this because we couldn't parse the request, + // so we won't be able to recover and move on to another request afterwards. + // In other words, we wouldn't know where the first request ends and the second request begins. +} + +/** + * Called if we receive a HTTP request with a method other than GET or HEAD. +**/ +- (void)handleUnknownMethod:(NSString *)method +{ + // Override me for custom error handling of 405 method not allowed responses. + // If you simply want to add a few extra header fields, see the preprocessErrorResponse: method. + // You can also use preprocessErrorResponse: to add an optional HTML body. + // + // See also: supportsMethod:atPath: + + HTTPLogWarn(@"HTTP Server: Error 405 - Method Not Allowed: %@ (%@)", method, [self requestURI]); + + // Status code 405 - Method Not Allowed + HTTPMessage *response = [[HTTPMessage alloc] initResponseWithStatusCode:405 description:nil version:HTTPVersion1_1]; + [response setHeaderField:@"Content-Length" value:@"0"]; + [response setHeaderField:@"Connection" value:@"close"]; + + NSData *responseData = [self preprocessErrorResponse:response]; + [asyncSocket writeData:responseData withTimeout:TIMEOUT_WRITE_ERROR tag:HTTP_FINAL_RESPONSE]; + + + // Note: We used the HTTP_FINAL_RESPONSE tag to disconnect after the response is sent. + // We do this because the method may include an http body. + // Since we can't be sure, we should close the connection. +} + +/** + * Called if we're unable to find the requested resource. +**/ +- (void)handleResourceNotFound +{ + // Override me for custom error handling of 404 not found responses + // If you simply want to add a few extra header fields, see the preprocessErrorResponse: method. + // You can also use preprocessErrorResponse: to add an optional HTML body. + + HTTPLogInfo(@"HTTP Server: Error 404 - Not Found (%@)", [self requestURI]); + + // Status Code 404 - Not Found + HTTPMessage *response = [[HTTPMessage alloc] initResponseWithStatusCode:404 description:nil version:HTTPVersion1_1]; + [response setHeaderField:@"Content-Length" value:@"0"]; + + NSData *responseData = [self preprocessErrorResponse:response]; + [asyncSocket writeData:responseData withTimeout:TIMEOUT_WRITE_ERROR tag:HTTP_RESPONSE]; + +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Headers +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * Gets the current date and time, formatted properly (according to RFC) for insertion into an HTTP header. +**/ +- (NSString *)dateAsString:(NSDate *)date +{ + // From Apple's Documentation (Data Formatting Guide -> Date Formatters -> Cache Formatters for Efficiency): + // + // "Creating a date formatter is not a cheap operation. If you are likely to use a formatter frequently, + // it is typically more efficient to cache a single instance than to create and dispose of multiple instances. + // One approach is to use a static variable." + // + // This was discovered to be true in massive form via issue #46: + // + // "Was doing some performance benchmarking using instruments and httperf. Using this single optimization + // I got a 26% speed improvement - from 1000req/sec to 3800req/sec. Not insignificant. + // The culprit? Why, NSDateFormatter, of course!" + // + // Thus, we are using a static NSDateFormatter here. + + static NSDateFormatter *df; + + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + + // Example: Sun, 06 Nov 1994 08:49:37 GMT + + df = [[NSDateFormatter alloc] init]; + [df setFormatterBehavior:NSDateFormatterBehavior10_4]; + [df setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]]; + [df setDateFormat:@"EEE, dd MMM y HH:mm:ss 'GMT'"]; + [df setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]]; + + // For some reason, using zzz in the format string produces GMT+00:00 + }); + + return [df stringFromDate:date]; +} + +/** + * This method is called immediately prior to sending the response headers. + * This method adds standard header fields, and then converts the response to an NSData object. +**/ +- (NSData *)preprocessResponse:(HTTPMessage *)response +{ + HTTPLogTrace(); + + // Override me to customize the response headers + // You'll likely want to add your own custom headers, and then return [super preprocessResponse:response] + + // Add standard headers + NSString *now = [self dateAsString:[NSDate date]]; + [response setHeaderField:@"Date" value:now]; + + // Add server capability headers + [response setHeaderField:@"Accept-Ranges" value:@"bytes"]; + + // Add optional response headers + if ([httpResponse respondsToSelector:@selector(httpHeaders)]) + { + NSDictionary *responseHeaders = [httpResponse httpHeaders]; + + NSEnumerator *keyEnumerator = [responseHeaders keyEnumerator]; + NSString *key; + + while ((key = [keyEnumerator nextObject])) + { + NSString *value = [responseHeaders objectForKey:key]; + + [response setHeaderField:key value:value]; + } + } + + return [response messageData]; +} + +/** + * This method is called immediately prior to sending the response headers (for an error). + * This method adds standard header fields, and then converts the response to an NSData object. +**/ +- (NSData *)preprocessErrorResponse:(HTTPMessage *)response +{ + HTTPLogTrace(); + + // Override me to customize the error response headers + // You'll likely want to add your own custom headers, and then return [super preprocessErrorResponse:response] + // + // Notes: + // You can use [response statusCode] to get the type of error. + // You can use [response setBody:data] to add an optional HTML body. + // If you add a body, don't forget to update the Content-Length. + // + // if ([response statusCode] == 404) + // { + // NSString *msg = @"Error 404 - Not Found"; + // NSData *msgData = [msg dataUsingEncoding:NSUTF8StringEncoding]; + // + // [response setBody:msgData]; + // + // NSString *contentLengthStr = [NSString stringWithFormat:@"%lu", (unsigned long)[msgData length]]; + // [response setHeaderField:@"Content-Length" value:contentLengthStr]; + // } + + // Add standard headers + NSString *now = [self dateAsString:[NSDate date]]; + [response setHeaderField:@"Date" value:now]; + + // Add server capability headers + [response setHeaderField:@"Accept-Ranges" value:@"bytes"]; + + // Add optional response headers + if ([httpResponse respondsToSelector:@selector(httpHeaders)]) + { + NSDictionary *responseHeaders = [httpResponse httpHeaders]; + + NSEnumerator *keyEnumerator = [responseHeaders keyEnumerator]; + NSString *key; + + while((key = [keyEnumerator nextObject])) + { + NSString *value = [responseHeaders objectForKey:key]; + + [response setHeaderField:key value:value]; + } + } + + return [response messageData]; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark GCDAsyncSocket Delegate +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * This method is called after the socket has successfully read data from the stream. + * Remember that this method will only be called after the socket reaches a CRLF, or after it's read the proper length. +**/ +- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData*)data withTag:(long)tag +{ + if (tag == HTTP_REQUEST_HEADER) + { + // Append the header line to the http message + BOOL result = [request appendData:data]; + if (!result) + { + HTTPLogWarn(@"%@[%p]: Malformed request", THIS_FILE, self); + + [self handleInvalidRequest:data]; + } + else if (![request isHeaderComplete]) + { + // We don't have a complete header yet + // That is, we haven't yet received a CRLF on a line by itself, indicating the end of the header + if (++numHeaderLines > MAX_HEADER_LINES) + { + // Reached the maximum amount of header lines in a single HTTP request + // This could be an attempted DOS attack + [asyncSocket disconnect]; + + // Explictly return to ensure we don't do anything after the socket disconnect + return; + } + else + { + [asyncSocket readDataToData:[GCDAsyncSocket CRLFData] + withTimeout:TIMEOUT_READ_SUBSEQUENT_HEADER_LINE + maxLength:MAX_HEADER_LINE_LENGTH + tag:HTTP_REQUEST_HEADER]; + } + } + else + { + // We have an entire HTTP request header from the client + + // Extract the method (such as GET, HEAD, POST, etc) + NSString *method = [request method]; + + // Extract the uri (such as "/index.html") + NSString *uri = [self requestURI]; + + // Check for a Transfer-Encoding field + NSString *transferEncoding = [request headerField:@"Transfer-Encoding"]; + + // Check for a Content-Length field + NSString *contentLength = [request headerField:@"Content-Length"]; + + // Content-Length MUST be present for upload methods (such as POST or PUT) + // and MUST NOT be present for other methods. + BOOL expectsUpload = [self expectsRequestBodyFromMethod:method atPath:uri]; + + if (expectsUpload) + { + if (transferEncoding && ![transferEncoding caseInsensitiveCompare:@"Chunked"]) + { + requestContentLength = -1; + } + else + { + if (contentLength == nil) + { + HTTPLogWarn(@"%@[%p]: Method expects request body, but had no specified Content-Length", + THIS_FILE, self); + + [self handleInvalidRequest:nil]; + return; + } + + if (![NSNumber parseString:(NSString *)contentLength intoUInt64:&requestContentLength]) + { + HTTPLogWarn(@"%@[%p]: Unable to parse Content-Length header into a valid number", + THIS_FILE, self); + + [self handleInvalidRequest:nil]; + return; + } + } + } + else + { + if (contentLength != nil) + { + // Received Content-Length header for method not expecting an upload. + // This better be zero... + + if (![NSNumber parseString:(NSString *)contentLength intoUInt64:&requestContentLength]) + { + HTTPLogWarn(@"%@[%p]: Unable to parse Content-Length header into a valid number", + THIS_FILE, self); + + [self handleInvalidRequest:nil]; + return; + } + + if (requestContentLength > 0) + { + HTTPLogWarn(@"%@[%p]: Method not expecting request body had non-zero Content-Length", + THIS_FILE, self); + + [self handleInvalidRequest:nil]; + return; + } + } + + requestContentLength = 0; + requestContentLengthReceived = 0; + } + + // Check to make sure the given method is supported + if (![self supportsMethod:method atPath:uri]) + { + // The method is unsupported - either in general, or for this specific request + // Send a 405 - Method not allowed response + [self handleUnknownMethod:method]; + return; + } + + if (expectsUpload) + { + // Reset the total amount of data received for the upload + requestContentLengthReceived = 0; + + // Prepare for the upload + [self prepareForBodyWithSize:requestContentLength]; + + if (requestContentLength > 0) + { + // Start reading the request body + if (requestContentLength == -1) + { + // Chunked transfer + + [asyncSocket readDataToData:[GCDAsyncSocket CRLFData] + withTimeout:TIMEOUT_READ_BODY + maxLength:MAX_CHUNK_LINE_LENGTH + tag:HTTP_REQUEST_CHUNK_SIZE]; + } + else + { + NSUInteger bytesToRead; + if (requestContentLength < POST_CHUNKSIZE) + bytesToRead = (NSUInteger)requestContentLength; + else + bytesToRead = POST_CHUNKSIZE; + + [asyncSocket readDataToLength:bytesToRead + withTimeout:TIMEOUT_READ_BODY + tag:HTTP_REQUEST_BODY]; + } + } + else + { + // Empty upload + [self finishBody]; + [self replyToHTTPRequest]; + } + } + else + { + // Now we need to reply to the request + [self replyToHTTPRequest]; + } + } + } + else + { + BOOL doneReadingRequest = NO; + + // A chunked message body contains a series of chunks, + // followed by a line with "0" (zero), + // followed by optional footers (just like headers), + // and a blank line. + // + // Each chunk consists of two parts: + // + // 1. A line with the size of the chunk data, in hex, + // possibly followed by a semicolon and extra parameters you can ignore (none are currently standard), + // and ending with CRLF. + // 2. The data itself, followed by CRLF. + // + // Part 1 is represented by HTTP_REQUEST_CHUNK_SIZE + // Part 2 is represented by HTTP_REQUEST_CHUNK_DATA and HTTP_REQUEST_CHUNK_TRAILER + // where the trailer is the CRLF that follows the data. + // + // The optional footers and blank line are represented by HTTP_REQUEST_CHUNK_FOOTER. + + if (tag == HTTP_REQUEST_CHUNK_SIZE) + { + // We have just read in a line with the size of the chunk data, in hex, + // possibly followed by a semicolon and extra parameters that can be ignored, + // and ending with CRLF. + + NSString *sizeLine = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; + + errno = 0; // Reset errno before calling strtoull() to ensure it is always zero on success + requestChunkSize = (UInt64)strtoull([sizeLine UTF8String], NULL, 16); + requestChunkSizeReceived = 0; + + if (errno != 0) + { + HTTPLogWarn(@"%@[%p]: Method expects chunk size, but received something else", THIS_FILE, self); + + [self handleInvalidRequest:nil]; + return; + } + + if (requestChunkSize > 0) + { + NSUInteger bytesToRead; + bytesToRead = (requestChunkSize < POST_CHUNKSIZE) ? (NSUInteger)requestChunkSize : POST_CHUNKSIZE; + + [asyncSocket readDataToLength:bytesToRead + withTimeout:TIMEOUT_READ_BODY + tag:HTTP_REQUEST_CHUNK_DATA]; + } + else + { + // This is the "0" (zero) line, + // which is to be followed by optional footers (just like headers) and finally a blank line. + + [asyncSocket readDataToData:[GCDAsyncSocket CRLFData] + withTimeout:TIMEOUT_READ_BODY + maxLength:MAX_HEADER_LINE_LENGTH + tag:HTTP_REQUEST_CHUNK_FOOTER]; + } + + return; + } + else if (tag == HTTP_REQUEST_CHUNK_DATA) + { + // We just read part of the actual data. + + requestContentLengthReceived += [data length]; + requestChunkSizeReceived += [data length]; + + [self processBodyData:data]; + + UInt64 bytesLeft = requestChunkSize - requestChunkSizeReceived; + if (bytesLeft > 0) + { + NSUInteger bytesToRead = (bytesLeft < POST_CHUNKSIZE) ? (NSUInteger)bytesLeft : POST_CHUNKSIZE; + + [asyncSocket readDataToLength:bytesToRead + withTimeout:TIMEOUT_READ_BODY + tag:HTTP_REQUEST_CHUNK_DATA]; + } + else + { + // We've read in all the data for this chunk. + // The data is followed by a CRLF, which we need to read (and basically ignore) + + [asyncSocket readDataToLength:2 + withTimeout:TIMEOUT_READ_BODY + tag:HTTP_REQUEST_CHUNK_TRAILER]; + } + + return; + } + else if (tag == HTTP_REQUEST_CHUNK_TRAILER) + { + // This should be the CRLF following the data. + // Just ensure it's a CRLF. + + if (![data isEqualToData:[GCDAsyncSocket CRLFData]]) + { + HTTPLogWarn(@"%@[%p]: Method expects chunk trailer, but is missing", THIS_FILE, self); + + [self handleInvalidRequest:nil]; + return; + } + + // Now continue with the next chunk + + [asyncSocket readDataToData:[GCDAsyncSocket CRLFData] + withTimeout:TIMEOUT_READ_BODY + maxLength:MAX_CHUNK_LINE_LENGTH + tag:HTTP_REQUEST_CHUNK_SIZE]; + + } + else if (tag == HTTP_REQUEST_CHUNK_FOOTER) + { + if (++numHeaderLines > MAX_HEADER_LINES) + { + // Reached the maximum amount of header lines in a single HTTP request + // This could be an attempted DOS attack + [asyncSocket disconnect]; + + // Explictly return to ensure we don't do anything after the socket disconnect + return; + } + + if ([data length] > 2) + { + // We read in a footer. + // In the future we may want to append these to the request. + // For now we ignore, and continue reading the footers, waiting for the final blank line. + + [asyncSocket readDataToData:[GCDAsyncSocket CRLFData] + withTimeout:TIMEOUT_READ_BODY + maxLength:MAX_HEADER_LINE_LENGTH + tag:HTTP_REQUEST_CHUNK_FOOTER]; + } + else + { + doneReadingRequest = YES; + } + } + else // HTTP_REQUEST_BODY + { + // Handle a chunk of data from the POST body + + requestContentLengthReceived += [data length]; + [self processBodyData:data]; + + if (requestContentLengthReceived < requestContentLength) + { + // We're not done reading the post body yet... + + UInt64 bytesLeft = requestContentLength - requestContentLengthReceived; + + NSUInteger bytesToRead = bytesLeft < POST_CHUNKSIZE ? (NSUInteger)bytesLeft : POST_CHUNKSIZE; + + [asyncSocket readDataToLength:bytesToRead + withTimeout:TIMEOUT_READ_BODY + tag:HTTP_REQUEST_BODY]; + } + else + { + doneReadingRequest = YES; + } + } + + // Now that the entire body has been received, we need to reply to the request + + if (doneReadingRequest) + { + [self finishBody]; + [self replyToHTTPRequest]; + } + } +} + +/** + * This method is called after the socket has successfully written data to the stream. +**/ +- (void)socket:(GCDAsyncSocket *)sock didWriteDataWithTag:(long)tag +{ + BOOL doneSendingResponse = NO; + + if (tag == HTTP_PARTIAL_RESPONSE_BODY) + { + // Update the amount of data we have in asyncSocket's write queue + if ([responseDataSizes count] > 0) { + [responseDataSizes removeObjectAtIndex:0]; + } + + // We only wrote a part of the response - there may be more + [self continueSendingStandardResponseBody]; + } + else if (tag == HTTP_CHUNKED_RESPONSE_BODY) + { + // Update the amount of data we have in asyncSocket's write queue. + // This will allow asynchronous responses to continue sending more data. + if ([responseDataSizes count] > 0) { + [responseDataSizes removeObjectAtIndex:0]; + } + // Don't continue sending the response yet. + // The chunked footer that was sent after the body will tell us if we have more data to send. + } + else if (tag == HTTP_CHUNKED_RESPONSE_FOOTER) + { + // Normal chunked footer indicating we have more data to send (non final footer). + [self continueSendingStandardResponseBody]; + } + else if (tag == HTTP_PARTIAL_RANGE_RESPONSE_BODY) + { + // Update the amount of data we have in asyncSocket's write queue + if ([responseDataSizes count] > 0) { + [responseDataSizes removeObjectAtIndex:0]; + } + // We only wrote a part of the range - there may be more + [self continueSendingSingleRangeResponseBody]; + } + else if (tag == HTTP_PARTIAL_RANGES_RESPONSE_BODY) + { + // Update the amount of data we have in asyncSocket's write queue + if ([responseDataSizes count] > 0) { + [responseDataSizes removeObjectAtIndex:0]; + } + // We only wrote part of the range - there may be more, or there may be more ranges + [self continueSendingMultiRangeResponseBody]; + } + else if (tag == HTTP_RESPONSE || tag == HTTP_FINAL_RESPONSE) + { + // Update the amount of data we have in asyncSocket's write queue + if ([responseDataSizes count] > 0) + { + [responseDataSizes removeObjectAtIndex:0]; + } + + doneSendingResponse = YES; + } + + if (doneSendingResponse) + { + // Inform the http response that we're done + if ([httpResponse respondsToSelector:@selector(connectionDidClose)]) + { + [httpResponse connectionDidClose]; + } + + + if (tag == HTTP_FINAL_RESPONSE) + { + // Cleanup after the last request + [self finishResponse]; + + // Terminate the connection + [asyncSocket disconnect]; + + // Explictly return to ensure we don't do anything after the socket disconnects + return; + } + else + { + if ([self shouldDie]) + { + // Cleanup after the last request + // Note: Don't do this before calling shouldDie, as it needs the request object still. + [self finishResponse]; + + // The only time we should invoke [self die] is from socketDidDisconnect, + // or if the socket gets taken over by someone else like a WebSocket. + + [asyncSocket disconnect]; + } + else + { + // Cleanup after the last request + [self finishResponse]; + + // Prepare for the next request + + // If this assertion fails, it likely means you overrode the + // finishBody method and forgot to call [super finishBody]. + NSAssert(request == nil, @"Request not properly released in finishBody"); + + request = [[HTTPMessage alloc] initEmptyRequest]; + + numHeaderLines = 0; + sentResponseHeaders = NO; + + // And start listening for more requests + [self startReadingRequest]; + } + } + } +} + +/** + * Sent after the socket has been disconnected. +**/ +- (void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(NSError *)err +{ + HTTPLogTrace(); + + asyncSocket = nil; + + [self die]; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark HTTPResponse Notifications +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * This method may be called by asynchronous HTTPResponse objects. + * That is, HTTPResponse objects that return YES in their "- (BOOL)isAsynchronous" method. + * + * This informs us that the response object has generated more data that we may be able to send. +**/ +- (void)responseHasAvailableData:(NSObject *)sender +{ + HTTPLogTrace(); + + // We always dispatch this asynchronously onto our connectionQueue, + // even if the connectionQueue is the current queue. + // + // We do this to give the HTTPResponse classes the flexibility to call + // this method whenever they want, even from within a readDataOfLength method. + + dispatch_async(connectionQueue, ^{ @autoreleasepool { + + if (sender != httpResponse) + { + HTTPLogWarn(@"%@[%p]: %@ - Sender is not current httpResponse", THIS_FILE, self, THIS_METHOD); + return; + } + + if (!sentResponseHeaders) + { + [self sendResponseHeadersAndBody]; + } + else + { + if (ranges == nil) + { + [self continueSendingStandardResponseBody]; + } + else + { + if ([ranges count] == 1) + [self continueSendingSingleRangeResponseBody]; + else + [self continueSendingMultiRangeResponseBody]; + } + } + }}); +} + +/** + * This method is called if the response encounters some critical error, + * and it will be unable to fullfill the request. +**/ +- (void)responseDidAbort:(NSObject *)sender +{ + HTTPLogTrace(); + + // We always dispatch this asynchronously onto our connectionQueue, + // even if the connectionQueue is the current queue. + // + // We do this to give the HTTPResponse classes the flexibility to call + // this method whenever they want, even from within a readDataOfLength method. + + dispatch_async(connectionQueue, ^{ @autoreleasepool { + + if (sender != httpResponse) + { + HTTPLogWarn(@"%@[%p]: %@ - Sender is not current httpResponse", THIS_FILE, self, THIS_METHOD); + return; + } + + [asyncSocket disconnectAfterWriting]; + }}); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Post Request +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * This method is called after each response has been fully sent. + * Since a single connection may handle multiple request/responses, this method may be called multiple times. + * That is, it will be called after completion of each response. +**/ +- (void)finishResponse +{ + HTTPLogTrace(); + + // Override me if you want to perform any custom actions after a response has been fully sent. + // This is the place to release memory or resources associated with the last request. + // + // If you override this method, you should take care to invoke [super finishResponse] at some point. + + request = nil; + + httpResponse = nil; + + ranges = nil; + ranges_headers = nil; + ranges_boundry = nil; +} + +/** + * This method is called after each successful response has been fully sent. + * It determines whether the connection should stay open and handle another request. +**/ +- (BOOL)shouldDie +{ + HTTPLogTrace(); + + // Override me if you have any need to force close the connection. + // You may do so by simply returning YES. + // + // If you override this method, you should take care to fall through with [super shouldDie] + // instead of returning NO. + + + BOOL shouldDie = NO; + + NSString *version = [request version]; + if ([version isEqualToString:HTTPVersion1_1]) + { + // HTTP version 1.1 + // Connection should only be closed if request included "Connection: close" header + + NSString *connection = [request headerField:@"Connection"]; + + shouldDie = (connection && ([connection caseInsensitiveCompare:@"close"] == NSOrderedSame)); + } + else if ([version isEqualToString:HTTPVersion1_0]) + { + // HTTP version 1.0 + // Connection should be closed unless request included "Connection: Keep-Alive" header + + NSString *connection = [request headerField:@"Connection"]; + + if (connection == nil) + shouldDie = YES; + else + shouldDie = [connection caseInsensitiveCompare:@"Keep-Alive"] != NSOrderedSame; + } + + return shouldDie; +} + +- (void)die +{ + HTTPLogTrace(); + + // Override me if you want to perform any custom actions when a connection is closed. + // Then call [super die] when you're done. + // + // See also the finishResponse method. + // + // Important: There is a rare timing condition where this method might get invoked twice. + // If you override this method, you should be prepared for this situation. + + // Inform the http response that we're done + if ([httpResponse respondsToSelector:@selector(connectionDidClose)]) + { + [httpResponse connectionDidClose]; + } + + // Release the http response so we don't call it's connectionDidClose method again in our dealloc method + httpResponse = nil; + + // Post notification of dead connection + // This will allow our server to release us from its array of connections + [[NSNotificationCenter defaultCenter] postNotificationName:HTTPConnectionDidDieNotification object:self]; +} + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +@implementation HTTPConfig + +@synthesize server; +@synthesize documentRoot; +@synthesize queue; + +- (id)initWithServer:(HTTPServer *)aServer documentRoot:(NSString *)aDocumentRoot +{ + if ((self = [super init])) + { + server = aServer; + documentRoot = aDocumentRoot; + } + return self; +} + +- (id)initWithServer:(HTTPServer *)aServer documentRoot:(NSString *)aDocumentRoot queue:(dispatch_queue_t)q +{ + if ((self = [super init])) + { + server = aServer; + + documentRoot = [aDocumentRoot stringByStandardizingPath]; + if ([documentRoot hasSuffix:@"/"]) + { + documentRoot = [documentRoot stringByAppendingString:@"/"]; + } + + if (q) + { + queue = q; + #if !OS_OBJECT_USE_OBJC + dispatch_retain(queue); + #endif + } + } + return self; +} + +- (void)dealloc +{ + #if !OS_OBJECT_USE_OBJC + if (queue) dispatch_release(queue); + #endif +} + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/HTTPLogging.h b/YuMi/Tools/CocoaHttpServer/Core/HTTPLogging.h index 4810c0bb..55b7c6b2 100755 --- a/YuMi/Tools/CocoaHttpServer/Core/HTTPLogging.h +++ b/YuMi/Tools/CocoaHttpServer/Core/HTTPLogging.h @@ -1,76 +1,136 @@ - - -#import "BWGLumber.h" - - -#define HTTP_LOG_CONTEXT 80 - - -#define HTTP_LOG_FLAG_ERROR (1 << 0) -#define HTTP_LOG_FLAG_WARN (1 << 1) -#define HTTP_LOG_FLAG_INFO (1 << 2) -#define HTTP_LOG_FLAG_VERBOSE (1 << 3) - -#define HTTP_LOG_LEVEL_OFF 0 -#define HTTP_LOG_LEVEL_ERROR (HTTP_LOG_LEVEL_OFF | HTTP_LOG_FLAG_ERROR) -#define HTTP_LOG_LEVEL_WARN (HTTP_LOG_LEVEL_ERROR | HTTP_LOG_FLAG_WARN) -#define HTTP_LOG_LEVEL_INFO (HTTP_LOG_LEVEL_WARN | HTTP_LOG_FLAG_INFO) -#define HTTP_LOG_LEVEL_VERBOSE (HTTP_LOG_LEVEL_INFO | HTTP_LOG_FLAG_VERBOSE) - - -#define HTTP_LOG_FLAG_TRACE (1 << 4) - - -#define HTTP_LOG_ERROR (httpLogLevel & HTTP_LOG_FLAG_ERROR) -#define HTTP_LOG_WARN (httpLogLevel & HTTP_LOG_FLAG_WARN) -#define HTTP_LOG_INFO (httpLogLevel & HTTP_LOG_FLAG_INFO) -#define HTTP_LOG_VERBOSE (httpLogLevel & HTTP_LOG_FLAG_VERBOSE) -#define HTTP_LOG_TRACE (httpLogLevel & HTTP_LOG_FLAG_TRACE) - - -#define HTTP_LOG_ASYNC_ENABLED YES - -#define HTTP_LOG_ASYNC_ERROR ( NO && HTTP_LOG_ASYNC_ENABLED) -#define HTTP_LOG_ASYNC_WARN (YES && HTTP_LOG_ASYNC_ENABLED) -#define HTTP_LOG_ASYNC_INFO (YES && HTTP_LOG_ASYNC_ENABLED) -#define HTTP_LOG_ASYNC_VERBOSE (YES && HTTP_LOG_ASYNC_ENABLED) -#define HTTP_LOG_ASYNC_TRACE (YES && HTTP_LOG_ASYNC_ENABLED) - - -#define HTTPLogError(frmt, ...) LOG_OBJC_MAYBE(HTTP_LOG_ASYNC_ERROR, httpLogLevel, HTTP_LOG_FLAG_ERROR, \ - HTTP_LOG_CONTEXT, frmt, ##__VA_ARGS__) - -#define HTTPLogWarn(frmt, ...) LOG_OBJC_MAYBE(HTTP_LOG_ASYNC_WARN, httpLogLevel, HTTP_LOG_FLAG_WARN, \ - HTTP_LOG_CONTEXT, frmt, ##__VA_ARGS__) - -#define HTTPLogInfo(frmt, ...) LOG_OBJC_MAYBE(HTTP_LOG_ASYNC_INFO, httpLogLevel, HTTP_LOG_FLAG_INFO, \ - HTTP_LOG_CONTEXT, frmt, ##__VA_ARGS__) - -#define HTTPLogVerbose(frmt, ...) LOG_OBJC_MAYBE(HTTP_LOG_ASYNC_VERBOSE, httpLogLevel, HTTP_LOG_FLAG_VERBOSE, \ - HTTP_LOG_CONTEXT, frmt, ##__VA_ARGS__) - -#define HTTPLogTrace() LOG_OBJC_MAYBE(HTTP_LOG_ASYNC_TRACE, httpLogLevel, HTTP_LOG_FLAG_TRACE, \ - HTTP_LOG_CONTEXT, @"%@[%p]: %@", THIS_FILE, self, THIS_METHOD) - -#define HTTPLogTrace2(frmt, ...) LOG_OBJC_MAYBE(HTTP_LOG_ASYNC_TRACE, httpLogLevel, HTTP_LOG_FLAG_TRACE, \ - HTTP_LOG_CONTEXT, frmt, ##__VA_ARGS__) - - -#define HTTPLogCError(frmt, ...) LOG_C_MAYBE(HTTP_LOG_ASYNC_ERROR, httpLogLevel, HTTP_LOG_FLAG_ERROR, \ - HTTP_LOG_CONTEXT, frmt, ##__VA_ARGS__) - -#define HTTPLogCWarn(frmt, ...) LOG_C_MAYBE(HTTP_LOG_ASYNC_WARN, httpLogLevel, HTTP_LOG_FLAG_WARN, \ - HTTP_LOG_CONTEXT, frmt, ##__VA_ARGS__) - -#define HTTPLogCInfo(frmt, ...) LOG_C_MAYBE(HTTP_LOG_ASYNC_INFO, httpLogLevel, HTTP_LOG_FLAG_INFO, \ - HTTP_LOG_CONTEXT, frmt, ##__VA_ARGS__) - -#define HTTPLogCVerbose(frmt, ...) LOG_C_MAYBE(HTTP_LOG_ASYNC_VERBOSE, httpLogLevel, HTTP_LOG_FLAG_VERBOSE, \ - HTTP_LOG_CONTEXT, frmt, ##__VA_ARGS__) - -#define HTTPLogCTrace() LOG_C_MAYBE(HTTP_LOG_ASYNC_TRACE, httpLogLevel, HTTP_LOG_FLAG_TRACE, \ - HTTP_LOG_CONTEXT, @"%@[%p]: %@", THIS_FILE, self, __FUNCTION__) - -#define HTTPLogCTrace2(frmt, ...) LOG_C_MAYBE(HTTP_LOG_ASYNC_TRACE, httpLogLevel, HTTP_LOG_FLAG_TRACE, \ - HTTP_LOG_CONTEXT, frmt, ##__VA_ARGS__) - +/** + * In order to provide fast and flexible logging, this project uses Cocoa Lumberjack. + * + * The Google Code page has a wealth of documentation if you have any questions. + * https://github.com/robbiehanson/CocoaLumberjack + * + * Here's what you need to know concerning how logging is setup for CocoaHTTPServer: + * + * There are 4 log levels: + * - Error + * - Warning + * - Info + * - Verbose + * + * In addition to this, there is a Trace flag that can be enabled. + * When tracing is enabled, it spits out the methods that are being called. + * + * Please note that tracing is separate from the log levels. + * For example, one could set the log level to warning, and enable tracing. + * + * All logging is asynchronous, except errors. + * To use logging within your own custom files, follow the steps below. + * + * Step 1: + * Import this header in your implementation file: + * + * #import "HTTPLogging.h" + * + * Step 2: + * Define your logging level in your implementation file: + * + * // Log levels: off, error, warn, info, verbose + * static const int httpLogLevel = HTTP_LOG_LEVEL_VERBOSE; + * + * If you wish to enable tracing, you could do something like this: + * + * // Debug levels: off, error, warn, info, verbose + * static const int httpLogLevel = HTTP_LOG_LEVEL_INFO | HTTP_LOG_FLAG_TRACE; + * + * Step 3: + * Replace your NSLog statements with HTTPLog statements according to the severity of the message. + * + * NSLog(@"Fatal error, no dohickey found!"); -> HTTPLogError(@"Fatal error, no dohickey found!"); + * + * HTTPLog works exactly the same as NSLog. + * This means you can pass it multiple variables just like NSLog. +**/ + +#import "DDLog.h" + +// Define logging context for every log message coming from the HTTP server. +// The logging context can be extracted from the DDLogMessage from within the logging framework, +// which gives loggers, formatters, and filters the ability to optionally process them differently. + +#define HTTP_LOG_CONTEXT 80 + +// Configure log levels. + +#define HTTP_LOG_FLAG_ERROR (1 << 0) // 0...00001 +#define HTTP_LOG_FLAG_WARN (1 << 1) // 0...00010 +#define HTTP_LOG_FLAG_INFO (1 << 2) // 0...00100 +#define HTTP_LOG_FLAG_VERBOSE (1 << 3) // 0...01000 + +#define HTTP_LOG_LEVEL_OFF 0 // 0...00000 +#define HTTP_LOG_LEVEL_ERROR (HTTP_LOG_LEVEL_OFF | HTTP_LOG_FLAG_ERROR) // 0...00001 +#define HTTP_LOG_LEVEL_WARN (HTTP_LOG_LEVEL_ERROR | HTTP_LOG_FLAG_WARN) // 0...00011 +#define HTTP_LOG_LEVEL_INFO (HTTP_LOG_LEVEL_WARN | HTTP_LOG_FLAG_INFO) // 0...00111 +#define HTTP_LOG_LEVEL_VERBOSE (HTTP_LOG_LEVEL_INFO | HTTP_LOG_FLAG_VERBOSE) // 0...01111 + +// Setup fine grained logging. +// The first 4 bits are being used by the standard log levels (0 - 3) +// +// We're going to add tracing, but NOT as a log level. +// Tracing can be turned on and off independently of log level. + +#define HTTP_LOG_FLAG_TRACE (1 << 4) // 0...10000 + +// Setup the usual boolean macros. + +#define HTTP_LOG_ERROR (httpLogLevel & HTTP_LOG_FLAG_ERROR) +#define HTTP_LOG_WARN (httpLogLevel & HTTP_LOG_FLAG_WARN) +#define HTTP_LOG_INFO (httpLogLevel & HTTP_LOG_FLAG_INFO) +#define HTTP_LOG_VERBOSE (httpLogLevel & HTTP_LOG_FLAG_VERBOSE) +#define HTTP_LOG_TRACE (httpLogLevel & HTTP_LOG_FLAG_TRACE) + +// Configure asynchronous logging. +// We follow the default configuration, +// but we reserve a special macro to easily disable asynchronous logging for debugging purposes. + +#define HTTP_LOG_ASYNC_ENABLED YES + +#define HTTP_LOG_ASYNC_ERROR ( NO && HTTP_LOG_ASYNC_ENABLED) +#define HTTP_LOG_ASYNC_WARN (YES && HTTP_LOG_ASYNC_ENABLED) +#define HTTP_LOG_ASYNC_INFO (YES && HTTP_LOG_ASYNC_ENABLED) +#define HTTP_LOG_ASYNC_VERBOSE (YES && HTTP_LOG_ASYNC_ENABLED) +#define HTTP_LOG_ASYNC_TRACE (YES && HTTP_LOG_ASYNC_ENABLED) + +// Define logging primitives. + +#define HTTPLogError(frmt, ...) LOG_OBJC_MAYBE(HTTP_LOG_ASYNC_ERROR, httpLogLevel, HTTP_LOG_FLAG_ERROR, \ + HTTP_LOG_CONTEXT, frmt, ##__VA_ARGS__) + +#define HTTPLogWarn(frmt, ...) LOG_OBJC_MAYBE(HTTP_LOG_ASYNC_WARN, httpLogLevel, HTTP_LOG_FLAG_WARN, \ + HTTP_LOG_CONTEXT, frmt, ##__VA_ARGS__) + +#define HTTPLogInfo(frmt, ...) LOG_OBJC_MAYBE(HTTP_LOG_ASYNC_INFO, httpLogLevel, HTTP_LOG_FLAG_INFO, \ + HTTP_LOG_CONTEXT, frmt, ##__VA_ARGS__) + +#define HTTPLogVerbose(frmt, ...) LOG_OBJC_MAYBE(HTTP_LOG_ASYNC_VERBOSE, httpLogLevel, HTTP_LOG_FLAG_VERBOSE, \ + HTTP_LOG_CONTEXT, frmt, ##__VA_ARGS__) + +#define HTTPLogTrace() LOG_OBJC_MAYBE(HTTP_LOG_ASYNC_TRACE, httpLogLevel, HTTP_LOG_FLAG_TRACE, \ + HTTP_LOG_CONTEXT, @"%@[%p]: %@", THIS_FILE, self, THIS_METHOD) + +#define HTTPLogTrace2(frmt, ...) LOG_OBJC_MAYBE(HTTP_LOG_ASYNC_TRACE, httpLogLevel, HTTP_LOG_FLAG_TRACE, \ + HTTP_LOG_CONTEXT, frmt, ##__VA_ARGS__) + + +#define HTTPLogCError(frmt, ...) LOG_C_MAYBE(HTTP_LOG_ASYNC_ERROR, httpLogLevel, HTTP_LOG_FLAG_ERROR, \ + HTTP_LOG_CONTEXT, frmt, ##__VA_ARGS__) + +#define HTTPLogCWarn(frmt, ...) LOG_C_MAYBE(HTTP_LOG_ASYNC_WARN, httpLogLevel, HTTP_LOG_FLAG_WARN, \ + HTTP_LOG_CONTEXT, frmt, ##__VA_ARGS__) + +#define HTTPLogCInfo(frmt, ...) LOG_C_MAYBE(HTTP_LOG_ASYNC_INFO, httpLogLevel, HTTP_LOG_FLAG_INFO, \ + HTTP_LOG_CONTEXT, frmt, ##__VA_ARGS__) + +#define HTTPLogCVerbose(frmt, ...) LOG_C_MAYBE(HTTP_LOG_ASYNC_VERBOSE, httpLogLevel, HTTP_LOG_FLAG_VERBOSE, \ + HTTP_LOG_CONTEXT, frmt, ##__VA_ARGS__) + +#define HTTPLogCTrace() LOG_C_MAYBE(HTTP_LOG_ASYNC_TRACE, httpLogLevel, HTTP_LOG_FLAG_TRACE, \ + HTTP_LOG_CONTEXT, @"%@[%p]: %@", THIS_FILE, self, __FUNCTION__) + +#define HTTPLogCTrace2(frmt, ...) LOG_C_MAYBE(HTTP_LOG_ASYNC_TRACE, httpLogLevel, HTTP_LOG_FLAG_TRACE, \ + HTTP_LOG_CONTEXT, frmt, ##__VA_ARGS__) + diff --git a/YuMi/Tools/CocoaHttpServer/Core/HTTPMessage.h b/YuMi/Tools/CocoaHttpServer/Core/HTTPMessage.h new file mode 100755 index 00000000..68f97626 --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/HTTPMessage.h @@ -0,0 +1,48 @@ +/** + * The HTTPMessage class is a simple Objective-C wrapper around Apple's CFHTTPMessage class. +**/ + +#import + +#if TARGET_OS_IPHONE + // Note: You may need to add the CFNetwork Framework to your project + #import +#endif + +#define HTTPVersion1_0 ((NSString *)kCFHTTPVersion1_0) +#define HTTPVersion1_1 ((NSString *)kCFHTTPVersion1_1) + + +@interface HTTPMessage : NSObject +{ + CFHTTPMessageRef message; +} + +- (id)initEmptyRequest; + +- (id)initRequestWithMethod:(NSString *)method URL:(NSURL *)url version:(NSString *)version; + +- (id)initResponseWithStatusCode:(NSInteger)code description:(NSString *)description version:(NSString *)version; + +- (BOOL)appendData:(NSData *)data; + +- (BOOL)isHeaderComplete; + +- (NSString *)version; + +- (NSString *)method; +- (NSURL *)url; + +- (NSInteger)statusCode; + +- (NSDictionary *)allHeaderFields; +- (NSString *)headerField:(NSString *)headerField; + +- (void)setHeaderField:(NSString *)headerField value:(NSString *)headerFieldValue; + +- (NSData *)messageData; + +- (NSData *)body; +- (void)setBody:(NSData *)body; + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/HTTPMessage.m b/YuMi/Tools/CocoaHttpServer/Core/HTTPMessage.m new file mode 100755 index 00000000..e2c7e007 --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/HTTPMessage.m @@ -0,0 +1,113 @@ +#import "HTTPMessage.h" + +#if ! __has_feature(objc_arc) +#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). +#endif + + +@implementation HTTPMessage + +- (id)initEmptyRequest +{ + if ((self = [super init])) + { + message = CFHTTPMessageCreateEmpty(NULL, YES); + } + return self; +} + +- (id)initRequestWithMethod:(NSString *)method URL:(NSURL *)url version:(NSString *)version +{ + if ((self = [super init])) + { + message = CFHTTPMessageCreateRequest(NULL, + (__bridge CFStringRef)method, + (__bridge CFURLRef)url, + (__bridge CFStringRef)version); + } + return self; +} + +- (id)initResponseWithStatusCode:(NSInteger)code description:(NSString *)description version:(NSString *)version +{ + if ((self = [super init])) + { + message = CFHTTPMessageCreateResponse(NULL, + (CFIndex)code, + (__bridge CFStringRef)description, + (__bridge CFStringRef)version); + } + return self; +} + +- (void)dealloc +{ + if (message) + { + CFRelease(message); + } +} + +- (BOOL)appendData:(NSData *)data +{ + return CFHTTPMessageAppendBytes(message, [data bytes], [data length]); +} + +- (BOOL)isHeaderComplete +{ + return CFHTTPMessageIsHeaderComplete(message); +} + +- (NSString *)version +{ + return (__bridge_transfer NSString *)CFHTTPMessageCopyVersion(message); +} + +- (NSString *)method +{ + return (__bridge_transfer NSString *)CFHTTPMessageCopyRequestMethod(message); +} + +- (NSURL *)url +{ + return (__bridge_transfer NSURL *)CFHTTPMessageCopyRequestURL(message); +} + +- (NSInteger)statusCode +{ + return (NSInteger)CFHTTPMessageGetResponseStatusCode(message); +} + +- (NSDictionary *)allHeaderFields +{ + return (__bridge_transfer NSDictionary *)CFHTTPMessageCopyAllHeaderFields(message); +} + +- (NSString *)headerField:(NSString *)headerField +{ + return (__bridge_transfer NSString *)CFHTTPMessageCopyHeaderFieldValue(message, (__bridge CFStringRef)headerField); +} + +- (void)setHeaderField:(NSString *)headerField value:(NSString *)headerFieldValue +{ + CFHTTPMessageSetHeaderFieldValue(message, + (__bridge CFStringRef)headerField, + (__bridge CFStringRef)headerFieldValue); +} + +- (NSData *)messageData +{ + return (__bridge_transfer NSData *)CFHTTPMessageCopySerializedMessage(message); +} + +- (NSData *)body +{ + return (__bridge_transfer NSData *)CFHTTPMessageCopyBody(message); +} + +- (void)setBody:(NSData *)body +{ + CFHTTPMessageSetBody(message, (__bridge CFDataRef)body); +} + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/HTTPResponse.h b/YuMi/Tools/CocoaHttpServer/Core/HTTPResponse.h index a7a3a910..d72cd053 100755 --- a/YuMi/Tools/CocoaHttpServer/Core/HTTPResponse.h +++ b/YuMi/Tools/CocoaHttpServer/Core/HTTPResponse.h @@ -1,39 +1,149 @@ -#import - - -@protocol HTTPResponse - - -- (UInt64)contentLength; - - -- (UInt64)offset; -- (void)setOffset:(UInt64)offset; - - -- (NSData *)readDataOfLength:(NSUInteger)length; - - -- (BOOL)isDone; - -@optional - - -- (BOOL)delayRespondIntelligencers; - - -- (NSInteger)status; - - -- (NSDictionary *)httpIntelligencers; - - -- (BOOL)isChunked; - - -- (void)connectionDidConclude; - -@end - - - +#import + + +@protocol HTTPResponse + +/** + * Returns the length of the data in bytes. + * If you don't know the length in advance, implement the isChunked method and have it return YES. +**/ +- (UInt64)contentLength; + +/** + * The HTTP server supports range requests in order to allow things like + * file download resumption and optimized streaming on mobile devices. +**/ +- (UInt64)offset; +- (void)setOffset:(UInt64)offset; + +/** + * Returns the data for the response. + * You do not have to return data of the exact length that is given. + * You may optionally return data of a lesser length. + * However, you must never return data of a greater length than requested. + * Doing so could disrupt proper support for range requests. + * + * To support asynchronous responses, read the discussion at the bottom of this header. +**/ +- (NSData *)readDataOfLength:(NSUInteger)length; + +/** + * Should only return YES after the HTTPConnection has read all available data. + * That is, all data for the response has been returned to the HTTPConnection via the readDataOfLength method. +**/ +- (BOOL)isDone; + +@optional + +/** + * If you need time to calculate any part of the HTTP response headers (status code or header fields), + * this method allows you to delay sending the headers so that you may asynchronously execute the calculations. + * Simply implement this method and return YES until you have everything you need concerning the headers. + * + * This method ties into the asynchronous response architecture of the HTTPConnection. + * You should read the full discussion at the bottom of this header. + * + * If you return YES from this method, + * the HTTPConnection will wait for you to invoke the responseHasAvailableData method. + * After you do, the HTTPConnection will again invoke this method to see if the response is ready to send the headers. + * + * You should only delay sending the headers until you have everything you need concerning just the headers. + * Asynchronously generating the body of the response is not an excuse to delay sending the headers. + * Instead you should tie into the asynchronous response architecture, and use techniques such as the isChunked method. + * + * Important: You should read the discussion at the bottom of this header. +**/ +- (BOOL)delayResponseHeaders; + +/** + * Status code for response. + * Allows for responses such as redirect (301), etc. +**/ +- (NSInteger)status; + +/** + * If you want to add any extra HTTP headers to the response, + * simply return them in a dictionary in this method. +**/ +- (NSDictionary *)httpHeaders; + +/** + * If you don't know the content-length in advance, + * implement this method in your custom response class and return YES. + * + * Important: You should read the discussion at the bottom of this header. +**/ +- (BOOL)isChunked; + +/** + * This method is called from the HTTPConnection class when the connection is closed, + * or when the connection is finished with the response. + * If your response is asynchronous, you should implement this method so you know not to + * invoke any methods on the HTTPConnection after this method is called (as the connection may be deallocated). +**/ +- (void)connectionDidClose; + +@end + + +/** + * Important notice to those implementing custom asynchronous and/or chunked responses: + * + * HTTPConnection supports asynchronous responses. All you have to do in your custom response class is + * asynchronously generate the response, and invoke HTTPConnection's responseHasAvailableData method. + * You don't have to wait until you have all of the response ready to invoke this method. For example, if you + * generate the response in incremental chunks, you could call responseHasAvailableData after generating + * each chunk. Please see the HTTPAsyncFileResponse class for an example of how to do this. + * + * The normal flow of events for an HTTPConnection while responding to a request is like this: + * - Send http resopnse headers + * - Get data from response via readDataOfLength method. + * - Add data to asyncSocket's write queue. + * - Wait for asyncSocket to notify it that the data has been sent. + * - Get more data from response via readDataOfLength method. + * - ... continue this cycle until the entire response has been sent. + * + * With an asynchronous response, the flow is a little different. + * + * First the HTTPResponse is given the opportunity to postpone sending the HTTP response headers. + * This allows the response to asynchronously execute any code needed to calculate a part of the header. + * An example might be the response needs to generate some custom header fields, + * or perhaps the response needs to look for a resource on network-attached storage. + * Since the network-attached storage may be slow, the response doesn't know whether to send a 200 or 404 yet. + * In situations such as this, the HTTPResponse simply implements the delayResponseHeaders method and returns YES. + * After returning YES from this method, the HTTPConnection will wait until the response invokes its + * responseHasAvailableData method. After this occurs, the HTTPConnection will again query the delayResponseHeaders + * method to see if the response is ready to send the headers. + * This cycle will continue until the delayResponseHeaders method returns NO. + * + * You should only delay sending the response headers until you have everything you need concerning just the headers. + * Asynchronously generating the body of the response is not an excuse to delay sending the headers. + * + * After the response headers have been sent, the HTTPConnection calls your readDataOfLength method. + * You may or may not have any available data at this point. If you don't, then simply return nil. + * You should later invoke HTTPConnection's responseHasAvailableData when you have data to send. + * + * You don't have to keep track of when you return nil in the readDataOfLength method, or how many times you've invoked + * responseHasAvailableData. Just simply call responseHasAvailableData whenever you've generated new data, and + * return nil in your readDataOfLength whenever you don't have any available data in the requested range. + * HTTPConnection will automatically detect when it should be requesting new data and will act appropriately. + * + * It's important that you also keep in mind that the HTTP server supports range requests. + * The setOffset method is mandatory, and should not be ignored. + * Make sure you take into account the offset within the readDataOfLength method. + * You should also be aware that the HTTPConnection automatically sorts any range requests. + * So if your setOffset method is called with a value of 100, then you can safely release bytes 0-99. + * + * HTTPConnection can also help you keep your memory footprint small. + * Imagine you're dynamically generating a 10 MB response. You probably don't want to load all this data into + * RAM, and sit around waiting for HTTPConnection to slowly send it out over the network. All you need to do + * is pay attention to when HTTPConnection requests more data via readDataOfLength. This is because HTTPConnection + * will never allow asyncSocket's write queue to get much bigger than READ_CHUNKSIZE bytes. You should + * consider how you might be able to take advantage of this fact to generate your asynchronous response on demand, + * while at the same time keeping your memory footprint small, and your application lightning fast. + * + * If you don't know the content-length in advanced, you should also implement the isChunked method. + * This means the response will not include a Content-Length header, and will instead use "Transfer-Encoding: chunked". + * There's a good chance that if your response is asynchronous and dynamic, it's also chunked. + * If your response is chunked, you don't need to worry about range requests. +**/ diff --git a/YuMi/Tools/CocoaHttpServer/Core/HTTPServer.h b/YuMi/Tools/CocoaHttpServer/Core/HTTPServer.h new file mode 100755 index 00000000..e907389b --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/HTTPServer.h @@ -0,0 +1,215 @@ +#import +#import "MyHTTPConnection.h" +@class GCDAsyncSocket; +@class WebSocket; + +#if TARGET_OS_IPHONE + #if __IPHONE_OS_VERSION_MIN_REQUIRED >= 40000 // iPhone 4.0 + #define IMPLEMENTED_PROTOCOLS + #else + #define IMPLEMENTED_PROTOCOLS + #endif +#else + #if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 // Mac OS X 10.6 + #define IMPLEMENTED_PROTOCOLS + #else + #define IMPLEMENTED_PROTOCOLS + #endif +#endif + + +@interface HTTPServer : NSObject IMPLEMENTED_PROTOCOLS +{ + // Underlying asynchronous TCP/IP socket + GCDAsyncSocket *asyncSocket; + + // Dispatch queues + dispatch_queue_t serverQueue; + dispatch_queue_t connectionQueue; + void *IsOnServerQueueKey; + void *IsOnConnectionQueueKey; + + // HTTP server configuration + NSString *documentRoot; + Class connectionClass; + NSString *interface; + UInt32 port; + + // NSNetService and related variables + NSNetService *netService; + NSString *domain; + NSString *type; + NSString *name; + NSString *publishedName; + NSDictionary *txtRecordDictionary; + + // Connection management + NSMutableArray *connections; + NSMutableArray *webSockets; + NSLock *connectionsLock; + NSLock *webSocketsLock; + + BOOL isRunning; +} + +/** + * Specifies the document root to serve files from. + * For example, if you set this to "/Users//Sites", + * then it will serve files out of the local Sites directory (including subdirectories). + * + * The default value is nil. + * The default server configuration will not serve any files until this is set. + * + * If you change the documentRoot while the server is running, + * the change will affect future incoming http connections. +**/ +- (NSString *)documentRoot; +- (void)setDocumentRoot:(NSString *)value; + +/** + * The connection class is the class used to handle incoming HTTP connections. + * + * The default value is [HTTPConnection class]. + * You can override HTTPConnection, and then set this to [MyHTTPConnection class]. + * + * If you change the connectionClass while the server is running, + * the change will affect future incoming http connections. +**/ +- (Class)connectionClass; +- (void)setConnectionClass:(Class)value; + +/** + * Set what interface you'd like the server to listen on. + * By default this is nil, which causes the server to listen on all available interfaces like en1, wifi etc. + * + * The interface may be specified by name (e.g. "en1" or "lo0") or by IP address (e.g. "192.168.4.34"). + * You may also use the special strings "localhost" or "loopback" to specify that + * the socket only accept connections from the local machine. +**/ +- (NSString *)interface; +- (void)setInterface:(NSString *)value; + +/** + * The port number to run the HTTP server on. + * + * The default port number is zero, meaning the server will automatically use any available port. + * This is the recommended port value, as it avoids possible port conflicts with other applications. + * Technologies such as Bonjour can be used to allow other applications to automatically discover the port number. + * + * Note: As is common on most OS's, you need root privledges to bind to port numbers below 1024. + * + * You can change the port property while the server is running, but it won't affect the running server. + * To actually change the port the server is listening for connections on you'll need to restart the server. + * + * The listeningPort method will always return the port number the running server is listening for connections on. + * If the server is not running this method returns 0. +**/ +- (UInt32)port; +- (UInt32)listeningPort; +- (void)setPort:(UInt32)value; + +/** + * Bonjour domain for publishing the service. + * The default value is "local.". + * + * Note: Bonjour publishing requires you set a type. + * + * If you change the domain property after the bonjour service has already been published (server already started), + * you'll need to invoke the republishBonjour method to update the broadcasted bonjour service. +**/ +- (NSString *)domain; +- (void)setDomain:(NSString *)value; + +/** + * Bonjour name for publishing the service. + * The default value is "". + * + * If using an empty string ("") for the service name when registering, + * the system will automatically use the "Computer Name". + * Using an empty string will also handle name conflicts + * by automatically appending a digit to the end of the name. + * + * Note: Bonjour publishing requires you set a type. + * + * If you change the name after the bonjour service has already been published (server already started), + * you'll need to invoke the republishBonjour method to update the broadcasted bonjour service. + * + * The publishedName method will always return the actual name that was published via the bonjour service. + * If the service is not running this method returns nil. +**/ +- (NSString *)name; +- (NSString *)publishedName; +- (void)setName:(NSString *)value; + +/** + * Bonjour type for publishing the service. + * The default value is nil. + * The service will not be published via bonjour unless the type is set. + * + * If you wish to publish the service as a traditional HTTP server, you should set the type to be "_http._tcp.". + * + * If you change the type after the bonjour service has already been published (server already started), + * you'll need to invoke the republishBonjour method to update the broadcasted bonjour service. +**/ +- (NSString *)type; +- (void)setType:(NSString *)value; + +/** + * Republishes the service via bonjour if the server is running. + * If the service was not previously published, this method will publish it (if the server is running). +**/ +- (void)republishBonjour; + +/** + * +**/ +- (NSDictionary *)TXTRecordDictionary; +- (void)setTXTRecordDictionary:(NSDictionary *)dict; + +/** + * Attempts to starts the server on the configured port, interface, etc. + * + * If an error occurs, this method returns NO and sets the errPtr (if given). + * Otherwise returns YES on success. + * + * Some examples of errors that might occur: + * - You specified the server listen on a port which is already in use by another application. + * - You specified the server listen on a port number below 1024, which requires root priviledges. + * + * Code Example: + * + * NSError *err = nil; + * if (![httpServer start:&err]) + * { + * NSLog(@"Error starting http server: %@", err); + * } +**/ +- (BOOL)start:(NSError **)errPtr; + +/** + * Stops the server, preventing it from accepting any new connections. + * You may specify whether or not you want to close the existing client connections. + * + * The default stop method (with no arguments) will close any existing connections. (It invokes [self stop:NO]) +**/ +- (void)stop; +- (void)stop:(BOOL)keepExistingConnections; + +- (BOOL)isRunning; + +- (void)addWebSocket:(WebSocket *)ws; + +- (NSUInteger)numberOfHTTPConnections; +- (NSUInteger)numberOfWebSocketConnections; + +/** + Get the connections in the httpserver + + @return the connections with array + */ +- (NSMutableArray *)getConnectionsInServer; + +///添加代理使用 +@property (nonatomic,weak) UIViewController * viewcontroller; + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/HTTPServer.m b/YuMi/Tools/CocoaHttpServer/Core/HTTPServer.m new file mode 100755 index 00000000..533b481a --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/HTTPServer.m @@ -0,0 +1,781 @@ +#import "HTTPServer.h" +#import "GCDAsyncSocket.h" +#import "HTTPConnection.h" +#import "WebSocket.h" +#import "HTTPLogging.h" +#if ! __has_feature(objc_arc) +#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). +#endif + +// Log levels: off, error, warn, info, verbose +// Other flags: trace +static const int httpLogLevel = HTTP_LOG_LEVEL_INFO; // | HTTP_LOG_FLAG_TRACE; + +@interface HTTPServer (PrivateAPI) + +- (void)unpublishBonjour; +- (void)publishBonjour; + ++ (void)startBonjourThreadIfNeeded; ++ (void)performBonjourBlock:(dispatch_block_t)block; + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +@implementation HTTPServer + +/** + * Standard Constructor. + * Instantiates an HTTP server, but does not start it. +**/ +- (id)init +{ + if ((self = [super init])) + { + HTTPLogTrace(); + + // Setup underlying dispatch queues + serverQueue = dispatch_queue_create("HTTPServer", NULL); + connectionQueue = dispatch_queue_create("HTTPConnection", NULL); + + IsOnServerQueueKey = &IsOnServerQueueKey; + IsOnConnectionQueueKey = &IsOnConnectionQueueKey; + + void *nonNullUnusedPointer = (__bridge void *)self; // Whatever, just not null + + dispatch_queue_set_specific(serverQueue, IsOnServerQueueKey, nonNullUnusedPointer, NULL); + dispatch_queue_set_specific(connectionQueue, IsOnConnectionQueueKey, nonNullUnusedPointer, NULL); + + // Initialize underlying GCD based tcp socket + asyncSocket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:serverQueue]; + + // Use default connection class of HTTPConnection + connectionClass = [HTTPConnection self]; + + // By default bind on all available interfaces, en1, wifi etc + interface = nil; + + // Use a default port of 0 + // This will allow the kernel to automatically pick an open port for us + port = 0; + // port = 12306; + // Configure default values for bonjour service + + // Bonjour domain. Use the local domain by default + domain = @"local."; + + // If using an empty string ("") for the service name when registering, + // the system will automatically use the "Computer Name". + // Passing in an empty string will also handle name conflicts + // by automatically appending a digit to the end of the name. + name = @""; + + // Initialize arrays to hold all the HTTP and webSocket connections + connections = [[NSMutableArray alloc] init]; + webSockets = [[NSMutableArray alloc] init]; + + connectionsLock = [[NSLock alloc] init]; + webSocketsLock = [[NSLock alloc] init]; + + // Register for notifications of closed connections + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(connectionDidDie:) + name:HTTPConnectionDidDieNotification + object:nil]; + + // Register for notifications of closed websocket connections + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(webSocketDidDie:) + name:WebSocketDidDieNotification + object:nil]; + + isRunning = NO; + } + return self; +} + +/** + * Standard Deconstructor. + * Stops the server, and clients, and releases any resources connected with this instance. +**/ +- (void)dealloc +{ + HTTPLogTrace(); + + // Remove notification observer + [[NSNotificationCenter defaultCenter] removeObserver:self]; + + // Stop the server if it's running + [self stop]; + + // Release all instance variables + + #if !OS_OBJECT_USE_OBJC + dispatch_release(serverQueue); + dispatch_release(connectionQueue); + #endif + + [asyncSocket setDelegate:nil delegateQueue:NULL]; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Server Configuration +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * The document root is filesystem root for the webserver. + * Thus requests for /index.html will be referencing the index.html file within the document root directory. + * All file requests are relative to this document root. +**/ +- (NSString *)documentRoot +{ + __block NSString *result; + + dispatch_sync(serverQueue, ^{ + result = documentRoot; + }); + + return result; +} + +- (void)setDocumentRoot:(NSString *)value +{ + HTTPLogTrace(); + + // Document root used to be of type NSURL. + // Add type checking for early warning to developers upgrading from older versions. + + if (value && ![value isKindOfClass:[NSString class]]) + { + HTTPLogWarn(@"%@: %@ - Expecting NSString parameter, received %@ parameter", + THIS_FILE, THIS_METHOD, NSStringFromClass([value class])); + return; + } + + NSString *valueCopy = [value copy]; + + dispatch_async(serverQueue, ^{ + documentRoot = valueCopy; + }); + +} + +/** + * The connection class is the class that will be used to handle connections. + * That is, when a new connection is created, an instance of this class will be intialized. + * The default connection class is HTTPConnection. + * If you use a different connection class, it is assumed that the class extends HTTPConnection +**/ +- (Class)connectionClass +{ + __block Class result; + + dispatch_sync(serverQueue, ^{ + result = connectionClass; + }); + + return result; +} + +- (void)setConnectionClass:(Class)value +{ + HTTPLogTrace(); + + dispatch_async(serverQueue, ^{ + connectionClass = value; + }); +} + +/** + * What interface to bind the listening socket to. +**/ +- (NSString *)interface +{ + __block NSString *result; + + dispatch_sync(serverQueue, ^{ + result = interface; + }); + + return result; +} + +- (void)setInterface:(NSString *)value +{ + NSString *valueCopy = [value copy]; + + dispatch_async(serverQueue, ^{ + interface = valueCopy; + }); + +} + +/** + * The port to listen for connections on. + * By default this port is initially set to zero, which allows the kernel to pick an available port for us. + * After the HTTP server has started, the port being used may be obtained by this method. +**/ +- (UInt32)port +{ + __block UInt32 result; + + dispatch_sync(serverQueue, ^{ + result = port; + // result = 12306; + }); + + return result; +} + +- (UInt32)listeningPort +{ + __block UInt32 result; + + dispatch_sync(serverQueue, ^{ + if (isRunning) + result = [asyncSocket localPort]; + else + result = 0; + // result = 12306; + }); + + return result; +} + +- (void)setPort:(UInt32)value +{ + HTTPLogTrace(); + + dispatch_async(serverQueue, ^{ + port = value; + // port = 12306; + }); +} + +/** + * Domain on which to broadcast this service via Bonjour. + * The default domain is @"local". +**/ +- (NSString *)domain +{ + __block NSString *result; + + dispatch_sync(serverQueue, ^{ + result = domain; + }); + + return result; +} + +- (void)setDomain:(NSString *)value +{ + HTTPLogTrace(); + + NSString *valueCopy = [value copy]; + + dispatch_async(serverQueue, ^{ + domain = valueCopy; + }); + +} + +/** + * The name to use for this service via Bonjour. + * The default name is an empty string, + * which should result in the published name being the host name of the computer. +**/ +- (NSString *)name +{ + __block NSString *result; + + dispatch_sync(serverQueue, ^{ + result = name; + }); + + return result; +} + +- (NSString *)publishedName +{ + __block NSString *result; + + dispatch_sync(serverQueue, ^{ + + if (netService == nil) + { + result = nil; + } + else + { + + dispatch_block_t bonjourBlock = ^{ + result = [[netService name] copy]; + }; + + [[self class] performBonjourBlock:bonjourBlock]; + } + }); + + return result; +} + +- (void)setName:(NSString *)value +{ + NSString *valueCopy = [value copy]; + + dispatch_async(serverQueue, ^{ + name = valueCopy; + }); + +} + +/** + * The type of service to publish via Bonjour. + * No type is set by default, and one must be set in order for the service to be published. +**/ +- (NSString *)type +{ + __block NSString *result; + + dispatch_sync(serverQueue, ^{ + result = type; + }); + + return result; +} + +- (void)setType:(NSString *)value +{ + NSString *valueCopy = [value copy]; + + dispatch_async(serverQueue, ^{ + type = valueCopy; + }); + +} + +/** + * The extra data to use for this service via Bonjour. +**/ +- (NSDictionary *)TXTRecordDictionary +{ + __block NSDictionary *result; + + dispatch_sync(serverQueue, ^{ + result = txtRecordDictionary; + }); + + return result; +} + +- (void)setTXTRecordDictionary:(NSDictionary *)value +{ + HTTPLogTrace(); + + NSDictionary *valueCopy = [value copy]; + + dispatch_async(serverQueue, ^{ + + txtRecordDictionary = valueCopy; + + // Update the txtRecord of the netService if it has already been published + if (netService) + { + NSNetService *theNetService = netService; + NSData *txtRecordData = nil; + if (txtRecordDictionary) + txtRecordData = [NSNetService dataFromTXTRecordDictionary:txtRecordDictionary]; + + dispatch_block_t bonjourBlock = ^{ + [theNetService setTXTRecordData:txtRecordData]; + }; + + [[self class] performBonjourBlock:bonjourBlock]; + } + }); + +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Server Control +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +- (BOOL)start:(NSError **)errPtr +{ + HTTPLogTrace(); + + __block BOOL success = YES; + __block NSError *err = nil; + + dispatch_sync(serverQueue, ^{ @autoreleasepool { + // port = 12306; + success = [asyncSocket acceptOnInterface:interface port:port error:&err]; + if (success) + { + HTTPLogInfo(@"%@: Started HTTP server on port %hu", THIS_FILE, [asyncSocket localPort]); + //HTTPLogInfo(@"%@: Started HTTP server on port %d", THIS_FILE, 12306); + + isRunning = YES; + [self publishBonjour]; + } + else + { + HTTPLogError(@"%@: Failed to start HTTP Server: %@", THIS_FILE, err); + } + }}); + + if (errPtr) + *errPtr = err; + + return success; +} + +- (void)stop +{ + [self stop:NO]; +} + +- (void)stop:(BOOL)keepExistingConnections +{ + HTTPLogTrace(); + + dispatch_sync(serverQueue, ^{ @autoreleasepool { + + // First stop publishing the service via bonjour + [self unpublishBonjour]; + + // Stop listening / accepting incoming connections + [asyncSocket disconnect]; + isRunning = NO; + + if (!keepExistingConnections) + { + // Stop all HTTP connections the server owns + [connectionsLock lock]; + for (HTTPConnection *connection in connections) + { + [connection stop]; + } + [connections removeAllObjects]; + [connectionsLock unlock]; + + // Stop all WebSocket connections the server owns + [webSocketsLock lock]; + for (WebSocket *webSocket in webSockets) + { + [webSocket stop]; + } + [webSockets removeAllObjects]; + [webSocketsLock unlock]; + } + }}); +} + +- (BOOL)isRunning +{ + __block BOOL result; + + dispatch_sync(serverQueue, ^{ + result = isRunning; + }); + + return result; +} + +- (void)addWebSocket:(WebSocket *)ws +{ + [webSocketsLock lock]; + + HTTPLogTrace(); + [webSockets addObject:ws]; + + [webSocketsLock unlock]; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Server Status +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * Returns the number of http client connections that are currently connected to the server. +**/ +- (NSUInteger)numberOfHTTPConnections +{ + NSUInteger result = 0; + + [connectionsLock lock]; + result = [connections count]; + [connectionsLock unlock]; + + return result; +} + +/** + * Returns the number of websocket client connections that are currently connected to the server. +**/ +- (NSUInteger)numberOfWebSocketConnections +{ + NSUInteger result = 0; + + [webSocketsLock lock]; + result = [webSockets count]; + [webSocketsLock unlock]; + + return result; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Incoming Connections +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +- (HTTPConfig *)config +{ + // Override me if you want to provide a custom config to the new connection. + // + // Generally this involves overriding the HTTPConfig class to include any custom settings, + // and then having this method return an instance of 'MyHTTPConfig'. + + // Note: Think you can make the server faster by putting each connection on its own queue? + // Then benchmark it before and after and discover for yourself the shocking truth! + // + // Try the apache benchmark tool (already installed on your Mac): + // $ ab -n 1000 -c 1 http://localhost:/some_path.html + + return [[HTTPConfig alloc] initWithServer:self documentRoot:documentRoot queue:connectionQueue]; +} + +- (void)socket:(GCDAsyncSocket *)sock didAcceptNewSocket:(GCDAsyncSocket *)newSocket +{ + HTTPConnection *newConnection = (HTTPConnection *)[[connectionClass alloc] initWithAsyncSocket:newSocket + configuration:[self config]]; + ((MyHTTPConnection *)newConnection).delegate = self.viewcontroller; + [connectionsLock lock]; + [connections addObject:newConnection]; + [connectionsLock unlock]; + + [newConnection start]; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Bonjour +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +- (void)publishBonjour +{ + HTTPLogTrace(); + + NSAssert(dispatch_get_specific(IsOnServerQueueKey) != NULL, @"Must be on serverQueue"); + + if (type) + { + netService = [[NSNetService alloc] initWithDomain:domain type:type name:name port:[asyncSocket localPort]]; + // netService = [[NSNetService alloc] initWithDomain:domain type:type name:name port:12306]; + [netService setDelegate:self]; + + NSNetService *theNetService = netService; + NSData *txtRecordData = nil; + if (txtRecordDictionary) + txtRecordData = [NSNetService dataFromTXTRecordDictionary:txtRecordDictionary]; + + dispatch_block_t bonjourBlock = ^{ + + [theNetService removeFromRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes]; + [theNetService scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]; + [theNetService publish]; + + // Do not set the txtRecordDictionary prior to publishing!!! + // This will cause the OS to crash!!! + if (txtRecordData) + { + [theNetService setTXTRecordData:txtRecordData]; + } + }; + + [[self class] startBonjourThreadIfNeeded]; + [[self class] performBonjourBlock:bonjourBlock]; + } +} + +- (void)unpublishBonjour +{ + HTTPLogTrace(); + + NSAssert(dispatch_get_specific(IsOnServerQueueKey) != NULL, @"Must be on serverQueue"); + + if (netService) + { + NSNetService *theNetService = netService; + + dispatch_block_t bonjourBlock = ^{ + + [theNetService stop]; + }; + + [[self class] performBonjourBlock:bonjourBlock]; + + netService = nil; + } +} + +/** + * Republishes the service via bonjour if the server is running. + * If the service was not previously published, this method will publish it (if the server is running). +**/ +- (void)republishBonjour +{ + HTTPLogTrace(); + + dispatch_async(serverQueue, ^{ + + [self unpublishBonjour]; + [self publishBonjour]; + }); +} + +/** + * Called when our bonjour service has been successfully published. + * This method does nothing but output a log message telling us about the published service. +**/ +- (void)netServiceDidPublish:(NSNetService *)ns +{ + // Override me to do something here... + // + // Note: This method is invoked on our bonjour thread. + + HTTPLogInfo(@"Bonjour Service Published: domain(%@) type(%@) name(%@)", [ns domain], [ns type], [ns name]); +} + +/** + * Called if our bonjour service failed to publish itself. + * This method does nothing but output a log message telling us about the published service. +**/ +- (void)netService:(NSNetService *)ns didNotPublish:(NSDictionary *)errorDict +{ + // Override me to do something here... + // + // Note: This method in invoked on our bonjour thread. + + HTTPLogWarn(@"Failed to Publish Service: domain(%@) type(%@) name(%@) - %@", + [ns domain], [ns type], [ns name], errorDict); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Notifications +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * This method is automatically called when a notification of type HTTPConnectionDidDieNotification is posted. + * It allows us to remove the connection from our array. +**/ +- (void)connectionDidDie:(NSNotification *)notification +{ + // Note: This method is called on the connection queue that posted the notification + + [connectionsLock lock]; + + HTTPLogTrace(); + [connections removeObject:[notification object]]; + + [connectionsLock unlock]; +} + +/** + * This method is automatically called when a notification of type WebSocketDidDieNotification is posted. + * It allows us to remove the websocket from our array. +**/ +- (void)webSocketDidDie:(NSNotification *)notification +{ + // Note: This method is called on the connection queue that posted the notification + + [webSocketsLock lock]; + + HTTPLogTrace(); + [webSockets removeObject:[notification object]]; + + [webSocketsLock unlock]; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Bonjour Thread +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * NSNetService is runloop based, so it requires a thread with a runloop. + * This gives us two options: + * + * - Use the main thread + * - Setup our own dedicated thread + * + * Since we have various blocks of code that need to synchronously access the netservice objects, + * using the main thread becomes troublesome and a potential for deadlock. +**/ + +static NSThread *bonjourThread; + ++ (void)startBonjourThreadIfNeeded +{ + HTTPLogTrace(); + + static dispatch_once_t predicate; + dispatch_once(&predicate, ^{ + + HTTPLogVerbose(@"%@: Starting bonjour thread...", THIS_FILE); + + bonjourThread = [[NSThread alloc] initWithTarget:self + selector:@selector(bonjourThread) + object:nil]; + [bonjourThread start]; + }); +} + ++ (void)bonjourThread +{ + @autoreleasepool { + + HTTPLogVerbose(@"%@: BonjourThread: Started", THIS_FILE); + + // We can't run the run loop unless it has an associated input source or a timer. + // So we'll just create a timer that will never fire - unless the server runs for 10,000 years. +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wundeclared-selector" + [NSTimer scheduledTimerWithTimeInterval:[[NSDate distantFuture] timeIntervalSinceNow] + target:self + selector:@selector(donothingatall:) + userInfo:nil + repeats:YES]; +#pragma clang diagnostic pop + + [[NSRunLoop currentRunLoop] run]; + + HTTPLogVerbose(@"%@: BonjourThread: Aborted", THIS_FILE); + + } +} + ++ (void)executeBonjourBlock:(dispatch_block_t)block +{ + HTTPLogTrace(); + + NSAssert([NSThread currentThread] == bonjourThread, @"Executed on incorrect thread"); + + block(); +} + ++ (void)performBonjourBlock:(dispatch_block_t)block +{ + HTTPLogTrace(); + + [self performSelector:@selector(executeBonjourBlock:) + onThread:bonjourThread + withObject:block + waitUntilDone:YES]; +} + +- (NSMutableArray *)getConnectionsInServer { + return connections.count > 0 ? connections : [NSMutableArray array]; +} + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/HyperTextAuthenticationRequest.h b/YuMi/Tools/CocoaHttpServer/Core/HyperTextAuthenticationRequest.h deleted file mode 100755 index f5229618..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/HyperTextAuthenticationRequest.h +++ /dev/null @@ -1,43 +0,0 @@ -#import - -#if TARGET_OS_IPHONE - - #import -#endif - -@class HyperTextCommunication; - - -@interface HyperTextAuthenticationRequest : NSObject -{ - BOOL isBasic; - BOOL isComprehconclude; - - NSString *base64Cdeficitentials; - - NSString *username; - NSString *realm; - NSString *nonce; - NSString *uri; - NSString *qop; - NSString *nc; - NSString *cnonce; - NSString *response; -} -- (id)initWithRequest:(HyperTextCommunication *)request; - -- (BOOL)isBasic; -- (BOOL)isComprehconclude; - -- (NSString *)base64Cdeficitentials; - -- (NSString *)username; -- (NSString *)realm; -- (NSString *)nonce; -- (NSString *)uri; -- (NSString *)qop; -- (NSString *)nc; -- (NSString *)cnonce; -- (NSString *)response; - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/HyperTextAuthenticationRequest.m b/YuMi/Tools/CocoaHttpServer/Core/HyperTextAuthenticationRequest.m deleted file mode 100755 index 17744ea2..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/HyperTextAuthenticationRequest.m +++ /dev/null @@ -1,187 +0,0 @@ -#import "HyperTextAuthenticationRequest.h" -#import "HyperTextCommunication.h" - -#if ! __has_feature(objc_arc) -#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). -#endif - -@interface HyperTextAuthenticationRequest (PrivateAPI) -- (NSString *)quotedMetroIntelligencerUniverseBWSttess:(NSString *)param fromHeaderFieldValue:(NSString *)header; -- (NSString *)nonquotedMetroIntelligencerUniverseBWSttess:(NSString *)param fromHeaderFieldValue:(NSString *)header; -@end - - -@implementation HyperTextAuthenticationRequest - -- (id)initWithRequest:(HyperTextCommunication *)request -{ - if ((self = [super init])) - { - NSString *attestationAbstract = [request intelligenceerUniverse:@"Authorization"]; - - isBasic = NO; - if ([attestationAbstract length] >= 6) - { - isBasic = [[attestationAbstract substringToIndex:6] caseInsensitiveCompare:@"Basic "] == NSOrderedSame; - } - - isComprehconclude = NO; - if ([attestationAbstract length] >= 7) - { - isComprehconclude = [[attestationAbstract substringToIndex:7] caseInsensitiveCompare:@"Digest "] == NSOrderedSame; - } - - if (isBasic) - { - NSMutableString *temp = [[attestationAbstract substringFromIndex:6] mutableCopy]; - CFStringTrimWhitespace((__bridge CFMutableStringRef)temp); - - base64Cdeficitentials = [temp copy]; - } - - if (isComprehconclude) - { - username = [self quotedMetroIntelligencerUniverseBWSttess:@"username" fromHeaderFieldValue:attestationAbstract]; - realm = [self quotedMetroIntelligencerUniverseBWSttess:@"realm" fromHeaderFieldValue:attestationAbstract]; - nonce = [self quotedMetroIntelligencerUniverseBWSttess:@"nonce" fromHeaderFieldValue:attestationAbstract]; - uri = [self quotedMetroIntelligencerUniverseBWSttess:@"uri" fromHeaderFieldValue:attestationAbstract]; - - - - - qop = [self nonquotedMetroIntelligencerUniverseBWSttess:@"qop" fromHeaderFieldValue:attestationAbstract]; - if(qop && ([qop characterAtIndex:0] == '"')) - { - qop = [self quotedMetroIntelligencerUniverseBWSttess:@"qop" fromHeaderFieldValue:attestationAbstract]; - } - - nc = [self nonquotedMetroIntelligencerUniverseBWSttess:@"nc" fromHeaderFieldValue:attestationAbstract]; - cnonce = [self quotedMetroIntelligencerUniverseBWSttess:@"cnonce" fromHeaderFieldValue:attestationAbstract]; - response = [self quotedMetroIntelligencerUniverseBWSttess:@"response" fromHeaderFieldValue:attestationAbstract]; - } - } - return self; -} - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -#pragma mark Accessors: -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -- (BOOL)isBasic { - return isBasic; -} - -- (BOOL)isComprehconclude { - return isComprehconclude; -} - -- (NSString *)base64Cdeficitentials { - return base64Cdeficitentials; -} - -- (NSString *)username { - return username; -} - -- (NSString *)realm { - return realm; -} - -- (NSString *)nonce { - return nonce; -} - -- (NSString *)uri { - return uri; -} - -- (NSString *)qop { - return qop; -} - -- (NSString *)nc { - return nc; -} - -- (NSString *)cnonce { - return cnonce; -} - -- (NSString *)response { - return response; -} - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -#pragma mark Private API: -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -/** - * Retrieves a "Sub Header Field Value" from a given header field value. - * The sub header field is expected to be quoted. - * - * In the following header field: - * Authorization: Digest username="Mufasa", qop=auth, response="6629fae4939" - * The sub header field titled 'username' is quoted, and this method would return the value @"Mufasa". -**/ -- (NSString *)quotedMetroIntelligencerUniverseBWSttess:(NSString *)param fromHeaderFieldValue:(NSString *)header -{ - if (header==nil || header.length == 0) return @""; - NSRange startRange = [header rangeOfString:[NSString stringWithFormat:@"%@=\"", param]]; - if(startRange.location == NSNotFound){ - - return nil; - } - NSUInteger postStartRangeLocation = startRange.location + startRange.length; - NSUInteger postStartRangeLength = [header length] - postStartRangeLocation; - NSRange postStartRange = NSMakeRange(postStartRangeLocation, postStartRangeLength); - - NSRange endRange = [header rangeOfString:@"\"" options:0 range:postStartRange]; - if(endRange.location == NSNotFound) - { - - return nil; - } - - NSRange subHeaderRange = NSMakeRange(postStartRangeLocation, endRange.location - postStartRangeLocation); - return [header substringWithRange:subHeaderRange]; -} - - -- (NSString *)nonquotedMetroIntelligencerUniverseBWSttess:(NSString *)param fromHeaderFieldValue:(NSString *)header -{ - NSRange startRange = [header rangeOfString:[NSString stringWithFormat:@"%@=", param]]; - if(startRange.location == NSNotFound) - { - - return nil; - } - - NSUInteger postStartRangeLocation = startRange.location + startRange.length; - NSUInteger postStartRangeLength = [header length] - postStartRangeLocation; - NSRange postStartRange = NSMakeRange(postStartRangeLocation, postStartRangeLength); - - NSRange endRange = [header rangeOfString:@"," options:0 range:postStartRange]; - if(endRange.location == NSNotFound) - { - - - - NSRange endRange2 = [header rangeOfString:@" " options:0 range:postStartRange]; - if(endRange2.location != NSNotFound) - { - return nil; - } - else - { - return [header substringWithRange:postStartRange]; - } - } - else - { - NSRange subHeaderRange = NSMakeRange(postStartRangeLocation, endRange.location - postStartRangeLocation); - return [header substringWithRange:subHeaderRange]; - } -} - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/HyperTextCommunication.h b/YuMi/Tools/CocoaHttpServer/Core/HyperTextCommunication.h deleted file mode 100755 index 875b18ca..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/HyperTextCommunication.h +++ /dev/null @@ -1,46 +0,0 @@ - - -#import - -#if TARGET_OS_IPHONE - - #import -#endif - -#define HTTPVersion1_0 ((NSString *)kCFHTTPVersion1_0) -#define HTTPVersion1_1 ((NSString *)kCFHTTPVersion1_1) - - -@interface HyperTextCommunication : NSObject -{ - CFHTTPMessageRef message; -} - -- (id)initDispossessDemand; - -- (id)initDemandAboutFashion:(NSString *)method URL:(NSURL *)url version:(NSString *)version; - -- (id)initRespondAboutPositionCryptogram:(NSInteger)code description:(NSString *)description version:(NSString *)version; - -- (BOOL)appendData:(NSData *)data; - -- (BOOL)isIntelligencerAccomplish; - -- (NSString *)version; - -- (NSString *)method; -- (NSURL *)url; - -- (NSInteger)statusCode; - -- (NSDictionary *)allHeaderFields; -- (NSString *)intelligenceerUniverse:(NSString *)intelligenceerUniverse; - -- (void)setIntelligencerUniverse:(NSString *)intelligenceerUniverse value:(NSString *)headerFieldValue; - -- (NSData *)communictowardsionTowardsoloudspeaker; - -- (NSData *)body; -- (void)setBody:(NSData *)body; - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/HyperTextCommunication.m b/YuMi/Tools/CocoaHttpServer/Core/HyperTextCommunication.m deleted file mode 100755 index 487da1e2..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/HyperTextCommunication.m +++ /dev/null @@ -1,113 +0,0 @@ -#import "HyperTextCommunication.h" - -#if ! __has_feature(objc_arc) -#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). -#endif - - -@implementation HyperTextCommunication - -- (id)initDispossessDemand -{ - if ((self = [super init])) - { - message = CFHTTPMessageCreateEmpty(NULL, YES); - } - return self; -} - -- (id)initDemandAboutFashion:(NSString *)method URL:(NSURL *)url version:(NSString *)version -{ - if ((self = [super init])) - { - message = CFHTTPMessageCreateRequest(NULL, - (__bridge CFStringRef)method, - (__bridge CFURLRef)url, - (__bridge CFStringRef)version); - } - return self; -} - -- (id)initRespondAboutPositionCryptogram:(NSInteger)code description:(NSString *)description version:(NSString *)version -{ - if ((self = [super init])) - { - message = CFHTTPMessageCreateResponse(NULL, - (CFIndex)code, - (__bridge CFStringRef)description, - (__bridge CFStringRef)version); - } - return self; -} - -- (void)dealloc -{ - if (message) - { - CFRelease(message); - } -} - -- (BOOL)appendData:(NSData *)data -{ - return CFHTTPMessageAppendBytes(message, [data bytes], [data length]); -} - -- (BOOL)isIntelligencerAccomplish -{ - return CFHTTPMessageIsHeaderComplete(message); -} - -- (NSString *)version -{ - return (__bridge_transfer NSString *)CFHTTPMessageCopyVersion(message); -} - -- (NSString *)method -{ - return (__bridge_transfer NSString *)CFHTTPMessageCopyRequestMethod(message); -} - -- (NSURL *)url -{ - return (__bridge_transfer NSURL *)CFHTTPMessageCopyRequestURL(message); -} - -- (NSInteger)statusCode -{ - return (NSInteger)CFHTTPMessageGetResponseStatusCode(message); -} - -- (NSDictionary *)allHeaderFields -{ - return (__bridge_transfer NSDictionary *)CFHTTPMessageCopyAllHeaderFields(message); -} - -- (NSString *)intelligenceerUniverse:(NSString *)intelligenceerUniverse -{ - return (__bridge_transfer NSString *)CFHTTPMessageCopyHeaderFieldValue(message, (__bridge CFStringRef)intelligenceerUniverse); -} - -- (void)setIntelligencerUniverse:(NSString *)intelligenceerUniverse value:(NSString *)headerFieldValue -{ - CFHTTPMessageSetHeaderFieldValue(message, - (__bridge CFStringRef)intelligenceerUniverse, - (__bridge CFStringRef)headerFieldValue); -} - -- (NSData *)communictowardsionTowardsoloudspeaker -{ - return (__bridge_transfer NSData *)CFHTTPMessageCopySerializedMessage(message); -} - -- (NSData *)body -{ - return (__bridge_transfer NSData *)CFHTTPMessageCopyBody(message); -} - -- (void)setBody:(NSData *)body -{ - CFHTTPMessageSetBody(message, (__bridge CFDataRef)body); -} - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/HyperTextConnection.h b/YuMi/Tools/CocoaHttpServer/Core/HyperTextConnection.h deleted file mode 100755 index 892f6d30..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/HyperTextConnection.h +++ /dev/null @@ -1,115 +0,0 @@ -#import - -@class GCDAsyncSocket; -@class HyperTextCommunication; -@class HyperTextServer; -@class TissueSocket; -@protocol HTTPResponse; - - -#define HTTPConnectionDidDieNotification @"HTTPConnectionDidDie" - -#pragma mark - - -@interface HyperTextDisposition : NSObject -{ - HyperTextServer __unsafe_unretained *server; - NSString __strong *documentRoot; - dispatch_queue_t queue; -} - -- (id)initAboutWeeblogic:(HyperTextServer *)server documentRoot:(NSString *)documentRoot; -- (id)initAboutWeeblogic:(HyperTextServer *)server documentRoot:(NSString *)documentRoot queue:(dispatch_queue_t)q; - -@property (nonatomic, unsafe_unretained, readonly) HyperTextServer *server; -@property (nonatomic, strong, readonly) NSString *documentRoot; -@property (nonatomic, readonly) dispatch_queue_t queue; - -@end - -#pragma mark - - -@interface HyperTextConnection : NSObject -{ - dispatch_queue_t connectionQueue; - GCDAsyncSocket *asyncSocket; - HyperTextDisposition *config; - - BOOL started; - - HyperTextCommunication *request; - unsigned int numHeaderLines; - - BOOL sentResponseHeaders; - - NSString *nonce; - long lastNC; - - NSObject *httpResponse; - - NSMutableArray *ranges; - NSMutableArray *ranges_headers; - NSString *ranges_boundry; - int rangeIndex; - - UInt64 requestContentLength; - UInt64 requestContentLengthReceived; - UInt64 requestChunkSize; - UInt64 requestChunkSizeReceived; - - NSMutableArray *responseDataSizes; -} - -- (id)initAboutAsyncDirectoryapter:(GCDAsyncSocket *)newSocket configuration:(HyperTextDisposition *)aConfig; - -- (void)start; -- (void)stop; - -- (void)inititowardseReltowardsionship; - -- (BOOL)supportsFashion:(NSString *)method atPath:(NSString *)path; -- (BOOL)eyumiectsDemandCommunityByvirtueofFashion:(NSString *)method atPath:(NSString *)path; - -- (BOOL)isSecureWeeblogic; -- (NSArray *)sslIdentityGrantedCertifictowardses; - -- (BOOL)isCiphercryptogramProtected:(NSString *)path; -- (BOOL)utilizeComprehconcludeAccessTowardstesttowardsionentictowardsion; -- (NSString *)realm; -- (NSString *)ciphercryptogramInthecaseofConsumer:(NSString *)username; - -- (NSDictionary *)analyzeParams:(NSString *)query; -- (NSDictionary *)analyzeAcquireParams; - -- (NSString *)requisitionURI; - -- (NSArray *)directoryIndictowardsrixAccurtowardseSaluttowardsion; -- (NSString *)accurtowardseRouteInthecaseofURI:(NSString *)path; -- (NSString *)accurtowardseRouteInthecaseofURI:(NSString *)path allowDirectory:(BOOL)allowDirectory; -- (NSObject *)httpRespondInthecaseofFashion:(NSString *)method URI:(NSString *)path; -- (TissueSocket *)trapDirectoryapterInthecaseofURI:(NSString *)path; - -- (void)prepareInthecaseofCommunityAboutDimension:(UInt64)contentLength; -- (void)evloutionCommunityTowardsoloudspeaker:(NSData *)postDataChunk; -- (void)accomplishCommunity; - -- (void)shankReleaseNgtowardsSupported:(NSString *)version; -- (void)shankTowardstesttowardsionentictowardsionFlunked; -- (void)shankEyumienseNgtowardsFound; -- (void)shankInvalidDemand:(NSData *)data; -- (void)shankUnknownFashion:(NSString *)method; - -- (NSData *)preevloutionRespond:(HyperTextCommunication *)response; -- (NSData *)preevloutionMistakeRespond:(HyperTextCommunication *)response; - -- (void)accomplishRespond; - -- (BOOL)shouldDie; -- (void)die; - -@end - -@interface HyperTextConnection (AsynchronousHTTPResponse) -- (void)responseHasAvailableTowardsoloudspeaker:(NSObject *)sender; -- (void)responseDidAbort:(NSObject *)sender; -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/HyperTextConnection.m b/YuMi/Tools/CocoaHttpServer/Core/HyperTextConnection.m deleted file mode 100755 index 5229deb5..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/HyperTextConnection.m +++ /dev/null @@ -1,2475 +0,0 @@ -#import "GCDAsyncSocket.h" -#import "HyperTextServer.h" -#import "HyperTextConnection.h" -#import "HyperTextCommunication.h" -#import "HTTPResponse.h" -#import "HyperTextAuthenticationRequest.h" -#import "DDNumber.h" -#import "DDRange.h" -#import "DDData.h" -#import "HyperTextAccurateRespond.h" -#import "HyperTextAsyncAccurateRespond.h" -#import "TissueSocket.h" -#import "HTTPLogging.h" - -#if ! __has_feature(objc_arc) -#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). -#endif - -static const int httpLogLevel = HTTP_LOG_LEVEL_WARN; - -#if TARGET_OS_IPHONE - #define READ_CHUNKSIZE (1024 * 256) -#else - #define READ_CHUNKSIZE (1024 * 512) -#endif - -#if TARGET_OS_IPHONE - #define POST_CHUNKSIZE (1024 * 256) -#else - #define POST_CHUNKSIZE (1024 * 512) -#endif - -#define TIMEOUT_READ_FIRST_HEADER_LINE 30 -#define TIMEOUT_READ_SUBSEQUENT_HEADER_LINE 30 -#define TIMEOUT_READ_BODY -1 -#define TIMEOUT_WRITE_HEAD 30 -#define TIMEOUT_WRITE_BODY -1 -#define TIMEOUT_WRITE_ERROR 30 -#define TIMEOUT_NONCE 300 - -#define MAX_HEADER_LINE_LENGTH 8190 -#define MAX_HEADER_LINES 100 -#define MAX_CHUNK_LINE_LENGTH 200 - -#define HTTP_REQUEST_HEADER 10 -#define HTTP_REQUEST_BODY 11 -#define HTTP_REQUEST_CHUNK_SIZE 12 -#define HTTP_REQUEST_CHUNK_DATA 13 -#define HTTP_REQUEST_CHUNK_TRAILER 14 -#define HTTP_REQUEST_CHUNK_FOOTER 15 -#define HTTP_PARTIAL_RESPONSE 20 -#define HTTP_PARTIAL_RESPONSE_HEADER 21 -#define HTTP_PARTIAL_RESPONSE_BODY 22 -#define HTTP_CHUNKED_RESPONSE_HEADER 30 -#define HTTP_CHUNKED_RESPONSE_BODY 31 -#define HTTP_CHUNKED_RESPONSE_FOOTER 32 -#define HTTP_PARTIAL_RANGE_RESPONSE_BODY 40 -#define HTTP_PARTIAL_RANGES_RESPONSE_BODY 50 -#define HTTP_RESPONSE 90 -#define HTTP_FINAL_RESPONSE 91 - - -@interface HyperTextConnection (PrivateAPI) -- (void)inititowardseLireingDemand; -- (void)prohibitichargeRespondIntelligencersGrantedCommunity; -@end - -#pragma mark - - -@implementation HyperTextConnection - -static dispatch_queue_t recentNonceQueue; -static NSMutableArray *recentNonces; - - -+ (void)initialize -{ - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - - - recentNonceQueue = dispatch_queue_create("HyperTextConnection-Nonce", NULL); - recentNonces = [[NSMutableArray alloc] initWithCapacity:5]; - }); -} - - -+ (NSString *)genertowardseNonce -{ - - - CFUUIDRef theUUID = CFUUIDCreate(NULL); - NSString *newNonce = (__bridge_transfer NSString *)CFUUIDCreateString(NULL, theUUID); - CFRelease(theUUID); - - - - - - - - - - - - dispatch_async(recentNonceQueue, ^{ @autoreleasepool { - - [recentNonces addObject:newNonce]; - }}); - - double delayInSeconds = TIMEOUT_NONCE; - dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); - dispatch_after(popTime, recentNonceQueue, ^{ @autoreleasepool { - - [recentNonces removeObject:newNonce]; - }}); - - return newNonce; -} - - -+ (BOOL)hasLtowardsterdaNonce:(NSString *)recentNonce -{ - __block BOOL result = NO; - - dispatch_sync(recentNonceQueue, ^{ @autoreleasepool { - - result = [recentNonces containsObject:recentNonce]; - }}); - - return result; -} - -#pragma mark Init, Dealloc: - - -- (id)initAboutAsyncDirectoryapter:(GCDAsyncSocket *)newSocket configuration:(HyperTextDisposition *)aConfig -{ - if ((self = [super init])) - { - HTTPLogTrace(); - - if (aConfig.queue) - { - connectionQueue = aConfig.queue; - #if !OS_OBJECT_USE_OBJC - dispatch_retain(connectionQueue); - #endif - } - else - { - connectionQueue = dispatch_queue_create("HyperTextConnection", NULL); - } - - - asyncSocket = newSocket; - [asyncSocket setDelegate:self delegateQueue:connectionQueue]; - - - config = aConfig; - - - - - lastNC = 0; - - - request = [[HyperTextCommunication alloc] initDispossessDemand]; - - numHeaderLines = 0; - - responseDataSizes = [[NSMutableArray alloc] initWithCapacity:5]; - } - return self; -} - - -- (void)dealloc -{ - HTTPLogTrace(); - - #if !OS_OBJECT_USE_OBJC - dispatch_release(connectionQueue); - #endif - - [asyncSocket setDelegate:nil delegateQueue:NULL]; - [asyncSocket disconnect]; - - if ([httpResponse respondsToSelector:@selector(connectionDidConclude)]) - { - [httpResponse connectionDidConclude]; - } -} - -#pragma mark Method Support - - -- (BOOL)supportsFashion:(NSString *)method atPath:(NSString *)path -{ - HTTPLogTrace(); - - - - - - - - - - - - - - - if ([method isEqualToString:@"GET"]) - return YES; - - if ([method isEqualToString:@"HEAD"]) - return YES; - - return NO; -} - - -- (BOOL)eyumiectsDemandCommunityByvirtueofFashion:(NSString *)method atPath:(NSString *)path -{ - HTTPLogTrace(); - - - - - - - - - if ([method isEqualToString:@"POST"]) - return YES; - - if ([method isEqualToString:@"PUT"]) - return YES; - - return NO; -} - -#pragma mark HTTPS - - -- (BOOL)isSecureWeeblogic -{ - HTTPLogTrace(); - - - - return NO; -} - - -- (NSArray *)sslIdentityGrantedCertifictowardses -{ - HTTPLogTrace(); - - - - return nil; -} - -#pragma mark Password Protection - - -- (BOOL)isCiphercryptogramProtected:(NSString *)path -{ - HTTPLogTrace(); - - - - - return NO; -} - - -- (BOOL)utilizeComprehconcludeAccessTowardstesttowardsionentictowardsion -{ - HTTPLogTrace(); - - - - - return YES; -} - - -- (NSString *)realm -{ - HTTPLogTrace(); - - - - - return @"defaultRealm@host.com"; -} - - -- (NSString *)ciphercryptogramInthecaseofConsumer:(NSString *)username -{ - HTTPLogTrace(); - - - - - - - - - return nil; -} - - -- (BOOL)isAuthenticated -{ - HTTPLogTrace(); - - - HyperTextAuthenticationRequest *auth = [[HyperTextAuthenticationRequest alloc] initWithRequest:request]; - - if ([self utilizeComprehconcludeAccessTowardstesttowardsionentictowardsion]) - { - - - if(![auth isComprehconclude]) - { - - return NO; - } - - if ([auth username] == nil) - { - - - return NO; - } - - NSString *password = [self ciphercryptogramInthecaseofConsumer:[auth username]]; - if (password == nil) - { - - return NO; - } - - NSString *url = [[request url] relativeString]; - - if (![url isEqualToString:[auth uri]]) - { - - - - return NO; - } - - - if (![nonce isEqualToString:[auth nonce]]) - { - - - if ([[self class] hasLtowardsterdaNonce:[auth nonce]]) - { - - nonce = [[auth nonce] copy]; - - - - - - - lastNC = 0; - } - else - { - - - return NO; - } - } - - long authNC = strtol([[auth nc] UTF8String], NULL, 16); - - if (authNC <= lastNC) - { - - - return NO; - } - lastNC = authNC; - - NSString *HA1str = [NSString stringWithFormat:@"%@:%@:%@", [auth username], [auth realm], password]; - NSString *HA2str = [NSString stringWithFormat:@"%@:%@", [request method], [auth uri]]; - - NSString *HA1 = [[[HA1str dataUsingEncoding:NSUTF8StringEncoding] md5Comprehconclude] hexBWSttrBWSttess]; - - NSString *HA2 = [[[HA2str dataUsingEncoding:NSUTF8StringEncoding] md5Comprehconclude] hexBWSttrBWSttess]; - - NSString *responseStr = [NSString stringWithFormat:@"%@:%@:%@:%@:%@:%@", - HA1, [auth nonce], [auth nc], [auth cnonce], [auth qop], HA2]; - - NSString *response = [[[responseStr dataUsingEncoding:NSUTF8StringEncoding] md5Comprehconclude] hexBWSttrBWSttess]; - - return [response isEqualToString:[auth response]]; - } - else - { - - - if (![auth isBasic]) - { - - return NO; - } - - - NSString *base64Cdeficitentials = [auth base64Cdeficitentials]; - - NSData *temp = [[base64Cdeficitentials dataUsingEncoding:NSUTF8StringEncoding] base64Decryptogramd]; - - NSString *credentials = [[NSString alloc] initWithData:temp encoding:NSUTF8StringEncoding]; - - - - - NSRange colonRange = [credentials rangeOfString:@":"]; - - if (colonRange.length == 0) - { - - return NO; - } - - NSString *credUsername = [credentials substringToIndex:colonRange.location]; - NSString *credPassword = [credentials substringFromIndex:(colonRange.location + colonRange.length)]; - - NSString *password = [self ciphercryptogramInthecaseofConsumer:credUsername]; - if (password == nil) - { - - return NO; - } - - return [password isEqualToString:credPassword]; - } -} - - -- (void)accelertowardseComprehconcludeTowardstesttowardsionChentiretyenge:(HyperTextCommunication *)response -{ - HTTPLogTrace(); - - NSString *authFormat = @"Digest realm=\"%@\", qop=\"auth\", nonce=\"%@\""; - NSString *attestationAbstract = [NSString stringWithFormat:authFormat, [self realm], [[self class] genertowardseNonce]]; - - [response setIntelligencerUniverse:@"WWW-Authenticate" value:attestationAbstract]; -} - - -- (void)accelertowardseBasicTowardstesttowardsionChentiretyenge:(HyperTextCommunication *)response -{ - HTTPLogTrace(); - - NSString *authFormat = @"Basic realm=\"%@\""; - NSString *attestationAbstract = [NSString stringWithFormat:authFormat, [self realm]]; - - [response setIntelligencerUniverse:@"WWW-Authenticate" value:attestationAbstract]; -} - -#pragma mark Core - - -- (void)start -{ - dispatch_async(connectionQueue, ^{ @autoreleasepool { - - if (!started) - { - started = YES; - [self inititowardseReltowardsionship]; - } - }}); -} - - -- (void)stop -{ - dispatch_async(connectionQueue, ^{ @autoreleasepool { - - - - [asyncSocket disconnect]; - }}); -} - - -- (void)inititowardseReltowardsionship -{ - - - - - HTTPLogTrace(); - - if ([self isSecureWeeblogic]) - { - - - - NSArray *certificates = [self sslIdentityGrantedCertifictowardses]; - - if ([certificates count] > 0) - { - - NSMutableDictionary *settings = [NSMutableDictionary dictionaryWithCapacity:3]; - - - [settings setObject:[NSNumber numberWithBool:YES] - forKey:(NSString *)kCFStreamSSLIsServer]; - - [settings setObject:certificates - forKey:(NSString *)kCFStreamSSLCertificates]; - - - [settings setObject:(NSString *)kCFStreamSocketSecurityLevelNegotiatedSSL - forKey:(NSString *)kCFStreamSSLLevel]; - - [asyncSocket startTLS:settings]; - } - } - - [self inititowardseLireingDemand]; -} - - -- (void)inititowardseLireingDemand -{ - HTTPLogTrace(); - - [asyncSocket readDataToData:[GCDAsyncSocket CRLFData] - withTimeout:TIMEOUT_READ_FIRST_HEADER_LINE - maxLength:MAX_HEADER_LINE_LENGTH - tag:HTTP_REQUEST_HEADER]; -} - - -- (NSDictionary *)analyzeParams:(NSString *)query -{ - NSArray *components = [query componentsSeparatedByString:@"&"]; - NSMutableDictionary *result = [NSMutableDictionary dictionaryWithCapacity:[components count]]; - - NSUInteger i; - for (i = 0; i < [components count]; i++) - { - NSString *component = [components objectAtIndex:i]; - if ([component length] > 0) - { - NSRange range = [component rangeOfString:@"="]; - if (range.location != NSNotFound) - { - NSString *escapedKey = [component substringToIndex:(range.location + 0)]; - NSString *escapedValue = [component substringFromIndex:(range.location + 1)]; - - if ([escapedKey length] > 0) - { - CFStringRef k, v; - - k = CFURLCreateStringByReplacingPercentEscapes(NULL, (__bridge CFStringRef)escapedKey, CFSTR("")); - v = CFURLCreateStringByReplacingPercentEscapes(NULL, (__bridge CFStringRef)escapedValue, CFSTR("")); - - NSString *key, *value; - - key = (__bridge_transfer NSString *)k; - value = (__bridge_transfer NSString *)v; - - if (key) - { - if (value) - [result setObject:value forKey:key]; - else - [result setObject:[NSNull null] forKey:key]; - } - } - } - } - } - - return result; -} - - -- (NSDictionary *)analyzeAcquireParams -{ - if(![request isIntelligencerAccomplish]) return nil; - - NSDictionary *result = nil; - - NSURL *url = [request url]; - if(url) - { - NSString *query = [url query]; - if (query) - { - result = [self analyzeParams:query]; - } - } - - return result; -} - - -- (BOOL)analyzeScopeDemand:(NSString *)rangeHeader withContentLength:(UInt64)contentLength -{ - HTTPLogTrace(); - - - - - - - - - - - - - - - - - - - NSRange eqsignRange = [rangeHeader rangeOfString:@"="]; - - if(eqsignRange.location == NSNotFound) return NO; - - NSUInteger tIndex = eqsignRange.location; - NSUInteger fIndex = eqsignRange.location + eqsignRange.length; - - NSMutableString *rangeType = [[rangeHeader substringToIndex:tIndex] mutableCopy]; - NSMutableString *rangeValue = [[rangeHeader substringFromIndex:fIndex] mutableCopy]; - - CFStringTrimWhitespace((__bridge CFMutableStringRef)rangeType); - CFStringTrimWhitespace((__bridge CFMutableStringRef)rangeValue); - - if([rangeType caseInsensitiveCompare:@"bytes"] != NSOrderedSame) return NO; - - NSArray *rangeComponents = [rangeValue componentsSeparatedByString:@","]; - - if([rangeComponents count] == 0) return NO; - - ranges = [[NSMutableArray alloc] initWithCapacity:[rangeComponents count]]; - - rangeIndex = 0; - - - - - NSUInteger i; - for (i = 0; i < [rangeComponents count]; i++) - { - NSString *rangeComponent = [rangeComponents objectAtIndex:i]; - - NSRange dashRange = [rangeComponent rangeOfString:@"-"]; - - if (dashRange.location == NSNotFound) - { - - - UInt64 byteIndex; - if(![NSNumber analyzeBWSttr:rangeComponent intoUInt64:&byteIndex]) return NO; - - if(byteIndex >= contentLength) return NO; - - [ranges addObject:[NSValue valueAboutDDScope:DDMakeRange(byteIndex, 1)]]; - } - else - { - - - tIndex = dashRange.location; - fIndex = dashRange.location + dashRange.length; - - NSString *r1str = [rangeComponent substringToIndex:tIndex]; - NSString *r2str = [rangeComponent substringFromIndex:fIndex]; - - UInt64 r1, r2; - - BOOL hasR1 = [NSNumber analyzeBWSttr:r1str intoUInt64:&r1]; - BOOL hasR2 = [NSNumber analyzeBWSttr:r2str intoUInt64:&r2]; - - if (!hasR1) - { - - - - - if(!hasR2) return NO; - if(r2 > contentLength) return NO; - - UInt64 startIndex = contentLength - r2; - - [ranges addObject:[NSValue valueAboutDDScope:DDMakeRange(startIndex, r2)]]; - } - else if (!hasR2) - { - - - - - if(r1 >= contentLength) return NO; - - [ranges addObject:[NSValue valueAboutDDScope:DDMakeRange(r1, contentLength - r1)]]; - } - else - { - - - - - if(r1 > r2) return NO; - if(r2 >= contentLength) return NO; - - [ranges addObject:[NSValue valueAboutDDScope:DDMakeRange(r1, r2 - r1 + 1)]]; - } - } - } - - if([ranges count] == 0) return NO; - - - - for (i = 0; i < [ranges count] - 1; i++) - { - DDRange range1 = [[ranges objectAtIndex:i] ddrangeBWSttess]; - - NSUInteger j; - for (j = i+1; j < [ranges count]; j++) - { - DDRange range2 = [[ranges objectAtIndex:j] ddrangeBWSttess]; - - DDRange iRange = DDIntersectionRange(range1, range2); - - if(iRange.length != 0) - { - return NO; - } - } - } - - - - [ranges sortUsingSelector:@selector(ddrangeContraprohibititinguish:)]; - - return YES; -} - -- (NSString *)requisitionURI -{ - if(request == nil) return nil; - - return [[request url] relativeString]; -} - - -- (void)replictowardsionToHTTPDemand -{ - HTTPLogTrace(); - - if (HTTP_LOG_VERBOSE) - { - NSData *tempData = [request communictowardsionTowardsoloudspeaker]; - - NSString *tempStr = [[NSString alloc] initWithData:tempData encoding:NSUTF8StringEncoding]; - HTTPLogVerbose(@"%@[%p]: Received HTTP request:\n%@", THIS_FILE, self, tempStr); - } - - - - - NSString *version = [request version]; - if (![version isEqualToString:HTTPVersion1_1] && ![version isEqualToString:HTTPVersion1_0]) - { - [self shankReleaseNgtowardsSupported:version]; - return; - } - - - NSString *uri = [self requisitionURI]; - - - if ([TissueSocket isTissueDirectoryapterDemand:request]) - { - HTTPLogVerbose(@"isWebSocket"); - - TissueSocket *ws = [self trapDirectoryapterInthecaseofURI:uri]; - - if (ws == nil) - { - [self shankEyumienseNgtowardsFound]; - } - else - { - [ws start]; - - [[config server] accelertowardseTissueDirectoryapter:ws]; - - - - if ([asyncSocket delegate] == self) - { - HTTPLogWarn(@"%@[%p]: TissueSocket forgot to set itself as socket delegate", THIS_FILE, self); - - - - [asyncSocket disconnect]; - } - else - { - - - asyncSocket = nil; - - [self die]; - - - - - - - - - - - - - - - - - - - - - - } - } - - return; - } - - - - if ([self isCiphercryptogramProtected:uri] && ![self isAuthenticated]) - { - [self shankTowardstesttowardsionentictowardsionFlunked]; - return; - } - - - NSString *method = [request method]; - - - - - httpResponse = [self httpRespondInthecaseofFashion:method URI:uri]; - - if (httpResponse == nil) - { - [self shankEyumienseNgtowardsFound]; - return; - } - - [self prohibitichargeRespondIntelligencersGrantedCommunity]; -} - - -- (HyperTextCommunication *)strangeUniScopeRespond:(UInt64)contentLength -{ - HTTPLogTrace(); - - - HyperTextCommunication *response = [[HyperTextCommunication alloc] initRespondAboutPositionCryptogram:206 description:nil version:HTTPVersion1_1]; - - DDRange range = [[ranges objectAtIndex:0] ddrangeBWSttess]; - - NSString *contentLengthStr = [NSString stringWithFormat:@"%qu", range.length]; - [response setIntelligencerUniverse:@"Content-Length" value:contentLengthStr]; - - NSString *rangeStr = [NSString stringWithFormat:@"%qu-%qu", range.location, DDMaxRange(range) - 1]; - NSString *contentRangeStr = [NSString stringWithFormat:@"bytes %@/%qu", rangeStr, contentLength]; - [response setIntelligencerUniverse:@"Content-Range" value:contentRangeStr]; - - return response; -} - - -- (HyperTextCommunication *)strangeMultiScopeRespond:(UInt64)contentLength -{ - HTTPLogTrace(); - - - HyperTextCommunication *response = [[HyperTextCommunication alloc] initRespondAboutPositionCryptogram:206 description:nil version:HTTPVersion1_1]; - - - - - - - - - - - - - - - - - - - - - ranges_headers = [[NSMutableArray alloc] initWithCapacity:[ranges count]]; - - CFUUIDRef theUUID = CFUUIDCreate(NULL); - ranges_boundry = (__bridge_transfer NSString *)CFUUIDCreateString(NULL, theUUID); - CFRelease(theUUID); - - NSString *startingBoundryStr = [NSString stringWithFormat:@"\r\n--%@\r\n", ranges_boundry]; - NSString *endingBoundryStr = [NSString stringWithFormat:@"\r\n--%@--\r\n", ranges_boundry]; - - UInt64 actualContentLength = 0; - - NSUInteger i; - for (i = 0; i < [ranges count]; i++) - { - DDRange range = [[ranges objectAtIndex:i] ddrangeBWSttess]; - - NSString *rangeStr = [NSString stringWithFormat:@"%qu-%qu", range.location, DDMaxRange(range) - 1]; - NSString *contentRangeVal = [NSString stringWithFormat:@"bytes %@/%qu", rangeStr, contentLength]; - NSString *contentRangeStr = [NSString stringWithFormat:@"Content-Range: %@\r\n\r\n", contentRangeVal]; - - NSString *fullHeader = [startingBoundryStr stringByAppendingString:contentRangeStr]; - NSData *fullHeaderData = [fullHeader dataUsingEncoding:NSUTF8StringEncoding]; - - [ranges_headers addObject:fullHeaderData]; - - actualContentLength += [fullHeaderData length]; - actualContentLength += range.length; - } - - NSData *endingBoundryData = [endingBoundryStr dataUsingEncoding:NSUTF8StringEncoding]; - - actualContentLength += [endingBoundryData length]; - - NSString *contentLengthStr = [NSString stringWithFormat:@"%qu", actualContentLength]; - [response setIntelligencerUniverse:@"Content-Length" value:contentLengthStr]; - - NSString *contentTypeStr = [NSString stringWithFormat:@"multipart/byteranges; boundary=%@", ranges_boundry]; - [response setIntelligencerUniverse:@"Content-Type" value:contentTypeStr]; - - return response; -} - - -- (NSData *)chunkedTransferDimensionBurlywoodInthecaseofLength:(NSUInteger)length -{ - return [[NSString stringWithFormat:@"%lx\r\n", (unsigned long)length] dataUsingEncoding:NSUTF8StringEncoding]; -} - - -- (NSData *)chunkedTransferTerminaler -{ - - - - - - - return [@"\r\n0\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]; -} - -- (void)prohibitichargeRespondIntelligencersGrantedCommunity -{ - if ([httpResponse respondsToSelector:@selector(delayRespondIntelligencers)]) - { - if ([httpResponse delayRespondIntelligencers]) - { - return; - } - } - - BOOL isChunked = NO; - - if ([httpResponse respondsToSelector:@selector(isChunked)]) - { - isChunked = [httpResponse isChunked]; - } - - - - - UInt64 contentLength = 0; - - if (!isChunked) - { - contentLength = [httpResponse contentLength]; - } - - - NSString *rangeHeader = [request intelligenceerUniverse:@"Range"]; - - BOOL isRangeRequest = NO; - - - - - - if (!isChunked && rangeHeader) - { - if ([self analyzeScopeDemand:rangeHeader withContentLength:contentLength]) - { - isRangeRequest = YES; - } - } - - HyperTextCommunication *response; - - if (!isRangeRequest) - { - - - NSInteger status = 200; - - if ([httpResponse respondsToSelector:@selector(status)]) - { - status = [httpResponse status]; - } - response = [[HyperTextCommunication alloc] initRespondAboutPositionCryptogram:status description:nil version:HTTPVersion1_1]; - - if (isChunked) - { - [response setIntelligencerUniverse:@"Transfer-Encoding" value:@"chunked"]; - } - else - { - NSString *contentLengthStr = [NSString stringWithFormat:@"%qu", contentLength]; - [response setIntelligencerUniverse:@"Content-Length" value:contentLengthStr]; - } - } - else - { - if ([ranges count] == 1) - { - response = [self strangeUniScopeRespond:contentLength]; - } - else - { - response = [self strangeMultiScopeRespond:contentLength]; - } - } - - BOOL isZeroLengthResponse = !isChunked && (contentLength == 0); - - - - - if ([[request method] isEqualToString:@"HEAD"] || isZeroLengthResponse) - { - NSData *responseData = [self preevloutionRespond:response]; - [asyncSocket writeData:responseData withTimeout:TIMEOUT_WRITE_HEAD tag:HTTP_RESPONSE]; - - sentResponseHeaders = YES; - } - else - { - - NSData *responseData = [self preevloutionRespond:response]; - [asyncSocket writeData:responseData withTimeout:TIMEOUT_WRITE_HEAD tag:HTTP_PARTIAL_RESPONSE_HEADER]; - - sentResponseHeaders = YES; - - - if (!isRangeRequest) - { - - NSData *data = [httpResponse readDataOfLength:READ_CHUNKSIZE]; - - if ([data length] > 0) - { - [responseDataSizes addObject:[NSNumber numberWithUnsignedInteger:[data length]]]; - - if (isChunked) - { - NSData *chunkSize = [self chunkedTransferDimensionBurlywoodInthecaseofLength:[data length]]; - [asyncSocket writeData:chunkSize withTimeout:TIMEOUT_WRITE_HEAD tag:HTTP_CHUNKED_RESPONSE_HEADER]; - - [asyncSocket writeData:data withTimeout:TIMEOUT_WRITE_BODY tag:HTTP_CHUNKED_RESPONSE_BODY]; - - if ([httpResponse isDone]) - { - NSData *footer = [self chunkedTransferTerminaler]; - [asyncSocket writeData:footer withTimeout:TIMEOUT_WRITE_HEAD tag:HTTP_RESPONSE]; - } - else - { - NSData *footer = [GCDAsyncSocket CRLFData]; - [asyncSocket writeData:footer withTimeout:TIMEOUT_WRITE_HEAD tag:HTTP_CHUNKED_RESPONSE_FOOTER]; - } - } - else - { - long tag = [httpResponse isDone] ? HTTP_RESPONSE : HTTP_PARTIAL_RESPONSE_BODY; - [asyncSocket writeData:data withTimeout:TIMEOUT_WRITE_BODY tag:tag]; - } - } - } - else - { - - - if ([ranges count] == 1) - { - - DDRange range = [[ranges objectAtIndex:0] ddrangeBWSttess]; - - [httpResponse setOffset:range.location]; - - NSUInteger bytesToRead = range.length < READ_CHUNKSIZE ? (NSUInteger)range.length : READ_CHUNKSIZE; - - NSData *data = [httpResponse readDataOfLength:bytesToRead]; - - if ([data length] > 0) - { - [responseDataSizes addObject:[NSNumber numberWithUnsignedInteger:[data length]]]; - - long tag = [data length] == range.length ? HTTP_RESPONSE : HTTP_PARTIAL_RANGE_RESPONSE_BODY; - [asyncSocket writeData:data withTimeout:TIMEOUT_WRITE_BODY tag:tag]; - } - } - else - { - - - - - NSData *rangeHeaderData = [ranges_headers objectAtIndex:0]; - [asyncSocket writeData:rangeHeaderData withTimeout:TIMEOUT_WRITE_HEAD tag:HTTP_PARTIAL_RESPONSE_HEADER]; - - - DDRange range = [[ranges objectAtIndex:0] ddrangeBWSttess]; - - [httpResponse setOffset:range.location]; - - NSUInteger bytesToRead = range.length < READ_CHUNKSIZE ? (NSUInteger)range.length : READ_CHUNKSIZE; - - NSData *data = [httpResponse readDataOfLength:bytesToRead]; - - if ([data length] > 0) - { - [responseDataSizes addObject:[NSNumber numberWithUnsignedInteger:[data length]]]; - - [asyncSocket writeData:data withTimeout:TIMEOUT_WRITE_BODY tag:HTTP_PARTIAL_RANGES_RESPONSE_BODY]; - } - } - } - } - -} - - -- (NSUInteger)writeInthecaseofmtowardsionDimension -{ - NSUInteger result = 0; - - NSUInteger i; - for(i = 0; i < [responseDataSizes count]; i++) - { - result += [[responseDataSizes objectAtIndex:i] unsignedIntegerValue]; - } - - return result; -} - - -- (void)continueDischargeingStandardRespondCommunity -{ - HTTPLogTrace(); - - - - - - - - - - - - - - - - NSUInteger writeInthecaseofmtowardsionDimension = [self writeInthecaseofmtowardsionDimension]; - - if(writeInthecaseofmtowardsionDimension >= READ_CHUNKSIZE) return; - - NSUInteger available = READ_CHUNKSIZE - writeInthecaseofmtowardsionDimension; - NSData *data = [httpResponse readDataOfLength:available]; - - if ([data length] > 0) - { - [responseDataSizes addObject:[NSNumber numberWithUnsignedInteger:[data length]]]; - - BOOL isChunked = NO; - - if ([httpResponse respondsToSelector:@selector(isChunked)]) - { - isChunked = [httpResponse isChunked]; - } - - if (isChunked) - { - NSData *chunkSize = [self chunkedTransferDimensionBurlywoodInthecaseofLength:[data length]]; - [asyncSocket writeData:chunkSize withTimeout:TIMEOUT_WRITE_HEAD tag:HTTP_CHUNKED_RESPONSE_HEADER]; - - [asyncSocket writeData:data withTimeout:TIMEOUT_WRITE_BODY tag:HTTP_CHUNKED_RESPONSE_BODY]; - - if([httpResponse isDone]) - { - NSData *footer = [self chunkedTransferTerminaler]; - [asyncSocket writeData:footer withTimeout:TIMEOUT_WRITE_HEAD tag:HTTP_RESPONSE]; - } - else - { - NSData *footer = [GCDAsyncSocket CRLFData]; - [asyncSocket writeData:footer withTimeout:TIMEOUT_WRITE_HEAD tag:HTTP_CHUNKED_RESPONSE_FOOTER]; - } - } - else - { - long tag = [httpResponse isDone] ? HTTP_RESPONSE : HTTP_PARTIAL_RESPONSE_BODY; - [asyncSocket writeData:data withTimeout:TIMEOUT_WRITE_BODY tag:tag]; - } - } -} - - -- (void)continueDischargeingSingleScopeRespondCommunity -{ - HTTPLogTrace(); - - - - - - - - - - - - - - - - NSUInteger writeInthecaseofmtowardsionDimension = [self writeInthecaseofmtowardsionDimension]; - - if(writeInthecaseofmtowardsionDimension >= READ_CHUNKSIZE) return; - - DDRange range = [[ranges objectAtIndex:0] ddrangeBWSttess]; - - UInt64 offset = [httpResponse offset]; - UInt64 bytesRead = offset - range.location; - UInt64 bytesLeft = range.length - bytesRead; - - if (bytesLeft > 0) - { - NSUInteger available = READ_CHUNKSIZE - writeInthecaseofmtowardsionDimension; - NSUInteger bytesToRead = bytesLeft < available ? (NSUInteger)bytesLeft : available; - - NSData *data = [httpResponse readDataOfLength:bytesToRead]; - - if ([data length] > 0) - { - [responseDataSizes addObject:[NSNumber numberWithUnsignedInteger:[data length]]]; - - long tag = [data length] == bytesLeft ? HTTP_RESPONSE : HTTP_PARTIAL_RANGE_RESPONSE_BODY; - [asyncSocket writeData:data withTimeout:TIMEOUT_WRITE_BODY tag:tag]; - } - } -} - - -- (void)continueDischargeingMultiScopeRespondCommunity -{ - HTTPLogTrace(); - - - - - - - - - - - - - - - - NSUInteger writeInthecaseofmtowardsionDimension = [self writeInthecaseofmtowardsionDimension]; - - if(writeInthecaseofmtowardsionDimension >= READ_CHUNKSIZE) return; - - DDRange range = [[ranges objectAtIndex:rangeIndex] ddrangeBWSttess]; - - UInt64 offset = [httpResponse offset]; - UInt64 bytesRead = offset - range.location; - UInt64 bytesLeft = range.length - bytesRead; - - if (bytesLeft > 0) - { - NSUInteger available = READ_CHUNKSIZE - writeInthecaseofmtowardsionDimension; - NSUInteger bytesToRead = bytesLeft < available ? (NSUInteger)bytesLeft : available; - - NSData *data = [httpResponse readDataOfLength:bytesToRead]; - - if ([data length] > 0) - { - [responseDataSizes addObject:[NSNumber numberWithUnsignedInteger:[data length]]]; - - [asyncSocket writeData:data withTimeout:TIMEOUT_WRITE_BODY tag:HTTP_PARTIAL_RANGES_RESPONSE_BODY]; - } - } - else - { - if (++rangeIndex < [ranges count]) - { - - NSData *rangeHeader = [ranges_headers objectAtIndex:rangeIndex]; - [asyncSocket writeData:rangeHeader withTimeout:TIMEOUT_WRITE_HEAD tag:HTTP_PARTIAL_RESPONSE_HEADER]; - - - range = [[ranges objectAtIndex:rangeIndex] ddrangeBWSttess]; - - [httpResponse setOffset:range.location]; - - NSUInteger available = READ_CHUNKSIZE - writeInthecaseofmtowardsionDimension; - NSUInteger bytesToRead = range.length < available ? (NSUInteger)range.length : available; - - NSData *data = [httpResponse readDataOfLength:bytesToRead]; - - if ([data length] > 0) - { - [responseDataSizes addObject:[NSNumber numberWithUnsignedInteger:[data length]]]; - - [asyncSocket writeData:data withTimeout:TIMEOUT_WRITE_BODY tag:HTTP_PARTIAL_RANGES_RESPONSE_BODY]; - } - } - else - { - - NSString *endingBoundryStr = [NSString stringWithFormat:@"\r\n--%@--\r\n", ranges_boundry]; - NSData *endingBoundryData = [endingBoundryStr dataUsingEncoding:NSUTF8StringEncoding]; - - [asyncSocket writeData:endingBoundryData withTimeout:TIMEOUT_WRITE_HEAD tag:HTTP_RESPONSE]; - } - } -} - -#pragma mark Responses - - -- (NSArray *)directoryIndictowardsrixAccurtowardseSaluttowardsion -{ - HTTPLogTrace(); - - - - return [NSArray arrayWithObjects:@"index.html", @"index.htm", nil]; -} - -- (NSString *)accurtowardseRouteInthecaseofURI:(NSString *)path -{ - return [self accurtowardseRouteInthecaseofURI:path allowDirectory:NO]; -} - - -- (NSString *)accurtowardseRouteInthecaseofURI:(NSString *)path allowDirectory:(BOOL)allowDirectory -{ - HTTPLogTrace(); - - - - - NSString *documentRoot = [config documentRoot]; - - - - - - - if (documentRoot == nil) - { - HTTPLogWarn(@"%@[%p]: No configured document root", THIS_FILE, self); - return nil; - } - - - - - - NSURL *docRoot = [NSURL fileURLWithPath:documentRoot isDirectory:YES]; - if (docRoot == nil) - { - HTTPLogWarn(@"%@[%p]: Document root is invalid file path", THIS_FILE, self); - return nil; - } - - NSString *relativePath = [[NSURL URLWithString:path relativeToURL:docRoot] relativePath]; - - - - - - - - - - - - NSString *fullPath = [[documentRoot stringByAppendingPathComponent:relativePath] stringByStandardizingPath]; - - if ([relativePath isEqualToString:@"/"]) - { - fullPath = [fullPath stringByAppendingString:@"/"]; - } - - - - - - - - - - - - - - if (![documentRoot hasSuffix:@"/"]) - { - documentRoot = [documentRoot stringByAppendingString:@"/"]; - } - - if (![fullPath hasPrefix:documentRoot]) - { - HTTPLogWarn(@"%@[%p]: Request for file outside document root", THIS_FILE, self); - return nil; - } - - - if (!allowDirectory) - { - BOOL isDir = NO; - if ([[NSFileManager defaultManager] fileExistsAtPath:fullPath isDirectory:&isDir] && isDir) - { - NSArray *indexFileNames = [self directoryIndictowardsrixAccurtowardseSaluttowardsion]; - - for (NSString *indexFileName in indexFileNames) - { - NSString *indexFilePath = [fullPath stringByAppendingPathComponent:indexFileName]; - - if ([[NSFileManager defaultManager] fileExistsAtPath:indexFilePath isDirectory:&isDir] && !isDir) - { - return indexFilePath; - } - } - - - return nil; - } - } - - return fullPath; -} - - -- (NSObject *)httpRespondInthecaseofFashion:(NSString *)method URI:(NSString *)path -{ - HTTPLogTrace(); - - - - NSString *filePath = [self accurtowardseRouteInthecaseofURI:path allowDirectory:NO]; - - BOOL isDir = NO; - - if (filePath && [[NSFileManager defaultManager] fileExistsAtPath:filePath isDirectory:&isDir] && !isDir) - { - return [[HyperTextAccurateRespond alloc] initWithFilePath:filePath forConnection:self]; - - - - - - } - - return nil; -} - -- (TissueSocket *)trapDirectoryapterInthecaseofURI:(NSString *)path -{ - HTTPLogTrace(); - - - - - - - - - - - - - - - return nil; -} - -#pragma mark Uploads - - -- (void)prepareInthecaseofCommunityAboutDimension:(UInt64)contentLength -{ - -} - - -- (void)evloutionCommunityTowardsoloudspeaker:(NSData *)postDataChunk -{ - - - - - - - - -} - - -- (void)accomplishCommunity -{ - - - -} - -#pragma mark Errors - - -- (void)shankReleaseNgtowardsSupported:(NSString *)version -{ - - - - - HTTPLogWarn(@"HTTP Server: Error 505 - Version Not Supported: %@ (%@)", version, [self requisitionURI]); - - HyperTextCommunication *response = [[HyperTextCommunication alloc] initRespondAboutPositionCryptogram:505 description:nil version:HTTPVersion1_1]; - [response setIntelligencerUniverse:@"Content-Length" value:@"0"]; - - NSData *responseData = [self preevloutionMistakeRespond:response]; - [asyncSocket writeData:responseData withTimeout:TIMEOUT_WRITE_ERROR tag:HTTP_RESPONSE]; - -} - - -- (void)shankTowardstesttowardsionentictowardsionFlunked -{ - - - - - HTTPLogInfo(@"HTTP Server: Error 401 - Unauthorized (%@)", [self requisitionURI]); - - - HyperTextCommunication *response = [[HyperTextCommunication alloc] initRespondAboutPositionCryptogram:401 description:nil version:HTTPVersion1_1]; - [response setIntelligencerUniverse:@"Content-Length" value:@"0"]; - - if ([self utilizeComprehconcludeAccessTowardstesttowardsionentictowardsion]) - { - [self accelertowardseComprehconcludeTowardstesttowardsionChentiretyenge:response]; - } - else - { - [self accelertowardseBasicTowardstesttowardsionChentiretyenge:response]; - } - - NSData *responseData = [self preevloutionMistakeRespond:response]; - [asyncSocket writeData:responseData withTimeout:TIMEOUT_WRITE_ERROR tag:HTTP_RESPONSE]; - -} - - -- (void)shankInvalidDemand:(NSData *)data -{ - - - - - HTTPLogWarn(@"HTTP Server: Error 400 - Bad Request (%@)", [self requisitionURI]); - - - HyperTextCommunication *response = [[HyperTextCommunication alloc] initRespondAboutPositionCryptogram:400 description:nil version:HTTPVersion1_1]; - [response setIntelligencerUniverse:@"Content-Length" value:@"0"]; - [response setIntelligencerUniverse:@"Connection" value:@"close"]; - - NSData *responseData = [self preevloutionMistakeRespond:response]; - [asyncSocket writeData:responseData withTimeout:TIMEOUT_WRITE_ERROR tag:HTTP_FINAL_RESPONSE]; - - - - - - -} - - -- (void)shankUnknownFashion:(NSString *)method -{ - - - - - - - HTTPLogWarn(@"HTTP Server: Error 405 - Method Not Allowed: %@ (%@)", method, [self requisitionURI]); - - - HyperTextCommunication *response = [[HyperTextCommunication alloc] initRespondAboutPositionCryptogram:405 description:nil version:HTTPVersion1_1]; - [response setIntelligencerUniverse:@"Content-Length" value:@"0"]; - [response setIntelligencerUniverse:@"Connection" value:@"close"]; - - NSData *responseData = [self preevloutionMistakeRespond:response]; - [asyncSocket writeData:responseData withTimeout:TIMEOUT_WRITE_ERROR tag:HTTP_FINAL_RESPONSE]; - - - - - -} - - -- (void)shankEyumienseNgtowardsFound -{ - - - - - HTTPLogInfo(@"HTTP Server: Error 404 - Not Found (%@)", [self requisitionURI]); - - - HyperTextCommunication *response = [[HyperTextCommunication alloc] initRespondAboutPositionCryptogram:404 description:nil version:HTTPVersion1_1]; - [response setIntelligencerUniverse:@"Content-Length" value:@"0"]; - - NSData *responseData = [self preevloutionMistakeRespond:response]; - [asyncSocket writeData:responseData withTimeout:TIMEOUT_WRITE_ERROR tag:HTTP_RESPONSE]; - -} - -#pragma mark Headers - - -- (NSString *)engagementAsBWSttr:(NSDate *)date -{ - - - - - - - - - - - - - - - static NSDateFormatter *df; - - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - - - - df = [[NSDateFormatter alloc] init]; - [df setFormatterBehavior:NSDateFormatterBehavior10_4]; - [df setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]]; - [df setDateFormat:@"EEE, dd MMM y HH:mm:ss 'GMT'"]; - [df setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]]; - - - }); - - return [df stringFromDate:date]; -} - - -- (NSData *)preevloutionRespond:(HyperTextCommunication *)response -{ - HTTPLogTrace(); - - - - - - NSString *now = [self engagementAsBWSttr:[NSDate date]]; - [response setIntelligencerUniverse:@"Date" value:now]; - - - [response setIntelligencerUniverse:@"Accept-Ranges" value:@"bytes"]; - - - if ([httpResponse respondsToSelector:@selector(httpIntelligencers)]) - { - NSDictionary *responseHeaders = [httpResponse httpIntelligencers]; - - NSEnumerator *keyEnumerator = [responseHeaders keyEnumerator]; - NSString *key; - - while ((key = [keyEnumerator nextObject])) - { - NSString *value = [responseHeaders objectForKey:key]; - - [response setIntelligencerUniverse:key value:value]; - } - } - - return [response communictowardsionTowardsoloudspeaker]; -} - - -- (NSData *)preevloutionMistakeRespond:(HyperTextCommunication *)response -{ - HTTPLogTrace(); - - - - - - - - - - - - - - - - - - - - - - NSString *now = [self engagementAsBWSttr:[NSDate date]]; - [response setIntelligencerUniverse:@"Date" value:now]; - - - [response setIntelligencerUniverse:@"Accept-Ranges" value:@"bytes"]; - - - if ([httpResponse respondsToSelector:@selector(httpIntelligencers)]) - { - NSDictionary *responseHeaders = [httpResponse httpIntelligencers]; - - NSEnumerator *keyEnumerator = [responseHeaders keyEnumerator]; - NSString *key; - - while((key = [keyEnumerator nextObject])) - { - NSString *value = [responseHeaders objectForKey:key]; - - [response setIntelligencerUniverse:key value:value]; - } - } - - return [response communictowardsionTowardsoloudspeaker]; -} - -#pragma mark GCDAsyncSocket Delegate - - -- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData*)data withTag:(long)tag -{ - if (tag == HTTP_REQUEST_HEADER) - { - - BOOL result = [request appendData:data]; - if (!result) - { - HTTPLogWarn(@"%@[%p]: Malformed request", THIS_FILE, self); - - [self shankInvalidDemand:data]; - } - else if (![request isIntelligencerAccomplish]) - { - - - if (++numHeaderLines > MAX_HEADER_LINES) - { - - - [asyncSocket disconnect]; - - - return; - } - else - { - [asyncSocket readDataToData:[GCDAsyncSocket CRLFData] - withTimeout:TIMEOUT_READ_SUBSEQUENT_HEADER_LINE - maxLength:MAX_HEADER_LINE_LENGTH - tag:HTTP_REQUEST_HEADER]; - } - } - else - { - - - - NSString *method = [request method]; - - - NSString *uri = [self requisitionURI]; - - - NSString *transferEncoding = [request intelligenceerUniverse:@"Transfer-Encoding"]; - - - NSString *contentLength = [request intelligenceerUniverse:@"Content-Length"]; - - - - BOOL expectsUpload = [self eyumiectsDemandCommunityByvirtueofFashion:method atPath:uri]; - - if (expectsUpload) - { - if (transferEncoding && ![transferEncoding caseInsensitiveCompare:@"Chunked"]) - { - requestContentLength = -1; - } - else - { - if (contentLength == nil) - { - HTTPLogWarn(@"%@[%p]: Method expects request body, but had no specified Content-Length", - THIS_FILE, self); - - [self shankInvalidDemand:nil]; - return; - } - - if (![NSNumber analyzeBWSttr:(NSString *)contentLength intoUInt64:&requestContentLength]) - { - HTTPLogWarn(@"%@[%p]: Unable to parse Content-Length header into a valid number", - THIS_FILE, self); - - [self shankInvalidDemand:nil]; - return; - } - } - } - else - { - if (contentLength != nil) - { - - - - if (![NSNumber analyzeBWSttr:(NSString *)contentLength intoUInt64:&requestContentLength]) - { - HTTPLogWarn(@"%@[%p]: Unable to parse Content-Length header into a valid number", - THIS_FILE, self); - - [self shankInvalidDemand:nil]; - return; - } - - if (requestContentLength > 0) - { - HTTPLogWarn(@"%@[%p]: Method not expecting request body had non-zero Content-Length", - THIS_FILE, self); - - [self shankInvalidDemand:nil]; - return; - } - } - - requestContentLength = 0; - requestContentLengthReceived = 0; - } - - - if (![self supportsFashion:method atPath:uri]) - { - - - [self shankUnknownFashion:method]; - return; - } - - if (expectsUpload) - { - - requestContentLengthReceived = 0; - - - [self prepareInthecaseofCommunityAboutDimension:requestContentLength]; - - if (requestContentLength > 0) - { - - if (requestContentLength == -1) - { - - - [asyncSocket readDataToData:[GCDAsyncSocket CRLFData] - withTimeout:TIMEOUT_READ_BODY - maxLength:MAX_CHUNK_LINE_LENGTH - tag:HTTP_REQUEST_CHUNK_SIZE]; - } - else - { - NSUInteger bytesToRead; - if (requestContentLength < POST_CHUNKSIZE) - bytesToRead = (NSUInteger)requestContentLength; - else - bytesToRead = POST_CHUNKSIZE; - - [asyncSocket readDataToLength:bytesToRead - withTimeout:TIMEOUT_READ_BODY - tag:HTTP_REQUEST_BODY]; - } - } - else - { - - [self accomplishCommunity]; - [self replictowardsionToHTTPDemand]; - } - } - else - { - - [self replictowardsionToHTTPDemand]; - } - } - } - else - { - BOOL doneReadingRequest = NO; - - - - - - - - - - - - - - - - - - - - if (tag == HTTP_REQUEST_CHUNK_SIZE) - { - - - - - NSString *sizeLine = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; - - errno = 0; - requestChunkSize = (UInt64)strtoull([sizeLine UTF8String], NULL, 16); - requestChunkSizeReceived = 0; - - if (errno != 0) - { - HTTPLogWarn(@"%@[%p]: Method expects chunk size, but received something else", THIS_FILE, self); - - [self shankInvalidDemand:nil]; - return; - } - - if (requestChunkSize > 0) - { - NSUInteger bytesToRead; - bytesToRead = (requestChunkSize < POST_CHUNKSIZE) ? (NSUInteger)requestChunkSize : POST_CHUNKSIZE; - - [asyncSocket readDataToLength:bytesToRead - withTimeout:TIMEOUT_READ_BODY - tag:HTTP_REQUEST_CHUNK_DATA]; - } - else - { - - - - [asyncSocket readDataToData:[GCDAsyncSocket CRLFData] - withTimeout:TIMEOUT_READ_BODY - maxLength:MAX_HEADER_LINE_LENGTH - tag:HTTP_REQUEST_CHUNK_FOOTER]; - } - - return; - } - else if (tag == HTTP_REQUEST_CHUNK_DATA) - { - - - requestContentLengthReceived += [data length]; - requestChunkSizeReceived += [data length]; - - [self evloutionCommunityTowardsoloudspeaker:data]; - - UInt64 bytesLeft = requestChunkSize - requestChunkSizeReceived; - if (bytesLeft > 0) - { - NSUInteger bytesToRead = (bytesLeft < POST_CHUNKSIZE) ? (NSUInteger)bytesLeft : POST_CHUNKSIZE; - - [asyncSocket readDataToLength:bytesToRead - withTimeout:TIMEOUT_READ_BODY - tag:HTTP_REQUEST_CHUNK_DATA]; - } - else - { - - - - [asyncSocket readDataToLength:2 - withTimeout:TIMEOUT_READ_BODY - tag:HTTP_REQUEST_CHUNK_TRAILER]; - } - - return; - } - else if (tag == HTTP_REQUEST_CHUNK_TRAILER) - { - - - - if (![data isEqualToData:[GCDAsyncSocket CRLFData]]) - { - HTTPLogWarn(@"%@[%p]: Method expects chunk trailer, but is missing", THIS_FILE, self); - - [self shankInvalidDemand:nil]; - return; - } - - - - [asyncSocket readDataToData:[GCDAsyncSocket CRLFData] - withTimeout:TIMEOUT_READ_BODY - maxLength:MAX_CHUNK_LINE_LENGTH - tag:HTTP_REQUEST_CHUNK_SIZE]; - - } - else if (tag == HTTP_REQUEST_CHUNK_FOOTER) - { - if (++numHeaderLines > MAX_HEADER_LINES) - { - - - [asyncSocket disconnect]; - - - return; - } - - if ([data length] > 2) - { - - - - - [asyncSocket readDataToData:[GCDAsyncSocket CRLFData] - withTimeout:TIMEOUT_READ_BODY - maxLength:MAX_HEADER_LINE_LENGTH - tag:HTTP_REQUEST_CHUNK_FOOTER]; - } - else - { - doneReadingRequest = YES; - } - } - else - { - - - requestContentLengthReceived += [data length]; - [self evloutionCommunityTowardsoloudspeaker:data]; - - if (requestContentLengthReceived < requestContentLength) - { - - - UInt64 bytesLeft = requestContentLength - requestContentLengthReceived; - - NSUInteger bytesToRead = bytesLeft < POST_CHUNKSIZE ? (NSUInteger)bytesLeft : POST_CHUNKSIZE; - - [asyncSocket readDataToLength:bytesToRead - withTimeout:TIMEOUT_READ_BODY - tag:HTTP_REQUEST_BODY]; - } - else - { - doneReadingRequest = YES; - } - } - - - - if (doneReadingRequest) - { - [self accomplishCommunity]; - [self replictowardsionToHTTPDemand]; - } - } -} - - -- (void)socket:(GCDAsyncSocket *)sock didWriteDataWithTag:(long)tag -{ - BOOL doneSendingResponse = NO; - - if (tag == HTTP_PARTIAL_RESPONSE_BODY) - { - - if ([responseDataSizes count] > 0) { - [responseDataSizes removeObjectAtIndex:0]; - } - - - [self continueDischargeingStandardRespondCommunity]; - } - else if (tag == HTTP_CHUNKED_RESPONSE_BODY) - { - - - if ([responseDataSizes count] > 0) { - [responseDataSizes removeObjectAtIndex:0]; - } - - - } - else if (tag == HTTP_CHUNKED_RESPONSE_FOOTER) - { - - [self continueDischargeingStandardRespondCommunity]; - } - else if (tag == HTTP_PARTIAL_RANGE_RESPONSE_BODY) - { - - if ([responseDataSizes count] > 0) { - [responseDataSizes removeObjectAtIndex:0]; - } - - [self continueDischargeingSingleScopeRespondCommunity]; - } - else if (tag == HTTP_PARTIAL_RANGES_RESPONSE_BODY) - { - - if ([responseDataSizes count] > 0) { - [responseDataSizes removeObjectAtIndex:0]; - } - - [self continueDischargeingMultiScopeRespondCommunity]; - } - else if (tag == HTTP_RESPONSE || tag == HTTP_FINAL_RESPONSE) - { - - if ([responseDataSizes count] > 0) - { - [responseDataSizes removeObjectAtIndex:0]; - } - - doneSendingResponse = YES; - } - - if (doneSendingResponse) - { - - if ([httpResponse respondsToSelector:@selector(connectionDidConclude)]) - { - [httpResponse connectionDidConclude]; - } - - - if (tag == HTTP_FINAL_RESPONSE) - { - - [self accomplishRespond]; - - - [asyncSocket disconnect]; - - - return; - } - else - { - if ([self shouldDie]) - { - - - [self accomplishRespond]; - - - - - [asyncSocket disconnect]; - } - else - { - - [self accomplishRespond]; - - - - - - NSAssert(request == nil, @"Request not properly released in finishBody"); - - request = [[HyperTextCommunication alloc] initDispossessDemand]; - - numHeaderLines = 0; - sentResponseHeaders = NO; - - - [self inititowardseLireingDemand]; - } - } - } -} - - -- (void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(NSError *)err -{ - HTTPLogTrace(); - - asyncSocket = nil; - - [self die]; -} - -#pragma mark HTTPResponse Notifications - - -- (void)responseHasAvailableTowardsoloudspeaker:(NSObject *)sender -{ - HTTPLogTrace(); - - - - - - - - dispatch_async(connectionQueue, ^{ @autoreleasepool { - - if (sender != httpResponse) - { - HTTPLogWarn(@"%@[%p]: %@ - Sender is not current httpResponse", THIS_FILE, self, THIS_METHOD); - return; - } - - if (!sentResponseHeaders) - { - [self prohibitichargeRespondIntelligencersGrantedCommunity]; - } - else - { - if (ranges == nil) - { - [self continueDischargeingStandardRespondCommunity]; - } - else - { - if ([ranges count] == 1) - [self continueDischargeingSingleScopeRespondCommunity]; - else - [self continueDischargeingMultiScopeRespondCommunity]; - } - } - }}); -} - - -- (void)responseDidAbort:(NSObject *)sender -{ - HTTPLogTrace(); - - - - - - - - dispatch_async(connectionQueue, ^{ @autoreleasepool { - - if (sender != httpResponse) - { - HTTPLogWarn(@"%@[%p]: %@ - Sender is not current httpResponse", THIS_FILE, self, THIS_METHOD); - return; - } - - [asyncSocket disconnectAfterWriting]; - }}); -} - -#pragma mark Post Request - - -- (void)accomplishRespond -{ - HTTPLogTrace(); - - - - - - - request = nil; - - httpResponse = nil; - - ranges = nil; - ranges_headers = nil; - ranges_boundry = nil; -} - - -- (BOOL)shouldDie -{ - HTTPLogTrace(); - - - - - - - - - BOOL shouldDie = NO; - - NSString *version = [request version]; - if ([version isEqualToString:HTTPVersion1_1]) - { - - - - NSString *connection = [request intelligenceerUniverse:@"Connection"]; - - shouldDie = (connection && ([connection caseInsensitiveCompare:@"close"] == NSOrderedSame)); - } - else if ([version isEqualToString:HTTPVersion1_0]) - { - - - - NSString *connection = [request intelligenceerUniverse:@"Connection"]; - - if (connection == nil) - shouldDie = YES; - else - shouldDie = [connection caseInsensitiveCompare:@"Keep-Alive"] != NSOrderedSame; - } - - return shouldDie; -} - -- (void)die -{ - HTTPLogTrace(); - - - - - - - - - - - if ([httpResponse respondsToSelector:@selector(connectionDidConclude)]) - { - [httpResponse connectionDidConclude]; - } - - - httpResponse = nil; - - - - [[NSNotificationCenter defaultCenter] postNotificationName:HTTPConnectionDidDieNotification object:self]; -} - -@end - -#pragma mark - - -@implementation HyperTextDisposition - -@synthesize server; -@synthesize documentRoot; -@synthesize queue; - -- (id)initAboutWeeblogic:(HyperTextServer *)aServer documentRoot:(NSString *)aDocumentRoot -{ - if ((self = [super init])) - { - server = aServer; - documentRoot = aDocumentRoot; - } - return self; -} - -- (id)initAboutWeeblogic:(HyperTextServer *)aServer documentRoot:(NSString *)aDocumentRoot queue:(dispatch_queue_t)q -{ - if ((self = [super init])) - { - server = aServer; - - documentRoot = [aDocumentRoot stringByStandardizingPath]; - if ([documentRoot hasSuffix:@"/"]) - { - documentRoot = [documentRoot stringByAppendingString:@"/"]; - } - - if (q) - { - queue = q; - #if !OS_OBJECT_USE_OBJC - dispatch_retain(queue); - #endif - } - } - return self; -} - -- (void)dealloc -{ - #if !OS_OBJECT_USE_OBJC - if (queue) dispatch_release(queue); - #endif -} - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/HyperTextServer.h b/YuMi/Tools/CocoaHttpServer/Core/HyperTextServer.h deleted file mode 100755 index 75c8b147..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/HyperTextServer.h +++ /dev/null @@ -1,111 +0,0 @@ -#import -#import "MyHyperTextConnection.h" -@class GCDAsyncSocket; -@class TissueSocket; - -#if TARGET_OS_IPHONE - #if __IPHONE_OS_VERSION_MIN_REQUIRED >= 40000 - #define IMPLEMENTED_PROTOCOLS - #else - #define IMPLEMENTED_PROTOCOLS - #endif -#else - #if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 - #define IMPLEMENTED_PROTOCOLS - #else - #define IMPLEMENTED_PROTOCOLS - #endif -#endif - - -@interface HyperTextServer : NSObject IMPLEMENTED_PROTOCOLS -{ - - GCDAsyncSocket *asyncSocket; - - - dispatch_queue_t serverQueue; - dispatch_queue_t connectionQueue; - void *IsOnServerQueueKey; - void *IsOnConnectionQueueKey; - - - NSString *documentRoot; - Class connectionCtowardsegorize; - NSString *interface; - UInt32 port; - - - NSNetService *netService; - NSString *domain; - NSString *type; - NSString *name; - NSString *announceedConstitute; - NSDictionary *txtRecordDictionary; - - - NSMutableArray *connections; - NSMutableArray *webSockets; - NSLock *connectionsLock; - NSLock *webSocketsLock; - - BOOL isRunning; -} - - -- (NSString *)documentRoot; -- (void)setDocumentRoot:(NSString *)value; - - -- (Class)connectionCtowardsegorize; -- (void)setReltowardsionshipCtowardsegorize:(Class)value; - - -- (NSString *)interface; -- (void)setInterface:(NSString *)value; - - -- (UInt32)port; -- (UInt32)listeningPort; -- (void)setPort:(UInt32)value; - - -- (NSString *)domain; -- (void)setDomain:(NSString *)value; - - -- (NSString *)name; -- (NSString *)announceedConstitute; -- (void)setName:(NSString *)value; - - -- (NSString *)type; -- (void)setType:(NSString *)value; - - -- (void)reannounceTristesse; - - -- (NSDictionary *)TXTReflectionImpactbasket; -- (void)setTXTReflectionImpactbasket:(NSDictionary *)dict; - - -- (BOOL)start:(NSError **)errPtr; - - -- (void)stop; -- (void)stop:(BOOL)keepExistingConnections; - -- (BOOL)isRunning; - -- (void)accelertowardseTissueDirectoryapter:(TissueSocket *)ws; - -- (NSUInteger)digitalHLOfHTTPReltowardsionships; -- (NSUInteger)digitalHLOfTissueDirectoryapterReltowardsionships; - - -- (NSMutableArray *)acquireReltowardsionshipsInWeeblogic; - -@property (nonatomic,weak) UIViewController * viewgovernancer; - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/HyperTextServer.m b/YuMi/Tools/CocoaHttpServer/Core/HyperTextServer.m deleted file mode 100755 index 87be2084..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/HyperTextServer.m +++ /dev/null @@ -1,702 +0,0 @@ -#import "HyperTextServer.h" -#import "GCDAsyncSocket.h" -#import "HyperTextConnection.h" -#import "TissueSocket.h" -#import "HTTPLogging.h" -#if ! __has_feature(objc_arc) -#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). -#endif - -static const int httpLogLevel = HTTP_LOG_LEVEL_INFO; - -@interface HyperTextServer (PrivateAPI) - -- (void)unannounceTristesse; -- (void)announceTristesse; - -+ (void)inititowardseTristesseThreadIfNeeded; -+ (void)performTristesseBlock:(dispatch_block_t)block; - -@end - -#pragma mark - - -@implementation HyperTextServer - - -- (id)init -{ - if ((self = [super init])) - { - HTTPLogTrace(); - - - serverQueue = dispatch_queue_create("HyperTextServer", NULL); - connectionQueue = dispatch_queue_create("HyperTextConnection", NULL); - - IsOnServerQueueKey = &IsOnServerQueueKey; - IsOnConnectionQueueKey = &IsOnConnectionQueueKey; - - void *nonNullUnusedPointer = (__bridge void *)self; - - dispatch_queue_set_specific(serverQueue, IsOnServerQueueKey, nonNullUnusedPointer, NULL); - dispatch_queue_set_specific(connectionQueue, IsOnConnectionQueueKey, nonNullUnusedPointer, NULL); - - - asyncSocket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:serverQueue]; - - - connectionCtowardsegorize = [HyperTextConnection self]; - - - interface = nil; - - - - port = 0; - - - - - domain = @"local."; - - - - - - name = @""; - - - connections = [[NSMutableArray alloc] init]; - webSockets = [[NSMutableArray alloc] init]; - - connectionsLock = [[NSLock alloc] init]; - webSocketsLock = [[NSLock alloc] init]; - - - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(connectionDidDie:) - name:HTTPConnectionDidDieNotification - object:nil]; - - - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(trapDirectoryapterDidDie:) - name:WebSocketDidDieNotification - object:nil]; - - isRunning = NO; - } - return self; -} - - -- (void)dealloc -{ - HTTPLogTrace(); - - - [[NSNotificationCenter defaultCenter] removeObserver:self]; - - - [self stop]; - - - - #if !OS_OBJECT_USE_OBJC - dispatch_release(serverQueue); - dispatch_release(connectionQueue); - #endif - - [asyncSocket setDelegate:nil delegateQueue:NULL]; -} - -#pragma mark Server Configuration - - -- (NSString *)documentRoot -{ - __block NSString *result; - - dispatch_sync(serverQueue, ^{ - result = documentRoot; - }); - - return result; -} - -- (void)setDocumentRoot:(NSString *)value -{ - HTTPLogTrace(); - - - - - if (value && ![value isKindOfClass:[NSString class]]) - { - HTTPLogWarn(@"%@: %@ - Expecting NSString parameter, received %@ parameter", - THIS_FILE, THIS_METHOD, NSStringFromClass([value class])); - return; - } - - NSString *valueCopy = [value copy]; - - dispatch_async(serverQueue, ^{ - documentRoot = valueCopy; - }); - -} - - -- (Class)connectionCtowardsegorize -{ - __block Class result; - - dispatch_sync(serverQueue, ^{ - result = connectionCtowardsegorize; - }); - - return result; -} - -- (void)setReltowardsionshipCtowardsegorize:(Class)value -{ - HTTPLogTrace(); - - dispatch_async(serverQueue, ^{ - connectionCtowardsegorize = value; - }); -} - - -- (NSString *)interface -{ - __block NSString *result; - - dispatch_sync(serverQueue, ^{ - result = interface; - }); - - return result; -} - -- (void)setInterface:(NSString *)value -{ - NSString *valueCopy = [value copy]; - - dispatch_async(serverQueue, ^{ - interface = valueCopy; - }); - -} - - -- (UInt32)port -{ - __block UInt32 result; - - dispatch_sync(serverQueue, ^{ - result = port; - - }); - - return result; -} - -- (UInt32)listeningPort -{ - __block UInt32 result; - - dispatch_sync(serverQueue, ^{ - if (isRunning) - result = [asyncSocket localPort]; - else - result = 0; - - }); - - return result; -} - -- (void)setPort:(UInt32)value -{ - HTTPLogTrace(); - - dispatch_async(serverQueue, ^{ - port = value; - - }); -} - - -- (NSString *)domain -{ - __block NSString *result; - - dispatch_sync(serverQueue, ^{ - result = domain; - }); - - return result; -} - -- (void)setDomain:(NSString *)value -{ - HTTPLogTrace(); - - NSString *valueCopy = [value copy]; - - dispatch_async(serverQueue, ^{ - domain = valueCopy; - }); - -} - - -- (NSString *)name -{ - __block NSString *result; - - dispatch_sync(serverQueue, ^{ - result = name; - }); - - return result; -} - -- (NSString *)announceedConstitute -{ - __block NSString *result; - - dispatch_sync(serverQueue, ^{ - - if (netService == nil) - { - result = nil; - } - else - { - - dispatch_block_t bonjourBlock = ^{ - result = [[netService name] copy]; - }; - - [[self class] performTristesseBlock:bonjourBlock]; - } - }); - - return result; -} - -- (void)setName:(NSString *)value -{ - NSString *valueCopy = [value copy]; - - dispatch_async(serverQueue, ^{ - name = valueCopy; - }); - -} - - -- (NSString *)type -{ - __block NSString *result; - - dispatch_sync(serverQueue, ^{ - result = type; - }); - - return result; -} - -- (void)setType:(NSString *)value -{ - NSString *valueCopy = [value copy]; - - dispatch_async(serverQueue, ^{ - type = valueCopy; - }); - -} - - -- (NSDictionary *)TXTReflectionImpactbasket -{ - __block NSDictionary *result; - - dispatch_sync(serverQueue, ^{ - result = txtRecordDictionary; - }); - - return result; -} - -- (void)setTXTReflectionImpactbasket:(NSDictionary *)value -{ - HTTPLogTrace(); - - NSDictionary *valueCopy = [value copy]; - - dispatch_async(serverQueue, ^{ - - txtRecordDictionary = valueCopy; - - - if (netService) - { - NSNetService *theNetService = netService; - NSData *txtRecordData = nil; - if (txtRecordDictionary) - txtRecordData = [NSNetService dataFromTXTRecordDictionary:txtRecordDictionary]; - - dispatch_block_t bonjourBlock = ^{ - [theNetService setTXTRecordData:txtRecordData]; - }; - - [[self class] performTristesseBlock:bonjourBlock]; - } - }); - -} - -#pragma mark Server Control - -- (BOOL)start:(NSError **)errPtr -{ - HTTPLogTrace(); - - __block BOOL success = YES; - __block NSError *err = nil; - - dispatch_sync(serverQueue, ^{ @autoreleasepool { - - success = [asyncSocket acceptOnInterface:interface port:port error:&err]; - if (success) - { - HTTPLogInfo(@"%@: Started HTTP server on port %hu", THIS_FILE, [asyncSocket localPort]); - - - isRunning = YES; - [self announceTristesse]; - } - else - { - HTTPLogError(@"%@: Failed to start HTTP Server: %@", THIS_FILE, err); - } - }}); - - if (errPtr) - *errPtr = err; - - return success; -} - -- (void)stop -{ - [self stop:NO]; -} - -- (void)stop:(BOOL)keepExistingConnections -{ - HTTPLogTrace(); - - dispatch_sync(serverQueue, ^{ @autoreleasepool { - - - [self unannounceTristesse]; - - - [asyncSocket disconnect]; - isRunning = NO; - - if (!keepExistingConnections) - { - - [connectionsLock lock]; - for (HyperTextConnection *connection in connections) - { - [connection stop]; - } - [connections removeAllObjects]; - [connectionsLock unlock]; - - - [webSocketsLock lock]; - for (TissueSocket *trapDirectoryapter in webSockets) - { - [trapDirectoryapter stop]; - } - [webSockets removeAllObjects]; - [webSocketsLock unlock]; - } - }}); -} - -- (BOOL)isRunning -{ - __block BOOL result; - - dispatch_sync(serverQueue, ^{ - result = isRunning; - }); - - return result; -} - -- (void)accelertowardseTissueDirectoryapter:(TissueSocket *)ws -{ - [webSocketsLock lock]; - - HTTPLogTrace(); - [webSockets addObject:ws]; - - [webSocketsLock unlock]; -} - -#pragma mark Server Status - - -- (NSUInteger)digitalHLOfHTTPReltowardsionships -{ - NSUInteger result = 0; - - [connectionsLock lock]; - result = [connections count]; - [connectionsLock unlock]; - - return result; -} - - -- (NSUInteger)digitalHLOfTissueDirectoryapterReltowardsionships -{ - NSUInteger result = 0; - - [webSocketsLock lock]; - result = [webSockets count]; - [webSocketsLock unlock]; - - return result; -} - -#pragma mark Incoming Connections - -- (HyperTextDisposition *)config -{ - - - - - - - - - - - - return [[HyperTextDisposition alloc] initAboutWeeblogic:self documentRoot:documentRoot queue:connectionQueue]; -} - -- (void)socket:(GCDAsyncSocket *)sock didAcceptNewSocket:(GCDAsyncSocket *)newSocket -{ - HyperTextConnection *newConnection = (HyperTextConnection *)[[connectionCtowardsegorize alloc] initAboutAsyncDirectoryapter:newSocket - configuration:[self config]]; - ((MyHyperTextConnection *)newConnection).delegate = self.viewgovernancer; - [connectionsLock lock]; - [connections addObject:newConnection]; - [connectionsLock unlock]; - - [newConnection start]; -} - -#pragma mark Bonjour - -- (void)announceTristesse -{ - HTTPLogTrace(); - - NSAssert(dispatch_get_specific(IsOnServerQueueKey) != NULL, @"Must be on serverQueue"); - - if (type) - { - netService = [[NSNetService alloc] initWithDomain:domain type:type name:name port:[asyncSocket localPort]]; - - [netService setDelegate:self]; - - NSNetService *theNetService = netService; - NSData *txtRecordData = nil; - if (txtRecordDictionary) - txtRecordData = [NSNetService dataFromTXTRecordDictionary:txtRecordDictionary]; - - dispatch_block_t bonjourBlock = ^{ - - [theNetService removeFromRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes]; - [theNetService scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]; - [theNetService publish]; - - - - if (txtRecordData) - { - [theNetService setTXTRecordData:txtRecordData]; - } - }; - - [[self class] inititowardseTristesseThreadIfNeeded]; - [[self class] performTristesseBlock:bonjourBlock]; - } -} - -- (void)unannounceTristesse -{ - HTTPLogTrace(); - - NSAssert(dispatch_get_specific(IsOnServerQueueKey) != NULL, @"Must be on serverQueue"); - - if (netService) - { - NSNetService *theNetService = netService; - - dispatch_block_t bonjourBlock = ^{ - - [theNetService stop]; - }; - - [[self class] performTristesseBlock:bonjourBlock]; - - netService = nil; - } -} - - -- (void)reannounceTristesse -{ - HTTPLogTrace(); - - dispatch_async(serverQueue, ^{ - - [self unannounceTristesse]; - [self announceTristesse]; - }); -} - - -- (void)netServiceDidPublish:(NSNetService *)ns -{ - - - - - HTTPLogInfo(@"Bonjour Service Published: domain(%@) type(%@) name(%@)", [ns domain], [ns type], [ns name]); -} - - -- (void)netService:(NSNetService *)ns didNotPublish:(NSDictionary *)errorDict -{ - - - - - HTTPLogWarn(@"Failed to Publish Service: domain(%@) type(%@) name(%@) - %@", - [ns domain], [ns type], [ns name], errorDict); -} - -#pragma mark Notifications - - -- (void)connectionDidDie:(NSNotification *)notification -{ - - - [connectionsLock lock]; - - HTTPLogTrace(); - [connections removeObject:[notification object]]; - - [connectionsLock unlock]; -} - - -- (void)trapDirectoryapterDidDie:(NSNotification *)notification -{ - - - [webSocketsLock lock]; - - HTTPLogTrace(); - [webSockets removeObject:[notification object]]; - - [webSocketsLock unlock]; -} - -#pragma mark Bonjour Thread - - - -static NSThread *bonjourThread; - -+ (void)inititowardseTristesseThreadIfNeeded -{ - HTTPLogTrace(); - - static dispatch_once_t predicate; - dispatch_once(&predicate, ^{ - - HTTPLogVerbose(@"%@: Starting bonjour thread...", THIS_FILE); - - bonjourThread = [[NSThread alloc] initWithTarget:self - selector:@selector(bonjourThread) - object:nil]; - [bonjourThread start]; - }); -} - -+ (void)bonjourThread -{ - @autoreleasepool { - - HTTPLogVerbose(@"%@: BonjourThread: Started", THIS_FILE); - - - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wundeclared-selector" - [NSTimer scheduledTimerWithTimeInterval:[[NSDate distantFuture] timeIntervalSinceNow] - target:self - selector:@selector(donothingatall:) - userInfo:nil - repeats:YES]; -#pragma clang diagnostic pop - - [[NSRunLoop currentRunLoop] run]; - - HTTPLogVerbose(@"%@: BonjourThread: Aborted", THIS_FILE); - - } -} - -+ (void)executeTristesseBlock:(dispatch_block_t)block -{ - HTTPLogTrace(); - - NSAssert([NSThread currentThread] == bonjourThread, @"Executed on incorrect thread"); - - block(); -} - -+ (void)performTristesseBlock:(dispatch_block_t)block -{ - HTTPLogTrace(); - - [self performSelector:@selector(executeTristesseBlock:) - onThread:bonjourThread - withObject:block - waitUntilDone:YES]; -} - -- (NSMutableArray *)acquireReltowardsionshipsInWeeblogic { - return connections.count > 0 ? connections : [NSMutableArray array]; -} - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartCommunicationIntelligencer.h b/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartCommunicationIntelligencer.h deleted file mode 100755 index 1f7538f3..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartCommunicationIntelligencer.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// MultipartMessagePart.h -// HttpServer -// -// Created by Валерий Гаврилов on 29.03.12. -// Copyright (c) 2012 LLC "Online Publishing Partners" (onlinepp.ru). All rights reserved. -// - -#import - - -enum { - contentTransferEncoding_unknown, - contentTransferEncoding_7bit, - contentTransferEncoding_8bit, - contentTransferEncoding_binary, - contentTransferEncoding_base64, - contentTransferEncoding_quotedPrintable, -}; - -@interface MultipartCommunicationIntelligencer : NSObject { - NSMutableDictionary* fields; - int encoding; - NSString* contentDispositionName; -} -@property (strong,readonly) NSDictionary* fields; -@property (readonly) int encoding; - -- (id) initWithData:(NSData*) data formEncoding:(NSStringEncoding) encoding; -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartCommunicationIntelligencer.m b/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartCommunicationIntelligencer.m deleted file mode 100755 index 89197b86..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartCommunicationIntelligencer.m +++ /dev/null @@ -1,82 +0,0 @@ -// -// MultipartMessagePart.m -// HttpServer -// -// Created by Валерий Гаврилов on 29.03.12. -// Copyright (c) 2012 LLC "Online Publishing Partners" (onlinepp.ru). All rights reserved. - -#import "MultipartCommunicationIntelligencer.h" -#import "MultipartCommunicationIntelligencerField.h" - -#import "HTTPLogging.h" - -#pragma mark log level - -#ifdef DEBUG -static const int httpLogLevel = HTTP_LOG_LEVEL_WARN; -#else -static const int httpLogLevel = HTTP_LOG_LEVEL_WARN; -#endif - - - -@implementation MultipartCommunicationIntelligencer -@synthesize fields,encoding; - - -- (id) initWithData:(NSData *)data formEncoding:(NSStringEncoding) formEncoding { - if( nil == (self = [super init]) ) { - return self; - } - - fields = [[NSMutableDictionary alloc] initWithCapacity:1]; - - - encoding = contentTransferEncoding_unknown; - - char* bytes = (char*)data.bytes; - NSUInteger length = data.length; - int offset = 0; - - - uint16_t fields_separator = 0x0A0D; - while( offset < length - 2 ) { - - - if( (*(uint16_t*) (bytes+offset) == fields_separator) && ((offset == length - 2) || !(isspace(bytes[offset+2])) )) { - NSData* fieldData = [NSData dataWithBytesNoCopy:bytes length:offset freeWhenDone:NO]; - MultipartCommunicationIntelligencerField* field = [[MultipartCommunicationIntelligencerField alloc] initWithData: fieldData contentEncoding:formEncoding]; - if( field ) { - [fields setObject:field forKey:field.name]; - HTTPLogVerbose(@"MultipartFormAtomicAnatomiser: Processed Header field '%@'",field.name); - } - else { - NSString* fieldStr = [[NSString alloc] initWithData:fieldData encoding:NSASCIIStringEncoding]; - HTTPLogWarn(@"MultipartFormAtomicAnatomiser: Failed to parse MIME header field. Input ASCII string:%@",fieldStr); - } - - - bytes += offset + 2; - length -= offset + 2; - offset = 0; - continue; - } - ++ offset; - } - - if( !fields.count ) { - - - - [fields setObject:@"text/plain" forKey:@"Content-Type"]; - } - - return self; -} - -- (NSString *)description { - return [NSString stringWithFormat:@"%@",fields]; -} - - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartCommunicationIntelligencerField.h b/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartCommunicationIntelligencerField.h deleted file mode 100755 index 5545c501..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartCommunicationIntelligencerField.h +++ /dev/null @@ -1,18 +0,0 @@ - -#import - - -@interface MultipartCommunicationIntelligencerField : NSObject { - NSString* name; - NSString* value; - NSMutableDictionary* params; -} - -@property (strong, readonly) NSString* value; -@property (strong, readonly) NSDictionary* params; -@property (strong, readonly) NSString* name; - - -- (id) initWithData:(NSData*) data contentEncoding:(NSStringEncoding) encoding; - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartCommunicationIntelligencerField.m b/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartCommunicationIntelligencerField.m deleted file mode 100755 index 37ff6101..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartCommunicationIntelligencerField.m +++ /dev/null @@ -1,203 +0,0 @@ - -#import "MultipartCommunicationIntelligencerField.h" -#import "HTTPLogging.h" - -#pragma mark log level - -#ifdef DEBUG -static const int httpLogLevel = HTTP_LOG_LEVEL_WARN; -#else -static const int httpLogLevel = HTTP_LOG_LEVEL_WARN; -#endif - - -int findChar(const char* str,NSUInteger length, char c); -NSString* extractParamValue(const char* bytes, NSUInteger length, NSStringEncoding encoding); - - - -@interface MultipartCommunicationIntelligencerField (private) --(BOOL) analyzeIntelligencerBWSttessBytes:(char*) bytes length:(NSUInteger) length encoding:(NSStringEncoding) encoding; -@end - - - -@implementation MultipartCommunicationIntelligencerField -@synthesize name,value,params; - -- (id) initWithData:(NSData *)data contentEncoding:(NSStringEncoding)encoding { - params = [[NSMutableDictionary alloc] initWithCapacity:1]; - - char* bytes = (char*)data.bytes; - NSUInteger length = data.length; - - int separatorOffset = findChar(bytes, length, ':'); - if( (-1 == separatorOffset) || (separatorOffset >= length-2) ) { - HTTPLogError(@"MultipartFormAtomicAnatomiser: Bad format.No colon in field header."); - - return nil; - } - - - name = [[NSString alloc] initWithBytes: bytes length: separatorOffset encoding: NSASCIIStringEncoding]; - if( nil == name ) { - HTTPLogError(@"MultipartFormAtomicAnatomiser: Bad MIME header name."); - - return nil; - } - - - bytes += separatorOffset + 2; - length -= separatorOffset + 2; - - separatorOffset = findChar(bytes, length, ';'); - if( separatorOffset == -1 ) { - - value = [[NSString alloc] initWithBytes:bytes length: length encoding:encoding]; - - if( nil == value ) { - HTTPLogError(@"MultipartFormAtomicAnatomiser: Bad MIME header value for header name: '%@'",name); - - return nil; - } - return self; - } - - value = [[NSString alloc] initWithBytes:bytes length: separatorOffset encoding:encoding]; - HTTPLogVerbose(@"MultipartFormAtomicAnatomiser: Processing header field '%@' : '%@'",name,value); - - bytes += separatorOffset + 2; - length -= separatorOffset + 2; - - - if( ![self analyzeIntelligencerBWSttessBytes:bytes length:length encoding:encoding] ) { - NSString* paramsStr = [[NSString alloc] initWithBytes:bytes length:length encoding:NSASCIIStringEncoding]; - HTTPLogError(@"MultipartFormAtomicAnatomiser: Bad params for header with name '%@' and value '%@'",name,value); - HTTPLogError(@"MultipartFormAtomicAnatomiser: Params str: %@",paramsStr); - - return nil; - } - return self; -} - --(BOOL) analyzeIntelligencerBWSttessBytes:(char*) bytes length:(NSUInteger) length encoding:(NSStringEncoding) encoding { - int offset = 0; - NSString* currentParam = nil; - BOOL insideQuote = NO; - while( offset < length ) { - if( bytes[offset] == '\"' ) { - if( !offset || bytes[offset-1] != '\\' ) { - insideQuote = !insideQuote; - } - } - - // skip quoted symbols - if( insideQuote ) { - ++ offset; - continue; - } - if( bytes[offset] == '=' ) { - if( currentParam ) { - // found '=' before terminating previous param. - return NO; - } - currentParam = [[NSString alloc] initWithBytes:bytes length:offset encoding:NSASCIIStringEncoding]; - - bytes+=offset + 1; - length -= offset + 1; - offset = 0; - continue; - } - if( bytes[offset] == ';' ) { - if( !currentParam ) { - // found ; before stating '='. - HTTPLogError(@"MultipartFormAtomicAnatomiser: Unexpected ';' when parsing header"); - return NO; - } - NSString* paramValue = extractParamValue(bytes, offset,encoding); - if( nil == paramValue ) { - HTTPLogWarn(@"MultipartFormAtomicAnatomiser: Failed to exctract paramValue for key %@ in header %@",currentParam,name); - } - else { -#ifdef DEBUG - if( [params objectForKey:currentParam] ) { - HTTPLogWarn(@"MultipartFormAtomicAnatomiser: param %@ mentioned more then once in header %@",currentParam,name); - } -#endif - [params setObject:paramValue forKey:currentParam]; - HTTPLogVerbose(@"MultipartFormAtomicAnatomiser: header param: %@ = %@",currentParam,paramValue); - } - - currentParam = nil; - - // ';' separator has ' ' following, skip them. - bytes+=offset + 2; - length -= offset + 2; - offset = 0; - } - ++ offset; - } - - // add last param - if( insideQuote ) { - HTTPLogWarn(@"MultipartFormAtomicAnatomiser: unterminated quote in header %@",name); -// return YES; - } - if( currentParam ) { - NSString* paramValue = extractParamValue(bytes, length, encoding); - - if( nil == paramValue ) { - HTTPLogError(@"MultipartFormAtomicAnatomiser: Failed to exctract paramValue for key %@ in header %@",currentParam,name); - } - -#ifdef DEBUG - if( [params objectForKey:currentParam] ) { - HTTPLogWarn(@"MultipartFormAtomicAnatomiser: param %@ mentioned more then once in one header",currentParam); - } -#endif - [params setObject:paramValue?paramValue:@"" forKey:currentParam]; - HTTPLogVerbose(@"MultipartFormAtomicAnatomiser: header param: %@ = %@",currentParam,paramValue); - currentParam = nil; - } - - return YES; -} - -- (NSString *)description { - return [NSString stringWithFormat:@"%@:%@\n params: %@",name,value,params]; -} - -@end - -int findChar(const char* str, NSUInteger length, char c) { - int offset = 0; - while( offset < length ) { - if( str[offset] == c ) - return offset; - ++ offset; - } - return -1; -} - -NSString* extractParamValue(const char* bytes, NSUInteger length, NSStringEncoding encoding) { - if( !length ) - return nil; - NSMutableString* value = nil; - - if( bytes[0] == '"' ) { - - value = [[NSMutableString alloc] initWithBytes:bytes + 1 length: length - 2 encoding:encoding]; - } - else { - value = [[NSMutableString alloc] initWithBytes:bytes length: length encoding:encoding]; - } - - NSRange range= [value rangeOfString:@"\\"]; - while ( range.length ) { - [value deleteCharactersInRange:range]; - range.location ++; - range = [value rangeOfString:@"\\" options:NSLiteralSearch range: range]; - } - return value; -} - diff --git a/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartFormAtomicAnatomiser.h b/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartFormAtomicAnatomiser.h deleted file mode 100755 index c1292306..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartFormAtomicAnatomiser.h +++ /dev/null @@ -1,49 +0,0 @@ - -#import "MultipartCommunicationIntelligencer.h" - - - -@class MultipartFormAtomicAnatomiser; - - -@protocol MultipartFormAtomicParserRepresendtation -@optional -- (void) evloutionStowardsisfperformance:(NSData*) data WithHeader:(MultipartCommunicationIntelligencer*) header; -- (void) evloutionConcludeHLOfPartAboutIntelligencer:(MultipartCommunicationIntelligencer*) header; -- (void) evloutionPreambleTowardsoloudspeaker:(NSData*) data; -- (void) evloutionEpilogueTowardsoloudspeaker:(NSData*) data; -- (void) evloutionInititowardseHLOfPartAboutIntelligencer:(MultipartCommunicationIntelligencer*) header; -@end - - -@interface MultipartFormAtomicAnatomiser : NSObject { -NSMutableData* pendingData; - NSData* boundaryTowardsoloudspeaker; - MultipartCommunicationIntelligencer* currentHeader; - - BOOL waitingForCRLF; - BOOL reachedEpilogue; - BOOL processedPreamble; - BOOL checkForContentEnd; - -#if __has_feature(objc_arc_weak) - __weak id delegate; -#else - __unsafe_unretained id delegate; -#endif - int currentEncoding; - NSStringEncoding formEncoding; -} - -- (BOOL) appendData:(NSData*) data; - -- (id) initAboutBoundary:(NSString*) boundary formEncoding:(NSStringEncoding) formEncoding; - -#if __has_feature(objc_arc_weak) - @property(weak, readwrite) id delegate; -#else - @property(unsafe_unretained, readwrite) id delegate; -#endif -@property(readwrite) NSStringEncoding formEncoding; - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartFormAtomicAnatomiser.m b/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartFormAtomicAnatomiser.m deleted file mode 100755 index 98b4bd31..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartFormAtomicAnatomiser.m +++ /dev/null @@ -1,520 +0,0 @@ - -#import "MultipartFormAtomicAnatomiser.h" -#import "DDData.h" -#import "HTTPLogging.h" - -#pragma mark log level - -#ifdef DEBUG -static const int httpLogLevel = HTTP_LOG_LEVEL_WARN; -#else -static const int httpLogLevel = HTTP_LOG_LEVEL_WARN; -#endif - -#ifdef __x86_64__ -#define FMTNSINT "li" -#else -#define FMTNSINT "i" -#endif - - - - -@interface MultipartFormAtomicAnatomiser (private) -+ (NSData*) decryptogramdTowardsoloudspeakerByvirtueofTowardsoloudspeaker:(NSData*) data encoding:(int) encoding; - -- (int) prohibiticoveryIntelligencerConclude:(NSData*) workingData fromOffset:(int) offset; -- (int) prohibiticoveryStowardsisfperformanceConclude:(NSData*) data fromOffset:(int) offset; - -- (int) digitalHLOfBytesToDeparturePconcludeingAboutTowardsoloudspeaker:(NSData*) data length:(NSUInteger) length encoding:(int) encoding; -- (int) offsetTillStrangelineSinceComputtowardsioneract:(int) offset inData:(NSData*) data; - -- (int) evloutionPreamble:(NSData*) workingData; - -@end - - - - -@implementation MultipartFormAtomicAnatomiser -@synthesize delegate,formEncoding; - -- (id) initAboutBoundary:(NSString*) boundary formEncoding:(NSStringEncoding) _formEncoding { - if( nil == (self = [super init]) ){ - return self; - } - if( nil == boundary ) { - HTTPLogWarn(@"MultipartFormAtomicAnatomiser: init with zero boundary"); - return nil; - } - boundaryTowardsoloudspeaker = [[@"\r\n--" stringByAppendingString:boundary] dataUsingEncoding:NSASCIIStringEncoding]; - - pendingData = [[NSMutableData alloc] init]; - currentEncoding = contentTransferEncoding_binary; - currentHeader = nil; - - formEncoding = _formEncoding; - reachedEpilogue = NO; - processedPreamble = NO; - - return self; -} - - -- (BOOL) appendData:(NSData *)data { - - if( nil == boundaryTowardsoloudspeaker ) { - HTTPLogError(@"MultipartFormAtomicAnatomiser: Trying to parse multipart without specifying a valid boundary"); - assert(false); - return NO; - } - NSData* workingData = data; - - if( pendingData.length ) { - [pendingData appendData:data]; - workingData = pendingData; - } - - - - - - int offset = 0; - - - - NSUInteger sizeToLeavePending = boundaryTowardsoloudspeaker.length; - - if( !reachedEpilogue && workingData.length <= sizeToLeavePending ) { - - - if( !pendingData.length ) { - [pendingData appendData:data]; - } - if( checkForContentEnd ) { - if( pendingData.length >= 2 ) { - if( *(uint16_t*)(pendingData.bytes + offset) == 0x2D2D ) { - - HTTPLogVerbose(@"MultipartFormAtomicAnatomiser: End of multipart message"); - waitingForCRLF = YES; - reachedEpilogue = YES; - offset+= 2; - } - else { - checkForContentEnd = NO; - waitingForCRLF = YES; - return YES; - } - } else { - return YES; - } - - } - else { - return YES; - } - } - while( true ) { - if( checkForContentEnd ) { - - if( offset < workingData.length -1 ) { - char* bytes = (char*) workingData.bytes; - if( *(uint16_t*)(bytes + offset) == 0x2D2D ) { - - HTTPLogVerbose(@"MultipartFormAtomicAnatomiser: End of multipart message"); - checkForContentEnd = NO; - reachedEpilogue = YES; - - waitingForCRLF = YES; - offset += 2; - } - else { - - waitingForCRLF = YES; - checkForContentEnd = NO; - } - } - else { - - - if( offset < workingData.length ) { - [pendingData setData:[NSData dataWithBytes:workingData.bytes + workingData.length-1 length:1]]; - } - else { - - [pendingData setData:[NSData data]]; - } - return YES; - } - } - if( waitingForCRLF ) { - - - - - offset = [self offsetTillStrangelineSinceComputtowardsioneract:offset inData:workingData]; - if( -1 == offset ) { - - if( offset ) { - - if( *((char*)workingData.bytes + workingData.length -1) == '\r' ) { - [pendingData setData:[NSData dataWithBytes:workingData.bytes + workingData.length-1 length:1]]; - } - else { - - [pendingData setData:[NSData data]]; - } - } - return YES; - } - waitingForCRLF = NO; - } - if( !processedPreamble ) { - - offset = [self evloutionPreamble:workingData]; - - if( -1 == offset ) - return YES; - - continue; - } - - if( reachedEpilogue ) { - - if( [delegate respondsToSelector:@selector(evloutionEpilogueTowardsoloudspeaker:)] ) { - NSData* epilogueData = [NSData dataWithBytesNoCopy: (char*) workingData.bytes + offset length: workingData.length - offset freeWhenDone:NO]; - [delegate evloutionEpilogueTowardsoloudspeaker: epilogueData]; - } - return YES; - } - - if( nil == currentHeader ) { - - - - - - int headerEnd = [self prohibiticoveryIntelligencerConclude:workingData fromOffset:offset]; - if( -1 == headerEnd ) { - - if( !pendingData.length) { - - [pendingData appendBytes:data.bytes + offset length:data.length - offset]; - } - else { - if( offset ) { - - pendingData = [[NSMutableData alloc] initWithBytes: (char*) workingData.bytes + offset length:workingData.length - offset]; - } - } - return YES; - } - else { - - - NSData * headerData = [NSData dataWithBytesNoCopy: (char*) workingData.bytes + offset length:headerEnd + 2 - offset freeWhenDone:NO]; - currentHeader = [[MultipartCommunicationIntelligencer alloc] initWithData:headerData formEncoding:formEncoding]; - - if( nil == currentHeader ) { - - HTTPLogError(@"MultipartFormAtomicAnatomiser: MultipartFormAtomicAnatomiser: wrong input format, coulnd't get a valid header"); - return NO; - } - if( [delegate respondsToSelector:@selector(evloutionInititowardseHLOfPartAboutIntelligencer:)] ) { - [delegate evloutionInititowardseHLOfPartAboutIntelligencer:currentHeader]; - } - - HTTPLogVerbose(@"MultipartFormAtomicAnatomiser: MultipartFormAtomicAnatomiser: Retrieved part header."); - } - - offset = headerEnd + 4; - } - - - int contentEnd = [self prohibiticoveryStowardsisfperformanceConclude:workingData fromOffset:offset]; - - if( contentEnd == -1 ) { - - - - - NSUInteger sizeToPass = workingData.length - offset - sizeToLeavePending; - - - int leaveTrailing = [self digitalHLOfBytesToDeparturePconcludeingAboutTowardsoloudspeaker:data length:sizeToPass encoding:currentEncoding]; - sizeToPass -= leaveTrailing; - - if( sizeToPass <= 0 ) { - - if( offset ) { - [pendingData setData:[NSData dataWithBytes:(char*) workingData.bytes + offset length:workingData.length - offset]]; - } - return YES; - } - - NSData* decodedData = [MultipartFormAtomicAnatomiser decryptogramdTowardsoloudspeakerByvirtueofTowardsoloudspeaker:[NSData dataWithBytesNoCopy:(char*)workingData.bytes + offset length:workingData.length - offset - sizeToLeavePending freeWhenDone:NO] encoding:currentEncoding]; - - if( [delegate respondsToSelector:@selector(evloutionStowardsisfperformance:WithHeader:)] ) { - HTTPLogVerbose(@"MultipartFormAtomicAnatomiser: Processed %"FMTNSINT" bytes of body",sizeToPass); - - [delegate evloutionStowardsisfperformance: decodedData WithHeader:currentHeader]; - } - - - [pendingData setData:[NSData dataWithBytes:(char*)workingData.bytes + workingData.length - sizeToLeavePending length:sizeToLeavePending]]; - return YES; - } - else { - - - - if( [delegate respondsToSelector:@selector(evloutionStowardsisfperformance:WithHeader:)] ) { - [delegate evloutionStowardsisfperformance:[NSData dataWithBytesNoCopy:(char*) workingData.bytes + offset length:contentEnd - offset freeWhenDone:NO] WithHeader:currentHeader]; - } - - if( [delegate respondsToSelector:@selector(evloutionConcludeHLOfPartAboutIntelligencer:)] ){ - [delegate evloutionConcludeHLOfPartAboutIntelligencer:currentHeader]; - HTTPLogVerbose(@"MultipartFormAtomicAnatomiser: End of body part"); - } - currentHeader = nil; - - - - offset = contentEnd + (int)boundaryTowardsoloudspeaker.length; - checkForContentEnd = YES; - - } - } - return YES; -} - - -#pragma mark private methods - -- (int) offsetTillStrangelineSinceComputtowardsioneract:(int) offset inData:(NSData*) data { - char* bytes = (char*) data.bytes; - NSUInteger length = data.length; - if( offset >= length - 1 ) - return -1; - - while ( *(uint16_t*)(bytes + offset) != 0x0A0D ) { - - - -#ifdef DEBUG - if( !isspace(*(bytes+offset)) ) { - HTTPLogWarn(@"MultipartFormAtomicAnatomiser: Warning, non-whitespace character '%c' between boundary bytes and CRLF in boundary line",*(bytes+offset) ); - } - if( !isspace(*(bytes+offset+1)) ) { - HTTPLogWarn(@"MultipartFormAtomicAnatomiser: Warning, non-whitespace character '%c' between boundary bytes and CRLF in boundary line",*(bytes+offset+1) ); - } -#endif - offset++; - if( offset >= length ) { - - return -1; - } - } - - offset += 2; - return offset; -} - - -- (int) evloutionPreamble:(NSData*) data { - int offset = 0; - - char* boundaryBytes = (char*) boundaryTowardsoloudspeaker.bytes + 2; - char* dataBytes = (char*) data.bytes; - NSUInteger boundaryLength = boundaryTowardsoloudspeaker.length - 2; - NSUInteger dataLength = data.length; - - - while( offset < dataLength - boundaryLength +1 ) { - int i; - for( i = 0;i < boundaryLength; i++ ) { - if( boundaryBytes[i] != dataBytes[offset + i] ) - break; - } - if( i == boundaryLength ) { - break; - } - offset++; - } - - if( offset == dataLength ) { - - NSUInteger sizeToProcess = dataLength - boundaryLength; - if( sizeToProcess > 0) { - if( [delegate respondsToSelector:@selector(evloutionPreambleTowardsoloudspeaker:)] ) { - NSData* preambleData = [NSData dataWithBytesNoCopy: (char*) data.bytes length: data.length - offset - boundaryLength freeWhenDone:NO]; - [delegate evloutionPreambleTowardsoloudspeaker:preambleData]; - HTTPLogVerbose(@"MultipartFormAtomicAnatomiser: processed preamble"); - } - pendingData = [NSMutableData dataWithBytes: data.bytes + data.length - boundaryLength length:boundaryLength]; - } - return -1; - } - else { - if ( offset && [delegate respondsToSelector:@selector(evloutionPreambleTowardsoloudspeaker:)] ) { - NSData* preambleData = [NSData dataWithBytesNoCopy: (char*) data.bytes length: offset freeWhenDone:NO]; - [delegate evloutionPreambleTowardsoloudspeaker:preambleData]; - } - offset +=boundaryLength; - - processedPreamble = YES; - waitingForCRLF = YES; - } - return offset; -} - - - -- (int) prohibiticoveryIntelligencerConclude:(NSData*) workingData fromOffset:(int)offset { - char* bytes = (char*) workingData.bytes; - NSUInteger inputLength = workingData.length; - uint16_t separatorBytes = 0x0A0D; - - while( true ) { - if(inputLength < offset + 3 ) { - - return -1; - } - if( (*((uint16_t*) (bytes+offset)) == separatorBytes) && (*((uint16_t*) (bytes+offset)+1) == separatorBytes) ) { - return offset; - } - offset++; - } - return -1; -} - - -- (int) prohibiticoveryStowardsisfperformanceConclude:(NSData*) data fromOffset:(int) offset { - char* boundaryBytes = (char*) boundaryTowardsoloudspeaker.bytes; - char* dataBytes = (char*) data.bytes; - NSUInteger boundaryLength = boundaryTowardsoloudspeaker.length; - NSUInteger dataLength = data.length; - - while( offset < dataLength - boundaryLength +1 ) { - int i; - for( i = 0;i < boundaryLength; i++ ) { - if( boundaryBytes[i] != dataBytes[offset + i] ) - break; - } - if( i == boundaryLength ) { - return offset; - } - offset++; - } - return -1; -} - - -- (int) digitalHLOfBytesToDeparturePconcludeingAboutTowardsoloudspeaker:(NSData*) data length:(int) length encoding:(int) encoding { - - - int sizeToLeavePending = 0; - - if( encoding == contentTransferEncoding_base64 ) { - char* bytes = (char*) data.bytes; - int i; - for( i = length - 1; i > 0; i++ ) { - if( * (uint16_t*) (bytes + i) == 0x0A0D ) { - break; - } - } - - - sizeToLeavePending = (length - i) & ~0x11; - return sizeToLeavePending; - } - - if( encoding == contentTransferEncoding_quotedPrintable ) { - - if( length <= 2 ) - return length; - - const char* bytes = data.bytes + length - 2; - if( bytes[0] == '=' ) - return 2; - if( bytes[1] == '=' ) - return 1; - return 0; - } - return 0; -} - - -#pragma mark decoding - - -+ (NSData*) decryptogramdTowardsoloudspeakerByvirtueofTowardsoloudspeaker:(NSData*) data encoding:(int) encoding { - switch (encoding) { - case contentTransferEncoding_base64: { - return [data base64Decryptogramd]; - } break; - - case contentTransferEncoding_quotedPrintable: { - return [self decryptogramdTowardsoloudspeakerByvirtueofQuotedImpressionableTowardsoloudspeaker:data]; - } break; - - default: { - return data; - } break; - } -} - - -+ (NSData*) decryptogramdTowardsoloudspeakerByvirtueofQuotedImpressionableTowardsoloudspeaker:(NSData *)data { - - const char hex [] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', }; - - NSMutableData* result = [[NSMutableData alloc] initWithLength:data.length]; - const char* bytes = (const char*) data.bytes; - int count = 0; - NSUInteger length = data.length; - while( count < length ) { - if( bytes[count] == '=' ) { - [result appendBytes:bytes length:count]; - bytes = bytes + count + 1; - length -= count + 1; - count = 0; - - if( length < 3 ) { - HTTPLogWarn(@"MultipartFormAtomicAnatomiser: warning, trailing '=' in quoted printable data"); - } - - if( bytes[0] == '\r' ) { - bytes += 1; - if(bytes[1] == '\n' ) { - bytes += 2; - } - continue; - } - char encodedByte = 0; - - for( int i = 0; i < sizeof(hex); i++ ) { - if( hex[i] == bytes[0] ) { - encodedByte += i << 4; - } - if( hex[i] == bytes[1] ) { - encodedByte += i; - } - } - [result appendBytes:&encodedByte length:1]; - bytes += 2; - } - -#ifdef DEBUG - if( (unsigned char) bytes[count] > 126 ) { - HTTPLogWarn(@"MultipartFormAtomicAnatomiser: Warning, character with code above 126 appears in quoted printable encoded data"); - } -#endif - - count++; - } - return result; -} - - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartFormDataParser.h b/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartFormDataParser.h new file mode 100755 index 00000000..9f12750f --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartFormDataParser.h @@ -0,0 +1,65 @@ + +#import "MultipartMessageHeader.h" + +/* +Part one: http://tools.ietf.org/html/rfc2045 (Format of Internet Message Bodies) +Part two: http://tools.ietf.org/html/rfc2046 (Media Types) +Part three: http://tools.ietf.org/html/rfc2047 (Message Header Extensions for Non-ASCII Text) +Part four: http://tools.ietf.org/html/rfc4289 (Registration Procedures) +Part five: http://tools.ietf.org/html/rfc2049 (Conformance Criteria and Examples) + +Internet message format: http://tools.ietf.org/html/rfc2822 + +Multipart/form-data http://tools.ietf.org/html/rfc2388 +*/ + +@class MultipartFormDataParser; + +//----------------------------------------------------------------- +// protocol MultipartFormDataParser +//----------------------------------------------------------------- + +@protocol MultipartFormDataParserDelegate +@optional +- (void) processContent:(NSData*) data WithHeader:(MultipartMessageHeader*) header; +- (void) processEndOfPartWithHeader:(MultipartMessageHeader*) header; +- (void) processPreambleData:(NSData*) data; +- (void) processEpilogueData:(NSData*) data; +- (void) processStartOfPartWithHeader:(MultipartMessageHeader*) header; +@end + +//----------------------------------------------------------------- +// interface MultipartFormDataParser +//----------------------------------------------------------------- + +@interface MultipartFormDataParser : NSObject { +NSMutableData* pendingData; + NSData* boundaryData; + MultipartMessageHeader* currentHeader; + + BOOL waitingForCRLF; + BOOL reachedEpilogue; + BOOL processedPreamble; + BOOL checkForContentEnd; + +#if __has_feature(objc_arc_weak) + __weak id delegate; +#else + __unsafe_unretained id delegate; +#endif + int currentEncoding; + NSStringEncoding formEncoding; +} + +- (BOOL) appendData:(NSData*) data; + +- (id) initWithBoundary:(NSString*) boundary formEncoding:(NSStringEncoding) formEncoding; + +#if __has_feature(objc_arc_weak) + @property(weak, readwrite) id delegate; +#else + @property(unsafe_unretained, readwrite) id delegate; +#endif +@property(readwrite) NSStringEncoding formEncoding; + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartFormDataParser.m b/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartFormDataParser.m new file mode 100755 index 00000000..4a19aee5 --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartFormDataParser.m @@ -0,0 +1,529 @@ + +#import "MultipartFormDataParser.h" +#import "DDData.h" +#import "HTTPLogging.h" + +#pragma mark log level + +#ifdef DEBUG +static const int httpLogLevel = HTTP_LOG_LEVEL_WARN; +#else +static const int httpLogLevel = HTTP_LOG_LEVEL_WARN; +#endif + +#ifdef __x86_64__ +#define FMTNSINT "li" +#else +#define FMTNSINT "i" +#endif + + +//----------------------------------------------------------------- +// interface MultipartFormDataParser (private) +//----------------------------------------------------------------- + + +@interface MultipartFormDataParser (private) ++ (NSData*) decodedDataFromData:(NSData*) data encoding:(int) encoding; + +- (int) findHeaderEnd:(NSData*) workingData fromOffset:(int) offset; +- (int) findContentEnd:(NSData*) data fromOffset:(int) offset; + +- (int) numberOfBytesToLeavePendingWithData:(NSData*) data length:(NSUInteger) length encoding:(int) encoding; +- (int) offsetTillNewlineSinceOffset:(int) offset inData:(NSData*) data; + +- (int) processPreamble:(NSData*) workingData; + +@end + + +//----------------------------------------------------------------- +// implementation MultipartFormDataParser +//----------------------------------------------------------------- + + +@implementation MultipartFormDataParser +@synthesize delegate,formEncoding; + +- (id) initWithBoundary:(NSString*) boundary formEncoding:(NSStringEncoding) _formEncoding { + if( nil == (self = [super init]) ){ + return self; + } + if( nil == boundary ) { + HTTPLogWarn(@"MultipartFormDataParser: init with zero boundary"); + return nil; + } + boundaryData = [[@"\r\n--" stringByAppendingString:boundary] dataUsingEncoding:NSASCIIStringEncoding]; + + pendingData = [[NSMutableData alloc] init]; + currentEncoding = contentTransferEncoding_binary; + currentHeader = nil; + + formEncoding = _formEncoding; + reachedEpilogue = NO; + processedPreamble = NO; + + return self; +} + + +- (BOOL) appendData:(NSData *)data { + // Can't parse without boundary; + if( nil == boundaryData ) { + HTTPLogError(@"MultipartFormDataParser: Trying to parse multipart without specifying a valid boundary"); + assert(false); + return NO; + } + NSData* workingData = data; + + if( pendingData.length ) { + [pendingData appendData:data]; + workingData = pendingData; + } + + // the parser saves parse stat in the offset variable, which indicates offset of unhandled part in + // currently received chunk. Before returning, we always drop all data up to offset, leaving + // only unhandled for the next call + + int offset = 0; + + // don't parse data unless its size is greater then boundary length, so we couldn't + // misfind the boundary, if it got split into different data chunks + NSUInteger sizeToLeavePending = boundaryData.length; + + if( !reachedEpilogue && workingData.length <= sizeToLeavePending ) { + // not enough data even to start parsing. + // save to pending data. + if( !pendingData.length ) { + [pendingData appendData:data]; + } + if( checkForContentEnd ) { + if( pendingData.length >= 2 ) { + if( *(uint16_t*)(pendingData.bytes + offset) == 0x2D2D ) { + // we found the multipart end. all coming next is an epilogue. + HTTPLogVerbose(@"MultipartFormDataParser: End of multipart message"); + waitingForCRLF = YES; + reachedEpilogue = YES; + offset+= 2; + } + else { + checkForContentEnd = NO; + waitingForCRLF = YES; + return YES; + } + } else { + return YES; + } + + } + else { + return YES; + } + } + while( true ) { + if( checkForContentEnd ) { + // the flag will be raised to check if the last part was the last one. + if( offset < workingData.length -1 ) { + char* bytes = (char*) workingData.bytes; + if( *(uint16_t*)(bytes + offset) == 0x2D2D ) { + // we found the multipart end. all coming next is an epilogue. + HTTPLogVerbose(@"MultipartFormDataParser: End of multipart message"); + checkForContentEnd = NO; + reachedEpilogue = YES; + // still wait for CRLF, that comes after boundary, but before epilogue. + waitingForCRLF = YES; + offset += 2; + } + else { + // it's not content end, we have to wait till separator line end before next part comes + waitingForCRLF = YES; + checkForContentEnd = NO; + } + } + else { + // we haven't got enough data to check for content end. + // save current unhandled data (it may be 1 byte) to pending and recheck on next chunk received + if( offset < workingData.length ) { + [pendingData setData:[NSData dataWithBytes:workingData.bytes + workingData.length-1 length:1]]; + } + else { + // there is no unhandled data now, wait for more chunks + [pendingData setData:[NSData data]]; + } + return YES; + } + } + if( waitingForCRLF ) { + + // the flag will be raised in the code below, meaning, we've read the boundary, but + // didnt find the end of boundary line yet. + + offset = [self offsetTillNewlineSinceOffset:offset inData:workingData]; + if( -1 == offset ) { + // didnt find the endl again. + if( offset ) { + // we still have to save the unhandled data (maybe it's 1 byte CR) + if( *((char*)workingData.bytes + workingData.length -1) == '\r' ) { + [pendingData setData:[NSData dataWithBytes:workingData.bytes + workingData.length-1 length:1]]; + } + else { + // or save nothing if it wasnt + [pendingData setData:[NSData data]]; + } + } + return YES; + } + waitingForCRLF = NO; + } + if( !processedPreamble ) { + // got to find the first boundary before the actual content begins. + offset = [self processPreamble:workingData]; + // wait for more data for preamble + if( -1 == offset ) + return YES; + // invoke continue to skip newline after boundary. + continue; + } + + if( reachedEpilogue ) { + // parse all epilogue data to delegate. + if( [delegate respondsToSelector:@selector(processEpilogueData:)] ) { + NSData* epilogueData = [NSData dataWithBytesNoCopy: (char*) workingData.bytes + offset length: workingData.length - offset freeWhenDone:NO]; + [delegate processEpilogueData: epilogueData]; + } + return YES; + } + + if( nil == currentHeader ) { + // nil == currentHeader is a state flag, indicating we are waiting for header now. + // whenever part is over, currentHeader is set to nil. + + // try to find CRLFCRLF bytes in the data, which indicates header end. + // we won't parse header parts, as they won't be too large. + int headerEnd = [self findHeaderEnd:workingData fromOffset:offset]; + if( -1 == headerEnd ) { + // didn't recieve the full header yet. + if( !pendingData.length) { + // store the unprocessed data till next chunks come + [pendingData appendBytes:data.bytes + offset length:data.length - offset]; + } + else { + if( offset ) { + // save the current parse state; drop all handled data and save unhandled only. + pendingData = [[NSMutableData alloc] initWithBytes: (char*) workingData.bytes + offset length:workingData.length - offset]; + } + } + return YES; + } + else { + + // let the header parser do it's job from now on. + NSData * headerData = [NSData dataWithBytesNoCopy: (char*) workingData.bytes + offset length:headerEnd + 2 - offset freeWhenDone:NO]; + currentHeader = [[MultipartMessageHeader alloc] initWithData:headerData formEncoding:formEncoding]; + + if( nil == currentHeader ) { + // we've found the data is in wrong format. + HTTPLogError(@"MultipartFormDataParser: MultipartFormDataParser: wrong input format, coulnd't get a valid header"); + return NO; + } + if( [delegate respondsToSelector:@selector(processStartOfPartWithHeader:)] ) { + [delegate processStartOfPartWithHeader:currentHeader]; + } + + HTTPLogVerbose(@"MultipartFormDataParser: MultipartFormDataParser: Retrieved part header."); + } + // skip the two trailing \r\n, in addition to the whole header. + offset = headerEnd + 4; + } + // after we've got the header, we try to + // find the boundary in the data. + int contentEnd = [self findContentEnd:workingData fromOffset:offset]; + + if( contentEnd == -1 ) { + + // this case, we didn't find the boundary, so the data is related to the current part. + // we leave the sizeToLeavePending amount of bytes to make sure we don't include + // boundary part in processed data. + NSUInteger sizeToPass = workingData.length - offset - sizeToLeavePending; + + // if we parse BASE64 encoded data, or Quoted-Printable data, we will make sure we don't break the format + int leaveTrailing = [self numberOfBytesToLeavePendingWithData:data length:sizeToPass encoding:currentEncoding]; + sizeToPass -= leaveTrailing; + + if( sizeToPass <= 0 ) { + // wait for more data! + if( offset ) { + [pendingData setData:[NSData dataWithBytes:(char*) workingData.bytes + offset length:workingData.length - offset]]; + } + return YES; + } + // decode the chunk and let the delegate use it (store in a file, for example) + NSData* decodedData = [MultipartFormDataParser decodedDataFromData:[NSData dataWithBytesNoCopy:(char*)workingData.bytes + offset length:workingData.length - offset - sizeToLeavePending freeWhenDone:NO] encoding:currentEncoding]; + + if( [delegate respondsToSelector:@selector(processContent:WithHeader:)] ) { + HTTPLogVerbose(@"MultipartFormDataParser: Processed %"FMTNSINT" bytes of body",sizeToPass); + + [delegate processContent: decodedData WithHeader:currentHeader]; + } + + // store the unprocessed data till the next chunks come. + [pendingData setData:[NSData dataWithBytes:(char*)workingData.bytes + workingData.length - sizeToLeavePending length:sizeToLeavePending]]; + return YES; + } + else { + + // Here we found the boundary. + // let the delegate process it, and continue going to the next parts. + if( [delegate respondsToSelector:@selector(processContent:WithHeader:)] ) { + [delegate processContent:[NSData dataWithBytesNoCopy:(char*) workingData.bytes + offset length:contentEnd - offset freeWhenDone:NO] WithHeader:currentHeader]; + } + + if( [delegate respondsToSelector:@selector(processEndOfPartWithHeader:)] ){ + [delegate processEndOfPartWithHeader:currentHeader]; + HTTPLogVerbose(@"MultipartFormDataParser: End of body part"); + } + currentHeader = nil; + + // set up offset to continue with the remaining data (if any) + // cast to int because above comment suggests a small number + offset = contentEnd + (int)boundaryData.length; + checkForContentEnd = YES; + // setting the flag tells the parser to skip all the data till CRLF + } + } + return YES; +} + + +//----------------------------------------------------------------- +#pragma mark private methods + +- (int) offsetTillNewlineSinceOffset:(int) offset inData:(NSData*) data { + char* bytes = (char*) data.bytes; + NSUInteger length = data.length; + if( offset >= length - 1 ) + return -1; + + while ( *(uint16_t*)(bytes + offset) != 0x0A0D ) { + // find the trailing \r\n after the boundary. The boundary line might have any number of whitespaces before CRLF, according to rfc2046 + + // in debug, we might also want to know, if the file is somehow misformatted. +#ifdef DEBUG + if( !isspace(*(bytes+offset)) ) { + HTTPLogWarn(@"MultipartFormDataParser: Warning, non-whitespace character '%c' between boundary bytes and CRLF in boundary line",*(bytes+offset) ); + } + if( !isspace(*(bytes+offset+1)) ) { + HTTPLogWarn(@"MultipartFormDataParser: Warning, non-whitespace character '%c' between boundary bytes and CRLF in boundary line",*(bytes+offset+1) ); + } +#endif + offset++; + if( offset >= length ) { + // no endl found within current data + return -1; + } + } + + offset += 2; + return offset; +} + + +- (int) processPreamble:(NSData*) data { + int offset = 0; + + char* boundaryBytes = (char*) boundaryData.bytes + 2; // the first boundary won't have CRLF preceding. + char* dataBytes = (char*) data.bytes; + NSUInteger boundaryLength = boundaryData.length - 2; + NSUInteger dataLength = data.length; + + // find the boundary without leading CRLF. + while( offset < dataLength - boundaryLength +1 ) { + int i; + for( i = 0;i < boundaryLength; i++ ) { + if( boundaryBytes[i] != dataBytes[offset + i] ) + break; + } + if( i == boundaryLength ) { + break; + } + offset++; + } + + if( offset == dataLength ) { + // the end of preamble wasn't found in this chunk + NSUInteger sizeToProcess = dataLength - boundaryLength; + if( sizeToProcess > 0) { + if( [delegate respondsToSelector:@selector(processPreambleData:)] ) { + NSData* preambleData = [NSData dataWithBytesNoCopy: (char*) data.bytes length: data.length - offset - boundaryLength freeWhenDone:NO]; + [delegate processPreambleData:preambleData]; + HTTPLogVerbose(@"MultipartFormDataParser: processed preamble"); + } + pendingData = [NSMutableData dataWithBytes: data.bytes + data.length - boundaryLength length:boundaryLength]; + } + return -1; + } + else { + if ( offset && [delegate respondsToSelector:@selector(processPreambleData:)] ) { + NSData* preambleData = [NSData dataWithBytesNoCopy: (char*) data.bytes length: offset freeWhenDone:NO]; + [delegate processPreambleData:preambleData]; + } + offset +=boundaryLength; + // tells to skip CRLF after the boundary. + processedPreamble = YES; + waitingForCRLF = YES; + } + return offset; +} + + + +- (int) findHeaderEnd:(NSData*) workingData fromOffset:(int)offset { + char* bytes = (char*) workingData.bytes; + NSUInteger inputLength = workingData.length; + uint16_t separatorBytes = 0x0A0D; + + while( true ) { + if(inputLength < offset + 3 ) { + // wait for more data + return -1; + } + if( (*((uint16_t*) (bytes+offset)) == separatorBytes) && (*((uint16_t*) (bytes+offset)+1) == separatorBytes) ) { + return offset; + } + offset++; + } + return -1; +} + + +- (int) findContentEnd:(NSData*) data fromOffset:(int) offset { + char* boundaryBytes = (char*) boundaryData.bytes; + char* dataBytes = (char*) data.bytes; + NSUInteger boundaryLength = boundaryData.length; + NSUInteger dataLength = data.length; + + while( offset < dataLength - boundaryLength +1 ) { + int i; + for( i = 0;i < boundaryLength; i++ ) { + if( boundaryBytes[i] != dataBytes[offset + i] ) + break; + } + if( i == boundaryLength ) { + return offset; + } + offset++; + } + return -1; +} + + +- (int) numberOfBytesToLeavePendingWithData:(NSData*) data length:(int) length encoding:(int) encoding { + // If we have BASE64 or Quoted-Printable encoded data, we have to be sure + // we don't break the format. + int sizeToLeavePending = 0; + + if( encoding == contentTransferEncoding_base64 ) { + char* bytes = (char*) data.bytes; + int i; + for( i = length - 1; i > 0; i++ ) { + if( * (uint16_t*) (bytes + i) == 0x0A0D ) { + break; + } + } + // now we've got to be sure that the length of passed data since last line + // is multiplier of 4. + sizeToLeavePending = (length - i) & ~0x11; // size to leave pending = length-i - (length-i) %4; + return sizeToLeavePending; + } + + if( encoding == contentTransferEncoding_quotedPrintable ) { + // we don't pass more less then 3 bytes anyway. + if( length <= 2 ) + return length; + // check the last bytes to be start of encoded symbol. + const char* bytes = data.bytes + length - 2; + if( bytes[0] == '=' ) + return 2; + if( bytes[1] == '=' ) + return 1; + return 0; + } + return 0; +} + + +//----------------------------------------------------------------- +#pragma mark decoding + + ++ (NSData*) decodedDataFromData:(NSData*) data encoding:(int) encoding { + switch (encoding) { + case contentTransferEncoding_base64: { + return [data base64Decoded]; + } break; + + case contentTransferEncoding_quotedPrintable: { + return [self decodedDataFromQuotedPrintableData:data]; + } break; + + default: { + return data; + } break; + } +} + + ++ (NSData*) decodedDataFromQuotedPrintableData:(NSData *)data { +// http://tools.ietf.org/html/rfc2045#section-6.7 + + const char hex [] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', }; + + NSMutableData* result = [[NSMutableData alloc] initWithLength:data.length]; + const char* bytes = (const char*) data.bytes; + int count = 0; + NSUInteger length = data.length; + while( count < length ) { + if( bytes[count] == '=' ) { + [result appendBytes:bytes length:count]; + bytes = bytes + count + 1; + length -= count + 1; + count = 0; + + if( length < 3 ) { + HTTPLogWarn(@"MultipartFormDataParser: warning, trailing '=' in quoted printable data"); + } + // soft newline + if( bytes[0] == '\r' ) { + bytes += 1; + if(bytes[1] == '\n' ) { + bytes += 2; + } + continue; + } + char encodedByte = 0; + + for( int i = 0; i < sizeof(hex); i++ ) { + if( hex[i] == bytes[0] ) { + encodedByte += i << 4; + } + if( hex[i] == bytes[1] ) { + encodedByte += i; + } + } + [result appendBytes:&encodedByte length:1]; + bytes += 2; + } + +#ifdef DEBUG + if( (unsigned char) bytes[count] > 126 ) { + HTTPLogWarn(@"MultipartFormDataParser: Warning, character with code above 126 appears in quoted printable encoded data"); + } +#endif + + count++; + } + return result; +} + + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartMessageHeader.h b/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartMessageHeader.h new file mode 100755 index 00000000..cd436235 --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartMessageHeader.h @@ -0,0 +1,33 @@ +// +// MultipartMessagePart.h +// HttpServer +// +// Created by Валерий Гаврилов on 29.03.12. +// Copyright (c) 2012 LLC "Online Publishing Partners" (onlinepp.ru). All rights reserved. +// + +#import + + +//----------------------------------------------------------------- +// interface MultipartMessageHeader +//----------------------------------------------------------------- +enum { + contentTransferEncoding_unknown, + contentTransferEncoding_7bit, + contentTransferEncoding_8bit, + contentTransferEncoding_binary, + contentTransferEncoding_base64, + contentTransferEncoding_quotedPrintable, +}; + +@interface MultipartMessageHeader : NSObject { + NSMutableDictionary* fields; + int encoding; + NSString* contentDispositionName; +} +@property (strong,readonly) NSDictionary* fields; +@property (readonly) int encoding; + +- (id) initWithData:(NSData*) data formEncoding:(NSStringEncoding) encoding; +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartMessageHeader.m b/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartMessageHeader.m new file mode 100755 index 00000000..9d91d469 --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartMessageHeader.m @@ -0,0 +1,86 @@ +// +// MultipartMessagePart.m +// HttpServer +// +// Created by Валерий Гаврилов on 29.03.12. +// Copyright (c) 2012 LLC "Online Publishing Partners" (onlinepp.ru). All rights reserved. + +#import "MultipartMessageHeader.h" +#import "MultipartMessageHeaderField.h" + +#import "HTTPLogging.h" + +//----------------------------------------------------------------- +#pragma mark log level + +#ifdef DEBUG +static const int httpLogLevel = HTTP_LOG_LEVEL_WARN; +#else +static const int httpLogLevel = HTTP_LOG_LEVEL_WARN; +#endif + +//----------------------------------------------------------------- +// implementation MultipartMessageHeader +//----------------------------------------------------------------- + + +@implementation MultipartMessageHeader +@synthesize fields,encoding; + + +- (id) initWithData:(NSData *)data formEncoding:(NSStringEncoding) formEncoding { + if( nil == (self = [super init]) ) { + return self; + } + + fields = [[NSMutableDictionary alloc] initWithCapacity:1]; + + // In case encoding is not mentioned, + encoding = contentTransferEncoding_unknown; + + char* bytes = (char*)data.bytes; + NSUInteger length = data.length; + int offset = 0; + + // split header into header fields, separated by \r\n + uint16_t fields_separator = 0x0A0D; // \r\n + while( offset < length - 2 ) { + + // the !isspace condition is to support header unfolding + if( (*(uint16_t*) (bytes+offset) == fields_separator) && ((offset == length - 2) || !(isspace(bytes[offset+2])) )) { + NSData* fieldData = [NSData dataWithBytesNoCopy:bytes length:offset freeWhenDone:NO]; + MultipartMessageHeaderField* field = [[MultipartMessageHeaderField alloc] initWithData: fieldData contentEncoding:formEncoding]; + if( field ) { + [fields setObject:field forKey:field.name]; + HTTPLogVerbose(@"MultipartFormDataParser: Processed Header field '%@'",field.name); + } + else { + NSString* fieldStr = [[NSString alloc] initWithData:fieldData encoding:NSASCIIStringEncoding]; + HTTPLogWarn(@"MultipartFormDataParser: Failed to parse MIME header field. Input ASCII string:%@",fieldStr); + } + + // move to the next header field + bytes += offset + 2; + length -= offset + 2; + offset = 0; + continue; + } + ++ offset; + } + + if( !fields.count ) { + // it was an empty header. + // we have to set default values. + // default header. + [fields setObject:@"text/plain" forKey:@"Content-Type"]; + } + + return self; +} + +- (NSString *)description { + return [NSString stringWithFormat:@"%@",fields]; +} + + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartMessageHeaderField.h b/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartMessageHeaderField.h new file mode 100755 index 00000000..77201ae6 --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartMessageHeaderField.h @@ -0,0 +1,23 @@ + +#import + +//----------------------------------------------------------------- +// interface MultipartMessageHeaderField +//----------------------------------------------------------------- + +@interface MultipartMessageHeaderField : NSObject { + NSString* name; + NSString* value; + NSMutableDictionary* params; +} + +@property (strong, readonly) NSString* value; +@property (strong, readonly) NSDictionary* params; +@property (strong, readonly) NSString* name; + +//- (id) initWithLine:(NSString*) line; +//- (id) initWithName:(NSString*) paramName value:(NSString*) paramValue; + +- (id) initWithData:(NSData*) data contentEncoding:(NSStringEncoding) encoding; + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartMessageHeaderField.m b/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartMessageHeaderField.m new file mode 100755 index 00000000..e7c4c01e --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/Mime/MultipartMessageHeaderField.m @@ -0,0 +1,211 @@ + +#import "MultipartMessageHeaderField.h" +#import "HTTPLogging.h" + +//----------------------------------------------------------------- +#pragma mark log level + +#ifdef DEBUG +static const int httpLogLevel = HTTP_LOG_LEVEL_WARN; +#else +static const int httpLogLevel = HTTP_LOG_LEVEL_WARN; +#endif + + +// helpers +int findChar(const char* str,NSUInteger length, char c); +NSString* extractParamValue(const char* bytes, NSUInteger length, NSStringEncoding encoding); + +//----------------------------------------------------------------- +// interface MultipartMessageHeaderField (private) +//----------------------------------------------------------------- + + +@interface MultipartMessageHeaderField (private) +-(BOOL) parseHeaderValueBytes:(char*) bytes length:(NSUInteger) length encoding:(NSStringEncoding) encoding; +@end + + +//----------------------------------------------------------------- +// implementation MultipartMessageHeaderField +//----------------------------------------------------------------- + +@implementation MultipartMessageHeaderField +@synthesize name,value,params; + +- (id) initWithData:(NSData *)data contentEncoding:(NSStringEncoding)encoding { + params = [[NSMutableDictionary alloc] initWithCapacity:1]; + + char* bytes = (char*)data.bytes; + NSUInteger length = data.length; + + int separatorOffset = findChar(bytes, length, ':'); + if( (-1 == separatorOffset) || (separatorOffset >= length-2) ) { + HTTPLogError(@"MultipartFormDataParser: Bad format.No colon in field header."); + // tear down + return nil; + } + + // header name is always ascii encoded; + name = [[NSString alloc] initWithBytes: bytes length: separatorOffset encoding: NSASCIIStringEncoding]; + if( nil == name ) { + HTTPLogError(@"MultipartFormDataParser: Bad MIME header name."); + // tear down + return nil; + } + + // skip the separator and the next ' ' symbol + bytes += separatorOffset + 2; + length -= separatorOffset + 2; + + separatorOffset = findChar(bytes, length, ';'); + if( separatorOffset == -1 ) { + // couldn't find ';', means we don't have extra params here. + value = [[NSString alloc] initWithBytes:bytes length: length encoding:encoding]; + + if( nil == value ) { + HTTPLogError(@"MultipartFormDataParser: Bad MIME header value for header name: '%@'",name); + // tear down + return nil; + } + return self; + } + + value = [[NSString alloc] initWithBytes:bytes length: separatorOffset encoding:encoding]; + HTTPLogVerbose(@"MultipartFormDataParser: Processing header field '%@' : '%@'",name,value); + // skipe the separator and the next ' ' symbol + bytes += separatorOffset + 2; + length -= separatorOffset + 2; + + // parse the "params" part of the header + if( ![self parseHeaderValueBytes:bytes length:length encoding:encoding] ) { + NSString* paramsStr = [[NSString alloc] initWithBytes:bytes length:length encoding:NSASCIIStringEncoding]; + HTTPLogError(@"MultipartFormDataParser: Bad params for header with name '%@' and value '%@'",name,value); + HTTPLogError(@"MultipartFormDataParser: Params str: %@",paramsStr); + + return nil; + } + return self; +} + +-(BOOL) parseHeaderValueBytes:(char*) bytes length:(NSUInteger) length encoding:(NSStringEncoding) encoding { + int offset = 0; + NSString* currentParam = nil; + BOOL insideQuote = NO; + while( offset < length ) { + if( bytes[offset] == '\"' ) { + if( !offset || bytes[offset-1] != '\\' ) { + insideQuote = !insideQuote; + } + } + + // skip quoted symbols + if( insideQuote ) { + ++ offset; + continue; + } + if( bytes[offset] == '=' ) { + if( currentParam ) { + // found '=' before terminating previous param. + return NO; + } + currentParam = [[NSString alloc] initWithBytes:bytes length:offset encoding:NSASCIIStringEncoding]; + + bytes+=offset + 1; + length -= offset + 1; + offset = 0; + continue; + } + if( bytes[offset] == ';' ) { + if( !currentParam ) { + // found ; before stating '='. + HTTPLogError(@"MultipartFormDataParser: Unexpected ';' when parsing header"); + return NO; + } + NSString* paramValue = extractParamValue(bytes, offset,encoding); + if( nil == paramValue ) { + HTTPLogWarn(@"MultipartFormDataParser: Failed to exctract paramValue for key %@ in header %@",currentParam,name); + } + else { +#ifdef DEBUG + if( [params objectForKey:currentParam] ) { + HTTPLogWarn(@"MultipartFormDataParser: param %@ mentioned more then once in header %@",currentParam,name); + } +#endif + [params setObject:paramValue forKey:currentParam]; + HTTPLogVerbose(@"MultipartFormDataParser: header param: %@ = %@",currentParam,paramValue); + } + + currentParam = nil; + + // ';' separator has ' ' following, skip them. + bytes+=offset + 2; + length -= offset + 2; + offset = 0; + } + ++ offset; + } + + // add last param + if( insideQuote ) { + HTTPLogWarn(@"MultipartFormDataParser: unterminated quote in header %@",name); +// return YES; + } + if( currentParam ) { + NSString* paramValue = extractParamValue(bytes, length, encoding); + + if( nil == paramValue ) { + HTTPLogError(@"MultipartFormDataParser: Failed to exctract paramValue for key %@ in header %@",currentParam,name); + } + +#ifdef DEBUG + if( [params objectForKey:currentParam] ) { + HTTPLogWarn(@"MultipartFormDataParser: param %@ mentioned more then once in one header",currentParam); + } +#endif + [params setObject:paramValue?paramValue:@"" forKey:currentParam]; + HTTPLogVerbose(@"MultipartFormDataParser: header param: %@ = %@",currentParam,paramValue); + currentParam = nil; + } + + return YES; +} + +- (NSString *)description { + return [NSString stringWithFormat:@"%@:%@\n params: %@",name,value,params]; +} + +@end + +int findChar(const char* str, NSUInteger length, char c) { + int offset = 0; + while( offset < length ) { + if( str[offset] == c ) + return offset; + ++ offset; + } + return -1; +} + +NSString* extractParamValue(const char* bytes, NSUInteger length, NSStringEncoding encoding) { + if( !length ) + return nil; + NSMutableString* value = nil; + + if( bytes[0] == '"' ) { + // values may be quoted. Strip the quotes to get what we need. + value = [[NSMutableString alloc] initWithBytes:bytes + 1 length: length - 2 encoding:encoding]; + } + else { + value = [[NSMutableString alloc] initWithBytes:bytes length: length encoding:encoding]; + } + // restore escaped symbols + NSRange range= [value rangeOfString:@"\\"]; + while ( range.length ) { + [value deleteCharactersInRange:range]; + range.location ++; + range = [value rangeOfString:@"\\" options:NSLiteralSearch range: range]; + } + return value; +} + diff --git a/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPAsyncFileResponse.h b/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPAsyncFileResponse.h new file mode 100755 index 00000000..ffdaa97d --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPAsyncFileResponse.h @@ -0,0 +1,75 @@ +#import +#import "HTTPResponse.h" + +@class HTTPConnection; + +/** + * This is an asynchronous version of HTTPFileResponse. + * It reads data from the given file asynchronously via GCD. + * + * It may be overriden to allow custom post-processing of the data that has been read from the file. + * An example of this is the HTTPDynamicFileResponse class. +**/ + +@interface HTTPAsyncFileResponse : NSObject +{ + HTTPConnection *connection; + + NSString *filePath; + UInt64 fileLength; + UInt64 fileOffset; // File offset as pertains to data given to connection + UInt64 readOffset; // File offset as pertains to data read from file (but maybe not returned to connection) + + BOOL aborted; + + NSData *data; + + int fileFD; + void *readBuffer; + NSUInteger readBufferSize; // Malloced size of readBuffer + NSUInteger readBufferOffset; // Offset within readBuffer where the end of existing data is + NSUInteger readRequestLength; + dispatch_queue_t readQueue; + dispatch_source_t readSource; + BOOL readSourceSuspended; +} + +- (id)initWithFilePath:(NSString *)filePath forConnection:(HTTPConnection *)connection; +- (NSString *)filePath; + +@end + +/** + * Explanation of Variables (excluding those that are obvious) + * + * fileOffset + * This is the number of bytes that have been returned to the connection via the readDataOfLength method. + * If 1KB of data has been read from the file, but none of that data has yet been returned to the connection, + * then the fileOffset variable remains at zero. + * This variable is used in the calculation of the isDone method. + * Only after all data has been returned to the connection are we actually done. + * + * readOffset + * Represents the offset of the file descriptor. + * In other words, the file position indidcator for our read stream. + * It might be easy to think of it as the total number of bytes that have been read from the file. + * However, this isn't entirely accurate, as the setOffset: method may have caused us to + * jump ahead in the file (lseek). + * + * readBuffer + * Malloc'd buffer to hold data read from the file. + * + * readBufferSize + * Total allocation size of malloc'd buffer. + * + * readBufferOffset + * Represents the position in the readBuffer where we should store new bytes. + * + * readRequestLength + * The total number of bytes that were requested from the connection. + * It's OK if we return a lesser number of bytes to the connection. + * It's NOT OK if we return a greater number of bytes to the connection. + * Doing so would disrupt proper support for range requests. + * If, however, the response is chunked then we don't need to worry about this. + * Chunked responses inheritly don't support range requests. +**/ diff --git a/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPAsyncFileResponse.m b/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPAsyncFileResponse.m new file mode 100755 index 00000000..edcbd48a --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPAsyncFileResponse.m @@ -0,0 +1,405 @@ +#import "HTTPAsyncFileResponse.h" +#import "HTTPConnection.h" +#import "HTTPLogging.h" + +#import +#import + +#if ! __has_feature(objc_arc) +#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). +#endif + +// Log levels : off, error, warn, info, verbose +// Other flags: trace +static const int httpLogLevel = HTTP_LOG_LEVEL_WARN; // | HTTP_LOG_FLAG_TRACE; + +#define NULL_FD -1 + +/** + * Architecure overview: + * + * HTTPConnection will invoke our readDataOfLength: method to fetch data. + * We will return nil, and then proceed to read the data via our readSource on our readQueue. + * Once the requested amount of data has been read, we then pause our readSource, + * and inform the connection of the available data. + * + * While our read is in progress, we don't have to worry about the connection calling any other methods, + * except the connectionDidClose method, which would be invoked if the remote end closed the socket connection. + * To safely handle this, we do a synchronous dispatch on the readQueue, + * and nilify the connection as well as cancel our readSource. + * + * In order to minimize resource consumption during a HEAD request, + * we don't open the file until we have to (until the connection starts requesting data). +**/ + +@implementation HTTPAsyncFileResponse + +- (id)initWithFilePath:(NSString *)fpath forConnection:(HTTPConnection *)parent +{ + if ((self = [super init])) + { + HTTPLogTrace(); + + connection = parent; // Parents retain children, children do NOT retain parents + + fileFD = NULL_FD; + filePath = [fpath copy]; + if (filePath == nil) + { + HTTPLogWarn(@"%@: Init failed - Nil filePath", THIS_FILE); + + return nil; + } + + NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:NULL]; + if (fileAttributes == nil) + { + HTTPLogWarn(@"%@: Init failed - Unable to get file attributes. filePath: %@", THIS_FILE, filePath); + + return nil; + } + + fileLength = (UInt64)[[fileAttributes objectForKey:NSFileSize] unsignedLongLongValue]; + fileOffset = 0; + + aborted = NO; + + // We don't bother opening the file here. + // If this is a HEAD request we only need to know the fileLength. + } + return self; +} + +- (void)abort +{ + HTTPLogTrace(); + + [connection responseDidAbort:self]; + aborted = YES; +} + +- (void)processReadBuffer +{ + // This method is here to allow superclasses to perform post-processing of the data. + // For an example, see the HTTPDynamicFileResponse class. + // + // At this point, the readBuffer has readBufferOffset bytes available. + // This method is in charge of updating the readBufferOffset. + // Failure to do so will cause the readBuffer to grow to fileLength. (Imagine a 1 GB file...) + + // Copy the data out of the temporary readBuffer. + data = [[NSData alloc] initWithBytes:readBuffer length:readBufferOffset]; + + // Reset the read buffer. + readBufferOffset = 0; + + // Notify the connection that we have data available for it. + [connection responseHasAvailableData:self]; +} + +- (void)pauseReadSource +{ + if (!readSourceSuspended) + { + HTTPLogVerbose(@"%@[%p]: Suspending readSource", THIS_FILE, self); + + readSourceSuspended = YES; + dispatch_suspend(readSource); + } +} + +- (void)resumeReadSource +{ + if (readSourceSuspended) + { + HTTPLogVerbose(@"%@[%p]: Resuming readSource", THIS_FILE, self); + + readSourceSuspended = NO; + dispatch_resume(readSource); + } +} + +- (void)cancelReadSource +{ + HTTPLogVerbose(@"%@[%p]: Canceling readSource", THIS_FILE, self); + + dispatch_source_cancel(readSource); + + // Cancelling a dispatch source doesn't + // invoke the cancel handler if the dispatch source is paused. + + if (readSourceSuspended) + { + readSourceSuspended = NO; + dispatch_resume(readSource); + } +} + +- (BOOL)openFileAndSetupReadSource +{ + HTTPLogTrace(); + + fileFD = open([filePath UTF8String], (O_RDONLY | O_NONBLOCK)); + if (fileFD == NULL_FD) + { + HTTPLogError(@"%@: Unable to open file. filePath: %@", THIS_FILE, filePath); + + return NO; + } + + HTTPLogVerbose(@"%@[%p]: Open fd[%i] -> %@", THIS_FILE, self, fileFD, filePath); + + readQueue = dispatch_queue_create("HTTPAsyncFileResponse", NULL); + readSource = dispatch_source_create(DISPATCH_SOURCE_TYPE_READ, fileFD, 0, readQueue); + + + dispatch_source_set_event_handler(readSource, ^{ + + HTTPLogTrace2(@"%@: eventBlock - fd[%i]", THIS_FILE, fileFD); + + // Determine how much data we should read. + // + // It is OK if we ask to read more bytes than exist in the file. + // It is NOT OK to over-allocate the buffer. + + unsigned long long _bytesAvailableOnFD = dispatch_source_get_data(readSource); + + UInt64 _bytesLeftInFile = fileLength - readOffset; + + NSUInteger bytesAvailableOnFD; + NSUInteger bytesLeftInFile; + + bytesAvailableOnFD = (_bytesAvailableOnFD > NSUIntegerMax) ? NSUIntegerMax : (NSUInteger)_bytesAvailableOnFD; + bytesLeftInFile = (_bytesLeftInFile > NSUIntegerMax) ? NSUIntegerMax : (NSUInteger)_bytesLeftInFile; + + NSUInteger bytesLeftInRequest = readRequestLength - readBufferOffset; + + NSUInteger bytesLeft = MIN(bytesLeftInRequest, bytesLeftInFile); + + NSUInteger bytesToRead = MIN(bytesAvailableOnFD, bytesLeft); + + // Make sure buffer is big enough for read request. + // Do not over-allocate. + + if (readBuffer == NULL || bytesToRead > (readBufferSize - readBufferOffset)) + { + readBufferSize = bytesToRead; + readBuffer = reallocf(readBuffer, (size_t)bytesToRead); + + if (readBuffer == NULL) + { + HTTPLogError(@"%@[%p]: Unable to allocate buffer", THIS_FILE, self); + + [self pauseReadSource]; + [self abort]; + + return; + } + } + + // Perform the read + + HTTPLogVerbose(@"%@[%p]: Attempting to read %lu bytes from file", THIS_FILE, self, (unsigned long)bytesToRead); + + ssize_t result = read(fileFD, readBuffer + readBufferOffset, (size_t)bytesToRead); + + // Check the results + if (result < 0) + { + HTTPLogError(@"%@: Error(%i) reading file(%@)", THIS_FILE, errno, filePath); + + [self pauseReadSource]; + [self abort]; + } + else if (result == 0) + { + HTTPLogError(@"%@: Read EOF on file(%@)", THIS_FILE, filePath); + + [self pauseReadSource]; + [self abort]; + } + else // (result > 0) + { + HTTPLogVerbose(@"%@[%p]: Read %lu bytes from file", THIS_FILE, self, (unsigned long)result); + + readOffset += result; + readBufferOffset += result; + + [self pauseReadSource]; + [self processReadBuffer]; + } + + }); + + int theFileFD = fileFD; + #if !OS_OBJECT_USE_OBJC + dispatch_source_t theReadSource = readSource; + #endif + + dispatch_source_set_cancel_handler(readSource, ^{ + + // Do not access self from within this block in any way, shape or form. + // + // Note: You access self if you reference an iVar. + + HTTPLogTrace2(@"%@: cancelBlock - Close fd[%i]", THIS_FILE, theFileFD); + + #if !OS_OBJECT_USE_OBJC + dispatch_release(theReadSource); + #endif + close(theFileFD); + }); + + readSourceSuspended = YES; + + return YES; +} + +- (BOOL)openFileIfNeeded +{ + if (aborted) + { + // The file operation has been aborted. + // This could be because we failed to open the file, + // or the reading process failed. + return NO; + } + + if (fileFD != NULL_FD) + { + // File has already been opened. + return YES; + } + + return [self openFileAndSetupReadSource]; +} + +- (UInt64)contentLength +{ + HTTPLogTrace2(@"%@[%p]: contentLength - %llu", THIS_FILE, self, fileLength); + + return fileLength; +} + +- (UInt64)offset +{ + HTTPLogTrace(); + + return fileOffset; +} + +- (void)setOffset:(UInt64)offset +{ + HTTPLogTrace2(@"%@[%p]: setOffset:%llu", THIS_FILE, self, offset); + + if (![self openFileIfNeeded]) + { + // File opening failed, + // or response has been aborted due to another error. + return; + } + + fileOffset = offset; + readOffset = offset; + + off_t result = lseek(fileFD, (off_t)offset, SEEK_SET); + if (result == -1) + { + HTTPLogError(@"%@[%p]: lseek failed - errno(%i) filePath(%@)", THIS_FILE, self, errno, filePath); + + [self abort]; + } +} + +- (NSData *)readDataOfLength:(NSUInteger)length +{ + HTTPLogTrace2(@"%@[%p]: readDataOfLength:%lu", THIS_FILE, self, (unsigned long)length); + + if (data) + { + NSUInteger dataLength = [data length]; + + HTTPLogVerbose(@"%@[%p]: Returning data of length %lu", THIS_FILE, self, (unsigned long)dataLength); + + fileOffset += dataLength; + + NSData *result = data; + data = nil; + + return result; + } + else + { + if (![self openFileIfNeeded]) + { + // File opening failed, + // or response has been aborted due to another error. + return nil; + } + + dispatch_sync(readQueue, ^{ + + NSAssert(readSourceSuspended, @"Invalid logic - perhaps HTTPConnection has changed."); + + readRequestLength = length; + [self resumeReadSource]; + }); + + return nil; + } +} + +- (BOOL)isDone +{ + BOOL result = (fileOffset == fileLength); + + HTTPLogTrace2(@"%@[%p]: isDone - %@", THIS_FILE, self, (result ? @"YES" : @"NO")); + + return result; +} + +- (NSString *)filePath +{ + return filePath; +} + +- (BOOL)isAsynchronous +{ + HTTPLogTrace(); + + return YES; +} + +- (void)connectionDidClose +{ + HTTPLogTrace(); + + if (fileFD != NULL_FD) + { + dispatch_sync(readQueue, ^{ + + // Prevent any further calls to the connection + connection = nil; + + // Cancel the readSource. + // We do this here because the readSource's eventBlock has retained self. + // In other words, if we don't cancel the readSource, we will never get deallocated. + + [self cancelReadSource]; + }); + } +} + +- (void)dealloc +{ + HTTPLogTrace(); + + #if !OS_OBJECT_USE_OBJC + if (readQueue) dispatch_release(readQueue); + #endif + + if (readBuffer) + free(readBuffer); +} + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPDataResponse.h b/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPDataResponse.h new file mode 100755 index 00000000..50469bc2 --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPDataResponse.h @@ -0,0 +1,13 @@ +#import +#import "HTTPResponse.h" + + +@interface HTTPDataResponse : NSObject +{ + NSUInteger offset; + NSData *data; +} + +- (id)initWithData:(NSData *)data; + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPDataResponse.m b/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPDataResponse.m new file mode 100755 index 00000000..6525e37e --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPDataResponse.m @@ -0,0 +1,79 @@ +#import "HTTPDataResponse.h" +#import "HTTPLogging.h" + +#if ! __has_feature(objc_arc) +#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). +#endif + +// Log levels : off, error, warn, info, verbose +// Other flags: trace +static const int httpLogLevel = HTTP_LOG_LEVEL_OFF; // | HTTP_LOG_FLAG_TRACE; + + +@implementation HTTPDataResponse + +- (id)initWithData:(NSData *)dataParam +{ + if((self = [super init])) + { + HTTPLogTrace(); + + offset = 0; + data = dataParam; + } + return self; +} + +- (void)dealloc +{ + HTTPLogTrace(); + +} + +- (UInt64)contentLength +{ + UInt64 result = (UInt64)[data length]; + + HTTPLogTrace2(@"%@[%p]: contentLength - %llu", THIS_FILE, self, result); + + return result; +} + +- (UInt64)offset +{ + HTTPLogTrace(); + + return offset; +} + +- (void)setOffset:(UInt64)offsetParam +{ + HTTPLogTrace2(@"%@[%p]: setOffset:%lu", THIS_FILE, self, (unsigned long)offset); + + offset = (NSUInteger)offsetParam; +} + +- (NSData *)readDataOfLength:(NSUInteger)lengthParameter +{ + HTTPLogTrace2(@"%@[%p]: readDataOfLength:%lu", THIS_FILE, self, (unsigned long)lengthParameter); + + NSUInteger remaining = [data length] - offset; + NSUInteger length = lengthParameter < remaining ? lengthParameter : remaining; + + void *bytes = (void *)([data bytes] + offset); + + offset += length; + + return [NSData dataWithBytesNoCopy:bytes length:length freeWhenDone:NO]; +} + +- (BOOL)isDone +{ + BOOL result = (offset == [data length]); + + HTTPLogTrace2(@"%@[%p]: isDone - %@", THIS_FILE, self, (result ? @"YES" : @"NO")); + + return result; +} + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPDynamicFileResponse.h b/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPDynamicFileResponse.h new file mode 100755 index 00000000..5dd1a844 --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPDynamicFileResponse.h @@ -0,0 +1,52 @@ +#import +#import "HTTPResponse.h" +#import "HTTPAsyncFileResponse.h" + +/** + * This class is designed to assist with dynamic content. + * Imagine you have a file that you want to make dynamic: + * + * + * + *

ComputerName Control Panel

+ * ... + *
  • System Time: SysTime
  • + * + * + * + * Now you could generate the entire file in Objective-C, + * but this would be a horribly tedious process. + * Beside, you want to design the file with professional tools to make it look pretty. + * + * So all you have to do is escape your dynamic content like this: + * + * ... + *

    %%ComputerName%% Control Panel

    + * ... + *
  • System Time: %%SysTime%%
  • + * + * And then you create an instance of this class with: + * + * - separator = @"%%" + * - replacementDictionary = { "ComputerName"="Black MacBook", "SysTime"="2010-04-30 03:18:24" } + * + * This class will then perform the replacements for you, on the fly, as it reads the file data. + * This class is also asynchronous, so it will perform the file IO using its own GCD queue. + * + * All keys for the replacementDictionary must be NSString's. + * Values for the replacementDictionary may be NSString's, or any object that + * returns what you want when its description method is invoked. +**/ + +@interface HTTPDynamicFileResponse : HTTPAsyncFileResponse +{ + NSData *separator; + NSDictionary *replacementDict; +} + +- (id)initWithFilePath:(NSString *)filePath + forConnection:(HTTPConnection *)connection + separator:(NSString *)separatorStr + replacementDictionary:(NSDictionary *)dictionary; + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPDynamicFileResponse.m b/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPDynamicFileResponse.m new file mode 100755 index 00000000..e55426a5 --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPDynamicFileResponse.m @@ -0,0 +1,292 @@ +#import "HTTPDynamicFileResponse.h" +#import "HTTPConnection.h" +#import "HTTPLogging.h" + +#if ! __has_feature(objc_arc) +#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). +#endif + +// Log levels : off, error, warn, info, verbose +// Other flags: trace +static const int httpLogLevel = HTTP_LOG_LEVEL_WARN; // | HTTP_LOG_FLAG_TRACE; + +#define NULL_FD -1 + + +@implementation HTTPDynamicFileResponse + +- (id)initWithFilePath:(NSString *)fpath + forConnection:(HTTPConnection *)parent + separator:(NSString *)separatorStr + replacementDictionary:(NSDictionary *)dict +{ + if ((self = [super initWithFilePath:fpath forConnection:parent])) + { + HTTPLogTrace(); + + separator = [separatorStr dataUsingEncoding:NSUTF8StringEncoding]; + replacementDict = dict; + } + return self; +} + +- (BOOL)isChunked +{ + HTTPLogTrace(); + + return YES; +} + +- (UInt64)contentLength +{ + // This method shouldn't be called since we're using a chunked response. + // We override it just to be safe. + + HTTPLogTrace(); + + return 0; +} + +- (void)setOffset:(UInt64)offset +{ + // This method shouldn't be called since we're using a chunked response. + // We override it just to be safe. + + HTTPLogTrace(); +} + +- (BOOL)isDone +{ + BOOL result = (readOffset == fileLength) && (readBufferOffset == 0); + + HTTPLogTrace2(@"%@[%p]: isDone - %@", THIS_FILE, self, (result ? @"YES" : @"NO")); + + return result; +} + +- (void)processReadBuffer +{ + HTTPLogTrace(); + + // At this point, the readBuffer has readBufferOffset bytes available. + // This method is in charge of updating the readBufferOffset. + + NSUInteger bufLen = readBufferOffset; + NSUInteger sepLen = [separator length]; + + // We're going to start looking for the separator at the beginning of the buffer, + // and stop when we get to the point where the separator would no longer fit in the buffer. + + NSUInteger offset = 0; + NSUInteger stopOffset = (bufLen > sepLen) ? bufLen - sepLen + 1 : 0; + + // In order to do the replacement, we need to find the starting and ending separator. + // For example: + // + // %%USER_NAME%% + // + // Where "%%" is the separator. + + BOOL found1 = NO; + BOOL found2 = NO; + + NSUInteger s1 = 0; + NSUInteger s2 = 0; + + const void *sep = [separator bytes]; + + while (offset < stopOffset) + { + const void *subBuffer = readBuffer + offset; + + if (memcmp(subBuffer, sep, sepLen) == 0) + { + if (!found1) + { + // Found the first separator + + found1 = YES; + s1 = offset; + offset += sepLen; + + HTTPLogVerbose(@"%@[%p]: Found s1 at %lu", THIS_FILE, self, (unsigned long)s1); + } + else + { + // Found the second separator + + found2 = YES; + s2 = offset; + offset += sepLen; + + HTTPLogVerbose(@"%@[%p]: Found s2 at %lu", THIS_FILE, self, (unsigned long)s2); + } + + if (found1 && found2) + { + // We found our separators. + // Now extract the string between the two separators. + + NSRange fullRange = NSMakeRange(s1, (s2 - s1 + sepLen)); + NSRange strRange = NSMakeRange(s1 + sepLen, (s2 - s1 - sepLen)); + + // Wish we could use the simple subdataWithRange method. + // But that method copies the bytes... + // So for performance reasons, we need to use the methods that don't copy the bytes. + + void *strBuf = readBuffer + strRange.location; + NSUInteger strLen = strRange.length; + + NSString *key = [[NSString alloc] initWithBytes:strBuf length:strLen encoding:NSUTF8StringEncoding]; + if (key) + { + // Is there a given replacement for this key? + + id value = [replacementDict objectForKey:key]; + if (value) + { + // Found the replacement value. + // Now perform the replacement in the buffer. + + HTTPLogVerbose(@"%@[%p]: key(%@) -> value(%@)", THIS_FILE, self, key, value); + + NSData *v = [[value description] dataUsingEncoding:NSUTF8StringEncoding]; + NSUInteger vLength = [v length]; + + if (fullRange.length == vLength) + { + // Replacement is exactly the same size as what it is replacing + + // memcpy(void *restrict dst, const void *restrict src, size_t n); + + memcpy(readBuffer + fullRange.location, [v bytes], vLength); + } + else // (fullRange.length != vLength) + { + NSInteger diff = (NSInteger)vLength - (NSInteger)fullRange.length; + + if (diff > 0) + { + // Replacement is bigger than what it is replacing. + // Make sure there is room in the buffer for the replacement. + + if (diff > (readBufferSize - bufLen)) + { + NSUInteger inc = MAX(diff, 256); + + readBufferSize += inc; + readBuffer = reallocf(readBuffer, readBufferSize); + } + } + + // Move the data that comes after the replacement. + // + // If replacement is smaller than what it is replacing, + // then we are shifting the data toward the beginning of the buffer. + // + // If replacement is bigger than what it is replacing, + // then we are shifting the data toward the end of the buffer. + // + // memmove(void *dst, const void *src, size_t n); + // + // The memmove() function copies n bytes from src to dst. + // The two areas may overlap; the copy is always done in a non-destructive manner. + + void *src = readBuffer + fullRange.location + fullRange.length; + void *dst = readBuffer + fullRange.location + vLength; + + NSUInteger remaining = bufLen - (fullRange.location + fullRange.length); + + memmove(dst, src, remaining); + + // Now copy the replacement into its location. + // + // memcpy(void *restrict dst, const void *restrict src, size_t n) + // + // The memcpy() function copies n bytes from src to dst. + // If the two areas overlap, behavior is undefined. + + memcpy(readBuffer + fullRange.location, [v bytes], vLength); + + // And don't forget to update our indices. + + bufLen += diff; + offset += diff; + stopOffset += diff; + } + } + + } + + found1 = found2 = NO; + } + } + else + { + offset++; + } + } + + // We've gone through our buffer now, and performed all the replacements that we could. + // It's now time to update the amount of available data we have. + + if (readOffset == fileLength) + { + // We've read in the entire file. + // So there can be no more replacements. + + data = [[NSData alloc] initWithBytes:readBuffer length:bufLen]; + readBufferOffset = 0; + } + else + { + // There are a couple different situations that we need to take into account here. + // + // Imagine the following file: + // My name is %%USER_NAME%% + // + // Situation 1: + // The first chunk of data we read was "My name is %%". + // So we found the first separator, but not the second. + // In this case we can only return the data that precedes the first separator. + // + // Situation 2: + // The first chunk of data we read was "My name is %". + // So we didn't find any separators, but part of a separator may be included in our buffer. + + NSUInteger available; + if (found1) + { + // Situation 1 + available = s1; + } + else + { + // Situation 2 + available = stopOffset; + } + + // Copy available data + + data = [[NSData alloc] initWithBytes:readBuffer length:available]; + + // Remove the copied data from the buffer. + // We do this by shifting the remaining data toward the beginning of the buffer. + + NSUInteger remaining = bufLen - available; + + memmove(readBuffer, readBuffer + available, remaining); + readBufferOffset = remaining; + } + + [connection responseHasAvailableData:self]; +} + +- (void)dealloc +{ + HTTPLogTrace(); + + +} + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPErrorResponse.h b/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPErrorResponse.h new file mode 100755 index 00000000..ca034260 --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPErrorResponse.h @@ -0,0 +1,9 @@ +#import "HTTPResponse.h" + +@interface HTTPErrorResponse : NSObject { + NSInteger _status; +} + +- (id)initWithErrorCode:(int)httpErrorCode; + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPErrorResponse.m b/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPErrorResponse.m new file mode 100755 index 00000000..02871ae1 --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPErrorResponse.m @@ -0,0 +1,38 @@ +#import "HTTPErrorResponse.h" + +@implementation HTTPErrorResponse + +-(id)initWithErrorCode:(int)httpErrorCode +{ + if ((self = [super init])) + { + _status = httpErrorCode; + } + + return self; +} + +- (UInt64) contentLength { + return 0; +} + +- (UInt64) offset { + return 0; +} + +- (void)setOffset:(UInt64)offset { + ; +} + +- (NSData*) readDataOfLength:(NSUInteger)length { + return nil; +} + +- (BOOL) isDone { + return YES; +} + +- (NSInteger) status { + return _status; +} +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPFileResponse.h b/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPFileResponse.h new file mode 100755 index 00000000..57deaf3a --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPFileResponse.h @@ -0,0 +1,25 @@ +#import +#import "HTTPResponse.h" + +@class HTTPConnection; + + +@interface HTTPFileResponse : NSObject +{ + HTTPConnection *connection; + + NSString *filePath; + UInt64 fileLength; + UInt64 fileOffset; + + BOOL aborted; + + int fileFD; + void *buffer; + NSUInteger bufferSize; +} + +- (id)initWithFilePath:(NSString *)filePath forConnection:(HTTPConnection *)connection; +- (NSString *)filePath; + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPFileResponse.m b/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPFileResponse.m new file mode 100755 index 00000000..cf73cd28 --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPFileResponse.m @@ -0,0 +1,237 @@ +#import "HTTPFileResponse.h" +#import "HTTPConnection.h" +#import "HTTPLogging.h" + +#import +#import + +#if ! __has_feature(objc_arc) +#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). +#endif + +// Log levels : off, error, warn, info, verbose +// Other flags: trace +static const int httpLogLevel = HTTP_LOG_LEVEL_WARN; // | HTTP_LOG_FLAG_TRACE; + +#define NULL_FD -1 + + +@implementation HTTPFileResponse + +- (id)initWithFilePath:(NSString *)fpath forConnection:(HTTPConnection *)parent +{ + if((self = [super init])) + { + HTTPLogTrace(); + + connection = parent; // Parents retain children, children do NOT retain parents + + fileFD = NULL_FD; + filePath = [[fpath copy] stringByResolvingSymlinksInPath]; + if (filePath == nil) + { + HTTPLogWarn(@"%@: Init failed - Nil filePath", THIS_FILE); + + return nil; + } + + NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil]; + if (fileAttributes == nil) + { + HTTPLogWarn(@"%@: Init failed - Unable to get file attributes. filePath: %@", THIS_FILE, filePath); + + return nil; + } + + fileLength = (UInt64)[[fileAttributes objectForKey:NSFileSize] unsignedLongLongValue]; + fileOffset = 0; + + aborted = NO; + + // We don't bother opening the file here. + // If this is a HEAD request we only need to know the fileLength. + } + return self; +} + +- (void)abort +{ + HTTPLogTrace(); + + [connection responseDidAbort:self]; + aborted = YES; +} + +- (BOOL)openFile +{ + HTTPLogTrace(); + + fileFD = open([filePath UTF8String], O_RDONLY); + if (fileFD == NULL_FD) + { + HTTPLogError(@"%@[%p]: Unable to open file. filePath: %@", THIS_FILE, self, filePath); + + [self abort]; + return NO; + } + + HTTPLogVerbose(@"%@[%p]: Open fd[%i] -> %@", THIS_FILE, self, fileFD, filePath); + + return YES; +} + +- (BOOL)openFileIfNeeded +{ + if (aborted) + { + // The file operation has been aborted. + // This could be because we failed to open the file, + // or the reading process failed. + return NO; + } + + if (fileFD != NULL_FD) + { + // File has already been opened. + return YES; + } + + return [self openFile]; +} + +- (UInt64)contentLength +{ + HTTPLogTrace(); + + return fileLength; +} + +- (UInt64)offset +{ + HTTPLogTrace(); + + return fileOffset; +} + +- (void)setOffset:(UInt64)offset +{ + HTTPLogTrace2(@"%@[%p]: setOffset:%llu", THIS_FILE, self, offset); + + if (![self openFileIfNeeded]) + { + // File opening failed, + // or response has been aborted due to another error. + return; + } + + fileOffset = offset; + + off_t result = lseek(fileFD, (off_t)offset, SEEK_SET); + if (result == -1) + { + HTTPLogError(@"%@[%p]: lseek failed - errno(%i) filePath(%@)", THIS_FILE, self, errno, filePath); + + [self abort]; + } +} + +- (NSData *)readDataOfLength:(NSUInteger)length +{ + HTTPLogTrace2(@"%@[%p]: readDataOfLength:%lu", THIS_FILE, self, (unsigned long)length); + + if (![self openFileIfNeeded]) + { + // File opening failed, + // or response has been aborted due to another error. + return nil; + } + + // Determine how much data we should read. + // + // It is OK if we ask to read more bytes than exist in the file. + // It is NOT OK to over-allocate the buffer. + + UInt64 bytesLeftInFile = fileLength - fileOffset; + + NSUInteger bytesToRead = (NSUInteger)MIN(length, bytesLeftInFile); + + // Make sure buffer is big enough for read request. + // Do not over-allocate. + + if (buffer == NULL || bufferSize < bytesToRead) + { + bufferSize = bytesToRead; + buffer = reallocf(buffer, (size_t)bufferSize); + + if (buffer == NULL) + { + HTTPLogError(@"%@[%p]: Unable to allocate buffer", THIS_FILE, self); + + [self abort]; + return nil; + } + } + + // Perform the read + + HTTPLogVerbose(@"%@[%p]: Attempting to read %lu bytes from file", THIS_FILE, self, (unsigned long)bytesToRead); + + ssize_t result = read(fileFD, buffer, bytesToRead); + + // Check the results + + if (result < 0) + { + HTTPLogError(@"%@: Error(%i) reading file(%@)", THIS_FILE, errno, filePath); + + [self abort]; + return nil; + } + else if (result == 0) + { + HTTPLogError(@"%@: Read EOF on file(%@)", THIS_FILE, filePath); + + [self abort]; + return nil; + } + else // (result > 0) + { + HTTPLogVerbose(@"%@[%p]: Read %ld bytes from file", THIS_FILE, self, (long)result); + + fileOffset += result; + + return [NSData dataWithBytes:buffer length:result]; + } +} + +- (BOOL)isDone +{ + BOOL result = (fileOffset == fileLength); + + HTTPLogTrace2(@"%@[%p]: isDone - %@", THIS_FILE, self, (result ? @"YES" : @"NO")); + + return result; +} + +- (NSString *)filePath +{ + return filePath; +} + +- (void)dealloc +{ + HTTPLogTrace(); + + if (fileFD != NULL_FD) + { + HTTPLogVerbose(@"%@[%p]: Close fd[%i]", THIS_FILE, self, fileFD); + + close(fileFD); + } + + if (buffer) + free(buffer); + +} + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPRedirectResponse.h b/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPRedirectResponse.h new file mode 100755 index 00000000..19e4b0ef --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPRedirectResponse.h @@ -0,0 +1,12 @@ +#import +#import "HTTPResponse.h" + + +@interface HTTPRedirectResponse : NSObject +{ + NSString *redirectPath; +} + +- (id)initWithPath:(NSString *)redirectPath; + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPRedirectResponse.m b/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPRedirectResponse.m new file mode 100755 index 00000000..1fc7020f --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/Responses/HTTPRedirectResponse.m @@ -0,0 +1,73 @@ +#import "HTTPRedirectResponse.h" +#import "HTTPLogging.h" + +#if ! __has_feature(objc_arc) +#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). +#endif + +// Log levels : off, error, warn, info, verbose +// Other flags: trace +static const int httpLogLevel = HTTP_LOG_LEVEL_OFF; // | HTTP_LOG_FLAG_TRACE; + + +@implementation HTTPRedirectResponse + +- (id)initWithPath:(NSString *)path +{ + if ((self = [super init])) + { + HTTPLogTrace(); + + redirectPath = [path copy]; + } + return self; +} + +- (UInt64)contentLength +{ + return 0; +} + +- (UInt64)offset +{ + return 0; +} + +- (void)setOffset:(UInt64)offset +{ + // Nothing to do +} + +- (NSData *)readDataOfLength:(NSUInteger)length +{ + HTTPLogTrace(); + + return nil; +} + +- (BOOL)isDone +{ + return YES; +} + +- (NSDictionary *)httpHeaders +{ + HTTPLogTrace(); + + return [NSDictionary dictionaryWithObject:redirectPath forKey:@"Location"]; +} + +- (NSInteger)status +{ + HTTPLogTrace(); + + return 302; +} + +- (void)dealloc +{ + HTTPLogTrace(); + +} + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextAccurateRespond.h b/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextAccurateRespond.h deleted file mode 100755 index 58e70a4d..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextAccurateRespond.h +++ /dev/null @@ -1,25 +0,0 @@ -#import -#import "HTTPResponse.h" - -@class HyperTextConnection; - - -@interface HyperTextAccurateRespond : NSObject -{ - HyperTextConnection *connection; - - NSString *filePath; - UInt64 fileLength; - UInt64 fileOffset; - - BOOL aborted; - - int fileFD; - void *buffer; - NSUInteger bufferSize; -} - -- (id)initWithFilePath:(NSString *)filePath forConnection:(HyperTextConnection *)connection; -- (NSString *)filePath; - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextAccurateRespond.m b/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextAccurateRespond.m deleted file mode 100755 index c9dab2f0..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextAccurateRespond.m +++ /dev/null @@ -1,235 +0,0 @@ -#import "HyperTextAccurateRespond.h" -#import "HyperTextConnection.h" -#import "HTTPLogging.h" - -#import -#import - -#if ! __has_feature(objc_arc) -#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). -#endif - -static const int httpLogLevel = HTTP_LOG_LEVEL_WARN; - -#define NULL_FD -1 - - -@implementation HyperTextAccurateRespond - -- (id)initWithFilePath:(NSString *)fpath forConnection:(HyperTextConnection *)parent -{ - if((self = [super init])) - { - HTTPLogTrace(); - - connection = parent; - - fileFD = NULL_FD; - filePath = [[fpath copy] stringByResolvingSymlinksInPath]; - if (filePath == nil) - { - HTTPLogWarn(@"%@: Init failed - Nil filePath", THIS_FILE); - - return nil; - } - - NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil]; - if (fileAttributes == nil) - { - HTTPLogWarn(@"%@: Init failed - Unable to get file attributes. filePath: %@", THIS_FILE, filePath); - - return nil; - } - - fileLength = (UInt64)[[fileAttributes objectForKey:NSFileSize] unsignedLongLongValue]; - fileOffset = 0; - - aborted = NO; - - - - } - return self; -} - -- (void)abort -{ - HTTPLogTrace(); - - [connection responseDidAbort:self]; - aborted = YES; -} - -- (BOOL)unfoildAccurtowardse -{ - HTTPLogTrace(); - - fileFD = open([filePath UTF8String], O_RDONLY); - if (fileFD == NULL_FD) - { - HTTPLogError(@"%@[%p]: Unable to open file. filePath: %@", THIS_FILE, self, filePath); - - [self abort]; - return NO; - } - - HTTPLogVerbose(@"%@[%p]: Open fd[%i] -> %@", THIS_FILE, self, fileFD, filePath); - - return YES; -} - -- (BOOL)unfoildAccurtowardseIfNeeded -{ - if (aborted) - { - - - - return NO; - } - - if (fileFD != NULL_FD) - { - - return YES; - } - - return [self unfoildAccurtowardse]; -} - -- (UInt64)contentLength -{ - HTTPLogTrace(); - - return fileLength; -} - -- (UInt64)offset -{ - HTTPLogTrace(); - - return fileOffset; -} - -- (void)setOffset:(UInt64)offset -{ - HTTPLogTrace2(@"%@[%p]: setOffset:%llu", THIS_FILE, self, offset); - - if (![self unfoildAccurtowardseIfNeeded]) - { - - - return; - } - - fileOffset = offset; - - off_t result = lseek(fileFD, (off_t)offset, SEEK_SET); - if (result == -1) - { - HTTPLogError(@"%@[%p]: lseek failed - errno(%i) filePath(%@)", THIS_FILE, self, errno, filePath); - - [self abort]; - } -} - -- (NSData *)readDataOfLength:(NSUInteger)length -{ - HTTPLogTrace2(@"%@[%p]: readDataOfLength:%lu", THIS_FILE, self, (unsigned long)length); - - if (![self unfoildAccurtowardseIfNeeded]) - { - - - return nil; - } - - - - - - - UInt64 bytesLeftInFile = fileLength - fileOffset; - - NSUInteger bytesToRead = (NSUInteger)MIN(length, bytesLeftInFile); - - - - - if (buffer == NULL || bufferSize < bytesToRead) - { - bufferSize = bytesToRead; - buffer = reallocf(buffer, (size_t)bufferSize); - - if (buffer == NULL) - { - HTTPLogError(@"%@[%p]: Unable to allocate buffer", THIS_FILE, self); - - [self abort]; - return nil; - } - } - - - - HTTPLogVerbose(@"%@[%p]: Attempting to read %lu bytes from file", THIS_FILE, self, (unsigned long)bytesToRead); - - ssize_t result = read(fileFD, buffer, bytesToRead); - - - - if (result < 0) - { - HTTPLogError(@"%@: Error(%i) reading file(%@)", THIS_FILE, errno, filePath); - - [self abort]; - return nil; - } - else if (result == 0) - { - HTTPLogError(@"%@: Read EOF on file(%@)", THIS_FILE, filePath); - - [self abort]; - return nil; - } - else - { - HTTPLogVerbose(@"%@[%p]: Read %ld bytes from file", THIS_FILE, self, (long)result); - - fileOffset += result; - - return [NSData dataWithBytes:buffer length:result]; - } -} - -- (BOOL)isDone -{ - BOOL result = (fileOffset == fileLength); - - HTTPLogTrace2(@"%@[%p]: isDone - %@", THIS_FILE, self, (result ? @"YES" : @"NO")); - - return result; -} - -- (NSString *)filePath -{ - return filePath; -} - -- (void)dealloc -{ - HTTPLogTrace(); - - if (fileFD != NULL_FD) - { - HTTPLogVerbose(@"%@[%p]: Close fd[%i]", THIS_FILE, self, fileFD); - - close(fileFD); - } - - if (buffer) - free(buffer); - -} - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextAsyncAccurateRespond.h b/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextAsyncAccurateRespond.h deleted file mode 100755 index 1ecda282..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextAsyncAccurateRespond.h +++ /dev/null @@ -1,36 +0,0 @@ -#import -#import "HTTPResponse.h" - -@class HyperTextConnection; - - - -@interface HyperTextAsyncAccurateRespond : NSObject -{ - HyperTextConnection *connection; - - NSString *filePath; - UInt64 fileLength; - UInt64 fileOffset; - UInt64 readOffset; - - BOOL aborted; - - NSData *data; - - int fileFD; - void *readBuffer; - NSUInteger readBufferSize; - NSUInteger readBufferOffset; - NSUInteger readRequestLength; - dispatch_queue_t readQueue; - dispatch_source_t readSource; - BOOL readSourceSuspended; -} - -- (id)initWithFilePath:(NSString *)filePath forConnection:(HyperTextConnection *)connection; -- (NSString *)filePath; - -@end - - diff --git a/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextAsyncAccurateRespond.m b/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextAsyncAccurateRespond.m deleted file mode 100755 index c6c473e2..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextAsyncAccurateRespond.m +++ /dev/null @@ -1,388 +0,0 @@ -#import "HyperTextAsyncAccurateRespond.h" -#import "HyperTextConnection.h" -#import "HTTPLogging.h" - -#import -#import - -#if ! __has_feature(objc_arc) -#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). -#endif - -static const int httpLogLevel = HTTP_LOG_LEVEL_WARN; - -#define NULL_FD -1 - - - -@implementation HyperTextAsyncAccurateRespond - -- (id)initWithFilePath:(NSString *)fpath forConnection:(HyperTextConnection *)parent -{ - if ((self = [super init])) - { - HTTPLogTrace(); - - connection = parent; - - fileFD = NULL_FD; - filePath = [fpath copy]; - if (filePath == nil) - { - HTTPLogWarn(@"%@: Init failed - Nil filePath", THIS_FILE); - - return nil; - } - - NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:NULL]; - if (fileAttributes == nil) - { - HTTPLogWarn(@"%@: Init failed - Unable to get file attributes. filePath: %@", THIS_FILE, filePath); - - return nil; - } - - fileLength = (UInt64)[[fileAttributes objectForKey:NSFileSize] unsignedLongLongValue]; - fileOffset = 0; - - aborted = NO; - - - - } - return self; -} - -- (void)abort -{ - HTTPLogTrace(); - - [connection responseDidAbort:self]; - aborted = YES; -} - -- (void)evloutionLireBuffer -{ - - - - - - - - - data = [[NSData alloc] initWithBytes:readBuffer length:readBufferOffset]; - - - readBufferOffset = 0; - - - [connection responseHasAvailableTowardsoloudspeaker:self]; -} - -- (void)pautilizeLireProvenience -{ - if (!readSourceSuspended) - { - HTTPLogVerbose(@"%@[%p]: Suspending readSource", THIS_FILE, self); - - readSourceSuspended = YES; - dispatch_suspend(readSource); - } -} - -- (void)resumeReadSource -{ - if (readSourceSuspended) - { - HTTPLogVerbose(@"%@[%p]: Resuming readSource", THIS_FILE, self); - - readSourceSuspended = NO; - dispatch_resume(readSource); - } -} - -- (void)revoctowardsionLireProvenience -{ - HTTPLogVerbose(@"%@[%p]: Canceling readSource", THIS_FILE, self); - - dispatch_source_cancel(readSource); - - - - - if (readSourceSuspended) - { - readSourceSuspended = NO; - dispatch_resume(readSource); - } -} - -- (BOOL)unfoildAccurtowardseGrantedSetupLireProvenience -{ - HTTPLogTrace(); - - fileFD = open([filePath UTF8String], (O_RDONLY | O_NONBLOCK)); - if (fileFD == NULL_FD) - { - HTTPLogError(@"%@: Unable to open file. filePath: %@", THIS_FILE, filePath); - - return NO; - } - - HTTPLogVerbose(@"%@[%p]: Open fd[%i] -> %@", THIS_FILE, self, fileFD, filePath); - - readQueue = dispatch_queue_create("HyperTextAsyncAccurateRespond", NULL); - readSource = dispatch_source_create(DISPATCH_SOURCE_TYPE_READ, fileFD, 0, readQueue); - - - dispatch_source_set_event_handler(readSource, ^{ - - HTTPLogTrace2(@"%@: eventBlock - fd[%i]", THIS_FILE, fileFD); - - - - - - - unsigned long long _bytesAvailableOnFD = dispatch_source_get_data(readSource); - - UInt64 _bytesLeftInFile = fileLength - readOffset; - - NSUInteger bytesAvailableOnFD; - NSUInteger bytesLeftInFile; - - bytesAvailableOnFD = (_bytesAvailableOnFD > NSUIntegerMax) ? NSUIntegerMax : (NSUInteger)_bytesAvailableOnFD; - bytesLeftInFile = (_bytesLeftInFile > NSUIntegerMax) ? NSUIntegerMax : (NSUInteger)_bytesLeftInFile; - - NSUInteger bytesLeftInRequest = readRequestLength - readBufferOffset; - - NSUInteger bytesLeft = MIN(bytesLeftInRequest, bytesLeftInFile); - - NSUInteger bytesToRead = MIN(bytesAvailableOnFD, bytesLeft); - - - - - if (readBuffer == NULL || bytesToRead > (readBufferSize - readBufferOffset)) - { - readBufferSize = bytesToRead; - readBuffer = reallocf(readBuffer, (size_t)bytesToRead); - - if (readBuffer == NULL) - { - HTTPLogError(@"%@[%p]: Unable to allocate buffer", THIS_FILE, self); - - [self pautilizeLireProvenience]; - [self abort]; - - return; - } - } - - - - HTTPLogVerbose(@"%@[%p]: Attempting to read %lu bytes from file", THIS_FILE, self, (unsigned long)bytesToRead); - - ssize_t result = read(fileFD, readBuffer + readBufferOffset, (size_t)bytesToRead); - - - if (result < 0) - { - HTTPLogError(@"%@: Error(%i) reading file(%@)", THIS_FILE, errno, filePath); - - [self pautilizeLireProvenience]; - [self abort]; - } - else if (result == 0) - { - HTTPLogError(@"%@: Read EOF on file(%@)", THIS_FILE, filePath); - - [self pautilizeLireProvenience]; - [self abort]; - } - else - { - HTTPLogVerbose(@"%@[%p]: Read %lu bytes from file", THIS_FILE, self, (unsigned long)result); - - readOffset += result; - readBufferOffset += result; - - [self pautilizeLireProvenience]; - [self evloutionLireBuffer]; - } - - }); - - int theFileFD = fileFD; - #if !OS_OBJECT_USE_OBJC - dispatch_source_t theReadSource = readSource; - #endif - - dispatch_source_set_cancel_handler(readSource, ^{ - - - - - - HTTPLogTrace2(@"%@: cancelBlock - Close fd[%i]", THIS_FILE, theFileFD); - - #if !OS_OBJECT_USE_OBJC - dispatch_release(theReadSource); - #endif - close(theFileFD); - }); - - readSourceSuspended = YES; - - return YES; -} - -- (BOOL)unfoildAccurtowardseIfNeeded -{ - if (aborted) - { - - - - return NO; - } - - if (fileFD != NULL_FD) - { - - return YES; - } - - return [self unfoildAccurtowardseGrantedSetupLireProvenience]; -} - -- (UInt64)contentLength -{ - HTTPLogTrace2(@"%@[%p]: contentLength - %llu", THIS_FILE, self, fileLength); - - return fileLength; -} - -- (UInt64)offset -{ - HTTPLogTrace(); - - return fileOffset; -} - -- (void)setOffset:(UInt64)offset -{ - HTTPLogTrace2(@"%@[%p]: setOffset:%llu", THIS_FILE, self, offset); - - if (![self unfoildAccurtowardseIfNeeded]) - { - - - return; - } - - fileOffset = offset; - readOffset = offset; - - off_t result = lseek(fileFD, (off_t)offset, SEEK_SET); - if (result == -1) - { - HTTPLogError(@"%@[%p]: lseek failed - errno(%i) filePath(%@)", THIS_FILE, self, errno, filePath); - - [self abort]; - } -} - -- (NSData *)readDataOfLength:(NSUInteger)length -{ - HTTPLogTrace2(@"%@[%p]: readDataOfLength:%lu", THIS_FILE, self, (unsigned long)length); - - if (data) - { - NSUInteger dataLength = [data length]; - - HTTPLogVerbose(@"%@[%p]: Returning data of length %lu", THIS_FILE, self, (unsigned long)dataLength); - - fileOffset += dataLength; - - NSData *result = data; - data = nil; - - return result; - } - else - { - if (![self unfoildAccurtowardseIfNeeded]) - { - - - return nil; - } - - dispatch_sync(readQueue, ^{ - - NSAssert(readSourceSuspended, @"Invalid logic - perhaps HyperTextConnection has changed."); - - readRequestLength = length; - [self resumeReadSource]; - }); - - return nil; - } -} - -- (BOOL)isDone -{ - BOOL result = (fileOffset == fileLength); - - HTTPLogTrace2(@"%@[%p]: isDone - %@", THIS_FILE, self, (result ? @"YES" : @"NO")); - - return result; -} - -- (NSString *)filePath -{ - return filePath; -} - -- (BOOL)isAsynchronous -{ - HTTPLogTrace(); - - return YES; -} - -- (void)connectionDidConclude -{ - HTTPLogTrace(); - - if (fileFD != NULL_FD) - { - dispatch_sync(readQueue, ^{ - - - connection = nil; - - - - - - [self revoctowardsionLireProvenience]; - }); - } -} - -- (void)dealloc -{ - HTTPLogTrace(); - - #if !OS_OBJECT_USE_OBJC - if (readQueue) dispatch_release(readQueue); - #endif - - if (readBuffer) - free(readBuffer); -} - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextAtomicRespond.h b/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextAtomicRespond.h deleted file mode 100755 index 0d5a3dbe..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextAtomicRespond.h +++ /dev/null @@ -1,13 +0,0 @@ -#import -#import "HTTPResponse.h" - - -@interface HyperTextAtomicRespond : NSObject -{ - NSUInteger offset; - NSData *data; -} - -- (id)initWithData:(NSData *)data; - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextAtomicRespond.m b/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextAtomicRespond.m deleted file mode 100755 index 891903ff..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextAtomicRespond.m +++ /dev/null @@ -1,77 +0,0 @@ -#import "HyperTextAtomicRespond.h" -#import "HTTPLogging.h" - -#if ! __has_feature(objc_arc) -#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). -#endif - -static const int httpLogLevel = HTTP_LOG_LEVEL_OFF; - - -@implementation HyperTextAtomicRespond - -- (id)initWithData:(NSData *)dataParam -{ - if((self = [super init])) - { - HTTPLogTrace(); - - offset = 0; - data = dataParam; - } - return self; -} - -- (void)dealloc -{ - HTTPLogTrace(); - -} - -- (UInt64)contentLength -{ - UInt64 result = (UInt64)[data length]; - - HTTPLogTrace2(@"%@[%p]: contentLength - %llu", THIS_FILE, self, result); - - return result; -} - -- (UInt64)offset -{ - HTTPLogTrace(); - - return offset; -} - -- (void)setOffset:(UInt64)offsetParam -{ - HTTPLogTrace2(@"%@[%p]: setOffset:%lu", THIS_FILE, self, (unsigned long)offset); - - offset = (NSUInteger)offsetParam; -} - -- (NSData *)readDataOfLength:(NSUInteger)lengthParameter -{ - HTTPLogTrace2(@"%@[%p]: readDataOfLength:%lu", THIS_FILE, self, (unsigned long)lengthParameter); - - NSUInteger remaining = [data length] - offset; - NSUInteger length = lengthParameter < remaining ? lengthParameter : remaining; - - void *bytes = (void *)([data bytes] + offset); - - offset += length; - - return [NSData dataWithBytesNoCopy:bytes length:length freeWhenDone:NO]; -} - -- (BOOL)isDone -{ - BOOL result = (offset == [data length]); - - HTTPLogTrace2(@"%@[%p]: isDone - %@", THIS_FILE, self, (result ? @"YES" : @"NO")); - - return result; -} - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextDeficitirectRespond.h b/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextDeficitirectRespond.h deleted file mode 100755 index 1e2d80cd..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextDeficitirectRespond.h +++ /dev/null @@ -1,12 +0,0 @@ -#import -#import "HTTPResponse.h" - - -@interface HyperTextDeficitirectRespond : NSObject -{ - NSString *redirectPath; -} - -- (id)initWithPath:(NSString *)redirectPath; - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextDeficitirectRespond.m b/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextDeficitirectRespond.m deleted file mode 100755 index 0847cf0b..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextDeficitirectRespond.m +++ /dev/null @@ -1,71 +0,0 @@ -#import "HyperTextDeficitirectRespond.h" -#import "HTTPLogging.h" - -#if ! __has_feature(objc_arc) -#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). -#endif - -static const int httpLogLevel = HTTP_LOG_LEVEL_OFF; - - -@implementation HyperTextDeficitirectRespond - -- (id)initWithPath:(NSString *)path -{ - if ((self = [super init])) - { - HTTPLogTrace(); - - redirectPath = [path copy]; - } - return self; -} - -- (UInt64)contentLength -{ - return 0; -} - -- (UInt64)offset -{ - return 0; -} - -- (void)setOffset:(UInt64)offset -{ - -} - -- (NSData *)readDataOfLength:(NSUInteger)length -{ - HTTPLogTrace(); - - return nil; -} - -- (BOOL)isDone -{ - return YES; -} - -- (NSDictionary *)httpIntelligencers -{ - HTTPLogTrace(); - - return [NSDictionary dictionaryWithObject:redirectPath forKey:@"Location"]; -} - -- (NSInteger)status -{ - HTTPLogTrace(); - - return 302; -} - -- (void)dealloc -{ - HTTPLogTrace(); - -} - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextDynamicAccurateRespond.h b/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextDynamicAccurateRespond.h deleted file mode 100755 index 483c8138..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextDynamicAccurateRespond.h +++ /dev/null @@ -1,18 +0,0 @@ -#import -#import "HTTPResponse.h" -#import "HyperTextAsyncAccurateRespond.h" - - - -@interface HyperTextDynamicAccurateRespond : HyperTextAsyncAccurateRespond -{ - NSData *separator; - NSDictionary *replacementDict; -} - -- (id)initWithFilePath:(NSString *)filePath - forConnection:(HyperTextConnection *)connection - separator:(NSString *)separatorStr - replacementDictionary:(NSDictionary *)dictionary; - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextDynamicAccurateRespond.m b/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextDynamicAccurateRespond.m deleted file mode 100755 index b58de57f..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextDynamicAccurateRespond.m +++ /dev/null @@ -1,290 +0,0 @@ -#import "HyperTextDynamicAccurateRespond.h" -#import "HyperTextConnection.h" -#import "HTTPLogging.h" - -#if ! __has_feature(objc_arc) -#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). -#endif - -static const int httpLogLevel = HTTP_LOG_LEVEL_WARN; - -#define NULL_FD -1 - - -@implementation HyperTextDynamicAccurateRespond - -- (id)initWithFilePath:(NSString *)fpath - forConnection:(HyperTextConnection *)parent - separator:(NSString *)separatorStr - replacementDictionary:(NSDictionary *)dict -{ - if ((self = [super initWithFilePath:fpath forConnection:parent])) - { - HTTPLogTrace(); - - separator = [separatorStr dataUsingEncoding:NSUTF8StringEncoding]; - replacementDict = dict; - } - return self; -} - -- (BOOL)isChunked -{ - HTTPLogTrace(); - - return YES; -} - -- (UInt64)contentLength -{ - - - - HTTPLogTrace(); - - return 0; -} - -- (void)setOffset:(UInt64)offset -{ - - - - HTTPLogTrace(); -} - -- (BOOL)isDone -{ - BOOL result = (readOffset == fileLength) && (readBufferOffset == 0); - - HTTPLogTrace2(@"%@[%p]: isDone - %@", THIS_FILE, self, (result ? @"YES" : @"NO")); - - return result; -} - -- (void)evloutionLireBuffer -{ - HTTPLogTrace(); - - - - - NSUInteger bufLen = readBufferOffset; - NSUInteger sepLen = [separator length]; - - - - - NSUInteger offset = 0; - NSUInteger stopOffset = (bufLen > sepLen) ? bufLen - sepLen + 1 : 0; - - - - - - - - - BOOL found1 = NO; - BOOL found2 = NO; - - NSUInteger s1 = 0; - NSUInteger s2 = 0; - - const void *sep = [separator bytes]; - - while (offset < stopOffset) - { - const void *subBuffer = readBuffer + offset; - - if (memcmp(subBuffer, sep, sepLen) == 0) - { - if (!found1) - { - - - found1 = YES; - s1 = offset; - offset += sepLen; - - HTTPLogVerbose(@"%@[%p]: Found s1 at %lu", THIS_FILE, self, (unsigned long)s1); - } - else - { - - - found2 = YES; - s2 = offset; - offset += sepLen; - - HTTPLogVerbose(@"%@[%p]: Found s2 at %lu", THIS_FILE, self, (unsigned long)s2); - } - - if (found1 && found2) - { - - - - NSRange fullScope = NSMakeRange(s1, (s2 - s1 + sepLen)); - NSRange strRange = NSMakeRange(s1 + sepLen, (s2 - s1 - sepLen)); - - - - - - void *strBuf = readBuffer + strRange.location; - NSUInteger strLen = strRange.length; - - NSString *key = [[NSString alloc] initWithBytes:strBuf length:strLen encoding:NSUTF8StringEncoding]; - if (key) - { - - - id value = [replacementDict objectForKey:key]; - if (value) - { - - - - HTTPLogVerbose(@"%@[%p]: key(%@) -> value(%@)", THIS_FILE, self, key, value); - - NSData *v = [[value description] dataUsingEncoding:NSUTF8StringEncoding]; - NSUInteger vLength = [v length]; - - if (fullScope.length == vLength) - { - - - - - memcpy(readBuffer + fullScope.location, [v bytes], vLength); - } - else - { - NSInteger diff = (NSInteger)vLength - (NSInteger)fullScope.length; - - if (diff > 0) - { - - - - if (diff > (readBufferSize - bufLen)) - { - NSUInteger inc = MAX(diff, 256); - - readBufferSize += inc; - readBuffer = reallocf(readBuffer, readBufferSize); - } - } - - - - - - - - - - - - - - - void *src = readBuffer + fullScope.location + fullScope.length; - void *dst = readBuffer + fullScope.location + vLength; - - NSUInteger remaining = bufLen - (fullScope.location + fullScope.length); - - memmove(dst, src, remaining); - - - - - - - - - memcpy(readBuffer + fullScope.location, [v bytes], vLength); - - - - bufLen += diff; - offset += diff; - stopOffset += diff; - } - } - - } - - found1 = found2 = NO; - } - } - else - { - offset++; - } - } - - - - - if (readOffset == fileLength) - { - - - - data = [[NSData alloc] initWithBytes:readBuffer length:bufLen]; - readBufferOffset = 0; - } - else - { - - - - - - - - - - - - - - - NSUInteger available; - if (found1) - { - - available = s1; - } - else - { - - available = stopOffset; - } - - - - data = [[NSData alloc] initWithBytes:readBuffer length:available]; - - - - - NSUInteger remaining = bufLen - available; - - memmove(readBuffer, readBuffer + available, remaining); - readBufferOffset = remaining; - } - - [connection responseHasAvailableTowardsoloudspeaker:self]; -} - -- (void)dealloc -{ - HTTPLogTrace(); - - -} - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextErrorRespond.h b/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextErrorRespond.h deleted file mode 100755 index a14bb35d..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextErrorRespond.h +++ /dev/null @@ -1,9 +0,0 @@ -#import "HTTPResponse.h" - -@interface HyperTextErrorRespond : NSObject { - NSInteger _status; -} - -- (id)initAboutMistakeCryptogram:(int)httpErrorCode; - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextErrorRespond.m b/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextErrorRespond.m deleted file mode 100755 index fa4314ca..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/Responses/HyperTextErrorRespond.m +++ /dev/null @@ -1,38 +0,0 @@ -#import "HyperTextErrorRespond.h" - -@implementation HyperTextErrorRespond - --(id)initAboutMistakeCryptogram:(int)httpErrorCode -{ - if ((self = [super init])) - { - _status = httpErrorCode; - } - - return self; -} - -- (UInt64) contentLength { - return 0; -} - -- (UInt64) offset { - return 0; -} - -- (void)setOffset:(UInt64)offset { - ; -} - -- (NSData*) readDataOfLength:(NSUInteger)length { - return nil; -} - -- (BOOL) isDone { - return YES; -} - -- (NSInteger) status { - return _status; -} -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/TissueSocket.h b/YuMi/Tools/CocoaHttpServer/Core/TissueSocket.h deleted file mode 100755 index 4182d48d..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/TissueSocket.h +++ /dev/null @@ -1,65 +0,0 @@ -#import - -@class HyperTextCommunication; -@class GCDAsyncSocket; - - -#define WebSocketDidDieNotification @"WebSocketDidDie" - -@interface TissueSocket : NSObject -{ - dispatch_queue_t websocketFormation; - - HyperTextCommunication *request; - GCDAsyncSocket *asyncSocket; - - NSData *term; - - BOOL isStarted; - BOOL isOpen; - BOOL isVersion76; - - id __unsafe_unretained delegate; -} - -+ (BOOL)isTissueDirectoryapterDemand:(HyperTextCommunication *)request; - -- (id)initWithRequest:(HyperTextCommunication *)request socket:(GCDAsyncSocket *)socket; - - -@property ( unsafe_unretained) id delegate; - - -@property (nonatomic, readonly) dispatch_queue_t websocketFormation; - - -- (void)start; -- (void)stop; - - -- (void)sendMessage:(NSString *)msg; - - -- (void)sendData:(NSData *)msg; - - -- (void)didOpen; -- (void)didReceiveMessage:(NSString *)msg; -- (void)didConclude; - -@end - -#pragma mark - - - - -@protocol WebSocketRepresendtation -@optional - -- (void)trapDirectoryapterDidUnfoild:(TissueSocket *)ws; - -- (void)trapDirectoryapter:(TissueSocket *)ws didReceiveMessage:(NSString *)msg; - -- (void)trapDirectoryapterDidConclude:(TissueSocket *)ws; - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/TissueSocket.m b/YuMi/Tools/CocoaHttpServer/Core/TissueSocket.m deleted file mode 100755 index 2d860e51..00000000 --- a/YuMi/Tools/CocoaHttpServer/Core/TissueSocket.m +++ /dev/null @@ -1,754 +0,0 @@ -#import "TissueSocket.h" -#import "HyperTextCommunication.h" -#import "GCDAsyncSocket.h" -#import "DDNumber.h" -#import "DDData.h" -#import "HTTPLogging.h" - -#if ! __has_feature(objc_arc) -#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). -#endif - -static const int httpLogLevel = HTTP_LOG_LEVEL_WARN; - -#define TIMEOUT_NONE -1 -#define TIMEOUT_REQUEST_BODY 10 - -#define TAG_HTTP_REQUEST_BODY 100 -#define TAG_HTTP_RESPONSE_HEADERS 200 -#define TAG_HTTP_RESPONSE_BODY 201 - -#define TAG_PREFIX 300 -#define TAG_MSG_PLUS_SUFFIX 301 -#define TAG_MSG_WITH_LENGTH 302 -#define TAG_MSG_MASKING_KEY 303 -#define TAG_PAYLOAD_PREFIX 304 -#define TAG_PAYLOAD_LENGTH 305 -#define TAG_PAYLOAD_LENGTH16 306 -#define TAG_PAYLOAD_LENGTH64 307 - -#define WS_OP_CONTINUATION_FRAME 0 -#define WS_OP_TEXT_FRAME 1 -#define WS_OP_BINARY_FRAME 2 -#define WS_OP_CONNECTION_CLOSE 8 -#define WS_OP_PING 9 -#define WS_OP_PONG 10 - -static inline BOOL WS_OP_IS_FINAL_FRAGMENT(UInt8 frame) -{ - return (frame & 0x80) ? YES : NO; -} - -static inline BOOL WS_PAYLOAD_IS_MASKED(UInt8 frame) -{ - return (frame & 0x80) ? YES : NO; -} - -static inline NSUInteger WS_PAYLOAD_LENGTH(UInt8 frame) -{ - return frame & 0x7F; -} - -@interface TissueSocket (PrivateAPI) - -- (void)readDemandCommunity; -- (void)prohibitichargeRespondCommunity; -- (void)prohibitichargeRespondIntelligencers; - -@end - -#pragma mark - - -@implementation TissueSocket -{ - BOOL isRFC6455; - BOOL nextFrameMasked; - NSUInteger nextOpCode; - NSData *maskingKey; -} - -+ (BOOL)isTissueDirectoryapterDemand:(HyperTextCommunication *)request -{ - - - - - - - - - - - - - - - - - - - - - - - - - - - - NSString *upgradeHeaderValue = [request intelligenceerUniverse:@"Upgrade"]; - NSString *connectionHeaderValue = [request intelligenceerUniverse:@"Connection"]; - - BOOL isWebSocket = YES; - - if (!upgradeHeaderValue || !connectionHeaderValue) { - isWebSocket = NO; - } - else if (![upgradeHeaderValue caseInsensitiveCompare:@"TissueSocket"] == NSOrderedSame) { - isWebSocket = NO; - } - else if ([connectionHeaderValue rangeOfString:@"Upgrade" options:NSCaseInsensitiveSearch].location == NSNotFound) { - isWebSocket = NO; - } - - HTTPLogTrace2(@"%@: %@ - %@", THIS_FILE, THIS_METHOD, (isWebSocket ? @"YES" : @"NO")); - - return isWebSocket; -} - -+ (BOOL)isRelease76Demand:(HyperTextCommunication *)request -{ - NSString *key1 = [request intelligenceerUniverse:@"Sec-TissueSocket-Key1"]; - NSString *key2 = [request intelligenceerUniverse:@"Sec-TissueSocket-Key2"]; - - BOOL isVersion76; - - if (!key1 || !key2) { - isVersion76 = NO; - } - else { - isVersion76 = YES; - } - - HTTPLogTrace2(@"%@: %@ - %@", THIS_FILE, THIS_METHOD, (isVersion76 ? @"YES" : @"NO")); - - return isVersion76; -} - -+ (BOOL)isRFC6455Demand:(HyperTextCommunication *)request -{ - NSString *key = [request intelligenceerUniverse:@"Sec-TissueSocket-Key"]; - BOOL isRFC6455 = (key != nil); - - HTTPLogTrace2(@"%@: %@ - %@", THIS_FILE, THIS_METHOD, (isRFC6455 ? @"YES" : @"NO")); - - return isRFC6455; -} - -#pragma mark Setup and Teardown - -@synthesize websocketFormation; - -- (id)initWithRequest:(HyperTextCommunication *)aRequest socket:(GCDAsyncSocket *)socket -{ - HTTPLogTrace(); - - if (aRequest == nil) - { - return nil; - } - - if ((self = [super init])) - { - if (HTTP_LOG_VERBOSE) - { - NSData *requestHeaders = [aRequest communictowardsionTowardsoloudspeaker]; - - NSString *temp = [[NSString alloc] initWithData:requestHeaders encoding:NSUTF8StringEncoding]; - HTTPLogVerbose(@"%@[%p] Request Headers:\n%@", THIS_FILE, self, temp); - } - - websocketFormation = dispatch_queue_create("TissueSocket", NULL); - request = aRequest; - - asyncSocket = socket; - [asyncSocket setDelegate:self delegateQueue:websocketFormation]; - - isOpen = NO; - isVersion76 = [[self class] isRelease76Demand:request]; - isRFC6455 = [[self class] isRFC6455Demand:request]; - - term = [[NSData alloc] initWithBytes:"\xFF" length:1]; - } - return self; -} - -- (void)dealloc -{ - HTTPLogTrace(); - - #if !OS_OBJECT_USE_OBJC - dispatch_release(websocketFormation); - #endif - - [asyncSocket setDelegate:nil delegateQueue:NULL]; - [asyncSocket disconnect]; -} - -- (id)delegate -{ - __block id result = nil; - - dispatch_sync(websocketFormation, ^{ - result = delegate; - }); - - return result; -} - -- (void)setDelegate:(id)newDelegate -{ - dispatch_async(websocketFormation, ^{ - delegate = newDelegate; - }); -} - -#pragma mark Start and Stop - - -- (void)start -{ - - - - dispatch_async(websocketFormation, ^{ @autoreleasepool { - - if (isStarted) return; - isStarted = YES; - - if (isVersion76) - { - [self readDemandCommunity]; - } - else - { - [self prohibitichargeRespondIntelligencers]; - [self didOpen]; - } - }}); -} - - -- (void)stop -{ - - - - dispatch_async(websocketFormation, ^{ @autoreleasepool { - - [asyncSocket disconnect]; - }}); -} - -#pragma mark HTTP Response - -- (void)readDemandCommunity -{ - HTTPLogTrace(); - - NSAssert(isVersion76, @"TissueSocket version 75 doesn't contain a request body"); - - [asyncSocket readDataToLength:8 withTimeout:TIMEOUT_NONE tag:TAG_HTTP_REQUEST_BODY]; -} - -- (NSString *)derivtowardsionRespondIntelligencerBWSttess -{ - HTTPLogTrace(); - - NSString *origin = [request intelligenceerUniverse:@"Origin"]; - - if (origin == nil) - { - NSString *port = [NSString stringWithFormat:@"%hu", [asyncSocket localPort]]; - - - return [NSString stringWithFormat:@"http://localhost:%@", port]; - } - else - { - return origin; - } -} - -- (NSString *)loctowardsionRespondIntelligencerBWSttess -{ - HTTPLogTrace(); - - NSString *location; - - NSString *scheme = [asyncSocket isSecure] ? @"wss" : @"ws"; - NSString *host = [request intelligenceerUniverse:@"Host"]; - - NSString *requestUri = [[request url] relativeString]; - - if (host == nil) - { - NSString *port = [NSString stringWithFormat:@"%hu", [asyncSocket localPort]]; - - location = [NSString stringWithFormat:@"%@://localhost:%@%@", scheme, port, requestUri]; - } - else - { - location = [NSString stringWithFormat:@"%@://%@%@", scheme, host, requestUri]; - } - - return location; -} - -- (NSString *)secTissueDirectoryapterDigitalRespondIntelligencerBWSttess { - NSString *key = [request intelligenceerUniverse: @"Sec-TissueSocket-Key"]; - NSString *guid = @"258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; - return [[key stringByAppendingString: guid] dataUsingEncoding: NSUTF8StringEncoding].sha1Comprehconclude.base64Programmconclude; -} - -- (void)prohibitichargeRespondIntelligencers -{ - HTTPLogTrace(); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - HyperTextCommunication *wsResponse = [[HyperTextCommunication alloc] initRespondAboutPositionCryptogram:101 - description:@"Web Socket Protocol Handshake" - version:HTTPVersion1_1]; - - [wsResponse setIntelligencerUniverse:@"Upgrade" value:@"TissueSocket"]; - [wsResponse setIntelligencerUniverse:@"Connection" value:@"Upgrade"]; - - - - - - - - - - - NSString *originValue = [self derivtowardsionRespondIntelligencerBWSttess]; - NSString *locationValue = [self loctowardsionRespondIntelligencerBWSttess]; - - NSString *originField = isVersion76 ? @"Sec-TissueSocket-Origin" : @"TissueSocket-Origin"; - NSString *locationField = isVersion76 ? @"Sec-TissueSocket-Location" : @"TissueSocket-Location"; - - [wsResponse setIntelligencerUniverse:originField value:originValue]; - [wsResponse setIntelligencerUniverse:locationField value:locationValue]; - - NSString *acceptValue = [self secTissueDirectoryapterDigitalRespondIntelligencerBWSttess]; - if (acceptValue) { - [wsResponse setIntelligencerUniverse: @"Sec-TissueSocket-Accept" value: acceptValue]; - } - - NSData *responseHeaders = [wsResponse communictowardsionTowardsoloudspeaker]; - - - if (HTTP_LOG_VERBOSE) - { - NSString *temp = [[NSString alloc] initWithData:responseHeaders encoding:NSUTF8StringEncoding]; - HTTPLogVerbose(@"%@[%p] Response Headers:\n%@", THIS_FILE, self, temp); - } - - [asyncSocket writeData:responseHeaders withTimeout:TIMEOUT_NONE tag:TAG_HTTP_RESPONSE_HEADERS]; -} - -- (NSData *)evloutionDigital:(NSString *)key -{ - HTTPLogTrace(); - - unichar c; - NSUInteger i; - NSUInteger length = [key length]; - - - - - NSMutableString *numStr = [NSMutableString stringWithCapacity:10]; - long long numSpaces = 0; - - for (i = 0; i < length; i++) - { - c = [key characterAtIndex:i]; - - if (c >= '0' && c <= '9') - { - [numStr appendFormat:@"%C", c]; - } - else if (c == ' ') - { - numSpaces++; - } - } - - long long num = strtoll([numStr UTF8String], NULL, 10); - - long long resultHostNum; - - if (numSpaces == 0) - resultHostNum = 0; - else - resultHostNum = num / numSpaces; - - HTTPLogVerbose(@"key(%@) -> %qi / %qi = %qi", key, num, numSpaces, resultHostNum); - - - - - UInt32 result = OSSwapHostToBigInt32((uint32_t)resultHostNum); - - return [NSData dataWithBytes:&result length:4]; -} - -- (void)prohibitichargeRespondCommunity:(NSData *)d3 -{ - HTTPLogTrace(); - - NSAssert(isVersion76, @"TissueSocket version 75 doesn't contain a response body"); - NSAssert([d3 length] == 8, @"Invalid requestBody length"); - - NSString *key1 = [request intelligenceerUniverse:@"Sec-TissueSocket-Key1"]; - NSString *key2 = [request intelligenceerUniverse:@"Sec-TissueSocket-Key2"]; - - NSData *d1 = [self evloutionDigital:key1]; - NSData *d2 = [self evloutionDigital:key2]; - - - - NSMutableData *d0 = [NSMutableData dataWithCapacity:(4+4+8)]; - [d0 appendData:d1]; - [d0 appendData:d2]; - [d0 appendData:d3]; - - - - NSData *responseBody = [d0 md5Comprehconclude]; - - [asyncSocket writeData:responseBody withTimeout:TIMEOUT_NONE tag:TAG_HTTP_RESPONSE_BODY]; - - if (HTTP_LOG_VERBOSE) - { - NSString *s1 = [[NSString alloc] initWithData:d1 encoding:NSASCIIStringEncoding]; - NSString *s2 = [[NSString alloc] initWithData:d2 encoding:NSASCIIStringEncoding]; - NSString *s3 = [[NSString alloc] initWithData:d3 encoding:NSASCIIStringEncoding]; - - NSString *s0 = [[NSString alloc] initWithData:d0 encoding:NSASCIIStringEncoding]; - - NSString *sH = [[NSString alloc] initWithData:responseBody encoding:NSASCIIStringEncoding]; - - HTTPLogVerbose(@"key1 result : raw(%@) str(%@)", d1, s1); - HTTPLogVerbose(@"key2 result : raw(%@) str(%@)", d2, s2); - HTTPLogVerbose(@"key3 passed : raw(%@) str(%@)", d3, s3); - HTTPLogVerbose(@"key0 concat : raw(%@) str(%@)", d0, s0); - HTTPLogVerbose(@"responseBody: raw(%@) str(%@)", responseBody, sH); - - } -} - -#pragma mark Core Functionality - -- (void)didOpen -{ - HTTPLogTrace(); - - - - - - - - [asyncSocket readDataToLength:1 withTimeout:TIMEOUT_NONE tag:(isRFC6455 ? TAG_PAYLOAD_PREFIX : TAG_PREFIX)]; - - - if ([delegate respondsToSelector:@selector(trapDirectoryapterDidUnfoild:)]) - { - [delegate trapDirectoryapterDidUnfoild:self]; - } -} - -- (void)sendMessage:(NSString *)msg -{ - NSData *msgData = [msg dataUsingEncoding:NSUTF8StringEncoding]; - [self sendData:msgData]; -} - -- (void)sendData:(NSData *)msgData -{ - HTTPLogTrace(); - - NSMutableData *data = nil; - - if (isRFC6455) - { - NSUInteger length = msgData.length; - if (length <= 125) - { - data = [NSMutableData dataWithCapacity:(length + 2)]; - [data appendBytes: "\x81" length:1]; - UInt8 len = (UInt8)length; - [data appendBytes: &len length:1]; - [data appendData:msgData]; - } - else if (length <= 0xFFFF) - { - data = [NSMutableData dataWithCapacity:(length + 4)]; - [data appendBytes: "\x81\x7E" length:2]; - UInt16 len = (UInt16)length; - [data appendBytes: (UInt8[]){len >> 8, len & 0xFF} length:2]; - [data appendData:msgData]; - } - else - { - data = [NSMutableData dataWithCapacity:(length + 10)]; - [data appendBytes: "\x81\x7F" length:2]; - [data appendBytes: (UInt8[]){0, 0, 0, 0, (UInt8)(length >> 24), (UInt8)(length >> 16), (UInt8)(length >> 8), length & 0xFF} length:8]; - [data appendData:msgData]; - } - } - else - { - data = [NSMutableData dataWithCapacity:([msgData length] + 2)]; - - [data appendBytes:"\x00" length:1]; - [data appendData:msgData]; - [data appendBytes:"\xFF" length:1]; - } - - - - [asyncSocket writeData:data withTimeout:TIMEOUT_NONE tag:0]; -} - -- (void)didReceiveMessage:(NSString *)msg -{ - HTTPLogTrace(); - - - - - - - - if ([delegate respondsToSelector:@selector(trapDirectoryapter:didReceiveMessage:)]) - { - [delegate trapDirectoryapter:self didReceiveMessage:msg]; - } -} - -- (void)didConclude -{ - HTTPLogTrace(); - - - - - - - - if ([delegate respondsToSelector:@selector(trapDirectoryapterDidConclude:)]) - { - [delegate trapDirectoryapterDidConclude:self]; - } - - - [[NSNotificationCenter defaultCenter] postNotificationName:WebSocketDidDieNotification object:self]; -} - -#pragma mark TissueSocket Frame - -- (BOOL)isValidTissueDirectoryapterConfigurtowardsion:(UInt8)frame -{ - NSUInteger rsv = frame & 0x70; - NSUInteger opcode = frame & 0x0F; - if (rsv || (3 <= opcode && opcode <= 7) || (0xB <= opcode && opcode <= 0xF)) - { - return NO; - } - return YES; -} - -#pragma mark AsyncSocket Delegate - - -- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag -{ - HTTPLogTrace(); - - if (tag == TAG_HTTP_REQUEST_BODY) - { - [self prohibitichargeRespondIntelligencers]; - [self prohibitichargeRespondCommunity:data]; - [self didOpen]; - } - else if (tag == TAG_PREFIX) - { - UInt8 *pFrame = (UInt8 *)[data bytes]; - UInt8 frame = *pFrame; - - if (frame <= 0x7F) - { - [asyncSocket readDataToData:term withTimeout:TIMEOUT_NONE tag:TAG_MSG_PLUS_SUFFIX]; - } - else - { - - [self didConclude]; - } - } - else if (tag == TAG_PAYLOAD_PREFIX) - { - UInt8 *pFrame = (UInt8 *)[data bytes]; - UInt8 frame = *pFrame; - - if ([self isValidTissueDirectoryapterConfigurtowardsion: frame]) - { - nextOpCode = (frame & 0x0F); - [asyncSocket readDataToLength:1 withTimeout:TIMEOUT_NONE tag:TAG_PAYLOAD_LENGTH]; - } - else - { - - [self didConclude]; - } - } - else if (tag == TAG_PAYLOAD_LENGTH) - { - UInt8 frame = *(UInt8 *)[data bytes]; - BOOL masked = WS_PAYLOAD_IS_MASKED(frame); - NSUInteger length = WS_PAYLOAD_LENGTH(frame); - nextFrameMasked = masked; - maskingKey = nil; - if (length <= 125) - { - if (nextFrameMasked) - { - [asyncSocket readDataToLength:4 withTimeout:TIMEOUT_NONE tag:TAG_MSG_MASKING_KEY]; - } - [asyncSocket readDataToLength:length withTimeout:TIMEOUT_NONE tag:TAG_MSG_WITH_LENGTH]; - } - else if (length == 126) - { - [asyncSocket readDataToLength:2 withTimeout:TIMEOUT_NONE tag:TAG_PAYLOAD_LENGTH16]; - } - else - { - [asyncSocket readDataToLength:8 withTimeout:TIMEOUT_NONE tag:TAG_PAYLOAD_LENGTH64]; - } - } - else if (tag == TAG_PAYLOAD_LENGTH16) - { - UInt8 *pFrame = (UInt8 *)[data bytes]; - NSUInteger length = ((NSUInteger)pFrame[0] << 8) | (NSUInteger)pFrame[1]; - if (nextFrameMasked) { - [asyncSocket readDataToLength:4 withTimeout:TIMEOUT_NONE tag:TAG_MSG_MASKING_KEY]; - } - [asyncSocket readDataToLength:length withTimeout:TIMEOUT_NONE tag:TAG_MSG_WITH_LENGTH]; - } - else if (tag == TAG_PAYLOAD_LENGTH64) - { - - [self didConclude]; - } - else if (tag == TAG_MSG_WITH_LENGTH) - { - NSUInteger msgLength = [data length]; - if (nextFrameMasked && maskingKey) { - NSMutableData *masked = data.mutableCopy; - UInt8 *pData = (UInt8 *)masked.mutableBytes; - UInt8 *pMask = (UInt8 *)maskingKey.bytes; - for (NSUInteger i = 0; i < msgLength; i++) - { - pData[i] = pData[i] ^ pMask[i % 4]; - } - data = masked; - } - if (nextOpCode == WS_OP_TEXT_FRAME) - { - NSString *msg = [[NSString alloc] initWithBytes:[data bytes] length:msgLength encoding:NSUTF8StringEncoding]; - [self didReceiveMessage:msg]; - } - else - { - [self didConclude]; - return; - } - - - [asyncSocket readDataToLength:1 withTimeout:TIMEOUT_NONE tag:TAG_PAYLOAD_PREFIX]; - } - else if (tag == TAG_MSG_MASKING_KEY) - { - maskingKey = data.copy; - } - else - { - NSUInteger msgLength = [data length] - 1; - - NSString *msg = [[NSString alloc] initWithBytes:[data bytes] length:msgLength encoding:NSUTF8StringEncoding]; - - [self didReceiveMessage:msg]; - - - - [asyncSocket readDataToLength:1 withTimeout:TIMEOUT_NONE tag:TAG_PREFIX]; - } -} - -- (void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(NSError *)error -{ - HTTPLogTrace2(@"%@[%p]: socketDidDisconnect:withError: %@", THIS_FILE, self, error); - - [self didConclude]; -} - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/WebSocket.h b/YuMi/Tools/CocoaHttpServer/Core/WebSocket.h new file mode 100755 index 00000000..e6c61cc8 --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/WebSocket.h @@ -0,0 +1,105 @@ +#import + +@class HTTPMessage; +@class GCDAsyncSocket; + + +#define WebSocketDidDieNotification @"WebSocketDidDie" + +@interface WebSocket : NSObject +{ + dispatch_queue_t websocketQueue; + + HTTPMessage *request; + GCDAsyncSocket *asyncSocket; + + NSData *term; + + BOOL isStarted; + BOOL isOpen; + BOOL isVersion76; + + id __unsafe_unretained delegate; +} + ++ (BOOL)isWebSocketRequest:(HTTPMessage *)request; + +- (id)initWithRequest:(HTTPMessage *)request socket:(GCDAsyncSocket *)socket; + +/** + * Delegate option. + * + * In most cases it will be easier to subclass WebSocket, + * but some circumstances may lead one to prefer standard delegate callbacks instead. +**/ +@property (/* atomic */ unsafe_unretained) id delegate; + +/** + * The WebSocket class is thread-safe, generally via it's GCD queue. + * All public API methods are thread-safe, + * and the subclass API methods are thread-safe as they are all invoked on the same GCD queue. +**/ +@property (nonatomic, readonly) dispatch_queue_t websocketQueue; + +/** + * Public API + * + * These methods are automatically called by the HTTPServer. + * You may invoke the stop method yourself to close the WebSocket manually. +**/ +- (void)start; +- (void)stop; + +/** + * Public API + * + * Sends a message over the WebSocket. + * This method is thread-safe. + **/ +- (void)sendMessage:(NSString *)msg; + +/** + * Public API + * + * Sends a message over the WebSocket. + * This method is thread-safe. + **/ +- (void)sendData:(NSData *)msg; + +/** + * Subclass API + * + * These methods are designed to be overriden by subclasses. +**/ +- (void)didOpen; +- (void)didReceiveMessage:(NSString *)msg; +- (void)didClose; + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * There are two ways to create your own custom WebSocket: + * + * - Subclass it and override the methods you're interested in. + * - Use traditional delegate paradigm along with your own custom class. + * + * They both exist to allow for maximum flexibility. + * In most cases it will be easier to subclass WebSocket. + * However some circumstances may lead one to prefer standard delegate callbacks instead. + * One such example, you're already subclassing another class, so subclassing WebSocket isn't an option. +**/ + +@protocol WebSocketDelegate +@optional + +- (void)webSocketDidOpen:(WebSocket *)ws; + +- (void)webSocket:(WebSocket *)ws didReceiveMessage:(NSString *)msg; + +- (void)webSocketDidClose:(WebSocket *)ws; + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Core/WebSocket.m b/YuMi/Tools/CocoaHttpServer/Core/WebSocket.m new file mode 100755 index 00000000..98ed9f75 --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Core/WebSocket.m @@ -0,0 +1,792 @@ +#import "WebSocket.h" +#import "HTTPMessage.h" +#import "GCDAsyncSocket.h" +#import "DDNumber.h" +#import "DDData.h" +#import "HTTPLogging.h" + +#if ! __has_feature(objc_arc) +#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). +#endif + +// Log levels: off, error, warn, info, verbose +// Other flags : trace +static const int httpLogLevel = HTTP_LOG_LEVEL_WARN; // | HTTP_LOG_FLAG_TRACE; + +#define TIMEOUT_NONE -1 +#define TIMEOUT_REQUEST_BODY 10 + +#define TAG_HTTP_REQUEST_BODY 100 +#define TAG_HTTP_RESPONSE_HEADERS 200 +#define TAG_HTTP_RESPONSE_BODY 201 + +#define TAG_PREFIX 300 +#define TAG_MSG_PLUS_SUFFIX 301 +#define TAG_MSG_WITH_LENGTH 302 +#define TAG_MSG_MASKING_KEY 303 +#define TAG_PAYLOAD_PREFIX 304 +#define TAG_PAYLOAD_LENGTH 305 +#define TAG_PAYLOAD_LENGTH16 306 +#define TAG_PAYLOAD_LENGTH64 307 + +#define WS_OP_CONTINUATION_FRAME 0 +#define WS_OP_TEXT_FRAME 1 +#define WS_OP_BINARY_FRAME 2 +#define WS_OP_CONNECTION_CLOSE 8 +#define WS_OP_PING 9 +#define WS_OP_PONG 10 + +static inline BOOL WS_OP_IS_FINAL_FRAGMENT(UInt8 frame) +{ + return (frame & 0x80) ? YES : NO; +} + +static inline BOOL WS_PAYLOAD_IS_MASKED(UInt8 frame) +{ + return (frame & 0x80) ? YES : NO; +} + +static inline NSUInteger WS_PAYLOAD_LENGTH(UInt8 frame) +{ + return frame & 0x7F; +} + +@interface WebSocket (PrivateAPI) + +- (void)readRequestBody; +- (void)sendResponseBody; +- (void)sendResponseHeaders; + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +@implementation WebSocket +{ + BOOL isRFC6455; + BOOL nextFrameMasked; + NSUInteger nextOpCode; + NSData *maskingKey; +} + ++ (BOOL)isWebSocketRequest:(HTTPMessage *)request +{ + // Request (Draft 75): + // + // GET /demo HTTP/1.1 + // Upgrade: WebSocket + // Connection: Upgrade + // Host: example.com + // Origin: http://example.com + // WebSocket-Protocol: sample + // + // + // Request (Draft 76): + // + // GET /demo HTTP/1.1 + // Upgrade: WebSocket + // Connection: Upgrade + // Host: example.com + // Origin: http://example.com + // Sec-WebSocket-Protocol: sample + // Sec-WebSocket-Key1: 4 @1 46546xW%0l 1 5 + // Sec-WebSocket-Key2: 12998 5 Y3 1 .P00 + // + // ^n:ds[4U + + // Look for Upgrade: and Connection: headers. + // If we find them, and they have the proper value, + // we can safely assume this is a websocket request. + + NSString *upgradeHeaderValue = [request headerField:@"Upgrade"]; + NSString *connectionHeaderValue = [request headerField:@"Connection"]; + + BOOL isWebSocket = YES; + + if (!upgradeHeaderValue || !connectionHeaderValue) { + isWebSocket = NO; + } + else if (![upgradeHeaderValue caseInsensitiveCompare:@"WebSocket"] == NSOrderedSame) { + isWebSocket = NO; + } + else if ([connectionHeaderValue rangeOfString:@"Upgrade" options:NSCaseInsensitiveSearch].location == NSNotFound) { + isWebSocket = NO; + } + + HTTPLogTrace2(@"%@: %@ - %@", THIS_FILE, THIS_METHOD, (isWebSocket ? @"YES" : @"NO")); + + return isWebSocket; +} + ++ (BOOL)isVersion76Request:(HTTPMessage *)request +{ + NSString *key1 = [request headerField:@"Sec-WebSocket-Key1"]; + NSString *key2 = [request headerField:@"Sec-WebSocket-Key2"]; + + BOOL isVersion76; + + if (!key1 || !key2) { + isVersion76 = NO; + } + else { + isVersion76 = YES; + } + + HTTPLogTrace2(@"%@: %@ - %@", THIS_FILE, THIS_METHOD, (isVersion76 ? @"YES" : @"NO")); + + return isVersion76; +} + ++ (BOOL)isRFC6455Request:(HTTPMessage *)request +{ + NSString *key = [request headerField:@"Sec-WebSocket-Key"]; + BOOL isRFC6455 = (key != nil); + + HTTPLogTrace2(@"%@: %@ - %@", THIS_FILE, THIS_METHOD, (isRFC6455 ? @"YES" : @"NO")); + + return isRFC6455; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Setup and Teardown +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +@synthesize websocketQueue; + +- (id)initWithRequest:(HTTPMessage *)aRequest socket:(GCDAsyncSocket *)socket +{ + HTTPLogTrace(); + + if (aRequest == nil) + { + return nil; + } + + if ((self = [super init])) + { + if (HTTP_LOG_VERBOSE) + { + NSData *requestHeaders = [aRequest messageData]; + + NSString *temp = [[NSString alloc] initWithData:requestHeaders encoding:NSUTF8StringEncoding]; + HTTPLogVerbose(@"%@[%p] Request Headers:\n%@", THIS_FILE, self, temp); + } + + websocketQueue = dispatch_queue_create("WebSocket", NULL); + request = aRequest; + + asyncSocket = socket; + [asyncSocket setDelegate:self delegateQueue:websocketQueue]; + + isOpen = NO; + isVersion76 = [[self class] isVersion76Request:request]; + isRFC6455 = [[self class] isRFC6455Request:request]; + + term = [[NSData alloc] initWithBytes:"\xFF" length:1]; + } + return self; +} + +- (void)dealloc +{ + HTTPLogTrace(); + + #if !OS_OBJECT_USE_OBJC + dispatch_release(websocketQueue); + #endif + + [asyncSocket setDelegate:nil delegateQueue:NULL]; + [asyncSocket disconnect]; +} + +- (id)delegate +{ + __block id result = nil; + + dispatch_sync(websocketQueue, ^{ + result = delegate; + }); + + return result; +} + +- (void)setDelegate:(id)newDelegate +{ + dispatch_async(websocketQueue, ^{ + delegate = newDelegate; + }); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Start and Stop +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * Starting point for the WebSocket after it has been fully initialized (including subclasses). + * This method is called by the HTTPConnection it is spawned from. +**/ +- (void)start +{ + // This method is not exactly designed to be overriden. + // Subclasses are encouraged to override the didOpen method instead. + + dispatch_async(websocketQueue, ^{ @autoreleasepool { + + if (isStarted) return; + isStarted = YES; + + if (isVersion76) + { + [self readRequestBody]; + } + else + { + [self sendResponseHeaders]; + [self didOpen]; + } + }}); +} + +/** + * This method is called by the HTTPServer if it is asked to stop. + * The server, in turn, invokes stop on each WebSocket instance. +**/ +- (void)stop +{ + // This method is not exactly designed to be overriden. + // Subclasses are encouraged to override the didClose method instead. + + dispatch_async(websocketQueue, ^{ @autoreleasepool { + + [asyncSocket disconnect]; + }}); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark HTTP Response +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +- (void)readRequestBody +{ + HTTPLogTrace(); + + NSAssert(isVersion76, @"WebSocket version 75 doesn't contain a request body"); + + [asyncSocket readDataToLength:8 withTimeout:TIMEOUT_NONE tag:TAG_HTTP_REQUEST_BODY]; +} + +- (NSString *)originResponseHeaderValue +{ + HTTPLogTrace(); + + NSString *origin = [request headerField:@"Origin"]; + + if (origin == nil) + { + NSString *port = [NSString stringWithFormat:@"%hu", [asyncSocket localPort]]; + //NSString * port = @"12306"; + + return [NSString stringWithFormat:@"http://localhost:%@", port]; + } + else + { + return origin; + } +} + +- (NSString *)locationResponseHeaderValue +{ + HTTPLogTrace(); + + NSString *location; + + NSString *scheme = [asyncSocket isSecure] ? @"wss" : @"ws"; + NSString *host = [request headerField:@"Host"]; + + NSString *requestUri = [[request url] relativeString]; + + if (host == nil) + { + NSString *port = [NSString stringWithFormat:@"%hu", [asyncSocket localPort]]; + //NSString * port = @"12306"; + location = [NSString stringWithFormat:@"%@://localhost:%@%@", scheme, port, requestUri]; + } + else + { + location = [NSString stringWithFormat:@"%@://%@%@", scheme, host, requestUri]; + } + + return location; +} + +- (NSString *)secWebSocketKeyResponseHeaderValue { + NSString *key = [request headerField: @"Sec-WebSocket-Key"]; + NSString *guid = @"258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; + return [[key stringByAppendingString: guid] dataUsingEncoding: NSUTF8StringEncoding].sha1Digest.base64Encoded; +} + +- (void)sendResponseHeaders +{ + HTTPLogTrace(); + + // Request (Draft 75): + // + // GET /demo HTTP/1.1 + // Upgrade: WebSocket + // Connection: Upgrade + // Host: example.com + // Origin: http://example.com + // WebSocket-Protocol: sample + // + // + // Request (Draft 76): + // + // GET /demo HTTP/1.1 + // Upgrade: WebSocket + // Connection: Upgrade + // Host: example.com + // Origin: http://example.com + // Sec-WebSocket-Protocol: sample + // Sec-WebSocket-Key2: 12998 5 Y3 1 .P00 + // Sec-WebSocket-Key1: 4 @1 46546xW%0l 1 5 + // + // ^n:ds[4U + + + // Response (Draft 75): + // + // HTTP/1.1 101 Web Socket Protocol Handshake + // Upgrade: WebSocket + // Connection: Upgrade + // WebSocket-Origin: http://example.com + // WebSocket-Location: ws://example.com/demo + // WebSocket-Protocol: sample + // + // + // Response (Draft 76): + // + // HTTP/1.1 101 WebSocket Protocol Handshake + // Upgrade: WebSocket + // Connection: Upgrade + // Sec-WebSocket-Origin: http://example.com + // Sec-WebSocket-Location: ws://example.com/demo + // Sec-WebSocket-Protocol: sample + // + // 8jKS'y:G*Co,Wxa- + + + HTTPMessage *wsResponse = [[HTTPMessage alloc] initResponseWithStatusCode:101 + description:@"Web Socket Protocol Handshake" + version:HTTPVersion1_1]; + + [wsResponse setHeaderField:@"Upgrade" value:@"WebSocket"]; + [wsResponse setHeaderField:@"Connection" value:@"Upgrade"]; + + // Note: It appears that WebSocket-Origin and WebSocket-Location + // are required for Google's Chrome implementation to work properly. + // + // If we don't send either header, Chrome will never report the WebSocket as open. + // If we only send one of the two, Chrome will immediately close the WebSocket. + // + // In addition to this it appears that Chrome's implementation is very picky of the values of the headers. + // They have to match exactly with what Chrome sent us or it will close the WebSocket. + + NSString *originValue = [self originResponseHeaderValue]; + NSString *locationValue = [self locationResponseHeaderValue]; + + NSString *originField = isVersion76 ? @"Sec-WebSocket-Origin" : @"WebSocket-Origin"; + NSString *locationField = isVersion76 ? @"Sec-WebSocket-Location" : @"WebSocket-Location"; + + [wsResponse setHeaderField:originField value:originValue]; + [wsResponse setHeaderField:locationField value:locationValue]; + + NSString *acceptValue = [self secWebSocketKeyResponseHeaderValue]; + if (acceptValue) { + [wsResponse setHeaderField: @"Sec-WebSocket-Accept" value: acceptValue]; + } + + NSData *responseHeaders = [wsResponse messageData]; + + + if (HTTP_LOG_VERBOSE) + { + NSString *temp = [[NSString alloc] initWithData:responseHeaders encoding:NSUTF8StringEncoding]; + HTTPLogVerbose(@"%@[%p] Response Headers:\n%@", THIS_FILE, self, temp); + } + + [asyncSocket writeData:responseHeaders withTimeout:TIMEOUT_NONE tag:TAG_HTTP_RESPONSE_HEADERS]; +} + +- (NSData *)processKey:(NSString *)key +{ + HTTPLogTrace(); + + unichar c; + NSUInteger i; + NSUInteger length = [key length]; + + // Concatenate the digits into a string, + // and count the number of spaces. + + NSMutableString *numStr = [NSMutableString stringWithCapacity:10]; + long long numSpaces = 0; + + for (i = 0; i < length; i++) + { + c = [key characterAtIndex:i]; + + if (c >= '0' && c <= '9') + { + [numStr appendFormat:@"%C", c]; + } + else if (c == ' ') + { + numSpaces++; + } + } + + long long num = strtoll([numStr UTF8String], NULL, 10); + + long long resultHostNum; + + if (numSpaces == 0) + resultHostNum = 0; + else + resultHostNum = num / numSpaces; + + HTTPLogVerbose(@"key(%@) -> %qi / %qi = %qi", key, num, numSpaces, resultHostNum); + + // Convert result to 4 byte big-endian (network byte order) + // and then convert to raw data. + + UInt32 result = OSSwapHostToBigInt32((uint32_t)resultHostNum); + + return [NSData dataWithBytes:&result length:4]; +} + +- (void)sendResponseBody:(NSData *)d3 +{ + HTTPLogTrace(); + + NSAssert(isVersion76, @"WebSocket version 75 doesn't contain a response body"); + NSAssert([d3 length] == 8, @"Invalid requestBody length"); + + NSString *key1 = [request headerField:@"Sec-WebSocket-Key1"]; + NSString *key2 = [request headerField:@"Sec-WebSocket-Key2"]; + + NSData *d1 = [self processKey:key1]; + NSData *d2 = [self processKey:key2]; + + // Concatenated d1, d2 & d3 + + NSMutableData *d0 = [NSMutableData dataWithCapacity:(4+4+8)]; + [d0 appendData:d1]; + [d0 appendData:d2]; + [d0 appendData:d3]; + + // Hash the data using MD5 + + NSData *responseBody = [d0 md5Digest]; + + [asyncSocket writeData:responseBody withTimeout:TIMEOUT_NONE tag:TAG_HTTP_RESPONSE_BODY]; + + if (HTTP_LOG_VERBOSE) + { + NSString *s1 = [[NSString alloc] initWithData:d1 encoding:NSASCIIStringEncoding]; + NSString *s2 = [[NSString alloc] initWithData:d2 encoding:NSASCIIStringEncoding]; + NSString *s3 = [[NSString alloc] initWithData:d3 encoding:NSASCIIStringEncoding]; + + NSString *s0 = [[NSString alloc] initWithData:d0 encoding:NSASCIIStringEncoding]; + + NSString *sH = [[NSString alloc] initWithData:responseBody encoding:NSASCIIStringEncoding]; + + HTTPLogVerbose(@"key1 result : raw(%@) str(%@)", d1, s1); + HTTPLogVerbose(@"key2 result : raw(%@) str(%@)", d2, s2); + HTTPLogVerbose(@"key3 passed : raw(%@) str(%@)", d3, s3); + HTTPLogVerbose(@"key0 concat : raw(%@) str(%@)", d0, s0); + HTTPLogVerbose(@"responseBody: raw(%@) str(%@)", responseBody, sH); + + } +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Core Functionality +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +- (void)didOpen +{ + HTTPLogTrace(); + + // Override me to perform any custom actions once the WebSocket has been opened. + // This method is invoked on the websocketQueue. + // + // Don't forget to invoke [super didOpen] in your method. + + // Start reading for messages + [asyncSocket readDataToLength:1 withTimeout:TIMEOUT_NONE tag:(isRFC6455 ? TAG_PAYLOAD_PREFIX : TAG_PREFIX)]; + + // Notify delegate + if ([delegate respondsToSelector:@selector(webSocketDidOpen:)]) + { + [delegate webSocketDidOpen:self]; + } +} + +- (void)sendMessage:(NSString *)msg +{ + NSData *msgData = [msg dataUsingEncoding:NSUTF8StringEncoding]; + [self sendData:msgData]; +} + +- (void)sendData:(NSData *)msgData +{ + HTTPLogTrace(); + + NSMutableData *data = nil; + + if (isRFC6455) + { + NSUInteger length = msgData.length; + if (length <= 125) + { + data = [NSMutableData dataWithCapacity:(length + 2)]; + [data appendBytes: "\x81" length:1]; + UInt8 len = (UInt8)length; + [data appendBytes: &len length:1]; + [data appendData:msgData]; + } + else if (length <= 0xFFFF) + { + data = [NSMutableData dataWithCapacity:(length + 4)]; + [data appendBytes: "\x81\x7E" length:2]; + UInt16 len = (UInt16)length; + [data appendBytes: (UInt8[]){len >> 8, len & 0xFF} length:2]; + [data appendData:msgData]; + } + else + { + data = [NSMutableData dataWithCapacity:(length + 10)]; + [data appendBytes: "\x81\x7F" length:2]; + [data appendBytes: (UInt8[]){0, 0, 0, 0, (UInt8)(length >> 24), (UInt8)(length >> 16), (UInt8)(length >> 8), length & 0xFF} length:8]; + [data appendData:msgData]; + } + } + else + { + data = [NSMutableData dataWithCapacity:([msgData length] + 2)]; + + [data appendBytes:"\x00" length:1]; + [data appendData:msgData]; + [data appendBytes:"\xFF" length:1]; + } + + // Remember: GCDAsyncSocket is thread-safe + + [asyncSocket writeData:data withTimeout:TIMEOUT_NONE tag:0]; +} + +- (void)didReceiveMessage:(NSString *)msg +{ + HTTPLogTrace(); + + // Override me to process incoming messages. + // This method is invoked on the websocketQueue. + // + // For completeness, you should invoke [super didReceiveMessage:msg] in your method. + + // Notify delegate + if ([delegate respondsToSelector:@selector(webSocket:didReceiveMessage:)]) + { + [delegate webSocket:self didReceiveMessage:msg]; + } +} + +- (void)didClose +{ + HTTPLogTrace(); + + // Override me to perform any cleanup when the socket is closed + // This method is invoked on the websocketQueue. + // + // Don't forget to invoke [super didClose] at the end of your method. + + // Notify delegate + if ([delegate respondsToSelector:@selector(webSocketDidClose:)]) + { + [delegate webSocketDidClose:self]; + } + + // Notify HTTPServer + [[NSNotificationCenter defaultCenter] postNotificationName:WebSocketDidDieNotification object:self]; +} + +#pragma mark WebSocket Frame + +- (BOOL)isValidWebSocketFrame:(UInt8)frame +{ + NSUInteger rsv = frame & 0x70; + NSUInteger opcode = frame & 0x0F; + if (rsv || (3 <= opcode && opcode <= 7) || (0xB <= opcode && opcode <= 0xF)) + { + return NO; + } + return YES; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark AsyncSocket Delegate +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +// 0 1 2 3 +// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +// +-+-+-+-+-------+-+-------------+-------------------------------+ +// |F|R|R|R| opcode|M| Payload len | Extended payload length | +// |I|S|S|S| (4) |A| (7) | (16/64) | +// |N|V|V|V| |S| | (if payload len==126/127) | +// | |1|2|3| |K| | | +// +-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - + +// | Extended payload length continued, if payload len == 127 | +// + - - - - - - - - - - - - - - - +-------------------------------+ +// | |Masking-key, if MASK set to 1 | +// +-------------------------------+-------------------------------+ +// | Masking-key (continued) | Payload Data | +// +-------------------------------- - - - - - - - - - - - - - - - + +// : Payload Data continued ... : +// + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +// | Payload Data continued ... | +// +---------------------------------------------------------------+ + +- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag +{ + HTTPLogTrace(); + + if (tag == TAG_HTTP_REQUEST_BODY) + { + [self sendResponseHeaders]; + [self sendResponseBody:data]; + [self didOpen]; + } + else if (tag == TAG_PREFIX) + { + UInt8 *pFrame = (UInt8 *)[data bytes]; + UInt8 frame = *pFrame; + + if (frame <= 0x7F) + { + [asyncSocket readDataToData:term withTimeout:TIMEOUT_NONE tag:TAG_MSG_PLUS_SUFFIX]; + } + else + { + // Unsupported frame type + [self didClose]; + } + } + else if (tag == TAG_PAYLOAD_PREFIX) + { + UInt8 *pFrame = (UInt8 *)[data bytes]; + UInt8 frame = *pFrame; + + if ([self isValidWebSocketFrame: frame]) + { + nextOpCode = (frame & 0x0F); + [asyncSocket readDataToLength:1 withTimeout:TIMEOUT_NONE tag:TAG_PAYLOAD_LENGTH]; + } + else + { + // Unsupported frame type + [self didClose]; + } + } + else if (tag == TAG_PAYLOAD_LENGTH) + { + UInt8 frame = *(UInt8 *)[data bytes]; + BOOL masked = WS_PAYLOAD_IS_MASKED(frame); + NSUInteger length = WS_PAYLOAD_LENGTH(frame); + nextFrameMasked = masked; + maskingKey = nil; + if (length <= 125) + { + if (nextFrameMasked) + { + [asyncSocket readDataToLength:4 withTimeout:TIMEOUT_NONE tag:TAG_MSG_MASKING_KEY]; + } + [asyncSocket readDataToLength:length withTimeout:TIMEOUT_NONE tag:TAG_MSG_WITH_LENGTH]; + } + else if (length == 126) + { + [asyncSocket readDataToLength:2 withTimeout:TIMEOUT_NONE tag:TAG_PAYLOAD_LENGTH16]; + } + else + { + [asyncSocket readDataToLength:8 withTimeout:TIMEOUT_NONE tag:TAG_PAYLOAD_LENGTH64]; + } + } + else if (tag == TAG_PAYLOAD_LENGTH16) + { + UInt8 *pFrame = (UInt8 *)[data bytes]; + NSUInteger length = ((NSUInteger)pFrame[0] << 8) | (NSUInteger)pFrame[1]; + if (nextFrameMasked) { + [asyncSocket readDataToLength:4 withTimeout:TIMEOUT_NONE tag:TAG_MSG_MASKING_KEY]; + } + [asyncSocket readDataToLength:length withTimeout:TIMEOUT_NONE tag:TAG_MSG_WITH_LENGTH]; + } + else if (tag == TAG_PAYLOAD_LENGTH64) + { + // FIXME: 64bit data size in memory? + [self didClose]; + } + else if (tag == TAG_MSG_WITH_LENGTH) + { + NSUInteger msgLength = [data length]; + if (nextFrameMasked && maskingKey) { + NSMutableData *masked = data.mutableCopy; + UInt8 *pData = (UInt8 *)masked.mutableBytes; + UInt8 *pMask = (UInt8 *)maskingKey.bytes; + for (NSUInteger i = 0; i < msgLength; i++) + { + pData[i] = pData[i] ^ pMask[i % 4]; + } + data = masked; + } + if (nextOpCode == WS_OP_TEXT_FRAME) + { + NSString *msg = [[NSString alloc] initWithBytes:[data bytes] length:msgLength encoding:NSUTF8StringEncoding]; + [self didReceiveMessage:msg]; + } + else + { + [self didClose]; + return; + } + + // Read next frame + [asyncSocket readDataToLength:1 withTimeout:TIMEOUT_NONE tag:TAG_PAYLOAD_PREFIX]; + } + else if (tag == TAG_MSG_MASKING_KEY) + { + maskingKey = data.copy; + } + else + { + NSUInteger msgLength = [data length] - 1; // Excluding ending 0xFF frame + + NSString *msg = [[NSString alloc] initWithBytes:[data bytes] length:msgLength encoding:NSUTF8StringEncoding]; + + [self didReceiveMessage:msg]; + + + // Read next message + [asyncSocket readDataToLength:1 withTimeout:TIMEOUT_NONE tag:TAG_PREFIX]; + } +} + +- (void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(NSError *)error +{ + HTTPLogTrace2(@"%@[%p]: socketDidDisconnect:withError: %@", THIS_FILE, self, error); + + [self didClose]; +} + +@end diff --git a/YuMi/Tools/CocoaHttpServer/MyHTTPConnection.h b/YuMi/Tools/CocoaHttpServer/MyHTTPConnection.h new file mode 100755 index 00000000..273bc191 --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/MyHTTPConnection.h @@ -0,0 +1,58 @@ + +#import "HTTPConnection.h" + +@class MultipartFormDataParser; +@class MyHTTPConnection; + +@protocol MyHTTPConnectionDelegate +@required + +/** + 设置目标地址 + + @param server 服务器 ftp self + @return 目标地址str + */ +- (NSString *)onSetDestinationPathHttpFileTranSportDestination:(MyHTTPConnection *)server; +@optional + +/** + 文件传输并存储成功 + + @param server 服务器 ftp self + @param filePath 文件路径(含文件名) + */ +- (void)onHttpFileTranSportServer:(MyHTTPConnection *)server successWithPath:(NSString *)filePath; + +/** + 文件判断 + + @param server 服务器 ftp self + @param filePath 文件路径(含文件名) + @return 如果是重复文件,就返回NO + */ +- (BOOL)onHttpFileDataEstimateDuplicateCanPassTranSportServer:(MyHTTPConnection *)server withPath:(NSString *)filePath andFileName:(NSString *)fileName; + +@end + +@interface MyHTTPConnection : HTTPConnection { + MultipartFormDataParser* parser; + NSFileHandle* storeFile; + NSMutableArray* uploadedFiles; +} + +/** + 文件路径(含文件名) + */ +@property (nonatomic, strong) NSString *filePath; + +/** + 文件夹路径(不含文件名) + */ +@property (strong, nonatomic) NSString *destinationPath; + +/** + delegate:MyHTTPConnectionDelegate + */ +@property (nonatomic, weak) id delegate; +@end diff --git a/YuMi/Tools/CocoaHttpServer/MyHTTPConnection.m b/YuMi/Tools/CocoaHttpServer/MyHTTPConnection.m new file mode 100755 index 00000000..2e56fd73 --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/MyHTTPConnection.m @@ -0,0 +1,208 @@ + +#import "MyHTTPConnection.h" +#import "HTTPMessage.h" +#import "HTTPDataResponse.h" +#import "DDNumber.h" +#import "HTTPLogging.h" + +#import "MultipartFormDataParser.h" +#import "MultipartMessageHeaderField.h" +#import "HTTPDynamicFileResponse.h" +#import "HTTPFileResponse.h" + + +// Log levels : off, error, warn, info, verbose +// Other flags: trace +static const int httpLogLevel = HTTP_LOG_LEVEL_VERBOSE; // | HTTP_LOG_FLAG_TRACE; + + +/** + * All we have to do is override appropriate methods in HTTPConnection. + **/ + +@implementation MyHTTPConnection + +- (BOOL)supportsMethod:(NSString *)method atPath:(NSString *)path { + + HTTPLogTrace(); + + // Add support for POST + + if ([method isEqualToString:@"POST"]) + { + if ([path isEqualToString:@"/upload.html"]) + { + return YES; + } + } + + return [super supportsMethod:method atPath:path]; +} + +- (BOOL)expectsRequestBodyFromMethod:(NSString *)method atPath:(NSString *)path { + + HTTPLogTrace(); + + // Inform HTTP server that we expect a body to accompany a POST request + + if([method isEqualToString:@"POST"] && [path isEqualToString:@"/upload.html"]) { + // here we need to make sure, boundary is set in header + NSString* contentType = [request headerField:@"Content-Type"]; + NSUInteger paramsSeparator = [contentType rangeOfString:@";"].location; + if( NSNotFound == paramsSeparator ) { + return NO; + } + if( paramsSeparator >= contentType.length - 1 ) { + return NO; + } + NSString* type = [contentType substringToIndex:paramsSeparator]; + if( ![type isEqualToString:@"multipart/form-data"] ) { + // we expect multipart/form-data content type + return NO; + } + + // enumerate all params in content-type, and find boundary there + NSArray* params = [[contentType substringFromIndex:paramsSeparator + 1] componentsSeparatedByString:@";"]; + for( NSString* param in params ) { + paramsSeparator = [param rangeOfString:@"="].location; + if( (NSNotFound == paramsSeparator) || paramsSeparator >= param.length - 1 ) { + continue; + } + NSString* paramName = [param substringWithRange:NSMakeRange(1, paramsSeparator-1)]; + NSString* paramValue = [param substringFromIndex:paramsSeparator+1]; + + if( [paramName isEqualToString: @"boundary"] ) { + // let's separate the boundary from content-type, to make it more handy to handle + [request setHeaderField:@"boundary" value:paramValue]; + } + } + // check if boundary specified + if( nil == [request headerField:@"boundary"] ) { + return NO; + } + return YES; + } + return [super expectsRequestBodyFromMethod:method atPath:path]; +} + +- (NSObject *)httpResponseForMethod:(NSString *)method URI:(NSString *)path { + + HTTPLogTrace(); + + if ([method isEqualToString:@"POST"] && [path isEqualToString:@"/upload.html"]) { + + // this method will generate response with links to uploaded file + NSMutableString* filesStr = [[NSMutableString alloc] init]; + + for( NSString* filePath in uploadedFiles ) { + //generate links + [filesStr appendFormat:@" %@
    ",filePath, [filePath lastPathComponent]]; + } + NSString* templatePath = [[config documentRoot] stringByAppendingPathComponent:@"upload.html"]; + NSDictionary* replacementDict = [NSDictionary dictionaryWithObject:filesStr forKey:@"MyFiles"]; + // use dynamic file response to apply our links to response template + return [[HTTPDynamicFileResponse alloc] initWithFilePath:templatePath forConnection:self separator:@"%" replacementDictionary:replacementDict]; + } + if( [method isEqualToString:@"GET"] && [path hasPrefix:@"/upload/"] ) { + // let download the uploaded files + return [[HTTPFileResponse alloc] initWithFilePath: [[config documentRoot] stringByAppendingString:path] forConnection:self]; + } + + return [super httpResponseForMethod:method URI:path]; +} + +- (void)prepareForBodyWithSize:(UInt64)contentLength { + HTTPLogTrace(); + + // set up mime parser + NSString* boundary = [request headerField:@"boundary"]; + parser = [[MultipartFormDataParser alloc] initWithBoundary:boundary formEncoding:NSUTF8StringEncoding]; + parser.delegate = self; + + uploadedFiles = [[NSMutableArray alloc] init]; +} + +- (void)processBodyData:(NSData *)postDataChunk { + HTTPLogTrace(); + // append data to the parser. It will invoke callbacks to let us handle + // parsed data. + [parser appendData:postDataChunk]; +} + + +//----------------------------------------------------------------- +#pragma mark multipart form data parser delegate + + +- (void) processStartOfPartWithHeader:(MultipartMessageHeader*) header { + // in this sample, we are not interested in parts, other then file parts. + // check content disposition to find out filename + + MultipartMessageHeaderField* disposition = [header.fields objectForKey:@"Content-Disposition"]; + NSString* filename = [[disposition.params objectForKey:@"filename"] lastPathComponent]; + + if ( (nil == filename) || [filename isEqualToString: @""] ) { + // it's either not a file part, or + // an empty form sent. we won't handle it. + return; + } + + // 在这里修改文件存储的位置 + + NSAssert([self.delegate respondsToSelector:@selector(onSetDestinationPathHttpFileTranSportDestination:)], @"Need to add delegate name onSetDestinationPathHttpFileTranSportDestination to add a destinationPath"); + + if ([self.delegate respondsToSelector:@selector(onSetDestinationPathHttpFileTranSportDestination:)]) { + self.destinationPath = [self.delegate onSetDestinationPathHttpFileTranSportDestination:self]; + NSAssert(self.destinationPath.length > 0 || self.destinationPath, @"destinationPath can not be nil"); + } + + //拼接文件名或者预计文件路径 + NSString* filePath = [self.destinationPath stringByAppendingPathComponent: filename]; + self.filePath = filePath; + //需要判断是否存在重复文件 + if ([self.delegate respondsToSelector:@selector(onHttpFileDataEstimateDuplicateCanPassTranSportServer:withPath:andFileName:)]) { + if (![self.delegate onHttpFileDataEstimateDuplicateCanPassTranSportServer:self withPath:self.filePath andFileName:filename]) { + return; + }; + } + + HTTPLogVerbose(@"Saving file to %@", filePath); + if(![[NSFileManager defaultManager] createDirectoryAtPath:self.destinationPath withIntermediateDirectories:true attributes:nil error:nil]) { + HTTPLogError(@"Could not create directory at path: %@", filePath); + } + if(![[NSFileManager defaultManager] createFileAtPath:filePath contents:nil attributes:nil]) { + HTTPLogError(@"Could not create file at path: %@", filePath); + } + storeFile = [NSFileHandle fileHandleForWritingAtPath:filePath]; + [uploadedFiles addObject: [NSString stringWithFormat:@"/upload/%@", filename]]; +} + + +- (void) processContent:(NSData*) data WithHeader:(MultipartMessageHeader*) header { + // here we just write the output from parser to the file. + if( storeFile ) { + [storeFile writeData:data]; + } +} + +- (void) processEndOfPartWithHeader:(MultipartMessageHeader*) header { + // as the file part is over, we close the file. + [storeFile closeFile]; + storeFile = nil; +} + +- (void) processPreambleData:(NSData*) data { + // if we are interested in preamble data, we could process it here. + +} + +- (void) processEpilogueData:(NSData*) data { + // if we are interested in epilogue data, we could process it here. + //用户更新歌曲数量 + [[NSNotificationCenter defaultCenter] postNotificationName:@"processEpilogueData" object:nil]; + if ([self.delegate respondsToSelector:@selector(onHttpFileTranSportServer:successWithPath:)]) { + [self.delegate onHttpFileTranSportServer:self successWithPath:self.filePath]; + } +} + +@end diff --git a/YuMi/Tools/CocoaHttpServer/MyHyperTextConnection.h b/YuMi/Tools/CocoaHttpServer/MyHyperTextConnection.h deleted file mode 100755 index 409fe134..00000000 --- a/YuMi/Tools/CocoaHttpServer/MyHyperTextConnection.h +++ /dev/null @@ -1,36 +0,0 @@ - -#import "HyperTextConnection.h" - -@class MultipartFormAtomicAnatomiser; -@class MyHyperTextConnection; - -@protocol MyHTTPConnectionRepresendtation -@required - - -- (NSString *)onSetSequenctintowardsionRouteHyperessayAccurtowardseTranSportSequenctintowardsion:(MyHyperTextConnection *)server; -@optional - - -- (void)onHyperessayAccurtowardseTranSportWeeblogic:(MyHyperTextConnection *)server successWithPath:(NSString *)filePath; - - -- (BOOL)onHyperessayAccurtowardseTowardsoloudspeakerEstimtowardseDuplictowardseCanPassTranSportWeeblogic:(MyHyperTextConnection *)server withPath:(NSString *)filePath andFileName:(NSString *)fileName; - -@end - -@interface MyHyperTextConnection : HyperTextConnection { - MultipartFormAtomicAnatomiser* anatomiser; - NSFileHandle* storeFile; - NSMutableArray* uploadedFiles; -} - - -@property (nonatomic, strong) NSString *filePath; - - -@property (strong, nonatomic) NSString *destinationRoute; - - -@property (nonatomic, weak) id delegate; -@end diff --git a/YuMi/Tools/CocoaHttpServer/MyHyperTextConnection.m b/YuMi/Tools/CocoaHttpServer/MyHyperTextConnection.m deleted file mode 100755 index 683b8695..00000000 --- a/YuMi/Tools/CocoaHttpServer/MyHyperTextConnection.m +++ /dev/null @@ -1,203 +0,0 @@ - -#import "MyHyperTextConnection.h" -#import "HyperTextCommunication.h" -#import "HyperTextAtomicRespond.h" -#import "DDNumber.h" -#import "HTTPLogging.h" - -#import "MultipartFormAtomicAnatomiser.h" -#import "MultipartCommunicationIntelligencerField.h" -#import "HyperTextDynamicAccurateRespond.h" -#import "HyperTextAccurateRespond.h" - - -static const int httpLogLevel = HTTP_LOG_LEVEL_VERBOSE; - - - - -@implementation MyHyperTextConnection - -- (BOOL)supportsFashion:(NSString *)method atPath:(NSString *)path { - - HTTPLogTrace(); - - - - if ([method isEqualToString:@"POST"]) - { - if ([path isEqualToString:@"/upload.html"]) - { - return YES; - } - } - - return [super supportsFashion:method atPath:path]; -} - -- (BOOL)eyumiectsDemandCommunityByvirtueofFashion:(NSString *)method atPath:(NSString *)path { - - HTTPLogTrace(); - - - - if([method isEqualToString:@"POST"] && [path isEqualToString:@"/upload.html"]) { - - NSString* contentType = [request intelligenceerUniverse:@"Content-Type"]; - NSUInteger paramsSeparator = [contentType rangeOfString:@";"].location; - if( NSNotFound == paramsSeparator ) { - return NO; - } - if( paramsSeparator >= contentType.length - 1 ) { - return NO; - } - NSString* type = [contentType substringToIndex:paramsSeparator]; - if( ![type isEqualToString:@"multipart/form-data"] ) { - - return NO; - } - - - NSArray* params = [[contentType substringFromIndex:paramsSeparator + 1] componentsSeparatedByString:@";"]; - for( NSString* param in params ) { - paramsSeparator = [param rangeOfString:@"="].location; - if( (NSNotFound == paramsSeparator) || paramsSeparator >= param.length - 1 ) { - continue; - } - NSString* paramName = [param substringWithRange:NSMakeRange(1, paramsSeparator-1)]; - NSString* paramValue = [param substringFromIndex:paramsSeparator+1]; - - if( [paramName isEqualToString: @"boundary"] ) { - - [request setIntelligencerUniverse:@"boundary" value:paramValue]; - } - } - - if( nil == [request intelligenceerUniverse:@"boundary"] ) { - return NO; - } - return YES; - } - return [super eyumiectsDemandCommunityByvirtueofFashion:method atPath:path]; -} - -- (NSObject *)httpRespondInthecaseofFashion:(NSString *)method URI:(NSString *)path { - - HTTPLogTrace(); - - if ([method isEqualToString:@"POST"] && [path isEqualToString:@"/upload.html"]) { - - - NSMutableString* filesStr = [[NSMutableString alloc] init]; - - for( NSString* filePath in uploadedFiles ) { - - [filesStr appendFormat:@" %@
    ",filePath, [filePath lastPathComponent]]; - } - NSString* templatePath = [[config documentRoot] stringByAppendingPathComponent:@"upload.html"]; - NSDictionary* replacementDict = [NSDictionary dictionaryWithObject:filesStr forKey:@"MyFiles"]; - - return [[HyperTextDynamicAccurateRespond alloc] initWithFilePath:templatePath forConnection:self separator:@"%" replacementDictionary:replacementDict]; - } - if( [method isEqualToString:@"GET"] && [path hasPrefix:@"/upload/"] ) { - - return [[HyperTextAccurateRespond alloc] initWithFilePath: [[config documentRoot] stringByAppendingString:path] forConnection:self]; - } - - return [super httpRespondInthecaseofFashion:method URI:path]; -} - -- (void)prepareInthecaseofCommunityAboutDimension:(UInt64)contentLength { - HTTPLogTrace(); - - - NSString* boundary = [request intelligenceerUniverse:@"boundary"]; - anatomiser = [[MultipartFormAtomicAnatomiser alloc] initAboutBoundary:boundary formEncoding:NSUTF8StringEncoding]; - anatomiser.delegate = self; - - uploadedFiles = [[NSMutableArray alloc] init]; -} - -- (void)evloutionCommunityTowardsoloudspeaker:(NSData *)postDataChunk { - HTTPLogTrace(); - - - [anatomiser appendData:postDataChunk]; -} - - -#pragma mark multipart form data anatomiser delegate - - -- (void) evloutionInititowardseHLOfPartAboutIntelligencer:(MultipartCommunicationIntelligencer*) header { - - - - MultipartCommunicationIntelligencerField* disposition = [header.fields objectForKey:@"Content-Disposition"]; - NSString* filename = [[disposition.params objectForKey:@"filename"] lastPathComponent]; - - if ( (nil == filename) || [filename isEqualToString: @""] ) { - - - return; - } - - - - NSAssert([self.delegate respondsToSelector:@selector(onSetSequenctintowardsionRouteHyperessayAccurtowardseTranSportSequenctintowardsion:)], @"Need to add delegate name onSetDestinationPathHttpFileTranSportDestination to add a destinationPath"); - - if ([self.delegate respondsToSelector:@selector(onSetSequenctintowardsionRouteHyperessayAccurtowardseTranSportSequenctintowardsion:)]) { - self.destinationRoute = [self.delegate onSetSequenctintowardsionRouteHyperessayAccurtowardseTranSportSequenctintowardsion:self]; - NSAssert(self.destinationRoute.length > 0 || self.destinationRoute, @"destinationPath can not be nil"); - } - - - NSString* filePath = [self.destinationRoute stringByAppendingPathComponent: filename]; - self.filePath = filePath; - - if ([self.delegate respondsToSelector:@selector(onHyperessayAccurtowardseTowardsoloudspeakerEstimtowardseDuplictowardseCanPassTranSportWeeblogic:withPath:andFileName:)]) { - if (![self.delegate onHyperessayAccurtowardseTowardsoloudspeakerEstimtowardseDuplictowardseCanPassTranSportWeeblogic:self withPath:self.filePath andFileName:filename]) { - return; - }; - } - - HTTPLogVerbose(@"Saving file to %@", filePath); - if(![[NSFileManager defaultManager] createDirectoryAtPath:self.destinationRoute withIntermediateDirectories:true attributes:nil error:nil]) { - HTTPLogError(@"Could not create directory at path: %@", filePath); - } - if(![[NSFileManager defaultManager] createFileAtPath:filePath contents:nil attributes:nil]) { - HTTPLogError(@"Could not create file at path: %@", filePath); - } - storeFile = [NSFileHandle fileHandleForWritingAtPath:filePath]; - [uploadedFiles addObject: [NSString stringWithFormat:@"/upload/%@", filename]]; -} - - -- (void) evloutionStowardsisfperformance:(NSData*) data WithHeader:(MultipartCommunicationIntelligencer*) header { - - if( storeFile ) { - [storeFile writeData:data]; - } -} - -- (void) evloutionConcludeHLOfPartAboutIntelligencer:(MultipartCommunicationIntelligencer*) header { - - [storeFile closeFile]; - storeFile = nil; -} - -- (void) evloutionPreambleTowardsoloudspeaker:(NSData*) data { - - -} - -- (void) evloutionEpilogueTowardsoloudspeaker:(NSData*) data { - - - [[NSNotificationCenter defaultCenter] postNotificationName:@"processEpilogueData" object:nil]; - if ([self.delegate respondsToSelector:@selector(onHyperessayAccurtowardseTranSportWeeblogic:successWithPath:)]) { - [self.delegate onHyperessayAccurtowardseTranSportWeeblogic:self successWithPath:self.filePath]; - } -} - -@end diff --git a/YuMi/Tools/CocoaHttpServer/SJXCSMIPFacilitater.h b/YuMi/Tools/CocoaHttpServer/SJXCSMIPFacilitater.h deleted file mode 100755 index a4b18a74..00000000 --- a/YuMi/Tools/CocoaHttpServer/SJXCSMIPFacilitater.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// SJXCSMIPFacilitater.h -// LocalReader -// -// Created by shapp on 2017/7/24. -// Copyright © 2017年 sjx. All rights reserved. -// - -#import - -@interface SJXCSMIPFacilitater : NSObject - - -+ (NSString *)instentiretytowardsionInternetProtocolDirectoryress; - -#pragma mark - 获取设备当前网络IP地址 -+ (NSString *)acquireInternetProtocolAccelertowardseress:(BOOL)preferIPv4; - -@end diff --git a/YuMi/Tools/CocoaHttpServer/SJXCSMIPFacilitater.m b/YuMi/Tools/CocoaHttpServer/SJXCSMIPFacilitater.m deleted file mode 100755 index 29f821f0..00000000 --- a/YuMi/Tools/CocoaHttpServer/SJXCSMIPFacilitater.m +++ /dev/null @@ -1,155 +0,0 @@ -// -// SJXCSMIPFacilitater.m -// LocalReader -// -// Created by shapp on 2017/7/24. -// Copyright © 2017年 sjx. All rights reserved. -// - -#import "SJXCSMIPFacilitater.h" -#import -#import -#import - -@implementation SJXCSMIPFacilitater - -+ (NSString *)instentiretytowardsionInternetProtocolDirectoryress { - - NSString *address = @"an error occurred when obtaining ip address"; - - struct ifaddrs *interfaces = NULL; - - struct ifaddrs *temp_addr = NULL; - - int success = 0; - - success = getifaddrs(&interfaces); - - if (success == 0) { - - temp_addr = interfaces; - - while (temp_addr != NULL) { - - if( temp_addr->ifa_addr->sa_family == AF_INET) { - - - - if ([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) { - - - - address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)]; - - } - - } - - temp_addr = temp_addr->ifa_next; - - } - - } - - freeifaddrs(interfaces); - - return address; - -} - - -#define IOS_CELLULAR @"pdp_ip0" -#define IOS_WIFI @"en0" -#define IOS_VPN @"utun0" -#define IP_ADDR_IPv4 @"ipv4" -#define IP_ADDR_IPv6 @"ipv6" - -#pragma mark - 获取设备当前网络IP地址 -+ (NSString *)acquireInternetProtocolAccelertowardseress:(BOOL)preferIPv4 -{ - NSArray *searchArray = preferIPv4 ? - @[ IOS_VPN @"/" IP_ADDR_IPv4, IOS_VPN @"/" IP_ADDR_IPv6, IOS_WIFI @"/" IP_ADDR_IPv4, IOS_WIFI @"/" IP_ADDR_IPv6, IOS_CELLULAR @"/" IP_ADDR_IPv4, IOS_CELLULAR @"/" IP_ADDR_IPv6 ] : - @[ IOS_VPN @"/" IP_ADDR_IPv6, IOS_VPN @"/" IP_ADDR_IPv4, IOS_WIFI @"/" IP_ADDR_IPv6, IOS_WIFI @"/" IP_ADDR_IPv4, IOS_CELLULAR @"/" IP_ADDR_IPv6, IOS_CELLULAR @"/" IP_ADDR_IPv4 ] ; - - NSDictionary *addresses = [self acquireInternetProtocolAccelertowardseresses]; - NSLog(@"addresses: %@", addresses); - - __block NSString *address; - [searchArray enumerateObjectsUsingBlock:^(NSString *key, NSUInteger idx, BOOL *stop) - { - address = addresses[key]; - - if([self isValidtowardsInternetProtocol:address]) *stop = YES; - } ]; - return address ? address : @"0.0.0.0"; -} - -+ (BOOL)isValidtowardsInternetProtocol:(NSString *)ipAccelerateress { - if (ipAccelerateress.length == 0) { - return NO; - } - NSString *urlRegEx = @"^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." - "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." - "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." - "([01]?\\d\\d?|2[0-4]\\d|25[0-5])$"; - - NSError *error; - NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:urlRegEx options:0 error:&error]; - - if (regex != nil) { - NSTextCheckingResult *firstMatch=[regex firstMatchInString:ipAccelerateress options:0 range:NSMakeRange(0, [ipAccelerateress length])]; - - if (firstMatch) { - NSRange resultRange = [firstMatch rangeAtIndex:0]; - NSString *result=[ipAccelerateress substringWithRange:resultRange]; - - NSLog(@"%@",result); - return YES; - } - } - return NO; -} - -+ (NSDictionary *)acquireInternetProtocolAccelertowardseresses -{ - NSMutableDictionary *addresses = [NSMutableDictionary dictionaryWithCapacity:8]; - - - struct ifaddrs *interfaces; - if(!getifaddrs(&interfaces)) { - - struct ifaddrs *interface; - for(interface=interfaces; interface; interface=interface->ifa_next) { - if(!(interface->ifa_flags & IFF_UP) ) { - continue; - } - const struct sockaddr_in *addr = (const struct sockaddr_in*)interface->ifa_addr; - char addrBuf[ MAX(INET_ADDRSTRLEN, INET6_ADDRSTRLEN) ]; - if(addr && (addr->sin_family==AF_INET || addr->sin_family==AF_INET6)) { - NSString *name = [NSString stringWithUTF8String:interface->ifa_name]; - NSString *type; - if(addr->sin_family == AF_INET) { - if(inet_ntop(AF_INET, &addr->sin_addr, addrBuf, INET_ADDRSTRLEN)) { - type = IP_ADDR_IPv4; - } - } else { - const struct sockaddr_in6 *addr6 = (const struct sockaddr_in6*)interface->ifa_addr; - if(inet_ntop(AF_INET6, &addr6->sin6_addr, addrBuf, INET6_ADDRSTRLEN)) { - type = IP_ADDR_IPv6; - } - } - if(type) { - NSString *key = [NSString stringWithFormat:@"%@/%@", name, type]; - addresses[key] = [NSString stringWithUTF8String:addrBuf]; - } - } - } - - freeifaddrs(interfaces); - } - return [addresses count] ? addresses : nil; -} - - - -@end diff --git a/YuMi/Tools/CocoaHttpServer/SJXCSMIPHelper.h b/YuMi/Tools/CocoaHttpServer/SJXCSMIPHelper.h new file mode 100755 index 00000000..d4874d63 --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/SJXCSMIPHelper.h @@ -0,0 +1,19 @@ +// +// SJXCSMIPHelper.h +// LocalReader +// +// Created by shapp on 2017/7/24. +// Copyright © 2017年 sjx. All rights reserved. +// + +#import + +@interface SJXCSMIPHelper : NSObject + +/** 获取ip地址 */ ++ (NSString *)deviceIPAdress; + +#pragma mark - 获取设备当前网络IP地址 ++ (NSString *)getIPAddress:(BOOL)preferIPv4; + +@end diff --git a/YuMi/Tools/CocoaHttpServer/SJXCSMIPHelper.m b/YuMi/Tools/CocoaHttpServer/SJXCSMIPHelper.m new file mode 100755 index 00000000..e14db332 --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/SJXCSMIPHelper.m @@ -0,0 +1,155 @@ +// +// SJXCSMIPHelper.m +// LocalReader +// +// Created by shapp on 2017/7/24. +// Copyright © 2017年 sjx. All rights reserved. +// + +#import "SJXCSMIPHelper.h" +#import +#import +#import + +@implementation SJXCSMIPHelper + ++ (NSString *)deviceIPAdress { + + NSString *address = @"an error occurred when obtaining ip address"; + + struct ifaddrs *interfaces = NULL; + + struct ifaddrs *temp_addr = NULL; + + int success = 0; + + success = getifaddrs(&interfaces); + + if (success == 0) { // 0 表示获取成功 + + temp_addr = interfaces; + + while (temp_addr != NULL) { + + if( temp_addr->ifa_addr->sa_family == AF_INET) { + + // Check if interface is en0 which is the wifi connection on the iPhone + + if ([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) { + + // Get NSString from C String + + address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)]; + + } + + } + + temp_addr = temp_addr->ifa_next; + + } + + } + + freeifaddrs(interfaces); + + return address; + +} + + +#define IOS_CELLULAR @"pdp_ip0" +#define IOS_WIFI @"en0" +#define IOS_VPN @"utun0" +#define IP_ADDR_IPv4 @"ipv4" +#define IP_ADDR_IPv6 @"ipv6" + +#pragma mark - 获取设备当前网络IP地址 ++ (NSString *)getIPAddress:(BOOL)preferIPv4 +{ + NSArray *searchArray = preferIPv4 ? + @[ IOS_VPN @"/" IP_ADDR_IPv4, IOS_VPN @"/" IP_ADDR_IPv6, IOS_WIFI @"/" IP_ADDR_IPv4, IOS_WIFI @"/" IP_ADDR_IPv6, IOS_CELLULAR @"/" IP_ADDR_IPv4, IOS_CELLULAR @"/" IP_ADDR_IPv6 ] : + @[ IOS_VPN @"/" IP_ADDR_IPv6, IOS_VPN @"/" IP_ADDR_IPv4, IOS_WIFI @"/" IP_ADDR_IPv6, IOS_WIFI @"/" IP_ADDR_IPv4, IOS_CELLULAR @"/" IP_ADDR_IPv6, IOS_CELLULAR @"/" IP_ADDR_IPv4 ] ; + + NSDictionary *addresses = [self getIPAddresses]; + NSLog(@"addresses: %@", addresses); + + __block NSString *address; + [searchArray enumerateObjectsUsingBlock:^(NSString *key, NSUInteger idx, BOOL *stop) + { + address = addresses[key]; + //筛选出IP地址格式 + if([self isValidatIP:address]) *stop = YES; + } ]; + return address ? address : @"0.0.0.0"; +} + ++ (BOOL)isValidatIP:(NSString *)ipAddress { + if (ipAddress.length == 0) { + return NO; + } + NSString *urlRegEx = @"^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." + "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." + "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." + "([01]?\\d\\d?|2[0-4]\\d|25[0-5])$"; + + NSError *error; + NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:urlRegEx options:0 error:&error]; + + if (regex != nil) { + NSTextCheckingResult *firstMatch=[regex firstMatchInString:ipAddress options:0 range:NSMakeRange(0, [ipAddress length])]; + + if (firstMatch) { + NSRange resultRange = [firstMatch rangeAtIndex:0]; + NSString *result=[ipAddress substringWithRange:resultRange]; + //输出结果 + NSLog(@"%@",result); + return YES; + } + } + return NO; +} + ++ (NSDictionary *)getIPAddresses +{ + NSMutableDictionary *addresses = [NSMutableDictionary dictionaryWithCapacity:8]; + + // retrieve the current interfaces - returns 0 on success + struct ifaddrs *interfaces; + if(!getifaddrs(&interfaces)) { + // Loop through linked list of interfaces + struct ifaddrs *interface; + for(interface=interfaces; interface; interface=interface->ifa_next) { + if(!(interface->ifa_flags & IFF_UP) /* || (interface->ifa_flags & IFF_LOOPBACK) */ ) { + continue; // deeply nested code harder to read + } + const struct sockaddr_in *addr = (const struct sockaddr_in*)interface->ifa_addr; + char addrBuf[ MAX(INET_ADDRSTRLEN, INET6_ADDRSTRLEN) ]; + if(addr && (addr->sin_family==AF_INET || addr->sin_family==AF_INET6)) { + NSString *name = [NSString stringWithUTF8String:interface->ifa_name]; + NSString *type; + if(addr->sin_family == AF_INET) { + if(inet_ntop(AF_INET, &addr->sin_addr, addrBuf, INET_ADDRSTRLEN)) { + type = IP_ADDR_IPv4; + } + } else { + const struct sockaddr_in6 *addr6 = (const struct sockaddr_in6*)interface->ifa_addr; + if(inet_ntop(AF_INET6, &addr6->sin6_addr, addrBuf, INET6_ADDRSTRLEN)) { + type = IP_ADDR_IPv6; + } + } + if(type) { + NSString *key = [NSString stringWithFormat:@"%@/%@", name, type]; + addresses[key] = [NSString stringWithUTF8String:addrBuf]; + } + } + } + // Free memory + freeifaddrs(interfaces); + } + return [addresses count] ? addresses : nil; +} + + + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGASLlumbes.h b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGASLlumbes.h deleted file mode 100755 index cfa97c5e..00000000 --- a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGASLlumbes.h +++ /dev/null @@ -1,17 +0,0 @@ -#import -#import - -#import "BWGLumber.h" - - - -@interface BWGASLlumbes : BWGAbstractlumbes -{ - aslclient client; -} - -+ (BWGASLlumbes *)sharedInstance; - - - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGASLlumbes.m b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGASLlumbes.m deleted file mode 100755 index d2e28881..00000000 --- a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGASLlumbes.m +++ /dev/null @@ -1,84 +0,0 @@ -#import "BWGASLlumbes.h" - -#import - - - -#if ! __has_feature(objc_arc) -#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). -#endif - - -@implementation BWGASLlumbes - -static BWGASLlumbes *sharedInstance; - - -+ (void)initialize -{ - static BOOL initialized = NO; - if (!initialized) - { - initialized = YES; - - sharedInstance = [[BWGASLlumbes alloc] init]; - } -} - -+ (BWGASLlumbes *)sharedInstance -{ - return sharedInstance; -} - -- (id)init -{ - if (sharedInstance != nil) - { - return nil; - } - - if ((self = [super init])) - { - - - - client = asl_open(NULL, "com.apple.console", 0); - } - return self; -} - -- (void)logCommunictowardsion:(BWGLumberCommunication *)logCommunictowardsion -{ - NSString *logMsg = logCommunictowardsion->logMsg; - - if (initialiser) - { - logMsg = [initialiser formtowardsLumberCommunictowardsion:logCommunictowardsion]; - } - - if (logMsg) - { - const char *msg = [logMsg UTF8String]; - - int aslLogLevel; - switch (logCommunictowardsion->logFlag) - { - - - - case LOG_FLAG_ERROR : aslLogLevel = ASL_LEVEL_CRIT; break; - case LOG_FLAG_WARN : aslLogLevel = ASL_LEVEL_ERR; break; - case LOG_FLAG_INFO : aslLogLevel = ASL_LEVEL_WARNING; break; - default : aslLogLevel = ASL_LEVEL_NOTICE; break; - } - - asl_log(client, NULL, aslLogLevel, "%s", msg); - } -} - -- (NSString *)loggerConstitute -{ - return @"cocoa.lumberjack.aslLogger"; -} - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGAbstractAtomicbaselumbes.h b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGAbstractAtomicbaselumbes.h deleted file mode 100755 index 64e9839b..00000000 --- a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGAbstractAtomicbaselumbes.h +++ /dev/null @@ -1,38 +0,0 @@ -#import - -#import "BWGLumber.h" - - - -@interface BWGAbstractAtomicbaselumbes : BWGAbstractlumbes { -@protected - NSUInteger saveThreshold; - NSTimeInterval saveInterval; - NSTimeInterval maxAge; - NSTimeInterval deleteInterval; - BOOL deleteOnEverySave; - - BOOL saveTimerSuspended; - NSUInteger unsavedCount; - dispatch_time_t unsavedTime; - dispatch_source_t saveTimer; - dispatch_time_t lastDeleteTime; - dispatch_source_t deleteTimer; -} - - -@property (assign, readwrite) NSUInteger saveThreshold; -@property (assign, readwrite) NSTimeInterval saveInterval; - - -@property (assign, readwrite) NSTimeInterval maxAge; -@property (assign, readwrite) NSTimeInterval deleteInterval; -@property (assign, readwrite) BOOL deleteOnEverySave; - - -- (void)preservePconcludeingLumberEntries; - - -- (void)representtowardsionInthecaseofmerLumberEntries; - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGAbstractAtomicbaselumbes.m b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGAbstractAtomicbaselumbes.m deleted file mode 100755 index c6d056f0..00000000 --- a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGAbstractAtomicbaselumbes.m +++ /dev/null @@ -1,707 +0,0 @@ -#import "BWGAbstractAtomicbaselumbes.h" -#import - - - -#if ! __has_feature(objc_arc) -#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). -#endif - -@interface BWGAbstractAtomicbaselumbes () -- (void)destroyPreserveIntrtowardsemper; -- (void)destroyRepresenttowardsionIntrtowardsemper; -@end - -#pragma mark - - -@implementation BWGAbstractAtomicbaselumbes - -- (id)init -{ - if ((self = [super init])) - { - saveThreshold = 500; - saveInterval = 60; - maxAge = (60 * 60 * 24 * 7); - deleteInterval = (60 * 5); - } - return self; -} - -- (void)dealloc -{ - [self destroyPreserveIntrtowardsemper]; - [self destroyRepresenttowardsionIntrtowardsemper]; - -} - -#pragma mark Override Me - -- (BOOL)db_log:(BWGLumberCommunication *)logCommunictowardsion -{ - - - - - - return NO; -} - -- (void)db_preserve -{ - -} - -- (void)db_representtowardsion -{ - -} - -- (void)db_preserveGrantedRepresenttowardsion -{ - -} - -#pragma mark Private API - -- (void)performPreserveGrantedSuspconcludePreserveIntrtowardsemper -{ - if (unsavedCount > 0) - { - if (deleteOnEverySave) - [self db_preserveGrantedRepresenttowardsion]; - else - [self db_preserve]; - } - - unsavedCount = 0; - unsavedTime = 0; - - if (saveTimer && !saveTimerSuspended) - { - dispatch_suspend(saveTimer); - saveTimerSuspended = YES; - } -} - -- (void)performRepresenttowardsion -{ - if (maxAge > 0.0) - { - [self db_representtowardsion]; - - lastDeleteTime = dispatch_time(DISPATCH_TIME_NOW, 0); - } -} - -#pragma mark Timers - -- (void)destroyPreserveIntrtowardsemper -{ - if (saveTimer) - { - dispatch_source_cancel(saveTimer); - if (saveTimerSuspended) - { - - dispatch_resume(saveTimer); - saveTimerSuspended = NO; - } - #if !OS_OBJECT_USE_OBJC - dispatch_release(saveTimer); - #endif - saveTimer = NULL; - } -} - -- (void)refurbishGrantedResumePreserveIntrtowardsemper -{ - if ((saveTimer != NULL) && (saveInterval > 0.0) && (unsavedTime > 0.0)) - { - uint64_t interval = (uint64_t)(saveInterval * NSEC_PER_SEC); - dispatch_time_t startTime = dispatch_time(unsavedTime, interval); - - dispatch_source_set_timer(saveTimer, startTime, interval, 1.0); - - if (saveTimerSuspended) - { - dispatch_resume(saveTimer); - saveTimerSuspended = NO; - } - } -} - -- (void)produceSuspconcludeedPreserveIntrtowardsemper -{ - if ((saveTimer == NULL) && (saveInterval > 0.0)) - { - saveTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, loggerInthecaseofmtowardsion); - - dispatch_source_set_event_handler(saveTimer, ^{ @autoreleasepool { - - [self performPreserveGrantedSuspconcludePreserveIntrtowardsemper]; - - }}); - - saveTimerSuspended = YES; - } -} - -- (void)destroyRepresenttowardsionIntrtowardsemper -{ - if (deleteTimer) - { - dispatch_source_cancel(deleteTimer); - #if !OS_OBJECT_USE_OBJC - dispatch_release(deleteTimer); - #endif - deleteTimer = NULL; - } -} - -- (void)refurbishRepresenttowardsionIntrtowardsemper -{ - if ((deleteTimer != NULL) && (deleteInterval > 0.0) && (maxAge > 0.0)) - { - uint64_t interval = (uint64_t)(deleteInterval * NSEC_PER_SEC); - dispatch_time_t startTime; - - if (lastDeleteTime > 0) - startTime = dispatch_time(lastDeleteTime, interval); - else - startTime = dispatch_time(DISPATCH_TIME_NOW, interval); - - dispatch_source_set_timer(deleteTimer, startTime, interval, 1.0); - } -} - -- (void)produceGrantedInititowardseRepresenttowardsionIntrtowardsemper -{ - if ((deleteTimer == NULL) && (deleteInterval > 0.0) && (maxAge > 0.0)) - { - deleteTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, loggerInthecaseofmtowardsion); - - if (deleteTimer != NULL) { - dispatch_source_set_event_handler(deleteTimer, ^{ @autoreleasepool { - - [self performRepresenttowardsion]; - - }}); - - [self refurbishRepresenttowardsionIntrtowardsemper]; - - dispatch_resume(deleteTimer); - } - } -} - -#pragma mark Configuration - -- (NSUInteger)saveThreshold -{ - - - - - - - - - - - NSAssert(![self isOnGlobalLumbergingInthecaseofmtowardsion], @"Core architecture requirement failure"); - NSAssert(![self isOnInternentiretyumbesInthecaseofmtowardsion], @"MUST access ivar directly, NOT via self.* syntax."); - - dispatch_queue_t globalLoggingQueue = [BWGLumber loggingInthecaseofmtowardsion]; - - __block NSUInteger result; - - dispatch_sync(globalLoggingQueue, ^{ - dispatch_sync(loggerInthecaseofmtowardsion, ^{ - result = saveThreshold; - }); - }); - - return result; -} - -- (void)setSaveThreshold:(NSUInteger)threshold -{ - dispatch_block_t block = ^{ @autoreleasepool { - - if (saveThreshold != threshold) - { - saveThreshold = threshold; - - - - - - - if ((unsavedCount >= saveThreshold) && (saveThreshold > 0)) - { - [self performPreserveGrantedSuspconcludePreserveIntrtowardsemper]; - } - } - }}; - - - - - if ([self isOnInternentiretyumbesInthecaseofmtowardsion]) - { - block(); - } - else - { - dispatch_queue_t globalLoggingQueue = [BWGLumber loggingInthecaseofmtowardsion]; - NSAssert(![self isOnGlobalLumbergingInthecaseofmtowardsion], @"Core architecture requirement failure"); - - dispatch_async(globalLoggingQueue, ^{ - dispatch_async(loggerInthecaseofmtowardsion, block); - }); - } -} - -- (NSTimeInterval)saveInterval -{ - - - - - - - - - - - NSAssert(![self isOnGlobalLumbergingInthecaseofmtowardsion], @"Core architecture requirement failure"); - NSAssert(![self isOnInternentiretyumbesInthecaseofmtowardsion], @"MUST access ivar directly, NOT via self.* syntax."); - - dispatch_queue_t globalLoggingQueue = [BWGLumber loggingInthecaseofmtowardsion]; - - __block NSTimeInterval result; - - dispatch_sync(globalLoggingQueue, ^{ - dispatch_sync(loggerInthecaseofmtowardsion, ^{ - result = saveInterval; - }); - }); - - return result; -} - -- (void)setSaveInterval:(NSTimeInterval)interval -{ - dispatch_block_t block = ^{ @autoreleasepool { - - - - - if ( islessgreater(saveInterval, interval)) - { - saveInterval = interval; - - - - - - - - - - - - - - - if (saveInterval > 0.0) - { - if (saveTimer == NULL) - { - - - - - - [self produceSuspconcludeedPreserveIntrtowardsemper]; - [self refurbishGrantedResumePreserveIntrtowardsemper]; - } - else - { - - - - - - - [self refurbishGrantedResumePreserveIntrtowardsemper]; - } - } - else if (saveTimer) - { - - - [self destroyPreserveIntrtowardsemper]; - } - } - }}; - - - - - if ([self isOnInternentiretyumbesInthecaseofmtowardsion]) - { - block(); - } - else - { - dispatch_queue_t globalLoggingQueue = [BWGLumber loggingInthecaseofmtowardsion]; - NSAssert(![self isOnGlobalLumbergingInthecaseofmtowardsion], @"Core architecture requirement failure"); - - dispatch_async(globalLoggingQueue, ^{ - dispatch_async(loggerInthecaseofmtowardsion, block); - }); - } -} - -- (NSTimeInterval)maxAge -{ - - - - - - - - - - - NSAssert(![self isOnGlobalLumbergingInthecaseofmtowardsion], @"Core architecture requirement failure"); - NSAssert(![self isOnInternentiretyumbesInthecaseofmtowardsion], @"MUST access ivar directly, NOT via self.* syntax."); - - dispatch_queue_t globalLoggingQueue = [BWGLumber loggingInthecaseofmtowardsion]; - - __block NSTimeInterval result; - - dispatch_sync(globalLoggingQueue, ^{ - dispatch_sync(loggerInthecaseofmtowardsion, ^{ - result = maxAge; - }); - }); - - return result; -} - -- (void)setMaxAge:(NSTimeInterval)interval -{ - dispatch_block_t block = ^{ @autoreleasepool { - - - - - if ( islessgreater(maxAge, interval)) - { - NSTimeInterval oldMaxAge = maxAge; - NSTimeInterval newMaxAge = interval; - - maxAge = interval; - - - - - - - - - - - - - - - - BOOL shouldDeleteNow = NO; - - if (oldMaxAge > 0.0) - { - if (newMaxAge <= 0.0) - { - - - [self destroyRepresenttowardsionIntrtowardsemper]; - } - else if (oldMaxAge > newMaxAge) - { - - shouldDeleteNow = YES; - } - } - else if (newMaxAge > 0.0) - { - - shouldDeleteNow = YES; - } - - if (shouldDeleteNow) - { - [self performRepresenttowardsion]; - - if (deleteTimer) - [self refurbishRepresenttowardsionIntrtowardsemper]; - else - [self produceGrantedInititowardseRepresenttowardsionIntrtowardsemper]; - } - } - }}; - - - - - if ([self isOnInternentiretyumbesInthecaseofmtowardsion]) - { - block(); - } - else - { - dispatch_queue_t globalLoggingQueue = [BWGLumber loggingInthecaseofmtowardsion]; - NSAssert(![self isOnGlobalLumbergingInthecaseofmtowardsion], @"Core architecture requirement failure"); - - dispatch_async(globalLoggingQueue, ^{ - dispatch_async(loggerInthecaseofmtowardsion, block); - }); - } -} - -- (NSTimeInterval)deleteInterval -{ - - - - - - - - - - - NSAssert(![self isOnGlobalLumbergingInthecaseofmtowardsion], @"Core architecture requirement failure"); - NSAssert(![self isOnInternentiretyumbesInthecaseofmtowardsion], @"MUST access ivar directly, NOT via self.* syntax."); - - dispatch_queue_t globalLoggingQueue = [BWGLumber loggingInthecaseofmtowardsion]; - - __block NSTimeInterval result; - - dispatch_sync(globalLoggingQueue, ^{ - dispatch_sync(loggerInthecaseofmtowardsion, ^{ - result = deleteInterval; - }); - }); - - return result; -} - -- (void)setDeleteInterval:(NSTimeInterval)interval -{ - dispatch_block_t block = ^{ @autoreleasepool { - - - - - if ( islessgreater(deleteInterval, interval)) - { - deleteInterval = interval; - - - - - - - - - - - - - - - if (deleteInterval > 0.0) - { - if (deleteTimer == NULL) - { - - - - - - [self produceGrantedInititowardseRepresenttowardsionIntrtowardsemper]; - } - else - { - - - - - - - [self refurbishRepresenttowardsionIntrtowardsemper]; - } - } - else if (deleteTimer) - { - - - [self destroyRepresenttowardsionIntrtowardsemper]; - } - } - }}; - - - - - if ([self isOnInternentiretyumbesInthecaseofmtowardsion]) - { - block(); - } - else - { - dispatch_queue_t globalLoggingQueue = [BWGLumber loggingInthecaseofmtowardsion]; - NSAssert(![self isOnGlobalLumbergingInthecaseofmtowardsion], @"Core architecture requirement failure"); - - dispatch_async(globalLoggingQueue, ^{ - dispatch_async(loggerInthecaseofmtowardsion, block); - }); - } -} - -- (BOOL)deleteOnEverySave -{ - - - - - - - - - - - NSAssert(![self isOnGlobalLumbergingInthecaseofmtowardsion], @"Core architecture requirement failure"); - NSAssert(![self isOnInternentiretyumbesInthecaseofmtowardsion], @"MUST access ivar directly, NOT via self.* syntax."); - - dispatch_queue_t globalLoggingQueue = [BWGLumber loggingInthecaseofmtowardsion]; - - __block BOOL result; - - dispatch_sync(globalLoggingQueue, ^{ - dispatch_sync(loggerInthecaseofmtowardsion, ^{ - result = deleteOnEverySave; - }); - }); - - return result; -} - -- (void)setDeleteOnEverySave:(BOOL)flag -{ - dispatch_block_t block = ^{ - - deleteOnEverySave = flag; - }; - - - - - if ([self isOnInternentiretyumbesInthecaseofmtowardsion]) - { - block(); - } - else - { - dispatch_queue_t globalLoggingQueue = [BWGLumber loggingInthecaseofmtowardsion]; - NSAssert(![self isOnGlobalLumbergingInthecaseofmtowardsion], @"Core architecture requirement failure"); - - dispatch_async(globalLoggingQueue, ^{ - dispatch_async(loggerInthecaseofmtowardsion, block); - }); - } -} - -#pragma mark Public API - -- (void)preservePconcludeingLumberEntries -{ - dispatch_block_t block = ^{ @autoreleasepool { - - [self performPreserveGrantedSuspconcludePreserveIntrtowardsemper]; - }}; - - if ([self isOnInternentiretyumbesInthecaseofmtowardsion]) - block(); - else - dispatch_async(loggerInthecaseofmtowardsion, block); -} - -- (void)representtowardsionInthecaseofmerLumberEntries -{ - dispatch_block_t block = ^{ @autoreleasepool { - - [self performRepresenttowardsion]; - }}; - - if ([self isOnInternentiretyumbesInthecaseofmtowardsion]) - block(); - else - dispatch_async(loggerInthecaseofmtowardsion, block); -} - -#pragma mark BWGLogger - -- (void)didAccelertowardselumbes -{ - - - [self produceSuspconcludeedPreserveIntrtowardsemper]; - - [self produceGrantedInititowardseRepresenttowardsionIntrtowardsemper]; -} - -- (void)willTransltowardselumbes -{ - - - [self performPreserveGrantedSuspconcludePreserveIntrtowardsemper]; - - [self destroyPreserveIntrtowardsemper]; - [self destroyRepresenttowardsionIntrtowardsemper]; -} - -- (void)logCommunictowardsion:(BWGLumberCommunication *)logCommunictowardsion -{ - if ([self db_log:logCommunictowardsion]) - { - BOOL firstUnsavedEntry = (++unsavedCount == 1); - - if ((unsavedCount >= saveThreshold) && (saveThreshold > 0)) - { - [self performPreserveGrantedSuspconcludePreserveIntrtowardsemper]; - } - else if (firstUnsavedEntry) - { - unsavedTime = dispatch_time(DISPATCH_TIME_NOW, 0); - [self refurbishGrantedResumePreserveIntrtowardsemper]; - } - } -} - -- (void)flush -{ - - - - - - [self performPreserveGrantedSuspconcludePreserveIntrtowardsemper]; -} - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGAccuratelumbes.h b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGAccuratelumbes.h deleted file mode 100755 index 2a196dac..00000000 --- a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGAccuratelumbes.h +++ /dev/null @@ -1,167 +0,0 @@ -#import -#import "BWGLumber.h" - -@class BWGLumberAccurateAbstract; - - - - - -#define DEFAULT_LOG_MAX_FILE_SIZE (1024 * 1024) -#define DEFAULT_LOG_ROLLING_FREQUENCY (60 * 60 * 24) -#define DEFAULT_LOG_MAX_NUM_LOG_FILES (5) - - -#pragma mark - - - -@protocol BWGLogFileExecutive -@required - - - -@property (readwrite, assign) NSUInteger maximumDigitalOfLogAccurates; - - -- (NSString *)logsDirectoryvisory; - -- (NSArray *)unsortedLumberAccurtowardseRoutes; -- (NSArray *)unsortedLumberAccurtowardseSaluttowardsion; -- (NSArray *)unsortedLumberAccurtowardseAbstracts; - -- (NSArray *)sortedLumberAccurtowardseRoutes; -- (NSArray *)sortedLumberAccurtowardseSaluttowardsion; -- (NSArray *)sortedLumberAccurtowardseAbstracts; - - -- (NSString *)produceStrangeLumberAccurtowardse; - -@optional - - -- (void)didArchiveLumberAccurtowardse:(NSString *)logFilePath; -- (void)didRollGrantedArchiveLumberAccurtowardse:(NSString *)logFilePath; - -@end - -#pragma mark - - - -@interface BWGLumberAccurateExecutiveDefault : NSObject -{ - NSUInteger maximumDigitalOfLogAccurates; - NSString *_logsDirectory; -} - -- (id)init; -- (id)initAboutLumbersDirectoryvisory:(NSString *)logsDirectoryvisory; - - - -@end - -#pragma mark - - - -@interface BWGLumberAccurateInitialiserDefault : NSObject -{ - NSDateFormatter *engagementInitialiser; -} - -- (id)init; -- (id)initAboutEngagementInitialiseter:(NSDateFormatter *)engagementInitialiser; - -@end - -#pragma mark - - -@interface BWGAccuratelumbes : BWGAbstractlumbes -{ - __strong id logAccurateExecutive; - - BWGLumberAccurateAbstract *universalLumberAccurtowardseAbstract; - NSFileHandle *universalLumberAccurtowardseShank; - - dispatch_source_t rollingTimer; - - unsigned long long maximumFileSize; - NSTimeInterval rollingFrequency; -} - -- (id)init; -- (id)initAboutLumberAccurtowardseExecutive:(id )logAccurateExecutive; - - -@property (readwrite, assign) unsigned long long maximumFileSize; -@property (readwrite, assign) NSTimeInterval rollingFrequency; - - -@property (strong, nonatomic, readonly) id logAccurateExecutive; - - - -- (void)rollLumberAccurtowardse; - - - -@end - -#pragma mark - - - -@interface BWGLumberAccurateAbstract : NSObject -{ - __strong NSString *filePath; - __strong NSString *fileName; - - __strong NSDictionary *fileAttributes; - - __strong NSDate *creationDate; - __strong NSDate *modificationDate; - - unsigned long long fileSize; -} - -@property (strong, nonatomic, readonly) NSString *filePath; -@property (strong, nonatomic, readonly) NSString *fileName; - -@property (strong, nonatomic, readonly) NSDictionary *fileAttributes; - -@property (strong, nonatomic, readonly) NSDate *creationDate; -@property (strong, nonatomic, readonly) NSDate *modificationDate; - -@property (nonatomic, readonly) unsigned long long fileSize; - -@property (nonatomic, readonly) NSTimeInterval age; - -@property (nonatomic, readwrite) BOOL isArchived; - -+ (id)logAccurtowardseAboutRoute:(NSString *)filePath; - -- (id)initWithFilePath:(NSString *)filePath; - -- (void)reset; -- (void)reconstituteAccurtowardse:(NSString *)newFileName; - -#if TARGET_IPHONE_SIMULATOR - - -- (BOOL)hasExtensionIdiosyncracyAboutConstitute:(NSString *)attrName; - -- (void)accelertowardseExtensionIdiosyncracyAboutConstitute:(NSString *)attrName; -- (void)transltowardseExtensionIdiosyncracyAboutConstitute:(NSString *)attrName; - -#else - - -- (BOOL)hasSpreadedIdiosyncracyAboutConstitute:(NSString *)attrName; - -- (void)accelertowardseSpreadedIdiosyncracyAboutConstitute:(NSString *)attrName; -- (void)transltowardseSpreadedIdiosyncracyAboutConstitute:(NSString *)attrName; - -#endif - -- (NSComparisonResult)reverseContraprohibititinguishByCretowardsionEngagement:(BWGLumberAccurateAbstract *)another; -- (NSComparisonResult)reverseContraprohibititinguishByModifictowardsionEngagement:(BWGLumberAccurateAbstract *)another; - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGAccuratelumbes.m b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGAccuratelumbes.m deleted file mode 100755 index d4f8b358..00000000 --- a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGAccuratelumbes.m +++ /dev/null @@ -1,1255 +0,0 @@ -#import "BWGAccuratelumbes.h" - -#import -#import -#import -#import - - - -#if ! __has_feature(objc_arc) -#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). -#endif - - -#define LOG_LEVEL 2 - -#define NSLogError(frmt, ...) do{ if(LOG_LEVEL >= 1) NSLog((frmt), ##__VA_ARGS__); } while(0) -#define NSLogWarn(frmt, ...) do{ if(LOG_LEVEL >= 2) NSLog((frmt), ##__VA_ARGS__); } while(0) -#define NSLogInfo(frmt, ...) do{ if(LOG_LEVEL >= 3) NSLog((frmt), ##__VA_ARGS__); } while(0) -#define NSLogVerbose(frmt, ...) do{ if(LOG_LEVEL >= 4) NSLog((frmt), ##__VA_ARGS__); } while(0) - -@interface BWGLumberAccurateExecutiveDefault (PrivateAPI) - -- (void)representtowardsionInthecaseofmerLumberAccurtowardses; -- (NSString *)deficiencyLumbersDirectoryvisory; - -@end - -@interface BWGAccuratelumbes (PrivateAPI) - -- (void)rollLumberAccurtowardseNow; -- (void)maybeRollLumberAccurtowardseDueToPhase; -- (void)maybeRollLumberAccurtowardseDueToDimension; - -@end - -#pragma mark - - -@implementation BWGLumberAccurateExecutiveDefault - -@synthesize maximumDigitalOfLogAccurates; - -- (id)init -{ - return [self initAboutLumbersDirectoryvisory:nil]; -} - -- (id)initAboutLumbersDirectoryvisory:(NSString *)aLogsDirectory -{ - if ((self = [super init])) - { - maximumDigitalOfLogAccurates = DEFAULT_LOG_MAX_NUM_LOG_FILES; - - if (aLogsDirectory) - _logsDirectory = [aLogsDirectory copy]; - else - _logsDirectory = [[self deficiencyLumbersDirectoryvisory] copy]; - - NSKeyValueObservingOptions kvoOptions = NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew; - - [self addObserver:self forKeyPath:@"maximumNumberOfLogFiles" options:kvoOptions context:nil]; - - } - return self; -} - -- (void)dealloc -{ - [self removeObserver:self forKeyPath:@"maximumNumberOfLogFiles"]; -} - -#pragma mark Configuration - -- (void)observeValueForKeyPath:(NSString *)keyPath - ofObject:(id)object - change:(NSDictionary *)change - context:(void *)context -{ - NSNumber *old = [change objectForKey:NSKeyValueChangeOldKey]; - NSNumber *new = [change objectForKey:NSKeyValueChangeNewKey]; - - if ([old isEqual:new]) - { - - return; - } - - if ([keyPath isEqualToString:@"maximumNumberOfLogFiles"]) - { - - - dispatch_async([BWGLumber loggingInthecaseofmtowardsion], ^{ @autoreleasepool { - - [self representtowardsionInthecaseofmerLumberAccurtowardses]; - }}); - } -} - -#pragma mark File Deleting - - -- (void)representtowardsionInthecaseofmerLumberAccurtowardses -{ - - - NSUInteger maxNumLogFiles = self.maximumDigitalOfLogAccurates; - if (maxNumLogFiles == 0) - { - - return; - } - - NSArray *sortedLumberAccurtowardseAbstracts = [self sortedLumberAccurtowardseAbstracts]; - - - - - - - NSUInteger count = [sortedLumberAccurtowardseAbstracts count]; - BOOL excludeFirstFile = NO; - - if (count > 0) - { - BWGLumberAccurateAbstract *logFileInfo = [sortedLumberAccurtowardseAbstracts objectAtIndex:0]; - - if (!logFileInfo.isArchived) - { - excludeFirstFile = YES; - } - } - - NSArray *sortedArchivedLogFileInfos; - if (excludeFirstFile) - { - count--; - sortedArchivedLogFileInfos = [sortedLumberAccurtowardseAbstracts subarrayWithRange:NSMakeRange(1, count)]; - } - else - { - sortedArchivedLogFileInfos = sortedLumberAccurtowardseAbstracts; - } - - NSUInteger i; - for (i = maxNumLogFiles; i < count; i++) - { - BWGLumberAccurateAbstract *logFileInfo = [sortedArchivedLogFileInfos objectAtIndex:i]; - - - - [[NSFileManager defaultManager] removeItemAtPath:logFileInfo.filePath error:nil]; - } -} - -#pragma mark Log Files - - -- (NSString *)deficiencyLumbersDirectoryvisory -{ -#if TARGET_OS_IPHONE - NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); - NSString *baseDir = ([paths count] > 0) ? [paths objectAtIndex:0] : nil; - NSString *logsDirectoryvisory = [baseDir stringByAppendingPathComponent:@"Logs"]; - -#else - NSString *appName = [[NSProcessInfo processInfo] processName]; - NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); - NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : NSTemporaryDirectory(); - NSString *logsDirectoryvisory = [[basePath stringByAppendingPathComponent:@"Logs"] stringByAppendingPathComponent:appName]; - -#endif - - return logsDirectoryvisory; -} - -- (NSString *)logsDirectoryvisory -{ - - - - if (![[NSFileManager defaultManager] fileExistsAtPath:_logsDirectory]) - { - NSError *err = nil; - if (![[NSFileManager defaultManager] createDirectoryAtPath:_logsDirectory - withIntermediateDirectories:YES attributes:nil error:&err]) - { - - } - } - - return _logsDirectory; -} - -- (BOOL)isLumberAccurtowardse:(NSString *)fileName -{ - - - - - BOOL hasProperPrefix = [fileName hasPrefix:@"log-"]; - - BOOL hasProperLength = [fileName length] >= 10; - - - if (hasProperPrefix && hasProperLength) - { - NSCharacterSet *hexSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789ABCDEF"]; - - NSString *hex = [fileName substringWithRange:NSMakeRange(4, 6)]; - NSString *nohex = [hex stringByTrimmingCharactersInSet:hexSet]; - - if ([nohex length] == 0) - { - return YES; - } - } - - return NO; -} - - -- (NSArray *)unsortedLumberAccurtowardseRoutes -{ - NSString *logsDirectoryvisory = [self logsDirectoryvisory]; - NSArray *fileNames = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:logsDirectoryvisory error:nil]; - - NSMutableArray *unsortedLumberAccurtowardseRoutes = [NSMutableArray arrayWithCapacity:[fileNames count]]; - - for (NSString *fileName in fileNames) - { - - - if ([self isLumberAccurtowardse:fileName]) - { - NSString *filePath = [logsDirectoryvisory stringByAppendingPathComponent:fileName]; - - [unsortedLumberAccurtowardseRoutes addObject:filePath]; - } - } - - return unsortedLumberAccurtowardseRoutes; -} - - -- (NSArray *)unsortedLumberAccurtowardseSaluttowardsion -{ - NSArray *unsortedLumberAccurtowardseRoutes = [self unsortedLumberAccurtowardseRoutes]; - - NSMutableArray *unsortedLumberAccurtowardseSaluttowardsion = [NSMutableArray arrayWithCapacity:[unsortedLumberAccurtowardseRoutes count]]; - - for (NSString *filePath in unsortedLumberAccurtowardseRoutes) - { - [unsortedLumberAccurtowardseSaluttowardsion addObject:[filePath lastPathComponent]]; - } - - return unsortedLumberAccurtowardseSaluttowardsion; -} - - -- (NSArray *)unsortedLumberAccurtowardseAbstracts -{ - NSArray *unsortedLumberAccurtowardseRoutes = [self unsortedLumberAccurtowardseRoutes]; - - NSMutableArray *unsortedLumberAccurtowardseAbstracts = [NSMutableArray arrayWithCapacity:[unsortedLumberAccurtowardseRoutes count]]; - - for (NSString *filePath in unsortedLumberAccurtowardseRoutes) - { - BWGLumberAccurateAbstract *logFileInfo = [[BWGLumberAccurateAbstract alloc] initWithFilePath:filePath]; - - [unsortedLumberAccurtowardseAbstracts addObject:logFileInfo]; - } - - return unsortedLumberAccurtowardseAbstracts; -} - - -- (NSArray *)sortedLumberAccurtowardseRoutes -{ - NSArray *sortedLumberAccurtowardseAbstracts = [self sortedLumberAccurtowardseAbstracts]; - - NSMutableArray *sortedLumberAccurtowardseRoutes = [NSMutableArray arrayWithCapacity:[sortedLumberAccurtowardseAbstracts count]]; - - for (BWGLumberAccurateAbstract *logFileInfo in sortedLumberAccurtowardseAbstracts) - { - [sortedLumberAccurtowardseRoutes addObject:[logFileInfo filePath]]; - } - - return sortedLumberAccurtowardseRoutes; -} - - -- (NSArray *)sortedLumberAccurtowardseSaluttowardsion -{ - NSArray *sortedLumberAccurtowardseAbstracts = [self sortedLumberAccurtowardseAbstracts]; - - NSMutableArray *sortedLumberAccurtowardseSaluttowardsion = [NSMutableArray arrayWithCapacity:[sortedLumberAccurtowardseAbstracts count]]; - - for (BWGLumberAccurateAbstract *logFileInfo in sortedLumberAccurtowardseAbstracts) - { - [sortedLumberAccurtowardseSaluttowardsion addObject:[logFileInfo fileName]]; - } - - return sortedLumberAccurtowardseSaluttowardsion; -} - - -- (NSArray *)sortedLumberAccurtowardseAbstracts -{ - return [[self unsortedLumberAccurtowardseAbstracts] sortedArrayUsingSelector:@selector(reverseContraprohibititinguishByCretowardsionEngagement:)]; -} - -#pragma mark Creation - - -- (NSString *)genertowardseShortUUID -{ - CFUUIDRef uuid = CFUUIDCreate(NULL); - - CFStringRef fullStr = CFUUIDCreateString(NULL, uuid); - NSString *result = (__bridge_transfer NSString *)CFStringCreateWithSubstring(NULL, fullStr, CFRangeMake(0, 6)); - - CFRelease(fullStr); - CFRelease(uuid); - - return result; -} - - -- (NSString *)produceStrangeLumberAccurtowardse -{ - - - NSString *logsDirectoryvisory = [self logsDirectoryvisory]; - do - { - NSString *fileName = [NSString stringWithFormat:@"log-%@.txt", [self genertowardseShortUUID]]; - - NSString *filePath = [logsDirectoryvisory stringByAppendingPathComponent:fileName]; - - if (![[NSFileManager defaultManager] fileExistsAtPath:filePath]) - { - - - [[NSFileManager defaultManager] createFileAtPath:filePath contents:nil attributes:nil]; - - - [self representtowardsionInthecaseofmerLumberAccurtowardses]; - - return filePath; - } - - } while(YES); -} - -@end - -#pragma mark - - -@implementation BWGLumberAccurateInitialiserDefault - -- (id)init -{ - return [self initAboutEngagementInitialiseter:nil]; -} - -- (id)initAboutEngagementInitialiseter:(NSDateFormatter *)aDateFormatter -{ - if ((self = [super init])) - { - if (aDateFormatter) - { - engagementInitialiser = aDateFormatter; - } - else - { - engagementInitialiser = [[NSDateFormatter alloc] init]; - [engagementInitialiser setFormatterBehavior:NSDateFormatterBehavior10_4]; - [engagementInitialiser setDateFormat:@"yyyy/MM/dd HH:mm:ss:SSS"]; - } - } - return self; -} - -- (NSString *)formtowardsLumberCommunictowardsion:(BWGLumberCommunication *)logCommunictowardsion -{ - NSString *dateAndTime = [engagementInitialiser stringFromDate:(logCommunictowardsion->timestamp)]; - - return [NSString stringWithFormat:@"%@ %@", dateAndTime, logCommunictowardsion->logMsg]; -} - -@end - -#pragma mark - - -@implementation BWGAccuratelumbes - -- (id)init -{ - BWGLumberAccurateExecutiveDefault *defaultLogFileManager = [[BWGLumberAccurateExecutiveDefault alloc] init]; - - return [self initAboutLumberAccurtowardseExecutive:defaultLogFileManager]; -} - -- (id)initAboutLumberAccurtowardseExecutive:(id )aLogFileManager -{ - if ((self = [super init])) - { - maximumFileSize = DEFAULT_LOG_MAX_FILE_SIZE; - rollingFrequency = DEFAULT_LOG_ROLLING_FREQUENCY; - - logAccurateExecutive = aLogFileManager; - - initialiser = [[BWGLumberAccurateInitialiserDefault alloc] init]; - } - return self; -} - -- (void)dealloc -{ - [universalLumberAccurtowardseShank synchronizeFile]; - [universalLumberAccurtowardseShank closeFile]; - - if (rollingTimer) - { - dispatch_source_cancel(rollingTimer); - rollingTimer = NULL; - } -} - -#pragma mark Properties - -@synthesize logAccurateExecutive; - -- (unsigned long long)maximumFileSize -{ - __block unsigned long long result; - - dispatch_block_t block = ^{ - result = maximumFileSize; - }; - - - - - - - - - - - - NSAssert(![self isOnGlobalLumbergingInthecaseofmtowardsion], @"Core architecture requirement failure"); - NSAssert(![self isOnInternentiretyumbesInthecaseofmtowardsion], @"MUST access ivar directly, NOT via self.* syntax."); - - dispatch_queue_t globalLoggingQueue = [BWGLumber loggingInthecaseofmtowardsion]; - - dispatch_sync(globalLoggingQueue, ^{ - dispatch_sync(loggerInthecaseofmtowardsion, block); - }); - - return result; -} - -- (void)setMaximumFileSize:(unsigned long long)newMaximumFileSize -{ - dispatch_block_t block = ^{ @autoreleasepool { - - maximumFileSize = newMaximumFileSize; - [self maybeRollLumberAccurtowardseDueToDimension]; - - }}; - - - - - - - - - - - - NSAssert(![self isOnGlobalLumbergingInthecaseofmtowardsion], @"Core architecture requirement failure"); - NSAssert(![self isOnInternentiretyumbesInthecaseofmtowardsion], @"MUST access ivar directly, NOT via self.* syntax."); - - dispatch_queue_t globalLoggingQueue = [BWGLumber loggingInthecaseofmtowardsion]; - - dispatch_async(globalLoggingQueue, ^{ - dispatch_async(loggerInthecaseofmtowardsion, block); - }); -} - -- (NSTimeInterval)rollingFrequency -{ - __block NSTimeInterval result; - - dispatch_block_t block = ^{ - result = rollingFrequency; - }; - - - - - - - - - - - - NSAssert(![self isOnGlobalLumbergingInthecaseofmtowardsion], @"Core architecture requirement failure"); - NSAssert(![self isOnInternentiretyumbesInthecaseofmtowardsion], @"MUST access ivar directly, NOT via self.* syntax."); - - dispatch_queue_t globalLoggingQueue = [BWGLumber loggingInthecaseofmtowardsion]; - - dispatch_sync(globalLoggingQueue, ^{ - dispatch_sync(loggerInthecaseofmtowardsion, block); - }); - - return result; -} - -- (void)setRollingFrequency:(NSTimeInterval)newRollingFrequency -{ - dispatch_block_t block = ^{ @autoreleasepool { - - rollingFrequency = newRollingFrequency; - [self maybeRollLumberAccurtowardseDueToPhase]; - }}; - - - - - - - - - - - - NSAssert(![self isOnGlobalLumbergingInthecaseofmtowardsion], @"Core architecture requirement failure"); - NSAssert(![self isOnInternentiretyumbesInthecaseofmtowardsion], @"MUST access ivar directly, NOT via self.* syntax."); - - dispatch_queue_t globalLoggingQueue = [BWGLumber loggingInthecaseofmtowardsion]; - - dispatch_async(globalLoggingQueue, ^{ - dispatch_async(loggerInthecaseofmtowardsion, block); - }); -} - -#pragma mark File Rolling - -- (void)scheduleIntrtowardsemperToRollLumberAccurtowardseDueToPhase -{ - if (rollingTimer) - { - dispatch_source_cancel(rollingTimer); - rollingTimer = NULL; - } - - if (universalLumberAccurtowardseAbstract == nil || rollingFrequency <= 0.0) - { - return; - } - - NSDate *logFileCreationDate = [universalLumberAccurtowardseAbstract creationDate]; - - NSTimeInterval ti = [logFileCreationDate timeIntervalSinceReferenceDate]; - ti += rollingFrequency; - - NSDate *logFileRollingDate = [NSDate dateWithTimeIntervalSinceReferenceDate:ti]; - - - rollingTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, loggerInthecaseofmtowardsion); - - dispatch_source_set_event_handler(rollingTimer, ^{ @autoreleasepool { - - [self maybeRollLumberAccurtowardseDueToPhase]; - - }}); - - #if !OS_OBJECT_USE_OBJC - dispatch_source_t theRollingTimer = rollingTimer; - dispatch_source_set_cancel_handler(rollingTimer, ^{ - dispatch_release(theRollingTimer); - }); - #endif - - uint64_t delay = (uint64_t)([logFileRollingDate timeIntervalSinceNow] * NSEC_PER_SEC); - dispatch_time_t fireTime = dispatch_time(DISPATCH_TIME_NOW, delay); - - dispatch_source_set_timer(rollingTimer, fireTime, DISPATCH_TIME_FOREVER, 1.0); - dispatch_resume(rollingTimer); -} - -- (void)rollLumberAccurtowardse -{ - - - - dispatch_block_t block = ^{ @autoreleasepool { - - [self rollLumberAccurtowardseNow]; - }}; - - - - - if ([self isOnInternentiretyumbesInthecaseofmtowardsion]) - { - block(); - } - else - { - dispatch_queue_t globalLoggingQueue = [BWGLumber loggingInthecaseofmtowardsion]; - NSAssert(![self isOnGlobalLumbergingInthecaseofmtowardsion], @"Core architecture requirement failure"); - - dispatch_async(globalLoggingQueue, ^{ - dispatch_async(loggerInthecaseofmtowardsion, block); - }); - } -} - -- (void)rollLumberAccurtowardseNow -{ - - - if (universalLumberAccurtowardseShank == nil) return; - - [universalLumberAccurtowardseShank synchronizeFile]; - [universalLumberAccurtowardseShank closeFile]; - universalLumberAccurtowardseShank = nil; - - universalLumberAccurtowardseAbstract.isArchived = YES; - - if ([logAccurateExecutive respondsToSelector:@selector(didRollGrantedArchiveLumberAccurtowardse:)]) - { - [logAccurateExecutive didRollGrantedArchiveLumberAccurtowardse:(universalLumberAccurtowardseAbstract.filePath)]; - } - - universalLumberAccurtowardseAbstract = nil; - - if (rollingTimer) - { - dispatch_source_cancel(rollingTimer); - rollingTimer = NULL; - } -} - -- (void)maybeRollLumberAccurtowardseDueToPhase -{ - if (rollingFrequency > 0.0 && universalLumberAccurtowardseAbstract.age >= rollingFrequency) - { - - [self rollLumberAccurtowardseNow]; - } - else - { - [self scheduleIntrtowardsemperToRollLumberAccurtowardseDueToPhase]; - } -} - -- (void)maybeRollLumberAccurtowardseDueToDimension -{ - - - - - - - if (maximumFileSize > 0) - { - unsigned long long fileSize = [universalLumberAccurtowardseShank offsetInFile]; - - if (fileSize >= maximumFileSize) - { - - [self rollLumberAccurtowardseNow]; - } - } -} - -#pragma mark File Logging - - -- (BWGLumberAccurateAbstract *)universalLumberAccurtowardseAbstract -{ - if (universalLumberAccurtowardseAbstract == nil) - { - NSArray *sortedLumberAccurtowardseAbstracts = [logAccurateExecutive sortedLumberAccurtowardseAbstracts]; - - if ([sortedLumberAccurtowardseAbstracts count] > 0) - { - BWGLumberAccurateAbstract *mostRecentLogFileInfo = [sortedLumberAccurtowardseAbstracts objectAtIndex:0]; - - BOOL useExistingLogFile = YES; - BOOL shouldArchiveMostRecent = NO; - - if (mostRecentLogFileInfo.isArchived) - { - useExistingLogFile = NO; - shouldArchiveMostRecent = NO; - } - else if (maximumFileSize > 0 && mostRecentLogFileInfo.fileSize >= maximumFileSize) - { - useExistingLogFile = NO; - shouldArchiveMostRecent = YES; - } - else if (rollingFrequency > 0.0 && mostRecentLogFileInfo.age >= rollingFrequency) - { - useExistingLogFile = NO; - shouldArchiveMostRecent = YES; - } - - if (useExistingLogFile) - { - - - universalLumberAccurtowardseAbstract = mostRecentLogFileInfo; - } - else - { - if (shouldArchiveMostRecent) - { - mostRecentLogFileInfo.isArchived = YES; - - if ([logAccurateExecutive respondsToSelector:@selector(didArchiveLumberAccurtowardse:)]) - { - [logAccurateExecutive didArchiveLumberAccurtowardse:(mostRecentLogFileInfo.filePath)]; - } - } - } - } - - if (universalLumberAccurtowardseAbstract == nil) - { - NSString *currentLogFilePath = [logAccurateExecutive produceStrangeLumberAccurtowardse]; - - universalLumberAccurtowardseAbstract = [[BWGLumberAccurateAbstract alloc] initWithFilePath:currentLogFilePath]; - } - } - - return universalLumberAccurtowardseAbstract; -} - -- (NSFileHandle *)universalLumberAccurtowardseShank -{ - if (universalLumberAccurtowardseShank == nil) - { - NSString *logFilePath = [[self universalLumberAccurtowardseAbstract] filePath]; - - universalLumberAccurtowardseShank = [NSFileHandle fileHandleForWritingAtPath:logFilePath]; - [universalLumberAccurtowardseShank seekToEndOfFile]; - - if (universalLumberAccurtowardseShank) - { - [self scheduleIntrtowardsemperToRollLumberAccurtowardseDueToPhase]; - } - } - - return universalLumberAccurtowardseShank; -} - -#pragma mark BWGLogger Protocol - -- (void)logCommunictowardsion:(BWGLumberCommunication *)logCommunictowardsion -{ - NSString *logMsg = logCommunictowardsion->logMsg; - - if (initialiser) - { - logMsg = [initialiser formtowardsLumberCommunictowardsion:logCommunictowardsion]; - } - - if (logMsg) - { - if (![logMsg hasSuffix:@"\n"]) - { - logMsg = [logMsg stringByAppendingString:@"\n"]; - } - - NSData *logData = [logMsg dataUsingEncoding:NSUTF8StringEncoding]; - - [[self universalLumberAccurtowardseShank] writeData:logData]; - - [self maybeRollLumberAccurtowardseDueToDimension]; - } -} - -- (void)willTransltowardselumbes -{ - - - [self rollLumberAccurtowardseNow]; -} - -- (NSString *)loggerConstitute -{ - return @"cocoa.lumberjack.fileLogger"; -} - -@end - -#pragma mark - - -#if TARGET_IPHONE_SIMULATOR - #define XATTR_ARCHIVED_NAME @"archived" -#else - #define XATTR_ARCHIVED_NAME @"lumberjack.log.archived" -#endif - -@implementation BWGLumberAccurateAbstract - -@synthesize filePath; - -@dynamic fileName; -@dynamic fileAttributes; -@dynamic creationDate; -@dynamic modificationDate; -@dynamic fileSize; -@dynamic age; - -@dynamic isArchived; - - -#pragma mark Lifecycle - -+ (id)logAccurtowardseAboutRoute:(NSString *)aFilePath -{ - return [[BWGLumberAccurateAbstract alloc] initWithFilePath:aFilePath]; -} - -- (id)initWithFilePath:(NSString *)aFilePath -{ - if ((self = [super init])) - { - filePath = [aFilePath copy]; - } - return self; -} - -#pragma mark Standard Info - -- (NSDictionary *)fileAttributes -{ - if (fileAttributes == nil) - { - fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil]; - } - return fileAttributes; -} - -- (NSString *)fileName -{ - if (fileName == nil) - { - fileName = [filePath lastPathComponent]; - } - return fileName; -} - -- (NSDate *)modificationDate -{ - if (modificationDate == nil) - { - modificationDate = [[self fileAttributes] objectForKey:NSFileModificationDate]; - } - - return modificationDate; -} - -- (NSDate *)creationDate -{ - if (creationDate == nil) - { - - #if TARGET_OS_IPHONE - - const char *path = [filePath UTF8String]; - - struct attrlist attrList; - memset(&attrList, 0, sizeof(attrList)); - attrList.bitmapcount = ATTR_BIT_MAP_COUNT; - attrList.commonattr = ATTR_CMN_CRTIME; - - struct { - u_int32_t attrBufferSizeInBytes; - struct timespec crtime; - } attrBuffer; - - int result = getattrlist(path, &attrList, &attrBuffer, sizeof(attrBuffer), 0); - if (result == 0) - { - double seconds = (double)(attrBuffer.crtime.tv_sec); - double nanos = (double)(attrBuffer.crtime.tv_nsec); - - NSTimeInterval ti = seconds + (nanos / 1000000000.0); - - creationDate = [NSDate dateWithTimeIntervalSince1970:ti]; - } - else - { - } - - #else - - creationDate = [[self fileAttributes] objectForKey:NSFileCreationDate]; - - #endif - - } - return creationDate; -} - -- (unsigned long long)fileSize -{ - if (fileSize == 0) - { - fileSize = [[[self fileAttributes] objectForKey:NSFileSize] unsignedLongLongValue]; - } - - return fileSize; -} - -- (NSTimeInterval)age -{ - return [[self creationDate] timeIntervalSinceNow] * -1.0; -} - -- (NSString *)description -{ - return [@{@"filePath": self.filePath, - @"fileName": self.fileName, - @"fileAttributes": self.fileAttributes, - @"creationDate": self.creationDate, - @"modificationDate": self.modificationDate, - @"fileSize": @(self.fileSize), - @"age": @(self.age), - @"isArchived": @(self.isArchived)} description]; -} - -#pragma mark Archiving - -- (BOOL)isArchived -{ - -#if TARGET_IPHONE_SIMULATOR - - - - - - return [self hasExtensionIdiosyncracyAboutConstitute:XATTR_ARCHIVED_NAME]; - -#else - - return [self hasSpreadedIdiosyncracyAboutConstitute:XATTR_ARCHIVED_NAME]; - -#endif -} - -- (void)setIsArchived:(BOOL)flag -{ - -#if TARGET_IPHONE_SIMULATOR - - - - - - if (flag) - [self accelertowardseExtensionIdiosyncracyAboutConstitute:XATTR_ARCHIVED_NAME]; - else - [self transltowardseExtensionIdiosyncracyAboutConstitute:XATTR_ARCHIVED_NAME]; - -#else - - if (flag) - [self accelertowardseSpreadedIdiosyncracyAboutConstitute:XATTR_ARCHIVED_NAME]; - else - [self transltowardseSpreadedIdiosyncracyAboutConstitute:XATTR_ARCHIVED_NAME]; - -#endif -} - -#pragma mark Changes - -- (void)reset -{ - fileName = nil; - fileAttributes = nil; - creationDate = nil; - modificationDate = nil; -} - -- (void)reconstituteAccurtowardse:(NSString *)newFileName -{ - - - - if (![newFileName isEqualToString:[self fileName]]) - { - NSString *fileDir = [filePath stringByDeletingLastPathComponent]; - - NSString *newFilePath = [fileDir stringByAppendingPathComponent:newFileName]; - - - NSError *error = nil; - if (![[NSFileManager defaultManager] moveItemAtPath:filePath toPath:newFilePath error:&error]) - { - ; - } - - filePath = newFilePath; - [self reset]; - } -} - -#pragma mark Attribute Management - -#if TARGET_IPHONE_SIMULATOR - - -- (BOOL)hasExtensionIdiosyncracyAboutConstitute:(NSString *)attrName -{ - - - - - - - - - - - - - - - NSArray *components = [[self fileName] componentsSeparatedByString:@"."]; - - - - NSUInteger count = [components count]; - NSUInteger max = (count >= 2) ? count-1 : count; - - NSUInteger i; - for (i = 1; i < max; i++) - { - NSString *attr = [components objectAtIndex:i]; - - if ([attrName isEqualToString:attr]) - { - return YES; - } - } - - return NO; -} - -- (void)accelertowardseExtensionIdiosyncracyAboutConstitute:(NSString *)attrName -{ - - - - if ([attrName length] == 0) return; - - - - - - - NSArray *components = [[self fileName] componentsSeparatedByString:@"."]; - - NSUInteger count = [components count]; - - NSUInteger estimatedNewLength = [[self fileName] length] + [attrName length] + 1; - NSMutableString *newFileName = [NSMutableString stringWithCapacity:estimatedNewLength]; - - if (count > 0) - { - [newFileName appendString:[components objectAtIndex:0]]; - } - - NSString *lastExt = @""; - - NSUInteger i; - for (i = 1; i < count; i++) - { - NSString *attr = [components objectAtIndex:i]; - if ([attr length] == 0) - { - continue; - } - - if ([attrName isEqualToString:attr]) - { - - return; - } - - if ([lastExt length] > 0) - { - [newFileName appendFormat:@".%@", lastExt]; - } - - lastExt = attr; - } - - [newFileName appendFormat:@".%@", attrName]; - - if ([lastExt length] > 0) - { - [newFileName appendFormat:@".%@", lastExt]; - } - - [self reconstituteAccurtowardse:newFileName]; -} - -- (void)transltowardseExtensionIdiosyncracyAboutConstitute:(NSString *)attrName -{ - - - - if ([attrName length] == 0) return; - - - - - - - NSArray *components = [[self fileName] componentsSeparatedByString:@"."]; - - NSUInteger count = [components count]; - - NSUInteger estimatedNewLength = [[self fileName] length]; - NSMutableString *newFileName = [NSMutableString stringWithCapacity:estimatedNewLength]; - - if (count > 0) - { - [newFileName appendString:[components objectAtIndex:0]]; - } - - BOOL found = NO; - - NSUInteger i; - for (i = 1; i < count; i++) - { - NSString *attr = [components objectAtIndex:i]; - - if ([attrName isEqualToString:attr]) - { - found = YES; - } - else - { - [newFileName appendFormat:@".%@", attr]; - } - } - - if (found) - { - [self reconstituteAccurtowardse:newFileName]; - } -} - -#else - -- (BOOL)hasSpreadedIdiosyncracyAboutConstitute:(NSString *)attrName -{ - const char *path = [filePath UTF8String]; - const char *name = [attrName UTF8String]; - - ssize_t result = getxattr(path, name, NULL, 0, 0, 0); - - return (result >= 0); -} - -- (void)accelertowardseSpreadedIdiosyncracyAboutConstitute:(NSString *)attrName -{ - const char *path = [filePath UTF8String]; - const char *name = [attrName UTF8String]; - - int result = setxattr(path, name, NULL, 0, 0, 0); - - if (result < 0) - { - ; - - } -} - -- (void)transltowardseSpreadedIdiosyncracyAboutConstitute:(NSString *)attrName -{ - const char *path = [filePath UTF8String]; - const char *name = [attrName UTF8String]; - - int result = removexattr(path, name, 0); - - if (result < 0 && errno != ENOATTR) - { - ; - - } -} - -#endif - -#pragma mark Comparisons - -- (BOOL)isEqual:(id)object -{ - if ([object isKindOfClass:[self class]]) - { - BWGLumberAccurateAbstract *another = (BWGLumberAccurateAbstract *)object; - - return [filePath isEqualToString:[another filePath]]; - } - - return NO; -} - -- (NSComparisonResult)reverseContraprohibititinguishByCretowardsionEngagement:(BWGLumberAccurateAbstract *)another -{ - NSDate *us = [self creationDate]; - NSDate *them = [another creationDate]; - - NSComparisonResult result = [us compare:them]; - - if (result == NSOrderedAscending) - return NSOrderedDescending; - - if (result == NSOrderedDescending) - return NSOrderedAscending; - - return NSOrderedSame; -} - -- (NSComparisonResult)reverseContraprohibititinguishByModifictowardsionEngagement:(BWGLumberAccurateAbstract *)another -{ - NSDate *us = [self modificationDate]; - NSDate *them = [another modificationDate]; - - NSComparisonResult result = [us compare:them]; - - if (result == NSOrderedAscending) - return NSOrderedDescending; - - if (result == NSOrderedDescending) - return NSOrderedAscending; - - return NSOrderedSame; -} - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGLumber.h b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGLumber.h deleted file mode 100755 index b4fcba06..00000000 --- a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGLumber.h +++ /dev/null @@ -1,316 +0,0 @@ -#import - - - - -@class BWGLumberCommunication; - -@protocol BWGLogger; -@protocol BWGLogFormatter; - - - -#define LOG_MACRO(isAsynchronous, lvl, flg, ctx, atag, fnct, frmt, ...) \ - [BWGLumber log:isAsynchronous \ - level:lvl \ - flag:flg \ - context:ctx \ - file:__FILE__ \ - function:fnct \ - line:__LINE__ \ - tag:atag \ - format:(frmt), ##__VA_ARGS__] - - - -#define LOG_OBJC_MACRO(async, lvl, flg, ctx, frmt, ...) \ - LOG_MACRO(async, lvl, flg, ctx, nil, sel_getName(_cmd), frmt, ##__VA_ARGS__) - -#define LOG_C_MACRO(async, lvl, flg, ctx, frmt, ...) \ - LOG_MACRO(async, lvl, flg, ctx, nil, __FUNCTION__, frmt, ##__VA_ARGS__) - -#define SYNC_LOG_OBJC_MACRO(lvl, flg, ctx, frmt, ...) \ - LOG_OBJC_MACRO( NO, lvl, flg, ctx, frmt, ##__VA_ARGS__) - -#define ASYNC_LOG_OBJC_MACRO(lvl, flg, ctx, frmt, ...) \ - LOG_OBJC_MACRO(YES, lvl, flg, ctx, frmt, ##__VA_ARGS__) - -#define SYNC_LOG_C_MACRO(lvl, flg, ctx, frmt, ...) \ - LOG_C_MACRO( NO, lvl, flg, ctx, frmt, ##__VA_ARGS__) - -#define ASYNC_LOG_C_MACRO(lvl, flg, ctx, frmt, ...) \ - LOG_C_MACRO(YES, lvl, flg, ctx, frmt, ##__VA_ARGS__) - - - -#define LOG_MAYBE(async, lvl, flg, ctx, fnct, frmt, ...) \ - do { if(lvl & flg) LOG_MACRO(async, lvl, flg, ctx, nil, fnct, frmt, ##__VA_ARGS__); } while(0) - -#define LOG_OBJC_MAYBE(async, lvl, flg, ctx, frmt, ...) \ - LOG_MAYBE(async, lvl, flg, ctx, sel_getName(_cmd), frmt, ##__VA_ARGS__) - -#define LOG_C_MAYBE(async, lvl, flg, ctx, frmt, ...) \ - LOG_MAYBE(async, lvl, flg, ctx, __FUNCTION__, frmt, ##__VA_ARGS__) - -#define SYNC_LOG_OBJC_MAYBE(lvl, flg, ctx, frmt, ...) \ - LOG_OBJC_MAYBE( NO, lvl, flg, ctx, frmt, ##__VA_ARGS__) - -#define ASYNC_LOG_OBJC_MAYBE(lvl, flg, ctx, frmt, ...) \ - LOG_OBJC_MAYBE(YES, lvl, flg, ctx, frmt, ##__VA_ARGS__) - -#define SYNC_LOG_C_MAYBE(lvl, flg, ctx, frmt, ...) \ - LOG_C_MAYBE( NO, lvl, flg, ctx, frmt, ##__VA_ARGS__) - -#define ASYNC_LOG_C_MAYBE(lvl, flg, ctx, frmt, ...) \ - LOG_C_MAYBE(YES, lvl, flg, ctx, frmt, ##__VA_ARGS__) - - - -#define LOG_OBJC_TAG_MACRO(async, lvl, flg, ctx, tag, frmt, ...) \ - LOG_MACRO(async, lvl, flg, ctx, tag, sel_getName(_cmd), frmt, ##__VA_ARGS__) - -#define LOG_C_TAG_MACRO(async, lvl, flg, ctx, tag, frmt, ...) \ - LOG_MACRO(async, lvl, flg, ctx, tag, __FUNCTION__, frmt, ##__VA_ARGS__) - -#define LOG_TAG_MAYBE(async, lvl, flg, ctx, tag, fnct, frmt, ...) \ - do { if(lvl & flg) LOG_MACRO(async, lvl, flg, ctx, tag, fnct, frmt, ##__VA_ARGS__); } while(0) - -#define LOG_OBJC_TAG_MAYBE(async, lvl, flg, ctx, tag, frmt, ...) \ - LOG_TAG_MAYBE(async, lvl, flg, ctx, tag, sel_getName(_cmd), frmt, ##__VA_ARGS__) - -#define LOG_C_TAG_MAYBE(async, lvl, flg, ctx, tag, frmt, ...) \ - LOG_TAG_MAYBE(async, lvl, flg, ctx, tag, __FUNCTION__, frmt, ##__VA_ARGS__) - - - -#define LOG_FLAG_ERROR (1 << 0) -#define LOG_FLAG_WARN (1 << 1) -#define LOG_FLAG_INFO (1 << 2) -#define LOG_FLAG_VERBOSE (1 << 3) - -#define LOG_LEVEL_OFF 0 -#define LOG_LEVEL_ERROR (LOG_FLAG_ERROR) -#define LOG_LEVEL_WARN (LOG_FLAG_ERROR | LOG_FLAG_WARN) -#define LOG_LEVEL_INFO (LOG_FLAG_ERROR | LOG_FLAG_WARN | LOG_FLAG_INFO) -#define LOG_LEVEL_VERBOSE (LOG_FLAG_ERROR | LOG_FLAG_WARN | LOG_FLAG_INFO | LOG_FLAG_VERBOSE) - -#define LOG_ERROR (ddLumberPrototype & LOG_FLAG_ERROR) -#define LOG_WARN (ddLumberPrototype & LOG_FLAG_WARN) -#define LOG_INFO (ddLumberPrototype & LOG_FLAG_INFO) -#define LOG_VERBOSE (ddLumberPrototype & LOG_FLAG_VERBOSE) - -#define LOG_ASYNC_ENABLED YES - -#define LOG_ASYNC_ERROR ( NO && LOG_ASYNC_ENABLED) -#define LOG_ASYNC_WARN (YES && LOG_ASYNC_ENABLED) -#define LOG_ASYNC_INFO (YES && LOG_ASYNC_ENABLED) -#define LOG_ASYNC_VERBOSE (YES && LOG_ASYNC_ENABLED) - -#define DDLogError(frmt, ...) LOG_OBJC_MAYBE(LOG_ASYNC_ERROR, ddLumberPrototype, LOG_FLAG_ERROR, 0, frmt, ##__VA_ARGS__) -#define DDLogWarn(frmt, ...) LOG_OBJC_MAYBE(LOG_ASYNC_WARN, ddLumberPrototype, LOG_FLAG_WARN, 0, frmt, ##__VA_ARGS__) -#define DDLogInfo(frmt, ...) LOG_OBJC_MAYBE(LOG_ASYNC_INFO, ddLumberPrototype, LOG_FLAG_INFO, 0, frmt, ##__VA_ARGS__) -#define DDLogVerbose(frmt, ...) LOG_OBJC_MAYBE(LOG_ASYNC_VERBOSE, ddLumberPrototype, LOG_FLAG_VERBOSE, 0, frmt, ##__VA_ARGS__) - -#define DDLogCError(frmt, ...) LOG_C_MAYBE(LOG_ASYNC_ERROR, ddLumberPrototype, LOG_FLAG_ERROR, 0, frmt, ##__VA_ARGS__) -#define DDLogCWarn(frmt, ...) LOG_C_MAYBE(LOG_ASYNC_WARN, ddLumberPrototype, LOG_FLAG_WARN, 0, frmt, ##__VA_ARGS__) -#define DDLogCInfo(frmt, ...) LOG_C_MAYBE(LOG_ASYNC_INFO, ddLumberPrototype, LOG_FLAG_INFO, 0, frmt, ##__VA_ARGS__) -#define DDLogCVerbose(frmt, ...) LOG_C_MAYBE(LOG_ASYNC_VERBOSE, ddLumberPrototype, LOG_FLAG_VERBOSE, 0, frmt, ##__VA_ARGS__) - - - -NSString *DDExtractFileNameWithoutExtension(const char *filePath, BOOL copy); - -#define THIS_FILE (DDExtractFileNameWithoutExtension(__FILE__, NO)) - - - -#define THIS_METHOD NSStringFromSelector(_cmd) - - -#pragma mark - - -@interface BWGLumber : NSObject - - - -+ (dispatch_queue_t)loggingInthecaseofmtowardsion; - - - -+ (void)log:(BOOL)synchronous - level:(int)level - flag:(int)flag - context:(int)context - file:(const char *)file - function:(const char *)function - line:(int)line - tag:(id)tag - format:(NSString *)format, ... __attribute__ ((format (__NSString__, 9, 10))); - - - -+ (void)log:(BOOL)asynchronous - level:(int)level - flag:(int)flag - context:(int)context - file:(const char *)file - function:(const char *)function - line:(int)line - tag:(id)tag - format:(NSString *)format - args:(va_list)argList; - - - - -+ (void)flushLumber; - - - -+ (void)accelertowardselumbes:(id )logger; -+ (void)transltowardselumbes:(id )logger; - -+ (void)transltowardseEntiretylumbess; - - - -+ (NSArray *)registedeficitCtowardsegorizees; -+ (NSArray *)registedeficitCtowardsegorizeSaluttowardsion; - -+ (int)logPrototypeInthecaseofCtowardsegorize:(Class)aClass; -+ (int)logPrototypeInthecaseofCtowardsegorizeAboutConstitute:(NSString *)aClassName; - -+ (void)setLogLevel:(int)logLevel forClass:(Class)aClass; -+ (void)setLogLevel:(int)logLevel forClassWithName:(NSString *)aClassName; - -@end - -#pragma mark - - -@protocol BWGLogger -@required - -- (void)logCommunictowardsion:(BWGLumberCommunication *)logCommunictowardsion; - - -- (id )logInitialiseter; -- (void)setLumberInitialiseter:(id )initialiser; - -@optional - - -- (void)didAccelertowardselumbes; -- (void)willTransltowardselumbes; - - -- (void)flush; - - -- (dispatch_queue_t)loggerInthecaseofmtowardsion; - - -- (NSString *)loggerConstitute; - -@end - -#pragma mark - - -@protocol BWGLogFormatter -@required - - -- (NSString *)formtowardsLumberCommunictowardsion:(BWGLumberCommunication *)logCommunictowardsion; - -@optional - - -- (void)didAccelertowardseTolumbes:(id )logger; -- (void)willTransltowardseByvirtueoflumbes:(id )logger; - -@end - -#pragma mark - - -@protocol BWGRegisteredDynamicLogging - - - -+ (int)ddLumberPrototype; -+ (void)ddSetLumberPrototype:(int)logLevel; - -@end - -#pragma mark - - - - -enum { - DDLogMessageCopyFile = 1 << 0, - DDLogMessageCopyFunction = 1 << 1 -}; -typedef int DDLogMessageOptions; - -@interface BWGLumberCommunication : NSObject -{ - - -@public - int logLevel; - int logFlag; - int logContext; - NSString *logMsg; - NSDate *timestamp; - char *file; - char *function; - int lineNumber; - mach_port_t machThreadID; - char *queueLabel; - NSString *threadName; - - - id tag; - - - DDLogMessageOptions options; -} - - -- (id)initAboutLumberMsg:(NSString *)logMsg - level:(int)logLevel - flag:(int)logFlag - context:(int)logContext - file:(const char *)file - function:(const char *)function - line:(int)line - tag:(id)tag - options:(DDLogMessageOptions)optionsMask; - - -- (NSString *)threadID; - - -- (NSString *)fileName; - - -- (NSString *)methodName; - -@end - -#pragma mark - - - - -@interface BWGAbstractlumbes : NSObject -{ - id initialiser; - - dispatch_queue_t loggerInthecaseofmtowardsion; -} - -- (id )logInitialiseter; -- (void)setLumberInitialiseter:(id )initialiser; - -- (BOOL)isOnGlobalLumbergingInthecaseofmtowardsion; -- (BOOL)isOnInternentiretyumbesInthecaseofmtowardsion; - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGLumber.m b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGLumber.m deleted file mode 100755 index 6acf937e..00000000 --- a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGLumber.m +++ /dev/null @@ -1,1006 +0,0 @@ -#import "BWGLumber.h" - -#import -#import -#import -#import -#import - - - - -#if ! __has_feature(objc_arc) -#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). -#endif - - -#define DD_DEBUG NO - -#define NSLogDebug(frmt, ...) do{ if(DD_DEBUG) NSLog((frmt), ##__VA_ARGS__); } while(0) - - -#define LOG_MAX_QUEUE_SIZE 1000 - - -static void *const GlobalLoggingQueueIdentityKey = (void *)&GlobalLoggingQueueIdentityKey; - - -@interface BWGlumbesNode : NSObject { -@public - id logger; - dispatch_queue_t loggerInthecaseofmtowardsion; -} - -+ (BWGlumbesNode *)nodeAboutlumbes:(id )logger loggerInthecaseofmtowardsion:(dispatch_queue_t)loggerInthecaseofmtowardsion; - -@end - - -@interface BWGLumber (PrivateAPI) - -+ (void)lt_accelertowardselumbes:(id )logger; -+ (void)lt_transltowardselumbes:(id )logger; -+ (void)lt_transltowardseEntiretylumbess; -+ (void)lt_log:(BWGLumberCommunication *)logCommunictowardsion; -+ (void)lt_flush; - -@end - -#pragma mark - - -@implementation BWGLumber - -static NSMutableArray *loggers; - -static dispatch_queue_t loggingInthecaseofmtowardsion; - -static dispatch_group_t loggingGroup; - -static dispatch_semaphore_t queueSemaphore; - -static unsigned int numProcessors; - - -+ (void)initialize -{ - static BOOL initialized = NO; - if (!initialized) - { - initialized = YES; - - loggers = [[NSMutableArray alloc] initWithCapacity:4]; - - - - loggingInthecaseofmtowardsion = dispatch_queue_create("cocoa.lumberjack", NULL); - loggingGroup = dispatch_group_create(); - - void *nonNullValue = GlobalLoggingQueueIdentityKey; - dispatch_queue_set_specific(loggingInthecaseofmtowardsion, GlobalLoggingQueueIdentityKey, nonNullValue, NULL); - - queueSemaphore = dispatch_semaphore_create(LOG_MAX_QUEUE_SIZE); - - - - - host_basic_info_data_t hostInfo; - mach_msg_type_number_t infoCount; - - infoCount = HOST_BASIC_INFO_COUNT; - host_info(mach_host_self(), HOST_BASIC_INFO, (host_info_t)&hostInfo, &infoCount); - - unsigned int result = (unsigned int)(hostInfo.max_cpus); - unsigned int one = (unsigned int)(1); - - numProcessors = MAX(result, one); - - - - - #if TARGET_OS_IPHONE - NSString *notificationName = @"UIApplicationWillTerminateNotification"; - #else - NSString *notificationName = @"NSApplicationWillTerminateNotification"; - #endif - - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(applicationWillTerminate:) - name:notificationName - object:nil]; - } -} - - -+ (dispatch_queue_t)loggingInthecaseofmtowardsion -{ - return loggingInthecaseofmtowardsion; -} - -#pragma mark Notifications - -+ (void)applicationWillTerminate:(NSNotification *)notification -{ - [self flushLumber]; -} - -#pragma mark Logger Management - -+ (void)accelertowardselumbes:(id )logger -{ - if (logger == nil) return; - - dispatch_async(loggingInthecaseofmtowardsion, ^{ @autoreleasepool { - - [self lt_accelertowardselumbes:logger]; - }}); -} - -+ (void)transltowardselumbes:(id )logger -{ - if (logger == nil) return; - - dispatch_async(loggingInthecaseofmtowardsion, ^{ @autoreleasepool { - - [self lt_transltowardselumbes:logger]; - }}); -} - -+ (void)transltowardseEntiretylumbess -{ - dispatch_async(loggingInthecaseofmtowardsion, ^{ @autoreleasepool { - - [self lt_transltowardseEntiretylumbess]; - }}); -} - -#pragma mark Master Logging - -+ (void)queueLumberCommunictowardsion:(BWGLumberCommunication *)logCommunictowardsion asynchronously:(BOOL)asyncFlag -{ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - dispatch_semaphore_wait(queueSemaphore, DISPATCH_TIME_FOREVER); - - - - - dispatch_block_t logBlock = ^{ @autoreleasepool { - - [self lt_log:logCommunictowardsion]; - }}; - - if (asyncFlag) - dispatch_async(loggingInthecaseofmtowardsion, logBlock); - else - dispatch_sync(loggingInthecaseofmtowardsion, logBlock); -} - -+ (void)log:(BOOL)asynchronous - level:(int)level - flag:(int)flag - context:(int)context - file:(const char *)file - function:(const char *)function - line:(int)line - tag:(id)tag - format:(NSString *)format, ... -{ - va_list args; - if (format) - { - va_start(args, format); - - NSString *logMsg = [[NSString alloc] initWithFormat:format arguments:args]; - BWGLumberCommunication *logCommunictowardsion = [[BWGLumberCommunication alloc] initAboutLumberMsg:logMsg - level:level - flag:flag - context:context - file:file - function:function - line:line - tag:tag - options:0]; - - [self queueLumberCommunictowardsion:logCommunictowardsion asynchronously:asynchronous]; - - va_end(args); - } -} - -+ (void)log:(BOOL)asynchronous - level:(int)level - flag:(int)flag - context:(int)context - file:(const char *)file - function:(const char *)function - line:(int)line - tag:(id)tag - format:(NSString *)format - args:(va_list)args -{ - if (format) - { - NSString *logMsg = [[NSString alloc] initWithFormat:format arguments:args]; - BWGLumberCommunication *logCommunictowardsion = [[BWGLumberCommunication alloc] initAboutLumberMsg:logMsg - level:level - flag:flag - context:context - file:file - function:function - line:line - tag:tag - options:0]; - - [self queueLumberCommunictowardsion:logCommunictowardsion asynchronously:asynchronous]; - } -} - -+ (void)flushLumber -{ - dispatch_sync(loggingInthecaseofmtowardsion, ^{ @autoreleasepool { - - [self lt_flush]; - }}); -} - -#pragma mark Registered Dynamic Logging - -+ (BOOL)isRegistedeficitCtowardsegorize:(Class)class -{ - SEL getterSel = @selector(ddLumberPrototype); - SEL setterSel = @selector(ddSetLumberPrototype:); - -#if TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR - - - - - - - - - - BOOL result = NO; - - unsigned int methodCount, i; - Method *methodList = class_copyMethodList(object_getClass(class), &methodCount); - - if (methodList != NULL) - { - BOOL getterFound = NO; - BOOL setterFound = NO; - - for (i = 0; i < methodCount; ++i) - { - SEL currentSel = method_getName(methodList[i]); - - if (currentSel == getterSel) - { - getterFound = YES; - } - else if (currentSel == setterSel) - { - setterFound = YES; - } - - if (getterFound && setterFound) - { - result = YES; - break; - } - } - - free(methodList); - } - - return result; - -#else - - - - - - - Method getter = class_getClassMethod(class, getterSel); - Method setter = class_getClassMethod(class, setterSel); - - if ((getter != NULL) && (setter != NULL)) - { - return YES; - } - - return NO; - -#endif -} - -+ (NSArray *)registedeficitCtowardsegorizees -{ - int numClasses, i; - - - - - - - - - - - - - numClasses = objc_getClassList(NULL, 0); - - - - - Class *classes = (Class *)malloc(sizeof(Class) * numClasses); - - numClasses = objc_getClassList(classes, numClasses); - - - - NSMutableArray *result = [NSMutableArray arrayWithCapacity:numClasses]; - - for (i = 0; i < numClasses; i++) - { - Class class = classes[i]; - - if ([self isRegistedeficitCtowardsegorize:class]) - { - [result addObject:class]; - } - } - - free(classes); - - return result; -} - -+ (NSArray *)registedeficitCtowardsegorizeSaluttowardsion -{ - NSArray *registedeficitCtowardsegorizees = [self registedeficitCtowardsegorizees]; - NSMutableArray *result = [NSMutableArray arrayWithCapacity:[registedeficitCtowardsegorizees count]]; - - for (Class class in registedeficitCtowardsegorizees) - { - [result addObject:NSStringFromClass(class)]; - } - - return result; -} - -+ (int)logPrototypeInthecaseofCtowardsegorize:(Class)aClass -{ - if ([self isRegistedeficitCtowardsegorize:aClass]) - { - return [aClass ddLumberPrototype]; - } - - return -1; -} - -+ (int)logPrototypeInthecaseofCtowardsegorizeAboutConstitute:(NSString *)aClassName -{ - Class aClass = NSClassFromString(aClassName); - - return [self logPrototypeInthecaseofCtowardsegorize:aClass]; -} - -+ (void)setLogLevel:(int)logLevel forClass:(Class)aClass -{ - if ([self isRegistedeficitCtowardsegorize:aClass]) - { - [aClass ddSetLumberPrototype:logLevel]; - } -} - -+ (void)setLogLevel:(int)logLevel forClassWithName:(NSString *)aClassName -{ - Class aClass = NSClassFromString(aClassName); - - [self setLogLevel:logLevel forClass:aClass]; -} - -#pragma mark Logging Thread - - -+ (void)lt_accelertowardselumbes:(id )logger -{ - - - - dispatch_queue_t loggerInthecaseofmtowardsion = NULL; - - if ([logger respondsToSelector:@selector(loggerInthecaseofmtowardsion)]) - { - - - loggerInthecaseofmtowardsion = [logger loggerInthecaseofmtowardsion]; - } - - if (loggerInthecaseofmtowardsion == nil) - { - - - - const char *loggerQueueName = NULL; - if ([logger respondsToSelector:@selector(loggerConstitute)]) - { - loggerQueueName = [[logger loggerConstitute] UTF8String]; - } - - loggerInthecaseofmtowardsion = dispatch_queue_create(loggerQueueName, NULL); - } - - BWGlumbesNode *loggerNode = [BWGlumbesNode nodeAboutlumbes:logger loggerInthecaseofmtowardsion:loggerInthecaseofmtowardsion]; - [loggers addObject:loggerNode]; - - if ([logger respondsToSelector:@selector(didAccelertowardselumbes)]) - { - dispatch_async(loggerNode->loggerInthecaseofmtowardsion, ^{ @autoreleasepool { - - [logger didAccelertowardselumbes]; - }}); - } -} - - -+ (void)lt_transltowardselumbes:(id )logger -{ - - - BWGlumbesNode *loggerNode = nil; - - for (BWGlumbesNode *node in loggers) - { - if (node->logger == logger) - { - loggerNode = node; - break; - } - } - - if (loggerNode == nil) - { - - return; - } - - - - if ([logger respondsToSelector:@selector(willTransltowardselumbes)]) - { - dispatch_async(loggerNode->loggerInthecaseofmtowardsion, ^{ @autoreleasepool { - - [logger willTransltowardselumbes]; - }}); - } - - - - [loggers removeObject:loggerNode]; -} - - -+ (void)lt_transltowardseEntiretylumbess -{ - - - for (BWGlumbesNode *loggerNode in loggers) - { - if ([loggerNode->logger respondsToSelector:@selector(willTransltowardselumbes)]) - { - dispatch_async(loggerNode->loggerInthecaseofmtowardsion, ^{ @autoreleasepool { - - [loggerNode->logger willTransltowardselumbes]; - }}); - } - } - - - - [loggers removeAllObjects]; -} - - -+ (void)lt_log:(BWGLumberCommunication *)logCommunictowardsion -{ - - - if (numProcessors > 1) - { - - - - - - - - for (BWGlumbesNode *loggerNode in loggers) - { - dispatch_group_async(loggingGroup, loggerNode->loggerInthecaseofmtowardsion, ^{ @autoreleasepool { - - [loggerNode->logger logCommunictowardsion:logCommunictowardsion]; - - }}); - } - - dispatch_group_wait(loggingGroup, DISPATCH_TIME_FOREVER); - } - else - { - - - for (BWGlumbesNode *loggerNode in loggers) - { - dispatch_sync(loggerNode->loggerInthecaseofmtowardsion, ^{ @autoreleasepool { - - [loggerNode->logger logCommunictowardsion:logCommunictowardsion]; - - }}); - } - } - - - - - - - - - - - - - - - - dispatch_semaphore_signal(queueSemaphore); -} - - -+ (void)lt_flush -{ - - - - - - for (BWGlumbesNode *loggerNode in loggers) - { - if ([loggerNode->logger respondsToSelector:@selector(flush)]) - { - dispatch_group_async(loggingGroup, loggerNode->loggerInthecaseofmtowardsion, ^{ @autoreleasepool { - - [loggerNode->logger flush]; - - }}); - } - } - - dispatch_group_wait(loggingGroup, DISPATCH_TIME_FOREVER); -} - -#pragma mark Utilities - -NSString *DDExtractFileNameWithoutExtension(const char *filePath, BOOL copy) -{ - if (filePath == NULL) return nil; - - char *lastSlash = NULL; - char *lastDot = NULL; - - char *p = (char *)filePath; - - while (*p != '\0') - { - if (*p == '/') - lastSlash = p; - else if (*p == '.') - lastDot = p; - - p++; - } - - char *subStr; - NSUInteger subLen; - - if (lastSlash) - { - if (lastDot) - { - - subStr = lastSlash + 1; - subLen = lastDot - subStr; - } - else - { - - subStr = lastSlash + 1; - subLen = p - subStr; - } - } - else - { - if (lastDot) - { - - subStr = (char *)filePath; - subLen = lastDot - subStr; - } - else - { - - subStr = (char *)filePath; - subLen = p - subStr; - } - } - - if (copy) - { - return [[NSString alloc] initWithBytes:subStr - length:subLen - encoding:NSUTF8StringEncoding]; - } - else - { - - - - - return [[NSString alloc] initWithBytesNoCopy:subStr - length:subLen - encoding:NSUTF8StringEncoding - freeWhenDone:NO]; - } -} - -@end - -#pragma mark - - -@implementation BWGlumbesNode - -- (id)initAboutlumbes:(id )aLogger loggerInthecaseofmtowardsion:(dispatch_queue_t)aLoggerQueue -{ - if ((self = [super init])) - { - logger = aLogger; - - if (aLoggerQueue) { - loggerInthecaseofmtowardsion = aLoggerQueue; - #if !OS_OBJECT_USE_OBJC - dispatch_retain(loggerInthecaseofmtowardsion); - #endif - } - } - return self; -} - -+ (BWGlumbesNode *)nodeAboutlumbes:(id )logger loggerInthecaseofmtowardsion:(dispatch_queue_t)loggerInthecaseofmtowardsion -{ - return [[BWGlumbesNode alloc] initAboutlumbes:logger loggerInthecaseofmtowardsion:loggerInthecaseofmtowardsion]; -} - -- (void)dealloc -{ - #if !OS_OBJECT_USE_OBJC - if (loggerInthecaseofmtowardsion) dispatch_release(loggerInthecaseofmtowardsion); - #endif -} - -@end - -#pragma mark - - -@implementation BWGLumberCommunication - -static char *dd_str_copy(const char *str) -{ - if (str == NULL) return NULL; - - size_t length = strlen(str); - char * result = malloc(length + 1); - strncpy(result, str, length); - result[length] = 0; - - return result; -} - -- (id)initAboutLumberMsg:(NSString *)msg - level:(int)level - flag:(int)flag - context:(int)context - file:(const char *)aFile - function:(const char *)aFunction - line:(int)line - tag:(id)aTag - options:(DDLogMessageOptions)optionsMask -{ - if ((self = [super init])) - { - logMsg = msg; - logLevel = level; - logFlag = flag; - logContext = context; - lineNumber = line; - tag = aTag; - options = optionsMask; - - if (options & DDLogMessageCopyFile) - file = dd_str_copy(aFile); - else - file = (char *)aFile; - - if (options & DDLogMessageCopyFunction) - function = dd_str_copy(aFunction); - else - function = (char *)aFunction; - - timestamp = [[NSDate alloc] init]; - - machThreadID = pthread_mach_thread_np(pthread_self()); - - #pragma clang diagnostic push - #pragma clang diagnostic ignored "-Wdeprecated-declarations" - - - - - - - - - - - - - dispatch_queue_t currentQueue = dispatch_get_current_queue(); - #pragma clang diagnostic pop - - queueLabel = dd_str_copy(dispatch_queue_get_label(currentQueue)); - - threadName = [[NSThread currentThread] name]; - } - return self; -} - -- (NSString *)threadID -{ - return [[NSString alloc] initWithFormat:@"%x", machThreadID]; -} - -- (NSString *)fileName -{ - return DDExtractFileNameWithoutExtension(file, NO); -} - -- (NSString *)methodName -{ - if (function == NULL) - return nil; - else - return [[NSString alloc] initWithUTF8String:function]; -} - -- (void)dealloc -{ - if (file && (options & DDLogMessageCopyFile)) - free(file); - - if (function && (options & DDLogMessageCopyFunction)) - free(function); - - if (queueLabel) - free(queueLabel); -} - -@end - -#pragma mark - - -@implementation BWGAbstractlumbes - -- (id)init -{ - if ((self = [super init])) - { - const char *loggerQueueName = NULL; - if ([self respondsToSelector:@selector(loggerConstitute)]) - { - loggerQueueName = [[self loggerConstitute] UTF8String]; - } - - loggerInthecaseofmtowardsion = dispatch_queue_create(loggerQueueName, NULL); - - - - - - - - - - - - - - - - void *key = (__bridge void *)self; - void *nonNullValue = (__bridge void *)self; - - dispatch_queue_set_specific(loggerInthecaseofmtowardsion, key, nonNullValue, NULL); - } - return self; -} - -- (void)dealloc -{ - #if !OS_OBJECT_USE_OBJC - if (loggerInthecaseofmtowardsion) dispatch_release(loggerInthecaseofmtowardsion); - #endif -} - -- (void)logCommunictowardsion:(BWGLumberCommunication *)logCommunictowardsion -{ - -} - -- (id )logInitialiseter -{ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - NSAssert(![self isOnGlobalLumbergingInthecaseofmtowardsion], @"Core architecture requirement failure"); - NSAssert(![self isOnInternentiretyumbesInthecaseofmtowardsion], @"MUST access ivar directly, NOT via self.* syntax."); - - dispatch_queue_t globalLoggingQueue = [BWGLumber loggingInthecaseofmtowardsion]; - - __block id result; - - dispatch_sync(globalLoggingQueue, ^{ - dispatch_sync(loggerInthecaseofmtowardsion, ^{ - result = initialiser; - }); - }); - - return result; -} - -- (void)setLumberInitialiseter:(id )logInitialiseter -{ - - - NSAssert(![self isOnGlobalLumbergingInthecaseofmtowardsion], @"Core architecture requirement failure"); - NSAssert(![self isOnInternentiretyumbesInthecaseofmtowardsion], @"MUST access ivar directly, NOT via self.* syntax."); - - dispatch_block_t block = ^{ @autoreleasepool { - - if (initialiser != logInitialiseter) - { - if ([initialiser respondsToSelector:@selector(willTransltowardseByvirtueoflumbes:)]) { - [initialiser willTransltowardseByvirtueoflumbes:self]; - } - - initialiser = logInitialiseter; - - if ([initialiser respondsToSelector:@selector(didAccelertowardseTolumbes:)]) { - [initialiser didAccelertowardseTolumbes:self]; - } - } - }}; - - dispatch_queue_t globalLoggingQueue = [BWGLumber loggingInthecaseofmtowardsion]; - - dispatch_async(globalLoggingQueue, ^{ - dispatch_async(loggerInthecaseofmtowardsion, block); - }); -} - -- (dispatch_queue_t)loggerInthecaseofmtowardsion -{ - return loggerInthecaseofmtowardsion; -} - -- (NSString *)loggerConstitute -{ - return NSStringFromClass([self class]); -} - -- (BOOL)isOnGlobalLumbergingInthecaseofmtowardsion -{ - return (dispatch_get_specific(GlobalLoggingQueueIdentityKey) != NULL); -} - -- (BOOL)isOnInternentiretyumbesInthecaseofmtowardsion -{ - void *key = (__bridge void *)self; - return (dispatch_get_specific(key) != NULL); -} - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGMKJYlumbes.h b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGMKJYlumbes.h deleted file mode 100755 index a30c0103..00000000 --- a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGMKJYlumbes.h +++ /dev/null @@ -1,66 +0,0 @@ -#import -#if TARGET_OS_IPHONE -#import -#else -#import -#endif - -#import "BWGLumber.h" - - - -@interface BWGMKJYlumbes : BWGAbstractlumbes -{ - NSCalendar *calendar; - NSUInteger calendarUnitFlags; - - NSString *appName; - char *app; - size_t appLen; - - NSString *processID; - char *pid; - size_t pidLen; - - BOOL colorsEnabled; - NSMutableArray *colorProfilesArray; - NSMutableDictionary *colorProfilesDict; -} - -+ (BWGMKJYlumbes *)sharedInstance; - - - - -@property (readwrite, assign) BOOL colorsEnabled; - - -#if TARGET_OS_IPHONE -- (void)setForegroundColor:(UIColor *)txtColor backgroundColor:(UIColor *)bgColor forFlag:(int)mask; -#else -- (void)setForegroundColor:(NSColor *)txtColor backgroundColor:(NSColor *)bgColor forFlag:(int)mask; -#endif - - -#if TARGET_OS_IPHONE -- (void)setForegroundColor:(UIColor *)txtColor backgroundColor:(UIColor *)bgColor forFlag:(int)mask context:(int)ctxt; -#else -- (void)setForegroundColor:(NSColor *)txtColor backgroundColor:(NSColor *)bgColor forFlag:(int)mask context:(int)ctxt; -#endif - - -#if TARGET_OS_IPHONE -- (void)setForegroundColor:(UIColor *)txtColor backgroundColor:(UIColor *)bgColor forTag:(id )tag; -#else -- (void)setForegroundColor:(NSColor *)txtColor backgroundColor:(NSColor *)bgColor forTag:(id )tag; -#endif - - -- (void)prohibititinctPrettifysInthecaseofFlag:(int)mask; -- (void)prohibititinctPrettifysInthecaseofFlag:(int)mask context:(int)context; -- (void)prohibititinctPrettifysInthecaseofCouple:(id )tag; -- (void)prohibititinctPrettifysInthecaseofEntiretymarkers; -- (void)prohibititinctPrettifysInthecaseofEntiretyCouples; -- (void)prohibititinctEntiretyPrettifys; - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGMKJYlumbes.m b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGMKJYlumbes.m deleted file mode 100755 index 962746a3..00000000 --- a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/BWGMKJYlumbes.m +++ /dev/null @@ -1,1404 +0,0 @@ -#import "BWGMKJYlumbes.h" - -#import -#import - - - -#if ! __has_feature(objc_arc) -#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). -#endif - - -#define LOG_LEVEL 2 - -#define NSLogError(frmt, ...) do{ if(LOG_LEVEL >= 1) NSLog((frmt), ##__VA_ARGS__); } while(0) -#define NSLogWarn(frmt, ...) do{ if(LOG_LEVEL >= 2) NSLog((frmt), ##__VA_ARGS__); } while(0) -#define NSLogInfo(frmt, ...) do{ if(LOG_LEVEL >= 3) NSLog((frmt), ##__VA_ARGS__); } while(0) -#define NSLogVerbose(frmt, ...) do{ if(LOG_LEVEL >= 4) NSLog((frmt), ##__VA_ARGS__); } while(0) - - -#define XCODE_COLORS_ESCAPE_SEQ "\033[" - -#define XCODE_COLORS_RESET_FG XCODE_COLORS_ESCAPE_SEQ "fg;" -#define XCODE_COLORS_RESET_BG XCODE_COLORS_ESCAPE_SEQ "bg;" -#define XCODE_COLORS_RESET XCODE_COLORS_ESCAPE_SEQ ";" - - -#if TARGET_OS_IPHONE - #define MakeColor(r, g, b) [UIColor colorWithRed:(r/255.0f) green:(g/255.0f) blue:(b/255.0f) alpha:1.0f] -#else - #define MakeColor(r, g, b) [NSColor colorWithCalibratedRed:(r/255.0f) green:(g/255.0f) blue:(b/255.0f) alpha:1.0f] -#endif - -#if TARGET_OS_IPHONE - #define OSColor UIColor -#else - #define OSColor NSColor -#endif - - -#define MAP_TO_TERMINAL_APP_COLORS 1 - - -@interface BWGMKJYlumbesColorProfile : NSObject { -@public - int mask; - int context; - - uint8_t fg_r; - uint8_t fg_g; - uint8_t fg_b; - - uint8_t bg_r; - uint8_t bg_g; - uint8_t bg_b; - - NSUInteger fgCodeIndex; - NSString *fgCodeRaw; - - NSUInteger bgCodeIndex; - NSString *bgCodeRaw; - - char fgCode[24]; - size_t fgCodeLen; - - char bgCode[24]; - size_t bgCodeLen; - - char resetCode[8]; - size_t resetCodeLen; -} - -- (id)initAboutInthecaseofegroundPrettify:(OSColor *)fgColor backgroundColor:(OSColor *)bgColor flag:(int)mask context:(int)ctxt; - -@end - -#pragma mark - - -@implementation BWGMKJYlumbes - -static BOOL isaColorTTY; -static BOOL isaColor256TTY; -static BOOL isaXcodeColorTTY; - -static NSArray *codes_fg = nil; -static NSArray *codes_bg = nil; -static NSArray *colors = nil; - -static BWGMKJYlumbes *sharedInstance; - - -+ (void)initialize_colors_16 -{ - if (codes_fg || codes_bg || colors) return; - - NSMutableArray *m_codes_fg = [NSMutableArray arrayWithCapacity:16]; - NSMutableArray *m_codes_bg = [NSMutableArray arrayWithCapacity:16]; - NSMutableArray *m_colors = [NSMutableArray arrayWithCapacity:16]; - - - - - - - [m_codes_fg addObject:@"30m"]; - [m_codes_fg addObject:@"31m"]; - [m_codes_fg addObject:@"32m"]; - [m_codes_fg addObject:@"33m"]; - [m_codes_fg addObject:@"34m"]; - [m_codes_fg addObject:@"35m"]; - [m_codes_fg addObject:@"36m"]; - [m_codes_fg addObject:@"37m"]; - [m_codes_fg addObject:@"1;30m"]; - [m_codes_fg addObject:@"1;31m"]; - [m_codes_fg addObject:@"1;32m"]; - [m_codes_fg addObject:@"1;33m"]; - [m_codes_fg addObject:@"1;34m"]; - [m_codes_fg addObject:@"1;35m"]; - [m_codes_fg addObject:@"1;36m"]; - [m_codes_fg addObject:@"1;37m"]; - - [m_codes_bg addObject:@"40m"]; - [m_codes_bg addObject:@"41m"]; - [m_codes_bg addObject:@"42m"]; - [m_codes_bg addObject:@"43m"]; - [m_codes_bg addObject:@"44m"]; - [m_codes_bg addObject:@"45m"]; - [m_codes_bg addObject:@"46m"]; - [m_codes_bg addObject:@"47m"]; - [m_codes_bg addObject:@"1;40m"]; - [m_codes_bg addObject:@"1;41m"]; - [m_codes_bg addObject:@"1;42m"]; - [m_codes_bg addObject:@"1;43m"]; - [m_codes_bg addObject:@"1;44m"]; - [m_codes_bg addObject:@"1;45m"]; - [m_codes_bg addObject:@"1;46m"]; - [m_codes_bg addObject:@"1;47m"]; - -#if MAP_TO_TERMINAL_APP_COLORS - - - - - - [m_colors addObject:MakeColor( 0, 0, 0)]; - [m_colors addObject:MakeColor(194, 54, 33)]; - [m_colors addObject:MakeColor( 37, 188, 36)]; - [m_colors addObject:MakeColor(173, 173, 39)]; - [m_colors addObject:MakeColor( 73, 46, 225)]; - [m_colors addObject:MakeColor(211, 56, 211)]; - [m_colors addObject:MakeColor( 51, 187, 200)]; - [m_colors addObject:MakeColor(203, 204, 205)]; - [m_colors addObject:MakeColor(129, 131, 131)]; - [m_colors addObject:MakeColor(252, 57, 31)]; - [m_colors addObject:MakeColor( 49, 231, 34)]; - [m_colors addObject:MakeColor(234, 236, 35)]; - [m_colors addObject:MakeColor( 88, 51, 255)]; - [m_colors addObject:MakeColor(249, 53, 248)]; - [m_colors addObject:MakeColor( 20, 240, 240)]; - [m_colors addObject:MakeColor(233, 235, 235)]; - -#else - - - - - - [m_colors addObject:MakeColor( 0, 0, 0)]; - [m_colors addObject:MakeColor(205, 0, 0)]; - [m_colors addObject:MakeColor( 0, 205, 0)]; - [m_colors addObject:MakeColor(205, 205, 0)]; - [m_colors addObject:MakeColor( 0, 0, 238)]; - [m_colors addObject:MakeColor(205, 0, 205)]; - [m_colors addObject:MakeColor( 0, 205, 205)]; - [m_colors addObject:MakeColor(229, 229, 229)]; - [m_colors addObject:MakeColor(127, 127, 127)]; - [m_colors addObject:MakeColor(255, 0, 0)]; - [m_colors addObject:MakeColor( 0, 255, 0)]; - [m_colors addObject:MakeColor(255, 255, 0)]; - [m_colors addObject:MakeColor( 92, 92, 255)]; - [m_colors addObject:MakeColor(255, 0, 255)]; - [m_colors addObject:MakeColor( 0, 255, 255)]; - [m_colors addObject:MakeColor(255, 255, 255)]; - -#endif - - codes_fg = [m_codes_fg copy]; - codes_bg = [m_codes_bg copy]; - colors = [m_colors copy]; - - NSAssert([codes_fg count] == [codes_bg count], @"Invalid colors/codes array(s)"); - NSAssert([codes_fg count] == [colors count], @"Invalid colors/codes array(s)"); -} - - -+ (void)initialize_colors_256 -{ - if (codes_fg || codes_bg || colors) return; - - NSMutableArray *m_codes_fg = [NSMutableArray arrayWithCapacity:(256-16)]; - NSMutableArray *m_codes_bg = [NSMutableArray arrayWithCapacity:(256-16)]; - NSMutableArray *m_colors = [NSMutableArray arrayWithCapacity:(256-16)]; - - #if MAP_TO_TERMINAL_APP_COLORS - - - - - - - - - - - - - - - - - - - - - - - - - - - - [m_colors addObject:MakeColor( 47, 49, 49)]; - [m_colors addObject:MakeColor( 60, 42, 144)]; - [m_colors addObject:MakeColor( 66, 44, 183)]; - [m_colors addObject:MakeColor( 73, 46, 222)]; - [m_colors addObject:MakeColor( 81, 50, 253)]; - [m_colors addObject:MakeColor( 88, 51, 255)]; - - [m_colors addObject:MakeColor( 42, 128, 37)]; - [m_colors addObject:MakeColor( 42, 127, 128)]; - [m_colors addObject:MakeColor( 44, 126, 169)]; - [m_colors addObject:MakeColor( 56, 125, 209)]; - [m_colors addObject:MakeColor( 59, 124, 245)]; - [m_colors addObject:MakeColor( 66, 123, 255)]; - - [m_colors addObject:MakeColor( 51, 163, 41)]; - [m_colors addObject:MakeColor( 39, 162, 121)]; - [m_colors addObject:MakeColor( 42, 161, 162)]; - [m_colors addObject:MakeColor( 53, 160, 202)]; - [m_colors addObject:MakeColor( 45, 159, 240)]; - [m_colors addObject:MakeColor( 58, 158, 255)]; - - [m_colors addObject:MakeColor( 31, 196, 37)]; - [m_colors addObject:MakeColor( 48, 196, 115)]; - [m_colors addObject:MakeColor( 39, 195, 155)]; - [m_colors addObject:MakeColor( 49, 195, 195)]; - [m_colors addObject:MakeColor( 32, 194, 235)]; - [m_colors addObject:MakeColor( 53, 193, 255)]; - - [m_colors addObject:MakeColor( 50, 229, 35)]; - [m_colors addObject:MakeColor( 40, 229, 109)]; - [m_colors addObject:MakeColor( 27, 229, 149)]; - [m_colors addObject:MakeColor( 49, 228, 189)]; - [m_colors addObject:MakeColor( 33, 228, 228)]; - [m_colors addObject:MakeColor( 53, 227, 255)]; - - [m_colors addObject:MakeColor( 27, 254, 30)]; - [m_colors addObject:MakeColor( 30, 254, 103)]; - [m_colors addObject:MakeColor( 45, 254, 143)]; - [m_colors addObject:MakeColor( 38, 253, 182)]; - [m_colors addObject:MakeColor( 38, 253, 222)]; - [m_colors addObject:MakeColor( 42, 253, 252)]; - - [m_colors addObject:MakeColor(140, 48, 40)]; - [m_colors addObject:MakeColor(136, 51, 136)]; - [m_colors addObject:MakeColor(135, 52, 177)]; - [m_colors addObject:MakeColor(134, 52, 217)]; - [m_colors addObject:MakeColor(135, 56, 248)]; - [m_colors addObject:MakeColor(134, 53, 255)]; - - [m_colors addObject:MakeColor(125, 125, 38)]; - [m_colors addObject:MakeColor(124, 125, 125)]; - [m_colors addObject:MakeColor(122, 124, 166)]; - [m_colors addObject:MakeColor(123, 124, 207)]; - [m_colors addObject:MakeColor(123, 122, 247)]; - [m_colors addObject:MakeColor(124, 121, 255)]; - - [m_colors addObject:MakeColor(119, 160, 35)]; - [m_colors addObject:MakeColor(117, 160, 120)]; - [m_colors addObject:MakeColor(117, 160, 160)]; - [m_colors addObject:MakeColor(115, 159, 201)]; - [m_colors addObject:MakeColor(116, 158, 240)]; - [m_colors addObject:MakeColor(117, 157, 255)]; - - [m_colors addObject:MakeColor(113, 195, 39)]; - [m_colors addObject:MakeColor(110, 194, 114)]; - [m_colors addObject:MakeColor(111, 194, 154)]; - [m_colors addObject:MakeColor(108, 194, 194)]; - [m_colors addObject:MakeColor(109, 193, 234)]; - [m_colors addObject:MakeColor(108, 192, 255)]; - - [m_colors addObject:MakeColor(105, 228, 30)]; - [m_colors addObject:MakeColor(103, 228, 109)]; - [m_colors addObject:MakeColor(105, 228, 148)]; - [m_colors addObject:MakeColor(100, 227, 188)]; - [m_colors addObject:MakeColor( 99, 227, 227)]; - [m_colors addObject:MakeColor( 99, 226, 253)]; - - [m_colors addObject:MakeColor( 92, 253, 34)]; - [m_colors addObject:MakeColor( 96, 253, 103)]; - [m_colors addObject:MakeColor( 97, 253, 142)]; - [m_colors addObject:MakeColor( 88, 253, 182)]; - [m_colors addObject:MakeColor( 93, 253, 221)]; - [m_colors addObject:MakeColor( 88, 254, 251)]; - - [m_colors addObject:MakeColor(177, 53, 34)]; - [m_colors addObject:MakeColor(174, 54, 131)]; - [m_colors addObject:MakeColor(172, 55, 172)]; - [m_colors addObject:MakeColor(171, 57, 213)]; - [m_colors addObject:MakeColor(170, 55, 249)]; - [m_colors addObject:MakeColor(170, 57, 255)]; - - [m_colors addObject:MakeColor(165, 123, 37)]; - [m_colors addObject:MakeColor(163, 123, 123)]; - [m_colors addObject:MakeColor(162, 123, 164)]; - [m_colors addObject:MakeColor(161, 122, 205)]; - [m_colors addObject:MakeColor(161, 121, 241)]; - [m_colors addObject:MakeColor(161, 121, 255)]; - - [m_colors addObject:MakeColor(158, 159, 33)]; - [m_colors addObject:MakeColor(157, 158, 118)]; - [m_colors addObject:MakeColor(157, 158, 159)]; - [m_colors addObject:MakeColor(155, 157, 199)]; - [m_colors addObject:MakeColor(155, 157, 239)]; - [m_colors addObject:MakeColor(154, 156, 255)]; - - [m_colors addObject:MakeColor(152, 193, 40)]; - [m_colors addObject:MakeColor(151, 193, 113)]; - [m_colors addObject:MakeColor(150, 193, 153)]; - [m_colors addObject:MakeColor(150, 192, 193)]; - [m_colors addObject:MakeColor(148, 192, 232)]; - [m_colors addObject:MakeColor(149, 191, 253)]; - - [m_colors addObject:MakeColor(146, 227, 28)]; - [m_colors addObject:MakeColor(144, 227, 108)]; - [m_colors addObject:MakeColor(144, 227, 147)]; - [m_colors addObject:MakeColor(144, 227, 187)]; - [m_colors addObject:MakeColor(142, 226, 227)]; - [m_colors addObject:MakeColor(142, 225, 252)]; - - [m_colors addObject:MakeColor(138, 253, 36)]; - [m_colors addObject:MakeColor(137, 253, 102)]; - [m_colors addObject:MakeColor(136, 253, 141)]; - [m_colors addObject:MakeColor(138, 254, 181)]; - [m_colors addObject:MakeColor(135, 255, 220)]; - [m_colors addObject:MakeColor(133, 255, 250)]; - - [m_colors addObject:MakeColor(214, 57, 30)]; - [m_colors addObject:MakeColor(211, 59, 126)]; - [m_colors addObject:MakeColor(209, 57, 168)]; - [m_colors addObject:MakeColor(208, 55, 208)]; - [m_colors addObject:MakeColor(207, 58, 247)]; - [m_colors addObject:MakeColor(206, 61, 255)]; - - [m_colors addObject:MakeColor(204, 121, 32)]; - [m_colors addObject:MakeColor(202, 121, 121)]; - [m_colors addObject:MakeColor(201, 121, 161)]; - [m_colors addObject:MakeColor(200, 120, 202)]; - [m_colors addObject:MakeColor(200, 120, 241)]; - [m_colors addObject:MakeColor(198, 119, 255)]; - - [m_colors addObject:MakeColor(198, 157, 37)]; - [m_colors addObject:MakeColor(196, 157, 116)]; - [m_colors addObject:MakeColor(195, 156, 157)]; - [m_colors addObject:MakeColor(195, 156, 197)]; - [m_colors addObject:MakeColor(194, 155, 236)]; - [m_colors addObject:MakeColor(193, 155, 255)]; - - [m_colors addObject:MakeColor(191, 192, 36)]; - [m_colors addObject:MakeColor(190, 191, 112)]; - [m_colors addObject:MakeColor(189, 191, 152)]; - [m_colors addObject:MakeColor(189, 191, 191)]; - [m_colors addObject:MakeColor(188, 190, 230)]; - [m_colors addObject:MakeColor(187, 190, 253)]; - - [m_colors addObject:MakeColor(185, 226, 28)]; - [m_colors addObject:MakeColor(184, 226, 106)]; - [m_colors addObject:MakeColor(183, 225, 146)]; - [m_colors addObject:MakeColor(183, 225, 186)]; - [m_colors addObject:MakeColor(182, 225, 225)]; - [m_colors addObject:MakeColor(181, 224, 252)]; - - [m_colors addObject:MakeColor(178, 255, 35)]; - [m_colors addObject:MakeColor(178, 255, 101)]; - [m_colors addObject:MakeColor(177, 254, 141)]; - [m_colors addObject:MakeColor(176, 254, 180)]; - [m_colors addObject:MakeColor(176, 254, 220)]; - [m_colors addObject:MakeColor(175, 253, 249)]; - - [m_colors addObject:MakeColor(247, 56, 30)]; - [m_colors addObject:MakeColor(245, 57, 122)]; - [m_colors addObject:MakeColor(243, 59, 163)]; - [m_colors addObject:MakeColor(244, 60, 204)]; - [m_colors addObject:MakeColor(242, 59, 241)]; - [m_colors addObject:MakeColor(240, 55, 255)]; - - [m_colors addObject:MakeColor(241, 119, 36)]; - [m_colors addObject:MakeColor(240, 120, 118)]; - [m_colors addObject:MakeColor(238, 119, 158)]; - [m_colors addObject:MakeColor(237, 119, 199)]; - [m_colors addObject:MakeColor(237, 118, 238)]; - [m_colors addObject:MakeColor(236, 118, 255)]; - - [m_colors addObject:MakeColor(235, 154, 36)]; - [m_colors addObject:MakeColor(235, 154, 114)]; - [m_colors addObject:MakeColor(234, 154, 154)]; - [m_colors addObject:MakeColor(232, 154, 194)]; - [m_colors addObject:MakeColor(232, 153, 234)]; - [m_colors addObject:MakeColor(232, 153, 255)]; - - [m_colors addObject:MakeColor(230, 190, 30)]; - [m_colors addObject:MakeColor(229, 189, 110)]; - [m_colors addObject:MakeColor(228, 189, 150)]; - [m_colors addObject:MakeColor(227, 189, 190)]; - [m_colors addObject:MakeColor(227, 189, 229)]; - [m_colors addObject:MakeColor(226, 188, 255)]; - - [m_colors addObject:MakeColor(224, 224, 35)]; - [m_colors addObject:MakeColor(223, 224, 105)]; - [m_colors addObject:MakeColor(222, 224, 144)]; - [m_colors addObject:MakeColor(222, 223, 184)]; - [m_colors addObject:MakeColor(222, 223, 224)]; - [m_colors addObject:MakeColor(220, 223, 253)]; - - [m_colors addObject:MakeColor(217, 253, 28)]; - [m_colors addObject:MakeColor(217, 253, 99)]; - [m_colors addObject:MakeColor(216, 252, 139)]; - [m_colors addObject:MakeColor(216, 252, 179)]; - [m_colors addObject:MakeColor(215, 252, 218)]; - [m_colors addObject:MakeColor(215, 251, 250)]; - - [m_colors addObject:MakeColor(255, 61, 30)]; - [m_colors addObject:MakeColor(255, 60, 118)]; - [m_colors addObject:MakeColor(255, 58, 159)]; - [m_colors addObject:MakeColor(255, 56, 199)]; - [m_colors addObject:MakeColor(255, 55, 238)]; - [m_colors addObject:MakeColor(255, 59, 255)]; - - [m_colors addObject:MakeColor(255, 117, 29)]; - [m_colors addObject:MakeColor(255, 117, 115)]; - [m_colors addObject:MakeColor(255, 117, 155)]; - [m_colors addObject:MakeColor(255, 117, 195)]; - [m_colors addObject:MakeColor(255, 116, 235)]; - [m_colors addObject:MakeColor(254, 116, 255)]; - - [m_colors addObject:MakeColor(255, 152, 27)]; - [m_colors addObject:MakeColor(255, 152, 111)]; - [m_colors addObject:MakeColor(254, 152, 152)]; - [m_colors addObject:MakeColor(255, 152, 192)]; - [m_colors addObject:MakeColor(254, 151, 231)]; - [m_colors addObject:MakeColor(253, 151, 253)]; - - [m_colors addObject:MakeColor(255, 187, 33)]; - [m_colors addObject:MakeColor(253, 187, 107)]; - [m_colors addObject:MakeColor(252, 187, 148)]; - [m_colors addObject:MakeColor(253, 187, 187)]; - [m_colors addObject:MakeColor(254, 187, 227)]; - [m_colors addObject:MakeColor(252, 186, 252)]; - - [m_colors addObject:MakeColor(252, 222, 34)]; - [m_colors addObject:MakeColor(251, 222, 103)]; - [m_colors addObject:MakeColor(251, 222, 143)]; - [m_colors addObject:MakeColor(250, 222, 182)]; - [m_colors addObject:MakeColor(251, 221, 222)]; - [m_colors addObject:MakeColor(252, 221, 252)]; - - [m_colors addObject:MakeColor(251, 252, 15)]; - [m_colors addObject:MakeColor(251, 252, 97)]; - [m_colors addObject:MakeColor(249, 252, 137)]; - [m_colors addObject:MakeColor(247, 252, 177)]; - [m_colors addObject:MakeColor(247, 253, 217)]; - [m_colors addObject:MakeColor(254, 255, 255)]; - - - - [m_colors addObject:MakeColor( 52, 53, 53)]; - [m_colors addObject:MakeColor( 57, 58, 59)]; - [m_colors addObject:MakeColor( 66, 67, 67)]; - [m_colors addObject:MakeColor( 75, 76, 76)]; - [m_colors addObject:MakeColor( 83, 85, 85)]; - [m_colors addObject:MakeColor( 92, 93, 94)]; - - [m_colors addObject:MakeColor(101, 102, 102)]; - [m_colors addObject:MakeColor(109, 111, 111)]; - [m_colors addObject:MakeColor(118, 119, 119)]; - [m_colors addObject:MakeColor(126, 127, 128)]; - [m_colors addObject:MakeColor(134, 136, 136)]; - [m_colors addObject:MakeColor(143, 144, 145)]; - - [m_colors addObject:MakeColor(151, 152, 153)]; - [m_colors addObject:MakeColor(159, 161, 161)]; - [m_colors addObject:MakeColor(167, 169, 169)]; - [m_colors addObject:MakeColor(176, 177, 177)]; - [m_colors addObject:MakeColor(184, 185, 186)]; - [m_colors addObject:MakeColor(192, 193, 194)]; - - [m_colors addObject:MakeColor(200, 201, 202)]; - [m_colors addObject:MakeColor(208, 209, 210)]; - [m_colors addObject:MakeColor(216, 218, 218)]; - [m_colors addObject:MakeColor(224, 226, 226)]; - [m_colors addObject:MakeColor(232, 234, 234)]; - [m_colors addObject:MakeColor(240, 242, 242)]; - - - - int index = 16; - - while (index < 256) - { - [m_codes_fg addObject:[NSString stringWithFormat:@"38;5;%dm", index]]; - [m_codes_bg addObject:[NSString stringWithFormat:@"48;5;%dm", index]]; - - index++; - } - - #else - - - - - - - - - - - - - - - - - - - - - int index = 16; - - int r; - int g; - int b; - - int ri; - int gi; - int bi; - - - - int r = 0; - int g = 0; - int b = 0; - - for (ri = 0; ri < 6; ri++) - { - r = (ri == 0) ? 0 : 95 + (40 * (ri - 1)); - - for (gi = 0; gi < 6; gi++) - { - g = (gi == 0) ? 0 : 95 + (40 * (gi - 1)); - - for (bi = 0; bi < 6; bi++) - { - b = (bi == 0) ? 0 : 95 + (40 * (bi - 1)); - - [m_codes_fg addObject:[NSString stringWithFormat:@"38;5;%dm", index]]; - [m_codes_bg addObject:[NSString stringWithFormat:@"48;5;%dm", index]]; - [m_colors addObject:MakeColor(r, g, b)]; - - index++; - } - } - } - - - - r = 8; - g = 8; - b = 8; - - while (index < 256) - { - [m_codes_fg addObject:[NSString stringWithFormat:@"38;5;%dm", index]]; - [m_codes_bg addObject:[NSString stringWithFormat:@"48;5;%dm", index]]; - [m_colors addObject:MakeColor(r, g, b)]; - - r += 10; - g += 10; - b += 10; - - index++; - } - - #endif - - codes_fg = [m_codes_fg copy]; - codes_bg = [m_codes_bg copy]; - colors = [m_colors copy]; - - NSAssert([codes_fg count] == [codes_bg count], @"Invalid colors/codes array(s)"); - NSAssert([codes_fg count] == [colors count], @"Invalid colors/codes array(s)"); -} - -+ (void)getRed:(CGFloat *)rPtr green:(CGFloat *)gPtr blue:(CGFloat *)bPtr fromColor:(OSColor *)color -{ - #if TARGET_OS_IPHONE - - - - if ([color respondsToSelector:@selector(getRed:green:blue:alpha:)]) - { - [color getRed:rPtr green:gPtr blue:bPtr alpha:NULL]; - } - else - { - - - - CGColorSpaceRef rgbColorSpace = CGColorSpaceCreateDeviceRGB(); - - unsigned char pixel[4]; - CGContextRef context = CGBitmapContextCreate(&pixel, 1, 1, 8, 4, rgbColorSpace, kCGImageAlphaNoneSkipLast); - - CGContextSetFillColorWithColor(context, [color CGColor]); - CGContextFillRect(context, CGRectMake(0, 0, 1, 1)); - - if (rPtr) { *rPtr = pixel[0] / 255.0f; } - if (gPtr) { *gPtr = pixel[1] / 255.0f; } - if (bPtr) { *bPtr = pixel[2] / 255.0f; } - - CGContextRelease(context); - CGColorSpaceRelease(rgbColorSpace); - } - - #else - - - - [color getRed:rPtr green:gPtr blue:bPtr alpha:NULL]; - - #endif -} - - -+ (NSUInteger)cryptogramIndictowardsrixInthecaseofPrettify:(OSColor *)inColor -{ - CGFloat inR, inG, inB; - [self getRed:&inR green:&inG blue:&inB fromColor:inColor]; - - NSUInteger bestIndex = 0; - CGFloat lowestDistance = 100.0f; - - NSUInteger i = 0; - for (OSColor *color in colors) - { - - - CGFloat r, g, b; - [self getRed:&r green:&g blue:&b fromColor:color]; - - #if CGFLOAT_IS_DOUBLE - CGFloat distance = sqrt(pow(r-inR, 2.0) + pow(g-inG, 2.0) + pow(b-inB, 2.0)); - #else - CGFloat distance = sqrtf(powf(r-inR, 2.0f) + powf(g-inG, 2.0f) + powf(b-inB, 2.0f)); - #endif - - - ((unsigned long)i, inR, inG, inB, r, g, b, distance); - - if (distance < lowestDistance) - { - bestIndex = i; - lowestDistance = distance; - - - } - - i++; - } - - return bestIndex; -} - - -+ (void)initialize -{ - static BOOL initialized = NO; - if (!initialized) - { - initialized = YES; - - char *term = getenv("TERM"); - if (term) - { - if (strcasestr(term, "color") != NULL) - { - isaColorTTY = YES; - isaColor256TTY = (strcasestr(term, "256") != NULL); - - if (isaColor256TTY) - [self initialize_colors_256]; - else - [self initialize_colors_16]; - } - } - else - { - - - - - - char *xcode_colors = getenv("XcodeColors"); - if (xcode_colors && (strcmp(xcode_colors, "YES") == 0)) - { - isaXcodeColorTTY = YES; - } - } - - - sharedInstance = [[BWGMKJYlumbes alloc] init]; - } -} - -+ (BWGMKJYlumbes *)sharedInstance -{ - return sharedInstance; -} - -- (id)init -{ - if (sharedInstance != nil) - { - return nil; - } - - if ((self = [super init])) - { - calendar = [NSCalendar autoupdatingCurrentCalendar]; - - calendarUnitFlags = 0; - calendarUnitFlags |= NSYearCalendarUnit; - calendarUnitFlags |= NSMonthCalendarUnit; - calendarUnitFlags |= NSDayCalendarUnit; - calendarUnitFlags |= NSHourCalendarUnit; - calendarUnitFlags |= NSMinuteCalendarUnit; - calendarUnitFlags |= NSSecondCalendarUnit; - - - - appName = [[NSProcessInfo processInfo] processName]; - - appLen = [appName lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; - app = (char *)malloc(appLen + 1); - - [appName getCString:app maxLength:(appLen+1) encoding:NSUTF8StringEncoding]; - - - - processID = [NSString stringWithFormat:@"%i", (int)getpid()]; - - pidLen = [processID lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; - pid = (char *)malloc(pidLen + 1); - - [processID getCString:pid maxLength:(pidLen+1) encoding:NSUTF8StringEncoding]; - - - - colorsEnabled = NO; - colorProfilesArray = [[NSMutableArray alloc] initWithCapacity:8]; - colorProfilesDict = [[NSMutableDictionary alloc] initWithCapacity:8]; - } - return self; -} - -- (void)chamberDeficiencyPrettifyProaccurtowardses -{ - [self setForegroundColor:MakeColor(214, 57, 30) backgroundColor:nil forFlag:LOG_FLAG_ERROR]; - [self setForegroundColor:MakeColor(204, 121, 32) backgroundColor:nil forFlag:LOG_FLAG_WARN]; -} - -- (BOOL)colorsEnabled -{ - - - - - - - - - - - NSAssert(![self isOnGlobalLumbergingInthecaseofmtowardsion], @"Core architecture requirement failure"); - NSAssert(![self isOnInternentiretyumbesInthecaseofmtowardsion], @"MUST access ivar directly, NOT via self.* syntax."); - - dispatch_queue_t globalLoggingQueue = [BWGLumber loggingInthecaseofmtowardsion]; - - __block BOOL result; - - dispatch_sync(globalLoggingQueue, ^{ - dispatch_sync(loggerInthecaseofmtowardsion, ^{ - result = colorsEnabled; - }); - }); - - return result; -} - -- (void)setColorsEnabled:(BOOL)newColorsEnabled -{ - dispatch_block_t block = ^{ @autoreleasepool { - - colorsEnabled = newColorsEnabled; - - if ([colorProfilesArray count] == 0) { - [self chamberDeficiencyPrettifyProaccurtowardses]; - } - }}; - - - - - - - - - - - - NSAssert(![self isOnGlobalLumbergingInthecaseofmtowardsion], @"Core architecture requirement failure"); - NSAssert(![self isOnInternentiretyumbesInthecaseofmtowardsion], @"MUST access ivar directly, NOT via self.* syntax."); - - dispatch_queue_t globalLoggingQueue = [BWGLumber loggingInthecaseofmtowardsion]; - - dispatch_async(globalLoggingQueue, ^{ - dispatch_async(loggerInthecaseofmtowardsion, block); - }); -} - -- (void)setForegroundColor:(OSColor *)txtColor backgroundColor:(OSColor *)bgColor forFlag:(int)mask -{ - [self setForegroundColor:txtColor backgroundColor:bgColor forFlag:mask context:0]; -} - -- (void)setForegroundColor:(OSColor *)txtColor backgroundColor:(OSColor *)bgColor forFlag:(int)mask context:(int)ctxt -{ - dispatch_block_t block = ^{ @autoreleasepool { - - BWGMKJYlumbesColorProfile *newColorProfile = - [[BWGMKJYlumbesColorProfile alloc] initAboutInthecaseofegroundPrettify:txtColor - backgroundColor:bgColor - flag:mask - context:ctxt]; - - - - NSUInteger i = 0; - for (BWGMKJYlumbesColorProfile *colorProfile in colorProfilesArray) - { - if ((colorProfile->mask == mask) && (colorProfile->context == ctxt)) - { - break; - } - - i++; - } - - if (i < [colorProfilesArray count]) - [colorProfilesArray replaceObjectAtIndex:i withObject:newColorProfile]; - else - [colorProfilesArray addObject:newColorProfile]; - }}; - - - - - if ([self isOnInternentiretyumbesInthecaseofmtowardsion]) - { - block(); - } - else - { - dispatch_queue_t globalLoggingQueue = [BWGLumber loggingInthecaseofmtowardsion]; - NSAssert(![self isOnGlobalLumbergingInthecaseofmtowardsion], @"Core architecture requirement failure"); - - dispatch_async(globalLoggingQueue, ^{ - dispatch_async(loggerInthecaseofmtowardsion, block); - }); - } -} - -- (void)setForegroundColor:(OSColor *)txtColor backgroundColor:(OSColor *)bgColor forTag:(id )tag -{ - NSAssert([(id )tag conformsToProtocol:@protocol(NSCopying)], @"Invalid tag"); - - dispatch_block_t block = ^{ @autoreleasepool { - - BWGMKJYlumbesColorProfile *newColorProfile = - [[BWGMKJYlumbesColorProfile alloc] initAboutInthecaseofegroundPrettify:txtColor - backgroundColor:bgColor - flag:0 - context:0]; - - - - [colorProfilesDict setObject:newColorProfile forKey:tag]; - }}; - - - - - if ([self isOnInternentiretyumbesInthecaseofmtowardsion]) - { - block(); - } - else - { - dispatch_queue_t globalLoggingQueue = [BWGLumber loggingInthecaseofmtowardsion]; - NSAssert(![self isOnGlobalLumbergingInthecaseofmtowardsion], @"Core architecture requirement failure"); - - dispatch_async(globalLoggingQueue, ^{ - dispatch_async(loggerInthecaseofmtowardsion, block); - }); - } -} - -- (void)prohibititinctPrettifysInthecaseofFlag:(int)mask -{ - [self prohibititinctPrettifysInthecaseofFlag:mask context:0]; -} - -- (void)prohibititinctPrettifysInthecaseofFlag:(int)mask context:(int)context -{ - dispatch_block_t block = ^{ @autoreleasepool { - - NSUInteger i = 0; - for (BWGMKJYlumbesColorProfile *colorProfile in colorProfilesArray) - { - if ((colorProfile->mask == mask) && (colorProfile->context == context)) - { - break; - } - - i++; - } - - if (i < [colorProfilesArray count]) - { - [colorProfilesArray removeObjectAtIndex:i]; - } - }}; - - - - - if ([self isOnInternentiretyumbesInthecaseofmtowardsion]) - { - block(); - } - else - { - dispatch_queue_t globalLoggingQueue = [BWGLumber loggingInthecaseofmtowardsion]; - NSAssert(![self isOnGlobalLumbergingInthecaseofmtowardsion], @"Core architecture requirement failure"); - - dispatch_async(globalLoggingQueue, ^{ - dispatch_async(loggerInthecaseofmtowardsion, block); - }); - } -} - -- (void)prohibititinctPrettifysInthecaseofCouple:(id )tag -{ - NSAssert([(id )tag conformsToProtocol:@protocol(NSCopying)], @"Invalid tag"); - - dispatch_block_t block = ^{ @autoreleasepool { - - [colorProfilesDict removeObjectForKey:tag]; - }}; - - - - - if ([self isOnInternentiretyumbesInthecaseofmtowardsion]) - { - block(); - } - else - { - dispatch_queue_t globalLoggingQueue = [BWGLumber loggingInthecaseofmtowardsion]; - NSAssert(![self isOnGlobalLumbergingInthecaseofmtowardsion], @"Core architecture requirement failure"); - - dispatch_async(globalLoggingQueue, ^{ - dispatch_async(loggerInthecaseofmtowardsion, block); - }); - } -} - -- (void)prohibititinctPrettifysInthecaseofEntiretymarkers -{ - dispatch_block_t block = ^{ @autoreleasepool { - - [colorProfilesArray removeAllObjects]; - }}; - - - - - if ([self isOnInternentiretyumbesInthecaseofmtowardsion]) - { - block(); - } - else - { - dispatch_queue_t globalLoggingQueue = [BWGLumber loggingInthecaseofmtowardsion]; - NSAssert(![self isOnGlobalLumbergingInthecaseofmtowardsion], @"Core architecture requirement failure"); - - dispatch_async(globalLoggingQueue, ^{ - dispatch_async(loggerInthecaseofmtowardsion, block); - }); - } -} - -- (void)prohibititinctPrettifysInthecaseofEntiretyCouples -{ - dispatch_block_t block = ^{ @autoreleasepool { - - [colorProfilesDict removeAllObjects]; - }}; - - - - - if ([self isOnInternentiretyumbesInthecaseofmtowardsion]) - { - block(); - } - else - { - dispatch_queue_t globalLoggingQueue = [BWGLumber loggingInthecaseofmtowardsion]; - NSAssert(![self isOnGlobalLumbergingInthecaseofmtowardsion], @"Core architecture requirement failure"); - - dispatch_async(globalLoggingQueue, ^{ - dispatch_async(loggerInthecaseofmtowardsion, block); - }); - } -} - -- (void)prohibititinctEntiretyPrettifys -{ - dispatch_block_t block = ^{ @autoreleasepool { - - [colorProfilesArray removeAllObjects]; - [colorProfilesDict removeAllObjects]; - }}; - - - - - if ([self isOnInternentiretyumbesInthecaseofmtowardsion]) - { - block(); - } - else - { - dispatch_queue_t globalLoggingQueue = [BWGLumber loggingInthecaseofmtowardsion]; - NSAssert(![self isOnGlobalLumbergingInthecaseofmtowardsion], @"Core architecture requirement failure"); - - dispatch_async(globalLoggingQueue, ^{ - dispatch_async(loggerInthecaseofmtowardsion, block); - }); - } -} - -- (void)logCommunictowardsion:(BWGLumberCommunication *)logCommunictowardsion -{ - NSString *logMsg = logCommunictowardsion->logMsg; - BOOL isFormatted = NO; - - if (initialiser) - { - logMsg = [initialiser formtowardsLumberCommunictowardsion:logCommunictowardsion]; - isFormatted = logMsg != logCommunictowardsion->logMsg; - } - - if (logMsg) - { - - - BWGMKJYlumbesColorProfile *colorProfile = nil; - - if (colorsEnabled) - { - if (logCommunictowardsion->tag) - { - colorProfile = [colorProfilesDict objectForKey:logCommunictowardsion->tag]; - } - if (colorProfile == nil) - { - for (BWGMKJYlumbesColorProfile *cp in colorProfilesArray) - { - if ((logCommunictowardsion->logFlag & cp->mask) && (logCommunictowardsion->logContext == cp->context)) - { - colorProfile = cp; - break; - } - } - } - } - - - - - - - NSUInteger msgLen = [logMsg lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; - const BOOL useStack = msgLen < (1024 * 4); - - char msgStack[useStack ? (msgLen + 1) : 1]; - char *msg = useStack ? msgStack : (char *)malloc(msgLen + 1); - - [logMsg getCString:msg maxLength:(msgLen + 1) encoding:NSUTF8StringEncoding]; - - - - if (isFormatted) - { - - - struct iovec v[5]; - - if (colorProfile) - { - v[0].iov_base = colorProfile->fgCode; - v[0].iov_len = colorProfile->fgCodeLen; - - v[1].iov_base = colorProfile->bgCode; - v[1].iov_len = colorProfile->bgCodeLen; - - v[4].iov_base = colorProfile->resetCode; - v[4].iov_len = colorProfile->resetCodeLen; - } - else - { - v[0].iov_base = ""; - v[0].iov_len = 0; - - v[1].iov_base = ""; - v[1].iov_len = 0; - - v[4].iov_base = ""; - v[4].iov_len = 0; - } - - v[2].iov_base = (char *)msg; - v[2].iov_len = msgLen; - - v[3].iov_base = "\n"; - v[3].iov_len = (msg[msgLen] == '\n') ? 0 : 1; - - writev(STDERR_FILENO, v, 5); - } - else - { - - - int len; - - - - - NSDateComponents *components = [calendar components:calendarUnitFlags fromDate:logCommunictowardsion->timestamp]; - - NSTimeInterval epoch = [logCommunictowardsion->timestamp timeIntervalSinceReferenceDate]; - int milliseconds = (int)((epoch - floor(epoch)) * 1000); - - char ts[24]; - len = snprintf(ts, 24, "%04ld-%02ld-%02ld %02ld:%02ld:%02ld:%03d", - (long)components.year, - (long)components.month, - (long)components.day, - (long)components.hour, - (long)components.minute, - (long)components.second, milliseconds); - - size_t tsLen = MIN(24-1, len); - - - - - - - - - - char tid[9]; - len = snprintf(tid, 9, "%x", logCommunictowardsion->machThreadID); - - size_t tidLen = MIN(9-1, len); - - - - struct iovec v[13]; - - if (colorProfile) - { - v[0].iov_base = colorProfile->fgCode; - v[0].iov_len = colorProfile->fgCodeLen; - - v[1].iov_base = colorProfile->bgCode; - v[1].iov_len = colorProfile->bgCodeLen; - - v[12].iov_base = colorProfile->resetCode; - v[12].iov_len = colorProfile->resetCodeLen; - } - else - { - v[0].iov_base = ""; - v[0].iov_len = 0; - - v[1].iov_base = ""; - v[1].iov_len = 0; - - v[12].iov_base = ""; - v[12].iov_len = 0; - } - - v[2].iov_base = ts; - v[2].iov_len = tsLen; - - v[3].iov_base = " "; - v[3].iov_len = 1; - - v[4].iov_base = app; - v[4].iov_len = appLen; - - v[5].iov_base = "["; - v[5].iov_len = 1; - - v[6].iov_base = pid; - v[6].iov_len = pidLen; - - v[7].iov_base = ":"; - v[7].iov_len = 1; - - v[8].iov_base = tid; - v[8].iov_len = MIN((size_t)8, tidLen); - - v[9].iov_base = "] "; - v[9].iov_len = 2; - - v[10].iov_base = (char *)msg; - v[10].iov_len = msgLen; - - v[11].iov_base = "\n"; - v[11].iov_len = (msg[msgLen] == '\n') ? 0 : 1; - - writev(STDERR_FILENO, v, 13); - } - - if (!useStack) { - free(msg); - } - } -} - -- (NSString *)loggerConstitute -{ - return @"cocoa.lumberjack.ttyLogger"; -} - -@end - - -@implementation BWGMKJYlumbesColorProfile - -- (id)initAboutInthecaseofegroundPrettify:(OSColor *)fgColor backgroundColor:(OSColor *)bgColor flag:(int)aMask context:(int)ctxt -{ - if ((self = [super init])) - { - mask = aMask; - context = ctxt; - - CGFloat r, g, b; - - if (fgColor) - { - [BWGMKJYlumbes getRed:&r green:&g blue:&b fromColor:fgColor]; - - fg_r = (uint8_t)(r * 255.0f); - fg_g = (uint8_t)(g * 255.0f); - fg_b = (uint8_t)(b * 255.0f); - } - if (bgColor) - { - [BWGMKJYlumbes getRed:&r green:&g blue:&b fromColor:bgColor]; - - bg_r = (uint8_t)(r * 255.0f); - bg_g = (uint8_t)(g * 255.0f); - bg_b = (uint8_t)(b * 255.0f); - } - - if (fgColor && isaColorTTY) - { - - - fgCodeIndex = [BWGMKJYlumbes cryptogramIndictowardsrixInthecaseofPrettify:fgColor]; - fgCodeRaw = [codes_fg objectAtIndex:fgCodeIndex]; - - NSString *escapeSeq = @"\033["; - - NSUInteger len1 = [escapeSeq lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; - NSUInteger len2 = [fgCodeRaw lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; - - [escapeSeq getCString:(fgCode) maxLength:(len1+1) encoding:NSUTF8StringEncoding]; - [fgCodeRaw getCString:(fgCode+len1) maxLength:(len2+1) encoding:NSUTF8StringEncoding]; - - fgCodeLen = len1+len2; - } - else if (fgColor && isaXcodeColorTTY) - { - - - const char *escapeSeq = XCODE_COLORS_ESCAPE_SEQ; - - int result = snprintf(fgCode, 24, "%sfg%u,%u,%u;", escapeSeq, fg_r, fg_g, fg_b); - fgCodeLen = MIN(result, (24-1)); - } - else - { - - - fgCode[0] = '\0'; - fgCodeLen = 0; - } - - if (bgColor && isaColorTTY) - { - - - bgCodeIndex = [BWGMKJYlumbes cryptogramIndictowardsrixInthecaseofPrettify:bgColor]; - bgCodeRaw = [codes_bg objectAtIndex:bgCodeIndex]; - - NSString *escapeSeq = @"\033["; - - NSUInteger len1 = [escapeSeq lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; - NSUInteger len2 = [bgCodeRaw lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; - - [escapeSeq getCString:(bgCode) maxLength:(len1+1) encoding:NSUTF8StringEncoding]; - [bgCodeRaw getCString:(bgCode+len1) maxLength:(len2+1) encoding:NSUTF8StringEncoding]; - - bgCodeLen = len1+len2; - } - else if (bgColor && isaXcodeColorTTY) - { - - - const char *escapeSeq = XCODE_COLORS_ESCAPE_SEQ; - - int result = snprintf(bgCode, 24, "%sbg%u,%u,%u;", escapeSeq, bg_r, bg_g, bg_b); - bgCodeLen = MIN(result, (24-1)); - } - else - { - - - bgCode[0] = '\0'; - bgCodeLen = 0; - } - - if (isaColorTTY) - { - resetCodeLen = snprintf(resetCode, 8, "\033[0m"); - } - else if (isaXcodeColorTTY) - { - resetCodeLen = snprintf(resetCode, 8, XCODE_COLORS_RESET); - } - else - { - resetCode[0] = '\0'; - resetCodeLen = 0; - } - } - return self; -} - -- (NSString *)description -{ - return [NSString stringWithFormat: - @"", - self, mask, context, fg_r, fg_g, fg_b, bg_r, bg_g, bg_b, fgCodeRaw, bgCodeRaw]; -} - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDASLLogger.h b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDASLLogger.h new file mode 100755 index 00000000..e9f62027 --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDASLLogger.h @@ -0,0 +1,41 @@ +#import +#import + +#import "DDLog.h" + +/** + * Welcome to Cocoa Lumberjack! + * + * The project page has a wealth of documentation if you have any questions. + * https://github.com/robbiehanson/CocoaLumberjack + * + * If you're new to the project you may wish to read the "Getting Started" wiki. + * https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted + * + * + * This class provides a logger for the Apple System Log facility. + * + * As described in the "Getting Started" page, + * the traditional NSLog() function directs it's output to two places: + * + * - Apple System Log + * - StdErr (if stderr is a TTY) so log statements show up in Xcode console + * + * To duplicate NSLog() functionality you can simply add this logger and a tty logger. + * However, if you instead choose to use file logging (for faster performance), + * you may choose to use a file logger and a tty logger. +**/ + +@interface DDASLLogger : DDAbstractLogger +{ + aslclient client; +} + ++ (DDASLLogger *)sharedInstance; + +// Inherited from DDAbstractLogger + +// - (id )logFormatter; +// - (void)setLogFormatter:(id )formatter; + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDASLLogger.m b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDASLLogger.m new file mode 100755 index 00000000..0c35f2fc --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDASLLogger.m @@ -0,0 +1,99 @@ +#import "DDASLLogger.h" + +#import + +/** + * Welcome to Cocoa Lumberjack! + * + * The project page has a wealth of documentation if you have any questions. + * https://github.com/robbiehanson/CocoaLumberjack + * + * If you're new to the project you may wish to read the "Getting Started" wiki. + * https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted +**/ + +#if ! __has_feature(objc_arc) +#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). +#endif + + +@implementation DDASLLogger + +static DDASLLogger *sharedInstance; + +/** + * The runtime sends initialize to each class in a program exactly one time just before the class, + * or any class that inherits from it, is sent its first message from within the program. (Thus the + * method may never be invoked if the class is not used.) The runtime sends the initialize message to + * classes in a thread-safe manner. Superclasses receive this message before their subclasses. + * + * This method may also be called directly (assumably by accident), hence the safety mechanism. +**/ ++ (void)initialize +{ + static BOOL initialized = NO; + if (!initialized) + { + initialized = YES; + + sharedInstance = [[DDASLLogger alloc] init]; + } +} + ++ (DDASLLogger *)sharedInstance +{ + return sharedInstance; +} + +- (id)init +{ + if (sharedInstance != nil) + { + return nil; + } + + if ((self = [super init])) + { + // A default asl client is provided for the main thread, + // but background threads need to create their own client. + + client = asl_open(NULL, "com.apple.console", 0); + } + return self; +} + +- (void)logMessage:(DDLogMessage *)logMessage +{ + NSString *logMsg = logMessage->logMsg; + + if (formatter) + { + logMsg = [formatter formatLogMessage:logMessage]; + } + + if (logMsg) + { + const char *msg = [logMsg UTF8String]; + + int aslLogLevel; + switch (logMessage->logFlag) + { + // Note: By default ASL will filter anything above level 5 (Notice). + // So our mappings shouldn't go above that level. + + case LOG_FLAG_ERROR : aslLogLevel = ASL_LEVEL_CRIT; break; + case LOG_FLAG_WARN : aslLogLevel = ASL_LEVEL_ERR; break; + case LOG_FLAG_INFO : aslLogLevel = ASL_LEVEL_WARNING; break; + default : aslLogLevel = ASL_LEVEL_NOTICE; break; + } + + asl_log(client, NULL, aslLogLevel, "%s", msg); + } +} + +- (NSString *)loggerName +{ + return @"cocoa.lumberjack.aslLogger"; +} + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDAbstractDatabaseLogger.h b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDAbstractDatabaseLogger.h new file mode 100755 index 00000000..73769bb5 --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDAbstractDatabaseLogger.h @@ -0,0 +1,102 @@ +#import + +#import "DDLog.h" + +/** + * Welcome to Cocoa Lumberjack! + * + * The project page has a wealth of documentation if you have any questions. + * https://github.com/robbiehanson/CocoaLumberjack + * + * If you're new to the project you may wish to read the "Getting Started" wiki. + * https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted + * + * + * This class provides an abstract implementation of a database logger. + * + * That is, it provides the base implementation for a database logger to build atop of. + * All that is needed for a concrete database logger is to extend this class + * and override the methods in the implementation file that are prefixed with "db_". +**/ + +@interface DDAbstractDatabaseLogger : DDAbstractLogger { +@protected + NSUInteger saveThreshold; + NSTimeInterval saveInterval; + NSTimeInterval maxAge; + NSTimeInterval deleteInterval; + BOOL deleteOnEverySave; + + BOOL saveTimerSuspended; + NSUInteger unsavedCount; + dispatch_time_t unsavedTime; + dispatch_source_t saveTimer; + dispatch_time_t lastDeleteTime; + dispatch_source_t deleteTimer; +} + +/** + * Specifies how often to save the data to disk. + * Since saving is an expensive operation (disk io) it is not done after every log statement. + * These properties allow you to configure how/when the logger saves to disk. + * + * A save is done when either (whichever happens first): + * + * - The number of unsaved log entries reaches saveThreshold + * - The amount of time since the oldest unsaved log entry was created reaches saveInterval + * + * You can optionally disable the saveThreshold by setting it to zero. + * If you disable the saveThreshold you are entirely dependent on the saveInterval. + * + * You can optionally disable the saveInterval by setting it to zero (or a negative value). + * If you disable the saveInterval you are entirely dependent on the saveThreshold. + * + * It's not wise to disable both saveThreshold and saveInterval. + * + * The default saveThreshold is 500. + * The default saveInterval is 60 seconds. +**/ +@property (assign, readwrite) NSUInteger saveThreshold; +@property (assign, readwrite) NSTimeInterval saveInterval; + +/** + * It is likely you don't want the log entries to persist forever. + * Doing so would allow the database to grow infinitely large over time. + * + * The maxAge property provides a way to specify how old a log statement can get + * before it should get deleted from the database. + * + * The deleteInterval specifies how often to sweep for old log entries. + * Since deleting is an expensive operation (disk io) is is done on a fixed interval. + * + * An alternative to the deleteInterval is the deleteOnEverySave option. + * This specifies that old log entries should be deleted during every save operation. + * + * You can optionally disable the maxAge by setting it to zero (or a negative value). + * If you disable the maxAge then old log statements are not deleted. + * + * You can optionally disable the deleteInterval by setting it to zero (or a negative value). + * + * If you disable both deleteInterval and deleteOnEverySave then old log statements are not deleted. + * + * It's not wise to enable both deleteInterval and deleteOnEverySave. + * + * The default maxAge is 7 days. + * The default deleteInterval is 5 minutes. + * The default deleteOnEverySave is NO. +**/ +@property (assign, readwrite) NSTimeInterval maxAge; +@property (assign, readwrite) NSTimeInterval deleteInterval; +@property (assign, readwrite) BOOL deleteOnEverySave; + +/** + * Forces a save of any pending log entries (flushes log entries to disk). +**/ +- (void)savePendingLogEntries; + +/** + * Removes any log entries that are older than maxAge. +**/ +- (void)deleteOldLogEntries; + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDAbstractDatabaseLogger.m b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDAbstractDatabaseLogger.m new file mode 100755 index 00000000..c7366a69 --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDAbstractDatabaseLogger.m @@ -0,0 +1,727 @@ +#import "DDAbstractDatabaseLogger.h" +#import + +/** + * Welcome to Cocoa Lumberjack! + * + * The project page has a wealth of documentation if you have any questions. + * https://github.com/robbiehanson/CocoaLumberjack + * + * If you're new to the project you may wish to read the "Getting Started" wiki. + * https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted +**/ + +#if ! __has_feature(objc_arc) +#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). +#endif + +@interface DDAbstractDatabaseLogger () +- (void)destroySaveTimer; +- (void)destroyDeleteTimer; +@end + +#pragma mark - + +@implementation DDAbstractDatabaseLogger + +- (id)init +{ + if ((self = [super init])) + { + saveThreshold = 500; + saveInterval = 60; // 60 seconds + maxAge = (60 * 60 * 24 * 7); // 7 days + deleteInterval = (60 * 5); // 5 minutes + } + return self; +} + +- (void)dealloc +{ + [self destroySaveTimer]; + [self destroyDeleteTimer]; + +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Override Me +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +- (BOOL)db_log:(DDLogMessage *)logMessage +{ + // Override me and add your implementation. + // + // Return YES if an item was added to the buffer. + // Return NO if the logMessage was ignored. + + return NO; +} + +- (void)db_save +{ + // Override me and add your implementation. +} + +- (void)db_delete +{ + // Override me and add your implementation. +} + +- (void)db_saveAndDelete +{ + // Override me and add your implementation. +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Private API +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +- (void)performSaveAndSuspendSaveTimer +{ + if (unsavedCount > 0) + { + if (deleteOnEverySave) + [self db_saveAndDelete]; + else + [self db_save]; + } + + unsavedCount = 0; + unsavedTime = 0; + + if (saveTimer && !saveTimerSuspended) + { + dispatch_suspend(saveTimer); + saveTimerSuspended = YES; + } +} + +- (void)performDelete +{ + if (maxAge > 0.0) + { + [self db_delete]; + + lastDeleteTime = dispatch_time(DISPATCH_TIME_NOW, 0); + } +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Timers +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +- (void)destroySaveTimer +{ + if (saveTimer) + { + dispatch_source_cancel(saveTimer); + if (saveTimerSuspended) + { + // Must resume a timer before releasing it (or it will crash) + dispatch_resume(saveTimer); + saveTimerSuspended = NO; + } + #if !OS_OBJECT_USE_OBJC + dispatch_release(saveTimer); + #endif + saveTimer = NULL; + } +} + +- (void)updateAndResumeSaveTimer +{ + if ((saveTimer != NULL) && (saveInterval > 0.0) && (unsavedTime > 0.0)) + { + uint64_t interval = (uint64_t)(saveInterval * NSEC_PER_SEC); + dispatch_time_t startTime = dispatch_time(unsavedTime, interval); + + dispatch_source_set_timer(saveTimer, startTime, interval, 1.0); + + if (saveTimerSuspended) + { + dispatch_resume(saveTimer); + saveTimerSuspended = NO; + } + } +} + +- (void)createSuspendedSaveTimer +{ + if ((saveTimer == NULL) && (saveInterval > 0.0)) + { + saveTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, loggerQueue); + + dispatch_source_set_event_handler(saveTimer, ^{ @autoreleasepool { + + [self performSaveAndSuspendSaveTimer]; + + }}); + + saveTimerSuspended = YES; + } +} + +- (void)destroyDeleteTimer +{ + if (deleteTimer) + { + dispatch_source_cancel(deleteTimer); + #if !OS_OBJECT_USE_OBJC + dispatch_release(deleteTimer); + #endif + deleteTimer = NULL; + } +} + +- (void)updateDeleteTimer +{ + if ((deleteTimer != NULL) && (deleteInterval > 0.0) && (maxAge > 0.0)) + { + uint64_t interval = (uint64_t)(deleteInterval * NSEC_PER_SEC); + dispatch_time_t startTime; + + if (lastDeleteTime > 0) + startTime = dispatch_time(lastDeleteTime, interval); + else + startTime = dispatch_time(DISPATCH_TIME_NOW, interval); + + dispatch_source_set_timer(deleteTimer, startTime, interval, 1.0); + } +} + +- (void)createAndStartDeleteTimer +{ + if ((deleteTimer == NULL) && (deleteInterval > 0.0) && (maxAge > 0.0)) + { + deleteTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, loggerQueue); + + if (deleteTimer != NULL) { + dispatch_source_set_event_handler(deleteTimer, ^{ @autoreleasepool { + + [self performDelete]; + + }}); + + [self updateDeleteTimer]; + + dispatch_resume(deleteTimer); + } + } +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Configuration +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +- (NSUInteger)saveThreshold +{ + // The design of this method is taken from the DDAbstractLogger implementation. + // For extensive documentation please refer to the DDAbstractLogger implementation. + + // Note: The internal implementation MUST access the colorsEnabled variable directly, + // This method is designed explicitly for external access. + // + // Using "self." syntax to go through this method will cause immediate deadlock. + // This is the intended result. Fix it by accessing the ivar directly. + // Great strides have been take to ensure this is safe to do. Plus it's MUCH faster. + + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + NSAssert(![self isOnInternalLoggerQueue], @"MUST access ivar directly, NOT via self.* syntax."); + + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + + __block NSUInteger result; + + dispatch_sync(globalLoggingQueue, ^{ + dispatch_sync(loggerQueue, ^{ + result = saveThreshold; + }); + }); + + return result; +} + +- (void)setSaveThreshold:(NSUInteger)threshold +{ + dispatch_block_t block = ^{ @autoreleasepool { + + if (saveThreshold != threshold) + { + saveThreshold = threshold; + + // Since the saveThreshold has changed, + // we check to see if the current unsavedCount has surpassed the new threshold. + // + // If it has, we immediately save the log. + + if ((unsavedCount >= saveThreshold) && (saveThreshold > 0)) + { + [self performSaveAndSuspendSaveTimer]; + } + } + }}; + + // The design of the setter logic below is taken from the DDAbstractLogger implementation. + // For documentation please refer to the DDAbstractLogger implementation. + + if ([self isOnInternalLoggerQueue]) + { + block(); + } + else + { + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + + dispatch_async(globalLoggingQueue, ^{ + dispatch_async(loggerQueue, block); + }); + } +} + +- (NSTimeInterval)saveInterval +{ + // The design of this method is taken from the DDAbstractLogger implementation. + // For extensive documentation please refer to the DDAbstractLogger implementation. + + // Note: The internal implementation MUST access the colorsEnabled variable directly, + // This method is designed explicitly for external access. + // + // Using "self." syntax to go through this method will cause immediate deadlock. + // This is the intended result. Fix it by accessing the ivar directly. + // Great strides have been take to ensure this is safe to do. Plus it's MUCH faster. + + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + NSAssert(![self isOnInternalLoggerQueue], @"MUST access ivar directly, NOT via self.* syntax."); + + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + + __block NSTimeInterval result; + + dispatch_sync(globalLoggingQueue, ^{ + dispatch_sync(loggerQueue, ^{ + result = saveInterval; + }); + }); + + return result; +} + +- (void)setSaveInterval:(NSTimeInterval)interval +{ + dispatch_block_t block = ^{ @autoreleasepool { + + // C99 recommended floating point comparison macro + // Read: isLessThanOrGreaterThan(floatA, floatB) + + if (/* saveInterval != interval */ islessgreater(saveInterval, interval)) + { + saveInterval = interval; + + // There are several cases we need to handle here. + // + // 1. If the saveInterval was previously enabled and it just got disabled, + // then we need to stop the saveTimer. (And we might as well release it.) + // + // 2. If the saveInterval was previously disabled and it just got enabled, + // then we need to setup the saveTimer. (Plus we might need to do an immediate save.) + // + // 3. If the saveInterval increased, then we need to reset the timer so that it fires at the later date. + // + // 4. If the saveInterval decreased, then we need to reset the timer so that it fires at an earlier date. + // (Plus we might need to do an immediate save.) + + if (saveInterval > 0.0) + { + if (saveTimer == NULL) + { + // Handles #2 + // + // Since the saveTimer uses the unsavedTime to calculate it's first fireDate, + // if a save is needed the timer will fire immediately. + + [self createSuspendedSaveTimer]; + [self updateAndResumeSaveTimer]; + } + else + { + // Handles #3 + // Handles #4 + // + // Since the saveTimer uses the unsavedTime to calculate it's first fireDate, + // if a save is needed the timer will fire immediately. + + [self updateAndResumeSaveTimer]; + } + } + else if (saveTimer) + { + // Handles #1 + + [self destroySaveTimer]; + } + } + }}; + + // The design of the setter logic below is taken from the DDAbstractLogger implementation. + // For documentation please refer to the DDAbstractLogger implementation. + + if ([self isOnInternalLoggerQueue]) + { + block(); + } + else + { + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + + dispatch_async(globalLoggingQueue, ^{ + dispatch_async(loggerQueue, block); + }); + } +} + +- (NSTimeInterval)maxAge +{ + // The design of this method is taken from the DDAbstractLogger implementation. + // For extensive documentation please refer to the DDAbstractLogger implementation. + + // Note: The internal implementation MUST access the colorsEnabled variable directly, + // This method is designed explicitly for external access. + // + // Using "self." syntax to go through this method will cause immediate deadlock. + // This is the intended result. Fix it by accessing the ivar directly. + // Great strides have been take to ensure this is safe to do. Plus it's MUCH faster. + + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + NSAssert(![self isOnInternalLoggerQueue], @"MUST access ivar directly, NOT via self.* syntax."); + + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + + __block NSTimeInterval result; + + dispatch_sync(globalLoggingQueue, ^{ + dispatch_sync(loggerQueue, ^{ + result = maxAge; + }); + }); + + return result; +} + +- (void)setMaxAge:(NSTimeInterval)interval +{ + dispatch_block_t block = ^{ @autoreleasepool { + + // C99 recommended floating point comparison macro + // Read: isLessThanOrGreaterThan(floatA, floatB) + + if (/* maxAge != interval */ islessgreater(maxAge, interval)) + { + NSTimeInterval oldMaxAge = maxAge; + NSTimeInterval newMaxAge = interval; + + maxAge = interval; + + // There are several cases we need to handle here. + // + // 1. If the maxAge was previously enabled and it just got disabled, + // then we need to stop the deleteTimer. (And we might as well release it.) + // + // 2. If the maxAge was previously disabled and it just got enabled, + // then we need to setup the deleteTimer. (Plus we might need to do an immediate delete.) + // + // 3. If the maxAge was increased, + // then we don't need to do anything. + // + // 4. If the maxAge was decreased, + // then we should do an immediate delete. + + BOOL shouldDeleteNow = NO; + + if (oldMaxAge > 0.0) + { + if (newMaxAge <= 0.0) + { + // Handles #1 + + [self destroyDeleteTimer]; + } + else if (oldMaxAge > newMaxAge) + { + // Handles #4 + shouldDeleteNow = YES; + } + } + else if (newMaxAge > 0.0) + { + // Handles #2 + shouldDeleteNow = YES; + } + + if (shouldDeleteNow) + { + [self performDelete]; + + if (deleteTimer) + [self updateDeleteTimer]; + else + [self createAndStartDeleteTimer]; + } + } + }}; + + // The design of the setter logic below is taken from the DDAbstractLogger implementation. + // For documentation please refer to the DDAbstractLogger implementation. + + if ([self isOnInternalLoggerQueue]) + { + block(); + } + else + { + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + + dispatch_async(globalLoggingQueue, ^{ + dispatch_async(loggerQueue, block); + }); + } +} + +- (NSTimeInterval)deleteInterval +{ + // The design of this method is taken from the DDAbstractLogger implementation. + // For extensive documentation please refer to the DDAbstractLogger implementation. + + // Note: The internal implementation MUST access the colorsEnabled variable directly, + // This method is designed explicitly for external access. + // + // Using "self." syntax to go through this method will cause immediate deadlock. + // This is the intended result. Fix it by accessing the ivar directly. + // Great strides have been take to ensure this is safe to do. Plus it's MUCH faster. + + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + NSAssert(![self isOnInternalLoggerQueue], @"MUST access ivar directly, NOT via self.* syntax."); + + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + + __block NSTimeInterval result; + + dispatch_sync(globalLoggingQueue, ^{ + dispatch_sync(loggerQueue, ^{ + result = deleteInterval; + }); + }); + + return result; +} + +- (void)setDeleteInterval:(NSTimeInterval)interval +{ + dispatch_block_t block = ^{ @autoreleasepool { + + // C99 recommended floating point comparison macro + // Read: isLessThanOrGreaterThan(floatA, floatB) + + if (/* deleteInterval != interval */ islessgreater(deleteInterval, interval)) + { + deleteInterval = interval; + + // There are several cases we need to handle here. + // + // 1. If the deleteInterval was previously enabled and it just got disabled, + // then we need to stop the deleteTimer. (And we might as well release it.) + // + // 2. If the deleteInterval was previously disabled and it just got enabled, + // then we need to setup the deleteTimer. (Plus we might need to do an immediate delete.) + // + // 3. If the deleteInterval increased, then we need to reset the timer so that it fires at the later date. + // + // 4. If the deleteInterval decreased, then we need to reset the timer so that it fires at an earlier date. + // (Plus we might need to do an immediate delete.) + + if (deleteInterval > 0.0) + { + if (deleteTimer == NULL) + { + // Handles #2 + // + // Since the deleteTimer uses the lastDeleteTime to calculate it's first fireDate, + // if a delete is needed the timer will fire immediately. + + [self createAndStartDeleteTimer]; + } + else + { + // Handles #3 + // Handles #4 + // + // Since the deleteTimer uses the lastDeleteTime to calculate it's first fireDate, + // if a save is needed the timer will fire immediately. + + [self updateDeleteTimer]; + } + } + else if (deleteTimer) + { + // Handles #1 + + [self destroyDeleteTimer]; + } + } + }}; + + // The design of the setter logic below is taken from the DDAbstractLogger implementation. + // For documentation please refer to the DDAbstractLogger implementation. + + if ([self isOnInternalLoggerQueue]) + { + block(); + } + else + { + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + + dispatch_async(globalLoggingQueue, ^{ + dispatch_async(loggerQueue, block); + }); + } +} + +- (BOOL)deleteOnEverySave +{ + // The design of this method is taken from the DDAbstractLogger implementation. + // For extensive documentation please refer to the DDAbstractLogger implementation. + + // Note: The internal implementation MUST access the colorsEnabled variable directly, + // This method is designed explicitly for external access. + // + // Using "self." syntax to go through this method will cause immediate deadlock. + // This is the intended result. Fix it by accessing the ivar directly. + // Great strides have been take to ensure this is safe to do. Plus it's MUCH faster. + + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + NSAssert(![self isOnInternalLoggerQueue], @"MUST access ivar directly, NOT via self.* syntax."); + + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + + __block BOOL result; + + dispatch_sync(globalLoggingQueue, ^{ + dispatch_sync(loggerQueue, ^{ + result = deleteOnEverySave; + }); + }); + + return result; +} + +- (void)setDeleteOnEverySave:(BOOL)flag +{ + dispatch_block_t block = ^{ + + deleteOnEverySave = flag; + }; + + // The design of the setter logic below is taken from the DDAbstractLogger implementation. + // For documentation please refer to the DDAbstractLogger implementation. + + if ([self isOnInternalLoggerQueue]) + { + block(); + } + else + { + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + + dispatch_async(globalLoggingQueue, ^{ + dispatch_async(loggerQueue, block); + }); + } +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Public API +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +- (void)savePendingLogEntries +{ + dispatch_block_t block = ^{ @autoreleasepool { + + [self performSaveAndSuspendSaveTimer]; + }}; + + if ([self isOnInternalLoggerQueue]) + block(); + else + dispatch_async(loggerQueue, block); +} + +- (void)deleteOldLogEntries +{ + dispatch_block_t block = ^{ @autoreleasepool { + + [self performDelete]; + }}; + + if ([self isOnInternalLoggerQueue]) + block(); + else + dispatch_async(loggerQueue, block); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark DDLogger +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +- (void)didAddLogger +{ + // If you override me be sure to invoke [super didAddLogger]; + + [self createSuspendedSaveTimer]; + + [self createAndStartDeleteTimer]; +} + +- (void)willRemoveLogger +{ + // If you override me be sure to invoke [super willRemoveLogger]; + + [self performSaveAndSuspendSaveTimer]; + + [self destroySaveTimer]; + [self destroyDeleteTimer]; +} + +- (void)logMessage:(DDLogMessage *)logMessage +{ + if ([self db_log:logMessage]) + { + BOOL firstUnsavedEntry = (++unsavedCount == 1); + + if ((unsavedCount >= saveThreshold) && (saveThreshold > 0)) + { + [self performSaveAndSuspendSaveTimer]; + } + else if (firstUnsavedEntry) + { + unsavedTime = dispatch_time(DISPATCH_TIME_NOW, 0); + [self updateAndResumeSaveTimer]; + } + } +} + +- (void)flush +{ + // This method is invoked by DDLog's flushLog method. + // + // It is called automatically when the application quits, + // or if the developer invokes DDLog's flushLog method prior to crashing or something. + + [self performSaveAndSuspendSaveTimer]; +} + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDFileLogger.h b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDFileLogger.h new file mode 100755 index 00000000..9d3eceee --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDFileLogger.h @@ -0,0 +1,334 @@ +#import +#import "DDLog.h" + +@class DDLogFileInfo; + +/** + * Welcome to Cocoa Lumberjack! + * + * The project page has a wealth of documentation if you have any questions. + * https://github.com/robbiehanson/CocoaLumberjack + * + * If you're new to the project you may wish to read the "Getting Started" wiki. + * https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted + * + * + * This class provides a logger to write log statements to a file. +**/ + + +// Default configuration and safety/sanity values. +// +// maximumFileSize -> DEFAULT_LOG_MAX_FILE_SIZE +// rollingFrequency -> DEFAULT_LOG_ROLLING_FREQUENCY +// maximumNumberOfLogFiles -> DEFAULT_LOG_MAX_NUM_LOG_FILES +// +// You should carefully consider the proper configuration values for your application. + +#define DEFAULT_LOG_MAX_FILE_SIZE (1024 * 1024) // 1 MB +#define DEFAULT_LOG_ROLLING_FREQUENCY (60 * 60 * 24) // 24 Hours +#define DEFAULT_LOG_MAX_NUM_LOG_FILES (5) // 5 Files + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +// The LogFileManager protocol is designed to allow you to control all aspects of your log files. +// +// The primary purpose of this is to allow you to do something with the log files after they have been rolled. +// Perhaps you want to compress them to save disk space. +// Perhaps you want to upload them to an FTP server. +// Perhaps you want to run some analytics on the file. +// +// A default LogFileManager is, of course, provided. +// The default LogFileManager simply deletes old log files according to the maximumNumberOfLogFiles property. +// +// This protocol provides various methods to fetch the list of log files. +// +// There are two variants: sorted and unsorted. +// If sorting is not necessary, the unsorted variant is obviously faster. +// The sorted variant will return an array sorted by when the log files were created, +// with the most recently created log file at index 0, and the oldest log file at the end of the array. +// +// You can fetch only the log file paths (full path including name), log file names (name only), +// or an array of DDLogFileInfo objects. +// The DDLogFileInfo class is documented below, and provides a handy wrapper that +// gives you easy access to various file attributes such as the creation date or the file size. + +@protocol DDLogFileManager +@required + +// Public properties + +/** + * The maximum number of archived log files to keep on disk. + * For example, if this property is set to 3, + * then the LogFileManager will only keep 3 archived log files (plus the current active log file) on disk. + * Once the active log file is rolled/archived, then the oldest of the existing 3 rolled/archived log files is deleted. + * + * You may optionally disable deleting old/rolled/archived log files by setting this property to zero. +**/ +@property (readwrite, assign) NSUInteger maximumNumberOfLogFiles; + +// Public methods + +- (NSString *)logsDirectory; + +- (NSArray *)unsortedLogFilePaths; +- (NSArray *)unsortedLogFileNames; +- (NSArray *)unsortedLogFileInfos; + +- (NSArray *)sortedLogFilePaths; +- (NSArray *)sortedLogFileNames; +- (NSArray *)sortedLogFileInfos; + +// Private methods (only to be used by DDFileLogger) + +- (NSString *)createNewLogFile; + +@optional + +// Notifications from DDFileLogger + +- (void)didArchiveLogFile:(NSString *)logFilePath; +- (void)didRollAndArchiveLogFile:(NSString *)logFilePath; + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * Default log file manager. + * + * All log files are placed inside the logsDirectory. + * If a specific logsDirectory isn't specified, the default directory is used. + * On Mac, this is in ~/Library/Logs/. + * On iPhone, this is in ~/Library/Caches/Logs. + * + * Log files are named "log-.txt", + * where uuid is a 6 character hexadecimal consisting of the set [0123456789ABCDEF]. + * + * Archived log files are automatically deleted according to the maximumNumberOfLogFiles property. +**/ +@interface DDLogFileManagerDefault : NSObject +{ + NSUInteger maximumNumberOfLogFiles; + NSString *_logsDirectory; +} + +- (id)init; +- (id)initWithLogsDirectory:(NSString *)logsDirectory; + +/* Inherited from DDLogFileManager protocol: + +@property (readwrite, assign) NSUInteger maximumNumberOfLogFiles; + +- (NSString *)logsDirectory; + +- (NSArray *)unsortedLogFilePaths; +- (NSArray *)unsortedLogFileNames; +- (NSArray *)unsortedLogFileInfos; + +- (NSArray *)sortedLogFilePaths; +- (NSArray *)sortedLogFileNames; +- (NSArray *)sortedLogFileInfos; + +*/ + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * Most users will want file log messages to be prepended with the date and time. + * Rather than forcing the majority of users to write their own formatter, + * we will supply a logical default formatter. + * Users can easily replace this formatter with their own by invoking the setLogFormatter method. + * It can also be removed by calling setLogFormatter, and passing a nil parameter. + * + * In addition to the convenience of having a logical default formatter, + * it will also provide a template that makes it easy for developers to copy and change. +**/ +@interface DDLogFileFormatterDefault : NSObject +{ + NSDateFormatter *dateFormatter; +} + +- (id)init; +- (id)initWithDateFormatter:(NSDateFormatter *)dateFormatter; + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +@interface DDFileLogger : DDAbstractLogger +{ + __strong id logFileManager; + + DDLogFileInfo *currentLogFileInfo; + NSFileHandle *currentLogFileHandle; + + dispatch_source_t rollingTimer; + + unsigned long long maximumFileSize; + NSTimeInterval rollingFrequency; +} + +- (id)init; +- (id)initWithLogFileManager:(id )logFileManager; + +/** + * Log File Rolling: + * + * maximumFileSize: + * The approximate maximum size to allow log files to grow. + * If a log file is larger than this value after a log statement is appended, + * then the log file is rolled. + * + * rollingFrequency + * How often to roll the log file. + * The frequency is given as an NSTimeInterval, which is a double that specifies the interval in seconds. + * Once the log file gets to be this old, it is rolled. + * + * Both the maximumFileSize and the rollingFrequency are used to manage rolling. + * Whichever occurs first will cause the log file to be rolled. + * + * For example: + * The rollingFrequency is 24 hours, + * but the log file surpasses the maximumFileSize after only 20 hours. + * The log file will be rolled at that 20 hour mark. + * A new log file will be created, and the 24 hour timer will be restarted. + * + * You may optionally disable rolling due to filesize by setting maximumFileSize to zero. + * If you do so, rolling is based solely on rollingFrequency. + * + * You may optionally disable rolling due to time by setting rollingFrequency to zero (or any non-positive number). + * If you do so, rolling is based solely on maximumFileSize. + * + * If you disable both maximumFileSize and rollingFrequency, then the log file won't ever be rolled. + * This is strongly discouraged. +**/ +@property (readwrite, assign) unsigned long long maximumFileSize; +@property (readwrite, assign) NSTimeInterval rollingFrequency; + +/** + * The DDLogFileManager instance can be used to retrieve the list of log files, + * and configure the maximum number of archived log files to keep. + * + * @see DDLogFileManager.maximumNumberOfLogFiles +**/ +@property (strong, nonatomic, readonly) id logFileManager; + + +// You can optionally force the current log file to be rolled with this method. + +- (void)rollLogFile; + +// Inherited from DDAbstractLogger + +// - (id )logFormatter; +// - (void)setLogFormatter:(id )formatter; + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * DDLogFileInfo is a simple class that provides access to various file attributes. + * It provides good performance as it only fetches the information if requested, + * and it caches the information to prevent duplicate fetches. + * + * It was designed to provide quick snapshots of the current state of log files, + * and to help sort log files in an array. + * + * This class does not monitor the files, or update it's cached attribute values if the file changes on disk. + * This is not what the class was designed for. + * + * If you absolutely must get updated values, + * you can invoke the reset method which will clear the cache. +**/ +@interface DDLogFileInfo : NSObject +{ + __strong NSString *filePath; + __strong NSString *fileName; + + __strong NSDictionary *fileAttributes; + + __strong NSDate *creationDate; + __strong NSDate *modificationDate; + + unsigned long long fileSize; +} + +@property (strong, nonatomic, readonly) NSString *filePath; +@property (strong, nonatomic, readonly) NSString *fileName; + +@property (strong, nonatomic, readonly) NSDictionary *fileAttributes; + +@property (strong, nonatomic, readonly) NSDate *creationDate; +@property (strong, nonatomic, readonly) NSDate *modificationDate; + +@property (nonatomic, readonly) unsigned long long fileSize; + +@property (nonatomic, readonly) NSTimeInterval age; + +@property (nonatomic, readwrite) BOOL isArchived; + ++ (id)logFileWithPath:(NSString *)filePath; + +- (id)initWithFilePath:(NSString *)filePath; + +- (void)reset; +- (void)renameFile:(NSString *)newFileName; + +#if TARGET_IPHONE_SIMULATOR + +// So here's the situation. +// Extended attributes are perfect for what we're trying to do here (marking files as archived). +// This is exactly what extended attributes were designed for. +// +// But Apple screws us over on the simulator. +// Everytime you build-and-go, they copy the application into a new folder on the hard drive, +// and as part of the process they strip extended attributes from our log files. +// Normally, a copy of a file preserves extended attributes. +// So obviously Apple has gone to great lengths to piss us off. +// +// Thus we use a slightly different tactic for marking log files as archived in the simulator. +// That way it "just works" and there's no confusion when testing. +// +// The difference in method names is indicative of the difference in functionality. +// On the simulator we add an attribute by appending a filename extension. +// +// For example: +// log-ABC123.txt -> log-ABC123.archived.txt + +- (BOOL)hasExtensionAttributeWithName:(NSString *)attrName; + +- (void)addExtensionAttributeWithName:(NSString *)attrName; +- (void)removeExtensionAttributeWithName:(NSString *)attrName; + +#else + +// Normal use of extended attributes used everywhere else, +// such as on Macs and on iPhone devices. + +- (BOOL)hasExtendedAttributeWithName:(NSString *)attrName; + +- (void)addExtendedAttributeWithName:(NSString *)attrName; +- (void)removeExtendedAttributeWithName:(NSString *)attrName; + +#endif + +- (NSComparisonResult)reverseCompareByCreationDate:(DDLogFileInfo *)another; +- (NSComparisonResult)reverseCompareByModificationDate:(DDLogFileInfo *)another; + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDFileLogger.m b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDFileLogger.m new file mode 100755 index 00000000..645bc691 --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDFileLogger.m @@ -0,0 +1,1356 @@ +#import "DDFileLogger.h" + +#import +#import +#import +#import + +/** + * Welcome to Cocoa Lumberjack! + * + * The project page has a wealth of documentation if you have any questions. + * https://github.com/robbiehanson/CocoaLumberjack + * + * If you're new to the project you may wish to read the "Getting Started" wiki. + * https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted +**/ + +#if ! __has_feature(objc_arc) +#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). +#endif + +// We probably shouldn't be using DDLog() statements within the DDLog implementation. +// But we still want to leave our log statements for any future debugging, +// and to allow other developers to trace the implementation (which is a great learning tool). +// +// So we use primitive logging macros around NSLog. +// We maintain the NS prefix on the macros to be explicit about the fact that we're using NSLog. + +#define LOG_LEVEL 2 + +#define NSLogError(frmt, ...) do{ if(LOG_LEVEL >= 1) NSLog((frmt), ##__VA_ARGS__); } while(0) +#define NSLogWarn(frmt, ...) do{ if(LOG_LEVEL >= 2) NSLog((frmt), ##__VA_ARGS__); } while(0) +#define NSLogInfo(frmt, ...) do{ if(LOG_LEVEL >= 3) NSLog((frmt), ##__VA_ARGS__); } while(0) +#define NSLogVerbose(frmt, ...) do{ if(LOG_LEVEL >= 4) NSLog((frmt), ##__VA_ARGS__); } while(0) + +@interface DDLogFileManagerDefault (PrivateAPI) + +- (void)deleteOldLogFiles; +- (NSString *)defaultLogsDirectory; + +@end + +@interface DDFileLogger (PrivateAPI) + +- (void)rollLogFileNow; +- (void)maybeRollLogFileDueToAge; +- (void)maybeRollLogFileDueToSize; + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +@implementation DDLogFileManagerDefault + +@synthesize maximumNumberOfLogFiles; + +- (id)init +{ + return [self initWithLogsDirectory:nil]; +} + +- (id)initWithLogsDirectory:(NSString *)aLogsDirectory +{ + if ((self = [super init])) + { + maximumNumberOfLogFiles = DEFAULT_LOG_MAX_NUM_LOG_FILES; + + if (aLogsDirectory) + _logsDirectory = [aLogsDirectory copy]; + else + _logsDirectory = [[self defaultLogsDirectory] copy]; + + NSKeyValueObservingOptions kvoOptions = NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew; + + [self addObserver:self forKeyPath:@"maximumNumberOfLogFiles" options:kvoOptions context:nil]; + +// NSLogVerbose(@"DDFileLogManagerDefault: logsDirectory:\n%@", [self logsDirectory]); +// NSLogVerbose(@"DDFileLogManagerDefault: sortedLogFileNames:\n%@", [self sortedLogFileNames]); + } + return self; +} + +- (void)dealloc +{ + [self removeObserver:self forKeyPath:@"maximumNumberOfLogFiles"]; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Configuration +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +- (void)observeValueForKeyPath:(NSString *)keyPath + ofObject:(id)object + change:(NSDictionary *)change + context:(void *)context +{ + NSNumber *old = [change objectForKey:NSKeyValueChangeOldKey]; + NSNumber *new = [change objectForKey:NSKeyValueChangeNewKey]; + + if ([old isEqual:new]) + { + // No change in value - don't bother with any processing. + return; + } + + if ([keyPath isEqualToString:@"maximumNumberOfLogFiles"]) + { + //NSLogInfo(@"DDFileLogManagerDefault: Responding to configuration change: maximumNumberOfLogFiles"); + + dispatch_async([DDLog loggingQueue], ^{ @autoreleasepool { + + [self deleteOldLogFiles]; + }}); + } +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark File Deleting +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * Deletes archived log files that exceed the maximumNumberOfLogFiles configuration value. +**/ +- (void)deleteOldLogFiles +{ + //NSLogVerbose(@"DDLogFileManagerDefault: deleteOldLogFiles"); + + NSUInteger maxNumLogFiles = self.maximumNumberOfLogFiles; + if (maxNumLogFiles == 0) + { + // Unlimited - don't delete any log files + return; + } + + NSArray *sortedLogFileInfos = [self sortedLogFileInfos]; + + // Do we consider the first file? + // We are only supposed to be deleting archived files. + // In most cases, the first file is likely the log file that is currently being written to. + // So in most cases, we do not want to consider this file for deletion. + + NSUInteger count = [sortedLogFileInfos count]; + BOOL excludeFirstFile = NO; + + if (count > 0) + { + DDLogFileInfo *logFileInfo = [sortedLogFileInfos objectAtIndex:0]; + + if (!logFileInfo.isArchived) + { + excludeFirstFile = YES; + } + } + + NSArray *sortedArchivedLogFileInfos; + if (excludeFirstFile) + { + count--; + sortedArchivedLogFileInfos = [sortedLogFileInfos subarrayWithRange:NSMakeRange(1, count)]; + } + else + { + sortedArchivedLogFileInfos = sortedLogFileInfos; + } + + NSUInteger i; + for (i = maxNumLogFiles; i < count; i++) + { + DDLogFileInfo *logFileInfo = [sortedArchivedLogFileInfos objectAtIndex:i]; + + //NSLogInfo(@"DDLogFileManagerDefault: Deleting file: %@", logFileInfo.fileName); + + [[NSFileManager defaultManager] removeItemAtPath:logFileInfo.filePath error:nil]; + } +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Log Files +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * Returns the path to the default logs directory. + * If the logs directory doesn't exist, this method automatically creates it. +**/ +- (NSString *)defaultLogsDirectory +{ +#if TARGET_OS_IPHONE + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); + NSString *baseDir = ([paths count] > 0) ? [paths objectAtIndex:0] : nil; + NSString *logsDirectory = [baseDir stringByAppendingPathComponent:@"Logs"]; + +#else + NSString *appName = [[NSProcessInfo processInfo] processName]; + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); + NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : NSTemporaryDirectory(); + NSString *logsDirectory = [[basePath stringByAppendingPathComponent:@"Logs"] stringByAppendingPathComponent:appName]; + +#endif + + return logsDirectory; +} + +- (NSString *)logsDirectory +{ + // We could do this check once, during initalization, and not bother again. + // But this way the code continues to work if the directory gets deleted while the code is running. + + if (![[NSFileManager defaultManager] fileExistsAtPath:_logsDirectory]) + { + NSError *err = nil; + if (![[NSFileManager defaultManager] createDirectoryAtPath:_logsDirectory + withIntermediateDirectories:YES attributes:nil error:&err]) + { + //NSLogError(@"DDFileLogManagerDefault: Error creating logsDirectory: %@", err); + } + } + + return _logsDirectory; +} + +- (BOOL)isLogFile:(NSString *)fileName +{ + // A log file has a name like "log-.txt", where is a HEX-string of 6 characters. + // + // For example: log-DFFE99.txt + + BOOL hasProperPrefix = [fileName hasPrefix:@"log-"]; + + BOOL hasProperLength = [fileName length] >= 10; + + + if (hasProperPrefix && hasProperLength) + { + NSCharacterSet *hexSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789ABCDEF"]; + + NSString *hex = [fileName substringWithRange:NSMakeRange(4, 6)]; + NSString *nohex = [hex stringByTrimmingCharactersInSet:hexSet]; + + if ([nohex length] == 0) + { + return YES; + } + } + + return NO; +} + +/** + * Returns an array of NSString objects, + * each of which is the filePath to an existing log file on disk. +**/ +- (NSArray *)unsortedLogFilePaths +{ + NSString *logsDirectory = [self logsDirectory]; + NSArray *fileNames = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:logsDirectory error:nil]; + + NSMutableArray *unsortedLogFilePaths = [NSMutableArray arrayWithCapacity:[fileNames count]]; + + for (NSString *fileName in fileNames) + { + // Filter out any files that aren't log files. (Just for extra safety) + + if ([self isLogFile:fileName]) + { + NSString *filePath = [logsDirectory stringByAppendingPathComponent:fileName]; + + [unsortedLogFilePaths addObject:filePath]; + } + } + + return unsortedLogFilePaths; +} + +/** + * Returns an array of NSString objects, + * each of which is the fileName of an existing log file on disk. +**/ +- (NSArray *)unsortedLogFileNames +{ + NSArray *unsortedLogFilePaths = [self unsortedLogFilePaths]; + + NSMutableArray *unsortedLogFileNames = [NSMutableArray arrayWithCapacity:[unsortedLogFilePaths count]]; + + for (NSString *filePath in unsortedLogFilePaths) + { + [unsortedLogFileNames addObject:[filePath lastPathComponent]]; + } + + return unsortedLogFileNames; +} + +/** + * Returns an array of DDLogFileInfo objects, + * each representing an existing log file on disk, + * and containing important information about the log file such as it's modification date and size. +**/ +- (NSArray *)unsortedLogFileInfos +{ + NSArray *unsortedLogFilePaths = [self unsortedLogFilePaths]; + + NSMutableArray *unsortedLogFileInfos = [NSMutableArray arrayWithCapacity:[unsortedLogFilePaths count]]; + + for (NSString *filePath in unsortedLogFilePaths) + { + DDLogFileInfo *logFileInfo = [[DDLogFileInfo alloc] initWithFilePath:filePath]; + + [unsortedLogFileInfos addObject:logFileInfo]; + } + + return unsortedLogFileInfos; +} + +/** + * Just like the unsortedLogFilePaths method, but sorts the array. + * The items in the array are sorted by modification date. + * The first item in the array will be the most recently modified log file. +**/ +- (NSArray *)sortedLogFilePaths +{ + NSArray *sortedLogFileInfos = [self sortedLogFileInfos]; + + NSMutableArray *sortedLogFilePaths = [NSMutableArray arrayWithCapacity:[sortedLogFileInfos count]]; + + for (DDLogFileInfo *logFileInfo in sortedLogFileInfos) + { + [sortedLogFilePaths addObject:[logFileInfo filePath]]; + } + + return sortedLogFilePaths; +} + +/** + * Just like the unsortedLogFileNames method, but sorts the array. + * The items in the array are sorted by modification date. + * The first item in the array will be the most recently modified log file. +**/ +- (NSArray *)sortedLogFileNames +{ + NSArray *sortedLogFileInfos = [self sortedLogFileInfos]; + + NSMutableArray *sortedLogFileNames = [NSMutableArray arrayWithCapacity:[sortedLogFileInfos count]]; + + for (DDLogFileInfo *logFileInfo in sortedLogFileInfos) + { + [sortedLogFileNames addObject:[logFileInfo fileName]]; + } + + return sortedLogFileNames; +} + +/** + * Just like the unsortedLogFileInfos method, but sorts the array. + * The items in the array are sorted by modification date. + * The first item in the array will be the most recently modified log file. +**/ +- (NSArray *)sortedLogFileInfos +{ + return [[self unsortedLogFileInfos] sortedArrayUsingSelector:@selector(reverseCompareByCreationDate:)]; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Creation +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * Generates a short UUID suitable for use in the log file's name. + * The result will have six characters, all in the hexadecimal set [0123456789ABCDEF]. +**/ +- (NSString *)generateShortUUID +{ + CFUUIDRef uuid = CFUUIDCreate(NULL); + + CFStringRef fullStr = CFUUIDCreateString(NULL, uuid); + NSString *result = (__bridge_transfer NSString *)CFStringCreateWithSubstring(NULL, fullStr, CFRangeMake(0, 6)); + + CFRelease(fullStr); + CFRelease(uuid); + + return result; +} + +/** + * Generates a new unique log file path, and creates the corresponding log file. +**/ +- (NSString *)createNewLogFile +{ + // Generate a random log file name, and create the file (if there isn't a collision) + + NSString *logsDirectory = [self logsDirectory]; + do + { + NSString *fileName = [NSString stringWithFormat:@"log-%@.txt", [self generateShortUUID]]; + + NSString *filePath = [logsDirectory stringByAppendingPathComponent:fileName]; + + if (![[NSFileManager defaultManager] fileExistsAtPath:filePath]) + { + //NSLogVerbose(@"DDLogFileManagerDefault: Creating new log file: %@", fileName); + + [[NSFileManager defaultManager] createFileAtPath:filePath contents:nil attributes:nil]; + + // Since we just created a new log file, we may need to delete some old log files + [self deleteOldLogFiles]; + + return filePath; + } + + } while(YES); +} + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +@implementation DDLogFileFormatterDefault + +- (id)init +{ + return [self initWithDateFormatter:nil]; +} + +- (id)initWithDateFormatter:(NSDateFormatter *)aDateFormatter +{ + if ((self = [super init])) + { + if (aDateFormatter) + { + dateFormatter = aDateFormatter; + } + else + { + dateFormatter = [[NSDateFormatter alloc] init]; + [dateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4]; // 10.4+ style + [dateFormatter setDateFormat:@"yyyy/MM/dd HH:mm:ss:SSS"]; + } + } + return self; +} + +- (NSString *)formatLogMessage:(DDLogMessage *)logMessage +{ + NSString *dateAndTime = [dateFormatter stringFromDate:(logMessage->timestamp)]; + + return [NSString stringWithFormat:@"%@ %@", dateAndTime, logMessage->logMsg]; +} + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +@implementation DDFileLogger + +- (id)init +{ + DDLogFileManagerDefault *defaultLogFileManager = [[DDLogFileManagerDefault alloc] init]; + + return [self initWithLogFileManager:defaultLogFileManager]; +} + +- (id)initWithLogFileManager:(id )aLogFileManager +{ + if ((self = [super init])) + { + maximumFileSize = DEFAULT_LOG_MAX_FILE_SIZE; + rollingFrequency = DEFAULT_LOG_ROLLING_FREQUENCY; + + logFileManager = aLogFileManager; + + formatter = [[DDLogFileFormatterDefault alloc] init]; + } + return self; +} + +- (void)dealloc +{ + [currentLogFileHandle synchronizeFile]; + [currentLogFileHandle closeFile]; + + if (rollingTimer) + { + dispatch_source_cancel(rollingTimer); + rollingTimer = NULL; + } +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Properties +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +@synthesize logFileManager; + +- (unsigned long long)maximumFileSize +{ + __block unsigned long long result; + + dispatch_block_t block = ^{ + result = maximumFileSize; + }; + + // The design of this method is taken from the DDAbstractLogger implementation. + // For extensive documentation please refer to the DDAbstractLogger implementation. + + // Note: The internal implementation MUST access the maximumFileSize variable directly, + // This method is designed explicitly for external access. + // + // Using "self." syntax to go through this method will cause immediate deadlock. + // This is the intended result. Fix it by accessing the ivar directly. + // Great strides have been take to ensure this is safe to do. Plus it's MUCH faster. + + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + NSAssert(![self isOnInternalLoggerQueue], @"MUST access ivar directly, NOT via self.* syntax."); + + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + + dispatch_sync(globalLoggingQueue, ^{ + dispatch_sync(loggerQueue, block); + }); + + return result; +} + +- (void)setMaximumFileSize:(unsigned long long)newMaximumFileSize +{ + dispatch_block_t block = ^{ @autoreleasepool { + + maximumFileSize = newMaximumFileSize; + [self maybeRollLogFileDueToSize]; + + }}; + + // The design of this method is taken from the DDAbstractLogger implementation. + // For extensive documentation please refer to the DDAbstractLogger implementation. + + // Note: The internal implementation MUST access the maximumFileSize variable directly, + // This method is designed explicitly for external access. + // + // Using "self." syntax to go through this method will cause immediate deadlock. + // This is the intended result. Fix it by accessing the ivar directly. + // Great strides have been take to ensure this is safe to do. Plus it's MUCH faster. + + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + NSAssert(![self isOnInternalLoggerQueue], @"MUST access ivar directly, NOT via self.* syntax."); + + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + + dispatch_async(globalLoggingQueue, ^{ + dispatch_async(loggerQueue, block); + }); +} + +- (NSTimeInterval)rollingFrequency +{ + __block NSTimeInterval result; + + dispatch_block_t block = ^{ + result = rollingFrequency; + }; + + // The design of this method is taken from the DDAbstractLogger implementation. + // For extensive documentation please refer to the DDAbstractLogger implementation. + + // Note: The internal implementation should access the rollingFrequency variable directly, + // This method is designed explicitly for external access. + // + // Using "self." syntax to go through this method will cause immediate deadlock. + // This is the intended result. Fix it by accessing the ivar directly. + // Great strides have been take to ensure this is safe to do. Plus it's MUCH faster. + + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + NSAssert(![self isOnInternalLoggerQueue], @"MUST access ivar directly, NOT via self.* syntax."); + + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + + dispatch_sync(globalLoggingQueue, ^{ + dispatch_sync(loggerQueue, block); + }); + + return result; +} + +- (void)setRollingFrequency:(NSTimeInterval)newRollingFrequency +{ + dispatch_block_t block = ^{ @autoreleasepool { + + rollingFrequency = newRollingFrequency; + [self maybeRollLogFileDueToAge]; + }}; + + // The design of this method is taken from the DDAbstractLogger implementation. + // For extensive documentation please refer to the DDAbstractLogger implementation. + + // Note: The internal implementation should access the rollingFrequency variable directly, + // This method is designed explicitly for external access. + // + // Using "self." syntax to go through this method will cause immediate deadlock. + // This is the intended result. Fix it by accessing the ivar directly. + // Great strides have been take to ensure this is safe to do. Plus it's MUCH faster. + + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + NSAssert(![self isOnInternalLoggerQueue], @"MUST access ivar directly, NOT via self.* syntax."); + + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + + dispatch_async(globalLoggingQueue, ^{ + dispatch_async(loggerQueue, block); + }); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark File Rolling +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +- (void)scheduleTimerToRollLogFileDueToAge +{ + if (rollingTimer) + { + dispatch_source_cancel(rollingTimer); + rollingTimer = NULL; + } + + if (currentLogFileInfo == nil || rollingFrequency <= 0.0) + { + return; + } + + NSDate *logFileCreationDate = [currentLogFileInfo creationDate]; + + NSTimeInterval ti = [logFileCreationDate timeIntervalSinceReferenceDate]; + ti += rollingFrequency; + + NSDate *logFileRollingDate = [NSDate dateWithTimeIntervalSinceReferenceDate:ti]; + +// NSLogVerbose(@"DDFileLogger: scheduleTimerToRollLogFileDueToAge"); +// +// NSLogVerbose(@"DDFileLogger: logFileCreationDate: %@", logFileCreationDate); +// NSLogVerbose(@"DDFileLogger: logFileRollingDate : %@", logFileRollingDate); + + rollingTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, loggerQueue); + + dispatch_source_set_event_handler(rollingTimer, ^{ @autoreleasepool { + + [self maybeRollLogFileDueToAge]; + + }}); + + #if !OS_OBJECT_USE_OBJC + dispatch_source_t theRollingTimer = rollingTimer; + dispatch_source_set_cancel_handler(rollingTimer, ^{ + dispatch_release(theRollingTimer); + }); + #endif + + uint64_t delay = (uint64_t)([logFileRollingDate timeIntervalSinceNow] * NSEC_PER_SEC); + dispatch_time_t fireTime = dispatch_time(DISPATCH_TIME_NOW, delay); + + dispatch_source_set_timer(rollingTimer, fireTime, DISPATCH_TIME_FOREVER, 1.0); + dispatch_resume(rollingTimer); +} + +- (void)rollLogFile +{ + // This method is public. + // We need to execute the rolling on our logging thread/queue. + + dispatch_block_t block = ^{ @autoreleasepool { + + [self rollLogFileNow]; + }}; + + // The design of this method is taken from the DDAbstractLogger implementation. + // For extensive documentation please refer to the DDAbstractLogger implementation. + + if ([self isOnInternalLoggerQueue]) + { + block(); + } + else + { + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + + dispatch_async(globalLoggingQueue, ^{ + dispatch_async(loggerQueue, block); + }); + } +} + +- (void)rollLogFileNow +{ +// NSLogVerbose(@"DDFileLogger: rollLogFileNow"); + + + if (currentLogFileHandle == nil) return; + + [currentLogFileHandle synchronizeFile]; + [currentLogFileHandle closeFile]; + currentLogFileHandle = nil; + + currentLogFileInfo.isArchived = YES; + + if ([logFileManager respondsToSelector:@selector(didRollAndArchiveLogFile:)]) + { + [logFileManager didRollAndArchiveLogFile:(currentLogFileInfo.filePath)]; + } + + currentLogFileInfo = nil; + + if (rollingTimer) + { + dispatch_source_cancel(rollingTimer); + rollingTimer = NULL; + } +} + +- (void)maybeRollLogFileDueToAge +{ + if (rollingFrequency > 0.0 && currentLogFileInfo.age >= rollingFrequency) + { +// NSLogVerbose(@"DDFileLogger: Rolling log file due to age..."); + + [self rollLogFileNow]; + } + else + { + [self scheduleTimerToRollLogFileDueToAge]; + } +} + +- (void)maybeRollLogFileDueToSize +{ + // This method is called from logMessage. + // Keep it FAST. + + // Note: Use direct access to maximumFileSize variable. + // We specifically wrote our own getter/setter method to allow us to do this (for performance reasons). + + if (maximumFileSize > 0) + { + unsigned long long fileSize = [currentLogFileHandle offsetInFile]; + + if (fileSize >= maximumFileSize) + { +// NSLogVerbose(@"DDFileLogger: Rolling log file due to size (%qu)...", fileSize); + + [self rollLogFileNow]; + } + } +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark File Logging +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * Returns the log file that should be used. + * If there is an existing log file that is suitable, + * within the constraints of maximumFileSize and rollingFrequency, then it is returned. + * + * Otherwise a new file is created and returned. +**/ +- (DDLogFileInfo *)currentLogFileInfo +{ + if (currentLogFileInfo == nil) + { + NSArray *sortedLogFileInfos = [logFileManager sortedLogFileInfos]; + + if ([sortedLogFileInfos count] > 0) + { + DDLogFileInfo *mostRecentLogFileInfo = [sortedLogFileInfos objectAtIndex:0]; + + BOOL useExistingLogFile = YES; + BOOL shouldArchiveMostRecent = NO; + + if (mostRecentLogFileInfo.isArchived) + { + useExistingLogFile = NO; + shouldArchiveMostRecent = NO; + } + else if (maximumFileSize > 0 && mostRecentLogFileInfo.fileSize >= maximumFileSize) + { + useExistingLogFile = NO; + shouldArchiveMostRecent = YES; + } + else if (rollingFrequency > 0.0 && mostRecentLogFileInfo.age >= rollingFrequency) + { + useExistingLogFile = NO; + shouldArchiveMostRecent = YES; + } + + if (useExistingLogFile) + { + //NSLogVerbose(@"DDFileLogger: Resuming logging with file %@", mostRecentLogFileInfo.fileName); + + currentLogFileInfo = mostRecentLogFileInfo; + } + else + { + if (shouldArchiveMostRecent) + { + mostRecentLogFileInfo.isArchived = YES; + + if ([logFileManager respondsToSelector:@selector(didArchiveLogFile:)]) + { + [logFileManager didArchiveLogFile:(mostRecentLogFileInfo.filePath)]; + } + } + } + } + + if (currentLogFileInfo == nil) + { + NSString *currentLogFilePath = [logFileManager createNewLogFile]; + + currentLogFileInfo = [[DDLogFileInfo alloc] initWithFilePath:currentLogFilePath]; + } + } + + return currentLogFileInfo; +} + +- (NSFileHandle *)currentLogFileHandle +{ + if (currentLogFileHandle == nil) + { + NSString *logFilePath = [[self currentLogFileInfo] filePath]; + + currentLogFileHandle = [NSFileHandle fileHandleForWritingAtPath:logFilePath]; + [currentLogFileHandle seekToEndOfFile]; + + if (currentLogFileHandle) + { + [self scheduleTimerToRollLogFileDueToAge]; + } + } + + return currentLogFileHandle; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark DDLogger Protocol +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +- (void)logMessage:(DDLogMessage *)logMessage +{ + NSString *logMsg = logMessage->logMsg; + + if (formatter) + { + logMsg = [formatter formatLogMessage:logMessage]; + } + + if (logMsg) + { + if (![logMsg hasSuffix:@"\n"]) + { + logMsg = [logMsg stringByAppendingString:@"\n"]; + } + + NSData *logData = [logMsg dataUsingEncoding:NSUTF8StringEncoding]; + + [[self currentLogFileHandle] writeData:logData]; + + [self maybeRollLogFileDueToSize]; + } +} + +- (void)willRemoveLogger +{ + // If you override me be sure to invoke [super willRemoveLogger]; + + [self rollLogFileNow]; +} + +- (NSString *)loggerName +{ + return @"cocoa.lumberjack.fileLogger"; +} + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +#if TARGET_IPHONE_SIMULATOR + #define XATTR_ARCHIVED_NAME @"archived" +#else + #define XATTR_ARCHIVED_NAME @"lumberjack.log.archived" +#endif + +@implementation DDLogFileInfo + +@synthesize filePath; + +@dynamic fileName; +@dynamic fileAttributes; +@dynamic creationDate; +@dynamic modificationDate; +@dynamic fileSize; +@dynamic age; + +@dynamic isArchived; + + +#pragma mark Lifecycle + ++ (id)logFileWithPath:(NSString *)aFilePath +{ + return [[DDLogFileInfo alloc] initWithFilePath:aFilePath]; +} + +- (id)initWithFilePath:(NSString *)aFilePath +{ + if ((self = [super init])) + { + filePath = [aFilePath copy]; + } + return self; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Standard Info +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +- (NSDictionary *)fileAttributes +{ + if (fileAttributes == nil) + { + fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil]; + } + return fileAttributes; +} + +- (NSString *)fileName +{ + if (fileName == nil) + { + fileName = [filePath lastPathComponent]; + } + return fileName; +} + +- (NSDate *)modificationDate +{ + if (modificationDate == nil) + { + modificationDate = [[self fileAttributes] objectForKey:NSFileModificationDate]; + } + + return modificationDate; +} + +- (NSDate *)creationDate +{ + if (creationDate == nil) + { + + #if TARGET_OS_IPHONE + + const char *path = [filePath UTF8String]; + + struct attrlist attrList; + memset(&attrList, 0, sizeof(attrList)); + attrList.bitmapcount = ATTR_BIT_MAP_COUNT; + attrList.commonattr = ATTR_CMN_CRTIME; + + struct { + u_int32_t attrBufferSizeInBytes; + struct timespec crtime; + } attrBuffer; + + int result = getattrlist(path, &attrList, &attrBuffer, sizeof(attrBuffer), 0); + if (result == 0) + { + double seconds = (double)(attrBuffer.crtime.tv_sec); + double nanos = (double)(attrBuffer.crtime.tv_nsec); + + NSTimeInterval ti = seconds + (nanos / 1000000000.0); + + creationDate = [NSDate dateWithTimeIntervalSince1970:ti]; + } + else + { +// NSLogError(@"DDLogFileInfo: creationDate(%@): getattrlist result = %i", self.fileName, result); + } + + #else + + creationDate = [[self fileAttributes] objectForKey:NSFileCreationDate]; + + #endif + + } + return creationDate; +} + +- (unsigned long long)fileSize +{ + if (fileSize == 0) + { + fileSize = [[[self fileAttributes] objectForKey:NSFileSize] unsignedLongLongValue]; + } + + return fileSize; +} + +- (NSTimeInterval)age +{ + return [[self creationDate] timeIntervalSinceNow] * -1.0; +} + +- (NSString *)description +{ + return [@{@"filePath": self.filePath, + @"fileName": self.fileName, + @"fileAttributes": self.fileAttributes, + @"creationDate": self.creationDate, + @"modificationDate": self.modificationDate, + @"fileSize": @(self.fileSize), + @"age": @(self.age), + @"isArchived": @(self.isArchived)} description]; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Archiving +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +- (BOOL)isArchived +{ + +#if TARGET_IPHONE_SIMULATOR + + // Extended attributes don't work properly on the simulator. + // So we have to use a less attractive alternative. + // See full explanation in the header file. + + return [self hasExtensionAttributeWithName:XATTR_ARCHIVED_NAME]; + +#else + + return [self hasExtendedAttributeWithName:XATTR_ARCHIVED_NAME]; + +#endif +} + +- (void)setIsArchived:(BOOL)flag +{ + +#if TARGET_IPHONE_SIMULATOR + + // Extended attributes don't work properly on the simulator. + // So we have to use a less attractive alternative. + // See full explanation in the header file. + + if (flag) + [self addExtensionAttributeWithName:XATTR_ARCHIVED_NAME]; + else + [self removeExtensionAttributeWithName:XATTR_ARCHIVED_NAME]; + +#else + + if (flag) + [self addExtendedAttributeWithName:XATTR_ARCHIVED_NAME]; + else + [self removeExtendedAttributeWithName:XATTR_ARCHIVED_NAME]; + +#endif +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Changes +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +- (void)reset +{ + fileName = nil; + fileAttributes = nil; + creationDate = nil; + modificationDate = nil; +} + +- (void)renameFile:(NSString *)newFileName +{ + // This method is only used on the iPhone simulator, where normal extended attributes are broken. + // See full explanation in the header file. + + if (![newFileName isEqualToString:[self fileName]]) + { + NSString *fileDir = [filePath stringByDeletingLastPathComponent]; + + NSString *newFilePath = [fileDir stringByAppendingPathComponent:newFileName]; + +// NSLogVerbose(@"DDLogFileInfo: Renaming file: '%@' -> '%@'", self.fileName, newFileName); + + NSError *error = nil; + if (![[NSFileManager defaultManager] moveItemAtPath:filePath toPath:newFilePath error:&error]) + { + ; +// NSLogError(@"DDLogFileInfo: Error renaming file (%@): %@", self.fileName, error); + } + + filePath = newFilePath; + [self reset]; + } +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Attribute Management +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +#if TARGET_IPHONE_SIMULATOR + +// Extended attributes don't work properly on the simulator. +// So we have to use a less attractive alternative. +// See full explanation in the header file. + +- (BOOL)hasExtensionAttributeWithName:(NSString *)attrName +{ + // This method is only used on the iPhone simulator, where normal extended attributes are broken. + // See full explanation in the header file. + + // Split the file name into components. + // + // log-ABC123.archived.uploaded.txt + // + // 0. log-ABC123 + // 1. archived + // 2. uploaded + // 3. txt + // + // So we want to search for the attrName in the components (ignoring the first and last array indexes). + + NSArray *components = [[self fileName] componentsSeparatedByString:@"."]; + + // Watch out for file names without an extension + + NSUInteger count = [components count]; + NSUInteger max = (count >= 2) ? count-1 : count; + + NSUInteger i; + for (i = 1; i < max; i++) + { + NSString *attr = [components objectAtIndex:i]; + + if ([attrName isEqualToString:attr]) + { + return YES; + } + } + + return NO; +} + +- (void)addExtensionAttributeWithName:(NSString *)attrName +{ + // This method is only used on the iPhone simulator, where normal extended attributes are broken. + // See full explanation in the header file. + + if ([attrName length] == 0) return; + + // Example: + // attrName = "archived" + // + // "log-ABC123.txt" -> "log-ABC123.archived.txt" + + NSArray *components = [[self fileName] componentsSeparatedByString:@"."]; + + NSUInteger count = [components count]; + + NSUInteger estimatedNewLength = [[self fileName] length] + [attrName length] + 1; + NSMutableString *newFileName = [NSMutableString stringWithCapacity:estimatedNewLength]; + + if (count > 0) + { + [newFileName appendString:[components objectAtIndex:0]]; + } + + NSString *lastExt = @""; + + NSUInteger i; + for (i = 1; i < count; i++) + { + NSString *attr = [components objectAtIndex:i]; + if ([attr length] == 0) + { + continue; + } + + if ([attrName isEqualToString:attr]) + { + // Extension attribute already exists in file name + return; + } + + if ([lastExt length] > 0) + { + [newFileName appendFormat:@".%@", lastExt]; + } + + lastExt = attr; + } + + [newFileName appendFormat:@".%@", attrName]; + + if ([lastExt length] > 0) + { + [newFileName appendFormat:@".%@", lastExt]; + } + + [self renameFile:newFileName]; +} + +- (void)removeExtensionAttributeWithName:(NSString *)attrName +{ + // This method is only used on the iPhone simulator, where normal extended attributes are broken. + // See full explanation in the header file. + + if ([attrName length] == 0) return; + + // Example: + // attrName = "archived" + // + // "log-ABC123.txt" -> "log-ABC123.archived.txt" + + NSArray *components = [[self fileName] componentsSeparatedByString:@"."]; + + NSUInteger count = [components count]; + + NSUInteger estimatedNewLength = [[self fileName] length]; + NSMutableString *newFileName = [NSMutableString stringWithCapacity:estimatedNewLength]; + + if (count > 0) + { + [newFileName appendString:[components objectAtIndex:0]]; + } + + BOOL found = NO; + + NSUInteger i; + for (i = 1; i < count; i++) + { + NSString *attr = [components objectAtIndex:i]; + + if ([attrName isEqualToString:attr]) + { + found = YES; + } + else + { + [newFileName appendFormat:@".%@", attr]; + } + } + + if (found) + { + [self renameFile:newFileName]; + } +} + +#else + +- (BOOL)hasExtendedAttributeWithName:(NSString *)attrName +{ + const char *path = [filePath UTF8String]; + const char *name = [attrName UTF8String]; + + ssize_t result = getxattr(path, name, NULL, 0, 0, 0); + + return (result >= 0); +} + +- (void)addExtendedAttributeWithName:(NSString *)attrName +{ + const char *path = [filePath UTF8String]; + const char *name = [attrName UTF8String]; + + int result = setxattr(path, name, NULL, 0, 0, 0); + + if (result < 0) + { + ; + //NSLogError(@"DDLogFileInfo: setxattr(%@, %@): error = %i", attrName, self.fileName, result); + } +} + +- (void)removeExtendedAttributeWithName:(NSString *)attrName +{ + const char *path = [filePath UTF8String]; + const char *name = [attrName UTF8String]; + + int result = removexattr(path, name, 0); + + if (result < 0 && errno != ENOATTR) + { + ; + //NSLogError(@"DDLogFileInfo: removexattr(%@, %@): error = %i", attrName, self.fileName, result); + } +} + +#endif + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Comparisons +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +- (BOOL)isEqual:(id)object +{ + if ([object isKindOfClass:[self class]]) + { + DDLogFileInfo *another = (DDLogFileInfo *)object; + + return [filePath isEqualToString:[another filePath]]; + } + + return NO; +} + +- (NSComparisonResult)reverseCompareByCreationDate:(DDLogFileInfo *)another +{ + NSDate *us = [self creationDate]; + NSDate *them = [another creationDate]; + + NSComparisonResult result = [us compare:them]; + + if (result == NSOrderedAscending) + return NSOrderedDescending; + + if (result == NSOrderedDescending) + return NSOrderedAscending; + + return NSOrderedSame; +} + +- (NSComparisonResult)reverseCompareByModificationDate:(DDLogFileInfo *)another +{ + NSDate *us = [self modificationDate]; + NSDate *them = [another modificationDate]; + + NSComparisonResult result = [us compare:them]; + + if (result == NSOrderedAscending) + return NSOrderedDescending; + + if (result == NSOrderedDescending) + return NSOrderedAscending; + + return NSOrderedSame; +} + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDLog.h b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDLog.h new file mode 100755 index 00000000..487b7171 --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDLog.h @@ -0,0 +1,601 @@ +#import + +/** + * Welcome to Cocoa Lumberjack! + * + * The project page has a wealth of documentation if you have any questions. + * https://github.com/robbiehanson/CocoaLumberjack + * + * If you're new to the project you may wish to read the "Getting Started" wiki. + * https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted + * + * Otherwise, here is a quick refresher. + * There are three steps to using the macros: + * + * Step 1: + * Import the header in your implementation file: + * + * #import "DDLog.h" + * + * Step 2: + * Define your logging level in your implementation file: + * + * // Log levels: off, error, warn, info, verbose + * static const int ddLogLevel = LOG_LEVEL_VERBOSE; + * + * Step 3: + * Replace your NSLog statements with DDLog statements according to the severity of the message. + * + * NSLog(@"Fatal error, no dohickey found!"); -> DDLogError(@"Fatal error, no dohickey found!"); + * + * DDLog works exactly the same as NSLog. + * This means you can pass it multiple variables just like NSLog. +**/ + + +@class DDLogMessage; + +@protocol DDLogger; +@protocol DDLogFormatter; + +/** + * This is the single macro that all other macros below compile into. + * This big multiline macro makes all the other macros easier to read. +**/ + +#define LOG_MACRO(isAsynchronous, lvl, flg, ctx, atag, fnct, frmt, ...) \ + [DDLog log:isAsynchronous \ + level:lvl \ + flag:flg \ + context:ctx \ + file:__FILE__ \ + function:fnct \ + line:__LINE__ \ + tag:atag \ + format:(frmt), ##__VA_ARGS__] + +/** + * Define the Objective-C and C versions of the macro. + * These automatically inject the proper function name for either an objective-c method or c function. + * + * We also define shorthand versions for asynchronous and synchronous logging. +**/ + +#define LOG_OBJC_MACRO(async, lvl, flg, ctx, frmt, ...) \ + LOG_MACRO(async, lvl, flg, ctx, nil, sel_getName(_cmd), frmt, ##__VA_ARGS__) + +#define LOG_C_MACRO(async, lvl, flg, ctx, frmt, ...) \ + LOG_MACRO(async, lvl, flg, ctx, nil, __FUNCTION__, frmt, ##__VA_ARGS__) + +#define SYNC_LOG_OBJC_MACRO(lvl, flg, ctx, frmt, ...) \ + LOG_OBJC_MACRO( NO, lvl, flg, ctx, frmt, ##__VA_ARGS__) + +#define ASYNC_LOG_OBJC_MACRO(lvl, flg, ctx, frmt, ...) \ + LOG_OBJC_MACRO(YES, lvl, flg, ctx, frmt, ##__VA_ARGS__) + +#define SYNC_LOG_C_MACRO(lvl, flg, ctx, frmt, ...) \ + LOG_C_MACRO( NO, lvl, flg, ctx, frmt, ##__VA_ARGS__) + +#define ASYNC_LOG_C_MACRO(lvl, flg, ctx, frmt, ...) \ + LOG_C_MACRO(YES, lvl, flg, ctx, frmt, ##__VA_ARGS__) + +/** + * Define version of the macro that only execute if the logLevel is above the threshold. + * The compiled versions essentially look like this: + * + * if (logFlagForThisLogMsg & ddLogLevel) { execute log message } + * + * As shown further below, Lumberjack actually uses a bitmask as opposed to primitive log levels. + * This allows for a great amount of flexibility and some pretty advanced fine grained logging techniques. + * + * Note that when compiler optimizations are enabled (as they are for your release builds), + * the log messages above your logging threshold will automatically be compiled out. + * + * (If the compiler sees ddLogLevel declared as a constant, the compiler simply checks to see if the 'if' statement + * would execute, and if not it strips it from the binary.) + * + * We also define shorthand versions for asynchronous and synchronous logging. +**/ + +#define LOG_MAYBE(async, lvl, flg, ctx, fnct, frmt, ...) \ + do { if(lvl & flg) LOG_MACRO(async, lvl, flg, ctx, nil, fnct, frmt, ##__VA_ARGS__); } while(0) + +#define LOG_OBJC_MAYBE(async, lvl, flg, ctx, frmt, ...) \ + LOG_MAYBE(async, lvl, flg, ctx, sel_getName(_cmd), frmt, ##__VA_ARGS__) + +#define LOG_C_MAYBE(async, lvl, flg, ctx, frmt, ...) \ + LOG_MAYBE(async, lvl, flg, ctx, __FUNCTION__, frmt, ##__VA_ARGS__) + +#define SYNC_LOG_OBJC_MAYBE(lvl, flg, ctx, frmt, ...) \ + LOG_OBJC_MAYBE( NO, lvl, flg, ctx, frmt, ##__VA_ARGS__) + +#define ASYNC_LOG_OBJC_MAYBE(lvl, flg, ctx, frmt, ...) \ + LOG_OBJC_MAYBE(YES, lvl, flg, ctx, frmt, ##__VA_ARGS__) + +#define SYNC_LOG_C_MAYBE(lvl, flg, ctx, frmt, ...) \ + LOG_C_MAYBE( NO, lvl, flg, ctx, frmt, ##__VA_ARGS__) + +#define ASYNC_LOG_C_MAYBE(lvl, flg, ctx, frmt, ...) \ + LOG_C_MAYBE(YES, lvl, flg, ctx, frmt, ##__VA_ARGS__) + +/** + * Define versions of the macros that also accept tags. + * + * The DDLogMessage object includes a 'tag' ivar that may be used for a variety of purposes. + * It may be used to pass custom information to loggers or formatters. + * Or it may be used by 3rd party extensions to the framework. + * + * Thes macros just make it a little easier to extend logging functionality. +**/ + +#define LOG_OBJC_TAG_MACRO(async, lvl, flg, ctx, tag, frmt, ...) \ + LOG_MACRO(async, lvl, flg, ctx, tag, sel_getName(_cmd), frmt, ##__VA_ARGS__) + +#define LOG_C_TAG_MACRO(async, lvl, flg, ctx, tag, frmt, ...) \ + LOG_MACRO(async, lvl, flg, ctx, tag, __FUNCTION__, frmt, ##__VA_ARGS__) + +#define LOG_TAG_MAYBE(async, lvl, flg, ctx, tag, fnct, frmt, ...) \ + do { if(lvl & flg) LOG_MACRO(async, lvl, flg, ctx, tag, fnct, frmt, ##__VA_ARGS__); } while(0) + +#define LOG_OBJC_TAG_MAYBE(async, lvl, flg, ctx, tag, frmt, ...) \ + LOG_TAG_MAYBE(async, lvl, flg, ctx, tag, sel_getName(_cmd), frmt, ##__VA_ARGS__) + +#define LOG_C_TAG_MAYBE(async, lvl, flg, ctx, tag, frmt, ...) \ + LOG_TAG_MAYBE(async, lvl, flg, ctx, tag, __FUNCTION__, frmt, ##__VA_ARGS__) + +/** + * Define the standard options. + * + * We default to only 4 levels because it makes it easier for beginners + * to make the transition to a logging framework. + * + * More advanced users may choose to completely customize the levels (and level names) to suite their needs. + * For more information on this see the "Custom Log Levels" page: + * https://github.com/robbiehanson/CocoaLumberjack/wiki/CustomLogLevels + * + * Advanced users may also notice that we're using a bitmask. + * This is to allow for custom fine grained logging: + * https://github.com/robbiehanson/CocoaLumberjack/wiki/FineGrainedLogging + * + * -- Flags -- + * + * Typically you will use the LOG_LEVELS (see below), but the flags may be used directly in certain situations. + * For example, say you have a lot of warning log messages, and you wanted to disable them. + * However, you still needed to see your error and info log messages. + * You could accomplish that with the following: + * + * static const int ddLogLevel = LOG_FLAG_ERROR | LOG_FLAG_INFO; + * + * Flags may also be consulted when writing custom log formatters, + * as the DDLogMessage class captures the individual flag that caused the log message to fire. + * + * -- Levels -- + * + * Log levels are simply the proper bitmask of the flags. + * + * -- Booleans -- + * + * The booleans may be used when your logging code involves more than one line. + * For example: + * + * if (LOG_VERBOSE) { + * for (id sprocket in sprockets) + * DDLogVerbose(@"sprocket: %@", [sprocket description]) + * } + * + * -- Async -- + * + * Defines the default asynchronous options. + * The default philosophy for asynchronous logging is very simple: + * + * Log messages with errors should be executed synchronously. + * After all, an error just occurred. The application could be unstable. + * + * All other log messages, such as debug output, are executed asynchronously. + * After all, if it wasn't an error, then it was just informational output, + * or something the application was easily able to recover from. + * + * -- Changes -- + * + * You are strongly discouraged from modifying this file. + * If you do, you make it more difficult on yourself to merge future bug fixes and improvements from the project. + * Instead, create your own MyLogging.h or ApplicationNameLogging.h or CompanyLogging.h + * + * For an example of customizing your logging experience, see the "Custom Log Levels" page: + * https://github.com/robbiehanson/CocoaLumberjack/wiki/CustomLogLevels +**/ + +#define LOG_FLAG_ERROR (1 << 0) // 0...0001 +#define LOG_FLAG_WARN (1 << 1) // 0...0010 +#define LOG_FLAG_INFO (1 << 2) // 0...0100 +#define LOG_FLAG_VERBOSE (1 << 3) // 0...1000 + +#define LOG_LEVEL_OFF 0 +#define LOG_LEVEL_ERROR (LOG_FLAG_ERROR) // 0...0001 +#define LOG_LEVEL_WARN (LOG_FLAG_ERROR | LOG_FLAG_WARN) // 0...0011 +#define LOG_LEVEL_INFO (LOG_FLAG_ERROR | LOG_FLAG_WARN | LOG_FLAG_INFO) // 0...0111 +#define LOG_LEVEL_VERBOSE (LOG_FLAG_ERROR | LOG_FLAG_WARN | LOG_FLAG_INFO | LOG_FLAG_VERBOSE) // 0...1111 + +#define LOG_ERROR (ddLogLevel & LOG_FLAG_ERROR) +#define LOG_WARN (ddLogLevel & LOG_FLAG_WARN) +#define LOG_INFO (ddLogLevel & LOG_FLAG_INFO) +#define LOG_VERBOSE (ddLogLevel & LOG_FLAG_VERBOSE) + +#define LOG_ASYNC_ENABLED YES + +#define LOG_ASYNC_ERROR ( NO && LOG_ASYNC_ENABLED) +#define LOG_ASYNC_WARN (YES && LOG_ASYNC_ENABLED) +#define LOG_ASYNC_INFO (YES && LOG_ASYNC_ENABLED) +#define LOG_ASYNC_VERBOSE (YES && LOG_ASYNC_ENABLED) + +#define DDLogError(frmt, ...) LOG_OBJC_MAYBE(LOG_ASYNC_ERROR, ddLogLevel, LOG_FLAG_ERROR, 0, frmt, ##__VA_ARGS__) +#define DDLogWarn(frmt, ...) LOG_OBJC_MAYBE(LOG_ASYNC_WARN, ddLogLevel, LOG_FLAG_WARN, 0, frmt, ##__VA_ARGS__) +#define DDLogInfo(frmt, ...) LOG_OBJC_MAYBE(LOG_ASYNC_INFO, ddLogLevel, LOG_FLAG_INFO, 0, frmt, ##__VA_ARGS__) +#define DDLogVerbose(frmt, ...) LOG_OBJC_MAYBE(LOG_ASYNC_VERBOSE, ddLogLevel, LOG_FLAG_VERBOSE, 0, frmt, ##__VA_ARGS__) + +#define DDLogCError(frmt, ...) LOG_C_MAYBE(LOG_ASYNC_ERROR, ddLogLevel, LOG_FLAG_ERROR, 0, frmt, ##__VA_ARGS__) +#define DDLogCWarn(frmt, ...) LOG_C_MAYBE(LOG_ASYNC_WARN, ddLogLevel, LOG_FLAG_WARN, 0, frmt, ##__VA_ARGS__) +#define DDLogCInfo(frmt, ...) LOG_C_MAYBE(LOG_ASYNC_INFO, ddLogLevel, LOG_FLAG_INFO, 0, frmt, ##__VA_ARGS__) +#define DDLogCVerbose(frmt, ...) LOG_C_MAYBE(LOG_ASYNC_VERBOSE, ddLogLevel, LOG_FLAG_VERBOSE, 0, frmt, ##__VA_ARGS__) + +/** + * The THIS_FILE macro gives you an NSString of the file name. + * For simplicity and clarity, the file name does not include the full path or file extension. + * + * For example: DDLogWarn(@"%@: Unable to find thingy", THIS_FILE) -> @"MyViewController: Unable to find thingy" +**/ + +NSString *DDExtractFileNameWithoutExtension(const char *filePath, BOOL copy); + +#define THIS_FILE (DDExtractFileNameWithoutExtension(__FILE__, NO)) + +/** + * The THIS_METHOD macro gives you the name of the current objective-c method. + * + * For example: DDLogWarn(@"%@ - Requires non-nil strings", THIS_METHOD) -> @"setMake:model: requires non-nil strings" + * + * Note: This does NOT work in straight C functions (non objective-c). + * Instead you should use the predefined __FUNCTION__ macro. +**/ + +#define THIS_METHOD NSStringFromSelector(_cmd) + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +@interface DDLog : NSObject + +/** + * Provides access to the underlying logging queue. + * This may be helpful to Logger classes for things like thread synchronization. +**/ + ++ (dispatch_queue_t)loggingQueue; + +/** + * Logging Primitive. + * + * This method is used by the macros above. + * It is suggested you stick with the macros as they're easier to use. +**/ + ++ (void)log:(BOOL)synchronous + level:(int)level + flag:(int)flag + context:(int)context + file:(const char *)file + function:(const char *)function + line:(int)line + tag:(id)tag + format:(NSString *)format, ... __attribute__ ((format (__NSString__, 9, 10))); + +/** + * Logging Primitive. + * + * This method can be used if you have a prepared va_list. +**/ + ++ (void)log:(BOOL)asynchronous + level:(int)level + flag:(int)flag + context:(int)context + file:(const char *)file + function:(const char *)function + line:(int)line + tag:(id)tag + format:(NSString *)format + args:(va_list)argList; + + +/** + * Since logging can be asynchronous, there may be times when you want to flush the logs. + * The framework invokes this automatically when the application quits. +**/ + ++ (void)flushLog; + +/** + * Loggers + * + * If you want your log statements to go somewhere, + * you should create and add a logger. +**/ + ++ (void)addLogger:(id )logger; ++ (void)removeLogger:(id )logger; + ++ (void)removeAllLoggers; + +/** + * Registered Dynamic Logging + * + * These methods allow you to obtain a list of classes that are using registered dynamic logging, + * and also provides methods to get and set their log level during run time. +**/ + ++ (NSArray *)registeredClasses; ++ (NSArray *)registeredClassNames; + ++ (int)logLevelForClass:(Class)aClass; ++ (int)logLevelForClassWithName:(NSString *)aClassName; + ++ (void)setLogLevel:(int)logLevel forClass:(Class)aClass; ++ (void)setLogLevel:(int)logLevel forClassWithName:(NSString *)aClassName; + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +@protocol DDLogger +@required + +- (void)logMessage:(DDLogMessage *)logMessage; + +/** + * Formatters may optionally be added to any logger. + * + * If no formatter is set, the logger simply logs the message as it is given in logMessage, + * or it may use its own built in formatting style. +**/ +- (id )logFormatter; +- (void)setLogFormatter:(id )formatter; + +@optional + +/** + * Since logging is asynchronous, adding and removing loggers is also asynchronous. + * In other words, the loggers are added and removed at appropriate times with regards to log messages. + * + * - Loggers will not receive log messages that were executed prior to when they were added. + * - Loggers will not receive log messages that were executed after they were removed. + * + * These methods are executed in the logging thread/queue. + * This is the same thread/queue that will execute every logMessage: invocation. + * Loggers may use these methods for thread synchronization or other setup/teardown tasks. +**/ +- (void)didAddLogger; +- (void)willRemoveLogger; + +/** + * Some loggers may buffer IO for optimization purposes. + * For example, a database logger may only save occasionaly as the disk IO is slow. + * In such loggers, this method should be implemented to flush any pending IO. + * + * This allows invocations of DDLog's flushLog method to be propogated to loggers that need it. + * + * Note that DDLog's flushLog method is invoked automatically when the application quits, + * and it may be also invoked manually by the developer prior to application crashes, or other such reasons. +**/ +- (void)flush; + +/** + * Each logger is executed concurrently with respect to the other loggers. + * Thus, a dedicated dispatch queue is used for each logger. + * Logger implementations may optionally choose to provide their own dispatch queue. +**/ +- (dispatch_queue_t)loggerQueue; + +/** + * If the logger implementation does not choose to provide its own queue, + * one will automatically be created for it. + * The created queue will receive its name from this method. + * This may be helpful for debugging or profiling reasons. +**/ +- (NSString *)loggerName; + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +@protocol DDLogFormatter +@required + +/** + * Formatters may optionally be added to any logger. + * This allows for increased flexibility in the logging environment. + * For example, log messages for log files may be formatted differently than log messages for the console. + * + * For more information about formatters, see the "Custom Formatters" page: + * https://github.com/robbiehanson/CocoaLumberjack/wiki/CustomFormatters + * + * The formatter may also optionally filter the log message by returning nil, + * in which case the logger will not log the message. +**/ +- (NSString *)formatLogMessage:(DDLogMessage *)logMessage; + +@optional + +/** + * A single formatter instance can be added to multiple loggers. + * These methods provides hooks to notify the formatter of when it's added/removed. + * + * This is primarily for thread-safety. + * If a formatter is explicitly not thread-safe, it may wish to throw an exception if added to multiple loggers. + * Or if a formatter has potentially thread-unsafe code (e.g. NSDateFormatter), + * it could possibly use these hooks to switch to thread-safe versions of the code. +**/ +- (void)didAddToLogger:(id )logger; +- (void)willRemoveFromLogger:(id )logger; + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +@protocol DDRegisteredDynamicLogging + +/** + * Implement these methods to allow a file's log level to be managed from a central location. + * + * This is useful if you'd like to be able to change log levels for various parts + * of your code from within the running application. + * + * Imagine pulling up the settings for your application, + * and being able to configure the logging level on a per file basis. + * + * The implementation can be very straight-forward: + * + * + (int)ddLogLevel + * { + * return ddLogLevel; + * } + * + * + (void)ddSetLogLevel:(int)logLevel + * { + * ddLogLevel = logLevel; + * } +**/ + ++ (int)ddLogLevel; ++ (void)ddSetLogLevel:(int)logLevel; + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * The DDLogMessage class encapsulates information about the log message. + * If you write custom loggers or formatters, you will be dealing with objects of this class. +**/ + +enum { + DDLogMessageCopyFile = 1 << 0, + DDLogMessageCopyFunction = 1 << 1 +}; +typedef int DDLogMessageOptions; + +@interface DDLogMessage : NSObject +{ + +// The public variables below can be accessed directly (for speed). +// For example: logMessage->logLevel + +@public + int logLevel; + int logFlag; + int logContext; + NSString *logMsg; + NSDate *timestamp; + char *file; + char *function; + int lineNumber; + mach_port_t machThreadID; + char *queueLabel; + NSString *threadName; + + // For 3rd party extensions to the framework, where flags and contexts aren't enough. + id tag; + + // For 3rd party extensions that manually create DDLogMessage instances. + DDLogMessageOptions options; +} + +/** + * Standard init method for a log message object. + * Used by the logging primitives. (And the macros use the logging primitives.) + * + * If you find need to manually create logMessage objects, there is one thing you should be aware of: + * + * If no flags are passed, the method expects the file and function parameters to be string literals. + * That is, it expects the given strings to exist for the duration of the object's lifetime, + * and it expects the given strings to be immutable. + * In other words, it does not copy these strings, it simply points to them. + * This is due to the fact that __FILE__ and __FUNCTION__ are usually used to specify these parameters, + * so it makes sense to optimize and skip the unnecessary allocations. + * However, if you need them to be copied you may use the options parameter to specify this. + * Options is a bitmask which supports DDLogMessageCopyFile and DDLogMessageCopyFunction. +**/ +- (id)initWithLogMsg:(NSString *)logMsg + level:(int)logLevel + flag:(int)logFlag + context:(int)logContext + file:(const char *)file + function:(const char *)function + line:(int)line + tag:(id)tag + options:(DDLogMessageOptions)optionsMask; + +/** + * Returns the threadID as it appears in NSLog. + * That is, it is a hexadecimal value which is calculated from the machThreadID. +**/ +- (NSString *)threadID; + +/** + * Convenience property to get just the file name, as the file variable is generally the full file path. + * This method does not include the file extension, which is generally unwanted for logging purposes. +**/ +- (NSString *)fileName; + +/** + * Returns the function variable in NSString form. +**/ +- (NSString *)methodName; + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * The DDLogger protocol specifies that an optional formatter can be added to a logger. + * Most (but not all) loggers will want to support formatters. + * + * However, writting getters and setters in a thread safe manner, + * while still maintaining maximum speed for the logging process, is a difficult task. + * + * To do it right, the implementation of the getter/setter has strict requiremenets: + * - Must NOT require the logMessage method to acquire a lock. + * - Must NOT require the logMessage method to access an atomic property (also a lock of sorts). + * + * To simplify things, an abstract logger is provided that implements the getter and setter. + * + * Logger implementations may simply extend this class, + * and they can ACCESS THE FORMATTER VARIABLE DIRECTLY from within their logMessage method! +**/ + +@interface DDAbstractLogger : NSObject +{ + id formatter; + + dispatch_queue_t loggerQueue; +} + +- (id )logFormatter; +- (void)setLogFormatter:(id )formatter; + +// For thread-safety assertions +- (BOOL)isOnGlobalLoggingQueue; +- (BOOL)isOnInternalLoggerQueue; + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDLog.m b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDLog.m new file mode 100755 index 00000000..492922ef --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDLog.m @@ -0,0 +1,1083 @@ +#import "DDLog.h" + +#import +#import +#import +#import +#import + + +/** + * Welcome to Cocoa Lumberjack! + * + * The project page has a wealth of documentation if you have any questions. + * https://github.com/robbiehanson/CocoaLumberjack + * + * If you're new to the project you may wish to read the "Getting Started" wiki. + * https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted + * +**/ + +#if ! __has_feature(objc_arc) +#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). +#endif + +// We probably shouldn't be using DDLog() statements within the DDLog implementation. +// But we still want to leave our log statements for any future debugging, +// and to allow other developers to trace the implementation (which is a great learning tool). +// +// So we use a primitive logging macro around NSLog. +// We maintain the NS prefix on the macros to be explicit about the fact that we're using NSLog. + +#define DD_DEBUG NO + +#define NSLogDebug(frmt, ...) do{ if(DD_DEBUG) NSLog((frmt), ##__VA_ARGS__); } while(0) + +// Specifies the maximum queue size of the logging thread. +// +// Since most logging is asynchronous, its possible for rogue threads to flood the logging queue. +// That is, to issue an abundance of log statements faster than the logging thread can keepup. +// Typically such a scenario occurs when log statements are added haphazardly within large loops, +// but may also be possible if relatively slow loggers are being used. +// +// This property caps the queue size at a given number of outstanding log statements. +// If a thread attempts to issue a log statement when the queue is already maxed out, +// the issuing thread will block until the queue size drops below the max again. + +#define LOG_MAX_QUEUE_SIZE 1000 // Should not exceed INT32_MAX + +// The "global logging queue" refers to [DDLog loggingQueue]. +// It is the queue that all log statements go through. +// +// The logging queue sets a flag via dispatch_queue_set_specific using this key. +// We can check for this key via dispatch_get_specific() to see if we're on the "global logging queue". + +static void *const GlobalLoggingQueueIdentityKey = (void *)&GlobalLoggingQueueIdentityKey; + + +@interface DDLoggerNode : NSObject { +@public + id logger; + dispatch_queue_t loggerQueue; +} + ++ (DDLoggerNode *)nodeWithLogger:(id )logger loggerQueue:(dispatch_queue_t)loggerQueue; + +@end + + +@interface DDLog (PrivateAPI) + ++ (void)lt_addLogger:(id )logger; ++ (void)lt_removeLogger:(id )logger; ++ (void)lt_removeAllLoggers; ++ (void)lt_log:(DDLogMessage *)logMessage; ++ (void)lt_flush; + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +@implementation DDLog + +// An array used to manage all the individual loggers. +// The array is only modified on the loggingQueue/loggingThread. +static NSMutableArray *loggers; + +// All logging statements are added to the same queue to ensure FIFO operation. +static dispatch_queue_t loggingQueue; + +// Individual loggers are executed concurrently per log statement. +// Each logger has it's own associated queue, and a dispatch group is used for synchrnoization. +static dispatch_group_t loggingGroup; + +// In order to prevent to queue from growing infinitely large, +// a maximum size is enforced (LOG_MAX_QUEUE_SIZE). +static dispatch_semaphore_t queueSemaphore; + +// Minor optimization for uniprocessor machines +static unsigned int numProcessors; + +/** + * The runtime sends initialize to each class in a program exactly one time just before the class, + * or any class that inherits from it, is sent its first message from within the program. (Thus the + * method may never be invoked if the class is not used.) The runtime sends the initialize message to + * classes in a thread-safe manner. Superclasses receive this message before their subclasses. + * + * This method may also be called directly (assumably by accident), hence the safety mechanism. +**/ ++ (void)initialize +{ + static BOOL initialized = NO; + if (!initialized) + { + initialized = YES; + + loggers = [[NSMutableArray alloc] initWithCapacity:4]; + + //NSLogDebug(@"DDLog: Using grand central dispatch"); + + loggingQueue = dispatch_queue_create("cocoa.lumberjack", NULL); + loggingGroup = dispatch_group_create(); + + void *nonNullValue = GlobalLoggingQueueIdentityKey; // Whatever, just not null + dispatch_queue_set_specific(loggingQueue, GlobalLoggingQueueIdentityKey, nonNullValue, NULL); + + queueSemaphore = dispatch_semaphore_create(LOG_MAX_QUEUE_SIZE); + + // Figure out how many processors are available. + // This may be used later for an optimization on uniprocessor machines. + + host_basic_info_data_t hostInfo; + mach_msg_type_number_t infoCount; + + infoCount = HOST_BASIC_INFO_COUNT; + host_info(mach_host_self(), HOST_BASIC_INFO, (host_info_t)&hostInfo, &infoCount); + + unsigned int result = (unsigned int)(hostInfo.max_cpus); + unsigned int one = (unsigned int)(1); + + numProcessors = MAX(result, one); + + //NSLogDebug(@"DDLog: numProcessors = %u", numProcessors); + + + #if TARGET_OS_IPHONE + NSString *notificationName = @"UIApplicationWillTerminateNotification"; + #else + NSString *notificationName = @"NSApplicationWillTerminateNotification"; + #endif + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(applicationWillTerminate:) + name:notificationName + object:nil]; + } +} + +/** + * Provides access to the logging queue. +**/ ++ (dispatch_queue_t)loggingQueue +{ + return loggingQueue; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Notifications +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ++ (void)applicationWillTerminate:(NSNotification *)notification +{ + [self flushLog]; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Logger Management +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ++ (void)addLogger:(id )logger +{ + if (logger == nil) return; + + dispatch_async(loggingQueue, ^{ @autoreleasepool { + + [self lt_addLogger:logger]; + }}); +} + ++ (void)removeLogger:(id )logger +{ + if (logger == nil) return; + + dispatch_async(loggingQueue, ^{ @autoreleasepool { + + [self lt_removeLogger:logger]; + }}); +} + ++ (void)removeAllLoggers +{ + dispatch_async(loggingQueue, ^{ @autoreleasepool { + + [self lt_removeAllLoggers]; + }}); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Master Logging +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ++ (void)queueLogMessage:(DDLogMessage *)logMessage asynchronously:(BOOL)asyncFlag +{ + // We have a tricky situation here... + // + // In the common case, when the queueSize is below the maximumQueueSize, + // we want to simply enqueue the logMessage. And we want to do this as fast as possible, + // which means we don't want to block and we don't want to use any locks. + // + // However, if the queueSize gets too big, we want to block. + // But we have very strict requirements as to when we block, and how long we block. + // + // The following example should help illustrate our requirements: + // + // Imagine that the maximum queue size is configured to be 5, + // and that there are already 5 log messages queued. + // Let us call these 5 queued log messages A, B, C, D, and E. (A is next to be executed) + // + // Now if our thread issues a log statement (let us call the log message F), + // it should block before the message is added to the queue. + // Furthermore, it should be unblocked immediately after A has been unqueued. + // + // The requirements are strict in this manner so that we block only as long as necessary, + // and so that blocked threads are unblocked in the order in which they were blocked. + // + // Returning to our previous example, let us assume that log messages A through E are still queued. + // Our aforementioned thread is blocked attempting to queue log message F. + // Now assume we have another separate thread that attempts to issue log message G. + // It should block until log messages A and B have been unqueued. + + + // We are using a counting semaphore provided by GCD. + // The semaphore is initialized with our LOG_MAX_QUEUE_SIZE value. + // Everytime we want to queue a log message we decrement this value. + // If the resulting value is less than zero, + // the semaphore function waits in FIFO order for a signal to occur before returning. + // + // A dispatch semaphore is an efficient implementation of a traditional counting semaphore. + // Dispatch semaphores call down to the kernel only when the calling thread needs to be blocked. + // If the calling semaphore does not need to block, no kernel call is made. + + dispatch_semaphore_wait(queueSemaphore, DISPATCH_TIME_FOREVER); + + // We've now sure we won't overflow the queue. + // It is time to queue our log message. + + dispatch_block_t logBlock = ^{ @autoreleasepool { + + [self lt_log:logMessage]; + }}; + + if (asyncFlag) + dispatch_async(loggingQueue, logBlock); + else + dispatch_sync(loggingQueue, logBlock); +} + ++ (void)log:(BOOL)asynchronous + level:(int)level + flag:(int)flag + context:(int)context + file:(const char *)file + function:(const char *)function + line:(int)line + tag:(id)tag + format:(NSString *)format, ... +{ + va_list args; + if (format) + { + va_start(args, format); + + NSString *logMsg = [[NSString alloc] initWithFormat:format arguments:args]; + DDLogMessage *logMessage = [[DDLogMessage alloc] initWithLogMsg:logMsg + level:level + flag:flag + context:context + file:file + function:function + line:line + tag:tag + options:0]; + + [self queueLogMessage:logMessage asynchronously:asynchronous]; + + va_end(args); + } +} + ++ (void)log:(BOOL)asynchronous + level:(int)level + flag:(int)flag + context:(int)context + file:(const char *)file + function:(const char *)function + line:(int)line + tag:(id)tag + format:(NSString *)format + args:(va_list)args +{ + if (format) + { + NSString *logMsg = [[NSString alloc] initWithFormat:format arguments:args]; + DDLogMessage *logMessage = [[DDLogMessage alloc] initWithLogMsg:logMsg + level:level + flag:flag + context:context + file:file + function:function + line:line + tag:tag + options:0]; + + [self queueLogMessage:logMessage asynchronously:asynchronous]; + } +} + ++ (void)flushLog +{ + dispatch_sync(loggingQueue, ^{ @autoreleasepool { + + [self lt_flush]; + }}); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Registered Dynamic Logging +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ++ (BOOL)isRegisteredClass:(Class)class +{ + SEL getterSel = @selector(ddLogLevel); + SEL setterSel = @selector(ddSetLogLevel:); + +#if TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR + + // Issue #6 (GoogleCode) - Crashes on iOS 4.2.1 and iPhone 4 + // + // Crash caused by class_getClassMethod(2). + // + // "It's a bug with UIAccessibilitySafeCategory__NSObject so it didn't pop up until + // users had VoiceOver enabled [...]. I was able to work around it by searching the + // result of class_copyMethodList() instead of calling class_getClassMethod()" + + BOOL result = NO; + + unsigned int methodCount, i; + Method *methodList = class_copyMethodList(object_getClass(class), &methodCount); + + if (methodList != NULL) + { + BOOL getterFound = NO; + BOOL setterFound = NO; + + for (i = 0; i < methodCount; ++i) + { + SEL currentSel = method_getName(methodList[i]); + + if (currentSel == getterSel) + { + getterFound = YES; + } + else if (currentSel == setterSel) + { + setterFound = YES; + } + + if (getterFound && setterFound) + { + result = YES; + break; + } + } + + free(methodList); + } + + return result; + +#else + + // Issue #24 (GitHub) - Crashing in in ARC+Simulator + // + // The method +[DDLog isRegisteredClass] will crash a project when using it with ARC + Simulator. + // For running in the Simulator, it needs to execute the non-iOS code. + + Method getter = class_getClassMethod(class, getterSel); + Method setter = class_getClassMethod(class, setterSel); + + if ((getter != NULL) && (setter != NULL)) + { + return YES; + } + + return NO; + +#endif +} + ++ (NSArray *)registeredClasses +{ + int numClasses, i; + + // We're going to get the list of all registered classes. + // The Objective-C runtime library automatically registers all the classes defined in your source code. + // + // To do this we use the following method (documented in the Objective-C Runtime Reference): + // + // int objc_getClassList(Class *buffer, int bufferLen) + // + // We can pass (NULL, 0) to obtain the total number of + // registered class definitions without actually retrieving any class definitions. + // This allows us to allocate the minimum amount of memory needed for the application. + + numClasses = objc_getClassList(NULL, 0); + + // The numClasses method now tells us how many classes we have. + // So we can allocate our buffer, and get pointers to all the class definitions. + + Class *classes = (Class *)malloc(sizeof(Class) * numClasses); + + numClasses = objc_getClassList(classes, numClasses); + + // We can now loop through the classes, and test each one to see if it is a DDLogging class. + + NSMutableArray *result = [NSMutableArray arrayWithCapacity:numClasses]; + + for (i = 0; i < numClasses; i++) + { + Class class = classes[i]; + + if ([self isRegisteredClass:class]) + { + [result addObject:class]; + } + } + + free(classes); + + return result; +} + ++ (NSArray *)registeredClassNames +{ + NSArray *registeredClasses = [self registeredClasses]; + NSMutableArray *result = [NSMutableArray arrayWithCapacity:[registeredClasses count]]; + + for (Class class in registeredClasses) + { + [result addObject:NSStringFromClass(class)]; + } + + return result; +} + ++ (int)logLevelForClass:(Class)aClass +{ + if ([self isRegisteredClass:aClass]) + { + return [aClass ddLogLevel]; + } + + return -1; +} + ++ (int)logLevelForClassWithName:(NSString *)aClassName +{ + Class aClass = NSClassFromString(aClassName); + + return [self logLevelForClass:aClass]; +} + ++ (void)setLogLevel:(int)logLevel forClass:(Class)aClass +{ + if ([self isRegisteredClass:aClass]) + { + [aClass ddSetLogLevel:logLevel]; + } +} + ++ (void)setLogLevel:(int)logLevel forClassWithName:(NSString *)aClassName +{ + Class aClass = NSClassFromString(aClassName); + + [self setLogLevel:logLevel forClass:aClass]; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Logging Thread +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * This method should only be run on the logging thread/queue. +**/ ++ (void)lt_addLogger:(id )logger +{ + // Add to loggers array. + // Need to create loggerQueue if loggerNode doesn't provide one. + + dispatch_queue_t loggerQueue = NULL; + + if ([logger respondsToSelector:@selector(loggerQueue)]) + { + // Logger may be providing its own queue + + loggerQueue = [logger loggerQueue]; + } + + if (loggerQueue == nil) + { + // Automatically create queue for the logger. + // Use the logger name as the queue name if possible. + + const char *loggerQueueName = NULL; + if ([logger respondsToSelector:@selector(loggerName)]) + { + loggerQueueName = [[logger loggerName] UTF8String]; + } + + loggerQueue = dispatch_queue_create(loggerQueueName, NULL); + } + + DDLoggerNode *loggerNode = [DDLoggerNode nodeWithLogger:logger loggerQueue:loggerQueue]; + [loggers addObject:loggerNode]; + + if ([logger respondsToSelector:@selector(didAddLogger)]) + { + dispatch_async(loggerNode->loggerQueue, ^{ @autoreleasepool { + + [logger didAddLogger]; + }}); + } +} + +/** + * This method should only be run on the logging thread/queue. +**/ ++ (void)lt_removeLogger:(id )logger +{ + // Find associated loggerNode in list of added loggers + + DDLoggerNode *loggerNode = nil; + + for (DDLoggerNode *node in loggers) + { + if (node->logger == logger) + { + loggerNode = node; + break; + } + } + + if (loggerNode == nil) + { + //NSLogDebug(@"DDLog: Request to remove logger which wasn't added"); + return; + } + + // Notify logger + + if ([logger respondsToSelector:@selector(willRemoveLogger)]) + { + dispatch_async(loggerNode->loggerQueue, ^{ @autoreleasepool { + + [logger willRemoveLogger]; + }}); + } + + // Remove from loggers array + + [loggers removeObject:loggerNode]; +} + +/** + * This method should only be run on the logging thread/queue. +**/ ++ (void)lt_removeAllLoggers +{ + // Notify all loggers + + for (DDLoggerNode *loggerNode in loggers) + { + if ([loggerNode->logger respondsToSelector:@selector(willRemoveLogger)]) + { + dispatch_async(loggerNode->loggerQueue, ^{ @autoreleasepool { + + [loggerNode->logger willRemoveLogger]; + }}); + } + } + + // Remove all loggers from array + + [loggers removeAllObjects]; +} + +/** + * This method should only be run on the logging thread/queue. +**/ ++ (void)lt_log:(DDLogMessage *)logMessage +{ + // Execute the given log message on each of our loggers. + + if (numProcessors > 1) + { + // Execute each logger concurrently, each within its own queue. + // All blocks are added to same group. + // After each block has been queued, wait on group. + // + // The waiting ensures that a slow logger doesn't end up with a large queue of pending log messages. + // This would defeat the purpose of the efforts we made earlier to restrict the max queue size. + + for (DDLoggerNode *loggerNode in loggers) + { + dispatch_group_async(loggingGroup, loggerNode->loggerQueue, ^{ @autoreleasepool { + + [loggerNode->logger logMessage:logMessage]; + + }}); + } + + dispatch_group_wait(loggingGroup, DISPATCH_TIME_FOREVER); + } + else + { + // Execute each logger serialy, each within its own queue. + + for (DDLoggerNode *loggerNode in loggers) + { + dispatch_sync(loggerNode->loggerQueue, ^{ @autoreleasepool { + + [loggerNode->logger logMessage:logMessage]; + + }}); + } + } + + // If our queue got too big, there may be blocked threads waiting to add log messages to the queue. + // Since we've now dequeued an item from the log, we may need to unblock the next thread. + + // We are using a counting semaphore provided by GCD. + // The semaphore is initialized with our LOG_MAX_QUEUE_SIZE value. + // When a log message is queued this value is decremented. + // When a log message is dequeued this value is incremented. + // If the value ever drops below zero, + // the queueing thread blocks and waits in FIFO order for us to signal it. + // + // A dispatch semaphore is an efficient implementation of a traditional counting semaphore. + // Dispatch semaphores call down to the kernel only when the calling thread needs to be blocked. + // If the calling semaphore does not need to block, no kernel call is made. + + dispatch_semaphore_signal(queueSemaphore); +} + +/** + * This method should only be run on the background logging thread. +**/ ++ (void)lt_flush +{ + // All log statements issued before the flush method was invoked have now been executed. + // + // Now we need to propogate the flush request to any loggers that implement the flush method. + // This is designed for loggers that buffer IO. + + for (DDLoggerNode *loggerNode in loggers) + { + if ([loggerNode->logger respondsToSelector:@selector(flush)]) + { + dispatch_group_async(loggingGroup, loggerNode->loggerQueue, ^{ @autoreleasepool { + + [loggerNode->logger flush]; + + }}); + } + } + + dispatch_group_wait(loggingGroup, DISPATCH_TIME_FOREVER); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Utilities +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +NSString *DDExtractFileNameWithoutExtension(const char *filePath, BOOL copy) +{ + if (filePath == NULL) return nil; + + char *lastSlash = NULL; + char *lastDot = NULL; + + char *p = (char *)filePath; + + while (*p != '\0') + { + if (*p == '/') + lastSlash = p; + else if (*p == '.') + lastDot = p; + + p++; + } + + char *subStr; + NSUInteger subLen; + + if (lastSlash) + { + if (lastDot) + { + // lastSlash -> lastDot + subStr = lastSlash + 1; + subLen = lastDot - subStr; + } + else + { + // lastSlash -> endOfString + subStr = lastSlash + 1; + subLen = p - subStr; + } + } + else + { + if (lastDot) + { + // startOfString -> lastDot + subStr = (char *)filePath; + subLen = lastDot - subStr; + } + else + { + // startOfString -> endOfString + subStr = (char *)filePath; + subLen = p - subStr; + } + } + + if (copy) + { + return [[NSString alloc] initWithBytes:subStr + length:subLen + encoding:NSUTF8StringEncoding]; + } + else + { + // We can take advantage of the fact that __FILE__ is a string literal. + // Specifically, we don't need to waste time copying the string. + // We can just tell NSString to point to a range within the string literal. + + return [[NSString alloc] initWithBytesNoCopy:subStr + length:subLen + encoding:NSUTF8StringEncoding + freeWhenDone:NO]; + } +} + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +@implementation DDLoggerNode + +- (id)initWithLogger:(id )aLogger loggerQueue:(dispatch_queue_t)aLoggerQueue +{ + if ((self = [super init])) + { + logger = aLogger; + + if (aLoggerQueue) { + loggerQueue = aLoggerQueue; + #if !OS_OBJECT_USE_OBJC + dispatch_retain(loggerQueue); + #endif + } + } + return self; +} + ++ (DDLoggerNode *)nodeWithLogger:(id )logger loggerQueue:(dispatch_queue_t)loggerQueue +{ + return [[DDLoggerNode alloc] initWithLogger:logger loggerQueue:loggerQueue]; +} + +- (void)dealloc +{ + #if !OS_OBJECT_USE_OBJC + if (loggerQueue) dispatch_release(loggerQueue); + #endif +} + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +@implementation DDLogMessage + +static char *dd_str_copy(const char *str) +{ + if (str == NULL) return NULL; + + size_t length = strlen(str); + char * result = malloc(length + 1); + strncpy(result, str, length); + result[length] = 0; + + return result; +} + +- (id)initWithLogMsg:(NSString *)msg + level:(int)level + flag:(int)flag + context:(int)context + file:(const char *)aFile + function:(const char *)aFunction + line:(int)line + tag:(id)aTag + options:(DDLogMessageOptions)optionsMask +{ + if ((self = [super init])) + { + logMsg = msg; + logLevel = level; + logFlag = flag; + logContext = context; + lineNumber = line; + tag = aTag; + options = optionsMask; + + if (options & DDLogMessageCopyFile) + file = dd_str_copy(aFile); + else + file = (char *)aFile; + + if (options & DDLogMessageCopyFunction) + function = dd_str_copy(aFunction); + else + function = (char *)aFunction; + + timestamp = [[NSDate alloc] init]; + + machThreadID = pthread_mach_thread_np(pthread_self()); + + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wdeprecated-declarations" + // The documentation for dispatch_get_current_queue() states: + // + // > [This method is] "recommended for debugging and logging purposes only"... + // + // Well that's exactly how we're using it here. Literally for logging purposes only. + // However, Apple has decided to deprecate this method anyway. + // However they have not given us an alternate version of dispatch_queue_get_label() that + // automatically uses the current queue, thus dispatch_get_current_queue() is still required. + // + // If dispatch_get_current_queue() disappears, without a dispatch_queue_get_label() alternative, + // Apple will have effectively taken away our ability to properly log the name of executing dispatch queue. + + dispatch_queue_t currentQueue = dispatch_get_current_queue(); + #pragma clang diagnostic pop + + queueLabel = dd_str_copy(dispatch_queue_get_label(currentQueue)); + + threadName = [[NSThread currentThread] name]; + } + return self; +} + +- (NSString *)threadID +{ + return [[NSString alloc] initWithFormat:@"%x", machThreadID]; +} + +- (NSString *)fileName +{ + return DDExtractFileNameWithoutExtension(file, NO); +} + +- (NSString *)methodName +{ + if (function == NULL) + return nil; + else + return [[NSString alloc] initWithUTF8String:function]; +} + +- (void)dealloc +{ + if (file && (options & DDLogMessageCopyFile)) + free(file); + + if (function && (options & DDLogMessageCopyFunction)) + free(function); + + if (queueLabel) + free(queueLabel); +} + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +@implementation DDAbstractLogger + +- (id)init +{ + if ((self = [super init])) + { + const char *loggerQueueName = NULL; + if ([self respondsToSelector:@selector(loggerName)]) + { + loggerQueueName = [[self loggerName] UTF8String]; + } + + loggerQueue = dispatch_queue_create(loggerQueueName, NULL); + + // We're going to use dispatch_queue_set_specific() to "mark" our loggerQueue. + // Later we can use dispatch_get_specific() to determine if we're executing on our loggerQueue. + // The documentation states: + // + // > Keys are only compared as pointers and are never dereferenced. + // > Thus, you can use a pointer to a static variable for a specific subsystem or + // > any other value that allows you to identify the value uniquely. + // > Specifying a pointer to a string constant is not recommended. + // + // So we're going to use the very convenient key of "self", + // which also works when multiple logger classes extend this class, as each will have a different "self" key. + // + // This is used primarily for thread-safety assertions (via the isOnInternalLoggerQueue method below). + + void *key = (__bridge void *)self; + void *nonNullValue = (__bridge void *)self; + + dispatch_queue_set_specific(loggerQueue, key, nonNullValue, NULL); + } + return self; +} + +- (void)dealloc +{ + #if !OS_OBJECT_USE_OBJC + if (loggerQueue) dispatch_release(loggerQueue); + #endif +} + +- (void)logMessage:(DDLogMessage *)logMessage +{ + // Override me +} + +- (id )logFormatter +{ + // This method must be thread safe and intuitive. + // Therefore if somebody executes the following code: + // + // [logger setLogFormatter:myFormatter]; + // formatter = [logger logFormatter]; + // + // They would expect formatter to equal myFormatter. + // This functionality must be ensured by the getter and setter method. + // + // The thread safety must not come at a cost to the performance of the logMessage method. + // This method is likely called sporadically, while the logMessage method is called repeatedly. + // This means, the implementation of this method: + // - Must NOT require the logMessage method to acquire a lock. + // - Must NOT require the logMessage method to access an atomic property (also a lock of sorts). + // + // Thread safety is ensured by executing access to the formatter variable on the loggerQueue. + // This is the same queue that the logMessage method operates on. + // + // Note: The last time I benchmarked the performance of direct access vs atomic property access, + // direct access was over twice as fast on the desktop and over 6 times as fast on the iPhone. + // + // Furthermore, consider the following code: + // + // DDLogVerbose(@"log msg 1"); + // DDLogVerbose(@"log msg 2"); + // [logger setFormatter:myFormatter]; + // DDLogVerbose(@"log msg 3"); + // + // Our intuitive requirement means that the new formatter will only apply to the 3rd log message. + // This must remain true even when using asynchronous logging. + // We must keep in mind the various queue's that are in play here: + // + // loggerQueue : Our own private internal queue that the logMessage method runs on. + // Operations are added to this queue from the global loggingQueue. + // + // globalLoggingQueue : The queue that all log messages go through before they arrive in our loggerQueue. + // + // All log statements go through the serial gloabalLoggingQueue before they arrive at our loggerQueue. + // Thus this method also goes through the serial globalLoggingQueue to ensure intuitive operation. + + // IMPORTANT NOTE: + // + // Methods within the DDLogger implementation MUST access the formatter ivar directly. + // This method is designed explicitly for external access. + // + // Using "self." syntax to go through this method will cause immediate deadlock. + // This is the intended result. Fix it by accessing the ivar directly. + // Great strides have been take to ensure this is safe to do. Plus it's MUCH faster. + + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + NSAssert(![self isOnInternalLoggerQueue], @"MUST access ivar directly, NOT via self.* syntax."); + + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + + __block id result; + + dispatch_sync(globalLoggingQueue, ^{ + dispatch_sync(loggerQueue, ^{ + result = formatter; + }); + }); + + return result; +} + +- (void)setLogFormatter:(id )logFormatter +{ + // The design of this method is documented extensively in the logFormatter message (above in code). + + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + NSAssert(![self isOnInternalLoggerQueue], @"MUST access ivar directly, NOT via self.* syntax."); + + dispatch_block_t block = ^{ @autoreleasepool { + + if (formatter != logFormatter) + { + if ([formatter respondsToSelector:@selector(willRemoveFromLogger:)]) { + [formatter willRemoveFromLogger:self]; + } + + formatter = logFormatter; + + if ([formatter respondsToSelector:@selector(didAddToLogger:)]) { + [formatter didAddToLogger:self]; + } + } + }}; + + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + + dispatch_async(globalLoggingQueue, ^{ + dispatch_async(loggerQueue, block); + }); +} + +- (dispatch_queue_t)loggerQueue +{ + return loggerQueue; +} + +- (NSString *)loggerName +{ + return NSStringFromClass([self class]); +} + +- (BOOL)isOnGlobalLoggingQueue +{ + return (dispatch_get_specific(GlobalLoggingQueueIdentityKey) != NULL); +} + +- (BOOL)isOnInternalLoggerQueue +{ + void *key = (__bridge void *)self; + return (dispatch_get_specific(key) != NULL); +} + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDTTYLogger.h b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDTTYLogger.h new file mode 100755 index 00000000..0acb0fdd --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDTTYLogger.h @@ -0,0 +1,167 @@ +#import +#if TARGET_OS_IPHONE +#import +#else +#import +#endif + +#import "DDLog.h" + +/** + * Welcome to Cocoa Lumberjack! + * + * The project page has a wealth of documentation if you have any questions. + * https://github.com/robbiehanson/CocoaLumberjack + * + * If you're new to the project you may wish to read the "Getting Started" wiki. + * https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted + * + * + * This class provides a logger for Terminal output or Xcode console output, + * depending on where you are running your code. + * + * As described in the "Getting Started" page, + * the traditional NSLog() function directs it's output to two places: + * + * - Apple System Log (so it shows up in Console.app) + * - StdErr (if stderr is a TTY, so log statements show up in Xcode console) + * + * To duplicate NSLog() functionality you can simply add this logger and an asl logger. + * However, if you instead choose to use file logging (for faster performance), + * you may choose to use only a file logger and a tty logger. +**/ + +@interface DDTTYLogger : DDAbstractLogger +{ + NSCalendar *calendar; + NSUInteger calendarUnitFlags; + + NSString *appName; + char *app; + size_t appLen; + + NSString *processID; + char *pid; + size_t pidLen; + + BOOL colorsEnabled; + NSMutableArray *colorProfilesArray; + NSMutableDictionary *colorProfilesDict; +} + ++ (DDTTYLogger *)sharedInstance; + +/* Inherited from the DDLogger protocol: + * + * Formatters may optionally be added to any logger. + * + * If no formatter is set, the logger simply logs the message as it is given in logMessage, + * or it may use its own built in formatting style. + * + * More information about formatters can be found here: + * https://github.com/robbiehanson/CocoaLumberjack/wiki/CustomFormatters + * + * The actual implementation of these methods is inherited from DDAbstractLogger. + +- (id )logFormatter; +- (void)setLogFormatter:(id )formatter; + +*/ + +/** + * Want to use different colors for different log levels? + * Enable this property. + * + * If you run the application via the Terminal (not Xcode), + * the logger will map colors to xterm-256color or xterm-color (if available). + * + * Xcode does NOT natively support colors in the Xcode debugging console. + * You'll need to install the XcodeColors plugin to see colors in the Xcode console. + * https://github.com/robbiehanson/XcodeColors + * + * The default value if NO. +**/ +@property (readwrite, assign) BOOL colorsEnabled; + +/** + * The default color set (foregroundColor, backgroundColor) is: + * + * - LOG_FLAG_ERROR = (red, nil) + * - LOG_FLAG_WARN = (orange, nil) + * + * You can customize the colors however you see fit. + * Please note that you are passing a flag, NOT a level. + * + * GOOD : [ttyLogger setForegroundColor:pink backgroundColor:nil forFlag:LOG_FLAG_INFO]; // <- Good :) + * BAD : [ttyLogger setForegroundColor:pink backgroundColor:nil forFlag:LOG_LEVEL_INFO]; // <- BAD! :( + * + * LOG_FLAG_INFO = 0...00100 + * LOG_LEVEL_INFO = 0...00111 <- Would match LOG_FLAG_INFO and LOG_FLAG_WARN and LOG_FLAG_ERROR + * + * If you run the application within Xcode, then the XcodeColors plugin is required. + * + * If you run the application from a shell, then DDTTYLogger will automatically map the given color to + * the closest available color. (xterm-256color or xterm-color which have 256 and 16 supported colors respectively.) + * + * This method invokes setForegroundColor:backgroundColor:forFlag:context: and passes the default context (0). +**/ +#if TARGET_OS_IPHONE +- (void)setForegroundColor:(UIColor *)txtColor backgroundColor:(UIColor *)bgColor forFlag:(int)mask; +#else +- (void)setForegroundColor:(NSColor *)txtColor backgroundColor:(NSColor *)bgColor forFlag:(int)mask; +#endif + +/** + * Just like setForegroundColor:backgroundColor:flag, but allows you to specify a particular logging context. + * + * A logging context is often used to identify log messages coming from a 3rd party framework, + * although logging context's can be used for many different functions. + * + * Logging context's are explained in further detail here: + * https://github.com/robbiehanson/CocoaLumberjack/wiki/CustomContext +**/ +#if TARGET_OS_IPHONE +- (void)setForegroundColor:(UIColor *)txtColor backgroundColor:(UIColor *)bgColor forFlag:(int)mask context:(int)ctxt; +#else +- (void)setForegroundColor:(NSColor *)txtColor backgroundColor:(NSColor *)bgColor forFlag:(int)mask context:(int)ctxt; +#endif + +/** + * Similar to the methods above, but allows you to map DDLogMessage->tag to a particular color profile. + * For example, you could do something like this: + * + * static NSString *const PurpleTag = @"PurpleTag"; + * + * #define DDLogPurple(frmt, ...) LOG_OBJC_TAG_MACRO(NO, 0, 0, 0, PurpleTag, frmt, ##__VA_ARGS__) + * + * And then in your applicationDidFinishLaunching, or wherever you configure Lumberjack: + * + * #if TARGET_OS_IPHONE + * UIColor *purple = [UIColor colorWithRed:(64/255.0) green:(0/255.0) blue:(128/255.0) alpha:1.0]; + * #else + * NSColor *purple = [NSColor colorWithCalibratedRed:(64/255.0) green:(0/255.0) blue:(128/255.0) alpha:1.0]; + * + * [[DDTTYLogger sharedInstance] setForegroundColor:purple backgroundColor:nil forTag:PurpleTag]; + * [DDLog addLogger:[DDTTYLogger sharedInstance]]; + * + * This would essentially give you a straight NSLog replacement that prints in purple: + * + * DDLogPurple(@"I'm a purple log message!"); +**/ +#if TARGET_OS_IPHONE +- (void)setForegroundColor:(UIColor *)txtColor backgroundColor:(UIColor *)bgColor forTag:(id )tag; +#else +- (void)setForegroundColor:(NSColor *)txtColor backgroundColor:(NSColor *)bgColor forTag:(id )tag; +#endif + +/** + * Clearing color profiles. +**/ +- (void)clearColorsForFlag:(int)mask; +- (void)clearColorsForFlag:(int)mask context:(int)context; +- (void)clearColorsForTag:(id )tag; +- (void)clearColorsForAllFlags; +- (void)clearColorsForAllTags; +- (void)clearAllColors; + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDTTYLogger.m b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDTTYLogger.m new file mode 100755 index 00000000..d6c0ebfe --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/DDTTYLogger.m @@ -0,0 +1,1479 @@ +#import "DDTTYLogger.h" + +#import +#import + +/** + * Welcome to Cocoa Lumberjack! + * + * The project page has a wealth of documentation if you have any questions. + * https://github.com/robbiehanson/CocoaLumberjack + * + * If you're new to the project you may wish to read the "Getting Started" wiki. + * https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted +**/ + +#if ! __has_feature(objc_arc) +#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). +#endif + +// We probably shouldn't be using DDLog() statements within the DDLog implementation. +// But we still want to leave our log statements for any future debugging, +// and to allow other developers to trace the implementation (which is a great learning tool). +// +// So we use primitive logging macros around NSLog. +// We maintain the NS prefix on the macros to be explicit about the fact that we're using NSLog. + +#define LOG_LEVEL 2 + +#define NSLogError(frmt, ...) do{ if(LOG_LEVEL >= 1) NSLog((frmt), ##__VA_ARGS__); } while(0) +#define NSLogWarn(frmt, ...) do{ if(LOG_LEVEL >= 2) NSLog((frmt), ##__VA_ARGS__); } while(0) +#define NSLogInfo(frmt, ...) do{ if(LOG_LEVEL >= 3) NSLog((frmt), ##__VA_ARGS__); } while(0) +#define NSLogVerbose(frmt, ...) do{ if(LOG_LEVEL >= 4) NSLog((frmt), ##__VA_ARGS__); } while(0) + +// Xcode does NOT natively support colors in the Xcode debugging console. +// You'll need to install the XcodeColors plugin to see colors in the Xcode console. +// https://github.com/robbiehanson/XcodeColors +// +// The following is documentation from the XcodeColors project: +// +// +// How to apply color formatting to your log statements: +// +// To set the foreground color: +// Insert the ESCAPE_SEQ into your string, followed by "fg124,12,255;" where r=124, g=12, b=255. +// +// To set the background color: +// Insert the ESCAPE_SEQ into your string, followed by "bg12,24,36;" where r=12, g=24, b=36. +// +// To reset the foreground color (to default value): +// Insert the ESCAPE_SEQ into your string, followed by "fg;" +// +// To reset the background color (to default value): +// Insert the ESCAPE_SEQ into your string, followed by "bg;" +// +// To reset the foreground and background color (to default values) in one operation: +// Insert the ESCAPE_SEQ into your string, followed by ";" + +#define XCODE_COLORS_ESCAPE_SEQ "\033[" + +#define XCODE_COLORS_RESET_FG XCODE_COLORS_ESCAPE_SEQ "fg;" // Clear any foreground color +#define XCODE_COLORS_RESET_BG XCODE_COLORS_ESCAPE_SEQ "bg;" // Clear any background color +#define XCODE_COLORS_RESET XCODE_COLORS_ESCAPE_SEQ ";" // Clear any foreground or background color + +// Some simple defines to make life easier on ourself + +#if TARGET_OS_IPHONE + #define MakeColor(r, g, b) [UIColor colorWithRed:(r/255.0f) green:(g/255.0f) blue:(b/255.0f) alpha:1.0f] +#else + #define MakeColor(r, g, b) [NSColor colorWithCalibratedRed:(r/255.0f) green:(g/255.0f) blue:(b/255.0f) alpha:1.0f] +#endif + +#if TARGET_OS_IPHONE + #define OSColor UIColor +#else + #define OSColor NSColor +#endif + +// If running in a shell, not all RGB colors will be supported. +// In this case we automatically map to the closest available color. +// In order to provide this mapping, we have a hard-coded set of the standard RGB values available in the shell. +// However, not every shell is the same, and Apple likes to think different even when it comes to shell colors. +// +// Map to standard Terminal.app colors (1), or +// map to standard xterm colors (0). + +#define MAP_TO_TERMINAL_APP_COLORS 1 + + +@interface DDTTYLoggerColorProfile : NSObject { +@public + int mask; + int context; + + uint8_t fg_r; + uint8_t fg_g; + uint8_t fg_b; + + uint8_t bg_r; + uint8_t bg_g; + uint8_t bg_b; + + NSUInteger fgCodeIndex; + NSString *fgCodeRaw; + + NSUInteger bgCodeIndex; + NSString *bgCodeRaw; + + char fgCode[24]; + size_t fgCodeLen; + + char bgCode[24]; + size_t bgCodeLen; + + char resetCode[8]; + size_t resetCodeLen; +} + +- (id)initWithForegroundColor:(OSColor *)fgColor backgroundColor:(OSColor *)bgColor flag:(int)mask context:(int)ctxt; + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +@implementation DDTTYLogger + +static BOOL isaColorTTY; +static BOOL isaColor256TTY; +static BOOL isaXcodeColorTTY; + +static NSArray *codes_fg = nil; +static NSArray *codes_bg = nil; +static NSArray *colors = nil; + +static DDTTYLogger *sharedInstance; + +/** + * Initializes the colors array, as well as the codes_fg and codes_bg arrays, for 16 color mode. + * + * This method is used when the application is running from within a shell that only supports 16 color mode. + * This method is not invoked if the application is running within Xcode, or via normal UI app launch. +**/ ++ (void)initialize_colors_16 +{ + if (codes_fg || codes_bg || colors) return; + + NSMutableArray *m_codes_fg = [NSMutableArray arrayWithCapacity:16]; + NSMutableArray *m_codes_bg = [NSMutableArray arrayWithCapacity:16]; + NSMutableArray *m_colors = [NSMutableArray arrayWithCapacity:16]; + + // In a standard shell only 16 colors are supported. + // + // More information about ansi escape codes can be found online. + // http://en.wikipedia.org/wiki/ANSI_escape_code + + [m_codes_fg addObject:@"30m"]; // normal - black + [m_codes_fg addObject:@"31m"]; // normal - red + [m_codes_fg addObject:@"32m"]; // normal - green + [m_codes_fg addObject:@"33m"]; // normal - yellow + [m_codes_fg addObject:@"34m"]; // normal - blue + [m_codes_fg addObject:@"35m"]; // normal - magenta + [m_codes_fg addObject:@"36m"]; // normal - cyan + [m_codes_fg addObject:@"37m"]; // normal - gray + [m_codes_fg addObject:@"1;30m"]; // bright - darkgray + [m_codes_fg addObject:@"1;31m"]; // bright - red + [m_codes_fg addObject:@"1;32m"]; // bright - green + [m_codes_fg addObject:@"1;33m"]; // bright - yellow + [m_codes_fg addObject:@"1;34m"]; // bright - blue + [m_codes_fg addObject:@"1;35m"]; // bright - magenta + [m_codes_fg addObject:@"1;36m"]; // bright - cyan + [m_codes_fg addObject:@"1;37m"]; // bright - white + + [m_codes_bg addObject:@"40m"]; // normal - black + [m_codes_bg addObject:@"41m"]; // normal - red + [m_codes_bg addObject:@"42m"]; // normal - green + [m_codes_bg addObject:@"43m"]; // normal - yellow + [m_codes_bg addObject:@"44m"]; // normal - blue + [m_codes_bg addObject:@"45m"]; // normal - magenta + [m_codes_bg addObject:@"46m"]; // normal - cyan + [m_codes_bg addObject:@"47m"]; // normal - gray + [m_codes_bg addObject:@"1;40m"]; // bright - darkgray + [m_codes_bg addObject:@"1;41m"]; // bright - red + [m_codes_bg addObject:@"1;42m"]; // bright - green + [m_codes_bg addObject:@"1;43m"]; // bright - yellow + [m_codes_bg addObject:@"1;44m"]; // bright - blue + [m_codes_bg addObject:@"1;45m"]; // bright - magenta + [m_codes_bg addObject:@"1;46m"]; // bright - cyan + [m_codes_bg addObject:@"1;47m"]; // bright - white + +#if MAP_TO_TERMINAL_APP_COLORS + + // Standard Terminal.app colors: + // + // These are the default colors used by Apple's Terminal.app. + + [m_colors addObject:MakeColor( 0, 0, 0)]; // normal - black + [m_colors addObject:MakeColor(194, 54, 33)]; // normal - red + [m_colors addObject:MakeColor( 37, 188, 36)]; // normal - green + [m_colors addObject:MakeColor(173, 173, 39)]; // normal - yellow + [m_colors addObject:MakeColor( 73, 46, 225)]; // normal - blue + [m_colors addObject:MakeColor(211, 56, 211)]; // normal - magenta + [m_colors addObject:MakeColor( 51, 187, 200)]; // normal - cyan + [m_colors addObject:MakeColor(203, 204, 205)]; // normal - gray + [m_colors addObject:MakeColor(129, 131, 131)]; // bright - darkgray + [m_colors addObject:MakeColor(252, 57, 31)]; // bright - red + [m_colors addObject:MakeColor( 49, 231, 34)]; // bright - green + [m_colors addObject:MakeColor(234, 236, 35)]; // bright - yellow + [m_colors addObject:MakeColor( 88, 51, 255)]; // bright - blue + [m_colors addObject:MakeColor(249, 53, 248)]; // bright - magenta + [m_colors addObject:MakeColor( 20, 240, 240)]; // bright - cyan + [m_colors addObject:MakeColor(233, 235, 235)]; // bright - white + +#else + + // Standard xterm colors: + // + // These are the default colors used by most xterm shells. + + [m_colors addObject:MakeColor( 0, 0, 0)]; // normal - black + [m_colors addObject:MakeColor(205, 0, 0)]; // normal - red + [m_colors addObject:MakeColor( 0, 205, 0)]; // normal - green + [m_colors addObject:MakeColor(205, 205, 0)]; // normal - yellow + [m_colors addObject:MakeColor( 0, 0, 238)]; // normal - blue + [m_colors addObject:MakeColor(205, 0, 205)]; // normal - magenta + [m_colors addObject:MakeColor( 0, 205, 205)]; // normal - cyan + [m_colors addObject:MakeColor(229, 229, 229)]; // normal - gray + [m_colors addObject:MakeColor(127, 127, 127)]; // bright - darkgray + [m_colors addObject:MakeColor(255, 0, 0)]; // bright - red + [m_colors addObject:MakeColor( 0, 255, 0)]; // bright - green + [m_colors addObject:MakeColor(255, 255, 0)]; // bright - yellow + [m_colors addObject:MakeColor( 92, 92, 255)]; // bright - blue + [m_colors addObject:MakeColor(255, 0, 255)]; // bright - magenta + [m_colors addObject:MakeColor( 0, 255, 255)]; // bright - cyan + [m_colors addObject:MakeColor(255, 255, 255)]; // bright - white + +#endif + + codes_fg = [m_codes_fg copy]; + codes_bg = [m_codes_bg copy]; + colors = [m_colors copy]; + + NSAssert([codes_fg count] == [codes_bg count], @"Invalid colors/codes array(s)"); + NSAssert([codes_fg count] == [colors count], @"Invalid colors/codes array(s)"); +} + +/** + * Initializes the colors array, as well as the codes_fg and codes_bg arrays, for 256 color mode. + * + * This method is used when the application is running from within a shell that supports 256 color mode. + * This method is not invoked if the application is running within Xcode, or via normal UI app launch. +**/ ++ (void)initialize_colors_256 +{ + if (codes_fg || codes_bg || colors) return; + + NSMutableArray *m_codes_fg = [NSMutableArray arrayWithCapacity:(256-16)]; + NSMutableArray *m_codes_bg = [NSMutableArray arrayWithCapacity:(256-16)]; + NSMutableArray *m_colors = [NSMutableArray arrayWithCapacity:(256-16)]; + + #if MAP_TO_TERMINAL_APP_COLORS + + // Standard Terminal.app colors: + // + // These are the colors the Terminal.app uses in xterm-256color mode. + // In this mode, the terminal supports 256 different colors, specified by 256 color codes. + // + // The first 16 color codes map to the original 16 color codes supported by the earlier xterm-color mode. + // These are actually configurable, and thus we ignore them for the purposes of mapping, + // as we can't rely on them being constant. They are largely duplicated anyway. + // + // The next 216 color codes are designed to run the spectrum, with several shades of every color. + // While the color codes are standardized, the actual RGB values for each color code is not. + // Apple's Terminal.app uses different RGB values from that of a standard xterm. + // Apple's choices in colors are designed to be a little nicer on the eyes. + // + // The last 24 color codes represent a grayscale. + // + // Unfortunately, unlike the standard xterm color chart, + // Apple's RGB values cannot be calculated using a simple formula (at least not that I know of). + // Also, I don't know of any ways to programmatically query the shell for the RGB values. + // So this big giant color chart had to be made by hand. + // + // More information about ansi escape codes can be found online. + // http://en.wikipedia.org/wiki/ANSI_escape_code + + // Colors + + [m_colors addObject:MakeColor( 47, 49, 49)]; + [m_colors addObject:MakeColor( 60, 42, 144)]; + [m_colors addObject:MakeColor( 66, 44, 183)]; + [m_colors addObject:MakeColor( 73, 46, 222)]; + [m_colors addObject:MakeColor( 81, 50, 253)]; + [m_colors addObject:MakeColor( 88, 51, 255)]; + + [m_colors addObject:MakeColor( 42, 128, 37)]; + [m_colors addObject:MakeColor( 42, 127, 128)]; + [m_colors addObject:MakeColor( 44, 126, 169)]; + [m_colors addObject:MakeColor( 56, 125, 209)]; + [m_colors addObject:MakeColor( 59, 124, 245)]; + [m_colors addObject:MakeColor( 66, 123, 255)]; + + [m_colors addObject:MakeColor( 51, 163, 41)]; + [m_colors addObject:MakeColor( 39, 162, 121)]; + [m_colors addObject:MakeColor( 42, 161, 162)]; + [m_colors addObject:MakeColor( 53, 160, 202)]; + [m_colors addObject:MakeColor( 45, 159, 240)]; + [m_colors addObject:MakeColor( 58, 158, 255)]; + + [m_colors addObject:MakeColor( 31, 196, 37)]; + [m_colors addObject:MakeColor( 48, 196, 115)]; + [m_colors addObject:MakeColor( 39, 195, 155)]; + [m_colors addObject:MakeColor( 49, 195, 195)]; + [m_colors addObject:MakeColor( 32, 194, 235)]; + [m_colors addObject:MakeColor( 53, 193, 255)]; + + [m_colors addObject:MakeColor( 50, 229, 35)]; + [m_colors addObject:MakeColor( 40, 229, 109)]; + [m_colors addObject:MakeColor( 27, 229, 149)]; + [m_colors addObject:MakeColor( 49, 228, 189)]; + [m_colors addObject:MakeColor( 33, 228, 228)]; + [m_colors addObject:MakeColor( 53, 227, 255)]; + + [m_colors addObject:MakeColor( 27, 254, 30)]; + [m_colors addObject:MakeColor( 30, 254, 103)]; + [m_colors addObject:MakeColor( 45, 254, 143)]; + [m_colors addObject:MakeColor( 38, 253, 182)]; + [m_colors addObject:MakeColor( 38, 253, 222)]; + [m_colors addObject:MakeColor( 42, 253, 252)]; + + [m_colors addObject:MakeColor(140, 48, 40)]; + [m_colors addObject:MakeColor(136, 51, 136)]; + [m_colors addObject:MakeColor(135, 52, 177)]; + [m_colors addObject:MakeColor(134, 52, 217)]; + [m_colors addObject:MakeColor(135, 56, 248)]; + [m_colors addObject:MakeColor(134, 53, 255)]; + + [m_colors addObject:MakeColor(125, 125, 38)]; + [m_colors addObject:MakeColor(124, 125, 125)]; + [m_colors addObject:MakeColor(122, 124, 166)]; + [m_colors addObject:MakeColor(123, 124, 207)]; + [m_colors addObject:MakeColor(123, 122, 247)]; + [m_colors addObject:MakeColor(124, 121, 255)]; + + [m_colors addObject:MakeColor(119, 160, 35)]; + [m_colors addObject:MakeColor(117, 160, 120)]; + [m_colors addObject:MakeColor(117, 160, 160)]; + [m_colors addObject:MakeColor(115, 159, 201)]; + [m_colors addObject:MakeColor(116, 158, 240)]; + [m_colors addObject:MakeColor(117, 157, 255)]; + + [m_colors addObject:MakeColor(113, 195, 39)]; + [m_colors addObject:MakeColor(110, 194, 114)]; + [m_colors addObject:MakeColor(111, 194, 154)]; + [m_colors addObject:MakeColor(108, 194, 194)]; + [m_colors addObject:MakeColor(109, 193, 234)]; + [m_colors addObject:MakeColor(108, 192, 255)]; + + [m_colors addObject:MakeColor(105, 228, 30)]; + [m_colors addObject:MakeColor(103, 228, 109)]; + [m_colors addObject:MakeColor(105, 228, 148)]; + [m_colors addObject:MakeColor(100, 227, 188)]; + [m_colors addObject:MakeColor( 99, 227, 227)]; + [m_colors addObject:MakeColor( 99, 226, 253)]; + + [m_colors addObject:MakeColor( 92, 253, 34)]; + [m_colors addObject:MakeColor( 96, 253, 103)]; + [m_colors addObject:MakeColor( 97, 253, 142)]; + [m_colors addObject:MakeColor( 88, 253, 182)]; + [m_colors addObject:MakeColor( 93, 253, 221)]; + [m_colors addObject:MakeColor( 88, 254, 251)]; + + [m_colors addObject:MakeColor(177, 53, 34)]; + [m_colors addObject:MakeColor(174, 54, 131)]; + [m_colors addObject:MakeColor(172, 55, 172)]; + [m_colors addObject:MakeColor(171, 57, 213)]; + [m_colors addObject:MakeColor(170, 55, 249)]; + [m_colors addObject:MakeColor(170, 57, 255)]; + + [m_colors addObject:MakeColor(165, 123, 37)]; + [m_colors addObject:MakeColor(163, 123, 123)]; + [m_colors addObject:MakeColor(162, 123, 164)]; + [m_colors addObject:MakeColor(161, 122, 205)]; + [m_colors addObject:MakeColor(161, 121, 241)]; + [m_colors addObject:MakeColor(161, 121, 255)]; + + [m_colors addObject:MakeColor(158, 159, 33)]; + [m_colors addObject:MakeColor(157, 158, 118)]; + [m_colors addObject:MakeColor(157, 158, 159)]; + [m_colors addObject:MakeColor(155, 157, 199)]; + [m_colors addObject:MakeColor(155, 157, 239)]; + [m_colors addObject:MakeColor(154, 156, 255)]; + + [m_colors addObject:MakeColor(152, 193, 40)]; + [m_colors addObject:MakeColor(151, 193, 113)]; + [m_colors addObject:MakeColor(150, 193, 153)]; + [m_colors addObject:MakeColor(150, 192, 193)]; + [m_colors addObject:MakeColor(148, 192, 232)]; + [m_colors addObject:MakeColor(149, 191, 253)]; + + [m_colors addObject:MakeColor(146, 227, 28)]; + [m_colors addObject:MakeColor(144, 227, 108)]; + [m_colors addObject:MakeColor(144, 227, 147)]; + [m_colors addObject:MakeColor(144, 227, 187)]; + [m_colors addObject:MakeColor(142, 226, 227)]; + [m_colors addObject:MakeColor(142, 225, 252)]; + + [m_colors addObject:MakeColor(138, 253, 36)]; + [m_colors addObject:MakeColor(137, 253, 102)]; + [m_colors addObject:MakeColor(136, 253, 141)]; + [m_colors addObject:MakeColor(138, 254, 181)]; + [m_colors addObject:MakeColor(135, 255, 220)]; + [m_colors addObject:MakeColor(133, 255, 250)]; + + [m_colors addObject:MakeColor(214, 57, 30)]; + [m_colors addObject:MakeColor(211, 59, 126)]; + [m_colors addObject:MakeColor(209, 57, 168)]; + [m_colors addObject:MakeColor(208, 55, 208)]; + [m_colors addObject:MakeColor(207, 58, 247)]; + [m_colors addObject:MakeColor(206, 61, 255)]; + + [m_colors addObject:MakeColor(204, 121, 32)]; + [m_colors addObject:MakeColor(202, 121, 121)]; + [m_colors addObject:MakeColor(201, 121, 161)]; + [m_colors addObject:MakeColor(200, 120, 202)]; + [m_colors addObject:MakeColor(200, 120, 241)]; + [m_colors addObject:MakeColor(198, 119, 255)]; + + [m_colors addObject:MakeColor(198, 157, 37)]; + [m_colors addObject:MakeColor(196, 157, 116)]; + [m_colors addObject:MakeColor(195, 156, 157)]; + [m_colors addObject:MakeColor(195, 156, 197)]; + [m_colors addObject:MakeColor(194, 155, 236)]; + [m_colors addObject:MakeColor(193, 155, 255)]; + + [m_colors addObject:MakeColor(191, 192, 36)]; + [m_colors addObject:MakeColor(190, 191, 112)]; + [m_colors addObject:MakeColor(189, 191, 152)]; + [m_colors addObject:MakeColor(189, 191, 191)]; + [m_colors addObject:MakeColor(188, 190, 230)]; + [m_colors addObject:MakeColor(187, 190, 253)]; + + [m_colors addObject:MakeColor(185, 226, 28)]; + [m_colors addObject:MakeColor(184, 226, 106)]; + [m_colors addObject:MakeColor(183, 225, 146)]; + [m_colors addObject:MakeColor(183, 225, 186)]; + [m_colors addObject:MakeColor(182, 225, 225)]; + [m_colors addObject:MakeColor(181, 224, 252)]; + + [m_colors addObject:MakeColor(178, 255, 35)]; + [m_colors addObject:MakeColor(178, 255, 101)]; + [m_colors addObject:MakeColor(177, 254, 141)]; + [m_colors addObject:MakeColor(176, 254, 180)]; + [m_colors addObject:MakeColor(176, 254, 220)]; + [m_colors addObject:MakeColor(175, 253, 249)]; + + [m_colors addObject:MakeColor(247, 56, 30)]; + [m_colors addObject:MakeColor(245, 57, 122)]; + [m_colors addObject:MakeColor(243, 59, 163)]; + [m_colors addObject:MakeColor(244, 60, 204)]; + [m_colors addObject:MakeColor(242, 59, 241)]; + [m_colors addObject:MakeColor(240, 55, 255)]; + + [m_colors addObject:MakeColor(241, 119, 36)]; + [m_colors addObject:MakeColor(240, 120, 118)]; + [m_colors addObject:MakeColor(238, 119, 158)]; + [m_colors addObject:MakeColor(237, 119, 199)]; + [m_colors addObject:MakeColor(237, 118, 238)]; + [m_colors addObject:MakeColor(236, 118, 255)]; + + [m_colors addObject:MakeColor(235, 154, 36)]; + [m_colors addObject:MakeColor(235, 154, 114)]; + [m_colors addObject:MakeColor(234, 154, 154)]; + [m_colors addObject:MakeColor(232, 154, 194)]; + [m_colors addObject:MakeColor(232, 153, 234)]; + [m_colors addObject:MakeColor(232, 153, 255)]; + + [m_colors addObject:MakeColor(230, 190, 30)]; + [m_colors addObject:MakeColor(229, 189, 110)]; + [m_colors addObject:MakeColor(228, 189, 150)]; + [m_colors addObject:MakeColor(227, 189, 190)]; + [m_colors addObject:MakeColor(227, 189, 229)]; + [m_colors addObject:MakeColor(226, 188, 255)]; + + [m_colors addObject:MakeColor(224, 224, 35)]; + [m_colors addObject:MakeColor(223, 224, 105)]; + [m_colors addObject:MakeColor(222, 224, 144)]; + [m_colors addObject:MakeColor(222, 223, 184)]; + [m_colors addObject:MakeColor(222, 223, 224)]; + [m_colors addObject:MakeColor(220, 223, 253)]; + + [m_colors addObject:MakeColor(217, 253, 28)]; + [m_colors addObject:MakeColor(217, 253, 99)]; + [m_colors addObject:MakeColor(216, 252, 139)]; + [m_colors addObject:MakeColor(216, 252, 179)]; + [m_colors addObject:MakeColor(215, 252, 218)]; + [m_colors addObject:MakeColor(215, 251, 250)]; + + [m_colors addObject:MakeColor(255, 61, 30)]; + [m_colors addObject:MakeColor(255, 60, 118)]; + [m_colors addObject:MakeColor(255, 58, 159)]; + [m_colors addObject:MakeColor(255, 56, 199)]; + [m_colors addObject:MakeColor(255, 55, 238)]; + [m_colors addObject:MakeColor(255, 59, 255)]; + + [m_colors addObject:MakeColor(255, 117, 29)]; + [m_colors addObject:MakeColor(255, 117, 115)]; + [m_colors addObject:MakeColor(255, 117, 155)]; + [m_colors addObject:MakeColor(255, 117, 195)]; + [m_colors addObject:MakeColor(255, 116, 235)]; + [m_colors addObject:MakeColor(254, 116, 255)]; + + [m_colors addObject:MakeColor(255, 152, 27)]; + [m_colors addObject:MakeColor(255, 152, 111)]; + [m_colors addObject:MakeColor(254, 152, 152)]; + [m_colors addObject:MakeColor(255, 152, 192)]; + [m_colors addObject:MakeColor(254, 151, 231)]; + [m_colors addObject:MakeColor(253, 151, 253)]; + + [m_colors addObject:MakeColor(255, 187, 33)]; + [m_colors addObject:MakeColor(253, 187, 107)]; + [m_colors addObject:MakeColor(252, 187, 148)]; + [m_colors addObject:MakeColor(253, 187, 187)]; + [m_colors addObject:MakeColor(254, 187, 227)]; + [m_colors addObject:MakeColor(252, 186, 252)]; + + [m_colors addObject:MakeColor(252, 222, 34)]; + [m_colors addObject:MakeColor(251, 222, 103)]; + [m_colors addObject:MakeColor(251, 222, 143)]; + [m_colors addObject:MakeColor(250, 222, 182)]; + [m_colors addObject:MakeColor(251, 221, 222)]; + [m_colors addObject:MakeColor(252, 221, 252)]; + + [m_colors addObject:MakeColor(251, 252, 15)]; + [m_colors addObject:MakeColor(251, 252, 97)]; + [m_colors addObject:MakeColor(249, 252, 137)]; + [m_colors addObject:MakeColor(247, 252, 177)]; + [m_colors addObject:MakeColor(247, 253, 217)]; + [m_colors addObject:MakeColor(254, 255, 255)]; + + // Grayscale + + [m_colors addObject:MakeColor( 52, 53, 53)]; + [m_colors addObject:MakeColor( 57, 58, 59)]; + [m_colors addObject:MakeColor( 66, 67, 67)]; + [m_colors addObject:MakeColor( 75, 76, 76)]; + [m_colors addObject:MakeColor( 83, 85, 85)]; + [m_colors addObject:MakeColor( 92, 93, 94)]; + + [m_colors addObject:MakeColor(101, 102, 102)]; + [m_colors addObject:MakeColor(109, 111, 111)]; + [m_colors addObject:MakeColor(118, 119, 119)]; + [m_colors addObject:MakeColor(126, 127, 128)]; + [m_colors addObject:MakeColor(134, 136, 136)]; + [m_colors addObject:MakeColor(143, 144, 145)]; + + [m_colors addObject:MakeColor(151, 152, 153)]; + [m_colors addObject:MakeColor(159, 161, 161)]; + [m_colors addObject:MakeColor(167, 169, 169)]; + [m_colors addObject:MakeColor(176, 177, 177)]; + [m_colors addObject:MakeColor(184, 185, 186)]; + [m_colors addObject:MakeColor(192, 193, 194)]; + + [m_colors addObject:MakeColor(200, 201, 202)]; + [m_colors addObject:MakeColor(208, 209, 210)]; + [m_colors addObject:MakeColor(216, 218, 218)]; + [m_colors addObject:MakeColor(224, 226, 226)]; + [m_colors addObject:MakeColor(232, 234, 234)]; + [m_colors addObject:MakeColor(240, 242, 242)]; + + // Color codes + + int index = 16; + + while (index < 256) + { + [m_codes_fg addObject:[NSString stringWithFormat:@"38;5;%dm", index]]; + [m_codes_bg addObject:[NSString stringWithFormat:@"48;5;%dm", index]]; + + index++; + } + + #else + + // Standard xterm colors: + // + // These are the colors xterm shells use in xterm-256color mode. + // In this mode, the shell supports 256 different colors, specified by 256 color codes. + // + // The first 16 color codes map to the original 16 color codes supported by the earlier xterm-color mode. + // These are generally configurable, and thus we ignore them for the purposes of mapping, + // as we can't rely on them being constant. They are largely duplicated anyway. + // + // The next 216 color codes are designed to run the spectrum, with several shades of every color. + // The last 24 color codes represent a grayscale. + // + // While the color codes are standardized, the actual RGB values for each color code is not. + // However most standard xterms follow a well known color chart, + // which can easily be calculated using the simple formula below. + // + // More information about ansi escape codes can be found online. + // http://en.wikipedia.org/wiki/ANSI_escape_code + + int index = 16; + + int r; // red + int g; // green + int b; // blue + + int ri; // r increment + int gi; // g increment + int bi; // b increment + + // Calculate xterm colors (using standard algorithm) + + int r = 0; + int g = 0; + int b = 0; + + for (ri = 0; ri < 6; ri++) + { + r = (ri == 0) ? 0 : 95 + (40 * (ri - 1)); + + for (gi = 0; gi < 6; gi++) + { + g = (gi == 0) ? 0 : 95 + (40 * (gi - 1)); + + for (bi = 0; bi < 6; bi++) + { + b = (bi == 0) ? 0 : 95 + (40 * (bi - 1)); + + [m_codes_fg addObject:[NSString stringWithFormat:@"38;5;%dm", index]]; + [m_codes_bg addObject:[NSString stringWithFormat:@"48;5;%dm", index]]; + [m_colors addObject:MakeColor(r, g, b)]; + + index++; + } + } + } + + // Calculate xterm grayscale (using standard algorithm) + + r = 8; + g = 8; + b = 8; + + while (index < 256) + { + [m_codes_fg addObject:[NSString stringWithFormat:@"38;5;%dm", index]]; + [m_codes_bg addObject:[NSString stringWithFormat:@"48;5;%dm", index]]; + [m_colors addObject:MakeColor(r, g, b)]; + + r += 10; + g += 10; + b += 10; + + index++; + } + + #endif + + codes_fg = [m_codes_fg copy]; + codes_bg = [m_codes_bg copy]; + colors = [m_colors copy]; + + NSAssert([codes_fg count] == [codes_bg count], @"Invalid colors/codes array(s)"); + NSAssert([codes_fg count] == [colors count], @"Invalid colors/codes array(s)"); +} + ++ (void)getRed:(CGFloat *)rPtr green:(CGFloat *)gPtr blue:(CGFloat *)bPtr fromColor:(OSColor *)color +{ + #if TARGET_OS_IPHONE + + // iOS + + if ([color respondsToSelector:@selector(getRed:green:blue:alpha:)]) + { + [color getRed:rPtr green:gPtr blue:bPtr alpha:NULL]; + } + else + { + // The method getRed:green:blue:alpha: was only available starting iOS 5. + // So in iOS 4 and earlier, we have to jump through hoops. + + CGColorSpaceRef rgbColorSpace = CGColorSpaceCreateDeviceRGB(); + + unsigned char pixel[4]; + CGContextRef context = CGBitmapContextCreate(&pixel, 1, 1, 8, 4, rgbColorSpace, kCGImageAlphaNoneSkipLast); + + CGContextSetFillColorWithColor(context, [color CGColor]); + CGContextFillRect(context, CGRectMake(0, 0, 1, 1)); + + if (rPtr) { *rPtr = pixel[0] / 255.0f; } + if (gPtr) { *gPtr = pixel[1] / 255.0f; } + if (bPtr) { *bPtr = pixel[2] / 255.0f; } + + CGContextRelease(context); + CGColorSpaceRelease(rgbColorSpace); + } + + #else + + // Mac OS X + + [color getRed:rPtr green:gPtr blue:bPtr alpha:NULL]; + + #endif +} + +/** + * Maps the given color to the closest available color supported by the shell. + * The shell may support 256 colors, or only 16. + * + * This method loops through the known supported color set, and calculates the closest color. + * The array index of that color, within the colors array, is then returned. + * This array index may also be used as the index within the codes_fg and codes_bg arrays. +**/ ++ (NSUInteger)codeIndexForColor:(OSColor *)inColor +{ + CGFloat inR, inG, inB; + [self getRed:&inR green:&inG blue:&inB fromColor:inColor]; + + NSUInteger bestIndex = 0; + CGFloat lowestDistance = 100.0f; + + NSUInteger i = 0; + for (OSColor *color in colors) + { + // Calculate Euclidean distance (lower value means closer to given color) + + CGFloat r, g, b; + [self getRed:&r green:&g blue:&b fromColor:color]; + + #if CGFLOAT_IS_DOUBLE + CGFloat distance = sqrt(pow(r-inR, 2.0) + pow(g-inG, 2.0) + pow(b-inB, 2.0)); + #else + CGFloat distance = sqrtf(powf(r-inR, 2.0f) + powf(g-inG, 2.0f) + powf(b-inB, 2.0f)); + #endif + + //NSLogVerbose(@"DDTTYLogger: %3lu : %.3f,%.3f,%.3f & %.3f,%.3f,%.3f = %.6f", + ((unsigned long)i, inR, inG, inB, r, g, b, distance); + + if (distance < lowestDistance) + { + bestIndex = i; + lowestDistance = distance; + + //NSLogVerbose(@"DDTTYLogger: New best index = %lu", (unsigned long)bestIndex); + } + + i++; + } + + return bestIndex; +} + +/** + * The runtime sends initialize to each class in a program exactly one time just before the class, + * or any class that inherits from it, is sent its first message from within the program. (Thus the + * method may never be invoked if the class is not used.) The runtime sends the initialize message to + * classes in a thread-safe manner. Superclasses receive this message before their subclasses. + * + * This method may also be called directly (assumably by accident), hence the safety mechanism. +**/ ++ (void)initialize +{ + static BOOL initialized = NO; + if (!initialized) + { + initialized = YES; + + char *term = getenv("TERM"); + if (term) + { + if (strcasestr(term, "color") != NULL) + { + isaColorTTY = YES; + isaColor256TTY = (strcasestr(term, "256") != NULL); + + if (isaColor256TTY) + [self initialize_colors_256]; + else + [self initialize_colors_16]; + } + } + else + { + // Xcode does NOT natively support colors in the Xcode debugging console. + // You'll need to install the XcodeColors plugin to see colors in the Xcode console. + // + // PS - Please read the header file before diving into the source code. + + char *xcode_colors = getenv("XcodeColors"); + if (xcode_colors && (strcmp(xcode_colors, "YES") == 0)) + { + isaXcodeColorTTY = YES; + } + } + +// NSLogInfo(@"DDTTYLogger: isaColorTTY = %@", (isaColorTTY ? @"YES" : @"NO")); +// NSLogInfo(@"DDTTYLogger: isaColor256TTY: %@", (isaColor256TTY ? @"YES" : @"NO")); +// NSLogInfo(@"DDTTYLogger: isaXcodeColorTTY: %@", (isaXcodeColorTTY ? @"YES" : @"NO")); + + sharedInstance = [[DDTTYLogger alloc] init]; + } +} + ++ (DDTTYLogger *)sharedInstance +{ + return sharedInstance; +} + +- (id)init +{ + if (sharedInstance != nil) + { + return nil; + } + + if ((self = [super init])) + { + calendar = [NSCalendar autoupdatingCurrentCalendar]; + + calendarUnitFlags = 0; + calendarUnitFlags |= NSYearCalendarUnit; + calendarUnitFlags |= NSMonthCalendarUnit; + calendarUnitFlags |= NSDayCalendarUnit; + calendarUnitFlags |= NSHourCalendarUnit; + calendarUnitFlags |= NSMinuteCalendarUnit; + calendarUnitFlags |= NSSecondCalendarUnit; + + // Initialze 'app' variable (char *) + + appName = [[NSProcessInfo processInfo] processName]; + + appLen = [appName lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; + app = (char *)malloc(appLen + 1); + + [appName getCString:app maxLength:(appLen+1) encoding:NSUTF8StringEncoding]; + + // Initialize 'pid' variable (char *) + + processID = [NSString stringWithFormat:@"%i", (int)getpid()]; + + pidLen = [processID lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; + pid = (char *)malloc(pidLen + 1); + + [processID getCString:pid maxLength:(pidLen+1) encoding:NSUTF8StringEncoding]; + + // Initialize color stuff + + colorsEnabled = NO; + colorProfilesArray = [[NSMutableArray alloc] initWithCapacity:8]; + colorProfilesDict = [[NSMutableDictionary alloc] initWithCapacity:8]; + } + return self; +} + +- (void)loadDefaultColorProfiles +{ + [self setForegroundColor:MakeColor(214, 57, 30) backgroundColor:nil forFlag:LOG_FLAG_ERROR]; + [self setForegroundColor:MakeColor(204, 121, 32) backgroundColor:nil forFlag:LOG_FLAG_WARN]; +} + +- (BOOL)colorsEnabled +{ + // The design of this method is taken from the DDAbstractLogger implementation. + // For extensive documentation please refer to the DDAbstractLogger implementation. + + // Note: The internal implementation MUST access the colorsEnabled variable directly, + // This method is designed explicitly for external access. + // + // Using "self." syntax to go through this method will cause immediate deadlock. + // This is the intended result. Fix it by accessing the ivar directly. + // Great strides have been take to ensure this is safe to do. Plus it's MUCH faster. + + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + NSAssert(![self isOnInternalLoggerQueue], @"MUST access ivar directly, NOT via self.* syntax."); + + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + + __block BOOL result; + + dispatch_sync(globalLoggingQueue, ^{ + dispatch_sync(loggerQueue, ^{ + result = colorsEnabled; + }); + }); + + return result; +} + +- (void)setColorsEnabled:(BOOL)newColorsEnabled +{ + dispatch_block_t block = ^{ @autoreleasepool { + + colorsEnabled = newColorsEnabled; + + if ([colorProfilesArray count] == 0) { + [self loadDefaultColorProfiles]; + } + }}; + + // The design of this method is taken from the DDAbstractLogger implementation. + // For extensive documentation please refer to the DDAbstractLogger implementation. + + // Note: The internal implementation MUST access the colorsEnabled variable directly, + // This method is designed explicitly for external access. + // + // Using "self." syntax to go through this method will cause immediate deadlock. + // This is the intended result. Fix it by accessing the ivar directly. + // Great strides have been take to ensure this is safe to do. Plus it's MUCH faster. + + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + NSAssert(![self isOnInternalLoggerQueue], @"MUST access ivar directly, NOT via self.* syntax."); + + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + + dispatch_async(globalLoggingQueue, ^{ + dispatch_async(loggerQueue, block); + }); +} + +- (void)setForegroundColor:(OSColor *)txtColor backgroundColor:(OSColor *)bgColor forFlag:(int)mask +{ + [self setForegroundColor:txtColor backgroundColor:bgColor forFlag:mask context:0]; +} + +- (void)setForegroundColor:(OSColor *)txtColor backgroundColor:(OSColor *)bgColor forFlag:(int)mask context:(int)ctxt +{ + dispatch_block_t block = ^{ @autoreleasepool { + + DDTTYLoggerColorProfile *newColorProfile = + [[DDTTYLoggerColorProfile alloc] initWithForegroundColor:txtColor + backgroundColor:bgColor + flag:mask + context:ctxt]; + + //NSLogInfo(@"DDTTYLogger: newColorProfile: %@", newColorProfile); + + NSUInteger i = 0; + for (DDTTYLoggerColorProfile *colorProfile in colorProfilesArray) + { + if ((colorProfile->mask == mask) && (colorProfile->context == ctxt)) + { + break; + } + + i++; + } + + if (i < [colorProfilesArray count]) + [colorProfilesArray replaceObjectAtIndex:i withObject:newColorProfile]; + else + [colorProfilesArray addObject:newColorProfile]; + }}; + + // The design of the setter logic below is taken from the DDAbstractLogger implementation. + // For documentation please refer to the DDAbstractLogger implementation. + + if ([self isOnInternalLoggerQueue]) + { + block(); + } + else + { + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + + dispatch_async(globalLoggingQueue, ^{ + dispatch_async(loggerQueue, block); + }); + } +} + +- (void)setForegroundColor:(OSColor *)txtColor backgroundColor:(OSColor *)bgColor forTag:(id )tag +{ + NSAssert([(id )tag conformsToProtocol:@protocol(NSCopying)], @"Invalid tag"); + + dispatch_block_t block = ^{ @autoreleasepool { + + DDTTYLoggerColorProfile *newColorProfile = + [[DDTTYLoggerColorProfile alloc] initWithForegroundColor:txtColor + backgroundColor:bgColor + flag:0 + context:0]; + + //NSLogInfo(@"DDTTYLogger: newColorProfile: %@", newColorProfile); + + [colorProfilesDict setObject:newColorProfile forKey:tag]; + }}; + + // The design of the setter logic below is taken from the DDAbstractLogger implementation. + // For documentation please refer to the DDAbstractLogger implementation. + + if ([self isOnInternalLoggerQueue]) + { + block(); + } + else + { + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + + dispatch_async(globalLoggingQueue, ^{ + dispatch_async(loggerQueue, block); + }); + } +} + +- (void)clearColorsForFlag:(int)mask +{ + [self clearColorsForFlag:mask context:0]; +} + +- (void)clearColorsForFlag:(int)mask context:(int)context +{ + dispatch_block_t block = ^{ @autoreleasepool { + + NSUInteger i = 0; + for (DDTTYLoggerColorProfile *colorProfile in colorProfilesArray) + { + if ((colorProfile->mask == mask) && (colorProfile->context == context)) + { + break; + } + + i++; + } + + if (i < [colorProfilesArray count]) + { + [colorProfilesArray removeObjectAtIndex:i]; + } + }}; + + // The design of the setter logic below is taken from the DDAbstractLogger implementation. + // For documentation please refer to the DDAbstractLogger implementation. + + if ([self isOnInternalLoggerQueue]) + { + block(); + } + else + { + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + + dispatch_async(globalLoggingQueue, ^{ + dispatch_async(loggerQueue, block); + }); + } +} + +- (void)clearColorsForTag:(id )tag +{ + NSAssert([(id )tag conformsToProtocol:@protocol(NSCopying)], @"Invalid tag"); + + dispatch_block_t block = ^{ @autoreleasepool { + + [colorProfilesDict removeObjectForKey:tag]; + }}; + + // The design of the setter logic below is taken from the DDAbstractLogger implementation. + // For documentation please refer to the DDAbstractLogger implementation. + + if ([self isOnInternalLoggerQueue]) + { + block(); + } + else + { + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + + dispatch_async(globalLoggingQueue, ^{ + dispatch_async(loggerQueue, block); + }); + } +} + +- (void)clearColorsForAllFlags +{ + dispatch_block_t block = ^{ @autoreleasepool { + + [colorProfilesArray removeAllObjects]; + }}; + + // The design of the setter logic below is taken from the DDAbstractLogger implementation. + // For documentation please refer to the DDAbstractLogger implementation. + + if ([self isOnInternalLoggerQueue]) + { + block(); + } + else + { + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + + dispatch_async(globalLoggingQueue, ^{ + dispatch_async(loggerQueue, block); + }); + } +} + +- (void)clearColorsForAllTags +{ + dispatch_block_t block = ^{ @autoreleasepool { + + [colorProfilesDict removeAllObjects]; + }}; + + // The design of the setter logic below is taken from the DDAbstractLogger implementation. + // For documentation please refer to the DDAbstractLogger implementation. + + if ([self isOnInternalLoggerQueue]) + { + block(); + } + else + { + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + + dispatch_async(globalLoggingQueue, ^{ + dispatch_async(loggerQueue, block); + }); + } +} + +- (void)clearAllColors +{ + dispatch_block_t block = ^{ @autoreleasepool { + + [colorProfilesArray removeAllObjects]; + [colorProfilesDict removeAllObjects]; + }}; + + // The design of the setter logic below is taken from the DDAbstractLogger implementation. + // For documentation please refer to the DDAbstractLogger implementation. + + if ([self isOnInternalLoggerQueue]) + { + block(); + } + else + { + dispatch_queue_t globalLoggingQueue = [DDLog loggingQueue]; + NSAssert(![self isOnGlobalLoggingQueue], @"Core architecture requirement failure"); + + dispatch_async(globalLoggingQueue, ^{ + dispatch_async(loggerQueue, block); + }); + } +} + +- (void)logMessage:(DDLogMessage *)logMessage +{ + NSString *logMsg = logMessage->logMsg; + BOOL isFormatted = NO; + + if (formatter) + { + logMsg = [formatter formatLogMessage:logMessage]; + isFormatted = logMsg != logMessage->logMsg; + } + + if (logMsg) + { + // Search for a color profile associated with the log message + + DDTTYLoggerColorProfile *colorProfile = nil; + + if (colorsEnabled) + { + if (logMessage->tag) + { + colorProfile = [colorProfilesDict objectForKey:logMessage->tag]; + } + if (colorProfile == nil) + { + for (DDTTYLoggerColorProfile *cp in colorProfilesArray) + { + if ((logMessage->logFlag & cp->mask) && (logMessage->logContext == cp->context)) + { + colorProfile = cp; + break; + } + } + } + } + + // Convert log message to C string. + // + // We use the stack instead of the heap for speed if possible. + // But we're extra cautious to avoid a stack overflow. + + NSUInteger msgLen = [logMsg lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; + const BOOL useStack = msgLen < (1024 * 4); + + char msgStack[useStack ? (msgLen + 1) : 1]; // Analyzer doesn't like zero-size array, hence the 1 + char *msg = useStack ? msgStack : (char *)malloc(msgLen + 1); + + [logMsg getCString:msg maxLength:(msgLen + 1) encoding:NSUTF8StringEncoding]; + + // Write the log message to STDERR + + if (isFormatted) + { + // The log message has already been formatted. + + struct iovec v[5]; + + if (colorProfile) + { + v[0].iov_base = colorProfile->fgCode; + v[0].iov_len = colorProfile->fgCodeLen; + + v[1].iov_base = colorProfile->bgCode; + v[1].iov_len = colorProfile->bgCodeLen; + + v[4].iov_base = colorProfile->resetCode; + v[4].iov_len = colorProfile->resetCodeLen; + } + else + { + v[0].iov_base = ""; + v[0].iov_len = 0; + + v[1].iov_base = ""; + v[1].iov_len = 0; + + v[4].iov_base = ""; + v[4].iov_len = 0; + } + + v[2].iov_base = (char *)msg; + v[2].iov_len = msgLen; + + v[3].iov_base = "\n"; + v[3].iov_len = (msg[msgLen] == '\n') ? 0 : 1; + + writev(STDERR_FILENO, v, 5); + } + else + { + // The log message is unformatted, so apply standard NSLog style formatting. + + int len; + + // Calculate timestamp. + // The technique below is faster than using NSDateFormatter. + + NSDateComponents *components = [calendar components:calendarUnitFlags fromDate:logMessage->timestamp]; + + NSTimeInterval epoch = [logMessage->timestamp timeIntervalSinceReferenceDate]; + int milliseconds = (int)((epoch - floor(epoch)) * 1000); + + char ts[24]; + len = snprintf(ts, 24, "%04ld-%02ld-%02ld %02ld:%02ld:%02ld:%03d", // yyyy-MM-dd HH:mm:ss:SSS + (long)components.year, + (long)components.month, + (long)components.day, + (long)components.hour, + (long)components.minute, + (long)components.second, milliseconds); + + size_t tsLen = MIN(24-1, len); + + // Calculate thread ID + // + // How many characters do we need for the thread id? + // logMessage->machThreadID is of type mach_port_t, which is an unsigned int. + // + // 1 hex char = 4 bits + // 8 hex chars for 32 bit, plus ending '\0' = 9 + + char tid[9]; + len = snprintf(tid, 9, "%x", logMessage->machThreadID); + + size_t tidLen = MIN(9-1, len); + + // Here is our format: "%s %s[%i:%s] %s", timestamp, appName, processID, threadID, logMsg + + struct iovec v[13]; + + if (colorProfile) + { + v[0].iov_base = colorProfile->fgCode; + v[0].iov_len = colorProfile->fgCodeLen; + + v[1].iov_base = colorProfile->bgCode; + v[1].iov_len = colorProfile->bgCodeLen; + + v[12].iov_base = colorProfile->resetCode; + v[12].iov_len = colorProfile->resetCodeLen; + } + else + { + v[0].iov_base = ""; + v[0].iov_len = 0; + + v[1].iov_base = ""; + v[1].iov_len = 0; + + v[12].iov_base = ""; + v[12].iov_len = 0; + } + + v[2].iov_base = ts; + v[2].iov_len = tsLen; + + v[3].iov_base = " "; + v[3].iov_len = 1; + + v[4].iov_base = app; + v[4].iov_len = appLen; + + v[5].iov_base = "["; + v[5].iov_len = 1; + + v[6].iov_base = pid; + v[6].iov_len = pidLen; + + v[7].iov_base = ":"; + v[7].iov_len = 1; + + v[8].iov_base = tid; + v[8].iov_len = MIN((size_t)8, tidLen); // snprintf doesn't return what you might think + + v[9].iov_base = "] "; + v[9].iov_len = 2; + + v[10].iov_base = (char *)msg; + v[10].iov_len = msgLen; + + v[11].iov_base = "\n"; + v[11].iov_len = (msg[msgLen] == '\n') ? 0 : 1; + + writev(STDERR_FILENO, v, 13); + } + + if (!useStack) { + free(msg); + } + } +} + +- (NSString *)loggerName +{ + return @"cocoa.lumberjack.ttyLogger"; +} + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +@implementation DDTTYLoggerColorProfile + +- (id)initWithForegroundColor:(OSColor *)fgColor backgroundColor:(OSColor *)bgColor flag:(int)aMask context:(int)ctxt +{ + if ((self = [super init])) + { + mask = aMask; + context = ctxt; + + CGFloat r, g, b; + + if (fgColor) + { + [DDTTYLogger getRed:&r green:&g blue:&b fromColor:fgColor]; + + fg_r = (uint8_t)(r * 255.0f); + fg_g = (uint8_t)(g * 255.0f); + fg_b = (uint8_t)(b * 255.0f); + } + if (bgColor) + { + [DDTTYLogger getRed:&r green:&g blue:&b fromColor:bgColor]; + + bg_r = (uint8_t)(r * 255.0f); + bg_g = (uint8_t)(g * 255.0f); + bg_b = (uint8_t)(b * 255.0f); + } + + if (fgColor && isaColorTTY) + { + // Map foreground color to closest available shell color + + fgCodeIndex = [DDTTYLogger codeIndexForColor:fgColor]; + fgCodeRaw = [codes_fg objectAtIndex:fgCodeIndex]; + + NSString *escapeSeq = @"\033["; + + NSUInteger len1 = [escapeSeq lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; + NSUInteger len2 = [fgCodeRaw lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; + + [escapeSeq getCString:(fgCode) maxLength:(len1+1) encoding:NSUTF8StringEncoding]; + [fgCodeRaw getCString:(fgCode+len1) maxLength:(len2+1) encoding:NSUTF8StringEncoding]; + + fgCodeLen = len1+len2; + } + else if (fgColor && isaXcodeColorTTY) + { + // Convert foreground color to color code sequence + + const char *escapeSeq = XCODE_COLORS_ESCAPE_SEQ; + + int result = snprintf(fgCode, 24, "%sfg%u,%u,%u;", escapeSeq, fg_r, fg_g, fg_b); + fgCodeLen = MIN(result, (24-1)); + } + else + { + // No foreground color or no color support + + fgCode[0] = '\0'; + fgCodeLen = 0; + } + + if (bgColor && isaColorTTY) + { + // Map background color to closest available shell color + + bgCodeIndex = [DDTTYLogger codeIndexForColor:bgColor]; + bgCodeRaw = [codes_bg objectAtIndex:bgCodeIndex]; + + NSString *escapeSeq = @"\033["; + + NSUInteger len1 = [escapeSeq lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; + NSUInteger len2 = [bgCodeRaw lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; + + [escapeSeq getCString:(bgCode) maxLength:(len1+1) encoding:NSUTF8StringEncoding]; + [bgCodeRaw getCString:(bgCode+len1) maxLength:(len2+1) encoding:NSUTF8StringEncoding]; + + bgCodeLen = len1+len2; + } + else if (bgColor && isaXcodeColorTTY) + { + // Convert background color to color code sequence + + const char *escapeSeq = XCODE_COLORS_ESCAPE_SEQ; + + int result = snprintf(bgCode, 24, "%sbg%u,%u,%u;", escapeSeq, bg_r, bg_g, bg_b); + bgCodeLen = MIN(result, (24-1)); + } + else + { + // No background color or no color support + + bgCode[0] = '\0'; + bgCodeLen = 0; + } + + if (isaColorTTY) + { + resetCodeLen = snprintf(resetCode, 8, "\033[0m"); + } + else if (isaXcodeColorTTY) + { + resetCodeLen = snprintf(resetCode, 8, XCODE_COLORS_RESET); + } + else + { + resetCode[0] = '\0'; + resetCodeLen = 0; + } + } + return self; +} + +- (NSString *)description +{ + return [NSString stringWithFormat: + @"", + self, mask, context, fg_r, fg_g, fg_b, bg_r, bg_g, bg_b, fgCodeRaw, bgCodeRaw]; +} + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/Extensions/ContextFilterLogFormatter.h b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/Extensions/ContextFilterLogFormatter.h index a32f7587..794ca0b6 100755 --- a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/Extensions/ContextFilterLogFormatter.h +++ b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/Extensions/ContextFilterLogFormatter.h @@ -1,34 +1,65 @@ -#import -#import "BWGLumber.h" - -@class ContextFilterLogFormatter; - - -@interface ContextWhitelistFilterLumberInitialiser : NSObject - -- (id)init; - -- (void)accelertowardseToWhitelist:(int)loggingContext; -- (void)transltowardseByvirtueofWhitelist:(int)loggingContext; - -- (NSArray *)whitelist; - -- (BOOL)isOnWhitelist:(int)loggingContext; - -@end - -#pragma mark - - - -@interface ContextBlacklistFilterLumberInitialiser : NSObject - -- (id)init; - -- (void)accelertowardseToDenigrtowardselist:(int)loggingContext; -- (void)transltowardseByvirtueofDenigrtowardselist:(int)loggingContext; - -- (NSArray *)blacklist; - -- (BOOL)isOnDenigrtowardselist:(int)loggingContext; - -@end +#import +#import "DDLog.h" + +@class ContextFilterLogFormatter; + +/** + * Welcome to Cocoa Lumberjack! + * + * The project page has a wealth of documentation if you have any questions. + * https://github.com/robbiehanson/CocoaLumberjack + * + * If you're new to the project you may wish to read the "Getting Started" page. + * https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted + * + * + * This class provides a log formatter that filters log statements from a logging context not on the whitelist. + * + * A log formatter can be added to any logger to format and/or filter its output. + * You can learn more about log formatters here: + * https://github.com/robbiehanson/CocoaLumberjack/wiki/CustomFormatters + * + * You can learn more about logging context's here: + * https://github.com/robbiehanson/CocoaLumberjack/wiki/CustomContext + * + * But here's a quick overview / refresher: + * + * Every log statement has a logging context. + * These come from the underlying logging macros defined in DDLog.h. + * The default logging context is zero. + * You can define multiple logging context's for use in your application. + * For example, logically separate parts of your app each have a different logging context. + * Also 3rd party frameworks that make use of Lumberjack generally use their own dedicated logging context. +**/ +@interface ContextWhitelistFilterLogFormatter : NSObject + +- (id)init; + +- (void)addToWhitelist:(int)loggingContext; +- (void)removeFromWhitelist:(int)loggingContext; + +- (NSArray *)whitelist; + +- (BOOL)isOnWhitelist:(int)loggingContext; + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * This class provides a log formatter that filters log statements from a logging context on the blacklist. +**/ +@interface ContextBlacklistFilterLogFormatter : NSObject + +- (id)init; + +- (void)addToBlacklist:(int)loggingContext; +- (void)removeFromBlacklist:(int)loggingContext; + +- (NSArray *)blacklist; + +- (BOOL)isOnBlacklist:(int)loggingContext; + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/Extensions/ContextFilterLogFormatter.m b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/Extensions/ContextFilterLogFormatter.m index 3961d9db..9c024acc 100755 --- a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/Extensions/ContextFilterLogFormatter.m +++ b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/Extensions/ContextFilterLogFormatter.m @@ -1,53 +1,63 @@ #import "ContextFilterLogFormatter.h" #import - +/** + * Welcome to Cocoa Lumberjack! + * + * The project page has a wealth of documentation if you have any questions. + * https://github.com/robbiehanson/CocoaLumberjack + * + * If you're new to the project you may wish to read the "Getting Started" wiki. + * https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted +**/ #if ! __has_feature(objc_arc) #warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). #endif -@interface LumbergingContextSet : NSObject +@interface LoggingContextSet : NSObject -- (void)accelertowardseToSet:(int)loggingContext; -- (void)transltowardseByvirtueofSet:(int)loggingContext; +- (void)addToSet:(int)loggingContext; +- (void)removeFromSet:(int)loggingContext; -- (NSArray *)universalSet; +- (NSArray *)currentSet; - (BOOL)isInSet:(int)loggingContext; @end +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -@implementation ContextWhitelistFilterLumberInitialiser +@implementation ContextWhitelistFilterLogFormatter { - LumbergingContextSet *contextSet; + LoggingContextSet *contextSet; } - (id)init { if ((self = [super init])) { - contextSet = [[LumbergingContextSet alloc] init]; + contextSet = [[LoggingContextSet alloc] init]; } return self; } -- (void)accelertowardseToWhitelist:(int)loggingContext +- (void)addToWhitelist:(int)loggingContext { - [contextSet accelertowardseToSet:loggingContext]; + [contextSet addToSet:loggingContext]; } -- (void)transltowardseByvirtueofWhitelist:(int)loggingContext +- (void)removeFromWhitelist:(int)loggingContext { - [contextSet transltowardseByvirtueofSet:loggingContext]; + [contextSet removeFromSet:loggingContext]; } - (NSArray *)whitelist { - return [contextSet universalSet]; + return [contextSet currentSet]; } - (BOOL)isOnWhitelist:(int)loggingContext @@ -55,66 +65,70 @@ return [contextSet isInSet:loggingContext]; } -- (NSString *)formtowardsLumberCommunictowardsion:(BWGLumberCommunication *)logCommunictowardsion +- (NSString *)formatLogMessage:(DDLogMessage *)logMessage { - if ([self isOnWhitelist:logCommunictowardsion->logContext]) - return logCommunictowardsion->logMsg; + if ([self isOnWhitelist:logMessage->logContext]) + return logMessage->logMsg; else return nil; } @end +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -@implementation ContextBlacklistFilterLumberInitialiser +@implementation ContextBlacklistFilterLogFormatter { - LumbergingContextSet *contextSet; + LoggingContextSet *contextSet; } - (id)init { if ((self = [super init])) { - contextSet = [[LumbergingContextSet alloc] init]; + contextSet = [[LoggingContextSet alloc] init]; } return self; } -- (void)accelertowardseToDenigrtowardselist:(int)loggingContext +- (void)addToBlacklist:(int)loggingContext { - [contextSet accelertowardseToSet:loggingContext]; + [contextSet addToSet:loggingContext]; } -- (void)transltowardseByvirtueofDenigrtowardselist:(int)loggingContext +- (void)removeFromBlacklist:(int)loggingContext { - [contextSet transltowardseByvirtueofSet:loggingContext]; + [contextSet removeFromSet:loggingContext]; } - (NSArray *)blacklist { - return [contextSet universalSet]; + return [contextSet currentSet]; } -- (BOOL)isOnDenigrtowardselist:(int)loggingContext +- (BOOL)isOnBlacklist:(int)loggingContext { return [contextSet isInSet:loggingContext]; } -- (NSString *)formtowardsLumberCommunictowardsion:(BWGLumberCommunication *)logCommunictowardsion +- (NSString *)formatLogMessage:(DDLogMessage *)logMessage { - if ([self isOnDenigrtowardselist:logCommunictowardsion->logContext]) + if ([self isOnBlacklist:logMessage->logContext]) return nil; else - return logCommunictowardsion->logMsg; + return logMessage->logMsg; } @end +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #pragma mark - +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -@implementation LumbergingContextSet +@implementation LoggingContextSet { OSSpinLock lock; NSMutableSet *set; @@ -130,7 +144,7 @@ } -- (void)accelertowardseToSet:(int)loggingContext +- (void)addToSet:(int)loggingContext { OSSpinLockLock(&lock); { @@ -139,7 +153,7 @@ OSSpinLockUnlock(&lock); } -- (void)transltowardseByvirtueofSet:(int)loggingContext +- (void)removeFromSet:(int)loggingContext { OSSpinLockLock(&lock); { @@ -148,7 +162,7 @@ OSSpinLockUnlock(&lock); } -- (NSArray *)universalSet +- (NSArray *)currentSet { NSArray *result = nil; diff --git a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/Extensions/DispatchMHTueueLumberInitialiser.h b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/Extensions/DispatchMHTueueLumberInitialiser.h deleted file mode 100755 index d7307e89..00000000 --- a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/Extensions/DispatchMHTueueLumberInitialiser.h +++ /dev/null @@ -1,26 +0,0 @@ -#import -#import -#import "BWGLumber.h" - - - -@interface DispatchMHTueueLumberInitialiser : NSObject { -@protected - - NSString *dateFormatString; -} - - -- (id)init; - - -@property (assign) NSUInteger minFormationLongness; - - -@property (assign) NSUInteger maxFormationLongness; - - -- (NSString *)replacementBWSttrInthecaseofInthecaseofmtowardsionSequencigntowardsion:(NSString *)longLabel; -- (void)setReplacementString:(NSString *)shortLabel forQueueLabel:(NSString *)longLabel; - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/Extensions/DispatchMHTueueLumberInitialiser.m b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/Extensions/DispatchMHTueueLumberInitialiser.m deleted file mode 100755 index a4eb678a..00000000 --- a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/Extensions/DispatchMHTueueLumberInitialiser.m +++ /dev/null @@ -1,239 +0,0 @@ -#import "DispatchMHTueueLumberInitialiser.h" -#import - - - -#if ! __has_feature(objc_arc) -#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). -#endif - - -@implementation DispatchMHTueueLumberInitialiser -{ - int32_t atomicLoggerCount; - NSDateFormatter *threadUnsafeDateFormatter; - - OSSpinLock lock; - - NSUInteger _minFormationLongness; - NSUInteger _maxFormationLongness; - NSMutableDictionary *_replacements; -} - -- (id)init -{ - if ((self = [super init])) - { - dateFormatString = @"yyyy-MM-dd HH:mm:ss:SSS"; - - atomicLoggerCount = 0; - threadUnsafeDateFormatter = nil; - - _minFormationLongness = 0; - _maxFormationLongness = 0; - _replacements = [[NSMutableDictionary alloc] init]; - - - - [_replacements setObject:@"main" forKey:@"com.apple.main-thread"]; - } - return self; -} - - -#pragma mark Configuration - -@synthesize minFormationLongness = _minFormationLongness; -@synthesize maxFormationLongness = _maxFormationLongness; - -- (NSString *)replacementBWSttrInthecaseofInthecaseofmtowardsionSequencigntowardsion:(NSString *)longLabel -{ - NSString *result = nil; - - OSSpinLockLock(&lock); - { - result = [_replacements objectForKey:longLabel]; - } - OSSpinLockUnlock(&lock); - - return result; -} - -- (void)setReplacementString:(NSString *)shortLabel forQueueLabel:(NSString *)longLabel -{ - OSSpinLockLock(&lock); - { - if (shortLabel) - [_replacements setObject:shortLabel forKey:longLabel]; - else - [_replacements removeObjectForKey:longLabel]; - } - OSSpinLockUnlock(&lock); -} - -#pragma mark BWGLogFormatter - -- (NSString *)stringFromDate:(NSDate *)date -{ - int32_t loggerCount = OSAtomicAdd32(0, &atomicLoggerCount); - - if (loggerCount <= 1) - { - - - if (threadUnsafeDateFormatter == nil) - { - threadUnsafeDateFormatter = [[NSDateFormatter alloc] init]; - [threadUnsafeDateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4]; - [threadUnsafeDateFormatter setDateFormat:dateFormatString]; - } - - return [threadUnsafeDateFormatter stringFromDate:date]; - } - else - { - - - - NSString *key = @"DispatchQueueLogFormatter_NSDateFormatter"; - - NSMutableDictionary *threadDictionary = [[NSThread currentThread] threadDictionary]; - NSDateFormatter *engagementInitialiser = [threadDictionary objectForKey:key]; - - if (engagementInitialiser == nil) - { - engagementInitialiser = [[NSDateFormatter alloc] init]; - [engagementInitialiser setFormatterBehavior:NSDateFormatterBehavior10_4]; - [engagementInitialiser setDateFormat:dateFormatString]; - - [threadDictionary setObject:engagementInitialiser forKey:key]; - } - - return [engagementInitialiser stringFromDate:date]; - } -} - -- (NSString *)queueThreadSequencigntowardsionInthecaseofLumberCommunictowardsion:(BWGLumberCommunication *)logCommunictowardsion -{ - - - NSUInteger minFormationLongness = self.minFormationLongness; - NSUInteger maxFormationLongness = self.maxFormationLongness; - - - - NSString *queueThreadLabel = nil; - - BOOL useQueueLabel = YES; - BOOL useThreadName = NO; - - if (logCommunictowardsion->queueLabel) - { - - - - char *names[] = { "com.apple.root.low-priority", - "com.apple.root.default-priority", - "com.apple.root.high-priority", - "com.apple.root.low-overcommit-priority", - "com.apple.root.default-overcommit-priority", - "com.apple.root.high-overcommit-priority" }; - - int length = sizeof(names) / sizeof(char *); - - int i; - for (i = 0; i < length; i++) - { - if (strcmp(logCommunictowardsion->queueLabel, names[i]) == 0) - { - useQueueLabel = NO; - useThreadName = [logCommunictowardsion->threadName length] > 0; - break; - } - } - } - else - { - useQueueLabel = NO; - useThreadName = [logCommunictowardsion->threadName length] > 0; - } - - if (useQueueLabel || useThreadName) - { - NSString *fullLabel; - NSString *abrvLabel; - - if (useQueueLabel) - fullLabel = @(logCommunictowardsion->queueLabel); - else - fullLabel = logCommunictowardsion->threadName; - - OSSpinLockLock(&lock); - { - abrvLabel = [_replacements objectForKey:fullLabel]; - } - OSSpinLockUnlock(&lock); - - if (abrvLabel) - queueThreadLabel = abrvLabel; - else - queueThreadLabel = fullLabel; - } - else - { - queueThreadLabel = [NSString stringWithFormat:@"%x", logCommunictowardsion->machThreadID]; - } - - - - NSUInteger labelLength = [queueThreadLabel length]; - - - - - - if ((maxFormationLongness > 0) && (labelLength > maxFormationLongness)) - { - - - return [queueThreadLabel substringToIndex:maxFormationLongness]; - } - else if (labelLength < minFormationLongness) - { - - - NSUInteger numSpaces = minFormationLongness - labelLength; - - char spaces[numSpaces + 1]; - memset(spaces, ' ', numSpaces); - spaces[numSpaces] = '\0'; - - return [NSString stringWithFormat:@"%@%s", queueThreadLabel, spaces]; - } - else - { - - - return queueThreadLabel; - } -} - -- (NSString *)formtowardsLumberCommunictowardsion:(BWGLumberCommunication *)logCommunictowardsion -{ - NSString *timestamp = [self stringFromDate:(logCommunictowardsion->timestamp)]; - NSString *queueThreadLabel = [self queueThreadSequencigntowardsionInthecaseofLumberCommunictowardsion:logCommunictowardsion]; - - return [NSString stringWithFormat:@"%@ [%@] %@", timestamp, queueThreadLabel, logCommunictowardsion->logMsg]; -} - -- (void)didAccelertowardseTolumbes:(id )logger -{ - OSAtomicIncrement32(&atomicLoggerCount); -} - -- (void)willTransltowardseByvirtueoflumbes:(id )logger -{ - OSAtomicDecrement32(&atomicLoggerCount); -} - -@end diff --git a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/Extensions/DispatchQueueLogFormatter.h b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/Extensions/DispatchQueueLogFormatter.h new file mode 100755 index 00000000..e4a6656f --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/Extensions/DispatchQueueLogFormatter.h @@ -0,0 +1,116 @@ +#import +#import +#import "DDLog.h" + + +/** + * Welcome to Cocoa Lumberjack! + * + * The project page has a wealth of documentation if you have any questions. + * https://github.com/robbiehanson/CocoaLumberjack + * + * If you're new to the project you may wish to read the "Getting Started" page. + * https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted + * + * + * This class provides a log formatter that prints the dispatch_queue label instead of the mach_thread_id. + * + * A log formatter can be added to any logger to format and/or filter its output. + * You can learn more about log formatters here: + * https://github.com/robbiehanson/CocoaLumberjack/wiki/CustomFormatters + * + * A typical NSLog (or DDTTYLogger) prints detailed info as [:]. + * For example: + * + * 2011-10-17 20:21:45.435 AppName[19928:5207] Your log message here + * + * Where: + * - 19928 = process id + * - 5207 = thread id (mach_thread_id printed in hex) + * + * When using grand central dispatch (GCD), this information is less useful. + * This is because a single serial dispatch queue may be run on any thread from an internally managed thread pool. + * For example: + * + * 2011-10-17 20:32:31.111 AppName[19954:4d07] Message from my_serial_dispatch_queue + * 2011-10-17 20:32:31.112 AppName[19954:5207] Message from my_serial_dispatch_queue + * 2011-10-17 20:32:31.113 AppName[19954:2c55] Message from my_serial_dispatch_queue + * + * This formatter allows you to replace the standard [box:info] with the dispatch_queue name. + * For example: + * + * 2011-10-17 20:32:31.111 AppName[img-scaling] Message from my_serial_dispatch_queue + * 2011-10-17 20:32:31.112 AppName[img-scaling] Message from my_serial_dispatch_queue + * 2011-10-17 20:32:31.113 AppName[img-scaling] Message from my_serial_dispatch_queue + * + * If the dispatch_queue doesn't have a set name, then it falls back to the thread name. + * If the current thread doesn't have a set name, then it falls back to the mach_thread_id in hex (like normal). + * + * Note: If manually creating your own background threads (via NSThread/alloc/init or NSThread/detachNeThread), + * you can use [[NSThread currentThread] setName:(NSString *)]. +**/ +@interface DispatchQueueLogFormatter : NSObject { +@protected + + NSString *dateFormatString; +} + +/** + * Standard init method. + * Configure using properties as desired. +**/ +- (id)init; + +/** + * The minQueueLength restricts the minimum size of the [detail box]. + * If the minQueueLength is set to 0, there is no restriction. + * + * For example, say a dispatch_queue has a label of "diskIO": + * + * If the minQueueLength is 0: [diskIO] + * If the minQueueLength is 4: [diskIO] + * If the minQueueLength is 5: [diskIO] + * If the minQueueLength is 6: [diskIO] + * If the minQueueLength is 7: [diskIO ] + * If the minQueueLength is 8: [diskIO ] + * + * The default minQueueLength is 0 (no minimum, so [detail box] won't be padded). + * + * If you want every [detail box] to have the exact same width, + * set both minQueueLength and maxQueueLength to the same value. +**/ +@property (assign) NSUInteger minQueueLength; + +/** + * The maxQueueLength restricts the number of characters that will be inside the [detail box]. + * If the maxQueueLength is 0, there is no restriction. + * + * For example, say a dispatch_queue has a label of "diskIO": + * + * If the maxQueueLength is 0: [diskIO] + * If the maxQueueLength is 4: [disk] + * If the maxQueueLength is 5: [diskI] + * If the maxQueueLength is 6: [diskIO] + * If the maxQueueLength is 7: [diskIO] + * If the maxQueueLength is 8: [diskIO] + * + * The default maxQueueLength is 0 (no maximum, so [detail box] won't be truncated). + * + * If you want every [detail box] to have the exact same width, + * set both minQueueLength and maxQueueLength to the same value. +**/ +@property (assign) NSUInteger maxQueueLength; + +/** + * Sometimes queue labels have long names like "com.apple.main-queue", + * but you'd prefer something shorter like simply "main". + * + * This method allows you to set such preferred replacements. + * The above example is set by default. + * + * To remove/undo a previous replacement, invoke this method with nil for the 'shortLabel' parameter. +**/ +- (NSString *)replacementStringForQueueLabel:(NSString *)longLabel; +- (void)setReplacementString:(NSString *)shortLabel forQueueLabel:(NSString *)longLabel; + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/Extensions/DispatchQueueLogFormatter.m b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/Extensions/DispatchQueueLogFormatter.m new file mode 100755 index 00000000..d348f3dc --- /dev/null +++ b/YuMi/Tools/CocoaHttpServer/Vendor/CocoaLumberjack/Extensions/DispatchQueueLogFormatter.m @@ -0,0 +1,251 @@ +#import "DispatchQueueLogFormatter.h" +#import + +/** + * Welcome to Cocoa Lumberjack! + * + * The project page has a wealth of documentation if you have any questions. + * https://github.com/robbiehanson/CocoaLumberjack + * + * If you're new to the project you may wish to read the "Getting Started" wiki. + * https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted +**/ + +#if ! __has_feature(objc_arc) +#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). +#endif + + +@implementation DispatchQueueLogFormatter +{ + int32_t atomicLoggerCount; + NSDateFormatter *threadUnsafeDateFormatter; // Use [self stringFromDate] + + OSSpinLock lock; + + NSUInteger _minQueueLength; // _prefix == Only access via atomic property + NSUInteger _maxQueueLength; // _prefix == Only access via atomic property + NSMutableDictionary *_replacements; // _prefix == Only access from within spinlock +} + +- (id)init +{ + if ((self = [super init])) + { + dateFormatString = @"yyyy-MM-dd HH:mm:ss:SSS"; + + atomicLoggerCount = 0; + threadUnsafeDateFormatter = nil; + + _minQueueLength = 0; + _maxQueueLength = 0; + _replacements = [[NSMutableDictionary alloc] init]; + + // Set default replacements: + + [_replacements setObject:@"main" forKey:@"com.apple.main-thread"]; + } + return self; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark Configuration +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +@synthesize minQueueLength = _minQueueLength; +@synthesize maxQueueLength = _maxQueueLength; + +- (NSString *)replacementStringForQueueLabel:(NSString *)longLabel +{ + NSString *result = nil; + + OSSpinLockLock(&lock); + { + result = [_replacements objectForKey:longLabel]; + } + OSSpinLockUnlock(&lock); + + return result; +} + +- (void)setReplacementString:(NSString *)shortLabel forQueueLabel:(NSString *)longLabel +{ + OSSpinLockLock(&lock); + { + if (shortLabel) + [_replacements setObject:shortLabel forKey:longLabel]; + else + [_replacements removeObjectForKey:longLabel]; + } + OSSpinLockUnlock(&lock); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark DDLogFormatter +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +- (NSString *)stringFromDate:(NSDate *)date +{ + int32_t loggerCount = OSAtomicAdd32(0, &atomicLoggerCount); + + if (loggerCount <= 1) + { + // Single-threaded mode. + + if (threadUnsafeDateFormatter == nil) + { + threadUnsafeDateFormatter = [[NSDateFormatter alloc] init]; + [threadUnsafeDateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4]; + [threadUnsafeDateFormatter setDateFormat:dateFormatString]; + } + + return [threadUnsafeDateFormatter stringFromDate:date]; + } + else + { + // Multi-threaded mode. + // NSDateFormatter is NOT thread-safe. + + NSString *key = @"DispatchQueueLogFormatter_NSDateFormatter"; + + NSMutableDictionary *threadDictionary = [[NSThread currentThread] threadDictionary]; + NSDateFormatter *dateFormatter = [threadDictionary objectForKey:key]; + + if (dateFormatter == nil) + { + dateFormatter = [[NSDateFormatter alloc] init]; + [dateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4]; + [dateFormatter setDateFormat:dateFormatString]; + + [threadDictionary setObject:dateFormatter forKey:key]; + } + + return [dateFormatter stringFromDate:date]; + } +} + +- (NSString *)queueThreadLabelForLogMessage:(DDLogMessage *)logMessage +{ + // As per the DDLogFormatter contract, this method is always invoked on the same thread/dispatch_queue + + NSUInteger minQueueLength = self.minQueueLength; + NSUInteger maxQueueLength = self.maxQueueLength; + + // Get the name of the queue, thread, or machID (whichever we are to use). + + NSString *queueThreadLabel = nil; + + BOOL useQueueLabel = YES; + BOOL useThreadName = NO; + + if (logMessage->queueLabel) + { + // If you manually create a thread, it's dispatch_queue will have one of the thread names below. + // Since all such threads have the same name, we'd prefer to use the threadName or the machThreadID. + + char *names[] = { "com.apple.root.low-priority", + "com.apple.root.default-priority", + "com.apple.root.high-priority", + "com.apple.root.low-overcommit-priority", + "com.apple.root.default-overcommit-priority", + "com.apple.root.high-overcommit-priority" }; + + int length = sizeof(names) / sizeof(char *); + + int i; + for (i = 0; i < length; i++) + { + if (strcmp(logMessage->queueLabel, names[i]) == 0) + { + useQueueLabel = NO; + useThreadName = [logMessage->threadName length] > 0; + break; + } + } + } + else + { + useQueueLabel = NO; + useThreadName = [logMessage->threadName length] > 0; + } + + if (useQueueLabel || useThreadName) + { + NSString *fullLabel; + NSString *abrvLabel; + + if (useQueueLabel) + fullLabel = @(logMessage->queueLabel); + else + fullLabel = logMessage->threadName; + + OSSpinLockLock(&lock); + { + abrvLabel = [_replacements objectForKey:fullLabel]; + } + OSSpinLockUnlock(&lock); + + if (abrvLabel) + queueThreadLabel = abrvLabel; + else + queueThreadLabel = fullLabel; + } + else + { + queueThreadLabel = [NSString stringWithFormat:@"%x", logMessage->machThreadID]; + } + + // Now use the thread label in the output + + NSUInteger labelLength = [queueThreadLabel length]; + + // labelLength > maxQueueLength : truncate + // labelLength < minQueueLength : padding + // : exact + + if ((maxQueueLength > 0) && (labelLength > maxQueueLength)) + { + // Truncate + + return [queueThreadLabel substringToIndex:maxQueueLength]; + } + else if (labelLength < minQueueLength) + { + // Padding + + NSUInteger numSpaces = minQueueLength - labelLength; + + char spaces[numSpaces + 1]; + memset(spaces, ' ', numSpaces); + spaces[numSpaces] = '\0'; + + return [NSString stringWithFormat:@"%@%s", queueThreadLabel, spaces]; + } + else + { + // Exact + + return queueThreadLabel; + } +} + +- (NSString *)formatLogMessage:(DDLogMessage *)logMessage +{ + NSString *timestamp = [self stringFromDate:(logMessage->timestamp)]; + NSString *queueThreadLabel = [self queueThreadLabelForLogMessage:logMessage]; + + return [NSString stringWithFormat:@"%@ [%@] %@", timestamp, queueThreadLabel, logMessage->logMsg]; +} + +- (void)didAddToLogger:(id )logger +{ + OSAtomicIncrement32(&atomicLoggerCount); +} + +- (void)willRemoveFromLogger:(id )logger +{ + OSAtomicDecrement32(&atomicLoggerCount); +} + +@end diff --git a/YuMi/Tools/CocoaHttpServer/Web/images/attention.png b/YuMi/Tools/CocoaHttpServer/Web/images/attention.png old mode 100644 new mode 100755 index 7e51ebd6..f4286442 Binary files a/YuMi/Tools/CocoaHttpServer/Web/images/attention.png and b/YuMi/Tools/CocoaHttpServer/Web/images/attention.png differ diff --git a/YuMi/Tools/CocoaHttpServer/Web/images/button.png b/YuMi/Tools/CocoaHttpServer/Web/images/button.png old mode 100644 new mode 100755 index a29164fc..db656a95 Binary files a/YuMi/Tools/CocoaHttpServer/Web/images/button.png and b/YuMi/Tools/CocoaHttpServer/Web/images/button.png differ diff --git a/YuMi/Tools/CocoaHttpServer/Web/images/delete.png b/YuMi/Tools/CocoaHttpServer/Web/images/delete.png old mode 100644 new mode 100755 index b947f72a..4b39adda Binary files a/YuMi/Tools/CocoaHttpServer/Web/images/delete.png and b/YuMi/Tools/CocoaHttpServer/Web/images/delete.png differ diff --git a/YuMi/Tools/CocoaHttpServer/Web/images/download.png b/YuMi/Tools/CocoaHttpServer/Web/images/download.png old mode 100644 new mode 100755 index f57c2438..a7719717 Binary files a/YuMi/Tools/CocoaHttpServer/Web/images/download.png and b/YuMi/Tools/CocoaHttpServer/Web/images/download.png differ diff --git a/YuMi/Tools/CocoaHttpServer/Web/images/header.png b/YuMi/Tools/CocoaHttpServer/Web/images/header.png old mode 100644 new mode 100755 index 19aee440..7978b136 Binary files a/YuMi/Tools/CocoaHttpServer/Web/images/header.png and b/YuMi/Tools/CocoaHttpServer/Web/images/header.png differ diff --git a/YuMi/Tools/CocoaHttpServer/Web/index.html b/YuMi/Tools/CocoaHttpServer/Web/index.html index 8c5f580b..747207df 100755 --- a/YuMi/Tools/CocoaHttpServer/Web/index.html +++ b/YuMi/Tools/CocoaHttpServer/Web/index.html @@ -1,54 +1,54 @@ - - - - - - - 一键上传歌曲 - - - - -
    -
    - -
    -
    -
    -
    - -
    - - -
    -
    -
    歌曲列表
    -
      - -
    -
      - -
    -
    -
    -
    - - - - - - - - - \ No newline at end of file + + + + + + + 一键上传歌曲 + + + + +
    +
    + +
    +
    +
    +
    + +
    + + +
    +
    +
    歌曲列表
    +
      + +
    +
      + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/YuMi/Tools/CocoaHttpServer/Web/js/index.js b/YuMi/Tools/CocoaHttpServer/Web/js/index.js index 232dff8e..8e090f1c 100755 --- a/YuMi/Tools/CocoaHttpServer/Web/js/index.js +++ b/YuMi/Tools/CocoaHttpServer/Web/js/index.js @@ -1,49 +1,49 @@ -$(function(){ - $('.uploadBtn').on('click',function(){ - $('#upload').click(); - }) - - $('#upload').fileupload({ - dropZone: $(document), - pasteZone: null, - autoUpload: true, - sequentialUploads: true, - - dataType: 'json', - url:'./upload.html', - type: 'POST', - add: function(e,data){ - console.log(data,'添加文件时执行的操作'); - var $li = '
  • '+data.files[0].name+'

  • '; - data.context = $($li).appendTo('#uploadingList'); - console.log(data.context); - var jqXHR = data.submit(); - - }, - progress: function (e, data) {//上传进度 - var progress = parseInt(data.loaded / data.total * 100, 10); - console.log(progress,data); - // $(".progress .bar").css("width", progress + "%"); - data.context.find(".bar").css("width", progress + "%"); - }, - done:function(e,data){ - console.log('上传完毕'); - }, - always: function(e, data) { - // 每次传输后(包括成功,失败,被拒执行的回调) - data.context.remove(); - var $li = $('
  • '); - $li.html('

    '+data.files[0].name+'

    '+formatFileSize(data.files[0].size)+'

    '); - $('#uploadingDone').append($li); - } - }) -}) -function formatFileSize(bytes) { - if (bytes >= 1000000000) { - return (bytes / 1000000000).toFixed(2) + ' GB'; - } - if (bytes >= 1000000) { - return (bytes / 1000000).toFixed(2) + ' MB'; - } - return (bytes / 1000).toFixed(2) + ' KB'; -}//loveyumi \ No newline at end of file +$(function(){ + $('.uploadBtn').on('click',function(){ + $('#upload').click(); + }) + + $('#upload').fileupload({ + dropZone: $(document), + pasteZone: null, + autoUpload: true, + sequentialUploads: true, + + dataType: 'json', + url:'./upload.html', + type: 'POST', + add: function(e,data){ + console.log(data,'添加文件时执行的操作'); + var $li = '
  • '+data.files[0].name+'

  • '; + data.context = $($li).appendTo('#uploadingList'); + console.log(data.context); + var jqXHR = data.submit(); + + }, + progress: function (e, data) {//上传进度 + var progress = parseInt(data.loaded / data.total * 100, 10); + console.log(progress,data); + // $(".progress .bar").css("width", progress + "%"); + data.context.find(".bar").css("width", progress + "%"); + }, + done:function(e,data){ + console.log('上传完毕'); + }, + always: function(e, data) { + // 每次传输后(包括成功,失败,被拒执行的回调) + data.context.remove(); + var $li = $('
  • '); + $li.html('

    '+data.files[0].name+'

    '+formatFileSize(data.files[0].size)+'

    '); + $('#uploadingDone').append($li); + } + }) +}) +function formatFileSize(bytes) { + if (bytes >= 1000000000) { + return (bytes / 1000000000).toFixed(2) + ' GB'; + } + if (bytes >= 1000000) { + return (bytes / 1000000).toFixed(2) + ' MB'; + } + return (bytes / 1000).toFixed(2) + ' KB'; +} \ No newline at end of file diff --git a/YuMi/Tools/CocoaHttpServer/Web/js/jquery-3.2.1.min.js b/YuMi/Tools/CocoaHttpServer/Web/js/jquery-3.2.1.min.js index 09ebdab8..764485c0 100755 --- a/YuMi/Tools/CocoaHttpServer/Web/js/jquery-3.2.1.min.js +++ b/YuMi/Tools/CocoaHttpServer/Web/js/jquery-3.2.1.min.js @@ -1,5 +1,4 @@ -/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S), -a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners["*"]),f=0,g=e.length;f1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b), -null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\/\//,Ib={},Jb={},Kb="*/".concat("*"),Lb=d.createElement("a");Lb.href=tb.href;function Mb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(L)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+"//"+Lb.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Bb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,"$1"),n=(vb.test(f)?"&":"?")+"_="+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Kb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&"withCredentials"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r("